From 74d6353019701d068f918ecc2b3d9b8bcf09d814 Mon Sep 17 00:00:00 2001 From: Kirigaya <1193466151@qq.com> Date: Fri, 3 Feb 2023 04:38:19 +0800 Subject: [PATCH 01/54] finish hdlparam | finish PS PL | finish data structure in parser --- .gitignore | 1 + config/arm.configuration.json | 18 + config/link.configuration.json | 24 + config/systemverilog.configuration.json | 31 + config/tcl.configuration.json | 29 + config/verilog.configuration.json | 23 + config/vhdl.configuration.json | 26 + draft.json | 226 + images/DIDE.png | Bin 0 -> 82676 bytes images/FPGAs.png | Bin 0 -> 4092 bytes images/svg/DIDE.svg | 1 + images/svg/README.md | 3 + images/svg/dark/File Error.backup.svg | 1 + images/svg/dark/File Error.svg | 1 + images/svg/dark/LOAD.svg | 1 + images/svg/dark/Link.svg | 1 + images/svg/dark/SerialPort.svg | 1 + images/svg/dark/add-cloud.svg | 1 + images/svg/dark/add-file.svg | 1 + images/svg/dark/add.svg | 1 + images/svg/dark/bin.svg | 1 + images/svg/dark/bit.svg | 1 + images/svg/dark/boot.svg | 1 + images/svg/dark/branch.svg | 1 + images/svg/dark/celllib.svg | 1 + images/svg/dark/cells.svg | 1 + images/svg/dark/clean.svg | 1 + images/svg/dark/cmd.svg | 1 + images/svg/dark/current-sim-top.svg | 1 + images/svg/dark/current-src-top.svg | 1 + images/svg/dark/currentSimTop.svg | 1 + images/svg/dark/currentSrcTop.svg | 1 + images/svg/dark/debug.svg | 5 + images/svg/dark/delete.svg | 1 + images/svg/dark/documentation.svg | 1 + images/svg/dark/file.svg | 1 + images/svg/dark/fsm.svg | 1 + images/svg/dark/hide.svg | 1 + images/svg/dark/import.svg | 1 + images/svg/dark/library.backup.svg | 1 + images/svg/dark/library.svg | 1 + images/svg/dark/list-tree.svg | 1 + images/svg/dark/netlist.svg | 1 + images/svg/dark/refresh.svg | 1 + images/svg/dark/remote.svg | 1 + images/svg/dark/run.svg | 3 + images/svg/dark/show.svg | 1 + images/svg/dark/sim.svg | 1 + images/svg/dark/src.svg | 1 + images/svg/dark/systemverilog.svg | 1 + images/svg/dark/tcl.svg | 3 + images/svg/dark/toolBox.svg | 1 + images/svg/dark/top.svg | 1 + images/svg/dark/translate.svg | 1 + images/svg/dark/verilog.backup.svg | 1 + images/svg/dark/verilog.svg | 1 + images/svg/dark/vhdl.backup.svg | 1 + images/svg/dark/vhdl.svg | 1 + images/svg/light/File Error.backup.svg | 1 + images/svg/light/File Error.svg | 1 + images/svg/light/SerialPort.svg | 1 + images/svg/light/add-cloud.svg | 1 + images/svg/light/add-file.svg | 1 + images/svg/light/add.svg | 5 + images/svg/light/bin.svg | 1 + images/svg/light/bit.svg | 1 + images/svg/light/boot.svg | 1 + images/svg/light/branch.svg | 1 + images/svg/light/celllib.svg | 1 + images/svg/light/cells.svg | 1 + images/svg/light/chip.svg | 1 + images/svg/light/clean.svg | 1 + images/svg/light/cmd.svg | 1 + images/svg/light/current top.svg | 1 + images/svg/light/current-sim-top.svg | 1 + images/svg/light/current-src-top.svg | 1 + images/svg/light/currentSimTop.svg | 1 + images/svg/light/currentSrcTop.svg | 1 + images/svg/light/debug.svg | 12 + images/svg/light/delete.svg | 1 + images/svg/light/documentation.svg | 1 + images/svg/light/file.svg | 1 + images/svg/light/fsm.svg | 1 + images/svg/light/hide.svg | 1 + images/svg/light/import.svg | 1 + images/svg/light/library.backup.svg | 1 + images/svg/light/library.svg | 1 + images/svg/light/list-tree.svg | 1 + images/svg/light/load.svg | 1 + images/svg/light/netlist.svg | 1 + images/svg/light/refresh.svg | 1 + images/svg/light/remote.svg | 1 + images/svg/light/run.svg | 3 + images/svg/light/show.svg | 1 + images/svg/light/sim.svg | 1 + images/svg/light/src.svg | 1 + images/svg/light/tcl.svg | 3 + images/svg/light/toolBox.svg | 1 + images/svg/light/top.svg | 1 + images/svg/light/translate.svg | 1 + images/svg/light/verilog.backup.svg | 1 + images/svg/light/verilog.svg | 1 + images/svg/light/vhdl.backup.svg | 1 + images/svg/light/vhdl.svg | 1 + images/system.drawio | 63 + images/toolchain-flow.svg | 1 + lib/bd/xilinx/MicroBlaze_default.bd | 519 + lib/bd/xilinx/PCIe_Test.bd | 2261 + lib/bd/xilinx/m3_xIP_default.bd | 2235 + lib/bd/xilinx/zynq_default.bd | 832 + lib/common/Apply/DSP/Advance/AGC/AGC.PNG | Bin 0 -> 145365 bytes lib/common/Apply/DSP/Advance/AGC/AGC.v | 33 + .../Communicate/Demodulate/IQ/Demodulate.v | 72 + .../Communicate/Demodulate/IQ/IQ_Mixed.v | 92 + .../Communicate/Demodulate/IQ/Loop_filter.v | 32 + .../Advance/Communicate/Encode/manchester.v | 17 + .../DSP/Advance/Communicate/Encode/mseq.v | 25 + .../Communicate/Modulate/AM/AM_Modulate.v | 383 + .../Communicate/Modulate/FM/FM_Modulate.v | 370 + .../DSP/Advance/FFT/Flow_FFT_IFFT/BF_op.v | 20 + .../DSP/Advance/FFT/Flow_FFT_IFFT/BF_stg1.v | 104 + .../DSP/Advance/FFT/Flow_FFT_IFFT/BF_stgX.v | 110 + .../DSP/Advance/FFT/Flow_FFT_IFFT/cmpl_mult.v | 27 + .../Apply/DSP/Advance/FFT/Flow_FFT_IFFT/fft.v | 83 + .../DSP/Advance/FFT/Flow_FFT_IFFT/fft_stage.v | 175 + .../DSP/Advance/FFT/Flow_FFT_IFFT/ftrans.v | 154 + .../DSP/Advance/FFT/Flow_FFT_IFFT/ftwiddle.v | 1142 + .../DSP/Advance/FFT/Flow_FFT_IFFT/testbench.v | 81 + .../DSP/Advance/Filter/CIC/CIC_DOWN_S2.v | 212 + .../DSP/Advance/Filter/CIC/CIC_DOWN_S3.v | 267 + .../DSP/Advance/Filter/CIC/CIC_DOWN_S4.v | 204 + .../DSP/Advance/PLL/Code/adfmreceiver.pdf | Bin 0 -> 774506 bytes .../Apply/DSP/Advance/PLL/Code/circuit.v | 43 + lib/common/Apply/DSP/Advance/PLL/Code/fir.v | 72 + .../Apply/DSP/Advance/PLL/Code/loop_filter.v | 29 + .../Apply/DSP/Advance/PLL/Code/multiplier.v | 148 + .../DSP/Advance/PLL/Image/architecture.png | Bin 0 -> 14289 bytes .../Apply/DSP/Advance/PLL/Image/fmsquare.jpg | Bin 0 -> 45618 bytes .../DSP/Advance/PLL/Image/fmtriangular.jpg | Bin 0 -> 47654 bytes lib/common/Apply/DSP/Base/CLK/CLK_DIV.v | 90 + lib/common/Apply/DSP/Base/CLK/CLK_Sample.v | 19 + lib/common/Apply/DSP/Base/DDS/DDS_Gen.v | 327 + lib/common/Apply/DSP/Base/Measure/Fre_meas.v | 96 + lib/common/Apply/DSP/Base/Measure/Max_meas.v | 101 + lib/common/Apply/DSP/Base/Measure/Min_meas.v | 101 + .../Apply/DSP/Base/Measure/Valid_Meas.v | 76 + .../Apply/Image/Advance_Apply/Image_XYCrop.v | 69 + .../Advance_Apply/Parallel_Line_Detector.v | 113 + .../Apply/Image/Basic_Apply/Dat/RAW8_RGB888.v | 162 + .../Image/Basic_Apply/Dat/RGB888_YCbCr444.v | 118 + .../Basic_Apply/Detector/Dilation_Detector.v | 103 + .../Basic_Apply/Detector/Erosion_Detector.v | 105 + .../Detector/Sobel_Edge_Detector.v | 155 + .../Basic_Apply/Filter/Gray_Median_Filter.v | 92 + .../Basic_Apply/Filter/Median_Filter_3X3.v | 118 + .../Basic_Apply/Matrix/Matrix_Generate_3X3.v | 115 + .../Matrix/Matrix_Generate_3X3_Buf.v | 148 + .../Image/Basic_Apply/Video_Image_Processor.v | 228 + lib/common/Driver/ADC_driver/AD6645/AD6645.v | 17 + .../ADC_driver/ADS412x_driver/ADC_CFG.vhd | 195 + .../ADS412x_driver/ADS412x_driver.v | 51 + .../ADC_driver/ADS412x_driver/CFG_INT.vhd | 250 + .../ADC_driver/ADS9226_driver/AD9226_driver.v | 37 + .../DAC3162_driver/DAC3162_driver.v | 65 + .../DAC_driver/DAC3162_driver/LVDS_DDR_clk.v | 108 + .../DAC_driver/DAC3162_driver/LVDS_DDR_data.v | 106 + .../Driver/DAC_driver/DAC9767_driver/DA9767.v | 62 + .../Driver/DAC_driver/DAC_PWM/DAC_PWM.v | 35 + lib/common/Driver/DDS_driver/ADF_driver.v | 124 + lib/common/Driver/HDMI_driver/HDMI_in.v | 11 + lib/common/Driver/HDMI_driver/HDMI_out.v | 11 + lib/common/Driver/KEY_driver/key_driver.v | 80 + lib/common/Driver/Motor_driver/Motor_driver.v | 112 + .../Driver/SDRAM_driver/core/sdrc_bank_ctl.v | 571 + .../Driver/SDRAM_driver/core/sdrc_bank_fsm.v | 371 + .../SDRAM_driver/core/sdrc_bs_convert.v | 228 + .../Driver/SDRAM_driver/core/sdrc_core.v | 477 + .../Driver/SDRAM_driver/core/sdrc_define.v | 31 + .../Driver/SDRAM_driver/core/sdrc_req_gen.v | 340 + .../Driver/SDRAM_driver/core/sdrc_xfr_ctl.v | 772 + .../Driver/SDRAM_driver/model/IS42VM16400K.V | 1728 + .../Driver/SDRAM_driver/model/mt48lc2m32b2.v | 1096 + .../Driver/SDRAM_driver/model/mt48lc4m16.v | 1624 + .../Driver/SDRAM_driver/model/mt48lc4m32b2.v | 1976 + .../Driver/SDRAM_driver/model/mt48lc8m16a2.v | 963 + .../Driver/SDRAM_driver/model/mt48lc8m8a2.v | 964 + .../synth/constraints/sdrc_synth.sdc | 107 + .../synth/constraints/sdrc_top.sdc | 187 + lib/common/Driver/SDRAM_driver/tb/tb_core.sv | 535 + lib/common/Driver/SDRAM_driver/tb/tb_top.sv | 500 + lib/common/Driver/SDRAM_driver/top/sdrc_top.v | 297 + .../Driver/SDRAM_driver/wb2sdrc/wb2sdrc.v | 371 + lib/common/Driver/UART_driver/UART_rx.v | 78 + lib/common/Driver/UART_driver/UART_tx.v | 74 + .../Driver/UART_driver/uart_rx_control.v | 61 + .../Driver/UART_driver/uart_tx_control.v | 110 + lib/common/Malloc/FIFO/async_fifo.v | 277 + lib/common/Malloc/FIFO/sync_fifo.v | 101 + .../Malloc/RAM/Shift_RAM/Line_Shift_RAM.v | 33 + .../Malloc/RAM/Shift_RAM/RAMshift_taps.v | 46 + lib/common/Math/Cordic.v | 258 + lib/common/Math/Sort3.v | 45 + lib/common/Math/phase_acc.v | 63 + lib/common/Soc/AXI4/AXI_lite.v | 299 + lib/common/Soc/Cortex_M0/cortexm0ds_logic.v | 20279 ++++ lib/common/Soc/Cortex_M3/cortexm3ds_logic.v | 94613 ++++++++++++++++ lib/testbench.v | 41 + package.json | 15 +- project/property-init.json | 11 + {validation => project}/property-schema.json | 32 +- snippets/svlog.json | 4 +- src/extension.ts | 17 +- src/global/enum.ts | 67 + src/global/index.ts | 19 + src/global/lang.ts | 12 + src/global/opeParam.ts | 135 + src/global/outputChannel.ts | 42 + src/global/prjInfo.ts | 359 + src/global/propertySchema.ts | 92 + src/hdlFs/dir.ts | 130 + src/hdlFs/file.ts | 369 + src/hdlFs/icons.ts | 26 + src/hdlFs/index.ts | 11 + src/hdlFs/path.ts | 87 + src/hdlFs/vrfs.ts | 0 src/hdlParser/base/common.ts | 127 + src/hdlParser/base/core.ts | 526 + src/hdlParser/parser/.gitignore | 2 + src/manager/PL/xilinx.ts | 830 + src/manager/PS/xilinx.ts | 155 + src/manager/index.ts | 5 + src/manager/lib.ts | 0 src/manager/prj.ts | 88 + src/test/vhdl/Scientific.vhd | 15 + src/test/vhdl/based.vhd | 16 + src/test/vhdl/bigfile.vhd | 467 + src/test/vhdl/clk.vhd | 36 + src/test/vhdl/counters.vhd | 344 + src/test/vhdl/dsp.vhd | 41 + src/test/vhdl/expr.vhd | 46 + src/test/vhdl/fifo.vhd | 202 + src/test/vhdl/forgen.vhd | 52 + src/test/vhdl/forloop.vhd | 37 + src/test/vhdl/formatter_vhdl.vhd | 0 src/test/vhdl/genericmap.vhd | 105 + src/test/vhdl/ifchain.vhd | 26 + src/test/vhdl/ifchain2.vhd | 36 + src/test/vhdl/mem.vhd | 36 + src/test/vhdl/operators.vhd | 85 + src/test/vhdl/partselect.vhd | 32 + src/test/vhdl/signextend.vhd | 17 + src/test/vhdl/test.vhd | 191 + src/test/vhdl/todo.vhd | 74 + src/test/vhdl/wbit1.vhd | 21 + src/test/vhdl/whileloop.vhd | 27 + src/test/vhdl/withselect.vhd | 34 + src/test/vlog/dependence_test/child_1.v | 15 + src/test/vlog/dependence_test/child_2.v | 8 + src/test/vlog/dependence_test/head_1.v | 23 + src/test/vlog/dependence_test/parent.v | 65 + src/test/vlog/dependence_test/readme_cn.md | 10 + src/test/vlog/formatter_test.v | 11 + src/test/vlog/fsm_test.v | 58 + src/test/vlog/netlist_test.v | 33 + src/test/vlog/parse_test/Cordic.v | 258 + src/test/vlog/parse_test/instance_test.v | 10 + src/test/vlog/parse_test/mult_module.v | 78 + src/test/vlog/test.v | 29 + src/test/vlog/wavedrom_test/sample.v | 35 + test.js | 59 + vsixmake.js | 6 +- 271 files changed, 149190 insertions(+), 32 deletions(-) create mode 100644 config/arm.configuration.json create mode 100644 config/link.configuration.json create mode 100644 config/systemverilog.configuration.json create mode 100644 config/tcl.configuration.json create mode 100644 config/verilog.configuration.json create mode 100644 config/vhdl.configuration.json create mode 100644 draft.json create mode 100644 images/DIDE.png create mode 100644 images/FPGAs.png create mode 100644 images/svg/DIDE.svg create mode 100644 images/svg/README.md create mode 100644 images/svg/dark/File Error.backup.svg create mode 100644 images/svg/dark/File Error.svg create mode 100644 images/svg/dark/LOAD.svg create mode 100644 images/svg/dark/Link.svg create mode 100644 images/svg/dark/SerialPort.svg create mode 100644 images/svg/dark/add-cloud.svg create mode 100644 images/svg/dark/add-file.svg create mode 100644 images/svg/dark/add.svg create mode 100644 images/svg/dark/bin.svg create mode 100644 images/svg/dark/bit.svg create mode 100644 images/svg/dark/boot.svg create mode 100644 images/svg/dark/branch.svg create mode 100644 images/svg/dark/celllib.svg create mode 100644 images/svg/dark/cells.svg create mode 100644 images/svg/dark/clean.svg create mode 100644 images/svg/dark/cmd.svg create mode 100644 images/svg/dark/current-sim-top.svg create mode 100644 images/svg/dark/current-src-top.svg create mode 100644 images/svg/dark/currentSimTop.svg create mode 100644 images/svg/dark/currentSrcTop.svg create mode 100644 images/svg/dark/debug.svg create mode 100644 images/svg/dark/delete.svg create mode 100644 images/svg/dark/documentation.svg create mode 100644 images/svg/dark/file.svg create mode 100644 images/svg/dark/fsm.svg create mode 100644 images/svg/dark/hide.svg create mode 100644 images/svg/dark/import.svg create mode 100644 images/svg/dark/library.backup.svg create mode 100644 images/svg/dark/library.svg create mode 100644 images/svg/dark/list-tree.svg create mode 100644 images/svg/dark/netlist.svg create mode 100644 images/svg/dark/refresh.svg create mode 100644 images/svg/dark/remote.svg create mode 100644 images/svg/dark/run.svg create mode 100644 images/svg/dark/show.svg create mode 100644 images/svg/dark/sim.svg create mode 100644 images/svg/dark/src.svg create mode 100644 images/svg/dark/systemverilog.svg create mode 100644 images/svg/dark/tcl.svg create mode 100644 images/svg/dark/toolBox.svg create mode 100644 images/svg/dark/top.svg create mode 100644 images/svg/dark/translate.svg create mode 100644 images/svg/dark/verilog.backup.svg create mode 100644 images/svg/dark/verilog.svg create mode 100644 images/svg/dark/vhdl.backup.svg create mode 100644 images/svg/dark/vhdl.svg create mode 100644 images/svg/light/File Error.backup.svg create mode 100644 images/svg/light/File Error.svg create mode 100644 images/svg/light/SerialPort.svg create mode 100644 images/svg/light/add-cloud.svg create mode 100644 images/svg/light/add-file.svg create mode 100644 images/svg/light/add.svg create mode 100644 images/svg/light/bin.svg create mode 100644 images/svg/light/bit.svg create mode 100644 images/svg/light/boot.svg create mode 100644 images/svg/light/branch.svg create mode 100644 images/svg/light/celllib.svg create mode 100644 images/svg/light/cells.svg create mode 100644 images/svg/light/chip.svg create mode 100644 images/svg/light/clean.svg create mode 100644 images/svg/light/cmd.svg create mode 100644 images/svg/light/current top.svg create mode 100644 images/svg/light/current-sim-top.svg create mode 100644 images/svg/light/current-src-top.svg create mode 100644 images/svg/light/currentSimTop.svg create mode 100644 images/svg/light/currentSrcTop.svg create mode 100644 images/svg/light/debug.svg create mode 100644 images/svg/light/delete.svg create mode 100644 images/svg/light/documentation.svg create mode 100644 images/svg/light/file.svg create mode 100644 images/svg/light/fsm.svg create mode 100644 images/svg/light/hide.svg create mode 100644 images/svg/light/import.svg create mode 100644 images/svg/light/library.backup.svg create mode 100644 images/svg/light/library.svg create mode 100644 images/svg/light/list-tree.svg create mode 100644 images/svg/light/load.svg create mode 100644 images/svg/light/netlist.svg create mode 100644 images/svg/light/refresh.svg create mode 100644 images/svg/light/remote.svg create mode 100644 images/svg/light/run.svg create mode 100644 images/svg/light/show.svg create mode 100644 images/svg/light/sim.svg create mode 100644 images/svg/light/src.svg create mode 100644 images/svg/light/tcl.svg create mode 100644 images/svg/light/toolBox.svg create mode 100644 images/svg/light/top.svg create mode 100644 images/svg/light/translate.svg create mode 100644 images/svg/light/verilog.backup.svg create mode 100644 images/svg/light/verilog.svg create mode 100644 images/svg/light/vhdl.backup.svg create mode 100644 images/svg/light/vhdl.svg create mode 100644 images/system.drawio create mode 100644 images/toolchain-flow.svg create mode 100644 lib/bd/xilinx/MicroBlaze_default.bd create mode 100644 lib/bd/xilinx/PCIe_Test.bd create mode 100644 lib/bd/xilinx/m3_xIP_default.bd create mode 100644 lib/bd/xilinx/zynq_default.bd create mode 100644 lib/common/Apply/DSP/Advance/AGC/AGC.PNG create mode 100644 lib/common/Apply/DSP/Advance/AGC/AGC.v create mode 100644 lib/common/Apply/DSP/Advance/Communicate/Demodulate/IQ/Demodulate.v create mode 100644 lib/common/Apply/DSP/Advance/Communicate/Demodulate/IQ/IQ_Mixed.v create mode 100644 lib/common/Apply/DSP/Advance/Communicate/Demodulate/IQ/Loop_filter.v create mode 100644 lib/common/Apply/DSP/Advance/Communicate/Encode/manchester.v create mode 100644 lib/common/Apply/DSP/Advance/Communicate/Encode/mseq.v create mode 100644 lib/common/Apply/DSP/Advance/Communicate/Modulate/AM/AM_Modulate.v create mode 100644 lib/common/Apply/DSP/Advance/Communicate/Modulate/FM/FM_Modulate.v create mode 100644 lib/common/Apply/DSP/Advance/FFT/Flow_FFT_IFFT/BF_op.v create mode 100644 lib/common/Apply/DSP/Advance/FFT/Flow_FFT_IFFT/BF_stg1.v create mode 100644 lib/common/Apply/DSP/Advance/FFT/Flow_FFT_IFFT/BF_stgX.v create mode 100644 lib/common/Apply/DSP/Advance/FFT/Flow_FFT_IFFT/cmpl_mult.v create mode 100644 lib/common/Apply/DSP/Advance/FFT/Flow_FFT_IFFT/fft.v create mode 100644 lib/common/Apply/DSP/Advance/FFT/Flow_FFT_IFFT/fft_stage.v create mode 100644 lib/common/Apply/DSP/Advance/FFT/Flow_FFT_IFFT/ftrans.v create mode 100644 lib/common/Apply/DSP/Advance/FFT/Flow_FFT_IFFT/ftwiddle.v create mode 100644 lib/common/Apply/DSP/Advance/FFT/Flow_FFT_IFFT/testbench.v create mode 100644 lib/common/Apply/DSP/Advance/Filter/CIC/CIC_DOWN_S2.v create mode 100644 lib/common/Apply/DSP/Advance/Filter/CIC/CIC_DOWN_S3.v create mode 100644 lib/common/Apply/DSP/Advance/Filter/CIC/CIC_DOWN_S4.v create mode 100644 lib/common/Apply/DSP/Advance/PLL/Code/adfmreceiver.pdf create mode 100644 lib/common/Apply/DSP/Advance/PLL/Code/circuit.v create mode 100644 lib/common/Apply/DSP/Advance/PLL/Code/fir.v create mode 100644 lib/common/Apply/DSP/Advance/PLL/Code/loop_filter.v create mode 100644 lib/common/Apply/DSP/Advance/PLL/Code/multiplier.v create mode 100644 lib/common/Apply/DSP/Advance/PLL/Image/architecture.png create mode 100644 lib/common/Apply/DSP/Advance/PLL/Image/fmsquare.jpg create mode 100644 lib/common/Apply/DSP/Advance/PLL/Image/fmtriangular.jpg create mode 100644 lib/common/Apply/DSP/Base/CLK/CLK_DIV.v create mode 100644 lib/common/Apply/DSP/Base/CLK/CLK_Sample.v create mode 100644 lib/common/Apply/DSP/Base/DDS/DDS_Gen.v create mode 100644 lib/common/Apply/DSP/Base/Measure/Fre_meas.v create mode 100644 lib/common/Apply/DSP/Base/Measure/Max_meas.v create mode 100644 lib/common/Apply/DSP/Base/Measure/Min_meas.v create mode 100644 lib/common/Apply/DSP/Base/Measure/Valid_Meas.v create mode 100644 lib/common/Apply/Image/Advance_Apply/Image_XYCrop.v create mode 100644 lib/common/Apply/Image/Advance_Apply/Parallel_Line_Detector.v create mode 100644 lib/common/Apply/Image/Basic_Apply/Dat/RAW8_RGB888.v create mode 100644 lib/common/Apply/Image/Basic_Apply/Dat/RGB888_YCbCr444.v create mode 100644 lib/common/Apply/Image/Basic_Apply/Detector/Dilation_Detector.v create mode 100644 lib/common/Apply/Image/Basic_Apply/Detector/Erosion_Detector.v create mode 100644 lib/common/Apply/Image/Basic_Apply/Detector/Sobel_Edge_Detector.v create mode 100644 lib/common/Apply/Image/Basic_Apply/Filter/Gray_Median_Filter.v create mode 100644 lib/common/Apply/Image/Basic_Apply/Filter/Median_Filter_3X3.v create mode 100644 lib/common/Apply/Image/Basic_Apply/Matrix/Matrix_Generate_3X3.v create mode 100644 lib/common/Apply/Image/Basic_Apply/Matrix/Matrix_Generate_3X3_Buf.v create mode 100644 lib/common/Apply/Image/Basic_Apply/Video_Image_Processor.v create mode 100644 lib/common/Driver/ADC_driver/AD6645/AD6645.v create mode 100644 lib/common/Driver/ADC_driver/ADS412x_driver/ADC_CFG.vhd create mode 100644 lib/common/Driver/ADC_driver/ADS412x_driver/ADS412x_driver.v create mode 100644 lib/common/Driver/ADC_driver/ADS412x_driver/CFG_INT.vhd create mode 100644 lib/common/Driver/ADC_driver/ADS9226_driver/AD9226_driver.v create mode 100644 lib/common/Driver/DAC_driver/DAC3162_driver/DAC3162_driver.v create mode 100644 lib/common/Driver/DAC_driver/DAC3162_driver/LVDS_DDR_clk.v create mode 100644 lib/common/Driver/DAC_driver/DAC3162_driver/LVDS_DDR_data.v create mode 100644 lib/common/Driver/DAC_driver/DAC9767_driver/DA9767.v create mode 100644 lib/common/Driver/DAC_driver/DAC_PWM/DAC_PWM.v create mode 100644 lib/common/Driver/DDS_driver/ADF_driver.v create mode 100644 lib/common/Driver/HDMI_driver/HDMI_in.v create mode 100644 lib/common/Driver/HDMI_driver/HDMI_out.v create mode 100644 lib/common/Driver/KEY_driver/key_driver.v create mode 100644 lib/common/Driver/Motor_driver/Motor_driver.v create mode 100644 lib/common/Driver/SDRAM_driver/core/sdrc_bank_ctl.v create mode 100644 lib/common/Driver/SDRAM_driver/core/sdrc_bank_fsm.v create mode 100644 lib/common/Driver/SDRAM_driver/core/sdrc_bs_convert.v create mode 100644 lib/common/Driver/SDRAM_driver/core/sdrc_core.v create mode 100644 lib/common/Driver/SDRAM_driver/core/sdrc_define.v create mode 100644 lib/common/Driver/SDRAM_driver/core/sdrc_req_gen.v create mode 100644 lib/common/Driver/SDRAM_driver/core/sdrc_xfr_ctl.v create mode 100644 lib/common/Driver/SDRAM_driver/model/IS42VM16400K.V create mode 100644 lib/common/Driver/SDRAM_driver/model/mt48lc2m32b2.v create mode 100644 lib/common/Driver/SDRAM_driver/model/mt48lc4m16.v create mode 100644 lib/common/Driver/SDRAM_driver/model/mt48lc4m32b2.v create mode 100644 lib/common/Driver/SDRAM_driver/model/mt48lc8m16a2.v create mode 100644 lib/common/Driver/SDRAM_driver/model/mt48lc8m8a2.v create mode 100644 lib/common/Driver/SDRAM_driver/synth/constraints/sdrc_synth.sdc create mode 100644 lib/common/Driver/SDRAM_driver/synth/constraints/sdrc_top.sdc create mode 100644 lib/common/Driver/SDRAM_driver/tb/tb_core.sv create mode 100644 lib/common/Driver/SDRAM_driver/tb/tb_top.sv create mode 100644 lib/common/Driver/SDRAM_driver/top/sdrc_top.v create mode 100644 lib/common/Driver/SDRAM_driver/wb2sdrc/wb2sdrc.v create mode 100644 lib/common/Driver/UART_driver/UART_rx.v create mode 100644 lib/common/Driver/UART_driver/UART_tx.v create mode 100644 lib/common/Driver/UART_driver/uart_rx_control.v create mode 100644 lib/common/Driver/UART_driver/uart_tx_control.v create mode 100644 lib/common/Malloc/FIFO/async_fifo.v create mode 100644 lib/common/Malloc/FIFO/sync_fifo.v create mode 100644 lib/common/Malloc/RAM/Shift_RAM/Line_Shift_RAM.v create mode 100644 lib/common/Malloc/RAM/Shift_RAM/RAMshift_taps.v create mode 100644 lib/common/Math/Cordic.v create mode 100644 lib/common/Math/Sort3.v create mode 100644 lib/common/Math/phase_acc.v create mode 100644 lib/common/Soc/AXI4/AXI_lite.v create mode 100644 lib/common/Soc/Cortex_M0/cortexm0ds_logic.v create mode 100644 lib/common/Soc/Cortex_M3/cortexm3ds_logic.v create mode 100644 lib/testbench.v create mode 100644 project/property-init.json rename {validation => project}/property-schema.json (92%) create mode 100644 src/global/enum.ts create mode 100644 src/global/index.ts create mode 100644 src/global/lang.ts create mode 100644 src/global/opeParam.ts create mode 100644 src/global/outputChannel.ts create mode 100644 src/global/prjInfo.ts create mode 100644 src/global/propertySchema.ts create mode 100644 src/hdlFs/dir.ts create mode 100644 src/hdlFs/file.ts create mode 100644 src/hdlFs/icons.ts create mode 100644 src/hdlFs/index.ts create mode 100644 src/hdlFs/path.ts create mode 100644 src/hdlFs/vrfs.ts create mode 100644 src/hdlParser/base/common.ts create mode 100644 src/hdlParser/base/core.ts create mode 100644 src/hdlParser/parser/.gitignore create mode 100644 src/manager/PL/xilinx.ts create mode 100644 src/manager/PS/xilinx.ts create mode 100644 src/manager/index.ts create mode 100644 src/manager/lib.ts create mode 100644 src/manager/prj.ts create mode 100644 src/test/vhdl/Scientific.vhd create mode 100644 src/test/vhdl/based.vhd create mode 100644 src/test/vhdl/bigfile.vhd create mode 100644 src/test/vhdl/clk.vhd create mode 100644 src/test/vhdl/counters.vhd create mode 100644 src/test/vhdl/dsp.vhd create mode 100644 src/test/vhdl/expr.vhd create mode 100644 src/test/vhdl/fifo.vhd create mode 100644 src/test/vhdl/forgen.vhd create mode 100644 src/test/vhdl/forloop.vhd create mode 100644 src/test/vhdl/formatter_vhdl.vhd create mode 100644 src/test/vhdl/genericmap.vhd create mode 100644 src/test/vhdl/ifchain.vhd create mode 100644 src/test/vhdl/ifchain2.vhd create mode 100644 src/test/vhdl/mem.vhd create mode 100644 src/test/vhdl/operators.vhd create mode 100644 src/test/vhdl/partselect.vhd create mode 100644 src/test/vhdl/signextend.vhd create mode 100644 src/test/vhdl/test.vhd create mode 100644 src/test/vhdl/todo.vhd create mode 100644 src/test/vhdl/wbit1.vhd create mode 100644 src/test/vhdl/whileloop.vhd create mode 100644 src/test/vhdl/withselect.vhd create mode 100644 src/test/vlog/dependence_test/child_1.v create mode 100644 src/test/vlog/dependence_test/child_2.v create mode 100644 src/test/vlog/dependence_test/head_1.v create mode 100644 src/test/vlog/dependence_test/parent.v create mode 100644 src/test/vlog/dependence_test/readme_cn.md create mode 100644 src/test/vlog/formatter_test.v create mode 100644 src/test/vlog/fsm_test.v create mode 100644 src/test/vlog/netlist_test.v create mode 100644 src/test/vlog/parse_test/Cordic.v create mode 100644 src/test/vlog/parse_test/instance_test.v create mode 100644 src/test/vlog/parse_test/mult_module.v create mode 100644 src/test/vlog/test.v create mode 100644 src/test/vlog/wavedrom_test/sample.v create mode 100644 test.js diff --git a/.gitignore b/.gitignore index 0b60dfa..f58baa0 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,4 @@ dist node_modules .vscode-test/ *.vsix +parser_stuck.v \ No newline at end of file diff --git a/config/arm.configuration.json b/config/arm.configuration.json new file mode 100644 index 0000000..17f1fa9 --- /dev/null +++ b/config/arm.configuration.json @@ -0,0 +1,18 @@ +{ + "comments": { + "lineComment": "@", + "blockComment": [ "/*", "*/" ] + }, + "brackets": [ + ["{", "}"], + ["[", "]"], + ["(", ")"] + ], + "autoClosingPairs": [ + { "open": "(", "close": ")" }, + { "open": "[", "close": "]" }, + { "open": "'", "close": "'", "notIn": ["string"] }, + { "open": "\"", "close": "\"", "notIn": ["string"] }, + { "open": "/*", "close": " */", "notIn": ["string"] } + ] +} \ No newline at end of file diff --git a/config/link.configuration.json b/config/link.configuration.json new file mode 100644 index 0000000..b3c2984 --- /dev/null +++ b/config/link.configuration.json @@ -0,0 +1,24 @@ +{ + "comments": { + "blockComment": [ "/*", "*/" ] + }, + "brackets": [ + ["{", "}"], + ["[", "]"], + ["(", ")"] + ], + "autoClosingPairs": [ + ["{", "}"], + ["[", "]"], + ["(", ")"], + ["\"", "\""], + ["'", "'"] + ], + "surroundingPairs": [ + ["{", "}"], + ["[", "]"], + ["(", ")"], + ["\"", "\""], + ["'", "'"] + ] +} \ No newline at end of file diff --git a/config/systemverilog.configuration.json b/config/systemverilog.configuration.json new file mode 100644 index 0000000..5645c86 --- /dev/null +++ b/config/systemverilog.configuration.json @@ -0,0 +1,31 @@ +{ + "comments": { + "lineComment": "//", + "blockComment": [ "/*", "*/" ] + }, + "brackets": [ + ["{", "}"], + ["[", "]"], + ["(", ")"], + ["begin", "end"], + ["case", "endcase"], + ["class", "endclass"], + ["clocking", "endclocking"], + ["function", "endfunction"], + ["group", "endgroup"], + ["interface", "endinterface"], + ["module", "endmodule"], + ["package", "endpackage"], + ["primitive", "endprimitive"], + ["program", "endprogram"], + ["property", "endproperty"], + ["sequence", "endsequence"], + ["task", "endtask"] + ], + "autoClosingPairs": [ + {"open":"(", "close":")", "notIn":["string", "comment"]}, + {"open":"[", "close":"]", "notIn":["string", "comment"]}, + {"open":"{", "close":"}", "notIn":["string", "comment"]}, + {"open":"\"", "close":"\"", "notIn":["string", "comment"]} + ] +} \ No newline at end of file diff --git a/config/tcl.configuration.json b/config/tcl.configuration.json new file mode 100644 index 0000000..f831368 --- /dev/null +++ b/config/tcl.configuration.json @@ -0,0 +1,29 @@ +{ + "comments": { + "lineComment": "#" + }, + "brackets": [ + ["{", "}"], + ["[", "]"], + ["(", ")"] + ], + "autoClosingPairs": [ + ["{", "}"], + ["[", "]"], + ["(", ")"], + ["\"", "\""] + ], + "surroundingPairs": [ + ["{", "}"], + ["[", "]"], + ["(", ")"], + ["\"", "\""] + ], + "folding": { + "markers": { + "start": "{", + "end": "}" + } + }, + "wordPattern": "(?:(?:[^\\s\\{\\$\\\"]+|(?:\\$(?:\\w+|\\{[^\\}]+\\})))+)" +} diff --git a/config/verilog.configuration.json b/config/verilog.configuration.json new file mode 100644 index 0000000..96f1c94 --- /dev/null +++ b/config/verilog.configuration.json @@ -0,0 +1,23 @@ +{ + "comments": { + "lineComment": "//", + "blockComment": [ "/*", "*/" ] + }, + "brackets": [ + ["{", "}"], + ["[", "]"], + ["(", ")"], + ["begin", "end"], + ["case", "endcase"], + ["function", "endfunction"], + ["module", "endmodule"], + ["task", "endtask"] + ], + + "autoClosingPairs": [ + {"open":"(", "close":")", "notIn":["string", "comment"]}, + {"open":"[", "close":"]", "notIn":["string", "comment"]}, + {"open":"{", "close":"}", "notIn":["string", "comment"]}, + {"open":"\"", "close":"\"", "notIn":["string", "comment"]} + ] +} \ No newline at end of file diff --git a/config/vhdl.configuration.json b/config/vhdl.configuration.json new file mode 100644 index 0000000..ef4af8d --- /dev/null +++ b/config/vhdl.configuration.json @@ -0,0 +1,26 @@ +{ + "comments": { + "lineComment": "--", + "blockComment": [ "/*", "*/" ] + }, + "brackets": [ + ["{", "}"], + ["[", "]"], + ["(", ")"] + ], + "autoClosingPairs": [ + ["{" , "}"], + ["[" , "]"], + ["(" , ")"], + ["'" , "'"], + ["`" , "`"], + ["\"", "\""] + ], + "surroundingPairs": [ + ["{", "}"], + ["[", "]"], + ["(", ")"], + ["\"", "\""], + ["'", "'"] + ] +} diff --git a/draft.json b/draft.json new file mode 100644 index 0000000..3746169 --- /dev/null +++ b/draft.json @@ -0,0 +1,226 @@ +{ + "content": { + "error": [], + "modules": [ + { + "instances": [ + { + "instparams": null, + "instports": { + "end": { + "character": 10, + "line": 21 + }, + "start": { + "character": 4, + "line": 18 + } + }, + "name": "u_dependence_1", + "range": { + "end": { + "character": 0, + "line": 22 + }, + "start": { + "character": 13, + "line": 17 + } + }, + "type": "dependence_1" + }, + { + "instparams": null, + "instports": { + "end": { + "character": 9, + "line": 28 + }, + "start": { + "character": 4, + "line": 25 + } + }, + "name": "u_dependence_2", + "range": { + "end": { + "character": 0, + "line": 29 + }, + "start": { + "character": 13, + "line": 24 + } + }, + "type": "dependence_2" + }, + { + "instparams": null, + "instports": { + "end": { + "character": 9, + "line": 35 + }, + "start": { + "character": 4, + "line": 32 + } + }, + "name": "u_dependence_3", + "range": { + "end": { + "character": 0, + "line": 36 + }, + "start": { + "character": 13, + "line": 31 + } + }, + "type": "dependence_3" + } + ], + "name": "Main", + "params": [], + "ports": [ + { + "name": "a", + "range": { + "end": { + "character": 11, + "line": 13 + }, + "start": { + "character": 10, + "line": 13 + } + }, + "type": "input", + "width": "Unknown" + }, + { + "name": "b", + "range": { + "end": { + "character": 14, + "line": 13 + }, + "start": { + "character": 13, + "line": 13 + } + }, + "type": "input", + "width": "Unknown" + }, + { + "name": "c", + "range": { + "end": { + "character": 17, + "line": 13 + }, + "start": { + "character": 16, + "line": 13 + } + }, + "type": "input", + "width": "Unknown" + }, + { + "name": "Qus", + "range": { + "end": { + "character": 14, + "line": 14 + }, + "start": { + "character": 11, + "line": 14 + } + }, + "type": "output", + "width": "Unknown" + }, + { + "name": "Qs", + "range": { + "end": { + "character": 18, + "line": 14 + }, + "start": { + "character": 16, + "line": 14 + } + }, + "type": "output", + "width": "Unknown" + }, + { + "name": "`main", + "range": { + "end": { + "character": 25, + "line": 14 + }, + "start": { + "character": 20, + "line": 14 + } + }, + "type": "output", + "width": "Unknown" + } + ], + "range": { + "end": { + "character": 0, + "line": 38 + }, + "start": { + "character": 0, + "line": 12 + } + } + } + ] + }, + "languageId": "verilog", + "macro": { + "defines": [ + { + "name": "main", + "range": { + "end": { + "character": 17, + "line": 10 + }, + "start": { + "character": 1, + "line": 10 + } + }, + "value": "out" + } + ], + "error": [], + "includes": [ + { + "path": "child_1.v", + "range": { + "end": { + "character": 9, + "line": 9 + }, + "start": { + "character": 1, + "line": 9 + } + } + } + ], + "invalid": [] + } + } \ No newline at end of file diff --git a/images/DIDE.png b/images/DIDE.png new file mode 100644 index 0000000000000000000000000000000000000000..64a28a868e0583e38e2029eac95a2a9262c5ef6c GIT binary patch literal 82676 zcmeHw31C#!)jzl(0tzav)~c=YAJ+zFU#MGl62h9W3dKn>nGBg^!pwvuxM9J)E>y*0 zKm5d<3ev?D>t2dm6^a#?Vr^9jwoTk5zt)W_rqsU^n7yByPX4!m!Nx^*g#OYP- z3l>avLo-~_Zv#J&8&cq9^zhnkIzFqWo3P26yyKN^j+8ZWDhgvA?*r#Ab8 z^hDk}HdNO5!-=gkL$&dG@c^6Kr(Zrk5DM0dM|rh5)UB3$Khc#ic9j*dOgm=@*C1>2NvW7ctsEG#(K2nd#iH z>xj?;k;Xtg+73%4dT|m_3nI7E_g0By?1B#JC2FxzqhF9|Q0p6bO{_9}Xl!G&(FrB!g~S8Lwxoi+4_Iqqj(_;}#dmi$iTWUmNkPR9pj+ z03;l+OhIS)N3j|bM>R#7uv31K#3ChD{9ku2gh!A+Edza*7J+2Gya?2m^FP*mj}3$YrbY4bW5bbPsAhi99}mQ&&u~wqIS}=WLHU~y%o&vtDtZ~- z)duSPEn$G9-KPFsgs+I#Y<7YJlHQ?+VzBGaDgEwhk_+55(8~&)@$G#bEoDztJztb8 zxCOj8l&0EzH0$ANK}yh40ti?1$B6-_1RCH=rwlwG?nq0NS*mcW(nz+64&(l4FaX4l z&rn{-1bU*y7!8C$L@qLpPKB%3t?;UTv@_{~=18b14l)3YtYYRen1T&(0j?A@yKF{d z$6@8)HGe_6>&5-L<;h3Dp2qCZQZi8Wrp}tCG=&BUXp$_QwR$>BM*CbbS&in9gT6~@ zi8Mve$Q9u*=#*UPCQ0Jy6_Ug#G?C}*)^3z5&^R=zb`rqkyl3C(i|$39z9`-{zqq75SW_}1S{k2UG{pm05=l+>If@>0-s|ovKF|czO#uJz5uHk0C9=#CrA!9X#^c21&lgK6# zCKzM4W{k)(m7FRWX)y3~9ZPl^!k0X5$mIiP+T6`;V1o(sk8C!^oL-9$nA2s+_gK6I ztfkQ60}9oQxReH)QKzK=Sqig_)4O6V(0nt*R1)V|KvW-D+d_Ogy#fgt#HVPJp%1yu z2n%;5R6@L*N`E22bjFZs079!r74QUGiO9||nK5^=HD&a@urL?FXH!&o*O84QB6H0PJhS;T!g z=d4Uz`TdKt1ia}LoF&F0a~80I&ua16W>nTdQU+2q5PLpw2Jna5;w>c7mKg$WDX|pf zBSRqivoby?WOxwn%Ev~AcytYB?*%Hw;}q&5l}hO@!Y8Jar`|kA{Y<3@R+kB1gfDtt zrPu@p?@iOMBUu^lG9PP3-b)3(lCiF0`fWn9_Wb-S#6F@^kRm>mG@yXA0-X()6`;)tTD$<1H{1w!fj}z6Yw{iJM$p+#OFpP- z_z9i@wkxw#LFSp+uNR0YABhPeqTD31dO|m6;+WJnj*qNOS8XjLdWc zjVxEu7cs-KYUH30#51Bmz;gfxncZX%x|)au$OxB#^i437gjr<5j)l-+5e?C7F=(3Ra2t3mBLY_vG z$Zef9!N7rm(1&3lbZPi3J}|+62>|E-JhCO>Fu1-1K@#wa*MW}*Q@gO z!YYFu5Q9XCWG*Ns7QFzE;R7swG2vt*80LZ=eOrLQ!P|u)D{wLQE(_jfGb?GAP}=F% z+N{jG;uW@u2#;Z{O_S6EfUPIN7sV`P*-0e74`ippeU$;T)zrA%m^VRu1)qYLk2Wn3 zEN*K~$~UH!rA)_~_HYQY%AyYFAx&hYn&+QYRMRe&YJW{bkeQj2TjJ0SruU$|FLLu> zwvCyOB6TST;S`&L99tHY>MrK7_d?I5kV~@Ll4p5pNte2BQ_s81I7)9*xn=epVprJ588A;>odf

^`9{X~M`UEKQir3KABD ztgNeTxlq=W3T>D&L-bu~(If*|%&J6-R9Go!XYkB1@aiyoHA5BBJ2nyIe6bzY^otFN z1_^6Ta4s8M2C4Y0U&B(HGL!XfzIUN4wiJLdv4)&E6Y%WK)4nCclZ;8y;&NM&(0#^ z3Gr|6^noiFM+mM!Q{0^e-N7xa_ak|U;TCxqOrREQzzpTQn1q5taDYGoHs+Zxa3jQZ z0ANFa2UwQ}Z+x)b8iLi$(FJ1{#8hEi)&u6+5Qir`1$Hn_ZVpWGW9=vGK2!EbpTNFh ze>=s1gbAh0aV1ulO(=p3*}!Utz?cT|>$A|HrX{+F?V(O--pYw*P^l*oW9K}LgYqxf zey0?BOKCKQ)!cr0K|}_1m6-&0*qy3~Uj_~&4V3WrF}|Y&J9PAtI29NeVPO&)b<(-X^!4N5Hiq3R z%x|1Z{%Oz!BohRti&?1Jh>rAutKJaBUCu`@O*;%828Que08Rk6KZ>eVSdJx!<{-|A`b<27yfaFDxx{!tgPh?4xe7_xN39%Iq`iI+D zz9aeyk}SVT1SuRUP<}1c6ojA@2BKhQ@mm$!#+AotT_wyT;MuARvz_+!P>dk}^+QaB z1dPQVEOtko75~S02gjtyW9@{u%v_?yMVXzF5on_}S=4L$AhMG6{mMJv1z9gZo{am* ztI_iTV)VBoMfDq5pWdUBgx7g z%znV4f8|Pa%M{6aDlsiS(Fq_>f2%(R;65?QQ&Mc8-cZeel~G{HFEnU#@E(B90-J*? zEKrE%2PNyD50P&-GW0(KD!@PqDeRItFlHplXUp_K`>A%MkdQEhJoG)Sb|fP@8|_Gu zKZ86r!H~WaVCaH&R0OgqaI+7zWAZ?DBK%L4z36aY1OjlTmc7U=1@I80N<`FDRpQfh zxSk+5giu16&1+47tN@t>A_xovEtm*G$!H;F&=2gqhoQnPkX#Ex1^EX1i`h`o41n9= z8W<1TgABui&nQvhcD9=sZ|8ZMhG!Xst@Kz-dzU9hdqp-_e26(Km<^WijDmY%ECtE> z1{VrU9J~Ne2UVCC`l^{-z=^hn!p{rpukV=~4w7j?pn5YFsKoeL2~-fCW`K)qVOUT` zVnBD+BpMSa8ps3423B9&+W|g35m3?H684OiF_$&^lADT#z&n1K;zvgUR;vUrj@6kX zYtl-YU8FB516IDDsy4HQAo)z&hab^`$9I3N)ObOmyt5HoKc2C-IRk&APnpaXfxG%epKrdxgd zp+-+9_zx3Drz<-({Ln%+P-BFtO|cOh2vX}qd7$yf$UoqO}SH9c3sq`JUzr^ud%rc0@LlabF9-tjj{6PyyiUM zeKY;1M=S>AZA`xHLX9j9zG&r$5kfFLkrcgXu!G?m#2FlRq%BRH08dNUpH$d0-Gb77 z(A=#k10kK=mF_hm2g;X8h8(AxkwK*=SO-*(CIgadYT+-EB&?BLRpCIXu%p7{Pb&8^5BQm@IJwELmMk>wyd+r- zQMw0#?yl@)Bj9czvwp6HM53##g^1g7C$utELrzuNEvNcae4d!~$q_%pp2Ri)`;9zn zTG+n515}HP3yICP#Nr!Dd_zKAW*Z{;tk_0m1np03Ber$)61EYeF)TpW*`_v7-4fhS z*`^0~uepFdkwXouW)e#2@wQQCcL8GesLi8@nB`vEbO|E61!N`r*W)rk*v2+f-6r$( zZsYZ!ZL);C$-{YFQH7E(hq=qVZVU|VpG;0}&>qo^{mQYC%(PB-R7X<7K(?Q$kbdvb zsWcjcbnd!NjYZ(R1%CVf1w>sGQSAvJsxlu;8r7&T)7ZF%uw;UJNK16>9#hywQAYvk zos{M(&7|ghl`*|`j8Hb9-mL)ja*P2|G_WEo3oYo|Q6z5#{|WsUnrj1m6X5RvM?LfE z^X+RGy5XU0m2-qS_D^Ll5DY003#HP4cmOoIyUgh;yp$H6Z?0xT@RI-pz%qj@!r*m6 z%tG_UsK%D2c3NU|-AF*9%7%h=av5?rP;gQ)oVkCd%S1_HAS;?wAZ84AfpZOFay$%} zhL&jcbtl?Bqb{>=J&|C#nKq2{C}-{)sHWS}F%rDYifjxmjo&EXI3;IAONsd~Jz#8U z@eIs}(9$vZQD+$hH1yO77Sf=!3O$R%aMWUsEIUI)C#eXLk(^tRjv<@1udz7l%(D5Z)^sVY^sjoKboY44?!%*M-5$3-mt&5tSJw^n?JDCrB9JnI)nOCUJkkJcXe$s*eEf82Dz*}4~4hD3$PFt zRxkjq4}mYB&;)vfpS08%@!D`PPi%o@W>k;p0WyezoZ)X%kpwL?mlU?@G=an5Jwu25 z%oJ!TG3P0n$HN10u&86 zPd-Q&m?Fr|;XIa~B%_sX?3T#^j1_=PjpTMgRuhy+g4&WxQrAotjF>Q?4dz8VkP*m{ zC3it$JkRb0`y=1W1ffD|F}lXBrTj41eRpe=68!@E@E!gyfp|=`?I)8?TWj^XkO0(0F@eq$z@F<>0rJFVT<8v#NGfTkI}J zq4B&*7k~$BW#?+b2mVcD$k?HrK&TdfhbqY~I}Q>4#=lCiG3B*jG>dC#-)on;VNYX! ziRggV3-k}HWoO|&msV388UfC_&_H&97!%jP1_8SZxDbYfCNK0+fMyST3-WL9nRNz) z1vlf>KymO1RJ9A#AbbTUvxQ@m|(5UmlSxrp*<(dawb9ZzxxR zjjeEwDr;wH4cLN%lZ*6X8#C0g8GaKF6819w${JHFyY`btIHlUDlR#)~_(0wXt8`9J zXxH0WCLXnO-;Z_=ONF4{go&j6i1A+f4NN7iT~Cb=ze;qCca&(1AjZrZjl3eRE7eb; zh3zzx&U`VindVjM zi8ae@kTw=d>YZj(DW&T5?KN|g1SCEqzUzTCBY%!TMw&Q+kOSWv)vJR!nxe`^->B2Z;ZdgfOz&AWI2n!8--VnO&CO~^8%LV~f6?8g_ys49{X)Cd zqz!7bDcL;5ZnXq2dgrpnJpd4Kwz@a!4baR{*x9Uc57CmKt+ZL=sk6+pc9qgp$(*Y@ zFS-AR96{=kq~>`T2uX^gN#fB+L!eL`V$?T7l3I#*3K3`{F)52c3I${%0qLkQ15GlQ zmu8%UjV!#E;MV~!4j8fAO44JHNgQ9?cLUBe)`KaRA9l6zs$yy4&_-dJMwclfj$Aw` zHZx@&H1=7+qDLVoR!BdjT+&k7;ZO1s5!lXViD>ENCF;C_GEQR`bW)C@aY>g$4#0T? zE|rxEQEKiYaNrMPdIbb~%FSgo8p8r`7D#24=5+TC9LJREKpQhdBFh;!?<8SS@=Xgp zl!RBs0h*wGOgnl^ILSz4`-E4u!*4WRCFYfRmGHXEs|2jG;#HUs)10Koj>cK*0&5an zq9wxQB6m`P ziHL;sX_wPC)+hZD&JR-I9_6n@S$x1*7gW#^>gcH=!A=)z*`;vP{3_(09-*(OoI-d2 znnaJ-I>>68f}7nGZGs?^ z52_kLegH(9;Pynktc5q>8i;avq~XD)M+iIt9_Imc_!WACjrI_Mf@l^5Z$Y;5S70$I zEU2W3Q4o=Uo>+?P5M z*^QF|%0nehE9_)zTXW$*|qifr|N=Fq;i7E4;;tJ~>Z z%vv#PK9@il!6?M{`9*wC*iac-ECxnyuV4!ZubAONECLV@H5(giB27(!8qm?~vAjor zG#Y6&URD2EcGISn zMn7E*v&NXD-e1d#c*9rLlzLL-$rf1>ncrZ%nPSP9Qo-J8;pDQ$ifMH<@j2sL+k)>lCq25VvzljSfKGveRR1NBs8*=*DI*65Me_PN zp$fcY5U3_48U!uc%qJ(UHA93C8>a%KtoW_MaP?P{#mP9lYZyabSoL~(X#YCN9ZDCG zmQxw0*BX1jyuAHRXa{xNY@ZO+qmE z100ZtUM6&B*_6i)qk|YvpJT3l+(`y*GH~$2NfPX=3+^w|eW8X}0;4khxr+M!#$2_Y zN%u*VQu~-Rg$$%)doEFw5Qtz;lF9}o?hiw5!oNKzm@g>+B$2IXtahCrka znRUFY-sDJW1Hu~mzS}AD^uK^Rk|gRHa2XN}#ArGZm_?7vMx48#2r%2sj;1G?FYM`yM7)<+O@0oJ_Jx+1%T3V)lV{ z4fnx^G&McCkTxjyp6oLM&UD$eR9>d1vwY3j#@#iJ{Uyt{exa?s%{jkxwxglh<}6=q zU0B|dr>Zj7X}xT8nq?6t>Wux%67Iyt=H(yTuY%udB6&WB25U4>L6Dl zK~L@pFzw;aQegGsY0d&@|iIk(KNp@UDXv5dSG$m8s@7RXoNh26GW}Q`!$b?x}Q;Z>KYWva5V-Pog(U-IXIFbXgyzHbN%7pNb~ zYkV-g~{18mIofqrk)e8p*QG>Da2ZXfR_I!Oe zxP#6zBp62&CK00YY(u)Pk5ZzrA|<&uF#-p-MWVv0inr5V!vR6YtfD0JqbW+FA9rFk z0SW{6BSEG>RJ>vt)Dpy811J>5wWU!u@oTWk8&njeI%Z~NtDU?BS{EwnLD?zx0gomF zSqYt&uo|!8vT!6QY8Z+#dnHgm4hq^Oo2?*OuamG85p==ltUG0uzlGFC=Cr}Bzhy6 z4}hN!06->j3<(Z8eZY3DK(yB`ybV+z+DQl14Ah5CGpEM+&46&^8|2T5gaGf%*=22Y zGu&-+rq@Tk1yd(hTZ?jEA6oeo;YOD=v+_C~Q|M}HtKyyWW>-{r^Zk*E${B?~pLG)h z<>ktPg(fQxgSC~yrK)F87VE7AMmtcyrXmt)244q;x)%iE@pe)D+}{$9K$Bz}a<()@ zg^e5jlygLR?@}6#@;c!#mJ_*^v%%&(HK)sjmF%-gif3G%+1~Zl21kK@JXQ+fnrg_V z>gK6tQUPKz_I)Tzl2t^4p&G#JMS&PP$aDbG!$qEyFHMoJp4v%h&TG{?ZL+$@l|)XJ zO+j=1YwwL`E7?!AiLg%#BjsC)bxSLZn9v#!Mm#$*)l7DqFsf{Cir0fciuJ5KN-)MV z)r2`G7O}J0ERR&4DXnx+Kaxj^K%v>C*|)%vl8Z70M=WDZI9^_!cfg#8+H(%msrBCX&uw_D|36XHrh1i6gtaA?x&1sNR^B4=*( zM?uy*_R{6h%2TqRNbXJxtXTYZK#-*XR$?Y|F32jY;0Q5mVR1zTAu35sRpb{I!>`2? zi;E{!(eDF-ifs;Zk!9D~GU3plFRlXUE9@&Jv&B1KkUAF&<1_QYiQ{%AW= zWx{?g>?l1aEhw{rpih?$kSxk3xA%`AVG4!N4F?w$1>*itI8Zwvlhgprx1X4awC}CI z%Ooahj5QP03^(AL2a!OBzpJN6%%y>3IO53;JXQGH0Ui-J(*0Q_p{7u*KGYPXpVGOq zvc*ltE!wPnw$JBquuuWKytUVR<89Xc#eUpB{P8y7Motf@20Zd<#g~}NoQp3g%I%MZ zU@r}cDP4jUx5cCWns_JzLB*2FGP+eenycP;SS@r z2%RXaLXAwPDt^ju@`u|yk*(7yg{#o6f-3v23&ZB1osE5nPzX>os5=0o5h~AK@a} zMBws>)TBPWi9qw9HT#2s@qtjV9#|a$#CDs_Edqg!{&+oa6Iqk7dVg)CRcgxI?d&Mb z?H+=Xe7~*4Um2NQ-%#eA=9w^lVYngpdkBsjR@rCc|yluuDvR>&Wc zPgr;Q;%0y}g14&zRXI2|Rhbis?4grCo4j>&yfgV*#LjT-5P3>vB z6{mm|8{1$#q0&Y1Z@1<*3>q|ad0A0@Rojm~UNx_xs&w?Gk<0HLJ!?+Y+6PNsIiO|T z=nW6vf6s%(S6_SR5o3O3ng0HShVxITnE#K$i$8twsn6dyNa+3g$W zZaw15KmYZH%{vdD@KMF6aSvC;HjP^S+VLx1U-|v`f;Bs?Ke4sr+JEg>+VJ>Mzjin- z2v;9DWcQ!1yz=?UJFc&GzqqV8*tGfh*(-nfn+0QTer$N%i_v@j>2^Na@?6K~%O?K6 z3EQo09j_cb?$En0i5&KWIX4cktem`h@0WSU9C|~3(jHB}xe|gq1i_bdXuv6xY zI_vqi_wR8W-SO3eugfprJM!J7m3beJI^p>LEz8@q{NN`VPG4=k^t2nVIrrVs7mPoD z_r1T3*IhB`jTKA3`uokp&i!Mv{eZ`=xoXL|RZo|$`TVX;$1c3iV_nq#(JLdK{PX!E z9-e+q$5Vek5(gbJJ!4}IA5TxGDXWcW;i2xTqoU z?j!&I-y8mZcIEqp9rwP}ur{{qj+g&a`mF^ApA@gz_|u=R8@0H+x@P#XtADfW)}O9B zqH|v=JNACKbAIKlvmL%Y8?Su*kvm5mG4AqD5Bl=6_^0!o6DLe4>^S!9#=R>hzBc^m zWs|0U$5t_FgKc|7=<=;UynOAfU87HWaqg}ykDnRKyKL204_vpVZrT}ZcVF&+Y<@hI-KVN>san^!MM$P)#y>|Ky;h|?=zIyAV<}H8s6ilAl@z66h zZ=D!lc0%kwbHm@bc6|NBfg_)J`1J36d+f@QFAw{lAJm+AXWs62A20jP6Ju^GKgE6J z$nV|$r~J~=Lmr#CZrQ(9op{W#ix0Ye;>P!WRQbE(Yz4s;)`f>WwE3ndHy=7=>7IpO zm+ra7@m=@l+w8^HZ9eUTn)Zj^zG&^YUU05^@`cmpefDJS=CZGvy(8|qeOmMS*8Hhg zUwhK0Z=O7KRl&FwNBOSVec2uZNUbN$Fiw#1L$I%IX__|oAUJHCp) z{ok_tZ@THG_nN)WoImx*Bfi-1l56zJvmE&yqo-{t$nRKQU4G$+3ATHi7jKK5RX(Qv zq3hn-^h>AhuO(y4@2R@7=>ym4fB5vW8^X>HM{oN5KgvDBjvpC3=8lsa7L<0hjcEAv z+&3Q{^I7eIx9r{d`3ohhPks67lkEi_V{l-~8 z{bs={gKfS~&V0x<#J~O9ljnZ-*p9pZHEYq;e;c#;%-cV{{1+SkaO3hXs-GKt?dH2q z|N6h*8~NsR{mwonJ@fi!g9KP$0%YU|f z<=~yK#h<tn{maoEv-%OPXF(y%PLkE?!DrcH8Y=F@$@4VYc@P^bkj4JfA7MZ z->KcP=ks^Rk9%^{1D_RrvfRC8>xG{ze$>9CZ0y^^&p3P1Jx8s6s4_h1!2`!V_06G= zJazuynU_Ak`jtVapV#8P>cRK{Yt}z{>5y|4Zaiv(`M`qA+F_TK-C$yK{Px^2yj zD~E0Q__Tu#ShaTLKVQH3`Nvm`4QzikHukFf=j1K>@t@8(>6|eaZ~F11-48ehe{s>a zQ{K7d>+|k(ojv2Cq1)g4?1aPSoxf(x^OwH%<4N~k^zn|d-;TF@d&*arygYx%xrb~x zYWKT0HGWXl@%HCKBLBVmmJ@Ec@XqoZF8RmQZ2|kd1)lPv3qJnx_<5_ECNH11?xX9! zS%1jno10(wa{btmB`3V~LinzEk3Rg#n%^AxR`C9#AKdlYE!I!}u(IvItInJ5Y2EVL zb1yFX@}zS&U3c8lFW=tfdTYnk&mOk--l6mEyL-#l`^P=}_kWb!?<+X^^rw&6IdtAn zb{9N(QhfEN*Dkz%^Tv*`ub+|l!`QsIE&9&O55&JIf9FS^UVC-Pu^rVP+_Lq7#!F%) zlfKwkdtKs<(JP57A% zUTgXI>MK!jp7+t-H=eok;K!}5e~(_g{x3gXzUP<^cGNBnwj6QyeXlKDy=lzm<~t95 z)-htnkH*C=dusg~>#N$ndGBoRpZ<9GU$=a+^7ZI(vw!)-y+;oF*R2Pv`TYHfgRcMy z|I!4I@U@M;$DW?FX3vL_+DXcty=!V4)eg~A!$*2K#?_GEB)9XhZuzJF%p)H#% zh2g96es$s_ZM!O$U?1(*pLenSg}@(BshqX#*vCO3tiblNj^8f2<;&U|U%L&}!@m|^ za`VW$p85&X8;7piRJQz_LqB+E$7+YCYhGm x^*f_~veJKI-0`P}Lw^~%{oV^+8S(c^Z!h|e)#GfqWDxu*E1p#JV8I1H{y(n1lDq%_ literal 0 HcmV?d00001 diff --git a/images/FPGAs.png b/images/FPGAs.png new file mode 100644 index 0000000000000000000000000000000000000000..ec08a8c4fc3c4766ab4b736acba5c3976191d450 GIT binary patch literal 4092 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 \ No newline at end of file diff --git a/images/svg/README.md b/images/svg/README.md new file mode 100644 index 0000000..7275ff5 --- /dev/null +++ b/images/svg/README.md @@ -0,0 +1,3 @@ +dark main color : #c5c5c5 + +light main color : #2c2c2c \ No newline at end of file diff --git a/images/svg/dark/File Error.backup.svg b/images/svg/dark/File Error.backup.svg new file mode 100644 index 0000000..c38e573 --- /dev/null +++ b/images/svg/dark/File Error.backup.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/dark/File Error.svg b/images/svg/dark/File Error.svg new file mode 100644 index 0000000..a0bc319 --- /dev/null +++ b/images/svg/dark/File Error.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/dark/LOAD.svg b/images/svg/dark/LOAD.svg new file mode 100644 index 0000000..c9f5ad7 --- /dev/null +++ b/images/svg/dark/LOAD.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/dark/Link.svg b/images/svg/dark/Link.svg new file mode 100644 index 0000000..4a72a1b --- /dev/null +++ b/images/svg/dark/Link.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/dark/SerialPort.svg b/images/svg/dark/SerialPort.svg new file mode 100644 index 0000000..e1e5952 --- /dev/null +++ b/images/svg/dark/SerialPort.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/dark/add-cloud.svg b/images/svg/dark/add-cloud.svg new file mode 100644 index 0000000..e774ce3 --- /dev/null +++ b/images/svg/dark/add-cloud.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/dark/add-file.svg b/images/svg/dark/add-file.svg new file mode 100644 index 0000000..b4c9279 --- /dev/null +++ b/images/svg/dark/add-file.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/dark/add.svg b/images/svg/dark/add.svg new file mode 100644 index 0000000..07ff77c --- /dev/null +++ b/images/svg/dark/add.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/dark/bin.svg b/images/svg/dark/bin.svg new file mode 100644 index 0000000..b2eaff7 --- /dev/null +++ b/images/svg/dark/bin.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/dark/bit.svg b/images/svg/dark/bit.svg new file mode 100644 index 0000000..18b0762 --- /dev/null +++ b/images/svg/dark/bit.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/dark/boot.svg b/images/svg/dark/boot.svg new file mode 100644 index 0000000..7ee6f7e --- /dev/null +++ b/images/svg/dark/boot.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/dark/branch.svg b/images/svg/dark/branch.svg new file mode 100644 index 0000000..ba79989 --- /dev/null +++ b/images/svg/dark/branch.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/dark/celllib.svg b/images/svg/dark/celllib.svg new file mode 100644 index 0000000..2dec457 --- /dev/null +++ b/images/svg/dark/celllib.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/dark/cells.svg b/images/svg/dark/cells.svg new file mode 100644 index 0000000..2dec457 --- /dev/null +++ b/images/svg/dark/cells.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/dark/clean.svg b/images/svg/dark/clean.svg new file mode 100644 index 0000000..ad915fe --- /dev/null +++ b/images/svg/dark/clean.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/dark/cmd.svg b/images/svg/dark/cmd.svg new file mode 100644 index 0000000..f27659b --- /dev/null +++ b/images/svg/dark/cmd.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/dark/current-sim-top.svg b/images/svg/dark/current-sim-top.svg new file mode 100644 index 0000000..5116694 --- /dev/null +++ b/images/svg/dark/current-sim-top.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/dark/current-src-top.svg b/images/svg/dark/current-src-top.svg new file mode 100644 index 0000000..bae3ce3 --- /dev/null +++ b/images/svg/dark/current-src-top.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/dark/currentSimTop.svg b/images/svg/dark/currentSimTop.svg new file mode 100644 index 0000000..db12ae7 --- /dev/null +++ b/images/svg/dark/currentSimTop.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/dark/currentSrcTop.svg b/images/svg/dark/currentSrcTop.svg new file mode 100644 index 0000000..15e1819 --- /dev/null +++ b/images/svg/dark/currentSrcTop.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/dark/debug.svg b/images/svg/dark/debug.svg new file mode 100644 index 0000000..efeb04c --- /dev/null +++ b/images/svg/dark/debug.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/images/svg/dark/delete.svg b/images/svg/dark/delete.svg new file mode 100644 index 0000000..a01196a --- /dev/null +++ b/images/svg/dark/delete.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/dark/documentation.svg b/images/svg/dark/documentation.svg new file mode 100644 index 0000000..68b234c --- /dev/null +++ b/images/svg/dark/documentation.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/dark/file.svg b/images/svg/dark/file.svg new file mode 100644 index 0000000..8f49267 --- /dev/null +++ b/images/svg/dark/file.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/dark/fsm.svg b/images/svg/dark/fsm.svg new file mode 100644 index 0000000..95eab94 --- /dev/null +++ b/images/svg/dark/fsm.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/dark/hide.svg b/images/svg/dark/hide.svg new file mode 100644 index 0000000..a125c3d --- /dev/null +++ b/images/svg/dark/hide.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/dark/import.svg b/images/svg/dark/import.svg new file mode 100644 index 0000000..1abab9b --- /dev/null +++ b/images/svg/dark/import.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/dark/library.backup.svg b/images/svg/dark/library.backup.svg new file mode 100644 index 0000000..c47631b --- /dev/null +++ b/images/svg/dark/library.backup.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/dark/library.svg b/images/svg/dark/library.svg new file mode 100644 index 0000000..e0f6605 --- /dev/null +++ b/images/svg/dark/library.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/dark/list-tree.svg b/images/svg/dark/list-tree.svg new file mode 100644 index 0000000..22c475a --- /dev/null +++ b/images/svg/dark/list-tree.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/dark/netlist.svg b/images/svg/dark/netlist.svg new file mode 100644 index 0000000..6efdf23 --- /dev/null +++ b/images/svg/dark/netlist.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/dark/refresh.svg b/images/svg/dark/refresh.svg new file mode 100644 index 0000000..d79fdaa --- /dev/null +++ b/images/svg/dark/refresh.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/dark/remote.svg b/images/svg/dark/remote.svg new file mode 100644 index 0000000..3d573e9 --- /dev/null +++ b/images/svg/dark/remote.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/dark/run.svg b/images/svg/dark/run.svg new file mode 100644 index 0000000..8b0a58e --- /dev/null +++ b/images/svg/dark/run.svg @@ -0,0 +1,3 @@ + + + diff --git a/images/svg/dark/show.svg b/images/svg/dark/show.svg new file mode 100644 index 0000000..5c3a469 --- /dev/null +++ b/images/svg/dark/show.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/dark/sim.svg b/images/svg/dark/sim.svg new file mode 100644 index 0000000..30fc77e --- /dev/null +++ b/images/svg/dark/sim.svg @@ -0,0 +1 @@ +folder.test.close \ No newline at end of file diff --git a/images/svg/dark/src.svg b/images/svg/dark/src.svg new file mode 100644 index 0000000..e953f79 --- /dev/null +++ b/images/svg/dark/src.svg @@ -0,0 +1 @@ +folder.src.close diff --git a/images/svg/dark/systemverilog.svg b/images/svg/dark/systemverilog.svg new file mode 100644 index 0000000..73b7fcf --- /dev/null +++ b/images/svg/dark/systemverilog.svg @@ -0,0 +1 @@ + diff --git a/images/svg/dark/tcl.svg b/images/svg/dark/tcl.svg new file mode 100644 index 0000000..d18bd8f --- /dev/null +++ b/images/svg/dark/tcl.svg @@ -0,0 +1,3 @@ + + + diff --git a/images/svg/dark/toolBox.svg b/images/svg/dark/toolBox.svg new file mode 100644 index 0000000..d90b9b5 --- /dev/null +++ b/images/svg/dark/toolBox.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/dark/top.svg b/images/svg/dark/top.svg new file mode 100644 index 0000000..737813e --- /dev/null +++ b/images/svg/dark/top.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/dark/translate.svg b/images/svg/dark/translate.svg new file mode 100644 index 0000000..8c9ea69 --- /dev/null +++ b/images/svg/dark/translate.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/dark/verilog.backup.svg b/images/svg/dark/verilog.backup.svg new file mode 100644 index 0000000..3b42849 --- /dev/null +++ b/images/svg/dark/verilog.backup.svg @@ -0,0 +1 @@ + diff --git a/images/svg/dark/verilog.svg b/images/svg/dark/verilog.svg new file mode 100644 index 0000000..7bfedb0 --- /dev/null +++ b/images/svg/dark/verilog.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/dark/vhdl.backup.svg b/images/svg/dark/vhdl.backup.svg new file mode 100644 index 0000000..6a92ee0 --- /dev/null +++ b/images/svg/dark/vhdl.backup.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/dark/vhdl.svg b/images/svg/dark/vhdl.svg new file mode 100644 index 0000000..e30d61d --- /dev/null +++ b/images/svg/dark/vhdl.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/light/File Error.backup.svg b/images/svg/light/File Error.backup.svg new file mode 100644 index 0000000..c38e573 --- /dev/null +++ b/images/svg/light/File Error.backup.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/light/File Error.svg b/images/svg/light/File Error.svg new file mode 100644 index 0000000..a0bc319 --- /dev/null +++ b/images/svg/light/File Error.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/light/SerialPort.svg b/images/svg/light/SerialPort.svg new file mode 100644 index 0000000..e1e5952 --- /dev/null +++ b/images/svg/light/SerialPort.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/light/add-cloud.svg b/images/svg/light/add-cloud.svg new file mode 100644 index 0000000..2916e50 --- /dev/null +++ b/images/svg/light/add-cloud.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/light/add-file.svg b/images/svg/light/add-file.svg new file mode 100644 index 0000000..aef8e1c --- /dev/null +++ b/images/svg/light/add-file.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/light/add.svg b/images/svg/light/add.svg new file mode 100644 index 0000000..2cf3ea6 --- /dev/null +++ b/images/svg/light/add.svg @@ -0,0 +1,5 @@ + + Layer 1 + + + \ No newline at end of file diff --git a/images/svg/light/bin.svg b/images/svg/light/bin.svg new file mode 100644 index 0000000..b2eaff7 --- /dev/null +++ b/images/svg/light/bin.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/light/bit.svg b/images/svg/light/bit.svg new file mode 100644 index 0000000..18b0762 --- /dev/null +++ b/images/svg/light/bit.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/light/boot.svg b/images/svg/light/boot.svg new file mode 100644 index 0000000..c6e7377 --- /dev/null +++ b/images/svg/light/boot.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/light/branch.svg b/images/svg/light/branch.svg new file mode 100644 index 0000000..20b3630 --- /dev/null +++ b/images/svg/light/branch.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/light/celllib.svg b/images/svg/light/celllib.svg new file mode 100644 index 0000000..abe704e --- /dev/null +++ b/images/svg/light/celllib.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/light/cells.svg b/images/svg/light/cells.svg new file mode 100644 index 0000000..abe704e --- /dev/null +++ b/images/svg/light/cells.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/light/chip.svg b/images/svg/light/chip.svg new file mode 100644 index 0000000..5c1bc83 --- /dev/null +++ b/images/svg/light/chip.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/light/clean.svg b/images/svg/light/clean.svg new file mode 100644 index 0000000..e23b4ce --- /dev/null +++ b/images/svg/light/clean.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/light/cmd.svg b/images/svg/light/cmd.svg new file mode 100644 index 0000000..508df5e --- /dev/null +++ b/images/svg/light/cmd.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/light/current top.svg b/images/svg/light/current top.svg new file mode 100644 index 0000000..a57bbe7 --- /dev/null +++ b/images/svg/light/current top.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/light/current-sim-top.svg b/images/svg/light/current-sim-top.svg new file mode 100644 index 0000000..5116694 --- /dev/null +++ b/images/svg/light/current-sim-top.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/light/current-src-top.svg b/images/svg/light/current-src-top.svg new file mode 100644 index 0000000..bae3ce3 --- /dev/null +++ b/images/svg/light/current-src-top.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/light/currentSimTop.svg b/images/svg/light/currentSimTop.svg new file mode 100644 index 0000000..db12ae7 --- /dev/null +++ b/images/svg/light/currentSimTop.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/light/currentSrcTop.svg b/images/svg/light/currentSrcTop.svg new file mode 100644 index 0000000..15e1819 --- /dev/null +++ b/images/svg/light/currentSrcTop.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/light/debug.svg b/images/svg/light/debug.svg new file mode 100644 index 0000000..5373465 --- /dev/null +++ b/images/svg/light/debug.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/images/svg/light/delete.svg b/images/svg/light/delete.svg new file mode 100644 index 0000000..3af728a --- /dev/null +++ b/images/svg/light/delete.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/light/documentation.svg b/images/svg/light/documentation.svg new file mode 100644 index 0000000..e8ad48b --- /dev/null +++ b/images/svg/light/documentation.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/light/file.svg b/images/svg/light/file.svg new file mode 100644 index 0000000..c1011e2 --- /dev/null +++ b/images/svg/light/file.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/light/fsm.svg b/images/svg/light/fsm.svg new file mode 100644 index 0000000..dcea49c --- /dev/null +++ b/images/svg/light/fsm.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/light/hide.svg b/images/svg/light/hide.svg new file mode 100644 index 0000000..abcba9d --- /dev/null +++ b/images/svg/light/hide.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/light/import.svg b/images/svg/light/import.svg new file mode 100644 index 0000000..53a61c3 --- /dev/null +++ b/images/svg/light/import.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/light/library.backup.svg b/images/svg/light/library.backup.svg new file mode 100644 index 0000000..cc1e014 --- /dev/null +++ b/images/svg/light/library.backup.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/light/library.svg b/images/svg/light/library.svg new file mode 100644 index 0000000..f23be67 --- /dev/null +++ b/images/svg/light/library.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/light/list-tree.svg b/images/svg/light/list-tree.svg new file mode 100644 index 0000000..698bd18 --- /dev/null +++ b/images/svg/light/list-tree.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/light/load.svg b/images/svg/light/load.svg new file mode 100644 index 0000000..563ead0 --- /dev/null +++ b/images/svg/light/load.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/light/netlist.svg b/images/svg/light/netlist.svg new file mode 100644 index 0000000..2affde3 --- /dev/null +++ b/images/svg/light/netlist.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/light/refresh.svg b/images/svg/light/refresh.svg new file mode 100644 index 0000000..e034574 --- /dev/null +++ b/images/svg/light/refresh.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/light/remote.svg b/images/svg/light/remote.svg new file mode 100644 index 0000000..ee446d2 --- /dev/null +++ b/images/svg/light/remote.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/light/run.svg b/images/svg/light/run.svg new file mode 100644 index 0000000..6d670de --- /dev/null +++ b/images/svg/light/run.svg @@ -0,0 +1,3 @@ + + + diff --git a/images/svg/light/show.svg b/images/svg/light/show.svg new file mode 100644 index 0000000..f94fac9 --- /dev/null +++ b/images/svg/light/show.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/light/sim.svg b/images/svg/light/sim.svg new file mode 100644 index 0000000..30fc77e --- /dev/null +++ b/images/svg/light/sim.svg @@ -0,0 +1 @@ +folder.test.close \ No newline at end of file diff --git a/images/svg/light/src.svg b/images/svg/light/src.svg new file mode 100644 index 0000000..e953f79 --- /dev/null +++ b/images/svg/light/src.svg @@ -0,0 +1 @@ +folder.src.close diff --git a/images/svg/light/tcl.svg b/images/svg/light/tcl.svg new file mode 100644 index 0000000..d18bd8f --- /dev/null +++ b/images/svg/light/tcl.svg @@ -0,0 +1,3 @@ + + + diff --git a/images/svg/light/toolBox.svg b/images/svg/light/toolBox.svg new file mode 100644 index 0000000..bba9a1c --- /dev/null +++ b/images/svg/light/toolBox.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/light/top.svg b/images/svg/light/top.svg new file mode 100644 index 0000000..ce57593 --- /dev/null +++ b/images/svg/light/top.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/light/translate.svg b/images/svg/light/translate.svg new file mode 100644 index 0000000..b7a218b --- /dev/null +++ b/images/svg/light/translate.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/light/verilog.backup.svg b/images/svg/light/verilog.backup.svg new file mode 100644 index 0000000..3b42849 --- /dev/null +++ b/images/svg/light/verilog.backup.svg @@ -0,0 +1 @@ + diff --git a/images/svg/light/verilog.svg b/images/svg/light/verilog.svg new file mode 100644 index 0000000..7bfedb0 --- /dev/null +++ b/images/svg/light/verilog.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/light/vhdl.backup.svg b/images/svg/light/vhdl.backup.svg new file mode 100644 index 0000000..696313e --- /dev/null +++ b/images/svg/light/vhdl.backup.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/light/vhdl.svg b/images/svg/light/vhdl.svg new file mode 100644 index 0000000..e30d61d --- /dev/null +++ b/images/svg/light/vhdl.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/system.drawio b/images/system.drawio new file mode 100644 index 0000000..6a4def4 --- /dev/null +++ b/images/system.drawio @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/images/toolchain-flow.svg b/images/toolchain-flow.svg new file mode 100644 index 0000000..1355658 --- /dev/null +++ b/images/toolchain-flow.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/lib/bd/xilinx/MicroBlaze_default.bd b/lib/bd/xilinx/MicroBlaze_default.bd new file mode 100644 index 0000000..773f474 --- /dev/null +++ b/lib/bd/xilinx/MicroBlaze_default.bd @@ -0,0 +1,519 @@ +{ + "design": { + "design_info": { + "boundary_crc": "0xA1D73E4ECA8CEDF5", + "name": "MicroBlaze_default", + "synth_flow_mode": "Hierarchical", + "validated": "true" + }, + "design_tree": { + "microblaze_0": "", + "microblaze_0_local_memory": { + "dlmb_v10": "", + "ilmb_v10": "", + "dlmb_bram_if_cntlr": "", + "ilmb_bram_if_cntlr": "", + "lmb_bram": "" + }, + "mdm_1": "", + "rst_clk_wiz_1_100M": "", + "axi_gpio_0": "", + "microblaze_0_axi_periph": { + "s00_couplers": {} + } + }, + "interface_ports": { + "gpio_rtl_0": { + "mode": "Master", + "vlnv": "xilinx.com:interface:gpio_rtl:1.0" + } + }, + "ports": { + "cpu_clk": { + "type": "clk", + "direction": "I", + "parameters": { + "ASSOCIATED_RESET": { + "value": "cpu_rst_n" + }, + "CLK_DOMAIN": { + "value": "MicroBlaze_default_Clk_0", + "value_src": "default" + }, + "FREQ_HZ": { + "value": "100000000", + "value_src": "default" + }, + "INSERT_VIP": { + "value": "0", + "value_src": "default" + }, + "PHASE": { + "value": "0.000", + "value_src": "default" + } + } + }, + "cpu_rst_n": { + "type": "rst", + "direction": "I", + "parameters": { + "INSERT_VIP": { + "value": "0", + "value_src": "default" + }, + "POLARITY": { + "value": "ACTIVE_LOW" + } + } + } + }, + "components": { + "microblaze_0": { + "vlnv": "xilinx.com:ip:microblaze:11.0", + "xci_name": "MicroBlaze_default_microblaze_0_0", + "parameters": { + "C_DEBUG_ENABLED": { + "value": "1" + }, + "C_D_AXI": { + "value": "1" + }, + "C_D_LMB": { + "value": "1" + }, + "C_I_LMB": { + "value": "1" + } + }, + "hdl_attributes": { + "BMM_INFO_PROCESSOR": { + "value": "microblaze-le > MicroBlaze_default microblaze_0_local_memory/dlmb_bram_if_cntlr", + "value_src": "default" + }, + "KEEP_HIERARCHY": { + "value": "yes", + "value_src": "default" + } + } + }, + "microblaze_0_local_memory": { + "interface_ports": { + "DLMB": { + "mode": "MirroredMaster", + "vlnv": "xilinx.com:interface:lmb_rtl:1.0" + }, + "ILMB": { + "mode": "MirroredMaster", + "vlnv": "xilinx.com:interface:lmb_rtl:1.0" + } + }, + "ports": { + "LMB_Clk": { + "type": "clk", + "direction": "I" + }, + "SYS_Rst": { + "type": "rst", + "direction": "I" + } + }, + "components": { + "dlmb_v10": { + "vlnv": "xilinx.com:ip:lmb_v10:3.0", + "xci_name": "MicroBlaze_default_dlmb_v10_0" + }, + "ilmb_v10": { + "vlnv": "xilinx.com:ip:lmb_v10:3.0", + "xci_name": "MicroBlaze_default_ilmb_v10_0" + }, + "dlmb_bram_if_cntlr": { + "vlnv": "xilinx.com:ip:lmb_bram_if_cntlr:4.0", + "xci_name": "MicroBlaze_default_dlmb_bram_if_cntlr_0", + "parameters": { + "C_ECC": { + "value": "0" + } + }, + "hdl_attributes": { + "BMM_INFO_ADDRESS_SPACE": { + "value": "byte 0x00000000 32 > MicroBlaze_default microblaze_0_local_memory/lmb_bram", + "value_src": "default" + }, + "KEEP_HIERARCHY": { + "value": "yes", + "value_src": "default" + } + } + }, + "ilmb_bram_if_cntlr": { + "vlnv": "xilinx.com:ip:lmb_bram_if_cntlr:4.0", + "xci_name": "MicroBlaze_default_ilmb_bram_if_cntlr_0", + "parameters": { + "C_ECC": { + "value": "0" + } + } + }, + "lmb_bram": { + "vlnv": "xilinx.com:ip:blk_mem_gen:8.4", + "xci_name": "MicroBlaze_default_lmb_bram_0", + "parameters": { + "Memory_Type": { + "value": "True_Dual_Port_RAM" + }, + "use_bram_block": { + "value": "BRAM_Controller" + } + } + } + }, + "interface_nets": { + "microblaze_0_ilmb_bus": { + "interface_ports": [ + "ilmb_v10/LMB_Sl_0", + "ilmb_bram_if_cntlr/SLMB" + ] + }, + "microblaze_0_dlmb_bus": { + "interface_ports": [ + "dlmb_v10/LMB_Sl_0", + "dlmb_bram_if_cntlr/SLMB" + ] + }, + "microblaze_0_ilmb_cntlr": { + "interface_ports": [ + "ilmb_bram_if_cntlr/BRAM_PORT", + "lmb_bram/BRAM_PORTB" + ] + }, + "microblaze_0_dlmb_cntlr": { + "interface_ports": [ + "dlmb_bram_if_cntlr/BRAM_PORT", + "lmb_bram/BRAM_PORTA" + ] + }, + "microblaze_0_dlmb": { + "interface_ports": [ + "DLMB", + "dlmb_v10/LMB_M" + ] + }, + "microblaze_0_ilmb": { + "interface_ports": [ + "ILMB", + "ilmb_v10/LMB_M" + ] + } + }, + "nets": { + "microblaze_0_Clk": { + "ports": [ + "LMB_Clk", + "dlmb_v10/LMB_Clk", + "dlmb_bram_if_cntlr/LMB_Clk", + "ilmb_v10/LMB_Clk", + "ilmb_bram_if_cntlr/LMB_Clk" + ] + }, + "SYS_Rst_1": { + "ports": [ + "SYS_Rst", + "dlmb_v10/SYS_Rst", + "dlmb_bram_if_cntlr/LMB_Rst", + "ilmb_v10/SYS_Rst", + "ilmb_bram_if_cntlr/LMB_Rst" + ] + } + } + }, + "mdm_1": { + "vlnv": "xilinx.com:ip:mdm:3.2", + "xci_name": "MicroBlaze_default_mdm_1_0" + }, + "rst_clk_wiz_1_100M": { + "vlnv": "xilinx.com:ip:proc_sys_reset:5.0", + "xci_name": "MicroBlaze_default_rst_clk_wiz_1_100M_0" + }, + "axi_gpio_0": { + "vlnv": "xilinx.com:ip:axi_gpio:2.0", + "xci_name": "MicroBlaze_default_axi_gpio_0_0" + }, + "microblaze_0_axi_periph": { + "vlnv": "xilinx.com:ip:axi_interconnect:2.1", + "xci_name": "MicroBlaze_default_microblaze_0_axi_periph_0", + "parameters": { + "NUM_MI": { + "value": "1" + } + }, + "interface_ports": { + "S00_AXI": { + "mode": "Slave", + "vlnv": "xilinx.com:interface:aximm_rtl:1.0" + }, + "M00_AXI": { + "mode": "Master", + "vlnv": "xilinx.com:interface:aximm_rtl:1.0" + } + }, + "ports": { + "ACLK": { + "type": "clk", + "direction": "I", + "parameters": { + "ASSOCIATED_RESET": { + "value": "ARESETN" + } + } + }, + "ARESETN": { + "type": "rst", + "direction": "I" + }, + "S00_ACLK": { + "type": "clk", + "direction": "I", + "parameters": { + "ASSOCIATED_BUSIF": { + "value": "S00_AXI" + }, + "ASSOCIATED_RESET": { + "value": "S00_ARESETN" + } + } + }, + "S00_ARESETN": { + "type": "rst", + "direction": "I" + }, + "M00_ACLK": { + "type": "clk", + "direction": "I", + "parameters": { + "ASSOCIATED_BUSIF": { + "value": "M00_AXI" + }, + "ASSOCIATED_RESET": { + "value": "M00_ARESETN" + } + } + }, + "M00_ARESETN": { + "type": "rst", + "direction": "I" + } + }, + "components": { + "s00_couplers": { + "interface_ports": { + "M_AXI": { + "mode": "Master", + "vlnv": "xilinx.com:interface:aximm_rtl:1.0" + }, + "S_AXI": { + "mode": "Slave", + "vlnv": "xilinx.com:interface:aximm_rtl:1.0" + } + }, + "ports": { + "M_ACLK": { + "type": "clk", + "direction": "I", + "parameters": { + "ASSOCIATED_BUSIF": { + "value": "M_AXI" + }, + "ASSOCIATED_RESET": { + "value": "M_ARESETN" + } + } + }, + "M_ARESETN": { + "type": "rst", + "direction": "I" + }, + "S_ACLK": { + "type": "clk", + "direction": "I", + "parameters": { + "ASSOCIATED_BUSIF": { + "value": "S_AXI" + }, + "ASSOCIATED_RESET": { + "value": "S_ARESETN" + } + } + }, + "S_ARESETN": { + "type": "rst", + "direction": "I" + } + }, + "interface_nets": { + "s00_couplers_to_s00_couplers": { + "interface_ports": [ + "S_AXI", + "M_AXI" + ] + } + } + } + }, + "interface_nets": { + "microblaze_0_axi_periph_to_s00_couplers": { + "interface_ports": [ + "S00_AXI", + "s00_couplers/S_AXI" + ] + }, + "s00_couplers_to_microblaze_0_axi_periph": { + "interface_ports": [ + "M00_AXI", + "s00_couplers/M_AXI" + ] + } + }, + "nets": { + "microblaze_0_axi_periph_ACLK_net": { + "ports": [ + "M00_ACLK", + "s00_couplers/M_ACLK" + ] + }, + "microblaze_0_axi_periph_ARESETN_net": { + "ports": [ + "M00_ARESETN", + "s00_couplers/M_ARESETN" + ] + }, + "S00_ACLK_1": { + "ports": [ + "S00_ACLK", + "s00_couplers/S_ACLK" + ] + }, + "S00_ARESETN_1": { + "ports": [ + "S00_ARESETN", + "s00_couplers/S_ARESETN" + ] + } + } + } + }, + "interface_nets": { + "microblaze_0_M_AXI_DP": { + "interface_ports": [ + "microblaze_0/M_AXI_DP", + "microblaze_0_axi_periph/S00_AXI" + ] + }, + "microblaze_0_ilmb_1": { + "interface_ports": [ + "microblaze_0/ILMB", + "microblaze_0_local_memory/ILMB" + ] + }, + "microblaze_0_dlmb_1": { + "interface_ports": [ + "microblaze_0/DLMB", + "microblaze_0_local_memory/DLMB" + ] + }, + "microblaze_0_debug": { + "interface_ports": [ + "mdm_1/MBDEBUG_0", + "microblaze_0/DEBUG" + ] + }, + "microblaze_0_axi_periph_M00_AXI": { + "interface_ports": [ + "microblaze_0_axi_periph/M00_AXI", + "axi_gpio_0/S_AXI" + ] + }, + "axi_gpio_0_GPIO": { + "interface_ports": [ + "gpio_rtl_0", + "axi_gpio_0/GPIO" + ] + } + }, + "nets": { + "rst_clk_wiz_1_100M_mb_reset": { + "ports": [ + "rst_clk_wiz_1_100M/mb_reset", + "microblaze_0/Reset" + ] + }, + "rst_clk_wiz_1_100M_bus_struct_reset": { + "ports": [ + "rst_clk_wiz_1_100M/bus_struct_reset", + "microblaze_0_local_memory/SYS_Rst" + ] + }, + "mdm_1_debug_sys_rst": { + "ports": [ + "mdm_1/Debug_SYS_Rst", + "rst_clk_wiz_1_100M/mb_debug_sys_rst" + ] + }, + "cpu_clk": { + "ports": [ + "cpu_clk", + "microblaze_0/Clk", + "rst_clk_wiz_1_100M/slowest_sync_clk", + "microblaze_0_local_memory/LMB_Clk", + "microblaze_0_axi_periph/S00_ACLK", + "axi_gpio_0/s_axi_aclk", + "microblaze_0_axi_periph/M00_ACLK", + "microblaze_0_axi_periph/ACLK" + ] + }, + "cpu_rst_n": { + "ports": [ + "cpu_rst_n", + "rst_clk_wiz_1_100M/ext_reset_in", + "microblaze_0_axi_periph/S00_ARESETN", + "axi_gpio_0/s_axi_aresetn", + "microblaze_0_axi_periph/M00_ARESETN", + "microblaze_0_axi_periph/ARESETN" + ] + } + }, + "addressing": { + "/microblaze_0": { + "address_spaces": { + "Data": { + "range": "4G", + "width": "32", + "segments": { + "SEG_axi_gpio_0_Reg": { + "address_block": "/axi_gpio_0/S_AXI/Reg", + "offset": "0x40000000", + "range": "64K" + }, + "SEG_dlmb_bram_if_cntlr_Mem": { + "address_block": "/microblaze_0_local_memory/dlmb_bram_if_cntlr/SLMB/Mem", + "offset": "0x00000000", + "range": "16K" + } + } + }, + "Instruction": { + "range": "4G", + "width": "32", + "segments": { + "SEG_ilmb_bram_if_cntlr_Mem": { + "address_block": "/microblaze_0_local_memory/ilmb_bram_if_cntlr/SLMB/Mem", + "offset": "0x00000000", + "range": "16K" + } + } + } + } + } + } + } +} \ No newline at end of file diff --git a/lib/bd/xilinx/PCIe_Test.bd b/lib/bd/xilinx/PCIe_Test.bd new file mode 100644 index 0000000..8eff9a2 --- /dev/null +++ b/lib/bd/xilinx/PCIe_Test.bd @@ -0,0 +1,2261 @@ +{ + "design": { + "design_info": { + "boundary_crc": "0x499C68C943DC87C8", + "name": "PCIe_Test", + "synth_flow_mode": "Hierarchical", + "validated": "true" + }, + "design_tree": { + "processing_system7_0": "", + "axi_pcie_0": "", + "xlconstant_0": "", + "proc_sys_reset_0": "", + "proc_sys_reset_1": "", + "axi_cdma_0": "", + "xlconcat_0": "", + "axi_interconnect_0": { + "xbar": "", + "s00_couplers": {}, + "s01_couplers": {}, + "m00_couplers": { + "auto_ds": "", + "auto_pc": "" + } + }, + "axi_interconnect_1": { + "xbar": "", + "s00_couplers": { + "auto_pc": "", + "auto_us": "" + }, + "s01_couplers": {}, + "m00_couplers": {}, + "m01_couplers": { + "auto_cc": "", + "auto_ds": "", + "auto_pc": "" + }, + "m02_couplers": { + "auto_ds": "", + "auto_pc": "" + } + }, + "axi_interconnect_2": { + "xbar": "", + "s00_couplers": {}, + "m00_couplers": {}, + "m01_couplers": {} + } + }, + "interface_ports": { + "DDR": { + "mode": "Master", + "vlnv": "xilinx.com:interface:ddrx_rtl:1.0", + "parameters": { + "AXI_ARBITRATION_SCHEME": { + "value": "TDM", + "value_src": "default" + }, + "BURST_LENGTH": { + "value": "8", + "value_src": "default" + }, + "CAN_DEBUG": { + "value": "false", + "value_src": "default" + }, + "CAS_LATENCY": { + "value": "11", + "value_src": "default" + }, + "CAS_WRITE_LATENCY": { + "value": "11", + "value_src": "default" + }, + "CS_ENABLED": { + "value": "true", + "value_src": "default" + }, + "DATA_MASK_ENABLED": { + "value": "true", + "value_src": "default" + }, + "DATA_WIDTH": { + "value": "8", + "value_src": "default" + }, + "MEMORY_TYPE": { + "value": "COMPONENTS", + "value_src": "default" + }, + "MEM_ADDR_MAP": { + "value": "ROW_COLUMN_BANK", + "value_src": "default" + }, + "SLOT": { + "value": "Single", + "value_src": "default" + }, + "TIMEPERIOD_PS": { + "value": "1250", + "value_src": "default" + } + } + }, + "FIXED_IO": { + "mode": "Master", + "vlnv": "xilinx.com:display_processing_system7:fixedio_rtl:1.0", + "parameters": { + "CAN_DEBUG": { + "value": "false", + "value_src": "default" + } + } + }, + "pcie_7x_mgt": { + "mode": "Master", + "vlnv": "xilinx.com:interface:pcie_7x_mgt_rtl:1.0" + } + }, + "ports": { + "perst": { + "type": "rst", + "direction": "O", + "left": "0", + "right": "0", + "parameters": { + "INSERT_VIP": { + "value": "0", + "value_src": "default" + }, + "POLARITY": { + "value": "ACTIVE_HIGH", + "value_src": "const_prop" + } + } + } + }, + "components": { + "processing_system7_0": { + "vlnv": "xilinx.com:ip:processing_system7:5.5", + "xci_name": "zynq_default_processing_system7_0_0", + "parameters": { + "PCW_ACT_APU_PERIPHERAL_FREQMHZ": { + "value": "666.666687" + }, + "PCW_ACT_CAN_PERIPHERAL_FREQMHZ": { + "value": "10.000000" + }, + "PCW_ACT_DCI_PERIPHERAL_FREQMHZ": { + "value": "10.158730" + }, + "PCW_ACT_ENET0_PERIPHERAL_FREQMHZ": { + "value": "10.000000" + }, + "PCW_ACT_ENET1_PERIPHERAL_FREQMHZ": { + "value": "10.000000" + }, + "PCW_ACT_FPGA0_PERIPHERAL_FREQMHZ": { + "value": "100.000000" + }, + "PCW_ACT_FPGA1_PERIPHERAL_FREQMHZ": { + "value": "250.000000" + }, + "PCW_ACT_FPGA2_PERIPHERAL_FREQMHZ": { + "value": "10.000000" + }, + "PCW_ACT_FPGA3_PERIPHERAL_FREQMHZ": { + "value": "10.000000" + }, + "PCW_ACT_PCAP_PERIPHERAL_FREQMHZ": { + "value": "200.000000" + }, + "PCW_ACT_QSPI_PERIPHERAL_FREQMHZ": { + "value": "10.000000" + }, + "PCW_ACT_SDIO_PERIPHERAL_FREQMHZ": { + "value": "10.000000" + }, + "PCW_ACT_SMC_PERIPHERAL_FREQMHZ": { + "value": "10.000000" + }, + "PCW_ACT_SPI_PERIPHERAL_FREQMHZ": { + "value": "10.000000" + }, + "PCW_ACT_TPIU_PERIPHERAL_FREQMHZ": { + "value": "200.000000" + }, + "PCW_ACT_TTC0_CLK0_PERIPHERAL_FREQMHZ": { + "value": "111.111115" + }, + "PCW_ACT_TTC0_CLK1_PERIPHERAL_FREQMHZ": { + "value": "111.111115" + }, + "PCW_ACT_TTC0_CLK2_PERIPHERAL_FREQMHZ": { + "value": "111.111115" + }, + "PCW_ACT_TTC1_CLK0_PERIPHERAL_FREQMHZ": { + "value": "111.111115" + }, + "PCW_ACT_TTC1_CLK1_PERIPHERAL_FREQMHZ": { + "value": "111.111115" + }, + "PCW_ACT_TTC1_CLK2_PERIPHERAL_FREQMHZ": { + "value": "111.111115" + }, + "PCW_ACT_UART_PERIPHERAL_FREQMHZ": { + "value": "100.000000" + }, + "PCW_ACT_WDT_PERIPHERAL_FREQMHZ": { + "value": "111.111115" + }, + "PCW_CLK0_FREQ": { + "value": "100000000" + }, + "PCW_CLK1_FREQ": { + "value": "250000000" + }, + "PCW_CLK2_FREQ": { + "value": "10000000" + }, + "PCW_CLK3_FREQ": { + "value": "10000000" + }, + "PCW_DDR_RAM_HIGHADDR": { + "value": "0x3FFFFFFF" + }, + "PCW_ENET0_PERIPHERAL_CLKSRC": { + "value": "IO PLL" + }, + "PCW_ENET0_PERIPHERAL_ENABLE": { + "value": "0" + }, + "PCW_EN_CLK0_PORT": { + "value": "1" + }, + "PCW_EN_CLK1_PORT": { + "value": "1" + }, + "PCW_EN_CLKTRIG0_PORT": { + "value": "0" + }, + "PCW_EN_EMIO_ENET0": { + "value": "0" + }, + "PCW_EN_EMIO_GPIO": { + "value": "0" + }, + "PCW_EN_EMIO_UART0": { + "value": "0" + }, + "PCW_EN_ENET0": { + "value": "0" + }, + "PCW_EN_QSPI": { + "value": "0" + }, + "PCW_EN_RST0_PORT": { + "value": "1" + }, + "PCW_EN_SDIO0": { + "value": "0" + }, + "PCW_EN_UART0": { + "value": "1" + }, + "PCW_EN_UART1": { + "value": "0" + }, + "PCW_FCLK_CLK0_BUF": { + "value": "FALSE" + }, + "PCW_FCLK_CLK1_BUF": { + "value": "TRUE" + }, + "PCW_FPGA0_PERIPHERAL_FREQMHZ": { + "value": "100" + }, + "PCW_FPGA1_PERIPHERAL_FREQMHZ": { + "value": "250" + }, + "PCW_FPGA_FCLK0_ENABLE": { + "value": "1" + }, + "PCW_FPGA_FCLK1_ENABLE": { + "value": "1" + }, + "PCW_GPIO_EMIO_GPIO_ENABLE": { + "value": "0" + }, + "PCW_IRQ_F2P_INTR": { + "value": "1" + }, + "PCW_MIO_14_IOTYPE": { + "value": "LVCMOS 3.3V" + }, + "PCW_MIO_14_PULLUP": { + "value": "enabled" + }, + "PCW_MIO_14_SLEW": { + "value": "slow" + }, + "PCW_MIO_15_IOTYPE": { + "value": "LVCMOS 3.3V" + }, + "PCW_MIO_15_PULLUP": { + "value": "enabled" + }, + "PCW_MIO_15_SLEW": { + "value": "slow" + }, + "PCW_MIO_TREE_PERIPHERALS": { + "value": "unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#UART 0#UART 0#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned" + }, + "PCW_MIO_TREE_SIGNALS": { + "value": "unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#rx#tx#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned" + }, + "PCW_NAND_PERIPHERAL_ENABLE": { + "value": "0" + }, + "PCW_NOR_PERIPHERAL_ENABLE": { + "value": "0" + }, + "PCW_PRESET_BANK1_VOLTAGE": { + "value": "LVCMOS 1.8V" + }, + "PCW_QSPI_PERIPHERAL_ENABLE": { + "value": "0" + }, + "PCW_SD0_PERIPHERAL_ENABLE": { + "value": "0" + }, + "PCW_SDIO_PERIPHERAL_VALID": { + "value": "0" + }, + "PCW_UART0_GRP_FULL_ENABLE": { + "value": "0" + }, + "PCW_UART0_PERIPHERAL_ENABLE": { + "value": "1" + }, + "PCW_UART0_UART0_IO": { + "value": "MIO 14 .. 15" + }, + "PCW_UART1_PERIPHERAL_ENABLE": { + "value": "0" + }, + "PCW_UART_PERIPHERAL_FREQMHZ": { + "value": "100" + }, + "PCW_UART_PERIPHERAL_VALID": { + "value": "1" + }, + "PCW_UIPARAM_ACT_DDR_FREQ_MHZ": { + "value": "533.333374" + }, + "PCW_UIPARAM_DDR_PARTNO": { + "value": "MT41J256M16 RE-125" + }, + "PCW_USE_FABRIC_INTERRUPT": { + "value": "1" + }, + "PCW_USE_M_AXI_GP0": { + "value": "1" + }, + "PCW_USE_S_AXI_HP0": { + "value": "1" + } + } + }, + "axi_pcie_0": { + "vlnv": "xilinx.com:ip:axi_pcie:2.9", + "xci_name": "zynq_default_axi_pcie_0_0", + "parameters": { + "BAR0_SCALE": { + "value": "Gigabytes" + }, + "BAR0_SIZE": { + "value": "1" + }, + "BASEADDR": { + "value": "0x00000000" + }, + "BASE_CLASS_MENU": { + "value": "Bridge_device" + }, + "CLASS_CODE": { + "value": "0x060400" + }, + "DEVICE_ID": { + "value": "0x7124" + }, + "HIGHADDR": { + "value": "0x001FFFFF" + }, + "INCLUDE_RC": { + "value": "Root_Port_of_PCI_Express_Root_Complex" + }, + "MAX_LINK_SPEED": { + "value": "5.0_GT/s" + }, + "M_AXI_DATA_WIDTH": { + "value": "128" + }, + "NO_OF_LANES": { + "value": "X4" + }, + "REF_CLK_FREQ": { + "value": "100_MHz" + }, + "SLOT_CLOCK_CONFIG": { + "value": "false" + }, + "SUB_CLASS_INTERFACE_MENU": { + "value": "InfiniBand_to_PCI_host_bridge" + }, + "S_AXI_DATA_WIDTH": { + "value": "128" + } + } + }, + "xlconstant_0": { + "vlnv": "xilinx.com:ip:xlconstant:1.1", + "xci_name": "zynq_default_xlconstant_0_0", + "parameters": { + "CONST_VAL": { + "value": "0" + } + } + }, + "proc_sys_reset_0": { + "vlnv": "xilinx.com:ip:proc_sys_reset:5.0", + "xci_name": "zynq_default_proc_sys_reset_0_0" + }, + "proc_sys_reset_1": { + "vlnv": "xilinx.com:ip:proc_sys_reset:5.0", + "xci_name": "zynq_default_proc_sys_reset_0_1" + }, + "axi_cdma_0": { + "vlnv": "xilinx.com:ip:axi_cdma:4.1", + "xci_name": "zynq_default_axi_cdma_0_0", + "parameters": { + "C_INCLUDE_DRE": { + "value": "0" + }, + "C_INCLUDE_SF": { + "value": "0" + }, + "C_INCLUDE_SG": { + "value": "0" + }, + "C_M_AXI_DATA_WIDTH": { + "value": "128" + }, + "C_M_AXI_MAX_BURST_LEN": { + "value": "4" + }, + "C_USE_DATAMOVER_LITE": { + "value": "0" + } + } + }, + "xlconcat_0": { + "vlnv": "xilinx.com:ip:xlconcat:2.1", + "xci_name": "zynq_default_xlconcat_0_0" + }, + "axi_interconnect_0": { + "vlnv": "xilinx.com:ip:axi_interconnect:2.1", + "xci_name": "zynq_default_axi_interconnect_0_0", + "parameters": { + "NUM_MI": { + "value": "1" + }, + "NUM_SI": { + "value": "2" + } + }, + "interface_ports": { + "S00_AXI": { + "mode": "Slave", + "vlnv": "xilinx.com:interface:aximm_rtl:1.0" + }, + "M00_AXI": { + "mode": "Master", + "vlnv": "xilinx.com:interface:aximm_rtl:1.0" + }, + "S01_AXI": { + "mode": "Slave", + "vlnv": "xilinx.com:interface:aximm_rtl:1.0" + } + }, + "ports": { + "ACLK": { + "type": "clk", + "direction": "I", + "parameters": { + "ASSOCIATED_RESET": { + "value": "ARESETN" + } + } + }, + "ARESETN": { + "type": "rst", + "direction": "I" + }, + "S00_ACLK": { + "type": "clk", + "direction": "I", + "parameters": { + "ASSOCIATED_BUSIF": { + "value": "S00_AXI" + }, + "ASSOCIATED_RESET": { + "value": "S00_ARESETN" + } + } + }, + "S00_ARESETN": { + "type": "rst", + "direction": "I" + }, + "M00_ACLK": { + "type": "clk", + "direction": "I", + "parameters": { + "ASSOCIATED_BUSIF": { + "value": "M00_AXI" + }, + "ASSOCIATED_RESET": { + "value": "M00_ARESETN" + } + } + }, + "M00_ARESETN": { + "type": "rst", + "direction": "I" + }, + "S01_ACLK": { + "type": "clk", + "direction": "I", + "parameters": { + "ASSOCIATED_BUSIF": { + "value": "S01_AXI" + }, + "ASSOCIATED_RESET": { + "value": "S01_ARESETN" + } + } + }, + "S01_ARESETN": { + "type": "rst", + "direction": "I" + } + }, + "components": { + "xbar": { + "vlnv": "xilinx.com:ip:axi_crossbar:2.1", + "xci_name": "zynq_default_xbar_0", + "parameters": { + "NUM_MI": { + "value": "1" + }, + "NUM_SI": { + "value": "2" + }, + "STRATEGY": { + "value": "0" + } + } + }, + "s00_couplers": { + "interface_ports": { + "M_AXI": { + "mode": "Master", + "vlnv": "xilinx.com:interface:aximm_rtl:1.0" + }, + "S_AXI": { + "mode": "Slave", + "vlnv": "xilinx.com:interface:aximm_rtl:1.0" + } + }, + "ports": { + "M_ACLK": { + "type": "clk", + "direction": "I", + "parameters": { + "ASSOCIATED_BUSIF": { + "value": "M_AXI" + }, + "ASSOCIATED_RESET": { + "value": "M_ARESETN" + } + } + }, + "M_ARESETN": { + "type": "rst", + "direction": "I" + }, + "S_ACLK": { + "type": "clk", + "direction": "I", + "parameters": { + "ASSOCIATED_BUSIF": { + "value": "S_AXI" + }, + "ASSOCIATED_RESET": { + "value": "S_ARESETN" + } + } + }, + "S_ARESETN": { + "type": "rst", + "direction": "I" + } + }, + "interface_nets": { + "s00_couplers_to_s00_couplers": { + "interface_ports": [ + "S_AXI", + "M_AXI" + ] + } + } + }, + "s01_couplers": { + "interface_ports": { + "M_AXI": { + "mode": "Master", + "vlnv": "xilinx.com:interface:aximm_rtl:1.0" + }, + "S_AXI": { + "mode": "Slave", + "vlnv": "xilinx.com:interface:aximm_rtl:1.0" + } + }, + "ports": { + "M_ACLK": { + "type": "clk", + "direction": "I", + "parameters": { + "ASSOCIATED_BUSIF": { + "value": "M_AXI" + }, + "ASSOCIATED_RESET": { + "value": "M_ARESETN" + } + } + }, + "M_ARESETN": { + "type": "rst", + "direction": "I" + }, + "S_ACLK": { + "type": "clk", + "direction": "I", + "parameters": { + "ASSOCIATED_BUSIF": { + "value": "S_AXI" + }, + "ASSOCIATED_RESET": { + "value": "S_ARESETN" + } + } + }, + "S_ARESETN": { + "type": "rst", + "direction": "I" + } + }, + "interface_nets": { + "s01_couplers_to_s01_couplers": { + "interface_ports": [ + "S_AXI", + "M_AXI" + ] + } + } + }, + "m00_couplers": { + "interface_ports": { + "M_AXI": { + "mode": "Master", + "vlnv": "xilinx.com:interface:aximm_rtl:1.0" + }, + "S_AXI": { + "mode": "Slave", + "vlnv": "xilinx.com:interface:aximm_rtl:1.0" + } + }, + "ports": { + "M_ACLK": { + "type": "clk", + "direction": "I", + "parameters": { + "ASSOCIATED_BUSIF": { + "value": "M_AXI" + }, + "ASSOCIATED_RESET": { + "value": "M_ARESETN" + } + } + }, + "M_ARESETN": { + "type": "rst", + "direction": "I" + }, + "S_ACLK": { + "type": "clk", + "direction": "I", + "parameters": { + "ASSOCIATED_BUSIF": { + "value": "S_AXI" + }, + "ASSOCIATED_RESET": { + "value": "S_ARESETN" + } + } + }, + "S_ARESETN": { + "type": "rst", + "direction": "I" + } + }, + "components": { + "auto_ds": { + "vlnv": "xilinx.com:ip:axi_dwidth_converter:2.1", + "xci_name": "zynq_default_auto_ds_0", + "parameters": { + "MAX_SPLIT_BEATS": { + "value": "16" + }, + "MI_DATA_WIDTH": { + "value": "64" + }, + "SI_DATA_WIDTH": { + "value": "128" + } + } + }, + "auto_pc": { + "vlnv": "xilinx.com:ip:axi_protocol_converter:2.1", + "xci_name": "zynq_default_auto_pc_0", + "parameters": { + "MI_PROTOCOL": { + "value": "AXI3" + }, + "SI_PROTOCOL": { + "value": "AXI4" + }, + "TRANSLATION_MODE": { + "value": "0" + } + } + } + }, + "interface_nets": { + "m00_couplers_to_auto_ds": { + "interface_ports": [ + "S_AXI", + "auto_ds/S_AXI" + ] + }, + "auto_ds_to_auto_pc": { + "interface_ports": [ + "auto_ds/M_AXI", + "auto_pc/S_AXI" + ] + }, + "auto_pc_to_m00_couplers": { + "interface_ports": [ + "M_AXI", + "auto_pc/M_AXI" + ] + } + }, + "nets": { + "S_ACLK_1": { + "ports": [ + "S_ACLK", + "auto_ds/s_axi_aclk", + "auto_pc/aclk" + ] + }, + "S_ARESETN_1": { + "ports": [ + "S_ARESETN", + "auto_ds/s_axi_aresetn", + "auto_pc/aresetn" + ] + } + } + } + }, + "interface_nets": { + "xbar_to_m00_couplers": { + "interface_ports": [ + "xbar/M00_AXI", + "m00_couplers/S_AXI" + ] + }, + "axi_interconnect_0_to_s00_couplers": { + "interface_ports": [ + "S00_AXI", + "s00_couplers/S_AXI" + ] + }, + "s00_couplers_to_xbar": { + "interface_ports": [ + "s00_couplers/M_AXI", + "xbar/S00_AXI" + ] + }, + "axi_interconnect_0_to_s01_couplers": { + "interface_ports": [ + "S01_AXI", + "s01_couplers/S_AXI" + ] + }, + "s01_couplers_to_xbar": { + "interface_ports": [ + "s01_couplers/M_AXI", + "xbar/S01_AXI" + ] + }, + "m00_couplers_to_axi_interconnect_0": { + "interface_ports": [ + "M00_AXI", + "m00_couplers/M_AXI" + ] + } + }, + "nets": { + "axi_interconnect_0_ACLK_net": { + "ports": [ + "ACLK", + "xbar/aclk", + "s00_couplers/M_ACLK", + "s01_couplers/M_ACLK", + "m00_couplers/S_ACLK" + ] + }, + "axi_interconnect_0_ARESETN_net": { + "ports": [ + "ARESETN", + "xbar/aresetn", + "s00_couplers/M_ARESETN", + "s01_couplers/M_ARESETN", + "m00_couplers/S_ARESETN" + ] + }, + "S00_ACLK_1": { + "ports": [ + "S00_ACLK", + "s00_couplers/S_ACLK" + ] + }, + "S00_ARESETN_1": { + "ports": [ + "S00_ARESETN", + "s00_couplers/S_ARESETN" + ] + }, + "S01_ACLK_1": { + "ports": [ + "S01_ACLK", + "s01_couplers/S_ACLK" + ] + }, + "S01_ARESETN_1": { + "ports": [ + "S01_ARESETN", + "s01_couplers/S_ARESETN" + ] + }, + "M00_ACLK_1": { + "ports": [ + "M00_ACLK", + "m00_couplers/M_ACLK" + ] + }, + "M00_ARESETN_1": { + "ports": [ + "M00_ARESETN", + "m00_couplers/M_ARESETN" + ] + } + } + }, + "axi_interconnect_1": { + "vlnv": "xilinx.com:ip:axi_interconnect:2.1", + "xci_name": "zynq_default_axi_interconnect_0_1", + "parameters": { + "NUM_MI": { + "value": "3" + }, + "NUM_SI": { + "value": "2" + } + }, + "interface_ports": { + "S00_AXI": { + "mode": "Slave", + "vlnv": "xilinx.com:interface:aximm_rtl:1.0" + }, + "M00_AXI": { + "mode": "Master", + "vlnv": "xilinx.com:interface:aximm_rtl:1.0" + }, + "S01_AXI": { + "mode": "Slave", + "vlnv": "xilinx.com:interface:aximm_rtl:1.0" + }, + "M01_AXI": { + "mode": "Master", + "vlnv": "xilinx.com:interface:aximm_rtl:1.0" + }, + "M02_AXI": { + "mode": "Master", + "vlnv": "xilinx.com:interface:aximm_rtl:1.0" + } + }, + "ports": { + "ACLK": { + "type": "clk", + "direction": "I", + "parameters": { + "ASSOCIATED_RESET": { + "value": "ARESETN" + } + } + }, + "ARESETN": { + "type": "rst", + "direction": "I" + }, + "S00_ACLK": { + "type": "clk", + "direction": "I", + "parameters": { + "ASSOCIATED_BUSIF": { + "value": "S00_AXI" + }, + "ASSOCIATED_RESET": { + "value": "S00_ARESETN" + } + } + }, + "S00_ARESETN": { + "type": "rst", + "direction": "I" + }, + "M00_ACLK": { + "type": "clk", + "direction": "I", + "parameters": { + "ASSOCIATED_BUSIF": { + "value": "M00_AXI" + }, + "ASSOCIATED_RESET": { + "value": "M00_ARESETN" + } + } + }, + "M00_ARESETN": { + "type": "rst", + "direction": "I" + }, + "S01_ACLK": { + "type": "clk", + "direction": "I", + "parameters": { + "ASSOCIATED_BUSIF": { + "value": "S01_AXI" + }, + "ASSOCIATED_RESET": { + "value": "S01_ARESETN" + } + } + }, + "S01_ARESETN": { + "type": "rst", + "direction": "I" + }, + "M01_ACLK": { + "type": "clk", + "direction": "I", + "parameters": { + "ASSOCIATED_BUSIF": { + "value": "M01_AXI" + }, + "ASSOCIATED_RESET": { + "value": "M01_ARESETN" + } + } + }, + "M01_ARESETN": { + "type": "rst", + "direction": "I" + }, + "M02_ACLK": { + "type": "clk", + "direction": "I", + "parameters": { + "ASSOCIATED_BUSIF": { + "value": "M02_AXI" + }, + "ASSOCIATED_RESET": { + "value": "M02_ARESETN" + } + } + }, + "M02_ARESETN": { + "type": "rst", + "direction": "I" + } + }, + "components": { + "xbar": { + "vlnv": "xilinx.com:ip:axi_crossbar:2.1", + "xci_name": "zynq_default_xbar_1", + "parameters": { + "NUM_MI": { + "value": "3" + }, + "NUM_SI": { + "value": "2" + }, + "STRATEGY": { + "value": "0" + } + } + }, + "s00_couplers": { + "interface_ports": { + "M_AXI": { + "mode": "Master", + "vlnv": "xilinx.com:interface:aximm_rtl:1.0" + }, + "S_AXI": { + "mode": "Slave", + "vlnv": "xilinx.com:interface:aximm_rtl:1.0" + } + }, + "ports": { + "M_ACLK": { + "type": "clk", + "direction": "I", + "parameters": { + "ASSOCIATED_BUSIF": { + "value": "M_AXI" + }, + "ASSOCIATED_RESET": { + "value": "M_ARESETN" + } + } + }, + "M_ARESETN": { + "type": "rst", + "direction": "I" + }, + "S_ACLK": { + "type": "clk", + "direction": "I", + "parameters": { + "ASSOCIATED_BUSIF": { + "value": "S_AXI" + }, + "ASSOCIATED_RESET": { + "value": "S_ARESETN" + } + } + }, + "S_ARESETN": { + "type": "rst", + "direction": "I" + } + }, + "components": { + "auto_pc": { + "vlnv": "xilinx.com:ip:axi_protocol_converter:2.1", + "xci_name": "zynq_default_auto_pc_3", + "parameters": { + "MI_PROTOCOL": { + "value": "AXI4" + }, + "SI_PROTOCOL": { + "value": "AXI3" + } + } + }, + "auto_us": { + "vlnv": "xilinx.com:ip:axi_dwidth_converter:2.1", + "xci_name": "zynq_default_auto_us_0", + "parameters": { + "MI_DATA_WIDTH": { + "value": "128" + }, + "SI_DATA_WIDTH": { + "value": "32" + } + } + } + }, + "interface_nets": { + "auto_pc_to_auto_us": { + "interface_ports": [ + "auto_pc/M_AXI", + "auto_us/S_AXI" + ] + }, + "auto_us_to_s00_couplers": { + "interface_ports": [ + "M_AXI", + "auto_us/M_AXI" + ] + }, + "s00_couplers_to_auto_pc": { + "interface_ports": [ + "S_AXI", + "auto_pc/S_AXI" + ] + } + }, + "nets": { + "S_ACLK_1": { + "ports": [ + "S_ACLK", + "auto_pc/aclk", + "auto_us/s_axi_aclk" + ] + }, + "S_ARESETN_1": { + "ports": [ + "S_ARESETN", + "auto_pc/aresetn", + "auto_us/s_axi_aresetn" + ] + } + } + }, + "s01_couplers": { + "interface_ports": { + "M_AXI": { + "mode": "Master", + "vlnv": "xilinx.com:interface:aximm_rtl:1.0" + }, + "S_AXI": { + "mode": "Slave", + "vlnv": "xilinx.com:interface:aximm_rtl:1.0" + } + }, + "ports": { + "M_ACLK": { + "type": "clk", + "direction": "I", + "parameters": { + "ASSOCIATED_BUSIF": { + "value": "M_AXI" + }, + "ASSOCIATED_RESET": { + "value": "M_ARESETN" + } + } + }, + "M_ARESETN": { + "type": "rst", + "direction": "I" + }, + "S_ACLK": { + "type": "clk", + "direction": "I", + "parameters": { + "ASSOCIATED_BUSIF": { + "value": "S_AXI" + }, + "ASSOCIATED_RESET": { + "value": "S_ARESETN" + } + } + }, + "S_ARESETN": { + "type": "rst", + "direction": "I" + } + }, + "interface_nets": { + "s01_couplers_to_s01_couplers": { + "interface_ports": [ + "S_AXI", + "M_AXI" + ] + } + } + }, + "m00_couplers": { + "interface_ports": { + "M_AXI": { + "mode": "Master", + "vlnv": "xilinx.com:interface:aximm_rtl:1.0" + }, + "S_AXI": { + "mode": "Slave", + "vlnv": "xilinx.com:interface:aximm_rtl:1.0" + } + }, + "ports": { + "M_ACLK": { + "type": "clk", + "direction": "I", + "parameters": { + "ASSOCIATED_BUSIF": { + "value": "M_AXI" + }, + "ASSOCIATED_RESET": { + "value": "M_ARESETN" + } + } + }, + "M_ARESETN": { + "type": "rst", + "direction": "I" + }, + "S_ACLK": { + "type": "clk", + "direction": "I", + "parameters": { + "ASSOCIATED_BUSIF": { + "value": "S_AXI" + }, + "ASSOCIATED_RESET": { + "value": "S_ARESETN" + } + } + }, + "S_ARESETN": { + "type": "rst", + "direction": "I" + } + }, + "interface_nets": { + "m00_couplers_to_m00_couplers": { + "interface_ports": [ + "S_AXI", + "M_AXI" + ] + } + } + }, + "m01_couplers": { + "interface_ports": { + "M_AXI": { + "mode": "Master", + "vlnv": "xilinx.com:interface:aximm_rtl:1.0" + }, + "S_AXI": { + "mode": "Slave", + "vlnv": "xilinx.com:interface:aximm_rtl:1.0" + } + }, + "ports": { + "M_ACLK": { + "type": "clk", + "direction": "I", + "parameters": { + "ASSOCIATED_BUSIF": { + "value": "M_AXI" + }, + "ASSOCIATED_RESET": { + "value": "M_ARESETN" + } + } + }, + "M_ARESETN": { + "type": "rst", + "direction": "I" + }, + "S_ACLK": { + "type": "clk", + "direction": "I", + "parameters": { + "ASSOCIATED_BUSIF": { + "value": "S_AXI" + }, + "ASSOCIATED_RESET": { + "value": "S_ARESETN" + } + } + }, + "S_ARESETN": { + "type": "rst", + "direction": "I" + } + }, + "components": { + "auto_cc": { + "vlnv": "xilinx.com:ip:axi_clock_converter:2.1", + "xci_name": "zynq_default_auto_cc_0" + }, + "auto_ds": { + "vlnv": "xilinx.com:ip:axi_dwidth_converter:2.1", + "xci_name": "zynq_default_auto_ds_1", + "parameters": { + "MI_DATA_WIDTH": { + "value": "32" + }, + "SI_DATA_WIDTH": { + "value": "128" + } + } + }, + "auto_pc": { + "vlnv": "xilinx.com:ip:axi_protocol_converter:2.1", + "xci_name": "zynq_default_auto_pc_1", + "parameters": { + "MI_PROTOCOL": { + "value": "AXI4LITE" + }, + "SI_PROTOCOL": { + "value": "AXI4" + } + } + } + }, + "interface_nets": { + "m01_couplers_to_auto_cc": { + "interface_ports": [ + "S_AXI", + "auto_cc/S_AXI" + ] + }, + "auto_cc_to_auto_ds": { + "interface_ports": [ + "auto_cc/M_AXI", + "auto_ds/S_AXI" + ] + }, + "auto_pc_to_m01_couplers": { + "interface_ports": [ + "M_AXI", + "auto_pc/M_AXI" + ] + }, + "auto_ds_to_auto_pc": { + "interface_ports": [ + "auto_ds/M_AXI", + "auto_pc/S_AXI" + ] + } + }, + "nets": { + "M_ACLK_1": { + "ports": [ + "M_ACLK", + "auto_cc/m_axi_aclk", + "auto_ds/s_axi_aclk", + "auto_pc/aclk" + ] + }, + "S_ACLK_1": { + "ports": [ + "S_ACLK", + "auto_cc/s_axi_aclk" + ] + }, + "M_ARESETN_1": { + "ports": [ + "M_ARESETN", + "auto_cc/m_axi_aresetn", + "auto_ds/s_axi_aresetn", + "auto_pc/aresetn" + ] + }, + "S_ARESETN_1": { + "ports": [ + "S_ARESETN", + "auto_cc/s_axi_aresetn" + ] + } + } + }, + "m02_couplers": { + "interface_ports": { + "M_AXI": { + "mode": "Master", + "vlnv": "xilinx.com:interface:aximm_rtl:1.0" + }, + "S_AXI": { + "mode": "Slave", + "vlnv": "xilinx.com:interface:aximm_rtl:1.0" + } + }, + "ports": { + "M_ACLK": { + "type": "clk", + "direction": "I", + "parameters": { + "ASSOCIATED_BUSIF": { + "value": "M_AXI" + }, + "ASSOCIATED_RESET": { + "value": "M_ARESETN" + } + } + }, + "M_ARESETN": { + "type": "rst", + "direction": "I" + }, + "S_ACLK": { + "type": "clk", + "direction": "I", + "parameters": { + "ASSOCIATED_BUSIF": { + "value": "S_AXI" + }, + "ASSOCIATED_RESET": { + "value": "S_ARESETN" + } + } + }, + "S_ARESETN": { + "type": "rst", + "direction": "I" + } + }, + "components": { + "auto_ds": { + "vlnv": "xilinx.com:ip:axi_dwidth_converter:2.1", + "xci_name": "zynq_default_auto_ds_2", + "parameters": { + "MI_DATA_WIDTH": { + "value": "32" + }, + "SI_DATA_WIDTH": { + "value": "128" + } + } + }, + "auto_pc": { + "vlnv": "xilinx.com:ip:axi_protocol_converter:2.1", + "xci_name": "zynq_default_auto_pc_2", + "parameters": { + "MI_PROTOCOL": { + "value": "AXI4LITE" + }, + "SI_PROTOCOL": { + "value": "AXI4" + } + } + } + }, + "interface_nets": { + "m02_couplers_to_auto_ds": { + "interface_ports": [ + "S_AXI", + "auto_ds/S_AXI" + ] + }, + "auto_ds_to_auto_pc": { + "interface_ports": [ + "auto_ds/M_AXI", + "auto_pc/S_AXI" + ] + }, + "auto_pc_to_m02_couplers": { + "interface_ports": [ + "M_AXI", + "auto_pc/M_AXI" + ] + } + }, + "nets": { + "S_ACLK_1": { + "ports": [ + "S_ACLK", + "auto_ds/s_axi_aclk", + "auto_pc/aclk" + ] + }, + "S_ARESETN_1": { + "ports": [ + "S_ARESETN", + "auto_ds/s_axi_aresetn", + "auto_pc/aresetn" + ] + } + } + } + }, + "interface_nets": { + "s01_couplers_to_xbar": { + "interface_ports": [ + "s01_couplers/M_AXI", + "xbar/S01_AXI" + ] + }, + "m00_couplers_to_axi_interconnect_1": { + "interface_ports": [ + "M00_AXI", + "m00_couplers/M_AXI" + ] + }, + "s00_couplers_to_xbar": { + "interface_ports": [ + "s00_couplers/M_AXI", + "xbar/S00_AXI" + ] + }, + "axi_interconnect_1_to_s01_couplers": { + "interface_ports": [ + "S01_AXI", + "s01_couplers/S_AXI" + ] + }, + "axi_interconnect_1_to_s00_couplers": { + "interface_ports": [ + "S00_AXI", + "s00_couplers/S_AXI" + ] + }, + "xbar_to_m00_couplers": { + "interface_ports": [ + "xbar/M00_AXI", + "m00_couplers/S_AXI" + ] + }, + "m01_couplers_to_axi_interconnect_1": { + "interface_ports": [ + "M01_AXI", + "m01_couplers/M_AXI" + ] + }, + "m02_couplers_to_axi_interconnect_1": { + "interface_ports": [ + "M02_AXI", + "m02_couplers/M_AXI" + ] + }, + "xbar_to_m01_couplers": { + "interface_ports": [ + "xbar/M01_AXI", + "m01_couplers/S_AXI" + ] + }, + "xbar_to_m02_couplers": { + "interface_ports": [ + "xbar/M02_AXI", + "m02_couplers/S_AXI" + ] + } + }, + "nets": { + "axi_interconnect_1_ACLK_net": { + "ports": [ + "ACLK", + "xbar/aclk", + "s00_couplers/M_ACLK", + "s01_couplers/M_ACLK", + "m00_couplers/S_ACLK", + "m01_couplers/S_ACLK", + "m02_couplers/S_ACLK" + ] + }, + "axi_interconnect_1_ARESETN_net": { + "ports": [ + "ARESETN", + "xbar/aresetn", + "s00_couplers/M_ARESETN", + "s01_couplers/M_ARESETN", + "m00_couplers/S_ARESETN", + "m01_couplers/S_ARESETN", + "m02_couplers/S_ARESETN" + ] + }, + "S00_ACLK_1": { + "ports": [ + "S00_ACLK", + "s00_couplers/S_ACLK" + ] + }, + "S00_ARESETN_1": { + "ports": [ + "S00_ARESETN", + "s00_couplers/S_ARESETN" + ] + }, + "S01_ACLK_1": { + "ports": [ + "S01_ACLK", + "s01_couplers/S_ACLK" + ] + }, + "S01_ARESETN_1": { + "ports": [ + "S01_ARESETN", + "s01_couplers/S_ARESETN" + ] + }, + "M00_ACLK_1": { + "ports": [ + "M00_ACLK", + "m00_couplers/M_ACLK" + ] + }, + "M00_ARESETN_1": { + "ports": [ + "M00_ARESETN", + "m00_couplers/M_ARESETN" + ] + }, + "M01_ACLK_1": { + "ports": [ + "M01_ACLK", + "m01_couplers/M_ACLK" + ] + }, + "M01_ARESETN_1": { + "ports": [ + "M01_ARESETN", + "m01_couplers/M_ARESETN" + ] + }, + "M02_ACLK_1": { + "ports": [ + "M02_ACLK", + "m02_couplers/M_ACLK" + ] + }, + "M02_ARESETN_1": { + "ports": [ + "M02_ARESETN", + "m02_couplers/M_ARESETN" + ] + } + } + }, + "axi_interconnect_2": { + "vlnv": "xilinx.com:ip:axi_interconnect:2.1", + "xci_name": "zynq_default_axi_interconnect_1_0", + "parameters": { + "NUM_MI": { + "value": "2" + }, + "NUM_SI": { + "value": "1" + } + }, + "interface_ports": { + "S00_AXI": { + "mode": "Slave", + "vlnv": "xilinx.com:interface:aximm_rtl:1.0" + }, + "M00_AXI": { + "mode": "Master", + "vlnv": "xilinx.com:interface:aximm_rtl:1.0" + }, + "M01_AXI": { + "mode": "Master", + "vlnv": "xilinx.com:interface:aximm_rtl:1.0" + } + }, + "ports": { + "ACLK": { + "type": "clk", + "direction": "I", + "parameters": { + "ASSOCIATED_RESET": { + "value": "ARESETN" + } + } + }, + "ARESETN": { + "type": "rst", + "direction": "I" + }, + "S00_ACLK": { + "type": "clk", + "direction": "I", + "parameters": { + "ASSOCIATED_BUSIF": { + "value": "S00_AXI" + }, + "ASSOCIATED_RESET": { + "value": "S00_ARESETN" + } + } + }, + "S00_ARESETN": { + "type": "rst", + "direction": "I" + }, + "M00_ACLK": { + "type": "clk", + "direction": "I", + "parameters": { + "ASSOCIATED_BUSIF": { + "value": "M00_AXI" + }, + "ASSOCIATED_RESET": { + "value": "M00_ARESETN" + } + } + }, + "M00_ARESETN": { + "type": "rst", + "direction": "I" + }, + "M01_ACLK": { + "type": "clk", + "direction": "I", + "parameters": { + "ASSOCIATED_BUSIF": { + "value": "M01_AXI" + }, + "ASSOCIATED_RESET": { + "value": "M01_ARESETN" + } + } + }, + "M01_ARESETN": { + "type": "rst", + "direction": "I" + } + }, + "components": { + "xbar": { + "vlnv": "xilinx.com:ip:axi_crossbar:2.1", + "xci_name": "zynq_default_xbar_2", + "parameters": { + "NUM_MI": { + "value": "2" + }, + "NUM_SI": { + "value": "1" + }, + "STRATEGY": { + "value": "0" + } + } + }, + "s00_couplers": { + "interface_ports": { + "M_AXI": { + "mode": "Master", + "vlnv": "xilinx.com:interface:aximm_rtl:1.0" + }, + "S_AXI": { + "mode": "Slave", + "vlnv": "xilinx.com:interface:aximm_rtl:1.0" + } + }, + "ports": { + "M_ACLK": { + "type": "clk", + "direction": "I", + "parameters": { + "ASSOCIATED_BUSIF": { + "value": "M_AXI" + }, + "ASSOCIATED_RESET": { + "value": "M_ARESETN" + } + } + }, + "M_ARESETN": { + "type": "rst", + "direction": "I" + }, + "S_ACLK": { + "type": "clk", + "direction": "I", + "parameters": { + "ASSOCIATED_BUSIF": { + "value": "S_AXI" + }, + "ASSOCIATED_RESET": { + "value": "S_ARESETN" + } + } + }, + "S_ARESETN": { + "type": "rst", + "direction": "I" + } + }, + "interface_nets": { + "s00_couplers_to_s00_couplers": { + "interface_ports": [ + "S_AXI", + "M_AXI" + ] + } + } + }, + "m00_couplers": { + "interface_ports": { + "M_AXI": { + "mode": "Master", + "vlnv": "xilinx.com:interface:aximm_rtl:1.0" + }, + "S_AXI": { + "mode": "Slave", + "vlnv": "xilinx.com:interface:aximm_rtl:1.0" + } + }, + "ports": { + "M_ACLK": { + "type": "clk", + "direction": "I", + "parameters": { + "ASSOCIATED_BUSIF": { + "value": "M_AXI" + }, + "ASSOCIATED_RESET": { + "value": "M_ARESETN" + } + } + }, + "M_ARESETN": { + "type": "rst", + "direction": "I" + }, + "S_ACLK": { + "type": "clk", + "direction": "I", + "parameters": { + "ASSOCIATED_BUSIF": { + "value": "S_AXI" + }, + "ASSOCIATED_RESET": { + "value": "S_ARESETN" + } + } + }, + "S_ARESETN": { + "type": "rst", + "direction": "I" + } + }, + "interface_nets": { + "m00_couplers_to_m00_couplers": { + "interface_ports": [ + "S_AXI", + "M_AXI" + ] + } + } + }, + "m01_couplers": { + "interface_ports": { + "M_AXI": { + "mode": "Master", + "vlnv": "xilinx.com:interface:aximm_rtl:1.0" + }, + "S_AXI": { + "mode": "Slave", + "vlnv": "xilinx.com:interface:aximm_rtl:1.0" + } + }, + "ports": { + "M_ACLK": { + "type": "clk", + "direction": "I", + "parameters": { + "ASSOCIATED_BUSIF": { + "value": "M_AXI" + }, + "ASSOCIATED_RESET": { + "value": "M_ARESETN" + } + } + }, + "M_ARESETN": { + "type": "rst", + "direction": "I" + }, + "S_ACLK": { + "type": "clk", + "direction": "I", + "parameters": { + "ASSOCIATED_BUSIF": { + "value": "S_AXI" + }, + "ASSOCIATED_RESET": { + "value": "S_ARESETN" + } + } + }, + "S_ARESETN": { + "type": "rst", + "direction": "I" + } + }, + "interface_nets": { + "m01_couplers_to_m01_couplers": { + "interface_ports": [ + "S_AXI", + "M_AXI" + ] + } + } + } + }, + "interface_nets": { + "xbar_to_m01_couplers": { + "interface_ports": [ + "xbar/M01_AXI", + "m01_couplers/S_AXI" + ] + }, + "axi_interconnect_2_to_s00_couplers": { + "interface_ports": [ + "S00_AXI", + "s00_couplers/S_AXI" + ] + }, + "s00_couplers_to_xbar": { + "interface_ports": [ + "s00_couplers/M_AXI", + "xbar/S00_AXI" + ] + }, + "m00_couplers_to_axi_interconnect_2": { + "interface_ports": [ + "M00_AXI", + "m00_couplers/M_AXI" + ] + }, + "xbar_to_m00_couplers": { + "interface_ports": [ + "xbar/M00_AXI", + "m00_couplers/S_AXI" + ] + }, + "m01_couplers_to_axi_interconnect_2": { + "interface_ports": [ + "M01_AXI", + "m01_couplers/M_AXI" + ] + } + }, + "nets": { + "axi_interconnect_2_ACLK_net": { + "ports": [ + "ACLK", + "xbar/aclk", + "s00_couplers/M_ACLK", + "m00_couplers/S_ACLK", + "m01_couplers/S_ACLK" + ] + }, + "axi_interconnect_2_ARESETN_net": { + "ports": [ + "ARESETN", + "xbar/aresetn", + "s00_couplers/M_ARESETN", + "m00_couplers/S_ARESETN", + "m01_couplers/S_ARESETN" + ] + }, + "S00_ACLK_1": { + "ports": [ + "S00_ACLK", + "s00_couplers/S_ACLK" + ] + }, + "S00_ARESETN_1": { + "ports": [ + "S00_ARESETN", + "s00_couplers/S_ARESETN" + ] + }, + "M00_ACLK_1": { + "ports": [ + "M00_ACLK", + "m00_couplers/M_ACLK" + ] + }, + "M00_ARESETN_1": { + "ports": [ + "M00_ARESETN", + "m00_couplers/M_ARESETN" + ] + }, + "M01_ACLK_1": { + "ports": [ + "M01_ACLK", + "m01_couplers/M_ACLK" + ] + }, + "M01_ARESETN_1": { + "ports": [ + "M01_ARESETN", + "m01_couplers/M_ARESETN" + ] + } + } + } + }, + "interface_nets": { + "axi_pcie_0_M_AXI": { + "interface_ports": [ + "axi_pcie_0/M_AXI", + "axi_interconnect_0/S00_AXI" + ] + }, + "axi_interconnect_0_M00_AXI": { + "interface_ports": [ + "axi_interconnect_0/M00_AXI", + "processing_system7_0/S_AXI_HP0" + ] + }, + "axi_interconnect_1_M02_AXI": { + "interface_ports": [ + "axi_interconnect_1/M02_AXI", + "axi_cdma_0/S_AXI_LITE" + ] + }, + "axi_interconnect_2_M01_AXI": { + "interface_ports": [ + "axi_interconnect_2/M01_AXI", + "axi_interconnect_1/S01_AXI" + ] + }, + "axi_interconnect_2_M00_AXI": { + "interface_ports": [ + "axi_interconnect_2/M00_AXI", + "axi_interconnect_0/S01_AXI" + ] + }, + "processing_system7_0_FIXED_IO": { + "interface_ports": [ + "FIXED_IO", + "processing_system7_0/FIXED_IO" + ] + }, + "processing_system7_0_M_AXI_GP0": { + "interface_ports": [ + "processing_system7_0/M_AXI_GP0", + "axi_interconnect_1/S00_AXI" + ] + }, + "axi_interconnect_1_M00_AXI": { + "interface_ports": [ + "axi_interconnect_1/M00_AXI", + "axi_pcie_0/S_AXI" + ] + }, + "processing_system7_0_DDR": { + "interface_ports": [ + "DDR", + "processing_system7_0/DDR" + ] + }, + "axi_cdma_0_M_AXI": { + "interface_ports": [ + "axi_cdma_0/M_AXI", + "axi_interconnect_2/S00_AXI" + ] + }, + "axi_pcie_0_pcie_7x_mgt": { + "interface_ports": [ + "pcie_7x_mgt", + "axi_pcie_0/pcie_7x_mgt" + ] + }, + "axi_interconnect_1_M01_AXI": { + "interface_ports": [ + "axi_interconnect_1/M01_AXI", + "axi_pcie_0/S_AXI_CTL" + ] + } + }, + "nets": { + "xlconstant_0_dout": { + "ports": [ + "xlconstant_0/dout", + "axi_pcie_0/INTX_MSI_Request" + ] + }, + "axi_pcie_0_axi_ctl_aclk_out": { + "ports": [ + "axi_pcie_0/axi_ctl_aclk_out", + "proc_sys_reset_0/slowest_sync_clk", + "axi_interconnect_1/M01_ACLK" + ] + }, + "axi_pcie_0_mmcm_lock": { + "ports": [ + "axi_pcie_0/mmcm_lock", + "proc_sys_reset_0/dcm_locked", + "proc_sys_reset_1/dcm_locked" + ] + }, + "processing_system7_0_FCLK_RESET0_N": { + "ports": [ + "processing_system7_0/FCLK_RESET0_N", + "proc_sys_reset_0/ext_reset_in", + "proc_sys_reset_1/ext_reset_in" + ] + }, + "proc_sys_reset_0_peripheral_reset": { + "ports": [ + "proc_sys_reset_0/peripheral_reset", + "perst" + ] + }, + "proc_sys_reset_0_peripheral_aresetn": { + "ports": [ + "proc_sys_reset_0/peripheral_aresetn", + "axi_pcie_0/axi_aresetn", + "axi_interconnect_1/M01_ARESETN" + ] + }, + "axi_pcie_0_axi_aclk_out": { + "ports": [ + "axi_pcie_0/axi_aclk_out", + "proc_sys_reset_1/slowest_sync_clk", + "processing_system7_0/M_AXI_GP0_ACLK", + "processing_system7_0/S_AXI_HP0_ACLK", + "axi_cdma_0/m_axi_aclk", + "axi_cdma_0/s_axi_lite_aclk", + "axi_interconnect_1/ACLK", + "axi_interconnect_1/S00_ACLK", + "axi_interconnect_1/M00_ACLK", + "axi_interconnect_1/S01_ACLK", + "axi_interconnect_1/M02_ACLK", + "axi_interconnect_0/ACLK", + "axi_interconnect_0/S00_ACLK", + "axi_interconnect_0/M00_ACLK", + "axi_interconnect_0/S01_ACLK", + "axi_interconnect_2/ACLK", + "axi_interconnect_2/S00_ACLK", + "axi_interconnect_2/M00_ACLK", + "axi_interconnect_2/M01_ACLK" + ] + }, + "xlconcat_0_dout": { + "ports": [ + "xlconcat_0/dout", + "processing_system7_0/IRQ_F2P" + ] + }, + "axi_pcie_0_interrupt_out": { + "ports": [ + "axi_pcie_0/interrupt_out", + "xlconcat_0/In0" + ] + }, + "axi_cdma_0_cdma_introut": { + "ports": [ + "axi_cdma_0/cdma_introut", + "xlconcat_0/In1" + ] + }, + "proc_sys_reset_1_peripheral_aresetn": { + "ports": [ + "proc_sys_reset_1/peripheral_aresetn", + "axi_cdma_0/s_axi_lite_aresetn", + "axi_interconnect_0/S00_ARESETN", + "axi_interconnect_0/M00_ARESETN", + "axi_interconnect_0/S01_ARESETN", + "axi_interconnect_1/S00_ARESETN", + "axi_interconnect_1/M00_ARESETN", + "axi_interconnect_1/S01_ARESETN", + "axi_interconnect_1/M02_ARESETN", + "axi_interconnect_2/S00_ARESETN", + "axi_interconnect_2/M00_ARESETN", + "axi_interconnect_2/M01_ARESETN" + ] + }, + "proc_sys_reset_1_interconnect_aresetn": { + "ports": [ + "proc_sys_reset_1/interconnect_aresetn", + "axi_interconnect_0/ARESETN", + "axi_interconnect_1/ARESETN", + "axi_interconnect_2/ARESETN" + ] + }, + "processing_system7_0_FCLK_CLK0": { + "ports": [ + "processing_system7_0/FCLK_CLK0", + "axi_pcie_0/REFCLK" + ] + } + }, + "addressing": { + "/processing_system7_0": { + "address_spaces": { + "Data": { + "range": "4G", + "width": "32", + "segments": { + "SEG_axi_cdma_0_Reg": { + "address_block": "/axi_cdma_0/S_AXI_LITE/Reg", + "offset": "0x7E200000", + "range": "64K" + }, + "SEG_axi_pcie_0_BAR0": { + "address_block": "/axi_pcie_0/S_AXI/BAR0", + "offset": "0x40000000", + "range": "256M" + }, + "SEG_axi_pcie_0_CTL0": { + "address_block": "/axi_pcie_0/S_AXI_CTL/CTL0", + "offset": "0x50000000", + "range": "64M" + } + } + } + } + }, + "/axi_pcie_0": { + "address_spaces": { + "M_AXI": { + "range": "4G", + "width": "32", + "segments": { + "SEG_processing_system7_0_HP0_DDR_LOWOCM": { + "address_block": "/processing_system7_0/S_AXI_HP0/HP0_DDR_LOWOCM", + "offset": "0x00000000", + "range": "1G" + } + } + } + } + }, + "/axi_cdma_0": { + "address_spaces": { + "Data": { + "range": "4G", + "width": "32", + "segments": { + "SEG_axi_pcie_0_BAR0": { + "address_block": "/axi_pcie_0/S_AXI/BAR0", + "offset": "0x40000000", + "range": "256M" + }, + "SEG_axi_pcie_0_CTL0": { + "address_block": "/axi_pcie_0/S_AXI_CTL/CTL0", + "offset": "0x50000000", + "range": "64M" + }, + "SEG_processing_system7_0_HP0_DDR_LOWOCM": { + "address_block": "/processing_system7_0/S_AXI_HP0/HP0_DDR_LOWOCM", + "offset": "0x00000000", + "range": "1G" + }, + "SEG_axi_cdma_0_Reg": { + "address_block": "/axi_cdma_0/S_AXI_LITE/Reg", + "offset": "0x7E200000", + "range": "64K", + "is_excluded": "TRUE" + } + } + } + } + } + } + } + } \ No newline at end of file diff --git a/lib/bd/xilinx/m3_xIP_default.bd b/lib/bd/xilinx/m3_xIP_default.bd new file mode 100644 index 0000000..10c3fba --- /dev/null +++ b/lib/bd/xilinx/m3_xIP_default.bd @@ -0,0 +1,2235 @@ +{ + "design": { + "design_info": { + "boundary_crc": "0x1CBED0B5287DFD82", + "name": "m3_xIP_default", + "synth_flow_mode": "None", + "validated": "true" + }, + "design_tree": { + "axi_bram_ctrl_0": "", + "axi_interconnect_0": { + "xbar": "", + "s00_couplers": { + "auto_pc": "" + }, + "m00_couplers": {}, + "m01_couplers": {}, + "m02_couplers": {}, + "m03_couplers": {}, + "m04_couplers": {}, + "m05_couplers": {} + }, + "axi_uartlite_0": "", + "blk_mem_gen_0": "", + "daplink_if_0": { + "axi_interconnect_0": { + "xbar": "", + "s00_couplers": {}, + "m00_couplers": {}, + "m01_couplers": {}, + "m02_couplers": {}, + "m03_couplers": {} + }, + "axi_single_spi_0": "", + "axi_quad_spi_0": "", + "axi_xip_quad_spi_0": "", + "axi_gpio_0": "", + "axi_protocol_convert_0": "", + "DAPLink_to_Arty_shield_0": "" + }, + "xlconcat_0": "", + "xlconcat_1": "", + "xlconstant_1": "", + "Cortex_M3_0": "", + "clk_wiz": "", + "rst_clk_wiz_100M": "", + "axi_gpio_0": "", + "axi_gpio_1": "", + "axi_quad_spi_0": "" + }, + "interface_ports": { + "DAPLink": { + "mode": "Master", + "vlnv": "xilinx.com:interface:gpio_rtl:1.0" + }, + "usb_uart": { + "mode": "Master", + "vlnv": "xilinx.com:interface:uart_rtl:1.0" + }, + "key_4bit": { + "mode": "Master", + "vlnv": "xilinx.com:interface:gpio_rtl:1.0" + }, + "LED_4bit": { + "mode": "Master", + "vlnv": "xilinx.com:interface:gpio_rtl:1.0" + }, + "qspi_flash": { + "mode": "Master", + "vlnv": "xilinx.com:interface:spi_rtl:1.0" + } + }, + "ports": { + "clk_50MHz": { + "type": "clk", + "direction": "I", + "parameters": { + "CLK_DOMAIN": { + "value": "m3_for_xilinx_clk_50MHz", + "value_src": "default" + }, + "FREQ_HZ": { + "value": "50000000" + }, + "INSERT_VIP": { + "value": "0", + "value_src": "default" + }, + "PHASE": { + "value": "0.000", + "value_src": "default" + } + } + }, + "sys_rst_n": { + "type": "rst", + "direction": "I", + "parameters": { + "INSERT_VIP": { + "value": "0", + "value_src": "default" + }, + "POLARITY": { + "value": "ACTIVE_LOW" + } + } + } + }, + "components": { + "axi_bram_ctrl_0": { + "vlnv": "xilinx.com:ip:axi_bram_ctrl:4.1", + "xci_name": "m3_for_xilinx_axi_bram_ctrl_0_0", + "parameters": { + "PROTOCOL": { + "value": "AXI4LITE" + }, + "SINGLE_PORT_BRAM": { + "value": "1" + } + } + }, + "axi_interconnect_0": { + "vlnv": "xilinx.com:ip:axi_interconnect:2.1", + "xci_name": "m3_for_xilinx_axi_interconnect_0_0", + "parameters": { + "ENABLE_ADVANCED_OPTIONS": { + "value": "1" + }, + "M00_HAS_DATA_FIFO": { + "value": "0" + }, + "M00_HAS_REGSLICE": { + "value": "0" + }, + "M00_SECURE": { + "value": "0" + }, + "M01_HAS_DATA_FIFO": { + "value": "0" + }, + "M01_HAS_REGSLICE": { + "value": "3" + }, + "M01_SECURE": { + "value": "0" + }, + "M02_HAS_REGSLICE": { + "value": "3" + }, + "M02_SECURE": { + "value": "0" + }, + "M03_HAS_REGSLICE": { + "value": "3" + }, + "M04_HAS_REGSLICE": { + "value": "3" + }, + "M05_HAS_REGSLICE": { + "value": "3" + }, + "NUM_MI": { + "value": "6" + }, + "NUM_SI": { + "value": "1" + }, + "S00_HAS_REGSLICE": { + "value": "3" + }, + "S01_HAS_DATA_FIFO": { + "value": "1" + }, + "S01_HAS_REGSLICE": { + "value": "3" + }, + "SYNCHRONIZATION_STAGES": { + "value": "2" + } + }, + "interface_ports": { + "S00_AXI": { + "mode": "Slave", + "vlnv": "xilinx.com:interface:aximm_rtl:1.0" + }, + "M00_AXI": { + "mode": "Master", + "vlnv": "xilinx.com:interface:aximm_rtl:1.0" + }, + "M01_AXI": { + "mode": "Master", + "vlnv": "xilinx.com:interface:aximm_rtl:1.0" + }, + "M02_AXI": { + "mode": "Master", + "vlnv": "xilinx.com:interface:aximm_rtl:1.0" + }, + "M03_AXI": { + "mode": "Master", + "vlnv": "xilinx.com:interface:aximm_rtl:1.0" + }, + "M04_AXI": { + "mode": "Master", + "vlnv": "xilinx.com:interface:aximm_rtl:1.0" + }, + "M05_AXI": { + "mode": "Master", + "vlnv": "xilinx.com:interface:aximm_rtl:1.0" + } + }, + "ports": { + "ACLK": { + "type": "clk", + "direction": "I", + "parameters": { + "ASSOCIATED_RESET": { + "value": "ARESETN" + } + } + }, + "ARESETN": { + "type": "rst", + "direction": "I" + }, + "S00_ACLK": { + "type": "clk", + "direction": "I", + "parameters": { + "ASSOCIATED_BUSIF": { + "value": "S00_AXI" + }, + "ASSOCIATED_RESET": { + "value": "S00_ARESETN" + } + } + }, + "S00_ARESETN": { + "type": "rst", + "direction": "I" + }, + "M00_ACLK": { + "type": "clk", + "direction": "I", + "parameters": { + "ASSOCIATED_BUSIF": { + "value": "M00_AXI" + }, + "ASSOCIATED_RESET": { + "value": "M00_ARESETN" + } + } + }, + "M00_ARESETN": { + "type": "rst", + "direction": "I" + }, + "M01_ACLK": { + "type": "clk", + "direction": "I", + "parameters": { + "ASSOCIATED_BUSIF": { + "value": "M01_AXI" + }, + "ASSOCIATED_RESET": { + "value": "M01_ARESETN" + } + } + }, + "M01_ARESETN": { + "type": "rst", + "direction": "I" + }, + "M02_ACLK": { + "type": "clk", + "direction": "I", + "parameters": { + "ASSOCIATED_BUSIF": { + "value": "M02_AXI" + }, + "ASSOCIATED_RESET": { + "value": "M02_ARESETN" + } + } + }, + "M02_ARESETN": { + "type": "rst", + "direction": "I" + }, + "M03_ACLK": { + "type": "clk", + "direction": "I", + "parameters": { + "ASSOCIATED_BUSIF": { + "value": "M03_AXI" + }, + "ASSOCIATED_RESET": { + "value": "M03_ARESETN" + } + } + }, + "M03_ARESETN": { + "type": "rst", + "direction": "I" + }, + "M04_ACLK": { + "type": "clk", + "direction": "I", + "parameters": { + "ASSOCIATED_BUSIF": { + "value": "M04_AXI" + }, + "ASSOCIATED_RESET": { + "value": "M04_ARESETN" + } + } + }, + "M04_ARESETN": { + "type": "rst", + "direction": "I" + }, + "M05_ACLK": { + "type": "clk", + "direction": "I", + "parameters": { + "ASSOCIATED_BUSIF": { + "value": "M05_AXI" + }, + "ASSOCIATED_RESET": { + "value": "M05_ARESETN" + } + } + }, + "M05_ARESETN": { + "type": "rst", + "direction": "I" + } + }, + "components": { + "xbar": { + "vlnv": "xilinx.com:ip:axi_crossbar:2.1", + "xci_name": "m3_for_xilinx_xbar_0", + "parameters": { + "M00_SECURE": { + "value": "0" + }, + "M01_SECURE": { + "value": "0" + }, + "M02_SECURE": { + "value": "0" + }, + "NUM_MI": { + "value": "6" + }, + "NUM_SI": { + "value": "1" + }, + "STRATEGY": { + "value": "0" + } + } + }, + "s00_couplers": { + "interface_ports": { + "M_AXI": { + "mode": "Master", + "vlnv": "xilinx.com:interface:aximm_rtl:1.0" + }, + "S_AXI": { + "mode": "Slave", + "vlnv": "xilinx.com:interface:aximm_rtl:1.0" + } + }, + "ports": { + "M_ACLK": { + "type": "clk", + "direction": "I", + "parameters": { + "ASSOCIATED_BUSIF": { + "value": "M_AXI" + }, + "ASSOCIATED_RESET": { + "value": "M_ARESETN" + } + } + }, + "M_ARESETN": { + "type": "rst", + "direction": "I" + }, + "S_ACLK": { + "type": "clk", + "direction": "I", + "parameters": { + "ASSOCIATED_BUSIF": { + "value": "S_AXI" + }, + "ASSOCIATED_RESET": { + "value": "S_ARESETN" + } + } + }, + "S_ARESETN": { + "type": "rst", + "direction": "I" + } + }, + "components": { + "auto_pc": { + "vlnv": "xilinx.com:ip:axi_protocol_converter:2.1", + "xci_name": "m3_for_xilinx_auto_pc_0", + "parameters": { + "MI_PROTOCOL": { + "value": "AXI4LITE" + }, + "SI_PROTOCOL": { + "value": "AXI3" + } + } + } + }, + "interface_nets": { + "auto_pc_to_s00_couplers": { + "interface_ports": [ + "M_AXI", + "auto_pc/M_AXI" + ] + }, + "s00_couplers_to_auto_pc": { + "interface_ports": [ + "S_AXI", + "auto_pc/S_AXI" + ] + } + }, + "nets": { + "S_ACLK_1": { + "ports": [ + "S_ACLK", + "auto_pc/aclk" + ] + }, + "S_ARESETN_1": { + "ports": [ + "S_ARESETN", + "auto_pc/aresetn" + ] + } + } + }, + "m00_couplers": { + "interface_ports": { + "M_AXI": { + "mode": "Master", + "vlnv": "xilinx.com:interface:aximm_rtl:1.0" + }, + "S_AXI": { + "mode": "Slave", + "vlnv": "xilinx.com:interface:aximm_rtl:1.0" + } + }, + "ports": { + "M_ACLK": { + "type": "clk", + "direction": "I", + "parameters": { + "ASSOCIATED_BUSIF": { + "value": "M_AXI" + }, + "ASSOCIATED_RESET": { + "value": "M_ARESETN" + } + } + }, + "M_ARESETN": { + "type": "rst", + "direction": "I" + }, + "S_ACLK": { + "type": "clk", + "direction": "I", + "parameters": { + "ASSOCIATED_BUSIF": { + "value": "S_AXI" + }, + "ASSOCIATED_RESET": { + "value": "S_ARESETN" + } + } + }, + "S_ARESETN": { + "type": "rst", + "direction": "I" + } + }, + "interface_nets": { + "m00_couplers_to_m00_couplers": { + "interface_ports": [ + "S_AXI", + "M_AXI" + ] + } + } + }, + "m01_couplers": { + "interface_ports": { + "M_AXI": { + "mode": "Master", + "vlnv": "xilinx.com:interface:aximm_rtl:1.0" + }, + "S_AXI": { + "mode": "Slave", + "vlnv": "xilinx.com:interface:aximm_rtl:1.0" + } + }, + "ports": { + "M_ACLK": { + "type": "clk", + "direction": "I", + "parameters": { + "ASSOCIATED_BUSIF": { + "value": "M_AXI" + }, + "ASSOCIATED_RESET": { + "value": "M_ARESETN" + } + } + }, + "M_ARESETN": { + "type": "rst", + "direction": "I" + }, + "S_ACLK": { + "type": "clk", + "direction": "I", + "parameters": { + "ASSOCIATED_BUSIF": { + "value": "S_AXI" + }, + "ASSOCIATED_RESET": { + "value": "S_ARESETN" + } + } + }, + "S_ARESETN": { + "type": "rst", + "direction": "I" + } + }, + "interface_nets": { + "m01_couplers_to_m01_couplers": { + "interface_ports": [ + "S_AXI", + "M_AXI" + ] + } + } + }, + "m02_couplers": { + "interface_ports": { + "M_AXI": { + "mode": "Master", + "vlnv": "xilinx.com:interface:aximm_rtl:1.0" + }, + "S_AXI": { + "mode": "Slave", + "vlnv": "xilinx.com:interface:aximm_rtl:1.0" + } + }, + "ports": { + "M_ACLK": { + "type": "clk", + "direction": "I", + "parameters": { + "ASSOCIATED_BUSIF": { + "value": "M_AXI" + }, + "ASSOCIATED_RESET": { + "value": "M_ARESETN" + } + } + }, + "M_ARESETN": { + "type": "rst", + "direction": "I" + }, + "S_ACLK": { + "type": "clk", + "direction": "I", + "parameters": { + "ASSOCIATED_BUSIF": { + "value": "S_AXI" + }, + "ASSOCIATED_RESET": { + "value": "S_ARESETN" + } + } + }, + "S_ARESETN": { + "type": "rst", + "direction": "I" + } + }, + "interface_nets": { + "m02_couplers_to_m02_couplers": { + "interface_ports": [ + "S_AXI", + "M_AXI" + ] + } + } + }, + "m03_couplers": { + "interface_ports": { + "M_AXI": { + "mode": "Master", + "vlnv": "xilinx.com:interface:aximm_rtl:1.0" + }, + "S_AXI": { + "mode": "Slave", + "vlnv": "xilinx.com:interface:aximm_rtl:1.0" + } + }, + "ports": { + "M_ACLK": { + "type": "clk", + "direction": "I", + "parameters": { + "ASSOCIATED_BUSIF": { + "value": "M_AXI" + }, + "ASSOCIATED_RESET": { + "value": "M_ARESETN" + } + } + }, + "M_ARESETN": { + "type": "rst", + "direction": "I" + }, + "S_ACLK": { + "type": "clk", + "direction": "I", + "parameters": { + "ASSOCIATED_BUSIF": { + "value": "S_AXI" + }, + "ASSOCIATED_RESET": { + "value": "S_ARESETN" + } + } + }, + "S_ARESETN": { + "type": "rst", + "direction": "I" + } + }, + "interface_nets": { + "m03_couplers_to_m03_couplers": { + "interface_ports": [ + "S_AXI", + "M_AXI" + ] + } + } + }, + "m04_couplers": { + "interface_ports": { + "M_AXI": { + "mode": "Master", + "vlnv": "xilinx.com:interface:aximm_rtl:1.0" + }, + "S_AXI": { + "mode": "Slave", + "vlnv": "xilinx.com:interface:aximm_rtl:1.0" + } + }, + "ports": { + "M_ACLK": { + "type": "clk", + "direction": "I", + "parameters": { + "ASSOCIATED_BUSIF": { + "value": "M_AXI" + }, + "ASSOCIATED_RESET": { + "value": "M_ARESETN" + } + } + }, + "M_ARESETN": { + "type": "rst", + "direction": "I" + }, + "S_ACLK": { + "type": "clk", + "direction": "I", + "parameters": { + "ASSOCIATED_BUSIF": { + "value": "S_AXI" + }, + "ASSOCIATED_RESET": { + "value": "S_ARESETN" + } + } + }, + "S_ARESETN": { + "type": "rst", + "direction": "I" + } + }, + "interface_nets": { + "m04_couplers_to_m04_couplers": { + "interface_ports": [ + "S_AXI", + "M_AXI" + ] + } + } + }, + "m05_couplers": { + "interface_ports": { + "M_AXI": { + "mode": "Master", + "vlnv": "xilinx.com:interface:aximm_rtl:1.0" + }, + "S_AXI": { + "mode": "Slave", + "vlnv": "xilinx.com:interface:aximm_rtl:1.0" + } + }, + "ports": { + "M_ACLK": { + "type": "clk", + "direction": "I", + "parameters": { + "ASSOCIATED_BUSIF": { + "value": "M_AXI" + }, + "ASSOCIATED_RESET": { + "value": "M_ARESETN" + } + } + }, + "M_ARESETN": { + "type": "rst", + "direction": "I" + }, + "S_ACLK": { + "type": "clk", + "direction": "I", + "parameters": { + "ASSOCIATED_BUSIF": { + "value": "S_AXI" + }, + "ASSOCIATED_RESET": { + "value": "S_ARESETN" + } + } + }, + "S_ARESETN": { + "type": "rst", + "direction": "I" + } + }, + "interface_nets": { + "m05_couplers_to_m05_couplers": { + "interface_ports": [ + "S_AXI", + "M_AXI" + ] + } + } + } + }, + "interface_nets": { + "axi_interconnect_0_to_s00_couplers": { + "interface_ports": [ + "S00_AXI", + "s00_couplers/S_AXI" + ] + }, + "m00_couplers_to_axi_interconnect_0": { + "interface_ports": [ + "M00_AXI", + "m00_couplers/M_AXI" + ] + }, + "s00_couplers_to_xbar": { + "interface_ports": [ + "s00_couplers/M_AXI", + "xbar/S00_AXI" + ] + }, + "xbar_to_m00_couplers": { + "interface_ports": [ + "xbar/M00_AXI", + "m00_couplers/S_AXI" + ] + }, + "m01_couplers_to_axi_interconnect_0": { + "interface_ports": [ + "M01_AXI", + "m01_couplers/M_AXI" + ] + }, + "xbar_to_m01_couplers": { + "interface_ports": [ + "xbar/M01_AXI", + "m01_couplers/S_AXI" + ] + }, + "m02_couplers_to_axi_interconnect_0": { + "interface_ports": [ + "M02_AXI", + "m02_couplers/M_AXI" + ] + }, + "xbar_to_m02_couplers": { + "interface_ports": [ + "xbar/M02_AXI", + "m02_couplers/S_AXI" + ] + }, + "m03_couplers_to_axi_interconnect_0": { + "interface_ports": [ + "M03_AXI", + "m03_couplers/M_AXI" + ] + }, + "m04_couplers_to_axi_interconnect_0": { + "interface_ports": [ + "M04_AXI", + "m04_couplers/M_AXI" + ] + }, + "xbar_to_m03_couplers": { + "interface_ports": [ + "xbar/M03_AXI", + "m03_couplers/S_AXI" + ] + }, + "m05_couplers_to_axi_interconnect_0": { + "interface_ports": [ + "M05_AXI", + "m05_couplers/M_AXI" + ] + }, + "xbar_to_m04_couplers": { + "interface_ports": [ + "xbar/M04_AXI", + "m04_couplers/S_AXI" + ] + }, + "xbar_to_m05_couplers": { + "interface_ports": [ + "xbar/M05_AXI", + "m05_couplers/S_AXI" + ] + } + }, + "nets": { + "axi_interconnect_0_ACLK_net": { + "ports": [ + "ACLK", + "xbar/aclk", + "s00_couplers/S_ACLK", + "s00_couplers/M_ACLK", + "m00_couplers/M_ACLK", + "m01_couplers/M_ACLK", + "m02_couplers/M_ACLK", + "m03_couplers/M_ACLK", + "m04_couplers/M_ACLK", + "m05_couplers/M_ACLK", + "m00_couplers/S_ACLK", + "m01_couplers/S_ACLK", + "m02_couplers/S_ACLK", + "m03_couplers/S_ACLK", + "m04_couplers/S_ACLK", + "m05_couplers/S_ACLK" + ] + }, + "axi_interconnect_0_ARESETN_net": { + "ports": [ + "ARESETN", + "xbar/aresetn", + "s00_couplers/S_ARESETN", + "s00_couplers/M_ARESETN", + "m00_couplers/M_ARESETN", + "m01_couplers/M_ARESETN", + "m02_couplers/M_ARESETN", + "m03_couplers/M_ARESETN", + "m04_couplers/M_ARESETN", + "m05_couplers/M_ARESETN", + "m00_couplers/S_ARESETN", + "m01_couplers/S_ARESETN", + "m02_couplers/S_ARESETN", + "m03_couplers/S_ARESETN", + "m04_couplers/S_ARESETN", + "m05_couplers/S_ARESETN" + ] + } + } + }, + "axi_uartlite_0": { + "vlnv": "xilinx.com:ip:axi_uartlite:2.0", + "xci_name": "m3_for_xilinx_axi_uartlite_0_0", + "parameters": { + "C_BAUDRATE": { + "value": "115200" + }, + "C_S_AXI_ACLK_FREQ_HZ": { + "value": "50000000" + }, + "UARTLITE_BOARD_INTERFACE": { + "value": "Custom" + }, + "USE_BOARD_FLOW": { + "value": "true" + } + } + }, + "blk_mem_gen_0": { + "vlnv": "xilinx.com:ip:blk_mem_gen:8.4", + "xci_name": "m3_for_xilinx_blk_mem_gen_0_0", + "parameters": { + "EN_SAFETY_CKT": { + "value": "false" + } + } + }, + "daplink_if_0": { + "interface_ports": { + "S_AXI": { + "mode": "Slave", + "vlnv": "xilinx.com:interface:aximm_rtl:1.0" + }, + "UART_out": { + "mode": "Master", + "vlnv": "xilinx.com:interface:uart_rtl:1.0" + }, + "Shield_out": { + "mode": "Master", + "vlnv": "xilinx.com:interface:gpio_rtl:1.0" + }, + "C_AXI": { + "mode": "Slave", + "vlnv": "xilinx.com:interface:aximm_rtl:1.0" + } + }, + "ports": { + "s_axi_aclk": { + "direction": "I" + }, + "s_axi_aresetn": { + "direction": "I" + }, + "DAPLink_fittedn": { + "direction": "O" + }, + "qspi_irq": { + "direction": "O" + }, + "ext_spi_clk": { + "direction": "I" + }, + "uart_rxd_axi": { + "direction": "O" + }, + "SWDI": { + "direction": "O" + }, + "SWCLK": { + "direction": "O" + }, + "nSRST": { + "direction": "O" + }, + "SWDOEN": { + "direction": "I" + }, + "SWDO": { + "direction": "I" + }, + "uart_txd_axi": { + "direction": "I" + }, + "spi_irq": { + "direction": "O" + }, + "qspi_xip_irq": { + "direction": "O" + } + }, + "components": { + "axi_interconnect_0": { + "vlnv": "xilinx.com:ip:axi_interconnect:2.1", + "xci_name": "m3_for_xilinx_axi_interconnect_0_1", + "parameters": { + "NUM_MI": { + "value": "4" + } + }, + "interface_ports": { + "S00_AXI": { + "mode": "Slave", + "vlnv": "xilinx.com:interface:aximm_rtl:1.0" + }, + "M00_AXI": { + "mode": "Master", + "vlnv": "xilinx.com:interface:aximm_rtl:1.0" + }, + "M01_AXI": { + "mode": "Master", + "vlnv": "xilinx.com:interface:aximm_rtl:1.0" + }, + "M02_AXI": { + "mode": "Master", + "vlnv": "xilinx.com:interface:aximm_rtl:1.0" + }, + "M03_AXI": { + "mode": "Master", + "vlnv": "xilinx.com:interface:aximm_rtl:1.0" + } + }, + "ports": { + "ACLK": { + "type": "clk", + "direction": "I", + "parameters": { + "ASSOCIATED_RESET": { + "value": "ARESETN" + } + } + }, + "ARESETN": { + "type": "rst", + "direction": "I" + }, + "S00_ACLK": { + "type": "clk", + "direction": "I", + "parameters": { + "ASSOCIATED_BUSIF": { + "value": "S00_AXI" + }, + "ASSOCIATED_RESET": { + "value": "S00_ARESETN" + } + } + }, + "S00_ARESETN": { + "type": "rst", + "direction": "I" + }, + "M00_ACLK": { + "type": "clk", + "direction": "I", + "parameters": { + "ASSOCIATED_BUSIF": { + "value": "M00_AXI" + }, + "ASSOCIATED_RESET": { + "value": "M00_ARESETN" + } + } + }, + "M00_ARESETN": { + "type": "rst", + "direction": "I" + }, + "M01_ACLK": { + "type": "clk", + "direction": "I", + "parameters": { + "ASSOCIATED_BUSIF": { + "value": "M01_AXI" + }, + "ASSOCIATED_RESET": { + "value": "M01_ARESETN" + } + } + }, + "M01_ARESETN": { + "type": "rst", + "direction": "I" + }, + "M02_ACLK": { + "type": "clk", + "direction": "I", + "parameters": { + "ASSOCIATED_BUSIF": { + "value": "M02_AXI" + }, + "ASSOCIATED_RESET": { + "value": "M02_ARESETN" + } + } + }, + "M02_ARESETN": { + "type": "rst", + "direction": "I" + }, + "M03_ACLK": { + "type": "clk", + "direction": "I", + "parameters": { + "ASSOCIATED_BUSIF": { + "value": "M03_AXI" + }, + "ASSOCIATED_RESET": { + "value": "M03_ARESETN" + } + } + }, + "M03_ARESETN": { + "type": "rst", + "direction": "I" + } + }, + "components": { + "xbar": { + "vlnv": "xilinx.com:ip:axi_crossbar:2.1", + "xci_name": "m3_for_xilinx_xbar_1", + "parameters": { + "NUM_MI": { + "value": "4" + }, + "NUM_SI": { + "value": "1" + }, + "STRATEGY": { + "value": "0" + } + } + }, + "s00_couplers": { + "interface_ports": { + "M_AXI": { + "mode": "Master", + "vlnv": "xilinx.com:interface:aximm_rtl:1.0" + }, + "S_AXI": { + "mode": "Slave", + "vlnv": "xilinx.com:interface:aximm_rtl:1.0" + } + }, + "ports": { + "M_ACLK": { + "type": "clk", + "direction": "I", + "parameters": { + "ASSOCIATED_BUSIF": { + "value": "M_AXI" + }, + "ASSOCIATED_RESET": { + "value": "M_ARESETN" + } + } + }, + "M_ARESETN": { + "type": "rst", + "direction": "I" + }, + "S_ACLK": { + "type": "clk", + "direction": "I", + "parameters": { + "ASSOCIATED_BUSIF": { + "value": "S_AXI" + }, + "ASSOCIATED_RESET": { + "value": "S_ARESETN" + } + } + }, + "S_ARESETN": { + "type": "rst", + "direction": "I" + } + }, + "interface_nets": { + "s00_couplers_to_s00_couplers": { + "interface_ports": [ + "S_AXI", + "M_AXI" + ] + } + } + }, + "m00_couplers": { + "interface_ports": { + "M_AXI": { + "mode": "Master", + "vlnv": "xilinx.com:interface:aximm_rtl:1.0" + }, + "S_AXI": { + "mode": "Slave", + "vlnv": "xilinx.com:interface:aximm_rtl:1.0" + } + }, + "ports": { + "M_ACLK": { + "type": "clk", + "direction": "I", + "parameters": { + "ASSOCIATED_BUSIF": { + "value": "M_AXI" + }, + "ASSOCIATED_RESET": { + "value": "M_ARESETN" + } + } + }, + "M_ARESETN": { + "type": "rst", + "direction": "I" + }, + "S_ACLK": { + "type": "clk", + "direction": "I", + "parameters": { + "ASSOCIATED_BUSIF": { + "value": "S_AXI" + }, + "ASSOCIATED_RESET": { + "value": "S_ARESETN" + } + } + }, + "S_ARESETN": { + "type": "rst", + "direction": "I" + } + }, + "interface_nets": { + "m00_couplers_to_m00_couplers": { + "interface_ports": [ + "S_AXI", + "M_AXI" + ] + } + } + }, + "m01_couplers": { + "interface_ports": { + "M_AXI": { + "mode": "Master", + "vlnv": "xilinx.com:interface:aximm_rtl:1.0" + }, + "S_AXI": { + "mode": "Slave", + "vlnv": "xilinx.com:interface:aximm_rtl:1.0" + } + }, + "ports": { + "M_ACLK": { + "type": "clk", + "direction": "I", + "parameters": { + "ASSOCIATED_BUSIF": { + "value": "M_AXI" + }, + "ASSOCIATED_RESET": { + "value": "M_ARESETN" + } + } + }, + "M_ARESETN": { + "type": "rst", + "direction": "I" + }, + "S_ACLK": { + "type": "clk", + "direction": "I", + "parameters": { + "ASSOCIATED_BUSIF": { + "value": "S_AXI" + }, + "ASSOCIATED_RESET": { + "value": "S_ARESETN" + } + } + }, + "S_ARESETN": { + "type": "rst", + "direction": "I" + } + }, + "interface_nets": { + "m01_couplers_to_m01_couplers": { + "interface_ports": [ + "S_AXI", + "M_AXI" + ] + } + } + }, + "m02_couplers": { + "interface_ports": { + "M_AXI": { + "mode": "Master", + "vlnv": "xilinx.com:interface:aximm_rtl:1.0" + }, + "S_AXI": { + "mode": "Slave", + "vlnv": "xilinx.com:interface:aximm_rtl:1.0" + } + }, + "ports": { + "M_ACLK": { + "type": "clk", + "direction": "I", + "parameters": { + "ASSOCIATED_BUSIF": { + "value": "M_AXI" + }, + "ASSOCIATED_RESET": { + "value": "M_ARESETN" + } + } + }, + "M_ARESETN": { + "type": "rst", + "direction": "I" + }, + "S_ACLK": { + "type": "clk", + "direction": "I", + "parameters": { + "ASSOCIATED_BUSIF": { + "value": "S_AXI" + }, + "ASSOCIATED_RESET": { + "value": "S_ARESETN" + } + } + }, + "S_ARESETN": { + "type": "rst", + "direction": "I" + } + }, + "interface_nets": { + "m02_couplers_to_m02_couplers": { + "interface_ports": [ + "S_AXI", + "M_AXI" + ] + } + } + }, + "m03_couplers": { + "interface_ports": { + "M_AXI": { + "mode": "Master", + "vlnv": "xilinx.com:interface:aximm_rtl:1.0" + }, + "S_AXI": { + "mode": "Slave", + "vlnv": "xilinx.com:interface:aximm_rtl:1.0" + } + }, + "ports": { + "M_ACLK": { + "type": "clk", + "direction": "I", + "parameters": { + "ASSOCIATED_BUSIF": { + "value": "M_AXI" + }, + "ASSOCIATED_RESET": { + "value": "M_ARESETN" + } + } + }, + "M_ARESETN": { + "type": "rst", + "direction": "I" + }, + "S_ACLK": { + "type": "clk", + "direction": "I", + "parameters": { + "ASSOCIATED_BUSIF": { + "value": "S_AXI" + }, + "ASSOCIATED_RESET": { + "value": "S_ARESETN" + } + } + }, + "S_ARESETN": { + "type": "rst", + "direction": "I" + } + }, + "interface_nets": { + "m03_couplers_to_m03_couplers": { + "interface_ports": [ + "S_AXI", + "M_AXI" + ] + } + } + } + }, + "interface_nets": { + "xbar_to_m03_couplers": { + "interface_ports": [ + "xbar/M03_AXI", + "m03_couplers/S_AXI" + ] + }, + "axi_interconnect_0_to_s00_couplers": { + "interface_ports": [ + "S00_AXI", + "s00_couplers/S_AXI" + ] + }, + "s00_couplers_to_xbar": { + "interface_ports": [ + "s00_couplers/M_AXI", + "xbar/S00_AXI" + ] + }, + "m00_couplers_to_axi_interconnect_0": { + "interface_ports": [ + "M00_AXI", + "m00_couplers/M_AXI" + ] + }, + "xbar_to_m00_couplers": { + "interface_ports": [ + "xbar/M00_AXI", + "m00_couplers/S_AXI" + ] + }, + "m01_couplers_to_axi_interconnect_0": { + "interface_ports": [ + "M01_AXI", + "m01_couplers/M_AXI" + ] + }, + "m02_couplers_to_axi_interconnect_0": { + "interface_ports": [ + "M02_AXI", + "m02_couplers/M_AXI" + ] + }, + "xbar_to_m01_couplers": { + "interface_ports": [ + "xbar/M01_AXI", + "m01_couplers/S_AXI" + ] + }, + "m03_couplers_to_axi_interconnect_0": { + "interface_ports": [ + "M03_AXI", + "m03_couplers/M_AXI" + ] + }, + "xbar_to_m02_couplers": { + "interface_ports": [ + "xbar/M02_AXI", + "m02_couplers/S_AXI" + ] + } + }, + "nets": { + "axi_interconnect_0_ACLK_net": { + "ports": [ + "ACLK", + "xbar/aclk", + "s00_couplers/S_ACLK", + "s00_couplers/M_ACLK", + "m00_couplers/M_ACLK", + "m01_couplers/M_ACLK", + "m02_couplers/M_ACLK", + "m03_couplers/M_ACLK", + "m00_couplers/S_ACLK", + "m01_couplers/S_ACLK", + "m02_couplers/S_ACLK", + "m03_couplers/S_ACLK" + ] + }, + "axi_interconnect_0_ARESETN_net": { + "ports": [ + "ARESETN", + "xbar/aresetn", + "s00_couplers/S_ARESETN", + "s00_couplers/M_ARESETN", + "m00_couplers/M_ARESETN", + "m01_couplers/M_ARESETN", + "m02_couplers/M_ARESETN", + "m03_couplers/M_ARESETN", + "m00_couplers/S_ARESETN", + "m01_couplers/S_ARESETN", + "m02_couplers/S_ARESETN", + "m03_couplers/S_ARESETN" + ] + } + } + }, + "axi_single_spi_0": { + "vlnv": "xilinx.com:ip:axi_quad_spi:3.2", + "xci_name": "m3_for_xilinx_axi_single_spi_0_0", + "parameters": { + "C_FIFO_DEPTH": { + "value": "256" + }, + "C_USE_STARTUP": { + "value": "0" + } + } + }, + "axi_quad_spi_0": { + "vlnv": "xilinx.com:ip:axi_quad_spi:3.2", + "xci_name": "m3_for_xilinx_axi_quad_spi_0_0", + "parameters": { + "C_FIFO_DEPTH": { + "value": "256" + }, + "C_SPI_MODE": { + "value": "2" + }, + "C_USE_STARTUP": { + "value": "0" + } + } + }, + "axi_xip_quad_spi_0": { + "vlnv": "xilinx.com:ip:axi_quad_spi:3.2", + "xci_name": "m3_for_xilinx_axi_xip_quad_spi_0_0", + "parameters": { + "C_SPI_MEMORY": { + "value": "3" + }, + "C_SPI_MEM_ADDR_BITS": { + "value": "24" + }, + "C_SPI_MODE": { + "value": "2" + }, + "C_TYPE_OF_AXI4_INTERFACE": { + "value": "1" + }, + "C_USE_STARTUP": { + "value": "0" + }, + "C_XIP_MODE": { + "value": "1" + } + } + }, + "axi_gpio_0": { + "vlnv": "xilinx.com:ip:axi_gpio:2.0", + "xci_name": "m3_for_xilinx_axi_gpio_0_0" + }, + "axi_protocol_convert_0": { + "vlnv": "xilinx.com:ip:axi_protocol_converter:2.1", + "xci_name": "m3_for_xilinx_axi_protocol_convert_0_0" + }, + "DAPLink_to_Arty_shield_0": { + "vlnv": "Arm.com:user:DAPLink_to_Arty_shield:1.0", + "xci_name": "m3_for_xilinx_DAPLink_to_Arty_shield_0_0" + } + }, + "interface_nets": { + "axi_protocol_convert_0_M_AXI": { + "interface_ports": [ + "axi_xip_quad_spi_0/AXI_FULL", + "axi_protocol_convert_0/M_AXI" + ] + }, + "C_AXI_1": { + "interface_ports": [ + "C_AXI", + "axi_protocol_convert_0/S_AXI" + ] + }, + "axi_quad_spi_1_SPI_0": { + "interface_ports": [ + "axi_quad_spi_0/SPI_0", + "DAPLink_to_Arty_shield_0/QSPI" + ] + }, + "axi_xip_quad_spi_0_SPI_0": { + "interface_ports": [ + "DAPLink_to_Arty_shield_0/QSPI_XIP", + "axi_xip_quad_spi_0/SPI_0" + ] + }, + "axi_single_spi_0_SPI_0": { + "interface_ports": [ + "axi_single_spi_0/SPI_0", + "DAPLink_to_Arty_shield_0/SPI" + ] + }, + "axi_interconnect_0_M00_AXI": { + "interface_ports": [ + "axi_interconnect_0/M00_AXI", + "axi_xip_quad_spi_0/AXI_LITE" + ] + }, + "axi_interconnect_0_M03_AXI": { + "interface_ports": [ + "axi_interconnect_0/M03_AXI", + "axi_quad_spi_0/AXI_LITE" + ] + }, + "DAPLink_to_Arty_shie_1_UART": { + "interface_ports": [ + "UART_out", + "DAPLink_to_Arty_shield_0/UART_out" + ] + }, + "axi_interconnect_0_M01_AXI": { + "interface_ports": [ + "axi_interconnect_0/M01_AXI", + "axi_gpio_0/S_AXI" + ] + }, + "axi_interconnect_0_M02_AXI": { + "interface_ports": [ + "axi_interconnect_0/M02_AXI", + "axi_single_spi_0/AXI_LITE" + ] + }, + "S_AXI_1": { + "interface_ports": [ + "S_AXI", + "axi_interconnect_0/S00_AXI" + ] + }, + "DAPLink_to_Arty_shie_1_shield": { + "interface_ports": [ + "Shield_out", + "DAPLink_to_Arty_shield_0/shield" + ] + } + }, + "nets": { + "s_axi_aclk_1": { + "ports": [ + "s_axi_aclk", + "axi_single_spi_0/s_axi_aclk", + "axi_quad_spi_0/s_axi_aclk", + "axi_xip_quad_spi_0/s_axi_aclk", + "axi_gpio_0/s_axi_aclk", + "axi_xip_quad_spi_0/s_axi4_aclk", + "axi_protocol_convert_0/aclk", + "axi_interconnect_0/ACLK", + "axi_interconnect_0/S00_ACLK", + "axi_interconnect_0/M00_ACLK", + "axi_interconnect_0/M01_ACLK", + "axi_interconnect_0/M02_ACLK", + "axi_interconnect_0/M03_ACLK" + ] + }, + "s_axi_aresetn_1": { + "ports": [ + "s_axi_aresetn", + "axi_single_spi_0/s_axi_aresetn", + "axi_quad_spi_0/s_axi_aresetn", + "axi_xip_quad_spi_0/s_axi_aresetn", + "axi_gpio_0/s_axi_aresetn", + "axi_xip_quad_spi_0/s_axi4_aresetn", + "axi_protocol_convert_0/aresetn", + "axi_interconnect_0/ARESETN", + "axi_interconnect_0/S00_ARESETN", + "axi_interconnect_0/M00_ARESETN", + "axi_interconnect_0/M01_ARESETN", + "axi_interconnect_0/M02_ARESETN", + "axi_interconnect_0/M03_ARESETN" + ] + }, + "DAPLink_to_Arty_shie_1_DAPLink_fittedn": { + "ports": [ + "DAPLink_to_Arty_shield_0/DAPLink_fittedn", + "DAPLink_fittedn" + ] + }, + "DAPLink_to_Arty_shie_1_uart_rxd_axi": { + "ports": [ + "DAPLink_to_Arty_shield_0/uart_rxd_axi", + "uart_rxd_axi" + ] + }, + "DAPLink_to_Arty_shie_1_SWDI": { + "ports": [ + "DAPLink_to_Arty_shield_0/SWDI", + "SWDI" + ] + }, + "DAPLink_to_Arty_shie_1_SWCLK": { + "ports": [ + "DAPLink_to_Arty_shield_0/SWCLK", + "SWCLK" + ] + }, + "DAPLink_to_Arty_shie_1_SWRSTn": { + "ports": [ + "DAPLink_to_Arty_shield_0/SWRSTn", + "nSRST" + ] + }, + "uart_txd_axi_1": { + "ports": [ + "uart_txd_axi", + "DAPLink_to_Arty_shield_0/uart_txd_axi" + ] + }, + "ext_spi_clk_1": { + "ports": [ + "ext_spi_clk", + "axi_single_spi_0/ext_spi_clk", + "axi_quad_spi_0/ext_spi_clk", + "axi_xip_quad_spi_0/ext_spi_clk", + "DAPLink_to_Arty_shield_0/ext_spi_clk" + ] + }, + "axi_quad_spi_1_ip2intc_irpt": { + "ports": [ + "axi_quad_spi_0/ip2intc_irpt", + "qspi_irq" + ] + }, + "axi_single_spi_0_ip2intc_irpt": { + "ports": [ + "axi_single_spi_0/ip2intc_irpt", + "spi_irq" + ] + }, + "axi_gpio_0_gpio_io_o": { + "ports": [ + "axi_gpio_0/gpio_io_o", + "DAPLink_to_Arty_shield_0/qspi_sel" + ] + }, + "axi_xip_quad_spi_0_ip2intc_irpt": { + "ports": [ + "axi_xip_quad_spi_0/ip2intc_irpt", + "qspi_xip_irq" + ] + }, + "SWDO_1": { + "ports": [ + "SWDO", + "DAPLink_to_Arty_shield_0/SWDO" + ] + }, + "SWDOEN_1": { + "ports": [ + "SWDOEN", + "DAPLink_to_Arty_shield_0/SWDOEN" + ] + } + } + }, + "xlconcat_0": { + "vlnv": "xilinx.com:ip:xlconcat:2.1", + "xci_name": "m3_for_xilinx_xlconcat_0_0", + "parameters": { + "NUM_PORTS": { + "value": "8" + } + } + }, + "xlconcat_1": { + "vlnv": "xilinx.com:ip:xlconcat:2.1", + "xci_name": "m3_for_xilinx_xlconcat_1_0", + "parameters": { + "IN6_WIDTH": { + "value": "25" + }, + "NUM_PORTS": { + "value": "2" + } + } + }, + "xlconstant_1": { + "vlnv": "xilinx.com:ip:xlconstant:1.1", + "xci_name": "m3_for_xilinx_xlconstant_1_0", + "parameters": { + "CONST_VAL": { + "value": "1" + }, + "CONST_WIDTH": { + "value": "1" + } + } + }, + "Cortex_M3_0": { + "vlnv": "Arm.com:CortexM:CORTEXM3_AXI:1.1", + "xci_name": "m3_for_xilinx_Cortex_M3_0_0", + "parameters": { + "Component_Name": { + "value": "m3_for_arty_a7_Cortex_M3_0_0" + }, + "DEBUG_LVL": { + "value": "2" + }, + "DTCM_SIZE": { + "value": "\"0110\"" + }, + "ITCM_INIT_FILE": { + "value": "bram_a7.hex" + }, + "ITCM_SIZE": { + "value": "\"0110\"" + }, + "JTAG_PRESENT": { + "value": "false" + }, + "TRACE_LVL": { + "value": "0" + }, + "WIC_PRESENT": { + "value": "false" + } + } + }, + "clk_wiz": { + "vlnv": "xilinx.com:ip:clk_wiz:6.0", + "xci_name": "m3_for_xilinx_clk_wiz_0", + "parameters": { + "CLKIN1_JITTER_PS": { + "value": "200.0" + }, + "CLKOUT1_JITTER": { + "value": "192.113" + }, + "CLKOUT1_PHASE_ERROR": { + "value": "164.985" + }, + "CLKOUT1_REQUESTED_OUT_FREQ": { + "value": "50.000" + }, + "MMCM_CLKFBOUT_MULT_F": { + "value": "20.000" + }, + "MMCM_CLKIN1_PERIOD": { + "value": "20.000" + }, + "MMCM_CLKIN2_PERIOD": { + "value": "10.0" + }, + "MMCM_CLKOUT0_DIVIDE_F": { + "value": "20.000" + }, + "MMCM_DIVCLK_DIVIDE": { + "value": "1" + }, + "PRIM_IN_FREQ": { + "value": "50.000" + }, + "RESET_PORT": { + "value": "resetn" + }, + "RESET_TYPE": { + "value": "ACTIVE_LOW" + } + } + }, + "rst_clk_wiz_100M": { + "vlnv": "xilinx.com:ip:proc_sys_reset:5.0", + "xci_name": "m3_for_xilinx_rst_clk_wiz_100M_0" + }, + "axi_gpio_0": { + "vlnv": "xilinx.com:ip:axi_gpio:2.0", + "xci_name": "m3_for_xilinx_axi_gpio_0_1", + "parameters": { + "C_GPIO_WIDTH": { + "value": "4" + }, + "C_INTERRUPT_PRESENT": { + "value": "1" + }, + "USE_BOARD_FLOW": { + "value": "true" + } + } + }, + "axi_gpio_1": { + "vlnv": "xilinx.com:ip:axi_gpio:2.0", + "xci_name": "m3_for_xilinx_axi_gpio_1_0", + "parameters": { + "C_GPIO_WIDTH": { + "value": "4" + }, + "C_INTERRUPT_PRESENT": { + "value": "1" + }, + "USE_BOARD_FLOW": { + "value": "true" + } + } + }, + "axi_quad_spi_0": { + "vlnv": "xilinx.com:ip:axi_quad_spi:3.2", + "xci_name": "m3_for_xilinx_axi_quad_spi_0_1", + "parameters": { + "C_FIFO_DEPTH": { + "value": "256" + }, + "C_USE_STARTUP": { + "value": "0" + } + } + } + }, + "interface_nets": { + "axi_interconnect_0_M04_AXI": { + "interface_ports": [ + "axi_interconnect_0/M04_AXI", + "axi_quad_spi_0/AXI_LITE" + ] + }, + "qspi_flash": { + "interface_ports": [ + "qspi_flash", + "axi_quad_spi_0/SPI_0" + ] + }, + "axi_interconnect_0_M01_AXI": { + "interface_ports": [ + "axi_gpio_0/S_AXI", + "axi_interconnect_0/M01_AXI" + ] + }, + "axi_gpio_1_GPIO": { + "interface_ports": [ + "LED_4bit", + "axi_gpio_1/GPIO" + ] + }, + "V2C_DAPLink_interface_Shield_out": { + "interface_ports": [ + "DAPLink", + "daplink_if_0/Shield_out" + ] + }, + "S_AXI_1": { + "interface_ports": [ + "daplink_if_0/S_AXI", + "axi_interconnect_0/M05_AXI" + ] + }, + "axi_interconnect_0_M03_AXI": { + "interface_ports": [ + "axi_bram_ctrl_0/S_AXI", + "axi_interconnect_0/M03_AXI" + ] + }, + "V2C_DAPLink_interface_UART_out": { + "interface_ports": [ + "usb_uart", + "daplink_if_0/UART_out" + ] + }, + "axi_gpio_0_GPIO": { + "interface_ports": [ + "key_4bit", + "axi_gpio_0/GPIO" + ] + }, + "Cortex_M3_0_CM3_SYS_AXI3": { + "interface_ports": [ + "Cortex_M3_0/CM3_SYS_AXI3", + "axi_interconnect_0/S00_AXI" + ] + }, + "axi_bram_ctrl_0_BRAM_PORTA": { + "interface_ports": [ + "axi_bram_ctrl_0/BRAM_PORTA", + "blk_mem_gen_0/BRAM_PORTA" + ] + }, + "axi_interconnect_0_M02_AXI": { + "interface_ports": [ + "axi_interconnect_0/M02_AXI", + "axi_gpio_1/S_AXI" + ] + }, + "axi_interconnect_0_M00_AXI": { + "interface_ports": [ + "axi_uartlite_0/S_AXI", + "axi_interconnect_0/M00_AXI" + ] + }, + "Cortex_M3_0_CM3_CODE_AXI3": { + "interface_ports": [ + "Cortex_M3_0/CM3_CODE_AXI3", + "daplink_if_0/C_AXI" + ] + } + }, + "nets": { + "V2C_DAPLink_interface_DAPLink_fittedn": { + "ports": [ + "daplink_if_0/DAPLink_fittedn", + "xlconcat_1/In0", + "xlconcat_0/In7" + ] + }, + "V2C_DAPLink_interface_qspi_irq": { + "ports": [ + "daplink_if_0/qspi_irq", + "xlconcat_0/In4" + ] + }, + "V2C_DAPLink_interface_qspi_xip_irq": { + "ports": [ + "daplink_if_0/qspi_xip_irq", + "xlconcat_0/In6" + ] + }, + "V2C_DAPLink_interface_spi_irq": { + "ports": [ + "daplink_if_0/spi_irq", + "xlconcat_0/In5" + ] + }, + "V2C_DAPLink_interface_uart_rxd_axi": { + "ports": [ + "daplink_if_0/uart_rxd_axi", + "axi_uartlite_0/rx" + ] + }, + "axi_uartlite_0_interrupt": { + "ports": [ + "axi_uartlite_0/interrupt", + "xlconcat_0/In0" + ] + }, + "axi_uartlite_0_tx": { + "ports": [ + "axi_uartlite_0/tx", + "daplink_if_0/uart_txd_axi" + ] + }, + "clk_wiz_0_clk_out1": { + "ports": [ + "clk_wiz/clk_out1", + "axi_bram_ctrl_0/s_axi_aclk", + "axi_uartlite_0/s_axi_aclk", + "axi_interconnect_0/ACLK", + "axi_interconnect_0/S00_ACLK", + "axi_interconnect_0/M00_ACLK", + "axi_interconnect_0/M01_ACLK", + "axi_interconnect_0/M02_ACLK", + "axi_interconnect_0/M03_ACLK", + "axi_interconnect_0/M04_ACLK", + "daplink_if_0/s_axi_aclk", + "axi_interconnect_0/M05_ACLK", + "Cortex_M3_0/HCLK", + "rst_clk_wiz_100M/slowest_sync_clk", + "axi_gpio_0/s_axi_aclk", + "axi_gpio_1/s_axi_aclk", + "axi_quad_spi_0/s_axi_aclk", + "axi_quad_spi_0/ext_spi_clk", + "daplink_if_0/ext_spi_clk" + ] + }, + "xlconstant_1_dout": { + "ports": [ + "xlconstant_1/dout", + "xlconcat_1/In1" + ] + }, + "xlconcat_0_dout": { + "ports": [ + "xlconcat_0/dout", + "Cortex_M3_0/IRQ" + ] + }, + "xlconcat_1_dout": { + "ports": [ + "xlconcat_1/dout", + "Cortex_M3_0/CFGITCMEN" + ] + }, + "CortexM3DbgAXI_0_SWDOEN": { + "ports": [ + "Cortex_M3_0/SWDOEN", + "daplink_if_0/SWDOEN" + ] + }, + "CortexM3DbgAXI_0_SWDO": { + "ports": [ + "Cortex_M3_0/SWDO", + "daplink_if_0/SWDO" + ] + }, + "daplink_if_0_SWCLK": { + "ports": [ + "daplink_if_0/SWCLK", + "Cortex_M3_0/SWCLKTCK" + ] + }, + "daplink_if_0_SWDI": { + "ports": [ + "daplink_if_0/SWDI", + "Cortex_M3_0/SWDITMS" + ] + }, + "clk_wiz_locked": { + "ports": [ + "clk_wiz/locked", + "rst_clk_wiz_100M/dcm_locked" + ] + }, + "rst_clk_wiz_100M_peripheral_aresetn": { + "ports": [ + "rst_clk_wiz_100M/peripheral_aresetn", + "axi_bram_ctrl_0/s_axi_aresetn", + "axi_uartlite_0/s_axi_aresetn", + "daplink_if_0/s_axi_aresetn", + "axi_interconnect_0/S00_ARESETN", + "axi_interconnect_0/M00_ARESETN", + "axi_interconnect_0/M01_ARESETN", + "axi_interconnect_0/M02_ARESETN", + "axi_interconnect_0/M03_ARESETN", + "axi_interconnect_0/M04_ARESETN", + "axi_interconnect_0/M05_ARESETN", + "axi_interconnect_0/ARESETN", + "Cortex_M3_0/SYSRESETn", + "axi_gpio_0/s_axi_aresetn", + "axi_gpio_1/s_axi_aresetn", + "axi_quad_spi_0/s_axi_aresetn" + ] + }, + "clk_50MHz": { + "ports": [ + "clk_50MHz", + "clk_wiz/clk_in1" + ] + }, + "sys_rst_n": { + "ports": [ + "sys_rst_n", + "rst_clk_wiz_100M/ext_reset_in", + "clk_wiz/resetn" + ] + }, + "axi_gpio_0_ip2intc_irpt": { + "ports": [ + "axi_gpio_0/ip2intc_irpt", + "xlconcat_0/In1" + ] + }, + "axi_gpio_1_ip2intc_irpt": { + "ports": [ + "axi_gpio_1/ip2intc_irpt", + "xlconcat_0/In2" + ] + }, + "axi_quad_spi_0_ip2intc_irpt": { + "ports": [ + "axi_quad_spi_0/ip2intc_irpt", + "xlconcat_0/In3" + ] + } + }, + "addressing": { + "/Cortex_M3_0": { + "address_spaces": { + "CM3_SYS_AXI3": { + "range": "4G", + "width": "32", + "segments": { + "SEG_axi_bram_ctrl_0_Mem0": { + "address_block": "/axi_bram_ctrl_0/S_AXI/Mem0", + "offset": "0x60000000", + "range": "8K" + }, + "SEG_axi_gpio_0_Reg": { + "address_block": "/axi_gpio_0/S_AXI/Reg", + "offset": "0x40110000", + "range": "64K" + }, + "SEG_axi_gpio_0_Reg1": { + "address_block": "/daplink_if_0/axi_gpio_0/S_AXI/Reg", + "offset": "0x40010000", + "range": "64K" + }, + "SEG_axi_gpio_1_Reg": { + "address_block": "/axi_gpio_1/S_AXI/Reg", + "offset": "0x40120000", + "range": "64K" + }, + "SEG_axi_quad_spi_0_Reg": { + "address_block": "/axi_quad_spi_0/AXI_LITE/Reg", + "offset": "0x40130000", + "range": "64K" + }, + "SEG_axi_quad_spi_0_Reg1": { + "address_block": "/daplink_if_0/axi_quad_spi_0/AXI_LITE/Reg", + "offset": "0x40020000", + "range": "64K" + }, + "SEG_axi_single_spi_0_Reg": { + "address_block": "/daplink_if_0/axi_single_spi_0/AXI_LITE/Reg", + "offset": "0x40030000", + "range": "64K" + }, + "SEG_axi_uartlite_0_Reg": { + "address_block": "/axi_uartlite_0/S_AXI/Reg", + "offset": "0x40100000", + "range": "64K" + }, + "SEG_axi_xip_quad_spi_0_Reg": { + "address_block": "/daplink_if_0/axi_xip_quad_spi_0/AXI_LITE/Reg", + "offset": "0x40000000", + "range": "64K" + } + } + }, + "CM3_CODE_AXI3": { + "range": "4G", + "width": "32", + "segments": { + "SEG_axi_xip_quad_spi_0_MEM0": { + "address_block": "/daplink_if_0/axi_xip_quad_spi_0/aximm/MEM0", + "offset": "0x00000000", + "range": "1M" + } + } + } + } + } + } + } +} \ No newline at end of file diff --git a/lib/bd/xilinx/zynq_default.bd b/lib/bd/xilinx/zynq_default.bd new file mode 100644 index 0000000..0ba2ab1 --- /dev/null +++ b/lib/bd/xilinx/zynq_default.bd @@ -0,0 +1,832 @@ +{ + "design": { + "design_info": { + "boundary_crc": "0xCC6CFA5306BD3ECB", + "device": "xc7z020clg400-2", + "name": "zynq_default", + "synth_flow_mode": "Hierarchical", + "tool_version": "2018.3", + "validated": "true" + }, + "design_tree": { + "processing_system7_0": "" + }, + "interface_ports": { + "DDR": { + "mode": "Master", + "vlnv": "xilinx.com:interface:ddrx_rtl:1.0", + "parameters": { + "AXI_ARBITRATION_SCHEME": { + "value": "TDM", + "value_src": "default" + }, + "BURST_LENGTH": { + "value": "8", + "value_src": "default" + }, + "CAN_DEBUG": { + "value": "false", + "value_src": "default" + }, + "CAS_LATENCY": { + "value": "11", + "value_src": "default" + }, + "CAS_WRITE_LATENCY": { + "value": "11", + "value_src": "default" + }, + "CS_ENABLED": { + "value": "true", + "value_src": "default" + }, + "DATA_MASK_ENABLED": { + "value": "true", + "value_src": "default" + }, + "DATA_WIDTH": { + "value": "8", + "value_src": "default" + }, + "MEMORY_TYPE": { + "value": "COMPONENTS", + "value_src": "default" + }, + "MEM_ADDR_MAP": { + "value": "ROW_COLUMN_BANK", + "value_src": "default" + }, + "SLOT": { + "value": "Single", + "value_src": "default" + }, + "TIMEPERIOD_PS": { + "value": "1250", + "value_src": "default" + } + } + }, + "FIXED_IO": { + "mode": "Master", + "vlnv": "xilinx.com:display_processing_system7:fixedio_rtl:1.0", + "parameters": { + "CAN_DEBUG": { + "value": "false", + "value_src": "default" + } + } + } + }, + "components": { + "processing_system7_0": { + "vlnv": "xilinx.com:ip:processing_system7:5.5", + "xci_name": "zynq_default_processing_system7_0_1", + "parameters": { + "PCW_ACT_APU_PERIPHERAL_FREQMHZ": { + "value": "666.666687" + }, + "PCW_ACT_CAN_PERIPHERAL_FREQMHZ": { + "value": "10.000000" + }, + "PCW_ACT_DCI_PERIPHERAL_FREQMHZ": { + "value": "10.158730" + }, + "PCW_ACT_ENET0_PERIPHERAL_FREQMHZ": { + "value": "125.000000" + }, + "PCW_ACT_ENET1_PERIPHERAL_FREQMHZ": { + "value": "10.000000" + }, + "PCW_ACT_FPGA0_PERIPHERAL_FREQMHZ": { + "value": "10.000000" + }, + "PCW_ACT_FPGA1_PERIPHERAL_FREQMHZ": { + "value": "10.000000" + }, + "PCW_ACT_FPGA2_PERIPHERAL_FREQMHZ": { + "value": "10.000000" + }, + "PCW_ACT_FPGA3_PERIPHERAL_FREQMHZ": { + "value": "10.000000" + }, + "PCW_ACT_PCAP_PERIPHERAL_FREQMHZ": { + "value": "200.000000" + }, + "PCW_ACT_QSPI_PERIPHERAL_FREQMHZ": { + "value": "200.000000" + }, + "PCW_ACT_SDIO_PERIPHERAL_FREQMHZ": { + "value": "100.000000" + }, + "PCW_ACT_SMC_PERIPHERAL_FREQMHZ": { + "value": "10.000000" + }, + "PCW_ACT_SPI_PERIPHERAL_FREQMHZ": { + "value": "10.000000" + }, + "PCW_ACT_TPIU_PERIPHERAL_FREQMHZ": { + "value": "200.000000" + }, + "PCW_ACT_TTC0_CLK0_PERIPHERAL_FREQMHZ": { + "value": "111.111115" + }, + "PCW_ACT_TTC0_CLK1_PERIPHERAL_FREQMHZ": { + "value": "111.111115" + }, + "PCW_ACT_TTC0_CLK2_PERIPHERAL_FREQMHZ": { + "value": "111.111115" + }, + "PCW_ACT_TTC1_CLK0_PERIPHERAL_FREQMHZ": { + "value": "111.111115" + }, + "PCW_ACT_TTC1_CLK1_PERIPHERAL_FREQMHZ": { + "value": "111.111115" + }, + "PCW_ACT_TTC1_CLK2_PERIPHERAL_FREQMHZ": { + "value": "111.111115" + }, + "PCW_ACT_UART_PERIPHERAL_FREQMHZ": { + "value": "100.000000" + }, + "PCW_ACT_WDT_PERIPHERAL_FREQMHZ": { + "value": "111.111115" + }, + "PCW_CLK0_FREQ": { + "value": "10000000" + }, + "PCW_CLK1_FREQ": { + "value": "10000000" + }, + "PCW_CLK2_FREQ": { + "value": "10000000" + }, + "PCW_CLK3_FREQ": { + "value": "10000000" + }, + "PCW_DDR_RAM_HIGHADDR": { + "value": "0x3FFFFFFF" + }, + "PCW_ENET0_ENET0_IO": { + "value": "MIO 16 .. 27" + }, + "PCW_ENET0_GRP_MDIO_ENABLE": { + "value": "1" + }, + "PCW_ENET0_GRP_MDIO_IO": { + "value": "MIO 52 .. 53" + }, + "PCW_ENET0_PERIPHERAL_CLKSRC": { + "value": "IO PLL" + }, + "PCW_ENET0_PERIPHERAL_ENABLE": { + "value": "1" + }, + "PCW_ENET0_PERIPHERAL_FREQMHZ": { + "value": "1000 Mbps" + }, + "PCW_ENET0_RESET_ENABLE": { + "value": "0" + }, + "PCW_ENET_RESET_ENABLE": { + "value": "1" + }, + "PCW_ENET_RESET_SELECT": { + "value": "Share reset pin" + }, + "PCW_EN_CLK0_PORT": { + "value": "0" + }, + "PCW_EN_CLKTRIG0_PORT": { + "value": "0" + }, + "PCW_EN_EMIO_ENET0": { + "value": "0" + }, + "PCW_EN_EMIO_GPIO": { + "value": "0" + }, + "PCW_EN_EMIO_UART0": { + "value": "0" + }, + "PCW_EN_ENET0": { + "value": "1" + }, + "PCW_EN_GPIO": { + "value": "1" + }, + "PCW_EN_QSPI": { + "value": "1" + }, + "PCW_EN_RST0_PORT": { + "value": "0" + }, + "PCW_EN_SDIO0": { + "value": "1" + }, + "PCW_EN_UART0": { + "value": "0" + }, + "PCW_EN_UART1": { + "value": "1" + }, + "PCW_EN_USB0": { + "value": "1" + }, + "PCW_GPIO_EMIO_GPIO_ENABLE": { + "value": "0" + }, + "PCW_GPIO_MIO_GPIO_ENABLE": { + "value": "1" + }, + "PCW_GPIO_MIO_GPIO_IO": { + "value": "MIO" + }, + "PCW_I2C_RESET_ENABLE": { + "value": "1" + }, + "PCW_MIO_0_IOTYPE": { + "value": "LVCMOS 3.3V" + }, + "PCW_MIO_0_PULLUP": { + "value": "enabled" + }, + "PCW_MIO_0_SLEW": { + "value": "slow" + }, + "PCW_MIO_10_IOTYPE": { + "value": "LVCMOS 3.3V" + }, + "PCW_MIO_10_PULLUP": { + "value": "enabled" + }, + "PCW_MIO_10_SLEW": { + "value": "slow" + }, + "PCW_MIO_11_IOTYPE": { + "value": "LVCMOS 3.3V" + }, + "PCW_MIO_11_PULLUP": { + "value": "enabled" + }, + "PCW_MIO_11_SLEW": { + "value": "slow" + }, + "PCW_MIO_12_IOTYPE": { + "value": "LVCMOS 3.3V" + }, + "PCW_MIO_12_PULLUP": { + "value": "enabled" + }, + "PCW_MIO_12_SLEW": { + "value": "slow" + }, + "PCW_MIO_13_IOTYPE": { + "value": "LVCMOS 3.3V" + }, + "PCW_MIO_13_PULLUP": { + "value": "enabled" + }, + "PCW_MIO_13_SLEW": { + "value": "slow" + }, + "PCW_MIO_14_IOTYPE": { + "value": "LVCMOS 3.3V" + }, + "PCW_MIO_14_PULLUP": { + "value": "enabled" + }, + "PCW_MIO_14_SLEW": { + "value": "slow" + }, + "PCW_MIO_15_IOTYPE": { + "value": "LVCMOS 3.3V" + }, + "PCW_MIO_15_PULLUP": { + "value": "enabled" + }, + "PCW_MIO_15_SLEW": { + "value": "slow" + }, + "PCW_MIO_16_IOTYPE": { + "value": "LVCMOS 1.8V" + }, + "PCW_MIO_16_PULLUP": { + "value": "enabled" + }, + "PCW_MIO_16_SLEW": { + "value": "fast" + }, + "PCW_MIO_17_IOTYPE": { + "value": "LVCMOS 1.8V" + }, + "PCW_MIO_17_PULLUP": { + "value": "enabled" + }, + "PCW_MIO_17_SLEW": { + "value": "fast" + }, + "PCW_MIO_18_IOTYPE": { + "value": "LVCMOS 1.8V" + }, + "PCW_MIO_18_PULLUP": { + "value": "enabled" + }, + "PCW_MIO_18_SLEW": { + "value": "fast" + }, + "PCW_MIO_19_IOTYPE": { + "value": "LVCMOS 1.8V" + }, + "PCW_MIO_19_PULLUP": { + "value": "enabled" + }, + "PCW_MIO_19_SLEW": { + "value": "fast" + }, + "PCW_MIO_1_IOTYPE": { + "value": "LVCMOS 3.3V" + }, + "PCW_MIO_1_PULLUP": { + "value": "enabled" + }, + "PCW_MIO_1_SLEW": { + "value": "fast" + }, + "PCW_MIO_20_IOTYPE": { + "value": "LVCMOS 1.8V" + }, + "PCW_MIO_20_PULLUP": { + "value": "enabled" + }, + "PCW_MIO_20_SLEW": { + "value": "fast" + }, + "PCW_MIO_21_IOTYPE": { + "value": "LVCMOS 1.8V" + }, + "PCW_MIO_21_PULLUP": { + "value": "enabled" + }, + "PCW_MIO_21_SLEW": { + "value": "fast" + }, + "PCW_MIO_22_IOTYPE": { + "value": "LVCMOS 1.8V" + }, + "PCW_MIO_22_PULLUP": { + "value": "enabled" + }, + "PCW_MIO_22_SLEW": { + "value": "fast" + }, + "PCW_MIO_23_IOTYPE": { + "value": "LVCMOS 1.8V" + }, + "PCW_MIO_23_PULLUP": { + "value": "enabled" + }, + "PCW_MIO_23_SLEW": { + "value": "fast" + }, + "PCW_MIO_24_IOTYPE": { + "value": "LVCMOS 1.8V" + }, + "PCW_MIO_24_PULLUP": { + "value": "enabled" + }, + "PCW_MIO_24_SLEW": { + "value": "fast" + }, + "PCW_MIO_25_IOTYPE": { + "value": "LVCMOS 1.8V" + }, + "PCW_MIO_25_PULLUP": { + "value": "enabled" + }, + "PCW_MIO_25_SLEW": { + "value": "fast" + }, + "PCW_MIO_26_IOTYPE": { + "value": "LVCMOS 1.8V" + }, + "PCW_MIO_26_PULLUP": { + "value": "enabled" + }, + "PCW_MIO_26_SLEW": { + "value": "fast" + }, + "PCW_MIO_27_IOTYPE": { + "value": "LVCMOS 1.8V" + }, + "PCW_MIO_27_PULLUP": { + "value": "enabled" + }, + "PCW_MIO_27_SLEW": { + "value": "fast" + }, + "PCW_MIO_28_IOTYPE": { + "value": "LVCMOS 1.8V" + }, + "PCW_MIO_28_PULLUP": { + "value": "enabled" + }, + "PCW_MIO_28_SLEW": { + "value": "fast" + }, + "PCW_MIO_29_IOTYPE": { + "value": "LVCMOS 1.8V" + }, + "PCW_MIO_29_PULLUP": { + "value": "enabled" + }, + "PCW_MIO_29_SLEW": { + "value": "fast" + }, + "PCW_MIO_2_IOTYPE": { + "value": "LVCMOS 3.3V" + }, + "PCW_MIO_2_SLEW": { + "value": "fast" + }, + "PCW_MIO_30_IOTYPE": { + "value": "LVCMOS 1.8V" + }, + "PCW_MIO_30_PULLUP": { + "value": "enabled" + }, + "PCW_MIO_30_SLEW": { + "value": "fast" + }, + "PCW_MIO_31_IOTYPE": { + "value": "LVCMOS 1.8V" + }, + "PCW_MIO_31_PULLUP": { + "value": "enabled" + }, + "PCW_MIO_31_SLEW": { + "value": "fast" + }, + "PCW_MIO_32_IOTYPE": { + "value": "LVCMOS 1.8V" + }, + "PCW_MIO_32_PULLUP": { + "value": "enabled" + }, + "PCW_MIO_32_SLEW": { + "value": "fast" + }, + "PCW_MIO_33_IOTYPE": { + "value": "LVCMOS 1.8V" + }, + "PCW_MIO_33_PULLUP": { + "value": "enabled" + }, + "PCW_MIO_33_SLEW": { + "value": "fast" + }, + "PCW_MIO_34_IOTYPE": { + "value": "LVCMOS 1.8V" + }, + "PCW_MIO_34_PULLUP": { + "value": "enabled" + }, + "PCW_MIO_34_SLEW": { + "value": "fast" + }, + "PCW_MIO_35_IOTYPE": { + "value": "LVCMOS 1.8V" + }, + "PCW_MIO_35_PULLUP": { + "value": "enabled" + }, + "PCW_MIO_35_SLEW": { + "value": "fast" + }, + "PCW_MIO_36_IOTYPE": { + "value": "LVCMOS 1.8V" + }, + "PCW_MIO_36_PULLUP": { + "value": "enabled" + }, + "PCW_MIO_36_SLEW": { + "value": "fast" + }, + "PCW_MIO_37_IOTYPE": { + "value": "LVCMOS 1.8V" + }, + "PCW_MIO_37_PULLUP": { + "value": "enabled" + }, + "PCW_MIO_37_SLEW": { + "value": "fast" + }, + "PCW_MIO_38_IOTYPE": { + "value": "LVCMOS 1.8V" + }, + "PCW_MIO_38_PULLUP": { + "value": "enabled" + }, + "PCW_MIO_38_SLEW": { + "value": "fast" + }, + "PCW_MIO_39_IOTYPE": { + "value": "LVCMOS 1.8V" + }, + "PCW_MIO_39_PULLUP": { + "value": "enabled" + }, + "PCW_MIO_39_SLEW": { + "value": "fast" + }, + "PCW_MIO_3_IOTYPE": { + "value": "LVCMOS 3.3V" + }, + "PCW_MIO_3_SLEW": { + "value": "fast" + }, + "PCW_MIO_40_IOTYPE": { + "value": "LVCMOS 1.8V" + }, + "PCW_MIO_40_PULLUP": { + "value": "enabled" + }, + "PCW_MIO_40_SLEW": { + "value": "fast" + }, + "PCW_MIO_41_IOTYPE": { + "value": "LVCMOS 1.8V" + }, + "PCW_MIO_41_PULLUP": { + "value": "enabled" + }, + "PCW_MIO_41_SLEW": { + "value": "fast" + }, + "PCW_MIO_42_IOTYPE": { + "value": "LVCMOS 1.8V" + }, + "PCW_MIO_42_PULLUP": { + "value": "enabled" + }, + "PCW_MIO_42_SLEW": { + "value": "fast" + }, + "PCW_MIO_43_IOTYPE": { + "value": "LVCMOS 1.8V" + }, + "PCW_MIO_43_PULLUP": { + "value": "enabled" + }, + "PCW_MIO_43_SLEW": { + "value": "fast" + }, + "PCW_MIO_44_IOTYPE": { + "value": "LVCMOS 1.8V" + }, + "PCW_MIO_44_PULLUP": { + "value": "enabled" + }, + "PCW_MIO_44_SLEW": { + "value": "fast" + }, + "PCW_MIO_45_IOTYPE": { + "value": "LVCMOS 1.8V" + }, + "PCW_MIO_45_PULLUP": { + "value": "enabled" + }, + "PCW_MIO_45_SLEW": { + "value": "fast" + }, + "PCW_MIO_46_IOTYPE": { + "value": "LVCMOS 1.8V" + }, + "PCW_MIO_46_PULLUP": { + "value": "enabled" + }, + "PCW_MIO_46_SLEW": { + "value": "slow" + }, + "PCW_MIO_47_IOTYPE": { + "value": "LVCMOS 1.8V" + }, + "PCW_MIO_47_PULLUP": { + "value": "enabled" + }, + "PCW_MIO_47_SLEW": { + "value": "slow" + }, + "PCW_MIO_48_IOTYPE": { + "value": "LVCMOS 1.8V" + }, + "PCW_MIO_48_PULLUP": { + "value": "enabled" + }, + "PCW_MIO_48_SLEW": { + "value": "slow" + }, + "PCW_MIO_49_IOTYPE": { + "value": "LVCMOS 1.8V" + }, + "PCW_MIO_49_PULLUP": { + "value": "enabled" + }, + "PCW_MIO_49_SLEW": { + "value": "slow" + }, + "PCW_MIO_4_IOTYPE": { + "value": "LVCMOS 3.3V" + }, + "PCW_MIO_4_SLEW": { + "value": "fast" + }, + "PCW_MIO_50_IOTYPE": { + "value": "LVCMOS 1.8V" + }, + "PCW_MIO_50_PULLUP": { + "value": "enabled" + }, + "PCW_MIO_50_SLEW": { + "value": "slow" + }, + "PCW_MIO_51_IOTYPE": { + "value": "LVCMOS 1.8V" + }, + "PCW_MIO_51_PULLUP": { + "value": "enabled" + }, + "PCW_MIO_51_SLEW": { + "value": "slow" + }, + "PCW_MIO_52_IOTYPE": { + "value": "LVCMOS 1.8V" + }, + "PCW_MIO_52_PULLUP": { + "value": "enabled" + }, + "PCW_MIO_52_SLEW": { + "value": "fast" + }, + "PCW_MIO_53_IOTYPE": { + "value": "LVCMOS 1.8V" + }, + "PCW_MIO_53_PULLUP": { + "value": "enabled" + }, + "PCW_MIO_53_SLEW": { + "value": "fast" + }, + "PCW_MIO_5_IOTYPE": { + "value": "LVCMOS 3.3V" + }, + "PCW_MIO_5_SLEW": { + "value": "fast" + }, + "PCW_MIO_6_IOTYPE": { + "value": "LVCMOS 3.3V" + }, + "PCW_MIO_6_SLEW": { + "value": "fast" + }, + "PCW_MIO_7_IOTYPE": { + "value": "LVCMOS 3.3V" + }, + "PCW_MIO_7_SLEW": { + "value": "slow" + }, + "PCW_MIO_8_IOTYPE": { + "value": "LVCMOS 3.3V" + }, + "PCW_MIO_8_SLEW": { + "value": "slow" + }, + "PCW_MIO_9_IOTYPE": { + "value": "LVCMOS 3.3V" + }, + "PCW_MIO_9_PULLUP": { + "value": "enabled" + }, + "PCW_MIO_9_SLEW": { + "value": "slow" + }, + "PCW_MIO_TREE_PERIPHERALS": { + "value": "GPIO#Quad SPI Flash#Quad SPI Flash#Quad SPI Flash#GPIO#Quad SPI Flash#Quad SPI Flash#GPIO#GPIO#GPIO#GPIO#GPIO#GPIO#GPIO#GPIO#GPIO#Enet 0#Enet 0#Enet 0#Enet 0#Enet 0#Enet 0#Enet 0#Enet 0#Enet 0#Enet 0#Enet 0#Enet 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#SD 0#SD 0#SD 0#SD 0#SD 0#SD 0#USB Reset#GPIO#UART 1#UART 1#GPIO#GPIO#Enet 0#Enet 0" + }, + "PCW_MIO_TREE_SIGNALS": { + "value": "gpio[0]#qspi0_ss_b#qspi0_io[0]#qspi0_io[1]#gpio[4]#qspi0_io[3]/HOLD_B#qspi0_sclk#gpio[7]#gpio[8]#gpio[9]#gpio[10]#gpio[11]#gpio[12]#gpio[13]#gpio[14]#gpio[15]#tx_clk#txd[0]#txd[1]#txd[2]#txd[3]#tx_ctl#rx_clk#rxd[0]#rxd[1]#rxd[2]#rxd[3]#rx_ctl#data[4]#dir#stp#nxt#data[0]#data[1]#data[2]#data[3]#clk#data[5]#data[6]#data[7]#clk#cmd#data[0]#data[1]#data[2]#data[3]#reset#gpio[47]#tx#rx#gpio[50]#gpio[51]#mdc#mdio" + }, + "PCW_PRESET_BANK1_VOLTAGE": { + "value": "LVCMOS 1.8V" + }, + "PCW_QSPI_GRP_FBCLK_ENABLE": { + "value": "0" + }, + "PCW_QSPI_GRP_IO1_ENABLE": { + "value": "0" + }, + "PCW_QSPI_GRP_SINGLE_SS_ENABLE": { + "value": "1" + }, + "PCW_QSPI_GRP_SINGLE_SS_IO": { + "value": "MIO 1 .. 6" + }, + "PCW_QSPI_GRP_SS1_ENABLE": { + "value": "0" + }, + "PCW_QSPI_PERIPHERAL_ENABLE": { + "value": "1" + }, + "PCW_QSPI_PERIPHERAL_FREQMHZ": { + "value": "200" + }, + "PCW_QSPI_QSPI_IO": { + "value": "MIO 1 .. 6" + }, + "PCW_SD0_GRP_CD_ENABLE": { + "value": "0" + }, + "PCW_SD0_GRP_POW_ENABLE": { + "value": "0" + }, + "PCW_SD0_GRP_WP_ENABLE": { + "value": "0" + }, + "PCW_SD0_PERIPHERAL_ENABLE": { + "value": "1" + }, + "PCW_SD0_SD0_IO": { + "value": "MIO 40 .. 45" + }, + "PCW_SDIO_PERIPHERAL_FREQMHZ": { + "value": "100" + }, + "PCW_SDIO_PERIPHERAL_VALID": { + "value": "1" + }, + "PCW_SINGLE_QSPI_DATA_MODE": { + "value": "x1" + }, + "PCW_UART0_PERIPHERAL_ENABLE": { + "value": "0" + }, + "PCW_UART1_GRP_FULL_ENABLE": { + "value": "0" + }, + "PCW_UART1_PERIPHERAL_ENABLE": { + "value": "1" + }, + "PCW_UART1_UART1_IO": { + "value": "MIO 48 .. 49" + }, + "PCW_UART_PERIPHERAL_FREQMHZ": { + "value": "100" + }, + "PCW_UART_PERIPHERAL_VALID": { + "value": "1" + }, + "PCW_UIPARAM_ACT_DDR_FREQ_MHZ": { + "value": "533.333374" + }, + "PCW_UIPARAM_DDR_PARTNO": { + "value": "MT41J256M16 RE-125" + }, + "PCW_USB0_PERIPHERAL_ENABLE": { + "value": "1" + }, + "PCW_USB0_RESET_ENABLE": { + "value": "1" + }, + "PCW_USB0_RESET_IO": { + "value": "MIO 46" + }, + "PCW_USB0_USB0_IO": { + "value": "MIO 28 .. 39" + }, + "PCW_USB_RESET_ENABLE": { + "value": "1" + }, + "PCW_USB_RESET_SELECT": { + "value": "Share reset pin" + }, + "PCW_USE_M_AXI_GP0": { + "value": "0" + } + } + } + }, + "interface_nets": { + "processing_system7_0_FIXED_IO": { + "interface_ports": [ + "FIXED_IO", + "processing_system7_0/FIXED_IO" + ] + }, + "processing_system7_0_DDR": { + "interface_ports": [ + "DDR", + "processing_system7_0/DDR" + ] + } + } + } +} \ No newline at end of file diff --git a/lib/common/Apply/DSP/Advance/AGC/AGC.PNG b/lib/common/Apply/DSP/Advance/AGC/AGC.PNG new file mode 100644 index 0000000000000000000000000000000000000000..bcd214208710a60e7cb9cb769c122da1320f757c GIT binary patch literal 145365 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 z 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⋙DQ&pVxmxGfXt1 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 literal 0 HcmV?d00001 diff --git a/lib/common/Apply/DSP/Advance/AGC/AGC.v b/lib/common/Apply/DSP/Advance/AGC/AGC.v new file mode 100644 index 0000000..d121d9b --- /dev/null +++ b/lib/common/Apply/DSP/Advance/AGC/AGC.v @@ -0,0 +1,33 @@ +module AGC( + input wire clk, + input wire rst, + input wire [7:0] a_coef, + input wire [15:0] reference, + input wire signed [15:0] x_in, + output wire signed [15:0] y_out +); + +wire [31:0] x_mod; +wire [31:0] ref_rms; +wire signed [8:0] a_coef_s; +wire signed [32:0] tmp_level; +wire signed [32:0] feedback_level; +reg signed [32:0] zreg; + +assign ref_rms = (reference[15:1] * reference[15:1]); +assign a_coef_s = { 1'b0, a_coef}; + +assign x_mod = (y_out * y_out); +assign tmp_level = ($signed(ref_rms - x_mod))>>>18; +assign feedback_level = (tmp_level * a_coef_s) >>> 8; + +always @(posedge clk or negedge rst) begin + if (!rst) + zreg <= 'h0; + else + zreg <= zreg + feedback_level; +end + +assign y_out = (zreg * x_in) >>>16; + +endmodule diff --git a/lib/common/Apply/DSP/Advance/Communicate/Demodulate/IQ/Demodulate.v b/lib/common/Apply/DSP/Advance/Communicate/Demodulate/IQ/Demodulate.v new file mode 100644 index 0000000..e9f7f97 --- /dev/null +++ b/lib/common/Apply/DSP/Advance/Communicate/Demodulate/IQ/Demodulate.v @@ -0,0 +1,72 @@ +module Demodulate #( + parameter PHASE_WIDTH = 32, + parameter Fiter_WIDTH = 38, + parameter INPUT_WIDTH = 8, + parameter OUTPUT_WIDTH = 12 +) ( + input clk, + input RST, + + input [15:0] FACTOR, + input [PHASE_WIDTH-1:0] Fre_word, + + input [INPUT_WIDTH-1:0] wave_in, + + output [OUTPUT_WIDTH-1:0] FM_Demodule_OUT, + output [OUTPUT_WIDTH-1:0] PM_Demodule_OUT, + output [OUTPUT_WIDTH-1:0] AM_Demodule_OUT +); + +// IQ_MIXED Outputs +wire clk_out; +wire [OUTPUT_WIDTH - 1 : 0] I_OUT; +wire [OUTPUT_WIDTH - 1 : 0] Q_OUT; + +/* +数字下变频处理模块 +*/ +IQ_MIXED #( + .LO_WIDTH ( 12 ), + .PHASE_WIDTH ( PHASE_WIDTH ), + .Fiter_WIDTH ( Fiter_WIDTH ), + .INPUT_WIDTH ( INPUT_WIDTH ), + .OUTPUT_WIDTH ( OUTPUT_WIDTH )) +u_IQ_MIXED ( + .clk ( clk ), + .clk_out ( clk_out ), + .RST ( RST ), + + .FACTOR ( FACTOR ), + .Fre_word ( Fre_word ), + + .wave_in ( wave_in ), + .I_OUT ( I_OUT ), + .Q_OUT ( Q_OUT ) +); + +wire [OUTPUT_WIDTH-1:0] Y_diff; +Cordic # ( + .XY_BITS(OUTPUT_WIDTH), + .PH_BITS(OUTPUT_WIDTH), //1~32 + .ITERATIONS(16), //1~32 + .CORDIC_STYLE("VECTOR")) //ROTATE //VECTOR +Demodulate_Gen_u ( + .clk(clk_out), + .RST(RST), + .x_i(I_OUT), + .y_i(Q_OUT), + .phase_in(0), + .valid_in(~RST), + + .x_o(AM_Demodule_OUT), + .y_o(Y_diff), + .phase_out(PM_Demodule_OUT) +); + +reg [OUTPUT_WIDTH-1:0] PM_Demodule_OUT_r = 0; +always @(posedge clk_out) begin + PM_Demodule_OUT_r <= PM_Demodule_OUT; +end +assign FM_Demodule_OUT = $signed(PM_Demodule_OUT) - $signed(PM_Demodule_OUT_r); + +endmodule diff --git a/lib/common/Apply/DSP/Advance/Communicate/Demodulate/IQ/IQ_Mixed.v b/lib/common/Apply/DSP/Advance/Communicate/Demodulate/IQ/IQ_Mixed.v new file mode 100644 index 0000000..a6954be --- /dev/null +++ b/lib/common/Apply/DSP/Advance/Communicate/Demodulate/IQ/IQ_Mixed.v @@ -0,0 +1,92 @@ +module IQ_MIXED #( + //LO_OUTPUR_parameter + parameter LO_WIDTH = 12, + parameter PHASE_WIDTH = 32, + //CIC_Filter_parameter + parameter Fiter_WIDTH = 38, + //IQ_MIXED_parameter + parameter INPUT_WIDTH = 12, + parameter OUTPUT_WIDTH = 12 +) ( + input clk, + output clk_out, + input RST, + + input [15:0] FACTOR, + input [PHASE_WIDTH - 1 : 0] Fre_word, + + input [INPUT_WIDTH - 1 : 0] wave_in, + output [OUTPUT_WIDTH - 1 : 0] I_OUT, + output [OUTPUT_WIDTH - 1 : 0] Q_OUT +); + +wire [LO_WIDTH-1:0] cos_wave; +wire [LO_WIDTH-1:0] sin_wave; +wire [PHASE_WIDTH-1:0] pha_diff; +Cordic # ( + .XY_BITS(LO_WIDTH), + .PH_BITS(PHASE_WIDTH), //1~32 + .ITERATIONS(16), //1~32 + .CORDIC_STYLE("ROTATE"), //ROTATE //VECTOR + .PHASE_ACC("ON") //ON //OFF +) IQ_Gen_u ( + .clk(clk), + .RST(RST), + .x_i(0), + .y_i(0), + .phase_in(Fre_word), + .valid_in(~RST), + + .x_o(cos_wave), + .y_o(sin_wave), + .phase_out(pha_diff) +); + +wire signed [Fiter_WIDTH - 1 : 0] I_SIG; +wire signed [Fiter_WIDTH - 1 : 0] Q_SIG; +reg signed [INPUT_WIDTH + LO_WIDTH - 1 : 0] I_SIG_r = 0; +reg signed [INPUT_WIDTH + LO_WIDTH - 1 : 0] Q_SIG_r = 0; +always @(posedge clk) begin + if (RST) begin + I_SIG_r <= 24'd0; + Q_SIG_r <= 24'd0; + end + else begin + I_SIG_r <= $signed(wave_in) * $signed(cos_wave); + Q_SIG_r <= $signed(wave_in) * $signed(sin_wave); + end +end +assign I_SIG = I_SIG_r[INPUT_WIDTH + LO_WIDTH - 1 : INPUT_WIDTH + LO_WIDTH - 12]; +assign Q_SIG = Q_SIG_r[INPUT_WIDTH + LO_WIDTH - 1 : INPUT_WIDTH + LO_WIDTH - 12]; + + +wire [Fiter_WIDTH-1:0] Fiter_wave_I; +CIC_DOWN_S3#( + .INPUT_WIDTH(12), + .OUTPUT_WIDTH(Fiter_WIDTH)) +Fiter_I ( + .clk(clk), + .clk_enable(1'd1), + .reset(RST), + .FACTOR(FACTOR), + .filter_in(I_SIG), + .filter_out(Fiter_wave_I) +); +assign I_OUT = Fiter_wave_I[Fiter_WIDTH - 1 : Fiter_WIDTH - OUTPUT_WIDTH]; + +wire [Fiter_WIDTH-1:0] Fiter_wave_Q; +CIC_DOWN_S3#( + .INPUT_WIDTH(12), + .OUTPUT_WIDTH(Fiter_WIDTH) +) Fiter_Q( + .clk(clk), + .clk_enable(1'd1), + .reset(RST), + .FACTOR(FACTOR), + .filter_in(Q_SIG), + .filter_out(Fiter_wave_Q), + .ce_out(clk_out) +); +assign Q_OUT = Fiter_wave_Q[Fiter_WIDTH - 1 : Fiter_WIDTH - OUTPUT_WIDTH]; + +endmodule \ No newline at end of file diff --git a/lib/common/Apply/DSP/Advance/Communicate/Demodulate/IQ/Loop_filter.v b/lib/common/Apply/DSP/Advance/Communicate/Demodulate/IQ/Loop_filter.v new file mode 100644 index 0000000..a141661 --- /dev/null +++ b/lib/common/Apply/DSP/Advance/Communicate/Demodulate/IQ/Loop_filter.v @@ -0,0 +1,32 @@ +`timescale 1ns / 1ps +module Loop_filter ( + input clk_sys, + input rst_n, + input signed [27:0] Xdin, + output signed [27:0] Ydout +); + +parameter k1 = 12498; +parameter k2 = 4430400; + +reg [2:0] cnt; +reg signed [27:0] Ydin_1; +reg signed [27:0] Ydout_buf; +always@(posedge clk_sys) begin + if(!rst_n) + cnt <= 3'd0; + else + cnt <= cnt + 3'd1; +end +always@(posedge clk_sys) begin + if(!rst_n) begin + Ydin_1 <= 28'd0; + Ydout_buf <= 28'd0; + end + else if(cnt == 3'd3) + Ydin_1 = Ydin_1 + Xdin/k1; + else if(cnt == 3'd4) + Ydout_buf <= Ydin_1 + Xdin/k2; +end +assign Ydout = Ydout_buf; +endmodule diff --git a/lib/common/Apply/DSP/Advance/Communicate/Encode/manchester.v b/lib/common/Apply/DSP/Advance/Communicate/Encode/manchester.v new file mode 100644 index 0000000..be02f72 --- /dev/null +++ b/lib/common/Apply/DSP/Advance/Communicate/Encode/manchester.v @@ -0,0 +1,17 @@ +`timescale 1ns / 1ps +module manchester ( + input clk, + input sig_in, + output man_sig_out +); + +reg ck = 0; +reg ck_r = 0; +always @(posedge clk) begin + ck <= ck_r; + ck <= ~ ck; +end + +assign man_sig_out = ck ^ sig_in; + +endmodule diff --git a/lib/common/Apply/DSP/Advance/Communicate/Encode/mseq.v b/lib/common/Apply/DSP/Advance/Communicate/Encode/mseq.v new file mode 100644 index 0000000..47e6dc4 --- /dev/null +++ b/lib/common/Apply/DSP/Advance/Communicate/Encode/mseq.v @@ -0,0 +1,25 @@ +`timescale 1ns / 1ps +module mseq #( + parameter W = 4'd4, + parameter POLY = 5'b10011 +) ( + input clk, + input rst_n, + output mseq_out +); + +reg [W-1:0] sreg = 8'b11111111; +assign mseq_out = sreg[0]; + +always@(posedge clk or posedge rst_n) begin + if(~rst_n) + sreg <= 1'b1; + else begin + if(mseq_out) + sreg <= (sreg >> 1) ^ (POLY >> 1); + else + sreg <= sreg >> 1; + end +end + +endmodule diff --git a/lib/common/Apply/DSP/Advance/Communicate/Modulate/AM/AM_Modulate.v b/lib/common/Apply/DSP/Advance/Communicate/Modulate/AM/AM_Modulate.v new file mode 100644 index 0000000..2c152ac --- /dev/null +++ b/lib/common/Apply/DSP/Advance/Communicate/Modulate/AM/AM_Modulate.v @@ -0,0 +1,383 @@ +`timescale 1ns / 1ps + +module AM_Modulate #( + parameter INPUT_WIDTH = 12, + parameter PHASE_WIDTH = 32, + parameter DEEP_WIDTH = 16, + parameter OUTPUT_WIDTH = 12 +) ( + input clk, + input RST, + input [INPUT_WIDTH - 1 : 0] wave_in, + input [PHASE_WIDTH - 1 : 0] center_fre, //(fre*2^PHASE_WIDTH)/Fc + input [DEEP_WIDTH - 1 : 0] modulate_deep,//(2^DEEP_WIDTH-1)*percent + output [OUTPUT_WIDTH - 1 : 0] AM_wave +); + +localparam [INPUT_WIDTH - 1 : 0] DC_Value = 2**(INPUT_WIDTH-1); + +reg [INPUT_WIDTH - 1 : 0] wave_in_r = 0; +always @(posedge clk) begin + if (RST) begin + wave_in_r <= 0; + end + else begin + wave_in_r <= wave_in; + end +end + +reg signed [INPUT_WIDTH + DEEP_WIDTH : 0] data_r0 = 0; +always @(posedge clk) begin + if (RST) begin + data_r0 <= 0; + end + else begin + data_r0 <= $signed(wave_in_r) * $signed({1'b0,modulate_deep}); + end +end + +reg signed [INPUT_WIDTH - 1 : 0] data_r1 = 0; +always @(posedge clk) begin + if (RST) begin + data_r1 <= 0; + end + else begin + data_r1 <= data_r0[INPUT_WIDTH + DEEP_WIDTH - 1 : DEEP_WIDTH]; + end +end + +reg [INPUT_WIDTH : 0] data_r2 = 0; +always @(posedge clk) begin + if (RST) begin + data_r2 <= 0; + end + else begin + data_r2 <= $signed(data_r1) + $signed({1'b0,DC_Value}); + end +end + +reg [PHASE_WIDTH - 1 : 0] addr_r0 = 0; +always @(posedge clk) begin + addr_r0 <= addr_r0 + center_fre; +end + +reg [9:0] addr_r1 = 0; +always @(posedge clk) begin + addr_r1 <= addr_r0[PHASE_WIDTH - 1 : PHASE_WIDTH - 10]; +end + +reg [7:0] addr = 0; +always @(*) begin + case (addr_r1[9:8]) + 2'b00 : begin addr <= addr_r1[7:0]; end + 2'b01 : begin addr <= addr_r1[7:0] ^ 8'b1111_1111; end + 2'b10 : begin addr <= addr_r1[7:0]; end + 2'b11 : begin addr <= addr_r1[7:0] ^ 8'b1111_1111; end + default : begin addr <= 8'd0; end + endcase +end + +reg signed [13:0] wave_out_r = 0; +always @(*) begin + case (addr) + 8'd0 : begin wave_out_r <= 0; end + 8'd1 : begin wave_out_r <= 50; end + 8'd2 : begin wave_out_r <= 101; end + 8'd3 : begin wave_out_r <= 151; end + 8'd4 : begin wave_out_r <= 201; end + 8'd5 : begin wave_out_r <= 252; end + 8'd6 : begin wave_out_r <= 302; end + 8'd7 : begin wave_out_r <= 352; end + 8'd8 : begin wave_out_r <= 402; end + 8'd9 : begin wave_out_r <= 453; end + 8'd10 : begin wave_out_r <= 503; end + 8'd11 : begin wave_out_r <= 553; end + 8'd12 : begin wave_out_r <= 603; end + 8'd13 : begin wave_out_r <= 653; end + 8'd14 : begin wave_out_r <= 703; end + 8'd15 : begin wave_out_r <= 754; end + 8'd16 : begin wave_out_r <= 804; end + 8'd17 : begin wave_out_r <= 854; end + 8'd18 : begin wave_out_r <= 904; end + 8'd19 : begin wave_out_r <= 954; end + 8'd20 : begin wave_out_r <= 1004; end + 8'd21 : begin wave_out_r <= 1054; end + 8'd22 : begin wave_out_r <= 1103; end + 8'd23 : begin wave_out_r <= 1153; end + 8'd24 : begin wave_out_r <= 1203; end + 8'd25 : begin wave_out_r <= 1253; end + 8'd26 : begin wave_out_r <= 1302; end + 8'd27 : begin wave_out_r <= 1352; end + 8'd28 : begin wave_out_r <= 1402; end + 8'd29 : begin wave_out_r <= 1451; end + 8'd30 : begin wave_out_r <= 1501; end + 8'd31 : begin wave_out_r <= 1550; end + 8'd32 : begin wave_out_r <= 1600; end + 8'd33 : begin wave_out_r <= 1649; end + 8'd34 : begin wave_out_r <= 1698; end + 8'd35 : begin wave_out_r <= 1747; end + 8'd36 : begin wave_out_r <= 1796; end + 8'd37 : begin wave_out_r <= 1845; end + 8'd38 : begin wave_out_r <= 1894; end + 8'd39 : begin wave_out_r <= 1943; end + 8'd40 : begin wave_out_r <= 1992; end + 8'd41 : begin wave_out_r <= 2041; end + 8'd42 : begin wave_out_r <= 2090; end + 8'd43 : begin wave_out_r <= 2138; end + 8'd44 : begin wave_out_r <= 2187; end + 8'd45 : begin wave_out_r <= 2235; end + 8'd46 : begin wave_out_r <= 2284; end + 8'd47 : begin wave_out_r <= 2332; end + 8'd48 : begin wave_out_r <= 2380; end + 8'd49 : begin wave_out_r <= 2428; end + 8'd50 : begin wave_out_r <= 2476; end + 8'd51 : begin wave_out_r <= 2524; end + 8'd52 : begin wave_out_r <= 2572; end + 8'd53 : begin wave_out_r <= 2620; end + 8'd54 : begin wave_out_r <= 2667; end + 8'd55 : begin wave_out_r <= 2715; end + 8'd56 : begin wave_out_r <= 2762; end + 8'd57 : begin wave_out_r <= 2809; end + 8'd58 : begin wave_out_r <= 2857; end + 8'd59 : begin wave_out_r <= 2904; end + 8'd60 : begin wave_out_r <= 2951; end + 8'd61 : begin wave_out_r <= 2998; end + 8'd62 : begin wave_out_r <= 3044; end + 8'd63 : begin wave_out_r <= 3091; end + 8'd64 : begin wave_out_r <= 3137; end + 8'd65 : begin wave_out_r <= 3184; end + 8'd66 : begin wave_out_r <= 3230; end + 8'd67 : begin wave_out_r <= 3276; end + 8'd68 : begin wave_out_r <= 3322; end + 8'd69 : begin wave_out_r <= 3368; end + 8'd70 : begin wave_out_r <= 3414; end + 8'd71 : begin wave_out_r <= 3460; end + 8'd72 : begin wave_out_r <= 3505; end + 8'd73 : begin wave_out_r <= 3551; end + 8'd74 : begin wave_out_r <= 3596; end + 8'd75 : begin wave_out_r <= 3641; end + 8'd76 : begin wave_out_r <= 3686; end + 8'd77 : begin wave_out_r <= 3731; end + 8'd78 : begin wave_out_r <= 3776; end + 8'd79 : begin wave_out_r <= 3820; end + 8'd80 : begin wave_out_r <= 3865; end + 8'd81 : begin wave_out_r <= 3909; end + 8'd82 : begin wave_out_r <= 3953; end + 8'd83 : begin wave_out_r <= 3997; end + 8'd84 : begin wave_out_r <= 4041; end + 8'd85 : begin wave_out_r <= 4085; end + 8'd86 : begin wave_out_r <= 4128; end + 8'd87 : begin wave_out_r <= 4172; end + 8'd88 : begin wave_out_r <= 4215; end + 8'd89 : begin wave_out_r <= 4258; end + 8'd90 : begin wave_out_r <= 4301; end + 8'd91 : begin wave_out_r <= 4343; end + 8'd92 : begin wave_out_r <= 4386; end + 8'd93 : begin wave_out_r <= 4428; end + 8'd94 : begin wave_out_r <= 4471; end + 8'd95 : begin wave_out_r <= 4513; end + 8'd96 : begin wave_out_r <= 4555; end + 8'd97 : begin wave_out_r <= 4596; end + 8'd98 : begin wave_out_r <= 4638; end + 8'd99 : begin wave_out_r <= 4679; end + 8'd100 : begin wave_out_r <= 4720; end + 8'd101 : begin wave_out_r <= 4761; end + 8'd102 : begin wave_out_r <= 4802; end + 8'd103 : begin wave_out_r <= 4843; end + 8'd104 : begin wave_out_r <= 4883; end + 8'd105 : begin wave_out_r <= 4924; end + 8'd106 : begin wave_out_r <= 4964; end + 8'd107 : begin wave_out_r <= 5004; end + 8'd108 : begin wave_out_r <= 5044; end + 8'd109 : begin wave_out_r <= 5083; end + 8'd110 : begin wave_out_r <= 5122; end + 8'd111 : begin wave_out_r <= 5162; end + 8'd112 : begin wave_out_r <= 5201; end + 8'd113 : begin wave_out_r <= 5239; end + 8'd114 : begin wave_out_r <= 5278; end + 8'd115 : begin wave_out_r <= 5316; end + 8'd116 : begin wave_out_r <= 5354; end + 8'd117 : begin wave_out_r <= 5392; end + 8'd118 : begin wave_out_r <= 5430; end + 8'd119 : begin wave_out_r <= 5468; end + 8'd120 : begin wave_out_r <= 5505; end + 8'd121 : begin wave_out_r <= 5542; end + 8'd122 : begin wave_out_r <= 5579; end + 8'd123 : begin wave_out_r <= 5616; end + 8'd124 : begin wave_out_r <= 5652; end + 8'd125 : begin wave_out_r <= 5689; end + 8'd126 : begin wave_out_r <= 5725; end + 8'd127 : begin wave_out_r <= 5761; end + 8'd128 : begin wave_out_r <= 5796; end + 8'd129 : begin wave_out_r <= 5832; end + 8'd130 : begin wave_out_r <= 5867; end + 8'd131 : begin wave_out_r <= 5902; end + 8'd132 : begin wave_out_r <= 5937; end + 8'd133 : begin wave_out_r <= 5971; end + 8'd134 : begin wave_out_r <= 6006; end + 8'd135 : begin wave_out_r <= 6040; end + 8'd136 : begin wave_out_r <= 6074; end + 8'd137 : begin wave_out_r <= 6107; end + 8'd138 : begin wave_out_r <= 6141; end + 8'd139 : begin wave_out_r <= 6174; end + 8'd140 : begin wave_out_r <= 6207; end + 8'd141 : begin wave_out_r <= 6239; end + 8'd142 : begin wave_out_r <= 6272; end + 8'd143 : begin wave_out_r <= 6304; end + 8'd144 : begin wave_out_r <= 6336; end + 8'd145 : begin wave_out_r <= 6368; end + 8'd146 : begin wave_out_r <= 6399; end + 8'd147 : begin wave_out_r <= 6431; end + 8'd148 : begin wave_out_r <= 6462; end + 8'd149 : begin wave_out_r <= 6493; end + 8'd150 : begin wave_out_r <= 6523; end + 8'd151 : begin wave_out_r <= 6553; end + 8'd152 : begin wave_out_r <= 6584; end + 8'd153 : begin wave_out_r <= 6613; end + 8'd154 : begin wave_out_r <= 6643; end + 8'd155 : begin wave_out_r <= 6672; end + 8'd156 : begin wave_out_r <= 6701; end + 8'd157 : begin wave_out_r <= 6730; end + 8'd158 : begin wave_out_r <= 6759; end + 8'd159 : begin wave_out_r <= 6787; end + 8'd160 : begin wave_out_r <= 6815; end + 8'd161 : begin wave_out_r <= 6843; end + 8'd162 : begin wave_out_r <= 6870; end + 8'd163 : begin wave_out_r <= 6897; end + 8'd164 : begin wave_out_r <= 6925; end + 8'd165 : begin wave_out_r <= 6951; end + 8'd166 : begin wave_out_r <= 6978; end + 8'd167 : begin wave_out_r <= 7004; end + 8'd168 : begin wave_out_r <= 7030; end + 8'd169 : begin wave_out_r <= 7056; end + 8'd170 : begin wave_out_r <= 7081; end + 8'd171 : begin wave_out_r <= 7106; end + 8'd172 : begin wave_out_r <= 7131; end + 8'd173 : begin wave_out_r <= 7156; end + 8'd174 : begin wave_out_r <= 7180; end + 8'd175 : begin wave_out_r <= 7204; end + 8'd176 : begin wave_out_r <= 7228; end + 8'd177 : begin wave_out_r <= 7251; end + 8'd178 : begin wave_out_r <= 7275; end + 8'd179 : begin wave_out_r <= 7298; end + 8'd180 : begin wave_out_r <= 7320; end + 8'd181 : begin wave_out_r <= 7343; end + 8'd182 : begin wave_out_r <= 7365; end + 8'd183 : begin wave_out_r <= 7387; end + 8'd184 : begin wave_out_r <= 7408; end + 8'd185 : begin wave_out_r <= 7430; end + 8'd186 : begin wave_out_r <= 7451; end + 8'd187 : begin wave_out_r <= 7472; end + 8'd188 : begin wave_out_r <= 7492; end + 8'd189 : begin wave_out_r <= 7512; end + 8'd190 : begin wave_out_r <= 7532; end + 8'd191 : begin wave_out_r <= 7552; end + 8'd192 : begin wave_out_r <= 7571; end + 8'd193 : begin wave_out_r <= 7590; end + 8'd194 : begin wave_out_r <= 7609; end + 8'd195 : begin wave_out_r <= 7627; end + 8'd196 : begin wave_out_r <= 7646; end + 8'd197 : begin wave_out_r <= 7664; end + 8'd198 : begin wave_out_r <= 7681; end + 8'd199 : begin wave_out_r <= 7698; end + 8'd200 : begin wave_out_r <= 7715; end + 8'd201 : begin wave_out_r <= 7732; end + 8'd202 : begin wave_out_r <= 7749; end + 8'd203 : begin wave_out_r <= 7765; end + 8'd204 : begin wave_out_r <= 7781; end + 8'd205 : begin wave_out_r <= 7796; end + 8'd206 : begin wave_out_r <= 7812; end + 8'd207 : begin wave_out_r <= 7827; end + 8'd208 : begin wave_out_r <= 7841; end + 8'd209 : begin wave_out_r <= 7856; end + 8'd210 : begin wave_out_r <= 7870; end + 8'd211 : begin wave_out_r <= 7884; end + 8'd212 : begin wave_out_r <= 7897; end + 8'd213 : begin wave_out_r <= 7910; end + 8'd214 : begin wave_out_r <= 7923; end + 8'd215 : begin wave_out_r <= 7936; end + 8'd216 : begin wave_out_r <= 7948; end + 8'd217 : begin wave_out_r <= 7960; end + 8'd218 : begin wave_out_r <= 7972; end + 8'd219 : begin wave_out_r <= 7983; end + 8'd220 : begin wave_out_r <= 7994; end + 8'd221 : begin wave_out_r <= 8005; end + 8'd222 : begin wave_out_r <= 8016; end + 8'd223 : begin wave_out_r <= 8026; end + 8'd224 : begin wave_out_r <= 8036; end + 8'd225 : begin wave_out_r <= 8045; end + 8'd226 : begin wave_out_r <= 8055; end + 8'd227 : begin wave_out_r <= 8064; end + 8'd228 : begin wave_out_r <= 8072; end + 8'd229 : begin wave_out_r <= 8081; end + 8'd230 : begin wave_out_r <= 8089; end + 8'd231 : begin wave_out_r <= 8097; end + 8'd232 : begin wave_out_r <= 8104; end + 8'd233 : begin wave_out_r <= 8111; end + 8'd234 : begin wave_out_r <= 8118; end + 8'd235 : begin wave_out_r <= 8125; end + 8'd236 : begin wave_out_r <= 8131; end + 8'd237 : begin wave_out_r <= 8137; end + 8'd238 : begin wave_out_r <= 8142; end + 8'd239 : begin wave_out_r <= 8148; end + 8'd240 : begin wave_out_r <= 8153; end + 8'd241 : begin wave_out_r <= 8157; end + 8'd242 : begin wave_out_r <= 8162; end + 8'd243 : begin wave_out_r <= 8166; end + 8'd244 : begin wave_out_r <= 8170; end + 8'd245 : begin wave_out_r <= 8173; end + 8'd246 : begin wave_out_r <= 8176; end + 8'd247 : begin wave_out_r <= 8179; end + 8'd248 : begin wave_out_r <= 8182; end + 8'd249 : begin wave_out_r <= 8184; end + 8'd250 : begin wave_out_r <= 8186; end + 8'd251 : begin wave_out_r <= 8188; end + 8'd252 : begin wave_out_r <= 8189; end + 8'd253 : begin wave_out_r <= 8190; end + 8'd254 : begin wave_out_r <= 8191; end + 8'd255 : begin wave_out_r <= 8191; end + default : begin wave_out_r <= 0; end + endcase +end + +reg signed [13 : 0] AM_Carry_r0 = 0; +always @(*) begin + case (addr_r1[9]) + 1'b0 : begin AM_Carry_r0 <= wave_out_r[13 : 0]; end + 1'b1 : begin AM_Carry_r0 <= - wave_out_r[13 : 0]; end + default : begin AM_Carry_r0 <= 14'd0; end + endcase +end + +reg signed [13 : 0] AM_Carry_r1 = 0; +always @(posedge clk) begin + if (RST) begin + AM_Carry_r1 <= 0; + end + else begin + AM_Carry_r1 <= AM_Carry_r0; + end +end + +reg signed [INPUT_WIDTH + 14 : 0] AM_wave_r0 = 0; +always @(posedge clk) begin + if (RST) begin + AM_wave_r0 <= 0; + end + else begin + AM_wave_r0 <= $signed(AM_Carry_r1) * $signed({1'b0,data_r2}); + end +end + +reg signed [OUTPUT_WIDTH - 1 : 0] AM_wave_r1 = 0; +always @(posedge clk) begin + if (RST) begin + AM_wave_r1 <= 0; + end + else begin + AM_wave_r1 <= AM_wave_r0[INPUT_WIDTH + 13 : INPUT_WIDTH + 14 - OUTPUT_WIDTH]; + end +end +assign AM_wave = AM_wave_r1; + +endmodule diff --git a/lib/common/Apply/DSP/Advance/Communicate/Modulate/FM/FM_Modulate.v b/lib/common/Apply/DSP/Advance/Communicate/Modulate/FM/FM_Modulate.v new file mode 100644 index 0000000..ad19501 --- /dev/null +++ b/lib/common/Apply/DSP/Advance/Communicate/Modulate/FM/FM_Modulate.v @@ -0,0 +1,370 @@ +`timescale 1ns / 1ps +module FM_Modulate #( + parameter INPUT_WIDTH = 12, + parameter PHASE_WIDTH = 32, + parameter OUTPUT_WIDTH = 12 +) ( + input clk, + input RST, + input [INPUT_WIDTH - 1 : 0] wave_in, + input [PHASE_WIDTH - INPUT_WIDTH - 1 : 0] move_fre, //(fre*2^(PHASE_WIDTH-INPUT_WIDTH))/clk/1000000 + input [PHASE_WIDTH - 1 : 0] center_fre, //(fre*2^PHASE_WIDTH)/clk/1000000 + output [OUTPUT_WIDTH - 1 : 0] FM_wave +); + +reg [INPUT_WIDTH - 1 : 0] wave_in_r = 0; +always @(posedge clk) begin + if (RST) begin + wave_in_r <= 0; + end + else begin + wave_in_r <= wave_in; + end +end + +reg signed [PHASE_WIDTH : 0] data_r0 = 0; +always @(posedge clk) begin + if (RST) begin + data_r0 <= 0; + end + else begin + data_r0 <= $signed(wave_in_r) * $signed({1'd0,move_fre}); + end +end + +reg signed [PHASE_WIDTH - 1 : 0] data_r1 = 0; +always @(posedge clk) begin + if (RST) begin + data_r1 <= 0; + end + else begin + data_r1 <= data_r0[PHASE_WIDTH - 1 : 0]; + end +end + +reg signed [PHASE_WIDTH : 0] data_r2 = 0; +always @(posedge clk) begin + if (RST) begin + data_r2 <= 0; + end + else begin + data_r2 <= $signed(data_r1) + $signed({1'd0,center_fre}); + end +end + +reg [PHASE_WIDTH - 1 : 0] Fre_word = 0; +always @(posedge clk) begin + if (RST) begin + Fre_word <= 0; + end + else begin + Fre_word <= data_r2[PHASE_WIDTH - 1 : 0]; + end +end + +reg [PHASE_WIDTH - 1 : 0] addr_r0 = 0; +always @(posedge clk) begin + addr_r0 <= addr_r0 + Fre_word; +end + +reg [9:0] addr_r1 = 0; +always @(posedge clk) begin + addr_r1 <= addr_r0[PHASE_WIDTH - 1 : PHASE_WIDTH - 10]; +end + +reg [7:0] addr = 0; +always @(*) begin + case (addr_r1[9:8]) + 2'b00 : begin addr <= addr_r1[7:0]; end + 2'b01 : begin addr <= addr_r1[7:0] ^ 8'b1111_1111; end + 2'b10 : begin addr <= addr_r1[7:0]; end + 2'b11 : begin addr <= addr_r1[7:0] ^ 8'b1111_1111; end + default : begin addr <= 8'd0; end + endcase +end + +reg signed [13:0] wave_out_r = 0; +always @(*) begin + case (addr) + 8'd0 : begin wave_out_r <= 0; end + 8'd1 : begin wave_out_r <= 50; end + 8'd2 : begin wave_out_r <= 101; end + 8'd3 : begin wave_out_r <= 151; end + 8'd4 : begin wave_out_r <= 201; end + 8'd5 : begin wave_out_r <= 252; end + 8'd6 : begin wave_out_r <= 302; end + 8'd7 : begin wave_out_r <= 352; end + 8'd8 : begin wave_out_r <= 402; end + 8'd9 : begin wave_out_r <= 453; end + 8'd10 : begin wave_out_r <= 503; end + 8'd11 : begin wave_out_r <= 553; end + 8'd12 : begin wave_out_r <= 603; end + 8'd13 : begin wave_out_r <= 653; end + 8'd14 : begin wave_out_r <= 703; end + 8'd15 : begin wave_out_r <= 754; end + 8'd16 : begin wave_out_r <= 804; end + 8'd17 : begin wave_out_r <= 854; end + 8'd18 : begin wave_out_r <= 904; end + 8'd19 : begin wave_out_r <= 954; end + 8'd20 : begin wave_out_r <= 1004; end + 8'd21 : begin wave_out_r <= 1054; end + 8'd22 : begin wave_out_r <= 1103; end + 8'd23 : begin wave_out_r <= 1153; end + 8'd24 : begin wave_out_r <= 1203; end + 8'd25 : begin wave_out_r <= 1253; end + 8'd26 : begin wave_out_r <= 1302; end + 8'd27 : begin wave_out_r <= 1352; end + 8'd28 : begin wave_out_r <= 1402; end + 8'd29 : begin wave_out_r <= 1451; end + 8'd30 : begin wave_out_r <= 1501; end + 8'd31 : begin wave_out_r <= 1550; end + 8'd32 : begin wave_out_r <= 1600; end + 8'd33 : begin wave_out_r <= 1649; end + 8'd34 : begin wave_out_r <= 1698; end + 8'd35 : begin wave_out_r <= 1747; end + 8'd36 : begin wave_out_r <= 1796; end + 8'd37 : begin wave_out_r <= 1845; end + 8'd38 : begin wave_out_r <= 1894; end + 8'd39 : begin wave_out_r <= 1943; end + 8'd40 : begin wave_out_r <= 1992; end + 8'd41 : begin wave_out_r <= 2041; end + 8'd42 : begin wave_out_r <= 2090; end + 8'd43 : begin wave_out_r <= 2138; end + 8'd44 : begin wave_out_r <= 2187; end + 8'd45 : begin wave_out_r <= 2235; end + 8'd46 : begin wave_out_r <= 2284; end + 8'd47 : begin wave_out_r <= 2332; end + 8'd48 : begin wave_out_r <= 2380; end + 8'd49 : begin wave_out_r <= 2428; end + 8'd50 : begin wave_out_r <= 2476; end + 8'd51 : begin wave_out_r <= 2524; end + 8'd52 : begin wave_out_r <= 2572; end + 8'd53 : begin wave_out_r <= 2620; end + 8'd54 : begin wave_out_r <= 2667; end + 8'd55 : begin wave_out_r <= 2715; end + 8'd56 : begin wave_out_r <= 2762; end + 8'd57 : begin wave_out_r <= 2809; end + 8'd58 : begin wave_out_r <= 2857; end + 8'd59 : begin wave_out_r <= 2904; end + 8'd60 : begin wave_out_r <= 2951; end + 8'd61 : begin wave_out_r <= 2998; end + 8'd62 : begin wave_out_r <= 3044; end + 8'd63 : begin wave_out_r <= 3091; end + 8'd64 : begin wave_out_r <= 3137; end + 8'd65 : begin wave_out_r <= 3184; end + 8'd66 : begin wave_out_r <= 3230; end + 8'd67 : begin wave_out_r <= 3276; end + 8'd68 : begin wave_out_r <= 3322; end + 8'd69 : begin wave_out_r <= 3368; end + 8'd70 : begin wave_out_r <= 3414; end + 8'd71 : begin wave_out_r <= 3460; end + 8'd72 : begin wave_out_r <= 3505; end + 8'd73 : begin wave_out_r <= 3551; end + 8'd74 : begin wave_out_r <= 3596; end + 8'd75 : begin wave_out_r <= 3641; end + 8'd76 : begin wave_out_r <= 3686; end + 8'd77 : begin wave_out_r <= 3731; end + 8'd78 : begin wave_out_r <= 3776; end + 8'd79 : begin wave_out_r <= 3820; end + 8'd80 : begin wave_out_r <= 3865; end + 8'd81 : begin wave_out_r <= 3909; end + 8'd82 : begin wave_out_r <= 3953; end + 8'd83 : begin wave_out_r <= 3997; end + 8'd84 : begin wave_out_r <= 4041; end + 8'd85 : begin wave_out_r <= 4085; end + 8'd86 : begin wave_out_r <= 4128; end + 8'd87 : begin wave_out_r <= 4172; end + 8'd88 : begin wave_out_r <= 4215; end + 8'd89 : begin wave_out_r <= 4258; end + 8'd90 : begin wave_out_r <= 4301; end + 8'd91 : begin wave_out_r <= 4343; end + 8'd92 : begin wave_out_r <= 4386; end + 8'd93 : begin wave_out_r <= 4428; end + 8'd94 : begin wave_out_r <= 4471; end + 8'd95 : begin wave_out_r <= 4513; end + 8'd96 : begin wave_out_r <= 4555; end + 8'd97 : begin wave_out_r <= 4596; end + 8'd98 : begin wave_out_r <= 4638; end + 8'd99 : begin wave_out_r <= 4679; end + 8'd100 : begin wave_out_r <= 4720; end + 8'd101 : begin wave_out_r <= 4761; end + 8'd102 : begin wave_out_r <= 4802; end + 8'd103 : begin wave_out_r <= 4843; end + 8'd104 : begin wave_out_r <= 4883; end + 8'd105 : begin wave_out_r <= 4924; end + 8'd106 : begin wave_out_r <= 4964; end + 8'd107 : begin wave_out_r <= 5004; end + 8'd108 : begin wave_out_r <= 5044; end + 8'd109 : begin wave_out_r <= 5083; end + 8'd110 : begin wave_out_r <= 5122; end + 8'd111 : begin wave_out_r <= 5162; end + 8'd112 : begin wave_out_r <= 5201; end + 8'd113 : begin wave_out_r <= 5239; end + 8'd114 : begin wave_out_r <= 5278; end + 8'd115 : begin wave_out_r <= 5316; end + 8'd116 : begin wave_out_r <= 5354; end + 8'd117 : begin wave_out_r <= 5392; end + 8'd118 : begin wave_out_r <= 5430; end + 8'd119 : begin wave_out_r <= 5468; end + 8'd120 : begin wave_out_r <= 5505; end + 8'd121 : begin wave_out_r <= 5542; end + 8'd122 : begin wave_out_r <= 5579; end + 8'd123 : begin wave_out_r <= 5616; end + 8'd124 : begin wave_out_r <= 5652; end + 8'd125 : begin wave_out_r <= 5689; end + 8'd126 : begin wave_out_r <= 5725; end + 8'd127 : begin wave_out_r <= 5761; end + 8'd128 : begin wave_out_r <= 5796; end + 8'd129 : begin wave_out_r <= 5832; end + 8'd130 : begin wave_out_r <= 5867; end + 8'd131 : begin wave_out_r <= 5902; end + 8'd132 : begin wave_out_r <= 5937; end + 8'd133 : begin wave_out_r <= 5971; end + 8'd134 : begin wave_out_r <= 6006; end + 8'd135 : begin wave_out_r <= 6040; end + 8'd136 : begin wave_out_r <= 6074; end + 8'd137 : begin wave_out_r <= 6107; end + 8'd138 : begin wave_out_r <= 6141; end + 8'd139 : begin wave_out_r <= 6174; end + 8'd140 : begin wave_out_r <= 6207; end + 8'd141 : begin wave_out_r <= 6239; end + 8'd142 : begin wave_out_r <= 6272; end + 8'd143 : begin wave_out_r <= 6304; end + 8'd144 : begin wave_out_r <= 6336; end + 8'd145 : begin wave_out_r <= 6368; end + 8'd146 : begin wave_out_r <= 6399; end + 8'd147 : begin wave_out_r <= 6431; end + 8'd148 : begin wave_out_r <= 6462; end + 8'd149 : begin wave_out_r <= 6493; end + 8'd150 : begin wave_out_r <= 6523; end + 8'd151 : begin wave_out_r <= 6553; end + 8'd152 : begin wave_out_r <= 6584; end + 8'd153 : begin wave_out_r <= 6613; end + 8'd154 : begin wave_out_r <= 6643; end + 8'd155 : begin wave_out_r <= 6672; end + 8'd156 : begin wave_out_r <= 6701; end + 8'd157 : begin wave_out_r <= 6730; end + 8'd158 : begin wave_out_r <= 6759; end + 8'd159 : begin wave_out_r <= 6787; end + 8'd160 : begin wave_out_r <= 6815; end + 8'd161 : begin wave_out_r <= 6843; end + 8'd162 : begin wave_out_r <= 6870; end + 8'd163 : begin wave_out_r <= 6897; end + 8'd164 : begin wave_out_r <= 6925; end + 8'd165 : begin wave_out_r <= 6951; end + 8'd166 : begin wave_out_r <= 6978; end + 8'd167 : begin wave_out_r <= 7004; end + 8'd168 : begin wave_out_r <= 7030; end + 8'd169 : begin wave_out_r <= 7056; end + 8'd170 : begin wave_out_r <= 7081; end + 8'd171 : begin wave_out_r <= 7106; end + 8'd172 : begin wave_out_r <= 7131; end + 8'd173 : begin wave_out_r <= 7156; end + 8'd174 : begin wave_out_r <= 7180; end + 8'd175 : begin wave_out_r <= 7204; end + 8'd176 : begin wave_out_r <= 7228; end + 8'd177 : begin wave_out_r <= 7251; end + 8'd178 : begin wave_out_r <= 7275; end + 8'd179 : begin wave_out_r <= 7298; end + 8'd180 : begin wave_out_r <= 7320; end + 8'd181 : begin wave_out_r <= 7343; end + 8'd182 : begin wave_out_r <= 7365; end + 8'd183 : begin wave_out_r <= 7387; end + 8'd184 : begin wave_out_r <= 7408; end + 8'd185 : begin wave_out_r <= 7430; end + 8'd186 : begin wave_out_r <= 7451; end + 8'd187 : begin wave_out_r <= 7472; end + 8'd188 : begin wave_out_r <= 7492; end + 8'd189 : begin wave_out_r <= 7512; end + 8'd190 : begin wave_out_r <= 7532; end + 8'd191 : begin wave_out_r <= 7552; end + 8'd192 : begin wave_out_r <= 7571; end + 8'd193 : begin wave_out_r <= 7590; end + 8'd194 : begin wave_out_r <= 7609; end + 8'd195 : begin wave_out_r <= 7627; end + 8'd196 : begin wave_out_r <= 7646; end + 8'd197 : begin wave_out_r <= 7664; end + 8'd198 : begin wave_out_r <= 7681; end + 8'd199 : begin wave_out_r <= 7698; end + 8'd200 : begin wave_out_r <= 7715; end + 8'd201 : begin wave_out_r <= 7732; end + 8'd202 : begin wave_out_r <= 7749; end + 8'd203 : begin wave_out_r <= 7765; end + 8'd204 : begin wave_out_r <= 7781; end + 8'd205 : begin wave_out_r <= 7796; end + 8'd206 : begin wave_out_r <= 7812; end + 8'd207 : begin wave_out_r <= 7827; end + 8'd208 : begin wave_out_r <= 7841; end + 8'd209 : begin wave_out_r <= 7856; end + 8'd210 : begin wave_out_r <= 7870; end + 8'd211 : begin wave_out_r <= 7884; end + 8'd212 : begin wave_out_r <= 7897; end + 8'd213 : begin wave_out_r <= 7910; end + 8'd214 : begin wave_out_r <= 7923; end + 8'd215 : begin wave_out_r <= 7936; end + 8'd216 : begin wave_out_r <= 7948; end + 8'd217 : begin wave_out_r <= 7960; end + 8'd218 : begin wave_out_r <= 7972; end + 8'd219 : begin wave_out_r <= 7983; end + 8'd220 : begin wave_out_r <= 7994; end + 8'd221 : begin wave_out_r <= 8005; end + 8'd222 : begin wave_out_r <= 8016; end + 8'd223 : begin wave_out_r <= 8026; end + 8'd224 : begin wave_out_r <= 8036; end + 8'd225 : begin wave_out_r <= 8045; end + 8'd226 : begin wave_out_r <= 8055; end + 8'd227 : begin wave_out_r <= 8064; end + 8'd228 : begin wave_out_r <= 8072; end + 8'd229 : begin wave_out_r <= 8081; end + 8'd230 : begin wave_out_r <= 8089; end + 8'd231 : begin wave_out_r <= 8097; end + 8'd232 : begin wave_out_r <= 8104; end + 8'd233 : begin wave_out_r <= 8111; end + 8'd234 : begin wave_out_r <= 8118; end + 8'd235 : begin wave_out_r <= 8125; end + 8'd236 : begin wave_out_r <= 8131; end + 8'd237 : begin wave_out_r <= 8137; end + 8'd238 : begin wave_out_r <= 8142; end + 8'd239 : begin wave_out_r <= 8148; end + 8'd240 : begin wave_out_r <= 8153; end + 8'd241 : begin wave_out_r <= 8157; end + 8'd242 : begin wave_out_r <= 8162; end + 8'd243 : begin wave_out_r <= 8166; end + 8'd244 : begin wave_out_r <= 8170; end + 8'd245 : begin wave_out_r <= 8173; end + 8'd246 : begin wave_out_r <= 8176; end + 8'd247 : begin wave_out_r <= 8179; end + 8'd248 : begin wave_out_r <= 8182; end + 8'd249 : begin wave_out_r <= 8184; end + 8'd250 : begin wave_out_r <= 8186; end + 8'd251 : begin wave_out_r <= 8188; end + 8'd252 : begin wave_out_r <= 8189; end + 8'd253 : begin wave_out_r <= 8190; end + 8'd254 : begin wave_out_r <= 8191; end + 8'd255 : begin wave_out_r <= 8191; end + default : begin wave_out_r <= 0; end + endcase +end + +reg signed [OUTPUT_WIDTH - 1 : 0] FM_out_r0 = 0; +always @(*) begin + case (addr_r1[9]) + 1'b0 : begin FM_out_r0 <= wave_out_r[13 : 14 - OUTPUT_WIDTH]; end + 1'b1 : begin FM_out_r0 <= - wave_out_r[13 : 14 - OUTPUT_WIDTH]; end + default : begin FM_out_r0 <= 14'd0; end + endcase +end + +reg signed [OUTPUT_WIDTH - 1 : 0] FM_out_r1 = 0; +always @(posedge clk) begin + if (RST) begin + FM_out_r1 <= 0; + end + else begin + FM_out_r1 <= FM_out_r0; + end +end + +assign FM_wave = FM_out_r1; + +endmodule diff --git a/lib/common/Apply/DSP/Advance/FFT/Flow_FFT_IFFT/BF_op.v b/lib/common/Apply/DSP/Advance/FFT/Flow_FFT_IFFT/BF_op.v new file mode 100644 index 0000000..e057759 --- /dev/null +++ b/lib/common/Apply/DSP/Advance/FFT/Flow_FFT_IFFT/BF_op.v @@ -0,0 +1,20 @@ +`timescale 1ns/100ps + +module BF_op #( + parameter REAL_WIDTH = 18, + parameter IMGN_WIDTH = 18, + localparam CPLX_WIDTH = REAL_WIDTH + IMGN_WIDTH +) ( + input [CPLX_WIDTH - 1 : 0] ia, + input [CPLX_WIDTH - 1 : 0] ib, + output [CPLX_WIDTH - 1 : 0] oa, + output [CPLX_WIDTH - 1 : 0] ob +); + +assign oa[CPLX_WIDTH-1:REAL_WIDTH] = $signed(ia[CPLX_WIDTH-1:REAL_WIDTH]) + $signed(ib[CPLX_WIDTH-1:REAL_WIDTH]); +assign oa[IMGN_WIDTH-1:0] = $signed(ia[IMGN_WIDTH-1:0]) + $signed(ib[IMGN_WIDTH-1:0]); + +assign ob[CPLX_WIDTH-1:REAL_WIDTH] = $signed(ia[CPLX_WIDTH-1:REAL_WIDTH]) - $signed(ib[CPLX_WIDTH-1:REAL_WIDTH]); +assign ob[IMGN_WIDTH-1:0] = $signed(ia[IMGN_WIDTH-1:0]) - $signed(ib[IMGN_WIDTH-1:0]); + +endmodule diff --git a/lib/common/Apply/DSP/Advance/FFT/Flow_FFT_IFFT/BF_stg1.v b/lib/common/Apply/DSP/Advance/FFT/Flow_FFT_IFFT/BF_stg1.v new file mode 100644 index 0000000..129140c --- /dev/null +++ b/lib/common/Apply/DSP/Advance/FFT/Flow_FFT_IFFT/BF_stg1.v @@ -0,0 +1,104 @@ +`timescale 1ns/100ps +module BF_stg1 #( + parameter FFT_STG = 7, + parameter REAL_WIDTH = 18, + parameter IMGN_WIDTH = 18, + parameter TOTAL_STAGE = 11, + localparam CPLX_WIDTH = REAL_WIDTH + IMGN_WIDTH +) ( + input iclk, + input rst_n, + + input ien, + input [TOTAL_STAGE-1 : 0] iaddr, + input [CPLX_WIDTH -1 : 0] idata, + + output oen, + output [TOTAL_STAGE-1 : 0] oaddr, + output [CPLX_WIDTH -1 : 0] odata +); + +localparam TOTAL_ADDR_MAX = { TOTAL_STAGE { 1'b1 } }; +localparam STG_MAX = { FFT_STG { 1'b1 } }; +localparam STG_HALFMAX = ( STG_MAX >> 1 ); + +reg [CPLX_WIDTH - 1 : 0] r [STG_HALFMAX:0]; +integer i; +initial begin + for (i = 0; i<=STG_HALFMAX; i=i+1) begin + r[i] = 0; + end +end + + + +reg dump = 0; +reg [FFT_STG - 1 : 0] dump_cnt = 0; +always @(posedge iclk) begin + if(iaddr[FFT_STG-1:0] == STG_MAX && ien) begin + dump <= 1'b1; + dump_cnt <= 0; + end + else if(dump) begin + if(dump_cnt == STG_HALFMAX) dump <= 1'b0; + dump_cnt <= dump_cnt + 1'b1; + end +end + +wire with_dump; +assign with_dump = dump; + +wire [CPLX_WIDTH - 1 : 0] bf_ia; +wire [CPLX_WIDTH - 1 : 0] bf_ib; +wire [CPLX_WIDTH - 1 : 0] bf_oa; +wire [CPLX_WIDTH - 1 : 0] bf_ob; +assign bf_ia = r[STG_HALFMAX]; +assign bf_ib = idata; +BF_op #( + .REAL_WIDTH(REAL_WIDTH), + .IMGN_WIDTH(IMGN_WIDTH) +) bf0 ( + .ia(bf_ia), + .ib(bf_ib), + .oa(bf_oa), + .ob(bf_ob) +); + +wire [CPLX_WIDTH - 1 : 0] wdata_in; +integer index; +always @(posedge iclk) begin + if(ien) r[0] <= wdata_in; + for(index = STG_HALFMAX; index > 0; index=index-1) + r[index] <= r[index-1]; +end + +reg oen_r = 0; +reg [TOTAL_STAGE-1 : 0] oaddr_r = 0; +reg [CPLX_WIDTH -1 : 0] odata_r = 0; +wire is_load; +wire is_calc; +assign is_load = ~iaddr[FFT_STG-1]; +assign is_calc = iaddr[FFT_STG-1]; +assign wdata_in = is_load ? idata : bf_ob; +always @(posedge iclk) begin + if(is_calc & ien) begin + odata_r <= bf_oa; + oaddr_r <= oaddr_r + 1'b1; + oen_r <= 1'b1; + end + else if((is_load | ~ien) & with_dump) begin + odata_r <= r[STG_HALFMAX]; + oaddr_r <= oaddr_r + 1'b1; + oen_r <= 1'b1; + end + else begin + odata_r <= 0; + oaddr_r <= TOTAL_ADDR_MAX; + oen_r <= 1'b0; + end +end +assign odata = odata_r; +assign oaddr = oaddr_r; +assign oen = oen_r; + +endmodule diff --git a/lib/common/Apply/DSP/Advance/FFT/Flow_FFT_IFFT/BF_stgX.v b/lib/common/Apply/DSP/Advance/FFT/Flow_FFT_IFFT/BF_stgX.v new file mode 100644 index 0000000..b365768 --- /dev/null +++ b/lib/common/Apply/DSP/Advance/FFT/Flow_FFT_IFFT/BF_stgX.v @@ -0,0 +1,110 @@ +`timescale 1ns/100ps +module BF_stgX # ( + parameter FFT_STG = 7, + parameter REAL_WIDTH = 18, + parameter IMGN_WIDTH = 18, + parameter TOTAL_STAGE = 11, + localparam CPLX_WIDTH = REAL_WIDTH + IMGN_WIDTH +) ( + input iclk, + input rst_n, + + input ien, + input [TOTAL_STAGE-1 : 0] iaddr, + input [CPLX_WIDTH -1 : 0] idata, + + output oen, + output [TOTAL_STAGE-1 : 0] oaddr, + output [CPLX_WIDTH -1 : 0] odata +); + +localparam TOTAL_ADDR_MAX = { TOTAL_STAGE { 1'b1 } }; +localparam STG_MAX = { FFT_STG { 1'b1 } }; +localparam STG_HALFMAX = ( STG_MAX >> 1 ); + +reg [CPLX_WIDTH - 1 : 0] r [STG_HALFMAX:0]; +integer i; +initial begin + for (i = 0; i<=STG_HALFMAX; i=i+1) begin + r[i] = 0; + end +end + +reg [CPLX_WIDTH-1 : 0] rdata = 0; +reg [CPLX_WIDTH-1 : 0] rdata_out = 0; + + +reg dump = 0; +reg [FFT_STG - 2 : 0] dump_cnt = 0; +always @(posedge iclk) begin + if(iaddr[FFT_STG-1:0] == STG_MAX && ien) begin + dump <= 1'b1; + dump_cnt <= 0; + end + else if(dump) begin + if(dump_cnt == STG_HALFMAX) dump <= 1'b0; + dump_cnt <= dump_cnt + 1'b1; + end +end + +wire with_dump; +assign with_dump = dump; + +wire [FFT_STG-2 : 0] waddr_in; +wire [FFT_STG-2 : 0] raddr_in; +assign raddr_in = (with_dump ? dump_cnt : iaddr[FFT_STG-2:0]) + 2'b10; +assign waddr_in = iaddr[FFT_STG-2:0]; + +wire [CPLX_WIDTH - 1 : 0] bf_ia; +wire [CPLX_WIDTH - 1 : 0] bf_ib; +wire [CPLX_WIDTH - 1 : 0] bf_oa; +wire [CPLX_WIDTH - 1 : 0] bf_ob; +assign bf_ia = rdata; +assign bf_ib = idata; +BF_op #( + .REAL_WIDTH(REAL_WIDTH), + .IMGN_WIDTH(IMGN_WIDTH) +) bf0 ( + .ia(bf_ia), + .ib(bf_ib), + .oa(bf_oa), + .ob(bf_ob) +); + +wire [CPLX_WIDTH - 1 : 0] wdata_in; +always @(posedge iclk) begin + if(ien) r[waddr_in] <= wdata_in; + rdata_out <= r[raddr_in]; + rdata <= rdata_out; +end + +reg oen_r = 0; +reg [TOTAL_STAGE-1 : 0] oaddr_r = 0; +reg [CPLX_WIDTH -1 : 0] odata_r = 0; +wire is_load; +wire is_calc; +assign is_load = ~iaddr[FFT_STG-1]; +assign is_calc = iaddr[FFT_STG-1]; +assign wdata_in = is_load ? idata : bf_ob; +always @(posedge iclk) begin + if(is_calc & ien) begin + odata_r <= bf_oa; + oaddr_r <= oaddr_r + 1'b1; + oen_r <= 1'b1; + end + else if((is_load | ~ien) & with_dump) begin + odata_r <= rdata; + oaddr_r <= oaddr_r + 1'b1; + oen_r <= 1'b1; + end + else begin + odata_r <= 0; + oaddr_r <= TOTAL_ADDR_MAX; + oen_r <= 1'b0; + end +end +assign odata = odata_r; +assign oaddr = oaddr_r; +assign oen = oen_r; + +endmodule diff --git a/lib/common/Apply/DSP/Advance/FFT/Flow_FFT_IFFT/cmpl_mult.v b/lib/common/Apply/DSP/Advance/FFT/Flow_FFT_IFFT/cmpl_mult.v new file mode 100644 index 0000000..417f7f0 --- /dev/null +++ b/lib/common/Apply/DSP/Advance/FFT/Flow_FFT_IFFT/cmpl_mult.v @@ -0,0 +1,27 @@ +`timescale 1 ps / 1 ps +module cmpl_mult #( + parameter REAL_WIDTH = 18, + parameter IMGN_WIDTH = 18, + localparam CPLX_WIDTH = REAL_WIDTH + IMGN_WIDTH +) ( + input clock, + input [REAL_WIDTH-1:0] dataa_real, + input [IMGN_WIDTH-1:0] dataa_imag, + input [REAL_WIDTH-1:0] datab_real, + input [IMGN_WIDTH-1:0] datab_imag, + output [CPLX_WIDTH-1:0] result_real, + output [CPLX_WIDTH-1:0] result_imag +); + + +reg signed [CPLX_WIDTH-1:0] outr = 0; +reg signed [CPLX_WIDTH-1:0] outi = 0; +always@(posedge clock) begin + outr <= $signed(dataa_real) * $signed(datab_real) - $signed(dataa_imag) * $signed(datab_imag); + outi <= $signed(dataa_real) * $signed(datab_imag) + $signed(dataa_imag) * $signed(datab_real); +end + +assign result_imag = outi; +assign result_real = outr; + +endmodule \ No newline at end of file diff --git a/lib/common/Apply/DSP/Advance/FFT/Flow_FFT_IFFT/fft.v b/lib/common/Apply/DSP/Advance/FFT/Flow_FFT_IFFT/fft.v new file mode 100644 index 0000000..1586213 --- /dev/null +++ b/lib/common/Apply/DSP/Advance/FFT/Flow_FFT_IFFT/fft.v @@ -0,0 +1,83 @@ +`timescale 1ns/100ps + +module fft #( + parameter REAL_WIDTH = 18, + parameter IMGN_WIDTH = 18, + parameter TOTAL_STAGE = 11 +) ( + input iclk, + input rst_n, + + input ien, + input [TOTAL_STAGE-1:0] iaddr, + input [REAL_WIDTH-1:0] iReal, + input [IMGN_WIDTH-1:0] iImag, + + output oen, + output [TOTAL_STAGE-1:0] oaddr, + output [REAL_WIDTH-1:0] oReal, + output [IMGN_WIDTH-1:0] oImag +); + +localparam INTER_MODU_WIRE_NUM = ((TOTAL_STAGE-1)/2); +localparam CPLX_WIDTH = REAL_WIDTH + IMGN_WIDTH; + +wire [CPLX_WIDTH -1:0] data_end; +wire [TOTAL_STAGE-1:0] addr_end; + +wire en_w [INTER_MODU_WIRE_NUM:0]; +wire [CPLX_WIDTH -1:0] data_w [INTER_MODU_WIRE_NUM:0]; +wire [TOTAL_STAGE-1:0] addr_w [INTER_MODU_WIRE_NUM:0]; + +assign en_w [INTER_MODU_WIRE_NUM] = ien; +assign addr_w[INTER_MODU_WIRE_NUM] = iaddr; +assign data_w[INTER_MODU_WIRE_NUM] = {iReal, iImag}; + +generate +genvar gv_stg; +for(gv_stg=TOTAL_STAGE; gv_stg>=2; gv_stg=gv_stg-2) begin : stagX +fft_stage #( + .REAL_WIDTH(REAL_WIDTH), + .IMGN_WIDTH(IMGN_WIDTH), + .TOTAL_STAGE(TOTAL_STAGE), + .FFT_STG(gv_stg) +)stgX_inst ( + .iclk(iclk), + .rst_n(rst_n), + .iaddr(addr_w[((gv_stg-1)/2)]), + .idata(data_w[((gv_stg-1)/2)]), + .ien(en_w[((gv_stg-1)/2)]), + .oaddr(addr_w[((gv_stg-1)/2)-1]), + .odata(data_w[((gv_stg-1)/2)-1]), + .oen(en_w[((gv_stg-1)/2)-1]) +); +end +if(TOTAL_STAGE[0]) begin : BF_stg1 + BF_stg1 #( + .REAL_WIDTH(REAL_WIDTH), + .IMGN_WIDTH(IMGN_WIDTH), + .TOTAL_STAGE(TOTAL_STAGE), + .FFT_STG(1) + )stg1_inst ( + .iclk(iclk), + .rst_n(rst_n), + .ien(en_w[0]), + .iaddr(addr_w[0]), + .idata(data_w[0]), + .oen(oen), + .oaddr(addr_end), + .odata(data_end) + ); + end +endgenerate + +generate // bit_reverse +genvar index; + for(index=0; index 1) begin : ftrans_conjugate + ftrans #( + .FTRANS_STYLE("conjugate"), //conjugate + .REAL_WIDTH(REAL_WIDTH), + .IMGN_WIDTH(IMGN_WIDTH), + .TOTAL_STAGE(TOTAL_STAGE), + .FFT_STG(FFT_STG) + ) ftrans_conjugate_inst ( + .iclk(iclk), + .ien(bfX_oen), + .iaddr(bfX_oaddr), + .idata(bfX_odata), + .oen(Trans_I_oen), + .oaddr(Trans_I_oaddr), + .odata(Trans_I_odata) + ); +end +else begin + assign oen = bfX_oen; + assign oaddr = bfX_oaddr; + assign odata = bfX_odata; +end +endgenerate + +generate +if(FFT_STG == 3) begin : BF_stg_II2 + BF_stg1 #( + .REAL_WIDTH(REAL_WIDTH), + .IMGN_WIDTH(IMGN_WIDTH), + .TOTAL_STAGE(TOTAL_STAGE), + .FFT_STG(2) + ) BF_instII ( + .iclk(iclk), + .rst_n(rst_n), + .ien(Trans_I_oen), + .iaddr(Trans_I_oaddr), + .idata(Trans_I_odata), + .oen(bfX_1_oen), + .oaddr(bfX_1_oaddr), + .odata(bfX_1_data) + ); +end +else if(FFT_STG == 2) begin : BF_stg_II1 + BF_stg1 #( + .REAL_WIDTH(REAL_WIDTH), + .IMGN_WIDTH(IMGN_WIDTH), + .TOTAL_STAGE(TOTAL_STAGE), + .FFT_STG(1) + ) BF_instII ( + .iclk(iclk), + .rst_n(rst_n), + .ien(Trans_I_oen), + .iaddr(Trans_I_oaddr), + .idata(Trans_I_odata), + .oen(bfX_1_oen), + .oaddr(bfX_1_oaddr), + .odata(bfX_1_data) + ); +end +else begin : BF_stgX_II + BF_stgX #( + .REAL_WIDTH(REAL_WIDTH), + .IMGN_WIDTH(IMGN_WIDTH), + .TOTAL_STAGE(TOTAL_STAGE), + .FFT_STG(FFT_STG-1) + ) BF_instII ( + .iclk(iclk), + .rst_n(rst_n), + .ien(Trans_I_oen), + .iaddr(Trans_I_oaddr), + .idata(Trans_I_odata), + .oen(bfX_1_oen), + .oaddr(bfX_1_oaddr), + .odata(bfX_1_data) + ); +end +endgenerate + +generate +if(FFT_STG > 2) begin : ftrans_twiddle + ftrans #( + .FTRANS_STYLE("twiddle"), //conjugate + .REAL_WIDTH(REAL_WIDTH), + .IMGN_WIDTH(IMGN_WIDTH), + .TOTAL_STAGE(TOTAL_STAGE), + .FFT_STG(FFT_STG) + ) ftrans_twiddle_inst ( + .iclk(iclk), + .ien(bfX_1_oen), + .iaddr(bfX_1_oaddr), + .idata(bfX_1_data), + .oen(oen), + .oaddr(oaddr), + .odata(odata) + ); +end +else begin + assign oen = bfX_1_oen; + assign oaddr = bfX_1_oaddr; + assign odata = bfX_1_data; +end +endgenerate + + +endmodule diff --git a/lib/common/Apply/DSP/Advance/FFT/Flow_FFT_IFFT/ftrans.v b/lib/common/Apply/DSP/Advance/FFT/Flow_FFT_IFFT/ftrans.v new file mode 100644 index 0000000..c9f485a --- /dev/null +++ b/lib/common/Apply/DSP/Advance/FFT/Flow_FFT_IFFT/ftrans.v @@ -0,0 +1,154 @@ +`timescale 1ns/100ps + +module ftrans #( + parameter FTRANS_STYLE = "twiddle", //conjugate + parameter REAL_WIDTH = 18, + parameter IMGN_WIDTH = 18, + parameter TOTAL_STAGE = 11, + parameter FFT_STG = 7, + localparam CPLX_WIDTH = REAL_WIDTH + IMGN_WIDTH +) ( + input iclk, + + input ien, + input [CPLX_WIDTH-1:0] idata, + input [TOTAL_STAGE-1:0] iaddr, + + output oen, + output [CPLX_WIDTH-1:0] odata, + output [TOTAL_STAGE-1:0] oaddr +); + +wire k1 = iaddr[FFT_STG-1]; +wire k2 = iaddr[FFT_STG-2]; + +wire signed [REAL_WIDTH-1:0] data_real = idata[CPLX_WIDTH-1:REAL_WIDTH]; +wire signed [IMGN_WIDTH-1:0] data_imag = idata[IMGN_WIDTH-1:0]; + +reg [CPLX_WIDTH-1:0] idata_r = 0; +reg [CPLX_WIDTH-1:0] odata_r = 0; +generate if(FTRANS_STYLE == "conjugate") begin : conjugate + always @(posedge iclk) begin + if({k1, k2} == 2'b11)begin + idata_r <= {data_real,-data_imag}; + odata_r <= idata_r; + end + else begin + idata_r <= idata; + odata_r <= idata_r; + end + end +end +else if(FTRANS_STYLE == "twiddle") begin : twiddle + wire [FFT_STG-3:0] n3 = iaddr[FFT_STG-3:0]; + wire [FFT_STG-2:0] addr1 = k1 ? {1'b0, n3} : { (FFT_STG-1) {1'b0} }; + wire [FFT_STG-2:0] addr2 = k2 ? {n3, 1'b0} : { (FFT_STG-1) {1'b0} }; + wire [FFT_STG-1:0] ROM_addr = addr1 + addr2; // ROM_addr = (k1 + 2*k2) * n3 + + wire [REAL_WIDTH-1:0] twiddle_ore; + wire [IMGN_WIDTH-1:0] twiddle_oim; + ftwiddle #( + .REAL_WIDTH(REAL_WIDTH), + .IMGN_WIDTH(IMGN_WIDTH), + .TW_STAGE(FFT_STG) + ) ftwiddle_inst ( + .idx(ROM_addr), + .ore(twiddle_ore), + .oim(twiddle_oim) + ); + + wire [CPLX_WIDTH-1:0] mul_ore; + wire [CPLX_WIDTH-1:0] mul_oim; + cmpl_mult #( + .REAL_WIDTH(REAL_WIDTH), + .IMGN_WIDTH(IMGN_WIDTH) + ) cmpl_mult_inst ( + .clock(iclk), + .dataa_real(data_real), + .dataa_imag(data_imag), + .datab_real(twiddle_ore), + .datab_imag(twiddle_oim), + .result_real(mul_ore), + .result_imag(mul_oim) + ); + always @(posedge iclk) begin + odata_r <= {mul_ore[CPLX_WIDTH-1:REAL_WIDTH],mul_oim[CPLX_WIDTH-1:IMGN_WIDTH]}; + end +end +endgenerate +assign odata = odata_r; + +localparam LATENCY = 2; +reg [TOTAL_STAGE-1:0] oaddr_d [LATENCY-1:0]; +integer i; +initial begin + for (i = 0; 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

`M^}!<6&z31Ql@0 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

>HxSG(>ABwfSb#wH)@G#_FStO-p;v=cf39 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 z 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%0Df6gmhiTFu~Z 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 OI&|#l-MfdQ!+!yQtv7rC literal 0 HcmV?d00001 diff --git a/lib/common/Apply/DSP/Advance/PLL/Code/circuit.v b/lib/common/Apply/DSP/Advance/PLL/Code/circuit.v new file mode 100644 index 0000000..7bde16c --- /dev/null +++ b/lib/common/Apply/DSP/Advance/PLL/Code/circuit.v @@ -0,0 +1,43 @@ +module circuit( + input clk, + input reset, + input [7:0] fmin, + output [11:0] dmout +); + +wire [11:0] d1; +wire [11:0] d2; +wire [7:0] dout; +wire [7:0] output_xhdl0; + +multiplier I1( + .clk(clk), + .reset(reset), + .input1(fmin), + .input2(dout), + .output_xhdl0(output_xhdl0) +); + +fir I4( + .clock(clk), + .reset(reset), + .data_in(d1), + .data_out(dmout) +); + +loop_filter I3( + .clk(clk), + .reset(reset), + .c(output_xhdl0), + .d1(d1), + .d2(d2) +); + +nco I2( + .clk(clk), + .reset(reset), + .din(d2), + .dout(dout) +); + +endmodule diff --git a/lib/common/Apply/DSP/Advance/PLL/Code/fir.v b/lib/common/Apply/DSP/Advance/PLL/Code/fir.v new file mode 100644 index 0000000..908cb58 --- /dev/null +++ b/lib/common/Apply/DSP/Advance/PLL/Code/fir.v @@ -0,0 +1,72 @@ +module FIR(clock, reset, data_in, data_out); + input clock; + input reset; + input [11:0] data_in; + output [11:0] data_out; + reg [11:0] data_out; + + + reg [15:0] d0; + reg [15:0] d1; + reg [15:0] d2; + reg [15:0] d3; + reg [15:0] d4; + reg [15:0] d5; + reg [15:0] d6; + reg [15:0] d7; + reg [15:0] d8; + reg [15:0] d9; + reg [15:0] d10; + reg [15:0] d11; + reg [15:0] d12; + reg [15:0] d13; + reg [15:0] d14; + reg [15:0] d15; + reg [15:0] sum; + + + always @(posedge clock or posedge reset) + if (reset == 1'b1) + begin + d0 <= {16{1'b0}}; + d1 <= {16{1'b0}}; + d2 <= {16{1'b0}}; + d3 <= {16{1'b0}}; + d4 <= {16{1'b0}}; + d5 <= {16{1'b0}}; + d6 <= {16{1'b0}}; + d7 <= {16{1'b0}}; + d8 <= {16{1'b0}}; + d9 <= {16{1'b0}}; + d10 <= {16{1'b0}}; + d11 <= {16{1'b0}}; + d12 <= {16{1'b0}}; + d13 <= {16{1'b0}}; + d14 <= {16{1'b0}}; + d15 <= {16{1'b0}}; + sum <= {16{1'b0}}; + data_out <= {12{1'b0}}; + end + else + begin + d0 <= {data_in[11], data_in[11], data_in[11], data_in[11], data_in}; + d1 <= d0; + d2 <= d1; + d3 <= d2; + d4 <= d3; + d5 <= d4; + d6 <= d5; + d7 <= d6; + d8 <= d7; + d9 <= d8; + d10 <= d9; + d11 <= d10; + d12 <= d11; + d13 <= d12; + d14 <= d13; + d15 <= d14; + sum <= (d0 + d1 + d2 + d3 + d4 + d5 + d6 + d7 + d8 + d9 + d10 + d11 + d12 + d13 + d14 + d15) >> 4; + data_out <= (sum[11:0]); + end + +endmodule diff --git a/lib/common/Apply/DSP/Advance/PLL/Code/loop_filter.v b/lib/common/Apply/DSP/Advance/PLL/Code/loop_filter.v new file mode 100644 index 0000000..39a15ec --- /dev/null +++ b/lib/common/Apply/DSP/Advance/PLL/Code/loop_filter.v @@ -0,0 +1,29 @@ +module loop_filter(CLK, RESET, C, D1, D2); + input CLK; + input RESET; + input [7:0] C; + output [11:0] D1; + output [11:0] D2; + reg [11:0] D1; + reg [11:0] D2; + + + reg [11:0] E; + reg [11:0] dtemp; + + +always @(posedge CLK or posedge RESET) + if (RESET == 1'b1) begin + D1 <= {12{1'b0}}; + D2 <= {12{1'b0}}; + E <= {12{1'b0}}; + dtemp <= {12{1'b0}}; + end + else begin + dtemp <= ({C[7], C[7], C[7], C, 1'b0}) + dtemp - E; + E <= {dtemp[11], dtemp[11], dtemp[11], dtemp[11], dtemp[11:4]}; + D1 <= dtemp; + D2 <= {dtemp[11:4], 4'b0000}; + end + +endmodule diff --git a/lib/common/Apply/DSP/Advance/PLL/Code/multiplier.v b/lib/common/Apply/DSP/Advance/PLL/Code/multiplier.v new file mode 100644 index 0000000..5f73c68 --- /dev/null +++ b/lib/common/Apply/DSP/Advance/PLL/Code/multiplier.v @@ -0,0 +1,148 @@ +//-------------------------------------------------------------------------------------------- +// +// Generated by X-HDL VHDL Translator - Version 2.0.0 Feb. 1, 2011 +// ?? 3? 29 2020 15:44:24 +// +// Input file : +// Component name : multiplier +// Author : +// Company : +// +// Description : +// +// +//-------------------------------------------------------------------------------------------- + + +module multiplier(CLK, RESET, input1, input2, output_xhdl0); + input CLK; + input RESET; + input [7:0] input1; + input [7:0] input2; + output [7:0] output_xhdl0; + reg [7:0] output_xhdl0; + + + reg [15:0] out_temp; + reg [15:0] input1_buf; + reg [15:0] part0; + reg [15:0] part1; + reg [15:0] part2; + reg [15:0] part3; + reg [15:0] part4; + reg [15:0] part5; + reg [15:0] part6; + reg [15:0] part7; + + + always @(posedge CLK or posedge RESET) + if (RESET == 1'b1) + begin + out_temp <= {16{1'b0}}; + output_xhdl0 <= {8{1'b0}}; + input1_buf <= {16{1'b0}}; + part0 <= {16{1'b0}}; + part1 <= {16{1'b0}}; + part2 <= {16{1'b0}}; + part3 <= {16{1'b0}}; + part4 <= {16{1'b0}}; + part5 <= {16{1'b0}}; + part6 <= {16{1'b0}}; + part7 <= {16{1'b0}}; + end + else + begin + input1_buf <= {input1[7], input1[7], input1[7], input1[7], input1[7], input1[7], input1[7], input1[7], signed_xhdl1(input1)}; + if (input2[0] == 1'b1) + part0 <= -(input1_buf); + else + part0 <= {16{1'b0}}; + if (input2[1] == 1'b1) + begin + if (input2[0] == 1'b1) + part1 <= {16{1'b0}}; + else + part1 <= -(input1_buf); + end + else + if (input2[0] == 1'b1) + part1 <= input1_buf; + else + part1 <= {16{1'b0}}; + if (input2[2] == 1'b1) + begin + if (input2[1] == 1'b1) + part2 <= {16{1'b0}}; + else + part2 <= -(input1_buf); + end + else + if (input2[1] == 1'b1) + part2 <= input1_buf; + else + part2 <= {16{1'b0}}; + if (input2[3] == 1'b1) + begin + if (input2[2] == 1'b1) + part3 <= {16{1'b0}}; + else + part3 <= -(input1_buf); + end + else + if (input2[2] == 1'b1) + part3 <= input1_buf; + else + part3 <= {16{1'b0}}; + if (input2[4] == 1'b1) + begin + if (input2[3] == 1'b1) + part4 <= {16{1'b0}}; + else + part4 <= -(input1_buf); + end + else + if (input2[3] == 1'b1) + part4 <= input1_buf; + else + part4 <= {16{1'b0}}; + if (input2[5] == 1'b1) + begin + if (input2[4] == 1'b1) + part5 <= {16{1'b0}}; + else + part5 <= -(input1_buf); + end + else + if (input2[4] == 1'b1) + part5 <= input1_buf; + else + part5 <= {16{1'b0}}; + if (input2[6] == 1'b1) + begin + if (input2[5] == 1'b1) + part6 <= {16{1'b0}}; + else + part6 <= -(input1_buf); + end + else + if (input2[5] == 1'b1) + part6 <= input1_buf; + else + part6 <= {16{1'b0}}; + if (input2[7] == 1'b1) + begin + if (input2[6] == 1'b1) + part7 <= {16{1'b0}}; + else + part7 <= -(input1_buf); + end + else + if (input2[6] == 1'b1) + part7 <= input1_buf; + else + part7 <= {16{1'b0}}; + out_temp <= part0 + ({part1[14:0], 1'b0}) + ({part2[13:0], 2'b00}) + ({part3[12:0], 3'b000}) + ({part4[11:0], 4'b0000}) + ({part5[10:0], 5'b00000}) + ({part6[9:0], 6'b000000}) + ({part7[8:0], 7'b0000000}); + output_xhdl0 <= out_temp[15:8]; + end + +endmodule diff --git a/lib/common/Apply/DSP/Advance/PLL/Image/architecture.png b/lib/common/Apply/DSP/Advance/PLL/Image/architecture.png new file mode 100644 index 0000000000000000000000000000000000000000..1a0079f7c9dd5ff9411b0369c9824388c798fdaf GIT binary patch literal 14289 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 literal 0 HcmV?d00001 diff --git a/lib/common/Apply/DSP/Advance/PLL/Image/fmtriangular.jpg b/lib/common/Apply/DSP/Advance/PLL/Image/fmtriangular.jpg new file mode 100644 index 0000000000000000000000000000000000000000..42626f39e1e35bd849f13d63004f8a1fc1049e64 GIT binary patch literal 47654 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 eP1PH6Qv7%=5d_x}RM3Ejv5 literal 0 HcmV?d00001 diff --git a/lib/common/Apply/DSP/Base/CLK/CLK_DIV.v b/lib/common/Apply/DSP/Base/CLK/CLK_DIV.v new file mode 100644 index 0000000..e4bf06b --- /dev/null +++ b/lib/common/Apply/DSP/Base/CLK/CLK_DIV.v @@ -0,0 +1,90 @@ +/* +奇数倍分频:奇数倍分频常常在论坛上有人问起,实际上,奇数倍分频有两种实现方法: +首先,完全可以通过计数器来实现,如进行三分频,通过待分频时钟 上升沿触发计数器进行模三计数, +当计数器计数到邻近值进行两次翻转,比如可以在计数器计数到1时,输出时钟进行翻转,计数到2时再次进行翻转。 +即是在计数 值在邻近的1和2进行了两次翻转。这样实现的三分频占空比为1/3或者2/3。 + +如果要实现占空比为50%的三分频时钟, +可以通过待分频时钟下降沿触发计数,和上升沿同样的方法计数进行三分频, +然后下降沿产生的三分频时钟和上升沿产生的时钟进行相或运算,即可得到占空比为50%的三分频时钟。 +这种方法可以 实现任意的奇数分频。 +归类为一般的方法为:对于实现占空比为50%的N倍奇数分频, +首先进行上升沿触发进行模N计数,计数选定到某一个值进行输出时钟翻 转,然后经过(N-1)/2再次进行翻转得到一个占空比非50%奇数n分频时钟。 +再者同时进行下降沿触发的模N计数,到和上升沿触发输出时钟翻转选定值相 同值时, +进行输出时钟时钟翻转,同样经过(N-1)/2时,输出时钟再次翻转生成占空比非50%的奇数n分频时钟。 +两个占空比非50%的n分频时钟相或运 算,得到占空比为50%的奇数n分频时钟。 + +另外一种方法:对进行奇数倍n分频时钟,首先进行n/2分频(带小数,即等于(n-1)/2+0.5), +然后再 进行二分频得到。得到占空比为50%的奇数倍分频。 +*/ + +/*******************************************************************************/ +// wire clk_div; +// CLK_DIV # +// (.WIDTH(8)) +// CLK_DIV_u +// ( +// .clk_in(clk_sys), +// .rst_n(1'b1), +// .N(2), +// .clk_div(clk_div) +// ); +/*******************************************************************************/ +`timescale 1ns / 1ps +module CLK_DIV # +( + parameter WIDTH = 8 +) +( + input clk_in, + input rst_n, + input [WIDTH - 1:0] N, + output clk_div +); + +reg [WIDTH-1:0] cnt_p = 0;// 上升沿计数单位 +reg [WIDTH-1:0] cnt_n = 0;// 下降沿计数单位 +reg clk_in_p = 0;// 上升沿时钟 +reg clk_in_n = 0;// 下降沿时钟 + +//其中N==1是判断不分频,N[0]是判断是奇数还是偶数,若为1则是奇数分频,若是偶数则是偶数分频。 +assign clk_div = (N == 1) ? clk_in : (N[0]) ? (clk_in_p | clk_in_n) : (clk_in_p); + +always@(posedge clk_in or negedge rst_n) begin + if (!rst_n) + cnt_p <= 0; + else if (cnt_p == (N-1)) + cnt_p <= 0; + else + cnt_p <= cnt_p + 1; +end + +always@(posedge clk_in or negedge rst_n) begin + if (!rst_n) + clk_in_p <= 1;//此处设置为0也是可以的,这个没有硬性的要求,不管是取0还是取1结果都是正确的。 + else if (cnt_p < (N>>1))/*N整体向右移动一位,最高位补零,其实就是N/2,不过在计算奇数的时候有很明显的优越性*/ + clk_in_p <= 1; + else + clk_in_p <= 0; +end + +always@(negedge clk_in or negedge rst_n) begin + if (!rst_n) + cnt_n <= 0; + else if (cnt_n == (N-1)) + cnt_n <= 0; + else + cnt_n <= cnt_n + 1; +end + +always@(negedge clk_in or negedge rst_n) begin + if (!rst_n) + clk_in_n <= 1; + else if (cnt_n < (N>>1)) + clk_in_n <= 1; + else + clk_in_n <= 0; +end + +endmodule + diff --git a/lib/common/Apply/DSP/Base/CLK/CLK_Sample.v b/lib/common/Apply/DSP/Base/CLK/CLK_Sample.v new file mode 100644 index 0000000..d3d0273 --- /dev/null +++ b/lib/common/Apply/DSP/Base/CLK/CLK_Sample.v @@ -0,0 +1,19 @@ +module CLK_Sample # ( + parameter PHASE_WIDTH = 32 +) ( + input clk_in, + input RST, + input [PHASE_WIDTH-1:0] sample_fre, + output clk_sample +); + +reg [PHASE_WIDTH-1:0] addr_r = 0; +always @(posedge clk_in) begin + if (RST) + addr_r <= 32'd0; + else + addr_r <= addr_r + sample_fre; +end +assign clk_sample = addr_r[PHASE_WIDTH-1]; + +endmodule diff --git a/lib/common/Apply/DSP/Base/DDS/DDS_Gen.v b/lib/common/Apply/DSP/Base/DDS/DDS_Gen.v new file mode 100644 index 0000000..4432ff3 --- /dev/null +++ b/lib/common/Apply/DSP/Base/DDS/DDS_Gen.v @@ -0,0 +1,327 @@ +module DDS_Gen #( + parameter OUTPUT_WIDTH = 12, + parameter PHASE_WIDTH = 32 +) ( + input clk, + input [PHASE_WIDTH - 1 : 0] Fre_word, // (fre*4294967296)/clk/1000000 + input [PHASE_WIDTH - 1 : 0] Pha_word, // (fre*4294967296)/clk/1000000 + output [OUTPUT_WIDTH - 1 : 0] wave_out_sin, + output [OUTPUT_WIDTH - 1 : 0] wave_out_tri, + output [OUTPUT_WIDTH - 1 : 0] wave_out_saw +); + +localparam [OUTPUT_WIDTH - 1 : 0] DC_SUB = 2**(OUTPUT_WIDTH-1); + +reg [OUTPUT_WIDTH - 1 : 0] wave_out_sin_r; +reg [OUTPUT_WIDTH - 1 : 0] wave_out_tri_r; +reg [OUTPUT_WIDTH - 1 : 0] wave_out_saw_r; + +reg [PHASE_WIDTH - 1 : 0] addr_r0 = 0; +reg [PHASE_WIDTH - 1 : 0] addr_r1 = 0; +always @(posedge clk) begin + addr_r0 <= addr_r0 + Fre_word; + addr_r1 <= addr_r0 + Pha_word; +end + + +always @(posedge clk ) begin + wave_out_saw_r <= addr_r1[PHASE_WIDTH - 1 : PHASE_WIDTH - OUTPUT_WIDTH]; +end +assign wave_out_saw = wave_out_saw_r; + +always @(posedge clk ) begin + if (addr_r1[PHASE_WIDTH - 1]) + wave_out_tri_r <= (2**(OUTPUT_WIDTH + 1)-1) - addr_r1[PHASE_WIDTH - 1 : PHASE_WIDTH - OUTPUT_WIDTH - 1]; + else + wave_out_tri_r <= addr_r1[PHASE_WIDTH - 1 : PHASE_WIDTH - OUTPUT_WIDTH - 1]; +end +assign wave_out_tri = wave_out_tri_r - DC_SUB; + +reg [9:0] addr_r = 0; +always @(posedge clk) begin + addr_r <= addr_r1[PHASE_WIDTH - 1 : PHASE_WIDTH - 10]; +end + +reg [7:0] addr; +always @(*) begin + case (addr_r[9:8]) + 2'b00 : begin addr <= addr_r[7:0]; end + 2'b01 : begin addr <= addr_r[7:0] ^ 8'b1111_1111; end + 2'b10 : begin addr <= addr_r[7:0]; end + 2'b11 : begin addr <= addr_r[7:0] ^ 8'b1111_1111; end + default : begin addr <= 8'd0; end + endcase +end + +reg signed [13:0] wave_sin_buf; +always @(*) begin + case (addr) + 8'd0 : begin wave_sin_buf <= 0; end + 8'd1 : begin wave_sin_buf <= 50; end + 8'd2 : begin wave_sin_buf <= 101; end + 8'd3 : begin wave_sin_buf <= 151; end + 8'd4 : begin wave_sin_buf <= 201; end + 8'd5 : begin wave_sin_buf <= 252; end + 8'd6 : begin wave_sin_buf <= 302; end + 8'd7 : begin wave_sin_buf <= 352; end + 8'd8 : begin wave_sin_buf <= 402; end + 8'd9 : begin wave_sin_buf <= 453; end + 8'd10 : begin wave_sin_buf <= 503; end + 8'd11 : begin wave_sin_buf <= 553; end + 8'd12 : begin wave_sin_buf <= 603; end + 8'd13 : begin wave_sin_buf <= 653; end + 8'd14 : begin wave_sin_buf <= 703; end + 8'd15 : begin wave_sin_buf <= 754; end + 8'd16 : begin wave_sin_buf <= 804; end + 8'd17 : begin wave_sin_buf <= 854; end + 8'd18 : begin wave_sin_buf <= 904; end + 8'd19 : begin wave_sin_buf <= 954; end + 8'd20 : begin wave_sin_buf <= 1004; end + 8'd21 : begin wave_sin_buf <= 1054; end + 8'd22 : begin wave_sin_buf <= 1103; end + 8'd23 : begin wave_sin_buf <= 1153; end + 8'd24 : begin wave_sin_buf <= 1203; end + 8'd25 : begin wave_sin_buf <= 1253; end + 8'd26 : begin wave_sin_buf <= 1302; end + 8'd27 : begin wave_sin_buf <= 1352; end + 8'd28 : begin wave_sin_buf <= 1402; end + 8'd29 : begin wave_sin_buf <= 1451; end + 8'd30 : begin wave_sin_buf <= 1501; end + 8'd31 : begin wave_sin_buf <= 1550; end + 8'd32 : begin wave_sin_buf <= 1600; end + 8'd33 : begin wave_sin_buf <= 1649; end + 8'd34 : begin wave_sin_buf <= 1698; end + 8'd35 : begin wave_sin_buf <= 1747; end + 8'd36 : begin wave_sin_buf <= 1796; end + 8'd37 : begin wave_sin_buf <= 1845; end + 8'd38 : begin wave_sin_buf <= 1894; end + 8'd39 : begin wave_sin_buf <= 1943; end + 8'd40 : begin wave_sin_buf <= 1992; end + 8'd41 : begin wave_sin_buf <= 2041; end + 8'd42 : begin wave_sin_buf <= 2090; end + 8'd43 : begin wave_sin_buf <= 2138; end + 8'd44 : begin wave_sin_buf <= 2187; end + 8'd45 : begin wave_sin_buf <= 2235; end + 8'd46 : begin wave_sin_buf <= 2284; end + 8'd47 : begin wave_sin_buf <= 2332; end + 8'd48 : begin wave_sin_buf <= 2380; end + 8'd49 : begin wave_sin_buf <= 2428; end + 8'd50 : begin wave_sin_buf <= 2476; end + 8'd51 : begin wave_sin_buf <= 2524; end + 8'd52 : begin wave_sin_buf <= 2572; end + 8'd53 : begin wave_sin_buf <= 2620; end + 8'd54 : begin wave_sin_buf <= 2667; end + 8'd55 : begin wave_sin_buf <= 2715; end + 8'd56 : begin wave_sin_buf <= 2762; end + 8'd57 : begin wave_sin_buf <= 2809; end + 8'd58 : begin wave_sin_buf <= 2857; end + 8'd59 : begin wave_sin_buf <= 2904; end + 8'd60 : begin wave_sin_buf <= 2951; end + 8'd61 : begin wave_sin_buf <= 2998; end + 8'd62 : begin wave_sin_buf <= 3044; end + 8'd63 : begin wave_sin_buf <= 3091; end + 8'd64 : begin wave_sin_buf <= 3137; end + 8'd65 : begin wave_sin_buf <= 3184; end + 8'd66 : begin wave_sin_buf <= 3230; end + 8'd67 : begin wave_sin_buf <= 3276; end + 8'd68 : begin wave_sin_buf <= 3322; end + 8'd69 : begin wave_sin_buf <= 3368; end + 8'd70 : begin wave_sin_buf <= 3414; end + 8'd71 : begin wave_sin_buf <= 3460; end + 8'd72 : begin wave_sin_buf <= 3505; end + 8'd73 : begin wave_sin_buf <= 3551; end + 8'd74 : begin wave_sin_buf <= 3596; end + 8'd75 : begin wave_sin_buf <= 3641; end + 8'd76 : begin wave_sin_buf <= 3686; end + 8'd77 : begin wave_sin_buf <= 3731; end + 8'd78 : begin wave_sin_buf <= 3776; end + 8'd79 : begin wave_sin_buf <= 3820; end + 8'd80 : begin wave_sin_buf <= 3865; end + 8'd81 : begin wave_sin_buf <= 3909; end + 8'd82 : begin wave_sin_buf <= 3953; end + 8'd83 : begin wave_sin_buf <= 3997; end + 8'd84 : begin wave_sin_buf <= 4041; end + 8'd85 : begin wave_sin_buf <= 4085; end + 8'd86 : begin wave_sin_buf <= 4128; end + 8'd87 : begin wave_sin_buf <= 4172; end + 8'd88 : begin wave_sin_buf <= 4215; end + 8'd89 : begin wave_sin_buf <= 4258; end + 8'd90 : begin wave_sin_buf <= 4301; end + 8'd91 : begin wave_sin_buf <= 4343; end + 8'd92 : begin wave_sin_buf <= 4386; end + 8'd93 : begin wave_sin_buf <= 4428; end + 8'd94 : begin wave_sin_buf <= 4471; end + 8'd95 : begin wave_sin_buf <= 4513; end + 8'd96 : begin wave_sin_buf <= 4555; end + 8'd97 : begin wave_sin_buf <= 4596; end + 8'd98 : begin wave_sin_buf <= 4638; end + 8'd99 : begin wave_sin_buf <= 4679; end + 8'd100 : begin wave_sin_buf <= 4720; end + 8'd101 : begin wave_sin_buf <= 4761; end + 8'd102 : begin wave_sin_buf <= 4802; end + 8'd103 : begin wave_sin_buf <= 4843; end + 8'd104 : begin wave_sin_buf <= 4883; end + 8'd105 : begin wave_sin_buf <= 4924; end + 8'd106 : begin wave_sin_buf <= 4964; end + 8'd107 : begin wave_sin_buf <= 5004; end + 8'd108 : begin wave_sin_buf <= 5044; end + 8'd109 : begin wave_sin_buf <= 5083; end + 8'd110 : begin wave_sin_buf <= 5122; end + 8'd111 : begin wave_sin_buf <= 5162; end + 8'd112 : begin wave_sin_buf <= 5201; end + 8'd113 : begin wave_sin_buf <= 5239; end + 8'd114 : begin wave_sin_buf <= 5278; end + 8'd115 : begin wave_sin_buf <= 5316; end + 8'd116 : begin wave_sin_buf <= 5354; end + 8'd117 : begin wave_sin_buf <= 5392; end + 8'd118 : begin wave_sin_buf <= 5430; end + 8'd119 : begin wave_sin_buf <= 5468; end + 8'd120 : begin wave_sin_buf <= 5505; end + 8'd121 : begin wave_sin_buf <= 5542; end + 8'd122 : begin wave_sin_buf <= 5579; end + 8'd123 : begin wave_sin_buf <= 5616; end + 8'd124 : begin wave_sin_buf <= 5652; end + 8'd125 : begin wave_sin_buf <= 5689; end + 8'd126 : begin wave_sin_buf <= 5725; end + 8'd127 : begin wave_sin_buf <= 5761; end + 8'd128 : begin wave_sin_buf <= 5796; end + 8'd129 : begin wave_sin_buf <= 5832; end + 8'd130 : begin wave_sin_buf <= 5867; end + 8'd131 : begin wave_sin_buf <= 5902; end + 8'd132 : begin wave_sin_buf <= 5937; end + 8'd133 : begin wave_sin_buf <= 5971; end + 8'd134 : begin wave_sin_buf <= 6006; end + 8'd135 : begin wave_sin_buf <= 6040; end + 8'd136 : begin wave_sin_buf <= 6074; end + 8'd137 : begin wave_sin_buf <= 6107; end + 8'd138 : begin wave_sin_buf <= 6141; end + 8'd139 : begin wave_sin_buf <= 6174; end + 8'd140 : begin wave_sin_buf <= 6207; end + 8'd141 : begin wave_sin_buf <= 6239; end + 8'd142 : begin wave_sin_buf <= 6272; end + 8'd143 : begin wave_sin_buf <= 6304; end + 8'd144 : begin wave_sin_buf <= 6336; end + 8'd145 : begin wave_sin_buf <= 6368; end + 8'd146 : begin wave_sin_buf <= 6399; end + 8'd147 : begin wave_sin_buf <= 6431; end + 8'd148 : begin wave_sin_buf <= 6462; end + 8'd149 : begin wave_sin_buf <= 6493; end + 8'd150 : begin wave_sin_buf <= 6523; end + 8'd151 : begin wave_sin_buf <= 6553; end + 8'd152 : begin wave_sin_buf <= 6584; end + 8'd153 : begin wave_sin_buf <= 6613; end + 8'd154 : begin wave_sin_buf <= 6643; end + 8'd155 : begin wave_sin_buf <= 6672; end + 8'd156 : begin wave_sin_buf <= 6701; end + 8'd157 : begin wave_sin_buf <= 6730; end + 8'd158 : begin wave_sin_buf <= 6759; end + 8'd159 : begin wave_sin_buf <= 6787; end + 8'd160 : begin wave_sin_buf <= 6815; end + 8'd161 : begin wave_sin_buf <= 6843; end + 8'd162 : begin wave_sin_buf <= 6870; end + 8'd163 : begin wave_sin_buf <= 6897; end + 8'd164 : begin wave_sin_buf <= 6925; end + 8'd165 : begin wave_sin_buf <= 6951; end + 8'd166 : begin wave_sin_buf <= 6978; end + 8'd167 : begin wave_sin_buf <= 7004; end + 8'd168 : begin wave_sin_buf <= 7030; end + 8'd169 : begin wave_sin_buf <= 7056; end + 8'd170 : begin wave_sin_buf <= 7081; end + 8'd171 : begin wave_sin_buf <= 7106; end + 8'd172 : begin wave_sin_buf <= 7131; end + 8'd173 : begin wave_sin_buf <= 7156; end + 8'd174 : begin wave_sin_buf <= 7180; end + 8'd175 : begin wave_sin_buf <= 7204; end + 8'd176 : begin wave_sin_buf <= 7228; end + 8'd177 : begin wave_sin_buf <= 7251; end + 8'd178 : begin wave_sin_buf <= 7275; end + 8'd179 : begin wave_sin_buf <= 7298; end + 8'd180 : begin wave_sin_buf <= 7320; end + 8'd181 : begin wave_sin_buf <= 7343; end + 8'd182 : begin wave_sin_buf <= 7365; end + 8'd183 : begin wave_sin_buf <= 7387; end + 8'd184 : begin wave_sin_buf <= 7408; end + 8'd185 : begin wave_sin_buf <= 7430; end + 8'd186 : begin wave_sin_buf <= 7451; end + 8'd187 : begin wave_sin_buf <= 7472; end + 8'd188 : begin wave_sin_buf <= 7492; end + 8'd189 : begin wave_sin_buf <= 7512; end + 8'd190 : begin wave_sin_buf <= 7532; end + 8'd191 : begin wave_sin_buf <= 7552; end + 8'd192 : begin wave_sin_buf <= 7571; end + 8'd193 : begin wave_sin_buf <= 7590; end + 8'd194 : begin wave_sin_buf <= 7609; end + 8'd195 : begin wave_sin_buf <= 7627; end + 8'd196 : begin wave_sin_buf <= 7646; end + 8'd197 : begin wave_sin_buf <= 7664; end + 8'd198 : begin wave_sin_buf <= 7681; end + 8'd199 : begin wave_sin_buf <= 7698; end + 8'd200 : begin wave_sin_buf <= 7715; end + 8'd201 : begin wave_sin_buf <= 7732; end + 8'd202 : begin wave_sin_buf <= 7749; end + 8'd203 : begin wave_sin_buf <= 7765; end + 8'd204 : begin wave_sin_buf <= 7781; end + 8'd205 : begin wave_sin_buf <= 7796; end + 8'd206 : begin wave_sin_buf <= 7812; end + 8'd207 : begin wave_sin_buf <= 7827; end + 8'd208 : begin wave_sin_buf <= 7841; end + 8'd209 : begin wave_sin_buf <= 7856; end + 8'd210 : begin wave_sin_buf <= 7870; end + 8'd211 : begin wave_sin_buf <= 7884; end + 8'd212 : begin wave_sin_buf <= 7897; end + 8'd213 : begin wave_sin_buf <= 7910; end + 8'd214 : begin wave_sin_buf <= 7923; end + 8'd215 : begin wave_sin_buf <= 7936; end + 8'd216 : begin wave_sin_buf <= 7948; end + 8'd217 : begin wave_sin_buf <= 7960; end + 8'd218 : begin wave_sin_buf <= 7972; end + 8'd219 : begin wave_sin_buf <= 7983; end + 8'd220 : begin wave_sin_buf <= 7994; end + 8'd221 : begin wave_sin_buf <= 8005; end + 8'd222 : begin wave_sin_buf <= 8016; end + 8'd223 : begin wave_sin_buf <= 8026; end + 8'd224 : begin wave_sin_buf <= 8036; end + 8'd225 : begin wave_sin_buf <= 8045; end + 8'd226 : begin wave_sin_buf <= 8055; end + 8'd227 : begin wave_sin_buf <= 8064; end + 8'd228 : begin wave_sin_buf <= 8072; end + 8'd229 : begin wave_sin_buf <= 8081; end + 8'd230 : begin wave_sin_buf <= 8089; end + 8'd231 : begin wave_sin_buf <= 8097; end + 8'd232 : begin wave_sin_buf <= 8104; end + 8'd233 : begin wave_sin_buf <= 8111; end + 8'd234 : begin wave_sin_buf <= 8118; end + 8'd235 : begin wave_sin_buf <= 8125; end + 8'd236 : begin wave_sin_buf <= 8131; end + 8'd237 : begin wave_sin_buf <= 8137; end + 8'd238 : begin wave_sin_buf <= 8142; end + 8'd239 : begin wave_sin_buf <= 8148; end + 8'd240 : begin wave_sin_buf <= 8153; end + 8'd241 : begin wave_sin_buf <= 8157; end + 8'd242 : begin wave_sin_buf <= 8162; end + 8'd243 : begin wave_sin_buf <= 8166; end + 8'd244 : begin wave_sin_buf <= 8170; end + 8'd245 : begin wave_sin_buf <= 8173; end + 8'd246 : begin wave_sin_buf <= 8176; end + 8'd247 : begin wave_sin_buf <= 8179; end + 8'd248 : begin wave_sin_buf <= 8182; end + 8'd249 : begin wave_sin_buf <= 8184; end + 8'd250 : begin wave_sin_buf <= 8186; end + 8'd251 : begin wave_sin_buf <= 8188; end + 8'd252 : begin wave_sin_buf <= 8189; end + 8'd253 : begin wave_sin_buf <= 8190; end + 8'd254 : begin wave_sin_buf <= 8191; end + 8'd255 : begin wave_sin_buf <= 8191; end + default : begin wave_sin_buf <= 0; end + endcase +end + +always @(*) begin + case (addr_r[9]) + 1'b0 : begin wave_out_sin_r <= wave_sin_buf[13 : 14 - OUTPUT_WIDTH]; end + 1'b1 : begin wave_out_sin_r <= -wave_sin_buf[13 : 14 - OUTPUT_WIDTH]; end + default : begin wave_out_sin_r <= 14'd0; end + endcase +end +assign wave_out_sin = wave_out_sin_r; +endmodule \ No newline at end of file diff --git a/lib/common/Apply/DSP/Base/Measure/Fre_meas.v b/lib/common/Apply/DSP/Base/Measure/Fre_meas.v new file mode 100644 index 0000000..5e4316c --- /dev/null +++ b/lib/common/Apply/DSP/Base/Measure/Fre_meas.v @@ -0,0 +1,96 @@ +module Fre_meas( + input clk_in, + input square, + input [31:0] GATE_TIME, + output [31:0] CNTCLK, //闸门内系统时钟周期计数 + output [31:0] CNTSQU //闸门内待测方波时钟周期计数 +); +//parameter GATE_TIME = 28'd49_999_999;//实际闸门计数是99_999_999,仿真时设为10ms + +reg square_r0 = 1'b0; +reg square_r1 = 1'b0; +reg square_r2 = 1'b0; +reg square_r3 = 1'b0; + +reg gate = 1'b0; //闸门信号 +reg gatebuf = 1'b0; //与方波同步之后的闸门信号 +reg gatebuf1 = 1'b0;//同步闸门信号延时一拍 + +reg [31:0] cnt1 = 28'd0; //产生 1s 的闸门信号的计数器 +reg [31:0] cnt2 = 28'd0; +reg [31:0] cnt2_r = 28'd0; +reg [31:0] cnt3 = 28'd0; +reg [31:0] cnt3_r = 28'd0; + +wire square_pose,square_nege; +wire gate_start,gate_end; + +//使方波和100MHz时钟同步并捕捉待测方波的边沿 +always @ (posedge clk_in) +begin + square_r0 <= square; + square_r1 <= square_r0;//将外部输入的方波打两拍 + square_r2 <= square_r1; + square_r3 <= square_r2; +end + +assign square_pose = square_r2 & ~square_r3; +assign square_nege = ~square_r2 & square_r3; + +always @ (posedge clk_in) +begin + if(cnt1 == GATE_TIME)begin + cnt1 <= 28'd0; + gate <= ~gate;//产生 1s 的闸门信号 + end + else begin + cnt1 <= cnt1 + 1'b1; + end +end + +always @ (posedge clk_in ) +begin + if(square_pose == 1'b1) + begin + gatebuf <= gate;//使闸门信号与待测方波同步,保证一个闸门包含整数个方波周期 + end + gatebuf1 <= gatebuf;//将同步之后的闸门信号打一拍,用于捕捉闸门信号的边沿 +end + +assign gate_start = gatebuf & ~gatebuf1;//表示闸门开始时刻 +assign gate_end = ~gatebuf & gatebuf1;//闸门结束时刻 + +//计数系统时钟周期 +always @ (posedge clk_in) +begin + if(gate_start == 1'b1) begin + cnt2 <= 28'd1; + end + else if(gate_end == 1'b1) begin + cnt2_r <= cnt2;//将所得结果保存在cnt2_r中,并将计数器清零 + cnt2 <= 28'd0; + end + else if(gatebuf1 == 1'b1) begin//在闸门内计数系统时钟周期 + cnt2 <= cnt2 + 1'b1;end +end + +//计数待测方波周期数 +always @ (posedge clk_in ) +begin + if(gate_start == 1'b1) begin + cnt3 <= 28'd0; + end + else if(gate_end == 1'b1) begin + cnt3_r <= cnt3;//将所得结果保存在cnt3_r中,并将计数器清零 + cnt3 <= 28'd0; + end + else if(gatebuf1 == 1'b1 && square_nege == 1'b1) begin//在闸门内计数待测方波周期数(数闸门内方波的下降沿) + cnt3 <= cnt3 + 1'b1; + end +end + + +assign CNTCLK = cnt2_r; +assign CNTSQU = cnt3_r; + +endmodule \ No newline at end of file diff --git a/lib/common/Apply/DSP/Base/Measure/Max_meas.v b/lib/common/Apply/DSP/Base/Measure/Max_meas.v new file mode 100644 index 0000000..0cf6362 --- /dev/null +++ b/lib/common/Apply/DSP/Base/Measure/Max_meas.v @@ -0,0 +1,101 @@ +module Max_meas # +( + parameter data_width = 4'd12, + parameter range_width = 4'd10 +) +( + input clk_in, + input rst_n, + input [range_width-1:0] range, + input signed [data_width - 1:0] data_in, + output signed [data_width - 1:0] data_out +); + +localparam state_output = 3'b010; +localparam state_initial = 3'b000; +localparam state_detection = 3'b001; + +reg signed [data_width - 1:0] data_out_buf = 0; +reg signed [data_width - 1:0] data_out_buf1 = 0; +reg [2:0] state = 3'b000; +reg test_sig = 1'b0; +reg test_sig_buf = 1'b0; +wire test_done_sig = ~test_sig & test_sig_buf; +wire test_start_sig = test_sig & ~test_sig_buf; + +/***************************************************/ +//define the time counter +reg [range_width-1:0] cnt0 = 1; + +always@(posedge clk_in) +begin + if (range == 0) + begin + test_sig <= 1'b1; + end + else if (cnt0 == range) + begin + cnt0 <= 10'd0; //count done,clearing the time counter + test_sig <= 1'd0; + end + else + test_sig <= 1'd1; //cnt0 counter = cnt0 counter + 1 + cnt0 <= cnt0 + 1'b1; +end +/***************************************************/ + + + +always@(posedge clk_in) +begin + if (range == 0) + begin + test_sig_buf <= 1'b0; + end + else + begin + test_sig_buf <= test_sig; + end +end + +always@(posedge clk_in or negedge rst_n) +begin + if(!rst_n) + begin + data_out_buf <= 0; + data_out_buf1 <= 0; + end + else + begin + case(state) + state_initial:begin + if(test_start_sig) + begin + state <= state_detection; + data_out_buf <= 0; + end + end + state_detection:begin + if(test_done_sig) + state <= state_output; + else + if(data_in > data_out_buf) + begin + data_out_buf <= data_in; + if (range == 0) + begin + data_out_buf1 <= data_out_buf; + end + end + end + state_output:begin + data_out_buf1 <= data_out_buf; + state <= state_initial; + end + endcase + end +end + +assign data_out=data_out_buf1; + +endmodule \ No newline at end of file diff --git a/lib/common/Apply/DSP/Base/Measure/Min_meas.v b/lib/common/Apply/DSP/Base/Measure/Min_meas.v new file mode 100644 index 0000000..52e126f --- /dev/null +++ b/lib/common/Apply/DSP/Base/Measure/Min_meas.v @@ -0,0 +1,101 @@ +module Min_meas # +( + parameter data_width = 4'd12, + parameter range_width = 4'd10 +) +( + input clk_in, + input rst_n, + input [range_width-1:0] range, + input signed [data_width - 1:0] data_in, + output signed [data_width - 1:0] data_out +); + +localparam state_output = 3'b010; +localparam state_initial = 3'b000; +localparam state_detection = 3'b001; + +reg signed [data_width - 1:0] data_out_buf = 0; +reg signed [data_width - 1:0] data_out_buf1 = 0; +reg [2:0] state = 3'b000; +reg test_sig = 1'b0; +reg test_sig_buf = 1'b0; +wire test_done_sig = ~test_sig & test_sig_buf; +wire test_start_sig = test_sig & ~test_sig_buf; + +/***************************************************/ +//define the time counter +reg [range_width-1:0] cnt0 = 1; + +always@(posedge clk_in) +begin + if (range == 0) + begin + test_sig <= 1'b1; + end + else if (cnt0 == range) + begin + cnt0 <= 10'd0; //count done,clearing the time counter + test_sig <= 1'd0; + end + else + test_sig <= 1'd1; //cnt0 counter = cnt0 counter + 1 + cnt0 <= cnt0 + 1'b1; +end +/***************************************************/ + + + +always@(posedge clk_in) +begin + if (range == 0) + begin + test_sig_buf <= 1'b0; + end + else + begin + test_sig_buf <= test_sig; + end +end + +always@(posedge clk_in or negedge rst_n) +begin + if(!rst_n) + begin + data_out_buf <= 0; + data_out_buf1 <= 0; + end + else + begin + case(state) + state_initial:begin + if(test_start_sig) + begin + state <= state_detection; + data_out_buf <= 0; + end + end + state_detection:begin + if(test_done_sig) + state <= state_output; + else + if(data_in > data_out_buf) + begin + data_out_buf <= data_in; + if (range == 0) + begin + data_out_buf1 <= data_out_buf; + end + end + end + state_output:begin + data_out_buf1 <= data_out_buf; + state <= state_initial; + end + endcase + end +end + +assign data_out=data_out_buf1; + +endmodule \ No newline at end of file diff --git a/lib/common/Apply/DSP/Base/Measure/Valid_Meas.v b/lib/common/Apply/DSP/Base/Measure/Valid_Meas.v new file mode 100644 index 0000000..80aba84 --- /dev/null +++ b/lib/common/Apply/DSP/Base/Measure/Valid_Meas.v @@ -0,0 +1,76 @@ +`timescale 1ns / 1ps +module measure +( + input clk_sys, + input clk_samp, + input rst_n, + input mearsure_start, + input [11:0] AD_data, + output measure_done_q, + output [21:0] data_out +); +parameter cnt_clear = 22'd255; +reg clk_samp_buf0; +reg clk_samp_buf1; +wire clk_samp_impluse = clk_samp_buf0 & ~clk_samp_buf1;//采样脉冲信号 +wire [21:0] mult_data; +reg [16:0] cnt; +reg [39:0] sig_energy; +reg [21:0] data_out_buf; +reg measure_en; +wire measure_done = (cnt == cnt_clear) ? 1'b1:1'b0; +assign measure_done_q = measure_done; +always@(posedge clk_sys) +begin + clk_samp_buf0 <= clk_samp; + clk_samp_buf1 <= clk_samp_buf0; +end +always@(posedge clk_sys) +begin + if(!rst_n) + begin + measure_en <= 1'b0; + end + else if(mearsure_start) + measure_en <= 1'b1; + else if(measure_done) + measure_en <= 1'b0; + else + measure_en <= measure_en; +end +always@(posedge clk_sys) +begin + if(!rst_n) + begin + sig_energy <= 40'd0; + cnt <= 17'd0; + data_out_buf <= 22'd0; + end + else if(cnt == cnt_clear) + begin + sig_energy <= 40'd0; + data_out_buf <= sig_energy[39:8]; + cnt <= 17'd0; + end + else if(clk_samp_impluse && measure_en) + begin + cnt <= cnt + 17'd1; + sig_energy <= sig_energy + mult_data; + end + else + begin + sig_energy <= sig_energy; + data_out_buf <= data_out_buf; + cnt <= cnt; + end +end +mult1 mult1_inst +( +.A(AD_data), +.B(AD_data), +.P(mult_data), +.CLK(clk_sys), +.CE(clk_samp_impluse) +); +assign data_out = data_out_buf; +endmodule diff --git a/lib/common/Apply/Image/Advance_Apply/Image_XYCrop.v b/lib/common/Apply/Image/Advance_Apply/Image_XYCrop.v new file mode 100644 index 0000000..7e2d2ee --- /dev/null +++ b/lib/common/Apply/Image/Advance_Apply/Image_XYCrop.v @@ -0,0 +1,69 @@ +`timescale 1ns / 1ps +module Image_XYCrop( + input clk, + input rst_n, + + //CMOS + input image_in_vsync, + input image_in_href, + input image_in_data, + + output image_out_vsync, + output image_out_href_left, + output image_out_data_left, + output image_out_href_right, + output image_out_data_right +); + +//----------------------------------- +reg image_in_href_r = 0; +reg image_in_vsync_r = 0; +reg image_in_data_r = 0; +always@(posedge clk or negedge rst_n) begin + if(!rst_n) begin + image_in_vsync_r <= 0; + image_in_href_r <= 0; + image_in_data_r <= 0; + end + else begin + image_in_vsync_r <= image_in_vsync; + image_in_href_r <= image_in_href; + image_in_data_r <= image_in_data; + end +end +//----------------------------------- +//Image Ysize Crop +reg [11:0] image_ypos = 0; +wire image_in_href_negedge = (image_in_href_r & ~image_in_href) ? 1'b1 : 1'b0; +always@(posedge clk or negedge rst_n) begin + if(!rst_n) + image_ypos <= 0; + else if(image_in_vsync == 1'b1) begin + if(image_in_href_negedge == 1'b1) //行同步信号的下降沿,一行信号赋值完成后,image_ypos累加1 + image_ypos <= image_ypos + 1'b1; + else + image_ypos <= image_ypos; + end + else + image_ypos <= 0; +end +assign image_out_vsync = image_in_vsync_r; // image_out_vsync是打一拍后的 image_in_vsync的信号,延时了一个时钟周期 + +//----------------------------------- +//Image Hsize Crop +reg [11:0] image_xpos = 0; +always@(posedge clk or negedge rst_n) begin + if(!rst_n) + image_xpos <= 0; + else if(image_in_href == 1'b1) + image_xpos <= image_xpos + 1'b1; + else + image_xpos <= 0; +end + +assign image_out_href_right = ((image_in_href_r == 1'b1) && (image_xpos > 10'd640) && (image_xpos < 12'd1280)) ? 1'b1 : 1'b0; +assign image_out_data_right = (image_out_vsync & image_out_href_right) ? image_in_data_r : 1'd0; +assign image_out_href_left = ((image_in_href_r == 1'b1) && (image_xpos <= 10'd640)) ? 1'b1 : 1'b0; +assign image_out_data_left = (image_out_vsync & image_out_href_left) ? image_in_data_r : 1'd0; + +endmodule diff --git a/lib/common/Apply/Image/Advance_Apply/Parallel_Line_Detector.v b/lib/common/Apply/Image/Advance_Apply/Parallel_Line_Detector.v new file mode 100644 index 0000000..79bcfb8 --- /dev/null +++ b/lib/common/Apply/Image/Advance_Apply/Parallel_Line_Detector.v @@ -0,0 +1,113 @@ +module Parallel_Line_Detector #( + parameter IMG_VDISP = 1240, + parameter X_THRESHOLD = 100, + parameter Y_THRESHOLD = 100, + parameter X_Center_Value = 540, + parameter Y_Center_Value = 540 +) ( + input clk, + input rst_n, + // + input per_img_Bit, + input per_frame_href, + input per_frame_vsync, + // + output X_up_down, + output Y_up_down, + output [15:0] X_distance, + output [15:0] Y_distance +); + + +//检测行同步信号边沿,一行数据的开始和结束 +wire href_pos,href_neg,vsync_neg; +reg [1:0] per_frame_href_r,per_frame_vsync_r; +always @ (posedge clk or negedge rst_n) begin + if(!rst_n) begin + per_frame_href_r <= 2'b0; + per_frame_vsync_r <= 2'b0; + end + else begin + per_frame_href_r <= {per_frame_href_r[0],per_frame_href}; + per_frame_vsync_r <= {per_frame_vsync_r[0],per_frame_vsync}; + end +end +assign href_pos =(~per_frame_href_r[1] & per_frame_href_r[0]) ? 1'b1 : 1'b0; //一行信号的开始 +assign href_neg =(~per_frame_href_r[0] & per_frame_href_r[1]) ? 1'b1 : 1'b0; //一行信号的结束 +assign vsync_neg =(~per_frame_vsync_r[0] & per_frame_vsync_r[1]) ? 1'b1 : 1'b0; //一帧信号的结束 + +/**************************************直线检测部分**************************************/ +wire IMG_BIT_INPUT = ~per_img_Bit; //输入的边缘数据 + +reg [15:0] x_coordinate_cnt; //列计数器,横坐标 X +reg [15:0] y_coordinate_cnt; //行计数器,纵坐标 Y + +reg [15:0] X_edge_center; //纵向纤芯坐标 +reg [15:0] Y_edge_center; //横向纤芯坐标 + +//竖线线检测的相关变量 +reg [15:0] X_edge_acc = 0; //列边沿坐标的累加 +reg [15:0] X_edge_cnt = 0; //列边沿的计数器 +reg [15:0] per_row_acc [IMG_VDISP:1]; //每列的累加值 +reg [IMG_VDISP:1] per_row_flag; //每列的累加值 + +//横线检测的相关变量 +reg [15:0] Y_edge_acc = 0; //行边沿坐标的累加 +reg [15:0] Y_edge_cnt = 0; //行边沿的计数器 +reg [15:0] per_href_acc = 0; //每行的累加值 + +//直线检测处理语句块 +integer i; +always @ (posedge clk or negedge rst_n) begin + if(!rst_n) begin + Y_edge_acc <= 16'd0; + Y_edge_cnt <= 16'd0; + X_edge_acc <= 16'd0; + X_edge_cnt <= 16'd0; + per_href_acc <= 16'd0; + x_coordinate_cnt <= 16'd0; + y_coordinate_cnt <= 16'd0; + for (i = 1; i<=IMG_VDISP; i=i+1) begin + per_row_acc[i] <= 16'd0; + per_row_flag[i] <= 1'd0; + end + end + else if (per_frame_href) begin + if (href_pos) y_coordinate_cnt <= y_coordinate_cnt + 1'd1; + else y_coordinate_cnt <= y_coordinate_cnt; + if ((per_row_acc[x_coordinate_cnt] >= X_THRESHOLD) && (~per_row_flag[x_coordinate_cnt])) begin + X_edge_cnt <= X_edge_cnt + 1'd1; + per_row_flag[x_coordinate_cnt] <= 1'b1; + X_edge_acc <= X_edge_acc + x_coordinate_cnt; + end + per_href_acc <= per_href_acc + IMG_BIT_INPUT; + x_coordinate_cnt <= x_coordinate_cnt + 1'd1; + per_row_acc[x_coordinate_cnt] <= per_row_acc[x_coordinate_cnt] + IMG_BIT_INPUT; + end + else if(href_neg) begin //一行数据结束 + if(per_href_acc >= Y_THRESHOLD) begin + Y_edge_cnt <= Y_edge_cnt + 1'd1; + Y_edge_acc <= Y_edge_acc + y_coordinate_cnt; + end + per_href_acc <= 16'd0; + x_coordinate_cnt <= 16'd0; + end + else if (vsync_neg) begin + X_edge_center = X_edge_acc / X_edge_cnt; + Y_edge_center = Y_edge_acc / Y_edge_cnt; + X_edge_acc <= 16'd0; X_edge_cnt <= 16'd0; + Y_edge_acc <= 16'd0; Y_edge_cnt <= 16'd0; + for (i = 1; i<=IMG_VDISP; i=i+1) begin + per_row_acc[i] <= 16'd0; + per_row_flag[i] <= 1'd0; + end + y_coordinate_cnt <= 16'd0; + end +end + +assign X_distance = $signed(X_edge_center) - $signed(X_Center_Value); +assign Y_distance = $signed(Y_edge_center) - $signed(Y_Center_Value); +assign X_up_down = X_distance[16]; +assign Y_up_down = Y_distance[16]; + +endmodule diff --git a/lib/common/Apply/Image/Basic_Apply/Dat/RAW8_RGB888.v b/lib/common/Apply/Image/Basic_Apply/Dat/RAW8_RGB888.v new file mode 100644 index 0000000..f4c6f1b --- /dev/null +++ b/lib/common/Apply/Image/Basic_Apply/Dat/RAW8_RGB888.v @@ -0,0 +1,162 @@ +`timescale 1ns/1ns +module RAW8_RGB888 #( + parameter [10:0] IMG_HDISP = 11'd640, //640*480 + parameter [10:0] IMG_VDISP = 11'd480 +) ( + //global clock + input clk, //cmos video pixel clock + input rst_n, //global reset + + //CMOS YCbCr444 data output + input per_frame_vsync, //Prepared Image data vsync valid signal + input per_frame_href, //Prepared Image data href vaild signal + + input [7:0] per_img_RAW, //Prepared Image data 8 Bit RAW Data + + + //CMOS RGB888 data output + output post_frame_vsync, //Processed Image data vsync valid signal + output post_frame_href, //Processed Image data href vaild signal + output [7:0] post_img_red, //Prepared Image green data to be processed + output [7:0] post_img_green, //Prepared Image green data to be processed + output [7:0] post_img_blue //Prepared Image blue data to be processed +); + +//---------------------------------------------------- +//Generate 8Bit 3X3 Matrix for Video Image Processor. + //Image data has been processd +wire matrix_frame_vsync; //Prepared Image data vsync valid signal +wire matrix_frame_href; //Prepared Image data href vaild signal +wire [7:0] matrix_p11, matrix_p12, matrix_p13; //3X3 Matrix output +wire [7:0] matrix_p21, matrix_p22, matrix_p23; +wire [7:0] matrix_p31, matrix_p32, matrix_p33; +Matrix_Generate_3X3_Buf # ( + .DATA_WIDTH ( 8 ), + .IMG_HDISP (IMG_HDISP), //640*480 + .IMG_VDISP (IMG_VDISP) +) Matrix_Generate_3X3_Buf_u ( + //global clock + .clk (clk), //cmos video pixel clock + .rst_n (rst_n), //global reset + + //Image data prepred to be processd + .per_frame_vsync (per_frame_vsync), //Prepared Image data vsync valid signal + .per_frame_href (per_frame_href), //Prepared Image data href vaild signal + .per_img_Data (per_img_RAW), //Prepared Image brightness input + + //Image data has been processd + .matrix_frame_vsync (matrix_frame_vsync), //Processed Image data vsync valid signal + .matrix_frame_href (matrix_frame_href), //Processed Image data href vaild signal + .matrix_p11(matrix_p11), .matrix_p12(matrix_p12), .matrix_p13(matrix_p13), //3X3 Matrix output + .matrix_p21(matrix_p21), .matrix_p22(matrix_p22), .matrix_p23(matrix_p23), + .matrix_p31(matrix_p31), .matrix_p32(matrix_p32), .matrix_p33(matrix_p33) +); + +//------------------------------------------------------------- +//sync the frame vsync and href signal and generate frame begin & end signal +reg matrix_frame_href_r; +always@(posedge clk or negedge rst_n) begin + if(!rst_n) + matrix_frame_href_r <= 0; + else + matrix_frame_href_r <= matrix_frame_href; +end +wire matrix_frame_href_end = (matrix_frame_href_r & ~matrix_frame_href) ? 1'b1 : 1'b0; //Line over signal + +//---------------------------------------- +//Count the frame lines +reg [10:0] line_cnt; +always@(posedge clk or negedge rst_n) begin + if(!rst_n) + line_cnt <= 0; + else if(matrix_frame_vsync == 1'b1) begin + if(matrix_frame_href_end) + line_cnt <= (line_cnt < IMG_VDISP - 1'b1) ? line_cnt + 1'b1 : 10'd0; + else + line_cnt <= line_cnt; + end + else + line_cnt <= 0; +end + +//---------------------------------------- +//Count the pixels +reg [10:0] point_cnt; +always@(posedge clk or negedge rst_n) begin + if(!rst_n) + point_cnt <= 0; + else if(matrix_frame_href == 1'b1) //Line valid + point_cnt <= (line_cnt < IMG_HDISP - 1'b1) ? point_cnt + 1'b1 : 10'd0; + else + point_cnt <= 0; +end + +//-------------------------------------- +//Convet RAW 2 RGB888 Format +// +localparam OddLINE_OddPOINT = 2'b10; //odd lines + odd point +localparam OddLINE_Even_POINT = 2'b11; //odd lines + even point +localparam EvenLINE_OddPOINT = 2'b00; //even lines + odd point +localparam EvenLINE_EvenPOINT = 2'b01; //even lines + even point +reg [9:0] post_img_red_r; +reg [9:0] post_img_green_r; +reg [9:0] post_img_blue_r; +always@(posedge clk or negedge rst_n) begin + if(!rst_n) begin + post_img_red_r <= 0; + post_img_green_r<= 0; + post_img_blue_r <= 0; + end + else begin + case({line_cnt[0], point_cnt[0]}) + //-------------------------BGBG...BGBG--------------------// + OddLINE_OddPOINT:begin //odd lines + odd point + //Center Blue + post_img_red_r <= (matrix_p11 + matrix_p13 + matrix_p31 + matrix_p33)>>2; + post_img_green_r<= (matrix_p12 + matrix_p21 + matrix_p23 + matrix_p32)>>2; + post_img_blue_r <= matrix_p22; + end + OddLINE_Even_POINT:begin //odd lines + even point + //Center Green + post_img_red_r <= (matrix_p12 + matrix_p32)>>1; + post_img_green_r<= matrix_p22; + post_img_blue_r <= (matrix_p21 + matrix_p23)>>1; + end + //-------------------------GRGR...GRGR--------------------// + EvenLINE_OddPOINT:begin //even lines + odd point + //Center Green + post_img_red_r <= (matrix_p21 + matrix_p23)>>1; + post_img_green_r<= matrix_p22; + post_img_blue_r <= (matrix_p12 + matrix_p32)>>1; + end + EvenLINE_EvenPOINT:begin //even lines + even point + //Center Red + post_img_red_r <= matrix_p22; + post_img_green_r<= (matrix_p12 + matrix_p21 + matrix_p23 + matrix_p32)>>2; + post_img_blue_r <= (matrix_p11 + matrix_p13 + matrix_p31 + matrix_p33)>>2; + end + endcase + end +end +assign post_img_red = post_img_red_r[7:0]; +assign post_img_green = post_img_green_r[7:0]; +assign post_img_blue = post_img_blue_r[7:0]; + +//------------------------------------------ +//lag n clocks signal sync +reg [1:0] post_frame_vsync_r; +reg [1:0] post_frame_href_r; +always@(posedge clk or negedge rst_n) begin + if(!rst_n) begin + post_frame_vsync_r <= 0; + post_frame_href_r <= 0; + end + else begin + post_frame_vsync_r <= {post_frame_vsync_r[0], matrix_frame_vsync}; + post_frame_href_r <= {post_frame_href_r[0], matrix_frame_href}; + end +end +assign post_frame_vsync = post_frame_vsync_r[0]; +assign post_frame_href = post_frame_href_r[0]; + +endmodule diff --git a/lib/common/Apply/Image/Basic_Apply/Dat/RGB888_YCbCr444.v b/lib/common/Apply/Image/Basic_Apply/Dat/RGB888_YCbCr444.v new file mode 100644 index 0000000..2718aef --- /dev/null +++ b/lib/common/Apply/Image/Basic_Apply/Dat/RGB888_YCbCr444.v @@ -0,0 +1,118 @@ +`timescale 1ns/1ns +module RGB888_YCbCr444 ( + //global clock + input clk, //cmos video pixel clock + input rst_n, //global reset + + //Image data prepred to be processd + input per_frame_vsync, //Prepared Image data vsync valid signal + input per_frame_href, //Prepared Image data href vaild signal + input [7:0] per_img_red, //Prepared Image red data to be processed + input [7:0] per_img_green, //Prepared Image green data to be processed + input [7:0] per_img_blue, //Prepared Image blue data to be processed + + //Image data has been processd + output post_frame_vsync, //Processed Image data vsync valid signal + output post_frame_href, //Processed Image data href vaild signal + output [7:0] post_img_Y, //Processed Image brightness output + output [7:0] post_img_Cb, //Processed Image blue shading output + output [7:0] post_img_Cr //Processed Image red shading output +); + +//-------------------------------------------- +/********************************************* +//Refer to page 5 + Y = (77 *R + 150*G + 29 *B)>>8 + Cb = (-43*R - 85 *G + 128*B)>>8 + 128 + Cr = (128*R - 107*G - 21 *B)>>8 + 128 +---> + Y = (77 *R + 150*G + 29 *B)>>8 + Cb = (-43*R - 85 *G + 128*B + 32768)>>8 + Cr = (128*R - 107*G - 21 *B + 32768)>>8 +**********************************************/ +//Step 1 +reg [15:0] img_red_r0, img_red_r1, img_red_r2; +reg [15:0] img_green_r0, img_green_r1, img_green_r2; +reg [15:0] img_blue_r0, img_blue_r1, img_blue_r2; +always@(posedge clk or negedge rst_n) begin + if(!rst_n) begin + img_red_r0 <= 0; + img_red_r1 <= 0; + img_red_r2 <= 0; + img_green_r0 <= 0; + img_green_r1 <= 0; + img_green_r2 <= 0; + img_blue_r0 <= 0; + img_blue_r1 <= 0; + img_blue_r2 <= 0; + end + else begin + img_red_r0 <= per_img_red * 8'd77; + img_red_r1 <= per_img_red * 8'd43; + img_red_r2 <= per_img_red * 8'd128; + img_green_r0 <= per_img_green * 8'd150; + img_green_r1 <= per_img_green * 8'd85; + img_green_r2 <= per_img_green * 8'd107; + img_blue_r0 <= per_img_blue * 8'd29; + img_blue_r1 <= per_img_blue * 8'd128; + img_blue_r2 <= per_img_blue * 8'd21; + end +end + +//-------------------------------------------------- +//Step 2 +reg [15:0] img_Y_r0; +reg [15:0] img_Cb_r0; +reg [15:0] img_Cr_r0; +always@(posedge clk or negedge rst_n) begin + if(!rst_n) begin + img_Y_r0 <= 0; + img_Cb_r0 <= 0; + img_Cr_r0 <= 0; + end + else begin + img_Y_r0 <= img_red_r0 + img_green_r0 + img_blue_r0; + img_Cb_r0 <= img_blue_r1 - img_red_r1 - img_green_r1 + 16'd32768; + img_Cr_r0 <= img_red_r2 + img_green_r2 + img_blue_r2 + 16'd32768; + end +end + +//-------------------------------------------------- +//Step 3 +reg [7:0] img_Y_r1; +reg [7:0] img_Cb_r1; +reg [7:0] img_Cr_r1; +always@(posedge clk or negedge rst_n) begin + if(!rst_n) begin + img_Y_r1 <= 0; + img_Cb_r1 <= 0; + img_Cr_r1 <= 0; + end + else begin + img_Y_r1 <= img_Y_r0[15:8]; + img_Cb_r1 <= img_Cb_r0[15:8]; + img_Cr_r1 <= img_Cr_r0[15:8]; + end +end + +//------------------------------------------ +//lag 3 clocks signal sync +reg [2:0] per_frame_vsync_r; +reg [2:0] per_frame_href_r; +always@(posedge clk or negedge rst_n) begin + if(!rst_n) begin + per_frame_vsync_r <= 0; + per_frame_href_r <= 0; + end + else begin + per_frame_vsync_r <= {per_frame_vsync_r[1:0], per_frame_vsync}; + per_frame_href_r <= {per_frame_href_r[1:0], per_frame_href}; + end +end +assign post_frame_vsync = per_frame_vsync_r[2]; +assign post_frame_href = per_frame_href_r[2]; +assign post_img_Y = post_frame_href ? img_Y_r1 : 8'd0; +assign post_img_Cb = post_frame_href ? img_Cb_r1: 8'd0; +assign post_img_Cr = post_frame_href ? img_Cr_r1: 8'd0; + +endmodule diff --git a/lib/common/Apply/Image/Basic_Apply/Detector/Dilation_Detector.v b/lib/common/Apply/Image/Basic_Apply/Detector/Dilation_Detector.v new file mode 100644 index 0000000..0790e68 --- /dev/null +++ b/lib/common/Apply/Image/Basic_Apply/Detector/Dilation_Detector.v @@ -0,0 +1,103 @@ +`timescale 1ns/1ns +module Bit_Dilation_Detector #( + parameter [10:0] IMG_HDISP = 11'd640, //640*480 + parameter [10:0] IMG_VDISP = 11'd480 +) ( + //global clock + input clk, //cmos video pixel clock + input rst_n, //global reset + //Image data prepred to be processd + input per_frame_vsync, //Prepared Image data vsync valid signal + input per_frame_href, //Prepared Image data href vaild signal + input per_img_Bit, //Prepared Image Bit flag outout(1: Value, 0:inValid) + //Image data has been processd + output post_frame_vsync, //Processed Image data vsync valid signal + output post_frame_href, //Processed Image data href vaild signal + output post_img_Bit //Processed Image Bit flag outout(1: Value, 0:inValid) +); + +//---------------------------------------------------- +//Generate 1Bit 3X3 Matrix for Video Image Processor. +//Image data has been processd +wire matrix_frame_vsync; //Prepared Image data vsync valid signal +wire matrix_frame_href; //Prepared Image data href vaild signal +wire matrix_p11, matrix_p12, matrix_p13; //3X3 Matrix output +wire matrix_p21, matrix_p22, matrix_p23; +wire matrix_p31, matrix_p32, matrix_p33; +Matrix_Generate_3X3 #( + .DATA_WIDTH ( 1 ), + .IMG_HDISP (IMG_HDISP), //640*480 + .IMG_VDISP (IMG_VDISP) +) Matrix_Generate_3X3_u ( + //global clock + .clk (clk), //cmos video pixel clock + .rst_n (rst_n), //global reset + //Image data prepred to be processd + .per_frame_vsync (per_frame_vsync), //Prepared Image data vsync valid signal + .per_frame_href (per_frame_href), //Prepared Image data href vaild signal + .per_img_Data (per_img_Bit), //Prepared Image brightness input + //Image data has been processd + .matrix_frame_vsync (matrix_frame_vsync), //Processed Image data vsync valid signal + .matrix_frame_href (matrix_frame_href), //Processed Image data href vaild signal + .matrix_p11(matrix_p11), .matrix_p12(matrix_p12), .matrix_p13(matrix_p13), //3X3 Matrix output + .matrix_p21(matrix_p21), .matrix_p22(matrix_p22), .matrix_p23(matrix_p23), + .matrix_p31(matrix_p31), .matrix_p32(matrix_p32), .matrix_p33(matrix_p33) +); + +//Add you arithmetic here +//---------------------------------------------------------------------------- +//---------------------------------------------------------------------------- +//---------------------------------------------------------------------------- +//------------------------------------------- +//------------------------------------------- +//Dilation Parameter +// Original Dilation Pixel +// [ 0 0 0 ] [ 1 1 1 ] [ P1 P2 P3 ] +// [ 0 1 0 ] [ 1 1 1 ] [ P4 P5 P6 ] +// [ 0 0 0 ] [ 1 1 1 ] [ P7 P8 P9 ] +//P = P1 | P2 | P3 | P4 | P5 | P6 | P7 | 8 | 9; +//--------------------------------------- +//Dilation with or operation,1 : White, 0 : Black +//Step1 +reg post_img_Bit1, post_img_Bit2, post_img_Bit3; +always@(posedge clk or negedge rst_n) begin + if(!rst_n) begin + post_img_Bit1 <= 1'b0; + post_img_Bit2 <= 1'b0; + post_img_Bit3 <= 1'b0; + end + else begin + post_img_Bit1 <= matrix_p11 | matrix_p12 | matrix_p13; + post_img_Bit2 <= matrix_p21 | matrix_p22 | matrix_p23; + post_img_Bit3 <= matrix_p21 | matrix_p32 | matrix_p33; + end +end + +//Step 2 +reg post_img_Bit4; +always@(posedge clk or negedge rst_n) begin + if(!rst_n) + post_img_Bit4 <= 1'b0; + else + post_img_Bit4 <= post_img_Bit1 | post_img_Bit2 | post_img_Bit3; +end + +//------------------------------------------ +//lag 2 clocks signal sync +reg [1:0] per_frame_vsync_r; +reg [1:0] per_frame_href_r; +always@(posedge clk or negedge rst_n) begin + if(!rst_n) begin + per_frame_vsync_r <= 0; + per_frame_href_r <= 0; + end + else begin + per_frame_vsync_r <= {per_frame_vsync_r[0], matrix_frame_vsync}; + per_frame_href_r <= {per_frame_href_r[0], matrix_frame_href}; + end +end +assign post_frame_vsync = per_frame_vsync_r[1]; +assign post_frame_href = per_frame_href_r[1]; +assign post_img_Bit = post_frame_href ? post_img_Bit4 : 1'b0; + +endmodule diff --git a/lib/common/Apply/Image/Basic_Apply/Detector/Erosion_Detector.v b/lib/common/Apply/Image/Basic_Apply/Detector/Erosion_Detector.v new file mode 100644 index 0000000..d19240a --- /dev/null +++ b/lib/common/Apply/Image/Basic_Apply/Detector/Erosion_Detector.v @@ -0,0 +1,105 @@ +`timescale 1ns/1ns +module Bit_Erosion_Detector #( + parameter [10:0] IMG_HDISP = 11'd640, //640*480 + parameter [10:0] IMG_VDISP = 11'd480 +) ( + //global clock + input clk, //cmos video pixel clock + input rst_n, //global reset + + //Image data prepred to be processd + input per_frame_vsync, //Prepared Image data vsync valid signal + input per_frame_href, //Prepared Image data href vaild signal + input per_img_Bit, //Prepared Image Bit flag outout(1: Value, 0:inValid) + + //Image data has been processd + output post_frame_vsync, //Processed Image data vsync valid signal + output post_frame_href, //Processed Image data href vaild signal + output post_img_Bit //Processed Image Bit flag outout(1: Value, 0:inValid) +); + +//---------------------------------------------------- +//Generate 1Bit 3X3 Matrix for Video Image Processor. +//Image data has been processd +wire matrix_frame_vsync; //Prepared Image data vsync valid signal +wire matrix_frame_href; //Prepared Image data href vaild signal +wire matrix_p11, matrix_p12, matrix_p13; //3X3 Matrix output +wire matrix_p21, matrix_p22, matrix_p23; +wire matrix_p31, matrix_p32, matrix_p33; +Matrix_Generate_3X3 #( + .DATA_WIDTH ( 1 ), + .IMG_HDISP (IMG_HDISP), //640*480 + .IMG_VDISP (IMG_VDISP) +) Matrix_Generate_3X3_u ( + //global clock + .clk (clk), //cmos video pixel clock + .rst_n (rst_n), //global reset + //Image data prepred to be processd + .per_frame_vsync (per_frame_vsync), //Prepared Image data vsync valid signal + .per_frame_href (per_frame_href), //Prepared Image data href vaild signal + .per_img_Data (per_img_Bit), //Prepared Image brightness input + //Image data has been processd + .matrix_frame_vsync (matrix_frame_vsync), //Processed Image data vsync valid signal + .matrix_frame_href (matrix_frame_href), //Processed Image data href vaild signal + .matrix_p11(matrix_p11), .matrix_p12(matrix_p12), .matrix_p13(matrix_p13), //3X3 Matrix output + .matrix_p21(matrix_p21), .matrix_p22(matrix_p22), .matrix_p23(matrix_p23), + .matrix_p31(matrix_p31), .matrix_p32(matrix_p32), .matrix_p33(matrix_p33) +); + +//Add you arithmetic here +//---------------------------------------------------------------------------- +//---------------------------------------------------------------------------- +//---------------------------------------------------------------------------- +//------------------------------------------- +//------------------------------------------- +//Eronsion Parameter +// Original Dilation Pixel +// [ 0 0 0 ] [ 1 1 1 ] [ P1 P2 P3 ] +// [ 0 1 0 ] [ 1 1 1 ] [ P4 P5 P6 ] +// [ 0 0 0 ] [ 1 1 1 ] [ P7 P8 P9 ] +//P = P1 & P2 & P3 & P4 & P5 & P6 & P7 & 8 & 9; +//--------------------------------------- +//Eonsion with or operation +//Step1 +reg post_img_Bit1, post_img_Bit2, post_img_Bit3; +always@(posedge clk or negedge rst_n) begin + if(!rst_n) begin + post_img_Bit1 <= 1'b0; + post_img_Bit2 <= 1'b0; + post_img_Bit3 <= 1'b0; + end + else begin + post_img_Bit1 <= matrix_p11 & matrix_p12 & matrix_p13; + post_img_Bit2 <= matrix_p21 & matrix_p22 & matrix_p23; + post_img_Bit3 <= matrix_p21 & matrix_p32 & matrix_p33; + end +end + +//Step 2 +reg post_img_Bit4; +always@(posedge clk or negedge rst_n) begin + if(!rst_n) + post_img_Bit4 <= 1'b0; + else + post_img_Bit4 <= post_img_Bit1 & post_img_Bit2 & post_img_Bit3; +end + +//------------------------------------------ +//lag 2 clocks signal sync +reg [1:0] per_frame_vsync_r; +reg [1:0] per_frame_href_r; +always@(posedge clk or negedge rst_n) begin + if(!rst_n) begin + per_frame_vsync_r <= 0; + per_frame_href_r <= 0; + end + else begin + per_frame_vsync_r <= {per_frame_vsync_r[0], matrix_frame_vsync}; + per_frame_href_r <= {per_frame_href_r[0], matrix_frame_href}; + end +end +assign post_frame_vsync = per_frame_vsync_r[1]; +assign post_frame_href = per_frame_href_r[1]; +assign post_img_Bit = post_frame_href ? post_img_Bit4 : 1'b0; + +endmodule diff --git a/lib/common/Apply/Image/Basic_Apply/Detector/Sobel_Edge_Detector.v b/lib/common/Apply/Image/Basic_Apply/Detector/Sobel_Edge_Detector.v new file mode 100644 index 0000000..cac56d5 --- /dev/null +++ b/lib/common/Apply/Image/Basic_Apply/Detector/Sobel_Edge_Detector.v @@ -0,0 +1,155 @@ +`timescale 1ns/1ns +module Sobel_Edge_Detector #( + parameter [10:0] IMG_HDISP = 11'd640, //640*480 + parameter [10:0] IMG_VDISP = 11'd480 +) ( + //global clock + input clk, //cmos video pixel clock + input rst_n, //global reset + //Image data prepred to be processd + input per_frame_vsync, //Prepared Image data vsync valid signal + input per_frame_href, //Prepared Image data href vaild signal + input [7:0] per_img_Gray, //Prepared Image brightness input + //Image data has been processd + output post_frame_vsync, //Processed Image data vsync valid signal + output post_frame_href, //Processed Image data href vaild signal + output post_img_Bit, //Processed Image Bit flag outout(1: Value, 0:inValid) + //user interface + input [7:0] Sobel_Threshold //Sobel Threshold for image edge detect +); + +//---------------------------------------------------- +//Generate 8Bit 3X3 Matrix for Video Image Processor. +//Image data has been processd +wire matrix_frame_vsync; //Prepared Image data vsync valid signal +wire matrix_frame_href; //Prepared Image data href vaild signal +wire [7:0] matrix_p11, matrix_p12, matrix_p13; //3X3 Matrix output +wire [7:0] matrix_p21, matrix_p22, matrix_p23; +wire [7:0] matrix_p31, matrix_p32, matrix_p33; +Matrix_Generate_3X3_Buf # ( + .DATA_WIDTH ( 8 ), + .IMG_HDISP (IMG_HDISP), //640*480 + .IMG_VDISP (IMG_VDISP) +) Matrix_Generate_3X3_Buf_u ( + //global clock + .clk (clk), //cmos video pixel clock + .rst_n (rst_n), //global reset + //Image data prepred to be processd + .per_frame_vsync (per_frame_vsync), //Prepared Image data vsync valid signal + .per_frame_href (per_frame_href), //Prepared Image data href vaild signal + .per_img_Data (per_img_Gray), //Prepared Image brightness input + //Image data has been processd + .matrix_frame_vsync (matrix_frame_vsync), //Processed Image data vsync valid signal + .matrix_frame_href (matrix_frame_href), //Processed Image data href vaild signal + .matrix_p11(matrix_p11), .matrix_p12(matrix_p12), .matrix_p13(matrix_p13), //3X3 Matrix output + .matrix_p21(matrix_p21), .matrix_p22(matrix_p22), .matrix_p23(matrix_p23), + .matrix_p31(matrix_p31), .matrix_p32(matrix_p32), .matrix_p33(matrix_p33) +); + +//Add you arithmetic here +//---------------------------------------------------------------------------- +//---------------------------------------------------------------------------- +//---------------------------------------------------------------------------- +//------------------------------------------- +//Sobel Parameter +// Gx Gy Pixel +// [ -1 0 +1 ] [ +1 +2 +1 ] [ P11 P12 P13 ] +// [ -2 0 +2 ] [ 0 0 0 ] [ P21 P22 P23 ] +// [ -1 0 +1 ] [ -1 -2 -1 ] [ P31 P32 P33 ] + +// localparam P11 = 8'd15, P12 = 8'd94, P13 = 8'd136; +// localparam P21 = 8'd31, P22 = 8'd127, P23 = 8'd231; +// localparam P31 = 8'd44, P32 = 8'd181, P33 = 8'd249; +//Caculate horizontal Grade with |abs| +//Step 1-2 +reg [9:0] Gx_temp1; //postive result +reg [9:0] Gx_temp2; //negetive result +reg [9:0] Gx_data; //Horizontal grade data +always@(posedge clk or negedge rst_n) begin + if(!rst_n) begin + Gx_temp1 <= 0; + Gx_temp2 <= 0; + Gx_data <= 0; + end + else begin + Gx_temp1 <= matrix_p13 + (matrix_p23 << 1) + matrix_p33; //postive result + Gx_temp2 <= matrix_p11 + (matrix_p21 << 1) + matrix_p31; //negetive result + Gx_data <= (Gx_temp1 >= Gx_temp2) ? Gx_temp1 - Gx_temp2 : Gx_temp2 - Gx_temp1; + end +end + +//--------------------------------------- +//Caculate vertical Grade with |abs| +//Step 1-2 +reg [9:0] Gy_temp1; //postive result +reg [9:0] Gy_temp2; //negetive result +reg [9:0] Gy_data; //Vertical grade data +always@(posedge clk or negedge rst_n) begin + if(!rst_n) begin + Gy_temp1 <= 0; + Gy_temp2 <= 0; + Gy_data <= 0; + end + else begin + Gy_temp1 <= matrix_p11 + (matrix_p12 << 1) + matrix_p13; //postive result + Gy_temp2 <= matrix_p31 + (matrix_p32 << 1) + matrix_p33; //negetive result + Gy_data <= (Gy_temp1 >= Gy_temp2) ? Gy_temp1 - Gy_temp2 : Gy_temp2 - Gy_temp1; + end +end + +//--------------------------------------- +//Caculate the square of distance = (Gx^2 + Gy^2) +//Step 3 +reg [20:0] Gxy_square; +always@(posedge clk or negedge rst_n) begin + if(!rst_n) + Gxy_square <= 0; + else + Gxy_square <= Gx_data * Gx_data + Gy_data * Gy_data; +end + +//--------------------------------------- +//Caculate the distance of P5 = (Gx^2 + Gy^2)^0.5 +//Step 4 +Sqrt #( + .q_port_width (11), + .r_port_width (12), + .width (21) +) SQRT_u ( + .radical (Gxy_square), + .q (Dim), + .remainder () +); + +//--------------------------------------- +//Compare and get the Sobel_data +//Step 5 +reg post_img_Bit_r; +always@(posedge clk or negedge rst_n) begin + if(!rst_n) + post_img_Bit_r <= 1'b0; //Default None + else if(Dim >= Sobel_Threshold) + post_img_Bit_r <= 1'b1; //Edge Flag + else + post_img_Bit_r <= 1'b0; //Not Edge +end + +//------------------------------------------ +//lag 5 clocks signal sync +reg [4:0] per_frame_vsync_r; +reg [4:0] per_frame_href_r; +always@(posedge clk or negedge rst_n) begin + if(!rst_n) begin + per_frame_vsync_r <= 0; + per_frame_href_r <= 0; + end + else begin + per_frame_vsync_r <= {per_frame_vsync_r[3:0], matrix_frame_vsync}; + per_frame_href_r <= {per_frame_href_r[3:0], matrix_frame_href}; + end +end +assign post_frame_vsync = per_frame_vsync_r[4]; +assign post_frame_href = per_frame_href_r[4]; +assign post_img_Bit = post_frame_href ? post_img_Bit_r : 1'b0; + +endmodule diff --git a/lib/common/Apply/Image/Basic_Apply/Filter/Gray_Median_Filter.v b/lib/common/Apply/Image/Basic_Apply/Filter/Gray_Median_Filter.v new file mode 100644 index 0000000..516d5a1 --- /dev/null +++ b/lib/common/Apply/Image/Basic_Apply/Filter/Gray_Median_Filter.v @@ -0,0 +1,92 @@ +`timescale 1ns/1ns +module Gray_Median_Filter #( + parameter [10:0] IMG_HDISP = 11'd640, //640*480 + parameter [10:0] IMG_VDISP = 11'd480 +) ( + //global clock + input clk, //100MHz + input rst_n, //global reset + //Image data prepred to be processd + input per_frame_vsync, //Prepared Image data vsync valid signal + input per_frame_href, //Prepared Image data href vaild signal + input [7:0] per_img_Gray, //Prepared Image brightness input + //Image data has been processd + output post_frame_vsync, //Processed Image data vsync valid signal + output post_frame_href, //Processed Image data href vaild signal + output [7:0] post_img_Gray //Processed Image brightness input +); + +//---------------------------------------------------- +//Generate 8Bit 3X3 Matrix for Video Image Processor. + //Image data has been processd +wire matrix_frame_vsync; //Prepared Image data vsync valid signal +wire matrix_frame_href; //Prepared Image data href vaild signal +wire matrix_frame_clken; //Prepared Image data output/capture enable clock +wire [7:0] matrix_p11, matrix_p12, matrix_p13; //3X3 Matrix output +wire [7:0] matrix_p21, matrix_p22, matrix_p23; +wire [7:0] matrix_p31, matrix_p32, matrix_p33; +Matrix_Generate_3X3_Buf # ( + .DATA_WIDTH ( 8 ), + .IMG_HDISP (IMG_HDISP), //640*480 + .IMG_VDISP (IMG_VDISP) +) Matrix_Generate_3X3_Buf_u ( + //global clock + .clk (clk), //cmos video pixel clock + .rst_n (rst_n), //global reset + //Image data prepred to be processd + .per_frame_vsync (per_frame_vsync), //Prepared Image data vsync valid signal + .per_frame_href (per_frame_href), //Prepared Image data href vaild signal + .per_img_Data (per_img_Gray), //Prepared Image brightness input + //Image data has been processd + .matrix_frame_vsync (matrix_frame_vsync), //Processed Image data vsync valid signal + .matrix_frame_href (matrix_frame_href), //Processed Image data href vaild signal + .matrix_p11(matrix_p11), .matrix_p12(matrix_p12), .matrix_p13(matrix_p13), //3X3 Matrix output + .matrix_p21(matrix_p21), .matrix_p22(matrix_p22), .matrix_p23(matrix_p23), + .matrix_p31(matrix_p31), .matrix_p32(matrix_p32), .matrix_p33(matrix_p33) +); + + +//Add you arithmetic here +//---------------------------------------------------------------------------- +//---------------------------------------------------------------------------- +//---------------------------------------------------------------------------- +//Median Filter of 3X3 datas, need 3 clock +wire [7:0] mid_value; +Median_Filter_3X3 u_Median_Filter_3X3( + .clk (clk), + .rst_n (rst_n), + //ROW1 + .data11 (matrix_p11), + .data12 (matrix_p12), + .data13 (matrix_p13), + //ROW2 + .data21 (matrix_p21), + .data22 (matrix_p22), + .data23 (matrix_p23), + //ROW3 + .data31 (matrix_p31), + .data32 (matrix_p32), + .data33 (matrix_p33), + + .target_data (mid_value) +); + +//------------------------------------------ +//lag 3 clocks signal sync +reg [2:0] per_frame_vsync_r; +reg [2:0] per_frame_href_r; +always@(posedge clk or negedge rst_n) begin + if(!rst_n) begin + per_frame_vsync_r <= 0; + per_frame_href_r <= 0; + end + else begin + per_frame_vsync_r <= {per_frame_vsync_r[1:0], matrix_frame_vsync}; + per_frame_href_r <= {per_frame_href_r[1:0], matrix_frame_href}; + end +end +assign post_frame_vsync = per_frame_vsync_r[2]; +assign post_frame_href = per_frame_href_r[2]; +assign post_img_Gray = post_frame_href ? mid_value : 8'd0; + +endmodule diff --git a/lib/common/Apply/Image/Basic_Apply/Filter/Median_Filter_3X3.v b/lib/common/Apply/Image/Basic_Apply/Filter/Median_Filter_3X3.v new file mode 100644 index 0000000..f0f27be --- /dev/null +++ b/lib/common/Apply/Image/Basic_Apply/Filter/Median_Filter_3X3.v @@ -0,0 +1,118 @@ +`timescale 1ns/1ns +module Median_Filter_3X3 ( + input clk, + input rst_n, + + input [7:0] data11, data12, data13, + input [7:0] data21, data22, data23, + input [7:0] data31, data32, data33, + + output [7:0] target_data +); + +//-------------------------------------------------------------------------------------- +//FPGA Median Filter Sort order +// Pixel Sort1 Sort2 Sort3 +// [ P1 P2 P3 ] [ Max1 Mid1 Min1 ] +// [ P4 P5 P6 ] [ Max2 Mid2 Min2 ] [Max_min, Mid_mid, Min_max] mid_valid +// [ P7 P8 P9 ] [ Max3 Mid3 Min3 ] + +//Step1 +wire [7:0] max_data1, mid_data1, min_data1; +Sort3 u_Sort3_1 ( + .clk (clk), + .rst_n (rst_n), + + .data1 (data11), + .data2 (data12), + .data3 (data13), + + .max_data (max_data1), + .mid_data (mid_data1), + .min_data (min_data1) +); + +wire [7:0] max_data2, mid_data2, min_data2; +Sort3 u_Sort3_2 ( + .clk (clk), + .rst_n (rst_n), + + .data1 (data21), + .data2 (data22), + .data3 (data23), + + .max_data (max_data2), + .mid_data (mid_data2), + .min_data (min_data2) +); + +wire [7:0] max_data3, mid_data3, min_data3; +Sort3 u_Sort3_3 ( + .clk (clk), + .rst_n (rst_n), + + .data1 (data31), + .data2 (data32), + .data3 (data33), + + .max_data (max_data3), + .mid_data (mid_data3), + .min_data (min_data3) +); + +//Step2 +wire [7:0] max_min_data, mid_mid_data, min_max_data; +Sort3 u_Sort3_4 ( + .clk (clk), + .rst_n (rst_n), + + .data1 (max_data1), + .data2 (max_data2), + .data3 (max_data3), + + .max_data (), + .mid_data (), + .min_data (max_min_data) +); + +Sort3 u_Sort3_5 ( + .clk (clk), + .rst_n (rst_n), + + .data1 (mid_data1), + .data2 (mid_data2), + .data3 (mid_data3), + + .max_data (), + .mid_data (mid_mid_data), + .min_data () +); + +Sort3 u_Sort3_6 ( + .clk (clk), + .rst_n (rst_n), + + .data1 (min_data1), + .data2 (min_data2), + .data3 (min_data3), + + .max_data (min_max_data), + .mid_data (), + .min_data () +); + +//step3 +Sort3 u_Sort3_7 ( + .clk (clk), + .rst_n (rst_n), + + .data1 (max_min_data), + .data2 (mid_mid_data), + .data3 (min_max_data), + + .max_data (), + .mid_data (target_data), + .min_data () +); + +endmodule diff --git a/lib/common/Apply/Image/Basic_Apply/Matrix/Matrix_Generate_3X3.v b/lib/common/Apply/Image/Basic_Apply/Matrix/Matrix_Generate_3X3.v new file mode 100644 index 0000000..d074f8c --- /dev/null +++ b/lib/common/Apply/Image/Basic_Apply/Matrix/Matrix_Generate_3X3.v @@ -0,0 +1,115 @@ +`timescale 1ns/1ns +module Matrix_Generate_3X3 #( + parameter DATA_WIDTH = 8, + parameter IMG_HDISP = 640, //640*480 + parameter IMG_VDISP = 480 +) ( + //global clock + input clk, //cmos video pixel clock + input rst_n, //global reset + + //Image data prepred to be processd + input per_frame_vsync, //Prepared Image data vsync valid signal + input per_frame_href, //Prepared Image data href vaild signal + input [DATA_WIDTH-1:0] per_img_Data, //Prepared Image brightness input + + //Image data has been processd + output matrix_frame_vsync, //Prepared Image data vsync valid signal + output matrix_frame_href, //Prepared Image data href vaild signal + + output reg [DATA_WIDTH-1:0] matrix_p11, matrix_p12, matrix_p13, //3X3 Matrix output + output reg [DATA_WIDTH-1:0] matrix_p21, matrix_p22, matrix_p23, + output reg [DATA_WIDTH-1:0] matrix_p31, matrix_p32, matrix_p33 +); + + +//Generate 3*3 matrix +//-------------------------------------------------------------------------- +//-------------------------------------------------------------------------- +//-------------------------------------------------------------------------- +//sync row3_data with per_frame_clken & row1_data & raw2_data +wire [DATA_WIDTH-1:0] row1_data; //frame data of the 1th row +wire [DATA_WIDTH-1:0] row2_data; //frame data of the 2th row +reg [DATA_WIDTH-1:0] row3_data; //frame data of the 3th row +always@(posedge clk or negedge rst_n) begin + if(!rst_n) + row3_data <= 0; + else begin + if(per_frame_href) + row3_data <= per_img_Data; + else + row3_data <= row3_data; + end +end + +//--------------------------------------- +//module of shift ram for raw data +wire shift_clk_en = per_frame_href; +Line_Shift_RAM #( + .RAM_Length ( IMG_HDISP ), + .DATA_WIDTH ( DATA_WIDTH ) +) u_Line_Shift_RAM ( + .clock ( clk ), + .clken ( shift_clk_en ), + .shiftin ( row3_data ), + + .taps0x ( row2_data ), + .taps1x ( row1_data ) +); +//------------------------------------------ +//lag 2 clocks signal sync +reg [1:0] per_frame_vsync_r; +reg [1:0] per_frame_href_r; +always@(posedge clk or negedge rst_n) begin + if(!rst_n) begin + per_frame_vsync_r <= 0; + per_frame_href_r <= 0; + end + else begin + per_frame_vsync_r <= {per_frame_vsync_r[0], per_frame_vsync}; + per_frame_href_r <= {per_frame_href_r[0], per_frame_href}; + end +end +//Give up the 1th and 2th row edge data caculate for simple process +//Give up the 1th and 2th point of 1 line for simple process +wire read_frame_href = per_frame_href_r[0]; //RAM read href sync signal +assign matrix_frame_vsync = per_frame_vsync_r[1]; +assign matrix_frame_href = per_frame_href_r[1]; + +//---------------------------------------------------------------------------- +//---------------------------------------------------------------------------- +/****************************************************************************** + ---------- Convert Matrix ---------- + [ P31 -> P32 -> P33 -> ] ---> [ P11 P12 P13 ] + [ P21 -> P22 -> P23 -> ] ---> [ P21 P22 P23 ] + [ P11 -> P12 -> P11 -> ] ---> [ P31 P32 P33 ] +******************************************************************************/ +//--------------------------------------------------------------------------- +//--------------------------------------------------- +/*********************************************** + (1) Read data from Shift_RAM + (2) Caculate the Sobel + (3) Steady data after Sobel generate +************************************************/ +//wire [2:0] matrix_row1 = {matrix_p11, matrix_p12, matrix_p13}; //Just for test +//wire [2:0] matrix_row2 = {matrix_p21, matrix_p22, matrix_p23}; +//wire [2:0] matrix_row3 = {matrix_p31, matrix_p32, matrix_p33}; +always@(posedge clk or negedge rst_n) begin + if(!rst_n) begin + {matrix_p11, matrix_p12, matrix_p13} <= 0; + {matrix_p21, matrix_p22, matrix_p23} <= 0; + {matrix_p31, matrix_p32, matrix_p33} <= 0; + end + else if(read_frame_href) begin + {matrix_p11, matrix_p12, matrix_p13} <= {matrix_p12, matrix_p13, row1_data}; //1th shift input + {matrix_p21, matrix_p22, matrix_p23} <= {matrix_p22, matrix_p23, row2_data}; //2th shift input + {matrix_p31, matrix_p32, matrix_p33} <= {matrix_p32, matrix_p33, row3_data}; //3th shift input + end + else begin + {matrix_p11, matrix_p12, matrix_p13} <= 0; + {matrix_p21, matrix_p22, matrix_p23} <= 0; + {matrix_p31, matrix_p32, matrix_p33} <= 0; + end +end + +endmodule diff --git a/lib/common/Apply/Image/Basic_Apply/Matrix/Matrix_Generate_3X3_Buf.v b/lib/common/Apply/Image/Basic_Apply/Matrix/Matrix_Generate_3X3_Buf.v new file mode 100644 index 0000000..0bc74da --- /dev/null +++ b/lib/common/Apply/Image/Basic_Apply/Matrix/Matrix_Generate_3X3_Buf.v @@ -0,0 +1,148 @@ +`timescale 1ns/1ns +module Matrix_Generate_3X3_Buf #( + parameter DATA_WIDTH = 8, + parameter IMG_HDISP = 640, //640*480 + parameter IMG_VDISP = 480 +) ( + //global clock + input clk, //cmos video pixel clock + input rst_n, //global reset + + //Image data prepred to be processd + input per_frame_vsync, //Prepared Image data vsync valid signal + input per_frame_href, //Prepared Image data href vaild signal + input [DATA_WIDTH-1:0] per_img_Data, //Prepared Image brightness input + + //Image data has been processd + output matrix_frame_vsync, //Prepared Image data vsync valid signal + output matrix_frame_href, //Prepared Image data href vaild signal + + output reg [DATA_WIDTH-1:0] matrix_p11, matrix_p12, matrix_p13, //3X3 Matrix output + output reg [DATA_WIDTH-1:0] matrix_p21, matrix_p22, matrix_p23, + output reg [DATA_WIDTH-1:0] matrix_p31, matrix_p32, matrix_p33 +); + + +//Generate 3*3 matrix +//-------------------------------------------------------------------------- +//-------------------------------------------------------------------------- +//-------------------------------------------------------------------------- +//sync row3_data with per_frame_clken & row1_data & raw2_data +wire [DATA_WIDTH-1:0] row1_data; //frame data of the 1th row +wire [DATA_WIDTH-1:0] row2_data; //frame data of the 2th row +reg [DATA_WIDTH-1:0] row3_data; //frame data of the 3th row +always@(posedge clk or negedge rst_n) begin + if(!rst_n) + row3_data <= 0; + else begin + if(per_frame_href) + row3_data <= per_img_Data; + else + row3_data <= row3_data; + end +end + +//--------------------------------------- +//module of shift ram for raw data +wire shift_clk_en = per_frame_href; +Line_Shift_RAM #( + .RAM_Length ( IMG_HDISP ), + .DATA_WIDTH ( DATA_WIDTH ) +) u_Line_Shift_RAM ( + .clock ( clk ), + .clken ( shift_clk_en ), + .shiftin ( row3_data ), + + .taps0x ( row2_data ), + .taps1x ( row1_data ) +); +//------------------------------------------ +//lag 2 clocks signal sync +reg [2:0] per_frame_vsync_r; +reg [2:0] per_frame_href_r; +always@(posedge clk or negedge rst_n) begin + if(!rst_n) begin + per_frame_vsync_r <= 0; + per_frame_href_r <= 0; + end + else begin + per_frame_vsync_r <= {per_frame_vsync_r[1:0], per_frame_vsync}; + per_frame_href_r <= {per_frame_href_r[1:0], per_frame_href}; + end +end +//Give up the 1th and 2th row edge data caculate for simple process +//Give up the 1th and 2th point of 1 line for simple process +wire read_frame_href = per_frame_href_r[0]|per_frame_href_r[1]; //RAM read href sync signal +assign matrix_frame_vsync = per_frame_vsync_r[2]; +assign matrix_frame_href = per_frame_href_r[2]; + +//---------------------------------------------------------------------------- +//---------------------------------------------------------------------------- +/****************************************************************************** + ---------- Convert Matrix ---------- + [ P31 -> P32 -> P33 -> ] ---> [ P11 P12 P13 ] + [ P21 -> P22 -> P23 -> ] ---> [ P21 P22 P23 ] + [ P11 -> P12 -> P11 -> ] ---> [ P31 P32 P33 ] +******************************************************************************/ +//--------------------------------------------------------------------------- +//--------------------------------------------------- +/*********************************************** + (1) Read data from Shift_RAM + (2) Caculate the Sobel + (3) Steady data after Sobel generate +************************************************/ +//wire [23:0] matrix_row1 = {matrix_p11, matrix_p12, matrix_p13}; //Just for test +//wire [23:0] matrix_row2 = {matrix_p21, matrix_p22, matrix_p23}; +//wire [23:0] matrix_row3 = {matrix_p31, matrix_p32, matrix_p33}; +reg [31:0] pixel_cnt; +reg [DATA_WIDTH-1:0] row1_data0; +reg [DATA_WIDTH-1:0] row2_data0; +reg [DATA_WIDTH-1:0] row3_data0; +reg [DATA_WIDTH-1:0] row1_data1; +reg [DATA_WIDTH-1:0] row2_data1; +reg [DATA_WIDTH-1:0] row3_data1; +always@(posedge clk or negedge rst_n) begin + if(!rst_n) begin + pixel_cnt <= 0; + row1_data0 <= 0; row1_data1 <= 0; + row2_data0 <= 0; row2_data1 <= 0; + row3_data0 <= 0; row3_data1 <= 0; + {matrix_p11, matrix_p12, matrix_p13} <= 0; + {matrix_p21, matrix_p22, matrix_p23} <= 0; + {matrix_p31, matrix_p32, matrix_p33} <= 0; + end + else if(read_frame_href) begin + pixel_cnt <= (pixel_cnt < IMG_HDISP) ? pixel_cnt + 1'b1 : 32'd0; //Point Counter + {row1_data1, row1_data0} <= {row1_data0, row1_data}; + {row2_data1, row2_data0} <= {row2_data0, row2_data}; + {row3_data1, row3_data0} <= {row3_data0, row3_data}; + if(pixel_cnt == 0) begin + {matrix_p11, matrix_p12, matrix_p13} <= 0; + {matrix_p21, matrix_p22, matrix_p23} <= 0; + {matrix_p31, matrix_p32, matrix_p33} <= 0; + end + else if(pixel_cnt == 1) begin + {matrix_p11, matrix_p12, matrix_p13} <= {row1_data, row1_data0, row1_data}; + {matrix_p21, matrix_p22, matrix_p23} <= {row2_data, row2_data0, row2_data}; + {matrix_p31, matrix_p32, matrix_p33} <= {row3_data, row3_data0, row3_data}; + end + else if(pixel_cnt == IMG_HDISP) begin + {matrix_p11, matrix_p12, matrix_p13} <= {row1_data1, row1_data, row1_data1}; + {matrix_p21, matrix_p22, matrix_p23} <= {row2_data1, row2_data, row2_data1}; + {matrix_p31, matrix_p32, matrix_p33} <= {row3_data1, row3_data, row3_data1}; + end + else begin + {matrix_p11, matrix_p12, matrix_p13} <= {row1_data1, row1_data0, row1_data}; + {matrix_p21, matrix_p22, matrix_p23} <= {row2_data1, row2_data0, row2_data}; + {matrix_p31, matrix_p32, matrix_p33} <= {row3_data1, row3_data0, row3_data}; + end + end + else begin + pixel_cnt <= 0; + {matrix_p11, matrix_p12, matrix_p13} <= 0; + {matrix_p21, matrix_p22, matrix_p23} <= 0; + {matrix_p31, matrix_p32, matrix_p33} <= 0; + end +end + +endmodule diff --git a/lib/common/Apply/Image/Basic_Apply/Video_Image_Processor.v b/lib/common/Apply/Image/Basic_Apply/Video_Image_Processor.v new file mode 100644 index 0000000..81bf2cb --- /dev/null +++ b/lib/common/Apply/Image/Basic_Apply/Video_Image_Processor.v @@ -0,0 +1,228 @@ +`timescale 1ns/1ns +module Video_Image_Processor #( + parameter RAW2RG888_YUV444 = "ON", + parameter GRAY_MEDIUM = "ON", + parameter GRAY_SOBEL = "ON", + parameter GRAY_EROSION = "ON", + parameter GRAY_DILATION = "ON", + parameter IMG_HDISP = 11'd640, //640*480 + parameter IMG_VDISP = 11'd480 +) ( + //global clock + input clk, //cmos video pixel clock + input rst_n, //global reset + //Image data prepred to be processd + input per_frame_vsync, //Prepared Image data vsync valid signal + input per_frame_href, //Prepared Image data href vaild signal + input [7:0] per_img_RAW, //Prepared Image data of YCbCr 4:2:2 {CbY} {CrY} + //Image data has been processd + output post_frame_vsync, //Processed Image data vsync valid signal + output post_frame_href, //Processed Image data href vaild signal + output [7:0] post_img_Gray, //Processed Image Gray output + //user interface + input [7:0] Sobel_Threshold //Sobel Threshold for image edge detect +); + +//------------------------------------- +//Convert the RAW format to RGB888 format. +wire post1_frame_vsync; //Processed Image data vsync valid signal +wire post1_frame_href; //Processed Image data href vaild signal +wire [7:0] post1_img_red; //Processed Image Red output +wire [7:0] post1_img_green; //Processed Image Green output +wire [7:0] post1_img_blue; //Processed Image Blueoutput +wire post2_frame_vsync; //Processed Image data vsync valid signal +wire post2_frame_href; //Processed Image data href vaild signal +wire [7:0] post2_img_Gray; //Processed Image Gray output + +generate if(RAW2RG888_YUV444 == "ON") begin : RAW2RG888_YUV444_ON + RAW8_RGB888 # ( + .IMG_HDISP (IMG_HDISP), //640*480 + .IMG_VDISP (IMG_VDISP) + ) RAW8_RGB888_u ( + //global clock + .clk (clk), //cmos video pixel clock + .rst_n (rst_n), //system reset + + //Image data prepred to be processd + .per_frame_vsync (per_frame_vsync), //Prepared Image data vsync valid signal + .per_frame_href (per_frame_href), //Prepared Image data href vaild signal + .per_img_RAW (per_img_RAW), //Prepared Image data 8 Bit RAW Data + + //Image data has been processd + .post_frame_vsync (post1_frame_vsync), //Processed Image data vsync valid signal + .post_frame_href (post1_frame_href), //Processed Image data href vaild signal + .post_img_red (post1_img_red), //Prepared Image green data to be processed + .post_img_green (post1_img_green), //Prepared Image green data to be processed + .post_img_blue (post1_img_blue) //Prepared Image blue data to be processed + ); + //------------------------------------- + //Convert the RGB888 format to YCbCr444 format. + RGB888_YCbCr444 RGB888_YCbCr444_u( + //global clock + .clk (clk), //cmos video pixel clock + .rst_n (rst_n), //system reset + + //Image data prepred to be processd + .per_frame_vsync (post1_frame_vsync), //Prepared Image data vsync valid signal + .per_frame_href (post1_frame_href), //Prepared Image data href vaild signal + .per_img_red (post1_img_red), //Prepared Image red data input + .per_img_green (post1_img_green), //Prepared Image green data input + .per_img_blue (post1_img_blue), //Prepared Image blue data input + + //Image data has been processd + .post_frame_vsync (post2_frame_vsync), //Processed Image frame data valid signal + .post_frame_href (post2_frame_href), //Processed Image hsync data valid signal + .post_img_Y (post2_img_Gray), //Processed Image brightness output + .post_img_Cb (), //Processed Image blue shading output + .post_img_Cr () //Processed Image red shading output + ); +end +else if(RAW2RG888_YUV444 == "OFF") begin : RAW2RG888_YUV444_OFF + assign post2_frame_vsync = per_frame_vsync; + assign post2_frame_href = per_frame_href; + assign post2_img_Gray = per_img_RAW; +end +endgenerate + +//-------------------------------------- +//Gray Image median filter for better picture quality. +wire post3_frame_vsync; //Processed Image data vsync valid signal +wire post3_frame_href; //Processed Image data href vaild signal +wire [7:0] post3_img_Gray; //Processed Image Gray output +generate if(GRAY_MEDIUM == "ON") begin : GRAY_MEDIUM_ON + Gray_Median_Filter # ( + .IMG_HDISP (IMG_HDISP), //640*480 + .IMG_VDISP (IMG_VDISP) + ) Gray_Median_Filter_u ( + //global clock + .clk (clk), //cmos video pixel clock + .rst_n (rst_n), //global reset + + //Image data prepred to be processd + .per_frame_vsync (post2_frame_vsync), //Prepared Image data vsync valid signal + .per_frame_href (post2_frame_href), //Prepared Image data href vaild signal + .per_img_Gray (post2_img_Gray), //Prepared Image brightness input + + //Image data has been processd + .post_frame_vsync (post3_frame_vsync), //Processed Image data vsync valid signal + .post_frame_href (post3_frame_href), //Processed Image data href vaild signal + .post_img_Gray (post3_img_Gray) //Processed Image brightness output + ); +end +else if(GRAY_MEDIUM == "OFF") begin : GRAY_MEDIUM_OFF + assign post3_frame_vsync = post2_frame_vsync; + assign post3_frame_href = post2_frame_href; + assign post3_img_Gray = post2_img_Gray; +end +endgenerate + +//-------------------------------------- +//Image edge detector with Sobel. +wire post4_frame_vsync; //Processed Image data vsync valid signal +wire post4_frame_href; //Processed Image data href vaild signal +wire post4_img_Bit; //Processed Image Bit flag outout(1: Value, 0:inValid) +wire [7:0] post4_img_Gray; +generate if(GRAY_SOBEL == "ON") begin : GRAY_SOBEL_ON + Sobel_Edge_Detector # ( + .IMG_HDISP (IMG_HDISP), //640*480 + .IMG_VDISP (IMG_VDISP) + ) Sobel_Edge_Detector_u ( + //global clock + .clk (clk), //cmos video pixel clock + .rst_n (rst_n), //global reset + + //Image data prepred to be processd + .per_frame_vsync (post3_frame_vsync), //Prepared Image data vsync valid signal + .per_frame_href (post3_frame_href), //Prepared Image data href vaild signal + .per_img_Gray (post3_img_Gray), //Prepared Image brightness input + + //Image data has been processd + .post_frame_vsync (post4_frame_vsync), //Processed Image data vsync valid signal + .post_frame_href (post4_frame_href), //Processed Image data href vaild signal + .post_img_Bit (post4_img_Bit), //Processed Image Bit flag outout(1: Value, 0:inValid) + + //User interface + .Sobel_Threshold (Sobel_Threshold) //Sobel Threshold for image edge detect + ); + assign post4_img_Gray = {8{~post4_img_Bit}}; +end +else if(GRAY_SOBEL == "OFF") begin : GRAY_SOBEL_OFF + assign post4_frame_vsync = post3_frame_vsync; + assign post4_frame_href = post3_frame_href; + assign post4_img_Gray = post3_img_Gray; +end +endgenerate + +//-------------------------------------- +//Bit Image Process with Erosion before Dilation Detector. +wire post5_frame_vsync; //Processed Image data vsync valid signal +wire post5_frame_href; //Processed Image data href vaild signal +wire post5_img_Bit; //Processed Image Bit flag outout(1: Value, 0:inValid) +wire [7:0] post5_img_Gray; +generate if(GRAY_EROSION == "ON") begin : GRAY_EROSION_ON + Bit_Erosion_Detector # ( + .IMG_HDISP (IMG_HDISP), //640*480 + .IMG_VDISP (IMG_VDISP) + ) Bit_Erosion_Detector_u ( + //global clock + .clk (clk), //cmos video pixel clock + .rst_n (rst_n), //global reset + + //Image data prepred to be processd + .per_frame_vsync (post4_frame_vsync), //Prepared Image data vsync valid signal + .per_frame_href (post4_frame_href), //Prepared Image data href vaild signal + .per_img_Bit (post4_img_Gray[0]), //Processed Image Bit flag outout(1: Value, 0:inValid) + + //Image data has been processd + .post_frame_vsync (post5_frame_vsync), //Processed Image data vsync valid signal + .post_frame_href (post5_frame_href), //Processed Image data href vaild signal + .post_img_Bit (post5_img_Bit) //Processed Image Bit flag outout(1: Value, 0:inValid) + ); + assign post5_img_Gray = {8{post5_img_Bit}}; +end +else if(GRAY_EROSION == "OFF") begin : GRAY_EROSION_OFF + assign post5_frame_vsync = post4_frame_vsync; + assign post5_frame_href = post4_frame_href; + assign post5_img_Gray = post4_img_Gray; +end +endgenerate + +//-------------------------------------- +//Bit Image Process with Dilation after Erosion Detector. +wire post6_frame_vsync; //Processed Image data vsync valid signal +wire post6_frame_href; //Processed Image data href vaild signal +wire post6_img_Bit; //Processed Image Bit flag outout(1: Value, 0:inValid) +wire [7:0] post6_img_Gray; +generate if(GRAY_DILATION == "ON") begin : GRAY_DILATION_ON + Bit_Dilation_Detector # ( + .IMG_HDISP (IMG_HDISP), //640*480 + .IMG_VDISP (IMG_VDISP) + ) Bit_Dilation_Detector_u ( + //global clock + .clk (clk), //cmos video pixel clock + .rst_n (rst_n), //global reset + + //Image data prepred to be processd + .per_frame_vsync (post5_frame_vsync), //Prepared Image data vsync valid signal + .per_frame_href (post5_frame_href), //Prepared Image data href vaild signal + .per_img_Bit (post5_img_Gray[0]), //Processed Image Bit flag outout(1: Value, 0:inValid) + + //Image data has been processd + .post_frame_vsync (post6_frame_vsync), //Processed Image data vsync valid signal + .post_frame_href (post6_frame_href), //Processed Image data href vaild signal + .post_img_Bit (post6_img_Bit) //Processed Image Bit flag outout(1: Value, 0:inValid) + ); + assign post6_img_Gray = {8{post6_img_Bit}}; +end +else if(GRAY_DILATION == "OFF") begin : GRAY_DILATION_OFF + assign post6_frame_vsync = post5_frame_vsync; + assign post6_frame_href = post5_frame_href; + assign post6_img_Gray = post5_img_Gray; +end +endgenerate + +assign post_frame_vsync = post6_frame_vsync; //Processed Image data vsync valid signal +assign post_frame_href = post6_frame_href; //Processed Image data href vaild signal +assign post_img_Gray = post6_img_Gray; //Processed Image Gray output + +endmodule diff --git a/lib/common/Driver/ADC_driver/AD6645/AD6645.v b/lib/common/Driver/ADC_driver/AD6645/AD6645.v new file mode 100644 index 0000000..974ea85 --- /dev/null +++ b/lib/common/Driver/ADC_driver/AD6645/AD6645.v @@ -0,0 +1,17 @@ +module AD6645 +( + input clk_in, + input rst_n, + input [13:0] AD_data, + output [13:0] wave_CH +); +reg [13:0] wave_CH_buf; +always@(posedge clk_in or negedge rst_n) +begin + if(!rst_n) + wave_CH_buf <= 14'd0; + else + wave_CH_buf <= AD_data; +end +assign wave_CH = wave_CH_buf - 14'd1700; +endmodule \ No newline at end of file diff --git a/lib/common/Driver/ADC_driver/ADS412x_driver/ADC_CFG.vhd b/lib/common/Driver/ADC_driver/ADS412x_driver/ADC_CFG.vhd new file mode 100644 index 0000000..19d49da --- /dev/null +++ b/lib/common/Driver/ADC_driver/ADS412x_driver/ADC_CFG.vhd @@ -0,0 +1,195 @@ +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +use IEEE.STD_LOGIC_unsigned.ALL; + +-- Uncomment the following library declaration if using +-- arithmetic functions with Signed or Unsigned values +--use IEEE.NUMERIC_STD.ALL; + +-- Uncomment the following library declaration if instantiating +-- any Xilinx leaf cells in this code. +library UNISIM; +use UNISIM.VComponents.all; + +entity ADC_CFG is + Port ( + clk : in std_logic; + rstn : in std_logic; + sclk : out std_logic; + sdata : out std_logic; + sen : out std_logic; + adc_rst : out std_logic; + cfg_done : out std_logic + ); +end ADC_CFG; + +architecture Behavioral of ADC_CFG iimage.pngsimage.png + image.png + component CFG_INT + Port ( + CLK : in STD_LOGIC;--100mhz + RSTn : in STD_LOGIC; + TRIG : in STD_LOGIC; + ADDR : in STD_LOGIC_VECTOR (7 downto 0); + DATA : in STD_LOGIC_VECTOR (7 downto 0); + SCLK : out STD_LOGIC; + SDATA : out STD_LOGIC; + SEN : out STD_LOGIC; + BUSY : out STD_LOGIC + ); + end component; + + type array_reg is array (0 to 25) of std_logic_vector(7 downto 0); + signal addr_reg : array_reg :=( x"42", -- + x"00", --bit0 readout ; --bit1 reset + x"01", + x"03", + x"25", + x"29", + x"2b", + x"3d", + x"3f", + x"40", + x"41", + x"42", + x"45", + x"4a", + x"58", + x"bf", + x"c1", + x"cf", + x"ef", + x"f1", + x"f2", + x"02", + x"d5", + x"d7", + x"db", + x"00" --the last byte no meaning + ); + constant data_reg : array_reg :=( x"08", -- + x"00", --bit0 readout ; --bit1 reset + x"00", + x"03", + x"00", + x"00", + x"00", + x"00", + x"00", + x"00", + x"03", + x"08", + x"00", + x"01", + x"01", + x"00", + x"00", + x"00", + x"00", + x"03", + x"00", + x"40", + x"18", + x"0c", + x"20", + x"00" --the last byte no meaning + ); + signal trig : std_logic; + signal busy : std_logic; + signal busy_r : std_logic; + signal busy_rr : std_logic; + signal busy_rrr : std_logic; + signal resetn : std_logic; + signal busy_pulse : std_logic; + signal cfg_done_i : std_logic; + signal byte_count : std_logic_vector(7 downto 0); + signal addr : std_logic_vector(7 downto 0); + signal data : std_logic_vector(7 downto 0); + signal rst_count : std_logic_vector(11 downto 0); + signal clkIbuf : std_logic; + signal clkIbufG : std_logic; + +begin + + clkIbufG <= clk; + + CFG_INT_inst : CFG_INT + Port map( + CLK => clkIbufG ,--: in STD_LOGIC;--100mhz + RSTn => rstn ,--: in STD_LOGIC; + TRIG => trig ,--: in STD_LOGIC; + ADDR => addr ,--: in STD_LOGIC_VECTOR (7 downto 0); + DATA => data ,--: in STD_LOGIC_VECTOR (7 downto 0); + SCLK => sclk ,--: out STD_LOGIC; + SDATA => sdata ,--: out STD_LOGIC; + SEN => sen ,--: out STD_LOGIC; + BUSY => busy --: out STD_LOGIC + ); + + process(clkIbufG,rstn) + begin + if rstn='0' then + rst_count<=(others=>'0'); + elsif rising_edge(clkIbufG) then + if rst_count=x"2ff" then + rst_count<=rst_count; + else + rst_count<=rst_count+1; + end if; + end if; + end process; + + adc_rst<=not rst_count(9); + + resetn<='1' when rstn='1' and rst_count(9)='1' else '0'; + + process(clkIbufG,resetn) + begin + if resetn='0' then busy_r<='0'; + busy_rr<='0'; + busy_rrr<='0'; + elsif rising_edge(clkIbufG) then + busy_r<=busy; + busy_rr<=busy_r; + busy_rrr<=busy_rr; + end if; + end process; + + busy_pulse<='1' when busy_r='0' and busy_rr='1' else '0'; + + process(clkIbufG,resetn) + begin + if resetn='0' then byte_count<=(others=>'0'); + cfg_done_i<='0'; + elsif rising_edge(clkIbufG) then + cfg_done_i<='0'; + if byte_count=x"10" then + byte_count<=byte_count; + cfg_done_i<='1'; + elsif busy_pulse='1' then + byte_count<=byte_count+1; + else + byte_count<=byte_count; + end if; + end if; + end process; + + cfg_done<=cfg_done_i; + + addr<=addr_reg(conv_integer(byte_count)); + data<=data_reg(conv_integer(byte_count)); + + process(clkIbufG,resetn) + begin + if resetn='0' then + trig<='0'; + elsif rising_edge(clkIbufG) then + if byte_count/=x"10" and busy_rrr='0' then + trig<='1'; + else + trig<='0'; + end if; + end if; + end process; + +end Behavioral; diff --git a/lib/common/Driver/ADC_driver/ADS412x_driver/ADS412x_driver.v b/lib/common/Driver/ADC_driver/ADS412x_driver/ADS412x_driver.v new file mode 100644 index 0000000..d0122fb --- /dev/null +++ b/lib/common/Driver/ADC_driver/ADS412x_driver/ADS412x_driver.v @@ -0,0 +1,51 @@ +`timescale 1ns / 1ps + +module ADS412x_driver( + // input sys_rst_n, + input user_clk, + output [11:0] user_rd_data, + + output adc_sclk, // sclk + output adc_sdata, // sda + output adc_reset, + output adc_sen, + input [11:0] adc_data, + input adc_clk, + output adc_samp_clk +); + +wire sys_rst_n; +assign sys_rst_n = 1; + +wire adc_config_done; +wire rst_n; +reg [11:0] adc_data_r; +reg [11:0] adc_data_rr; + +assign adc_samp_clk=user_clk; +assign rst_n = ((adc_config_done == 1'b1) && (sys_rst_n == 1'b1)) ? 1'b1 : 1'b0; + +assign user_rd_data=adc_data_rr;//// + +ADC_CFG u_ADS4128_CFG( + .clk ( user_clk ), + .rstn ( sys_rst_n ), + .sclk ( adc_sclk ), + .sdata ( adc_sdata ), + .sen ( adc_sen ), + .adc_rst ( adc_reset ), + .cfg_done ( adc_config_done ) +); + +always @ (posedge adc_clk) begin + if (rst_n == 1'b0) begin + adc_data_r <= 12'h000; + adc_data_rr <= 12'h000; + end + else begin + adc_data_r <= adc_data; + adc_data_rr <= adc_data_r + 12'b1000_0000_0000; + end +end + +endmodule diff --git a/lib/common/Driver/ADC_driver/ADS412x_driver/CFG_INT.vhd b/lib/common/Driver/ADC_driver/ADS412x_driver/CFG_INT.vhd new file mode 100644 index 0000000..b205c9c --- /dev/null +++ b/lib/common/Driver/ADC_driver/ADS412x_driver/CFG_INT.vhd @@ -0,0 +1,250 @@ +---------------------------------------------------------------------------------- +-- Company: +-- Engineer: +-- +-- Create Date: 2016/04/06 13:55:20 +-- Design Name: +-- Module Name: CFG_INT - Behavioral +-- Project Name: +-- Target Devices: +-- Tool Versions: +-- Description: +-- +-- Dependencies: +-- +-- Revision: +-- Revision 0.01 - File Created +-- Additional Comments: +-- +---------------------------------------------------------------------------------- + + +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +use IEEE.STD_LOGIC_unsigned.ALL; + +-- Uncomment the following library declaration if using +-- arithmetic functions with Signed or Unsigned values +--use IEEE.NUMERIC_STD.ALL; + +-- Uncomment the following library declaration if instantiating +-- any Xilinx leaf cells in this code. +--library UNISIM; +--use UNISIM.VComponents.all; + +entity CFG_INT is + Port ( + CLK : in STD_LOGIC;--100mhz + RSTn : in STD_LOGIC; + TRIG : in STD_LOGIC; + ADDR : in STD_LOGIC_VECTOR(7 downto 0); + DATA : in STD_LOGIC_VECTOR(7 downto 0); + SCLK : out STD_LOGIC; + SDATA : out STD_LOGIC; + SEN : out STD_LOGIC; + BUSY : out STD_LOGIC + ); +end CFG_INT; + +architecture Behavioral of CFG_INT is + + type state_type is (idle,start,wr_addr,wr_data,done); + signal state : state_type; + signal freq_div : std_logic_vector(3 downto 0); + signal trig_r : std_logic; + signal trig_rr : std_logic; + signal trigger : std_logic; + signal addr_i : std_logic_vector(7 downto 0); + signal addr_r : std_logic_vector(7 downto 0); + signal data_i : std_logic_vector(7 downto 0); + signal data_r : std_logic_vector(7 downto 0); + signal sen_i : std_logic; + signal bit_count : std_logic_vector(3 downto 0); + signal sclk_r : std_logic; + signal sclk_f : std_logic; + signal sclk_flag : std_logic; + signal sclk_i : std_logic; + signal sdata_i : std_logic; + signal busy_i : std_logic; + +begin + + process(clk,rstn) + begin + if rstn='0' then + trig_r<='0'; + trig_rr<='0'; + elsif rising_edge(clk) then + trig_r<=trig; + trig_rr<=trig_r; + end if; + end process; + + trigger<='1' when trig_r='1' and trig_rr='0' else '0'; + + process(clk,rstn) + begin + if rstn='0' then addr_i<=(others=>'0'); + data_i<=(others=>'0'); + elsif rising_edge(clk) then + if trigger='1' then + addr_i<=addr; + data_i<=data; + end if; + end if; + end process; + + process(clk,rstn) + begin + if rstn='0' then state<=idle; + sen_i<='1'; + busy_i<='0'; + sclk_flag<='0'; + elsif rising_edge(clk) then + case state is + when idle => + if trigger='1' then + state<=start; + busy_i<='1'; + else + state<=idle; + end if; + when start => + state<=wr_addr; + when wr_addr => + sclk_flag<='1'; + sen_i<='0'; + if bit_count=x"8" then + state<=wr_data; + else + state<=wr_addr; + end if; + when wr_data => + if bit_count=x"8" then + state<=done; + else + state<=wr_data; + end if; + when done => + if sclk_r='1' then state<=idle; + sen_i<='1'; + sclk_flag<='0'; + busy_i<='0'; + else + state<=done; + end if; + when others=> state<=idle; + end case; + end if; + end process; + + sen<=sen_i; + busy<=busy_i; + + process(clk,rstn) + begin + if rstn='0' then + freq_div<=(others=>'0'); + elsif rising_edge(clk) then + if sclk_flag='1' then + if freq_div=x"9" then + freq_div<=(others=>'0'); + else + freq_div<=freq_div+'1'; + end if; + else + freq_div<=(others=>'0'); + end if; + end if; + end process; + + process(clk,rstn) + begin + if rstn='0' then + sclk_r<='0'; + sclk_f<='0'; + elsif rising_edge(clk) then + sclk_r<='0'; + sclk_f<='0'; + if sclk_flag='1' then + if freq_div=x"0" then + sclk_r<='1'; + elsif freq_div=x"5" then + sclk_f<='1'; + end if; + end if; + end if; + end process; + + process(clk,rstn) + begin + if rstn='0' then + sclk_i<='1'; + elsif rising_edge(clk) then + if sclk_flag='1' then + if sclk_r='1' then + sclk_i<='1'; + elsif sclk_f='1' then + sclk_i<='0'; + else + sclk_i<=sclk_i; + end if; + else + sclk_i<='1'; + end if; + end if; + end process; + + sclk<=sclk_i; + + process(clk,rstn) + begin + if rstn='0' then + bit_count<=(others=>'0'); + elsif rising_edge(clk) then + if bit_count=8 then + bit_count<=(others=>'0'); + elsif sclk_f='1' then + bit_count<=bit_count+1; + else + bit_count<=bit_count; + end if; + end if; + end process; + + process(clk,rstn) + begin + if rstn='0' then + addr_r<=(others=>'0'); + data_r<=(others=>'0'); + sdata_i<='0'; + elsif rising_edge(clk) then + if state=start then + addr_r<=addr_i; + data_r<=data_i; + elsif state=wr_addr then + if sclk_r='1' then + sdata_i<=addr_r(7); + addr_r<=addr_r(6 downto 0) & '0'; + else + sdata_i<=sdata_i; + addr_r<=addr_r; + end if; + elsif state=wr_data then + if sclk_r='1' then + sdata_i<=data_r(7); + data_r<=data_r(6 downto 0) & '0'; + else + sdata_i<=sdata_i; + data_r<=data_r; + end if; + elsif state=done then + sdata_i<=sdata_i; + else + sdata_i<='0'; + end if; + end if; + end process; + + sdata<=sdata_i; +end Behavioral; diff --git a/lib/common/Driver/ADC_driver/ADS9226_driver/AD9226_driver.v b/lib/common/Driver/ADC_driver/ADS9226_driver/AD9226_driver.v new file mode 100644 index 0000000..c1af86f --- /dev/null +++ b/lib/common/Driver/ADC_driver/ADS9226_driver/AD9226_driver.v @@ -0,0 +1,37 @@ +module AD9226_driver # +( + parameter signed CH_offset = 27 +) +( + input clk_in, + input rst_n, + input [11:0] AD_data, + output AD_clk, + output [11:0] wave_CH +); + +reg signed [11:0] wave_CH_buf; +always@(posedge clk_in or negedge rst_n) begin + if(!rst_n) + wave_CH_buf <= 12'd0; + else begin + wave_CH_buf[11] <= AD_data[0]; + wave_CH_buf[10] <= AD_data[1]; + wave_CH_buf[9] <= AD_data[2]; + wave_CH_buf[8] <= AD_data[3]; + wave_CH_buf[7] <= AD_data[4]; + wave_CH_buf[6] <= AD_data[5]; + wave_CH_buf[5] <= AD_data[6]; + wave_CH_buf[4] <= AD_data[7]; + wave_CH_buf[3] <= AD_data[8]; + wave_CH_buf[2] <= AD_data[9]; + wave_CH_buf[1] <= AD_data[10]; + wave_CH_buf[0] <= AD_data[11]; + end +end + +assign wave_CH = $signed(wave_CH_buf) + $signed(CH_offset); +assign AD_clk = clk_in; + +endmodule + diff --git a/lib/common/Driver/DAC_driver/DAC3162_driver/DAC3162_driver.v b/lib/common/Driver/DAC_driver/DAC3162_driver/DAC3162_driver.v new file mode 100644 index 0000000..7877936 --- /dev/null +++ b/lib/common/Driver/DAC_driver/DAC3162_driver/DAC3162_driver.v @@ -0,0 +1,65 @@ +`timescale 1ns / 1ps + +module DAC3162_driver ( + input clk_in, + input clk_div, + + input [11:0] DA3162_CH1, + input [11:0] DA3162_CH2, + /*DAC*/ + output [11:0] dac_data_p, + output [11:0] dac_data_n, + output dac_clk_p, + output dac_clk_n, + output dac_sleep +); + +assign dac_sleep = 1'd1; + +reg [11:0] dac_a_int = 0; +reg [11:0] dac_b_int = 0; +reg [11:0] dac_a_intt = 0; +reg [11:0] dac_b_intt = 0; + +reg [1:0] cnt_clk = 0; +reg [3:0] power_on_rst_cnt = 4'h0; +reg power_on_rst = 1; + +always @ (posedge clk_in) begin + dac_a_int<=DA3162_CH1 + 12'b100000000000; + dac_b_int<=DA3162_CH2 + 12'b100000000000; + dac_a_intt<=dac_a_int; + dac_b_intt<=dac_b_int; +end + +always @ (posedge clk_div) begin + if (power_on_rst_cnt == 4'hf) begin + power_on_rst_cnt <= power_on_rst_cnt; + power_on_rst <= 0; + end + else begin + power_on_rst_cnt <= power_on_rst_cnt + 1; + power_on_rst <= 1; + end +end + +LVDS_DDR_clk DAC3162_clk_u ( + .data_out_from_device ( 4'b0101 ), // input [3:0] data_out_from_device + .data_out_to_pins_p ( dac_clk_p ), // output [0:0] data_out_to_pins_p + .data_out_to_pins_n ( dac_clk_n ), // output [0:0] data_out_to_pins_n + .clk_in ( clk_in ), // input clk_in + .clk_div_in ( clk_div ), // input clk_div_in + .io_reset ( power_on_rst ) // input io_reset +); + +// input [47:0] data_out_from_device +LVDS_DDR_data DAC3162_data_u ( + .clk_in ( clk_in ), // input clk_in + .clk_div_in ( clk_div ), // input clk_div_in + .data_out_from_device ({dac_a_int,dac_b_int,dac_a_intt,dac_b_intt} ), + .data_out_to_pins_p ( dac_data_p ), // output [11:0] data_out_to_pins_p + .data_out_to_pins_n ( dac_data_n ), // output [11:0] data_out_to_pins_n + .io_reset ( power_on_rst ) // input io_reset +); + +endmodule diff --git a/lib/common/Driver/DAC_driver/DAC3162_driver/LVDS_DDR_clk.v b/lib/common/Driver/DAC_driver/DAC3162_driver/LVDS_DDR_clk.v new file mode 100644 index 0000000..e9c39fa --- /dev/null +++ b/lib/common/Driver/DAC_driver/DAC3162_driver/LVDS_DDR_clk.v @@ -0,0 +1,108 @@ +`timescale 1ps/1ps + +(* CORE_GENERATION_INFO = "LVDS_DDR_clk,selectio_wiz_v5_1_12,{component_name=LVDS_DDR_clk,bus_dir=OUTPUTS,bus_sig_type=DIFF,bus_io_std=DIFF_HSTL_I_18,use_serialization=true,use_phase_detector=false,serialization_factor=4,enable_bitslip=false,enable_train=false,system_data_width=1,bus_in_delay=NONE,bus_out_delay=NONE,clk_sig_type=SINGLE,clk_io_std=LVCMOS18,clk_buf=BUFIO2,active_edge=RISING,clk_delay=NONE,selio_bus_in_delay=NONE,selio_bus_out_delay=NONE,selio_clk_buf=MMCM,selio_active_edge=DDR,selio_ddr_alignment=SAME_EDGE_PIPELINED,selio_oddr_alignment=SAME_EDGE,ddr_alignment=C0,selio_interface_type=NETWORKING,interface_type=NETWORKING,selio_bus_in_tap=0,selio_bus_out_tap=0,selio_clk_io_std=DIFF_HSTL_I_18,selio_clk_sig_type=DIFF}" *) + +module LVDS_DDR_clk + // width of the data for the system + #(parameter SYS_W = 1, + // width of the data for the device + parameter DEV_W = 4) + ( + // From the device out to the system + input [DEV_W-1:0] data_out_from_device, + output [SYS_W-1:0] data_out_to_pins_p, + output [SYS_W-1:0] data_out_to_pins_n, + input clk_in, // Fast clock input from PLL/MMCM + input clk_div_in, // Slow clock input from PLL/MMCM + input io_reset); + + localparam num_serial_bits = DEV_W/SYS_W; + wire clock_enable = 1'b1; + // Signal declarations + ////------------------------------ + // Before the buffer + wire [SYS_W-1:0] data_out_to_pins_int; + // Between the delay and serdes + wire [SYS_W-1:0] data_out_to_pins_predelay; + // Array to use intermediately from the serdes to the internal + // devices. bus "0" is the leftmost bus + wire [SYS_W-1:0] oserdes_d[0:13]; // fills in starting with 13 + // Create the clock logic + + + // We have multiple bits- step over every bit, instantiating the required elements + genvar pin_count; + genvar slice_count; + generate for (pin_count = 0; pin_count < SYS_W; pin_count = pin_count + 1) begin: pins + // Instantiate the buffers + ////------------------------------ + // Instantiate a buffer for every bit of the data bus + OBUFDS + #(.IOSTANDARD ("DIFF_HSTL_I_18")) + obufds_inst + (.O (data_out_to_pins_p [pin_count]), + .OB (data_out_to_pins_n [pin_count]), + .I (data_out_to_pins_int[pin_count])); + + // Pass through the delay + ////------------------------------- + assign data_out_to_pins_int[pin_count] = data_out_to_pins_predelay[pin_count]; + + // Instantiate the serdes primitive + ////------------------------------ + + // declare the oserdes + OSERDESE2 + # ( + .DATA_RATE_OQ ("DDR"), + .DATA_RATE_TQ ("DDR"), + .DATA_WIDTH (4), + .TRISTATE_WIDTH (4), + .SERDES_MODE ("MASTER")) + oserdese2_master ( + .D1 (oserdes_d[13][pin_count]), + .D2 (oserdes_d[12][pin_count]), + .D3 (oserdes_d[11][pin_count]), + .D4 (oserdes_d[10][pin_count]), + .D5 (oserdes_d[9][pin_count]), + .D6 (oserdes_d[8][pin_count]), + .D7 (oserdes_d[7][pin_count]), + .D8 (oserdes_d[6][pin_count]), + .T1 (1'b0), + .T2 (1'b0), + .T3 (1'b0), + .T4 (1'b0), + .SHIFTIN1 (1'b0), + .SHIFTIN2 (1'b0), + .SHIFTOUT1 (), + .SHIFTOUT2 (), + .OCE (clock_enable), + .CLK (clk_in), + .CLKDIV (clk_div_in), + .OQ (data_out_to_pins_predelay[pin_count]), + .TQ (), + .OFB (), + .TFB (), + .TBYTEIN (1'b0), + .TBYTEOUT (), + .TCE (1'b0), + .RST (io_reset)); + + // Concatenate the serdes outputs together. Keep the timesliced + // bits together, and placing the earliest bits on the right + // ie, if data comes in 0, 1, 2, 3, 4, 5, 6, 7, ... + // the output will be 3210, 7654, ... + ////--------------------------------------------------------- + for (slice_count = 0; slice_count < num_serial_bits; slice_count = slice_count + 1) begin: out_slices + // This places the first data in time on the right + assign oserdes_d[14-slice_count-1] = + data_out_from_device[slice_count]; + // To place the first data in time on the left, use the + // following code, instead + // assign oserdes_d[slice_count] = + // data_out_from_device[slice_count]; + end + end + endgenerate + +endmodule diff --git a/lib/common/Driver/DAC_driver/DAC3162_driver/LVDS_DDR_data.v b/lib/common/Driver/DAC_driver/DAC3162_driver/LVDS_DDR_data.v new file mode 100644 index 0000000..075eeb2 --- /dev/null +++ b/lib/common/Driver/DAC_driver/DAC3162_driver/LVDS_DDR_data.v @@ -0,0 +1,106 @@ +`timescale 1ps/1ps + +(* CORE_GENERATION_INFO = "LVDS_DDR_data,selectio_wiz_v5_1_12,{component_name=LVDS_DDR_data,bus_dir=OUTPUTS,bus_sig_type=DIFF,bus_io_std=DIFF_HSTL_I_18,use_serialization=true,use_phase_detector=false,serialization_factor=4,enable_bitslip=false,enable_train=false,system_data_width=12,bus_in_delay=NONE,bus_out_delay=NONE,clk_sig_type=SINGLE,clk_io_std=LVCMOS18,clk_buf=BUFIO2,active_edge=RISING,clk_delay=NONE,selio_bus_in_delay=NONE,selio_bus_out_delay=NONE,selio_clk_buf=MMCM,selio_active_edge=DDR,selio_ddr_alignment=SAME_EDGE_PIPELINED,selio_oddr_alignment=SAME_EDGE,ddr_alignment=C0,selio_interface_type=NETWORKING,interface_type=NETWORKING,selio_bus_in_tap=0,selio_bus_out_tap=0,selio_clk_io_std=DIFF_HSTL_I_18,selio_clk_sig_type=DIFF}" *) + +module LVDS_DDR_data + // width of the data for the system + #(parameter SYS_W = 12, + // width of the data for the device + parameter DEV_W = 48) + ( + // From the device out to the system + input [DEV_W-1:0] data_out_from_device, + output [SYS_W-1:0] data_out_to_pins_p, + output [SYS_W-1:0] data_out_to_pins_n, + input clk_in, // Fast clock input from PLL/MMCM + input clk_div_in, // Slow clock input from PLL/MMCM + input io_reset); + localparam num_serial_bits = DEV_W/SYS_W; + wire clock_enable = 1'b1; + // Signal declarations + ////------------------------------ + // Before the buffer + wire [SYS_W-1:0] data_out_to_pins_int; + // Between the delay and serdes + wire [SYS_W-1:0] data_out_to_pins_predelay; + // Array to use intermediately from the serdes to the internal + // devices. bus "0" is the leftmost bus + wire [SYS_W-1:0] oserdes_d[0:13]; // fills in starting with 13 + // Create the clock logic + + + // We have multiple bits- step over every bit, instantiating the required elements + genvar pin_count; + genvar slice_count; + generate for (pin_count = 0; pin_count < SYS_W; pin_count = pin_count + 1) begin: pins + // Instantiate the buffers + ////------------------------------ + // Instantiate a buffer for every bit of the data bus + OBUFDS + #(.IOSTANDARD ("DIFF_HSTL_I_18")) + obufds_inst + (.O (data_out_to_pins_p [pin_count]), + .OB (data_out_to_pins_n [pin_count]), + .I (data_out_to_pins_int[pin_count])); + + // Pass through the delay + ////------------------------------- + assign data_out_to_pins_int[pin_count] = data_out_to_pins_predelay[pin_count]; + + // Instantiate the serdes primitive + ////------------------------------ + + // declare the oserdes + OSERDESE2 # ( + .DATA_RATE_OQ ("DDR"), + .DATA_RATE_TQ ("DDR"), + .DATA_WIDTH (4), + .TRISTATE_WIDTH (4), + .SERDES_MODE ("MASTER")) + oserdese2_master ( + .D1 (oserdes_d[13][pin_count]), + .D2 (oserdes_d[12][pin_count]), + .D3 (oserdes_d[11][pin_count]), + .D4 (oserdes_d[10][pin_count]), + .D5 (oserdes_d[9][pin_count]), + .D6 (oserdes_d[8][pin_count]), + .D7 (oserdes_d[7][pin_count]), + .D8 (oserdes_d[6][pin_count]), + .T1 (1'b0), + .T2 (1'b0), + .T3 (1'b0), + .T4 (1'b0), + .SHIFTIN1 (1'b0), + .SHIFTIN2 (1'b0), + .SHIFTOUT1 (), + .SHIFTOUT2 (), + .OCE (clock_enable), + .CLK (clk_in), + .CLKDIV (clk_div_in), + .OQ (data_out_to_pins_predelay[pin_count]), + .TQ (), + .OFB (), + .TFB (), + .TBYTEIN (1'b0), + .TBYTEOUT (), + .TCE (1'b0), + .RST (io_reset)); + + // Concatenate the serdes outputs together. Keep the timesliced + // bits together, and placing the earliest bits on the right + // ie, if data comes in 0, 1, 2, 3, 4, 5, 6, 7, ... + // the output will be 3210, 7654, ... + ////--------------------------------------------------------- + for (slice_count = 0; slice_count < num_serial_bits; slice_count = slice_count + 1) begin: out_slices + // This places the first data in time on the right + assign oserdes_d[14-slice_count-1] = + data_out_from_device[slice_count*SYS_W+:SYS_W]; + // To place the first data in time on the left, use the + // following code, instead + // assign oserdes_d[slice_count] = + // data_out_from_device[slice_count*SYS_W+:SYS_W]; + end + end + endgenerate + +endmodule diff --git a/lib/common/Driver/DAC_driver/DAC9767_driver/DA9767.v b/lib/common/Driver/DAC_driver/DAC9767_driver/DA9767.v new file mode 100644 index 0000000..9d24363 --- /dev/null +++ b/lib/common/Driver/DAC_driver/DAC9767_driver/DA9767.v @@ -0,0 +1,62 @@ +//============================================================================================ +/* + * #Author : sterben(Duan) + * #LastAuthor : sterben(Duan) + * #Date : 2019-09-27 00:00:34 + * #lastTime : 2020-01-22 23:54:59 + * #FilePath : src\Driver\DAC_driver\DAC9767_driver\DA9767.v + * #Description : port: + */ +//============================================================================================ + +module DA9767 # +( + parameter INPUT_WIDTH = 14, + parameter INPUT_STYLE = "signed", + parameter ALIGNED_STYLE = "LSB" +) +( + input clk_in, + input [INPUT_WIDTH - 1 : 0] DA_data, + output DA_clk, + output DA_wrt, + output [13:0] DA_out +); + +generate if(INPUT_STYLE == "signed") begin : OUTPUT + if (INPUT_WIDTH < 14) begin + localparam DATA_WIDTH = 14 - INPUT_WIDTH; + if (ALIGNED_STYLE == "LSB") begin + assign DA_out = $signed({{DATA_WIDTH{DA_data[INPUT_WIDTH-1]}},DA_data}) + + $signed(14'd8192); + end + else if(ALIGNED_STYLE == "MSB") begin + reg [DATA_WIDTH - 1 : 0 ] data_buf = 0; + assign DA_out = $signed({DA_data,data_buf}) + $signed(14'd8192); + end + end + else begin + assign DA_out = $signed(DA_data[INPUT_WIDTH - 1 : INPUT_WIDTH - 14]) + $signed(14'd8192); + end +end +else if(INPUT_STYLE == "unsigned") begin + if (INPUT_WIDTH < 14) begin + localparam DATA_WIDTH = 14 - INPUT_WIDTH; + if (ALIGNED_STYLE == "LSB") begin + assign DA_out = {{DATA_WIDTH{DA_data[INPUT_WIDTH-1]}},DA_data}; + end + else if(ALIGNED_STYLE == "MSB") begin + reg [DATA_WIDTH - 1 : 0 ] data_buf = 0; + assign DA_out = {DA_data,data_buf}; + end + end + else begin + assign DA_out = DA_data[INPUT_WIDTH - 1 : INPUT_WIDTH - 14]; + end +end +endgenerate + +assign DA_clk = clk_in; +assign DA_wrt = clk_in; + +endmodule diff --git a/lib/common/Driver/DAC_driver/DAC_PWM/DAC_PWM.v b/lib/common/Driver/DAC_driver/DAC_PWM/DAC_PWM.v new file mode 100644 index 0000000..9aa82dc --- /dev/null +++ b/lib/common/Driver/DAC_driver/DAC_PWM/DAC_PWM.v @@ -0,0 +1,35 @@ +module DAC_PWM # +( + parameter MAIN_FRE = 500, + parameter PWM_FRE = 1000, + parameter PHASE_WIDTH = 32 +) +( + input clk_in, + input RST, + output DAC_PWM, + input [PHASE_WIDTH-1:0] data_in +); + +localparam [PHASE_WIDTH-1:0] DC_ADD = (2**(PHASE_WIDTH-1)) - 1; +localparam [PHASE_WIDTH-1:0] FRE_WORD = (2**PHASE_WIDTH)*PWM_FRE/(MAIN_FRE*1000); + +reg [PHASE_WIDTH-1:0] addr_r = 0; +always @(posedge clk_in) begin + if (RST) + addr_r <= 0; + else + addr_r <= addr_r + FRE_WORD; +end + +reg [PHASE_WIDTH-1:0] duty_r = 0; +always @(posedge clk_in) begin + if (RST) + duty_r <= 32'd0; + else + duty_r <= $signed(data_in) + DC_ADD; +end + +assign DAC_PWM = (addr_r <= duty_r) ? 1'b1 : 1'b0; + +endmodule \ No newline at end of file diff --git a/lib/common/Driver/DDS_driver/ADF_driver.v b/lib/common/Driver/DDS_driver/ADF_driver.v new file mode 100644 index 0000000..1905372 --- /dev/null +++ b/lib/common/Driver/DDS_driver/ADF_driver.v @@ -0,0 +1,124 @@ +module ADF_driver +( + input clk, //系统时钟 + input wrsig, //发送命令,上升沿有效 + input [8:0] datain, //需要发送的数据 + + output reg tx_idle, //线路状态指示,高为线路忙,低为线路空闲 + output reg tx, //发送数据信号 + output reg clkout, + output reg LE +); + +reg tx_send=0; +reg tx_wrsigbuf=0, tx_wrsigrise=0; +reg[7:0] tx_cnt=0; //计数器 +//检测发送命令是否有效 +reg [15:0] clk_cnt=0; +reg [31:0]dataint=0; +reg [10:0]cnt_init=0; +reg init=0; +reg [4:0] cnt_wei=0; +reg [15:0]int_v=0; +reg [11:0]frac_v=0; + + +parameter [31:0]R5=32'b00000000_00011_0000000000000000_101; +parameter [31:0]R4=32'b00000000_1101_01100100_000000_111100; +parameter [31:0]R3=32'b00000000_100000010_111111111111_011; +parameter [31:0]R2=32'b00000000_0000000001_00000_001000010; +parameter [31:0]R1=32'b00000_000000000000_000001100100_001; +reg [31:0]R0=32'b0_00000000_10100000_000000000000_000; + +always @(posedge clk) begin//分频进程 CLK/(1000000) + if(clk_cnt == 16'd24) begin + clkout <= 1'b1; + clk_cnt <= clk_cnt + 16'd1; + end + else if(clk_cnt == 16'd49) begin + clkout <= 1'b0; + clk_cnt <= 16'd0; + end + else begin + clk_cnt <= clk_cnt + 16'd1; + end +end + + +always @(negedge clkout) begin + int_v<=datain/7'd100; + frac_v<=datain%7'd100; + if(!init) begin + cnt_init<=cnt_init+1'b1; + case(cnt_init) + 11'd5: begin R0<=32'b0_00000000_10100000_000000000000_000; end + 11'd1010: begin tx_send <= 1'b1; dataint<=R5; end + 11'd1046: begin tx_send <= 1'b0; end + 11'd1110: begin tx_send <= 1'b1; dataint<=R4; end + 11'd1146: begin tx_send <= 1'b0; end + 11'd1210: begin tx_send <= 1'b1; dataint<=R3; end + 11'd1246: begin tx_send <= 1'b0; end + 11'd1310: begin tx_send <= 1'b1; dataint<=R2; end + 11'd1346: begin tx_send <= 1'b0; end + 11'd1410: begin tx_send <= 1'b1; dataint<=R1; end + 11'd1446: begin tx_send <= 1'b0; end + 11'd1510: begin tx_send <= 1'b1; dataint<=R0; end + 11'd1546: begin tx_send <= 1'b0; end + 11'd1610: begin tx_send <= 1'b1; dataint<=R3; end + 11'd1646: begin tx_send <= 1'b0; end + 11'd1650: begin init<=1'b1; end + endcase + end + else begin + tx_wrsigbuf <= wrsig; + tx_wrsigrise <= (~tx_wrsigbuf) & wrsig; + if (tx_wrsigrise && (~tx_idle)) begin + tx_send <= 1'b1; + R0[30:15]<=int_v; + R0[14:3]<=frac_v; + end + else if(tx_cnt == 8'd36) begin + tx_send <= 1'b0; + end + end +end + +always @(negedge clkout) begin + if(tx_send == 1'b1) begin + case(tx_cnt) //产生起始位 + 8'd1: begin + LE<=1'b0; + tx <= dataint[31]; + cnt_wei<=5'd31; + tx_idle <= 1'b1; + tx_cnt <= tx_cnt + 8'd1; + end + 8'd2,8'd3,8'd4,8'd5,8'd6,8'd7,8'd8,8'd9,8'd10,8'd11,8'd12,8'd13,8'd14,8'd15 + ,8'd16,8'd17,8'd18,8'd19,8'd20,8'd21,8'd22,8'd23,8'd24,8'd25,8'd26,8'd27, + 8'd28,8'd29,8'd30,8'd31,8'd32,8'd33: begin + tx <= dataint[cnt_wei]; //发送数据0 位 + cnt_wei<=cnt_wei-1'b1; + tx_idle <= 1'b1; + tx_cnt <= tx_cnt + 8'd1; + end + 8'd34: begin + tx <= 1'b1; + LE<=1'b1; + tx_idle <= 1'b0; + tx_cnt <= tx_cnt + 8'd1; + end + default: begin + tx_cnt <= tx_cnt + 8'd1; + end + endcase + end + else begin + tx <= 1'b1; + LE<=1'b1; + cnt_wei<=5'd31; + tx_cnt <= 8'd0; + tx_idle <= 1'b0; + end +end + +endmodule \ No newline at end of file diff --git a/lib/common/Driver/HDMI_driver/HDMI_in.v b/lib/common/Driver/HDMI_driver/HDMI_in.v new file mode 100644 index 0000000..d2d24d1 --- /dev/null +++ b/lib/common/Driver/HDMI_driver/HDMI_in.v @@ -0,0 +1,11 @@ +module HDMI_in #( + parameter INPUT_WIDTH = 12, + parameter OUTPUT_WIDTH = 12 +) ( + input clk_in, + input rst_n, + input [INPUT_WIDTH - 1 : 0] data_in, + output [OUTPUT_WIDTH - 1 : 0] data_out +); + +endmodule //HDMI_in \ No newline at end of file diff --git a/lib/common/Driver/HDMI_driver/HDMI_out.v b/lib/common/Driver/HDMI_driver/HDMI_out.v new file mode 100644 index 0000000..459bab3 --- /dev/null +++ b/lib/common/Driver/HDMI_driver/HDMI_out.v @@ -0,0 +1,11 @@ +module HDMI_out #( + parameter INPUT_WIDTH = 12, + parameter OUTPUT_WIDTH = 12 +) ( + input clk_in, + input rst_n, + input [INPUT_WIDTH - 1 : 0] data_in, + output [OUTPUT_WIDTH - 1 : 0] data_out +); + +endmodule //HDMI_out \ No newline at end of file diff --git a/lib/common/Driver/KEY_driver/key_driver.v b/lib/common/Driver/KEY_driver/key_driver.v new file mode 100644 index 0000000..8a93ffb --- /dev/null +++ b/lib/common/Driver/KEY_driver/key_driver.v @@ -0,0 +1,80 @@ +`timescale 1 ns / 100 ps +module key_driver +( + input clk, + input rst, + input button_in, + output reg button_posedge, + output reg button_negedge, + output reg button_out +); +//// ---------------- internal constants -------------- +parameter N = 32 ; // debounce timer bitwidth +parameter FREQ = 60; //model clock :Mhz +parameter MAX_TIME = 20; //ms +localparam TIMER_MAX_VAL = MAX_TIME * 1000 * FREQ; +////---------------- internal variables --------------- +reg [N-1 : 0] q_reg; // timing regs +reg [N-1 : 0] q_next; +reg DFF1, DFF2; // input flip-flops +wire q_add; // control flags +wire q_reset; +reg button_out_d0; +//// ------------------------------------------------------ + +////contenious assignment for counter control +assign q_reset = (DFF1 ^ DFF2); // xor input flip flops to look for level chage to reset counter +assign q_add = ~(q_reg == TIMER_MAX_VAL); // add to counter when q_reg msb is equal to 0 + +//// combo counter to manage q_next +always @ ( q_reset, q_add, q_reg) begin + case( {q_reset , q_add}) + 2'b00 : + q_next <= q_reg; + 2'b01 : + q_next <= q_reg + 1; + default : + q_next <= { N {1'b0} }; + endcase +end + +//// Flip flop inputs and q_reg update +always @ ( posedge clk or posedge rst) begin + if(rst == 1'b1) begin + DFF1 <= 1'b0; + DFF2 <= 1'b0; + q_reg <= { N {1'b0} }; + end + else begin + DFF1 <= button_in; + DFF2 <= DFF1; + q_reg <= q_next; + end +end + +//// counter control +always @ ( posedge clk or posedge rst) begin + if(rst == 1'b1) + button_out <= 1'b1; + else if(q_reg == TIMER_MAX_VAL) + button_out <= DFF2; + else + button_out <= button_out; +end + +always @ ( posedge clk or posedge rst) begin + if(rst == 1'b1) begin + button_out_d0 <= 1'b1; + button_posedge <= 1'b0; + button_negedge <= 1'b0; + end + else begin + button_out_d0 <= button_out; + button_posedge <= ~button_out_d0 & button_out; + button_negedge <= button_out_d0 & ~button_out; + end +end + +endmodule + + diff --git a/lib/common/Driver/Motor_driver/Motor_driver.v b/lib/common/Driver/Motor_driver/Motor_driver.v new file mode 100644 index 0000000..6c445c8 --- /dev/null +++ b/lib/common/Driver/Motor_driver/Motor_driver.v @@ -0,0 +1,112 @@ +/******************************************** +wire Motor_Control; +Motor_driver Motor_driver_u( + .clk_in(clk_50m), + .rst_n(1'd1), + .Trig(Trig), + .Meter(16'd4), + + .Motor_Control(Motor_Control) +); +********************************************/ +module Motor_driver ( + input clk_in, + input rst_n, + input Trig, + input [15:0] Meter, + + output reg Motor_Control +); + +parameter MAIN_FRE = 50000000; +parameter MOTOR_FRE = 1000; +parameter SET_TIME = MAIN_FRE/MOTOR_FRE/2; + +/***************************************************/ +//define the data lock +reg Trig_SIG = 0; +reg Trig_SIG_buf = 0; +wire Trig_SIG_pose = Trig_SIG & ~Trig_SIG_buf; +wire Trig_SIG_nege = ~Trig_SIG & Trig_SIG_buf; + +always@(posedge clk_in) begin + Trig_SIG <= Trig; + Trig_SIG_buf <= Trig_SIG; +end +/***************************************************/ + +/***************************************************/ +//define the time counter +reg [15:0] cnt0 = 0; +reg Motor_Control_r = 0; + +always@(posedge clk_in) begin + if (cnt0 == SET_TIME) begin + cnt0 <= 15'd0; + Motor_Control_r <= ~Motor_Control_r; + end + else + cnt0 <= cnt0 + 1'd1; +end +/***************************************************/ + +/***************************************************/ +//define the data lock +reg motor_sig = 0; +reg motor_sig_buf = 0; +wire motor_sig_pose = motor_sig & ~motor_sig_buf; +wire motor_sig_nege = ~motor_sig & motor_sig_buf; +always@(posedge clk_in) begin + motor_sig <= Motor_Control_r; + motor_sig_buf <= motor_sig; +end +/***************************************************/ + +/***************************************************/ +//define the time counter +reg [15:0] cnt1 = 0; +reg CNT_CE = 0; +always@(posedge clk_in) begin + if (Trig_SIG_pose) begin + CNT_CE <= 1'd1; + end + else if(cnt1 == Meter) begin + if (motor_sig_nege) begin + CNT_CE <= 1'd0; + end + else begin + CNT_CE <= CNT_CE; + end + end + else begin + CNT_CE <= CNT_CE; + end +end +/***************************************************/ +reg MOTOR_CE = 0; +always @(posedge clk_in) begin + if (CNT_CE) begin + if (motor_sig_pose) begin + cnt1 <= cnt1 + 1'd1; //cnt1 counter = cnt1 counter + 1 + MOTOR_CE <= 1'd1; + end + else begin + MOTOR_CE <= MOTOR_CE; + end + end + else begin + cnt1 <= 16'd0; + MOTOR_CE <= 1'd0; + end +end + +always @(*) begin + case (MOTOR_CE) + 1'b0 : begin Motor_Control <= 1'b0; end + 1'b1 : begin Motor_Control <= Motor_Control_r; end + default : begin Motor_Control <= 1'b0; end + endcase +end + + +endmodule \ No newline at end of file diff --git a/lib/common/Driver/SDRAM_driver/core/sdrc_bank_ctl.v b/lib/common/Driver/SDRAM_driver/core/sdrc_bank_ctl.v new file mode 100644 index 0000000..2206db6 --- /dev/null +++ b/lib/common/Driver/SDRAM_driver/core/sdrc_bank_ctl.v @@ -0,0 +1,571 @@ +/********************************************************************* + + SDRAM Controller Bank Controller + + This file is part of the sdram controller project + http://www.opencores.org/cores/sdr_ctrl/ + + Description: + This module takes requests from sdrc_req_gen, checks for page hit/miss and + issues precharge/activate commands and then passes the request to sdrc_xfr_ctl. + + To Do: + nothing + + Author(s): + - Dinesh Annayya, dinesha@opencores.org + Version : 1.0 - 8th Jan 2012 + + + + Copyright (C) 2000 Authors and OPENCORES.ORG + + This source file may be used and distributed without + restriction provided that this copyright statement is not + removed from the file and that any derivative work contains + the original copyright notice and the associated disclaimer. + + This source file is free software; you can redistribute it + and/or modify it under the terms of the GNU Lesser General + Public License as published by the Free Software Foundation; + either version 2.1 of the License, or (at your option) any +later version. + + This source is distributed in the hope that it will be + useful, but WITHOUT ANY WARRANTY; without even the implied + warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + PURPOSE. See the GNU Lesser General Public License for more + details. + + You should have received a copy of the GNU Lesser General + Public License along with this source; if not, download it + from http://www.opencores.org/lgpl.shtml + +*******************************************************************/ + + +`include "sdrc_define.v" + +module sdrc_bank_ctl (clk, + reset_n, + a2b_req_depth, // Number of requests we can buffer + + /* Req from req_gen */ + r2b_req, // request + r2b_req_id, // ID + r2b_start, // First chunk of burst + r2b_last, // Last chunk of burst + r2b_wrap, + r2b_ba, // bank address + r2b_raddr, // row address + r2b_caddr, // col address + r2b_len, // length + r2b_write, // write request + b2r_arb_ok, // OK to arbitrate for next xfr + b2r_ack, + + /* Transfer request to xfr_ctl */ + b2x_idle, // All banks are idle + b2x_req, // Request to xfr_ctl + b2x_start, // first chunk of transfer + b2x_last, // last chunk of transfer + b2x_wrap, + b2x_id, // Transfer ID + b2x_ba, // bank address + b2x_addr, // row/col address + b2x_len, // transfer length + b2x_cmd, // transfer command + x2b_ack, // command accepted + + /* Status to/from xfr_ctl */ + b2x_tras_ok, // TRAS OK for all banks + x2b_refresh, // We did a refresh + x2b_pre_ok, // OK to do a precharge (per bank) + x2b_act_ok, // OK to do an activate + x2b_rdok, // OK to do a read + x2b_wrok, // OK to do a write + + /* xfr msb address */ + xfr_bank_sel, + sdr_req_norm_dma_last, + + /* SDRAM Timing */ + tras_delay, // Active to precharge delay + trp_delay, // Precharge to active delay + trcd_delay); // Active to R/W delay + +parameter SDR_DW = 16; // SDR Data Width +parameter SDR_BW = 2; // SDR Byte Width + input clk, reset_n; + + input [1:0] a2b_req_depth; + + /* Req from bank_ctl */ + input r2b_req, r2b_start, r2b_last, + r2b_write, r2b_wrap; + input [`SDR_REQ_ID_W-1:0] r2b_req_id; + input [1:0] r2b_ba; + input [12:0] r2b_raddr; + input [12:0] r2b_caddr; + input [`REQ_BW-1:0] r2b_len; + output b2r_arb_ok, b2r_ack; + input sdr_req_norm_dma_last; + + /* Req to xfr_ctl */ + output b2x_idle, b2x_req, b2x_start, b2x_last, + b2x_tras_ok, b2x_wrap; + output [`SDR_REQ_ID_W-1:0] b2x_id; + output [1:0] b2x_ba; + output [12:0] b2x_addr; + output [`REQ_BW-1:0] b2x_len; + output [1:0] b2x_cmd; + input x2b_ack; + + /* Status from xfr_ctl */ + input [3:0] x2b_pre_ok; + input x2b_refresh, x2b_act_ok, x2b_rdok, + x2b_wrok; + + input [3:0] tras_delay, trp_delay, trcd_delay; + + input [1:0] xfr_bank_sel; + + /****************************************************************************/ + // Internal Nets + + wire [3:0] r2i_req, i2r_ack, i2x_req, + i2x_start, i2x_last, i2x_wrap, tras_ok; + wire [12:0] i2x_addr0, i2x_addr1, i2x_addr2, i2x_addr3; + wire [`REQ_BW-1:0] i2x_len0, i2x_len1, i2x_len2, i2x_len3; + wire [1:0] i2x_cmd0, i2x_cmd1, i2x_cmd2, i2x_cmd3; + wire [`SDR_REQ_ID_W-1:0] i2x_id0, i2x_id1, i2x_id2, i2x_id3; + + reg b2x_req; + wire b2x_idle, b2x_start, b2x_last, b2x_wrap; + wire [`SDR_REQ_ID_W-1:0] b2x_id; + wire [12:0] b2x_addr; + wire [`REQ_BW-1:0] b2x_len; + wire [1:0] b2x_cmd; + wire [3:0] x2i_ack; + reg [1:0] b2x_ba; + + reg [`SDR_REQ_ID_W-1:0] curr_id; + + wire [1:0] xfr_ba; + wire xfr_ba_last; + wire [3:0] xfr_ok; + + // This 8 bit register stores the bank addresses for upto 4 requests. + reg [7:0] rank_ba; + reg [3:0] rank_ba_last; + // This 3 bit counter counts the number of requests we have + // buffered so far, legal values are 0, 1, 2, 3, or 4. + reg [2:0] rank_cnt; + wire [3:0] rank_req, rank_wr_sel; + wire rank_fifo_wr, rank_fifo_rd; + wire rank_fifo_full, rank_fifo_mt; + + wire [12:0] bank0_row, bank1_row, bank2_row, bank3_row; + + assign b2x_tras_ok = &tras_ok; + + + // Distribute the request from req_gen + + assign r2i_req[0] = (r2b_ba == 2'b00) ? r2b_req & ~rank_fifo_full : 1'b0; + assign r2i_req[1] = (r2b_ba == 2'b01) ? r2b_req & ~rank_fifo_full : 1'b0; + assign r2i_req[2] = (r2b_ba == 2'b10) ? r2b_req & ~rank_fifo_full : 1'b0; + assign r2i_req[3] = (r2b_ba == 2'b11) ? r2b_req & ~rank_fifo_full : 1'b0; + + /****************** + Modified the Better FPGA Timing Purpose + assign b2r_ack = (r2b_ba == 2'b00) ? i2r_ack[0] : + (r2b_ba == 2'b01) ? i2r_ack[1] : + (r2b_ba == 2'b10) ? i2r_ack[2] : + (r2b_ba == 2'b11) ? i2r_ack[3] : 1'b0; + ********************/ + // Assumption: Only one Ack Will be asserted at a time. + assign b2r_ack =|i2r_ack; + + assign b2r_arb_ok = ~rank_fifo_full; + + // Put the requests from the 4 bank_fsms into a 4 deep shift + // register file. The earliest request is prioritized over the + // later requests. Also the number of requests we are allowed to + // buffer is limited by a 2 bit external input + + // Mux the req/cmd to xfr_ctl. Allow RD/WR commands from the request in + // rank0, allow only PR/ACT commands from the requests in other ranks + // If the rank_fifo is empty, send the request from the bank addressed by + // r2b_ba + + // In FPGA Mode, to improve the timing, also send the rank_ba + assign xfr_ba = (`TARGET_DESIGN == `FPGA) ? rank_ba[1:0]: + ((rank_fifo_mt) ? r2b_ba : rank_ba[1:0]); + assign xfr_ba_last = (`TARGET_DESIGN == `FPGA) ? rank_ba_last[0]: + ((rank_fifo_mt) ? sdr_req_norm_dma_last : rank_ba_last[0]); + + assign rank_req[0] = i2x_req[xfr_ba]; // each rank generates requests + + assign rank_req[1] = (rank_cnt < 3'h2) ? 1'b0 : + (rank_ba[3:2] == 2'b00) ? i2x_req[0] & ~i2x_cmd0[1] : + (rank_ba[3:2] == 2'b01) ? i2x_req[1] & ~i2x_cmd1[1] : + (rank_ba[3:2] == 2'b10) ? i2x_req[2] & ~i2x_cmd2[1] : + i2x_req[3] & ~i2x_cmd3[1]; + + assign rank_req[2] = (rank_cnt < 3'h3) ? 1'b0 : + (rank_ba[5:4] == 2'b00) ? i2x_req[0] & ~i2x_cmd0[1] : + (rank_ba[5:4] == 2'b01) ? i2x_req[1] & ~i2x_cmd1[1] : + (rank_ba[5:4] == 2'b10) ? i2x_req[2] & ~i2x_cmd2[1] : + i2x_req[3] & ~i2x_cmd3[1]; + + assign rank_req[3] = (rank_cnt < 3'h4) ? 1'b0 : + (rank_ba[7:6] == 2'b00) ? i2x_req[0] & ~i2x_cmd0[1] : + (rank_ba[7:6] == 2'b01) ? i2x_req[1] & ~i2x_cmd1[1] : + (rank_ba[7:6] == 2'b10) ? i2x_req[2] & ~i2x_cmd2[1] : + i2x_req[3] & ~i2x_cmd3[1]; + + always @ (*) begin + b2x_req = 1'b0; + b2x_ba = xfr_ba; + + if(`TARGET_DESIGN == `ASIC) begin // Support Multiple Rank request only on ASIC + if (rank_req[0]) begin + b2x_req = 1'b1; + b2x_ba = xfr_ba; + end // if (rank_req[0]) + else if (rank_req[1]) begin + b2x_req = 1'b1; + b2x_ba = rank_ba[3:2]; + end // if (rank_req[1]) + else if (rank_req[2]) begin + b2x_req = 1'b1; + b2x_ba = rank_ba[5:4]; + end // if (rank_req[2]) + else if (rank_req[3]) begin + b2x_req = 1'b1; + b2x_ba = rank_ba[7:6]; + end // if (rank_req[3]) + end else begin // If FPGA + if (rank_req[0]) begin + b2x_req = 1'b1; + end + end + end // always @ (rank_req or rank_fifo_mt or r2b_ba or rank_ba) + + assign b2x_idle = rank_fifo_mt; + assign b2x_start = i2x_start[b2x_ba]; + assign b2x_last = i2x_last[b2x_ba]; + assign b2x_wrap = i2x_wrap[b2x_ba]; + + assign b2x_addr = (b2x_ba == 2'b11) ? i2x_addr3 : + (b2x_ba == 2'b10) ? i2x_addr2 : + (b2x_ba == 2'b01) ? i2x_addr1 : i2x_addr0; + + assign b2x_len = (b2x_ba == 2'b11) ? i2x_len3 : + (b2x_ba == 2'b10) ? i2x_len2 : + (b2x_ba == 2'b01) ? i2x_len1 : i2x_len0; + + assign b2x_cmd = (b2x_ba == 2'b11) ? i2x_cmd3 : + (b2x_ba == 2'b10) ? i2x_cmd2 : + (b2x_ba == 2'b01) ? i2x_cmd1 : i2x_cmd0; + + assign b2x_id = (b2x_ba == 2'b11) ? i2x_id3 : + (b2x_ba == 2'b10) ? i2x_id2 : + (b2x_ba == 2'b01) ? i2x_id1 : i2x_id0; + + assign x2i_ack[0] = (b2x_ba == 2'b00) ? x2b_ack : 1'b0; + assign x2i_ack[1] = (b2x_ba == 2'b01) ? x2b_ack : 1'b0; + assign x2i_ack[2] = (b2x_ba == 2'b10) ? x2b_ack : 1'b0; + assign x2i_ack[3] = (b2x_ba == 2'b11) ? x2b_ack : 1'b0; + + // Rank Fifo + // On a write write to selected rank and increment rank_cnt + // On a read shift rank_ba right 2 bits and decrement rank_cnt + + assign rank_fifo_wr = b2r_ack; + + assign rank_fifo_rd = b2x_req & b2x_cmd[1] & x2b_ack; + + assign rank_wr_sel[0] = (rank_cnt == 3'h0) ? rank_fifo_wr : + (rank_cnt == 3'h1) ? rank_fifo_wr & rank_fifo_rd : + 1'b0; + + assign rank_wr_sel[1] = (rank_cnt == 3'h1) ? rank_fifo_wr & ~rank_fifo_rd : + (rank_cnt == 3'h2) ? rank_fifo_wr & rank_fifo_rd : + 1'b0; + + assign rank_wr_sel[2] = (rank_cnt == 3'h2) ? rank_fifo_wr & ~rank_fifo_rd : + (rank_cnt == 3'h3) ? rank_fifo_wr & rank_fifo_rd : + 1'b0; + + assign rank_wr_sel[3] = (rank_cnt == 3'h3) ? rank_fifo_wr & ~rank_fifo_rd : + (rank_cnt == 3'h4) ? rank_fifo_wr & rank_fifo_rd : + 1'b0; + + assign rank_fifo_mt = (rank_cnt == 3'b0) ? 1'b1 : 1'b0; + + assign rank_fifo_full = (rank_cnt[2]) ? 1'b1 : + (rank_cnt[1:0] == a2b_req_depth) ? 1'b1 : 1'b0; + + // FIFO Check + + // synopsys translate_off + + always @ (posedge clk) begin + + if (~rank_fifo_wr & rank_fifo_rd && rank_cnt == 3'h0) begin + $display ("%t: %m: ERROR!!! Read from empty Fifo", $time); + $stop; + end // if (rank_fifo_rd && rank_cnt == 3'h0) + + if (rank_fifo_wr && ~rank_fifo_rd && rank_cnt == 3'h4) begin + $display ("%t: %m: ERROR!!! Write to full Fifo", $time); + $stop; + end // if (rank_fifo_wr && ~rank_fifo_rd && rank_cnt == 3'h4) + + end // always @ (posedge clk) + + // synopsys translate_on + + always @ (posedge clk) + if (~reset_n) begin + rank_cnt <= 3'b0; + rank_ba <= 8'b0; + rank_ba_last <= 4'b0; + + end // if (~reset_n) + else begin + + rank_cnt <= (rank_fifo_wr & ~rank_fifo_rd) ? rank_cnt + 3'b1 : + (~rank_fifo_wr & rank_fifo_rd) ? rank_cnt - 3'b1 : + rank_cnt; + + rank_ba[1:0] <= (rank_wr_sel[0]) ? r2b_ba : + (rank_fifo_rd) ? rank_ba[3:2] : rank_ba[1:0]; + + rank_ba[3:2] <= (rank_wr_sel[1]) ? r2b_ba : + (rank_fifo_rd) ? rank_ba[5:4] : rank_ba[3:2]; + + rank_ba[5:4] <= (rank_wr_sel[2]) ? r2b_ba : + (rank_fifo_rd) ? rank_ba[7:6] : rank_ba[5:4]; + + rank_ba[7:6] <= (rank_wr_sel[3]) ? r2b_ba : + (rank_fifo_rd) ? 2'b00 : rank_ba[7:6]; + + if(`TARGET_DESIGN == `ASIC) begin // This Logic is implemented for ASIC Only + // Note: Currenly top-level does not generate the + // sdr_req_norm_dma_last signal and can be tied zero at top-level + rank_ba_last[0] <= (rank_wr_sel[0]) ? sdr_req_norm_dma_last : + (rank_fifo_rd) ? rank_ba_last[1] : rank_ba_last[0]; + + rank_ba_last[1] <= (rank_wr_sel[1]) ? sdr_req_norm_dma_last : + (rank_fifo_rd) ? rank_ba_last[2] : rank_ba_last[1]; + + rank_ba_last[2] <= (rank_wr_sel[2]) ? sdr_req_norm_dma_last : + (rank_fifo_rd) ? rank_ba_last[3] : rank_ba_last[2]; + + rank_ba_last[3] <= (rank_wr_sel[3]) ? sdr_req_norm_dma_last : + (rank_fifo_rd) ? 1'b0 : rank_ba_last[3]; + end + + end // else: !if(~reset_n) + + assign xfr_ok[0] = (xfr_ba == 2'b00) ? 1'b1 : 1'b0; + assign xfr_ok[1] = (xfr_ba == 2'b01) ? 1'b1 : 1'b0; + assign xfr_ok[2] = (xfr_ba == 2'b10) ? 1'b1 : 1'b0; + assign xfr_ok[3] = (xfr_ba == 2'b11) ? 1'b1 : 1'b0; + + /****************************************************************************/ + // Instantiate Bank Ctl FSM 0 + + sdrc_bank_fsm bank0_fsm (.clk (clk), + .reset_n (reset_n), + + /* Req from req_gen */ + .r2b_req (r2i_req[0]), + .r2b_req_id (r2b_req_id), + .r2b_start (r2b_start), + .r2b_last (r2b_last), + .r2b_wrap (r2b_wrap), + .r2b_raddr (r2b_raddr), + .r2b_caddr (r2b_caddr), + .r2b_len (r2b_len), + .r2b_write (r2b_write), + .b2r_ack (i2r_ack[0]), + .sdr_dma_last(rank_ba_last[0]), + + /* Transfer request to xfr_ctl */ + .b2x_req (i2x_req[0]), + .b2x_start (i2x_start[0]), + .b2x_last (i2x_last[0]), + .b2x_wrap (i2x_wrap[0]), + .b2x_id (i2x_id0), + .b2x_addr (i2x_addr0), + .b2x_len (i2x_len0), + .b2x_cmd (i2x_cmd0), + .x2b_ack (x2i_ack[0]), + + /* Status to/from xfr_ctl */ + .tras_ok (tras_ok[0]), + .xfr_ok (xfr_ok[0]), + .x2b_refresh (x2b_refresh), + .x2b_pre_ok (x2b_pre_ok[0]), + .x2b_act_ok (x2b_act_ok), + .x2b_rdok (x2b_rdok), + .x2b_wrok (x2b_wrok), + + .bank_row(bank0_row), + + /* SDRAM Timing */ + .tras_delay (tras_delay), + .trp_delay (trp_delay), + .trcd_delay (trcd_delay)); + + /****************************************************************************/ + // Instantiate Bank Ctl FSM 1 + + sdrc_bank_fsm bank1_fsm (.clk (clk), + .reset_n (reset_n), + + /* Req from req_gen */ + .r2b_req (r2i_req[1]), + .r2b_req_id (r2b_req_id), + .r2b_start (r2b_start), + .r2b_last (r2b_last), + .r2b_wrap (r2b_wrap), + .r2b_raddr (r2b_raddr), + .r2b_caddr (r2b_caddr), + .r2b_len (r2b_len), + .r2b_write (r2b_write), + .b2r_ack (i2r_ack[1]), + .sdr_dma_last(rank_ba_last[1]), + + /* Transfer request to xfr_ctl */ + .b2x_req (i2x_req[1]), + .b2x_start (i2x_start[1]), + .b2x_last (i2x_last[1]), + .b2x_wrap (i2x_wrap[1]), + .b2x_id (i2x_id1), + .b2x_addr (i2x_addr1), + .b2x_len (i2x_len1), + .b2x_cmd (i2x_cmd1), + .x2b_ack (x2i_ack[1]), + + /* Status to/from xfr_ctl */ + .tras_ok (tras_ok[1]), + .xfr_ok (xfr_ok[1]), + .x2b_refresh (x2b_refresh), + .x2b_pre_ok (x2b_pre_ok[1]), + .x2b_act_ok (x2b_act_ok), + .x2b_rdok (x2b_rdok), + .x2b_wrok (x2b_wrok), + + .bank_row(bank1_row), + + /* SDRAM Timing */ + .tras_delay (tras_delay), + .trp_delay (trp_delay), + .trcd_delay (trcd_delay)); + + /****************************************************************************/ + // Instantiate Bank Ctl FSM 2 + + sdrc_bank_fsm bank2_fsm (.clk (clk), + .reset_n (reset_n), + + /* Req from req_gen */ + .r2b_req (r2i_req[2]), + .r2b_req_id (r2b_req_id), + .r2b_start (r2b_start), + .r2b_last (r2b_last), + .r2b_wrap (r2b_wrap), + .r2b_raddr (r2b_raddr), + .r2b_caddr (r2b_caddr), + .r2b_len (r2b_len), + .r2b_write (r2b_write), + .b2r_ack (i2r_ack[2]), + .sdr_dma_last(rank_ba_last[2]), + + /* Transfer request to xfr_ctl */ + .b2x_req (i2x_req[2]), + .b2x_start (i2x_start[2]), + .b2x_last (i2x_last[2]), + .b2x_wrap (i2x_wrap[2]), + .b2x_id (i2x_id2), + .b2x_addr (i2x_addr2), + .b2x_len (i2x_len2), + .b2x_cmd (i2x_cmd2), + .x2b_ack (x2i_ack[2]), + + /* Status to/from xfr_ctl */ + .tras_ok (tras_ok[2]), + .xfr_ok (xfr_ok[2]), + .x2b_refresh (x2b_refresh), + .x2b_pre_ok (x2b_pre_ok[2]), + .x2b_act_ok (x2b_act_ok), + .x2b_rdok (x2b_rdok), + .x2b_wrok (x2b_wrok), + + .bank_row(bank2_row), + + /* SDRAM Timing */ + .tras_delay (tras_delay), + .trp_delay (trp_delay), + .trcd_delay (trcd_delay)); + + /****************************************************************************/ + // Instantiate Bank Ctl FSM 3 + + sdrc_bank_fsm bank3_fsm (.clk (clk), + .reset_n (reset_n), + + /* Req from req_gen */ + .r2b_req (r2i_req[3]), + .r2b_req_id (r2b_req_id), + .r2b_start (r2b_start), + .r2b_last (r2b_last), + .r2b_wrap (r2b_wrap), + .r2b_raddr (r2b_raddr), + .r2b_caddr (r2b_caddr), + .r2b_len (r2b_len), + .r2b_write (r2b_write), + .b2r_ack (i2r_ack[3]), + .sdr_dma_last(rank_ba_last[3]), + + /* Transfer request to xfr_ctl */ + .b2x_req (i2x_req[3]), + .b2x_start (i2x_start[3]), + .b2x_last (i2x_last[3]), + .b2x_wrap (i2x_wrap[3]), + .b2x_id (i2x_id3), + .b2x_addr (i2x_addr3), + .b2x_len (i2x_len3), + .b2x_cmd (i2x_cmd3), + .x2b_ack (x2i_ack[3]), + + /* Status to/from xfr_ctl */ + .tras_ok (tras_ok[3]), + .xfr_ok (xfr_ok[3]), + .x2b_refresh (x2b_refresh), + .x2b_pre_ok (x2b_pre_ok[3]), + .x2b_act_ok (x2b_act_ok), + .x2b_rdok (x2b_rdok), + .x2b_wrok (x2b_wrok), + + .bank_row(bank3_row), + + /* SDRAM Timing */ + .tras_delay (tras_delay), + .trp_delay (trp_delay), + .trcd_delay (trcd_delay)); + + +/* address for current xfr, debug only */ +wire [12:0] cur_row = (xfr_bank_sel==3) ? bank3_row: + (xfr_bank_sel==2) ? bank2_row: + (xfr_bank_sel==1) ? bank1_row: bank0_row; + + + +endmodule // sdr_bank_ctl diff --git a/lib/common/Driver/SDRAM_driver/core/sdrc_bank_fsm.v b/lib/common/Driver/SDRAM_driver/core/sdrc_bank_fsm.v new file mode 100644 index 0000000..5eeb1e9 --- /dev/null +++ b/lib/common/Driver/SDRAM_driver/core/sdrc_bank_fsm.v @@ -0,0 +1,371 @@ +/********************************************************************* + + SDRAM Controller Bank Controller + + This file is part of the sdram controller project + http://www.opencores.org/cores/sdr_ctrl/ + + Description: + This module takes requests from sdrc_req_gen, checks for page hit/miss and + issues precharge/activate commands and then passes the request to sdrc_xfr_ctl. + + To Do: + nothing + + Author(s): + - Dinesh Annayya, dinesha@opencores.org + Version : 1.0 - 8th Jan 2012 + + + + Copyright (C) 2000 Authors and OPENCORES.ORG + + This source file may be used and distributed without + restriction provided that this copyright statement is not + removed from the file and that any derivative work contains + the original copyright notice and the associated disclaimer. + + This source file is free software; you can redistribute it + and/or modify it under the terms of the GNU Lesser General + Public License as published by the Free Software Foundation; + either version 2.1 of the License, or (at your option) any +later version. + + This source is distributed in the hope that it will be + useful, but WITHOUT ANY WARRANTY; without even the implied + warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + PURPOSE. See the GNU Lesser General Public License for more + details. + + You should have received a copy of the GNU Lesser General + Public License along with this source; if not, download it + from http://www.opencores.org/lgpl.shtml + +*******************************************************************/ + + +`include "sdrc_define.v" + +module sdrc_bank_fsm (clk, + reset_n, + + /* Req from req_gen */ + r2b_req, // request + r2b_req_id, // ID + r2b_start, // First chunk of burst + r2b_last, // Last chunk of burst + r2b_wrap, + r2b_raddr, // row address + r2b_caddr, // col address + r2b_len, // length + r2b_write, // write request + b2r_ack, + sdr_dma_last, + + /* Transfer request to xfr_ctl */ + b2x_req, // Request to xfr_ctl + b2x_start, // first chunk of transfer + b2x_last, // last chunk of transfer + b2x_wrap, + b2x_id, // Transfer ID + b2x_addr, // row/col address + b2x_len, // transfer length + b2x_cmd, // transfer command + x2b_ack, // command accepted + + /* Status to/from xfr_ctl */ + tras_ok, // TRAS OK for this bank + xfr_ok, + x2b_refresh, // We did a refresh + x2b_pre_ok, // OK to do a precharge (per bank) + x2b_act_ok, // OK to do an activate + x2b_rdok, // OK to do a read + x2b_wrok, // OK to do a write + + /* current xfr row address of the bank */ + bank_row, + + /* SDRAM Timing */ + tras_delay, // Active to precharge delay + trp_delay, // Precharge to active delay + trcd_delay); // Active to R/W delay + + +parameter SDR_DW = 16; // SDR Data Width +parameter SDR_BW = 2; // SDR Byte Width + + input clk, reset_n; + + /* Req from bank_ctl */ + input r2b_req, r2b_start, r2b_last, + r2b_write, r2b_wrap; + input [`SDR_REQ_ID_W-1:0] r2b_req_id; + input [12:0] r2b_raddr; + input [12:0] r2b_caddr; + input [`REQ_BW-1:0] r2b_len; + output b2r_ack; + input sdr_dma_last; + + /* Req to xfr_ctl */ + output b2x_req, b2x_start, b2x_last, + tras_ok, b2x_wrap; + output [`SDR_REQ_ID_W-1:0] b2x_id; + output [12:0] b2x_addr; + output [`REQ_BW-1:0] b2x_len; + output [1:0] b2x_cmd; + input x2b_ack; + + /* Status from xfr_ctl */ + input x2b_refresh, x2b_act_ok, x2b_rdok, + x2b_wrok, x2b_pre_ok, xfr_ok; + + input [3:0] tras_delay, trp_delay, trcd_delay; + + output [12:0] bank_row; + + /****************************************************************************/ + // Internal Nets + + `define BANK_IDLE 3'b000 + `define BANK_PRE 3'b001 + `define BANK_ACT 3'b010 + `define BANK_XFR 3'b011 + `define BANK_DMA_LAST_PRE 3'b100 + + reg [2:0] bank_st, next_bank_st; + wire b2x_start, b2x_last; + reg l_start, l_last; + reg b2x_req, b2r_ack; + wire [`SDR_REQ_ID_W-1:0] b2x_id; + reg [`SDR_REQ_ID_W-1:0] l_id; + reg [12:0] b2x_addr; + reg [`REQ_BW-1:0] l_len; + wire [`REQ_BW-1:0] b2x_len; + reg [1:0] b2x_cmd_t; + reg bank_valid; + reg [12:0] bank_row; + reg [3:0] tras_cntr, timer0; + reg l_wrap, l_write; + wire b2x_wrap; + reg [12:0] l_raddr; + reg [12:0] l_caddr; + reg l_sdr_dma_last; + reg bank_prech_page_closed; + + wire tras_ok_internal, tras_ok, activate_bank; + + wire page_hit, timer0_tc_t, ld_trp, ld_trcd; + + /*** Timing Break Logic Added for FPGA - Start ****/ + reg x2b_wrok_r, xfr_ok_r , x2b_rdok_r; + reg [1:0] b2x_cmd_r,timer0_tc_r,tras_ok_r,x2b_pre_ok_r,x2b_act_ok_r; + always @ (posedge clk) + if (~reset_n) begin + x2b_wrok_r <= 1'b0; + xfr_ok_r <= 1'b0; + x2b_rdok_r <= 1'b0; + b2x_cmd_r <= 2'b0; + timer0_tc_r <= 1'b0; + tras_ok_r <= 1'b0; + x2b_pre_ok_r <= 1'b0; + x2b_act_ok_r <= 1'b0; + end + else begin + x2b_wrok_r <= x2b_wrok; + xfr_ok_r <= xfr_ok; + x2b_rdok_r <= x2b_rdok; + b2x_cmd_r <= b2x_cmd_t; + timer0_tc_r <= (ld_trp | ld_trcd) ? 1'b0 : timer0_tc_t; + tras_ok_r <= tras_ok_internal; + x2b_pre_ok_r <= x2b_pre_ok; + x2b_act_ok_r <= x2b_act_ok; + end + + wire x2b_wrok_t = (`TARGET_DESIGN == `FPGA) ? x2b_wrok_r : x2b_wrok; + wire xfr_ok_t = (`TARGET_DESIGN == `FPGA) ? xfr_ok_r : xfr_ok; + wire x2b_rdok_t = (`TARGET_DESIGN == `FPGA) ? x2b_rdok_r : x2b_rdok; + wire [1:0] b2x_cmd = (`TARGET_DESIGN == `FPGA) ? b2x_cmd_r : b2x_cmd_t; + wire timer0_tc = (`TARGET_DESIGN == `FPGA) ? timer0_tc_r : timer0_tc_t; + assign tras_ok = (`TARGET_DESIGN == `FPGA) ? tras_ok_r : tras_ok_internal; + wire x2b_pre_ok_t = (`TARGET_DESIGN == `FPGA) ? x2b_pre_ok_r : x2b_pre_ok; + wire x2b_act_ok_t = (`TARGET_DESIGN == `FPGA) ? x2b_act_ok_r : x2b_act_ok; + + /*** Timing Break Logic Added for FPGA - End****/ + + + always @ (posedge clk) + if (~reset_n) begin + bank_valid <= 1'b0; + tras_cntr <= 4'b0; + timer0 <= 4'b0; + bank_st <= `BANK_IDLE; + end // if (~reset_n) + + else begin + + bank_valid <= (x2b_refresh || bank_prech_page_closed) ? 1'b0 : // force the bank status to be invalid + (activate_bank) ? 1'b1 : bank_valid; + + tras_cntr <= (activate_bank) ? tras_delay : + (~tras_ok_internal) ? tras_cntr - 4'b1 : 4'b0; + + timer0 <= (ld_trp) ? trp_delay : + (ld_trcd) ? trcd_delay : + (timer0 != 'h0) ? timer0 - 4'b1 : timer0; + + bank_st <= next_bank_st; + + end // else: !if(~reset_n) + + always @ (posedge clk) begin + + bank_row <= (bank_st == `BANK_ACT) ? b2x_addr : bank_row; + + if (~reset_n) begin + l_start <= 1'b0; + l_last <= 1'b0; + l_id <= 1'b0; + l_len <= 1'b0; + l_wrap <= 1'b0; + l_write <= 1'b0; + l_raddr <= 1'b0; + l_caddr <= 1'b0; + l_sdr_dma_last <= 1'b0; + end + else begin + if (b2r_ack) begin + l_start <= r2b_start; + l_last <= r2b_last; + l_id <= r2b_req_id; + l_len <= r2b_len; + l_wrap <= r2b_wrap; + l_write <= r2b_write; + l_raddr <= r2b_raddr; + l_caddr <= r2b_caddr; + l_sdr_dma_last <= sdr_dma_last; + end // if (b2r_ack) + end + + end // always @ (posedge clk) + + assign tras_ok_internal = ~|tras_cntr; + + assign activate_bank = (b2x_cmd == `OP_ACT) & x2b_ack; + + assign page_hit = (r2b_raddr == bank_row) ? bank_valid : 1'b0; // its a hit only if bank is valid + + assign timer0_tc_t = ~|timer0; + + assign ld_trp = (b2x_cmd == `OP_PRE) ? x2b_ack : 1'b0; + + assign ld_trcd = (b2x_cmd == `OP_ACT) ? x2b_ack : 1'b0; + + + + always @ (*) begin + + bank_prech_page_closed = 1'b0; + b2x_req = 1'b0; + b2x_cmd_t = 2'bx; + b2r_ack = 1'b0; + b2x_addr = 13'bx; + next_bank_st = bank_st; + + case (bank_st) + + `BANK_IDLE : begin + if(`TARGET_DESIGN == `FPGA) begin // To break the timing, b2x request are generated delayed + if (~r2b_req) begin + next_bank_st = `BANK_IDLE; + end // if (~r2b_req) + else if (page_hit) begin + b2r_ack = 1'b1; + b2x_cmd_t = (r2b_write) ? `OP_WR : `OP_RD; + next_bank_st = `BANK_XFR; + end // if (page_hit) + else begin // page_miss + b2r_ack = 1'b1; + b2x_cmd_t = `OP_PRE; + next_bank_st = `BANK_PRE; // bank was precharged on l_sdr_dma_last + end // else: !if(page_hit) + end else begin // ASIC + if (~r2b_req) begin + bank_prech_page_closed = 1'b0; + b2x_req = 1'b0; + b2x_cmd_t = 2'bx; + b2r_ack = 1'b0; + b2x_addr = 13'bx; + next_bank_st = `BANK_IDLE; + end // if (~r2b_req) + else if (page_hit) begin + b2x_req = (r2b_write) ? x2b_wrok_t & xfr_ok_t : + x2b_rdok_t & xfr_ok_t; + b2x_cmd_t = (r2b_write) ? `OP_WR : `OP_RD; + b2r_ack = 1'b1; + b2x_addr = r2b_caddr; + next_bank_st = (x2b_ack) ? `BANK_IDLE : `BANK_XFR; // in case of hit, stay here till xfr sm acks + end // if (page_hit) + else begin // page_miss + b2x_req = tras_ok & x2b_pre_ok_t; + b2x_cmd_t = `OP_PRE; + b2r_ack = 1'b1; + b2x_addr = r2b_raddr & 13'hBFF; // Dont want to pre all banks! + next_bank_st = (l_sdr_dma_last) ? `BANK_PRE : (x2b_ack) ? `BANK_ACT : `BANK_PRE; // bank was precharged on l_sdr_dma_last + end // else: !if(page_hit) + end + end // case: `BANK_IDLE + + `BANK_PRE : begin + b2x_req = tras_ok & x2b_pre_ok_t; + b2x_cmd_t = `OP_PRE; + b2r_ack = 1'b0; + b2x_addr = l_raddr & 13'hBFF; // Dont want to pre all banks! + bank_prech_page_closed = 1'b0; + next_bank_st = (x2b_ack) ? `BANK_ACT : `BANK_PRE; + end // case: `BANK_PRE + + `BANK_ACT : begin + b2x_req = timer0_tc & x2b_act_ok_t; + b2x_cmd_t = `OP_ACT; + b2r_ack = 1'b0; + b2x_addr = l_raddr; + bank_prech_page_closed = 1'b0; + next_bank_st = (x2b_ack) ? `BANK_XFR : `BANK_ACT; + end // case: `BANK_ACT + + `BANK_XFR : begin + b2x_req = (l_write) ? timer0_tc & x2b_wrok_t & xfr_ok_t : + timer0_tc & x2b_rdok_t & xfr_ok_t; + b2x_cmd_t = (l_write) ? `OP_WR : `OP_RD; + b2r_ack = 1'b0; + b2x_addr = l_caddr; + bank_prech_page_closed = 1'b0; + next_bank_st = (x2b_refresh) ? `BANK_ACT : + (x2b_ack & l_sdr_dma_last) ? `BANK_DMA_LAST_PRE : + (x2b_ack) ? `BANK_IDLE : `BANK_XFR; + end // case: `BANK_XFR + + `BANK_DMA_LAST_PRE : begin + b2x_req = tras_ok & x2b_pre_ok_t; + b2x_cmd_t = `OP_PRE; + b2r_ack = 1'b0; + b2x_addr = l_raddr & 13'hBFF; // Dont want to pre all banks! + bank_prech_page_closed = 1'b1; + next_bank_st = (x2b_ack) ? `BANK_IDLE : `BANK_DMA_LAST_PRE; + end // case: `BANK_DMA_LAST_PRE + + endcase // case(bank_st) + + end // always @ (bank_st or ...) + + assign b2x_start = (bank_st == `BANK_IDLE) ? r2b_start : l_start; + + assign b2x_last = (bank_st == `BANK_IDLE) ? r2b_last : l_last; + + assign b2x_id = (bank_st == `BANK_IDLE) ? r2b_req_id : l_id; + + assign b2x_len = (bank_st == `BANK_IDLE) ? r2b_len : l_len; + + assign b2x_wrap = (bank_st == `BANK_IDLE) ? r2b_wrap : l_wrap; + +endmodule // sdr_bank_fsm diff --git a/lib/common/Driver/SDRAM_driver/core/sdrc_bs_convert.v b/lib/common/Driver/SDRAM_driver/core/sdrc_bs_convert.v new file mode 100644 index 0000000..025e74c --- /dev/null +++ b/lib/common/Driver/SDRAM_driver/core/sdrc_bs_convert.v @@ -0,0 +1,228 @@ +/********************************************************************* + + SDRAM Controller buswidth converter + + This file is part of the sdram controller project + http://www.opencores.org/cores/sdr_ctrl/ + + Description: SDRAM Controller Buswidth converter + + This module does write/read data transalation between + application data to SDRAM bus width + + To Do: + nothing + + Author(s): + - Dinesh Annayya, dinesha@opencores.org + Version : 0.0 - 8th Jan 2012 - Initial structure + 0.2 - 2nd Feb 2012 + Improved the command pipe structure to accept up-to 4 command of different bank. + 0.3 - 6th Feb 2012 + Bug fix on read valid generation + + + + Copyright (C) 2000 Authors and OPENCORES.ORG + + This source file may be used and distributed without + restriction provided that this copyright statement is not + removed from the file and that any derivative work contains + the original copyright notice and the associated disclaimer. + + This source file is free software; you can redistribute it + and/or modify it under the terms of the GNU Lesser General + Public License as published by the Free Software Foundation; + either version 2.1 of the License, or (at your option) any +later version. + + This source is distributed in the hope that it will be + useful, but WITHOUT ANY WARRANTY; without even the implied + warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + PURPOSE. See the GNU Lesser General Public License for more + details. + + You should have received a copy of the GNU Lesser General + Public License along with this source; if not, download it + from http://www.opencores.org/lgpl.shtml + +*******************************************************************/ + +`include "sdrc_define.v" +module sdrc_bs_convert ( + clk , + reset_n , + sdr_width , + + /* Control Signal from xfr ctrl */ + x2a_rdstart , + x2a_wrstart , + x2a_rdlast , + x2a_wrlast , + x2a_rddt , + x2a_rdok , + a2x_wrdt , + a2x_wren_n , + x2a_wrnext , + + /* Control Signal from/to to application i/f */ + app_wr_data , + app_wr_en_n , + app_wr_next , + app_last_wr , + app_rd_data , + app_rd_valid , + app_last_rd + ); + + +parameter APP_AW = 30; // Application Address Width +parameter APP_DW = 32; // Application Data Width +parameter APP_BW = 4; // Application Byte Width + +parameter SDR_DW = 16; // SDR Data Width +parameter SDR_BW = 2; // SDR Byte Width + +input clk ; +input reset_n ; +input [1:0] sdr_width ; // 2'b00 - 32 Bit SDR, 2'b01 - 16 Bit SDR, 2'b1x - 8 Bit + +/* Control Signal from xfr ctrl Read Transaction*/ +input x2a_rdstart ; // read start indication +input x2a_rdlast ; // read last burst access +input [SDR_DW-1:0] x2a_rddt ; +input x2a_rdok ; + +/* Control Signal from xfr ctrl Write Transaction*/ +input x2a_wrstart ; // writ start indication +input x2a_wrlast ; // write last transfer +input x2a_wrnext ; +output [SDR_DW-1:0] a2x_wrdt ; +output [SDR_BW-1:0] a2x_wren_n ; + +// Application Write Transaction +input [APP_DW-1:0] app_wr_data ; +input [APP_BW-1:0] app_wr_en_n ; +output app_wr_next ; +output app_last_wr ; // Indicate last Write Transfer for a given burst size + +// Application Read Transaction +output [APP_DW-1:0] app_rd_data ; +output app_rd_valid ; +output app_last_rd ; // Indicate last Read Transfer for a given burst size + +//---------------------------------------------- +// Local Decleration +// ---------------------------------------- + +reg [APP_DW-1:0] app_rd_data ; +reg app_rd_valid ; +reg [SDR_DW-1:0] a2x_wrdt ; +reg [SDR_BW-1:0] a2x_wren_n ; +reg app_wr_next ; + +reg [23:0] saved_rd_data ; +reg [1:0] rd_xfr_count ; +reg [1:0] wr_xfr_count ; + + +assign app_last_wr = x2a_wrlast; +assign app_last_rd = x2a_rdlast; + +always @(*) begin + if(sdr_width == 2'b00) // 32 Bit SDR Mode + begin + a2x_wrdt = app_wr_data; + a2x_wren_n = app_wr_en_n; + app_wr_next = x2a_wrnext; + app_rd_data = x2a_rddt; + app_rd_valid = x2a_rdok; + end + else if(sdr_width == 2'b01) // 16 Bit SDR Mode + begin + // Changed the address and length to match the 16 bit SDR Mode + app_wr_next = (x2a_wrnext & wr_xfr_count[0]); + app_rd_valid = (x2a_rdok & rd_xfr_count[0]); + if(wr_xfr_count[0] == 1'b1) + begin + a2x_wren_n = app_wr_en_n[3:2]; + a2x_wrdt = app_wr_data[31:16]; + end + else + begin + a2x_wren_n = app_wr_en_n[1:0]; + a2x_wrdt = app_wr_data[15:0]; + end + + app_rd_data = {x2a_rddt,saved_rd_data[15:0]}; + end else // 8 Bit SDR Mode + begin + // Changed the address and length to match the 16 bit SDR Mode + app_wr_next = (x2a_wrnext & (wr_xfr_count[1:0]== 2'b11)); + app_rd_valid = (x2a_rdok & (rd_xfr_count[1:0]== 2'b11)); + if(wr_xfr_count[1:0] == 2'b11) + begin + a2x_wren_n = app_wr_en_n[3]; + a2x_wrdt = app_wr_data[31:24]; + end + else if(wr_xfr_count[1:0] == 2'b10) + begin + a2x_wren_n = app_wr_en_n[2]; + a2x_wrdt = app_wr_data[23:16]; + end + else if(wr_xfr_count[1:0] == 2'b01) + begin + a2x_wren_n = app_wr_en_n[1]; + a2x_wrdt = app_wr_data[15:8]; + end + else begin + a2x_wren_n = app_wr_en_n[0]; + a2x_wrdt = app_wr_data[7:0]; + end + + app_rd_data = {x2a_rddt,saved_rd_data[23:0]}; + end + end + + + +always @(posedge clk) + begin + if(!reset_n) + begin + rd_xfr_count <= 8'b0; + wr_xfr_count <= 8'b0; + saved_rd_data <= 24'h0; + end + else begin + + // During Write Phase + if(x2a_wrlast) begin + wr_xfr_count <= 0; + end + else if(x2a_wrnext) begin + wr_xfr_count <= wr_xfr_count + 1'b1; + end + + // During Read Phase + if(x2a_rdlast) begin + rd_xfr_count <= 0; + end + else if(x2a_rdok) begin + rd_xfr_count <= rd_xfr_count + 1'b1; + end + + // Save Previous Data + if(x2a_rdok) begin + if(sdr_width == 2'b01) // 16 Bit SDR Mode + saved_rd_data[15:0] <= x2a_rddt; + else begin// 8 bit SDR Mode - + if(rd_xfr_count[1:0] == 2'b00) saved_rd_data[7:0] <= x2a_rddt[7:0]; + else if(rd_xfr_count[1:0] == 2'b01) saved_rd_data[15:8] <= x2a_rddt[7:0]; + else if(rd_xfr_count[1:0] == 2'b10) saved_rd_data[23:16] <= x2a_rddt[7:0]; + end + end + end +end + +endmodule // sdr_bs_convert diff --git a/lib/common/Driver/SDRAM_driver/core/sdrc_core.v b/lib/common/Driver/SDRAM_driver/core/sdrc_core.v new file mode 100644 index 0000000..b9eacde --- /dev/null +++ b/lib/common/Driver/SDRAM_driver/core/sdrc_core.v @@ -0,0 +1,477 @@ +/********************************************************************* + + SDRAM Controller Core File + + This file is part of the sdram controller project + http://www.opencores.org/cores/sdr_ctrl/ + + Description: SDRAM Controller Core Module + 2 types of SDRAMs are supported, 1Mx16 2 bank, or 4Mx16 4 bank. + This block integrate following sub modules + + sdrc_bs_convert + convert the system side 32 bit into equvailent 8/16/32 SDR format + sdrc_req_gen + This module takes requests from the app, chops them to burst booundaries + if wrap=0, decodes the bank and passe the request to bank_ctl + sdrc_xfr_ctl + This module takes requests from sdr_bank_ctl, runs the transfer and + controls data flow to/from the app. At the end of the transfer it issues a + burst terminate if not at the end of a burst and another command to this + bank is not available. + + sdrc_bank_ctl + This module takes requests from sdr_req_gen, checks for page hit/miss and + issues precharge/activate commands and then passes the request to + sdr_xfr_ctl. + + + Assumption: SDRAM Pads should be placed near to this module. else + user should add a FF near the pads + + To Do: + nothing + + Author(s): + - Dinesh Annayya, dinesha@opencores.org + Version : 0.0 - 8th Jan 2012 + Initial version with 16/32 Bit SDRAM Support + : 0.1 - 24th Jan 2012 + 8 Bit SDRAM Support is added + 0.2 - 2nd Feb 2012 + Improved the command pipe structure to accept up-to + 4 command of different bank. + 0.3 - 7th Feb 2012 + Bug fix for parameter defination for request length has changed from 9 to 12 + 0.4 - 26th April 2013 + SDRAM Address Bit is Extended by 12 bit to 13 bit to support higher SDRAM + + + Copyright (C) 2000 Authors and OPENCORES.ORG + + This source file may be used and distributed without + restriction provided that this copyright statement is not + removed from the file and that any derivative work contains + the original copyright notice and the associated disclaimer. + + This source file is free software; you can redistribute it + and/or modify it under the terms of the GNU Lesser General + Public License as published by the Free Software Foundation; + either version 2.1 of the License, or (at your option) any +later version. + + This source is distributed in the hope that it will be + useful, but WITHOUT ANY WARRANTY; without even the implied + warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + PURPOSE. See the GNU Lesser General Public License for more + details. + + You should have received a copy of the GNU Lesser General + Public License along with this source; if not, download it + from http://www.opencores.org/lgpl.shtml + +*******************************************************************/ + + +`include "sdrc_define.v" +module sdrc_core + ( + clk, + pad_clk, + reset_n, + sdr_width, + cfg_colbits, + + /* Request from app */ + app_req, // Transfer Request + app_req_addr, // SDRAM Address + app_req_len, // Burst Length (in 16 bit words) + app_req_wrap, // Wrap mode request (xfr_len = 4) + app_req_wr_n, // 0 => Write request, 1 => read req + app_req_ack, // Request has been accepted + cfg_req_depth, //how many req. buffer should hold + + app_wr_data, + app_wr_en_n, + app_last_wr, + + app_rd_data, + app_rd_valid, + app_last_rd, + app_wr_next_req, + sdr_init_done, + app_req_dma_last, + + /* Interface to SDRAMs */ + sdr_cs_n, + sdr_cke, + sdr_ras_n, + sdr_cas_n, + sdr_we_n, + sdr_dqm, + sdr_ba, + sdr_addr, + pad_sdr_din, + sdr_dout, + sdr_den_n, + + /* Parameters */ + cfg_sdr_en, + cfg_sdr_mode_reg, + cfg_sdr_tras_d, + cfg_sdr_trp_d, + cfg_sdr_trcd_d, + cfg_sdr_cas, + cfg_sdr_trcar_d, + cfg_sdr_twr_d, + cfg_sdr_rfsh, + cfg_sdr_rfmax); + +parameter APP_AW = 26; // Application Address Width +parameter APP_DW = 32; // Application Data Width +parameter APP_BW = 4; // Application Byte Width +parameter APP_RW = 9; // Application Request Width + +parameter SDR_DW = 16; // SDR Data Width +parameter SDR_BW = 2; // SDR Byte Width + + +//----------------------------------------------- +// Global Variable +// ---------------------------------------------- +input clk ; // SDRAM Clock +input pad_clk ; // SDRAM Clock from Pad, used for registering Read Data +input reset_n ; // Reset Signal +input [1:0] sdr_width ; // 2'b00 - 32 Bit SDR, 2'b01 - 16 Bit SDR, 2'b1x - 8 Bit +input [1:0] cfg_colbits ; // 2'b00 - 8 Bit column address, 2'b01 - 9 Bit, 10 - 10 bit, 11 - 11Bits + + +//------------------------------------------------ +// Request from app +//------------------------------------------------ +input app_req ; // Application Request +input [APP_AW-1:0] app_req_addr ; // Address +input app_req_wr_n ; // 0 - Write, 1 - Read +input app_req_wrap ; // Address Wrap +output app_req_ack ; // Application Request Ack + +input [APP_DW-1:0] app_wr_data ; // Write Data +output app_wr_next_req ; // Next Write Data Request +input [APP_BW-1:0] app_wr_en_n ; // Byte wise Write Enable +output app_last_wr ; // Last Write trannsfer of a given Burst +output [APP_DW-1:0] app_rd_data ; // Read Data +output app_rd_valid ; // Read Valid +output app_last_rd ; // Last Read Transfer of a given Burst + +//------------------------------------------------ +// Interface to SDRAMs +//------------------------------------------------ +output sdr_cke ; // SDRAM CKE +output sdr_cs_n ; // SDRAM Chip Select +output sdr_ras_n ; // SDRAM ras +output sdr_cas_n ; // SDRAM cas +output sdr_we_n ; // SDRAM write enable +output [SDR_BW-1:0] sdr_dqm ; // SDRAM Data Mask +output [1:0] sdr_ba ; // SDRAM Bank Enable +output [12:0] sdr_addr ; // SDRAM Address +input [SDR_DW-1:0] pad_sdr_din ; // SDRA Data Input +output [SDR_DW-1:0] sdr_dout ; // SDRAM Data Output +output [SDR_BW-1:0] sdr_den_n ; // SDRAM Data Output enable + +//------------------------------------------------ +// Configuration Parameter +//------------------------------------------------ +output sdr_init_done ; // Indicate SDRAM Initialisation Done +input [3:0] cfg_sdr_tras_d ; // Active to precharge delay +input [3:0] cfg_sdr_trp_d ; // Precharge to active delay +input [3:0] cfg_sdr_trcd_d ; // Active to R/W delay +input cfg_sdr_en ; // Enable SDRAM controller +input [1:0] cfg_req_depth ; // Maximum Request accepted by SDRAM controller +input [APP_RW-1:0] app_req_len ; // Application Burst Request length in 32 bit +input [12:0] cfg_sdr_mode_reg ; +input [2:0] cfg_sdr_cas ; // SDRAM CAS Latency +input [3:0] cfg_sdr_trcar_d ; // Auto-refresh period +input [3:0] cfg_sdr_twr_d ; // Write recovery delay +input [`SDR_RFSH_TIMER_W-1 : 0] cfg_sdr_rfsh; +input [`SDR_RFSH_ROW_CNT_W -1 : 0] cfg_sdr_rfmax; +input app_req_dma_last; // this signal should close the bank + +/****************************************************************************/ +// Internal Nets + +// SDR_REQ_GEN +wire [`SDR_REQ_ID_W-1:0]r2b_req_id; +wire [1:0] r2b_ba; +wire [12:0] r2b_raddr; +wire [12:0] r2b_caddr; +wire [`REQ_BW-1:0] r2b_len; + +// SDR BANK CTL +wire [`SDR_REQ_ID_W-1:0]b2x_id; +wire [1:0] b2x_ba; +wire [12:0] b2x_addr; +wire [`REQ_BW-1:0] b2x_len; +wire [1:0] b2x_cmd; + +// SDR_XFR_CTL +wire [3:0] x2b_pre_ok; +wire [`SDR_REQ_ID_W-1:0]xfr_id; +wire [APP_DW-1:0] app_rd_data; +wire sdr_cs_n, sdr_cke, sdr_ras_n, sdr_cas_n, sdr_we_n; +wire [SDR_BW-1:0] sdr_dqm; +wire [1:0] sdr_ba; +wire [12:0] sdr_addr; +wire [SDR_DW-1:0] sdr_dout; +wire [SDR_DW-1:0] sdr_dout_int; +wire [SDR_BW-1:0] sdr_den_n; +wire [SDR_BW-1:0] sdr_den_n_int; + +wire [1:0] xfr_bank_sel; + +wire [APP_AW-1:0] app_req_addr; +wire [APP_RW-1:0] app_req_len; + +wire [APP_DW-1:0] app_wr_data; +wire [SDR_DW-1:0] a2x_wrdt ; +wire [APP_BW-1:0] app_wr_en_n; +wire [SDR_BW-1:0] a2x_wren_n; + +//wire [31:0] app_rd_data; +wire [SDR_DW-1:0] x2a_rddt; + + +// synopsys translate_off + wire [3:0] sdr_cmd; + assign sdr_cmd = {sdr_cs_n, sdr_ras_n, sdr_cas_n, sdr_we_n}; +// synopsys translate_on + +assign sdr_den_n = sdr_den_n_int ; +assign sdr_dout = sdr_dout_int ; + + +// To meet the timing at read path, read data is registered w.r.t pad_sdram_clock and register back to sdram_clk +// assumption, pad_sdram_clk is synhronous and delayed clock of sdram_clk. +// register w.r.t pad sdram clk +reg [SDR_DW-1:0] pad_sdr_din1; +reg [SDR_DW-1:0] pad_sdr_din2; +always@(posedge pad_clk) begin + pad_sdr_din1 <= pad_sdr_din; +end + +always@(posedge clk) begin + pad_sdr_din2 <= pad_sdr_din1; +end + + + /****************************************************************************/ + // Instantiate sdr_req_gen + // This module takes requests from the app, chops them to burst booundaries + // if wrap=0, decodes the bank and passe the request to bank_ctl + +sdrc_req_gen #(.SDR_DW(SDR_DW) , .SDR_BW(SDR_BW)) u_req_gen ( + .clk (clk ), + .reset_n (reset_n ), + .cfg_colbits (cfg_colbits ), + .sdr_width (sdr_width ), + + /* Req to xfr_ctl */ + .r2x_idle (r2x_idle ), + + /* Request from app */ + .req (app_req ), + .req_id (4'b0 ), + .req_addr (app_req_addr ), + .req_len (app_req_len ), + .req_wrap (app_req_wrap ), + .req_wr_n (app_req_wr_n ), + .req_ack (app_req_ack ), + + /* Req to bank_ctl */ + .r2b_req (r2b_req ), + .r2b_req_id (r2b_req_id ), + .r2b_start (r2b_start ), + .r2b_last (r2b_last ), + .r2b_wrap (r2b_wrap ), + .r2b_ba (r2b_ba ), + .r2b_raddr (r2b_raddr ), + .r2b_caddr (r2b_caddr ), + .r2b_len (r2b_len ), + .r2b_write (r2b_write ), + .b2r_ack (b2r_ack ), + .b2r_arb_ok (b2r_arb_ok ) + ); + + /****************************************************************************/ + // Instantiate sdr_bank_ctl + // This module takes requests from sdr_req_gen, checks for page hit/miss and + // issues precharge/activate commands and then passes the request to + // sdr_xfr_ctl. + +sdrc_bank_ctl #(.SDR_DW(SDR_DW) , .SDR_BW(SDR_BW)) u_bank_ctl ( + .clk (clk ), + .reset_n (reset_n ), + .a2b_req_depth (cfg_req_depth ), + + /* Req from req_gen */ + .r2b_req (r2b_req ), + .r2b_req_id (r2b_req_id ), + .r2b_start (r2b_start ), + .r2b_last (r2b_last ), + .r2b_wrap (r2b_wrap ), + .r2b_ba (r2b_ba ), + .r2b_raddr (r2b_raddr ), + .r2b_caddr (r2b_caddr ), + .r2b_len (r2b_len ), + .r2b_write (r2b_write ), + .b2r_arb_ok (b2r_arb_ok ), + .b2r_ack (b2r_ack ), + + /* Transfer request to xfr_ctl */ + .b2x_idle (b2x_idle ), + .b2x_req (b2x_req ), + .b2x_start (b2x_start ), + .b2x_last (b2x_last ), + .b2x_wrap (b2x_wrap ), + .b2x_id (b2x_id ), + .b2x_ba (b2x_ba ), + .b2x_addr (b2x_addr ), + .b2x_len (b2x_len ), + .b2x_cmd (b2x_cmd ), + .x2b_ack (x2b_ack ), + + /* Status from xfr_ctl */ + .b2x_tras_ok (b2x_tras_ok ), + .x2b_refresh (x2b_refresh ), + .x2b_pre_ok (x2b_pre_ok ), + .x2b_act_ok (x2b_act_ok ), + .x2b_rdok (x2b_rdok ), + .x2b_wrok (x2b_wrok ), + + /* for generate cuurent xfr address msb */ + .sdr_req_norm_dma_last(app_req_dma_last), + .xfr_bank_sel (xfr_bank_sel ), + + /* SDRAM Timing */ + .tras_delay (cfg_sdr_tras_d ), + .trp_delay (cfg_sdr_trp_d ), + .trcd_delay (cfg_sdr_trcd_d ) + ); + + /****************************************************************************/ + // Instantiate sdr_xfr_ctl + // This module takes requests from sdr_bank_ctl, runs the transfer and + // controls data flow to/from the app. At the end of the transfer it issues a + // burst terminate if not at the end of a burst and another command to this + // bank is not available. + +sdrc_xfr_ctl #(.SDR_DW(SDR_DW) , .SDR_BW(SDR_BW)) u_xfr_ctl ( + .clk (clk ), + .reset_n (reset_n ), + + /* Transfer request from bank_ctl */ + .r2x_idle (r2x_idle ), + .b2x_idle (b2x_idle ), + .b2x_req (b2x_req ), + .b2x_start (b2x_start ), + .b2x_last (b2x_last ), + .b2x_wrap (b2x_wrap ), + .b2x_id (b2x_id ), + .b2x_ba (b2x_ba ), + .b2x_addr (b2x_addr ), + .b2x_len (b2x_len ), + .b2x_cmd (b2x_cmd ), + .x2b_ack (x2b_ack ), + + /* Status to bank_ctl, req_gen */ + .b2x_tras_ok (b2x_tras_ok ), + .x2b_refresh (x2b_refresh ), + .x2b_pre_ok (x2b_pre_ok ), + .x2b_act_ok (x2b_act_ok ), + .x2b_rdok (x2b_rdok ), + .x2b_wrok (x2b_wrok ), + + /* SDRAM I/O */ + .sdr_cs_n (sdr_cs_n ), + .sdr_cke (sdr_cke ), + .sdr_ras_n (sdr_ras_n ), + .sdr_cas_n (sdr_cas_n ), + .sdr_we_n (sdr_we_n ), + .sdr_dqm (sdr_dqm ), + .sdr_ba (sdr_ba ), + .sdr_addr (sdr_addr ), + .sdr_din (pad_sdr_din2 ), + .sdr_dout (sdr_dout_int ), + .sdr_den_n (sdr_den_n_int ), + /* Data Flow to the app */ + .x2a_rdstart (x2a_rdstart ), + .x2a_wrstart (x2a_wrstart ), + .x2a_id (xfr_id ), + .x2a_rdlast (x2a_rdlast ), + .x2a_wrlast (x2a_wrlast ), + .a2x_wrdt (a2x_wrdt ), + .a2x_wren_n (a2x_wren_n ), + .x2a_wrnext (x2a_wrnext ), + .x2a_rddt (x2a_rddt ), + .x2a_rdok (x2a_rdok ), + .sdr_init_done (sdr_init_done ), + + /* SDRAM Parameters */ + .sdram_enable (cfg_sdr_en ), + .sdram_mode_reg (cfg_sdr_mode_reg ), + + /* current xfr bank */ + .xfr_bank_sel (xfr_bank_sel ), + + /* SDRAM Timing */ + .cas_latency (cfg_sdr_cas ), + .trp_delay (cfg_sdr_trp_d ), + .trcar_delay (cfg_sdr_trcar_d ), + .twr_delay (cfg_sdr_twr_d ), + .rfsh_time (cfg_sdr_rfsh ), + .rfsh_rmax (cfg_sdr_rfmax ) + ); + + /****************************************************************************/ + // Instantiate sdr_bs_convert + // This model handle the bus with transaltion from application layer to + // 8/16/32 SDRAM Memory format + // During Write Phase, this block split the data as per SDRAM Width + // During Read Phase, This block does the re-packing based on SDRAM + // Width + //--------------------------------------------------------------------------- +sdrc_bs_convert #(.SDR_DW(SDR_DW) , .SDR_BW(SDR_BW)) u_bs_convert ( + .clk (clk ), + .reset_n (reset_n ), + .sdr_width (sdr_width ), + + /* Control Signal from xfr ctrl */ + // Read Interface Inputs + .x2a_rdstart (x2a_rdstart ), + .x2a_rdlast (x2a_rdlast ), + .x2a_rdok (x2a_rdok ), + // Read Interface outputs + .x2a_rddt (x2a_rddt ), + + // Write Interface, Inputs + .x2a_wrstart (x2a_wrstart ), + .x2a_wrlast (x2a_wrlast ), + .x2a_wrnext (x2a_wrnext ), + + // Write Interface, Outputs + .a2x_wrdt (a2x_wrdt ), + .a2x_wren_n (a2x_wren_n ), + + /* Control Signal from sdrc_bank_ctl */ + + /* Control Signal from/to to application i/f */ + .app_wr_data (app_wr_data ), + .app_wr_en_n (app_wr_en_n ), + .app_wr_next (app_wr_next_req ), + .app_last_wr (app_last_wr ), + .app_rd_data (app_rd_data ), + .app_rd_valid (app_rd_valid ), + .app_last_rd (app_last_rd ) + + ); + +endmodule // sdrc_core diff --git a/lib/common/Driver/SDRAM_driver/core/sdrc_define.v b/lib/common/Driver/SDRAM_driver/core/sdrc_define.v new file mode 100644 index 0000000..10c10da --- /dev/null +++ b/lib/common/Driver/SDRAM_driver/core/sdrc_define.v @@ -0,0 +1,31 @@ + +`define SDR_REQ_ID_W 4 + +`define SDR_RFSH_TIMER_W 12 +`define SDR_RFSH_ROW_CNT_W 3 + +// B2X Command + +`define OP_PRE 2'b00 +`define OP_ACT 2'b01 +`define OP_RD 2'b10 +`define OP_WR 2'b11 + +// SDRAM Commands (CS_N, RAS_N, CAS_N, WE_N) + +`define SDR_DESEL 4'b1111 +`define SDR_NOOP 4'b0111 +`define SDR_ACTIVATE 4'b0011 +`define SDR_READ 4'b0101 +`define SDR_WRITE 4'b0100 +`define SDR_BT 4'b0110 +`define SDR_PRECHARGE 4'b0010 +`define SDR_REFRESH 4'b0001 +`define SDR_MODE 4'b0000 + +`define ASIC 1'b1 +`define FPGA 1'b0 +`define TARGET_DESIGN `FPGA +// 12 bit subtractor is not feasibile for FPGA, so changed to 6 bits +`define REQ_BW (`TARGET_DESIGN == `FPGA) ? 6 : 12 // Request Width + diff --git a/lib/common/Driver/SDRAM_driver/core/sdrc_req_gen.v b/lib/common/Driver/SDRAM_driver/core/sdrc_req_gen.v new file mode 100644 index 0000000..af7b506 --- /dev/null +++ b/lib/common/Driver/SDRAM_driver/core/sdrc_req_gen.v @@ -0,0 +1,340 @@ +/********************************************************************* + + SDRAM Controller Request Generation + + This file is part of the sdram controller project + http://www.opencores.org/cores/sdr_ctrl/ + + Description: SDRAM Controller Reguest Generation + + Address Generation Based on cfg_colbits + cfg_colbits= 2'b00 + Address[7:0] - Column Address + Address[9:8] - Bank Address + Address[22:10] - Row Address + cfg_colbits= 2'b01 + Address[8:0] - Column Address + Address[10:9] - Bank Address + Address[23:11] - Row Address + cfg_colbits= 2'b10 + Address[9:0] - Column Address + Address[11:10] - Bank Address + Address[24:12] - Row Address + cfg_colbits= 2'b11 + Address[10:0] - Column Address + Address[12:11] - Bank Address + Address[25:13] - Row Address + + The SDRAMs are operated in 4 beat burst mode. + + If Wrap = 0; + If the current burst cross the page boundary, then this block split the request + into two coressponding change in address and request length + + if the current burst cross the page boundar. + This module takes requests from the memory controller, + chops them to page boundaries if wrap=0, + and passes the request to bank_ctl + + Note: With Wrap = 0, each request from Application layer will be splited into two request, + if the current burst cross the page boundary. + + To Do: + nothing + + Author(s): + - Dinesh Annayya, dinesha@opencores.org + Version : 0.0 - 8th Jan 2012 + 0.1 - 5th Feb 2012, column/row/bank address are register to improve the timing issue in FPGA synthesis + + + + Copyright (C) 2000 Authors and OPENCORES.ORG + + This source file may be used and distributed without + restriction provided that this copyright statement is not + removed from the file and that any derivative work contains + the original copyright notice and the associated disclaimer. + + This source file is free software; you can redistribute it + and/or modify it under the terms of the GNU Lesser General + Public License as published by the Free Software Foundation; + either version 2.1 of the License, or (at your option) any +later version. + + This source is distributed in the hope that it will be + useful, but WITHOUT ANY WARRANTY; without even the implied + warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + PURPOSE. See the GNU Lesser General Public License for more + details. + + You should have received a copy of the GNU Lesser General + Public License along with this source; if not, download it + from http://www.opencores.org/lgpl.shtml + +*******************************************************************/ + +`include "sdrc_define.v" + +module sdrc_req_gen (clk, + reset_n, + cfg_colbits, + sdr_width, + + /* Request from app */ + req, // Transfer Request + req_id, // ID for this transfer + req_addr, // SDRAM Address + req_len, // Burst Length (in 32 bit words) + req_wrap, // Wrap mode request (xfr_len = 4) + req_wr_n, // 0 => Write request, 1 => read req + req_ack, // Request has been accepted + + /* Req to xfr_ctl */ + r2x_idle, + + /* Req to bank_ctl */ + r2b_req, // request + r2b_req_id, // ID + r2b_start, // First chunk of burst + r2b_last, // Last chunk of burst + r2b_wrap, // Wrap Mode + r2b_ba, // bank address + r2b_raddr, // row address + r2b_caddr, // col address + r2b_len, // length + r2b_write, // write request + b2r_ack, + b2r_arb_ok + ); + +parameter APP_AW = 26; // Application Address Width +parameter APP_DW = 32; // Application Data Width +parameter APP_BW = 4; // Application Byte Width +parameter APP_RW = 9; // Application Request Width + +parameter SDR_DW = 16; // SDR Data Width +parameter SDR_BW = 2; // SDR Byte Width + + +input clk ; +input reset_n ; +input [1:0] cfg_colbits ; // 2'b00 - 8 Bit column address, 2'b01 - 9 Bit, 10 - 10 bit, 11 - 11Bits + +/* Request from app */ +input req ; // Request +input [`SDR_REQ_ID_W-1:0] req_id ; // Request ID +input [APP_AW-1:0] req_addr ; // Request Address +input [APP_RW-1:0] req_len ; // Request length +input req_wr_n ; // 0 -Write, 1 - Read +input req_wrap ; // 1 - Wrap the Address on page boundary +output req_ack ; // Request Ack + +/* Req to bank_ctl */ +output r2x_idle ; +output r2b_req ; // Request +output r2b_start ; // First Junk of the Burst Access +output r2b_last ; // Last Junk of the Burst Access +output r2b_write ; // 1 - Write, 0 - Read +output r2b_wrap ; // 1 - Wrap the Address at the page boundary. +output [`SDR_REQ_ID_W-1:0] r2b_req_id; +output [1:0] r2b_ba ; // Bank Address +output [12:0] r2b_raddr ; // Row Address +output [12:0] r2b_caddr ; // Column Address +output [`REQ_BW-1:0] r2b_len ; // Burst Length +input b2r_ack ; // Request Ack +input b2r_arb_ok ; // Bank controller fifo is not full and ready to accept the command +// +input [1:0] sdr_width; // 2'b00 - 32 Bit, 2'b01 - 16 Bit, 2'b1x - 8Bit + + + /****************************************************************************/ + // Internal Nets + + `define REQ_IDLE 2'b00 + `define REQ_ACTIVE 2'b01 + `define REQ_PAGE_WRAP 2'b10 + + reg [1:0] req_st, next_req_st; + reg r2x_idle, req_ack, r2b_req, r2b_start, + r2b_write, req_idle, req_ld, lcl_wrap; + reg [`SDR_REQ_ID_W-1:0] r2b_req_id; + reg [`REQ_BW-1:0] lcl_req_len; + + wire r2b_last, page_ovflw; + reg page_ovflw_r; + wire [`REQ_BW-1:0] r2b_len, next_req_len; + wire [12:0] max_r2b_len; + reg [12:0] max_r2b_len_r; + + reg [1:0] r2b_ba; + reg [12:0] r2b_raddr; + reg [12:0] r2b_caddr; + + reg [APP_AW-1:0] curr_sdr_addr ; + wire [APP_AW-1:0] next_sdr_addr ; + + +//-------------------------------------------------------------------- +// Generate the internal Adress and Burst length Based on sdram width +//-------------------------------------------------------------------- +reg [APP_AW:0] req_addr_int; +reg [APP_RW-1:0] req_len_int; + +always @(*) begin + if(sdr_width == 2'b00) begin // 32 Bit SDR Mode + req_addr_int = {1'b0,req_addr}; + req_len_int = req_len; + end else if(sdr_width == 2'b01) begin // 16 Bit SDR Mode + // Changed the address and length to match the 16 bit SDR Mode + req_addr_int = {req_addr,1'b0}; + req_len_int = {req_len,1'b0}; + end else begin // 8 Bit SDR Mode + // Changed the address and length to match the 16 bit SDR Mode + req_addr_int = {req_addr,2'b0}; + req_len_int = {req_len,2'b0}; + end +end + + // + // Identify the page over flow. + // Find the Maximum Burst length allowed from the selected column + // address, If the requested burst length is more than the allowed Maximum + // burst length, then we need to handle the bank cross over case and we + // need to split the reuest. + // + assign max_r2b_len = (cfg_colbits == 2'b00) ? (12'h100 - {4'b0, req_addr_int[7:0]}) : + (cfg_colbits == 2'b01) ? (12'h200 - {3'b0, req_addr_int[8:0]}) : + (cfg_colbits == 2'b10) ? (12'h400 - {2'b0, req_addr_int[9:0]}) : (12'h800 - {1'b0, req_addr_int[10:0]}); + + + // If the wrap = 0 and current application burst length is crossing the page boundary, + // then request will be split into two with corresponding change in request address and request length. + // + // If the wrap = 0 and current burst length is not crossing the page boundary, + // then request from application layer will be transparently passed on the bank control block. + + // + // if the wrap = 1, then this block will not modify the request address and length. + // The wrapping functionality will be handle by the bank control module and + // column address will rewind back as follows XX -> FF ? 00 ? 1 + // + // Note: With Wrap = 0, each request from Application layer will be spilited into two request, + // if the current burst cross the page boundary. + assign page_ovflw = ({1'b0, req_len_int} > max_r2b_len) ? ~r2b_wrap : 1'b0; + + assign r2b_len = r2b_start ? ((page_ovflw_r) ? max_r2b_len_r : lcl_req_len) : + lcl_req_len; + + assign next_req_len = lcl_req_len - r2b_len; + + assign next_sdr_addr = curr_sdr_addr + r2b_len; + + + assign r2b_wrap = lcl_wrap; + + assign r2b_last = (r2b_start & !page_ovflw_r) | (req_st == `REQ_PAGE_WRAP); +// +// +// + always @ (posedge clk) begin + + page_ovflw_r <= (req_ack) ? page_ovflw: 'h0; + + max_r2b_len_r <= (req_ack) ? max_r2b_len: 'h0; + r2b_start <= (req_ack) ? 1'b1 : + (b2r_ack) ? 1'b0 : r2b_start; + + r2b_write <= (req_ack) ? ~req_wr_n : r2b_write; + + r2b_req_id <= (req_ack) ? req_id : r2b_req_id; + + lcl_wrap <= (req_ack) ? req_wrap : lcl_wrap; + + lcl_req_len <= (req_ack) ? req_len_int : + (req_ld) ? next_req_len : lcl_req_len; + + curr_sdr_addr <= (req_ack) ? req_addr_int : + (req_ld) ? next_sdr_addr : curr_sdr_addr; + + end // always @ (posedge clk) + + always @ (*) begin + r2x_idle = 1'b0; + req_idle = 1'b0; + req_ack = 1'b0; + req_ld = 1'b0; + r2b_req = 1'b0; + next_req_st = `REQ_IDLE; + + case (req_st) // synopsys full_case parallel_case + + `REQ_IDLE : begin + r2x_idle = ~req; + req_idle = 1'b1; + req_ack = req & b2r_arb_ok; + req_ld = 1'b0; + r2b_req = 1'b0; + next_req_st = (req & b2r_arb_ok) ? `REQ_ACTIVE : `REQ_IDLE; + end // case: `REQ_IDLE + + `REQ_ACTIVE : begin + r2x_idle = 1'b0; + req_idle = 1'b0; + req_ack = 1'b0; + req_ld = b2r_ack; + r2b_req = 1'b1; // req_gen to bank_req + next_req_st = (b2r_ack ) ? ((page_ovflw_r) ? `REQ_PAGE_WRAP :`REQ_IDLE) : `REQ_ACTIVE; + end // case: `REQ_ACTIVE + `REQ_PAGE_WRAP : begin + r2x_idle = 1'b0; + req_idle = 1'b0; + req_ack = 1'b0; + req_ld = b2r_ack; + r2b_req = 1'b1; // req_gen to bank_req + next_req_st = (b2r_ack) ? `REQ_IDLE : `REQ_PAGE_WRAP; + end // case: `REQ_ACTIVE + + endcase // case(req_st) + + end // always @ (req_st or ....) + + always @ (posedge clk) + if (~reset_n) begin + req_st <= `REQ_IDLE; + end // if (~reset_n) + else begin + req_st <= next_req_st; + end // else: !if(~reset_n) +// +// addrs bits for the bank, row and column +// +// Register row/column/bank to improve fpga timing issue +wire [APP_AW-1:0] map_address ; + +assign map_address = (req_ack) ? req_addr_int : + (req_ld) ? next_sdr_addr : curr_sdr_addr; + +always @ (posedge clk) begin +// Bank Bits are always - 2 Bits + r2b_ba <= (cfg_colbits == 2'b00) ? {map_address[9:8]} : + (cfg_colbits == 2'b01) ? {map_address[10:9]} : + (cfg_colbits == 2'b10) ? {map_address[11:10]} : map_address[12:11]; + +/******************** +* Colbits Mapping: +* 2'b00 - 8 Bit +* 2'b01 - 16 Bit +* 2'b10 - 10 Bit +* 2'b11 - 11 Bits +************************/ + r2b_caddr <= (cfg_colbits == 2'b00) ? {5'b0, map_address[7:0]} : + (cfg_colbits == 2'b01) ? {4'b0, map_address[8:0]} : + (cfg_colbits == 2'b10) ? {3'b0, map_address[9:0]} : {2'b0, map_address[10:0]}; + + r2b_raddr <= (cfg_colbits == 2'b00) ? map_address[22:10] : + (cfg_colbits == 2'b01) ? map_address[23:11] : + (cfg_colbits == 2'b10) ? map_address[24:12] : map_address[25:13]; +end + +endmodule // sdr_req_gen diff --git a/lib/common/Driver/SDRAM_driver/core/sdrc_xfr_ctl.v b/lib/common/Driver/SDRAM_driver/core/sdrc_xfr_ctl.v new file mode 100644 index 0000000..cd87d26 --- /dev/null +++ b/lib/common/Driver/SDRAM_driver/core/sdrc_xfr_ctl.v @@ -0,0 +1,772 @@ +/********************************************************************* + + SDRAM Controller Transfer control + + This file is part of the sdram controller project + http://www.opencores.org/cores/sdr_ctrl/ + + Description: SDRAM Controller Transfer control + + This module takes requests from sdrc_bank_ctl and runs the + transfer. The input request is guaranteed to be in a bank that is + precharged and activated. This block runs the transfer until a + burst boundary is reached, then issues another read/write command + to sequentially step thru memory if wrap=0, until the transfer is + completed. + + if a read transfer finishes and the caddr is not at a burst boundary + a burst terminate command is issued unless another read/write or + precharge to the same bank is pending. + + if a write transfer finishes and the caddr is not at a burst boundary + a burst terminate command is issued unless a read/write is pending. + + If a refresh request is made, the bank_ctl will be held off until + the number of refreshes requested are completed. + + This block also handles SDRAM initialization. + + + To Do: + nothing + + Author(s): + - Dinesh Annayya, dinesha@opencores.org + Version : 1.0 - 8th Jan 2012 + + + + Copyright (C) 2000 Authors and OPENCORES.ORG + + This source file may be used and distributed without + restriction provided that this copyright statement is not + removed from the file and that any derivative work contains + the original copyright notice and the associated disclaimer. + + This source file is free software; you can redistribute it + and/or modify it under the terms of the GNU Lesser General + Public License as published by the Free Software Foundation; + either version 2.1 of the License, or (at your option) any +later version. + + This source is distributed in the hope that it will be + useful, but WITHOUT ANY WARRANTY; without even the implied + warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + PURPOSE. See the GNU Lesser General Public License for more + details. + + You should have received a copy of the GNU Lesser General + Public License along with this source; if not, download it + from http://www.opencores.org/lgpl.shtml + +*******************************************************************/ + +`include "sdrc_define.v" + +module sdrc_xfr_ctl (clk, + reset_n, + + /* Transfer request from bank_ctl */ + r2x_idle, // Req is idle + b2x_idle, // All banks are idle + b2x_req, // Req from bank_ctl + b2x_start, // first chunk of transfer + b2x_last, // last chunk of transfer + b2x_id, // Transfer ID + b2x_ba, // bank address + b2x_addr, // row/col address + b2x_len, // transfer length + b2x_cmd, // transfer command + b2x_wrap, // Wrap mode transfer + x2b_ack, // command accepted + + /* Status to bank_ctl, req_gen */ + b2x_tras_ok, // Tras for all banks expired + x2b_refresh, // We did a refresh + x2b_pre_ok, // OK to do a precharge (per bank) + x2b_act_ok, // OK to do an activate + x2b_rdok, // OK to do a read + x2b_wrok, // OK to do a write + + /* SDRAM I/O */ + sdr_cs_n, + sdr_cke, + sdr_ras_n, + sdr_cas_n, + sdr_we_n, + sdr_dqm, + sdr_ba, + sdr_addr, + sdr_din, + sdr_dout, + sdr_den_n, + + /* Data Flow to the app */ + x2a_rdstart, + x2a_wrstart, + x2a_rdlast, + x2a_wrlast, + x2a_id, + a2x_wrdt, + a2x_wren_n, + x2a_wrnext, + x2a_rddt, + x2a_rdok, + sdr_init_done, + + /* SDRAM Parameters */ + sdram_enable, + sdram_mode_reg, + + /* output for generate row address of the transfer */ + xfr_bank_sel, + + /* SDRAM Timing */ + cas_latency, + trp_delay, // Precharge to refresh delay + trcar_delay, // Auto-refresh period + twr_delay, // Write recovery delay + rfsh_time, // time per row (31.25 or 15.6125 uS) + rfsh_rmax); // Number of rows to rfsh at a time (<120uS) + +parameter SDR_DW = 16; // SDR Data Width +parameter SDR_BW = 2; // SDR Byte Width + + +input clk, reset_n; + + /* Req from bank_ctl */ +input b2x_req, b2x_start, b2x_last, b2x_tras_ok, + b2x_wrap, r2x_idle, b2x_idle; +input [`SDR_REQ_ID_W-1:0] b2x_id; +input [1:0] b2x_ba; +input [12:0] b2x_addr; +input [`REQ_BW-1:0] b2x_len; +input [1:0] b2x_cmd; +output x2b_ack; + +/* Status to bank_ctl */ +output [3:0] x2b_pre_ok; +output x2b_refresh, x2b_act_ok, x2b_rdok, + x2b_wrok; +/* Data Flow to the app */ +output x2a_rdstart, x2a_wrstart, x2a_rdlast, x2a_wrlast; +output [`SDR_REQ_ID_W-1:0] x2a_id; + +input [SDR_DW-1:0] a2x_wrdt; +input [SDR_BW-1:0] a2x_wren_n; +output [SDR_DW-1:0] x2a_rddt; +output x2a_wrnext, x2a_rdok, sdr_init_done; + +/* Interface to SDRAMs */ +output sdr_cs_n, sdr_cke, sdr_ras_n, sdr_cas_n, + sdr_we_n; +output [SDR_BW-1:0] sdr_dqm; +output [1:0] sdr_ba; +output [12:0] sdr_addr; +input [SDR_DW-1:0] sdr_din; +output [SDR_DW-1:0] sdr_dout; +output [SDR_BW-1:0] sdr_den_n; + + output [1:0] xfr_bank_sel; + + input sdram_enable; + input [12:0] sdram_mode_reg; + input [2:0] cas_latency; + input [3:0] trp_delay, trcar_delay, twr_delay; + input [`SDR_RFSH_TIMER_W-1 : 0] rfsh_time; + input [`SDR_RFSH_ROW_CNT_W-1:0] rfsh_rmax; + + + /************************************************************************/ + // Internal Nets + + `define XFR_IDLE 2'b00 + `define XFR_WRITE 2'b01 + `define XFR_READ 2'b10 + `define XFR_RDWT 2'b11 + + reg [1:0] xfr_st, next_xfr_st; + reg [12:0] xfr_caddr; + wire last_burst; + wire x2a_rdstart, x2a_wrstart, x2a_rdlast, x2a_wrlast; + reg l_start, l_last, l_wrap; + wire [`SDR_REQ_ID_W-1:0] x2a_id; + reg [`SDR_REQ_ID_W-1:0] l_id; + wire [1:0] xfr_ba; + reg [1:0] l_ba; + wire [12:0] xfr_addr; + wire [`REQ_BW-1:0] xfr_len, next_xfr_len; + reg [`REQ_BW-1:0] l_len; + + reg mgmt_idle, mgmt_req; + reg [3:0] mgmt_cmd; + reg [12:0] mgmt_addr; + reg [1:0] mgmt_ba; + + reg sel_mgmt, sel_b2x; + reg cb_pre_ok, rdok, wrok, wr_next, + rd_next, sdr_init_done, act_cmd, d_act_cmd; + wire [3:0] b2x_sdr_cmd, xfr_cmd; + reg [3:0] i_xfr_cmd; + wire mgmt_ack, x2b_ack, b2x_read, b2x_write, + b2x_prechg, d_rd_next, dt_next, xfr_end, + rd_pipe_mt, ld_xfr, rd_last, d_rd_last, + wr_last, l_xfr_end, rd_start, d_rd_start, + wr_start, page_hit, burst_bdry, xfr_wrap, + b2x_prechg_hit; + reg [6:0] l_rd_next, l_rd_start, l_rd_last; + + assign b2x_read = (b2x_cmd == `OP_RD) ? 1'b1 : 1'b0; + + assign b2x_write = (b2x_cmd == `OP_WR) ? 1'b1 : 1'b0; + + assign b2x_prechg = (b2x_cmd == `OP_PRE) ? 1'b1 : 1'b0; + + assign b2x_sdr_cmd = (b2x_cmd == `OP_PRE) ? `SDR_PRECHARGE : + (b2x_cmd == `OP_ACT) ? `SDR_ACTIVATE : + (b2x_cmd == `OP_RD) ? `SDR_READ : + (b2x_cmd == `OP_WR) ? `SDR_WRITE : `SDR_DESEL; + + assign page_hit = (b2x_ba == l_ba) ? 1'b1 : 1'b0; + + assign b2x_prechg_hit = b2x_prechg & page_hit; + + assign xfr_cmd = (sel_mgmt) ? mgmt_cmd : + (sel_b2x) ? b2x_sdr_cmd : i_xfr_cmd; + + assign xfr_addr = (sel_mgmt) ? mgmt_addr : + (sel_b2x) ? b2x_addr : xfr_caddr+1; + + assign mgmt_ack = sel_mgmt; + + assign x2b_ack = sel_b2x; + + assign ld_xfr = sel_b2x & (b2x_read | b2x_write); + + assign xfr_len = (ld_xfr) ? b2x_len : l_len; + + //assign next_xfr_len = (l_xfr_end && !ld_xfr) ? l_len : xfr_len - 1; + assign next_xfr_len = (ld_xfr) ? b2x_len : + (l_xfr_end) ? l_len: l_len - 1; + + assign d_rd_next = (cas_latency == 3'b001) ? l_rd_next[2] : + (cas_latency == 3'b010) ? l_rd_next[3] : + (cas_latency == 3'b011) ? l_rd_next[4] : + (cas_latency == 3'b100) ? l_rd_next[5] : + l_rd_next[6]; + + assign d_rd_last = (cas_latency == 3'b001) ? l_rd_last[2] : + (cas_latency == 3'b010) ? l_rd_last[3] : + (cas_latency == 3'b011) ? l_rd_last[4] : + (cas_latency == 3'b100) ? l_rd_last[5] : + l_rd_last[6]; + + assign d_rd_start = (cas_latency == 3'b001) ? l_rd_start[2] : + (cas_latency == 3'b010) ? l_rd_start[3] : + (cas_latency == 3'b011) ? l_rd_start[4] : + (cas_latency == 3'b100) ? l_rd_start[5] : + l_rd_start[6]; + + assign rd_pipe_mt = (cas_latency == 3'b001) ? ~|l_rd_next[1:0] : + (cas_latency == 3'b010) ? ~|l_rd_next[2:0] : + (cas_latency == 3'b011) ? ~|l_rd_next[3:0] : + (cas_latency == 3'b100) ? ~|l_rd_next[4:0] : + ~|l_rd_next[5:0]; + + assign dt_next = wr_next | d_rd_next; + + assign xfr_end = ~|xfr_len; + + assign l_xfr_end = ~|(l_len-1); + + assign rd_start = ld_xfr & b2x_read & b2x_start; + + assign wr_start = ld_xfr & b2x_write & b2x_start; + + assign rd_last = rd_next & last_burst & ~|xfr_len[`REQ_BW-1:1]; + + //assign wr_last = wr_next & last_burst & ~|xfr_len[APP_RW-1:1]; + + assign wr_last = last_burst & ~|xfr_len[`REQ_BW-1:1]; + + //assign xfr_ba = (ld_xfr) ? b2x_ba : l_ba; + assign xfr_ba = (sel_mgmt) ? mgmt_ba : + (sel_b2x) ? b2x_ba : l_ba; + + assign xfr_wrap = (ld_xfr) ? b2x_wrap : l_wrap; + +// assign burst_bdry = ~|xfr_caddr[2:0]; + wire [1:0] xfr_caddr_lsb = (xfr_caddr[1:0]+1); + assign burst_bdry = ~|(xfr_caddr_lsb[1:0]); + + always @ (posedge clk) begin + if (~reset_n) begin + xfr_caddr <= 13'b0; + l_start <= 1'b0; + l_last <= 1'b0; + l_wrap <= 1'b0; + l_id <= 0; + l_ba <= 0; + l_len <= 0; + l_rd_next <= 7'b0; + l_rd_start <= 7'b0; + l_rd_last <= 7'b0; + act_cmd <= 1'b0; + d_act_cmd <= 1'b0; + xfr_st <= `XFR_IDLE; + end // if (~reset_n) + + else begin + xfr_caddr <= (ld_xfr) ? b2x_addr : + (rd_next | wr_next) ? xfr_caddr + 1 : xfr_caddr; + l_start <= (dt_next) ? 1'b0 : + (ld_xfr) ? b2x_start : l_start; + l_last <= (ld_xfr) ? b2x_last : l_last; + l_wrap <= (ld_xfr) ? b2x_wrap : l_wrap; + l_id <= (ld_xfr) ? b2x_id : l_id; + l_ba <= (ld_xfr) ? b2x_ba : l_ba; + l_len <= next_xfr_len; + l_rd_next <= {l_rd_next[5:0], rd_next}; + l_rd_start <= {l_rd_start[5:0], rd_start}; + l_rd_last <= {l_rd_last[5:0], rd_last}; + act_cmd <= (xfr_cmd == `SDR_ACTIVATE) ? 1'b1 : 1'b0; + d_act_cmd <= act_cmd; + xfr_st <= next_xfr_st; + end // else: !if(~reset_n) + + end // always @ (posedge clk) + + + always @ (*) begin + case (xfr_st) + + `XFR_IDLE : begin + + sel_mgmt = mgmt_req; + sel_b2x = ~mgmt_req & sdr_init_done & b2x_req; + i_xfr_cmd = `SDR_DESEL; + rd_next = ~mgmt_req & sdr_init_done & b2x_req & b2x_read; + wr_next = ~mgmt_req & sdr_init_done & b2x_req & b2x_write; + rdok = ~mgmt_req; + cb_pre_ok = 1'b1; + wrok = ~mgmt_req; + next_xfr_st = (mgmt_req | ~sdr_init_done) ? `XFR_IDLE : + (~b2x_req) ? `XFR_IDLE : + (b2x_read) ? `XFR_READ : + (b2x_write) ? `XFR_WRITE : `XFR_IDLE; + + end // case: `XFR_IDLE + + `XFR_READ : begin + rd_next = ~l_xfr_end | + l_xfr_end & ~mgmt_req & b2x_req & b2x_read; + wr_next = 1'b0; + rdok = l_xfr_end & ~mgmt_req; + // Break the timing path for FPGA Based Design + cb_pre_ok = (`TARGET_DESIGN == `FPGA) ? 1'b0 : l_xfr_end; + wrok = 1'b0; + sel_mgmt = 1'b0; + + if (l_xfr_end) begin // end of transfer + + if (~l_wrap) begin + // Current transfer was not wrap mode, may need BT + // If next cmd is a R or W or PRE to same bank allow + // it else issue BT + // This is a little pessimistic since BT is issued + // for non-wrap mode transfers even if the transfer + // ends on a burst boundary, but is felt to be of + // minimal performance impact. + + i_xfr_cmd = `SDR_BT; + sel_b2x = b2x_req & ~mgmt_req & (b2x_read | b2x_prechg_hit); + + end // if (~l_wrap) + + else begin + // Wrap mode transfer, by definition is end of burst + // boundary + + i_xfr_cmd = `SDR_DESEL; + sel_b2x = b2x_req & ~mgmt_req & ~b2x_write; + + end // else: !if(~l_wrap) + + next_xfr_st = (sdr_init_done) ? ((b2x_req & ~mgmt_req & b2x_read) ? `XFR_READ : `XFR_RDWT) : `XFR_IDLE; + + end // if (l_xfr_end) + + else begin + // Not end of transfer + // If current transfer was not wrap mode and we are at + // the start of a burst boundary issue another R cmd to + // step sequemtially thru memory, ELSE, + // issue precharge/activate commands from the bank control + + i_xfr_cmd = (burst_bdry & ~l_wrap) ? `SDR_READ : `SDR_DESEL; + sel_b2x = ~(burst_bdry & ~l_wrap) & b2x_req; + next_xfr_st = `XFR_READ; + + end // else: !if(l_xfr_end) + + end // case: `XFR_READ + + `XFR_RDWT : begin + rd_next = ~mgmt_req & b2x_req & b2x_read; + wr_next = rd_pipe_mt & ~mgmt_req & b2x_req & b2x_write; + rdok = ~mgmt_req; + cb_pre_ok = 1'b1; + wrok = rd_pipe_mt & ~mgmt_req; + + sel_mgmt = mgmt_req; + + sel_b2x = ~mgmt_req & b2x_req; + + i_xfr_cmd = `SDR_DESEL; + + next_xfr_st = (~mgmt_req & b2x_req & b2x_read) ? `XFR_READ : + (~rd_pipe_mt) ? `XFR_RDWT : + (~mgmt_req & b2x_req & b2x_write) ? `XFR_WRITE : + `XFR_IDLE; + + end // case: `XFR_RDWT + + `XFR_WRITE : begin + rd_next = l_xfr_end & ~mgmt_req & b2x_req & b2x_read; + wr_next = ~l_xfr_end | + l_xfr_end & ~mgmt_req & b2x_req & b2x_write; + rdok = l_xfr_end & ~mgmt_req; + cb_pre_ok = 1'b0; + wrok = l_xfr_end & ~mgmt_req; + sel_mgmt = 1'b0; + + if (l_xfr_end) begin // End of transfer + + if (~l_wrap) begin + // Current transfer was not wrap mode, may need BT + // If next cmd is a R or W allow it else issue BT + // This is a little pessimistic since BT is issued + // for non-wrap mode transfers even if the transfer + // ends on a burst boundary, but is felt to be of + // minimal performance impact. + + + sel_b2x = b2x_req & ~mgmt_req & (b2x_read | b2x_write); + i_xfr_cmd = `SDR_BT; + end // if (~l_wrap) + + else begin + // Wrap mode transfer, by definition is end of burst + // boundary + + sel_b2x = b2x_req & ~mgmt_req & ~b2x_prechg_hit; + i_xfr_cmd = `SDR_DESEL; + end // else: !if(~l_wrap) + + next_xfr_st = (~mgmt_req & b2x_req & b2x_read) ? `XFR_READ : + (~mgmt_req & b2x_req & b2x_write) ? `XFR_WRITE : + `XFR_IDLE; + + end // if (l_xfr_end) + + else begin + // Not end of transfer + // If current transfer was not wrap mode and we are at + // the start of a burst boundary issue another R cmd to + // step sequemtially thru memory, ELSE, + // issue precharge/activate commands from the bank control + + if (burst_bdry & ~l_wrap) begin + sel_b2x = 1'b0; + i_xfr_cmd = `SDR_WRITE; + end // if (burst_bdry & ~l_wrap) + + else begin + sel_b2x = b2x_req & ~mgmt_req; + i_xfr_cmd = `SDR_DESEL; + end // else: !if(burst_bdry & ~l_wrap) + + next_xfr_st = `XFR_WRITE; + end // else: !if(l_xfr_end) + + end // case: `XFR_WRITE + + endcase // case(xfr_st) + + end // always @ (xfr_st or ...) + + // signals to bank_ctl (x2b_refresh, x2b_act_ok, x2b_rdok, x2b_wrok, + // x2b_pre_ok[3:0] + + assign x2b_refresh = (xfr_cmd == `SDR_REFRESH) ? 1'b1 : 1'b0; + + assign x2b_act_ok = ~act_cmd & ~d_act_cmd; + + assign x2b_rdok = rdok; + + assign x2b_wrok = wrok; + + //assign x2b_pre_ok[0] = (l_ba == 2'b00) ? cb_pre_ok : 1'b1; + //assign x2b_pre_ok[1] = (l_ba == 2'b01) ? cb_pre_ok : 1'b1; + //assign x2b_pre_ok[2] = (l_ba == 2'b10) ? cb_pre_ok : 1'b1; + //assign x2b_pre_ok[3] = (l_ba == 2'b11) ? cb_pre_ok : 1'b1; + + assign x2b_pre_ok[0] = cb_pre_ok; + assign x2b_pre_ok[1] = cb_pre_ok; + assign x2b_pre_ok[2] = cb_pre_ok; + assign x2b_pre_ok[3] = cb_pre_ok; + assign last_burst = (ld_xfr) ? b2x_last : l_last; + + /************************************************************************/ + // APP Data I/F + + wire [SDR_DW-1:0] x2a_rddt; + + //assign x2a_start = (ld_xfr) ? b2x_start : l_start; + assign x2a_rdstart = d_rd_start; + assign x2a_wrstart = wr_start; + + assign x2a_rdlast = d_rd_last; + assign x2a_wrlast = wr_last; + + assign x2a_id = (ld_xfr) ? b2x_id : l_id; + + assign x2a_rddt = sdr_din; + + assign x2a_wrnext = wr_next; + + assign x2a_rdok = d_rd_next; + + /************************************************************************/ + // SDRAM I/F + + reg sdr_cs_n, sdr_cke, sdr_ras_n, sdr_cas_n, + sdr_we_n; + reg [SDR_BW-1:0] sdr_dqm; + reg [1:0] sdr_ba; + reg [12:0] sdr_addr; + reg [SDR_DW-1:0] sdr_dout; + reg [SDR_BW-1:0] sdr_den_n; + + always @ (posedge clk) + if (~reset_n) begin + sdr_cs_n <= 1'b1; + sdr_cke <= 1'b1; + sdr_ras_n <= 1'b1; + sdr_cas_n <= 1'b1; + sdr_we_n <= 1'b1; + sdr_dqm <= {SDR_BW{1'b1}}; + sdr_den_n <= {SDR_BW{1'b1}}; + end // if (~reset_n) + else begin + sdr_cs_n <= xfr_cmd[3]; + sdr_ras_n <= xfr_cmd[2]; + sdr_cas_n <= xfr_cmd[1]; + sdr_we_n <= xfr_cmd[0]; + sdr_cke <= (xfr_st != `XFR_IDLE) ? 1'b1 : + ~(mgmt_idle & b2x_idle & r2x_idle); + sdr_dqm <= (wr_next) ? a2x_wren_n : {SDR_BW{1'b0}}; + sdr_den_n <= (wr_next) ? {SDR_BW{1'b0}} : {SDR_BW{1'b1}}; + end // else: !if(~reset_n) + + always @ (posedge clk) begin + + if (~xfr_cmd[3]) begin + sdr_addr <= xfr_addr; + sdr_ba <= xfr_ba; + end // if (~xfr_cmd[3]) + + sdr_dout <= (wr_next) ? a2x_wrdt : sdr_dout; + + end // always @ (posedge clk) + + /************************************************************************/ + // Refresh and Initialization + + `define MGM_POWERUP 3'b000 + `define MGM_PRECHARGE 3'b001 + `define MGM_PCHWT 3'b010 + `define MGM_REFRESH 3'b011 + `define MGM_REFWT 3'b100 + `define MGM_MODE_REG 3'b101 + `define MGM_MODE_WT 3'b110 + `define MGM_ACTIVE 3'b111 + + reg [2:0] mgmt_st, next_mgmt_st; + reg [3:0] tmr0, tmr0_d; + reg [3:0] cntr1, cntr1_d; + wire tmr0_tc, cntr1_tc, rfsh_timer_tc, ref_req, precharge_ok; + reg ld_tmr0, ld_cntr1, dec_cntr1, set_sdr_init_done; + reg [`SDR_RFSH_TIMER_W-1 : 0] rfsh_timer; + reg [`SDR_RFSH_ROW_CNT_W-1:0] rfsh_row_cnt; + + always @ (posedge clk) + if (~reset_n) begin + mgmt_st <= `MGM_POWERUP; + tmr0 <= 4'b0; + cntr1 <= 4'h7; + rfsh_timer <= 0; + rfsh_row_cnt <= 0; + sdr_init_done <= 1'b0; + end // if (~reset_n) + else begin + mgmt_st <= next_mgmt_st; + tmr0 <= (ld_tmr0) ? tmr0_d : + (~tmr0_tc) ? tmr0 - 1 : tmr0; + cntr1 <= (ld_cntr1) ? cntr1_d : + (dec_cntr1) ? cntr1 - 1 : cntr1; + sdr_init_done <= (set_sdr_init_done | sdr_init_done) & sdram_enable; + rfsh_timer <= (rfsh_timer_tc) ? 0 : rfsh_timer + 1; + rfsh_row_cnt <= (~set_sdr_init_done) ? 0 : + (rfsh_timer_tc) ? rfsh_row_cnt + 1 : rfsh_row_cnt; + end // else: !if(~reset_n) + + assign tmr0_tc = ~|tmr0; + + assign cntr1_tc = ~|cntr1; + + assign rfsh_timer_tc = (rfsh_timer == rfsh_time) ? 1'b1 : 1'b0; + + assign ref_req = (rfsh_row_cnt >= rfsh_rmax) ? 1'b1 : 1'b0; + + assign precharge_ok = cb_pre_ok & b2x_tras_ok; + + assign xfr_bank_sel = l_ba; + + always @ (mgmt_st or sdram_enable or mgmt_ack or trp_delay or tmr0_tc or + cntr1_tc or trcar_delay or rfsh_row_cnt or ref_req or sdr_init_done + or precharge_ok or sdram_mode_reg) begin + + case (mgmt_st) // synopsys full_case parallel_case + + `MGM_POWERUP : begin + mgmt_idle = 1'b0; + mgmt_req = 1'b0; + mgmt_cmd = `SDR_DESEL; + mgmt_ba = 2'b0; + mgmt_addr = 13'h400; // A10 = 1 => all banks + ld_tmr0 = 1'b0; + tmr0_d = 4'b0; + dec_cntr1 = 1'b0; + ld_cntr1 = 1'b1; + cntr1_d = 4'hf; // changed for sdrams with higher refresh cycles during initialization + set_sdr_init_done = 1'b0; + next_mgmt_st = (sdram_enable) ? `MGM_PRECHARGE : `MGM_POWERUP; + end // case: `MGM_POWERUP + + `MGM_PRECHARGE : begin // Precharge all banks + mgmt_idle = 1'b0; + mgmt_req = 1'b1; + mgmt_cmd = (precharge_ok) ? `SDR_PRECHARGE : `SDR_DESEL; + mgmt_ba = 2'b0; + mgmt_addr = 13'h400; // A10 = 1 => all banks + ld_tmr0 = mgmt_ack; + tmr0_d = trp_delay; + ld_cntr1 = 1'b0; + cntr1_d = 4'h7; + dec_cntr1 = 1'b0; + set_sdr_init_done = 1'b0; + next_mgmt_st = (precharge_ok & mgmt_ack) ? `MGM_PCHWT : `MGM_PRECHARGE; + end // case: `MGM_PRECHARGE + + `MGM_PCHWT : begin // Wait for Trp + mgmt_idle = 1'b0; + mgmt_req = 1'b1; + mgmt_cmd = `SDR_DESEL; + mgmt_ba = 2'b0; + mgmt_addr = 13'h400; // A10 = 1 => all banks + ld_tmr0 = 1'b0; + tmr0_d = trp_delay; + ld_cntr1 = 1'b0; + cntr1_d = 4'b0; + dec_cntr1 = 1'b0; + set_sdr_init_done = 1'b0; + next_mgmt_st = (tmr0_tc) ? `MGM_REFRESH : `MGM_PCHWT; + end // case: `MGM_PRECHARGE + + `MGM_REFRESH : begin // Refresh + mgmt_idle = 1'b0; + mgmt_req = 1'b1; + mgmt_cmd = `SDR_REFRESH; + mgmt_ba = 2'b0; + mgmt_addr = 13'h400; // A10 = 1 => all banks + ld_tmr0 = mgmt_ack; + tmr0_d = trcar_delay; + dec_cntr1 = mgmt_ack; + ld_cntr1 = 1'b0; + cntr1_d = 4'h7; + set_sdr_init_done = 1'b0; + next_mgmt_st = (mgmt_ack) ? `MGM_REFWT : `MGM_REFRESH; + end // case: `MGM_REFRESH + + `MGM_REFWT : begin // Wait for trcar + mgmt_idle = 1'b0; + mgmt_req = 1'b1; + mgmt_cmd = `SDR_DESEL; + mgmt_ba = 2'b0; + mgmt_addr = 13'h400; // A10 = 1 => all banks + ld_tmr0 = 1'b0; + tmr0_d = trcar_delay; + dec_cntr1 = 1'b0; + ld_cntr1 = 1'b0; + cntr1_d = 4'h7; + set_sdr_init_done = 1'b0; + next_mgmt_st = (~tmr0_tc) ? `MGM_REFWT : + (~cntr1_tc) ? `MGM_REFRESH : + (sdr_init_done) ? `MGM_ACTIVE : `MGM_MODE_REG; + end // case: `MGM_REFWT + + `MGM_MODE_REG : begin // Program mode Register & wait for + mgmt_idle = 1'b0; + mgmt_req = 1'b1; + mgmt_cmd = `SDR_MODE; + mgmt_ba = {1'b0, sdram_mode_reg[11]}; + mgmt_addr = sdram_mode_reg; + ld_tmr0 = mgmt_ack; + tmr0_d = 4'h7; + dec_cntr1 = 1'b0; + ld_cntr1 = 1'b0; + cntr1_d = 4'h7; + set_sdr_init_done = 1'b0; + next_mgmt_st = (mgmt_ack) ? `MGM_MODE_WT : `MGM_MODE_REG; + end // case: `MGM_MODE_REG + + `MGM_MODE_WT : begin // Wait for tMRD + mgmt_idle = 1'b0; + mgmt_req = 1'b1; + mgmt_cmd = `SDR_DESEL; + mgmt_ba = 2'bx; + mgmt_addr = 13'bx; + ld_tmr0 = 1'b0; + tmr0_d = 4'h7; + dec_cntr1 = 1'b0; + ld_cntr1 = 1'b0; + cntr1_d = 4'h7; + set_sdr_init_done = 1'b0; + next_mgmt_st = (~tmr0_tc) ? `MGM_MODE_WT : `MGM_ACTIVE; + end // case: `MGM_MODE_WT + + `MGM_ACTIVE : begin // Wait for ref_req + mgmt_idle = ~ref_req; + mgmt_req = 1'b0; + mgmt_cmd = `SDR_DESEL; + mgmt_ba = 2'bx; + mgmt_addr = 13'bx; + ld_tmr0 = 1'b0; + tmr0_d = 4'h7; + dec_cntr1 = 1'b0; + ld_cntr1 = ref_req; + cntr1_d = rfsh_row_cnt; + set_sdr_init_done = 1'b1; + next_mgmt_st = (~sdram_enable) ? `MGM_POWERUP : + (ref_req) ? `MGM_PRECHARGE : `MGM_ACTIVE; + end // case: `MGM_MODE_WT + + endcase // case(mgmt_st) + + end // always @ (mgmt_st or ....) + + + +endmodule // sdr_xfr_ctl diff --git a/lib/common/Driver/SDRAM_driver/model/IS42VM16400K.V b/lib/common/Driver/SDRAM_driver/model/IS42VM16400K.V new file mode 100644 index 0000000..f788ba5 --- /dev/null +++ b/lib/common/Driver/SDRAM_driver/model/IS42VM16400K.V @@ -0,0 +1,1728 @@ +/************************************************************************ +* +* Copyright(c) ISSI Inc., 2010 +* +* == 64M Low power SDRAM behavioral Model by ESC == +* +* Address : 1940 Zanker Road San Jose,CA95112-4216,U.S.A. +* Tel : +1-408-969-6600, Fax : +1-408-969-7800 +* +* Revision : Rev0.0 (2010.10.4) +* +* Running Options +* +S50 : Set AC timing parameter for -50(200MHz ) +* +S60 : Set AC timing parameter for -60(166MHz ) +* +S75 : Set AC timing parameter for -75(133MHz ) +* +VERBOSE : Display internal operation status +* +************************************************************************/ + +`timescale 1ns / 1ps + + module IS42VM16400K (dq, addr, ba, clk, cke, csb, rasb, casb, web, dqm); + + parameter no_of_bank = 2; + parameter no_of_addr = 12; + parameter no_of_data = 16; + parameter no_of_col = 8; + parameter no_of_dqm = 2; + parameter mem_sizes = 1048575; + + + // Timing Parameters for -50 PC200 + `ifdef S50 + parameter tAC3 = 5.0; + parameter tHZ3 = 5.0; + parameter tAC2 = 8.0; + parameter tHZ2 = 8.0; + parameter tOH = 2.0; + parameter tMRD = 2.0; + parameter tRAS = 40.0; + parameter tRC = 55.0; + parameter tRCD = 18.0; + parameter tRFC = 60.0; + parameter tXSR = 60.0; + parameter tRP = 15.0; + parameter tRRD = 10.0; + parameter tDPLa = 5.0; + parameter tDPLm = 12.0; + parameter tDPDX = 100000.0; + `endif + + + // Timing Parameters for -60 PC166 + `ifdef S60 + parameter tAC3 = 5.5; + parameter tHZ3 = 5.5; + parameter tAC2 = 8.0; + parameter tHZ2 = 8.0; + parameter tOH = 2.5; + parameter tMRD = 2.0; + parameter tRAS = 42.0; + parameter tRC = 60.0; + parameter tRCD = 18.0; + parameter tRFC = 66.0; + parameter tXSR = 66.0; + parameter tRP = 18.0; + parameter tRRD = 12.0; + parameter tDPLa = 6.0; + parameter tDPLm = 12.0; + parameter tDPDX = 100000.0; + `endif + + // Timing Parameters for -75 PC133 + `ifdef S75 + parameter tAC3 = 6.0; + parameter tHZ3 = 6.0; + parameter tAC2 = 8.0; + parameter tHZ2 = 8.0; + parameter tOH = 2.5; + parameter tMRD = 2.0; + parameter tRAS = 45.0; + parameter tRC = 67.5; + parameter tRCD = 22.5; + parameter tRFC = 67.5; + parameter tXSR = 67.5; + parameter tRP = 22.5; + parameter tRRD = 15.0; + parameter tDPLa = 7.5; + parameter tDPLm = 15.0; + parameter tDPDX = 100000.0; + `endif + + + inout [no_of_data - 1 : 0] dq; + input [no_of_addr - 1 : 0] addr; + input [no_of_bank - 1 : 0] ba; + input clk; + input cke; + input csb; + input rasb; + input casb; + input web; + input [no_of_dqm - 1 : 0] dqm; + +`protect + + reg [no_of_data - 1 : 0] bank0 [0 : mem_sizes]; + reg [no_of_data - 1 : 0] bank1 [0 : mem_sizes]; + reg [no_of_data - 1 : 0] bank2 [0 : mem_sizes]; + reg [no_of_data - 1 : 0] bank3 [0 : mem_sizes]; + + reg [no_of_bank - 1 : 0] bank_addr [0 : 3]; // bank address Pipeline + reg [no_of_col - 1 : 0] Col_addr [0 : 3]; // Column address Pipeline + reg [3 : 0] Command [0 : 3]; // Command Operation Pipeline + reg [no_of_dqm - 1 : 0] dqm_reg0, dqm_reg1; // DQM Operation Pipeline + reg [no_of_dqm - 1 : 0] dqm_save [0 : 3]; // DQM Operation Pipeline + reg [no_of_addr - 1 : 0] B0_row_addr, B1_row_addr, B2_row_addr, B3_row_addr; + + reg [no_of_addr - 1 : 0] Mode_reg; + reg [no_of_addr - 1 : 0] EMode_reg; + reg [no_of_data - 1 : 0] dq_reg, dq_dqm; + reg [no_of_col - 1 : 0] Col_temp, Burst_counter; + + reg Act_b0, Act_b1, Act_b2, Act_b3; // bank Activate + reg Pc_b0, Pc_b1, Pc_b2, Pc_b3; // bank Precharge + + reg [1 : 0] bank_precharge [0 : 3]; // Precharge Command + reg A10_precharge [0 : 3]; // addr[10] = 1 (All banks) + reg Auto_precharge [0 : 3]; // RW Auto Precharge (bank) + reg Read_precharge [0 : 3]; // R Auto Precharge + reg Write_precharge [0 : 3]; // W Auto Precharge + reg RW_interrupt_read [0 : 3]; // RW Interrupt Read with Auto Precharge + reg RW_interrupt_write [0 : 3]; // RW Interrupt Write with Auto Precharge + reg [1 : 0] RW_interrupt_bank; // RW Interrupt bank + integer RW_interrupt_counter [0 : 3]; // RW Interrupt Counter + integer Count_precharge [0 : 3]; // RW Auto Precharge Counter + + reg Data_in_enable; + reg Data_out_enable; + + reg [no_of_bank - 1 : 0] bank, Prev_bank; + reg [no_of_addr - 1 : 0] Row; + reg [no_of_col - 1 : 0] Col, Col_brst; + + reg [19:0] ccc; + reg [3:0] bit; + reg [2:0] CL; + reg [8:0] BL; + reg RIW_violate; + reg Dout_Drive_Flag; + reg Pre_Dout_Drive_Flag; + reg [10:0] Count_at_Read; + reg Read_cmd_received; + reg Read_cmd_received_cke; + reg Write_cmd_received_cke; + reg state_act_pwrdn,state_pre_pwrdn,state_dpdn,state_self; + reg dpdn_check_start; + reg [10:0] Read_cmd_count; + reg [10:0] Read_cmd_count_cke; + reg [10:0] Write_cmd_count_cke; + reg [3:0] cmp_count; + // Internal system clock + reg ckeZ, Sys_clk; + + // Commands Decode + wire Active_enable = ~csb & ~rasb & casb & web ; + wire Aref_enable = ~csb & ~rasb & ~casb & web & cke; + wire Sref_enable = ~csb & ~rasb & ~casb & web & ~cke; + wire Burst_term = ~csb & rasb & casb & ~web & cke; + wire Deep_pwrdn = ~csb & rasb & casb & ~web & ~cke; + wire Mode_reg_enable = ~csb & ~rasb & ~casb & ~web & ~ba[1] & ~ba[0]; + wire EMode_reg_enable = ~csb & ~rasb & ~casb & ~web & ba[1] & ~ba[0]; + wire Prech_enable = ~csb & ~rasb & casb & ~web ; + wire Read_enable = ~csb & rasb & ~casb & web ; + wire Write_enable = ~csb & rasb & ~casb & ~web ; + + // Burst Length Decode + wire Burst_length_1 = ~Mode_reg[2] & ~Mode_reg[1] & ~Mode_reg[0]; + wire Burst_length_2 = ~Mode_reg[2] & ~Mode_reg[1] & Mode_reg[0]; + wire Burst_length_4 = ~Mode_reg[2] & Mode_reg[1] & ~Mode_reg[0]; + wire Burst_length_8 = ~Mode_reg[2] & Mode_reg[1] & Mode_reg[0]; + wire Burst_length_f = Mode_reg[2] & Mode_reg[1] & Mode_reg[0]; + + // CAS Latency Decode + wire Cas_latency_1 = ~Mode_reg[6] & ~Mode_reg[5] & Mode_reg[4]; + wire Cas_latency_2 = ~Mode_reg[6] & Mode_reg[5] & ~Mode_reg[4]; + wire Cas_latency_3 = ~Mode_reg[6] & Mode_reg[5] & Mode_reg[4]; + + // Write Burst Mode + wire Write_burst_mode = Mode_reg[9]; + +`ifdef VERBOSE + wire Debug = 1'b1; // Debug messages : 1 = On +`else + wire Debug = 1'b0; // Debug messages : 1 = On +`endif + + wire dq_chk = Sys_clk & Data_in_enable; // Check setup/hold time for DQ + + // CKE function + wire clk_suspend_write= (Act_b0 | Act_b1 | Act_b2 | Act_b3) & Write_cmd_received_cke; + wire clk_suspend_read = (Act_b0 | Act_b1 | Act_b2 | Act_b3) & Read_cmd_received_cke; + wire act_pwrdn = (Act_b0 | Act_b1 | Act_b2 | Act_b3) & (~Read_cmd_received_cke & ~Write_cmd_received_cke); + wire pch_pwrdn = (Pc_b0 & Pc_b1 & Pc_b2 & Pc_b3) & (~Read_cmd_received_cke | ~Write_cmd_received_cke); + + assign dq = dq_reg; // DQ buffer + + // Commands Operation + `define ACT 0 + `define NOP 1 + `define READ 2 + `define WRITE 3 + `define PRECH 4 + `define A_REF 5 + `define BST 6 + `define LMR 7 + + // Timing Check variable + real MRD_chk; + real WR_chkm0, WR_chkm1, WR_chkm2, WR_chkm3; + real RFC_chk, RRD_chk; + real RC_chk0, RC_chk1, RC_chk2, RC_chk3 ; + real RAS_chk0, RAS_chk1, RAS_chk2, RAS_chk3 ; + real RCD_chk0, RCD_chk1, RCD_chk2, RCD_chk3 ; + real RP_chk0, RP_chk1, RP_chk2, RP_chk3 ; + real SELF_chk, DPDN_chk ; + + initial begin + mem_init; + dq_reg = {no_of_data{1'bz}}; + Data_in_enable = 0; Data_out_enable = 0; + Act_b0 = 1; Act_b1 = 1; Act_b2 = 1; Act_b3 = 1; + Pc_b0 = 0; Pc_b1 = 0; Pc_b2 = 0; Pc_b3 = 0; + WR_chkm0 = 0; WR_chkm1 = 0; WR_chkm2 = 0; WR_chkm3 = 0; + RW_interrupt_read[0] = 0; RW_interrupt_read[1] = 0; RW_interrupt_read[2] = 0; RW_interrupt_read[3] = 0; + RW_interrupt_write[0] = 0; RW_interrupt_write[1] = 0; RW_interrupt_write[2] = 0; RW_interrupt_write[3] = 0; + MRD_chk = 0; RFC_chk = 0; RRD_chk = 0; + RAS_chk0 = 0; RAS_chk1 = 0; RAS_chk2 = 0; RAS_chk3 = 0; + RCD_chk0 = 0; RCD_chk1 = 0; RCD_chk2 = 0; RCD_chk3 = 0; + RC_chk0 = 0; RC_chk1 = 0; RC_chk2 = 0; RC_chk3 = 0; + RP_chk0 = 0; RP_chk1 = 0; RP_chk2 = 0; RP_chk3 = 0; + SELF_chk = 0; DPDN_chk = 0; + Read_cmd_received=0; + Read_cmd_count=0; + Read_cmd_received_cke=0; + Read_cmd_count_cke=0; + Write_cmd_received_cke=0; + Write_cmd_count_cke=0; + state_act_pwrdn=0; + state_pre_pwrdn=0; + state_dpdn=0; + state_self=0; + dpdn_check_start=0; + EMode_reg=0; + Mode_reg=0; + Count_at_Read=0; + + $timeformat (-9, 2, " ns", 12); + end + + // System clock generator + always begin + @ (posedge clk) begin + Sys_clk = ckeZ; + ckeZ = cke; + end + @ (negedge clk) begin + Sys_clk = 1'b0; + end + end + + always @ (posedge clk) begin + // CKE Exit + if (cke === 1'b1) begin + if (state_self === 1'b1) begin + state_self = 1'b0; + SELF_chk=$realtime; + if (Debug) $display ("Time = %t : OPERATION = SREFX : Self Refresh exit", $realtime); + end else if (state_dpdn == 1'b1) begin + state_dpdn = 1'b0; + DPDN_chk=$realtime; + if (Debug) $display ("Time = %t : OPERATION = DPDNX : Deep Powerdown exit", $realtime); + end else if (state_act_pwrdn == 1'b1) begin + state_act_pwrdn = 1'b0; + if (Debug) $display ("Time = %t : OPERATION = APDNX : Active Power down exit", $realtime); + end else if (state_pre_pwrdn == 1'b1) begin + state_pre_pwrdn = 1'b0; + if (Debug) $display ("Time = %t : OPERATION = PPDNX : Precharge Power down exit", $realtime); + end + end + end + + + always @ (Dout_Drive_Flag) begin + + if(Cas_latency_2 ==1) begin + + Pre_Dout_Drive_Flag <= #tHZ2 Dout_Drive_Flag; + + end else if(Cas_latency_3 ==1) begin + + Pre_Dout_Drive_Flag <= #tHZ3 Dout_Drive_Flag; + + end + + end + + + + + always @ (posedge Sys_clk) begin + // Internal Commamd Pipelined + Command[0] = Command[1]; + Command[1] = Command[2]; + Command[2] = Command[3]; + Command[3] = `NOP; + + Col_addr[0] = Col_addr[1]; + Col_addr[1] = Col_addr[2]; + Col_addr[2] = Col_addr[3]; + Col_addr[3] = {no_of_col{1'b0}}; + + bank_addr[0] = bank_addr[1]; + bank_addr[1] = bank_addr[2]; + bank_addr[2] = bank_addr[3]; + bank_addr[3] = 2'b00; + + bank_precharge[0] = bank_precharge[1]; + bank_precharge[1] = bank_precharge[2]; + bank_precharge[2] = bank_precharge[3]; + bank_precharge[3] = 2'b00; + + A10_precharge[0] = A10_precharge[1]; + A10_precharge[1] = A10_precharge[2]; + A10_precharge[2] = A10_precharge[3]; + A10_precharge[3] = 1'b0; + + // dqm pipeline for Read + dqm_reg0 = dqm_reg1; + dqm_reg1 = dqm; + + dqm_save[3]=dqm_save[2]; + dqm_save[2]=dqm_save[1]; + dqm_save[1]=dqm_save[0]; + dqm_save[0]=dqm; + + + if (Read_cmd_received == 1'b1) begin + Read_cmd_count = Read_cmd_count + 1; + end + else begin + Read_cmd_count = 4'b0; + end + //if (Read_cmd_count == (BL+CL+1)) begin + if (Read_cmd_count == Count_at_Read+(BL+CL+1)) begin + Read_cmd_received = 1'b0; + end + + // Count for CKE + if (Read_cmd_received_cke == 1'b1) begin + Read_cmd_count_cke = Read_cmd_count_cke + 1; + end + else begin + Read_cmd_count_cke = 4'b0; + end + if (Read_cmd_count_cke == (BL+CL-1)) begin + Read_cmd_received_cke = 1'b0; + end + + // Count for CKE + if (Write_cmd_received_cke == 1'b1) begin + Write_cmd_count_cke = Write_cmd_count_cke + 1; + end + else begin + Write_cmd_count_cke = 4'b0; + end + if (Write_cmd_count_cke == BL) begin + Write_cmd_received_cke = 1'b0; + end + + + + // Read or Write with Auto Precharge Counter + if (Auto_precharge[0] === 1'b1) begin + Count_precharge[0] = Count_precharge[0] + 1; + end + if (Auto_precharge[1] === 1'b1) begin + Count_precharge[1] = Count_precharge[1] + 1; + end + if (Auto_precharge[2] === 1'b1) begin + Count_precharge[2] = Count_precharge[2] + 1; + end + if (Auto_precharge[3] === 1'b1) begin + Count_precharge[3] = Count_precharge[3] + 1; + end + + // Read or Write Interrupt Counter + if (RW_interrupt_write[0] === 1'b1) begin + RW_interrupt_counter[0] = RW_interrupt_counter[0] + 1; + end + if (RW_interrupt_write[1] === 1'b1) begin + RW_interrupt_counter[1] = RW_interrupt_counter[1] + 1; + end + if (RW_interrupt_write[2] === 1'b1) begin + RW_interrupt_counter[2] = RW_interrupt_counter[2] + 1; + end + if (RW_interrupt_write[3] === 1'b1) begin + RW_interrupt_counter[3] = RW_interrupt_counter[3] + 1; + end + + // tMRD Counter + MRD_chk = MRD_chk + 1; + + // Auto Refresh + if (Aref_enable === 1'b1) begin + if (Debug) begin + //$display ("%m : at time %t AREF : Auto Refresh", $realtime); + $display ("Time = %t : OPERATION = AREF : Auto Refresh", $realtime); + end + + // DPDXN to Auto Refresh + if (($realtime - DPDN_chk < tDPDX) && (dpdn_check_start)) begin + $display ("Time = %t : ERROR : Pwrup violation(DPDX to AREF)", $realtime); + end + + // Self exit to Auto Refresh + if ($realtime - SELF_chk < tXSR) begin + $display ("Time = %t : ERROR : tXSR violation(SREFX to AREF)", $realtime); + end + + // Auto Refresh to Auto Refresh + if ($realtime - RFC_chk < tRFC) begin + //$display ("%m : at time %t ERROR: tRFC violation during Auto Refresh", $realtime); + $display ("Time = %t : ERROR : tRFC violation(AREF to AREF)", $realtime); + end + + // Precharge to Auto Refresh + if (($realtime - RP_chk0 < tRP)) begin + //$display ("%m : at time %t ERROR: tRP violation during Auto Refresh", $realtime); + $display ("Time = %t : ERROR : tRP violation(PRECHARGE0 to AREF)", $realtime); + end + if (($realtime - RP_chk1 < tRP)) begin + //$display ("%m : at time %t ERROR: tRP violation during Auto Refresh", $realtime); + $display ("Time = %t : ERROR : tRP violation(PRECHARGE1 to AREF)", $realtime); + end + if (($realtime - RP_chk2 < tRP)) begin + //$display ("%m : at time %t ERROR: tRP violation during Auto Refresh", $realtime); + $display ("Time = %t : ERROR : tRP violation(PRECHARGE2 to AREF)", $realtime); + end + if (($realtime - RP_chk3 < tRP)) begin + //$display ("%m : at time %t ERROR: tRP violation during Auto Refresh", $realtime); + $display ("Time = %t : ERROR : tRP violation(PRECHARGE3 to AREF)", $realtime); + end + + + // Precharge to Refresh + if (Pc_b0 === 1'b0 || Pc_b1 === 1'b0 || Pc_b2 === 1'b0 || Pc_b3 === 1'b0) begin + //$display ("%m : at time %t ERROR: All banks must be Precharge before Auto Refresh", $realtime); + $display ("Time = %t : ERROR : All banks must be Precharged before AREF", $realtime); + end + + // Load Mode Register to Auto Refresh + if (MRD_chk < tMRD) begin + //$display ("%m : at time %t ERROR: tMRD violation during Auto Refresh", $realtime); + $display ("Time = %t : ERROR : tMRD violation(MRS to AREF)", $realtime); + end + + // Record Current tRFC time + RFC_chk = $realtime; + end + + // Load Mode Register + if (Mode_reg_enable === 1'b1) begin + // Register Mode + Mode_reg = addr; + + // Decode CAS Latency, Burst Length, Burst Type, and Write Burst Mode + if (Debug) begin + //$display ("%m : at time %t LMR : Load Mode Register", $realtime); + $display ("Time = %t : OPERATION = MRS : Load Mode Register", $realtime); + // CAS Latency + case (addr[6 : 4]) + 3'b010 : $display (" CAS Latency = 2"); + 3'b011 : $display (" CAS Latency = 3"); + default : $display (" CAS Latency = Reserved"); + endcase + case (addr[6 : 4]) + 3'b010 : CL=2; + 3'b011 : CL=3; + default : CL=3; + endcase + + // Burst Length + case (addr[2 : 0]) + 3'b000 : $display (" Burst Length = 1"); + 3'b001 : $display (" Burst Length = 2"); + 3'b010 : $display (" Burst Length = 4"); + 3'b011 : $display (" Burst Length = 8"); + 3'b111 : $display (" Burst Length = Full"); + default : $display (" Burst Length = Reserved"); + endcase + + case (addr[2 : 0]) + 3'b000 : BL=1; + 3'b001 : BL=2; + 3'b010 : BL=4; + 3'b011 : BL=8; + 3'b111 : BL=512; + default : BL=4; + endcase + + + // Burst Type + if (addr[3] === 1'b0) begin + $display (" Burst Type = Sequential"); + end else if (addr[3] === 1'b1) begin + $display (" Burst Type = Interleaved"); + end else begin + $display (" Burst Type = Reserved"); + end + + // Write Burst Mode + if (addr[9] === 1'b0) begin + $display (" Write Burst Mode = Programmed Burst Length"); + end else if (addr[9] === 1'b1) begin + $display (" Write Burst Mode = Single Location Access"); + end else begin + $display (" Write Burst Mode = Reserved"); + end + end + + // Precharge to Load Mode Register + if (Pc_b0 === 1'b0 && Pc_b1 === 1'b0 && Pc_b2 === 1'b0 && Pc_b3 === 1'b0 ) begin + //$display ("%m : at time %t ERROR: all banks must be Precharge before Load Mode Register", $realtime); + $display ("Time = %t : ERROR : all banks must be Precharge before Load Mode Register", $realtime); + end + + // Precharge to Load Mode Register + if (($realtime - RP_chk0 < tRP) || ($realtime - RP_chk1 < tRP) || + ($realtime - RP_chk2 < tRP) || ($realtime - RP_chk3 < tRP)) begin + //$display ("%m : at time %t ERROR: tRP violation during Load Mode Register", $realtime); + $display ("Time = %t : ERROR : tRP violation(PRECHARGE to MRS)", $realtime); + end + + // Auto Refresh to Load Mode Register + if ($realtime - RFC_chk < tRFC) begin + //$display ("%m : at time %t ERROR: tRFC violation during Load Mode Register", $realtime); + $display ("Time = %t : ERROR : tRFC violation(AREF to MRS)", $realtime); + end + + // Load Mode Register to Load Mode Register + if (MRD_chk < tMRD) begin + //$display ("%m : at time %t ERROR: tMRD violation during Load Mode Register", $realtime); + $display ("Time = %t : ERROR : tMRD violation(MRS to MRS)", $realtime); + end + + // Reset MRD Counter + MRD_chk = 0; + end + + // Load Extended Mode Register + if (EMode_reg_enable === 1'b1) begin + // Register Mode + EMode_reg = addr; + + // Decode Driver Strength, Maximum Case Temp, Self Refresh Coverage + if (Debug) begin + //$display ("%m : at time %t LMR : Load Mode Register", $realtime); + $display ("Time = %t : OPERATION = EMRS : Load Extended Mode Register", $realtime); + // Driver Strength + case (addr[6 : 5]) + 2'b00 : $display (" Driver Strength = Full"); + 2'b01 : $display (" Driver Strength = 1/2"); + 2'b10 : $display (" Driver Strength = 1/4"); + 2'b11 : $display (" Driver Strength = 1/8"); + default : $display (" Driver Strength = Reserved"); + endcase + + // Self Refresh Coverage + case (addr[2 : 0]) + 3'b000 : $display (" Self Refresh Coverage = All Banks"); + 3'b001 : $display (" Self Refresh Coverage = TWO Bank"); + 3'b010 : $display (" Self Refresh Coverage = One Bank"); + 3'b101 : $display (" Self Refresh Coverage = Half of one Banks"); + 3'b110 : $display (" Self Refresh Coverage = Quater of one Banks"); + default : $display (" Self Refresh Coverage = Reserved"); + endcase + + end + + // Precharge to Load Mode Register + if (Pc_b0 === 1'b0 && Pc_b1 === 1'b0 && Pc_b2 === 1'b0 && Pc_b3 === 1'b0) begin + //$display ("%m : at time %t ERROR: all banks must be Precharge before Load Mode Register", $realtime); + $display ("Time = %t : ERROR : all banks must be Precharge before Load Mode Register", $realtime); + end + + // Precharge to Load Mode Register + if (($realtime - RP_chk0 < tRP) || ($realtime - RP_chk1 < tRP) || + ($realtime - RP_chk2 < tRP) || ($realtime - RP_chk3 < tRP)) begin + //$display ("%m : at time %t ERROR: tRP violation during Load Mode Register", $realtime); + $display ("Time = %t : ERROR : tRP violation(PRECHARGE to EMRS)", $realtime); + end + + // Auto Refresh to Load Mode Register + if ($realtime - RFC_chk < tRFC) begin + //$display ("%m : at time %t ERROR: tRFC violation during Load Mode Register", $realtime); + $display ("Time = %t : ERROR : tRFC violation(AREF to EMRS)", $realtime); + end + + // Load Mode Register to Load Mode Register + if (MRD_chk < tMRD) begin + //$display ("%m : at time %t ERROR: tMRD violation during Load Mode Register", $realtime); + $display ("Time = %t : ERROR : tMRD violation(MRS to EMRS)", $realtime); + end + + // Reset MRD Counter + MRD_chk = 0; + end + + // Active Block (Latch bank address and Row address) + if (Active_enable === 1'b1) begin + // Activate an open bank can corrupt data + if ((ba === 2'b00 && Act_b0 === 1'b1) || (ba === 2'b01 && Act_b1 === 1'b1) || + (ba === 2'b10 && Act_b2 === 1'b1) || (ba === 2'b11 && Act_b3 === 1'b1)) begin + //$display ("%m : at time %t ERROR: bank already activated -- data can be corrupted", $realtime); + $display ("Time = %t : ERROR : bank already activated -- data could be corrupted", $realtime); + // $display ("Time = %t : Bank = %d, Act_b0 = %d, Act_b2 = %d", $realtime, ba, Act_b0, Act_b2); + end + + // Activate bank 0 + if (ba === 2'b00 && Pc_b0 === 1'b1) begin + // Debug Message + if (Debug) begin + //$display ("%m : at time %t ACT : bank = 0 Row = %d", $realtime, addr); + $display ("Time = %t : OPERATION = ACT : bank = 0 Row = 'h%h", $realtime, addr); + end + + // Self exit to ACTIVE + if ($realtime - SELF_chk < tXSR) begin + $display ("Time = %t : ERROR : tXSR violation(SREFX to ACT0)", $realtime); + end + + // DPDXN to Precharge + if (($realtime - DPDN_chk < tDPDX) && (dpdn_check_start)) begin + $display ("Time = %t : ERROR : Pwrup violation(DPDX to ACT0)", $realtime); + end + + // ACTIVE to ACTIVE command period + if ($realtime - RC_chk0 < tRC) begin + //$display ("%m : at time %t ERROR: tRC violation during Activate bank 0", $realtime); + $display ("Time = %t : ERROR : tRC violation (ACT0 to ACT0) ", $realtime); + end + + // Precharge to Activate bank 0 + if ($realtime - RP_chk0 < tRP) begin + //$display ("%m : at time %t ERROR: tRP violation during Activate bank 0", $realtime); + $display ("Time = %t : ERROR : tRP violation (PRECHARGE0 to PRECHARGE0) ", $realtime); + end + + // Record variables + Act_b0 = 1'b1; + Pc_b0 = 1'b0; + B0_row_addr = addr [no_of_addr - 1 : 0]; + RAS_chk0 = $realtime; + RC_chk0 = $realtime; + RCD_chk0 = $realtime; + end + + // Activate bank 1 + if (ba === 2'b01 && Pc_b1 === 1'b1) begin + // Debug Message + if (Debug) begin + //$display ("%m : at time %t ACT : bank = 1 Row = %d", $realtime, addr); + $display ("Time = %t : OPERATION = ACT : bank = 1 Row = 'h%h", $realtime, addr); + end + + // DPDXN to Precharge + if (($realtime - DPDN_chk < tDPDX) && (dpdn_check_start)) begin + $display ("Time = %t : ERROR : Pwrup violation(DPDX to ACT1)", $realtime); + end + + // Self exit to ACTIVE + if ($realtime - SELF_chk < tXSR) begin + $display ("Time = %t : ERROR : tXSR violation(SREFX to ACT1)", $realtime); + end + + // ACTIVE to ACTIVE command period + if ($realtime - RC_chk1 < tRC) begin + //$display ("%m : at time %t ERROR: tRC violation during Activate bank 1", $realtime); + $display ("Time = %t : ERROR : tRC violation (ACT1 to ACT1) ", $realtime); + end + + // Precharge to Activate bank 1 + if ($realtime - RP_chk1 < tRP) begin + //$display ("%m : at time %t ERROR: tRP violation during Activate bank 1", $realtime); + $display ("Time = %t : ERROR : tRP violation (PRECHARGE1 to PRECHARGE1) ", $realtime); + end + + // Record variables + Act_b1 = 1'b1; + Pc_b1 = 1'b0; + B1_row_addr = addr [no_of_addr - 1 : 0]; + RAS_chk1 = $realtime; + RC_chk1 = $realtime; + RCD_chk1 = $realtime; + end + + // Activate bank 2 + if (ba === 2'b10 && Pc_b2 === 1'b1) begin + // Debug Message + if (Debug) begin + //$display ("%m : at time %t ACT : bank = 2 Row = %d", $realtime, addr); + $display ("Time = %t : OPERATION = ACT : bank = 2 Row = 'h%h", $realtime, addr); + end + + // DPDXN to Precharge + if (($realtime - DPDN_chk < tDPDX) && (dpdn_check_start)) begin + $display ("Time = %t : ERROR : Pwrup violation(DPDX to ACT2)", $realtime); + end + + // Self exit to ACTIVE + if ($realtime - SELF_chk < tXSR) begin + $display ("Time = %t : ERROR : tXSR violation(SREFX to ACT2)", $realtime); + end + + // ACTIVE to ACTIVE command period + if ($realtime - RC_chk2 < tRC) begin + //$display ("%m : at time %t ERROR: tRC violation during Activate bank 2", $realtime); + $display ("Time = %t : ERROR : tRC violation (ACT2 to ACT2) ", $realtime); + end + + // Precharge to Activate bank 2 + if ($realtime - RP_chk2 < tRP) begin + //$display ("%m : at time %t ERROR: tRP violation during Activate bank 2", $realtime); + $display ("Time = %t : ERROR : tRP violation (PRECHARGE2 to PRECHARGE2) ", $realtime); + end + + // Record variables + Act_b2 = 1'b1; + Pc_b2 = 1'b0; + B2_row_addr = addr [no_of_addr - 1 : 0]; + RAS_chk2 = $realtime; + RC_chk2 = $realtime; + RCD_chk2 = $realtime; + end + + // Activate bank 3 + if (ba === 2'b11 && Pc_b3 === 1'b1) begin + // Debug Message + if (Debug) begin + //$display ("%m : at time %t ACT : bank = 3 Row = %d", $realtime, addr); + $display ("Time = %t : OPERATION = ACT : bank = 3 Row = 'h%h", $realtime, addr); + end + + // DPDXN to Precharge + if (($realtime - DPDN_chk < tDPDX) && (dpdn_check_start)) begin + $display ("Time = %t : ERROR : Pwrup violation(DPDX to ACT3)", $realtime); + end + + // Self exit to ACTIVE + if ($realtime - SELF_chk < tXSR) begin + $display ("Time = %t : ERROR : tXSR violation(SREFX to ACT3)", $realtime); + end + + // ACTIVE to ACTIVE command period + if ($realtime - RC_chk3 < tRC) begin + //$display ("%m : at time %t ERROR: tRC violation during Activate bank 3", $realtime); + $display ("Time = %t : ERROR : tRC violation (ACT1 to ACT3) ", $realtime); + end + + // Precharge to Activate bank 3 + if ($realtime - RP_chk3 < tRP) begin + //$display ("%m : at time %t ERROR: tRP violation during Activate bank 3", $realtime); + $display ("Time = %t : ERROR : tRP violation (PRECHARGE3 to PRECHARGE3) ", $realtime); + end + + // Record variables + Act_b3 = 1'b1; + Pc_b3 = 1'b0; + B3_row_addr = addr [no_of_addr - 1 : 0]; + RAS_chk3 = $realtime; + RC_chk3 = $realtime; + RCD_chk3 = $realtime; + end + + // Active other bank to Active bank A + if ((Prev_bank != ba) && ($realtime - RRD_chk < tRRD) && (ba === 2'b00)) begin + //$display ("%m : at time %t ERROR: tRRD violation during Activate bank = %d", $realtime, ba); + $display ("Time = %t : ERROR : tRRD violation(ACT Others to ACT0) ", $realtime); + end + + // Active other bank to Active bank B + if ((Prev_bank != ba) && ($realtime - RRD_chk < tRRD) && (ba === 2'b01)) begin + //$display ("%m : at time %t ERROR: tRRD violation during Activate bank = %d", $realtime, ba); + $display ("Time = %t : ERROR : tRRD violation(ACT Others to ACT1) ", $realtime); + end + + // Active other bank to Active bank C + if ((Prev_bank != ba) && ($realtime - RRD_chk < tRRD) && (ba === 2'b10)) begin + //$display ("%m : at time %t ERROR: tRRD violation during Activate bank = %d", $realtime, ba); + $display ("Time = %t : ERROR : tRRD violation(ACT Others to ACT2) ", $realtime); + end + + // Active other bank to Active bank D + if ((Prev_bank != ba) && ($realtime - RRD_chk < tRRD) && (ba === 2'b11)) begin + //$display ("%m : at time %t ERROR: tRRD violation during Activate bank = %d", $realtime, ba); + $display ("Time = %t : ERROR : tRRD violation(ACT Others to ACT3) ", $realtime); + end + + // Auto Refresh to Activate + if ($realtime - RFC_chk < tRFC) begin + //$display ("%m : at time %t ERROR: tRFC violation during Activate bank = %d", $realtime, ba); + $display ("Time = %t : ERROR : tRFC violation(AREF to ACT)", $realtime); + end + + // Load Mode Register to Active + if (MRD_chk < tMRD ) begin + //$display ("%m : at time %t ERROR: tMRD violation during Activate bank = %d", $realtime, ba); + $display ("Time = %t : ERROR : tMRD violation(MRS to ACT)", $realtime); + end + + // Record variables for checking violation + RRD_chk = $realtime; + Prev_bank = ba; + end + + // Precharge Block + if (Prech_enable == 1'b1) begin + // Load Mode Register to Precharge + if ($realtime - MRD_chk < tMRD) begin + //$display ("%m : at time %t ERROR: tMRD violaiton during Precharge", $realtime); + $display ("Time = %t : ERROR : tMRD violation(MRS to PRECHARGE)", $realtime); + end + + //Precharge bank 0 + + if ((addr[10] === 1'b1 || (addr[10] === 1'b0 && ba === 2'b00)) && Act_b0 === 1'b1) begin + Act_b0 = 1'b0; + Pc_b0 = 1'b1; + RP_chk0 = $realtime; + + if (Debug) begin + //$display ("%m : at time %t ACT : bank = 0 Row = %d", $realtime, addr); + $display ("Time = %t : OPERATION = PCHG : bank = 0 ", $realtime); + end + + // DPDXN to Precharge + if (($realtime - DPDN_chk < tDPDX) && (dpdn_check_start)) begin + $display ("Time = %t : ERROR : Pwrup violation(DPDX to PRECHARGE0)", $realtime); + end + + // Activate to Precharge + if ($realtime - RAS_chk0 < tRAS) begin + //$display ("%m : at time %t ERROR: tRAS violation during Precharge", $realtime); + $display ("Time = %t : ERROR : tRAS violation(ACT0 to PRECHARGE0)", $realtime); + end + + // tWR violation check for write + if ($realtime - WR_chkm0 < tDPLm) begin + //$display ("%m : at time %t ERROR: tWR violation during Precharge", $realtime); + $display ("Time = %t : ERROR : tDPL violation(LAST DATA to PRECHARGE0)", $realtime); + end + end + + // Precharge bank 1 + + if ((addr[10] === 1'b1 || (addr[10] === 1'b0 && ba === 2'b01)) && Act_b1 === 1'b1) begin + Act_b1 = 1'b0; + Pc_b1 = 1'b1; + RP_chk1 = $realtime; + + if (Debug) begin + //$display ("%m : at time %t ACT : bank = 1 Row = %d", $realtime, addr); + $display ("Time = %t : OPERATION = PCHG : bank = 1 ", $realtime); + end + + // DPDXN to Precharge + if (($realtime - DPDN_chk < tDPDX) && (dpdn_check_start)) begin + $display ("Time = %t : ERROR : Pwrup violation(DPDX to PRECHARGE1)", $realtime); + end + + // Activate to Precharge + if ($realtime - RAS_chk1 < tRAS) begin + //$display ("%m : at time %t ERROR: tRAS violation during Precharge", $realtime); + $display ("Time = %t : ERROR : tRAS violation(ACT1 to PRECHARGE1)", $realtime); + end + + // tWR violation check for write + if ($realtime - WR_chkm1 < tDPLm) begin + //$display ("%m : at time %t ERROR: tWR violation during Precharge", $realtime); + $display ("Time = %t : ERROR : tDPL violation(LAST DATA to PRECHARGE1)", $realtime); + end + end + + // Precharge bank 2 + + if ((addr[10] === 1'b1 || (addr[10] === 1'b0 && ba === 2'b10)) && Act_b2 === 1'b1) begin + Act_b2 = 1'b0; + Pc_b2 = 1'b1; + RP_chk2 = $realtime; + + if (Debug) begin + //$display ("%m : at time %t ACT : bank = 2 Row = %d", $realtime, addr); + $display ("Time = %t : OPERATION = PCHG : bank = 2 ", $realtime); + end + + // DPDXN to Precharge + if (($realtime - DPDN_chk < tDPDX) && (dpdn_check_start)) begin + $display ("Time = %t : ERROR : Pwrup violation(DPDX to PRECHARGE2)", $realtime); + end + + // Activate to Precharge + if ($realtime - RAS_chk2 < tRAS) begin + //$display ("%m : at time %t ERROR: tRAS violation during Precharge", $realtime); + $display ("Time = %t : ERROR : tRAS violation(ACT2 to PRECHARGE2)", $realtime); + end + + // tWR violation check for write + if ($realtime - WR_chkm2 < tDPLm) begin + //$display ("%m : at time %t ERROR: tWR violation during Precharge", $realtime); + $display ("Time = %t : ERROR : tDPL violation(LAST DATA to PRECHARGE2)", $realtime); + end + end + + // Precharge bank 3 + + if ((addr[10] === 1'b1 || (addr[10] === 1'b0 && ba === 2'b11)) && Act_b3 === 1'b1) begin + Act_b3 = 1'b0; + Pc_b3 = 1'b1; + RP_chk3 = $realtime; + + if (Debug) begin + //$display ("%m : at time %t ACT : bank = 3 Row = %d", $realtime, addr); + $display ("Time = %t : OPERATION = PCHG : bank = 3 ", $realtime); + end + + // DPDXN to Precharge + if (($realtime - DPDN_chk < tDPDX) && (dpdn_check_start)) begin + $display ("Time = %t : ERROR : Pwrup violation(DPDX to PRECHARGE3)", $realtime); + end + + // Activate to Precharge + if ($realtime - RAS_chk3 < tRAS) begin + //$display ("%m : at time %t ERROR: tRAS violation during Precharge", $realtime); + $display ("Time = %t : ERROR : tRAS violation(ACT3 to PRECHARGE3)", $realtime); + end + + // tWR violation check for write + if ($realtime - WR_chkm3 < tDPLm) begin + //$display ("%m : at time %t ERROR: tWR violation during Precharge", $realtime); + $display ("Time = %t : ERROR : tDPL violation(LAST DATA to PRECHARGE3)", $realtime); + end + end + + + // Terminate a Write Immediately (if same bank or all banks) + if (Data_in_enable === 1'b1 && (bank === ba || addr[10] === 1'b1)) begin + Data_in_enable = 1'b0; + end + + // Precharge Command Pipeline for Read + if (Cas_latency_3 === 1'b1) begin + Command[2] = `PRECH; + bank_precharge[2] = ba; + A10_precharge[2] = addr[10]; + end else if (Cas_latency_2 === 1'b1) begin + Command[1] = `PRECH; + bank_precharge[1] = ba; + A10_precharge[1] = addr[10]; + end + end + + // Burst terminate + if (Burst_term === 1'b1) begin + // Terminate a Write Immediately + if (Data_in_enable == 1'b1) begin + Data_in_enable = 1'b0; + end + + // Terminate a Read Depend on CAS Latency + if (Cas_latency_3 === 1'b1) begin + Command[2] = `BST; + end else if (Cas_latency_2 == 1'b1) begin + Command[1] = `BST; + end + + // Display debug message + if (Debug) begin + //$display ("%m : at time %t BST : Burst Terminate",$realtime); + $display ("Time = %t : OPERATION = BST : Burst Stop", $realtime); + end + end + + // Read, Write, Column Latch + if (Read_enable === 1'b1) begin + + Read_cmd_received = 1'b1; + Read_cmd_received_cke = 1'b1; + //Read_cmd_count = 0; + Count_at_Read = Read_cmd_count; + Read_cmd_count_cke = 0; + Write_cmd_received_cke = 1'b0; + + // Check to see if bank is open (ACT) + if ((ba == 2'b00 && Pc_b0 == 1'b1) || (ba == 2'b01 && Pc_b1 == 1'b1) || + (ba == 2'b10 && Pc_b2 == 1'b1) || (ba == 2'b11 && Pc_b3 == 1'b1)) begin + //$display("%m : at time %t ERROR: bank is not Activated for Read", $realtime); + $display ("Time = %t : ERROR : bank is not Activated for Read", $realtime); + end + + // Activate to Read or Write + if ((ba == 2'b00) && ($realtime - RCD_chk0 < tRCD) || + (ba == 2'b01) && ($realtime - RCD_chk1 < tRCD) || + (ba == 2'b10) && ($realtime - RCD_chk2 < tRCD) || + (ba == 2'b11) && ($realtime - RCD_chk3 < tRCD)) begin + //$display("%m : at time %t ERROR: tRCD violation during Read", $realtime); + $display ("Time = %t : ERROR : tRCD violation(ACT to READ)", $realtime); + end + + // CAS Latency pipeline + if (Cas_latency_3 == 1'b1) begin + Command[2] = `READ; + Col_addr[2] = addr; + bank_addr[2] = ba; + end else if (Cas_latency_2 == 1'b1) begin + Command[1] = `READ; + Col_addr[1] = addr; + bank_addr[1] = ba; + end + + // Read interrupt Write (terminate Write immediately) + if (Data_in_enable == 1'b1) begin + Data_in_enable = 1'b0; + + // Interrupting a Write with Autoprecharge + if (Auto_precharge[RW_interrupt_bank] == 1'b1 && Write_precharge[RW_interrupt_bank] == 1'b1) begin + RW_interrupt_write[RW_interrupt_bank] = 1'b1; + RW_interrupt_counter[RW_interrupt_bank] = 0; + + // Display debug message + if (Debug) begin + //$display ("%m : at time %t NOTE : Read interrupt Write with Autoprecharge", $realtime); + $display ("Time = %t : OPERATION = Read interrupt Write with Autoprecharge", $realtime); + end + end + end + + // Read with Auto Precharge + if (addr[10] == 1'b1) begin + Auto_precharge[ba] = 1'b1; + Count_precharge[ba] = 0; + RW_interrupt_bank = ba; + Read_precharge[ba] = 1'b1; + end + end + + // Write Command + if (Write_enable == 1'b1) begin + + RIW_violate=1'b0; + if ((Pre_Dout_Drive_Flag == 1'b1) || (Dout_Drive_Flag == 1'b1)) begin + $display ("Time = %t : ERROR : Read and Write Data collision", $realtime); + end + else if ((Data_out_enable == 1'b1) && (&(dqm_save[1]) != 1'b1)) begin + $display ("Time = %t : ERROR : Read and Write Data collision", $realtime); + end + + + Write_cmd_received_cke=1'b1; + Read_cmd_received=1'b0; + Read_cmd_received_cke=1'b0; + Write_cmd_count_cke=1'b0; + + // Activate to Write + if ((ba == 2'b00 && Pc_b0 == 1'b1) || (ba == 2'b01 && Pc_b1 == 1'b1) || + (ba == 2'b10 && Pc_b2 == 1'b1) || (ba == 2'b11 && Pc_b3 == 1'b1)) begin + //$display("%m : at time %t ERROR: bank is not Activated for Write", $realtime); + $display ("Time = %t : ERROR : bank is not Activated for Write", $realtime); + end + + if ((ba == 2'b00) && ($realtime - RCD_chk0 < tRCD)) begin + $display ("Time = %t : ERROR = %t, %t: tRCD violation(ACT0 to WRITE)", $realtime, RCD_chk0,$realtime-RCD_chk0); + end + if ((ba == 2'b01) && ($realtime - RCD_chk1 < tRCD)) begin + $display ("Time = %t : ERROR = %t, %t: tRCD violation(ACT1 to WRITE)", $realtime, RCD_chk1,$realtime-RCD_chk1); + end + if ((ba == 2'b10) && ($realtime - RCD_chk2 < tRCD)) begin + $display ("Time = %t : ERROR = %t, %t: tRCD violation(ACT2 to WRITE)", $realtime, RCD_chk2,$realtime-RCD_chk2); + end + if ((ba == 2'b11) && ($realtime - RCD_chk3 < tRCD)) begin + $display ("Time = %t : ERROR = %t, %t: tRCD violation(ACT3 to WRITE)", $realtime, RCD_chk3,$realtime-RCD_chk3); + end + + + // Latch Write command, bank, and Column + Command[0] = `WRITE; + Command[1] = `NOP; + Col_addr[0] = addr; + bank_addr[0] = ba; + + // Write interrupt Write (terminate Write immediately) + if (Data_in_enable == 1'b1) begin + Data_in_enable = 1'b0; + + // Interrupting a Write with Autoprecharge + if (Auto_precharge[RW_interrupt_bank] == 1'b1 && Write_precharge[RW_interrupt_bank] == 1'b1) begin + RW_interrupt_write[RW_interrupt_bank] = 1'b1; + + // Display debug message + if (Debug) begin + //$display ("%m : at time %t NOTE : Read bank %d interrupt Write bank %d with Autoprecharge", $realtime, ba, RW_interrupt_bank); + $display ("Time = %t : OPERATION = Write bank %d interrupt Write bank %d with Autoprecharge", $realtime, ba, RW_interrupt_bank); + + end + end + end + + // Write interrupt Read (terminate Read immediately) + if (Data_out_enable == 1'b1) begin + Data_out_enable = 1'b0; + + // Interrupting a Read with Autoprecharge + if (Auto_precharge[RW_interrupt_bank] == 1'b1 && Read_precharge[RW_interrupt_bank] == 1'b1) begin + RW_interrupt_read[RW_interrupt_bank] = 1'b1; + + // Display debug message + if (Debug) begin + //$display ("%m : at time %t NOTE : Write bank %d interrupt Read bank %d with Autoprecharge", $realtime, ba, RW_interrupt_bank); + $display ("Time = %t : OPERATION = Write bank %d interrupt Read bank %d with Autoprecharge", $realtime, ba, RW_interrupt_bank); + end + end + end + + // Write with Auto Precharge + if (addr[10] == 1'b1) begin + Auto_precharge[ba] = 1'b1; + Count_precharge[ba] = 0; + RW_interrupt_bank = ba; + Write_precharge[ba] = 1'b1; + end + end + + /* + Write with Auto Precharge Calculation + The device start internal precharge when: + 1. Meet minimum tRAS requirement + and 2. tWR cycle(s) after last valid data + or 3. Interrupt by a Read or Write (with or without Auto Precharge) + + Note: Model is starting the internal precharge 1 cycle after they meet all the + requirement but tRP will be compensate for the time after the 1 cycle. + */ + if ((Auto_precharge[0] == 1'b1) && (Write_precharge[0] == 1'b1)) begin + if ((($realtime - RAS_chk0 >= tRAS) && // Case 1 + (((Burst_length_1 == 1'b1 || Write_burst_mode == 1'b1) && Count_precharge [0] >= 1) || // Case 2 + (Burst_length_2 == 1'b1 && Count_precharge [0] >= 2) || + (Burst_length_4 == 1'b1 && Count_precharge [0] >= 4) || + (Burst_length_8 == 1'b1 && Count_precharge [0] >= 8))) || + (RW_interrupt_write[0] == 1'b1 && RW_interrupt_counter[0] >= 1)) begin // Case 3 + Auto_precharge[0] = 1'b0; + Write_precharge[0] = 1'b0; + RW_interrupt_write[0] = 1'b0; + Pc_b0 = 1'b1; + Act_b0 = 1'b0; + RP_chk0 = $realtime + tDPLa; + if (Debug) begin + //$display ("%m : at time %t NOTE : Start Internal Auto Precharge for bank 0", $realtime); + $display ("Time = %t : OPERATION = Start Internal Auto Precharge for bank 0", $realtime+tDPLa); + end + end + end + if ((Auto_precharge[1] == 1'b1) && (Write_precharge[1] == 1'b1)) begin + if ((($realtime - RAS_chk1 >= tRAS) && // Case 1 + (((Burst_length_1 == 1'b1 || Write_burst_mode == 1'b1) && Count_precharge [1] >= 1) || // Case 2 + (Burst_length_2 == 1'b1 && Count_precharge [1] >= 2) || + (Burst_length_4 == 1'b1 && Count_precharge [1] >= 4) || + (Burst_length_8 == 1'b1 && Count_precharge [1] >= 8))) || + (RW_interrupt_write[1] == 1'b1 && RW_interrupt_counter[1] >= 1)) begin // Case 3 + Auto_precharge[1] = 1'b0; + Write_precharge[1] = 1'b0; + RW_interrupt_write[1] = 1'b0; + Pc_b1 = 1'b1; + Act_b1 = 1'b0; + RP_chk1 = $realtime + tDPLa; + if (Debug) begin + //$display ("%m : at time %t NOTE : Start Internal Auto Precharge for bank 1", $realtime); + $display ("Time = %t : OPERATION = Start Internal Auto Precharge for bank 1", $realtime+tDPLa); + end + end + end + if ((Auto_precharge[2] == 1'b1) && (Write_precharge[2] == 1'b1)) begin + if ((($realtime - RAS_chk2 >= tRAS) && // Case 1 + (((Burst_length_1 == 1'b1 || Write_burst_mode == 1'b1) && Count_precharge [2] >= 1) || // Case 2 + (Burst_length_2 == 1'b1 && Count_precharge [2] >= 2) || + (Burst_length_4 == 1'b1 && Count_precharge [2] >= 4) || + (Burst_length_8 == 1'b1 && Count_precharge [2] >= 8))) || + (RW_interrupt_write[2] == 1'b1 && RW_interrupt_counter[2] >= 1)) begin // Case 3 + Auto_precharge[2] = 1'b0; + Write_precharge[2] = 1'b0; + RW_interrupt_write[2] = 1'b0; + Pc_b2 = 1'b1; + Act_b2 = 1'b0; + RP_chk2 = $realtime + tDPLa; + if (Debug) begin + //$display ("%m : at time %t NOTE : Start Internal Auto Precharge for bank 2", $realtime); + $display ("Time = %t : OPERATION = Start Internal Auto Precharge for bank 2", $realtime+tDPLa); + end + end + end + if ((Auto_precharge[3] == 1'b1) && (Write_precharge[3] == 1'b1)) begin + if ((($realtime - RAS_chk3 >= tRAS) && // Case 1 + (((Burst_length_1 == 1'b1 || Write_burst_mode == 1'b1) && Count_precharge [3] >= 1) || // Case 2 + (Burst_length_2 == 1'b1 && Count_precharge [3] >= 2) || + (Burst_length_4 == 1'b1 && Count_precharge [3] >= 4) || + (Burst_length_8 == 1'b1 && Count_precharge [3] >= 8))) || + (RW_interrupt_write[3] == 1'b1 && RW_interrupt_counter[3] >= 1)) begin // Case 3 + Auto_precharge[3] = 1'b0; + Write_precharge[3] = 1'b0; + RW_interrupt_write[3] = 1'b0; + Pc_b3 = 1'b1; + Act_b3 = 1'b0; + RP_chk3 = $realtime + tDPLa; + if (Debug) begin + //$display ("%m : at time %t NOTE : Start Internal Auto Precharge for bank 3", $realtime); + $display ("Time = %t : OPERATION = Start Internal Auto Precharge for bank 3", $realtime+tDPLa); + end + end + end + + // Read with Auto Precharge Calculation + // The device start internal precharge: + // 1. Meet minimum tRAS requirement + // and 2. CAS Latency - 1 cycles before last burst + // or 3. Interrupt by a Read or Write (with or without AutoPrecharge) + if ((Auto_precharge[0] == 1'b1) && (Read_precharge[0] == 1'b1)) begin + if ((($realtime - RAS_chk0 >= tRAS) && // Case 1 + ((Burst_length_1 == 1'b1 && Count_precharge[0] >= 1) || // Case 2 + (Burst_length_2 == 1'b1 && Count_precharge[0] >= 2) || + (Burst_length_4 == 1'b1 && Count_precharge[0] >= 4) || + (Burst_length_8 == 1'b1 && Count_precharge[0] >= 8))) || + (RW_interrupt_read[0] == 1'b1)) begin // Case 3 + Pc_b0 = 1'b1; + Act_b0 = 1'b0; + RP_chk0 = $realtime; + Auto_precharge[0] = 1'b0; + Read_precharge[0] = 1'b0; + RW_interrupt_read[0] = 1'b0; + if (Debug) begin + //$display ("%m : at time %t NOTE : Start Internal Auto Precharge for bank 0", $realtime); + $display ("Time = %t : OPERATION = Start Internal Auto Precharge for bank 0", $realtime); + end + end + end + if ((Auto_precharge[1] == 1'b1) && (Read_precharge[1] == 1'b1)) begin + if ((($realtime - RAS_chk1 >= tRAS) && + ((Burst_length_1 == 1'b1 && Count_precharge[1] >= 1) || + (Burst_length_2 == 1'b1 && Count_precharge[1] >= 2) || + (Burst_length_4 == 1'b1 && Count_precharge[1] >= 4) || + (Burst_length_8 == 1'b1 && Count_precharge[1] >= 8))) || + (RW_interrupt_read[1] == 1'b1)) begin + Pc_b1 = 1'b1; + Act_b1 = 1'b0; + RP_chk1 = $realtime; + Auto_precharge[1] = 1'b0; + Read_precharge[1] = 1'b0; + RW_interrupt_read[1] = 1'b0; + if (Debug) begin + //$display ("%m : at time %t NOTE : Start Internal Auto Precharge for bank 1", $realtime); + $display ("Time = %t : OPERATION = Start Internal Auto Precharge for bank 1", $realtime); + end + end + end + if ((Auto_precharge[2] == 1'b1) && (Read_precharge[2] == 1'b1)) begin + if ((($realtime - RAS_chk2 >= tRAS) && + ((Burst_length_1 == 1'b1 && Count_precharge[2] >= 1) || + (Burst_length_2 == 1'b1 && Count_precharge[2] >= 2) || + (Burst_length_4 == 1'b1 && Count_precharge[2] >= 4) || + (Burst_length_8 == 1'b1 && Count_precharge[2] >= 8))) || + (RW_interrupt_read[2] == 1'b1)) begin + Pc_b2 = 1'b1; + Act_b2 = 1'b0; + RP_chk2 = $realtime; + Auto_precharge[2] = 1'b0; + Read_precharge[2] = 1'b0; + RW_interrupt_read[2] = 1'b0; + if (Debug) begin + //$display ("%m : at time %t NOTE : Start Internal Auto Precharge for bank 2", $realtime); + $display ("Time = %t : OPERATION = Start Internal Auto Precharge for bank 2", $realtime); + end + end + end + if ((Auto_precharge[3] == 1'b1) && (Read_precharge[3] == 1'b1)) begin + if ((($realtime - RAS_chk3 >= tRAS) && + ((Burst_length_1 == 1'b1 && Count_precharge[3] >= 1) || + (Burst_length_2 == 1'b1 && Count_precharge[3] >= 2) || + (Burst_length_4 == 1'b1 && Count_precharge[3] >= 4) || + (Burst_length_8 == 1'b1 && Count_precharge[3] >= 8))) || + (RW_interrupt_read[3] == 1'b1)) begin + Pc_b3 = 1'b1; + Act_b3 = 1'b0; + RP_chk3 = $realtime; + Auto_precharge[3] = 1'b0; + Read_precharge[3] = 1'b0; + RW_interrupt_read[3] = 1'b0; + if (Debug) begin + //$display ("%m : at time %t NOTE : Start Internal Auto Precharge for bank 3", $realtime); + $display ("Time = %t : OPERATION = Start Internal Auto Precharge for bank 3", $realtime); + end + end + end + + // CKE Function + if (cke === 1'b0) begin + if (Sref_enable === 1'b1) begin + state_self = 1'b1; + if (Debug) begin + $display ("Time = %t : OPERATION = SREF : Self Refresh", $realtime); + if (EMode_reg[2:0]==3'b000) $display (" Refresh Full Bank"); + + if (EMode_reg[2:0]==3'b001) begin + $display (" Refresh Only TWO Bank"); + abbank_init; + end + + if (EMode_reg[2:0]==3'b010) begin + $display (" Refresh Only One Bank(BANK A)"); + bbank_init; + end + if (EMode_reg[2:0]==3'b101) begin + $display (" Refresh Only half of one Bank(BANK A, A10=0)"); + half_init; + end + if (EMode_reg[2:0]==3'b110) begin + $display (" Refresh Only Quarter of one Bank(BANK A, A10=0)"); + quat_init; + end + end + + // Precharge to Auto Refresh + if (($realtime - RP_chk0 < tRP) || ($realtime - RP_chk1 < tRP) || + ($realtime - RP_chk2 < tRP) || ($realtime - RP_chk3 < tRP)) + $display ("Time = %t : ERROR : tRP violation(PRECHARGE to SREF)", $realtime); + + // Precharge to Refresh + if (Pc_b0 === 1'b0 || Pc_b1 === 1'b0 || Pc_b2 === 1'b0 || Pc_b3 === 1'b0) + $display ("Time = %t : ERROR : All banks must be Precharged before SREF", $realtime); + + // Load Mode Register to Self Refresh + if (MRD_chk < tMRD) + $display ("Time = %t : ERROR : tMRD violation(MRS to SREF)", $realtime); + + end else if (Deep_pwrdn == 1'b1) begin + state_dpdn = 1'b1; + dpdn_check_start = 1'b1; + Act_b0 = 0; Act_b1 = 0; Act_b2 = 0; Act_b3 = 0; + Pc_b0 = 1; Pc_b1 = 1; Pc_b2 = 1; Pc_b3 = 1; + mem_init; + if (Debug) $display ("Time = %t : OPERATION = DPDN : Deep Powerdown", $realtime); + + // Precharge to Auto Refresh + if (($realtime - RP_chk0 < tRP) || ($realtime - RP_chk1 < tRP) || + ($realtime - RP_chk2 < tRP) || ($realtime - RP_chk3 < tRP)) + $display ("Time = %t : ERROR : tRP violation(PRECHARGE to DPDN)", $realtime); + + // Precharge to Refresh + if (Pc_b0 === 1'b0 || Pc_b1 === 1'b0 || Pc_b2 === 1'b0 || Pc_b3 === 1'b0) + $display ("Time = %t : ERROR : All banks must be Precharged before DPDN", $realtime); + + end else if (act_pwrdn == 1'b1) begin + state_act_pwrdn = 1'b1; + if (Debug) $display ("Time = %t : OPERATION = APDN : Active Power down", $realtime); + end else if (pch_pwrdn == 1'b1) begin + state_pre_pwrdn = 1'b1; + if (Debug) $display ("Time = %t : OPERATION = PPDN : Precharge Power down", $realtime); + end else if (clk_suspend_write == 1'b1) begin + if (Debug) $display ("Time = %t : OPERATION = CKSW : Clock Suspend during Write", $realtime); + end else if (clk_suspend_read == 1'b1) begin + if (Debug) $display ("Time = %t : OPERATION = CKSR : Clock Suspend during Read", $realtime); + end + end + + // Internal Precharge or Bst + if (Command[0] == `PRECH) begin // Precharge terminate a read with same bank or all banks + if (bank_precharge[0] == bank || A10_precharge[0] == 1'b1) begin + if (Data_out_enable == 1'b1) begin + Data_out_enable = 1'b0; + end + end + end else if (Command[0] == `BST) begin // BST terminate a read to current bank + if (Data_out_enable == 1'b1) begin + Data_out_enable = 1'b0; + end + end + + if (Data_out_enable == 1'b0) begin + dq_reg <= #tOH {no_of_data{1'bz}}; + Dout_Drive_Flag <= #tOH 1'b0; + end + + // Detect Read or Write command + if (Command[0] == `READ) begin + bank = bank_addr[0]; + Col = Col_addr[0]; + Col_brst = Col_addr[0]; + case (bank_addr[0]) + 2'b00 : Row = B0_row_addr; + 2'b01 : Row = B1_row_addr; + 2'b10 : Row = B2_row_addr; + 2'b11 : Row = B3_row_addr; + + endcase + Burst_counter = 0; + Data_in_enable = 1'b0; + Data_out_enable = 1'b1; + end else if (Command[0] == `WRITE) begin + bank = bank_addr[0]; + Col = Col_addr[0]; + Col_brst = Col_addr[0]; + case (bank_addr[0]) + 2'b00 : Row = B0_row_addr; + 2'b01 : Row = B1_row_addr; + 2'b10 : Row = B2_row_addr; + 2'b11 : Row = B3_row_addr; + endcase + Burst_counter = 0; + Data_in_enable = 1'b1; + Data_out_enable = 1'b0; + end + + // DQ buffer (Driver/Receiver) + if (Data_in_enable == 1'b1) begin // Writing Data to Memory + // Array buffer + case (bank) + 2'b00 : dq_dqm = bank0 [{Row, Col}]; + 2'b01 : dq_dqm = bank1 [{Row, Col}]; + 2'b10 : dq_dqm = bank2 [{Row, Col}]; + 2'b11 : dq_dqm = bank3 [{Row, Col}]; + endcase + + // dqm operation + if (dqm[0] == 1'b0) begin + dq_dqm [ 7 : 0] = dq [ 7 : 0 ] & dq [ 7 : 0 ]; + end + if (dqm[1] == 1'b0) begin + dq_dqm [15 : 8] = dq [15 : 8] & dq [15 : 8]; + end + + + + // Write to memory + case (bank) + 2'b00 : bank0 [{Row, Col}] = dq_dqm; + 2'b01 : bank1 [{Row, Col}] = dq_dqm; + 2'b10 : bank2 [{Row, Col}] = dq_dqm; + 2'b11 : bank3 [{Row, Col}] = dq_dqm; + endcase + + // Display debug message + if (dqm !== 2'b11) begin + // Record tWR for manual precharge + if (bank == 2'b00) WR_chkm0 = $realtime; + if (bank == 2'b01) WR_chkm1 = $realtime; + if (bank == 2'b10) WR_chkm2 = $realtime; + if (bank == 2'b11) WR_chkm3 = $realtime; + + if (Debug) begin + //$display("%m : at time %t WRITE: bank = %d Row = %d, Col = %d, Data = %d", $realtime, bank, Row, Col, dq_dqm); + $display ("Time = %t : OPERATION = WRITE : bank = %d Row = 'h%h, Col = 'h%h, Data = 'h%h", $realtime, bank, Row, Col, dq_dqm); + end + end else begin + if (Debug) begin + //$display("%m : at time %t WRITE: bank = %d Row = %d, Col = %d, Data = Hi-Z due to DQM", $realtime, bank, Row, Col); + $display ("Time = %t : OPERATION = WRITE : bank = %d Row = 'h%h, Col = 'h%h, Data = Hi-Z due to DQM", $realtime, bank, Row, Col); + end + end + + // Advance burst counter subroutine + + if(Cas_latency_2 == 1) begin + + #tHZ2 Burst_decode; + + end else if(Cas_latency_3 == 1) begin + + #tHZ3 Burst_decode; + + end + + + end else if (Data_out_enable == 1'b1) begin // Reading Data from Memory + // Array buffer + case (bank) + 2'b00 : dq_dqm = bank0[{Row, Col}]; + 2'b01 : dq_dqm = bank1[{Row, Col}]; + 2'b10 : dq_dqm = bank2[{Row, Col}]; + 2'b11 : dq_dqm = bank3[{Row, Col}]; + endcase + + + // dqm operation + if (dqm_reg0 [0] == 1'b1) begin + dq_dqm [ 7 : 0] = 8'bz; + end + if (dqm_reg0 [1] == 1'b1) begin + dq_dqm [15 : 8] = 8'bz; + end + + if(Cas_latency_2 ==1) begin + + // Display debug message + if ( &(dqm_reg0) != 1'b1) begin + dq_reg = #tAC2 dq_dqm; + Dout_Drive_Flag = 1'b1; + if (Debug) begin + //$display("%m : at time %t READ : bank = %d Row = %d, Col = %d, Data = %d", $realtime, bank, Row, Col, dq_reg); + $display ("Time = %t : OPERATION = READ : bank = %d Row = 'h%h, Col = 'h%h, Data = 'h%h", $realtime, bank, Row, Col, dq_reg); + end + end else begin + dq_reg = #tHZ2 {no_of_data{1'bz}}; + Dout_Drive_Flag = 1'b0; + if (Debug) begin + //$display("%m : at time %t READ : bank = %d Row = %d, Col = %d, Data = Hi-Z due to DQM", $realtime, bank, Row, Col); + $display ("Time = %t : OPERATION = READ : bank = %d Row = 'h%h, Col = 'h%h, Data = Hi-Z due to DQM", $realtime, bank, Row, Col); + + end + end + + end else if(Cas_latency_3 ==1) begin + + // Display debug message + if ( &(dqm_reg0) != 1'b1) begin + dq_reg = #tAC3 dq_dqm; + Dout_Drive_Flag = 1'b1; + if (Debug) begin + //$display("%m : at time %t READ : bank = %d Row = %d, Col = %d, Data = %d", $realtime, bank, Row, Col, dq_reg); + $display ("Time = %t : OPERATION = READ : bank = %d Row = 'h%h, Col = 'h%h, Data = 'h%h", $realtime, bank, Row, Col, dq_reg); + end + end else begin + dq_reg = #tHZ3 {no_of_data{1'bz}}; + Dout_Drive_Flag = 1'b0; + if (Debug) begin + //$display("%m : at time %t READ : bank = %d Row = %d, Col = %d, Data = Hi-Z due to DQM", $realtime, bank, Row, Col); + $display ("Time = %t : OPERATION = READ : bank = %d Row = 'h%h, Col = 'h%h, Data = Hi-Z due to DQM", $realtime, bank, Row, Col); + + end + end + + end + + // Advance burst counter subroutine + Burst_decode; + end + end + + // Burst counter decode + task Burst_decode; + begin + // Advance Burst Counter + Burst_counter = Burst_counter + 1; + + // Burst Type + if (Mode_reg[3] == 1'b0) begin // Sequential Burst + Col_temp = Col + 1; + end else if (Mode_reg[3] == 1'b1) begin // Interleaved Burst + Col_temp[2] = Burst_counter[2] ^ Col_brst[2]; + Col_temp[1] = Burst_counter[1] ^ Col_brst[1]; + Col_temp[0] = Burst_counter[0] ^ Col_brst[0]; + end + + // Burst Length + if (Burst_length_2) begin // Burst Length = 2 + Col [0] = Col_temp [0]; + end else if (Burst_length_4) begin // Burst Length = 4 + Col [1 : 0] = Col_temp [1 : 0]; + end else if (Burst_length_8) begin // Burst Length = 8 + Col [2 : 0] = Col_temp [2 : 0]; + end else begin // Burst Length = FULL + Col = Col_temp; + end + + // Burst Read Single Write + if (Write_burst_mode == 1'b1) begin + Data_in_enable = 1'b0; + end + + // Data Counter + if (Burst_length_1 == 1'b1) begin + if (Burst_counter >= 1) begin + Data_in_enable = 1'b0; + Data_out_enable = 1'b0; + end + end else if (Burst_length_2 == 1'b1) begin + if (Burst_counter >= 2) begin + Data_in_enable = 1'b0; + Data_out_enable = 1'b0; + end + end else if (Burst_length_4 == 1'b1) begin + if (Burst_counter >= 4) begin + Data_in_enable = 1'b0; + Data_out_enable = 1'b0; + end + end else if (Burst_length_8 == 1'b1) begin + if (Burst_counter >= 8) begin + Data_in_enable = 1'b0; + Data_out_enable = 1'b0; + end + end + end + endtask + + task mem_init; + begin + for (ccc=0;ccc<'b1000_0000_0000_0000_0000;ccc=ccc+1) + begin + bank0[ccc]=32'bxxxx_xxxx_xxxx_xxxx_xxxx_xxxx_xxxx_xxxx; + bank1[ccc]=32'bxxxx_xxxx_xxxx_xxxx_xxxx_xxxx_xxxx_xxxx; + bank2[ccc]=32'bxxxx_xxxx_xxxx_xxxx_xxxx_xxxx_xxxx_xxxx; + bank3[ccc]=32'bxxxx_xxxx_xxxx_xxxx_xxxx_xxxx_xxxx_xxxx; + //bank0[ccc]=16'b1111_1111_1111_1111; + //bank1[ccc]=16'b1111_1111_1111_1111; + end + end + endtask + + task abbank_init; + begin + for (ccc=0;ccc<'b1000_0000_0000_0000_0000;ccc=ccc+1) + begin + bank0[ccc]=32'bxxxx_xxxx_xxxx_xxxx_xxxx_xxxx_xxxx_xxxx; + bank1[ccc]=32'bxxxx_xxxx_xxxx_xxxx_xxxx_xxxx_xxxx_xxxx; + end + end + endtask + + + task bbank_init; + begin + for (ccc=0;ccc<'b1000_0000_0000_0000_0000;ccc=ccc+1) + begin + bank1[ccc]=32'bxxxx_xxxx_xxxx_xxxx_xxxx_xxxx_xxxx_xxxx; + end + end + endtask + + task half_init; + begin + bbank_init; + for (ccc='b0100_0000_0000_0000_0000;ccc<'b1000_0000_0000_0000_0000;ccc=ccc+1) + begin + bank0[ccc]=32'bxxxx_xxxx_xxxx_xxxx_xxxx_xxxx_xxxx_xxxx; + end + end + endtask + + task quat_init; + begin + bbank_init; + for (ccc='b0010_0000_0000_0000_0000;ccc<'b1000_0000_0000_0000_0000;ccc=ccc+1) + begin + bank0[ccc]=32'bxxxx_xxxx_xxxx_xxxx_xxxx_xxxx_xxxx_xxxx; + end + end + endtask +`endprotect + + // Timing Parameters + specify + specparam + `ifdef S50 + tAH = 1.0, // addr, ba Hold Time + tAS = 1.5, // addr, ba Setup Time + tCH = 2.5, // Clock High-Level Width + tCL = 2.5, // Clock Low-Level Width + tCK = 5.0, // Clock Cycle Time + tDH = 1.0, // Data-in Hold Time + tDS = 1.5, // Data-in Setup Time + tCKH = 1.0, // CKE Hold Time + tCKS = 1.5, // CKE Setup Time + tCMH = 1.0, // CSB, RASB, CASB, WEB, DQMB Hold Time + tCMS = 1.5; // CSB, RASB, CASB, WEB, DQMB Setup Time + `endif + + `ifdef S60 + tAH = 1.0, // addr, ba Hold Time + tAS = 1.5, // addr, ba Setup Time + tCH = 2.5, // Clock High-Level Width + tCL = 2.5, // Clock Low-Level Width + tCK = 6.0, // Clock Cycle Time + tDH = 1.0, // Data-in Hold Time + tDS = 1.5, // Data-in Setup Time + tCKH = 1.0, // CKE Hold Time + tCKS = 1.5, // CKE Setup Time + tCMH = 1.0, // CSB, RASB, CASB, WEB, DQMB Hold Time + tCMS = 1.5; // CSB, RASB, CASB, WEB, DQMB Setup Time + `endif + + `ifdef S75 + tAH = 1.0, // addr, ba Hold Time + tAS = 2.0, // addr, ba Setup Time + tCH = 2.5, // Clock High-Level Width + tCL = 2.5, // Clock Low-Level Width + tCK = 7.5, // Clock Cycle Time + tDH = 1.0, // Data-in Hold Time + tDS = 2.0, // Data-in Setup Time + tCKH = 1.0, // CKE Hold Time + tCKS = 2.0, // CKE Setup Time + tCMH = 1.0, // CSB, RASB, CASB, WEB, DQMB Hold Time + tCMS = 2.0; // CSB, RASB, CASB, WEB, DQMB Setup Time + `endif + + + $width (posedge clk, tCH); + $width (negedge clk, tCL); + $period (negedge clk, tCK); + $period (posedge clk, tCK); + $setuphold(posedge clk, cke, tCKS, tCKH); + $setuphold(posedge clk, csb, tCMS, tCMH); + $setuphold(posedge clk, casb, tCMS, tCMH); + $setuphold(posedge clk, rasb, tCMS, tCMH); + $setuphold(posedge clk, web, tCMS, tCMH); + $setuphold(posedge clk, addr, tAS, tAH); + $setuphold(posedge clk, ba, tAS, tAH); + $setuphold(posedge clk, dqm, tCMS, tCMH); + $setuphold(posedge dq_chk, dq, tDS, tDH); + endspecify + + +endmodule diff --git a/lib/common/Driver/SDRAM_driver/model/mt48lc2m32b2.v b/lib/common/Driver/SDRAM_driver/model/mt48lc2m32b2.v new file mode 100644 index 0000000..eaf8ff3 --- /dev/null +++ b/lib/common/Driver/SDRAM_driver/model/mt48lc2m32b2.v @@ -0,0 +1,1096 @@ +/************************************************************************** +* +* File Name: MT48LC2M32B2.V +* Version: 2.1 +* Date: June 6th, 2002 +* Model: BUS Functional +* Simulator: Model Technology +* +* Dependencies: None +* +* Email: modelsupport@micron.com +* Company: Micron Technology, Inc. +* Model: MT48LC2M32B2 (512K x 32 x 4 Banks) +* +* Description: Micron 64Mb SDRAM Verilog model +* +* Limitation: - Doesn't check for 4096 cycle refresh +* +* Note: - Set simulator resolution to "ps" accuracy +* - Set Debug = 0 to disable $display messages +* +* Disclaimer: THESE DESIGNS ARE PROVIDED "AS IS" WITH NO WARRANTY +* WHATSOEVER AND MICRON SPECIFICALLY DISCLAIMS ANY +* IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR +* A PARTICULAR PURPOSE, OR AGAINST INFRINGEMENT. +* +* Copyright 2001 Micron Semiconductor Products, Inc. +* All rights researved +* +* Rev Author Date Changes +* --- -------------------------- --------------------------------------- +* 2.1 SH 06/06/2002 - Typo in bank multiplex +* Micron Technology Inc. +* +* 2.0 SH 04/30/2002 - Second release +* Micron Technology Inc. +* +**************************************************************************/ + +`timescale 1ns / 1ps + +module mt48lc2m32b2 (Dq, Addr, Ba, Clk, Cke, Cs_n, Ras_n, Cas_n, We_n, Dqm); + + parameter addr_bits = 11; + parameter data_bits = 32; + parameter col_bits = 8; + parameter mem_sizes = 524287; + + inout [data_bits - 1 : 0] Dq; + input [addr_bits - 1 : 0] Addr; + input [1 : 0] Ba; + input Clk; + input Cke; + input Cs_n; + input Ras_n; + input Cas_n; + input We_n; + input [3 : 0] Dqm; + + reg [data_bits - 1 : 0] Bank0 [0 : mem_sizes]; + reg [data_bits - 1 : 0] Bank1 [0 : mem_sizes]; + reg [data_bits - 1 : 0] Bank2 [0 : mem_sizes]; + reg [data_bits - 1 : 0] Bank3 [0 : mem_sizes]; + + reg [1 : 0] Bank_addr [0 : 3]; // Bank Address Pipeline + reg [col_bits - 1 : 0] Col_addr [0 : 3]; // Column Address Pipeline + reg [3 : 0] Command [0 : 3]; // Command Operation Pipeline + reg [3 : 0] Dqm_reg0, Dqm_reg1; // DQM Operation Pipeline + reg [addr_bits - 1 : 0] B0_row_addr, B1_row_addr, B2_row_addr, B3_row_addr; + + reg [addr_bits - 1 : 0] Mode_reg; + reg [data_bits - 1 : 0] Dq_reg, Dq_dqm; + reg [col_bits - 1 : 0] Col_temp, Burst_counter; + + reg Act_b0, Act_b1, Act_b2, Act_b3; // Bank Activate + reg Pc_b0, Pc_b1, Pc_b2, Pc_b3; // Bank Precharge + + reg [1 : 0] Bank_precharge [0 : 3]; // Precharge Command + reg A10_precharge [0 : 3]; // Addr[10] = 1 (All banks) + reg Auto_precharge [0 : 3]; // RW Auto Precharge (Bank) + reg Read_precharge [0 : 3]; // R Auto Precharge + reg Write_precharge [0 : 3]; // W Auto Precharge + reg RW_interrupt_read [0 : 3]; // RW Interrupt Read with Auto Precharge + reg RW_interrupt_write [0 : 3]; // RW Interrupt Write with Auto Precharge + reg [1 : 0] RW_interrupt_bank; // RW Interrupt Bank + integer RW_interrupt_counter [0 : 3]; // RW Interrupt Counter + integer Count_precharge [0 : 3]; // RW Auto Precharge Counter + + reg Data_in_enable; + reg Data_out_enable; + + reg [1 : 0] Bank, Prev_bank; + reg [addr_bits - 1 : 0] Row; + reg [col_bits - 1 : 0] Col, Col_brst; + + // Internal system clock + reg CkeZ, Sys_clk; + + // Commands Decode + wire Active_enable = ~Cs_n & ~Ras_n & Cas_n & We_n; + wire Aref_enable = ~Cs_n & ~Ras_n & ~Cas_n & We_n; + wire Burst_term = ~Cs_n & Ras_n & Cas_n & ~We_n; + wire Mode_reg_enable = ~Cs_n & ~Ras_n & ~Cas_n & ~We_n; + wire Prech_enable = ~Cs_n & ~Ras_n & Cas_n & ~We_n; + wire Read_enable = ~Cs_n & Ras_n & ~Cas_n & We_n; + wire Write_enable = ~Cs_n & Ras_n & ~Cas_n & ~We_n; + + // Burst Length Decode + wire Burst_length_1 = ~Mode_reg[2] & ~Mode_reg[1] & ~Mode_reg[0]; + wire Burst_length_2 = ~Mode_reg[2] & ~Mode_reg[1] & Mode_reg[0]; + wire Burst_length_4 = ~Mode_reg[2] & Mode_reg[1] & ~Mode_reg[0]; + wire Burst_length_8 = ~Mode_reg[2] & Mode_reg[1] & Mode_reg[0]; + wire Burst_length_f = Mode_reg[2] & Mode_reg[1] & Mode_reg[0]; + + // CAS Latency Decode + wire Cas_latency_1 = ~Mode_reg[6] & ~Mode_reg[5] & Mode_reg[4]; + wire Cas_latency_2 = ~Mode_reg[6] & Mode_reg[5] & ~Mode_reg[4]; + wire Cas_latency_3 = ~Mode_reg[6] & Mode_reg[5] & Mode_reg[4]; + + // Write Burst Mode + wire Write_burst_mode = Mode_reg[9]; + + wire Debug = 1'b1; // Debug messages : 1 = On + wire Dq_chk = Sys_clk & Data_in_enable; // Check setup/hold time for DQ + + assign Dq = Dq_reg; // DQ buffer + + // Commands Operation + `define ACT 0 + `define NOP 1 + `define READ 2 + `define WRITE 3 + `define PRECH 4 + `define A_REF 5 + `define BST 6 + `define LMR 7 + + // Timing Parameters for -6 CL3 + parameter tAC = 5.5; + parameter tHZ = 5.5; + parameter tOH = 2.5; + parameter tMRD = 2.0; // 2 Clk Cycles + parameter tRAS = 42.0; + parameter tRC = 60.0; + parameter tRCD = 18.0; + parameter tRFC = 60.0; + parameter tRP = 18.0; + parameter tRRD = 12.0; + parameter tWRa = 6.0; // A2 Version - Auto precharge mode (1 Clk + 7 ns) + parameter tWRm = 12.0; // A2 Version - Manual precharge mode (14 ns) + + // Timing Check variable + time MRD_chk; + time WR_chkm [0 : 3]; + time RFC_chk, RRD_chk; + time RC_chk0, RC_chk1, RC_chk2, RC_chk3; + time RAS_chk0, RAS_chk1, RAS_chk2, RAS_chk3; + time RCD_chk0, RCD_chk1, RCD_chk2, RCD_chk3; + time RP_chk0, RP_chk1, RP_chk2, RP_chk3; + + initial begin + Dq_reg = {data_bits{1'bz}}; + Data_in_enable = 0; Data_out_enable = 0; + Act_b0 = 1; Act_b1 = 1; Act_b2 = 1; Act_b3 = 1; + Pc_b0 = 0; Pc_b1 = 0; Pc_b2 = 0; Pc_b3 = 0; + WR_chkm[0] = 0; WR_chkm[1] = 0; WR_chkm[2] = 0; WR_chkm[3] = 0; + RW_interrupt_read[0] = 0; RW_interrupt_read[1] = 0; RW_interrupt_read[2] = 0; RW_interrupt_read[3] = 0; + RW_interrupt_write[0] = 0; RW_interrupt_write[1] = 0; RW_interrupt_write[2] = 0; RW_interrupt_write[3] = 0; + MRD_chk = 0; RFC_chk = 0; RRD_chk = 0; + RAS_chk0 = 0; RAS_chk1 = 0; RAS_chk2 = 0; RAS_chk3 = 0; + RCD_chk0 = 0; RCD_chk1 = 0; RCD_chk2 = 0; RCD_chk3 = 0; + RC_chk0 = 0; RC_chk1 = 0; RC_chk2 = 0; RC_chk3 = 0; + RP_chk0 = 0; RP_chk1 = 0; RP_chk2 = 0; RP_chk3 = 0; + $timeformat (-9, 1, " ns", 12); + end + + // System clock generator + always begin + @ (posedge Clk) begin + Sys_clk = CkeZ; + CkeZ = Cke; + end + @ (negedge Clk) begin + Sys_clk = 1'b0; + end + end + + always @ (posedge Sys_clk) begin + // Internal Commamd Pipelined + Command[0] = Command[1]; + Command[1] = Command[2]; + Command[2] = Command[3]; + Command[3] = `NOP; + + Col_addr[0] = Col_addr[1]; + Col_addr[1] = Col_addr[2]; + Col_addr[2] = Col_addr[3]; + Col_addr[3] = {col_bits{1'b0}}; + + Bank_addr[0] = Bank_addr[1]; + Bank_addr[1] = Bank_addr[2]; + Bank_addr[2] = Bank_addr[3]; + Bank_addr[3] = 2'b0; + + Bank_precharge[0] = Bank_precharge[1]; + Bank_precharge[1] = Bank_precharge[2]; + Bank_precharge[2] = Bank_precharge[3]; + Bank_precharge[3] = 2'b0; + + A10_precharge[0] = A10_precharge[1]; + A10_precharge[1] = A10_precharge[2]; + A10_precharge[2] = A10_precharge[3]; + A10_precharge[3] = 1'b0; + + // Dqm pipeline for Read + Dqm_reg0 = Dqm_reg1; + Dqm_reg1 = Dqm; + + // Read or Write with Auto Precharge Counter + if (Auto_precharge[0] === 1'b1) begin + Count_precharge[0] = Count_precharge[0] + 1; + end + if (Auto_precharge[1] === 1'b1) begin + Count_precharge[1] = Count_precharge[1] + 1; + end + if (Auto_precharge[2] === 1'b1) begin + Count_precharge[2] = Count_precharge[2] + 1; + end + if (Auto_precharge[3] === 1'b1) begin + Count_precharge[3] = Count_precharge[3] + 1; + end + + // Read or Write Interrupt Counter + if (RW_interrupt_write[0] === 1'b1) begin + RW_interrupt_counter[0] = RW_interrupt_counter[0] + 1; + end + if (RW_interrupt_write[1] === 1'b1) begin + RW_interrupt_counter[1] = RW_interrupt_counter[1] + 1; + end + if (RW_interrupt_write[2] === 1'b1) begin + RW_interrupt_counter[2] = RW_interrupt_counter[2] + 1; + end + if (RW_interrupt_write[3] === 1'b1) begin + RW_interrupt_counter[3] = RW_interrupt_counter[3] + 1; + end + + // tMRD Counter + MRD_chk = MRD_chk + 1; + + // Auto Refresh + if (Aref_enable === 1'b1) begin + if (Debug) begin + $display ("%m : at time %t AREF : Auto Refresh", $time); + end + + // Auto Refresh to Auto Refresh + if ($time - RFC_chk < tRFC) begin + $display ("%m : at time %t ERROR: tRFC violation during Auto Refresh", $time); + end + + // Precharge to Auto Refresh + if (($time - RP_chk0 < tRP) || ($time - RP_chk1 < tRP) || + ($time - RP_chk2 < tRP) || ($time - RP_chk3 < tRP)) begin + $display ("%m : at time %t ERROR: tRP violation during Auto Refresh", $time); + end + + // Precharge to Refresh + if (Pc_b0 === 1'b0 || Pc_b1 === 1'b0 || Pc_b2 === 1'b0 || Pc_b3 === 1'b0) begin + $display ("%m : at time %t ERROR: All banks must be Precharge before Auto Refresh", $time); + end + + // Load Mode Register to Auto Refresh + if (MRD_chk < tMRD) begin + $display ("%m : at time %t ERROR: tMRD violation during Auto Refresh", $time); + end + + // Record Current tRFC time + RFC_chk = $time; + end + + // Load Mode Register + if (Mode_reg_enable === 1'b1) begin + // Register Mode + Mode_reg = Addr; + + // Decode CAS Latency, Burst Length, Burst Type, and Write Burst Mode + if (Debug) begin + $display ("%m : at time %t LMR : Load Mode Register", $time); + // CAS Latency + case (Addr[6 : 4]) + 3'b001 : $display ("%m : CAS Latency = 1"); + 3'b010 : $display ("%m : CAS Latency = 2"); + 3'b011 : $display ("%m : CAS Latency = 3"); + default : $display ("%m : CAS Latency = Reserved"); + endcase + + // Burst Length + case (Addr[2 : 0]) + 3'b000 : $display ("%m : Burst Length = 1"); + 3'b001 : $display ("%m : Burst Length = 2"); + 3'b010 : $display ("%m : Burst Length = 4"); + 3'b011 : $display ("%m : Burst Length = 8"); + 3'b111 : $display ("%m : Burst Length = Full"); + default : $display ("%m : Burst Length = Reserved"); + endcase + + // Burst Type + if (Addr[3] === 1'b0) begin + $display ("%m : Burst Type = Sequential"); + end else if (Addr[3] === 1'b1) begin + $display ("%m : Burst Type = Interleaved"); + end else begin + $display ("%m : Burst Type = Reserved"); + end + + // Write Burst Mode + if (Addr[9] === 1'b0) begin + $display ("%m : Write Burst Mode = Programmed Burst Length"); + end else if (Addr[9] === 1'b1) begin + $display ("%m : Write Burst Mode = Single Location Access"); + end else begin + $display ("%m : Write Burst Mode = Reserved"); + end + end + + // Precharge to Load Mode Register + if (Pc_b0 === 1'b0 && Pc_b1 === 1'b0 && Pc_b2 === 1'b0 && Pc_b3 === 1'b0) begin + $display ("%m : at time %t ERROR: all banks must be Precharge before Load Mode Register", $time); + end + + // Precharge to Load Mode Register + if (($time - RP_chk0 < tRP) || ($time - RP_chk1 < tRP) || + ($time - RP_chk2 < tRP) || ($time - RP_chk3 < tRP)) begin + $display ("%m : at time %t ERROR: tRP violation during Load Mode Register", $time); + end + + // Auto Refresh to Load Mode Register + if ($time - RFC_chk < tRFC) begin + $display ("%m : at time %t ERROR: tRFC violation during Load Mode Register", $time); + end + + // Load Mode Register to Load Mode Register + if (MRD_chk < tMRD) begin + $display ("%m : at time %t ERROR: tMRD violation during Load Mode Register", $time); + end + + // Reset MRD Counter + MRD_chk = 0; + end + + // Active Block (Latch Bank Address and Row Address) + if (Active_enable === 1'b1) begin + // Activate an open bank can corrupt data + if ((Ba === 2'b00 && Act_b0 === 1'b1) || (Ba === 2'b01 && Act_b1 === 1'b1) || + (Ba === 2'b10 && Act_b2 === 1'b1) || (Ba === 2'b11 && Act_b3 === 1'b1)) begin + $display ("%m : at time %t ERROR: Bank already activated -- data can be corrupted", $time); + end + + // Activate Bank 0 + if (Ba === 2'b00 && Pc_b0 === 1'b1) begin + // Debug Message + if (Debug) begin + $display ("%m : at time %t ACT : Bank = 0 Row = %d", $time, Addr); + end + + // ACTIVE to ACTIVE command period + if ($time - RC_chk0 < tRC) begin + $display ("%m : at time %t ERROR: tRC violation during Activate bank 0", $time); + end + + // Precharge to Activate Bank 0 + if ($time - RP_chk0 < tRP) begin + $display ("%m : at time %t ERROR: tRP violation during Activate bank 0", $time); + end + + // Record variables + Act_b0 = 1'b1; + Pc_b0 = 1'b0; + B0_row_addr = Addr [addr_bits - 1 : 0]; + RAS_chk0 = $time; + RC_chk0 = $time; + RCD_chk0 = $time; + end + + if (Ba == 2'b01 && Pc_b1 == 1'b1) begin + // Debug Message + if (Debug) begin + $display ("%m : at time %t ACT : Bank = 1 Row = %d", $time, Addr); + end + + // ACTIVE to ACTIVE command period + if ($time - RC_chk1 < tRC) begin + $display ("%m : at time %t ERROR: tRC violation during Activate bank 1", $time); + end + + // Precharge to Activate Bank 1 + if ($time - RP_chk1 < tRP) begin + $display ("%m : at time %t ERROR: tRP violation during Activate bank 1", $time); + end + + // Record variables + Act_b1 = 1'b1; + Pc_b1 = 1'b0; + B1_row_addr = Addr [addr_bits - 1 : 0]; + RAS_chk1 = $time; + RC_chk1 = $time; + RCD_chk1 = $time; + end + + if (Ba == 2'b10 && Pc_b2 == 1'b1) begin + // Debug Message + if (Debug) begin + $display ("%m : at time %t ACT : Bank = 2 Row = %d", $time, Addr); + end + + // ACTIVE to ACTIVE command period + if ($time - RC_chk2 < tRC) begin + $display ("%m : at time %t ERROR: tRC violation during Activate bank 2", $time); + end + + // Precharge to Activate Bank 2 + if ($time - RP_chk2 < tRP) begin + $display ("%m : at time %t ERROR: tRP violation during Activate bank 2", $time); + end + + // Record variables + Act_b2 = 1'b1; + Pc_b2 = 1'b0; + B2_row_addr = Addr [addr_bits - 1 : 0]; + RAS_chk2 = $time; + RC_chk2 = $time; + RCD_chk2 = $time; + end + + if (Ba == 2'b11 && Pc_b3 == 1'b1) begin + // Debug Message + if (Debug) begin + $display ("%m : at time %t ACT : Bank = 3 Row = %d", $time, Addr); + end + + // ACTIVE to ACTIVE command period + if ($time - RC_chk3 < tRC) begin + $display ("%m : at time %t ERROR: tRC violation during Activate bank 3", $time); + end + + // Precharge to Activate Bank 3 + if ($time - RP_chk3 < tRP) begin + $display ("%m : at time %t ERROR: tRP violation during Activate bank 3", $time); + end + + // Record variables + Act_b3 = 1'b1; + Pc_b3 = 1'b0; + B3_row_addr = Addr [addr_bits - 1 : 0]; + RAS_chk3 = $time; + RC_chk3 = $time; + RCD_chk3 = $time; + end + + // Active Bank A to Active Bank B + if ((Prev_bank != Ba) && ($time - RRD_chk < tRRD)) begin + $display ("%m : at time %t ERROR: tRRD violation during Activate bank = %d", $time, Ba); + end + + // Auto Refresh to Activate + if ($time - RFC_chk < tRFC) begin + $display ("%m : at time %t ERROR: tRFC violation during Activate bank = %d", $time, Ba); + end + + // Load Mode Register to Active + if (MRD_chk < tMRD ) begin + $display ("%m : at time %t ERROR: tMRD violation during Activate bank = %d", $time, Ba); + end + + // Record variables for checking violation + RRD_chk = $time; + Prev_bank = Ba; + end + + // Precharge Block + if (Prech_enable == 1'b1) begin + // Load Mode Register to Precharge + if ($time - MRD_chk < tMRD) begin + $display ("%m : at time %t ERROR: tMRD violaiton during Precharge", $time); + end + + // Precharge Bank 0 + if ((Addr[10] === 1'b1 || (Addr[10] === 1'b0 && Ba === 2'b00)) && Act_b0 === 1'b1) begin + Act_b0 = 1'b0; + Pc_b0 = 1'b1; + RP_chk0 = $time; + + // Activate to Precharge + if ($time - RAS_chk0 < tRAS) begin + $display ("%m : at time %t ERROR: tRAS violation during Precharge", $time); + end + + // tWR violation check for write + if ($time - WR_chkm[0] < tWRm) begin + $display ("%m : at time %t ERROR: tWR violation during Precharge", $time); + end + end + + // Precharge Bank 1 + if ((Addr[10] === 1'b1 || (Addr[10] === 1'b0 && Ba === 2'b01)) && Act_b1 === 1'b1) begin + Act_b1 = 1'b0; + Pc_b1 = 1'b1; + RP_chk1 = $time; + + // Activate to Precharge + if ($time - RAS_chk1 < tRAS) begin + $display ("%m : at time %t ERROR: tRAS violation during Precharge", $time); + end + + // tWR violation check for write + if ($time - WR_chkm[1] < tWRm) begin + $display ("%m : at time %t ERROR: tWR violation during Precharge", $time); + end + end + + // Precharge Bank 2 + if ((Addr[10] === 1'b1 || (Addr[10] === 1'b0 && Ba === 2'b10)) && Act_b2 === 1'b1) begin + Act_b2 = 1'b0; + Pc_b2 = 1'b1; + RP_chk2 = $time; + + // Activate to Precharge + if ($time - RAS_chk2 < tRAS) begin + $display ("%m : at time %t ERROR: tRAS violation during Precharge", $time); + end + + // tWR violation check for write + if ($time - WR_chkm[2] < tWRm) begin + $display ("%m : at time %t ERROR: tWR violation during Precharge", $time); + end + end + + // Precharge Bank 3 + if ((Addr[10] === 1'b1 || (Addr[10] === 1'b0 && Ba === 2'b11)) && Act_b3 === 1'b1) begin + Act_b3 = 1'b0; + Pc_b3 = 1'b1; + RP_chk3 = $time; + + // Activate to Precharge + if ($time - RAS_chk3 < tRAS) begin + $display ("%m : at time %t ERROR: tRAS violation during Precharge", $time); + end + + // tWR violation check for write + if ($time - WR_chkm[3] < tWRm) begin + $display ("%m : at time %t ERROR: tWR violation during Precharge", $time); + end + end + + // Terminate a Write Immediately (if same bank or all banks) + if (Data_in_enable === 1'b1 && (Bank === Ba || Addr[10] === 1'b1)) begin + Data_in_enable = 1'b0; + end + + // Precharge Command Pipeline for Read + if (Cas_latency_3 === 1'b1) begin + Command[2] = `PRECH; + Bank_precharge[2] = Ba; + A10_precharge[2] = Addr[10]; + end else if (Cas_latency_2 === 1'b1) begin + Command[1] = `PRECH; + Bank_precharge[1] = Ba; + A10_precharge[1] = Addr[10]; + end else if (Cas_latency_1 === 1'b1) begin + Command[0] = `PRECH; + Bank_precharge[0] = Ba; + A10_precharge[0] = Addr[10]; + end + end + + // Burst terminate + if (Burst_term === 1'b1) begin + // Terminate a Write Immediately + if (Data_in_enable == 1'b1) begin + Data_in_enable = 1'b0; + end + + // Terminate a Read Depend on CAS Latency + if (Cas_latency_3 === 1'b1) begin + Command[2] = `BST; + end else if (Cas_latency_2 == 1'b1) begin + Command[1] = `BST; + end else if (Cas_latency_1 == 1'b1) begin + Command[0] = `BST; + end + + // Display debug message + if (Debug) begin + $display ("%m : at time %t BST : Burst Terminate",$time); + end + end + + // Read, Write, Column Latch + if (Read_enable === 1'b1) begin + // Check to see if bank is open (ACT) + if ((Ba == 2'b00 && Pc_b0 == 1'b1) || (Ba == 2'b01 && Pc_b1 == 1'b1) || + (Ba == 2'b10 && Pc_b2 == 1'b1) || (Ba == 2'b11 && Pc_b3 == 1'b1)) begin + $display("%m : at time %t ERROR: Bank is not Activated for Read", $time); + end + + // Activate to Read or Write + if ((Ba == 2'b00) && ($time - RCD_chk0 < tRCD) || + (Ba == 2'b01) && ($time - RCD_chk1 < tRCD) || + (Ba == 2'b10) && ($time - RCD_chk2 < tRCD) || + (Ba == 2'b11) && ($time - RCD_chk3 < tRCD)) begin + $display("%m : at time %t ERROR: tRCD violation during Read", $time); + end + + // CAS Latency pipeline + if (Cas_latency_3 == 1'b1) begin + Command[2] = `READ; + Col_addr[2] = Addr; + Bank_addr[2] = Ba; + end else if (Cas_latency_2 == 1'b1) begin + Command[1] = `READ; + Col_addr[1] = Addr; + Bank_addr[1] = Ba; + end else if (Cas_latency_1 == 1'b1) begin + Command[0] = `READ; + Col_addr[0] = Addr; + Bank_addr[0] = Ba; + end + + // Read interrupt Write (terminate Write immediately) + if (Data_in_enable == 1'b1) begin + Data_in_enable = 1'b0; + + // Interrupting a Write with Autoprecharge + if (Auto_precharge[RW_interrupt_bank] == 1'b1 && Write_precharge[RW_interrupt_bank] == 1'b1) begin + RW_interrupt_write[RW_interrupt_bank] = 1'b1; + RW_interrupt_counter[RW_interrupt_bank] = 0; + + // Display debug message + if (Debug) begin + $display ("%m : at time %t NOTE : Read interrupt Write with Autoprecharge", $time); + end + end + end + + // Read with Auto Precharge + if (Addr[10] == 1'b1) begin + Auto_precharge[Ba] = 1'b1; + Count_precharge[Ba] = 0; + RW_interrupt_bank = Ba; + Read_precharge[Ba] = 1'b1; + end + end + + // Write Command + if (Write_enable == 1'b1) begin + // Activate to Write + if ((Ba == 2'b00 && Pc_b0 == 1'b1) || (Ba == 2'b01 && Pc_b1 == 1'b1) || + (Ba == 2'b10 && Pc_b2 == 1'b1) || (Ba == 2'b11 && Pc_b3 == 1'b1)) begin + $display("%m : at time %t ERROR: Bank is not Activated for Write", $time); + end + + // Activate to Read or Write + if ((Ba == 2'b00) && ($time - RCD_chk0 < tRCD) || + (Ba == 2'b01) && ($time - RCD_chk1 < tRCD) || + (Ba == 2'b10) && ($time - RCD_chk2 < tRCD) || + (Ba == 2'b11) && ($time - RCD_chk3 < tRCD)) begin + $display("%m : at time %t ERROR: tRCD violation during Read", $time); + end + + // Latch Write command, Bank, and Column + Command[0] = `WRITE; + Col_addr[0] = Addr; + Bank_addr[0] = Ba; + + // Write interrupt Write (terminate Write immediately) + if (Data_in_enable == 1'b1) begin + Data_in_enable = 1'b0; + + // Interrupting a Write with Autoprecharge + if (Auto_precharge[RW_interrupt_bank] == 1'b1 && Write_precharge[RW_interrupt_bank] == 1'b1) begin + RW_interrupt_write[RW_interrupt_bank] = 1'b1; + + // Display debug message + if (Debug) begin + $display ("%m : at time %t NOTE : Read Bank %d interrupt Write Bank %d with Autoprecharge", $time, Ba, RW_interrupt_bank); + end + end + end + + // Write interrupt Read (terminate Read immediately) + if (Data_out_enable == 1'b1) begin + Data_out_enable = 1'b0; + + // Interrupting a Read with Autoprecharge + if (Auto_precharge[RW_interrupt_bank] == 1'b1 && Read_precharge[RW_interrupt_bank] == 1'b1) begin + RW_interrupt_read[RW_interrupt_bank] = 1'b1; + + // Display debug message + if (Debug) begin + $display ("%m : at time %t NOTE : Write Bank %d interrupt Read Bank %d with Autoprecharge", $time, Ba, RW_interrupt_bank); + end + end + end + + // Write with Auto Precharge + if (Addr[10] == 1'b1) begin + Auto_precharge[Ba] = 1'b1; + Count_precharge[Ba] = 0; + RW_interrupt_bank = Ba; + Write_precharge[Ba] = 1'b1; + end + end + + /* + Write with Auto Precharge Calculation + The device start internal precharge when: + 1. Meet minimum tRAS requirement + and 2. tWR cycle(s) after last valid data + or 3. Interrupt by a Read or Write (with or without Auto Precharge) + + Note: Model is starting the internal precharge 1 cycle after they meet all the + requirement but tRP will be compensate for the time after the 1 cycle. + */ + if ((Auto_precharge[0] == 1'b1) && (Write_precharge[0] == 1'b1)) begin + if ((($time - RAS_chk0 >= tRAS) && // Case 1 + (((Burst_length_1 == 1'b1 || Write_burst_mode == 1'b1) && Count_precharge [0] >= 1) || // Case 2 + (Burst_length_2 == 1'b1 && Count_precharge [0] >= 2) || + (Burst_length_4 == 1'b1 && Count_precharge [0] >= 4) || + (Burst_length_8 == 1'b1 && Count_precharge [0] >= 8))) || + (RW_interrupt_write[0] == 1'b1 && RW_interrupt_counter[0] >= 1)) begin // Case 3 + Auto_precharge[0] = 1'b0; + Write_precharge[0] = 1'b0; + RW_interrupt_write[0] = 1'b0; + Pc_b0 = 1'b1; + Act_b0 = 1'b0; + RP_chk0 = $time + tWRa; + if (Debug) begin + $display ("%m : at time %t NOTE : Start Internal Auto Precharge for Bank 0", $time); + end + end + end + if ((Auto_precharge[1] == 1'b1) && (Write_precharge[1] == 1'b1)) begin + if ((($time - RAS_chk1 >= tRAS) && // Case 1 + (((Burst_length_1 == 1'b1 || Write_burst_mode == 1'b1) && Count_precharge [1] >= 1) || // Case 2 + (Burst_length_2 == 1'b1 && Count_precharge [1] >= 2) || + (Burst_length_4 == 1'b1 && Count_precharge [1] >= 4) || + (Burst_length_8 == 1'b1 && Count_precharge [1] >= 8))) || + (RW_interrupt_write[1] == 1'b1 && RW_interrupt_counter[1] >= 1)) begin // Case 3 + Auto_precharge[1] = 1'b0; + Write_precharge[1] = 1'b0; + RW_interrupt_write[1] = 1'b0; + Pc_b1 = 1'b1; + Act_b1 = 1'b0; + RP_chk1 = $time + tWRa; + if (Debug) begin + $display ("%m : at time %t NOTE : Start Internal Auto Precharge for Bank 1", $time); + end + end + end + if ((Auto_precharge[2] == 1'b1) && (Write_precharge[2] == 1'b1)) begin + if ((($time - RAS_chk2 >= tRAS) && // Case 1 + (((Burst_length_1 == 1'b1 || Write_burst_mode == 1'b1) && Count_precharge [2] >= 1) || // Case 2 + (Burst_length_2 == 1'b1 && Count_precharge [2] >= 2) || + (Burst_length_4 == 1'b1 && Count_precharge [2] >= 4) || + (Burst_length_8 == 1'b1 && Count_precharge [2] >= 8))) || + (RW_interrupt_write[2] == 1'b1 && RW_interrupt_counter[2] >= 1)) begin // Case 3 + Auto_precharge[2] = 1'b0; + Write_precharge[2] = 1'b0; + RW_interrupt_write[2] = 1'b0; + Pc_b2 = 1'b1; + Act_b2 = 1'b0; + RP_chk2 = $time + tWRa; + if (Debug) begin + $display ("%m : at time %t NOTE : Start Internal Auto Precharge for Bank 2", $time); + end + end + end + if ((Auto_precharge[3] == 1'b1) && (Write_precharge[3] == 1'b1)) begin + if ((($time - RAS_chk3 >= tRAS) && // Case 1 + (((Burst_length_1 == 1'b1 || Write_burst_mode == 1'b1) && Count_precharge [3] >= 1) || // Case 2 + (Burst_length_2 == 1'b1 && Count_precharge [3] >= 2) || + (Burst_length_4 == 1'b1 && Count_precharge [3] >= 4) || + (Burst_length_8 == 1'b1 && Count_precharge [3] >= 8))) || + (RW_interrupt_write[3] == 1'b1 && RW_interrupt_counter[3] >= 1)) begin // Case 3 + Auto_precharge[3] = 1'b0; + Write_precharge[3] = 1'b0; + RW_interrupt_write[3] = 1'b0; + Pc_b3 = 1'b1; + Act_b3 = 1'b0; + RP_chk3 = $time + tWRa; + if (Debug) begin + $display ("%m : at time %t NOTE : Start Internal Auto Precharge for Bank 3", $time); + end + end + end + + // Read with Auto Precharge Calculation + // The device start internal precharge: + // 1. Meet minimum tRAS requirement + // and 2. CAS Latency - 1 cycles before last burst + // or 3. Interrupt by a Read or Write (with or without AutoPrecharge) + if ((Auto_precharge[0] == 1'b1) && (Read_precharge[0] == 1'b1)) begin + if ((($time - RAS_chk0 >= tRAS) && // Case 1 + ((Burst_length_1 == 1'b1 && Count_precharge[0] >= 1) || // Case 2 + (Burst_length_2 == 1'b1 && Count_precharge[0] >= 2) || + (Burst_length_4 == 1'b1 && Count_precharge[0] >= 4) || + (Burst_length_8 == 1'b1 && Count_precharge[0] >= 8))) || + (RW_interrupt_read[0] == 1'b1)) begin // Case 3 + Pc_b0 = 1'b1; + Act_b0 = 1'b0; + RP_chk0 = $time; + Auto_precharge[0] = 1'b0; + Read_precharge[0] = 1'b0; + RW_interrupt_read[0] = 1'b0; + if (Debug) begin + $display ("%m : at time %t NOTE : Start Internal Auto Precharge for Bank 0", $time); + end + end + end + if ((Auto_precharge[1] == 1'b1) && (Read_precharge[1] == 1'b1)) begin + if ((($time - RAS_chk1 >= tRAS) && + ((Burst_length_1 == 1'b1 && Count_precharge[1] >= 1) || + (Burst_length_2 == 1'b1 && Count_precharge[1] >= 2) || + (Burst_length_4 == 1'b1 && Count_precharge[1] >= 4) || + (Burst_length_8 == 1'b1 && Count_precharge[1] >= 8))) || + (RW_interrupt_read[1] == 1'b1)) begin + Pc_b1 = 1'b1; + Act_b1 = 1'b0; + RP_chk1 = $time; + Auto_precharge[1] = 1'b0; + Read_precharge[1] = 1'b0; + RW_interrupt_read[1] = 1'b0; + if (Debug) begin + $display ("%m : at time %t NOTE : Start Internal Auto Precharge for Bank 1", $time); + end + end + end + if ((Auto_precharge[2] == 1'b1) && (Read_precharge[2] == 1'b1)) begin + if ((($time - RAS_chk2 >= tRAS) && + ((Burst_length_1 == 1'b1 && Count_precharge[2] >= 1) || + (Burst_length_2 == 1'b1 && Count_precharge[2] >= 2) || + (Burst_length_4 == 1'b1 && Count_precharge[2] >= 4) || + (Burst_length_8 == 1'b1 && Count_precharge[2] >= 8))) || + (RW_interrupt_read[2] == 1'b1)) begin + Pc_b2 = 1'b1; + Act_b2 = 1'b0; + RP_chk2 = $time; + Auto_precharge[2] = 1'b0; + Read_precharge[2] = 1'b0; + RW_interrupt_read[2] = 1'b0; + if (Debug) begin + $display ("%m : at time %t NOTE : Start Internal Auto Precharge for Bank 2", $time); + end + end + end + if ((Auto_precharge[3] == 1'b1) && (Read_precharge[3] == 1'b1)) begin + if ((($time - RAS_chk3 >= tRAS) && + ((Burst_length_1 == 1'b1 && Count_precharge[3] >= 1) || + (Burst_length_2 == 1'b1 && Count_precharge[3] >= 2) || + (Burst_length_4 == 1'b1 && Count_precharge[3] >= 4) || + (Burst_length_8 == 1'b1 && Count_precharge[3] >= 8))) || + (RW_interrupt_read[3] == 1'b1)) begin + Pc_b3 = 1'b1; + Act_b3 = 1'b0; + RP_chk3 = $time; + Auto_precharge[3] = 1'b0; + Read_precharge[3] = 1'b0; + RW_interrupt_read[3] = 1'b0; + if (Debug) begin + $display("%m : at time %t NOTE : Start Internal Auto Precharge for Bank 3", $time); + end + end + end + + // Internal Precharge or Bst + if (Command[0] == `PRECH) begin // Precharge terminate a read with same bank or all banks + if (Bank_precharge[0] == Bank || A10_precharge[0] == 1'b1) begin + if (Data_out_enable == 1'b1) begin + Data_out_enable = 1'b0; + end + end + end else if (Command[0] == `BST) begin // BST terminate a read to current bank + if (Data_out_enable == 1'b1) begin + Data_out_enable = 1'b0; + end + end + + if (Data_out_enable == 1'b0) begin + Dq_reg <= #tOH {data_bits{1'bz}}; + end + + // Detect Read or Write command + if (Command[0] == `READ) begin + Bank = Bank_addr[0]; + Col = Col_addr[0]; + Col_brst = Col_addr[0]; + case (Bank_addr[0]) + 2'b00 : Row = B0_row_addr; + 2'b01 : Row = B1_row_addr; + 2'b10 : Row = B2_row_addr; + 2'b11 : Row = B3_row_addr; + endcase + Burst_counter = 0; + Data_in_enable = 1'b0; + Data_out_enable = 1'b1; + end else if (Command[0] == `WRITE) begin + Bank = Bank_addr[0]; + Col = Col_addr[0]; + Col_brst = Col_addr[0]; + case (Bank_addr[0]) + 2'b00 : Row = B0_row_addr; + 2'b01 : Row = B1_row_addr; + 2'b10 : Row = B2_row_addr; + 2'b11 : Row = B3_row_addr; + endcase + Burst_counter = 0; + Data_in_enable = 1'b1; + Data_out_enable = 1'b0; + end + + // DQ buffer (Driver/Receiver) + if (Data_in_enable == 1'b1) begin // Writing Data to Memory + // Array buffer + case (Bank) + 2'b00 : Dq_dqm = Bank0 [{Row, Col}]; + 2'b01 : Dq_dqm = Bank1 [{Row, Col}]; + 2'b10 : Dq_dqm = Bank2 [{Row, Col}]; + 2'b11 : Dq_dqm = Bank3 [{Row, Col}]; + endcase + + // Dqm operation + if (Dqm[0] == 1'b0) begin + Dq_dqm [ 7 : 0] = Dq [ 7 : 0]; + end + if (Dqm[1] == 1'b0) begin + Dq_dqm [15 : 8] = Dq [15 : 8]; + end + if (Dqm[2] == 1'b0) begin + Dq_dqm [23 : 16] = Dq [23 : 16]; + end + if (Dqm[3] == 1'b0) begin + Dq_dqm [31 : 24] = Dq [31 : 24]; + end + + // Write to memory + case (Bank) + 2'b00 : Bank0 [{Row, Col}] = Dq_dqm; + 2'b01 : Bank1 [{Row, Col}] = Dq_dqm; + 2'b10 : Bank2 [{Row, Col}] = Dq_dqm; + 2'b11 : Bank3 [{Row, Col}] = Dq_dqm; + endcase + + // Display debug message + if (Dqm !== 4'b1111) begin + // Record tWR for manual precharge + WR_chkm [Bank] = $time; + + if (Debug) begin + $display("%m : at time %t WRITE: Bank = %d Row = %d, Col = %d, Data = %h", $time, Bank, Row, Col, Dq_dqm); + end + end else begin + if (Debug) begin + $display("%m : at time %t WRITE: Bank = %d Row = %d, Col = %d, Data = Hi-Z due to DQM", $time, Bank, Row, Col); + end + end + + // Advance burst counter subroutine + #tHZ Burst_decode; + + end else if (Data_out_enable == 1'b1) begin // Reading Data from Memory + // Array buffer + case (Bank) + 2'b00 : Dq_dqm = Bank0[{Row, Col}]; + 2'b01 : Dq_dqm = Bank1[{Row, Col}]; + 2'b10 : Dq_dqm = Bank2[{Row, Col}]; + 2'b11 : Dq_dqm = Bank3[{Row, Col}]; + endcase + + // Dqm operation + if (Dqm_reg0 [0] == 1'b1) begin + Dq_dqm [ 7 : 0] = 8'bz; + end + if (Dqm_reg0 [1] == 1'b1) begin + Dq_dqm [15 : 8] = 8'bz; + end + if (Dqm_reg0 [2] == 1'b1) begin + Dq_dqm [23 : 16] = 8'bz; + end + if (Dqm_reg0 [3] == 1'b1) begin + Dq_dqm [31 : 24] = 8'bz; + end + + // Display debug message + if (Dqm_reg0 !== 4'b1111) begin + Dq_reg = #tAC Dq_dqm; + if (Debug) begin + $display("%m : at time %t READ : Bank = %d Row = %d, Col = %d, Data = %h", $time, Bank, Row, Col, Dq_reg); + end + end else begin + Dq_reg = #tHZ {data_bits{1'bz}}; + if (Debug) begin + $display("%m : at time %t READ : Bank = %d Row = %d, Col = %d, Data = Hi-Z due to DQM", $time, Bank, Row, Col); + end + end + + // Advance burst counter subroutine + Burst_decode; + end + end + + // Burst counter decode + task Burst_decode; + begin + // Advance Burst Counter + Burst_counter = Burst_counter + 1; + + // Burst Type + if (Mode_reg[3] == 1'b0) begin // Sequential Burst + Col_temp = Col + 1; + end else if (Mode_reg[3] == 1'b1) begin // Interleaved Burst + Col_temp[2] = Burst_counter[2] ^ Col_brst[2]; + Col_temp[1] = Burst_counter[1] ^ Col_brst[1]; + Col_temp[0] = Burst_counter[0] ^ Col_brst[0]; + end + + // Burst Length + if (Burst_length_2) begin // Burst Length = 2 + Col [0] = Col_temp [0]; + end else if (Burst_length_4) begin // Burst Length = 4 + Col [1 : 0] = Col_temp [1 : 0]; + end else if (Burst_length_8) begin // Burst Length = 8 + Col [2 : 0] = Col_temp [2 : 0]; + end else begin // Burst Length = FULL + Col = Col_temp; + end + + // Burst Read Single Write + if (Write_burst_mode == 1'b1) begin + Data_in_enable = 1'b0; + end + + // Data Counter + if (Burst_length_1 == 1'b1) begin + if (Burst_counter >= 1) begin + Data_in_enable = 1'b0; + Data_out_enable = 1'b0; + end + end else if (Burst_length_2 == 1'b1) begin + if (Burst_counter >= 2) begin + Data_in_enable = 1'b0; + Data_out_enable = 1'b0; + end + end else if (Burst_length_4 == 1'b1) begin + if (Burst_counter >= 4) begin + Data_in_enable = 1'b0; + Data_out_enable = 1'b0; + end + end else if (Burst_length_8 == 1'b1) begin + if (Burst_counter >= 8) begin + Data_in_enable = 1'b0; + Data_out_enable = 1'b0; + end + end + end + endtask + + // Timing Parameters for -6 CL3 + specify + specparam + tAH = 1.0, // Addr, Ba Hold Time + tAS = 1.5, // Addr, Ba Setup Time + tCH = 2.5, // Clock High-Level Width + tCL = 2.5, // Clock Low-Level Width + tCK = 6.0, // Clock Cycle Time + tDH = 1.0, // Data-in Hold Time + tDS = 1.5, // Data-in Setup Time + tCKH = 1.0, // CKE Hold Time + tCKS = 1.5, // CKE Setup Time + tCMH = 1.0, // CS#, RAS#, CAS#, WE#, DQM# Hold Time + tCMS = 1.5; // CS#, RAS#, CAS#, WE#, DQM# Setup Time + $width (posedge Clk, tCH); + $width (negedge Clk, tCL); + $period (negedge Clk, tCK); + $period (posedge Clk, tCK); + $setuphold(posedge Clk, Cke, tCKS, tCKH); + $setuphold(posedge Clk, Cs_n, tCMS, tCMH); + $setuphold(posedge Clk, Cas_n, tCMS, tCMH); + $setuphold(posedge Clk, Ras_n, tCMS, tCMH); + $setuphold(posedge Clk, We_n, tCMS, tCMH); + $setuphold(posedge Clk, Addr, tAS, tAH); + $setuphold(posedge Clk, Ba, tAS, tAH); + $setuphold(posedge Clk, Dqm, tCMS, tCMH); + $setuphold(posedge Dq_chk, Dq, tDS, tDH); + endspecify + +endmodule diff --git a/lib/common/Driver/SDRAM_driver/model/mt48lc4m16.v b/lib/common/Driver/SDRAM_driver/model/mt48lc4m16.v new file mode 100644 index 0000000..76439b2 --- /dev/null +++ b/lib/common/Driver/SDRAM_driver/model/mt48lc4m16.v @@ -0,0 +1,1624 @@ +////////////////////////////////////////////////////////////////////////////// +// File name : mt48lc4m16.v +////////////////////////////////////////////////////////////////////////////// +// Copyright (C) 2008 Free Model Foundry; http://www.freemodelfoundry.com +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License version 2 as +// published by the Free Software Foundation. +// +// MODIFICATION HISTORY: +// +// version: | author: | mod date: | changes made: +// V1.0 S.Janevski 08 Feb 27 Initial release +// V1.1 S.Janevski 08 Mar 26 Assertions of wrong DQM settings during powerup removed +////////////////////////////////////////////////////////////////////////////// +// PART DESCRIPTION: +// +// Library: RAM +// Technology: LVTTL +// Part: mt48lc4m16 +// +// Description: 1M x 16 x 4Banks SDRAM +// +////////////////////////////////////////////////////////////////////////////// +// Known Bugs: +// +////////////////////////////////////////////////////////////////////////////// + +////////////////////////////////////////////////////////////////////////////// +// MODULE DECLARATION // +////////////////////////////////////////////////////////////////////////////// +`timescale 1 ns/100 ps + +module mt48lc4m16 + ( + A11 , + A10 , + A9 , + A8 , + A7 , + A6 , + A5 , + A4 , + A3 , + A2 , + A1 , + A0 , + + DQ15 , + DQ14 , + DQ13 , + DQ12 , + DQ11 , + DQ10 , + DQ9 , + DQ8 , + DQ7 , + DQ6 , + DQ5 , + DQ4 , + DQ3 , + DQ2 , + DQ1 , + DQ0 , + + BA0 , + BA1 , + DQMH , + DQML , + CLK , + CKE , + WENeg , + RASNeg , + CSNeg , + CASNeg ); + + //////////////////////////////////////////////////////////////////////// + // Port / Part Pin Declarations + //////////////////////////////////////////////////////////////////////// + input A11 ; + input A10 ; + input A9 ; + input A8 ; + input A7 ; + input A6 ; + input A5 ; + input A4 ; + input A3 ; + input A2 ; + input A1 ; + input A0 ; + + inout DQ15 ; + inout DQ14 ; + inout DQ13 ; + inout DQ12 ; + inout DQ11 ; + inout DQ10 ; + inout DQ9 ; + inout DQ8 ; + inout DQ7 ; + inout DQ6 ; + inout DQ5 ; + inout DQ4 ; + inout DQ3 ; + inout DQ2 ; + inout DQ1 ; + inout DQ0 ; + + input BA0 ; + input BA1 ; + input DQMH ; + input DQML ; + input CLK ; + input CKE ; + input WENeg ; + input RASNeg ; + input CSNeg ; + input CASNeg ; + + // interconnect path delay signals + wire A11_ipd ; + wire A10_ipd ; + wire A9_ipd ; + wire A8_ipd ; + wire A7_ipd ; + wire A6_ipd ; + wire A5_ipd ; + wire A4_ipd ; + wire A3_ipd ; + wire A2_ipd ; + wire A1_ipd ; + wire A0_ipd ; + + wire [11 : 0] A; + assign A = {A11_ipd, + A10_ipd, + A9_ipd, + A8_ipd, + A7_ipd, + A6_ipd, + A5_ipd, + A4_ipd, + A3_ipd, + A2_ipd, + A1_ipd, + A0_ipd }; + + wire DQ15_ipd ; + wire DQ14_ipd ; + wire DQ13_ipd ; + wire DQ12_ipd ; + wire DQ11_ipd ; + wire DQ10_ipd ; + wire DQ9_ipd ; + wire DQ8_ipd ; + wire DQ7_ipd ; + wire DQ6_ipd ; + wire DQ5_ipd ; + wire DQ4_ipd ; + wire DQ3_ipd ; + wire DQ2_ipd ; + wire DQ1_ipd ; + wire DQ0_ipd ; + + wire [15 : 0 ] DQIn; + assign DQIn = { DQ15_ipd, + DQ14_ipd, + DQ13_ipd, + DQ12_ipd, + DQ11_ipd, + DQ10_ipd, + DQ9_ipd, + DQ8_ipd, + DQ7_ipd, + DQ6_ipd, + DQ5_ipd, + DQ4_ipd, + DQ3_ipd, + DQ2_ipd, + DQ1_ipd, + DQ0_ipd }; + + wire [15 : 0] DQOut; + assign DQOut = { DQ15, + DQ14, + DQ13, + DQ12, + DQ11, + DQ10, + DQ9, + DQ8, + DQ7, + DQ6, + DQ5, + DQ4, + DQ3, + DQ2, + DQ1, + DQ0 }; + + wire BA0_ipd ; + wire BA1_ipd ; + wire DQM1_ipd ; + wire DQM0_ipd ; + wire CLK_ipd ; + wire CKE_ipd ; + wire WENeg_ipd ; + wire RASNeg_ipd ; + wire CSNeg_ipd ; + wire CASNeg_ipd ; + + integer bank; + integer bank_tmp; + + // internal delays + reg rct_in ; + reg rct_out; + reg [3:0] rcdt_in ; + reg [3:0] rcdt_out; + reg pre_in ; + reg pre_out ; + reg refreshed_in ; + reg refreshed_out ; + reg rcar_out ; + reg rcar_in ; + reg [3:0] ras_in = 1'b0; + reg [3:0] ras_out = 1'b0; + + reg [15 : 0] DQ_zd = 16'bz; + assign {DQ15_zd, + DQ14_zd, + DQ13_zd, + DQ12_zd, + DQ11_zd, + DQ10_zd, + DQ9_zd, + DQ8_zd, + DQ7_zd, + DQ6_zd, + DQ5_zd, + DQ4_zd, + DQ3_zd, + DQ2_zd, + DQ1_zd, + DQ0_zd } = DQ_zd; + + parameter UserPreload = 1'b1; + parameter mem_file_name = "none"; //"mt48lc4m16.mem"; + parameter TimingModel = "DefaultTimingModel"; + parameter PartID = "mt48lc4m16"; + parameter hi_bank = 3; + parameter depth = 25'h100000; + + reg PoweredUp = 1'b0; + reg CKEreg = 1'b0; + reg CAS_Lat ; + reg CAS_Lat2; + reg [15:0] DataDrive = 16'bz ; + + // Memory array declaration + integer Mem [0:(hi_bank+1)*depth*2-1]; + + // Type definition for state machine + parameter pwron = 5'd0; + parameter precharge = 5'd1; + parameter idle = 5'd2; + parameter mode_set = 5'd3; + parameter self_refresh = 5'd4; + parameter auto_refresh = 5'd5; + parameter pwrdwn = 5'd6; + parameter bank_act = 5'd7; + parameter bank_act_pwrdwn = 5'd8; + parameter write = 5'd9; + parameter write_suspend = 5'd10; + parameter read = 5'd11; + parameter read_suspend = 5'd12; + parameter write_auto_pre = 5'd13; + parameter read_auto_pre = 5'd14; + + reg [4:0] statebank [hi_bank:0]; + + // Type definition for commands + parameter desl = 4'd0; + parameter nop = 4'd1; + parameter bst = 4'd2; + parameter rd = 4'd3; + parameter writ = 4'd4; + parameter act = 4'd5; + parameter pre = 4'd6; + parameter mrs = 4'd7; + parameter ref = 4'd8; + + reg [3:0] command = desl; + + // burst type + parameter sequential = 1'b0; + parameter interleave = 1'b1; + reg Burst ; + + // write burst mode + parameter programmed = 1'b0; + parameter single = 1'b1; + reg WB ; + + //burst sequences + integer intab [0:63]; + + reg [19:0] MemAddr [hi_bank:0]; + integer BurstCnt [hi_bank:0]; + integer StartAddr [hi_bank:0]; + integer BurstInc [hi_bank:0]; + integer BaseLoc [hi_bank:0]; + + integer Loc; + integer BurstLen; + integer Burst_Bits; + + reg written = 1'b0; + reg chip_en = 1'b0; + + integer cur_bank; + reg [11:0] ModeReg ; + integer Ref_Cnt = 0; + + time Next_Ref = 0; + reg [8*8:1] BankString ; + + reg Viol = 1'b0; + reg [15:0] DataDriveOut = 16'bz; + reg [15:0] DataDrive1 = 16'bz; + reg [15:0] DataDrive2 = 16'bz; + reg [15:0] DataDrive3 = 16'bz; + + reg DQM0_reg0 ; + reg DQM0_reg1 ; + reg DQM0_reg2 ; + reg DQM1_reg0 ; + reg DQM1_reg1 ; + reg DQM1_reg2 ; + + // tdevice values: values for internal delays + time tdevice_TRASmin = 0; + time tdevice_TRASmax = 0; + time tdevice_TRC = 0; + time tdevice_TRCAR = 0; + time tdevice_TRCD = 0; + time tdevice_TRP = 0; + + /////////////////////////////////////////////////////////////////////////// + //Interconnect Path Delay Section + /////////////////////////////////////////////////////////////////////////// + buf (A11_ipd, A11); + buf (A10_ipd, A10); + buf (A9_ipd , A9 ); + buf (A8_ipd , A8 ); + buf (A7_ipd , A7 ); + buf (A6_ipd , A6 ); + buf (A5_ipd , A5 ); + buf (A4_ipd , A4 ); + buf (A3_ipd , A3 ); + buf (A2_ipd , A2 ); + buf (A1_ipd , A1 ); + buf (A0_ipd , A0 ); + + buf (DQ15_ipd , DQ15 ); + buf (DQ14_ipd , DQ14 ); + buf (DQ13_ipd , DQ13 ); + buf (DQ12_ipd , DQ12 ); + buf (DQ11_ipd , DQ11 ); + buf (DQ10_ipd , DQ10 ); + buf (DQ9_ipd , DQ9 ); + buf (DQ8_ipd , DQ8 ); + buf (DQ7_ipd , DQ7 ); + buf (DQ6_ipd , DQ6 ); + buf (DQ5_ipd , DQ5 ); + buf (DQ4_ipd , DQ4 ); + buf (DQ3_ipd , DQ3 ); + buf (DQ2_ipd , DQ2 ); + buf (DQ1_ipd , DQ1 ); + buf (DQ0_ipd , DQ0 ); + + buf (CASNeg_ipd, CASNeg); + buf (RASNeg_ipd, RASNeg); + buf (BA0_ipd , BA0 ); + buf (BA1_ipd , BA1 ); + buf (DQM0_ipd , DQML ); + buf (DQM1_ipd , DQMH ); + buf (CLK_ipd , CLK ); + buf (CKE_ipd , CKE ); + buf (WENeg_ipd , WENeg ); + buf (CSNeg_ipd , CSNeg ); + + /////////////////////////////////////////////////////////////////////////// + // Propagation delay Section + /////////////////////////////////////////////////////////////////////////// + nmos (DQ15 , DQ15_zd , 1); + nmos (DQ14 , DQ14_zd , 1); + nmos (DQ13 , DQ13_zd , 1); + nmos (DQ12 , DQ12_zd , 1); + nmos (DQ11 , DQ11_zd , 1); + nmos (DQ10 , DQ10_zd , 1); + nmos (DQ9 , DQ9_zd , 1); + nmos (DQ8 , DQ8_zd , 1); + nmos (DQ7 , DQ7_zd , 1); + nmos (DQ6 , DQ6_zd , 1); + nmos (DQ5 , DQ5_zd , 1); + nmos (DQ4 , DQ4_zd , 1); + nmos (DQ3 , DQ3_zd , 1); + nmos (DQ2 , DQ2_zd , 1); + nmos (DQ1 , DQ1_zd , 1); + nmos (DQ0 , DQ0_zd , 1); + + wire deg; + wire chip_act; + assign chip_act = chip_en; + + wire chip_act_deg; + assign chip_act_deg = chip_act && deg; + + wire cas_latency2; + wire cas_latency3; + + assign cas_latency2 = ~CAS_Lat && CAS_Lat2; + assign cas_latency3 = CAS_Lat && CAS_Lat2; + + specify + // tipd delays: interconnect path delays, mapped to input port delays. + // In Verilog it is not necessary to declare any tipd delay variables, + // they can be taken from SDF file + // With all the other delays real delays would be taken from SDF file + + // tpd delays + specparam tpd_CLK_DQ0 = 1; + specparam tpd_CLK_DQ1 = 1; + + // tpw values: pulse widths + specparam tpw_CLK_posedge = 1; + specparam tpw_CLK_negedge = 1; + + // tsetup values: setup times + specparam tsetup_DQ0_CLK = 1; // tDS + + // thold values: hold times + specparam thold_DQ0_CLK = 1; // tDH + + // tperiod_min: minimum clock period = 1/max freq + specparam tperiod_CLK_cl1_eq_1_posedge = 1; + specparam tperiod_CLK_cl2_eq_1_posedge = 1; + + // tdevice values: values for internal delays + specparam tdevice_REF = 15625 ; + + /////////////////////////////////////////////////////////////////////// + // Input Port Delays don't require Verilog description + /////////////////////////////////////////////////////////////////////// + // Path delays // + /////////////////////////////////////////////////////////////////////// + + if (~CAS_Lat && CAS_Lat2) (CLK *> DQ0) = tpd_CLK_DQ0; + if (~CAS_Lat && CAS_Lat2) (CLK *> DQ1) = tpd_CLK_DQ0; + if (~CAS_Lat && CAS_Lat2) (CLK *> DQ2) = tpd_CLK_DQ0; + if (~CAS_Lat && CAS_Lat2) (CLK *> DQ3) = tpd_CLK_DQ0; + if (~CAS_Lat && CAS_Lat2) (CLK *> DQ4) = tpd_CLK_DQ0; + if (~CAS_Lat && CAS_Lat2) (CLK *> DQ5) = tpd_CLK_DQ0; + if (~CAS_Lat && CAS_Lat2) (CLK *> DQ6) = tpd_CLK_DQ0; + if (~CAS_Lat && CAS_Lat2) (CLK *> DQ7) = tpd_CLK_DQ0; + if (~CAS_Lat && CAS_Lat2) (CLK *> DQ8) = tpd_CLK_DQ0; + if (~CAS_Lat && CAS_Lat2) (CLK *> DQ9) = tpd_CLK_DQ0; + if (~CAS_Lat && CAS_Lat2) (CLK *> DQ10) = tpd_CLK_DQ0; + if (~CAS_Lat && CAS_Lat2) (CLK *> DQ11) = tpd_CLK_DQ0; + if (~CAS_Lat && CAS_Lat2) (CLK *> DQ12) = tpd_CLK_DQ0; + if (~CAS_Lat && CAS_Lat2) (CLK *> DQ13) = tpd_CLK_DQ0; + if (~CAS_Lat && CAS_Lat2) (CLK *> DQ14) = tpd_CLK_DQ0; + if (~CAS_Lat && CAS_Lat2) (CLK *> DQ15) = tpd_CLK_DQ0; + + if (CAS_Lat && CAS_Lat2) (CLK *> DQ0) = tpd_CLK_DQ1; + if (CAS_Lat && CAS_Lat2) (CLK *> DQ1) = tpd_CLK_DQ1; + if (CAS_Lat && CAS_Lat2) (CLK *> DQ2) = tpd_CLK_DQ1; + if (CAS_Lat && CAS_Lat2) (CLK *> DQ3) = tpd_CLK_DQ1; + if (CAS_Lat && CAS_Lat2) (CLK *> DQ4) = tpd_CLK_DQ1; + if (CAS_Lat && CAS_Lat2) (CLK *> DQ5) = tpd_CLK_DQ1; + if (CAS_Lat && CAS_Lat2) (CLK *> DQ6) = tpd_CLK_DQ1; + if (CAS_Lat && CAS_Lat2) (CLK *> DQ7) = tpd_CLK_DQ1; + if (CAS_Lat && CAS_Lat2) (CLK *> DQ8) = tpd_CLK_DQ1; + if (CAS_Lat && CAS_Lat2) (CLK *> DQ9) = tpd_CLK_DQ1; + if (CAS_Lat && CAS_Lat2) (CLK *> DQ10) = tpd_CLK_DQ1; + if (CAS_Lat && CAS_Lat2) (CLK *> DQ11) = tpd_CLK_DQ1; + if (CAS_Lat && CAS_Lat2) (CLK *> DQ12) = tpd_CLK_DQ1; + if (CAS_Lat && CAS_Lat2) (CLK *> DQ13) = tpd_CLK_DQ1; + if (CAS_Lat && CAS_Lat2) (CLK *> DQ14) = tpd_CLK_DQ1; + if (CAS_Lat && CAS_Lat2) (CLK *> DQ15) = tpd_CLK_DQ1; + + //////////////////////////////////////////////////////////////////////// + // Timing Check Section + //////////////////////////////////////////////////////////////////////// + $setup (BA0 , posedge CLK &&& chip_act, tsetup_DQ0_CLK, Viol); + $setup (BA1 , posedge CLK &&& chip_act, tsetup_DQ0_CLK, Viol); + $setup (DQML, posedge CLK &&& chip_act, tsetup_DQ0_CLK, Viol); + $setup (DQMH, posedge CLK &&& chip_act, tsetup_DQ0_CLK, Viol); + $setup (CKE , posedge CLK &&& chip_act, tsetup_DQ0_CLK, Viol); + $setup (WENeg, posedge CLK &&& chip_act, tsetup_DQ0_CLK, Viol); + $setup (CSNeg, posedge CLK &&& chip_act, tsetup_DQ0_CLK, Viol); + $setup (CASNeg, posedge CLK &&& chip_act, tsetup_DQ0_CLK, Viol); + $setup (RASNeg, posedge CLK &&& chip_act, tsetup_DQ0_CLK, Viol); + + $setup (DQ0 ,posedge CLK &&& chip_act_deg, tsetup_DQ0_CLK, Viol); + $setup (DQ1 ,posedge CLK &&& chip_act_deg, tsetup_DQ0_CLK, Viol); + $setup (DQ2 ,posedge CLK &&& chip_act_deg, tsetup_DQ0_CLK, Viol); + $setup (DQ3 ,posedge CLK &&& chip_act_deg, tsetup_DQ0_CLK, Viol); + $setup (DQ4 ,posedge CLK &&& chip_act_deg, tsetup_DQ0_CLK, Viol); + $setup (DQ5 ,posedge CLK &&& chip_act_deg, tsetup_DQ0_CLK, Viol); + $setup (DQ6 ,posedge CLK &&& chip_act_deg, tsetup_DQ0_CLK, Viol); + $setup (DQ7 ,posedge CLK &&& chip_act_deg, tsetup_DQ0_CLK, Viol); + $setup (DQ8 ,posedge CLK &&& chip_act_deg, tsetup_DQ0_CLK, Viol); + $setup (DQ9 ,posedge CLK &&& chip_act_deg, tsetup_DQ0_CLK, Viol); + $setup (DQ10 ,posedge CLK &&& chip_act_deg, tsetup_DQ0_CLK, Viol); + $setup (DQ11 ,posedge CLK &&& chip_act_deg, tsetup_DQ0_CLK, Viol); + $setup (DQ12 ,posedge CLK &&& chip_act_deg, tsetup_DQ0_CLK, Viol); + $setup (DQ13 ,posedge CLK &&& chip_act_deg, tsetup_DQ0_CLK, Viol); + $setup (DQ14 ,posedge CLK &&& chip_act_deg, tsetup_DQ0_CLK, Viol); + $setup (DQ15 ,posedge CLK &&& chip_act_deg, tsetup_DQ0_CLK, Viol); + + $setup (A0, posedge CLK &&& chip_act, tsetup_DQ0_CLK, Viol); + $setup (A1, posedge CLK &&& chip_act, tsetup_DQ0_CLK, Viol); + $setup (A2, posedge CLK &&& chip_act, tsetup_DQ0_CLK, Viol); + $setup (A3, posedge CLK &&& chip_act, tsetup_DQ0_CLK, Viol); + $setup (A4, posedge CLK &&& chip_act, tsetup_DQ0_CLK, Viol); + $setup (A5, posedge CLK &&& chip_act, tsetup_DQ0_CLK, Viol); + $setup (A6, posedge CLK &&& chip_act, tsetup_DQ0_CLK, Viol); + $setup (A7, posedge CLK &&& chip_act, tsetup_DQ0_CLK, Viol); + $setup (A8, posedge CLK &&& chip_act, tsetup_DQ0_CLK, Viol); + $setup (A9, posedge CLK &&& chip_act, tsetup_DQ0_CLK, Viol); + $setup (A10, posedge CLK &&& chip_act, tsetup_DQ0_CLK, Viol); + $setup (A11, posedge CLK &&& chip_act, tsetup_DQ0_CLK, Viol); + + $hold (posedge CLK &&& chip_act, BA0, thold_DQ0_CLK, Viol); + $hold (posedge CLK &&& chip_act, BA1, thold_DQ0_CLK, Viol); + $hold (posedge CLK &&& chip_act, DQML, thold_DQ0_CLK, Viol); + $hold (posedge CLK &&& chip_act, DQMH, thold_DQ0_CLK, Viol); + $hold (posedge CLK &&& chip_act, CKE , thold_DQ0_CLK, Viol); + $hold (posedge CLK &&& chip_act, CASNeg, thold_DQ0_CLK, Viol); + $hold (posedge CLK &&& chip_act, RASNeg, thold_DQ0_CLK, Viol); + $hold (posedge CLK &&& chip_act, WENeg, thold_DQ0_CLK, Viol); + $hold (posedge CLK &&& chip_act, CSNeg, thold_DQ0_CLK, Viol); + + $hold (posedge CLK &&& chip_act, A0, thold_DQ0_CLK, Viol); + $hold (posedge CLK &&& chip_act, A1, thold_DQ0_CLK, Viol); + $hold (posedge CLK &&& chip_act, A2, thold_DQ0_CLK, Viol); + $hold (posedge CLK &&& chip_act, A3, thold_DQ0_CLK, Viol); + $hold (posedge CLK &&& chip_act, A4, thold_DQ0_CLK, Viol); + $hold (posedge CLK &&& chip_act, A5, thold_DQ0_CLK, Viol); + $hold (posedge CLK &&& chip_act, A6, thold_DQ0_CLK, Viol); + $hold (posedge CLK &&& chip_act, A7, thold_DQ0_CLK, Viol); + $hold (posedge CLK &&& chip_act, A8, thold_DQ0_CLK, Viol); + $hold (posedge CLK &&& chip_act, A9, thold_DQ0_CLK, Viol); + $hold (posedge CLK &&& chip_act, A10, thold_DQ0_CLK, Viol); + $hold (posedge CLK &&& chip_act, A11, thold_DQ0_CLK, Viol); + + $hold (posedge CLK &&& chip_act_deg, DQ0, thold_DQ0_CLK, Viol); + $hold (posedge CLK &&& chip_act_deg, DQ1, thold_DQ0_CLK, Viol); + $hold (posedge CLK &&& chip_act_deg, DQ2, thold_DQ0_CLK, Viol); + $hold (posedge CLK &&& chip_act_deg, DQ3, thold_DQ0_CLK, Viol); + $hold (posedge CLK &&& chip_act_deg, DQ4, thold_DQ0_CLK, Viol); + $hold (posedge CLK &&& chip_act_deg, DQ5, thold_DQ0_CLK, Viol); + $hold (posedge CLK &&& chip_act_deg, DQ6, thold_DQ0_CLK, Viol); + $hold (posedge CLK &&& chip_act_deg, DQ7, thold_DQ0_CLK, Viol); + $hold (posedge CLK &&& chip_act_deg, DQ8, thold_DQ0_CLK, Viol); + $hold (posedge CLK &&& chip_act_deg, DQ9, thold_DQ0_CLK, Viol); + $hold (posedge CLK &&& chip_act_deg, DQ10, thold_DQ0_CLK, Viol); + $hold (posedge CLK &&& chip_act_deg, DQ11, thold_DQ0_CLK, Viol); + $hold (posedge CLK &&& chip_act_deg, DQ12, thold_DQ0_CLK, Viol); + $hold (posedge CLK &&& chip_act_deg, DQ13, thold_DQ0_CLK, Viol); + $hold (posedge CLK &&& chip_act_deg, DQ14, thold_DQ0_CLK, Viol); + $hold (posedge CLK &&& chip_act_deg, DQ15, thold_DQ0_CLK, Viol); + + $width (posedge CLK &&& chip_act, tpw_CLK_posedge); + $width (negedge CLK &&& chip_act, tpw_CLK_negedge); + + $period (posedge CLK &&& cas_latency2, tperiod_CLK_cl1_eq_1_posedge); + $period (posedge CLK &&& cas_latency3, tperiod_CLK_cl2_eq_1_posedge); + + endspecify + + task generate_out ; + output [15:0] DataDrive; + input Bank; + integer Bank; + integer location; + begin + location = Bank * depth * 2 + Loc; + + DataDrive[7:0] = 8'bx; + if (Mem[location] > -1) + DataDrive[7:0] = Mem[location]; + + DataDrive[15:8] = 8'bx; + if (Mem[location+1] > -1) + DataDrive[15:8] = Mem[location+1]; + + end + endtask + + task MemWrite; + input Bank; + integer Bank; + integer location; + begin + location = Bank * depth * 2 + Loc; + + if (~DQM0_ipd) + begin + Mem[location] = -1; + if (~Viol) + Mem[location] = DQIn[7:0]; + end + + if (~DQM1_ipd) + begin + Mem[location+1] = -1; + if (~Viol) + Mem[location+1] = DQIn[15:8]; + end + + end + endtask + + task BurstIncProc; + input Bank; + integer Bank; + begin + BurstInc[Bank] = 0; + if (Burst_Bits == 1) + BurstInc[Bank] = A[0:0]; + if (Burst_Bits == 2) + BurstInc[Bank] = A[1:0]; + if (Burst_Bits == 3) + BurstInc[Bank] = A[2:0]; + if (Burst_Bits == 7) + BurstInc[Bank] = A[6:0]; + end + endtask + + task NextStateAuto; + input Bank; + input state; + integer Bank; + reg [4:0] state; + begin + if (~A[10]) + statebank[Bank] = state; + else if (A[10]) + if (state == write) + statebank[Bank] = write_auto_pre; + else + statebank[Bank] = read_auto_pre; + end + endtask + + ////////////////////////////////////////////////////////////////////////// + // Main Behavior Block // + ////////////////////////////////////////////////////////////////////////// + + // chech when data is generated from model to avoid setup/hold check in + // those occasion + reg deq; + always @(DQIn, DQOut) + begin + if (DQIn==DQOut) + deq=1'b1; + else + deq=1'b0; + end + assign deg=deq; + + // initialize burst sequences + initial + begin + intab[0] = 0; + intab[1] = 1; + intab[2] = 2; + intab[3] = 3; + intab[4] = 4; + intab[5] = 5; + intab[6] = 6; + intab[7] = 7; + intab[8] = 1; + intab[9] = 0; + intab[10] = 3; + intab[11] = 2; + intab[12] = 5; + intab[13] = 4; + intab[14] = 7; + intab[15] = 6; + intab[16] = 2; + intab[17] = 3; + intab[18] = 0; + intab[19] = 1; + intab[20] = 6; + intab[21] = 7; + intab[22] = 4; + intab[23] = 5; + intab[24] = 3; + intab[25] = 2; + intab[26] = 1; + intab[27] = 0; + intab[28] = 7; + intab[29] = 6; + intab[30] = 5; + intab[31] = 4; + intab[32] = 4; + intab[33] = 5; + intab[34] = 6; + intab[35] = 7; + intab[36] = 0; + intab[37] = 1; + intab[38] = 2; + intab[39] = 3; + intab[40] = 5; + intab[41] = 4; + intab[42] = 7; + intab[43] = 6; + intab[44] = 1; + intab[45] = 0; + intab[46] = 3; + intab[47] = 2; + intab[48] = 6; + intab[49] = 7; + intab[50] = 4; + intab[51] = 5; + intab[52] = 2; + intab[53] = 3; + intab[54] = 0; + intab[55] = 1; + intab[56] = 7; + intab[57] = 6; + intab[58] = 5; + intab[59] = 4; + intab[60] = 3; + intab[61] = 2; + intab[62] = 1; + intab[63] = 0; + end + + // initialize memory and load preload files if any + initial + begin: InitMemory + integer i; + for (i=0; i<=((hi_bank+1)*depth*2 - 1); i=i+1) + begin + Mem[i] = -1; + end + // Memory preload file + // mt48lc4m16.mem file + // @bbbbbb - stands for address within memory, + // dd -

?&H?VquPaandF%@)d;-IQhPMi>E&PQ&@dz~ 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

is word to be written at Mem(bbbbbb++) + // (bbbbbb is incremented at every load) + if (UserPreload && !(mem_file_name == "none")) + $readmemh(mem_file_name,Mem); + end + + //Power Up time 100 us; + initial + begin + PoweredUp = 1'b0; + statebank[0] = pwron; + statebank[1] = pwron; + statebank[2] = pwron; + statebank[3] = pwron; + #100000 PoweredUp = 1'b1; + end + + always @(posedge ras_in[0]) + begin:TRASrise0 + ras_out[0] <= #tdevice_TRASmin ras_in[0]; + end + + always @(negedge ras_in[0]) + begin:TRASfall0 + ras_out[0] <= #tdevice_TRASmax ras_in[0]; + end + + always @(posedge ras_in[1]) + begin:TRASrise1 + ras_out[1] <= #tdevice_TRASmin ras_in[1]; + end + + always @(negedge ras_in[1]) + begin:TRASfall1 + ras_out[1] <= #tdevice_TRASmax ras_in[1]; + end + + always @(posedge ras_in[2]) + begin:TRASrise2 + ras_out[2] <= #tdevice_TRASmin ras_in[2]; + end + always @(negedge ras_in[2]) + begin:TRASfall2 + ras_out[2] <= #tdevice_TRASmax ras_in[2]; + end + + always @(posedge ras_in[3]) + begin:TRASrise3 + ras_out[3] <= #tdevice_TRASmin ras_in[3]; + end + + always @(negedge ras_in[3]) + begin:TRASfall3 + ras_out[3] <= #tdevice_TRASmax ras_in[3]; + end + + always @(posedge rcdt_in[0]) + begin:TRCDrise0 + rcdt_out[0] <= #5 1'b1; + end + always @(negedge rcdt_in[0]) + begin:TRCDfall0 + rcdt_out[0] <= #tdevice_TRCD 1'b0; + end + + always @(posedge rcdt_in[1]) + begin:TRCDrise1 + rcdt_out[1] <= #5 1'b1; + end + always @(negedge rcdt_in[1]) + begin:TRCDfall1 + rcdt_out[1] <= #tdevice_TRCD 1'b0; + end + + always @(posedge rcdt_in[2]) + begin:TRCDrise2 + rcdt_out[2] <= #5 1'b1; + end + always @(negedge rcdt_in[2]) + begin:TRCDfall2 + rcdt_out[2] <= #tdevice_TRCD 1'b0; + end + + always @(posedge rcdt_in[3]) + begin:TRCDrise3 + rcdt_out[3] <= #5 1'b1; + end + always @(negedge rcdt_in[3]) + begin:TRCDfall3 + rcdt_out[3] <= #tdevice_TRCD 1'b0; + end + + ///////////////////////////////////////////////////////////////////////// + // Functional Section + ///////////////////////////////////////////////////////////////////////// + always @(posedge CLK) + begin + if ($time > Next_Ref && PoweredUp && Ref_Cnt > 0) + begin + Ref_Cnt = Ref_Cnt - 1; + Next_Ref = $time + tdevice_REF; + end + if (CKEreg) + begin + if (~CSNeg_ipd) + chip_en = 1; + else + chip_en = 0; + end + + if (CKEreg && ~CSNeg_ipd) + begin + if (WENeg_ipd == 1'bx) + $display(" Unusable value for WENeg "); + if (RASNeg_ipd == 1'bx) + $display(" Unusable value for RASNeg "); + if (CASNeg_ipd == 1'bx) + $display(" Unusable value for CASNeg "); + + // Command Decode + if (RASNeg_ipd && CASNeg_ipd && WENeg_ipd) + command = nop; + else if (~RASNeg_ipd && CASNeg_ipd && WENeg_ipd) + command = act; + else if (RASNeg_ipd && ~CASNeg_ipd && WENeg_ipd) + command = rd; + else if (RASNeg_ipd && ~CASNeg_ipd && ~WENeg_ipd) + command = writ; + else if (RASNeg_ipd && CASNeg_ipd && ~WENeg_ipd) + command = bst; + else if (~RASNeg_ipd && CASNeg_ipd && ~WENeg_ipd) + command = pre; + else if (~RASNeg_ipd && ~CASNeg_ipd && WENeg_ipd) + command = ref; + else if (~RASNeg_ipd && ~CASNeg_ipd && ~WENeg_ipd) + command = mrs; + + // PowerUp Check + if (~(PoweredUp) && command != nop) + begin + $display (" Incorrect power up. Command issued before "); + $display (" power up complete. "); + end + + // Bank Decode + if (~BA0_ipd && ~BA1_ipd) + cur_bank = 0; + else if (BA0_ipd && ~BA1_ipd) + cur_bank = 1; + else if (~BA0_ipd && BA1_ipd) + cur_bank = 2; + else if (BA0_ipd && BA1_ipd) + cur_bank = 3; + else + begin + $display ("Could not decode bank selection - results"); + $display ("may be incorrect."); + end + end + + // The Big State Machine + if (CKEreg) + begin + if (CSNeg_ipd == 1'bx) + $display ("Unusable value for CSNeg"); + + if (CSNeg_ipd) + command = nop; + + // DQM pipeline + DQM0_reg2 = DQM0_reg1; + DQM0_reg1 = DQM0_reg0; + DQM0_reg0 = DQM0_ipd; + DQM1_reg2 = DQM1_reg1; + DQM1_reg1 = DQM1_reg0; + DQM1_reg0 = DQM1_ipd; + + // by default data drive is Z, might get over written in one + // of the passes below + DataDrive = 16'bz; + + for (bank = 0; bank <= hi_bank; bank = bank + 1) + begin + case (statebank[bank]) + pwron : + begin + if (~PoweredUp) + begin + if (command != nop) + $display ("Only NOPs allowed during power up."); + DataDrive = 16'bz; + end + else if (command == pre && (cur_bank == bank || A[10])) + begin + statebank[bank] = precharge; + statebank[bank] <= #tdevice_TRP idle; + end + end + + precharge : + begin + if (cur_bank == bank) + // It is only an error if this bank is selected + if (command != nop && command != pre) + begin + $display ("Illegal command received "); + $display ("during precharge.",$time); + end + end + + idle : + begin + if (command == nop || command == bst || command == pre + || cur_bank != bank) + begin + end + else if (command == mrs) + begin + if (statebank[0] == idle && statebank[1] == idle && + statebank[2] == idle && statebank[3] == idle) + begin + ModeReg = A; + statebank[bank] = mode_set; + end + end + else if (command == ref) + begin + if (statebank[0] == idle && statebank[1] == idle && + statebank[2] == idle && statebank[3] == idle) + if (CKE) + begin + statebank[bank] = auto_refresh; + statebank[bank] <= #tdevice_TRCAR idle; + end + else + begin + statebank[0] = self_refresh; + statebank[1] = self_refresh; + statebank[2] = self_refresh; + statebank[3] = self_refresh; + end + end + else if (command == act) + begin + statebank[bank] = bank_act; + ras_in[bank] = 1'b1; + ras_in [bank] <= #70 1'b0; + rct_in = 1'b1; + rct_in <= #1 1'b0; + rcdt_in[bank] = 1'b1; + rcdt_in[bank] <= #1 1'b0; + MemAddr[bank][19:8] = A; // latch row addr + end + else + $display ("Illegal command received in idle state.",$time); + end + + mode_set : + begin + if (ModeReg[7] != 0 || ModeReg[8] != 0) + $display ("Illegal operating mode set."); + if (command != nop) + begin + $display ("Illegal command received during mode"); + $display ("set.",$time); + end + + // read burst length + if (ModeReg[2:0] == 3'b000) + begin + BurstLen = 1; + Burst_Bits = 0; + end + else if (ModeReg[2:0] == 3'b001) + begin + BurstLen = 2; + Burst_Bits = 1; + end + else if (ModeReg[2:0] == 3'b010) + begin + BurstLen = 4; + Burst_Bits = 2; + end + else if (ModeReg[2:0] == 3'b011) + begin + BurstLen = 8; + Burst_Bits = 3; + end + else if (ModeReg[2:0] == 3'b111) + begin + BurstLen = 256; + Burst_Bits = 7; + end + else + $display ("Invalid burst length specified."); + + // read burst type + if (~ModeReg[3]) + Burst = sequential; + else if (ModeReg[3]) + Burst = interleave; + else + $display ("Invalid burst type specified."); + + // read CAS latency + if (ModeReg[6:4] == 3'b010) + begin + CAS_Lat = 1'b0; + CAS_Lat2 = 1'b1; + end + else if (ModeReg[6:4] == 3'b011) + begin + CAS_Lat = 1'b1; + CAS_Lat2 = 1'b1; + end + else + $display ("CAS Latency set incorrecty"); + + // write burst mode + if (~ModeReg[9]) + WB = programmed; + else if (ModeReg[9]) + WB = single; + else + $display ("Invalid burst type specified."); + + statebank[bank] = idle; + end + + auto_refresh : + begin + if (Ref_Cnt < 8192) + Ref_Cnt = Ref_Cnt + 1; + if (command != nop) + begin + $display ("Illegal command received during"); + $display ("auto_refresh.",$time); + end + end + + bank_act : + begin + if (command == pre && (cur_bank == bank || A[10])) + begin + if (~ras_out[bank]) + begin + $display ("precharge command does not meet tRAS"); + $display ("time", $time); + end + statebank[bank] = precharge; + statebank[bank] <= #tdevice_TRP idle; + end + else if (command == nop || command == bst + || cur_bank != bank) + begin + end + else if (command == rd) + begin + if (rcdt_out[bank]) + begin + $display ("read command received too soon"); + $display ("after active",$time); + end + if (A[10] == 1'bx) + begin + $display ("A(10) = X during read command."); + $display ("Next state unknown."); + end + MemAddr[bank][7:0] = 8'b0;// clr old addr + // latch col addr + if (Burst_Bits == 0) + MemAddr[bank][7:0] = A[7:0]; + if (Burst_Bits == 1) + MemAddr[bank][7:1] = A[7:1]; + if (Burst_Bits == 2) + MemAddr[bank][7:2] = A[7:2]; + if (Burst_Bits == 3) + MemAddr[bank][7:3] = A[7:3]; + if (Burst_Bits == 7) + MemAddr[bank][7:7] = A[7:7]; + BurstIncProc(bank); + StartAddr[bank] = BurstInc[bank] % 8; + BaseLoc[bank] = MemAddr[bank]; + Loc = 2*(BaseLoc[bank] + BurstInc[bank]); + generate_out(DataDrive,bank); + BurstCnt[bank] = 1; + NextStateAuto(bank, read); + bank_tmp = bank; + end + else if (command == writ) + begin + if (rcdt_out[bank]) + begin + $display ("write command received too soon"); + $display ("after active",$time); + end + if (A[10] == 1'bx) + begin + $display ("A(10) = X during write command."); + $display ("Next state unknown."); + end + MemAddr[bank][7:0] = 8'b0; // clr old addr + BurstIncProc(bank); + // latch col addr + if (Burst_Bits == 0) + MemAddr[bank][7:0] = A[7:0]; + if (Burst_Bits == 1) + MemAddr[bank][7:1] = A[7:1]; + if (Burst_Bits == 2) + MemAddr[bank][7:2] = A[7:2]; + if (Burst_Bits == 3) + MemAddr[bank][7:3] = A[7:3]; + if (Burst_Bits == 7) + MemAddr[bank][7:7] = A[7:7]; + StartAddr[bank] = BurstInc[bank] % 8; + BaseLoc[bank] = MemAddr[bank]; + Loc = 2*(BaseLoc[bank] + BurstInc[bank]); + MemWrite(bank); + BurstCnt[bank] = 1'b1; + NextStateAuto(bank, write); + written = 1'b1; + end + else if (cur_bank == bank || command == mrs) + begin + $display ("Illegal command received in"); + $display ("active state",$time); + end + end + + write : + begin + if (command == bst) + begin + statebank[bank] = bank_act; + BurstCnt[bank] = 1'b0; + end + else if (command == rd) + if (cur_bank == bank) + begin + MemAddr[bank][7:0] = 8'b0;// clr old addr + BurstIncProc(bank); + // latch col addr + if (Burst_Bits == 0) + MemAddr[bank][7:0] = A[7:0]; + if (Burst_Bits == 1) + MemAddr[bank][7:1] = A[7:1]; + if (Burst_Bits == 2) + MemAddr[bank][7:2] = A[7:2]; + if (Burst_Bits == 3) + MemAddr[bank][7:3] = A[7:3]; + if (Burst_Bits == 7) + MemAddr[bank][7:7] = A[7:7]; + StartAddr[bank] = BurstInc[bank] % 8; + BaseLoc[bank] = MemAddr[bank]; + Loc = 2*(BaseLoc[bank] + BurstInc[bank]); + generate_out(DataDrive, bank); + BurstCnt[bank] = 1'b1; + NextStateAuto(bank, read); + end + else + statebank[bank] = bank_act; + else if (command == writ) + if (cur_bank == bank) + begin + MemAddr[bank][7:0] = 8'b0;// clr old addr + BurstIncProc(bank); + // latch col addr + if (Burst_Bits == 0) + MemAddr[bank][7:0] = A[7:0]; + if (Burst_Bits == 1) + MemAddr[bank][7:1] = A[7:1]; + if (Burst_Bits == 2) + MemAddr[bank][7:2] = A[7:2]; + if (Burst_Bits == 3) + MemAddr[bank][7:3] = A[7:3]; + if (Burst_Bits == 7) + MemAddr[bank][7:7] = A[7:7]; + StartAddr[bank] = BurstInc[bank] % 8; + BaseLoc[bank] = MemAddr[bank]; + Loc = 2*(BaseLoc[bank] + BurstInc[bank]); + MemWrite(bank); + BurstCnt[bank] = 1'b1; + if (A[10]) + statebank[bank] = write_auto_pre; + end + else + statebank[bank] = bank_act; + else if (command == pre && (cur_bank == bank || A[10])) + begin + if (~ras_out[bank]) + begin + $display ("precharge command does not meet tRAS time",$time); + end + if (~DQM0_ipd) + begin + $display ("DQM0 should be held high, data is"); + $display ("lost.",$time); + end + if (~DQM1_ipd) + begin + $display ("DQM1 should be held high, data is"); + $display ("lost.",$time); + end + statebank[bank] = precharge; + statebank[bank] <= #tdevice_TRP idle; + end + else if (command == nop || cur_bank != bank) + if (BurstCnt[bank] == BurstLen || WB == single) + begin + statebank[bank] = bank_act; + BurstCnt[bank] = 1'b0; + ras_in[bank] = 1'b1; + end + else + begin + if (Burst == sequential) + BurstInc[bank] = (BurstInc[bank]+1) % BurstLen; + else + BurstInc[bank] = + intab[StartAddr[bank]*8 + BurstCnt[bank]]; + Loc = 2*(BaseLoc[bank] + BurstInc[bank]); + MemWrite(bank); + BurstCnt[bank] = BurstCnt[bank] + 1; + end + else if (cur_bank == bank) + $display ("Illegal command received in write state",$time); + end + + read : + begin + if (command == bst) + begin + statebank[bank] = bank_act; + BurstCnt[bank] = 1'b0; + end + else if (command == rd) + if (cur_bank == bank) + begin + MemAddr[bank][7:0] = 8'b0;// clr old addr + BurstIncProc(bank); + // latch col addr + if (Burst_Bits == 0) + MemAddr[bank][7:0] = A[7:0]; + if (Burst_Bits == 1) + MemAddr[bank][7:1] = A[7:1]; + if (Burst_Bits == 2) + MemAddr[bank][7:2] = A[7:2]; + if (Burst_Bits == 3) + MemAddr[bank][7:3] = A[7:3]; + if (Burst_Bits == 7) + MemAddr[bank][7:7] = A[7:7]; + StartAddr[bank] = BurstInc[bank] % 8; + BaseLoc[bank] = MemAddr[bank]; + Loc = 2*(BaseLoc[bank] + BurstInc[bank]); + generate_out(DataDrive, bank); + BurstCnt[bank] = 1'b1; + NextStateAuto(bank, read); + end + else + statebank[bank] = bank_act; + else if (command == writ) + if (cur_bank == bank) + begin + if (rcdt_out[bank]) + begin + $display ("write command received too soon after active",$time); + end + if (A[10] == 1'bx) + begin + $display ("A(10) = X during write command."); + $display ("Next state unknown."); + end + + MemAddr[bank][7:0] = 8'b0;// clr old addr + BurstIncProc(bank); + // latch col addr + if (Burst_Bits == 0) + MemAddr[bank][7:0] = A[7:0]; + if (Burst_Bits == 1) + MemAddr[bank][7:1] = A[7:1]; + if (Burst_Bits == 2) + MemAddr[bank][7:2] = A[7:2]; + if (Burst_Bits == 3) + MemAddr[bank][7:3] = A[7:3]; + if (Burst_Bits == 7) + MemAddr[bank][7:7] = A[7:7]; + StartAddr[bank] = BurstInc[bank] % 8; + BaseLoc[bank] = MemAddr[bank]; + Loc = 2*(BaseLoc[bank] + BurstInc[bank]); + MemWrite(bank); + BurstCnt[bank] = 1'b1; + NextStateAuto(bank,write); + end + else + statebank[bank] = bank_act; + + else if (command == pre && (cur_bank == bank || A[10])) + begin + if (~ras_out[bank]) + begin + $display ("Precharge command does not meet tRAS time",$time); + end + statebank[bank] = precharge; + statebank[bank] <= #tdevice_TRP idle; + end + + else if (command == nop || cur_bank != bank) + begin + if (BurstCnt[bank] == BurstLen) + begin + statebank[bank] = bank_act; + BurstCnt[bank] = 1'b0; + ras_in[bank] = 1'b1; + end + else + begin + if (Burst == sequential) + BurstInc[bank] = (BurstInc[bank]+1) % BurstLen; + else + BurstInc[bank] = + intab[StartAddr[bank]*8 + BurstCnt[bank]]; + + Loc = 2*(BaseLoc[bank] + BurstInc[bank]); + generate_out(DataDrive, bank); + BurstCnt[bank] = BurstCnt[bank] + 1; + end + end + else if (cur_bank == bank) + $display ("Illegal command received in read state",$time); + end + + write_auto_pre : + begin + if (command == nop || cur_bank != bank) + if (BurstCnt[bank] == BurstLen || WB == single) + begin + statebank[bank] = precharge; + statebank[bank] <= #tdevice_TRP idle; + BurstCnt[bank] = 1'b0; + ras_in[bank] = 1'b1; + end + else + begin + if (Burst == sequential) + BurstInc[bank] = (BurstInc[bank]+1) % BurstLen; + else + BurstInc[bank] = + intab[StartAddr[bank]*8 + BurstCnt[bank]]; + Loc = 2*(BaseLoc[bank] + BurstInc[bank]); + MemWrite(bank); + BurstCnt[bank] = BurstCnt[bank] + 1; + end + else + $display ("Illegal command received in write state.",$time); + end + + read_auto_pre : + begin + if (command == nop || (cur_bank != bank && command != rd + && command != writ)) + if (BurstCnt[bank] == BurstLen) + begin + statebank[bank] = precharge; + statebank[bank] <= #tdevice_TRP idle; + BurstCnt[bank] = 1'b0; + ras_in[bank] = 1'b1; + end + else + begin + if (Burst == sequential) + BurstInc[bank] = (BurstInc[bank]+1) % BurstLen; + else + BurstInc[bank] = + intab[StartAddr[bank]*8 + BurstCnt[bank]]; + Loc = 2*(BaseLoc[bank] + BurstInc[bank]); + generate_out(DataDrive, bank); + BurstCnt[bank] = BurstCnt[bank] + 1; + end + else if ((command == rd || command == writ) && cur_bank + != bank) + begin + statebank[bank] = precharge; + statebank[bank] <= #tdevice_TRP idle; + end + else + $display ("Illegal command received in read state",$time); + end + endcase + end + + // Check Refresh Status + if (written && (Ref_Cnt == 0)) + $display ("memory not refreshed (by ref_cnt)", $time); + + DataDrive3 = DataDrive2; + DataDrive2 = DataDrive1; + DataDrive1 = DataDrive; + + end + + // Latency adjustments and DQM read masking + if (~DQM0_reg1) + if (CAS_Lat && CAS_Lat2) + DataDriveOut[7:0] = DataDrive3[7:0]; + else + DataDriveOut[7:0] = DataDrive2[7:0]; + else + DataDriveOut[7:0] = 8'bz; + + if (~DQM1_reg1) + if (CAS_Lat && CAS_Lat2) + DataDriveOut[15:8] = DataDrive3[15:8]; + else + DataDriveOut[15:8] = DataDrive2[15:8]; + else + DataDriveOut[15:8] = 8'bz; + + // The Powering-up State Machine + if (~CKEreg && CKE_ipd) + begin + if (CSNeg_ipd == 1'bx) + $display ("Unusable value for CSNeg"); + if (CSNeg_ipd) + command = nop; + + case (statebank[cur_bank]) + write_suspend : + begin + statebank[cur_bank] = write; + end + + read_suspend : + begin + statebank[cur_bank] = read; + end + + self_refresh : + begin + statebank[0] <= #tdevice_TRP idle; + statebank[1] <= #tdevice_TRP idle; + statebank[2] <= #tdevice_TRP idle; + statebank[3] <= #tdevice_TRP idle; + Ref_Cnt = 8192; + if (command != nop) + begin + $display ("Illegal command received during self"); + $display ("refresh",$time); + end + end + + pwrdwn : + begin + statebank[0] = idle; + statebank[1] = idle; + statebank[2] = idle; + statebank[3] = idle; + end + + bank_act_pwrdwn : + begin + statebank[cur_bank] = bank_act; + end + endcase + end + + // The Powering-down State Machine + if (CKEreg && ~CKE_ipd) + begin + if (CSNeg_ipd == 1'bx) + $display ("Unusable value for CSNeg"); + if (CSNeg_ipd) + command = nop; + + case (statebank[cur_bank]) + idle : + begin + if (command == nop) + begin + statebank[0] = pwrdwn; + statebank[1] = pwrdwn; + statebank[2] = pwrdwn; + statebank[3] = pwrdwn; + end + end + + write : + begin + statebank[cur_bank] = write_suspend; + end + + read : + begin + statebank[cur_bank] = read_suspend; + end + + bank_act : + begin + statebank[cur_bank] = bank_act_pwrdwn; + end + endcase + end + + CKEreg = CKE_ipd; + end + + always @(DataDriveOut) + begin + DQ_zd = DataDriveOut; + end + + reg TRASMIN_In, TRASMAX_In, TRC_In , TRCAR_In; + reg TRCD_In , TRP_In , TWR_In; + wire TRASMIN_Out,TRASMAX_Out,TRC_Out,TRCAR_Out, TRCD_Out, TRP_Out, TWR_Out; + + BUFFER BUF_TRASMIN (TRASMIN_Out , TRASMIN_In); + BUFFER BUF_TRASMAX (TRASMAX_Out , TRASMAX_In); + BUFFER BUF_TRC (TRC_Out , TRC_In); + BUFFER BUF_TRCAR (TRCAR_Out, TRCAR_In); + BUFFER BUF_TRCD (TRCD_Out , TRCD_In); + BUFFER BUF_TRP (TRP_Out , TRP_In); + + initial + begin + TRASMIN_In = 1; + TRASMAX_In = 1; + TRC_In = 1; + TRCAR_In = 1; + TRCD_In = 1'b1; + TRP_In = 1; + TWR_In = 1; + end + + always @(posedge TRC_Out) + begin + tdevice_TRC = $time; + end + + always @(posedge TRASMIN_Out) + begin + tdevice_TRASmin = $time; + end + + always @(posedge TRASMAX_Out) + begin + tdevice_TRASmax = $time; + end + + always @(posedge TRCAR_Out) + begin + tdevice_TRCAR = $time; + end + + always @(posedge TRCD_Out) + begin + tdevice_TRCD = $time; + end + + always @(posedge TRP_Out) + begin + tdevice_TRP = $time; + end + +endmodule + +module BUFFER (OUT,IN); + input IN; + output OUT; + buf (OUT, IN); +endmodule diff --git a/lib/common/Driver/SDRAM_driver/model/mt48lc4m32b2.v b/lib/common/Driver/SDRAM_driver/model/mt48lc4m32b2.v new file mode 100644 index 0000000..f085b0f --- /dev/null +++ b/lib/common/Driver/SDRAM_driver/model/mt48lc4m32b2.v @@ -0,0 +1,1976 @@ +////////////////////////////////////////////////////////////////////////////// +// File name : mt48lc4m32b2.v +////////////////////////////////////////////////////////////////////////////// +// Copyright (C) 2006 Free Model Foundry; http://www.freemodelfoundry.com +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License version 2 as +// published by the Free Software Foundation. +// +// MODIFICATION HISTORY: +// +// version: | author: | mod date: | changes made: +// V1.0 I.Milutinovic 06 Apr 18 Initial release +// +////////////////////////////////////////////////////////////////////////////// +// PART DESCRIPTION: +// +// Library: RAM +// Technology: LVTTL +// Part: MT48LC4M32B2 +// +// Description: 1M x 32 x 4Banks SDRAM +// +////////////////////////////////////////////////////////////////////////////// +// Known Bugs: +// +////////////////////////////////////////////////////////////////////////////// + +////////////////////////////////////////////////////////////////////////////// +// MODULE DECLARATION // +////////////////////////////////////////////////////////////////////////////// +`timescale 1 ns/100 ps + +module mt48lc4m32b2 + ( + A11 , + A10 , + A9 , + A8 , + A7 , + A6 , + A5 , + A4 , + A3 , + A2 , + A1 , + A0 , + + DQ31 , + DQ30 , + DQ29 , + DQ28 , + DQ27 , + DQ26 , + DQ25 , + DQ24 , + DQ23 , + DQ22 , + DQ21 , + DQ20 , + DQ19 , + DQ18 , + DQ17 , + DQ16 , + DQ15 , + DQ14 , + DQ13 , + DQ12 , + DQ11 , + DQ10 , + DQ9 , + DQ8 , + DQ7 , + DQ6 , + DQ5 , + DQ4 , + DQ3 , + DQ2 , + DQ1 , + DQ0 , + + BA0 , + BA1 , + DQM3 , + DQM2 , + DQM1 , + DQM0 , + CLK , + CKE , + WENeg , + RASNeg , + CSNeg , + CASNeg ); + + //////////////////////////////////////////////////////////////////////// + // Port / Part Pin Declarations + //////////////////////////////////////////////////////////////////////// + input A11 ; + input A10 ; + input A9 ; + input A8 ; + input A7 ; + input A6 ; + input A5 ; + input A4 ; + input A3 ; + input A2 ; + input A1 ; + input A0 ; + + inout DQ31 ; + inout DQ30 ; + inout DQ29 ; + inout DQ28 ; + inout DQ27 ; + inout DQ26 ; + inout DQ25 ; + inout DQ24 ; + inout DQ23 ; + inout DQ22 ; + inout DQ21 ; + inout DQ20 ; + inout DQ19 ; + inout DQ18 ; + inout DQ17 ; + inout DQ16 ; + inout DQ15 ; + inout DQ14 ; + inout DQ13 ; + inout DQ12 ; + inout DQ11 ; + inout DQ10 ; + inout DQ9 ; + inout DQ8 ; + inout DQ7 ; + inout DQ6 ; + inout DQ5 ; + inout DQ4 ; + inout DQ3 ; + inout DQ2 ; + inout DQ1 ; + inout DQ0 ; + + input BA0 ; + input BA1 ; + input DQM3 ; + input DQM2 ; + input DQM1 ; + input DQM0 ; + input CLK ; + input CKE ; + input WENeg ; + input RASNeg ; + input CSNeg ; + input CASNeg ; + + // interconnect path delay signals + wire A11_ipd ; + wire A10_ipd ; + wire A9_ipd ; + wire A8_ipd ; + wire A7_ipd ; + wire A6_ipd ; + wire A5_ipd ; + wire A4_ipd ; + wire A3_ipd ; + wire A2_ipd ; + wire A1_ipd ; + wire A0_ipd ; + + wire [11 : 0] A; + assign A = {A11_ipd, + A10_ipd, + A9_ipd, + A8_ipd, + A7_ipd, + A6_ipd, + A5_ipd, + A4_ipd, + A3_ipd, + A2_ipd, + A1_ipd, + A0_ipd }; + + wire DQ31_ipd ; + wire DQ30_ipd ; + wire DQ29_ipd ; + wire DQ28_ipd ; + wire DQ27_ipd ; + wire DQ26_ipd ; + wire DQ25_ipd ; + wire DQ24_ipd ; + wire DQ23_ipd ; + wire DQ22_ipd ; + wire DQ21_ipd ; + wire DQ20_ipd ; + wire DQ19_ipd ; + wire DQ18_ipd ; + wire DQ17_ipd ; + wire DQ16_ipd ; + wire DQ15_ipd ; + wire DQ14_ipd ; + wire DQ13_ipd ; + wire DQ12_ipd ; + wire DQ11_ipd ; + wire DQ10_ipd ; + wire DQ9_ipd ; + wire DQ8_ipd ; + wire DQ7_ipd ; + wire DQ6_ipd ; + wire DQ5_ipd ; + wire DQ4_ipd ; + wire DQ3_ipd ; + wire DQ2_ipd ; + wire DQ1_ipd ; + wire DQ0_ipd ; + + wire [31 : 0 ] DQIn; + assign DQIn = { DQ31_ipd, + DQ30_ipd, + DQ29_ipd, + DQ28_ipd, + DQ27_ipd, + DQ26_ipd, + DQ25_ipd, + DQ24_ipd, + DQ23_ipd, + DQ22_ipd, + DQ21_ipd, + DQ20_ipd, + DQ19_ipd, + DQ18_ipd, + DQ17_ipd, + DQ16_ipd, + DQ15_ipd, + DQ14_ipd, + DQ13_ipd, + DQ12_ipd, + DQ11_ipd, + DQ10_ipd, + DQ9_ipd, + DQ8_ipd, + DQ7_ipd, + DQ6_ipd, + DQ5_ipd, + DQ4_ipd, + DQ3_ipd, + DQ2_ipd, + DQ1_ipd, + DQ0_ipd }; + + wire [31 : 0] DQOut; + assign DQOut = { DQ31, + DQ30, + DQ29, + DQ28, + DQ27, + DQ26, + DQ25, + DQ24, + DQ23, + DQ22, + DQ21, + DQ20, + DQ19, + DQ18, + DQ17, + DQ16, + DQ15, + DQ14, + DQ13, + DQ12, + DQ11, + DQ10, + DQ9, + DQ8, + DQ7, + DQ6, + DQ5, + DQ4, + DQ3, + DQ2, + DQ1, + DQ0 }; + + wire BA0_ipd ; + wire BA1_ipd ; + wire DQM3_ipd ; + wire DQM2_ipd ; + wire DQM1_ipd ; + wire DQM0_ipd ; + wire CLK_ipd ; + wire CKE_ipd ; + wire WENeg_ipd ; + wire RASNeg_ipd ; + wire CSNeg_ipd ; + wire CASNeg_ipd ; + + integer bank; + integer bank_tmp; + + // internal delays + reg rct_in ; + reg rct_out; + reg [3:0] rcdt_in ; + reg [3:0] rcdt_out; + reg pre_in ; + reg pre_out ; + reg refreshed_in ; + reg refreshed_out ; + reg rcar_out ; + reg rcar_in ; + reg wrt_in ; + reg wrt_out ; + reg [3:0] ras_in = 1'b0; + reg [3:0] ras_out = 1'b0; + + reg [31 : 0] DQ_zd = 32'bz; + assign {DQ31_zd, + DQ30_zd, + DQ29_zd, + DQ28_zd, + DQ27_zd, + DQ26_zd, + DQ25_zd, + DQ24_zd, + DQ23_zd, + DQ22_zd, + DQ21_zd, + DQ20_zd, + DQ19_zd, + DQ18_zd, + DQ17_zd, + DQ16_zd, + DQ15_zd, + DQ14_zd, + DQ13_zd, + DQ12_zd, + DQ11_zd, + DQ10_zd, + DQ9_zd, + DQ8_zd, + DQ7_zd, + DQ6_zd, + DQ5_zd, + DQ4_zd, + DQ3_zd, + DQ2_zd, + DQ1_zd, + DQ0_zd } = DQ_zd; + + parameter UserPreload = 1'b1; + parameter mem_file_name = "none"; //"mt48lc4m32b2.mem"; + parameter TimingModel = "DefaultTimingModel"; + parameter PartID = "mt48lc4m32b2"; + parameter hi_bank = 3; + parameter depth = 25'h100000; + + reg PoweredUp = 1'b0; + reg CKEreg = 1'b0; + reg CAS_Lat ; + reg CAS_Lat2; + reg [31:0] DataDrive = 32'bz ; + + // Memory array declaration + integer Mem [0:(hi_bank+1)*depth*4-1]; + + // Type definition for state machine + parameter pwron = 5'd0; + parameter precharge = 5'd1; + parameter idle = 5'd2; + parameter mode_set = 5'd3; + parameter self_refresh = 5'd4; + parameter auto_refresh = 5'd5; + parameter pwrdwn = 5'd6; + parameter bank_act = 5'd7; + parameter bank_act_pwrdwn = 5'd8; + parameter write = 5'd9; + parameter write_suspend = 5'd10; + parameter read = 5'd11; + parameter read_suspend = 5'd12; + parameter write_auto_pre = 5'd13; + parameter read_auto_pre = 5'd14; + + reg [4:0] statebank [hi_bank:0]; + + // Type definition for commands + parameter desl = 4'd0; + parameter nop = 4'd1; + parameter bst = 4'd2; + parameter rd = 4'd3; + parameter writ = 4'd4; + parameter act = 4'd5; + parameter pre = 4'd6; + parameter mrs = 4'd7; + parameter ref = 4'd8; + + reg [3:0] command = desl; + + // burst type + parameter sequential = 1'b0; + parameter interleave = 1'b1; + reg Burst ; + + // write burst mode + parameter programmed = 1'b0; + parameter single = 1'b1; + reg WB ; + + //burst sequences + integer intab [0:63]; + + reg [19:0] MemAddr [hi_bank:0]; + integer BurstCnt [hi_bank:0]; + integer StartAddr [hi_bank:0]; + integer BurstInc [hi_bank:0]; + integer BaseLoc [hi_bank:0]; + + integer Loc; + integer BurstLen; + integer Burst_Bits; + + reg written = 1'b0; + reg chip_en = 1'b0; + + integer cur_bank; + reg [11:0] ModeReg ; + integer Ref_Cnt = 0; + + time Next_Ref = 0; + reg [8*8:1] BankString ; + + reg Viol = 1'b0; + reg [31:0] DataDriveOut = 32'bz; + reg [31:0] DataDrive1 = 32'bz; + reg [31:0] DataDrive2 = 32'bz; + reg [31:0] DataDrive3 = 32'bz; + + reg DQM0_reg0 ; + reg DQM0_reg1 ; + reg DQM0_reg2 ; + reg DQM1_reg0 ; + reg DQM1_reg1 ; + reg DQM1_reg2 ; + reg DQM2_reg0 ; + reg DQM2_reg1 ; + reg DQM2_reg2 ; + reg DQM3_reg0 ; + reg DQM3_reg1 ; + reg DQM3_reg2 ; + + // tdevice values: values for internal delays + time tdevice_TRC = 0; + time tdevice_TRCAR = 0; + time tdevice_TRCD = 0; + time tdevice_TRP = 0; + time tdevice_TWR = 0; + + /////////////////////////////////////////////////////////////////////////// + //Interconnect Path Delay Section + /////////////////////////////////////////////////////////////////////////// + buf (A11_ipd, A11); + buf (A10_ipd, A10); + buf (A9_ipd , A9 ); + buf (A8_ipd , A8 ); + buf (A7_ipd , A7 ); + buf (A6_ipd , A6 ); + buf (A5_ipd , A5 ); + buf (A4_ipd , A4 ); + buf (A3_ipd , A3 ); + buf (A2_ipd , A2 ); + buf (A1_ipd , A1 ); + buf (A0_ipd , A0 ); + + buf (DQ31_ipd , DQ31 ); + buf (DQ30_ipd , DQ30 ); + buf (DQ29_ipd , DQ29 ); + buf (DQ28_ipd , DQ28 ); + buf (DQ27_ipd , DQ27 ); + buf (DQ26_ipd , DQ26 ); + buf (DQ25_ipd , DQ25 ); + buf (DQ24_ipd , DQ24 ); + buf (DQ23_ipd , DQ23 ); + buf (DQ22_ipd , DQ22 ); + buf (DQ21_ipd , DQ21 ); + buf (DQ20_ipd , DQ20 ); + buf (DQ19_ipd , DQ19 ); + buf (DQ18_ipd , DQ18 ); + buf (DQ17_ipd , DQ17 ); + buf (DQ16_ipd , DQ16 ); + buf (DQ15_ipd , DQ15 ); + buf (DQ14_ipd , DQ14 ); + buf (DQ13_ipd , DQ13 ); + buf (DQ12_ipd , DQ12 ); + buf (DQ11_ipd , DQ11 ); + buf (DQ10_ipd , DQ10 ); + buf (DQ9_ipd , DQ9 ); + buf (DQ8_ipd , DQ8 ); + buf (DQ7_ipd , DQ7 ); + buf (DQ6_ipd , DQ6 ); + buf (DQ5_ipd , DQ5 ); + buf (DQ4_ipd , DQ4 ); + buf (DQ3_ipd , DQ3 ); + buf (DQ2_ipd , DQ2 ); + buf (DQ1_ipd , DQ1 ); + buf (DQ0_ipd , DQ0 ); + + buf (CASNeg_ipd, CASNeg); + buf (RASNeg_ipd, RASNeg); + buf (BA0_ipd , BA0 ); + buf (BA1_ipd , BA1 ); + buf (DQM0_ipd , DQM0 ); + buf (DQM1_ipd , DQM1 ); + buf (DQM2_ipd , DQM2 ); + buf (DQM3_ipd , DQM3 ); + buf (CLK_ipd , CLK ); + buf (CKE_ipd , CKE ); + buf (WENeg_ipd , WENeg ); + buf (CSNeg_ipd , CSNeg ); + + /////////////////////////////////////////////////////////////////////////// + // Propagation delay Section + /////////////////////////////////////////////////////////////////////////// + nmos (DQ31 , DQ31_zd , 1); + nmos (DQ30 , DQ30_zd , 1); + nmos (DQ29 , DQ29_zd , 1); + nmos (DQ28 , DQ28_zd , 1); + nmos (DQ27 , DQ27_zd , 1); + nmos (DQ26 , DQ26_zd , 1); + nmos (DQ25 , DQ25_zd , 1); + nmos (DQ24 , DQ24_zd , 1); + nmos (DQ23 , DQ23_zd , 1); + nmos (DQ22 , DQ22_zd , 1); + nmos (DQ21 , DQ21_zd , 1); + nmos (DQ20 , DQ20_zd , 1); + nmos (DQ19 , DQ19_zd , 1); + nmos (DQ18 , DQ18_zd , 1); + nmos (DQ17 , DQ17_zd , 1); + nmos (DQ16 , DQ16_zd , 1); + nmos (DQ15 , DQ15_zd , 1); + nmos (DQ14 , DQ14_zd , 1); + nmos (DQ13 , DQ13_zd , 1); + nmos (DQ12 , DQ12_zd , 1); + nmos (DQ11 , DQ11_zd , 1); + nmos (DQ10 , DQ10_zd , 1); + nmos (DQ9 , DQ9_zd , 1); + nmos (DQ8 , DQ8_zd , 1); + nmos (DQ7 , DQ7_zd , 1); + nmos (DQ6 , DQ6_zd , 1); + nmos (DQ5 , DQ5_zd , 1); + nmos (DQ4 , DQ4_zd , 1); + nmos (DQ3 , DQ3_zd , 1); + nmos (DQ2 , DQ2_zd , 1); + nmos (DQ1 , DQ1_zd , 1); + nmos (DQ0 , DQ0_zd , 1); + + wire deg; + wire chip_act; + assign chip_act = chip_en; + + wire chip_act_deg; + assign chip_act_deg = chip_act && deg; + + wire cas_latency1; + wire cas_latency2; + wire cas_latency3; + + assign cas_latency1 = CAS_Lat && ~CAS_Lat2; + assign cas_latency2 = ~CAS_Lat && CAS_Lat2; + assign cas_latency3 = CAS_Lat && CAS_Lat2; + + specify + // tipd delays: interconnect path delays, mapped to input port delays. + // In Verilog it is not necessary to declare any tipd delay variables, + // they can be taken from SDF file + // With all the other delays real delays would be taken from SDF file + + // tpd delays + specparam tpd_CLK_DQ1 = 1; + specparam tpd_CLK_DQ2 = 1; + specparam tpd_CLK_DQ3 = 1; + + // tpw values: pulse widths + specparam tpw_CLK_posedge = 1; + specparam tpw_CLK_negedge = 1; + + // tsetup values: setup times + specparam tsetup_DQ0_CLK = 1; // tDS + + // thold values: hold times + specparam thold_DQ0_CLK = 1; // tDH + + // tperiod_min: minimum clock period = 1/max freq + specparam tperiod_CLK_cl0_eq_1_posedge = 1; //tCK + specparam tperiod_CLK_cl1_eq_1_posedge = 1; + specparam tperiod_CLK_cl2_eq_1_posedge = 1; + + // tdevice values: values for internal delays + specparam tdevice_REF = 15625 ; + specparam tdevice_TRASmin = 42; + specparam tdevice_TRASmax = 120000; + + /////////////////////////////////////////////////////////////////////// + // Input Port Delays don't require Verilog description + /////////////////////////////////////////////////////////////////////// + // Path delays // + /////////////////////////////////////////////////////////////////////// + if (CAS_Lat && ~CAS_Lat2) (CLK *> DQ0) = tpd_CLK_DQ1; + if (CAS_Lat && ~CAS_Lat2) (CLK *> DQ1) = tpd_CLK_DQ1; + if (CAS_Lat && ~CAS_Lat2) (CLK *> DQ2) = tpd_CLK_DQ1; + if (CAS_Lat && ~CAS_Lat2) (CLK *> DQ3) = tpd_CLK_DQ1; + if (CAS_Lat && ~CAS_Lat2) (CLK *> DQ4) = tpd_CLK_DQ1; + if (CAS_Lat && ~CAS_Lat2) (CLK *> DQ5) = tpd_CLK_DQ1; + if (CAS_Lat && ~CAS_Lat2) (CLK *> DQ6) = tpd_CLK_DQ1; + if (CAS_Lat && ~CAS_Lat2) (CLK *> DQ7) = tpd_CLK_DQ1; + if (CAS_Lat && ~CAS_Lat2) (CLK *> DQ8) = tpd_CLK_DQ1; + if (CAS_Lat && ~CAS_Lat2) (CLK *> DQ9) = tpd_CLK_DQ1; + if (CAS_Lat && ~CAS_Lat2) (CLK *> DQ10) = tpd_CLK_DQ1; + if (CAS_Lat && ~CAS_Lat2) (CLK *> DQ11) = tpd_CLK_DQ1; + if (CAS_Lat && ~CAS_Lat2) (CLK *> DQ12) = tpd_CLK_DQ1; + if (CAS_Lat && ~CAS_Lat2) (CLK *> DQ13) = tpd_CLK_DQ1; + if (CAS_Lat && ~CAS_Lat2) (CLK *> DQ14) = tpd_CLK_DQ1; + if (CAS_Lat && ~CAS_Lat2) (CLK *> DQ15) = tpd_CLK_DQ1; + if (CAS_Lat && ~CAS_Lat2) (CLK *> DQ16) = tpd_CLK_DQ1; + if (CAS_Lat && ~CAS_Lat2) (CLK *> DQ17) = tpd_CLK_DQ1; + if (CAS_Lat && ~CAS_Lat2) (CLK *> DQ18) = tpd_CLK_DQ1; + if (CAS_Lat && ~CAS_Lat2) (CLK *> DQ19) = tpd_CLK_DQ1; + if (CAS_Lat && ~CAS_Lat2) (CLK *> DQ20) = tpd_CLK_DQ1; + if (CAS_Lat && ~CAS_Lat2) (CLK *> DQ21) = tpd_CLK_DQ1; + if (CAS_Lat && ~CAS_Lat2) (CLK *> DQ22) = tpd_CLK_DQ1; + if (CAS_Lat && ~CAS_Lat2) (CLK *> DQ23) = tpd_CLK_DQ1; + if (CAS_Lat && ~CAS_Lat2) (CLK *> DQ24) = tpd_CLK_DQ1; + if (CAS_Lat && ~CAS_Lat2) (CLK *> DQ25) = tpd_CLK_DQ1; + if (CAS_Lat && ~CAS_Lat2) (CLK *> DQ26) = tpd_CLK_DQ1; + if (CAS_Lat && ~CAS_Lat2) (CLK *> DQ27) = tpd_CLK_DQ1; + if (CAS_Lat && ~CAS_Lat2) (CLK *> DQ28) = tpd_CLK_DQ1; + if (CAS_Lat && ~CAS_Lat2) (CLK *> DQ29) = tpd_CLK_DQ1; + if (CAS_Lat && ~CAS_Lat2) (CLK *> DQ30) = tpd_CLK_DQ1; + if (CAS_Lat && ~CAS_Lat2) (CLK *> DQ31) = tpd_CLK_DQ1; + + if (~CAS_Lat && CAS_Lat2) (CLK *> DQ0) = tpd_CLK_DQ2; + if (~CAS_Lat && CAS_Lat2) (CLK *> DQ1) = tpd_CLK_DQ2; + if (~CAS_Lat && CAS_Lat2) (CLK *> DQ2) = tpd_CLK_DQ2; + if (~CAS_Lat && CAS_Lat2) (CLK *> DQ3) = tpd_CLK_DQ2; + if (~CAS_Lat && CAS_Lat2) (CLK *> DQ4) = tpd_CLK_DQ2; + if (~CAS_Lat && CAS_Lat2) (CLK *> DQ5) = tpd_CLK_DQ2; + if (~CAS_Lat && CAS_Lat2) (CLK *> DQ6) = tpd_CLK_DQ2; + if (~CAS_Lat && CAS_Lat2) (CLK *> DQ7) = tpd_CLK_DQ2; + if (~CAS_Lat && CAS_Lat2) (CLK *> DQ8) = tpd_CLK_DQ2; + if (~CAS_Lat && CAS_Lat2) (CLK *> DQ9) = tpd_CLK_DQ2; + if (~CAS_Lat && CAS_Lat2) (CLK *> DQ10) = tpd_CLK_DQ2; + if (~CAS_Lat && CAS_Lat2) (CLK *> DQ11) = tpd_CLK_DQ2; + if (~CAS_Lat && CAS_Lat2) (CLK *> DQ12) = tpd_CLK_DQ2; + if (~CAS_Lat && CAS_Lat2) (CLK *> DQ13) = tpd_CLK_DQ2; + if (~CAS_Lat && CAS_Lat2) (CLK *> DQ14) = tpd_CLK_DQ2; + if (~CAS_Lat && CAS_Lat2) (CLK *> DQ15) = tpd_CLK_DQ2; + if (~CAS_Lat && CAS_Lat2) (CLK *> DQ16) = tpd_CLK_DQ2; + if (~CAS_Lat && CAS_Lat2) (CLK *> DQ17) = tpd_CLK_DQ2; + if (~CAS_Lat && CAS_Lat2) (CLK *> DQ18) = tpd_CLK_DQ2; + if (~CAS_Lat && CAS_Lat2) (CLK *> DQ19) = tpd_CLK_DQ2; + if (~CAS_Lat && CAS_Lat2) (CLK *> DQ20) = tpd_CLK_DQ2; + if (~CAS_Lat && CAS_Lat2) (CLK *> DQ21) = tpd_CLK_DQ2; + if (~CAS_Lat && CAS_Lat2) (CLK *> DQ22) = tpd_CLK_DQ2; + if (~CAS_Lat && CAS_Lat2) (CLK *> DQ23) = tpd_CLK_DQ2; + if (~CAS_Lat && CAS_Lat2) (CLK *> DQ24) = tpd_CLK_DQ2; + if (~CAS_Lat && CAS_Lat2) (CLK *> DQ25) = tpd_CLK_DQ2; + if (~CAS_Lat && CAS_Lat2) (CLK *> DQ26) = tpd_CLK_DQ2; + if (~CAS_Lat && CAS_Lat2) (CLK *> DQ27) = tpd_CLK_DQ2; + if (~CAS_Lat && CAS_Lat2) (CLK *> DQ28) = tpd_CLK_DQ2; + if (~CAS_Lat && CAS_Lat2) (CLK *> DQ29) = tpd_CLK_DQ2; + if (~CAS_Lat && CAS_Lat2) (CLK *> DQ30) = tpd_CLK_DQ2; + if (~CAS_Lat && CAS_Lat2) (CLK *> DQ31) = tpd_CLK_DQ2; + + if (CAS_Lat && CAS_Lat2) (CLK *> DQ0) = tpd_CLK_DQ3; + if (CAS_Lat && CAS_Lat2) (CLK *> DQ1) = tpd_CLK_DQ3; + if (CAS_Lat && CAS_Lat2) (CLK *> DQ2) = tpd_CLK_DQ3; + if (CAS_Lat && CAS_Lat2) (CLK *> DQ3) = tpd_CLK_DQ3; + if (CAS_Lat && CAS_Lat2) (CLK *> DQ4) = tpd_CLK_DQ3; + if (CAS_Lat && CAS_Lat2) (CLK *> DQ5) = tpd_CLK_DQ3; + if (CAS_Lat && CAS_Lat2) (CLK *> DQ6) = tpd_CLK_DQ3; + if (CAS_Lat && CAS_Lat2) (CLK *> DQ7) = tpd_CLK_DQ3; + if (CAS_Lat && CAS_Lat2) (CLK *> DQ8) = tpd_CLK_DQ3; + if (CAS_Lat && CAS_Lat2) (CLK *> DQ9) = tpd_CLK_DQ3; + if (CAS_Lat && CAS_Lat2) (CLK *> DQ10) = tpd_CLK_DQ3; + if (CAS_Lat && CAS_Lat2) (CLK *> DQ11) = tpd_CLK_DQ3; + if (CAS_Lat && CAS_Lat2) (CLK *> DQ12) = tpd_CLK_DQ3; + if (CAS_Lat && CAS_Lat2) (CLK *> DQ13) = tpd_CLK_DQ3; + if (CAS_Lat && CAS_Lat2) (CLK *> DQ14) = tpd_CLK_DQ3; + if (CAS_Lat && CAS_Lat2) (CLK *> DQ15) = tpd_CLK_DQ3; + if (CAS_Lat && CAS_Lat2) (CLK *> DQ16) = tpd_CLK_DQ3; + if (CAS_Lat && CAS_Lat2) (CLK *> DQ17) = tpd_CLK_DQ3; + if (CAS_Lat && CAS_Lat2) (CLK *> DQ18) = tpd_CLK_DQ3; + if (CAS_Lat && CAS_Lat2) (CLK *> DQ19) = tpd_CLK_DQ3; + if (CAS_Lat && CAS_Lat2) (CLK *> DQ20) = tpd_CLK_DQ3; + if (CAS_Lat && CAS_Lat2) (CLK *> DQ21) = tpd_CLK_DQ3; + if (CAS_Lat && CAS_Lat2) (CLK *> DQ22) = tpd_CLK_DQ3; + if (CAS_Lat && CAS_Lat2) (CLK *> DQ23) = tpd_CLK_DQ3; + if (CAS_Lat && CAS_Lat2) (CLK *> DQ24) = tpd_CLK_DQ3; + if (CAS_Lat && CAS_Lat2) (CLK *> DQ25) = tpd_CLK_DQ3; + if (CAS_Lat && CAS_Lat2) (CLK *> DQ26) = tpd_CLK_DQ3; + if (CAS_Lat && CAS_Lat2) (CLK *> DQ27) = tpd_CLK_DQ3; + if (CAS_Lat && CAS_Lat2) (CLK *> DQ28) = tpd_CLK_DQ3; + if (CAS_Lat && CAS_Lat2) (CLK *> DQ29) = tpd_CLK_DQ3; + if (CAS_Lat && CAS_Lat2) (CLK *> DQ30) = tpd_CLK_DQ3; + if (CAS_Lat && CAS_Lat2) (CLK *> DQ31) = tpd_CLK_DQ3; + + //////////////////////////////////////////////////////////////////////// + // Timing Check Section + //////////////////////////////////////////////////////////////////////// + $setup (BA0 , posedge CLK &&& chip_act, tsetup_DQ0_CLK, Viol); + $setup (BA1 , posedge CLK &&& chip_act, tsetup_DQ0_CLK, Viol); + $setup (DQM0, posedge CLK &&& chip_act, tsetup_DQ0_CLK, Viol); + $setup (DQM1, posedge CLK &&& chip_act, tsetup_DQ0_CLK, Viol); + $setup (DQM2, posedge CLK &&& chip_act, tsetup_DQ0_CLK, Viol); + $setup (DQM3, posedge CLK &&& chip_act, tsetup_DQ0_CLK, Viol); + $setup (CKE , posedge CLK &&& chip_act, tsetup_DQ0_CLK, Viol); + $setup (WENeg, posedge CLK &&& chip_act, tsetup_DQ0_CLK, Viol); + $setup (CSNeg, posedge CLK &&& chip_act, tsetup_DQ0_CLK, Viol); + $setup (CASNeg, posedge CLK &&& chip_act, tsetup_DQ0_CLK, Viol); + $setup (RASNeg, posedge CLK &&& chip_act, tsetup_DQ0_CLK, Viol); + + $setup (DQ0 ,posedge CLK &&& chip_act_deg, tsetup_DQ0_CLK, Viol); + $setup (DQ1 ,posedge CLK &&& chip_act_deg, tsetup_DQ0_CLK, Viol); + $setup (DQ2 ,posedge CLK &&& chip_act_deg, tsetup_DQ0_CLK, Viol); + $setup (DQ3 ,posedge CLK &&& chip_act_deg, tsetup_DQ0_CLK, Viol); + $setup (DQ4 ,posedge CLK &&& chip_act_deg, tsetup_DQ0_CLK, Viol); + $setup (DQ5 ,posedge CLK &&& chip_act_deg, tsetup_DQ0_CLK, Viol); + $setup (DQ6 ,posedge CLK &&& chip_act_deg, tsetup_DQ0_CLK, Viol); + $setup (DQ7 ,posedge CLK &&& chip_act_deg, tsetup_DQ0_CLK, Viol); + $setup (DQ8 ,posedge CLK &&& chip_act_deg, tsetup_DQ0_CLK, Viol); + $setup (DQ9 ,posedge CLK &&& chip_act_deg, tsetup_DQ0_CLK, Viol); + $setup (DQ10 ,posedge CLK &&& chip_act_deg, tsetup_DQ0_CLK, Viol); + $setup (DQ11 ,posedge CLK &&& chip_act_deg, tsetup_DQ0_CLK, Viol); + $setup (DQ12 ,posedge CLK &&& chip_act_deg, tsetup_DQ0_CLK, Viol); + $setup (DQ13 ,posedge CLK &&& chip_act_deg, tsetup_DQ0_CLK, Viol); + $setup (DQ14 ,posedge CLK &&& chip_act_deg, tsetup_DQ0_CLK, Viol); + $setup (DQ15 ,posedge CLK &&& chip_act_deg, tsetup_DQ0_CLK, Viol); + $setup (DQ16 ,posedge CLK &&& chip_act_deg, tsetup_DQ0_CLK, Viol); + $setup (DQ17 ,posedge CLK &&& chip_act_deg, tsetup_DQ0_CLK, Viol); + $setup (DQ18 ,posedge CLK &&& chip_act_deg, tsetup_DQ0_CLK, Viol); + $setup (DQ19 ,posedge CLK &&& chip_act_deg, tsetup_DQ0_CLK, Viol); + $setup (DQ20 ,posedge CLK &&& chip_act_deg, tsetup_DQ0_CLK, Viol); + $setup (DQ21 ,posedge CLK &&& chip_act_deg, tsetup_DQ0_CLK, Viol); + $setup (DQ22 ,posedge CLK &&& chip_act_deg, tsetup_DQ0_CLK, Viol); + $setup (DQ23 ,posedge CLK &&& chip_act_deg, tsetup_DQ0_CLK, Viol); + $setup (DQ24 ,posedge CLK &&& chip_act_deg, tsetup_DQ0_CLK, Viol); + $setup (DQ25 ,posedge CLK &&& chip_act_deg, tsetup_DQ0_CLK, Viol); + $setup (DQ26 ,posedge CLK &&& chip_act_deg, tsetup_DQ0_CLK, Viol); + $setup (DQ27 ,posedge CLK &&& chip_act_deg, tsetup_DQ0_CLK, Viol); + $setup (DQ28 ,posedge CLK &&& chip_act_deg, tsetup_DQ0_CLK, Viol); + $setup (DQ29 ,posedge CLK &&& chip_act_deg, tsetup_DQ0_CLK, Viol); + $setup (DQ30 ,posedge CLK &&& chip_act_deg, tsetup_DQ0_CLK, Viol); + $setup (DQ31 ,posedge CLK &&& chip_act_deg, tsetup_DQ0_CLK, Viol); + + $setup (A0, posedge CLK &&& chip_act, tsetup_DQ0_CLK, Viol); + $setup (A1, posedge CLK &&& chip_act, tsetup_DQ0_CLK, Viol); + $setup (A2, posedge CLK &&& chip_act, tsetup_DQ0_CLK, Viol); + $setup (A3, posedge CLK &&& chip_act, tsetup_DQ0_CLK, Viol); + $setup (A4, posedge CLK &&& chip_act, tsetup_DQ0_CLK, Viol); + $setup (A5, posedge CLK &&& chip_act, tsetup_DQ0_CLK, Viol); + $setup (A6, posedge CLK &&& chip_act, tsetup_DQ0_CLK, Viol); + $setup (A7, posedge CLK &&& chip_act, tsetup_DQ0_CLK, Viol); + $setup (A8, posedge CLK &&& chip_act, tsetup_DQ0_CLK, Viol); + $setup (A9, posedge CLK &&& chip_act, tsetup_DQ0_CLK, Viol); + $setup (A10, posedge CLK &&& chip_act, tsetup_DQ0_CLK, Viol); + $setup (A11, posedge CLK &&& chip_act, tsetup_DQ0_CLK, Viol); + + $hold (posedge CLK &&& chip_act, BA0, thold_DQ0_CLK, Viol); + $hold (posedge CLK &&& chip_act, BA1, thold_DQ0_CLK, Viol); + $hold (posedge CLK &&& chip_act, DQM0, thold_DQ0_CLK, Viol); + $hold (posedge CLK &&& chip_act, DQM1, thold_DQ0_CLK, Viol); + $hold (posedge CLK &&& chip_act, DQM2, thold_DQ0_CLK, Viol); + $hold (posedge CLK &&& chip_act, DQM3, thold_DQ0_CLK, Viol); + $hold (posedge CLK &&& chip_act, CKE , thold_DQ0_CLK, Viol); + $hold (posedge CLK &&& chip_act, CASNeg, thold_DQ0_CLK, Viol); + $hold (posedge CLK &&& chip_act, RASNeg, thold_DQ0_CLK, Viol); + $hold (posedge CLK &&& chip_act, WENeg, thold_DQ0_CLK, Viol); + $hold (posedge CLK &&& chip_act, CSNeg, thold_DQ0_CLK, Viol); + + $hold (posedge CLK &&& chip_act, A0, thold_DQ0_CLK, Viol); + $hold (posedge CLK &&& chip_act, A1, thold_DQ0_CLK, Viol); + $hold (posedge CLK &&& chip_act, A2, thold_DQ0_CLK, Viol); + $hold (posedge CLK &&& chip_act, A3, thold_DQ0_CLK, Viol); + $hold (posedge CLK &&& chip_act, A4, thold_DQ0_CLK, Viol); + $hold (posedge CLK &&& chip_act, A5, thold_DQ0_CLK, Viol); + $hold (posedge CLK &&& chip_act, A6, thold_DQ0_CLK, Viol); + $hold (posedge CLK &&& chip_act, A7, thold_DQ0_CLK, Viol); + $hold (posedge CLK &&& chip_act, A8, thold_DQ0_CLK, Viol); + $hold (posedge CLK &&& chip_act, A9, thold_DQ0_CLK, Viol); + $hold (posedge CLK &&& chip_act, A10, thold_DQ0_CLK, Viol); + $hold (posedge CLK &&& chip_act, A11, thold_DQ0_CLK, Viol); + + $hold (posedge CLK &&& chip_act_deg, DQ0, thold_DQ0_CLK, Viol); + $hold (posedge CLK &&& chip_act_deg, DQ1, thold_DQ0_CLK, Viol); + $hold (posedge CLK &&& chip_act_deg, DQ2, thold_DQ0_CLK, Viol); + $hold (posedge CLK &&& chip_act_deg, DQ3, thold_DQ0_CLK, Viol); + $hold (posedge CLK &&& chip_act_deg, DQ4, thold_DQ0_CLK, Viol); + $hold (posedge CLK &&& chip_act_deg, DQ5, thold_DQ0_CLK, Viol); + $hold (posedge CLK &&& chip_act_deg, DQ6, thold_DQ0_CLK, Viol); + $hold (posedge CLK &&& chip_act_deg, DQ7, thold_DQ0_CLK, Viol); + $hold (posedge CLK &&& chip_act_deg, DQ8, thold_DQ0_CLK, Viol); + $hold (posedge CLK &&& chip_act_deg, DQ9, thold_DQ0_CLK, Viol); + $hold (posedge CLK &&& chip_act_deg, DQ10, thold_DQ0_CLK, Viol); + $hold (posedge CLK &&& chip_act_deg, DQ11, thold_DQ0_CLK, Viol); + $hold (posedge CLK &&& chip_act_deg, DQ12, thold_DQ0_CLK, Viol); + $hold (posedge CLK &&& chip_act_deg, DQ13, thold_DQ0_CLK, Viol); + $hold (posedge CLK &&& chip_act_deg, DQ14, thold_DQ0_CLK, Viol); + $hold (posedge CLK &&& chip_act_deg, DQ15, thold_DQ0_CLK, Viol); + $hold (posedge CLK &&& chip_act_deg, DQ16, thold_DQ0_CLK, Viol); + $hold (posedge CLK &&& chip_act_deg, DQ17, thold_DQ0_CLK, Viol); + $hold (posedge CLK &&& chip_act_deg, DQ18, thold_DQ0_CLK, Viol); + $hold (posedge CLK &&& chip_act_deg, DQ19, thold_DQ0_CLK, Viol); + $hold (posedge CLK &&& chip_act_deg, DQ20, thold_DQ0_CLK, Viol); + $hold (posedge CLK &&& chip_act_deg, DQ21, thold_DQ0_CLK, Viol); + $hold (posedge CLK &&& chip_act_deg, DQ22, thold_DQ0_CLK, Viol); + $hold (posedge CLK &&& chip_act_deg, DQ23, thold_DQ0_CLK, Viol); + $hold (posedge CLK &&& chip_act_deg, DQ24, thold_DQ0_CLK, Viol); + $hold (posedge CLK &&& chip_act_deg, DQ25, thold_DQ0_CLK, Viol); + $hold (posedge CLK &&& chip_act_deg, DQ26, thold_DQ0_CLK, Viol); + $hold (posedge CLK &&& chip_act_deg, DQ27, thold_DQ0_CLK, Viol); + $hold (posedge CLK &&& chip_act_deg, DQ28, thold_DQ0_CLK, Viol); + $hold (posedge CLK &&& chip_act_deg, DQ29, thold_DQ0_CLK, Viol); + $hold (posedge CLK &&& chip_act_deg, DQ30, thold_DQ0_CLK, Viol); + $hold (posedge CLK &&& chip_act_deg, DQ31, thold_DQ0_CLK, Viol); + + $width (posedge CLK &&& chip_act, tpw_CLK_posedge); + $width (negedge CLK &&& chip_act, tpw_CLK_negedge); + + $period (posedge CLK &&& cas_latency1, tperiod_CLK_cl0_eq_1_posedge); + $period (posedge CLK &&& cas_latency2, tperiod_CLK_cl1_eq_1_posedge); + $period (posedge CLK &&& cas_latency3, tperiod_CLK_cl2_eq_1_posedge); + + endspecify + + task generate_out ; + output [31:0] DataDrive; + input Bank; + integer Bank; + integer location; + begin + location = Bank * depth * 4 + Loc; + + DataDrive[7:0] = 8'bx; + if (Mem[location] > -1) + DataDrive[7:0] = Mem[location]; + + DataDrive[15:8] = 8'bx; + if (Mem[location+1] > -1) + DataDrive[15:8] = Mem[location+1]; + + DataDrive[23:16] = 8'bx; + if (Mem[location+2] > -1) + DataDrive[23:16] = Mem[location+2]; + + DataDrive[31:24] = 8'bx; + if (Mem[location+3] > -1) + DataDrive[31:24] = Mem[location+3]; + end + endtask + + task MemWrite; + input Bank; + integer Bank; + integer location; + begin + location = Bank * depth * 4 + Loc; + + if (~DQM0_ipd) + begin + Mem[location] = -1; + if (~Viol) + Mem[location] = DQIn[7:0]; + end + + if (~DQM1_ipd) + begin + Mem[location+1] = -1; + if (~Viol) + Mem[location+1] = DQIn[15:8]; + end + + if (~DQM2_ipd) + begin + Mem[location+2] = -1; + if (~Viol) + Mem[location+2] = DQIn[23:16]; + end + + if (~DQM3_ipd) + begin + Mem[location+3] = -1; + if (~Viol) + Mem[location+3] = DQIn[31:24]; + end + end + endtask + + task BurstIncProc; + input Bank; + integer Bank; + begin + BurstInc[Bank] = 0; + if (Burst_Bits == 1) + BurstInc[Bank] = A[0:0]; + if (Burst_Bits == 2) + BurstInc[Bank] = A[1:0]; + if (Burst_Bits == 3) + BurstInc[Bank] = A[2:0]; + if (Burst_Bits == 7) + BurstInc[Bank] = A[6:0]; + end + endtask + + task NextStateAuto; + input Bank; + input state; + integer Bank; + reg [4:0] state; + begin + if (~A[10]) + statebank[Bank] = state; + else if (A[10]) + if (state == write) + statebank[Bank] = write_auto_pre; + else + statebank[Bank] = read_auto_pre; + end + endtask + + ////////////////////////////////////////////////////////////////////////// + // Main Behavior Block // + ////////////////////////////////////////////////////////////////////////// + + // chech when data is generated from model to avoid setup/hold check in + // those occasion + reg deq; + always @(DQIn, DQOut) + begin + if (DQIn==DQOut) + deq=1'b1; + else + deq=1'b0; + end + assign deg=deq; + + // initialize burst sequences + initial + begin + intab[0] = 0; + intab[1] = 1; + intab[2] = 2; + intab[3] = 3; + intab[4] = 4; + intab[5] = 5; + intab[6] = 6; + intab[7] = 7; + intab[8] = 1; + intab[9] = 0; + intab[10] = 3; + intab[11] = 2; + intab[12] = 5; + intab[13] = 4; + intab[14] = 7; + intab[15] = 6; + intab[16] = 2; + intab[17] = 3; + intab[18] = 0; + intab[19] = 1; + intab[20] = 6; + intab[21] = 7; + intab[22] = 4; + intab[23] = 5; + intab[24] = 3; + intab[25] = 2; + intab[26] = 1; + intab[27] = 0; + intab[28] = 7; + intab[29] = 6; + intab[30] = 5; + intab[31] = 4; + intab[32] = 4; + intab[33] = 5; + intab[34] = 6; + intab[35] = 7; + intab[36] = 0; + intab[37] = 1; + intab[38] = 2; + intab[39] = 3; + intab[40] = 5; + intab[41] = 4; + intab[42] = 7; + intab[43] = 6; + intab[44] = 1; + intab[45] = 0; + intab[46] = 3; + intab[47] = 2; + intab[48] = 6; + intab[49] = 7; + intab[50] = 4; + intab[51] = 5; + intab[52] = 2; + intab[53] = 3; + intab[54] = 0; + intab[55] = 1; + intab[56] = 7; + intab[57] = 6; + intab[58] = 5; + intab[59] = 4; + intab[60] = 3; + intab[61] = 2; + intab[62] = 1; + intab[63] = 0; + end + + // initialize memory and load preload files if any + initial + begin: InitMemory + integer i; + for (i=0; i<=((hi_bank+1)*depth*4 - 1); i=i+1) + begin + Mem[i] = -1; + end + // Memory preload file + // mt48lc4m32b2.mem file + // @bbbbbb - stands for address within memory, + // dd -
is word to be written at Mem(bbbbbb++) + // (bbbbbb is incremented at every load) + if (UserPreload && !(mem_file_name == "none")) + $readmemh(mem_file_name,Mem); + end + + //Power Up time 100 us; + initial + begin + PoweredUp = 1'b0; + statebank[0] = pwron; + statebank[1] = pwron; + statebank[2] = pwron; + statebank[3] = pwron; + #100000 PoweredUp = 1'b1; + end + + always @(posedge wrt_in) + begin:TWRrise + #tdevice_TWR wrt_out = wrt_in; + end + + always @(negedge wrt_in) + begin:TWRfall + #1 wrt_out = wrt_in; + end + + always @(posedge ras_in[0]) + begin:TRASrise0 + ras_out[0] <= #tdevice_TRASmin ras_in[0]; + end + + always @(negedge ras_in[0]) + begin:TRASfall0 + ras_out[0] <= #tdevice_TRASmax ras_in[0]; + end + + always @(posedge ras_in[1]) + begin:TRASrise1 + ras_out[1] <= #tdevice_TRASmin ras_in[1]; + end + + always @(negedge ras_in[1]) + begin:TRASfall1 + ras_out[1] <= #tdevice_TRASmax ras_in[1]; + end + + always @(posedge ras_in[2]) + begin:TRASrise2 + ras_out[2] <= #tdevice_TRASmin ras_in[2]; + end + always @(negedge ras_in[2]) + begin:TRASfall2 + ras_out[2] <= #tdevice_TRASmax ras_in[2]; + end + + always @(posedge ras_in[3]) + begin:TRASrise3 + ras_out[3] <= #tdevice_TRASmin ras_in[3]; + end + + always @(negedge ras_in[3]) + begin:TRASfall3 + ras_out[3] <= #tdevice_TRASmax ras_in[3]; + end + + always @(posedge rcdt_in[0]) + begin:TRCDrise0 + rcdt_out[0] <= #5 1'b1; + end + always @(negedge rcdt_in[0]) + begin:TRCDfall0 + rcdt_out[0] <= #tdevice_TRCD 1'b0; + end + + always @(posedge rcdt_in[1]) + begin:TRCDrise1 + rcdt_out[1] <= #5 1'b1; + end + always @(negedge rcdt_in[1]) + begin:TRCDfall1 + rcdt_out[1] <= #tdevice_TRCD 1'b0; + end + + always @(posedge rcdt_in[2]) + begin:TRCDrise2 + rcdt_out[2] <= #5 1'b1; + end + always @(negedge rcdt_in[2]) + begin:TRCDfall2 + rcdt_out[2] <= #tdevice_TRCD 1'b0; + end + + always @(posedge rcdt_in[3]) + begin:TRCDrise3 + rcdt_out[3] <= #5 1'b1; + end + always @(negedge rcdt_in[3]) + begin:TRCDfall3 + rcdt_out[3] <= #tdevice_TRCD 1'b0; + end + + ///////////////////////////////////////////////////////////////////////// + // Functional Section + ///////////////////////////////////////////////////////////////////////// + always @(posedge CLK) + begin + if ($time > Next_Ref && PoweredUp && Ref_Cnt > 0) + begin + Ref_Cnt = Ref_Cnt - 1; + Next_Ref = $time + tdevice_REF; + end + if (CKEreg) + begin + if (~CSNeg_ipd) + chip_en = 1; + else + chip_en = 0; + end + + if (CKEreg && ~CSNeg_ipd) + begin + if (DQM0_ipd == 1'bx) + $display(" Unusable value for DQM0 "); + if (DQM1_ipd == 1'bx) + $display(" Unusable value for DQM1 "); + if (DQM2_ipd == 1'bx) + $display(" Unusable value for DQM2 "); + if (DQM3_ipd == 1'bx) + $display(" Unusable value for DQM3 "); + if (WENeg_ipd == 1'bx) + $display(" Unusable value for WENeg "); + if (RASNeg_ipd == 1'bx) + $display(" Unusable value for RASNeg "); + if (CASNeg_ipd == 1'bx) + $display(" Unusable value for CASNeg "); + + // Command Decode + if (RASNeg_ipd && CASNeg_ipd && WENeg_ipd) + command = nop; + else if (~RASNeg_ipd && CASNeg_ipd && WENeg_ipd) + command = act; + else if (RASNeg_ipd && ~CASNeg_ipd && WENeg_ipd) + command = rd; + else if (RASNeg_ipd && ~CASNeg_ipd && ~WENeg_ipd) + command = writ; + else if (RASNeg_ipd && CASNeg_ipd && ~WENeg_ipd) + command = bst; + else if (~RASNeg_ipd && CASNeg_ipd && ~WENeg_ipd) + command = pre; + else if (~RASNeg_ipd && ~CASNeg_ipd && WENeg_ipd) + command = ref; + else if (~RASNeg_ipd && ~CASNeg_ipd && ~WENeg_ipd) + command = mrs; + + // PowerUp Check + if (~(PoweredUp) && command != nop) + begin + $display (" Incorrect power up. Command issued before "); + $display (" power up complete. "); + end + + // Bank Decode + if (~BA0_ipd && ~BA1_ipd) + cur_bank = 0; + else if (BA0_ipd && ~BA1_ipd) + cur_bank = 1; + else if (~BA0_ipd && BA1_ipd) + cur_bank = 2; + else if (BA0_ipd && BA1_ipd) + cur_bank = 3; + else + begin + $display ("Could not decode bank selection - results"); + $display ("may be incorrect."); + end + end + + // The Big State Machine + if (CKEreg) + begin + if (CSNeg_ipd == 1'bx) + $display ("Unusable value for CSNeg"); + + if (CSNeg_ipd) + command = nop; + + // DQM pipeline + DQM0_reg2 = DQM0_reg1; + DQM0_reg1 = DQM0_reg0; + DQM0_reg0 = DQM0_ipd; + DQM1_reg2 = DQM1_reg1; + DQM1_reg1 = DQM1_reg0; + DQM1_reg0 = DQM1_ipd; + DQM2_reg2 = DQM2_reg1; + DQM2_reg1 = DQM2_reg0; + DQM2_reg0 = DQM2_ipd; + DQM3_reg2 = DQM3_reg1; + DQM3_reg1 = DQM3_reg0; + DQM3_reg0 = DQM3_ipd; + + // by default data drive is Z, might get over written in one + // of the passes below + DataDrive = 32'bz; + + for (bank = 0; bank <= hi_bank; bank = bank + 1) + begin + case (statebank[bank]) + pwron : + begin + if (~DQM0_ipd) + begin + $display ("DQM0 must be held high during"); + $display ("initialization."); + end + if (~DQM1_ipd) + begin + $display ("DQM1 must be held high during"); + $display ("initialization."); + end + if (~DQM2_ipd) + begin + $display ("DQM2 must be held high during"); + $display ("initialization."); + end + if (~DQM3_ipd) + begin + $display ("DQM3 must be held high during"); + $display ("initialization."); + end + + if (~PoweredUp) + begin + if (command != nop) + $display ("Only NOPs allowed during power up."); + DataDrive = 32'bz; + end + else if (command == pre && (cur_bank == bank || A[10])) + begin + statebank[bank] = precharge; + statebank[bank] <= #tdevice_TRP idle; + end + end + + precharge : + begin + if (cur_bank == bank) + // It is only an error if this bank is selected + if (command != nop && command != pre) + begin + $display ("Illegal command received "); + $display ("during precharge.",$time); + end + end + + idle : + begin + if (command == nop || command == bst || command == pre + || cur_bank != bank) + begin + end + else if (command == mrs) + begin + if (statebank[0] == idle && statebank[1] == idle && + statebank[2] == idle && statebank[3] == idle) + begin + ModeReg = A; + statebank[bank] = mode_set; + end + end + else if (command == ref) + begin + if (statebank[0] == idle && statebank[1] == idle && + statebank[2] == idle && statebank[3] == idle) + if (CKE) + begin + statebank[bank] = auto_refresh; + statebank[bank] <= #tdevice_TRCAR idle; + end + else + begin + statebank[0] = self_refresh; + statebank[1] = self_refresh; + statebank[2] = self_refresh; + statebank[3] = self_refresh; + end + end + else if (command == act) + begin + statebank[bank] = bank_act; + ras_in[bank] = 1'b1; + ras_in [bank] <= #70 1'b0; + rct_in = 1'b1; + rct_in <= #1 1'b0; + rcdt_in[bank] = 1'b1; + rcdt_in[bank] <= #1 1'b0; + MemAddr[bank][19:8] = A; // latch row addr + end + else + $display ("Illegal command received in idle state.",$time); + end + + mode_set : + begin + if (ModeReg[7] != 0 || ModeReg[8] != 0) + $display ("Illegal operating mode set."); + if (command != nop) + begin + $display ("Illegal command received during mode"); + $display ("set.",$time); + end + + // read burst length + if (ModeReg[2:0] == 3'b000) + begin + BurstLen = 1; + Burst_Bits = 0; + end + else if (ModeReg[2:0] == 3'b001) + begin + BurstLen = 2; + Burst_Bits = 1; + end + else if (ModeReg[2:0] == 3'b010) + begin + BurstLen = 4; + Burst_Bits = 2; + end + else if (ModeReg[2:0] == 3'b011) + begin + BurstLen = 8; + Burst_Bits = 3; + end + else if (ModeReg[2:0] == 3'b111) + begin + BurstLen = 256; + Burst_Bits = 7; + end + else + $display ("Invalid burst length specified."); + + // read burst type + if (~ModeReg[3]) + Burst = sequential; + else if (ModeReg[3]) + Burst = interleave; + else + $display ("Invalid burst type specified."); + + // read CAS latency + if (ModeReg[6:4] == 3'b001) + begin + CAS_Lat = 1'b1; + CAS_Lat2 = 1'b0; + end + else if (ModeReg[6:4] == 3'b010) + begin + CAS_Lat = 1'b0; + CAS_Lat2 = 1'b1; + end + else if (ModeReg[6:4] == 3'b011) + begin + CAS_Lat = 1'b1; + CAS_Lat2 = 1'b1; + end + else + $display ("CAS Latency set incorrecty"); + + // write burst mode + if (~ModeReg[9]) + WB = programmed; + else if (ModeReg[9]) + WB = single; + else + $display ("Invalid burst type specified."); + + statebank[bank] = idle; + end + + auto_refresh : + begin + if (Ref_Cnt < 4096) + Ref_Cnt = Ref_Cnt + 1; + if (command != nop) + begin + $display ("Illegal command received during"); + $display ("auto_refresh.",$time); + end + end + + bank_act : + begin + if (command == pre && (cur_bank == bank || A[10])) + begin + if (~ras_out[bank]) + begin + $display ("precharge command does not meet tRAS"); + $display ("time", $time); + end + statebank[bank] = precharge; + statebank[bank] <= #tdevice_TRP idle; + end + else if (command == nop || command == bst + || cur_bank != bank) + begin + end + else if (command == rd) + begin + if (rcdt_out[bank]) + begin + $display ("read command received too soon"); + $display ("after active",$time); + end + if (A[10] == 1'bx) + begin + $display ("A(10) = X during read command."); + $display ("Next state unknown."); + end + MemAddr[bank][7:0] = 8'b0;// clr old addr + // latch col addr + if (Burst_Bits == 0) + MemAddr[bank][7:0] = A[7:0]; + if (Burst_Bits == 1) + MemAddr[bank][7:1] = A[7:1]; + if (Burst_Bits == 2) + MemAddr[bank][7:2] = A[7:2]; + if (Burst_Bits == 3) + MemAddr[bank][7:3] = A[7:3]; + if (Burst_Bits == 7) + MemAddr[bank][7:7] = A[7:7]; + BurstIncProc(bank); + StartAddr[bank] = BurstInc[bank] % 8; + BaseLoc[bank] = MemAddr[bank]; + Loc = 4*(BaseLoc[bank] + BurstInc[bank]); + generate_out(DataDrive,bank); + BurstCnt[bank] = 1; + NextStateAuto(bank, read); + bank_tmp = bank; + end + else if (command == writ) + begin + if (rcdt_out[bank]) + begin + $display ("write command received too soon"); + $display ("after active",$time); + end + if (A[10] == 1'bx) + begin + $display ("A(10) = X during write command."); + $display ("Next state unknown."); + end + MemAddr[bank][7:0] = 8'b0; // clr old addr + BurstIncProc(bank); + // latch col addr + if (Burst_Bits == 0) + MemAddr[bank][7:0] = A[7:0]; + if (Burst_Bits == 1) + MemAddr[bank][7:1] = A[7:1]; + if (Burst_Bits == 2) + MemAddr[bank][7:2] = A[7:2]; + if (Burst_Bits == 3) + MemAddr[bank][7:3] = A[7:3]; + if (Burst_Bits == 7) + MemAddr[bank][7:7] = A[7:7]; + StartAddr[bank] = BurstInc[bank] % 8; + BaseLoc[bank] = MemAddr[bank]; + Loc = 4*(BaseLoc[bank] + BurstInc[bank]); + MemWrite(bank); + BurstCnt[bank] = 1'b1; + wrt_in = 1'b1; + NextStateAuto(bank, write); + written = 1'b1; + end + else if (cur_bank == bank || command == mrs) + begin + $display ("Illegal command received in"); + $display ("active state",$time); + end + end + + write : + begin + if (command == bst) + begin + statebank[bank] = bank_act; + BurstCnt[bank] = 1'b0; + end + else if (command == rd) + if (cur_bank == bank) + begin + MemAddr[bank][7:0] = 8'b0;// clr old addr + BurstIncProc(bank); + // latch col addr + if (Burst_Bits == 0) + MemAddr[bank][7:0] = A[7:0]; + if (Burst_Bits == 1) + MemAddr[bank][7:1] = A[7:1]; + if (Burst_Bits == 2) + MemAddr[bank][7:2] = A[7:2]; + if (Burst_Bits == 3) + MemAddr[bank][7:3] = A[7:3]; + if (Burst_Bits == 7) + MemAddr[bank][7:7] = A[7:7]; + StartAddr[bank] = BurstInc[bank] % 8; + BaseLoc[bank] = MemAddr[bank]; + Loc = 4*(BaseLoc[bank] + BurstInc[bank]); + generate_out(DataDrive, bank); + BurstCnt[bank] = 1'b1; + NextStateAuto(bank, read); + end + else + statebank[bank] = bank_act; + else if (command == writ) + if (cur_bank == bank) + begin + MemAddr[bank][7:0] = 8'b0;// clr old addr + BurstIncProc(bank); + // latch col addr + if (Burst_Bits == 0) + MemAddr[bank][7:0] = A[7:0]; + if (Burst_Bits == 1) + MemAddr[bank][7:1] = A[7:1]; + if (Burst_Bits == 2) + MemAddr[bank][7:2] = A[7:2]; + if (Burst_Bits == 3) + MemAddr[bank][7:3] = A[7:3]; + if (Burst_Bits == 7) + MemAddr[bank][7:7] = A[7:7]; + StartAddr[bank] = BurstInc[bank] % 8; + BaseLoc[bank] = MemAddr[bank]; + Loc = 4*(BaseLoc[bank] + BurstInc[bank]); + MemWrite(bank); + BurstCnt[bank] = 1'b1; + wrt_in = 1'b1; + if (A[10]) + statebank[bank] = write_auto_pre; + end + else + statebank[bank] = bank_act; + else if (command == pre && (cur_bank == bank || A[10])) + begin + if (~ras_out[bank]) + begin + $display ("precharge command does not meet tRAS time",$time); + end + if (~DQM0_ipd) + begin + $display ("DQM0 should be held high, data is"); + $display ("lost.",$time); + end + if (~DQM1_ipd) + begin + $display ("DQM1 should be held high, data is"); + $display ("lost.",$time); + end + if (~DQM2_ipd) + begin + $display ("DQM2 should be held high, data is"); + $display ("lost.",$time); + end + if (~DQM2_ipd) + begin + $display ("DQM2 should be held high, data is"); + $display ("lost.",$time); + end + wrt_in = 1'b0; + statebank[bank] = precharge; + statebank[bank] <= #tdevice_TRP idle; + end + else if (command == nop || cur_bank != bank) + if (BurstCnt[bank] == BurstLen || WB == single) + begin + statebank[bank] = bank_act; + BurstCnt[bank] = 1'b0; + ras_in[bank] = 1'b1; + end + else + begin + if (Burst == sequential) + BurstInc[bank] = (BurstInc[bank]+1) % BurstLen; + else + BurstInc[bank] = + intab[StartAddr[bank]*8 + BurstCnt[bank]]; + Loc = 4*(BaseLoc[bank] + BurstInc[bank]); + MemWrite(bank); + BurstCnt[bank] = BurstCnt[bank] + 1; + wrt_in = 1'b1; + end + else if (cur_bank == bank) + $display ("Illegal command received in write state",$time); + end + + read : + begin + if (command == bst) + begin + statebank[bank] = bank_act; + BurstCnt[bank] = 1'b0; + end + else if (command == rd) + if (cur_bank == bank) + begin + MemAddr[bank][7:0] = 8'b0;// clr old addr + BurstIncProc(bank); + // latch col addr + if (Burst_Bits == 0) + MemAddr[bank][7:0] = A[7:0]; + if (Burst_Bits == 1) + MemAddr[bank][7:1] = A[7:1]; + if (Burst_Bits == 2) + MemAddr[bank][7:2] = A[7:2]; + if (Burst_Bits == 3) + MemAddr[bank][7:3] = A[7:3]; + if (Burst_Bits == 7) + MemAddr[bank][7:7] = A[7:7]; + StartAddr[bank] = BurstInc[bank] % 8; + BaseLoc[bank] = MemAddr[bank]; + Loc = 4*(BaseLoc[bank] + BurstInc[bank]); + generate_out(DataDrive, bank); + BurstCnt[bank] = 1'b1; + NextStateAuto(bank, read); + end + else + statebank[bank] = bank_act; + else if (command == writ) + if (cur_bank == bank) + begin + if (rcdt_out[bank]) + begin + $display ("write command received too soon after active",$time); + end + if (A[10] == 1'bx) + begin + $display ("A(10) = X during write command."); + $display ("Next state unknown."); + end + + MemAddr[bank][7:0] = 8'b0;// clr old addr + BurstIncProc(bank); + // latch col addr + if (Burst_Bits == 0) + MemAddr[bank][7:0] = A[7:0]; + if (Burst_Bits == 1) + MemAddr[bank][7:1] = A[7:1]; + if (Burst_Bits == 2) + MemAddr[bank][7:2] = A[7:2]; + if (Burst_Bits == 3) + MemAddr[bank][7:3] = A[7:3]; + if (Burst_Bits == 7) + MemAddr[bank][7:7] = A[7:7]; + StartAddr[bank] = BurstInc[bank] % 8; + BaseLoc[bank] = MemAddr[bank]; + Loc = 4*(BaseLoc[bank] + BurstInc[bank]); + MemWrite(bank); + BurstCnt[bank] = 1'b1; + wrt_in = 1'b1; + NextStateAuto(bank,write); + end + else + statebank[bank] = bank_act; + + else if (command == pre && (cur_bank == bank || A[10])) + begin + if (~ras_out[bank]) + begin + $display ("Precharge command does not meet tRAS time",$time); + end + statebank[bank] = precharge; + statebank[bank] <= #tdevice_TRP idle; + end + + else if (command == nop || cur_bank != bank) + begin + if (BurstCnt[bank] == BurstLen) + begin + statebank[bank] = bank_act; + BurstCnt[bank] = 1'b0; + ras_in[bank] = 1'b1; + end + else + begin + if (Burst == sequential) + BurstInc[bank] = (BurstInc[bank]+1) % BurstLen; + else + BurstInc[bank] = + intab[StartAddr[bank]*8 + BurstCnt[bank]]; + + Loc = 4*(BaseLoc[bank] + BurstInc[bank]); + generate_out(DataDrive, bank); + BurstCnt[bank] = BurstCnt[bank] + 1; + end + end + else if (cur_bank == bank) + $display ("Illegal command received in read state",$time); + end + + write_auto_pre : + begin + if (command == nop || cur_bank != bank) + if (BurstCnt[bank] == BurstLen || WB == single) + begin + statebank[bank] = precharge; + statebank[bank] <= #tdevice_TRP idle; + BurstCnt[bank] = 1'b0; + ras_in[bank] = 1'b1; + end + else + begin + if (Burst == sequential) + BurstInc[bank] = (BurstInc[bank]+1) % BurstLen; + else + BurstInc[bank] = + intab[StartAddr[bank]*8 + BurstCnt[bank]]; + Loc = 4*(BaseLoc[bank] + BurstInc[bank]); + MemWrite(bank); + BurstCnt[bank] = BurstCnt[bank] + 1; + wrt_in = 1'b1; + end + else + $display ("Illegal command received in write state.",$time); + end + + read_auto_pre : + begin + if (command == nop || (cur_bank != bank && command != rd + && command != writ)) + if (BurstCnt[bank] == BurstLen) + begin + statebank[bank] = precharge; + statebank[bank] <= #tdevice_TRP idle; + BurstCnt[bank] = 1'b0; + ras_in[bank] = 1'b1; + end + else + begin + if (Burst == sequential) + BurstInc[bank] = (BurstInc[bank]+1) % BurstLen; + else + BurstInc[bank] = + intab[StartAddr[bank]*8 + BurstCnt[bank]]; + Loc = 4*(BaseLoc[bank] + BurstInc[bank]); + generate_out(DataDrive, bank); + BurstCnt[bank] = BurstCnt[bank] + 1; + end + else if ((command == rd || command == writ) && cur_bank + != bank) + begin + statebank[bank] = precharge; + statebank[bank] <= #tdevice_TRP idle; + end + else + $display ("Illegal command received in read state",$time); + end + endcase + end + + // Check Refresh Status + if (written && (Ref_Cnt == 0)) + $display ("memory not refreshed (by ref_cnt)", $time); + + DataDrive3 = DataDrive2; + DataDrive2 = DataDrive1; + DataDrive1 = DataDrive; + + end + + // Latency adjustments and DQM read masking + if (~DQM0_reg1) + if (CAS_Lat && CAS_Lat2) + DataDriveOut[7:0] = DataDrive3[7:0]; + else if (~CAS_Lat && CAS_Lat2) + DataDriveOut[7:0] = DataDrive2[7:0]; + else + DataDriveOut[7:0] = DataDrive1[7:0]; + else + DataDriveOut[7:0] = 8'bz; + + if (~DQM1_reg1) + if (CAS_Lat && CAS_Lat2) + DataDriveOut[15:8] = DataDrive3[15:8]; + else if (~CAS_Lat && CAS_Lat2) + DataDriveOut[15:8] = DataDrive2[15:8]; + else + DataDriveOut[15:8] = DataDrive1[15:8]; + else + DataDriveOut[15:8] = 8'bz; + + if (~DQM2_reg1) + if (CAS_Lat && CAS_Lat2) + DataDriveOut[23:16] = DataDrive3[23:16]; + else if (~CAS_Lat && CAS_Lat2) + DataDriveOut[23:16] = DataDrive2[23:16]; + else + DataDriveOut[23:16] = DataDrive1[23:16]; + else + DataDriveOut[23:16] = 8'bz; + + if (~DQM3_reg1) + if (CAS_Lat && CAS_Lat2) + DataDriveOut[31:24] = DataDrive3[31:24]; + else if (~CAS_Lat && CAS_Lat2) + DataDriveOut[31:24] = DataDrive2[31:24]; + else + DataDriveOut[31:24] = DataDrive1[31:24]; + else + DataDriveOut[31:24] = 8'bz; + + // The Powering-up State Machine + if (~CKEreg && CKE_ipd) + begin + if (CSNeg_ipd == 1'bx) + $display ("Unusable value for CSNeg"); + if (CSNeg_ipd) + command = nop; + + case (statebank[cur_bank]) + write_suspend : + begin + statebank[cur_bank] = write; + end + + read_suspend : + begin + statebank[cur_bank] = read; + end + + self_refresh : + begin + statebank[0] <= #tdevice_TRP idle; + statebank[1] <= #tdevice_TRP idle; + statebank[2] <= #tdevice_TRP idle; + statebank[3] <= #tdevice_TRP idle; + Ref_Cnt = 4096; + if (command != nop) + begin + $display ("Illegal command received during self"); + $display ("refresh",$time); + end + end + + pwrdwn : + begin + statebank[0] = idle; + statebank[1] = idle; + statebank[2] = idle; + statebank[3] = idle; + end + + bank_act_pwrdwn : + begin + statebank[cur_bank] = bank_act; + end + endcase + end + + // The Powering-down State Machine + if (CKEreg && ~CKE_ipd) + begin + if (CSNeg_ipd == 1'bx) + $display ("Unusable value for CSNeg"); + if (CSNeg_ipd) + command = nop; + + case (statebank[cur_bank]) + idle : + begin + if (command == nop) + begin + statebank[0] = pwrdwn; + statebank[1] = pwrdwn; + statebank[2] = pwrdwn; + statebank[3] = pwrdwn; + end + end + + write : + begin + statebank[cur_bank] = write_suspend; + end + + read : + begin + statebank[cur_bank] = read_suspend; + end + + bank_act : + begin + statebank[cur_bank] = bank_act_pwrdwn; + end + endcase + end + + CKEreg = CKE_ipd; + end + + always @(DataDriveOut) + begin + DQ_zd = DataDriveOut; + end + + reg TRC_In , TRCAR_In; + reg TRCD_In , TRP_In , TWR_In; + wire TRC_Out, TRCAR_Out, TRCD_Out, TRP_Out, TWR_Out; + + BUFFER BUF_TRC (TRC_Out , TRC_In); + BUFFER BUF_TRCAR (TRCAR_Out, TRCAR_In); + BUFFER BUF_TRCD (TRCD_Out , TRCD_In); + BUFFER BUF_TRP (TRP_Out , TRP_In); + BUFFER BUF_TWR (TWR_Out , TWR_In); + + initial + begin + TRC_In = 1; + TRCAR_In = 1; + TRCD_In = 1'b1; + TRP_In = 1; + TWR_In = 1; + end + + always @(posedge TRC_Out) + begin + tdevice_TRC = $time; + end + + always @(posedge TRCAR_Out) + begin + tdevice_TRCAR = $time; + end + + always @(posedge TRCD_Out) + begin + tdevice_TRCD = $time; + end + + always @(posedge TRP_Out) + begin + tdevice_TRP = $time; + end + + always @(posedge TWR_Out) + begin + tdevice_TWR = $time; + end + +endmodule + +module BUFFER (OUT,IN); + input IN; + output OUT; + buf (OUT, IN); +endmodule diff --git a/lib/common/Driver/SDRAM_driver/model/mt48lc8m16a2.v b/lib/common/Driver/SDRAM_driver/model/mt48lc8m16a2.v new file mode 100644 index 0000000..5a9df99 --- /dev/null +++ b/lib/common/Driver/SDRAM_driver/model/mt48lc8m16a2.v @@ -0,0 +1,963 @@ +/**************************************************************************************** +* +* File Name: MT48LC8M16A2.V +* Version: 0.0f +* Date: July 8th, 1999 +* Model: BUS Functional +* Simulator: Model Technology (PC version 5.2e PE) +* +* Dependencies: None +* +* Author: Son P. Huynh +* Email: sphuynh@micron.com +* Phone: (208) 368-3825 +* Company: Micron Technology, Inc. +* Model: MT48LC8M16A2 (2Meg x 16 x 4 Banks) +* +* Description: Micron 128Mb SDRAM Verilog model +* +* Limitation: - Doesn't check for 4096 cycle refresh +* +* Note: - Set simulator resolution to "ps" accuracy +* - Set Debug = 0 to disable $display messages +* +* Disclaimer: THESE DESIGNS ARE PROVIDED "AS IS" WITH NO WARRANTY +* WHATSOEVER AND MICRON SPECIFICALLY DISCLAIMS ANY +* IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR +* A PARTICULAR PURPOSE, OR AGAINST INFRINGEMENT. +* +* Copyright 1998 Micron Semiconductor Products, Inc. +* All rights researved +* +* Rev Author Phone Date Changes +* ---- ---------------------------- ---------- --------------------------------------- +* 0.0f Son Huynh 208-368-3825 07/08/1999 - Fix tWR = 1 Clk + 7.5 ns (Auto) +* Micron Technology Inc. - Fix tWR = 15 ns (Manual) +* - Fix tRP (Autoprecharge to AutoRefresh) +* +* 0.0a Son Huynh 208-368-3825 05/13/1998 - First Release (from 64Mb rev 0.0e) +* Micron Technology Inc. +****************************************************************************************/ + +`timescale 1ns / 100ps + +module mt48lc8m16a2 (Dq, Addr, Ba, Clk, Cke, Cs_n, Ras_n, Cas_n, We_n, Dqm); + + parameter addr_bits = 12; + parameter data_bits = 16; + parameter col_bits = 9; + parameter mem_sizes = 2097151; // 2 Meg + + inout [data_bits - 1 : 0] Dq; + input [addr_bits - 1 : 0] Addr; + input [1 : 0] Ba; + input Clk; + input Cke; + input Cs_n; + input Ras_n; + input Cas_n; + input We_n; + input [1 : 0] Dqm; + + reg [data_bits - 1 : 0] Bank0 [0 : mem_sizes]; + reg [data_bits - 1 : 0] Bank1 [0 : mem_sizes]; + reg [data_bits - 1 : 0] Bank2 [0 : mem_sizes]; + reg [data_bits - 1 : 0] Bank3 [0 : mem_sizes]; + + reg [1 : 0] Bank_addr [0 : 3]; // Bank Address Pipeline + reg [col_bits - 1 : 0] Col_addr [0 : 3]; // Column Address Pipeline + reg [3 : 0] Command [0 : 3]; // Command Operation Pipeline + reg [1 : 0] Dqm_reg0, Dqm_reg1; // DQM Operation Pipeline + reg [addr_bits - 1 : 0] B0_row_addr, B1_row_addr, B2_row_addr, B3_row_addr; + + reg [addr_bits - 1 : 0] Mode_reg; + reg [data_bits - 1 : 0] Dq_reg, Dq_dqm; + reg [col_bits - 1 : 0] Col_temp, Burst_counter; + + reg Act_b0, Act_b1, Act_b2, Act_b3; // Bank Activate + reg Pc_b0, Pc_b1, Pc_b2, Pc_b3; // Bank Precharge + + reg [1 : 0] Bank_precharge [0 : 3]; // Precharge Command + reg A10_precharge [0 : 3]; // Addr[10] = 1 (All banks) + reg Auto_precharge [0 : 3]; // RW AutoPrecharge (Bank) + reg Read_precharge [0 : 3]; // R AutoPrecharge + reg Write_precharge [0 : 3]; // W AutoPrecharge + integer Count_precharge [0 : 3]; // RW AutoPrecharge (Counter) + reg RW_interrupt_read [0 : 3]; // RW Interrupt Read with Auto Precharge + reg RW_interrupt_write [0 : 3]; // RW Interrupt Write with Auto Precharge + + reg Data_in_enable; + reg Data_out_enable; + + reg [1 : 0] Bank, Previous_bank; + reg [addr_bits - 1 : 0] Row; + reg [col_bits - 1 : 0] Col, Col_brst; + + // Internal system clock + reg CkeZ, Sys_clk; + + // Commands Decode + wire Active_enable = ~Cs_n & ~Ras_n & Cas_n & We_n; + wire Aref_enable = ~Cs_n & ~Ras_n & ~Cas_n & We_n; + wire Burst_term = ~Cs_n & Ras_n & Cas_n & ~We_n; + wire Mode_reg_enable = ~Cs_n & ~Ras_n & ~Cas_n & ~We_n; + wire Prech_enable = ~Cs_n & ~Ras_n & Cas_n & ~We_n; + wire Read_enable = ~Cs_n & Ras_n & ~Cas_n & We_n; + wire Write_enable = ~Cs_n & Ras_n & ~Cas_n & ~We_n; + + // Burst Length Decode + wire Burst_length_1 = ~Mode_reg[2] & ~Mode_reg[1] & ~Mode_reg[0]; + wire Burst_length_2 = ~Mode_reg[2] & ~Mode_reg[1] & Mode_reg[0]; + wire Burst_length_4 = ~Mode_reg[2] & Mode_reg[1] & ~Mode_reg[0]; + wire Burst_length_8 = ~Mode_reg[2] & Mode_reg[1] & Mode_reg[0]; + + // CAS Latency Decode + wire Cas_latency_2 = ~Mode_reg[6] & Mode_reg[5] & ~Mode_reg[4]; + wire Cas_latency_3 = ~Mode_reg[6] & Mode_reg[5] & Mode_reg[4]; + + // Write Burst Mode + wire Write_burst_mode = Mode_reg[9]; + + reg Debug; // Debug messages : 1 = On + wire Dq_chk = Sys_clk & Data_in_enable; // Check setup/hold time for DQ + + assign Dq = Dq_reg; // DQ buffer + + // Commands Operation + `define ACT 0 + `define NOP 1 + `define READ 2 + `define READ_A 3 + `define WRITE 4 + `define WRITE_A 5 + `define PRECH 6 + `define A_REF 7 + `define BST 8 + `define LMR 9 + + // Timing Parameters for -75 (PC133) and CAS Latency = 2 + parameter tAC = 6.0; + parameter tHZ = 7.0; + parameter tOH = 2.7; + parameter tMRD = 2.0; // 2 Clk Cycles + parameter tRAS = 44.0; + parameter tRC = 66.0; + parameter tRCD = 20.0; + parameter tRP = 20.0; + parameter tRRD = 15.0; + parameter tWRa = 7.5; // A2 Version - Auto precharge mode only (1 Clk + 7.5 ns) + parameter tWRp = 15.0; // A2 Version - Precharge mode only (15 ns) + + // Timing Check variable + integer MRD_chk; + integer WR_counter [0 : 3]; + time WR_chk [0 : 3]; + time RC_chk, RRD_chk; + time RAS_chk0, RAS_chk1, RAS_chk2, RAS_chk3; + time RCD_chk0, RCD_chk1, RCD_chk2, RCD_chk3; + time RP_chk0, RP_chk1, RP_chk2, RP_chk3; + + initial begin + Debug = 1'b0; + + Dq_reg = {data_bits{1'bz}}; + {Data_in_enable, Data_out_enable} = 0; + {Act_b0, Act_b1, Act_b2, Act_b3} = 4'b0000; + {Pc_b0, Pc_b1, Pc_b2, Pc_b3} = 4'b0000; + {WR_chk[0], WR_chk[1], WR_chk[2], WR_chk[3]} = 0; + {WR_counter[0], WR_counter[1], WR_counter[2], WR_counter[3]} = 0; + {RW_interrupt_read[0], RW_interrupt_read[1], RW_interrupt_read[2], RW_interrupt_read[3]} = 0; + {RW_interrupt_write[0], RW_interrupt_write[1], RW_interrupt_write[2], RW_interrupt_write[3]} = 0; + {MRD_chk, RC_chk, RRD_chk} = 0; + {RAS_chk0, RAS_chk1, RAS_chk2, RAS_chk3} = 0; + {RCD_chk0, RCD_chk1, RCD_chk2, RCD_chk3} = 0; + {RP_chk0, RP_chk1, RP_chk2, RP_chk3} = 0; + $timeformat (-9, 0, " ns", 12); + //$readmemh("bank0.txt", Bank0); + //$readmemh("bank1.txt", Bank1); + //$readmemh("bank2.txt", Bank2); + //$readmemh("bank3.txt", Bank3); + end + + // System clock generator + always begin + @ (posedge Clk) begin + Sys_clk = CkeZ; + CkeZ = Cke; + end + @ (negedge Clk) begin + Sys_clk = 1'b0; + end + end + + always @ (posedge Sys_clk) begin + // Internal Commamd Pipelined + Command[0] = Command[1]; + Command[1] = Command[2]; + Command[2] = Command[3]; + Command[3] = `NOP; + + Col_addr[0] = Col_addr[1]; + Col_addr[1] = Col_addr[2]; + Col_addr[2] = Col_addr[3]; + Col_addr[3] = {col_bits{1'b0}}; + + Bank_addr[0] = Bank_addr[1]; + Bank_addr[1] = Bank_addr[2]; + Bank_addr[2] = Bank_addr[3]; + Bank_addr[3] = 2'b0; + + Bank_precharge[0] = Bank_precharge[1]; + Bank_precharge[1] = Bank_precharge[2]; + Bank_precharge[2] = Bank_precharge[3]; + Bank_precharge[3] = 2'b0; + + A10_precharge[0] = A10_precharge[1]; + A10_precharge[1] = A10_precharge[2]; + A10_precharge[2] = A10_precharge[3]; + A10_precharge[3] = 1'b0; + + // Dqm pipeline for Read + Dqm_reg0 = Dqm_reg1; + Dqm_reg1 = Dqm; + + // Read or Write with Auto Precharge Counter + if (Auto_precharge[0] == 1'b1) begin + Count_precharge[0] = Count_precharge[0] + 1; + end + if (Auto_precharge[1] == 1'b1) begin + Count_precharge[1] = Count_precharge[1] + 1; + end + if (Auto_precharge[2] == 1'b1) begin + Count_precharge[2] = Count_precharge[2] + 1; + end + if (Auto_precharge[3] == 1'b1) begin + Count_precharge[3] = Count_precharge[3] + 1; + end + + // tMRD Counter + MRD_chk = MRD_chk + 1; + + // tWR Counter for Write + WR_counter[0] = WR_counter[0] + 1; + WR_counter[1] = WR_counter[1] + 1; + WR_counter[2] = WR_counter[2] + 1; + WR_counter[3] = WR_counter[3] + 1; + + // Auto Refresh + if (Aref_enable == 1'b1) begin + if (Debug) $display ("at time %t AREF : Auto Refresh", $time); + // Auto Refresh to Auto Refresh + if ($time - RC_chk < tRC) begin + //->tb.test_control.error_detected; + $display ("at time %t ERROR: tRC violation during Auto Refresh", $time); + end + // Precharge to Auto Refresh + if ($time - RP_chk0 < tRP || $time - RP_chk1 < tRP || $time - RP_chk2 < tRP || $time - RP_chk3 < tRP) begin + //->tb.test_control.error_detected; + $display ("at time %t ERROR: tRP violation during Auto Refresh", $time); + end + // Precharge to Refresh + if (Pc_b0 == 1'b0 || Pc_b1 == 1'b0 || Pc_b2 == 1'b0 || Pc_b3 == 1'b0) begin + //->tb.test_control.error_detected; + $display ("at time %t ERROR: All banks must be Precharge before Auto Refresh", $time); + end + // Record Current tRC time + RC_chk = $time; + end + + // Load Mode Register + if (Mode_reg_enable == 1'b1) begin + // Decode CAS Latency, Burst Length, Burst Type, and Write Burst Mode + if (Pc_b0 == 1'b1 && Pc_b1 == 1'b1 && Pc_b2 == 1'b1 && Pc_b3 == 1'b1) begin + Mode_reg = Addr; + if (Debug) begin + $display ("at time %t LMR : Load Mode Register", $time); + // CAS Latency + if (Addr[6 : 4] == 3'b010) + $display (" CAS Latency = 2"); + else if (Addr[6 : 4] == 3'b011) + $display (" CAS Latency = 3"); + else + $display (" CAS Latency = Reserved"); + // Burst Length + if (Addr[2 : 0] == 3'b000) + $display (" Burst Length = 1"); + else if (Addr[2 : 0] == 3'b001) + $display (" Burst Length = 2"); + else if (Addr[2 : 0] == 3'b010) + $display (" Burst Length = 4"); + else if (Addr[2 : 0] == 3'b011) + $display (" Burst Length = 8"); + else if (Addr[3 : 0] == 4'b0111) + $display (" Burst Length = Full"); + else + $display (" Burst Length = Reserved"); + // Burst Type + if (Addr[3] == 1'b0) + $display (" Burst Type = Sequential"); + else if (Addr[3] == 1'b1) + $display (" Burst Type = Interleaved"); + else + $display (" Burst Type = Reserved"); + // Write Burst Mode + if (Addr[9] == 1'b0) + $display (" Write Burst Mode = Programmed Burst Length"); + else if (Addr[9] == 1'b1) + $display (" Write Burst Mode = Single Location Access"); + else + $display (" Write Burst Mode = Reserved"); + end + end else begin + + //->tb.test_control.error_detected; + $display ("at time %t ERROR: all banks must be Precharge before Load Mode Register", $time); + end + // REF to LMR + if ($time - RC_chk < tRC) begin + + //->tb.test_control.error_detected; + $display ("at time %t ERROR: tRC violation during Load Mode Register", $time); + end + // LMR to LMR + if (MRD_chk < tMRD) begin + + //->tb.test_control.error_detected; + $display ("at time %t ERROR: tMRD violation during Load Mode Register", $time); + end + MRD_chk = 0; + end + + // Active Block (Latch Bank Address and Row Address) + if (Active_enable == 1'b1) begin + if (Ba == 2'b00 && Pc_b0 == 1'b1) begin + {Act_b0, Pc_b0} = 2'b10; + B0_row_addr = Addr [addr_bits - 1 : 0]; + RCD_chk0 = $time; + RAS_chk0 = $time; + if (Debug) $display ("at time %t ACT : Bank = 0 Row = %d", $time, Addr); + // Precharge to Activate Bank 0 + if ($time - RP_chk0 < tRP) begin + + //->tb.test_control.error_detected; + $display ("at time %t ERROR: tRP violation during Activate bank 0", $time); + end + end else if (Ba == 2'b01 && Pc_b1 == 1'b1) begin + {Act_b1, Pc_b1} = 2'b10; + B1_row_addr = Addr [addr_bits - 1 : 0]; + RCD_chk1 = $time; + RAS_chk1 = $time; + if (Debug) $display ("at time %t ACT : Bank = 1 Row = %d", $time, Addr); + // Precharge to Activate Bank 1 + if ($time - RP_chk1 < tRP) begin + + //->tb.test_control.error_detected; + $display ("at time %t ERROR: tRP violation during Activate bank 1", $time); + end + end else if (Ba == 2'b10 && Pc_b2 == 1'b1) begin + {Act_b2, Pc_b2} = 2'b10; + B2_row_addr = Addr [addr_bits - 1 : 0]; + RCD_chk2 = $time; + RAS_chk2 = $time; + if (Debug) $display ("at time %t ACT : Bank = 2 Row = %d", $time, Addr); + // Precharge to Activate Bank 2 + if ($time - RP_chk2 < tRP) begin + + //->tb.test_control.error_detected; + $display ("at time %t ERROR: tRP violation during Activate bank 2", $time); + end + end else if (Ba == 2'b11 && Pc_b3 == 1'b1) begin + {Act_b3, Pc_b3} = 2'b10; + B3_row_addr = Addr [addr_bits - 1 : 0]; + RCD_chk3 = $time; + RAS_chk3 = $time; + if (Debug) $display ("at time %t ACT : Bank = 3 Row = %d", $time, Addr); + // Precharge to Activate Bank 3 + if ($time - RP_chk3 < tRP) begin + + //->tb.test_control.error_detected; + $display ("at time %t ERROR: tRP violation during Activate bank 3", $time); + end + end else if (Ba == 2'b00 && Pc_b0 == 1'b0) begin + + //->tb.test_control.error_detected; + $display ("at time %t ERROR: Bank 0 is not Precharged.", $time); + end else if (Ba == 2'b01 && Pc_b1 == 1'b0) begin + + //->tb.test_control.error_detected; + $display ("at time %t ERROR: Bank 1 is not Precharged.", $time); + end else if (Ba == 2'b10 && Pc_b2 == 1'b0) begin + + //->tb.test_control.error_detected; + $display ("at time %t ERROR: Bank 2 is not Precharged.", $time); + end else if (Ba == 2'b11 && Pc_b3 == 1'b0) begin + + //->tb.test_control.error_detected; + $display ("at time %t ERROR: Bank 3 is not Precharged.", $time); + end + // Active Bank A to Active Bank B + if ((Previous_bank != Ba) && ($time - RRD_chk < tRRD)) begin + + //->tb.test_control.error_detected; + $display ("at time %t ERROR: tRRD violation during Activate bank = %d", $time, Ba); + end + // Load Mode Register to Active + if (MRD_chk < tMRD ) begin + + //->tb.test_control.error_detected; + $display ("at time %t ERROR: tMRD violation during Activate bank = %d", $time, Ba); + end + // Auto Refresh to Activate + if ($time - RC_chk < tRC) begin + + //->tb.test_control.error_detected; + $display ("at time %t ERROR: tRC violation during Activate bank = %d", $time, Ba); + end + // Record variables for checking violation + RRD_chk = $time; + Previous_bank = Ba; + end + + // Precharge Block + if (Prech_enable == 1'b1) begin + if (Addr[10] == 1'b1) begin + {Pc_b0, Pc_b1, Pc_b2, Pc_b3} = 4'b1111; + {Act_b0, Act_b1, Act_b2, Act_b3} = 4'b0000; + RP_chk0 = $time; + RP_chk1 = $time; + RP_chk2 = $time; + RP_chk3 = $time; + if (Debug) $display ("at time %t PRE : Bank = ALL",$time); + // Activate to Precharge all banks + if (($time - RAS_chk0 < tRAS) || ($time - RAS_chk1 < tRAS) || + ($time - RAS_chk2 < tRAS) || ($time - RAS_chk3 < tRAS)) begin + + //->tb.test_control.error_detected; + $display ("at time %t ERROR: tRAS violation during Precharge all bank", $time); + end + // tWR violation check for write + if (($time - WR_chk[0] < tWRp) || ($time - WR_chk[1] < tWRp) || + ($time - WR_chk[2] < tWRp) || ($time - WR_chk[3] < tWRp)) begin + + //->tb.test_control.error_detected; + $display ("at time %t ERROR: tWR violation during Precharge all bank", $time); + end + end else if (Addr[10] == 1'b0) begin + if (Ba == 2'b00) begin + {Pc_b0, Act_b0} = 2'b10; + RP_chk0 = $time; + if (Debug) $display ("at time %t PRE : Bank = 0",$time); + // Activate to Precharge Bank 0 + if ($time - RAS_chk0 < tRAS) begin + + //->tb.test_control.error_detected; + $display ("at time %t ERROR: tRAS violation during Precharge bank 0", $time); + end + end else if (Ba == 2'b01) begin + {Pc_b1, Act_b1} = 2'b10; + RP_chk1 = $time; + if (Debug) $display ("at time %t PRE : Bank = 1",$time); + // Activate to Precharge Bank 1 + if ($time - RAS_chk1 < tRAS) begin + + //->tb.test_control.error_detected; + $display ("at time %t ERROR: tRAS violation during Precharge bank 1", $time); + end + end else if (Ba == 2'b10) begin + {Pc_b2, Act_b2} = 2'b10; + RP_chk2 = $time; + if (Debug) $display ("at time %t PRE : Bank = 2",$time); + // Activate to Precharge Bank 2 + if ($time - RAS_chk2 < tRAS) begin + + //->tb.test_control.error_detected; + $display ("at time %t ERROR: tRAS violation during Precharge bank 2", $time); + end + end else if (Ba == 2'b11) begin + {Pc_b3, Act_b3} = 2'b10; + RP_chk3 = $time; + if (Debug) $display ("at time %t PRE : Bank = 3",$time); + // Activate to Precharge Bank 3 + if ($time - RAS_chk3 < tRAS) begin + + //->tb.test_control.error_detected; + $display ("at time %t ERROR: tRAS violation during Precharge bank 3", $time); + end + end + // tWR violation check for write + if ($time - WR_chk[Ba] < tWRp) begin + + //->tb.test_control.error_detected; + $display ("at time %t ERROR: tWR violation during Precharge bank %d", $time, Ba); + end + end + // Terminate a Write Immediately (if same bank or all banks) + if (Data_in_enable == 1'b1 && (Bank == Ba || Addr[10] == 1'b1)) begin + Data_in_enable = 1'b0; + end + // Precharge Command Pipeline for Read + if (Cas_latency_3 == 1'b1) begin + Command[2] = `PRECH; + Bank_precharge[2] = Ba; + A10_precharge[2] = Addr[10]; + end else if (Cas_latency_2 == 1'b1) begin + Command[1] = `PRECH; + Bank_precharge[1] = Ba; + A10_precharge[1] = Addr[10]; + end + end + + // Burst terminate + if (Burst_term == 1'b1) begin + // Terminate a Write Immediately + if (Data_in_enable == 1'b1) begin + Data_in_enable = 1'b0; + end + // Terminate a Read Depend on CAS Latency + if (Cas_latency_3 == 1'b1) begin + Command[2] = `BST; + end else if (Cas_latency_2 == 1'b1) begin + Command[1] = `BST; + end + if (Debug) $display ("at time %t BST : Burst Terminate",$time); + end + + // Read, Write, Column Latch + if (Read_enable == 1'b1 || Write_enable == 1'b1) begin + // Check to see if bank is open (ACT) + if ((Ba == 2'b00 && Pc_b0 == 1'b1) || (Ba == 2'b01 && Pc_b1 == 1'b1) || + (Ba == 2'b10 && Pc_b2 == 1'b1) || (Ba == 2'b11 && Pc_b3 == 1'b1)) begin + + //->tb.test_control.error_detected; + $display("at time %t ERROR: Cannot Read or Write - Bank %d is not Activated", $time, Ba); + end + // Activate to Read or Write + if ((Ba == 2'b00) && ($time - RCD_chk0 < tRCD)) + begin + //->tb.test_control.error_detected; + $display("at time %t ERROR: tRCD violation during Read or Write to Bank 0", $time); + end + + if ((Ba == 2'b01) && ($time - RCD_chk1 < tRCD)) + begin + //->tb.test_control.error_detected; + $display("at time %t ERROR: tRCD violation during Read or Write to Bank 1", $time); + end + if ((Ba == 2'b10) && ($time - RCD_chk2 < tRCD)) + begin + //->tb.test_control.error_detected; + $display("at time %t ERROR: tRCD violation during Read or Write to Bank 2", $time); + end + if ((Ba == 2'b11) && ($time - RCD_chk3 < tRCD)) + begin + //->tb.test_control.error_detected; + $display("at time %t ERROR: tRCD violation during Read or Write to Bank 3", $time); + end + // Read Command + if (Read_enable == 1'b1) begin + // CAS Latency pipeline + if (Cas_latency_3 == 1'b1) begin + if (Addr[10] == 1'b1) begin + Command[2] = `READ_A; + end else begin + Command[2] = `READ; + end + Col_addr[2] = Addr; + Bank_addr[2] = Ba; + end else if (Cas_latency_2 == 1'b1) begin + if (Addr[10] == 1'b1) begin + Command[1] = `READ_A; + end else begin + Command[1] = `READ; + end + Col_addr[1] = Addr; + Bank_addr[1] = Ba; + end + + // Read interrupt Write (terminate Write immediately) + if (Data_in_enable == 1'b1) begin + Data_in_enable = 1'b0; + end + + // Write Command + end else if (Write_enable == 1'b1) begin + if (Addr[10] == 1'b1) begin + Command[0] = `WRITE_A; + end else begin + Command[0] = `WRITE; + end + Col_addr[0] = Addr; + Bank_addr[0] = Ba; + + // Write interrupt Write (terminate Write immediately) + if (Data_in_enable == 1'b1) begin + Data_in_enable = 1'b0; + end + + // Write interrupt Read (terminate Read immediately) + if (Data_out_enable == 1'b1) begin + Data_out_enable = 1'b0; + end + end + + // Interrupting a Write with Autoprecharge + if (Auto_precharge[Bank] == 1'b1 && Write_precharge[Bank] == 1'b1) begin + RW_interrupt_write[Bank] = 1'b1; + if (Debug) $display ("at time %t NOTE : Read/Write Bank %d interrupt Write Bank %d with Autoprecharge", $time, Ba, Bank); + end + + // Interrupting a Read with Autoprecharge + if (Auto_precharge[Bank] == 1'b1 && Read_precharge[Bank] == 1'b1) begin + RW_interrupt_read[Bank] = 1'b1; + if (Debug) $display ("at time %t NOTE : Read/Write Bank %d interrupt Read Bank %d with Autoprecharge", $time, Ba, Bank); + end + + // Read or Write with Auto Precharge + if (Addr[10] == 1'b1) begin + Auto_precharge[Ba] = 1'b1; + Count_precharge[Ba] = 0; + if (Read_enable == 1'b1) begin + Read_precharge[Ba] = 1'b1; + end else if (Write_enable == 1'b1) begin + Write_precharge[Ba] = 1'b1; + end + end + end + + // Read with Auto Precharge Calculation + // The device start internal precharge: + // 1. CAS Latency - 1 cycles before last burst + // and 2. Meet minimum tRAS requirement + // or 3. Interrupt by a Read or Write (with or without AutoPrecharge) + if ((Auto_precharge[0] == 1'b1) && (Read_precharge[0] == 1'b1)) begin + if ((($time - RAS_chk0 >= tRAS) && // Case 2 + ((Burst_length_1 == 1'b1 && Count_precharge[0] >= 1) || // Case 1 + (Burst_length_2 == 1'b1 && Count_precharge[0] >= 2) || + (Burst_length_4 == 1'b1 && Count_precharge[0] >= 4) || + (Burst_length_8 == 1'b1 && Count_precharge[0] >= 8))) || + (RW_interrupt_read[0] == 1'b1)) begin // Case 3 + Pc_b0 = 1'b1; + Act_b0 = 1'b0; + RP_chk0 = $time; + Auto_precharge[0] = 1'b0; + Read_precharge[0] = 1'b0; + RW_interrupt_read[0] = 1'b0; + if (Debug) $display ("at time %t NOTE : Start Internal Auto Precharge for Bank 0", $time); + end + end + if ((Auto_precharge[1] == 1'b1) && (Read_precharge[1] == 1'b1)) begin + if ((($time - RAS_chk1 >= tRAS) && + ((Burst_length_1 == 1'b1 && Count_precharge[1] >= 1) || + (Burst_length_2 == 1'b1 && Count_precharge[1] >= 2) || + (Burst_length_4 == 1'b1 && Count_precharge[1] >= 4) || + (Burst_length_8 == 1'b1 && Count_precharge[1] >= 8))) || + (RW_interrupt_read[1] == 1'b1)) begin + Pc_b1 = 1'b1; + Act_b1 = 1'b0; + RP_chk1 = $time; + Auto_precharge[1] = 1'b0; + Read_precharge[1] = 1'b0; + RW_interrupt_read[1] = 1'b0; + if (Debug) $display ("at time %t NOTE : Start Internal Auto Precharge for Bank 1", $time); + end + end + if ((Auto_precharge[2] == 1'b1) && (Read_precharge[2] == 1'b1)) begin + if ((($time - RAS_chk2 >= tRAS) && + ((Burst_length_1 == 1'b1 && Count_precharge[2] >= 1) || + (Burst_length_2 == 1'b1 && Count_precharge[2] >= 2) || + (Burst_length_4 == 1'b1 && Count_precharge[2] >= 4) || + (Burst_length_8 == 1'b1 && Count_precharge[2] >= 8))) || + (RW_interrupt_read[2] == 1'b1)) begin + Pc_b2 = 1'b1; + Act_b2 = 1'b0; + RP_chk2 = $time; + Auto_precharge[2] = 1'b0; + Read_precharge[2] = 1'b0; + RW_interrupt_read[2] = 1'b0; + if (Debug) $display ("at time %t NOTE : Start Internal Auto Precharge for Bank 2", $time); + end + end + if ((Auto_precharge[3] == 1'b1) && (Read_precharge[3] == 1'b1)) begin + if ((($time - RAS_chk3 >= tRAS) && + ((Burst_length_1 == 1'b1 && Count_precharge[3] >= 1) || + (Burst_length_2 == 1'b1 && Count_precharge[3] >= 2) || + (Burst_length_4 == 1'b1 && Count_precharge[3] >= 4) || + (Burst_length_8 == 1'b1 && Count_precharge[3] >= 8))) || + (RW_interrupt_read[3] == 1'b1)) begin + Pc_b3 = 1'b1; + Act_b3 = 1'b0; + RP_chk3 = $time; + Auto_precharge[3] = 1'b0; + Read_precharge[3] = 1'b0; + RW_interrupt_read[3] = 1'b0; + if (Debug) $display ("at time %t NOTE : Start Internal Auto Precharge for Bank 3", $time); + end + end + + // Internal Precharge or Bst + if (Command[0] == `PRECH) begin // Precharge terminate a read with same bank or all banks + if (Bank_precharge[0] == Bank || A10_precharge[0] == 1'b1) begin + if (Data_out_enable == 1'b1) begin + Data_out_enable = 1'b0; + end + end + end else if (Command[0] == `BST) begin // BST terminate a read to current bank + if (Data_out_enable == 1'b1) begin + Data_out_enable = 1'b0; + end + end + + if (Data_out_enable == 1'b0) begin + Dq_reg <= #tOH {data_bits{1'bz}}; + end + + // Detect Read or Write command + if (Command[0] == `READ || Command[0] == `READ_A) begin + Bank = Bank_addr[0]; + Col = Col_addr[0]; + Col_brst = Col_addr[0]; + if (Bank_addr[0] == 2'b00) begin + Row = B0_row_addr; + end else if (Bank_addr[0] == 2'b01) begin + Row = B1_row_addr; + end else if (Bank_addr[0] == 2'b10) begin + Row = B2_row_addr; + end else if (Bank_addr[0] == 2'b11) begin + Row = B3_row_addr; + end + Burst_counter = 0; + Data_in_enable = 1'b0; + Data_out_enable = 1'b1; + end else if (Command[0] == `WRITE || Command[0] == `WRITE_A) begin + Bank = Bank_addr[0]; + Col = Col_addr[0]; + Col_brst = Col_addr[0]; + if (Bank_addr[0] == 2'b00) begin + Row = B0_row_addr; + end else if (Bank_addr[0] == 2'b01) begin + Row = B1_row_addr; + end else if (Bank_addr[0] == 2'b10) begin + Row = B2_row_addr; + end else if (Bank_addr[0] == 2'b11) begin + Row = B3_row_addr; + end + Burst_counter = 0; + Data_in_enable = 1'b1; + Data_out_enable = 1'b0; + end + + // DQ buffer (Driver/Receiver) + if (Data_in_enable == 1'b1) begin // Writing Data to Memory + // Array buffer + if (Bank == 2'b00) Dq_dqm [15 : 0] = Bank0 [{Row, Col}]; + if (Bank == 2'b01) Dq_dqm [15 : 0] = Bank1 [{Row, Col}]; + if (Bank == 2'b10) Dq_dqm [15 : 0] = Bank2 [{Row, Col}]; + if (Bank == 2'b11) Dq_dqm [15 : 0] = Bank3 [{Row, Col}]; + // Dqm operation + if (Dqm[0] == 1'b0) Dq_dqm [ 7 : 0] = Dq [ 7 : 0]; + if (Dqm[1] == 1'b0) Dq_dqm [15 : 8] = Dq [15 : 8]; + // Write to memory + if (Bank == 2'b00) Bank0 [{Row, Col}] = Dq_dqm [15 : 0]; + if (Bank == 2'b01) Bank1 [{Row, Col}] = Dq_dqm [15 : 0]; + if (Bank == 2'b10) Bank2 [{Row, Col}] = Dq_dqm [15 : 0]; + if (Bank == 2'b11) Bank3 [{Row, Col}] = Dq_dqm [15 : 0]; + // Output result + if (Dqm == 2'b11) begin + if (Debug) $display("at time %t WRITE: Bank = %d Row = %d, Col = %d, Data = Hi-Z due to DQM", $time, Bank, Row, Col); + end else begin + if (Debug) $display("at time %t WRITE: Bank = %d Row = %d, Col = %d, Data = %h, Dqm = %b", $time, Bank, Row, Col, Dq_dqm, Dqm); + // Record tWR time and reset counter + WR_chk [Bank] = $time; + WR_counter [Bank] = 0; + end + // Advance burst counter subroutine + #tHZ Burst; + end else if (Data_out_enable == 1'b1) begin // Reading Data from Memory + // Array buffer + if (Bank == 2'b00) Dq_dqm [15 : 0] = Bank0 [{Row, Col}]; + if (Bank == 2'b01) Dq_dqm [15 : 0] = Bank1 [{Row, Col}]; + if (Bank == 2'b10) Dq_dqm [15 : 0] = Bank2 [{Row, Col}]; + if (Bank == 2'b11) Dq_dqm [15 : 0] = Bank3 [{Row, Col}]; + // Dqm operation + if (Dqm_reg0[0] == 1'b1) Dq_dqm [ 7 : 0] = 8'bz; + if (Dqm_reg0[1] == 1'b1) Dq_dqm [15 : 8] = 8'bz; + // Display result + Dq_reg [15 : 0] = #tAC Dq_dqm [15 : 0]; + if (Dqm_reg0 == 2'b11) begin + if (Debug) $display("at time %t READ : Bank = %d Row = %d, Col = %d, Data = Hi-Z due to DQM", $time, Bank, Row, Col); + end else begin + if (Debug) $display("at time %t READ : Bank = %d Row = %d, Col = %d, Data = %h, Dqm = %b", $time, Bank, Row, Col, Dq_reg, Dqm_reg0); + end + // Advance burst counter subroutine + Burst; + end + end + + // Write with Auto Precharge Calculation + // The device start internal precharge: + // 1. tWR Clock after last burst + // and 2. Meet minimum tRAS requirement + // or 3. Interrupt by a Read or Write (with or without AutoPrecharge) + always @ (WR_counter[0]) begin + if ((Auto_precharge[0] == 1'b1) && (Write_precharge[0] == 1'b1)) begin + if ((($time - RAS_chk0 >= tRAS) && // Case 2 + (((Burst_length_1 == 1'b1 || Write_burst_mode == 1'b1) && Count_precharge [0] >= 1) || // Case 1 + (Burst_length_2 == 1'b1 && Count_precharge [0] >= 2) || + (Burst_length_4 == 1'b1 && Count_precharge [0] >= 4) || + (Burst_length_8 == 1'b1 && Count_precharge [0] >= 8))) || + (RW_interrupt_write[0] == 1'b1 && WR_counter[0] >= 2)) begin // Case 3 (stop count when interrupt) + Auto_precharge[0] = 1'b0; + Write_precharge[0] = 1'b0; + RW_interrupt_write[0] = 1'b0; + #tWRa; // Wait for tWR + Pc_b0 = 1'b1; + Act_b0 = 1'b0; + RP_chk0 = $time; + if (Debug) $display ("at time %t NOTE : Start Internal Auto Precharge for Bank 0", $time); + end + end + end + always @ (WR_counter[1]) begin + if ((Auto_precharge[1] == 1'b1) && (Write_precharge[1] == 1'b1)) begin + if ((($time - RAS_chk1 >= tRAS) && + (((Burst_length_1 == 1'b1 || Write_burst_mode == 1'b1) && Count_precharge [1] >= 1) || + (Burst_length_2 == 1'b1 && Count_precharge [1] >= 2) || + (Burst_length_4 == 1'b1 && Count_precharge [1] >= 4) || + (Burst_length_8 == 1'b1 && Count_precharge [1] >= 8))) || + (RW_interrupt_write[1] == 1'b1 && WR_counter[1] >= 2)) begin + Auto_precharge[1] = 1'b0; + Write_precharge[1] = 1'b0; + RW_interrupt_write[1] = 1'b0; + #tWRa; // Wait for tWR + Pc_b1 = 1'b1; + Act_b1 = 1'b0; + RP_chk1 = $time; + if (Debug) $display ("at time %t NOTE : Start Internal Auto Precharge for Bank 1", $time); + end + end + end + always @ (WR_counter[2]) begin + if ((Auto_precharge[2] == 1'b1) && (Write_precharge[2] == 1'b1)) begin + if ((($time - RAS_chk2 >= tRAS) && + (((Burst_length_1 == 1'b1 || Write_burst_mode == 1'b1) && Count_precharge [2] >= 1) || + (Burst_length_2 == 1'b1 && Count_precharge [2] >= 2) || + (Burst_length_4 == 1'b1 && Count_precharge [2] >= 4) || + (Burst_length_8 == 1'b1 && Count_precharge [2] >= 8))) || + (RW_interrupt_write[2] == 1'b1 && WR_counter[2] >= 2)) begin + Auto_precharge[2] = 1'b0; + Write_precharge[2] = 1'b0; + RW_interrupt_write[2] = 1'b0; + #tWRa; // Wait for tWR + Pc_b2 = 1'b1; + Act_b2 = 1'b0; + RP_chk2 = $time; + if (Debug) $display ("at time %t NOTE : Start Internal Auto Precharge for Bank 2", $time); + end + end + end + always @ (WR_counter[3]) begin + if ((Auto_precharge[3] == 1'b1) && (Write_precharge[3] == 1'b1)) begin + if ((($time - RAS_chk3 >= tRAS) && + (((Burst_length_1 == 1'b1 || Write_burst_mode == 1'b1) && Count_precharge [3] >= 1) || + (Burst_length_2 == 1'b1 && Count_precharge [3] >= 2) || + (Burst_length_4 == 1'b1 && Count_precharge [3] >= 4) || + (Burst_length_8 == 1'b1 && Count_precharge [3] >= 8))) || + (RW_interrupt_write[3] == 1'b1 && WR_counter[3] >= 2)) begin + Auto_precharge[3] = 1'b0; + Write_precharge[3] = 1'b0; + RW_interrupt_write[3] = 1'b0; + #tWRa; // Wait for tWR + Pc_b3 = 1'b1; + Act_b3 = 1'b0; + RP_chk3 = $time; + if (Debug) $display ("at time %t NOTE : Start Internal Auto Precharge for Bank 3", $time); + end + end + end + + task Burst; + begin + // Advance Burst Counter + Burst_counter = Burst_counter + 1; + + // Burst Type + if (Mode_reg[3] == 1'b0) begin // Sequential Burst + Col_temp = Col + 1; + end else if (Mode_reg[3] == 1'b1) begin // Interleaved Burst + Col_temp[2] = Burst_counter[2] ^ Col_brst[2]; + Col_temp[1] = Burst_counter[1] ^ Col_brst[1]; + Col_temp[0] = Burst_counter[0] ^ Col_brst[0]; + end + + // Burst Length + if (Burst_length_2) begin // Burst Length = 2 + Col [0] = Col_temp [0]; + end else if (Burst_length_4) begin // Burst Length = 4 + Col [1 : 0] = Col_temp [1 : 0]; + end else if (Burst_length_8) begin // Burst Length = 8 + Col [2 : 0] = Col_temp [2 : 0]; + end else begin // Burst Length = FULL + Col = Col_temp; + end + + // Burst Read Single Write + if (Write_burst_mode == 1'b1) begin + Data_in_enable = 1'b0; + end + + // Data Counter + if (Burst_length_1 == 1'b1) begin + if (Burst_counter >= 1) begin + Data_in_enable = 1'b0; + Data_out_enable = 1'b0; + end + end else if (Burst_length_2 == 1'b1) begin + if (Burst_counter >= 2) begin + Data_in_enable = 1'b0; + Data_out_enable = 1'b0; + end + end else if (Burst_length_4 == 1'b1) begin + if (Burst_counter >= 4) begin + Data_in_enable = 1'b0; + Data_out_enable = 1'b0; + end + end else if (Burst_length_8 == 1'b1) begin + if (Burst_counter >= 8) begin + Data_in_enable = 1'b0; + Data_out_enable = 1'b0; + end + end + end + endtask + + // Timing Parameters for -75 (PC133) and CAS Latency = 2 + specify + specparam + tAH = 0.8, // Addr, Ba Hold Time + tAS = 1.5, // Addr, Ba Setup Time + tCH = 2.5, // Clock High-Level Width + tCL = 2.5, // Clock Low-Level Width + tCK = 10, // Clock Cycle Time + tDH = 0.8, // Data-in Hold Time + tDS = 1.5, // Data-in Setup Time + tCKH = 0.8, // CKE Hold Time + tCKS = 1.5, // CKE Setup Time + tCMH = 0.8, // CS#, RAS#, CAS#, WE#, DQM# Hold Time + tCMS = 1.5; // CS#, RAS#, CAS#, WE#, DQM# Setup Time + $width (posedge Clk, tCH); + $width (negedge Clk, tCL); + $period (negedge Clk, tCK); + $period (posedge Clk, tCK); + $setuphold(posedge Clk, Cke, tCKS, tCKH); + $setuphold(posedge Clk, Cs_n, tCMS, tCMH); + $setuphold(posedge Clk, Cas_n, tCMS, tCMH); + $setuphold(posedge Clk, Ras_n, tCMS, tCMH); + $setuphold(posedge Clk, We_n, tCMS, tCMH); + $setuphold(posedge Clk, Addr, tAS, tAH); + $setuphold(posedge Clk, Ba, tAS, tAH); + $setuphold(posedge Clk, Dqm, tCMS, tCMH); + $setuphold(posedge Dq_chk, Dq, tDS, tDH); + endspecify + +endmodule + diff --git a/lib/common/Driver/SDRAM_driver/model/mt48lc8m8a2.v b/lib/common/Driver/SDRAM_driver/model/mt48lc8m8a2.v new file mode 100644 index 0000000..add1c36 --- /dev/null +++ b/lib/common/Driver/SDRAM_driver/model/mt48lc8m8a2.v @@ -0,0 +1,964 @@ +/**************************************************************************************** +* +* File Name: MT48LC8M8A2.V +* Version: 0.0f +* Date: July 8th, 1999 +* Model: BUS Functional +* Simulator: Model Technology (PC version 5.2e PE) +* +* Dependencies: None +* +* Author: Son P. Huynh +* Email: sphuynh@micron.com +* Phone: (208) 368-3825 +* Company: Micron Technology, Inc. +* Model: MT48LC8M16A2 (2Meg x 8 x 4 Banks) +* +* Description: Micron 128Mb SDRAM Verilog model +* +* Limitation: - Doesn't check for 4096 cycle refresh +* +* Note: - Set simulator resolution to "ps" accuracy +* - Set Debug = 0 to disable $display messages +* +* Disclaimer: THESE DESIGNS ARE PROVIDED "AS IS" WITH NO WARRANTY +* WHATSOEVER AND MICRON SPECIFICALLY DISCLAIMS ANY +* IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR +* A PARTICULAR PURPOSE, OR AGAINST INFRINGEMENT. +* +* Copyright 1998 Micron Semiconductor Products, Inc. +* All rights researved +* +* Rev Author Phone Date Changes +* ---- ---------------------------- ---------- --------------------------------------- +* 0.0f Son Huynh 208-368-3825 07/08/1999 - Fix tWR = 1 Clk + 7.5 ns (Auto) +* Micron Technology Inc. - Fix tWR = 15 ns (Manual) +* - Fix tRP (Autoprecharge to AutoRefresh) +* +* 0.0a Son Huynh 208-368-3825 05/13/1998 - First Release (from 64Mb rev 0.0e) +* Micron Technology Inc. +****************************************************************************************/ + +`timescale 1ns / 100ps + +module mt48lc8m8a2 (Dq, Addr, Ba, Clk, Cke, Cs_n, Ras_n, Cas_n, We_n, Dqm); + + parameter addr_bits = 12; + parameter data_bits = 8; + parameter col_bits = 9; + parameter mem_sizes = 2097151; // 2 Meg + + inout [data_bits - 1 : 0] Dq; + input [addr_bits - 1 : 0] Addr; + input [1 : 0] Ba; + input Clk; + input Cke; + input Cs_n; + input Ras_n; + input Cas_n; + input We_n; + input [0 : 0] Dqm; + + reg [data_bits - 1 : 0] Bank0 [0 : mem_sizes]; + reg [data_bits - 1 : 0] Bank1 [0 : mem_sizes]; + reg [data_bits - 1 : 0] Bank2 [0 : mem_sizes]; + reg [data_bits - 1 : 0] Bank3 [0 : mem_sizes]; + + reg [1 : 0] Bank_addr [0 : 3]; // Bank Address Pipeline + reg [col_bits - 1 : 0] Col_addr [0 : 3]; // Column Address Pipeline + reg [3 : 0] Command [0 : 3]; // Command Operation Pipeline + reg [0 : 0] Dqm_reg0, Dqm_reg1; // DQM Operation Pipeline + reg [addr_bits - 1 : 0] B0_row_addr, B1_row_addr, B2_row_addr, B3_row_addr; + + reg [addr_bits - 1 : 0] Mode_reg; + reg [data_bits - 1 : 0] Dq_reg, Dq_dqm; + reg [col_bits - 1 : 0] Col_temp, Burst_counter; + + reg Act_b0, Act_b1, Act_b2, Act_b3; // Bank Activate + reg Pc_b0, Pc_b1, Pc_b2, Pc_b3; // Bank Precharge + + reg [1 : 0] Bank_precharge [0 : 3]; // Precharge Command + reg A10_precharge [0 : 3]; // Addr[10] = 1 (All banks) + reg Auto_precharge [0 : 3]; // RW AutoPrecharge (Bank) + reg Read_precharge [0 : 3]; // R AutoPrecharge + reg Write_precharge [0 : 3]; // W AutoPrecharge + integer Count_precharge [0 : 3]; // RW AutoPrecharge (Counter) + reg RW_interrupt_read [0 : 3]; // RW Interrupt Read with Auto Precharge + reg RW_interrupt_write [0 : 3]; // RW Interrupt Write with Auto Precharge + + reg Data_in_enable; + reg Data_out_enable; + + reg [1 : 0] Bank, Previous_bank; + reg [addr_bits - 1 : 0] Row; + reg [col_bits - 1 : 0] Col, Col_brst; + + // Internal system clock + reg CkeZ, Sys_clk; + + // Commands Decode + wire Active_enable = ~Cs_n & ~Ras_n & Cas_n & We_n; + wire Aref_enable = ~Cs_n & ~Ras_n & ~Cas_n & We_n; + wire Burst_term = ~Cs_n & Ras_n & Cas_n & ~We_n; + wire Mode_reg_enable = ~Cs_n & ~Ras_n & ~Cas_n & ~We_n; + wire Prech_enable = ~Cs_n & ~Ras_n & Cas_n & ~We_n; + wire Read_enable = ~Cs_n & Ras_n & ~Cas_n & We_n; + wire Write_enable = ~Cs_n & Ras_n & ~Cas_n & ~We_n; + + // Burst Length Decode + wire Burst_length_1 = ~Mode_reg[2] & ~Mode_reg[1] & ~Mode_reg[0]; + wire Burst_length_2 = ~Mode_reg[2] & ~Mode_reg[1] & Mode_reg[0]; + wire Burst_length_4 = ~Mode_reg[2] & Mode_reg[1] & ~Mode_reg[0]; + wire Burst_length_8 = ~Mode_reg[2] & Mode_reg[1] & Mode_reg[0]; + + // CAS Latency Decode + wire Cas_latency_2 = ~Mode_reg[6] & Mode_reg[5] & ~Mode_reg[4]; + wire Cas_latency_3 = ~Mode_reg[6] & Mode_reg[5] & Mode_reg[4]; + +`ifdef VERBOSE + wire Debug = 1'b1; // Debug messages : 1 = On +`else + wire Debug = 1'b0; // Debug messages : 1 = On +`endif + // Write Burst Mode + wire Write_burst_mode = Mode_reg[9]; + + wire Dq_chk = Sys_clk & Data_in_enable; // Check setup/hold time for DQ + + assign Dq = Dq_reg; // DQ buffer + + // Commands Operation + `define ACT 0 + `define NOP 1 + `define READ 2 + `define READ_A 3 + `define SDRAM_WRITE 4 + `define WRITE_A 5 + `define SDRAM_PRECH 6 + `define SDRAM_A_REF 7 + `define SDRAM_BST 8 + `define SDRAM_LMR 9 + + // Timing Parameters for -75 (PC133) and CAS Latency = 2 + parameter tAC = 6.0; + parameter tHZ = 7.0; + parameter tOH = 2.7; + parameter tMRD = 2.0; // 2 Clk Cycles + parameter tRAS = 44.0; + parameter tRC = 66.0; + parameter tRCD = 20.0; + parameter tRP = 20.0; + parameter tRRD = 15.0; + parameter tWRa = 7.5; // A2 Version - Auto precharge mode only (1 Clk + 7.5 ns) + parameter tWRp = 15.0; // A2 Version - Precharge mode only (15 ns) + + // Timing Check variable + integer MRD_chk; + integer WR_counter [0 : 3]; + time WR_chk [0 : 3]; + time RC_chk, RRD_chk; + time RAS_chk0, RAS_chk1, RAS_chk2, RAS_chk3; + time RCD_chk0, RCD_chk1, RCD_chk2, RCD_chk3; + time RP_chk0, RP_chk1, RP_chk2, RP_chk3; + + initial begin + + Dq_reg = {data_bits{1'bz}}; + {Data_in_enable, Data_out_enable} = 0; + {Act_b0, Act_b1, Act_b2, Act_b3} = 4'b0000; + {Pc_b0, Pc_b1, Pc_b2, Pc_b3} = 4'b0000; + {WR_chk[0], WR_chk[1], WR_chk[2], WR_chk[3]} = 0; + {WR_counter[0], WR_counter[1], WR_counter[2], WR_counter[3]} = 0; + {RW_interrupt_read[0], RW_interrupt_read[1], RW_interrupt_read[2], RW_interrupt_read[3]} = 0; + {RW_interrupt_write[0], RW_interrupt_write[1], RW_interrupt_write[2], RW_interrupt_write[3]} = 0; + {MRD_chk, RC_chk, RRD_chk} = 0; + {RAS_chk0, RAS_chk1, RAS_chk2, RAS_chk3} = 0; + {RCD_chk0, RCD_chk1, RCD_chk2, RCD_chk3} = 0; + {RP_chk0, RP_chk1, RP_chk2, RP_chk3} = 0; + $timeformat (-9, 0, " ns", 12); + //$readmemh("bank0.txt", Bank0); + //$readmemh("bank1.txt", Bank1); + //$readmemh("bank2.txt", Bank2); + //$readmemh("bank3.txt", Bank3); + end + + // System clock generator + always begin + @ (posedge Clk) begin + Sys_clk = CkeZ; + CkeZ = Cke; + end + @ (negedge Clk) begin + Sys_clk = 1'b0; + end + end + + always @ (posedge Sys_clk) begin + // Internal Commamd Pipelined + Command[0] = Command[1]; + Command[1] = Command[2]; + Command[2] = Command[3]; + Command[3] = `NOP; + + Col_addr[0] = Col_addr[1]; + Col_addr[1] = Col_addr[2]; + Col_addr[2] = Col_addr[3]; + Col_addr[3] = {col_bits{1'b0}}; + + Bank_addr[0] = Bank_addr[1]; + Bank_addr[1] = Bank_addr[2]; + Bank_addr[2] = Bank_addr[3]; + Bank_addr[3] = 2'b0; + + Bank_precharge[0] = Bank_precharge[1]; + Bank_precharge[1] = Bank_precharge[2]; + Bank_precharge[2] = Bank_precharge[3]; + Bank_precharge[3] = 2'b0; + + A10_precharge[0] = A10_precharge[1]; + A10_precharge[1] = A10_precharge[2]; + A10_precharge[2] = A10_precharge[3]; + A10_precharge[3] = 1'b0; + + // Dqm pipeline for Read + Dqm_reg0 = Dqm_reg1; + Dqm_reg1 = Dqm; + + // Read or Write with Auto Precharge Counter + if (Auto_precharge[0] == 1'b1) begin + Count_precharge[0] = Count_precharge[0] + 1; + end + if (Auto_precharge[1] == 1'b1) begin + Count_precharge[1] = Count_precharge[1] + 1; + end + if (Auto_precharge[2] == 1'b1) begin + Count_precharge[2] = Count_precharge[2] + 1; + end + if (Auto_precharge[3] == 1'b1) begin + Count_precharge[3] = Count_precharge[3] + 1; + end + + // tMRD Counter + MRD_chk = MRD_chk + 1; + + // tWR Counter for Write + WR_counter[0] = WR_counter[0] + 1; + WR_counter[1] = WR_counter[1] + 1; + WR_counter[2] = WR_counter[2] + 1; + WR_counter[3] = WR_counter[3] + 1; + + // Auto Refresh + if (Aref_enable == 1'b1) begin + if (Debug) $display ("at time %t AREF : Auto Refresh", $time); + // Auto Refresh to Auto Refresh + if ($time - RC_chk < tRC) begin + //->tb.test_control.error_detected; + $display ("at time %t ERROR: tRC violation during Auto Refresh", $time); + end + // Precharge to Auto Refresh + if ($time - RP_chk0 < tRP || $time - RP_chk1 < tRP || $time - RP_chk2 < tRP || $time - RP_chk3 < tRP) begin + //->tb.test_control.error_detected; + $display ("at time %t ERROR: tRP violation during Auto Refresh", $time); + end + // Precharge to Refresh + if (Pc_b0 == 1'b0 || Pc_b1 == 1'b0 || Pc_b2 == 1'b0 || Pc_b3 == 1'b0) begin + //->tb.test_control.error_detected; + $display ("at time %t ERROR: All banks must be Precharge before Auto Refresh", $time); + end + // Record Current tRC time + RC_chk = $time; + end + + // Load Mode Register + if (Mode_reg_enable == 1'b1) begin + // Decode CAS Latency, Burst Length, Burst Type, and Write Burst Mode + if (Pc_b0 == 1'b1 && Pc_b1 == 1'b1 && Pc_b2 == 1'b1 && Pc_b3 == 1'b1) begin + Mode_reg = Addr; + if (Debug) begin + $display ("at time %t LMR : Load Mode Register", $time); + // CAS Latency + if (Addr[6 : 4] == 3'b010) + $display (" CAS Latency = 2"); + else if (Addr[6 : 4] == 3'b011) + $display (" CAS Latency = 3"); + else + $display (" CAS Latency = Reserved"); + // Burst Length + if (Addr[2 : 0] == 3'b000) + $display (" Burst Length = 1"); + else if (Addr[2 : 0] == 3'b001) + $display (" Burst Length = 2"); + else if (Addr[2 : 0] == 3'b010) + $display (" Burst Length = 4"); + else if (Addr[2 : 0] == 3'b011) + $display (" Burst Length = 8"); + else if (Addr[3 : 0] == 4'b0111) + $display (" Burst Length = Full"); + else + $display (" Burst Length = Reserved"); + // Burst Type + if (Addr[3] == 1'b0) + $display (" Burst Type = Sequential"); + else if (Addr[3] == 1'b1) + $display (" Burst Type = Interleaved"); + else + $display (" Burst Type = Reserved"); + // Write Burst Mode + if (Addr[9] == 1'b0) + $display (" Write Burst Mode = Programmed Burst Length"); + else if (Addr[9] == 1'b1) + $display (" Write Burst Mode = Single Location Access"); + else + $display (" Write Burst Mode = Reserved"); + end + end else begin + + //->tb.test_control.error_detected; + $display ("at time %t ERROR: all banks must be Precharge before Load Mode Register", $time); + end + // REF to LMR + if ($time - RC_chk < tRC) begin + + //->tb.test_control.error_detected; + $display ("at time %t ERROR: tRC violation during Load Mode Register", $time); + end + // LMR to LMR + if (MRD_chk < tMRD) begin + + //->tb.test_control.error_detected; + $display ("at time %t ERROR: tMRD violation during Load Mode Register", $time); + end + MRD_chk = 0; + end + + // Active Block (Latch Bank Address and Row Address) + if (Active_enable == 1'b1) begin + if (Ba == 2'b00 && Pc_b0 == 1'b1) begin + {Act_b0, Pc_b0} = 2'b10; + B0_row_addr = Addr [addr_bits - 1 : 0]; + RCD_chk0 = $time; + RAS_chk0 = $time; + if (Debug) $display ("at time %t ACT : Bank = 0 Row = %d", $time, Addr); + // Precharge to Activate Bank 0 + if ($time - RP_chk0 < tRP) begin + + //->tb.test_control.error_detected; + $display ("at time %t ERROR: tRP violation during Activate bank 0", $time); + end + end else if (Ba == 2'b01 && Pc_b1 == 1'b1) begin + {Act_b1, Pc_b1} = 2'b10; + B1_row_addr = Addr [addr_bits - 1 : 0]; + RCD_chk1 = $time; + RAS_chk1 = $time; + if (Debug) $display ("at time %t ACT : Bank = 1 Row = %d", $time, Addr); + // Precharge to Activate Bank 1 + if ($time - RP_chk1 < tRP) begin + + //->tb.test_control.error_detected; + $display ("at time %t ERROR: tRP violation during Activate bank 1", $time); + end + end else if (Ba == 2'b10 && Pc_b2 == 1'b1) begin + {Act_b2, Pc_b2} = 2'b10; + B2_row_addr = Addr [addr_bits - 1 : 0]; + RCD_chk2 = $time; + RAS_chk2 = $time; + if (Debug) $display ("at time %t ACT : Bank = 2 Row = %d", $time, Addr); + // Precharge to Activate Bank 2 + if ($time - RP_chk2 < tRP) begin + + //->tb.test_control.error_detected; + $display ("at time %t ERROR: tRP violation during Activate bank 2", $time); + end + end else if (Ba == 2'b11 && Pc_b3 == 1'b1) begin + {Act_b3, Pc_b3} = 2'b10; + B3_row_addr = Addr [addr_bits - 1 : 0]; + RCD_chk3 = $time; + RAS_chk3 = $time; + if (Debug) $display ("at time %t ACT : Bank = 3 Row = %d", $time, Addr); + // Precharge to Activate Bank 3 + if ($time - RP_chk3 < tRP) begin + + //->tb.test_control.error_detected; + $display ("at time %t ERROR: tRP violation during Activate bank 3", $time); + end + end else if (Ba == 2'b00 && Pc_b0 == 1'b0) begin + + //->tb.test_control.error_detected; + $display ("at time %t ERROR: Bank 0 is not Precharged.", $time); + end else if (Ba == 2'b01 && Pc_b1 == 1'b0) begin + + //->tb.test_control.error_detected; + $display ("at time %t ERROR: Bank 1 is not Precharged.", $time); + end else if (Ba == 2'b10 && Pc_b2 == 1'b0) begin + + //->tb.test_control.error_detected; + $display ("at time %t ERROR: Bank 2 is not Precharged.", $time); + end else if (Ba == 2'b11 && Pc_b3 == 1'b0) begin + + //->tb.test_control.error_detected; + $display ("at time %t ERROR: Bank 3 is not Precharged.", $time); + end + // Active Bank A to Active Bank B + if ((Previous_bank != Ba) && ($time - RRD_chk < tRRD)) begin + + //->tb.test_control.error_detected; + $display ("at time %t ERROR: tRRD violation during Activate bank = %d", $time, Ba); + end + // Load Mode Register to Active + if (MRD_chk < tMRD ) begin + + //->tb.test_control.error_detected; + $display ("at time %t ERROR: tMRD violation during Activate bank = %d", $time, Ba); + end + // Auto Refresh to Activate + if ($time - RC_chk < tRC) begin + + //->tb.test_control.error_detected; + $display ("at time %t ERROR: tRC violation during Activate bank = %d", $time, Ba); + end + // Record variables for checking violation + RRD_chk = $time; + Previous_bank = Ba; + end + + // Precharge Block + if (Prech_enable == 1'b1) begin + if (Addr[10] == 1'b1) begin + {Pc_b0, Pc_b1, Pc_b2, Pc_b3} = 4'b1111; + {Act_b0, Act_b1, Act_b2, Act_b3} = 4'b0000; + RP_chk0 = $time; + RP_chk1 = $time; + RP_chk2 = $time; + RP_chk3 = $time; + if (Debug) $display ("at time %t PRE : Bank = ALL",$time); + // Activate to Precharge all banks + if (($time - RAS_chk0 < tRAS) || ($time - RAS_chk1 < tRAS) || + ($time - RAS_chk2 < tRAS) || ($time - RAS_chk3 < tRAS)) begin + + //->tb.test_control.error_detected; + $display ("at time %t ERROR: tRAS violation during Precharge all bank", $time); + end + // tWR violation check for write + if (($time - WR_chk[0] < tWRp) || ($time - WR_chk[1] < tWRp) || + ($time - WR_chk[2] < tWRp) || ($time - WR_chk[3] < tWRp)) begin + + //->tb.test_control.error_detected; + $display ("at time %t ERROR: tWR violation during Precharge all bank", $time); + end + end else if (Addr[10] == 1'b0) begin + if (Ba == 2'b00) begin + {Pc_b0, Act_b0} = 2'b10; + RP_chk0 = $time; + if (Debug) $display ("at time %t PRE : Bank = 0",$time); + // Activate to Precharge Bank 0 + if ($time - RAS_chk0 < tRAS) begin + + //->tb.test_control.error_detected; + $display ("at time %t ERROR: tRAS violation during Precharge bank 0", $time); + end + end else if (Ba == 2'b01) begin + {Pc_b1, Act_b1} = 2'b10; + RP_chk1 = $time; + if (Debug) $display ("at time %t PRE : Bank = 1",$time); + // Activate to Precharge Bank 1 + if ($time - RAS_chk1 < tRAS) begin + + //->tb.test_control.error_detected; + $display ("at time %t ERROR: tRAS violation during Precharge bank 1", $time); + end + end else if (Ba == 2'b10) begin + {Pc_b2, Act_b2} = 2'b10; + RP_chk2 = $time; + if (Debug) $display ("at time %t PRE : Bank = 2",$time); + // Activate to Precharge Bank 2 + if ($time - RAS_chk2 < tRAS) begin + + //->tb.test_control.error_detected; + $display ("at time %t ERROR: tRAS violation during Precharge bank 2", $time); + end + end else if (Ba == 2'b11) begin + {Pc_b3, Act_b3} = 2'b10; + RP_chk3 = $time; + if (Debug) $display ("at time %t PRE : Bank = 3",$time); + // Activate to Precharge Bank 3 + if ($time - RAS_chk3 < tRAS) begin + + //->tb.test_control.error_detected; + $display ("at time %t ERROR: tRAS violation during Precharge bank 3", $time); + end + end + // tWR violation check for write + if ($time - WR_chk[Ba] < tWRp) begin + + //->tb.test_control.error_detected; + $display ("at time %t ERROR: tWR violation during Precharge bank %d", $time, Ba); + end + end + // Terminate a Write Immediately (if same bank or all banks) + if (Data_in_enable == 1'b1 && (Bank == Ba || Addr[10] == 1'b1)) begin + Data_in_enable = 1'b0; + end + // Precharge Command Pipeline for Read + if (Cas_latency_3 == 1'b1) begin + Command[2] = `SDRAM_PRECH; + Bank_precharge[2] = Ba; + A10_precharge[2] = Addr[10]; + end else if (Cas_latency_2 == 1'b1) begin + Command[1] = `SDRAM_PRECH; + Bank_precharge[1] = Ba; + A10_precharge[1] = Addr[10]; + end + end + + // Burst terminate + if (Burst_term == 1'b1) begin + // Terminate a Write Immediately + if (Data_in_enable == 1'b1) begin + Data_in_enable = 1'b0; + end + // Terminate a Read Depend on CAS Latency + if (Cas_latency_3 == 1'b1) begin + Command[2] = `SDRAM_BST; + end else if (Cas_latency_2 == 1'b1) begin + Command[1] = `SDRAM_BST; + end + if (Debug) $display ("at time %t BST : Burst Terminate",$time); + end + + // Read, Write, Column Latch + if (Read_enable == 1'b1 || Write_enable == 1'b1) begin + // Check to see if bank is open (ACT) + if ((Ba == 2'b00 && Pc_b0 == 1'b1) || (Ba == 2'b01 && Pc_b1 == 1'b1) || + (Ba == 2'b10 && Pc_b2 == 1'b1) || (Ba == 2'b11 && Pc_b3 == 1'b1)) begin + + //->tb.test_control.error_detected; + $display("at time %t ERROR: Cannot Read or Write - Bank %d is not Activated", $time, Ba); + end + // Activate to Read or Write + if ((Ba == 2'b00) && ($time - RCD_chk0 < tRCD)) + begin + //->tb.test_control.error_detected; + $display("at time %t ERROR: tRCD violation during Read or Write to Bank 0", $time); + end + + if ((Ba == 2'b01) && ($time - RCD_chk1 < tRCD)) + begin + //->tb.test_control.error_detected; + $display("at time %t ERROR: tRCD violation during Read or Write to Bank 1", $time); + end + if ((Ba == 2'b10) && ($time - RCD_chk2 < tRCD)) + begin + //->tb.test_control.error_detected; + $display("at time %t ERROR: tRCD violation during Read or Write to Bank 2", $time); + end + if ((Ba == 2'b11) && ($time - RCD_chk3 < tRCD)) + begin + //->tb.test_control.error_detected; + $display("at time %t ERROR: tRCD violation during Read or Write to Bank 3", $time); + end + // Read Command + if (Read_enable == 1'b1) begin + // CAS Latency pipeline + if (Cas_latency_3 == 1'b1) begin + if (Addr[10] == 1'b1) begin + Command[2] = `READ_A; + end else begin + Command[2] = `READ; + end + Col_addr[2] = Addr; + Bank_addr[2] = Ba; + end else if (Cas_latency_2 == 1'b1) begin + if (Addr[10] == 1'b1) begin + Command[1] = `READ_A; + end else begin + Command[1] = `READ; + end + Col_addr[1] = Addr; + Bank_addr[1] = Ba; + end + + // Read interrupt Write (terminate Write immediately) + if (Data_in_enable == 1'b1) begin + Data_in_enable = 1'b0; + end + + // Write Command + end else if (Write_enable == 1'b1) begin + if (Addr[10] == 1'b1) begin + Command[0] = `WRITE_A; + end else begin + Command[0] = `SDRAM_WRITE; + end + Col_addr[0] = Addr; + Bank_addr[0] = Ba; + + // Write interrupt Write (terminate Write immediately) + if (Data_in_enable == 1'b1) begin + Data_in_enable = 1'b0; + end + + // Write interrupt Read (terminate Read immediately) + if (Data_out_enable == 1'b1) begin + Data_out_enable = 1'b0; + end + end + + // Interrupting a Write with Autoprecharge + if (Auto_precharge[Bank] == 1'b1 && Write_precharge[Bank] == 1'b1) begin + RW_interrupt_write[Bank] = 1'b1; + if (Debug) $display ("at time %t NOTE : Read/Write Bank %d interrupt Write Bank %d with Autoprecharge", $time, Ba, Bank); + end + + // Interrupting a Read with Autoprecharge + if (Auto_precharge[Bank] == 1'b1 && Read_precharge[Bank] == 1'b1) begin + RW_interrupt_read[Bank] = 1'b1; + if (Debug) $display ("at time %t NOTE : Read/Write Bank %d interrupt Read Bank %d with Autoprecharge", $time, Ba, Bank); + end + + // Read or Write with Auto Precharge + if (Addr[10] == 1'b1) begin + Auto_precharge[Ba] = 1'b1; + Count_precharge[Ba] = 0; + if (Read_enable == 1'b1) begin + Read_precharge[Ba] = 1'b1; + end else if (Write_enable == 1'b1) begin + Write_precharge[Ba] = 1'b1; + end + end + end + + // Read with Auto Precharge Calculation + // The device start internal precharge: + // 1. CAS Latency - 1 cycles before last burst + // and 2. Meet minimum tRAS requirement + // or 3. Interrupt by a Read or Write (with or without AutoPrecharge) + if ((Auto_precharge[0] == 1'b1) && (Read_precharge[0] == 1'b1)) begin + if ((($time - RAS_chk0 >= tRAS) && // Case 2 + ((Burst_length_1 == 1'b1 && Count_precharge[0] >= 1) || // Case 1 + (Burst_length_2 == 1'b1 && Count_precharge[0] >= 2) || + (Burst_length_4 == 1'b1 && Count_precharge[0] >= 4) || + (Burst_length_8 == 1'b1 && Count_precharge[0] >= 8))) || + (RW_interrupt_read[0] == 1'b1)) begin // Case 3 + Pc_b0 = 1'b1; + Act_b0 = 1'b0; + RP_chk0 = $time; + Auto_precharge[0] = 1'b0; + Read_precharge[0] = 1'b0; + RW_interrupt_read[0] = 1'b0; + if (Debug) $display ("at time %t NOTE : Start Internal Auto Precharge for Bank 0", $time); + end + end + if ((Auto_precharge[1] == 1'b1) && (Read_precharge[1] == 1'b1)) begin + if ((($time - RAS_chk1 >= tRAS) && + ((Burst_length_1 == 1'b1 && Count_precharge[1] >= 1) || + (Burst_length_2 == 1'b1 && Count_precharge[1] >= 2) || + (Burst_length_4 == 1'b1 && Count_precharge[1] >= 4) || + (Burst_length_8 == 1'b1 && Count_precharge[1] >= 8))) || + (RW_interrupt_read[1] == 1'b1)) begin + Pc_b1 = 1'b1; + Act_b1 = 1'b0; + RP_chk1 = $time; + Auto_precharge[1] = 1'b0; + Read_precharge[1] = 1'b0; + RW_interrupt_read[1] = 1'b0; + if (Debug) $display ("at time %t NOTE : Start Internal Auto Precharge for Bank 1", $time); + end + end + if ((Auto_precharge[2] == 1'b1) && (Read_precharge[2] == 1'b1)) begin + if ((($time - RAS_chk2 >= tRAS) && + ((Burst_length_1 == 1'b1 && Count_precharge[2] >= 1) || + (Burst_length_2 == 1'b1 && Count_precharge[2] >= 2) || + (Burst_length_4 == 1'b1 && Count_precharge[2] >= 4) || + (Burst_length_8 == 1'b1 && Count_precharge[2] >= 8))) || + (RW_interrupt_read[2] == 1'b1)) begin + Pc_b2 = 1'b1; + Act_b2 = 1'b0; + RP_chk2 = $time; + Auto_precharge[2] = 1'b0; + Read_precharge[2] = 1'b0; + RW_interrupt_read[2] = 1'b0; + if (Debug) $display ("at time %t NOTE : Start Internal Auto Precharge for Bank 2", $time); + end + end + if ((Auto_precharge[3] == 1'b1) && (Read_precharge[3] == 1'b1)) begin + if ((($time - RAS_chk3 >= tRAS) && + ((Burst_length_1 == 1'b1 && Count_precharge[3] >= 1) || + (Burst_length_2 == 1'b1 && Count_precharge[3] >= 2) || + (Burst_length_4 == 1'b1 && Count_precharge[3] >= 4) || + (Burst_length_8 == 1'b1 && Count_precharge[3] >= 8))) || + (RW_interrupt_read[3] == 1'b1)) begin + Pc_b3 = 1'b1; + Act_b3 = 1'b0; + RP_chk3 = $time; + Auto_precharge[3] = 1'b0; + Read_precharge[3] = 1'b0; + RW_interrupt_read[3] = 1'b0; + if (Debug) $display ("at time %t NOTE : Start Internal Auto Precharge for Bank 3", $time); + end + end + + // Internal Precharge or Bst + if (Command[0] == `SDRAM_PRECH) begin // Precharge terminate a read with same bank or all banks + if (Bank_precharge[0] == Bank || A10_precharge[0] == 1'b1) begin + if (Data_out_enable == 1'b1) begin + Data_out_enable = 1'b0; + end + end + end else if (Command[0] == `SDRAM_BST) begin // BST terminate a read to current bank + if (Data_out_enable == 1'b1) begin + Data_out_enable = 1'b0; + end + end + + if (Data_out_enable == 1'b0) begin + Dq_reg <= #tOH {data_bits{1'bz}}; + end + + // Detect Read or Write command + if (Command[0] == `READ || Command[0] == `READ_A) begin + Bank = Bank_addr[0]; + Col = Col_addr[0]; + Col_brst = Col_addr[0]; + if (Bank_addr[0] == 2'b00) begin + Row = B0_row_addr; + end else if (Bank_addr[0] == 2'b01) begin + Row = B1_row_addr; + end else if (Bank_addr[0] == 2'b10) begin + Row = B2_row_addr; + end else if (Bank_addr[0] == 2'b11) begin + Row = B3_row_addr; + end + Burst_counter = 0; + Data_in_enable = 1'b0; + Data_out_enable = 1'b1; + end else if (Command[0] == `SDRAM_WRITE || Command[0] == `WRITE_A) begin + Bank = Bank_addr[0]; + Col = Col_addr[0]; + Col_brst = Col_addr[0]; + if (Bank_addr[0] == 2'b00) begin + Row = B0_row_addr; + end else if (Bank_addr[0] == 2'b01) begin + Row = B1_row_addr; + end else if (Bank_addr[0] == 2'b10) begin + Row = B2_row_addr; + end else if (Bank_addr[0] == 2'b11) begin + Row = B3_row_addr; + end + Burst_counter = 0; + Data_in_enable = 1'b1; + Data_out_enable = 1'b0; + end + + // DQ buffer (Driver/Receiver) + if (Data_in_enable == 1'b1) begin // Writing Data to Memory + // Array buffer + if (Bank == 2'b00) Dq_dqm [15 : 0] = Bank0 [{Row, Col}]; + if (Bank == 2'b01) Dq_dqm [15 : 0] = Bank1 [{Row, Col}]; + if (Bank == 2'b10) Dq_dqm [15 : 0] = Bank2 [{Row, Col}]; + if (Bank == 2'b11) Dq_dqm [15 : 0] = Bank3 [{Row, Col}]; + // Dqm operation + if (Dqm[0] == 1'b0) Dq_dqm [ 7 : 0] = Dq [ 7 : 0]; + // Write to memory + if (Bank == 2'b00) Bank0 [{Row, Col}] = Dq_dqm [15 : 0]; + if (Bank == 2'b01) Bank1 [{Row, Col}] = Dq_dqm [15 : 0]; + if (Bank == 2'b10) Bank2 [{Row, Col}] = Dq_dqm [15 : 0]; + if (Bank == 2'b11) Bank3 [{Row, Col}] = Dq_dqm [15 : 0]; + // Output result + if (Dqm == 1'b1) begin + if (Debug) $display("at time %t WRITE: Bank = %d Row = %d, Col = %d, Data = Hi-Z due to DQM", $time, Bank, Row, Col); + end else begin + if (Debug) $display("at time %t WRITE: Bank = %d Row = %d, Col = %d, Data = %h, Dqm = %b", $time, Bank, Row, Col, Dq_dqm, Dqm); + // Record tWR time and reset counter + WR_chk [Bank] = $time; + WR_counter [Bank] = 0; + end + // Advance burst counter subroutine + #tHZ Burst; + end else if (Data_out_enable == 1'b1) begin // Reading Data from Memory + // Array buffer + if (Bank == 2'b00) Dq_dqm [15 : 0] = Bank0 [{Row, Col}]; + if (Bank == 2'b01) Dq_dqm [15 : 0] = Bank1 [{Row, Col}]; + if (Bank == 2'b10) Dq_dqm [15 : 0] = Bank2 [{Row, Col}]; + if (Bank == 2'b11) Dq_dqm [15 : 0] = Bank3 [{Row, Col}]; + // Dqm operation + if (Dqm_reg0[0] == 1'b1) Dq_dqm [ 7 : 0] = 8'bz; + // Display result + Dq_reg [15 : 0] = #tAC Dq_dqm [15 : 0]; + if (Dqm_reg0 == 1'b1) begin + if (Debug) $display("at time %t READ : Bank = %d Row = %d, Col = %d, Data = Hi-Z due to DQM", $time, Bank, Row, Col); + end else begin + if (Debug) $display("at time %t READ : Bank = %d Row = %d, Col = %d, Data = %h, Dqm = %b", $time, Bank, Row, Col, Dq_reg, Dqm_reg0); + end + // Advance burst counter subroutine + Burst; + end + end + + // Write with Auto Precharge Calculation + // The device start internal precharge: + // 1. tWR Clock after last burst + // and 2. Meet minimum tRAS requirement + // or 3. Interrupt by a Read or Write (with or without AutoPrecharge) + always @ (WR_counter[0]) begin + if ((Auto_precharge[0] == 1'b1) && (Write_precharge[0] == 1'b1)) begin + if ((($time - RAS_chk0 >= tRAS) && // Case 2 + (((Burst_length_1 == 1'b1 || Write_burst_mode == 1'b1) && Count_precharge [0] >= 1) || // Case 1 + (Burst_length_2 == 1'b1 && Count_precharge [0] >= 2) || + (Burst_length_4 == 1'b1 && Count_precharge [0] >= 4) || + (Burst_length_8 == 1'b1 && Count_precharge [0] >= 8))) || + (RW_interrupt_write[0] == 1'b1 && WR_counter[0] >= 2)) begin // Case 3 (stop count when interrupt) + Auto_precharge[0] = 1'b0; + Write_precharge[0] = 1'b0; + RW_interrupt_write[0] = 1'b0; + #tWRa; // Wait for tWR + Pc_b0 = 1'b1; + Act_b0 = 1'b0; + RP_chk0 = $time; + if (Debug) $display ("at time %t NOTE : Start Internal Auto Precharge for Bank 0", $time); + end + end + end + always @ (WR_counter[1]) begin + if ((Auto_precharge[1] == 1'b1) && (Write_precharge[1] == 1'b1)) begin + if ((($time - RAS_chk1 >= tRAS) && + (((Burst_length_1 == 1'b1 || Write_burst_mode == 1'b1) && Count_precharge [1] >= 1) || + (Burst_length_2 == 1'b1 && Count_precharge [1] >= 2) || + (Burst_length_4 == 1'b1 && Count_precharge [1] >= 4) || + (Burst_length_8 == 1'b1 && Count_precharge [1] >= 8))) || + (RW_interrupt_write[1] == 1'b1 && WR_counter[1] >= 2)) begin + Auto_precharge[1] = 1'b0; + Write_precharge[1] = 1'b0; + RW_interrupt_write[1] = 1'b0; + #tWRa; // Wait for tWR + Pc_b1 = 1'b1; + Act_b1 = 1'b0; + RP_chk1 = $time; + if (Debug) $display ("at time %t NOTE : Start Internal Auto Precharge for Bank 1", $time); + end + end + end + always @ (WR_counter[2]) begin + if ((Auto_precharge[2] == 1'b1) && (Write_precharge[2] == 1'b1)) begin + if ((($time - RAS_chk2 >= tRAS) && + (((Burst_length_1 == 1'b1 || Write_burst_mode == 1'b1) && Count_precharge [2] >= 1) || + (Burst_length_2 == 1'b1 && Count_precharge [2] >= 2) || + (Burst_length_4 == 1'b1 && Count_precharge [2] >= 4) || + (Burst_length_8 == 1'b1 && Count_precharge [2] >= 8))) || + (RW_interrupt_write[2] == 1'b1 && WR_counter[2] >= 2)) begin + Auto_precharge[2] = 1'b0; + Write_precharge[2] = 1'b0; + RW_interrupt_write[2] = 1'b0; + #tWRa; // Wait for tWR + Pc_b2 = 1'b1; + Act_b2 = 1'b0; + RP_chk2 = $time; + if (Debug) $display ("at time %t NOTE : Start Internal Auto Precharge for Bank 2", $time); + end + end + end + always @ (WR_counter[3]) begin + if ((Auto_precharge[3] == 1'b1) && (Write_precharge[3] == 1'b1)) begin + if ((($time - RAS_chk3 >= tRAS) && + (((Burst_length_1 == 1'b1 || Write_burst_mode == 1'b1) && Count_precharge [3] >= 1) || + (Burst_length_2 == 1'b1 && Count_precharge [3] >= 2) || + (Burst_length_4 == 1'b1 && Count_precharge [3] >= 4) || + (Burst_length_8 == 1'b1 && Count_precharge [3] >= 8))) || + (RW_interrupt_write[3] == 1'b1 && WR_counter[3] >= 2)) begin + Auto_precharge[3] = 1'b0; + Write_precharge[3] = 1'b0; + RW_interrupt_write[3] = 1'b0; + #tWRa; // Wait for tWR + Pc_b3 = 1'b1; + Act_b3 = 1'b0; + RP_chk3 = $time; + if (Debug) $display ("at time %t NOTE : Start Internal Auto Precharge for Bank 3", $time); + end + end + end + + task Burst; + begin + // Advance Burst Counter + Burst_counter = Burst_counter + 1; + + // Burst Type + if (Mode_reg[3] == 1'b0) begin // Sequential Burst + Col_temp = Col + 1; + end else if (Mode_reg[3] == 1'b1) begin // Interleaved Burst + Col_temp[2] = Burst_counter[2] ^ Col_brst[2]; + Col_temp[1] = Burst_counter[1] ^ Col_brst[1]; + Col_temp[0] = Burst_counter[0] ^ Col_brst[0]; + end + + // Burst Length + if (Burst_length_2) begin // Burst Length = 2 + Col [0] = Col_temp [0]; + end else if (Burst_length_4) begin // Burst Length = 4 + Col [1 : 0] = Col_temp [1 : 0]; + end else if (Burst_length_8) begin // Burst Length = 8 + Col [2 : 0] = Col_temp [2 : 0]; + end else begin // Burst Length = FULL + Col = Col_temp; + end + + // Burst Read Single Write + if (Write_burst_mode == 1'b1) begin + Data_in_enable = 1'b0; + end + + // Data Counter + if (Burst_length_1 == 1'b1) begin + if (Burst_counter >= 1) begin + Data_in_enable = 1'b0; + Data_out_enable = 1'b0; + end + end else if (Burst_length_2 == 1'b1) begin + if (Burst_counter >= 2) begin + Data_in_enable = 1'b0; + Data_out_enable = 1'b0; + end + end else if (Burst_length_4 == 1'b1) begin + if (Burst_counter >= 4) begin + Data_in_enable = 1'b0; + Data_out_enable = 1'b0; + end + end else if (Burst_length_8 == 1'b1) begin + if (Burst_counter >= 8) begin + Data_in_enable = 1'b0; + Data_out_enable = 1'b0; + end + end + end + endtask + + // Timing Parameters for -75 (PC133) and CAS Latency = 2 + specify + specparam + tAH = 0.8, // Addr, Ba Hold Time + tAS = 1.5, // Addr, Ba Setup Time + tCH = 2.5, // Clock High-Level Width + tCL = 2.5, // Clock Low-Level Width + tCK = 10, // Clock Cycle Time + tDH = 0.8, // Data-in Hold Time + tDS = 1.5, // Data-in Setup Time + tCKH = 0.8, // CKE Hold Time + tCKS = 1.5, // CKE Setup Time + tCMH = 0.8, // CS#, RAS#, CAS#, WE#, DQM# Hold Time + tCMS = 1.5; // CS#, RAS#, CAS#, WE#, DQM# Setup Time + $width (posedge Clk, tCH); + $width (negedge Clk, tCL); + $period (negedge Clk, tCK); + $period (posedge Clk, tCK); + $setuphold(posedge Clk, Cke, tCKS, tCKH); + $setuphold(posedge Clk, Cs_n, tCMS, tCMH); + $setuphold(posedge Clk, Cas_n, tCMS, tCMH); + $setuphold(posedge Clk, Ras_n, tCMS, tCMH); + $setuphold(posedge Clk, We_n, tCMS, tCMH); + $setuphold(posedge Clk, Addr, tAS, tAH); + $setuphold(posedge Clk, Ba, tAS, tAH); + $setuphold(posedge Clk, Dqm, tCMS, tCMH); + $setuphold(posedge Dq_chk, Dq, tDS, tDH); + endspecify + +endmodule + diff --git a/lib/common/Driver/SDRAM_driver/synth/constraints/sdrc_synth.sdc b/lib/common/Driver/SDRAM_driver/synth/constraints/sdrc_synth.sdc new file mode 100644 index 0000000..c5203bc --- /dev/null +++ b/lib/common/Driver/SDRAM_driver/synth/constraints/sdrc_synth.sdc @@ -0,0 +1,107 @@ +# Syntheis command format +#"-from" objects must be of type clock (c:), port (p:), inst (i:), or pin (t:) +# +#166MHz - Application CLOCK +#set APP_CLK_PER 6.0 +#set APP_CLK_HALF_PER [expr APP_CLK_PER] + + +#100MHz - SDRAM Clock +#set SDR_CLK_PER 10.0 +#set SDI_CLK_HALF_PER [expr $SDR_CLK_PERR/2] + + +#################################### +# Clear Application Clock : 200Mhz +#################################### + +create_clock -name wb_clk_i -period 6 -waveform {0 3} p:wb_clk_i +#set_clock_uncertainty -max 0.2 [get_clocks wb_clk_i] +#set_clock_uncertainty -min 0.1 [get_clocks wb_clk_i] +#set_clock_latency 2.0 [get_clocks wb_clk_i] + +######################################## +# Create SDRAM Clock to 100Mhz +######################################## +create_clock -name sdram_clk -period 10 -waveform {0 5} p:sdram_clk +#set_clock_uncertainty -max 0.2 [get_clocks sdram_clk] +#set_clock_uncertainty -min 0.1 [get_clocks sdram_clk] +#set_clock_latency 2.0 [get_clocks sdram_clk] + + +########################################### +# Set false path between application and SDRAM Clock +########################################## +set_false_path -from c:wb_clk_i -to c:sdram_clk +set_false_path -to c:wb_clk_i -from c:sdram_clk + + +######################################## +# Set false path through reset +######################################## +set_false_path -from p:wb_rst_i +set_false_path -from p:sdram_resetn + + +######################################## +# Set False path to all the configuration input +######################################## + +#set_false_path -from p:{cfg_colbits[*] cfg_req_depth[*] cfg_sdr_cas[*]} +#set_false_path -from p:{cfg_sdr_en cfg_sdr_mode_reg[*] cfg_sdr_rfmax[*]] +#set_false_path -from p:{cfg_sdr_rfsh[*] cfg_sdr_tras_d[*] cfg_sdr_trcar_d[*]} +#set_false_path -from p:{cfg_sdr_trcd_d[*] cfg_sdr_trp_d[*] cfg_sdr_twr_d[*]} +#set_false_path -from p:cfg_sdr_width[*] + + +######################################## +# Application Port Input Contraints +# Since Application Signal will be internally terminated and +# there is will not be any additional FPGA pad delay of 3ns. +# So input delay constraint changed form 3ns to 0ns +# +####################################### +#set_input_delay 3 -max [ wb_stb_i wb_addr_i wb_we_i wb_dat_i wb_sel_i wb_cyc_i wb_cti_i] -clock wb_clk_i +set_input_delay 0 -max { wb_stb_i wb_addr_i[*] wb_we_i wb_dat_i[*] wb_sel_i[*] wb_cyc_i wb_cti_i[*]} -clock wb_clk_i +set_input_delay 0.5 -min { wb_stb_i wb_addr_i[*] wb_we_i wb_dat_i[*] wb_sel_i[*] wb_cyc_i wb_cti_i[*]} -clock wb_clk_i + + +######################################## +# Application Port Output Contraints +# Since Application Signal will be internally terminstated and +# there will not be addiitional FPGA pad delay of 3ns. +# So output delat contraints are changed from 3ns to 0ns +####################################### + +#set_output_delay 3 -max [ wb_ack_o wb_dat_o ] -clock wb_clk_i +set_output_delay 0 -max wb_ack_o -clock wb_clk_i +set_output_delay 3 -max {wb_dat_o[*]} -clock wb_clk_i +set_output_delay 0.5 -min wb_ack_o -clock wb_clk_i +set_output_delay 0.5 -min {wb_dat_o[*]} -clock wb_clk_i + + + +####################################### +# SDRAM Input Contraints +# 10 - 2 = 8ns +####################################### + +set_input_delay 5 -max {sdr_dq[*]} -clock sdram_clk +set_input_delay 0.5 -min {sdr_dq[*]} -clock sdram_clk + + +####################################### +# Set the SDRAM Output delay constraints +####################################### + +set_output_delay 5 -max { sdr_cs_n sdr_cke sdr_ras_n sdr_cas_n sdr_we_n sdr_dqm[*] sdr_ba[*] sdr_addr[*] sdr_dq[*] } -clock sdram_clk +set_output_delay -2 -min { sdr_cs_n sdr_cke sdr_ras_n sdr_cas_n sdr_we_n sdr_dqm[*] sdr_ba[*] sdr_addr[*] sdr_dq[*] } -clock sdram_clk + + + +######################################## +# Misc +######################################### + +set_output_delay 5 -max { sdr_init_done } -clock sdram_clk +set_output_delay -2 -min { sdr_init_done } -clock sdram_clk \ No newline at end of file diff --git a/lib/common/Driver/SDRAM_driver/synth/constraints/sdrc_top.sdc b/lib/common/Driver/SDRAM_driver/synth/constraints/sdrc_top.sdc new file mode 100644 index 0000000..713d189 --- /dev/null +++ b/lib/common/Driver/SDRAM_driver/synth/constraints/sdrc_top.sdc @@ -0,0 +1,187 @@ +# Top Level Design Parameters + +# Clocks + +create_clock -period 6.000000 -waveform {0.000000 3.000000} wb_clk_i +create_clock -period 10.000000 -waveform {0.000000 5.000000} sdram_clk + +# False Paths Between Clocks + + +# False Path Constraints + +set_false_path -from {wb_rst_i} -to {*} +set_false_path -from {sdram_resetn} -to {*} + +# Maximum Delay Constraints + + +# Multicycle Constraints + + +# Virtual Clocks +# Output Load Constraints +# Driving Cell Constraints +# Wire Loads +# set_wire_load_mode top + +# Other Constraints +set_input_delay 0.000 -clock {wb_clk_i} {wb_stb_i} +set_output_delay 0.000 -clock {wb_clk_i} {wb_ack_o} +set_input_delay 0.000 -clock {wb_clk_i} {wb_addr_i[0]} +set_input_delay 0.000 -clock {wb_clk_i} {wb_addr_i[1]} +set_input_delay 0.000 -clock {wb_clk_i} {wb_addr_i[2]} +set_input_delay 0.000 -clock {wb_clk_i} {wb_addr_i[3]} +set_input_delay 0.000 -clock {wb_clk_i} {wb_addr_i[4]} +set_input_delay 0.000 -clock {wb_clk_i} {wb_addr_i[5]} +set_input_delay 0.000 -clock {wb_clk_i} {wb_addr_i[6]} +set_input_delay 0.000 -clock {wb_clk_i} {wb_addr_i[7]} +set_input_delay 0.000 -clock {wb_clk_i} {wb_addr_i[8]} +set_input_delay 0.000 -clock {wb_clk_i} {wb_addr_i[9]} +set_input_delay 0.000 -clock {wb_clk_i} {wb_addr_i[10]} +set_input_delay 0.000 -clock {wb_clk_i} {wb_addr_i[11]} +set_input_delay 0.000 -clock {wb_clk_i} {wb_addr_i[12]} +set_input_delay 0.000 -clock {wb_clk_i} {wb_addr_i[13]} +set_input_delay 0.000 -clock {wb_clk_i} {wb_addr_i[14]} +set_input_delay 0.000 -clock {wb_clk_i} {wb_addr_i[15]} +set_input_delay 0.000 -clock {wb_clk_i} {wb_addr_i[16]} +set_input_delay 0.000 -clock {wb_clk_i} {wb_addr_i[17]} +set_input_delay 0.000 -clock {wb_clk_i} {wb_addr_i[18]} +set_input_delay 0.000 -clock {wb_clk_i} {wb_addr_i[19]} +set_input_delay 0.000 -clock {wb_clk_i} {wb_addr_i[20]} +set_input_delay 0.000 -clock {wb_clk_i} {wb_addr_i[21]} +set_input_delay 0.000 -clock {wb_clk_i} {wb_addr_i[22]} +set_input_delay 0.000 -clock {wb_clk_i} {wb_addr_i[23]} +set_input_delay 0.000 -clock {wb_clk_i} {wb_addr_i[24]} +set_input_delay 0.000 -clock {wb_clk_i} {wb_addr_i[25]} +set_input_delay 0.000 -clock {wb_clk_i} {wb_addr_i[26]} +set_input_delay 0.000 -clock {wb_clk_i} {wb_addr_i[27]} +set_input_delay 0.000 -clock {wb_clk_i} {wb_addr_i[28]} +set_input_delay 0.000 -clock {wb_clk_i} {wb_addr_i[29]} +set_input_delay 0.000 -clock {wb_clk_i} {wb_we_i} +set_input_delay 0.000 -clock {wb_clk_i} {wb_dat_i[0]} +set_input_delay 0.000 -clock {wb_clk_i} {wb_dat_i[1]} +set_input_delay 0.000 -clock {wb_clk_i} {wb_dat_i[2]} +set_input_delay 0.000 -clock {wb_clk_i} {wb_dat_i[3]} +set_input_delay 0.000 -clock {wb_clk_i} {wb_dat_i[4]} +set_input_delay 0.000 -clock {wb_clk_i} {wb_dat_i[5]} +set_input_delay 0.000 -clock {wb_clk_i} {wb_dat_i[6]} +set_input_delay 0.000 -clock {wb_clk_i} {wb_dat_i[7]} +set_input_delay 0.000 -clock {wb_clk_i} {wb_dat_i[8]} +set_input_delay 0.000 -clock {wb_clk_i} {wb_dat_i[9]} +set_input_delay 0.000 -clock {wb_clk_i} {wb_dat_i[10]} +set_input_delay 0.000 -clock {wb_clk_i} {wb_dat_i[11]} +set_input_delay 0.000 -clock {wb_clk_i} {wb_dat_i[12]} +set_input_delay 0.000 -clock {wb_clk_i} {wb_dat_i[13]} +set_input_delay 0.000 -clock {wb_clk_i} {wb_dat_i[14]} +set_input_delay 0.000 -clock {wb_clk_i} {wb_dat_i[15]} +set_input_delay 0.000 -clock {wb_clk_i} {wb_dat_i[16]} +set_input_delay 0.000 -clock {wb_clk_i} {wb_dat_i[17]} +set_input_delay 0.000 -clock {wb_clk_i} {wb_dat_i[18]} +set_input_delay 0.000 -clock {wb_clk_i} {wb_dat_i[19]} +set_input_delay 0.000 -clock {wb_clk_i} {wb_dat_i[20]} +set_input_delay 0.000 -clock {wb_clk_i} {wb_dat_i[21]} +set_input_delay 0.000 -clock {wb_clk_i} {wb_dat_i[22]} +set_input_delay 0.000 -clock {wb_clk_i} {wb_dat_i[23]} +set_input_delay 0.000 -clock {wb_clk_i} {wb_dat_i[24]} +set_input_delay 0.000 -clock {wb_clk_i} {wb_dat_i[25]} +set_input_delay 0.000 -clock {wb_clk_i} {wb_dat_i[26]} +set_input_delay 0.000 -clock {wb_clk_i} {wb_dat_i[27]} +set_input_delay 0.000 -clock {wb_clk_i} {wb_dat_i[28]} +set_input_delay 0.000 -clock {wb_clk_i} {wb_dat_i[29]} +set_input_delay 0.000 -clock {wb_clk_i} {wb_dat_i[30]} +set_input_delay 0.000 -clock {wb_clk_i} {wb_dat_i[31]} +set_input_delay 0.000 -clock {wb_clk_i} {wb_sel_i[0]} +set_input_delay 0.000 -clock {wb_clk_i} {wb_sel_i[1]} +set_input_delay 0.000 -clock {wb_clk_i} {wb_sel_i[2]} +set_input_delay 0.000 -clock {wb_clk_i} {wb_sel_i[3]} +set_output_delay 3.000 -clock {wb_clk_i} {wb_dat_o[0]} +set_output_delay 3.000 -clock {wb_clk_i} {wb_dat_o[1]} +set_output_delay 3.000 -clock {wb_clk_i} {wb_dat_o[2]} +set_output_delay 3.000 -clock {wb_clk_i} {wb_dat_o[3]} +set_output_delay 3.000 -clock {wb_clk_i} {wb_dat_o[4]} +set_output_delay 3.000 -clock {wb_clk_i} {wb_dat_o[5]} +set_output_delay 3.000 -clock {wb_clk_i} {wb_dat_o[6]} +set_output_delay 3.000 -clock {wb_clk_i} {wb_dat_o[7]} +set_output_delay 3.000 -clock {wb_clk_i} {wb_dat_o[8]} +set_output_delay 3.000 -clock {wb_clk_i} {wb_dat_o[9]} +set_output_delay 3.000 -clock {wb_clk_i} {wb_dat_o[10]} +set_output_delay 3.000 -clock {wb_clk_i} {wb_dat_o[11]} +set_output_delay 3.000 -clock {wb_clk_i} {wb_dat_o[12]} +set_output_delay 3.000 -clock {wb_clk_i} {wb_dat_o[13]} +set_output_delay 3.000 -clock {wb_clk_i} {wb_dat_o[14]} +set_output_delay 3.000 -clock {wb_clk_i} {wb_dat_o[15]} +set_output_delay 3.000 -clock {wb_clk_i} {wb_dat_o[16]} +set_output_delay 3.000 -clock {wb_clk_i} {wb_dat_o[17]} +set_output_delay 3.000 -clock {wb_clk_i} {wb_dat_o[18]} +set_output_delay 3.000 -clock {wb_clk_i} {wb_dat_o[19]} +set_output_delay 3.000 -clock {wb_clk_i} {wb_dat_o[20]} +set_output_delay 3.000 -clock {wb_clk_i} {wb_dat_o[21]} +set_output_delay 3.000 -clock {wb_clk_i} {wb_dat_o[22]} +set_output_delay 3.000 -clock {wb_clk_i} {wb_dat_o[23]} +set_output_delay 3.000 -clock {wb_clk_i} {wb_dat_o[24]} +set_output_delay 3.000 -clock {wb_clk_i} {wb_dat_o[25]} +set_output_delay 3.000 -clock {wb_clk_i} {wb_dat_o[26]} +set_output_delay 3.000 -clock {wb_clk_i} {wb_dat_o[27]} +set_output_delay 3.000 -clock {wb_clk_i} {wb_dat_o[28]} +set_output_delay 3.000 -clock {wb_clk_i} {wb_dat_o[29]} +set_output_delay 3.000 -clock {wb_clk_i} {wb_dat_o[30]} +set_output_delay 3.000 -clock {wb_clk_i} {wb_dat_o[31]} +set_input_delay 0.000 -clock {wb_clk_i} {wb_cyc_i} +set_input_delay 0.000 -clock {wb_clk_i} {wb_cti_i[0]} +set_input_delay 0.000 -clock {wb_clk_i} {wb_cti_i[1]} +set_input_delay 0.000 -clock {wb_clk_i} {wb_cti_i[2]} +set_output_delay 5.000 -clock {sdram_clk} {sdr_cs_n} +set_output_delay 5.000 -clock {sdram_clk} {sdr_cke} +set_output_delay 5.000 -clock {sdram_clk} {sdr_ras_n} +set_output_delay 5.000 -clock {sdram_clk} {sdr_cas_n} +set_output_delay 5.000 -clock {sdram_clk} {sdr_we_n} +set_output_delay 5.000 -clock {sdram_clk} {sdr_dqm[0]} +set_output_delay 5.000 -clock {sdram_clk} {sdr_dqm[1]} +set_output_delay 5.000 -clock {sdram_clk} {sdr_ba[0]} +set_output_delay 5.000 -clock {sdram_clk} {sdr_ba[1]} +set_output_delay 5.000 -clock {sdram_clk} {sdr_addr[0]} +set_output_delay 5.000 -clock {sdram_clk} {sdr_addr[1]} +set_output_delay 5.000 -clock {sdram_clk} {sdr_addr[2]} +set_output_delay 5.000 -clock {sdram_clk} {sdr_addr[3]} +set_output_delay 5.000 -clock {sdram_clk} {sdr_addr[4]} +set_output_delay 5.000 -clock {sdram_clk} {sdr_addr[5]} +set_output_delay 5.000 -clock {sdram_clk} {sdr_addr[6]} +set_output_delay 5.000 -clock {sdram_clk} {sdr_addr[7]} +set_output_delay 5.000 -clock {sdram_clk} {sdr_addr[8]} +set_output_delay 5.000 -clock {sdram_clk} {sdr_addr[9]} +set_output_delay 5.000 -clock {sdram_clk} {sdr_addr[10]} +set_output_delay 5.000 -clock {sdram_clk} {sdr_addr[11]} +set_output_delay 5.000 -clock {sdram_clk} {sdr_dq[0]} +set_input_delay 5.000 -clock {sdram_clk} {sdr_dq[0]} +set_output_delay 5.000 -clock {sdram_clk} {sdr_dq[1]} +set_input_delay 5.000 -clock {sdram_clk} {sdr_dq[1]} +set_output_delay 5.000 -clock {sdram_clk} {sdr_dq[2]} +set_input_delay 5.000 -clock {sdram_clk} {sdr_dq[2]} +set_output_delay 5.000 -clock {sdram_clk} {sdr_dq[3]} +set_input_delay 5.000 -clock {sdram_clk} {sdr_dq[3]} +set_output_delay 5.000 -clock {sdram_clk} {sdr_dq[4]} +set_input_delay 5.000 -clock {sdram_clk} {sdr_dq[4]} +set_output_delay 5.000 -clock {sdram_clk} {sdr_dq[5]} +set_input_delay 5.000 -clock {sdram_clk} {sdr_dq[5]} +set_output_delay 5.000 -clock {sdram_clk} {sdr_dq[6]} +set_input_delay 5.000 -clock {sdram_clk} {sdr_dq[6]} +set_output_delay 5.000 -clock {sdram_clk} {sdr_dq[7]} +set_input_delay 5.000 -clock {sdram_clk} {sdr_dq[7]} +set_output_delay 5.000 -clock {sdram_clk} {sdr_dq[8]} +set_input_delay 5.000 -clock {sdram_clk} {sdr_dq[8]} +set_output_delay 5.000 -clock {sdram_clk} {sdr_dq[9]} +set_input_delay 5.000 -clock {sdram_clk} {sdr_dq[9]} +set_output_delay 5.000 -clock {sdram_clk} {sdr_dq[10]} +set_input_delay 5.000 -clock {sdram_clk} {sdr_dq[10]} +set_output_delay 5.000 -clock {sdram_clk} {sdr_dq[11]} +set_input_delay 5.000 -clock {sdram_clk} {sdr_dq[11]} +set_output_delay 5.000 -clock {sdram_clk} {sdr_dq[12]} +set_input_delay 5.000 -clock {sdram_clk} {sdr_dq[12]} +set_output_delay 5.000 -clock {sdram_clk} {sdr_dq[13]} +set_input_delay 5.000 -clock {sdram_clk} {sdr_dq[13]} +set_output_delay 5.000 -clock {sdram_clk} {sdr_dq[14]} +set_input_delay 5.000 -clock {sdram_clk} {sdr_dq[14]} +set_output_delay 5.000 -clock {sdram_clk} {sdr_dq[15]} +set_input_delay 5.000 -clock {sdram_clk} {sdr_dq[15]} +set_output_delay 5.000 -clock {sdram_clk} {sdr_init_done} diff --git a/lib/common/Driver/SDRAM_driver/tb/tb_core.sv b/lib/common/Driver/SDRAM_driver/tb/tb_core.sv new file mode 100644 index 0000000..891f30b --- /dev/null +++ b/lib/common/Driver/SDRAM_driver/tb/tb_core.sv @@ -0,0 +1,535 @@ +////////////////////////////////////////////////////////////////////// +//// //// +//// //// +//// This file is part of the SDRAM Controller project //// +//// http://www.opencores.org/cores/sdr_ctrl/ //// +//// //// +//// Description //// +//// SDRAM CTRL definitions. //// +//// //// +//// To Do: //// +//// nothing //// +// Version :0.1 - Test Bench automation is improvised with //// +// seperate data,address,burst length fifo. //// +// Now user can create different write and //// +// read sequence //// +//// //// +//// Author(s): //// +//// - Dinesh Annayya, dinesha@opencores.org //// +//// //// +////////////////////////////////////////////////////////////////////// +//// //// +//// Copyright (C) 2000 Authors and OPENCORES.ORG //// +//// //// +//// This source file may be used and distributed without //// +//// restriction provided that this copyright statement is not //// +//// removed from the file and that any derivative work contains //// +//// the original copyright notice and the associated disclaimer. //// +//// //// +//// This source file is free software; you can redistribute it //// +//// and/or modify it under the terms of the GNU Lesser General //// +//// Public License as published by the Free Software Foundation; //// +//// either version 2.1 of the License, or (at your option) any //// +//// later version. //// +//// //// +//// This source is distributed in the hope that it will be //// +//// useful, but WITHOUT ANY WARRANTY; without even the implied //// +//// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR //// +//// PURPOSE. See the GNU Lesser General Public License for more //// +//// details. //// +//// //// +//// You should have received a copy of the GNU Lesser General //// +//// Public License along with this source; if not, download it //// +//// from http://www.opencores.org/lgpl.shtml //// +//// //// +////////////////////////////////////////////////////////////////////// + +// This testbench stand-alone verify the sdram core + +`timescale 1ns/1ps + +module tb_core; + +parameter P_SYS = 10; // 100MHz + +// General +reg RESETN; +reg sdram_clk; + +initial sdram_clk = 0; + +always #(P_SYS/2) sdram_clk = !sdram_clk; + +parameter dw = 32; // data width +parameter tw = 8; // tag id width +parameter bl = 5; // burst_lenght_width + +//------------------------------------------- +// Application Interface bus +//------------------------------------------- +reg app_req ; // Application Request +reg [8:0] app_req_len ; // Burst Request length +wire app_req_ack ; // Application Request Ack +reg [25:0] app_req_addr ; // Application Address +reg app_req_wr_n ; // 1 -> Read, 0 -> Write +reg [dw-1:0] app_wr_data ; // Write Data +reg [dw/8-1:0] app_wr_en_n ; // Write Enable, Active Low +wire app_rd_valid ; // Read Valid +wire app_last_rd ; // Last Read Valid +wire app_last_wr ; // Last Write Valid +wire [dw-1:0] app_rd_data ; // Read Data + +//-------------------------------------------- +// SDRAM I/F +//-------------------------------------------- + +`ifdef SDR_32BIT + wire [31:0] Dq ; // SDRAM Read/Write Data Bus + wire [31:0] sdr_dout ; // SDRAM Data Out + wire [31:0] pad_sdr_din ; // SDRAM Data Input + wire [3:0] sdr_den_n ; // SDRAM Data Enable + wire [3:0] sdr_dqm ; // SDRAM DATA Mask +`elsif SDR_16BIT + wire [15:0] Dq ; // SDRAM Read/Write Data Bus + wire [15:0] sdr_dout ; // SDRAM Data Out + wire [15:0] pad_sdr_din ; // SDRAM Data Input + wire [1:0] sdr_den_n ; // SDRAM Data Enable + wire [1:0] sdr_dqm ; // SDRAM DATA Mask +`else + wire [7:0] Dq ; // SDRAM Read/Write Data Bus + wire [7:0] sdr_dout ; // SDRAM Data Out + wire [7:0] pad_sdr_din ; // SDRAM Data Input + wire [0:0] sdr_den_n ; // SDRAM Data Enable + wire [0:0] sdr_dqm ; // SDRAM DATA Mask +`endif + +wire [1:0] sdr_ba ; // SDRAM Bank Select +wire [12:0] sdr_addr ; // SDRAM ADRESS +wire sdr_init_done ; // SDRAM Init Done + +// to fix the sdram interface timing issue +wire #(2.0) sdram_clk_d = sdram_clk; +wire #(1.0) pad_clk = sdram_clk_d; + +`ifdef SDR_32BIT + + sdrc_core #(.SDR_DW(32),.SDR_BW(4)) u_dut( +`elsif SDR_16BIT + sdrc_core #(.SDR_DW(16),.SDR_BW(2)) u_dut( +`else // 8 BIT SDRAM + sdrc_core #(.SDR_DW(8),.SDR_BW(1)) u_dut( +`endif + // System + .clk (sdram_clk ), + .reset_n (RESETN ), + .pad_clk (pad_clk ), +`ifdef SDR_32BIT + .sdr_width (2'b00 ), // 32 BIT SDRAM +`elsif SDR_16BIT + .sdr_width (2'b01 ), // 16 BIT SDRAM +`else + .sdr_width (2'b10 ), // 8 BIT SDRAM +`endif + .cfg_colbits (2'b00 ), // 8 Bit Column Address + + +/* Request from app */ + .app_req (app_req ), // Transfer Request + .app_req_addr (app_req_addr ), // SDRAM Address + .app_req_len (app_req_len ), // Burst Length (in 16 bit words) + .app_req_wrap (1'b0 ), // Wrap mode request (xfr_len = 4) + .app_req_wr_n (app_req_wr_n ), // 0 => Write request, 1 => read req + .app_req_ack (app_req_ack ), // Request has been accepted + + .app_wr_data (app_wr_data ), + .app_wr_en_n (app_wr_en_n ), + .app_rd_data (app_rd_data ), + .app_last_rd (app_last_rd ), + .app_last_wr (app_last_wr ), + .app_rd_valid (app_rd_valid ), + .app_wr_next_req (app_wr_next_req ), + .app_req_dma_last (app_req ), + +/* Interface to SDRAMs */ + .sdr_cs_n (sdr_cs_n ), + .sdr_cke (sdr_cke ), + .sdr_ras_n (sdr_ras_n ), + .sdr_cas_n (sdr_cas_n ), + .sdr_we_n (sdr_we_n ), + .sdr_dqm (sdr_dqm ), + .sdr_ba (sdr_ba ), + .sdr_addr (sdr_addr ), + .pad_sdr_din (Dq ), + .sdr_dout (sdr_dout ), + .sdr_den_n (sdr_den_n ), + + /* Parameters */ + .sdr_init_done (sdr_init_done ), + .cfg_req_depth (2'h3 ), //how many req. buffer should hold + .cfg_sdr_en (1'b1 ), + .cfg_sdr_mode_reg (13'h033 ), + .cfg_sdr_tras_d (4'h4 ), + .cfg_sdr_trp_d (4'h2 ), + .cfg_sdr_trcd_d (4'h2 ), + .cfg_sdr_cas (3'h3 ), + .cfg_sdr_trcar_d (4'h7 ), + .cfg_sdr_twr_d (4'h1 ), + .cfg_sdr_rfsh (12'h100 ), // reduced from 12'hC35 + .cfg_sdr_rfmax (3'h6 ) + +); + + +`ifdef SDR_32BIT + assign Dq[7:0] = (sdr_den_n[0] == 1'b0) ? sdr_dout[7:0] : 8'hZZ; + assign Dq[15:8] = (sdr_den_n[1] == 1'b0) ? sdr_dout[15:8] : 8'hZZ; + assign Dq[23:16] = (sdr_den_n[2] == 1'b0) ? sdr_dout[23:16] : 8'hZZ; + assign Dq[31:24] = (sdr_den_n[3] == 1'b0) ? sdr_dout[31:24] : 8'hZZ; +mt48lc2m32b2 #(.data_bits(32)) u_sdram32 ( + .Dq (Dq ) , + .Addr (sdr_addr[10:0] ), + .Ba (sdr_ba ), + .Clk (sdram_clk_d ), + .Cke (sdr_cke ), + .Cs_n (sdr_cs_n ), + .Ras_n (sdr_ras_n ), + .Cas_n (sdr_cas_n ), + .We_n (sdr_we_n ), + .Dqm (sdr_dqm ) + ); + +`elsif SDR_16BIT + +assign Dq[7:0] = (sdr_den_n[0] == 1'b0) ? sdr_dout[7:0] : 8'hZZ; +assign Dq[15:8] = (sdr_den_n[1] == 1'b0) ? sdr_dout[15:8] : 8'hZZ; + + IS42VM16400K u_sdram16 ( + .dq (Dq ), + .addr (sdr_addr[11:0] ), + .ba (sdr_ba ), + .clk (sdram_clk_d ), + .cke (sdr_cke ), + .csb (sdr_cs_n ), + .rasb (sdr_ras_n ), + .casb (sdr_cas_n ), + .web (sdr_we_n ), + .dqm (sdr_dqm ) + ); +`else + +assign Dq[7:0] = (sdr_den_n[0] == 1'b0) ? sdr_dout[7:0] : 8'hZZ; + +mt48lc8m8a2 #(.data_bits(8)) u_sdram8 ( + .Dq (Dq ) , + .Addr (sdr_addr[11:0] ), + .Ba (sdr_ba ), + .Clk (sdram_clk_d ), + .Cke (sdr_cke ), + .Cs_n (sdr_cs_n ), + .Ras_n (sdr_ras_n ), + .Cas_n (sdr_cas_n ), + .We_n (sdr_we_n ), + .Dqm (sdr_dqm ) + ); +`endif + +//-------------------- +// data/address/burst length FIFO +//-------------------- +int dfifo[$]; // data fifo +int afifo[$]; // address fifo +int bfifo[$]; // Burst Length fifo + +reg [31:0] read_data; +reg [31:0] ErrCnt; +int k; +reg [31:0] StartAddr; +///////////////////////////////////////////////////////////////////////// +// Test Case +///////////////////////////////////////////////////////////////////////// + +initial begin //{ + ErrCnt = 0; + app_req_addr = 0; + app_wr_data = 0; + app_wr_en_n = 4'hF; + app_req_wr_n = 0; + app_req = 0; + app_req_len = 0; + + RESETN = 1'h1; + + #100 + // Applying reset + RESETN = 1'h0; + #10000; + // Releasing reset + RESETN = 1'h1; + #1000; + wait(u_dut.sdr_init_done == 1); + + #1000; + $display("-------------------------------------- "); + $display(" Case-1: Single Write/Read Case "); + $display("-------------------------------------- "); + + burst_write(32'h4_0000,8'h4); + #1000; + burst_read(); + + // Repeat one more time to analysis the + // SDRAM state change for same col/row address + $display("-------------------------------------- "); + $display(" Case-2: Repeat same transfer once again "); + $display("----------------------------------------"); + burst_write(32'h4_0000,8'h4); + burst_read(); + burst_write(32'h0040_0000,8'h5); + burst_read(); + $display("----------------------------------------"); + $display(" Case-3 Create a Page Cross Over "); + $display("----------------------------------------"); + burst_write(32'h0000_0FF0,8'h8); + burst_write(32'h0001_0FF4,8'hF); + burst_write(32'h0002_0FF8,8'hF); + burst_write(32'h0003_0FFC,8'hF); + burst_write(32'h0004_0FE0,8'hF); + burst_write(32'h0005_0FE4,8'hF); + burst_write(32'h0006_0FE8,8'hF); + burst_write(32'h0007_0FEC,8'hF); + burst_write(32'h0008_0FD0,8'hF); + burst_write(32'h0009_0FD4,8'hF); + burst_write(32'h000A_0FD8,8'hF); + burst_write(32'h000B_0FDC,8'hF); + burst_write(32'h000C_0FC0,8'hF); + burst_write(32'h000D_0FC4,8'hF); + burst_write(32'h000E_0FC8,8'hF); + burst_write(32'h000F_0FCC,8'hF); + burst_write(32'h0010_0FB0,8'hF); + burst_write(32'h0011_0FB4,8'hF); + burst_write(32'h0012_0FB8,8'hF); + burst_write(32'h0013_0FBC,8'hF); + burst_write(32'h0014_0FA0,8'hF); + burst_write(32'h0015_0FA4,8'hF); + burst_write(32'h0016_0FA8,8'hF); + burst_write(32'h0017_0FAC,8'hF); + burst_read(); + burst_read(); + burst_read(); + burst_read(); + burst_read(); + burst_read(); + burst_read(); + burst_read(); + burst_read(); + burst_read(); + burst_read(); + burst_read(); + burst_read(); + burst_read(); + burst_read(); + burst_read(); + burst_read(); + burst_read(); + burst_read(); + burst_read(); + burst_read(); + burst_read(); + burst_read(); + burst_read(); + + $display("----------------------------------------"); + $display(" Case:4 4 Write & 4 Read "); + $display("----------------------------------------"); + burst_write(32'h4_0000,8'h4); + burst_write(32'h5_0000,8'h5); + burst_write(32'h6_0000,8'h6); + burst_write(32'h7_0000,8'h7); + burst_read(); + burst_read(); + burst_read(); + burst_read(); + + $display("---------------------------------------"); + $display(" Case:5 24 Write & 24 Read With Different Bank and Row "); + $display("---------------------------------------"); + //---------------------------------------- + // Address Decodeing: + // with cfg_col bit configured as: 00 + // <12 Bit Row> <2 Bit Bank> <8 Bit Column> <2'b00> + // + burst_write({12'h000,2'b00,8'h00,2'b00},8'h4); // Row: 0 Bank : 0 + burst_write({12'h000,2'b01,8'h00,2'b00},8'h5); // Row: 0 Bank : 1 + burst_write({12'h000,2'b10,8'h00,2'b00},8'h6); // Row: 0 Bank : 2 + burst_write({12'h000,2'b11,8'h00,2'b00},8'h7); // Row: 0 Bank : 3 + burst_write({12'h001,2'b00,8'h00,2'b00},8'h4); // Row: 1 Bank : 0 + burst_write({12'h001,2'b01,8'h00,2'b00},8'h5); // Row: 1 Bank : 1 + burst_write({12'h001,2'b10,8'h00,2'b00},8'h6); // Row: 1 Bank : 2 + burst_write({12'h001,2'b11,8'h00,2'b00},8'h7); // Row: 1 Bank : 3 + burst_read(); + burst_read(); + burst_read(); + burst_read(); + burst_read(); + burst_read(); + burst_read(); + burst_read(); + + burst_write({12'h002,2'b00,8'h00,2'b00},8'h4); // Row: 2 Bank : 0 + burst_write({12'h002,2'b01,8'h00,2'b00},8'h5); // Row: 2 Bank : 1 + burst_write({12'h002,2'b10,8'h00,2'b00},8'h6); // Row: 2 Bank : 2 + burst_write({12'h002,2'b11,8'h00,2'b00},8'h7); // Row: 2 Bank : 3 + burst_write({12'h003,2'b00,8'h00,2'b00},8'h4); // Row: 3 Bank : 0 + burst_write({12'h003,2'b01,8'h00,2'b00},8'h5); // Row: 3 Bank : 1 + burst_write({12'h003,2'b10,8'h00,2'b00},8'h6); // Row: 3 Bank : 2 + burst_write({12'h003,2'b11,8'h00,2'b00},8'h7); // Row: 3 Bank : 3 + + burst_read(); + burst_read(); + burst_read(); + burst_read(); + burst_read(); + burst_read(); + burst_read(); + burst_read(); + + + burst_write({12'h002,2'b00,8'h00,2'b00},8'h4); // Row: 2 Bank : 0 + burst_write({12'h002,2'b01,8'h01,2'b00},8'h5); // Row: 2 Bank : 1 + burst_write({12'h002,2'b10,8'h02,2'b00},8'h6); // Row: 2 Bank : 2 + burst_write({12'h002,2'b11,8'h03,2'b00},8'h7); // Row: 2 Bank : 3 + burst_write({12'h003,2'b00,8'h04,2'b00},8'h4); // Row: 3 Bank : 0 + burst_write({12'h003,2'b01,8'h05,2'b00},8'h5); // Row: 3 Bank : 1 + burst_write({12'h003,2'b10,8'h06,2'b00},8'h6); // Row: 3 Bank : 2 + burst_write({12'h003,2'b11,8'h07,2'b00},8'h7); // Row: 3 Bank : 3 + + burst_read(); + burst_read(); + burst_read(); + burst_read(); + burst_read(); + burst_read(); + burst_read(); + burst_read(); + + $display("---------------------------------------------------"); + $display(" Case: 6 Random 2 write and 2 read random"); + $display("---------------------------------------------------"); + for(k=0; k < 20; k++) begin + StartAddr = $random & 32'h003FFFFF; + burst_write(StartAddr,($random & 8'h0f)+1); + #100; + + StartAddr = $random & 32'h003FFFFF; + burst_write(StartAddr,($random & 8'h0f)+1); + #100; + burst_read(); + #100; + burst_read(); + #100; + end + + + #10000; + + $display("###############################"); + if(ErrCnt == 0) + $display("STATUS: SDRAM Write/Read TEST PASSED"); + else + $display("ERROR: SDRAM Write/Read TEST FAILED"); + $display("###############################"); + + $finish; +end + + +task burst_write; +input [31:0] Address; +input [7:0] bl; +int i; +begin + afifo.push_back(Address); + bfifo.push_back(bl); + + @ (negedge sdram_clk); + app_req = 1; + app_wr_en_n = 0; + app_req_wr_n = 1'b0; + app_req_addr = Address[31:2]; + app_req_len = bl; + $display("Write Address: %x, Burst Size: %d",Address,bl); + + // wait for app_req_ack == 1 + do begin + @ (posedge sdram_clk); + end while(app_req_ack == 1'b0); + @ (negedge sdram_clk); + app_req = 0; + + for(i=0; i < bl; i++) begin + app_wr_data = $random & 32'hFFFFFFFF; + dfifo.push_back(app_wr_data); + + do begin + @ (posedge sdram_clk); + end while(app_wr_next_req == 1'b0); + @ (negedge sdram_clk); + + $display("Status: Burst-No: %d Write Address: %x WriteData: %x ",i,Address,app_wr_data); + end + app_req = 0; + app_wr_en_n = 'hx; + app_req_wr_n = 'hx; + app_req_addr = 'hx; + app_req_len = 'hx; + + +end +endtask + +task burst_read; +reg [31:0] Address; +reg [7:0] bl; + +int i,j; +reg [31:0] exp_data; +begin + + Address = afifo.pop_front(); + bl = bfifo.pop_front(); + + @ (negedge sdram_clk); + app_req = 1; + app_wr_en_n = 0; + app_req_wr_n = 1; + app_req_addr = Address[29:2]; + app_req_len = bl; + + // wait for app_req_ack == 1 + do begin + @ (posedge sdram_clk); + end while(app_req_ack == 1'b0); + @ (negedge sdram_clk); + app_req = 0; + app_wr_en_n = 'hx; + app_req_wr_n = 'hx; + app_req_addr = 'hx; + app_req_len = 'hx; + + for(j=0; j < bl; j++) begin + wait(app_rd_valid == 1); + exp_data = dfifo.pop_front(); // Exptected Read Data + if(app_rd_data !== exp_data) begin + $display("READ ERROR: Burst-No: %d Addr: %x Rxp: %x Exd: %x",j,Address+(j*2),app_rd_data,exp_data); + ErrCnt = ErrCnt+1; + end else begin + $display("READ STATUS: Burst-No: %d Addr: %x Rxd: %x",j,Address+(j*2),app_rd_data); + end + @ (posedge sdram_clk); + @ (negedge sdram_clk); + end +end +endtask + + +endmodule diff --git a/lib/common/Driver/SDRAM_driver/tb/tb_top.sv b/lib/common/Driver/SDRAM_driver/tb/tb_top.sv new file mode 100644 index 0000000..793d0d2 --- /dev/null +++ b/lib/common/Driver/SDRAM_driver/tb/tb_top.sv @@ -0,0 +1,500 @@ +////////////////////////////////////////////////////////////////////// +//// //// +//// //// +//// This file is part of the SDRAM Controller project //// +//// http://www.opencores.org/cores/sdr_ctrl/ //// +//// //// +//// Description //// +//// SDRAM CTRL definitions. //// +//// //// +//// To Do: //// +//// nothing //// +//// //// +// Version :0.1 - Test Bench automation is improvised with //// +// seperate data,address,burst length fifo. //// +// Now user can create different write and //// +// read sequence //// +// //// +//// Author(s): //// +//// - Dinesh Annayya, dinesha@opencores.org //// +//// //// +////////////////////////////////////////////////////////////////////// +//// //// +//// Copyright (C) 2000 Authors and OPENCORES.ORG //// +//// //// +//// This source file may be used and distributed without //// +//// restriction provided that this copyright statement is not //// +//// removed from the file and that any derivative work contains //// +//// the original copyright notice and the associated disclaimer. //// +//// //// +//// This source file is free software; you can redistribute it //// +//// and/or modify it under the terms of the GNU Lesser General //// +//// Public License as published by the Free Software Foundation; //// +//// either version 2.1 of the License, or (at your option) any //// +//// later version. //// +//// //// +//// This source is distributed in the hope that it will be //// +//// useful, but WITHOUT ANY WARRANTY; without even the implied //// +//// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR //// +//// PURPOSE. See the GNU Lesser General Public License for more //// +//// details. //// +//// //// +//// You should have received a copy of the GNU Lesser General //// +//// Public License along with this source; if not, download it //// +//// from http://www.opencores.org/lgpl.shtml //// +//// //// +////////////////////////////////////////////////////////////////////// + + +`timescale 1ns/1ps + +// This testbench verify with SDRAM TOP + +module tb_top; + +parameter P_SYS = 10; // 200MHz +parameter P_SDR = 20; // 100MHz + +// General +reg RESETN; +reg sdram_clk; +reg sys_clk; + +initial sys_clk = 0; +initial sdram_clk = 0; + +always #(P_SYS/2) sys_clk = !sys_clk; +always #(P_SDR/2) sdram_clk = !sdram_clk; + +parameter dw = 32; // data width +parameter tw = 8; // tag id width +parameter bl = 5; // burst_lenght_width + +//------------------------------------------- +// WISH BONE Interface +//------------------------------------------- +//-------------------------------------- +// Wish Bone Interface +// ------------------------------------- +reg wb_stb_i ; +wire wb_ack_o ; +reg [25:0] wb_addr_i ; +reg wb_we_i ; // 1 - Write, 0 - Read +reg [dw-1:0] wb_dat_i ; +reg [dw/8-1:0] wb_sel_i ; // Byte enable +wire [dw-1:0] wb_dat_o ; +reg wb_cyc_i ; +reg [2:0] wb_cti_i ; + + + +//-------------------------------------------- +// SDRAM I/F +//-------------------------------------------- + +`ifdef SDR_32BIT + wire [31:0] Dq ; // SDRAM Read/Write Data Bus + wire [3:0] sdr_dqm ; // SDRAM DATA Mask +`elsif SDR_16BIT + wire [15:0] Dq ; // SDRAM Read/Write Data Bus + wire [1:0] sdr_dqm ; // SDRAM DATA Mask +`else + wire [7:0] Dq ; // SDRAM Read/Write Data Bus + wire [0:0] sdr_dqm ; // SDRAM DATA Mask +`endif + +wire [1:0] sdr_ba ; // SDRAM Bank Select +wire [12:0] sdr_addr ; // SDRAM ADRESS +wire sdr_init_done ; // SDRAM Init Done + +// to fix the sdram interface timing issue +wire #(2.0) sdram_clk_d = sdram_clk; + +`ifdef SDR_32BIT + + sdrc_top #(.SDR_DW(32),.SDR_BW(4)) u_dut( +`elsif SDR_16BIT + sdrc_top #(.SDR_DW(16),.SDR_BW(2)) u_dut( +`else // 8 BIT SDRAM + sdrc_top #(.SDR_DW(8),.SDR_BW(1)) u_dut( +`endif + // System +`ifdef SDR_32BIT + .cfg_sdr_width (2'b00 ), // 32 BIT SDRAM +`elsif SDR_16BIT + .cfg_sdr_width (2'b01 ), // 16 BIT SDRAM +`else + .cfg_sdr_width (2'b10 ), // 8 BIT SDRAM +`endif + .cfg_colbits (2'b00 ), // 8 Bit Column Address + +/* WISH BONE */ + .wb_rst_i (!RESETN ), + .wb_clk_i (sys_clk ), + + .wb_stb_i (wb_stb_i ), + .wb_ack_o (wb_ack_o ), + .wb_addr_i (wb_addr_i ), + .wb_we_i (wb_we_i ), + .wb_dat_i (wb_dat_i ), + .wb_sel_i (wb_sel_i ), + .wb_dat_o (wb_dat_o ), + .wb_cyc_i (wb_cyc_i ), + .wb_cti_i (wb_cti_i ), + +/* Interface to SDRAMs */ + .sdram_clk (sdram_clk ), + .sdram_resetn (RESETN ), + .sdr_cs_n (sdr_cs_n ), + .sdr_cke (sdr_cke ), + .sdr_ras_n (sdr_ras_n ), + .sdr_cas_n (sdr_cas_n ), + .sdr_we_n (sdr_we_n ), + .sdr_dqm (sdr_dqm ), + .sdr_ba (sdr_ba ), + .sdr_addr (sdr_addr ), + .sdr_dq (Dq ), + + /* Parameters */ + .sdr_init_done (sdr_init_done ), + .cfg_req_depth (2'h3 ), //how many req. buffer should hold + .cfg_sdr_en (1'b1 ), + .cfg_sdr_mode_reg (13'h033 ), + .cfg_sdr_tras_d (4'h4 ), + .cfg_sdr_trp_d (4'h2 ), + .cfg_sdr_trcd_d (4'h2 ), + .cfg_sdr_cas (3'h3 ), + .cfg_sdr_trcar_d (4'h7 ), + .cfg_sdr_twr_d (4'h1 ), + .cfg_sdr_rfsh (12'h100 ), // reduced from 12'hC35 + .cfg_sdr_rfmax (3'h6 ) + +); + + +`ifdef SDR_32BIT +mt48lc2m32b2 #(.data_bits(32)) u_sdram32 ( + .Dq (Dq ) , + .Addr (sdr_addr[10:0] ), + .Ba (sdr_ba ), + .Clk (sdram_clk_d ), + .Cke (sdr_cke ), + .Cs_n (sdr_cs_n ), + .Ras_n (sdr_ras_n ), + .Cas_n (sdr_cas_n ), + .We_n (sdr_we_n ), + .Dqm (sdr_dqm ) + ); + +`elsif SDR_16BIT + + IS42VM16400K u_sdram16 ( + .dq (Dq ), + .addr (sdr_addr[11:0] ), + .ba (sdr_ba ), + .clk (sdram_clk_d ), + .cke (sdr_cke ), + .csb (sdr_cs_n ), + .rasb (sdr_ras_n ), + .casb (sdr_cas_n ), + .web (sdr_we_n ), + .dqm (sdr_dqm ) + ); +`else + + +mt48lc8m8a2 #(.data_bits(8)) u_sdram8 ( + .Dq (Dq ) , + .Addr (sdr_addr[11:0] ), + .Ba (sdr_ba ), + .Clk (sdram_clk_d ), + .Cke (sdr_cke ), + .Cs_n (sdr_cs_n ), + .Ras_n (sdr_ras_n ), + .Cas_n (sdr_cas_n ), + .We_n (sdr_we_n ), + .Dqm (sdr_dqm ) + ); +`endif + +//-------------------- +// data/address/burst length FIFO +//-------------------- +int dfifo[$]; // data fifo +int afifo[$]; // address fifo +int bfifo[$]; // Burst Length fifo + +reg [31:0] read_data; +reg [31:0] ErrCnt; +int k; +reg [31:0] StartAddr; +///////////////////////////////////////////////////////////////////////// +// Test Case +///////////////////////////////////////////////////////////////////////// + +initial begin //{ + ErrCnt = 0; + wb_addr_i = 0; + wb_dat_i = 0; + wb_sel_i = 4'h0; + wb_we_i = 0; + wb_stb_i = 0; + wb_cyc_i = 0; + + RESETN = 1'h1; + + #100 + // Applying reset + RESETN = 1'h0; + #10000; + // Releasing reset + RESETN = 1'h1; + #1000; + wait(u_dut.sdr_init_done == 1); + + #1000; + $display("-------------------------------------- "); + $display(" Case-1: Single Write/Read Case "); + $display("-------------------------------------- "); + + burst_write(32'h4_0000,8'h4); + #1000; + burst_read(); + + // Repeat one more time to analysis the + // SDRAM state change for same col/row address + $display("-------------------------------------- "); + $display(" Case-2: Repeat same transfer once again "); + $display("----------------------------------------"); + burst_write(32'h4_0000,8'h4); + burst_read(); + burst_write(32'h0040_0000,8'h5); + burst_read(); + $display("----------------------------------------"); + $display(" Case-3 Create a Page Cross Over "); + $display("----------------------------------------"); + burst_write(32'h0000_0FF0,8'h8); + burst_write(32'h0001_0FF4,8'hF); + burst_write(32'h0002_0FF8,8'hF); + burst_write(32'h0003_0FFC,8'hF); + burst_write(32'h0004_0FE0,8'hF); + burst_write(32'h0005_0FE4,8'hF); + burst_write(32'h0006_0FE8,8'hF); + burst_write(32'h0007_0FEC,8'hF); + burst_write(32'h0008_0FD0,8'hF); + burst_write(32'h0009_0FD4,8'hF); + burst_write(32'h000A_0FD8,8'hF); + burst_write(32'h000B_0FDC,8'hF); + burst_write(32'h000C_0FC0,8'hF); + burst_write(32'h000D_0FC4,8'hF); + burst_write(32'h000E_0FC8,8'hF); + burst_write(32'h000F_0FCC,8'hF); + burst_write(32'h0010_0FB0,8'hF); + burst_write(32'h0011_0FB4,8'hF); + burst_write(32'h0012_0FB8,8'hF); + burst_write(32'h0013_0FBC,8'hF); + burst_write(32'h0014_0FA0,8'hF); + burst_write(32'h0015_0FA4,8'hF); + burst_write(32'h0016_0FA8,8'hF); + burst_write(32'h0017_0FAC,8'hF); + burst_read(); + burst_read(); + burst_read(); + burst_read(); + burst_read(); + burst_read(); + burst_read(); + burst_read(); + burst_read(); + burst_read(); + burst_read(); + burst_read(); + burst_read(); + burst_read(); + burst_read(); + burst_read(); + burst_read(); + burst_read(); + burst_read(); + burst_read(); + burst_read(); + burst_read(); + burst_read(); + burst_read(); + + $display("----------------------------------------"); + $display(" Case:4 4 Write & 4 Read "); + $display("----------------------------------------"); + burst_write(32'h4_0000,8'h4); + burst_write(32'h5_0000,8'h5); + burst_write(32'h6_0000,8'h6); + burst_write(32'h7_0000,8'h7); + burst_read(); + burst_read(); + burst_read(); + burst_read(); + + $display("---------------------------------------"); + $display(" Case:5 24 Write & 24 Read With Different Bank and Row "); + $display("---------------------------------------"); + //---------------------------------------- + // Address Decodeing: + // with cfg_col bit configured as: 00 + // <12 Bit Row> <2 Bit Bank> <8 Bit Column> <2'b00> + // + burst_write({12'h000,2'b00,8'h00,2'b00},8'h4); // Row: 0 Bank : 0 + burst_write({12'h000,2'b01,8'h00,2'b00},8'h5); // Row: 0 Bank : 1 + burst_write({12'h000,2'b10,8'h00,2'b00},8'h6); // Row: 0 Bank : 2 + burst_write({12'h000,2'b11,8'h00,2'b00},8'h7); // Row: 0 Bank : 3 + burst_write({12'h001,2'b00,8'h00,2'b00},8'h4); // Row: 1 Bank : 0 + burst_write({12'h001,2'b01,8'h00,2'b00},8'h5); // Row: 1 Bank : 1 + burst_write({12'h001,2'b10,8'h00,2'b00},8'h6); // Row: 1 Bank : 2 + burst_write({12'h001,2'b11,8'h00,2'b00},8'h7); // Row: 1 Bank : 3 + burst_read(); + burst_read(); + burst_read(); + burst_read(); + burst_read(); + burst_read(); + burst_read(); + burst_read(); + + burst_write({12'h002,2'b00,8'h00,2'b00},8'h4); // Row: 2 Bank : 0 + burst_write({12'h002,2'b01,8'h00,2'b00},8'h5); // Row: 2 Bank : 1 + burst_write({12'h002,2'b10,8'h00,2'b00},8'h6); // Row: 2 Bank : 2 + burst_write({12'h002,2'b11,8'h00,2'b00},8'h7); // Row: 2 Bank : 3 + burst_write({12'h003,2'b00,8'h00,2'b00},8'h4); // Row: 3 Bank : 0 + burst_write({12'h003,2'b01,8'h00,2'b00},8'h5); // Row: 3 Bank : 1 + burst_write({12'h003,2'b10,8'h00,2'b00},8'h6); // Row: 3 Bank : 2 + burst_write({12'h003,2'b11,8'h00,2'b00},8'h7); // Row: 3 Bank : 3 + + burst_read(); + burst_read(); + burst_read(); + burst_read(); + burst_read(); + burst_read(); + burst_read(); + burst_read(); + + burst_write({12'h002,2'b00,8'h00,2'b00},8'h4); // Row: 2 Bank : 0 + burst_write({12'h002,2'b01,8'h01,2'b00},8'h5); // Row: 2 Bank : 1 + burst_write({12'h002,2'b10,8'h02,2'b00},8'h6); // Row: 2 Bank : 2 + burst_write({12'h002,2'b11,8'h03,2'b00},8'h7); // Row: 2 Bank : 3 + burst_write({12'h003,2'b00,8'h04,2'b00},8'h4); // Row: 3 Bank : 0 + burst_write({12'h003,2'b01,8'h05,2'b00},8'h5); // Row: 3 Bank : 1 + burst_write({12'h003,2'b10,8'h06,2'b00},8'h6); // Row: 3 Bank : 2 + burst_write({12'h003,2'b11,8'h07,2'b00},8'h7); // Row: 3 Bank : 3 + + burst_read(); + burst_read(); + burst_read(); + burst_read(); + burst_read(); + burst_read(); + burst_read(); + burst_read(); + $display("---------------------------------------------------"); + $display(" Case: 6 Random 2 write and 2 read random"); + $display("---------------------------------------------------"); + for(k=0; k < 20; k++) begin + StartAddr = $random & 32'h003FFFFF; + burst_write(StartAddr,($random & 8'h0f)+1); + #100; + + StartAddr = $random & 32'h003FFFFF; + burst_write(StartAddr,($random & 8'h0f)+1); + #100; + burst_read(); + #100; + burst_read(); + #100; + end + + #10000; + + $display("###############################"); + if(ErrCnt == 0) + $display("STATUS: SDRAM Write/Read TEST PASSED"); + else + $display("ERROR: SDRAM Write/Read TEST FAILED"); + $display("###############################"); + + $finish; +end + +task burst_write; +input [31:0] Address; +input [7:0] bl; +int i; +begin + afifo.push_back(Address); + bfifo.push_back(bl); + + @ (negedge sys_clk); + $display("Write Address: %x, Burst Size: %d",Address,bl); + + for(i=0; i < bl; i++) begin + wb_stb_i = 1; + wb_cyc_i = 1; + wb_we_i = 1; + wb_sel_i = 4'b1111; + wb_addr_i = Address[31:2]+i; + wb_dat_i = $random & 32'hFFFFFFFF; + dfifo.push_back(wb_dat_i); + + do begin + @ (posedge sys_clk); + end while(wb_ack_o == 1'b0); + @ (negedge sys_clk); + + $display("Status: Burst-No: %d Write Address: %x WriteData: %x ",i,wb_addr_i,wb_dat_i); + end + wb_stb_i = 0; + wb_cyc_i = 0; + wb_we_i = 'hx; + wb_sel_i = 'hx; + wb_addr_i = 'hx; + wb_dat_i = 'hx; +end +endtask + +task burst_read; +reg [31:0] Address; +reg [7:0] bl; + +int i,j; +reg [31:0] exp_data; +begin + + Address = afifo.pop_front(); + bl = bfifo.pop_front(); + @ (negedge sys_clk); + + for(j=0; j < bl; j++) begin + wb_stb_i = 1; + wb_cyc_i = 1; + wb_we_i = 0; + wb_addr_i = Address[31:2]+j; + + exp_data = dfifo.pop_front(); // Exptected Read Data + do begin + @ (posedge sys_clk); + end while(wb_ack_o == 1'b0); + if(wb_dat_o !== exp_data) begin + $display("READ ERROR: Burst-No: %d Addr: %x Rxp: %x Exd: %x",j,wb_addr_i,wb_dat_o,exp_data); + ErrCnt = ErrCnt+1; + end else begin + $display("READ STATUS: Burst-No: %d Addr: %x Rxd: %x",j,wb_addr_i,wb_dat_o); + end + @ (negedge sdram_clk); + end + wb_stb_i = 0; + wb_cyc_i = 0; + wb_we_i = 'hx; + wb_addr_i = 'hx; +end +endtask + + +endmodule diff --git a/lib/common/Driver/SDRAM_driver/top/sdrc_top.v b/lib/common/Driver/SDRAM_driver/top/sdrc_top.v new file mode 100644 index 0000000..077f688 --- /dev/null +++ b/lib/common/Driver/SDRAM_driver/top/sdrc_top.v @@ -0,0 +1,297 @@ +/********************************************************************* + + SDRAM Controller top File + + This file is part of the sdram controller project + http://www.opencores.org/cores/sdr_ctrl/ + + Description: SDRAM Controller Top Module. + Support 81/6/32 Bit SDRAM. + Column Address is Programmable + Bank Bit are 2 Bit + Row Bits are 12 Bits + + This block integrate following sub modules + + sdrc_core + SDRAM Controller file + wb2sdrc + This module transalate the bus protocl from wishbone to custome + sdram controller + + To Do: + nothing + + Author(s): Dinesh Annayya, dinesha@opencores.org + Version : 0.0 - 8th Jan 2012 + Initial version with 16/32 Bit SDRAM Support + : 0.1 - 24th Jan 2012 + 8 Bit SDRAM Support is added + 0.2 - 31st Jan 2012 + sdram_dq and sdram_pad_clk are internally generated + 0.3 - 26th April 2013 + Sdram Address witdh is increased from 12 to 13bits + + + Copyright (C) 2000 Authors and OPENCORES.ORG + + This source file may be used and distributed without + restriction provided that this copyright statement is not + removed from the file and that any derivative work contains + the original copyright notice and the associated disclaimer. + + This source file is free software; you can redistribute it + and/or modify it under the terms of the GNU Lesser General + Public License as published by the Free Software Foundation; + either version 2.1 of the License, or (at your option) any +later version. + + This source is distributed in the hope that it will be + useful, but WITHOUT ANY WARRANTY; without even the implied + warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + PURPOSE. See the GNU Lesser General Public License for more + details. + + You should have received a copy of the GNU Lesser General + Public License along with this source; if not, download it + from http://www.opencores.org/lgpl.shtml + +*******************************************************************/ + + +`include "sdrc_define.v" +module sdrc_top + ( + cfg_sdr_width , + cfg_colbits , + + // WB bus + wb_rst_i , + wb_clk_i , + + wb_stb_i , + wb_ack_o , + wb_addr_i , + wb_we_i , + wb_dat_i , + wb_sel_i , + wb_dat_o , + wb_cyc_i , + wb_cti_i , + + + /* Interface to SDRAMs */ + sdram_clk , + sdram_resetn , + sdr_cs_n , + sdr_cke , + sdr_ras_n , + sdr_cas_n , + sdr_we_n , + sdr_dqm , + sdr_ba , + sdr_addr , + sdr_dq , + + /* Parameters */ + sdr_init_done , + cfg_req_depth , //how many req. buffer should hold + cfg_sdr_en , + cfg_sdr_mode_reg , + cfg_sdr_tras_d , + cfg_sdr_trp_d , + cfg_sdr_trcd_d , + cfg_sdr_cas , + cfg_sdr_trcar_d , + cfg_sdr_twr_d , + cfg_sdr_rfsh , + cfg_sdr_rfmax + ); + +parameter APP_AW = 26; // Application Address Width +parameter APP_DW = 32; // Application Data Width +parameter APP_BW = 4; // Application Byte Width +parameter APP_RW = 9; // Application Request Width + +parameter SDR_DW = 16; // SDR Data Width +parameter SDR_BW = 2; // SDR Byte Width + +parameter dw = 32; // data width +parameter tw = 8; // tag id width +parameter bl = 9; // burst_lenght_width + +//----------------------------------------------- +// Global Variable +// ---------------------------------------------- +input sdram_clk ; // SDRAM Clock +input sdram_resetn ; // Reset Signal +input [1:0] cfg_sdr_width ; // 2'b00 - 32 Bit SDR, 2'b01 - 16 Bit SDR, 2'b1x - 8 Bit +input [1:0] cfg_colbits ; // 2'b00 - 8 Bit column address, + // 2'b01 - 9 Bit, 10 - 10 bit, 11 - 11Bits + +//-------------------------------------- +// Wish Bone Interface +// ------------------------------------- +input wb_rst_i ; +input wb_clk_i ; + +input wb_stb_i ; +output wb_ack_o ; +input [APP_AW-1:0] wb_addr_i ; +input wb_we_i ; // 1 - Write, 0 - Read +input [dw-1:0] wb_dat_i ; +input [dw/8-1:0] wb_sel_i ; // Byte enable +output [dw-1:0] wb_dat_o ; +input wb_cyc_i ; +input [2:0] wb_cti_i ; + +//------------------------------------------------ +// Interface to SDRAMs +//------------------------------------------------ +output sdr_cke ; // SDRAM CKE +output sdr_cs_n ; // SDRAM Chip Select +output sdr_ras_n ; // SDRAM ras +output sdr_cas_n ; // SDRAM cas +output sdr_we_n ; // SDRAM write enable +output [SDR_BW-1:0] sdr_dqm ; // SDRAM Data Mask +output [1:0] sdr_ba ; // SDRAM Bank Enable +output [12:0] sdr_addr ; // SDRAM Address +inout [SDR_DW-1:0] sdr_dq ; // SDRA Data Input/output + +//------------------------------------------------ +// Configuration Parameter +//------------------------------------------------ +output sdr_init_done ; // Indicate SDRAM Initialisation Done +input [3:0] cfg_sdr_tras_d ; // Active to precharge delay +input [3:0] cfg_sdr_trp_d ; // Precharge to active delay +input [3:0] cfg_sdr_trcd_d ; // Active to R/W delay +input cfg_sdr_en ; // Enable SDRAM controller +input [1:0] cfg_req_depth ; // Maximum Request accepted by SDRAM controller +input [12:0] cfg_sdr_mode_reg ; +input [2:0] cfg_sdr_cas ; // SDRAM CAS Latency +input [3:0] cfg_sdr_trcar_d ; // Auto-refresh period +input [3:0] cfg_sdr_twr_d ; // Write recovery delay +input [`SDR_RFSH_TIMER_W-1 : 0] cfg_sdr_rfsh; +input [`SDR_RFSH_ROW_CNT_W -1 : 0] cfg_sdr_rfmax; + +//-------------------------------------------- +// SDRAM controller Interface +//-------------------------------------------- +wire app_req ; // SDRAM request +wire [APP_AW-1:0] app_req_addr ; // SDRAM Request Address +wire [bl-1:0] app_req_len ; +wire app_req_wr_n ; // 0 - Write, 1 -> Read +wire app_req_ack ; // SDRAM request Accepted +wire app_busy_n ; // 0 -> sdr busy +wire [dw/8-1:0] app_wr_en_n ; // Active low sdr byte-wise write data valid +wire app_wr_next_req ; // Ready to accept the next write +wire app_rd_valid ; // sdr read valid +wire app_last_rd ; // Indicate last Read of Burst Transfer +wire app_last_wr ; // Indicate last Write of Burst Transfer +wire [dw-1:0] app_wr_data ; // sdr write data +wire [dw-1:0] app_rd_data ; // sdr read data + +/**************************************** +* These logic has to be implemented using Pads +* **************************************/ +wire [SDR_DW-1:0] pad_sdr_din ; // SDRA Data Input +wire [SDR_DW-1:0] sdr_dout ; // SDRAM Data Output +wire [SDR_BW-1:0] sdr_den_n ; // SDRAM Data Output enable + + +assign sdr_dq = (&sdr_den_n == 1'b0) ? sdr_dout : {SDR_DW{1'bz}}; +assign pad_sdr_din = sdr_dq; + +// sdram pad clock is routed back through pad +// SDRAM Clock from Pad, used for registering Read Data +wire #(1.0) sdram_pad_clk = sdram_clk; + +/************** Ends Here **************************/ +wb2sdrc #(.dw(dw),.tw(tw),.bl(bl)) u_wb2sdrc ( + // WB bus + .wb_rst_i (wb_rst_i ) , + .wb_clk_i (wb_clk_i ) , + + .wb_stb_i (wb_stb_i ) , + .wb_ack_o (wb_ack_o ) , + .wb_addr_i (wb_addr_i ) , + .wb_we_i (wb_we_i ) , + .wb_dat_i (wb_dat_i ) , + .wb_sel_i (wb_sel_i ) , + .wb_dat_o (wb_dat_o ) , + .wb_cyc_i (wb_cyc_i ) , + .wb_cti_i (wb_cti_i ) , + + + //SDRAM Controller Hand-Shake Signal + .sdram_clk (sdram_clk ) , + .sdram_resetn (sdram_resetn ) , + .sdr_req (app_req ) , + .sdr_req_addr (app_req_addr ) , + .sdr_req_len (app_req_len ) , + .sdr_req_wr_n (app_req_wr_n ) , + .sdr_req_ack (app_req_ack ) , + .sdr_busy_n (app_busy_n ) , + .sdr_wr_en_n (app_wr_en_n ) , + .sdr_wr_next (app_wr_next_req ) , + .sdr_rd_valid (app_rd_valid ) , + .sdr_last_rd (app_last_rd ) , + .sdr_wr_data (app_wr_data ) , + .sdr_rd_data (app_rd_data ) + + ); + + +sdrc_core #(.SDR_DW(SDR_DW) , .SDR_BW(SDR_BW)) u_sdrc_core ( + .clk (sdram_clk ) , + .pad_clk (sdram_pad_clk ) , + .reset_n (sdram_resetn ) , + .sdr_width (cfg_sdr_width ) , + .cfg_colbits (cfg_colbits ) , + + /* Request from app */ + .app_req (app_req ) ,// Transfer Request + .app_req_addr (app_req_addr ) ,// SDRAM Address + .app_req_len (app_req_len ) ,// Burst Length (in 16 bit words) + .app_req_wrap (1'b0 ) ,// Wrap mode request + .app_req_wr_n (app_req_wr_n ) ,// 0 => Write request, 1 => read req + .app_req_ack (app_req_ack ) ,// Request has been accepted + .cfg_req_depth (cfg_req_depth ) ,//how many req. buffer should hold + + .app_wr_data (app_wr_data ) , + .app_wr_en_n (app_wr_en_n ) , + .app_rd_data (app_rd_data ) , + .app_rd_valid (app_rd_valid ) , + .app_last_rd (app_last_rd ) , + .app_last_wr (app_last_wr ) , + .app_wr_next_req (app_wr_next_req ) , + .sdr_init_done (sdr_init_done ) , + .app_req_dma_last (app_req ) , + + /* Interface to SDRAMs */ + .sdr_cs_n (sdr_cs_n ) , + .sdr_cke (sdr_cke ) , + .sdr_ras_n (sdr_ras_n ) , + .sdr_cas_n (sdr_cas_n ) , + .sdr_we_n (sdr_we_n ) , + .sdr_dqm (sdr_dqm ) , + .sdr_ba (sdr_ba ) , + .sdr_addr (sdr_addr ) , + .pad_sdr_din (pad_sdr_din ) , + .sdr_dout (sdr_dout ) , + .sdr_den_n (sdr_den_n ) , + + /* Parameters */ + .cfg_sdr_en (cfg_sdr_en ) , + .cfg_sdr_mode_reg (cfg_sdr_mode_reg ) , + .cfg_sdr_tras_d (cfg_sdr_tras_d ) , + .cfg_sdr_trp_d (cfg_sdr_trp_d ) , + .cfg_sdr_trcd_d (cfg_sdr_trcd_d ) , + .cfg_sdr_cas (cfg_sdr_cas ) , + .cfg_sdr_trcar_d (cfg_sdr_trcar_d ) , + .cfg_sdr_twr_d (cfg_sdr_twr_d ) , + .cfg_sdr_rfsh (cfg_sdr_rfsh ) , + .cfg_sdr_rfmax (cfg_sdr_rfmax ) + ); + +endmodule // sdrc_core diff --git a/lib/common/Driver/SDRAM_driver/wb2sdrc/wb2sdrc.v b/lib/common/Driver/SDRAM_driver/wb2sdrc/wb2sdrc.v new file mode 100644 index 0000000..c585765 --- /dev/null +++ b/lib/common/Driver/SDRAM_driver/wb2sdrc/wb2sdrc.v @@ -0,0 +1,371 @@ +/********************************************************************* + + This file is part of the sdram controller project + http://www.opencores.org/cores/sdr_ctrl/ + + Description: WISHBONE to SDRAM Controller Bus Transalator + 1. This module translate the WISHBONE protocol to custom sdram controller i/f + 2. Also Handle the clock domain change from Application layer to Sdram layer + + To Do: + nothing + + Author(s): Dinesh Annayya, dinesha@opencores.org + Version : 0.0 - Initial Release + 0.1 - 2nd Feb 2012 + Async Fifo towards the application layer is selected + with Registered Full Generation + 0.2 - 2nd Feb 2012 + Pending Read generation bug fix done to handle backto back write + followed by read request + + Copyright (C) 2000 Authors and OPENCORES.ORG + + + This source file may be used and distributed without + restriction provided that this copyright statement is not + removed from the file and that any derivative work contains + the original copyright notice and the associated disclaimer. + + This source file is free software; you can redistribute it + and/or modify it under the terms of the GNU Lesser General + Public License as published by the Free Software Foundation; + either version 2.1 of the License, or (at your option) any +later version. + + This source is distributed in the hope that it will be + useful, but WITHOUT ANY WARRANTY; without even the implied + warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + PURPOSE. See the GNU Lesser General Public License for more + details. + + You should have received a copy of the GNU Lesser General + Public License along with this source; if not, download it + from http://www.opencores.org/lgpl.shtml + +*******************************************************************/ + + +module wb2sdrc ( + // WB bus + wb_rst_i , + wb_clk_i , + + wb_stb_i , + wb_ack_o , + wb_addr_i , + wb_we_i , + wb_dat_i , + wb_sel_i , + wb_dat_o , + wb_cyc_i , + wb_cti_i , + + + //SDRAM Controller Hand-Shake Signal + sdram_clk , + sdram_resetn , + sdr_req , + sdr_req_addr , + sdr_req_len , + sdr_req_wr_n , + sdr_req_ack , + sdr_busy_n , + sdr_wr_en_n , + sdr_wr_next , + sdr_rd_valid , + sdr_last_rd , + sdr_wr_data , + sdr_rd_data + + ); + +parameter dw = 32; // data width +parameter tw = 8; // tag id width +parameter bl = 9; // burst_lenght_width +parameter APP_AW = 26; // Application Address Width +//-------------------------------------- +// Wish Bone Interface +// ------------------------------------- +input wb_rst_i ; +input wb_clk_i ; + +input wb_stb_i ; +output wb_ack_o ; +input [APP_AW-1:0] wb_addr_i ; +input wb_we_i ; // 1 - Write , 0 - Read +input [dw-1:0] wb_dat_i ; +input [dw/8-1:0] wb_sel_i ; // Byte enable +output [dw-1:0] wb_dat_o ; +input wb_cyc_i ; +input [2:0] wb_cti_i ; +/*************************************************** +The Cycle Type Idenfier [CTI_IO()] Address Tag provides +additional information about the current cycle. +The MASTER sends this information to the SLAVE. The SLAVE can use this +information to prepare the response for the next cycle. +Table 4-2 Cycle Type Identifiers +CTI_O(2:0) Description +000 Classic cycle. +001 Constant address burst cycle +010 Incrementing burst cycle +011 Reserved +100 Reserved +101 Reserved +110 Reserved +111 End-of-Burst +****************************************************/ +//-------------------------------------------- +// SDRAM controller Interface +//-------------------------------------------- +input sdram_clk ; // sdram clock +input sdram_resetn ; // sdram reset +output sdr_req ; // SDRAM request +output [APP_AW-1:0] sdr_req_addr ; // SDRAM Request Address +output [bl-1:0] sdr_req_len ; +output sdr_req_wr_n ; // 0 - Write, 1 -> Read +input sdr_req_ack ; // SDRAM request Accepted +input sdr_busy_n ; // 0 -> sdr busy +output [dw/8-1:0] sdr_wr_en_n ; // Active low sdr byte-wise write data valid +input sdr_wr_next ; // Ready to accept the next write +input sdr_rd_valid ; // sdr read valid +input sdr_last_rd ; // Indicate last Read of Burst Transfer +output [dw-1:0] sdr_wr_data ; // sdr write data +input [dw-1:0] sdr_rd_data ; // sdr read data + +//---------------------------------------------------- +// Wire Decleration +// --------------------------------------------------- +wire cmdfifo_full ; +wire cmdfifo_empty ; +wire wrdatafifo_full ; +wire wrdatafifo_empty ; +wire tagfifo_full ; +wire tagfifo_empty ; +wire rddatafifo_empty ; +wire rddatafifo_full ; + +reg pending_read ; + + +//----------------------------------------------------------------------------- +// Ack Generaltion Logic +// If Write Request - Acknowledge if the command and write FIFO are not full +// If Read Request - Generate the Acknowledgment once read fifo has data +// available +//----------------------------------------------------------------------------- + +assign wb_ack_o = (wb_stb_i && wb_cyc_i && wb_we_i) ? // Write Phase + ((!cmdfifo_full) && (!wrdatafifo_full)) : + (wb_stb_i && wb_cyc_i && !wb_we_i) ? // Read Phase + !rddatafifo_empty : 1'b0; + +//--------------------------------------------------------------------------- +// Command FIFO Write Generation +// If Write Request - Generate write, when Write fifo and command fifo is +// not full +// If Read Request - Generate write, when command fifo not full and there +// is no pending read request. +//--------------------------------------------------------------------------- +wire cmdfifo_wr = (wb_stb_i && wb_cyc_i && wb_we_i && (!cmdfifo_full) ) ? wb_ack_o : + (wb_stb_i && wb_cyc_i && !wb_we_i && (!cmdfifo_full)) ? !pending_read: 1'b0 ; + +//--------------------------------------------------------------------------- +// command fifo read generation +// Command FIFo read will be generated, whenever SDRAM Controller +// Acknowldge the Request +//---------------------------------------------------------------------------- + +wire cmdfifo_rd = sdr_req_ack; + +//--------------------------------------------------------------------------- +// Application layer request is generated towards the controller, whenever +// Command FIFO is not full +// -------------------------------------------------------------------------- +assign sdr_req = !cmdfifo_empty; + +//---------------------------------------------------------------------------- +// Since Burst length is not known at the start of the Burst, It's assumed as +// Single Cycle Burst. We need to improvise this ... +// -------------------------------------------------------------------------- +wire [bl-1:0] burst_length = 1; // 0 Mean 1 Transfer + +//----------------------------------------------------------------------------- +// In Wish Bone Spec, For Read Request has to be acked along with data. +// We need to identify the pending read request. +// Once we accept the read request, we should not accept one more read +// request, untill we have transmitted the read data. +// Pending Read will +// set - with Read Request +// reset - with Read Request + Ack +// ---------------------------------------------------------------------------- +always @(posedge wb_rst_i or posedge wb_clk_i) begin + if(wb_rst_i) begin + pending_read <= 1'b0; + end else begin + //pending_read <= wb_stb_i & wb_cyc_i & !wb_we_i & !wb_ack_o; + pending_read <= (cmdfifo_wr && !wb_we_i) ? 1'b1: + (wb_stb_i & wb_cyc_i & !wb_we_i & wb_ack_o) ? 1'b0: pending_read; + end +end + +//--------------------------------------------------------------------- +// Async Command FIFO. This block handle the clock domain change from +// Application layer to SDRAM Controller +// ------------------------------------------------------------------ + // Address + Burst Length + W/R Request + async_fifo #(.W(APP_AW+bl+1),.DP(4),.WR_FAST(1'b0), .RD_FAST(1'b0)) u_cmdfifo ( + // Write Path Sys CLock Domain + .wr_clk (wb_clk_i ), + .wr_reset_n (!wb_rst_i ), + .wr_en (cmdfifo_wr ), + .wr_data ({burst_length, + !wb_we_i, + wb_addr_i} ), + .afull ( ), + .full (cmdfifo_full ), + + // Read Path, SDRAM clock domain + .rd_clk (sdram_clk ), + .rd_reset_n (sdram_resetn ), + .aempty ( ), + .empty (cmdfifo_empty ), + .rd_en (cmdfifo_rd ), + .rd_data ({sdr_req_len, + sdr_req_wr_n, + sdr_req_addr} ) + ); + +// synopsys translate_off +always @(posedge wb_clk_i) begin + if (cmdfifo_full == 1'b1 && cmdfifo_wr == 1'b1) begin + $display("ERROR:%m COMMAND FIFO WRITE OVERFLOW"); + end +end +// synopsys translate_on +// synopsys translate_off +always @(posedge sdram_clk) begin + if (cmdfifo_empty == 1'b1 && cmdfifo_rd == 1'b1) begin + $display("ERROR:%m COMMAND FIFO READ OVERFLOW"); + end +end +// synopsys translate_on + +//--------------------------------------------------------------------- +// Write Data FIFO Write Generation, when ever Acked + Write Request +// Note: Ack signal generation already taking account of FIFO full condition +// --------------------------------------------------------------------- + +wire wrdatafifo_wr = wb_ack_o & wb_we_i ; + +//------------------------------------------------------------------------ +// Write Data FIFO Read Generation, When ever Next Write request generated +// from SDRAM Controller +// ------------------------------------------------------------------------ +wire wrdatafifo_rd = sdr_wr_next; + + +//------------------------------------------------------------------------ +// Async Write Data FIFO +// This block handle the clock domain change over + Write Data + Byte mask +// From Application layer to SDRAM controller layer +//------------------------------------------------------------------------ + + // Write DATA + Data Mask FIFO + async_fifo #(.W(dw+(dw/8)), .DP(8), .WR_FAST(1'b0), .RD_FAST(1'b1)) u_wrdatafifo ( + // Write Path , System clock domain + .wr_clk (wb_clk_i ), + .wr_reset_n (!wb_rst_i ), + .wr_en (wrdatafifo_wr ), + .wr_data ({~wb_sel_i, + wb_dat_i} ), + .afull ( ), + .full (wrdatafifo_full ), + + + // Read Path , SDRAM clock domain + .rd_clk (sdram_clk ), + .rd_reset_n (sdram_resetn ), + .aempty ( ), + .empty (wrdatafifo_empty ), + .rd_en (wrdatafifo_rd ), + .rd_data ({sdr_wr_en_n, + sdr_wr_data} ) + ); +// synopsys translate_off +always @(posedge wb_clk_i) begin + if (wrdatafifo_full == 1'b1 && wrdatafifo_wr == 1'b1) begin + $display("ERROR:%m WRITE DATA FIFO WRITE OVERFLOW"); + end +end + +always @(posedge sdram_clk) begin + if (wrdatafifo_empty == 1'b1 && wrdatafifo_rd == 1'b1) begin + $display("ERROR:%m WRITE DATA FIFO READ OVERFLOW"); + end +end +// synopsys translate_on + +// ------------------------------------------------------------------- +// READ DATA FIFO +// ------------------------------------------------------------------ +wire rd_eop; // last read indication + +// Read FIFO write generation, when ever SDRAM controller issues the read +// valid signal +wire rddatafifo_wr = sdr_rd_valid; + +// Read FIFO read generation, when ever ack is generated along with read +// request. +// Note: Ack generation is already accounted the write FIFO Not Empty +// condition +wire rddatafifo_rd = wb_ack_o & !wb_we_i; + +//------------------------------------------------------------------------- +// Async Read FIFO +// This block handles the clock domain change over + Read data from SDRAM +// controller to Application layer. +// Note: +// 1. READ DATA FIFO depth is kept small, assuming that Sys-CLock > SDRAM Clock +// READ DATA + EOP +// 2. EOP indicate, last transfer of Burst Read Access. use-full for future +// Tag handling per burst +// +// ------------------------------------------------------------------------ + async_fifo #(.W(dw+1), .DP(4), .WR_FAST(1'b0), .RD_FAST(1'b1) ) u_rddatafifo ( + // Write Path , SDRAM clock domain + .wr_clk (sdram_clk ), + .wr_reset_n (sdram_resetn ), + .wr_en (rddatafifo_wr ), + .wr_data ({sdr_last_rd, + sdr_rd_data} ), + .afull ( ), + .full (rddatafifo_full ), + + + // Read Path , SYS clock domain + .rd_clk (wb_clk_i ), + .rd_reset_n (!wb_rst_i ), + .empty (rddatafifo_empty ), + .aempty ( ), + .rd_en (rddatafifo_rd ), + .rd_data ({rd_eop, + wb_dat_o} ) + ); + +// synopsys translate_off +always @(posedge sdram_clk) begin + if (rddatafifo_full == 1'b1 && rddatafifo_wr == 1'b1) begin + $display("ERROR:%m READ DATA FIFO WRITE OVERFLOW"); + end +end + +always @(posedge wb_clk_i) begin + if (rddatafifo_empty == 1'b1 && rddatafifo_rd == 1'b1) begin + $display("ERROR:%m READ DATA FIFO READ OVERFLOW"); + end +end +// synopsys translate_on + + +endmodule diff --git a/lib/common/Driver/UART_driver/UART_rx.v b/lib/common/Driver/UART_driver/UART_rx.v new file mode 100644 index 0000000..1eb89a7 --- /dev/null +++ b/lib/common/Driver/UART_driver/UART_rx.v @@ -0,0 +1,78 @@ +`timescale 1ns / 1ps + +module uart_rx( + input clk_50m, + input uart_rx, + output [7:0] uart_rx_data, + output uart_rx_done + ); + +parameter [12:0] BAUD_DIV = 13'd87;//bps115200 每位数据传输时间为t=1/115200 s,周期T=1/100000000,计数值为t/T=868 +parameter [12:0] BAUD_DIV_CAP = 13'd43; + +reg [12:0] baud_div=0; +reg baud_bps=0; +reg bps_start=0; +always@(posedge clk_50m) +begin + if(baud_div==BAUD_DIV_CAP) + begin + baud_bps<=1'b1; + baud_div<=baud_div+1'b1; + end + else if(baud_div= rd_ptr) begin + get_cnt = (wr_ptr - rd_ptr); + end + else begin + get_cnt = DP*2 - (rd_ptr - wr_ptr); + end +end +endfunction + +// synopsys translate_off +always @(posedge wr_clk) begin + if (wr_en && full) begin + $display($time, "%m Error! afifo overflow!"); + $stop; + end +end + +always @(posedge rd_clk) begin + if (rd_en && empty) begin + $display($time, "%m error! afifo underflow!"); + $stop; + end +end +// synopsys translate_on + +endmodule diff --git a/lib/common/Malloc/FIFO/sync_fifo.v b/lib/common/Malloc/FIFO/sync_fifo.v new file mode 100644 index 0000000..a118bdb --- /dev/null +++ b/lib/common/Malloc/FIFO/sync_fifo.v @@ -0,0 +1,101 @@ +`timescale 1ns/1ps +module sync_fifo #( + parameter W = 8 +) +( + input clk, + input reset_n, + input rd_en, + output [W-1 : 0] rd_data, + input wr_en, + input [W-1 : 0] wr_data, + output reg full, + output reg empty +); + +parameter D = 4; + +parameter AW = (D == 4) ? 2 : + (D == 8) ? 3 : + (D == 16) ? 4 : + (D == 32) ? 5 : + (D == 64) ? 6 : + (D == 128) ? 7 : + (D == 256) ? 8 : 0; + +// synopsys translate_off +initial begin + if (AW == 0) begin + $display ("%m : ERROR!!! Fifo depth %d not in range 4 to 256", D); + end // if (AW == 0) +end // initial begin + +// synopsys translate_on + +reg [W-1 : 0] mem[D-1 : 0]; +reg [AW-1 : 0] rd_ptr, wr_ptr; + +always @ (posedge clk or negedge reset_n) + if (reset_n == 1'b0) begin + wr_ptr <= {AW{1'b0}} ; + end + else begin + if (wr_en & !full) begin + wr_ptr <= wr_ptr + 1'b1 ; + end + end + +always @ (posedge clk or negedge reset_n) + if (reset_n == 1'b0) begin + rd_ptr <= {AW{1'b0}} ; + end + else begin + if (rd_en & !empty) begin + rd_ptr <= rd_ptr + 1'b1 ; + end + end + + +always @ (posedge clk or negedge reset_n) + if (reset_n == 1'b0) begin + empty <= 1'b1 ; + end + else begin + empty <= (((wr_ptr - rd_ptr) == {{(AW-1){1'b0}}, 1'b1}) & rd_en & ~wr_en) ? 1'b1 : + ((wr_ptr == rd_ptr) & ~rd_en & wr_en) ? 1'b0 : empty ; + end + +always @ (posedge clk or negedge reset_n) + if (reset_n == 1'b0) begin + full <= 1'b0 ; + end + else begin + full <= (((wr_ptr - rd_ptr) == {{(AW-1){1'b1}}, 1'b0}) & ~rd_en & wr_en) ? 1'b1 : + (((wr_ptr - rd_ptr) == {AW{1'b1}}) & rd_en & ~wr_en) ? 1'b0 : full ; + end + +always @ (posedge clk) + if (wr_en) + mem[wr_ptr] <= wr_data; + +assign rd_data = mem[rd_ptr]; + + +// synopsys translate_off +always @(posedge clk) begin + if (wr_en && full) begin + $display("%m : Error! sfifo overflow!"); + end +end + +always @(posedge clk) begin + if (rd_en && empty) begin + $display("%m : error! sfifo underflow!"); + end +end +// synopsys translate_on +//--------------------------------------- + +endmodule + + diff --git a/lib/common/Malloc/RAM/Shift_RAM/Line_Shift_RAM.v b/lib/common/Malloc/RAM/Shift_RAM/Line_Shift_RAM.v new file mode 100644 index 0000000..63f9385 --- /dev/null +++ b/lib/common/Malloc/RAM/Shift_RAM/Line_Shift_RAM.v @@ -0,0 +1,33 @@ +module Line_Shift_RAM #( + parameter RAM_Length = 640, //640*480 + parameter DATA_WIDTH = 8 +) ( + input clken, + input clock, + input [DATA_WIDTH-1:0] shiftin, + output [DATA_WIDTH-1:0] taps0x, + output [DATA_WIDTH-1:0] taps1x +); + +RAMshift_taps #( + .TOTAL_RAM_Length (RAM_Length), + .DATA_WIDTH (DATA_WIDTH) +) RAMshfit_taps_u1 ( + .clken(clken), + .clock(clock), + .Delay_Length(RAM_Length), + .shiftin(shiftin), + .shiftout(taps0x) +); + +RAMshift_taps #( + .TOTAL_RAM_Length (RAM_Length), + .DATA_WIDTH (DATA_WIDTH) +) RAMshfit_taps_u2 ( + .clken(clken), + .clock(clock), + .Delay_Length(RAM_Length), + .shiftin(taps0x), + .shiftout(taps1x) +); +endmodule \ No newline at end of file diff --git a/lib/common/Malloc/RAM/Shift_RAM/RAMshift_taps.v b/lib/common/Malloc/RAM/Shift_RAM/RAMshift_taps.v new file mode 100644 index 0000000..859ebf1 --- /dev/null +++ b/lib/common/Malloc/RAM/Shift_RAM/RAMshift_taps.v @@ -0,0 +1,46 @@ +`timescale 1 ns / 1 ns + +module RAMshift_taps #( + parameter TOTAL_RAM_Length = 640, + parameter DATA_WIDTH = 8 +) ( + input clken, + input clock, + input [31:0] Delay_Length, + input [DATA_WIDTH - 1 : 0] shiftin, + output [DATA_WIDTH - 1 : 0] shiftout +); + +reg [31:0] RAM_CNT = 0; +reg [DATA_WIDTH - 1 : 0] ram_buf = 0; +reg [DATA_WIDTH - 1 : 0] shift_ram [TOTAL_RAM_Length - 1 : 0]; + +integer m; +initial begin + for (m = 0; m<=TOTAL_RAM_Length; m=m+1) begin + shift_ram[m] = 0; + end +end + +always @(posedge clock) begin + if (RAM_CNT == (Delay_Length - 1)) + RAM_CNT <= 0; + else if (clken) + RAM_CNT <= RAM_CNT + 1; + else + RAM_CNT <= RAM_CNT; +end + +always @(posedge clock) begin + if (clken) begin + shift_ram[RAM_CNT] <= shiftin; + end + else begin + shift_ram[RAM_CNT] <= shift_ram[RAM_CNT]; + end +end + +assign shiftout = shift_ram[RAM_CNT]; + +endmodule + diff --git a/lib/common/Math/Cordic.v b/lib/common/Math/Cordic.v new file mode 100644 index 0000000..bf52c75 --- /dev/null +++ b/lib/common/Math/Cordic.v @@ -0,0 +1,258 @@ +`timescale 1ns / 1ps + +module Cordic #( + parameter XY_BITS = 12, + parameter PH_BITS = 32, + parameter ITERATIONS = 32, + parameter CORDIC_STYLE = "ROTATE", + parameter PHASE_ACC = "ON" +)( + input clk, + input RST, + input signed [XY_BITS-1:0] x_i, + input signed [XY_BITS-1:0] y_i, + input signed [PH_BITS-1:0] phase_in, + + output signed [XY_BITS-1:0] x_o, + output signed [XY_BITS-1:0] y_o, + output signed [PH_BITS-1:0] phase_out, + + input valid_in, + output valid_out +); + +localparam [XY_BITS-1:0] K_COS = (0.607252935 * 2**(XY_BITS-1))-2; + +/* +//360°--2^16,phase_in = 16bits (input [15:0] phase_in) +//1°--2^16/360 +*/ +function [PH_BITS-1:0] tanangle; +input [4:0] i; +begin + case (i) + 5'b00000: tanangle = (32'h20000000 >> (32 - PH_BITS)); //tan = 1/2^1 = 1/2 + 5'b00001: tanangle = (32'h12e4051e >> (32 - PH_BITS)); //tan = 1/2^2 = 1/4 + 5'b00010: tanangle = (32'h09fb385b >> (32 - PH_BITS)); //tan = 1/2^3 = 1/8 + 5'b00011: tanangle = (32'h051111d4 >> (32 - PH_BITS)); //tan = 1/2^4 = 1/16 + 5'b00100: tanangle = (32'h028b0d43 >> (32 - PH_BITS)); //tan = 1/2^5 = 1/32 + 5'b00101: tanangle = (32'h0145d7e1 >> (32 - PH_BITS)); //tan = 1/2^6 = 1/64 + 5'b00110: tanangle = (32'h00a2f61e >> (32 - PH_BITS)); //tan = 1/2^7 = 1/128 + 5'b00111: tanangle = (32'h00517c55 >> (32 - PH_BITS)); //tan = 1/2^8 = 1/256 + 5'b01000: tanangle = (32'h0028be53 >> (32 - PH_BITS)); //tan = 1/2^9 = 1/512 + 5'b01001: tanangle = (32'h00145f2f >> (32 - PH_BITS)); //tan = 1/2^10 = 1/1024 + 5'b01010: tanangle = (32'h000a2f98 >> (32 - PH_BITS)); //tan = 1/2^11 = 1/2048 + 5'b01011: tanangle = (32'h000517cc >> (32 - PH_BITS)); //tan = 1/2^12 = 1/4096 + 5'b01100: tanangle = (32'h00028be6 >> (32 - PH_BITS)); //tan = 1/2^13 = 1/8192 + 5'b01101: tanangle = (32'h000145f3 >> (32 - PH_BITS)); //tan = 1/2^14 = 1/16384 + 5'b01110: tanangle = (32'h0000a2fa >> (32 - PH_BITS)); //tan = 1/2^15 = 1/32768 + 5'b01111: tanangle = (32'h0000517d >> (32 - PH_BITS)); //tan = 1/2^16 = 1/65536 + 5'b10000: tanangle = (32'h000028be >> (32 - PH_BITS)); //tan = 1/2^17 = 1/131072 + 5'b10001: tanangle = (32'h0000145f >> (32 - PH_BITS)); //tan = 1/2^18 = 1/262144 + 5'b10010: tanangle = (32'h00000a30 >> (32 - PH_BITS)); //tan = 1/2^19 = 1/524288 + 5'b10011: tanangle = (32'h00000518 >> (32 - PH_BITS)); //tan = 1/2^20 = 1/1048576 + 5'b10100: tanangle = (32'h0000028c >> (32 - PH_BITS)); //tan = 1/2^21 = 1/2097152 + 5'b10101: tanangle = (32'h00000146 >> (32 - PH_BITS)); //tan = 1/2^22 = 1/4194304 + 5'b10110: tanangle = (32'h000000a3 >> (32 - PH_BITS)); //tan = 1/2^23 = 1/8388608 + 5'b10111: tanangle = (32'h00000051 >> (32 - PH_BITS)); //tan = 1/2^24 = 1/16777216 + 5'b11000: tanangle = (32'h00000029 >> (32 - PH_BITS)); //tan = 1/2^25 = 1/33554432 + 5'b11001: tanangle = (32'h00000014 >> (32 - PH_BITS)); //tan = 1/2^26 = 1/67108864 + 5'b11010: tanangle = (32'h0000000a >> (32 - PH_BITS)); //tan = 1/2^27 = 1/134217728 + 5'b11011: tanangle = (32'h00000005 >> (32 - PH_BITS)); //tan = 1/2^28 = 1/268435456 + 5'b11100: tanangle = (32'h00000003 >> (32 - PH_BITS)); //tan = 1/2^29 = 1/536870912 + 5'b11101: tanangle = (32'h00000001 >> (32 - PH_BITS)); //tan = 1/2^30 = 1/1073741824 + 5'b11110: tanangle = (32'h00000001 >> (32 - PH_BITS)); //tan = 1/2^31 = 1/2147483648 + 5'b11111: tanangle = (32'h00000000 >> (32 - PH_BITS)); //tan = 1/2^32 = 1/4294967296 + endcase +end +endfunction + +reg [1:0] data_in_buff [ITERATIONS:0]; +reg signed [XY_BITS-1:0] x [ITERATIONS:0]; +reg signed [XY_BITS-1:0] y [ITERATIONS:0]; +reg signed [PH_BITS-1:0] z [ITERATIONS:0]; + +integer m; +initial begin + for (m = 0; m<=ITERATIONS; m=m+1) begin + x[m] = 0; + end +end + +integer n; +initial begin + for (n = 0; n<=ITERATIONS; n=n+1) begin + y[n] = 0; + end +end + +integer s; +initial begin + for (s = 0; s<=ITERATIONS; s=s+1) begin + z[s] = 0; + end +end + +integer k; +initial begin + for (k = 0; k<=ITERATIONS; k=k+1) begin + data_in_buff[k] = 0; + end +end + +genvar i; +generate for(i=0;i>>i); + y[i+1] <= y[i] - (x[i]>>>i); + z[i+1] <= z[i] + tanangle(i); + end + else begin + x[i+1] <= x[i] - (y[i]>>>i); + y[i+1] <= y[i] + (x[i]>>>i); + z[i+1] <= z[i] - tanangle(i); + end + end + else if(CORDIC_STYLE == "VECTOR") begin + if (y[i] > 0) begin + x[i+1] <= x[i] + (y[i]>>>i); + y[i+1] <= y[i] - (x[i]>>>i); + z[i+1] <= z[i] + tanangle(i); + end else begin + x[i+1] <= x[i] - (y[i]>>>i); + y[i+1] <= y[i] + (x[i]>>>i); + z[i+1] <= z[i] - tanangle(i); + end + end + end +end +always @ (posedge clk) begin + data_in_buff[i+1] <= data_in_buff[i]; +end +end +endgenerate + +generate if (CORDIC_STYLE == "ROTATE") begin : IQ_Gen +reg [PH_BITS - 1 : 0] Phase_input = 0; +if (PHASE_ACC == "ON") begin + reg [PH_BITS - 1 : 0] addr_r0 = 0; + always @(posedge clk) begin + addr_r0 <= addr_r0 + phase_in; + end + always @(posedge clk) begin + Phase_input <= addr_r0; + end +end +else if (PHASE_ACC == "OFF") begin + always @(posedge clk) begin + Phase_input <= phase_in; + end +end +always @(posedge clk) begin + if(valid_in & (~RST)) begin + x[0] <= K_COS; + y[0] <= 0; + z[0] <= Phase_input[PH_BITS - 3 : 0]; + data_in_buff[0] <= Phase_input[PH_BITS - 1 : PH_BITS - 2]; + end + else begin + x[0] <= 0; + y[0] <= 0; + z[0] <= 0; + data_in_buff[0] <= 0; + end +end +reg signed [XY_BITS-1:0] cos = 0; +reg signed [XY_BITS-1:0] sin = 0; +always @ (posedge clk) begin + case(data_in_buff[ITERATIONS]) + 2'b00:begin //if the phase is in first quadrant,the sin(X)=sin(A),cos(X)=cos(A) + cos <= x[ITERATIONS]; + sin <= y[ITERATIONS]; + end + 2'b01:begin //if the phase is in second quadrant,the sin(X)=sin(A+90)=cosA,cos(X)=cos(A+90)=-sinA + cos <= ~(y[ITERATIONS]) + 1'b1;//-sin + sin <= x[ITERATIONS];//cos + end + 2'b10:begin //if the phase is in third quadrant,the sin(X)=sin(A+180)=-sinA,cos(X)=cos(A+180)=-cosA + cos <= ~(x[ITERATIONS]) + 1'b1;//-cos + sin <= ~(y[ITERATIONS]) + 1'b1;//-sin + end + 2'b11:begin //if the phase is in forth quadrant,the sin(X)=sin(A+270)=-cosA,cos(X)=cos(A+270)=sinA + cos <= y[ITERATIONS];//sin + sin <= ~(x[ITERATIONS]) + 1'b1;//-cos + end + endcase +end +assign x_o = cos; +assign y_o = sin; +assign phase_out = z[ITERATIONS]; +end +endgenerate + +generate if (CORDIC_STYLE == "VECTOR") begin : Demodule_Gen +localparam signed [PH_BITS-1:0] PHASE_COE = (2**(PH_BITS-2)) - 1; +//localparam MODUIUS_COE = ; +always @(posedge clk) begin + if(valid_in & (~RST)) begin + case ({x_i[XY_BITS-1],y_i[XY_BITS-1]}) + 2'b00 : begin x[0] <= {x_i[XY_BITS-1],x_i[XY_BITS-1:1]}; + y[0] <= {y_i[XY_BITS-1],y_i[XY_BITS-1:1]}; end + 2'b01 : begin x[0] <= {x_i[XY_BITS-1],x_i[XY_BITS-1:1]}; + y[0] <= {y_i[XY_BITS-1],y_i[XY_BITS-1:1]}; end + 2'b10 : begin x[0] <= {y_i[XY_BITS-1],y_i[XY_BITS-1:1]}; + y[0] <= -{x_i[XY_BITS-1],x_i[XY_BITS-1:1]}; end + 2'b11 : begin x[0] <= -{y_i[XY_BITS-1],y_i[XY_BITS-1:1]}; + y[0] <= {x_i[XY_BITS-1],x_i[XY_BITS-1:1]}; end + default : begin x[0] <= {x_i[XY_BITS-1],x_i[XY_BITS-1:1]}; + y[0] <= {y_i[XY_BITS-1],y_i[XY_BITS-1:1]}; end + endcase + z[0] <= phase_in; + data_in_buff[0] <= {x_i[XY_BITS-1],y_i[XY_BITS-1]}; + end + else begin + x[0] <= 0; + y[0] <= 0; + z[0] <= 0; + data_in_buff[0] <= 0; + end +end +reg [XY_BITS*2-1:0] Modulus = 0; +wire [XY_BITS*2-1:0] Modulus_buf; +reg signed [PH_BITS - 1:0] phase_r = 0; +always @ (posedge clk) begin + case(data_in_buff[ITERATIONS]) + 2'b00:begin phase_r <= $signed(z[ITERATIONS]); end + 2'b01:begin phase_r <= $signed(z[ITERATIONS]); end + 2'b10:begin phase_r <= $signed(z[ITERATIONS]) + $signed(PHASE_COE); end + 2'b11:begin phase_r <= $signed(z[ITERATIONS]) - $signed(PHASE_COE); end + endcase + Modulus[XY_BITS:0] <= x[ITERATIONS]; +end +assign Modulus_buf = (Modulus * 32'd39797)>>15; +assign x_o = Modulus_buf[XY_BITS-1:0]; +assign y_o = y[ITERATIONS]; +assign phase_out = phase_r; +end +endgenerate + +reg [ITERATIONS+1:0] v = 0; +always @ (posedge clk) begin + if (RST) + v <= 0; + else begin + v <= v << 1; + v[0] <= valid_in; + end +end +assign valid_out = v[ITERATIONS+1]; + +endmodule diff --git a/lib/common/Math/Sort3.v b/lib/common/Math/Sort3.v new file mode 100644 index 0000000..22158ae --- /dev/null +++ b/lib/common/Math/Sort3.v @@ -0,0 +1,45 @@ +`timescale 1ns/1ns +module Sort3 ( + input clk, + input rst_n, + + input [7:0] data1, data2, data3, + output reg [7:0] max_data, mid_data, min_data +); + +//----------------------------------- +//Sort of 3 datas +always@(posedge clk or negedge rst_n) begin + if(!rst_n) begin + max_data <= 0; + mid_data <= 0; + min_data <= 0; + end + else begin + //get the max value + if(data1 >= data2 && data1 >= data3) + max_data <= data1; + else if(data2 >= data1 && data2 >= data3) + max_data <= data2; + else//(data3 >= data1 && data3 >= data2) + max_data <= data3; + + //get the mid value + if((data1 >= data2 && data1 <= data3) || (data1 >= data3 && data1 <= data2)) + mid_data <= data1; + else if((data2 >= data1 && data2 <= data3) || (data2 >= data3 && data2 <= data1)) + mid_data <= data2; + else//((data3 >= data1 && data3 <= data2) || (data3 >= data2 && data3 <= data1)) + mid_data <= data3; + + //ge the min value + if(data1 <= data2 && data1 <= data3) + min_data <= data1; + else if(data2 <= data1 && data2 <= data3) + min_data <= data2; + else//(data3 <= data1 && data3 <= data2) + min_data <= data3; + end +end + +endmodule diff --git a/lib/common/Math/phase_acc.v b/lib/common/Math/phase_acc.v new file mode 100644 index 0000000..bc1bf1d --- /dev/null +++ b/lib/common/Math/phase_acc.v @@ -0,0 +1,63 @@ +module phase_acc(clr,en,rst,valid_out1,clk,add_sub,sel,D,Q); + parameter DATASIZE=16; + input clr,en,rst,clk,add_sub,sel,valid_out1; + input [DATASIZE-1:0] D; + output [DATASIZE:0] Q; + + reg count0,count1,count2,count3; + reg [DATASIZE:0] b_tmp,b_tmp0,b_tmp1,b_tmp2; + reg [3:0] sum0; + reg [7:0] sum1; + reg [11:0] sum2; + reg [16:0] sum3; + reg add_sub0,add_sub1,add_sub2; + reg clr0,clr1,clr2; + + always @(posedge clk) begin + case({clr,add_sub}) + 2'b00:{count0,sum0}<={1'b0,sum0}+{1'b0,D[3:0]}; + 2'b01:{count0,sum0}<={1'b0,sum0}-{1'b0,D[3:0]}; + 2'b10:{count0,sum0}<=5'b0+{1'b0,D[3:0]}; + default:{count0,sum0}<=5'b0-{1'b0,D[3:0]}; + endcase + b_tmp0<=D; + clr0<=clr; + add_sub0<=add_sub; + end + + always @(posedge clk) + begin + case({clr0,add_sub0}) + 2'b00:{count1,sum1}<={{1'b0,sum1[7:4]}+{1'b0,b_tmp0[7:4]}+count0,sum0}; + 2'b01:{count1,sum1}<={{1'b0,sum1[7:4]}-{1'b0,b_tmp0[7:4]}-count0,sum0}; + 2'b10:{count1,sum1}<=5'b0+{1'b0,b_tmp0[7:4]}; + default:{count1,sum1}<=5'b0-{1'b0,b_tmp0[7:4]}; + endcase + b_tmp1<=b_tmp0; + clr1<=clr0; + add_sub1<=add_sub0; + end + + always @(posedge clk) + begin + case({clr1,add_sub1}) + 2'b00:{count2,sum2}<={{1'b0,sum2[11:8]}+{1'b0,b_tmp1[11:8]}+count1,sum1}; + 2'b01:{count2,sum2}<={{1'b0,sum2[11:8]}-{1'b0,b_tmp1[11:8]}-count1,sum1}; + 2'b10:{count2,sum2}<=5'b0+{1'b0,b_tmp1[11:8]}; + default:{count2,sum2}<=5'b0-{1'b0,b_tmp1[11:8]}; + endcase + b_tmp2<=b_tmp1; + clr2<=clr1; + add_sub2<=add_sub1; + end + + always @(posedge clk) begin + case({clr2,add_sub2}) + 2'b00:sum3<={sum3[16:12]+{1'b0,b_tmp2[15:12]}+count2,sum2}; + 2'b01:sum3<={sum3[16:12]-{1'b0,b_tmp2[15:12]}-count2,sum2}; + 2'b10:sum3<=5'b0+{1'b0,b_tmp2[15:12]}; + default:sum3<=5'b0-{1'b0,b_tmp2[15:12]}; + endcase + end +assign Q=sum3; +endmodule \ No newline at end of file diff --git a/lib/common/Soc/AXI4/AXI_lite.v b/lib/common/Soc/AXI4/AXI_lite.v new file mode 100644 index 0000000..5c63ed2 --- /dev/null +++ b/lib/common/Soc/AXI4/AXI_lite.v @@ -0,0 +1,299 @@ +`timescale 1 ns / 1 ps + +module AXI #( + parameter integer OUTPUT_WIDTH = 12, + parameter integer PHASE_WIDTH = 32, + parameter integer C_S_AXI_DATA_WIDTH = 32, + parameter integer C_S_AXI_ADDR_WIDTH = 4 +) ( + // Users to add ports here + + // User ports ends + // Do not modify the ports beyond this line + + input wire S_AXI_ACLK, + input wire S_AXI_ARESETN, + + input wire S_AXI_WVALID, + output wire S_AXI_RVALID, + output wire S_AXI_WREADY, + input wire S_AXI_RREADY, + + input wire S_AXI_AWVALID, + input wire S_AXI_ARVALID, + output wire S_AXI_AWREADY, + output wire S_AXI_ARREADY, + + input wire [C_S_AXI_ADDR_WIDTH-1 : 0] S_AXI_AWADDR, + input wire [C_S_AXI_ADDR_WIDTH-1 : 0] S_AXI_ARADDR, + input wire [C_S_AXI_DATA_WIDTH-1 : 0] S_AXI_WDATA, + output wire [C_S_AXI_DATA_WIDTH-1 : 0] S_AXI_RDATA, + + input wire [2 : 0] S_AXI_AWPROT, + input wire [2 : 0] S_AXI_ARPROT, + + output wire [1 : 0] S_AXI_BRESP, + output wire [1 : 0] S_AXI_RRESP, + + output wire S_AXI_BVALID, + input wire S_AXI_BREADY, + + input wire [(C_S_AXI_DATA_WIDTH/8)-1 : 0] S_AXI_WSTRB +); + +// AXI4LITE signals +reg axi_awready; +reg axi_arready; +reg axi_bvalid; +reg axi_rvalid; +reg axi_wready; + +reg [1 : 0] axi_bresp; +reg [1 : 0] axi_rresp; + +reg [C_S_AXI_ADDR_WIDTH-1 : 0] axi_awaddr; +reg [C_S_AXI_ADDR_WIDTH-1 : 0] axi_araddr; +reg [C_S_AXI_DATA_WIDTH-1 : 0] axi_rdata; +// Example-specific design signals +// local parameter for addressing 32 bit / 64 bit C_S_AXI_DATA_WIDTH +// ADDR_LSB is used for addressing 32/64 bit registers/memories +// ADDR_LSB = 2 for 32 bits (n downto 2) +// ADDR_LSB = 3 for 64 bits (n downto 3) +localparam integer ADDR_LSB = (C_S_AXI_DATA_WIDTH/32) + 1; +localparam integer OPT_MEM_ADDR_BITS = 1; +//---------------------------------------------- +//-- Signals for user logic register space example +//------------------------------------------------ +//-- Number of Slave Registers 4 +reg aw_en; +wire slv_reg_rden; +wire slv_reg_wren; +reg [C_S_AXI_DATA_WIDTH-1:0] slv_reg0; +reg [C_S_AXI_DATA_WIDTH-1:0] slv_reg1; +reg [C_S_AXI_DATA_WIDTH-1:0] slv_reg2; +reg [C_S_AXI_DATA_WIDTH-1:0] slv_reg3; +reg [C_S_AXI_DATA_WIDTH-1:0] reg_data_out; + +integer byte_index; +// I/O Connections assignments + +assign S_AXI_AWREADY = axi_awready; +assign S_AXI_WREADY = axi_wready; +assign S_AXI_BRESP = axi_bresp; +assign S_AXI_BVALID = axi_bvalid; +assign S_AXI_ARREADY = axi_arready; +assign S_AXI_RDATA = axi_rdata; +assign S_AXI_RRESP = axi_rresp; +assign S_AXI_RVALID = axi_rvalid; +// Implement axi_awready generation +// axi_awready is asserted for one S_AXI_ACLK clock cycle when both +// S_AXI_AWVALID and S_AXI_WVALID are asserted. axi_awready is +// de-asserted when reset is low. + +always @( posedge S_AXI_ACLK ) begin + if ( S_AXI_ARESETN == 1'b0 ) begin + axi_awready <= 1'b0; + aw_en <= 1'b1; + end + else begin + if (~axi_awready && S_AXI_AWVALID && S_AXI_WVALID && aw_en) begin + axi_awready <= 1'b1; + aw_en <= 1'b0; + end + else if (S_AXI_BREADY && axi_bvalid) begin + aw_en <= 1'b1; + axi_awready <= 1'b0; + end + else begin + axi_awready <= 1'b0; + end + end +end + +// Implement axi_awaddr latching +// This process is used to latch the address when both +// S_AXI_AWVALID and S_AXI_WVALID are valid. +always @( posedge S_AXI_ACLK ) begin + if ( S_AXI_ARESETN == 1'b0 ) begin + axi_awaddr <= 0; + end + else begin + if (~axi_awready && S_AXI_AWVALID && S_AXI_WVALID && aw_en) begin + // Write Address latching + axi_awaddr <= S_AXI_AWADDR; + end + end +end + +// Implement axi_wready generation +// axi_wready is asserted for one S_AXI_ACLK clock cycle when both +// S_AXI_AWVALID and S_AXI_WVALID are asserted. axi_wready is +// de-asserted when reset is low. +always @( posedge S_AXI_ACLK ) begin + if ( S_AXI_ARESETN == 1'b0 ) begin + axi_wready <= 1'b0; + end + else begin + if (~axi_wready && S_AXI_WVALID && S_AXI_AWVALID && aw_en ) begin + axi_wready <= 1'b1; + end + else begin + axi_wready <= 1'b0; + end + end +end + +// Implement write response logic generation +// The write response and response valid signals are asserted by the slave +// when axi_wready, S_AXI_WVALID, axi_wready and S_AXI_WVALID are asserted. +// This marks the acceptance of address and indicates the status of +// write transaction. + +always @( posedge S_AXI_ACLK ) begin + if ( S_AXI_ARESETN == 1'b0 ) begin + axi_bvalid <= 0; + axi_bresp <= 2'b0; + end + else begin + if (axi_awready && S_AXI_AWVALID && ~axi_bvalid && axi_wready && S_AXI_WVALID) begin + // indicates a valid write response is available + axi_bvalid <= 1'b1; + axi_bresp <= 2'b0; // 'OKAY' response + end // work error responses in future + else begin + if (S_AXI_BREADY && axi_bvalid) begin + axi_bvalid <= 1'b0; + end + end + end +end + +// Implement axi_arready generation +// axi_arready is asserted for one S_AXI_ACLK clock cycle when +// S_AXI_ARVALID is asserted. axi_awready is +// de-asserted when reset (active low) is asserted. +// The read address is also latched when S_AXI_ARVALID is +// asserted. axi_araddr is reset to zero on reset assertion. + +always @( posedge S_AXI_ACLK ) begin + if ( S_AXI_ARESETN == 1'b0 ) begin + axi_arready <= 1'b0; + axi_araddr <= 32'b0; + end + else begin + if (~axi_arready && S_AXI_ARVALID) begin + // indicates that the slave has acceped the valid read address + axi_arready <= 1'b1; + // Read address latching + axi_araddr <= S_AXI_ARADDR; + end + else begin + axi_arready <= 1'b0; + end + end +end + +// Implement axi_arvalid generation +// axi_rvalid is asserted for one S_AXI_ACLK clock cycle when both +// S_AXI_ARVALID and axi_arready are asserted. The slave registers +// data are available on the axi_rdata bus at this instance. The +// assertion of axi_rvalid marks the validity of read data on the +// bus and axi_rresp indicates the status of read transaction.axi_rvalid +// is deasserted on reset (active low). axi_rresp and axi_rdata are +// cleared to zero on reset (active low). +always @( posedge S_AXI_ACLK ) begin + if ( S_AXI_ARESETN == 1'b0 ) begin + axi_rvalid <= 0; + axi_rresp <= 0; + end + else begin + if (axi_arready && S_AXI_ARVALID && ~axi_rvalid) begin + // Valid read data is available at the read data bus + axi_rvalid <= 1'b1; + axi_rresp <= 2'b0; // 'OKAY' response + end + else if (axi_rvalid && S_AXI_RREADY) begin + // Read data is accepted by the master + axi_rvalid <= 1'b0; + end + end +end + +// Output register or memory read data +always @( posedge S_AXI_ACLK ) begin + if ( S_AXI_ARESETN == 1'b0 ) begin + axi_rdata <= 0; + end + else begin + if (slv_reg_rden) begin + axi_rdata <= reg_data_out; // register read data + end + end +end + +// Implement memory mapped register select and write logic generation +// The write data is accepted and written to memory mapped registers when +// axi_awready, S_AXI_WVALID, axi_wready and S_AXI_WVALID are asserted. Write strobes are used to +// select byte enables of slave registers while writing. +// These registers are cleared when reset (active low) is applied. +// Slave register write enable is asserted when valid address and data are available +// and the slave is ready to accept the write address and write data. +assign slv_reg_wren = axi_wready && S_AXI_WVALID && axi_awready && S_AXI_AWVALID; + +always @( posedge S_AXI_ACLK ) begin + if ( S_AXI_ARESETN == 1'b0 ) begin + slv_reg0 <= 0; + slv_reg1 <= 0; + slv_reg2 <= 0; + slv_reg3 <= 0; + end + else begin + if (slv_reg_wren) begin + case ( axi_awaddr[ADDR_LSB+OPT_MEM_ADDR_BITS:ADDR_LSB] ) + 4'd0:for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 ) + if ( S_AXI_WSTRB[byte_index] == 1 ) begin + slv_reg0[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8]; + end + 4'd1:for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 ) + if ( S_AXI_WSTRB[byte_index] == 1 ) begin + slv_reg1[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8]; + end + 4'd2:for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 ) + if ( S_AXI_WSTRB[byte_index] == 1 ) begin + slv_reg2[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8]; + end + 4'd3:for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 ) + if ( S_AXI_WSTRB[byte_index] == 1 ) begin + slv_reg3[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8]; + end + default : + begin + slv_reg0 <= slv_reg0; + slv_reg1 <= slv_reg1; + slv_reg2 <= slv_reg2; + slv_reg3 <= slv_reg3; + end + endcase + end + end +end + +// Implement memory mapped register select and read logic generation +// Slave register read enable is asserted when valid address is available +// and the slave is ready to accept the read address. +assign slv_reg_rden = axi_arready & S_AXI_ARVALID & ~axi_rvalid; +always @(*) begin + case ( axi_araddr[ADDR_LSB+OPT_MEM_ADDR_BITS:ADDR_LSB] ) + 4'd0 : reg_data_out <= slv_reg0; + 4'd1 : reg_data_out <= slv_reg1; + 4'd2 : reg_data_out <= slv_reg2; + 4'd3 : reg_data_out <= slv_reg3; + default : reg_data_out <= 0; + endcase +end + +// Add user logic here + +// User logic ends + +endmodule diff --git a/lib/common/Soc/Cortex_M0/cortexm0ds_logic.v b/lib/common/Soc/Cortex_M0/cortexm0ds_logic.v new file mode 100644 index 0000000..50648fc --- /dev/null +++ b/lib/common/Soc/Cortex_M0/cortexm0ds_logic.v @@ -0,0 +1,20279 @@ +//------------------------------------------------------------------------------ +// The confidential and proprietary information contained in this file may +// only be used by a person authorised under and to the extent permitted +// by a subsisting licensing agreement from ARM Limited or its affiliates. +// +// (C) COPYRIGHT 2017 ARM Limited or its affiliates. +// ALL RIGHTS RESERVED +// +// This entire notice must be reproduced on all copies of this file +// and copies of this file may only be made by a person if such person is +// permitted to do so under the terms of a subsisting license agreement +// from ARM Limited or its affiliates. +// +// Version and Release Control Information: +// +// File Revision : $Revision: $ +// File Date : $Date: $ +// +// Release Information : development +// +//------------------------------------------------------------------------------ + +//------------------------------------------------------------------------------ +// Cortex-M0 DesignStart processor logic level +//------------------------------------------------------------------------------ + +module cortexm0ds_logic +(FCLK, SCLK, HCLK, DCLK, PORESETn, DBGRESETn, HRESETn, +SWCLKTCK, nTRST, HADDR, HBURST, HMASTLOCK, HPROT, HSIZE, HTRANS, HWDATA, +HWRITE, HRDATA, HREADY, HRESP, HMASTER, CODENSEQ, CODEHINTDE, SPECHTRANS +, SWDITMS, TDI, SWDO, SWDOEN, TDO, nTDOEN, DBGRESTART, DBGRESTARTED, +EDBGRQ, HALTED, NMI, IRQ, TXEV, RXEV, LOCKUP, SYSRESETREQ, STCALIB, +STCLKEN, IRQLATENCY, ECOREVNUM, GATEHCLK, SLEEPING, SLEEPDEEP, WAKEUP, +WICSENSE, SLEEPHOLDREQn, SLEEPHOLDACKn, WICENREQ, WICENACK, CDBGPWRUPREQ +, CDBGPWRUPACK, SE, RSTBYPASS, vis_r0_o, vis_r1_o, vis_r2_o, vis_r3_o, +vis_r4_o, vis_r5_o, vis_r6_o, vis_r7_o, vis_r8_o, vis_r9_o, vis_r10_o, +vis_r11_o, vis_r12_o, vis_r14_o, vis_msp_o, vis_psp_o, vis_pc_o, +vis_apsr_o, vis_tbit_o, vis_ipsr_o, vis_control_o, vis_primask_o); + +output [31:0] HADDR; +output [2:0] HBURST; +output [3:0] HPROT; +output [2:0] HSIZE; +output [1:0] HTRANS; +output [31:0] HWDATA; +input [31:0] HRDATA; +output [2:0] CODEHINTDE; +input [31:0] IRQ; +input [25:0] STCALIB; +input [7:0] IRQLATENCY; +input [27:0] ECOREVNUM; +output [33:0] WICSENSE; +output [31:0] vis_r0_o; +output [31:0] vis_r1_o; +output [31:0] vis_r2_o; +output [31:0] vis_r3_o; +output [31:0] vis_r4_o; +output [31:0] vis_r5_o; +output [31:0] vis_r6_o; +output [31:0] vis_r7_o; +output [31:0] vis_r8_o; +output [31:0] vis_r9_o; +output [31:0] vis_r10_o; +output [31:0] vis_r11_o; +output [31:0] vis_r12_o; +output [31:0] vis_r14_o; +output [29:0] vis_msp_o; +output [29:0] vis_psp_o; +output [30:0] vis_pc_o; +output [3:0] vis_apsr_o; +output [5:0] vis_ipsr_o; +input FCLK; +input SCLK; +input HCLK; +input DCLK; +input PORESETn; +input DBGRESETn; +input HRESETn; +input SWCLKTCK; +input nTRST; +input HREADY; +input HRESP; +input SWDITMS; +input TDI; +input DBGRESTART; +input EDBGRQ; +input NMI; +input RXEV; +input STCLKEN; +input SLEEPHOLDREQn; +input WICENREQ; +input CDBGPWRUPACK; +input SE; +input RSTBYPASS; +output HMASTLOCK; +output HWRITE; +output HMASTER; +output CODENSEQ; +output SPECHTRANS; +output SWDO; +output SWDOEN; +output TDO; +output nTDOEN; +output DBGRESTARTED; +output HALTED; +output TXEV; +output LOCKUP; +output SYSRESETREQ; +output GATEHCLK; +output SLEEPING; +output SLEEPDEEP; +output WAKEUP; +output SLEEPHOLDACKn; +output WICENACK; +output CDBGPWRUPREQ; +output vis_tbit_o; +output vis_control_o; +output vis_primask_o; + +wire Fmdhu6, Qmdhu6, Pndhu6, Oodhu6, Npdhu6, Qqdhu6, Fsdhu6, Stdhu6, Fvdhu6, Qwdhu6; +wire Jydhu6, C0ehu6, S1ehu6, L3ehu6, E5ehu6, T6ehu6, L8ehu6, Caehu6, Qbehu6, Edehu6; +wire Seehu6, Ggehu6, Uhehu6, Ijehu6, Wkehu6, Kmehu6, Ynehu6, Mpehu6, Arehu6, Osehu6; +wire Cuehu6, Qvehu6, Exehu6, Syehu6, G0fhu6, U1fhu6, I3fhu6, W4fhu6, K6fhu6, Y7fhu6; +wire M9fhu6, Abfhu6, Ocfhu6, Cefhu6, Qffhu6, Dhfhu6, Qifhu6, Dkfhu6, Qlfhu6, Dnfhu6; +wire Qofhu6, Dqfhu6, Vrfhu6, Ntfhu6, Ivfhu6, Dxfhu6, Yyfhu6, R0ghu6, N2ghu6, H4ghu6; +wire H6ghu6, Y7ghu6, V9ghu6, Sbghu6, Ndghu6, Gfghu6, Ahghu6, Righu6, Ikghu6, Zlghu6; +wire Qnghu6, Npghu6, Krghu6, Ftghu6, Dvghu6, Bxghu6, Yyghu6, T0hhu6, H2hhu6, S3hhu6; +wire E5hhu6, R6hhu6, D8hhu6, P9hhu6, Hbhhu6, Vchhu6, Jehhu6, Aghhu6, Qhhhu6, Ijhhu6; +wire Alhhu6, Smhhu6, Kohhu6, Wphhu6, Drhhu6, Kshhu6, Rthhu6, Yuhhu6, Gwhhu6, Oxhhu6; +wire Wyhhu6, E0ihu6, M1ihu6, U2ihu6, C4ihu6, K5ihu6, S6ihu6, A8ihu6, I9ihu6, Qaihu6; +wire Ybihu6, Gdihu6, Oeihu6, Wfihu6, Ehihu6, Miihu6, Ujihu6, Clihu6, Kmihu6, Snihu6; +wire Apihu6, Iqihu6, Qrihu6, Ysihu6, Guihu6, Ovihu6, Wwihu6, Eyihu6, Mzihu6, U0jhu6; +wire C2jhu6, K3jhu6, S4jhu6, A6jhu6, I7jhu6, Q8jhu6, Y9jhu6, Gbjhu6, Ocjhu6, Wdjhu6; +wire Efjhu6, Mgjhu6, Uhjhu6, Cjjhu6, Kkjhu6, Sljhu6, Anjhu6, Iojhu6, Qpjhu6, Yqjhu6; +wire Gsjhu6, Otjhu6, Wujhu6, Ewjhu6, Mxjhu6, Uyjhu6, C0khu6, K1khu6, S2khu6, A4khu6; +wire I5khu6, Q6khu6, Y7khu6, G9khu6, Oakhu6, Wbkhu6, Edkhu6, Mekhu6, Ufkhu6, Chkhu6; +wire Kikhu6, Sjkhu6, Alkhu6, Imkhu6, Qnkhu6, Yokhu6, Gqkhu6, Orkhu6, Wskhu6, Eukhu6; +wire Mvkhu6, Uwkhu6, Cykhu6, Kzkhu6, S0lhu6, A2lhu6, I3lhu6, Q4lhu6, Y5lhu6, G7lhu6; +wire O8lhu6, W9lhu6, Eblhu6, Lclhu6, Sdlhu6, Zelhu6, Gglhu6, Nhlhu6, Uilhu6, Bklhu6; +wire Illhu6, Pmlhu6, Wnlhu6, Dplhu6, Kqlhu6, Rrlhu6, Yslhu6, Fulhu6, Mvlhu6, Twlhu6; +wire Aylhu6, Hzlhu6, O0mhu6, V1mhu6, C3mhu6, J4mhu6, Q5mhu6, X6mhu6, E8mhu6, L9mhu6; +wire Samhu6, Zbmhu6, Gdmhu6, Nemhu6, Ufmhu6, Bhmhu6, Iimhu6, Pjmhu6, Wkmhu6, Dmmhu6; +wire Knmhu6, Romhu6, Ypmhu6, Frmhu6, Msmhu6, Ttmhu6, Avmhu6, Hwmhu6, Vxmhu6, Jzmhu6; +wire R0nhu6, A2nhu6, N3nhu6, I5nhu6, B7nhu6, Q8nhu6, Fanhu6, Ubnhu6, Jdnhu6, Yenhu6; +wire Rgnhu6, Pinhu6, Hknhu6, Ulnhu6, Fnnhu6, Tonhu6, Iqnhu6, Rrnhu6, Dtnhu6, Punhu6; +wire Gwnhu6, Cynhu6, Lznhu6, X0ohu6, G2ohu6, S3ohu6, O5ohu6, Q7ohu6, M9ohu6, R9ohu6; +wire W9ohu6, Daohu6, Kaohu6, Raohu6, Yaohu6, Fbohu6, Mbohu6, Tbohu6, Acohu6, Hcohu6; +wire Ocohu6, Vcohu6, Cdohu6, Jdohu6, Qdohu6, Xdohu6, Eeohu6, Leohu6, Seohu6, Zeohu6; +wire Gfohu6, Nfohu6, Ufohu6, Bgohu6, Igohu6, Pgohu6, Wgohu6, Dhohu6, Khohu6, Rhohu6; +wire Yhohu6, Fiohu6, Miohu6, Tiohu6, Ajohu6, Hjohu6, Ojohu6, Vjohu6, Ckohu6, Jkohu6; +wire Qkohu6, Xkohu6, Elohu6, Llohu6, Slohu6, Zlohu6, Gmohu6, Nmohu6, Umohu6, Bnohu6; +wire Inohu6, Pnohu6, Wnohu6, Doohu6, Koohu6, Roohu6, Yoohu6, Fpohu6, Mpohu6, Tpohu6; +wire Aqohu6, Hqohu6, Oqohu6, Vqohu6, Crohu6, Jrohu6, Qrohu6, Xrohu6, Esohu6, Lsohu6; +wire Ssohu6, Zsohu6, Gtohu6, Ntohu6, Utohu6, Buohu6, Iuohu6, Puohu6, Wuohu6, Dvohu6; +wire Kvohu6, Rvohu6, Yvohu6, Fwohu6, Mwohu6, Twohu6, Axohu6, Hxohu6, Oxohu6, Vxohu6; +wire Cyohu6, Jyohu6, Qyohu6, Xyohu6, Ezohu6, Lzohu6, Szohu6, Zzohu6, G0phu6, N0phu6; +wire U0phu6, B1phu6, I1phu6, P1phu6, W1phu6, D2phu6, K2phu6, R2phu6, Y2phu6, F3phu6; +wire M3phu6, T3phu6, A4phu6, H4phu6, O4phu6, V4phu6, C5phu6, J5phu6, Q5phu6, X5phu6; +wire E6phu6, L6phu6, S6phu6, Z6phu6, G7phu6, N7phu6, U7phu6, B8phu6, I8phu6, P8phu6; +wire W8phu6, D9phu6, K9phu6, R9phu6, Y9phu6, Faphu6, Maphu6, Taphu6, Abphu6, Hbphu6; +wire Obphu6, Vbphu6, Ccphu6, Jcphu6, Qcphu6, Xcphu6, Edphu6, Ldphu6, Sdphu6, Zdphu6; +wire Gephu6, Nephu6, Uephu6, Bfphu6, Ifphu6, Pfphu6, Wfphu6, Dgphu6, Kgphu6, Rgphu6; +wire Ygphu6, Fhphu6, Mhphu6, Thphu6, Aiphu6, Hiphu6, Oiphu6, Viphu6, Cjphu6, Jjphu6; +wire Qjphu6, Xjphu6, Ekphu6, Lkphu6, Skphu6, Zkphu6, Glphu6, Nlphu6, Ulphu6, Bmphu6; +wire Imphu6, Pmphu6, Wmphu6, Dnphu6, Knphu6, Rnphu6, Ynphu6, Fophu6, Mophu6, Tophu6; +wire Apphu6, Hpphu6, Opphu6, Vpphu6, Cqphu6, Jqphu6, Qqphu6, Xqphu6, Erphu6, Lrphu6; +wire Srphu6, Zrphu6, Gsphu6, Nsphu6, Usphu6, Btphu6, Itphu6, Ptphu6, Wtphu6, Duphu6; +wire Kuphu6, Ruphu6, Yuphu6, Fvphu6, Mvphu6, Tvphu6, Awphu6, Hwphu6, Owphu6, Vwphu6; +wire Cxphu6, Jxphu6, Qxphu6, Xxphu6, Eyphu6, Lyphu6, Syphu6, Zyphu6, Gzphu6, Nzphu6; +wire Uzphu6, B0qhu6, I0qhu6, P0qhu6, W0qhu6, D1qhu6, K1qhu6, R1qhu6, Y1qhu6, F2qhu6; +wire M2qhu6, T2qhu6, A3qhu6, H3qhu6, O3qhu6, V3qhu6, C4qhu6, J4qhu6, Q4qhu6, X4qhu6; +wire E5qhu6, L5qhu6, S5qhu6, Z5qhu6, G6qhu6, N6qhu6, U6qhu6, B7qhu6, I7qhu6, P7qhu6; +wire W7qhu6, D8qhu6, K8qhu6, R8qhu6, Y8qhu6, F9qhu6, M9qhu6, T9qhu6, Aaqhu6, Haqhu6; +wire Oaqhu6, Vaqhu6, Cbqhu6, Jbqhu6, Qbqhu6, Xbqhu6, Ecqhu6, Lcqhu6, Scqhu6, Zcqhu6; +wire Gdqhu6, Ndqhu6, Udqhu6, Beqhu6, Ieqhu6, Peqhu6, Weqhu6, Dfqhu6, Kfqhu6, Rfqhu6; +wire Yfqhu6, Fgqhu6, Mgqhu6, Tgqhu6, Ahqhu6, Hhqhu6, Ohqhu6, Vhqhu6, Ciqhu6, Jiqhu6; +wire Qiqhu6, Xiqhu6, Ejqhu6, Ljqhu6, Sjqhu6, Zjqhu6, Gkqhu6, Nkqhu6, Ukqhu6, Blqhu6; +wire Ilqhu6, Plqhu6, Wlqhu6, Dmqhu6, Kmqhu6, Rmqhu6, Ymqhu6, Fnqhu6, Mnqhu6, Tnqhu6; +wire Aoqhu6, Hoqhu6, Ooqhu6, Voqhu6, Cpqhu6, Jpqhu6, Qpqhu6, Xpqhu6, Eqqhu6, Lqqhu6; +wire Sqqhu6, Zqqhu6, Grqhu6, Nrqhu6, Urqhu6, Bsqhu6, Isqhu6, Psqhu6, Wsqhu6, Dtqhu6; +wire Ktqhu6, Rtqhu6, Ytqhu6, Fuqhu6, Muqhu6, Tuqhu6, Avqhu6, Hvqhu6, Ovqhu6, Vvqhu6; +wire Cwqhu6, Jwqhu6, Qwqhu6, Xwqhu6, Exqhu6, Lxqhu6, Sxqhu6, Zxqhu6, Gyqhu6, Nyqhu6; +wire Uyqhu6, Bzqhu6, Izqhu6, Pzqhu6, Wzqhu6, D0rhu6, K0rhu6, R0rhu6, Y0rhu6, F1rhu6; +wire M1rhu6, T1rhu6, A2rhu6, H2rhu6, O2rhu6, V2rhu6, C3rhu6, J3rhu6, Q3rhu6, X3rhu6; +wire E4rhu6, L4rhu6, S4rhu6, Z4rhu6, G5rhu6, N5rhu6, U5rhu6, B6rhu6, I6rhu6, P6rhu6; +wire W6rhu6, D7rhu6, K7rhu6, R7rhu6, Y7rhu6, F8rhu6, M8rhu6, T8rhu6, A9rhu6, H9rhu6; +wire O9rhu6, V9rhu6, Carhu6, Jarhu6, Qarhu6, Xarhu6, Ebrhu6, Lbrhu6, Sbrhu6, Zbrhu6; +wire Gcrhu6, Ncrhu6, Ucrhu6, Bdrhu6, Idrhu6, Pdrhu6, Wdrhu6, Derhu6, Kerhu6, Rerhu6; +wire Yerhu6, Ffrhu6, Mfrhu6, Tfrhu6, Agrhu6, Hgrhu6, Ogrhu6, Vgrhu6, Chrhu6, Jhrhu6; +wire Qhrhu6, Xhrhu6, Eirhu6, Lirhu6, Sirhu6, Zirhu6, Gjrhu6, Njrhu6, Ujrhu6, Bkrhu6; +wire Ikrhu6, Pkrhu6, Wkrhu6, Dlrhu6, Klrhu6, Rlrhu6, Ylrhu6, Fmrhu6, Mmrhu6, Tmrhu6; +wire Anrhu6, Hnrhu6, Onrhu6, Vnrhu6, Corhu6, Jorhu6, Qorhu6, Xorhu6, Eprhu6, Lprhu6; +wire Sprhu6, Zprhu6, Gqrhu6, Nqrhu6, Uqrhu6, Brrhu6, Irrhu6, Prrhu6, Wrrhu6, Dsrhu6; +wire Ksrhu6, Rsrhu6, Ysrhu6, Ftrhu6, Mtrhu6, Ttrhu6, Aurhu6, Hurhu6, Ourhu6, Vurhu6; +wire Cvrhu6, Jvrhu6, Qvrhu6, Xvrhu6, Ewrhu6, Lwrhu6, Swrhu6, Zwrhu6, Gxrhu6, Nxrhu6; +wire Uxrhu6, Byrhu6, Iyrhu6, Pyrhu6, Wyrhu6, Dzrhu6, Kzrhu6, Rzrhu6, Yzrhu6, F0shu6; +wire M0shu6, T0shu6, A1shu6, H1shu6, O1shu6, V1shu6, C2shu6, J2shu6, Q2shu6, X2shu6; +wire E3shu6, L3shu6, S3shu6, Z3shu6, G4shu6, N4shu6, U4shu6, B5shu6, I5shu6, P5shu6; +wire W5shu6, D6shu6, K6shu6, R6shu6, Y6shu6, F7shu6, M7shu6, T7shu6, A8shu6, H8shu6; +wire O8shu6, V8shu6, C9shu6, J9shu6, Q9shu6, X9shu6, Eashu6, Lashu6, Sashu6, Zashu6; +wire Gbshu6, Nbshu6, Ubshu6, Bcshu6, Icshu6, Pcshu6, Wcshu6, Ddshu6, Kdshu6, Rdshu6; +wire Ydshu6, Feshu6, Meshu6, Teshu6, Afshu6, Hfshu6, Ofshu6, Vfshu6, Cgshu6, Jgshu6; +wire Qgshu6, Xgshu6, Ehshu6, Lhshu6, Shshu6, Zhshu6, Gishu6, Nishu6, Uishu6, Bjshu6; +wire Ijshu6, Pjshu6, Wjshu6, Dkshu6, Kkshu6, Rkshu6, Ykshu6, Flshu6, Mlshu6, Tlshu6; +wire Amshu6, Hmshu6, Omshu6, Vmshu6, Cnshu6, Jnshu6, Qnshu6, Xnshu6, Eoshu6, Loshu6; +wire Soshu6, Zoshu6, Gpshu6, Npshu6, Upshu6, Bqshu6, Iqshu6, Pqshu6, Wqshu6, Drshu6; +wire Krshu6, Rrshu6, Yrshu6, Fsshu6, Msshu6, Tsshu6, Atshu6, Htshu6, Otshu6, Vtshu6; +wire Cushu6, Jushu6, Qushu6, Xushu6, Evshu6, Lvshu6, Svshu6, Zvshu6, Gwshu6, Nwshu6; +wire Uwshu6, Bxshu6, Ixshu6, Pxshu6, Wxshu6, Dyshu6, Kyshu6, Ryshu6, Yyshu6, Fzshu6; +wire Mzshu6, Tzshu6, A0thu6, H0thu6, O0thu6, V0thu6, C1thu6, J1thu6, Q1thu6, X1thu6; +wire E2thu6, L2thu6, S2thu6, Z2thu6, G3thu6, N3thu6, U3thu6, B4thu6, I4thu6, P4thu6; +wire W4thu6, D5thu6, K5thu6, R5thu6, Y5thu6, F6thu6, M6thu6, T6thu6, A7thu6, H7thu6; +wire O7thu6, V7thu6, C8thu6, J8thu6, Q8thu6, X8thu6, E9thu6, L9thu6, S9thu6, Z9thu6; +wire Gathu6, Nathu6, Uathu6, Bbthu6, Ibthu6, Pbthu6, Wbthu6, Dcthu6, Kcthu6, Rcthu6; +wire Ycthu6, Fdthu6, Mdthu6, Tdthu6, Aethu6, Hethu6, Oethu6, Vethu6, Cfthu6, Jfthu6; +wire Qfthu6, Xfthu6, Egthu6, Lgthu6, Sgthu6, Zgthu6, Ghthu6, Nhthu6, Uhthu6, Bithu6; +wire Iithu6, Pithu6, Withu6, Djthu6, Kjthu6, Rjthu6, Yjthu6, Fkthu6, Mkthu6, Tkthu6; +wire Althu6, Hlthu6, Olthu6, Vlthu6, Cmthu6, Jmthu6, Qmthu6, Xmthu6, Enthu6, Lnthu6; +wire Snthu6, Znthu6, Gothu6, Nothu6, Uothu6, Bpthu6, Ipthu6, Ppthu6, Wpthu6, Dqthu6; +wire Kqthu6, Rqthu6, Yqthu6, Frthu6, Mrthu6, Trthu6, Asthu6, Hsthu6, Osthu6, Vsthu6; +wire Ctthu6, Jtthu6, Qtthu6, Xtthu6, Euthu6, Luthu6, Suthu6, Zuthu6, Gvthu6, Nvthu6; +wire Uvthu6, Bwthu6, Iwthu6, Pwthu6, Wwthu6, Dxthu6, Kxthu6, Rxthu6, Yxthu6, Fythu6; +wire Mythu6, Tythu6, Azthu6, Hzthu6, Ozthu6, Vzthu6, C0uhu6, J0uhu6, Q0uhu6, X0uhu6; +wire E1uhu6, L1uhu6, S1uhu6, Z1uhu6, G2uhu6, N2uhu6, U2uhu6, B3uhu6, I3uhu6, P3uhu6; +wire W3uhu6, D4uhu6, K4uhu6, R4uhu6, Y4uhu6, F5uhu6, M5uhu6, T5uhu6, A6uhu6, H6uhu6; +wire O6uhu6, V6uhu6, C7uhu6, J7uhu6, Q7uhu6, X7uhu6, E8uhu6, L8uhu6, S8uhu6, Z8uhu6; +wire G9uhu6, N9uhu6, U9uhu6, Bauhu6, Iauhu6, Pauhu6, Wauhu6, Dbuhu6, Kbuhu6, Rbuhu6; +wire Ybuhu6, Fcuhu6, Mcuhu6, Tcuhu6, Aduhu6, Hduhu6, Oduhu6, Vduhu6, Ceuhu6, Jeuhu6; +wire Qeuhu6, Xeuhu6, Efuhu6, Lfuhu6, Sfuhu6, Zfuhu6, Gguhu6, Nguhu6, Uguhu6, Bhuhu6; +wire Ihuhu6, Phuhu6, Whuhu6, Diuhu6, Kiuhu6, Riuhu6, Yiuhu6, Fjuhu6, Mjuhu6, Tjuhu6; +wire Akuhu6, Hkuhu6, Okuhu6, Vkuhu6, Cluhu6, Jluhu6, Qluhu6, Xluhu6, Emuhu6, Lmuhu6; +wire Smuhu6, Zmuhu6, Gnuhu6, Nnuhu6, Unuhu6, Bouhu6, Iouhu6, Pouhu6, Wouhu6, Dpuhu6; +wire Kpuhu6, Rpuhu6, Ypuhu6, Fquhu6, Mquhu6, Tquhu6, Aruhu6, Hruhu6, Oruhu6, Vruhu6; +wire Csuhu6, Jsuhu6, Qsuhu6, Xsuhu6, Etuhu6, Ltuhu6, Stuhu6, Ztuhu6, Guuhu6, Nuuhu6; +wire Uuuhu6, Bvuhu6, Ivuhu6, Pvuhu6, Wvuhu6, Dwuhu6, Kwuhu6, Rwuhu6, Ywuhu6, Fxuhu6; +wire Mxuhu6, Txuhu6, Ayuhu6, Hyuhu6, Oyuhu6, Vyuhu6, Czuhu6, Jzuhu6, Qzuhu6, Xzuhu6; +wire E0vhu6, L0vhu6, S0vhu6, Z0vhu6, G1vhu6, N1vhu6, U1vhu6, B2vhu6, I2vhu6, P2vhu6; +wire W2vhu6, D3vhu6, K3vhu6, R3vhu6, Y3vhu6, F4vhu6, M4vhu6, T4vhu6, A5vhu6, H5vhu6; +wire O5vhu6, V5vhu6, C6vhu6, J6vhu6, Q6vhu6, X6vhu6, E7vhu6, L7vhu6, S7vhu6, Z7vhu6; +wire G8vhu6, N8vhu6, U8vhu6, B9vhu6, I9vhu6, P9vhu6, W9vhu6, Davhu6, Kavhu6, Ravhu6; +wire Yavhu6, Fbvhu6, Mbvhu6, Tbvhu6, Acvhu6, Hcvhu6, Ocvhu6, Vcvhu6, Cdvhu6, Jdvhu6; +wire Qdvhu6, Xdvhu6, Eevhu6, Levhu6, Sevhu6, Zevhu6, Gfvhu6, Nfvhu6, Ufvhu6, Bgvhu6; +wire Igvhu6, Pgvhu6, Wgvhu6, Dhvhu6, Khvhu6, Rhvhu6, Yhvhu6, Fivhu6, Mivhu6, Tivhu6; +wire Ajvhu6, Hjvhu6, Ojvhu6, Vjvhu6, Ckvhu6, Jkvhu6, Qkvhu6, Xkvhu6, Elvhu6, Llvhu6; +wire Slvhu6, Zlvhu6, Gmvhu6, Nmvhu6, Umvhu6, Bnvhu6, Invhu6, Pnvhu6, Wnvhu6, Dovhu6; +wire Kovhu6, Rovhu6, Yovhu6, Fpvhu6, Mpvhu6, Tpvhu6, Aqvhu6, Hqvhu6, Oqvhu6, Vqvhu6; +wire Crvhu6, Jrvhu6, Qrvhu6, Xrvhu6, Esvhu6, Lsvhu6, Ssvhu6, Zsvhu6, Gtvhu6, Ntvhu6; +wire Utvhu6, Buvhu6, Iuvhu6, Puvhu6, Wuvhu6, Dvvhu6, Kvvhu6, Rvvhu6, Yvvhu6, Fwvhu6; +wire Mwvhu6, Twvhu6, Axvhu6, Hxvhu6, Oxvhu6, Vxvhu6, Cyvhu6, Jyvhu6, Qyvhu6, Xyvhu6; +wire Ezvhu6, Lzvhu6, Szvhu6, Zzvhu6, G0whu6, N0whu6, U0whu6, B1whu6, I1whu6, P1whu6; +wire W1whu6, D2whu6, K2whu6, R2whu6, Y2whu6, F3whu6, M3whu6, T3whu6, A4whu6, H4whu6; +wire O4whu6, V4whu6, C5whu6, J5whu6, Q5whu6, X5whu6, E6whu6, L6whu6, S6whu6, Z6whu6; +wire G7whu6, N7whu6, U7whu6, B8whu6, I8whu6, P8whu6, W8whu6, D9whu6, K9whu6, R9whu6; +wire Y9whu6, Fawhu6, Mawhu6, Tawhu6, Abwhu6, Hbwhu6, Obwhu6, Vbwhu6, Ccwhu6, Jcwhu6; +wire Qcwhu6, Xcwhu6, Edwhu6, Ldwhu6, Sdwhu6, Zdwhu6, Gewhu6, Newhu6, Uewhu6, Bfwhu6; +wire Ifwhu6, Pfwhu6, Wfwhu6, Dgwhu6, Kgwhu6, Rgwhu6, Ygwhu6, Fhwhu6, Mhwhu6, Thwhu6; +wire Aiwhu6, Hiwhu6, Oiwhu6, Viwhu6, Cjwhu6, Jjwhu6, Qjwhu6, Xjwhu6, Ekwhu6, Lkwhu6; +wire Skwhu6, Zkwhu6, Glwhu6, Nlwhu6, Ulwhu6, Bmwhu6, Imwhu6, Pmwhu6, Wmwhu6, Dnwhu6; +wire Knwhu6, Rnwhu6, Ynwhu6, Fowhu6, Mowhu6, Towhu6, Apwhu6, Hpwhu6, Opwhu6, Vpwhu6; +wire Cqwhu6, Jqwhu6, Qqwhu6, Xqwhu6, Erwhu6, Lrwhu6, Srwhu6, Zrwhu6, Gswhu6, Nswhu6; +wire Uswhu6, Btwhu6, Itwhu6, Ptwhu6, Wtwhu6, Duwhu6, Kuwhu6, Ruwhu6, Yuwhu6, Fvwhu6; +wire Mvwhu6, Tvwhu6, Awwhu6, Hwwhu6, Owwhu6, Vwwhu6, Cxwhu6, Jxwhu6, Qxwhu6, Xxwhu6; +wire Eywhu6, Lywhu6, Sywhu6, Zywhu6, Gzwhu6, Nzwhu6, Uzwhu6, B0xhu6, I0xhu6, P0xhu6; +wire W0xhu6, D1xhu6, K1xhu6, R1xhu6, Y1xhu6, F2xhu6, M2xhu6, T2xhu6, A3xhu6, H3xhu6; +wire O3xhu6, V3xhu6, C4xhu6, J4xhu6, Q4xhu6, X4xhu6, E5xhu6, L5xhu6, S5xhu6, Z5xhu6; +wire G6xhu6, N6xhu6, U6xhu6, B7xhu6, I7xhu6, P7xhu6, W7xhu6, D8xhu6, K8xhu6, R8xhu6; +wire Y8xhu6, F9xhu6, M9xhu6, T9xhu6, Aaxhu6, Haxhu6, Oaxhu6, Vaxhu6, Cbxhu6, Jbxhu6; +wire Qbxhu6, Xbxhu6, Ecxhu6, Lcxhu6, Scxhu6, Zcxhu6, Gdxhu6, Ndxhu6, Udxhu6, Bexhu6; +wire Iexhu6, Pexhu6, Wexhu6, Dfxhu6, Kfxhu6, Rfxhu6, Yfxhu6, Fgxhu6, Mgxhu6, Tgxhu6; +wire Ahxhu6, Hhxhu6, Ohxhu6, Vhxhu6, Cixhu6, Jixhu6, Qixhu6, Xixhu6, Ejxhu6, Ljxhu6; +wire Sjxhu6, Zjxhu6, Gkxhu6, Nkxhu6, Ukxhu6, Blxhu6, Ilxhu6, Plxhu6, Wlxhu6, Dmxhu6; +wire Kmxhu6, Rmxhu6, Ymxhu6, Fnxhu6, Mnxhu6, Tnxhu6, Aoxhu6, Hoxhu6, Ooxhu6, Voxhu6; +wire Cpxhu6, Jpxhu6, Qpxhu6, Xpxhu6, Eqxhu6, Lqxhu6, Sqxhu6, Zqxhu6, Grxhu6, Nrxhu6; +wire Urxhu6, Bsxhu6, Isxhu6, Psxhu6, Wsxhu6, Dtxhu6, Ktxhu6, Rtxhu6, Ytxhu6, Fuxhu6; +wire Muxhu6, Tuxhu6, Avxhu6, Hvxhu6, Ovxhu6, Vvxhu6, Cwxhu6, Jwxhu6, Qwxhu6, Xwxhu6; +wire Exxhu6, Lxxhu6, Sxxhu6, Zxxhu6, Gyxhu6, Nyxhu6, Uyxhu6, Bzxhu6, Izxhu6, Pzxhu6; +wire Wzxhu6, D0yhu6, K0yhu6, R0yhu6, Y0yhu6, F1yhu6, M1yhu6, T1yhu6, A2yhu6, H2yhu6; +wire O2yhu6, V2yhu6, C3yhu6, J3yhu6, Q3yhu6, X3yhu6, E4yhu6, L4yhu6, S4yhu6, Z4yhu6; +wire G5yhu6, N5yhu6, U5yhu6, B6yhu6, I6yhu6, P6yhu6, W6yhu6, D7yhu6, K7yhu6, R7yhu6; +wire Y7yhu6, F8yhu6, M8yhu6, T8yhu6, A9yhu6, H9yhu6, O9yhu6, V9yhu6, Cayhu6, Jayhu6; +wire Qayhu6, Xayhu6, Ebyhu6, Lbyhu6, Sbyhu6, Zbyhu6, Gcyhu6, Ncyhu6, Ucyhu6, Bdyhu6; +wire Idyhu6, Pdyhu6, Wdyhu6, Deyhu6, Keyhu6, Reyhu6, Yeyhu6, Ffyhu6, Mfyhu6, Tfyhu6; +wire Agyhu6, Hgyhu6, Ogyhu6, Vgyhu6, Chyhu6, Jhyhu6, Qhyhu6, Xhyhu6, Eiyhu6, Liyhu6; +wire Siyhu6, Ziyhu6, Gjyhu6, Njyhu6, Ujyhu6, Bkyhu6, Ikyhu6, Pkyhu6, Wkyhu6, Dlyhu6; +wire Klyhu6, Rlyhu6, Ylyhu6, Fmyhu6, Mmyhu6, Tmyhu6, Anyhu6, Hnyhu6, Onyhu6, Vnyhu6; +wire Coyhu6, Joyhu6, Qoyhu6, Xoyhu6, Epyhu6, Lpyhu6, Spyhu6, Zpyhu6, Gqyhu6, Nqyhu6; +wire Uqyhu6, Bryhu6, Iryhu6, Pryhu6, Wryhu6, Dsyhu6, Ksyhu6, Rsyhu6, Ysyhu6, Ftyhu6; +wire Mtyhu6, Ttyhu6, Auyhu6, Huyhu6, Ouyhu6, Vuyhu6, Cvyhu6, Jvyhu6, Qvyhu6, Xvyhu6; +wire Ewyhu6, Lwyhu6, Swyhu6, Zwyhu6, Gxyhu6, Nxyhu6, Uxyhu6, Byyhu6, Iyyhu6, Pyyhu6; +wire Wyyhu6, Dzyhu6, Kzyhu6, Rzyhu6, Yzyhu6, F0zhu6, M0zhu6, T0zhu6, A1zhu6, H1zhu6; +wire O1zhu6, V1zhu6, C2zhu6, J2zhu6, Q2zhu6, X2zhu6, E3zhu6, L3zhu6, S3zhu6, Z3zhu6; +wire G4zhu6, N4zhu6, U4zhu6, B5zhu6, I5zhu6, P5zhu6, W5zhu6, D6zhu6, K6zhu6, R6zhu6; +wire Y6zhu6, F7zhu6, M7zhu6, T7zhu6, A8zhu6, H8zhu6, O8zhu6, V8zhu6, C9zhu6, J9zhu6; +wire Q9zhu6, X9zhu6, Eazhu6, Lazhu6, Sazhu6, Zazhu6, Gbzhu6, Nbzhu6, Ubzhu6, Bczhu6; +wire Iczhu6, Pczhu6, Wczhu6, Ddzhu6, Kdzhu6, Rdzhu6, Ydzhu6, Fezhu6, Mezhu6, Tezhu6; +wire Afzhu6, Hfzhu6, Ofzhu6, Vfzhu6, Cgzhu6, Jgzhu6, Qgzhu6, Xgzhu6, Ehzhu6, Lhzhu6; +wire Shzhu6, Zhzhu6, Gizhu6, Nizhu6, Uizhu6, Bjzhu6, Ijzhu6, Pjzhu6, Wjzhu6, Dkzhu6; +wire Kkzhu6, Rkzhu6, Ykzhu6, Flzhu6, Mlzhu6, Tlzhu6, Amzhu6, Hmzhu6, Omzhu6, Vmzhu6; +wire Cnzhu6, Jnzhu6, Qnzhu6, Xnzhu6, Eozhu6, Lozhu6, Sozhu6, Zozhu6, Gpzhu6, Npzhu6; +wire Upzhu6, Bqzhu6, Iqzhu6, Pqzhu6, Wqzhu6, Drzhu6, Krzhu6, Rrzhu6, Yrzhu6, Fszhu6; +wire Mszhu6, Tszhu6, Atzhu6, Htzhu6, Otzhu6, Vtzhu6, Cuzhu6, Juzhu6, Quzhu6, Xuzhu6; +wire Evzhu6, Lvzhu6, Svzhu6, Zvzhu6, Gwzhu6, Nwzhu6, Uwzhu6, Bxzhu6, Ixzhu6, Pxzhu6; +wire Wxzhu6, Dyzhu6, Kyzhu6, Ryzhu6, Yyzhu6, Fzzhu6, Mzzhu6, Tzzhu6, A00iu6, H00iu6; +wire O00iu6, V00iu6, C10iu6, J10iu6, Q10iu6, X10iu6, E20iu6, L20iu6, S20iu6, Z20iu6; +wire G30iu6, N30iu6, U30iu6, B40iu6, I40iu6, P40iu6, W40iu6, D50iu6, K50iu6, R50iu6; +wire Y50iu6, F60iu6, M60iu6, T60iu6, A70iu6, H70iu6, O70iu6, V70iu6, C80iu6, J80iu6; +wire Q80iu6, X80iu6, E90iu6, L90iu6, S90iu6, Z90iu6, Ga0iu6, Na0iu6, Ua0iu6, Bb0iu6; +wire Ib0iu6, Pb0iu6, Wb0iu6, Dc0iu6, Kc0iu6, Rc0iu6, Yc0iu6, Fd0iu6, Md0iu6, Td0iu6; +wire Ae0iu6, He0iu6, Oe0iu6, Ve0iu6, Cf0iu6, Jf0iu6, Qf0iu6, Xf0iu6, Eg0iu6, Lg0iu6; +wire Sg0iu6, Zg0iu6, Gh0iu6, Nh0iu6, Uh0iu6, Bi0iu6, Ii0iu6, Pi0iu6, Wi0iu6, Dj0iu6; +wire Kj0iu6, Rj0iu6, Yj0iu6, Fk0iu6, Mk0iu6, Tk0iu6, Al0iu6, Hl0iu6, Ol0iu6, Vl0iu6; +wire Cm0iu6, Jm0iu6, Qm0iu6, Xm0iu6, En0iu6, Ln0iu6, Sn0iu6, Zn0iu6, Go0iu6, No0iu6; +wire Uo0iu6, Bp0iu6, Ip0iu6, Pp0iu6, Wp0iu6, Dq0iu6, Kq0iu6, Rq0iu6, Yq0iu6, Fr0iu6; +wire Mr0iu6, Tr0iu6, As0iu6, Hs0iu6, Os0iu6, Vs0iu6, Ct0iu6, Jt0iu6, Qt0iu6, Xt0iu6; +wire Eu0iu6, Lu0iu6, Su0iu6, Zu0iu6, Gv0iu6, Nv0iu6, Uv0iu6, Bw0iu6, Iw0iu6, Pw0iu6; +wire Ww0iu6, Dx0iu6, Kx0iu6, Rx0iu6, Yx0iu6, Fy0iu6, My0iu6, Ty0iu6, Az0iu6, Hz0iu6; +wire Oz0iu6, Vz0iu6, C01iu6, J01iu6, Q01iu6, X01iu6, E11iu6, L11iu6, S11iu6, Z11iu6; +wire G21iu6, N21iu6, U21iu6, B31iu6, I31iu6, P31iu6, W31iu6, D41iu6, K41iu6, R41iu6; +wire Y41iu6, F51iu6, M51iu6, T51iu6, A61iu6, H61iu6, O61iu6, V61iu6, C71iu6, J71iu6; +wire Q71iu6, X71iu6, E81iu6, L81iu6, S81iu6, Z81iu6, G91iu6, N91iu6, U91iu6, Ba1iu6; +wire Ia1iu6, Pa1iu6, Wa1iu6, Db1iu6, Kb1iu6, Rb1iu6, Yb1iu6, Fc1iu6, Mc1iu6, Tc1iu6; +wire Ad1iu6, Hd1iu6, Od1iu6, Vd1iu6, Ce1iu6, Je1iu6, Qe1iu6, Xe1iu6, Ef1iu6, Lf1iu6; +wire Sf1iu6, Zf1iu6, Gg1iu6, Ng1iu6, Ug1iu6, Bh1iu6, Ih1iu6, Ph1iu6, Wh1iu6, Di1iu6; +wire Ki1iu6, Ri1iu6, Yi1iu6, Fj1iu6, Mj1iu6, Tj1iu6, Ak1iu6, Hk1iu6, Ok1iu6, Vk1iu6; +wire Cl1iu6, Jl1iu6, Ql1iu6, Xl1iu6, Em1iu6, Lm1iu6, Sm1iu6, Zm1iu6, Gn1iu6, Nn1iu6; +wire Un1iu6, Bo1iu6, Io1iu6, Po1iu6, Wo1iu6, Dp1iu6, Kp1iu6, Rp1iu6, Yp1iu6, Fq1iu6; +wire Mq1iu6, Tq1iu6, Ar1iu6, Hr1iu6, Or1iu6, Vr1iu6, Cs1iu6, Js1iu6, Qs1iu6, Xs1iu6; +wire Et1iu6, Lt1iu6, St1iu6, Zt1iu6, Gu1iu6, Nu1iu6, Uu1iu6, Bv1iu6, Iv1iu6, Pv1iu6; +wire Wv1iu6, Dw1iu6, Kw1iu6, Rw1iu6, Yw1iu6, Fx1iu6, Mx1iu6, Tx1iu6, Ay1iu6, Hy1iu6; +wire Oy1iu6, Vy1iu6, Cz1iu6, Jz1iu6, Qz1iu6, Xz1iu6, E02iu6, L02iu6, S02iu6, Z02iu6; +wire G12iu6, N12iu6, U12iu6, B22iu6, I22iu6, P22iu6, W22iu6, D32iu6, K32iu6, R32iu6; +wire Y32iu6, F42iu6, M42iu6, T42iu6, A52iu6, H52iu6, O52iu6, V52iu6, C62iu6, J62iu6; +wire Q62iu6, X62iu6, E72iu6, L72iu6, S72iu6, Z72iu6, G82iu6, N82iu6, U82iu6, B92iu6; +wire I92iu6, P92iu6, W92iu6, Da2iu6, Ka2iu6, Ra2iu6, Ya2iu6, Fb2iu6, Mb2iu6, Tb2iu6; +wire Ac2iu6, Hc2iu6, Oc2iu6, Vc2iu6, Cd2iu6, Jd2iu6, Qd2iu6, Xd2iu6, Ee2iu6, Le2iu6; +wire Se2iu6, Ze2iu6, Gf2iu6, Nf2iu6, Uf2iu6, Bg2iu6, Ig2iu6, Pg2iu6, Wg2iu6, Dh2iu6; +wire Kh2iu6, Rh2iu6, Yh2iu6, Fi2iu6, Mi2iu6, Ti2iu6, Aj2iu6, Hj2iu6, Oj2iu6, Vj2iu6; +wire Ck2iu6, Jk2iu6, Qk2iu6, Xk2iu6, El2iu6, Ll2iu6, Sl2iu6, Zl2iu6, Gm2iu6, Nm2iu6; +wire Um2iu6, Bn2iu6, In2iu6, Pn2iu6, Wn2iu6, Do2iu6, Ko2iu6, Ro2iu6, Yo2iu6, Fp2iu6; +wire Mp2iu6, Tp2iu6, Aq2iu6, Hq2iu6, Oq2iu6, Vq2iu6, Cr2iu6, Jr2iu6, Qr2iu6, Xr2iu6; +wire Es2iu6, Ls2iu6, Ss2iu6, Zs2iu6, Gt2iu6, Nt2iu6, Ut2iu6, Bu2iu6, Iu2iu6, Pu2iu6; +wire Wu2iu6, Dv2iu6, Kv2iu6, Rv2iu6, Yv2iu6, Fw2iu6, Mw2iu6, Tw2iu6, Ax2iu6, Hx2iu6; +wire Ox2iu6, Vx2iu6, Cy2iu6, Jy2iu6, Qy2iu6, Xy2iu6, Ez2iu6, Lz2iu6, Sz2iu6, Zz2iu6; +wire G03iu6, N03iu6, U03iu6, B13iu6, I13iu6, P13iu6, W13iu6, D23iu6, K23iu6, R23iu6; +wire Y23iu6, F33iu6, M33iu6, T33iu6, A43iu6, H43iu6, O43iu6, V43iu6, C53iu6, J53iu6; +wire Q53iu6, X53iu6, E63iu6, L63iu6, S63iu6, Z63iu6, G73iu6, N73iu6, U73iu6, B83iu6; +wire I83iu6, P83iu6, W83iu6, D93iu6, K93iu6, R93iu6, Y93iu6, Fa3iu6, Ma3iu6, Ta3iu6; +wire Ab3iu6, Hb3iu6, Ob3iu6, Vb3iu6, Cc3iu6, Jc3iu6, Qc3iu6, Xc3iu6, Ed3iu6, Ld3iu6; +wire Sd3iu6, Zd3iu6, Ge3iu6, Ne3iu6, Ue3iu6, Bf3iu6, If3iu6, Pf3iu6, Wf3iu6, Dg3iu6; +wire Kg3iu6, Rg3iu6, Yg3iu6, Fh3iu6, Mh3iu6, Th3iu6, Ai3iu6, Hi3iu6, Oi3iu6, Vi3iu6; +wire Cj3iu6, Jj3iu6, Qj3iu6, Xj3iu6, Ek3iu6, Lk3iu6, Sk3iu6, Zk3iu6, Gl3iu6, Nl3iu6; +wire Ul3iu6, Bm3iu6, Im3iu6, Pm3iu6, Wm3iu6, Dn3iu6, Kn3iu6, Rn3iu6, Yn3iu6, Fo3iu6; +wire Mo3iu6, To3iu6, Ap3iu6, Hp3iu6, Op3iu6, Vp3iu6, Cq3iu6, Jq3iu6, Qq3iu6, Xq3iu6; +wire Er3iu6, Lr3iu6, Sr3iu6, Zr3iu6, Gs3iu6, Ns3iu6, Us3iu6, Bt3iu6, It3iu6, Pt3iu6; +wire Wt3iu6, Du3iu6, Ku3iu6, Ru3iu6, Yu3iu6, Fv3iu6, Mv3iu6, Tv3iu6, Aw3iu6, Hw3iu6; +wire Ow3iu6, Vw3iu6, Cx3iu6, Jx3iu6, Qx3iu6, Xx3iu6, Ey3iu6, Ly3iu6, Sy3iu6, Zy3iu6; +wire Gz3iu6, Nz3iu6, Uz3iu6, B04iu6, I04iu6, P04iu6, W04iu6, D14iu6, K14iu6, R14iu6; +wire Y14iu6, F24iu6, M24iu6, T24iu6, A34iu6, H34iu6, O34iu6, V34iu6, C44iu6, J44iu6; +wire Q44iu6, X44iu6, E54iu6, L54iu6, S54iu6, Z54iu6, G64iu6, N64iu6, U64iu6, B74iu6; +wire I74iu6, P74iu6, W74iu6, D84iu6, K84iu6, R84iu6, Y84iu6, F94iu6, M94iu6, T94iu6; +wire Aa4iu6, Ha4iu6, Oa4iu6, Va4iu6, Cb4iu6, Jb4iu6, Qb4iu6, Xb4iu6, Ec4iu6, Lc4iu6; +wire Sc4iu6, Zc4iu6, Gd4iu6, Nd4iu6, Ud4iu6, Be4iu6, Ie4iu6, Pe4iu6, We4iu6, Df4iu6; +wire Kf4iu6, Rf4iu6, Yf4iu6, Fg4iu6, Mg4iu6, Tg4iu6, Ah4iu6, Hh4iu6, Oh4iu6, Vh4iu6; +wire Ci4iu6, Ji4iu6, Qi4iu6, Xi4iu6, Ej4iu6, Lj4iu6, Sj4iu6, Zj4iu6, Gk4iu6, Nk4iu6; +wire Uk4iu6, Bl4iu6, Il4iu6, Pl4iu6, Wl4iu6, Dm4iu6, Km4iu6, Rm4iu6, Ym4iu6, Fn4iu6; +wire Mn4iu6, Tn4iu6, Ao4iu6, Ho4iu6, Oo4iu6, Vo4iu6, Cp4iu6, Jp4iu6, Qp4iu6, Xp4iu6; +wire Eq4iu6, Lq4iu6, Sq4iu6, Zq4iu6, Gr4iu6, Nr4iu6, Ur4iu6, Bs4iu6, Is4iu6, Ps4iu6; +wire Ws4iu6, Dt4iu6, Kt4iu6, Rt4iu6, Yt4iu6, Fu4iu6, Mu4iu6, Tu4iu6, Av4iu6, Hv4iu6; +wire Ov4iu6, Vv4iu6, Cw4iu6, Jw4iu6, Qw4iu6, Xw4iu6, Ex4iu6, Lx4iu6, Sx4iu6, Zx4iu6; +wire Gy4iu6, Ny4iu6, Uy4iu6, Bz4iu6, Iz4iu6, Pz4iu6, Wz4iu6, D05iu6, K05iu6, R05iu6; +wire Y05iu6, F15iu6, M15iu6, T15iu6, A25iu6, H25iu6, O25iu6, V25iu6, C35iu6, J35iu6; +wire Q35iu6, X35iu6, E45iu6, L45iu6, S45iu6, Z45iu6, G55iu6, N55iu6, U55iu6, B65iu6; +wire I65iu6, P65iu6, W65iu6, D75iu6, K75iu6, R75iu6, Y75iu6, F85iu6, M85iu6, T85iu6; +wire A95iu6, H95iu6, O95iu6, V95iu6, Ca5iu6, Ja5iu6, Qa5iu6, Xa5iu6, Eb5iu6, Lb5iu6; +wire Sb5iu6, Zb5iu6, Gc5iu6, Nc5iu6, Uc5iu6, Bd5iu6, Id5iu6, Pd5iu6, Wd5iu6, De5iu6; +wire Ke5iu6, Re5iu6, Ye5iu6, Ff5iu6, Mf5iu6, Tf5iu6, Ag5iu6, Hg5iu6, Og5iu6, Vg5iu6; +wire Ch5iu6, Jh5iu6, Qh5iu6, Xh5iu6, Ei5iu6, Li5iu6, Si5iu6, Zi5iu6, Gj5iu6, Nj5iu6; +wire Uj5iu6, Bk5iu6, Ik5iu6, Pk5iu6, Wk5iu6, Dl5iu6, Kl5iu6, Rl5iu6, Yl5iu6, Fm5iu6; +wire Mm5iu6, Tm5iu6, An5iu6, Hn5iu6, On5iu6, Vn5iu6, Co5iu6, Jo5iu6, Qo5iu6, Xo5iu6; +wire Ep5iu6, Lp5iu6, Sp5iu6, Zp5iu6, Gq5iu6, Nq5iu6, Uq5iu6, Br5iu6, Ir5iu6, Pr5iu6; +wire Wr5iu6, Ds5iu6, Ks5iu6, Rs5iu6, Ys5iu6, Ft5iu6, Mt5iu6, Tt5iu6, Au5iu6, Hu5iu6; +wire Ou5iu6, Vu5iu6, Cv5iu6, Jv5iu6, Qv5iu6, Xv5iu6, Ew5iu6, Lw5iu6, Sw5iu6, Zw5iu6; +wire Gx5iu6, Nx5iu6, Ux5iu6, By5iu6, Iy5iu6, Py5iu6, Wy5iu6, Dz5iu6, Kz5iu6, Rz5iu6; +wire Yz5iu6, F06iu6, M06iu6, T06iu6, A16iu6, H16iu6, O16iu6, V16iu6, C26iu6, J26iu6; +wire Q26iu6, X26iu6, E36iu6, L36iu6, S36iu6, Z36iu6, G46iu6, N46iu6, U46iu6, B56iu6; +wire I56iu6, P56iu6, W56iu6, D66iu6, K66iu6, R66iu6, Y66iu6, F76iu6, M76iu6, T76iu6; +wire A86iu6, H86iu6, O86iu6, V86iu6, C96iu6, J96iu6, Q96iu6, X96iu6, Ea6iu6, La6iu6; +wire Sa6iu6, Za6iu6, Gb6iu6, Nb6iu6, Ub6iu6, Bc6iu6, Ic6iu6, Pc6iu6, Wc6iu6, Dd6iu6; +wire Kd6iu6, Rd6iu6, Yd6iu6, Fe6iu6, Me6iu6, Te6iu6, Af6iu6, Hf6iu6, Of6iu6, Vf6iu6; +wire Cg6iu6, Jg6iu6, Qg6iu6, Xg6iu6, Eh6iu6, Lh6iu6, Sh6iu6, Zh6iu6, Gi6iu6, Ni6iu6; +wire Ui6iu6, Bj6iu6, Ij6iu6, Pj6iu6, Wj6iu6, Dk6iu6, Kk6iu6, Rk6iu6, Yk6iu6, Fl6iu6; +wire Ml6iu6, Tl6iu6, Am6iu6, Hm6iu6, Om6iu6, Vm6iu6, Cn6iu6, Jn6iu6, Qn6iu6, Xn6iu6; +wire Eo6iu6, Lo6iu6, So6iu6, Zo6iu6, Gp6iu6, Np6iu6, Up6iu6, Bq6iu6, Iq6iu6, Pq6iu6; +wire Wq6iu6, Dr6iu6, Kr6iu6, Rr6iu6, Yr6iu6, Fs6iu6, Ms6iu6, Ts6iu6, At6iu6, Ht6iu6; +wire Ot6iu6, Vt6iu6, Cu6iu6, Ju6iu6, Qu6iu6, Xu6iu6, Ev6iu6, Lv6iu6, Sv6iu6, Zv6iu6; +wire Gw6iu6, Nw6iu6, Uw6iu6, Bx6iu6, Ix6iu6, Px6iu6, Wx6iu6, Dy6iu6, Ky6iu6, Ry6iu6; +wire Yy6iu6, Fz6iu6, Mz6iu6, Tz6iu6, A07iu6, H07iu6, O07iu6, V07iu6, C17iu6, J17iu6; +wire Q17iu6, X17iu6, E27iu6, L27iu6, S27iu6, Z27iu6, G37iu6, N37iu6, U37iu6, B47iu6; +wire I47iu6, P47iu6, W47iu6, D57iu6, K57iu6, R57iu6, Y57iu6, F67iu6, M67iu6, T67iu6; +wire A77iu6, H77iu6, O77iu6, V77iu6, C87iu6, J87iu6, Q87iu6, X87iu6, E97iu6, L97iu6; +wire S97iu6, Z97iu6, Ga7iu6, Na7iu6, Ua7iu6, Bb7iu6, Ib7iu6, Pb7iu6, Wb7iu6, Dc7iu6; +wire Kc7iu6, Rc7iu6, Yc7iu6, Fd7iu6, Md7iu6, Td7iu6, Ae7iu6, He7iu6, Oe7iu6, Ve7iu6; +wire Cf7iu6, Jf7iu6, Qf7iu6, Xf7iu6, Eg7iu6, Lg7iu6, Sg7iu6, Zg7iu6, Gh7iu6, Nh7iu6; +wire Uh7iu6, Bi7iu6, Ii7iu6, Pi7iu6, Wi7iu6, Dj7iu6, Kj7iu6, Rj7iu6, Yj7iu6, Fk7iu6; +wire Mk7iu6, Tk7iu6, Al7iu6, Hl7iu6, Ol7iu6, Vl7iu6, Cm7iu6, Jm7iu6, Qm7iu6, Xm7iu6; +wire En7iu6, Ln7iu6, Sn7iu6, Zn7iu6, Go7iu6, No7iu6, Uo7iu6, Bp7iu6, Ip7iu6, Pp7iu6; +wire Wp7iu6, Dq7iu6, Kq7iu6, Rq7iu6, Yq7iu6, Fr7iu6, Mr7iu6, Tr7iu6, As7iu6, Hs7iu6; +wire Os7iu6, Vs7iu6, Ct7iu6, Jt7iu6, Qt7iu6, Xt7iu6, Eu7iu6, Lu7iu6, Su7iu6, Zu7iu6; +wire Gv7iu6, Nv7iu6, Uv7iu6, Bw7iu6, Iw7iu6, Pw7iu6, Ww7iu6, Dx7iu6, Kx7iu6, Rx7iu6; +wire Yx7iu6, Fy7iu6, My7iu6, Ty7iu6, Az7iu6, Hz7iu6, Oz7iu6, Vz7iu6, C08iu6, J08iu6; +wire Q08iu6, X08iu6, E18iu6, L18iu6, S18iu6, Z18iu6, G28iu6, N28iu6, U28iu6, B38iu6; +wire I38iu6, P38iu6, W38iu6, D48iu6, K48iu6, R48iu6, Y48iu6, F58iu6, M58iu6, T58iu6; +wire A68iu6, H68iu6, O68iu6, V68iu6, C78iu6, J78iu6, Q78iu6, X78iu6, E88iu6, L88iu6; +wire S88iu6, Z88iu6, G98iu6, N98iu6, U98iu6, Ba8iu6, Ia8iu6, Pa8iu6, Wa8iu6, Db8iu6; +wire Kb8iu6, Rb8iu6, Yb8iu6, Fc8iu6, Mc8iu6, Tc8iu6, Ad8iu6, Hd8iu6, Od8iu6, Vd8iu6; +wire Ce8iu6, Je8iu6, Qe8iu6, Xe8iu6, Ef8iu6, Lf8iu6, Sf8iu6, Zf8iu6, Gg8iu6, Ng8iu6; +wire Ug8iu6, Bh8iu6, Ih8iu6, Ph8iu6, Wh8iu6, Di8iu6, Ki8iu6, Ri8iu6, Yi8iu6, Fj8iu6; +wire Mj8iu6, Tj8iu6, Ak8iu6, Hk8iu6, Ok8iu6, Vk8iu6, Cl8iu6, Jl8iu6, Ql8iu6, Xl8iu6; +wire Em8iu6, Lm8iu6, Sm8iu6, Zm8iu6, Gn8iu6, Nn8iu6, Un8iu6, Bo8iu6, Io8iu6, Po8iu6; +wire Wo8iu6, Dp8iu6, Kp8iu6, Rp8iu6, Yp8iu6, Fq8iu6, Mq8iu6, Tq8iu6, Ar8iu6, Hr8iu6; +wire Or8iu6, Vr8iu6, Cs8iu6, Js8iu6, Qs8iu6, Xs8iu6, Et8iu6, Lt8iu6, St8iu6, Zt8iu6; +wire Gu8iu6, Nu8iu6, Uu8iu6, Bv8iu6, Iv8iu6, Pv8iu6, Wv8iu6, Dw8iu6, Kw8iu6, Rw8iu6; +wire Yw8iu6, Fx8iu6, Mx8iu6, Tx8iu6, Ay8iu6, Hy8iu6, Oy8iu6, Vy8iu6, Cz8iu6, Jz8iu6; +wire Qz8iu6, Xz8iu6, E09iu6, L09iu6, S09iu6, Z09iu6, G19iu6, N19iu6, U19iu6, B29iu6; +wire I29iu6, P29iu6, W29iu6, D39iu6, K39iu6, R39iu6, Y39iu6, F49iu6, M49iu6, T49iu6; +wire A59iu6, H59iu6, O59iu6, V59iu6, C69iu6, J69iu6, Q69iu6, X69iu6, E79iu6, L79iu6; +wire S79iu6, Z79iu6, G89iu6, N89iu6, U89iu6, B99iu6, I99iu6, P99iu6, W99iu6, Da9iu6; +wire Ka9iu6, Ra9iu6, Ya9iu6, Fb9iu6, Mb9iu6, Tb9iu6, Ac9iu6, Hc9iu6, Oc9iu6, Vc9iu6; +wire Cd9iu6, Jd9iu6, Qd9iu6, Xd9iu6, Ee9iu6, Le9iu6, Se9iu6, Ze9iu6, Gf9iu6, Nf9iu6; +wire Uf9iu6, Bg9iu6, Ig9iu6, Pg9iu6, Wg9iu6, Dh9iu6, Kh9iu6, Rh9iu6, Yh9iu6, Fi9iu6; +wire Mi9iu6, Ti9iu6, Aj9iu6, Hj9iu6, Oj9iu6, Vj9iu6, Ck9iu6, Jk9iu6, Qk9iu6, Xk9iu6; +wire El9iu6, Ll9iu6, Sl9iu6, Zl9iu6, Gm9iu6, Nm9iu6, Um9iu6, Bn9iu6, In9iu6, Pn9iu6; +wire Wn9iu6, Do9iu6, Ko9iu6, Ro9iu6, Yo9iu6, Fp9iu6, Mp9iu6, Tp9iu6, Aq9iu6, Hq9iu6; +wire Oq9iu6, Vq9iu6, Cr9iu6, Jr9iu6, Qr9iu6, Xr9iu6, Es9iu6, Ls9iu6, Ss9iu6, Zs9iu6; +wire Gt9iu6, Nt9iu6, Ut9iu6, Bu9iu6, Iu9iu6, Pu9iu6, Wu9iu6, Dv9iu6, Kv9iu6, Rv9iu6; +wire Yv9iu6, Fw9iu6, Mw9iu6, Tw9iu6, Ax9iu6, Hx9iu6, Ox9iu6, Vx9iu6, Cy9iu6, Jy9iu6; +wire Qy9iu6, Xy9iu6, Ez9iu6, Lz9iu6, Sz9iu6, Zz9iu6, G0aiu6, N0aiu6, U0aiu6, B1aiu6; +wire I1aiu6, P1aiu6, W1aiu6, D2aiu6, K2aiu6, R2aiu6, Y2aiu6, F3aiu6, M3aiu6, T3aiu6; +wire A4aiu6, H4aiu6, O4aiu6, V4aiu6, C5aiu6, J5aiu6, Q5aiu6, X5aiu6, E6aiu6, L6aiu6; +wire S6aiu6, Z6aiu6, G7aiu6, N7aiu6, U7aiu6, B8aiu6, I8aiu6, P8aiu6, W8aiu6, D9aiu6; +wire K9aiu6, R9aiu6, Y9aiu6, Faaiu6, Maaiu6, Taaiu6, Abaiu6, Hbaiu6, Obaiu6, Vbaiu6; +wire Ccaiu6, Jcaiu6, Qcaiu6, Xcaiu6, Edaiu6, Ldaiu6, Sdaiu6, Zdaiu6, Geaiu6, Neaiu6; +wire Ueaiu6, Bfaiu6, Ifaiu6, Pfaiu6, Wfaiu6, Dgaiu6, Kgaiu6, Rgaiu6, Ygaiu6, Fhaiu6; +wire Mhaiu6, Thaiu6, Aiaiu6, Hiaiu6, Oiaiu6, Viaiu6, Cjaiu6, Jjaiu6, Qjaiu6, Xjaiu6; +wire Ekaiu6, Lkaiu6, Skaiu6, Zkaiu6, Glaiu6, Nlaiu6, Ulaiu6, Bmaiu6, Imaiu6, Pmaiu6; +wire Wmaiu6, Dnaiu6, Knaiu6, Rnaiu6, Ynaiu6, Foaiu6, Moaiu6, Toaiu6, Apaiu6, Hpaiu6; +wire Opaiu6, Vpaiu6, Cqaiu6, Jqaiu6, Qqaiu6, Xqaiu6, Eraiu6, Lraiu6, Sraiu6, Zraiu6; +wire Gsaiu6, Nsaiu6, Usaiu6, Btaiu6, Itaiu6, Ptaiu6, Wtaiu6, Duaiu6, Kuaiu6, Ruaiu6; +wire Yuaiu6, Fvaiu6, Mvaiu6, Tvaiu6, Awaiu6, Hwaiu6, Owaiu6, Vwaiu6, Cxaiu6, Jxaiu6; +wire Qxaiu6, Xxaiu6, Eyaiu6, Lyaiu6, Syaiu6, Zyaiu6, Gzaiu6, Nzaiu6, Uzaiu6, B0biu6; +wire I0biu6, P0biu6, W0biu6, D1biu6, K1biu6, R1biu6, Y1biu6, F2biu6, M2biu6, T2biu6; +wire A3biu6, H3biu6, O3biu6, V3biu6, C4biu6, J4biu6, Q4biu6, X4biu6, E5biu6, L5biu6; +wire S5biu6, Z5biu6, G6biu6, N6biu6, U6biu6, B7biu6, I7biu6, P7biu6, W7biu6, D8biu6; +wire K8biu6, R8biu6, Y8biu6, F9biu6, M9biu6, T9biu6, Aabiu6, Habiu6, Oabiu6, Vabiu6; +wire Cbbiu6, Jbbiu6, Qbbiu6, Xbbiu6, Ecbiu6, Lcbiu6, Scbiu6, Zcbiu6, Gdbiu6, Ndbiu6; +wire Udbiu6, Bebiu6, Iebiu6, Pebiu6, Webiu6, Dfbiu6, Kfbiu6, Rfbiu6, Yfbiu6, Fgbiu6; +wire Mgbiu6, Tgbiu6, Ahbiu6, Hhbiu6, Ohbiu6, Vhbiu6, Cibiu6, Jibiu6, Qibiu6, Xibiu6; +wire Ejbiu6, Ljbiu6, Sjbiu6, Zjbiu6, Gkbiu6, Nkbiu6, Ukbiu6, Blbiu6, Ilbiu6, Plbiu6; +wire Wlbiu6, Dmbiu6, Kmbiu6, Rmbiu6, Ymbiu6, Fnbiu6, Mnbiu6, Tnbiu6, Aobiu6, Hobiu6; +wire Oobiu6, Vobiu6, Cpbiu6, Jpbiu6, Qpbiu6, Xpbiu6, Eqbiu6, Lqbiu6, Sqbiu6, Zqbiu6; +wire Grbiu6, Nrbiu6, Urbiu6, Bsbiu6, Isbiu6, Psbiu6, Wsbiu6, Dtbiu6, Ktbiu6, Rtbiu6; +wire Ytbiu6, Fubiu6, Mubiu6, Tubiu6, Avbiu6, Hvbiu6, Ovbiu6, Vvbiu6, Cwbiu6, Jwbiu6; +wire Qwbiu6, Xwbiu6, Exbiu6, Lxbiu6, Sxbiu6, Zxbiu6, Gybiu6, Nybiu6, Uybiu6, Bzbiu6; +wire Izbiu6, Pzbiu6, Wzbiu6, D0ciu6, K0ciu6, R0ciu6, Y0ciu6, F1ciu6, M1ciu6, T1ciu6; +wire A2ciu6, H2ciu6, O2ciu6, V2ciu6, C3ciu6, J3ciu6, Q3ciu6, X3ciu6, E4ciu6, L4ciu6; +wire S4ciu6, Z4ciu6, G5ciu6, N5ciu6, U5ciu6, B6ciu6, I6ciu6, P6ciu6, W6ciu6, D7ciu6; +wire K7ciu6, R7ciu6, Y7ciu6, F8ciu6, M8ciu6, T8ciu6, A9ciu6, H9ciu6, O9ciu6, V9ciu6; +wire Caciu6, Jaciu6, Qaciu6, Xaciu6, Ebciu6, Lbciu6, Sbciu6, Zbciu6, Gcciu6, Ncciu6; +wire Ucciu6, Bdciu6, Idciu6, Pdciu6, Wdciu6, Deciu6, Keciu6, Reciu6, Yeciu6, Ffciu6; +wire Mfciu6, Tfciu6, Agciu6, Hgciu6, Ogciu6, Vgciu6, Chciu6, Jhciu6, Qhciu6, Xhciu6; +wire Eiciu6, Liciu6, Siciu6, Ziciu6, Gjciu6, Njciu6, Ujciu6, Bkciu6, Ikciu6, Pkciu6; +wire Wkciu6, Dlciu6, Klciu6, Rlciu6, Ylciu6, Fmciu6, Mmciu6, Tmciu6, Anciu6, Hnciu6; +wire Onciu6, Vnciu6, Cociu6, Jociu6, Qociu6, Xociu6, Epciu6, Lpciu6, Spciu6, Zpciu6; +wire Gqciu6, Nqciu6, Uqciu6, Brciu6, Irciu6, Prciu6, Wrciu6, Dsciu6, Ksciu6, Rsciu6; +wire Ysciu6, Ftciu6, Mtciu6, Ttciu6, Auciu6, Huciu6, Ouciu6, Vuciu6, Cvciu6, Jvciu6; +wire Qvciu6, Xvciu6, Ewciu6, Lwciu6, Swciu6, Zwciu6, Gxciu6, Nxciu6, Uxciu6, Byciu6; +wire Iyciu6, Pyciu6, Wyciu6, Dzciu6, Kzciu6, Rzciu6, Yzciu6, F0diu6, M0diu6, T0diu6; +wire A1diu6, H1diu6, O1diu6, V1diu6, C2diu6, J2diu6, Q2diu6, X2diu6, E3diu6, L3diu6; +wire S3diu6, Z3diu6, G4diu6, N4diu6, U4diu6, B5diu6, I5diu6, P5diu6, W5diu6, D6diu6; +wire K6diu6, R6diu6, Y6diu6, F7diu6, M7diu6, T7diu6, A8diu6, H8diu6, O8diu6, V8diu6; +wire C9diu6, J9diu6, Q9diu6, X9diu6, Eadiu6, Ladiu6, Sadiu6, Zadiu6, Gbdiu6, Nbdiu6; +wire Ubdiu6, Bcdiu6, Icdiu6, Pcdiu6, Wcdiu6, Dddiu6, Kddiu6, Rddiu6, Yddiu6, Fediu6; +wire Mediu6, Tediu6, Afdiu6, Hfdiu6, Ofdiu6, Vfdiu6, Cgdiu6, Jgdiu6, Qgdiu6, Xgdiu6; +wire Ehdiu6, Lhdiu6, Shdiu6, Zhdiu6, Gidiu6, Nidiu6, Uidiu6, Bjdiu6, Ijdiu6, Pjdiu6; +wire Wjdiu6, Dkdiu6, Kkdiu6, Rkdiu6, Ykdiu6, Fldiu6, Mldiu6, Tldiu6, Amdiu6, Hmdiu6; +wire Omdiu6, Vmdiu6, Cndiu6, Jndiu6, Qndiu6, Xndiu6, Eodiu6, Lodiu6, Sodiu6, Zodiu6; +wire Gpdiu6, Npdiu6, Updiu6, Bqdiu6, Iqdiu6, Pqdiu6, Wqdiu6, Drdiu6, Krdiu6, Rrdiu6; +wire Yrdiu6, Fsdiu6, Msdiu6, Tsdiu6, Atdiu6, Htdiu6, Otdiu6, Vtdiu6, Cudiu6, Judiu6; +wire Qudiu6, Xudiu6, Evdiu6, Lvdiu6, Svdiu6, Zvdiu6, Gwdiu6, Nwdiu6, Uwdiu6, Bxdiu6; +wire Ixdiu6, Pxdiu6, Wxdiu6, Dydiu6, Kydiu6, Rydiu6, Yydiu6, Fzdiu6, Mzdiu6, Tzdiu6; +wire A0eiu6, H0eiu6, O0eiu6, V0eiu6, C1eiu6, J1eiu6, Q1eiu6, X1eiu6, E2eiu6, L2eiu6; +wire S2eiu6, Z2eiu6, G3eiu6, N3eiu6, U3eiu6, B4eiu6, I4eiu6, P4eiu6, W4eiu6, D5eiu6; +wire K5eiu6, R5eiu6, Y5eiu6, F6eiu6, M6eiu6, T6eiu6, A7eiu6, H7eiu6, O7eiu6, V7eiu6; +wire C8eiu6, J8eiu6, Q8eiu6, X8eiu6, E9eiu6, L9eiu6, S9eiu6, Z9eiu6, Gaeiu6, Naeiu6; +wire Uaeiu6, Bbeiu6, Ibeiu6, Pbeiu6, Wbeiu6, Dceiu6, Kceiu6, Rceiu6, Yceiu6, Fdeiu6; +wire Mdeiu6, Tdeiu6, Aeeiu6, Heeiu6, Oeeiu6, Veeiu6, Cfeiu6, Jfeiu6, Qfeiu6, Xfeiu6; +wire Egeiu6, Lgeiu6, Sgeiu6, Zgeiu6, Gheiu6, Nheiu6, Uheiu6, Bieiu6, Iieiu6, Pieiu6; +wire Wieiu6, Djeiu6, Kjeiu6, Rjeiu6, Yjeiu6, Fkeiu6, Mkeiu6, Tkeiu6, Aleiu6, Hleiu6; +wire Oleiu6, Vleiu6, Cmeiu6, Jmeiu6, Qmeiu6, Xmeiu6, Eneiu6, Lneiu6, Sneiu6, Zneiu6; +wire Goeiu6, Noeiu6, Uoeiu6, Bpeiu6, Ipeiu6, Ppeiu6, Wpeiu6, Dqeiu6, Kqeiu6, Rqeiu6; +wire Yqeiu6, Freiu6, Mreiu6, Treiu6, Aseiu6, Hseiu6, Oseiu6, Vseiu6, Cteiu6, Jteiu6; +wire Qteiu6, Xteiu6, Eueiu6, Lueiu6, Sueiu6, Zueiu6, Gveiu6, Nveiu6, Uveiu6, Bweiu6; +wire Iweiu6, Pweiu6, Wweiu6, Dxeiu6, Kxeiu6, Rxeiu6, Yxeiu6, Fyeiu6, Myeiu6, Tyeiu6; +wire Azeiu6, Hzeiu6, Ozeiu6, Vzeiu6, C0fiu6, J0fiu6, Q0fiu6, X0fiu6, E1fiu6, L1fiu6; +wire S1fiu6, Z1fiu6, G2fiu6, N2fiu6, U2fiu6, B3fiu6, I3fiu6, P3fiu6, W3fiu6, D4fiu6; +wire K4fiu6, R4fiu6, Y4fiu6, F5fiu6, M5fiu6, T5fiu6, A6fiu6, H6fiu6, O6fiu6, V6fiu6; +wire C7fiu6, J7fiu6, Q7fiu6, X7fiu6, E8fiu6, L8fiu6, S8fiu6, Z8fiu6, G9fiu6, N9fiu6; +wire U9fiu6, Bafiu6, Iafiu6, Pafiu6, Wafiu6, Dbfiu6, Kbfiu6, Rbfiu6, Ybfiu6, Fcfiu6; +wire Mcfiu6, Tcfiu6, Adfiu6, Hdfiu6, Odfiu6, Vdfiu6, Cefiu6, Jefiu6, Qefiu6, Xefiu6; +wire Effiu6, Lffiu6, Sffiu6, Zffiu6, Ggfiu6, Ngfiu6, Ugfiu6, Bhfiu6, Ihfiu6, Phfiu6; +wire Whfiu6, Difiu6, Kifiu6, Rifiu6, Yifiu6, Fjfiu6, Mjfiu6, Tjfiu6, Akfiu6, Hkfiu6; +wire Okfiu6, Vkfiu6, Clfiu6, Jlfiu6, Qlfiu6, Xlfiu6, Emfiu6, Lmfiu6, Smfiu6, Zmfiu6; +wire Gnfiu6, Nnfiu6, Unfiu6, Bofiu6, Iofiu6, Pofiu6, Wofiu6, Dpfiu6, Kpfiu6, Rpfiu6; +wire Ypfiu6, Fqfiu6, Mqfiu6, Tqfiu6, Arfiu6, Hrfiu6, Orfiu6, Vrfiu6, Csfiu6, Jsfiu6; +wire Qsfiu6, Xsfiu6, Etfiu6, Ltfiu6, Stfiu6, Ztfiu6, Gufiu6, Nufiu6, Uufiu6, Bvfiu6; +wire Ivfiu6, Pvfiu6, Wvfiu6, Dwfiu6, Kwfiu6, Rwfiu6, Ywfiu6, Fxfiu6, Mxfiu6, Txfiu6; +wire Ayfiu6, Hyfiu6, Oyfiu6, Vyfiu6, Czfiu6, Jzfiu6, Qzfiu6, Xzfiu6, E0giu6, L0giu6; +wire S0giu6, Z0giu6, G1giu6, N1giu6, U1giu6, B2giu6, I2giu6, P2giu6, W2giu6, D3giu6; +wire K3giu6, R3giu6, Y3giu6, F4giu6, M4giu6, T4giu6, A5giu6, H5giu6, O5giu6, V5giu6; +wire C6giu6, J6giu6, Q6giu6, X6giu6, E7giu6, L7giu6, S7giu6, Z7giu6, G8giu6, N8giu6; +wire U8giu6, B9giu6, I9giu6, P9giu6, W9giu6, Dagiu6, Kagiu6, Ragiu6, Yagiu6, Fbgiu6; +wire Mbgiu6, Tbgiu6, Acgiu6, Hcgiu6, Ocgiu6, Vcgiu6, Cdgiu6, Jdgiu6, Qdgiu6, Xdgiu6; +wire Eegiu6, Legiu6, Segiu6, Zegiu6, Gfgiu6, Nfgiu6, Ufgiu6, Bggiu6, Iggiu6, Pggiu6; +wire Wggiu6, Dhgiu6, Khgiu6, Rhgiu6, Yhgiu6, Figiu6, Migiu6, Tigiu6, Ajgiu6, Hjgiu6; +wire Ojgiu6, Vjgiu6, Ckgiu6, Jkgiu6, Qkgiu6, Xkgiu6, Elgiu6, Llgiu6, Slgiu6, Zlgiu6; +wire Gmgiu6, Nmgiu6, Umgiu6, Bngiu6, Ingiu6, Pngiu6, Wngiu6, Dogiu6, Kogiu6, Rogiu6; +wire Yogiu6, Fpgiu6, Mpgiu6, Tpgiu6, Aqgiu6, Hqgiu6, Oqgiu6, Vqgiu6, Crgiu6, Jrgiu6; +wire Qrgiu6, Xrgiu6, Esgiu6, Lsgiu6, Ssgiu6, Zsgiu6, Gtgiu6, Ntgiu6, Utgiu6, Bugiu6; +wire Iugiu6, Pugiu6, Wugiu6, Dvgiu6, Kvgiu6, Rvgiu6, Yvgiu6, Fwgiu6, Mwgiu6, Twgiu6; +wire Axgiu6, Hxgiu6, Oxgiu6, Vxgiu6, Cygiu6, Jygiu6, Qygiu6, Xygiu6, Ezgiu6, Lzgiu6; +wire Szgiu6, Zzgiu6, G0hiu6, N0hiu6, U0hiu6, B1hiu6, I1hiu6, P1hiu6, W1hiu6, D2hiu6; +wire K2hiu6, R2hiu6, Y2hiu6, F3hiu6, M3hiu6, T3hiu6, A4hiu6, H4hiu6, O4hiu6, V4hiu6; +wire C5hiu6, J5hiu6, Q5hiu6, X5hiu6, E6hiu6, L6hiu6, S6hiu6, Z6hiu6, G7hiu6, N7hiu6; +wire U7hiu6, B8hiu6, I8hiu6, P8hiu6, W8hiu6, D9hiu6, K9hiu6, R9hiu6, Y9hiu6, Fahiu6; +wire Mahiu6, Tahiu6, Abhiu6, Hbhiu6, Obhiu6, Vbhiu6, Cchiu6, Jchiu6, Qchiu6, Xchiu6; +wire Edhiu6, Ldhiu6, Sdhiu6, Zdhiu6, Gehiu6, Nehiu6, Uehiu6, Bfhiu6, Ifhiu6, Pfhiu6; +wire Wfhiu6, Dghiu6, Kghiu6, Rghiu6, Yghiu6, Fhhiu6, Mhhiu6, Thhiu6, Aihiu6, Hihiu6; +wire Oihiu6, Vihiu6, Cjhiu6, Jjhiu6, Qjhiu6, Xjhiu6, Ekhiu6, Lkhiu6, Skhiu6, Zkhiu6; +wire Glhiu6, Nlhiu6, Ulhiu6, Bmhiu6, Imhiu6, Pmhiu6, Wmhiu6, Dnhiu6, Knhiu6, Rnhiu6; +wire Ynhiu6, Fohiu6, Mohiu6, Tohiu6, Aphiu6, Hphiu6, Ophiu6, Vphiu6, Cqhiu6, Jqhiu6; +wire Qqhiu6, Xqhiu6, Erhiu6, Lrhiu6, Srhiu6, Zrhiu6, Gshiu6, Nshiu6, Ushiu6, Bthiu6; +wire Ithiu6, Pthiu6, Wthiu6, Duhiu6, Kuhiu6, Ruhiu6, Yuhiu6, Fvhiu6, Mvhiu6, Tvhiu6; +wire Awhiu6, Hwhiu6, Owhiu6, Vwhiu6, Cxhiu6, Jxhiu6, Qxhiu6, Xxhiu6, Eyhiu6, Lyhiu6; +wire Syhiu6, Zyhiu6, Gzhiu6, Nzhiu6, Uzhiu6, B0iiu6, I0iiu6, P0iiu6, W0iiu6, D1iiu6; +wire K1iiu6, R1iiu6, Y1iiu6, F2iiu6, M2iiu6, T2iiu6, A3iiu6, H3iiu6, O3iiu6, V3iiu6; +wire C4iiu6, J4iiu6, Q4iiu6, X4iiu6, E5iiu6, L5iiu6, S5iiu6, Z5iiu6, G6iiu6, N6iiu6; +wire U6iiu6, B7iiu6, I7iiu6, P7iiu6, W7iiu6, D8iiu6, K8iiu6, R8iiu6, Y8iiu6, F9iiu6; +wire M9iiu6, T9iiu6, Aaiiu6, Haiiu6, Oaiiu6, Vaiiu6, Cbiiu6, Jbiiu6, Qbiiu6, Xbiiu6; +wire Eciiu6, Lciiu6, Sciiu6, Zciiu6, Gdiiu6, Ndiiu6, Udiiu6, Beiiu6, Ieiiu6, Peiiu6; +wire Weiiu6, Dfiiu6, Kfiiu6, Rfiiu6, Yfiiu6, Fgiiu6, Mgiiu6, Tgiiu6, Ahiiu6, Hhiiu6; +wire Ohiiu6, Vhiiu6, Ciiiu6, Jiiiu6, Qiiiu6, Xiiiu6, Ejiiu6, Ljiiu6, Sjiiu6, Zjiiu6; +wire Gkiiu6, Nkiiu6, Ukiiu6, Bliiu6, Iliiu6, Pliiu6, Wliiu6, Dmiiu6, Kmiiu6, Rmiiu6; +wire Ymiiu6, Fniiu6, Mniiu6, Tniiu6, Aoiiu6, Hoiiu6, Ooiiu6, Voiiu6, Cpiiu6, Jpiiu6; +wire Qpiiu6, Xpiiu6, Eqiiu6, Lqiiu6, Sqiiu6, Zqiiu6, Griiu6, Nriiu6, Uriiu6, Bsiiu6; +wire Isiiu6, Psiiu6, Wsiiu6, Dtiiu6, Ktiiu6, Rtiiu6, Ytiiu6, Fuiiu6, Muiiu6, Tuiiu6; +wire Aviiu6, Hviiu6, Oviiu6, Vviiu6, Cwiiu6, Jwiiu6, Qwiiu6, Xwiiu6, Exiiu6, Lxiiu6; +wire Sxiiu6, Zxiiu6, Gyiiu6, Nyiiu6, Uyiiu6, Bziiu6, Iziiu6, Pziiu6, Wziiu6, D0jiu6; +wire K0jiu6, R0jiu6, Y0jiu6, F1jiu6, M1jiu6, T1jiu6, A2jiu6, H2jiu6, O2jiu6, V2jiu6; +wire C3jiu6, J3jiu6, Q3jiu6, X3jiu6, E4jiu6, L4jiu6, S4jiu6, Z4jiu6, G5jiu6, N5jiu6; +wire U5jiu6, B6jiu6, I6jiu6, P6jiu6, W6jiu6, D7jiu6, K7jiu6, R7jiu6, Y7jiu6, F8jiu6; +wire M8jiu6, T8jiu6, A9jiu6, H9jiu6, O9jiu6, V9jiu6, Cajiu6, Jajiu6, Qajiu6, Xajiu6; +wire Ebjiu6, Lbjiu6, Sbjiu6, Zbjiu6, Gcjiu6, Ncjiu6, Ucjiu6, Bdjiu6, Idjiu6, Pdjiu6; +wire Wdjiu6, Dejiu6, Kejiu6, Rejiu6, Yejiu6, Ffjiu6, Mfjiu6, Tfjiu6, Agjiu6, Hgjiu6; +wire Ogjiu6, Vgjiu6, Chjiu6, Jhjiu6, Qhjiu6, Xhjiu6, Eijiu6, Lijiu6, Sijiu6, Zijiu6; +wire Gjjiu6, Njjiu6, Ujjiu6, Bkjiu6, Ikjiu6, Pkjiu6, Wkjiu6, Dljiu6, Kljiu6, Rljiu6; +wire Yljiu6, Fmjiu6, Mmjiu6, Tmjiu6, Anjiu6, Hnjiu6, Onjiu6, Vnjiu6, Cojiu6, Jojiu6; +wire Qojiu6, Xojiu6, Epjiu6, Lpjiu6, Spjiu6, Zpjiu6, Gqjiu6, Nqjiu6, Uqjiu6, Brjiu6; +wire Irjiu6, Prjiu6, Wrjiu6, Dsjiu6, Ksjiu6, Rsjiu6, Ysjiu6, Ftjiu6, Mtjiu6, Ttjiu6; +wire Aujiu6, Hujiu6, Oujiu6, Vujiu6, Cvjiu6, Jvjiu6, Qvjiu6, Xvjiu6, Ewjiu6, Lwjiu6; +wire Swjiu6, Zwjiu6, Gxjiu6, Nxjiu6, Uxjiu6, Byjiu6, Iyjiu6, Pyjiu6, Wyjiu6, Dzjiu6; +wire Kzjiu6, Rzjiu6, Yzjiu6, F0kiu6, M0kiu6, T0kiu6, A1kiu6, H1kiu6, O1kiu6, V1kiu6; +wire C2kiu6, J2kiu6, Q2kiu6, X2kiu6, E3kiu6, L3kiu6, S3kiu6, Z3kiu6, G4kiu6, N4kiu6; +wire U4kiu6, B5kiu6, I5kiu6, P5kiu6, W5kiu6, D6kiu6, K6kiu6, R6kiu6, Y6kiu6, F7kiu6; +wire M7kiu6, T7kiu6, A8kiu6, H8kiu6, O8kiu6, V8kiu6, C9kiu6, J9kiu6, Q9kiu6, X9kiu6; +wire Eakiu6, Lakiu6, Sakiu6, Zakiu6, Gbkiu6, Nbkiu6, Ubkiu6, Bckiu6, Ickiu6, Pckiu6; +wire Wckiu6, Ddkiu6, Kdkiu6, Rdkiu6, Ydkiu6, Fekiu6, Mekiu6, Tekiu6, Afkiu6, Hfkiu6; +wire Ofkiu6, Vfkiu6, Cgkiu6, Jgkiu6, Qgkiu6, Xgkiu6, Ehkiu6, Lhkiu6, Shkiu6, Zhkiu6; +wire Gikiu6, Nikiu6, Uikiu6, Bjkiu6, Ijkiu6, Pjkiu6, Wjkiu6, Dkkiu6, Kkkiu6, Rkkiu6; +wire Ykkiu6, Flkiu6, Mlkiu6, Tlkiu6, Amkiu6, Hmkiu6, Omkiu6, Vmkiu6, Cnkiu6, Jnkiu6; +wire Qnkiu6, Xnkiu6, Eokiu6, Lokiu6, Sokiu6, Zokiu6, Gpkiu6, Npkiu6, Upkiu6, Bqkiu6; +wire Iqkiu6, Pqkiu6, Wqkiu6, Drkiu6, Krkiu6, Rrkiu6, Yrkiu6, Fskiu6, Mskiu6, Tskiu6; +wire Atkiu6, Htkiu6, Otkiu6, Vtkiu6, Cukiu6, Jukiu6, Qukiu6, Xukiu6, Evkiu6, Lvkiu6; +wire Svkiu6, Zvkiu6, Gwkiu6, Nwkiu6, Uwkiu6, Bxkiu6, Ixkiu6, Pxkiu6, Wxkiu6, Dykiu6; +wire Kykiu6, Rykiu6, Yykiu6, Fzkiu6, Mzkiu6, Tzkiu6, A0liu6, H0liu6, O0liu6, V0liu6; +wire C1liu6, J1liu6, Q1liu6, X1liu6, E2liu6, L2liu6, S2liu6, Z2liu6, G3liu6, N3liu6; +wire U3liu6, B4liu6, I4liu6, P4liu6, W4liu6, D5liu6, K5liu6, R5liu6, Y5liu6, F6liu6; +wire M6liu6, T6liu6, A7liu6, H7liu6, O7liu6, V7liu6, C8liu6, J8liu6, Q8liu6, X8liu6; +wire E9liu6, L9liu6, S9liu6, Z9liu6, Galiu6, Naliu6, Ualiu6, Bbliu6, Ibliu6, Pbliu6; +wire Wbliu6, Dcliu6, Kcliu6, Rcliu6, Ycliu6, Fdliu6, Mdliu6, Tdliu6, Aeliu6, Heliu6; +wire Oeliu6, Veliu6, Cfliu6, Jfliu6, Qfliu6, Xfliu6, Egliu6, Lgliu6, Sgliu6, Zgliu6; +wire Ghliu6, Nhliu6, Uhliu6, Biliu6, Iiliu6, Piliu6, Wiliu6, Djliu6, Kjliu6, Rjliu6; +wire Yjliu6, Fkliu6, Mkliu6, Tkliu6, Alliu6, Hlliu6, Olliu6, Vlliu6, Cmliu6, Jmliu6; +wire Qmliu6, Xmliu6, Enliu6, Lnliu6, Snliu6, Znliu6, Goliu6, Noliu6, Uoliu6, Bpliu6; +wire Ipliu6, Ppliu6, Wpliu6, Dqliu6, Kqliu6, Rqliu6, Yqliu6, Frliu6, Mrliu6, Trliu6; +wire Asliu6, Hsliu6, Osliu6, Vsliu6, Ctliu6, Jtliu6, Qtliu6, Xtliu6, Euliu6, Luliu6; +wire Suliu6, Zuliu6, Gvliu6, Nvliu6, Uvliu6, Bwliu6, Iwliu6, Pwliu6, Wwliu6, Dxliu6; +wire Kxliu6, Rxliu6, Yxliu6, Fyliu6, Myliu6, Tyliu6, Azliu6, Hzliu6, Ozliu6, Vzliu6; +wire C0miu6, J0miu6, Q0miu6, X0miu6, E1miu6, L1miu6, S1miu6, Z1miu6, G2miu6, N2miu6; +wire U2miu6, B3miu6, I3miu6, P3miu6, W3miu6, D4miu6, K4miu6, R4miu6, Y4miu6, F5miu6; +wire M5miu6, T5miu6, A6miu6, H6miu6, O6miu6, V6miu6, C7miu6, J7miu6, Q7miu6, X7miu6; +wire E8miu6, L8miu6, S8miu6, Z8miu6, G9miu6, N9miu6, U9miu6, Bamiu6, Iamiu6, Pamiu6; +wire Wamiu6, Dbmiu6, Kbmiu6, Rbmiu6, Ybmiu6, Fcmiu6, Mcmiu6, Tcmiu6, Admiu6, Hdmiu6; +wire Odmiu6, Vdmiu6, Cemiu6, Jemiu6, Qemiu6, Xemiu6, Efmiu6, Lfmiu6, Sfmiu6, Zfmiu6; +wire Ggmiu6, Ngmiu6, Ugmiu6, Bhmiu6, Ihmiu6, Phmiu6, Whmiu6, Dimiu6, Kimiu6, Rimiu6; +wire Yimiu6, Fjmiu6, Mjmiu6, Tjmiu6, Akmiu6, Hkmiu6, Okmiu6, Vkmiu6, Clmiu6, Jlmiu6; +wire Qlmiu6, Xlmiu6, Emmiu6, Lmmiu6, Smmiu6, Zmmiu6, Gnmiu6, Nnmiu6, Unmiu6, Bomiu6; +wire Iomiu6, Pomiu6, Womiu6, Dpmiu6, Kpmiu6, Rpmiu6, Ypmiu6, Fqmiu6, Mqmiu6, Tqmiu6; +wire Armiu6, Hrmiu6, Ormiu6, Vrmiu6, Csmiu6, Jsmiu6, Qsmiu6, Xsmiu6, Etmiu6, Ltmiu6; +wire Stmiu6, Ztmiu6, Gumiu6, Numiu6, Uumiu6, Bvmiu6, Ivmiu6, Pvmiu6, Wvmiu6, Dwmiu6; +wire Kwmiu6, Rwmiu6, Ywmiu6, Fxmiu6, Mxmiu6, Txmiu6, Aymiu6, Hymiu6, Oymiu6, Vymiu6; +wire Czmiu6, Jzmiu6, Qzmiu6, Xzmiu6, E0niu6, L0niu6, S0niu6, Z0niu6, G1niu6, N1niu6; +wire U1niu6, B2niu6, I2niu6, P2niu6, W2niu6, D3niu6, K3niu6, R3niu6, Y3niu6, F4niu6; +wire M4niu6, T4niu6, A5niu6, H5niu6, O5niu6, V5niu6, C6niu6, J6niu6, Q6niu6, X6niu6; +wire E7niu6, L7niu6, S7niu6, Z7niu6, G8niu6, N8niu6, U8niu6, B9niu6, I9niu6, P9niu6; +wire W9niu6, Daniu6, Kaniu6, Raniu6, Yaniu6, Fbniu6, Mbniu6, Tbniu6, Acniu6, Hcniu6; +wire Ocniu6, Vcniu6, Cdniu6, Jdniu6, Qdniu6, Xdniu6, Eeniu6, Leniu6, Seniu6, Zeniu6; +wire Gfniu6, Nfniu6, Ufniu6, Bgniu6, Igniu6, Pgniu6, Wgniu6, Dhniu6, Khniu6, Rhniu6; +wire Yhniu6, Finiu6, Miniu6, Tiniu6, Ajniu6, Hjniu6, Ojniu6, Vjniu6, Ckniu6, Jkniu6; +wire Qkniu6, Xkniu6, Elniu6, Llniu6, Slniu6, Zlniu6, Gmniu6, Nmniu6, Umniu6, Bnniu6; +wire Inniu6, Pnniu6, Wnniu6, Doniu6, Koniu6, Roniu6, Yoniu6, Fpniu6, Mpniu6, Tpniu6; +wire Aqniu6, Hqniu6, Oqniu6, Vqniu6, Crniu6, Jrniu6, Qrniu6, Xrniu6, Esniu6, Lsniu6; +wire Ssniu6, Zsniu6, Gtniu6, Ntniu6, Utniu6, Buniu6, Iuniu6, Puniu6, Wuniu6, Dvniu6; +wire Kvniu6, Rvniu6, Yvniu6, Fwniu6, Mwniu6, Twniu6, Axniu6, Hxniu6, Oxniu6, Vxniu6; +wire Cyniu6, Jyniu6, Qyniu6, Xyniu6, Ezniu6, Lzniu6, Szniu6, Zzniu6, G0oiu6, N0oiu6; +wire U0oiu6, B1oiu6, I1oiu6, P1oiu6, W1oiu6, D2oiu6, K2oiu6, R2oiu6, Y2oiu6, F3oiu6; +wire M3oiu6, T3oiu6, A4oiu6, H4oiu6, O4oiu6, V4oiu6, C5oiu6, J5oiu6, Q5oiu6, X5oiu6; +wire E6oiu6, L6oiu6, S6oiu6, Z6oiu6, G7oiu6, N7oiu6, U7oiu6, B8oiu6, I8oiu6, P8oiu6; +wire W8oiu6, D9oiu6, K9oiu6, R9oiu6, Y9oiu6, Faoiu6, Maoiu6, Taoiu6, Aboiu6, Hboiu6; +wire Oboiu6, Vboiu6, Ccoiu6, Jcoiu6, Qcoiu6, Xcoiu6, Edoiu6, Ldoiu6, Sdoiu6, Zdoiu6; +wire Geoiu6, Neoiu6, Ueoiu6, Bfoiu6, Ifoiu6, Pfoiu6, Wfoiu6, Dgoiu6, Kgoiu6, Rgoiu6; +wire Ygoiu6, Fhoiu6, Mhoiu6, Thoiu6, Aioiu6, Hioiu6, Oioiu6, Vioiu6, Cjoiu6, Jjoiu6; +wire Qjoiu6, Xjoiu6, Ekoiu6, Lkoiu6, Skoiu6, Zkoiu6, Gloiu6, Nloiu6, Uloiu6, Bmoiu6; +wire Imoiu6, Pmoiu6, Wmoiu6, Dnoiu6, Knoiu6, Rnoiu6, Ynoiu6, Fooiu6, Mooiu6, Tooiu6; +wire Apoiu6, Hpoiu6, Opoiu6, Vpoiu6, Cqoiu6, Jqoiu6, Qqoiu6, Xqoiu6, Eroiu6, Lroiu6; +wire Sroiu6, Zroiu6, Gsoiu6, Nsoiu6, Usoiu6, Btoiu6, Itoiu6, Ptoiu6, Wtoiu6, Duoiu6; +wire Kuoiu6, Ruoiu6, Yuoiu6, Fvoiu6, Mvoiu6, Tvoiu6, Awoiu6, Hwoiu6, Owoiu6, Vwoiu6; +wire Cxoiu6, Jxoiu6, Qxoiu6, Xxoiu6, Eyoiu6, Lyoiu6, Syoiu6, Zyoiu6, Gzoiu6, Nzoiu6; +wire Uzoiu6, B0piu6, I0piu6, P0piu6, W0piu6, D1piu6, K1piu6, R1piu6, Y1piu6, F2piu6; +wire M2piu6, T2piu6, A3piu6, H3piu6, O3piu6, V3piu6, C4piu6, J4piu6, Q4piu6, X4piu6; +wire E5piu6, L5piu6, S5piu6, Z5piu6, G6piu6, N6piu6, U6piu6, B7piu6, I7piu6, P7piu6; +wire W7piu6, D8piu6, K8piu6, R8piu6, Y8piu6, F9piu6, M9piu6, T9piu6, Aapiu6, Hapiu6; +wire Oapiu6, Vapiu6, Cbpiu6, Jbpiu6, Qbpiu6, Xbpiu6, Ecpiu6, Lcpiu6, Scpiu6, Zcpiu6; +wire Gdpiu6, Ndpiu6, Udpiu6, Bepiu6, Iepiu6, Pepiu6, Wepiu6, Dfpiu6, Kfpiu6, Rfpiu6; +wire Yfpiu6, Fgpiu6, Mgpiu6, Tgpiu6, Ahpiu6, Hhpiu6, Ohpiu6, Vhpiu6, Cipiu6, Jipiu6; +wire Qipiu6, Xipiu6, Ejpiu6, Ljpiu6, Sjpiu6, Zjpiu6, Gkpiu6, Nkpiu6, Ukpiu6, Blpiu6; +wire Ilpiu6, Plpiu6, Wlpiu6, Dmpiu6, Kmpiu6, Rmpiu6, Ympiu6, Fnpiu6, Mnpiu6, Tnpiu6; +wire Aopiu6, Hopiu6, Oopiu6, Vopiu6, Cppiu6, Jppiu6, Qppiu6, Xppiu6, Eqpiu6, Lqpiu6; +wire Sqpiu6, Zqpiu6, Grpiu6, Nrpiu6, Urpiu6, Bspiu6, Ispiu6, Pspiu6, Wspiu6, Dtpiu6; +wire Ktpiu6, Rtpiu6, Ytpiu6, Fupiu6, Mupiu6, Tupiu6, Avpiu6, Hvpiu6, Ovpiu6, Vvpiu6; +wire Cwpiu6, Jwpiu6, Qwpiu6, Xwpiu6, Expiu6, Lxpiu6, Sxpiu6, Zxpiu6, Gypiu6, Nypiu6; +wire Uypiu6, Bzpiu6, Izpiu6, Pzpiu6, Wzpiu6, D0qiu6, K0qiu6, R0qiu6, Y0qiu6, F1qiu6; +wire M1qiu6, T1qiu6, A2qiu6, H2qiu6, O2qiu6, V2qiu6, C3qiu6, J3qiu6, Q3qiu6, X3qiu6; +wire E4qiu6, L4qiu6, S4qiu6, Z4qiu6, G5qiu6, N5qiu6, U5qiu6, B6qiu6, I6qiu6, P6qiu6; +wire W6qiu6, D7qiu6, K7qiu6, R7qiu6, Y7qiu6, F8qiu6, M8qiu6, T8qiu6, A9qiu6, H9qiu6; +wire O9qiu6, V9qiu6, Caqiu6, Jaqiu6, Qaqiu6, Xaqiu6, Ebqiu6, Lbqiu6, Sbqiu6, Zbqiu6; +wire Gcqiu6, Ncqiu6, Ucqiu6, Bdqiu6, Idqiu6, Pdqiu6, Wdqiu6, Deqiu6, Keqiu6, Reqiu6; +wire Yeqiu6, Ffqiu6, Mfqiu6, Tfqiu6, Agqiu6, Hgqiu6, Ogqiu6, Vgqiu6, Chqiu6, Jhqiu6; +wire Qhqiu6, Xhqiu6, Eiqiu6, Liqiu6, Siqiu6, Ziqiu6, Gjqiu6, Njqiu6, Ujqiu6, Bkqiu6; +wire Ikqiu6, Pkqiu6, Wkqiu6, Dlqiu6, Klqiu6, Rlqiu6, Ylqiu6, Fmqiu6, Mmqiu6, Tmqiu6; +wire Anqiu6, Hnqiu6, Onqiu6, Vnqiu6, Coqiu6, Joqiu6, Qoqiu6, Xoqiu6, Epqiu6, Lpqiu6; +wire Spqiu6, Zpqiu6, Gqqiu6, Nqqiu6, Uqqiu6, Brqiu6, Irqiu6, Prqiu6, Wrqiu6, Dsqiu6; +wire Ksqiu6, Rsqiu6, Ysqiu6, Ftqiu6, Mtqiu6, Ttqiu6, Auqiu6, Huqiu6, Ouqiu6, Vuqiu6; +wire Cvqiu6, Jvqiu6, Qvqiu6, Xvqiu6, Ewqiu6, Lwqiu6, Swqiu6, Zwqiu6, Gxqiu6, Nxqiu6; +wire Uxqiu6, Byqiu6, Iyqiu6, Pyqiu6, Wyqiu6, Dzqiu6, Kzqiu6, Rzqiu6, Yzqiu6, F0riu6; +wire M0riu6, T0riu6, A1riu6, H1riu6, O1riu6, V1riu6, C2riu6, J2riu6, Q2riu6, X2riu6; +wire E3riu6, L3riu6, S3riu6, Z3riu6, G4riu6, N4riu6, U4riu6, B5riu6, I5riu6, P5riu6; +wire W5riu6, D6riu6, K6riu6, R6riu6, Y6riu6, F7riu6, M7riu6, T7riu6, A8riu6, H8riu6; +wire O8riu6, V8riu6, C9riu6, J9riu6, Q9riu6, X9riu6, Eariu6, Lariu6, Sariu6, Zariu6; +wire Gbriu6, Nbriu6, Ubriu6, Bcriu6, Icriu6, Pcriu6, Wcriu6, Ddriu6, Kdriu6, Rdriu6; +wire Ydriu6, Feriu6, Meriu6, Teriu6, Afriu6, Hfriu6, Ofriu6, Vfriu6, Cgriu6, Jgriu6; +wire Qgriu6, Xgriu6, Ehriu6, Lhriu6, Shriu6, Zhriu6, Giriu6, Niriu6, Uiriu6, Bjriu6; +wire Ijriu6, Pjriu6, Wjriu6, Dkriu6, Kkriu6, Rkriu6, Ykriu6, Flriu6, Mlriu6, Tlriu6; +wire Amriu6, Hmriu6, Omriu6, Vmriu6, Cnriu6, Jnriu6, Qnriu6, Xnriu6, Eoriu6, Loriu6; +wire Soriu6, Zoriu6, Gpriu6, Npriu6, Upriu6, Bqriu6, Iqriu6, Pqriu6, Wqriu6, Drriu6; +wire Krriu6, Rrriu6, Yrriu6, Fsriu6, Msriu6, Tsriu6, Atriu6, Htriu6, Otriu6, Vtriu6; +wire Curiu6, Juriu6, Quriu6, Xuriu6, Evriu6, Lvriu6, Svriu6, Zvriu6, Gwriu6, Nwriu6; +wire Uwriu6, Bxriu6, Ixriu6, Pxriu6, Wxriu6, Dyriu6, Kyriu6, Ryriu6, Yyriu6, Fzriu6; +wire Mzriu6, Tzriu6, A0siu6, H0siu6, O0siu6, V0siu6, C1siu6, J1siu6, Q1siu6, X1siu6; +wire E2siu6, L2siu6, S2siu6, Z2siu6, G3siu6, N3siu6, U3siu6, B4siu6, I4siu6, P4siu6; +wire W4siu6, D5siu6, K5siu6, R5siu6, Y5siu6, F6siu6, M6siu6, T6siu6, A7siu6, H7siu6; +wire O7siu6, V7siu6, C8siu6, J8siu6, Q8siu6, X8siu6, E9siu6, L9siu6, S9siu6, Z9siu6; +wire Gasiu6, Nasiu6, Uasiu6, Bbsiu6, Ibsiu6, Pbsiu6, Wbsiu6, Dcsiu6, Kcsiu6, Rcsiu6; +wire Ycsiu6, Fdsiu6, Mdsiu6, Tdsiu6, Aesiu6, Hesiu6, Oesiu6, Vesiu6, Cfsiu6, Jfsiu6; +wire Qfsiu6, Xfsiu6, Egsiu6, Lgsiu6, Sgsiu6, Zgsiu6, Ghsiu6, Nhsiu6, Uhsiu6, Bisiu6; +wire Iisiu6, Pisiu6, Wisiu6, Djsiu6, Kjsiu6, Rjsiu6, Yjsiu6, Fksiu6, Mksiu6, Tksiu6; +wire Alsiu6, Hlsiu6, Olsiu6, Vlsiu6, Cmsiu6, Jmsiu6, Qmsiu6, Xmsiu6, Ensiu6, Lnsiu6; +wire Snsiu6, Znsiu6, Gosiu6, Nosiu6, Uosiu6, Bpsiu6, Ipsiu6, Ppsiu6, Wpsiu6, Dqsiu6; +wire Kqsiu6, Rqsiu6, Yqsiu6, Frsiu6, Mrsiu6, Trsiu6, Assiu6, Hssiu6, Ossiu6, Vssiu6; +wire Ctsiu6, Jtsiu6, Qtsiu6, Xtsiu6, Eusiu6, Lusiu6, Susiu6, Zusiu6, Gvsiu6, Nvsiu6; +wire Uvsiu6, Bwsiu6, Iwsiu6, Pwsiu6, Wwsiu6, Dxsiu6, Kxsiu6, Rxsiu6, Yxsiu6, Fysiu6; +wire Mysiu6, Tysiu6, Azsiu6, Hzsiu6, Ozsiu6, Vzsiu6, C0tiu6, J0tiu6, Q0tiu6, X0tiu6; +wire E1tiu6, L1tiu6, S1tiu6, Z1tiu6, G2tiu6, N2tiu6, U2tiu6, B3tiu6, I3tiu6, P3tiu6; +wire W3tiu6, D4tiu6, K4tiu6, R4tiu6, Y4tiu6, F5tiu6, M5tiu6, T5tiu6, A6tiu6, H6tiu6; +wire O6tiu6, V6tiu6, C7tiu6, J7tiu6, Q7tiu6, X7tiu6, E8tiu6, L8tiu6, S8tiu6, Z8tiu6; +wire G9tiu6, N9tiu6, U9tiu6, Batiu6, Iatiu6, Patiu6, Watiu6, Dbtiu6, Kbtiu6, Rbtiu6; +wire Ybtiu6, Fctiu6, Mctiu6, Tctiu6, Adtiu6, Hdtiu6, Odtiu6, Vdtiu6, Cetiu6, Jetiu6; +wire Qetiu6, Xetiu6, Eftiu6, Lftiu6, Sftiu6, Zftiu6, Ggtiu6, Ngtiu6, Ugtiu6, Bhtiu6; +wire Ihtiu6, Phtiu6, Whtiu6, Ditiu6, Kitiu6, Ritiu6, Yitiu6, Fjtiu6, Mjtiu6, Tjtiu6; +wire Aktiu6, Hktiu6, Oktiu6, Vktiu6, Cltiu6, Jltiu6, Qltiu6, Xltiu6, Emtiu6, Lmtiu6; +wire Smtiu6, Zmtiu6, Gntiu6, Nntiu6, Untiu6, Botiu6, Iotiu6, Potiu6, Wotiu6, Dptiu6; +wire Kptiu6, Rptiu6, Yptiu6, Fqtiu6, Mqtiu6, Tqtiu6, Artiu6, Hrtiu6, Ortiu6, Vrtiu6; +wire Cstiu6, Jstiu6, Qstiu6, Xstiu6, Ettiu6, Lttiu6, Sttiu6, Zttiu6, Gutiu6, Nutiu6; +wire Uutiu6, Bvtiu6, Ivtiu6, Pvtiu6, Wvtiu6, Dwtiu6, Kwtiu6, Rwtiu6, Ywtiu6, Fxtiu6; +wire Mxtiu6, Txtiu6, Aytiu6, Hytiu6, Oytiu6, Vytiu6, Cztiu6, Jztiu6, Qztiu6, Xztiu6; +wire E0uiu6, L0uiu6, S0uiu6, Z0uiu6, G1uiu6, N1uiu6, U1uiu6, B2uiu6, I2uiu6, P2uiu6; +wire W2uiu6, D3uiu6, K3uiu6, R3uiu6, Y3uiu6, F4uiu6, M4uiu6, T4uiu6, A5uiu6, H5uiu6; +wire O5uiu6, V5uiu6, C6uiu6, J6uiu6, Q6uiu6, X6uiu6, E7uiu6, L7uiu6, S7uiu6, Z7uiu6; +wire G8uiu6, N8uiu6, U8uiu6, B9uiu6, I9uiu6, P9uiu6, W9uiu6, Dauiu6, Kauiu6, Rauiu6; +wire Yauiu6, Fbuiu6, Mbuiu6, Tbuiu6, Acuiu6, Hcuiu6, Ocuiu6, Vcuiu6, Cduiu6, Jduiu6; +wire Qduiu6, Xduiu6, Eeuiu6, Leuiu6, Seuiu6, Zeuiu6, Gfuiu6, Nfuiu6, Ufuiu6, Bguiu6; +wire Iguiu6, Pguiu6, Wguiu6, Dhuiu6, Khuiu6, Rhuiu6, Yhuiu6, Fiuiu6, Miuiu6, Tiuiu6; +wire Ajuiu6, Hjuiu6, Ojuiu6, Vjuiu6, Ckuiu6, Jkuiu6, Qkuiu6, Xkuiu6, Eluiu6, Lluiu6; +wire Sluiu6, Zluiu6, Gmuiu6, Nmuiu6, Umuiu6, Bnuiu6, Inuiu6, Pnuiu6, Wnuiu6, Douiu6; +wire Kouiu6, Rouiu6, Youiu6, Fpuiu6, Mpuiu6, Tpuiu6, Aquiu6, Hquiu6, Oquiu6, Vquiu6; +wire Cruiu6, Jruiu6, Qruiu6, Xruiu6, Esuiu6, Lsuiu6, Ssuiu6, Zsuiu6, Gtuiu6, Ntuiu6; +wire Utuiu6, Buuiu6, Iuuiu6, Puuiu6, Wuuiu6, Dvuiu6, Kvuiu6, Rvuiu6, Yvuiu6, Fwuiu6; +wire Mwuiu6, Twuiu6, Axuiu6, Hxuiu6, Oxuiu6, Vxuiu6, Cyuiu6, Jyuiu6, Qyuiu6, Xyuiu6; +wire Ezuiu6, Lzuiu6, Szuiu6, Zzuiu6, G0viu6, N0viu6, U0viu6, B1viu6, I1viu6, P1viu6; +wire W1viu6, D2viu6, K2viu6, R2viu6, Y2viu6, F3viu6, M3viu6, T3viu6, A4viu6, H4viu6; +wire O4viu6, V4viu6, C5viu6, J5viu6, Q5viu6, X5viu6, E6viu6, L6viu6, S6viu6, Z6viu6; +wire G7viu6, N7viu6, U7viu6, B8viu6, I8viu6, P8viu6, W8viu6, D9viu6, K9viu6, R9viu6; +wire Y9viu6, Faviu6, Maviu6, Taviu6, Abviu6, Hbviu6, Obviu6, Vbviu6, Ccviu6, Jcviu6; +wire Qcviu6, Xcviu6, Edviu6, Ldviu6, Sdviu6, Zdviu6, Geviu6, Neviu6, Ueviu6, Bfviu6; +wire Ifviu6, Pfviu6, Wfviu6, Dgviu6, Kgviu6, Rgviu6, Ygviu6, Fhviu6, Mhviu6, Thviu6; +wire Aiviu6, Hiviu6, Oiviu6, Viviu6, Cjviu6, Jjviu6, Qjviu6, Xjviu6, Ekviu6, Lkviu6; +wire Skviu6, Zkviu6, Glviu6, Nlviu6, Ulviu6, Bmviu6, Imviu6, Pmviu6, Wmviu6, Dnviu6; +wire Knviu6, Rnviu6, Ynviu6, Foviu6, Moviu6, Toviu6, Apviu6, Hpviu6, Opviu6, Vpviu6; +wire Cqviu6, Jqviu6, Qqviu6, Xqviu6, Erviu6, Lrviu6, Srviu6, Zrviu6, Gsviu6, Nsviu6; +wire Usviu6, Btviu6, Itviu6, Ptviu6, Wtviu6, Duviu6, Kuviu6, Ruviu6, Yuviu6, Fvviu6; +wire Mvviu6, Tvviu6, Awviu6, Hwviu6, Owviu6, Vwviu6, Cxviu6, Jxviu6, Qxviu6, Xxviu6; +wire Eyviu6, Lyviu6, Syviu6, Zyviu6, Gzviu6, Nzviu6, Uzviu6, B0wiu6, I0wiu6, P0wiu6; +wire W0wiu6, D1wiu6, K1wiu6, R1wiu6, Y1wiu6, F2wiu6, M2wiu6, T2wiu6, A3wiu6, H3wiu6; +wire O3wiu6, V3wiu6, C4wiu6, J4wiu6, Q4wiu6, X4wiu6, E5wiu6, L5wiu6, S5wiu6, Z5wiu6; +wire G6wiu6, N6wiu6, U6wiu6, B7wiu6, I7wiu6, P7wiu6, W7wiu6, D8wiu6, K8wiu6, R8wiu6; +wire Y8wiu6, F9wiu6, M9wiu6, T9wiu6, Aawiu6, Hawiu6, Oawiu6, Vawiu6, Cbwiu6, Jbwiu6; +wire Qbwiu6, Xbwiu6, Ecwiu6, Lcwiu6, Scwiu6, Zcwiu6, Gdwiu6, Ndwiu6, Udwiu6, Bewiu6; +wire Iewiu6, Pewiu6, Wewiu6, Dfwiu6, Kfwiu6, Rfwiu6, Yfwiu6, Fgwiu6, Mgwiu6, Tgwiu6; +wire Ahwiu6, Hhwiu6, Ohwiu6, Vhwiu6, Ciwiu6, Jiwiu6, Qiwiu6, Xiwiu6, Ejwiu6, Ljwiu6; +wire Sjwiu6, Zjwiu6, Gkwiu6, Nkwiu6, Ukwiu6, Blwiu6, Ilwiu6, Plwiu6, Wlwiu6, Dmwiu6; +wire Kmwiu6, Rmwiu6, Ymwiu6, Fnwiu6, Mnwiu6, Tnwiu6, Aowiu6, Howiu6, Oowiu6, Vowiu6; +wire Cpwiu6, Jpwiu6, Qpwiu6, Xpwiu6, Eqwiu6, Lqwiu6, Sqwiu6, Zqwiu6, Grwiu6, Nrwiu6; +wire Urwiu6, Bswiu6, Iswiu6, Pswiu6, Wswiu6, Dtwiu6, Ktwiu6, Rtwiu6, Ytwiu6, Fuwiu6; +wire Muwiu6, Tuwiu6, Avwiu6, Hvwiu6, Ovwiu6, Vvwiu6, Cwwiu6, Jwwiu6, Qwwiu6, Xwwiu6; +wire Exwiu6, Lxwiu6, Sxwiu6, Zxwiu6, Gywiu6, Nywiu6, Uywiu6, Bzwiu6, Izwiu6, Pzwiu6; +wire Wzwiu6, D0xiu6, K0xiu6, R0xiu6, Y0xiu6, F1xiu6, M1xiu6, T1xiu6, A2xiu6, H2xiu6; +wire O2xiu6, V2xiu6, C3xiu6, J3xiu6, Q3xiu6, X3xiu6, E4xiu6, L4xiu6, S4xiu6, Z4xiu6; +wire G5xiu6, N5xiu6, U5xiu6, B6xiu6, I6xiu6, P6xiu6, W6xiu6, D7xiu6, K7xiu6, R7xiu6; +wire Y7xiu6, F8xiu6, M8xiu6, T8xiu6, A9xiu6, H9xiu6, O9xiu6, V9xiu6, Caxiu6, Jaxiu6; +wire Qaxiu6, Xaxiu6, Ebxiu6, Lbxiu6, Sbxiu6, Zbxiu6, Gcxiu6, Ncxiu6, Ucxiu6, Bdxiu6; +wire Idxiu6, Pdxiu6, Wdxiu6, Dexiu6, Kexiu6, Rexiu6, Yexiu6, Ffxiu6, Mfxiu6, Tfxiu6; +wire Agxiu6, Hgxiu6, Ogxiu6, Vgxiu6, Chxiu6, Jhxiu6, Qhxiu6, Xhxiu6, Eixiu6, Lixiu6; +wire Sixiu6, Zixiu6, Gjxiu6, Njxiu6, Ujxiu6, Bkxiu6, Ikxiu6, Pkxiu6, Wkxiu6, Dlxiu6; +wire Klxiu6, Rlxiu6, Ylxiu6, Fmxiu6, Mmxiu6, Tmxiu6, Anxiu6, Hnxiu6, Onxiu6, Vnxiu6; +wire Coxiu6, Joxiu6, Qoxiu6, Xoxiu6, Epxiu6, Lpxiu6, Spxiu6, Zpxiu6, Gqxiu6, Nqxiu6; +wire Uqxiu6, Brxiu6, Irxiu6, Prxiu6, Wrxiu6, Dsxiu6, Ksxiu6, Rsxiu6, Ysxiu6, Ftxiu6; +wire Mtxiu6, Ttxiu6, Auxiu6, Huxiu6, Ouxiu6, Vuxiu6, Cvxiu6, Jvxiu6, Qvxiu6, Xvxiu6; +wire Ewxiu6, Lwxiu6, Swxiu6, Zwxiu6, Gxxiu6, Nxxiu6, Uxxiu6, Byxiu6, Iyxiu6, Pyxiu6; +wire Wyxiu6, Dzxiu6, Kzxiu6, Rzxiu6, Yzxiu6, F0yiu6, M0yiu6, T0yiu6, A1yiu6, H1yiu6; +wire O1yiu6, V1yiu6, C2yiu6, J2yiu6, Q2yiu6, X2yiu6, E3yiu6, L3yiu6, S3yiu6, Z3yiu6; +wire G4yiu6, N4yiu6, U4yiu6, B5yiu6, I5yiu6, P5yiu6, W5yiu6, D6yiu6, K6yiu6, R6yiu6; +wire Y6yiu6, F7yiu6, M7yiu6, T7yiu6, A8yiu6, H8yiu6, O8yiu6, V8yiu6, C9yiu6, J9yiu6; +wire Q9yiu6, X9yiu6, Eayiu6, Layiu6, Sayiu6, Zayiu6, Gbyiu6, Nbyiu6, Ubyiu6, Bcyiu6; +wire Icyiu6, Pcyiu6, Wcyiu6, Ddyiu6, Kdyiu6, Rdyiu6, Ydyiu6, Feyiu6, Meyiu6, Teyiu6; +wire Afyiu6, Hfyiu6, Ofyiu6, Vfyiu6, Cgyiu6, Jgyiu6, Qgyiu6, Xgyiu6, Ehyiu6, Lhyiu6; +wire Shyiu6, Zhyiu6, Giyiu6, Niyiu6, Uiyiu6, Bjyiu6, Ijyiu6, Pjyiu6, Wjyiu6, Dkyiu6; +wire Kkyiu6, Rkyiu6, Ykyiu6, Flyiu6, Mlyiu6, Tlyiu6, Amyiu6, Hmyiu6, Omyiu6, Vmyiu6; +wire Cnyiu6, Jnyiu6, Qnyiu6, Xnyiu6, Eoyiu6, Loyiu6, Soyiu6, Zoyiu6, Gpyiu6, Npyiu6; +wire Upyiu6, Bqyiu6, Iqyiu6, Pqyiu6, Wqyiu6, Dryiu6, Kryiu6, Rryiu6, Yryiu6, Fsyiu6; +wire Msyiu6, Tsyiu6, Atyiu6, Htyiu6, Otyiu6, Vtyiu6, Cuyiu6, Juyiu6, Quyiu6, Xuyiu6; +wire Evyiu6, Lvyiu6, Svyiu6, Zvyiu6, Gwyiu6, Nwyiu6, Uwyiu6, Bxyiu6, Ixyiu6, Pxyiu6; +wire Wxyiu6, Dyyiu6, Kyyiu6, Ryyiu6, Yyyiu6, Fzyiu6, Mzyiu6, Tzyiu6, A0ziu6, H0ziu6; +wire O0ziu6, V0ziu6, C1ziu6, J1ziu6, Q1ziu6, X1ziu6, E2ziu6, L2ziu6, S2ziu6, Z2ziu6; +wire G3ziu6, N3ziu6, U3ziu6, B4ziu6, I4ziu6, P4ziu6, W4ziu6, D5ziu6, K5ziu6, R5ziu6; +wire Y5ziu6, F6ziu6, M6ziu6, T6ziu6, A7ziu6, H7ziu6, O7ziu6, V7ziu6, C8ziu6, J8ziu6; +wire Q8ziu6, X8ziu6, E9ziu6, L9ziu6, S9ziu6, Z9ziu6, Gaziu6, Naziu6, Uaziu6, Bbziu6; +wire Ibziu6, Pbziu6, Wbziu6, Dcziu6, Kcziu6, Rcziu6, Ycziu6, Fdziu6, Mdziu6, Tdziu6; +wire Aeziu6, Heziu6, Oeziu6, Veziu6, Cfziu6, Jfziu6, Qfziu6, Xfziu6, Egziu6, Lgziu6; +wire Sgziu6, Zgziu6, Ghziu6, Nhziu6, Uhziu6, Biziu6, Iiziu6, Piziu6, Wiziu6, Djziu6; +wire Kjziu6, Rjziu6, Yjziu6, Fkziu6, Mkziu6, Tkziu6, Alziu6, Hlziu6, Olziu6, Vlziu6; +wire Cmziu6, Jmziu6, Qmziu6, Xmziu6, Enziu6, Lnziu6, Snziu6, Znziu6, Goziu6, Noziu6; +wire Uoziu6, Bpziu6, Ipziu6, Ppziu6, Wpziu6, Dqziu6, Kqziu6, Rqziu6, Yqziu6, Frziu6; +wire Mrziu6, Trziu6, Asziu6, Hsziu6, Osziu6, Vsziu6, Ctziu6, Jtziu6, Qtziu6, Xtziu6; +wire Euziu6, Luziu6, Suziu6, Zuziu6, Gvziu6, Nvziu6, Uvziu6, Bwziu6, Iwziu6, Pwziu6; +wire Wwziu6, Dxziu6, Kxziu6, Rxziu6, Yxziu6, Fyziu6, Myziu6, Tyziu6, Azziu6, Hzziu6; +wire Ozziu6, Vzziu6, C00ju6, J00ju6, Q00ju6, X00ju6, E10ju6, L10ju6, S10ju6, Z10ju6; +wire G20ju6, N20ju6, U20ju6, B30ju6, I30ju6, P30ju6, W30ju6, D40ju6, K40ju6, R40ju6; +wire Y40ju6, F50ju6, M50ju6, T50ju6, A60ju6, H60ju6, O60ju6, V60ju6, C70ju6, J70ju6; +wire Q70ju6, X70ju6, E80ju6, L80ju6, S80ju6, Z80ju6, G90ju6, N90ju6, U90ju6, Ba0ju6; +wire Ia0ju6, Pa0ju6, Wa0ju6, Db0ju6, Kb0ju6, Rb0ju6, Yb0ju6, Fc0ju6, Mc0ju6, Tc0ju6; +wire Ad0ju6, Hd0ju6, Od0ju6, Vd0ju6, Ce0ju6, Je0ju6, Qe0ju6, Xe0ju6, Ef0ju6, Lf0ju6; +wire Sf0ju6, Zf0ju6, Gg0ju6, Ng0ju6, Ug0ju6, Bh0ju6, Ih0ju6, Ph0ju6, Wh0ju6, Di0ju6; +wire Ki0ju6, Ri0ju6, Yi0ju6, Fj0ju6, Mj0ju6, Tj0ju6, Ak0ju6, Hk0ju6, Ok0ju6, Vk0ju6; +wire Cl0ju6, Jl0ju6, Ql0ju6, Xl0ju6, Em0ju6, Lm0ju6, Sm0ju6, Zm0ju6, Gn0ju6, Nn0ju6; +wire Un0ju6, Bo0ju6, Io0ju6, Po0ju6, Wo0ju6, Dp0ju6, Kp0ju6, Rp0ju6, Yp0ju6, Fq0ju6; +wire Mq0ju6, Tq0ju6, Ar0ju6, Hr0ju6, Or0ju6, Vr0ju6, Cs0ju6, Js0ju6, Qs0ju6, Xs0ju6; +wire Et0ju6, Lt0ju6, St0ju6, Zt0ju6, Gu0ju6, Nu0ju6, Uu0ju6, Bv0ju6, Iv0ju6, Pv0ju6; +wire Wv0ju6, Dw0ju6, Kw0ju6, Rw0ju6, Yw0ju6, Fx0ju6, Mx0ju6, Tx0ju6, Ay0ju6, Hy0ju6; +wire Oy0ju6, Vy0ju6, Cz0ju6, Jz0ju6, Qz0ju6, Xz0ju6, E01ju6, L01ju6, S01ju6, Z01ju6; +wire G11ju6, N11ju6, U11ju6, B21ju6, I21ju6, P21ju6, W21ju6, D31ju6, K31ju6, R31ju6; +wire Y31ju6, F41ju6, M41ju6, T41ju6, A51ju6, H51ju6, O51ju6, V51ju6, C61ju6, J61ju6; +wire Q61ju6, X61ju6, E71ju6, L71ju6, S71ju6, Z71ju6, G81ju6, N81ju6, U81ju6, B91ju6; +wire I91ju6, P91ju6, W91ju6, Da1ju6, Ka1ju6, Ra1ju6, Ya1ju6, Fb1ju6, Mb1ju6, Tb1ju6; +wire Ac1ju6, Hc1ju6, Oc1ju6, Vc1ju6, Cd1ju6, Jd1ju6, Qd1ju6, Xd1ju6, Ee1ju6, Le1ju6; +wire Se1ju6, Ze1ju6, Gf1ju6, Nf1ju6, Uf1ju6, Bg1ju6, Ig1ju6, Pg1ju6, Wg1ju6, Dh1ju6; +wire Kh1ju6, Rh1ju6, Yh1ju6, Fi1ju6, Mi1ju6, Ti1ju6, Aj1ju6, Hj1ju6, Oj1ju6, Vj1ju6; +wire Ck1ju6, Jk1ju6, Qk1ju6, Xk1ju6, El1ju6, Ll1ju6, Sl1ju6, Zl1ju6, Gm1ju6, Nm1ju6; +wire Um1ju6, Bn1ju6, In1ju6, Pn1ju6, Wn1ju6, Do1ju6, Ko1ju6, Ro1ju6, Yo1ju6, Fp1ju6; +wire Mp1ju6, Tp1ju6, Aq1ju6, Hq1ju6, Oq1ju6, Vq1ju6, Cr1ju6, Jr1ju6, Qr1ju6, Xr1ju6; +wire Es1ju6, Ls1ju6, Ss1ju6, Zs1ju6, Gt1ju6, Nt1ju6, Ut1ju6, Bu1ju6, Iu1ju6, Pu1ju6; +wire Wu1ju6, Dv1ju6, Kv1ju6, Rv1ju6, Yv1ju6, Fw1ju6, Mw1ju6, Tw1ju6, Ax1ju6, Hx1ju6; +wire Ox1ju6, Vx1ju6, Cy1ju6, Jy1ju6, Qy1ju6, Xy1ju6, Ez1ju6, Lz1ju6, Sz1ju6, Zz1ju6; +wire G02ju6, N02ju6, U02ju6, B12ju6, I12ju6, P12ju6, W12ju6, D22ju6, K22ju6, R22ju6; +wire Y22ju6, F32ju6, M32ju6, T32ju6, A42ju6, H42ju6, O42ju6, V42ju6, C52ju6, J52ju6; +wire Q52ju6, X52ju6, E62ju6, L62ju6, S62ju6, Z62ju6, G72ju6, N72ju6, U72ju6, B82ju6; +wire I82ju6, P82ju6, W82ju6, D92ju6, K92ju6, R92ju6, Y92ju6, Fa2ju6, Ma2ju6, Ta2ju6; +wire Ab2ju6, Hb2ju6, Ob2ju6, Vb2ju6, Cc2ju6, Jc2ju6, Qc2ju6, Xc2ju6, Ed2ju6, Ld2ju6; +wire Sd2ju6, Zd2ju6, Ge2ju6, Ne2ju6, Ue2ju6, Bf2ju6, If2ju6, Pf2ju6, Wf2ju6, Dg2ju6; +wire Kg2ju6, Rg2ju6, Yg2ju6, Fh2ju6, Mh2ju6, Th2ju6, Ai2ju6, Hi2ju6, Oi2ju6, Vi2ju6; +wire Cj2ju6, Jj2ju6, Qj2ju6, Xj2ju6, Ek2ju6, Lk2ju6, Sk2ju6, Zk2ju6, Gl2ju6, Nl2ju6; +wire Ul2ju6, Bm2ju6, Im2ju6, Pm2ju6, Wm2ju6, Dn2ju6, Kn2ju6, Rn2ju6, Yn2ju6, Fo2ju6; +wire Mo2ju6, To2ju6, Ap2ju6, Hp2ju6, Op2ju6, Vp2ju6, Cq2ju6, Jq2ju6, Qq2ju6, Xq2ju6; +wire Er2ju6, Lr2ju6, Sr2ju6, Zr2ju6, Gs2ju6, Ns2ju6, Us2ju6, Bt2ju6, It2ju6, Pt2ju6; +wire Wt2ju6, Du2ju6, Ku2ju6, Ru2ju6, Yu2ju6, Fv2ju6, Mv2ju6, Tv2ju6, Aw2ju6, Hw2ju6; +wire Ow2ju6, Vw2ju6, Cx2ju6, Jx2ju6, Qx2ju6, Xx2ju6, Ey2ju6, Ly2ju6, Sy2ju6, Zy2ju6; +wire Gz2ju6, Nz2ju6, Uz2ju6, B03ju6, I03ju6, P03ju6, W03ju6, D13ju6, K13ju6, R13ju6; +wire Y13ju6, F23ju6, M23ju6, T23ju6, A33ju6, H33ju6, O33ju6, V33ju6, C43ju6, J43ju6; +wire Q43ju6, X43ju6, E53ju6, L53ju6, S53ju6, Z53ju6, G63ju6, N63ju6, U63ju6, B73ju6; +wire I73ju6, P73ju6, W73ju6, D83ju6, K83ju6, R83ju6, Y83ju6, F93ju6, M93ju6, T93ju6; +wire Aa3ju6, Ha3ju6, Oa3ju6, Va3ju6, Cb3ju6, Jb3ju6, Qb3ju6, Xb3ju6, Ec3ju6, Lc3ju6; +wire Sc3ju6, Zc3ju6, Gd3ju6, Nd3ju6, Ud3ju6, Be3ju6, Ie3ju6, Pe3ju6, We3ju6, Df3ju6; +wire Kf3ju6, Rf3ju6, Yf3ju6, Fg3ju6, Mg3ju6, Tg3ju6, Ah3ju6, Hh3ju6, Oh3ju6, Vh3ju6; +wire Ci3ju6, Ji3ju6, Qi3ju6, Xi3ju6, Ej3ju6, Lj3ju6, Sj3ju6, Zj3ju6, Gk3ju6, Nk3ju6; +wire Uk3ju6, Bl3ju6, Il3ju6, Pl3ju6, Wl3ju6, Dm3ju6, Km3ju6, Rm3ju6, Ym3ju6, Fn3ju6; +wire Mn3ju6, Tn3ju6, Ao3ju6, Ho3ju6, Oo3ju6, Vo3ju6, Cp3ju6, Jp3ju6, Qp3ju6, Xp3ju6; +wire Eq3ju6, Lq3ju6, Sq3ju6, Zq3ju6, Gr3ju6, Nr3ju6, Ur3ju6, Bs3ju6, Is3ju6, Ps3ju6; +wire Ws3ju6, Dt3ju6, Kt3ju6, Rt3ju6, Yt3ju6, Fu3ju6, Mu3ju6, Tu3ju6, Av3ju6, Hv3ju6; +wire Ov3ju6, Vv3ju6, Cw3ju6, Jw3ju6, Qw3ju6, Xw3ju6, Ex3ju6, Lx3ju6, Sx3ju6, Zx3ju6; +wire Gy3ju6, Ny3ju6, Uy3ju6, Bz3ju6, Iz3ju6, Pz3ju6, Wz3ju6, D04ju6, K04ju6, R04ju6; +wire Y04ju6, F14ju6, M14ju6, T14ju6, A24ju6, H24ju6, O24ju6, V24ju6, C34ju6, J34ju6; +wire Q34ju6, X34ju6, E44ju6, L44ju6, S44ju6, Z44ju6, G54ju6, N54ju6, U54ju6, B64ju6; +wire I64ju6, P64ju6, W64ju6, D74ju6, K74ju6, R74ju6, Y74ju6, F84ju6, M84ju6, T84ju6; +wire A94ju6, H94ju6, O94ju6, V94ju6, Ca4ju6, Ja4ju6, Qa4ju6, Xa4ju6, Eb4ju6, Lb4ju6; +wire Sb4ju6, Zb4ju6, Gc4ju6, Nc4ju6, Uc4ju6, Bd4ju6, Id4ju6, Pd4ju6, Wd4ju6, De4ju6; +wire Ke4ju6, Re4ju6, Ye4ju6, Ff4ju6, Mf4ju6, Tf4ju6, Ag4ju6, Hg4ju6, Og4ju6, Vg4ju6; +wire Ch4ju6, Jh4ju6, Qh4ju6, Xh4ju6, Ei4ju6, Li4ju6, Si4ju6, Zi4ju6, Gj4ju6, Nj4ju6; +wire Uj4ju6, Bk4ju6, Ik4ju6, Pk4ju6, Wk4ju6, Dl4ju6, Kl4ju6, Rl4ju6, Yl4ju6, Fm4ju6; +wire Mm4ju6, Tm4ju6, An4ju6, Hn4ju6, On4ju6, Vn4ju6, Co4ju6, Jo4ju6, Qo4ju6, Xo4ju6; +wire Ep4ju6, Lp4ju6, Sp4ju6, Zp4ju6, Gq4ju6, Nq4ju6, Uq4ju6, Br4ju6, Ir4ju6, Pr4ju6; +wire Wr4ju6, Ds4ju6, Ks4ju6, Rs4ju6, Ys4ju6, Ft4ju6, Mt4ju6, Tt4ju6, Au4ju6, Hu4ju6; +wire Ou4ju6, Vu4ju6, Cv4ju6, Jv4ju6, Qv4ju6, Xv4ju6, Ew4ju6, Lw4ju6, Sw4ju6, Zw4ju6; +wire Gx4ju6, Nx4ju6, Ux4ju6, By4ju6, Iy4ju6, Py4ju6, Wy4ju6, Dz4ju6, Kz4ju6, Rz4ju6; +wire Yz4ju6, F05ju6, M05ju6, T05ju6, A15ju6, H15ju6, O15ju6, V15ju6, C25ju6, J25ju6; +wire Q25ju6, X25ju6, E35ju6, L35ju6, S35ju6, Z35ju6, G45ju6, N45ju6, U45ju6, B55ju6; +wire I55ju6, P55ju6, W55ju6, D65ju6, K65ju6, R65ju6, Y65ju6, F75ju6, M75ju6, T75ju6; +wire A85ju6, H85ju6, O85ju6, V85ju6, C95ju6, J95ju6, Q95ju6, X95ju6, Ea5ju6, La5ju6; +wire Sa5ju6, Za5ju6, Gb5ju6, Nb5ju6, Ub5ju6, Bc5ju6, Ic5ju6, Pc5ju6, Wc5ju6, Dd5ju6; +wire Kd5ju6, Rd5ju6, Yd5ju6, Fe5ju6, Me5ju6, Te5ju6, Af5ju6, Hf5ju6, Of5ju6, Vf5ju6; +wire Cg5ju6, Jg5ju6, Qg5ju6, Xg5ju6, Eh5ju6, Lh5ju6, Sh5ju6, Zh5ju6, Gi5ju6, Ni5ju6; +wire Ui5ju6, Bj5ju6, Ij5ju6, Pj5ju6, Wj5ju6, Dk5ju6, Kk5ju6, Rk5ju6, Yk5ju6, Fl5ju6; +wire Ml5ju6, Tl5ju6, Am5ju6, Hm5ju6, Om5ju6, Vm5ju6, Cn5ju6, Jn5ju6, Qn5ju6, Xn5ju6; +wire Eo5ju6, Lo5ju6, So5ju6, Zo5ju6, Gp5ju6, Np5ju6, Up5ju6, Bq5ju6, Iq5ju6, Pq5ju6; +wire Wq5ju6, Dr5ju6, Kr5ju6, Rr5ju6, Yr5ju6, Fs5ju6, Ms5ju6, Ts5ju6, At5ju6, Ht5ju6; +wire Ot5ju6, Vt5ju6, Cu5ju6, Ju5ju6, Qu5ju6, Xu5ju6, Ev5ju6, Lv5ju6, Sv5ju6, Zv5ju6; +wire Gw5ju6, Nw5ju6, Uw5ju6, Bx5ju6, Ix5ju6, Px5ju6, Wx5ju6, Dy5ju6, Ky5ju6, Ry5ju6; +wire Yy5ju6, Fz5ju6, Mz5ju6, Tz5ju6, A06ju6, H06ju6, O06ju6, V06ju6, C16ju6, J16ju6; +wire Q16ju6, X16ju6, E26ju6, L26ju6, S26ju6, Z26ju6, G36ju6, N36ju6, U36ju6, B46ju6; +wire I46ju6, P46ju6, W46ju6, D56ju6, K56ju6, R56ju6, Y56ju6, F66ju6, M66ju6, T66ju6; +wire A76ju6, H76ju6, O76ju6, V76ju6, C86ju6, J86ju6, Q86ju6, X86ju6, E96ju6, L96ju6; +wire S96ju6, Z96ju6, Ga6ju6, Na6ju6, Ua6ju6, Bb6ju6, Ib6ju6, Pb6ju6, Wb6ju6, Dc6ju6; +wire Kc6ju6, Rc6ju6, Yc6ju6, Fd6ju6, Md6ju6, Td6ju6, Ae6ju6, He6ju6, Oe6ju6, Ve6ju6; +wire Cf6ju6, Jf6ju6, Qf6ju6, Xf6ju6, Eg6ju6, Lg6ju6, Sg6ju6, Zg6ju6, Gh6ju6, Nh6ju6; +wire Uh6ju6, Bi6ju6, Ii6ju6, Pi6ju6, Wi6ju6, Dj6ju6, Kj6ju6, Rj6ju6, Yj6ju6, Fk6ju6; +wire Mk6ju6, Tk6ju6, Al6ju6, Hl6ju6, Ol6ju6, Vl6ju6, Cm6ju6, Jm6ju6, Qm6ju6, Xm6ju6; +wire En6ju6, Ln6ju6, Sn6ju6, Zn6ju6, Go6ju6, No6ju6, Uo6ju6, Bp6ju6, Ip6ju6, Pp6ju6; +wire Wp6ju6, Dq6ju6, Kq6ju6, Rq6ju6, Yq6ju6, Fr6ju6, Mr6ju6, Tr6ju6, As6ju6, Hs6ju6; +wire Os6ju6, Vs6ju6, Ct6ju6, Jt6ju6, Qt6ju6, Xt6ju6, Eu6ju6, Lu6ju6, Su6ju6, Zu6ju6; +wire Gv6ju6, Nv6ju6, Uv6ju6, Bw6ju6, Iw6ju6, Pw6ju6, Ww6ju6, Dx6ju6, Kx6ju6, Rx6ju6; +wire Yx6ju6, Fy6ju6, My6ju6, Ty6ju6, Az6ju6, Hz6ju6, Oz6ju6, Vz6ju6, C07ju6, J07ju6; +wire Q07ju6, X07ju6, E17ju6, L17ju6, S17ju6, Z17ju6, G27ju6, N27ju6, U27ju6, B37ju6; +wire I37ju6, P37ju6, W37ju6, D47ju6, K47ju6, R47ju6, Y47ju6, F57ju6, M57ju6, T57ju6; +wire A67ju6, H67ju6, O67ju6, V67ju6, C77ju6, J77ju6, Q77ju6, X77ju6, E87ju6, L87ju6; +wire S87ju6, Z87ju6, G97ju6, N97ju6, U97ju6, Ba7ju6, Ia7ju6, Pa7ju6, Wa7ju6, Db7ju6; +wire Kb7ju6, Rb7ju6, Yb7ju6, Fc7ju6, Mc7ju6, Tc7ju6, Ad7ju6, Hd7ju6, Od7ju6, Vd7ju6; +wire Ce7ju6, Je7ju6, Qe7ju6, Xe7ju6, Ef7ju6, Lf7ju6, Sf7ju6, Zf7ju6, Gg7ju6, Ng7ju6; +wire Ug7ju6, Bh7ju6, Ih7ju6, Ph7ju6, Wh7ju6, Di7ju6, Ki7ju6, Ri7ju6, Yi7ju6, Fj7ju6; +wire Mj7ju6, Tj7ju6, Ak7ju6, Hk7ju6, Ok7ju6, Vk7ju6, Cl7ju6, Jl7ju6, Ql7ju6, Xl7ju6; +wire Em7ju6, Lm7ju6, Sm7ju6, Zm7ju6, Gn7ju6, Nn7ju6, Un7ju6, Bo7ju6, Io7ju6, Po7ju6; +wire Wo7ju6, Dp7ju6, Kp7ju6, Rp7ju6, Yp7ju6, Fq7ju6, Mq7ju6, Tq7ju6, Ar7ju6, Hr7ju6; +wire Or7ju6, Vr7ju6, Cs7ju6, Js7ju6, Qs7ju6, Xs7ju6, Et7ju6, Lt7ju6, St7ju6, Zt7ju6; +wire Gu7ju6, Nu7ju6, Uu7ju6, Bv7ju6, Iv7ju6, Pv7ju6, Wv7ju6, Dw7ju6, Kw7ju6, Rw7ju6; +wire Yw7ju6, Fx7ju6, Mx7ju6, Tx7ju6, Ay7ju6, Hy7ju6, Oy7ju6, Vy7ju6, Cz7ju6, Jz7ju6; +wire Qz7ju6, Xz7ju6, E08ju6, L08ju6, S08ju6, Z08ju6, G18ju6, N18ju6, U18ju6, B28ju6; +wire I28ju6, P28ju6, W28ju6, D38ju6, K38ju6, R38ju6, Y38ju6, F48ju6, M48ju6, T48ju6; +wire A58ju6, H58ju6, O58ju6, V58ju6, C68ju6, J68ju6, Q68ju6, X68ju6, E78ju6, L78ju6; +wire S78ju6, Z78ju6, G88ju6, N88ju6, U88ju6, B98ju6, I98ju6, P98ju6, W98ju6, Da8ju6; +wire Ka8ju6, Ra8ju6, Ya8ju6, Fb8ju6, Mb8ju6, Tb8ju6, Ac8ju6, Hc8ju6, Oc8ju6, Vc8ju6; +wire Cd8ju6, Jd8ju6, Qd8ju6, Xd8ju6, Ee8ju6, Le8ju6, Se8ju6, Ze8ju6, Gf8ju6, Nf8ju6; +wire Uf8ju6, Bg8ju6, Ig8ju6, Pg8ju6, Wg8ju6, Dh8ju6, Kh8ju6, Rh8ju6, Yh8ju6, Fi8ju6; +wire Mi8ju6, Ti8ju6, Aj8ju6, Hj8ju6, Oj8ju6, Vj8ju6, Ck8ju6, Jk8ju6, Qk8ju6, Xk8ju6; +wire El8ju6, Ll8ju6, Sl8ju6, Zl8ju6, Gm8ju6, Nm8ju6, Um8ju6, Bn8ju6, In8ju6, Pn8ju6; +wire Wn8ju6, Do8ju6, Ko8ju6, Ro8ju6, Yo8ju6, Fp8ju6, Mp8ju6, Tp8ju6, Aq8ju6, Hq8ju6; +wire Oq8ju6, Vq8ju6, Cr8ju6, Jr8ju6, Qr8ju6, Xr8ju6, Es8ju6, Ls8ju6, Ss8ju6, Zs8ju6; +wire Gt8ju6, Nt8ju6, Ut8ju6, Bu8ju6, Iu8ju6, Pu8ju6, Wu8ju6, Dv8ju6, Kv8ju6, Rv8ju6; +wire Yv8ju6, Fw8ju6, Mw8ju6, Tw8ju6, Ax8ju6, Hx8ju6, Ox8ju6, Vx8ju6, Cy8ju6, Jy8ju6; +wire Qy8ju6, Xy8ju6, Ez8ju6, Lz8ju6, Sz8ju6, Zz8ju6, G09ju6, N09ju6, U09ju6, B19ju6; +wire I19ju6, P19ju6, W19ju6, D29ju6, K29ju6, R29ju6, Y29ju6, F39ju6, M39ju6, T39ju6; +wire A49ju6, H49ju6, O49ju6, V49ju6, C59ju6, J59ju6, Q59ju6, X59ju6, E69ju6, L69ju6; +wire S69ju6, Z69ju6, G79ju6, N79ju6, U79ju6, B89ju6, I89ju6, P89ju6, W89ju6, D99ju6; +wire K99ju6, R99ju6, Y99ju6, Fa9ju6, Ma9ju6, Ta9ju6, Ab9ju6, Hb9ju6, Ob9ju6, Vb9ju6; +wire Cc9ju6, Jc9ju6, Qc9ju6, Xc9ju6, Ed9ju6, Ld9ju6, Sd9ju6, Zd9ju6, Ge9ju6, Ne9ju6; +wire Ue9ju6, Bf9ju6, If9ju6, Pf9ju6, Wf9ju6, Dg9ju6, Kg9ju6, Rg9ju6, Yg9ju6, Fh9ju6; +wire Mh9ju6, Th9ju6, Ai9ju6, Hi9ju6, Oi9ju6, Vi9ju6, Cj9ju6, Jj9ju6, Qj9ju6, Xj9ju6; +wire Ek9ju6, Lk9ju6, Sk9ju6, Zk9ju6, Gl9ju6, Nl9ju6, Ul9ju6, Bm9ju6, Im9ju6, Pm9ju6; +wire Wm9ju6, Dn9ju6, Kn9ju6, Rn9ju6, Yn9ju6, Fo9ju6, Mo9ju6, To9ju6, Ap9ju6, Hp9ju6; +wire Op9ju6, Vp9ju6, Cq9ju6, Jq9ju6, Qq9ju6, Xq9ju6, Er9ju6, Lr9ju6, Sr9ju6, Zr9ju6; +wire Gs9ju6, Ns9ju6, Us9ju6, Bt9ju6, It9ju6, Pt9ju6, Wt9ju6, Du9ju6, Ku9ju6, Ru9ju6; +wire Yu9ju6, Fv9ju6, Mv9ju6, Tv9ju6, Aw9ju6, Hw9ju6, Ow9ju6, Vw9ju6, Cx9ju6, Jx9ju6; +wire Qx9ju6, Xx9ju6, Ey9ju6, Ly9ju6, Sy9ju6, Zy9ju6, Gz9ju6, Nz9ju6, Uz9ju6, B0aju6; +wire I0aju6, P0aju6, W0aju6, D1aju6, K1aju6, R1aju6, Y1aju6, F2aju6, M2aju6, T2aju6; +wire A3aju6, H3aju6, O3aju6, V3aju6, C4aju6, J4aju6, Q4aju6, X4aju6, E5aju6, L5aju6; +wire S5aju6, Z5aju6, G6aju6, N6aju6, U6aju6, B7aju6, I7aju6, P7aju6, W7aju6, D8aju6; +wire K8aju6, R8aju6, Y8aju6, F9aju6, M9aju6, T9aju6, Aaaju6, Haaju6, Oaaju6, Vaaju6; +wire Cbaju6, Jbaju6, Qbaju6, Xbaju6, Ecaju6, Lcaju6, Scaju6, Zcaju6, Gdaju6, Ndaju6; +wire Udaju6, Beaju6, Ieaju6, Peaju6, Weaju6, Dfaju6, Kfaju6, Rfaju6, Yfaju6, Fgaju6; +wire Mgaju6, Tgaju6, Ahaju6, Hhaju6, Ohaju6, Vhaju6, Ciaju6, Jiaju6, Qiaju6, Xiaju6; +wire Ejaju6, Ljaju6, Sjaju6, Zjaju6, Gkaju6, Nkaju6, Ukaju6, Blaju6, Ilaju6, Plaju6; +wire Wlaju6, Dmaju6, Kmaju6, Rmaju6, Ymaju6, Fnaju6, Mnaju6, Tnaju6, Aoaju6, Hoaju6; +wire Ooaju6, Voaju6, Cpaju6, Jpaju6, Qpaju6, Xpaju6, Eqaju6, Lqaju6, Sqaju6, Zqaju6; +wire Graju6, Nraju6, Uraju6, Bsaju6, Isaju6, Psaju6, Wsaju6, Dtaju6, K76ow6, R76ow6; +wire Y76ow6, F86ow6, M86ow6, T86ow6, A96ow6, H96ow6, O96ow6, V96ow6, Ca6ow6, Ja6ow6; +wire Qa6ow6, Xa6ow6, Eb6ow6, Lb6ow6, Sb6ow6, Zb6ow6, Gc6ow6, Nc6ow6, Uc6ow6, Bd6ow6; +wire Id6ow6, Pd6ow6, Wd6ow6, De6ow6, Ke6ow6, Re6ow6, Ye6ow6, Ff6ow6, Mf6ow6, Tf6ow6; +wire Ag6ow6, Hg6ow6, Og6ow6, Vg6ow6, Ch6ow6, Jh6ow6, Qh6ow6, Xh6ow6, Ei6ow6, Li6ow6; +wire Si6ow6, Zi6ow6, Gj6ow6, Nj6ow6, Uj6ow6, Bk6ow6, Ik6ow6, Pk6ow6, Wk6ow6, Dl6ow6; +wire Kl6ow6, Rl6ow6, Yl6ow6, Fm6ow6, Mm6ow6, Tm6ow6, An6ow6, Hn6ow6, On6ow6, Vn6ow6; +wire Co6ow6, Jo6ow6, Qo6ow6, Xo6ow6, Ep6ow6, Lp6ow6, Sp6ow6, Zp6ow6, Gq6ow6, Nq6ow6; +wire Uq6ow6, Br6ow6, Ir6ow6, Pr6ow6, Wr6ow6, Ds6ow6, Ks6ow6, Rs6ow6, Ys6ow6, Ft6ow6; +wire Mt6ow6, Tt6ow6, Au6ow6, Hu6ow6, Ou6ow6, Vu6ow6, Cv6ow6, Jv6ow6, Qv6ow6, Xv6ow6; +wire Ew6ow6, Lw6ow6, Sw6ow6, Zw6ow6, Gx6ow6, Nx6ow6, Ux6ow6, By6ow6, Iy6ow6, Py6ow6; +wire Wy6ow6, Dz6ow6, Kz6ow6, Rz6ow6, Yz6ow6, F07ow6, M07ow6, T07ow6, A17ow6, H17ow6; +wire O17ow6, V17ow6, C27ow6, J27ow6, Q27ow6, X27ow6, E37ow6, L37ow6, S37ow6, Z37ow6; +wire G47ow6, N47ow6, U47ow6, B57ow6, I57ow6, P57ow6, W57ow6, D67ow6, K67ow6, R67ow6; +wire Y67ow6, F77ow6, M77ow6, T77ow6, A87ow6, H87ow6, O87ow6, V87ow6, C97ow6, J97ow6; +wire Q97ow6, X97ow6, Ea7ow6, La7ow6, Sa7ow6, Za7ow6, Gb7ow6, Nb7ow6, Ub7ow6, Bc7ow6; +wire Ic7ow6, Pc7ow6, Wc7ow6, Dd7ow6, Kd7ow6, Rd7ow6, Yd7ow6, Fe7ow6, Me7ow6, Te7ow6; +wire Af7ow6, Hf7ow6, Of7ow6, Vf7ow6, Cg7ow6, Jg7ow6, Qg7ow6, Xg7ow6, Eh7ow6, Lh7ow6; +wire Sh7ow6, Zh7ow6, Gi7ow6, Ni7ow6, Ui7ow6, Bj7ow6, Ij7ow6, Pj7ow6, Wj7ow6, Dk7ow6; +wire Kk7ow6, Rk7ow6, Yk7ow6, Fl7ow6, Ml7ow6, Tl7ow6, Am7ow6, Hm7ow6, Om7ow6, Vm7ow6; +wire Cn7ow6, Jn7ow6, Qn7ow6, Xn7ow6, Eo7ow6, Lo7ow6, So7ow6, Zo7ow6, Gp7ow6, Np7ow6; +wire Up7ow6, Bq7ow6, Iq7ow6, Pq7ow6, Wq7ow6, Dr7ow6, Kr7ow6, Rr7ow6, Yr7ow6, Fs7ow6; +wire Ms7ow6, Ts7ow6, At7ow6, Ht7ow6, Ot7ow6, Vt7ow6, Cu7ow6, Ju7ow6, Qu7ow6, Xu7ow6; +wire Ev7ow6, Lv7ow6, Sv7ow6, Zv7ow6, Gw7ow6, Nw7ow6, Uw7ow6, Bx7ow6, Ix7ow6, Px7ow6; +wire Wx7ow6, Dy7ow6, Ky7ow6, Ry7ow6, Yy7ow6, Fz7ow6, Mz7ow6, Tz7ow6, A08ow6, H08ow6; +wire O08ow6, V08ow6, C18ow6, J18ow6, Q18ow6, X18ow6, E28ow6, L28ow6, S28ow6, Z28ow6; +wire G38ow6, N38ow6, U38ow6, B48ow6, I48ow6, P48ow6, W48ow6, D58ow6, K58ow6, R58ow6; +wire Y58ow6, F68ow6, M68ow6, T68ow6, A78ow6, H78ow6, O78ow6, V78ow6, C88ow6, J88ow6; +wire Q88ow6, X88ow6, E98ow6, L98ow6, S98ow6, Z98ow6, Ga8ow6, Na8ow6, Ua8ow6, Bb8ow6; +wire Ib8ow6, Pb8ow6, Wb8ow6, Dc8ow6, Kc8ow6, Rc8ow6, Yc8ow6, Fd8ow6, Md8ow6, Td8ow6; +wire Ae8ow6, He8ow6, Oe8ow6, Ve8ow6, Cf8ow6, Jf8ow6, Qf8ow6, Xf8ow6, Eg8ow6, Lg8ow6; +wire Sg8ow6, Zg8ow6, Gh8ow6, Nh8ow6, Uh8ow6, Bi8ow6, Ii8ow6, Pi8ow6, Wi8ow6, Dj8ow6; +wire Kj8ow6, Rj8ow6, Yj8ow6, Fk8ow6, Mk8ow6, Tk8ow6, Al8ow6, Hl8ow6, Ol8ow6, Vl8ow6; +wire Cm8ow6, Jm8ow6, Qm8ow6, Xm8ow6, En8ow6, Ln8ow6, Sn8ow6, Zn8ow6, Go8ow6, No8ow6; +wire Uo8ow6, Bp8ow6, Ip8ow6, Pp8ow6, Wp8ow6, Dq8ow6, Kq8ow6, Rq8ow6, Yq8ow6, Fr8ow6; +wire Mr8ow6, Tr8ow6, As8ow6, Hs8ow6, Os8ow6, Vs8ow6, Ct8ow6, Jt8ow6, Qt8ow6, Xt8ow6; +wire Eu8ow6, Lu8ow6, Su8ow6, Zu8ow6, Gv8ow6, Nv8ow6, Uv8ow6, Bw8ow6, Iw8ow6, Pw8ow6; +wire Ww8ow6, Dx8ow6, Kx8ow6, Rx8ow6, Yx8ow6, Fy8ow6, My8ow6, Ty8ow6, Az8ow6, Hz8ow6; +wire Oz8ow6, Vz8ow6, C09ow6, J09ow6, Q09ow6, X09ow6, E19ow6, L19ow6, S19ow6, Z19ow6; +wire G29ow6, N29ow6, U29ow6, B39ow6, I39ow6, P39ow6, W39ow6, D49ow6, K49ow6, R49ow6; +wire Y49ow6, F59ow6, M59ow6, T59ow6, A69ow6, H69ow6, O69ow6, V69ow6, C79ow6, J79ow6; +wire Q79ow6, X79ow6, E89ow6, L89ow6, S89ow6, Z89ow6, G99ow6, N99ow6, U99ow6, Ba9ow6; +wire Ia9ow6, Pa9ow6, Wa9ow6, Db9ow6, Kb9ow6, Rb9ow6, Yb9ow6, Fc9ow6, Mc9ow6, Tc9ow6; +wire Ad9ow6, Hd9ow6, Od9ow6, Vd9ow6, Ce9ow6, Je9ow6, Qe9ow6, Xe9ow6, Ef9ow6, Lf9ow6; +wire Sf9ow6, Zf9ow6, Gg9ow6, Ng9ow6, Ug9ow6, Bh9ow6, Ih9ow6, Ph9ow6, Wh9ow6, Di9ow6; +wire Ki9ow6, Ri9ow6, Yi9ow6, Fj9ow6, Mj9ow6, Tj9ow6, Ak9ow6, Hk9ow6, Ok9ow6, Vk9ow6; +wire Cl9ow6, Jl9ow6, Ql9ow6, Xl9ow6, Em9ow6, Lm9ow6, Sm9ow6, Zm9ow6, Gn9ow6, Nn9ow6; +wire Un9ow6, Bo9ow6, Io9ow6, Po9ow6, Wo9ow6, Dp9ow6, Kp9ow6, Rp9ow6, Yp9ow6, Fq9ow6; +wire Mq9ow6, Tq9ow6, Ar9ow6, Hr9ow6, Or9ow6, Vr9ow6, Cs9ow6, Js9ow6, Qs9ow6, Xs9ow6; +wire Et9ow6, Lt9ow6, St9ow6, Zt9ow6, Gu9ow6, Nu9ow6, Uu9ow6, Bv9ow6, Iv9ow6, Pv9ow6; +wire Wv9ow6, Dw9ow6, Kw9ow6, Rw9ow6, Yw9ow6, Fx9ow6, Mx9ow6, Tx9ow6, Ay9ow6, Hy9ow6; +wire Oy9ow6, Vy9ow6, Cz9ow6, Jz9ow6, Qz9ow6, Xz9ow6, E0aow6, L0aow6, S0aow6, Z0aow6; +wire G1aow6, N1aow6, U1aow6, B2aow6, I2aow6, P2aow6, W2aow6, D3aow6, K3aow6, R3aow6; +wire Y3aow6, F4aow6, M4aow6, T4aow6, A5aow6, H5aow6, O5aow6, V5aow6, C6aow6, J6aow6; +wire Q6aow6, X6aow6, E7aow6, L7aow6, S7aow6, Z7aow6, G8aow6, N8aow6, U8aow6, B9aow6; +wire I9aow6, P9aow6, W9aow6, Daaow6, Kaaow6, Raaow6, Yaaow6, Fbaow6, Mbaow6, Tbaow6; +wire Acaow6, Hcaow6, Ocaow6, Vcaow6, Cdaow6, Jdaow6, Qdaow6, Xdaow6, Eeaow6, Leaow6; +wire Seaow6, Zeaow6, Gfaow6, Nfaow6, Ufaow6, Bgaow6, Igaow6, Pgaow6, Wgaow6, Dhaow6; +wire Khaow6, Rhaow6, Yhaow6, Fiaow6, Miaow6, Tiaow6, Ajaow6, Hjaow6, Ojaow6, Vjaow6; +wire Ckaow6, Jkaow6, Qkaow6, Xkaow6, Elaow6, Llaow6, Slaow6, Zlaow6, Gmaow6, Nmaow6; +wire Umaow6, Bnaow6, Inaow6, Pnaow6, Wnaow6, Doaow6, Koaow6, Roaow6, Yoaow6, Fpaow6; +wire Mpaow6, Tpaow6, Aqaow6, Hqaow6, Oqaow6, Vqaow6, Craow6, Jraow6, Qraow6, Xraow6; +wire Esaow6, Lsaow6, Ssaow6, Zsaow6, Gtaow6, Ntaow6, Utaow6, Buaow6, Iuaow6, Puaow6; +wire Wuaow6, Dvaow6, Kvaow6, Rvaow6, Yvaow6, Fwaow6, Mwaow6, Twaow6, Axaow6, Hxaow6; +wire Oxaow6, Vxaow6, Cyaow6, Jyaow6, Qyaow6, Xyaow6, Ezaow6, Lzaow6, Szaow6, Zzaow6; +wire G0bow6, N0bow6, U0bow6, B1bow6, I1bow6, P1bow6, W1bow6, D2bow6, K2bow6, R2bow6; +wire Y2bow6, F3bow6, M3bow6, T3bow6, A4bow6, H4bow6, O4bow6, V4bow6, C5bow6, J5bow6; +wire Q5bow6, X5bow6, E6bow6, L6bow6, S6bow6, Z6bow6, G7bow6, N7bow6, U7bow6, B8bow6; +wire I8bow6, P8bow6, W8bow6, D9bow6, K9bow6, R9bow6, Y9bow6, Fabow6, Mabow6, Tabow6; +wire Abbow6, Hbbow6, Obbow6, Vbbow6, Ccbow6, Jcbow6, Qcbow6, Xcbow6, Edbow6, Ldbow6; +wire Sdbow6, Zdbow6, Gebow6, Nebow6, Uebow6, Bfbow6, Ifbow6, Pfbow6, Wfbow6, Dgbow6; +wire Kgbow6, Rgbow6, Ygbow6, Fhbow6, Mhbow6, Thbow6, Aibow6, Hibow6, Oibow6, Vibow6; +wire Cjbow6, Jjbow6, Qjbow6, Xjbow6, Ekbow6, Lkbow6, Skbow6, Zkbow6, Glbow6, Nlbow6; +wire Ulbow6, Bmbow6, Imbow6, Pmbow6, Wmbow6, Dnbow6, Knbow6, Rnbow6, Ynbow6, Fobow6; +wire Mobow6, Tobow6, Apbow6, Hpbow6, Opbow6, Vpbow6, Cqbow6, Jqbow6, Qqbow6, Xqbow6; +wire Erbow6, Lrbow6, Srbow6, Zrbow6, Gsbow6, Nsbow6, Usbow6, Btbow6, Itbow6, Ptbow6; +wire Wtbow6, Dubow6, Kubow6, Rubow6, Yubow6, Fvbow6, Mvbow6, Tvbow6, Awbow6, Hwbow6; +wire Owbow6, Vwbow6, Cxbow6, Jxbow6, Qxbow6, Xxbow6, Eybow6, Lybow6, Sybow6, Zybow6; +wire Gzbow6, Nzbow6, Uzbow6, B0cow6, I0cow6, P0cow6, W0cow6, D1cow6, K1cow6, R1cow6; +wire Y1cow6, F2cow6, M2cow6, T2cow6, A3cow6, H3cow6, O3cow6, V3cow6, C4cow6, J4cow6; +wire Q4cow6, X4cow6, E5cow6, L5cow6, S5cow6, Z5cow6, G6cow6, N6cow6, U6cow6, B7cow6; +wire I7cow6, P7cow6, W7cow6, D8cow6, K8cow6, R8cow6, Y8cow6, F9cow6, M9cow6, T9cow6; +wire Aacow6, Hacow6, Oacow6, Vacow6, Cbcow6, Jbcow6, Qbcow6, Xbcow6, Eccow6, Lccow6; +wire Sccow6, Zccow6, Gdcow6, Ndcow6, Udcow6, Becow6, Iecow6, Pecow6, Wecow6, Dfcow6; +wire Kfcow6, Rfcow6, Yfcow6, Fgcow6, Mgcow6, Tgcow6, Ahcow6, Hhcow6, Ohcow6, Vhcow6; +wire Cicow6, Jicow6, Qicow6, Xicow6, Ejcow6, Ljcow6, Sjcow6, Zjcow6, Gkcow6, Nkcow6; +wire Ukcow6, Blcow6, Ilcow6, Plcow6, Wlcow6, Dmcow6, Kmcow6, Rmcow6, Ymcow6, Fncow6; +wire Mncow6, Tncow6, Aocow6, Hocow6, Oocow6, Vocow6, Cpcow6, Jpcow6, Qpcow6, Xpcow6; +wire Eqcow6, Lqcow6, Sqcow6, Zqcow6, Grcow6, Nrcow6, Urcow6, Bscow6, Iscow6, Pscow6; +wire Wscow6, Dtcow6, Ktcow6, Rtcow6, Ytcow6, Fucow6, Mucow6, Tucow6, Avcow6, Hvcow6; +wire Ovcow6, Vvcow6, Cwcow6, Jwcow6, Qwcow6, Xwcow6, Excow6, Lxcow6, Sxcow6, Zxcow6; +wire Gycow6, Nycow6, Uycow6, Bzcow6, Izcow6, Pzcow6, Wzcow6, D0dow6, K0dow6, R0dow6; +wire Y0dow6, F1dow6, M1dow6, T1dow6, A2dow6, H2dow6, O2dow6, V2dow6, C3dow6, J3dow6; +wire Q3dow6, X3dow6, E4dow6, L4dow6, S4dow6, Z4dow6, G5dow6, N5dow6, U5dow6, B6dow6; +wire I6dow6, P6dow6, W6dow6, D7dow6, K7dow6, R7dow6, Y7dow6, F8dow6, M8dow6, T8dow6; +wire A9dow6, H9dow6, O9dow6, V9dow6, Cadow6, Jadow6, Qadow6, Xadow6, Ebdow6, Lbdow6; +wire Sbdow6, Zbdow6, Gcdow6, Ncdow6, Ucdow6, Bddow6, Iddow6, Pddow6, Wddow6, Dedow6; +wire Kedow6, Redow6, Yedow6, Ffdow6, Mfdow6, Tfdow6, Agdow6, Hgdow6, Ogdow6, Vgdow6; +wire Chdow6, Jhdow6, Qhdow6, Xhdow6, Eidow6, Lidow6, Sidow6, Zidow6, Gjdow6, Njdow6; +wire Ujdow6, Bkdow6, Ikdow6, Pkdow6, Wkdow6, Dldow6, Kldow6, Rldow6, Yldow6, Fmdow6; +wire Mmdow6, Tmdow6, Andow6, Hndow6, Ondow6, Vndow6, Codow6, Jodow6, Qodow6, Xodow6; +wire Epdow6, Lpdow6, Spdow6, Zpdow6, Gqdow6, Nqdow6, Uqdow6, Brdow6, Irdow6, Prdow6; +wire Wrdow6, Dsdow6, Ksdow6, Rsdow6, Ysdow6, Ftdow6, Mtdow6, Ttdow6, Audow6, Hudow6; +wire Oudow6, Vudow6, Cvdow6, Jvdow6, Qvdow6, Xvdow6, Ewdow6, Lwdow6, Swdow6, Zwdow6; +wire Gxdow6, Nxdow6, Uxdow6, Bydow6, Iydow6, Pydow6, Wydow6, Dzdow6, Kzdow6, Rzdow6; +wire Yzdow6, F0eow6, M0eow6, T0eow6, A1eow6, H1eow6, O1eow6, V1eow6, C2eow6, J2eow6; +wire Q2eow6, X2eow6, E3eow6, L3eow6, S3eow6, Z3eow6, G4eow6, N4eow6, U4eow6, B5eow6; +wire I5eow6, P5eow6, W5eow6, D6eow6, K6eow6, R6eow6, Y6eow6, F7eow6, M7eow6, T7eow6; +wire A8eow6, H8eow6, O8eow6, V8eow6, C9eow6, J9eow6, Q9eow6, X9eow6, Eaeow6, Laeow6; +wire Saeow6, Zaeow6, Gbeow6, Nbeow6, Ubeow6, Bceow6, Iceow6, Pceow6, Wceow6, Ddeow6; +wire Kdeow6, Rdeow6, Ydeow6, Feeow6, Meeow6, Teeow6, Afeow6, Hfeow6, Ofeow6, Vfeow6; +wire Cgeow6, Jgeow6, Qgeow6, Xgeow6, Eheow6, Lheow6, Sheow6, Zheow6, Gieow6, Nieow6; +wire Uieow6, Bjeow6, Ijeow6, Pjeow6, Wjeow6, Dkeow6, Kkeow6, Rkeow6, Ykeow6, Fleow6; +wire Mleow6, Tleow6, Ameow6, Hmeow6, Omeow6, Vmeow6, Cneow6, Jneow6, Qneow6, Xneow6; +wire Eoeow6, Loeow6, Soeow6, Zoeow6, Gpeow6, Npeow6, Upeow6, Bqeow6, Iqeow6, Pqeow6; +wire Wqeow6, Dreow6, Kreow6, Rreow6, Yreow6, Fseow6, Mseow6, Tseow6, Ateow6, Hteow6; +wire Oteow6, Vteow6, Cueow6, Jueow6, Queow6, Xueow6, Eveow6, Lveow6, Sveow6, Zveow6; +wire Gweow6, Nweow6, Uweow6, Bxeow6, Ixeow6, Pxeow6, Wxeow6, Dyeow6, Kyeow6, Ryeow6; +wire Yyeow6, Fzeow6, Mzeow6, Tzeow6, A0fow6, H0fow6, O0fow6, V0fow6, C1fow6, J1fow6; +wire Q1fow6, X1fow6, E2fow6, L2fow6, S2fow6, Z2fow6, G3fow6, N3fow6, U3fow6, B4fow6; +wire I4fow6, P4fow6, W4fow6, D5fow6, K5fow6, R5fow6, Y5fow6, F6fow6, M6fow6, T6fow6; +wire A7fow6, H7fow6, O7fow6, V7fow6, C8fow6, J8fow6, Q8fow6, X8fow6, E9fow6, L9fow6; +wire S9fow6, Z9fow6, Gafow6, Nafow6, Uafow6, Bbfow6, Ibfow6, Pbfow6, Wbfow6, Dcfow6; +wire Kcfow6, Rcfow6, Ycfow6, Fdfow6, Mdfow6, Tdfow6, Aefow6, Hefow6, Oefow6, Vefow6; +wire Cffow6, Jffow6, Qffow6, Xffow6, Egfow6, Lgfow6, Sgfow6, Zgfow6, Ghfow6, Nhfow6; +wire Uhfow6, Bifow6, Iifow6, Pifow6, Wifow6, Djfow6, Kjfow6, Rjfow6, Yjfow6, Fkfow6; +wire Mkfow6, Tkfow6, Alfow6, Hlfow6, Olfow6, Vlfow6, Cmfow6, Jmfow6, Qmfow6, Xmfow6; +wire Enfow6, Lnfow6, Snfow6, Znfow6, Gofow6, Nofow6, Uofow6, Bpfow6, Ipfow6, Ppfow6; +wire Wpfow6, Dqfow6, Kqfow6, Rqfow6, Yqfow6, Frfow6, Mrfow6, Trfow6, Asfow6, Hsfow6; +wire Osfow6, Vsfow6, Ctfow6, Jtfow6, Qtfow6, Xtfow6, Eufow6, Lufow6, Sufow6, Zufow6; +wire Gvfow6, Nvfow6, Uvfow6, Bwfow6, Iwfow6, Pwfow6, Wwfow6, Dxfow6, Kxfow6, Rxfow6; +wire Yxfow6, Fyfow6, Myfow6, Tyfow6, Azfow6, Hzfow6, Ozfow6, Vzfow6, C0gow6, J0gow6; +wire Q0gow6, X0gow6, E1gow6, L1gow6, S1gow6, Z1gow6, G2gow6, N2gow6, U2gow6, B3gow6; +wire I3gow6, P3gow6, W3gow6, D4gow6, K4gow6, R4gow6, Y4gow6, F5gow6, M5gow6, T5gow6; +wire A6gow6, H6gow6, O6gow6, V6gow6, C7gow6, J7gow6, Q7gow6, X7gow6, E8gow6, L8gow6; +wire S8gow6, Z8gow6, G9gow6, N9gow6, U9gow6, Bagow6, Iagow6, Pagow6, Wagow6, Dbgow6; +wire Kbgow6, Rbgow6, Ybgow6, Fcgow6, Mcgow6, Tcgow6, Adgow6, Hdgow6, Odgow6, Vdgow6; +wire Cegow6, Jegow6, Qegow6, Xegow6, Efgow6, Lfgow6, Sfgow6, Zfgow6, Gggow6, Nggow6; +wire Uggow6, Bhgow6, Ihgow6, Phgow6, Whgow6, Digow6, Kigow6, Rigow6, Yigow6, Fjgow6; +wire Mjgow6, Tjgow6, Akgow6, Hkgow6, Okgow6, Vkgow6, Clgow6, Jlgow6, Qlgow6, Xlgow6; +wire Emgow6, Lmgow6, Smgow6, Zmgow6, Gngow6, Nngow6, Ungow6, Bogow6, Iogow6, Pogow6; +wire Wogow6, Dpgow6, Kpgow6, Rpgow6, Ypgow6, Fqgow6, Mqgow6, Tqgow6, Argow6, Hrgow6; +wire Orgow6, Vrgow6, Csgow6, Jsgow6, Qsgow6, Xsgow6, Etgow6, Ltgow6, Stgow6, Ztgow6; +wire Gugow6, Nugow6, Uugow6, Bvgow6, Ivgow6, Pvgow6, Wvgow6, Dwgow6, Kwgow6, Rwgow6; +wire Ywgow6, Fxgow6, Mxgow6, Txgow6, Aygow6, Hygow6, Oygow6, Vygow6, Czgow6, Jzgow6; +wire Qzgow6, Xzgow6, E0how6, L0how6, S0how6, Z0how6, G1how6, N1how6, U1how6, B2how6; +wire I2how6, P2how6, W2how6, D3how6, K3how6, R3how6, Y3how6, F4how6, M4how6, T4how6; +wire A5how6, H5how6, O5how6, V5how6, C6how6, J6how6, Q6how6, X6how6, E7how6, L7how6; +wire S7how6, Z7how6, G8how6, N8how6, U8how6, B9how6, I9how6, P9how6, W9how6, Dahow6; +wire Kahow6, Rahow6, Yahow6, Fbhow6, Mbhow6, Tbhow6, Achow6, Hchow6, Ochow6, Vchow6; +wire Cdhow6, Jdhow6, Qdhow6, Xdhow6, Eehow6, Lehow6, Sehow6, Zehow6, Gfhow6, Nfhow6; +wire Ufhow6, Bghow6, Ighow6, Pghow6, Wghow6, Dhhow6, Khhow6, Rhhow6, Yhhow6, Fihow6; +wire Mihow6, Tihow6, Ajhow6, Hjhow6, Ojhow6, Vjhow6, Ckhow6, Jkhow6, Qkhow6, Xkhow6; +wire Elhow6, Llhow6, Slhow6, Zlhow6, Gmhow6, Nmhow6, Umhow6, Bnhow6, Inhow6, Pnhow6; +wire Wnhow6, Dohow6, Kohow6, Rohow6, Yohow6, Fphow6, Mphow6, Tphow6, Aqhow6, Hqhow6; +wire Oqhow6, Vqhow6, Crhow6, Jrhow6, Qrhow6, Xrhow6, Eshow6, Lshow6, Sshow6, Zshow6; +wire Gthow6, Nthow6, Uthow6, Buhow6, Iuhow6, Puhow6, Wuhow6, Dvhow6, Kvhow6, Rvhow6; +wire Yvhow6, Fwhow6, Mwhow6, Twhow6, Axhow6, Hxhow6, Oxhow6, Vxhow6, Cyhow6, Jyhow6; +wire Qyhow6, Xyhow6, Ezhow6, Lzhow6, Szhow6, Zzhow6, G0iow6, N0iow6, U0iow6, B1iow6; +wire I1iow6, P1iow6, W1iow6, D2iow6, K2iow6, R2iow6, Y2iow6, F3iow6, M3iow6, T3iow6; +wire A4iow6, H4iow6, O4iow6, V4iow6, C5iow6, J5iow6, Q5iow6, X5iow6, E6iow6, L6iow6; +wire S6iow6, Z6iow6, G7iow6, N7iow6, U7iow6, B8iow6, I8iow6, P8iow6, W8iow6, D9iow6; +wire K9iow6, R9iow6, Y9iow6, Faiow6, Maiow6, Taiow6, Abiow6, Hbiow6, Obiow6, Vbiow6; +wire Cciow6, Jciow6, Qciow6, Xciow6, Ediow6, Ldiow6, Sdiow6, Zdiow6, Geiow6, Neiow6; +wire Ueiow6, Bfiow6, Ifiow6, Pfiow6, Wfiow6, Dgiow6, Kgiow6, Rgiow6, Ygiow6, Fhiow6; +wire Mhiow6, Thiow6, Aiiow6, Hiiow6, Oiiow6, Viiow6, Cjiow6, Jjiow6, Qjiow6, Xjiow6; +wire Ekiow6, Lkiow6, Skiow6, Zkiow6, Gliow6, Nliow6, Uliow6, Bmiow6, Imiow6, Pmiow6; +wire Wmiow6, Dniow6, Kniow6, Rniow6, Yniow6, Foiow6, Moiow6, Toiow6, Apiow6, Hpiow6; +wire Opiow6, Vpiow6, Cqiow6, Jqiow6, Qqiow6, Xqiow6, Eriow6, Lriow6, Sriow6, Zriow6; +wire Gsiow6, Nsiow6, Usiow6, Btiow6, Itiow6, Ptiow6, Wtiow6, Duiow6, Kuiow6, Ruiow6; +wire Yuiow6, Fviow6, Mviow6, Tviow6, Awiow6, Hwiow6, Owiow6, Vwiow6, Cxiow6, Jxiow6; +wire Qxiow6, Xxiow6, Eyiow6, Lyiow6, Syiow6, Zyiow6, Gziow6, Nziow6, Uziow6, B0jow6; +wire I0jow6, P0jow6, W0jow6, D1jow6, K1jow6, R1jow6, Y1jow6, F2jow6, M2jow6, T2jow6; +wire A3jow6, H3jow6, O3jow6, V3jow6, C4jow6, J4jow6, Q4jow6, X4jow6, E5jow6, L5jow6; +wire S5jow6, Z5jow6, G6jow6, N6jow6, U6jow6, B7jow6, I7jow6, P7jow6, W7jow6, D8jow6; +wire K8jow6, R8jow6, Y8jow6, F9jow6, M9jow6, T9jow6, Aajow6, Hajow6, Oajow6, Vajow6; +wire Cbjow6, Jbjow6, Qbjow6, Xbjow6, Ecjow6, Lcjow6, Scjow6, Zcjow6, Gdjow6, Ndjow6; +wire Udjow6, Bejow6, Iejow6, Pejow6, Wejow6, Dfjow6, Kfjow6, Rfjow6, Yfjow6, Fgjow6; +wire Mgjow6, Tgjow6, Ahjow6, Hhjow6, Ohjow6, Vhjow6, Cijow6, Jijow6, Qijow6, Xijow6; +wire Ejjow6, Ljjow6, Sjjow6, Zjjow6, Gkjow6, Nkjow6, Ukjow6, Bljow6, Iljow6, Pljow6; +wire Wljow6, Dmjow6, Kmjow6, Rmjow6, Ymjow6, Fnjow6, Mnjow6, Tnjow6, Aojow6, Hojow6; +wire Oojow6, Vojow6, Cpjow6, Jpjow6, Qpjow6, Xpjow6, Eqjow6, Lqjow6, Sqjow6, Zqjow6; +wire Grjow6, Nrjow6, Urjow6, Bsjow6, Isjow6, Psjow6, Wsjow6, Dtjow6, Ktjow6, Rtjow6; +wire Ytjow6, Fujow6, Mujow6, Tujow6, Avjow6, Hvjow6, Ovjow6, Vvjow6, Cwjow6, Jwjow6; +wire Qwjow6, Xwjow6, Exjow6, Lxjow6, Sxjow6, Zxjow6, Gyjow6, Nyjow6, Uyjow6, Bzjow6; +wire Izjow6, Pzjow6, Wzjow6, D0kow6, K0kow6, R0kow6, Y0kow6, F1kow6, M1kow6, T1kow6; +wire A2kow6, H2kow6, O2kow6, V2kow6, C3kow6, J3kow6, Q3kow6, X3kow6, E4kow6, L4kow6; +wire S4kow6, Z4kow6, G5kow6, N5kow6, U5kow6, B6kow6, I6kow6, P6kow6, W6kow6, D7kow6; +wire K7kow6, R7kow6, Y7kow6, F8kow6, M8kow6, T8kow6, A9kow6, H9kow6, O9kow6, V9kow6; +wire Cakow6, Jakow6, Qakow6, Xakow6, Ebkow6, Lbkow6, Sbkow6, Zbkow6, Gckow6, Nckow6; +wire Uckow6, Bdkow6, Idkow6, Pdkow6, Wdkow6, Dekow6, Kekow6, Rekow6, Yekow6, Ffkow6; +wire Mfkow6, Tfkow6, Agkow6, Hgkow6, Ogkow6, Vgkow6, Chkow6, Jhkow6, Qhkow6, Xhkow6; +wire Eikow6, Likow6, Sikow6, Zikow6, Gjkow6, Njkow6, Ujkow6, Bkkow6, Ikkow6, Pkkow6; +wire Wkkow6, Dlkow6, Klkow6, Rlkow6, Ylkow6, Fmkow6, Mmkow6, Tmkow6, Ankow6, Hnkow6; +wire Onkow6, Vnkow6, Cokow6, Jokow6, Qokow6, Xokow6, Epkow6, Lpkow6, Spkow6, Zpkow6; +wire Gqkow6, Nqkow6, Uqkow6, Brkow6, Irkow6, Prkow6, Wrkow6, Dskow6, Kskow6, Rskow6; +wire Yskow6, Ftkow6, Mtkow6, Ttkow6, Aukow6, Hukow6, Oukow6, Vukow6, Cvkow6, Jvkow6; +wire Qvkow6, Xvkow6, Ewkow6, Lwkow6, Swkow6, Zwkow6, Gxkow6, Nxkow6, Uxkow6, Bykow6; +wire Iykow6, Pykow6, Wykow6, Dzkow6, Kzkow6, Rzkow6, Yzkow6, F0low6, M0low6, T0low6; +wire A1low6, H1low6, O1low6, V1low6, C2low6, J2low6, Q2low6, X2low6, E3low6, L3low6; +wire S3low6, Z3low6, G4low6, N4low6, U4low6, B5low6, I5low6, P5low6, W5low6, D6low6; +wire K6low6, R6low6, Y6low6, F7low6, M7low6, T7low6, A8low6, H8low6, O8low6, V8low6; +wire C9low6, J9low6, Q9low6, X9low6, Ealow6, Lalow6, Salow6, Zalow6, Gblow6, Nblow6; +wire Ublow6, Bclow6, Iclow6, Pclow6, Wclow6, Ddlow6, Kdlow6, Rdlow6, Ydlow6, Felow6; +wire Melow6, Telow6, Aflow6, Hflow6, Oflow6, Vflow6, Cglow6, Jglow6, Qglow6, Xglow6; +wire Ehlow6, Lhlow6, Shlow6, Zhlow6, Gilow6, Nilow6, Uilow6, Bjlow6, Ijlow6, Pjlow6; +wire Wjlow6, Dklow6, Kklow6, Rklow6, Yklow6, Fllow6, Mllow6, Tllow6, Amlow6, Hmlow6; +wire Omlow6, Vmlow6, Cnlow6, Jnlow6, Qnlow6, Xnlow6, Eolow6, Lolow6, Solow6, Zolow6; +wire Gplow6, Nplow6, Uplow6, Bqlow6, Iqlow6, Pqlow6, Wqlow6, Drlow6, Krlow6, Rrlow6; +wire Yrlow6, Fslow6, Mslow6, Tslow6, Atlow6, Htlow6, Otlow6, Vtlow6, Culow6, Julow6; +wire Qulow6, Xulow6, Evlow6, Lvlow6, Svlow6, Zvlow6, Gwlow6, Nwlow6, Uwlow6, Bxlow6; +wire Ixlow6, Pxlow6, Wxlow6, Dylow6, Kylow6, Rylow6, Yylow6, Fzlow6, Mzlow6, Tzlow6; +wire A0mow6, H0mow6, O0mow6, V0mow6, C1mow6, J1mow6, Q1mow6, X1mow6, E2mow6, L2mow6; +wire S2mow6, Z2mow6, G3mow6, N3mow6, U3mow6, B4mow6, I4mow6, P4mow6, W4mow6, D5mow6; +wire K5mow6, R5mow6, Y5mow6, F6mow6, M6mow6, T6mow6, A7mow6, H7mow6, O7mow6, V7mow6; +wire C8mow6, J8mow6, Q8mow6, X8mow6, E9mow6, L9mow6, S9mow6, Z9mow6, Gamow6, Namow6; +wire Uamow6, Bbmow6, Ibmow6, Pbmow6, Wbmow6, Dcmow6, Kcmow6, Rcmow6, Ycmow6, Fdmow6; +wire Mdmow6, Tdmow6, Aemow6, Hemow6, Oemow6, Vemow6, Cfmow6, Jfmow6, Qfmow6, Xfmow6; +wire Egmow6, Lgmow6, Sgmow6, Zgmow6, Ghmow6, Nhmow6, Uhmow6, Bimow6, Iimow6, Pimow6; +wire Wimow6, Djmow6, Kjmow6, Rjmow6, Yjmow6, Fkmow6, Mkmow6, Tkmow6, Almow6, Hlmow6; +wire Olmow6, Vlmow6, Cmmow6, Jmmow6, Qmmow6, Xmmow6, Enmow6, Lnmow6, Snmow6, Znmow6; +wire Gomow6, Nomow6, Uomow6, Bpmow6, Ipmow6, Ppmow6, Wpmow6, Dqmow6, Kqmow6, Rqmow6; +wire Yqmow6, Frmow6, Mrmow6, Trmow6, Asmow6, Hsmow6, Osmow6, Vsmow6, Ctmow6, Jtmow6; +wire Qtmow6, Xtmow6, Eumow6, Lumow6, Sumow6, Zumow6, Gvmow6, Nvmow6, Uvmow6, Bwmow6; +wire Iwmow6, Pwmow6, Wwmow6, Dxmow6, Kxmow6, Rxmow6, Yxmow6, Fymow6, Mymow6, Tymow6; +wire Azmow6, Hzmow6, Ozmow6, Vzmow6, C0now6, J0now6, Q0now6, X0now6, E1now6, L1now6; +wire S1now6, Z1now6, G2now6, N2now6, U2now6, B3now6, I3now6, P3now6, W3now6, D4now6; +wire K4now6, R4now6, Y4now6, F5now6, M5now6, T5now6, A6now6, H6now6, O6now6, V6now6; +wire C7now6, J7now6, Q7now6, X7now6, E8now6, L8now6, S8now6, Z8now6, G9now6, N9now6; +wire U9now6, Banow6, Ianow6, Panow6, Wanow6, Dbnow6, Kbnow6, Rbnow6, Ybnow6, Fcnow6; +wire Mcnow6, Tcnow6, Adnow6, Hdnow6, Odnow6, Vdnow6, Cenow6, Jenow6, Qenow6, Xenow6; +wire Efnow6, Lfnow6, Sfnow6, Zfnow6, Ggnow6, Ngnow6, Ugnow6, Bhnow6, Ihnow6, Phnow6; +wire Whnow6, Dinow6, Kinow6, Rinow6, Yinow6, Fjnow6, Mjnow6, Tjnow6, Aknow6, Hknow6; +wire Oknow6, Vknow6, Clnow6, Jlnow6, Qlnow6, Xlnow6, Emnow6, Lmnow6, Smnow6, Zmnow6; +wire Gnnow6, Nnnow6, Unnow6, Bonow6, Ionow6, Ponow6, Wonow6, Dpnow6, Kpnow6, Rpnow6; +wire Ypnow6, Fqnow6, Mqnow6, Tqnow6, Arnow6, Hrnow6, Ornow6, Vrnow6, Csnow6, Jsnow6; +wire Qsnow6, Xsnow6, Etnow6, Ltnow6, Stnow6, Ztnow6, Gunow6, Nunow6, Uunow6, Bvnow6; +wire Ivnow6, Pvnow6, Wvnow6, Dwnow6, Kwnow6, Rwnow6, Ywnow6, Fxnow6, Mxnow6, Txnow6; +wire Aynow6, Hynow6, Oynow6, Vynow6, Cznow6, Jznow6, Qznow6, Xznow6, E0oow6, L0oow6; +wire S0oow6, Z0oow6, G1oow6, N1oow6, U1oow6, B2oow6, I2oow6, P2oow6, W2oow6, D3oow6; +wire K3oow6, R3oow6, Y3oow6, F4oow6, M4oow6, T4oow6, A5oow6, H5oow6, O5oow6, V5oow6; +wire C6oow6, J6oow6, Q6oow6, X6oow6, E7oow6, L7oow6, S7oow6, Z7oow6, G8oow6, N8oow6; +wire U8oow6, B9oow6, I9oow6, P9oow6, W9oow6, Daoow6, Kaoow6, Raoow6, Yaoow6, Fboow6; +wire Mboow6, Tboow6, Acoow6, Hcoow6, Ocoow6, Vcoow6, Cdoow6, Jdoow6, Qdoow6, Xdoow6; +wire Eeoow6, Leoow6, Seoow6, Zeoow6, Gfoow6, Nfoow6, Ufoow6, Bgoow6, Igoow6, Pgoow6; +wire Wgoow6, Dhoow6, Khoow6, Rhoow6, Yhoow6, Fioow6, Mioow6, Tioow6, Ajoow6, Hjoow6; +wire Ojoow6, Vjoow6, Ckoow6, Jkoow6, Qkoow6, Xkoow6, Eloow6, Lloow6, Sloow6, Zloow6; +wire Gmoow6, Nmoow6, Umoow6, Bnoow6, Inoow6, Pnoow6, Wnoow6, Dooow6, Kooow6, Rooow6; +wire Yooow6, Fpoow6, Mpoow6, Tpoow6, Aqoow6, Hqoow6, Oqoow6, Vqoow6, Croow6, Jroow6; +wire Qroow6, Xroow6, Esoow6, Lsoow6, Ssoow6, Zsoow6, Gtoow6, Ntoow6, Utoow6, Buoow6; +wire Iuoow6, Puoow6, Wuoow6, Dvoow6, Kvoow6, Rvoow6, Yvoow6, Fwoow6, Mwoow6, Twoow6; +wire Axoow6, Hxoow6, Oxoow6, Vxoow6, Cyoow6, Jyoow6, Qyoow6, Xyoow6, Ezoow6, Lzoow6; +wire Szoow6, Zzoow6, G0pow6, N0pow6, U0pow6, B1pow6, I1pow6, P1pow6, W1pow6, D2pow6; +wire K2pow6, R2pow6, Y2pow6, F3pow6, M3pow6, T3pow6, A4pow6, H4pow6, O4pow6, V4pow6; +wire C5pow6, J5pow6, Q5pow6, X5pow6, E6pow6, L6pow6, S6pow6, Z6pow6, G7pow6, N7pow6; +wire U7pow6, B8pow6, I8pow6, P8pow6, W8pow6, D9pow6, K9pow6, R9pow6, Y9pow6, Fapow6; +wire Mapow6, Tapow6, Abpow6, Hbpow6, Obpow6, Vbpow6, Ccpow6, Jcpow6, Qcpow6, Xcpow6; +wire Edpow6, Ldpow6, Sdpow6, Zdpow6, Gepow6, Nepow6, Uepow6, Bfpow6, Ifpow6, Pfpow6; +wire Wfpow6, Dgpow6, Kgpow6, Rgpow6, Ygpow6, Fhpow6, Mhpow6, Thpow6, Aipow6, Hipow6; +wire Oipow6, Vipow6, Cjpow6, Jjpow6, Qjpow6, Xjpow6, Ekpow6, Lkpow6, Skpow6, Zkpow6; +wire Glpow6, Nlpow6, Ulpow6, Bmpow6, Impow6, Pmpow6, Wmpow6, Dnpow6, Knpow6, Rnpow6; +wire Ynpow6, Fopow6, Mopow6, Topow6, Appow6, Hppow6, Oppow6, Vppow6, Cqpow6, Jqpow6; +wire Qqpow6, Xqpow6, Erpow6, Lrpow6, Srpow6, Zrpow6, Gspow6, Nspow6, Uspow6, Btpow6; +wire Itpow6, Ptpow6, Wtpow6, Dupow6, Kupow6, Rupow6, Yupow6, Fvpow6, Mvpow6, Tvpow6; +wire Awpow6, Hwpow6, Owpow6, Vwpow6, Cxpow6, Jxpow6, Qxpow6, Xxpow6, Eypow6, Lypow6; +wire Sypow6, Zypow6, Gzpow6, Nzpow6, Uzpow6, B0qow6, I0qow6, P0qow6, W0qow6, D1qow6; +wire K1qow6, R1qow6, Y1qow6, F2qow6, M2qow6, T2qow6, A3qow6, H3qow6, O3qow6, V3qow6; +wire C4qow6, J4qow6, Q4qow6, X4qow6, E5qow6, L5qow6, S5qow6, Z5qow6, G6qow6, N6qow6; +wire U6qow6, B7qow6, I7qow6, P7qow6, W7qow6, D8qow6, K8qow6, R8qow6, Y8qow6, F9qow6; +wire M9qow6, T9qow6, Aaqow6, Haqow6, Oaqow6, Vaqow6, Cbqow6, Jbqow6, Qbqow6, Xbqow6; +wire Ecqow6, Lcqow6, Scqow6, Zcqow6, Gdqow6, Ndqow6, Udqow6, Beqow6, Ieqow6, Peqow6; +wire Weqow6, Dfqow6, Kfqow6, Rfqow6, Yfqow6, Fgqow6, Mgqow6, Tgqow6, Ahqow6, Hhqow6; +wire Ohqow6, Vhqow6, Ciqow6, Jiqow6, Qiqow6, Xiqow6, Ejqow6, Ljqow6, Sjqow6, Zjqow6; +wire Gkqow6, Nkqow6, Ukqow6, Blqow6, Ilqow6, Plqow6, Wlqow6, Dmqow6, Kmqow6, Rmqow6; +wire Ymqow6, Fnqow6, Mnqow6, Tnqow6, Aoqow6, Hoqow6, Ooqow6, Voqow6, Cpqow6, Jpqow6; +wire Qpqow6, Xpqow6, Eqqow6, Lqqow6, Sqqow6, Zqqow6, Grqow6, Nrqow6, Urqow6, Bsqow6; +wire Isqow6, Psqow6, Wsqow6, Dtqow6, Ktqow6, Rtqow6, Ytqow6, Fuqow6, Muqow6, Tuqow6; +wire Avqow6, Hvqow6, Ovqow6, Vvqow6, Cwqow6, Jwqow6, Qwqow6, Xwqow6, Exqow6, Lxqow6; +wire Sxqow6, Zxqow6, Gyqow6, Nyqow6, Uyqow6, Bzqow6, Izqow6, Pzqow6, Wzqow6, D0row6; +wire K0row6, R0row6, Y0row6, F1row6, M1row6, T1row6, A2row6, H2row6, O2row6, V2row6; +wire C3row6, J3row6, Q3row6, X3row6, E4row6, L4row6, S4row6, Z4row6, G5row6, N5row6; +wire U5row6, B6row6, I6row6, P6row6, W6row6, D7row6, K7row6, R7row6, Y7row6, F8row6; +wire M8row6, T8row6, A9row6, H9row6, O9row6, V9row6, Carow6, Jarow6, Qarow6, Xarow6; +wire Ebrow6, Lbrow6, Sbrow6, Zbrow6, Gcrow6, Ncrow6, Ucrow6, Bdrow6, Idrow6, Pdrow6; +wire Wdrow6, Derow6, Kerow6, Rerow6, Yerow6, Ffrow6, Mfrow6, Tfrow6, Agrow6, Hgrow6; +wire Ogrow6, Vgrow6, Chrow6, Jhrow6, Qhrow6, Xhrow6, Eirow6, Lirow6, Sirow6, Zirow6; +wire Gjrow6, Njrow6, Ujrow6, Bkrow6, Ikrow6, Pkrow6, Wkrow6, Dlrow6, Klrow6, Rlrow6; +wire Ylrow6, Fmrow6, Mmrow6, Tmrow6, Anrow6, Hnrow6, Onrow6, Vnrow6, Corow6, Jorow6; +wire Qorow6, Xorow6, Eprow6, Lprow6, Sprow6, Zprow6, Gqrow6, Nqrow6, Uqrow6, Brrow6; +wire Irrow6, Prrow6, Wrrow6, Dsrow6, Ksrow6, Rsrow6, Ysrow6, Ftrow6, Mtrow6, Ttrow6; +wire Aurow6, Hurow6, Ourow6, Vurow6, Cvrow6, Jvrow6, Qvrow6, Xvrow6, Ewrow6, Lwrow6; +wire Swrow6, Zwrow6, Gxrow6, Nxrow6, Uxrow6, Byrow6, Iyrow6, Pyrow6, Wyrow6, Dzrow6; +wire Kzrow6, Rzrow6, Yzrow6, F0sow6, M0sow6, T0sow6, A1sow6, H1sow6, O1sow6, V1sow6; +wire C2sow6, J2sow6, Q2sow6, X2sow6, E3sow6, L3sow6, S3sow6, Z3sow6, G4sow6, N4sow6; +wire U4sow6, B5sow6, I5sow6, P5sow6, W5sow6, D6sow6, K6sow6, R6sow6, Y6sow6, F7sow6; +wire M7sow6, T7sow6, A8sow6, H8sow6, O8sow6, V8sow6, C9sow6, J9sow6, Q9sow6, X9sow6; +wire Easow6, Lasow6, Sasow6, Zasow6, Gbsow6, Nbsow6, Ubsow6, Bcsow6, Icsow6, Pcsow6; +wire Wcsow6, Ddsow6, Kdsow6, Rdsow6, Ydsow6, Fesow6, Mesow6, Tesow6, Afsow6, Hfsow6; +wire Ofsow6, Vfsow6, Cgsow6, Jgsow6, Qgsow6, Xgsow6, Ehsow6, Lhsow6, Shsow6, Zhsow6; +wire Gisow6, Nisow6, Uisow6, Bjsow6, Ijsow6, Pjsow6, Wjsow6, Dksow6, Kksow6, Rksow6; +wire Yksow6, Flsow6, Mlsow6, Tlsow6, Amsow6, Hmsow6, Omsow6, Vmsow6, Cnsow6, Jnsow6; +wire Qnsow6, Xnsow6, Eosow6, Losow6, Sosow6, Zosow6, Gpsow6, Npsow6, Upsow6, Bqsow6; +wire Iqsow6, Pqsow6, Wqsow6, Drsow6, Krsow6, Rrsow6, Yrsow6, Fssow6, Mssow6, Tssow6; +wire Atsow6, Htsow6, Otsow6, Vtsow6, Cusow6, Jusow6, Qusow6, Xusow6, Evsow6, Lvsow6; +wire Svsow6, Zvsow6, Gwsow6, Nwsow6, Uwsow6, Bxsow6, Ixsow6, Pxsow6, Wxsow6, Dysow6; +wire Kysow6, Rysow6, Yysow6, Fzsow6, Mzsow6, Tzsow6, A0tow6, H0tow6, O0tow6, V0tow6; +wire C1tow6, J1tow6, Q1tow6, X1tow6, E2tow6, L2tow6, S2tow6, Z2tow6, G3tow6, N3tow6; +wire U3tow6, B4tow6, I4tow6, P4tow6, W4tow6, D5tow6, K5tow6, R5tow6, Y5tow6, F6tow6; +wire M6tow6, T6tow6, A7tow6, H7tow6, O7tow6, V7tow6, C8tow6, J8tow6, Q8tow6, X8tow6; +wire E9tow6, L9tow6, S9tow6, Z9tow6, Gatow6, Natow6, Uatow6, Bbtow6, Ibtow6, Pbtow6; +wire Wbtow6, Dctow6, Kctow6, Rctow6, Yctow6, Fdtow6, Mdtow6, Tdtow6, Aetow6, Hetow6; +wire Oetow6, Vetow6, Cftow6, Jftow6, Qftow6, Xftow6, Egtow6, Lgtow6, Sgtow6, Zgtow6; +wire Ghtow6, Nhtow6, Uhtow6, Bitow6, Iitow6, Pitow6, Witow6, Djtow6, Kjtow6, Rjtow6; +wire Yjtow6, Fktow6, Mktow6, Tktow6, Altow6, Hltow6, Oltow6, Vltow6, Cmtow6, Jmtow6; +wire Qmtow6, Xmtow6, Entow6, Lntow6, Sntow6, Zntow6, Gotow6, Notow6, Uotow6, Bptow6; +wire Iptow6, Pptow6, Wptow6, Dqtow6, Kqtow6, Rqtow6, Yqtow6, Frtow6, Mrtow6, Trtow6; +wire Astow6, Hstow6, Ostow6, Vstow6, Cttow6, Jttow6, Qttow6, Xttow6, Eutow6, Lutow6; +wire Sutow6, Zutow6, Gvtow6, Nvtow6, Uvtow6, Bwtow6, Iwtow6, Pwtow6, Wwtow6, Dxtow6; +wire Kxtow6, Rxtow6, Yxtow6, Fytow6, Mytow6, Tytow6, Aztow6, Hztow6, Oztow6, Vztow6; +wire C0uow6, J0uow6, Q0uow6, X0uow6, E1uow6, L1uow6, S1uow6, Z1uow6, G2uow6, N2uow6; +wire U2uow6, B3uow6, I3uow6, P3uow6, W3uow6, D4uow6, K4uow6, R4uow6, Y4uow6, F5uow6; +wire M5uow6, T5uow6, A6uow6, H6uow6, O6uow6, V6uow6, C7uow6, J7uow6, Q7uow6, X7uow6; +wire E8uow6, L8uow6, S8uow6, Z8uow6, G9uow6, N9uow6, U9uow6, Bauow6, Iauow6, Pauow6; +wire Wauow6, Dbuow6, Kbuow6, Rbuow6, Ybuow6, Fcuow6, Mcuow6, Tcuow6, Aduow6, Hduow6; +wire Oduow6, Vduow6, Ceuow6, Jeuow6, Qeuow6, Xeuow6, Efuow6, Lfuow6, Sfuow6, Zfuow6; +wire Gguow6, Nguow6, Uguow6, Bhuow6, Ihuow6, Phuow6, Whuow6, Diuow6, Kiuow6, Riuow6; +wire Yiuow6, Fjuow6, Mjuow6, Tjuow6, Akuow6, Hkuow6, Okuow6, Vkuow6, Cluow6, Jluow6; +wire Qluow6, Xluow6, Emuow6, Lmuow6, Smuow6, Zmuow6, Gnuow6, Nnuow6, Unuow6, Bouow6; +wire Iouow6, Pouow6, Wouow6, Dpuow6, Kpuow6, Rpuow6, Ypuow6, Fquow6, Mquow6, Tquow6; +wire Aruow6, Hruow6, Oruow6, Vruow6, Csuow6, Jsuow6, Qsuow6, Xsuow6, Etuow6, Ltuow6; +wire Stuow6, Ztuow6, Guuow6, Nuuow6, Uuuow6, Bvuow6, Ivuow6, Pvuow6, Wvuow6, Dwuow6; +wire Kwuow6, Rwuow6, Ywuow6, Fxuow6, Mxuow6, Txuow6, Ayuow6, Hyuow6, Oyuow6, Vyuow6; +wire Czuow6, Jzuow6, Qzuow6, Xzuow6, E0vow6, L0vow6, S0vow6, Z0vow6, G1vow6, N1vow6; +wire U1vow6, B2vow6, I2vow6, P2vow6, W2vow6, D3vow6, K3vow6, R3vow6, Y3vow6, F4vow6; +wire M4vow6, T4vow6, A5vow6, H5vow6, O5vow6, V5vow6, C6vow6, J6vow6, Q6vow6, X6vow6; +wire E7vow6, L7vow6, S7vow6, Z7vow6, G8vow6, N8vow6, U8vow6, B9vow6, I9vow6, P9vow6; +wire W9vow6, Davow6, Kavow6, Ravow6, Yavow6, Fbvow6, Mbvow6, Tbvow6, Acvow6, Hcvow6; +wire Ocvow6, Vcvow6, Cdvow6, Jdvow6, Qdvow6, Xdvow6, Eevow6, Levow6, Sevow6, Zevow6; +wire Gfvow6, Nfvow6, Ufvow6, Bgvow6, Igvow6, Pgvow6, Wgvow6, Dhvow6, Khvow6, Rhvow6; +wire Yhvow6, Fivow6, Mivow6, Tivow6, Ajvow6, Hjvow6, Ojvow6, Vjvow6, Ckvow6, Jkvow6; +wire Qkvow6, Xkvow6, Elvow6, Llvow6, Slvow6, Zlvow6, Gmvow6, Nmvow6, Umvow6, Bnvow6; +wire Invow6, Pnvow6, Wnvow6, Dovow6, Kovow6, Rovow6, Yovow6, Fpvow6, Mpvow6, Tpvow6; +wire Aqvow6, Hqvow6, Oqvow6, Vqvow6, Crvow6, Jrvow6, Qrvow6, Xrvow6, Esvow6, Lsvow6; +wire Ssvow6, Zsvow6, Gtvow6, Ntvow6, Utvow6, Buvow6, Iuvow6, Puvow6, Wuvow6, Dvvow6; +wire Kvvow6, Rvvow6, Yvvow6, Fwvow6, Mwvow6, Twvow6, Axvow6, Hxvow6, Oxvow6, Vxvow6; +wire Cyvow6, Jyvow6, Qyvow6, Xyvow6, Ezvow6, Lzvow6, Szvow6, Zzvow6, G0wow6, N0wow6; +wire U0wow6, B1wow6, I1wow6, P1wow6, W1wow6, D2wow6, K2wow6, R2wow6, Y2wow6, F3wow6; +wire M3wow6, T3wow6, A4wow6, H4wow6, O4wow6, V4wow6, C5wow6, J5wow6, Q5wow6, X5wow6; +wire E6wow6, L6wow6, S6wow6, Z6wow6, G7wow6, N7wow6, U7wow6, B8wow6, I8wow6, P8wow6; +wire W8wow6, D9wow6, K9wow6, R9wow6, Y9wow6, Fawow6, Mawow6, Tawow6, Abwow6, Hbwow6; +wire Obwow6, Vbwow6, Ccwow6, Jcwow6, Qcwow6, Xcwow6, Edwow6, Ldwow6, Sdwow6, Zdwow6; +wire Gewow6, Newow6, Uewow6, Bfwow6, Ifwow6, Pfwow6, Wfwow6, Dgwow6, Kgwow6, Rgwow6; +wire Ygwow6, Fhwow6, Mhwow6, Thwow6, Aiwow6, Hiwow6, Oiwow6, Viwow6, Cjwow6, Jjwow6; +wire Qjwow6, Xjwow6, Ekwow6, Lkwow6, Skwow6, Zkwow6, Glwow6, Nlwow6, Ulwow6, Bmwow6; +wire Imwow6, Pmwow6, Wmwow6, Dnwow6, Knwow6, Rnwow6, Ynwow6, Fowow6, Mowow6, Towow6; +wire Apwow6, Hpwow6, Opwow6, Vpwow6, Cqwow6, Jqwow6, Qqwow6, Xqwow6, Erwow6, Lrwow6; +wire Srwow6, Zrwow6, Gswow6, Nswow6, Uswow6, Btwow6, Itwow6, Ptwow6, Wtwow6, Duwow6; +wire Kuwow6, Ruwow6, Yuwow6, Fvwow6, Mvwow6, Tvwow6, Awwow6, Hwwow6, Owwow6, Vwwow6; +wire Cxwow6, Jxwow6, Qxwow6, Xxwow6, Eywow6, Lywow6, Sywow6, Zywow6, Gzwow6, Nzwow6; +wire Uzwow6, B0xow6, I0xow6, P0xow6, W0xow6, D1xow6, K1xow6, R1xow6, Y1xow6, F2xow6; +wire M2xow6, T2xow6, A3xow6, H3xow6, O3xow6, V3xow6, C4xow6, J4xow6, Q4xow6, X4xow6; +wire E5xow6, L5xow6, S5xow6, Z5xow6, G6xow6, N6xow6, U6xow6, B7xow6, I7xow6, P7xow6; +wire W7xow6, D8xow6, K8xow6, R8xow6, Y8xow6, F9xow6, M9xow6, T9xow6, Aaxow6, Haxow6; +wire Oaxow6, Vaxow6, Cbxow6, Jbxow6, Qbxow6, Xbxow6, Ecxow6, Lcxow6, Scxow6, Zcxow6; +wire Gdxow6, Ndxow6, Udxow6, Bexow6, Iexow6, Pexow6, Wexow6, Dfxow6, Kfxow6, Rfxow6; +wire Yfxow6, Fgxow6, Mgxow6, Tgxow6, Ahxow6, Hhxow6, Ohxow6, Vhxow6, Cixow6, Jixow6; +wire Qixow6, Xixow6, Ejxow6, Ljxow6, Sjxow6, Zjxow6, Gkxow6, Nkxow6, Ukxow6, Blxow6; +wire Ilxow6, Plxow6, Wlxow6, Dmxow6, Kmxow6, Rmxow6, Ymxow6, Fnxow6, Mnxow6, Tnxow6; +wire Aoxow6, Hoxow6, Ooxow6, Voxow6, Cpxow6, Jpxow6, Qpxow6, Xpxow6, Eqxow6, Lqxow6; +wire Sqxow6, Zqxow6, Grxow6, Nrxow6, Urxow6, Bsxow6, Isxow6, Psxow6, Wsxow6, Dtxow6; +wire Ktxow6, Rtxow6, Ytxow6, Fuxow6, Muxow6, Tuxow6, Avxow6, Hvxow6, Ovxow6, Vvxow6; +wire Cwxow6, Jwxow6, Qwxow6, Xwxow6, Exxow6, Lxxow6, Sxxow6, Zxxow6, Gyxow6, Nyxow6; +wire Uyxow6, Bzxow6, Izxow6, Pzxow6, Wzxow6, D0yow6, K0yow6, R0yow6, Y0yow6, F1yow6; +wire M1yow6, T1yow6, A2yow6, H2yow6, O2yow6, V2yow6, C3yow6, J3yow6, Q3yow6, X3yow6; +wire E4yow6, L4yow6, S4yow6, Z4yow6, G5yow6, N5yow6, U5yow6, B6yow6, I6yow6, P6yow6; +wire W6yow6, D7yow6, K7yow6, R7yow6, Y7yow6, F8yow6, M8yow6, T8yow6, A9yow6, H9yow6; +wire O9yow6, V9yow6, Cayow6, Jayow6, Qayow6, Xayow6, Ebyow6, Lbyow6, Sbyow6, Zbyow6; +wire Gcyow6, Ncyow6, Ucyow6, Bdyow6, Idyow6, Pdyow6, Wdyow6, Deyow6, Keyow6, Reyow6; +wire Yeyow6, Ffyow6, Mfyow6, Tfyow6, Agyow6, Hgyow6, Ogyow6, Vgyow6, Chyow6, Jhyow6; +wire Qhyow6, Xhyow6, Eiyow6, Liyow6, Siyow6, Ziyow6, Gjyow6, Njyow6, Ujyow6, Bkyow6; +wire Ikyow6, Pkyow6, Wkyow6, Dlyow6, Klyow6, Rlyow6, Ylyow6, Fmyow6, Mmyow6, Tmyow6; +wire Anyow6, Hnyow6, Onyow6, Vnyow6, Coyow6, Joyow6, Qoyow6, Xoyow6, Epyow6, Lpyow6; +wire Spyow6, Zpyow6, Gqyow6, Nqyow6, Uqyow6, Bryow6, Iryow6, Pryow6, Wryow6, Dsyow6; +wire Ksyow6, Rsyow6, Ysyow6, Ftyow6, Mtyow6, Ttyow6, Auyow6, Huyow6, Ouyow6, Vuyow6; +wire Cvyow6, Jvyow6, Qvyow6, Xvyow6, Ewyow6, Lwyow6, Swyow6, Zwyow6, Gxyow6, Nxyow6; +wire Uxyow6, Byyow6, Iyyow6, Pyyow6, Wyyow6, Dzyow6, Kzyow6, Rzyow6, Yzyow6, F0zow6; +wire M0zow6, T0zow6, A1zow6, H1zow6, O1zow6, V1zow6, C2zow6, J2zow6, Q2zow6, X2zow6; +wire E3zow6, L3zow6, S3zow6, Z3zow6, G4zow6, N4zow6, U4zow6, B5zow6, I5zow6, P5zow6; +wire W5zow6, D6zow6, K6zow6, R6zow6, Y6zow6, F7zow6, M7zow6, T7zow6, A8zow6, H8zow6; +wire O8zow6, V8zow6, C9zow6, J9zow6, Q9zow6, X9zow6, Eazow6, Lazow6, Sazow6, Zazow6; +wire Gbzow6, Nbzow6, Ubzow6, Bczow6, Iczow6, Pczow6, Wczow6, Ddzow6, Kdzow6, Rdzow6; +wire Ydzow6, Fezow6, Mezow6, Tezow6, Afzow6, Hfzow6, Ofzow6, Vfzow6, Cgzow6, Jgzow6; +wire Qgzow6, Xgzow6, Ehzow6, Lhzow6, Shzow6, Zhzow6, Gizow6, Nizow6, Uizow6, Bjzow6; +wire Ijzow6, Pjzow6, Wjzow6, Dkzow6, Kkzow6, Rkzow6, Ykzow6, Flzow6, Mlzow6, Tlzow6; +wire Amzow6, Hmzow6, Omzow6, Vmzow6, Cnzow6, Jnzow6, Qnzow6, Xnzow6, Eozow6, Lozow6; +wire Sozow6, Zozow6, Gpzow6, Npzow6, Upzow6, Bqzow6, Iqzow6, Pqzow6, Wqzow6, Drzow6; +wire Krzow6, Rrzow6, Yrzow6, Fszow6, Mszow6, Tszow6, Atzow6, Htzow6, Otzow6, Vtzow6; +wire Cuzow6, Juzow6, Quzow6, Xuzow6, Evzow6, Lvzow6, Svzow6, Zvzow6, Gwzow6, Nwzow6; +wire Uwzow6, Bxzow6, Ixzow6, Pxzow6, Wxzow6, Dyzow6, Kyzow6, Ryzow6, Yyzow6, Fzzow6; +wire Mzzow6, Tzzow6, A00pw6, H00pw6, O00pw6, V00pw6, C10pw6, J10pw6, Q10pw6, X10pw6; +wire E20pw6, L20pw6, S20pw6, Z20pw6, G30pw6, N30pw6, U30pw6, B40pw6, I40pw6, P40pw6; +wire W40pw6, D50pw6, K50pw6, R50pw6, Y50pw6, F60pw6, M60pw6, T60pw6, A70pw6, H70pw6; +wire O70pw6, V70pw6, C80pw6, J80pw6, Q80pw6, X80pw6, E90pw6, L90pw6, S90pw6, Z90pw6; +wire Ga0pw6, Na0pw6, Ua0pw6, Bb0pw6, Ib0pw6, Pb0pw6, Wb0pw6, Dc0pw6, Kc0pw6, Rc0pw6; +wire Yc0pw6, Fd0pw6, Md0pw6, Td0pw6, Ae0pw6, He0pw6, Oe0pw6, Ve0pw6, Cf0pw6, Jf0pw6; +wire Qf0pw6, Xf0pw6, Eg0pw6, Lg0pw6, Sg0pw6, Zg0pw6, Gh0pw6, Nh0pw6, Uh0pw6, Bi0pw6; +wire Ii0pw6, Pi0pw6, Wi0pw6, Dj0pw6, Kj0pw6, Rj0pw6, Yj0pw6, Fk0pw6, Mk0pw6, Tk0pw6; +wire Al0pw6, Hl0pw6, Ol0pw6, Vl0pw6, Cm0pw6, Jm0pw6, Qm0pw6, Xm0pw6, En0pw6, Ln0pw6; +wire Sn0pw6, Zn0pw6, Go0pw6, No0pw6, Uo0pw6, Bp0pw6, Ip0pw6, Pp0pw6, Wp0pw6, Dq0pw6; +wire Kq0pw6, Rq0pw6, Yq0pw6, Fr0pw6, Mr0pw6, Tr0pw6, As0pw6, Hs0pw6, Os0pw6, Vs0pw6; +wire Ct0pw6, Jt0pw6, Qt0pw6, Xt0pw6, Eu0pw6, Lu0pw6, Su0pw6, Zu0pw6, Gv0pw6, Nv0pw6; +wire Uv0pw6, Bw0pw6, Iw0pw6, Pw0pw6, Ww0pw6, Dx0pw6, Kx0pw6, Rx0pw6, Yx0pw6, Fy0pw6; +wire My0pw6, Ty0pw6, Az0pw6, Hz0pw6, Oz0pw6, Vz0pw6, C01pw6, J01pw6, Q01pw6, X01pw6; +wire E11pw6, L11pw6, S11pw6, Z11pw6, G21pw6, N21pw6, U21pw6, B31pw6, I31pw6, P31pw6; +wire W31pw6, D41pw6, K41pw6, R41pw6, Y41pw6, F51pw6, M51pw6, T51pw6, A61pw6, H61pw6; +wire O61pw6, V61pw6, C71pw6, J71pw6, Q71pw6, X71pw6, E81pw6, L81pw6, S81pw6, Z81pw6; +wire G91pw6, N91pw6, U91pw6, Ba1pw6, Ia1pw6, Pa1pw6, Wa1pw6, Db1pw6, Kb1pw6, Rb1pw6; +wire Yb1pw6, Fc1pw6, Mc1pw6, Tc1pw6, Ad1pw6, Hd1pw6, Od1pw6, Vd1pw6, Ce1pw6, Je1pw6; +wire Qe1pw6, Xe1pw6, Ef1pw6, Lf1pw6, Sf1pw6, Zf1pw6, Gg1pw6, Ng1pw6, Ug1pw6, Bh1pw6; +wire Ih1pw6, Ph1pw6, Wh1pw6, Di1pw6, Ki1pw6, Ri1pw6, Yi1pw6, Fj1pw6, Mj1pw6, Tj1pw6; +wire Ak1pw6, Hk1pw6, Ok1pw6, Vk1pw6, Cl1pw6, Jl1pw6, Ql1pw6, Xl1pw6, Em1pw6, Lm1pw6; +wire Sm1pw6, Zm1pw6, Gn1pw6, Nn1pw6, Un1pw6, Bo1pw6, Io1pw6, Po1pw6, Wo1pw6, Dp1pw6; +wire Kp1pw6, Rp1pw6, Yp1pw6, Fq1pw6, Mq1pw6, Tq1pw6, Ar1pw6, Hr1pw6, Or1pw6, Vr1pw6; +wire Cs1pw6, Js1pw6, Qs1pw6, Xs1pw6, Et1pw6, Lt1pw6, St1pw6, Zt1pw6, Gu1pw6, Nu1pw6; +wire Uu1pw6, Bv1pw6, Iv1pw6, Pv1pw6, Wv1pw6, Dw1pw6, Kw1pw6, Rw1pw6, Yw1pw6, Fx1pw6; +wire Mx1pw6, Tx1pw6, Ay1pw6, Hy1pw6, Oy1pw6, Vy1pw6, Cz1pw6, Jz1pw6, Qz1pw6, Xz1pw6; +wire E02pw6, L02pw6, S02pw6, Z02pw6, G12pw6, N12pw6, U12pw6, B22pw6, I22pw6, P22pw6; +wire W22pw6, D32pw6, K32pw6, R32pw6, Y32pw6, F42pw6, M42pw6, T42pw6, A52pw6, H52pw6; +wire O52pw6, V52pw6, C62pw6, J62pw6, Q62pw6, X62pw6, E72pw6, L72pw6, S72pw6, Z72pw6; +wire G82pw6, N82pw6, U82pw6, B92pw6, I92pw6, P92pw6, W92pw6, Da2pw6, Ka2pw6, Ra2pw6; +wire Ya2pw6, Fb2pw6, Mb2pw6, Tb2pw6, Ac2pw6, Hc2pw6, Oc2pw6, Vc2pw6, Cd2pw6, Jd2pw6; +wire Qd2pw6, Xd2pw6, Ee2pw6, Le2pw6, Se2pw6, Ze2pw6, Gf2pw6, Nf2pw6, Uf2pw6, Bg2pw6; +wire Ig2pw6, Pg2pw6, Wg2pw6, Dh2pw6, Kh2pw6, Rh2pw6, Yh2pw6, Fi2pw6, Mi2pw6, Ti2pw6; +wire Aj2pw6, Hj2pw6, Oj2pw6, Vj2pw6, Ck2pw6, Jk2pw6, Qk2pw6, Xk2pw6, El2pw6, Ll2pw6; +wire Sl2pw6, Zl2pw6, Gm2pw6, Nm2pw6, Um2pw6, Bn2pw6, In2pw6, Pn2pw6, Wn2pw6, Do2pw6; +wire Ko2pw6, Ro2pw6, Yo2pw6, Fp2pw6, Mp2pw6, Tp2pw6, Aq2pw6, Hq2pw6, Oq2pw6, Vq2pw6; +wire Cr2pw6, Jr2pw6, Qr2pw6, Xr2pw6, Es2pw6, Ls2pw6, Ss2pw6, Zs2pw6, Gt2pw6, Nt2pw6; +wire Ut2pw6, Bu2pw6, Iu2pw6, Pu2pw6, Wu2pw6, Dv2pw6, Kv2pw6, Rv2pw6, Yv2pw6, Fw2pw6; +wire Mw2pw6, Tw2pw6, Ax2pw6, Hx2pw6, Ox2pw6, Vx2pw6, Cy2pw6, Jy2pw6, Qy2pw6, Xy2pw6; +wire Ez2pw6, Lz2pw6, Sz2pw6, Zz2pw6, G03pw6, N03pw6, U03pw6, B13pw6, I13pw6, P13pw6; +wire W13pw6, D23pw6, K23pw6, R23pw6, Y23pw6, F33pw6, M33pw6, T33pw6, A43pw6, H43pw6; +wire O43pw6, V43pw6, C53pw6, J53pw6, Q53pw6, X53pw6, E63pw6, L63pw6, S63pw6, Z63pw6; +wire G73pw6, N73pw6, U73pw6, B83pw6, I83pw6, P83pw6, W83pw6, D93pw6, K93pw6, R93pw6; +wire Y93pw6, Fa3pw6, Ma3pw6, Ta3pw6, Ab3pw6, Hb3pw6, Ob3pw6, Vb3pw6, Cc3pw6, Jc3pw6; +wire Qc3pw6, Xc3pw6, Ed3pw6, Ld3pw6, Sd3pw6, Zd3pw6, Ge3pw6, Ne3pw6, Ue3pw6, Bf3pw6; +wire If3pw6, Pf3pw6, Wf3pw6, Dg3pw6, Kg3pw6, Rg3pw6, Yg3pw6, Fh3pw6, Mh3pw6, Th3pw6; +wire Ai3pw6, Hi3pw6, Oi3pw6, Vi3pw6, Cj3pw6, Jj3pw6, Qj3pw6, Xj3pw6, Ek3pw6, Lk3pw6; +wire Sk3pw6, Zk3pw6, Gl3pw6, Nl3pw6, Ul3pw6, Bm3pw6, Im3pw6, Pm3pw6, Wm3pw6, Dn3pw6; +wire Kn3pw6, Rn3pw6, Yn3pw6, Fo3pw6, Mo3pw6, To3pw6, Ap3pw6, Hp3pw6, Op3pw6, Vp3pw6; +wire Cq3pw6, Jq3pw6, Qq3pw6, Xq3pw6, Er3pw6, Lr3pw6, Sr3pw6, Zr3pw6, Gs3pw6, Ns3pw6; +wire Us3pw6, Bt3pw6, It3pw6, Pt3pw6, Wt3pw6, Du3pw6, Ku3pw6, Ru3pw6, Yu3pw6, Fv3pw6; +wire Mv3pw6, Tv3pw6, Aw3pw6, Hw3pw6, Ow3pw6, Vw3pw6, Cx3pw6, Jx3pw6, Qx3pw6, Xx3pw6; +wire Ey3pw6, Ly3pw6, Sy3pw6, Zy3pw6, Gz3pw6, Nz3pw6, Uz3pw6, B04pw6, I04pw6, P04pw6; +wire W04pw6, D14pw6, K14pw6, R14pw6, Y14pw6, F24pw6, M24pw6, T24pw6, A34pw6, H34pw6; +wire O34pw6, V34pw6, C44pw6, J44pw6, Q44pw6, X44pw6, E54pw6, L54pw6, S54pw6, Z54pw6; +wire G64pw6, N64pw6, U64pw6, B74pw6, I74pw6, P74pw6, W74pw6, D84pw6, K84pw6, R84pw6; +wire Y84pw6, F94pw6, M94pw6, T94pw6, Aa4pw6, Ha4pw6, Oa4pw6, Va4pw6, Cb4pw6, Jb4pw6; +wire Qb4pw6, Xb4pw6, Ec4pw6, Lc4pw6, Sc4pw6, Zc4pw6, Gd4pw6, Nd4pw6, Ud4pw6, Be4pw6; +wire Ie4pw6, Pe4pw6, We4pw6, Df4pw6, Kf4pw6, Rf4pw6, Yf4pw6, Fg4pw6, Mg4pw6, Tg4pw6; +wire Ah4pw6, Hh4pw6, Oh4pw6, Vh4pw6, Ci4pw6, Ji4pw6, Qi4pw6, Xi4pw6, Ej4pw6, Lj4pw6; +wire Sj4pw6, Zj4pw6, Gk4pw6, Nk4pw6, Uk4pw6, Bl4pw6, Il4pw6, Pl4pw6, Wl4pw6, Dm4pw6; +wire Km4pw6, Rm4pw6, Ym4pw6, Fn4pw6, Mn4pw6, Tn4pw6, Ao4pw6, Ho4pw6, Oo4pw6, Vo4pw6; +wire Cp4pw6, Jp4pw6, Qp4pw6, Xp4pw6, Eq4pw6, Lq4pw6, Sq4pw6, Zq4pw6, Gr4pw6, Nr4pw6; +wire Ur4pw6, Bs4pw6, Is4pw6, Ps4pw6, Ws4pw6, Dt4pw6, Kt4pw6, Rt4pw6, Yt4pw6, Fu4pw6; +wire Mu4pw6, Tu4pw6, Av4pw6, Hv4pw6, Ov4pw6, Vv4pw6, Cw4pw6, Jw4pw6, Qw4pw6, Xw4pw6; +wire Ex4pw6, Lx4pw6, Sx4pw6, Zx4pw6, Gy4pw6, Ny4pw6, Uy4pw6, Bz4pw6, Iz4pw6, Pz4pw6; +wire Wz4pw6, D05pw6, K05pw6, R05pw6, Y05pw6, F15pw6, M15pw6, T15pw6, A25pw6, H25pw6; +wire O25pw6, V25pw6, C35pw6, J35pw6, Q35pw6, X35pw6, E45pw6, L45pw6, S45pw6, Z45pw6; +wire G55pw6, N55pw6, U55pw6, B65pw6, I65pw6, P65pw6, W65pw6, D75pw6, K75pw6, R75pw6; +wire Y75pw6, F85pw6, M85pw6, T85pw6, A95pw6, H95pw6, O95pw6, V95pw6, Ca5pw6, Ja5pw6; +wire Qa5pw6, Xa5pw6, Eb5pw6, Lb5pw6, Sb5pw6, Zb5pw6, Gc5pw6, Nc5pw6, Uc5pw6, Bd5pw6; +wire Id5pw6, Pd5pw6, Wd5pw6, De5pw6, Ke5pw6, Re5pw6, Ye5pw6, Ff5pw6, Mf5pw6, Tf5pw6; +wire Ag5pw6, Hg5pw6, Og5pw6, Vg5pw6, Ch5pw6, Jh5pw6, Qh5pw6, Xh5pw6, Ei5pw6, Li5pw6; +wire Si5pw6, Zi5pw6, Gj5pw6, Nj5pw6, Uj5pw6, Bk5pw6, Ik5pw6, Pk5pw6, Wk5pw6, Dl5pw6; +wire Kl5pw6, Rl5pw6, Yl5pw6, Fm5pw6, Mm5pw6, Tm5pw6, An5pw6, Hn5pw6, On5pw6, Vn5pw6; +wire Co5pw6, Jo5pw6, Qo5pw6, Xo5pw6, Ep5pw6, Lp5pw6, Sp5pw6, Zp5pw6, Gq5pw6, Nq5pw6; +wire Uq5pw6, Br5pw6, Ir5pw6, Pr5pw6, Wr5pw6, Ds5pw6, Ks5pw6, Rs5pw6, Ys5pw6, Ft5pw6; +wire Mt5pw6, Tt5pw6, Au5pw6, Hu5pw6, Ou5pw6, Vu5pw6, Cv5pw6, Jv5pw6, Qv5pw6, Xv5pw6; +wire Ew5pw6, Lw5pw6, Sw5pw6, Zw5pw6, Gx5pw6, Nx5pw6, Ux5pw6, By5pw6, Iy5pw6, Py5pw6; +wire Wy5pw6, Dz5pw6, Kz5pw6, Rz5pw6, Yz5pw6, F06pw6, M06pw6, T06pw6, A16pw6, H16pw6; +wire O16pw6, V16pw6, C26pw6, J26pw6, Q26pw6, X26pw6, E36pw6, L36pw6, S36pw6, Z36pw6; +wire G46pw6, N46pw6, U46pw6, B56pw6, I56pw6, P56pw6, W56pw6, D66pw6, K66pw6, R66pw6; +wire Y66pw6, F76pw6, M76pw6, T76pw6, A86pw6, H86pw6, O86pw6, V86pw6, C96pw6, J96pw6; +wire Q96pw6, X96pw6, Ea6pw6, La6pw6, Sa6pw6, Za6pw6, Gb6pw6, Nb6pw6, Ub6pw6, Bc6pw6; +wire Ic6pw6, Pc6pw6, Wc6pw6, Dd6pw6, Kd6pw6, Rd6pw6, Yd6pw6, Fe6pw6, Me6pw6, Te6pw6; +wire Af6pw6, Hf6pw6, Of6pw6, Vf6pw6, Cg6pw6, Jg6pw6, Qg6pw6, Xg6pw6, Eh6pw6, Lh6pw6; +wire Sh6pw6, Zh6pw6, Gi6pw6, Ni6pw6, Ui6pw6, Bj6pw6, Ij6pw6, Pj6pw6, Wj6pw6, Dk6pw6; +wire Kk6pw6, Rk6pw6, Yk6pw6, Fl6pw6, Ml6pw6, Tl6pw6, Am6pw6, Hm6pw6, Om6pw6, Vm6pw6; +wire Cn6pw6, Jn6pw6, Qn6pw6, Xn6pw6, Eo6pw6, Lo6pw6, So6pw6, Zo6pw6, Gp6pw6, Np6pw6; +wire Up6pw6, Bq6pw6, Iq6pw6, Pq6pw6, Wq6pw6, Dr6pw6, Kr6pw6, Rr6pw6, Yr6pw6, Fs6pw6; +wire Ms6pw6, Ts6pw6, At6pw6, Ht6pw6, Ot6pw6, Vt6pw6, Cu6pw6, Ju6pw6, Qu6pw6, Xu6pw6; +wire Ev6pw6, Lv6pw6, Sv6pw6, Zv6pw6, Gw6pw6, Nw6pw6, Uw6pw6, Bx6pw6, Ix6pw6, Px6pw6; +wire Wx6pw6, Dy6pw6, Ky6pw6, Ry6pw6, Yy6pw6, Fz6pw6, Mz6pw6, Tz6pw6, A07pw6, H07pw6; +wire O07pw6, V07pw6, C17pw6, J17pw6, Q17pw6, X17pw6, E27pw6, L27pw6, S27pw6, Z27pw6; +wire G37pw6, N37pw6, U37pw6, B47pw6, I47pw6, P47pw6, W47pw6, D57pw6, K57pw6, R57pw6; +wire Y57pw6, F67pw6, M67pw6, T67pw6, A77pw6, H77pw6, O77pw6, V77pw6, C87pw6, J87pw6; +wire Q87pw6, X87pw6, E97pw6, L97pw6, S97pw6, Z97pw6, Ga7pw6, Na7pw6, Ua7pw6, Bb7pw6; +wire Ib7pw6, Pb7pw6, Wb7pw6, Dc7pw6, Kc7pw6, Rc7pw6, Yc7pw6, Fd7pw6, Md7pw6, Td7pw6; +wire Ae7pw6, He7pw6, Oe7pw6, Ve7pw6, Cf7pw6, Jf7pw6, Qf7pw6, Xf7pw6, Eg7pw6, Lg7pw6; +wire Sg7pw6, Zg7pw6, Gh7pw6, Nh7pw6, Uh7pw6, Bi7pw6, Ii7pw6, Pi7pw6, Wi7pw6, Dj7pw6; +wire Kj7pw6, Rj7pw6, Yj7pw6, Fk7pw6, Mk7pw6, Tk7pw6, Al7pw6, Hl7pw6, Ol7pw6, Vl7pw6; +wire Cm7pw6, Jm7pw6, Qm7pw6, Xm7pw6, En7pw6, Ln7pw6, Sn7pw6, Zn7pw6, Go7pw6, No7pw6; +wire Uo7pw6, Bp7pw6, Ip7pw6, Pp7pw6, Wp7pw6, Dq7pw6, Kq7pw6, Rq7pw6, Yq7pw6, Fr7pw6; +wire Mr7pw6, Tr7pw6, As7pw6, Hs7pw6, Os7pw6, Vs7pw6, Ct7pw6, Jt7pw6, Qt7pw6, Xt7pw6; +wire Eu7pw6, Lu7pw6, Su7pw6, Zu7pw6, Gv7pw6, Nv7pw6, Uv7pw6, Bw7pw6, Iw7pw6, Pw7pw6; +wire Ww7pw6, Dx7pw6, Kx7pw6, Rx7pw6, Yx7pw6, Fy7pw6, My7pw6, Ty7pw6, Az7pw6, Hz7pw6; +wire Oz7pw6, Vz7pw6, C08pw6, J08pw6, Q08pw6, X08pw6, E18pw6, L18pw6, S18pw6, Z18pw6; +wire G28pw6, N28pw6, U28pw6, B38pw6, I38pw6, P38pw6, W38pw6, D48pw6, K48pw6, R48pw6; +wire Y48pw6, F58pw6, M58pw6, T58pw6, A68pw6, H68pw6, O68pw6, V68pw6, C78pw6, J78pw6; +wire Q78pw6, X78pw6, E88pw6, L88pw6, S88pw6, Z88pw6, G98pw6, N98pw6, U98pw6, Ba8pw6; +wire Ia8pw6, Pa8pw6, Wa8pw6, Db8pw6, Kb8pw6, Rb8pw6, Yb8pw6, Fc8pw6, Mc8pw6, Tc8pw6; +wire Ad8pw6, Hd8pw6, Od8pw6, Vd8pw6, Ce8pw6, Je8pw6, Qe8pw6, Xe8pw6, Ef8pw6, Lf8pw6; +wire Sf8pw6, Zf8pw6, Gg8pw6, Ng8pw6, Ug8pw6, Bh8pw6, Ih8pw6, Ph8pw6, Wh8pw6, Di8pw6; +wire Ki8pw6, Ri8pw6, Yi8pw6, Fj8pw6, Mj8pw6, Tj8pw6, Ak8pw6, Hk8pw6, Ok8pw6, Vk8pw6; +wire Cl8pw6, Jl8pw6, Ql8pw6, Xl8pw6, Em8pw6, Lm8pw6, Sm8pw6, Zm8pw6, Gn8pw6, Nn8pw6; +wire Un8pw6, Bo8pw6, Io8pw6, Po8pw6, Wo8pw6, Dp8pw6, Kp8pw6, Rp8pw6, Yp8pw6, Fq8pw6; +wire Mq8pw6, Tq8pw6, Ar8pw6, Hr8pw6, Or8pw6, Vr8pw6, Cs8pw6, Js8pw6, Qs8pw6, Xs8pw6; +wire Et8pw6, Lt8pw6, St8pw6, Zt8pw6, Gu8pw6, Nu8pw6, Uu8pw6, Bv8pw6, Iv8pw6, Pv8pw6; +wire Wv8pw6, Dw8pw6, Kw8pw6, Rw8pw6, Yw8pw6, Fx8pw6, Mx8pw6, Tx8pw6, Ay8pw6, Hy8pw6; +wire Oy8pw6, Vy8pw6, Cz8pw6, Jz8pw6, Qz8pw6, Xz8pw6, E09pw6, L09pw6, S09pw6, Z09pw6; +wire G19pw6, N19pw6, U19pw6, B29pw6, I29pw6, P29pw6, W29pw6, D39pw6, K39pw6, R39pw6; +wire Y39pw6, F49pw6, M49pw6, T49pw6, A59pw6, H59pw6, O59pw6, V59pw6, C69pw6, J69pw6; +wire Q69pw6, X69pw6, E79pw6, L79pw6, S79pw6, Z79pw6, G89pw6, N89pw6, U89pw6, B99pw6; +wire I99pw6, P99pw6, W99pw6, Da9pw6, Ka9pw6, Ra9pw6, Ya9pw6, Fb9pw6, Mb9pw6, Tb9pw6; +wire Ac9pw6, Hc9pw6, Oc9pw6, Vc9pw6, Cd9pw6, Jd9pw6, Qd9pw6, Xd9pw6, Ee9pw6, Le9pw6; +wire Se9pw6, Ze9pw6, Gf9pw6, Nf9pw6, Uf9pw6, Bg9pw6, Ig9pw6, Pg9pw6, Wg9pw6, Dh9pw6; +wire Kh9pw6, Rh9pw6, Yh9pw6, Fi9pw6, Mi9pw6, Ti9pw6, Aj9pw6, Hj9pw6, Oj9pw6, Vj9pw6; +wire Ck9pw6, Jk9pw6, Qk9pw6, Xk9pw6, El9pw6, Ll9pw6, Sl9pw6, Zl9pw6, Gm9pw6, Nm9pw6; +wire Um9pw6, Bn9pw6, In9pw6, Pn9pw6, Wn9pw6, Do9pw6, Ko9pw6, Ro9pw6, Yo9pw6, Fp9pw6; +wire Mp9pw6, Tp9pw6, Aq9pw6, Hq9pw6, Oq9pw6, Vq9pw6, Cr9pw6, Jr9pw6, Qr9pw6, Xr9pw6; +wire Es9pw6, Ls9pw6, Ss9pw6, Zs9pw6, Gt9pw6, Nt9pw6, Ut9pw6, Bu9pw6, Iu9pw6, Pu9pw6; +wire Wu9pw6, Dv9pw6, Kv9pw6, Rv9pw6, Yv9pw6, Fw9pw6, Mw9pw6, Tw9pw6, Ax9pw6, Hx9pw6; +wire Ox9pw6, Vx9pw6, Cy9pw6, Jy9pw6, Qy9pw6, Xy9pw6, Ez9pw6, Lz9pw6, Sz9pw6, Zz9pw6; +wire G0apw6, N0apw6, U0apw6, B1apw6, I1apw6, P1apw6, W1apw6, D2apw6, K2apw6, R2apw6; +wire Y2apw6, F3apw6, M3apw6, T3apw6, A4apw6, H4apw6, O4apw6, V4apw6, C5apw6, J5apw6; +wire Q5apw6, X5apw6, E6apw6, L6apw6, S6apw6, Z6apw6, G7apw6, N7apw6, U7apw6, B8apw6; +wire I8apw6, P8apw6, W8apw6, D9apw6, K9apw6, R9apw6, Y9apw6, Faapw6, Maapw6, Taapw6; +wire Abapw6, Hbapw6, Obapw6, Vbapw6, Ccapw6, Jcapw6, Qcapw6, Xcapw6, Edapw6, Ldapw6; +wire Sdapw6, Zdapw6, Geapw6, Neapw6, Ueapw6, Bfapw6, Ifapw6, Pfapw6, Wfapw6, Dgapw6; +wire Kgapw6, Rgapw6, Ygapw6, Fhapw6, Mhapw6, Thapw6, Aiapw6, Hiapw6, Oiapw6, Viapw6; +wire Cjapw6, Jjapw6, Qjapw6, Xjapw6, Ekapw6, Lkapw6, Skapw6, Zkapw6, Glapw6, Nlapw6; +wire Ulapw6, Bmapw6, Imapw6, Pmapw6, Wmapw6, Dnapw6, Knapw6, Rnapw6, Ynapw6, Foapw6; +wire Moapw6, Toapw6, Apapw6, Hpapw6, Opapw6, Vpapw6, Cqapw6, Jqapw6, Qqapw6, Xqapw6; +wire Erapw6, Lrapw6, Srapw6, Zrapw6, Gsapw6, Nsapw6, Usapw6, Btapw6, Itapw6, Ptapw6; +wire Wtapw6, Duapw6, Kuapw6, Ruapw6, Yuapw6, Fvapw6, Mvapw6, Tvapw6, Awapw6, Hwapw6; +wire Owapw6, Vwapw6, Cxapw6, Jxapw6, Qxapw6, Xxapw6, Eyapw6, Lyapw6, Syapw6, Zyapw6; +wire Gzapw6, Nzapw6, Uzapw6, B0bpw6, I0bpw6, P0bpw6, W0bpw6, D1bpw6, K1bpw6, R1bpw6; +wire Y1bpw6, F2bpw6, M2bpw6, T2bpw6, A3bpw6, H3bpw6, O3bpw6, V3bpw6, C4bpw6, J4bpw6; +wire Q4bpw6, X4bpw6, E5bpw6, L5bpw6, S5bpw6, Z5bpw6, G6bpw6, N6bpw6, U6bpw6, B7bpw6; +wire I7bpw6, P7bpw6, W7bpw6, D8bpw6, K8bpw6, R8bpw6, Y8bpw6, F9bpw6, M9bpw6, T9bpw6; +wire Aabpw6, Habpw6, Oabpw6, Vabpw6, Cbbpw6, Jbbpw6, Qbbpw6, Xbbpw6, Ecbpw6, Lcbpw6; +wire Scbpw6, Zcbpw6, Gdbpw6, Ndbpw6, Udbpw6, Bebpw6, Iebpw6, Pebpw6, Webpw6, Dfbpw6; +wire Kfbpw6, Rfbpw6, Yfbpw6, Fgbpw6, Mgbpw6, Tgbpw6, Ahbpw6, Hhbpw6, Ohbpw6, Vhbpw6; +wire Cibpw6, Jibpw6, Qibpw6, Xibpw6, Ejbpw6, Ljbpw6, Sjbpw6, Zjbpw6, Gkbpw6, Nkbpw6; +wire Ukbpw6, Blbpw6, Ilbpw6, Plbpw6, Wlbpw6, Dmbpw6, Kmbpw6, Rmbpw6, Ymbpw6, Fnbpw6; +wire Mnbpw6, Tnbpw6, Aobpw6, Hobpw6, Oobpw6, Vobpw6, Cpbpw6, Jpbpw6, Qpbpw6, Xpbpw6; +wire Eqbpw6, Lqbpw6, Sqbpw6, Zqbpw6, Grbpw6, Nrbpw6, Urbpw6, Bsbpw6, Isbpw6, Psbpw6; +wire Wsbpw6, Dtbpw6, Ktbpw6, Rtbpw6, Ytbpw6, Fubpw6, Mubpw6, Tubpw6, Avbpw6, Hvbpw6; +wire Ovbpw6, Vvbpw6, Cwbpw6, Jwbpw6, Qwbpw6, Xwbpw6, Exbpw6, Lxbpw6, Sxbpw6, Zxbpw6; +wire Gybpw6, Nybpw6, Uybpw6, Bzbpw6, Izbpw6, Pzbpw6, Wzbpw6, D0cpw6, K0cpw6, R0cpw6; +wire Y0cpw6, F1cpw6, M1cpw6, T1cpw6, A2cpw6, H2cpw6, O2cpw6, V2cpw6, C3cpw6, J3cpw6; +wire Q3cpw6, X3cpw6, E4cpw6, L4cpw6, S4cpw6, Z4cpw6, G5cpw6, N5cpw6, U5cpw6, B6cpw6; +wire I6cpw6, P6cpw6, W6cpw6, D7cpw6, K7cpw6, R7cpw6, Y7cpw6, F8cpw6, M8cpw6, T8cpw6; +wire A9cpw6, H9cpw6, O9cpw6, V9cpw6, Cacpw6, Jacpw6, Qacpw6, Xacpw6, Ebcpw6, Lbcpw6; +wire Sbcpw6, Zbcpw6, Gccpw6, Nccpw6, Uccpw6, Bdcpw6, Idcpw6, Pdcpw6, Wdcpw6, Decpw6; +wire Kecpw6, Recpw6, Yecpw6, Ffcpw6, Mfcpw6, Tfcpw6, Agcpw6, Hgcpw6, Ogcpw6, Vgcpw6; +wire Chcpw6, Jhcpw6, Qhcpw6, Xhcpw6, Eicpw6, Licpw6, Sicpw6, Zicpw6, Gjcpw6, Njcpw6; +wire Ujcpw6, Bkcpw6, Ikcpw6, Pkcpw6, Wkcpw6, Dlcpw6, Klcpw6, Rlcpw6, Ylcpw6, Fmcpw6; +wire Mmcpw6, Tmcpw6, Ancpw6, Hncpw6, Oncpw6, Vncpw6, Cocpw6, Jocpw6, Qocpw6, Xocpw6; +wire Epcpw6, Lpcpw6, Spcpw6, Zpcpw6, Gqcpw6, Nqcpw6, Uqcpw6, Brcpw6, Ircpw6, Prcpw6; +wire Wrcpw6, Dscpw6, Kscpw6, Rscpw6, Yscpw6, Ftcpw6, Mtcpw6, Ttcpw6, Aucpw6, Hucpw6; +wire Oucpw6, Vucpw6, Cvcpw6, Jvcpw6, Qvcpw6, Xvcpw6, Ewcpw6, Lwcpw6, Swcpw6, Zwcpw6; +wire Gxcpw6, Nxcpw6, Uxcpw6, Bycpw6, Iycpw6, Pycpw6, Wycpw6, Dzcpw6, Kzcpw6, Rzcpw6; +wire Yzcpw6, F0dpw6, M0dpw6, T0dpw6, A1dpw6, H1dpw6, O1dpw6, V1dpw6, C2dpw6, J2dpw6; +wire Q2dpw6, X2dpw6, E3dpw6, L3dpw6, S3dpw6, Z3dpw6, G4dpw6, N4dpw6, U4dpw6, B5dpw6; +wire I5dpw6, P5dpw6, W5dpw6, D6dpw6, K6dpw6, R6dpw6, Y6dpw6, F7dpw6, M7dpw6, T7dpw6; +wire A8dpw6, H8dpw6, O8dpw6, V8dpw6, C9dpw6, J9dpw6, Q9dpw6, X9dpw6, Eadpw6, Ladpw6; +wire Sadpw6, Zadpw6, Gbdpw6, Nbdpw6, Ubdpw6, Bcdpw6, Icdpw6, Pcdpw6, Wcdpw6, Dddpw6; +wire Kddpw6, Rddpw6, Yddpw6, Fedpw6, Medpw6, Tedpw6, Afdpw6, Hfdpw6, Ofdpw6, Vfdpw6; +wire Cgdpw6, Jgdpw6, Qgdpw6, Xgdpw6, Ehdpw6, Lhdpw6, Shdpw6, Zhdpw6, Gidpw6, Nidpw6; +wire Uidpw6, Bjdpw6, Ijdpw6, Pjdpw6, Wjdpw6, Dkdpw6, Kkdpw6, Rkdpw6, Ykdpw6, Fldpw6; +wire Mldpw6, Tldpw6, Amdpw6, Hmdpw6, Omdpw6, Vmdpw6, Cndpw6, Jndpw6, Qndpw6, Xndpw6; +wire Eodpw6, Lodpw6, Sodpw6, Zodpw6, Gpdpw6, Npdpw6, Updpw6, Bqdpw6, Iqdpw6, Pqdpw6; +wire Wqdpw6, Drdpw6, Krdpw6, Rrdpw6, Yrdpw6, Fsdpw6, Msdpw6, Tsdpw6, Atdpw6, Htdpw6; +wire Otdpw6, Vtdpw6, Cudpw6, Judpw6, Qudpw6, Xudpw6, Evdpw6, Lvdpw6, Svdpw6, Zvdpw6; +wire Gwdpw6, Nwdpw6, Uwdpw6, Bxdpw6, Ixdpw6, Pxdpw6, Wxdpw6, Dydpw6, Kydpw6, Rydpw6; +wire Yydpw6, Fzdpw6, Mzdpw6, Tzdpw6, A0epw6, H0epw6, O0epw6, V0epw6, C1epw6, J1epw6; +wire Q1epw6, X1epw6, E2epw6, L2epw6, S2epw6, Z2epw6, G3epw6, N3epw6, U3epw6, B4epw6; +wire I4epw6, P4epw6, W4epw6, D5epw6, K5epw6, H6epw6, E7epw6, B8epw6, Y8epw6, V9epw6; +wire Saepw6, Pbepw6, Mcepw6, Jdepw6, Heepw6, Ffepw6, Dgepw6, Bhepw6, Zhepw6, Xiepw6; +wire Vjepw6, Tkepw6, Rlepw6, Pmepw6, Nnepw6, Loepw6, Jpepw6, Hqepw6, Frepw6, Dsepw6; +wire Btepw6, Ztepw6, Xuepw6, Vvepw6, Twepw6, Rxepw6, Pyepw6, Nzepw6, L0fpw6, J1fpw6; +wire [3:0] H2fpw6; +wire [3:0] X3fpw6; +wire [30:2] N5fpw6; +wire [15:0] D7fpw6; +wire [11:0] S8fpw6; +wire [31:0] Eafpw6; +wire [30:0] Qbfpw6; +wire [31:0] Idfpw6; +wire [31:0] Affpw6; +wire [31:0] Tgfpw6; +wire [31:0] Mifpw6; +wire [31:0] Fkfpw6; +wire [8:1] Xlfpw6; +wire [7:0] Vnfpw6; +wire [16:0] Ppfpw6; +wire [16:0] Hrfpw6; +wire [30:0] Zsfpw6; +wire [1:0] Sufpw6; +wire [1:0] Iwfpw6; +wire [7:0] Cyfpw6; +wire [23:0] Tzfpw6; +wire [1:0] L1gpw6; +wire [1:0] B3gpw6; +wire [63:0] R4gpw6; +wire [23:0] L6gpw6; +wire [1:0] H8gpw6; +wire [23:0] Bagpw6; +wire [31:0] Vbgpw6; +wire [31:0] Odgpw6; +wire [4:0] Jfgpw6; +wire [4:0] Dhgpw6; +wire [28:27] Ligpw6; +wire [28:27] Akgpw6; +wire [28:27] Plgpw6; +wire [28:27] Engpw6; +wire [28:2] Togpw6; +wire [28:2] Gqgpw6; +wire [28:2] Trgpw6; +wire [28:2] Gtgpw6; +wire [13:0] Tugpw6; +wire [2:0] Lwgpw6; +wire [4:0] Aygpw6; +wire [1:0] Pzgpw6; +wire [31:2] E1hpw6; +wire [2:0] R2hpw6; +wire [4:0] G4hpw6; +wire [1:0] V5hpw6; +wire [31:2] K7hpw6; +wire [6:0] X8hpw6; +wire [30:0] Iahpw6; +wire [30:26] Zbhpw6; +wire [3:0] Mdhpw6; +wire [6:0] Zehpw6; +wire [5:0] Ighpw6; +wire [31:0] Shhpw6; +wire [3:0] Cjhpw6; +wire [1:0] Pkhpw6; +wire [9:0] Gmhpw6; +wire [3:0] Tnhpw6; +wire [2:1] Aphpw6; +wire [1:0] Sqhpw6; +wire [31:4] Jshpw6; +wire [31:0] Uthpw6; +reg Evhpw6, Hwhpw6, Kxhpw6, Nyhpw6, T0ipw6, A3ipw6, A5ipw6, W6ipw6, M8ipw6, Qaipw6; +reg Tcipw6, Weipw6, Wgipw6, Xiipw6, Wkipw6, Vmipw6, Uoipw6, Uqipw6, Usipw6, Vuipw6; +reg Uwipw6, Tyipw6, V0jpw6, X2jpw6, X4jpw6, X6jpw6, Z8jpw6, Bbjpw6, Bdjpw6, Bfjpw6; +reg Vgjpw6, Qijpw6, Kkjpw6, Kmjpw6, Kojpw6, Lqjpw6, Isjpw6, Aujpw6, Yvjpw6, Wxjpw6; +reg Vzjpw6, U1kpw6, T3kpw6, S5kpw6, R7kpw6, T9kpw6, Vbkpw6, Rdkpw6, Rfkpw6, Rhkpw6; +reg Tjkpw6, Vlkpw6, Vnkpw6, Vpkpw6, Nrkpw6, Stkpw6, Jvkpw6, Oxkpw6, Pzkpw6, I1lpw6; +reg H3lpw6, L5lpw6, B7lpw6, Y8lpw6, Kalpw6, Bclpw6, Sdlpw6, Jflpw6, Ahlpw6, Rilpw6; +reg Yklpw6, Pmlpw6, Golpw6, Vplpw6, Krlpw6, Zslpw6, Oulpw6, Kwlpw6, Gylpw6, Yzlpw6; +reg O1mpw6, S3mpw6, T5mpw6, S7mpw6, R9mpw6, Qbmpw6, Pdmpw6, Ofmpw6, Qhmpw6, Mjmpw6; +reg Mlmpw6, Mnmpw6, Jpmpw6, Irmpw6, Htmpw6, Gvmpw6, Gxmpw6, Fzmpw6, E1npw6, E3npw6; +reg E5npw6, E7npw6, E9npw6, Ebnpw6, Ednpw6, Efnpw6, Ehnpw6, Ejnpw6, Elnpw6, Fnnpw6; +reg Fpnpw6, Arnpw6, Usnpw6, Uunpw6, Zwnpw6, Qynpw6, I0opw6, D2opw6, T3opw6, X5opw6; +reg Y7opw6, Z9opw6, Xbopw6, Ydopw6, Ufopw6, Shopw6, Rjopw6, Qlopw6, Qnopw6, Qpopw6; +reg Propw6, Otopw6, Ovopw6, Oxopw6, Ozopw6, O1ppw6, O3ppw6, O5ppw6, N7ppw6, N9ppw6; +reg Nbppw6, Mdppw6, Lfppw6, Lhppw6, Ljppw6, Llppw6, Lnppw6, Lpppw6, Lrppw6, Ktppw6; +reg Jvppw6, Ixppw6, Izppw6, I1qpw6, I3qpw6, I5qpw6, I7qpw6, I9qpw6, Ibqpw6, Idqpw6; +reg Nfqpw6, Ehqpw6, Cjqpw6, Xkqpw6, Gnqpw6, Gpqpw6, Nrqpw6, Utqpw6, Xvqpw6, Xxqpw6; +reg Yzqpw6, D2rpw6, I4rpw6, M6rpw6, N8rpw6, Oarpw6, Pcrpw6, Lerpw6, Hgrpw6, Hirpw6; +reg Fkrpw6, Emrpw6, Dorpw6, Cqrpw6, Bsrpw6, Aurpw6, Zvrpw6, Yxrpw6, B0spw6, A2spw6; +reg Z3spw6, Y5spw6, X7spw6, W9spw6, Vbspw6, Xdspw6, Wfspw6, Vhspw6, Ujspw6, Wlspw6; +reg Ynspw6, Ypspw6, Yrspw6, Ytspw6, Yvspw6, Yxspw6, Yzspw6, Z1tpw6, Z3tpw6, Z5tpw6; +reg Z7tpw6, Z9tpw6, Zbtpw6, Zdtpw6, Yftpw6, Xhtpw6, Wjtpw6, Vltpw6, Untpw6, Tptpw6; +reg Vrtpw6, Xttpw6, Xvtpw6, Xxtpw6, Xztpw6, X1upw6, X3upw6, X5upw6, Y7upw6, Y9upw6; +reg Ybupw6, Ydupw6, Yfupw6, Yhupw6, Yjupw6, Amupw6, Coupw6, Equpw6, Asupw6, Ztupw6; +reg Awupw6, Xxupw6, Vzupw6, T1vpw6, R3vpw6, P5vpw6, K7vpw6, F9vpw6, Gbvpw6, Ldvpw6; +reg Cfvpw6, Hhvpw6, Jjvpw6, Jlvpw6, Jnvpw6, Jpvpw6, Jrvpw6, Jtvpw6, Jvvpw6, Dxvpw6; +reg Dzvpw6, C1wpw6, C3wpw6, C5wpw6, C7wpw6, C9wpw6, Cbwpw6, Cdwpw6, Cfwpw6, Chwpw6; +reg Cjwpw6, Hlwpw6, Ymwpw6, Dpwpw6, Sqwpw6, Kswpw6, Puwpw6, Gwwpw6, Lywpw6, N0xpw6; +reg P2xpw6, P4xpw6, P6xpw6, P8xpw6, Paxpw6, Pcxpw6, Pexpw6, Jgxpw6, Iixpw6, Hkxpw6; +reg Hmxpw6, Hoxpw6, Hqxpw6, Hsxpw6, Huxpw6, Gwxpw6, Gyxpw6, L0ypw6, C2ypw6, H4ypw6; +reg W5ypw6, X7ypw6, U9ypw6, Ubypw6, Tdypw6, Sfypw6, Rhypw6, Qjypw6, Plypw6, Onypw6; +reg Npypw6, Jrypw6, Ftypw6, Evypw6, Exypw6, Ezypw6, D1zpw6, C3zpw6, B5zpw6, A7zpw6; +reg Z8zpw6, Zazpw6, Zczpw6, Zezpw6, Zgzpw6, Yizpw6, Ykzpw6, Ymzpw6, Xozpw6, Wqzpw6; +reg Vszpw6, Uuzpw6, Twzpw6, Tyzpw6, T00qw6, T20qw6, T40qw6, T60qw6, T80qw6, Ta0qw6; +reg Tc0qw6, Te0qw6, Tg0qw6, Ti0qw6, Tk0qw6, Tm0qw6, So0qw6, Rq0qw6, Ss0qw6, Tu0qw6; +reg Sw0qw6, Ry0qw6, Q01qw6, P21qw6, O41qw6, N61qw6, M81qw6, Qa1qw6, Gc1qw6, Ke1qw6; +reg Yf1qw6, Mh1qw6, Qj1qw6, Gl1qw6, Kn1qw6, Jp1qw6, Ir1qw6, Ht1qw6, Gv1qw6, Fx1qw6; +reg Ez1qw6, D12qw6, A32qw6, X42qw6, C72qw6, T82qw6, Ra2qw6, Wc2qw6, Le2qw6, Dg2qw6; +reg Uh2qw6, Nj2qw6, Fl2qw6, Kn2qw6, Bp2qw6, Gr2qw6, Bt2qw6, Xu2qw6, Bx2qw6, Ry2qw6; +reg L03qw6, P23qw6, D43qw6, V53qw6, Z73qw6, P93qw6, Tb3qw6, Nd3qw6, Bf3qw6, Pg3qw6; +reg Di3qw6, Vj3qw6, Jl3qw6, Ym3qw6, No3qw6, Cq3qw6, Rr3qw6, Wt3qw6, Nv3qw6, Sx3qw6; +reg Sz3qw6, P14qw6, P34qw6, P54qw6, Gp6ax6, Gr6ax6, Gt6ax6, Gv6ax6, Gx6ax6, Gz6ax6; +reg F17ax6, C37ax6, Z47ax6, Z67ax6, E97ax6, Va7ax6, Ad7ax6, Pe7ax6, Hg7ax6, Li7ax6; +reg Bk7ax6, Fm7ax6, Xn7ax6, Lp7ax6, Nr7ax6, Pt7ax6, Rv7ax6, Sx7ax6, Sz7ax6, S18ax6; +reg S38ax6, S58ax6, S78ax6, S98ax6, Sb8ax6, Sd8ax6, Xf8ax6, Oh8ax6, Fj8ax6, Kl8ax6; +reg Zm8ax6, Ro8ax6, Wq8ax6, Ns8ax6, Su8ax6, Hw8ax6, Zx8ax6, Vz8ax6, R19ax6, N39ax6; +reg J59ax6, G79ax6, D99ax6, Ab9ax6, Xc9ax6, Ue9ax6, Rg9ax6, Oi9ax6, Lk9ax6, Im9ax6; +reg Fo9ax6, Bq9ax6, Xr9ax6, Tt9ax6, Pv9ax6, Lx9ax6, Hz9ax6, D1aax6, Z2aax6, W4aax6; +reg T6aax6, Q8aax6, Naaax6, Kcaax6, Heaax6, Egaax6, Biaax6, Yjaax6, Vlaax6, Rnaax6; +reg Npaax6, Jraax6, Ftaax6, Bvaax6, Xwaax6, Tyaax6, P0bax6, L2bax6, H4bax6, X5bax6; +reg T7bax6, P9bax6, Lbbax6, Hdbax6, Dfbax6, Zgbax6, Vibax6, Rkbax6, Hmbax6, Xnbax6; +reg Opbax6, Krbax6, Htbax6, Evbax6, Bxbax6, Yybax6, V0cax6, S2cax6, P4cax6, M6cax6; +reg J8cax6, Facax6, Bccax6, Xdcax6, Tfcax6, Phcax6, Ljcax6, Hlcax6, Dncax6, Apcax6; +reg Xqcax6, Uscax6, Rucax6, Owcax6, Lycax6, I0dax6, F2dax6, C4dax6, Y5dax6, U7dax6; +reg Q9dax6, Mbdax6, Iddax6, Efdax6, Ahdax6, Widax6, Tkdax6, Qmdax6, Nodax6, Kqdax6; +reg Hsdax6, Eudax6, Bwdax6, Yxdax6, Vzdax6, R1eax6, N3eax6, J5eax6, F7eax6, B9eax6; +reg Xaeax6, Tceax6, Peeax6, Mgeax6, Jieax6, Gkeax6, Dmeax6, Aoeax6, Xpeax6, Ureax6; +reg Rteax6, Oveax6, Kxeax6, Gzeax6, C1fax6, Y2fax6, U4fax6, Q6fax6, M8fax6, Eafax6; +reg Sbfax6, Hdfax6, Vefax6, Zgfax6, Pifax6, Okfax6, Nmfax6, Uofax6, Sqfax6, Qsfax6; +reg Qufax6, Qwfax6, Ryfax6, J0gax6, Q2gax6, N4gax6, K6gax6, H8gax6, Eagax6, Bcgax6; +reg Ydgax6, Nfgax6, Khgax6, Hjgax6, Elgax6, Bngax6, Yogax6, Vqgax6, Ksgax6, Dugax6; +reg Wvgax6, Jxgax6, Vygax6, U0hax6, R2hax6, O4hax6, L6hax6, I8hax6, Fahax6, Cchax6; +reg Zdhax6, Wfhax6, Thhax6, Qjhax6, Nlhax6, Knhax6, Hphax6, Drhax6, Zshax6, Vuhax6; +reg Rwhax6, Nyhax6, J0iax6, G2iax6, F4iax6, E6iax6, E8iax6, Daiax6, Bciax6, Zdiax6; +reg Xfiax6, Thiax6, Ijiax6, Eliax6, Aniax6, Woiax6, Zqiax6, Ysiax6, Xuiax6, Wwiax6; +reg Wyiax6, W0jax6, W2jax6, W4jax6, V6jax6, U8jax6, Tajax6, Tcjax6, Sejax6, Sgjax6; +reg Sijax6, Skjax6, Smjax6, Sojax6, Sqjax6, Ssjax6, Sujax6, Rwjax6, Qyjax6, P0kax6; +reg O2kax6, N4kax6, M6kax6, L8kax6, Kakax6, Jckax6, Iekax6, Lgkax6, Oikax6, Rkkax6; +reg Umkax6, Tokax6, Sqkax6, Rskax6, Qukax6, Pwkax6, Oykax6, N0lax6, M2lax6, L4lax6; +reg L6lax6, I8lax6, Halax6, Eclax6, Delax6, Cglax6, Cilax6, Cklax6, Cmlax6, Bolax6; +reg Aqlax6, Zrlax6, Ytlax6, Xvlax6, Xxlax6, Xzlax6, X1max6, X3max6, W5max6, W7max6; +reg W9max6, Wbmax6, Wdmax6, Wfmax6, Whmax6, Wjmax6, Wlmax6, Wnmax6, Wpmax6, Wrmax6; +reg Vtmax6, Uvmax6, Txmax6, Szmax6, S1nax6, S3nax6, S5nax6, R7nax6, Q9nax6, Pbnax6; +reg Odnax6, Nfnax6, Nhnax6, Njnax6, Nlnax6, Nnnax6, Npnax6, Nrnax6, Ntnax6, Nvnax6; +reg Nxnax6, Nznax6, N1oax6, N3oax6, N5oax6, N7oax6, N9oax6, Mboax6, Ldoax6, Kfoax6; +reg Khoax6, Kjoax6, Kloax6, Jnoax6, Ipoax6, Hroax6, Gtoax6, Fvoax6, Fxoax6, Fzoax6; +reg F1pax6, F3pax6, E5pax6, E7pax6, E9pax6, Ebpax6, Edpax6, Efpax6, Ehpax6, Ejpax6; +reg Elpax6, Enpax6, Eppax6, Erpax6, Dtpax6, Cvpax6, Bxpax6, Azpax6, A1qax6, A3qax6; +reg A5qax6, Z6qax6, Y8qax6, Xaqax6, Wcqax6, Veqax6, Vgqax6, Viqax6, Vkqax6, Vmqax6; +reg Uoqax6, Uqqax6, Usqax6, Uuqax6, Uwqax6, Uyqax6, U0rax6, U2rax6, U4rax6, U6rax6; +reg U8rax6, Uarax6, Tcrax6, Serax6, Rgrax6, Qirax6, Qkrax6, Qmrax6, Qorax6, Pqrax6; +reg Osrax6, Ourax6, Owrax6, Oyrax6, O0sax6, O2sax6, O4sax6, O6sax6, O8sax6, Oasax6; +reg Ocsax6, Oesax6, Ngsax6, Misax6, Lksax6, Kmsax6, Kosax6, Kqsax6, Kssax6, Jusax6; +reg Iwsax6, Hysax6, G0tax6, F2tax6, F4tax6, F6tax6, F8tax6, Fatax6, Ectax6, Eetax6; +reg Egtax6, Eitax6, Ektax6, Emtax6, Eotax6, Eqtax6, Estax6, Eutax6, Ewtax6, Eytax6; +reg D0uax6, C2uax6, B4uax6, B6uax6, B8uax6, Bauax6, Acuax6, Zduax6, Yfuax6, Xhuax6; +reg Wjuax6, Wluax6, Wnuax6, Wpuax6, Wruax6, Vtuax6, Vvuax6, Vxuax6, Vzuax6, V1vax6; +reg V3vax6, V5vax6, V7vax6, V9vax6, Vbvax6, Vdvax6, Vfvax6, Uhvax6, Tjvax6, Slvax6; +reg Rnvax6, Rpvax6, Rrvax6, Rtvax6, Qvvax6, Pxvax6, Ozvax6, N1wax6, M3wax6, M5wax6; +reg M7wax6, M9wax6, Mbwax6, Ldwax6, Lfwax6, Lhwax6, Ljwax6, Llwax6, Lnwax6, Lpwax6; +reg Lrwax6, Ltwax6, Lvwax6, Lxwax6, Lzwax6, K1xax6, J3xax6, I5xax6, J7xax6, L9xax6; +reg Nbxax6, Pdxax6, Rfxax6, Thxax6, Ujxax6, Vlxax6, Wnxax6, Xpxax6, Xrxax6, Wtxax6; +reg Vvxax6, Vxxax6, Vzxax6, V1yax6, U3yax6, T5yax6, S7yax6, R9yax6, Sbyax6, Pdyax6; +reg Mfyax6, Ohyax6, Qjyax6, Slyax6, Unyax6, Wpyax6, Yryax6, Auyax6, Cwyax6, Eyyax6; +reg G0zax6, I2zax6, H4zax6, J6zax6, L8zax6, Nazax6, Pczax6, Rezax6, Tgzax6, Uizax6; +reg Vkzax6, Wmzax6, Xozax6, Yqzax6, Zszax6, Avzax6, Cxzax6, Czzax6, C10bx6, C30bx6; +reg C50bx6, D70bx6, E90bx6, Fb0bx6, Gd0bx6, Hf0bx6, Ih0bx6, Jj0bx6, Kl0bx6, Ln0bx6; +reg Mp0bx6, Nr0bx6, Ot0bx6, Pv0bx6, Qx0bx6, Rz0bx6, S11bx6, U31bx6, W51bx6, Z71bx6; +reg Ca1bx6, Fc1bx6, Ie1bx6, Lg1bx6, Oi1bx6, Rk1bx6, Um1bx6, Xo1bx6, Ar1bx6, Dt1bx6; +reg Gv1bx6, Jx1bx6, Mz1bx6, P12bx6, S32bx6, V52bx6, Y72bx6, Aa2bx6, Cc2bx6, Fe2bx6; +reg Ig2bx6, Li2bx6, Ok2bx6, Rm2bx6, Uo2bx6, Xq2bx6, At2bx6, Dv2bx6, Gx2bx6, Jz2bx6; +reg M13bx6, P33bx6, S53bx6, V73bx6, Y93bx6, Bc3bx6, Ee3bx6, Hg3bx6, Ki3bx6, Mk3bx6; +reg Om3bx6, Qo3bx6, Sq3bx6, Us3bx6, Wu3bx6, Yw3bx6, Az3bx6, C14bx6, E34bx6, G54bx6; +reg I74bx6, K94bx6, Mb4bx6, Od4bx6, Qf4bx6, Sh4bx6, Uj4bx6, Tl4bx6, Sn4bx6, Up4bx6; +reg Wr4bx6, Yt4bx6, Aw4bx6, Cy4bx6, E05bx6, G25bx6, I45bx6, K65bx6, M85bx6, Oa5bx6; +reg Qc5bx6, Pe5bx6, Og5bx6, Ni5bx6, Nk5bx6, Nm5bx6, No5bx6, Nq5bx6, Ms5bx6, Nu5bx6; +reg Mw5bx6, Jy5bx6, J06bx6, F26bx6, D46bx6, D66bx6, D86bx6, Da6bx6, Dc6bx6, De6bx6; +reg Dg6bx6, Di6bx6, Dk6bx6, Dm6bx6, Do6bx6, Dq6bx6, Cs6bx6, Bu6bx6, Gw6bx6, Xx6bx6; +reg C07bx6, C27bx6, C47bx6, C67bx6, C87bx6, Ca7bx6, Cc7bx6, Ce7bx6, Cg7bx6, Ci7bx6; +reg Ck7bx6, Cm7bx6, Co7bx6, Cq7bx6, Zr7bx6, Zt7bx6, Zv7bx6, Zx7bx6, Zz7bx6, Z18bx6; +reg Z38bx6, Z58bx6, Z78bx6, Z98bx6, Zb8bx6, Zd8bx6, Zf8bx6, Zh8bx6, Zj8bx6, Zl8bx6; +reg Zn8bx6, Zp8bx6, Zr8bx6, Yt8bx6, Xv8bx6, Ux8bx6, Rz8bx6, N19bx6, J39bx6, F59bx6; +reg B79bx6, Q89bx6, Ua9bx6, Tc9bx6, Pe9bx6, Lg9bx6, Hi9bx6, Dk9bx6, Zl9bx6, Vn9bx6; +reg Jp9bx6, Lr9bx6, Nt9bx6, Nv9bx6, Ox9bx6, Pz9bx6, R1abx6, T3abx6, V5abx6, X7abx6; +reg Z9abx6, Bcabx6, Ceabx6, Ggabx6, Liabx6, Qkabx6, Nmabx6, Koabx6, Hqabx6, Esabx6; +reg Buabx6, Yvabx6, Nxabx6, Kzabx6, L1bbx6, L3bbx6, N5bbx6, P7bbx6, L9bbx6, Pbbbx6; +reg Pdbbx6, Ufbbx6, Lhbbx6, Qjbbx6, Nlbbx6, Knbbx6, Hpbbx6, Erbbx6, Btbbx6, Yubbx6; +reg Nwbbx6, Nybbx6, N0cbx6, S2cbx6, J4cbx6, A6cbx6, F8cbx6, Facbx6, Cccbx6, Zdcbx6; +reg Wfcbx6, Thcbx6, Qjcbx6, Nlcbx6, Cncbx6, Hpcbx6, Drcbx6, Itcbx6, Fvcbx6, Cxcbx6; +reg Zycbx6, W0dbx6, T2dbx6, Q4dbx6, F6dbx6, F8dbx6, Kadbx6, Bcdbx6, Sddbx6, Jfdbx6; +reg Ahdbx6, Fjdbx6, Fldbx6, Cndbx6, Zodbx6, Wqdbx6, Tsdbx6, Qudbx6, Nwdbx6, Cydbx6; +reg H0ebx6, M2ebx6, M4ebx6, J6ebx6, G8ebx6, Daebx6, Acebx6, Xdebx6, Ufebx6, Jhebx6; +reg Ojebx6, Tlebx6, Tnebx6, Tpebx6, Trebx6, Ttebx6, Tvebx6, Txebx6, Tzebx6, T1fbx6; +reg T3fbx6, T5fbx6, T7fbx6, T9fbx6, Tbfbx6, Tdfbx6, Tffbx6, Thfbx6, Tjfbx6, Qlfbx6; +reg Nnfbx6, Kpfbx6, Hrfbx6, Etfbx6, Bvfbx6, Qwfbx6, Vyfbx6, Y0gbx6, B3gbx6, C5gbx6; +reg D7gbx6, F9gbx6, Hbgbx6, Jdgbx6, Lfgbx6, Nhgbx6, Pjgbx6, Rlgbx6, Tngbx6, Vpgbx6; +reg Urgbx6, Ztgbx6, Zvgbx6, Wxgbx6, Tzgbx6, Q1hbx6, N3hbx6, K5hbx6, H7hbx6, W8hbx6; +reg Wahbx6, Tchbx6, Qehbx6, Eghbx6, Gihbx6, Ikhbx6, Imhbx6, Johbx6, Kqhbx6, Kshbx6; +reg Muhbx6, Owhbx6, Oyhbx6, P0ibx6, Q2ibx6, F4ibx6, X5ibx6, R7ibx6, R9ibx6, Rbibx6; +reg Rdibx6, Rfibx6, Rhibx6, Rjibx6, Rlibx6, Rnibx6, Rpibx6, Rribx6, Rtibx6, Rvibx6; +reg Qxibx6, Pzibx6, O1jbx6, N3jbx6, J5jbx6, F7jbx6, B9jbx6, Xajbx6, Tcjbx6, Pejbx6; +reg Pgjbx6, Rijbx6, Tkjbx6, Tmjbx6, Uojbx6, Vqjbx6, Usjbx6, Tujbx6, Swjbx6, Syjbx6; +reg S0kbx6, T2kbx6, S4kbx6, T6kbx6, T8kbx6, Qakbx6, Nckbx6, Rekbx6, Tgkbx6, Tikbx6; +reg Pkkbx6, Lmkbx6, Cokbx6, Dqkbx6; +wire [33:0] Vrkbx6; +wire [31:0] Ntkbx6; +wire [31:0] Nvkbx6; +wire [33:0] Nxkbx6; +wire [33:0] Ozkbx6; + +assign HPROT[1] = 1'b1; +assign HBURST[2] = 1'b0; +assign HBURST[1] = 1'b0; +assign HBURST[0] = 1'b0; +assign HMASTLOCK = 1'b0; +assign HSIZE[2] = 1'b0; +assign HTRANS[0] = 1'b0; +assign nTDOEN = 1'b0; +assign WICENACK = 1'b0; +assign TDO = 1'b0; +assign WICSENSE[0] = 1'b0; +assign WICSENSE[1] = 1'b0; +assign WICSENSE[2] = 1'b0; +assign WICSENSE[3] = 1'b0; +assign WICSENSE[4] = 1'b0; +assign WICSENSE[5] = 1'b0; +assign WICSENSE[6] = 1'b0; +assign WICSENSE[7] = 1'b0; +assign WICSENSE[8] = 1'b0; +assign WICSENSE[9] = 1'b0; +assign WICSENSE[10] = 1'b0; +assign WICSENSE[11] = 1'b0; +assign WICSENSE[12] = 1'b0; +assign WICSENSE[13] = 1'b0; +assign WICSENSE[14] = 1'b0; +assign WICSENSE[15] = 1'b0; +assign WICSENSE[16] = 1'b0; +assign WICSENSE[17] = 1'b0; +assign WICSENSE[18] = 1'b0; +assign WICSENSE[19] = 1'b0; +assign WICSENSE[20] = 1'b0; +assign WICSENSE[21] = 1'b0; +assign WICSENSE[22] = 1'b0; +assign WICSENSE[23] = 1'b0; +assign WICSENSE[24] = 1'b0; +assign WICSENSE[25] = 1'b0; +assign WICSENSE[26] = 1'b0; +assign WICSENSE[27] = 1'b0; +assign WICSENSE[28] = 1'b0; +assign WICSENSE[29] = 1'b0; +assign WICSENSE[30] = 1'b0; +assign WICSENSE[31] = 1'b0; +assign WICSENSE[32] = 1'b0; +assign WICSENSE[33] = 1'b0; +assign WAKEUP = 1'b0; +assign Qmdhu6 = Evhpw6; +assign Pndhu6 = Hwhpw6; +assign Oodhu6 = Kxhpw6; +assign O5ohu6 = Nyhpw6; +assign Gwnhu6 = T0ipw6; +assign X0ohu6 = A3ipw6; +assign Q8nhu6 = A5ipw6; +assign Iahpw6[0] = W6ipw6; +assign Shhpw6[1] = M8ipw6; +assign Zvdpw6 = (!Qaipw6); +assign Odgpw6[30] = Tcipw6; +assign vis_r1_o[30] = Weipw6; +assign H8gpw6[0] = Wgipw6; +assign Ppfpw6[3] = Xiipw6; +assign D7fpw6[3] = Wkipw6; +assign X3fpw6[3] = Vmipw6; +assign vis_r11_o[30] = Uoipw6; +assign vis_r11_o[28] = Uqipw6; +assign Vbgpw6[28] = Usipw6; +assign vis_r11_o[4] = Vuipw6; +assign vis_r0_o[4] = Uwipw6; +assign Bagpw6[12] = Tyipw6; +assign Tzfpw6[12] = V0jpw6; +assign vis_r11_o[20] = X2jpw6; +assign vis_psp_o[18] = X4jpw6; +assign Bagpw6[20] = X6jpw6; +assign Tzfpw6[20] = Z8jpw6; +assign vis_r11_o[12] = Bbjpw6; +assign vis_psp_o[10] = Bdjpw6; +assign vis_apsr_o[2] = Bfjpw6; +assign H6ghu6 = Vgjpw6; +assign vis_apsr_o[1] = Qijpw6; +assign vis_r11_o[29] = Kkjpw6; +assign vis_r8_o[29] = Kmjpw6; +assign Vbgpw6[29] = Kojpw6; +assign vis_pc_o[28] = Lqjpw6; +assign Vchhu6 = Isjpw6; +assign Cyfpw6[6] = Aujpw6; +assign Cyfpw6[7] = Yvjpw6; +assign H2fpw6[1] = Wxjpw6; +assign Ivfhu6 = Vzjpw6; +assign S8fpw6[3] = U1kpw6; +assign vis_r11_o[5] = T3kpw6; +assign vis_r8_o[5] = S5kpw6; +assign Bagpw6[13] = R7kpw6; +assign Tzfpw6[13] = T9kpw6; +assign vis_ipsr_o[5] = Vbkpw6; +assign vis_r11_o[21] = Rdkpw6; +assign vis_psp_o[19] = Rfkpw6; +assign Bagpw6[21] = Rhkpw6; +assign Tzfpw6[21] = Tjkpw6; +assign vis_r11_o[13] = Vlkpw6; +assign vis_psp_o[11] = Vnkpw6; +assign Hwmhu6 = Vpkpw6; +assign Uthpw6[24] = Nrkpw6; +assign Iahpw6[23] = Stkpw6; +assign Shhpw6[24] = Jvkpw6; +assign Vbgpw6[24] = Oxkpw6; +assign vis_tbit_o = Pzkpw6; +assign Fkfpw6[0] = I1lpw6; +assign Uthpw6[0] = H3lpw6; +assign Tonhu6 = L5lpw6; +assign Yenhu6 = B7lpw6; +assign Hknhu6 = Y8lpw6; +assign Ighpw6[2] = Kalpw6; +assign Ighpw6[0] = Bclpw6; +assign Ighpw6[1] = Sdlpw6; +assign Ighpw6[3] = Jflpw6; +assign Fnnhu6 = Ahlpw6; +assign Mdhpw6[3] = Rilpw6; +assign Ighpw6[4] = Yklpw6; +assign Ighpw6[5] = Pmlpw6; +assign Mdhpw6[2] = Golpw6; +assign Mdhpw6[1] = Vplpw6; +assign Mdhpw6[0] = Krlpw6; +assign Ulnhu6 = Zslpw6; +assign Pinhu6 = Oulpw6; +assign B7nhu6 = Kwlpw6; +assign Ubnhu6 = Gylpw6; +assign Iahpw6[6] = Yzlpw6; +assign Shhpw6[7] = O1mpw6; +assign R4gpw6[9] = S3mpw6; +assign Ppfpw6[1] = T5mpw6; +assign D7fpw6[1] = S7mpw6; +assign S8fpw6[1] = R9mpw6; +assign vis_r11_o[3] = Qbmpw6; +assign vis_r8_o[3] = Pdmpw6; +assign Bagpw6[11] = Ofmpw6; +assign vis_ipsr_o[3] = Qhmpw6; +assign vis_r11_o[27] = Mjmpw6; +assign vis_r8_o[27] = Mlmpw6; +assign Ikghu6 = Mnmpw6; +assign Ppfpw6[2] = Jpmpw6; +assign D7fpw6[2] = Irmpw6; +assign X3fpw6[2] = Htmpw6; +assign vis_r0_o[30] = Gvmpw6; +assign vis_r0_o[3] = Gxmpw6; +assign vis_r0_o[5] = Fzmpw6; +assign vis_r0_o[27] = E1npw6; +assign vis_r0_o[29] = E3npw6; +assign vis_r0_o[21] = E5npw6; +assign vis_r0_o[20] = E7npw6; +assign vis_r0_o[13] = E9npw6; +assign vis_r0_o[12] = Ebnpw6; +assign vis_r0_o[28] = Ednpw6; +assign vis_r11_o[31] = Efnpw6; +assign vis_r0_o[31] = Ehnpw6; +assign vis_r1_o[31] = Ejnpw6; +assign H8gpw6[1] = Elnpw6; +assign Stdhu6 = Fnnpw6; +assign E5ehu6 = Fpnpw6; +assign vis_apsr_o[3] = Arnpw6; +assign Fkfpw6[31] = Usnpw6; +assign Uthpw6[31] = Uunpw6; +assign Iahpw6[30] = Zwnpw6; +assign Vmdpw6 = (!Qynpw6); +assign Fanhu6 = I0opw6; +assign Iahpw6[4] = D2opw6; +assign Shhpw6[5] = T3opw6; +assign Bagpw6[5] = X5opw6; +assign Tzfpw6[5] = Y7opw6; +assign Fsdhu6 = Z9opw6; +assign SLEEPHOLDACKn = Xbopw6; +assign E6phu6 = (!Xbopw6); +assign C0ehu6 = Ydopw6; +assign Cyfpw6[3] = Ufopw6; +assign H2fpw6[0] = Shopw6; +assign vis_r9_o[4] = Rjopw6; +assign vis_r9_o[30] = Qlopw6; +assign vis_r9_o[31] = Qnopw6; +assign vis_r9_o[3] = Qpopw6; +assign vis_r9_o[5] = Propw6; +assign vis_r9_o[27] = Otopw6; +assign vis_r9_o[29] = Ovopw6; +assign vis_r9_o[21] = Oxopw6; +assign vis_r9_o[20] = Ozopw6; +assign vis_r9_o[13] = O1ppw6; +assign vis_r9_o[12] = O3ppw6; +assign vis_r5_o[4] = O5ppw6; +assign vis_r5_o[30] = N7ppw6; +assign vis_r5_o[31] = N9ppw6; +assign vis_r5_o[3] = Nbppw6; +assign vis_r5_o[5] = Mdppw6; +assign vis_r5_o[27] = Lfppw6; +assign vis_r5_o[29] = Lhppw6; +assign vis_r5_o[21] = Ljppw6; +assign vis_r5_o[20] = Llppw6; +assign vis_r5_o[13] = Lnppw6; +assign vis_r5_o[12] = Lpppw6; +assign vis_r1_o[4] = Lrppw6; +assign vis_r1_o[3] = Ktppw6; +assign vis_r1_o[5] = Jvppw6; +assign vis_r1_o[27] = Ixppw6; +assign vis_r1_o[29] = Izppw6; +assign vis_r1_o[21] = I1qpw6; +assign vis_r1_o[20] = I3qpw6; +assign vis_r1_o[13] = I5qpw6; +assign vis_r1_o[12] = I7qpw6; +assign vis_r1_o[28] = I9qpw6; +assign Fkfpw6[28] = Ibqpw6; +assign Uthpw6[28] = Idqpw6; +assign Iahpw6[27] = Nfqpw6; +assign Zbhpw6[28] = Ehqpw6; +assign Punhu6 = Cjqpw6; +assign CDBGPWRUPREQ = Xkqpw6; +assign W9ohu6 = (!Xkqpw6); +assign Iqnhu6 = Gnqpw6; +assign Cjhpw6[0] = Gpqpw6; +assign Cjhpw6[1] = Nrqpw6; +assign G2ohu6 = Utqpw6; +assign Q7ohu6 = Xvqpw6; +assign Lznhu6 = Xxqpw6; +assign Shhpw6[31] = Yzqpw6; +assign Shhpw6[28] = D2rpw6; +assign Shhpw6[0] = I4rpw6; +assign Bagpw6[0] = M6rpw6; +assign Tzfpw6[0] = N8rpw6; +assign Tzfpw6[1] = Oarpw6; +assign vis_ipsr_o[1] = Pcrpw6; +assign vis_pc_o[0] = Lerpw6; +assign S1ehu6 = Hgrpw6; +assign H4ghu6 = Hirpw6; +assign S8fpw6[5] = Fkrpw6; +assign vis_r0_o[7] = Emrpw6; +assign vis_r1_o[7] = Dorpw6; +assign vis_r9_o[7] = Cqrpw6; +assign vis_r11_o[7] = Bsrpw6; +assign vis_r5_o[7] = Aurpw6; +assign vis_r8_o[7] = Zvrpw6; +assign Odgpw6[15] = Yxrpw6; +assign vis_r0_o[6] = B0spw6; +assign vis_r1_o[6] = A2spw6; +assign vis_r9_o[6] = Z3spw6; +assign vis_r11_o[6] = Y5spw6; +assign vis_r5_o[6] = X7spw6; +assign vis_r8_o[6] = W9spw6; +assign R4gpw6[10] = Vbspw6; +assign Ppfpw6[0] = Xdspw6; +assign D7fpw6[0] = Wfspw6; +assign X3fpw6[0] = Vhspw6; +assign Bagpw6[16] = Ujspw6; +assign Tzfpw6[16] = Wlspw6; +assign vis_r0_o[24] = Ynspw6; +assign vis_r1_o[24] = Ypspw6; +assign vis_r9_o[24] = Yrspw6; +assign vis_r11_o[24] = Ytspw6; +assign vis_r5_o[24] = Yvspw6; +assign vis_r8_o[24] = Yxspw6; +assign Jfgpw6[0] = Yzspw6; +assign vis_r0_o[25] = Z1tpw6; +assign vis_r1_o[25] = Z3tpw6; +assign vis_r9_o[25] = Z5tpw6; +assign vis_r11_o[25] = Z7tpw6; +assign vis_r5_o[25] = Z9tpw6; +assign vis_psp_o[23] = Zbtpw6; +assign Yyghu6 = Zdtpw6; +assign vis_r9_o[2] = Yftpw6; +assign vis_r11_o[2] = Xhtpw6; +assign vis_r5_o[2] = Wjtpw6; +assign vis_r0_o[2] = Vltpw6; +assign vis_r1_o[2] = Untpw6; +assign Bagpw6[10] = Tptpw6; +assign Tzfpw6[10] = Vrtpw6; +assign vis_r0_o[26] = Xttpw6; +assign vis_r1_o[26] = Xvtpw6; +assign vis_r9_o[26] = Xxtpw6; +assign vis_r11_o[26] = Xztpw6; +assign vis_r5_o[26] = X1upw6; +assign vis_r8_o[26] = X3upw6; +assign Vbgpw6[26] = X5upw6; +assign vis_r0_o[17] = Y7upw6; +assign vis_r1_o[17] = Y9upw6; +assign vis_r9_o[17] = Ybupw6; +assign vis_r11_o[17] = Ydupw6; +assign vis_r5_o[17] = Yfupw6; +assign vis_psp_o[15] = Yhupw6; +assign Bagpw6[17] = Yjupw6; +assign Tzfpw6[17] = Amupw6; +assign Tzfpw6[23] = Coupw6; +assign vis_pc_o[6] = Equpw6; +assign Fkfpw6[7] = Asupw6; +assign Jfgpw6[4] = Ztupw6; +assign vis_pc_o[30] = Awupw6; +assign Cyfpw6[1] = Xxupw6; +assign Cyfpw6[0] = Vzupw6; +assign Cyfpw6[4] = T1vpw6; +assign Cyfpw6[5] = R3vpw6; +assign Y7ghu6 = P5vpw6; +assign DBGRESTARTED = K7vpw6; +assign Daohu6 = (!K7vpw6); +assign V9ghu6 = F9vpw6; +assign Uthpw6[19] = Gbvpw6; +assign Iahpw6[18] = Ldvpw6; +assign Shhpw6[19] = Cfvpw6; +assign Bagpw6[19] = Hhvpw6; +assign vis_r0_o[19] = Jjvpw6; +assign vis_r1_o[19] = Jlvpw6; +assign vis_r9_o[19] = Jnvpw6; +assign vis_r11_o[19] = Jpvpw6; +assign vis_r5_o[19] = Jrvpw6; +assign vis_psp_o[17] = Jtvpw6; +assign Svdpw6 = (!Jvvpw6); +assign D7fpw6[14] = Dxvpw6; +assign H2fpw6[2] = Dzvpw6; +assign Npdhu6 = C1wpw6; +assign Vbgpw6[0] = C3wpw6; +assign vis_r0_o[16] = C5wpw6; +assign vis_r1_o[16] = C7wpw6; +assign vis_r9_o[16] = C9wpw6; +assign vis_r11_o[16] = Cbwpw6; +assign vis_r5_o[16] = Cdwpw6; +assign vis_psp_o[14] = Cfwpw6; +assign Fkfpw6[16] = Chwpw6; +assign Uthpw6[16] = Cjwpw6; +assign Iahpw6[15] = Hlwpw6; +assign Shhpw6[16] = Ymwpw6; +assign Jshpw6[16] = Dpwpw6; +assign X8hpw6[6] = Sqwpw6; +assign Uthpw6[18] = Kswpw6; +assign Iahpw6[17] = Puwpw6; +assign Shhpw6[18] = Gwwpw6; +assign Bagpw6[18] = Lywpw6; +assign Tzfpw6[18] = N0xpw6; +assign vis_r0_o[18] = P2xpw6; +assign vis_r1_o[18] = P4xpw6; +assign vis_r9_o[18] = P6xpw6; +assign vis_r11_o[18] = P8xpw6; +assign vis_r5_o[18] = Paxpw6; +assign vis_psp_o[16] = Pcxpw6; +assign Aghhu6 = Pexpw6; +assign D7fpw6[4] = Jgxpw6; +assign X3fpw6[1] = Iixpw6; +assign vis_r0_o[10] = Hkxpw6; +assign vis_r1_o[10] = Hmxpw6; +assign vis_r9_o[10] = Hoxpw6; +assign vis_r11_o[10] = Hqxpw6; +assign vis_r5_o[10] = Hsxpw6; +assign vis_psp_o[8] = Huxpw6; +assign Fkfpw6[10] = Gwxpw6; +assign Uthpw6[10] = Gyxpw6; +assign Iahpw6[9] = L0ypw6; +assign Shhpw6[10] = C2ypw6; +assign Jshpw6[10] = H4ypw6; +assign Jfgpw6[2] = W5ypw6; +assign Ntfhu6 = X7ypw6; +assign D7fpw6[15] = U9ypw6; +assign S8fpw6[4] = Ubypw6; +assign vis_r0_o[1] = Tdypw6; +assign vis_r1_o[1] = Sfypw6; +assign vis_r9_o[1] = Rhypw6; +assign vis_r11_o[1] = Qjypw6; +assign vis_r5_o[1] = Plypw6; +assign vis_r14_o[1] = Onypw6; +assign vis_control_o = Npypw6; +assign Vrfhu6 = Jrypw6; +assign vis_psp_o[0] = Ftypw6; +assign vis_psp_o[29] = Evypw6; +assign vis_psp_o[28] = Exypw6; +assign vis_psp_o[2] = Ezypw6; +assign vis_psp_o[1] = D1zpw6; +assign vis_psp_o[3] = C3zpw6; +assign vis_psp_o[4] = B5zpw6; +assign vis_psp_o[5] = A7zpw6; +assign vis_psp_o[22] = Z8zpw6; +assign vis_psp_o[24] = Zazpw6; +assign vis_psp_o[25] = Zczpw6; +assign vis_psp_o[27] = Zezpw6; +assign vis_msp_o[0] = Zgzpw6; +assign vis_msp_o[29] = Yizpw6; +assign vis_msp_o[28] = Ykzpw6; +assign vis_msp_o[2] = Ymzpw6; +assign vis_msp_o[1] = Xozpw6; +assign vis_msp_o[3] = Wqzpw6; +assign vis_msp_o[4] = Vszpw6; +assign vis_msp_o[5] = Uuzpw6; +assign vis_msp_o[22] = Twzpw6; +assign vis_msp_o[24] = Tyzpw6; +assign vis_msp_o[25] = T00qw6; +assign vis_msp_o[27] = T20qw6; +assign vis_msp_o[23] = T40qw6; +assign vis_msp_o[19] = T60qw6; +assign vis_msp_o[18] = T80qw6; +assign vis_msp_o[17] = Ta0qw6; +assign vis_msp_o[16] = Tc0qw6; +assign vis_msp_o[15] = Te0qw6; +assign vis_msp_o[14] = Tg0qw6; +assign vis_msp_o[11] = Ti0qw6; +assign vis_msp_o[10] = Tk0qw6; +assign vis_msp_o[8] = Tm0qw6; +assign vis_msp_o[6] = So0qw6; +assign Bagpw6[8] = Rq0qw6; +assign Tzfpw6[8] = Ss0qw6; +assign vis_r0_o[8] = Tu0qw6; +assign vis_r1_o[8] = Sw0qw6; +assign vis_r9_o[8] = Ry0qw6; +assign vis_r11_o[8] = Q01qw6; +assign vis_r5_o[8] = P21qw6; +assign vis_psp_o[6] = O41qw6; +assign Fkfpw6[8] = N61qw6; +assign Uthpw6[8] = M81qw6; +assign Iahpw6[7] = Qa1qw6; +assign Shhpw6[8] = Gc1qw6; +assign Jshpw6[8] = Ke1qw6; +assign Jshpw6[9] = Yf1qw6; +assign Uthpw6[9] = Mh1qw6; +assign Iahpw6[8] = Qj1qw6; +assign Shhpw6[9] = Gl1qw6; +assign Fkfpw6[9] = Kn1qw6; +assign vis_r0_o[9] = Jp1qw6; +assign vis_r1_o[9] = Ir1qw6; +assign vis_r9_o[9] = Ht1qw6; +assign vis_r11_o[9] = Gv1qw6; +assign vis_r5_o[9] = Fx1qw6; +assign vis_r7_o[9] = Ez1qw6; +assign vis_pc_o[27] = D12qw6; +assign vis_pc_o[29] = A32qw6; +assign Uthpw6[30] = X42qw6; +assign Iahpw6[29] = C72qw6; +assign Zbhpw6[30] = T82qw6; +assign Shhpw6[30] = Ra2qw6; +assign Jshpw6[30] = Wc2qw6; +assign X8hpw6[1] = Le2qw6; +assign A2nhu6 = Dg2qw6; +assign R6hhu6 = Uh2qw6; +assign D8hhu6 = Nj2qw6; +assign Uthpw6[25] = Fl2qw6; +assign Iahpw6[24] = Kn2qw6; +assign Shhpw6[25] = Bp2qw6; +assign Jehhu6 = Gr2qw6; +assign P9hhu6 = Bt2qw6; +assign Uthpw6[3] = Xu2qw6; +assign Iahpw6[2] = Bx2qw6; +assign Jdnhu6 = Ry2qw6; +assign Shhpw6[3] = L03qw6; +assign Tnhpw6[3] = P23qw6; +assign X8hpw6[3] = D43qw6; +assign Uthpw6[4] = V53qw6; +assign Iahpw6[3] = Z73qw6; +assign Shhpw6[4] = P93qw6; +assign Cynhu6 = Tb3qw6; +assign Jshpw6[7] = Nd3qw6; +assign Jshpw6[5] = Bf3qw6; +assign Jshpw6[4] = Pg3qw6; +assign X8hpw6[4] = Di3qw6; +assign Tnhpw6[1] = Vj3qw6; +assign Jshpw6[18] = Jl3qw6; +assign Jshpw6[19] = Ym3qw6; +assign Jshpw6[24] = No3qw6; +assign Jshpw6[29] = Cq3qw6; +assign Uthpw6[29] = Rr3qw6; +assign Iahpw6[28] = Wt3qw6; +assign Shhpw6[29] = Nv3qw6; +assign Fkfpw6[29] = Sx3qw6; +assign Yyfhu6 = Sz3qw6; +assign D7fpw6[13] = P14qw6; +assign vis_r9_o[23] = P34qw6; +assign vis_r11_o[23] = P54qw6; +assign vis_msp_o[21] = Gp6ax6; +assign vis_psp_o[21] = Gr6ax6; +assign vis_r5_o[23] = Gt6ax6; +assign vis_r0_o[23] = Gv6ax6; +assign vis_r1_o[23] = Gx6ax6; +assign L1gpw6[1] = Gz6ax6; +assign Zlghu6 = F17ax6; +assign vis_pc_o[22] = C37ax6; +assign Fkfpw6[15] = Z47ax6; +assign Uthpw6[15] = Z67ax6; +assign Iahpw6[14] = E97ax6; +assign Shhpw6[15] = Va7ax6; +assign Jshpw6[15] = Ad7ax6; +assign X8hpw6[2] = Pe7ax6; +assign Uthpw6[2] = Hg7ax6; +assign Iahpw6[1] = Li7ax6; +assign Shhpw6[2] = Bk7ax6; +assign Hbhhu6 = Fm7ax6; +assign Tnhpw6[2] = Xn7ax6; +assign Ftghu6 = Lp7ax6; +assign Tzfpw6[19] = Nr7ax6; +assign Tzfpw6[11] = Pt7ax6; +assign Tzfpw6[6] = Rv7ax6; +assign vis_r0_o[14] = Sx7ax6; +assign vis_r1_o[14] = Sz7ax6; +assign vis_r9_o[14] = S18ax6; +assign vis_r11_o[14] = S38ax6; +assign vis_r5_o[14] = S58ax6; +assign vis_msp_o[12] = S78ax6; +assign vis_psp_o[12] = S98ax6; +assign Fkfpw6[14] = Sb8ax6; +assign Uthpw6[14] = Sd8ax6; +assign Iahpw6[13] = Xf8ax6; +assign Iahpw6[12] = Oh8ax6; +assign Shhpw6[13] = Fj8ax6; +assign Jshpw6[13] = Kl8ax6; +assign X8hpw6[5] = Zm8ax6; +assign Uthpw6[12] = Ro8ax6; +assign Iahpw6[11] = Wq8ax6; +assign Shhpw6[12] = Ns8ax6; +assign Jshpw6[12] = Su8ax6; +assign X8hpw6[0] = Hw8ax6; +assign Lwgpw6[0] = Zx8ax6; +assign Lwgpw6[2] = Vz8ax6; +assign Lwgpw6[1] = R19ax6; +assign V5hpw6[0] = N39ax6; +assign K7hpw6[30] = J59ax6; +assign K7hpw6[25] = G79ax6; +assign K7hpw6[24] = D99ax6; +assign K7hpw6[19] = Ab9ax6; +assign K7hpw6[18] = Xc9ax6; +assign K7hpw6[16] = Ue9ax6; +assign K7hpw6[15] = Rg9ax6; +assign K7hpw6[13] = Oi9ax6; +assign K7hpw6[12] = Lk9ax6; +assign K7hpw6[10] = Im9ax6; +assign K7hpw6[8] = Fo9ax6; +assign K7hpw6[7] = Bq9ax6; +assign K7hpw6[5] = Xr9ax6; +assign K7hpw6[4] = Tt9ax6; +assign K7hpw6[3] = Pv9ax6; +assign K7hpw6[2] = Lx9ax6; +assign V5hpw6[1] = Hz9ax6; +assign Pzgpw6[0] = D1aax6; +assign E1hpw6[30] = Z2aax6; +assign E1hpw6[25] = W4aax6; +assign E1hpw6[24] = T6aax6; +assign E1hpw6[19] = Q8aax6; +assign E1hpw6[18] = Naaax6; +assign E1hpw6[16] = Kcaax6; +assign E1hpw6[15] = Heaax6; +assign E1hpw6[13] = Egaax6; +assign E1hpw6[12] = Biaax6; +assign E1hpw6[10] = Yjaax6; +assign E1hpw6[8] = Vlaax6; +assign E1hpw6[7] = Rnaax6; +assign E1hpw6[5] = Npaax6; +assign E1hpw6[4] = Jraax6; +assign E1hpw6[3] = Ftaax6; +assign E1hpw6[2] = Bvaax6; +assign Pzgpw6[1] = Xwaax6; +assign R2hpw6[0] = Tyaax6; +assign R2hpw6[2] = P0bax6; +assign R2hpw6[1] = L2bax6; +assign Kohhu6 = H4bax6; +assign G4hpw6[1] = X5bax6; +assign G4hpw6[2] = T7bax6; +assign G4hpw6[3] = P9bax6; +assign G4hpw6[4] = Lbbax6; +assign Aygpw6[1] = Hdbax6; +assign Aygpw6[2] = Dfbax6; +assign Aygpw6[3] = Zgbax6; +assign Aygpw6[4] = Vibax6; +assign Dhgpw6[2] = Rkbax6; +assign Dhgpw6[4] = Hmbax6; +assign Dhgpw6[1] = Xnbax6; +assign Gtgpw6[2] = Opbax6; +assign Engpw6[27] = Krbax6; +assign Gtgpw6[25] = Htbax6; +assign Gtgpw6[24] = Evbax6; +assign Gtgpw6[19] = Bxbax6; +assign Gtgpw6[18] = Yybax6; +assign Gtgpw6[16] = V0cax6; +assign Gtgpw6[15] = S2cax6; +assign Gtgpw6[13] = P4cax6; +assign Gtgpw6[12] = M6cax6; +assign Gtgpw6[10] = J8cax6; +assign Gtgpw6[8] = Facax6; +assign Gtgpw6[7] = Bccax6; +assign Gtgpw6[5] = Xdcax6; +assign Gtgpw6[4] = Tfcax6; +assign Gtgpw6[3] = Phcax6; +assign Smhhu6 = Ljcax6; +assign Togpw6[2] = Hlcax6; +assign Ligpw6[27] = Dncax6; +assign Togpw6[25] = Apcax6; +assign Togpw6[24] = Xqcax6; +assign Togpw6[19] = Uscax6; +assign Togpw6[18] = Rucax6; +assign Togpw6[16] = Owcax6; +assign Togpw6[15] = Lycax6; +assign Togpw6[13] = I0dax6; +assign Togpw6[12] = F2dax6; +assign Togpw6[10] = C4dax6; +assign Togpw6[8] = Y5dax6; +assign Togpw6[7] = U7dax6; +assign Togpw6[5] = Q9dax6; +assign Togpw6[4] = Mbdax6; +assign Togpw6[3] = Iddax6; +assign Qhhhu6 = Efdax6; +assign Gqgpw6[2] = Ahdax6; +assign Akgpw6[27] = Widax6; +assign Gqgpw6[25] = Tkdax6; +assign Gqgpw6[24] = Qmdax6; +assign Gqgpw6[19] = Nodax6; +assign Gqgpw6[18] = Kqdax6; +assign Gqgpw6[16] = Hsdax6; +assign Gqgpw6[15] = Eudax6; +assign Gqgpw6[13] = Bwdax6; +assign Gqgpw6[12] = Yxdax6; +assign Gqgpw6[10] = Vzdax6; +assign Gqgpw6[8] = R1eax6; +assign Gqgpw6[7] = N3eax6; +assign Gqgpw6[5] = J5eax6; +assign Gqgpw6[4] = F7eax6; +assign Gqgpw6[3] = B9eax6; +assign Ijhhu6 = Xaeax6; +assign Trgpw6[2] = Tceax6; +assign Plgpw6[27] = Peeax6; +assign Trgpw6[25] = Mgeax6; +assign Trgpw6[24] = Jieax6; +assign Trgpw6[19] = Gkeax6; +assign Trgpw6[18] = Dmeax6; +assign Trgpw6[16] = Aoeax6; +assign Trgpw6[15] = Xpeax6; +assign Trgpw6[13] = Ureax6; +assign Trgpw6[12] = Rteax6; +assign Trgpw6[10] = Oveax6; +assign Trgpw6[8] = Kxeax6; +assign Trgpw6[7] = Gzeax6; +assign Trgpw6[5] = C1fax6; +assign Trgpw6[4] = Y2fax6; +assign Trgpw6[3] = U4fax6; +assign Alhhu6 = Q6fax6; +assign T0hhu6 = M8fax6; +assign H2hhu6 = Eafax6; +assign E5hhu6 = Sbfax6; +assign S3hhu6 = Hdfax6; +assign Uthpw6[6] = Vefax6; +assign Iahpw6[5] = Zgfax6; +assign Omdpw6 = (!Pifax6); +assign N3nhu6 = Okfax6; +assign Cjhpw6[2] = Nmfax6; +assign Sqhpw6[1] = Uofax6; +assign Sqhpw6[0] = Sqfax6; +assign Dtnhu6 = Qsfax6; +assign S3ohu6 = Qufax6; +assign Rrnhu6 = Qwfax6; +assign Rgnhu6 = Ryfax6; +assign Cjhpw6[3] = J0gax6; +assign K7hpw6[31] = Q2gax6; +assign E1hpw6[31] = N4gax6; +assign Engpw6[28] = K6gax6; +assign Plgpw6[28] = H8gax6; +assign Akgpw6[28] = Eagax6; +assign Ligpw6[28] = Bcgax6; +assign Jshpw6[31] = Ydgax6; +assign K7hpw6[28] = Nfgax6; +assign E1hpw6[28] = Khgax6; +assign Gtgpw6[28] = Hjgax6; +assign Trgpw6[28] = Elgax6; +assign Gqgpw6[28] = Bngax6; +assign Togpw6[28] = Yogax6; +assign Jshpw6[28] = Vqgax6; +assign Aphpw6[1] = Ksgax6; +assign Aphpw6[2] = Dugax6; +assign R0nhu6 = Wvgax6; +assign Jzmhu6 = Jxgax6; +assign Sbghu6 = Vygax6; +assign vis_pc_o[26] = U0hax6; +assign vis_pc_o[25] = R2hax6; +assign vis_pc_o[24] = O4hax6; +assign vis_pc_o[23] = L6hax6; +assign vis_pc_o[20] = I8hax6; +assign vis_pc_o[19] = Fahax6; +assign vis_pc_o[18] = Cchax6; +assign vis_pc_o[17] = Zdhax6; +assign vis_pc_o[16] = Wfhax6; +assign vis_pc_o[15] = Thhax6; +assign vis_pc_o[13] = Qjhax6; +assign vis_pc_o[12] = Nlhax6; +assign vis_pc_o[11] = Knhax6; +assign vis_pc_o[7] = Hphax6; +assign vis_pc_o[5] = Drhax6; +assign vis_pc_o[4] = Zshax6; +assign vis_pc_o[3] = Vuhax6; +assign vis_pc_o[2] = Rwhax6; +assign vis_pc_o[1] = Nyhax6; +assign Sufpw6[1] = J0iax6; +assign Ppfpw6[4] = G2iax6; +assign Ppfpw6[5] = F4iax6; +assign Ppfpw6[14] = E6iax6; +assign Ppfpw6[6] = E8iax6; +assign N2ghu6 = Daiax6; +assign Fvdhu6 = Bciax6; +assign T6ehu6 = Zdiax6; +assign vis_primask_o = Xfiax6; +assign Dhgpw6[3] = Thiax6; +assign vis_ipsr_o[4] = Ijiax6; +assign vis_ipsr_o[0] = Eliax6; +assign vis_ipsr_o[2] = Aniax6; +assign Lvdpw6 = (!Woiax6); +assign Ppfpw6[7] = Zqiax6; +assign Ppfpw6[8] = Ysiax6; +assign Ppfpw6[9] = Xuiax6; +assign Ppfpw6[10] = Wwiax6; +assign Ppfpw6[11] = Wyiax6; +assign Ppfpw6[12] = W0jax6; +assign Ppfpw6[13] = W2jax6; +assign D7fpw6[6] = W4jax6; +assign S8fpw6[7] = V6jax6; +assign Dxfhu6 = U8jax6; +assign Hrfpw6[16] = Tajax6; +assign Hrfpw6[0] = Tcjax6; +assign Hrfpw6[15] = Sejax6; +assign Hrfpw6[13] = Sgjax6; +assign Hrfpw6[12] = Sijax6; +assign D7fpw6[12] = Skjax6; +assign Hrfpw6[11] = Smjax6; +assign D7fpw6[11] = Sojax6; +assign Hrfpw6[10] = Sqjax6; +assign D7fpw6[10] = Ssjax6; +assign Hrfpw6[9] = Sujax6; +assign D7fpw6[9] = Rwjax6; +assign Hrfpw6[8] = Qyjax6; +assign D7fpw6[8] = P0kax6; +assign Hrfpw6[7] = O2kax6; +assign D7fpw6[7] = N4kax6; +assign H2fpw6[3] = M6kax6; +assign Hrfpw6[6] = L8kax6; +assign Hrfpw6[5] = Kakax6; +assign D7fpw6[5] = Jckax6; +assign S8fpw6[8] = Iekax6; +assign S8fpw6[9] = Lgkax6; +assign S8fpw6[10] = Oikax6; +assign S8fpw6[11] = Rkkax6; +assign S8fpw6[6] = Umkax6; +assign Hrfpw6[4] = Tokax6; +assign S8fpw6[0] = Sqkax6; +assign S8fpw6[2] = Rskax6; +assign vis_r9_o[0] = Qukax6; +assign vis_r11_o[0] = Pwkax6; +assign vis_r5_o[0] = Oykax6; +assign vis_r0_o[0] = N0lax6; +assign vis_r1_o[0] = M2lax6; +assign Ppfpw6[16] = L4lax6; +assign Sufpw6[0] = L6lax6; +assign L3ehu6 = I8lax6; +assign Qwdhu6 = Halax6; +assign vis_r10_o[2] = Eclax6; +assign vis_r10_o[4] = Delax6; +assign vis_r10_o[23] = Cglax6; +assign vis_r10_o[30] = Cilax6; +assign vis_r10_o[31] = Cklax6; +assign vis_r10_o[0] = Cmlax6; +assign vis_r10_o[3] = Bolax6; +assign vis_r10_o[5] = Aqlax6; +assign vis_r10_o[6] = Zrlax6; +assign vis_r10_o[7] = Ytlax6; +assign vis_r10_o[24] = Xvlax6; +assign vis_r10_o[26] = Xxlax6; +assign vis_r10_o[27] = Xzlax6; +assign vis_r10_o[29] = X1max6; +assign vis_r10_o[1] = X3max6; +assign vis_r10_o[25] = W5max6; +assign vis_r10_o[21] = W7max6; +assign vis_r10_o[20] = W9max6; +assign vis_r10_o[19] = Wbmax6; +assign vis_r10_o[18] = Wdmax6; +assign vis_r10_o[17] = Wfmax6; +assign vis_r10_o[16] = Whmax6; +assign vis_r10_o[14] = Wjmax6; +assign vis_r10_o[13] = Wlmax6; +assign vis_r10_o[12] = Wnmax6; +assign vis_r10_o[10] = Wpmax6; +assign vis_r10_o[9] = Wrmax6; +assign vis_r10_o[8] = Vtmax6; +assign vis_r14_o[2] = Uvmax6; +assign vis_r14_o[4] = Txmax6; +assign vis_r14_o[23] = Szmax6; +assign vis_r14_o[30] = S1nax6; +assign vis_r14_o[31] = S3nax6; +assign vis_r14_o[0] = S5nax6; +assign vis_r14_o[3] = R7nax6; +assign vis_r14_o[5] = Q9nax6; +assign vis_r14_o[6] = Pbnax6; +assign vis_r14_o[7] = Odnax6; +assign vis_r14_o[24] = Nfnax6; +assign vis_r14_o[26] = Nhnax6; +assign vis_r14_o[27] = Njnax6; +assign vis_r14_o[29] = Nlnax6; +assign vis_r14_o[25] = Nnnax6; +assign vis_r14_o[21] = Npnax6; +assign vis_r14_o[20] = Nrnax6; +assign vis_r14_o[19] = Ntnax6; +assign vis_r14_o[18] = Nvnax6; +assign vis_r14_o[17] = Nxnax6; +assign vis_r14_o[16] = Nznax6; +assign vis_r14_o[14] = N1oax6; +assign vis_r14_o[13] = N3oax6; +assign vis_r14_o[12] = N5oax6; +assign vis_r14_o[10] = N7oax6; +assign vis_r14_o[8] = N9oax6; +assign vis_r6_o[2] = Mboax6; +assign vis_r6_o[4] = Ldoax6; +assign vis_r6_o[23] = Kfoax6; +assign vis_r6_o[30] = Khoax6; +assign vis_r6_o[31] = Kjoax6; +assign vis_r6_o[0] = Kloax6; +assign vis_r6_o[3] = Jnoax6; +assign vis_r6_o[5] = Ipoax6; +assign vis_r6_o[6] = Hroax6; +assign vis_r6_o[7] = Gtoax6; +assign vis_r6_o[24] = Fvoax6; +assign vis_r6_o[26] = Fxoax6; +assign vis_r6_o[27] = Fzoax6; +assign vis_r6_o[29] = F1pax6; +assign vis_r6_o[1] = F3pax6; +assign vis_r6_o[25] = E5pax6; +assign vis_r6_o[21] = E7pax6; +assign vis_r6_o[20] = E9pax6; +assign vis_r6_o[19] = Ebpax6; +assign vis_r6_o[18] = Edpax6; +assign vis_r6_o[17] = Efpax6; +assign vis_r6_o[16] = Ehpax6; +assign vis_r6_o[14] = Ejpax6; +assign vis_r6_o[13] = Elpax6; +assign vis_r6_o[12] = Enpax6; +assign vis_r6_o[10] = Eppax6; +assign vis_r6_o[9] = Erpax6; +assign vis_r6_o[8] = Dtpax6; +assign vis_r2_o[2] = Cvpax6; +assign vis_r2_o[4] = Bxpax6; +assign vis_r2_o[23] = Azpax6; +assign vis_r2_o[30] = A1qax6; +assign vis_r2_o[31] = A3qax6; +assign vis_r2_o[0] = A5qax6; +assign vis_r2_o[3] = Z6qax6; +assign vis_r2_o[5] = Y8qax6; +assign vis_r2_o[6] = Xaqax6; +assign vis_r2_o[7] = Wcqax6; +assign vis_r2_o[24] = Veqax6; +assign vis_r2_o[26] = Vgqax6; +assign vis_r2_o[27] = Viqax6; +assign vis_r2_o[29] = Vkqax6; +assign vis_r2_o[1] = Vmqax6; +assign vis_r2_o[25] = Uoqax6; +assign vis_r2_o[21] = Uqqax6; +assign vis_r2_o[20] = Usqax6; +assign vis_r2_o[19] = Uuqax6; +assign vis_r2_o[18] = Uwqax6; +assign vis_r2_o[17] = Uyqax6; +assign vis_r2_o[16] = U0rax6; +assign vis_r2_o[14] = U2rax6; +assign vis_r2_o[13] = U4rax6; +assign vis_r2_o[12] = U6rax6; +assign vis_r2_o[10] = U8rax6; +assign vis_r2_o[9] = Uarax6; +assign vis_r2_o[8] = Tcrax6; +assign vis_r8_o[2] = Serax6; +assign vis_r8_o[4] = Rgrax6; +assign vis_r8_o[23] = Qirax6; +assign vis_r8_o[30] = Qkrax6; +assign vis_r8_o[31] = Qmrax6; +assign vis_r8_o[0] = Qorax6; +assign vis_r8_o[1] = Pqrax6; +assign vis_r8_o[25] = Osrax6; +assign vis_r8_o[21] = Ourax6; +assign vis_r8_o[20] = Owrax6; +assign vis_r8_o[19] = Oyrax6; +assign vis_r8_o[18] = O0sax6; +assign vis_r8_o[17] = O2sax6; +assign vis_r8_o[16] = O4sax6; +assign vis_r8_o[14] = O6sax6; +assign vis_r8_o[13] = O8sax6; +assign vis_r8_o[12] = Oasax6; +assign vis_r8_o[10] = Ocsax6; +assign vis_r8_o[9] = Oesax6; +assign vis_r8_o[8] = Ngsax6; +assign vis_r12_o[2] = Misax6; +assign vis_r12_o[4] = Lksax6; +assign vis_r12_o[23] = Kmsax6; +assign vis_r12_o[30] = Kosax6; +assign vis_r12_o[31] = Kqsax6; +assign vis_r12_o[0] = Kssax6; +assign vis_r12_o[3] = Jusax6; +assign vis_r12_o[5] = Iwsax6; +assign vis_r12_o[6] = Hysax6; +assign vis_r12_o[7] = G0tax6; +assign vis_r12_o[24] = F2tax6; +assign vis_r12_o[26] = F4tax6; +assign vis_r12_o[27] = F6tax6; +assign vis_r12_o[29] = F8tax6; +assign vis_r12_o[1] = Fatax6; +assign vis_r12_o[25] = Ectax6; +assign vis_r12_o[21] = Eetax6; +assign vis_r12_o[20] = Egtax6; +assign vis_r12_o[19] = Eitax6; +assign vis_r12_o[18] = Ektax6; +assign vis_r12_o[17] = Emtax6; +assign vis_r12_o[16] = Eotax6; +assign vis_r12_o[14] = Eqtax6; +assign vis_r12_o[13] = Estax6; +assign vis_r12_o[12] = Eutax6; +assign vis_r12_o[10] = Ewtax6; +assign vis_r12_o[8] = Eytax6; +assign vis_r4_o[2] = D0uax6; +assign vis_r4_o[4] = C2uax6; +assign vis_r4_o[23] = B4uax6; +assign vis_r4_o[30] = B6uax6; +assign vis_r4_o[31] = B8uax6; +assign vis_r4_o[0] = Bauax6; +assign vis_r4_o[3] = Acuax6; +assign vis_r4_o[5] = Zduax6; +assign vis_r4_o[6] = Yfuax6; +assign vis_r4_o[7] = Xhuax6; +assign vis_r4_o[24] = Wjuax6; +assign vis_r4_o[26] = Wluax6; +assign vis_r4_o[27] = Wnuax6; +assign vis_r4_o[29] = Wpuax6; +assign vis_r4_o[1] = Wruax6; +assign vis_r4_o[25] = Vtuax6; +assign vis_r4_o[21] = Vvuax6; +assign vis_r4_o[20] = Vxuax6; +assign vis_r4_o[19] = Vzuax6; +assign vis_r4_o[18] = V1vax6; +assign vis_r4_o[17] = V3vax6; +assign vis_r4_o[16] = V5vax6; +assign vis_r4_o[14] = V7vax6; +assign vis_r4_o[13] = V9vax6; +assign vis_r4_o[12] = Vbvax6; +assign vis_r4_o[10] = Vdvax6; +assign vis_r4_o[9] = Vfvax6; +assign vis_r4_o[8] = Uhvax6; +assign vis_r7_o[2] = Tjvax6; +assign vis_r7_o[4] = Slvax6; +assign vis_r7_o[23] = Rnvax6; +assign vis_r7_o[30] = Rpvax6; +assign vis_r7_o[31] = Rrvax6; +assign vis_r7_o[0] = Rtvax6; +assign vis_r7_o[3] = Qvvax6; +assign vis_r7_o[5] = Pxvax6; +assign vis_r7_o[6] = Ozvax6; +assign vis_r7_o[7] = N1wax6; +assign vis_r7_o[24] = M3wax6; +assign vis_r7_o[26] = M5wax6; +assign vis_r7_o[27] = M7wax6; +assign vis_r7_o[29] = M9wax6; +assign vis_r7_o[1] = Mbwax6; +assign vis_r7_o[25] = Ldwax6; +assign vis_r7_o[21] = Lfwax6; +assign vis_r7_o[20] = Lhwax6; +assign vis_r7_o[19] = Ljwax6; +assign vis_r7_o[18] = Llwax6; +assign vis_r7_o[17] = Lnwax6; +assign vis_r7_o[16] = Lpwax6; +assign vis_r7_o[14] = Lrwax6; +assign vis_r7_o[13] = Ltwax6; +assign vis_r7_o[12] = Lvwax6; +assign vis_r7_o[10] = Lxwax6; +assign vis_r7_o[8] = Lzwax6; +assign vis_r3_o[2] = K1xax6; +assign vis_r3_o[4] = J3xax6; +assign Jfgpw6[1] = I5xax6; +assign Bagpw6[23] = J7xax6; +assign Bagpw6[15] = L9xax6; +assign Tzfpw6[15] = Nbxax6; +assign Bagpw6[14] = Pdxax6; +assign Tzfpw6[14] = Rfxax6; +assign Bagpw6[7] = Thxax6; +assign Tzfpw6[7] = Ujxax6; +assign Bagpw6[2] = Vlxax6; +assign Bagpw6[1] = Wnxax6; +assign Fkfpw6[13] = Xpxax6; +assign Fkfpw6[2] = Xrxax6; +assign Fkfpw6[4] = Wtxax6; +assign vis_r3_o[23] = Vvxax6; +assign vis_r3_o[30] = Vxxax6; +assign vis_r3_o[31] = Vzxax6; +assign vis_r3_o[0] = V1yax6; +assign vis_r3_o[3] = U3yax6; +assign Fkfpw6[3] = T5yax6; +assign vis_r3_o[5] = S7yax6; +assign Jfgpw6[3] = R9yax6; +assign Evdpw6 = (!Sbyax6); +assign Ahghu6 = Pdyax6; +assign R4gpw6[41] = Mfyax6; +assign R4gpw6[42] = Ohyax6; +assign R4gpw6[43] = Qjyax6; +assign R4gpw6[45] = Slyax6; +assign R4gpw6[46] = Unyax6; +assign R4gpw6[47] = Wpyax6; +assign R4gpw6[11] = Yryax6; +assign R4gpw6[13] = Auyax6; +assign R4gpw6[14] = Cwyax6; +assign R4gpw6[15] = Eyyax6; +assign Qqdhu6 = G0zax6; +assign Ndghu6 = I2zax6; +assign R4gpw6[33] = H4zax6; +assign R4gpw6[34] = J6zax6; +assign R4gpw6[35] = L8zax6; +assign R4gpw6[37] = Nazax6; +assign R4gpw6[38] = Pczax6; +assign R4gpw6[39] = Rezax6; +assign R4gpw6[7] = Tgzax6; +assign R4gpw6[6] = Uizax6; +assign R4gpw6[5] = Vkzax6; +assign R4gpw6[3] = Wmzax6; +assign R4gpw6[2] = Xozax6; +assign R4gpw6[1] = Yqzax6; +assign Bxghu6 = Zszax6; +assign Dvghu6 = Avzax6; +assign Vbgpw6[1] = Cxzax6; +assign Vbgpw6[5] = Czzax6; +assign Vbgpw6[7] = C10bx6; +assign Vbgpw6[8] = C30bx6; +assign Vbgpw6[10] = C50bx6; +assign Vbgpw6[11] = D70bx6; +assign Vbgpw6[12] = E90bx6; +assign Vbgpw6[13] = Fb0bx6; +assign Vbgpw6[14] = Gd0bx6; +assign Vbgpw6[15] = Hf0bx6; +assign Vbgpw6[16] = Ih0bx6; +assign Vbgpw6[17] = Jj0bx6; +assign Vbgpw6[18] = Kl0bx6; +assign Vbgpw6[19] = Ln0bx6; +assign Vbgpw6[20] = Mp0bx6; +assign Vbgpw6[21] = Nr0bx6; +assign Vbgpw6[23] = Ot0bx6; +assign Vbgpw6[25] = Pv0bx6; +assign Vbgpw6[27] = Qx0bx6; +assign Vbgpw6[30] = Rz0bx6; +assign Xudpw6 = (!S11bx6); +assign Odgpw6[0] = U31bx6; +assign Qudpw6 = (!W51bx6); +assign Odgpw6[12] = Z71bx6; +assign Judpw6 = (!Ca1bx6); +assign Odgpw6[10] = Fc1bx6; +assign Cudpw6 = (!Ie1bx6); +assign Odgpw6[11] = Lg1bx6; +assign Vtdpw6 = (!Oi1bx6); +assign Odgpw6[13] = Rk1bx6; +assign Otdpw6 = (!Um1bx6); +assign Odgpw6[14] = Xo1bx6; +assign Htdpw6 = (!Ar1bx6); +assign Odgpw6[17] = Dt1bx6; +assign Atdpw6 = (!Gv1bx6); +assign Odgpw6[16] = Jx1bx6; +assign Tsdpw6 = (!Mz1bx6); +assign Odgpw6[18] = P12bx6; +assign Msdpw6 = (!S32bx6); +assign Odgpw6[19] = V52bx6; +assign Fsdpw6 = (!Y72bx6); +assign Odgpw6[1] = Aa2bx6; +assign Yrdpw6 = (!Cc2bx6); +assign Odgpw6[20] = Fe2bx6; +assign Rrdpw6 = (!Ig2bx6); +assign Odgpw6[21] = Li2bx6; +assign Krdpw6 = (!Ok2bx6); +assign Odgpw6[25] = Rm2bx6; +assign Drdpw6 = (!Uo2bx6); +assign Odgpw6[23] = Xq2bx6; +assign Wqdpw6 = (!At2bx6); +assign Odgpw6[24] = Dv2bx6; +assign Pqdpw6 = (!Gx2bx6); +assign Odgpw6[26] = Jz2bx6; +assign Iqdpw6 = (!M13bx6); +assign Odgpw6[27] = P33bx6; +assign Bqdpw6 = (!S53bx6); +assign Odgpw6[28] = V73bx6; +assign Updpw6 = (!Y93bx6); +assign Odgpw6[29] = Bc3bx6; +assign Npdpw6 = (!Ee3bx6); +assign Odgpw6[31] = Hg3bx6; +assign Gpdpw6 = (!Ki3bx6); +assign Odgpw6[5] = Mk3bx6; +assign Zodpw6 = (!Om3bx6); +assign Odgpw6[7] = Qo3bx6; +assign Sodpw6 = (!Sq3bx6); +assign Odgpw6[8] = Us3bx6; +assign R4gpw6[49] = Wu3bx6; +assign R4gpw6[50] = Yw3bx6; +assign R4gpw6[51] = Az3bx6; +assign R4gpw6[53] = C14bx6; +assign R4gpw6[54] = E34bx6; +assign R4gpw6[55] = G54bx6; +assign R4gpw6[17] = I74bx6; +assign R4gpw6[18] = K94bx6; +assign R4gpw6[19] = Mb4bx6; +assign R4gpw6[21] = Od4bx6; +assign R4gpw6[22] = Qf4bx6; +assign R4gpw6[23] = Sh4bx6; +assign B3gpw6[1] = Uj4bx6; +assign B3gpw6[0] = Tl4bx6; +assign R4gpw6[57] = Sn4bx6; +assign R4gpw6[58] = Up4bx6; +assign R4gpw6[59] = Wr4bx6; +assign R4gpw6[61] = Yt4bx6; +assign R4gpw6[62] = Aw4bx6; +assign R4gpw6[63] = Cy4bx6; +assign R4gpw6[25] = E05bx6; +assign R4gpw6[26] = G25bx6; +assign R4gpw6[27] = I45bx6; +assign R4gpw6[29] = K65bx6; +assign R4gpw6[30] = M85bx6; +assign R4gpw6[31] = Oa5bx6; +assign Fkfpw6[5] = Qc5bx6; +assign vis_r3_o[6] = Pe5bx6; +assign vis_r3_o[7] = Og5bx6; +assign vis_r3_o[24] = Ni5bx6; +assign vis_r3_o[26] = Nk5bx6; +assign vis_r3_o[27] = Nm5bx6; +assign vis_r3_o[29] = No5bx6; +assign vis_r3_o[1] = Nq5bx6; +assign Iwfpw6[1] = Ms5bx6; +assign Fkfpw6[1] = Nu5bx6; +assign vis_pc_o[10] = Mw5bx6; +assign vis_r3_o[25] = Jy5bx6; +assign vis_pc_o[8] = J06bx6; +assign L8ehu6 = F26bx6; +assign vis_r3_o[21] = D46bx6; +assign vis_r3_o[20] = D66bx6; +assign vis_r3_o[19] = D86bx6; +assign vis_r3_o[18] = Da6bx6; +assign vis_r3_o[17] = Dc6bx6; +assign vis_r3_o[16] = De6bx6; +assign vis_r3_o[14] = Dg6bx6; +assign vis_r3_o[13] = Di6bx6; +assign vis_r3_o[12] = Dk6bx6; +assign Fkfpw6[12] = Dm6bx6; +assign vis_r3_o[10] = Do6bx6; +assign vis_r3_o[9] = Dq6bx6; +assign vis_r3_o[8] = Cs6bx6; +assign Uthpw6[11] = Bu6bx6; +assign Iahpw6[10] = Gw6bx6; +assign Shhpw6[11] = Xx6bx6; +assign Fkfpw6[11] = C07bx6; +assign vis_r0_o[11] = C27bx6; +assign vis_r1_o[11] = C47bx6; +assign vis_r2_o[11] = C67bx6; +assign vis_r3_o[11] = C87bx6; +assign vis_r8_o[11] = Ca7bx6; +assign vis_r9_o[11] = Cc7bx6; +assign vis_r10_o[11] = Ce7bx6; +assign vis_r11_o[11] = Cg7bx6; +assign vis_r4_o[11] = Ci7bx6; +assign vis_r5_o[11] = Ck7bx6; +assign vis_r6_o[11] = Cm7bx6; +assign vis_r7_o[11] = Co7bx6; +assign vis_pc_o[14] = Cq7bx6; +assign vis_r0_o[15] = Zr7bx6; +assign vis_r1_o[15] = Zt7bx6; +assign vis_r2_o[15] = Zv7bx6; +assign vis_r3_o[15] = Zx7bx6; +assign vis_r8_o[15] = Zz7bx6; +assign vis_r9_o[15] = Z18bx6; +assign vis_r10_o[15] = Z38bx6; +assign vis_r11_o[15] = Z58bx6; +assign vis_r4_o[15] = Z78bx6; +assign vis_r5_o[15] = Z98bx6; +assign vis_r6_o[15] = Zb8bx6; +assign vis_r7_o[15] = Zd8bx6; +assign vis_r12_o[15] = Zf8bx6; +assign vis_r14_o[15] = Zh8bx6; +assign vis_msp_o[13] = Zj8bx6; +assign vis_psp_o[13] = Zl8bx6; +assign vis_r12_o[11] = Zn8bx6; +assign vis_r14_o[11] = Zp8bx6; +assign vis_msp_o[9] = Zr8bx6; +assign vis_psp_o[9] = Yt8bx6; +assign K7hpw6[11] = Xv8bx6; +assign E1hpw6[11] = Ux8bx6; +assign Gtgpw6[11] = Rz8bx6; +assign Trgpw6[11] = N19bx6; +assign Gqgpw6[11] = J39bx6; +assign Togpw6[11] = F59bx6; +assign Jshpw6[11] = B79bx6; +assign Shhpw6[6] = Q89bx6; +assign Fkfpw6[6] = Ua9bx6; +assign K7hpw6[6] = Tc9bx6; +assign E1hpw6[6] = Pe9bx6; +assign Gtgpw6[6] = Lg9bx6; +assign Trgpw6[6] = Hi9bx6; +assign Gqgpw6[6] = Dk9bx6; +assign Togpw6[6] = Zl9bx6; +assign Jshpw6[6] = Vn9bx6; +assign Lodpw6 = (!Jp9bx6); +assign Odgpw6[6] = Lr9bx6; +assign Vbgpw6[6] = Nt9bx6; +assign R4gpw6[0] = Nv9bx6; +assign Bagpw6[6] = Ox9bx6; +assign R4gpw6[56] = Pz9bx6; +assign R4gpw6[48] = R1abx6; +assign R4gpw6[40] = T3abx6; +assign R4gpw6[32] = V5abx6; +assign R4gpw6[24] = X7abx6; +assign R4gpw6[16] = Z9abx6; +assign R4gpw6[8] = Bcabx6; +assign Uthpw6[5] = Ceabx6; +assign Uthpw6[13] = Ggabx6; +assign Shhpw6[14] = Liabx6; +assign K7hpw6[14] = Qkabx6; +assign E1hpw6[14] = Nmabx6; +assign Gtgpw6[14] = Koabx6; +assign Trgpw6[14] = Hqabx6; +assign Gqgpw6[14] = Esabx6; +assign Togpw6[14] = Buabx6; +assign Jshpw6[14] = Yvabx6; +assign vis_pc_o[21] = Nxabx6; +assign Tzfpw6[2] = Kzabx6; +assign Vbgpw6[2] = L1bbx6; +assign Eodpw6 = (!L3bbx6); +assign Odgpw6[2] = N5bbx6; +assign vis_pc_o[9] = P7bbx6; +assign Uthpw6[1] = L9bbx6; +assign Fkfpw6[17] = Pbbbx6; +assign Uthpw6[17] = Pdbbx6; +assign Iahpw6[16] = Ufbbx6; +assign Shhpw6[17] = Lhbbx6; +assign K7hpw6[17] = Qjbbx6; +assign E1hpw6[17] = Nlbbx6; +assign Gtgpw6[17] = Knbbx6; +assign Trgpw6[17] = Hpbbx6; +assign Gqgpw6[17] = Erbbx6; +assign Togpw6[17] = Btbbx6; +assign Jshpw6[17] = Yubbx6; +assign Fkfpw6[25] = Nwbbx6; +assign Fkfpw6[27] = Nybbx6; +assign Uthpw6[27] = N0cbx6; +assign Iahpw6[26] = S2cbx6; +assign Iahpw6[25] = J4cbx6; +assign Shhpw6[26] = A6cbx6; +assign Fkfpw6[26] = F8cbx6; +assign K7hpw6[26] = Facbx6; +assign E1hpw6[26] = Cccbx6; +assign Gtgpw6[26] = Zdcbx6; +assign Trgpw6[26] = Wfcbx6; +assign Gqgpw6[26] = Thcbx6; +assign Togpw6[26] = Qjcbx6; +assign Jshpw6[26] = Nlcbx6; +assign Uthpw6[26] = Cncbx6; +assign Zbhpw6[26] = Hpcbx6; +assign Shhpw6[27] = Drcbx6; +assign K7hpw6[27] = Itcbx6; +assign E1hpw6[27] = Fvcbx6; +assign Gtgpw6[27] = Cxcbx6; +assign Trgpw6[27] = Zycbx6; +assign Gqgpw6[27] = W0dbx6; +assign Togpw6[27] = T2dbx6; +assign Jshpw6[27] = Q4dbx6; +assign Fkfpw6[30] = F6dbx6; +assign Uthpw6[23] = F8dbx6; +assign Iahpw6[22] = Kadbx6; +assign Iahpw6[21] = Bcdbx6; +assign Iahpw6[20] = Sddbx6; +assign Iahpw6[19] = Jfdbx6; +assign Shhpw6[20] = Ahdbx6; +assign Fkfpw6[20] = Fjdbx6; +assign K7hpw6[20] = Fldbx6; +assign E1hpw6[20] = Cndbx6; +assign Gtgpw6[20] = Zodbx6; +assign Trgpw6[20] = Wqdbx6; +assign Gqgpw6[20] = Tsdbx6; +assign Togpw6[20] = Qudbx6; +assign Jshpw6[20] = Nwdbx6; +assign Uthpw6[20] = Cydbx6; +assign Shhpw6[21] = H0ebx6; +assign Fkfpw6[21] = M2ebx6; +assign K7hpw6[21] = M4ebx6; +assign E1hpw6[21] = J6ebx6; +assign Gtgpw6[21] = G8ebx6; +assign Trgpw6[21] = Daebx6; +assign Gqgpw6[21] = Acebx6; +assign Togpw6[21] = Xdebx6; +assign Jshpw6[21] = Ufebx6; +assign Uthpw6[21] = Jhebx6; +assign Shhpw6[22] = Ojebx6; +assign Fkfpw6[22] = Tlebx6; +assign vis_r0_o[22] = Tnebx6; +assign vis_r1_o[22] = Tpebx6; +assign vis_r2_o[22] = Trebx6; +assign vis_r3_o[22] = Ttebx6; +assign vis_r8_o[22] = Tvebx6; +assign vis_r9_o[22] = Txebx6; +assign vis_r10_o[22] = Tzebx6; +assign vis_r11_o[22] = T1fbx6; +assign vis_r4_o[22] = T3fbx6; +assign vis_r5_o[22] = T5fbx6; +assign vis_r6_o[22] = T7fbx6; +assign vis_r7_o[22] = T9fbx6; +assign vis_r12_o[22] = Tbfbx6; +assign vis_r14_o[22] = Tdfbx6; +assign vis_msp_o[20] = Tffbx6; +assign vis_psp_o[20] = Thfbx6; +assign K7hpw6[22] = Tjfbx6; +assign E1hpw6[22] = Qlfbx6; +assign Gtgpw6[22] = Nnfbx6; +assign Trgpw6[22] = Kpfbx6; +assign Gqgpw6[22] = Hrfbx6; +assign Togpw6[22] = Etfbx6; +assign Jshpw6[22] = Bvfbx6; +assign Uthpw6[22] = Qwfbx6; +assign Xndpw6 = (!Vyfbx6); +assign Odgpw6[22] = Y0gbx6; +assign Vbgpw6[22] = B3gbx6; +assign R4gpw6[4] = C5gbx6; +assign Bagpw6[22] = D7gbx6; +assign Tzfpw6[22] = F9gbx6; +assign R4gpw6[60] = Hbgbx6; +assign R4gpw6[52] = Jdgbx6; +assign R4gpw6[44] = Lfgbx6; +assign R4gpw6[36] = Nhgbx6; +assign R4gpw6[28] = Pjgbx6; +assign R4gpw6[20] = Rlgbx6; +assign R4gpw6[12] = Tngbx6; +assign L1gpw6[0] = Vpgbx6; +assign Shhpw6[23] = Urgbx6; +assign Fkfpw6[23] = Ztgbx6; +assign K7hpw6[23] = Zvgbx6; +assign E1hpw6[23] = Wxgbx6; +assign Gtgpw6[23] = Tzgbx6; +assign Trgpw6[23] = Q1hbx6; +assign Gqgpw6[23] = N3hbx6; +assign Togpw6[23] = K5hbx6; +assign Jshpw6[23] = H7hbx6; +assign Ppfpw6[15] = W8hbx6; +assign K7hpw6[29] = Wahbx6; +assign E1hpw6[29] = Tchbx6; +assign Tnhpw6[0] = Qehbx6; +assign Qndpw6 = (!Eghbx6); +assign Odgpw6[4] = Gihbx6; +assign Vbgpw6[4] = Ikhbx6; +assign Bagpw6[4] = Imhbx6; +assign Tzfpw6[4] = Johbx6; +assign Gfghu6 = Kqhbx6; +assign Jndpw6 = (!Kshbx6); +assign Odgpw6[3] = Muhbx6; +assign Vbgpw6[3] = Owhbx6; +assign Bagpw6[3] = Oyhbx6; +assign Tzfpw6[3] = P0ibx6; +assign Jshpw6[25] = Q2ibx6; +assign Vxmhu6 = F4ibx6; +assign vis_apsr_o[0] = X5ibx6; +assign vis_r2_o[28] = R7ibx6; +assign vis_r3_o[28] = R9ibx6; +assign vis_r8_o[28] = Rbibx6; +assign vis_r9_o[28] = Rdibx6; +assign vis_r10_o[28] = Rfibx6; +assign vis_r4_o[28] = Rhibx6; +assign vis_r5_o[28] = Rjibx6; +assign vis_r6_o[28] = Rlibx6; +assign vis_r7_o[28] = Rnibx6; +assign vis_r12_o[28] = Rpibx6; +assign vis_r14_o[28] = Rribx6; +assign vis_psp_o[26] = Rtibx6; +assign vis_r12_o[9] = Rvibx6; +assign vis_r14_o[9] = Qxibx6; +assign vis_msp_o[7] = Pzibx6; +assign vis_psp_o[7] = O1jbx6; +assign K7hpw6[9] = N3jbx6; +assign E1hpw6[9] = J5jbx6; +assign Gtgpw6[9] = F7jbx6; +assign Trgpw6[9] = B9jbx6; +assign Gqgpw6[9] = Xajbx6; +assign Togpw6[9] = Tcjbx6; +assign vis_msp_o[26] = Pejbx6; +assign Cndpw6 = (!Pgjbx6); +assign Odgpw6[9] = Rijbx6; +assign Vbgpw6[9] = Tkjbx6; +assign Bagpw6[9] = Tmjbx6; +assign Tzfpw6[9] = Uojbx6; +assign Hrfpw6[3] = Vqjbx6; +assign Hrfpw6[2] = Usjbx6; +assign Hrfpw6[1] = Tujbx6; +assign Hrfpw6[14] = Swjbx6; +assign Fkfpw6[18] = Syjbx6; +assign Vbgpw6[31] = S0kbx6; +assign Krghu6 = T2kbx6; +assign Iwfpw6[0] = S4kbx6; +assign Fkfpw6[19] = T6kbx6; +assign Righu6 = T8kbx6; +assign Jydhu6 = Qakbx6; +assign Uthpw6[7] = Nckbx6; +assign SYSRESETREQ = Rekbx6; +assign Kaohu6 = (!Rekbx6); +assign Fkfpw6[24] = Tgkbx6; +assign Aygpw6[0] = Tikbx6; +assign G4hpw6[0] = Pkkbx6; +assign Dhgpw6[0] = Lmkbx6; +assign Qnghu6 = Cokbx6; +assign SWDOEN = Dqkbx6; +assign Vrkbx6 = ({{Jshpw6[9:4], Tnhpw6}, 1'b0} + {{1'b0, 1'b0, 1'b0, + 1'b0, 1'b0, 1'b0, 1'b0, Aphpw6, E4yhu6}, 1'b1}); +assign Gmhpw6 = Vrkbx6[33:1]; +assign Yuhhu6 = (({R9ohu6, Mzihu6, Eyihu6, Wwihu6, Ovihu6, Guihu6, + Ysihu6, Qrihu6, Iqihu6, Apihu6, Snihu6, Kmihu6, Clihu6, Ujihu6, + Miihu6, Ehihu6, Wfihu6, Oeihu6, Gdihu6, Ybihu6, Qaihu6, I9ihu6, + A8ihu6, S6ihu6, K5ihu6, C4ihu6, U2ihu6, M1ihu6, E0ihu6, Wyhhu6, + Oxhhu6, Gwhhu6} == {E1hpw6, Edkhu6, Wbkhu6}) ? 1'b1 : 1'b0); +assign Ntkbx6 = ({1'b1, 1'b1, 1'b1, 1'b1, 1'b1, 1'b1, 1'b1, 1'b1, 1'b1, + 1'b1, 1'b1, 1'b1, 1'b1, 1'b1, 1'b1, 1'b1, 1'b1, 1'b1, 1'b1, + 1'b1, 1'b1, 1'b1, 1'b1, 1'b1, 1'b1, 1'b1, 1'b1, 1'b1, 1'b1, + 1'b1, 1'b1, 1'b1} << {Oakhu6, G9khu6, Y7khu6, Q6khu6, I5khu6}); +assign {K5epw6, U0jhu6, C2jhu6, K3jhu6, S4jhu6, A6jhu6, I7jhu6, Q8jhu6, + Y9jhu6, Gbjhu6, Ocjhu6, Wdjhu6, Efjhu6, Mgjhu6, Uhjhu6, Cjjhu6, + Kkjhu6, Sljhu6, Anjhu6, Iojhu6, Qpjhu6, Yqjhu6, Gsjhu6, Otjhu6, + Wujhu6, Ewjhu6, Mxjhu6, Uyjhu6, C0khu6, K1khu6, S2khu6, A4khu6} + = Ntkbx6[31:0]; +assign Mekhu6 = (({M9ohu6, Uilhu6, Nhlhu6, Gglhu6, Zelhu6, Sdlhu6, + Lclhu6, Eblhu6, W9lhu6, O8lhu6, G7lhu6, Y5lhu6, Q4lhu6, I3lhu6, + A2lhu6, S0lhu6, Kzkhu6, Cykhu6, Uwkhu6, Mvkhu6, Eukhu6, Wskhu6, + Orkhu6, Gqkhu6, Yokhu6, Qnkhu6, Imkhu6, Alkhu6, Sjkhu6, Kikhu6, + Chkhu6, Ufkhu6} == {K7hpw6, Avmhu6, Ttmhu6}) ? 1'b1 : 1'b0); +assign Nvkbx6 = ({1'b1, 1'b1, 1'b1, 1'b1, 1'b1, 1'b1, 1'b1, 1'b1, 1'b1, + 1'b1, 1'b1, 1'b1, 1'b1, 1'b1, 1'b1, 1'b1, 1'b1, 1'b1, 1'b1, + 1'b1, 1'b1, 1'b1, 1'b1, 1'b1, 1'b1, 1'b1, 1'b1, 1'b1, 1'b1, + 1'b1, 1'b1, 1'b1} << {Msmhu6, Frmhu6, Ypmhu6, Romhu6, Knmhu6}); +assign {H6epw6, Bklhu6, Illhu6, Pmlhu6, Wnlhu6, Dplhu6, Kqlhu6, Rrlhu6, + Yslhu6, Fulhu6, Mvlhu6, Twlhu6, Aylhu6, Hzlhu6, O0mhu6, V1mhu6, + C3mhu6, J4mhu6, Q5mhu6, X6mhu6, E8mhu6, L9mhu6, Samhu6, Zbmhu6, + Gdmhu6, Nemhu6, Ufmhu6, Bhmhu6, Iimhu6, Pjmhu6, Wkmhu6, Dmmhu6} + = Nvkbx6[31:0]; +assign Wphhu6 = (({V0epw6, O0epw6, H0epw6, A0epw6, Tzdpw6, Mzdpw6, + Fzdpw6, Yydpw6, Rydpw6, Kydpw6, Dydpw6, Wxdpw6, Pxdpw6, + Tugpw6[13:11], Ixdpw6, Tugpw6[9:0]} == Togpw6) ? 1'b1 : 1'b0); +assign Drhhu6 = (({V0epw6, O0epw6, H0epw6, A0epw6, Tzdpw6, Mzdpw6, + Fzdpw6, Yydpw6, Rydpw6, Kydpw6, Dydpw6, Wxdpw6, Pxdpw6, + Tugpw6[13:11], Ixdpw6, Tugpw6[9:0]} == Gqgpw6) ? 1'b1 : 1'b0); +assign Kshhu6 = (({V0epw6, O0epw6, H0epw6, A0epw6, Tzdpw6, Mzdpw6, + Fzdpw6, Yydpw6, Rydpw6, Kydpw6, Dydpw6, Wxdpw6, Pxdpw6, + Tugpw6[13:11], Ixdpw6, Tugpw6[9:0]} == Trgpw6) ? 1'b1 : 1'b0); +assign Rthhu6 = (({V0epw6, O0epw6, H0epw6, A0epw6, Tzdpw6, Mzdpw6, + Fzdpw6, Yydpw6, Rydpw6, Kydpw6, Dydpw6, Wxdpw6, Pxdpw6, + Tugpw6[13:11], Ixdpw6, Tugpw6[9:0]} == Gtgpw6) ? 1'b1 : 1'b0); +assign L6gpw6 = (Tzfpw6 - 1'b1); +assign {Xlfpw6, E7epw6} = ({Vnfpw6, X5phu6} - 1'b1); +assign Zsfpw6 = (vis_pc_o + 1'b1); +assign {N5fpw6, B8epw6} = ({vis_pc_o[30:2], R0ghu6} + 1'b1); +assign {Y8epw6, V9epw6, Saepw6, Pbepw6, Mcepw6, Jdepw6, Heepw6, Ffepw6, + Dgepw6, Bhepw6, Zhepw6, Xiepw6, Vjepw6, Tkepw6, Rlepw6, Pmepw6, + Nnepw6, Loepw6, Jpepw6, Hqepw6, Frepw6, Dsepw6, Btepw6, Ztepw6, + Xuepw6, Vvepw6, Twepw6, Rxepw6, Pyepw6, Nzepw6, L0fpw6, J1fpw6, + Affpw6} = (Mifpw6 * Tgfpw6); +assign Nxkbx6 = ({{Qbehu6, Edehu6, Seehu6, Ggehu6, Uhehu6, Ijehu6, + Wkehu6, Kmehu6, Ynehu6, Mpehu6, Arehu6, Osehu6, Cuehu6, Qvehu6, + Exehu6, Syehu6, G0fhu6, U1fhu6, I3fhu6, W4fhu6, K6fhu6, Y7fhu6, + M9fhu6, Abfhu6, Ocfhu6, Cefhu6, Qffhu6, Dhfhu6, Qifhu6, Dkfhu6, + Qlfhu6, Dnfhu6, Qofhu6}, 1'b0} + {{1'b0, 1'b0, 1'b0, 1'b0, 1'b0, + 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, + 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, + 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, Dqfhu6}, 1'b1}); +assign {Caehu6, Eafpw6} = Nxkbx6[33:1]; +assign Ozkbx6 = ({{1'b0, Idfpw6}, 1'b0} + {{1'b0, D5epw6, Qbfpw6[30:23], + P4epw6, I4epw6, B4epw6, U3epw6, N3epw6, G3epw6, Z2epw6, L2epw6, + X1epw6, Q1epw6, J1epw6, C1epw6, Qbfpw6[10], Q5phu6, W4epw6, + S2epw6, E2epw6, Qbfpw6[5:0]}, 1'b1}); +assign {Qbehu6, Edehu6, Seehu6, Ggehu6, Uhehu6, Ijehu6, Wkehu6, Kmehu6, + Ynehu6, Mpehu6, Arehu6, Osehu6, Cuehu6, Qvehu6, Exehu6, Syehu6, + G0fhu6, U1fhu6, I3fhu6, W4fhu6, K6fhu6, Y7fhu6, M9fhu6, Abfhu6, + Ocfhu6, Cefhu6, Qffhu6, Dhfhu6, Qifhu6, Dkfhu6, Qlfhu6, Dnfhu6, + Qofhu6} = Ozkbx6[33:1]; +assign I5nhu6 = (~(L4yhu6 & S4yhu6)); +assign S4yhu6 = (~(Z4yhu6 & SWDOEN)); +assign L4yhu6 = (G5yhu6 & N5yhu6); +assign G5yhu6 = (~(U5yhu6 & B6yhu6)); +assign B6yhu6 = (~(I6yhu6 & P6yhu6)); +assign P6yhu6 = (~(W6yhu6 & D7yhu6)); +assign D7yhu6 = (~(K7yhu6 | Ighpw6[4])); +assign W6yhu6 = (~(R7yhu6 | Y7yhu6)); +assign Zehpw6[6] = (~(F8yhu6 & M8yhu6)); +assign M8yhu6 = (~(T8yhu6 & Fnnhu6)); +assign F8yhu6 = (A9yhu6 & H9yhu6); +assign H9yhu6 = (~(O9yhu6 & V9yhu6)); +assign V9yhu6 = (~(Cayhu6 & Jayhu6)); +assign A9yhu6 = (~(U5yhu6 & Qayhu6)); +assign Qayhu6 = (~(Xayhu6 & Ebyhu6)); +assign Ebyhu6 = (~(Lbyhu6 | Sbyhu6)); +assign Xayhu6 = (Zbyhu6 & Gcyhu6); +assign Gcyhu6 = (~(Ighpw6[4] & Ncyhu6)); +assign Ncyhu6 = (~(Ucyhu6 & Bdyhu6)); +assign Bdyhu6 = (Ighpw6[1] | Ighpw6[2]); +assign Ucyhu6 = (Idyhu6 & Pdyhu6); +assign Idyhu6 = (Wdyhu6 | Deyhu6); +assign Zbyhu6 = (Mdhpw6[3] ? Reyhu6 : Keyhu6); +assign Reyhu6 = (Yeyhu6 & Ffyhu6); +assign Yeyhu6 = (Mfyhu6 & Tfyhu6); +assign Keyhu6 = (~(Agyhu6 | Hgyhu6)); +assign Zehpw6[5] = (~(Ogyhu6 & Vgyhu6)); +assign Vgyhu6 = (~(O9yhu6 & Mdhpw6[3])); +assign Ogyhu6 = (Chyhu6 & Jhyhu6); +assign Jhyhu6 = (~(Qhyhu6 & U5yhu6)); +assign Qhyhu6 = (Xhyhu6 & Eiyhu6); +assign Xhyhu6 = (~(Liyhu6 & Siyhu6)); +assign Siyhu6 = (~(Ziyhu6 & Mdhpw6[0])); +assign Liyhu6 = (~(Ighpw6[2] & Gjyhu6)); +assign Chyhu6 = (~(T8yhu6 & Njyhu6)); +assign Njyhu6 = (~(Ujyhu6 ^ Bkyhu6)); +assign Bkyhu6 = (Ikyhu6 & Pkyhu6); +assign Ikyhu6 = (~(Eiyhu6 | Wdyhu6)); +assign Zehpw6[4] = (~(Wkyhu6 & Dlyhu6)); +assign Dlyhu6 = (Klyhu6 & Rlyhu6); +assign Klyhu6 = (~(Ylyhu6 & Fmyhu6)); +assign Ylyhu6 = (~(Mmyhu6 | B7nhu6)); +assign Wkyhu6 = (Tmyhu6 & Anyhu6); +assign Anyhu6 = (~(U5yhu6 & Hnyhu6)); +assign Hnyhu6 = (Onyhu6 | Vnyhu6); +assign Onyhu6 = (~(Coyhu6 & Joyhu6)); +assign Coyhu6 = (Eiyhu6 | I6yhu6); +assign Tmyhu6 = (~(T8yhu6 & Qoyhu6)); +assign Qoyhu6 = (Xoyhu6 | Epyhu6); +assign Xoyhu6 = (Pkyhu6 ? Lpyhu6 : Ighpw6[4]); +assign Lpyhu6 = (~(Wdyhu6 | Ighpw6[4])); +assign Zehpw6[3] = (~(Spyhu6 & Zpyhu6)); +assign Zpyhu6 = (~(U5yhu6 & Gqyhu6)); +assign Gqyhu6 = (~(Nqyhu6 & Uqyhu6)); +assign Uqyhu6 = (Bryhu6 & Iryhu6); +assign Bryhu6 = (Ffyhu6 | Mdhpw6[3]); +assign Ffyhu6 = (Pryhu6 & Wryhu6); +assign Nqyhu6 = (~(Dsyhu6 | Ksyhu6)); +assign Dsyhu6 = (Ighpw6[3] ? Ysyhu6 : Rsyhu6); +assign Ysyhu6 = (!Ftyhu6); +assign Rsyhu6 = (~(Pdyhu6 | Ighpw6[4])); +assign Spyhu6 = (Mtyhu6 & N5yhu6); +assign Mtyhu6 = (~(T8yhu6 & Ttyhu6)); +assign Ttyhu6 = (~(Wdyhu6 ^ Pkyhu6)); +assign Zehpw6[2] = (~(Auyhu6 & Huyhu6)); +assign Huyhu6 = (~(T8yhu6 & Ouyhu6)); +assign Ouyhu6 = (~(Vuyhu6 ^ Cvyhu6)); +assign Auyhu6 = (~(U5yhu6 & Jvyhu6)); +assign Jvyhu6 = (~(Qvyhu6 & Xvyhu6)); +assign Xvyhu6 = (Ewyhu6 & Lwyhu6); +assign Lwyhu6 = (~(Swyhu6 & Zwyhu6)); +assign Ewyhu6 = (Gxyhu6 & Ftyhu6); +assign Gxyhu6 = (~(Mdhpw6[3] & Nxyhu6)); +assign Nxyhu6 = (~(Uxyhu6 & Byyhu6)); +assign Byyhu6 = (~(Iyyhu6 & Cvyhu6)); +assign Uxyhu6 = (~(Pyyhu6 & Wyyhu6)); +assign Wyyhu6 = (~(Dzyhu6 & Kzyhu6)); +assign Kzyhu6 = (~(Lbyhu6 & Mdhpw6[0])); +assign Dzyhu6 = (Pryhu6 | Rzyhu6); +assign Qvyhu6 = (~(Ksyhu6 | Vnyhu6)); +assign Vnyhu6 = (Mdhpw6[3] ? Hgyhu6 : Yzyhu6); +assign Yzyhu6 = (~(Mfyhu6 & Tfyhu6)); +assign Ksyhu6 = (~(I6yhu6 & F0zhu6)); +assign F0zhu6 = (~(M0zhu6 & Ziyhu6)); +assign M0zhu6 = (~(Mdhpw6[0] | Ighpw6[4])); +assign I6yhu6 = (~(T0zhu6 | A1zhu6)); +assign Zehpw6[1] = (~(H1zhu6 & O1zhu6)); +assign O1zhu6 = (~(U5yhu6 & V1zhu6)); +assign V1zhu6 = (~(C2zhu6 & J2zhu6)); +assign J2zhu6 = (Q2zhu6 & X2zhu6); +assign X2zhu6 = (~(E3zhu6 & Ighpw6[0])); +assign E3zhu6 = (L3zhu6 & Eiyhu6); +assign L3zhu6 = (~(S3zhu6 & Z3zhu6)); +assign Z3zhu6 = (Y7yhu6 | Mdhpw6[0]); +assign S3zhu6 = (Ighpw6[1] | Ighpw6[3]); +assign Q2zhu6 = (G4zhu6 & Joyhu6); +assign G4zhu6 = (~(N4zhu6 & U4zhu6)); +assign N4zhu6 = (Hknhu6 & B5zhu6); +assign B5zhu6 = (~(Pyyhu6 & I5zhu6)); +assign I5zhu6 = (P5zhu6 | R7yhu6); +assign C2zhu6 = (W5zhu6 & D6zhu6); +assign D6zhu6 = (Mdhpw6[3] ? R6zhu6 : K6zhu6); +assign R6zhu6 = (Mfyhu6 & Y6zhu6); +assign Y6zhu6 = (~(F7zhu6 & Lbyhu6)); +assign Lbyhu6 = (M7zhu6 & T7zhu6); +assign F7zhu6 = (Mdhpw6[2] & A8zhu6); +assign A8zhu6 = (~(H8zhu6 & Mdhpw6[0])); +assign H8zhu6 = (~(O8zhu6 | Ulnhu6)); +assign Mfyhu6 = (~(V8zhu6 & Epyhu6)); +assign V8zhu6 = (~(C9zhu6 | Ighpw6[2])); +assign K6zhu6 = (Pryhu6 & Tfyhu6); +assign W5zhu6 = (J9zhu6 & Q9zhu6); +assign Q9zhu6 = (~(X9zhu6 & R7yhu6)); +assign H1zhu6 = (Eazhu6 & Rlyhu6); +assign Rlyhu6 = (~(O9yhu6 & Cayhu6)); +assign Eazhu6 = (~(T8yhu6 & Lazhu6)); +assign Lazhu6 = (~(Deyhu6 & Sazhu6)); +assign Sazhu6 = (Zazhu6 | Ighpw6[1]); +assign Zehpw6[0] = (~(Gbzhu6 & Nbzhu6)); +assign Nbzhu6 = (~(T8yhu6 & Zazhu6)); +assign T8yhu6 = (~(O9yhu6 | U5yhu6)); +assign O9yhu6 = (Fnnhu6 & Ubzhu6); +assign Ubzhu6 = (Jayhu6 | Cayhu6); +assign Cayhu6 = (Bczhu6 & Ighpw6[4]); +assign Bczhu6 = (~(Ujyhu6 | Zwyhu6)); +assign Gbzhu6 = (~(U5yhu6 & Iczhu6)); +assign Iczhu6 = (~(Pczhu6 & Wczhu6)); +assign Wczhu6 = (Ddzhu6 & Kdzhu6); +assign Kdzhu6 = (~(X9zhu6 | A1zhu6)); +assign X9zhu6 = (Rdzhu6 & Iyyhu6); +assign Rdzhu6 = (~(Sbyhu6 | Ighpw6[0])); +assign Sbyhu6 = (Ydzhu6 & Fezhu6); +assign Fezhu6 = (Mdhpw6[1] & Mezhu6); +assign Mezhu6 = (Iahpw6[8] | Iahpw6[7]); +assign Ydzhu6 = (Tezhu6 & Pinhu6); +assign Ddzhu6 = (Afzhu6 & Iryhu6); +assign Iryhu6 = (~(Hfzhu6 & M7zhu6)); +assign Hfzhu6 = (!T7zhu6); +assign T7zhu6 = (~(Ofzhu6 & Vfzhu6)); +assign Vfzhu6 = (~(Cgzhu6 & Jgzhu6)); +assign Jgzhu6 = (~(Ulnhu6 | Mdhpw6[1])); +assign Cgzhu6 = (~(Qgzhu6 | R7yhu6)); +assign Afzhu6 = (~(Ziyhu6 & Ighpw6[4])); +assign Ziyhu6 = (~(Y7yhu6 | Zazhu6)); +assign Pczhu6 = (Xgzhu6 & J9zhu6); +assign J9zhu6 = (Ehzhu6 & Lhzhu6); +assign Lhzhu6 = (~(Mdhpw6[3] & Agyhu6)); +assign Ehzhu6 = (Shzhu6 & Ftyhu6); +assign Ftyhu6 = (~(Zhzhu6 & Ighpw6[2])); +assign Zhzhu6 = (~(Deyhu6 | Ighpw6[4])); +assign Shzhu6 = (~(Iyyhu6 & Gizhu6)); +assign Gizhu6 = (~(Deyhu6 & Nizhu6)); +assign Nizhu6 = (C9zhu6 | Mdhpw6[3]); +assign Xgzhu6 = (Uizhu6 & Bjzhu6); +assign Bjzhu6 = (~(Swyhu6 & Zazhu6)); +assign Swyhu6 = (Ijzhu6 & Ighpw6[2]); +assign Uizhu6 = (~(Mdhpw6[3] & Pjzhu6)); +assign Pjzhu6 = (~(Wjzhu6 & Dkzhu6)); +assign Dkzhu6 = (~(Kkzhu6 | Hgyhu6)); +assign Hgyhu6 = (Rkzhu6 & Zazhu6); +assign Kkzhu6 = (~(Tfyhu6 & Wryhu6)); +assign Wryhu6 = (~(Ykzhu6 & Epyhu6)); +assign Ykzhu6 = (~(Vuyhu6 | Deyhu6)); +assign Tfyhu6 = (~(Rkzhu6 & Ighpw6[0])); +assign Rkzhu6 = (Flzhu6 & Epyhu6); +assign Flzhu6 = (~(Vuyhu6 | Ighpw6[1])); +assign Wjzhu6 = (Mlzhu6 & Tlzhu6); +assign Tlzhu6 = (~(M7zhu6 & Amzhu6)); +assign M7zhu6 = (Hmzhu6 & Omzhu6); +assign Hmzhu6 = (~(Wdyhu6 | Vmzhu6)); +assign Mlzhu6 = (Cnzhu6 & Joyhu6); +assign Cnzhu6 = (~(U4zhu6 & Jnzhu6)); +assign Jnzhu6 = (~(Hknhu6 & Amzhu6)); +assign Amzhu6 = (~(Mdhpw6[2] & Qnzhu6)); +assign U4zhu6 = (!Pryhu6); +assign Pryhu6 = (~(Xnzhu6 & Eozhu6)); +assign Eozhu6 = (~(Vmzhu6 | Ighpw6[1])); +assign Xnzhu6 = (~(Zazhu6 | Wdyhu6)); +assign Zazhu6 = (!Ighpw6[0]); +assign Pkhpw6[1] = (~(Lozhu6 & Sozhu6)); +assign Sozhu6 = (~(Zozhu6 & Gpzhu6)); +assign Zozhu6 = (~(Npzhu6 & Upzhu6)); +assign Upzhu6 = (~(Bqzhu6 & Iqzhu6)); +assign Bqzhu6 = (~(Pqzhu6 | Wqzhu6)); +assign Lozhu6 = (~(Drzhu6 & Krzhu6)); +assign Pkhpw6[0] = (~(Rrzhu6 & Yrzhu6)); +assign Yrzhu6 = (~(Krzhu6 & Fszhu6)); +assign Rrzhu6 = (~(Mszhu6 | Tszhu6)); +assign Mszhu6 = (Atzhu6 & Iqzhu6); +assign Atzhu6 = (~(Sqhpw6[0] | Sqhpw6[1])); +assign Vnfpw6[7] = (Ppfpw6[13] & Ivfhu6); +assign Vnfpw6[6] = (Ppfpw6[12] & Ivfhu6); +assign Vnfpw6[5] = (Ppfpw6[11] & Ivfhu6); +assign Vnfpw6[4] = (Ppfpw6[10] & Ivfhu6); +assign Vnfpw6[3] = (Ppfpw6[9] & Ivfhu6); +assign Vnfpw6[2] = (Ppfpw6[8] & Ivfhu6); +assign Vnfpw6[1] = (Ppfpw6[7] & Ivfhu6); +assign Vnfpw6[0] = (Ppfpw6[6] & Ivfhu6); +assign R0ghu6 = (~(Htzhu6 & Otzhu6)); +assign Otzhu6 = (~(Vtzhu6 & Cuzhu6)); +assign Htzhu6 = (Juzhu6 | Quzhu6); +assign Tgfpw6[9] = (~(Xuzhu6 | Evzhu6)); +assign Tgfpw6[8] = (~(Xuzhu6 | Lvzhu6)); +assign Tgfpw6[7] = (~(Xuzhu6 | Svzhu6)); +assign Tgfpw6[6] = (~(Xuzhu6 | Zvzhu6)); +assign Tgfpw6[5] = (~(Xuzhu6 | Gwzhu6)); +assign Tgfpw6[4] = (~(Xuzhu6 | Nwzhu6)); +assign Tgfpw6[3] = (~(Xuzhu6 | Uwzhu6)); +assign Tgfpw6[31] = (~(Xuzhu6 | Bxzhu6)); +assign Tgfpw6[30] = (~(Xuzhu6 | Ixzhu6)); +assign Tgfpw6[2] = (~(Xuzhu6 | Pxzhu6)); +assign Tgfpw6[29] = (~(Xuzhu6 | Wxzhu6)); +assign Tgfpw6[28] = (~(Xuzhu6 | Dyzhu6)); +assign Tgfpw6[27] = (~(Kyzhu6 | Xuzhu6)); +assign Tgfpw6[26] = (~(Ryzhu6 | Xuzhu6)); +assign Tgfpw6[25] = (~(Yyzhu6 | Xuzhu6)); +assign Tgfpw6[24] = (~(Fzzhu6 | Xuzhu6)); +assign Tgfpw6[23] = (~(Mzzhu6 | Xuzhu6)); +assign Tgfpw6[22] = (~(Tzzhu6 | Xuzhu6)); +assign Tgfpw6[21] = (~(A00iu6 | Xuzhu6)); +assign Tgfpw6[20] = (~(H00iu6 | Xuzhu6)); +assign Tgfpw6[1] = (~(Xuzhu6 | O00iu6)); +assign Tgfpw6[19] = (~(V00iu6 | Xuzhu6)); +assign Tgfpw6[18] = (~(C10iu6 | Xuzhu6)); +assign Tgfpw6[17] = (~(J10iu6 | Xuzhu6)); +assign Tgfpw6[16] = (~(Q10iu6 | Xuzhu6)); +assign Tgfpw6[15] = (~(X10iu6 | Xuzhu6)); +assign Tgfpw6[14] = (~(Xuzhu6 | E20iu6)); +assign Tgfpw6[13] = (~(L20iu6 | Xuzhu6)); +assign Tgfpw6[12] = (~(Xuzhu6 | S20iu6)); +assign Tgfpw6[11] = (~(Xuzhu6 | Z20iu6)); +assign Tgfpw6[10] = (~(Xuzhu6 | G30iu6)); +assign Tgfpw6[0] = (~(Xuzhu6 | N30iu6)); +assign Mifpw6[9] = (~(Xuzhu6 | U30iu6)); +assign Mifpw6[8] = (~(Xuzhu6 | B40iu6)); +assign Mifpw6[7] = (~(Xuzhu6 | I40iu6)); +assign Mifpw6[6] = (~(Xuzhu6 | P40iu6)); +assign Mifpw6[5] = (~(Xuzhu6 | W40iu6)); +assign Mifpw6[4] = (~(Xuzhu6 | D50iu6)); +assign Mifpw6[3] = (~(Xuzhu6 | K50iu6)); +assign Mifpw6[31] = (~(Xuzhu6 | R50iu6)); +assign Mifpw6[30] = (~(Xuzhu6 | Y50iu6)); +assign Mifpw6[2] = (~(Xuzhu6 | F60iu6)); +assign Mifpw6[29] = (~(Xuzhu6 | M60iu6)); +assign Mifpw6[28] = (~(Xuzhu6 | T60iu6)); +assign Mifpw6[27] = (~(Xuzhu6 | A70iu6)); +assign Mifpw6[26] = (~(Xuzhu6 | H70iu6)); +assign Mifpw6[25] = (~(Xuzhu6 | O70iu6)); +assign Mifpw6[24] = (~(Xuzhu6 | V70iu6)); +assign Mifpw6[23] = (~(Xuzhu6 | C80iu6)); +assign Mifpw6[22] = (~(Xuzhu6 | J80iu6)); +assign Mifpw6[21] = (~(Xuzhu6 | Q80iu6)); +assign Mifpw6[20] = (~(Xuzhu6 | X80iu6)); +assign Mifpw6[1] = (~(Xuzhu6 | E90iu6)); +assign Mifpw6[19] = (~(Xuzhu6 | L90iu6)); +assign Mifpw6[18] = (~(Xuzhu6 | S90iu6)); +assign Mifpw6[17] = (~(Xuzhu6 | Z90iu6)); +assign Mifpw6[16] = (~(Xuzhu6 | Ga0iu6)); +assign Mifpw6[15] = (~(Xuzhu6 | Na0iu6)); +assign Mifpw6[14] = (~(Xuzhu6 | Ua0iu6)); +assign Mifpw6[13] = (~(Xuzhu6 | Bb0iu6)); +assign Mifpw6[12] = (~(Xuzhu6 | Ib0iu6)); +assign Mifpw6[11] = (~(Xuzhu6 | Pb0iu6)); +assign Mifpw6[10] = (~(Xuzhu6 | Wb0iu6)); +assign Mifpw6[0] = (~(Xuzhu6 | Dc0iu6)); +assign Xuzhu6 = (Kc0iu6 & Rc0iu6); +assign Rc0iu6 = (~(Yc0iu6 & Fd0iu6)); +assign Yc0iu6 = (C0ehu6 & Md0iu6); +assign Kc0iu6 = (Td0iu6 | Ae0iu6); +assign Idfpw6[9] = (He0iu6 & Oe0iu6); +assign Idfpw6[8] = (~(Ve0iu6 | Cf0iu6)); +assign Idfpw6[7] = (~(Jf0iu6 | Cf0iu6)); +assign Idfpw6[6] = (Qf0iu6 & Oe0iu6); +assign Idfpw6[5] = (~(Xf0iu6 | Cf0iu6)); +assign Idfpw6[4] = (~(Eg0iu6 | Cf0iu6)); +assign Idfpw6[3] = (~(Lg0iu6 | Cf0iu6)); +assign Idfpw6[30] = (~(Sg0iu6 | Cf0iu6)); +assign Idfpw6[2] = (Zg0iu6 & Gh0iu6); +assign Zg0iu6 = (Nh0iu6 & Oe0iu6); +assign Nh0iu6 = (~(Uh0iu6 & H6ghu6)); +assign Uh0iu6 = (Bi0iu6 & Ii0iu6); +assign Idfpw6[29] = (~(Pi0iu6 | Cf0iu6)); +assign Idfpw6[28] = (~(Wi0iu6 | Cf0iu6)); +assign Idfpw6[27] = (Dj0iu6 & Oe0iu6); +assign Idfpw6[26] = (Kj0iu6 & Oe0iu6); +assign Idfpw6[25] = (Rj0iu6 & Oe0iu6); +assign Idfpw6[24] = (~(Yj0iu6 | Cf0iu6)); +assign Idfpw6[23] = (~(Fk0iu6 | Cf0iu6)); +assign Idfpw6[22] = (~(Mk0iu6 | Cf0iu6)); +assign Idfpw6[21] = (~(Tk0iu6 | Cf0iu6)); +assign Idfpw6[20] = (~(Al0iu6 | Cf0iu6)); +assign Idfpw6[1] = (~(Hl0iu6 | Cf0iu6)); +assign Idfpw6[19] = (~(Ol0iu6 | Cf0iu6)); +assign Idfpw6[18] = (~(Vl0iu6 | Cf0iu6)); +assign Idfpw6[17] = (~(Cm0iu6 | Cf0iu6)); +assign Idfpw6[16] = (~(Jm0iu6 | Cf0iu6)); +assign Idfpw6[15] = (~(Qm0iu6 | Cf0iu6)); +assign Idfpw6[14] = (~(Xm0iu6 | Cf0iu6)); +assign Idfpw6[13] = (~(En0iu6 | Cf0iu6)); +assign Idfpw6[12] = (~(Ln0iu6 | Cf0iu6)); +assign Idfpw6[11] = (~(Sn0iu6 | Cf0iu6)); +assign Idfpw6[10] = (~(Zn0iu6 | Cf0iu6)); +assign Cf0iu6 = (!Oe0iu6); +assign Idfpw6[0] = (Go0iu6 & Oe0iu6); +assign Dqfhu6 = (H6ghu6 & No0iu6); +assign No0iu6 = (~(Uo0iu6 & Bp0iu6)); +assign Bp0iu6 = (Ip0iu6 & Pp0iu6); +assign Pp0iu6 = (~(Wp0iu6 & Dq0iu6)); +assign Dq0iu6 = (~(Kq0iu6 & Rq0iu6)); +assign Rq0iu6 = (~(Yq0iu6 & Fr0iu6)); +assign Fr0iu6 = (~(Mr0iu6 | Tr0iu6)); +assign Yq0iu6 = (~(As0iu6 | Hs0iu6)); +assign Ip0iu6 = (~(C0ehu6 & Os0iu6)); +assign Os0iu6 = (Vs0iu6 | Ct0iu6); +assign Ct0iu6 = (vis_apsr_o[1] & Jt0iu6); +assign Jt0iu6 = (~(Qt0iu6 & Xt0iu6)); +assign Xt0iu6 = (Eu0iu6 | Cyfpw6[7]); +assign Qt0iu6 = (Mr0iu6 | Cyfpw6[3]); +assign Uo0iu6 = (Lu0iu6 & Su0iu6); +assign Su0iu6 = (Zu0iu6 | Cyfpw6[4]); +assign Eblhu6 = (Gv0iu6 & Rrlhu6); +assign Gv0iu6 = (Nv0iu6 ? Tzdpw6 : vis_pc_o[23]); +assign Lclhu6 = (Uv0iu6 & Kqlhu6); +assign Uv0iu6 = (Nv0iu6 ? A0epw6 : vis_pc_o[24]); +assign Sdlhu6 = (Bw0iu6 & Dplhu6); +assign Bw0iu6 = (Nv0iu6 ? H0epw6 : vis_pc_o[25]); +assign Zelhu6 = (Iw0iu6 & Wnlhu6); +assign Iw0iu6 = (Nv0iu6 ? O0epw6 : vis_pc_o[26]); +assign Gglhu6 = (Pw0iu6 & Pmlhu6); +assign Pw0iu6 = (Nv0iu6 ? V0epw6 : vis_pc_o[27]); +assign Nhlhu6 = (Ww0iu6 & Illhu6); +assign Ww0iu6 = (Nv0iu6 ? Dx0iu6 : vis_pc_o[28]); +assign Uilhu6 = (Kx0iu6 & Bklhu6); +assign Kx0iu6 = (Nv0iu6 ? Rx0iu6 : vis_pc_o[29]); +assign Knmhu6 = (Yx0iu6 | G4hpw6[0]); +assign Romhu6 = (Yx0iu6 | G4hpw6[1]); +assign Ypmhu6 = (Yx0iu6 | G4hpw6[2]); +assign Frmhu6 = (Yx0iu6 | G4hpw6[3]); +assign Gwhhu6 = (Fy0iu6 & A4khu6); +assign Fy0iu6 = (My0iu6 & Ty0iu6); +assign Oxhhu6 = (Az0iu6 & S2khu6); +assign Az0iu6 = (Ty0iu6 ? Hz0iu6 : vis_pc_o[0]); +assign Wyhhu6 = (Oz0iu6 & K1khu6); +assign Oz0iu6 = (Ty0iu6 ? Tugpw6[0] : vis_pc_o[1]); +assign E0ihu6 = (Vz0iu6 & C0khu6); +assign Vz0iu6 = (Ty0iu6 ? Tugpw6[1] : vis_pc_o[2]); +assign M1ihu6 = (C01iu6 & Uyjhu6); +assign C01iu6 = (Ty0iu6 ? Tugpw6[2] : vis_pc_o[3]); +assign U2ihu6 = (J01iu6 & Mxjhu6); +assign J01iu6 = (Ty0iu6 ? Tugpw6[3] : vis_pc_o[4]); +assign C4ihu6 = (Q01iu6 & Ewjhu6); +assign Q01iu6 = (Ty0iu6 ? Tugpw6[4] : vis_pc_o[5]); +assign K5ihu6 = (X01iu6 & Wujhu6); +assign X01iu6 = (Ty0iu6 ? Tugpw6[5] : vis_pc_o[6]); +assign S6ihu6 = (E11iu6 & Otjhu6); +assign E11iu6 = (Ty0iu6 ? Tugpw6[6] : vis_pc_o[7]); +assign Msmhu6 = (Yx0iu6 | G4hpw6[4]); +assign A8ihu6 = (L11iu6 & Gsjhu6); +assign L11iu6 = (Ty0iu6 ? Tugpw6[7] : vis_pc_o[8]); +assign I9ihu6 = (S11iu6 & Yqjhu6); +assign S11iu6 = (Ty0iu6 ? Tugpw6[8] : vis_pc_o[9]); +assign Qaihu6 = (Z11iu6 & Qpjhu6); +assign Z11iu6 = (Ty0iu6 ? Tugpw6[9] : vis_pc_o[10]); +assign Ybihu6 = (G21iu6 & Iojhu6); +assign G21iu6 = (Ty0iu6 ? Ixdpw6 : vis_pc_o[11]); +assign Gdihu6 = (N21iu6 & Anjhu6); +assign N21iu6 = (Ty0iu6 ? Tugpw6[11] : vis_pc_o[12]); +assign Oeihu6 = (U21iu6 & Sljhu6); +assign U21iu6 = (Ty0iu6 ? Tugpw6[12] : vis_pc_o[13]); +assign Wfihu6 = (B31iu6 & Kkjhu6); +assign B31iu6 = (Ty0iu6 ? Tugpw6[13] : vis_pc_o[14]); +assign Ehihu6 = (I31iu6 & Cjjhu6); +assign I31iu6 = (Ty0iu6 ? Pxdpw6 : vis_pc_o[15]); +assign Miihu6 = (P31iu6 & Uhjhu6); +assign P31iu6 = (Ty0iu6 ? Wxdpw6 : vis_pc_o[16]); +assign Ujihu6 = (W31iu6 & Mgjhu6); +assign W31iu6 = (Ty0iu6 ? Dydpw6 : vis_pc_o[17]); +assign Clihu6 = (D41iu6 & Efjhu6); +assign D41iu6 = (Ty0iu6 ? Kydpw6 : vis_pc_o[18]); +assign Kmihu6 = (K41iu6 & Wdjhu6); +assign K41iu6 = (Ty0iu6 ? Rydpw6 : vis_pc_o[19]); +assign Snihu6 = (R41iu6 & Ocjhu6); +assign R41iu6 = (Ty0iu6 ? Yydpw6 : vis_pc_o[20]); +assign Apihu6 = (Y41iu6 & Gbjhu6); +assign Y41iu6 = (Ty0iu6 ? Fzdpw6 : vis_pc_o[21]); +assign Iqihu6 = (F51iu6 & Y9jhu6); +assign F51iu6 = (Ty0iu6 ? Mzdpw6 : vis_pc_o[22]); +assign Qrihu6 = (M51iu6 & Q8jhu6); +assign M51iu6 = (Ty0iu6 ? Tzdpw6 : vis_pc_o[23]); +assign Ysihu6 = (T51iu6 & I7jhu6); +assign T51iu6 = (Ty0iu6 ? A0epw6 : vis_pc_o[24]); +assign Guihu6 = (A61iu6 & A6jhu6); +assign A61iu6 = (Ty0iu6 ? H0epw6 : vis_pc_o[25]); +assign Ovihu6 = (H61iu6 & S4jhu6); +assign H61iu6 = (Ty0iu6 ? O0epw6 : vis_pc_o[26]); +assign Wwihu6 = (O61iu6 & K3jhu6); +assign O61iu6 = (Ty0iu6 ? V0epw6 : vis_pc_o[27]); +assign Eyihu6 = (V61iu6 & C2jhu6); +assign V61iu6 = (Ty0iu6 ? Dx0iu6 : vis_pc_o[28]); +assign Mzihu6 = (C71iu6 & U0jhu6); +assign C71iu6 = (Ty0iu6 ? Rx0iu6 : vis_pc_o[29]); +assign Ttmhu6 = (V5hpw6[0] & J71iu6); +assign Avmhu6 = (V5hpw6[1] & Q71iu6); +assign Q71iu6 = (~(X71iu6 & Nv0iu6)); +assign I5khu6 = (E81iu6 | Aygpw6[0]); +assign Q6khu6 = (E81iu6 | Aygpw6[1]); +assign Y7khu6 = (E81iu6 | Aygpw6[2]); +assign G9khu6 = (E81iu6 | Aygpw6[3]); +assign Oakhu6 = (E81iu6 | Aygpw6[4]); +assign Wbkhu6 = (Pzgpw6[0] & J71iu6); +assign Edkhu6 = (Pzgpw6[1] & L81iu6); +assign L81iu6 = (~(X71iu6 & Ty0iu6)); +assign Ufkhu6 = (S81iu6 & Dmmhu6); +assign S81iu6 = (My0iu6 & Nv0iu6); +assign Chkhu6 = (Z81iu6 & Wkmhu6); +assign Z81iu6 = (Nv0iu6 ? Hz0iu6 : vis_pc_o[0]); +assign Kikhu6 = (G91iu6 & Pjmhu6); +assign G91iu6 = (Nv0iu6 ? Tugpw6[0] : vis_pc_o[1]); +assign Sjkhu6 = (N91iu6 & Iimhu6); +assign N91iu6 = (Nv0iu6 ? Tugpw6[1] : vis_pc_o[2]); +assign Alkhu6 = (U91iu6 & Bhmhu6); +assign U91iu6 = (Nv0iu6 ? Tugpw6[2] : vis_pc_o[3]); +assign Imkhu6 = (Ba1iu6 & Ufmhu6); +assign Ba1iu6 = (Nv0iu6 ? Tugpw6[3] : vis_pc_o[4]); +assign Qnkhu6 = (Ia1iu6 & Nemhu6); +assign Ia1iu6 = (Nv0iu6 ? Tugpw6[4] : vis_pc_o[5]); +assign Yokhu6 = (Pa1iu6 & Gdmhu6); +assign Pa1iu6 = (Nv0iu6 ? Tugpw6[5] : vis_pc_o[6]); +assign Gqkhu6 = (Wa1iu6 & Zbmhu6); +assign Wa1iu6 = (Nv0iu6 ? Tugpw6[6] : vis_pc_o[7]); +assign Orkhu6 = (Db1iu6 & Samhu6); +assign Db1iu6 = (Nv0iu6 ? Tugpw6[7] : vis_pc_o[8]); +assign Wskhu6 = (Kb1iu6 & L9mhu6); +assign Kb1iu6 = (Nv0iu6 ? Tugpw6[8] : vis_pc_o[9]); +assign Eukhu6 = (Rb1iu6 & E8mhu6); +assign Rb1iu6 = (Nv0iu6 ? Tugpw6[9] : vis_pc_o[10]); +assign Mvkhu6 = (Yb1iu6 & X6mhu6); +assign Yb1iu6 = (Nv0iu6 ? Ixdpw6 : vis_pc_o[11]); +assign Uwkhu6 = (Fc1iu6 & Q5mhu6); +assign Fc1iu6 = (Nv0iu6 ? Tugpw6[11] : vis_pc_o[12]); +assign Cykhu6 = (Mc1iu6 & J4mhu6); +assign Mc1iu6 = (Nv0iu6 ? Tugpw6[12] : vis_pc_o[13]); +assign Kzkhu6 = (Tc1iu6 & C3mhu6); +assign Tc1iu6 = (Nv0iu6 ? Tugpw6[13] : vis_pc_o[14]); +assign S0lhu6 = (Ad1iu6 & V1mhu6); +assign Ad1iu6 = (Nv0iu6 ? Pxdpw6 : vis_pc_o[15]); +assign A2lhu6 = (Hd1iu6 & O0mhu6); +assign Hd1iu6 = (Nv0iu6 ? Wxdpw6 : vis_pc_o[16]); +assign I3lhu6 = (Od1iu6 & Hzlhu6); +assign Od1iu6 = (Nv0iu6 ? Dydpw6 : vis_pc_o[17]); +assign Q4lhu6 = (Vd1iu6 & Aylhu6); +assign Vd1iu6 = (Nv0iu6 ? Kydpw6 : vis_pc_o[18]); +assign Y5lhu6 = (Ce1iu6 & Twlhu6); +assign Ce1iu6 = (Nv0iu6 ? Rydpw6 : vis_pc_o[19]); +assign G7lhu6 = (Je1iu6 & Mvlhu6); +assign Je1iu6 = (Nv0iu6 ? Yydpw6 : vis_pc_o[20]); +assign O8lhu6 = (Qe1iu6 & Fulhu6); +assign Qe1iu6 = (Nv0iu6 ? Fzdpw6 : vis_pc_o[21]); +assign W9lhu6 = (Xe1iu6 & Yslhu6); +assign Xe1iu6 = (Nv0iu6 ? Mzdpw6 : vis_pc_o[22]); +assign R9ohu6 = (Ty0iu6 ? Ef1iu6 : vis_pc_o[30]); +assign M9ohu6 = (Nv0iu6 ? Ef1iu6 : vis_pc_o[30]); +assign X3yhu6 = (Sf1iu6 ? X0ohu6 : Lf1iu6); +assign Q3yhu6 = (~(Zf1iu6 & Gg1iu6)); +assign Gg1iu6 = (Ng1iu6 | Ug1iu6); +assign Ug1iu6 = (!Bh1iu6); +assign Zf1iu6 = (~(Ih1iu6 | Ph1iu6)); +assign Ih1iu6 = (Fanhu6 & Wh1iu6); +assign Wh1iu6 = (~(Iahpw6[1] & Di1iu6)); +assign J3yhu6 = (~(Ki1iu6 & Ri1iu6)); +assign Ri1iu6 = (~(Yi1iu6 & Fj1iu6)); +assign Yi1iu6 = (~(Ofzhu6 | Mdhpw6[0])); +assign Ki1iu6 = (~(Jdnhu6 & Mj1iu6)); +assign Mj1iu6 = (~(Iahpw6[2] & Di1iu6)); +assign C3yhu6 = (~(Tj1iu6 & Ak1iu6)); +assign Ak1iu6 = (Hk1iu6 & Ok1iu6); +assign Ok1iu6 = (~(Uthpw6[7] & Vk1iu6)); +assign Hk1iu6 = (~(Cl1iu6 & Jdnhu6)); +assign Tj1iu6 = (Jl1iu6 & Ql1iu6); +assign Ql1iu6 = (~(Iahpw6[6] & Xl1iu6)); +assign Jl1iu6 = (~(Iahpw6[7] & Z4yhu6)); +assign V2yhu6 = (Em1iu6 ? Iahpw6[30] : Shhpw6[31]); +assign O2yhu6 = (Sm1iu6 ? Lm1iu6 : Jshpw6[31]); +assign H2yhu6 = (~(Zm1iu6 & Gn1iu6)); +assign Gn1iu6 = (Nn1iu6 & Un1iu6); +assign Un1iu6 = (~(Bo1iu6 & Jshpw6[31])); +assign Nn1iu6 = (Io1iu6 & Po1iu6); +assign Io1iu6 = (~(Wo1iu6 & Dp1iu6)); +assign Dp1iu6 = (~(Kp1iu6 & Rp1iu6)); +assign Rp1iu6 = (Yp1iu6 & Fq1iu6); +assign Fq1iu6 = (Mq1iu6 & Tq1iu6); +assign Tq1iu6 = (~(Ar1iu6 & Fkfpw6[31])); +assign Mq1iu6 = (Hr1iu6 & Or1iu6); +assign Or1iu6 = (~(Ligpw6[28] & Vr1iu6)); +assign Hr1iu6 = (~(Engpw6[28] & Cs1iu6)); +assign Yp1iu6 = (Js1iu6 & Qs1iu6); +assign Qs1iu6 = (~(Akgpw6[28] & Xs1iu6)); +assign Js1iu6 = (Et1iu6 & Lt1iu6); +assign Lt1iu6 = (~(HRDATA[31] & St1iu6)); +assign Et1iu6 = (~(E1hpw6[31] & Zt1iu6)); +assign Kp1iu6 = (Gu1iu6 & Nu1iu6); +assign Nu1iu6 = (Uu1iu6 & Bv1iu6); +assign Bv1iu6 = (~(Iv1iu6 & vis_pc_o[30])); +assign Uu1iu6 = (Pv1iu6 & Wv1iu6); +assign Wv1iu6 = (~(Plgpw6[28] & Dw1iu6)); +assign Pv1iu6 = (~(K7hpw6[31] & Kw1iu6)); +assign Gu1iu6 = (Rw1iu6 & Yw1iu6); +assign Zm1iu6 = (Fx1iu6 & Mx1iu6); +assign Mx1iu6 = (~(ECOREVNUM[23] & Tx1iu6)); +assign Fx1iu6 = (~(Uthpw6[31] & Sf1iu6)); +assign A2yhu6 = (~(Ay1iu6 & Hy1iu6)); +assign Hy1iu6 = (Oy1iu6 & Vy1iu6); +assign Oy1iu6 = (Cz1iu6 & Jz1iu6); +assign Jz1iu6 = (~(Uthpw6[31] & Vk1iu6)); +assign Cz1iu6 = (~(ECOREVNUM[27] & Qz1iu6)); +assign Ay1iu6 = (Xz1iu6 & E02iu6); +assign E02iu6 = (~(Iahpw6[30] & Xl1iu6)); +assign Xz1iu6 = (L02iu6 | Jayhu6); +assign Jayhu6 = (!Mdhpw6[3]); +assign T1yhu6 = (~(S02iu6 & Z02iu6)); +assign Z02iu6 = (G12iu6 & Vy1iu6); +assign Vy1iu6 = (~(Zbhpw6[30] & Cl1iu6)); +assign G12iu6 = (N12iu6 & U12iu6); +assign U12iu6 = (~(Uthpw6[30] & Vk1iu6)); +assign N12iu6 = (~(ECOREVNUM[26] & Qz1iu6)); +assign S02iu6 = (B22iu6 & I22iu6); +assign I22iu6 = (~(Iahpw6[29] & Xl1iu6)); +assign B22iu6 = (~(Iahpw6[30] & Z4yhu6)); +assign M1yhu6 = (~(P22iu6 & W22iu6)); +assign W22iu6 = (D32iu6 & K32iu6); +assign K32iu6 = (~(ECOREVNUM[25] & Qz1iu6)); +assign D32iu6 = (R32iu6 & Y32iu6); +assign Y32iu6 = (~(F42iu6 & Cl1iu6)); +assign F42iu6 = (Gwnhu6 & M42iu6); +assign M42iu6 = (~(Zbhpw6[28] & T42iu6)); +assign T42iu6 = (A52iu6 | W9ohu6); +assign R32iu6 = (~(Uthpw6[29] & Vk1iu6)); +assign P22iu6 = (H52iu6 & O52iu6); +assign O52iu6 = (~(Iahpw6[28] & Xl1iu6)); +assign H52iu6 = (~(Iahpw6[29] & Z4yhu6)); +assign F1yhu6 = (~(V52iu6 & C62iu6)); +assign C62iu6 = (J62iu6 & Q62iu6); +assign Q62iu6 = (~(Cl1iu6 & Zbhpw6[28])); +assign J62iu6 = (X62iu6 & E72iu6); +assign E72iu6 = (~(Uthpw6[28] & Vk1iu6)); +assign X62iu6 = (~(ECOREVNUM[24] & Qz1iu6)); +assign Qz1iu6 = (!L72iu6); +assign V52iu6 = (S72iu6 & Z72iu6); +assign Z72iu6 = (~(Iahpw6[27] & Xl1iu6)); +assign S72iu6 = (~(Iahpw6[28] & Z4yhu6)); +assign Y0yhu6 = (~(G82iu6 & N82iu6)); +assign N82iu6 = (U82iu6 & L72iu6); +assign U82iu6 = (~(Uthpw6[27] & Vk1iu6)); +assign G82iu6 = (B92iu6 & I92iu6); +assign I92iu6 = (~(Iahpw6[26] & Xl1iu6)); +assign B92iu6 = (~(Iahpw6[27] & Z4yhu6)); +assign R0yhu6 = (~(P92iu6 & W92iu6)); +assign W92iu6 = (Da2iu6 & Ka2iu6); +assign Ka2iu6 = (~(Uthpw6[26] & Vk1iu6)); +assign Da2iu6 = (~(Zbhpw6[26] & Cl1iu6)); +assign P92iu6 = (Ra2iu6 & Ya2iu6); +assign Ya2iu6 = (~(Iahpw6[25] & Xl1iu6)); +assign Ra2iu6 = (~(Iahpw6[26] & Z4yhu6)); +assign K0yhu6 = (~(Fb2iu6 & Mb2iu6)); +assign Mb2iu6 = (Tb2iu6 & L72iu6); +assign Tb2iu6 = (~(Uthpw6[25] & Vk1iu6)); +assign Fb2iu6 = (Ac2iu6 & Hc2iu6); +assign Hc2iu6 = (~(Iahpw6[24] & Xl1iu6)); +assign Ac2iu6 = (~(Iahpw6[25] & Z4yhu6)); +assign D0yhu6 = (~(Oc2iu6 & Vc2iu6)); +assign Vc2iu6 = (Cd2iu6 & L72iu6); +assign Cd2iu6 = (~(Uthpw6[24] & Vk1iu6)); +assign Oc2iu6 = (Jd2iu6 & Qd2iu6); +assign Qd2iu6 = (~(Iahpw6[23] & Xl1iu6)); +assign Jd2iu6 = (~(Iahpw6[24] & Z4yhu6)); +assign Wzxhu6 = (~(Xd2iu6 & Ee2iu6)); +assign Ee2iu6 = (Le2iu6 & L72iu6); +assign Le2iu6 = (~(Uthpw6[23] & Vk1iu6)); +assign Xd2iu6 = (Se2iu6 & Ze2iu6); +assign Ze2iu6 = (~(Iahpw6[22] & Xl1iu6)); +assign Se2iu6 = (~(Iahpw6[23] & Z4yhu6)); +assign Pzxhu6 = (~(Gf2iu6 & Nf2iu6)); +assign Nf2iu6 = (~(Iahpw6[22] & Z4yhu6)); +assign Gf2iu6 = (Uf2iu6 & Bg2iu6); +assign Bg2iu6 = (~(Uthpw6[22] & Vk1iu6)); +assign Uf2iu6 = (~(Iahpw6[21] & Xl1iu6)); +assign Izxhu6 = (~(Ig2iu6 & Pg2iu6)); +assign Pg2iu6 = (Wg2iu6 & L72iu6); +assign Wg2iu6 = (~(Uthpw6[21] & Vk1iu6)); +assign Ig2iu6 = (Dh2iu6 & Kh2iu6); +assign Kh2iu6 = (~(Iahpw6[20] & Xl1iu6)); +assign Dh2iu6 = (~(Iahpw6[21] & Z4yhu6)); +assign Bzxhu6 = (~(Rh2iu6 & Yh2iu6)); +assign Yh2iu6 = (Fi2iu6 & L72iu6); +assign Fi2iu6 = (~(Uthpw6[20] & Vk1iu6)); +assign Rh2iu6 = (Mi2iu6 & Ti2iu6); +assign Ti2iu6 = (~(Iahpw6[19] & Xl1iu6)); +assign Mi2iu6 = (~(Iahpw6[20] & Z4yhu6)); +assign Uyxhu6 = (~(Aj2iu6 & Hj2iu6)); +assign Hj2iu6 = (~(Iahpw6[19] & Z4yhu6)); +assign Aj2iu6 = (Oj2iu6 & Vj2iu6); +assign Vj2iu6 = (~(Uthpw6[19] & Vk1iu6)); +assign Oj2iu6 = (~(Iahpw6[18] & Xl1iu6)); +assign Nyxhu6 = (~(Ck2iu6 & Jk2iu6)); +assign Jk2iu6 = (~(Iahpw6[18] & Z4yhu6)); +assign Ck2iu6 = (Qk2iu6 & Xk2iu6); +assign Xk2iu6 = (~(Uthpw6[18] & Vk1iu6)); +assign Qk2iu6 = (~(Iahpw6[17] & Xl1iu6)); +assign Gyxhu6 = (~(El2iu6 & Ll2iu6)); +assign Ll2iu6 = (~(Iahpw6[17] & Z4yhu6)); +assign El2iu6 = (Sl2iu6 & Zl2iu6); +assign Zl2iu6 = (~(Uthpw6[17] & Vk1iu6)); +assign Sl2iu6 = (~(Iahpw6[16] & Xl1iu6)); +assign Zxxhu6 = (~(Gm2iu6 & Nm2iu6)); +assign Nm2iu6 = (Um2iu6 & L72iu6); +assign Um2iu6 = (~(Uthpw6[16] & Vk1iu6)); +assign Gm2iu6 = (Bn2iu6 & In2iu6); +assign In2iu6 = (~(Iahpw6[15] & Xl1iu6)); +assign Bn2iu6 = (~(Iahpw6[16] & Z4yhu6)); +assign Sxxhu6 = (~(Pn2iu6 & Wn2iu6)); +assign Wn2iu6 = (~(Iahpw6[15] & Z4yhu6)); +assign Pn2iu6 = (Do2iu6 & Ko2iu6); +assign Ko2iu6 = (~(Uthpw6[15] & Vk1iu6)); +assign Do2iu6 = (~(Iahpw6[14] & Xl1iu6)); +assign Lxxhu6 = (~(Ro2iu6 & Yo2iu6)); +assign Yo2iu6 = (~(Iahpw6[14] & Z4yhu6)); +assign Ro2iu6 = (Fp2iu6 & Mp2iu6); +assign Mp2iu6 = (~(Uthpw6[14] & Vk1iu6)); +assign Fp2iu6 = (~(Iahpw6[13] & Xl1iu6)); +assign Exxhu6 = (~(Tp2iu6 & Aq2iu6)); +assign Aq2iu6 = (~(Iahpw6[13] & Z4yhu6)); +assign Tp2iu6 = (Hq2iu6 & Oq2iu6); +assign Oq2iu6 = (~(Uthpw6[13] & Vk1iu6)); +assign Hq2iu6 = (~(Iahpw6[12] & Xl1iu6)); +assign Xwxhu6 = (~(Vq2iu6 & Cr2iu6)); +assign Cr2iu6 = (Jr2iu6 & L72iu6); +assign Jr2iu6 = (~(Uthpw6[12] & Vk1iu6)); +assign Vq2iu6 = (Qr2iu6 & Xr2iu6); +assign Xr2iu6 = (~(Iahpw6[11] & Xl1iu6)); +assign Qr2iu6 = (~(Iahpw6[12] & Z4yhu6)); +assign Qwxhu6 = (~(Es2iu6 & Ls2iu6)); +assign Ls2iu6 = (~(Iahpw6[11] & Z4yhu6)); +assign Es2iu6 = (Ss2iu6 & Zs2iu6); +assign Zs2iu6 = (~(Uthpw6[11] & Vk1iu6)); +assign Ss2iu6 = (~(Iahpw6[10] & Xl1iu6)); +assign Jwxhu6 = (~(Gt2iu6 & Nt2iu6)); +assign Nt2iu6 = (Ut2iu6 & L72iu6); +assign Ut2iu6 = (~(Uthpw6[10] & Vk1iu6)); +assign Gt2iu6 = (Bu2iu6 & Iu2iu6); +assign Iu2iu6 = (~(Iahpw6[9] & Xl1iu6)); +assign Bu2iu6 = (~(Iahpw6[10] & Z4yhu6)); +assign Cwxhu6 = (~(Pu2iu6 & Wu2iu6)); +assign Wu2iu6 = (~(Iahpw6[9] & Z4yhu6)); +assign Pu2iu6 = (Dv2iu6 & Kv2iu6); +assign Kv2iu6 = (~(Uthpw6[9] & Vk1iu6)); +assign Dv2iu6 = (~(Iahpw6[8] & Xl1iu6)); +assign Vvxhu6 = (~(Rv2iu6 & Yv2iu6)); +assign Yv2iu6 = (~(Iahpw6[8] & Z4yhu6)); +assign Rv2iu6 = (Fw2iu6 & Mw2iu6); +assign Mw2iu6 = (~(Uthpw6[8] & Vk1iu6)); +assign Fw2iu6 = (~(Iahpw6[7] & Xl1iu6)); +assign Ovxhu6 = (Tw2iu6 ? Mdhpw6[3] : SWDITMS); +assign Tw2iu6 = (Ax2iu6 & Hx2iu6); +assign Hx2iu6 = (Ox2iu6 & Vx2iu6); +assign Ox2iu6 = (~(Cy2iu6 & Ujyhu6)); +assign Cy2iu6 = (Jy2iu6 | Qy2iu6); +assign Qy2iu6 = (Ighpw6[1] ? Iyyhu6 : Xy2iu6); +assign Xy2iu6 = (Ez2iu6 & Lz2iu6); +assign Lz2iu6 = (~(Wdyhu6 & Sz2iu6)); +assign Sz2iu6 = (Mdhpw6[0] | Ighpw6[0]); +assign Jy2iu6 = (~(Zz2iu6 & G03iu6)); +assign G03iu6 = (~(N03iu6 & Ighpw6[2])); +assign N03iu6 = (Gjyhu6 & Eiyhu6); +assign Zz2iu6 = (Deyhu6 | Ighpw6[3]); +assign Ax2iu6 = (U03iu6 & B13iu6); +assign B13iu6 = (L02iu6 | Mdhpw6[0]); +assign Hvxhu6 = (W13iu6 ? P13iu6 : I13iu6); +assign I13iu6 = (D23iu6 & K23iu6); +assign K23iu6 = (R23iu6 & Y23iu6); +assign Y23iu6 = (~(Iahpw6[29] | Iahpw6[30])); +assign R23iu6 = (~(Iahpw6[27] | Iahpw6[28])); +assign D23iu6 = (F33iu6 & M33iu6); +assign M33iu6 = (~(Iahpw6[25] | Iahpw6[26])); +assign F33iu6 = (~(Iahpw6[23] | Iahpw6[24])); +assign Avxhu6 = (W13iu6 ? A43iu6 : T33iu6); +assign A43iu6 = (!Omdpw6); +assign Tuxhu6 = (Em1iu6 ? H43iu6 : Cjhpw6[3]); +assign H43iu6 = (~(Omdpw6 & O43iu6)); +assign Muxhu6 = (V43iu6 ? Lznhu6 : Dtnhu6); +assign V43iu6 = (~(Npzhu6 | Gpzhu6)); +assign Fuxhu6 = (~(C53iu6 ^ G2ohu6)); +assign Ytxhu6 = (Q53iu6 ? Punhu6 : J53iu6); +assign Q53iu6 = (~(Rrnhu6 | G2ohu6)); +assign J53iu6 = (!W9ohu6); +assign Rtxhu6 = (~(X53iu6 & E63iu6)); +assign E63iu6 = (~(Rgnhu6 & L63iu6)); +assign L63iu6 = (~(S63iu6 & Fmyhu6)); +assign S63iu6 = (~(Z63iu6 | G73iu6)); +assign G73iu6 = (~(N73iu6 | R7yhu6)); +assign Ktxhu6 = (U73iu6 ? Mmyhu6 : Ubnhu6); +assign U73iu6 = (B83iu6 & Mdhpw6[0]); +assign B83iu6 = (~(N5yhu6 | I83iu6)); +assign Dtxhu6 = (~(P83iu6 & W83iu6)); +assign W83iu6 = (D93iu6 & K93iu6); +assign K93iu6 = (~(Uthpw6[6] & Vk1iu6)); +assign D93iu6 = (R93iu6 & L72iu6); +assign R93iu6 = (~(Y93iu6 & Pinhu6)); +assign P83iu6 = (Fa3iu6 & Ma3iu6); +assign Ma3iu6 = (~(Iahpw6[6] & Z4yhu6)); +assign Fa3iu6 = (Ta3iu6 & Ab3iu6); +assign Ab3iu6 = (~(Ubnhu6 & Cl1iu6)); +assign Ta3iu6 = (~(Iahpw6[5] & Xl1iu6)); +assign Wsxhu6 = (~(Hb3iu6 & Ob3iu6)); +assign Ob3iu6 = (Vb3iu6 & Cc3iu6); +assign Cc3iu6 = (~(Cl1iu6 & Fanhu6)); +assign Vb3iu6 = (Jc3iu6 & L72iu6); +assign Jc3iu6 = (~(Uthpw6[5] & Vk1iu6)); +assign Hb3iu6 = (Qc3iu6 & Xc3iu6); +assign Xc3iu6 = (~(Iahpw6[4] & Xl1iu6)); +assign Qc3iu6 = (~(Iahpw6[5] & Z4yhu6)); +assign Psxhu6 = (~(Ed3iu6 & Ld3iu6)); +assign Ld3iu6 = (Sd3iu6 & L72iu6); +assign Sd3iu6 = (~(Uthpw6[4] & Vk1iu6)); +assign Ed3iu6 = (Zd3iu6 & Ge3iu6); +assign Ge3iu6 = (~(Iahpw6[3] & Xl1iu6)); +assign Zd3iu6 = (~(Iahpw6[4] & Z4yhu6)); +assign Isxhu6 = (W13iu6 ? N3nhu6 : Ne3iu6); +assign Ne3iu6 = (Iahpw6[3] & Ue3iu6); +assign Ue3iu6 = (~(T33iu6 & Bf3iu6)); +assign Bf3iu6 = (~(If3iu6 & Iahpw6[4])); +assign If3iu6 = (Iahpw6[5] & Iahpw6[6]); +assign T33iu6 = (Pf3iu6 | Iahpw6[4]); +assign Pf3iu6 = (Iahpw6[5] | Iahpw6[6]); +assign Bsxhu6 = (~(Wf3iu6 & Dg3iu6)); +assign Dg3iu6 = (~(Iahpw6[3] & Z4yhu6)); +assign Wf3iu6 = (Kg3iu6 & Rg3iu6); +assign Rg3iu6 = (~(Uthpw6[3] & Vk1iu6)); +assign Kg3iu6 = (~(Xl1iu6 & Iahpw6[2])); +assign Urxhu6 = (~(Yg3iu6 & Fh3iu6)); +assign Fh3iu6 = (Mh3iu6 & L72iu6); +assign Mh3iu6 = (~(Uthpw6[2] & Vk1iu6)); +assign Yg3iu6 = (Th3iu6 & Ai3iu6); +assign Ai3iu6 = (~(Xl1iu6 & Iahpw6[1])); +assign Th3iu6 = (~(Iahpw6[2] & Z4yhu6)); +assign Nrxhu6 = (~(Hi3iu6 & Oi3iu6)); +assign Oi3iu6 = (~(Vi3iu6 & B7nhu6)); +assign Vi3iu6 = (Cj3iu6 & L02iu6); +assign Cj3iu6 = (~(Vx2iu6 & Jj3iu6)); +assign Jj3iu6 = (~(A1zhu6 & Qj3iu6)); +assign Qj3iu6 = (Hknhu6 | K7yhu6); +assign K7yhu6 = (!Xj3iu6); +assign Hi3iu6 = (~(Q8nhu6 & Ek3iu6)); +assign Ek3iu6 = (~(Iahpw6[3] & Di1iu6)); +assign Grxhu6 = (~(Lk3iu6 & Sk3iu6)); +assign Sk3iu6 = (Zk3iu6 & Gl3iu6); +assign Gl3iu6 = (~(Q8nhu6 & Cl1iu6)); +assign Zk3iu6 = (Nl3iu6 & L72iu6); +assign Nl3iu6 = (~(Uthpw6[1] & Vk1iu6)); +assign Lk3iu6 = (Ul3iu6 & Bm3iu6); +assign Bm3iu6 = (~(Iahpw6[0] & Xl1iu6)); +assign Ul3iu6 = (~(Iahpw6[1] & Z4yhu6)); +assign Zqxhu6 = (~(Im3iu6 & Pm3iu6)); +assign Pm3iu6 = (Wm3iu6 & Dn3iu6); +assign Dn3iu6 = (~(B7nhu6 & Cl1iu6)); +assign Cl1iu6 = (Kn3iu6 & Y93iu6); +assign Wm3iu6 = (Rn3iu6 & L72iu6); +assign L72iu6 = (~(Y93iu6 & O8zhu6)); +assign Y93iu6 = (Yn3iu6 & Fmyhu6); +assign Rn3iu6 = (~(Uthpw6[0] & Vk1iu6)); +assign Vk1iu6 = (Fo3iu6 & Mo3iu6); +assign Fo3iu6 = (~(I83iu6 | Yenhu6)); +assign I83iu6 = (!N73iu6); +assign Im3iu6 = (To3iu6 & Ap3iu6); +assign Ap3iu6 = (~(Tonhu6 & Xl1iu6)); +assign Xl1iu6 = (~(Z4yhu6 | Fmyhu6)); +assign To3iu6 = (~(Iahpw6[0] & Z4yhu6)); +assign Sqxhu6 = (W13iu6 ? Pinhu6 : Tonhu6); +assign W13iu6 = (~(Hp3iu6 & Op3iu6)); +assign Op3iu6 = (~(Vp3iu6 | Mdhpw6[1])); +assign Hp3iu6 = (Mdhpw6[2] & Cq3iu6); +assign Lqxhu6 = (Jq3iu6 ? Zbhpw6[30] : Iahpw6[29]); +assign Eqxhu6 = (Em1iu6 ? Mdhpw6[2] : Cjhpw6[1]); +assign Xpxhu6 = (Em1iu6 ? Qq3iu6 : Cjhpw6[2]); +assign Qq3iu6 = (N3nhu6 & O43iu6); +assign Qpxhu6 = (Em1iu6 ? Mdhpw6[1] : Cjhpw6[0]); +assign Jpxhu6 = (Em1iu6 ? Iahpw6[0] : Shhpw6[1]); +assign Cpxhu6 = (Em1iu6 ? Iahpw6[1] : Shhpw6[2]); +assign Voxhu6 = (Em1iu6 ? Iahpw6[2] : Shhpw6[3]); +assign Ooxhu6 = (Em1iu6 ? Iahpw6[3] : Shhpw6[4]); +assign Hoxhu6 = (Em1iu6 ? Iahpw6[4] : Shhpw6[5]); +assign Aoxhu6 = (Em1iu6 ? Iahpw6[5] : Shhpw6[6]); +assign Tnxhu6 = (Em1iu6 ? Iahpw6[6] : Shhpw6[7]); +assign Mnxhu6 = (Em1iu6 ? Iahpw6[7] : Shhpw6[8]); +assign Fnxhu6 = (Em1iu6 ? Iahpw6[8] : Shhpw6[9]); +assign Ymxhu6 = (Em1iu6 ? Iahpw6[9] : Shhpw6[10]); +assign Rmxhu6 = (Em1iu6 ? Iahpw6[10] : Shhpw6[11]); +assign Kmxhu6 = (Em1iu6 ? Iahpw6[11] : Shhpw6[12]); +assign Dmxhu6 = (Em1iu6 ? Iahpw6[12] : Shhpw6[13]); +assign Wlxhu6 = (Em1iu6 ? Iahpw6[13] : Shhpw6[14]); +assign Plxhu6 = (Em1iu6 ? Iahpw6[14] : Shhpw6[15]); +assign Ilxhu6 = (Em1iu6 ? Iahpw6[15] : Shhpw6[16]); +assign Blxhu6 = (Em1iu6 ? Iahpw6[16] : Shhpw6[17]); +assign Ukxhu6 = (Em1iu6 ? Iahpw6[17] : Shhpw6[18]); +assign Nkxhu6 = (Em1iu6 ? Iahpw6[18] : Shhpw6[19]); +assign Gkxhu6 = (Em1iu6 ? Iahpw6[19] : Shhpw6[20]); +assign Zjxhu6 = (Em1iu6 ? Iahpw6[20] : Shhpw6[21]); +assign Sjxhu6 = (Em1iu6 ? Iahpw6[21] : Shhpw6[22]); +assign Ljxhu6 = (Em1iu6 ? Iahpw6[22] : Shhpw6[23]); +assign Ejxhu6 = (Em1iu6 ? Iahpw6[23] : Shhpw6[24]); +assign Xixhu6 = (Em1iu6 ? Iahpw6[24] : Shhpw6[25]); +assign Qixhu6 = (Em1iu6 ? Iahpw6[25] : Shhpw6[26]); +assign Jixhu6 = (Em1iu6 ? Iahpw6[26] : Shhpw6[27]); +assign Cixhu6 = (Em1iu6 ? Iahpw6[27] : Shhpw6[28]); +assign Vhxhu6 = (Em1iu6 ? Iahpw6[28] : Shhpw6[29]); +assign Ohxhu6 = (Em1iu6 ? Iahpw6[29] : Shhpw6[30]); +assign Hhxhu6 = (Em1iu6 ? Tonhu6 : Shhpw6[0]); +assign Ahxhu6 = (Em1iu6 ? Mdhpw6[0] : Iqnhu6); +assign Em1iu6 = (!C53iu6); +assign C53iu6 = (X53iu6 & O43iu6); +assign O43iu6 = (~(Xq3iu6 & G2ohu6)); +assign Xq3iu6 = (Rrnhu6 & A52iu6); +assign X53iu6 = (Bh1iu6 | Ng1iu6); +assign Ng1iu6 = (~(Er3iu6 & Lr3iu6)); +assign Lr3iu6 = (Sr3iu6 & P13iu6); +assign Sr3iu6 = (Ofzhu6 | Mdhpw6[0]); +assign Ofzhu6 = (!Vp3iu6); +assign Er3iu6 = (Ulnhu6 & Fj1iu6); +assign Bh1iu6 = (~(Zr3iu6 & Gs3iu6)); +assign Gs3iu6 = (~(A52iu6 | W9ohu6)); +assign Zr3iu6 = (Zbhpw6[28] & Gwnhu6); +assign Tgxhu6 = (Jq3iu6 ? B7nhu6 : Tonhu6); +assign Mgxhu6 = (Jq3iu6 ? Zbhpw6[26] : Iahpw6[25]); +assign Fgxhu6 = (Jq3iu6 ? Zbhpw6[28] : Iahpw6[27]); +assign Jq3iu6 = (~(Kn3iu6 & Tezhu6)); +assign Kn3iu6 = (~(O8zhu6 | Pinhu6)); +assign Yfxhu6 = (~(Ns3iu6 & Us3iu6)); +assign Us3iu6 = (~(Zbhpw6[28] & Bt3iu6)); +assign Bt3iu6 = (~(Gwnhu6 & A52iu6)); +assign Ns3iu6 = (A52iu6 | Gwnhu6); +assign A52iu6 = (!Punhu6); +assign Rfxhu6 = (~(It3iu6 & Pt3iu6)); +assign Pt3iu6 = (~(U5yhu6 & Wt3iu6)); +assign Wt3iu6 = (Du3iu6 | Ku3iu6); +assign Ku3iu6 = (Mmyhu6 & Agyhu6); +assign Mmyhu6 = (Ru3iu6 & Xj3iu6); +assign Ru3iu6 = (~(Yu3iu6 & Fv3iu6)); +assign Fv3iu6 = (Mv3iu6 & Tv3iu6); +assign Tv3iu6 = (Aw3iu6 | N73iu6); +assign N73iu6 = (~(Hw3iu6 & P5zhu6)); +assign P5zhu6 = (!Ulnhu6); +assign Hw3iu6 = (~(Pyyhu6 & Mdhpw6[0])); +assign Pyyhu6 = (~(Qgzhu6 | O8zhu6)); +assign Qgzhu6 = (!Mdhpw6[2]); +assign Mv3iu6 = (Ow3iu6 & P13iu6); +assign P13iu6 = (!Vmdpw6); +assign Yu3iu6 = (Rgnhu6 & Z63iu6); +assign Du3iu6 = (Xj3iu6 ? Vw3iu6 : A1zhu6); +assign Vw3iu6 = (T0zhu6 & Rzyhu6); +assign A1zhu6 = (~(Y7yhu6 | Ighpw6[0])); +assign It3iu6 = (Hknhu6 ? Jx3iu6 : Cx3iu6); +assign Jx3iu6 = (Ey3iu6 ? Xx3iu6 : Qx3iu6); +assign Qx3iu6 = (U5yhu6 & Ly3iu6); +assign Ly3iu6 = (~(Sy3iu6 & Zy3iu6)); +assign Zy3iu6 = (Gz3iu6 & Y7yhu6); +assign Y7yhu6 = (~(Nz3iu6 & Ighpw6[2])); +assign Nz3iu6 = (~(Wdyhu6 | Ighpw6[1])); +assign Gz3iu6 = (~(T0zhu6 | Agyhu6)); +assign T0zhu6 = (Gjyhu6 & Vuyhu6); +assign Sy3iu6 = (Uz3iu6 & B04iu6); +assign B04iu6 = (C9zhu6 | Vmzhu6); +assign Uz3iu6 = (I04iu6 & Joyhu6); +assign Joyhu6 = (~(P04iu6 & Epyhu6)); +assign P04iu6 = (~(Deyhu6 | Ighpw6[2])); +assign I04iu6 = (~(Gjyhu6 & Eiyhu6)); +assign Gjyhu6 = (~(C9zhu6 | Wdyhu6)); +assign C9zhu6 = (!Cvyhu6); +assign Cx3iu6 = (~(Ey3iu6 & Xx3iu6)); +assign Xx3iu6 = (~(W04iu6 & D14iu6)); +assign D14iu6 = (~(K14iu6 & Z4yhu6)); +assign K14iu6 = (Mdhpw6[0] & SWDO); +assign W04iu6 = (~(Mdhpw6[3] & R14iu6)); +assign R14iu6 = (L02iu6 | R7yhu6); +assign R7yhu6 = (!Mdhpw6[0]); +assign L02iu6 = (!Z4yhu6); +assign Ey3iu6 = (Y14iu6 | Z4yhu6); +assign Z4yhu6 = (Ighpw6[5] & Vx2iu6); +assign Kfxhu6 = (M24iu6 ? F24iu6 : Aphpw6[1]); +assign F24iu6 = (T24iu6 & A34iu6); +assign Dfxhu6 = (M24iu6 ? H34iu6 : Cynhu6); +assign Wexhu6 = (M24iu6 ? O34iu6 : Aphpw6[2]); +assign M24iu6 = (V34iu6 & C44iu6); +assign Pexhu6 = (Sm1iu6 ? J44iu6 : Jshpw6[10]); +assign Iexhu6 = (Sm1iu6 ? Q44iu6 : Jshpw6[11]); +assign Bexhu6 = (Sm1iu6 ? X44iu6 : Jshpw6[12]); +assign Udxhu6 = (Sm1iu6 ? E54iu6 : Jshpw6[13]); +assign Ndxhu6 = (Sm1iu6 ? L54iu6 : Jshpw6[14]); +assign Gdxhu6 = (Sm1iu6 ? S54iu6 : Jshpw6[15]); +assign Zcxhu6 = (Sm1iu6 ? Z54iu6 : Jshpw6[16]); +assign Scxhu6 = (Sm1iu6 ? G64iu6 : Jshpw6[17]); +assign Lcxhu6 = (Sm1iu6 ? N64iu6 : Jshpw6[18]); +assign Ecxhu6 = (Sm1iu6 ? U64iu6 : Jshpw6[19]); +assign Xbxhu6 = (Sm1iu6 ? B74iu6 : Jshpw6[20]); +assign Qbxhu6 = (Sm1iu6 ? I74iu6 : Jshpw6[21]); +assign Jbxhu6 = (Sm1iu6 ? P74iu6 : Jshpw6[22]); +assign Cbxhu6 = (Sm1iu6 ? W74iu6 : Jshpw6[23]); +assign Vaxhu6 = (Sm1iu6 ? D84iu6 : Jshpw6[24]); +assign Oaxhu6 = (Sm1iu6 ? K84iu6 : Jshpw6[25]); +assign Haxhu6 = (Sm1iu6 ? R84iu6 : Jshpw6[26]); +assign Aaxhu6 = (Sm1iu6 ? Y84iu6 : Jshpw6[27]); +assign T9xhu6 = (Sm1iu6 ? F94iu6 : Jshpw6[28]); +assign M9xhu6 = (Sm1iu6 ? M94iu6 : Jshpw6[29]); +assign F9xhu6 = (Sm1iu6 ? T94iu6 : Jshpw6[30]); +assign Y8xhu6 = (~(Aa4iu6 & Ha4iu6)); +assign Ha4iu6 = (~(Gmhpw6[0] & Oa4iu6)); +assign Aa4iu6 = (Va4iu6 & Cb4iu6); +assign Cb4iu6 = (~(T24iu6 & Sm1iu6)); +assign Va4iu6 = (~(Tnhpw6[0] & Jb4iu6)); +assign R8xhu6 = (~(Qb4iu6 & Xb4iu6)); +assign Xb4iu6 = (~(Gmhpw6[1] & Oa4iu6)); +assign Qb4iu6 = (Ec4iu6 & Lc4iu6); +assign Lc4iu6 = (~(Sm1iu6 & O34iu6)); +assign Ec4iu6 = (~(Tnhpw6[1] & Jb4iu6)); +assign K8xhu6 = (~(Sc4iu6 & Zc4iu6)); +assign Zc4iu6 = (~(Gmhpw6[2] & Oa4iu6)); +assign Sc4iu6 = (Gd4iu6 & Nd4iu6); +assign Nd4iu6 = (~(Ud4iu6 & Sm1iu6)); +assign Gd4iu6 = (~(Tnhpw6[2] & Jb4iu6)); +assign D8xhu6 = (~(Be4iu6 & Ie4iu6)); +assign Ie4iu6 = (~(Gmhpw6[3] & Oa4iu6)); +assign Be4iu6 = (Pe4iu6 & We4iu6); +assign We4iu6 = (~(Df4iu6 & Sm1iu6)); +assign Pe4iu6 = (~(Tnhpw6[3] & Jb4iu6)); +assign W7xhu6 = (~(Kf4iu6 & Rf4iu6)); +assign Rf4iu6 = (~(Gmhpw6[4] & Oa4iu6)); +assign Kf4iu6 = (Yf4iu6 & Fg4iu6); +assign Fg4iu6 = (~(H34iu6 & Sm1iu6)); +assign Yf4iu6 = (~(Jshpw6[4] & Jb4iu6)); +assign P7xhu6 = (~(Mg4iu6 & Tg4iu6)); +assign Tg4iu6 = (~(Gmhpw6[5] & Oa4iu6)); +assign Mg4iu6 = (Ah4iu6 & Hh4iu6); +assign Hh4iu6 = (~(Oh4iu6 & Sm1iu6)); +assign Ah4iu6 = (~(Jshpw6[5] & Jb4iu6)); +assign I7xhu6 = (~(Vh4iu6 & Ci4iu6)); +assign Ci4iu6 = (~(Gmhpw6[6] & Oa4iu6)); +assign Vh4iu6 = (Ji4iu6 & Qi4iu6); +assign Qi4iu6 = (~(Xi4iu6 & Sm1iu6)); +assign Ji4iu6 = (~(Jshpw6[6] & Jb4iu6)); +assign B7xhu6 = (~(Ej4iu6 & Lj4iu6)); +assign Lj4iu6 = (~(Gmhpw6[7] & Oa4iu6)); +assign Ej4iu6 = (Sj4iu6 & Zj4iu6); +assign Zj4iu6 = (~(Gk4iu6 & Sm1iu6)); +assign Sj4iu6 = (~(Jshpw6[7] & Jb4iu6)); +assign U6xhu6 = (~(Nk4iu6 & Uk4iu6)); +assign Uk4iu6 = (~(Gmhpw6[8] & Oa4iu6)); +assign Nk4iu6 = (Bl4iu6 & Il4iu6); +assign Il4iu6 = (~(Sm1iu6 & Pl4iu6)); +assign Bl4iu6 = (~(Jshpw6[8] & Jb4iu6)); +assign N6xhu6 = (~(Wl4iu6 & Dm4iu6)); +assign Dm4iu6 = (~(Gmhpw6[9] & Oa4iu6)); +assign Wl4iu6 = (Km4iu6 & Rm4iu6); +assign Rm4iu6 = (~(Sm1iu6 & Ym4iu6)); +assign Sm1iu6 = (~(Jb4iu6 | Oa4iu6)); +assign Km4iu6 = (~(Jshpw6[9] & Jb4iu6)); +assign Jb4iu6 = (~(Fn4iu6 | Oa4iu6)); +assign Oa4iu6 = (Mn4iu6 & Tn4iu6); +assign Tn4iu6 = (Ao4iu6 & Pqzhu6); +assign Ao4iu6 = (~(Lf1iu6 | Ho4iu6)); +assign Lf1iu6 = (HRESP & R0nhu6); +assign Mn4iu6 = (Cynhu6 & Tszhu6); +assign Tszhu6 = (Oo4iu6 & Sqhpw6[1]); +assign Oo4iu6 = (~(Fszhu6 | Sqhpw6[0])); +assign Fn4iu6 = (V34iu6 & Vo4iu6); +assign V34iu6 = (Cp4iu6 & Jp4iu6); +assign Jp4iu6 = (Qp4iu6 & Xp4iu6); +assign Qp4iu6 = (~(Ho4iu6 | Eq4iu6)); +assign Cp4iu6 = (Lq4iu6 & Sqhpw6[1]); +assign Lq4iu6 = (~(Gpzhu6 | Sq4iu6)); +assign G6xhu6 = (!Zq4iu6); +assign Zq4iu6 = (Nr4iu6 ? Sq4iu6 : Gr4iu6); +assign Gr4iu6 = (~(A2nhu6 & Ur4iu6)); +assign Z5xhu6 = (Bs4iu6 ? Lwgpw6[0] : T24iu6); +assign S5xhu6 = (Bs4iu6 ? Lwgpw6[2] : Ud4iu6); +assign L5xhu6 = (Bs4iu6 ? Lwgpw6[1] : O34iu6); +assign Bs4iu6 = (Is4iu6 | Ps4iu6); +assign Is4iu6 = (!Ws4iu6); +assign E5xhu6 = (Kt4iu6 ? Dt4iu6 : Vchhu6); +assign Kt4iu6 = (HREADY & Rt4iu6); +assign Rt4iu6 = (~(Yt4iu6 & Fu4iu6)); +assign Fu4iu6 = (~(Mu4iu6 | Tu4iu6)); +assign Yt4iu6 = (~(Dt4iu6 | Av4iu6)); +assign Av4iu6 = (~(Hv4iu6 | DBGRESTART)); +assign Dt4iu6 = (~(Ov4iu6 & Vv4iu6)); +assign Vv4iu6 = (Cw4iu6 & Jw4iu6); +assign Cw4iu6 = (Qw4iu6 & Xw4iu6); +assign Ov4iu6 = (~(Ex4iu6 | Lx4iu6)); +assign X4xhu6 = (~(Sx4iu6 & Zx4iu6)); +assign Zx4iu6 = (Gy4iu6 & Ny4iu6); +assign Ny4iu6 = (~(Hrfpw6[16] & Uy4iu6)); +assign Gy4iu6 = (Bz4iu6 & Iz4iu6); +assign Bz4iu6 = (~(Pz4iu6 & Wz4iu6)); +assign Sx4iu6 = (D05iu6 & K05iu6); +assign K05iu6 = (~(R05iu6 & S1ehu6)); +assign D05iu6 = (Y05iu6 & F15iu6); +assign F15iu6 = (~(M15iu6 & T15iu6)); +assign Y05iu6 = (~(Ppfpw6[16] & A25iu6)); +assign Q4xhu6 = (O25iu6 ? X3fpw6[1] : H25iu6); +assign H25iu6 = (~(V25iu6 & C35iu6)); +assign C35iu6 = (J35iu6 & Q35iu6); +assign Q35iu6 = (X35iu6 & E45iu6); +assign X35iu6 = (~(L45iu6 & S45iu6)); +assign S45iu6 = (~(Z45iu6 & G55iu6)); +assign Z45iu6 = (B65iu6 ? U55iu6 : N55iu6); +assign U55iu6 = (~(I65iu6 & P65iu6)); +assign J35iu6 = (W65iu6 & D75iu6); +assign D75iu6 = (~(D7fpw6[4] & K75iu6)); +assign W65iu6 = (R75iu6 | P65iu6); +assign V25iu6 = (Y75iu6 & F85iu6); +assign Y75iu6 = (M85iu6 & T85iu6); +assign T85iu6 = (~(A95iu6 & D7fpw6[1])); +assign M85iu6 = (H95iu6 | O95iu6); +assign J4xhu6 = (Fsdhu6 ? Ca5iu6 : V95iu6); +assign Ca5iu6 = (~(Ja5iu6 & Qa5iu6)); +assign V95iu6 = (~(Xa5iu6 & Eb5iu6)); +assign Eb5iu6 = (Lb5iu6 & Sb5iu6); +assign Lb5iu6 = (~(RXEV | TXEV)); +assign Xa5iu6 = (Zb5iu6 & Gc5iu6); +assign Zb5iu6 = (Nc5iu6 & Uc5iu6); +assign Nc5iu6 = (~(Gfghu6 & Bd5iu6)); +assign Bd5iu6 = (~(Id5iu6 & Pd5iu6)); +assign Pd5iu6 = (Wd5iu6 & De5iu6); +assign De5iu6 = (Ke5iu6 & Re5iu6); +assign Re5iu6 = (Ye5iu6 & Ff5iu6); +assign Ff5iu6 = (Mf5iu6 & Tf5iu6); +assign Tf5iu6 = (Ag5iu6 | Yyghu6); +assign Mf5iu6 = (Hg5iu6 & Og5iu6); +assign Og5iu6 = (~(Vg5iu6 & Ch5iu6)); +assign Vg5iu6 = (HWDATA[28] & Jh5iu6); +assign Hg5iu6 = (Qh5iu6 | Zlghu6); +assign Ye5iu6 = (Xh5iu6 & Ei5iu6); +assign Ei5iu6 = (Li5iu6 | Righu6); +assign Xh5iu6 = (~(Cyohu6 & Si5iu6)); +assign Si5iu6 = (!Odgpw6[31]); +assign Ke5iu6 = (Zi5iu6 & Gj5iu6); +assign Gj5iu6 = (Nj5iu6 & Uj5iu6); +assign Uj5iu6 = (~(Xyohu6 & Bk5iu6)); +assign Bk5iu6 = (!Odgpw6[28]); +assign Nj5iu6 = (Ik5iu6 & Pk5iu6); +assign Pk5iu6 = (~(Jyohu6 & Wk5iu6)); +assign Wk5iu6 = (!Odgpw6[30]); +assign Ik5iu6 = (~(Qyohu6 & Dl5iu6)); +assign Dl5iu6 = (!Odgpw6[29]); +assign Zi5iu6 = (Kl5iu6 & Rl5iu6); +assign Rl5iu6 = (~(Ezohu6 & Yl5iu6)); +assign Yl5iu6 = (!Odgpw6[27]); +assign Kl5iu6 = (~(Lzohu6 & Fm5iu6)); +assign Fm5iu6 = (!Odgpw6[26]); +assign Wd5iu6 = (Mm5iu6 & Tm5iu6); +assign Tm5iu6 = (An5iu6 & Hn5iu6); +assign Hn5iu6 = (On5iu6 & Vn5iu6); +assign Vn5iu6 = (~(G0phu6 & Co5iu6)); +assign Co5iu6 = (!Odgpw6[21]); +assign On5iu6 = (Jo5iu6 & Qo5iu6); +assign Qo5iu6 = (~(Szohu6 & Xo5iu6)); +assign Xo5iu6 = (!Odgpw6[23]); +assign Jo5iu6 = (~(Zzohu6 & Ep5iu6)); +assign Ep5iu6 = (!Odgpw6[22]); +assign An5iu6 = (Lp5iu6 & Sp5iu6); +assign Sp5iu6 = (~(N0phu6 & Zp5iu6)); +assign Zp5iu6 = (!Odgpw6[20]); +assign Lp5iu6 = (~(U0phu6 & Gq5iu6)); +assign Gq5iu6 = (!Odgpw6[19]); +assign Mm5iu6 = (Nq5iu6 & Uq5iu6); +assign Uq5iu6 = (Br5iu6 & Ir5iu6); +assign Ir5iu6 = (~(B1phu6 & Pr5iu6)); +assign Pr5iu6 = (!Odgpw6[18]); +assign Br5iu6 = (~(I1phu6 & Wr5iu6)); +assign Wr5iu6 = (!Odgpw6[17]); +assign Nq5iu6 = (Ds5iu6 & Ks5iu6); +assign Ks5iu6 = (~(P1phu6 & Rs5iu6)); +assign Rs5iu6 = (!Odgpw6[16]); +assign Ds5iu6 = (~(W1phu6 & Ys5iu6)); +assign Ys5iu6 = (!Odgpw6[15]); +assign Id5iu6 = (Ft5iu6 & Mt5iu6); +assign Mt5iu6 = (Tt5iu6 & Au5iu6); +assign Au5iu6 = (Hu5iu6 & Ou5iu6); +assign Ou5iu6 = (Vu5iu6 & Cv5iu6); +assign Cv5iu6 = (~(R2phu6 & Jv5iu6)); +assign Jv5iu6 = (!Odgpw6[12]); +assign Vu5iu6 = (Qv5iu6 & Xv5iu6); +assign Xv5iu6 = (~(D2phu6 & Ew5iu6)); +assign Ew5iu6 = (!Odgpw6[14]); +assign Qv5iu6 = (~(K2phu6 & Lw5iu6)); +assign Lw5iu6 = (!Odgpw6[13]); +assign Hu5iu6 = (Sw5iu6 & Zw5iu6); +assign Zw5iu6 = (~(Y2phu6 & Gx5iu6)); +assign Gx5iu6 = (!Odgpw6[11]); +assign Sw5iu6 = (~(F3phu6 & Nx5iu6)); +assign Nx5iu6 = (!Odgpw6[10]); +assign Tt5iu6 = (Ux5iu6 & By5iu6); +assign By5iu6 = (Iy5iu6 & Py5iu6); +assign Py5iu6 = (~(M3phu6 & Wy5iu6)); +assign Wy5iu6 = (!Odgpw6[7]); +assign Iy5iu6 = (~(T3phu6 & Dz5iu6)); +assign Dz5iu6 = (!Odgpw6[6]); +assign Ux5iu6 = (Kz5iu6 & Rz5iu6); +assign Rz5iu6 = (~(A4phu6 & Yz5iu6)); +assign Yz5iu6 = (!Odgpw6[5]); +assign Kz5iu6 = (~(H4phu6 & F06iu6)); +assign F06iu6 = (!Odgpw6[4]); +assign Ft5iu6 = (M06iu6 & T06iu6); +assign T06iu6 = (A16iu6 & H16iu6); +assign H16iu6 = (O16iu6 & V16iu6); +assign V16iu6 = (~(C5phu6 & C26iu6)); +assign C26iu6 = (!Odgpw6[1]); +assign O16iu6 = (J26iu6 & Q26iu6); +assign Q26iu6 = (~(O4phu6 & X26iu6)); +assign X26iu6 = (!Odgpw6[3]); +assign J26iu6 = (~(V4phu6 & E36iu6)); +assign E36iu6 = (!Odgpw6[2]); +assign A16iu6 = (L36iu6 & S36iu6); +assign S36iu6 = (~(J5phu6 & Z36iu6)); +assign Z36iu6 = (!Odgpw6[0]); +assign L36iu6 = (~(Bxdpw6 & G46iu6)); +assign G46iu6 = (!Odgpw6[8]); +assign Bxdpw6 = (N46iu6 & U46iu6); +assign U46iu6 = (~(B56iu6 & I56iu6)); +assign I56iu6 = (~(Sodpw6 & IRQ[8])); +assign B56iu6 = (P56iu6 & W56iu6); +assign P56iu6 = (~(Odgpw6[8] & D66iu6)); +assign D66iu6 = (~(K66iu6 & HWDATA[8])); +assign M06iu6 = (R66iu6 & Y66iu6); +assign Y66iu6 = (F76iu6 & M76iu6); +assign M76iu6 = (~(Uwdpw6 & T76iu6)); +assign T76iu6 = (!Odgpw6[9]); +assign Uwdpw6 = (A86iu6 & H86iu6); +assign H86iu6 = (~(O86iu6 & V86iu6)); +assign V86iu6 = (~(Cndpw6 & IRQ[9])); +assign O86iu6 = (C96iu6 & J96iu6); +assign C96iu6 = (~(Odgpw6[9] & Q96iu6)); +assign Q96iu6 = (~(K66iu6 & HWDATA[9])); +assign F76iu6 = (~(Nwdpw6 & X96iu6)); +assign X96iu6 = (!Odgpw6[24]); +assign Nwdpw6 = (Ea6iu6 & La6iu6); +assign La6iu6 = (~(Sa6iu6 & Za6iu6)); +assign Za6iu6 = (~(Wqdpw6 & IRQ[24])); +assign Sa6iu6 = (Gb6iu6 & Nb6iu6); +assign Gb6iu6 = (~(Odgpw6[24] & Ub6iu6)); +assign Ub6iu6 = (~(K66iu6 & HWDATA[24])); +assign R66iu6 = (Bc6iu6 & Ic6iu6); +assign Ic6iu6 = (~(Gwdpw6 & Pc6iu6)); +assign Pc6iu6 = (!Odgpw6[25]); +assign Gwdpw6 = (Wc6iu6 & Dd6iu6); +assign Dd6iu6 = (~(Kd6iu6 & Rd6iu6)); +assign Rd6iu6 = (~(Krdpw6 & IRQ[25])); +assign Kd6iu6 = (Yd6iu6 & Fe6iu6); +assign Yd6iu6 = (~(Odgpw6[25] & Me6iu6)); +assign Me6iu6 = (~(K66iu6 & HWDATA[25])); +assign Bc6iu6 = (~(Npghu6 & Te6iu6)); +assign Npghu6 = (Af6iu6 & Hf6iu6); +assign Hf6iu6 = (~(Of6iu6 & Vf6iu6)); +assign Vf6iu6 = (~(Evdpw6 & NMI)); +assign Of6iu6 = (Cg6iu6 & Jg6iu6); +assign Cg6iu6 = (Te6iu6 | Qg6iu6); +assign C4xhu6 = (Eh6iu6 ? R0nhu6 : Xg6iu6); +assign O3xhu6 = (~(Lh6iu6 & Sh6iu6)); +assign Sh6iu6 = (Zh6iu6 | HREADY); +assign Lh6iu6 = (Gi6iu6 & Ni6iu6); +assign Gi6iu6 = (~(Ui6iu6 & Nr4iu6)); +assign Ui6iu6 = (~(Bj6iu6 ^ Jshpw6[5])); +assign H3xhu6 = (~(Ij6iu6 & Pj6iu6)); +assign Pj6iu6 = (Wj6iu6 | HREADY); +assign Ij6iu6 = (Dk6iu6 & Ni6iu6); +assign Dk6iu6 = (~(Kk6iu6 & Nr4iu6)); +assign Kk6iu6 = (~(Bj6iu6 ^ Jshpw6[13])); +assign A3xhu6 = (~(Rk6iu6 & Yk6iu6)); +assign Yk6iu6 = (Fl6iu6 | HREADY); +assign Rk6iu6 = (Ml6iu6 & Ni6iu6); +assign Ml6iu6 = (~(Tl6iu6 & Nr4iu6)); +assign Tl6iu6 = (~(Am6iu6 ^ Jshpw6[4])); +assign T2xhu6 = (~(Hm6iu6 & Om6iu6)); +assign Om6iu6 = (Vm6iu6 | HREADY); +assign Hm6iu6 = (Cn6iu6 & Ni6iu6); +assign Cn6iu6 = (~(Jn6iu6 & Nr4iu6)); +assign Jn6iu6 = (~(Am6iu6 ^ Jshpw6[12])); +assign M2xhu6 = (~(Qn6iu6 & Xn6iu6)); +assign Xn6iu6 = (Eo6iu6 | HREADY); +assign Qn6iu6 = (Lo6iu6 & Ni6iu6); +assign Lo6iu6 = (~(Nr4iu6 & So6iu6)); +assign So6iu6 = (~(Zo6iu6 ^ Jshpw6[15])); +assign F2xhu6 = (~(Gp6iu6 & Np6iu6)); +assign Np6iu6 = (~(X8hpw6[1] & Eh6iu6)); +assign Gp6iu6 = (Up6iu6 & Ni6iu6); +assign Up6iu6 = (Bq6iu6 | Iq6iu6); +assign Y1xhu6 = (~(Pq6iu6 & Wq6iu6)); +assign Wq6iu6 = (Dr6iu6 | HREADY); +assign Pq6iu6 = (Kr6iu6 & Ni6iu6); +assign Ni6iu6 = (~(Nr4iu6 & Rr6iu6)); +assign Rr6iu6 = (~(Yr6iu6 & Fs6iu6)); +assign Yr6iu6 = (Ms6iu6 & Ts6iu6); +assign Ts6iu6 = (At6iu6 & Ht6iu6); +assign Ht6iu6 = (Wqzhu6 | Aphpw6[2]); +assign Ms6iu6 = (Ot6iu6 & Vt6iu6); +assign Vt6iu6 = (Cu6iu6 | Jshpw6[8]); +assign Cu6iu6 = (!Jshpw6[11]); +assign Ot6iu6 = (Jshpw6[10] ? Qu6iu6 : Ju6iu6); +assign Qu6iu6 = (Jshpw6[11] & Xu6iu6); +assign Xu6iu6 = (~(Ev6iu6 & Lv6iu6)); +assign Lv6iu6 = (~(Sv6iu6 & Zv6iu6)); +assign Zv6iu6 = (Gw6iu6 & Nw6iu6); +assign Gw6iu6 = (Uw6iu6 & Bx6iu6); +assign Sv6iu6 = (Ix6iu6 & Px6iu6); +assign Px6iu6 = (Jshpw6[6] ? Dy6iu6 : Wx6iu6); +assign Dy6iu6 = (~(Ky6iu6 | Ry6iu6)); +assign Wx6iu6 = (Yy6iu6 & Bj6iu6); +assign Yy6iu6 = (~(Jshpw6[7] | Jshpw6[9])); +assign Ix6iu6 = (Fz6iu6 & Mz6iu6); +assign Fz6iu6 = (~(Jshpw6[4] ^ Jshpw6[5])); +assign Ev6iu6 = (~(Tz6iu6 & A07iu6)); +assign A07iu6 = (Jshpw6[6] & H07iu6); +assign H07iu6 = (~(O07iu6 & V07iu6)); +assign V07iu6 = (~(C17iu6 & J17iu6)); +assign C17iu6 = (~(Am6iu6 | Bj6iu6)); +assign O07iu6 = (~(Q17iu6 & X17iu6)); +assign X17iu6 = (~(E27iu6 & L27iu6)); +assign E27iu6 = (~(S27iu6 & Z27iu6)); +assign S27iu6 = (Bx6iu6 ? Jshpw6[13] : G37iu6); +assign Q17iu6 = (~(N37iu6 & U37iu6)); +assign N37iu6 = (~(B47iu6 & Jshpw6[4])); +assign B47iu6 = (~(I47iu6 | P47iu6)); +assign Tz6iu6 = (~(Iq6iu6 | Ky6iu6)); +assign Iq6iu6 = (!Jshpw6[9]); +assign Ju6iu6 = (W47iu6 & D57iu6); +assign D57iu6 = (K57iu6 & Ky6iu6); +assign Ky6iu6 = (!Jshpw6[7]); +assign K57iu6 = (~(Jshpw6[8] | Jshpw6[9])); +assign W47iu6 = (R57iu6 & Zo6iu6); +assign Zo6iu6 = (!Jshpw6[6]); +assign R57iu6 = (~(Y57iu6 & F67iu6)); +assign F67iu6 = (~(M67iu6 & T67iu6)); +assign T67iu6 = (A77iu6 & Mz6iu6); +assign A77iu6 = (~(Bx6iu6 | Jshpw6[15])); +assign M67iu6 = (H77iu6 & G37iu6); +assign G37iu6 = (~(Jshpw6[14] | Jshpw6[13])); +assign H77iu6 = (Jshpw6[5] ? V77iu6 : O77iu6); +assign V77iu6 = (Am6iu6 | Bj6iu6); +assign O77iu6 = (C87iu6 & J87iu6); +assign J87iu6 = (Bj6iu6 | Jshpw6[4]); +assign C87iu6 = (I47iu6 ? P47iu6 : Ry6iu6); +assign Ry6iu6 = (!Jshpw6[4]); +assign Y57iu6 = (~(U37iu6 & Q87iu6)); +assign Q87iu6 = (J17iu6 | X87iu6); +assign X87iu6 = (E97iu6 & L97iu6); +assign L97iu6 = (S97iu6 & Jshpw6[13]); +assign S97iu6 = (Z97iu6 & Bx6iu6); +assign Z97iu6 = (~(Jshpw6[14] & Uw6iu6)); +assign Uw6iu6 = (Am6iu6 | P47iu6); +assign Am6iu6 = (!I47iu6); +assign E97iu6 = (~(Ga7iu6 | Na7iu6)); +assign Na7iu6 = (!Z27iu6); +assign Z27iu6 = (Ua7iu6 & Mz6iu6); +assign Ua7iu6 = (~(Jshpw6[14] ^ Jshpw6[15])); +assign Ga7iu6 = (Jshpw6[4] ? I47iu6 : Bb7iu6); +assign Bb7iu6 = (~(I47iu6 | Bj6iu6)); +assign Bj6iu6 = (!P47iu6); +assign J17iu6 = (~(L27iu6 | Jshpw6[4])); +assign L27iu6 = (~(Ib7iu6 & Pb7iu6)); +assign Pb7iu6 = (Wb7iu6 & Jshpw6[17]); +assign Wb7iu6 = (Jshpw6[16] & Jshpw6[12]); +assign Ib7iu6 = (Dc7iu6 & Nw6iu6); +assign Nw6iu6 = (Kc7iu6 & Jshpw6[15]); +assign Dc7iu6 = (Jshpw6[19] & Jshpw6[18]); +assign U37iu6 = (!Jshpw6[5]); +assign Nr4iu6 = (!Bq6iu6); +assign Kr6iu6 = (Bq6iu6 | Bx6iu6); +assign R1xhu6 = (Rc7iu6 ? E5hhu6 : D84iu6); +assign K1xhu6 = (Rc7iu6 ? H2hhu6 : T24iu6); +assign D1xhu6 = (Rc7iu6 ? S3hhu6 : J44iu6); +assign Rc7iu6 = (~(Yc7iu6 & A2nhu6)); +assign W0xhu6 = (Fd7iu6 ? Jehhu6 : T24iu6); +assign P0xhu6 = (Fd7iu6 ? Hbhhu6 : Ud4iu6); +assign Fd7iu6 = (!Tu4iu6); +assign I0xhu6 = (Tu4iu6 ? Df4iu6 : P9hhu6); +assign B0xhu6 = (Md7iu6 ? Togpw6[2] : Ud4iu6); +assign Uzwhu6 = (Md7iu6 ? Ligpw6[28] : Lm1iu6); +assign Nzwhu6 = (Md7iu6 ? Ligpw6[27] : T94iu6); +assign Gzwhu6 = (Md7iu6 ? Togpw6[28] : F94iu6); +assign Zywhu6 = (Md7iu6 ? Togpw6[27] : Y84iu6); +assign Sywhu6 = (Md7iu6 ? Togpw6[26] : R84iu6); +assign Lywhu6 = (Md7iu6 ? Togpw6[25] : K84iu6); +assign Eywhu6 = (Md7iu6 ? Togpw6[24] : D84iu6); +assign Xxwhu6 = (Md7iu6 ? Togpw6[23] : W74iu6); +assign Qxwhu6 = (Md7iu6 ? Togpw6[22] : P74iu6); +assign Jxwhu6 = (Md7iu6 ? Togpw6[21] : I74iu6); +assign Cxwhu6 = (Md7iu6 ? Togpw6[20] : B74iu6); +assign Vwwhu6 = (Md7iu6 ? Togpw6[19] : U64iu6); +assign Owwhu6 = (Md7iu6 ? Togpw6[18] : N64iu6); +assign Hwwhu6 = (Md7iu6 ? Togpw6[17] : G64iu6); +assign Awwhu6 = (Md7iu6 ? Togpw6[16] : Z54iu6); +assign Tvwhu6 = (Md7iu6 ? Togpw6[15] : S54iu6); +assign Mvwhu6 = (Md7iu6 ? Togpw6[14] : L54iu6); +assign Fvwhu6 = (Md7iu6 ? Togpw6[13] : E54iu6); +assign Yuwhu6 = (Md7iu6 ? Togpw6[12] : X44iu6); +assign Ruwhu6 = (Md7iu6 ? Togpw6[11] : Q44iu6); +assign Kuwhu6 = (Md7iu6 ? Togpw6[10] : J44iu6); +assign Duwhu6 = (Md7iu6 ? Togpw6[9] : Ym4iu6); +assign Wtwhu6 = (Md7iu6 ? Togpw6[8] : Pl4iu6); +assign Ptwhu6 = (Md7iu6 ? Togpw6[7] : Gk4iu6); +assign Itwhu6 = (Md7iu6 ? Togpw6[6] : Xi4iu6); +assign Btwhu6 = (Md7iu6 ? Togpw6[5] : Oh4iu6); +assign Uswhu6 = (Md7iu6 ? Togpw6[4] : H34iu6); +assign Nswhu6 = (Md7iu6 ? Togpw6[3] : Df4iu6); +assign Gswhu6 = (Md7iu6 ? Qhhhu6 : T24iu6); +assign Md7iu6 = (~(A2nhu6 & Vr1iu6)); +assign Zrwhu6 = (Td7iu6 ? Gqgpw6[2] : Ud4iu6); +assign Srwhu6 = (Td7iu6 ? Akgpw6[28] : Lm1iu6); +assign Lrwhu6 = (Td7iu6 ? Akgpw6[27] : T94iu6); +assign Erwhu6 = (Td7iu6 ? Gqgpw6[28] : F94iu6); +assign Xqwhu6 = (Td7iu6 ? Gqgpw6[27] : Y84iu6); +assign Qqwhu6 = (Td7iu6 ? Gqgpw6[26] : R84iu6); +assign Jqwhu6 = (Td7iu6 ? Gqgpw6[25] : K84iu6); +assign Cqwhu6 = (Td7iu6 ? Gqgpw6[24] : D84iu6); +assign Vpwhu6 = (Td7iu6 ? Gqgpw6[23] : W74iu6); +assign Opwhu6 = (Td7iu6 ? Gqgpw6[22] : P74iu6); +assign Hpwhu6 = (Td7iu6 ? Gqgpw6[21] : I74iu6); +assign Apwhu6 = (Td7iu6 ? Gqgpw6[20] : B74iu6); +assign Towhu6 = (Td7iu6 ? Gqgpw6[19] : U64iu6); +assign Mowhu6 = (Td7iu6 ? Gqgpw6[18] : N64iu6); +assign Fowhu6 = (Td7iu6 ? Gqgpw6[17] : G64iu6); +assign Ynwhu6 = (Td7iu6 ? Gqgpw6[16] : Z54iu6); +assign Rnwhu6 = (Td7iu6 ? Gqgpw6[15] : S54iu6); +assign Knwhu6 = (Td7iu6 ? Gqgpw6[14] : L54iu6); +assign Dnwhu6 = (Td7iu6 ? Gqgpw6[13] : E54iu6); +assign Wmwhu6 = (Td7iu6 ? Gqgpw6[12] : X44iu6); +assign Pmwhu6 = (Td7iu6 ? Gqgpw6[11] : Q44iu6); +assign Imwhu6 = (Td7iu6 ? Gqgpw6[10] : J44iu6); +assign Bmwhu6 = (Td7iu6 ? Gqgpw6[9] : Ym4iu6); +assign Ulwhu6 = (Td7iu6 ? Gqgpw6[8] : Pl4iu6); +assign Nlwhu6 = (Td7iu6 ? Gqgpw6[7] : Gk4iu6); +assign Glwhu6 = (Td7iu6 ? Gqgpw6[6] : Xi4iu6); +assign Zkwhu6 = (Td7iu6 ? Gqgpw6[5] : Oh4iu6); +assign Skwhu6 = (Td7iu6 ? Gqgpw6[4] : H34iu6); +assign Lkwhu6 = (Td7iu6 ? Gqgpw6[3] : Df4iu6); +assign Ekwhu6 = (Td7iu6 ? Ijhhu6 : T24iu6); +assign Td7iu6 = (~(A2nhu6 & Xs1iu6)); +assign Xjwhu6 = (Ae7iu6 ? Trgpw6[2] : Ud4iu6); +assign Qjwhu6 = (Ae7iu6 ? Plgpw6[28] : Lm1iu6); +assign Jjwhu6 = (Ae7iu6 ? Plgpw6[27] : T94iu6); +assign Cjwhu6 = (Ae7iu6 ? Trgpw6[28] : F94iu6); +assign Viwhu6 = (Ae7iu6 ? Trgpw6[27] : Y84iu6); +assign Oiwhu6 = (Ae7iu6 ? Trgpw6[26] : R84iu6); +assign Hiwhu6 = (Ae7iu6 ? Trgpw6[25] : K84iu6); +assign Aiwhu6 = (Ae7iu6 ? Trgpw6[24] : D84iu6); +assign Thwhu6 = (Ae7iu6 ? Trgpw6[23] : W74iu6); +assign Mhwhu6 = (Ae7iu6 ? Trgpw6[22] : P74iu6); +assign Fhwhu6 = (Ae7iu6 ? Trgpw6[21] : I74iu6); +assign Ygwhu6 = (Ae7iu6 ? Trgpw6[20] : B74iu6); +assign Rgwhu6 = (Ae7iu6 ? Trgpw6[19] : U64iu6); +assign Kgwhu6 = (Ae7iu6 ? Trgpw6[18] : N64iu6); +assign Dgwhu6 = (Ae7iu6 ? Trgpw6[17] : G64iu6); +assign Wfwhu6 = (Ae7iu6 ? Trgpw6[16] : Z54iu6); +assign Pfwhu6 = (Ae7iu6 ? Trgpw6[15] : S54iu6); +assign Ifwhu6 = (Ae7iu6 ? Trgpw6[14] : L54iu6); +assign Bfwhu6 = (Ae7iu6 ? Trgpw6[13] : E54iu6); +assign Uewhu6 = (Ae7iu6 ? Trgpw6[12] : X44iu6); +assign Newhu6 = (Ae7iu6 ? Trgpw6[11] : Q44iu6); +assign Gewhu6 = (Ae7iu6 ? Trgpw6[10] : J44iu6); +assign Zdwhu6 = (Ae7iu6 ? Trgpw6[9] : Ym4iu6); +assign Sdwhu6 = (Ae7iu6 ? Trgpw6[8] : Pl4iu6); +assign Ldwhu6 = (Ae7iu6 ? Trgpw6[7] : Gk4iu6); +assign Edwhu6 = (Ae7iu6 ? Trgpw6[6] : Xi4iu6); +assign Xcwhu6 = (Ae7iu6 ? Trgpw6[5] : Oh4iu6); +assign Qcwhu6 = (Ae7iu6 ? Trgpw6[4] : H34iu6); +assign Jcwhu6 = (Ae7iu6 ? Trgpw6[3] : Df4iu6); +assign Ccwhu6 = (Ae7iu6 ? Alhhu6 : T24iu6); +assign Ae7iu6 = (~(A2nhu6 & Dw1iu6)); +assign Vbwhu6 = (He7iu6 ? Gtgpw6[2] : Ud4iu6); +assign Obwhu6 = (He7iu6 ? Engpw6[28] : Lm1iu6); +assign Hbwhu6 = (He7iu6 ? Engpw6[27] : T94iu6); +assign Abwhu6 = (He7iu6 ? Gtgpw6[28] : F94iu6); +assign Tawhu6 = (He7iu6 ? Gtgpw6[27] : Y84iu6); +assign Mawhu6 = (He7iu6 ? Gtgpw6[26] : R84iu6); +assign Fawhu6 = (He7iu6 ? Gtgpw6[25] : K84iu6); +assign Y9whu6 = (He7iu6 ? Gtgpw6[24] : D84iu6); +assign R9whu6 = (He7iu6 ? Gtgpw6[23] : W74iu6); +assign K9whu6 = (He7iu6 ? Gtgpw6[22] : P74iu6); +assign D9whu6 = (He7iu6 ? Gtgpw6[21] : I74iu6); +assign W8whu6 = (He7iu6 ? Gtgpw6[20] : B74iu6); +assign P8whu6 = (He7iu6 ? Gtgpw6[19] : U64iu6); +assign I8whu6 = (He7iu6 ? Gtgpw6[18] : N64iu6); +assign B8whu6 = (He7iu6 ? Gtgpw6[17] : G64iu6); +assign U7whu6 = (He7iu6 ? Gtgpw6[16] : Z54iu6); +assign N7whu6 = (He7iu6 ? Gtgpw6[15] : S54iu6); +assign G7whu6 = (He7iu6 ? Gtgpw6[14] : L54iu6); +assign Z6whu6 = (He7iu6 ? Gtgpw6[13] : E54iu6); +assign S6whu6 = (He7iu6 ? Gtgpw6[12] : X44iu6); +assign L6whu6 = (He7iu6 ? Gtgpw6[11] : Q44iu6); +assign E6whu6 = (He7iu6 ? Gtgpw6[10] : J44iu6); +assign X5whu6 = (He7iu6 ? Gtgpw6[9] : Ym4iu6); +assign Q5whu6 = (He7iu6 ? Gtgpw6[8] : Pl4iu6); +assign J5whu6 = (He7iu6 ? Gtgpw6[7] : Gk4iu6); +assign C5whu6 = (He7iu6 ? Gtgpw6[6] : Xi4iu6); +assign V4whu6 = (He7iu6 ? Gtgpw6[5] : Oh4iu6); +assign O4whu6 = (He7iu6 ? Gtgpw6[4] : H34iu6); +assign H4whu6 = (He7iu6 ? Gtgpw6[3] : Df4iu6); +assign A4whu6 = (He7iu6 ? Smhhu6 : T24iu6); +assign He7iu6 = (~(A2nhu6 & Cs1iu6)); +assign T3whu6 = (Oe7iu6 ? T24iu6 : Kohhu6); +assign Oe7iu6 = (Ve7iu6 & A2nhu6); +assign M3whu6 = (Cf7iu6 ? Aygpw6[0] : T24iu6); +assign F3whu6 = (Cf7iu6 ? Aygpw6[4] : H34iu6); +assign Y2whu6 = (Cf7iu6 ? Aygpw6[3] : Df4iu6); +assign R2whu6 = (Cf7iu6 ? Aygpw6[2] : Ud4iu6); +assign K2whu6 = (Cf7iu6 ? Aygpw6[1] : O34iu6); +assign Cf7iu6 = (~(Jf7iu6 & A2nhu6)); +assign D2whu6 = (Qf7iu6 ? Pzgpw6[0] : T24iu6); +assign W1whu6 = (Qf7iu6 ? E1hpw6[31] : Lm1iu6); +assign P1whu6 = (Qf7iu6 ? E1hpw6[30] : T94iu6); +assign I1whu6 = (Qf7iu6 ? E1hpw6[29] : M94iu6); +assign B1whu6 = (Qf7iu6 ? E1hpw6[28] : F94iu6); +assign U0whu6 = (Qf7iu6 ? E1hpw6[27] : Y84iu6); +assign N0whu6 = (Qf7iu6 ? E1hpw6[26] : R84iu6); +assign G0whu6 = (Qf7iu6 ? E1hpw6[25] : K84iu6); +assign Zzvhu6 = (Qf7iu6 ? E1hpw6[24] : D84iu6); +assign Szvhu6 = (Qf7iu6 ? E1hpw6[23] : W74iu6); +assign Lzvhu6 = (Qf7iu6 ? E1hpw6[22] : P74iu6); +assign Ezvhu6 = (Qf7iu6 ? E1hpw6[21] : I74iu6); +assign Xyvhu6 = (Qf7iu6 ? E1hpw6[20] : B74iu6); +assign Qyvhu6 = (Qf7iu6 ? E1hpw6[19] : U64iu6); +assign Jyvhu6 = (Qf7iu6 ? E1hpw6[18] : N64iu6); +assign Cyvhu6 = (Qf7iu6 ? E1hpw6[17] : G64iu6); +assign Vxvhu6 = (Qf7iu6 ? E1hpw6[16] : Z54iu6); +assign Oxvhu6 = (Qf7iu6 ? E1hpw6[15] : S54iu6); +assign Hxvhu6 = (Qf7iu6 ? E1hpw6[14] : L54iu6); +assign Axvhu6 = (Qf7iu6 ? E1hpw6[13] : E54iu6); +assign Twvhu6 = (Qf7iu6 ? E1hpw6[12] : X44iu6); +assign Mwvhu6 = (Qf7iu6 ? E1hpw6[11] : Q44iu6); +assign Fwvhu6 = (Qf7iu6 ? E1hpw6[10] : J44iu6); +assign Yvvhu6 = (Qf7iu6 ? E1hpw6[9] : Ym4iu6); +assign Rvvhu6 = (Qf7iu6 ? E1hpw6[8] : Pl4iu6); +assign Kvvhu6 = (Qf7iu6 ? E1hpw6[7] : Gk4iu6); +assign Dvvhu6 = (Qf7iu6 ? E1hpw6[6] : Xi4iu6); +assign Wuvhu6 = (Qf7iu6 ? E1hpw6[5] : Oh4iu6); +assign Puvhu6 = (Qf7iu6 ? E1hpw6[4] : H34iu6); +assign Iuvhu6 = (Qf7iu6 ? E1hpw6[3] : Df4iu6); +assign Buvhu6 = (Qf7iu6 ? E1hpw6[2] : Ud4iu6); +assign Utvhu6 = (Qf7iu6 ? Pzgpw6[1] : O34iu6); +assign Qf7iu6 = (~(A2nhu6 & Zt1iu6)); +assign Ntvhu6 = (Xf7iu6 ? R2hpw6[0] : T24iu6); +assign Gtvhu6 = (Xf7iu6 ? R2hpw6[2] : Ud4iu6); +assign Zsvhu6 = (Xf7iu6 ? R2hpw6[1] : O34iu6); +assign Xf7iu6 = (~(Eg7iu6 & A2nhu6)); +assign Ssvhu6 = (Lg7iu6 ? G4hpw6[0] : T24iu6); +assign Lsvhu6 = (Lg7iu6 ? G4hpw6[4] : H34iu6); +assign Esvhu6 = (Lg7iu6 ? G4hpw6[3] : Df4iu6); +assign Xrvhu6 = (Lg7iu6 ? G4hpw6[2] : Ud4iu6); +assign Qrvhu6 = (Lg7iu6 ? G4hpw6[1] : O34iu6); +assign Lg7iu6 = (~(Sg7iu6 & A2nhu6)); +assign Jrvhu6 = (Zg7iu6 ? V5hpw6[0] : T24iu6); +assign Crvhu6 = (Zg7iu6 ? K7hpw6[31] : Lm1iu6); +assign Vqvhu6 = (Zg7iu6 ? K7hpw6[30] : T94iu6); +assign Oqvhu6 = (Zg7iu6 ? K7hpw6[29] : M94iu6); +assign Hqvhu6 = (Zg7iu6 ? K7hpw6[28] : F94iu6); +assign Aqvhu6 = (Zg7iu6 ? K7hpw6[27] : Y84iu6); +assign Tpvhu6 = (Zg7iu6 ? K7hpw6[26] : R84iu6); +assign Mpvhu6 = (Zg7iu6 ? K7hpw6[25] : K84iu6); +assign Fpvhu6 = (Zg7iu6 ? K7hpw6[24] : D84iu6); +assign Yovhu6 = (Zg7iu6 ? K7hpw6[23] : W74iu6); +assign Rovhu6 = (Zg7iu6 ? K7hpw6[22] : P74iu6); +assign Kovhu6 = (Zg7iu6 ? K7hpw6[21] : I74iu6); +assign Dovhu6 = (Zg7iu6 ? K7hpw6[20] : B74iu6); +assign Wnvhu6 = (Zg7iu6 ? K7hpw6[19] : U64iu6); +assign Pnvhu6 = (Zg7iu6 ? K7hpw6[18] : N64iu6); +assign Invhu6 = (Zg7iu6 ? K7hpw6[17] : G64iu6); +assign Bnvhu6 = (Zg7iu6 ? K7hpw6[16] : Z54iu6); +assign Umvhu6 = (Zg7iu6 ? K7hpw6[15] : S54iu6); +assign Nmvhu6 = (Zg7iu6 ? K7hpw6[14] : L54iu6); +assign Gmvhu6 = (Zg7iu6 ? K7hpw6[13] : E54iu6); +assign Zlvhu6 = (Zg7iu6 ? K7hpw6[12] : X44iu6); +assign Slvhu6 = (Zg7iu6 ? K7hpw6[11] : Q44iu6); +assign Llvhu6 = (Zg7iu6 ? K7hpw6[10] : J44iu6); +assign Elvhu6 = (Zg7iu6 ? K7hpw6[9] : Ym4iu6); +assign Xkvhu6 = (Zg7iu6 ? K7hpw6[8] : Pl4iu6); +assign Qkvhu6 = (Zg7iu6 ? K7hpw6[7] : Gk4iu6); +assign Jkvhu6 = (Zg7iu6 ? K7hpw6[6] : Xi4iu6); +assign Ckvhu6 = (Zg7iu6 ? K7hpw6[5] : Oh4iu6); +assign Vjvhu6 = (Zg7iu6 ? K7hpw6[4] : H34iu6); +assign Ojvhu6 = (Zg7iu6 ? K7hpw6[3] : Df4iu6); +assign Hjvhu6 = (Zg7iu6 ? K7hpw6[2] : Ud4iu6); +assign Ajvhu6 = (Zg7iu6 ? V5hpw6[1] : O34iu6); +assign Zg7iu6 = (~(A2nhu6 & Kw1iu6)); +assign Tivhu6 = (~(Gh7iu6 & Nh7iu6)); +assign Nh7iu6 = (Uh7iu6 | HREADY); +assign Gh7iu6 = (Bi7iu6 & Ii7iu6); +assign Bi7iu6 = (~(Pi7iu6 & Wi7iu6)); +assign Mivhu6 = (Dj7iu6 & Kj7iu6); +assign Kj7iu6 = (Rj7iu6 & Yj7iu6); +assign Rj7iu6 = (~(Xudpw6 & Fk7iu6)); +assign Dj7iu6 = (IRQ[0] & Mk7iu6); +assign Mk7iu6 = (~(Tk7iu6 & Al7iu6)); +assign Al7iu6 = (Qg6iu6 | Hl7iu6); +assign Fivhu6 = (Ol7iu6 | Vl7iu6); +assign Vl7iu6 = (Ivfhu6 & Cm7iu6); +assign Cm7iu6 = (~(Jm7iu6 & Qm7iu6)); +assign Qm7iu6 = (~(Gc5iu6 & Xm7iu6)); +assign Xm7iu6 = (Sb5iu6 | Eh6iu6); +assign Yhvhu6 = (En7iu6 | Ln7iu6); +assign En7iu6 = (Zn7iu6 ? Sn7iu6 : Ppfpw6[15]); +assign Sn7iu6 = (HRDATA[15] & Go7iu6); +assign Rhvhu6 = (~(No7iu6 & Uo7iu6)); +assign Uo7iu6 = (Bp7iu6 & Ip7iu6); +assign Ip7iu6 = (~(Pp7iu6 & HRDATA[15])); +assign Bp7iu6 = (Wp7iu6 & Dq7iu6); +assign Dq7iu6 = (~(Hrfpw6[15] & Uy4iu6)); +assign Wp7iu6 = (~(Kq7iu6 & HRDATA[31])); +assign No7iu6 = (Rq7iu6 & Yq7iu6); +assign Yq7iu6 = (~(Fr7iu6 & Z54iu6)); +assign Rq7iu6 = (Mr7iu6 & Tr7iu6); +assign Tr7iu6 = (~(Ppfpw6[15] & A25iu6)); +assign Mr7iu6 = (~(R05iu6 & D7fpw6[15])); +assign Khvhu6 = (!As7iu6); +assign As7iu6 = (HREADY ? Os7iu6 : Hs7iu6); +assign Os7iu6 = (~(Vs7iu6 & Ct7iu6)); +assign Ct7iu6 = (~(Jt7iu6 & Qt7iu6)); +assign Qt7iu6 = (Xt7iu6 & Eu7iu6); +assign Eu7iu6 = (~(Lu7iu6 & Rthhu6)); +assign Lu7iu6 = (Smhhu6 & Engpw6[28]); +assign Xt7iu6 = (~(Su7iu6 & Kshhu6)); +assign Su7iu6 = (Alhhu6 & Plgpw6[28]); +assign Jt7iu6 = (Zu7iu6 & Gv7iu6); +assign Gv7iu6 = (~(Nv7iu6 & Drhhu6)); +assign Nv7iu6 = (Ijhhu6 & Akgpw6[28]); +assign Zu7iu6 = (~(Uv7iu6 & Wphhu6)); +assign Uv7iu6 = (Qhhhu6 & Ligpw6[28]); +assign Dhvhu6 = (!Bw7iu6); +assign Bw7iu6 = (HREADY ? Iw7iu6 : Svdpw6); +assign Iw7iu6 = (~(Vs7iu6 & Pw7iu6)); +assign Pw7iu6 = (~(Ww7iu6 & Dx7iu6)); +assign Dx7iu6 = (Kx7iu6 & Rx7iu6); +assign Rx7iu6 = (~(Yx7iu6 & Rthhu6)); +assign Yx7iu6 = (Smhhu6 & Engpw6[27]); +assign Kx7iu6 = (~(Fy7iu6 & Kshhu6)); +assign Fy7iu6 = (Alhhu6 & Plgpw6[27]); +assign Ww7iu6 = (My7iu6 & Ty7iu6); +assign Ty7iu6 = (~(Az7iu6 & Drhhu6)); +assign Az7iu6 = (Ijhhu6 & Akgpw6[27]); +assign My7iu6 = (~(Hz7iu6 & Wphhu6)); +assign Hz7iu6 = (Qhhhu6 & Ligpw6[27]); +assign Vs7iu6 = (Oz7iu6 & Vz7iu6); +assign Vz7iu6 = (~(C08iu6 | Dx0iu6)); +assign C08iu6 = (~(Jehhu6 & J08iu6)); +assign J08iu6 = (~(Q08iu6 & X08iu6)); +assign X08iu6 = (~(E18iu6 & L18iu6)); +assign E18iu6 = (S18iu6 & Z18iu6); +assign Oz7iu6 = (~(G28iu6 | Ef1iu6)); +assign G28iu6 = (N28iu6 | Rx0iu6); +assign N28iu6 = (!Kohhu6); +assign Wgvhu6 = (~(U28iu6 & B38iu6)); +assign B38iu6 = (I38iu6 & P38iu6); +assign P38iu6 = (~(HRDATA[13] & Pp7iu6)); +assign I38iu6 = (W38iu6 & D48iu6); +assign D48iu6 = (~(Hrfpw6[13] & Uy4iu6)); +assign W38iu6 = (~(HRDATA[29] & Kq7iu6)); +assign U28iu6 = (K48iu6 & R48iu6); +assign R48iu6 = (~(A25iu6 & Ppfpw6[13])); +assign K48iu6 = (~(R05iu6 & D7fpw6[13])); +assign Pgvhu6 = (F58iu6 ? S8fpw6[0] : Y48iu6); +assign Y48iu6 = (~(M58iu6 & T58iu6)); +assign T58iu6 = (A68iu6 & H68iu6); +assign H68iu6 = (O68iu6 & V68iu6); +assign O68iu6 = (~(C78iu6 | Bi0iu6)); +assign A68iu6 = (J78iu6 & Q78iu6); +assign Q78iu6 = (~(X78iu6 & E88iu6)); +assign X78iu6 = (L88iu6 ^ S88iu6); +assign J78iu6 = (Z88iu6 & G98iu6); +assign G98iu6 = (~(N98iu6 & U98iu6)); +assign N98iu6 = (~(Tr0iu6 | Cyfpw6[6])); +assign Z88iu6 = (~(Ba8iu6 & Ia8iu6)); +assign M58iu6 = (Pa8iu6 & Wa8iu6); +assign Wa8iu6 = (Db8iu6 & Kb8iu6); +assign Kb8iu6 = (Rb8iu6 | Yb8iu6); +assign Db8iu6 = (Fc8iu6 & Mc8iu6); +assign Mc8iu6 = (~(Tc8iu6 & Ppfpw6[0])); +assign Fc8iu6 = (Ad8iu6 | Hd8iu6); +assign Pa8iu6 = (Od8iu6 & Vd8iu6); +assign Vd8iu6 = (~(Ce8iu6 & Je8iu6)); +assign Od8iu6 = (~(Qe8iu6 & Xe8iu6)); +assign Igvhu6 = (Lf8iu6 ? vis_r0_o[4] : Ef8iu6); +assign Bgvhu6 = (Zf8iu6 ? Sf8iu6 : vis_apsr_o[1]); +assign Zf8iu6 = (HREADY & Gg8iu6); +assign Gg8iu6 = (~(Ng8iu6 & Ug8iu6)); +assign Sf8iu6 = (~(Bh8iu6 & Ih8iu6)); +assign Ih8iu6 = (~(Ph8iu6 & Wh8iu6)); +assign Bh8iu6 = (Di8iu6 & Ki8iu6); +assign Ki8iu6 = (~(Ug8iu6 & Ri8iu6)); +assign Di8iu6 = (~(Yi8iu6 & Fj8iu6)); +assign Ufvhu6 = (~(Mj8iu6 & Tj8iu6)); +assign Tj8iu6 = (Ak8iu6 & Hk8iu6); +assign Hk8iu6 = (~(Ok8iu6 & vis_pc_o[28])); +assign Ak8iu6 = (Vk8iu6 & Cl8iu6); +assign Cl8iu6 = (~(Jl8iu6 & Dx0iu6)); +assign Vk8iu6 = (~(Ql8iu6 & vis_apsr_o[1])); +assign Mj8iu6 = (Xl8iu6 & Em8iu6); +assign Em8iu6 = (Lm8iu6 | Sm8iu6); +assign Xl8iu6 = (~(Zm8iu6 & M94iu6)); +assign Nfvhu6 = (Nn8iu6 ? vis_tbit_o : Gn8iu6); +assign Nn8iu6 = (Un8iu6 & Bo8iu6); +assign Bo8iu6 = (~(Io8iu6 & Po8iu6)); +assign Po8iu6 = (Wo8iu6 & Dp8iu6); +assign Wo8iu6 = (~(Kp8iu6 & Rp8iu6)); +assign Rp8iu6 = (~(Yp8iu6 | Fq8iu6)); +assign Kp8iu6 = (Mq8iu6 & Tq8iu6); +assign Tq8iu6 = (Mr0iu6 | Tr0iu6); +assign Mq8iu6 = (Cyfpw6[3] | Y7ghu6); +assign Io8iu6 = (Ar8iu6 & Hr8iu6); +assign Un8iu6 = (~(HREADY & Or8iu6)); +assign Or8iu6 = (~(Vr8iu6 & Cs8iu6)); +assign Gn8iu6 = (Vr8iu6 ? Js8iu6 : Fkfpw6[24]); +assign Js8iu6 = (~(Qs8iu6 & Xs8iu6)); +assign Xs8iu6 = (~(Eafpw6[0] & Et8iu6)); +assign Qs8iu6 = (Lt8iu6 & St8iu6); +assign St8iu6 = (Zt8iu6 | Gu8iu6); +assign Lt8iu6 = (~(Yi8iu6 & Nu8iu6)); +assign Gfvhu6 = (~(Uu8iu6 & Bv8iu6)); +assign Bv8iu6 = (Iv8iu6 & Pv8iu6); +assign Pv8iu6 = (~(Hrfpw6[14] & Uy4iu6)); +assign Iv8iu6 = (Wv8iu6 & Dw8iu6); +assign Dw8iu6 = (~(M15iu6 & Kw8iu6)); +assign Wv8iu6 = (~(Pz4iu6 & Rw8iu6)); +assign Uu8iu6 = (Yw8iu6 & Fx8iu6); +assign Fx8iu6 = (~(Ppfpw6[14] & A25iu6)); +assign Yw8iu6 = (~(R05iu6 & D7fpw6[14])); +assign Zevhu6 = (Mx8iu6 ? vis_r1_o[4] : Ef8iu6); +assign Sevhu6 = (Mx8iu6 ? vis_r1_o[0] : Tx8iu6); +assign Levhu6 = (Hy8iu6 ? Ay8iu6 : Iwfpw6[0]); +assign Eevhu6 = (Lf8iu6 ? vis_r0_o[0] : Tx8iu6); +assign Xdvhu6 = (Vy8iu6 ? Oy8iu6 : vis_primask_o); +assign Vy8iu6 = (~(Eh6iu6 | Cz8iu6)); +assign Qdvhu6 = (~(Jz8iu6 & Qz8iu6)); +assign Qz8iu6 = (Xz8iu6 & E09iu6); +assign E09iu6 = (~(Ql8iu6 & vis_ipsr_o[0])); +assign Xz8iu6 = (L09iu6 & S09iu6); +assign S09iu6 = (~(Jl8iu6 & Z09iu6)); +assign Z09iu6 = (Ay8iu6 | G19iu6); +assign G19iu6 = (~(N19iu6 | U19iu6)); +assign L09iu6 = (~(B29iu6 & vis_primask_o)); +assign Jz8iu6 = (I29iu6 & P29iu6); +assign P29iu6 = (~(W29iu6 & Fkfpw6[0])); +assign I29iu6 = (~(Zm8iu6 & T24iu6)); +assign Jdvhu6 = (Mx8iu6 ? vis_r1_o[31] : D39iu6); +assign Cdvhu6 = (Lf8iu6 ? vis_r0_o[31] : D39iu6); +assign Vcvhu6 = (Mx8iu6 ? vis_r1_o[30] : K39iu6); +assign Ocvhu6 = (Lf8iu6 ? vis_r0_o[30] : K39iu6); +assign Hcvhu6 = (~(R39iu6 & Y39iu6)); +assign Y39iu6 = (~(Jfgpw6[1] & Eh6iu6)); +assign R39iu6 = (F49iu6 & Ii7iu6); +assign F49iu6 = (~(M49iu6 & Wi7iu6)); +assign Acvhu6 = (~(T49iu6 & A59iu6)); +assign A59iu6 = (~(Vbgpw6[31] & H59iu6)); +assign H59iu6 = (~(HWDATA[31] & O59iu6)); +assign T49iu6 = (~(V59iu6 & HWDATA[31])); +assign Tbvhu6 = (~(C69iu6 & J69iu6)); +assign J69iu6 = (~(Vbgpw6[0] & Q69iu6)); +assign Q69iu6 = (~(HWDATA[0] & O59iu6)); +assign C69iu6 = (~(V59iu6 & HWDATA[0])); +assign Mbvhu6 = (~(X69iu6 & E79iu6)); +assign E79iu6 = (~(Jfgpw6[3] & Eh6iu6)); +assign X69iu6 = (L79iu6 & Ii7iu6); +assign L79iu6 = (~(S79iu6 & Wi7iu6)); +assign S79iu6 = (~(HADDR[3] ^ Z79iu6)); +assign Fbvhu6 = (~(G89iu6 & N89iu6)); +assign N89iu6 = (U89iu6 | HREADY); +assign G89iu6 = (B99iu6 & Ii7iu6); +assign B99iu6 = (~(I99iu6 & Wi7iu6)); +assign I99iu6 = (~(HADDR[2] ^ P99iu6)); +assign Yavhu6 = (~(W99iu6 & Da9iu6)); +assign Da9iu6 = (Ka9iu6 | HREADY); +assign W99iu6 = (Ra9iu6 & Ii7iu6); +assign Ii7iu6 = (~(Wi7iu6 & Ya9iu6)); +assign Ya9iu6 = (~(Fb9iu6 & Mb9iu6)); +assign Mb9iu6 = (HSIZE[1] & Tb9iu6); +assign Tb9iu6 = (~(Ac9iu6 & Hc9iu6)); +assign Hc9iu6 = (~(Oc9iu6 & Vc9iu6)); +assign Vc9iu6 = (~(Cd9iu6 | HADDR[9])); +assign Cd9iu6 = (~(Jd9iu6 & Qd9iu6)); +assign Qd9iu6 = (~(HADDR[6] & Xd9iu6)); +assign Xd9iu6 = (~(HADDR[7] & Ee9iu6)); +assign Ee9iu6 = (HADDR[3] | HADDR[2]); +assign Jd9iu6 = (~(HADDR[7] & Le9iu6)); +assign Le9iu6 = (~(Se9iu6 & HADDR[11])); +assign Se9iu6 = (~(M49iu6 | Ze9iu6)); +assign Oc9iu6 = (Gf9iu6 & Nf9iu6); +assign Nf9iu6 = (HADDR[11] ? Uf9iu6 : Pi7iu6); +assign Uf9iu6 = (Bg9iu6 & Ig9iu6); +assign Ig9iu6 = (Pg9iu6 & Wg9iu6); +assign Wg9iu6 = (~(HADDR[3] & Dh9iu6)); +assign Dh9iu6 = (M49iu6 | HADDR[2]); +assign Pg9iu6 = (M49iu6 | HADDR[6]); +assign M49iu6 = (!HADDR[4]); +assign Bg9iu6 = (HADDR[5] & Kh9iu6); +assign Kh9iu6 = (Rh9iu6 | Xg6iu6); +assign Rh9iu6 = (!HADDR[2]); +assign Gf9iu6 = (HADDR[10] & Yh9iu6); +assign Yh9iu6 = (Z79iu6 | HADDR[8]); +assign Ac9iu6 = (HADDR[11] ? Mi9iu6 : Fi9iu6); +assign HADDR[11] = (Ze9iu6 ? Tugpw6[9] : Jshpw6[11]); +assign Mi9iu6 = (~(Ti9iu6 & Aj9iu6)); +assign Aj9iu6 = (Hj9iu6 & Oj9iu6); +assign Oj9iu6 = (HADDR[10] & Vj9iu6); +assign Vj9iu6 = (Ck9iu6 | HADDR[2]); +assign Hj9iu6 = (~(HADDR[6] | Pi7iu6)); +assign Ti9iu6 = (Jk9iu6 & P99iu6); +assign P99iu6 = (!HADDR[7]); +assign Jk9iu6 = (~(HADDR[9] | HADDR[5])); +assign Fi9iu6 = (~(Qk9iu6 & Z79iu6)); +assign Z79iu6 = (!HADDR[5]); +assign HADDR[5] = (Xg6iu6 ? Jshpw6[5] : Tugpw6[3]); +assign Qk9iu6 = (Xk9iu6 & El9iu6); +assign El9iu6 = (!HADDR[6]); +assign Xk9iu6 = (Zl9iu6 ? Sl9iu6 : Ll9iu6); +assign Zl9iu6 = (~(HADDR[4] | HADDR[3])); +assign HADDR[4] = (Xg6iu6 ? Jshpw6[4] : Tugpw6[2]); +assign Sl9iu6 = (Gm9iu6 & Nm9iu6); +assign Nm9iu6 = (~(HADDR[9] ^ Pi7iu6)); +assign Gm9iu6 = (~(HADDR[2] | HADDR[10])); +assign HADDR[2] = (Xg6iu6 ? P47iu6 : Tugpw6[0]); +assign P47iu6 = (Wqzhu6 ? Vo4iu6 : Tnhpw6[2]); +assign Ll9iu6 = (Um9iu6 & Pi7iu6); +assign Pi7iu6 = (!HADDR[8]); +assign HADDR[8] = (Xg6iu6 ? Jshpw6[8] : Tugpw6[6]); +assign Um9iu6 = (~(HADDR[9] | HADDR[7])); +assign HADDR[7] = (Xg6iu6 ? Jshpw6[7] : Tugpw6[5]); +assign Fb9iu6 = (Bn9iu6 & HADDR[15]); +assign Bn9iu6 = (Xg6iu6 ? Pn9iu6 : In9iu6); +assign Pn9iu6 = (Wn9iu6 & Fs6iu6); +assign Fs6iu6 = (Do9iu6 & Ko9iu6); +assign Ko9iu6 = (Ro9iu6 & Yo9iu6); +assign Yo9iu6 = (!Jshpw6[25]); +assign Ro9iu6 = (~(Jshpw6[26] | Jshpw6[27])); +assign Do9iu6 = (Fp9iu6 & Mp9iu6); +assign Mp9iu6 = (!Jshpw6[22]); +assign Fp9iu6 = (~(Jshpw6[23] | Jshpw6[24])); +assign Wn9iu6 = (Tp9iu6 & Aq9iu6); +assign Aq9iu6 = (At6iu6 & Bx6iu6); +assign Bx6iu6 = (!Jshpw6[12]); +assign At6iu6 = (~(Jshpw6[20] | Jshpw6[21])); +assign Tp9iu6 = (Kc7iu6 & Mz6iu6); +assign Mz6iu6 = (Hq9iu6 & Oq9iu6); +assign Oq9iu6 = (~(Jshpw6[18] | Jshpw6[19])); +assign Hq9iu6 = (~(Jshpw6[16] | Jshpw6[17])); +assign Kc7iu6 = (Jshpw6[14] & Jshpw6[13]); +assign In9iu6 = (Vq9iu6 & Cr9iu6); +assign Cr9iu6 = (Jr9iu6 & Qr9iu6); +assign Qr9iu6 = (Xr9iu6 & Es9iu6); +assign Es9iu6 = (~(Pxdpw6 | Ixdpw6)); +assign Xr9iu6 = (~(Dydpw6 | Wxdpw6)); +assign Jr9iu6 = (Ls9iu6 & Ss9iu6); +assign Ss9iu6 = (~(Rydpw6 | Kydpw6)); +assign Ls9iu6 = (~(Fzdpw6 | Yydpw6)); +assign Vq9iu6 = (Zs9iu6 & Gt9iu6); +assign Gt9iu6 = (Nt9iu6 & Ut9iu6); +assign Ut9iu6 = (~(Tzdpw6 | Mzdpw6)); +assign Nt9iu6 = (~(H0epw6 | A0epw6)); +assign Zs9iu6 = (Bu9iu6 & Tugpw6[12]); +assign Bu9iu6 = (~(Iu9iu6 | O0epw6)); +assign Iu9iu6 = (!Tugpw6[11]); +assign Ra9iu6 = (~(Pu9iu6 & Wi7iu6)); +assign Pu9iu6 = (~(HADDR[10] ^ Ck9iu6)); +assign Ck9iu6 = (!HADDR[3]); +assign HADDR[3] = (Xg6iu6 ? I47iu6 : Tugpw6[1]); +assign I47iu6 = (Wqzhu6 ? Wu9iu6 : Tnhpw6[3]); +assign HADDR[10] = (Xg6iu6 ? Jshpw6[10] : Tugpw6[8]); +assign Ravhu6 = (Dv9iu6 ? R4gpw6[7] : HWDATA[31]); +assign Kavhu6 = (~(Kv9iu6 & Rv9iu6)); +assign Rv9iu6 = (Yv9iu6 & Fw9iu6); +assign Fw9iu6 = (~(Jl8iu6 & Mzdpw6)); +assign Yv9iu6 = (~(vis_pc_o[22] & Ok8iu6)); +assign Kv9iu6 = (Mw9iu6 & Tw9iu6); +assign Tw9iu6 = (Lm8iu6 | Ax9iu6); +assign Mw9iu6 = (Hx9iu6 | Ox9iu6); +assign Davhu6 = (Mx8iu6 ? vis_r1_o[23] : Vx9iu6); +assign W9vhu6 = (Lf8iu6 ? vis_r0_o[23] : Vx9iu6); +assign P9vhu6 = (Jy9iu6 ? Cy9iu6 : Vrfhu6); +assign Jy9iu6 = (HREADY & Qy9iu6); +assign Qy9iu6 = (~(Xy9iu6 & Ez9iu6)); +assign Ez9iu6 = (Lz9iu6 & Sz9iu6); +assign Sz9iu6 = (Zz9iu6 & G0aiu6); +assign G0aiu6 = (~(N0aiu6 & U0aiu6)); +assign N0aiu6 = (~(Cyfpw6[6] | Y7ghu6)); +assign Zz9iu6 = (B1aiu6 & I1aiu6); +assign Lz9iu6 = (P1aiu6 & W1aiu6); +assign W1aiu6 = (~(D2aiu6 & K2aiu6)); +assign D2aiu6 = (~(R2aiu6 | Cyfpw6[4])); +assign P1aiu6 = (~(Y2aiu6 & F3aiu6)); +assign Xy9iu6 = (M3aiu6 & T3aiu6); +assign T3aiu6 = (A4aiu6 & H4aiu6); +assign H4aiu6 = (O4aiu6 | V4aiu6); +assign A4aiu6 = (C5aiu6 & J5aiu6); +assign C5aiu6 = (Q5aiu6 | X5aiu6); +assign M3aiu6 = (E6aiu6 & L6aiu6); +assign E6aiu6 = (~(S6aiu6 & Z6aiu6)); +assign Cy9iu6 = (~(G7aiu6 & N7aiu6)); +assign N7aiu6 = (~(U7aiu6 & B8aiu6)); +assign B8aiu6 = (I8aiu6 | P8aiu6); +assign P8aiu6 = (Cyfpw6[3] ? D9aiu6 : W8aiu6); +assign D9aiu6 = (K9aiu6 | R9aiu6); +assign I8aiu6 = (~(Y9aiu6 & Faaiu6)); +assign Y9aiu6 = (Mr0iu6 ? D7fpw6[3] : Cyfpw6[5]); +assign U7aiu6 = (vis_control_o | Maaiu6); +assign Maaiu6 = (~(Taaiu6 | Quzhu6)); +assign G7aiu6 = (Cyfpw6[3] ? Hbaiu6 : Abaiu6); +assign Hbaiu6 = (~(Obaiu6 & Vbaiu6)); +assign Vbaiu6 = (~(R2aiu6 | D7fpw6[0])); +assign Obaiu6 = (~(Ccaiu6 | V4aiu6)); +assign Abaiu6 = (Rb8iu6 | Jcaiu6); +assign I9vhu6 = (Mx8iu6 ? vis_r1_o[2] : Qcaiu6); +assign B9vhu6 = (Lf8iu6 ? vis_r0_o[2] : Qcaiu6); +assign U8vhu6 = (~(Xcaiu6 & Edaiu6)); +assign Edaiu6 = (~(Ldaiu6 & Hy8iu6)); +assign Ldaiu6 = (~(Z18iu6 | Sdaiu6)); +assign Xcaiu6 = (~(Zdaiu6 & Eh6iu6)); +assign Zdaiu6 = (~(Geaiu6 & Neaiu6)); +assign Neaiu6 = (~(V3xhu6 & Ueaiu6)); +assign Ueaiu6 = (~(Bfaiu6 & Ifaiu6)); +assign Ifaiu6 = (Pfaiu6 & Wfaiu6); +assign Wfaiu6 = (~(K2aiu6 & Dgaiu6)); +assign Dgaiu6 = (~(Kgaiu6 & Rgaiu6)); +assign Rgaiu6 = (~(Ygaiu6 & Fhaiu6)); +assign Ygaiu6 = (~(As0iu6 | Y7ghu6)); +assign Pfaiu6 = (Mhaiu6 & Thaiu6); +assign Mhaiu6 = (~(Aiaiu6 & Hiaiu6)); +assign Aiaiu6 = (Oiaiu6 & Viaiu6); +assign Viaiu6 = (~(Cjaiu6 & Jjaiu6)); +assign Jjaiu6 = (Qjaiu6 | Cyfpw6[3]); +assign Cjaiu6 = (Xjaiu6 & Ekaiu6); +assign Xjaiu6 = (As0iu6 | Lkaiu6); +assign Bfaiu6 = (Skaiu6 & Zkaiu6); +assign Zkaiu6 = (~(Glaiu6 & Nlaiu6)); +assign Skaiu6 = (Ulaiu6 & Bmaiu6); +assign Bmaiu6 = (~(Imaiu6 & Pmaiu6)); +assign Pmaiu6 = (~(Wmaiu6 & Dnaiu6)); +assign Dnaiu6 = (Knaiu6 | Cyfpw6[1]); +assign Ulaiu6 = (~(Cyfpw6[7] & Rnaiu6)); +assign Rnaiu6 = (~(Ynaiu6 & Foaiu6)); +assign Foaiu6 = (~(Moaiu6 & Ii0iu6)); +assign Ynaiu6 = (~(Toaiu6 & Apaiu6)); +assign N8vhu6 = (~(Hpaiu6 & Opaiu6)); +assign Opaiu6 = (~(Vpaiu6 & Cqaiu6)); +assign Vpaiu6 = (~(Jqaiu6 & Qqaiu6)); +assign Qqaiu6 = (Xqaiu6 & Eraiu6); +assign Eraiu6 = (~(Lraiu6 & Ja5iu6)); +assign Xqaiu6 = (Sraiu6 & Zraiu6); +assign Sraiu6 = (~(Gsaiu6 & Nsaiu6)); +assign Jqaiu6 = (Usaiu6 & HREADY); +assign Hpaiu6 = (~(SLEEPHOLDREQn & HREADY)); +assign G8vhu6 = (~(Li5iu6 & Btaiu6)); +assign Btaiu6 = (~(Itaiu6 & Righu6)); +assign Itaiu6 = (~(Ptaiu6 | Qg6iu6)); +assign Li5iu6 = (Wtaiu6 & Duaiu6); +assign Duaiu6 = (~(Kuaiu6 & Ruaiu6)); +assign Kuaiu6 = (~(Yuaiu6 & Fvaiu6)); +assign Fvaiu6 = (Mvaiu6 & Tvaiu6); +assign Tvaiu6 = (~(Awaiu6 & Hwaiu6)); +assign Awaiu6 = (~(Owaiu6 | Vwaiu6)); +assign Mvaiu6 = (~(Cxaiu6 & Jxaiu6)); +assign Cxaiu6 = (~(Qxaiu6 | D7fpw6[14])); +assign Yuaiu6 = (Xxaiu6 & Eyaiu6); +assign Eyaiu6 = (~(Lyaiu6 & L3ehu6)); +assign Wtaiu6 = (Syaiu6 & Zyaiu6); +assign Zyaiu6 = (~(Lyaiu6 & Gzaiu6)); +assign Gzaiu6 = (~(Nzaiu6 | L3ehu6)); +assign Nzaiu6 = (Uzaiu6 & B0biu6); +assign Lyaiu6 = (~(K9aiu6 | Geaiu6)); +assign Syaiu6 = (I0biu6 | P0biu6); +assign Z7vhu6 = (~(W0biu6 & D1biu6)); +assign D1biu6 = (~(K1biu6 & R1biu6)); +assign R1biu6 = (~(Geaiu6 | L3ehu6)); +assign K1biu6 = (Y1biu6 & F2biu6); +assign Y1biu6 = (Uzaiu6 ? M2biu6 : Quzhu6); +assign W0biu6 = (~(Qwdhu6 & T2biu6)); +assign S7vhu6 = (~(A3biu6 & H3biu6)); +assign H3biu6 = (O3biu6 & V3biu6); +assign V3biu6 = (~(HRDATA[0] & Pp7iu6)); +assign O3biu6 = (C4biu6 & J4biu6); +assign J4biu6 = (~(Hrfpw6[0] & Uy4iu6)); +assign C4biu6 = (~(HRDATA[16] & Kq7iu6)); +assign A3biu6 = (Q4biu6 & X4biu6); +assign X4biu6 = (~(Fr7iu6 & T24iu6)); +assign Q4biu6 = (E5biu6 & L5biu6); +assign L5biu6 = (~(Ppfpw6[0] & A25iu6)); +assign E5biu6 = (~(R05iu6 & D7fpw6[0])); +assign L7vhu6 = (F58iu6 ? S8fpw6[1] : S5biu6); +assign S5biu6 = (~(Z5biu6 & G6biu6)); +assign G6biu6 = (N6biu6 & U6biu6); +assign U6biu6 = (B7biu6 & V68iu6); +assign B7biu6 = (~(I7biu6 & E88iu6)); +assign I7biu6 = (P7biu6 ^ W7biu6); +assign N6biu6 = (D8biu6 & K8biu6); +assign K8biu6 = (~(R8biu6 & Ce8iu6)); +assign R8biu6 = (~(Y8biu6 ^ S8fpw6[0])); +assign D8biu6 = (~(Tc8iu6 & Ppfpw6[1])); +assign Z5biu6 = (F9biu6 & M9biu6); +assign M9biu6 = (T9biu6 & Aabiu6); +assign Aabiu6 = (O95iu6 | Hd8iu6); +assign T9biu6 = (~(Habiu6 & D7fpw6[0])); +assign F9biu6 = (Oabiu6 & Vabiu6); +assign Vabiu6 = (Ccaiu6 | Yb8iu6); +assign Oabiu6 = (~(Cbbiu6 & D7fpw6[6])); +assign E7vhu6 = (~(Jbbiu6 & Qbbiu6)); +assign Qbbiu6 = (~(D8hhu6 & Xbbiu6)); +assign X6vhu6 = (~(Qw4iu6 & Ecbiu6)); +assign Ecbiu6 = (~(Dhgpw6[1] & Lcbiu6)); +assign Lcbiu6 = (~(Scbiu6 & O34iu6)); +assign Qw4iu6 = (~(W8aiu6 & Cyfpw6[0])); +assign Q6vhu6 = (Zcbiu6 & Gdbiu6); +assign Gdbiu6 = (Ndbiu6 & Udbiu6); +assign Ndbiu6 = (~(Npdpw6 & Bebiu6)); +assign Zcbiu6 = (IRQ[31] & Iebiu6); +assign Iebiu6 = (~(Tk7iu6 & Pebiu6)); +assign Pebiu6 = (Webiu6 | Qg6iu6); +assign J6vhu6 = (Dfbiu6 & Kfbiu6); +assign Kfbiu6 = (Rfbiu6 & Yfbiu6); +assign Rfbiu6 = (~(Updpw6 & Fgbiu6)); +assign Dfbiu6 = (IRQ[29] & Mgbiu6); +assign Mgbiu6 = (~(Tk7iu6 & Tgbiu6)); +assign Tgbiu6 = (Qg6iu6 | Ahbiu6); +assign C6vhu6 = (~(Hhbiu6 & Ohbiu6)); +assign Ohbiu6 = (Vhbiu6 | Cibiu6); +assign Hhbiu6 = (Jibiu6 & Qibiu6); +assign Qibiu6 = (~(Xibiu6 & Ppfpw6[5])); +assign Jibiu6 = (Ejbiu6 | Ljbiu6); +assign V5vhu6 = (~(Sjbiu6 & Zjbiu6)); +assign Zjbiu6 = (Gkbiu6 & Nkbiu6); +assign Nkbiu6 = (~(HRDATA[8] & Pp7iu6)); +assign Gkbiu6 = (Ukbiu6 & Blbiu6); +assign Blbiu6 = (~(Hrfpw6[8] & Uy4iu6)); +assign Ukbiu6 = (~(HRDATA[24] & Kq7iu6)); +assign Sjbiu6 = (Ilbiu6 & Plbiu6); +assign Plbiu6 = (~(A25iu6 & Ppfpw6[8])); +assign Ilbiu6 = (~(D7fpw6[8] & R05iu6)); +assign O5vhu6 = (~(Wlbiu6 & Dmbiu6)); +assign Dmbiu6 = (Jm7iu6 | Kmbiu6); +assign Wlbiu6 = (Rmbiu6 & Ymbiu6); +assign Ymbiu6 = (~(Ppfpw6[0] & Fnbiu6)); +assign Rmbiu6 = (~(Mnbiu6 & HRDATA[0])); +assign H5vhu6 = (~(Tnbiu6 & Aobiu6)); +assign Aobiu6 = (~(Hobiu6 & Kw8iu6)); +assign Kw8iu6 = (~(Svdpw6 & Oobiu6)); +assign Oobiu6 = (~(HRDATA[14] & Vobiu6)); +assign Tnbiu6 = (~(Ppfpw6[14] & Cpbiu6)); +assign A5vhu6 = (~(Jpbiu6 & Qpbiu6)); +assign Qpbiu6 = (Xpbiu6 & Eqbiu6); +assign Eqbiu6 = (~(Xlfpw6[8] & Lqbiu6)); +assign Xpbiu6 = (~(IRQLATENCY[7] & Ol7iu6)); +assign Jpbiu6 = (Sqbiu6 & Zqbiu6); +assign Zqbiu6 = (~(Mnbiu6 & HRDATA[13])); +assign Sqbiu6 = (~(Cpbiu6 & Ppfpw6[13])); +assign T4vhu6 = (~(Grbiu6 & Nrbiu6)); +assign Nrbiu6 = (Urbiu6 & Bsbiu6); +assign Bsbiu6 = (~(Xlfpw6[7] & Lqbiu6)); +assign Urbiu6 = (~(IRQLATENCY[6] & Ol7iu6)); +assign Grbiu6 = (Isbiu6 & Psbiu6); +assign Psbiu6 = (~(Mnbiu6 & HRDATA[12])); +assign Isbiu6 = (~(Cpbiu6 & Ppfpw6[12])); +assign M4vhu6 = (~(Wsbiu6 & Dtbiu6)); +assign Dtbiu6 = (Ktbiu6 & Rtbiu6); +assign Rtbiu6 = (~(Xlfpw6[6] & Lqbiu6)); +assign Ktbiu6 = (~(IRQLATENCY[5] & Ol7iu6)); +assign Wsbiu6 = (Ytbiu6 & Fubiu6); +assign Fubiu6 = (~(HRDATA[11] & Mnbiu6)); +assign Ytbiu6 = (~(Cpbiu6 & Ppfpw6[11])); +assign F4vhu6 = (~(Mubiu6 & Tubiu6)); +assign Tubiu6 = (Avbiu6 & Hvbiu6); +assign Hvbiu6 = (~(Xlfpw6[5] & Lqbiu6)); +assign Avbiu6 = (~(IRQLATENCY[4] & Ol7iu6)); +assign Mubiu6 = (Ovbiu6 & Vvbiu6); +assign Vvbiu6 = (~(Mnbiu6 & HRDATA[10])); +assign Ovbiu6 = (~(Cpbiu6 & Ppfpw6[10])); +assign Y3vhu6 = (~(Cwbiu6 & Jwbiu6)); +assign Jwbiu6 = (Qwbiu6 & Xwbiu6); +assign Xwbiu6 = (~(Xlfpw6[4] & Lqbiu6)); +assign Qwbiu6 = (~(IRQLATENCY[3] & Ol7iu6)); +assign Cwbiu6 = (Exbiu6 & Lxbiu6); +assign Lxbiu6 = (~(HRDATA[9] & Mnbiu6)); +assign Exbiu6 = (~(Cpbiu6 & Ppfpw6[9])); +assign R3vhu6 = (~(Sxbiu6 & Zxbiu6)); +assign Zxbiu6 = (Gybiu6 & Nybiu6); +assign Nybiu6 = (~(Xlfpw6[3] & Lqbiu6)); +assign Gybiu6 = (~(IRQLATENCY[2] & Ol7iu6)); +assign Sxbiu6 = (Uybiu6 & Bzbiu6); +assign Bzbiu6 = (~(Mnbiu6 & HRDATA[8])); +assign Uybiu6 = (~(Cpbiu6 & Ppfpw6[8])); +assign K3vhu6 = (~(Izbiu6 & Pzbiu6)); +assign Pzbiu6 = (Wzbiu6 & D0ciu6); +assign D0ciu6 = (~(Xlfpw6[2] & Lqbiu6)); +assign Wzbiu6 = (~(IRQLATENCY[1] & Ol7iu6)); +assign Izbiu6 = (K0ciu6 & R0ciu6); +assign R0ciu6 = (~(Mnbiu6 & HRDATA[7])); +assign K0ciu6 = (~(Cpbiu6 & Ppfpw6[7])); +assign D3vhu6 = (~(Y0ciu6 & F1ciu6)); +assign F1ciu6 = (M1ciu6 & T1ciu6); +assign T1ciu6 = (~(Xlfpw6[1] & Lqbiu6)); +assign Lqbiu6 = (~(Ol7iu6 | A2ciu6)); +assign M1ciu6 = (~(IRQLATENCY[0] & Ol7iu6)); +assign Ol7iu6 = (H2ciu6 & O2ciu6); +assign O2ciu6 = (~(V2ciu6 & C3ciu6)); +assign C3ciu6 = (J3ciu6 & Q3ciu6); +assign Q3ciu6 = (Ivfhu6 & X3ciu6); +assign X3ciu6 = (~(Ppfpw6[1] ^ E4ciu6)); +assign J3ciu6 = (L4ciu6 & S4ciu6); +assign S4ciu6 = (Z4ciu6 ^ Ppfpw6[4]); +assign L4ciu6 = (Kmbiu6 ^ Ppfpw6[0]); +assign V2ciu6 = (G5ciu6 & N5ciu6); +assign N5ciu6 = (U5ciu6 ^ Ppfpw6[2]); +assign G5ciu6 = (B6ciu6 & I6ciu6); +assign I6ciu6 = (P6ciu6 ^ Ppfpw6[3]); +assign B6ciu6 = (W6ciu6 ^ Ppfpw6[5]); +assign Y0ciu6 = (D7ciu6 & K7ciu6); +assign K7ciu6 = (~(Mnbiu6 & HRDATA[6])); +assign D7ciu6 = (~(Cpbiu6 & Ppfpw6[6])); +assign W2vhu6 = (~(R7ciu6 & Y7ciu6)); +assign Y7ciu6 = (~(vis_ipsr_o[0] & F8ciu6)); +assign R7ciu6 = (M8ciu6 & T8ciu6); +assign T8ciu6 = (~(Xibiu6 & Ppfpw6[0])); +assign M8ciu6 = (Ejbiu6 | Zt8iu6); +assign P2vhu6 = (~(A9ciu6 & H9ciu6)); +assign H9ciu6 = (~(O9ciu6 & H2ciu6)); +assign O9ciu6 = (HREADY & V9ciu6); +assign A9ciu6 = (~(Fvdhu6 & Caciu6)); +assign Caciu6 = (~(HREADY & Jaciu6)); +assign Jaciu6 = (~(Gc5iu6 & V9ciu6)); +assign V9ciu6 = (Uzaiu6 | Qaciu6); +assign I2vhu6 = (~(Xaciu6 & Ebciu6)); +assign Ebciu6 = (Jm7iu6 | W6ciu6); +assign Xaciu6 = (Lbciu6 & Sbciu6); +assign Sbciu6 = (~(Ppfpw6[5] & Fnbiu6)); +assign Lbciu6 = (~(Mnbiu6 & HRDATA[5])); +assign B2vhu6 = (~(Zbciu6 & Gcciu6)); +assign Gcciu6 = (Jm7iu6 | Z4ciu6); +assign Zbciu6 = (Ncciu6 & Ucciu6); +assign Ucciu6 = (~(Ppfpw6[4] & Fnbiu6)); +assign Ncciu6 = (~(Mnbiu6 & HRDATA[4])); +assign U1vhu6 = (~(Bdciu6 & Idciu6)); +assign Idciu6 = (Jm7iu6 | P6ciu6); +assign Bdciu6 = (Pdciu6 & Wdciu6); +assign Wdciu6 = (~(Ppfpw6[3] & Fnbiu6)); +assign Pdciu6 = (~(HRDATA[3] & Mnbiu6)); +assign N1vhu6 = (~(Deciu6 & Keciu6)); +assign Keciu6 = (Jm7iu6 | U5ciu6); +assign Deciu6 = (Reciu6 & Yeciu6); +assign Yeciu6 = (~(Ppfpw6[2] & Fnbiu6)); +assign Reciu6 = (~(Mnbiu6 & HRDATA[2])); +assign G1vhu6 = (~(Ffciu6 & Mfciu6)); +assign Mfciu6 = (Tfciu6 | Cibiu6); +assign Ffciu6 = (Agciu6 & Hgciu6); +assign Hgciu6 = (~(Xibiu6 & Ppfpw6[2])); +assign Agciu6 = (Ejbiu6 | Ogciu6); +assign Z0vhu6 = (~(Vgciu6 & Chciu6)); +assign Chciu6 = (~(H2ciu6 & E4ciu6)); +assign Vgciu6 = (Jhciu6 & Qhciu6); +assign Qhciu6 = (~(Ppfpw6[1] & Fnbiu6)); +assign Fnbiu6 = (~(Zn7iu6 & Xhciu6)); +assign Xhciu6 = (A2ciu6 | H2ciu6); +assign Jhciu6 = (~(HRDATA[1] & Mnbiu6)); +assign Mnbiu6 = (Hobiu6 & Go7iu6); +assign S0vhu6 = (~(Eiciu6 & Liciu6)); +assign Liciu6 = (Siciu6 | Cibiu6); +assign Eiciu6 = (Ziciu6 & Gjciu6); +assign Gjciu6 = (~(Xibiu6 & Ppfpw6[1])); +assign Ziciu6 = (Ejbiu6 | Njciu6); +assign L0vhu6 = (Hobiu6 | Ujciu6); +assign Ujciu6 = (Bkciu6 & Ikciu6); +assign Ikciu6 = (Ntfhu6 & Pkciu6); +assign Bkciu6 = (Cpbiu6 & R05iu6); +assign Hobiu6 = (~(Ln7iu6 | Cpbiu6)); +assign Cpbiu6 = (!Zn7iu6); +assign E0vhu6 = (~(Wkciu6 & Dlciu6)); +assign Dlciu6 = (Klciu6 & Rlciu6); +assign Rlciu6 = (~(HRDATA[12] & Pp7iu6)); +assign Klciu6 = (Ylciu6 & Fmciu6); +assign Fmciu6 = (~(Hrfpw6[12] & Uy4iu6)); +assign Ylciu6 = (~(HRDATA[28] & Kq7iu6)); +assign Wkciu6 = (Mmciu6 & Tmciu6); +assign Tmciu6 = (~(A25iu6 & Ppfpw6[12])); +assign Mmciu6 = (~(R05iu6 & D7fpw6[12])); +assign Xzuhu6 = (~(Anciu6 & Hnciu6)); +assign Hnciu6 = (Onciu6 & Vnciu6); +assign Vnciu6 = (~(HRDATA[11] & Pp7iu6)); +assign Onciu6 = (Cociu6 & Jociu6); +assign Jociu6 = (~(Hrfpw6[11] & Uy4iu6)); +assign Cociu6 = (~(HRDATA[27] & Kq7iu6)); +assign Anciu6 = (Qociu6 & Xociu6); +assign Xociu6 = (~(A25iu6 & Ppfpw6[11])); +assign Qociu6 = (~(R05iu6 & D7fpw6[11])); +assign Qzuhu6 = (~(Epciu6 & Lpciu6)); +assign Lpciu6 = (Spciu6 & Zpciu6); +assign Zpciu6 = (~(HRDATA[10] & Pp7iu6)); +assign Spciu6 = (Gqciu6 & Nqciu6); +assign Nqciu6 = (~(Hrfpw6[10] & Uy4iu6)); +assign Gqciu6 = (~(HRDATA[26] & Kq7iu6)); +assign Epciu6 = (Uqciu6 & Brciu6); +assign Brciu6 = (~(A25iu6 & Ppfpw6[10])); +assign Uqciu6 = (~(R05iu6 & D7fpw6[10])); +assign Jzuhu6 = (~(Irciu6 & Prciu6)); +assign Prciu6 = (Wrciu6 & Dsciu6); +assign Dsciu6 = (~(HRDATA[9] & Pp7iu6)); +assign Wrciu6 = (Ksciu6 & Rsciu6); +assign Rsciu6 = (~(Hrfpw6[9] & Uy4iu6)); +assign Ksciu6 = (~(HRDATA[25] & Kq7iu6)); +assign Irciu6 = (Ysciu6 & Ftciu6); +assign Ftciu6 = (~(A25iu6 & Ppfpw6[9])); +assign Ysciu6 = (~(R05iu6 & D7fpw6[9])); +assign Czuhu6 = (!Mtciu6); +assign Mtciu6 = (HREADY ? Auciu6 : Ttciu6); +assign Auciu6 = (~(Huciu6 & Ouciu6)); +assign Ouciu6 = (Vuciu6 & Cvciu6); +assign Huciu6 = (HALTED & A2nhu6); +assign Vyuhu6 = (~(Jvciu6 & Qvciu6)); +assign Qvciu6 = (~(Xvciu6 & Hv4iu6)); +assign Hv4iu6 = (!Daohu6); +assign Xvciu6 = (~(HALTED & HREADY)); +assign Jvciu6 = (Eh6iu6 | DBGRESTART); +assign Oyuhu6 = (~(Jw4iu6 & Ewciu6)); +assign Ewciu6 = (~(Dhgpw6[4] & Lwciu6)); +assign Lwciu6 = (~(Scbiu6 & H34iu6)); +assign Jw4iu6 = (~(Swciu6 & EDBGRQ)); +assign Swciu6 = (~(Zwciu6 | HALTED)); +assign Hyuhu6 = (Wi7iu6 ? HWRITE : Gxciu6); +assign Wi7iu6 = (~(Bq6iu6 & Nxciu6)); +assign Nxciu6 = (~(Uxciu6 & Byciu6)); +assign Byciu6 = (~(Iyciu6 | Pyciu6)); +assign Iyciu6 = (Wyciu6 | V0epw6); +assign Wyciu6 = (!Z18iu6); +assign Uxciu6 = (S18iu6 & Hy8iu6); +assign Bq6iu6 = (Dzciu6 | Kzciu6); +assign Dzciu6 = (~(Xg6iu6 & HREADY)); +assign Gxciu6 = (Rzciu6 & Yzciu6); +assign Ayuhu6 = (~(F0diu6 & M0diu6)); +assign M0diu6 = (~(Vbgpw6[30] & T0diu6)); +assign T0diu6 = (~(HWDATA[30] & O59iu6)); +assign F0diu6 = (~(V59iu6 & HWDATA[30])); +assign Txuhu6 = (Dv9iu6 ? R4gpw6[6] : HWDATA[30]); +assign Mxuhu6 = (~(A1diu6 & H1diu6)); +assign H1diu6 = (~(Vbgpw6[29] & O1diu6)); +assign O1diu6 = (~(HWDATA[29] & O59iu6)); +assign A1diu6 = (~(V59iu6 & HWDATA[29])); +assign Fxuhu6 = (~(V1diu6 & C2diu6)); +assign C2diu6 = (~(Vbgpw6[28] & J2diu6)); +assign J2diu6 = (~(HWDATA[28] & O59iu6)); +assign V1diu6 = (~(V59iu6 & HWDATA[28])); +assign Ywuhu6 = (~(Q2diu6 & X2diu6)); +assign X2diu6 = (~(Vbgpw6[27] & E3diu6)); +assign E3diu6 = (~(HWDATA[27] & O59iu6)); +assign Q2diu6 = (~(V59iu6 & HWDATA[27])); +assign Rwuhu6 = (~(L3diu6 & S3diu6)); +assign S3diu6 = (~(Vbgpw6[26] & Z3diu6)); +assign Z3diu6 = (~(HWDATA[26] & O59iu6)); +assign L3diu6 = (~(V59iu6 & HWDATA[26])); +assign Kwuhu6 = (~(G4diu6 & N4diu6)); +assign N4diu6 = (~(Vbgpw6[25] & U4diu6)); +assign U4diu6 = (~(HWDATA[25] & O59iu6)); +assign G4diu6 = (~(V59iu6 & HWDATA[25])); +assign Dwuhu6 = (~(B5diu6 & I5diu6)); +assign I5diu6 = (~(Vbgpw6[24] & P5diu6)); +assign P5diu6 = (~(HWDATA[24] & O59iu6)); +assign B5diu6 = (~(V59iu6 & HWDATA[24])); +assign Wvuhu6 = (~(W5diu6 & D6diu6)); +assign D6diu6 = (~(Vbgpw6[23] & K6diu6)); +assign K6diu6 = (~(HWDATA[23] & O59iu6)); +assign W5diu6 = (~(V59iu6 & HWDATA[23])); +assign Pvuhu6 = (R6diu6 & Y6diu6); +assign Y6diu6 = (F7diu6 & M7diu6); +assign F7diu6 = (~(Drdpw6 & T7diu6)); +assign R6diu6 = (IRQ[23] & A8diu6); +assign A8diu6 = (~(Tk7iu6 & H8diu6)); +assign H8diu6 = (O8diu6 | Qg6iu6); +assign Ivuhu6 = (Dv9iu6 ? R4gpw6[5] : HWDATA[23]); +assign Bvuhu6 = (~(V8diu6 & C9diu6)); +assign C9diu6 = (~(Vbgpw6[22] & J9diu6)); +assign J9diu6 = (~(HWDATA[22] & O59iu6)); +assign V8diu6 = (~(V59iu6 & HWDATA[22])); +assign Uuuhu6 = (Q9diu6 & X9diu6); +assign X9diu6 = (Eadiu6 & Ladiu6); +assign Eadiu6 = (~(Xndpw6 & Sadiu6)); +assign Q9diu6 = (IRQ[22] & Zadiu6); +assign Zadiu6 = (~(Tk7iu6 & Gbdiu6)); +assign Gbdiu6 = (Qg6iu6 | Nbdiu6); +assign Nuuhu6 = (Dv9iu6 ? R4gpw6[4] : HWDATA[22]); +assign Guuhu6 = (~(Ubdiu6 & Bcdiu6)); +assign Bcdiu6 = (~(Vbgpw6[21] & Icdiu6)); +assign Icdiu6 = (~(HWDATA[21] & O59iu6)); +assign Ubdiu6 = (~(V59iu6 & HWDATA[21])); +assign Ztuhu6 = (Pcdiu6 & Wcdiu6); +assign Wcdiu6 = (Dddiu6 & Kddiu6); +assign Dddiu6 = (~(Rrdpw6 & Rddiu6)); +assign Pcdiu6 = (IRQ[21] & Yddiu6); +assign Yddiu6 = (~(Tk7iu6 & Fediu6)); +assign Fediu6 = (Mediu6 | Qg6iu6); +assign Stuhu6 = (~(Tediu6 & Afdiu6)); +assign Afdiu6 = (~(Vbgpw6[20] & Hfdiu6)); +assign Hfdiu6 = (~(HWDATA[20] & O59iu6)); +assign Tediu6 = (~(V59iu6 & HWDATA[20])); +assign Ltuhu6 = (Ofdiu6 & Vfdiu6); +assign Vfdiu6 = (Cgdiu6 & Jgdiu6); +assign Cgdiu6 = (~(Yrdpw6 & Qgdiu6)); +assign Ofdiu6 = (IRQ[20] & Xgdiu6); +assign Xgdiu6 = (~(Tk7iu6 & Ehdiu6)); +assign Ehdiu6 = (Qg6iu6 | Lhdiu6); +assign Etuhu6 = (~(Shdiu6 & Zhdiu6)); +assign Zhdiu6 = (~(Vbgpw6[19] & Gidiu6)); +assign Gidiu6 = (~(HWDATA[19] & O59iu6)); +assign Shdiu6 = (~(V59iu6 & HWDATA[19])); +assign Xsuhu6 = (Nidiu6 & Uidiu6); +assign Uidiu6 = (Bjdiu6 & Ijdiu6); +assign Bjdiu6 = (~(Msdpw6 & Pjdiu6)); +assign Nidiu6 = (IRQ[19] & Wjdiu6); +assign Wjdiu6 = (~(Tk7iu6 & Dkdiu6)); +assign Dkdiu6 = (Qg6iu6 | Kkdiu6); +assign Qsuhu6 = (~(Rkdiu6 & Ykdiu6)); +assign Ykdiu6 = (~(Vbgpw6[18] & Fldiu6)); +assign Fldiu6 = (~(HWDATA[18] & O59iu6)); +assign Rkdiu6 = (~(V59iu6 & HWDATA[18])); +assign Jsuhu6 = (Mldiu6 & Tldiu6); +assign Tldiu6 = (Amdiu6 & Hmdiu6); +assign Amdiu6 = (~(Tsdpw6 & Omdiu6)); +assign Mldiu6 = (IRQ[18] & Vmdiu6); +assign Vmdiu6 = (~(Tk7iu6 & Cndiu6)); +assign Cndiu6 = (Qg6iu6 | Jndiu6); +assign Csuhu6 = (~(Qndiu6 & Xndiu6)); +assign Xndiu6 = (~(Vbgpw6[17] & Eodiu6)); +assign Eodiu6 = (~(HWDATA[17] & O59iu6)); +assign Qndiu6 = (~(V59iu6 & HWDATA[17])); +assign Vruhu6 = (Lodiu6 & Sodiu6); +assign Sodiu6 = (Zodiu6 & Gpdiu6); +assign Zodiu6 = (~(Htdpw6 & Npdiu6)); +assign Lodiu6 = (IRQ[17] & Updiu6); +assign Updiu6 = (~(Tk7iu6 & Bqdiu6)); +assign Bqdiu6 = (Qg6iu6 | Iqdiu6); +assign Oruhu6 = (~(Pqdiu6 & Wqdiu6)); +assign Wqdiu6 = (~(Vbgpw6[16] & Drdiu6)); +assign Drdiu6 = (~(HWDATA[16] & O59iu6)); +assign Pqdiu6 = (~(V59iu6 & HWDATA[16])); +assign Hruhu6 = (~(Krdiu6 & Rrdiu6)); +assign Rrdiu6 = (~(Vbgpw6[15] & Yrdiu6)); +assign Yrdiu6 = (~(Fsdiu6 & O59iu6)); +assign Krdiu6 = (~(V59iu6 & Fsdiu6)); +assign Aruhu6 = (Dv9iu6 ? R4gpw6[3] : Fsdiu6); +assign Tquhu6 = (~(Msdiu6 & Tsdiu6)); +assign Tsdiu6 = (~(Vbgpw6[14] & Atdiu6)); +assign Atdiu6 = (~(HWDATA[14] & O59iu6)); +assign Msdiu6 = (~(V59iu6 & HWDATA[14])); +assign Mquhu6 = (Dv9iu6 ? R4gpw6[2] : HWDATA[14]); +assign Fquhu6 = (~(Htdiu6 & Otdiu6)); +assign Otdiu6 = (~(Vbgpw6[13] & Vtdiu6)); +assign Vtdiu6 = (~(HWDATA[13] & O59iu6)); +assign Htdiu6 = (~(V59iu6 & HWDATA[13])); +assign Ypuhu6 = (~(Cudiu6 & Judiu6)); +assign Judiu6 = (~(Vbgpw6[12] & Qudiu6)); +assign Qudiu6 = (~(HWDATA[12] & O59iu6)); +assign Cudiu6 = (~(V59iu6 & HWDATA[12])); +assign Rpuhu6 = (~(Xudiu6 & Evdiu6)); +assign Evdiu6 = (~(Vbgpw6[11] & Lvdiu6)); +assign Lvdiu6 = (~(HWDATA[11] & O59iu6)); +assign Xudiu6 = (~(V59iu6 & HWDATA[11])); +assign Kpuhu6 = (~(Svdiu6 & Zvdiu6)); +assign Zvdiu6 = (~(Vbgpw6[10] & Gwdiu6)); +assign Gwdiu6 = (~(HWDATA[10] & O59iu6)); +assign Svdiu6 = (~(V59iu6 & HWDATA[10])); +assign Dpuhu6 = (~(Nwdiu6 & Uwdiu6)); +assign Uwdiu6 = (~(Vbgpw6[9] & Bxdiu6)); +assign Bxdiu6 = (~(HWDATA[9] & O59iu6)); +assign Nwdiu6 = (~(V59iu6 & HWDATA[9])); +assign Wouhu6 = (~(Ixdiu6 & Pxdiu6)); +assign Pxdiu6 = (~(Vbgpw6[8] & Wxdiu6)); +assign Wxdiu6 = (~(HWDATA[8] & O59iu6)); +assign Ixdiu6 = (~(V59iu6 & HWDATA[8])); +assign Pouhu6 = (~(Dydiu6 & Kydiu6)); +assign Kydiu6 = (~(Vbgpw6[7] & Rydiu6)); +assign Rydiu6 = (~(HWDATA[7] & O59iu6)); +assign Dydiu6 = (~(V59iu6 & HWDATA[7])); +assign Iouhu6 = (Dv9iu6 ? R4gpw6[1] : HWDATA[7]); +assign Bouhu6 = (~(Yydiu6 & Fzdiu6)); +assign Fzdiu6 = (~(Vbgpw6[6] & Mzdiu6)); +assign Mzdiu6 = (~(HWDATA[6] & O59iu6)); +assign Yydiu6 = (~(V59iu6 & HWDATA[6])); +assign Unuhu6 = (Dv9iu6 ? R4gpw6[0] : HWDATA[6]); +assign Dv9iu6 = (~(Tzdiu6 & Npdhu6)); +assign Nnuhu6 = (~(A0eiu6 & H0eiu6)); +assign H0eiu6 = (~(Vbgpw6[5] & O0eiu6)); +assign O0eiu6 = (~(HWDATA[5] & O59iu6)); +assign A0eiu6 = (~(V59iu6 & HWDATA[5])); +assign Gnuhu6 = (~(V0eiu6 & C1eiu6)); +assign C1eiu6 = (~(Vbgpw6[4] & J1eiu6)); +assign J1eiu6 = (~(HWDATA[4] & O59iu6)); +assign V0eiu6 = (~(V59iu6 & HWDATA[4])); +assign Zmuhu6 = (~(Q1eiu6 & X1eiu6)); +assign X1eiu6 = (~(Vbgpw6[3] & E2eiu6)); +assign E2eiu6 = (~(HWDATA[3] & O59iu6)); +assign Q1eiu6 = (~(V59iu6 & HWDATA[3])); +assign Smuhu6 = (~(L2eiu6 & S2eiu6)); +assign S2eiu6 = (~(Vbgpw6[2] & Z2eiu6)); +assign Z2eiu6 = (~(G3eiu6 & O59iu6)); +assign L2eiu6 = (~(V59iu6 & G3eiu6)); +assign Lmuhu6 = (~(N3eiu6 & U3eiu6)); +assign U3eiu6 = (~(Vbgpw6[1] & B4eiu6)); +assign B4eiu6 = (~(I4eiu6 & O59iu6)); +assign O59iu6 = (V59iu6 | P4eiu6); +assign P4eiu6 = (W4eiu6 & D5eiu6); +assign W4eiu6 = (Npdhu6 & K5eiu6); +assign N3eiu6 = (~(V59iu6 & I4eiu6)); +assign V59iu6 = (Yzciu6 & K5eiu6); +assign Emuhu6 = (R5eiu6 ? Bxghu6 : HWDATA[0]); +assign Xluhu6 = (R5eiu6 ? Ftghu6 : G3eiu6); +assign Qluhu6 = (R5eiu6 ? Dvghu6 : I4eiu6); +assign R5eiu6 = (~(Y5eiu6 & Npdhu6)); +assign Jluhu6 = (F6eiu6 ? Bagpw6[0] : HWDATA[0]); +assign Cluhu6 = (F6eiu6 ? Bagpw6[23] : HWDATA[23]); +assign Vkuhu6 = (F6eiu6 ? Bagpw6[22] : HWDATA[22]); +assign Okuhu6 = (F6eiu6 ? Bagpw6[21] : HWDATA[21]); +assign Hkuhu6 = (F6eiu6 ? Bagpw6[20] : HWDATA[20]); +assign Akuhu6 = (F6eiu6 ? Bagpw6[19] : HWDATA[19]); +assign Tjuhu6 = (F6eiu6 ? Bagpw6[18] : HWDATA[18]); +assign Mjuhu6 = (F6eiu6 ? Bagpw6[17] : HWDATA[17]); +assign Fjuhu6 = (F6eiu6 ? Bagpw6[16] : HWDATA[16]); +assign Yiuhu6 = (F6eiu6 ? Bagpw6[15] : Fsdiu6); +assign Riuhu6 = (F6eiu6 ? Bagpw6[14] : HWDATA[14]); +assign Kiuhu6 = (F6eiu6 ? Bagpw6[13] : HWDATA[13]); +assign Diuhu6 = (F6eiu6 ? Bagpw6[12] : HWDATA[12]); +assign Whuhu6 = (F6eiu6 ? Bagpw6[11] : HWDATA[11]); +assign Phuhu6 = (F6eiu6 ? Bagpw6[10] : HWDATA[10]); +assign Ihuhu6 = (F6eiu6 ? Bagpw6[9] : HWDATA[9]); +assign Bhuhu6 = (F6eiu6 ? Bagpw6[8] : HWDATA[8]); +assign Uguhu6 = (F6eiu6 ? Bagpw6[7] : HWDATA[7]); +assign Nguhu6 = (F6eiu6 ? Bagpw6[6] : HWDATA[6]); +assign Gguhu6 = (F6eiu6 ? Bagpw6[5] : HWDATA[5]); +assign Zfuhu6 = (F6eiu6 ? Bagpw6[4] : HWDATA[4]); +assign Sfuhu6 = (F6eiu6 ? Bagpw6[3] : HWDATA[3]); +assign Lfuhu6 = (F6eiu6 ? Bagpw6[2] : G3eiu6); +assign Efuhu6 = (F6eiu6 ? Bagpw6[1] : I4eiu6); +assign F6eiu6 = (~(M6eiu6 & Npdhu6)); +assign Xeuhu6 = (~(T6eiu6 & A7eiu6)); +assign A7eiu6 = (H7eiu6 | O7eiu6); +assign T6eiu6 = (V7eiu6 & C8eiu6); +assign C8eiu6 = (~(L6gpw6[0] & J8eiu6)); +assign V7eiu6 = (~(Q8eiu6 & Bagpw6[0])); +assign Qeuhu6 = (~(X8eiu6 & E9eiu6)); +assign E9eiu6 = (~(L9eiu6 & Tzfpw6[1])); +assign X8eiu6 = (S9eiu6 & Z9eiu6); +assign Z9eiu6 = (~(L6gpw6[1] & J8eiu6)); +assign S9eiu6 = (~(Q8eiu6 & Bagpw6[1])); +assign Jeuhu6 = (~(Gaeiu6 & Naeiu6)); +assign Naeiu6 = (~(L9eiu6 & Tzfpw6[2])); +assign Gaeiu6 = (Uaeiu6 & Bbeiu6); +assign Bbeiu6 = (~(L6gpw6[2] & J8eiu6)); +assign Uaeiu6 = (~(Q8eiu6 & Bagpw6[2])); +assign Ceuhu6 = (~(Ibeiu6 & Pbeiu6)); +assign Pbeiu6 = (~(Tzfpw6[3] & L9eiu6)); +assign Ibeiu6 = (Wbeiu6 & Dceiu6); +assign Dceiu6 = (~(L6gpw6[3] & J8eiu6)); +assign Wbeiu6 = (~(Q8eiu6 & Bagpw6[3])); +assign Vduhu6 = (~(Kceiu6 & Rceiu6)); +assign Rceiu6 = (~(L9eiu6 & Tzfpw6[4])); +assign Kceiu6 = (Yceiu6 & Fdeiu6); +assign Fdeiu6 = (~(L6gpw6[4] & J8eiu6)); +assign Yceiu6 = (~(Q8eiu6 & Bagpw6[4])); +assign Oduhu6 = (~(Mdeiu6 & Tdeiu6)); +assign Tdeiu6 = (~(L9eiu6 & Tzfpw6[5])); +assign Mdeiu6 = (Aeeiu6 & Heeiu6); +assign Heeiu6 = (~(L6gpw6[5] & J8eiu6)); +assign Aeeiu6 = (~(Q8eiu6 & Bagpw6[5])); +assign Hduhu6 = (~(Oeeiu6 & Veeiu6)); +assign Veeiu6 = (~(L9eiu6 & Tzfpw6[6])); +assign Oeeiu6 = (Cfeiu6 & Jfeiu6); +assign Jfeiu6 = (~(L6gpw6[6] & J8eiu6)); +assign Cfeiu6 = (~(Q8eiu6 & Bagpw6[6])); +assign Aduhu6 = (~(Qfeiu6 & Xfeiu6)); +assign Xfeiu6 = (~(L9eiu6 & Tzfpw6[7])); +assign Qfeiu6 = (Egeiu6 & Lgeiu6); +assign Lgeiu6 = (~(L6gpw6[7] & J8eiu6)); +assign Egeiu6 = (~(Q8eiu6 & Bagpw6[7])); +assign Tcuhu6 = (~(Sgeiu6 & Zgeiu6)); +assign Zgeiu6 = (~(L9eiu6 & Tzfpw6[8])); +assign Sgeiu6 = (Gheiu6 & Nheiu6); +assign Nheiu6 = (~(L6gpw6[8] & J8eiu6)); +assign Gheiu6 = (~(Q8eiu6 & Bagpw6[8])); +assign Mcuhu6 = (~(Uheiu6 & Bieiu6)); +assign Bieiu6 = (~(L9eiu6 & Tzfpw6[9])); +assign Uheiu6 = (Iieiu6 & Pieiu6); +assign Pieiu6 = (~(L6gpw6[9] & J8eiu6)); +assign Iieiu6 = (~(Q8eiu6 & Bagpw6[9])); +assign Fcuhu6 = (~(Wieiu6 & Djeiu6)); +assign Djeiu6 = (~(L9eiu6 & Tzfpw6[10])); +assign Wieiu6 = (Kjeiu6 & Rjeiu6); +assign Rjeiu6 = (~(L6gpw6[10] & J8eiu6)); +assign Kjeiu6 = (~(Q8eiu6 & Bagpw6[10])); +assign Ybuhu6 = (~(Yjeiu6 & Fkeiu6)); +assign Fkeiu6 = (~(Tzfpw6[11] & L9eiu6)); +assign Yjeiu6 = (Mkeiu6 & Tkeiu6); +assign Tkeiu6 = (~(L6gpw6[11] & J8eiu6)); +assign Mkeiu6 = (~(Q8eiu6 & Bagpw6[11])); +assign Rbuhu6 = (~(Aleiu6 & Hleiu6)); +assign Hleiu6 = (~(L9eiu6 & Tzfpw6[12])); +assign Aleiu6 = (Oleiu6 & Vleiu6); +assign Vleiu6 = (~(L6gpw6[12] & J8eiu6)); +assign Oleiu6 = (~(Q8eiu6 & Bagpw6[12])); +assign Kbuhu6 = (~(Cmeiu6 & Jmeiu6)); +assign Jmeiu6 = (~(L9eiu6 & Tzfpw6[13])); +assign Cmeiu6 = (Qmeiu6 & Xmeiu6); +assign Xmeiu6 = (~(L6gpw6[13] & J8eiu6)); +assign Qmeiu6 = (~(Q8eiu6 & Bagpw6[13])); +assign Dbuhu6 = (~(Eneiu6 & Lneiu6)); +assign Lneiu6 = (~(L9eiu6 & Tzfpw6[14])); +assign Eneiu6 = (Sneiu6 & Zneiu6); +assign Zneiu6 = (~(L6gpw6[14] & J8eiu6)); +assign Sneiu6 = (~(Q8eiu6 & Bagpw6[14])); +assign Wauhu6 = (~(Goeiu6 & Noeiu6)); +assign Noeiu6 = (~(L9eiu6 & Tzfpw6[15])); +assign Goeiu6 = (Uoeiu6 & Bpeiu6); +assign Bpeiu6 = (~(L6gpw6[15] & J8eiu6)); +assign Uoeiu6 = (~(Q8eiu6 & Bagpw6[15])); +assign Pauhu6 = (~(Ipeiu6 & Ppeiu6)); +assign Ppeiu6 = (~(L9eiu6 & Tzfpw6[16])); +assign Ipeiu6 = (Wpeiu6 & Dqeiu6); +assign Dqeiu6 = (~(L6gpw6[16] & J8eiu6)); +assign Wpeiu6 = (~(Q8eiu6 & Bagpw6[16])); +assign Iauhu6 = (~(Kqeiu6 & Rqeiu6)); +assign Rqeiu6 = (~(L9eiu6 & Tzfpw6[17])); +assign Kqeiu6 = (Yqeiu6 & Freiu6); +assign Freiu6 = (~(L6gpw6[17] & J8eiu6)); +assign Yqeiu6 = (~(Q8eiu6 & Bagpw6[17])); +assign Bauhu6 = (~(Mreiu6 & Treiu6)); +assign Treiu6 = (~(L9eiu6 & Tzfpw6[18])); +assign Mreiu6 = (Aseiu6 & Hseiu6); +assign Hseiu6 = (~(L6gpw6[18] & J8eiu6)); +assign Aseiu6 = (~(Q8eiu6 & Bagpw6[18])); +assign U9uhu6 = (~(Oseiu6 & Vseiu6)); +assign Vseiu6 = (~(Tzfpw6[19] & L9eiu6)); +assign Oseiu6 = (Cteiu6 & Jteiu6); +assign Jteiu6 = (~(L6gpw6[19] & J8eiu6)); +assign Cteiu6 = (~(Q8eiu6 & Bagpw6[19])); +assign N9uhu6 = (~(Qteiu6 & Xteiu6)); +assign Xteiu6 = (~(L9eiu6 & Tzfpw6[20])); +assign Qteiu6 = (Eueiu6 & Lueiu6); +assign Lueiu6 = (~(L6gpw6[20] & J8eiu6)); +assign Eueiu6 = (~(Q8eiu6 & Bagpw6[20])); +assign G9uhu6 = (~(Sueiu6 & Zueiu6)); +assign Zueiu6 = (~(L9eiu6 & Tzfpw6[21])); +assign Sueiu6 = (Gveiu6 & Nveiu6); +assign Nveiu6 = (~(L6gpw6[21] & J8eiu6)); +assign Gveiu6 = (~(Q8eiu6 & Bagpw6[21])); +assign Z8uhu6 = (~(Uveiu6 & Bweiu6)); +assign Bweiu6 = (~(L9eiu6 & Tzfpw6[22])); +assign Uveiu6 = (Iweiu6 & Pweiu6); +assign Pweiu6 = (~(L6gpw6[22] & J8eiu6)); +assign Iweiu6 = (~(Q8eiu6 & Bagpw6[22])); +assign S8uhu6 = (~(Wweiu6 & Dxeiu6)); +assign Dxeiu6 = (~(L9eiu6 & Tzfpw6[23])); +assign Wweiu6 = (Kxeiu6 & Rxeiu6); +assign Rxeiu6 = (~(L6gpw6[23] & J8eiu6)); +assign J8eiu6 = (Yxeiu6 & Fyeiu6); +assign Yxeiu6 = (~(L9eiu6 | Myeiu6)); +assign Kxeiu6 = (~(Q8eiu6 & Bagpw6[23])); +assign Q8eiu6 = (~(Tyeiu6 | Fyeiu6)); +assign Fyeiu6 = (~(Azeiu6 & O7eiu6)); +assign O7eiu6 = (!Tzfpw6[0]); +assign Tyeiu6 = (~(H7eiu6 & Hzeiu6)); +assign H7eiu6 = (!L9eiu6); +assign L9eiu6 = (~(Ozeiu6 | Myeiu6)); +assign Myeiu6 = (!Hzeiu6); +assign L8uhu6 = (Vzeiu6 ? R4gpw6[56] : HWDATA[6]); +assign E8uhu6 = (Vzeiu6 ? R4gpw6[57] : HWDATA[7]); +assign X7uhu6 = (Vzeiu6 ? R4gpw6[58] : HWDATA[14]); +assign Q7uhu6 = (Vzeiu6 ? R4gpw6[59] : Fsdiu6); +assign J7uhu6 = (Vzeiu6 ? R4gpw6[60] : HWDATA[22]); +assign C7uhu6 = (Vzeiu6 ? R4gpw6[61] : HWDATA[23]); +assign V6uhu6 = (Vzeiu6 ? R4gpw6[62] : HWDATA[30]); +assign O6uhu6 = (Vzeiu6 ? R4gpw6[63] : HWDATA[31]); +assign Vzeiu6 = (~(C0fiu6 & Npdhu6)); +assign H6uhu6 = (J0fiu6 ? R4gpw6[48] : HWDATA[6]); +assign A6uhu6 = (J0fiu6 ? R4gpw6[49] : HWDATA[7]); +assign T5uhu6 = (J0fiu6 ? R4gpw6[50] : HWDATA[14]); +assign M5uhu6 = (J0fiu6 ? R4gpw6[51] : Fsdiu6); +assign F5uhu6 = (J0fiu6 ? R4gpw6[52] : HWDATA[22]); +assign Y4uhu6 = (J0fiu6 ? R4gpw6[53] : HWDATA[23]); +assign R4uhu6 = (J0fiu6 ? R4gpw6[54] : HWDATA[30]); +assign K4uhu6 = (J0fiu6 ? R4gpw6[55] : HWDATA[31]); +assign J0fiu6 = (~(Q0fiu6 & Npdhu6)); +assign D4uhu6 = (X0fiu6 ? R4gpw6[40] : HWDATA[6]); +assign W3uhu6 = (X0fiu6 ? R4gpw6[41] : HWDATA[7]); +assign P3uhu6 = (X0fiu6 ? R4gpw6[42] : HWDATA[14]); +assign I3uhu6 = (X0fiu6 ? R4gpw6[43] : Fsdiu6); +assign B3uhu6 = (X0fiu6 ? R4gpw6[44] : HWDATA[22]); +assign U2uhu6 = (X0fiu6 ? R4gpw6[45] : HWDATA[23]); +assign N2uhu6 = (X0fiu6 ? R4gpw6[46] : HWDATA[30]); +assign G2uhu6 = (X0fiu6 ? R4gpw6[47] : HWDATA[31]); +assign X0fiu6 = (~(E1fiu6 & Npdhu6)); +assign Z1uhu6 = (L1fiu6 ? R4gpw6[32] : HWDATA[6]); +assign S1uhu6 = (L1fiu6 ? R4gpw6[33] : HWDATA[7]); +assign L1uhu6 = (L1fiu6 ? R4gpw6[34] : HWDATA[14]); +assign E1uhu6 = (L1fiu6 ? R4gpw6[35] : Fsdiu6); +assign X0uhu6 = (L1fiu6 ? R4gpw6[36] : HWDATA[22]); +assign Q0uhu6 = (L1fiu6 ? R4gpw6[37] : HWDATA[23]); +assign J0uhu6 = (L1fiu6 ? R4gpw6[38] : HWDATA[30]); +assign C0uhu6 = (L1fiu6 ? R4gpw6[39] : HWDATA[31]); +assign L1fiu6 = (~(S1fiu6 & Npdhu6)); +assign Vzthu6 = (Z1fiu6 ? R4gpw6[24] : HWDATA[6]); +assign Ozthu6 = (Z1fiu6 ? R4gpw6[25] : HWDATA[7]); +assign Hzthu6 = (Z1fiu6 ? R4gpw6[26] : HWDATA[14]); +assign Azthu6 = (Z1fiu6 ? R4gpw6[27] : Fsdiu6); +assign Tythu6 = (Z1fiu6 ? R4gpw6[28] : HWDATA[22]); +assign Mythu6 = (Z1fiu6 ? R4gpw6[29] : HWDATA[23]); +assign Fythu6 = (Z1fiu6 ? R4gpw6[30] : HWDATA[30]); +assign Yxthu6 = (Z1fiu6 ? R4gpw6[31] : HWDATA[31]); +assign Z1fiu6 = (~(G2fiu6 & Npdhu6)); +assign Rxthu6 = (N2fiu6 ? R4gpw6[16] : HWDATA[6]); +assign Kxthu6 = (N2fiu6 ? R4gpw6[17] : HWDATA[7]); +assign Dxthu6 = (N2fiu6 ? R4gpw6[18] : HWDATA[14]); +assign Wwthu6 = (N2fiu6 ? R4gpw6[19] : Fsdiu6); +assign Pwthu6 = (N2fiu6 ? R4gpw6[20] : HWDATA[22]); +assign Iwthu6 = (N2fiu6 ? R4gpw6[21] : HWDATA[23]); +assign Bwthu6 = (N2fiu6 ? R4gpw6[22] : HWDATA[30]); +assign Uvthu6 = (N2fiu6 ? R4gpw6[23] : HWDATA[31]); +assign N2fiu6 = (~(U2fiu6 & Npdhu6)); +assign Nvthu6 = (B3fiu6 ? R4gpw6[8] : HWDATA[6]); +assign Gvthu6 = (B3fiu6 ? R4gpw6[9] : HWDATA[7]); +assign Zuthu6 = (B3fiu6 ? R4gpw6[10] : HWDATA[14]); +assign Suthu6 = (B3fiu6 ? R4gpw6[11] : Fsdiu6); +assign Luthu6 = (B3fiu6 ? R4gpw6[12] : HWDATA[22]); +assign Euthu6 = (B3fiu6 ? R4gpw6[13] : HWDATA[23]); +assign Xtthu6 = (B3fiu6 ? R4gpw6[14] : HWDATA[30]); +assign Qtthu6 = (B3fiu6 ? R4gpw6[15] : HWDATA[31]); +assign B3fiu6 = (~(I3fiu6 & Npdhu6)); +assign Jtthu6 = (P3fiu6 ? Gfghu6 : HWDATA[4]); +assign Ctthu6 = (~(W3fiu6 & D4fiu6)); +assign D4fiu6 = (~(vis_ipsr_o[4] & F8ciu6)); +assign W3fiu6 = (K4fiu6 & R4fiu6); +assign R4fiu6 = (~(Xibiu6 & Ppfpw6[4])); +assign K4fiu6 = (Ejbiu6 | Y4fiu6); +assign Vsthu6 = (F5fiu6 & M5fiu6); +assign M5fiu6 = (T5fiu6 & A6fiu6); +assign T5fiu6 = (~(Zodpw6 & H6fiu6)); +assign F5fiu6 = (IRQ[7] & O6fiu6); +assign O6fiu6 = (~(Tk7iu6 & V6fiu6)); +assign V6fiu6 = (Qg6iu6 | C7fiu6); +assign Osthu6 = (J7fiu6 & Q7fiu6); +assign Q7fiu6 = (X7fiu6 & E8fiu6); +assign X7fiu6 = (~(Lodpw6 & L8fiu6)); +assign J7fiu6 = (IRQ[6] & S8fiu6); +assign S8fiu6 = (~(Tk7iu6 & Z8fiu6)); +assign Z8fiu6 = (G9fiu6 | Qg6iu6); +assign Hsthu6 = (N9fiu6 & U9fiu6); +assign U9fiu6 = (Bafiu6 & Iafiu6); +assign Bafiu6 = (~(Gpdpw6 & Pafiu6)); +assign N9fiu6 = (IRQ[5] & Wafiu6); +assign Wafiu6 = (~(Tk7iu6 & Dbfiu6)); +assign Dbfiu6 = (Kbfiu6 | Qg6iu6); +assign Asthu6 = (Rbfiu6 & Ybfiu6); +assign Ybfiu6 = (Fcfiu6 & Mcfiu6); +assign Fcfiu6 = (~(Qndpw6 & Tcfiu6)); +assign Rbfiu6 = (IRQ[4] & Adfiu6); +assign Adfiu6 = (~(Tk7iu6 & Hdfiu6)); +assign Hdfiu6 = (Qg6iu6 | Odfiu6); +assign Trthu6 = (Vdfiu6 & Cefiu6); +assign Cefiu6 = (Jefiu6 & Qefiu6); +assign Jefiu6 = (~(Jndpw6 & Xefiu6)); +assign Vdfiu6 = (IRQ[3] & Effiu6); +assign Effiu6 = (~(Tk7iu6 & Lffiu6)); +assign Lffiu6 = (Sffiu6 | Qg6iu6); +assign Mrthu6 = (~(Zffiu6 & Ggfiu6)); +assign Ggfiu6 = (Ngfiu6 | Cibiu6); +assign Zffiu6 = (Ugfiu6 & Bhfiu6); +assign Bhfiu6 = (~(Xibiu6 & Ppfpw6[3])); +assign Xibiu6 = (Ihfiu6 & Phfiu6); +assign Phfiu6 = (~(Qaciu6 | Qg6iu6)); +assign Qaciu6 = (~(Whfiu6 | Difiu6)); +assign Ihfiu6 = (Cibiu6 & Ivfhu6); +assign Ugfiu6 = (Ejbiu6 | Kifiu6); +assign Ejbiu6 = (~(Rifiu6 & Cibiu6)); +assign Cibiu6 = (!F8ciu6); +assign F8ciu6 = (~(HREADY & Yifiu6)); +assign Yifiu6 = (~(Uzaiu6 & Fjfiu6)); +assign Rifiu6 = (~(Mjfiu6 | Qg6iu6)); +assign Frthu6 = (~(Xw4iu6 & Tjfiu6)); +assign Tjfiu6 = (~(Dhgpw6[3] & Akfiu6)); +assign Akfiu6 = (~(Scbiu6 & Df4iu6)); +assign Xw4iu6 = (~(Jehhu6 & Hkfiu6)); +assign Hkfiu6 = (~(Okfiu6 & Vkfiu6)); +assign Vkfiu6 = (~(S3hhu6 & Ptaiu6)); +assign Ptaiu6 = (M2biu6 & Clfiu6); +assign Okfiu6 = (~(H2hhu6 & Mu4iu6)); +assign Yqthu6 = (Jlfiu6 & Qlfiu6); +assign Qlfiu6 = (Xlfiu6 & Jg6iu6); +assign Jg6iu6 = (~(Ch5iu6 & HWDATA[31])); +assign Xlfiu6 = (~(Evdpw6 & Af6iu6)); +assign Af6iu6 = (Emfiu6 | Sb5iu6); +assign Jlfiu6 = (NMI & Lmfiu6); +assign Lmfiu6 = (~(Tk7iu6 & Smfiu6)); +assign Smfiu6 = (Qg6iu6 | Zmfiu6); +assign Rqthu6 = (~(Gnfiu6 & Nnfiu6)); +assign Nnfiu6 = (Unfiu6 | Bofiu6); +assign Bofiu6 = (L3ehu6 ? Ruaiu6 : Iofiu6); +assign Iofiu6 = (~(Uzaiu6 & Zmfiu6)); +assign Unfiu6 = (~(F2biu6 & Sbghu6)); +assign Gnfiu6 = (~(Jydhu6 & T2biu6)); +assign T2biu6 = (~(HREADY & Pofiu6)); +assign Pofiu6 = (Wofiu6 | C0ehu6); +assign Kqthu6 = (Dpfiu6 & Kpfiu6); +assign Kpfiu6 = (Rpfiu6 & Ypfiu6); +assign Rpfiu6 = (~(Bqdpw6 & Fqfiu6)); +assign Dpfiu6 = (IRQ[28] & Mqfiu6); +assign Mqfiu6 = (~(Tk7iu6 & Tqfiu6)); +assign Tqfiu6 = (Qg6iu6 | Arfiu6); +assign Dqthu6 = (Hrfiu6 & Orfiu6); +assign Orfiu6 = (Vrfiu6 & Csfiu6); +assign Vrfiu6 = (~(Iqdpw6 & Jsfiu6)); +assign Hrfiu6 = (IRQ[27] & Qsfiu6); +assign Qsfiu6 = (~(Tk7iu6 & Xsfiu6)); +assign Xsfiu6 = (Etfiu6 | Qg6iu6); +assign Wpthu6 = (Ltfiu6 & Stfiu6); +assign Stfiu6 = (Ztfiu6 & Gufiu6); +assign Ztfiu6 = (~(Pqdpw6 & Nufiu6)); +assign Ltfiu6 = (IRQ[26] & Uufiu6); +assign Uufiu6 = (~(Tk7iu6 & Bvfiu6)); +assign Bvfiu6 = (Ivfiu6 | Qg6iu6); +assign Ppthu6 = (Pvfiu6 & Wvfiu6); +assign Wvfiu6 = (Dwfiu6 & Fe6iu6); +assign Fe6iu6 = (~(Kwfiu6 & HWDATA[25])); +assign Dwfiu6 = (~(Krdpw6 & Wc6iu6)); +assign Wc6iu6 = (Sb5iu6 | Rwfiu6); +assign Pvfiu6 = (IRQ[25] & Ywfiu6); +assign Ywfiu6 = (~(Tk7iu6 & Fxfiu6)); +assign Fxfiu6 = (Mxfiu6 | Qg6iu6); +assign Ipthu6 = (Txfiu6 & Ayfiu6); +assign Ayfiu6 = (Hyfiu6 & Nb6iu6); +assign Nb6iu6 = (~(Kwfiu6 & HWDATA[24])); +assign Hyfiu6 = (~(Wqdpw6 & Ea6iu6)); +assign Ea6iu6 = (Sb5iu6 | Oyfiu6); +assign Txfiu6 = (IRQ[24] & Vyfiu6); +assign Vyfiu6 = (~(Tk7iu6 & Czfiu6)); +assign Czfiu6 = (Qg6iu6 | Jzfiu6); +assign Bpthu6 = (Qzfiu6 & Xzfiu6); +assign Xzfiu6 = (E0giu6 & L0giu6); +assign E0giu6 = (~(Lvdpw6 & S0giu6)); +assign Qzfiu6 = (IRQ[15] & Z0giu6); +assign Z0giu6 = (~(Tk7iu6 & G1giu6)); +assign G1giu6 = (N1giu6 | Qg6iu6); +assign Uothu6 = (U1giu6 & B2giu6); +assign B2giu6 = (I2giu6 & P2giu6); +assign I2giu6 = (~(Otdpw6 & W2giu6)); +assign U1giu6 = (IRQ[14] & D3giu6); +assign D3giu6 = (~(Tk7iu6 & K3giu6)); +assign K3giu6 = (R3giu6 | Qg6iu6); +assign Nothu6 = (Y3giu6 & F4giu6); +assign F4giu6 = (M4giu6 & T4giu6); +assign M4giu6 = (~(Vtdpw6 & A5giu6)); +assign Y3giu6 = (IRQ[13] & H5giu6); +assign H5giu6 = (~(Tk7iu6 & O5giu6)); +assign O5giu6 = (Qg6iu6 | V5giu6); +assign Gothu6 = (C6giu6 & J6giu6); +assign J6giu6 = (Q6giu6 & X6giu6); +assign Q6giu6 = (~(Qudpw6 & E7giu6)); +assign C6giu6 = (IRQ[12] & L7giu6); +assign L7giu6 = (~(Tk7iu6 & S7giu6)); +assign S7giu6 = (Qg6iu6 | Z7giu6); +assign Znthu6 = (G8giu6 & N8giu6); +assign N8giu6 = (U8giu6 & B9giu6); +assign U8giu6 = (~(Cudpw6 & I9giu6)); +assign G8giu6 = (IRQ[11] & P9giu6); +assign P9giu6 = (~(Tk7iu6 & W9giu6)); +assign W9giu6 = (Dagiu6 | Qg6iu6); +assign Snthu6 = (Kagiu6 & Ragiu6); +assign Ragiu6 = (Yagiu6 & Fbgiu6); +assign Yagiu6 = (~(Judpw6 & Mbgiu6)); +assign Kagiu6 = (IRQ[10] & Tbgiu6); +assign Tbgiu6 = (~(Tk7iu6 & Acgiu6)); +assign Acgiu6 = (Hcgiu6 | Qg6iu6); +assign Lnthu6 = (Ocgiu6 & Vcgiu6); +assign Vcgiu6 = (Cdgiu6 & J96iu6); +assign J96iu6 = (~(Kwfiu6 & HWDATA[9])); +assign Cdgiu6 = (~(Cndpw6 & A86iu6)); +assign A86iu6 = (Sb5iu6 | Jdgiu6); +assign Ocgiu6 = (IRQ[9] & Qdgiu6); +assign Qdgiu6 = (~(Tk7iu6 & Xdgiu6)); +assign Xdgiu6 = (Eegiu6 | Qg6iu6); +assign Enthu6 = (Legiu6 & Segiu6); +assign Segiu6 = (Zegiu6 & W56iu6); +assign W56iu6 = (~(Kwfiu6 & HWDATA[8])); +assign Zegiu6 = (~(Sodpw6 & N46iu6)); +assign N46iu6 = (Sb5iu6 | Gfgiu6); +assign Legiu6 = (IRQ[8] & Nfgiu6); +assign Nfgiu6 = (~(Tk7iu6 & Ufgiu6)); +assign Ufgiu6 = (Qg6iu6 | Bggiu6); +assign Xmthu6 = (~(Iggiu6 & Pggiu6)); +assign Pggiu6 = (~(Ch5iu6 & HWDATA[28])); +assign Iggiu6 = (~(Wggiu6 & Ikghu6)); +assign Wggiu6 = (Dhgiu6 & Khgiu6); +assign Khgiu6 = (~(Ch5iu6 & HWDATA[27])); +assign Dhgiu6 = (~(Clfiu6 & Rhgiu6)); +assign Qmthu6 = (~(Ag5iu6 & Yhgiu6)); +assign Yhgiu6 = (~(Figiu6 & Yyghu6)); +assign Figiu6 = (Migiu6 & Tigiu6); +assign Tigiu6 = (~(Ch5iu6 & HWDATA[25])); +assign Migiu6 = (~(Clfiu6 & Ajgiu6)); +assign Ag5iu6 = (Hjgiu6 & Ojgiu6); +assign Ojgiu6 = (~(Vjgiu6 & Ckgiu6)); +assign Vjgiu6 = (Dvghu6 & Tzfpw6[0]); +assign Hjgiu6 = (~(Ch5iu6 & HWDATA[26])); +assign Ch5iu6 = (~(Jkgiu6 | Qkgiu6)); +assign Jmthu6 = (Xkgiu6 & Elgiu6); +assign Elgiu6 = (Llgiu6 & Slgiu6); +assign Llgiu6 = (~(Eodpw6 & Zlgiu6)); +assign Xkgiu6 = (IRQ[2] & Gmgiu6); +assign Gmgiu6 = (~(Tk7iu6 & Nmgiu6)); +assign Nmgiu6 = (Qg6iu6 | Umgiu6); +assign Cmthu6 = (Bngiu6 & Ingiu6); +assign Ingiu6 = (Pngiu6 & Wngiu6); +assign Pngiu6 = (~(Fsdpw6 & Dogiu6)); +assign Bngiu6 = (IRQ[1] & Kogiu6); +assign Kogiu6 = (~(Tk7iu6 & Rogiu6)); +assign Rogiu6 = (Qg6iu6 | Yogiu6); +assign Vlthu6 = (P3fiu6 ? Qqdhu6 : I4eiu6); +assign Olthu6 = (P3fiu6 ? Ndghu6 : G3eiu6); +assign P3fiu6 = (~(Fpgiu6 & Npdhu6)); +assign Hlthu6 = (Mpgiu6 ? B3gpw6[0] : HWDATA[30]); +assign Althu6 = (Mpgiu6 ? B3gpw6[1] : HWDATA[31]); +assign Mpgiu6 = (Tpgiu6 | Jkgiu6); +assign Tkthu6 = (Aqgiu6 ? L1gpw6[0] : HWDATA[22]); +assign Mkthu6 = (Aqgiu6 ? L1gpw6[1] : HWDATA[23]); +assign Fkthu6 = (Aqgiu6 ? H8gpw6[0] : HWDATA[30]); +assign Yjthu6 = (Aqgiu6 ? H8gpw6[1] : HWDATA[31]); +assign Aqgiu6 = (~(Hqgiu6 & Npdhu6)); +assign Rjthu6 = (~(Qh5iu6 & Oqgiu6)); +assign Oqgiu6 = (~(Vqgiu6 & Zlghu6)); +assign Vqgiu6 = (Crgiu6 & Jrgiu6); +assign Jrgiu6 = (~(Clfiu6 & Qrgiu6)); +assign Crgiu6 = (~(Xrgiu6 & Npdhu6)); +assign Qh5iu6 = (Esgiu6 & Lsgiu6); +assign Lsgiu6 = (~(P0biu6 & Ssgiu6)); +assign Ssgiu6 = (~(I0biu6 & Zsgiu6)); +assign Zsgiu6 = (Gtgiu6 | Ntgiu6); +assign I0biu6 = (~(Utgiu6 & Bugiu6)); +assign Bugiu6 = (~(Ae0iu6 | Cyfpw6[4])); +assign Utgiu6 = (Iugiu6 & Pugiu6); +assign Esgiu6 = (~(Xrgiu6 & Fsdiu6)); +assign Kjthu6 = (~(Wugiu6 & Dvgiu6)); +assign Dvgiu6 = (~(Kvgiu6 & Krghu6)); +assign Kvgiu6 = (Rvgiu6 & Hzeiu6); +assign Hzeiu6 = (~(Yvgiu6 & Npdhu6)); +assign Rvgiu6 = (~(Fwgiu6 & Y5eiu6)); +assign Fwgiu6 = (Ur4iu6 & Jkgiu6); +assign Wugiu6 = (~(Ckgiu6 & Tzfpw6[0])); +assign Ckgiu6 = (Ozeiu6 & Azeiu6); +assign Azeiu6 = (Mwgiu6 & Twgiu6); +assign Twgiu6 = (Axgiu6 & Hxgiu6); +assign Hxgiu6 = (Oxgiu6 & Vxgiu6); +assign Vxgiu6 = (~(Cygiu6 | Tzfpw6[7])); +assign Cygiu6 = (Tzfpw6[8] | Tzfpw6[9]); +assign Oxgiu6 = (~(Jygiu6 | Tzfpw6[4])); +assign Jygiu6 = (Tzfpw6[5] | Tzfpw6[6]); +assign Axgiu6 = (Qygiu6 & Xygiu6); +assign Xygiu6 = (~(Ezgiu6 | Tzfpw6[23])); +assign Ezgiu6 = (Tzfpw6[2] | Tzfpw6[3]); +assign Qygiu6 = (~(Lzgiu6 | Tzfpw6[20])); +assign Lzgiu6 = (Tzfpw6[21] | Tzfpw6[22]); +assign Mwgiu6 = (Szgiu6 & Zzgiu6); +assign Zzgiu6 = (G0hiu6 & N0hiu6); +assign N0hiu6 = (~(U0hiu6 | Tzfpw6[18])); +assign U0hiu6 = (Tzfpw6[19] | Tzfpw6[1]); +assign G0hiu6 = (~(B1hiu6 | Tzfpw6[15])); +assign B1hiu6 = (Tzfpw6[16] | Tzfpw6[17]); +assign Szgiu6 = (I1hiu6 & P1hiu6); +assign P1hiu6 = (~(W1hiu6 | Tzfpw6[12])); +assign W1hiu6 = (Tzfpw6[13] | Tzfpw6[14]); +assign I1hiu6 = (~(Tzfpw6[10] | Tzfpw6[11])); +assign Ozeiu6 = (D2hiu6 & Bxghu6); +assign D2hiu6 = (Gc5iu6 & K2hiu6); +assign K2hiu6 = (R2hiu6 | STCALIB[25]); +assign R2hiu6 = (Ftghu6 | STCLKEN); +assign Djthu6 = (~(Y2hiu6 & F3hiu6)); +assign F3hiu6 = (M3hiu6 & T3hiu6); +assign T3hiu6 = (~(HRDATA[7] & Pp7iu6)); +assign M3hiu6 = (A4hiu6 & H4hiu6); +assign H4hiu6 = (~(Hrfpw6[7] & Uy4iu6)); +assign A4hiu6 = (~(HRDATA[23] & Kq7iu6)); +assign Y2hiu6 = (O4hiu6 & V4hiu6); +assign V4hiu6 = (~(Fr7iu6 & Df4iu6)); +assign O4hiu6 = (C5hiu6 & J5hiu6); +assign J5hiu6 = (~(A25iu6 & Ppfpw6[7])); +assign C5hiu6 = (~(R05iu6 & D7fpw6[7])); +assign Withu6 = (~(Q5hiu6 & X5hiu6)); +assign X5hiu6 = (E6hiu6 & L6hiu6); +assign L6hiu6 = (~(HRDATA[6] & Pp7iu6)); +assign E6hiu6 = (S6hiu6 & Z6hiu6); +assign Z6hiu6 = (~(Hrfpw6[6] & Uy4iu6)); +assign S6hiu6 = (~(HRDATA[22] & Kq7iu6)); +assign Q5hiu6 = (G7hiu6 & N7hiu6); +assign N7hiu6 = (~(A25iu6 & Ppfpw6[6])); +assign G7hiu6 = (~(R05iu6 & D7fpw6[6])); +assign Pithu6 = (~(U7hiu6 & B8hiu6)); +assign B8hiu6 = (I8hiu6 & P8hiu6); +assign P8hiu6 = (~(HRDATA[5] & Pp7iu6)); +assign I8hiu6 = (W8hiu6 & D9hiu6); +assign D9hiu6 = (~(Hrfpw6[5] & Uy4iu6)); +assign W8hiu6 = (~(HRDATA[21] & Kq7iu6)); +assign U7hiu6 = (K9hiu6 & R9hiu6); +assign R9hiu6 = (~(Ppfpw6[5] & A25iu6)); +assign K9hiu6 = (~(R05iu6 & D7fpw6[5])); +assign Iithu6 = (~(Y9hiu6 & Fahiu6)); +assign Fahiu6 = (Mahiu6 & Tahiu6); +assign Tahiu6 = (~(HRDATA[4] & Pp7iu6)); +assign Mahiu6 = (Abhiu6 & Hbhiu6); +assign Hbhiu6 = (~(Hrfpw6[4] & Uy4iu6)); +assign Abhiu6 = (~(HRDATA[20] & Kq7iu6)); +assign Y9hiu6 = (Obhiu6 & Vbhiu6); +assign Vbhiu6 = (~(Ppfpw6[4] & A25iu6)); +assign Obhiu6 = (~(R05iu6 & D7fpw6[4])); +assign Bithu6 = (~(Cchiu6 & Jchiu6)); +assign Jchiu6 = (Qchiu6 & Xchiu6); +assign Xchiu6 = (~(HRDATA[3] & Pp7iu6)); +assign Qchiu6 = (Edhiu6 & Ldhiu6); +assign Ldhiu6 = (~(Hrfpw6[3] & Uy4iu6)); +assign Edhiu6 = (~(HRDATA[19] & Kq7iu6)); +assign Cchiu6 = (Sdhiu6 & Zdhiu6); +assign Zdhiu6 = (~(Fr7iu6 & H34iu6)); +assign Sdhiu6 = (Gehiu6 & Nehiu6); +assign Nehiu6 = (~(Ppfpw6[3] & A25iu6)); +assign Gehiu6 = (~(R05iu6 & D7fpw6[3])); +assign Uhthu6 = (~(Uehiu6 & Bfhiu6)); +assign Bfhiu6 = (Ifhiu6 & Pfhiu6); +assign Pfhiu6 = (~(HRDATA[2] & Pp7iu6)); +assign Ifhiu6 = (Wfhiu6 & Dghiu6); +assign Dghiu6 = (~(Hrfpw6[2] & Uy4iu6)); +assign Wfhiu6 = (~(HRDATA[18] & Kq7iu6)); +assign Uehiu6 = (Kghiu6 & Rghiu6); +assign Rghiu6 = (~(Fr7iu6 & Ud4iu6)); +assign Kghiu6 = (Yghiu6 & Fhhiu6); +assign Fhhiu6 = (~(Ppfpw6[2] & A25iu6)); +assign Yghiu6 = (~(R05iu6 & D7fpw6[2])); +assign Nhthu6 = (~(Mhhiu6 & Thhiu6)); +assign Thhiu6 = (Aihiu6 & Hihiu6); +assign Hihiu6 = (~(HRDATA[1] & Pp7iu6)); +assign Pp7iu6 = (Go7iu6 & M15iu6); +assign M15iu6 = (Oihiu6 & Vihiu6); +assign Oihiu6 = (Dxfhu6 & Cjhiu6); +assign Cjhiu6 = (~(vis_pc_o[0] & Jjhiu6)); +assign Go7iu6 = (!T15iu6); +assign Aihiu6 = (Qjhiu6 & Xjhiu6); +assign Xjhiu6 = (~(Hrfpw6[1] & Uy4iu6)); +assign Uy4iu6 = (Ekhiu6 & Vihiu6); +assign Ekhiu6 = (~(Lkhiu6 | Dxfhu6)); +assign Lkhiu6 = (Pkciu6 & Skhiu6); +assign Skhiu6 = (Zkhiu6 | Ntfhu6); +assign Qjhiu6 = (~(HRDATA[17] & Kq7iu6)); +assign Kq7iu6 = (Glhiu6 & Pz4iu6); +assign Pz4iu6 = (Nlhiu6 & Vihiu6); +assign Nlhiu6 = (vis_pc_o[0] & Jjhiu6); +assign Mhhiu6 = (Ulhiu6 & Bmhiu6); +assign Bmhiu6 = (Iz4iu6 | A34iu6); +assign Ulhiu6 = (Imhiu6 & Pmhiu6); +assign Pmhiu6 = (~(Ppfpw6[1] & A25iu6)); +assign A25iu6 = (Ntfhu6 & Vihiu6); +assign Vihiu6 = (~(Wofiu6 | R05iu6)); +assign Imhiu6 = (~(R05iu6 & D7fpw6[1])); +assign R05iu6 = (Wmhiu6 & Iz4iu6); +assign Iz4iu6 = (!Fr7iu6); +assign Fr7iu6 = (Dnhiu6 & Knhiu6); +assign Knhiu6 = (Rnhiu6 & Ynhiu6); +assign Rnhiu6 = (~(Jkgiu6 | Jfgpw6[4])); +assign Jkgiu6 = (!Npdhu6); +assign Dnhiu6 = (HALTED & Rzciu6); +assign Wmhiu6 = (~(Fohiu6 & Mohiu6)); +assign Mohiu6 = (Tohiu6 & Aphiu6); +assign Tohiu6 = (Hphiu6 & Ophiu6); +assign Hphiu6 = (~(Vphiu6 & Cqhiu6)); +assign Cqhiu6 = (Jqhiu6 | Qqhiu6); +assign Jqhiu6 = (~(Pkciu6 & Juzhu6)); +assign Vphiu6 = (Eh6iu6 | Jjhiu6); +assign Fohiu6 = (Xqhiu6 & Erhiu6); +assign Xqhiu6 = (Lrhiu6 & Srhiu6); +assign Ghthu6 = (~(Zrhiu6 & Gshiu6)); +assign Gshiu6 = (~(Nshiu6 & R6hhu6)); +assign Nshiu6 = (Xbbiu6 & Jbbiu6); +assign Jbbiu6 = (!Mu4iu6); +assign Mu4iu6 = (Ushiu6 & Bthiu6); +assign Bthiu6 = (Ithiu6 & Pthiu6); +assign Ithiu6 = (~(Cyfpw6[7] | H4ghu6)); +assign Ushiu6 = (~(Wthiu6 | Qjaiu6)); +assign Xbbiu6 = (Duhiu6 | A2nhu6); +assign Zgthu6 = (Kuhiu6 & Ruhiu6); +assign Ruhiu6 = (Yuhiu6 & Fvhiu6); +assign Yuhiu6 = (~(Atdpw6 & Mvhiu6)); +assign Kuhiu6 = (IRQ[16] & Tvhiu6); +assign Tvhiu6 = (~(Tk7iu6 & Awhiu6)); +assign Awhiu6 = (Hwhiu6 | Qg6iu6); +assign Sgthu6 = (Owhiu6 & Vwhiu6); +assign Vwhiu6 = (Cxhiu6 & Jxhiu6); +assign Cxhiu6 = (~(Zvdpw6 & Qxhiu6)); +assign Owhiu6 = (IRQ[30] & Xxhiu6); +assign Xxhiu6 = (~(Tk7iu6 & Eyhiu6)); +assign Eyhiu6 = (Lyhiu6 | Qg6iu6); +assign Qg6iu6 = (!Fjfiu6); +assign Tk7iu6 = (~(Uc5iu6 & Fjfiu6)); +assign Fjfiu6 = (~(Syhiu6 & Zyhiu6)); +assign Zyhiu6 = (Gzhiu6 & Nzhiu6); +assign Gzhiu6 = (~(Ur4iu6 | Gc5iu6)); +assign Syhiu6 = (I4eiu6 & Uzhiu6); +assign Lgthu6 = (~(B0iiu6 & I0iiu6)); +assign I0iiu6 = (P0iiu6 & W0iiu6); +assign W0iiu6 = (~(vis_pc_o[3] & Ok8iu6)); +assign P0iiu6 = (D1iiu6 & K1iiu6); +assign K1iiu6 = (~(Jl8iu6 & Tugpw6[2])); +assign Tugpw6[2] = (~(R1iiu6 & Y1iiu6)); +assign Y1iiu6 = (~(N5fpw6[3] & Sdaiu6)); +assign R1iiu6 = (F2iiu6 & M2iiu6); +assign M2iiu6 = (T2iiu6 | Eg0iu6); +assign F2iiu6 = (~(Eafpw6[4] & A3iiu6)); +assign D1iiu6 = (~(Ql8iu6 & vis_ipsr_o[4])); +assign B0iiu6 = (H3iiu6 & O3iiu6); +assign O3iiu6 = (Lm8iu6 | V3iiu6); +assign H3iiu6 = (~(Zm8iu6 & H34iu6)); +assign Egthu6 = (~(C4iiu6 & J4iiu6)); +assign J4iiu6 = (Q4iiu6 & X4iiu6); +assign X4iiu6 = (~(Ok8iu6 & vis_pc_o[1])); +assign Q4iiu6 = (E5iiu6 & L5iiu6); +assign L5iiu6 = (~(Jl8iu6 & Tugpw6[0])); +assign Tugpw6[0] = (~(S5iiu6 & Z5iiu6)); +assign Z5iiu6 = (~(Eafpw6[2] & A3iiu6)); +assign S5iiu6 = (G6iiu6 & N6iiu6); +assign N6iiu6 = (~(Sdaiu6 & U6iiu6)); +assign U6iiu6 = (Vtzhu6 ^ Cuzhu6); +assign Cuzhu6 = (Juzhu6 ^ Quzhu6); +assign G6iiu6 = (~(B7iiu6 & Gh0iu6)); +assign E5iiu6 = (~(Ql8iu6 & vis_ipsr_o[2])); +assign C4iiu6 = (I7iiu6 & P7iiu6); +assign P7iiu6 = (~(W29iu6 & Fkfpw6[2])); +assign I7iiu6 = (~(Zm8iu6 & Ud4iu6)); +assign Xfthu6 = (D8iiu6 ? W7iiu6 : S8fpw6[8]); +assign W7iiu6 = (~(K8iiu6 & R8iiu6)); +assign R8iiu6 = (Y8iiu6 & F9iiu6); +assign F9iiu6 = (~(D7fpw6[0] & M9iiu6)); +assign Y8iiu6 = (~(D7fpw6[8] & T9iiu6)); +assign K8iiu6 = (Aaiiu6 & Haiiu6); +assign Haiiu6 = (Oaiiu6 | O95iu6); +assign Qfthu6 = (~(Vaiiu6 & Cbiiu6)); +assign Cbiiu6 = (~(Jbiiu6 & Qbiiu6)); +assign Vaiiu6 = (D8iiu6 ? Xbiiu6 : P65iu6); +assign Xbiiu6 = (Eciiu6 & Lciiu6); +assign Lciiu6 = (Sciiu6 & Zciiu6); +assign Zciiu6 = (~(D7fpw6[1] & M9iiu6)); +assign Sciiu6 = (~(D7fpw6[9] & T9iiu6)); +assign Eciiu6 = (Aaiiu6 & Gdiiu6); +assign Gdiiu6 = (Oaiiu6 | Ndiiu6); +assign Jfthu6 = (~(Udiiu6 & Beiiu6)); +assign Beiiu6 = (~(S8fpw6[10] & Ieiiu6)); +assign Ieiiu6 = (~(D8iiu6 & Peiiu6)); +assign Peiiu6 = (~(Jbiiu6 & Weiiu6)); +assign Jbiiu6 = (~(Dfiiu6 | Kfiiu6)); +assign Udiiu6 = (~(D8iiu6 & Rfiiu6)); +assign Rfiiu6 = (~(Yfiiu6 & Fgiiu6)); +assign Fgiiu6 = (Mgiiu6 & Tgiiu6); +assign Tgiiu6 = (~(D7fpw6[2] & M9iiu6)); +assign M9iiu6 = (~(Ahiiu6 & Hhiiu6)); +assign Hhiiu6 = (Ohiiu6 & Vhiiu6); +assign Ohiiu6 = (~(Ciiiu6 & Jiiiu6)); +assign Ciiiu6 = (Qiiiu6 & Zraiu6); +assign Qiiiu6 = (Xiiiu6 | Ejiiu6); +assign Ahiiu6 = (Ljiiu6 & Sjiiu6); +assign Sjiiu6 = (Zjiiu6 | Gkiiu6); +assign Mgiiu6 = (~(D7fpw6[10] & T9iiu6)); +assign T9iiu6 = (~(Nkiiu6 & Ukiiu6)); +assign Ukiiu6 = (Bliiu6 & Iliiu6); +assign Iliiu6 = (~(Pliiu6 & Wliiu6)); +assign Pliiu6 = (Dmiiu6 & Zraiu6); +assign Bliiu6 = (~(Kmiiu6 | Rmiiu6)); +assign Nkiiu6 = (Ymiiu6 & Fniiu6); +assign Yfiiu6 = (Aaiiu6 & Mniiu6); +assign Mniiu6 = (Oaiiu6 | Tniiu6); +assign Cfthu6 = (Aoiiu6 | Hoiiu6); +assign Hoiiu6 = (~(Ooiiu6 | Voiiu6)); +assign Ooiiu6 = (Dfiiu6 | Kfiiu6); +assign Dfiiu6 = (~(Y7ghu6 | U98iu6)); +assign Aoiiu6 = (D8iiu6 ? Cpiiu6 : S8fpw6[11]); +assign D8iiu6 = (HREADY & Jpiiu6); +assign Jpiiu6 = (~(Qpiiu6 & Xpiiu6)); +assign Xpiiu6 = (Eqiiu6 & Lqiiu6); +assign Lqiiu6 = (Sqiiu6 & Zqiiu6); +assign Zqiiu6 = (~(Griiu6 & Nriiu6)); +assign Griiu6 = (~(Uriiu6 | Y7ghu6)); +assign Sqiiu6 = (Bsiiu6 & Isiiu6); +assign Bsiiu6 = (~(Psiiu6 & Ae0iu6)); +assign Psiiu6 = (~(Mjfiu6 | H4ghu6)); +assign Eqiiu6 = (Wsiiu6 & Dtiiu6); +assign Dtiiu6 = (~(Ktiiu6 & Ndiiu6)); +assign Ktiiu6 = (~(Rtiiu6 & Ytiiu6)); +assign Ytiiu6 = (~(D7fpw6[10] & Fuiiu6)); +assign Fuiiu6 = (~(Muiiu6 & Tuiiu6)); +assign Tuiiu6 = (~(Aviiu6 & Hviiu6)); +assign Aviiu6 = (~(Oviiu6 | Zwciu6)); +assign Muiiu6 = (~(Vviiu6 & Cwiiu6)); +assign Rtiiu6 = (~(Vviiu6 & Jwiiu6)); +assign Wsiiu6 = (Qwiiu6 & Xwiiu6); +assign Xwiiu6 = (~(D7fpw6[14] & Exiiu6)); +assign Exiiu6 = (~(Lxiiu6 & Sxiiu6)); +assign Sxiiu6 = (~(Zxiiu6 & C0ehu6)); +assign Zxiiu6 = (Gyiiu6 & Q5aiu6); +assign Gyiiu6 = (S1ehu6 | Nyiiu6); +assign Lxiiu6 = (~(Ejiiu6 & Uyiiu6)); +assign Qwiiu6 = (~(Bziiu6 & Uyiiu6)); +assign Qpiiu6 = (Iziiu6 & Pziiu6); +assign Pziiu6 = (Wziiu6 & D0jiu6); +assign Wziiu6 = (K0jiu6 & R0jiu6); +assign R0jiu6 = (~(Y0jiu6 & F1jiu6)); +assign Iziiu6 = (M1jiu6 & T1jiu6); +assign Cpiiu6 = (~(A2jiu6 & H2jiu6)); +assign H2jiu6 = (O2jiu6 & V2jiu6); +assign V2jiu6 = (~(D7fpw6[11] & C3jiu6)); +assign C3jiu6 = (Kmiiu6 | J3jiu6); +assign J3jiu6 = (Rmiiu6 & D7fpw6[12]); +assign Kmiiu6 = (Zraiu6 & Q3jiu6); +assign Q3jiu6 = (~(X3jiu6 & E4jiu6)); +assign O2jiu6 = (V4aiu6 | Ljiiu6); +assign Ljiiu6 = (L4jiu6 & S4jiu6); +assign L4jiu6 = (~(Z4jiu6 & G5jiu6)); +assign G5jiu6 = (N5jiu6 & U5jiu6); +assign N5jiu6 = (Oviiu6 | Tniiu6); +assign A2jiu6 = (Aaiiu6 & B6jiu6); +assign B6jiu6 = (Oaiiu6 | I6jiu6); +assign Aaiiu6 = (P6jiu6 & W6jiu6); +assign P6jiu6 = (D7jiu6 & Faaiu6); +assign D7jiu6 = (~(K7jiu6 & R7jiu6)); +assign K7jiu6 = (Ia8iu6 & D7fpw6[7]); +assign Vethu6 = (F58iu6 ? S8fpw6[3] : Y7jiu6); +assign Y7jiu6 = (~(F8jiu6 & M8jiu6)); +assign M8jiu6 = (T8jiu6 & A9jiu6); +assign A9jiu6 = (H9jiu6 & O9jiu6); +assign O9jiu6 = (~(V9jiu6 & Ce8iu6)); +assign V9jiu6 = (~(Cajiu6 ^ Jajiu6)); +assign Jajiu6 = (Qajiu6 & S8fpw6[2]); +assign H9jiu6 = (Xajiu6 & Faaiu6); +assign Xajiu6 = (~(Ebjiu6 & E88iu6)); +assign Ebjiu6 = (~(Lbjiu6 & Sbjiu6)); +assign Sbjiu6 = (~(Zbjiu6 & Gcjiu6)); +assign Lbjiu6 = (~(Ncjiu6 & Ucjiu6)); +assign T8jiu6 = (Bdjiu6 & Idjiu6); +assign Idjiu6 = (~(Tc8iu6 & Ppfpw6[3])); +assign Bdjiu6 = (~(D7fpw6[9] & Pdjiu6)); +assign F8jiu6 = (Wdjiu6 & Dejiu6); +assign Dejiu6 = (Kejiu6 & Rejiu6); +assign Rejiu6 = (~(Habiu6 & D7fpw6[2])); +assign Kejiu6 = (V4aiu6 | Yb8iu6); +assign Wdjiu6 = (Yejiu6 & Ffjiu6); +assign Ffjiu6 = (~(Cbbiu6 & D7fpw6[8])); +assign Yejiu6 = (~(Mfjiu6 & Tfjiu6)); +assign Oethu6 = (F58iu6 ? S8fpw6[2] : Agjiu6); +assign F58iu6 = (~(HREADY & Hgjiu6)); +assign Hgjiu6 = (~(Ogjiu6 & Vgjiu6)); +assign Vgjiu6 = (Chjiu6 & Jhjiu6); +assign Jhjiu6 = (Qhjiu6 & Xhjiu6); +assign Xhjiu6 = (~(Eijiu6 & Lijiu6)); +assign Eijiu6 = (~(Sijiu6 | Cyfpw6[0])); +assign Qhjiu6 = (Zijiu6 & Gjjiu6); +assign Zijiu6 = (~(Njjiu6 & Ujjiu6)); +assign Njjiu6 = (~(Q5aiu6 | Bkjiu6)); +assign Chjiu6 = (Ikjiu6 & Pkjiu6); +assign Pkjiu6 = (~(Wkjiu6 & D7fpw6[10])); +assign Ikjiu6 = (Dljiu6 & Kljiu6); +assign Kljiu6 = (~(Rljiu6 & Yljiu6)); +assign Dljiu6 = (Fmjiu6 | Mmjiu6); +assign Ogjiu6 = (Tmjiu6 & Anjiu6); +assign Anjiu6 = (Hnjiu6 & Onjiu6); +assign Hnjiu6 = (Vnjiu6 & Cojiu6); +assign Cojiu6 = (Wmaiu6 | Jojiu6); +assign Vnjiu6 = (Qojiu6 | Xojiu6); +assign Tmjiu6 = (Epjiu6 & Lpjiu6); +assign Lpjiu6 = (~(Ae0iu6 & Pthiu6)); +assign Agjiu6 = (~(Spjiu6 & Zpjiu6)); +assign Zpjiu6 = (Gqjiu6 & Nqjiu6); +assign Nqjiu6 = (Uqjiu6 & V68iu6); +assign V68iu6 = (~(W8aiu6 & Brjiu6)); +assign Brjiu6 = (~(Irjiu6 & Wthiu6)); +assign Irjiu6 = (Prjiu6 | Cyfpw6[5]); +assign Uqjiu6 = (~(Wrjiu6 & E88iu6)); +assign E88iu6 = (~(Dsjiu6 & Ksjiu6)); +assign Ksjiu6 = (~(Rsjiu6 & Ysjiu6)); +assign Ysjiu6 = (~(Oviiu6 | Ftjiu6)); +assign Rsjiu6 = (Ia8iu6 & Mtjiu6); +assign Dsjiu6 = (~(Ttjiu6 & Aujiu6)); +assign Ttjiu6 = (~(Hujiu6 | I6jiu6)); +assign Wrjiu6 = (Gcjiu6 ^ Zbjiu6); +assign Zbjiu6 = (W7biu6 & P7biu6); +assign P7biu6 = (~(Oujiu6 | Ncjiu6)); +assign Oujiu6 = (Vujiu6 & Cvjiu6); +assign W7biu6 = (L88iu6 & S88iu6); +assign S88iu6 = (Jvjiu6 ^ O95iu6); +assign Gcjiu6 = (Ucjiu6 ^ Ncjiu6); +assign Ncjiu6 = (~(Cvjiu6 | Vujiu6)); +assign Vujiu6 = (~(Qvjiu6 & Xvjiu6)); +assign Xvjiu6 = (Ewjiu6 | Lwjiu6); +assign Cvjiu6 = (O95iu6 | Jvjiu6); +assign Jvjiu6 = (Swjiu6 ^ D7fpw6[6]); +assign Ucjiu6 = (~(Zwjiu6 & Gxjiu6)); +assign Gxjiu6 = (Nxjiu6 & Qvjiu6); +assign Qvjiu6 = (~(Lwjiu6 & Ewjiu6)); +assign Ewjiu6 = (Uxjiu6 ^ Byjiu6); +assign Lwjiu6 = (~(Ad8iu6 | Swjiu6)); +assign Swjiu6 = (Iyjiu6 ^ D7fpw6[5]); +assign Nxjiu6 = (~(Byjiu6 & Uxjiu6)); +assign Uxjiu6 = (Pyjiu6 ^ Wyjiu6); +assign Byjiu6 = (~(Dzjiu6 | Iyjiu6)); +assign Iyjiu6 = (Kzjiu6 ^ D7fpw6[4]); +assign Zwjiu6 = (Rzjiu6 & Yzjiu6); +assign Yzjiu6 = (~(Wyjiu6 & Pyjiu6)); +assign Pyjiu6 = (~(F0kiu6 ^ M0kiu6)); +assign F0kiu6 = (V4aiu6 | T0kiu6); +assign Wyjiu6 = (~(A1kiu6 | Kzjiu6)); +assign Kzjiu6 = (H1kiu6 ^ V4aiu6); +assign Rzjiu6 = (~(O1kiu6 & D7fpw6[3])); +assign O1kiu6 = (H1kiu6 & M0kiu6); +assign M0kiu6 = (~(V1kiu6 & C2kiu6)); +assign C2kiu6 = (Prjiu6 | J2kiu6); +assign V1kiu6 = (Rb8iu6 | Ccaiu6); +assign H1kiu6 = (!T0kiu6); +assign T0kiu6 = (J2kiu6 ^ D7fpw6[2]); +assign J2kiu6 = (~(D7fpw6[0] ^ D7fpw6[1])); +assign Gqjiu6 = (Q2kiu6 & X2kiu6); +assign X2kiu6 = (~(E3kiu6 & Ce8iu6)); +assign Ce8iu6 = (~(L3kiu6 & S3kiu6)); +assign L3kiu6 = (Z3kiu6 & G4kiu6); +assign G4kiu6 = (~(N4kiu6 & Cyfpw6[5])); +assign Z3kiu6 = (~(U98iu6 & U4kiu6)); +assign E3kiu6 = (~(B5kiu6 ^ Qajiu6)); +assign Qajiu6 = (~(Je8iu6 | Y8biu6)); +assign Q2kiu6 = (~(Tc8iu6 & Ppfpw6[2])); +assign Tc8iu6 = (Ivfhu6 & I5kiu6); +assign I5kiu6 = (~(P5kiu6 & W5kiu6)); +assign W5kiu6 = (~(D6kiu6 & Qjaiu6)); +assign Spjiu6 = (K6kiu6 & R6kiu6); +assign R6kiu6 = (Y6kiu6 & F7kiu6); +assign F7kiu6 = (Ndiiu6 | Hd8iu6); +assign Hd8iu6 = (~(Pdjiu6 | M7kiu6)); +assign Pdjiu6 = (~(T7kiu6 & A8kiu6)); +assign A8kiu6 = (~(H8kiu6 & Ftjiu6)); +assign H8kiu6 = (~(O8kiu6 & Vhiiu6)); +assign T7kiu6 = (~(M7kiu6 & Oviiu6)); +assign Y6kiu6 = (~(Habiu6 & D7fpw6[1])); +assign Habiu6 = (Ia8iu6 & V8kiu6); +assign V8kiu6 = (~(H95iu6 & C9kiu6)); +assign C9kiu6 = (~(J9kiu6 & Oviiu6)); +assign K6kiu6 = (Q9kiu6 & X9kiu6); +assign X9kiu6 = (Prjiu6 | Yb8iu6); +assign Yb8iu6 = (Eakiu6 & Lakiu6); +assign Lakiu6 = (Sakiu6 & Zjiiu6); +assign Zjiiu6 = (!Zakiu6); +assign Sakiu6 = (~(Gbkiu6 & Nyiiu6)); +assign Gbkiu6 = (Ia8iu6 & Nbkiu6); +assign Eakiu6 = (Ubkiu6 & Bckiu6); +assign Bckiu6 = (E4jiu6 | Jcaiu6); +assign Q9kiu6 = (~(Cbbiu6 & D7fpw6[7])); +assign Hethu6 = (Ickiu6 ? vis_r2_o[2] : Qcaiu6); +assign Aethu6 = (Ickiu6 ? vis_r2_o[4] : Ef8iu6); +assign Tdthu6 = (Ickiu6 ? vis_r2_o[23] : Vx9iu6); +assign Mdthu6 = (Ickiu6 ? vis_r2_o[30] : K39iu6); +assign Fdthu6 = (Ickiu6 ? vis_r2_o[31] : D39iu6); +assign Ycthu6 = (Ickiu6 ? vis_r2_o[0] : Tx8iu6); +assign Rcthu6 = (Pckiu6 ? vis_r3_o[2] : Qcaiu6); +assign Kcthu6 = (Pckiu6 ? vis_r3_o[4] : Ef8iu6); +assign Dcthu6 = (Pckiu6 ? vis_r3_o[23] : Vx9iu6); +assign Wbthu6 = (Pckiu6 ? vis_r3_o[30] : K39iu6); +assign Pbthu6 = (Pckiu6 ? vis_r3_o[31] : D39iu6); +assign Ibthu6 = (Pckiu6 ? vis_r3_o[0] : Tx8iu6); +assign Bbthu6 = (Wckiu6 ? vis_r4_o[2] : Qcaiu6); +assign Uathu6 = (Wckiu6 ? vis_r4_o[4] : Ef8iu6); +assign Nathu6 = (Wckiu6 ? vis_r4_o[23] : Vx9iu6); +assign Gathu6 = (Wckiu6 ? vis_r4_o[30] : K39iu6); +assign Z9thu6 = (Wckiu6 ? vis_r4_o[31] : D39iu6); +assign S9thu6 = (Wckiu6 ? vis_r4_o[0] : Tx8iu6); +assign L9thu6 = (Ddkiu6 ? vis_r5_o[2] : Qcaiu6); +assign E9thu6 = (Ddkiu6 ? vis_r5_o[4] : Ef8iu6); +assign X8thu6 = (Ddkiu6 ? vis_r5_o[23] : Vx9iu6); +assign Q8thu6 = (Ddkiu6 ? vis_r5_o[30] : K39iu6); +assign J8thu6 = (Ddkiu6 ? vis_r5_o[31] : D39iu6); +assign C8thu6 = (Ddkiu6 ? vis_r5_o[0] : Tx8iu6); +assign V7thu6 = (Kdkiu6 ? vis_r6_o[2] : Qcaiu6); +assign O7thu6 = (Kdkiu6 ? vis_r6_o[4] : Ef8iu6); +assign H7thu6 = (Kdkiu6 ? vis_r6_o[23] : Vx9iu6); +assign A7thu6 = (Kdkiu6 ? vis_r6_o[30] : K39iu6); +assign T6thu6 = (Kdkiu6 ? vis_r6_o[31] : D39iu6); +assign M6thu6 = (Kdkiu6 ? vis_r6_o[0] : Tx8iu6); +assign F6thu6 = (Rdkiu6 ? vis_r7_o[2] : Qcaiu6); +assign Y5thu6 = (Rdkiu6 ? vis_r7_o[4] : Ef8iu6); +assign R5thu6 = (Rdkiu6 ? vis_r7_o[23] : Vx9iu6); +assign K5thu6 = (Rdkiu6 ? vis_r7_o[30] : K39iu6); +assign D5thu6 = (Rdkiu6 ? vis_r7_o[31] : D39iu6); +assign W4thu6 = (Rdkiu6 ? vis_r7_o[0] : Tx8iu6); +assign P4thu6 = (Ydkiu6 ? Qcaiu6 : vis_psp_o[0]); +assign I4thu6 = (Ydkiu6 ? D39iu6 : vis_psp_o[29]); +assign B4thu6 = (Ydkiu6 ? K39iu6 : vis_psp_o[28]); +assign U3thu6 = (Ydkiu6 ? Vx9iu6 : vis_psp_o[21]); +assign N3thu6 = (Ydkiu6 ? Ef8iu6 : vis_psp_o[2]); +assign G3thu6 = (Fekiu6 ? Qcaiu6 : vis_msp_o[0]); +assign Z2thu6 = (Fekiu6 ? D39iu6 : vis_msp_o[29]); +assign S2thu6 = (Fekiu6 ? K39iu6 : vis_msp_o[28]); +assign L2thu6 = (Fekiu6 ? Vx9iu6 : vis_msp_o[21]); +assign E2thu6 = (Fekiu6 ? Ef8iu6 : vis_msp_o[2]); +assign X1thu6 = (Mekiu6 ? vis_r14_o[2] : Qcaiu6); +assign Q1thu6 = (Mekiu6 ? vis_r14_o[4] : Ef8iu6); +assign J1thu6 = (Mekiu6 ? vis_r14_o[23] : Vx9iu6); +assign C1thu6 = (Mekiu6 ? vis_r14_o[30] : K39iu6); +assign V0thu6 = (Mekiu6 ? vis_r14_o[31] : D39iu6); +assign O0thu6 = (Mekiu6 ? vis_r14_o[0] : Tx8iu6); +assign H0thu6 = (Tekiu6 ? vis_r12_o[2] : Qcaiu6); +assign A0thu6 = (Tekiu6 ? vis_r12_o[4] : Ef8iu6); +assign Tzshu6 = (Tekiu6 ? vis_r12_o[23] : Vx9iu6); +assign Mzshu6 = (Tekiu6 ? vis_r12_o[30] : K39iu6); +assign Fzshu6 = (Tekiu6 ? vis_r12_o[31] : D39iu6); +assign Yyshu6 = (Tekiu6 ? vis_r12_o[0] : Tx8iu6); +assign Ryshu6 = (Afkiu6 ? vis_r11_o[2] : Qcaiu6); +assign Kyshu6 = (Afkiu6 ? vis_r11_o[4] : Ef8iu6); +assign Dyshu6 = (Afkiu6 ? vis_r11_o[23] : Vx9iu6); +assign Wxshu6 = (Afkiu6 ? vis_r11_o[30] : K39iu6); +assign Pxshu6 = (Afkiu6 ? vis_r11_o[31] : D39iu6); +assign Ixshu6 = (Afkiu6 ? vis_r11_o[0] : Tx8iu6); +assign Bxshu6 = (Hfkiu6 ? vis_r10_o[2] : Qcaiu6); +assign Uwshu6 = (Hfkiu6 ? vis_r10_o[4] : Ef8iu6); +assign Nwshu6 = (Hfkiu6 ? vis_r10_o[23] : Vx9iu6); +assign Gwshu6 = (Hfkiu6 ? vis_r10_o[30] : K39iu6); +assign Zvshu6 = (Hfkiu6 ? vis_r10_o[31] : D39iu6); +assign Svshu6 = (Hfkiu6 ? vis_r10_o[0] : Tx8iu6); +assign Lvshu6 = (Ofkiu6 ? vis_r9_o[2] : Qcaiu6); +assign Evshu6 = (Ofkiu6 ? vis_r9_o[4] : Ef8iu6); +assign Xushu6 = (Ofkiu6 ? vis_r9_o[23] : Vx9iu6); +assign Qushu6 = (Ofkiu6 ? vis_r9_o[30] : K39iu6); +assign Jushu6 = (Ofkiu6 ? vis_r9_o[31] : D39iu6); +assign Cushu6 = (Ofkiu6 ? vis_r9_o[0] : Tx8iu6); +assign Vtshu6 = (Vfkiu6 ? vis_r8_o[2] : Qcaiu6); +assign Qcaiu6 = (~(Ogciu6 & Cgkiu6)); +assign Otshu6 = (Vfkiu6 ? vis_r8_o[3] : Jgkiu6); +assign Htshu6 = (~(Qgkiu6 & Xgkiu6)); +assign Xgkiu6 = (Ehkiu6 & Lhkiu6); +assign Lhkiu6 = (~(Ok8iu6 & vis_pc_o[2])); +assign Ehkiu6 = (Shkiu6 & Zhkiu6); +assign Zhkiu6 = (~(Jl8iu6 & Tugpw6[1])); +assign Tugpw6[1] = (~(Gikiu6 & Nikiu6)); +assign Nikiu6 = (~(N5fpw6[2] & Sdaiu6)); +assign Gikiu6 = (Uikiu6 & Bjkiu6); +assign Bjkiu6 = (T2iiu6 | Lg0iu6); +assign Uikiu6 = (~(Eafpw6[3] & A3iiu6)); +assign Shkiu6 = (~(Ql8iu6 & vis_ipsr_o[3])); +assign Qgkiu6 = (Ijkiu6 & Pjkiu6); +assign Pjkiu6 = (Lm8iu6 | Wjkiu6); +assign Ijkiu6 = (~(Zm8iu6 & Df4iu6)); +assign Atshu6 = (Ydkiu6 ? Jgkiu6 : vis_psp_o[1]); +assign Tsshu6 = (Fekiu6 ? Jgkiu6 : vis_msp_o[1]); +assign Msshu6 = (Mekiu6 ? vis_r14_o[3] : Jgkiu6); +assign Fsshu6 = (Tekiu6 ? vis_r12_o[3] : Jgkiu6); +assign Yrshu6 = (Rdkiu6 ? vis_r7_o[3] : Jgkiu6); +assign Rrshu6 = (Kdkiu6 ? vis_r6_o[3] : Jgkiu6); +assign Krshu6 = (Ddkiu6 ? vis_r5_o[3] : Jgkiu6); +assign Drshu6 = (Wckiu6 ? vis_r4_o[3] : Jgkiu6); +assign Wqshu6 = (Afkiu6 ? vis_r11_o[3] : Jgkiu6); +assign Pqshu6 = (Hfkiu6 ? vis_r10_o[3] : Jgkiu6); +assign Iqshu6 = (Ofkiu6 ? vis_r9_o[3] : Jgkiu6); +assign Bqshu6 = (Pckiu6 ? vis_r3_o[3] : Jgkiu6); +assign Upshu6 = (Ickiu6 ? vis_r2_o[3] : Jgkiu6); +assign Npshu6 = (Mx8iu6 ? vis_r1_o[3] : Jgkiu6); +assign Gpshu6 = (Lf8iu6 ? vis_r0_o[3] : Jgkiu6); +assign Jgkiu6 = (~(Kifiu6 & Dkkiu6)); +assign Zoshu6 = (Vfkiu6 ? vis_r8_o[4] : Ef8iu6); +assign Ef8iu6 = (~(Y4fiu6 & Kkkiu6)); +assign Soshu6 = (Vfkiu6 ? vis_r8_o[5] : Rkkiu6); +assign Loshu6 = (~(Ykkiu6 & Flkiu6)); +assign Flkiu6 = (Mlkiu6 & Tlkiu6); +assign Tlkiu6 = (~(vis_pc_o[4] & Ok8iu6)); +assign Mlkiu6 = (Amkiu6 & Hmkiu6); +assign Hmkiu6 = (~(Jl8iu6 & Tugpw6[3])); +assign Tugpw6[3] = (~(Omkiu6 & Vmkiu6)); +assign Vmkiu6 = (~(N5fpw6[4] & Sdaiu6)); +assign Omkiu6 = (Cnkiu6 & Jnkiu6); +assign Jnkiu6 = (T2iiu6 | Xf0iu6); +assign Cnkiu6 = (~(Eafpw6[5] & A3iiu6)); +assign Amkiu6 = (~(Ql8iu6 & vis_ipsr_o[5])); +assign Ykkiu6 = (Qnkiu6 & Xnkiu6); +assign Xnkiu6 = (Lm8iu6 | Eokiu6); +assign Qnkiu6 = (~(Zm8iu6 & Oh4iu6)); +assign Eoshu6 = (Ydkiu6 ? Rkkiu6 : vis_psp_o[3]); +assign Xnshu6 = (Fekiu6 ? Rkkiu6 : vis_msp_o[3]); +assign Qnshu6 = (Mekiu6 ? vis_r14_o[5] : Rkkiu6); +assign Jnshu6 = (Tekiu6 ? vis_r12_o[5] : Rkkiu6); +assign Cnshu6 = (Rdkiu6 ? vis_r7_o[5] : Rkkiu6); +assign Vmshu6 = (Kdkiu6 ? vis_r6_o[5] : Rkkiu6); +assign Omshu6 = (Ddkiu6 ? vis_r5_o[5] : Rkkiu6); +assign Hmshu6 = (Wckiu6 ? vis_r4_o[5] : Rkkiu6); +assign Amshu6 = (Afkiu6 ? vis_r11_o[5] : Rkkiu6); +assign Tlshu6 = (Hfkiu6 ? vis_r10_o[5] : Rkkiu6); +assign Mlshu6 = (Ofkiu6 ? vis_r9_o[5] : Rkkiu6); +assign Flshu6 = (Pckiu6 ? vis_r3_o[5] : Rkkiu6); +assign Ykshu6 = (Ickiu6 ? vis_r2_o[5] : Rkkiu6); +assign Rkshu6 = (Mx8iu6 ? vis_r1_o[5] : Rkkiu6); +assign Kkshu6 = (Lf8iu6 ? vis_r0_o[5] : Rkkiu6); +assign Rkkiu6 = (~(Ljbiu6 & Lokiu6)); +assign Dkshu6 = (Vfkiu6 ? vis_r8_o[6] : Sokiu6); +assign Wjshu6 = (~(Zokiu6 & Gpkiu6)); +assign Gpkiu6 = (Npkiu6 & Upkiu6); +assign Upkiu6 = (~(Jl8iu6 & Tugpw6[4])); +assign Npkiu6 = (~(vis_pc_o[5] & Ok8iu6)); +assign Zokiu6 = (Bqkiu6 & Iqkiu6); +assign Iqkiu6 = (~(W29iu6 & Fkfpw6[6])); +assign Bqkiu6 = (~(Zm8iu6 & Xi4iu6)); +assign Pjshu6 = (Ydkiu6 ? Sokiu6 : vis_psp_o[4]); +assign Ijshu6 = (Fekiu6 ? Sokiu6 : vis_msp_o[4]); +assign Bjshu6 = (Mekiu6 ? vis_r14_o[6] : Sokiu6); +assign Uishu6 = (Tekiu6 ? vis_r12_o[6] : Sokiu6); +assign Nishu6 = (Rdkiu6 ? vis_r7_o[6] : Sokiu6); +assign Gishu6 = (Kdkiu6 ? vis_r6_o[6] : Sokiu6); +assign Zhshu6 = (Ddkiu6 ? vis_r5_o[6] : Sokiu6); +assign Shshu6 = (Wckiu6 ? vis_r4_o[6] : Sokiu6); +assign Lhshu6 = (Afkiu6 ? vis_r11_o[6] : Sokiu6); +assign Ehshu6 = (Hfkiu6 ? vis_r10_o[6] : Sokiu6); +assign Xgshu6 = (Ofkiu6 ? vis_r9_o[6] : Sokiu6); +assign Qgshu6 = (Pckiu6 ? vis_r3_o[6] : Sokiu6); +assign Jgshu6 = (Ickiu6 ? vis_r2_o[6] : Sokiu6); +assign Cgshu6 = (Mx8iu6 ? vis_r1_o[6] : Sokiu6); +assign Vfshu6 = (Lf8iu6 ? vis_r0_o[6] : Sokiu6); +assign Sokiu6 = (Pqkiu6 | Wqkiu6); +assign Ofshu6 = (Vfkiu6 ? vis_r8_o[7] : Drkiu6); +assign Hfshu6 = (~(Krkiu6 & Rrkiu6)); +assign Rrkiu6 = (Yrkiu6 & Fskiu6); +assign Fskiu6 = (~(Jl8iu6 & Tugpw6[5])); +assign Tugpw6[5] = (~(Mskiu6 & Tskiu6)); +assign Tskiu6 = (~(N5fpw6[6] & Sdaiu6)); +assign Mskiu6 = (Atkiu6 & Htkiu6); +assign Htkiu6 = (T2iiu6 | Jf0iu6); +assign Atkiu6 = (~(Eafpw6[7] & A3iiu6)); +assign Yrkiu6 = (~(vis_pc_o[6] & Ok8iu6)); +assign Krkiu6 = (Otkiu6 & Vtkiu6); +assign Vtkiu6 = (Lm8iu6 | Cukiu6); +assign Otkiu6 = (~(Zm8iu6 & Gk4iu6)); +assign Afshu6 = (Ydkiu6 ? Drkiu6 : vis_psp_o[5]); +assign Teshu6 = (Fekiu6 ? Drkiu6 : vis_msp_o[5]); +assign Meshu6 = (Mekiu6 ? vis_r14_o[7] : Drkiu6); +assign Feshu6 = (Tekiu6 ? vis_r12_o[7] : Drkiu6); +assign Ydshu6 = (Rdkiu6 ? vis_r7_o[7] : Drkiu6); +assign Rdshu6 = (Kdkiu6 ? vis_r6_o[7] : Drkiu6); +assign Kdshu6 = (Ddkiu6 ? vis_r5_o[7] : Drkiu6); +assign Ddshu6 = (Wckiu6 ? vis_r4_o[7] : Drkiu6); +assign Wcshu6 = (Afkiu6 ? vis_r11_o[7] : Drkiu6); +assign Pcshu6 = (Hfkiu6 ? vis_r10_o[7] : Drkiu6); +assign Icshu6 = (Ofkiu6 ? vis_r9_o[7] : Drkiu6); +assign Bcshu6 = (Pckiu6 ? vis_r3_o[7] : Drkiu6); +assign Ubshu6 = (Ickiu6 ? vis_r2_o[7] : Drkiu6); +assign Nbshu6 = (Mx8iu6 ? vis_r1_o[7] : Drkiu6); +assign Gbshu6 = (Lf8iu6 ? vis_r0_o[7] : Drkiu6); +assign Drkiu6 = (Jukiu6 | Qukiu6); +assign Zashu6 = (Vfkiu6 ? vis_r8_o[23] : Vx9iu6); +assign Vx9iu6 = (~(Xukiu6 & Evkiu6)); +assign Xukiu6 = (Lvkiu6 & Svkiu6); +assign Sashu6 = (Vfkiu6 ? vis_r8_o[24] : Zvkiu6); +assign Lashu6 = (~(Gwkiu6 & Nwkiu6)); +assign Nwkiu6 = (Uwkiu6 & Bxkiu6); +assign Bxkiu6 = (~(vis_pc_o[23] & Ok8iu6)); +assign Uwkiu6 = (Ixkiu6 & Pxkiu6); +assign Pxkiu6 = (~(Jl8iu6 & Tzdpw6)); +assign Ixkiu6 = (~(Ql8iu6 & vis_tbit_o)); +assign Gwkiu6 = (Wxkiu6 & Dykiu6); +assign Dykiu6 = (Lm8iu6 | Kykiu6); +assign Wxkiu6 = (Hx9iu6 | Rykiu6); +assign Eashu6 = (Ydkiu6 ? Zvkiu6 : vis_psp_o[22]); +assign X9shu6 = (Fekiu6 ? Zvkiu6 : vis_msp_o[22]); +assign Q9shu6 = (Mekiu6 ? vis_r14_o[24] : Zvkiu6); +assign J9shu6 = (Tekiu6 ? vis_r12_o[24] : Zvkiu6); +assign C9shu6 = (Rdkiu6 ? vis_r7_o[24] : Zvkiu6); +assign V8shu6 = (Kdkiu6 ? vis_r6_o[24] : Zvkiu6); +assign O8shu6 = (Ddkiu6 ? vis_r5_o[24] : Zvkiu6); +assign H8shu6 = (Wckiu6 ? vis_r4_o[24] : Zvkiu6); +assign A8shu6 = (Afkiu6 ? vis_r11_o[24] : Zvkiu6); +assign T7shu6 = (Hfkiu6 ? vis_r10_o[24] : Zvkiu6); +assign M7shu6 = (Ofkiu6 ? vis_r9_o[24] : Zvkiu6); +assign F7shu6 = (Pckiu6 ? vis_r3_o[24] : Zvkiu6); +assign Y6shu6 = (Ickiu6 ? vis_r2_o[24] : Zvkiu6); +assign R6shu6 = (Mx8iu6 ? vis_r1_o[24] : Zvkiu6); +assign K6shu6 = (Lf8iu6 ? vis_r0_o[24] : Zvkiu6); +assign Zvkiu6 = (Nu8iu6 | Yykiu6); +assign D6shu6 = (Vfkiu6 ? vis_r8_o[26] : Fzkiu6); +assign W5shu6 = (~(Mzkiu6 & Tzkiu6)); +assign Tzkiu6 = (A0liu6 & H0liu6); +assign H0liu6 = (~(Jl8iu6 & H0epw6)); +assign A0liu6 = (~(vis_pc_o[25] & Ok8iu6)); +assign Mzkiu6 = (O0liu6 & V0liu6); +assign V0liu6 = (~(W29iu6 & Fkfpw6[26])); +assign O0liu6 = (Hx9iu6 | C1liu6); +assign P5shu6 = (Ydkiu6 ? Fzkiu6 : vis_psp_o[24]); +assign I5shu6 = (Fekiu6 ? Fzkiu6 : vis_msp_o[24]); +assign B5shu6 = (Mekiu6 ? vis_r14_o[26] : Fzkiu6); +assign U4shu6 = (Tekiu6 ? vis_r12_o[26] : Fzkiu6); +assign N4shu6 = (Rdkiu6 ? vis_r7_o[26] : Fzkiu6); +assign G4shu6 = (Kdkiu6 ? vis_r6_o[26] : Fzkiu6); +assign Z3shu6 = (Ddkiu6 ? vis_r5_o[26] : Fzkiu6); +assign S3shu6 = (Wckiu6 ? vis_r4_o[26] : Fzkiu6); +assign L3shu6 = (Afkiu6 ? vis_r11_o[26] : Fzkiu6); +assign E3shu6 = (Hfkiu6 ? vis_r10_o[26] : Fzkiu6); +assign X2shu6 = (Ofkiu6 ? vis_r9_o[26] : Fzkiu6); +assign Q2shu6 = (Pckiu6 ? vis_r3_o[26] : Fzkiu6); +assign J2shu6 = (Ickiu6 ? vis_r2_o[26] : Fzkiu6); +assign C2shu6 = (Mx8iu6 ? vis_r1_o[26] : Fzkiu6); +assign V1shu6 = (Lf8iu6 ? vis_r0_o[26] : Fzkiu6); +assign Fzkiu6 = (J1liu6 | Q1liu6); +assign O1shu6 = (Vfkiu6 ? vis_r8_o[27] : X1liu6); +assign H1shu6 = (~(E2liu6 & L2liu6)); +assign L2liu6 = (S2liu6 & Z2liu6); +assign Z2liu6 = (~(Jl8iu6 & O0epw6)); +assign S2liu6 = (~(vis_pc_o[26] & Ok8iu6)); +assign E2liu6 = (G3liu6 & N3liu6); +assign N3liu6 = (~(W29iu6 & Fkfpw6[27])); +assign G3liu6 = (Hx9iu6 | U3liu6); +assign A1shu6 = (Ydkiu6 ? X1liu6 : vis_psp_o[25]); +assign T0shu6 = (Fekiu6 ? X1liu6 : vis_msp_o[25]); +assign M0shu6 = (Mekiu6 ? vis_r14_o[27] : X1liu6); +assign F0shu6 = (Tekiu6 ? vis_r12_o[27] : X1liu6); +assign Yzrhu6 = (Rdkiu6 ? vis_r7_o[27] : X1liu6); +assign Rzrhu6 = (Kdkiu6 ? vis_r6_o[27] : X1liu6); +assign Kzrhu6 = (Ddkiu6 ? vis_r5_o[27] : X1liu6); +assign Dzrhu6 = (Wckiu6 ? vis_r4_o[27] : X1liu6); +assign Wyrhu6 = (Afkiu6 ? vis_r11_o[27] : X1liu6); +assign Pyrhu6 = (Hfkiu6 ? vis_r10_o[27] : X1liu6); +assign Iyrhu6 = (Ofkiu6 ? vis_r9_o[27] : X1liu6); +assign Byrhu6 = (Pckiu6 ? vis_r3_o[27] : X1liu6); +assign Uxrhu6 = (Ickiu6 ? vis_r2_o[27] : X1liu6); +assign Nxrhu6 = (Mx8iu6 ? vis_r1_o[27] : X1liu6); +assign Gxrhu6 = (Lf8iu6 ? vis_r0_o[27] : X1liu6); +assign X1liu6 = (B4liu6 | I4liu6); +assign Zwrhu6 = (Vfkiu6 ? vis_r8_o[29] : P4liu6); +assign Swrhu6 = (Ydkiu6 ? P4liu6 : vis_psp_o[27]); +assign Lwrhu6 = (Fekiu6 ? P4liu6 : vis_msp_o[27]); +assign Ewrhu6 = (Mekiu6 ? vis_r14_o[29] : P4liu6); +assign Xvrhu6 = (Tekiu6 ? vis_r12_o[29] : P4liu6); +assign Qvrhu6 = (Rdkiu6 ? vis_r7_o[29] : P4liu6); +assign Jvrhu6 = (Kdkiu6 ? vis_r6_o[29] : P4liu6); +assign Cvrhu6 = (Ddkiu6 ? vis_r5_o[29] : P4liu6); +assign Vurhu6 = (Wckiu6 ? vis_r4_o[29] : P4liu6); +assign Ourhu6 = (Afkiu6 ? vis_r11_o[29] : P4liu6); +assign Hurhu6 = (Hfkiu6 ? vis_r10_o[29] : P4liu6); +assign Aurhu6 = (Ofkiu6 ? vis_r9_o[29] : P4liu6); +assign Ttrhu6 = (Pckiu6 ? vis_r3_o[29] : P4liu6); +assign Mtrhu6 = (Ickiu6 ? vis_r2_o[29] : P4liu6); +assign Ftrhu6 = (Mx8iu6 ? vis_r1_o[29] : P4liu6); +assign Ysrhu6 = (Lf8iu6 ? vis_r0_o[29] : P4liu6); +assign P4liu6 = (Fj8iu6 | W4liu6); +assign Rsrhu6 = (Vfkiu6 ? vis_r8_o[30] : K39iu6); +assign K39iu6 = (~(D5liu6 & K5liu6)); +assign Ksrhu6 = (Y5liu6 ? R5liu6 : vis_apsr_o[2]); +assign R5liu6 = (~(F6liu6 & M6liu6)); +assign M6liu6 = (~(Ph8iu6 & T6liu6)); +assign F6liu6 = (A7liu6 & H7liu6); +assign H7liu6 = (O7liu6 | V7liu6); +assign A7liu6 = (Cs8iu6 | D5liu6); +assign Dsrhu6 = (~(C8liu6 & J8liu6)); +assign J8liu6 = (Q8liu6 & X8liu6); +assign X8liu6 = (~(Ok8iu6 & vis_pc_o[29])); +assign Q8liu6 = (E9liu6 & L9liu6); +assign L9liu6 = (~(Jl8iu6 & Rx0iu6)); +assign E9liu6 = (~(vis_apsr_o[2] & Ql8iu6)); +assign C8liu6 = (S9liu6 & Z9liu6); +assign Z9liu6 = (Lm8iu6 | Galiu6); +assign S9liu6 = (Hx9iu6 | Naliu6); +assign Wrrhu6 = (Vfkiu6 ? vis_r8_o[31] : D39iu6); +assign D39iu6 = (~(Ualiu6 & Bbliu6)); +assign Prrhu6 = (Vfkiu6 ? vis_r8_o[0] : Tx8iu6); +assign Tx8iu6 = (~(Zt8iu6 & Ibliu6)); +assign Zt8iu6 = (Pbliu6 & Wbliu6); +assign Wbliu6 = (Dcliu6 & Kcliu6); +assign Kcliu6 = (Rcliu6 | Ycliu6); +assign Dcliu6 = (Fdliu6 & Mdliu6); +assign Fdliu6 = (~(Tdliu6 & Aeliu6)); +assign Pbliu6 = (Heliu6 & Oeliu6); +assign Oeliu6 = (Veliu6 | Cfliu6); +assign Heliu6 = (~(Jfliu6 & Qfliu6)); +assign Irrhu6 = (~(Xfliu6 & Egliu6)); +assign Egliu6 = (Lgliu6 & Sgliu6); +assign Sgliu6 = (~(Ok8iu6 & vis_pc_o[0])); +assign Lgliu6 = (Zgliu6 & Ghliu6); +assign Ghliu6 = (~(Nhliu6 & Uhliu6)); +assign Uhliu6 = (Biliu6 & Iiliu6); +assign Nhliu6 = (Jl8iu6 & Piliu6); +assign Piliu6 = (Wiliu6 | Oviiu6); +assign Zgliu6 = (~(Ql8iu6 & vis_ipsr_o[1])); +assign Xfliu6 = (Djliu6 & Kjliu6); +assign Kjliu6 = (Lm8iu6 | Rjliu6); +assign Djliu6 = (Hx9iu6 | A34iu6); +assign Brrhu6 = (Fkliu6 ? Yjliu6 : vis_control_o); +assign Fkliu6 = (HREADY & Mkliu6); +assign Mkliu6 = (~(Tkliu6 & Alliu6)); +assign Alliu6 = (~(Hlliu6 & Olliu6)); +assign Olliu6 = (~(Vlliu6 & Cmliu6)); +assign Cmliu6 = (~(Jmliu6 & S8fpw6[2])); +assign Jmliu6 = (S8fpw6[4] & Qmliu6); +assign Tkliu6 = (~(Clfiu6 | Xmliu6)); +assign Yjliu6 = (~(Enliu6 & Lnliu6)); +assign Lnliu6 = (~(Snliu6 & Qmliu6)); +assign Snliu6 = (Wofiu6 ? Goliu6 : Znliu6); +assign Enliu6 = (Quzhu6 | Noliu6); +assign Uqrhu6 = (Mekiu6 ? vis_r14_o[1] : Uoliu6); +assign Nqrhu6 = (Tekiu6 ? vis_r12_o[1] : Uoliu6); +assign Gqrhu6 = (Rdkiu6 ? vis_r7_o[1] : Uoliu6); +assign Zprhu6 = (Kdkiu6 ? vis_r6_o[1] : Uoliu6); +assign Sprhu6 = (Ddkiu6 ? vis_r5_o[1] : Uoliu6); +assign Lprhu6 = (Wckiu6 ? vis_r4_o[1] : Uoliu6); +assign Eprhu6 = (Afkiu6 ? vis_r11_o[1] : Uoliu6); +assign Xorhu6 = (Hfkiu6 ? vis_r10_o[1] : Uoliu6); +assign Qorhu6 = (Ofkiu6 ? vis_r9_o[1] : Uoliu6); +assign Jorhu6 = (Vfkiu6 ? vis_r8_o[1] : Uoliu6); +assign Corhu6 = (Pckiu6 ? vis_r3_o[1] : Uoliu6); +assign Vnrhu6 = (Ickiu6 ? vis_r2_o[1] : Uoliu6); +assign Onrhu6 = (Mx8iu6 ? vis_r1_o[1] : Uoliu6); +assign Hnrhu6 = (Lf8iu6 ? vis_r0_o[1] : Uoliu6); +assign Uoliu6 = (~(Njciu6 & Bpliu6)); +assign Anrhu6 = (~(Ipliu6 & Ppliu6)); +assign Ppliu6 = (Wpliu6 & Dqliu6); +assign Dqliu6 = (~(vis_pc_o[24] & Ok8iu6)); +assign Wpliu6 = (Kqliu6 & Rqliu6); +assign Rqliu6 = (~(vis_control_o & B29iu6)); +assign B29iu6 = (Yqliu6 & Frliu6); +assign Yqliu6 = (~(U19iu6 | W29iu6)); +assign Kqliu6 = (~(Jl8iu6 & A0epw6)); +assign Ipliu6 = (Mrliu6 & Trliu6); +assign Trliu6 = (~(W29iu6 & Fkfpw6[25])); +assign Mrliu6 = (Hx9iu6 | Asliu6); +assign Tmrhu6 = (Ydkiu6 ? Hsliu6 : vis_psp_o[23]); +assign Mmrhu6 = (Fekiu6 ? Hsliu6 : vis_msp_o[23]); +assign Fmrhu6 = (Mekiu6 ? vis_r14_o[25] : Hsliu6); +assign Ylrhu6 = (Tekiu6 ? vis_r12_o[25] : Hsliu6); +assign Rlrhu6 = (Rdkiu6 ? vis_r7_o[25] : Hsliu6); +assign Klrhu6 = (Kdkiu6 ? vis_r6_o[25] : Hsliu6); +assign Dlrhu6 = (Ddkiu6 ? vis_r5_o[25] : Hsliu6); +assign Wkrhu6 = (Wckiu6 ? vis_r4_o[25] : Hsliu6); +assign Pkrhu6 = (Afkiu6 ? vis_r11_o[25] : Hsliu6); +assign Ikrhu6 = (Hfkiu6 ? vis_r10_o[25] : Hsliu6); +assign Bkrhu6 = (Ofkiu6 ? vis_r9_o[25] : Hsliu6); +assign Ujrhu6 = (Vfkiu6 ? vis_r8_o[25] : Hsliu6); +assign Njrhu6 = (Pckiu6 ? vis_r3_o[25] : Hsliu6); +assign Gjrhu6 = (Ickiu6 ? vis_r2_o[25] : Hsliu6); +assign Zirhu6 = (Mx8iu6 ? vis_r1_o[25] : Hsliu6); +assign Sirhu6 = (Lf8iu6 ? vis_r0_o[25] : Hsliu6); +assign Hsliu6 = (Osliu6 | Vsliu6); +assign Lirhu6 = (Hy8iu6 ? Iiliu6 : Iwfpw6[1]); +assign Hy8iu6 = (~(Eh6iu6 | L18iu6)); +assign Eirhu6 = (~(Ctliu6 & Jtliu6)); +assign Jtliu6 = (Qtliu6 & Xtliu6); +assign Xtliu6 = (~(Jl8iu6 & Fzdpw6)); +assign Qtliu6 = (~(vis_pc_o[21] & Ok8iu6)); +assign Ctliu6 = (Euliu6 & Luliu6); +assign Luliu6 = (Lm8iu6 | Suliu6); +assign Euliu6 = (~(Zm8iu6 & P74iu6)); +assign Xhrhu6 = (Ydkiu6 ? Zuliu6 : vis_psp_o[20]); +assign Qhrhu6 = (Fekiu6 ? Zuliu6 : vis_msp_o[20]); +assign Jhrhu6 = (Mekiu6 ? vis_r14_o[22] : Zuliu6); +assign Chrhu6 = (Tekiu6 ? vis_r12_o[22] : Zuliu6); +assign Vgrhu6 = (Rdkiu6 ? vis_r7_o[22] : Zuliu6); +assign Ogrhu6 = (Kdkiu6 ? vis_r6_o[22] : Zuliu6); +assign Hgrhu6 = (Ddkiu6 ? vis_r5_o[22] : Zuliu6); +assign Agrhu6 = (Wckiu6 ? vis_r4_o[22] : Zuliu6); +assign Tfrhu6 = (Afkiu6 ? vis_r11_o[22] : Zuliu6); +assign Mfrhu6 = (Hfkiu6 ? vis_r10_o[22] : Zuliu6); +assign Ffrhu6 = (Ofkiu6 ? vis_r9_o[22] : Zuliu6); +assign Yerhu6 = (Vfkiu6 ? vis_r8_o[22] : Zuliu6); +assign Rerhu6 = (Pckiu6 ? vis_r3_o[22] : Zuliu6); +assign Kerhu6 = (Ickiu6 ? vis_r2_o[22] : Zuliu6); +assign Derhu6 = (Mx8iu6 ? vis_r1_o[22] : Zuliu6); +assign Wdrhu6 = (Lf8iu6 ? vis_r0_o[22] : Zuliu6); +assign Zuliu6 = (~(Gvliu6 & Nvliu6)); +assign Gvliu6 = (Uvliu6 & Svkiu6); +assign Pdrhu6 = (~(Bwliu6 & Iwliu6)); +assign Iwliu6 = (Pwliu6 & Wwliu6); +assign Wwliu6 = (~(Jl8iu6 & Yydpw6)); +assign Pwliu6 = (~(vis_pc_o[20] & Ok8iu6)); +assign Bwliu6 = (Dxliu6 & Kxliu6); +assign Kxliu6 = (Lm8iu6 | Rxliu6); +assign Dxliu6 = (Hx9iu6 | Yxliu6); +assign Idrhu6 = (Ydkiu6 ? Fyliu6 : vis_psp_o[19]); +assign Bdrhu6 = (Fekiu6 ? Fyliu6 : vis_msp_o[19]); +assign Ucrhu6 = (Mekiu6 ? vis_r14_o[21] : Fyliu6); +assign Ncrhu6 = (Tekiu6 ? vis_r12_o[21] : Fyliu6); +assign Gcrhu6 = (Rdkiu6 ? vis_r7_o[21] : Fyliu6); +assign Zbrhu6 = (Kdkiu6 ? vis_r6_o[21] : Fyliu6); +assign Sbrhu6 = (Ddkiu6 ? vis_r5_o[21] : Fyliu6); +assign Lbrhu6 = (Wckiu6 ? vis_r4_o[21] : Fyliu6); +assign Ebrhu6 = (Afkiu6 ? vis_r11_o[21] : Fyliu6); +assign Xarhu6 = (Hfkiu6 ? vis_r10_o[21] : Fyliu6); +assign Qarhu6 = (Ofkiu6 ? vis_r9_o[21] : Fyliu6); +assign Jarhu6 = (Vfkiu6 ? vis_r8_o[21] : Fyliu6); +assign Carhu6 = (Pckiu6 ? vis_r3_o[21] : Fyliu6); +assign V9rhu6 = (Ickiu6 ? vis_r2_o[21] : Fyliu6); +assign O9rhu6 = (Mx8iu6 ? vis_r1_o[21] : Fyliu6); +assign H9rhu6 = (Lf8iu6 ? vis_r0_o[21] : Fyliu6); +assign Fyliu6 = (~(Myliu6 & Tyliu6)); +assign Myliu6 = (Azliu6 & Svkiu6); +assign A9rhu6 = (~(Hzliu6 & Ozliu6)); +assign Ozliu6 = (Vzliu6 & C0miu6); +assign C0miu6 = (~(Jl8iu6 & Rydpw6)); +assign Vzliu6 = (~(vis_pc_o[19] & Ok8iu6)); +assign Hzliu6 = (J0miu6 & Q0miu6); +assign Q0miu6 = (Lm8iu6 | X0miu6); +assign J0miu6 = (~(Zm8iu6 & B74iu6)); +assign T8rhu6 = (Ydkiu6 ? E1miu6 : vis_psp_o[18]); +assign M8rhu6 = (Fekiu6 ? E1miu6 : vis_msp_o[18]); +assign F8rhu6 = (Mekiu6 ? vis_r14_o[20] : E1miu6); +assign Y7rhu6 = (Tekiu6 ? vis_r12_o[20] : E1miu6); +assign R7rhu6 = (Rdkiu6 ? vis_r7_o[20] : E1miu6); +assign K7rhu6 = (Kdkiu6 ? vis_r6_o[20] : E1miu6); +assign D7rhu6 = (Ddkiu6 ? vis_r5_o[20] : E1miu6); +assign W6rhu6 = (Wckiu6 ? vis_r4_o[20] : E1miu6); +assign P6rhu6 = (Afkiu6 ? vis_r11_o[20] : E1miu6); +assign I6rhu6 = (Hfkiu6 ? vis_r10_o[20] : E1miu6); +assign B6rhu6 = (Ofkiu6 ? vis_r9_o[20] : E1miu6); +assign U5rhu6 = (Vfkiu6 ? vis_r8_o[20] : E1miu6); +assign N5rhu6 = (Pckiu6 ? vis_r3_o[20] : E1miu6); +assign G5rhu6 = (Ickiu6 ? vis_r2_o[20] : E1miu6); +assign Z4rhu6 = (Mx8iu6 ? vis_r1_o[20] : E1miu6); +assign S4rhu6 = (Lf8iu6 ? vis_r0_o[20] : E1miu6); +assign E1miu6 = (~(L1miu6 & S1miu6)); +assign L1miu6 = (Z1miu6 & Svkiu6); +assign L4rhu6 = (~(G2miu6 & N2miu6)); +assign N2miu6 = (U2miu6 & B3miu6); +assign B3miu6 = (~(Jl8iu6 & Kydpw6)); +assign U2miu6 = (~(vis_pc_o[18] & Ok8iu6)); +assign G2miu6 = (I3miu6 & P3miu6); +assign P3miu6 = (Lm8iu6 | W3miu6); +assign I3miu6 = (~(Zm8iu6 & U64iu6)); +assign E4rhu6 = (Ydkiu6 ? D4miu6 : vis_psp_o[17]); +assign X3rhu6 = (Fekiu6 ? D4miu6 : vis_msp_o[17]); +assign Q3rhu6 = (Mekiu6 ? vis_r14_o[19] : D4miu6); +assign J3rhu6 = (Tekiu6 ? vis_r12_o[19] : D4miu6); +assign C3rhu6 = (Rdkiu6 ? vis_r7_o[19] : D4miu6); +assign V2rhu6 = (Kdkiu6 ? vis_r6_o[19] : D4miu6); +assign O2rhu6 = (Ddkiu6 ? vis_r5_o[19] : D4miu6); +assign H2rhu6 = (Wckiu6 ? vis_r4_o[19] : D4miu6); +assign A2rhu6 = (Afkiu6 ? vis_r11_o[19] : D4miu6); +assign T1rhu6 = (Hfkiu6 ? vis_r10_o[19] : D4miu6); +assign M1rhu6 = (Ofkiu6 ? vis_r9_o[19] : D4miu6); +assign F1rhu6 = (Vfkiu6 ? vis_r8_o[19] : D4miu6); +assign Y0rhu6 = (Pckiu6 ? vis_r3_o[19] : D4miu6); +assign R0rhu6 = (Ickiu6 ? vis_r2_o[19] : D4miu6); +assign K0rhu6 = (Mx8iu6 ? vis_r1_o[19] : D4miu6); +assign D0rhu6 = (Lf8iu6 ? vis_r0_o[19] : D4miu6); +assign D4miu6 = (~(K4miu6 & R4miu6)); +assign K4miu6 = (Y4miu6 & Svkiu6); +assign Wzqhu6 = (~(F5miu6 & M5miu6)); +assign M5miu6 = (T5miu6 & A6miu6); +assign A6miu6 = (~(Jl8iu6 & Dydpw6)); +assign T5miu6 = (~(vis_pc_o[17] & Ok8iu6)); +assign F5miu6 = (H6miu6 & O6miu6); +assign O6miu6 = (Lm8iu6 | V6miu6); +assign H6miu6 = (~(Zm8iu6 & N64iu6)); +assign Pzqhu6 = (Ydkiu6 ? C7miu6 : vis_psp_o[16]); +assign Izqhu6 = (Fekiu6 ? C7miu6 : vis_msp_o[16]); +assign Bzqhu6 = (Mekiu6 ? vis_r14_o[18] : C7miu6); +assign Uyqhu6 = (Tekiu6 ? vis_r12_o[18] : C7miu6); +assign Nyqhu6 = (Rdkiu6 ? vis_r7_o[18] : C7miu6); +assign Gyqhu6 = (Kdkiu6 ? vis_r6_o[18] : C7miu6); +assign Zxqhu6 = (Ddkiu6 ? vis_r5_o[18] : C7miu6); +assign Sxqhu6 = (Wckiu6 ? vis_r4_o[18] : C7miu6); +assign Lxqhu6 = (Afkiu6 ? vis_r11_o[18] : C7miu6); +assign Exqhu6 = (Hfkiu6 ? vis_r10_o[18] : C7miu6); +assign Xwqhu6 = (Ofkiu6 ? vis_r9_o[18] : C7miu6); +assign Qwqhu6 = (Vfkiu6 ? vis_r8_o[18] : C7miu6); +assign Jwqhu6 = (Pckiu6 ? vis_r3_o[18] : C7miu6); +assign Cwqhu6 = (Ickiu6 ? vis_r2_o[18] : C7miu6); +assign Vvqhu6 = (Mx8iu6 ? vis_r1_o[18] : C7miu6); +assign Ovqhu6 = (Lf8iu6 ? vis_r0_o[18] : C7miu6); +assign C7miu6 = (~(J7miu6 & Q7miu6)); +assign J7miu6 = (X7miu6 & Svkiu6); +assign Hvqhu6 = (~(E8miu6 & L8miu6)); +assign L8miu6 = (S8miu6 & Z8miu6); +assign Z8miu6 = (~(Jl8iu6 & Wxdpw6)); +assign S8miu6 = (~(vis_pc_o[16] & Ok8iu6)); +assign E8miu6 = (G9miu6 & N9miu6); +assign N9miu6 = (Lm8iu6 | U9miu6); +assign G9miu6 = (~(Zm8iu6 & G64iu6)); +assign Avqhu6 = (Ydkiu6 ? Bamiu6 : vis_psp_o[15]); +assign Tuqhu6 = (Fekiu6 ? Bamiu6 : vis_msp_o[15]); +assign Muqhu6 = (Mekiu6 ? vis_r14_o[17] : Bamiu6); +assign Fuqhu6 = (Tekiu6 ? vis_r12_o[17] : Bamiu6); +assign Ytqhu6 = (Rdkiu6 ? vis_r7_o[17] : Bamiu6); +assign Rtqhu6 = (Kdkiu6 ? vis_r6_o[17] : Bamiu6); +assign Ktqhu6 = (Ddkiu6 ? vis_r5_o[17] : Bamiu6); +assign Dtqhu6 = (Wckiu6 ? vis_r4_o[17] : Bamiu6); +assign Wsqhu6 = (Afkiu6 ? vis_r11_o[17] : Bamiu6); +assign Psqhu6 = (Hfkiu6 ? vis_r10_o[17] : Bamiu6); +assign Isqhu6 = (Ofkiu6 ? vis_r9_o[17] : Bamiu6); +assign Bsqhu6 = (Vfkiu6 ? vis_r8_o[17] : Bamiu6); +assign Urqhu6 = (Pckiu6 ? vis_r3_o[17] : Bamiu6); +assign Nrqhu6 = (Ickiu6 ? vis_r2_o[17] : Bamiu6); +assign Grqhu6 = (Mx8iu6 ? vis_r1_o[17] : Bamiu6); +assign Zqqhu6 = (Lf8iu6 ? vis_r0_o[17] : Bamiu6); +assign Bamiu6 = (~(Iamiu6 & Pamiu6)); +assign Iamiu6 = (Wamiu6 & Svkiu6); +assign Sqqhu6 = (~(Dbmiu6 & Kbmiu6)); +assign Kbmiu6 = (Rbmiu6 & Ybmiu6); +assign Ybmiu6 = (~(Jl8iu6 & Pxdpw6)); +assign Rbmiu6 = (~(vis_pc_o[15] & Ok8iu6)); +assign Dbmiu6 = (Fcmiu6 & Mcmiu6); +assign Mcmiu6 = (Lm8iu6 | Tcmiu6); +assign Fcmiu6 = (~(Zm8iu6 & Z54iu6)); +assign Lqqhu6 = (Ydkiu6 ? Admiu6 : vis_psp_o[14]); +assign Eqqhu6 = (Fekiu6 ? Admiu6 : vis_msp_o[14]); +assign Xpqhu6 = (Mekiu6 ? vis_r14_o[16] : Admiu6); +assign Qpqhu6 = (Tekiu6 ? vis_r12_o[16] : Admiu6); +assign Jpqhu6 = (Rdkiu6 ? vis_r7_o[16] : Admiu6); +assign Cpqhu6 = (Kdkiu6 ? vis_r6_o[16] : Admiu6); +assign Voqhu6 = (Ddkiu6 ? vis_r5_o[16] : Admiu6); +assign Ooqhu6 = (Wckiu6 ? vis_r4_o[16] : Admiu6); +assign Hoqhu6 = (Afkiu6 ? vis_r11_o[16] : Admiu6); +assign Aoqhu6 = (Hfkiu6 ? vis_r10_o[16] : Admiu6); +assign Tnqhu6 = (Ofkiu6 ? vis_r9_o[16] : Admiu6); +assign Mnqhu6 = (Vfkiu6 ? vis_r8_o[16] : Admiu6); +assign Fnqhu6 = (Pckiu6 ? vis_r3_o[16] : Admiu6); +assign Ymqhu6 = (Ickiu6 ? vis_r2_o[16] : Admiu6); +assign Rmqhu6 = (Mx8iu6 ? vis_r1_o[16] : Admiu6); +assign Kmqhu6 = (Lf8iu6 ? vis_r0_o[16] : Admiu6); +assign Admiu6 = (~(Hdmiu6 & Odmiu6)); +assign Hdmiu6 = (Vdmiu6 & Svkiu6); +assign Dmqhu6 = (~(Cemiu6 & Jemiu6)); +assign Jemiu6 = (Qemiu6 & Xemiu6); +assign Xemiu6 = (~(Jl8iu6 & Tugpw6[13])); +assign Qemiu6 = (~(vis_pc_o[14] & Ok8iu6)); +assign Cemiu6 = (Efmiu6 & Lfmiu6); +assign Lfmiu6 = (Lm8iu6 | Sfmiu6); +assign Efmiu6 = (~(Zm8iu6 & S54iu6)); +assign Wlqhu6 = (Ydkiu6 ? Zfmiu6 : vis_psp_o[13]); +assign Plqhu6 = (Fekiu6 ? Zfmiu6 : vis_msp_o[13]); +assign Ilqhu6 = (Mekiu6 ? vis_r14_o[15] : Zfmiu6); +assign Blqhu6 = (Tekiu6 ? vis_r12_o[15] : Zfmiu6); +assign Ukqhu6 = (Rdkiu6 ? vis_r7_o[15] : Zfmiu6); +assign Nkqhu6 = (Kdkiu6 ? vis_r6_o[15] : Zfmiu6); +assign Gkqhu6 = (Ddkiu6 ? vis_r5_o[15] : Zfmiu6); +assign Zjqhu6 = (Wckiu6 ? vis_r4_o[15] : Zfmiu6); +assign Sjqhu6 = (Afkiu6 ? vis_r11_o[15] : Zfmiu6); +assign Ljqhu6 = (Hfkiu6 ? vis_r10_o[15] : Zfmiu6); +assign Ejqhu6 = (Ofkiu6 ? vis_r9_o[15] : Zfmiu6); +assign Xiqhu6 = (Vfkiu6 ? vis_r8_o[15] : Zfmiu6); +assign Qiqhu6 = (Pckiu6 ? vis_r3_o[15] : Zfmiu6); +assign Jiqhu6 = (Ickiu6 ? vis_r2_o[15] : Zfmiu6); +assign Ciqhu6 = (Mx8iu6 ? vis_r1_o[15] : Zfmiu6); +assign Vhqhu6 = (Lf8iu6 ? vis_r0_o[15] : Zfmiu6); +assign Zfmiu6 = (~(Ggmiu6 & Ngmiu6)); +assign Ohqhu6 = (~(Ugmiu6 & Bhmiu6)); +assign Bhmiu6 = (Ihmiu6 & Phmiu6); +assign Phmiu6 = (~(Jl8iu6 & Tugpw6[12])); +assign Ihmiu6 = (~(vis_pc_o[13] & Ok8iu6)); +assign Ugmiu6 = (Whmiu6 & Dimiu6); +assign Dimiu6 = (Lm8iu6 | Kimiu6); +assign Whmiu6 = (~(Zm8iu6 & L54iu6)); +assign Hhqhu6 = (Ydkiu6 ? Rimiu6 : vis_psp_o[12]); +assign Ahqhu6 = (Fekiu6 ? Rimiu6 : vis_msp_o[12]); +assign Tgqhu6 = (Mekiu6 ? vis_r14_o[14] : Rimiu6); +assign Mgqhu6 = (Tekiu6 ? vis_r12_o[14] : Rimiu6); +assign Fgqhu6 = (Rdkiu6 ? vis_r7_o[14] : Rimiu6); +assign Yfqhu6 = (Kdkiu6 ? vis_r6_o[14] : Rimiu6); +assign Rfqhu6 = (Ddkiu6 ? vis_r5_o[14] : Rimiu6); +assign Kfqhu6 = (Wckiu6 ? vis_r4_o[14] : Rimiu6); +assign Dfqhu6 = (Afkiu6 ? vis_r11_o[14] : Rimiu6); +assign Weqhu6 = (Hfkiu6 ? vis_r10_o[14] : Rimiu6); +assign Peqhu6 = (Ofkiu6 ? vis_r9_o[14] : Rimiu6); +assign Ieqhu6 = (Vfkiu6 ? vis_r8_o[14] : Rimiu6); +assign Beqhu6 = (Pckiu6 ? vis_r3_o[14] : Rimiu6); +assign Udqhu6 = (Ickiu6 ? vis_r2_o[14] : Rimiu6); +assign Ndqhu6 = (Mx8iu6 ? vis_r1_o[14] : Rimiu6); +assign Gdqhu6 = (Lf8iu6 ? vis_r0_o[14] : Rimiu6); +assign Rimiu6 = (Yimiu6 | Fjmiu6); +assign Zcqhu6 = (~(Mjmiu6 & Tjmiu6)); +assign Tjmiu6 = (Akmiu6 & Hkmiu6); +assign Hkmiu6 = (~(Jl8iu6 & Tugpw6[11])); +assign Akmiu6 = (~(vis_pc_o[12] & Ok8iu6)); +assign Mjmiu6 = (Okmiu6 & Vkmiu6); +assign Vkmiu6 = (Lm8iu6 | Clmiu6); +assign Okmiu6 = (~(Zm8iu6 & E54iu6)); +assign Scqhu6 = (Ydkiu6 ? Jlmiu6 : vis_psp_o[11]); +assign Lcqhu6 = (Fekiu6 ? Jlmiu6 : vis_msp_o[11]); +assign Ecqhu6 = (Mekiu6 ? vis_r14_o[13] : Jlmiu6); +assign Xbqhu6 = (Tekiu6 ? vis_r12_o[13] : Jlmiu6); +assign Qbqhu6 = (Rdkiu6 ? vis_r7_o[13] : Jlmiu6); +assign Jbqhu6 = (Kdkiu6 ? vis_r6_o[13] : Jlmiu6); +assign Cbqhu6 = (Ddkiu6 ? vis_r5_o[13] : Jlmiu6); +assign Vaqhu6 = (Wckiu6 ? vis_r4_o[13] : Jlmiu6); +assign Oaqhu6 = (Afkiu6 ? vis_r11_o[13] : Jlmiu6); +assign Haqhu6 = (Hfkiu6 ? vis_r10_o[13] : Jlmiu6); +assign Aaqhu6 = (Ofkiu6 ? vis_r9_o[13] : Jlmiu6); +assign T9qhu6 = (Vfkiu6 ? vis_r8_o[13] : Jlmiu6); +assign M9qhu6 = (Pckiu6 ? vis_r3_o[13] : Jlmiu6); +assign F9qhu6 = (Ickiu6 ? vis_r2_o[13] : Jlmiu6); +assign Y8qhu6 = (Mx8iu6 ? vis_r1_o[13] : Jlmiu6); +assign R8qhu6 = (Lf8iu6 ? vis_r0_o[13] : Jlmiu6); +assign Jlmiu6 = (Qlmiu6 | Xlmiu6); +assign K8qhu6 = (~(Emmiu6 & Lmmiu6)); +assign Lmmiu6 = (Smmiu6 & Zmmiu6); +assign Zmmiu6 = (~(Jl8iu6 & Ixdpw6)); +assign Smmiu6 = (~(vis_pc_o[11] & Ok8iu6)); +assign Emmiu6 = (Gnmiu6 & Nnmiu6); +assign Nnmiu6 = (Lm8iu6 | Unmiu6); +assign Gnmiu6 = (~(Zm8iu6 & X44iu6)); +assign D8qhu6 = (Ydkiu6 ? Bomiu6 : vis_psp_o[10]); +assign W7qhu6 = (Fekiu6 ? Bomiu6 : vis_msp_o[10]); +assign P7qhu6 = (Mekiu6 ? vis_r14_o[12] : Bomiu6); +assign I7qhu6 = (Tekiu6 ? vis_r12_o[12] : Bomiu6); +assign B7qhu6 = (Rdkiu6 ? vis_r7_o[12] : Bomiu6); +assign U6qhu6 = (Kdkiu6 ? vis_r6_o[12] : Bomiu6); +assign N6qhu6 = (Ddkiu6 ? vis_r5_o[12] : Bomiu6); +assign G6qhu6 = (Wckiu6 ? vis_r4_o[12] : Bomiu6); +assign Z5qhu6 = (Afkiu6 ? vis_r11_o[12] : Bomiu6); +assign S5qhu6 = (Hfkiu6 ? vis_r10_o[12] : Bomiu6); +assign L5qhu6 = (Ofkiu6 ? vis_r9_o[12] : Bomiu6); +assign E5qhu6 = (Vfkiu6 ? vis_r8_o[12] : Bomiu6); +assign X4qhu6 = (Pckiu6 ? vis_r3_o[12] : Bomiu6); +assign Q4qhu6 = (Ickiu6 ? vis_r2_o[12] : Bomiu6); +assign J4qhu6 = (Mx8iu6 ? vis_r1_o[12] : Bomiu6); +assign C4qhu6 = (Lf8iu6 ? vis_r0_o[12] : Bomiu6); +assign Bomiu6 = (Iomiu6 | Pomiu6); +assign V3qhu6 = (~(Womiu6 & Dpmiu6)); +assign Dpmiu6 = (Kpmiu6 & Rpmiu6); +assign Rpmiu6 = (~(Jl8iu6 & Tugpw6[9])); +assign Tugpw6[9] = (~(Ypmiu6 & Fqmiu6)); +assign Fqmiu6 = (~(N5fpw6[10] & Sdaiu6)); +assign Ypmiu6 = (Mqmiu6 & Tqmiu6); +assign Tqmiu6 = (T2iiu6 | Sn0iu6); +assign Mqmiu6 = (~(Eafpw6[11] & A3iiu6)); +assign Kpmiu6 = (~(vis_pc_o[10] & Ok8iu6)); +assign Womiu6 = (Armiu6 & Hrmiu6); +assign Hrmiu6 = (Lm8iu6 | Ormiu6); +assign Armiu6 = (~(Zm8iu6 & Q44iu6)); +assign O3qhu6 = (Ydkiu6 ? Vrmiu6 : vis_psp_o[9]); +assign H3qhu6 = (Fekiu6 ? Vrmiu6 : vis_msp_o[9]); +assign A3qhu6 = (Mekiu6 ? vis_r14_o[11] : Vrmiu6); +assign T2qhu6 = (Tekiu6 ? vis_r12_o[11] : Vrmiu6); +assign Tekiu6 = (!Csmiu6); +assign M2qhu6 = (Rdkiu6 ? vis_r7_o[11] : Vrmiu6); +assign Rdkiu6 = (!Jsmiu6); +assign F2qhu6 = (Kdkiu6 ? vis_r6_o[11] : Vrmiu6); +assign Y1qhu6 = (Ddkiu6 ? vis_r5_o[11] : Vrmiu6); +assign Ddkiu6 = (!Qsmiu6); +assign R1qhu6 = (Wckiu6 ? vis_r4_o[11] : Vrmiu6); +assign Wckiu6 = (!Xsmiu6); +assign K1qhu6 = (Afkiu6 ? vis_r11_o[11] : Vrmiu6); +assign Afkiu6 = (!Etmiu6); +assign D1qhu6 = (Hfkiu6 ? vis_r10_o[11] : Vrmiu6); +assign W0qhu6 = (Ofkiu6 ? vis_r9_o[11] : Vrmiu6); +assign Ofkiu6 = (!Ltmiu6); +assign P0qhu6 = (Vfkiu6 ? vis_r8_o[11] : Vrmiu6); +assign Vfkiu6 = (!Stmiu6); +assign I0qhu6 = (Pckiu6 ? vis_r3_o[11] : Vrmiu6); +assign Pckiu6 = (!Ztmiu6); +assign B0qhu6 = (Ickiu6 ? vis_r2_o[11] : Vrmiu6); +assign Uzphu6 = (Mx8iu6 ? vis_r1_o[11] : Vrmiu6); +assign Mx8iu6 = (!Gumiu6); +assign Nzphu6 = (Lf8iu6 ? vis_r0_o[11] : Vrmiu6); +assign Lf8iu6 = (!Numiu6); +assign Vrmiu6 = (Uumiu6 | Bvmiu6); +assign Gzphu6 = (~(Ivmiu6 & Pvmiu6)); +assign Pvmiu6 = (Wvmiu6 & Dwmiu6); +assign Dwmiu6 = (~(Jl8iu6 & Tugpw6[8])); +assign Tugpw6[8] = (~(Kwmiu6 & Rwmiu6)); +assign Rwmiu6 = (~(N5fpw6[9] & Sdaiu6)); +assign Kwmiu6 = (Ywmiu6 & Fxmiu6); +assign Fxmiu6 = (T2iiu6 | Zn0iu6); +assign Ywmiu6 = (~(Eafpw6[10] & A3iiu6)); +assign Wvmiu6 = (~(vis_pc_o[9] & Ok8iu6)); +assign Ivmiu6 = (Mxmiu6 & Txmiu6); +assign Txmiu6 = (Lm8iu6 | Aymiu6); +assign Mxmiu6 = (~(Zm8iu6 & J44iu6)); +assign Zyphu6 = (Ydkiu6 ? Hymiu6 : vis_psp_o[8]); +assign Syphu6 = (Fekiu6 ? Hymiu6 : vis_msp_o[8]); +assign Lyphu6 = (Mekiu6 ? vis_r14_o[10] : Hymiu6); +assign Eyphu6 = (Csmiu6 ? Hymiu6 : vis_r12_o[10]); +assign Xxphu6 = (Jsmiu6 ? Hymiu6 : vis_r7_o[10]); +assign Qxphu6 = (Kdkiu6 ? vis_r6_o[10] : Hymiu6); +assign Jxphu6 = (Qsmiu6 ? Hymiu6 : vis_r5_o[10]); +assign Cxphu6 = (Xsmiu6 ? Hymiu6 : vis_r4_o[10]); +assign Vwphu6 = (Etmiu6 ? Hymiu6 : vis_r11_o[10]); +assign Owphu6 = (Hfkiu6 ? vis_r10_o[10] : Hymiu6); +assign Hwphu6 = (Ltmiu6 ? Hymiu6 : vis_r9_o[10]); +assign Awphu6 = (Stmiu6 ? Hymiu6 : vis_r8_o[10]); +assign Tvphu6 = (Ztmiu6 ? Hymiu6 : vis_r3_o[10]); +assign Mvphu6 = (Ickiu6 ? vis_r2_o[10] : Hymiu6); +assign Fvphu6 = (Gumiu6 ? Hymiu6 : vis_r1_o[10]); +assign Yuphu6 = (Numiu6 ? Hymiu6 : vis_r0_o[10]); +assign Hymiu6 = (Oymiu6 | Vymiu6); +assign Ruphu6 = (Jzmiu6 ? Czmiu6 : L8ehu6); +assign Jzmiu6 = (Qzmiu6 & HREADY); +assign Qzmiu6 = (Xzmiu6 & E0niu6); +assign E0niu6 = (L0niu6 | Bi0iu6); +assign Czmiu6 = (Uzaiu6 ? Gh0iu6 : S0niu6); +assign Kuphu6 = (~(Z0niu6 & G1niu6)); +assign G1niu6 = (N1niu6 & U1niu6); +assign U1niu6 = (~(vis_pc_o[8] & Ok8iu6)); +assign N1niu6 = (B2niu6 & I2niu6); +assign I2niu6 = (~(P2niu6 & L8ehu6)); +assign P2niu6 = (Ql8iu6 & Gc5iu6); +assign B2niu6 = (~(Jl8iu6 & Tugpw6[7])); +assign Z0niu6 = (W2niu6 & D3niu6); +assign D3niu6 = (~(W29iu6 & Fkfpw6[9])); +assign W2niu6 = (~(Zm8iu6 & Ym4iu6)); +assign Duphu6 = (Ydkiu6 ? K3niu6 : vis_psp_o[7]); +assign Wtphu6 = (Fekiu6 ? K3niu6 : vis_msp_o[7]); +assign Ptphu6 = (Mekiu6 ? vis_r14_o[9] : K3niu6); +assign Itphu6 = (Csmiu6 ? K3niu6 : vis_r12_o[9]); +assign Btphu6 = (Jsmiu6 ? K3niu6 : vis_r7_o[9]); +assign Usphu6 = (Kdkiu6 ? vis_r6_o[9] : K3niu6); +assign Nsphu6 = (Qsmiu6 ? K3niu6 : vis_r5_o[9]); +assign Gsphu6 = (Xsmiu6 ? K3niu6 : vis_r4_o[9]); +assign Zrphu6 = (Etmiu6 ? K3niu6 : vis_r11_o[9]); +assign Srphu6 = (Hfkiu6 ? vis_r10_o[9] : K3niu6); +assign Lrphu6 = (Ltmiu6 ? K3niu6 : vis_r9_o[9]); +assign Erphu6 = (Stmiu6 ? K3niu6 : vis_r8_o[9]); +assign Xqphu6 = (Ztmiu6 ? K3niu6 : vis_r3_o[9]); +assign Qqphu6 = (Ickiu6 ? vis_r2_o[9] : K3niu6); +assign Jqphu6 = (Gumiu6 ? K3niu6 : vis_r1_o[9]); +assign Cqphu6 = (Numiu6 ? K3niu6 : vis_r0_o[9]); +assign K3niu6 = (S0niu6 | R3niu6); +assign Vpphu6 = (~(Y3niu6 & F4niu6)); +assign F4niu6 = (M4niu6 & T4niu6); +assign T4niu6 = (~(Jl8iu6 & Tugpw6[6])); +assign Tugpw6[6] = (~(A5niu6 & H5niu6)); +assign H5niu6 = (~(N5fpw6[7] & Sdaiu6)); +assign A5niu6 = (O5niu6 & V5niu6); +assign V5niu6 = (T2iiu6 | Ve0iu6); +assign O5niu6 = (~(Eafpw6[8] & A3iiu6)); +assign M4niu6 = (~(vis_pc_o[7] & Ok8iu6)); +assign Y3niu6 = (C6niu6 & J6niu6); +assign J6niu6 = (Lm8iu6 | Q6niu6); +assign C6niu6 = (~(Zm8iu6 & Pl4iu6)); +assign Opphu6 = (Ydkiu6 ? X6niu6 : vis_psp_o[6]); +assign Hpphu6 = (Fekiu6 ? X6niu6 : vis_msp_o[6]); +assign Apphu6 = (Mekiu6 ? vis_r14_o[8] : X6niu6); +assign Tophu6 = (Csmiu6 ? X6niu6 : vis_r12_o[8]); +assign Mophu6 = (Jsmiu6 ? X6niu6 : vis_r7_o[8]); +assign Fophu6 = (Kdkiu6 ? vis_r6_o[8] : X6niu6); +assign Ynphu6 = (Qsmiu6 ? X6niu6 : vis_r5_o[8]); +assign Rnphu6 = (Xsmiu6 ? X6niu6 : vis_r4_o[8]); +assign Knphu6 = (Etmiu6 ? X6niu6 : vis_r11_o[8]); +assign Dnphu6 = (Hfkiu6 ? vis_r10_o[8] : X6niu6); +assign Wmphu6 = (Ltmiu6 ? X6niu6 : vis_r9_o[8]); +assign Pmphu6 = (Stmiu6 ? X6niu6 : vis_r8_o[8]); +assign Imphu6 = (Ztmiu6 ? X6niu6 : vis_r3_o[8]); +assign Bmphu6 = (Ickiu6 ? vis_r2_o[8] : X6niu6); +assign Ulphu6 = (Gumiu6 ? X6niu6 : vis_r1_o[8]); +assign Nlphu6 = (Numiu6 ? X6niu6 : vis_r0_o[8]); +assign X6niu6 = (E7niu6 | L7niu6); +assign Glphu6 = (~(S7niu6 & Z7niu6)); +assign Z7niu6 = (~(G8niu6 & Ug8iu6)); +assign S7niu6 = (HREADY ? U8niu6 : N8niu6); +assign U8niu6 = (~(B9niu6 & I9niu6)); +assign I9niu6 = (~(P9niu6 & Ug8iu6)); +assign B9niu6 = (Ug8iu6 ? Daniu6 : W9niu6); +assign Daniu6 = (Kaniu6 & Raniu6); +assign Raniu6 = (~(Idfpw6[31] & Eafpw6[31])); +assign Kaniu6 = (D5epw6 ? Idfpw6[31] : Eafpw6[31]); +assign W9niu6 = (Yaniu6 & Fbniu6); +assign Fbniu6 = (~(Mbniu6 & Tbniu6)); +assign Tbniu6 = (Cs8iu6 | Acniu6); +assign Yaniu6 = (~(Acniu6 & Hcniu6)); +assign N8niu6 = (!vis_apsr_o[0]); +assign Zkphu6 = (~(Ocniu6 & Vcniu6)); +assign Vcniu6 = (Cdniu6 & Jdniu6); +assign Jdniu6 = (~(Ok8iu6 & vis_pc_o[27])); +assign Cdniu6 = (Qdniu6 & Xdniu6); +assign Xdniu6 = (~(Jl8iu6 & V0epw6)); +assign Qdniu6 = (~(vis_apsr_o[0] & Ql8iu6)); +assign Ocniu6 = (Eeniu6 & Leniu6); +assign Leniu6 = (Lm8iu6 | Seniu6); +assign Eeniu6 = (Hx9iu6 | Zeniu6); +assign Skphu6 = (Ydkiu6 ? Gfniu6 : vis_psp_o[26]); +assign Ydkiu6 = (Nfniu6 & Vrfhu6); +assign Nfniu6 = (!Ufniu6); +assign Lkphu6 = (Fekiu6 ? Gfniu6 : vis_msp_o[26]); +assign Fekiu6 = (~(Ufniu6 | Vrfhu6)); +assign Ufniu6 = (~(Bgniu6 & Igniu6)); +assign Bgniu6 = (~(Pgniu6 | Wgniu6)); +assign Ekphu6 = (Mekiu6 ? vis_r14_o[28] : Gfniu6); +assign Mekiu6 = (~(Dhniu6 & Khniu6)); +assign Xjphu6 = (Csmiu6 ? Gfniu6 : vis_r12_o[28]); +assign Csmiu6 = (Rhniu6 & Khniu6); +assign Rhniu6 = (~(Yhniu6 | Wgniu6)); +assign Qjphu6 = (Jsmiu6 ? Gfniu6 : vis_r7_o[28]); +assign Jsmiu6 = (Finiu6 & Miniu6); +assign Finiu6 = (Tiniu6 & Ajniu6); +assign Jjphu6 = (Kdkiu6 ? vis_r6_o[28] : Gfniu6); +assign Kdkiu6 = (~(Khniu6 & Miniu6)); +assign Cjphu6 = (Qsmiu6 ? Gfniu6 : vis_r5_o[28]); +assign Qsmiu6 = (Hjniu6 & Igniu6); +assign Hjniu6 = (~(Ojniu6 | Pgniu6)); +assign Viphu6 = (Xsmiu6 ? Gfniu6 : vis_r4_o[28]); +assign Xsmiu6 = (Vjniu6 & Khniu6); +assign Khniu6 = (~(Ajniu6 | Pgniu6)); +assign Vjniu6 = (~(Yhniu6 | Ojniu6)); +assign Oiphu6 = (Etmiu6 ? Gfniu6 : vis_r11_o[28]); +assign Etmiu6 = (Ckniu6 & Dhniu6); +assign Hiphu6 = (Hfkiu6 ? vis_r10_o[28] : Gfniu6); +assign Hfkiu6 = (~(Dhniu6 & Jkniu6)); +assign Dhniu6 = (~(Wgniu6 | Qkniu6)); +assign Aiphu6 = (Ltmiu6 ? Gfniu6 : vis_r9_o[28]); +assign Ltmiu6 = (Xkniu6 & Igniu6); +assign Xkniu6 = (~(Tiniu6 | Wgniu6)); +assign Thphu6 = (Stmiu6 ? Gfniu6 : vis_r8_o[28]); +assign Stmiu6 = (Elniu6 & Qkniu6); +assign Elniu6 = (Jkniu6 & Ojniu6); +assign Mhphu6 = (Ztmiu6 ? Gfniu6 : vis_r3_o[28]); +assign Ztmiu6 = (Ckniu6 & Miniu6); +assign Ckniu6 = (Pgniu6 & Ajniu6); +assign Pgniu6 = (!Tiniu6); +assign Fhphu6 = (Ickiu6 ? vis_r2_o[28] : Gfniu6); +assign Ickiu6 = (~(Miniu6 & Jkniu6)); +assign Miniu6 = (~(Ojniu6 | Qkniu6)); +assign Ygphu6 = (Gumiu6 ? Gfniu6 : vis_r1_o[28]); +assign Gumiu6 = (Llniu6 & Igniu6); +assign Igniu6 = (Qkniu6 & Ajniu6); +assign Llniu6 = (~(Ojniu6 | Tiniu6)); +assign Rgphu6 = (Numiu6 ? Gfniu6 : vis_r0_o[28]); +assign Numiu6 = (Slniu6 & Qkniu6); +assign Qkniu6 = (!Yhniu6); +assign Yhniu6 = (Zlniu6 | Gmniu6); +assign Zlniu6 = (~(HREADY & Nmniu6)); +assign Slniu6 = (Wgniu6 & Jkniu6); +assign Jkniu6 = (~(Ajniu6 | Tiniu6)); +assign Tiniu6 = (~(Umniu6 & Bnniu6)); +assign Bnniu6 = (Inniu6 & Pnniu6); +assign Pnniu6 = (~(S8fpw6[10] & Wnniu6)); +assign Inniu6 = (Doniu6 & Koniu6); +assign Koniu6 = (Roniu6 | Yoniu6); +assign Doniu6 = (Fpniu6 | Mpniu6); +assign Ajniu6 = (~(Tpniu6 & Aqniu6)); +assign Aqniu6 = (Hqniu6 & Oqniu6); +assign Oqniu6 = (Vqniu6 | Mpniu6); +assign Hqniu6 = (~(S8fpw6[8] & Wnniu6)); +assign Tpniu6 = (Crniu6 & Jrniu6); +assign Jrniu6 = (Qrniu6 | Yoniu6); +assign Wgniu6 = (!Ojniu6); +assign Ojniu6 = (~(Umniu6 & Xrniu6)); +assign Xrniu6 = (Esniu6 & Lsniu6); +assign Lsniu6 = (Ssniu6 | Mpniu6); +assign Esniu6 = (Zsniu6 & Gtniu6); +assign Gtniu6 = (~(S8fpw6[11] & Wnniu6)); +assign Zsniu6 = (Ntniu6 | Yoniu6); +assign Umniu6 = (Crniu6 & Utniu6); +assign Crniu6 = (Buniu6 & HREADY); +assign Buniu6 = (Nmniu6 & Iuniu6); +assign Nmniu6 = (~(Puniu6 & Wuniu6)); +assign Wuniu6 = (Dvniu6 & Kvniu6); +assign Kvniu6 = (Rvniu6 & Yvniu6); +assign Yvniu6 = (~(Fwniu6 & Toaiu6)); +assign Fwniu6 = (~(Knaiu6 | Cyfpw6[4])); +assign Rvniu6 = (Mwniu6 & Twniu6); +assign Dvniu6 = (Axniu6 & Hxniu6); +assign Hxniu6 = (~(Oxniu6 & Vxniu6)); +assign Axniu6 = (Cyniu6 & Jyniu6); +assign Jyniu6 = (~(Qyniu6 & Xyniu6)); +assign Xyniu6 = (~(Ezniu6 & Lzniu6)); +assign Lzniu6 = (Szniu6 | Nlaiu6); +assign Cyniu6 = (~(Zzniu6 & Pugiu6)); +assign Puniu6 = (G0oiu6 & N0oiu6); +assign N0oiu6 = (U0oiu6 & B1oiu6); +assign B1oiu6 = (~(Y0jiu6 & Wp0iu6)); +assign U0oiu6 = (I1oiu6 & P1oiu6); +assign P1oiu6 = (~(W1oiu6 & Geaiu6)); +assign W1oiu6 = (~(D2oiu6 & K2oiu6)); +assign K2oiu6 = (~(R2oiu6 & Fd0iu6)); +assign R2oiu6 = (~(Y2oiu6 | Knaiu6)); +assign D2oiu6 = (F3oiu6 & M3oiu6); +assign M3oiu6 = (~(T3oiu6 & Md0iu6)); +assign T3oiu6 = (~(A4oiu6 | Y7ghu6)); +assign F3oiu6 = (~(H4oiu6 & O4oiu6)); +assign I1oiu6 = (~(Imaiu6 & V4oiu6)); +assign V4oiu6 = (~(C5oiu6 & J5oiu6)); +assign J5oiu6 = (Q5oiu6 & X5oiu6); +assign Q5oiu6 = (~(E6oiu6 & Cyfpw6[4])); +assign C5oiu6 = (L6oiu6 & S6oiu6); +assign S6oiu6 = (~(Pthiu6 & Cyfpw6[7])); +assign L6oiu6 = (Tr0iu6 ? G7oiu6 : Z6oiu6); +assign G0oiu6 = (N7oiu6 & U7oiu6); +assign U7oiu6 = (Cyfpw6[6] ? I8oiu6 : B8oiu6); +assign I8oiu6 = (~(P8oiu6 & Zraiu6)); +assign B8oiu6 = (W8oiu6 | D9oiu6); +assign N7oiu6 = (K9oiu6 & R9oiu6); +assign R9oiu6 = (~(Pthiu6 & Mfjiu6)); +assign K9oiu6 = (H4ghu6 ? Faoiu6 : Y9oiu6); +assign Faoiu6 = (Maoiu6 & Taoiu6); +assign Taoiu6 = (~(Whfiu6 & Pthiu6)); +assign Maoiu6 = (Aboiu6 & Hboiu6); +assign Hboiu6 = (~(Oboiu6 & Vboiu6)); +assign Oboiu6 = (~(Ccoiu6 | Qxaiu6)); +assign Aboiu6 = (~(Pugiu6 & Jcoiu6)); +assign Jcoiu6 = (~(Qcoiu6 & Xcoiu6)); +assign Xcoiu6 = (~(Edoiu6 & Ldoiu6)); +assign Edoiu6 = (~(Jcaiu6 | Ii0iu6)); +assign Y9oiu6 = (Sdoiu6 & Zdoiu6); +assign Zdoiu6 = (~(Geoiu6 & Neoiu6)); +assign Sdoiu6 = (Ueoiu6 & Bfoiu6); +assign Bfoiu6 = (~(Ifoiu6 & Pfoiu6)); +assign Ifoiu6 = (~(Wfoiu6 | Y7ghu6)); +assign Ueoiu6 = (~(Dgoiu6 & Fd0iu6)); +assign Dgoiu6 = (~(Ezniu6 | Cyfpw6[4])); +assign Gfniu6 = (~(Acniu6 & Kgoiu6)); +assign Kgphu6 = (Y5liu6 ? Rgoiu6 : vis_apsr_o[3]); +assign Y5liu6 = (HREADY & Ygoiu6); +assign Ygoiu6 = (~(Fhoiu6 & Ug8iu6)); +assign Rgoiu6 = (~(Mhoiu6 & Thoiu6)); +assign Thoiu6 = (~(Ph8iu6 & Aioiu6)); +assign Mhoiu6 = (Hioiu6 & Oioiu6); +assign Oioiu6 = (O7liu6 | Vioiu6); +assign O7liu6 = (!Ug8iu6); +assign Ug8iu6 = (~(Ph8iu6 | Yi8iu6)); +assign Yi8iu6 = (!Cs8iu6); +assign Ph8iu6 = (!Hcniu6); +assign Hcniu6 = (Cjoiu6 & Vr8iu6); +assign Vr8iu6 = (~(Jjoiu6 & Wofiu6)); +assign Cjoiu6 = (~(Jjoiu6 & Qjoiu6)); +assign Hioiu6 = (Cs8iu6 | Ualiu6); +assign Cs8iu6 = (Mjfiu6 | Uzaiu6); +assign Uzaiu6 = (Xjoiu6 & Ekoiu6); +assign Ekoiu6 = (Lkoiu6 & Skoiu6); +assign Skoiu6 = (~(Zkoiu6 & Gloiu6)); +assign Gloiu6 = (~(Nloiu6 | Xe8iu6)); +assign Zkoiu6 = (~(G7oiu6 | Zraiu6)); +assign Lkoiu6 = (Twniu6 & Uloiu6); +assign Xjoiu6 = (Bmoiu6 & Imoiu6); +assign Bmoiu6 = (~(L0niu6 & Tfjiu6)); +assign Dgphu6 = (~(Pmoiu6 & Wmoiu6)); +assign Wmoiu6 = (Dnoiu6 & Knoiu6); +assign Knoiu6 = (~(Ok8iu6 & vis_pc_o[30])); +assign Ok8iu6 = (Rnoiu6 & W8aiu6); +assign Rnoiu6 = (Ynoiu6 & Lm8iu6); +assign Ynoiu6 = (~(Fooiu6 & Lraiu6)); +assign Fooiu6 = (Mooiu6 & Tr0iu6); +assign Mooiu6 = (Ttciu6 | D7fpw6[3]); +assign Dnoiu6 = (Tooiu6 & Apoiu6); +assign Apoiu6 = (~(Jl8iu6 & Ef1iu6)); +assign Jl8iu6 = (Hpoiu6 & Lm8iu6); +assign Hpoiu6 = (~(Y7ghu6 & Opoiu6)); +assign Opoiu6 = (Jojiu6 | Cyfpw6[1]); +assign Tooiu6 = (~(vis_apsr_o[3] & Ql8iu6)); +assign Ql8iu6 = (Vpoiu6 & U19iu6); +assign U19iu6 = (Cqoiu6 & Jqoiu6); +assign Jqoiu6 = (~(Qqoiu6 & Xqoiu6)); +assign Xqoiu6 = (~(V4aiu6 | R2aiu6)); +assign Qqoiu6 = (~(Q5aiu6 | Prjiu6)); +assign Cqoiu6 = (Eroiu6 & Lroiu6); +assign Eroiu6 = (~(Sroiu6 & Zroiu6)); +assign Sroiu6 = (D7fpw6[8] & Nbkiu6); +assign Vpoiu6 = (Frliu6 & Lm8iu6); +assign Frliu6 = (~(Twniu6 & Gsoiu6)); +assign Gsoiu6 = (~(Nsoiu6 & Usoiu6)); +assign Usoiu6 = (Btoiu6 & D7fpw6[3]); +assign Nsoiu6 = (~(Q5aiu6 | Ttciu6)); +assign Pmoiu6 = (Itoiu6 & Ptoiu6); +assign Ptoiu6 = (Lm8iu6 | Wtoiu6); +assign Lm8iu6 = (!W29iu6); +assign W29iu6 = (Duoiu6 & Hx9iu6); +assign Duoiu6 = (~(HREADY & Kuoiu6)); +assign Kuoiu6 = (~(Ruoiu6 & Yuoiu6)); +assign Yuoiu6 = (Fvoiu6 & Mvoiu6); +assign Mvoiu6 = (Tvoiu6 & Awoiu6); +assign Awoiu6 = (~(Hwoiu6 & Ia8iu6)); +assign Hwoiu6 = (Vviiu6 & D7fpw6[12]); +assign Tvoiu6 = (~(Y0jiu6 & Owoiu6)); +assign Fvoiu6 = (Vwoiu6 & Cxoiu6); +assign Cxoiu6 = (Jxoiu6 | Qxoiu6); +assign Vwoiu6 = (~(Xxoiu6 & Zraiu6)); +assign Xxoiu6 = (~(Eyoiu6 & Lyoiu6)); +assign Lyoiu6 = (Syoiu6 & Td0iu6); +assign Syoiu6 = (~(Zyoiu6 & Gzoiu6)); +assign Gzoiu6 = (~(Lraiu6 | Nzoiu6)); +assign Zyoiu6 = (Wliiu6 & Dmiiu6); +assign Eyoiu6 = (Uzoiu6 & B0piu6); +assign B0piu6 = (~(I0piu6 & P0piu6)); +assign I0piu6 = (W0piu6 & D7fpw6[13]); +assign Uzoiu6 = (~(Vxniu6 & D1piu6)); +assign Ruoiu6 = (K1piu6 & R1piu6); +assign R1piu6 = (Y1piu6 & F2piu6); +assign F2piu6 = (~(L0niu6 & M2piu6)); +assign L0niu6 = (T2piu6 & Md0iu6); +assign T2piu6 = (~(A4oiu6 | Mr0iu6)); +assign Y1piu6 = (~(Geoiu6 & Qe8iu6)); +assign K1piu6 = (A3piu6 & F85iu6); +assign A3piu6 = (Cyfpw6[3] ? O3piu6 : H3piu6); +assign O3piu6 = (~(V3piu6 & W8aiu6)); +assign V3piu6 = (C4piu6 & Nlaiu6); +assign C4piu6 = (~(Lraiu6 & J4piu6)); +assign J4piu6 = (~(Q4piu6 & T0hhu6)); +assign Q4piu6 = (X4piu6 & Ftjiu6); +assign X4piu6 = (V4aiu6 | R9aiu6); +assign Itoiu6 = (~(Zm8iu6 & Lm1iu6)); +assign Zm8iu6 = (!Hx9iu6); +assign Hx9iu6 = (~(E5piu6 & HALTED)); +assign E5piu6 = (Ar1iu6 & Npdhu6); +assign Wfphu6 = (L5piu6 | Ln7iu6); +assign L5piu6 = (Zn7iu6 ? T15iu6 : Ppfpw6[16]); +assign Zn7iu6 = (~(A2ciu6 & S5piu6)); +assign S5piu6 = (~(Z5piu6 & G6piu6)); +assign G6piu6 = (~(N6piu6 | C0ehu6)); +assign Z5piu6 = (~(Qqhiu6 | Juzhu6)); +assign A2ciu6 = (!Ln7iu6); +assign Ln7iu6 = (H2ciu6 | Ivfhu6); +assign H2ciu6 = (!Jm7iu6); +assign Jm7iu6 = (Wofiu6 | U6piu6); +assign T15iu6 = (~(Svdpw6 & Vobiu6)); +assign Pfphu6 = (Ex4iu6 | B7piu6); +assign B7piu6 = (Dhgpw6[0] & I7piu6); +assign I7piu6 = (~(Scbiu6 & T24iu6)); +assign Ex4iu6 = (~(P7piu6 & W7piu6)); +assign W7piu6 = (~(D8piu6 & Tu4iu6)); +assign Tu4iu6 = (K8piu6 & R8piu6); +assign R8piu6 = (Y8piu6 & F9piu6); +assign F9piu6 = (M9piu6 & T9piu6); +assign T9piu6 = (Aapiu6 & Asliu6); +assign Aapiu6 = (~(W74iu6 | I74iu6)); +assign M9piu6 = (~(Y84iu6 | R84iu6)); +assign Y8piu6 = (Hapiu6 & Oapiu6); +assign Oapiu6 = (~(T94iu6 | F94iu6)); +assign Hapiu6 = (Lm1iu6 & Rykiu6); +assign K8piu6 = (Vapiu6 & Cbpiu6); +assign Cbpiu6 = (Jbpiu6 & Qbpiu6); +assign Qbpiu6 = (Xbpiu6 & P74iu6); +assign Xbpiu6 = (M94iu6 & Z54iu6); +assign Jbpiu6 = (U64iu6 & B74iu6); +assign Vapiu6 = (Ecpiu6 & Lcpiu6); +assign Lcpiu6 = (G64iu6 & N64iu6); +assign Ecpiu6 = (~(Duhiu6 | Ps4iu6)); +assign D8piu6 = (T24iu6 & O34iu6); +assign P7piu6 = (~(Scpiu6 & Zcpiu6)); +assign Zcpiu6 = (Gdpiu6 & Jehhu6); +assign Gdpiu6 = (Ndpiu6 & Udpiu6); +assign Ndpiu6 = (~(Bepiu6 & Zrhiu6)); +assign Zrhiu6 = (~(LOCKUP | C0ehu6)); +assign Bepiu6 = (Uc5iu6 & Sb5iu6); +assign Uc5iu6 = (~(Iepiu6 & K2aiu6)); +assign Scpiu6 = (Hbhhu6 & HREADY); +assign Ifphu6 = (~(Pepiu6 & Wepiu6)); +assign Wepiu6 = (~(Dfpiu6 & Lx4iu6)); +assign Lx4iu6 = (Kfpiu6 | Rfpiu6); +assign Dfpiu6 = (~(Eh6iu6 & Yfpiu6)); +assign Pepiu6 = (~(Dhgpw6[2] & Yfpiu6)); +assign Yfpiu6 = (~(Scbiu6 & Ud4iu6)); +assign Scbiu6 = (Fgpiu6 & A2nhu6); +assign Bfphu6 = (~(Mgpiu6 & Tgpiu6)); +assign Tgpiu6 = (~(Rfpiu6 & Ahpiu6)); +assign Ahpiu6 = (~(Eh6iu6 & Hhpiu6)); +assign Rfpiu6 = (Ohpiu6 & Yuhhu6); +assign Ohpiu6 = (~(E81iu6 | Vhpiu6)); +assign Vhpiu6 = (Cipiu6 & Jipiu6); +assign Jipiu6 = (~(Qipiu6 & Xipiu6)); +assign Qipiu6 = (Ejpiu6 ? Lwgpw6[0] : Lwgpw6[1]); +assign Cipiu6 = (Ljpiu6 | Ty0iu6); +assign Ty0iu6 = (Lwgpw6[0] | Lwgpw6[1]); +assign E81iu6 = (~(Sjpiu6 & Lwgpw6[2])); +assign Mgpiu6 = (~(Hwmhu6 & Hhpiu6)); +assign Hhpiu6 = (~(Ws4iu6 & Ps4iu6)); +assign Uephu6 = (~(Zjpiu6 & Gkpiu6)); +assign Gkpiu6 = (~(Kfpiu6 & Nkpiu6)); +assign Nkpiu6 = (~(Eh6iu6 & Ukpiu6)); +assign Kfpiu6 = (Blpiu6 & Mekhu6); +assign Blpiu6 = (~(Yx0iu6 | Ilpiu6)); +assign Ilpiu6 = (Plpiu6 & Wlpiu6); +assign Wlpiu6 = (~(Dmpiu6 & Xipiu6)); +assign Xipiu6 = (Kmpiu6 & Rmpiu6); +assign Rmpiu6 = (Z18iu6 | Ympiu6); +assign Kmpiu6 = (~(HMASTER | L18iu6)); +assign Dmpiu6 = (Fnpiu6 ? R2hpw6[1] : R2hpw6[0]); +assign Plpiu6 = (Ljpiu6 | Nv0iu6); +assign Nv0iu6 = (R2hpw6[0] | R2hpw6[1]); +assign Ljpiu6 = (~(Mnpiu6 & Sufpw6[1])); +assign Mnpiu6 = (Sufpw6[0] & K9aiu6); +assign Yx0iu6 = (~(Sjpiu6 & R2hpw6[2])); +assign Sjpiu6 = (E5hhu6 & Jehhu6); +assign Zjpiu6 = (~(Vxmhu6 & Ukpiu6)); +assign Ukpiu6 = (~(Eg7iu6 & Ps4iu6)); +assign Ps4iu6 = (!A2nhu6); +assign Nephu6 = (~(Tnpiu6 & Aopiu6)); +assign Aopiu6 = (Hopiu6 & Oopiu6); +assign Oopiu6 = (~(Tnhpw6[1] & Bo1iu6)); +assign Hopiu6 = (Vopiu6 & Po1iu6); +assign Vopiu6 = (~(Wo1iu6 & Cppiu6)); +assign Cppiu6 = (~(Jppiu6 & Qppiu6)); +assign Qppiu6 = (Xppiu6 & Eqpiu6); +assign Eqpiu6 = (Lqpiu6 & Sqpiu6); +assign Sqpiu6 = (Zqpiu6 & Grpiu6); +assign Grpiu6 = (~(R2hpw6[1] & Eg7iu6)); +assign Zqpiu6 = (~(Dhgpw6[1] & Fgpiu6)); +assign Lqpiu6 = (Nrpiu6 & Urpiu6); +assign Urpiu6 = (~(G4hpw6[1] & Sg7iu6)); +assign Nrpiu6 = (~(Aygpw6[1] & Jf7iu6)); +assign Xppiu6 = (Bspiu6 & Ispiu6); +assign Ispiu6 = (~(Ar1iu6 & Fkfpw6[1])); +assign Bspiu6 = (Pspiu6 & Wspiu6); +assign Wspiu6 = (Duhiu6 | Udpiu6); +assign Pspiu6 = (~(Lwgpw6[1] & Ws4iu6)); +assign Jppiu6 = (Dtpiu6 & Ktpiu6); +assign Ktpiu6 = (Rtpiu6 & Ytpiu6); +assign Ytpiu6 = (Fupiu6 & Mupiu6); +assign Mupiu6 = (~(HRDATA[1] & St1iu6)); +assign Fupiu6 = (~(Zt1iu6 & Pzgpw6[1])); +assign Rtpiu6 = (Tupiu6 & Avpiu6); +assign Avpiu6 = (~(Kw1iu6 & V5hpw6[1])); +assign Tupiu6 = (~(Iv1iu6 & vis_pc_o[0])); +assign Dtpiu6 = (Hvpiu6 & Ovpiu6); +assign Hvpiu6 = (Vvpiu6 & Yw1iu6); +assign Tnpiu6 = (Cwpiu6 & Jwpiu6); +assign Jwpiu6 = (~(Qwpiu6 & Aphpw6[2])); +assign Cwpiu6 = (~(Uthpw6[1] & Sf1iu6)); +assign Gephu6 = (~(Xwpiu6 & Expiu6)); +assign Expiu6 = (~(Uthpw6[2] & Sf1iu6)); +assign Xwpiu6 = (Lxpiu6 & Sxpiu6); +assign Sxpiu6 = (~(Wo1iu6 & Zxpiu6)); +assign Zxpiu6 = (~(Gypiu6 & Nypiu6)); +assign Nypiu6 = (Uypiu6 & Bzpiu6); +assign Bzpiu6 = (Izpiu6 & Pzpiu6); +assign Pzpiu6 = (Wzpiu6 & D0qiu6); +assign D0qiu6 = (~(K0qiu6 & Hbhhu6)); +assign K0qiu6 = (~(Duhiu6 | Zwciu6)); +assign Izpiu6 = (R0qiu6 & Y0qiu6); +assign Y0qiu6 = (~(Eg7iu6 & R2hpw6[2])); +assign R0qiu6 = (F1qiu6 & M1qiu6); +assign M1qiu6 = (~(T1qiu6 & A2qiu6)); +assign T1qiu6 = (X8hpw6[5] ? O2qiu6 : H2qiu6); +assign O2qiu6 = (V2qiu6 | C3qiu6); +assign V2qiu6 = (Dr6iu6 & Vm6iu6); +assign H2qiu6 = (~(J3qiu6 | Dr6iu6)); +assign F1qiu6 = (~(Q3qiu6 & Fl6iu6)); +assign Uypiu6 = (X3qiu6 & E4qiu6); +assign E4qiu6 = (L4qiu6 & S4qiu6); +assign S4qiu6 = (~(Aygpw6[2] & Jf7iu6)); +assign L4qiu6 = (Z4qiu6 & G5qiu6); +assign G5qiu6 = (~(Dhgpw6[2] & Fgpiu6)); +assign Z4qiu6 = (~(G4hpw6[2] & Sg7iu6)); +assign X3qiu6 = (N5qiu6 & U5qiu6); +assign U5qiu6 = (~(Togpw6[2] & Vr1iu6)); +assign N5qiu6 = (~(Ws4iu6 & Lwgpw6[2])); +assign Gypiu6 = (B6qiu6 & I6qiu6); +assign I6qiu6 = (P6qiu6 & W6qiu6); +assign W6qiu6 = (D7qiu6 & K7qiu6); +assign K7qiu6 = (~(HRDATA[2] & St1iu6)); +assign D7qiu6 = (R7qiu6 & Y7qiu6); +assign Y7qiu6 = (~(Gtgpw6[2] & Cs1iu6)); +assign R7qiu6 = (~(Ar1iu6 & Fkfpw6[2])); +assign P6qiu6 = (F8qiu6 & M8qiu6); +assign M8qiu6 = (~(E1hpw6[2] & Zt1iu6)); +assign F8qiu6 = (~(Gqgpw6[2] & Xs1iu6)); +assign B6qiu6 = (T8qiu6 & A9qiu6); +assign A9qiu6 = (H9qiu6 & O9qiu6); +assign O9qiu6 = (~(Iv1iu6 & vis_pc_o[1])); +assign H9qiu6 = (V9qiu6 & Caqiu6); +assign Caqiu6 = (~(Trgpw6[2] & Dw1iu6)); +assign V9qiu6 = (~(K7hpw6[2] & Kw1iu6)); +assign T8qiu6 = (Jaqiu6 & Qaqiu6); +assign Lxpiu6 = (~(Tnhpw6[2] & Bo1iu6)); +assign Zdphu6 = (~(Xaqiu6 & Ebqiu6)); +assign Ebqiu6 = (~(Uthpw6[3] & Sf1iu6)); +assign Xaqiu6 = (Lbqiu6 & Sbqiu6); +assign Sbqiu6 = (~(Wo1iu6 & Zbqiu6)); +assign Zbqiu6 = (~(Gcqiu6 & Ncqiu6)); +assign Ncqiu6 = (Ucqiu6 & Bdqiu6); +assign Bdqiu6 = (Idqiu6 & Pdqiu6); +assign Pdqiu6 = (Wdqiu6 & Deqiu6); +assign Deqiu6 = (~(Dhgpw6[3] & Fgpiu6)); +assign Wdqiu6 = (Keqiu6 & Reqiu6); +assign Keqiu6 = (~(Yeqiu6 & Ffqiu6)); +assign Yeqiu6 = (~(Mfqiu6 | X8hpw6[0])); +assign Idqiu6 = (Tfqiu6 & Agqiu6); +assign Agqiu6 = (~(G4hpw6[3] & Sg7iu6)); +assign Tfqiu6 = (~(Aygpw6[3] & Jf7iu6)); +assign Ucqiu6 = (Hgqiu6 & Ogqiu6); +assign Ogqiu6 = (Vgqiu6 & Chqiu6); +assign Chqiu6 = (~(Togpw6[3] & Vr1iu6)); +assign Vgqiu6 = (Jhqiu6 | Duhiu6); +assign Hgqiu6 = (Qhqiu6 & Xhqiu6); +assign Xhqiu6 = (~(Gtgpw6[3] & Cs1iu6)); +assign Qhqiu6 = (~(Ar1iu6 & Fkfpw6[3])); +assign Gcqiu6 = (Eiqiu6 & Liqiu6); +assign Liqiu6 = (Siqiu6 & Ziqiu6); +assign Ziqiu6 = (Gjqiu6 & Njqiu6); +assign Njqiu6 = (~(Gqgpw6[3] & Xs1iu6)); +assign Gjqiu6 = (Ujqiu6 & Bkqiu6); +assign Bkqiu6 = (~(HRDATA[3] & St1iu6)); +assign Ujqiu6 = (~(E1hpw6[3] & Zt1iu6)); +assign Siqiu6 = (Ikqiu6 & Pkqiu6); +assign Pkqiu6 = (~(Trgpw6[3] & Dw1iu6)); +assign Ikqiu6 = (~(K7hpw6[3] & Kw1iu6)); +assign Eiqiu6 = (Wkqiu6 & Dlqiu6); +assign Dlqiu6 = (Vvpiu6 & Klqiu6); +assign Klqiu6 = (~(Iv1iu6 & vis_pc_o[2])); +assign Vvpiu6 = (~(Rlqiu6 | Ylqiu6)); +assign Rlqiu6 = (X8hpw6[4] ? Q3qiu6 : Fmqiu6); +assign Fmqiu6 = (Mmqiu6 & X8hpw6[1]); +assign Wkqiu6 = (Tmqiu6 & Anqiu6); +assign Lbqiu6 = (~(Tnhpw6[3] & Bo1iu6)); +assign Sdphu6 = (~(Hnqiu6 & Onqiu6)); +assign Onqiu6 = (Vnqiu6 & Coqiu6); +assign Coqiu6 = (~(Wo1iu6 & Joqiu6)); +assign Joqiu6 = (~(Qoqiu6 & Xoqiu6)); +assign Xoqiu6 = (Epqiu6 & Lpqiu6); +assign Lpqiu6 = (Spqiu6 & Zpqiu6); +assign Zpqiu6 = (Gqqiu6 & Nqqiu6); +assign Nqqiu6 = (~(ECOREVNUM[16] & Uqqiu6)); +assign Gqqiu6 = (Brqiu6 & Irqiu6); +assign Brqiu6 = (~(ECOREVNUM[12] & Prqiu6)); +assign Spqiu6 = (Wrqiu6 & Dsqiu6); +assign Dsqiu6 = (~(ECOREVNUM[4] & Ksqiu6)); +assign Wrqiu6 = (~(ECOREVNUM[8] & Rsqiu6)); +assign Epqiu6 = (Ysqiu6 & Ftqiu6); +assign Ftqiu6 = (Mtqiu6 & Ttqiu6); +assign Ttqiu6 = (~(Aygpw6[4] & Jf7iu6)); +assign Mtqiu6 = (Auqiu6 & Huqiu6); +assign Huqiu6 = (~(Dhgpw6[4] & Fgpiu6)); +assign Auqiu6 = (~(G4hpw6[4] & Sg7iu6)); +assign Ysqiu6 = (Ouqiu6 & Vuqiu6); +assign Vuqiu6 = (~(Togpw6[4] & Vr1iu6)); +assign Ouqiu6 = (~(Gtgpw6[4] & Cs1iu6)); +assign Qoqiu6 = (Cvqiu6 & Jvqiu6); +assign Jvqiu6 = (Qvqiu6 & Xvqiu6); +assign Xvqiu6 = (Ewqiu6 & Lwqiu6); +assign Lwqiu6 = (~(E1hpw6[4] & Zt1iu6)); +assign Ewqiu6 = (Swqiu6 & Zwqiu6); +assign Zwqiu6 = (~(Ar1iu6 & Fkfpw6[4])); +assign Swqiu6 = (~(HRDATA[4] & St1iu6)); +assign Qvqiu6 = (Gxqiu6 & Nxqiu6); +assign Nxqiu6 = (~(Gqgpw6[4] & Xs1iu6)); +assign Gxqiu6 = (~(Trgpw6[4] & Dw1iu6)); +assign Cvqiu6 = (Uxqiu6 & Byqiu6); +assign Byqiu6 = (Iyqiu6 & Pyqiu6); +assign Pyqiu6 = (~(Wyqiu6 & Dzqiu6)); +assign Iyqiu6 = (Kzqiu6 & Rzqiu6); +assign Rzqiu6 = (~(K7hpw6[4] & Kw1iu6)); +assign Kzqiu6 = (~(vis_pc_o[3] & Iv1iu6)); +assign Uxqiu6 = (Yzqiu6 & F0riu6); +assign Vnqiu6 = (~(Jshpw6[4] & Bo1iu6)); +assign Hnqiu6 = (M0riu6 & T0riu6); +assign T0riu6 = (~(Qwpiu6 & Cynhu6)); +assign M0riu6 = (~(Uthpw6[4] & Sf1iu6)); +assign Ldphu6 = (~(A1riu6 & H1riu6)); +assign H1riu6 = (O1riu6 & V1riu6); +assign O1riu6 = (~(Wo1iu6 & C2riu6)); +assign C2riu6 = (~(J2riu6 & Q2riu6)); +assign Q2riu6 = (X2riu6 & E3riu6); +assign E3riu6 = (L3riu6 & S3riu6); +assign S3riu6 = (Z3riu6 & G4riu6); +assign G4riu6 = (~(ECOREVNUM[17] & Uqqiu6)); +assign Z3riu6 = (N4riu6 & Irqiu6); +assign Irqiu6 = (!U4riu6); +assign N4riu6 = (~(ECOREVNUM[13] & Prqiu6)); +assign L3riu6 = (B5riu6 & I5riu6); +assign I5riu6 = (~(ECOREVNUM[5] & Ksqiu6)); +assign B5riu6 = (~(ECOREVNUM[9] & Rsqiu6)); +assign X2riu6 = (P5riu6 & W5riu6); +assign W5riu6 = (D6riu6 & K6riu6); +assign K6riu6 = (~(Togpw6[5] & Vr1iu6)); +assign D6riu6 = (~(Gtgpw6[5] & Cs1iu6)); +assign P5riu6 = (R6riu6 & Y6riu6); +assign Y6riu6 = (~(Ar1iu6 & Fkfpw6[5])); +assign R6riu6 = (~(HRDATA[5] & St1iu6)); +assign J2riu6 = (F7riu6 & M7riu6); +assign M7riu6 = (T7riu6 & A8riu6); +assign A8riu6 = (H8riu6 & O8riu6); +assign O8riu6 = (~(E1hpw6[5] & Zt1iu6)); +assign H8riu6 = (~(Gqgpw6[5] & Xs1iu6)); +assign T7riu6 = (V8riu6 & C9riu6); +assign C9riu6 = (~(Trgpw6[5] & Dw1iu6)); +assign V8riu6 = (~(K7hpw6[5] & Kw1iu6)); +assign F7riu6 = (J9riu6 & Q9riu6); +assign Q9riu6 = (F0riu6 & X9riu6); +assign X9riu6 = (~(vis_pc_o[4] & Iv1iu6)); +assign J9riu6 = (Eariu6 & Lariu6); +assign A1riu6 = (Sariu6 & Zariu6); +assign Zariu6 = (~(Jshpw6[5] & Bo1iu6)); +assign Sariu6 = (~(Uthpw6[5] & Sf1iu6)); +assign Edphu6 = (~(Gbriu6 & Nbriu6)); +assign Nbriu6 = (Ubriu6 & Bcriu6); +assign Ubriu6 = (~(Wo1iu6 & Icriu6)); +assign Icriu6 = (~(Pcriu6 & Wcriu6)); +assign Wcriu6 = (Ddriu6 & Kdriu6); +assign Kdriu6 = (Rdriu6 & Ydriu6); +assign Ydriu6 = (Feriu6 & Reqiu6); +assign Feriu6 = (~(U4riu6 | Ve7iu6)); +assign Rdriu6 = (Meriu6 & Teriu6); +assign Teriu6 = (~(ECOREVNUM[14] & Prqiu6)); +assign Meriu6 = (~(ECOREVNUM[18] & Uqqiu6)); +assign Ddriu6 = (Afriu6 & Hfriu6); +assign Hfriu6 = (Ofriu6 & Vfriu6); +assign Vfriu6 = (~(ECOREVNUM[6] & Ksqiu6)); +assign Ofriu6 = (~(ECOREVNUM[10] & Rsqiu6)); +assign Afriu6 = (Cgriu6 & Jgriu6); +assign Jgriu6 = (~(Togpw6[6] & Vr1iu6)); +assign Cgriu6 = (~(Gtgpw6[6] & Cs1iu6)); +assign Pcriu6 = (Qgriu6 & Xgriu6); +assign Xgriu6 = (Ehriu6 & Lhriu6); +assign Lhriu6 = (Shriu6 & Zhriu6); +assign Zhriu6 = (~(E1hpw6[6] & Zt1iu6)); +assign Shriu6 = (Giriu6 & Niriu6); +assign Niriu6 = (~(Ar1iu6 & Fkfpw6[6])); +assign Giriu6 = (~(HRDATA[6] & St1iu6)); +assign Ehriu6 = (Uiriu6 & Bjriu6); +assign Bjriu6 = (~(Gqgpw6[6] & Xs1iu6)); +assign Uiriu6 = (~(Trgpw6[6] & Dw1iu6)); +assign Qgriu6 = (Ijriu6 & Pjriu6); +assign Pjriu6 = (Wjriu6 & Dkriu6); +assign Dkriu6 = (~(K7hpw6[6] & Kw1iu6)); +assign Wjriu6 = (~(vis_pc_o[5] & Iv1iu6)); +assign Ijriu6 = (Kkriu6 & Lariu6); +assign Gbriu6 = (Rkriu6 & Ykriu6); +assign Ykriu6 = (~(Jshpw6[6] & Bo1iu6)); +assign Rkriu6 = (~(Uthpw6[6] & Sf1iu6)); +assign Xcphu6 = (~(Flriu6 & Mlriu6)); +assign Mlriu6 = (~(Uthpw6[7] & Sf1iu6)); +assign Flriu6 = (Tlriu6 & Amriu6); +assign Amriu6 = (~(Wo1iu6 & Hmriu6)); +assign Hmriu6 = (~(Omriu6 & Vmriu6)); +assign Vmriu6 = (Cnriu6 & Jnriu6); +assign Jnriu6 = (Qnriu6 & Xnriu6); +assign Xnriu6 = (Eoriu6 & Loriu6); +assign Loriu6 = (~(ECOREVNUM[15] & Prqiu6)); +assign Prqiu6 = (Soriu6 & A2qiu6); +assign Soriu6 = (Dzqiu6 & Cvciu6); +assign Eoriu6 = (~(ECOREVNUM[19] & Uqqiu6)); +assign Uqqiu6 = (Zoriu6 & Wyqiu6); +assign Zoriu6 = (~(Fl6iu6 | Mfqiu6)); +assign Qnriu6 = (Gpriu6 & Npriu6); +assign Npriu6 = (~(ECOREVNUM[7] & Ksqiu6)); +assign Ksqiu6 = (Upriu6 & A2qiu6); +assign Upriu6 = (Bqriu6 & Cvciu6); +assign Gpriu6 = (~(ECOREVNUM[11] & Rsqiu6)); +assign Rsqiu6 = (Iqriu6 & X8hpw6[4]); +assign Cnriu6 = (Pqriu6 & Wqriu6); +assign Wqriu6 = (Drriu6 & Krriu6); +assign Krriu6 = (~(Togpw6[7] & Vr1iu6)); +assign Drriu6 = (~(Gtgpw6[7] & Cs1iu6)); +assign Pqriu6 = (Rrriu6 & Yrriu6); +assign Yrriu6 = (~(Ar1iu6 & Fkfpw6[7])); +assign Rrriu6 = (~(HRDATA[7] & St1iu6)); +assign Omriu6 = (Fsriu6 & Msriu6); +assign Msriu6 = (Tsriu6 & Atriu6); +assign Atriu6 = (Htriu6 & Otriu6); +assign Otriu6 = (~(E1hpw6[7] & Zt1iu6)); +assign Htriu6 = (~(Gqgpw6[7] & Xs1iu6)); +assign Tsriu6 = (Vtriu6 & Curiu6); +assign Curiu6 = (~(Trgpw6[7] & Dw1iu6)); +assign Vtriu6 = (~(K7hpw6[7] & Kw1iu6)); +assign Fsriu6 = (Juriu6 & Quriu6); +assign Quriu6 = (F0riu6 & Xuriu6); +assign Xuriu6 = (~(vis_pc_o[6] & Iv1iu6)); +assign F0riu6 = (Evriu6 & Lvriu6); +assign Lvriu6 = (Wzpiu6 & Svriu6); +assign Wzpiu6 = (Zvriu6 & Reqiu6); +assign Zvriu6 = (~(Gwriu6 & Wyqiu6)); +assign Gwriu6 = (~(Nwriu6 | X8hpw6[4])); +assign Evriu6 = (Uwriu6 & Bxriu6); +assign Bxriu6 = (~(Ixriu6 & Fl6iu6)); +assign Juriu6 = (Pxriu6 & Lariu6); +assign Lariu6 = (Wxriu6 & Dyriu6); +assign Dyriu6 = (~(Kyriu6 & Ixriu6)); +assign Kyriu6 = (~(Fl6iu6 | Vm6iu6)); +assign Wxriu6 = (~(Ryriu6 & Cvciu6)); +assign Tlriu6 = (~(Jshpw6[7] & Bo1iu6)); +assign Qcphu6 = (~(Yyriu6 & Fzriu6)); +assign Fzriu6 = (~(Uthpw6[8] & Sf1iu6)); +assign Yyriu6 = (Mzriu6 & Tzriu6); +assign Tzriu6 = (~(Wo1iu6 & A0siu6)); +assign A0siu6 = (~(H0siu6 & O0siu6)); +assign O0siu6 = (V0siu6 & C1siu6); +assign C1siu6 = (J1siu6 & Q1siu6); +assign Q1siu6 = (~(Gtgpw6[8] & Cs1iu6)); +assign J1siu6 = (X1siu6 & Reqiu6); +assign X1siu6 = (~(Togpw6[8] & Vr1iu6)); +assign V0siu6 = (E2siu6 & L2siu6); +assign L2siu6 = (~(E1hpw6[8] & Zt1iu6)); +assign E2siu6 = (S2siu6 & Z2siu6); +assign Z2siu6 = (~(Ar1iu6 & Fkfpw6[8])); +assign S2siu6 = (~(HRDATA[8] & St1iu6)); +assign H0siu6 = (G3siu6 & N3siu6); +assign N3siu6 = (U3siu6 & B4siu6); +assign B4siu6 = (~(K7hpw6[8] & Kw1iu6)); +assign U3siu6 = (I4siu6 & P4siu6); +assign P4siu6 = (~(Gqgpw6[8] & Xs1iu6)); +assign I4siu6 = (~(Trgpw6[8] & Dw1iu6)); +assign G3siu6 = (W4siu6 & D5siu6); +assign D5siu6 = (~(vis_pc_o[7] & Iv1iu6)); +assign Mzriu6 = (~(Jshpw6[8] & Bo1iu6)); +assign Jcphu6 = (~(K5siu6 & R5siu6)); +assign R5siu6 = (~(Uthpw6[9] & Sf1iu6)); +assign K5siu6 = (Y5siu6 & F6siu6); +assign F6siu6 = (~(Wo1iu6 & M6siu6)); +assign M6siu6 = (~(T6siu6 & A7siu6)); +assign A7siu6 = (H7siu6 & O7siu6); +assign O7siu6 = (V7siu6 & C8siu6); +assign C8siu6 = (~(Gtgpw6[9] & Cs1iu6)); +assign V7siu6 = (J8siu6 & Reqiu6); +assign J8siu6 = (~(Togpw6[9] & Vr1iu6)); +assign H7siu6 = (Q8siu6 & X8siu6); +assign X8siu6 = (~(E1hpw6[9] & Zt1iu6)); +assign Q8siu6 = (E9siu6 & L9siu6); +assign L9siu6 = (~(Ar1iu6 & Fkfpw6[9])); +assign E9siu6 = (~(HRDATA[9] & St1iu6)); +assign T6siu6 = (S9siu6 & Z9siu6); +assign Z9siu6 = (Gasiu6 & Nasiu6); +assign Nasiu6 = (~(K7hpw6[9] & Kw1iu6)); +assign Gasiu6 = (Uasiu6 & Bbsiu6); +assign Bbsiu6 = (~(Gqgpw6[9] & Xs1iu6)); +assign Uasiu6 = (~(Trgpw6[9] & Dw1iu6)); +assign S9siu6 = (Ibsiu6 & Pbsiu6); +assign Pbsiu6 = (~(vis_pc_o[8] & Iv1iu6)); +assign Y5siu6 = (~(Jshpw6[9] & Bo1iu6)); +assign Ccphu6 = (~(Wbsiu6 & Dcsiu6)); +assign Dcsiu6 = (~(Uthpw6[10] & Sf1iu6)); +assign Wbsiu6 = (Kcsiu6 & Rcsiu6); +assign Rcsiu6 = (~(Wo1iu6 & Ycsiu6)); +assign Ycsiu6 = (~(Fdsiu6 & Mdsiu6)); +assign Mdsiu6 = (Tdsiu6 & Aesiu6); +assign Aesiu6 = (Hesiu6 & Oesiu6); +assign Oesiu6 = (~(Togpw6[10] & Vr1iu6)); +assign Hesiu6 = (Vesiu6 & Reqiu6); +assign Vesiu6 = (~(Yc7iu6 & S3hhu6)); +assign Tdsiu6 = (Cfsiu6 & Jfsiu6); +assign Jfsiu6 = (~(HRDATA[10] & St1iu6)); +assign Cfsiu6 = (Qfsiu6 & Xfsiu6); +assign Xfsiu6 = (~(Gtgpw6[10] & Cs1iu6)); +assign Qfsiu6 = (~(Ar1iu6 & Fkfpw6[10])); +assign Fdsiu6 = (Egsiu6 & Lgsiu6); +assign Lgsiu6 = (Sgsiu6 & Zgsiu6); +assign Zgsiu6 = (~(Trgpw6[10] & Dw1iu6)); +assign Sgsiu6 = (Ghsiu6 & Nhsiu6); +assign Nhsiu6 = (~(E1hpw6[10] & Zt1iu6)); +assign Ghsiu6 = (~(Gqgpw6[10] & Xs1iu6)); +assign Egsiu6 = (Uhsiu6 & Bisiu6); +assign Uhsiu6 = (Iisiu6 & Pisiu6); +assign Pisiu6 = (~(K7hpw6[10] & Kw1iu6)); +assign Iisiu6 = (~(vis_pc_o[9] & Iv1iu6)); +assign Kcsiu6 = (~(Jshpw6[10] & Bo1iu6)); +assign Vbphu6 = (~(Wisiu6 & Djsiu6)); +assign Djsiu6 = (~(Uthpw6[11] & Sf1iu6)); +assign Wisiu6 = (Kjsiu6 & Rjsiu6); +assign Rjsiu6 = (~(Wo1iu6 & Yjsiu6)); +assign Yjsiu6 = (~(Fksiu6 & Mksiu6)); +assign Mksiu6 = (Tksiu6 & Alsiu6); +assign Alsiu6 = (Hlsiu6 & Olsiu6); +assign Olsiu6 = (~(Gtgpw6[11] & Cs1iu6)); +assign Hlsiu6 = (Vlsiu6 & Reqiu6); +assign Vlsiu6 = (~(Togpw6[11] & Vr1iu6)); +assign Tksiu6 = (Cmsiu6 & Jmsiu6); +assign Jmsiu6 = (~(E1hpw6[11] & Zt1iu6)); +assign Cmsiu6 = (Qmsiu6 & Xmsiu6); +assign Xmsiu6 = (~(Ar1iu6 & Fkfpw6[11])); +assign Qmsiu6 = (~(HRDATA[11] & St1iu6)); +assign Fksiu6 = (Ensiu6 & Lnsiu6); +assign Lnsiu6 = (Snsiu6 & Znsiu6); +assign Znsiu6 = (~(K7hpw6[11] & Kw1iu6)); +assign Snsiu6 = (Gosiu6 & Nosiu6); +assign Nosiu6 = (~(Gqgpw6[11] & Xs1iu6)); +assign Gosiu6 = (~(Trgpw6[11] & Dw1iu6)); +assign Ensiu6 = (Uosiu6 & Bpsiu6); +assign Bpsiu6 = (~(vis_pc_o[10] & Iv1iu6)); +assign Kjsiu6 = (~(Jshpw6[11] & Bo1iu6)); +assign Obphu6 = (~(Ipsiu6 & Ppsiu6)); +assign Ppsiu6 = (Wpsiu6 & Po1iu6); +assign Wpsiu6 = (~(Wo1iu6 & Dqsiu6)); +assign Dqsiu6 = (~(Kqsiu6 & Rqsiu6)); +assign Rqsiu6 = (Yqsiu6 & Frsiu6); +assign Frsiu6 = (Mrsiu6 & Trsiu6); +assign Trsiu6 = (~(Gtgpw6[12] & Cs1iu6)); +assign Mrsiu6 = (Assiu6 & Hssiu6); +assign Assiu6 = (~(Togpw6[12] & Vr1iu6)); +assign Yqsiu6 = (Ossiu6 & Vssiu6); +assign Vssiu6 = (~(E1hpw6[12] & Zt1iu6)); +assign Ossiu6 = (Ctsiu6 & Jtsiu6); +assign Jtsiu6 = (~(Ar1iu6 & Fkfpw6[12])); +assign Ctsiu6 = (~(HRDATA[12] & St1iu6)); +assign Kqsiu6 = (Qtsiu6 & Xtsiu6); +assign Xtsiu6 = (Eusiu6 & Lusiu6); +assign Lusiu6 = (~(K7hpw6[12] & Kw1iu6)); +assign Eusiu6 = (Susiu6 & Zusiu6); +assign Zusiu6 = (~(Gqgpw6[12] & Xs1iu6)); +assign Susiu6 = (~(Trgpw6[12] & Dw1iu6)); +assign Qtsiu6 = (Gvsiu6 & Nvsiu6); +assign Gvsiu6 = (Uvsiu6 & Bwsiu6); +assign Bwsiu6 = (~(vis_pc_o[11] & Iv1iu6)); +assign Ipsiu6 = (Iwsiu6 & Pwsiu6); +assign Pwsiu6 = (~(Jshpw6[12] & Bo1iu6)); +assign Iwsiu6 = (~(Uthpw6[12] & Sf1iu6)); +assign Hbphu6 = (~(Wwsiu6 & Dxsiu6)); +assign Dxsiu6 = (Kxsiu6 & Po1iu6); +assign Kxsiu6 = (~(Wo1iu6 & Rxsiu6)); +assign Rxsiu6 = (~(Yxsiu6 & Fysiu6)); +assign Fysiu6 = (Mysiu6 & Tysiu6); +assign Tysiu6 = (Azsiu6 & Hzsiu6); +assign Hzsiu6 = (~(Ar1iu6 & Fkfpw6[13])); +assign Azsiu6 = (Ozsiu6 & Vzsiu6); +assign Vzsiu6 = (~(Togpw6[13] & Vr1iu6)); +assign Ozsiu6 = (~(Gtgpw6[13] & Cs1iu6)); +assign Mysiu6 = (C0tiu6 & J0tiu6); +assign J0tiu6 = (~(Gqgpw6[13] & Xs1iu6)); +assign C0tiu6 = (Q0tiu6 & X0tiu6); +assign X0tiu6 = (~(HRDATA[13] & St1iu6)); +assign Q0tiu6 = (~(E1hpw6[13] & Zt1iu6)); +assign Yxsiu6 = (E1tiu6 & L1tiu6); +assign L1tiu6 = (S1tiu6 & Z1tiu6); +assign Z1tiu6 = (~(vis_pc_o[12] & Iv1iu6)); +assign S1tiu6 = (G2tiu6 & N2tiu6); +assign N2tiu6 = (~(Trgpw6[13] & Dw1iu6)); +assign G2tiu6 = (~(K7hpw6[13] & Kw1iu6)); +assign E1tiu6 = (U2tiu6 & Yw1iu6); +assign Wwsiu6 = (B3tiu6 & I3tiu6); +assign I3tiu6 = (~(Jshpw6[13] & Bo1iu6)); +assign B3tiu6 = (~(Uthpw6[13] & Sf1iu6)); +assign Abphu6 = (~(P3tiu6 & W3tiu6)); +assign W3tiu6 = (D4tiu6 & Po1iu6); +assign D4tiu6 = (~(Wo1iu6 & K4tiu6)); +assign K4tiu6 = (~(R4tiu6 & Y4tiu6)); +assign Y4tiu6 = (F5tiu6 & M5tiu6); +assign M5tiu6 = (T5tiu6 & A6tiu6); +assign A6tiu6 = (~(Ar1iu6 & Fkfpw6[14])); +assign T5tiu6 = (H6tiu6 & O6tiu6); +assign O6tiu6 = (~(Togpw6[14] & Vr1iu6)); +assign H6tiu6 = (~(Gtgpw6[14] & Cs1iu6)); +assign F5tiu6 = (V6tiu6 & C7tiu6); +assign C7tiu6 = (~(Gqgpw6[14] & Xs1iu6)); +assign V6tiu6 = (J7tiu6 & Q7tiu6); +assign Q7tiu6 = (~(HRDATA[14] & St1iu6)); +assign J7tiu6 = (~(E1hpw6[14] & Zt1iu6)); +assign R4tiu6 = (X7tiu6 & E8tiu6); +assign E8tiu6 = (L8tiu6 & S8tiu6); +assign S8tiu6 = (~(vis_pc_o[13] & Iv1iu6)); +assign L8tiu6 = (Z8tiu6 & G9tiu6); +assign G9tiu6 = (~(Trgpw6[14] & Dw1iu6)); +assign Z8tiu6 = (~(K7hpw6[14] & Kw1iu6)); +assign X7tiu6 = (N9tiu6 & Uvsiu6); +assign P3tiu6 = (U9tiu6 & Batiu6); +assign Batiu6 = (~(Jshpw6[14] & Bo1iu6)); +assign U9tiu6 = (~(Uthpw6[14] & Sf1iu6)); +assign Taphu6 = (~(Iatiu6 & Patiu6)); +assign Patiu6 = (Watiu6 & Po1iu6); +assign Watiu6 = (~(Wo1iu6 & Dbtiu6)); +assign Dbtiu6 = (~(Kbtiu6 & Rbtiu6)); +assign Rbtiu6 = (Ybtiu6 & Fctiu6); +assign Fctiu6 = (Mctiu6 & Tctiu6); +assign Tctiu6 = (~(Ar1iu6 & Fkfpw6[15])); +assign Mctiu6 = (Adtiu6 & Hdtiu6); +assign Hdtiu6 = (~(Togpw6[15] & Vr1iu6)); +assign Adtiu6 = (~(Gtgpw6[15] & Cs1iu6)); +assign Ybtiu6 = (Odtiu6 & Vdtiu6); +assign Vdtiu6 = (~(Gqgpw6[15] & Xs1iu6)); +assign Odtiu6 = (Cetiu6 & Jetiu6); +assign Jetiu6 = (~(HRDATA[15] & St1iu6)); +assign Cetiu6 = (~(E1hpw6[15] & Zt1iu6)); +assign Kbtiu6 = (Qetiu6 & Xetiu6); +assign Xetiu6 = (Eftiu6 & Lftiu6); +assign Lftiu6 = (~(vis_pc_o[14] & Iv1iu6)); +assign Eftiu6 = (Sftiu6 & Zftiu6); +assign Zftiu6 = (~(Trgpw6[15] & Dw1iu6)); +assign Sftiu6 = (~(K7hpw6[15] & Kw1iu6)); +assign Qetiu6 = (Ggtiu6 & Uvsiu6); +assign Iatiu6 = (Ngtiu6 & Ugtiu6); +assign Ugtiu6 = (~(Jshpw6[15] & Bo1iu6)); +assign Ngtiu6 = (~(Uthpw6[15] & Sf1iu6)); +assign Maphu6 = (~(Bhtiu6 & Ihtiu6)); +assign Ihtiu6 = (Phtiu6 & Whtiu6); +assign Whtiu6 = (~(Wo1iu6 & Ditiu6)); +assign Ditiu6 = (~(Kitiu6 & Ritiu6)); +assign Ritiu6 = (Yitiu6 & Fjtiu6); +assign Fjtiu6 = (Mjtiu6 & Tjtiu6); +assign Tjtiu6 = (~(Ar1iu6 & Fkfpw6[16])); +assign Mjtiu6 = (Aktiu6 & Hktiu6); +assign Hktiu6 = (~(Togpw6[16] & Vr1iu6)); +assign Aktiu6 = (~(Gtgpw6[16] & Cs1iu6)); +assign Yitiu6 = (Oktiu6 & Vktiu6); +assign Vktiu6 = (~(Gqgpw6[16] & Xs1iu6)); +assign Oktiu6 = (Cltiu6 & Jltiu6); +assign Jltiu6 = (~(HRDATA[16] & St1iu6)); +assign Cltiu6 = (~(E1hpw6[16] & Zt1iu6)); +assign Kitiu6 = (Qltiu6 & Xltiu6); +assign Xltiu6 = (Emtiu6 & Lmtiu6); +assign Lmtiu6 = (~(vis_pc_o[15] & Iv1iu6)); +assign Emtiu6 = (Smtiu6 & Zmtiu6); +assign Zmtiu6 = (~(Trgpw6[16] & Dw1iu6)); +assign Smtiu6 = (~(K7hpw6[16] & Kw1iu6)); +assign Qltiu6 = (Gntiu6 & Nntiu6); +assign Phtiu6 = (~(Jshpw6[16] & Bo1iu6)); +assign Bhtiu6 = (Untiu6 & Botiu6); +assign Botiu6 = (~(Uthpw6[16] & Sf1iu6)); +assign Faphu6 = (~(Iotiu6 & Potiu6)); +assign Potiu6 = (Wotiu6 & Dptiu6); +assign Dptiu6 = (~(Wo1iu6 & Kptiu6)); +assign Kptiu6 = (~(Rptiu6 & Yptiu6)); +assign Yptiu6 = (Fqtiu6 & Mqtiu6); +assign Mqtiu6 = (Tqtiu6 & Artiu6); +assign Artiu6 = (~(Ar1iu6 & Fkfpw6[17])); +assign Tqtiu6 = (Hrtiu6 & Ortiu6); +assign Ortiu6 = (~(Togpw6[17] & Vr1iu6)); +assign Hrtiu6 = (~(Gtgpw6[17] & Cs1iu6)); +assign Fqtiu6 = (Vrtiu6 & Cstiu6); +assign Cstiu6 = (~(Gqgpw6[17] & Xs1iu6)); +assign Vrtiu6 = (Jstiu6 & Qstiu6); +assign Qstiu6 = (~(HRDATA[17] & St1iu6)); +assign Jstiu6 = (~(E1hpw6[17] & Zt1iu6)); +assign Rptiu6 = (Xstiu6 & Ettiu6); +assign Ettiu6 = (Lttiu6 & Sttiu6); +assign Sttiu6 = (~(vis_pc_o[16] & Iv1iu6)); +assign Lttiu6 = (Zttiu6 & Gutiu6); +assign Gutiu6 = (~(Trgpw6[17] & Dw1iu6)); +assign Zttiu6 = (~(K7hpw6[17] & Kw1iu6)); +assign Xstiu6 = (Nutiu6 & Nntiu6); +assign Nntiu6 = (Reqiu6 & Uutiu6); +assign Uutiu6 = (~(HALTED & Bvtiu6)); +assign Wotiu6 = (~(Jshpw6[17] & Bo1iu6)); +assign Iotiu6 = (Untiu6 & Ivtiu6); +assign Ivtiu6 = (~(Uthpw6[17] & Sf1iu6)); +assign Y9phu6 = (~(Pvtiu6 & Wvtiu6)); +assign Wvtiu6 = (Dwtiu6 & Kwtiu6); +assign Kwtiu6 = (~(Wo1iu6 & Rwtiu6)); +assign Rwtiu6 = (~(Ywtiu6 & Fxtiu6)); +assign Fxtiu6 = (Mxtiu6 & Txtiu6); +assign Txtiu6 = (Aytiu6 & Hytiu6); +assign Hytiu6 = (Duhiu6 | Qa5iu6); +assign Aytiu6 = (Oytiu6 & Reqiu6); +assign Oytiu6 = (~(Togpw6[18] & Vr1iu6)); +assign Mxtiu6 = (Vytiu6 & Cztiu6); +assign Cztiu6 = (~(HRDATA[18] & St1iu6)); +assign Vytiu6 = (Jztiu6 & Qztiu6); +assign Qztiu6 = (~(Gtgpw6[18] & Cs1iu6)); +assign Jztiu6 = (~(Ar1iu6 & Fkfpw6[18])); +assign Ywtiu6 = (Xztiu6 & E0uiu6); +assign E0uiu6 = (L0uiu6 & S0uiu6); +assign S0uiu6 = (~(Trgpw6[18] & Dw1iu6)); +assign L0uiu6 = (Z0uiu6 & G1uiu6); +assign G1uiu6 = (~(E1hpw6[18] & Zt1iu6)); +assign Z0uiu6 = (~(Gqgpw6[18] & Xs1iu6)); +assign Xztiu6 = (N1uiu6 & U1uiu6); +assign N1uiu6 = (B2uiu6 & I2uiu6); +assign I2uiu6 = (~(K7hpw6[18] & Kw1iu6)); +assign B2uiu6 = (~(vis_pc_o[17] & Iv1iu6)); +assign Dwtiu6 = (~(Jshpw6[18] & Bo1iu6)); +assign Pvtiu6 = (Untiu6 & P2uiu6); +assign P2uiu6 = (~(Uthpw6[18] & Sf1iu6)); +assign R9phu6 = (~(W2uiu6 & D3uiu6)); +assign D3uiu6 = (K3uiu6 & Po1iu6); +assign K3uiu6 = (~(Wo1iu6 & R3uiu6)); +assign R3uiu6 = (~(Y3uiu6 & F4uiu6)); +assign F4uiu6 = (M4uiu6 & T4uiu6); +assign T4uiu6 = (A5uiu6 & H5uiu6); +assign H5uiu6 = (Duhiu6 | Dp8iu6); +assign A5uiu6 = (O5uiu6 & Reqiu6); +assign O5uiu6 = (~(Togpw6[19] & Vr1iu6)); +assign M4uiu6 = (V5uiu6 & C6uiu6); +assign C6uiu6 = (~(HRDATA[19] & St1iu6)); +assign V5uiu6 = (J6uiu6 & Q6uiu6); +assign Q6uiu6 = (~(Gtgpw6[19] & Cs1iu6)); +assign J6uiu6 = (~(Ar1iu6 & Fkfpw6[19])); +assign Y3uiu6 = (X6uiu6 & E7uiu6); +assign E7uiu6 = (L7uiu6 & S7uiu6); +assign S7uiu6 = (~(Trgpw6[19] & Dw1iu6)); +assign L7uiu6 = (Z7uiu6 & G8uiu6); +assign G8uiu6 = (~(E1hpw6[19] & Zt1iu6)); +assign Z7uiu6 = (~(Gqgpw6[19] & Xs1iu6)); +assign X6uiu6 = (N8uiu6 & U8uiu6); +assign N8uiu6 = (B9uiu6 & I9uiu6); +assign I9uiu6 = (~(K7hpw6[19] & Kw1iu6)); +assign B9uiu6 = (~(vis_pc_o[18] & Iv1iu6)); +assign W2uiu6 = (P9uiu6 & W9uiu6); +assign W9uiu6 = (~(Jshpw6[19] & Bo1iu6)); +assign P9uiu6 = (~(Uthpw6[19] & Sf1iu6)); +assign K9phu6 = (~(Dauiu6 & Kauiu6)); +assign Kauiu6 = (Rauiu6 & V1riu6); +assign Rauiu6 = (~(Wo1iu6 & Yauiu6)); +assign Yauiu6 = (~(Fbuiu6 & Mbuiu6)); +assign Mbuiu6 = (Tbuiu6 & Acuiu6); +assign Acuiu6 = (Hcuiu6 & Ocuiu6); +assign Ocuiu6 = (~(Ar1iu6 & Fkfpw6[20])); +assign Hcuiu6 = (Vcuiu6 & Cduiu6); +assign Cduiu6 = (~(Togpw6[20] & Vr1iu6)); +assign Vcuiu6 = (~(Gtgpw6[20] & Cs1iu6)); +assign Tbuiu6 = (Jduiu6 & Qduiu6); +assign Qduiu6 = (~(Gqgpw6[20] & Xs1iu6)); +assign Jduiu6 = (Xduiu6 & Eeuiu6); +assign Eeuiu6 = (~(HRDATA[20] & St1iu6)); +assign Xduiu6 = (~(E1hpw6[20] & Zt1iu6)); +assign Fbuiu6 = (Leuiu6 & Seuiu6); +assign Seuiu6 = (Zeuiu6 & Gfuiu6); +assign Gfuiu6 = (~(vis_pc_o[19] & Iv1iu6)); +assign Zeuiu6 = (Nfuiu6 & Ufuiu6); +assign Ufuiu6 = (~(Trgpw6[20] & Dw1iu6)); +assign Nfuiu6 = (~(K7hpw6[20] & Kw1iu6)); +assign Leuiu6 = (Bguiu6 & Yw1iu6); +assign Dauiu6 = (Iguiu6 & Pguiu6); +assign Pguiu6 = (~(Jshpw6[20] & Bo1iu6)); +assign Iguiu6 = (~(Uthpw6[20] & Sf1iu6)); +assign D9phu6 = (~(Wguiu6 & Dhuiu6)); +assign Dhuiu6 = (Khuiu6 & V1riu6); +assign Khuiu6 = (~(Wo1iu6 & Rhuiu6)); +assign Rhuiu6 = (~(Yhuiu6 & Fiuiu6)); +assign Fiuiu6 = (Miuiu6 & Tiuiu6); +assign Tiuiu6 = (Ajuiu6 & Hjuiu6); +assign Hjuiu6 = (~(Ar1iu6 & Fkfpw6[21])); +assign Ajuiu6 = (Ojuiu6 & Vjuiu6); +assign Vjuiu6 = (~(Togpw6[21] & Vr1iu6)); +assign Ojuiu6 = (~(Gtgpw6[21] & Cs1iu6)); +assign Miuiu6 = (Ckuiu6 & Jkuiu6); +assign Jkuiu6 = (~(Gqgpw6[21] & Xs1iu6)); +assign Ckuiu6 = (Qkuiu6 & Xkuiu6); +assign Xkuiu6 = (~(HRDATA[21] & St1iu6)); +assign Qkuiu6 = (~(E1hpw6[21] & Zt1iu6)); +assign Yhuiu6 = (Eluiu6 & Lluiu6); +assign Lluiu6 = (Sluiu6 & Zluiu6); +assign Zluiu6 = (~(vis_pc_o[20] & Iv1iu6)); +assign Sluiu6 = (Gmuiu6 & Nmuiu6); +assign Nmuiu6 = (~(Trgpw6[21] & Dw1iu6)); +assign Gmuiu6 = (~(K7hpw6[21] & Kw1iu6)); +assign Eluiu6 = (Umuiu6 & Yw1iu6); +assign Wguiu6 = (Bnuiu6 & Inuiu6); +assign Inuiu6 = (~(Jshpw6[21] & Bo1iu6)); +assign Bnuiu6 = (~(Uthpw6[21] & Sf1iu6)); +assign W8phu6 = (~(Pnuiu6 & Wnuiu6)); +assign Wnuiu6 = (Douiu6 & V1riu6); +assign Douiu6 = (~(Wo1iu6 & Kouiu6)); +assign Kouiu6 = (~(Rouiu6 & Youiu6)); +assign Youiu6 = (Fpuiu6 & Mpuiu6); +assign Mpuiu6 = (Tpuiu6 & Aquiu6); +assign Aquiu6 = (~(Ar1iu6 & Fkfpw6[22])); +assign Tpuiu6 = (Hquiu6 & Oquiu6); +assign Oquiu6 = (~(Togpw6[22] & Vr1iu6)); +assign Hquiu6 = (~(Gtgpw6[22] & Cs1iu6)); +assign Fpuiu6 = (Vquiu6 & Cruiu6); +assign Cruiu6 = (~(Gqgpw6[22] & Xs1iu6)); +assign Vquiu6 = (Jruiu6 & Qruiu6); +assign Qruiu6 = (~(HRDATA[22] & St1iu6)); +assign Jruiu6 = (~(E1hpw6[22] & Zt1iu6)); +assign Rouiu6 = (Xruiu6 & Esuiu6); +assign Esuiu6 = (Lsuiu6 & Ssuiu6); +assign Ssuiu6 = (~(vis_pc_o[21] & Iv1iu6)); +assign Lsuiu6 = (Zsuiu6 & Gtuiu6); +assign Gtuiu6 = (~(Trgpw6[22] & Dw1iu6)); +assign Zsuiu6 = (~(K7hpw6[22] & Kw1iu6)); +assign Xruiu6 = (Ntuiu6 & Yw1iu6); +assign Pnuiu6 = (Utuiu6 & Buuiu6); +assign Buuiu6 = (~(Jshpw6[22] & Bo1iu6)); +assign Utuiu6 = (~(Uthpw6[22] & Sf1iu6)); +assign P8phu6 = (~(Iuuiu6 & Puuiu6)); +assign Puuiu6 = (~(Uthpw6[23] & Sf1iu6)); +assign Iuuiu6 = (Wuuiu6 & Dvuiu6); +assign Dvuiu6 = (~(Wo1iu6 & Kvuiu6)); +assign Kvuiu6 = (~(Rvuiu6 & Yvuiu6)); +assign Yvuiu6 = (Fwuiu6 & Mwuiu6); +assign Mwuiu6 = (Twuiu6 & Axuiu6); +assign Axuiu6 = (~(Ar1iu6 & Fkfpw6[23])); +assign Twuiu6 = (Hxuiu6 & Oxuiu6); +assign Oxuiu6 = (~(Togpw6[23] & Vr1iu6)); +assign Hxuiu6 = (~(Gtgpw6[23] & Cs1iu6)); +assign Fwuiu6 = (Vxuiu6 & Cyuiu6); +assign Cyuiu6 = (~(Gqgpw6[23] & Xs1iu6)); +assign Vxuiu6 = (Jyuiu6 & Qyuiu6); +assign Qyuiu6 = (~(HRDATA[23] & St1iu6)); +assign Jyuiu6 = (~(E1hpw6[23] & Zt1iu6)); +assign Rvuiu6 = (Xyuiu6 & Ezuiu6); +assign Ezuiu6 = (Lzuiu6 & Szuiu6); +assign Szuiu6 = (~(vis_pc_o[22] & Iv1iu6)); +assign Lzuiu6 = (Zzuiu6 & G0viu6); +assign G0viu6 = (~(Trgpw6[23] & Dw1iu6)); +assign Zzuiu6 = (~(K7hpw6[23] & Kw1iu6)); +assign Xyuiu6 = (N0viu6 & Yw1iu6); +assign Wuuiu6 = (~(Jshpw6[23] & Bo1iu6)); +assign I8phu6 = (~(U0viu6 & B1viu6)); +assign B1viu6 = (I1viu6 & Bcriu6); +assign I1viu6 = (~(Wo1iu6 & P1viu6)); +assign P1viu6 = (~(W1viu6 & D2viu6)); +assign D2viu6 = (K2viu6 & R2viu6); +assign R2viu6 = (Y2viu6 & F3viu6); +assign F3viu6 = (M3viu6 & T3viu6); +assign T3viu6 = (~(Vxmhu6 & Eg7iu6)); +assign M3viu6 = (~(Yc7iu6 & E5hhu6)); +assign Y2viu6 = (A4viu6 & H4viu6); +assign H4viu6 = (~(Togpw6[24] & Vr1iu6)); +assign A4viu6 = (~(R6hhu6 & Bvtiu6)); +assign K2viu6 = (O4viu6 & V4viu6); +assign V4viu6 = (C5viu6 & J5viu6); +assign J5viu6 = (~(Hwmhu6 & Ws4iu6)); +assign C5viu6 = (~(Gtgpw6[24] & Cs1iu6)); +assign O4viu6 = (Q5viu6 & X5viu6); +assign X5viu6 = (~(Ar1iu6 & Fkfpw6[24])); +assign Q5viu6 = (~(HRDATA[24] & St1iu6)); +assign W1viu6 = (E6viu6 & L6viu6); +assign L6viu6 = (S6viu6 & Z6viu6); +assign Z6viu6 = (G7viu6 & N7viu6); +assign N7viu6 = (~(E1hpw6[24] & Zt1iu6)); +assign G7viu6 = (~(Gqgpw6[24] & Xs1iu6)); +assign S6viu6 = (U7viu6 & B8viu6); +assign B8viu6 = (~(Trgpw6[24] & Dw1iu6)); +assign U7viu6 = (~(K7hpw6[24] & Kw1iu6)); +assign E6viu6 = (I8viu6 & P8viu6); +assign I8viu6 = (Yw1iu6 & W8viu6); +assign W8viu6 = (~(vis_pc_o[23] & Iv1iu6)); +assign U0viu6 = (D9viu6 & K9viu6); +assign K9viu6 = (~(Jshpw6[24] & Bo1iu6)); +assign D9viu6 = (~(Uthpw6[24] & Sf1iu6)); +assign B8phu6 = (~(R9viu6 & Y9viu6)); +assign Y9viu6 = (Faviu6 & Bcriu6); +assign Bcriu6 = (!Qwpiu6); +assign Faviu6 = (~(Wo1iu6 & Maviu6)); +assign Maviu6 = (~(Taviu6 & Abviu6)); +assign Abviu6 = (Hbviu6 & Obviu6); +assign Obviu6 = (Vbviu6 & Ccviu6); +assign Ccviu6 = (~(Gtgpw6[25] & Cs1iu6)); +assign Vbviu6 = (Jcviu6 & Qcviu6); +assign Qcviu6 = (~(Togpw6[25] & Vr1iu6)); +assign Jcviu6 = (~(D8hhu6 & Bvtiu6)); +assign Hbviu6 = (Xcviu6 & Edviu6); +assign Edviu6 = (~(E1hpw6[25] & Zt1iu6)); +assign Xcviu6 = (Ldviu6 & Sdviu6); +assign Sdviu6 = (~(Ar1iu6 & Fkfpw6[25])); +assign Ldviu6 = (~(HRDATA[25] & St1iu6)); +assign Taviu6 = (Zdviu6 & Geviu6); +assign Geviu6 = (Neviu6 & Ueviu6); +assign Ueviu6 = (~(K7hpw6[25] & Kw1iu6)); +assign Neviu6 = (Bfviu6 & Ifviu6); +assign Ifviu6 = (~(Gqgpw6[25] & Xs1iu6)); +assign Bfviu6 = (~(Trgpw6[25] & Dw1iu6)); +assign Zdviu6 = (Pfviu6 & Wfviu6); +assign Pfviu6 = (Yw1iu6 & Dgviu6); +assign Dgviu6 = (~(vis_pc_o[24] & Iv1iu6)); +assign R9viu6 = (Kgviu6 & Rgviu6); +assign Rgviu6 = (~(Jshpw6[25] & Bo1iu6)); +assign Kgviu6 = (~(Uthpw6[25] & Sf1iu6)); +assign U7phu6 = (~(Ygviu6 & Fhviu6)); +assign Fhviu6 = (Mhviu6 & V1riu6); +assign Mhviu6 = (~(Wo1iu6 & Thviu6)); +assign Thviu6 = (~(Aiviu6 & Hiviu6)); +assign Hiviu6 = (Oiviu6 & Viviu6); +assign Viviu6 = (Cjviu6 & Jjviu6); +assign Jjviu6 = (~(Ar1iu6 & Fkfpw6[26])); +assign Cjviu6 = (Qjviu6 & Xjviu6); +assign Xjviu6 = (~(Togpw6[26] & Vr1iu6)); +assign Qjviu6 = (~(Gtgpw6[26] & Cs1iu6)); +assign Oiviu6 = (Ekviu6 & Lkviu6); +assign Lkviu6 = (~(Gqgpw6[26] & Xs1iu6)); +assign Ekviu6 = (Skviu6 & Zkviu6); +assign Zkviu6 = (~(HRDATA[26] & St1iu6)); +assign Skviu6 = (~(E1hpw6[26] & Zt1iu6)); +assign Aiviu6 = (Glviu6 & Nlviu6); +assign Nlviu6 = (Ulviu6 & Bmviu6); +assign Bmviu6 = (~(vis_pc_o[25] & Iv1iu6)); +assign Ulviu6 = (Imviu6 & Pmviu6); +assign Pmviu6 = (~(Trgpw6[26] & Dw1iu6)); +assign Imviu6 = (~(K7hpw6[26] & Kw1iu6)); +assign Glviu6 = (Wmviu6 & Yw1iu6); +assign Ygviu6 = (Dnviu6 & Knviu6); +assign Knviu6 = (~(Jshpw6[26] & Bo1iu6)); +assign Dnviu6 = (~(Uthpw6[26] & Sf1iu6)); +assign N7phu6 = (~(Rnviu6 & Ynviu6)); +assign Ynviu6 = (~(Uthpw6[27] & Sf1iu6)); +assign Rnviu6 = (Foviu6 & Moviu6); +assign Moviu6 = (~(Wo1iu6 & Toviu6)); +assign Toviu6 = (~(Apviu6 & Hpviu6)); +assign Hpviu6 = (Opviu6 & Vpviu6); +assign Vpviu6 = (Cqviu6 & Jqviu6); +assign Jqviu6 = (~(Ar1iu6 & Fkfpw6[27])); +assign Cqviu6 = (Qqviu6 & Xqviu6); +assign Xqviu6 = (~(Togpw6[27] & Vr1iu6)); +assign Qqviu6 = (~(Gtgpw6[27] & Cs1iu6)); +assign Opviu6 = (Erviu6 & Lrviu6); +assign Lrviu6 = (~(Gqgpw6[27] & Xs1iu6)); +assign Erviu6 = (Srviu6 & Zrviu6); +assign Zrviu6 = (~(HRDATA[27] & St1iu6)); +assign Srviu6 = (~(E1hpw6[27] & Zt1iu6)); +assign Apviu6 = (Gsviu6 & Nsviu6); +assign Nsviu6 = (Usviu6 & Btviu6); +assign Btviu6 = (~(vis_pc_o[26] & Iv1iu6)); +assign Usviu6 = (Itviu6 & Ptviu6); +assign Ptviu6 = (~(Trgpw6[27] & Dw1iu6)); +assign Itviu6 = (~(K7hpw6[27] & Kw1iu6)); +assign Gsviu6 = (Wtviu6 & Yw1iu6); +assign Foviu6 = (~(Jshpw6[27] & Bo1iu6)); +assign G7phu6 = (~(Duviu6 & Kuviu6)); +assign Kuviu6 = (Ruviu6 & Yuviu6); +assign Yuviu6 = (~(Wo1iu6 & Fvviu6)); +assign Fvviu6 = (~(Mvviu6 & Tvviu6)); +assign Tvviu6 = (Awviu6 & Hwviu6); +assign Hwviu6 = (Owviu6 & Vwviu6); +assign Vwviu6 = (~(Ar1iu6 & Fkfpw6[28])); +assign Owviu6 = (Cxviu6 & Jxviu6); +assign Jxviu6 = (~(Togpw6[28] & Vr1iu6)); +assign Cxviu6 = (~(Gtgpw6[28] & Cs1iu6)); +assign Awviu6 = (Qxviu6 & Xxviu6); +assign Xxviu6 = (~(Gqgpw6[28] & Xs1iu6)); +assign Qxviu6 = (Eyviu6 & Lyviu6); +assign Lyviu6 = (~(HRDATA[28] & St1iu6)); +assign Eyviu6 = (~(E1hpw6[28] & Zt1iu6)); +assign Mvviu6 = (Syviu6 & Zyviu6); +assign Zyviu6 = (Gzviu6 & Nzviu6); +assign Nzviu6 = (~(Iv1iu6 & vis_pc_o[27])); +assign Gzviu6 = (Uzviu6 & B0wiu6); +assign B0wiu6 = (~(Trgpw6[28] & Dw1iu6)); +assign Uzviu6 = (~(K7hpw6[28] & Kw1iu6)); +assign Syviu6 = (I0wiu6 & Yw1iu6); +assign Ruviu6 = (~(Jshpw6[28] & Bo1iu6)); +assign Duviu6 = (P0wiu6 & W0wiu6); +assign W0wiu6 = (~(ECOREVNUM[20] & Tx1iu6)); +assign P0wiu6 = (~(Uthpw6[28] & Sf1iu6)); +assign Z6phu6 = (~(D1wiu6 & K1wiu6)); +assign K1wiu6 = (R1wiu6 & Y1wiu6); +assign Y1wiu6 = (~(Jshpw6[29] & Bo1iu6)); +assign R1wiu6 = (F2wiu6 & Po1iu6); +assign F2wiu6 = (~(Wo1iu6 & M2wiu6)); +assign M2wiu6 = (~(T2wiu6 & A3wiu6)); +assign A3wiu6 = (H3wiu6 & O3wiu6); +assign O3wiu6 = (V3wiu6 & C4wiu6); +assign C4wiu6 = (~(J4wiu6 & C3qiu6)); +assign J4wiu6 = (Q4wiu6 & X4wiu6); +assign V3wiu6 = (~(Ar1iu6 & Fkfpw6[29])); +assign H3wiu6 = (E5wiu6 & L5wiu6); +assign L5wiu6 = (~(HRDATA[29] & St1iu6)); +assign E5wiu6 = (~(E1hpw6[29] & Zt1iu6)); +assign T2wiu6 = (S5wiu6 & Z5wiu6); +assign Z5wiu6 = (G6wiu6 & N6wiu6); +assign N6wiu6 = (~(K7hpw6[29] & Kw1iu6)); +assign G6wiu6 = (~(Iv1iu6 & vis_pc_o[28])); +assign S5wiu6 = (U6wiu6 & Yw1iu6); +assign D1wiu6 = (B7wiu6 & I7wiu6); +assign I7wiu6 = (~(ECOREVNUM[21] & Tx1iu6)); +assign B7wiu6 = (~(Uthpw6[29] & Sf1iu6)); +assign S6phu6 = (~(P7wiu6 & W7wiu6)); +assign W7wiu6 = (D8wiu6 & K8wiu6); +assign K8wiu6 = (~(Jshpw6[30] & Bo1iu6)); +assign D8wiu6 = (R8wiu6 & Po1iu6); +assign R8wiu6 = (~(Wo1iu6 & Y8wiu6)); +assign Y8wiu6 = (~(F9wiu6 & M9wiu6)); +assign M9wiu6 = (T9wiu6 & Aawiu6); +assign Aawiu6 = (Hawiu6 & Oawiu6); +assign Oawiu6 = (~(Ar1iu6 & Fkfpw6[30])); +assign Hawiu6 = (Vawiu6 & Cbwiu6); +assign Cbwiu6 = (~(Ligpw6[27] & Vr1iu6)); +assign Vawiu6 = (~(Engpw6[27] & Cs1iu6)); +assign T9wiu6 = (Jbwiu6 & Qbwiu6); +assign Qbwiu6 = (~(Akgpw6[27] & Xs1iu6)); +assign Jbwiu6 = (Xbwiu6 & Ecwiu6); +assign Ecwiu6 = (~(HRDATA[30] & St1iu6)); +assign Xbwiu6 = (~(E1hpw6[30] & Zt1iu6)); +assign F9wiu6 = (Lcwiu6 & Scwiu6); +assign Scwiu6 = (Zcwiu6 & Gdwiu6); +assign Gdwiu6 = (~(Iv1iu6 & vis_pc_o[29])); +assign Zcwiu6 = (Ndwiu6 & Udwiu6); +assign Udwiu6 = (~(Plgpw6[27] & Dw1iu6)); +assign Ndwiu6 = (~(K7hpw6[30] & Kw1iu6)); +assign Lcwiu6 = (Bewiu6 & Yw1iu6); +assign P7wiu6 = (Iewiu6 & Pewiu6); +assign Pewiu6 = (~(ECOREVNUM[22] & Tx1iu6)); +assign Iewiu6 = (~(Uthpw6[30] & Sf1iu6)); +assign L6phu6 = (~(Wewiu6 & Dfwiu6)); +assign Dfwiu6 = (Kfwiu6 & Rfwiu6); +assign Rfwiu6 = (~(Qwpiu6 & Aphpw6[1])); +assign Qwpiu6 = (~(Yfwiu6 | Vo4iu6)); +assign Kfwiu6 = (Fgwiu6 & Mgwiu6); +assign Mgwiu6 = (~(Tnhpw6[0] & Bo1iu6)); +assign Bo1iu6 = (Tgwiu6 & Vo4iu6); +assign Tgwiu6 = (!Yfwiu6); +assign Yfwiu6 = (~(Ahwiu6 & Hhwiu6)); +assign Hhwiu6 = (~(Wu9iu6 | Ho4iu6)); +assign Ahwiu6 = (~(Ohwiu6 | Sf1iu6)); +assign Fgwiu6 = (~(Wo1iu6 & Vhwiu6)); +assign Vhwiu6 = (~(Ciwiu6 & Jiwiu6)); +assign Jiwiu6 = (Qiwiu6 & Xiwiu6); +assign Xiwiu6 = (Ejwiu6 & Ljwiu6); +assign Ljwiu6 = (Sjwiu6 & Zjwiu6); +assign Zjwiu6 = (~(Gkwiu6 & A2qiu6)); +assign Gkwiu6 = (Nkwiu6 & Ukwiu6); +assign Sjwiu6 = (~(Q3qiu6 | U4riu6)); +assign U4riu6 = (Ffqiu6 & C3qiu6); +assign Q3qiu6 = (Blwiu6 & X8hpw6[1]); +assign Blwiu6 = (Nkwiu6 & Ilwiu6); +assign Ejwiu6 = (Plwiu6 & Wlwiu6); +assign Wlwiu6 = (~(G4hpw6[0] & Sg7iu6)); +assign Sg7iu6 = (Dmwiu6 & Q4wiu6); +assign Plwiu6 = (Kmwiu6 & Rmwiu6); +assign Rmwiu6 = (~(R2hpw6[0] & Eg7iu6)); +assign Eg7iu6 = (Vuciu6 & Nkwiu6); +assign Kmwiu6 = (~(Dhgpw6[0] & Fgpiu6)); +assign Fgpiu6 = (Ymwiu6 & Fnwiu6); +assign Ymwiu6 = (Mnwiu6 & Ilwiu6); +assign Qiwiu6 = (Tnwiu6 & Aowiu6); +assign Aowiu6 = (Howiu6 & Oowiu6); +assign Oowiu6 = (~(Kohhu6 & Ve7iu6)); +assign Ve7iu6 = (Vowiu6 & Cpwiu6); +assign Howiu6 = (Jpwiu6 & Qpwiu6); +assign Qpwiu6 = (~(Yc7iu6 & H2hhu6)); +assign Yc7iu6 = (Xpwiu6 & Dzqiu6); +assign Xpwiu6 = (Q4wiu6 & Cvciu6); +assign Jpwiu6 = (~(Aygpw6[0] & Jf7iu6)); +assign Jf7iu6 = (Dmwiu6 & Mnwiu6); +assign Dmwiu6 = (Eqwiu6 & C3qiu6); +assign Tnwiu6 = (Lqwiu6 & Sqwiu6); +assign Sqwiu6 = (~(Lwgpw6[0] & Ws4iu6)); +assign Ws4iu6 = (~(Zqwiu6 | Mfqiu6)); +assign Lqwiu6 = (Grwiu6 & Nrwiu6); +assign Nrwiu6 = (~(Qhhhu6 & Vr1iu6)); +assign Vr1iu6 = (Vuciu6 & Urwiu6); +assign Grwiu6 = (Duhiu6 | Zwciu6); +assign Duhiu6 = (!Bvtiu6); +assign Bvtiu6 = (Fnwiu6 & Vuciu6); +assign Fnwiu6 = (Bswiu6 & Dr6iu6); +assign Ciwiu6 = (Iswiu6 & Pswiu6); +assign Pswiu6 = (Wswiu6 & Dtwiu6); +assign Dtwiu6 = (Ktwiu6 & Rtwiu6); +assign Rtwiu6 = (~(HRDATA[0] & St1iu6)); +assign St1iu6 = (Ytwiu6 & Ur4iu6); +assign Ur4iu6 = (Fuwiu6 & Q4wiu6); +assign Fuwiu6 = (Cvciu6 & Ukwiu6); +assign Ktwiu6 = (Muwiu6 & Tuwiu6); +assign Tuwiu6 = (~(Smhhu6 & Cs1iu6)); +assign Cs1iu6 = (Cpwiu6 & Avwiu6); +assign Muwiu6 = (~(Ar1iu6 & Fkfpw6[0])); +assign Ar1iu6 = (Rzciu6 & D5eiu6); +assign Wswiu6 = (Hvwiu6 & Ovwiu6); +assign Ovwiu6 = (~(Alhhu6 & Dw1iu6)); +assign Dw1iu6 = (Avwiu6 & Urwiu6); +assign Urwiu6 = (Vvwiu6 & X8hpw6[6]); +assign Vvwiu6 = (~(X8hpw6[0] | X8hpw6[5])); +assign Hvwiu6 = (Cwwiu6 & Jwwiu6); +assign Jwwiu6 = (~(Zt1iu6 & Pzgpw6[0])); +assign Zt1iu6 = (Avwiu6 & Nkwiu6); +assign Avwiu6 = (Dzqiu6 & Mnwiu6); +assign Cwwiu6 = (~(Ijhhu6 & Xs1iu6)); +assign Xs1iu6 = (Cpwiu6 & Vuciu6); +assign Vuciu6 = (Mnwiu6 & Ukwiu6); +assign Iswiu6 = (Qwwiu6 & Xwwiu6); +assign Xwwiu6 = (~(Exwiu6 | Ylqiu6)); +assign Ylqiu6 = (~(Lxwiu6 & Sxwiu6)); +assign Sxwiu6 = (~(Zxwiu6 & Ffqiu6)); +assign Zxwiu6 = (Ilwiu6 & Dr6iu6); +assign Lxwiu6 = (~(Gywiu6 & A2qiu6)); +assign Gywiu6 = (Bswiu6 & Nywiu6); +assign Exwiu6 = (~(Yw1iu6 & Uywiu6)); +assign Uywiu6 = (~(Kw1iu6 & V5hpw6[0])); +assign Kw1iu6 = (~(Nwriu6 | Zqwiu6)); +assign Nwriu6 = (!Dzqiu6); +assign Yw1iu6 = (Bzwiu6 & Uvsiu6); +assign Uvsiu6 = (Izwiu6 & Reqiu6); +assign Reqiu6 = (~(Iv1iu6 & Pzwiu6)); +assign Iv1iu6 = (Wzwiu6 & Vowiu6); +assign Vowiu6 = (Q4wiu6 & Ukwiu6); +assign Wzwiu6 = (X8hpw6[0] & Bswiu6); +assign Izwiu6 = (~(D0xiu6 & K0xiu6)); +assign D0xiu6 = (Bqriu6 & Q4wiu6); +assign Bzwiu6 = (R0xiu6 & Hssiu6); +assign Hssiu6 = (~(Y0xiu6 & Mnwiu6)); +assign Mnwiu6 = (~(Fl6iu6 | X8hpw6[1])); +assign Y0xiu6 = (Ilwiu6 & K0xiu6); +assign R0xiu6 = (Zqwiu6 | J3qiu6); +assign J3qiu6 = (!Bqriu6); +assign Zqwiu6 = (~(Nkwiu6 & Q4wiu6)); +assign Qwwiu6 = (F1xiu6 & M1xiu6); +assign F1xiu6 = (Uwriu6 & Qaqiu6); +assign Qaqiu6 = (Anqiu6 & T1xiu6); +assign T1xiu6 = (~(Ffqiu6 & Nywiu6)); +assign Nywiu6 = (!A2xiu6); +assign A2xiu6 = (X8hpw6[0] ? Mfqiu6 : H2xiu6); +assign Mfqiu6 = (!Ukwiu6); +assign Ffqiu6 = (O2xiu6 & X8hpw6[1]); +assign O2xiu6 = (Bswiu6 & Fl6iu6); +assign Anqiu6 = (V2xiu6 & C3xiu6); +assign C3xiu6 = (~(Mmqiu6 & A2qiu6)); +assign Mmqiu6 = (Nkwiu6 & Bqriu6); +assign Nkwiu6 = (J3xiu6 & X8hpw6[0]); +assign J3xiu6 = (~(Zh6iu6 | X8hpw6[5])); +assign V2xiu6 = (~(Bswiu6 & Q3xiu6)); +assign Q3xiu6 = (~(X3xiu6 & E4xiu6)); +assign E4xiu6 = (~(Ryriu6 & Dr6iu6)); +assign Ryriu6 = (A2qiu6 & L4xiu6); +assign L4xiu6 = (Ilwiu6 | Ukwiu6); +assign X3xiu6 = (~(A2qiu6 & C3qiu6)); +assign C3qiu6 = (Dzqiu6 & X8hpw6[0]); +assign A2qiu6 = (X8hpw6[1] & X8hpw6[4]); +assign Bswiu6 = (~(Zh6iu6 | Wj6iu6)); +assign Zh6iu6 = (!X8hpw6[6]); +assign Uwriu6 = (S4xiu6 & Z4xiu6); +assign Z4xiu6 = (~(Fl6iu6 & G5xiu6)); +assign G5xiu6 = (N5xiu6 | Iqriu6); +assign Iqriu6 = (Ixriu6 & Vm6iu6); +assign Ixriu6 = (U5xiu6 & X8hpw6[1]); +assign U5xiu6 = (K0xiu6 & X8hpw6[2]); +assign K0xiu6 = (Eqwiu6 & X8hpw6[0]); +assign Eqwiu6 = (~(Wj6iu6 | X8hpw6[6])); +assign Wj6iu6 = (!X8hpw6[5]); +assign N5xiu6 = (Wyqiu6 & Ukwiu6); +assign Ukwiu6 = (Eo6iu6 & Vm6iu6); +assign Wyqiu6 = (B6xiu6 & X8hpw6[1]); +assign B6xiu6 = (X8hpw6[0] & X4wiu6); +assign S4xiu6 = (Svriu6 | H2xiu6); +assign H2xiu6 = (~(Bqriu6 | Dzqiu6)); +assign Dzqiu6 = (X8hpw6[3] & Eo6iu6); +assign Eo6iu6 = (!X8hpw6[2]); +assign Bqriu6 = (X8hpw6[3] & X8hpw6[2]); +assign Svriu6 = (~(I6xiu6 & X8hpw6[1])); +assign I6xiu6 = (Cvciu6 & Fl6iu6); +assign Fl6iu6 = (!X8hpw6[4]); +assign Cvciu6 = (X4wiu6 & Dr6iu6); +assign Dr6iu6 = (!X8hpw6[0]); +assign X4wiu6 = (~(X8hpw6[5] | X8hpw6[6])); +assign Wo1iu6 = (P6xiu6 & W6xiu6); +assign P6xiu6 = (D7xiu6 & K7xiu6); +assign K7xiu6 = (~(R7xiu6 & Y7xiu6)); +assign Y7xiu6 = (Xp4iu6 | C44iu6); +assign D7xiu6 = (!Sf1iu6); +assign Wewiu6 = (Untiu6 & F8xiu6); +assign F8xiu6 = (~(Uthpw6[0] & Sf1iu6)); +assign Untiu6 = (V1riu6 & Po1iu6); +assign Po1iu6 = (~(M8xiu6 & C44iu6)); +assign V1riu6 = (!Tx1iu6); +assign Tx1iu6 = (M8xiu6 & Vo4iu6); +assign M8xiu6 = (T8xiu6 & A9xiu6); +assign A9xiu6 = (~(R7xiu6 | W6xiu6)); +assign W6xiu6 = (!Ohwiu6); +assign Ohwiu6 = (~(Sq4iu6 & H9xiu6)); +assign R7xiu6 = (!Ho4iu6); +assign T8xiu6 = (~(Sf1iu6 | Xp4iu6)); +assign Xp4iu6 = (!Wu9iu6); +assign Sf1iu6 = (O9xiu6 | Npzhu6); +assign Npzhu6 = (!Sqhpw6[1]); +assign O9xiu6 = (Sqhpw6[0] ? V9xiu6 : Fszhu6); +assign V9xiu6 = (Wqzhu6 | Pqzhu6); +assign Pqzhu6 = (Caxiu6 & Wu9iu6); +assign Wu9iu6 = (Cjhpw6[1] & Iqzhu6); +assign Caxiu6 = (~(C44iu6 | Eq4iu6)); +assign C44iu6 = (!Vo4iu6); +assign Vo4iu6 = (Cjhpw6[0] & Iqzhu6); +assign Fszhu6 = (!Drzhu6); +assign Drzhu6 = (HREADY & Jaxiu6); +assign Jaxiu6 = (~(Qaxiu6 & Xaxiu6)); +assign Xaxiu6 = (~(HMASTER & Ebxiu6)); +assign J5phu6 = (Fk7iu6 & Lbxiu6); +assign Lbxiu6 = (~(Sbxiu6 & Zbxiu6)); +assign Zbxiu6 = (~(Xudpw6 & IRQ[0])); +assign Sbxiu6 = (Gcxiu6 & Yj7iu6); +assign Yj7iu6 = (~(Kwfiu6 & HWDATA[0])); +assign Gcxiu6 = (~(Odgpw6[0] & Ncxiu6)); +assign Ncxiu6 = (~(K66iu6 & HWDATA[0])); +assign Fk7iu6 = (Sb5iu6 | Ucxiu6); +assign C5phu6 = (Dogiu6 & Bdxiu6); +assign Bdxiu6 = (~(Idxiu6 & Pdxiu6)); +assign Pdxiu6 = (~(Fsdpw6 & IRQ[1])); +assign Idxiu6 = (Wdxiu6 & Wngiu6); +assign Wngiu6 = (~(Kwfiu6 & I4eiu6)); +assign Wdxiu6 = (~(Odgpw6[1] & Dexiu6)); +assign Dexiu6 = (~(K66iu6 & I4eiu6)); +assign I4eiu6 = (Npdhu6 & HWDATA[1]); +assign Dogiu6 = (Sb5iu6 | Kexiu6); +assign Kexiu6 = (!Yogiu6); +assign V4phu6 = (Zlgiu6 & Rexiu6); +assign Rexiu6 = (~(Yexiu6 & Ffxiu6)); +assign Ffxiu6 = (~(Eodpw6 & IRQ[2])); +assign Yexiu6 = (Mfxiu6 & Slgiu6); +assign Slgiu6 = (~(G3eiu6 & Kwfiu6)); +assign Mfxiu6 = (~(Odgpw6[2] & Tfxiu6)); +assign Tfxiu6 = (~(G3eiu6 & K66iu6)); +assign Zlgiu6 = (Sb5iu6 | Agxiu6); +assign O4phu6 = (Xefiu6 & Hgxiu6); +assign Hgxiu6 = (~(Ogxiu6 & Vgxiu6)); +assign Vgxiu6 = (~(Jndpw6 & IRQ[3])); +assign Ogxiu6 = (Chxiu6 & Qefiu6); +assign Qefiu6 = (~(Kwfiu6 & HWDATA[3])); +assign Chxiu6 = (~(Odgpw6[3] & Jhxiu6)); +assign Jhxiu6 = (~(K66iu6 & HWDATA[3])); +assign Xefiu6 = (Sb5iu6 | Qhxiu6); +assign H4phu6 = (Tcfiu6 & Xhxiu6); +assign Xhxiu6 = (~(Eixiu6 & Lixiu6)); +assign Lixiu6 = (~(Qndpw6 & IRQ[4])); +assign Eixiu6 = (Sixiu6 & Mcfiu6); +assign Mcfiu6 = (~(Kwfiu6 & HWDATA[4])); +assign Sixiu6 = (~(Odgpw6[4] & Zixiu6)); +assign Zixiu6 = (~(K66iu6 & HWDATA[4])); +assign Tcfiu6 = (Sb5iu6 | Gjxiu6); +assign Gjxiu6 = (!Odfiu6); +assign A4phu6 = (Pafiu6 & Njxiu6); +assign Njxiu6 = (~(Ujxiu6 & Bkxiu6)); +assign Bkxiu6 = (~(Gpdpw6 & IRQ[5])); +assign Ujxiu6 = (Ikxiu6 & Iafiu6); +assign Iafiu6 = (~(Kwfiu6 & HWDATA[5])); +assign Ikxiu6 = (~(Odgpw6[5] & Pkxiu6)); +assign Pkxiu6 = (~(K66iu6 & HWDATA[5])); +assign Pafiu6 = (Sb5iu6 | Wkxiu6); +assign T3phu6 = (L8fiu6 & Dlxiu6); +assign Dlxiu6 = (~(Klxiu6 & Rlxiu6)); +assign Rlxiu6 = (~(Lodpw6 & IRQ[6])); +assign Klxiu6 = (Ylxiu6 & E8fiu6); +assign E8fiu6 = (~(Kwfiu6 & HWDATA[6])); +assign Ylxiu6 = (~(Odgpw6[6] & Fmxiu6)); +assign Fmxiu6 = (~(K66iu6 & HWDATA[6])); +assign L8fiu6 = (Sb5iu6 | Mmxiu6); +assign M3phu6 = (H6fiu6 & Tmxiu6); +assign Tmxiu6 = (~(Anxiu6 & Hnxiu6)); +assign Hnxiu6 = (~(Zodpw6 & IRQ[7])); +assign Anxiu6 = (Onxiu6 & A6fiu6); +assign A6fiu6 = (~(Kwfiu6 & HWDATA[7])); +assign Onxiu6 = (~(Odgpw6[7] & Vnxiu6)); +assign Vnxiu6 = (~(K66iu6 & HWDATA[7])); +assign H6fiu6 = (Sb5iu6 | Coxiu6); +assign F3phu6 = (Mbgiu6 & Joxiu6); +assign Joxiu6 = (~(Qoxiu6 & Xoxiu6)); +assign Xoxiu6 = (~(Judpw6 & IRQ[10])); +assign Qoxiu6 = (Epxiu6 & Fbgiu6); +assign Fbgiu6 = (~(Kwfiu6 & HWDATA[10])); +assign Epxiu6 = (~(Odgpw6[10] & Lpxiu6)); +assign Lpxiu6 = (~(K66iu6 & HWDATA[10])); +assign Mbgiu6 = (Sb5iu6 | Spxiu6); +assign Y2phu6 = (I9giu6 & Zpxiu6); +assign Zpxiu6 = (~(Gqxiu6 & Nqxiu6)); +assign Nqxiu6 = (~(Cudpw6 & IRQ[11])); +assign Gqxiu6 = (Uqxiu6 & B9giu6); +assign B9giu6 = (~(Kwfiu6 & HWDATA[11])); +assign Uqxiu6 = (~(Odgpw6[11] & Brxiu6)); +assign Brxiu6 = (~(K66iu6 & HWDATA[11])); +assign I9giu6 = (Sb5iu6 | Irxiu6); +assign R2phu6 = (E7giu6 & Prxiu6); +assign Prxiu6 = (~(Wrxiu6 & Dsxiu6)); +assign Dsxiu6 = (~(Qudpw6 & IRQ[12])); +assign Wrxiu6 = (Ksxiu6 & X6giu6); +assign X6giu6 = (~(Kwfiu6 & HWDATA[12])); +assign Ksxiu6 = (~(Odgpw6[12] & Rsxiu6)); +assign Rsxiu6 = (~(K66iu6 & HWDATA[12])); +assign E7giu6 = (Sb5iu6 | Ysxiu6); +assign K2phu6 = (A5giu6 & Ftxiu6); +assign Ftxiu6 = (~(Mtxiu6 & Ttxiu6)); +assign Ttxiu6 = (~(Vtdpw6 & IRQ[13])); +assign Mtxiu6 = (Auxiu6 & T4giu6); +assign T4giu6 = (~(Kwfiu6 & HWDATA[13])); +assign Auxiu6 = (~(Odgpw6[13] & Huxiu6)); +assign Huxiu6 = (~(K66iu6 & HWDATA[13])); +assign A5giu6 = (Sb5iu6 | Ouxiu6); +assign D2phu6 = (W2giu6 & Vuxiu6); +assign Vuxiu6 = (~(Cvxiu6 & Jvxiu6)); +assign Jvxiu6 = (~(Otdpw6 & IRQ[14])); +assign Cvxiu6 = (Qvxiu6 & P2giu6); +assign P2giu6 = (~(Kwfiu6 & HWDATA[14])); +assign Qvxiu6 = (~(Odgpw6[14] & Xvxiu6)); +assign Xvxiu6 = (~(K66iu6 & HWDATA[14])); +assign W2giu6 = (~(Clfiu6 & R3giu6)); +assign W1phu6 = (S0giu6 & Ewxiu6); +assign Ewxiu6 = (~(Lwxiu6 & Swxiu6)); +assign Swxiu6 = (~(Lvdpw6 & IRQ[15])); +assign Lwxiu6 = (Zwxiu6 & L0giu6); +assign L0giu6 = (~(Fsdiu6 & Kwfiu6)); +assign Zwxiu6 = (~(Odgpw6[15] & Gxxiu6)); +assign Gxxiu6 = (~(Fsdiu6 & K66iu6)); +assign Fsdiu6 = (Npdhu6 & HWDATA[15]); +assign S0giu6 = (Sb5iu6 | Nxxiu6); +assign P1phu6 = (Mvhiu6 & Uxxiu6); +assign Uxxiu6 = (~(Byxiu6 & Iyxiu6)); +assign Iyxiu6 = (~(Atdpw6 & IRQ[16])); +assign Byxiu6 = (Pyxiu6 & Fvhiu6); +assign Fvhiu6 = (~(Kwfiu6 & HWDATA[16])); +assign Pyxiu6 = (~(Odgpw6[16] & Wyxiu6)); +assign Wyxiu6 = (~(K66iu6 & HWDATA[16])); +assign Mvhiu6 = (~(Clfiu6 & Hwhiu6)); +assign I1phu6 = (Npdiu6 & Dzxiu6); +assign Dzxiu6 = (~(Kzxiu6 & Rzxiu6)); +assign Rzxiu6 = (~(Htdpw6 & IRQ[17])); +assign Kzxiu6 = (Yzxiu6 & Gpdiu6); +assign Gpdiu6 = (~(Kwfiu6 & HWDATA[17])); +assign Yzxiu6 = (~(Odgpw6[17] & F0yiu6)); +assign F0yiu6 = (~(K66iu6 & HWDATA[17])); +assign Npdiu6 = (Sb5iu6 | M0yiu6); +assign B1phu6 = (Omdiu6 & T0yiu6); +assign T0yiu6 = (~(A1yiu6 & H1yiu6)); +assign H1yiu6 = (~(Tsdpw6 & IRQ[18])); +assign A1yiu6 = (O1yiu6 & Hmdiu6); +assign Hmdiu6 = (~(Kwfiu6 & HWDATA[18])); +assign O1yiu6 = (~(Odgpw6[18] & V1yiu6)); +assign V1yiu6 = (~(K66iu6 & HWDATA[18])); +assign Omdiu6 = (Sb5iu6 | C2yiu6); +assign U0phu6 = (Pjdiu6 & J2yiu6); +assign J2yiu6 = (~(Q2yiu6 & X2yiu6)); +assign X2yiu6 = (~(Msdpw6 & IRQ[19])); +assign Q2yiu6 = (E3yiu6 & Ijdiu6); +assign Ijdiu6 = (~(Kwfiu6 & HWDATA[19])); +assign E3yiu6 = (~(Odgpw6[19] & L3yiu6)); +assign L3yiu6 = (~(K66iu6 & HWDATA[19])); +assign Pjdiu6 = (Sb5iu6 | S3yiu6); +assign N0phu6 = (Qgdiu6 & Z3yiu6); +assign Z3yiu6 = (~(G4yiu6 & N4yiu6)); +assign N4yiu6 = (~(Yrdpw6 & IRQ[20])); +assign G4yiu6 = (U4yiu6 & Jgdiu6); +assign Jgdiu6 = (~(Kwfiu6 & HWDATA[20])); +assign U4yiu6 = (~(Odgpw6[20] & B5yiu6)); +assign B5yiu6 = (~(K66iu6 & HWDATA[20])); +assign Qgdiu6 = (Sb5iu6 | I5yiu6); +assign I5yiu6 = (!Lhdiu6); +assign G0phu6 = (Rddiu6 & P5yiu6); +assign P5yiu6 = (~(W5yiu6 & D6yiu6)); +assign D6yiu6 = (~(Rrdpw6 & IRQ[21])); +assign W5yiu6 = (K6yiu6 & Kddiu6); +assign Kddiu6 = (~(Kwfiu6 & HWDATA[21])); +assign K6yiu6 = (~(Odgpw6[21] & R6yiu6)); +assign R6yiu6 = (~(K66iu6 & HWDATA[21])); +assign Rddiu6 = (Sb5iu6 | Y6yiu6); +assign Zzohu6 = (Sadiu6 & F7yiu6); +assign F7yiu6 = (~(M7yiu6 & T7yiu6)); +assign T7yiu6 = (~(Xndpw6 & IRQ[22])); +assign M7yiu6 = (A8yiu6 & Ladiu6); +assign Ladiu6 = (~(Kwfiu6 & HWDATA[22])); +assign A8yiu6 = (~(Odgpw6[22] & H8yiu6)); +assign H8yiu6 = (~(K66iu6 & HWDATA[22])); +assign Sadiu6 = (Sb5iu6 | O8yiu6); +assign Szohu6 = (T7diu6 & V8yiu6); +assign V8yiu6 = (~(C9yiu6 & J9yiu6)); +assign J9yiu6 = (~(Drdpw6 & IRQ[23])); +assign C9yiu6 = (Q9yiu6 & M7diu6); +assign M7diu6 = (~(Kwfiu6 & HWDATA[23])); +assign Q9yiu6 = (~(Odgpw6[23] & X9yiu6)); +assign X9yiu6 = (~(K66iu6 & HWDATA[23])); +assign T7diu6 = (Sb5iu6 | Eayiu6); +assign Lzohu6 = (Nufiu6 & Layiu6); +assign Layiu6 = (~(Sayiu6 & Zayiu6)); +assign Zayiu6 = (~(Pqdpw6 & IRQ[26])); +assign Sayiu6 = (Gbyiu6 & Gufiu6); +assign Gufiu6 = (~(Kwfiu6 & HWDATA[26])); +assign Gbyiu6 = (~(Odgpw6[26] & Nbyiu6)); +assign Nbyiu6 = (~(K66iu6 & HWDATA[26])); +assign Nufiu6 = (Sb5iu6 | Ubyiu6); +assign Ezohu6 = (Jsfiu6 & Bcyiu6); +assign Bcyiu6 = (~(Icyiu6 & Pcyiu6)); +assign Pcyiu6 = (~(Iqdpw6 & IRQ[27])); +assign Icyiu6 = (Wcyiu6 & Csfiu6); +assign Csfiu6 = (~(Kwfiu6 & HWDATA[27])); +assign Wcyiu6 = (~(Odgpw6[27] & Ddyiu6)); +assign Ddyiu6 = (~(K66iu6 & HWDATA[27])); +assign Jsfiu6 = (Sb5iu6 | Kdyiu6); +assign Xyohu6 = (Fqfiu6 & Rdyiu6); +assign Rdyiu6 = (~(Ydyiu6 & Feyiu6)); +assign Feyiu6 = (~(Bqdpw6 & IRQ[28])); +assign Ydyiu6 = (Meyiu6 & Ypfiu6); +assign Ypfiu6 = (~(Kwfiu6 & HWDATA[28])); +assign Meyiu6 = (~(Odgpw6[28] & Teyiu6)); +assign Teyiu6 = (~(K66iu6 & HWDATA[28])); +assign Fqfiu6 = (Sb5iu6 | Afyiu6); +assign Qyohu6 = (Fgbiu6 & Hfyiu6); +assign Hfyiu6 = (~(Ofyiu6 & Vfyiu6)); +assign Vfyiu6 = (~(Updpw6 & IRQ[29])); +assign Ofyiu6 = (Cgyiu6 & Yfbiu6); +assign Yfbiu6 = (~(Kwfiu6 & HWDATA[29])); +assign Cgyiu6 = (~(Odgpw6[29] & Jgyiu6)); +assign Jgyiu6 = (~(K66iu6 & HWDATA[29])); +assign Fgbiu6 = (Sb5iu6 | Qgyiu6); +assign Jyohu6 = (Qxhiu6 & Xgyiu6); +assign Xgyiu6 = (~(Ehyiu6 & Lhyiu6)); +assign Lhyiu6 = (~(Zvdpw6 & IRQ[30])); +assign Ehyiu6 = (Shyiu6 & Jxhiu6); +assign Jxhiu6 = (~(Kwfiu6 & HWDATA[30])); +assign Shyiu6 = (~(Odgpw6[30] & Zhyiu6)); +assign Zhyiu6 = (~(K66iu6 & HWDATA[30])); +assign Qxhiu6 = (Sb5iu6 | Giyiu6); +assign Cyohu6 = (Bebiu6 & Niyiu6); +assign Niyiu6 = (~(Uiyiu6 & Bjyiu6)); +assign Bjyiu6 = (~(Npdpw6 & IRQ[31])); +assign Uiyiu6 = (Ijyiu6 & Udbiu6); +assign Udbiu6 = (~(Kwfiu6 & HWDATA[31])); +assign Kwfiu6 = (Pjyiu6 & Yzciu6); +assign Yzciu6 = (Wjyiu6 & Npdhu6); +assign Ijyiu6 = (~(Odgpw6[31] & Dkyiu6)); +assign Dkyiu6 = (~(K66iu6 & HWDATA[31])); +assign K66iu6 = (Kkyiu6 & D5eiu6); +assign Kkyiu6 = (Pjyiu6 & Npdhu6); +assign Bebiu6 = (~(Clfiu6 & Webiu6)); +assign Clfiu6 = (!Sb5iu6); +assign Sb5iu6 = (~(Rkyiu6 & Ykyiu6)); +assign Ykyiu6 = (~(Xe8iu6 | Ae0iu6)); +assign Rkyiu6 = (~(G7oiu6 | Nloiu6)); +assign Vxohu6 = (O25iu6 ? X3fpw6[3] : Flyiu6); +assign Flyiu6 = (~(Mlyiu6 & Tlyiu6)); +assign Tlyiu6 = (Amyiu6 & Hmyiu6); +assign Hmyiu6 = (~(Omyiu6 & S8fpw6[11])); +assign Amyiu6 = (Vmyiu6 & Cnyiu6); +assign Cnyiu6 = (~(Jnyiu6 & D7fpw6[10])); +assign Jnyiu6 = (D7fpw6[6] & Qnyiu6); +assign Qnyiu6 = (Xiiiu6 | Mtjiu6); +assign Vmyiu6 = (~(L45iu6 & Xnyiu6)); +assign Xnyiu6 = (Eoyiu6 | Loyiu6); +assign Loyiu6 = (Soyiu6 & N55iu6); +assign Soyiu6 = (~(K9aiu6 | Zoyiu6)); +assign Mlyiu6 = (Gpyiu6 & Npyiu6); +assign Npyiu6 = (~(A95iu6 & D7fpw6[3])); +assign Oxohu6 = (Upyiu6 & Bqyiu6); +assign Bqyiu6 = (~(Iqyiu6 & Pqyiu6)); +assign Pqyiu6 = (Wqyiu6 & Dryiu6); +assign Dryiu6 = (Kryiu6 & Rryiu6); +assign Rryiu6 = (Yryiu6 & O4aiu6); +assign Kryiu6 = (Fsyiu6 & Uloiu6); +assign Fsyiu6 = (~(Msyiu6 & Y0jiu6)); +assign Msyiu6 = (~(Sijiu6 | Cyfpw6[3])); +assign Wqyiu6 = (Tsyiu6 & Atyiu6); +assign Atyiu6 = (~(Htyiu6 & Otyiu6)); +assign Otyiu6 = (~(Vtyiu6 & Cuyiu6)); +assign Cuyiu6 = (~(Juyiu6 & Quyiu6)); +assign Juyiu6 = (Xuyiu6 & A95iu6); +assign Vtyiu6 = (~(Evyiu6 | P0piu6)); +assign Tsyiu6 = (Lvyiu6 & Svyiu6); +assign Svyiu6 = (~(Zvyiu6 & Ae0iu6)); +assign Zvyiu6 = (D6kiu6 & Gwyiu6); +assign Lvyiu6 = (~(W8aiu6 & Nwyiu6)); +assign Nwyiu6 = (~(Uwyiu6 & Bxyiu6)); +assign Bxyiu6 = (~(Ixyiu6 & Cyfpw6[7])); +assign Ixyiu6 = (Cyfpw6[5] & Pxyiu6); +assign Uwyiu6 = (Lkaiu6 | Wxyiu6); +assign Iqyiu6 = (Dyyiu6 & Kyyiu6); +assign Kyyiu6 = (Ryyiu6 & Yyyiu6); +assign Yyyiu6 = (Fzyiu6 & Mzyiu6); +assign Mzyiu6 = (~(Tzyiu6 & Geaiu6)); +assign Tzyiu6 = (~(A0ziu6 & H0ziu6)); +assign H0ziu6 = (O0ziu6 & V0ziu6); +assign V0ziu6 = (~(C1ziu6 & J1ziu6)); +assign C1ziu6 = (~(Q1ziu6 | X1ziu6)); +assign O0ziu6 = (E2ziu6 & Gjjiu6); +assign Gjjiu6 = (~(L2ziu6 & S2ziu6)); +assign L2ziu6 = (L45iu6 & K9aiu6); +assign A0ziu6 = (Z2ziu6 & G3ziu6); +assign G3ziu6 = (~(U4kiu6 & N3ziu6)); +assign Z2ziu6 = (~(D1piu6 & Xzmiu6)); +assign Fzyiu6 = (~(Imaiu6 & U3ziu6)); +assign U3ziu6 = (~(B4ziu6 & I4ziu6)); +assign I4ziu6 = (~(W0piu6 & P4ziu6)); +assign P4ziu6 = (~(W4ziu6 & D5ziu6)); +assign D5ziu6 = (~(K5ziu6 & R5ziu6)); +assign R5ziu6 = (~(Ndiiu6 ^ Y5ziu6)); +assign K5ziu6 = (~(F6ziu6 | D7fpw6[13])); +assign W4ziu6 = (~(M6ziu6 & X1ziu6)); +assign M6ziu6 = (~(T6ziu6 & A7ziu6)); +assign A7ziu6 = (H7ziu6 & O7ziu6); +assign H7ziu6 = (~(V7ziu6 & C8ziu6)); +assign C8ziu6 = (~(I6jiu6 | D7fpw6[4])); +assign V7ziu6 = (J8ziu6 & D7fpw6[11]); +assign T6ziu6 = (D7fpw6[13] & Q8ziu6); +assign Q8ziu6 = (~(X8ziu6 & Tniiu6)); +assign B4ziu6 = (~(E9ziu6 & Q5aiu6)); +assign E9ziu6 = (~(L9ziu6 & S9ziu6)); +assign S9ziu6 = (~(Jiiiu6 & Z9ziu6)); +assign Z9ziu6 = (~(Gaziu6 & Naziu6)); +assign Naziu6 = (Oviiu6 | Gkiiu6); +assign L9ziu6 = (~(Dmiiu6 & Uaziu6)); +assign Uaziu6 = (~(Bbziu6 & Ibziu6)); +assign Ibziu6 = (~(D7fpw6[10] | D7fpw6[12])); +assign Bbziu6 = (Pbziu6 & Wbziu6); +assign Wbziu6 = (~(Dcziu6 ^ D7fpw6[9])); +assign Pbziu6 = (Ndiiu6 ? D7fpw6[7] : Kcziu6); +assign Ryyiu6 = (Rcziu6 & Ycziu6); +assign Ycziu6 = (E45iu6 | Wthiu6); +assign Dyyiu6 = (Fdziu6 & Mdziu6); +assign Mdziu6 = (D7fpw6[14] ? Aeziu6 : Tdziu6); +assign Aeziu6 = (~(Heziu6 & Nriiu6)); +assign Heziu6 = (Aujiu6 & K9aiu6); +assign Fdziu6 = (Oeziu6 & Veziu6); +assign Upyiu6 = (H6ghu6 | HREADY); +assign Hxohu6 = (~(Cfziu6 & Jfziu6)); +assign Jfziu6 = (Qfziu6 & Xfziu6); +assign Xfziu6 = (~(Egziu6 & Eafpw6[29])); +assign Qfziu6 = (Lgziu6 & Sgziu6); +assign Lgziu6 = (~(Zgziu6 & Fj8iu6)); +assign Fj8iu6 = (~(Ghziu6 & Nhziu6)); +assign Nhziu6 = (Uhziu6 & Biziu6); +assign Biziu6 = (Iiziu6 | Piziu6); +assign Uhziu6 = (Wiziu6 & Djziu6); +assign Wiziu6 = (Kjziu6 | Rjziu6); +assign Ghziu6 = (Yjziu6 & Fkziu6); +assign Fkziu6 = (Mkziu6 | Tkziu6); +assign Yjziu6 = (Alziu6 | Hlziu6); +assign Cfziu6 = (Olziu6 & Vlziu6); +assign Vlziu6 = (~(Zsfpw6[28] & Cmziu6)); +assign Olziu6 = (~(vis_pc_o[28] & Jmziu6)); +assign Axohu6 = (!Qmziu6); +assign Qmziu6 = (HREADY ? Xmziu6 : Tfjiu6); +assign Xmziu6 = (Enziu6 & Lnziu6); +assign Lnziu6 = (Snziu6 & Znziu6); +assign Znziu6 = (Goziu6 & Noziu6); +assign Noziu6 = (~(Bi0iu6 | Uoziu6)); +assign Goziu6 = (Bpziu6 & Oaiiu6); +assign Bpziu6 = (~(Ipziu6 & Qe8iu6)); +assign Snziu6 = (Ppziu6 & Wpziu6); +assign Wpziu6 = (~(Neoiu6 & Dqziu6)); +assign Dqziu6 = (~(Kqziu6 & Rqziu6)); +assign Rqziu6 = (~(Yqziu6 & D1piu6)); +assign Yqziu6 = (Frziu6 & Cyfpw6[5]); +assign Kqziu6 = (Ntgiu6 & E4jiu6); +assign Ppziu6 = (Mrziu6 & Trziu6); +assign Trziu6 = (~(Asziu6 & Uriiu6)); +assign Asziu6 = (~(Hsziu6 & Osziu6)); +assign Osziu6 = (~(Vsziu6 & Ia8iu6)); +assign Vsziu6 = (~(E4jiu6 | Cyfpw6[3])); +assign Hsziu6 = (Ctziu6 | Tfjiu6); +assign Mrziu6 = (Ctziu6 | As0iu6); +assign Enziu6 = (Jtziu6 & Qtziu6); +assign Qtziu6 = (Xtziu6 & Euziu6); +assign Euziu6 = (Luziu6 & Suziu6); +assign Suziu6 = (~(Cyfpw6[7] & Zuziu6)); +assign Zuziu6 = (~(Gvziu6 & Nvziu6)); +assign Nvziu6 = (Q5aiu6 | Uvziu6); +assign Gvziu6 = (Bwziu6 & Iwziu6); +assign Iwziu6 = (~(Pwziu6 & Wwziu6)); +assign Pwziu6 = (~(Dxziu6 | Cyfpw6[0])); +assign Bwziu6 = (Jojiu6 | Ii0iu6); +assign Luziu6 = (~(Kxziu6 & Rxziu6)); +assign Rxziu6 = (~(Yxziu6 & Fyziu6)); +assign Fyziu6 = (Myziu6 & Tyziu6); +assign Tyziu6 = (~(Azziu6 & Hzziu6)); +assign Azziu6 = (~(Tfjiu6 | D7fpw6[15])); +assign Myziu6 = (~(P0piu6 | Ozziu6)); +assign Yxziu6 = (X3jiu6 & Vzziu6); +assign Vzziu6 = (~(U0aiu6 & D7fpw6[3])); +assign X3jiu6 = (Jjhiu6 | Uriiu6); +assign Xtziu6 = (Fniiu6 & C00ju6); +assign C00ju6 = (~(J00ju6 & Zraiu6)); +assign J00ju6 = (~(Q00ju6 & X00ju6)); +assign X00ju6 = (E10ju6 & L10ju6); +assign L10ju6 = (S10ju6 & Z10ju6); +assign Z10ju6 = (~(G20ju6 & N20ju6)); +assign G20ju6 = (~(Nsaiu6 | Xe8iu6)); +assign S10ju6 = (U20ju6 & W8oiu6); +assign U20ju6 = (~(B30ju6 & Mmjiu6)); +assign B30ju6 = (I30ju6 & Gwyiu6); +assign E10ju6 = (P30ju6 & W30ju6); +assign W30ju6 = (~(Hzziu6 & D40ju6)); +assign D40ju6 = (~(K40ju6 & R40ju6)); +assign R40ju6 = (~(Y40ju6 & Ii0iu6)); +assign K40ju6 = (F50ju6 & Xe8iu6); +assign F50ju6 = (~(M50ju6 & V9ghu6)); +assign M50ju6 = (~(P0biu6 | Cyfpw6[6])); +assign P30ju6 = (T50ju6 & A60ju6); +assign A60ju6 = (~(Omyiu6 & H60ju6)); +assign H60ju6 = (~(O60ju6 & V60ju6)); +assign V60ju6 = (~(Wp0iu6 & Qyniu6)); +assign T50ju6 = (~(Yljiu6 & C70ju6)); +assign C70ju6 = (~(Cyfpw6[7] & J70ju6)); +assign J70ju6 = (As0iu6 | Dxziu6); +assign Q00ju6 = (Q70ju6 & X70ju6); +assign X70ju6 = (E80ju6 & L80ju6); +assign L80ju6 = (S80ju6 | Ftjiu6); +assign E80ju6 = (Z80ju6 & G90ju6); +assign G90ju6 = (~(N90ju6 & Uriiu6)); +assign N90ju6 = (~(U90ju6 & Ba0ju6)); +assign Ba0ju6 = (Ia0ju6 & Pa0ju6); +assign Pa0ju6 = (~(Wa0ju6 & Db0ju6)); +assign Wa0ju6 = (Nbkiu6 & Oviiu6); +assign Ia0ju6 = (Kb0ju6 & Rb0ju6); +assign U90ju6 = (Yb0ju6 & Fc0ju6); +assign Fc0ju6 = (~(P0piu6 & Mc0ju6)); +assign Mc0ju6 = (~(Tc0ju6 & Ad0ju6)); +assign Ad0ju6 = (Hd0ju6 & Od0ju6); +assign Hd0ju6 = (~(D7fpw6[8] & Vd0ju6)); +assign Vd0ju6 = (U5jiu6 | Dcziu6); +assign Tc0ju6 = (Ce0ju6 & Je0ju6); +assign Ce0ju6 = (I6jiu6 ? Kcziu6 : Qe0ju6); +assign Yb0ju6 = (Xe0ju6 | H95iu6); +assign Z80ju6 = (~(J9kiu6 & Ef0ju6)); +assign Ef0ju6 = (~(Lf0ju6 & Sf0ju6)); +assign Sf0ju6 = (Zf0ju6 & Gg0ju6); +assign Gg0ju6 = (~(Ng0ju6 & Oviiu6)); +assign Ng0ju6 = (~(I6jiu6 & Je0ju6)); +assign Je0ju6 = (O95iu6 | D7fpw6[9]); +assign Zf0ju6 = (~(D7fpw6[13] & Ug0ju6)); +assign Ug0ju6 = (~(Bh0ju6 & Ih0ju6)); +assign Ih0ju6 = (Ph0ju6 | D7fpw6[4]); +assign Bh0ju6 = (Ndiiu6 | Wh0ju6); +assign Lf0ju6 = (Di0ju6 & Ki0ju6); +assign Ki0ju6 = (~(D7fpw6[12] & Ri0ju6)); +assign Ri0ju6 = (~(Yi0ju6 & Fj0ju6)); +assign Fj0ju6 = (Mj0ju6 & Tj0ju6); +assign Tj0ju6 = (~(Ak0ju6 & Zwciu6)); +assign Mj0ju6 = (Hk0ju6 | Oviiu6); +assign Yi0ju6 = (Ok0ju6 & Vk0ju6); +assign Vk0ju6 = (Kcziu6 | D7fpw6[10]); +assign Ok0ju6 = (Ndiiu6 | Qxoiu6); +assign Di0ju6 = (Cl0ju6 | D7fpw6[7]); +assign Cl0ju6 = (!Zroiu6); +assign Q70ju6 = (~(Jl0ju6 | Ql0ju6)); +assign Ql0ju6 = (~(Xl0ju6 | D7fpw6[8])); +assign Jl0ju6 = (C0ehu6 ? Lraiu6 : Em0ju6); +assign Em0ju6 = (Geoiu6 & H4ghu6); +assign Fniiu6 = (Hujiu6 | D7fpw6[12]); +assign Jtziu6 = (Lm0ju6 & F85iu6); +assign Lm0ju6 = (Sm0ju6 & Zm0ju6); +assign Zm0ju6 = (Wthiu6 | Nloiu6); +assign Sm0ju6 = (Taaiu6 | Faaiu6); +assign Twohu6 = (Gn0ju6 & Nn0ju6); +assign Nn0ju6 = (~(Un0ju6 & Bo0ju6)); +assign Bo0ju6 = (Io0ju6 & Po0ju6); +assign Po0ju6 = (Wo0ju6 & Dp0ju6); +assign Dp0ju6 = (Kp0ju6 & Rp0ju6); +assign Rp0ju6 = (~(J9kiu6 & Yp0ju6)); +assign Yp0ju6 = (~(Fq0ju6 & Mq0ju6)); +assign Mq0ju6 = (Tq0ju6 & Ar0ju6); +assign Tq0ju6 = (~(D7fpw6[14] | D7fpw6[7])); +assign Fq0ju6 = (Hr0ju6 & D7fpw6[13]); +assign Hr0ju6 = (D7fpw6[5] & Or0ju6); +assign Or0ju6 = (~(Vr0ju6 & Cs0ju6)); +assign Cs0ju6 = (~(Js0ju6 & Qs0ju6)); +assign Qs0ju6 = (~(D7fpw6[4] | D7fpw6[6])); +assign Js0ju6 = (Wh0ju6 & F6ziu6); +assign Vr0ju6 = (~(Ak0ju6 & Oviiu6)); +assign Kp0ju6 = (Xs0ju6 & Et0ju6); +assign Wo0ju6 = (Lt0ju6 & St0ju6); +assign St0ju6 = (~(Zt0ju6 & S6aiu6)); +assign Zt0ju6 = (~(Ii0iu6 | Cyfpw6[4])); +assign Lt0ju6 = (~(Gu0ju6 & Xe8iu6)); +assign Gu0ju6 = (W8aiu6 | M2piu6); +assign Io0ju6 = (Nu0ju6 & Uu0ju6); +assign Uu0ju6 = (Bv0ju6 & Iv0ju6); +assign Iv0ju6 = (~(Pv0ju6 & Mr0iu6)); +assign Pv0ju6 = (Hzziu6 | N3ziu6); +assign Bv0ju6 = (~(Bziiu6 & D7fpw6[11])); +assign Nu0ju6 = (Wv0ju6 & Dw0ju6); +assign Dw0ju6 = (Kw0ju6 | Wxyiu6); +assign Wv0ju6 = (~(D7fpw6[14] & Rw0ju6)); +assign Rw0ju6 = (~(Yw0ju6 & Fx0ju6)); +assign Fx0ju6 = (Mx0ju6 & Tx0ju6); +assign Tx0ju6 = (~(Mtjiu6 & Ay0ju6)); +assign Ay0ju6 = (~(Hy0ju6 & Oy0ju6)); +assign Oy0ju6 = (Vy0ju6 & Oviiu6); +assign Vy0ju6 = (~(Cz0ju6 & Jz0ju6)); +assign Cz0ju6 = (~(Hk0ju6 | D7fpw6[7])); +assign Hy0ju6 = (Qz0ju6 & Xz0ju6); +assign Xz0ju6 = (~(E01ju6 & D7fpw6[8])); +assign E01ju6 = (Tniiu6 ? L01ju6 : Dcziu6); +assign Mx0ju6 = (S01ju6 | Jjhiu6); +assign Yw0ju6 = (Z01ju6 & G11ju6); +assign G11ju6 = (Hk0ju6 | H95iu6); +assign Un0ju6 = (N11ju6 & U11ju6); +assign U11ju6 = (B21ju6 & I21ju6); +assign I21ju6 = (P21ju6 & W21ju6); +assign W21ju6 = (~(N3ziu6 & Taaiu6)); +assign P21ju6 = (~(Y0jiu6 & D31ju6)); +assign B21ju6 = (K31ju6 & R31ju6); +assign R31ju6 = (Nloiu6 | Lkaiu6); +assign K31ju6 = (Jjhiu6 | Y31ju6); +assign N11ju6 = (F41ju6 & M41ju6); +assign M41ju6 = (T41ju6 & A51ju6); +assign A51ju6 = (Wiliu6 | Ftjiu6); +assign F41ju6 = (~(H51ju6 | O51ju6)); +assign O51ju6 = (Cyfpw6[6] ? V51ju6 : Yljiu6); +assign V51ju6 = (~(Ccoiu6 | R75iu6)); +assign H51ju6 = (Cyfpw6[7] ? C61ju6 : M2piu6); +assign C61ju6 = (~(J61ju6 & Q61ju6)); +assign Q61ju6 = (X61ju6 & E71ju6); +assign E71ju6 = (~(I30ju6 & Pxyiu6)); +assign X61ju6 = (~(Moaiu6 & N2ghu6)); +assign J61ju6 = (L71ju6 & S71ju6); +assign S71ju6 = (X5oiu6 | C0ehu6); +assign L71ju6 = (~(D1piu6 & Pugiu6)); +assign Gn0ju6 = (Cyfpw6[7] | HREADY); +assign Mwohu6 = (G81ju6 ? H2fpw6[1] : Z71ju6); +assign Z71ju6 = (~(N81ju6 & U81ju6)); +assign U81ju6 = (B91ju6 & I91ju6); +assign I91ju6 = (~(P91ju6 & D7fpw6[4])); +assign B91ju6 = (W91ju6 & Da1ju6); +assign Da1ju6 = (~(Ka1ju6 & Ra1ju6)); +assign Ra1ju6 = (~(Jcaiu6 | D7fpw6[11])); +assign Ka1ju6 = (D7fpw6[13] & Ya1ju6); +assign W91ju6 = (~(Fb1ju6 & D7fpw6[9])); +assign N81ju6 = (Mb1ju6 & Tb1ju6); +assign Tb1ju6 = (~(D7fpw6[1] & Ac1ju6)); +assign Fwohu6 = (Rgnhu6 & Hc1ju6); +assign Hc1ju6 = (~(Aw3iu6 & Oc1ju6)); +assign Oc1ju6 = (~(Tonhu6 & Di1iu6)); +assign Di1iu6 = (Tezhu6 & O8zhu6); +assign Tezhu6 = (Vc1ju6 & Cq3iu6); +assign Cq3iu6 = (Cd1ju6 & Fj1iu6); +assign Fj1iu6 = (Jd1ju6 & Qd1ju6); +assign Qd1ju6 = (Omzhu6 & Xj3iu6); +assign Xj3iu6 = (~(Xd1ju6 & Ow3iu6)); +assign Ow3iu6 = (~(Ee1ju6 & Yn3iu6)); +assign Yn3iu6 = (~(Ulnhu6 | Mdhpw6[2])); +assign Ee1ju6 = (Le1ju6 & Qnzhu6); +assign Qnzhu6 = (O8zhu6 | Mdhpw6[0]); +assign O8zhu6 = (!Mdhpw6[1]); +assign Le1ju6 = (~(Pinhu6 & Mdhpw6[1])); +assign Xd1ju6 = (~(Se1ju6 & Ze1ju6)); +assign Ze1ju6 = (~(Fanhu6 | Jdnhu6)); +assign Se1ju6 = (~(Ph1iu6 | Q8nhu6)); +assign Ph1iu6 = (Gf1ju6 & X0ohu6); +assign Gf1ju6 = (Mo3iu6 & Aw3iu6); +assign Mo3iu6 = (Nf1ju6 & Uf1ju6); +assign Uf1ju6 = (~(Z63iu6 | Vmdpw6)); +assign Z63iu6 = (G2ohu6 ^ Rrnhu6); +assign Nf1ju6 = (Rgnhu6 & Fmyhu6); +assign Fmyhu6 = (!N5yhu6); +assign N5yhu6 = (~(Bg1ju6 & Mdhpw6[3])); +assign Bg1ju6 = (U5yhu6 & Agyhu6); +assign Agyhu6 = (Ig1ju6 & Ighpw6[3]); +assign Ig1ju6 = (~(Vmzhu6 | Deyhu6)); +assign Deyhu6 = (Zwyhu6 | Ighpw6[0]); +assign Zwyhu6 = (!Ighpw6[1]); +assign Omzhu6 = (~(Ighpw6[0] | Ighpw6[1])); +assign Jd1ju6 = (Iyyhu6 & U5yhu6); +assign Iyyhu6 = (Ez2iu6 & Wdyhu6); +assign Cd1ju6 = (~(Ulnhu6 | Mdhpw6[0])); +assign Vc1ju6 = (~(Vp3iu6 | Mdhpw6[2])); +assign Vp3iu6 = (~(Rzyhu6 ^ Mdhpw6[3])); +assign Rzyhu6 = (!Hknhu6); +assign Aw3iu6 = (!Yenhu6); +assign Yvohu6 = (Y14iu6 ? Mdhpw6[3] : Mdhpw6[2]); +assign Rvohu6 = (Y14iu6 ? Mdhpw6[2] : Mdhpw6[1]); +assign Y14iu6 = (!U03iu6); +assign Kvohu6 = (U03iu6 ? Mdhpw6[0] : Mdhpw6[1]); +assign Dvohu6 = (U03iu6 ? Ulnhu6 : Mdhpw6[0]); +assign U03iu6 = (Pg1ju6 & Wg1ju6); +assign Wg1ju6 = (~(Dh1ju6 & Ijzhu6)); +assign Ijzhu6 = (~(Ighpw6[3] | Ighpw6[4])); +assign Dh1ju6 = (U5yhu6 & Vmzhu6); +assign Vmzhu6 = (!Ez2iu6); +assign Ez2iu6 = (Vuyhu6 & Eiyhu6); +assign Eiyhu6 = (!Ighpw6[4]); +assign Vuyhu6 = (!Ighpw6[2]); +assign Pg1ju6 = (~(Kh1ju6 & Rh1ju6)); +assign Rh1ju6 = (Yh1ju6 & Pdyhu6); +assign Pdyhu6 = (!Pkyhu6); +assign Pkyhu6 = (Ighpw6[2] & Cvyhu6); +assign Yh1ju6 = (Cvyhu6 | Ighpw6[2]); +assign Cvyhu6 = (Ighpw6[0] & Ighpw6[1]); +assign Kh1ju6 = (Epyhu6 & U5yhu6); +assign U5yhu6 = (Vx2iu6 & Ujyhu6); +assign Vx2iu6 = (!Fnnhu6); +assign Epyhu6 = (Ighpw6[4] & Wdyhu6); +assign Wdyhu6 = (!Ighpw6[3]); +assign Wuohu6 = (O25iu6 ? X3fpw6[2] : Fi1ju6); +assign Fi1ju6 = (~(Mi1ju6 & Ti1ju6)); +assign Ti1ju6 = (Aj1ju6 & Hj1ju6); +assign Hj1ju6 = (~(Omyiu6 & S8fpw6[10])); +assign Aj1ju6 = (Oj1ju6 & Vj1ju6); +assign Vj1ju6 = (~(D7fpw6[5] & K75iu6)); +assign Oj1ju6 = (~(L45iu6 & N55iu6)); +assign Mi1ju6 = (Ck1ju6 & Gpyiu6); +assign Ck1ju6 = (Jk1ju6 & Qk1ju6); +assign Qk1ju6 = (~(A95iu6 & D7fpw6[2])); +assign Jk1ju6 = (Ndiiu6 | H95iu6); +assign Puohu6 = (!Xk1ju6); +assign Xk1ju6 = (HREADY ? Ll1ju6 : El1ju6); +assign Ll1ju6 = (Sl1ju6 & Zl1ju6); +assign Iuohu6 = (!Gm1ju6); +assign Gm1ju6 = (HREADY ? Um1ju6 : Nm1ju6); +assign Um1ju6 = (Bn1ju6 & In1ju6); +assign In1ju6 = (Pn1ju6 & Wn1ju6); +assign Wn1ju6 = (Do1ju6 & Ko1ju6); +assign Ko1ju6 = (~(Ro1ju6 & Yo1ju6)); +assign Ro1ju6 = (Fp1ju6 & Mp1ju6); +assign Mp1ju6 = (~(Ph0ju6 & Tp1ju6)); +assign Tp1ju6 = (~(D7fpw6[7] & Aq1ju6)); +assign Do1ju6 = (Hq1ju6 & Oq1ju6); +assign Pn1ju6 = (Vq1ju6 & Cr1ju6); +assign Cr1ju6 = (~(Oiaiu6 & Jr1ju6)); +assign Jr1ju6 = (~(Qr1ju6 & Xr1ju6)); +assign Xr1ju6 = (~(Es1ju6 & Qe8iu6)); +assign Qr1ju6 = (~(Toaiu6 & Ls1ju6)); +assign Vq1ju6 = (Ss1ju6 & Zs1ju6); +assign Zs1ju6 = (~(Gt1ju6 & M2piu6)); +assign Gt1ju6 = (~(Ccoiu6 | Cyfpw6[0])); +assign Ss1ju6 = (~(K2aiu6 & Nt1ju6)); +assign Nt1ju6 = (~(Ut1ju6 & Bu1ju6)); +assign Bu1ju6 = (~(Iu1ju6 & Pu1ju6)); +assign Iu1ju6 = (Md0iu6 & Sijiu6); +assign Ut1ju6 = (~(Qe8iu6 & Mr0iu6)); +assign Bn1ju6 = (Wu1ju6 & Dv1ju6); +assign Dv1ju6 = (Kv1ju6 & Rv1ju6); +assign Rv1ju6 = (~(Yv1ju6 & Wliiu6)); +assign Kv1ju6 = (Fw1ju6 & Mw1ju6); +assign Mw1ju6 = (~(Tw1ju6 & Oviiu6)); +assign Tw1ju6 = (~(Ax1ju6 & Hx1ju6)); +assign Hx1ju6 = (~(Yv1ju6 & Nbkiu6)); +assign Fw1ju6 = (~(Pugiu6 & Ox1ju6)); +assign Ox1ju6 = (~(Vx1ju6 & Cy1ju6)); +assign Cy1ju6 = (~(M2piu6 & Jy1ju6)); +assign Jy1ju6 = (~(Xojiu6 & Qy1ju6)); +assign Qy1ju6 = (Mmjiu6 | Ae0iu6); +assign Wu1ju6 = (Xy1ju6 & Ez1ju6); +assign Xy1ju6 = (Lz1ju6 & Sz1ju6); +assign Sz1ju6 = (~(U98iu6 & Vxniu6)); +assign Lz1ju6 = (Ax1ju6 | L01ju6); +assign Buohu6 = (~(Zz1ju6 & G02ju6)); +assign G02ju6 = (~(C0ehu6 & N02ju6)); +assign N02ju6 = (Eh6iu6 | Yv1ju6); +assign Zz1ju6 = (~(HREADY & U02ju6)); +assign U02ju6 = (~(B12ju6 & I12ju6)); +assign I12ju6 = (P12ju6 & W12ju6); +assign W12ju6 = (D22ju6 & K22ju6); +assign K22ju6 = (~(U98iu6 & R22ju6)); +assign R22ju6 = (~(Y22ju6 & F32ju6)); +assign F32ju6 = (M32ju6 | Xmliu6); +assign Y22ju6 = (~(Pthiu6 & Cyfpw6[1])); +assign D22ju6 = (T32ju6 & A42ju6); +assign T32ju6 = (~(H42ju6 & Neoiu6)); +assign H42ju6 = (Omyiu6 & O42ju6); +assign O42ju6 = (~(V42ju6 & C52ju6)); +assign C52ju6 = (J52ju6 & Q52ju6); +assign Q52ju6 = (As0iu6 | Xe8iu6); +assign J52ju6 = (X52ju6 & E62ju6); +assign X52ju6 = (L62ju6 | Cyfpw6[6]); +assign V42ju6 = (Cyfpw6[0] & S62ju6); +assign P12ju6 = (Z62ju6 & G72ju6); +assign G72ju6 = (~(Dxziu6 & N72ju6)); +assign N72ju6 = (~(U72ju6 & B82ju6)); +assign B82ju6 = (~(Ls1ju6 & Xzmiu6)); +assign U72ju6 = (~(I82ju6 & Nlaiu6)); +assign Z62ju6 = (P82ju6 | W82ju6); +assign B12ju6 = (D92ju6 & K92ju6); +assign K92ju6 = (R92ju6 & Y92ju6); +assign Y92ju6 = (~(Qe8iu6 & Fa2ju6)); +assign Fa2ju6 = (~(Ma2ju6 & Ta2ju6)); +assign Ta2ju6 = (H4ghu6 ? Hb2ju6 : Ab2ju6); +assign Hb2ju6 = (~(Dxziu6 & Ob2ju6)); +assign Ob2ju6 = (~(Cyfpw6[5] & Vb2ju6)); +assign Vb2ju6 = (~(Cc2ju6 & Eoyiu6)); +assign Cc2ju6 = (~(Nlaiu6 | Cyfpw6[3])); +assign Ab2ju6 = (Jc2ju6 & Qc2ju6); +assign Qc2ju6 = (~(Xc2ju6 & Ed2ju6)); +assign Ed2ju6 = (~(Xojiu6 | Sbghu6)); +assign Xc2ju6 = (~(Nlaiu6 | Lkaiu6)); +assign Ma2ju6 = (Ld2ju6 & M32ju6); +assign Ld2ju6 = (~(Sd2ju6 & Hs0iu6)); +assign Sd2ju6 = (~(Q5aiu6 & Zd2ju6)); +assign Zd2ju6 = (~(Fsdhu6 & Cqaiu6)); +assign R92ju6 = (~(Yo1ju6 & I6jiu6)); +assign D92ju6 = (Ge2ju6 & Ne2ju6); +assign Ne2ju6 = (~(W8aiu6 & Whfiu6)); +assign Ge2ju6 = (D7fpw6[8] ? Bf2ju6 : Ue2ju6); +assign Bf2ju6 = (If2ju6 & Pf2ju6); +assign Pf2ju6 = (~(Wf2ju6 & Y5ziu6)); +assign If2ju6 = (~(Yo1ju6 & Tniiu6)); +assign Ue2ju6 = (Dg2ju6 & Kg2ju6); +assign Kg2ju6 = (~(Yo1ju6 & Rg2ju6)); +assign Dg2ju6 = (Yg2ju6 & Fh2ju6); +assign Fh2ju6 = (~(Mh2ju6 & Htyiu6)); +assign Mh2ju6 = (Th2ju6 & Ai2ju6); +assign Ai2ju6 = (~(Xe0ju6 & Hi2ju6)); +assign Hi2ju6 = (~(Zroiu6 & Cwiiu6)); +assign Yg2ju6 = (Oi2ju6 | Y5ziu6); +assign Y5ziu6 = (Vi2ju6 & Cj2ju6); +assign Cj2ju6 = (Jj2ju6 ^ Qj2ju6); +assign Qj2ju6 = (Xj2ju6 & Ek2ju6); +assign Ek2ju6 = (~(G8niu6 | Fp1ju6)); +assign G8niu6 = (P9niu6 & vis_apsr_o[0]); +assign Xj2ju6 = (Lk2ju6 & Sk2ju6); +assign Sk2ju6 = (D7fpw6[11] | Qxoiu6); +assign Lk2ju6 = (Zk2ju6 | Gl2ju6); +assign Gl2ju6 = (Nl2ju6 ? Idfpw6[31] : Eafpw6[31]); +assign Zk2ju6 = (Ul2ju6 | P9niu6); +assign P9niu6 = (Bm2ju6 & Im2ju6); +assign Bm2ju6 = (Pm2ju6 & Wm2ju6); +assign Wm2ju6 = (~(Dn2ju6 & Kn2ju6)); +assign Kn2ju6 = (~(Y2oiu6 | Tfjiu6)); +assign Dn2ju6 = (~(Rn2ju6 | Yn2ju6)); +assign Pm2ju6 = (~(Fo2ju6 & Mo2ju6)); +assign Fo2ju6 = (~(Jjhiu6 | As0iu6)); +assign Ul2ju6 = (~(Idfpw6[31] | Eafpw6[31])); +assign Idfpw6[31] = (To2ju6 & Oe0iu6); +assign Oe0iu6 = (~(Ap2ju6 & Hp2ju6)); +assign Hp2ju6 = (Op2ju6 & Vp2ju6); +assign Vp2ju6 = (Cq2ju6 & Owaiu6); +assign Cq2ju6 = (~(Jq2ju6 & K9aiu6)); +assign Jq2ju6 = (~(Knaiu6 & Qq2ju6)); +assign Qq2ju6 = (Xe8iu6 | Cyfpw6[4]); +assign Op2ju6 = (Xq2ju6 & Er2ju6); +assign Er2ju6 = (Nlaiu6 | Lkaiu6); +assign Xq2ju6 = (~(F3aiu6 & Ldoiu6)); +assign Ap2ju6 = (Lr2ju6 & Sr2ju6); +assign Sr2ju6 = (H6ghu6 & Zr2ju6); +assign Zr2ju6 = (~(Pthiu6 & H4ghu6)); +assign Lr2ju6 = (~(Gs2ju6 | Ns2ju6)); +assign Ns2ju6 = (Cyfpw6[4] ? Bt2ju6 : Us2ju6); +assign Bt2ju6 = (~(Wfoiu6 | R75iu6)); +assign Gs2ju6 = (Cyfpw6[6] ? Pt2ju6 : It2ju6); +assign Jj2ju6 = (~(Wt2ju6 & Du2ju6)); +assign Du2ju6 = (Fhoiu6 ? Ku2ju6 : Vioiu6); +assign Ku2ju6 = (!vis_apsr_o[3]); +assign Vioiu6 = (E5ehu6 ? Ru2ju6 : Bbliu6); +assign Wt2ju6 = (~(Fp1ju6 | Zroiu6)); +assign Vi2ju6 = (Yu2ju6 & Fv2ju6); +assign Fv2ju6 = (Mv2ju6 | Tv2ju6); +assign Tv2ju6 = (Ng8iu6 ? vis_apsr_o[1] : Ri8iu6); +assign Ng8iu6 = (Aw2ju6 & Im2ju6); +assign Im2ju6 = (Hw2ju6 & Ow2ju6); +assign Ow2ju6 = (~(Vw2ju6 & Cx2ju6)); +assign Cx2ju6 = (Jx2ju6 & Qx2ju6); +assign Qx2ju6 = (~(Xx2ju6 & Ey2ju6)); +assign Xx2ju6 = (Mr0iu6 | Ly2ju6); +assign Jx2ju6 = (~(Sy2ju6 | Oiaiu6)); +assign Vw2ju6 = (C0ehu6 & Zy2ju6); +assign Zy2ju6 = (Y2oiu6 | Qxaiu6); +assign Hw2ju6 = (~(Gz2ju6 | Nz2ju6)); +assign Aw2ju6 = (Uz2ju6 & B03ju6); +assign B03ju6 = (~(C0ehu6 & I03ju6)); +assign I03ju6 = (~(P03ju6 & O60ju6)); +assign Uz2ju6 = (~(Cyfpw6[4] & W03ju6)); +assign W03ju6 = (~(D13ju6 & K13ju6)); +assign K13ju6 = (Mr0iu6 | Cyfpw6[7]); +assign D13ju6 = (R13ju6 & Y13ju6); +assign Y13ju6 = (~(F23ju6 & M23ju6)); +assign M23ju6 = (Ii0iu6 | Pugiu6); +assign R13ju6 = (~(T23ju6 & Pfoiu6)); +assign Ri8iu6 = (E5ehu6 ? A33ju6 : Caehu6); +assign A33ju6 = (~(H33ju6 & O33ju6)); +assign O33ju6 = (~(V33ju6 & C43ju6)); +assign C43ju6 = (J43ju6 & vis_apsr_o[1]); +assign V33ju6 = (~(Q43ju6 | X43ju6)); +assign H33ju6 = (~(E53ju6 & L53ju6)); +assign L53ju6 = (~(S53ju6 & Z53ju6)); +assign S53ju6 = (~(X43ju6 | G63ju6)); +assign E53ju6 = (~(N63ju6 & U63ju6)); +assign U63ju6 = (~(B73ju6 & I73ju6)); +assign I73ju6 = (~(P73ju6 & Cyfpw6[3])); +assign B73ju6 = (W73ju6 & Mr0iu6); +assign W73ju6 = (~(D83ju6 & K83ju6)); +assign K83ju6 = (~(R83ju6 & Y83ju6)); +assign R83ju6 = (~(F93ju6 | M93ju6)); +assign D83ju6 = (~(T93ju6 & Aa3ju6)); +assign Aa3ju6 = (~(Ha3ju6 & Oa3ju6)); +assign T93ju6 = (F93ju6 ? Cb3ju6 : Va3ju6); +assign Cb3ju6 = (Jb3ju6 | Oa3ju6); +assign Va3ju6 = (Qb3ju6 & M93ju6); +assign N63ju6 = (P73ju6 ? Ru2ju6 : Xb3ju6); +assign P73ju6 = (Ec3ju6 & Q43ju6); +assign Ec3ju6 = (~(Lc3ju6 & Sc3ju6)); +assign Lc3ju6 = (J43ju6 & Zc3ju6); +assign J43ju6 = (!G63ju6); +assign Ru2ju6 = (Gd3ju6 & Nd3ju6); +assign Nd3ju6 = (Ud3ju6 & Be3ju6); +assign Be3ju6 = (~(Ie3ju6 & Pe3ju6)); +assign Ie3ju6 = (~(We3ju6 | Df3ju6)); +assign Ud3ju6 = (Kf3ju6 | Ha3ju6); +assign Gd3ju6 = (~(Rf3ju6 | Yf3ju6)); +assign Yf3ju6 = (~(Fg3ju6 | Mg3ju6)); +assign Rf3ju6 = (Ah3ju6 ? Tg3ju6 : Jb3ju6); +assign Tg3ju6 = (Hh3ju6 & Oh3ju6); +assign Hh3ju6 = (Vh3ju6 & Fg3ju6); +assign Xb3ju6 = (~(H4ghu6 & Ci3ju6)); +assign Ci3ju6 = (~(Ji3ju6 & Qi3ju6)); +assign Qi3ju6 = (~(Xi3ju6 & Ej3ju6)); +assign Xi3ju6 = (Lj3ju6 & M93ju6); +assign Ji3ju6 = (M93ju6 ? Zj3ju6 : Sj3ju6); +assign Zj3ju6 = (~(F93ju6 & Gk3ju6)); +assign Sj3ju6 = (Ej3ju6 ? Uk3ju6 : Nk3ju6); +assign Mv2ju6 = (~(Bl3ju6 & I6jiu6)); +assign Bl3ju6 = (Zroiu6 | Il3ju6); +assign Yu2ju6 = (~(Pl3ju6 & Wl3ju6)); +assign Wl3ju6 = (Fp1ju6 | Il3ju6); +assign Pl3ju6 = (Xe0ju6 ^ Dm3ju6); +assign Dm3ju6 = (Fhoiu6 ? Km3ju6 : V7liu6); +assign Fhoiu6 = (Rm3ju6 & Mwniu6); +assign Mwniu6 = (Szniu6 | Yn2ju6); +assign Rm3ju6 = (~(C0ehu6 & Ym3ju6)); +assign Ym3ju6 = (~(Fn3ju6 & Mn3ju6)); +assign Mn3ju6 = (Tn3ju6 & Ao3ju6); +assign Ao3ju6 = (~(H4ghu6 & Ho3ju6)); +assign Ho3ju6 = (~(Oo3ju6 & Vo3ju6)); +assign Oo3ju6 = (~(Hs0iu6 | Cp3ju6)); +assign Tn3ju6 = (Jp3ju6 & Qp3ju6); +assign Jp3ju6 = (~(Ly2ju6 & Cyfpw6[4])); +assign Fn3ju6 = (Xp3ju6 & Eq3ju6); +assign Eq3ju6 = (Ezniu6 | Cyfpw6[6]); +assign Xp3ju6 = (Lq3ju6 & P03ju6); +assign P03ju6 = (~(Sq3ju6 & Hs0iu6)); +assign Lq3ju6 = (Ey2ju6 | As0iu6); +assign Km3ju6 = (!vis_apsr_o[2]); +assign V7liu6 = (E5ehu6 ? Gr3ju6 : Zq3ju6); +assign Gr3ju6 = (~(Nr3ju6 & Ur3ju6)); +assign Ur3ju6 = (Bs3ju6 & Is3ju6); +assign Is3ju6 = (~(Ps3ju6 & Ws3ju6)); +assign Ws3ju6 = (~(Dt3ju6 & Kt3ju6)); +assign Kt3ju6 = (Rt3ju6 & Yt3ju6); +assign Rt3ju6 = (~(Lj3ju6 | Jb3ju6)); +assign Dt3ju6 = (Fu3ju6 & Mu3ju6); +assign Fu3ju6 = (Hv3ju6 ? Av3ju6 : Tu3ju6); +assign Av3ju6 = (Ov3ju6 & Vv3ju6); +assign Vv3ju6 = (~(Cw3ju6 | Jw3ju6)); +assign Tu3ju6 = (Qw3ju6 & Xw3ju6); +assign Xw3ju6 = (~(Ex3ju6 | Lx3ju6)); +assign Qw3ju6 = (~(Sx3ju6 | Zx3ju6)); +assign Ps3ju6 = (~(Gy3ju6 & Oh3ju6)); +assign Gy3ju6 = (Ah3ju6 & Ny3ju6); +assign Bs3ju6 = (Uy3ju6 & Bz3ju6); +assign Uy3ju6 = (~(Iz3ju6 & Pz3ju6)); +assign Pz3ju6 = (~(Wz3ju6 & D04ju6)); +assign D04ju6 = (K04ju6 & R04ju6); +assign K04ju6 = (Ha3ju6 & Uk3ju6); +assign Wz3ju6 = (Y04ju6 & F14ju6); +assign Y04ju6 = (Hv3ju6 ? T14ju6 : M14ju6); +assign T14ju6 = (A24ju6 & H24ju6); +assign H24ju6 = (~(O24ju6 | V24ju6)); +assign A24ju6 = (C34ju6 & J34ju6); +assign M14ju6 = (Q34ju6 & X34ju6); +assign X34ju6 = (~(E44ju6 | L44ju6)); +assign Iz3ju6 = (~(S44ju6 & Kf3ju6)); +assign S44ju6 = (Z44ju6 & Ny3ju6); +assign Nr3ju6 = (G54ju6 & N54ju6); +assign N54ju6 = (~(U54ju6 & B64ju6)); +assign B64ju6 = (~(I64ju6 & P64ju6)); +assign P64ju6 = (W64ju6 & D74ju6); +assign D74ju6 = (K74ju6 & R74ju6); +assign R74ju6 = (~(Hv3ju6 & Y74ju6)); +assign Y74ju6 = (F84ju6 | M84ju6); +assign K74ju6 = (T84ju6 & A94ju6); +assign W64ju6 = (H94ju6 & O94ju6); +assign H94ju6 = (~(M84ju6 & V94ju6)); +assign I64ju6 = (Ca4ju6 & Ja4ju6); +assign Ja4ju6 = (Mg3ju6 & Qa4ju6); +assign Qa4ju6 = (~(F84ju6 & O24ju6)); +assign Ca4ju6 = (~(Xa4ju6 | Eb4ju6)); +assign G54ju6 = (~(Lb4ju6 & Sb4ju6)); +assign Sb4ju6 = (~(Zb4ju6 & Gc4ju6)); +assign Gc4ju6 = (Nc4ju6 & Uc4ju6); +assign Nc4ju6 = (~(Gk3ju6 | Y83ju6)); +assign Zb4ju6 = (Bd4ju6 & Id4ju6); +assign Bd4ju6 = (Hv3ju6 ? Wd4ju6 : Pd4ju6); +assign Wd4ju6 = (Q34ju6 & De4ju6); +assign De4ju6 = (~(Ke4ju6 | Re4ju6)); +assign Q34ju6 = (~(Ye4ju6 | Ff4ju6)); +assign Pd4ju6 = (Ov3ju6 & Mf4ju6); +assign Mf4ju6 = (~(Tf4ju6 | Ag4ju6)); +assign Ov3ju6 = (~(Hg4ju6 | Og4ju6)); +assign Lb4ju6 = (~(Vg4ju6 & Oh3ju6)); +assign Vg4ju6 = (Ch4ju6 & Ny3ju6); +assign Zq3ju6 = (~(Jh4ju6 & Qh4ju6)); +assign Qh4ju6 = (Xh4ju6 & Ei4ju6); +assign Ei4ju6 = (Li4ju6 & Si4ju6); +assign Si4ju6 = (Zi4ju6 & Gj4ju6); +assign Gj4ju6 = (Ibliu6 & Kkkiu6); +assign Kkkiu6 = (Nj4ju6 & Uj4ju6); +assign Uj4ju6 = (Bk4ju6 & Ik4ju6); +assign Ik4ju6 = (~(Pk4ju6 & vis_ipsr_o[4])); +assign Bk4ju6 = (~(Affpw6[4] | Wk4ju6)); +assign Nj4ju6 = (Dl4ju6 & Kl4ju6); +assign Kl4ju6 = (Eg0iu6 ? Yl4ju6 : Rl4ju6); +assign Eg0iu6 = (Mm4ju6 ? Fm4ju6 : V3iiu6); +assign Fm4ju6 = (Tm4ju6 & An4ju6); +assign An4ju6 = (Hn4ju6 & On4ju6); +assign On4ju6 = (Vn4ju6 & Co4ju6); +assign Co4ju6 = (~(Jo4ju6 & vis_r14_o[4])); +assign Vn4ju6 = (Qo4ju6 & Xo4ju6); +assign Xo4ju6 = (~(Ep4ju6 & vis_psp_o[2])); +assign Qo4ju6 = (~(Lp4ju6 & vis_msp_o[2])); +assign Hn4ju6 = (Sp4ju6 & Zp4ju6); +assign Zp4ju6 = (~(Gq4ju6 & vis_r12_o[4])); +assign Sp4ju6 = (~(Nq4ju6 & vis_r11_o[4])); +assign Tm4ju6 = (Uq4ju6 & Br4ju6); +assign Br4ju6 = (Ir4ju6 & Pr4ju6); +assign Pr4ju6 = (~(Wr4ju6 & vis_r10_o[4])); +assign Ir4ju6 = (~(Ds4ju6 & vis_r9_o[4])); +assign Uq4ju6 = (D50iu6 & Ks4ju6); +assign Ks4ju6 = (~(Rs4ju6 & vis_r8_o[4])); +assign V3iiu6 = (!Fkfpw6[4]); +assign Yl4ju6 = (~(Ys4ju6 & Qbfpw6[4])); +assign Rl4ju6 = (~(Ft4ju6 | Mt4ju6)); +assign Ft4ju6 = (Qbfpw6[4] ? Tt4ju6 : Ys4ju6); +assign Qbfpw6[4] = (~(Au4ju6 ^ Hu4ju6)); +assign Au4ju6 = (~(Ou4ju6 & Vu4ju6)); +assign Vu4ju6 = (Cv4ju6 & Jv4ju6); +assign Jv4ju6 = (B5kiu6 | Qv4ju6); +assign Cv4ju6 = (~(S8fpw6[4] & Xv4ju6)); +assign Ou4ju6 = (Ew4ju6 & Lw4ju6); +assign Lw4ju6 = (~(Sw4ju6 & Zw4ju6)); +assign Ew4ju6 = (V4aiu6 | Gx4ju6); +assign Dl4ju6 = (Nx4ju6 & Ux4ju6); +assign Ux4ju6 = (~(By4ju6 & Eafpw6[4])); +assign Nx4ju6 = (~(Iy4ju6 & Zw4ju6)); +assign Ibliu6 = (Py4ju6 & Wy4ju6); +assign Wy4ju6 = (Dz4ju6 & Kz4ju6); +assign Kz4ju6 = (~(Affpw6[0] | Wk4ju6)); +assign Dz4ju6 = (Rz4ju6 & Yz4ju6); +assign Yz4ju6 = (~(F05ju6 & M05ju6)); +assign M05ju6 = (~(Qjoiu6 | S8fpw6[2])); +assign F05ju6 = (T05ju6 & vis_primask_o); +assign Rz4ju6 = (~(Pk4ju6 & vis_ipsr_o[0])); +assign Py4ju6 = (A15ju6 & H15ju6); +assign H15ju6 = (Go0iu6 ? V15ju6 : O15ju6); +assign V15ju6 = (~(C25ju6 | Mt4ju6)); +assign C25ju6 = (Qbfpw6[0] ? Tt4ju6 : Ys4ju6); +assign O15ju6 = (~(Ys4ju6 & Qbfpw6[0])); +assign Qbfpw6[0] = (~(J25ju6 ^ Hu4ju6)); +assign J25ju6 = (~(Q25ju6 & X25ju6)); +assign X25ju6 = (~(S8fpw6[0] & E35ju6)); +assign Q25ju6 = (~(Sw4ju6 & L35ju6)); +assign A15ju6 = (S35ju6 & Z35ju6); +assign Z35ju6 = (~(By4ju6 & Eafpw6[0])); +assign S35ju6 = (~(Iy4ju6 & L35ju6)); +assign Zi4ju6 = (K5liu6 & Bbliu6); +assign Bbliu6 = (G45ju6 & N45ju6); +assign N45ju6 = (U45ju6 & B55ju6); +assign B55ju6 = (~(vis_apsr_o[3] & I55ju6)); +assign U45ju6 = (~(Affpw6[31] | Wk4ju6)); +assign G45ju6 = (P55ju6 & W55ju6); +assign W55ju6 = (To2ju6 ? K65ju6 : D65ju6); +assign To2ju6 = (!R65ju6); +assign K65ju6 = (~(Y65ju6 | Mt4ju6)); +assign Y65ju6 = (Nl2ju6 ? Ys4ju6 : Tt4ju6); +assign Nl2ju6 = (!D5epw6); +assign D65ju6 = (~(Ys4ju6 & D5epw6)); +assign D5epw6 = (F75ju6 | M75ju6); +assign F75ju6 = (Aioiu6 ? A85ju6 : T75ju6); +assign P55ju6 = (H85ju6 & O85ju6); +assign O85ju6 = (~(By4ju6 & Eafpw6[31])); +assign H85ju6 = (~(Iy4ju6 & Aioiu6)); +assign K5liu6 = (V85ju6 & C95ju6); +assign C95ju6 = (J95ju6 & Q95ju6); +assign Q95ju6 = (~(X95ju6 & Sg0iu6)); +assign X95ju6 = (Ys4ju6 & Qbfpw6[30]); +assign J95ju6 = (~(Affpw6[30] | Ea5ju6)); +assign Ea5ju6 = (Iy4ju6 & T6liu6); +assign V85ju6 = (La5ju6 & Sa5ju6); +assign Sa5ju6 = (~(Za5ju6 & Gb5ju6)); +assign Gb5ju6 = (Nb5ju6 | Ub5ju6); +assign Nb5ju6 = (Mt4ju6 | Qbfpw6[30]); +assign Za5ju6 = (~(Bc5ju6 & Ic5ju6)); +assign Bc5ju6 = (Sg0iu6 | Pc5ju6); +assign Pc5ju6 = (Wc5ju6 & Qbfpw6[30]); +assign Qbfpw6[30] = (Dd5ju6 | M75ju6); +assign Dd5ju6 = (T6liu6 ? A85ju6 : T75ju6); +assign La5ju6 = (Kd5ju6 & Rd5ju6); +assign Rd5ju6 = (~(vis_apsr_o[2] & I55ju6)); +assign Kd5ju6 = (~(By4ju6 & Eafpw6[30])); +assign Li4ju6 = (Yd5ju6 & Fe5ju6); +assign Fe5ju6 = (Cgkiu6 & Evkiu6); +assign Evkiu6 = (Me5ju6 & Te5ju6); +assign Te5ju6 = (Af5ju6 & Hf5ju6); +assign Hf5ju6 = (~(By4ju6 & Eafpw6[23])); +assign Af5ju6 = (~(Affpw6[23] | Of5ju6)); +assign Of5ju6 = (~(Vf5ju6 | Fk0iu6)); +assign Vf5ju6 = (Qbfpw6[23] ? Wc5ju6 : Cg5ju6); +assign Me5ju6 = (Jg5ju6 & Qg5ju6); +assign Qg5ju6 = (~(Iy4ju6 & Xg5ju6)); +assign Jg5ju6 = (~(Ub5ju6 & Eh5ju6)); +assign Eh5ju6 = (~(Lh5ju6 & Ic5ju6)); +assign Lh5ju6 = (~(Fk0iu6 & Qbfpw6[23])); +assign Qbfpw6[23] = (~(Sh5ju6 ^ Hu4ju6)); +assign Sh5ju6 = (Zh5ju6 | Gi5ju6); +assign Gi5ju6 = (D7fpw6[13] ? Ui5ju6 : Ni5ju6); +assign Ni5ju6 = (~(Gx4ju6 | S8fpw6[11])); +assign Zh5ju6 = (~(Bj5ju6 & Ij5ju6)); +assign Bj5ju6 = (~(Sw4ju6 & Xg5ju6)); +assign Cgkiu6 = (Pj5ju6 & Wj5ju6); +assign Wj5ju6 = (Dk5ju6 & Kk5ju6); +assign Kk5ju6 = (~(Affpw6[2] | Rk5ju6)); +assign Rk5ju6 = (Yk5ju6 & L8ehu6); +assign Yk5ju6 = (P8oiu6 & H6ghu6); +assign Dk5ju6 = (Fl5ju6 & Ml5ju6); +assign Ml5ju6 = (~(Pk4ju6 & vis_ipsr_o[2])); +assign Fl5ju6 = (~(By4ju6 & Eafpw6[2])); +assign Pj5ju6 = (Tl5ju6 & Am5ju6); +assign Am5ju6 = (Gh0iu6 ? Om5ju6 : Hm5ju6); +assign Gh0iu6 = (Cn5ju6 ? Fkfpw6[2] : Vm5ju6); +assign Vm5ju6 = (~(Jn5ju6 & Qn5ju6)); +assign Qn5ju6 = (Xn5ju6 & Eo5ju6); +assign Eo5ju6 = (Lo5ju6 & So5ju6); +assign So5ju6 = (~(Jo4ju6 & vis_r14_o[2])); +assign Lo5ju6 = (Zo5ju6 & Gp5ju6); +assign Gp5ju6 = (~(Ep4ju6 & vis_psp_o[0])); +assign Zo5ju6 = (~(Lp4ju6 & vis_msp_o[0])); +assign Xn5ju6 = (Np5ju6 & Up5ju6); +assign Up5ju6 = (~(Gq4ju6 & vis_r12_o[2])); +assign Np5ju6 = (~(Nq4ju6 & vis_r11_o[2])); +assign Jn5ju6 = (Bq5ju6 & Iq5ju6); +assign Iq5ju6 = (Pq5ju6 & Wq5ju6); +assign Wq5ju6 = (~(Wr4ju6 & vis_r10_o[2])); +assign Pq5ju6 = (~(Ds4ju6 & vis_r9_o[2])); +assign Bq5ju6 = (F60iu6 & Dr5ju6); +assign Dr5ju6 = (~(Rs4ju6 & vis_r8_o[2])); +assign Om5ju6 = (~(Kr5ju6 | Mt4ju6)); +assign Kr5ju6 = (Qbfpw6[2] ? Tt4ju6 : Ys4ju6); +assign Hm5ju6 = (~(Ys4ju6 & Qbfpw6[2])); +assign Qbfpw6[2] = (~(Rr5ju6 ^ Hu4ju6)); +assign Rr5ju6 = (~(Yr5ju6 & Fs5ju6)); +assign Fs5ju6 = (Ms5ju6 & Ts5ju6); +assign Ts5ju6 = (~(S8fpw6[2] & E35ju6)); +assign Ms5ju6 = (Je8iu6 | Qv4ju6); +assign Yr5ju6 = (At5ju6 & Ht5ju6); +assign Ht5ju6 = (~(Sw4ju6 & Ot5ju6)); +assign At5ju6 = (Ccaiu6 | Gx4ju6); +assign Tl5ju6 = (Vt5ju6 & Cu5ju6); +assign Cu5ju6 = (~(Iy4ju6 & Ot5ju6)); +assign Vt5ju6 = (~(vis_control_o & Wk4ju6)); +assign Yd5ju6 = (Lokiu6 & Dkkiu6); +assign Dkkiu6 = (Ju5ju6 & Qu5ju6); +assign Qu5ju6 = (Xu5ju6 & Ev5ju6); +assign Ev5ju6 = (~(By4ju6 & Eafpw6[3])); +assign Xu5ju6 = (~(Affpw6[3] | Lv5ju6)); +assign Lv5ju6 = (Pk4ju6 & vis_ipsr_o[3]); +assign Ju5ju6 = (Sv5ju6 & Zv5ju6); +assign Zv5ju6 = (Lg0iu6 ? Nw5ju6 : Gw5ju6); +assign Lg0iu6 = (Mm4ju6 ? Uw5ju6 : Wjkiu6); +assign Uw5ju6 = (Bx5ju6 & Ix5ju6); +assign Ix5ju6 = (Px5ju6 & Wx5ju6); +assign Wx5ju6 = (Dy5ju6 & Ky5ju6); +assign Ky5ju6 = (~(Jo4ju6 & vis_r14_o[3])); +assign Dy5ju6 = (Ry5ju6 & Yy5ju6); +assign Yy5ju6 = (~(Ep4ju6 & vis_psp_o[1])); +assign Ry5ju6 = (~(Lp4ju6 & vis_msp_o[1])); +assign Px5ju6 = (Fz5ju6 & Mz5ju6); +assign Mz5ju6 = (~(Gq4ju6 & vis_r12_o[3])); +assign Fz5ju6 = (~(Nq4ju6 & vis_r11_o[3])); +assign Bx5ju6 = (Tz5ju6 & A06ju6); +assign A06ju6 = (H06ju6 & O06ju6); +assign O06ju6 = (~(Wr4ju6 & vis_r10_o[3])); +assign H06ju6 = (~(Ds4ju6 & vis_r9_o[3])); +assign Tz5ju6 = (K50iu6 & V06ju6); +assign V06ju6 = (~(Rs4ju6 & vis_r8_o[3])); +assign Wjkiu6 = (!Fkfpw6[3]); +assign Nw5ju6 = (~(Ys4ju6 & Qbfpw6[3])); +assign Gw5ju6 = (~(C16ju6 | Mt4ju6)); +assign C16ju6 = (Qbfpw6[3] ? Tt4ju6 : Ys4ju6); +assign Qbfpw6[3] = (~(J16ju6 ^ Hu4ju6)); +assign J16ju6 = (~(Q16ju6 & X16ju6)); +assign X16ju6 = (E26ju6 & L26ju6); +assign L26ju6 = (Y8biu6 | Qv4ju6); +assign E26ju6 = (~(S8fpw6[3] & Xv4ju6)); +assign Q16ju6 = (S26ju6 & Z26ju6); +assign Z26ju6 = (~(Sw4ju6 & G36ju6)); +assign S26ju6 = (Prjiu6 | Gx4ju6); +assign Sv5ju6 = (N36ju6 & U36ju6); +assign U36ju6 = (~(Iy4ju6 & G36ju6)); +assign N36ju6 = (~(Hlliu6 & Wk4ju6)); +assign Lokiu6 = (B46ju6 & I46ju6); +assign I46ju6 = (P46ju6 & W46ju6); +assign W46ju6 = (~(Pk4ju6 & vis_ipsr_o[5])); +assign P46ju6 = (~(Affpw6[5] | Wk4ju6)); +assign B46ju6 = (D56ju6 & K56ju6); +assign K56ju6 = (Xf0iu6 ? Y56ju6 : R56ju6); +assign Xf0iu6 = (Mm4ju6 ? F66ju6 : Eokiu6); +assign F66ju6 = (M66ju6 & T66ju6); +assign T66ju6 = (A76ju6 & H76ju6); +assign H76ju6 = (O76ju6 & V76ju6); +assign V76ju6 = (~(Jo4ju6 & vis_r14_o[5])); +assign O76ju6 = (C86ju6 & J86ju6); +assign J86ju6 = (~(Ep4ju6 & vis_psp_o[3])); +assign C86ju6 = (~(Lp4ju6 & vis_msp_o[3])); +assign A76ju6 = (Q86ju6 & X86ju6); +assign X86ju6 = (~(Gq4ju6 & vis_r12_o[5])); +assign Q86ju6 = (~(Nq4ju6 & vis_r11_o[5])); +assign M66ju6 = (E96ju6 & L96ju6); +assign L96ju6 = (S96ju6 & Z96ju6); +assign Z96ju6 = (~(Wr4ju6 & vis_r10_o[5])); +assign S96ju6 = (~(Ds4ju6 & vis_r9_o[5])); +assign E96ju6 = (W40iu6 & Ga6ju6); +assign Ga6ju6 = (~(Rs4ju6 & vis_r8_o[5])); +assign Eokiu6 = (!Fkfpw6[5]); +assign Y56ju6 = (~(Ys4ju6 & Qbfpw6[5])); +assign R56ju6 = (~(Na6ju6 | Mt4ju6)); +assign Na6ju6 = (Qbfpw6[5] ? Tt4ju6 : Ys4ju6); +assign Qbfpw6[5] = (~(Ua6ju6 ^ Hu4ju6)); +assign Ua6ju6 = (~(Bb6ju6 & Ib6ju6)); +assign Ib6ju6 = (Pb6ju6 & Wb6ju6); +assign Wb6ju6 = (Cajiu6 | Qv4ju6); +assign Qv4ju6 = (~(Dc6ju6 | Kc6ju6)); +assign Dc6ju6 = (H6ghu6 & Rc6ju6); +assign Rc6ju6 = (~(Yc6ju6 & Fd6ju6)); +assign Fd6ju6 = (Md6ju6 & Fmjiu6); +assign Md6ju6 = (~(Td6ju6 & Cyfpw6[7])); +assign Td6ju6 = (Ae6ju6 & Jjhiu6); +assign Ae6ju6 = (~(He6ju6 & Oe6ju6)); +assign Oe6ju6 = (X5oiu6 | Tfjiu6); +assign Yc6ju6 = (Ve6ju6 & Cf6ju6); +assign Cf6ju6 = (~(Cyfpw6[0] & F1jiu6)); +assign F1jiu6 = (Xzmiu6 | Toaiu6); +assign Ve6ju6 = (~(Jf6ju6 & Oiaiu6)); +assign Pb6ju6 = (~(S8fpw6[5] & Xv4ju6)); +assign Bb6ju6 = (Qf6ju6 & Xf6ju6); +assign Xf6ju6 = (~(Sw4ju6 & Eg6ju6)); +assign Qf6ju6 = (Gx4ju6 | A1kiu6); +assign D56ju6 = (Lg6ju6 & Sg6ju6); +assign Sg6ju6 = (~(By4ju6 & Eafpw6[5])); +assign Lg6ju6 = (~(Iy4ju6 & Eg6ju6)); +assign Xh4ju6 = (Zg6ju6 & Gh6ju6); +assign Gh6ju6 = (Nh6ju6 & Uh6ju6); +assign Uh6ju6 = (~(Jukiu6 | Pqkiu6)); +assign Pqkiu6 = (~(Bi6ju6 & Ii6ju6)); +assign Ii6ju6 = (Pi6ju6 & Wi6ju6); +assign Wi6ju6 = (~(By4ju6 & Eafpw6[6])); +assign Pi6ju6 = (~(Affpw6[6] | Dj6ju6)); +assign Dj6ju6 = (Iy4ju6 & Kj6ju6); +assign Bi6ju6 = (Rj6ju6 & Yj6ju6); +assign Yj6ju6 = (Fk6ju6 | Mk6ju6); +assign Fk6ju6 = (E2epw6 ? Wc5ju6 : Cg5ju6); +assign Rj6ju6 = (~(Ub5ju6 & Tk6ju6)); +assign Tk6ju6 = (~(Al6ju6 & Ic5ju6)); +assign Al6ju6 = (~(Mk6ju6 & E2epw6)); +assign E2epw6 = (Hl6ju6 ^ Ol6ju6); +assign Hl6ju6 = (~(Vl6ju6 & Cm6ju6)); +assign Cm6ju6 = (Jm6ju6 & Qm6ju6); +assign Qm6ju6 = (~(Kc6ju6 & S8fpw6[4])); +assign Jm6ju6 = (~(S8fpw6[6] & Xv4ju6)); +assign Vl6ju6 = (Xm6ju6 & En6ju6); +assign En6ju6 = (~(Sw4ju6 & Kj6ju6)); +assign Xm6ju6 = (Gx4ju6 | Dzjiu6); +assign Mk6ju6 = (!Qf0iu6); +assign Jukiu6 = (~(Ln6ju6 & Sn6ju6)); +assign Sn6ju6 = (Zn6ju6 & Go6ju6); +assign Go6ju6 = (~(By4ju6 & Eafpw6[7])); +assign Zn6ju6 = (~(Affpw6[7] | No6ju6)); +assign No6ju6 = (Iy4ju6 & Uo6ju6); +assign Ln6ju6 = (Bp6ju6 & Ip6ju6); +assign Ip6ju6 = (~(Ub5ju6 & Pp6ju6)); +assign Pp6ju6 = (~(Wp6ju6 & Ic5ju6)); +assign Wp6ju6 = (~(Jf0iu6 & S2epw6)); +assign Bp6ju6 = (Dq6ju6 | Jf0iu6); +assign Jf0iu6 = (Mm4ju6 ? Kq6ju6 : Cukiu6); +assign Kq6ju6 = (Rq6ju6 & Yq6ju6); +assign Yq6ju6 = (Fr6ju6 & Mr6ju6); +assign Mr6ju6 = (Tr6ju6 & As6ju6); +assign As6ju6 = (~(Jo4ju6 & vis_r14_o[7])); +assign Tr6ju6 = (Hs6ju6 & Os6ju6); +assign Os6ju6 = (~(Ep4ju6 & vis_psp_o[5])); +assign Hs6ju6 = (~(Lp4ju6 & vis_msp_o[5])); +assign Fr6ju6 = (Vs6ju6 & Ct6ju6); +assign Ct6ju6 = (~(Gq4ju6 & vis_r12_o[7])); +assign Vs6ju6 = (~(Nq4ju6 & vis_r11_o[7])); +assign Rq6ju6 = (Jt6ju6 & Qt6ju6); +assign Qt6ju6 = (Xt6ju6 & Eu6ju6); +assign Eu6ju6 = (~(Wr4ju6 & vis_r10_o[7])); +assign Xt6ju6 = (~(Ds4ju6 & vis_r9_o[7])); +assign Jt6ju6 = (I40iu6 & Lu6ju6); +assign Lu6ju6 = (~(Rs4ju6 & vis_r8_o[7])); +assign Cukiu6 = (!Fkfpw6[7]); +assign Dq6ju6 = (S2epw6 ? Wc5ju6 : Cg5ju6); +assign S2epw6 = (~(Su6ju6 ^ Hu4ju6)); +assign Su6ju6 = (~(Zu6ju6 & Gv6ju6)); +assign Gv6ju6 = (Nv6ju6 & Uv6ju6); +assign Uv6ju6 = (~(Kc6ju6 & S8fpw6[5])); +assign Nv6ju6 = (~(S8fpw6[7] & Xv4ju6)); +assign Zu6ju6 = (Bw6ju6 & Iw6ju6); +assign Iw6ju6 = (~(Sw4ju6 & Uo6ju6)); +assign Bw6ju6 = (Gx4ju6 | Ad8iu6); +assign Nh6ju6 = (~(J1liu6 | Yykiu6)); +assign Yykiu6 = (~(Pw6ju6 & Ww6ju6)); +assign Ww6ju6 = (Dx6ju6 & Kx6ju6); +assign Kx6ju6 = (~(By4ju6 & Eafpw6[24])); +assign Dx6ju6 = (~(Affpw6[24] | Wk4ju6)); +assign Pw6ju6 = (Rx6ju6 & Yx6ju6); +assign Yx6ju6 = (~(Iy4ju6 & Fy6ju6)); +assign Rx6ju6 = (Yj0iu6 ? Ty6ju6 : My6ju6); +assign Ty6ju6 = (~(Ys4ju6 & Qbfpw6[24])); +assign My6ju6 = (~(Az6ju6 | Mt4ju6)); +assign Az6ju6 = (Qbfpw6[24] ? Tt4ju6 : Ys4ju6); +assign Qbfpw6[24] = (Hz6ju6 | M75ju6); +assign Hz6ju6 = (Fy6ju6 ? A85ju6 : T75ju6); +assign J1liu6 = (~(Oz6ju6 & Vz6ju6)); +assign Vz6ju6 = (C07ju6 & J07ju6); +assign J07ju6 = (~(By4ju6 & Eafpw6[26])); +assign C07ju6 = (~(Affpw6[26] | Q07ju6)); +assign Q07ju6 = (~(X07ju6 | E17ju6)); +assign X07ju6 = (Qbfpw6[26] ? Wc5ju6 : Cg5ju6); +assign Oz6ju6 = (L17ju6 & S17ju6); +assign S17ju6 = (~(Iy4ju6 & Z17ju6)); +assign L17ju6 = (~(Ub5ju6 & G27ju6)); +assign G27ju6 = (~(N27ju6 & Ic5ju6)); +assign N27ju6 = (~(E17ju6 & Qbfpw6[26])); +assign Qbfpw6[26] = (U27ju6 | M75ju6); +assign U27ju6 = (Z17ju6 ? A85ju6 : T75ju6); +assign E17ju6 = (!Kj0iu6); +assign Zg6ju6 = (B37ju6 & I37ju6); +assign I37ju6 = (~(W4liu6 | B4liu6)); +assign B4liu6 = (~(P37ju6 & W37ju6)); +assign W37ju6 = (D47ju6 & K47ju6); +assign K47ju6 = (~(By4ju6 & Eafpw6[27])); +assign D47ju6 = (~(Affpw6[27] | R47ju6)); +assign R47ju6 = (~(Y47ju6 | F57ju6)); +assign Y47ju6 = (Qbfpw6[27] ? Wc5ju6 : Cg5ju6); +assign P37ju6 = (M57ju6 & T57ju6); +assign T57ju6 = (~(Iy4ju6 & A67ju6)); +assign M57ju6 = (~(Ub5ju6 & H67ju6)); +assign H67ju6 = (~(O67ju6 & Ic5ju6)); +assign O67ju6 = (~(F57ju6 & Qbfpw6[27])); +assign Qbfpw6[27] = (V67ju6 | M75ju6); +assign V67ju6 = (A67ju6 ? A85ju6 : T75ju6); +assign F57ju6 = (!Dj0iu6); +assign W4liu6 = (~(C77ju6 & J77ju6)); +assign J77ju6 = (Q77ju6 & X77ju6); +assign X77ju6 = (~(I55ju6 & vis_apsr_o[1])); +assign Q77ju6 = (~(Affpw6[29] | Wk4ju6)); +assign C77ju6 = (E87ju6 & L87ju6); +assign L87ju6 = (Pi0iu6 ? Z87ju6 : S87ju6); +assign Z87ju6 = (~(Ys4ju6 & Qbfpw6[29])); +assign S87ju6 = (~(G97ju6 | Mt4ju6)); +assign G97ju6 = (Qbfpw6[29] ? Tt4ju6 : Ys4ju6); +assign Qbfpw6[29] = (N97ju6 | M75ju6); +assign N97ju6 = (Wh8iu6 ? A85ju6 : T75ju6); +assign E87ju6 = (U97ju6 & Ba7ju6); +assign Ba7ju6 = (~(By4ju6 & Eafpw6[29])); +assign U97ju6 = (~(Iy4ju6 & Wh8iu6)); +assign B37ju6 = (Kgoiu6 & Bpliu6); +assign Bpliu6 = (Ia7ju6 & Pa7ju6); +assign Pa7ju6 = (Wa7ju6 & Db7ju6); +assign Db7ju6 = (~(Pk4ju6 & vis_ipsr_o[1])); +assign Pk4ju6 = (Kb7ju6 & T05ju6); +assign Kb7ju6 = (~(Je8iu6 | S8fpw6[4])); +assign Wa7ju6 = (~(Affpw6[1] | Rb7ju6)); +assign Rb7ju6 = (Yb7ju6 & Fc7ju6); +assign Fc7ju6 = (~(B5kiu6 | Qjoiu6)); +assign Yb7ju6 = (vis_control_o & T05ju6); +assign Ia7ju6 = (Mc7ju6 & Tc7ju6); +assign Tc7ju6 = (Hl0iu6 ? Hd7ju6 : Ad7ju6); +assign Hd7ju6 = (~(Ys4ju6 & Qbfpw6[1])); +assign Ad7ju6 = (~(Od7ju6 | Mt4ju6)); +assign Od7ju6 = (Qbfpw6[1] ? Tt4ju6 : Ys4ju6); +assign Qbfpw6[1] = (~(Vd7ju6 ^ Hu4ju6)); +assign Vd7ju6 = (~(Ce7ju6 & Je7ju6)); +assign Je7ju6 = (Rb8iu6 | Gx4ju6); +assign Ce7ju6 = (Qe7ju6 & Xe7ju6); +assign Xe7ju6 = (~(S8fpw6[1] & E35ju6)); +assign E35ju6 = (Xv4ju6 | Ef7ju6); +assign Ef7ju6 = (Lf7ju6 & Sf7ju6); +assign Lf7ju6 = (H6ghu6 & Cyfpw6[1]); +assign Xv4ju6 = (Zf7ju6 | Gg7ju6); +assign Gg7ju6 = (H6ghu6 & Ng7ju6); +assign Ng7ju6 = (~(Ug7ju6 & Bh7ju6)); +assign Bh7ju6 = (~(Ih7ju6 & K9aiu6)); +assign Ih7ju6 = (~(Ph7ju6 & Wh7ju6)); +assign Ph7ju6 = (M32ju6 | Cyfpw6[6]); +assign Ug7ju6 = (Di7ju6 & Ki7ju6); +assign Ki7ju6 = (~(Fd0iu6 & Ri7ju6)); +assign Ri7ju6 = (Mo2ju6 | Yi7ju6); +assign Di7ju6 = (~(C0ehu6 & Fj7ju6)); +assign Fj7ju6 = (~(O60ju6 & Mj7ju6)); +assign Mj7ju6 = (~(Jf6ju6 & Cyfpw6[0])); +assign Qe7ju6 = (~(Sw4ju6 & Znliu6)); +assign Mc7ju6 = (Tj7ju6 & Ak7ju6); +assign Ak7ju6 = (~(By4ju6 & Eafpw6[1])); +assign Tj7ju6 = (~(Iy4ju6 & Znliu6)); +assign Kgoiu6 = (Hk7ju6 & Ok7ju6); +assign Ok7ju6 = (Vk7ju6 & Cl7ju6); +assign Cl7ju6 = (~(vis_apsr_o[0] & I55ju6)); +assign I55ju6 = (Jl7ju6 & T05ju6); +assign T05ju6 = (Ql7ju6 & Xl7ju6); +assign Xl7ju6 = (~(Qxaiu6 | C0ehu6)); +assign Ql7ju6 = (H6ghu6 & D31ju6); +assign Jl7ju6 = (~(S8fpw6[2] | S8fpw6[4])); +assign Vk7ju6 = (~(Affpw6[28] | Wk4ju6)); +assign Hk7ju6 = (Em7ju6 & Lm7ju6); +assign Lm7ju6 = (Wi0iu6 ? Zm7ju6 : Sm7ju6); +assign Zm7ju6 = (~(Ys4ju6 & Qbfpw6[28])); +assign Sm7ju6 = (~(Gn7ju6 | Mt4ju6)); +assign Gn7ju6 = (Qbfpw6[28] ? Tt4ju6 : Ys4ju6); +assign Qbfpw6[28] = (Nn7ju6 | M75ju6); +assign Nn7ju6 = (Mbniu6 ? T75ju6 : A85ju6); +assign Em7ju6 = (Un7ju6 & Bo7ju6); +assign Bo7ju6 = (~(By4ju6 & Eafpw6[28])); +assign Un7ju6 = (Io7ju6 | Mbniu6); +assign Mbniu6 = (!Po7ju6); +assign Jh4ju6 = (Wo7ju6 & Dp7ju6); +assign Dp7ju6 = (Kp7ju6 & Rp7ju6); +assign Rp7ju6 = (Yp7ju6 & Fq7ju6); +assign Fq7ju6 = (~(R3niu6 | L7niu6)); +assign L7niu6 = (~(Mq7ju6 & Tq7ju6)); +assign Tq7ju6 = (Ar7ju6 & Hr7ju6); +assign Hr7ju6 = (~(Or7ju6 & Ub5ju6)); +assign Or7ju6 = (~(Ic5ju6 & Vr7ju6)); +assign Vr7ju6 = (~(Ve0iu6 & W4epw6)); +assign Ar7ju6 = (~(Affpw6[8] | Cs7ju6)); +assign Cs7ju6 = (~(Js7ju6 | Ve0iu6)); +assign Ve0iu6 = (Mm4ju6 ? Qs7ju6 : Q6niu6); +assign Qs7ju6 = (Xs7ju6 & Et7ju6); +assign Et7ju6 = (Lt7ju6 & St7ju6); +assign St7ju6 = (Zt7ju6 & Gu7ju6); +assign Gu7ju6 = (~(Jo4ju6 & vis_r14_o[8])); +assign Zt7ju6 = (Nu7ju6 & Uu7ju6); +assign Uu7ju6 = (~(Ep4ju6 & vis_psp_o[6])); +assign Nu7ju6 = (~(Lp4ju6 & vis_msp_o[6])); +assign Lt7ju6 = (Bv7ju6 & Iv7ju6); +assign Iv7ju6 = (~(Gq4ju6 & vis_r12_o[8])); +assign Bv7ju6 = (~(Nq4ju6 & vis_r11_o[8])); +assign Xs7ju6 = (Pv7ju6 & Wv7ju6); +assign Wv7ju6 = (Dw7ju6 & Kw7ju6); +assign Kw7ju6 = (~(Wr4ju6 & vis_r10_o[8])); +assign Dw7ju6 = (~(Ds4ju6 & vis_r9_o[8])); +assign Pv7ju6 = (B40iu6 & Rw7ju6); +assign Rw7ju6 = (~(Rs4ju6 & vis_r8_o[8])); +assign Q6niu6 = (!Fkfpw6[8]); +assign Js7ju6 = (W4epw6 ? Wc5ju6 : Cg5ju6); +assign W4epw6 = (~(Yw7ju6 ^ Hu4ju6)); +assign Yw7ju6 = (~(Fx7ju6 & Mx7ju6)); +assign Mx7ju6 = (Tx7ju6 & Ay7ju6); +assign Ay7ju6 = (~(Kc6ju6 & S8fpw6[6])); +assign Tx7ju6 = (~(Zf7ju6 & S8fpw6[8])); +assign Fx7ju6 = (Hy7ju6 & Oy7ju6); +assign Oy7ju6 = (Vy7ju6 | Cz7ju6); +assign Hy7ju6 = (O95iu6 | Gx4ju6); +assign Mq7ju6 = (Jz7ju6 & Qz7ju6); +assign Qz7ju6 = (~(By4ju6 & Eafpw6[8])); +assign Jz7ju6 = (Io7ju6 | Cz7ju6); +assign R3niu6 = (~(Xz7ju6 & E08ju6)); +assign E08ju6 = (L08ju6 & S08ju6); +assign S08ju6 = (~(By4ju6 & Eafpw6[9])); +assign L08ju6 = (~(Affpw6[9] | Z08ju6)); +assign Z08ju6 = (~(G18ju6 | N18ju6)); +assign G18ju6 = (Q5phu6 ? Wc5ju6 : Cg5ju6); +assign Xz7ju6 = (U18ju6 & B28ju6); +assign B28ju6 = (Io7ju6 | I28ju6); +assign U18ju6 = (~(Ub5ju6 & P28ju6)); +assign P28ju6 = (~(W28ju6 & Ic5ju6)); +assign W28ju6 = (~(N18ju6 & Q5phu6)); +assign Q5phu6 = (D38ju6 ^ Ol6ju6); +assign D38ju6 = (~(K38ju6 & R38ju6)); +assign R38ju6 = (Y38ju6 & F48ju6); +assign F48ju6 = (~(Kc6ju6 & S8fpw6[7])); +assign Kc6ju6 = (H6ghu6 & M48ju6); +assign M48ju6 = (~(T48ju6 & A58ju6)); +assign A58ju6 = (Cyfpw6[3] ? O58ju6 : H58ju6); +assign O58ju6 = (V58ju6 | Jc2ju6); +assign H58ju6 = (Szniu6 | Knaiu6); +assign T48ju6 = (C68ju6 & J68ju6); +assign J68ju6 = (~(Y2aiu6 & Vo3ju6)); +assign Y2aiu6 = (Q68ju6 & Fd0iu6); +assign Q68ju6 = (~(As0iu6 | C0ehu6)); +assign C68ju6 = (~(D6kiu6 & X68ju6)); +assign X68ju6 = (~(E78ju6 & Jc2ju6)); +assign E78ju6 = (~(L78ju6 | Cyfpw6[3])); +assign Y38ju6 = (~(Zf7ju6 & S8fpw6[9])); +assign K38ju6 = (S78ju6 & Z78ju6); +assign Z78ju6 = (Vy7ju6 | I28ju6); +assign S78ju6 = (Ndiiu6 | Gx4ju6); +assign N18ju6 = (!He0iu6); +assign Yp7ju6 = (~(Vsliu6 | Vymiu6)); +assign Vymiu6 = (~(G88ju6 & N88ju6)); +assign N88ju6 = (U88ju6 & B98ju6); +assign B98ju6 = (~(By4ju6 & Eafpw6[10])); +assign U88ju6 = (~(Affpw6[10] | I98ju6)); +assign I98ju6 = (~(P98ju6 | Zn0iu6)); +assign P98ju6 = (Qbfpw6[10] ? Wc5ju6 : Cg5ju6); +assign G88ju6 = (W98ju6 & Da8ju6); +assign Da8ju6 = (Io7ju6 | Ka8ju6); +assign Io7ju6 = (!Iy4ju6); +assign W98ju6 = (~(Ub5ju6 & Ra8ju6)); +assign Ra8ju6 = (~(Ya8ju6 & Ic5ju6)); +assign Ya8ju6 = (~(Zn0iu6 & Qbfpw6[10])); +assign Qbfpw6[10] = (~(Fb8ju6 ^ Hu4ju6)); +assign Fb8ju6 = (~(Mb8ju6 & Tb8ju6)); +assign Tb8ju6 = (Tniiu6 | Gx4ju6); +assign Mb8ju6 = (Ac8ju6 & Hc8ju6); +assign Hc8ju6 = (~(Zf7ju6 & S8fpw6[10])); +assign Ac8ju6 = (Vy7ju6 | Ka8ju6); +assign Zn0iu6 = (Cn5ju6 ? Aymiu6 : Oc8ju6); +assign Aymiu6 = (!Fkfpw6[10]); +assign Oc8ju6 = (Vc8ju6 & Cd8ju6); +assign Cd8ju6 = (Jd8ju6 & Qd8ju6); +assign Qd8ju6 = (Xd8ju6 & Ee8ju6); +assign Ee8ju6 = (~(Jo4ju6 & vis_r14_o[10])); +assign Xd8ju6 = (Le8ju6 & Se8ju6); +assign Se8ju6 = (~(Ep4ju6 & vis_psp_o[8])); +assign Le8ju6 = (~(Lp4ju6 & vis_msp_o[8])); +assign Jd8ju6 = (Ze8ju6 & Gf8ju6); +assign Gf8ju6 = (~(Gq4ju6 & vis_r12_o[10])); +assign Ze8ju6 = (~(Nq4ju6 & vis_r11_o[10])); +assign Vc8ju6 = (Nf8ju6 & Uf8ju6); +assign Uf8ju6 = (Bg8ju6 & Ig8ju6); +assign Ig8ju6 = (~(Wr4ju6 & vis_r10_o[10])); +assign Bg8ju6 = (~(Ds4ju6 & vis_r9_o[10])); +assign Nf8ju6 = (Wb0iu6 & Pg8ju6); +assign Pg8ju6 = (~(Rs4ju6 & vis_r8_o[10])); +assign Vsliu6 = (~(Wg8ju6 & Dh8ju6)); +assign Dh8ju6 = (Kh8ju6 & Rh8ju6); +assign Rh8ju6 = (~(By4ju6 & Eafpw6[25])); +assign Kh8ju6 = (~(Affpw6[25] | Yh8ju6)); +assign Yh8ju6 = (~(Fi8ju6 | Mi8ju6)); +assign Fi8ju6 = (Qbfpw6[25] ? Wc5ju6 : Cg5ju6); +assign Wg8ju6 = (Ti8ju6 & Aj8ju6); +assign Aj8ju6 = (~(Iy4ju6 & Goliu6)); +assign Ti8ju6 = (~(Ub5ju6 & Hj8ju6)); +assign Hj8ju6 = (~(Oj8ju6 & Ic5ju6)); +assign Oj8ju6 = (~(Mi8ju6 & Qbfpw6[25])); +assign Qbfpw6[25] = (Vj8ju6 | M75ju6); +assign M75ju6 = (~(Ck8ju6 & Jk8ju6)); +assign Jk8ju6 = (~(T75ju6 & Vy7ju6)); +assign Ck8ju6 = (~(Hu4ju6 & Qk8ju6)); +assign Qk8ju6 = (~(Xk8ju6 & Ij5ju6)); +assign Vj8ju6 = (Goliu6 ? A85ju6 : T75ju6); +assign A85ju6 = (~(Vy7ju6 | Ol6ju6)); +assign T75ju6 = (El8ju6 & Ol6ju6); +assign Ol6ju6 = (!Hu4ju6); +assign El8ju6 = (Xk8ju6 & Ij5ju6); +assign Mi8ju6 = (!Rj0iu6); +assign Kp7ju6 = (Ll8ju6 & Sl8ju6); +assign Sl8ju6 = (~(Pomiu6 | Bvmiu6)); +assign Bvmiu6 = (~(Zl8ju6 & Gm8ju6)); +assign Gm8ju6 = (Nm8ju6 & Um8ju6); +assign Um8ju6 = (~(By4ju6 & Eafpw6[11])); +assign Nm8ju6 = (~(Affpw6[11] | Bn8ju6)); +assign Bn8ju6 = (Iy4ju6 & In8ju6); +assign Zl8ju6 = (Pn8ju6 & Wn8ju6); +assign Wn8ju6 = (~(Ub5ju6 & Do8ju6)); +assign Do8ju6 = (~(Ko8ju6 & Ic5ju6)); +assign Ko8ju6 = (~(Sn0iu6 & C1epw6)); +assign Pn8ju6 = (Ro8ju6 | Sn0iu6); +assign Sn0iu6 = (Cn5ju6 ? Ormiu6 : Yo8ju6); +assign Ormiu6 = (!Fkfpw6[11]); +assign Yo8ju6 = (Fp8ju6 & Mp8ju6); +assign Mp8ju6 = (Tp8ju6 & Aq8ju6); +assign Aq8ju6 = (Hq8ju6 & Oq8ju6); +assign Oq8ju6 = (~(Jo4ju6 & vis_r14_o[11])); +assign Hq8ju6 = (Vq8ju6 & Cr8ju6); +assign Cr8ju6 = (~(Ep4ju6 & vis_psp_o[9])); +assign Vq8ju6 = (~(Lp4ju6 & vis_msp_o[9])); +assign Tp8ju6 = (Jr8ju6 & Qr8ju6); +assign Qr8ju6 = (~(Gq4ju6 & vis_r12_o[11])); +assign Jr8ju6 = (~(Nq4ju6 & vis_r11_o[11])); +assign Fp8ju6 = (Xr8ju6 & Es8ju6); +assign Es8ju6 = (Ls8ju6 & Ss8ju6); +assign Ss8ju6 = (~(Wr4ju6 & vis_r10_o[11])); +assign Ls8ju6 = (~(Ds4ju6 & vis_r9_o[11])); +assign Xr8ju6 = (Pb0iu6 & Zs8ju6); +assign Zs8ju6 = (~(Rs4ju6 & vis_r8_o[11])); +assign Ro8ju6 = (C1epw6 ? Wc5ju6 : Cg5ju6); +assign C1epw6 = (~(Gt8ju6 ^ Hu4ju6)); +assign Gt8ju6 = (~(Nt8ju6 & Ut8ju6)); +assign Ut8ju6 = (I6jiu6 | Gx4ju6); +assign Nt8ju6 = (Bu8ju6 & Ij5ju6); +assign Bu8ju6 = (~(Sw4ju6 & In8ju6)); +assign Pomiu6 = (~(Iu8ju6 & Pu8ju6)); +assign Pu8ju6 = (Wu8ju6 & Dv8ju6); +assign Dv8ju6 = (~(By4ju6 & Eafpw6[12])); +assign Wu8ju6 = (~(Affpw6[12] | Kv8ju6)); +assign Kv8ju6 = (Iy4ju6 & Rv8ju6); +assign Iu8ju6 = (Yv8ju6 & Fw8ju6); +assign Fw8ju6 = (~(Ub5ju6 & Mw8ju6)); +assign Mw8ju6 = (~(Tw8ju6 & Ic5ju6)); +assign Tw8ju6 = (~(Ln0iu6 & J1epw6)); +assign Yv8ju6 = (Ax8ju6 | Ln0iu6); +assign Ax8ju6 = (J1epw6 ? Wc5ju6 : Cg5ju6); +assign J1epw6 = (~(Hx8ju6 ^ Hu4ju6)); +assign Hx8ju6 = (~(Ox8ju6 & Vx8ju6)); +assign Vx8ju6 = (Y8biu6 | Gx4ju6); +assign Ox8ju6 = (Cy8ju6 & Ij5ju6); +assign Cy8ju6 = (~(Sw4ju6 & Rv8ju6)); +assign Ll8ju6 = (~(Fjmiu6 | Xlmiu6)); +assign Xlmiu6 = (~(Jy8ju6 & Qy8ju6)); +assign Qy8ju6 = (Xy8ju6 & Ez8ju6); +assign Ez8ju6 = (~(By4ju6 & Eafpw6[13])); +assign Xy8ju6 = (~(Affpw6[13] | Lz8ju6)); +assign Lz8ju6 = (Iy4ju6 & Sz8ju6); +assign Jy8ju6 = (Zz8ju6 & G09ju6); +assign G09ju6 = (~(Ub5ju6 & N09ju6)); +assign N09ju6 = (~(U09ju6 & Ic5ju6)); +assign U09ju6 = (~(En0iu6 & Q1epw6)); +assign Zz8ju6 = (B19ju6 | En0iu6); +assign B19ju6 = (Q1epw6 ? Wc5ju6 : Cg5ju6); +assign Q1epw6 = (~(I19ju6 ^ Hu4ju6)); +assign I19ju6 = (~(P19ju6 & W19ju6)); +assign W19ju6 = (B5kiu6 | Gx4ju6); +assign P19ju6 = (D29ju6 & Ij5ju6); +assign D29ju6 = (~(Sw4ju6 & Sz8ju6)); +assign Fjmiu6 = (~(K29ju6 & R29ju6)); +assign R29ju6 = (Y29ju6 & F39ju6); +assign F39ju6 = (~(By4ju6 & Eafpw6[14])); +assign Y29ju6 = (~(Affpw6[14] | M39ju6)); +assign M39ju6 = (Iy4ju6 & T39ju6); +assign K29ju6 = (A49ju6 & H49ju6); +assign H49ju6 = (~(Ub5ju6 & O49ju6)); +assign O49ju6 = (~(V49ju6 & Ic5ju6)); +assign V49ju6 = (~(Xm0iu6 & X1epw6)); +assign A49ju6 = (C59ju6 | Xm0iu6); +assign C59ju6 = (X1epw6 ? Wc5ju6 : Cg5ju6); +assign X1epw6 = (~(J59ju6 ^ Hu4ju6)); +assign J59ju6 = (~(Q59ju6 & X59ju6)); +assign X59ju6 = (Gx4ju6 | Cajiu6); +assign Q59ju6 = (E69ju6 & Ij5ju6); +assign E69ju6 = (~(Sw4ju6 & T39ju6)); +assign Wo7ju6 = (L69ju6 & S69ju6); +assign S69ju6 = (Z69ju6 & G79ju6); +assign G79ju6 = (Vdmiu6 & Ngmiu6); +assign Ngmiu6 = (N79ju6 & U79ju6); +assign U79ju6 = (B89ju6 & I89ju6); +assign I89ju6 = (~(By4ju6 & Eafpw6[15])); +assign B89ju6 = (~(Affpw6[15] | P89ju6)); +assign P89ju6 = (Iy4ju6 & W89ju6); +assign N79ju6 = (D99ju6 & K99ju6); +assign K99ju6 = (~(Ub5ju6 & R99ju6)); +assign R99ju6 = (~(Y99ju6 & Ic5ju6)); +assign Y99ju6 = (~(Qm0iu6 & L2epw6)); +assign D99ju6 = (Fa9ju6 | Qm0iu6); +assign Fa9ju6 = (L2epw6 ? Wc5ju6 : Cg5ju6); +assign L2epw6 = (~(Ma9ju6 ^ Hu4ju6)); +assign Ma9ju6 = (~(Ta9ju6 & Ab9ju6)); +assign Ab9ju6 = (Gx4ju6 | Qjoiu6); +assign Ta9ju6 = (Hb9ju6 & Ij5ju6); +assign Hb9ju6 = (~(Sw4ju6 & W89ju6)); +assign Vdmiu6 = (Ob9ju6 & Vb9ju6); +assign Vb9ju6 = (Cc9ju6 & Jc9ju6); +assign Jc9ju6 = (~(By4ju6 & Eafpw6[16])); +assign Cc9ju6 = (~(Affpw6[16] | Qc9ju6)); +assign Qc9ju6 = (Iy4ju6 & Xc9ju6); +assign Ob9ju6 = (Ed9ju6 & Ld9ju6); +assign Ld9ju6 = (~(Ub5ju6 & Sd9ju6)); +assign Sd9ju6 = (~(Zd9ju6 & Ic5ju6)); +assign Zd9ju6 = (~(Jm0iu6 & Z2epw6)); +assign Ed9ju6 = (Ge9ju6 | Jm0iu6); +assign Ge9ju6 = (Z2epw6 ? Wc5ju6 : Cg5ju6); +assign Z2epw6 = (~(Ne9ju6 ^ Hu4ju6)); +assign Ne9ju6 = (~(Ue9ju6 & Bf9ju6)); +assign Bf9ju6 = (~(If9ju6 & S8fpw6[5])); +assign Ue9ju6 = (Pf9ju6 & Ij5ju6); +assign Pf9ju6 = (~(Sw4ju6 & Xc9ju6)); +assign Z69ju6 = (X7miu6 & Wamiu6); +assign Wamiu6 = (Wf9ju6 & Dg9ju6); +assign Dg9ju6 = (Kg9ju6 & Rg9ju6); +assign Rg9ju6 = (~(By4ju6 & Eafpw6[17])); +assign Kg9ju6 = (~(Affpw6[17] | Yg9ju6)); +assign Yg9ju6 = (Iy4ju6 & Fh9ju6); +assign Wf9ju6 = (Mh9ju6 & Th9ju6); +assign Th9ju6 = (~(Ub5ju6 & Ai9ju6)); +assign Ai9ju6 = (~(Hi9ju6 & Ic5ju6)); +assign Hi9ju6 = (~(Cm0iu6 & G3epw6)); +assign Mh9ju6 = (Oi9ju6 | Cm0iu6); +assign Oi9ju6 = (G3epw6 ? Wc5ju6 : Cg5ju6); +assign G3epw6 = (~(Vi9ju6 ^ Hu4ju6)); +assign Vi9ju6 = (~(Cj9ju6 & Jj9ju6)); +assign Jj9ju6 = (~(If9ju6 & S8fpw6[6])); +assign Cj9ju6 = (Qj9ju6 & Ij5ju6); +assign Qj9ju6 = (~(Sw4ju6 & Fh9ju6)); +assign X7miu6 = (Xj9ju6 & Ek9ju6); +assign Ek9ju6 = (Lk9ju6 & Sk9ju6); +assign Sk9ju6 = (~(By4ju6 & Eafpw6[18])); +assign Lk9ju6 = (~(Affpw6[18] | Zk9ju6)); +assign Zk9ju6 = (Iy4ju6 & Gl9ju6); +assign Xj9ju6 = (Nl9ju6 & Ul9ju6); +assign Ul9ju6 = (~(Ub5ju6 & Bm9ju6)); +assign Bm9ju6 = (~(Im9ju6 & Ic5ju6)); +assign Im9ju6 = (~(Vl0iu6 & N3epw6)); +assign Nl9ju6 = (Pm9ju6 | Vl0iu6); +assign Pm9ju6 = (N3epw6 ? Wc5ju6 : Cg5ju6); +assign N3epw6 = (~(Wm9ju6 ^ Hu4ju6)); +assign Wm9ju6 = (~(Dn9ju6 & Kn9ju6)); +assign Kn9ju6 = (~(If9ju6 & S8fpw6[7])); +assign Dn9ju6 = (Rn9ju6 & Ij5ju6); +assign Rn9ju6 = (~(Sw4ju6 & Gl9ju6)); +assign L69ju6 = (Yn9ju6 & Fo9ju6); +assign Fo9ju6 = (Z1miu6 & Y4miu6); +assign Y4miu6 = (Mo9ju6 & To9ju6); +assign To9ju6 = (Ap9ju6 & Hp9ju6); +assign Hp9ju6 = (~(By4ju6 & Eafpw6[19])); +assign Ap9ju6 = (~(Affpw6[19] | Op9ju6)); +assign Op9ju6 = (Iy4ju6 & Vp9ju6); +assign Mo9ju6 = (Cq9ju6 & Jq9ju6); +assign Jq9ju6 = (~(Ub5ju6 & Qq9ju6)); +assign Qq9ju6 = (~(Xq9ju6 & Ic5ju6)); +assign Xq9ju6 = (~(Ol0iu6 & U3epw6)); +assign Cq9ju6 = (Er9ju6 | Ol0iu6); +assign Er9ju6 = (U3epw6 ? Wc5ju6 : Cg5ju6); +assign U3epw6 = (~(Lr9ju6 ^ Hu4ju6)); +assign Lr9ju6 = (~(Sr9ju6 & Zr9ju6)); +assign Zr9ju6 = (Gx4ju6 | I65iu6); +assign Sr9ju6 = (Gs9ju6 & Ij5ju6); +assign Gs9ju6 = (~(Sw4ju6 & Vp9ju6)); +assign Z1miu6 = (Ns9ju6 & Us9ju6); +assign Us9ju6 = (Bt9ju6 & It9ju6); +assign It9ju6 = (~(By4ju6 & Eafpw6[20])); +assign Bt9ju6 = (~(Affpw6[20] | Pt9ju6)); +assign Pt9ju6 = (Iy4ju6 & Wt9ju6); +assign Ns9ju6 = (Du9ju6 & Ku9ju6); +assign Ku9ju6 = (~(Ub5ju6 & Ru9ju6)); +assign Ru9ju6 = (~(Yu9ju6 & Ic5ju6)); +assign Yu9ju6 = (~(Al0iu6 & B4epw6)); +assign Du9ju6 = (Fv9ju6 | Al0iu6); +assign Fv9ju6 = (B4epw6 ? Wc5ju6 : Cg5ju6); +assign B4epw6 = (~(Mv9ju6 ^ Hu4ju6)); +assign Mv9ju6 = (~(Tv9ju6 & Aw9ju6)); +assign Aw9ju6 = (Gx4ju6 | P65iu6); +assign Tv9ju6 = (Hw9ju6 & Ij5ju6); +assign Hw9ju6 = (~(Sw4ju6 & Wt9ju6)); +assign Yn9ju6 = (Uvliu6 & Azliu6); +assign Azliu6 = (Ow9ju6 & Vw9ju6); +assign Vw9ju6 = (Cx9ju6 & Jx9ju6); +assign Jx9ju6 = (~(By4ju6 & Eafpw6[21])); +assign Cx9ju6 = (~(Affpw6[21] | Qx9ju6)); +assign Qx9ju6 = (Iy4ju6 & Xx9ju6); +assign Ow9ju6 = (Ey9ju6 & Ly9ju6); +assign Ly9ju6 = (~(Ub5ju6 & Sy9ju6)); +assign Sy9ju6 = (~(Zy9ju6 & Ic5ju6)); +assign Zy9ju6 = (~(Tk0iu6 & I4epw6)); +assign Ey9ju6 = (Gz9ju6 | Tk0iu6); +assign Gz9ju6 = (I4epw6 ? Wc5ju6 : Cg5ju6); +assign I4epw6 = (~(Nz9ju6 ^ Hu4ju6)); +assign Nz9ju6 = (~(Uz9ju6 & B0aju6)); +assign B0aju6 = (~(If9ju6 & S8fpw6[10])); +assign Uz9ju6 = (I0aju6 & Ij5ju6); +assign I0aju6 = (~(Sw4ju6 & Xx9ju6)); +assign Uvliu6 = (P0aju6 & W0aju6); +assign W0aju6 = (D1aju6 & K1aju6); +assign K1aju6 = (~(By4ju6 & Eafpw6[22])); +assign By4ju6 = (H6ghu6 & R1aju6); +assign R1aju6 = (Y1aju6 | Pt2ju6); +assign Y1aju6 = (Cyfpw6[4] ? Difiu6 : F2aju6); +assign F2aju6 = (~(M2aju6 & T2aju6)); +assign T2aju6 = (Qcoiu6 | H4ghu6); +assign M2aju6 = (~(A3aju6 | H3aju6)); +assign D1aju6 = (~(Affpw6[22] | O3aju6)); +assign O3aju6 = (Iy4ju6 & V3aju6); +assign Iy4ju6 = (H6ghu6 & C4aju6); +assign C4aju6 = (J4aju6 | S6aiu6); +assign P0aju6 = (Q4aju6 & X4aju6); +assign X4aju6 = (~(Ub5ju6 & E5aju6)); +assign E5aju6 = (~(L5aju6 & Ic5ju6)); +assign L5aju6 = (~(Mk0iu6 & P4epw6)); +assign Ub5ju6 = (Wk4ju6 | Ys4ju6); +assign Wk4ju6 = (!Ic5ju6); +assign Ic5ju6 = (~(S5aju6 & H6ghu6)); +assign S5aju6 = (Md0iu6 & H4ghu6); +assign Q4aju6 = (Z5aju6 | Mk0iu6); +assign Z5aju6 = (P4epw6 ? Wc5ju6 : Cg5ju6); +assign P4epw6 = (~(G6aju6 ^ Hu4ju6)); +assign Hu4ju6 = (~(H6ghu6 & N6aju6)); +assign N6aju6 = (~(U6aju6 & B7aju6)); +assign B7aju6 = (I7aju6 & P7aju6); +assign P7aju6 = (~(W7aju6 & Cyfpw6[4])); +assign W7aju6 = (D8aju6 & Hs0iu6); +assign D8aju6 = (~(Wfoiu6 & K8aju6)); +assign K8aju6 = (Tr0iu6 | Cyfpw6[6]); +assign I7aju6 = (R8aju6 & Zu0iu6); +assign Zu0iu6 = (~(Y8aju6 & F9aju6)); +assign R8aju6 = (~(M9aju6 & A3aju6)); +assign M9aju6 = (S2ziu6 & C0ehu6); +assign U6aju6 = (Lu0iu6 & T9aju6); +assign T9aju6 = (~(Bi0iu6 & Tfjiu6)); +assign Lu0iu6 = (Aaaju6 & Haaju6); +assign Haaju6 = (Ey2ju6 | Ezniu6); +assign Ezniu6 = (!F23ju6); +assign Aaaju6 = (Oaaju6 & Vaaju6); +assign Vaaju6 = (~(Mo2ju6 & C0ehu6)); +assign Oaaju6 = (~(L78ju6 & D6kiu6)); +assign G6aju6 = (~(Cbaju6 & Jbaju6)); +assign Jbaju6 = (D7fpw6[11] ? Xk8ju6 : Qbaju6); +assign Xk8ju6 = (!Ui5ju6); +assign Ui5ju6 = (If9ju6 & S8fpw6[11]); +assign Qbaju6 = (Gx4ju6 | S8fpw6[11]); +assign Gx4ju6 = (!If9ju6); +assign If9ju6 = (Xbaju6 & Sy2ju6); +assign Xbaju6 = (H6ghu6 & Fd0iu6); +assign Cbaju6 = (Ecaju6 & Ij5ju6); +assign Ij5ju6 = (~(Zf7ju6 & S8fpw6[11])); +assign Zf7ju6 = (Lcaju6 & H6ghu6); +assign Lcaju6 = (Pt2ju6 & Hzziu6); +assign Ecaju6 = (~(Sw4ju6 & V3aju6)); +assign Sw4ju6 = (!Vy7ju6); +assign Vy7ju6 = (~(H6ghu6 & Scaju6)); +assign Scaju6 = (~(Zcaju6 & Gdaju6)); +assign Gdaju6 = (Ndaju6 & Udaju6); +assign Udaju6 = (~(H4ghu6 & Beaju6)); +assign Beaju6 = (~(Ieaju6 & Peaju6)); +assign Peaju6 = (~(Owoiu6 | Kfiiu6)); +assign Ieaju6 = (Weaju6 & Dfaju6); +assign Dfaju6 = (Wfoiu6 | Vwaiu6); +assign Weaju6 = (Y2oiu6 | Ii0iu6); +assign Ndaju6 = (Kfaju6 & Rfaju6); +assign Rfaju6 = (~(Yfaju6 & Whfiu6)); +assign Yfaju6 = (Oiaiu6 & Sq3ju6); +assign Kfaju6 = (~(Cyfpw6[3] & Fgaju6)); +assign Fgaju6 = (~(Yn2ju6 & Mgaju6)); +assign Mgaju6 = (Z6oiu6 | Wfoiu6); +assign Zcaju6 = (Tgaju6 & Ahaju6); +assign Ahaju6 = (~(Pt2ju6 & Pthiu6)); +assign Tgaju6 = (Y2oiu6 | Cyfpw6[7]); +assign Wc5ju6 = (~(Tt4ju6 | Mt4ju6)); +assign Tt4ju6 = (~(Hhaju6 & Ohaju6)); +assign Ohaju6 = (~(Vhaju6 & H4ghu6)); +assign Vhaju6 = (Ciaju6 & Tr0iu6); +assign Ciaju6 = (Hs0iu6 | Kfiiu6); +assign Hhaju6 = (Szniu6 | Wfoiu6); +assign Cg5ju6 = (~(Ys4ju6 | Mt4ju6)); +assign Mt4ju6 = (H6ghu6 & Jiaju6); +assign Jiaju6 = (~(Qiaju6 & Xiaju6)); +assign Qiaju6 = (Ejaju6 & Ljaju6); +assign Ljaju6 = (~(Ae0iu6 & N3ziu6)); +assign Ejaju6 = (Cyfpw6[6] ? Zjaju6 : Sjaju6); +assign Zjaju6 = (Y2oiu6 | R75iu6); +assign Sjaju6 = (Yn2ju6 | Cyfpw6[4]); +assign Ys4ju6 = (Gkaju6 & Nkaju6); +assign Nkaju6 = (~(Y2oiu6 | Cyfpw6[7])); +assign Gkaju6 = (H6ghu6 & Qyniu6); +assign Xe0ju6 = (!Nzoiu6); +assign Nzoiu6 = (I6jiu6 & Oviiu6); +assign Utohu6 = (!Ukaju6); +assign Ukaju6 = (HREADY ? Blaju6 : Ii0iu6); +assign Blaju6 = (Ilaju6 & Plaju6); +assign Plaju6 = (Wlaju6 & Dmaju6); +assign Dmaju6 = (Kmaju6 & Rmaju6); +assign Rmaju6 = (~(Ymaju6 & Eoyiu6)); +assign Ymaju6 = (~(H3piu6 | Lkaiu6)); +assign Kmaju6 = (Fnaju6 & Mnaju6); +assign Mnaju6 = (~(Tnaju6 & W8aiu6)); +assign Tnaju6 = (Cyfpw6[3] & Aoaju6); +assign Aoaju6 = (~(Hoaju6 & Ooaju6)); +assign Ooaju6 = (Voaju6 & T0hhu6); +assign Voaju6 = (~(Ftjiu6 | D7fpw6[3])); +assign Hoaju6 = (~(Rg2ju6 | Q5aiu6)); +assign Fnaju6 = (~(Cpaju6 & Jpaju6)); +assign Jpaju6 = (~(Qpaju6 | D7fpw6[10])); +assign Cpaju6 = (D7fpw6[8] & J9kiu6); +assign Wlaju6 = (Xpaju6 & Eqaju6); +assign Eqaju6 = (~(Wwziu6 & Lqaju6)); +assign Lqaju6 = (~(Y2oiu6 & Sqaju6)); +assign Sqaju6 = (Zqaju6 | Cyfpw6[5]); +assign Xpaju6 = (Graju6 & Nraju6); +assign Nraju6 = (~(Btoiu6 & Uraju6)); +assign Uraju6 = (~(Ctziu6 & Bsaju6)); +assign Bsaju6 = (~(U98iu6 & Xe8iu6)); +assign Btoiu6 = (~(Cyfpw6[1] | H4ghu6)); +assign Graju6 = (~(Isaju6 & F23ju6)); +assign Isaju6 = (Frziu6 & Qe8iu6); +assign Ilaju6 = (Psaju6 & Wsaju6); +assign Wsaju6 = (Dtaju6 & K76ow6); +assign K76ow6 = (P5kiu6 | Sijiu6); +assign Dtaju6 = (R76ow6 & Y76ow6); +assign Y76ow6 = (Ctziu6 | V58ju6); +assign V58ju6 = (!F86ow6); +assign Ctziu6 = (Jcaiu6 | R75iu6); +assign R76ow6 = (~(M86ow6 & Tfjiu6)); +assign M86ow6 = (~(T86ow6 & A96ow6)); +assign A96ow6 = (~(H96ow6 & W8aiu6)); +assign H96ow6 = (~(O96ow6 | Cyfpw6[5])); +assign T86ow6 = (V96ow6 & P5kiu6); +assign P5kiu6 = (!Lijiu6); +assign Lijiu6 = (Whfiu6 & Y7ghu6); +assign V96ow6 = (~(Ca6ow6 & Ae0iu6)); +assign Ca6ow6 = (U4kiu6 & I30ju6); +assign Psaju6 = (Ja6ow6 & Qa6ow6); +assign Qa6ow6 = (Xa6ow6 | Jcaiu6); +assign Ja6ow6 = (~(Eb6ow6 & Zraiu6)); +assign Eb6ow6 = (~(Lb6ow6 & Sb6ow6)); +assign Sb6ow6 = (Zb6ow6 & Gc6ow6); +assign Gc6ow6 = (Nc6ow6 & Kb0ju6); +assign Kb0ju6 = (~(Nyiiu6 & Mtjiu6)); +assign Nc6ow6 = (Xs0ju6 & Xl0ju6); +assign Zb6ow6 = (Uc6ow6 & Bd6ow6); +assign Bd6ow6 = (~(Dxziu6 & Id6ow6)); +assign Id6ow6 = (~(Pd6ow6 & Wd6ow6)); +assign Wd6ow6 = (~(De6ow6 & Frziu6)); +assign Uc6ow6 = (Ke6ow6 & Re6ow6); +assign Ke6ow6 = (~(Ye6ow6 & Cyfpw6[0])); +assign Ye6ow6 = (Omyiu6 & Ff6ow6); +assign Ff6ow6 = (Tr0iu6 | D31ju6); +assign Lb6ow6 = (Mf6ow6 & Tf6ow6); +assign Tf6ow6 = (Ag6ow6 & Hg6ow6); +assign Hg6ow6 = (~(Il3ju6 & A95iu6)); +assign Ag6ow6 = (Og6ow6 & Vg6ow6); +assign Vg6ow6 = (~(Evyiu6 & D7fpw6[15])); +assign Og6ow6 = (~(N3ziu6 & Xzmiu6)); +assign Mf6ow6 = (Ch6ow6 & Jh6ow6); +assign Jh6ow6 = (C0ehu6 ? Xh6ow6 : Qh6ow6); +assign Xh6ow6 = (Ei6ow6 & Li6ow6); +assign Li6ow6 = (Si6ow6 & Zi6ow6); +assign Zi6ow6 = (Gj6ow6 & Geaiu6); +assign Gj6ow6 = (Nj6ow6 | D7fpw6[11]); +assign Si6ow6 = (Uj6ow6 & Bk6ow6); +assign Bk6ow6 = (~(Ik6ow6 & D7fpw6[9])); +assign Ik6ow6 = (D7fpw6[7] ? Wk6ow6 : Pk6ow6); +assign Wk6ow6 = (~(Dl6ow6 & Kl6ow6)); +assign Kl6ow6 = (~(Y40ju6 & D7fpw6[6])); +assign Dl6ow6 = (Oviiu6 | Gaziu6); +assign Pk6ow6 = (~(Gkiiu6 | D7fpw6[6])); +assign Uj6ow6 = (~(Rl6ow6 & Ftjiu6)); +assign Rl6ow6 = (Yl6ow6 | Fm6ow6); +assign Fm6ow6 = (~(O7ziu6 | X1ziu6)); +assign Yl6ow6 = (D7fpw6[13] ? D7fpw6[12] : Mm6ow6); +assign Mm6ow6 = (~(Tm6ow6 & An6ow6)); +assign Tm6ow6 = (~(X8ziu6 | Jwiiu6)); +assign Ei6ow6 = (Hn6ow6 & Y31ju6); +assign Hn6ow6 = (On6ow6 & Vn6ow6); +assign Vn6ow6 = (Co6ow6 | Xuyiu6); +assign Xuyiu6 = (~(Jo6ow6 | Qo6ow6)); +assign Qo6ow6 = (D7fpw6[5] ? Xo6ow6 : Kcziu6); +assign Xo6ow6 = (O95iu6 | Ad8iu6); +assign Jo6ow6 = (~(D7fpw6[8] & D7fpw6[9])); +assign On6ow6 = (~(Qxoiu6 & D7fpw6[12])); +assign Qh6ow6 = (~(Ep6ow6 & F23ju6)); +assign Ch6ow6 = (Lp6ow6 & Sp6ow6); +assign Sp6ow6 = (~(Pthiu6 & S6aiu6)); +assign Lp6ow6 = (H95iu6 | D7fpw6[11]); +assign Ntohu6 = (G81ju6 ? H2fpw6[0] : Zp6ow6); +assign Zp6ow6 = (~(Gq6ow6 & Nq6ow6)); +assign Nq6ow6 = (Uq6ow6 & Br6ow6); +assign Br6ow6 = (~(Fb1ju6 & D7fpw6[8])); +assign Uq6ow6 = (~(P91ju6 & D7fpw6[3])); +assign Gq6ow6 = (Ir6ow6 & Pr6ow6); +assign Pr6ow6 = (~(D7fpw6[0] & Ac1ju6)); +assign Gtohu6 = (~(Wr6ow6 & Ds6ow6)); +assign Ds6ow6 = (Ks6ow6 & Rs6ow6); +assign Rs6ow6 = (~(Egziu6 & Eafpw6[1])); +assign Ks6ow6 = (Ys6ow6 & Sgziu6); +assign Ys6ow6 = (Ft6ow6 | Njciu6); +assign Njciu6 = (Mt6ow6 & Tt6ow6); +assign Tt6ow6 = (Au6ow6 & Hu6ow6); +assign Hu6ow6 = (Cfliu6 | Ou6ow6); +assign Au6ow6 = (Vu6ow6 & Mdliu6); +assign Vu6ow6 = (~(Qfliu6 & Cv6ow6)); +assign Mt6ow6 = (Jv6ow6 & Qv6ow6); +assign Qv6ow6 = (Ycliu6 | Xv6ow6); +assign Jv6ow6 = (~(Aeliu6 & Ew6ow6)); +assign Wr6ow6 = (Lw6ow6 & Sw6ow6); +assign Sw6ow6 = (~(Zsfpw6[0] & Cmziu6)); +assign Lw6ow6 = (Zkhiu6 | Ar8iu6); +assign Zkhiu6 = (!vis_pc_o[0]); +assign Zsohu6 = (!Zw6ow6); +assign Zw6ow6 = (HREADY ? Gx6ow6 : Mr0iu6); +assign Gx6ow6 = (Nx6ow6 & Ux6ow6); +assign Ux6ow6 = (By6ow6 & Iy6ow6); +assign Iy6ow6 = (Py6ow6 & Wy6ow6); +assign Wy6ow6 = (Dz6ow6 & X5aiu6); +assign Py6ow6 = (Kz6ow6 & Rz6ow6); +assign By6ow6 = (Yz6ow6 & F07ow6); +assign F07ow6 = (B1aiu6 & Uloiu6); +assign Yz6ow6 = (M07ow6 & T07ow6); +assign T07ow6 = (~(A17ow6 & Cyfpw6[4])); +assign A17ow6 = (Cyfpw6[5] & H17ow6); +assign H17ow6 = (~(R2aiu6 & O17ow6)); +assign O17ow6 = (~(Ae0iu6 & D6kiu6)); +assign M07ow6 = (~(V17ow6 & Htyiu6)); +assign V17ow6 = (~(C27ow6 | D7fpw6[14])); +assign Nx6ow6 = (J27ow6 & Q27ow6); +assign Q27ow6 = (X27ow6 & E37ow6); +assign E37ow6 = (L37ow6 & S37ow6); +assign S37ow6 = (~(Z37ow6 & K2aiu6)); +assign Z37ow6 = (~(Sijiu6 | Kq0iu6)); +assign L37ow6 = (Jojiu6 | E62ju6); +assign E62ju6 = (!G47ow6); +assign X27ow6 = (N47ow6 & U47ow6); +assign U47ow6 = (~(B57ow6 & Ii0iu6)); +assign B57ow6 = (~(I57ow6 & P57ow6)); +assign P57ow6 = (Yn2ju6 | K9aiu6); +assign I57ow6 = (W57ow6 & D67ow6); +assign D67ow6 = (~(K67ow6 & Ae0iu6)); +assign K67ow6 = (I30ju6 & Y2oiu6); +assign W57ow6 = (E45iu6 | L62ju6); +assign N47ow6 = (~(R67ow6 & Geaiu6)); +assign R67ow6 = (~(Y67ow6 & F77ow6)); +assign F77ow6 = (M77ow6 & T77ow6); +assign T77ow6 = (A87ow6 & H87ow6); +assign H87ow6 = (~(O87ow6 & V87ow6)); +assign V87ow6 = (~(Q1ziu6 | Gaziu6)); +assign Q1ziu6 = (!Y31ju6); +assign O87ow6 = (Nyiiu6 & Evyiu6); +assign A87ow6 = (~(Ipziu6 & S6aiu6)); +assign Ipziu6 = (~(Lkaiu6 | Dxziu6)); +assign M77ow6 = (C97ow6 & J97ow6); +assign J97ow6 = (~(Q97ow6 & X97ow6)); +assign C97ow6 = (~(Vviiu6 & Ea7ow6)); +assign Ea7ow6 = (~(Nj6ow6 & La7ow6)); +assign La7ow6 = (~(Y40ju6 & Db0ju6)); +assign Y67ow6 = (Sa7ow6 & Za7ow6); +assign Za7ow6 = (Kgaiu6 | Wthiu6); +assign Wthiu6 = (!K2aiu6); +assign Sa7ow6 = (Gb7ow6 & Nb7ow6); +assign Nb7ow6 = (~(Ub7ow6 & Q5aiu6)); +assign Ub7ow6 = (~(Bc7ow6 & Ic7ow6)); +assign Ic7ow6 = (~(Pc7ow6 & Wc7ow6)); +assign Wc7ow6 = (~(H95iu6 | Oviiu6)); +assign Pc7ow6 = (Dmiiu6 & Jwiiu6); +assign Bc7ow6 = (~(Dd7ow6 & J8ziu6)); +assign J8ziu6 = (Kd7ow6 & Wh0ju6); +assign Kd7ow6 = (~(Ph0ju6 | D7fpw6[5])); +assign Ph0ju6 = (Aq1ju6 | D7fpw6[7]); +assign Gb7ow6 = (~(Uyiiu6 & Rd7ow6)); +assign Rd7ow6 = (~(Yd7ow6 & Fe7ow6)); +assign Fe7ow6 = (~(Wliiu6 & Me7ow6)); +assign Me7ow6 = (~(Ftjiu6 & Te7ow6)); +assign Te7ow6 = (~(Af7ow6 & Uriiu6)); +assign Af7ow6 = (~(Hf7ow6 & Of7ow6)); +assign Of7ow6 = (Vf7ow6 & Cg7ow6); +assign Cg7ow6 = (Ar0ju6 | D7fpw6[10]); +assign Vf7ow6 = (Hk0ju6 | Kcziu6); +assign Hf7ow6 = (Qz0ju6 & D7fpw6[14]); +assign Qz0ju6 = (Jg7ow6 & Qg7ow6); +assign Qg7ow6 = (~(Xg7ow6 & D7fpw6[7])); +assign Jg7ow6 = (~(D7fpw6[10] & Eh7ow6)); +assign Eh7ow6 = (D7fpw6[8] | Qe0ju6); +assign Qe0ju6 = (!Rg2ju6); +assign Yd7ow6 = (~(Dmiiu6 & Lh7ow6)); +assign Lh7ow6 = (~(Sh7ow6 & Zh7ow6)); +assign Zh7ow6 = (H95iu6 | D7fpw6[9]); +assign Sh7ow6 = (Z01ju6 & Gi7ow6); +assign Gi7ow6 = (Wiliu6 | Gaziu6); +assign Z01ju6 = (~(Qxoiu6 & Nbkiu6)); +assign J27ow6 = (Ni7ow6 & K0jiu6); +assign Ni7ow6 = (Ui7ow6 & Bj7ow6); +assign Bj7ow6 = (~(Moaiu6 & Us2ju6)); +assign Ui7ow6 = (Qojiu6 | Cyfpw6[7]); +assign Ssohu6 = (Ij7ow6 | Pj7ow6); +assign Pj7ow6 = (~(Wj7ow6 | Dk7ow6)); +assign Ij7ow6 = (Rk7ow6 ? S8fpw6[5] : Kk7ow6); +assign Kk7ow6 = (~(Yk7ow6 & Fl7ow6)); +assign Fl7ow6 = (Ml7ow6 & Tl7ow6); +assign Tl7ow6 = (~(Am7ow6 & Ppfpw6[5])); +assign Ml7ow6 = (Dzjiu6 | Hm7ow6); +assign Yk7ow6 = (Om7ow6 & Vm7ow6); +assign Vm7ow6 = (~(Cbbiu6 & D7fpw6[10])); +assign Om7ow6 = (A1kiu6 | Cn7ow6); +assign Lsohu6 = (O25iu6 ? X3fpw6[0] : Jn7ow6); +assign O25iu6 = (~(HREADY & Qn7ow6)); +assign Qn7ow6 = (~(Xn7ow6 & Eo7ow6)); +assign Eo7ow6 = (Lo7ow6 & So7ow6); +assign So7ow6 = (~(Zo7ow6 | Ujjiu6)); +assign Zo7ow6 = (~(Isiiu6 & Dz6ow6)); +assign Isiiu6 = (~(Gp7ow6 & Np7ow6)); +assign Np7ow6 = (~(Xe8iu6 | Cyfpw6[4])); +assign Gp7ow6 = (~(R2aiu6 | Xojiu6)); +assign Lo7ow6 = (Up7ow6 & Bq7ow6); +assign Bq7ow6 = (~(Iq7ow6 & Cyfpw6[0])); +assign Iq7ow6 = (~(Kq0iu6 | Cyfpw6[3])); +assign Up7ow6 = (Pq7ow6 & Wq7ow6); +assign Wq7ow6 = (~(Dr7ow6 & Kr7ow6)); +assign Dr7ow6 = (L45iu6 & Zraiu6); +assign Pq7ow6 = (~(Rr7ow6 & Y31ju6)); +assign Rr7ow6 = (M7kiu6 & Yr7ow6); +assign Yr7ow6 = (D7fpw6[14] | Fs7ow6); +assign Xn7ow6 = (Ms7ow6 & Ts7ow6); +assign Ts7ow6 = (At7ow6 & Ht7ow6); +assign Ht7ow6 = (~(Ot7ow6 & D7fpw6[3])); +assign At7ow6 = (Vt7ow6 & Cu7ow6); +assign Cu7ow6 = (~(Zzniu6 & Ju7ow6)); +assign Ju7ow6 = (Qu7ow6 | Ae0iu6); +assign Vt7ow6 = (~(U98iu6 & Xu7ow6)); +assign Xu7ow6 = (Mo2ju6 | Us2ju6); +assign Ms7ow6 = (Ev7ow6 & Lv7ow6); +assign Ev7ow6 = (Sv7ow6 & Zv7ow6); +assign Zv7ow6 = (~(Uyiiu6 & Gw7ow6)); +assign Gw7ow6 = (~(Nw7ow6 & Uw7ow6)); +assign Uw7ow6 = (~(Bx7ow6 & Dmiiu6)); +assign Bx7ow6 = (Nbkiu6 & Zraiu6); +assign Nw7ow6 = (Ix7ow6 & Px7ow6); +assign Px7ow6 = (~(Wx7ow6 & Dy7ow6)); +assign Dy7ow6 = (Ky7ow6 & Ry7ow6); +assign Ky7ow6 = (L88iu6 & Dzjiu6); +assign L88iu6 = (~(Ndiiu6 | Gkiiu6)); +assign Wx7ow6 = (~(Kcziu6 | U5jiu6)); +assign Ix7ow6 = (~(Yy7ow6 & Fz7ow6)); +assign Fz7ow6 = (Th2ju6 & Ak0ju6); +assign Yy7ow6 = (Cwiiu6 & Aujiu6); +assign Sv7ow6 = (~(Y0jiu6 & Gwyiu6)); +assign Jn7ow6 = (~(Mz7ow6 & Tz7ow6)); +assign Tz7ow6 = (A08ow6 & H08ow6); +assign H08ow6 = (R75iu6 | I65iu6); +assign I65iu6 = (!S8fpw6[8]); +assign A08ow6 = (O08ow6 & V08ow6); +assign V08ow6 = (~(L45iu6 & C18ow6)); +assign C18ow6 = (~(J18ow6 & Q18ow6)); +assign Q18ow6 = (X18ow6 & E28ow6); +assign E28ow6 = (L28ow6 | Eoyiu6); +assign X18ow6 = (~(Zoyiu6 & G55iu6)); +assign J18ow6 = (S28ow6 & Z28ow6); +assign Z28ow6 = (B65iu6 | N55iu6); +assign S28ow6 = (P65iu6 | S8fpw6[8]); +assign P65iu6 = (!S8fpw6[9]); +assign O08ow6 = (~(D7fpw6[3] & K75iu6)); +assign K75iu6 = (~(Wiliu6 & G38ow6)); +assign G38ow6 = (N38ow6 | I6jiu6); +assign Mz7ow6 = (U38ow6 & Gpyiu6); +assign Gpyiu6 = (B48ow6 & F85iu6); +assign F85iu6 = (K0jiu6 & Twniu6); +assign K0jiu6 = (R2aiu6 | Tr0iu6); +assign B48ow6 = (~(N20ju6 | Hzziu6)); +assign U38ow6 = (I48ow6 & P48ow6); +assign P48ow6 = (~(A95iu6 & D7fpw6[0])); +assign I48ow6 = (H95iu6 | Ad8iu6); +assign Esohu6 = (~(W48ow6 & D58ow6)); +assign D58ow6 = (K58ow6 & R58ow6); +assign R58ow6 = (~(Egziu6 & Eafpw6[7])); +assign K58ow6 = (Y58ow6 & Sgziu6); +assign Y58ow6 = (~(Zgziu6 & Qukiu6)); +assign Qukiu6 = (~(F68ow6 & M68ow6)); +assign M68ow6 = (T68ow6 & A78ow6); +assign A78ow6 = (Cfliu6 | H78ow6); +assign T68ow6 = (O78ow6 & Mdliu6); +assign O78ow6 = (~(Qfliu6 & V78ow6)); +assign F68ow6 = (C88ow6 & J88ow6); +assign J88ow6 = (Ycliu6 | Q88ow6); +assign C88ow6 = (~(Aeliu6 & X88ow6)); +assign W48ow6 = (E98ow6 & L98ow6); +assign L98ow6 = (~(Zsfpw6[6] & Cmziu6)); +assign E98ow6 = (~(vis_pc_o[6] & Jmziu6)); +assign Xrohu6 = (~(S98ow6 & Z98ow6)); +assign Z98ow6 = (Ga8ow6 & Na8ow6); +assign Na8ow6 = (~(Egziu6 & Eafpw6[31])); +assign Ga8ow6 = (Ua8ow6 & Sgziu6); +assign Ua8ow6 = (Ft6ow6 | Ualiu6); +assign Ualiu6 = (Bb8ow6 & Ib8ow6); +assign Ib8ow6 = (Pb8ow6 & Wb8ow6); +assign Wb8ow6 = (~(Dc8ow6 & X88ow6)); +assign Pb8ow6 = (Kc8ow6 & Djziu6); +assign Kc8ow6 = (~(Rc8ow6 & V78ow6)); +assign Bb8ow6 = (Yc8ow6 & Fd8ow6); +assign Fd8ow6 = (Mkziu6 | Q88ow6); +assign Yc8ow6 = (Hlziu6 | H78ow6); +assign S98ow6 = (Md8ow6 & Td8ow6); +assign Td8ow6 = (~(Zsfpw6[30] & Cmziu6)); +assign Md8ow6 = (~(vis_pc_o[30] & Jmziu6)); +assign Qrohu6 = (Ae8ow6 | He8ow6); +assign He8ow6 = (~(Oe8ow6 | Cyfpw6[6])); +assign Ae8ow6 = (HREADY ? Ve8ow6 : Cyfpw6[1]); +assign Ve8ow6 = (~(Cf8ow6 & Jf8ow6)); +assign Jf8ow6 = (Qf8ow6 & Xf8ow6); +assign Xf8ow6 = (Eg8ow6 & Lg8ow6); +assign Lg8ow6 = (~(Sg8ow6 & Neoiu6)); +assign Sg8ow6 = (Zg8ow6 & Mr0iu6); +assign Zg8ow6 = (~(E4jiu6 & Gh8ow6)); +assign Gh8ow6 = (~(Nh8ow6 & Pthiu6)); +assign Nh8ow6 = (~(R75iu6 | Cyfpw6[5])); +assign Eg8ow6 = (~(Uh8ow6 & Hiaiu6)); +assign Uh8ow6 = (Bi8ow6 & Q5aiu6); +assign Bi8ow6 = (~(Ii8ow6 & Pi8ow6)); +assign Pi8ow6 = (Wi8ow6 & Dj8ow6); +assign Dj8ow6 = (~(J9kiu6 & Kj8ow6)); +assign Kj8ow6 = (~(Rj8ow6 & Yj8ow6)); +assign Yj8ow6 = (Fk8ow6 & S01ju6); +assign S01ju6 = (!Fs7ow6); +assign Fs7ow6 = (D7fpw6[11] & I6jiu6); +assign Fk8ow6 = (~(Mk8ow6 & X1ziu6)); +assign Mk8ow6 = (Zwciu6 | D7fpw6[8]); +assign Zwciu6 = (!Jehhu6); +assign Rj8ow6 = (Tk8ow6 & Al8ow6); +assign Al8ow6 = (Hl8ow6 | D7fpw6[11]); +assign Tk8ow6 = (D7fpw6[13] | D7fpw6[8]); +assign Wi8ow6 = (Ol8ow6 & Vl8ow6); +assign Vl8ow6 = (~(Cm8ow6 & Jm8ow6)); +assign Jm8ow6 = (~(I6jiu6 | Jjhiu6)); +assign Cm8ow6 = (Y40ju6 & Nyiiu6); +assign Nyiiu6 = (D7fpw6[11] & Ftjiu6); +assign Ol8ow6 = (~(Qm8ow6 & Evyiu6)); +assign Qm8ow6 = (~(Oviiu6 | Gaziu6)); +assign Ii8ow6 = (~(Xm8ow6 | En8ow6)); +assign En8ow6 = (Ejiiu6 & Dmiiu6); +assign Dmiiu6 = (Jiiiu6 & D7fpw6[14]); +assign Xm8ow6 = (S1ehu6 ? Sn8ow6 : Ln8ow6); +assign Ln8ow6 = (~(Zn8ow6 & Go8ow6)); +assign Go8ow6 = (No8ow6 | Lroiu6); +assign Lroiu6 = (!Ejiiu6); +assign No8ow6 = (!Il3ju6); +assign Zn8ow6 = (Uo8ow6 & Xs0ju6); +assign Xs0ju6 = (Wiliu6 | Co6ow6); +assign Wiliu6 = (!Mtjiu6); +assign Uo8ow6 = (~(Bp8ow6 & Mtjiu6)); +assign Bp8ow6 = (D7fpw6[14] & Ip8ow6); +assign Ip8ow6 = (~(Pp8ow6 & Wp8ow6)); +assign Wp8ow6 = (Aq1ju6 ? Dq8ow6 : D7fpw6[9]); +assign Aq1ju6 = (~(D7fpw6[8] & Ad8iu6)); +assign Dq8ow6 = (U5jiu6 | O95iu6); +assign Pp8ow6 = (Kq8ow6 & Oviiu6); +assign Kq8ow6 = (~(D7fpw6[8] & Rq8ow6)); +assign Rq8ow6 = (~(Yq8ow6 & Fr8ow6)); +assign Fr8ow6 = (I6jiu6 | D7fpw6[7]); +assign Yq8ow6 = (~(Db0ju6 | Dcziu6)); +assign Qf8ow6 = (Mr8ow6 & Tr8ow6); +assign Tr8ow6 = (~(As8ow6 & Hs8ow6)); +assign As8ow6 = (Frziu6 & Hzziu6); +assign Mr8ow6 = (~(Os8ow6 & Geaiu6)); +assign Os8ow6 = (~(Vs8ow6 & Ct8ow6)); +assign Ct8ow6 = (~(Jt8ow6 & Vs0iu6)); +assign Vs0iu6 = (F86ow6 & Cyfpw6[0]); +assign F86ow6 = (~(Knaiu6 | Tfjiu6)); +assign Jt8ow6 = (Qe8iu6 & Gwyiu6); +assign Vs8ow6 = (~(Qt8ow6 & D7fpw6[11])); +assign Qt8ow6 = (Xt8ow6 & Q5aiu6); +assign Xt8ow6 = (Ry7ow6 | Zakiu6); +assign Zakiu6 = (Th2ju6 & I6jiu6); +assign Ry7ow6 = (!Oaiiu6); +assign Cf8ow6 = (Eu8ow6 & Lu8ow6); +assign Lu8ow6 = (Su8ow6 & Zu8ow6); +assign Zu8ow6 = (~(Gv8ow6 & Zraiu6)); +assign Gv8ow6 = (~(Nv8ow6 & Uv8ow6)); +assign Uv8ow6 = (Bw8ow6 & Td0iu6); +assign Bw8ow6 = (Re6ow6 & Iw8ow6); +assign Re6ow6 = (~(Pw8ow6 & Ww8ow6)); +assign Pw8ow6 = (~(Iuniu6 | Xmliu6)); +assign Nv8ow6 = (Dx8ow6 & Kx8ow6); +assign Kx8ow6 = (~(U0aiu6 & Rx8ow6)); +assign Rx8ow6 = (Tfjiu6 | X97ow6); +assign Dx8ow6 = (~(S6aiu6 & Yx8ow6)); +assign Yx8ow6 = (Geoiu6 | Ly2ju6); +assign Ly2ju6 = (Vo3ju6 & Tr0iu6); +assign Eu8ow6 = (Fy8ow6 & My8ow6); +assign My8ow6 = (Ty8ow6 | Xe8iu6); +assign Fy8ow6 = (Dxziu6 ? Hz8ow6 : Az8ow6); +assign Hz8ow6 = (~(Oz8ow6 & Moaiu6)); +assign Oz8ow6 = (Toaiu6 & Cyfpw6[7]); +assign Az8ow6 = (~(Vz8ow6 & F9aju6)); +assign Vz8ow6 = (Ls1ju6 & Sq3ju6); +assign Jrohu6 = (C09ow6 & J09ow6); +assign J09ow6 = (~(Q09ow6 & X09ow6)); +assign X09ow6 = (E19ow6 & L19ow6); +assign L19ow6 = (S19ow6 & Z19ow6); +assign Z19ow6 = (G29ow6 & Yryiu6); +assign Yryiu6 = (~(Ujjiu6 & Bkjiu6)); +assign G29ow6 = (~(N29ow6 & Cyfpw6[0])); +assign N29ow6 = (U29ow6 & B39ow6); +assign B39ow6 = (~(I39ow6 & R75iu6)); +assign I39ow6 = (~(P39ow6 & Yljiu6)); +assign P39ow6 = (~(Hs0iu6 | Dxziu6)); +assign U29ow6 = (Difiu6 | Pugiu6); +assign Difiu6 = (Cyfpw6[6] & Ii0iu6); +assign S19ow6 = (W39ow6 & D49ow6); +assign D49ow6 = (~(K49ow6 & T23ju6)); +assign K49ow6 = (~(C0ehu6 | Cyfpw6[7])); +assign W39ow6 = (~(R49ow6 & W0piu6)); +assign R49ow6 = (D7fpw6[11] & Y49ow6); +assign Y49ow6 = (~(C27ow6 & F59ow6)); +assign F59ow6 = (~(M59ow6 & C0ehu6)); +assign M59ow6 = (~(X1ziu6 | D7fpw6[10])); +assign E19ow6 = (T59ow6 & A69ow6); +assign A69ow6 = (H69ow6 & O69ow6); +assign O69ow6 = (~(V69ow6 & Hzziu6)); +assign V69ow6 = (~(Yp8iu6 | Y7ghu6)); +assign H69ow6 = (~(C79ow6 & J79ow6)); +assign C79ow6 = (Yljiu6 & Taaiu6); +assign T59ow6 = (Q79ow6 & X79ow6); +assign X79ow6 = (~(Hwaiu6 & A3aju6)); +assign Hwaiu6 = (~(R75iu6 | Knaiu6)); +assign Q79ow6 = (~(Dxziu6 & E89ow6)); +assign E89ow6 = (~(L89ow6 & S89ow6)); +assign S89ow6 = (~(Z89ow6 & X97ow6)); +assign Z89ow6 = (D1piu6 & Tfjiu6); +assign L89ow6 = (~(Jf6ju6 & N3ziu6)); +assign Q09ow6 = (G99ow6 & N99ow6); +assign N99ow6 = (U99ow6 & Ba9ow6); +assign Ba9ow6 = (Ia9ow6 & Pa9ow6); +assign Pa9ow6 = (~(Uyiiu6 & Wa9ow6)); +assign Wa9ow6 = (~(Xl0ju6 & Db9ow6)); +assign Db9ow6 = (~(Kb9ow6 & Ftjiu6)); +assign Kb9ow6 = (~(Biliu6 & Rb9ow6)); +assign Rb9ow6 = (Yb9ow6 | I6jiu6); +assign Biliu6 = (!Sn8ow6); +assign Sn8ow6 = (C0ehu6 & X1ziu6); +assign Ia9ow6 = (Thaiu6 | Cyfpw6[5]); +assign U99ow6 = (Fc9ow6 & Mc9ow6); +assign Mc9ow6 = (~(De6ow6 & Vxniu6)); +assign Fc9ow6 = (Iw8ow6 | Ae0iu6); +assign G99ow6 = (Tc9ow6 & Ad9ow6); +assign Ad9ow6 = (Hd9ow6 & Od9ow6); +assign Od9ow6 = (~(S6aiu6 & Vd9ow6)); +assign Vd9ow6 = (~(Ce9ow6 & Je9ow6)); +assign Je9ow6 = (Nlaiu6 ? Ey2ju6 : Cyfpw6[1]); +assign Ce9ow6 = (~(Qe9ow6 | Ep6ow6)); +assign Qe9ow6 = (~(Lkaiu6 | Eoyiu6)); +assign Hd9ow6 = (Xe9ow6 | Wxyiu6); +assign Wxyiu6 = (L62ju6 & Zraiu6); +assign L62ju6 = (!Nsaiu6); +assign Tc9ow6 = (T41ju6 & Ef9ow6); +assign Ef9ow6 = (~(Lf9ow6 & Q5aiu6)); +assign Lf9ow6 = (~(Sf9ow6 & Zf9ow6)); +assign Zf9ow6 = (Gg9ow6 & Ng9ow6); +assign Ng9ow6 = (~(Ug9ow6 & Vboiu6)); +assign Ug9ow6 = (~(R75iu6 | H4ghu6)); +assign Gg9ow6 = (Bh9ow6 & Ih9ow6); +assign Ih9ow6 = (~(Ph9ow6 & P0piu6)); +assign Ph9ow6 = (Wh9ow6 & Ftjiu6); +assign Wh9ow6 = (Di9ow6 | Ki9ow6); +assign Ki9ow6 = (Tniiu6 ? Dcziu6 : Ad8iu6); +assign Di9ow6 = (~(Ri9ow6 & Ar0ju6)); +assign Ar0ju6 = (!Jz0ju6); +assign Ri9ow6 = (Ndiiu6 | O95iu6); +assign Bh9ow6 = (~(Yi9ow6 & Db0ju6)); +assign Yi9ow6 = (~(H95iu6 | X1ziu6)); +assign H95iu6 = (!Ozziu6); +assign Sf9ow6 = (Fj9ow6 & Mj9ow6); +assign Mj9ow6 = (~(Xiiiu6 & Tj9ow6)); +assign Tj9ow6 = (~(Ak9ow6 & Hk9ow6)); +assign Hk9ow6 = (~(Aujiu6 & U5jiu6)); +assign U5jiu6 = (!Jwiiu6); +assign Ak9ow6 = (~(Ok9ow6 | Vk9ow6)); +assign Ok9ow6 = (Y40ju6 & Cl9ow6); +assign Cl9ow6 = (~(Jl9ow6 & Ql9ow6)); +assign Ql9ow6 = (Oviiu6 | D7fpw6[6]); +assign Jl9ow6 = (~(Dcziu6 | D7fpw6[8])); +assign Fj9ow6 = (Xl9ow6 & Em9ow6); +assign Em9ow6 = (~(Hl8ow6 & Lm9ow6)); +assign Lm9ow6 = (~(S80ju6 & Sm9ow6)); +assign Sm9ow6 = (~(J9kiu6 & Zm9ow6)); +assign Zm9ow6 = (~(Gn9ow6 & Nn9ow6)); +assign Nn9ow6 = (Un9ow6 & I6jiu6); +assign Un9ow6 = (D7fpw6[4] | D7fpw6[6]); +assign Gn9ow6 = (~(O95iu6 | Dzjiu6)); +assign Xl9ow6 = (~(C0ehu6 & Bo9ow6)); +assign Bo9ow6 = (~(Io9ow6 & Po9ow6)); +assign Po9ow6 = (~(Wo9ow6 & Aujiu6)); +assign Wo9ow6 = (~(X1ziu6 | D7fpw6[8])); +assign Io9ow6 = (Dp9ow6 & Uriiu6); +assign Dp9ow6 = (~(Kp9ow6 & Y40ju6)); +assign Kp9ow6 = (~(Jwiiu6 | D7fpw6[15])); +assign T41ju6 = (Rp9ow6 & Yp9ow6); +assign Yp9ow6 = (Fq9ow6 & B1aiu6); +assign Fq9ow6 = (~(Mq9ow6 & Cyfpw6[4])); +assign Mq9ow6 = (~(Geaiu6 | Cyfpw6[5])); +assign Rp9ow6 = (HREADY & Tq9ow6); +assign C09ow6 = (Cyfpw6[0] | HREADY); +assign Crohu6 = (Ar9ow6 & Hr9ow6); +assign Hr9ow6 = (~(Or9ow6 & Vr9ow6)); +assign Vr9ow6 = (Cs9ow6 & Js9ow6); +assign Js9ow6 = (Qs9ow6 & Xs9ow6); +assign Xs9ow6 = (Et9ow6 & A42ju6); +assign A42ju6 = (~(Lt9ow6 & Htyiu6)); +assign Lt9ow6 = (Th2ju6 & St9ow6); +assign St9ow6 = (~(D7fpw6[12] & Zt9ow6)); +assign Et9ow6 = (~(Ujjiu6 | Ot7ow6)); +assign Ot7ow6 = (Gu9ow6 & Nu9ow6); +assign Gu9ow6 = (~(Jcaiu6 | Cyfpw6[0])); +assign Ujjiu6 = (Uu9ow6 & D7fpw6[15]); +assign Qs9ow6 = (Bv9ow6 & Iv9ow6); +assign Iv9ow6 = (~(Pv9ow6 & Wv9ow6)); +assign Wv9ow6 = (D7fpw6[11] & Dw9ow6); +assign Dw9ow6 = (Gkiiu6 | Fp1ju6); +assign Pv9ow6 = (Yv1ju6 & Nbkiu6); +assign Bv9ow6 = (~(Kw9ow6 & Rw9ow6)); +assign Rw9ow6 = (~(D7fpw6[5] | D7fpw6[7])); +assign Kw9ow6 = (~(P82ju6 | Yw9ow6)); +assign Yw9ow6 = (D7fpw6[4] & D7fpw6[6]); +assign Cs9ow6 = (Fx9ow6 & Mx9ow6); +assign Mx9ow6 = (Tx9ow6 & Ay9ow6); +assign Ay9ow6 = (~(Hy9ow6 & Vviiu6)); +assign Hy9ow6 = (Hiaiu6 & Oy9ow6); +assign Oy9ow6 = (~(Vy9ow6 & Cz9ow6)); +assign Cz9ow6 = (Jz9ow6 | Gaziu6); +assign Vy9ow6 = (X1ziu6 | Gkiiu6); +assign Tx9ow6 = (~(Qz9ow6 & Htyiu6)); +assign Qz9ow6 = (Xz9ow6 & Zraiu6); +assign Xz9ow6 = (~(E0aow6 & L0aow6)); +assign L0aow6 = (~(X8ziu6 & A95iu6)); +assign X8ziu6 = (~(D7fpw6[11] | D7fpw6[8])); +assign E0aow6 = (S80ju6 | Gaziu6); +assign Fx9ow6 = (S0aow6 & Z0aow6); +assign Z0aow6 = (~(G1aow6 & K2aiu6)); +assign G1aow6 = (N1aow6 & Y2oiu6); +assign S0aow6 = (~(U1aow6 & Neoiu6)); +assign U1aow6 = (Omyiu6 & B2aow6); +assign B2aow6 = (~(I2aow6 & P2aow6)); +assign P2aow6 = (Vwaiu6 | Mr0iu6); +assign I2aow6 = (~(G47ow6 | W2aow6)); +assign Or9ow6 = (D3aow6 & K3aow6); +assign K3aow6 = (R3aow6 & Y3aow6); +assign Y3aow6 = (F4aow6 & M4aow6); +assign M4aow6 = (Tdziu6 | Qpaju6); +assign Tdziu6 = (~(Q97ow6 & T4aow6)); +assign Q97ow6 = (~(E4jiu6 | Cyfpw6[0])); +assign F4aow6 = (A5aow6 & H5aow6); +assign H5aow6 = (~(O5aow6 & Yo1ju6)); +assign O5aow6 = (D7fpw6[14] & V5aow6); +assign V5aow6 = (C6aow6 | J6aow6); +assign J6aow6 = (D7fpw6[7] ? X6aow6 : Q6aow6); +assign X6aow6 = (~(Jz0ju6 | D7fpw6[10])); +assign Jz0ju6 = (Ad8iu6 & Ndiiu6); +assign C6aow6 = (~(E7aow6 & Hk0ju6)); +assign Hk0ju6 = (!Fp1ju6); +assign Fp1ju6 = (I6jiu6 & Tniiu6); +assign E7aow6 = (L7aow6 | D7fpw6[9]); +assign A5aow6 = (~(Pthiu6 & S7aow6)); +assign S7aow6 = (~(Z7aow6 & G8aow6)); +assign G8aow6 = (Jojiu6 | Y2oiu6); +assign Z7aow6 = (~(Ls1ju6 & Cyfpw6[5])); +assign R3aow6 = (N8aow6 & U8aow6); +assign U8aow6 = (~(B9aow6 & Geaiu6)); +assign B9aow6 = (~(I9aow6 & P9aow6)); +assign P9aow6 = (R2aiu6 | Y2oiu6); +assign I9aow6 = (W9aow6 & Daaow6); +assign Daaow6 = (~(Kaaow6 & Raaow6)); +assign Kaaow6 = (M7kiu6 & X1ziu6); +assign M7kiu6 = (Yaaow6 & Ozziu6); +assign Yaaow6 = (~(Ae0iu6 | D7fpw6[15])); +assign W9aow6 = (Jxoiu6 | Ak0ju6); +assign Ak0ju6 = (Qxoiu6 & Ndiiu6); +assign Jxoiu6 = (~(Fbaow6 & R7jiu6)); +assign Fbaow6 = (Ia8iu6 & Q5aiu6); +assign N8aow6 = (~(Dxziu6 & Mbaow6)); +assign Mbaow6 = (~(Tbaow6 & Acaow6)); +assign Acaow6 = (~(Ls1ju6 & Hcaow6)); +assign Hcaow6 = (Rljiu6 | Ocaow6); +assign Ocaow6 = (~(Qjaiu6 | Cyfpw6[0])); +assign Tbaow6 = (Vcaow6 & Cdaow6); +assign Cdaow6 = (~(Jdaow6 & Qdaow6)); +assign Qdaow6 = (Qe8iu6 & Mr0iu6); +assign Jdaow6 = (Eoyiu6 & Geoiu6); +assign Geoiu6 = (Wp0iu6 & Ii0iu6); +assign Eoyiu6 = (~(L28ow6 | S8fpw6[7])); +assign Vcaow6 = (~(Xdaow6 & Vxniu6)); +assign Xdaow6 = (D1piu6 & Zraiu6); +assign D3aow6 = (Eeaow6 & Leaow6); +assign Leaow6 = (Seaow6 & Zeaow6); +assign Zeaow6 = (~(Hs8ow6 & Nriiu6)); +assign Seaow6 = (Qojiu6 | M32ju6); +assign Qojiu6 = (!M2piu6); +assign Eeaow6 = (Ez1ju6 & Oeziu6); +assign Oeziu6 = (Gfaow6 & HREADY); +assign Gfaow6 = (Thaiu6 & Dz6ow6); +assign Thaiu6 = (E45iu6 | Y2oiu6); +assign Ez1ju6 = (Nfaow6 & J5aiu6); +assign J5aiu6 = (Qp3ju6 | Jojiu6); +assign Qp3ju6 = (!J79ow6); +assign Nfaow6 = (Ufaow6 & Bgaow6); +assign Ufaow6 = (H3piu6 | Cyfpw6[6]); +assign H3piu6 = (!C78iu6); +assign C78iu6 = (S6aiu6 & Neoiu6); +assign Ar9ow6 = (Cyfpw6[4] | HREADY); +assign Vqohu6 = (!Igaow6); +assign Igaow6 = (HREADY ? Pgaow6 : Xe8iu6); +assign Pgaow6 = (Wgaow6 & Dhaow6); +assign Dhaow6 = (Khaow6 & Rhaow6); +assign Rhaow6 = (Yhaow6 & Fiaow6); +assign Fiaow6 = (Miaow6 & Tiaow6); +assign Tiaow6 = (~(Ajaow6 & Hjaow6)); +assign Hjaow6 = (~(Qpaju6 | D7fpw6[13])); +assign Ajaow6 = (Raaow6 & Imaiu6); +assign Miaow6 = (Imoiu6 & Dz6ow6); +assign Dz6ow6 = (~(Ojaow6 & N20ju6)); +assign Ojaow6 = (~(Ii0iu6 | Lraiu6)); +assign Imoiu6 = (~(Pfoiu6 & Pu1ju6)); +assign Yhaow6 = (Vjaow6 & Ckaow6); +assign Ckaow6 = (~(Jkaow6 & Qkaow6)); +assign Qkaow6 = (L45iu6 & Oiaiu6); +assign Jkaow6 = (~(Wfoiu6 | Xkaow6)); +assign Vjaow6 = (~(Elaow6 & J79ow6)); +assign Elaow6 = (U98iu6 & Taaiu6); +assign U98iu6 = (Llaow6 & Jjhiu6); +assign Khaow6 = (Slaow6 & Zlaow6); +assign Zlaow6 = (Gmaow6 & Nmaow6); +assign Nmaow6 = (~(Llaow6 & Umaow6)); +assign Umaow6 = (~(Bnaow6 & Inaow6)); +assign Inaow6 = (~(Pnaow6 & Ruaiu6)); +assign Pnaow6 = (~(Wnaow6 & Doaow6)); +assign Doaow6 = (Koaow6 & Xa6ow6); +assign Xa6ow6 = (~(Roaow6 & Cyfpw6[7])); +assign Roaow6 = (~(Geaiu6 | Cyfpw6[3])); +assign Koaow6 = (~(Yoaow6 & Hzziu6)); +assign Yoaow6 = (Fpaow6 & Mr0iu6); +assign Fpaow6 = (~(Mpaow6 & Tpaow6)); +assign Tpaow6 = (X1ziu6 | S1ehu6); +assign Wnaow6 = (Aqaow6 & Hqaow6); +assign Hqaow6 = (Z6oiu6 | Geaiu6); +assign Aqaow6 = (R75iu6 | Cyfpw6[6]); +assign Bnaow6 = (~(Nu9ow6 & V4aiu6)); +assign Gmaow6 = (Oqaow6 & Vqaow6); +assign Vqaow6 = (~(Yi7ju6 & Pu1ju6)); +assign Yi7ju6 = (~(Ii0iu6 | Cyfpw6[6])); +assign Oqaow6 = (~(Yo1ju6 & Craow6)); +assign Craow6 = (~(Jraow6 & Qraow6)); +assign Qraow6 = (L7aow6 | O7ziu6); +assign Jraow6 = (~(D7fpw6[8] & Xraow6)); +assign Xraow6 = (~(Esaow6 & Lsaow6)); +assign Lsaow6 = (~(D7fpw6[9] & Dcziu6)); +assign Esaow6 = (~(Qxoiu6 & O95iu6)); +assign Yo1ju6 = (Ba8iu6 & Ssaow6); +assign Ba8iu6 = (~(S80ju6 | D7fpw6[13])); +assign Slaow6 = (Zsaow6 & Gtaow6); +assign Gtaow6 = (~(Ntaow6 & Zraiu6)); +assign Ntaow6 = (~(Rz6ow6 & Utaow6)); +assign Utaow6 = (Gtgiu6 | Iuniu6); +assign Gtgiu6 = (!Buaow6); +assign Rz6ow6 = (~(Iuaow6 & Nu9ow6)); +assign Iuaow6 = (~(Nlaiu6 | H4ghu6)); +assign Zsaow6 = (~(Rljiu6 & It2ju6)); +assign Rljiu6 = (Xzmiu6 & Cyfpw6[5]); +assign Wgaow6 = (Puaow6 & Wuaow6); +assign Wuaow6 = (Dvaow6 & Kvaow6); +assign Kvaow6 = (Rvaow6 & Yvaow6); +assign Yvaow6 = (Rb0ju6 | Fwaow6); +assign Rb0ju6 = (~(Bziiu6 & Oviiu6)); +assign Rvaow6 = (Mwaow6 & Twaow6); +assign Twaow6 = (~(D7fpw6[12] & Axaow6)); +assign Axaow6 = (~(Hxaow6 & Oxaow6)); +assign Oxaow6 = (Fwaow6 | N38ow6); +assign Fwaow6 = (!Ssaow6); +assign Hxaow6 = (Vxaow6 & Cyaow6); +assign Cyaow6 = (~(Jyaow6 & Qyaow6)); +assign Qyaow6 = (Xyaow6 & Geaiu6); +assign Xyaow6 = (~(Jz9ow6 & Ezaow6)); +assign Ezaow6 = (O7ziu6 | Ndiiu6); +assign Jz9ow6 = (~(Xg7ow6 & Cwiiu6)); +assign Xg7ow6 = (~(Tniiu6 | D7fpw6[8])); +assign Jyaow6 = (Vviiu6 & Kxziu6); +assign Vxaow6 = (~(Lzaow6 & W82ju6)); +assign W82ju6 = (Szaow6 & D7fpw6[5]); +assign Szaow6 = (~(D7fpw6[6] | D7fpw6[7])); +assign Lzaow6 = (~(P82ju6 | A1kiu6)); +assign P82ju6 = (~(Zzaow6 & G0bow6)); +assign G0bow6 = (Rmiiu6 & D7fpw6[8]); +assign Rmiiu6 = (F6ziu6 & Th2ju6); +assign Zzaow6 = (Wh0ju6 & Htyiu6); +assign Mwaow6 = (~(Hzziu6 & N0bow6)); +assign N0bow6 = (~(U0bow6 & B1bow6)); +assign B1bow6 = (~(Oxniu6 & Tfjiu6)); +assign U0bow6 = (I1bow6 & P1bow6); +assign I1bow6 = (~(W1bow6 & Ia8iu6)); +assign W1bow6 = (Aujiu6 & Frziu6); +assign Dvaow6 = (D2bow6 & K2bow6); +assign K2bow6 = (~(Qe8iu6 & R2bow6)); +assign R2bow6 = (~(Y2bow6 & F3bow6)); +assign F3bow6 = (~(J79ow6 | D31ju6)); +assign Y2bow6 = (M3bow6 & T3bow6); +assign T3bow6 = (Jc2ju6 | Knaiu6); +assign M3bow6 = (~(Frziu6 & K2aiu6)); +assign D2bow6 = (~(D7fpw6[11] & A4bow6)); +assign A4bow6 = (~(H4bow6 & O4bow6)); +assign O4bow6 = (V4bow6 & C5bow6); +assign C5bow6 = (~(J5bow6 & Yv1ju6)); +assign Yv1ju6 = (Ssaow6 & X1ziu6); +assign J5bow6 = (~(Tniiu6 | Jjhiu6)); +assign V4bow6 = (~(Q5bow6 & Htyiu6)); +assign Q5bow6 = (~(C27ow6 | Ae0iu6)); +assign H4bow6 = (X5bow6 & E6bow6); +assign E6bow6 = (~(Ssaow6 & Evyiu6)); +assign Ssaow6 = (L6bow6 & Y31ju6); +assign L6bow6 = (~(Xkaow6 | D7fpw6[15])); +assign X5bow6 = (Ax1ju6 | Ad8iu6); +assign Puaow6 = (S6bow6 & Z6bow6); +assign Z6bow6 = (G7bow6 & N7bow6); +assign N7bow6 = (~(Omyiu6 & U7bow6)); +assign U7bow6 = (~(B8bow6 & I8bow6)); +assign I8bow6 = (P8bow6 & W8bow6); +assign W8bow6 = (~(Apaiu6 & D9bow6)); +assign D9bow6 = (~(K9bow6 & R9bow6)); +assign R9bow6 = (~(Y9bow6 & Tfjiu6)); +assign Y9bow6 = (Y2oiu6 | P0biu6); +assign P8bow6 = (Fabow6 & Mabow6); +assign Mabow6 = (~(Tabow6 & T4aow6)); +assign T4aow6 = (Abbow6 & Hbbow6); +assign Abbow6 = (Ya1ju6 & Frziu6); +assign Tabow6 = (~(G7oiu6 | Qpaju6)); +assign Fabow6 = (~(Obbow6 & Vbbow6)); +assign Vbbow6 = (Wp0iu6 | Ep6ow6); +assign Ep6ow6 = (Taaiu6 & Tr0iu6); +assign B8bow6 = (Ccbow6 & Jcbow6); +assign Jcbow6 = (~(Qcbow6 & Ruaiu6)); +assign Qcbow6 = (~(Xcbow6 & Edbow6)); +assign Edbow6 = (~(Sy2ju6 & Kxziu6)); +assign Sy2ju6 = (Cyfpw6[4] & Mr0iu6); +assign Xcbow6 = (P1bow6 | Knaiu6); +assign Ccbow6 = (~(Oxniu6 & Pugiu6)); +assign Oxniu6 = (Cyfpw6[0] & Zraiu6); +assign G7bow6 = (Ax1ju6 | D7fpw6[7]); +assign Ax1ju6 = (~(Ldbow6 & Z4jiu6)); +assign Z4jiu6 = (~(Hujiu6 | Gkiiu6)); +assign Ldbow6 = (Htyiu6 & Sdbow6); +assign Htyiu6 = (W0piu6 & Geaiu6); +assign S6bow6 = (~(Zdbow6 | Gebow6)); +assign Gebow6 = (~(R2aiu6 | Lkaiu6)); +assign Zdbow6 = (Cyfpw6[7] ? Nebow6 : Mfjiu6); +assign Nebow6 = (~(Uebow6 & Bfbow6)); +assign Bfbow6 = (~(D6kiu6 & Pugiu6)); +assign Uebow6 = (Ifbow6 & Pfbow6); +assign Pfbow6 = (~(I82ju6 & Xojiu6)); +assign Ifbow6 = (~(Jf6ju6 & It2ju6)); +assign Oqohu6 = (~(Wfbow6 & Dgbow6)); +assign Dgbow6 = (~(Y7ghu6 & Kgbow6)); +assign Kgbow6 = (Eh6iu6 | J79ow6); +assign J79ow6 = (Ii0iu6 & Hs0iu6); +assign Wfbow6 = (~(HREADY & Rgbow6)); +assign Rgbow6 = (~(Ygbow6 & Fhbow6)); +assign Fhbow6 = (Mhbow6 & Thbow6); +assign Thbow6 = (Aibow6 & Hibow6); +assign Hibow6 = (~(Oibow6 & Vibow6)); +assign Vibow6 = (~(D7fpw6[8] | Sbghu6)); +assign Oibow6 = (Dd7ow6 & Jehhu6); +assign Dd7ow6 = (Cjbow6 & Jjbow6); +assign Jjbow6 = (J9kiu6 & D7fpw6[13]); +assign Cjbow6 = (Y40ju6 & F6ziu6); +assign Aibow6 = (~(Imaiu6 & Qjbow6)); +assign Qjbow6 = (Lraiu6 | Xjbow6); +assign Mhbow6 = (Vx1ju6 & Ekbow6); +assign Ekbow6 = (~(Lkbow6 & Xe8iu6)); +assign Lkbow6 = (~(Skbow6 & Zkbow6)); +assign Zkbow6 = (K9aiu6 | Sbghu6); +assign Skbow6 = (Glbow6 & Nlbow6); +assign Nlbow6 = (~(Ulbow6 & Xjbow6)); +assign Ulbow6 = (~(Szniu6 | Wfoiu6)); +assign Szniu6 = (!Kfiiu6); +assign Kfiiu6 = (Cyfpw6[4] & K9aiu6); +assign Glbow6 = (~(Bmbow6 & E6oiu6)); +assign Bmbow6 = (~(Q5aiu6 | As0iu6)); +assign Vx1ju6 = (Jojiu6 | Mjfiu6); +assign Ygbow6 = (Imbow6 & Pmbow6); +assign Imbow6 = (Wmbow6 & Dnbow6); +assign Dnbow6 = (Kq0iu6 | W2aow6); +assign Wmbow6 = (Zraiu6 | Lkaiu6); +assign Hqohu6 = (F2biu6 ? B0biu6 : V9ghu6); +assign B0biu6 = (!Knbow6); +assign Aqohu6 = (G81ju6 ? H2fpw6[2] : Rnbow6); +assign Rnbow6 = (~(Ynbow6 & Fobow6)); +assign Fobow6 = (Mobow6 & Tobow6); +assign Tobow6 = (~(Fb1ju6 & D7fpw6[10])); +assign Fb1ju6 = (Llaow6 & Apbow6); +assign Apbow6 = (~(Hpbow6 & Opbow6)); +assign Opbow6 = (~(Vk9ow6 & D7fpw6[13])); +assign Hpbow6 = (Ftjiu6 | X1ziu6); +assign Mobow6 = (~(P91ju6 & D7fpw6[5])); +assign P91ju6 = (Llaow6 & Vpbow6); +assign Vpbow6 = (~(Cqbow6 & Jqbow6)); +assign Jqbow6 = (D7fpw6[13] ? Xqbow6 : Qqbow6); +assign Xqbow6 = (~(Aujiu6 & D7fpw6[9])); +assign Qqbow6 = (Gkiiu6 | D7fpw6[15]); +assign Cqbow6 = (Erbow6 & Co6ow6); +assign Erbow6 = (Nj6ow6 | D7fpw6[12]); +assign Nj6ow6 = (D7fpw6[13] | D7fpw6[14]); +assign Ynbow6 = (Ir6ow6 & Lrbow6); +assign Lrbow6 = (~(D7fpw6[2] & Ac1ju6)); +assign Ac1ju6 = (Srbow6 | Zrbow6); +assign Zrbow6 = (Gsbow6 & V4aiu6); +assign Tpohu6 = (~(Nsbow6 & Usbow6)); +assign Usbow6 = (Btbow6 | Dk7ow6); +assign Nsbow6 = (Rk7ow6 ? Qjoiu6 : Itbow6); +assign Itbow6 = (Ptbow6 & Wtbow6); +assign Wtbow6 = (Dubow6 & Kubow6); +assign Kubow6 = (W6jiu6 & Faaiu6); +assign W6jiu6 = (Jc2ju6 | K9aiu6); +assign Dubow6 = (Rubow6 & Yubow6); +assign Yubow6 = (~(Fvbow6 & D7fpw6[10])); +assign Fvbow6 = (Mvbow6 & Ftjiu6); +assign Mvbow6 = (~(O8kiu6 & Tvbow6)); +assign Tvbow6 = (Yb9ow6 | Qpaju6); +assign O8kiu6 = (~(Bziiu6 & Zraiu6)); +assign Bziiu6 = (~(Co6ow6 | Jjhiu6)); +assign Rubow6 = (~(Am7ow6 & Ppfpw6[4])); +assign Am7ow6 = (Ivfhu6 & Awbow6); +assign Awbow6 = (~(Hwbow6 & Twniu6)); +assign Twniu6 = (~(D6kiu6 & Cyfpw6[1])); +assign Hwbow6 = (~(Mfjiu6 | Gsbow6)); +assign Ptbow6 = (Owbow6 & Vwbow6); +assign Vwbow6 = (V4aiu6 | Cn7ow6); +assign V4aiu6 = (!D7fpw6[3]); +assign Owbow6 = (Cxbow6 & Jxbow6); +assign Jxbow6 = (A1kiu6 | Hm7ow6); +assign Cxbow6 = (~(Cbbiu6 & D7fpw6[9])); +assign Cbbiu6 = (~(Vhiiu6 | Ftjiu6)); +assign Vhiiu6 = (C27ow6 | Qpaju6); +assign Mpohu6 = (~(Qxbow6 & Xxbow6)); +assign Xxbow6 = (Eybow6 & Lybow6); +assign Lybow6 = (~(Egziu6 & Eafpw6[28])); +assign Eybow6 = (Sybow6 & Sgziu6); +assign Sybow6 = (Ft6ow6 | Acniu6); +assign Acniu6 = (Zybow6 & Gzbow6); +assign Gzbow6 = (Nzbow6 & Uzbow6); +assign Uzbow6 = (Iiziu6 | B0cow6); +assign Nzbow6 = (I0cow6 & Djziu6); +assign I0cow6 = (Kjziu6 | P0cow6); +assign Zybow6 = (W0cow6 & D1cow6); +assign D1cow6 = (K1cow6 | Hlziu6); +assign W0cow6 = (Mkziu6 | R1cow6); +assign Qxbow6 = (Y1cow6 & F2cow6); +assign F2cow6 = (~(Zsfpw6[27] & Cmziu6)); +assign Y1cow6 = (~(vis_pc_o[27] & Jmziu6)); +assign Fpohu6 = (~(M2cow6 & T2cow6)); +assign T2cow6 = (A3cow6 & H3cow6); +assign H3cow6 = (~(Egziu6 & Eafpw6[30])); +assign A3cow6 = (O3cow6 & Sgziu6); +assign O3cow6 = (Ft6ow6 | D5liu6); +assign D5liu6 = (V3cow6 & C4cow6); +assign C4cow6 = (J4cow6 & Q4cow6); +assign Q4cow6 = (~(X4cow6 & Rc8ow6)); +assign J4cow6 = (E5cow6 & Djziu6); +assign E5cow6 = (Mkziu6 | L5cow6); +assign V3cow6 = (S5cow6 & Z5cow6); +assign Z5cow6 = (Hlziu6 | G6cow6); +assign S5cow6 = (~(N6cow6 & Dc8ow6)); +assign M2cow6 = (U6cow6 & B7cow6); +assign B7cow6 = (~(Zsfpw6[29] & Cmziu6)); +assign U6cow6 = (~(vis_pc_o[29] & Jmziu6)); +assign Yoohu6 = (P7cow6 ? I7cow6 : Yyfhu6); +assign P7cow6 = (~(Q08iu6 | Eh6iu6)); +assign Q08iu6 = (!W7cow6); +assign Roohu6 = (~(D8cow6 & K8cow6)); +assign K8cow6 = (R8cow6 & Y8cow6); +assign Y8cow6 = (~(Zsfpw6[22] & Cmziu6)); +assign R8cow6 = (F9cow6 & M9cow6); +assign M9cow6 = (Ft6ow6 | Lvkiu6); +assign Lvkiu6 = (T9cow6 & Aacow6); +assign Aacow6 = (Hacow6 & Oacow6); +assign Oacow6 = (Vacow6 | Q88ow6); +assign Hacow6 = (~(Cbcow6 & V78ow6)); +assign T9cow6 = (Jbcow6 & Qbcow6); +assign Qbcow6 = (~(Xbcow6 & X88ow6)); +assign Jbcow6 = (H78ow6 | Eccow6); +assign F9cow6 = (~(Egziu6 & Eafpw6[23])); +assign D8cow6 = (Lccow6 & Sccow6); +assign Sccow6 = (~(vis_pc_o[22] & Jmziu6)); +assign Koohu6 = (~(Zccow6 & Gdcow6)); +assign Gdcow6 = (Ndcow6 & Udcow6); +assign Udcow6 = (~(Egziu6 & Eafpw6[27])); +assign Ndcow6 = (Becow6 & Sgziu6); +assign Becow6 = (~(Zgziu6 & I4liu6)); +assign I4liu6 = (~(Iecow6 & Pecow6)); +assign Pecow6 = (Wecow6 & Dfcow6); +assign Dfcow6 = (Iiziu6 | Kfcow6); +assign Wecow6 = (Rfcow6 & Djziu6); +assign Rfcow6 = (Kjziu6 | Yfcow6); +assign Iecow6 = (Fgcow6 & Mgcow6); +assign Mgcow6 = (Mkziu6 | Tgcow6); +assign Fgcow6 = (Ahcow6 | Hlziu6); +assign Zccow6 = (Hhcow6 & Ohcow6); +assign Ohcow6 = (~(Zsfpw6[26] & Cmziu6)); +assign Hhcow6 = (~(vis_pc_o[26] & Jmziu6)); +assign Doohu6 = (~(Vhcow6 & Cicow6)); +assign Cicow6 = (Jicow6 & Qicow6); +assign Qicow6 = (~(Egziu6 & Eafpw6[26])); +assign Jicow6 = (Xicow6 & Sgziu6); +assign Xicow6 = (~(Zgziu6 & Q1liu6)); +assign Q1liu6 = (~(Ejcow6 & Ljcow6)); +assign Ljcow6 = (Sjcow6 & Zjcow6); +assign Zjcow6 = (Iiziu6 | Gkcow6); +assign Iiziu6 = (!Dc8ow6); +assign Sjcow6 = (Nkcow6 & Djziu6); +assign Nkcow6 = (Kjziu6 | Ukcow6); +assign Kjziu6 = (!Rc8ow6); +assign Ejcow6 = (Blcow6 & Ilcow6); +assign Ilcow6 = (Mkziu6 | Plcow6); +assign Blcow6 = (Hlziu6 | Wlcow6); +assign Vhcow6 = (Dmcow6 & Kmcow6); +assign Kmcow6 = (~(Zsfpw6[25] & Cmziu6)); +assign Dmcow6 = (~(vis_pc_o[25] & Jmziu6)); +assign Wnohu6 = (~(Rmcow6 & Ymcow6)); +assign Ymcow6 = (Fncow6 & Mncow6); +assign Mncow6 = (~(Egziu6 & Eafpw6[25])); +assign Fncow6 = (Tncow6 & Sgziu6); +assign Tncow6 = (~(Zgziu6 & Osliu6)); +assign Osliu6 = (~(Aocow6 & Hocow6)); +assign Hocow6 = (Oocow6 & Vocow6); +assign Vocow6 = (~(Dc8ow6 & Ew6ow6)); +assign Oocow6 = (Cpcow6 & Djziu6); +assign Cpcow6 = (~(Rc8ow6 & Cv6ow6)); +assign Aocow6 = (Jpcow6 & Qpcow6); +assign Qpcow6 = (Mkziu6 | Xv6ow6); +assign Jpcow6 = (Ou6ow6 | Hlziu6); +assign Rmcow6 = (Xpcow6 & Eqcow6); +assign Eqcow6 = (~(Zsfpw6[24] & Cmziu6)); +assign Xpcow6 = (~(vis_pc_o[24] & Jmziu6)); +assign Pnohu6 = (~(Lqcow6 & Sqcow6)); +assign Sqcow6 = (Zqcow6 & Grcow6); +assign Grcow6 = (~(Egziu6 & Eafpw6[24])); +assign Zqcow6 = (Nrcow6 & Sgziu6); +assign Nrcow6 = (~(Zgziu6 & Nu8iu6)); +assign Nu8iu6 = (~(Urcow6 & Bscow6)); +assign Bscow6 = (Iscow6 & Pscow6); +assign Pscow6 = (~(Dc8ow6 & Tdliu6)); +assign Dc8ow6 = (~(Wscow6 & Dtcow6)); +assign Wscow6 = (Ah3ju6 | Ktcow6); +assign Iscow6 = (Rtcow6 & Djziu6); +assign Djziu6 = (~(Ytcow6 & Fucow6)); +assign Fucow6 = (~(Mucow6 & Tucow6)); +assign Mucow6 = (~(Fg3ju6 & Ah3ju6)); +assign Ah3ju6 = (Avcow6 | Df3ju6); +assign Rtcow6 = (~(Rc8ow6 & Jfliu6)); +assign Rc8ow6 = (Hvcow6 | Ovcow6); +assign Hvcow6 = (~(Fg3ju6 | Ktcow6)); +assign Urcow6 = (Vvcow6 & Cwcow6); +assign Cwcow6 = (Mkziu6 | Rcliu6); +assign Vvcow6 = (Veliu6 | Hlziu6); +assign Lqcow6 = (Jwcow6 & Qwcow6); +assign Qwcow6 = (~(Zsfpw6[23] & Cmziu6)); +assign Jwcow6 = (~(vis_pc_o[23] & Jmziu6)); +assign Inohu6 = (~(Xwcow6 & Excow6)); +assign Excow6 = (Lxcow6 & Sxcow6); +assign Sxcow6 = (~(Zsfpw6[20] & Cmziu6)); +assign Lxcow6 = (Zxcow6 & Gycow6); +assign Gycow6 = (Ft6ow6 | Tyliu6); +assign Tyliu6 = (Nycow6 & Uycow6); +assign Uycow6 = (Bzcow6 & Izcow6); +assign Izcow6 = (Tkziu6 | Vacow6); +assign Bzcow6 = (Rjziu6 | Pzcow6); +assign Nycow6 = (Wzcow6 & D0dow6); +assign D0dow6 = (Alziu6 | Eccow6); +assign Wzcow6 = (Mkziu6 | Piziu6); +assign Zxcow6 = (~(Egziu6 & Eafpw6[21])); +assign Xwcow6 = (Lccow6 & K0dow6); +assign K0dow6 = (~(vis_pc_o[20] & Jmziu6)); +assign Bnohu6 = (~(R0dow6 & Y0dow6)); +assign Y0dow6 = (F1dow6 & M1dow6); +assign M1dow6 = (~(Zsfpw6[19] & Cmziu6)); +assign F1dow6 = (T1dow6 & A2dow6); +assign A2dow6 = (Ft6ow6 | S1miu6); +assign S1miu6 = (H2dow6 & O2dow6); +assign O2dow6 = (V2dow6 & C3dow6); +assign C3dow6 = (P0cow6 | Pzcow6); +assign V2dow6 = (K1cow6 | Eccow6); +assign H2dow6 = (J3dow6 & Q3dow6); +assign Q3dow6 = (R1cow6 | Vacow6); +assign J3dow6 = (Mkziu6 | B0cow6); +assign T1dow6 = (~(Egziu6 & Eafpw6[20])); +assign R0dow6 = (Lccow6 & X3dow6); +assign X3dow6 = (~(vis_pc_o[19] & Jmziu6)); +assign Umohu6 = (~(E4dow6 & L4dow6)); +assign L4dow6 = (S4dow6 & Z4dow6); +assign Z4dow6 = (~(Zsfpw6[18] & Cmziu6)); +assign S4dow6 = (G5dow6 & N5dow6); +assign N5dow6 = (Ft6ow6 | R4miu6); +assign R4miu6 = (U5dow6 & B6dow6); +assign B6dow6 = (I6dow6 & P6dow6); +assign P6dow6 = (Mkziu6 | Kfcow6); +assign I6dow6 = (Tgcow6 | Vacow6); +assign U5dow6 = (W6dow6 & D7dow6); +assign D7dow6 = (Ahcow6 | Eccow6); +assign W6dow6 = (Yfcow6 | Pzcow6); +assign G5dow6 = (~(Egziu6 & Eafpw6[19])); +assign E4dow6 = (Lccow6 & K7dow6); +assign K7dow6 = (~(vis_pc_o[18] & Jmziu6)); +assign Nmohu6 = (~(R7dow6 & Y7dow6)); +assign Y7dow6 = (F8dow6 & M8dow6); +assign M8dow6 = (~(Zsfpw6[17] & Cmziu6)); +assign F8dow6 = (T8dow6 & A9dow6); +assign A9dow6 = (Ft6ow6 | Q7miu6); +assign Q7miu6 = (H9dow6 & O9dow6); +assign O9dow6 = (V9dow6 & Cadow6); +assign Cadow6 = (Vacow6 | Plcow6); +assign V9dow6 = (Pzcow6 | Ukcow6); +assign Pzcow6 = (!Cbcow6); +assign H9dow6 = (Jadow6 & Qadow6); +assign Qadow6 = (Mkziu6 | Gkcow6); +assign Mkziu6 = (!Xbcow6); +assign Jadow6 = (Eccow6 | Wlcow6); +assign T8dow6 = (~(Egziu6 & Eafpw6[18])); +assign R7dow6 = (Lccow6 & Xadow6); +assign Xadow6 = (~(vis_pc_o[17] & Jmziu6)); +assign Gmohu6 = (~(Ebdow6 & Lbdow6)); +assign Lbdow6 = (Sbdow6 & Zbdow6); +assign Zbdow6 = (~(Zsfpw6[16] & Cmziu6)); +assign Sbdow6 = (Gcdow6 & Ncdow6); +assign Ncdow6 = (Ft6ow6 | Pamiu6); +assign Pamiu6 = (Ucdow6 & Bddow6); +assign Bddow6 = (Iddow6 & Pddow6); +assign Pddow6 = (~(Xbcow6 & Ew6ow6)); +assign Iddow6 = (Xv6ow6 | Vacow6); +assign Ucdow6 = (Wddow6 & Dedow6); +assign Dedow6 = (Ou6ow6 | Eccow6); +assign Wddow6 = (~(Cv6ow6 & Cbcow6)); +assign Gcdow6 = (~(Egziu6 & Eafpw6[17])); +assign Ebdow6 = (Lccow6 & Kedow6); +assign Kedow6 = (~(vis_pc_o[16] & Jmziu6)); +assign Zlohu6 = (~(Redow6 & Yedow6)); +assign Yedow6 = (Ffdow6 & Mfdow6); +assign Mfdow6 = (~(Zsfpw6[15] & Cmziu6)); +assign Ffdow6 = (Tfdow6 & Agdow6); +assign Agdow6 = (Ft6ow6 | Odmiu6); +assign Odmiu6 = (Hgdow6 & Ogdow6); +assign Ogdow6 = (Vgdow6 & Chdow6); +assign Chdow6 = (~(Xbcow6 & Tdliu6)); +assign Vgdow6 = (Rcliu6 | Vacow6); +assign Hgdow6 = (Jhdow6 & Qhdow6); +assign Qhdow6 = (Veliu6 | Eccow6); +assign Jhdow6 = (~(Jfliu6 & Cbcow6)); +assign Tfdow6 = (~(Egziu6 & Eafpw6[16])); +assign Redow6 = (Lccow6 & Xhdow6); +assign Xhdow6 = (~(vis_pc_o[15] & Jmziu6)); +assign Slohu6 = (~(Eidow6 & Lidow6)); +assign Lidow6 = (Sidow6 & Zidow6); +assign Zidow6 = (~(Egziu6 & Eafpw6[14])); +assign Sidow6 = (Gjdow6 & Sgziu6); +assign Gjdow6 = (~(Zgziu6 & Yimiu6)); +assign Yimiu6 = (~(Njdow6 & Ujdow6)); +assign Ujdow6 = (Bkdow6 & Ikdow6); +assign Ikdow6 = (L5cow6 | Pkdow6); +assign Bkdow6 = (Wkdow6 & Dldow6); +assign Wkdow6 = (G6cow6 | Kldow6); +assign Njdow6 = (Rldow6 & Yldow6); +assign Yldow6 = (~(X4cow6 & Fmdow6)); +assign Rldow6 = (~(N6cow6 & Mmdow6)); +assign Eidow6 = (Tmdow6 & Andow6); +assign Andow6 = (~(Zsfpw6[13] & Cmziu6)); +assign Tmdow6 = (~(vis_pc_o[13] & Jmziu6)); +assign Llohu6 = (~(Hndow6 & Ondow6)); +assign Ondow6 = (Vndow6 & Codow6); +assign Codow6 = (~(Egziu6 & Eafpw6[13])); +assign Vndow6 = (Jodow6 & Sgziu6); +assign Jodow6 = (~(Zgziu6 & Qlmiu6)); +assign Qlmiu6 = (~(Qodow6 & Xodow6)); +assign Xodow6 = (Epdow6 & Lpdow6); +assign Lpdow6 = (Rjziu6 | Spdow6); +assign Epdow6 = (Zpdow6 & Dldow6); +assign Zpdow6 = (Tkziu6 | Pkdow6); +assign Qodow6 = (Gqdow6 & Nqdow6); +assign Nqdow6 = (Alziu6 | Kldow6); +assign Gqdow6 = (Piziu6 | Uqdow6); +assign Hndow6 = (Brdow6 & Irdow6); +assign Irdow6 = (~(Zsfpw6[12] & Cmziu6)); +assign Brdow6 = (~(vis_pc_o[12] & Jmziu6)); +assign Elohu6 = (~(Prdow6 & Wrdow6)); +assign Wrdow6 = (Dsdow6 & Ksdow6); +assign Ksdow6 = (~(Egziu6 & Eafpw6[12])); +assign Dsdow6 = (Rsdow6 & Sgziu6); +assign Rsdow6 = (~(Zgziu6 & Iomiu6)); +assign Iomiu6 = (~(Ysdow6 & Ftdow6)); +assign Ftdow6 = (Mtdow6 & Ttdow6); +assign Ttdow6 = (K1cow6 | Kldow6); +assign Mtdow6 = (Audow6 & Dldow6); +assign Audow6 = (P0cow6 | Spdow6); +assign Ysdow6 = (Hudow6 & Oudow6); +assign Oudow6 = (R1cow6 | Pkdow6); +assign Hudow6 = (B0cow6 | Uqdow6); +assign Prdow6 = (Vudow6 & Cvdow6); +assign Cvdow6 = (~(Zsfpw6[11] & Cmziu6)); +assign Vudow6 = (~(vis_pc_o[11] & Jmziu6)); +assign Xkohu6 = (~(Jvdow6 & Qvdow6)); +assign Qvdow6 = (Xvdow6 & Ewdow6); +assign Ewdow6 = (~(Egziu6 & Eafpw6[8])); +assign Xvdow6 = (Lwdow6 & Sgziu6); +assign Lwdow6 = (~(Zgziu6 & E7niu6)); +assign E7niu6 = (~(Swdow6 & Zwdow6)); +assign Zwdow6 = (Gxdow6 & Nxdow6); +assign Nxdow6 = (Rcliu6 | Pkdow6); +assign Rcliu6 = (Uxdow6 & Bydow6); +assign Bydow6 = (Iydow6 | W4siu6); +assign W4siu6 = (Pydow6 & Wydow6); +assign Wydow6 = (Dzdow6 & Kzdow6); +assign Kzdow6 = (~(Tzfpw6[8] & Yvgiu6)); +assign Dzdow6 = (Rzdow6 & Yzdow6); +assign Yzdow6 = (~(F0eow6 & Vbgpw6[8])); +assign Rzdow6 = (~(M0eow6 & Odgpw6[8])); +assign Pydow6 = (T0eow6 & A1eow6); +assign A1eow6 = (~(Bagpw6[8] & M6eiu6)); +assign T0eow6 = (~(STCALIB[8] & H1eow6)); +assign Uxdow6 = (O1eow6 & V1eow6); +assign V1eow6 = (~(Gk3ju6 & C2eow6)); +assign Gk3ju6 = (J2eow6 ? Cw3ju6 : Tf4ju6); +assign O1eow6 = (~(HRDATA[8] & Q2eow6)); +assign Gxdow6 = (X2eow6 & Dldow6); +assign X2eow6 = (~(Tdliu6 & Mmdow6)); +assign Tdliu6 = (~(E3eow6 & L3eow6)); +assign L3eow6 = (Iydow6 | M1xiu6); +assign M1xiu6 = (S3eow6 & Z3eow6); +assign Z3eow6 = (G4eow6 & N4eow6); +assign N4eow6 = (U4eow6 & B5eow6); +assign B5eow6 = (~(STCALIB[0] & H1eow6)); +assign U4eow6 = (~(ECOREVNUM[0] & I5eow6)); +assign G4eow6 = (P5eow6 & W5eow6); +assign W5eow6 = (~(Y5eiu6 & Bxghu6)); +assign P5eow6 = (~(Yvgiu6 & Tzfpw6[0])); +assign S3eow6 = (D6eow6 & K6eow6); +assign K6eow6 = (R6eow6 & Y6eow6); +assign Y6eow6 = (~(Bagpw6[0] & M6eiu6)); +assign R6eow6 = (~(Odgpw6[0] & M0eow6)); +assign D6eow6 = (F7eow6 & M7eow6); +assign M7eow6 = (~(T7eow6 & vis_ipsr_o[0])); +assign F7eow6 = (~(F0eow6 & Vbgpw6[0])); +assign E3eow6 = (A8eow6 & H8eow6); +assign H8eow6 = (~(C2eow6 & Lj3ju6)); +assign Lj3ju6 = (Hv3ju6 ? Sx3ju6 : O8eow6); +assign A8eow6 = (~(HRDATA[0] & Q2eow6)); +assign Swdow6 = (V8eow6 & C9eow6); +assign C9eow6 = (Veliu6 | Kldow6); +assign Veliu6 = (J9eow6 & Q9eow6); +assign Q9eow6 = (Iydow6 | Gntiu6); +assign Gntiu6 = (X9eow6 & Eaeow6); +assign Eaeow6 = (Laeow6 & Saeow6); +assign Saeow6 = (Zaeow6 & Gbeow6); +assign Gbeow6 = (~(Bagpw6[16] & M6eiu6)); +assign Zaeow6 = (~(Tzfpw6[16] & Yvgiu6)); +assign Laeow6 = (Nbeow6 & Ubeow6); +assign Ubeow6 = (~(Krghu6 & Y5eiu6)); +assign Nbeow6 = (~(Odgpw6[16] & M0eow6)); +assign X9eow6 = (Bceow6 & Iceow6); +assign Iceow6 = (~(Pceow6 & Wceow6)); +assign Wceow6 = (Nzhiu6 | Vbgpw6[16]); +assign Bceow6 = (Ddeow6 & Kdeow6); +assign Kdeow6 = (~(STCALIB[16] & H1eow6)); +assign Ddeow6 = (Z4ciu6 | Qkgiu6); +assign Z4ciu6 = (~(Rdeow6 & Ydeow6)); +assign Rdeow6 = (~(Feeow6 | Meeow6)); +assign J9eow6 = (Teeow6 & Afeow6); +assign Afeow6 = (Uk3ju6 | Hfeow6); +assign Uk3ju6 = (!Ofeow6); +assign Ofeow6 = (Hv3ju6 ? E44ju6 : Ke4ju6); +assign Teeow6 = (~(HRDATA[16] & Q2eow6)); +assign V8eow6 = (~(Jfliu6 & Fmdow6)); +assign Jfliu6 = (~(Vfeow6 & Cgeow6)); +assign Cgeow6 = (Iydow6 | P8viu6); +assign P8viu6 = (Jgeow6 & Qgeow6); +assign Jgeow6 = (Xgeow6 & Eheow6); +assign Eheow6 = (~(M0eow6 & Odgpw6[24])); +assign Xgeow6 = (~(F0eow6 & Vbgpw6[24])); +assign Vfeow6 = (Lheow6 & Sheow6); +assign Sheow6 = (~(HRDATA[24] & Q2eow6)); +assign Lheow6 = (~(C2eow6 & Eb4ju6)); +assign Eb4ju6 = (~(Zheow6 & Gieow6)); +assign Gieow6 = (~(Nieow6 & Vh3ju6)); +assign Zheow6 = (Nk3ju6 | Nieow6); +assign Nieow6 = (~(Uieow6 | Ii0iu6)); +assign Nk3ju6 = (!Bjeow6); +assign Bjeow6 = (Hv3ju6 ? Ijeow6 : V24ju6); +assign Jvdow6 = (Pjeow6 & Wjeow6); +assign Wjeow6 = (~(Zsfpw6[7] & Cmziu6)); +assign Pjeow6 = (~(vis_pc_o[7] & Jmziu6)); +assign Qkohu6 = (~(Dkeow6 & Kkeow6)); +assign Kkeow6 = (Rkeow6 & Ykeow6); +assign Ykeow6 = (~(Egziu6 & Eafpw6[6])); +assign Rkeow6 = (Fleow6 & Sgziu6); +assign Fleow6 = (~(Zgziu6 & Wqkiu6)); +assign Wqkiu6 = (~(Mleow6 & Tleow6)); +assign Tleow6 = (Ameow6 & Hmeow6); +assign Hmeow6 = (Cfliu6 | G6cow6); +assign Ameow6 = (Omeow6 & Mdliu6); +assign Omeow6 = (~(Qfliu6 & X4cow6)); +assign Mleow6 = (Vmeow6 & Cneow6); +assign Cneow6 = (Ycliu6 | L5cow6); +assign Vmeow6 = (~(Aeliu6 & N6cow6)); +assign Dkeow6 = (Jneow6 & Qneow6); +assign Qneow6 = (~(Zsfpw6[5] & Cmziu6)); +assign Jneow6 = (~(vis_pc_o[5] & Jmziu6)); +assign Jkohu6 = (~(Xneow6 & Eoeow6)); +assign Eoeow6 = (Loeow6 & Soeow6); +assign Soeow6 = (~(Egziu6 & Eafpw6[5])); +assign Loeow6 = (Zoeow6 & Sgziu6); +assign Zoeow6 = (Ft6ow6 | Ljbiu6); +assign Ljbiu6 = (Gpeow6 & Npeow6); +assign Npeow6 = (Upeow6 & Bqeow6); +assign Bqeow6 = (Rjziu6 | Iqeow6); +assign Rjziu6 = (Pqeow6 & Wqeow6); +assign Wqeow6 = (Iydow6 | U6wiu6); +assign U6wiu6 = (Dreow6 & Kreow6); +assign Kreow6 = (~(F0eow6 & Vbgpw6[29])); +assign Dreow6 = (Rreow6 & Yreow6); +assign Rreow6 = (~(Odgpw6[29] & M0eow6)); +assign Pqeow6 = (Fseow6 & Mseow6); +assign Mseow6 = (~(C2eow6 & Tseow6)); +assign Tseow6 = (~(T84ju6 & Ateow6)); +assign Ateow6 = (Hteow6 | Bz3ju6); +assign T84ju6 = (~(Oteow6 & Vteow6)); +assign Vteow6 = (Ex3ju6 | J2eow6); +assign Oteow6 = (Cueow6 & Hteow6); +assign Hteow6 = (~(Jueow6 & Queow6)); +assign Jueow6 = (Xueow6 & Eveow6); +assign Eveow6 = (~(Lveow6 & Sveow6)); +assign Xueow6 = (Zveow6 | Gweow6); +assign Cueow6 = (~(Nweow6 & J2eow6)); +assign Fseow6 = (~(Q2eow6 & HRDATA[29])); +assign Upeow6 = (Uweow6 & Mdliu6); +assign Uweow6 = (Tkziu6 | Ycliu6); +assign Tkziu6 = (Bxeow6 & Ixeow6); +assign Ixeow6 = (Pxeow6 & Wxeow6); +assign Wxeow6 = (~(Dyeow6 & Ff4ju6)); +assign Pxeow6 = (Iydow6 | U2tiu6); +assign U2tiu6 = (Kyeow6 & Ryeow6); +assign Ryeow6 = (Yyeow6 & Fzeow6); +assign Fzeow6 = (~(Tzfpw6[13] & Yvgiu6)); +assign Yyeow6 = (Mzeow6 & Tzeow6); +assign Tzeow6 = (~(T7eow6 & E4ciu6)); +assign E4ciu6 = (~(A0fow6 & H0fow6)); +assign H0fow6 = (~(O0fow6 & V0fow6)); +assign O0fow6 = (~(C1fow6 & J1fow6)); +assign C1fow6 = (E2fow6 ? X1fow6 : Q1fow6); +assign X1fow6 = (L2fow6 & S2fow6); +assign S2fow6 = (~(Z2fow6 & G3fow6)); +assign L2fow6 = (B4fow6 ? U3fow6 : N3fow6); +assign U3fow6 = (I4fow6 | P4fow6); +assign N3fow6 = (K5fow6 ? D5fow6 : W4fow6); +assign Q1fow6 = (R5fow6 & Y5fow6); +assign Y5fow6 = (F6fow6 | M6fow6); +assign R5fow6 = (H7fow6 ? A7fow6 : T6fow6); +assign A7fow6 = (O7fow6 | V7fow6); +assign T6fow6 = (~(C8fow6 | J8fow6)); +assign J8fow6 = (~(Q8fow6 | X8fow6)); +assign Mzeow6 = (~(Odgpw6[13] & M0eow6)); +assign Kyeow6 = (E9fow6 & L9fow6); +assign L9fow6 = (~(F0eow6 & Vbgpw6[13])); +assign E9fow6 = (S9fow6 & Z9fow6); +assign Z9fow6 = (~(STCALIB[13] & H1eow6)); +assign S9fow6 = (~(Bagpw6[13] & M6eiu6)); +assign Bxeow6 = (Gafow6 & Nafow6); +assign Nafow6 = (Uafow6 | Uc4ju6); +assign Gafow6 = (~(Q2eow6 & HRDATA[13])); +assign Gpeow6 = (Bbfow6 & Ibfow6); +assign Ibfow6 = (Alziu6 | Cfliu6); +assign Alziu6 = (Pbfow6 & Wbfow6); +assign Wbfow6 = (Dcfow6 & Kcfow6); +assign Kcfow6 = (Rcfow6 | J34ju6); +assign J34ju6 = (!V94ju6); +assign Dcfow6 = (Iydow6 | Umuiu6); +assign Umuiu6 = (Ycfow6 & Fdfow6); +assign Fdfow6 = (Mdfow6 & Tdfow6); +assign Tdfow6 = (~(Tzfpw6[21] & Yvgiu6)); +assign Mdfow6 = (Aefow6 & Hefow6); +assign Hefow6 = (~(F0eow6 & Vbgpw6[21])); +assign Aefow6 = (~(Odgpw6[21] & M0eow6)); +assign Ycfow6 = (Oefow6 & Vefow6); +assign Vefow6 = (~(Bagpw6[21] & M6eiu6)); +assign Oefow6 = (~(STCALIB[21] & H1eow6)); +assign Pbfow6 = (Cffow6 & Jffow6); +assign Jffow6 = (Uafow6 | F14ju6); +assign Cffow6 = (~(HRDATA[21] & Q2eow6)); +assign Bbfow6 = (Piziu6 | Qffow6); +assign Piziu6 = (Xffow6 & Egfow6); +assign Egfow6 = (Lgfow6 & Sgfow6); +assign Sgfow6 = (~(Dyeow6 & Hg4ju6)); +assign Lgfow6 = (Iydow6 | Eariu6); +assign Eariu6 = (Zgfow6 & Ghfow6); +assign Ghfow6 = (Nhfow6 & Uhfow6); +assign Uhfow6 = (~(Tzfpw6[5] & Yvgiu6)); +assign Nhfow6 = (Bifow6 & Iifow6); +assign Iifow6 = (~(Bagpw6[5] & M6eiu6)); +assign Bifow6 = (~(Odgpw6[5] & M0eow6)); +assign Zgfow6 = (Pifow6 & Wifow6); +assign Wifow6 = (~(F0eow6 & Vbgpw6[5])); +assign Pifow6 = (Djfow6 & Kjfow6); +assign Kjfow6 = (~(STCALIB[5] & H1eow6)); +assign Djfow6 = (Qkgiu6 | Vhbiu6); +assign Xffow6 = (Rjfow6 & Yjfow6); +assign Yjfow6 = (Uafow6 | Mu3ju6); +assign Rjfow6 = (~(HRDATA[5] & Q2eow6)); +assign Xneow6 = (Fkfow6 & Mkfow6); +assign Mkfow6 = (~(Zsfpw6[4] & Cmziu6)); +assign Fkfow6 = (~(vis_pc_o[4] & Jmziu6)); +assign Ckohu6 = (~(Tkfow6 & Alfow6)); +assign Alfow6 = (Hlfow6 & Olfow6); +assign Olfow6 = (~(Egziu6 & Eafpw6[4])); +assign Hlfow6 = (Vlfow6 & Sgziu6); +assign Vlfow6 = (Ft6ow6 | Y4fiu6); +assign Y4fiu6 = (Cmfow6 & Jmfow6); +assign Jmfow6 = (Qmfow6 & Xmfow6); +assign Xmfow6 = (K1cow6 | Cfliu6); +assign K1cow6 = (Enfow6 & Lnfow6); +assign Lnfow6 = (Snfow6 & Znfow6); +assign Znfow6 = (~(Dyeow6 & V24ju6)); +assign V24ju6 = (~(Gofow6 & Nofow6)); +assign Nofow6 = (Uofow6 & Bpfow6); +assign Bpfow6 = (Ipfow6 | A70iu6); +assign Uofow6 = (Ppfow6 | V70iu6); +assign Gofow6 = (Wpfow6 & Dqfow6); +assign Dqfow6 = (Kqfow6 | O70iu6); +assign Wpfow6 = (Rqfow6 | H70iu6); +assign Snfow6 = (Iydow6 | Bguiu6); +assign Bguiu6 = (Yqfow6 & Frfow6); +assign Frfow6 = (Mrfow6 & Trfow6); +assign Trfow6 = (~(Tzfpw6[20] & Yvgiu6)); +assign Mrfow6 = (Asfow6 & Hsfow6); +assign Hsfow6 = (~(F0eow6 & Vbgpw6[20])); +assign Asfow6 = (~(Odgpw6[20] & M0eow6)); +assign Yqfow6 = (Osfow6 & Vsfow6); +assign Vsfow6 = (~(Bagpw6[20] & M6eiu6)); +assign Osfow6 = (~(STCALIB[20] & H1eow6)); +assign Enfow6 = (Ctfow6 & Jtfow6); +assign Jtfow6 = (~(Qtfow6 & E44ju6)); +assign E44ju6 = (~(Xtfow6 & Eufow6)); +assign Eufow6 = (Lufow6 & Sufow6); +assign Sufow6 = (Ipfow6 | C80iu6); +assign Lufow6 = (Rqfow6 | J80iu6); +assign Xtfow6 = (Zufow6 & Gvfow6); +assign Gvfow6 = (Ppfow6 | X80iu6); +assign Zufow6 = (Kqfow6 | Q80iu6); +assign Ctfow6 = (~(HRDATA[20] & Q2eow6)); +assign Qmfow6 = (Nvfow6 & Mdliu6); +assign Nvfow6 = (P0cow6 | Iqeow6); +assign P0cow6 = (Uvfow6 & Bwfow6); +assign Bwfow6 = (Iydow6 | I0wiu6); +assign I0wiu6 = (Iwfow6 & Pwfow6); +assign Pwfow6 = (~(Pceow6 & Wwfow6)); +assign Wwfow6 = (Nzhiu6 | Vbgpw6[28]); +assign Iwfow6 = (Dxfow6 & Kxfow6); +assign Kxfow6 = (Jh5iu6 | Qkgiu6); +assign Jh5iu6 = (!Ikghu6); +assign Dxfow6 = (~(Odgpw6[28] & M0eow6)); +assign Uvfow6 = (Rxfow6 & Yxfow6); +assign Yxfow6 = (~(C2eow6 & Xa4ju6)); +assign Xa4ju6 = (Myfow6 ? Vh3ju6 : Fyfow6); +assign Myfow6 = (Tyfow6 & Cyfpw6[3]); +assign Tyfow6 = (Azfow6 & Hzfow6); +assign Fyfow6 = (Hv3ju6 ? O8eow6 : Ijeow6); +assign O8eow6 = (~(Ozfow6 & Vzfow6)); +assign Vzfow6 = (C0gow6 & J0gow6); +assign J0gow6 = (Rqfow6 | F60iu6); +assign C0gow6 = (Ipfow6 | K50iu6); +assign Ozfow6 = (Q0gow6 & X0gow6); +assign X0gow6 = (Ppfow6 | Dc0iu6); +assign Q0gow6 = (Kqfow6 | E90iu6); +assign Ijeow6 = (~(E1gow6 & L1gow6)); +assign L1gow6 = (S1gow6 & Z1gow6); +assign Z1gow6 = (Ipfow6 | R50iu6); +assign S1gow6 = (Ppfow6 | T60iu6); +assign E1gow6 = (G2gow6 & N2gow6); +assign N2gow6 = (Kqfow6 | M60iu6); +assign G2gow6 = (Rqfow6 | Y50iu6); +assign Rxfow6 = (~(HRDATA[28] & Q2eow6)); +assign Cmfow6 = (U2gow6 & B3gow6); +assign B3gow6 = (R1cow6 | Ycliu6); +assign R1cow6 = (I3gow6 & P3gow6); +assign P3gow6 = (W3gow6 & D4gow6); +assign D4gow6 = (~(Dyeow6 & Ke4ju6)); +assign Ke4ju6 = (~(K4gow6 & R4gow6)); +assign R4gow6 = (Y4gow6 & F5gow6); +assign F5gow6 = (Ipfow6 | L90iu6); +assign Y4gow6 = (Rqfow6 | S90iu6); +assign K4gow6 = (M5gow6 & T5gow6); +assign T5gow6 = (Ppfow6 | Ga0iu6); +assign M5gow6 = (Kqfow6 | Z90iu6); +assign W3gow6 = (Iydow6 | Nvsiu6); +assign Nvsiu6 = (A6gow6 & H6gow6); +assign H6gow6 = (O6gow6 & V6gow6); +assign V6gow6 = (~(Bagpw6[12] & M6eiu6)); +assign O6gow6 = (C7gow6 & J7gow6); +assign J7gow6 = (Kmbiu6 | Qkgiu6); +assign Kmbiu6 = (~(Q7gow6 & Te6iu6)); +assign Q7gow6 = (~(X7gow6 & E8gow6)); +assign E8gow6 = (~(L8gow6 & S8gow6)); +assign S8gow6 = (Z8gow6 | Feeow6); +assign Z8gow6 = (Meeow6 ? N9gow6 : G9gow6); +assign N9gow6 = (H7fow6 ? Bagow6 : U9gow6); +assign Bagow6 = (O7fow6 ? Pagow6 : Iagow6); +assign Pagow6 = (M6fow6 ? Dbgow6 : Wagow6); +assign Iagow6 = (V7fow6 ? Rbgow6 : Kbgow6); +assign U9gow6 = (~(Ybgow6 & Fcgow6)); +assign Fcgow6 = (~(C8fow6 & Mcgow6)); +assign Ybgow6 = (Hdgow6 ? Adgow6 : Tcgow6); +assign Adgow6 = (Cegow6 ? Vdgow6 : Odgow6); +assign Tcgow6 = (Jegow6 | Qegow6); +assign G9gow6 = (!Xegow6); +assign Xegow6 = (Sfgow6 ? Lfgow6 : Efgow6); +assign Lfgow6 = (Nggow6 ? Gggow6 : Zfgow6); +assign Gggow6 = (Ihgow6 ? Bhgow6 : Uggow6); +assign Zfgow6 = (Digow6 ? Whgow6 : Phgow6); +assign Efgow6 = (Yigow6 ? Rigow6 : Kigow6); +assign Rigow6 = (Tjgow6 ? Mjgow6 : Fjgow6); +assign Kigow6 = (G3fow6 ? Hkgow6 : Akgow6); +assign L8gow6 = (Okgow6 & V0fow6); +assign C7gow6 = (~(Tzfpw6[12] & Yvgiu6)); +assign A6gow6 = (Vkgow6 & Clgow6); +assign Clgow6 = (~(F0eow6 & Vbgpw6[12])); +assign Vkgow6 = (Jlgow6 & Qlgow6); +assign Qlgow6 = (~(STCALIB[12] & H1eow6)); +assign Jlgow6 = (~(Odgpw6[12] & M0eow6)); +assign I3gow6 = (Xlgow6 & Emgow6); +assign Emgow6 = (~(Qtfow6 & Tf4ju6)); +assign Tf4ju6 = (~(Lmgow6 & Smgow6)); +assign Smgow6 = (Zmgow6 & Gngow6); +assign Gngow6 = (Ipfow6 | Na0iu6); +assign Zmgow6 = (Rqfow6 | Ua0iu6); +assign Lmgow6 = (Nngow6 & Ungow6); +assign Ungow6 = (Ppfow6 | Ib0iu6); +assign Nngow6 = (Kqfow6 | Bb0iu6); +assign Xlgow6 = (~(HRDATA[12] & Q2eow6)); +assign U2gow6 = (B0cow6 | Qffow6); +assign B0cow6 = (Bogow6 & Iogow6); +assign Iogow6 = (Pogow6 & Wogow6); +assign Wogow6 = (~(Dyeow6 & Cw3ju6)); +assign Cw3ju6 = (~(Dpgow6 & Kpgow6)); +assign Kpgow6 = (Rpgow6 & Ypgow6); +assign Ypgow6 = (Ppfow6 | B40iu6); +assign Rpgow6 = (Ipfow6 | Pb0iu6); +assign Dpgow6 = (Fqgow6 & Mqgow6); +assign Mqgow6 = (Rqfow6 | Wb0iu6); +assign Fqgow6 = (Kqfow6 | U30iu6); +assign Pogow6 = (Iydow6 | Yzqiu6); +assign Yzqiu6 = (Tqgow6 & Argow6); +assign Argow6 = (Hrgow6 & Orgow6); +assign Orgow6 = (Vrgow6 & Csgow6); +assign Csgow6 = (~(Odgpw6[4] & M0eow6)); +assign Vrgow6 = (~(STCALIB[4] & H1eow6)); +assign Hrgow6 = (Jsgow6 & Qsgow6); +assign Qsgow6 = (~(T7eow6 & vis_ipsr_o[4])); +assign Jsgow6 = (~(F0eow6 & Vbgpw6[4])); +assign Tqgow6 = (Xsgow6 & Etgow6); +assign Etgow6 = (~(Fpgiu6 & Gfghu6)); +assign Xsgow6 = (Ltgow6 & Stgow6); +assign Stgow6 = (~(Bagpw6[4] & M6eiu6)); +assign Ltgow6 = (~(Tzfpw6[4] & Yvgiu6)); +assign Bogow6 = (Ztgow6 & Gugow6); +assign Gugow6 = (~(Qtfow6 & Sx3ju6)); +assign Sx3ju6 = (~(Nugow6 & Uugow6)); +assign Uugow6 = (Bvgow6 & Ivgow6); +assign Ivgow6 = (Ipfow6 | I40iu6); +assign Bvgow6 = (Kqfow6 | W40iu6); +assign Nugow6 = (Pvgow6 & Wvgow6); +assign Wvgow6 = (Ppfow6 | D50iu6); +assign Pvgow6 = (Rqfow6 | P40iu6); +assign Ztgow6 = (~(HRDATA[4] & Q2eow6)); +assign Tkfow6 = (Dwgow6 & Kwgow6); +assign Kwgow6 = (~(Zsfpw6[3] & Cmziu6)); +assign Dwgow6 = (~(vis_pc_o[3] & Jmziu6)); +assign Vjohu6 = (~(Rwgow6 & Ywgow6)); +assign Ywgow6 = (Fxgow6 & Mxgow6); +assign Mxgow6 = (~(Egziu6 & Eafpw6[3])); +assign Fxgow6 = (Txgow6 & Sgziu6); +assign Txgow6 = (Ft6ow6 | Kifiu6); +assign Kifiu6 = (Aygow6 & Hygow6); +assign Hygow6 = (Oygow6 & Vygow6); +assign Vygow6 = (Cfliu6 | Ahcow6); +assign Oygow6 = (Czgow6 & Mdliu6); +assign Czgow6 = (Iqeow6 | Yfcow6); +assign Aygow6 = (Jzgow6 & Qzgow6); +assign Qzgow6 = (Ycliu6 | Tgcow6); +assign Jzgow6 = (Qffow6 | Kfcow6); +assign Rwgow6 = (Xzgow6 & E0how6); +assign E0how6 = (~(Zsfpw6[2] & Cmziu6)); +assign Xzgow6 = (~(vis_pc_o[2] & Jmziu6)); +assign Ojohu6 = (~(L0how6 & S0how6)); +assign S0how6 = (Z0how6 & G1how6); +assign G1how6 = (~(Egziu6 & Eafpw6[2])); +assign Z0how6 = (N1how6 & Sgziu6); +assign N1how6 = (Ft6ow6 | Ogciu6); +assign Ogciu6 = (U1how6 & B2how6); +assign B2how6 = (I2how6 & P2how6); +assign P2how6 = (Cfliu6 | Wlcow6); +assign Cfliu6 = (W2how6 & D3how6); +assign D3how6 = (K3how6 | R3how6); +assign W2how6 = (Y3how6 & F4how6); +assign Y3how6 = (~(M4how6 & T4how6)); +assign M4how6 = (~(Iwfpw6[0] | Y7ghu6)); +assign I2how6 = (A5how6 & Mdliu6); +assign Mdliu6 = (~(H5how6 & O5how6)); +assign O5how6 = (~(V5how6 & C6how6)); +assign V5how6 = (~(J6how6 & Q6how6)); +assign Q6how6 = (Ny3ju6 & Tucow6); +assign J6how6 = (Z44ju6 & X6how6); +assign Z44ju6 = (R3how6 | E7how6); +assign E7how6 = (Avcow6 & L7how6); +assign A5how6 = (Iqeow6 | Ukcow6); +assign Iqeow6 = (!Qfliu6); +assign Qfliu6 = (~(S7how6 & Z7how6)); +assign Z7how6 = (~(G8how6 & Iwfpw6[1])); +assign S7how6 = (N8how6 & Dtcow6); +assign N8how6 = (X6how6 | Ktcow6); +assign U1how6 = (U8how6 & B9how6); +assign B9how6 = (Ycliu6 | Plcow6); +assign Ycliu6 = (I9how6 & P9how6); +assign P9how6 = (W9how6 & Dahow6); +assign I9how6 = (Kahow6 & Rahow6); +assign Kahow6 = (~(G8how6 & Yahow6)); +assign G8how6 = (Fbhow6 & Mbhow6); +assign Mbhow6 = (~(Cyfpw6[1] | Y7ghu6)); +assign Fbhow6 = (~(Tbhow6 | Tucow6)); +assign Tbhow6 = (!Iwfpw6[0]); +assign U8how6 = (Qffow6 | Gkcow6); +assign Qffow6 = (!Aeliu6); +assign Aeliu6 = (~(Eccow6 & Achow6)); +assign Achow6 = (~(Ktcow6 & Hchow6)); +assign Hchow6 = (~(Ochow6 & Vchow6)); +assign Vchow6 = (Cdhow6 & Eu0iu6); +assign Eu0iu6 = (!Jdhow6); +assign Cdhow6 = (~(Qdhow6 & Xdhow6)); +assign Xdhow6 = (~(Cyfpw6[1] & Eehow6)); +assign Eehow6 = (Cyfpw6[0] | Cyfpw6[3]); +assign Qdhow6 = (~(Iwfpw6[0] | Iwfpw6[1])); +assign Ochow6 = (Cyfpw6[5] & Lehow6); +assign Lehow6 = (Nlaiu6 | Tfjiu6); +assign L0how6 = (Sehow6 & Zehow6); +assign Zehow6 = (~(Zsfpw6[1] & Cmziu6)); +assign Sehow6 = (Quzhu6 | Ar8iu6); +assign Quzhu6 = (!vis_pc_o[1]); +assign Hjohu6 = (~(Gfhow6 & Nfhow6)); +assign Nfhow6 = (~(Ufhow6 & Ophiu6)); +assign Ufhow6 = (~(Juzhu6 & Bghow6)); +assign Bghow6 = (N6piu6 | Eh6iu6); +assign Gfhow6 = (~(Sufpw6[1] & Eh6iu6)); +assign Ajohu6 = (!Ighow6); +assign Ighow6 = (F2biu6 ? X5phu6 : Sijiu6); +assign F2biu6 = (~(Eh6iu6 | K9aiu6)); +assign X5phu6 = (~(Ivfhu6 & Pghow6)); +assign Pghow6 = (~(Wghow6 & Dhhow6)); +assign Dhhow6 = (Khhow6 & Rhhow6); +assign Rhhow6 = (~(Ppfpw6[8] | Ppfpw6[9])); +assign Khhow6 = (~(Ppfpw6[6] | Ppfpw6[7])); +assign Wghow6 = (Yhhow6 & Fihow6); +assign Fihow6 = (~(Ppfpw6[12] | Ppfpw6[13])); +assign Yhhow6 = (~(Ppfpw6[10] | Ppfpw6[11])); +assign Tiohu6 = (Eh6iu6 ? T6ehu6 : Mihow6); +assign Mihow6 = (~(Tihow6 & Ajhow6)); +assign Ajhow6 = (~(H4oiu6 & Hjhow6)); +assign Hjhow6 = (~(Xkaow6 | R75iu6)); +assign H4oiu6 = (~(K9bow6 | G7oiu6)); +assign Tihow6 = (~(Ojhow6 & Vjhow6)); +assign Ojhow6 = (~(P1bow6 | Y2oiu6)); +assign Miohu6 = (Ckhow6 | Jkhow6); +assign Jkhow6 = (~(Qkhow6 | Dk7ow6)); +assign Qkhow6 = (!Xkhow6); +assign Ckhow6 = (Rk7ow6 ? S8fpw6[7] : Elhow6); +assign Elhow6 = (~(Llhow6 & Slhow6)); +assign Slhow6 = (~(D7fpw6[7] & Zlhow6)); +assign Llhow6 = (Ad8iu6 | Cn7ow6); +assign Fiohu6 = (Eh6iu6 ? Dxfhu6 : W7cow6); +assign Yhohu6 = (Qqhiu6 ? Hrfpw6[16] : Wz4iu6); +assign Rhohu6 = (~(Gmhow6 & Nmhow6)); +assign Nmhow6 = (~(Umhow6 & HRDATA[16])); +assign Gmhow6 = (~(Hrfpw6[0] & Qqhiu6)); +assign Khohu6 = (~(Bnhow6 & Inhow6)); +assign Inhow6 = (~(Umhow6 & HRDATA[31])); +assign Bnhow6 = (~(Hrfpw6[15] & Qqhiu6)); +assign Dhohu6 = (~(Pnhow6 & Wnhow6)); +assign Wnhow6 = (~(Umhow6 & HRDATA[29])); +assign Pnhow6 = (~(Hrfpw6[13] & Qqhiu6)); +assign Wgohu6 = (~(Dohow6 & Kohow6)); +assign Kohow6 = (~(Umhow6 & HRDATA[28])); +assign Dohow6 = (~(Hrfpw6[12] & Qqhiu6)); +assign Pgohu6 = (~(Rohow6 & Yohow6)); +assign Yohow6 = (~(Umhow6 & HRDATA[27])); +assign Rohow6 = (~(Hrfpw6[11] & Qqhiu6)); +assign Igohu6 = (~(Fphow6 & Mphow6)); +assign Mphow6 = (~(Umhow6 & HRDATA[26])); +assign Fphow6 = (~(Hrfpw6[10] & Qqhiu6)); +assign Bgohu6 = (~(Tphow6 & Aqhow6)); +assign Aqhow6 = (~(Umhow6 & HRDATA[25])); +assign Tphow6 = (~(Hrfpw6[9] & Qqhiu6)); +assign Ufohu6 = (~(Hqhow6 & Oqhow6)); +assign Oqhow6 = (~(Umhow6 & HRDATA[24])); +assign Hqhow6 = (~(Hrfpw6[8] & Qqhiu6)); +assign Nfohu6 = (~(Vqhow6 & Crhow6)); +assign Crhow6 = (~(Umhow6 & HRDATA[23])); +assign Vqhow6 = (~(Hrfpw6[7] & Qqhiu6)); +assign Gfohu6 = (G81ju6 ? H2fpw6[3] : Jrhow6); +assign G81ju6 = (~(HREADY & Qrhow6)); +assign Qrhow6 = (~(Xrhow6 & Eshow6)); +assign Eshow6 = (Lshow6 & Sshow6); +assign Sshow6 = (Zshow6 & Gthow6); +assign Gthow6 = (~(Nthow6 & Lraiu6)); +assign Nthow6 = (Uu9ow6 & Uthow6); +assign Uthow6 = (~(D7fpw6[15] & Buhow6)); +assign Buhow6 = (~(Iuhow6 & Bkjiu6)); +assign Iuhow6 = (Rg2ju6 | D7fpw6[3]); +assign Uu9ow6 = (!X5aiu6); +assign X5aiu6 = (Puhow6 | Ttciu6); +assign Ttciu6 = (!T0hhu6); +assign Puhow6 = (E45iu6 | Ii0iu6); +assign E45iu6 = (!N20ju6); +assign Zshow6 = (~(Wuhow6 & Vviiu6)); +assign Wuhow6 = (~(D7fpw6[10] | D7fpw6[8])); +assign Lshow6 = (Dvhow6 & Kvhow6); +assign Kvhow6 = (~(Y31ju6 & Rvhow6)); +assign Rvhow6 = (~(Yvhow6 & Fwhow6)); +assign Fwhow6 = (Mwhow6 & Twhow6); +assign Twhow6 = (~(Axhow6 & Ftjiu6)); +assign Axhow6 = (~(N38ow6 & Hxhow6)); +assign Hxhow6 = (~(C0ehu6 & An6ow6)); +assign An6ow6 = (D7fpw6[11] | D7fpw6[7]); +assign Mwhow6 = (~(Oxhow6 | Evyiu6)); +assign Oxhow6 = (Quyiu6 & Ejiiu6); +assign Ejiiu6 = (C0ehu6 & D7fpw6[12]); +assign Quyiu6 = (~(X1ziu6 | D7fpw6[11])); +assign Yvhow6 = (Vxhow6 & Cyhow6); +assign Cyhow6 = (S80ju6 | D7fpw6[8]); +assign S80ju6 = (!P0piu6); +assign Vxhow6 = (Yb9ow6 | Qxoiu6); +assign Yb9ow6 = (!Nbkiu6); +assign Dvhow6 = (~(P0piu6 & W0piu6)); +assign Xrhow6 = (Jyhow6 & M1jiu6); +assign M1jiu6 = (Qyhow6 & Xyhow6); +assign Xyhow6 = (~(Ezhow6 | Wkjiu6)); +assign Wkjiu6 = (Lzhow6 & Y31ju6); +assign Qyhow6 = (Szhow6 & Zzhow6); +assign Zzhow6 = (~(Hviiu6 & G0iow6)); +assign G0iow6 = (~(O7ziu6 & Zt9ow6)); +assign Zt9ow6 = (Od0ju6 | L01ju6); +assign Od0ju6 = (!Sdbow6); +assign Sdbow6 = (Jwiiu6 & Ndiiu6); +assign Ndiiu6 = (!D7fpw6[8]); +assign Jwiiu6 = (D7fpw6[9] & I6jiu6); +assign O7ziu6 = (!Db0ju6); +assign Szhow6 = (~(Wliiu6 & W0piu6)); +assign Jyhow6 = (Onjiu6 & N0iow6); +assign N0iow6 = (Jojiu6 | Cyfpw6[7]); +assign Onjiu6 = (Yn2ju6 | Kq0iu6); +assign Jrhow6 = (~(Ir6ow6 & U0iow6)); +assign U0iow6 = (~(D7fpw6[7] & B1iow6)); +assign B1iow6 = (~(Uvziu6 & I1iow6)); +assign I1iow6 = (~(Srbow6 & D7fpw6[10])); +assign Ir6ow6 = (P1iow6 & W1iow6); +assign W1iow6 = (D2iow6 & K2iow6); +assign K2iow6 = (~(Y7ghu6 & R2iow6)); +assign R2iow6 = (Ii0iu6 | D7fpw6[3]); +assign D2iow6 = (Y2iow6 & Faaiu6); +assign Y2iow6 = (~(Aujiu6 & F3iow6)); +assign F3iow6 = (Tniiu6 | Gaziu6); +assign P1iow6 = (Mb1ju6 & M3iow6); +assign M3iow6 = (~(D7fpw6[13] & Ya1ju6)); +assign Mb1ju6 = (T3iow6 & A4iow6); +assign A4iow6 = (Bkjiu6 | Uvziu6); +assign Bkjiu6 = (~(R9aiu6 & D7fpw6[3])); +assign T3iow6 = (~(H4iow6 | Hs8ow6)); +assign Hs8ow6 = (O4iow6 & Aujiu6); +assign O4iow6 = (~(X1ziu6 | Jcaiu6)); +assign H4iow6 = (Srbow6 & V4iow6); +assign V4iow6 = (D7fpw6[11] | Q6aow6); +assign Srbow6 = (C5iow6 & J5iow6); +assign C5iow6 = (~(Jcaiu6 | D7fpw6[12])); +assign Zeohu6 = (~(Q5iow6 & X5iow6)); +assign X5iow6 = (~(Umhow6 & HRDATA[22])); +assign Q5iow6 = (~(Hrfpw6[6] & Qqhiu6)); +assign Seohu6 = (~(E6iow6 & L6iow6)); +assign L6iow6 = (~(Umhow6 & HRDATA[21])); +assign E6iow6 = (~(Hrfpw6[5] & Qqhiu6)); +assign Leohu6 = (S6iow6 | Z6iow6); +assign Z6iow6 = (~(G7iow6 | Dk7ow6)); +assign Dk7ow6 = (N7iow6 & S3kiu6); +assign S3kiu6 = (U7iow6 & B8iow6); +assign B8iow6 = (~(Toaiu6 & It2ju6)); +assign U7iow6 = (Oe8ow6 | Cyfpw6[6]); +assign N7iow6 = (I8iow6 & Et0ju6); +assign I8iow6 = (~(L45iu6 & Llaow6)); +assign S6iow6 = (Rk7ow6 ? S8fpw6[6] : P8iow6); +assign Rk7ow6 = (~(HREADY & W8iow6)); +assign W8iow6 = (~(D9iow6 & K9iow6)); +assign K9iow6 = (R9iow6 & Y9iow6); +assign Y9iow6 = (Faiow6 & Maiow6); +assign Maiow6 = (~(Taiow6 & N2ghu6)); +assign Taiow6 = (~(D9oiu6 | Kq0iu6)); +assign D9oiu6 = (!Whfiu6); +assign Faiow6 = (~(Abiow6 & Ae0iu6)); +assign Abiow6 = (Pthiu6 & Mr0iu6); +assign R9iow6 = (Hbiow6 & Obiow6); +assign Obiow6 = (~(Vbiow6 & Xzmiu6)); +assign Hbiow6 = (~(Hviiu6 & Gaziu6)); +assign D9iow6 = (Cciow6 & T1jiu6); +assign T1jiu6 = (Jciow6 & Qciow6); +assign Qciow6 = (~(Us2ju6 & Yljiu6)); +assign Jciow6 = (Xciow6 & Ediow6); +assign Ediow6 = (~(Ldiow6 & S6aiu6)); +assign Ldiow6 = (~(Cyfpw6[0] | Cyfpw6[3])); +assign Xciow6 = (~(Zzniu6 & Qu7ow6)); +assign Zzniu6 = (~(R2aiu6 | Mjfiu6)); +assign Cciow6 = (Epjiu6 & Sdiow6); +assign Sdiow6 = (Wmaiu6 | Nloiu6); +assign Epjiu6 = (Zdiow6 & Geiow6); +assign Geiow6 = (Neiow6 & Ueiow6); +assign Ueiow6 = (Bfiow6 & Ifiow6); +assign Ifiow6 = (~(Lzhow6 & Raaow6)); +assign Raaow6 = (Uyiiu6 & Uriiu6); +assign Lzhow6 = (Nbkiu6 & X1ziu6); +assign Bfiow6 = (E2ziu6 & Oe8ow6); +assign E2ziu6 = (~(Pfiow6 & Jjhiu6)); +assign Neiow6 = (Wfiow6 & Dgiow6); +assign Dgiow6 = (~(Vviiu6 & Kgiow6)); +assign Kgiow6 = (~(X1ziu6 & Rgiow6)); +assign Rgiow6 = (D7fpw6[8] | D7fpw6[9]); +assign Vviiu6 = (Uyiiu6 & J9kiu6); +assign Wfiow6 = (~(Hviiu6 & Db0ju6)); +assign Db0ju6 = (D7fpw6[10] & Tniiu6); +assign Hviiu6 = (Ygiow6 & J9kiu6); +assign Ygiow6 = (~(Lraiu6 | D7fpw6[14])); +assign Zdiow6 = (Fhiow6 & Mhiow6); +assign Mhiow6 = (Thiow6 & Aiiow6); +assign Aiiow6 = (~(Y31ju6 & Hiiow6)); +assign Hiiow6 = (~(Oiiow6 & Viiow6)); +assign Viiow6 = (N38ow6 | D7fpw6[15]); +assign Oiiow6 = (~(Cjiow6 | J1ziu6)); +assign Cjiow6 = (Jjiow6 & P0piu6); +assign Jjiow6 = (~(Qjiow6 | O95iu6)); +assign Thiow6 = (O4aiu6 | D7fpw6[3]); +assign Fhiow6 = (D0jiu6 & Veziu6); +assign Veziu6 = (B1aiu6 & Xjiow6); +assign Xjiow6 = (~(Y0jiu6 & Tfjiu6)); +assign B1aiu6 = (!Ezhow6); +assign Ezhow6 = (O4oiu6 & Taaiu6); +assign D0jiu6 = (Ekiow6 & Lkiow6); +assign Lkiow6 = (Skiow6 & Zkiow6); +assign Zkiow6 = (~(Gliow6 & Nliow6)); +assign Nliow6 = (~(Qxoiu6 | D7fpw6[13])); +assign Gliow6 = (J9kiu6 & Q5aiu6); +assign Skiow6 = (~(De6ow6 & F9aju6)); +assign Ekiow6 = (Uliow6 & Bmiow6); +assign Bmiow6 = (~(Evyiu6 & W0piu6)); +assign W0piu6 = (~(Ftjiu6 | Lraiu6)); +assign Evyiu6 = (Mtjiu6 & X1ziu6); +assign Uliow6 = (O4aiu6 | Cyfpw6[0]); +assign O4aiu6 = (~(Nu9ow6 & K9aiu6)); +assign Nu9ow6 = (Imiow6 & Pmiow6); +assign Pmiow6 = (~(D7fpw6[14] | Cyfpw6[3])); +assign Imiow6 = (Ya1ju6 & Hzziu6); +assign P8iow6 = (~(Wmiow6 & Dniow6)); +assign Dniow6 = (Ad8iu6 | Hm7ow6); +assign Hm7ow6 = (~(Zlhow6 | Th2ju6)); +assign Zlhow6 = (~(Kniow6 & Rniow6)); +assign Rniow6 = (Yniow6 & Foiow6); +assign Foiow6 = (Hujiu6 | I6jiu6); +assign Yniow6 = (Moiow6 & S4jiu6); +assign S4jiu6 = (~(Toiow6 & Ia8iu6)); +assign Toiow6 = (~(C27ow6 | Ftjiu6)); +assign C27ow6 = (!Wliiu6); +assign Moiow6 = (~(J1ziu6 & Ia8iu6)); +assign J1ziu6 = (Wliiu6 & D7fpw6[11]); +assign Wliiu6 = (Mtjiu6 & Gaziu6); +assign Gaziu6 = (!D7fpw6[13]); +assign Kniow6 = (Ubkiu6 & Apiow6); +assign Apiow6 = (E4jiu6 | Ae0iu6); +assign Ubkiu6 = (Ymiiu6 & Hpiow6); +assign Hpiow6 = (Hujiu6 | Aujiu6); +assign Hujiu6 = (!Th2ju6); +assign Th2ju6 = (Xiiiu6 & Kxziu6); +assign Ymiiu6 = (Xl0ju6 | Qpaju6); +assign Qpaju6 = (!Kxziu6); +assign Xl0ju6 = (!R7jiu6); +assign Wmiow6 = (Dzjiu6 | Cn7ow6); +assign Cn7ow6 = (Opiow6 & Oaiiu6); +assign Oaiiu6 = (~(Vpiow6 & J9kiu6)); +assign Vpiow6 = (~(Co6ow6 | Ae0iu6)); +assign Opiow6 = (~(Ia8iu6 & Ozziu6)); +assign Eeohu6 = (~(Cqiow6 & Jqiow6)); +assign Jqiow6 = (~(Umhow6 & HRDATA[20])); +assign Cqiow6 = (~(Hrfpw6[4] & Qqhiu6)); +assign Xdohu6 = (Eh6iu6 ? Sufpw6[0] : Qqiow6); +assign Qqiow6 = (Xqiow6 & Ophiu6); +assign Xqiow6 = (N6piu6 | Sufpw6[1]); +assign Qdohu6 = (Eh6iu6 ? L3ehu6 : Fnpiu6); +assign Fnpiu6 = (!Ejpiu6); +assign Jdohu6 = (~(Eriow6 & Lriow6)); +assign Lriow6 = (Sriow6 & Zriow6); +assign Zriow6 = (~(Egziu6 & Eafpw6[11])); +assign Sriow6 = (Gsiow6 & Sgziu6); +assign Gsiow6 = (~(Zgziu6 & Uumiu6)); +assign Uumiu6 = (~(Nsiow6 & Usiow6)); +assign Usiow6 = (Btiow6 & Itiow6); +assign Itiow6 = (Tgcow6 | Pkdow6); +assign Tgcow6 = (Ptiow6 & Wtiow6); +assign Wtiow6 = (Duiow6 & Kuiow6); +assign Kuiow6 = (~(Dyeow6 & Re4ju6)); +assign Duiow6 = (Iydow6 | Uosiu6); +assign Uosiu6 = (Ruiow6 & Yuiow6); +assign Yuiow6 = (Fviow6 & Mviow6); +assign Mviow6 = (~(Tzfpw6[11] & Yvgiu6)); +assign Fviow6 = (Tviow6 & Awiow6); +assign Awiow6 = (~(F0eow6 & Vbgpw6[11])); +assign Tviow6 = (~(Odgpw6[11] & M0eow6)); +assign Ruiow6 = (Hwiow6 & Owiow6); +assign Owiow6 = (~(Bagpw6[11] & M6eiu6)); +assign Hwiow6 = (~(STCALIB[11] & H1eow6)); +assign Ptiow6 = (Vwiow6 & Cxiow6); +assign Cxiow6 = (~(Qtfow6 & Ag4ju6)); +assign Vwiow6 = (~(HRDATA[11] & Q2eow6)); +assign Btiow6 = (Jxiow6 & Dldow6); +assign Jxiow6 = (Kfcow6 | Uqdow6); +assign Kfcow6 = (Qxiow6 & Xxiow6); +assign Xxiow6 = (Eyiow6 & Lyiow6); +assign Lyiow6 = (~(Dyeow6 & Jw3ju6)); +assign Eyiow6 = (Iydow6 | Tmqiu6); +assign Tmqiu6 = (Syiow6 & Zyiow6); +assign Zyiow6 = (Gziow6 & Nziow6); +assign Nziow6 = (Uziow6 & B0jow6); +assign Uziow6 = (~(STCALIB[3] & H1eow6)); +assign Gziow6 = (I0jow6 & P0jow6); +assign P0jow6 = (~(Odgpw6[3] & M0eow6)); +assign I0jow6 = (~(Tzfpw6[3] & Yvgiu6)); +assign Syiow6 = (W0jow6 & D1jow6); +assign D1jow6 = (K1jow6 & R1jow6); +assign R1jow6 = (~(Bagpw6[3] & M6eiu6)); +assign K1jow6 = (~(F0eow6 & Vbgpw6[3])); +assign W0jow6 = (Y1jow6 & F2jow6); +assign F2jow6 = (Qkgiu6 | Ngfiu6); +assign Y1jow6 = (~(ECOREVNUM[3] & I5eow6)); +assign Qxiow6 = (M2jow6 & T2jow6); +assign T2jow6 = (~(Qtfow6 & Lx3ju6)); +assign M2jow6 = (~(HRDATA[3] & Q2eow6)); +assign Nsiow6 = (A3jow6 & H3jow6); +assign H3jow6 = (Ahcow6 | Kldow6); +assign Ahcow6 = (O3jow6 & V3jow6); +assign V3jow6 = (C4jow6 & J4jow6); +assign J4jow6 = (Rcfow6 | C34ju6); +assign C4jow6 = (Iydow6 | U8uiu6); +assign U8uiu6 = (Q4jow6 & X4jow6); +assign X4jow6 = (E5jow6 & L5jow6); +assign L5jow6 = (~(STCALIB[19] & H1eow6)); +assign E5jow6 = (S5jow6 & Z5jow6); +assign Z5jow6 = (~(Tzfpw6[19] & Yvgiu6)); +assign S5jow6 = (~(Bagpw6[19] & M6eiu6)); +assign Q4jow6 = (~(G6jow6 | I5eow6)); +assign G6jow6 = (~(N6jow6 & U6jow6)); +assign U6jow6 = (~(Odgpw6[19] & M0eow6)); +assign N6jow6 = (~(F0eow6 & Vbgpw6[19])); +assign O3jow6 = (B7jow6 & I7jow6); +assign I7jow6 = (~(Qtfow6 & L44ju6)); +assign B7jow6 = (~(HRDATA[19] & Q2eow6)); +assign A3jow6 = (Yfcow6 | Spdow6); +assign Yfcow6 = (P7jow6 & W7jow6); +assign W7jow6 = (Iydow6 | Wtviu6); +assign Wtviu6 = (D8jow6 & K8jow6); +assign K8jow6 = (~(F0eow6 & Vbgpw6[27])); +assign D8jow6 = (R8jow6 & Yreow6); +assign R8jow6 = (~(Odgpw6[27] & M0eow6)); +assign P7jow6 = (Y8jow6 & F9jow6); +assign F9jow6 = (~(C2eow6 & M9jow6)); +assign M9jow6 = (~(O94ju6 & T9jow6)); +assign T9jow6 = (Aajow6 | Bz3ju6); +assign O94ju6 = (~(Hajow6 & Oajow6)); +assign Oajow6 = (Vajow6 | J2eow6); +assign Hajow6 = (Cbjow6 & Aajow6); +assign Aajow6 = (~(Jbjow6 & Qbjow6)); +assign Cbjow6 = (~(Xbjow6 & Ecjow6)); +assign Xbjow6 = (J2eow6 & Lcjow6); +assign Y8jow6 = (~(HRDATA[27] & Q2eow6)); +assign Eriow6 = (Scjow6 & Zcjow6); +assign Zcjow6 = (~(Zsfpw6[10] & Cmziu6)); +assign Scjow6 = (~(vis_pc_o[10] & Jmziu6)); +assign Cdohu6 = (~(Gdjow6 & Ndjow6)); +assign Ndjow6 = (Udjow6 & Bejow6); +assign Bejow6 = (~(Egziu6 & Eafpw6[9])); +assign Udjow6 = (Iejow6 & Sgziu6); +assign Iejow6 = (~(Zgziu6 & S0niu6)); +assign S0niu6 = (~(Pejow6 & Wejow6)); +assign Wejow6 = (Dfjow6 & Kfjow6); +assign Kfjow6 = (~(Mmdow6 & Ew6ow6)); +assign Ew6ow6 = (~(Rfjow6 & Yfjow6)); +assign Yfjow6 = (Fgjow6 & Mgjow6); +assign Mgjow6 = (Rcfow6 | Mu3ju6); +assign Mu3ju6 = (Tgjow6 & Ahjow6); +assign Ahjow6 = (Hhjow6 & Ohjow6); +assign Ohjow6 = (Rqfow6 | I40iu6); +assign Hhjow6 = (Ipfow6 | B40iu6); +assign Tgjow6 = (Vhjow6 & Cijow6); +assign Cijow6 = (Ppfow6 | W40iu6); +assign Vhjow6 = (Kqfow6 | P40iu6); +assign Fgjow6 = (Iydow6 | Ovpiu6); +assign Ovpiu6 = (Jijow6 & Qijow6); +assign Qijow6 = (Xijow6 & Ejjow6); +assign Ejjow6 = (Ljjow6 & Sjjow6); +assign Sjjow6 = (~(Odgpw6[1] & M0eow6)); +assign Ljjow6 = (Zjjow6 & Gkjow6); +assign Gkjow6 = (~(Fpgiu6 & Qqdhu6)); +assign Zjjow6 = (~(Tzfpw6[1] & Yvgiu6)); +assign Xijow6 = (Nkjow6 & Ukjow6); +assign Ukjow6 = (~(ECOREVNUM[1] & I5eow6)); +assign Nkjow6 = (~(Y5eiu6 & Dvghu6)); +assign Jijow6 = (Bljow6 & Iljow6); +assign Iljow6 = (Pljow6 & Wljow6); +assign Wljow6 = (~(F0eow6 & Vbgpw6[1])); +assign Pljow6 = (~(Bagpw6[1] & M6eiu6)); +assign Bljow6 = (Dmjow6 & Kmjow6); +assign Kmjow6 = (~(STCALIB[1] & H1eow6)); +assign Dmjow6 = (Qkgiu6 | Siciu6); +assign Rfjow6 = (Rmjow6 & Ymjow6); +assign Ymjow6 = (~(Qtfow6 & Ex3ju6)); +assign Ex3ju6 = (~(Fnjow6 & Mnjow6)); +assign Mnjow6 = (Tnjow6 & Aojow6); +assign Aojow6 = (Kqfow6 | F60iu6); +assign Tnjow6 = (Ipfow6 | D50iu6); +assign Fnjow6 = (Hojow6 & Oojow6); +assign Oojow6 = (Rqfow6 | K50iu6); +assign Hojow6 = (Ppfow6 | E90iu6); +assign Rmjow6 = (~(HRDATA[1] & Q2eow6)); +assign Dfjow6 = (Vojow6 & Dldow6); +assign Vojow6 = (Pkdow6 | Xv6ow6); +assign Xv6ow6 = (Cpjow6 & Jpjow6); +assign Jpjow6 = (Qpjow6 & Xpjow6); +assign Xpjow6 = (Rcfow6 | Uc4ju6); +assign Uc4ju6 = (Eqjow6 & Lqjow6); +assign Lqjow6 = (Sqjow6 & Zqjow6); +assign Zqjow6 = (Ipfow6 | Ga0iu6); +assign Sqjow6 = (Ppfow6 | Bb0iu6); +assign Eqjow6 = (Grjow6 & Nrjow6); +assign Nrjow6 = (Kqfow6 | Ua0iu6); +assign Grjow6 = (Rqfow6 | Na0iu6); +assign Qpjow6 = (Iydow6 | Ibsiu6); +assign Ibsiu6 = (Urjow6 & Bsjow6); +assign Bsjow6 = (Isjow6 & Psjow6); +assign Psjow6 = (Wsjow6 & B0jow6); +assign B0jow6 = (~(Rzciu6 & Dtjow6)); +assign Wsjow6 = (~(Bagpw6[9] & M6eiu6)); +assign Isjow6 = (Ktjow6 & Rtjow6); +assign Rtjow6 = (~(Tzfpw6[9] & Yvgiu6)); +assign Ktjow6 = (~(F0eow6 & Vbgpw6[9])); +assign Urjow6 = (Ytjow6 & Qgeow6); +assign Ytjow6 = (Fujow6 & Mujow6); +assign Mujow6 = (~(STCALIB[9] & H1eow6)); +assign Fujow6 = (~(M0eow6 & Odgpw6[9])); +assign Cpjow6 = (Tujow6 & Avjow6); +assign Avjow6 = (~(Qtfow6 & Hg4ju6)); +assign Hg4ju6 = (~(Hvjow6 & Ovjow6)); +assign Ovjow6 = (Vvjow6 & Cwjow6); +assign Cwjow6 = (Rqfow6 | Pb0iu6); +assign Vvjow6 = (Ppfow6 | U30iu6); +assign Hvjow6 = (Jwjow6 & Qwjow6); +assign Qwjow6 = (Kqfow6 | Wb0iu6); +assign Jwjow6 = (Ipfow6 | Ib0iu6); +assign Tujow6 = (~(HRDATA[9] & Q2eow6)); +assign Pejow6 = (Xwjow6 & Exjow6); +assign Exjow6 = (~(Fmdow6 & Cv6ow6)); +assign Cv6ow6 = (~(Lxjow6 & Sxjow6)); +assign Sxjow6 = (Iydow6 | Wfviu6); +assign Wfviu6 = (Zxjow6 & Gyjow6); +assign Gyjow6 = (~(F0eow6 & Vbgpw6[25])); +assign Zxjow6 = (Nyjow6 & Yreow6); +assign Nyjow6 = (~(M0eow6 & Odgpw6[25])); +assign Lxjow6 = (Uyjow6 & Bzjow6); +assign Bzjow6 = (~(C2eow6 & Izjow6)); +assign Izjow6 = (~(Pzjow6 & Wzjow6)); +assign Wzjow6 = (D0kow6 | Bz3ju6); +assign Pzjow6 = (~(M84ju6 & K0kow6)); +assign K0kow6 = (V94ju6 | Hv3ju6); +assign V94ju6 = (~(R0kow6 & Y0kow6)); +assign Y0kow6 = (F1kow6 & M1kow6); +assign M1kow6 = (Ipfow6 | T60iu6); +assign F1kow6 = (Ppfow6 | O70iu6); +assign R0kow6 = (T1kow6 & A2kow6); +assign A2kow6 = (Kqfow6 | H70iu6); +assign T1kow6 = (Rqfow6 | A70iu6); +assign M84ju6 = (H2kow6 & D0kow6); +assign D0kow6 = (~(O2kow6 & Jbjow6)); +assign O2kow6 = (Sveow6 ? V2kow6 : Qbjow6); +assign Sveow6 = (C3kow6 | Gweow6); +assign H2kow6 = (~(Nweow6 & Hv3ju6)); +assign Nweow6 = (J3kow6 & Q3kow6); +assign Q3kow6 = (X3kow6 & E4kow6); +assign E4kow6 = (Ipfow6 | Dc0iu6); +assign X3kow6 = (Rqfow6 | R50iu6); +assign J3kow6 = (L4kow6 & S4kow6); +assign S4kow6 = (Ppfow6 | M60iu6); +assign L4kow6 = (Kqfow6 | Y50iu6); +assign Uyjow6 = (~(HRDATA[25] & Q2eow6)); +assign Xwjow6 = (Kldow6 | Ou6ow6); +assign Ou6ow6 = (Z4kow6 & G5kow6); +assign G5kow6 = (N5kow6 & U5kow6); +assign U5kow6 = (Rcfow6 | F14ju6); +assign F14ju6 = (B6kow6 & I6kow6); +assign I6kow6 = (P6kow6 & W6kow6); +assign W6kow6 = (Ipfow6 | V70iu6); +assign P6kow6 = (Rqfow6 | C80iu6); +assign B6kow6 = (D7kow6 & K7kow6); +assign K7kow6 = (Ppfow6 | Q80iu6); +assign D7kow6 = (Kqfow6 | J80iu6); +assign N5kow6 = (Iydow6 | Nutiu6); +assign Nutiu6 = (R7kow6 & Y7kow6); +assign Y7kow6 = (F8kow6 & M8kow6); +assign M8kow6 = (~(Tzfpw6[17] & Yvgiu6)); +assign F8kow6 = (T8kow6 & A9kow6); +assign A9kow6 = (W6ciu6 | Qkgiu6); +assign W6ciu6 = (~(H9kow6 & Ydeow6)); +assign H9kow6 = (~(Feeow6 | E2fow6)); +assign T8kow6 = (~(Odgpw6[17] & M0eow6)); +assign R7kow6 = (O9kow6 & V9kow6); +assign V9kow6 = (~(F0eow6 & Vbgpw6[17])); +assign O9kow6 = (Cakow6 & Jakow6); +assign Jakow6 = (~(STCALIB[17] & H1eow6)); +assign Cakow6 = (~(Bagpw6[17] & M6eiu6)); +assign Z4kow6 = (Qakow6 & Xakow6); +assign Xakow6 = (~(Qtfow6 & Ff4ju6)); +assign Ff4ju6 = (~(Ebkow6 & Lbkow6)); +assign Lbkow6 = (Sbkow6 & Zbkow6); +assign Zbkow6 = (Ipfow6 | X80iu6); +assign Sbkow6 = (Rqfow6 | L90iu6); +assign Ebkow6 = (Gckow6 & Nckow6); +assign Nckow6 = (Ppfow6 | Z90iu6); +assign Gckow6 = (Kqfow6 | S90iu6); +assign Qakow6 = (~(HRDATA[17] & Q2eow6)); +assign Gdjow6 = (Uckow6 & Bdkow6); +assign Bdkow6 = (~(Zsfpw6[8] & Cmziu6)); +assign Uckow6 = (~(vis_pc_o[8] & Jmziu6)); +assign Vcohu6 = (~(Idkow6 & Pdkow6)); +assign Pdkow6 = (Wdkow6 & Dekow6); +assign Dekow6 = (~(Egziu6 & Eafpw6[15])); +assign Wdkow6 = (Kekow6 & Sgziu6); +assign Kekow6 = (Ft6ow6 | Ggmiu6); +assign Ggmiu6 = (Rekow6 & Yekow6); +assign Yekow6 = (Ffkow6 & Mfkow6); +assign Mfkow6 = (H78ow6 | Kldow6); +assign Ffkow6 = (Tfkow6 & Dldow6); +assign Tfkow6 = (~(Mmdow6 & X88ow6)); +assign Rekow6 = (Agkow6 & Hgkow6); +assign Hgkow6 = (~(V78ow6 & Fmdow6)); +assign Agkow6 = (Q88ow6 | Pkdow6); +assign Idkow6 = (Ogkow6 & Vgkow6); +assign Vgkow6 = (~(Zsfpw6[14] & Cmziu6)); +assign Ogkow6 = (~(vis_pc_o[14] & Jmziu6)); +assign Ocohu6 = (~(Chkow6 & Jhkow6)); +assign Jhkow6 = (Qhkow6 & Xhkow6); +assign Xhkow6 = (~(Zsfpw6[21] & Cmziu6)); +assign Qhkow6 = (Eikow6 & Likow6); +assign Likow6 = (Ft6ow6 | Nvliu6); +assign Nvliu6 = (Sikow6 & Zikow6); +assign Zikow6 = (Gjkow6 & Njkow6); +assign Njkow6 = (G6cow6 | Eccow6); +assign G6cow6 = (Ujkow6 & Bkkow6); +assign Bkkow6 = (Ikkow6 & Pkkow6); +assign Pkkow6 = (Rcfow6 | Wkkow6); +assign Wkkow6 = (!O24ju6); +assign Ikkow6 = (Iydow6 | Ntuiu6); +assign Ntuiu6 = (Dlkow6 & Klkow6); +assign Klkow6 = (Rlkow6 & Ylkow6); +assign Ylkow6 = (Fmkow6 & Mmkow6); +assign Mmkow6 = (Tmkow6 & Ankow6); +assign Ankow6 = (~(Odgpw6[22] & M0eow6)); +assign Tmkow6 = (~(STCALIB[22] & H1eow6)); +assign Fmkow6 = (Hnkow6 & Onkow6); +assign Onkow6 = (~(Tzdiu6 & R4gpw6[4])); +assign Hnkow6 = (~(I3fiu6 & R4gpw6[12])); +assign Rlkow6 = (Vnkow6 & Cokow6); +assign Cokow6 = (Jokow6 & Qokow6); +assign Qokow6 = (~(Tzfpw6[22] & Yvgiu6)); +assign Jokow6 = (~(Hqgiu6 & L1gpw6[0])); +assign Vnkow6 = (Xokow6 & Epkow6); +assign Epkow6 = (~(S1fiu6 & R4gpw6[36])); +assign Xokow6 = (~(G2fiu6 & R4gpw6[28])); +assign Dlkow6 = (Lpkow6 & Spkow6); +assign Spkow6 = (Zpkow6 & Gqkow6); +assign Gqkow6 = (Nqkow6 & Uqkow6); +assign Uqkow6 = (~(C0fiu6 & R4gpw6[60])); +assign Nqkow6 = (~(F0eow6 & Vbgpw6[22])); +assign Zpkow6 = (Brkow6 & Irkow6); +assign Irkow6 = (~(Bagpw6[22] & M6eiu6)); +assign Brkow6 = (~(E1fiu6 & R4gpw6[44])); +assign Lpkow6 = (Prkow6 & Wrkow6); +assign Wrkow6 = (~(T7eow6 & Dskow6)); +assign Dskow6 = (~(Kskow6 & Rskow6)); +assign Rskow6 = (Yskow6 & Ftkow6); +assign Ftkow6 = (Mtkow6 & Ttkow6); +assign Ttkow6 = (Aukow6 & Hukow6); +assign Hukow6 = (~(Odgpw6[8] | Odgpw6[9])); +assign Aukow6 = (~(Odgpw6[6] | Odgpw6[7])); +assign Mtkow6 = (Oukow6 & Vukow6); +assign Vukow6 = (~(Odgpw6[4] | Odgpw6[5])); +assign Oukow6 = (~(Odgpw6[31] | Odgpw6[3])); +assign Yskow6 = (Cvkow6 & Jvkow6); +assign Jvkow6 = (Qvkow6 & Xvkow6); +assign Xvkow6 = (~(Odgpw6[2] | Odgpw6[30])); +assign Qvkow6 = (~(Odgpw6[28] | Odgpw6[29])); +assign Cvkow6 = (Ewkow6 & Lwkow6); +assign Lwkow6 = (~(Odgpw6[26] | Odgpw6[27])); +assign Ewkow6 = (~(Odgpw6[24] | Odgpw6[25])); +assign Kskow6 = (Swkow6 & Zwkow6); +assign Zwkow6 = (Gxkow6 & Nxkow6); +assign Nxkow6 = (Uxkow6 & Bykow6); +assign Bykow6 = (~(Odgpw6[22] | Odgpw6[23])); +assign Uxkow6 = (~(Odgpw6[20] | Odgpw6[21])); +assign Gxkow6 = (Iykow6 & Pykow6); +assign Pykow6 = (~(Odgpw6[19] | Odgpw6[1])); +assign Iykow6 = (~(Odgpw6[17] | Odgpw6[18])); +assign Swkow6 = (Wykow6 & Dzkow6); +assign Dzkow6 = (Kzkow6 & Rzkow6); +assign Rzkow6 = (~(Odgpw6[15] | Odgpw6[16])); +assign Kzkow6 = (~(Odgpw6[13] | Odgpw6[14])); +assign Wykow6 = (Yzkow6 & F0low6); +assign F0low6 = (~(Odgpw6[11] | Odgpw6[12])); +assign Yzkow6 = (~(Odgpw6[0] | Odgpw6[10])); +assign Prkow6 = (M0low6 & T0low6); +assign T0low6 = (~(Q0fiu6 & R4gpw6[52])); +assign M0low6 = (~(U2fiu6 & R4gpw6[20])); +assign Ujkow6 = (A1low6 & H1low6); +assign H1low6 = (Uafow6 | R04ju6); +assign A1low6 = (~(HRDATA[22] & Q2eow6)); +assign Gjkow6 = (L5cow6 | Vacow6); +assign Vacow6 = (O1low6 & Dtcow6); +assign L5cow6 = (V1low6 & C2low6); +assign C2low6 = (J2low6 & Q2low6); +assign Q2low6 = (~(Dyeow6 & Ye4ju6)); +assign J2low6 = (Iydow6 | N9tiu6); +assign N9tiu6 = (X2low6 & E3low6); +assign E3low6 = (L3low6 & S3low6); +assign S3low6 = (Z3low6 & G4low6); +assign G4low6 = (N4low6 & U4low6); +assign U4low6 = (~(Tzdiu6 & R4gpw6[2])); +assign N4low6 = (~(S1fiu6 & R4gpw6[34])); +assign Z3low6 = (B5low6 & I5low6); +assign I5low6 = (~(STCALIB[14] & H1eow6)); +assign B5low6 = (~(F0eow6 & Vbgpw6[14])); +assign L3low6 = (P5low6 & W5low6); +assign W5low6 = (D6low6 & K6low6); +assign K6low6 = (~(U2fiu6 & R4gpw6[18])); +assign D6low6 = (~(I3fiu6 & R4gpw6[10])); +assign P5low6 = (R6low6 & Y6low6); +assign Y6low6 = (U5ciu6 | Qkgiu6); +assign U5ciu6 = (~(Ydeow6 & F7low6)); +assign F7low6 = (~(Okgow6 & M7low6)); +assign M7low6 = (~(T7low6 & A8low6)); +assign T7low6 = (~(H8low6 & O8low6)); +assign H8low6 = (E2fow6 ? C9low6 : V8low6); +assign C9low6 = (~(Z2fow6 | J9low6)); +assign J9low6 = (~(B4fow6 | Nggow6)); +assign V8low6 = (F6fow6 & Q9low6); +assign Q9low6 = (H7fow6 | Hdgow6); +assign R6low6 = (~(Q0fiu6 & R4gpw6[50])); +assign X2low6 = (X9low6 & Ealow6); +assign Ealow6 = (Lalow6 & Salow6); +assign Salow6 = (Zalow6 & Gblow6); +assign Gblow6 = (~(Tzfpw6[14] & Yvgiu6)); +assign Zalow6 = (~(Odgpw6[14] & M0eow6)); +assign Lalow6 = (Nblow6 & Ublow6); +assign Ublow6 = (~(C0fiu6 & R4gpw6[58])); +assign Nblow6 = (~(E1fiu6 & R4gpw6[42])); +assign X9low6 = (Bclow6 & Qgeow6); +assign Bclow6 = (Iclow6 & Pclow6); +assign Pclow6 = (~(Bagpw6[14] & M6eiu6)); +assign Iclow6 = (~(G2fiu6 & R4gpw6[26])); +assign V1low6 = (Wclow6 & Ddlow6); +assign Ddlow6 = (Uafow6 | Id4ju6); +assign Wclow6 = (~(HRDATA[14] & Q2eow6)); +assign Sikow6 = (Kdlow6 & Rdlow6); +assign Rdlow6 = (~(X4cow6 & Cbcow6)); +assign Cbcow6 = (~(Ydlow6 & W9how6)); +assign X4cow6 = (~(Felow6 & Melow6)); +assign Melow6 = (Iydow6 | Bewiu6); +assign Bewiu6 = (Telow6 & Aflow6); +assign Aflow6 = (Hflow6 & Oflow6); +assign Oflow6 = (Vflow6 & Cglow6); +assign Cglow6 = (Jglow6 & Qglow6); +assign Qglow6 = (~(Odgpw6[30] & M0eow6)); +assign Jglow6 = (Tpgiu6 | Xglow6); +assign Vflow6 = (Ehlow6 & Lhlow6); +assign Lhlow6 = (~(E1fiu6 & R4gpw6[46])); +assign Ehlow6 = (~(Tzdiu6 & R4gpw6[6])); +assign Hflow6 = (Shlow6 & Zhlow6); +assign Zhlow6 = (~(U2fiu6 & R4gpw6[22])); +assign Shlow6 = (Gilow6 & Nilow6); +assign Nilow6 = (~(STCALIB[24] & H1eow6)); +assign Gilow6 = (~(G2fiu6 & R4gpw6[30])); +assign Telow6 = (Uilow6 & Bjlow6); +assign Bjlow6 = (Ijlow6 & Pjlow6); +assign Pjlow6 = (Wjlow6 & Dklow6); +assign Dklow6 = (~(Hqgiu6 & H8gpw6[0])); +assign Wjlow6 = (~(I3fiu6 & R4gpw6[14])); +assign Ijlow6 = (Kklow6 & Rklow6); +assign Rklow6 = (~(C0fiu6 & R4gpw6[62])); +assign Kklow6 = (~(S1fiu6 & R4gpw6[38])); +assign Uilow6 = (Yklow6 & Qgeow6); +assign Yklow6 = (Fllow6 & Mllow6); +assign Mllow6 = (~(Q0fiu6 & R4gpw6[54])); +assign Fllow6 = (~(Pceow6 & Tllow6)); +assign Tllow6 = (Nzhiu6 | Vbgpw6[30]); +assign Felow6 = (Amlow6 & Hmlow6); +assign Hmlow6 = (~(C2eow6 & Omlow6)); +assign Omlow6 = (~(Vmlow6 & A94ju6)); +assign A94ju6 = (~(Cnlow6 & Jnlow6)); +assign Jnlow6 = (~(Qnlow6 & Queow6)); +assign Qnlow6 = (Xnlow6 & Zveow6); +assign Xnlow6 = (Azfow6 | Kqfow6); +assign Cnlow6 = (J2eow6 ? Eolow6 : Zx3ju6); +assign Vmlow6 = (~(Lolow6 & Vh3ju6)); +assign Lolow6 = (Queow6 & Zveow6); +assign Zveow6 = (Solow6 | C3kow6); +assign Amlow6 = (~(HRDATA[30] & Q2eow6)); +assign Kdlow6 = (~(Xbcow6 & N6cow6)); +assign N6cow6 = (~(Zolow6 & Gplow6)); +assign Gplow6 = (Nplow6 & Uplow6); +assign Uplow6 = (~(Dyeow6 & Og4ju6)); +assign Nplow6 = (Iydow6 | Kkriu6); +assign Kkriu6 = (Bqlow6 & Iqlow6); +assign Iqlow6 = (Pqlow6 & Wqlow6); +assign Wqlow6 = (Drlow6 & Krlow6); +assign Krlow6 = (Rrlow6 & Yrlow6); +assign Yrlow6 = (~(Odgpw6[6] & M0eow6)); +assign Rrlow6 = (~(Q0fiu6 & R4gpw6[48])); +assign Drlow6 = (Fslow6 & Mslow6); +assign Mslow6 = (~(Bagpw6[6] & M6eiu6)); +assign Fslow6 = (~(C0fiu6 & R4gpw6[56])); +assign Pqlow6 = (Tslow6 & Atlow6); +assign Atlow6 = (~(E1fiu6 & R4gpw6[40])); +assign Tslow6 = (Htlow6 & Otlow6); +assign Otlow6 = (~(Tzfpw6[6] & Yvgiu6)); +assign Htlow6 = (~(STCALIB[6] & H1eow6)); +assign Bqlow6 = (Vtlow6 & Culow6); +assign Culow6 = (Julow6 & Qulow6); +assign Qulow6 = (~(F0eow6 & Vbgpw6[6])); +assign Julow6 = (Xulow6 & Evlow6); +assign Evlow6 = (~(S1fiu6 & R4gpw6[32])); +assign Xulow6 = (~(G2fiu6 & R4gpw6[24])); +assign Vtlow6 = (Lvlow6 & Svlow6); +assign Svlow6 = (~(U2fiu6 & R4gpw6[16])); +assign Lvlow6 = (Zvlow6 & Gwlow6); +assign Gwlow6 = (~(I3fiu6 & R4gpw6[8])); +assign Zvlow6 = (~(Tzdiu6 & R4gpw6[0])); +assign Zolow6 = (Nwlow6 & Uwlow6); +assign Uwlow6 = (Uafow6 | Yt3ju6); +assign Uafow6 = (!Qtfow6); +assign Nwlow6 = (~(HRDATA[6] & Q2eow6)); +assign Xbcow6 = (~(K3how6 | Df3ju6)); +assign Eikow6 = (~(Egziu6 & Eafpw6[22])); +assign Chkow6 = (Lccow6 & Bxlow6); +assign Bxlow6 = (~(vis_pc_o[21] & Jmziu6)); +assign Lccow6 = (Sgziu6 & Ixlow6); +assign Ixlow6 = (Svkiu6 | Ft6ow6); +assign Ft6ow6 = (!Zgziu6); +assign Svkiu6 = (~(Pxlow6 & Ytcow6)); +assign Ytcow6 = (Wxlow6 & H5how6); +assign Wxlow6 = (Tucow6 ? Oh3ju6 : Dylow6); +assign Oh3ju6 = (Kylow6 & Kf3ju6); +assign Kylow6 = (L7how6 | Df3ju6); +assign Dylow6 = (~(Rylow6 & Yylow6)); +assign Yylow6 = (~(Fzlow6 & C0ehu6)); +assign Fzlow6 = (Pthiu6 & Cyfpw6[5]); +assign Rylow6 = (C6how6 & Mzlow6); +assign Pxlow6 = (Ydlow6 & Tzlow6); +assign Ydlow6 = (Avcow6 | Ktcow6); +assign Hcohu6 = (~(A0mow6 & H0mow6)); +assign H0mow6 = (O0mow6 & V0mow6); +assign V0mow6 = (~(Egziu6 & Eafpw6[10])); +assign Egziu6 = (Ar8iu6 & Et8iu6); +assign O0mow6 = (C1mow6 & Sgziu6); +assign Sgziu6 = (~(Ar8iu6 & J1mow6)); +assign J1mow6 = (~(Q1mow6 & X1mow6)); +assign X1mow6 = (~(Jydhu6 & Zmfiu6)); +assign Zmfiu6 = (!Emfiu6); +assign Q1mow6 = (E2mow6 & Dp8iu6); +assign E2mow6 = (~(Qwdhu6 & M2biu6)); +assign Ar8iu6 = (!Jmziu6); +assign C1mow6 = (~(Zgziu6 & Oymiu6)); +assign Oymiu6 = (~(L2mow6 & S2mow6)); +assign S2mow6 = (Z2mow6 & G3mow6); +assign G3mow6 = (Plcow6 | Pkdow6); +assign Pkdow6 = (Eccow6 & N3mow6); +assign N3mow6 = (~(Ktcow6 & U3mow6)); +assign U3mow6 = (~(B4mow6 & I4mow6)); +assign I4mow6 = (~(P4mow6 & Yahow6)); +assign P4mow6 = (E6oiu6 | W4mow6); +assign W4mow6 = (F9aju6 & Nlaiu6); +assign E6oiu6 = (Cyfpw6[3] & Tr0iu6); +assign B4mow6 = (~(Jdhow6 | K2aiu6)); +assign Jdhow6 = (T23ju6 & Cyfpw6[3]); +assign T23ju6 = (~(Tfjiu6 | Tr0iu6)); +assign Eccow6 = (Tzlow6 & D5mow6); +assign D5mow6 = (!Ovcow6); +assign Ovcow6 = (Ktcow6 & K5mow6); +assign K5mow6 = (~(C0ehu6 & R5mow6)); +assign R5mow6 = (~(G7oiu6 & Y5mow6)); +assign Y5mow6 = (Y2oiu6 | Tr0iu6); +assign Plcow6 = (F6mow6 & M6mow6); +assign M6mow6 = (T6mow6 & A7mow6); +assign A7mow6 = (Rcfow6 | Id4ju6); +assign Id4ju6 = (H7mow6 & O7mow6); +assign O7mow6 = (V7mow6 & C8mow6); +assign C8mow6 = (Ipfow6 | Z90iu6); +assign V7mow6 = (Kqfow6 | Na0iu6); +assign H7mow6 = (J8mow6 & Q8mow6); +assign Q8mow6 = (Rqfow6 | Ga0iu6); +assign J8mow6 = (Ppfow6 | Ua0iu6); +assign T6mow6 = (Iydow6 | Bisiu6); +assign Bisiu6 = (X8mow6 & E9mow6); +assign E9mow6 = (L9mow6 & S9mow6); +assign S9mow6 = (~(Tzfpw6[10] & Yvgiu6)); +assign L9mow6 = (Z9mow6 & Gamow6); +assign Gamow6 = (~(F0eow6 & Vbgpw6[10])); +assign Z9mow6 = (~(Odgpw6[10] & M0eow6)); +assign X8mow6 = (Namow6 & Uamow6); +assign Uamow6 = (~(Bagpw6[10] & M6eiu6)); +assign Namow6 = (~(STCALIB[10] & H1eow6)); +assign F6mow6 = (Bbmow6 & Ibmow6); +assign Ibmow6 = (~(Qtfow6 & Og4ju6)); +assign Og4ju6 = (~(Pbmow6 & Wbmow6)); +assign Wbmow6 = (Dcmow6 & Kcmow6); +assign Kcmow6 = (Kqfow6 | Pb0iu6); +assign Dcmow6 = (Ppfow6 | Wb0iu6); +assign Pbmow6 = (Rcmow6 & Ycmow6); +assign Ycmow6 = (Ipfow6 | Bb0iu6); +assign Rcmow6 = (Rqfow6 | Ib0iu6); +assign Bbmow6 = (~(HRDATA[10] & Q2eow6)); +assign Z2mow6 = (Fdmow6 & Dldow6); +assign Dldow6 = (~(H5how6 & Mdmow6)); +assign Mdmow6 = (~(Tdmow6 & C6how6)); +assign C6how6 = (~(Aemow6 & V3xhu6)); +assign Aemow6 = (Hemow6 & Ktcow6); +assign Tdmow6 = (~(Oemow6 & Vemow6)); +assign Vemow6 = (Cfmow6 & Dahow6); +assign Cfmow6 = (Tzlow6 & K3how6); +assign Tzlow6 = (Ny3ju6 | Ktcow6); +assign Ny3ju6 = (Fg3ju6 | R3how6); +assign Fg3ju6 = (~(Jfmow6 & Ej3ju6)); +assign Oemow6 = (Qfmow6 & O1low6); +assign Qfmow6 = (~(Xfmow6 & Ktcow6)); +assign Xfmow6 = (Egmow6 & Lgmow6); +assign Lgmow6 = (~(Sgmow6 & C0ehu6)); +assign Sgmow6 = (~(Mjfiu6 | Cyfpw6[0])); +assign Egmow6 = (Rn2ju6 | Tfjiu6); +assign H5how6 = (~(Zgmow6 & Ghmow6)); +assign Ghmow6 = (Nhmow6 & Uhmow6); +assign Uhmow6 = (Bimow6 | Q88ow6); +assign Q88ow6 = (Iimow6 & Pimow6); +assign Pimow6 = (Iydow6 | Ggtiu6); +assign Ggtiu6 = (Wimow6 & Djmow6); +assign Djmow6 = (Kjmow6 & Rjmow6); +assign Rjmow6 = (Yjmow6 & Fkmow6); +assign Fkmow6 = (Mkmow6 & Tkmow6); +assign Tkmow6 = (~(E1fiu6 & R4gpw6[43])); +assign Mkmow6 = (~(Q0fiu6 & R4gpw6[51])); +assign Yjmow6 = (Almow6 & Hlmow6); +assign Hlmow6 = (~(Tzdiu6 & R4gpw6[3])); +assign Almow6 = (~(STCALIB[15] & H1eow6)); +assign Kjmow6 = (Olmow6 & Vlmow6); +assign Vlmow6 = (Cmmow6 & Jmmow6); +assign Jmmow6 = (P6ciu6 | Qkgiu6); +assign P6ciu6 = (~(Ydeow6 & Qmmow6)); +assign Qmmow6 = (~(Xmmow6 & J1fow6)); +assign J1fow6 = (!Feeow6); +assign Feeow6 = (~(O8low6 & A8low6)); +assign Xmmow6 = (Meeow6 ? H7fow6 : B4fow6); +assign Ydeow6 = (A0fow6 & V0fow6); +assign A0fow6 = (~(Righu6 | Ahghu6)); +assign Cmmow6 = (~(I3fiu6 & R4gpw6[11])); +assign Olmow6 = (Enmow6 & Lnmow6); +assign Lnmow6 = (~(G2fiu6 & R4gpw6[27])); +assign Enmow6 = (~(U2fiu6 & R4gpw6[19])); +assign Wimow6 = (Snmow6 & Znmow6); +assign Znmow6 = (Gomow6 & Nomow6); +assign Nomow6 = (Uomow6 & Bpmow6); +assign Bpmow6 = (~(Odgpw6[15] & M0eow6)); +assign Uomow6 = (~(Tzfpw6[15] & Yvgiu6)); +assign Gomow6 = (Ipmow6 & Ppmow6); +assign Ppmow6 = (~(F0eow6 & Vbgpw6[15])); +assign Ipmow6 = (~(Bagpw6[15] & M6eiu6)); +assign Snmow6 = (Wpmow6 & Dqmow6); +assign Dqmow6 = (Kqmow6 & Rqmow6); +assign Rqmow6 = (~(C0fiu6 & R4gpw6[59])); +assign Kqmow6 = (~(Zlghu6 & Xrgiu6)); +assign Xrgiu6 = (Yqmow6 & Ynhiu6); +assign Yqmow6 = (K5eiu6 & Jfgpw6[4]); +assign Wpmow6 = (Qgeow6 & Frmow6); +assign Frmow6 = (~(S1fiu6 & R4gpw6[35])); +assign Iimow6 = (Mrmow6 & Trmow6); +assign Trmow6 = (We3ju6 | Hfeow6); +assign We3ju6 = (!Y83ju6); +assign Y83ju6 = (Hv3ju6 ? L44ju6 : Re4ju6); +assign L44ju6 = (~(Asmow6 & Hsmow6)); +assign Hsmow6 = (Osmow6 & Vsmow6); +assign Vsmow6 = (Ipfow6 | J80iu6); +assign Osmow6 = (Rqfow6 | Q80iu6); +assign Asmow6 = (Ctmow6 & Jtmow6); +assign Jtmow6 = (Ppfow6 | L90iu6); +assign Ctmow6 = (Kqfow6 | X80iu6); +assign Re4ju6 = (~(Qtmow6 & Xtmow6)); +assign Xtmow6 = (Eumow6 & Lumow6); +assign Lumow6 = (Ipfow6 | S90iu6); +assign Eumow6 = (Rqfow6 | Z90iu6); +assign Qtmow6 = (Sumow6 & Zumow6); +assign Zumow6 = (Ppfow6 | Na0iu6); +assign Sumow6 = (Kqfow6 | Ga0iu6); +assign Mrmow6 = (~(Q2eow6 & HRDATA[15])); +assign Bimow6 = (Gvmow6 & Nvmow6); +assign Nvmow6 = (~(S2ziu6 & Cyfpw6[3])); +assign S2ziu6 = (~(Tfjiu6 | Hs0iu6)); +assign Gvmow6 = (~(Uvmow6 & Yahow6)); +assign Nhmow6 = (Bwmow6 & Bz3ju6); +assign Bwmow6 = (~(Iwmow6 & X88ow6)); +assign X88ow6 = (~(Pwmow6 & Wwmow6)); +assign Wwmow6 = (Iydow6 | Pxriu6); +assign Pxriu6 = (Dxmow6 & Kxmow6); +assign Kxmow6 = (Rxmow6 & Yxmow6); +assign Yxmow6 = (Fymow6 & Mymow6); +assign Mymow6 = (Tymow6 & Azmow6); +assign Azmow6 = (~(Odgpw6[7] & M0eow6)); +assign Tymow6 = (~(Q0fiu6 & R4gpw6[49])); +assign Fymow6 = (Hzmow6 & Ozmow6); +assign Ozmow6 = (~(Bagpw6[7] & M6eiu6)); +assign Hzmow6 = (~(C0fiu6 & R4gpw6[57])); +assign Rxmow6 = (Vzmow6 & C0now6); +assign C0now6 = (~(E1fiu6 & R4gpw6[41])); +assign Vzmow6 = (J0now6 & Q0now6); +assign Q0now6 = (~(Tzfpw6[7] & Yvgiu6)); +assign J0now6 = (~(STCALIB[7] & H1eow6)); +assign Dxmow6 = (X0now6 & E1now6); +assign E1now6 = (L1now6 & S1now6); +assign S1now6 = (~(F0eow6 & Vbgpw6[7])); +assign L1now6 = (Z1now6 & G2now6); +assign G2now6 = (~(S1fiu6 & R4gpw6[33])); +assign Z1now6 = (~(G2fiu6 & R4gpw6[25])); +assign X0now6 = (N2now6 & U2now6); +assign U2now6 = (~(U2fiu6 & R4gpw6[17])); +assign N2now6 = (B3now6 & I3now6); +assign I3now6 = (~(I3fiu6 & R4gpw6[9])); +assign B3now6 = (~(Tzdiu6 & R4gpw6[1])); +assign Pwmow6 = (P3now6 & W3now6); +assign W3now6 = (~(C2eow6 & Jb3ju6)); +assign Jb3ju6 = (Hv3ju6 ? Ag4ju6 : Jw3ju6); +assign Ag4ju6 = (~(D4now6 & K4now6)); +assign K4now6 = (R4now6 & Y4now6); +assign Y4now6 = (Ppfow6 | Pb0iu6); +assign Pb0iu6 = (F5now6 & M5now6); +assign M5now6 = (T5now6 & A6now6); +assign A6now6 = (H6now6 & O6now6); +assign O6now6 = (~(V6now6 & vis_r2_o[11])); +assign H6now6 = (~(C7now6 & vis_r6_o[11])); +assign T5now6 = (J7now6 & Q7now6); +assign Q7now6 = (~(X7now6 & vis_r5_o[11])); +assign J7now6 = (~(E8now6 & vis_r4_o[11])); +assign F5now6 = (L8now6 & S8now6); +assign S8now6 = (Z8now6 & G9now6); +assign G9now6 = (~(N9now6 & vis_r1_o[11])); +assign Z8now6 = (~(U9now6 & vis_r0_o[11])); +assign L8now6 = (Banow6 & Ianow6); +assign Ianow6 = (~(Panow6 & vis_r3_o[11])); +assign Banow6 = (~(Wanow6 & vis_r7_o[11])); +assign R4now6 = (Ipfow6 | Ua0iu6); +assign D4now6 = (Dbnow6 & Kbnow6); +assign Kbnow6 = (Rqfow6 | Bb0iu6); +assign Dbnow6 = (Kqfow6 | Ib0iu6); +assign Jw3ju6 = (~(Rbnow6 & Ybnow6)); +assign Ybnow6 = (Fcnow6 & Mcnow6); +assign Mcnow6 = (Ppfow6 | I40iu6); +assign Fcnow6 = (Kqfow6 | B40iu6); +assign Rbnow6 = (Tcnow6 & Adnow6); +assign Adnow6 = (Ipfow6 | Wb0iu6); +assign Wb0iu6 = (Hdnow6 & Odnow6); +assign Odnow6 = (Vdnow6 & Cenow6); +assign Cenow6 = (Jenow6 & Qenow6); +assign Qenow6 = (~(V6now6 & vis_r2_o[10])); +assign Jenow6 = (~(C7now6 & vis_r6_o[10])); +assign Vdnow6 = (Xenow6 & Efnow6); +assign Efnow6 = (~(X7now6 & vis_r5_o[10])); +assign Xenow6 = (~(E8now6 & vis_r4_o[10])); +assign Hdnow6 = (Lfnow6 & Sfnow6); +assign Sfnow6 = (Zfnow6 & Ggnow6); +assign Ggnow6 = (~(N9now6 & vis_r1_o[10])); +assign Zfnow6 = (~(U9now6 & vis_r0_o[10])); +assign Lfnow6 = (Ngnow6 & Ugnow6); +assign Ugnow6 = (~(Panow6 & vis_r3_o[10])); +assign Ngnow6 = (~(Wanow6 & vis_r7_o[10])); +assign Tcnow6 = (Rqfow6 | U30iu6); +assign P3now6 = (~(HRDATA[7] & Q2eow6)); +assign Iwmow6 = (~(Rn2ju6 & Bhnow6)); +assign Bhnow6 = (~(Ihnow6 & Tfjiu6)); +assign Ihnow6 = (~(Tr0iu6 & Phnow6)); +assign Phnow6 = (Iwfpw6[0] | Iwfpw6[1]); +assign Rn2ju6 = (!A3aju6); +assign Zgmow6 = (Whnow6 & Dinow6); +assign Dinow6 = (~(Iwfpw6[1] & Kinow6)); +assign Kinow6 = (~(Rinow6 & Yinow6)); +assign Yinow6 = (~(Fjnow6 & Qyniu6)); +assign Fjnow6 = (~(H78ow6 | Iwfpw6[0])); +assign H78ow6 = (Mjnow6 & Tjnow6); +assign Tjnow6 = (Iydow6 | N0viu6); +assign N0viu6 = (Aknow6 & Hknow6); +assign Hknow6 = (Oknow6 & Vknow6); +assign Vknow6 = (Clnow6 & Jlnow6); +assign Jlnow6 = (Qlnow6 & Xlnow6); +assign Xlnow6 = (~(Odgpw6[23] & M0eow6)); +assign Qlnow6 = (~(Q0fiu6 & R4gpw6[53])); +assign Clnow6 = (Emnow6 & Lmnow6); +assign Lmnow6 = (~(Tzdiu6 & R4gpw6[5])); +assign Emnow6 = (~(I3fiu6 & R4gpw6[13])); +assign Oknow6 = (Smnow6 & Zmnow6); +assign Zmnow6 = (Gnnow6 & Nnnow6); +assign Nnnow6 = (~(Hqgiu6 & L1gpw6[1])); +assign Gnnow6 = (~(STCALIB[23] & H1eow6)); +assign Smnow6 = (Unnow6 & Bonow6); +assign Bonow6 = (~(G2fiu6 & R4gpw6[29])); +assign Unnow6 = (~(U2fiu6 & R4gpw6[21])); +assign Aknow6 = (Ionow6 & Ponow6); +assign Ponow6 = (Wonow6 & Dpnow6); +assign Dpnow6 = (Kpnow6 & Rpnow6); +assign Rpnow6 = (~(Tzfpw6[23] & Yvgiu6)); +assign Kpnow6 = (Qkgiu6 | U6piu6); +assign Wonow6 = (Ypnow6 & Fqnow6); +assign Fqnow6 = (~(Bagpw6[23] & M6eiu6)); +assign Ypnow6 = (~(E1fiu6 & R4gpw6[45])); +assign Ionow6 = (Mqnow6 & Tqnow6); +assign Tqnow6 = (~(S1fiu6 & R4gpw6[37])); +assign Mqnow6 = (Arnow6 & Hrnow6); +assign Hrnow6 = (~(C0fiu6 & R4gpw6[61])); +assign Arnow6 = (~(F0eow6 & Vbgpw6[23])); +assign Mjnow6 = (Ornow6 & Vrnow6); +assign Vrnow6 = (Hfeow6 | Ha3ju6); +assign Ha3ju6 = (Hv3ju6 ? Csnow6 : C34ju6); +assign Csnow6 = (Ecjow6 & Lcjow6); +assign Lcjow6 = (Jsnow6 & Qsnow6); +assign Qsnow6 = (Ipfow6 | Y50iu6); +assign Jsnow6 = (Rqfow6 | M60iu6); +assign Ecjow6 = (Xsnow6 & Etnow6); +assign Etnow6 = (Ppfow6 | A70iu6); +assign Xsnow6 = (~(C3kow6 & Ltnow6)); +assign C34ju6 = (Stnow6 & Ztnow6); +assign Ztnow6 = (Gunow6 & Nunow6); +assign Nunow6 = (Ipfow6 | H70iu6); +assign Gunow6 = (Rqfow6 | O70iu6); +assign Stnow6 = (Uunow6 & Bvnow6); +assign Bvnow6 = (Ppfow6 | C80iu6); +assign Uunow6 = (Kqfow6 | V70iu6); +assign Ornow6 = (~(HRDATA[23] & Q2eow6)); +assign Rinow6 = (~(Uvmow6 & V78ow6)); +assign V78ow6 = (~(Ivnow6 & Pvnow6)); +assign Pvnow6 = (Iydow6 | Rw1iu6); +assign Rw1iu6 = (Wvnow6 & Dwnow6); +assign Dwnow6 = (Kwnow6 & Rwnow6); +assign Rwnow6 = (Ywnow6 & Fxnow6); +assign Fxnow6 = (Mxnow6 & Txnow6); +assign Txnow6 = (Te6iu6 | Qkgiu6); +assign Mxnow6 = (~(Hqgiu6 & H8gpw6[1])); +assign Hqgiu6 = (Aynow6 & Ynhiu6); +assign Aynow6 = (K5eiu6 & U89iu6); +assign Ywnow6 = (Hynow6 & Oynow6); +assign Oynow6 = (~(STCALIB[25] & H1eow6)); +assign Hynow6 = (~(C0fiu6 & R4gpw6[63])); +assign C0fiu6 = (Vynow6 & Cznow6); +assign Kwnow6 = (Jznow6 & Qznow6); +assign Qznow6 = (~(S1fiu6 & R4gpw6[39])); +assign S1fiu6 = (Xznow6 & Vynow6); +assign Jznow6 = (E0oow6 & L0oow6); +assign L0oow6 = (~(Tzdiu6 & R4gpw6[7])); +assign Tzdiu6 = (Xznow6 & Pjyiu6); +assign E0oow6 = (~(Q0fiu6 & R4gpw6[55])); +assign Q0fiu6 = (S0oow6 & Vynow6); +assign Wvnow6 = (Z0oow6 & G1oow6); +assign G1oow6 = (N1oow6 & U1oow6); +assign U1oow6 = (B2oow6 & I2oow6); +assign I2oow6 = (~(Pceow6 & P2oow6)); +assign P2oow6 = (Nzhiu6 | Vbgpw6[31]); +assign B2oow6 = (~(G2fiu6 & R4gpw6[31])); +assign G2fiu6 = (Pjyiu6 & Cznow6); +assign N1oow6 = (W2oow6 & D3oow6); +assign D3oow6 = (~(U2fiu6 & R4gpw6[23])); +assign U2fiu6 = (S0oow6 & Pjyiu6); +assign S0oow6 = (K3oow6 & Jfgpw6[3]); +assign K3oow6 = (~(Jfgpw6[2] | Jfgpw6[4])); +assign W2oow6 = (~(E1fiu6 & R4gpw6[47])); +assign E1fiu6 = (Vynow6 & Dtjow6); +assign Z0oow6 = (R3oow6 & Y3oow6); +assign Y3oow6 = (Tpgiu6 | F4oow6); +assign Tpgiu6 = (~(Rzciu6 & Cznow6)); +assign R3oow6 = (M4oow6 & T4oow6); +assign T4oow6 = (~(I3fiu6 & R4gpw6[15])); +assign I3fiu6 = (Pjyiu6 & Dtjow6); +assign M4oow6 = (~(Odgpw6[31] & M0eow6)); +assign Ivnow6 = (A5oow6 & H5oow6); +assign H5oow6 = (Hfeow6 | Mg3ju6); +assign Mg3ju6 = (!O5oow6); +assign O5oow6 = (V5oow6 ? Vh3ju6 : Qb3ju6); +assign V5oow6 = (Queow6 & Solow6); +assign Solow6 = (~(V2kow6 & Ppfow6)); +assign Queow6 = (C6oow6 & Cyfpw6[3]); +assign C6oow6 = (J6oow6 & Hzfow6); +assign J6oow6 = (Azfow6 | Ppfow6); +assign Vh3ju6 = (!Bz3ju6); +assign Qb3ju6 = (Hv3ju6 ? Lx3ju6 : Vajow6); +assign Lx3ju6 = (~(Q6oow6 & X6oow6)); +assign X6oow6 = (E7oow6 & L7oow6); +assign L7oow6 = (Rqfow6 | W40iu6); +assign E7oow6 = (Kqfow6 | D50iu6); +assign Q6oow6 = (S7oow6 & Z7oow6); +assign Z7oow6 = (Ppfow6 | K50iu6); +assign S7oow6 = (Ipfow6 | P40iu6); +assign Vajow6 = (~(G8oow6 & N8oow6)); +assign N8oow6 = (U8oow6 & B9oow6); +assign B9oow6 = (Ipfow6 | F60iu6); +assign U8oow6 = (Rqfow6 | E90iu6); +assign G8oow6 = (I9oow6 & P9oow6); +assign P9oow6 = (Ppfow6 | R50iu6); +assign I9oow6 = (Kqfow6 | Dc0iu6); +assign A5oow6 = (~(Q2eow6 & HRDATA[31])); +assign Uvmow6 = (~(W9oow6 & Daoow6)); +assign Daoow6 = (X5oiu6 | Cyfpw6[0]); +assign W9oow6 = (~(Iwfpw6[0] & Qyniu6)); +assign Whnow6 = (~(V3xhu6 & Hemow6)); +assign Fdmow6 = (Gkcow6 | Uqdow6); +assign Uqdow6 = (!Mmdow6); +assign Mmdow6 = (~(Hlziu6 & Rahow6)); +assign Rahow6 = (~(Kaoow6 & Ktcow6)); +assign Kaoow6 = (Fd0iu6 & Pthiu6); +assign Hlziu6 = (O1low6 & W9how6); +assign W9how6 = (~(Ktcow6 & Vxniu6)); +assign O1low6 = (Kf3ju6 | Ktcow6); +assign Kf3ju6 = (X6how6 | Df3ju6); +assign X6how6 = (~(Raoow6 & Oa3ju6)); +assign Raoow6 = (F93ju6 & U54ju6); +assign Gkcow6 = (Yaoow6 & Fboow6); +assign Fboow6 = (Mboow6 & Tboow6); +assign Tboow6 = (Rcfow6 | Yt3ju6); +assign Yt3ju6 = (Acoow6 & Hcoow6); +assign Hcoow6 = (Ocoow6 & Vcoow6); +assign Vcoow6 = (Kqfow6 | I40iu6); +assign I40iu6 = (Cdoow6 & Jdoow6); +assign Jdoow6 = (Qdoow6 & Xdoow6); +assign Xdoow6 = (Eeoow6 & Leoow6); +assign Leoow6 = (~(V6now6 & vis_r2_o[7])); +assign Eeoow6 = (~(C7now6 & vis_r6_o[7])); +assign Qdoow6 = (Seoow6 & Zeoow6); +assign Zeoow6 = (~(X7now6 & vis_r5_o[7])); +assign Seoow6 = (~(E8now6 & vis_r4_o[7])); +assign Cdoow6 = (Gfoow6 & Nfoow6); +assign Nfoow6 = (Ufoow6 & Bgoow6); +assign Bgoow6 = (~(N9now6 & vis_r1_o[7])); +assign Ufoow6 = (~(U9now6 & vis_r0_o[7])); +assign Gfoow6 = (Igoow6 & Pgoow6); +assign Pgoow6 = (~(Panow6 & vis_r3_o[7])); +assign Igoow6 = (~(Wanow6 & vis_r7_o[7])); +assign Ocoow6 = (Rqfow6 | B40iu6); +assign B40iu6 = (Wgoow6 & Dhoow6); +assign Dhoow6 = (Khoow6 & Rhoow6); +assign Rhoow6 = (Yhoow6 & Fioow6); +assign Fioow6 = (~(V6now6 & vis_r2_o[8])); +assign Yhoow6 = (~(C7now6 & vis_r6_o[8])); +assign Khoow6 = (Mioow6 & Tioow6); +assign Tioow6 = (~(X7now6 & vis_r5_o[8])); +assign Mioow6 = (~(E8now6 & vis_r4_o[8])); +assign Wgoow6 = (Ajoow6 & Hjoow6); +assign Hjoow6 = (Ojoow6 & Vjoow6); +assign Vjoow6 = (~(N9now6 & vis_r1_o[8])); +assign Ojoow6 = (~(U9now6 & vis_r0_o[8])); +assign Ajoow6 = (Ckoow6 & Jkoow6); +assign Jkoow6 = (~(Panow6 & vis_r3_o[8])); +assign Ckoow6 = (~(Wanow6 & vis_r7_o[8])); +assign Acoow6 = (Qkoow6 & Xkoow6); +assign Xkoow6 = (Ipfow6 | U30iu6); +assign Qkoow6 = (Ppfow6 | P40iu6); +assign Mboow6 = (Iydow6 | Jaqiu6); +assign Jaqiu6 = (Eloow6 & Lloow6); +assign Lloow6 = (Sloow6 & Zloow6); +assign Zloow6 = (Gmoow6 & Nmoow6); +assign Nmoow6 = (~(Odgpw6[2] & M0eow6)); +assign Gmoow6 = (Umoow6 & Bnoow6); +assign Bnoow6 = (~(Ndghu6 & Fpgiu6)); +assign Fpgiu6 = (Rzciu6 & Xznow6); +assign Umoow6 = (~(STCALIB[2] & H1eow6)); +assign Sloow6 = (Inoow6 & Pnoow6); +assign Pnoow6 = (~(ECOREVNUM[2] & I5eow6)); +assign Inoow6 = (~(Y5eiu6 & Wnoow6)); +assign Wnoow6 = (STCALIB[25] | Ftghu6); +assign Y5eiu6 = (Vynow6 & Wjyiu6); +assign Eloow6 = (Dooow6 & Kooow6); +assign Kooow6 = (Rooow6 & Yooow6); +assign Yooow6 = (~(F0eow6 & Vbgpw6[2])); +assign Rooow6 = (~(Bagpw6[2] & M6eiu6)); +assign Dooow6 = (Fpoow6 & Mpoow6); +assign Mpoow6 = (~(Tzfpw6[2] & Yvgiu6)); +assign Fpoow6 = (Qkgiu6 | Tfciu6); +assign Yaoow6 = (Tpoow6 & Aqoow6); +assign Aqoow6 = (~(Qtfow6 & Zx3ju6)); +assign Zx3ju6 = (~(Hqoow6 & Oqoow6)); +assign Oqoow6 = (Vqoow6 & Croow6); +assign Croow6 = (Ipfow6 | W40iu6); +assign W40iu6 = (Jroow6 & Qroow6); +assign Qroow6 = (Xroow6 & Esoow6); +assign Esoow6 = (Lsoow6 & Ssoow6); +assign Ssoow6 = (~(V6now6 & vis_r2_o[5])); +assign Lsoow6 = (~(C7now6 & vis_r6_o[5])); +assign Xroow6 = (Zsoow6 & Gtoow6); +assign Gtoow6 = (~(X7now6 & vis_r5_o[5])); +assign Zsoow6 = (~(E8now6 & vis_r4_o[5])); +assign Jroow6 = (Ntoow6 & Utoow6); +assign Utoow6 = (Buoow6 & Iuoow6); +assign Iuoow6 = (~(N9now6 & vis_r1_o[5])); +assign Buoow6 = (~(U9now6 & vis_r0_o[5])); +assign Ntoow6 = (Puoow6 & Wuoow6); +assign Wuoow6 = (~(Panow6 & vis_r3_o[5])); +assign Puoow6 = (~(Wanow6 & vis_r7_o[5])); +assign Vqoow6 = (Kqfow6 | K50iu6); +assign K50iu6 = (Dvoow6 & Kvoow6); +assign Kvoow6 = (Rvoow6 & Yvoow6); +assign Yvoow6 = (Fwoow6 & Mwoow6); +assign Mwoow6 = (~(V6now6 & vis_r2_o[3])); +assign Fwoow6 = (~(C7now6 & vis_r6_o[3])); +assign Rvoow6 = (Twoow6 & Axoow6); +assign Axoow6 = (~(X7now6 & vis_r5_o[3])); +assign Twoow6 = (~(E8now6 & vis_r4_o[3])); +assign Dvoow6 = (Hxoow6 & Oxoow6); +assign Oxoow6 = (Vxoow6 & Cyoow6); +assign Cyoow6 = (~(N9now6 & vis_r1_o[3])); +assign Vxoow6 = (~(U9now6 & vis_r0_o[3])); +assign Hxoow6 = (Jyoow6 & Qyoow6); +assign Qyoow6 = (~(Panow6 & vis_r3_o[3])); +assign Jyoow6 = (~(Wanow6 & vis_r7_o[3])); +assign Hqoow6 = (Xyoow6 & Ezoow6); +assign Ezoow6 = (Ppfow6 | F60iu6); +assign F60iu6 = (Lzoow6 & Szoow6); +assign Szoow6 = (Zzoow6 & G0pow6); +assign G0pow6 = (N0pow6 & U0pow6); +assign U0pow6 = (~(V6now6 & vis_r2_o[2])); +assign N0pow6 = (~(C7now6 & vis_r6_o[2])); +assign Zzoow6 = (B1pow6 & I1pow6); +assign I1pow6 = (~(X7now6 & vis_r5_o[2])); +assign B1pow6 = (~(E8now6 & vis_r4_o[2])); +assign Lzoow6 = (P1pow6 & W1pow6); +assign W1pow6 = (D2pow6 & K2pow6); +assign K2pow6 = (~(N9now6 & vis_r1_o[2])); +assign D2pow6 = (~(U9now6 & vis_r0_o[2])); +assign P1pow6 = (R2pow6 & Y2pow6); +assign Y2pow6 = (~(Panow6 & vis_r3_o[2])); +assign R2pow6 = (~(Wanow6 & vis_r7_o[2])); +assign Xyoow6 = (Rqfow6 | D50iu6); +assign D50iu6 = (F3pow6 & M3pow6); +assign M3pow6 = (T3pow6 & A4pow6); +assign A4pow6 = (H4pow6 & O4pow6); +assign O4pow6 = (~(V6now6 & vis_r2_o[4])); +assign H4pow6 = (~(C7now6 & vis_r6_o[4])); +assign T3pow6 = (V4pow6 & C5pow6); +assign C5pow6 = (~(X7now6 & vis_r5_o[4])); +assign V4pow6 = (~(E8now6 & vis_r4_o[4])); +assign F3pow6 = (J5pow6 & Q5pow6); +assign Q5pow6 = (X5pow6 & E6pow6); +assign E6pow6 = (~(N9now6 & vis_r1_o[4])); +assign X5pow6 = (~(U9now6 & vis_r0_o[4])); +assign J5pow6 = (L6pow6 & S6pow6); +assign S6pow6 = (~(Panow6 & vis_r3_o[4])); +assign L6pow6 = (~(Wanow6 & vis_r7_o[4])); +assign Tpoow6 = (~(HRDATA[2] & Q2eow6)); +assign L2mow6 = (Z6pow6 & G7pow6); +assign G7pow6 = (Wlcow6 | Kldow6); +assign Kldow6 = (Dtcow6 & Dahow6); +assign Dahow6 = (Ch4ju6 | Ktcow6); +assign Ch4ju6 = (Avcow6 | R3how6); +assign R3how6 = (~(Mr0iu6 | N7pow6)); +assign Avcow6 = (~(Jfmow6 & F93ju6)); +assign Jfmow6 = (M93ju6 & U54ju6); +assign M93ju6 = (!Oa3ju6); +assign Dtcow6 = (Tucow6 | Qxaiu6); +assign Wlcow6 = (U7pow6 & B8pow6); +assign B8pow6 = (I8pow6 & P8pow6); +assign P8pow6 = (Rcfow6 | R04ju6); +assign R04ju6 = (W8pow6 & D9pow6); +assign D9pow6 = (K9pow6 & R9pow6); +assign R9pow6 = (Ipfow6 | O70iu6); +assign K9pow6 = (Rqfow6 | V70iu6); +assign W8pow6 = (Y9pow6 & Fapow6); +assign Fapow6 = (Ppfow6 | J80iu6); +assign Y9pow6 = (Kqfow6 | C80iu6); +assign Rcfow6 = (!Dyeow6); +assign Dyeow6 = (~(Hfeow6 | J2eow6)); +assign I8pow6 = (Iydow6 | U1uiu6); +assign U1uiu6 = (Mapow6 & Tapow6); +assign Tapow6 = (Abpow6 & Hbpow6); +assign Hbpow6 = (~(Pceow6 & Obpow6)); +assign Obpow6 = (Nzhiu6 | Vbgpw6[18]); +assign Pceow6 = (Nzhiu6 | F0eow6); +assign Abpow6 = (Vbpow6 & Ccpow6); +assign Ccpow6 = (~(Tzfpw6[18] & Yvgiu6)); +assign Yvgiu6 = (Jcpow6 & Vynow6); +assign Jcpow6 = (Ynhiu6 & U89iu6); +assign Vbpow6 = (~(Odgpw6[18] & M0eow6)); +assign Mapow6 = (Qcpow6 & Qgeow6); +assign Qgeow6 = (!I5eow6); +assign I5eow6 = (~(Xcpow6 & Edpow6)); +assign Edpow6 = (~(Ldpow6 & Cpwiu6)); +assign Cpwiu6 = (Sdpow6 & X8hpw6[5]); +assign Sdpow6 = (~(X8hpw6[0] | X8hpw6[6])); +assign Ldpow6 = (Ilwiu6 & Q4wiu6); +assign Q4wiu6 = (~(X8hpw6[1] | X8hpw6[4])); +assign Ilwiu6 = (X8hpw6[2] & Vm6iu6); +assign Vm6iu6 = (!X8hpw6[3]); +assign Xcpow6 = (~(Xznow6 & K5eiu6)); +assign Xznow6 = (Zdpow6 & Jfgpw6[2]); +assign Qcpow6 = (Gepow6 & Nepow6); +assign Nepow6 = (~(Bagpw6[18] & M6eiu6)); +assign M6eiu6 = (Vynow6 & D5eiu6); +assign Gepow6 = (~(STCALIB[18] & H1eow6)); +assign H1eow6 = (Uepow6 & Vynow6); +assign Vynow6 = (~(Uh7iu6 | Jfgpw6[1])); +assign Uepow6 = (Ynhiu6 & Jfgpw6[4]); +assign Ynhiu6 = (Jfgpw6[3] & Jfgpw6[2]); +assign U7pow6 = (Bfpow6 & Ifpow6); +assign Ifpow6 = (~(Qtfow6 & Ye4ju6)); +assign Ye4ju6 = (~(Pfpow6 & Wfpow6)); +assign Wfpow6 = (Dgpow6 & Kgpow6); +assign Kgpow6 = (Ipfow6 | Q80iu6); +assign Dgpow6 = (Ppfow6 | S90iu6); +assign Pfpow6 = (Rgpow6 & Ygpow6); +assign Ygpow6 = (Kqfow6 | L90iu6); +assign Rgpow6 = (Rqfow6 | X80iu6); +assign Qtfow6 = (~(Hfeow6 | Hv3ju6)); +assign Hfeow6 = (!C2eow6); +assign Bfpow6 = (~(HRDATA[18] & Q2eow6)); +assign Z6pow6 = (Ukcow6 | Spdow6); +assign Spdow6 = (!Fmdow6); +assign Fmdow6 = (~(Fhpow6 & Mhpow6)); +assign Mhpow6 = (~(T4how6 & Cyfpw6[3])); +assign T4how6 = (Thpow6 & Iwfpw6[1]); +assign Thpow6 = (~(Tucow6 | Cyfpw6[1])); +assign Fhpow6 = (F4how6 & K3how6); +assign K3how6 = (L7how6 | Ktcow6); +assign Ktcow6 = (!Tucow6); +assign L7how6 = (!Pe3ju6); +assign Pe3ju6 = (Aipow6 & Oa3ju6); +assign Aipow6 = (Ej3ju6 & U54ju6); +assign U54ju6 = (Ii0iu6 | Z53ju6); +assign Z53ju6 = (!Q43ju6); +assign Q43ju6 = (~(Hipow6 & Oipow6)); +assign Oipow6 = (~(Vipow6 & Cjpow6)); +assign Cjpow6 = (Jjpow6 & Qjpow6); +assign Qjpow6 = (~(S8fpw6[4] | H4ghu6)); +assign Jjpow6 = (~(S8fpw6[2] | S8fpw6[3])); +assign Vipow6 = (Xjpow6 & Pugiu6); +assign Xjpow6 = (~(S8fpw6[0] | S8fpw6[1])); +assign Hipow6 = (Ekpow6 & Zc3ju6); +assign Zc3ju6 = (~(Pfoiu6 & Lkpow6)); +assign Lkpow6 = (~(Zvzhu6 & Svzhu6)); +assign Ekpow6 = (Yn2ju6 | Gwzhu6); +assign F4how6 = (~(Skpow6 & Zkpow6)); +assign Zkpow6 = (~(Wmaiu6 | Tr0iu6)); +assign Wmaiu6 = (!Glpow6); +assign Skpow6 = (~(Yahow6 | Tucow6)); +assign Tucow6 = (~(Qcoiu6 & Nlpow6)); +assign Nlpow6 = (~(Ulpow6 & Xkaow6)); +assign Ulpow6 = (~(Imaiu6 | Y7ghu6)); +assign Qcoiu6 = (!Bmpow6); +assign Yahow6 = (!Iwfpw6[1]); +assign Ukcow6 = (Impow6 & Pmpow6); +assign Pmpow6 = (Iydow6 | Wmviu6); +assign Wmviu6 = (Wmpow6 & Dnpow6); +assign Dnpow6 = (~(Odgpw6[26] & M0eow6)); +assign M0eow6 = (Pjyiu6 & Knpow6); +assign Pjyiu6 = (Jfgpw6[0] & Jfgpw6[1]); +assign Wmpow6 = (Rnpow6 & Ynpow6); +assign Ynpow6 = (~(F0eow6 & Vbgpw6[26])); +assign F0eow6 = (K5eiu6 & Knpow6); +assign Knpow6 = (Wjyiu6 | D5eiu6); +assign D5eiu6 = (Fopow6 & Jfgpw6[4]); +assign Fopow6 = (~(Jfgpw6[2] | Jfgpw6[3])); +assign Rnpow6 = (~(Yyghu6 & T7eow6)); +assign T7eow6 = (!Qkgiu6); +assign Qkgiu6 = (~(K5eiu6 & Dtjow6)); +assign Dtjow6 = (Mopow6 & Jfgpw6[4]); +assign Mopow6 = (~(Ka9iu6 | Jfgpw6[3])); +assign Iydow6 = (~(Hemow6 & Topow6)); +assign Topow6 = (~(Rzciu6 & Wjyiu6)); +assign Impow6 = (Appow6 & Hppow6); +assign Hppow6 = (~(C2eow6 & Oppow6)); +assign Oppow6 = (~(Vppow6 & Cqpow6)); +assign Cqpow6 = (Jqpow6 | Bz3ju6); +assign Bz3ju6 = (~(Qqpow6 & E5ehu6)); +assign Qqpow6 = (~(Xqpow6 | R50iu6)); +assign Xqpow6 = (~(F3aiu6 | Pt2ju6)); +assign Vppow6 = (~(F84ju6 & Erpow6)); +assign Erpow6 = (O24ju6 | Hv3ju6); +assign O24ju6 = (~(Lrpow6 & Srpow6)); +assign Srpow6 = (Zrpow6 & Gspow6); +assign Gspow6 = (Ipfow6 | M60iu6); +assign Zrpow6 = (Ppfow6 | H70iu6); +assign Lrpow6 = (Nspow6 & Uspow6); +assign Uspow6 = (Kqfow6 | A70iu6); +assign Nspow6 = (Rqfow6 | T60iu6); +assign F84ju6 = (Btpow6 & Jqpow6); +assign Jqpow6 = (~(Itpow6 & Jbjow6)); +assign Jbjow6 = (Ptpow6 & Cyfpw6[3]); +assign Ptpow6 = (Wtpow6 & Azfow6); +assign Azfow6 = (!Lveow6); +assign Lveow6 = (J2eow6 & Uieow6); +assign Uieow6 = (!V2kow6); +assign Wtpow6 = (Ppfow6 | V2kow6); +assign Itpow6 = (Kqfow6 ? Qbjow6 : V2kow6); +assign Qbjow6 = (Hzfow6 | Dupow6); +assign Hzfow6 = (~(V2kow6 & Hv3ju6)); +assign V2kow6 = (~(N7pow6 | Df3ju6)); +assign Df3ju6 = (Vwaiu6 & Mr0iu6); +assign N7pow6 = (Kupow6 & Rupow6); +assign Rupow6 = (~(F93ju6 | Oa3ju6)); +assign Oa3ju6 = (H4ghu6 ? Yupow6 : X43ju6); +assign Yupow6 = (~(G63ju6 ^ Sc3ju6)); +assign Sc3ju6 = (!X43ju6); +assign X43ju6 = (~(Fvpow6 & Mvpow6)); +assign Mvpow6 = (Yn2ju6 | Nwzhu6); +assign Fvpow6 = (A4oiu6 | Qjoiu6); +assign F93ju6 = (!Ej3ju6); +assign Ej3ju6 = (H4ghu6 ? Awpow6 : Tvpow6); +assign Awpow6 = (~(Hwpow6 & G63ju6)); +assign G63ju6 = (Owpow6 | Vwpow6); +assign Hwpow6 = (~(Vwpow6 & Owpow6)); +assign Tvpow6 = (!Owpow6); +assign Owpow6 = (~(Cxpow6 & Jxpow6)); +assign Jxpow6 = (Yn2ju6 | Uwzhu6); +assign Cxpow6 = (Cajiu6 | A4oiu6); +assign Cajiu6 = (!S8fpw6[3]); +assign Kupow6 = (~(Hv3ju6 | Ppfow6)); +assign Hv3ju6 = (!J2eow6); +assign Btpow6 = (Eolow6 | J2eow6); +assign J2eow6 = (H4ghu6 ? Xxpow6 : Qxpow6); +assign Xxpow6 = (~(Eypow6 & Vwpow6)); +assign Vwpow6 = (Lypow6 | Sypow6); +assign Eypow6 = (~(Sypow6 & Lypow6)); +assign Lypow6 = (!Qxpow6); +assign Qxpow6 = (Zypow6 & Gzpow6); +assign Gzpow6 = (Yn2ju6 | Pxzhu6); +assign Zypow6 = (B5kiu6 | A4oiu6); +assign Eolow6 = (~(Nzpow6 & Uzpow6)); +assign Uzpow6 = (B0qow6 & I0qow6); +assign I0qow6 = (Ipfow6 | E90iu6); +assign Ipfow6 = (P0qow6 | W0qow6); +assign B0qow6 = (Rqfow6 | Dc0iu6); +assign Rqfow6 = (!Gweow6); +assign Gweow6 = (~(D1qow6 | P0qow6)); +assign Nzpow6 = (K1qow6 & R1qow6); +assign R1qow6 = (Ppfow6 | Y50iu6); +assign Ppfow6 = (!Dupow6); +assign Dupow6 = (P0qow6 & W0qow6); +assign K1qow6 = (Kqfow6 | R50iu6); +assign Kqfow6 = (!C3kow6); +assign C3kow6 = (P0qow6 & D1qow6); +assign P0qow6 = (H4ghu6 ? F2qow6 : Y1qow6); +assign F2qow6 = (~(M2qow6 & Sypow6)); +assign Sypow6 = (~(Y1qow6 & W0qow6)); +assign M2qow6 = (W0qow6 | Y1qow6); +assign W0qow6 = (!D1qow6); +assign D1qow6 = (~(T2qow6 & A3qow6)); +assign A3qow6 = (Yn2ju6 | N30iu6); +assign T2qow6 = (Je8iu6 | A4oiu6); +assign Je8iu6 = (!S8fpw6[0]); +assign Y1qow6 = (H3qow6 & O3qow6); +assign O3qow6 = (Yn2ju6 | O00iu6); +assign H3qow6 = (Y8biu6 | A4oiu6); +assign Y8biu6 = (!S8fpw6[1]); +assign C2eow6 = (E5ehu6 & V3qow6); +assign V3qow6 = (~(C4qow6 & J4qow6)); +assign J4qow6 = (Tr0iu6 | Gwyiu6); +assign C4qow6 = (~(Bmpow6 | A3aju6)); +assign Bmpow6 = (Hs0iu6 & K9aiu6); +assign Appow6 = (~(HRDATA[26] & Q2eow6)); +assign Q2eow6 = (Ytwiu6 & Hemow6); +assign Hemow6 = (~(Nm1ju6 | Q4qow6)); +assign Q4qow6 = (~(X4qow6 | E5qow6)); +assign E5qow6 = (Cyfpw6[1] ? Glpow6 : L5qow6); +assign Glpow6 = (Gwyiu6 & Nlaiu6); +assign L5qow6 = (~(S5qow6 | Hs0iu6)); +assign X4qow6 = (~(Z5qow6 & K9aiu6)); +assign Z5qow6 = (Xkaow6 | C0ehu6); +assign Nm1ju6 = (!E5ehu6); +assign Ytwiu6 = (Rzciu6 & Wjyiu6); +assign Wjyiu6 = (Zdpow6 & Ka9iu6); +assign Ka9iu6 = (!Jfgpw6[2]); +assign Zdpow6 = (~(Jfgpw6[3] | Jfgpw6[4])); +assign Rzciu6 = (~(Jfgpw6[0] | Jfgpw6[1])); +assign Zgziu6 = (~(Jmziu6 | Gu8iu6)); +assign A0mow6 = (G6qow6 & N6qow6); +assign N6qow6 = (~(Zsfpw6[9] & Cmziu6)); +assign Cmziu6 = (~(Hr8iu6 | Jmziu6)); +assign Hr8iu6 = (Et8iu6 | U6qow6); +assign G6qow6 = (~(vis_pc_o[9] & Jmziu6)); +assign Jmziu6 = (~(HREADY & B7qow6)); +assign Acohu6 = (~(I7qow6 & P7qow6)); +assign P7qow6 = (~(Umhow6 & HRDATA[19])); +assign I7qow6 = (~(Hrfpw6[3] & Qqhiu6)); +assign Tbohu6 = (~(W7qow6 & D8qow6)); +assign D8qow6 = (~(Umhow6 & HRDATA[18])); +assign W7qow6 = (~(Hrfpw6[2] & Qqhiu6)); +assign Mbohu6 = (~(K8qow6 & R8qow6)); +assign R8qow6 = (~(Umhow6 & HRDATA[17])); +assign Umhow6 = (~(Wz4iu6 | Qqhiu6)); +assign Wz4iu6 = (!Glhiu6); +assign Glhiu6 = (Vobiu6 & Hs7iu6); +assign K8qow6 = (~(Hrfpw6[1] & Qqhiu6)); +assign Fbohu6 = (Qqhiu6 ? Hrfpw6[14] : Rw8iu6); +assign Qqhiu6 = (~(Dxfhu6 & HREADY)); +assign Rw8iu6 = (~(Hs7iu6 & Y8qow6)); +assign Y8qow6 = (~(HRDATA[30] & Vobiu6)); +assign Vobiu6 = (~(F9qow6 | N19iu6)); +assign N19iu6 = (!vis_tbit_o); +assign F9qow6 = (V3xhu6 | Yyfhu6); +assign V3xhu6 = (HRESP & Qaxiu6); +assign Hs7iu6 = (!Aghhu6); +assign Yaohu6 = (~(Kaohu6 & M9qow6)); +assign M9qow6 = (~(T9qow6 & G3eiu6)); +assign G3eiu6 = (Npdhu6 & HWDATA[2]); +assign T9qow6 = (Uzhiu6 & Nzhiu6); +assign Nzhiu6 = (!Yreow6); +assign Yreow6 = (~(Cznow6 & K5eiu6)); +assign K5eiu6 = (Jfgpw6[1] & Uh7iu6); +assign Uh7iu6 = (!Jfgpw6[0]); +assign Cznow6 = (Aaqow6 & Jfgpw6[3]); +assign Aaqow6 = (~(U89iu6 | Jfgpw6[2])); +assign U89iu6 = (!Jfgpw6[4]); +assign Uzhiu6 = (Haqow6 & Oaqow6); +assign Oaqow6 = (Vaqow6 & Cbqow6); +assign Cbqow6 = (Jbqow6 & Qbqow6); +assign Qbqow6 = (~(HWDATA[29] | HWDATA[16])); +assign HWDATA[16] = (~(Xbqow6 & Ecqow6)); +assign Ecqow6 = (~(Lcqow6 & L35ju6)); +assign Xbqow6 = (Scqow6 & Zcqow6); +assign Zcqow6 = (~(Gdqow6 & Xc9ju6)); +assign Xc9ju6 = (~(Ndqow6 & Udqow6)); +assign Udqow6 = (Beqow6 & Ieqow6); +assign Ieqow6 = (Peqow6 & Weqow6); +assign Weqow6 = (~(Fkfpw6[16] & Dfqow6)); +assign Peqow6 = (Kfqow6 & Rfqow6); +assign Rfqow6 = (~(vis_psp_o[14] & Yfqow6)); +assign Kfqow6 = (~(vis_msp_o[14] & Fgqow6)); +assign Beqow6 = (Mgqow6 & Tgqow6); +assign Tgqow6 = (~(vis_r14_o[16] & Ahqow6)); +assign Mgqow6 = (~(vis_r12_o[16] & Hhqow6)); +assign Ndqow6 = (Ohqow6 & Vhqow6); +assign Vhqow6 = (Ciqow6 & Jiqow6); +assign Jiqow6 = (~(vis_r9_o[16] & Qiqow6)); +assign Ciqow6 = (Xiqow6 & Ejqow6); +assign Ejqow6 = (~(vis_r11_o[16] & Ljqow6)); +assign Xiqow6 = (~(vis_r10_o[16] & Sjqow6)); +assign Ohqow6 = (Q10iu6 & Zjqow6); +assign Zjqow6 = (~(vis_r8_o[16] & Gkqow6)); +assign Q10iu6 = (Nkqow6 & Ukqow6); +assign Ukqow6 = (Blqow6 & Ilqow6); +assign Ilqow6 = (Plqow6 & Wlqow6); +assign Wlqow6 = (~(vis_r2_o[16] & Dmqow6)); +assign Plqow6 = (~(vis_r6_o[16] & Kmqow6)); +assign Blqow6 = (Rmqow6 & Ymqow6); +assign Ymqow6 = (~(vis_r5_o[16] & Fnqow6)); +assign Rmqow6 = (~(vis_r4_o[16] & Mnqow6)); +assign Nkqow6 = (Tnqow6 & Aoqow6); +assign Aoqow6 = (Hoqow6 & Ooqow6); +assign Ooqow6 = (~(vis_r1_o[16] & Voqow6)); +assign Hoqow6 = (~(vis_r0_o[16] & Cpqow6)); +assign Tnqow6 = (Jpqow6 & Qpqow6); +assign Qpqow6 = (~(vis_r3_o[16] & Xpqow6)); +assign Jpqow6 = (~(vis_r7_o[16] & Eqqow6)); +assign Scqow6 = (~(Z54iu6 & R0nhu6)); +assign Z54iu6 = (Shhpw6[16] & Iqzhu6); +assign HWDATA[29] = (~(Lqqow6 & Sqqow6)); +assign Sqqow6 = (Zqqow6 & Grqow6); +assign Grqow6 = (~(Gdqow6 & Wh8iu6)); +assign Wh8iu6 = (~(Nrqow6 & Urqow6)); +assign Urqow6 = (Bsqow6 & Isqow6); +assign Isqow6 = (Psqow6 & Wsqow6); +assign Wsqow6 = (~(vis_r11_o[29] & Ljqow6)); +assign Psqow6 = (Dtqow6 & Ktqow6); +assign Ktqow6 = (~(vis_r9_o[29] & Qiqow6)); +assign Dtqow6 = (~(Fkfpw6[29] & Dfqow6)); +assign Bsqow6 = (Rtqow6 & Ytqow6); +assign Ytqow6 = (~(vis_r10_o[29] & Sjqow6)); +assign Rtqow6 = (~(vis_psp_o[27] & Yfqow6)); +assign Nrqow6 = (Fuqow6 & Muqow6); +assign Muqow6 = (Tuqow6 & Avqow6); +assign Avqow6 = (~(vis_r12_o[29] & Hhqow6)); +assign Tuqow6 = (Hvqow6 & Ovqow6); +assign Ovqow6 = (~(vis_msp_o[27] & Fgqow6)); +assign Hvqow6 = (~(vis_r14_o[29] & Ahqow6)); +assign Fuqow6 = (Wxzhu6 & Vvqow6); +assign Vvqow6 = (~(vis_r8_o[29] & Gkqow6)); +assign Wxzhu6 = (Cwqow6 & Jwqow6); +assign Jwqow6 = (Qwqow6 & Xwqow6); +assign Xwqow6 = (Exqow6 & Lxqow6); +assign Lxqow6 = (~(vis_r2_o[29] & Dmqow6)); +assign Exqow6 = (~(vis_r6_o[29] & Kmqow6)); +assign Qwqow6 = (Sxqow6 & Zxqow6); +assign Zxqow6 = (~(vis_r5_o[29] & Fnqow6)); +assign Sxqow6 = (~(vis_r4_o[29] & Mnqow6)); +assign Cwqow6 = (Gyqow6 & Nyqow6); +assign Nyqow6 = (Uyqow6 & Bzqow6); +assign Bzqow6 = (~(vis_r1_o[29] & Voqow6)); +assign Uyqow6 = (~(vis_r0_o[29] & Cpqow6)); +assign Gyqow6 = (Izqow6 & Pzqow6); +assign Pzqow6 = (~(vis_r3_o[29] & Xpqow6)); +assign Izqow6 = (~(vis_r7_o[29] & Eqqow6)); +assign Lqqow6 = (Wzqow6 & D0row6); +assign D0row6 = (~(K0row6 & Sz8ju6)); +assign Wzqow6 = (~(M94iu6 & R0nhu6)); +assign M94iu6 = (Shhpw6[29] & Iqzhu6); +assign Jbqow6 = (~(HWDATA[30] | HWDATA[31])); +assign Vaqow6 = (R0row6 & Y0row6); +assign Y0row6 = (~(HWDATA[27] | HWDATA[28])); +assign R0row6 = (~(HWDATA[18] | HWDATA[25])); +assign Haqow6 = (F1row6 & M1row6); +assign M1row6 = (T1row6 & A2row6); +assign A2row6 = (HWDATA[24] & HWDATA[26]); +assign T1row6 = (HWDATA[22] & HWDATA[23]); +assign F1row6 = (H2row6 & O2row6); +assign O2row6 = (HWDATA[20] & HWDATA[21]); +assign H2row6 = (HWDATA[17] & HWDATA[19]); +assign Raohu6 = (Eh6iu6 ? Qnghu6 : V2row6); +assign Eh6iu6 = (!HREADY); +assign V2row6 = (C3row6 & J3row6); +assign J3row6 = (Q3row6 & Udpiu6); +assign Udpiu6 = (!Pzwiu6); +assign Q3row6 = (~(Stdhu6 & Gsaiu6)); +assign Gsaiu6 = (~(Xe9ow6 & X3row6)); +assign X3row6 = (~(E4row6 & Y2oiu6)); +assign E4row6 = (Iugiu6 | P8oiu6); +assign P8oiu6 = (~(Et0ju6 | Xe8iu6)); +assign Et0ju6 = (Nlaiu6 | K9aiu6); +assign C3row6 = (U6piu6 & Usaiu6); +assign Usaiu6 = (~(Qa5iu6 | L4row6)); +assign L4row6 = (Fsdhu6 & Ja5iu6); +assign Ja5iu6 = (S4row6 & Sf7ju6); +assign Sf7ju6 = (Z4row6 & F23ju6); +assign Z4row6 = (~(As0iu6 | H4ghu6)); +assign S4row6 = (Pt2ju6 & Cyfpw6[3]); +assign Qa5iu6 = (Su8ow6 & Xe9ow6); +assign Xe9ow6 = (~(Iepiu6 & Cyfpw6[5])); +assign Su8ow6 = (~(Vo3ju6 & G5row6)); +assign G5row6 = (~(N5row6 & U5row6)); +assign U5row6 = (~(B6row6 & X97ow6)); +assign B6row6 = (Qe8iu6 & Tfjiu6); +assign N5row6 = (~(N4kiu6 & Hs0iu6)); +assign N4kiu6 = (I6row6 & Frziu6); +assign I6row6 = (~(Ae0iu6 | C0ehu6)); +assign U6piu6 = (P6row6 & Zl1ju6); +assign Zl1ju6 = (~(Emfiu6 & W6row6)); +assign W6row6 = (~(D7row6 & Te6iu6)); +assign Te6iu6 = (!Ahghu6); +assign D7row6 = (X7gow6 | M2biu6); +assign X7gow6 = (!Righu6); +assign P6row6 = (K7row6 | Sl1ju6); +assign Sl1ju6 = (~(R7row6 & Knbow6)); +assign Knbow6 = (Emfiu6 & Y7row6); +assign Y7row6 = (!M2biu6); +assign M2biu6 = (F8row6 & M8row6); +assign Emfiu6 = (~(T8row6 & A9row6)); +assign T8row6 = (H9row6 & M8row6); +assign R7row6 = (O9row6 & V0fow6); +assign V0fow6 = (V9row6 | Carow6); +assign V9row6 = (~(Jarow6 & Qarow6)); +assign Jarow6 = (~(Ikghu6 & Jhqiu6)); +assign O9row6 = (~(Xarow6 & Ebrow6)); +assign Ebrow6 = (Lbrow6 | Sbrow6); +assign Xarow6 = (Zbrow6 & Gcrow6); +assign Zbrow6 = (~(Ncrow6 & Ucrow6)); +assign Ucrow6 = (Bdrow6 & Idrow6); +assign Bdrow6 = (Okgow6 | Pdrow6); +assign Pdrow6 = (!L1gpw6[0]); +assign Okgow6 = (A8low6 | Wdrow6); +assign Ncrow6 = (~(Derow6 | Kerow6)); +assign Kerow6 = (Sbrow6 & Lbrow6); +assign Lbrow6 = (A8low6 ? Yerow6 : Rerow6); +assign Derow6 = (A8low6 ? Mfrow6 : Ffrow6); +assign A8low6 = (~(Tfrow6 & Agrow6)); +assign Agrow6 = (~(Carow6 & Hgrow6)); +assign Hgrow6 = (~(Ogrow6 & Vgrow6)); +assign Vgrow6 = (~(Chrow6 & Jhrow6)); +assign Jhrow6 = (Qarow6 ? L1gpw6[0] : B3gpw6[0]); +assign Chrow6 = (~(Mfrow6 | Qhrow6)); +assign Qhrow6 = (~(Rerow6 | Xhrow6)); +assign Ogrow6 = (~(Xhrow6 & Rerow6)); +assign Rerow6 = (Wdrow6 ? B3gpw6[1] : L1gpw6[1]); +assign Xhrow6 = (!Yerow6); +assign Yerow6 = (O8low6 ? Eirow6 : H8gpw6[1]); +assign Carow6 = (~(O8low6 & Lirow6)); +assign Lirow6 = (~(Sirow6 & Jhqiu6)); +assign Tfrow6 = (Ikghu6 | Wdrow6); +assign Wdrow6 = (!Qarow6); +assign Mfrow6 = (O8low6 ? Zirow6 : H8gpw6[0]); +assign O8low6 = (~(Gjrow6 & Yyghu6)); +assign Gjrow6 = (Njrow6 & Jhqiu6); +assign Njrow6 = (~(Sirow6 & Ujrow6)); +assign Ujrow6 = (~(Bkrow6 & Ikrow6)); +assign Ikrow6 = (Pkrow6 | Zirow6); +assign Pkrow6 = (~(H8gpw6[0] & Wkrow6)); +assign Wkrow6 = (Dlrow6 | H8gpw6[1]); +assign Bkrow6 = (~(H8gpw6[1] & Dlrow6)); +assign Dlrow6 = (!Eirow6); +assign Eirow6 = (E2fow6 ? Rlrow6 : Klrow6); +assign Klrow6 = (!Ylrow6); +assign Sirow6 = (~(Fmrow6 & Mmrow6)); +assign Mmrow6 = (~(E2fow6 | H7fow6)); +assign E2fow6 = (!Meeow6); +assign Fmrow6 = (C8fow6 & Tmrow6); +assign Zirow6 = (Meeow6 ? Hnrow6 : Anrow6); +assign Meeow6 = (~(Onrow6 & Vnrow6)); +assign Vnrow6 = (~(Corow6 & Jorow6)); +assign Jorow6 = (Ylrow6 | Rlrow6); +assign Corow6 = (Qorow6 & Xorow6); +assign Xorow6 = (~(Eprow6 & C8fow6)); +assign Eprow6 = (Tmrow6 & Lprow6); +assign Qorow6 = (~(Sprow6 & Zprow6)); +assign Zprow6 = (~(Rlrow6 & Ylrow6)); +assign Ylrow6 = (H7fow6 ? Nqrow6 : Gqrow6); +assign Nqrow6 = (!Uqrow6); +assign Rlrow6 = (B4fow6 ? Irrow6 : Brrow6); +assign Brrow6 = (!Prrow6); +assign Sprow6 = (Hnrow6 | Wrrow6); +assign Wrrow6 = (!Anrow6); +assign Onrow6 = (Dsrow6 | B4fow6); +assign Hnrow6 = (Ksrow6 | Rsrow6); +assign Rsrow6 = (~(F6fow6 | Ysrow6)); +assign F6fow6 = (Lprow6 | Ftrow6); +assign Ksrow6 = (H7fow6 ? Ttrow6 : Mtrow6); +assign H7fow6 = (!Lprow6); +assign Lprow6 = (~(Aurow6 & Hurow6)); +assign Hurow6 = (~(Ourow6 & Vurow6)); +assign Vurow6 = (~(Cvrow6 & Jvrow6)); +assign Jvrow6 = (~(Uqrow6 & Gqrow6)); +assign Cvrow6 = (~(Qvrow6 & Xvrow6)); +assign Xvrow6 = (O7fow6 ? Lwrow6 : Ewrow6); +assign Qvrow6 = (~(Mtrow6 | Swrow6)); +assign Swrow6 = (~(Gqrow6 | Uqrow6)); +assign Uqrow6 = (Ftrow6 ? Gxrow6 : Zwrow6); +assign Gqrow6 = (Hdgow6 ? Uxrow6 : Nxrow6); +assign Ourow6 = (~(C8fow6 & Tmrow6)); +assign C8fow6 = (Q8fow6 & Jegow6); +assign Aurow6 = (~(Byrow6 & Iyrow6)); +assign Byrow6 = (~(Pyrow6 | Ftrow6)); +assign Ttrow6 = (Ftrow6 & Ewrow6); +assign Ftrow6 = (!O7fow6); +assign O7fow6 = (~(Wyrow6 & Dzrow6)); +assign Dzrow6 = (~(Kzrow6 & Rzrow6)); +assign Rzrow6 = (Yzrow6 | Gxrow6); +assign Kzrow6 = (F0sow6 & M0sow6); +assign M0sow6 = (~(Iyrow6 & T0sow6)); +assign T0sow6 = (!Pyrow6); +assign Iyrow6 = (~(M6fow6 | A1sow6)); +assign F0sow6 = (~(H1sow6 & O1sow6)); +assign O1sow6 = (~(Gxrow6 & Yzrow6)); +assign Yzrow6 = (!Zwrow6); +assign Zwrow6 = (M6fow6 ? C2sow6 : V1sow6); +assign Gxrow6 = (X2sow6 ? Q2sow6 : J2sow6); +assign H1sow6 = (~(Ysrow6 & Ewrow6)); +assign Ewrow6 = (V7fow6 ? L3sow6 : E3sow6); +assign V7fow6 = (!X2sow6); +assign Ysrow6 = (!Lwrow6); +assign Lwrow6 = (M6fow6 ? Z3sow6 : S3sow6); +assign M6fow6 = (G4sow6 & N4sow6); +assign N4sow6 = (~(U4sow6 & B5sow6)); +assign B5sow6 = (~(I5sow6 & P5sow6)); +assign P5sow6 = (W5sow6 | D6sow6); +assign D6sow6 = (Wagow6 ? R4gpw6[46] : R4gpw6[44]); +assign W5sow6 = (~(Z3sow6 & K6sow6)); +assign K6sow6 = (~(V1sow6 & R6sow6)); +assign I5sow6 = (R6sow6 | V1sow6); +assign V1sow6 = (Wagow6 ? R4gpw6[47] : R4gpw6[45]); +assign Wagow6 = (!A1sow6); +assign R6sow6 = (!C2sow6); +assign C2sow6 = (Dbgow6 ? R4gpw6[43] : R4gpw6[41]); +assign U4sow6 = (Pyrow6 | A1sow6); +assign G4sow6 = (~(Dbgow6 & Y6sow6)); +assign Y6sow6 = (~(Vbgpw6[21] & Odgpw6[21])); +assign Z3sow6 = (F7sow6 ? R4gpw6[40] : R4gpw6[42]); +assign F7sow6 = (!Dbgow6); +assign Dbgow6 = (~(M7sow6 & Vbgpw6[20])); +assign M7sow6 = (Odgpw6[20] & T7sow6); +assign T7sow6 = (~(A8sow6 & Vbgpw6[21])); +assign A8sow6 = (Odgpw6[21] & H8sow6); +assign H8sow6 = (~(O8sow6 & V8sow6)); +assign V8sow6 = (~(C9sow6 & R4gpw6[40])); +assign C9sow6 = (~(J9sow6 | R4gpw6[42])); +assign J9sow6 = (~(Q9sow6 | R4gpw6[41])); +assign O8sow6 = (~(R4gpw6[41] & Q9sow6)); +assign S3sow6 = (A1sow6 ? R4gpw6[44] : R4gpw6[46]); +assign A1sow6 = (X9sow6 & Vbgpw6[22]); +assign X9sow6 = (Odgpw6[22] & Easow6); +assign Easow6 = (~(Lasow6 & Pyrow6)); +assign Pyrow6 = (Vbgpw6[23] & Odgpw6[23]); +assign Lasow6 = (Sasow6 & Zasow6); +assign Zasow6 = (~(Gbsow6 & Nbsow6)); +assign Nbsow6 = (Ubsow6 | R4gpw6[47]); +assign Gbsow6 = (~(R4gpw6[44] & Bcsow6)); +assign Sasow6 = (~(R4gpw6[47] & Ubsow6)); +assign Wyrow6 = (~(Icsow6 & Pcsow6)); +assign Icsow6 = (X2sow6 & Kbgow6); +assign X2sow6 = (~(Wcsow6 & Ddsow6)); +assign Ddsow6 = (~(Kdsow6 & Rdsow6)); +assign Rdsow6 = (~(Ydsow6 & Fesow6)); +assign Fesow6 = (~(Mesow6 & L3sow6)); +assign L3sow6 = (Rbgow6 ? R4gpw6[34] : R4gpw6[32]); +assign Mesow6 = (~(E3sow6 | Tesow6)); +assign Tesow6 = (~(Afsow6 | J2sow6)); +assign E3sow6 = (Kbgow6 ? R4gpw6[38] : R4gpw6[36]); +assign Ydsow6 = (~(J2sow6 & Afsow6)); +assign Afsow6 = (!Q2sow6); +assign Q2sow6 = (Kbgow6 ? R4gpw6[39] : R4gpw6[37]); +assign J2sow6 = (Rbgow6 ? R4gpw6[35] : R4gpw6[33]); +assign Kdsow6 = (~(Pcsow6 & Kbgow6)); +assign Kbgow6 = (~(Hfsow6 & Vbgpw6[18])); +assign Hfsow6 = (Odgpw6[18] & Ofsow6); +assign Ofsow6 = (Vfsow6 | Pcsow6); +assign Vfsow6 = (~(Cgsow6 & Jgsow6)); +assign Jgsow6 = (~(Qgsow6 & Xgsow6)); +assign Xgsow6 = (Ehsow6 | R4gpw6[39]); +assign Qgsow6 = (~(R4gpw6[36] & Lhsow6)); +assign Cgsow6 = (~(R4gpw6[39] & Ehsow6)); +assign Pcsow6 = (~(Vbgpw6[19] & Odgpw6[19])); +assign Wcsow6 = (~(Rbgow6 & Shsow6)); +assign Shsow6 = (~(Vbgpw6[17] & Odgpw6[17])); +assign Rbgow6 = (~(Zhsow6 & Vbgpw6[16])); +assign Zhsow6 = (Odgpw6[16] & Gisow6); +assign Gisow6 = (~(Nisow6 & Uisow6)); +assign Uisow6 = (Bjsow6 & Ijsow6); +assign Ijsow6 = (~(Pjsow6 & Wjsow6)); +assign Wjsow6 = (~(R4gpw6[33] & Dksow6)); +assign Pjsow6 = (~(R4gpw6[32] & Kksow6)); +assign Kksow6 = (!R4gpw6[34]); +assign Bjsow6 = (Dksow6 | R4gpw6[33]); +assign Nisow6 = (Vbgpw6[17] & Odgpw6[17]); +assign Mtrow6 = (Hdgow6 ? Yksow6 : Rksow6); +assign Hdgow6 = (!Q8fow6); +assign Q8fow6 = (~(Flsow6 & Mlsow6)); +assign Mlsow6 = (Tlsow6 | Amsow6); +assign Tlsow6 = (X8fow6 | Vdgow6); +assign Flsow6 = (~(Hmsow6 & Omsow6)); +assign Omsow6 = (~(Vmsow6 & Cnsow6)); +assign Cnsow6 = (~(Jnsow6 & Qnsow6)); +assign Qnsow6 = (Xnsow6 & Eosow6); +assign Xnsow6 = (Nxrow6 | Losow6); +assign Jnsow6 = (Yksow6 & Sosow6); +assign Vmsow6 = (~(Losow6 & Nxrow6)); +assign Nxrow6 = (Jegow6 ? Gpsow6 : Zosow6); +assign Zosow6 = (!Npsow6); +assign Losow6 = (!Uxrow6); +assign Uxrow6 = (X8fow6 ? Bqsow6 : Upsow6); +assign X8fow6 = (!Cegow6); +assign Hmsow6 = (~(Tmrow6 & Jegow6)); +assign Yksow6 = (Cegow6 ? Pqsow6 : Iqsow6); +assign Cegow6 = (~(Wqsow6 & Drsow6)); +assign Drsow6 = (~(Krsow6 & Rrsow6)); +assign Rrsow6 = (~(Yrsow6 & Fssow6)); +assign Fssow6 = (~(Mssow6 & Iqsow6)); +assign Mssow6 = (~(Pqsow6 | Tssow6)); +assign Tssow6 = (~(Atsow6 | Upsow6)); +assign Yrsow6 = (~(Upsow6 & Atsow6)); +assign Atsow6 = (!Bqsow6); +assign Bqsow6 = (Odgow6 ? Otsow6 : Htsow6); +assign Upsow6 = (Jusow6 ? Cusow6 : Vtsow6); +assign Krsow6 = (Amsow6 | Vdgow6); +assign Wqsow6 = (Odgow6 | Qusow6); +assign Pqsow6 = (Jusow6 ? R4gpw6[54] : R4gpw6[52]); +assign Jusow6 = (!Vdgow6); +assign Vdgow6 = (Xusow6 & Vbgpw6[26]); +assign Xusow6 = (Odgpw6[26] & Evsow6); +assign Evsow6 = (~(Lvsow6 & Amsow6)); +assign Amsow6 = (Vbgpw6[27] & Odgpw6[27]); +assign Lvsow6 = (Svsow6 & Zvsow6); +assign Zvsow6 = (~(Gwsow6 & Nwsow6)); +assign Nwsow6 = (Vtsow6 | R4gpw6[55]); +assign Gwsow6 = (Uwsow6 | R4gpw6[54]); +assign Svsow6 = (Cusow6 | R4gpw6[53]); +assign Iqsow6 = (Odgow6 ? R4gpw6[48] : R4gpw6[50]); +assign Odgow6 = (Bxsow6 & Vbgpw6[24]); +assign Bxsow6 = (Odgpw6[24] & Ixsow6); +assign Ixsow6 = (~(Qusow6 & Pxsow6)); +assign Pxsow6 = (Wxsow6 & Dysow6); +assign Dysow6 = (~(Kysow6 & Rysow6)); +assign Rysow6 = (Otsow6 | R4gpw6[51]); +assign Kysow6 = (Yysow6 | R4gpw6[50]); +assign Wxsow6 = (Htsow6 | R4gpw6[49]); +assign Qusow6 = (Vbgpw6[25] & Odgpw6[25]); +assign Rksow6 = (~(Eosow6 & Sosow6)); +assign Sosow6 = (~(Fzsow6 & Jegow6)); +assign Eosow6 = (~(Mzsow6 & Tzsow6)); +assign Mzsow6 = (!Jegow6); +assign Jegow6 = (~(A0tow6 & H0tow6)); +assign H0tow6 = (Tmrow6 | O0tow6); +assign O0tow6 = (V0tow6 & C1tow6); +assign C1tow6 = (~(J1tow6 & Tzsow6)); +assign Tzsow6 = (Q1tow6 ? R4gpw6[58] : R4gpw6[56]); +assign J1tow6 = (~(Fzsow6 | X1tow6)); +assign X1tow6 = (~(Npsow6 | Gpsow6)); +assign Fzsow6 = (Mcgow6 ? R4gpw6[62] : R4gpw6[60]); +assign V0tow6 = (~(Gpsow6 & Npsow6)); +assign Npsow6 = (Qegow6 ? R4gpw6[57] : R4gpw6[59]); +assign Qegow6 = (!Q1tow6); +assign Gpsow6 = (Mcgow6 ? L2tow6 : E2tow6); +assign Tmrow6 = (Mcgow6 & S2tow6); +assign S2tow6 = (~(Vbgpw6[31] & Odgpw6[31])); +assign Mcgow6 = (~(Z2tow6 & Vbgpw6[30])); +assign Z2tow6 = (Odgpw6[30] & G3tow6); +assign G3tow6 = (~(N3tow6 & U3tow6)); +assign U3tow6 = (B4tow6 & I4tow6); +assign I4tow6 = (~(P4tow6 & W4tow6)); +assign W4tow6 = (E2tow6 | R4gpw6[63]); +assign P4tow6 = (~(R4gpw6[60] & D5tow6)); +assign D5tow6 = (!R4gpw6[62]); +assign B4tow6 = (L2tow6 | R4gpw6[61]); +assign L2tow6 = (!R4gpw6[63]); +assign N3tow6 = (Vbgpw6[31] & Odgpw6[31]); +assign A0tow6 = (~(Q1tow6 & K5tow6)); +assign K5tow6 = (~(Vbgpw6[29] & Odgpw6[29])); +assign Q1tow6 = (~(R5tow6 & Vbgpw6[28])); +assign R5tow6 = (Odgpw6[28] & Y5tow6); +assign Y5tow6 = (~(F6tow6 & Vbgpw6[29])); +assign F6tow6 = (Odgpw6[29] & M6tow6); +assign M6tow6 = (~(T6tow6 & A7tow6)); +assign A7tow6 = (~(H7tow6 & R4gpw6[56])); +assign H7tow6 = (~(O7tow6 | R4gpw6[58])); +assign O7tow6 = (~(V7tow6 | R4gpw6[57])); +assign T6tow6 = (~(R4gpw6[57] & V7tow6)); +assign Anrow6 = (~(C8tow6 & J8tow6)); +assign J8tow6 = (~(Z2fow6 & Q8tow6)); +assign Q8tow6 = (~(X8tow6 & E9tow6)); +assign Z2fow6 = (B4fow6 & I4fow6); +assign C8tow6 = (B4fow6 ? S9tow6 : L9tow6); +assign B4fow6 = (!Sfgow6); +assign Sfgow6 = (~(Z9tow6 & Gatow6)); +assign Gatow6 = (~(Dsrow6 & Natow6)); +assign Natow6 = (~(Uatow6 & Bbtow6)); +assign Bbtow6 = (~(Ibtow6 & Pbtow6)); +assign Pbtow6 = (Wbtow6 & Dctow6); +assign Wbtow6 = (Prrow6 | Irrow6); +assign Ibtow6 = (~(Kctow6 | Rctow6)); +assign Rctow6 = (Nggow6 & Yctow6); +assign Kctow6 = (Yigow6 ? Mdtow6 : Fdtow6); +assign Uatow6 = (~(Irrow6 & Prrow6)); +assign Prrow6 = (Nggow6 ? Aetow6 : Tdtow6); +assign Irrow6 = (Yigow6 ? Oetow6 : Hetow6); +assign Dsrow6 = (~(Vetow6 & Cftow6)); +assign Vetow6 = (~(Jftow6 | Nggow6)); +assign Z9tow6 = (~(Qftow6 & Xftow6)); +assign Qftow6 = (~(Egtow6 | Yigow6)); +assign Yigow6 = (!I4fow6); +assign S9tow6 = (I4fow6 | Mdtow6); +assign Mdtow6 = (!Lgtow6); +assign I4fow6 = (~(Sgtow6 & Zgtow6)); +assign Zgtow6 = (Ghtow6 | Nhtow6); +assign Ghtow6 = (P4fow6 | Mjgow6); +assign Sgtow6 = (~(Uhtow6 & Bitow6)); +assign Bitow6 = (~(Xftow6 & Iitow6)); +assign Iitow6 = (!Egtow6); +assign Xftow6 = (~(Pitow6 | Hkgow6)); +assign Uhtow6 = (~(Witow6 & Djtow6)); +assign Djtow6 = (~(Kjtow6 & Fdtow6)); +assign Fdtow6 = (X8tow6 & E9tow6); +assign E9tow6 = (~(Pitow6 & Rjtow6)); +assign X8tow6 = (~(Yjtow6 & G3fow6)); +assign Kjtow6 = (Lgtow6 & Fktow6); +assign Fktow6 = (Mktow6 | Oetow6); +assign Lgtow6 = (P4fow6 ? Altow6 : Tktow6); +assign P4fow6 = (!Tjgow6); +assign Altow6 = (Fjgow6 ? R4gpw6[0] : R4gpw6[2]); +assign Witow6 = (~(Oetow6 & Mktow6)); +assign Mktow6 = (!Hetow6); +assign Hetow6 = (Pitow6 ? Oltow6 : Hltow6); +assign Pitow6 = (!G3fow6); +assign G3fow6 = (~(Vltow6 & Cmtow6)); +assign Cmtow6 = (~(Jmtow6 & Qmtow6)); +assign Qmtow6 = (~(Xmtow6 & Entow6)); +assign Entow6 = (~(Lntow6 & Rjtow6)); +assign Rjtow6 = (Akgow6 ? R4gpw6[8] : R4gpw6[10]); +assign Lntow6 = (~(Yjtow6 | Sntow6)); +assign Sntow6 = (~(Zntow6 | Oltow6)); +assign Yjtow6 = (Hkgow6 ? R4gpw6[12] : R4gpw6[14]); +assign Xmtow6 = (~(Oltow6 & Zntow6)); +assign Jmtow6 = (Egtow6 | Hkgow6); +assign Vltow6 = (~(Gotow6 & Notow6)); +assign Notow6 = (~(Vbgpw6[5] & Odgpw6[5])); +assign Oltow6 = (Akgow6 ? R4gpw6[9] : R4gpw6[11]); +assign Akgow6 = (!Gotow6); +assign Gotow6 = (~(Uotow6 & Vbgpw6[4])); +assign Uotow6 = (Odgpw6[4] & Bptow6); +assign Bptow6 = (~(Iptow6 & Vbgpw6[5])); +assign Iptow6 = (Odgpw6[5] & Pptow6); +assign Pptow6 = (~(Wptow6 & Dqtow6)); +assign Dqtow6 = (~(Kqtow6 & R4gpw6[8])); +assign Kqtow6 = (~(Rqtow6 | R4gpw6[10])); +assign Rqtow6 = (~(Yqtow6 | R4gpw6[9])); +assign Wptow6 = (~(R4gpw6[9] & Yqtow6)); +assign Hltow6 = (!Zntow6); +assign Zntow6 = (Hkgow6 ? Mrtow6 : Frtow6); +assign Hkgow6 = (Trtow6 & Vbgpw6[6]); +assign Trtow6 = (Odgpw6[6] & Astow6); +assign Astow6 = (~(Hstow6 & Egtow6)); +assign Egtow6 = (Vbgpw6[7] & Odgpw6[7]); +assign Hstow6 = (Ostow6 & Vstow6); +assign Vstow6 = (~(Cttow6 & Jttow6)); +assign Jttow6 = (Mrtow6 | R4gpw6[15]); +assign Cttow6 = (~(R4gpw6[12] & Qttow6)); +assign Ostow6 = (Frtow6 | R4gpw6[13]); +assign Oetow6 = (Tjgow6 ? Eutow6 : Xttow6); +assign Tjgow6 = (~(Lutow6 & Sutow6)); +assign Sutow6 = (~(Zutow6 & Gvtow6)); +assign Gvtow6 = (~(Nvtow6 & Uvtow6)); +assign Uvtow6 = (~(Bwtow6 & Iwtow6)); +assign Iwtow6 = (Pwtow6 ? R4gpw6[2] : R4gpw6[0]); +assign Bwtow6 = (~(Tktow6 | Wwtow6)); +assign Wwtow6 = (~(Dxtow6 | Xttow6)); +assign Tktow6 = (Kxtow6 ? R4gpw6[6] : R4gpw6[4]); +assign Kxtow6 = (!Mjgow6); +assign Nvtow6 = (~(Xttow6 & Dxtow6)); +assign Zutow6 = (Nhtow6 | Mjgow6); +assign Lutow6 = (~(Pwtow6 & Rxtow6)); +assign Rxtow6 = (~(Vbgpw6[1] & Odgpw6[1])); +assign Eutow6 = (!Dxtow6); +assign Dxtow6 = (Mjgow6 ? Fytow6 : Yxtow6); +assign Mjgow6 = (Mytow6 & Vbgpw6[2]); +assign Mytow6 = (Odgpw6[2] & Tytow6); +assign Tytow6 = (~(Aztow6 & Nhtow6)); +assign Nhtow6 = (Vbgpw6[3] & Odgpw6[3]); +assign Aztow6 = (Hztow6 & Oztow6); +assign Oztow6 = (~(Vztow6 & C0uow6)); +assign C0uow6 = (Fytow6 | R4gpw6[7]); +assign Vztow6 = (J0uow6 | R4gpw6[6]); +assign Hztow6 = (Yxtow6 | R4gpw6[5]); +assign Xttow6 = (Fjgow6 ? R4gpw6[1] : R4gpw6[3]); +assign Fjgow6 = (!Pwtow6); +assign Pwtow6 = (~(Q0uow6 & Vbgpw6[0])); +assign Q0uow6 = (Odgpw6[0] & X0uow6); +assign X0uow6 = (~(E1uow6 & L1uow6)); +assign L1uow6 = (S1uow6 & Z1uow6); +assign Z1uow6 = (~(G2uow6 & N2uow6)); +assign N2uow6 = (U2uow6 | R4gpw6[3]); +assign G2uow6 = (B3uow6 | R4gpw6[2]); +assign S1uow6 = (~(R4gpw6[3] & U2uow6)); +assign E1uow6 = (Vbgpw6[1] & Odgpw6[1]); +assign L9tow6 = (I3uow6 & Dctow6); +assign Dctow6 = (~(K5fow6 & P3uow6)); +assign P3uow6 = (~(W3uow6 & D4uow6)); +assign I3uow6 = (~(Nggow6 & Yctow6)); +assign Nggow6 = (!K5fow6); +assign K5fow6 = (~(K4uow6 & R4uow6)); +assign R4uow6 = (Y4uow6 | F5uow6); +assign Y4uow6 = (W4fow6 | Bhgow6); +assign K4uow6 = (~(M5uow6 & T5uow6)); +assign T5uow6 = (~(Cftow6 & A6uow6)); +assign A6uow6 = (!Jftow6); +assign Cftow6 = (~(D5fow6 | Whgow6)); +assign M5uow6 = (~(H6uow6 & O6uow6)); +assign O6uow6 = (~(V6uow6 & C7uow6)); +assign C7uow6 = (J7uow6 & D4uow6); +assign D4uow6 = (~(D5fow6 & Q7uow6)); +assign D5fow6 = (!Digow6); +assign J7uow6 = (Tdtow6 | X7uow6); +assign V6uow6 = (Yctow6 & W3uow6); +assign W3uow6 = (~(E8uow6 & Digow6)); +assign Yctow6 = (W4fow6 ? S8uow6 : L8uow6); +assign S8uow6 = (Uggow6 ? R4gpw6[16] : R4gpw6[18]); +assign H6uow6 = (~(X7uow6 & Tdtow6)); +assign Tdtow6 = (Digow6 ? G9uow6 : Z8uow6); +assign Digow6 = (~(N9uow6 & U9uow6)); +assign U9uow6 = (~(Bauow6 & Iauow6)); +assign Iauow6 = (~(Pauow6 & Wauow6)); +assign Wauow6 = (~(Dbuow6 & Q7uow6)); +assign Q7uow6 = (Phgow6 ? R4gpw6[24] : R4gpw6[26]); +assign Dbuow6 = (~(E8uow6 | Kbuow6)); +assign Kbuow6 = (~(G9uow6 | Rbuow6)); +assign E8uow6 = (Whgow6 ? R4gpw6[28] : R4gpw6[30]); +assign Pauow6 = (~(Rbuow6 & G9uow6)); +assign Bauow6 = (Jftow6 | Whgow6); +assign N9uow6 = (~(Ybuow6 & Fcuow6)); +assign Fcuow6 = (~(Vbgpw6[13] & Odgpw6[13])); +assign G9uow6 = (Whgow6 ? Tcuow6 : Mcuow6); +assign Whgow6 = (Aduow6 & Vbgpw6[14]); +assign Aduow6 = (Odgpw6[14] & Hduow6); +assign Hduow6 = (~(Oduow6 & Jftow6)); +assign Jftow6 = (Vbgpw6[15] & Odgpw6[15]); +assign Oduow6 = (Vduow6 & Ceuow6); +assign Ceuow6 = (~(Jeuow6 & Qeuow6)); +assign Qeuow6 = (Tcuow6 | R4gpw6[31]); +assign Jeuow6 = (~(R4gpw6[28] & Xeuow6)); +assign Xeuow6 = (!R4gpw6[30]); +assign Vduow6 = (Mcuow6 | R4gpw6[29]); +assign Tcuow6 = (!R4gpw6[29]); +assign Z8uow6 = (!Rbuow6); +assign Rbuow6 = (Phgow6 ? R4gpw6[25] : R4gpw6[27]); +assign Phgow6 = (!Ybuow6); +assign Ybuow6 = (~(Efuow6 & Vbgpw6[12])); +assign Efuow6 = (Odgpw6[12] & Lfuow6); +assign Lfuow6 = (~(Sfuow6 & Vbgpw6[13])); +assign Sfuow6 = (Odgpw6[13] & Zfuow6); +assign Zfuow6 = (~(Gguow6 & Nguow6)); +assign Nguow6 = (~(Uguow6 & R4gpw6[24])); +assign Uguow6 = (~(Bhuow6 | R4gpw6[26])); +assign Bhuow6 = (~(Ihuow6 | R4gpw6[25])); +assign Gguow6 = (~(R4gpw6[25] & Ihuow6)); +assign X7uow6 = (!Aetow6); +assign Aetow6 = (W4fow6 ? Whuow6 : Phuow6); +assign W4fow6 = (!Ihgow6); +assign Ihgow6 = (~(Diuow6 & Kiuow6)); +assign Kiuow6 = (~(Riuow6 & Yiuow6)); +assign Yiuow6 = (~(Fjuow6 & Mjuow6)); +assign Mjuow6 = (~(Tjuow6 & Akuow6)); +assign Akuow6 = (Hkuow6 ? R4gpw6[18] : R4gpw6[16]); +assign Tjuow6 = (~(L8uow6 | Okuow6)); +assign Okuow6 = (~(Vkuow6 | Phuow6)); +assign L8uow6 = (Cluow6 ? R4gpw6[22] : R4gpw6[20]); +assign Fjuow6 = (~(Phuow6 & Vkuow6)); +assign Vkuow6 = (!Whuow6); +assign Riuow6 = (F5uow6 | Bhgow6); +assign Diuow6 = (~(Hkuow6 & Jluow6)); +assign Jluow6 = (~(Vbgpw6[9] & Odgpw6[9])); +assign Whuow6 = (Uggow6 ? Xluow6 : Qluow6); +assign Uggow6 = (!Hkuow6); +assign Hkuow6 = (~(Emuow6 & Vbgpw6[8])); +assign Emuow6 = (Odgpw6[8] & Lmuow6); +assign Lmuow6 = (~(Smuow6 & Zmuow6)); +assign Zmuow6 = (Gnuow6 & Nnuow6); +assign Nnuow6 = (~(Unuow6 & Bouow6)); +assign Bouow6 = (Xluow6 | R4gpw6[19]); +assign Unuow6 = (Iouow6 | R4gpw6[18]); +assign Gnuow6 = (Qluow6 | R4gpw6[17]); +assign Smuow6 = (Vbgpw6[9] & Odgpw6[9]); +assign Phuow6 = (Cluow6 ? Wouow6 : Pouow6); +assign Cluow6 = (!Bhgow6); +assign Bhgow6 = (Dpuow6 & Vbgpw6[10]); +assign Dpuow6 = (Odgpw6[10] & Kpuow6); +assign Kpuow6 = (~(Rpuow6 & F5uow6)); +assign F5uow6 = (Vbgpw6[11] & Odgpw6[11]); +assign Rpuow6 = (Ypuow6 & Fquow6); +assign Fquow6 = (~(Mquow6 & Tquow6)); +assign Tquow6 = (Pouow6 | R4gpw6[23]); +assign Mquow6 = (Aruow6 | R4gpw6[22]); +assign Ypuow6 = (Wouow6 | R4gpw6[21]); +assign Ffrow6 = (~(Qarow6 | Xglow6)); +assign Qarow6 = (~(Zlghu6 & Hruow6)); +assign Hruow6 = (~(Oruow6 & Vruow6)); +assign Vruow6 = (Csuow6 & Jhqiu6); +assign Jhqiu6 = (~(P9hhu6 & Jehhu6)); +assign Csuow6 = (~(Jsuow6 & Qsuow6)); +assign Qsuow6 = (F4oow6 | L1gpw6[1]); +assign Jsuow6 = (Xglow6 | L1gpw6[0]); +assign Oruow6 = (Ikghu6 & Xsuow6); +assign Xsuow6 = (~(L1gpw6[1] & F4oow6)); +assign F4oow6 = (!B3gpw6[1]); +assign K7row6 = (Cz8iu6 ? vis_primask_o : Oy8iu6); +assign Cz8iu6 = (Etuow6 & Ltuow6); +assign Ltuow6 = (~(Stuow6 & Ztuow6)); +assign Ztuow6 = (Cyfpw6[4] & Gmniu6); +assign Gmniu6 = (~(Guuow6 & Nuuow6)); +assign Nuuow6 = (Uuuow6 & Bvuow6); +assign Bvuow6 = (Ivuow6 | Yoniu6); +assign Yoniu6 = (Pvuow6 & Wvuow6); +assign Wvuow6 = (~(Dwuow6 & Kwuow6)); +assign Dwuow6 = (~(C0ehu6 | H4ghu6)); +assign Pvuow6 = (~(Glaiu6 | Rwuow6)); +assign Rwuow6 = (Ywuow6 & Fxuow6); +assign Fxuow6 = (~(Nlaiu6 | Hs0iu6)); +assign Ywuow6 = (Jf6ju6 & Imaiu6); +assign Uuuow6 = (Mxuow6 | Mpniu6); +assign Mpniu6 = (Txuow6 & Ayuow6); +assign Ayuow6 = (Hyuow6 & Xiaju6); +assign Xiaju6 = (Oyuow6 & W8oiu6); +assign Oyuow6 = (~(Vyuow6 & Ae0iu6)); +assign Vyuow6 = (U4kiu6 & Yljiu6); +assign Hyuow6 = (Czuow6 & Jzuow6); +assign Jzuow6 = (Z6oiu6 | E4jiu6); +assign Z6oiu6 = (!Fhaiu6); +assign Czuow6 = (~(Qzuow6 & Cyfpw6[7])); +assign Qzuow6 = (Cyfpw6[1] & Xzuow6); +assign Xzuow6 = (~(E0vow6 & Vwaiu6)); +assign E0vow6 = (Y7ghu6 | Cyfpw6[4]); +assign Txuow6 = (L0vow6 & S0vow6); +assign S0vow6 = (Cyfpw6[4] ? G1vow6 : Z0vow6); +assign G1vow6 = (Nlaiu6 | Mr0iu6); +assign Z0vow6 = (Qxaiu6 | Cyfpw6[6]); +assign L0vow6 = (N1vow6 & U1vow6); +assign U1vow6 = (~(Xe8iu6 & B2vow6)); +assign B2vow6 = (U4kiu6 | Vboiu6); +assign N1vow6 = (Yn2ju6 | Ii0iu6); +assign Guuow6 = (Utniu6 & I2vow6); +assign I2vow6 = (~(S8fpw6[9] & Wnniu6)); +assign Wnniu6 = (~(P2vow6 & W2vow6)); +assign W2vow6 = (~(Gz2ju6 | Iugiu6)); +assign Gz2ju6 = (~(X5oiu6 | Yn2ju6)); +assign Yn2ju6 = (!Pfoiu6); +assign X5oiu6 = (!F9aju6); +assign P2vow6 = (D3vow6 & K3vow6); +assign K3vow6 = (~(R3vow6 & Cyfpw6[4])); +assign R3vow6 = (~(Lkaiu6 | Tr0iu6)); +assign D3vow6 = (~(C0ehu6 & Y3vow6)); +assign Y3vow6 = (~(F4vow6 & M4vow6)); +assign M4vow6 = (G7oiu6 | Hs0iu6); +assign F4vow6 = (T4vow6 & Ekaiu6); +assign Ekaiu6 = (A4oiu6 | Cyfpw6[0]); +assign T4vow6 = (M32ju6 | Tfjiu6); +assign Utniu6 = (~(A5vow6 | Fq8iu6)); +assign A5vow6 = (~(Mzlow6 | C0ehu6)); +assign Etuow6 = (Vlliu6 & H5vow6); +assign H5vow6 = (~(O5vow6 & Jjoiu6)); +assign Jjoiu6 = (B5kiu6 & Qmliu6); +assign B5kiu6 = (!S8fpw6[2]); +assign O5vow6 = (~(Wofiu6 | Qjoiu6)); +assign Vlliu6 = (~(V5vow6 & S8fpw6[2])); +assign V5vow6 = (Qmliu6 & Wofiu6); +assign Oy8iu6 = (~(C6vow6 & J6vow6)); +assign J6vow6 = (~(Stuow6 & X3fpw6[1])); +assign Stuow6 = (~(M32ju6 | P1bow6)); +assign M32ju6 = (!W2aow6); +assign C6vow6 = (~(Qmliu6 & L35ju6)); +assign Qmliu6 = (~(Q6vow6 & X6vow6)); +assign X6vow6 = (~(E7vow6 & Obbow6)); +assign E7vow6 = (~(A4oiu6 | Cyfpw6[6])); +assign A4oiu6 = (!Pugiu6); +assign Q6vow6 = (Kgaiu6 | Ii0iu6); +assign Fmdhu6 = (RSTBYPASS ? PORESETn : Oodhu6); +assign TXEV = (L7vow6 & Iugiu6); +assign Iugiu6 = (S7vow6 & Vo3ju6); +assign S7vow6 = (~(Knaiu6 | Cyfpw6[6])); +assign L7vow6 = (Pt2ju6 & Cyfpw6[4]); +assign SWDO = (Ujyhu6 ? Hknhu6 : Tonhu6); +assign Ujyhu6 = (!Ighpw6[5]); +assign SPECHTRANS = (~(HMASTER & Z7vow6)); +assign Z7vow6 = (~(Krzhu6 & Ebxiu6)); +assign SLEEPDEEP = (SLEEPING & Ndghu6); +assign HWRITE = (!G8vow6); +assign G8vow6 = (Xg6iu6 ? Sq4iu6 : Ejpiu6); +assign Sq4iu6 = (Iqnhu6 & Iqzhu6); +assign Ejpiu6 = (N8vow6 & U8vow6); +assign U8vow6 = (B9vow6 & I9vow6); +assign I9vow6 = (~(Xzmiu6 & P9vow6)); +assign P9vow6 = (W9vow6 | Bi0iu6); +assign Bi0iu6 = (Wp0iu6 & Y7ghu6); +assign W9vow6 = (Kwuow6 & Wp0iu6); +assign Kwuow6 = (~(Qjaiu6 | Xkaow6)); +assign B9vow6 = (~(Us2ju6 & Davow6)); +assign Davow6 = (Kavow6 | Moaiu6); +assign Moaiu6 = (D6kiu6 & Y2oiu6); +assign Kavow6 = (Ravow6 & Ldoiu6); +assign Ravow6 = (~(P1bow6 | Sbghu6)); +assign Us2ju6 = (Cyfpw6[7] & Gwyiu6); +assign N8vow6 = (Lv7ow6 & Yavow6); +assign Lv7ow6 = (Fbvow6 & Oe8ow6); +assign Fbvow6 = (~(Mbvow6 & Ldoiu6)); +assign Mbvow6 = (Qe8iu6 & H4ghu6); +assign HWDATA[9] = (~(Tbvow6 & Acvow6)); +assign Tbvow6 = (Hcvow6 & Ocvow6); +assign Ocvow6 = (~(Ym4iu6 & R0nhu6)); +assign Ym4iu6 = (Shhpw6[9] & Iqzhu6); +assign Hcvow6 = (Vcvow6 | I28ju6); +assign HWDATA[8] = (~(Cdvow6 & Jdvow6)); +assign Cdvow6 = (Qdvow6 & Xdvow6); +assign Xdvow6 = (~(Pl4iu6 & R0nhu6)); +assign Pl4iu6 = (Shhpw6[8] & Iqzhu6); +assign Qdvow6 = (Vcvow6 | Cz7ju6); +assign HWDATA[7] = (~(Eevow6 & Levow6)); +assign Levow6 = (~(Gk4iu6 & R0nhu6)); +assign Gk4iu6 = (Shhpw6[7] & Iqzhu6); +assign Eevow6 = (~(Sevow6 & Uo6ju6)); +assign HWDATA[6] = (~(Zevow6 & Gfvow6)); +assign Gfvow6 = (~(Xi4iu6 & R0nhu6)); +assign Xi4iu6 = (Shhpw6[6] & Iqzhu6); +assign Zevow6 = (~(Sevow6 & Kj6ju6)); +assign HWDATA[5] = (~(Nfvow6 & Ufvow6)); +assign Ufvow6 = (~(Oh4iu6 & R0nhu6)); +assign Oh4iu6 = (Shhpw6[5] & Iqzhu6); +assign Nfvow6 = (~(Sevow6 & Eg6ju6)); +assign HWDATA[4] = (~(Bgvow6 & Igvow6)); +assign Igvow6 = (~(H34iu6 & R0nhu6)); +assign H34iu6 = (Shhpw6[4] & Iqzhu6); +assign Bgvow6 = (~(Sevow6 & Zw4ju6)); +assign HWDATA[3] = (~(Pgvow6 & Wgvow6)); +assign Wgvow6 = (~(Df4iu6 & R0nhu6)); +assign Df4iu6 = (Shhpw6[3] & Iqzhu6); +assign Pgvow6 = (~(Sevow6 & G36ju6)); +assign HWDATA[31] = (~(Dhvow6 & Khvow6)); +assign Khvow6 = (Rhvow6 & Yhvow6); +assign Yhvow6 = (~(Gdqow6 & Aioiu6)); +assign Aioiu6 = (~(Fivow6 & Mivow6)); +assign Mivow6 = (Tivow6 & Ajvow6); +assign Ajvow6 = (Hjvow6 & Ojvow6); +assign Ojvow6 = (~(vis_r11_o[31] & Ljqow6)); +assign Hjvow6 = (Vjvow6 & Ckvow6); +assign Ckvow6 = (~(vis_r9_o[31] & Qiqow6)); +assign Vjvow6 = (~(Fkfpw6[31] & Dfqow6)); +assign Tivow6 = (Jkvow6 & Qkvow6); +assign Qkvow6 = (~(vis_r10_o[31] & Sjqow6)); +assign Jkvow6 = (~(vis_psp_o[29] & Yfqow6)); +assign Fivow6 = (Xkvow6 & Elvow6); +assign Elvow6 = (Llvow6 & Slvow6); +assign Slvow6 = (~(vis_r12_o[31] & Hhqow6)); +assign Llvow6 = (Zlvow6 & Gmvow6); +assign Gmvow6 = (~(vis_msp_o[29] & Fgqow6)); +assign Zlvow6 = (~(vis_r14_o[31] & Ahqow6)); +assign Xkvow6 = (Bxzhu6 & Nmvow6); +assign Nmvow6 = (~(vis_r8_o[31] & Gkqow6)); +assign Bxzhu6 = (Umvow6 & Bnvow6); +assign Bnvow6 = (Invow6 & Pnvow6); +assign Pnvow6 = (Wnvow6 & Dovow6); +assign Dovow6 = (~(vis_r2_o[31] & Dmqow6)); +assign Wnvow6 = (~(vis_r6_o[31] & Kmqow6)); +assign Invow6 = (Kovow6 & Rovow6); +assign Rovow6 = (~(vis_r5_o[31] & Fnqow6)); +assign Kovow6 = (~(vis_r4_o[31] & Mnqow6)); +assign Umvow6 = (Yovow6 & Fpvow6); +assign Fpvow6 = (Mpvow6 & Tpvow6); +assign Tpvow6 = (~(vis_r1_o[31] & Voqow6)); +assign Mpvow6 = (~(vis_r0_o[31] & Cpqow6)); +assign Yovow6 = (Aqvow6 & Hqvow6); +assign Hqvow6 = (~(vis_r3_o[31] & Xpqow6)); +assign Aqvow6 = (~(vis_r7_o[31] & Eqqow6)); +assign Rhvow6 = (~(R0nhu6 & Lm1iu6)); +assign Lm1iu6 = (Shhpw6[31] & Iqzhu6); +assign Dhvow6 = (Oqvow6 & Vqvow6); +assign Vqvow6 = (~(K0row6 & W89ju6)); +assign HWDATA[30] = (~(Crvow6 & Jrvow6)); +assign Jrvow6 = (Qrvow6 & Xrvow6); +assign Xrvow6 = (~(Gdqow6 & T6liu6)); +assign T6liu6 = (~(Esvow6 & Lsvow6)); +assign Lsvow6 = (Ssvow6 & Zsvow6); +assign Zsvow6 = (Gtvow6 & Ntvow6); +assign Ntvow6 = (~(vis_r11_o[30] & Ljqow6)); +assign Gtvow6 = (Utvow6 & Buvow6); +assign Buvow6 = (~(vis_r10_o[30] & Sjqow6)); +assign Utvow6 = (~(vis_r9_o[30] & Qiqow6)); +assign Ssvow6 = (Iuvow6 & Puvow6); +assign Puvow6 = (~(Fkfpw6[30] & Dfqow6)); +assign Iuvow6 = (~(vis_r12_o[30] & Hhqow6)); +assign Esvow6 = (Wuvow6 & Dvvow6); +assign Dvvow6 = (Kvvow6 & Rvvow6); +assign Rvvow6 = (~(vis_r14_o[30] & Ahqow6)); +assign Kvvow6 = (Yvvow6 & Fwvow6); +assign Fwvow6 = (~(vis_psp_o[28] & Yfqow6)); +assign Yvvow6 = (~(vis_r8_o[30] & Gkqow6)); +assign Wuvow6 = (Ixzhu6 & Mwvow6); +assign Mwvow6 = (~(vis_msp_o[28] & Fgqow6)); +assign Ixzhu6 = (Twvow6 & Axvow6); +assign Axvow6 = (Hxvow6 & Oxvow6); +assign Oxvow6 = (Vxvow6 & Cyvow6); +assign Cyvow6 = (~(vis_r0_o[30] & Cpqow6)); +assign Vxvow6 = (~(vis_r2_o[30] & Dmqow6)); +assign Hxvow6 = (Jyvow6 & Qyvow6); +assign Qyvow6 = (~(vis_r5_o[30] & Fnqow6)); +assign Jyvow6 = (~(vis_r4_o[30] & Mnqow6)); +assign Twvow6 = (Xyvow6 & Ezvow6); +assign Ezvow6 = (Lzvow6 & Szvow6); +assign Szvow6 = (~(vis_r7_o[30] & Eqqow6)); +assign Lzvow6 = (~(vis_r3_o[30] & Xpqow6)); +assign Xyvow6 = (Zzvow6 & G0wow6); +assign G0wow6 = (~(vis_r1_o[30] & Voqow6)); +assign Zzvow6 = (~(vis_r6_o[30] & Kmqow6)); +assign Qrvow6 = (Naliu6 | Qaxiu6); +assign Naliu6 = (!T94iu6); +assign T94iu6 = (Shhpw6[30] & Iqzhu6); +assign Crvow6 = (N0wow6 & U0wow6); +assign U0wow6 = (~(K0row6 & T39ju6)); +assign HWDATA[2] = (~(B1wow6 & I1wow6)); +assign I1wow6 = (~(Ud4iu6 & R0nhu6)); +assign Ud4iu6 = (Shhpw6[2] & Iqzhu6); +assign B1wow6 = (~(Sevow6 & Ot5ju6)); +assign HWDATA[28] = (~(P1wow6 & W1wow6)); +assign W1wow6 = (D2wow6 & K2wow6); +assign K2wow6 = (~(Gdqow6 & Po7ju6)); +assign Po7ju6 = (~(R2wow6 & Y2wow6)); +assign Y2wow6 = (F3wow6 & M3wow6); +assign M3wow6 = (T3wow6 & A4wow6); +assign A4wow6 = (~(vis_r11_o[28] & Ljqow6)); +assign T3wow6 = (H4wow6 & O4wow6); +assign O4wow6 = (~(vis_r10_o[28] & Sjqow6)); +assign H4wow6 = (~(vis_r9_o[28] & Qiqow6)); +assign F3wow6 = (V4wow6 & C5wow6); +assign C5wow6 = (~(Fkfpw6[28] & Dfqow6)); +assign V4wow6 = (~(vis_r12_o[28] & Hhqow6)); +assign R2wow6 = (J5wow6 & Q5wow6); +assign Q5wow6 = (X5wow6 & E6wow6); +assign E6wow6 = (~(vis_r14_o[28] & Ahqow6)); +assign X5wow6 = (L6wow6 & S6wow6); +assign S6wow6 = (~(vis_psp_o[26] & Yfqow6)); +assign L6wow6 = (~(vis_r8_o[28] & Gkqow6)); +assign J5wow6 = (Dyzhu6 & Z6wow6); +assign Z6wow6 = (~(vis_msp_o[26] & Fgqow6)); +assign Dyzhu6 = (G7wow6 & N7wow6); +assign N7wow6 = (U7wow6 & B8wow6); +assign B8wow6 = (I8wow6 & P8wow6); +assign P8wow6 = (~(vis_r0_o[28] & Cpqow6)); +assign I8wow6 = (~(vis_r2_o[28] & Dmqow6)); +assign U7wow6 = (W8wow6 & D9wow6); +assign D9wow6 = (~(vis_r5_o[28] & Fnqow6)); +assign W8wow6 = (~(vis_r4_o[28] & Mnqow6)); +assign G7wow6 = (K9wow6 & R9wow6); +assign R9wow6 = (Y9wow6 & Fawow6); +assign Fawow6 = (~(vis_r7_o[28] & Eqqow6)); +assign Y9wow6 = (~(vis_r3_o[28] & Xpqow6)); +assign K9wow6 = (Mawow6 & Tawow6); +assign Tawow6 = (~(vis_r1_o[28] & Voqow6)); +assign Mawow6 = (~(vis_r6_o[28] & Kmqow6)); +assign D2wow6 = (Zeniu6 | Qaxiu6); +assign Zeniu6 = (!F94iu6); +assign F94iu6 = (Shhpw6[28] & Iqzhu6); +assign P1wow6 = (Abwow6 & Hbwow6); +assign Hbwow6 = (~(K0row6 & Rv8ju6)); +assign HWDATA[27] = (~(Obwow6 & Vbwow6)); +assign Vbwow6 = (Ccwow6 & Jcwow6); +assign Jcwow6 = (~(Gdqow6 & A67ju6)); +assign A67ju6 = (~(Qcwow6 & Xcwow6)); +assign Xcwow6 = (Edwow6 & Ldwow6); +assign Ldwow6 = (Sdwow6 & Zdwow6); +assign Zdwow6 = (~(Fkfpw6[27] & Dfqow6)); +assign Sdwow6 = (Gewow6 & Newow6); +assign Newow6 = (~(vis_psp_o[25] & Yfqow6)); +assign Gewow6 = (~(vis_msp_o[25] & Fgqow6)); +assign Edwow6 = (Uewow6 & Bfwow6); +assign Bfwow6 = (~(vis_r14_o[27] & Ahqow6)); +assign Uewow6 = (~(vis_r12_o[27] & Hhqow6)); +assign Qcwow6 = (Ifwow6 & Pfwow6); +assign Pfwow6 = (Wfwow6 & Dgwow6); +assign Dgwow6 = (~(vis_r9_o[27] & Qiqow6)); +assign Wfwow6 = (Kgwow6 & Rgwow6); +assign Rgwow6 = (~(vis_r11_o[27] & Ljqow6)); +assign Kgwow6 = (~(vis_r10_o[27] & Sjqow6)); +assign Ifwow6 = (Kyzhu6 & Ygwow6); +assign Ygwow6 = (~(vis_r8_o[27] & Gkqow6)); +assign Kyzhu6 = (Fhwow6 & Mhwow6); +assign Mhwow6 = (Thwow6 & Aiwow6); +assign Aiwow6 = (Hiwow6 & Oiwow6); +assign Oiwow6 = (~(vis_r2_o[27] & Dmqow6)); +assign Hiwow6 = (~(vis_r6_o[27] & Kmqow6)); +assign Thwow6 = (Viwow6 & Cjwow6); +assign Cjwow6 = (~(vis_r5_o[27] & Fnqow6)); +assign Viwow6 = (~(vis_r4_o[27] & Mnqow6)); +assign Fhwow6 = (Jjwow6 & Qjwow6); +assign Qjwow6 = (Xjwow6 & Ekwow6); +assign Ekwow6 = (~(vis_r1_o[27] & Voqow6)); +assign Xjwow6 = (~(vis_r0_o[27] & Cpqow6)); +assign Jjwow6 = (Lkwow6 & Skwow6); +assign Skwow6 = (~(vis_r3_o[27] & Xpqow6)); +assign Lkwow6 = (~(vis_r7_o[27] & Eqqow6)); +assign Ccwow6 = (U3liu6 | Qaxiu6); +assign U3liu6 = (!Y84iu6); +assign Y84iu6 = (Shhpw6[27] & Iqzhu6); +assign Obwow6 = (Zkwow6 & Glwow6); +assign Glwow6 = (~(K0row6 & In8ju6)); +assign K0row6 = (!Nlwow6); +assign HWDATA[26] = (~(Ulwow6 & Bmwow6)); +assign Bmwow6 = (Imwow6 & Pmwow6); +assign Pmwow6 = (~(Gdqow6 & Z17ju6)); +assign Z17ju6 = (~(Wmwow6 & Dnwow6)); +assign Dnwow6 = (Knwow6 & Rnwow6); +assign Rnwow6 = (Ynwow6 & Fowow6); +assign Fowow6 = (~(Fkfpw6[26] & Dfqow6)); +assign Ynwow6 = (Mowow6 & Towow6); +assign Towow6 = (~(vis_psp_o[24] & Yfqow6)); +assign Mowow6 = (~(vis_msp_o[24] & Fgqow6)); +assign Knwow6 = (Apwow6 & Hpwow6); +assign Hpwow6 = (~(vis_r14_o[26] & Ahqow6)); +assign Apwow6 = (~(vis_r12_o[26] & Hhqow6)); +assign Wmwow6 = (Opwow6 & Vpwow6); +assign Vpwow6 = (Cqwow6 & Jqwow6); +assign Jqwow6 = (~(vis_r9_o[26] & Qiqow6)); +assign Cqwow6 = (Qqwow6 & Xqwow6); +assign Xqwow6 = (~(vis_r11_o[26] & Ljqow6)); +assign Qqwow6 = (~(vis_r10_o[26] & Sjqow6)); +assign Opwow6 = (Ryzhu6 & Erwow6); +assign Erwow6 = (~(vis_r8_o[26] & Gkqow6)); +assign Ryzhu6 = (Lrwow6 & Srwow6); +assign Srwow6 = (Zrwow6 & Gswow6); +assign Gswow6 = (Nswow6 & Uswow6); +assign Uswow6 = (~(vis_r2_o[26] & Dmqow6)); +assign Nswow6 = (~(vis_r6_o[26] & Kmqow6)); +assign Zrwow6 = (Btwow6 & Itwow6); +assign Itwow6 = (~(vis_r5_o[26] & Fnqow6)); +assign Btwow6 = (~(vis_r4_o[26] & Mnqow6)); +assign Lrwow6 = (Ptwow6 & Wtwow6); +assign Wtwow6 = (Duwow6 & Kuwow6); +assign Kuwow6 = (~(vis_r1_o[26] & Voqow6)); +assign Duwow6 = (~(vis_r0_o[26] & Cpqow6)); +assign Ptwow6 = (Ruwow6 & Yuwow6); +assign Yuwow6 = (~(vis_r3_o[26] & Xpqow6)); +assign Ruwow6 = (~(vis_r7_o[26] & Eqqow6)); +assign Imwow6 = (C1liu6 | Qaxiu6); +assign C1liu6 = (!R84iu6); +assign R84iu6 = (Shhpw6[26] & Iqzhu6); +assign Ulwow6 = (Fvwow6 & Mvwow6); +assign Mvwow6 = (Nlwow6 | Ka8ju6); +assign HWDATA[25] = (~(Tvwow6 & Awwow6)); +assign Awwow6 = (Hwwow6 & Owwow6); +assign Owwow6 = (Nlwow6 | I28ju6); +assign I28ju6 = (Vwwow6 & Cxwow6); +assign Cxwow6 = (Jxwow6 & Qxwow6); +assign Qxwow6 = (Xxwow6 & Eywow6); +assign Eywow6 = (~(vis_r11_o[9] & Ljqow6)); +assign Xxwow6 = (Lywow6 & Sywow6); +assign Sywow6 = (~(vis_r10_o[9] & Sjqow6)); +assign Lywow6 = (~(vis_r9_o[9] & Qiqow6)); +assign Jxwow6 = (Zywow6 & Gzwow6); +assign Gzwow6 = (~(Fkfpw6[9] & Dfqow6)); +assign Zywow6 = (~(vis_r12_o[9] & Hhqow6)); +assign Vwwow6 = (Nzwow6 & Uzwow6); +assign Uzwow6 = (B0xow6 & I0xow6); +assign I0xow6 = (~(vis_r14_o[9] & Ahqow6)); +assign B0xow6 = (P0xow6 & W0xow6); +assign W0xow6 = (~(vis_psp_o[7] & Yfqow6)); +assign P0xow6 = (~(vis_r8_o[9] & Gkqow6)); +assign Nzwow6 = (Evzhu6 & D1xow6); +assign D1xow6 = (~(vis_msp_o[7] & Fgqow6)); +assign Evzhu6 = (K1xow6 & R1xow6); +assign R1xow6 = (Y1xow6 & F2xow6); +assign F2xow6 = (M2xow6 & T2xow6); +assign T2xow6 = (~(vis_r0_o[9] & Cpqow6)); +assign M2xow6 = (~(vis_r2_o[9] & Dmqow6)); +assign Y1xow6 = (A3xow6 & H3xow6); +assign H3xow6 = (~(vis_r5_o[9] & Fnqow6)); +assign A3xow6 = (~(vis_r4_o[9] & Mnqow6)); +assign K1xow6 = (O3xow6 & V3xow6); +assign V3xow6 = (C4xow6 & J4xow6); +assign J4xow6 = (~(vis_r7_o[9] & Eqqow6)); +assign C4xow6 = (~(vis_r3_o[9] & Xpqow6)); +assign O3xow6 = (Q4xow6 & X4xow6); +assign X4xow6 = (~(vis_r1_o[9] & Voqow6)); +assign Q4xow6 = (~(vis_r6_o[9] & Kmqow6)); +assign Hwwow6 = (~(Gdqow6 & Goliu6)); +assign Goliu6 = (~(E5xow6 & L5xow6)); +assign L5xow6 = (S5xow6 & Z5xow6); +assign Z5xow6 = (G6xow6 & N6xow6); +assign N6xow6 = (~(Fkfpw6[25] & Dfqow6)); +assign G6xow6 = (U6xow6 & B7xow6); +assign B7xow6 = (~(vis_psp_o[23] & Yfqow6)); +assign U6xow6 = (~(vis_msp_o[23] & Fgqow6)); +assign S5xow6 = (I7xow6 & P7xow6); +assign P7xow6 = (~(vis_r14_o[25] & Ahqow6)); +assign I7xow6 = (~(vis_r12_o[25] & Hhqow6)); +assign E5xow6 = (W7xow6 & D8xow6); +assign D8xow6 = (K8xow6 & R8xow6); +assign R8xow6 = (~(vis_r9_o[25] & Qiqow6)); +assign K8xow6 = (Y8xow6 & F9xow6); +assign F9xow6 = (~(vis_r11_o[25] & Ljqow6)); +assign Y8xow6 = (~(vis_r10_o[25] & Sjqow6)); +assign W7xow6 = (Yyzhu6 & M9xow6); +assign M9xow6 = (~(vis_r8_o[25] & Gkqow6)); +assign Yyzhu6 = (T9xow6 & Aaxow6); +assign Aaxow6 = (Haxow6 & Oaxow6); +assign Oaxow6 = (Vaxow6 & Cbxow6); +assign Cbxow6 = (~(vis_r2_o[25] & Dmqow6)); +assign Vaxow6 = (~(vis_r6_o[25] & Kmqow6)); +assign Haxow6 = (Jbxow6 & Qbxow6); +assign Qbxow6 = (~(vis_r5_o[25] & Fnqow6)); +assign Jbxow6 = (~(vis_r4_o[25] & Mnqow6)); +assign T9xow6 = (Xbxow6 & Ecxow6); +assign Ecxow6 = (Lcxow6 & Scxow6); +assign Scxow6 = (~(vis_r1_o[25] & Voqow6)); +assign Lcxow6 = (~(vis_r0_o[25] & Cpqow6)); +assign Xbxow6 = (Zcxow6 & Gdxow6); +assign Gdxow6 = (~(vis_r3_o[25] & Xpqow6)); +assign Zcxow6 = (~(vis_r7_o[25] & Eqqow6)); +assign Tvwow6 = (Acvow6 & Ndxow6); +assign Ndxow6 = (Asliu6 | Qaxiu6); +assign Asliu6 = (!K84iu6); +assign K84iu6 = (Shhpw6[25] & Iqzhu6); +assign Acvow6 = (~(Udxow6 & Znliu6)); +assign HWDATA[24] = (~(Bexow6 & Iexow6)); +assign Iexow6 = (Pexow6 & Wexow6); +assign Wexow6 = (Nlwow6 | Cz7ju6); +assign Cz7ju6 = (Dfxow6 & Kfxow6); +assign Kfxow6 = (Rfxow6 & Yfxow6); +assign Yfxow6 = (Fgxow6 & Mgxow6); +assign Mgxow6 = (~(vis_r11_o[8] & Ljqow6)); +assign Fgxow6 = (Tgxow6 & Ahxow6); +assign Ahxow6 = (~(vis_r9_o[8] & Qiqow6)); +assign Tgxow6 = (~(Fkfpw6[8] & Dfqow6)); +assign Rfxow6 = (Hhxow6 & Ohxow6); +assign Ohxow6 = (~(vis_r10_o[8] & Sjqow6)); +assign Hhxow6 = (~(vis_psp_o[6] & Yfqow6)); +assign Dfxow6 = (Vhxow6 & Cixow6); +assign Cixow6 = (Jixow6 & Qixow6); +assign Qixow6 = (~(vis_r12_o[8] & Hhqow6)); +assign Jixow6 = (Xixow6 & Ejxow6); +assign Ejxow6 = (~(vis_msp_o[6] & Fgqow6)); +assign Xixow6 = (~(vis_r14_o[8] & Ahqow6)); +assign Vhxow6 = (Lvzhu6 & Ljxow6); +assign Ljxow6 = (~(vis_r8_o[8] & Gkqow6)); +assign Lvzhu6 = (Sjxow6 & Zjxow6); +assign Zjxow6 = (Gkxow6 & Nkxow6); +assign Nkxow6 = (Ukxow6 & Blxow6); +assign Blxow6 = (~(vis_r2_o[8] & Dmqow6)); +assign Ukxow6 = (~(vis_r6_o[8] & Kmqow6)); +assign Gkxow6 = (Ilxow6 & Plxow6); +assign Plxow6 = (~(vis_r5_o[8] & Fnqow6)); +assign Ilxow6 = (~(vis_r4_o[8] & Mnqow6)); +assign Sjxow6 = (Wlxow6 & Dmxow6); +assign Dmxow6 = (Kmxow6 & Rmxow6); +assign Rmxow6 = (~(vis_r1_o[8] & Voqow6)); +assign Kmxow6 = (~(vis_r0_o[8] & Cpqow6)); +assign Wlxow6 = (Ymxow6 & Fnxow6); +assign Fnxow6 = (~(vis_r3_o[8] & Xpqow6)); +assign Ymxow6 = (~(vis_r7_o[8] & Eqqow6)); +assign Nlwow6 = (~(Mnxow6 & Sevow6)); +assign Pexow6 = (~(Gdqow6 & Fy6ju6)); +assign Fy6ju6 = (~(Tnxow6 & Aoxow6)); +assign Aoxow6 = (Hoxow6 & Ooxow6); +assign Ooxow6 = (Voxow6 & Cpxow6); +assign Cpxow6 = (~(Fkfpw6[24] & Dfqow6)); +assign Voxow6 = (Jpxow6 & Qpxow6); +assign Qpxow6 = (~(vis_psp_o[22] & Yfqow6)); +assign Jpxow6 = (~(vis_msp_o[22] & Fgqow6)); +assign Hoxow6 = (Xpxow6 & Eqxow6); +assign Eqxow6 = (~(vis_r14_o[24] & Ahqow6)); +assign Xpxow6 = (~(vis_r12_o[24] & Hhqow6)); +assign Tnxow6 = (Lqxow6 & Sqxow6); +assign Sqxow6 = (Zqxow6 & Grxow6); +assign Grxow6 = (~(vis_r9_o[24] & Qiqow6)); +assign Zqxow6 = (Nrxow6 & Urxow6); +assign Urxow6 = (~(vis_r11_o[24] & Ljqow6)); +assign Nrxow6 = (~(vis_r10_o[24] & Sjqow6)); +assign Lqxow6 = (Fzzhu6 & Bsxow6); +assign Bsxow6 = (~(vis_r8_o[24] & Gkqow6)); +assign Fzzhu6 = (Isxow6 & Psxow6); +assign Psxow6 = (Wsxow6 & Dtxow6); +assign Dtxow6 = (Ktxow6 & Rtxow6); +assign Rtxow6 = (~(vis_r2_o[24] & Dmqow6)); +assign Ktxow6 = (~(vis_r6_o[24] & Kmqow6)); +assign Wsxow6 = (Ytxow6 & Fuxow6); +assign Fuxow6 = (~(vis_r5_o[24] & Fnqow6)); +assign Ytxow6 = (~(vis_r4_o[24] & Mnqow6)); +assign Isxow6 = (Muxow6 & Tuxow6); +assign Tuxow6 = (Avxow6 & Hvxow6); +assign Hvxow6 = (~(vis_r1_o[24] & Voqow6)); +assign Avxow6 = (~(vis_r0_o[24] & Cpqow6)); +assign Muxow6 = (Ovxow6 & Vvxow6); +assign Vvxow6 = (~(vis_r3_o[24] & Xpqow6)); +assign Ovxow6 = (~(vis_r7_o[24] & Eqqow6)); +assign Bexow6 = (Jdvow6 & Cwxow6); +assign Cwxow6 = (Rykiu6 | Qaxiu6); +assign Rykiu6 = (!D84iu6); +assign D84iu6 = (Shhpw6[24] & Iqzhu6); +assign Jdvow6 = (~(Udxow6 & L35ju6)); +assign HWDATA[23] = (~(Jwxow6 & Qwxow6)); +assign Qwxow6 = (~(Lcqow6 & Uo6ju6)); +assign Jwxow6 = (Xwxow6 & Exxow6); +assign Exxow6 = (Ox9iu6 | Qaxiu6); +assign Ox9iu6 = (!W74iu6); +assign W74iu6 = (Shhpw6[23] & Iqzhu6); +assign Xwxow6 = (~(Gdqow6 & Xg5ju6)); +assign Xg5ju6 = (~(Lxxow6 & Sxxow6)); +assign Sxxow6 = (Zxxow6 & Gyxow6); +assign Gyxow6 = (Nyxow6 & Uyxow6); +assign Uyxow6 = (~(Fkfpw6[23] & Dfqow6)); +assign Nyxow6 = (Bzxow6 & Izxow6); +assign Izxow6 = (~(vis_psp_o[21] & Yfqow6)); +assign Bzxow6 = (~(vis_msp_o[21] & Fgqow6)); +assign Zxxow6 = (Pzxow6 & Wzxow6); +assign Wzxow6 = (~(vis_r14_o[23] & Ahqow6)); +assign Pzxow6 = (~(vis_r12_o[23] & Hhqow6)); +assign Lxxow6 = (D0yow6 & K0yow6); +assign K0yow6 = (R0yow6 & Y0yow6); +assign Y0yow6 = (~(vis_r9_o[23] & Qiqow6)); +assign R0yow6 = (F1yow6 & M1yow6); +assign M1yow6 = (~(vis_r11_o[23] & Ljqow6)); +assign F1yow6 = (~(vis_r10_o[23] & Sjqow6)); +assign D0yow6 = (Mzzhu6 & T1yow6); +assign T1yow6 = (~(vis_r8_o[23] & Gkqow6)); +assign Mzzhu6 = (A2yow6 & H2yow6); +assign H2yow6 = (O2yow6 & V2yow6); +assign V2yow6 = (C3yow6 & J3yow6); +assign J3yow6 = (~(vis_r2_o[23] & Dmqow6)); +assign C3yow6 = (~(vis_r6_o[23] & Kmqow6)); +assign O2yow6 = (Q3yow6 & X3yow6); +assign X3yow6 = (~(vis_r5_o[23] & Fnqow6)); +assign Q3yow6 = (~(vis_r4_o[23] & Mnqow6)); +assign A2yow6 = (E4yow6 & L4yow6); +assign L4yow6 = (S4yow6 & Z4yow6); +assign Z4yow6 = (~(vis_r1_o[23] & Voqow6)); +assign S4yow6 = (~(vis_r0_o[23] & Cpqow6)); +assign E4yow6 = (G5yow6 & N5yow6); +assign N5yow6 = (~(vis_r3_o[23] & Xpqow6)); +assign G5yow6 = (~(vis_r7_o[23] & Eqqow6)); +assign HWDATA[22] = (~(U5yow6 & B6yow6)); +assign B6yow6 = (~(Lcqow6 & Kj6ju6)); +assign U5yow6 = (I6yow6 & P6yow6); +assign P6yow6 = (~(P74iu6 & R0nhu6)); +assign P74iu6 = (Shhpw6[22] & Iqzhu6); +assign I6yow6 = (~(Gdqow6 & V3aju6)); +assign V3aju6 = (~(W6yow6 & D7yow6)); +assign D7yow6 = (K7yow6 & R7yow6); +assign R7yow6 = (Y7yow6 & F8yow6); +assign F8yow6 = (~(Fkfpw6[22] & Dfqow6)); +assign Y7yow6 = (M8yow6 & T8yow6); +assign T8yow6 = (~(vis_psp_o[20] & Yfqow6)); +assign M8yow6 = (~(vis_msp_o[20] & Fgqow6)); +assign K7yow6 = (A9yow6 & H9yow6); +assign H9yow6 = (~(vis_r14_o[22] & Ahqow6)); +assign A9yow6 = (~(vis_r12_o[22] & Hhqow6)); +assign W6yow6 = (O9yow6 & V9yow6); +assign V9yow6 = (Cayow6 & Jayow6); +assign Jayow6 = (~(vis_r9_o[22] & Qiqow6)); +assign Cayow6 = (Qayow6 & Xayow6); +assign Xayow6 = (~(vis_r11_o[22] & Ljqow6)); +assign Qayow6 = (~(vis_r10_o[22] & Sjqow6)); +assign O9yow6 = (Tzzhu6 & Ebyow6); +assign Ebyow6 = (~(vis_r8_o[22] & Gkqow6)); +assign Tzzhu6 = (Lbyow6 & Sbyow6); +assign Sbyow6 = (Zbyow6 & Gcyow6); +assign Gcyow6 = (Ncyow6 & Ucyow6); +assign Ucyow6 = (~(vis_r2_o[22] & Dmqow6)); +assign Ncyow6 = (~(vis_r6_o[22] & Kmqow6)); +assign Zbyow6 = (Bdyow6 & Idyow6); +assign Idyow6 = (~(vis_r5_o[22] & Fnqow6)); +assign Bdyow6 = (~(vis_r4_o[22] & Mnqow6)); +assign Lbyow6 = (Pdyow6 & Wdyow6); +assign Wdyow6 = (Deyow6 & Keyow6); +assign Keyow6 = (~(vis_r1_o[22] & Voqow6)); +assign Deyow6 = (~(vis_r0_o[22] & Cpqow6)); +assign Pdyow6 = (Reyow6 & Yeyow6); +assign Yeyow6 = (~(vis_r3_o[22] & Xpqow6)); +assign Reyow6 = (~(vis_r7_o[22] & Eqqow6)); +assign HWDATA[21] = (~(Ffyow6 & Mfyow6)); +assign Mfyow6 = (~(Lcqow6 & Eg6ju6)); +assign Ffyow6 = (Tfyow6 & Agyow6); +assign Agyow6 = (Yxliu6 | Qaxiu6); +assign Yxliu6 = (!I74iu6); +assign I74iu6 = (Shhpw6[21] & Iqzhu6); +assign Tfyow6 = (~(Gdqow6 & Xx9ju6)); +assign Xx9ju6 = (~(Hgyow6 & Ogyow6)); +assign Ogyow6 = (Vgyow6 & Chyow6); +assign Chyow6 = (Jhyow6 & Qhyow6); +assign Qhyow6 = (~(Fkfpw6[21] & Dfqow6)); +assign Jhyow6 = (Xhyow6 & Eiyow6); +assign Eiyow6 = (~(vis_psp_o[19] & Yfqow6)); +assign Xhyow6 = (~(vis_msp_o[19] & Fgqow6)); +assign Vgyow6 = (Liyow6 & Siyow6); +assign Siyow6 = (~(vis_r14_o[21] & Ahqow6)); +assign Liyow6 = (~(vis_r12_o[21] & Hhqow6)); +assign Hgyow6 = (Ziyow6 & Gjyow6); +assign Gjyow6 = (Njyow6 & Ujyow6); +assign Ujyow6 = (~(vis_r9_o[21] & Qiqow6)); +assign Njyow6 = (Bkyow6 & Ikyow6); +assign Ikyow6 = (~(vis_r11_o[21] & Ljqow6)); +assign Bkyow6 = (~(vis_r10_o[21] & Sjqow6)); +assign Ziyow6 = (A00iu6 & Pkyow6); +assign Pkyow6 = (~(vis_r8_o[21] & Gkqow6)); +assign A00iu6 = (Wkyow6 & Dlyow6); +assign Dlyow6 = (Klyow6 & Rlyow6); +assign Rlyow6 = (Ylyow6 & Fmyow6); +assign Fmyow6 = (~(vis_r2_o[21] & Dmqow6)); +assign Ylyow6 = (~(vis_r6_o[21] & Kmqow6)); +assign Klyow6 = (Mmyow6 & Tmyow6); +assign Tmyow6 = (~(vis_r5_o[21] & Fnqow6)); +assign Mmyow6 = (~(vis_r4_o[21] & Mnqow6)); +assign Wkyow6 = (Anyow6 & Hnyow6); +assign Hnyow6 = (Onyow6 & Vnyow6); +assign Vnyow6 = (~(vis_r1_o[21] & Voqow6)); +assign Onyow6 = (~(vis_r0_o[21] & Cpqow6)); +assign Anyow6 = (Coyow6 & Joyow6); +assign Joyow6 = (~(vis_r3_o[21] & Xpqow6)); +assign Coyow6 = (~(vis_r7_o[21] & Eqqow6)); +assign HWDATA[20] = (~(Qoyow6 & Xoyow6)); +assign Xoyow6 = (~(Lcqow6 & Zw4ju6)); +assign Qoyow6 = (Epyow6 & Lpyow6); +assign Lpyow6 = (~(B74iu6 & R0nhu6)); +assign B74iu6 = (Shhpw6[20] & Iqzhu6); +assign Epyow6 = (~(Gdqow6 & Wt9ju6)); +assign Wt9ju6 = (~(Spyow6 & Zpyow6)); +assign Zpyow6 = (Gqyow6 & Nqyow6); +assign Nqyow6 = (Uqyow6 & Bryow6); +assign Bryow6 = (~(Fkfpw6[20] & Dfqow6)); +assign Uqyow6 = (Iryow6 & Pryow6); +assign Pryow6 = (~(vis_psp_o[18] & Yfqow6)); +assign Iryow6 = (~(vis_msp_o[18] & Fgqow6)); +assign Gqyow6 = (Wryow6 & Dsyow6); +assign Dsyow6 = (~(vis_r14_o[20] & Ahqow6)); +assign Wryow6 = (~(vis_r12_o[20] & Hhqow6)); +assign Spyow6 = (Ksyow6 & Rsyow6); +assign Rsyow6 = (Ysyow6 & Ftyow6); +assign Ftyow6 = (~(vis_r9_o[20] & Qiqow6)); +assign Ysyow6 = (Mtyow6 & Ttyow6); +assign Ttyow6 = (~(vis_r11_o[20] & Ljqow6)); +assign Mtyow6 = (~(vis_r10_o[20] & Sjqow6)); +assign Ksyow6 = (H00iu6 & Auyow6); +assign Auyow6 = (~(vis_r8_o[20] & Gkqow6)); +assign H00iu6 = (Huyow6 & Ouyow6); +assign Ouyow6 = (Vuyow6 & Cvyow6); +assign Cvyow6 = (Jvyow6 & Qvyow6); +assign Qvyow6 = (~(vis_r2_o[20] & Dmqow6)); +assign Jvyow6 = (~(vis_r6_o[20] & Kmqow6)); +assign Vuyow6 = (Xvyow6 & Ewyow6); +assign Ewyow6 = (~(vis_r5_o[20] & Fnqow6)); +assign Xvyow6 = (~(vis_r4_o[20] & Mnqow6)); +assign Huyow6 = (Lwyow6 & Swyow6); +assign Swyow6 = (Zwyow6 & Gxyow6); +assign Gxyow6 = (~(vis_r1_o[20] & Voqow6)); +assign Zwyow6 = (~(vis_r0_o[20] & Cpqow6)); +assign Lwyow6 = (Nxyow6 & Uxyow6); +assign Uxyow6 = (~(vis_r3_o[20] & Xpqow6)); +assign Nxyow6 = (~(vis_r7_o[20] & Eqqow6)); +assign HWDATA[1] = (~(Byyow6 & Iyyow6)); +assign Iyyow6 = (A34iu6 | Qaxiu6); +assign A34iu6 = (!O34iu6); +assign O34iu6 = (Shhpw6[1] & Iqzhu6); +assign Byyow6 = (~(Sevow6 & Znliu6)); +assign HWDATA[19] = (~(Pyyow6 & Wyyow6)); +assign Wyyow6 = (~(Lcqow6 & G36ju6)); +assign Pyyow6 = (Dzyow6 & Kzyow6); +assign Kzyow6 = (~(U64iu6 & R0nhu6)); +assign U64iu6 = (Shhpw6[19] & Iqzhu6); +assign Dzyow6 = (~(Gdqow6 & Vp9ju6)); +assign Vp9ju6 = (~(Rzyow6 & Yzyow6)); +assign Yzyow6 = (F0zow6 & M0zow6); +assign M0zow6 = (T0zow6 & A1zow6); +assign A1zow6 = (~(Fkfpw6[19] & Dfqow6)); +assign T0zow6 = (H1zow6 & O1zow6); +assign O1zow6 = (~(vis_psp_o[17] & Yfqow6)); +assign H1zow6 = (~(vis_msp_o[17] & Fgqow6)); +assign F0zow6 = (V1zow6 & C2zow6); +assign C2zow6 = (~(vis_r14_o[19] & Ahqow6)); +assign V1zow6 = (~(vis_r12_o[19] & Hhqow6)); +assign Rzyow6 = (J2zow6 & Q2zow6); +assign Q2zow6 = (X2zow6 & E3zow6); +assign E3zow6 = (~(vis_r9_o[19] & Qiqow6)); +assign X2zow6 = (L3zow6 & S3zow6); +assign S3zow6 = (~(vis_r11_o[19] & Ljqow6)); +assign L3zow6 = (~(vis_r10_o[19] & Sjqow6)); +assign J2zow6 = (V00iu6 & Z3zow6); +assign Z3zow6 = (~(vis_r8_o[19] & Gkqow6)); +assign V00iu6 = (G4zow6 & N4zow6); +assign N4zow6 = (U4zow6 & B5zow6); +assign B5zow6 = (I5zow6 & P5zow6); +assign P5zow6 = (~(vis_r2_o[19] & Dmqow6)); +assign I5zow6 = (~(vis_r6_o[19] & Kmqow6)); +assign U4zow6 = (W5zow6 & D6zow6); +assign D6zow6 = (~(vis_r5_o[19] & Fnqow6)); +assign W5zow6 = (~(vis_r4_o[19] & Mnqow6)); +assign G4zow6 = (K6zow6 & R6zow6); +assign R6zow6 = (Y6zow6 & F7zow6); +assign F7zow6 = (~(vis_r1_o[19] & Voqow6)); +assign Y6zow6 = (~(vis_r0_o[19] & Cpqow6)); +assign K6zow6 = (M7zow6 & T7zow6); +assign T7zow6 = (~(vis_r3_o[19] & Xpqow6)); +assign M7zow6 = (~(vis_r7_o[19] & Eqqow6)); +assign HWDATA[18] = (~(A8zow6 & H8zow6)); +assign H8zow6 = (~(Lcqow6 & Ot5ju6)); +assign A8zow6 = (O8zow6 & V8zow6); +assign V8zow6 = (~(N64iu6 & R0nhu6)); +assign N64iu6 = (Shhpw6[18] & Iqzhu6); +assign O8zow6 = (~(Gdqow6 & Gl9ju6)); +assign Gl9ju6 = (~(C9zow6 & J9zow6)); +assign J9zow6 = (Q9zow6 & X9zow6); +assign X9zow6 = (Eazow6 & Lazow6); +assign Lazow6 = (~(Fkfpw6[18] & Dfqow6)); +assign Eazow6 = (Sazow6 & Zazow6); +assign Zazow6 = (~(vis_psp_o[16] & Yfqow6)); +assign Sazow6 = (~(vis_msp_o[16] & Fgqow6)); +assign Q9zow6 = (Gbzow6 & Nbzow6); +assign Nbzow6 = (~(vis_r14_o[18] & Ahqow6)); +assign Gbzow6 = (~(vis_r12_o[18] & Hhqow6)); +assign C9zow6 = (Ubzow6 & Bczow6); +assign Bczow6 = (Iczow6 & Pczow6); +assign Pczow6 = (~(vis_r9_o[18] & Qiqow6)); +assign Iczow6 = (Wczow6 & Ddzow6); +assign Ddzow6 = (~(vis_r11_o[18] & Ljqow6)); +assign Wczow6 = (~(vis_r10_o[18] & Sjqow6)); +assign Ubzow6 = (C10iu6 & Kdzow6); +assign Kdzow6 = (~(vis_r8_o[18] & Gkqow6)); +assign C10iu6 = (Rdzow6 & Ydzow6); +assign Ydzow6 = (Fezow6 & Mezow6); +assign Mezow6 = (Tezow6 & Afzow6); +assign Afzow6 = (~(vis_r2_o[18] & Dmqow6)); +assign Tezow6 = (~(vis_r6_o[18] & Kmqow6)); +assign Fezow6 = (Hfzow6 & Ofzow6); +assign Ofzow6 = (~(vis_r5_o[18] & Fnqow6)); +assign Hfzow6 = (~(vis_r4_o[18] & Mnqow6)); +assign Rdzow6 = (Vfzow6 & Cgzow6); +assign Cgzow6 = (Jgzow6 & Qgzow6); +assign Qgzow6 = (~(vis_r1_o[18] & Voqow6)); +assign Jgzow6 = (~(vis_r0_o[18] & Cpqow6)); +assign Vfzow6 = (Xgzow6 & Ehzow6); +assign Ehzow6 = (~(vis_r3_o[18] & Xpqow6)); +assign Xgzow6 = (~(vis_r7_o[18] & Eqqow6)); +assign HWDATA[17] = (~(Lhzow6 & Shzow6)); +assign Shzow6 = (~(Lcqow6 & Znliu6)); +assign Znliu6 = (~(Zhzow6 & Gizow6)); +assign Gizow6 = (Nizow6 & Uizow6); +assign Uizow6 = (Bjzow6 & Ijzow6); +assign Ijzow6 = (~(Fkfpw6[1] & Dfqow6)); +assign Bjzow6 = (~(vis_r14_o[1] & Ahqow6)); +assign Nizow6 = (Pjzow6 & Wjzow6); +assign Wjzow6 = (~(vis_r12_o[1] & Hhqow6)); +assign Pjzow6 = (~(vis_r11_o[1] & Ljqow6)); +assign Zhzow6 = (Dkzow6 & Kkzow6); +assign Kkzow6 = (Rkzow6 & Ykzow6); +assign Ykzow6 = (~(vis_r10_o[1] & Sjqow6)); +assign Rkzow6 = (~(vis_r9_o[1] & Qiqow6)); +assign Dkzow6 = (O00iu6 & Flzow6); +assign Flzow6 = (~(vis_r8_o[1] & Gkqow6)); +assign O00iu6 = (Mlzow6 & Tlzow6); +assign Tlzow6 = (Amzow6 & Hmzow6); +assign Hmzow6 = (Omzow6 & Vmzow6); +assign Vmzow6 = (~(vis_r0_o[1] & Cpqow6)); +assign Omzow6 = (~(vis_r2_o[1] & Dmqow6)); +assign Amzow6 = (Cnzow6 & Jnzow6); +assign Jnzow6 = (~(vis_r5_o[1] & Fnqow6)); +assign Cnzow6 = (~(vis_r4_o[1] & Mnqow6)); +assign Mlzow6 = (Qnzow6 & Xnzow6); +assign Xnzow6 = (Eozow6 & Lozow6); +assign Lozow6 = (~(vis_r7_o[1] & Eqqow6)); +assign Eozow6 = (~(vis_r3_o[1] & Xpqow6)); +assign Qnzow6 = (Sozow6 & Zozow6); +assign Zozow6 = (~(vis_r1_o[1] & Voqow6)); +assign Sozow6 = (~(vis_r6_o[1] & Kmqow6)); +assign Lcqow6 = (Gpzow6 & Qaxiu6); +assign Gpzow6 = (~(L3ehu6 & X71iu6)); +assign Lhzow6 = (Npzow6 & Upzow6); +assign Upzow6 = (~(Gdqow6 & Fh9ju6)); +assign Fh9ju6 = (~(Bqzow6 & Iqzow6)); +assign Iqzow6 = (Pqzow6 & Wqzow6); +assign Wqzow6 = (Drzow6 & Krzow6); +assign Krzow6 = (~(Fkfpw6[17] & Dfqow6)); +assign Drzow6 = (Rrzow6 & Yrzow6); +assign Yrzow6 = (~(vis_psp_o[15] & Yfqow6)); +assign Rrzow6 = (~(vis_msp_o[15] & Fgqow6)); +assign Pqzow6 = (Fszow6 & Mszow6); +assign Mszow6 = (~(vis_r14_o[17] & Ahqow6)); +assign Fszow6 = (~(vis_r12_o[17] & Hhqow6)); +assign Bqzow6 = (Tszow6 & Atzow6); +assign Atzow6 = (Htzow6 & Otzow6); +assign Otzow6 = (~(vis_r9_o[17] & Qiqow6)); +assign Htzow6 = (Vtzow6 & Cuzow6); +assign Cuzow6 = (~(vis_r11_o[17] & Ljqow6)); +assign Vtzow6 = (~(vis_r10_o[17] & Sjqow6)); +assign Tszow6 = (J10iu6 & Juzow6); +assign Juzow6 = (~(vis_r8_o[17] & Gkqow6)); +assign J10iu6 = (Quzow6 & Xuzow6); +assign Xuzow6 = (Evzow6 & Lvzow6); +assign Lvzow6 = (Svzow6 & Zvzow6); +assign Zvzow6 = (~(vis_r2_o[17] & Dmqow6)); +assign Svzow6 = (~(vis_r6_o[17] & Kmqow6)); +assign Evzow6 = (Gwzow6 & Nwzow6); +assign Nwzow6 = (~(vis_r5_o[17] & Fnqow6)); +assign Gwzow6 = (~(vis_r4_o[17] & Mnqow6)); +assign Quzow6 = (Uwzow6 & Bxzow6); +assign Bxzow6 = (Ixzow6 & Pxzow6); +assign Pxzow6 = (~(vis_r1_o[17] & Voqow6)); +assign Ixzow6 = (~(vis_r0_o[17] & Cpqow6)); +assign Uwzow6 = (Wxzow6 & Dyzow6); +assign Dyzow6 = (~(vis_r3_o[17] & Xpqow6)); +assign Wxzow6 = (~(vis_r7_o[17] & Eqqow6)); +assign Gdqow6 = (Sevow6 & X71iu6); +assign Npzow6 = (~(G64iu6 & R0nhu6)); +assign G64iu6 = (Shhpw6[17] & Iqzhu6); +assign HWDATA[15] = (~(Kyzow6 & Ryzow6)); +assign Ryzow6 = (~(Yyzow6 & W89ju6)); +assign W89ju6 = (~(Fzzow6 & Mzzow6)); +assign Mzzow6 = (Tzzow6 & A00pw6); +assign A00pw6 = (H00pw6 & O00pw6); +assign O00pw6 = (~(Fkfpw6[15] & Dfqow6)); +assign H00pw6 = (V00pw6 & C10pw6); +assign C10pw6 = (~(vis_psp_o[13] & Yfqow6)); +assign V00pw6 = (~(vis_msp_o[13] & Fgqow6)); +assign Tzzow6 = (J10pw6 & Q10pw6); +assign Q10pw6 = (~(vis_r14_o[15] & Ahqow6)); +assign J10pw6 = (~(vis_r12_o[15] & Hhqow6)); +assign Fzzow6 = (X10pw6 & E20pw6); +assign E20pw6 = (L20pw6 & S20pw6); +assign S20pw6 = (~(vis_r9_o[15] & Qiqow6)); +assign L20pw6 = (Z20pw6 & G30pw6); +assign G30pw6 = (~(vis_r11_o[15] & Ljqow6)); +assign Z20pw6 = (~(vis_r10_o[15] & Sjqow6)); +assign X10pw6 = (X10iu6 & N30pw6); +assign N30pw6 = (~(vis_r8_o[15] & Gkqow6)); +assign X10iu6 = (U30pw6 & B40pw6); +assign B40pw6 = (I40pw6 & P40pw6); +assign P40pw6 = (W40pw6 & D50pw6); +assign D50pw6 = (~(vis_r2_o[15] & Dmqow6)); +assign W40pw6 = (~(vis_r6_o[15] & Kmqow6)); +assign I40pw6 = (K50pw6 & R50pw6); +assign R50pw6 = (~(vis_r5_o[15] & Fnqow6)); +assign K50pw6 = (~(vis_r4_o[15] & Mnqow6)); +assign U30pw6 = (Y50pw6 & F60pw6); +assign F60pw6 = (M60pw6 & T60pw6); +assign T60pw6 = (~(vis_r1_o[15] & Voqow6)); +assign M60pw6 = (~(vis_r0_o[15] & Cpqow6)); +assign Y50pw6 = (A70pw6 & H70pw6); +assign H70pw6 = (~(vis_r3_o[15] & Xpqow6)); +assign A70pw6 = (~(vis_r7_o[15] & Eqqow6)); +assign Kyzow6 = (O70pw6 & Oqvow6); +assign Oqvow6 = (~(Udxow6 & Uo6ju6)); +assign Uo6ju6 = (~(V70pw6 & C80pw6)); +assign C80pw6 = (J80pw6 & Q80pw6); +assign Q80pw6 = (X80pw6 & E90pw6); +assign E90pw6 = (~(Fkfpw6[7] & Dfqow6)); +assign X80pw6 = (L90pw6 & S90pw6); +assign S90pw6 = (~(vis_psp_o[5] & Yfqow6)); +assign L90pw6 = (~(vis_msp_o[5] & Fgqow6)); +assign J80pw6 = (Z90pw6 & Ga0pw6); +assign Ga0pw6 = (~(vis_r14_o[7] & Ahqow6)); +assign Z90pw6 = (~(vis_r12_o[7] & Hhqow6)); +assign V70pw6 = (Na0pw6 & Ua0pw6); +assign Ua0pw6 = (Bb0pw6 & Ib0pw6); +assign Ib0pw6 = (~(vis_r9_o[7] & Qiqow6)); +assign Bb0pw6 = (Pb0pw6 & Wb0pw6); +assign Wb0pw6 = (~(vis_r11_o[7] & Ljqow6)); +assign Pb0pw6 = (~(vis_r10_o[7] & Sjqow6)); +assign Na0pw6 = (Svzhu6 & Dc0pw6); +assign Dc0pw6 = (~(vis_r8_o[7] & Gkqow6)); +assign Svzhu6 = (Kc0pw6 & Rc0pw6); +assign Rc0pw6 = (Yc0pw6 & Fd0pw6); +assign Fd0pw6 = (Md0pw6 & Td0pw6); +assign Td0pw6 = (~(vis_r0_o[7] & Cpqow6)); +assign Md0pw6 = (~(vis_r2_o[7] & Dmqow6)); +assign Yc0pw6 = (Ae0pw6 & He0pw6); +assign He0pw6 = (~(vis_r5_o[7] & Fnqow6)); +assign Ae0pw6 = (~(vis_r4_o[7] & Mnqow6)); +assign Kc0pw6 = (Oe0pw6 & Ve0pw6); +assign Ve0pw6 = (Cf0pw6 & Jf0pw6); +assign Jf0pw6 = (~(vis_r7_o[7] & Eqqow6)); +assign Cf0pw6 = (~(vis_r3_o[7] & Xpqow6)); +assign Oe0pw6 = (Qf0pw6 & Xf0pw6); +assign Xf0pw6 = (~(vis_r1_o[7] & Voqow6)); +assign Qf0pw6 = (~(vis_r6_o[7] & Kmqow6)); +assign O70pw6 = (~(S54iu6 & R0nhu6)); +assign S54iu6 = (Shhpw6[15] & Iqzhu6); +assign HWDATA[14] = (~(Eg0pw6 & Lg0pw6)); +assign Lg0pw6 = (~(Yyzow6 & T39ju6)); +assign T39ju6 = (~(Sg0pw6 & Zg0pw6)); +assign Zg0pw6 = (Gh0pw6 & Nh0pw6); +assign Nh0pw6 = (Uh0pw6 & Bi0pw6); +assign Bi0pw6 = (~(vis_r11_o[14] & Ljqow6)); +assign Uh0pw6 = (Ii0pw6 & Pi0pw6); +assign Pi0pw6 = (~(vis_r9_o[14] & Qiqow6)); +assign Ii0pw6 = (~(Fkfpw6[14] & Dfqow6)); +assign Gh0pw6 = (Wi0pw6 & Dj0pw6); +assign Dj0pw6 = (~(vis_r10_o[14] & Sjqow6)); +assign Wi0pw6 = (~(vis_psp_o[12] & Yfqow6)); +assign Sg0pw6 = (Kj0pw6 & Rj0pw6); +assign Rj0pw6 = (Yj0pw6 & Fk0pw6); +assign Fk0pw6 = (~(vis_r12_o[14] & Hhqow6)); +assign Yj0pw6 = (Mk0pw6 & Tk0pw6); +assign Tk0pw6 = (~(vis_msp_o[12] & Fgqow6)); +assign Mk0pw6 = (~(vis_r14_o[14] & Ahqow6)); +assign Kj0pw6 = (E20iu6 & Al0pw6); +assign Al0pw6 = (~(vis_r8_o[14] & Gkqow6)); +assign E20iu6 = (Hl0pw6 & Ol0pw6); +assign Ol0pw6 = (Vl0pw6 & Cm0pw6); +assign Cm0pw6 = (Jm0pw6 & Qm0pw6); +assign Qm0pw6 = (~(vis_r2_o[14] & Dmqow6)); +assign Jm0pw6 = (~(vis_r6_o[14] & Kmqow6)); +assign Vl0pw6 = (Xm0pw6 & En0pw6); +assign En0pw6 = (~(vis_r5_o[14] & Fnqow6)); +assign Xm0pw6 = (~(vis_r4_o[14] & Mnqow6)); +assign Hl0pw6 = (Ln0pw6 & Sn0pw6); +assign Sn0pw6 = (Zn0pw6 & Go0pw6); +assign Go0pw6 = (~(vis_r1_o[14] & Voqow6)); +assign Zn0pw6 = (~(vis_r0_o[14] & Cpqow6)); +assign Ln0pw6 = (No0pw6 & Uo0pw6); +assign Uo0pw6 = (~(vis_r3_o[14] & Xpqow6)); +assign No0pw6 = (~(vis_r7_o[14] & Eqqow6)); +assign Eg0pw6 = (Bp0pw6 & N0wow6); +assign N0wow6 = (~(Udxow6 & Kj6ju6)); +assign Kj6ju6 = (~(Ip0pw6 & Pp0pw6)); +assign Pp0pw6 = (Wp0pw6 & Dq0pw6); +assign Dq0pw6 = (Kq0pw6 & Rq0pw6); +assign Rq0pw6 = (~(Fkfpw6[6] & Dfqow6)); +assign Kq0pw6 = (Yq0pw6 & Fr0pw6); +assign Fr0pw6 = (~(vis_psp_o[4] & Yfqow6)); +assign Yq0pw6 = (~(vis_msp_o[4] & Fgqow6)); +assign Wp0pw6 = (Mr0pw6 & Tr0pw6); +assign Tr0pw6 = (~(vis_r14_o[6] & Ahqow6)); +assign Mr0pw6 = (~(vis_r12_o[6] & Hhqow6)); +assign Ip0pw6 = (As0pw6 & Hs0pw6); +assign Hs0pw6 = (Os0pw6 & Vs0pw6); +assign Vs0pw6 = (~(vis_r9_o[6] & Qiqow6)); +assign Os0pw6 = (Ct0pw6 & Jt0pw6); +assign Jt0pw6 = (~(vis_r11_o[6] & Ljqow6)); +assign Ct0pw6 = (~(vis_r10_o[6] & Sjqow6)); +assign As0pw6 = (Zvzhu6 & Qt0pw6); +assign Qt0pw6 = (~(vis_r8_o[6] & Gkqow6)); +assign Zvzhu6 = (Xt0pw6 & Eu0pw6); +assign Eu0pw6 = (Lu0pw6 & Su0pw6); +assign Su0pw6 = (Zu0pw6 & Gv0pw6); +assign Gv0pw6 = (~(vis_r0_o[6] & Cpqow6)); +assign Zu0pw6 = (~(vis_r2_o[6] & Dmqow6)); +assign Lu0pw6 = (Nv0pw6 & Uv0pw6); +assign Uv0pw6 = (~(vis_r5_o[6] & Fnqow6)); +assign Nv0pw6 = (~(vis_r4_o[6] & Mnqow6)); +assign Xt0pw6 = (Bw0pw6 & Iw0pw6); +assign Iw0pw6 = (Pw0pw6 & Ww0pw6); +assign Ww0pw6 = (~(vis_r7_o[6] & Eqqow6)); +assign Pw0pw6 = (~(vis_r3_o[6] & Xpqow6)); +assign Bw0pw6 = (Dx0pw6 & Kx0pw6); +assign Kx0pw6 = (~(vis_r1_o[6] & Voqow6)); +assign Dx0pw6 = (~(vis_r6_o[6] & Kmqow6)); +assign Bp0pw6 = (~(L54iu6 & R0nhu6)); +assign L54iu6 = (Shhpw6[14] & Iqzhu6); +assign HWDATA[13] = (~(Rx0pw6 & Yx0pw6)); +assign Yx0pw6 = (~(Yyzow6 & Sz8ju6)); +assign Sz8ju6 = (~(Fy0pw6 & My0pw6)); +assign My0pw6 = (Ty0pw6 & Az0pw6); +assign Az0pw6 = (Hz0pw6 & Oz0pw6); +assign Oz0pw6 = (~(Fkfpw6[13] & Dfqow6)); +assign Hz0pw6 = (Vz0pw6 & C01pw6); +assign C01pw6 = (~(vis_psp_o[11] & Yfqow6)); +assign Vz0pw6 = (~(vis_msp_o[11] & Fgqow6)); +assign Ty0pw6 = (J01pw6 & Q01pw6); +assign Q01pw6 = (~(vis_r14_o[13] & Ahqow6)); +assign J01pw6 = (~(vis_r12_o[13] & Hhqow6)); +assign Fy0pw6 = (X01pw6 & E11pw6); +assign E11pw6 = (L11pw6 & S11pw6); +assign S11pw6 = (~(vis_r9_o[13] & Qiqow6)); +assign L11pw6 = (Z11pw6 & G21pw6); +assign G21pw6 = (~(vis_r11_o[13] & Ljqow6)); +assign Z11pw6 = (~(vis_r10_o[13] & Sjqow6)); +assign X01pw6 = (L20iu6 & N21pw6); +assign N21pw6 = (~(vis_r8_o[13] & Gkqow6)); +assign L20iu6 = (U21pw6 & B31pw6); +assign B31pw6 = (I31pw6 & P31pw6); +assign P31pw6 = (W31pw6 & D41pw6); +assign D41pw6 = (~(vis_r2_o[13] & Dmqow6)); +assign W31pw6 = (~(vis_r6_o[13] & Kmqow6)); +assign I31pw6 = (K41pw6 & R41pw6); +assign R41pw6 = (~(vis_r5_o[13] & Fnqow6)); +assign K41pw6 = (~(vis_r4_o[13] & Mnqow6)); +assign U21pw6 = (Y41pw6 & F51pw6); +assign F51pw6 = (M51pw6 & T51pw6); +assign T51pw6 = (~(vis_r1_o[13] & Voqow6)); +assign M51pw6 = (~(vis_r0_o[13] & Cpqow6)); +assign Y41pw6 = (A61pw6 & H61pw6); +assign H61pw6 = (~(vis_r3_o[13] & Xpqow6)); +assign A61pw6 = (~(vis_r7_o[13] & Eqqow6)); +assign Rx0pw6 = (O61pw6 & Zqqow6); +assign Zqqow6 = (~(Udxow6 & Eg6ju6)); +assign Eg6ju6 = (~(V61pw6 & C71pw6)); +assign C71pw6 = (J71pw6 & Q71pw6); +assign Q71pw6 = (X71pw6 & E81pw6); +assign E81pw6 = (~(Fkfpw6[5] & Dfqow6)); +assign X71pw6 = (L81pw6 & S81pw6); +assign S81pw6 = (~(vis_psp_o[3] & Yfqow6)); +assign L81pw6 = (~(vis_msp_o[3] & Fgqow6)); +assign J71pw6 = (Z81pw6 & G91pw6); +assign G91pw6 = (~(vis_r14_o[5] & Ahqow6)); +assign Z81pw6 = (~(vis_r12_o[5] & Hhqow6)); +assign V61pw6 = (N91pw6 & U91pw6); +assign U91pw6 = (Ba1pw6 & Ia1pw6); +assign Ia1pw6 = (~(vis_r9_o[5] & Qiqow6)); +assign Ba1pw6 = (Pa1pw6 & Wa1pw6); +assign Wa1pw6 = (~(vis_r11_o[5] & Ljqow6)); +assign Pa1pw6 = (~(vis_r10_o[5] & Sjqow6)); +assign N91pw6 = (Gwzhu6 & Db1pw6); +assign Db1pw6 = (~(vis_r8_o[5] & Gkqow6)); +assign Gwzhu6 = (Kb1pw6 & Rb1pw6); +assign Rb1pw6 = (Yb1pw6 & Fc1pw6); +assign Fc1pw6 = (Mc1pw6 & Tc1pw6); +assign Tc1pw6 = (~(vis_r0_o[5] & Cpqow6)); +assign Mc1pw6 = (~(vis_r2_o[5] & Dmqow6)); +assign Yb1pw6 = (Ad1pw6 & Hd1pw6); +assign Hd1pw6 = (~(vis_r5_o[5] & Fnqow6)); +assign Ad1pw6 = (~(vis_r4_o[5] & Mnqow6)); +assign Kb1pw6 = (Od1pw6 & Vd1pw6); +assign Vd1pw6 = (Ce1pw6 & Je1pw6); +assign Je1pw6 = (~(vis_r7_o[5] & Eqqow6)); +assign Ce1pw6 = (~(vis_r3_o[5] & Xpqow6)); +assign Od1pw6 = (Qe1pw6 & Xe1pw6); +assign Xe1pw6 = (~(vis_r1_o[5] & Voqow6)); +assign Qe1pw6 = (~(vis_r6_o[5] & Kmqow6)); +assign O61pw6 = (~(E54iu6 & R0nhu6)); +assign E54iu6 = (Shhpw6[13] & Iqzhu6); +assign HWDATA[12] = (~(Ef1pw6 & Lf1pw6)); +assign Lf1pw6 = (~(Yyzow6 & Rv8ju6)); +assign Rv8ju6 = (~(Sf1pw6 & Zf1pw6)); +assign Zf1pw6 = (Gg1pw6 & Ng1pw6); +assign Ng1pw6 = (Ug1pw6 & Bh1pw6); +assign Bh1pw6 = (~(vis_r11_o[12] & Ljqow6)); +assign Ug1pw6 = (Ih1pw6 & Ph1pw6); +assign Ph1pw6 = (~(vis_r10_o[12] & Sjqow6)); +assign Ih1pw6 = (~(vis_r9_o[12] & Qiqow6)); +assign Gg1pw6 = (Wh1pw6 & Di1pw6); +assign Di1pw6 = (~(Fkfpw6[12] & Dfqow6)); +assign Wh1pw6 = (~(vis_r12_o[12] & Hhqow6)); +assign Sf1pw6 = (Ki1pw6 & Ri1pw6); +assign Ri1pw6 = (Yi1pw6 & Fj1pw6); +assign Fj1pw6 = (~(vis_r14_o[12] & Ahqow6)); +assign Yi1pw6 = (Mj1pw6 & Tj1pw6); +assign Tj1pw6 = (~(vis_psp_o[10] & Yfqow6)); +assign Mj1pw6 = (~(vis_r8_o[12] & Gkqow6)); +assign Ki1pw6 = (S20iu6 & Ak1pw6); +assign Ak1pw6 = (~(vis_msp_o[10] & Fgqow6)); +assign S20iu6 = (Hk1pw6 & Ok1pw6); +assign Ok1pw6 = (Vk1pw6 & Cl1pw6); +assign Cl1pw6 = (Jl1pw6 & Ql1pw6); +assign Ql1pw6 = (~(vis_r0_o[12] & Cpqow6)); +assign Jl1pw6 = (~(vis_r2_o[12] & Dmqow6)); +assign Vk1pw6 = (Xl1pw6 & Em1pw6); +assign Em1pw6 = (~(vis_r5_o[12] & Fnqow6)); +assign Xl1pw6 = (~(vis_r4_o[12] & Mnqow6)); +assign Hk1pw6 = (Lm1pw6 & Sm1pw6); +assign Sm1pw6 = (Zm1pw6 & Gn1pw6); +assign Gn1pw6 = (~(vis_r7_o[12] & Eqqow6)); +assign Zm1pw6 = (~(vis_r3_o[12] & Xpqow6)); +assign Lm1pw6 = (Nn1pw6 & Un1pw6); +assign Un1pw6 = (~(vis_r1_o[12] & Voqow6)); +assign Nn1pw6 = (~(vis_r6_o[12] & Kmqow6)); +assign Ef1pw6 = (Bo1pw6 & Abwow6); +assign Abwow6 = (~(Udxow6 & Zw4ju6)); +assign Zw4ju6 = (~(Io1pw6 & Po1pw6)); +assign Po1pw6 = (Wo1pw6 & Dp1pw6); +assign Dp1pw6 = (Kp1pw6 & Rp1pw6); +assign Rp1pw6 = (~(Fkfpw6[4] & Dfqow6)); +assign Kp1pw6 = (Yp1pw6 & Fq1pw6); +assign Fq1pw6 = (~(vis_psp_o[2] & Yfqow6)); +assign Yp1pw6 = (~(vis_msp_o[2] & Fgqow6)); +assign Wo1pw6 = (Mq1pw6 & Tq1pw6); +assign Tq1pw6 = (~(vis_r14_o[4] & Ahqow6)); +assign Mq1pw6 = (~(vis_r12_o[4] & Hhqow6)); +assign Io1pw6 = (Ar1pw6 & Hr1pw6); +assign Hr1pw6 = (Or1pw6 & Vr1pw6); +assign Vr1pw6 = (~(vis_r9_o[4] & Qiqow6)); +assign Or1pw6 = (Cs1pw6 & Js1pw6); +assign Js1pw6 = (~(vis_r11_o[4] & Ljqow6)); +assign Cs1pw6 = (~(vis_r10_o[4] & Sjqow6)); +assign Ar1pw6 = (Nwzhu6 & Qs1pw6); +assign Qs1pw6 = (~(vis_r8_o[4] & Gkqow6)); +assign Nwzhu6 = (Xs1pw6 & Et1pw6); +assign Et1pw6 = (Lt1pw6 & St1pw6); +assign St1pw6 = (Zt1pw6 & Gu1pw6); +assign Gu1pw6 = (~(vis_r0_o[4] & Cpqow6)); +assign Zt1pw6 = (~(vis_r2_o[4] & Dmqow6)); +assign Lt1pw6 = (Nu1pw6 & Uu1pw6); +assign Uu1pw6 = (~(vis_r5_o[4] & Fnqow6)); +assign Nu1pw6 = (~(vis_r4_o[4] & Mnqow6)); +assign Xs1pw6 = (Bv1pw6 & Iv1pw6); +assign Iv1pw6 = (Pv1pw6 & Wv1pw6); +assign Wv1pw6 = (~(vis_r7_o[4] & Eqqow6)); +assign Pv1pw6 = (~(vis_r3_o[4] & Xpqow6)); +assign Bv1pw6 = (Dw1pw6 & Kw1pw6); +assign Kw1pw6 = (~(vis_r1_o[4] & Voqow6)); +assign Dw1pw6 = (~(vis_r6_o[4] & Kmqow6)); +assign Bo1pw6 = (~(X44iu6 & R0nhu6)); +assign X44iu6 = (Shhpw6[12] & Iqzhu6); +assign HWDATA[11] = (~(Rw1pw6 & Yw1pw6)); +assign Yw1pw6 = (~(Yyzow6 & In8ju6)); +assign In8ju6 = (~(Fx1pw6 & Mx1pw6)); +assign Mx1pw6 = (Tx1pw6 & Ay1pw6); +assign Ay1pw6 = (Hy1pw6 & Oy1pw6); +assign Oy1pw6 = (~(vis_r11_o[11] & Ljqow6)); +assign Hy1pw6 = (Vy1pw6 & Cz1pw6); +assign Cz1pw6 = (~(vis_r9_o[11] & Qiqow6)); +assign Vy1pw6 = (~(Fkfpw6[11] & Dfqow6)); +assign Tx1pw6 = (Jz1pw6 & Qz1pw6); +assign Qz1pw6 = (~(vis_r10_o[11] & Sjqow6)); +assign Jz1pw6 = (~(vis_psp_o[9] & Yfqow6)); +assign Fx1pw6 = (Xz1pw6 & E02pw6); +assign E02pw6 = (L02pw6 & S02pw6); +assign S02pw6 = (~(vis_r12_o[11] & Hhqow6)); +assign L02pw6 = (Z02pw6 & G12pw6); +assign G12pw6 = (~(vis_msp_o[9] & Fgqow6)); +assign Z02pw6 = (~(vis_r14_o[11] & Ahqow6)); +assign Xz1pw6 = (Z20iu6 & N12pw6); +assign N12pw6 = (~(vis_r8_o[11] & Gkqow6)); +assign Z20iu6 = (U12pw6 & B22pw6); +assign B22pw6 = (I22pw6 & P22pw6); +assign P22pw6 = (W22pw6 & D32pw6); +assign D32pw6 = (~(vis_r2_o[11] & Dmqow6)); +assign W22pw6 = (~(vis_r6_o[11] & Kmqow6)); +assign I22pw6 = (K32pw6 & R32pw6); +assign R32pw6 = (~(vis_r5_o[11] & Fnqow6)); +assign K32pw6 = (~(vis_r4_o[11] & Mnqow6)); +assign U12pw6 = (Y32pw6 & F42pw6); +assign F42pw6 = (M42pw6 & T42pw6); +assign T42pw6 = (~(vis_r1_o[11] & Voqow6)); +assign M42pw6 = (~(vis_r0_o[11] & Cpqow6)); +assign Y32pw6 = (A52pw6 & H52pw6); +assign H52pw6 = (~(vis_r3_o[11] & Xpqow6)); +assign A52pw6 = (~(vis_r7_o[11] & Eqqow6)); +assign Rw1pw6 = (O52pw6 & Zkwow6); +assign Zkwow6 = (~(Udxow6 & G36ju6)); +assign G36ju6 = (~(V52pw6 & C62pw6)); +assign C62pw6 = (J62pw6 & Q62pw6); +assign Q62pw6 = (X62pw6 & E72pw6); +assign E72pw6 = (~(Fkfpw6[3] & Dfqow6)); +assign X62pw6 = (L72pw6 & S72pw6); +assign S72pw6 = (~(vis_psp_o[1] & Yfqow6)); +assign L72pw6 = (~(vis_msp_o[1] & Fgqow6)); +assign J62pw6 = (Z72pw6 & G82pw6); +assign G82pw6 = (~(vis_r14_o[3] & Ahqow6)); +assign Z72pw6 = (~(vis_r12_o[3] & Hhqow6)); +assign V52pw6 = (N82pw6 & U82pw6); +assign U82pw6 = (B92pw6 & I92pw6); +assign I92pw6 = (~(vis_r9_o[3] & Qiqow6)); +assign B92pw6 = (P92pw6 & W92pw6); +assign W92pw6 = (~(vis_r11_o[3] & Ljqow6)); +assign P92pw6 = (~(vis_r10_o[3] & Sjqow6)); +assign N82pw6 = (Uwzhu6 & Da2pw6); +assign Da2pw6 = (~(vis_r8_o[3] & Gkqow6)); +assign Uwzhu6 = (Ka2pw6 & Ra2pw6); +assign Ra2pw6 = (Ya2pw6 & Fb2pw6); +assign Fb2pw6 = (Mb2pw6 & Tb2pw6); +assign Tb2pw6 = (~(vis_r0_o[3] & Cpqow6)); +assign Mb2pw6 = (~(vis_r2_o[3] & Dmqow6)); +assign Ya2pw6 = (Ac2pw6 & Hc2pw6); +assign Hc2pw6 = (~(vis_r5_o[3] & Fnqow6)); +assign Ac2pw6 = (~(vis_r4_o[3] & Mnqow6)); +assign Ka2pw6 = (Oc2pw6 & Vc2pw6); +assign Vc2pw6 = (Cd2pw6 & Jd2pw6); +assign Jd2pw6 = (~(vis_r7_o[3] & Eqqow6)); +assign Cd2pw6 = (~(vis_r3_o[3] & Xpqow6)); +assign Oc2pw6 = (Qd2pw6 & Xd2pw6); +assign Xd2pw6 = (~(vis_r1_o[3] & Voqow6)); +assign Qd2pw6 = (~(vis_r6_o[3] & Kmqow6)); +assign O52pw6 = (~(Q44iu6 & R0nhu6)); +assign Q44iu6 = (Shhpw6[11] & Iqzhu6); +assign HWDATA[10] = (~(Ee2pw6 & Le2pw6)); +assign Le2pw6 = (Vcvow6 | Ka8ju6); +assign Ka8ju6 = (Se2pw6 & Ze2pw6); +assign Ze2pw6 = (Gf2pw6 & Nf2pw6); +assign Nf2pw6 = (Uf2pw6 & Bg2pw6); +assign Bg2pw6 = (~(vis_r11_o[10] & Ljqow6)); +assign Uf2pw6 = (Ig2pw6 & Pg2pw6); +assign Pg2pw6 = (~(vis_r9_o[10] & Qiqow6)); +assign Ig2pw6 = (~(Fkfpw6[10] & Dfqow6)); +assign Gf2pw6 = (Wg2pw6 & Dh2pw6); +assign Dh2pw6 = (~(vis_r10_o[10] & Sjqow6)); +assign Wg2pw6 = (~(vis_psp_o[8] & Yfqow6)); +assign Se2pw6 = (Kh2pw6 & Rh2pw6); +assign Rh2pw6 = (Yh2pw6 & Fi2pw6); +assign Fi2pw6 = (~(vis_r12_o[10] & Hhqow6)); +assign Yh2pw6 = (Mi2pw6 & Ti2pw6); +assign Ti2pw6 = (~(vis_msp_o[8] & Fgqow6)); +assign Mi2pw6 = (~(vis_r14_o[10] & Ahqow6)); +assign Kh2pw6 = (G30iu6 & Aj2pw6); +assign Aj2pw6 = (~(vis_r8_o[10] & Gkqow6)); +assign G30iu6 = (Hj2pw6 & Oj2pw6); +assign Oj2pw6 = (Vj2pw6 & Ck2pw6); +assign Ck2pw6 = (Jk2pw6 & Qk2pw6); +assign Qk2pw6 = (~(vis_r2_o[10] & Dmqow6)); +assign Jk2pw6 = (~(vis_r6_o[10] & Kmqow6)); +assign Vj2pw6 = (Xk2pw6 & El2pw6); +assign El2pw6 = (~(vis_r5_o[10] & Fnqow6)); +assign Xk2pw6 = (~(vis_r4_o[10] & Mnqow6)); +assign Hj2pw6 = (Ll2pw6 & Sl2pw6); +assign Sl2pw6 = (Zl2pw6 & Gm2pw6); +assign Gm2pw6 = (~(vis_r1_o[10] & Voqow6)); +assign Zl2pw6 = (~(vis_r0_o[10] & Cpqow6)); +assign Ll2pw6 = (Nm2pw6 & Um2pw6); +assign Um2pw6 = (~(vis_r3_o[10] & Xpqow6)); +assign Nm2pw6 = (~(vis_r7_o[10] & Eqqow6)); +assign Vcvow6 = (!Yyzow6); +assign Yyzow6 = (Qaxiu6 & Bn2pw6); +assign Bn2pw6 = (~(J71iu6 & L3ehu6)); +assign Ee2pw6 = (In2pw6 & Fvwow6); +assign Fvwow6 = (~(Udxow6 & Ot5ju6)); +assign Ot5ju6 = (~(Pn2pw6 & Wn2pw6)); +assign Wn2pw6 = (Do2pw6 & Ko2pw6); +assign Ko2pw6 = (Ro2pw6 & Yo2pw6); +assign Yo2pw6 = (~(Fkfpw6[2] & Dfqow6)); +assign Ro2pw6 = (Fp2pw6 & Mp2pw6); +assign Mp2pw6 = (~(vis_psp_o[0] & Yfqow6)); +assign Yfqow6 = (Tp2pw6 & Vrfhu6); +assign Tp2pw6 = (Aq2pw6 & Hq2pw6); +assign Fp2pw6 = (~(vis_msp_o[0] & Fgqow6)); +assign Fgqow6 = (Oq2pw6 & Aq2pw6); +assign Oq2pw6 = (Hq2pw6 & Vq2pw6); +assign Do2pw6 = (Cr2pw6 & Jr2pw6); +assign Jr2pw6 = (~(vis_r14_o[2] & Ahqow6)); +assign Cr2pw6 = (~(vis_r12_o[2] & Hhqow6)); +assign Pn2pw6 = (Qr2pw6 & Xr2pw6); +assign Xr2pw6 = (Es2pw6 & Ls2pw6); +assign Ls2pw6 = (~(vis_r9_o[2] & Qiqow6)); +assign Es2pw6 = (Ss2pw6 & Zs2pw6); +assign Zs2pw6 = (~(vis_r11_o[2] & Ljqow6)); +assign Ss2pw6 = (~(vis_r10_o[2] & Sjqow6)); +assign Qr2pw6 = (Pxzhu6 & Gt2pw6); +assign Gt2pw6 = (~(vis_r8_o[2] & Gkqow6)); +assign Pxzhu6 = (Nt2pw6 & Ut2pw6); +assign Ut2pw6 = (Bu2pw6 & Iu2pw6); +assign Iu2pw6 = (Pu2pw6 & Wu2pw6); +assign Wu2pw6 = (~(vis_r0_o[2] & Cpqow6)); +assign Pu2pw6 = (~(vis_r2_o[2] & Dmqow6)); +assign Bu2pw6 = (Dv2pw6 & Kv2pw6); +assign Kv2pw6 = (~(vis_r5_o[2] & Fnqow6)); +assign Dv2pw6 = (~(vis_r4_o[2] & Mnqow6)); +assign Nt2pw6 = (Rv2pw6 & Yv2pw6); +assign Yv2pw6 = (Fw2pw6 & Mw2pw6); +assign Mw2pw6 = (~(vis_r7_o[2] & Eqqow6)); +assign Fw2pw6 = (~(vis_r3_o[2] & Xpqow6)); +assign Rv2pw6 = (Tw2pw6 & Ax2pw6); +assign Ax2pw6 = (~(vis_r1_o[2] & Voqow6)); +assign Tw2pw6 = (~(vis_r6_o[2] & Kmqow6)); +assign Udxow6 = (J71iu6 & Sevow6); +assign In2pw6 = (~(J44iu6 & R0nhu6)); +assign J44iu6 = (Shhpw6[10] & Iqzhu6); +assign HWDATA[0] = (~(Hx2pw6 & Ox2pw6)); +assign Ox2pw6 = (~(Sevow6 & L35ju6)); +assign L35ju6 = (~(Vx2pw6 & Cy2pw6)); +assign Cy2pw6 = (Jy2pw6 & Qy2pw6); +assign Qy2pw6 = (Xy2pw6 & Ez2pw6); +assign Ez2pw6 = (~(Fkfpw6[0] & Dfqow6)); +assign Dfqow6 = (Lz2pw6 & Aq2pw6); +assign Xy2pw6 = (~(vis_r14_o[0] & Ahqow6)); +assign Ahqow6 = (Sz2pw6 & Aq2pw6); +assign Jy2pw6 = (Zz2pw6 & G03pw6); +assign G03pw6 = (~(vis_r12_o[0] & Hhqow6)); +assign Hhqow6 = (Aq2pw6 & N03pw6); +assign Aq2pw6 = (~(Ntniu6 | Roniu6)); +assign Zz2pw6 = (~(vis_r11_o[0] & Ljqow6)); +assign Ljqow6 = (Lz2pw6 & U03pw6); +assign Lz2pw6 = (~(Qrniu6 | Ivuow6)); +assign Vx2pw6 = (B13pw6 & I13pw6); +assign I13pw6 = (P13pw6 & W13pw6); +assign W13pw6 = (~(vis_r10_o[0] & Sjqow6)); +assign Sjqow6 = (Sz2pw6 & U03pw6); +assign Sz2pw6 = (~(Ivuow6 | X3fpw6[0])); +assign P13pw6 = (~(vis_r9_o[0] & Qiqow6)); +assign Qiqow6 = (U03pw6 & Hq2pw6); +assign B13pw6 = (N30iu6 & D23pw6); +assign D23pw6 = (~(vis_r8_o[0] & Gkqow6)); +assign Gkqow6 = (U03pw6 & N03pw6); +assign U03pw6 = (~(Ntniu6 | X3fpw6[2])); +assign Ntniu6 = (!X3fpw6[3]); +assign N30iu6 = (K23pw6 & R23pw6); +assign R23pw6 = (Y23pw6 & F33pw6); +assign F33pw6 = (M33pw6 & T33pw6); +assign T33pw6 = (~(vis_r0_o[0] & Cpqow6)); +assign Cpqow6 = (A43pw6 & N03pw6); +assign M33pw6 = (~(vis_r2_o[0] & Dmqow6)); +assign Dmqow6 = (H43pw6 & O43pw6); +assign H43pw6 = (~(X3fpw6[0] | X3fpw6[2])); +assign Y23pw6 = (V43pw6 & C53pw6); +assign C53pw6 = (~(vis_r5_o[0] & Fnqow6)); +assign Fnqow6 = (J53pw6 & Hq2pw6); +assign V43pw6 = (~(vis_r4_o[0] & Mnqow6)); +assign Mnqow6 = (J53pw6 & N03pw6); +assign N03pw6 = (~(X3fpw6[0] | X3fpw6[1])); +assign J53pw6 = (~(Roniu6 | X3fpw6[3])); +assign K23pw6 = (Q53pw6 & X53pw6); +assign X53pw6 = (E63pw6 & L63pw6); +assign L63pw6 = (~(vis_r7_o[0] & Eqqow6)); +assign Eqqow6 = (S63pw6 & X3fpw6[0]); +assign S63pw6 = (X3fpw6[2] & O43pw6); +assign E63pw6 = (~(vis_r3_o[0] & Xpqow6)); +assign Xpqow6 = (Z63pw6 & X3fpw6[0]); +assign Z63pw6 = (O43pw6 & Roniu6); +assign Roniu6 = (!X3fpw6[2]); +assign Q53pw6 = (G73pw6 & N73pw6); +assign N73pw6 = (~(vis_r1_o[0] & Voqow6)); +assign Voqow6 = (A43pw6 & Hq2pw6); +assign Hq2pw6 = (~(Qrniu6 | X3fpw6[1])); +assign A43pw6 = (~(X3fpw6[2] | X3fpw6[3])); +assign G73pw6 = (~(vis_r6_o[0] & Kmqow6)); +assign Kmqow6 = (U73pw6 & X3fpw6[2]); +assign U73pw6 = (O43pw6 & Qrniu6); +assign Qrniu6 = (!X3fpw6[0]); +assign O43pw6 = (~(Ivuow6 | X3fpw6[3])); +assign Ivuow6 = (!X3fpw6[1]); +assign Sevow6 = (L3ehu6 & Qaxiu6); +assign Qaxiu6 = (!R0nhu6); +assign Hx2pw6 = (~(T24iu6 & R0nhu6)); +assign T24iu6 = (Shhpw6[0] & Iqzhu6); +assign HTRANS[1] = (~(B83pw6 & I83pw6)); +assign I83pw6 = (~(Xg6iu6 & Kzciu6)); +assign Kzciu6 = (~(P83pw6 & W83pw6)); +assign W83pw6 = (~(D93pw6 | Jshpw6[28])); +assign D93pw6 = (!Jshpw6[31]); +assign P83pw6 = (Jshpw6[30] & Jshpw6[29]); +assign B83pw6 = (W7cow6 ? I7cow6 : K93pw6); +assign W7cow6 = (Ympiu6 & L18iu6); +assign I7cow6 = (Dx0iu6 ? Ef1iu6 : Rx0iu6); +assign K93pw6 = (~(R93pw6 & S18iu6)); +assign R93pw6 = (Y93pw6 & Z18iu6); +assign Z18iu6 = (~(Fa3pw6 & Ma3pw6)); +assign Ma3pw6 = (~(Ta3pw6 & Ab3pw6)); +assign Ab3pw6 = (~(Iiliu6 & Hb3pw6)); +assign Hb3pw6 = (X71iu6 | Ympiu6); +assign Fa3pw6 = (~(J71iu6 & Ob3pw6)); +assign Y93pw6 = (Pyciu6 | V0epw6); +assign Pyciu6 = (~(Vb3pw6 & Ef1iu6)); +assign Vb3pw6 = (Rx0iu6 & Dx0iu6); +assign HSIZE[1] = (!Cc3pw6); +assign Cc3pw6 = (Xg6iu6 ? Qc3pw6 : Jc3pw6); +assign Qc3pw6 = (~(Aphpw6[2] | Wqzhu6)); +assign Jc3pw6 = (Ob3pw6 & Xc3pw6); +assign Xc3pw6 = (Ed3pw6 | Sdaiu6); +assign HSIZE[0] = (~(Ld3pw6 & Sd3pw6)); +assign Sd3pw6 = (~(Zd3pw6 & Ge3pw6)); +assign Ge3pw6 = (~(Ympiu6 | Sdaiu6)); +assign Zd3pw6 = (Mnxow6 & Ze9iu6); +assign Ld3pw6 = (~(Ne3pw6 & Aphpw6[1])); +assign HPROT[3] = (~(HPROT[2] & Ue3pw6)); +assign Ue3pw6 = (~(HADDR[29] & Bf3pw6)); +assign Bf3pw6 = (!HADDR[31]); +assign HADDR[31] = (Xg6iu6 ? Jshpw6[31] : Ef1iu6); +assign Ef1iu6 = (~(If3pw6 & Pf3pw6)); +assign Pf3pw6 = (T2iiu6 | R65ju6); +assign R65ju6 = (Mm4ju6 ? Wf3pw6 : Wtoiu6); +assign Wf3pw6 = (Dg3pw6 & Kg3pw6); +assign Kg3pw6 = (Rg3pw6 & Yg3pw6); +assign Yg3pw6 = (Fh3pw6 & Mh3pw6); +assign Mh3pw6 = (~(Jo4ju6 & vis_r14_o[31])); +assign Fh3pw6 = (Th3pw6 & Ai3pw6); +assign Ai3pw6 = (~(Ep4ju6 & vis_psp_o[29])); +assign Th3pw6 = (~(Lp4ju6 & vis_msp_o[29])); +assign Rg3pw6 = (Hi3pw6 & Oi3pw6); +assign Oi3pw6 = (~(Gq4ju6 & vis_r12_o[31])); +assign Hi3pw6 = (~(Nq4ju6 & vis_r11_o[31])); +assign Dg3pw6 = (Vi3pw6 & Cj3pw6); +assign Cj3pw6 = (Jj3pw6 & Qj3pw6); +assign Qj3pw6 = (~(Wr4ju6 & vis_r10_o[31])); +assign Jj3pw6 = (~(Ds4ju6 & vis_r9_o[31])); +assign Vi3pw6 = (R50iu6 & Xj3pw6); +assign Xj3pw6 = (~(Rs4ju6 & vis_r8_o[31])); +assign R50iu6 = (Ek3pw6 & Lk3pw6); +assign Lk3pw6 = (Sk3pw6 & Zk3pw6); +assign Zk3pw6 = (Gl3pw6 & Nl3pw6); +assign Nl3pw6 = (~(V6now6 & vis_r2_o[31])); +assign Gl3pw6 = (~(C7now6 & vis_r6_o[31])); +assign Sk3pw6 = (Ul3pw6 & Bm3pw6); +assign Bm3pw6 = (~(X7now6 & vis_r5_o[31])); +assign Ul3pw6 = (~(E8now6 & vis_r4_o[31])); +assign Ek3pw6 = (Im3pw6 & Pm3pw6); +assign Pm3pw6 = (Wm3pw6 & Dn3pw6); +assign Dn3pw6 = (~(N9now6 & vis_r1_o[31])); +assign Wm3pw6 = (~(U9now6 & vis_r0_o[31])); +assign Im3pw6 = (Kn3pw6 & Rn3pw6); +assign Rn3pw6 = (~(Panow6 & vis_r3_o[31])); +assign Kn3pw6 = (~(Wanow6 & vis_r7_o[31])); +assign Wtoiu6 = (!Fkfpw6[31]); +assign If3pw6 = (Yn3pw6 & Fo3pw6); +assign Fo3pw6 = (~(Eafpw6[31] & A3iiu6)); +assign Yn3pw6 = (~(N5fpw6[30] & Sdaiu6)); +assign HPROT[2] = (HADDR[30] | HADDR[29]); +assign HPROT[0] = (~(L18iu6 & Ze9iu6)); +assign L18iu6 = (Mo3pw6 & To3pw6); +assign To3pw6 = (Ap3pw6 & Hp3pw6); +assign Hp3pw6 = (Op3pw6 & Hq1ju6); +assign Hq1ju6 = (~(Vp3pw6 & Pthiu6)); +assign Vp3pw6 = (Ls1ju6 & Y2oiu6); +assign Op3pw6 = (Cq3pw6 & Oq1ju6); +assign Ap3pw6 = (Jq3pw6 & Qq3pw6); +assign Qq3pw6 = (~(Xq3pw6 & Glaiu6)); +assign Glaiu6 = (M2piu6 & Cyfpw6[5]); +assign M2piu6 = (Xzmiu6 & Y7ghu6); +assign Xq3pw6 = (~(Mmjiu6 | Ae0iu6)); +assign Jq3pw6 = (Bgaow6 & Er3pw6); +assign Er3pw6 = (~(I82ju6 & Oiaiu6)); +assign Bgaow6 = (~(Lr3pw6 & Whfiu6)); +assign Lr3pw6 = (D6kiu6 & Sijiu6); +assign Mo3pw6 = (Sr3pw6 & Zr3pw6); +assign Zr3pw6 = (Gs3pw6 & Ns3pw6); +assign Ns3pw6 = (~(Qe8iu6 & Us3pw6)); +assign Us3pw6 = (~(S62ju6 & Jc2ju6)); +assign S62ju6 = (Mr0iu6 | Cyfpw6[4]); +assign Gs3pw6 = (Bt3pw6 & It3pw6); +assign It3pw6 = (~(Y0jiu6 & Zqaju6)); +assign Zqaju6 = (Sijiu6 & Ii0iu6); +assign Bt3pw6 = (~(Pt3pw6 & O96ow6)); +assign O96ow6 = (Cyfpw6[4] & Geaiu6); +assign Pt3pw6 = (~(R2aiu6 | Cyfpw6[6])); +assign Sr3pw6 = (Yavow6 & Rcziu6); +assign Yavow6 = (Wt3pw6 & Du3pw6); +assign Du3pw6 = (~(Ku3pw6 & Mo2ju6)); +assign Mo2ju6 = (Nlaiu6 & Hs0iu6); +assign Ku3pw6 = (~(P1bow6 | Cyfpw6[4])); +assign Wt3pw6 = (~(Ru3pw6 & Apaiu6)); +assign Ru3pw6 = (~(Lkaiu6 | Mr0iu6)); +assign HALTED = (Pzwiu6 & Wofiu6); +assign HADDR[9] = (Xg6iu6 ? Jshpw6[9] : Tugpw6[7]); +assign Tugpw6[7] = (~(Yu3pw6 & Fv3pw6)); +assign Fv3pw6 = (~(N5fpw6[8] & Sdaiu6)); +assign Yu3pw6 = (Mv3pw6 & Tv3pw6); +assign Tv3pw6 = (~(B7iiu6 & He0iu6)); +assign He0iu6 = (Cn5ju6 ? Fkfpw6[9] : Aw3pw6); +assign Aw3pw6 = (~(Hw3pw6 & Ow3pw6)); +assign Ow3pw6 = (Vw3pw6 & Cx3pw6); +assign Cx3pw6 = (Jx3pw6 & Qx3pw6); +assign Qx3pw6 = (~(Jo4ju6 & vis_r14_o[9])); +assign Jx3pw6 = (Xx3pw6 & Ey3pw6); +assign Ey3pw6 = (~(Ep4ju6 & vis_psp_o[7])); +assign Xx3pw6 = (~(Lp4ju6 & vis_msp_o[7])); +assign Vw3pw6 = (Ly3pw6 & Sy3pw6); +assign Sy3pw6 = (~(Gq4ju6 & vis_r12_o[9])); +assign Ly3pw6 = (~(Nq4ju6 & vis_r11_o[9])); +assign Hw3pw6 = (Zy3pw6 & Gz3pw6); +assign Gz3pw6 = (Nz3pw6 & Uz3pw6); +assign Uz3pw6 = (~(Wr4ju6 & vis_r10_o[9])); +assign Nz3pw6 = (~(Ds4ju6 & vis_r9_o[9])); +assign Zy3pw6 = (U30iu6 & B04pw6); +assign B04pw6 = (~(Rs4ju6 & vis_r8_o[9])); +assign U30iu6 = (I04pw6 & P04pw6); +assign P04pw6 = (W04pw6 & D14pw6); +assign D14pw6 = (K14pw6 & R14pw6); +assign R14pw6 = (~(V6now6 & vis_r2_o[9])); +assign K14pw6 = (~(C7now6 & vis_r6_o[9])); +assign W04pw6 = (Y14pw6 & F24pw6); +assign F24pw6 = (~(X7now6 & vis_r5_o[9])); +assign Y14pw6 = (~(E8now6 & vis_r4_o[9])); +assign I04pw6 = (M24pw6 & T24pw6); +assign T24pw6 = (A34pw6 & H34pw6); +assign H34pw6 = (~(N9now6 & vis_r1_o[9])); +assign A34pw6 = (~(U9now6 & vis_r0_o[9])); +assign M24pw6 = (O34pw6 & V34pw6); +assign V34pw6 = (~(Panow6 & vis_r3_o[9])); +assign O34pw6 = (~(Wanow6 & vis_r7_o[9])); +assign Mv3pw6 = (~(Eafpw6[9] & A3iiu6)); +assign HADDR[6] = (Xg6iu6 ? Jshpw6[6] : Tugpw6[4]); +assign Tugpw6[4] = (~(C44pw6 & J44pw6)); +assign J44pw6 = (~(N5fpw6[5] & Sdaiu6)); +assign C44pw6 = (Q44pw6 & X44pw6); +assign X44pw6 = (~(B7iiu6 & Qf0iu6)); +assign Qf0iu6 = (Cn5ju6 ? Fkfpw6[6] : E54pw6); +assign E54pw6 = (~(L54pw6 & S54pw6)); +assign S54pw6 = (Z54pw6 & G64pw6); +assign G64pw6 = (N64pw6 & U64pw6); +assign U64pw6 = (~(Jo4ju6 & vis_r14_o[6])); +assign N64pw6 = (B74pw6 & I74pw6); +assign I74pw6 = (~(Ep4ju6 & vis_psp_o[4])); +assign B74pw6 = (~(Lp4ju6 & vis_msp_o[4])); +assign Z54pw6 = (P74pw6 & W74pw6); +assign W74pw6 = (~(Gq4ju6 & vis_r12_o[6])); +assign P74pw6 = (~(Nq4ju6 & vis_r11_o[6])); +assign L54pw6 = (D84pw6 & K84pw6); +assign K84pw6 = (R84pw6 & Y84pw6); +assign Y84pw6 = (~(Wr4ju6 & vis_r10_o[6])); +assign R84pw6 = (~(Ds4ju6 & vis_r9_o[6])); +assign D84pw6 = (P40iu6 & F94pw6); +assign F94pw6 = (~(Rs4ju6 & vis_r8_o[6])); +assign P40iu6 = (M94pw6 & T94pw6); +assign T94pw6 = (Aa4pw6 & Ha4pw6); +assign Ha4pw6 = (Oa4pw6 & Va4pw6); +assign Va4pw6 = (~(V6now6 & vis_r2_o[6])); +assign Oa4pw6 = (~(C7now6 & vis_r6_o[6])); +assign Aa4pw6 = (Cb4pw6 & Jb4pw6); +assign Jb4pw6 = (~(X7now6 & vis_r5_o[6])); +assign Cb4pw6 = (~(E8now6 & vis_r4_o[6])); +assign M94pw6 = (Qb4pw6 & Xb4pw6); +assign Xb4pw6 = (Ec4pw6 & Lc4pw6); +assign Lc4pw6 = (~(N9now6 & vis_r1_o[6])); +assign Ec4pw6 = (~(U9now6 & vis_r0_o[6])); +assign Qb4pw6 = (Sc4pw6 & Zc4pw6); +assign Zc4pw6 = (~(Panow6 & vis_r3_o[6])); +assign Sc4pw6 = (~(Wanow6 & vis_r7_o[6])); +assign Q44pw6 = (~(Eafpw6[6] & A3iiu6)); +assign HADDR[30] = (Ze9iu6 ? Rx0iu6 : Jshpw6[30]); +assign Rx0iu6 = (~(Gd4pw6 & Nd4pw6)); +assign Nd4pw6 = (T2iiu6 | Sg0iu6); +assign Sg0iu6 = (Mm4ju6 ? Ud4pw6 : Galiu6); +assign Ud4pw6 = (Be4pw6 & Ie4pw6); +assign Ie4pw6 = (Pe4pw6 & We4pw6); +assign We4pw6 = (Df4pw6 & Kf4pw6); +assign Kf4pw6 = (~(Jo4ju6 & vis_r14_o[30])); +assign Df4pw6 = (Rf4pw6 & Yf4pw6); +assign Yf4pw6 = (~(Ep4ju6 & vis_psp_o[28])); +assign Rf4pw6 = (~(Lp4ju6 & vis_msp_o[28])); +assign Pe4pw6 = (Fg4pw6 & Mg4pw6); +assign Mg4pw6 = (~(Gq4ju6 & vis_r12_o[30])); +assign Fg4pw6 = (~(Nq4ju6 & vis_r11_o[30])); +assign Be4pw6 = (Tg4pw6 & Ah4pw6); +assign Ah4pw6 = (Hh4pw6 & Oh4pw6); +assign Oh4pw6 = (~(Wr4ju6 & vis_r10_o[30])); +assign Hh4pw6 = (~(Ds4ju6 & vis_r9_o[30])); +assign Tg4pw6 = (Y50iu6 & Vh4pw6); +assign Vh4pw6 = (~(Rs4ju6 & vis_r8_o[30])); +assign Y50iu6 = (Ci4pw6 & Ji4pw6); +assign Ji4pw6 = (Qi4pw6 & Xi4pw6); +assign Xi4pw6 = (Ej4pw6 & Lj4pw6); +assign Lj4pw6 = (~(V6now6 & vis_r2_o[30])); +assign Ej4pw6 = (~(C7now6 & vis_r6_o[30])); +assign Qi4pw6 = (Sj4pw6 & Zj4pw6); +assign Zj4pw6 = (~(X7now6 & vis_r5_o[30])); +assign Sj4pw6 = (~(E8now6 & vis_r4_o[30])); +assign Ci4pw6 = (Gk4pw6 & Nk4pw6); +assign Nk4pw6 = (Uk4pw6 & Bl4pw6); +assign Bl4pw6 = (~(N9now6 & vis_r1_o[30])); +assign Uk4pw6 = (~(U9now6 & vis_r0_o[30])); +assign Gk4pw6 = (Il4pw6 & Pl4pw6); +assign Pl4pw6 = (~(Panow6 & vis_r3_o[30])); +assign Il4pw6 = (~(Wanow6 & vis_r7_o[30])); +assign Galiu6 = (!Fkfpw6[30]); +assign Gd4pw6 = (Wl4pw6 & Dm4pw6); +assign Dm4pw6 = (~(Eafpw6[30] & A3iiu6)); +assign Wl4pw6 = (~(N5fpw6[29] & Sdaiu6)); +assign HADDR[29] = (Xg6iu6 ? Jshpw6[29] : Dx0iu6); +assign Xg6iu6 = (!Ze9iu6); +assign Dx0iu6 = (~(Km4pw6 & Rm4pw6)); +assign Rm4pw6 = (T2iiu6 | Pi0iu6); +assign Pi0iu6 = (Mm4ju6 ? Ym4pw6 : Sm8iu6); +assign Ym4pw6 = (Fn4pw6 & Mn4pw6); +assign Mn4pw6 = (Tn4pw6 & Ao4pw6); +assign Ao4pw6 = (Ho4pw6 & Oo4pw6); +assign Oo4pw6 = (~(Jo4ju6 & vis_r14_o[29])); +assign Ho4pw6 = (Vo4pw6 & Cp4pw6); +assign Cp4pw6 = (~(Ep4ju6 & vis_psp_o[27])); +assign Vo4pw6 = (~(Lp4ju6 & vis_msp_o[27])); +assign Tn4pw6 = (Jp4pw6 & Qp4pw6); +assign Qp4pw6 = (~(Gq4ju6 & vis_r12_o[29])); +assign Jp4pw6 = (~(Nq4ju6 & vis_r11_o[29])); +assign Fn4pw6 = (Xp4pw6 & Eq4pw6); +assign Eq4pw6 = (Lq4pw6 & Sq4pw6); +assign Sq4pw6 = (~(Wr4ju6 & vis_r10_o[29])); +assign Lq4pw6 = (~(Ds4ju6 & vis_r9_o[29])); +assign Xp4pw6 = (M60iu6 & Zq4pw6); +assign Zq4pw6 = (~(Rs4ju6 & vis_r8_o[29])); +assign M60iu6 = (Gr4pw6 & Nr4pw6); +assign Nr4pw6 = (Ur4pw6 & Bs4pw6); +assign Bs4pw6 = (Is4pw6 & Ps4pw6); +assign Ps4pw6 = (~(V6now6 & vis_r2_o[29])); +assign Is4pw6 = (~(C7now6 & vis_r6_o[29])); +assign Ur4pw6 = (Ws4pw6 & Dt4pw6); +assign Dt4pw6 = (~(X7now6 & vis_r5_o[29])); +assign Ws4pw6 = (~(E8now6 & vis_r4_o[29])); +assign Gr4pw6 = (Kt4pw6 & Rt4pw6); +assign Rt4pw6 = (Yt4pw6 & Fu4pw6); +assign Fu4pw6 = (~(N9now6 & vis_r1_o[29])); +assign Yt4pw6 = (~(U9now6 & vis_r0_o[29])); +assign Kt4pw6 = (Mu4pw6 & Tu4pw6); +assign Tu4pw6 = (~(Panow6 & vis_r3_o[29])); +assign Mu4pw6 = (~(Wanow6 & vis_r7_o[29])); +assign Sm8iu6 = (!Fkfpw6[29]); +assign Km4pw6 = (Av4pw6 & Hv4pw6); +assign Hv4pw6 = (~(Eafpw6[29] & A3iiu6)); +assign Av4pw6 = (~(N5fpw6[28] & Sdaiu6)); +assign HADDR[28] = (Ze9iu6 ? V0epw6 : Jshpw6[28]); +assign V0epw6 = (~(Ov4pw6 & Vv4pw6)); +assign Vv4pw6 = (T2iiu6 | Wi0iu6); +assign Wi0iu6 = (Mm4ju6 ? Cw4pw6 : Seniu6); +assign Cw4pw6 = (Jw4pw6 & Qw4pw6); +assign Qw4pw6 = (Xw4pw6 & Ex4pw6); +assign Ex4pw6 = (Lx4pw6 & Sx4pw6); +assign Sx4pw6 = (~(Jo4ju6 & vis_r14_o[28])); +assign Lx4pw6 = (Zx4pw6 & Gy4pw6); +assign Gy4pw6 = (~(Ep4ju6 & vis_psp_o[26])); +assign Zx4pw6 = (~(Lp4ju6 & vis_msp_o[26])); +assign Xw4pw6 = (Ny4pw6 & Uy4pw6); +assign Uy4pw6 = (~(Gq4ju6 & vis_r12_o[28])); +assign Ny4pw6 = (~(Nq4ju6 & vis_r11_o[28])); +assign Jw4pw6 = (Bz4pw6 & Iz4pw6); +assign Iz4pw6 = (Pz4pw6 & Wz4pw6); +assign Wz4pw6 = (~(Wr4ju6 & vis_r10_o[28])); +assign Pz4pw6 = (~(Ds4ju6 & vis_r9_o[28])); +assign Bz4pw6 = (T60iu6 & D05pw6); +assign D05pw6 = (~(Rs4ju6 & vis_r8_o[28])); +assign T60iu6 = (!Ltnow6); +assign Ltnow6 = (~(K05pw6 & R05pw6)); +assign R05pw6 = (Y05pw6 & F15pw6); +assign F15pw6 = (M15pw6 & T15pw6); +assign T15pw6 = (~(V6now6 & vis_r2_o[28])); +assign M15pw6 = (~(C7now6 & vis_r6_o[28])); +assign Y05pw6 = (A25pw6 & H25pw6); +assign H25pw6 = (~(X7now6 & vis_r5_o[28])); +assign A25pw6 = (~(E8now6 & vis_r4_o[28])); +assign K05pw6 = (O25pw6 & V25pw6); +assign V25pw6 = (C35pw6 & J35pw6); +assign J35pw6 = (~(N9now6 & vis_r1_o[28])); +assign C35pw6 = (~(U9now6 & vis_r0_o[28])); +assign O25pw6 = (Q35pw6 & X35pw6); +assign X35pw6 = (~(Panow6 & vis_r3_o[28])); +assign Q35pw6 = (~(Wanow6 & vis_r7_o[28])); +assign Seniu6 = (!Fkfpw6[28]); +assign Ov4pw6 = (E45pw6 & L45pw6); +assign L45pw6 = (~(N5fpw6[27] & Sdaiu6)); +assign E45pw6 = (~(Eafpw6[28] & A3iiu6)); +assign HADDR[27] = (Ze9iu6 ? O0epw6 : Jshpw6[27]); +assign O0epw6 = (~(S45pw6 & Z45pw6)); +assign Z45pw6 = (~(B7iiu6 & Dj0iu6)); +assign Dj0iu6 = (Cn5ju6 ? Fkfpw6[27] : G55pw6); +assign G55pw6 = (~(N55pw6 & U55pw6)); +assign U55pw6 = (B65pw6 & I65pw6); +assign I65pw6 = (P65pw6 & W65pw6); +assign W65pw6 = (~(Jo4ju6 & vis_r14_o[27])); +assign P65pw6 = (D75pw6 & K75pw6); +assign K75pw6 = (~(Ep4ju6 & vis_psp_o[25])); +assign D75pw6 = (~(Lp4ju6 & vis_msp_o[25])); +assign B65pw6 = (R75pw6 & Y75pw6); +assign Y75pw6 = (~(Gq4ju6 & vis_r12_o[27])); +assign R75pw6 = (~(Nq4ju6 & vis_r11_o[27])); +assign N55pw6 = (F85pw6 & M85pw6); +assign M85pw6 = (T85pw6 & A95pw6); +assign A95pw6 = (~(Wr4ju6 & vis_r10_o[27])); +assign T85pw6 = (~(Ds4ju6 & vis_r9_o[27])); +assign F85pw6 = (A70iu6 & H95pw6); +assign H95pw6 = (~(Rs4ju6 & vis_r8_o[27])); +assign A70iu6 = (O95pw6 & V95pw6); +assign V95pw6 = (Ca5pw6 & Ja5pw6); +assign Ja5pw6 = (Qa5pw6 & Xa5pw6); +assign Xa5pw6 = (~(V6now6 & vis_r2_o[27])); +assign Qa5pw6 = (~(C7now6 & vis_r6_o[27])); +assign Ca5pw6 = (Eb5pw6 & Lb5pw6); +assign Lb5pw6 = (~(X7now6 & vis_r5_o[27])); +assign Eb5pw6 = (~(E8now6 & vis_r4_o[27])); +assign O95pw6 = (Sb5pw6 & Zb5pw6); +assign Zb5pw6 = (Gc5pw6 & Nc5pw6); +assign Nc5pw6 = (~(N9now6 & vis_r1_o[27])); +assign Gc5pw6 = (~(U9now6 & vis_r0_o[27])); +assign Sb5pw6 = (Uc5pw6 & Bd5pw6); +assign Bd5pw6 = (~(Panow6 & vis_r3_o[27])); +assign Uc5pw6 = (~(Wanow6 & vis_r7_o[27])); +assign S45pw6 = (Id5pw6 & Pd5pw6); +assign Pd5pw6 = (~(N5fpw6[26] & Sdaiu6)); +assign Id5pw6 = (~(Eafpw6[27] & A3iiu6)); +assign HADDR[26] = (Ze9iu6 ? H0epw6 : Jshpw6[26]); +assign H0epw6 = (~(Wd5pw6 & De5pw6)); +assign De5pw6 = (~(B7iiu6 & Kj0iu6)); +assign Kj0iu6 = (Cn5ju6 ? Fkfpw6[26] : Ke5pw6); +assign Ke5pw6 = (~(Re5pw6 & Ye5pw6)); +assign Ye5pw6 = (Ff5pw6 & Mf5pw6); +assign Mf5pw6 = (Tf5pw6 & Ag5pw6); +assign Ag5pw6 = (~(Jo4ju6 & vis_r14_o[26])); +assign Tf5pw6 = (Hg5pw6 & Og5pw6); +assign Og5pw6 = (~(Ep4ju6 & vis_psp_o[24])); +assign Hg5pw6 = (~(Lp4ju6 & vis_msp_o[24])); +assign Ff5pw6 = (Vg5pw6 & Ch5pw6); +assign Ch5pw6 = (~(Gq4ju6 & vis_r12_o[26])); +assign Vg5pw6 = (~(Nq4ju6 & vis_r11_o[26])); +assign Re5pw6 = (Jh5pw6 & Qh5pw6); +assign Qh5pw6 = (Xh5pw6 & Ei5pw6); +assign Ei5pw6 = (~(Wr4ju6 & vis_r10_o[26])); +assign Xh5pw6 = (~(Ds4ju6 & vis_r9_o[26])); +assign Jh5pw6 = (H70iu6 & Li5pw6); +assign Li5pw6 = (~(Rs4ju6 & vis_r8_o[26])); +assign H70iu6 = (Si5pw6 & Zi5pw6); +assign Zi5pw6 = (Gj5pw6 & Nj5pw6); +assign Nj5pw6 = (Uj5pw6 & Bk5pw6); +assign Bk5pw6 = (~(V6now6 & vis_r2_o[26])); +assign Uj5pw6 = (~(C7now6 & vis_r6_o[26])); +assign Gj5pw6 = (Ik5pw6 & Pk5pw6); +assign Pk5pw6 = (~(X7now6 & vis_r5_o[26])); +assign Ik5pw6 = (~(E8now6 & vis_r4_o[26])); +assign Si5pw6 = (Wk5pw6 & Dl5pw6); +assign Dl5pw6 = (Kl5pw6 & Rl5pw6); +assign Rl5pw6 = (~(N9now6 & vis_r1_o[26])); +assign Kl5pw6 = (~(U9now6 & vis_r0_o[26])); +assign Wk5pw6 = (Yl5pw6 & Fm5pw6); +assign Fm5pw6 = (~(Panow6 & vis_r3_o[26])); +assign Yl5pw6 = (~(Wanow6 & vis_r7_o[26])); +assign Wd5pw6 = (Mm5pw6 & Tm5pw6); +assign Tm5pw6 = (~(N5fpw6[25] & Sdaiu6)); +assign Mm5pw6 = (~(Eafpw6[26] & A3iiu6)); +assign HADDR[25] = (Ze9iu6 ? A0epw6 : Jshpw6[25]); +assign A0epw6 = (~(An5pw6 & Hn5pw6)); +assign Hn5pw6 = (~(B7iiu6 & Rj0iu6)); +assign Rj0iu6 = (Cn5ju6 ? Fkfpw6[25] : On5pw6); +assign On5pw6 = (~(Vn5pw6 & Co5pw6)); +assign Co5pw6 = (Jo5pw6 & Qo5pw6); +assign Qo5pw6 = (Xo5pw6 & Ep5pw6); +assign Ep5pw6 = (~(Jo4ju6 & vis_r14_o[25])); +assign Xo5pw6 = (Lp5pw6 & Sp5pw6); +assign Sp5pw6 = (~(Ep4ju6 & vis_psp_o[23])); +assign Lp5pw6 = (~(Lp4ju6 & vis_msp_o[23])); +assign Jo5pw6 = (Zp5pw6 & Gq5pw6); +assign Gq5pw6 = (~(Gq4ju6 & vis_r12_o[25])); +assign Zp5pw6 = (~(Nq4ju6 & vis_r11_o[25])); +assign Vn5pw6 = (Nq5pw6 & Uq5pw6); +assign Uq5pw6 = (Br5pw6 & Ir5pw6); +assign Ir5pw6 = (~(Wr4ju6 & vis_r10_o[25])); +assign Br5pw6 = (~(Ds4ju6 & vis_r9_o[25])); +assign Nq5pw6 = (O70iu6 & Pr5pw6); +assign Pr5pw6 = (~(Rs4ju6 & vis_r8_o[25])); +assign O70iu6 = (Wr5pw6 & Ds5pw6); +assign Ds5pw6 = (Ks5pw6 & Rs5pw6); +assign Rs5pw6 = (Ys5pw6 & Ft5pw6); +assign Ft5pw6 = (~(V6now6 & vis_r2_o[25])); +assign Ys5pw6 = (~(C7now6 & vis_r6_o[25])); +assign Ks5pw6 = (Mt5pw6 & Tt5pw6); +assign Tt5pw6 = (~(X7now6 & vis_r5_o[25])); +assign Mt5pw6 = (~(E8now6 & vis_r4_o[25])); +assign Wr5pw6 = (Au5pw6 & Hu5pw6); +assign Hu5pw6 = (Ou5pw6 & Vu5pw6); +assign Vu5pw6 = (~(N9now6 & vis_r1_o[25])); +assign Ou5pw6 = (~(U9now6 & vis_r0_o[25])); +assign Au5pw6 = (Cv5pw6 & Jv5pw6); +assign Jv5pw6 = (~(Panow6 & vis_r3_o[25])); +assign Cv5pw6 = (~(Wanow6 & vis_r7_o[25])); +assign An5pw6 = (Qv5pw6 & Xv5pw6); +assign Xv5pw6 = (~(N5fpw6[24] & Sdaiu6)); +assign Qv5pw6 = (~(Eafpw6[25] & A3iiu6)); +assign HADDR[24] = (Ze9iu6 ? Tzdpw6 : Jshpw6[24]); +assign Tzdpw6 = (~(Ew5pw6 & Lw5pw6)); +assign Lw5pw6 = (T2iiu6 | Yj0iu6); +assign Yj0iu6 = (Mm4ju6 ? Sw5pw6 : Kykiu6); +assign Sw5pw6 = (Zw5pw6 & Gx5pw6); +assign Gx5pw6 = (Nx5pw6 & Ux5pw6); +assign Ux5pw6 = (By5pw6 & Iy5pw6); +assign Iy5pw6 = (~(Jo4ju6 & vis_r14_o[24])); +assign By5pw6 = (Py5pw6 & Wy5pw6); +assign Wy5pw6 = (~(Ep4ju6 & vis_psp_o[22])); +assign Py5pw6 = (~(Lp4ju6 & vis_msp_o[22])); +assign Nx5pw6 = (Dz5pw6 & Kz5pw6); +assign Kz5pw6 = (~(Gq4ju6 & vis_r12_o[24])); +assign Dz5pw6 = (~(Nq4ju6 & vis_r11_o[24])); +assign Zw5pw6 = (Rz5pw6 & Yz5pw6); +assign Yz5pw6 = (F06pw6 & M06pw6); +assign M06pw6 = (~(Wr4ju6 & vis_r10_o[24])); +assign F06pw6 = (~(Ds4ju6 & vis_r9_o[24])); +assign Rz5pw6 = (V70iu6 & T06pw6); +assign T06pw6 = (~(Rs4ju6 & vis_r8_o[24])); +assign V70iu6 = (A16pw6 & H16pw6); +assign H16pw6 = (O16pw6 & V16pw6); +assign V16pw6 = (C26pw6 & J26pw6); +assign J26pw6 = (~(V6now6 & vis_r2_o[24])); +assign C26pw6 = (~(C7now6 & vis_r6_o[24])); +assign O16pw6 = (Q26pw6 & X26pw6); +assign X26pw6 = (~(X7now6 & vis_r5_o[24])); +assign Q26pw6 = (~(E8now6 & vis_r4_o[24])); +assign A16pw6 = (E36pw6 & L36pw6); +assign L36pw6 = (S36pw6 & Z36pw6); +assign Z36pw6 = (~(N9now6 & vis_r1_o[24])); +assign S36pw6 = (~(U9now6 & vis_r0_o[24])); +assign E36pw6 = (G46pw6 & N46pw6); +assign N46pw6 = (~(Panow6 & vis_r3_o[24])); +assign G46pw6 = (~(Wanow6 & vis_r7_o[24])); +assign Kykiu6 = (!Fkfpw6[24]); +assign Ew5pw6 = (U46pw6 & B56pw6); +assign B56pw6 = (~(N5fpw6[23] & Sdaiu6)); +assign U46pw6 = (~(Eafpw6[24] & A3iiu6)); +assign HADDR[23] = (Ze9iu6 ? Mzdpw6 : Jshpw6[23]); +assign Mzdpw6 = (~(I56pw6 & P56pw6)); +assign P56pw6 = (T2iiu6 | Fk0iu6); +assign Fk0iu6 = (Mm4ju6 ? W56pw6 : Ax9iu6); +assign W56pw6 = (D66pw6 & K66pw6); +assign K66pw6 = (R66pw6 & Y66pw6); +assign Y66pw6 = (F76pw6 & M76pw6); +assign M76pw6 = (~(Jo4ju6 & vis_r14_o[23])); +assign F76pw6 = (T76pw6 & A86pw6); +assign A86pw6 = (~(Ep4ju6 & vis_psp_o[21])); +assign T76pw6 = (~(Lp4ju6 & vis_msp_o[21])); +assign R66pw6 = (H86pw6 & O86pw6); +assign O86pw6 = (~(Gq4ju6 & vis_r12_o[23])); +assign H86pw6 = (~(Nq4ju6 & vis_r11_o[23])); +assign D66pw6 = (V86pw6 & C96pw6); +assign C96pw6 = (J96pw6 & Q96pw6); +assign Q96pw6 = (~(Wr4ju6 & vis_r10_o[23])); +assign J96pw6 = (~(Ds4ju6 & vis_r9_o[23])); +assign V86pw6 = (C80iu6 & X96pw6); +assign X96pw6 = (~(Rs4ju6 & vis_r8_o[23])); +assign C80iu6 = (Ea6pw6 & La6pw6); +assign La6pw6 = (Sa6pw6 & Za6pw6); +assign Za6pw6 = (Gb6pw6 & Nb6pw6); +assign Nb6pw6 = (~(V6now6 & vis_r2_o[23])); +assign Gb6pw6 = (~(C7now6 & vis_r6_o[23])); +assign Sa6pw6 = (Ub6pw6 & Bc6pw6); +assign Bc6pw6 = (~(X7now6 & vis_r5_o[23])); +assign Ub6pw6 = (~(E8now6 & vis_r4_o[23])); +assign Ea6pw6 = (Ic6pw6 & Pc6pw6); +assign Pc6pw6 = (Wc6pw6 & Dd6pw6); +assign Dd6pw6 = (~(N9now6 & vis_r1_o[23])); +assign Wc6pw6 = (~(U9now6 & vis_r0_o[23])); +assign Ic6pw6 = (Kd6pw6 & Rd6pw6); +assign Rd6pw6 = (~(Panow6 & vis_r3_o[23])); +assign Kd6pw6 = (~(Wanow6 & vis_r7_o[23])); +assign Ax9iu6 = (!Fkfpw6[23]); +assign I56pw6 = (Yd6pw6 & Fe6pw6); +assign Fe6pw6 = (~(N5fpw6[22] & Sdaiu6)); +assign Yd6pw6 = (~(Eafpw6[23] & A3iiu6)); +assign HADDR[22] = (Ze9iu6 ? Fzdpw6 : Jshpw6[22]); +assign Fzdpw6 = (~(Me6pw6 & Te6pw6)); +assign Te6pw6 = (T2iiu6 | Mk0iu6); +assign Mk0iu6 = (Mm4ju6 ? Af6pw6 : Suliu6); +assign Af6pw6 = (Hf6pw6 & Of6pw6); +assign Of6pw6 = (Vf6pw6 & Cg6pw6); +assign Cg6pw6 = (Jg6pw6 & Qg6pw6); +assign Qg6pw6 = (~(Jo4ju6 & vis_r14_o[22])); +assign Jg6pw6 = (Xg6pw6 & Eh6pw6); +assign Eh6pw6 = (~(Ep4ju6 & vis_psp_o[20])); +assign Xg6pw6 = (~(Lp4ju6 & vis_msp_o[20])); +assign Vf6pw6 = (Lh6pw6 & Sh6pw6); +assign Sh6pw6 = (~(Gq4ju6 & vis_r12_o[22])); +assign Lh6pw6 = (~(Nq4ju6 & vis_r11_o[22])); +assign Hf6pw6 = (Zh6pw6 & Gi6pw6); +assign Gi6pw6 = (Ni6pw6 & Ui6pw6); +assign Ui6pw6 = (~(Wr4ju6 & vis_r10_o[22])); +assign Ni6pw6 = (~(Ds4ju6 & vis_r9_o[22])); +assign Zh6pw6 = (J80iu6 & Bj6pw6); +assign Bj6pw6 = (~(Rs4ju6 & vis_r8_o[22])); +assign J80iu6 = (Ij6pw6 & Pj6pw6); +assign Pj6pw6 = (Wj6pw6 & Dk6pw6); +assign Dk6pw6 = (Kk6pw6 & Rk6pw6); +assign Rk6pw6 = (~(V6now6 & vis_r2_o[22])); +assign Kk6pw6 = (~(C7now6 & vis_r6_o[22])); +assign Wj6pw6 = (Yk6pw6 & Fl6pw6); +assign Fl6pw6 = (~(X7now6 & vis_r5_o[22])); +assign Yk6pw6 = (~(E8now6 & vis_r4_o[22])); +assign Ij6pw6 = (Ml6pw6 & Tl6pw6); +assign Tl6pw6 = (Am6pw6 & Hm6pw6); +assign Hm6pw6 = (~(N9now6 & vis_r1_o[22])); +assign Am6pw6 = (~(U9now6 & vis_r0_o[22])); +assign Ml6pw6 = (Om6pw6 & Vm6pw6); +assign Vm6pw6 = (~(Panow6 & vis_r3_o[22])); +assign Om6pw6 = (~(Wanow6 & vis_r7_o[22])); +assign Suliu6 = (!Fkfpw6[22]); +assign Me6pw6 = (Cn6pw6 & Jn6pw6); +assign Jn6pw6 = (~(N5fpw6[21] & Sdaiu6)); +assign Cn6pw6 = (~(Eafpw6[22] & A3iiu6)); +assign HADDR[21] = (Ze9iu6 ? Yydpw6 : Jshpw6[21]); +assign Yydpw6 = (~(Qn6pw6 & Xn6pw6)); +assign Xn6pw6 = (T2iiu6 | Tk0iu6); +assign Tk0iu6 = (Mm4ju6 ? Eo6pw6 : Rxliu6); +assign Eo6pw6 = (Lo6pw6 & So6pw6); +assign So6pw6 = (Zo6pw6 & Gp6pw6); +assign Gp6pw6 = (Np6pw6 & Up6pw6); +assign Up6pw6 = (~(Jo4ju6 & vis_r14_o[21])); +assign Np6pw6 = (Bq6pw6 & Iq6pw6); +assign Iq6pw6 = (~(Ep4ju6 & vis_psp_o[19])); +assign Bq6pw6 = (~(Lp4ju6 & vis_msp_o[19])); +assign Zo6pw6 = (Pq6pw6 & Wq6pw6); +assign Wq6pw6 = (~(Gq4ju6 & vis_r12_o[21])); +assign Pq6pw6 = (~(Nq4ju6 & vis_r11_o[21])); +assign Lo6pw6 = (Dr6pw6 & Kr6pw6); +assign Kr6pw6 = (Rr6pw6 & Yr6pw6); +assign Yr6pw6 = (~(Wr4ju6 & vis_r10_o[21])); +assign Rr6pw6 = (~(Ds4ju6 & vis_r9_o[21])); +assign Dr6pw6 = (Q80iu6 & Fs6pw6); +assign Fs6pw6 = (~(Rs4ju6 & vis_r8_o[21])); +assign Q80iu6 = (Ms6pw6 & Ts6pw6); +assign Ts6pw6 = (At6pw6 & Ht6pw6); +assign Ht6pw6 = (Ot6pw6 & Vt6pw6); +assign Vt6pw6 = (~(V6now6 & vis_r2_o[21])); +assign Ot6pw6 = (~(C7now6 & vis_r6_o[21])); +assign At6pw6 = (Cu6pw6 & Ju6pw6); +assign Ju6pw6 = (~(X7now6 & vis_r5_o[21])); +assign Cu6pw6 = (~(E8now6 & vis_r4_o[21])); +assign Ms6pw6 = (Qu6pw6 & Xu6pw6); +assign Xu6pw6 = (Ev6pw6 & Lv6pw6); +assign Lv6pw6 = (~(N9now6 & vis_r1_o[21])); +assign Ev6pw6 = (~(U9now6 & vis_r0_o[21])); +assign Qu6pw6 = (Sv6pw6 & Zv6pw6); +assign Zv6pw6 = (~(Panow6 & vis_r3_o[21])); +assign Sv6pw6 = (~(Wanow6 & vis_r7_o[21])); +assign Rxliu6 = (!Fkfpw6[21]); +assign Qn6pw6 = (Gw6pw6 & Nw6pw6); +assign Nw6pw6 = (~(N5fpw6[20] & Sdaiu6)); +assign Gw6pw6 = (~(Eafpw6[21] & A3iiu6)); +assign HADDR[20] = (Ze9iu6 ? Rydpw6 : Jshpw6[20]); +assign Rydpw6 = (~(Uw6pw6 & Bx6pw6)); +assign Bx6pw6 = (T2iiu6 | Al0iu6); +assign Al0iu6 = (Mm4ju6 ? Ix6pw6 : X0miu6); +assign Ix6pw6 = (Px6pw6 & Wx6pw6); +assign Wx6pw6 = (Dy6pw6 & Ky6pw6); +assign Ky6pw6 = (Ry6pw6 & Yy6pw6); +assign Yy6pw6 = (~(Jo4ju6 & vis_r14_o[20])); +assign Ry6pw6 = (Fz6pw6 & Mz6pw6); +assign Mz6pw6 = (~(Ep4ju6 & vis_psp_o[18])); +assign Fz6pw6 = (~(Lp4ju6 & vis_msp_o[18])); +assign Dy6pw6 = (Tz6pw6 & A07pw6); +assign A07pw6 = (~(Gq4ju6 & vis_r12_o[20])); +assign Tz6pw6 = (~(Nq4ju6 & vis_r11_o[20])); +assign Px6pw6 = (H07pw6 & O07pw6); +assign O07pw6 = (V07pw6 & C17pw6); +assign C17pw6 = (~(Wr4ju6 & vis_r10_o[20])); +assign V07pw6 = (~(Ds4ju6 & vis_r9_o[20])); +assign H07pw6 = (X80iu6 & J17pw6); +assign J17pw6 = (~(Rs4ju6 & vis_r8_o[20])); +assign X80iu6 = (Q17pw6 & X17pw6); +assign X17pw6 = (E27pw6 & L27pw6); +assign L27pw6 = (S27pw6 & Z27pw6); +assign Z27pw6 = (~(V6now6 & vis_r2_o[20])); +assign S27pw6 = (~(C7now6 & vis_r6_o[20])); +assign E27pw6 = (G37pw6 & N37pw6); +assign N37pw6 = (~(X7now6 & vis_r5_o[20])); +assign G37pw6 = (~(E8now6 & vis_r4_o[20])); +assign Q17pw6 = (U37pw6 & B47pw6); +assign B47pw6 = (I47pw6 & P47pw6); +assign P47pw6 = (~(N9now6 & vis_r1_o[20])); +assign I47pw6 = (~(U9now6 & vis_r0_o[20])); +assign U37pw6 = (W47pw6 & D57pw6); +assign D57pw6 = (~(Panow6 & vis_r3_o[20])); +assign W47pw6 = (~(Wanow6 & vis_r7_o[20])); +assign X0miu6 = (!Fkfpw6[20]); +assign Uw6pw6 = (K57pw6 & R57pw6); +assign R57pw6 = (~(N5fpw6[19] & Sdaiu6)); +assign K57pw6 = (~(Eafpw6[20] & A3iiu6)); +assign HADDR[1] = (~(Y57pw6 & F67pw6)); +assign F67pw6 = (~(M67pw6 & Ne3pw6)); +assign M67pw6 = (Tnhpw6[1] & T67pw6); +assign T67pw6 = (!Aphpw6[2]); +assign Y57pw6 = (~(Hz0iu6 & Ze9iu6)); +assign Hz0iu6 = (A77pw6 & Ed3pw6); +assign A77pw6 = (Iiliu6 & Ob3pw6); +assign Iiliu6 = (~(H77pw6 & O77pw6)); +assign O77pw6 = (T2iiu6 | Hl0iu6); +assign Hl0iu6 = (Mm4ju6 ? V77pw6 : Rjliu6); +assign V77pw6 = (C87pw6 & J87pw6); +assign J87pw6 = (Q87pw6 & X87pw6); +assign X87pw6 = (E97pw6 & L97pw6); +assign L97pw6 = (~(Jo4ju6 & vis_r14_o[1])); +assign E97pw6 = (~(Gq4ju6 & vis_r12_o[1])); +assign Q87pw6 = (S97pw6 & Z97pw6); +assign Z97pw6 = (~(Nq4ju6 & vis_r11_o[1])); +assign S97pw6 = (~(Wr4ju6 & vis_r10_o[1])); +assign C87pw6 = (Ga7pw6 & E90iu6); +assign E90iu6 = (Na7pw6 & Ua7pw6); +assign Ua7pw6 = (Bb7pw6 & Ib7pw6); +assign Ib7pw6 = (Pb7pw6 & Wb7pw6); +assign Wb7pw6 = (~(V6now6 & vis_r2_o[1])); +assign Pb7pw6 = (~(C7now6 & vis_r6_o[1])); +assign Bb7pw6 = (Dc7pw6 & Kc7pw6); +assign Kc7pw6 = (~(X7now6 & vis_r5_o[1])); +assign Dc7pw6 = (~(E8now6 & vis_r4_o[1])); +assign Na7pw6 = (Rc7pw6 & Yc7pw6); +assign Yc7pw6 = (Fd7pw6 & Md7pw6); +assign Md7pw6 = (~(N9now6 & vis_r1_o[1])); +assign Fd7pw6 = (~(U9now6 & vis_r0_o[1])); +assign Rc7pw6 = (Td7pw6 & Ae7pw6); +assign Ae7pw6 = (~(Panow6 & vis_r3_o[1])); +assign Td7pw6 = (~(Wanow6 & vis_r7_o[1])); +assign Ga7pw6 = (He7pw6 & Oe7pw6); +assign Oe7pw6 = (~(Ds4ju6 & vis_r9_o[1])); +assign He7pw6 = (~(Rs4ju6 & vis_r8_o[1])); +assign Rjliu6 = (!Fkfpw6[1]); +assign H77pw6 = (Ve7pw6 & Cf7pw6); +assign Cf7pw6 = (~(Jf7pw6 & Sdaiu6)); +assign Jf7pw6 = (~(Qf7pw6 | Vtzhu6)); +assign Vtzhu6 = (Pkciu6 & vis_pc_o[0]); +assign Qf7pw6 = (~(Pkciu6 | vis_pc_o[0])); +assign Ve7pw6 = (~(Eafpw6[1] & A3iiu6)); +assign HADDR[19] = (Ze9iu6 ? Kydpw6 : Jshpw6[19]); +assign Kydpw6 = (~(Xf7pw6 & Eg7pw6)); +assign Eg7pw6 = (T2iiu6 | Ol0iu6); +assign Ol0iu6 = (Mm4ju6 ? Lg7pw6 : W3miu6); +assign Lg7pw6 = (Sg7pw6 & Zg7pw6); +assign Zg7pw6 = (Gh7pw6 & Nh7pw6); +assign Nh7pw6 = (Uh7pw6 & Bi7pw6); +assign Bi7pw6 = (~(Jo4ju6 & vis_r14_o[19])); +assign Uh7pw6 = (Ii7pw6 & Pi7pw6); +assign Pi7pw6 = (~(Ep4ju6 & vis_psp_o[17])); +assign Ii7pw6 = (~(Lp4ju6 & vis_msp_o[17])); +assign Gh7pw6 = (Wi7pw6 & Dj7pw6); +assign Dj7pw6 = (~(Gq4ju6 & vis_r12_o[19])); +assign Wi7pw6 = (~(Nq4ju6 & vis_r11_o[19])); +assign Sg7pw6 = (Kj7pw6 & Rj7pw6); +assign Rj7pw6 = (Yj7pw6 & Fk7pw6); +assign Fk7pw6 = (~(Wr4ju6 & vis_r10_o[19])); +assign Yj7pw6 = (~(Ds4ju6 & vis_r9_o[19])); +assign Kj7pw6 = (L90iu6 & Mk7pw6); +assign Mk7pw6 = (~(Rs4ju6 & vis_r8_o[19])); +assign L90iu6 = (Tk7pw6 & Al7pw6); +assign Al7pw6 = (Hl7pw6 & Ol7pw6); +assign Ol7pw6 = (Vl7pw6 & Cm7pw6); +assign Cm7pw6 = (~(V6now6 & vis_r2_o[19])); +assign Vl7pw6 = (~(C7now6 & vis_r6_o[19])); +assign Hl7pw6 = (Jm7pw6 & Qm7pw6); +assign Qm7pw6 = (~(X7now6 & vis_r5_o[19])); +assign Jm7pw6 = (~(E8now6 & vis_r4_o[19])); +assign Tk7pw6 = (Xm7pw6 & En7pw6); +assign En7pw6 = (Ln7pw6 & Sn7pw6); +assign Sn7pw6 = (~(N9now6 & vis_r1_o[19])); +assign Ln7pw6 = (~(U9now6 & vis_r0_o[19])); +assign Xm7pw6 = (Zn7pw6 & Go7pw6); +assign Go7pw6 = (~(Panow6 & vis_r3_o[19])); +assign Zn7pw6 = (~(Wanow6 & vis_r7_o[19])); +assign W3miu6 = (!Fkfpw6[19]); +assign Xf7pw6 = (No7pw6 & Uo7pw6); +assign Uo7pw6 = (~(N5fpw6[18] & Sdaiu6)); +assign No7pw6 = (~(Eafpw6[19] & A3iiu6)); +assign HADDR[18] = (Ze9iu6 ? Dydpw6 : Jshpw6[18]); +assign Dydpw6 = (~(Bp7pw6 & Ip7pw6)); +assign Ip7pw6 = (T2iiu6 | Vl0iu6); +assign Vl0iu6 = (Mm4ju6 ? Pp7pw6 : V6miu6); +assign Pp7pw6 = (Wp7pw6 & Dq7pw6); +assign Dq7pw6 = (Kq7pw6 & Rq7pw6); +assign Rq7pw6 = (Yq7pw6 & Fr7pw6); +assign Fr7pw6 = (~(Jo4ju6 & vis_r14_o[18])); +assign Yq7pw6 = (Mr7pw6 & Tr7pw6); +assign Tr7pw6 = (~(Ep4ju6 & vis_psp_o[16])); +assign Mr7pw6 = (~(Lp4ju6 & vis_msp_o[16])); +assign Kq7pw6 = (As7pw6 & Hs7pw6); +assign Hs7pw6 = (~(Gq4ju6 & vis_r12_o[18])); +assign As7pw6 = (~(Nq4ju6 & vis_r11_o[18])); +assign Wp7pw6 = (Os7pw6 & Vs7pw6); +assign Vs7pw6 = (Ct7pw6 & Jt7pw6); +assign Jt7pw6 = (~(Wr4ju6 & vis_r10_o[18])); +assign Ct7pw6 = (~(Ds4ju6 & vis_r9_o[18])); +assign Os7pw6 = (S90iu6 & Qt7pw6); +assign Qt7pw6 = (~(Rs4ju6 & vis_r8_o[18])); +assign S90iu6 = (Xt7pw6 & Eu7pw6); +assign Eu7pw6 = (Lu7pw6 & Su7pw6); +assign Su7pw6 = (Zu7pw6 & Gv7pw6); +assign Gv7pw6 = (~(V6now6 & vis_r2_o[18])); +assign Zu7pw6 = (~(C7now6 & vis_r6_o[18])); +assign Lu7pw6 = (Nv7pw6 & Uv7pw6); +assign Uv7pw6 = (~(X7now6 & vis_r5_o[18])); +assign Nv7pw6 = (~(E8now6 & vis_r4_o[18])); +assign Xt7pw6 = (Bw7pw6 & Iw7pw6); +assign Iw7pw6 = (Pw7pw6 & Ww7pw6); +assign Ww7pw6 = (~(N9now6 & vis_r1_o[18])); +assign Pw7pw6 = (~(U9now6 & vis_r0_o[18])); +assign Bw7pw6 = (Dx7pw6 & Kx7pw6); +assign Kx7pw6 = (~(Panow6 & vis_r3_o[18])); +assign Dx7pw6 = (~(Wanow6 & vis_r7_o[18])); +assign V6miu6 = (!Fkfpw6[18]); +assign Bp7pw6 = (Rx7pw6 & Yx7pw6); +assign Yx7pw6 = (~(N5fpw6[17] & Sdaiu6)); +assign Rx7pw6 = (~(Eafpw6[18] & A3iiu6)); +assign HADDR[17] = (Ze9iu6 ? Wxdpw6 : Jshpw6[17]); +assign Wxdpw6 = (~(Fy7pw6 & My7pw6)); +assign My7pw6 = (T2iiu6 | Cm0iu6); +assign Cm0iu6 = (Mm4ju6 ? Ty7pw6 : U9miu6); +assign Ty7pw6 = (Az7pw6 & Hz7pw6); +assign Hz7pw6 = (Oz7pw6 & Vz7pw6); +assign Vz7pw6 = (C08pw6 & J08pw6); +assign J08pw6 = (~(Jo4ju6 & vis_r14_o[17])); +assign C08pw6 = (Q08pw6 & X08pw6); +assign X08pw6 = (~(Ep4ju6 & vis_psp_o[15])); +assign Q08pw6 = (~(Lp4ju6 & vis_msp_o[15])); +assign Oz7pw6 = (E18pw6 & L18pw6); +assign L18pw6 = (~(Gq4ju6 & vis_r12_o[17])); +assign E18pw6 = (~(Nq4ju6 & vis_r11_o[17])); +assign Az7pw6 = (S18pw6 & Z18pw6); +assign Z18pw6 = (G28pw6 & N28pw6); +assign N28pw6 = (~(Wr4ju6 & vis_r10_o[17])); +assign G28pw6 = (~(Ds4ju6 & vis_r9_o[17])); +assign S18pw6 = (Z90iu6 & U28pw6); +assign U28pw6 = (~(Rs4ju6 & vis_r8_o[17])); +assign Z90iu6 = (B38pw6 & I38pw6); +assign I38pw6 = (P38pw6 & W38pw6); +assign W38pw6 = (D48pw6 & K48pw6); +assign K48pw6 = (~(V6now6 & vis_r2_o[17])); +assign D48pw6 = (~(C7now6 & vis_r6_o[17])); +assign P38pw6 = (R48pw6 & Y48pw6); +assign Y48pw6 = (~(X7now6 & vis_r5_o[17])); +assign R48pw6 = (~(E8now6 & vis_r4_o[17])); +assign B38pw6 = (F58pw6 & M58pw6); +assign M58pw6 = (T58pw6 & A68pw6); +assign A68pw6 = (~(N9now6 & vis_r1_o[17])); +assign T58pw6 = (~(U9now6 & vis_r0_o[17])); +assign F58pw6 = (H68pw6 & O68pw6); +assign O68pw6 = (~(Panow6 & vis_r3_o[17])); +assign H68pw6 = (~(Wanow6 & vis_r7_o[17])); +assign U9miu6 = (!Fkfpw6[17]); +assign Fy7pw6 = (V68pw6 & C78pw6); +assign C78pw6 = (~(N5fpw6[16] & Sdaiu6)); +assign V68pw6 = (~(Eafpw6[17] & A3iiu6)); +assign HADDR[16] = (Ze9iu6 ? Pxdpw6 : Jshpw6[16]); +assign Pxdpw6 = (~(J78pw6 & Q78pw6)); +assign Q78pw6 = (T2iiu6 | Jm0iu6); +assign Jm0iu6 = (Mm4ju6 ? X78pw6 : Tcmiu6); +assign X78pw6 = (E88pw6 & L88pw6); +assign L88pw6 = (S88pw6 & Z88pw6); +assign Z88pw6 = (G98pw6 & N98pw6); +assign N98pw6 = (~(Jo4ju6 & vis_r14_o[16])); +assign G98pw6 = (U98pw6 & Ba8pw6); +assign Ba8pw6 = (~(Ep4ju6 & vis_psp_o[14])); +assign U98pw6 = (~(Lp4ju6 & vis_msp_o[14])); +assign S88pw6 = (Ia8pw6 & Pa8pw6); +assign Pa8pw6 = (~(Gq4ju6 & vis_r12_o[16])); +assign Ia8pw6 = (~(Nq4ju6 & vis_r11_o[16])); +assign E88pw6 = (Wa8pw6 & Db8pw6); +assign Db8pw6 = (Kb8pw6 & Rb8pw6); +assign Rb8pw6 = (~(Wr4ju6 & vis_r10_o[16])); +assign Kb8pw6 = (~(Ds4ju6 & vis_r9_o[16])); +assign Wa8pw6 = (Ga0iu6 & Yb8pw6); +assign Yb8pw6 = (~(Rs4ju6 & vis_r8_o[16])); +assign Ga0iu6 = (Fc8pw6 & Mc8pw6); +assign Mc8pw6 = (Tc8pw6 & Ad8pw6); +assign Ad8pw6 = (Hd8pw6 & Od8pw6); +assign Od8pw6 = (~(V6now6 & vis_r2_o[16])); +assign Hd8pw6 = (~(C7now6 & vis_r6_o[16])); +assign Tc8pw6 = (Vd8pw6 & Ce8pw6); +assign Ce8pw6 = (~(X7now6 & vis_r5_o[16])); +assign Vd8pw6 = (~(E8now6 & vis_r4_o[16])); +assign Fc8pw6 = (Je8pw6 & Qe8pw6); +assign Qe8pw6 = (Xe8pw6 & Ef8pw6); +assign Ef8pw6 = (~(N9now6 & vis_r1_o[16])); +assign Xe8pw6 = (~(U9now6 & vis_r0_o[16])); +assign Je8pw6 = (Lf8pw6 & Sf8pw6); +assign Sf8pw6 = (~(Panow6 & vis_r3_o[16])); +assign Lf8pw6 = (~(Wanow6 & vis_r7_o[16])); +assign Tcmiu6 = (!Fkfpw6[16]); +assign J78pw6 = (Zf8pw6 & Gg8pw6); +assign Gg8pw6 = (~(N5fpw6[15] & Sdaiu6)); +assign Zf8pw6 = (~(Eafpw6[16] & A3iiu6)); +assign HADDR[15] = (Ze9iu6 ? Tugpw6[13] : Jshpw6[15]); +assign Tugpw6[13] = (~(Ng8pw6 & Ug8pw6)); +assign Ug8pw6 = (~(N5fpw6[14] & Sdaiu6)); +assign Ng8pw6 = (Bh8pw6 & Ih8pw6); +assign Ih8pw6 = (T2iiu6 | Qm0iu6); +assign Qm0iu6 = (Mm4ju6 ? Ph8pw6 : Sfmiu6); +assign Ph8pw6 = (Wh8pw6 & Di8pw6); +assign Di8pw6 = (Ki8pw6 & Ri8pw6); +assign Ri8pw6 = (Yi8pw6 & Fj8pw6); +assign Fj8pw6 = (~(Jo4ju6 & vis_r14_o[15])); +assign Yi8pw6 = (Mj8pw6 & Tj8pw6); +assign Tj8pw6 = (~(Ep4ju6 & vis_psp_o[13])); +assign Mj8pw6 = (~(Lp4ju6 & vis_msp_o[13])); +assign Ki8pw6 = (Ak8pw6 & Hk8pw6); +assign Hk8pw6 = (~(Gq4ju6 & vis_r12_o[15])); +assign Ak8pw6 = (~(Nq4ju6 & vis_r11_o[15])); +assign Wh8pw6 = (Ok8pw6 & Vk8pw6); +assign Vk8pw6 = (Cl8pw6 & Jl8pw6); +assign Jl8pw6 = (~(Wr4ju6 & vis_r10_o[15])); +assign Cl8pw6 = (~(Ds4ju6 & vis_r9_o[15])); +assign Ok8pw6 = (Na0iu6 & Ql8pw6); +assign Ql8pw6 = (~(Rs4ju6 & vis_r8_o[15])); +assign Na0iu6 = (Xl8pw6 & Em8pw6); +assign Em8pw6 = (Lm8pw6 & Sm8pw6); +assign Sm8pw6 = (Zm8pw6 & Gn8pw6); +assign Gn8pw6 = (~(V6now6 & vis_r2_o[15])); +assign Zm8pw6 = (~(C7now6 & vis_r6_o[15])); +assign Lm8pw6 = (Nn8pw6 & Un8pw6); +assign Un8pw6 = (~(X7now6 & vis_r5_o[15])); +assign Nn8pw6 = (~(E8now6 & vis_r4_o[15])); +assign Xl8pw6 = (Bo8pw6 & Io8pw6); +assign Io8pw6 = (Po8pw6 & Wo8pw6); +assign Wo8pw6 = (~(N9now6 & vis_r1_o[15])); +assign Po8pw6 = (~(U9now6 & vis_r0_o[15])); +assign Bo8pw6 = (Dp8pw6 & Kp8pw6); +assign Kp8pw6 = (~(Panow6 & vis_r3_o[15])); +assign Dp8pw6 = (~(Wanow6 & vis_r7_o[15])); +assign Sfmiu6 = (!Fkfpw6[15]); +assign Bh8pw6 = (~(Eafpw6[15] & A3iiu6)); +assign HADDR[14] = (Ze9iu6 ? Tugpw6[12] : Jshpw6[14]); +assign Tugpw6[12] = (~(Rp8pw6 & Yp8pw6)); +assign Yp8pw6 = (~(N5fpw6[13] & Sdaiu6)); +assign Rp8pw6 = (Fq8pw6 & Mq8pw6); +assign Mq8pw6 = (T2iiu6 | Xm0iu6); +assign Xm0iu6 = (Mm4ju6 ? Tq8pw6 : Kimiu6); +assign Tq8pw6 = (Ar8pw6 & Hr8pw6); +assign Hr8pw6 = (Or8pw6 & Vr8pw6); +assign Vr8pw6 = (Cs8pw6 & Js8pw6); +assign Js8pw6 = (~(Jo4ju6 & vis_r14_o[14])); +assign Cs8pw6 = (Qs8pw6 & Xs8pw6); +assign Xs8pw6 = (~(Ep4ju6 & vis_psp_o[12])); +assign Qs8pw6 = (~(Lp4ju6 & vis_msp_o[12])); +assign Or8pw6 = (Et8pw6 & Lt8pw6); +assign Lt8pw6 = (~(Gq4ju6 & vis_r12_o[14])); +assign Et8pw6 = (~(Nq4ju6 & vis_r11_o[14])); +assign Ar8pw6 = (St8pw6 & Zt8pw6); +assign Zt8pw6 = (Gu8pw6 & Nu8pw6); +assign Nu8pw6 = (~(Wr4ju6 & vis_r10_o[14])); +assign Gu8pw6 = (~(Ds4ju6 & vis_r9_o[14])); +assign St8pw6 = (Ua0iu6 & Uu8pw6); +assign Uu8pw6 = (~(Rs4ju6 & vis_r8_o[14])); +assign Ua0iu6 = (Bv8pw6 & Iv8pw6); +assign Iv8pw6 = (Pv8pw6 & Wv8pw6); +assign Wv8pw6 = (Dw8pw6 & Kw8pw6); +assign Kw8pw6 = (~(V6now6 & vis_r2_o[14])); +assign Dw8pw6 = (~(C7now6 & vis_r6_o[14])); +assign Pv8pw6 = (Rw8pw6 & Yw8pw6); +assign Yw8pw6 = (~(X7now6 & vis_r5_o[14])); +assign Rw8pw6 = (~(E8now6 & vis_r4_o[14])); +assign Bv8pw6 = (Fx8pw6 & Mx8pw6); +assign Mx8pw6 = (Tx8pw6 & Ay8pw6); +assign Ay8pw6 = (~(N9now6 & vis_r1_o[14])); +assign Tx8pw6 = (~(U9now6 & vis_r0_o[14])); +assign Fx8pw6 = (Hy8pw6 & Oy8pw6); +assign Oy8pw6 = (~(Panow6 & vis_r3_o[14])); +assign Hy8pw6 = (~(Wanow6 & vis_r7_o[14])); +assign Kimiu6 = (!Fkfpw6[14]); +assign Fq8pw6 = (~(Eafpw6[14] & A3iiu6)); +assign HADDR[13] = (Ze9iu6 ? Tugpw6[11] : Jshpw6[13]); +assign Tugpw6[11] = (~(Vy8pw6 & Cz8pw6)); +assign Cz8pw6 = (~(N5fpw6[12] & Sdaiu6)); +assign Vy8pw6 = (Jz8pw6 & Qz8pw6); +assign Qz8pw6 = (T2iiu6 | En0iu6); +assign En0iu6 = (Mm4ju6 ? Xz8pw6 : Clmiu6); +assign Xz8pw6 = (E09pw6 & L09pw6); +assign L09pw6 = (S09pw6 & Z09pw6); +assign Z09pw6 = (G19pw6 & N19pw6); +assign N19pw6 = (~(Jo4ju6 & vis_r14_o[13])); +assign G19pw6 = (U19pw6 & B29pw6); +assign B29pw6 = (~(Ep4ju6 & vis_psp_o[11])); +assign U19pw6 = (~(Lp4ju6 & vis_msp_o[11])); +assign S09pw6 = (I29pw6 & P29pw6); +assign P29pw6 = (~(Gq4ju6 & vis_r12_o[13])); +assign I29pw6 = (~(Nq4ju6 & vis_r11_o[13])); +assign E09pw6 = (W29pw6 & D39pw6); +assign D39pw6 = (K39pw6 & R39pw6); +assign R39pw6 = (~(Wr4ju6 & vis_r10_o[13])); +assign K39pw6 = (~(Ds4ju6 & vis_r9_o[13])); +assign W29pw6 = (Bb0iu6 & Y39pw6); +assign Y39pw6 = (~(Rs4ju6 & vis_r8_o[13])); +assign Bb0iu6 = (F49pw6 & M49pw6); +assign M49pw6 = (T49pw6 & A59pw6); +assign A59pw6 = (H59pw6 & O59pw6); +assign O59pw6 = (~(V6now6 & vis_r2_o[13])); +assign H59pw6 = (~(C7now6 & vis_r6_o[13])); +assign T49pw6 = (V59pw6 & C69pw6); +assign C69pw6 = (~(X7now6 & vis_r5_o[13])); +assign V59pw6 = (~(E8now6 & vis_r4_o[13])); +assign F49pw6 = (J69pw6 & Q69pw6); +assign Q69pw6 = (X69pw6 & E79pw6); +assign E79pw6 = (~(N9now6 & vis_r1_o[13])); +assign X69pw6 = (~(U9now6 & vis_r0_o[13])); +assign J69pw6 = (L79pw6 & S79pw6); +assign S79pw6 = (~(Panow6 & vis_r3_o[13])); +assign L79pw6 = (~(Wanow6 & vis_r7_o[13])); +assign Clmiu6 = (!Fkfpw6[13]); +assign Jz8pw6 = (~(Eafpw6[13] & A3iiu6)); +assign HADDR[12] = (Ze9iu6 ? Ixdpw6 : Jshpw6[12]); +assign Ixdpw6 = (~(Z79pw6 & G89pw6)); +assign G89pw6 = (T2iiu6 | Ln0iu6); +assign Ln0iu6 = (Cn5ju6 ? Unmiu6 : N89pw6); +assign Cn5ju6 = (!Mm4ju6); +assign Unmiu6 = (!Fkfpw6[12]); +assign N89pw6 = (U89pw6 & B99pw6); +assign B99pw6 = (I99pw6 & P99pw6); +assign P99pw6 = (W99pw6 & Da9pw6); +assign Da9pw6 = (~(Jo4ju6 & vis_r14_o[12])); +assign W99pw6 = (Ka9pw6 & Ra9pw6); +assign Ra9pw6 = (~(Ep4ju6 & vis_psp_o[10])); +assign Ep4ju6 = (Ya9pw6 & Fb9pw6); +assign Ya9pw6 = (~(Mb9pw6 | Vq2pw6)); +assign Vq2pw6 = (!Vrfhu6); +assign Ka9pw6 = (~(Lp4ju6 & vis_msp_o[10])); +assign Lp4ju6 = (Tb9pw6 & Fb9pw6); +assign Tb9pw6 = (~(Mb9pw6 | Vrfhu6)); +assign I99pw6 = (Ac9pw6 & Hc9pw6); +assign Hc9pw6 = (~(Gq4ju6 & vis_r12_o[12])); +assign Ac9pw6 = (~(Nq4ju6 & vis_r11_o[12])); +assign U89pw6 = (Oc9pw6 & Vc9pw6); +assign Vc9pw6 = (Cd9pw6 & Jd9pw6); +assign Jd9pw6 = (~(Wr4ju6 & vis_r10_o[12])); +assign Cd9pw6 = (~(Ds4ju6 & vis_r9_o[12])); +assign Oc9pw6 = (Ib0iu6 & Qd9pw6); +assign Qd9pw6 = (~(Rs4ju6 & vis_r8_o[12])); +assign Ib0iu6 = (Xd9pw6 & Ee9pw6); +assign Ee9pw6 = (Le9pw6 & Se9pw6); +assign Se9pw6 = (Ze9pw6 & Gf9pw6); +assign Gf9pw6 = (~(V6now6 & vis_r2_o[12])); +assign Ze9pw6 = (~(C7now6 & vis_r6_o[12])); +assign Le9pw6 = (Nf9pw6 & Uf9pw6); +assign Uf9pw6 = (~(X7now6 & vis_r5_o[12])); +assign Nf9pw6 = (~(E8now6 & vis_r4_o[12])); +assign Xd9pw6 = (Bg9pw6 & Ig9pw6); +assign Ig9pw6 = (Pg9pw6 & Wg9pw6); +assign Wg9pw6 = (~(N9now6 & vis_r1_o[12])); +assign Pg9pw6 = (~(U9now6 & vis_r0_o[12])); +assign Bg9pw6 = (Dh9pw6 & Kh9pw6); +assign Kh9pw6 = (~(Panow6 & vis_r3_o[12])); +assign Dh9pw6 = (~(Wanow6 & vis_r7_o[12])); +assign T2iiu6 = (!B7iiu6); +assign Z79pw6 = (Rh9pw6 & Yh9pw6); +assign Yh9pw6 = (~(N5fpw6[11] & Sdaiu6)); +assign Rh9pw6 = (~(Eafpw6[12] & A3iiu6)); +assign HADDR[0] = (~(Fi9pw6 & Mi9pw6)); +assign Mi9pw6 = (~(Ti9pw6 & E4yhu6)); +assign E4yhu6 = (~(Aphpw6[1] | Aphpw6[2])); +assign Ti9pw6 = (Ne3pw6 & Tnhpw6[0]); +assign Ne3pw6 = (~(Ze9iu6 | Wqzhu6)); +assign Wqzhu6 = (Ho4iu6 & H9xiu6); +assign H9xiu6 = (!Eq4iu6); +assign Eq4iu6 = (Cjhpw6[3] & Iqzhu6); +assign Ho4iu6 = (Cjhpw6[2] & Iqzhu6); +assign Iqzhu6 = (Lznhu6 ^ Dtnhu6); +assign Fi9pw6 = (~(My0iu6 & Ze9iu6)); +assign Ze9iu6 = (~(Aj9pw6 & Krzhu6)); +assign Krzhu6 = (~(Gpzhu6 | Sqhpw6[1])); +assign Gpzhu6 = (!Sqhpw6[0]); +assign Aj9pw6 = (HMASTER & Ebxiu6); +assign Ebxiu6 = (!Jzmhu6); +assign HMASTER = (~(Ympiu6 | S18iu6)); +assign S18iu6 = (Hj9pw6 & Oj9pw6); +assign Oj9pw6 = (~(Sdaiu6 | Vj9pw6)); +assign Sdaiu6 = (!Ck9pw6); +assign Hj9pw6 = (Lrhiu6 & I1aiu6); +assign My0iu6 = (Jk9pw6 & J71iu6); +assign J71iu6 = (~(X71iu6 | Mnxow6)); +assign Mnxow6 = (Ed3pw6 & Qk9pw6); +assign Qk9pw6 = (~(Xk9pw6 & El9pw6)); +assign El9pw6 = (~(Frziu6 & Xe8iu6)); +assign Xk9pw6 = (~(Es1ju6 | Vjhow6)); +assign Ed3pw6 = (!X71iu6); +assign X71iu6 = (~(Ll9pw6 & Sl9pw6)); +assign Sl9pw6 = (Zl9pw6 & Gm9pw6); +assign Zl9pw6 = (Mzlow6 | Nlaiu6); +assign Mzlow6 = (Ey2ju6 | Tfjiu6); +assign Ey2ju6 = (!Fd0iu6); +assign Ll9pw6 = (Nm9pw6 & He6ju6); +assign He6ju6 = (!Ww8ow6); +assign Ww8ow6 = (Tr0iu6 & Nlaiu6); +assign Nm9pw6 = (~(H3aju6 & Sq3ju6)); +assign Jk9pw6 = (~(Ympiu6 | Ta3pw6)); +assign Ta3pw6 = (!Ay8iu6); +assign Ay8iu6 = (~(Um9pw6 & Bn9pw6)); +assign Bn9pw6 = (~(B7iiu6 & Go0iu6)); +assign Go0iu6 = (Mm4ju6 ? In9pw6 : Fkfpw6[0]); +assign Mm4ju6 = (Pn9pw6 & Wn9pw6); +assign Wn9pw6 = (Do9pw6 & Ko9pw6); +assign Ko9pw6 = (Ro9pw6 & Kgaiu6); +assign Ro9pw6 = (Yo9pw6 | Fp9pw6); +assign Do9pw6 = (Mp9pw6 & Ty8ow6); +assign Ty8ow6 = (Qxaiu6 | K9aiu6); +assign Mp9pw6 = (~(Tp9pw6 & Toaiu6)); +assign Toaiu6 = (Pugiu6 & Ii0iu6); +assign Tp9pw6 = (~(Nlaiu6 | Cyfpw6[4])); +assign Pn9pw6 = (Aq9pw6 & Hq9pw6); +assign Hq9pw6 = (~(Tr0iu6 & Oq9pw6)); +assign Oq9pw6 = (W8aiu6 | Oiaiu6); +assign Aq9pw6 = (Vq9pw6 & Cr9pw6); +assign Cr9pw6 = (~(Jr9pw6 & Frziu6)); +assign Jr9pw6 = (~(Lkaiu6 | C0ehu6)); +assign Vq9pw6 = (~(Qr9pw6 & Fhaiu6)); +assign Fhaiu6 = (Nlaiu6 & Mr0iu6); +assign Qr9pw6 = (~(As0iu6 | Cyfpw6[3])); +assign In9pw6 = (~(Xr9pw6 & Es9pw6)); +assign Es9pw6 = (Ls9pw6 & Ss9pw6); +assign Ss9pw6 = (Zs9pw6 & Gt9pw6); +assign Gt9pw6 = (~(Jo4ju6 & vis_r14_o[0])); +assign Jo4ju6 = (~(Yo9pw6 | Nt9pw6)); +assign Zs9pw6 = (~(Gq4ju6 & vis_r12_o[0])); +assign Gq4ju6 = (~(Yo9pw6 | Ut9pw6)); +assign Yo9pw6 = (!Fb9pw6); +assign Fb9pw6 = (~(Ssniu6 | Fpniu6)); +assign Ls9pw6 = (Bu9pw6 & Iu9pw6); +assign Iu9pw6 = (~(Nq4ju6 & vis_r11_o[0])); +assign Nq4ju6 = (~(Pu9pw6 | Fp9pw6)); +assign Bu9pw6 = (~(Wr4ju6 & vis_r10_o[0])); +assign Wr4ju6 = (~(Pu9pw6 | Nt9pw6)); +assign Xr9pw6 = (Wu9pw6 & Dc0iu6); +assign Dc0iu6 = (Dv9pw6 & Kv9pw6); +assign Kv9pw6 = (Rv9pw6 & Yv9pw6); +assign Yv9pw6 = (Fw9pw6 & Mw9pw6); +assign Mw9pw6 = (~(V6now6 & vis_r2_o[0])); +assign V6now6 = (~(Tw9pw6 | Nt9pw6)); +assign Fw9pw6 = (~(C7now6 & vis_r6_o[0])); +assign C7now6 = (~(Ax9pw6 | Nt9pw6)); +assign Nt9pw6 = (Mxuow6 | H2fpw6[0]); +assign Rv9pw6 = (Hx9pw6 & Ox9pw6); +assign Ox9pw6 = (~(X7now6 & vis_r5_o[0])); +assign X7now6 = (~(Mb9pw6 | Ax9pw6)); +assign Hx9pw6 = (~(E8now6 & vis_r4_o[0])); +assign E8now6 = (~(Ut9pw6 | Ax9pw6)); +assign Dv9pw6 = (Vx9pw6 & Cy9pw6); +assign Cy9pw6 = (Jy9pw6 & Qy9pw6); +assign Qy9pw6 = (~(N9now6 & vis_r1_o[0])); +assign N9now6 = (~(Mb9pw6 | Tw9pw6)); +assign Jy9pw6 = (~(U9now6 & vis_r0_o[0])); +assign U9now6 = (~(Ut9pw6 | Tw9pw6)); +assign Vx9pw6 = (Xy9pw6 & Ez9pw6); +assign Ez9pw6 = (~(Panow6 & vis_r3_o[0])); +assign Panow6 = (~(Fp9pw6 | Tw9pw6)); +assign Tw9pw6 = (H2fpw6[2] | H2fpw6[3]); +assign Xy9pw6 = (~(Wanow6 & vis_r7_o[0])); +assign Wanow6 = (~(Fp9pw6 | Ax9pw6)); +assign Ax9pw6 = (Fpniu6 | H2fpw6[3]); +assign Fpniu6 = (!H2fpw6[2]); +assign Fp9pw6 = (Vqniu6 | Mxuow6); +assign Mxuow6 = (!H2fpw6[1]); +assign Wu9pw6 = (Lz9pw6 & Sz9pw6); +assign Sz9pw6 = (~(Ds4ju6 & vis_r9_o[0])); +assign Ds4ju6 = (~(Pu9pw6 | Mb9pw6)); +assign Mb9pw6 = (Vqniu6 | H2fpw6[1]); +assign Vqniu6 = (!H2fpw6[0]); +assign Lz9pw6 = (~(Rs4ju6 & vis_r8_o[0])); +assign Rs4ju6 = (~(Pu9pw6 | Ut9pw6)); +assign Ut9pw6 = (H2fpw6[0] | H2fpw6[1]); +assign Pu9pw6 = (Ssniu6 | H2fpw6[2]); +assign Ssniu6 = (!H2fpw6[3]); +assign B7iiu6 = (Zz9pw6 & Ck9pw6); +assign Zz9pw6 = (~(G0apw6 & N0apw6)); +assign N0apw6 = (U0apw6 & B1apw6); +assign B1apw6 = (~(Vxniu6 & Cyfpw6[0])); +assign Vxniu6 = (~(Mjfiu6 | Tr0iu6)); +assign U0apw6 = (I1apw6 & P1apw6); +assign P1apw6 = (~(W1apw6 & Fq8iu6)); +assign Fq8iu6 = (H4ghu6 & Nlaiu6); +assign W1apw6 = (~(Cyfpw6[3] | Y7ghu6)); +assign I1apw6 = (~(F9aju6 & Kr7ow6)); +assign F9aju6 = (Cyfpw6[1] & Ii0iu6); +assign G0apw6 = (D2apw6 & K2apw6); +assign K2apw6 = (Uvziu6 | Cyfpw6[5]); +assign D2apw6 = (R2apw6 & Y2apw6); +assign Y2apw6 = (~(Z6aiu6 & Y2oiu6)); +assign R2apw6 = (~(F3aiu6 & Tr0iu6)); +assign Um9pw6 = (~(Eafpw6[0] & A3iiu6)); +assign A3iiu6 = (F3apw6 & Ck9pw6); +assign Ck9pw6 = (~(M3apw6 & T3apw6)); +assign T3apw6 = (A4apw6 & H4apw6); +assign H4apw6 = (O4apw6 & V4apw6); +assign V4apw6 = (~(C5apw6 & Mfjiu6)); +assign C5apw6 = (~(Sbghu6 | Cyfpw6[6])); +assign O4apw6 = (J5apw6 & Td0iu6); +assign J5apw6 = (~(Cyfpw6[7] & Q5apw6)); +assign Q5apw6 = (X5apw6 | I82ju6); +assign I82ju6 = (Apaiu6 & L45iu6); +assign X5apw6 = (Cyfpw6[4] ? Z6aiu6 : N1aow6); +assign N1aow6 = (Wwziu6 & Sijiu6); +assign Sijiu6 = (!N2ghu6); +assign A4apw6 = (E6apw6 & L6apw6); +assign L6apw6 = (~(S6apw6 & Gwyiu6)); +assign S6apw6 = (~(Kq0iu6 | Ae0iu6)); +assign E6apw6 = (Z6apw6 & G7apw6); +assign G7apw6 = (~(N7apw6 & Hzziu6)); +assign N7apw6 = (~(Tr0iu6 | H4ghu6)); +assign Z6apw6 = (~(U7apw6 & B8apw6)); +assign U7apw6 = (~(Nloiu6 | Cyfpw6[4])); +assign M3apw6 = (I8apw6 & P8apw6); +assign P8apw6 = (W8apw6 & Cq3pw6); +assign Cq3pw6 = (Mjfiu6 | Mr0iu6); +assign Mjfiu6 = (!Xzmiu6); +assign Xzmiu6 = (Ii0iu6 & Tfjiu6); +assign W8apw6 = (D9apw6 & Oq1ju6); +assign Oq1ju6 = (~(Qe8iu6 & G47ow6)); +assign G47ow6 = (Xe8iu6 & Tfjiu6); +assign Qe8iu6 = (~(P1bow6 | C0ehu6)); +assign D9apw6 = (~(K9apw6 & R9apw6)); +assign R9apw6 = (~(Qxaiu6 | Cyfpw6[5])); +assign K9apw6 = (Yljiu6 & Qyniu6); +assign I8apw6 = (Y9apw6 & Rcziu6); +assign Rcziu6 = (Faapw6 & Oe8ow6); +assign Oe8ow6 = (K9aiu6 | Tr0iu6); +assign Faapw6 = (~(Gwyiu6 & Maapw6)); +assign Maapw6 = (Vbiow6 | Y0jiu6); +assign Y0jiu6 = (H4ghu6 & It2ju6); +assign Vbiow6 = (~(Xojiu6 | Kq0iu6)); +assign Y9apw6 = (Taapw6 & Abapw6); +assign Abapw6 = (~(Hbapw6 & Hiaiu6)); +assign Hbapw6 = (~(Iuniu6 | Nlaiu6)); +assign Taapw6 = (~(Ls1ju6 & Md0iu6)); +assign Md0iu6 = (~(Cyfpw6[0] | Cyfpw6[4])); +assign Ls1ju6 = (Apaiu6 & Jjhiu6); +assign Apaiu6 = (~(Jcaiu6 | Sbghu6)); +assign F3apw6 = (~(Obapw6 & Vbapw6)); +assign Vbapw6 = (Ccapw6 & Jcapw6); +assign Jcapw6 = (~(Jf6ju6 | Pthiu6)); +assign Jf6ju6 = (Tr0iu6 & Ii0iu6); +assign Ccapw6 = (Qcapw6 & Xcapw6); +assign Xcapw6 = (~(Edapw6 & Owoiu6)); +assign Owoiu6 = (Cyfpw6[3] & Xe8iu6); +assign Edapw6 = (~(Cyfpw6[4] | Y7ghu6)); +assign Qcapw6 = (~(H4ghu6 & Ldapw6)); +assign Ldapw6 = (Cyfpw6[4] | A3aju6); +assign A3aju6 = (Cyfpw6[0] & Cyfpw6[1]); +assign Obapw6 = (Sdapw6 & Zdapw6); +assign Zdapw6 = (Geapw6 & Wh7ju6); +assign Wh7ju6 = (O60ju6 | Cyfpw6[0]); +assign O60ju6 = (!Vjhow6); +assign Vjhow6 = (H4ghu6 & Cyfpw6[5]); +assign Geapw6 = (Tfjiu6 | Lkaiu6); +assign Sdapw6 = (Cyfpw6[7] & Neapw6); +assign Neapw6 = (Qxaiu6 | Tr0iu6); +assign Ympiu6 = (!Ob3pw6); +assign Ob3pw6 = (~(Ueapw6 & Bfapw6)); +assign Bfapw6 = (Aphiu6 & Ifapw6); +assign Ifapw6 = (~(Pfapw6 & Srhiu6)); +assign Srhiu6 = (~(B7qow6 & Et8iu6)); +assign Pfapw6 = (vis_pc_o[0] ? Dgapw6 : Wfapw6); +assign Dgapw6 = (Kgapw6 & Rgapw6); +assign Rgapw6 = (~(Juzhu6 & Ophiu6)); +assign Juzhu6 = (~(Sufpw6[1] & Ygapw6)); +assign Kgapw6 = (Jjhiu6 | Dxfhu6); +assign Wfapw6 = (~(Ophiu6 & N6piu6)); +assign N6piu6 = (!Pkciu6); +assign Pkciu6 = (Sufpw6[0] & Ygapw6); +assign Ophiu6 = (~(B7qow6 & U6qow6)); +assign U6qow6 = (!Gu8iu6); +assign Gu8iu6 = (Kgaiu6 & Fhapw6); +assign Fhapw6 = (~(Yp8iu6 & Hzziu6)); +assign Yp8iu6 = (Cyfpw6[5] & Nlaiu6); +assign Kgaiu6 = (!Uoziu6); +assign Uoziu6 = (L78ju6 & Y7ghu6); +assign Aphiu6 = (I1aiu6 & Dp8iu6); +assign Dp8iu6 = (!LOCKUP); +assign LOCKUP = (~(Mhapw6 & Thapw6)); +assign Thapw6 = (~(Aiapw6 & H3aju6)); +assign Aiapw6 = (Mfjiu6 & Sbghu6); +assign Mhapw6 = (Hiapw6 & Oiapw6); +assign Oiapw6 = (~(Omyiu6 & Viapw6)); +assign Viapw6 = (~(Cjapw6 & Jjapw6)); +assign Jjapw6 = (~(Qjapw6 & Xjapw6)); +assign Xjapw6 = (Kxziu6 & Kr7ow6); +assign Kr7ow6 = (~(Vwaiu6 | H4ghu6)); +assign Qjapw6 = (~(Ruaiu6 | Wfoiu6)); +assign Ruaiu6 = (!V9ghu6); +assign Cjapw6 = (~(Ekapw6 & Lkapw6)); +assign Lkapw6 = (~(Y7ghu6 | H4ghu6)); +assign Ekapw6 = (~(Qjaiu6 | Cyfpw6[5])); +assign Hiapw6 = (~(V9ghu6 & Skapw6)); +assign Skapw6 = (~(Xxaiu6 & Zkapw6)); +assign Xxaiu6 = (Glapw6 & Nlapw6); +assign Nlapw6 = (Ulapw6 & Bmapw6); +assign Bmapw6 = (~(Imapw6 & Buaow6)); +assign Imapw6 = (~(Ntgiu6 | P0biu6)); +assign P0biu6 = (Pmapw6 & Wmapw6); +assign Wmapw6 = (~(Dnapw6 & Knapw6)); +assign Knapw6 = (Sbrow6 | B3gpw6[1]); +assign Dnapw6 = (Rnapw6 & Gcrow6); +assign Gcrow6 = (~(Ynapw6 & Foapw6)); +assign Foapw6 = (Moapw6 & Toapw6); +assign Toapw6 = (Apapw6 & Hpapw6); +assign Hpapw6 = (Opapw6 & Vpapw6); +assign Vpapw6 = (Cqapw6 & Oyfiu6); +assign Cqapw6 = (~(Arfiu6 | Ahbiu6)); +assign Opapw6 = (~(Lhdiu6 | Nbdiu6)); +assign Apapw6 = (Jqapw6 & Qqapw6); +assign Qqapw6 = (~(Jndiu6 | Kkdiu6)); +assign Jqapw6 = (~(V5giu6 | Iqdiu6)); +assign Moapw6 = (Xqapw6 & Erapw6); +assign Erapw6 = (Lrapw6 & Srapw6); +assign Srapw6 = (Zrapw6 & Coxiu6); +assign Zrapw6 = (~(Bggiu6 | Z7giu6)); +assign Lrapw6 = (~(Umgiu6 | Odfiu6)); +assign Xqapw6 = (Gsapw6 & Nsapw6); +assign Nsapw6 = (~(Hl7iu6 | Yogiu6)); +assign Gsapw6 = (~(Ajgiu6 | Qrgiu6)); +assign Ynapw6 = (Usapw6 & Btapw6); +assign Btapw6 = (Itapw6 & Ptapw6); +assign Ptapw6 = (Wtapw6 & Duapw6); +assign Duapw6 = (Kuapw6 & Giyiu6); +assign Kuapw6 = (~(Webiu6 | Rhgiu6)); +assign Wtapw6 = (~(Ivfiu6 | Etfiu6)); +assign Ivfiu6 = (!Ubyiu6); +assign Itapw6 = (Ruapw6 & Yuapw6); +assign Yuapw6 = (~(O8diu6 | Mxfiu6)); +assign Ruapw6 = (~(N1giu6 | Mediu6)); +assign Usapw6 = (Fvapw6 & Mvapw6); +assign Mvapw6 = (Tvapw6 & Awapw6); +assign Awapw6 = (~(R3giu6 | Hwhiu6)); +assign Tvapw6 = (~(Hcgiu6 | Dagiu6)); +assign Hcgiu6 = (!Spxiu6); +assign Fvapw6 = (Hwapw6 & Owapw6); +assign Owapw6 = (~(G9fiu6 | Eegiu6)); +assign Hwapw6 = (~(Sffiu6 | Kbfiu6)); +assign Rnapw6 = (~(Vwapw6 & Cxapw6)); +assign Cxapw6 = (~(Sbrow6 & B3gpw6[1])); +assign Sbrow6 = (Jxapw6 & Qxapw6); +assign Qxapw6 = (Xxapw6 & Eyapw6); +assign Eyapw6 = (Lyapw6 & Syapw6); +assign Syapw6 = (Zyapw6 & Gzapw6); +assign Gzapw6 = (Nzapw6 & Uzapw6); +assign Uzapw6 = (~(B3gpw6[1] & Qrgiu6)); +assign Nzapw6 = (B0bpw6 & I0bpw6); +assign I0bpw6 = (~(L1gpw6[1] & Rhgiu6)); +assign B0bpw6 = (~(H8gpw6[1] & Ajgiu6)); +assign Zyapw6 = (P0bpw6 & W0bpw6); +assign W0bpw6 = (U2uow6 | Ucxiu6); +assign U2uow6 = (!R4gpw6[1]); +assign P0bpw6 = (~(R4gpw6[3] & Yogiu6)); +assign Lyapw6 = (D1bpw6 & K1bpw6); +assign K1bpw6 = (R1bpw6 & Y1bpw6); +assign Y1bpw6 = (Fytow6 | Agxiu6); +assign Fytow6 = (!R4gpw6[5]); +assign R1bpw6 = (Yxtow6 | Qhxiu6); +assign Qhxiu6 = (!Sffiu6); +assign Yxtow6 = (!R4gpw6[7]); +assign D1bpw6 = (F2bpw6 & M2bpw6); +assign M2bpw6 = (~(R4gpw6[9] & Odfiu6)); +assign F2bpw6 = (Yqtow6 | Wkxiu6); +assign Wkxiu6 = (!Kbfiu6); +assign Yqtow6 = (!R4gpw6[11]); +assign Xxapw6 = (T2bpw6 & A3bpw6); +assign A3bpw6 = (H3bpw6 & O3bpw6); +assign O3bpw6 = (V3bpw6 & C4bpw6); +assign C4bpw6 = (Mrtow6 | Mmxiu6); +assign Mmxiu6 = (!G9fiu6); +assign Mrtow6 = (!R4gpw6[13]); +assign V3bpw6 = (J4bpw6 & Q4bpw6); +assign Q4bpw6 = (Frtow6 | Coxiu6); +assign Frtow6 = (!R4gpw6[15]); +assign J4bpw6 = (Xluow6 | Gfgiu6); +assign Xluow6 = (!R4gpw6[17]); +assign H3bpw6 = (X4bpw6 & E5bpw6); +assign E5bpw6 = (Qluow6 | Jdgiu6); +assign Qluow6 = (!R4gpw6[19]); +assign X4bpw6 = (Pouow6 | Spxiu6); +assign Pouow6 = (!R4gpw6[21]); +assign T2bpw6 = (L5bpw6 & S5bpw6); +assign S5bpw6 = (Z5bpw6 & G6bpw6); +assign G6bpw6 = (Wouow6 | Irxiu6); +assign Wouow6 = (!R4gpw6[23]); +assign Z5bpw6 = (~(R4gpw6[25] & Z7giu6)); +assign L5bpw6 = (N6bpw6 & U6bpw6); +assign U6bpw6 = (Ihuow6 | Ouxiu6); +assign Ihuow6 = (!R4gpw6[27]); +assign N6bpw6 = (~(R4gpw6[29] & R3giu6)); +assign Jxapw6 = (B7bpw6 & I7bpw6); +assign I7bpw6 = (P7bpw6 & W7bpw6); +assign W7bpw6 = (D8bpw6 & K8bpw6); +assign K8bpw6 = (R8bpw6 & Y8bpw6); +assign Y8bpw6 = (Mcuow6 | Nxxiu6); +assign Mcuow6 = (!R4gpw6[31]); +assign R8bpw6 = (F9bpw6 & M9bpw6); +assign M9bpw6 = (~(R4gpw6[33] & Hwhiu6)); +assign F9bpw6 = (Dksow6 | M0yiu6); +assign M0yiu6 = (!Iqdiu6); +assign Dksow6 = (!R4gpw6[35]); +assign D8bpw6 = (T9bpw6 & Aabpw6); +assign Aabpw6 = (Ehsow6 | C2yiu6); +assign C2yiu6 = (!Jndiu6); +assign Ehsow6 = (!R4gpw6[37]); +assign T9bpw6 = (~(R4gpw6[39] & Kkdiu6)); +assign P7bpw6 = (Habpw6 & Oabpw6); +assign Oabpw6 = (Vabpw6 & Cbbpw6); +assign Cbbpw6 = (~(R4gpw6[41] & Lhdiu6)); +assign Vabpw6 = (Q9sow6 | Y6yiu6); +assign Y6yiu6 = (!Mediu6); +assign Q9sow6 = (!R4gpw6[43]); +assign Habpw6 = (Jbbpw6 & Qbbpw6); +assign Qbbpw6 = (Ubsow6 | O8yiu6); +assign O8yiu6 = (!Nbdiu6); +assign Ubsow6 = (!R4gpw6[45]); +assign Jbbpw6 = (~(R4gpw6[47] & O8diu6)); +assign B7bpw6 = (Xbbpw6 & Ecbpw6); +assign Ecbpw6 = (Lcbpw6 & Scbpw6); +assign Scbpw6 = (Zcbpw6 & Gdbpw6); +assign Gdbpw6 = (Otsow6 | Oyfiu6); +assign Otsow6 = (!R4gpw6[49]); +assign Zcbpw6 = (Htsow6 | Rwfiu6); +assign Htsow6 = (!R4gpw6[51]); +assign Lcbpw6 = (Ndbpw6 & Udbpw6); +assign Udbpw6 = (Vtsow6 | Ubyiu6); +assign Vtsow6 = (!R4gpw6[53]); +assign Ndbpw6 = (Cusow6 | Kdyiu6); +assign Cusow6 = (!R4gpw6[55]); +assign Xbbpw6 = (Bebpw6 & Iebpw6); +assign Iebpw6 = (Pebpw6 & Webpw6); +assign Webpw6 = (~(R4gpw6[57] & Arfiu6)); +assign Pebpw6 = (V7tow6 | Qgyiu6); +assign V7tow6 = (!R4gpw6[59]); +assign Bebpw6 = (Dfbpw6 & Kfbpw6); +assign Kfbpw6 = (E2tow6 | Giyiu6); +assign Giyiu6 = (!Lyhiu6); +assign E2tow6 = (!R4gpw6[61]); +assign Dfbpw6 = (~(R4gpw6[63] & Webiu6)); +assign Vwapw6 = (Idrow6 & Xglow6); +assign Xglow6 = (!B3gpw6[0]); +assign Idrow6 = (~(Rfbpw6 & Yfbpw6)); +assign Yfbpw6 = (Fgbpw6 & Mgbpw6); +assign Mgbpw6 = (Tgbpw6 & Ahbpw6); +assign Ahbpw6 = (Hhbpw6 & Ohbpw6); +assign Ohbpw6 = (Vhbpw6 & Cibpw6); +assign Cibpw6 = (~(B3gpw6[0] & Qrgiu6)); +assign Qrgiu6 = (F8row6 & Jibpw6); +assign Vhbpw6 = (Qibpw6 & Xibpw6); +assign Xibpw6 = (~(L1gpw6[0] & Rhgiu6)); +assign Rhgiu6 = (Ejbpw6 & A9row6); +assign Ejbpw6 = (Ljbpw6 & H9row6); +assign Qibpw6 = (~(H8gpw6[0] & Ajgiu6)); +assign Ajgiu6 = (F8row6 & Ljbpw6); +assign F8row6 = (Sjbpw6 & H9row6); +assign Hhbpw6 = (Zjbpw6 & Gkbpw6); +assign Gkbpw6 = (B3uow6 | Ucxiu6); +assign Ucxiu6 = (!Hl7iu6); +assign Hl7iu6 = (Nkbpw6 & Ukbpw6); +assign B3uow6 = (!R4gpw6[0]); +assign Zjbpw6 = (~(R4gpw6[2] & Yogiu6)); +assign Yogiu6 = (~(Blbpw6 | Ilbpw6)); +assign Tgbpw6 = (Plbpw6 & Wlbpw6); +assign Wlbpw6 = (Dmbpw6 & Kmbpw6); +assign Kmbpw6 = (J0uow6 | Agxiu6); +assign Agxiu6 = (!Umgiu6); +assign Umgiu6 = (Nkbpw6 & A9row6); +assign J0uow6 = (!R4gpw6[4]); +assign Dmbpw6 = (~(R4gpw6[6] & Sffiu6)); +assign Sffiu6 = (Nkbpw6 & Sjbpw6); +assign Nkbpw6 = (!Blbpw6); +assign Blbpw6 = (~(Rmbpw6 & M8row6)); +assign Plbpw6 = (Ymbpw6 & Fnbpw6); +assign Fnbpw6 = (~(R4gpw6[8] & Odfiu6)); +assign Odfiu6 = (~(Mnbpw6 | Tnbpw6)); +assign Ymbpw6 = (~(R4gpw6[10] & Kbfiu6)); +assign Kbfiu6 = (Aobpw6 & Hobpw6); +assign Fgbpw6 = (Oobpw6 & Vobpw6); +assign Vobpw6 = (Cpbpw6 & Jpbpw6); +assign Jpbpw6 = (Qpbpw6 & Xpbpw6); +assign Xpbpw6 = (~(R4gpw6[12] & G9fiu6)); +assign G9fiu6 = (~(Mnbpw6 | Eqbpw6)); +assign Mnbpw6 = (!Aobpw6); +assign Qpbpw6 = (Lqbpw6 & Sqbpw6); +assign Sqbpw6 = (Qttow6 | Coxiu6); +assign Coxiu6 = (!C7fiu6); +assign C7fiu6 = (Aobpw6 & Sjbpw6); +assign Aobpw6 = (Zqbpw6 & Rmbpw6); +assign Qttow6 = (!R4gpw6[14]); +assign Lqbpw6 = (Iouow6 | Gfgiu6); +assign Gfgiu6 = (!Bggiu6); +assign Bggiu6 = (~(Grbpw6 | Tnbpw6)); +assign Iouow6 = (!R4gpw6[16]); +assign Cpbpw6 = (Nrbpw6 & Urbpw6); +assign Urbpw6 = (~(R4gpw6[18] & Eegiu6)); +assign Eegiu6 = (!Jdgiu6); +assign Jdgiu6 = (Grbpw6 | Ilbpw6); +assign Nrbpw6 = (Aruow6 | Spxiu6); +assign Spxiu6 = (Grbpw6 | Eqbpw6); +assign Aruow6 = (!R4gpw6[20]); +assign Oobpw6 = (Bsbpw6 & Isbpw6); +assign Isbpw6 = (Psbpw6 & Wsbpw6); +assign Wsbpw6 = (~(R4gpw6[22] & Dagiu6)); +assign Dagiu6 = (!Irxiu6); +assign Irxiu6 = (Grbpw6 | Dtbpw6); +assign Grbpw6 = (~(Rmbpw6 & Jibpw6)); +assign Psbpw6 = (~(R4gpw6[24] & Z7giu6)); +assign Z7giu6 = (!Ysxiu6); +assign Ysxiu6 = (~(Ktbpw6 & Rmbpw6)); +assign Ktbpw6 = (Ljbpw6 & Ukbpw6); +assign Bsbpw6 = (Rtbpw6 & Ytbpw6); +assign Ytbpw6 = (~(R4gpw6[26] & V5giu6)); +assign V5giu6 = (!Ouxiu6); +assign Ouxiu6 = (~(Fubpw6 & Rmbpw6)); +assign Fubpw6 = (Ljbpw6 & Hobpw6); +assign Rtbpw6 = (~(R4gpw6[28] & R3giu6)); +assign R3giu6 = (Mubpw6 & Rmbpw6); +assign Mubpw6 = (A9row6 & Ljbpw6); +assign Rfbpw6 = (Tubpw6 & Avbpw6); +assign Avbpw6 = (Hvbpw6 & Ovbpw6); +assign Ovbpw6 = (Vvbpw6 & Cwbpw6); +assign Cwbpw6 = (Jwbpw6 & Qwbpw6); +assign Qwbpw6 = (~(R4gpw6[30] & N1giu6)); +assign N1giu6 = (!Nxxiu6); +assign Nxxiu6 = (~(Xwbpw6 & Rmbpw6)); +assign Rmbpw6 = (vis_ipsr_o[4] & Vhbiu6); +assign Xwbpw6 = (Sjbpw6 & Ljbpw6); +assign Jwbpw6 = (Exbpw6 & Lxbpw6); +assign Lxbpw6 = (~(R4gpw6[32] & Hwhiu6)); +assign Hwhiu6 = (~(Sxbpw6 | Tnbpw6)); +assign Exbpw6 = (~(R4gpw6[34] & Iqdiu6)); +assign Iqdiu6 = (Zxbpw6 & Hobpw6); +assign Vvbpw6 = (Gybpw6 & Nybpw6); +assign Nybpw6 = (~(R4gpw6[36] & Jndiu6)); +assign Jndiu6 = (Zxbpw6 & A9row6); +assign Gybpw6 = (Lhsow6 | S3yiu6); +assign S3yiu6 = (!Kkdiu6); +assign Kkdiu6 = (Sjbpw6 & Zxbpw6); +assign Zxbpw6 = (!Sxbpw6); +assign Sxbpw6 = (~(Uybpw6 & M8row6)); +assign Lhsow6 = (!R4gpw6[38]); +assign Hvbpw6 = (Bzbpw6 & Izbpw6); +assign Izbpw6 = (Pzbpw6 & Wzbpw6); +assign Wzbpw6 = (~(R4gpw6[40] & Lhdiu6)); +assign Lhdiu6 = (~(D0cpw6 | Tnbpw6)); +assign Pzbpw6 = (~(R4gpw6[42] & Mediu6)); +assign Mediu6 = (K0cpw6 & Hobpw6); +assign Bzbpw6 = (R0cpw6 & Y0cpw6); +assign Y0cpw6 = (~(R4gpw6[44] & Nbdiu6)); +assign Nbdiu6 = (~(Eqbpw6 | D0cpw6)); +assign D0cpw6 = (!K0cpw6); +assign R0cpw6 = (Bcsow6 | Eayiu6); +assign Eayiu6 = (!O8diu6); +assign O8diu6 = (Sjbpw6 & K0cpw6); +assign K0cpw6 = (Zqbpw6 & Uybpw6); +assign Zqbpw6 = (~(Tfciu6 | vis_ipsr_o[3])); +assign Bcsow6 = (!R4gpw6[46]); +assign Tubpw6 = (F1cpw6 & M1cpw6); +assign M1cpw6 = (T1cpw6 & A2cpw6); +assign A2cpw6 = (H2cpw6 & O2cpw6); +assign O2cpw6 = (Yysow6 | Oyfiu6); +assign Oyfiu6 = (!Jzfiu6); +assign Jzfiu6 = (~(V2cpw6 | Tnbpw6)); +assign Tnbpw6 = (!Ukbpw6); +assign Yysow6 = (!R4gpw6[48]); +assign H2cpw6 = (~(R4gpw6[50] & Mxfiu6)); +assign Mxfiu6 = (!Rwfiu6); +assign Rwfiu6 = (V2cpw6 | Ilbpw6); +assign T1cpw6 = (C3cpw6 & J3cpw6); +assign J3cpw6 = (Uwsow6 | Ubyiu6); +assign Ubyiu6 = (Eqbpw6 | V2cpw6); +assign Eqbpw6 = (!A9row6); +assign Uwsow6 = (!R4gpw6[52]); +assign C3cpw6 = (~(R4gpw6[54] & Etfiu6)); +assign Etfiu6 = (!Kdyiu6); +assign Kdyiu6 = (Dtbpw6 | V2cpw6); +assign V2cpw6 = (~(Jibpw6 & Uybpw6)); +assign Jibpw6 = (~(Ngfiu6 | vis_ipsr_o[2])); +assign Dtbpw6 = (!Sjbpw6); +assign F1cpw6 = (Q3cpw6 & X3cpw6); +assign X3cpw6 = (E4cpw6 & L4cpw6); +assign L4cpw6 = (~(R4gpw6[56] & Arfiu6)); +assign Arfiu6 = (!Afyiu6); +assign Afyiu6 = (~(S4cpw6 & Ljbpw6)); +assign S4cpw6 = (Uybpw6 & Ukbpw6); +assign E4cpw6 = (~(R4gpw6[58] & Ahbiu6)); +assign Ahbiu6 = (!Qgyiu6); +assign Qgyiu6 = (~(Z4cpw6 & Ljbpw6)); +assign Z4cpw6 = (Uybpw6 & Hobpw6); +assign Hobpw6 = (!Ilbpw6); +assign Ilbpw6 = (~(vis_ipsr_o[0] & Siciu6)); +assign Q3cpw6 = (G5cpw6 & N5cpw6); +assign N5cpw6 = (~(R4gpw6[60] & Lyhiu6)); +assign Lyhiu6 = (U5cpw6 & A9row6); +assign G5cpw6 = (~(R4gpw6[62] & Webiu6)); +assign Webiu6 = (U5cpw6 & Sjbpw6); +assign U5cpw6 = (Ljbpw6 & Uybpw6); +assign Uybpw6 = (~(Vhbiu6 | vis_ipsr_o[4])); +assign Vhbiu6 = (!vis_ipsr_o[5]); +assign Ljbpw6 = (~(Ngfiu6 | Tfciu6)); +assign Tfciu6 = (!vis_ipsr_o[2]); +assign Ngfiu6 = (!vis_ipsr_o[3]); +assign Pmapw6 = (~(B6cpw6 | vis_primask_o)); +assign B6cpw6 = (I6cpw6 & H9row6); +assign I6cpw6 = (M8row6 & P6cpw6); +assign P6cpw6 = (A9row6 | Sjbpw6); +assign Sjbpw6 = (vis_ipsr_o[1] & vis_ipsr_o[0]); +assign A9row6 = (~(Siciu6 | vis_ipsr_o[0])); +assign Siciu6 = (!vis_ipsr_o[1]); +assign Ulapw6 = (~(W6cpw6 & D7cpw6)); +assign D7cpw6 = (K7cpw6 & Kxziu6); +assign K7cpw6 = (~(R75iu6 | Hbbow6)); +assign R75iu6 = (!Omyiu6); +assign W6cpw6 = (L78ju6 & Frziu6); +assign Glapw6 = (Erhiu6 & R7cpw6); +assign R7cpw6 = (~(Jxaiu6 & Y7cpw6)); +assign Y7cpw6 = (~(F8cpw6 & M8cpw6)); +assign M8cpw6 = (~(T8cpw6 & A9cpw6)); +assign A9cpw6 = (Ftjiu6 | D7fpw6[14]); +assign T8cpw6 = (~(Xjbow6 | D7fpw6[12])); +assign Xjbow6 = (D7fpw6[14] & S1ehu6); +assign F8cpw6 = (~(Y40ju6 | Jiiiu6)); +assign Jxaiu6 = (H9cpw6 & O9cpw6); +assign O9cpw6 = (~(Y2oiu6 | Jcaiu6)); +assign H9cpw6 = (~(Wfoiu6 | Ccoiu6)); +assign I1aiu6 = (~(Pu1ju6 & B8apw6)); +assign Ueapw6 = (Erhiu6 & Lrhiu6); +assign Lrhiu6 = (V9cpw6 & Cacpw6); +assign Cacpw6 = (Jacpw6 & Qacpw6); +assign Qacpw6 = (Xacpw6 & Uloiu6); +assign Uloiu6 = (~(Ebcpw6 & N2ghu6)); +assign Ebcpw6 = (Whfiu6 & D6kiu6); +assign Whfiu6 = (Cyfpw6[3] & Cyfpw6[5]); +assign Xacpw6 = (Kz6ow6 & Td0iu6); +assign Td0iu6 = (~(Omyiu6 & Pfiow6)); +assign Pfiow6 = (Lbcpw6 & Oiaiu6); +assign Lbcpw6 = (Sq3ju6 & Cyfpw6[5]); +assign Kz6ow6 = (~(Sbcpw6 & Pthiu6)); +assign Sbcpw6 = (~(Jojiu6 | Ii0iu6)); +assign Jojiu6 = (!Pu1ju6); +assign Pu1ju6 = (~(Mr0iu6 | K9aiu6)); +assign Jacpw6 = (~(Zbcpw6 | Iepiu6)); +assign Iepiu6 = (W8aiu6 & Ldoiu6); +assign Zbcpw6 = (Wp0iu6 & D6kiu6); +assign V9cpw6 = (Gccpw6 & Nccpw6); +assign Nccpw6 = (Zkapw6 & Uccpw6); +assign Uccpw6 = (~(Ae0iu6 & Bdcpw6)); +assign Bdcpw6 = (~(Idcpw6 & Pdcpw6)); +assign Pdcpw6 = (Wdcpw6 & Decpw6); +assign Decpw6 = (~(N3ziu6 & Kecpw6)); +assign Kecpw6 = (Y2oiu6 | X97ow6); +assign N3ziu6 = (Yljiu6 & Nlaiu6); +assign Wdcpw6 = (Recpw6 & Iw8ow6); +assign Iw8ow6 = (~(Yecpw6 & Wwziu6)); +assign Wwziu6 = (!Nloiu6); +assign Nloiu6 = (~(D6kiu6 & H4ghu6)); +assign Yecpw6 = (~(Y2oiu6 | Xe8iu6)); +assign Recpw6 = (~(Ffcpw6 & Pt2ju6)); +assign Ffcpw6 = (~(C0ehu6 | Cyfpw6[6])); +assign Idcpw6 = (Mfcpw6 & Tfcpw6); +assign Tfcpw6 = (Qjaiu6 | Kw0ju6); +assign Mfcpw6 = (Agcpw6 & Hgcpw6); +assign Hgcpw6 = (~(S6aiu6 & Ogcpw6)); +assign Ogcpw6 = (~(Owaiu6 & Vgcpw6)); +assign Vgcpw6 = (Xmliu6 | Cyfpw6[0]); +assign Owaiu6 = (!Cp3ju6); +assign Agcpw6 = (~(Chcpw6 & K9aiu6)); +assign Chcpw6 = (~(Jhcpw6 & Qhcpw6)); +assign Qhcpw6 = (~(L45iu6 & Oiaiu6)); +assign L45iu6 = (~(Gm9pw6 | Cyfpw6[4])); +assign Gm9pw6 = (Cyfpw6[3] | C0ehu6); +assign Jhcpw6 = (Lkaiu6 | Mr0iu6); +assign Zkapw6 = (~(Xhcpw6 & Eicpw6)); +assign Eicpw6 = (~(Knaiu6 | Cyfpw6[5])); +assign Xhcpw6 = (~(As0iu6 | Qxaiu6)); +assign Gccpw6 = (Licpw6 & Sicpw6); +assign Sicpw6 = (~(Zicpw6 & Mmjiu6)); +assign Mmjiu6 = (!Qu7ow6); +assign Qu7ow6 = (Nsaiu6 | Pxyiu6); +assign Pxyiu6 = (~(Gjcpw6 & vis_pc_o[2])); +assign Gjcpw6 = (Qqdhu6 & El1ju6); +assign Nsaiu6 = (~(Njcpw6 & Q5aiu6)); +assign Njcpw6 = (El1ju6 | E6phu6); +assign El1ju6 = (!Stdhu6); +assign Zicpw6 = (~(Qjaiu6 | Kw0ju6)); +assign Kw0ju6 = (~(I30ju6 & Ii0iu6)); +assign I30ju6 = (~(R2aiu6 | Dxziu6)); +assign Dxziu6 = (!Xojiu6); +assign Xojiu6 = (~(Ujcpw6 & Bkcpw6)); +assign Bkcpw6 = (Ikcpw6 & Pkcpw6); +assign Pkcpw6 = (~(Xkhow6 | Qbiiu6)); +assign Qbiiu6 = (S8fpw6[9] & S8fpw6[8]); +assign Xkhow6 = (S8fpw6[7] & L28ow6); +assign L28ow6 = (G55iu6 | S8fpw6[6]); +assign Ikcpw6 = (Wj7ow6 & G7iow6); +assign G7iow6 = (~(S8fpw6[6] & G55iu6)); +assign G55iu6 = (Wkcpw6 | S8fpw6[5]); +assign Wj7ow6 = (~(S8fpw6[5] & Wkcpw6)); +assign Wkcpw6 = (!Zoyiu6); +assign Zoyiu6 = (N55iu6 & Qjoiu6); +assign Ujcpw6 = (Dlcpw6 & Klcpw6); +assign Klcpw6 = (~(S8fpw6[10] & Weiiu6)); +assign Dlcpw6 = (Voiiu6 & Btbow6); +assign Btbow6 = (Qjoiu6 | N55iu6); +assign N55iu6 = (~(B65iu6 | S8fpw6[11])); +assign Qjoiu6 = (!S8fpw6[4]); +assign Voiiu6 = (~(S8fpw6[11] & B65iu6)); +assign B65iu6 = (Weiiu6 | S8fpw6[10]); +assign Weiiu6 = (S8fpw6[8] | S8fpw6[9]); +assign Licpw6 = (Cyfpw6[4] ? Ylcpw6 : Rlcpw6); +assign Ylcpw6 = (Ccoiu6 | Geaiu6); +assign Rlcpw6 = (Fmcpw6 & Mmcpw6); +assign Mmcpw6 = (~(Z6aiu6 & Oiaiu6)); +assign Fmcpw6 = (Tmcpw6 & Ancpw6); +assign Ancpw6 = (~(Hncpw6 & K2aiu6)); +assign Hncpw6 = (N2ghu6 & D6kiu6); +assign Tmcpw6 = (Jc2ju6 | R2aiu6); +assign R2aiu6 = (!W8aiu6); +assign Jc2ju6 = (!Es1ju6); +assign Es1ju6 = (Nlaiu6 & Xe8iu6); +assign GATEHCLK = (~(CDBGPWRUPACK | Oncpw6)); +assign Oncpw6 = (~(E6phu6 | SLEEPING)); +assign SLEEPING = (Qnghu6 & Vncpw6); +assign CODENSEQ = (~(Cocpw6 & Jocpw6)); +assign Jocpw6 = (Qocpw6 & Uriiu6); +assign Qocpw6 = (~(Hrfpw6[16] | Yyfhu6)); +assign Cocpw6 = (Xocpw6 & Epcpw6); +assign Epcpw6 = (~(Ppfpw6[16] & Ntfhu6)); +assign Xocpw6 = (Lpcpw6 & Ygapw6); +assign Ygapw6 = (~(Spcpw6 & Gc5iu6)); +assign Gc5iu6 = (!Wofiu6); +assign Wofiu6 = (~(L6aiu6 & Zpcpw6)); +assign Zpcpw6 = (~(B8apw6 & D6kiu6)); +assign B8apw6 = (~(Ccoiu6 | Ii0iu6)); +assign Ccoiu6 = (!H3aju6); +assign H3aju6 = (Cyfpw6[7] & Xe8iu6); +assign L6aiu6 = (~(Wp0iu6 & Mfjiu6)); +assign Mfjiu6 = (Cyfpw6[4] & Y7ghu6); +assign Spcpw6 = (B7qow6 & Et8iu6); +assign Et8iu6 = (U0aiu6 | Gqcpw6); +assign Gqcpw6 = (D1piu6 & Tr0iu6); +assign U0aiu6 = (Hzziu6 & Cyfpw6[0]); +assign B7qow6 = (~(Nqcpw6 & Uqcpw6)); +assign Uqcpw6 = (Brcpw6 & Ircpw6); +assign Ircpw6 = (~(Prcpw6 | Nz2ju6)); +assign Nz2ju6 = (F23ju6 & D31ju6); +assign D31ju6 = (Cyfpw6[5] & Tfjiu6); +assign F23ju6 = (Cyfpw6[0] & Hs0iu6); +assign Prcpw6 = (Wrcpw6 & Obbow6); +assign Obbow6 = (~(Jcaiu6 | Mr0iu6)); +assign Wrcpw6 = (Dscpw6 & Lkaiu6); +assign Lkaiu6 = (!Gwyiu6); +assign Gwyiu6 = (Cyfpw6[5] & Ii0iu6); +assign Dscpw6 = (U4kiu6 | Buaow6); +assign Buaow6 = (Tr0iu6 & Xe8iu6); +assign Brcpw6 = (Kscpw6 & Rscpw6); +assign Rscpw6 = (~(Yscpw6 & W2aow6)); +assign W2aow6 = (Cyfpw6[5] & Hs0iu6); +assign Yscpw6 = (~(Mr0iu6 | Y7ghu6)); +assign Kscpw6 = (~(Imaiu6 & Ftcpw6)); +assign Ftcpw6 = (~(Mtcpw6 & Ttcpw6)); +assign Ttcpw6 = (~(Wp0iu6 | Cyfpw6[7])); +assign Mtcpw6 = (~(Cp3ju6 | Sq3ju6)); +assign Sq3ju6 = (Cyfpw6[6] & Nlaiu6); +assign Cp3ju6 = (Cyfpw6[1] & Y2oiu6); +assign Nqcpw6 = (Aucpw6 & Hucpw6); +assign Hucpw6 = (Oucpw6 & Vucpw6); +assign Vucpw6 = (~(Ae0iu6 & Cvcpw6)); +assign Cvcpw6 = (~(Jvcpw6 & Qvcpw6)); +assign Qvcpw6 = (~(Xvcpw6 & Pfoiu6)); +assign Pfoiu6 = (Xe8iu6 & Hs0iu6); +assign Hs0iu6 = (!Cyfpw6[7]); +assign Xvcpw6 = (Frziu6 & Cyfpw6[0]); +assign Frziu6 = (~(Tfjiu6 | H4ghu6)); +assign Jvcpw6 = (~(Ewcpw6 & Fd0iu6)); +assign Fd0iu6 = (Cyfpw6[5] & Cyfpw6[1]); +assign Ewcpw6 = (F3aiu6 & Tfjiu6); +assign Oucpw6 = (~(V9ghu6 & Lwcpw6)); +assign Lwcpw6 = (~(Erhiu6 & Swcpw6)); +assign Swcpw6 = (~(Zwcpw6 & Pt2ju6)); +assign Pt2ju6 = (Cyfpw6[1] & Xe8iu6); +assign Zwcpw6 = (~(Qxaiu6 | Knaiu6)); +assign Qxaiu6 = (!Vo3ju6); +assign Erhiu6 = (Tq9ow6 & Gxcpw6); +assign Gxcpw6 = (~(Y8aju6 & Vj9pw6)); +assign Y8aju6 = (~(Nlaiu6 | Mr0iu6)); +assign Tq9ow6 = (W8oiu6 | Knaiu6); +assign W8oiu6 = (!Vj9pw6); +assign Vj9pw6 = (Sbghu6 & K9aiu6); +assign Aucpw6 = (Nxcpw6 & Uxcpw6); +assign Uxcpw6 = (~(J4aju6 & Qyniu6)); +assign Qyniu6 = (~(Cyfpw6[1] | Cyfpw6[6])); +assign J4aju6 = (Bycpw6 & Omyiu6); +assign Omyiu6 = (Cyfpw6[3] & Jjhiu6); +assign Bycpw6 = (~(Cyfpw6[5] | Y7ghu6)); +assign Nxcpw6 = (~(Cyfpw6[4] & Iycpw6)); +assign Iycpw6 = (~(Pycpw6 & Wycpw6)); +assign Wycpw6 = (Dzcpw6 & Kzcpw6); +assign Kzcpw6 = (~(Z6aiu6 | N20ju6)); +assign N20ju6 = (W8aiu6 & Cyfpw6[6]); +assign Z6aiu6 = (Vo3ju6 & Pugiu6); +assign Pugiu6 = (Cyfpw6[5] & Tr0iu6); +assign Dzcpw6 = (Rzcpw6 & Yzcpw6); +assign Yzcpw6 = (~(V9ghu6 & F0dpw6)); +assign F0dpw6 = (~(M0dpw6 & T0dpw6)); +assign T0dpw6 = (~(A1dpw6 & Vo3ju6)); +assign A1dpw6 = (~(Jcaiu6 | D7fpw6[14])); +assign Jcaiu6 = (!Llaow6); +assign M0dpw6 = (~(H1dpw6 & Mr0iu6)); +assign H1dpw6 = (~(O1dpw6 & V1dpw6)); +assign V1dpw6 = (~(C2dpw6 & Kxziu6)); +assign Kxziu6 = (~(Ae0iu6 | D7fpw6[14])); +assign C2dpw6 = (~(Ii0iu6 | Hbbow6)); +assign Hbbow6 = (Dcziu6 & J2dpw6); +assign J2dpw6 = (Dzjiu6 | A1kiu6); +assign A1kiu6 = (!D7fpw6[4]); +assign Dzjiu6 = (!D7fpw6[5]); +assign O1dpw6 = (~(Llaow6 & Q2dpw6)); +assign Q2dpw6 = (~(X2dpw6 & Mpaow6)); +assign Mpaow6 = (~(Y40ju6 | Vk9ow6)); +assign Vk9ow6 = (X1ziu6 & Ftjiu6); +assign Y40ju6 = (D7fpw6[12] & X1ziu6); +assign X2dpw6 = (~(E3dpw6 | Jiiiu6)); +assign Jiiiu6 = (Uriiu6 & Ftjiu6); +assign E3dpw6 = (Ya1ju6 & D7fpw6[14]); +assign Ya1ju6 = (~(Ftjiu6 | D7fpw6[12])); +assign Llaow6 = (~(Ae0iu6 | Y7ghu6)); +assign Rzcpw6 = (~(K2aiu6 & D6kiu6)); +assign D6kiu6 = (~(Tfjiu6 | K9aiu6)); +assign K2aiu6 = (Ii0iu6 & Xe8iu6); +assign Pycpw6 = (~(L3dpw6 | S3dpw6)); +assign S3dpw6 = (Sbghu6 ? W8aiu6 : Z3dpw6); +assign Z3dpw6 = (~(Knaiu6 | Tr0iu6)); +assign L3dpw6 = (~(G4dpw6 & N4dpw6)); +assign N4dpw6 = (K9bow6 | Xkaow6); +assign Xkaow6 = (!Hiaiu6); +assign Hiaiu6 = (Zraiu6 & Geaiu6); +assign K9bow6 = (!X97ow6); +assign X97ow6 = (Cyfpw6[5] & Mr0iu6); +assign G4dpw6 = (P1bow6 | Nlaiu6); +assign P1bow6 = (!Neoiu6); +assign Neoiu6 = (Cyfpw6[1] & Zraiu6); +assign Zraiu6 = (!Ae0iu6); +assign Lpcpw6 = (Sufpw6[0] | Sufpw6[1]); +assign CODEHINTDE[2] = (~(U4dpw6 & B5dpw6)); +assign B5dpw6 = (I5dpw6 & P5dpw6); +assign P5dpw6 = (~(W5dpw6 | Nriiu6)); +assign Nriiu6 = (D6dpw6 & Vboiu6); +assign D6dpw6 = (~(E4jiu6 | Cyfpw6[5])); +assign E4jiu6 = (!Hzziu6); +assign Hzziu6 = (Cyfpw6[4] & Jjhiu6); +assign W5dpw6 = (K6dpw6 & De6ow6); +assign De6ow6 = (~(Vwaiu6 | C0ehu6)); +assign Vwaiu6 = (!Wp0iu6); +assign Wp0iu6 = (Cyfpw6[0] & Xe8iu6); +assign Xe8iu6 = (!Cyfpw6[5]); +assign K6dpw6 = (~(As0iu6 | Knaiu6)); +assign As0iu6 = (!Ldoiu6); +assign Ldoiu6 = (~(Tfjiu6 | Cyfpw6[4])); +assign I5dpw6 = (R6dpw6 & Y6dpw6); +assign Y6dpw6 = (~(F7dpw6 & F3aiu6)); +assign F3aiu6 = (Vo3ju6 & Mr0iu6); +assign Vo3ju6 = (~(Nlaiu6 | Ii0iu6)); +assign F7dpw6 = (~(Qjaiu6 | C0ehu6)); +assign Qjaiu6 = (!U4kiu6); +assign U4kiu6 = (Tr0iu6 & Y2oiu6); +assign R6dpw6 = (~(Cyfpw6[7] & M7dpw6)); +assign M7dpw6 = (~(Fmjiu6 & T7dpw6)); +assign T7dpw6 = (Uvziu6 | Cyfpw6[0]); +assign Uvziu6 = (!Gsbow6); +assign Gsbow6 = (Cyfpw6[3] & Y7ghu6); +assign Fmjiu6 = (~(Pthiu6 & Y7ghu6)); +assign U4dpw6 = (A8dpw6 & H8dpw6); +assign H8dpw6 = (O8dpw6 & V8dpw6); +assign V8dpw6 = (~(C9dpw6 & Ii0iu6)); +assign Ii0iu6 = (!Cyfpw6[3]); +assign C9dpw6 = (~(J9dpw6 & Q9dpw6)); +assign Q9dpw6 = (~(W8aiu6 | Ae0iu6)); +assign W8aiu6 = (Y7ghu6 & Mr0iu6); +assign J9dpw6 = (X9dpw6 & Kq0iu6); +assign Kq0iu6 = (!It2ju6); +assign It2ju6 = (Y7ghu6 & Y2oiu6); +assign Y2oiu6 = (!Cyfpw6[4]); +assign X9dpw6 = (Pd6ow6 | Sbghu6); +assign Pd6ow6 = (~(Eadpw6 & D1piu6)); +assign D1piu6 = (~(Nlaiu6 | C0ehu6)); +assign Eadpw6 = (~(Wfoiu6 | Knaiu6)); +assign Knaiu6 = (!Oiaiu6); +assign Oiaiu6 = (Cyfpw6[7] & Mr0iu6); +assign Mr0iu6 = (!H4ghu6); +assign Wfoiu6 = (!Vboiu6); +assign Vboiu6 = (Cyfpw6[6] & Tr0iu6); +assign Tr0iu6 = (!Cyfpw6[1]); +assign O8dpw6 = (S5qow6 | Y31ju6); +assign Y31ju6 = (Q5aiu6 & Uriiu6); +assign Uriiu6 = (!S1ehu6); +assign S5qow6 = (!Imaiu6); +assign Imaiu6 = (C0ehu6 & Geaiu6); +assign A8dpw6 = (Pmbow6 & Ladpw6); +assign Ladpw6 = (~(Sadpw6 & Geaiu6)); +assign Sadpw6 = (~(Zadpw6 & Gbdpw6)); +assign Gbdpw6 = (Nbdpw6 & Ubdpw6); +assign Ubdpw6 = (~(Bcdpw6 & J5iow6)); +assign J5iow6 = (Icdpw6 & D7fpw6[14]); +assign Icdpw6 = (~(D7fpw6[13] | D7fpw6[15])); +assign Bcdpw6 = (P0piu6 & Pcdpw6); +assign Pcdpw6 = (~(Qjiow6 & Wcdpw6)); +assign Wcdpw6 = (L7aow6 | I6jiu6); +assign I6jiu6 = (!D7fpw6[10]); +assign L7aow6 = (Rg2ju6 | D7fpw6[8]); +assign Rg2ju6 = (~(Dddpw6 & Kddpw6)); +assign Kddpw6 = (~(Ccaiu6 | Prjiu6)); +assign Prjiu6 = (!D7fpw6[2]); +assign Dddpw6 = (~(O95iu6 | Rb8iu6)); +assign Qjiow6 = (!Q6aow6); +assign Q6aow6 = (Qxoiu6 & D7fpw6[8]); +assign P0piu6 = (Mtjiu6 & Oviiu6); +assign Mtjiu6 = (C0ehu6 & Gkiiu6); +assign Gkiiu6 = (!D7fpw6[12]); +assign Nbdpw6 = (~(Rddpw6 & A95iu6)); +assign A95iu6 = (~(N38ow6 | D7fpw6[10])); +assign N38ow6 = (!Xiiiu6); +assign Xiiiu6 = (D7fpw6[13] & C0ehu6); +assign Rddpw6 = (Aujiu6 & Yddpw6); +assign Yddpw6 = (~(Fedpw6 & Medpw6)); +assign Medpw6 = (Kcziu6 | Oviiu6); +assign Kcziu6 = (!L01ju6); +assign L01ju6 = (D7fpw6[7] & Ad8iu6); +assign Ad8iu6 = (!D7fpw6[6]); +assign Fedpw6 = (~(Il3ju6 | D7fpw6[8])); +assign Aujiu6 = (D7fpw6[15] & D7fpw6[12]); +assign Zadpw6 = (Tedpw6 & Afdpw6); +assign Afdpw6 = (~(J9kiu6 & Hfdpw6)); +assign Hfdpw6 = (~(Co6ow6 & Ofdpw6)); +assign Ofdpw6 = (~(D7fpw6[12] & Vfdpw6)); +assign Vfdpw6 = (~(Cgdpw6 & Jgdpw6)); +assign Jgdpw6 = (~(D7fpw6[13] & Qgdpw6)); +assign Qgdpw6 = (Xgdpw6 | Ehdpw6); +assign Ehdpw6 = (Lhdpw6 & Qxoiu6); +assign Lhdpw6 = (~(Cwiiu6 | D7fpw6[11])); +assign Cwiiu6 = (Dcziu6 & D7fpw6[5]); +assign Dcziu6 = (D7fpw6[6] & O95iu6); +assign Xgdpw6 = (D7fpw6[8] ? Shdpw6 : F6ziu6); +assign Shdpw6 = (~(Zhdpw6 & Gidpw6)); +assign Gidpw6 = (Oviiu6 | Wh0ju6); +assign Wh0ju6 = (Nidpw6 & R9aiu6); +assign R9aiu6 = (Rb8iu6 & Ccaiu6); +assign Ccaiu6 = (!D7fpw6[1]); +assign Rb8iu6 = (!D7fpw6[0]); +assign Nidpw6 = (~(D7fpw6[2] | D7fpw6[3])); +assign Zhdpw6 = (~(Zroiu6 | Il3ju6)); +assign Il3ju6 = (D7fpw6[11] & Tniiu6); +assign Tniiu6 = (!D7fpw6[9]); +assign Zroiu6 = (D7fpw6[9] & Oviiu6); +assign Cgdpw6 = (~(F6ziu6 & D7fpw6[14])); +assign F6ziu6 = (Qxoiu6 & D7fpw6[11]); +assign Co6ow6 = (!Hl8ow6); +assign Hl8ow6 = (D7fpw6[13] & D7fpw6[14]); +assign J9kiu6 = (~(Jjhiu6 | Ftjiu6)); +assign Ftjiu6 = (!D7fpw6[15]); +assign Tedpw6 = (Ntgiu6 | Cyfpw6[1]); +assign Ntgiu6 = (~(Pthiu6 & Yljiu6)); +assign Pthiu6 = (Nlaiu6 & Tfjiu6); +assign Tfjiu6 = (!Cyfpw6[6]); +assign Pmbow6 = (Faaiu6 & Uidpw6); +assign Uidpw6 = (~(Xmliu6 & Bjdpw6)); +assign Bjdpw6 = (~(Ijdpw6 & Pjdpw6)); +assign Pjdpw6 = (~(Wjdpw6 & Yljiu6)); +assign Wjdpw6 = (~(Cyfpw6[1] | Cyfpw6[7])); +assign Ijdpw6 = (G7oiu6 | Iuniu6); +assign Iuniu6 = (!S6aiu6); +assign S6aiu6 = (Yljiu6 & H4ghu6); +assign Yljiu6 = (Jjhiu6 & K9aiu6); +assign G7oiu6 = (!L78ju6); +assign L78ju6 = (Cyfpw6[4] & Nlaiu6); +assign Nlaiu6 = (!Cyfpw6[0]); +assign Xmliu6 = (!Taaiu6); +assign Taaiu6 = (~(Dkdpw6 & Kkdpw6)); +assign Kkdpw6 = (Rkdpw6 & vis_pc_o[27]); +assign Rkdpw6 = (~(Noliu6 | Hlliu6)); +assign Hlliu6 = (Ykdpw6 & H9row6); +assign H9row6 = (~(vis_ipsr_o[4] | vis_ipsr_o[5])); +assign Ykdpw6 = (Ukbpw6 & M8row6); +assign M8row6 = (~(vis_ipsr_o[2] | vis_ipsr_o[3])); +assign Ukbpw6 = (~(vis_ipsr_o[0] | vis_ipsr_o[1])); +assign Noliu6 = (!T6ehu6); +assign Dkdpw6 = (Fldpw6 & vis_pc_o[30]); +assign Fldpw6 = (vis_pc_o[29] & vis_pc_o[28]); +assign Faaiu6 = (!O4oiu6); +assign O4oiu6 = (Ae0iu6 & K9aiu6); +assign K9aiu6 = (!Y7ghu6); +assign CODEHINTDE[1] = (~(Oi2ju6 | O95iu6)); +assign O95iu6 = (!D7fpw6[7]); +assign CODEHINTDE[0] = (~(Oi2ju6 | D7fpw6[7])); +assign Oi2ju6 = (!Wf2ju6); +assign Wf2ju6 = (Mldpw6 & Tldpw6); +assign Tldpw6 = (Amdpw6 & Geaiu6); +assign Geaiu6 = (!Sbghu6); +assign Amdpw6 = (Uyiiu6 | Hmdpw6); +assign Hmdpw6 = (~(Lraiu6 | Qxoiu6)); +assign Qxoiu6 = (D7fpw6[10] & D7fpw6[9]); +assign Uyiiu6 = (Q5aiu6 & Oviiu6); +assign Oviiu6 = (!D7fpw6[11]); +assign Q5aiu6 = (!Lraiu6); +assign Lraiu6 = (Pzwiu6 & Cqaiu6); +assign Cqaiu6 = (!E6phu6); +assign Pzwiu6 = (Vchhu6 & Jehhu6); +assign Mldpw6 = (R7jiu6 & Ia8iu6); +assign Ia8iu6 = (~(X1ziu6 | Ae0iu6)); +assign Ae0iu6 = (~(Vncpw6 | E6phu6)); +assign Vncpw6 = (!Fvdhu6); +assign X1ziu6 = (!D7fpw6[14]); +assign R7jiu6 = (Ozziu6 & D7fpw6[15]); +assign Ozziu6 = (Nbkiu6 & D7fpw6[12]); +assign Nbkiu6 = (~(Jjhiu6 | D7fpw6[13])); +assign Jjhiu6 = (!C0ehu6); + +always @(posedge SWCLKTCK or negedge PORESETn) + if(~PORESETn) + Evhpw6 <= 1'b0; + else + Evhpw6 <= 1'b1; + +always @(posedge SWCLKTCK or negedge PORESETn) + if(~PORESETn) + Hwhpw6 <= 1'b0; + else + Hwhpw6 <= Qmdhu6; + +always @(posedge SWCLKTCK or negedge PORESETn) + if(~PORESETn) + Kxhpw6 <= 1'b0; + else + Kxhpw6 <= Pndhu6; + +always @(posedge SWCLKTCK or negedge Fmdhu6) + if(~Fmdhu6) + Nyhpw6 <= 1'b0; + else + Nyhpw6 <= CDBGPWRUPACK; + +always @(posedge SWCLKTCK or negedge Fmdhu6) + if(~Fmdhu6) + T0ipw6 <= 1'b0; + else + T0ipw6 <= O5ohu6; + +always @(posedge DCLK) A3ipw6 <= X3yhu6; +always @(posedge SWCLKTCK or negedge Fmdhu6) + if(~Fmdhu6) + A5ipw6 <= 1'b0; + else + A5ipw6 <= Nrxhu6; + +always @(posedge SWCLKTCK) W6ipw6 <= Grxhu6; +always @(posedge SWCLKTCK) M8ipw6 <= Jpxhu6; +always @(posedge SCLK or negedge HRESETn) + if(~HRESETn) + Qaipw6 <= 1'b0; + else + Qaipw6 <= Sgthu6; + +always @(posedge SCLK or negedge HRESETn) + if(~HRESETn) + Tcipw6 <= 1'b0; + else + Tcipw6 <= Jyohu6; + +always @(posedge HCLK) Weipw6 <= Vcvhu6; +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Wgipw6 <= 1'b0; + else + Wgipw6 <= Fkthu6; + +always @(posedge SCLK) Xiipw6 <= U1vhu6; +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Wkipw6 <= 1'b1; + else + Wkipw6 <= Bithu6; + +always @(posedge HCLK) Vmipw6 <= Vxohu6; +always @(posedge HCLK) Uoipw6 <= Wxshu6; +always @(posedge HCLK) Uqipw6 <= Oiphu6; +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Usipw6 <= 1'b0; + else + Usipw6 <= Fxuhu6; + +always @(posedge HCLK) Vuipw6 <= Kyshu6; +always @(posedge HCLK) Uwipw6 <= Igvhu6; +always @(posedge HCLK) Tyipw6 <= Diuhu6; +always @(posedge SCLK) V0jpw6 <= Rbuhu6; +always @(posedge HCLK) X2jpw6 <= P6rhu6; +always @(posedge HCLK) X4jpw6 <= T8rhu6; +always @(posedge HCLK) X6jpw6 <= Hkuhu6; +always @(posedge SCLK) Z8jpw6 <= N9uhu6; +always @(posedge HCLK) Bbjpw6 <= Z5qhu6; +always @(posedge HCLK) Bdjpw6 <= D8qhu6; +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Bfjpw6 <= 1'b1; + else + Bfjpw6 <= Ksrhu6; + +always @(posedge HCLK) Vgjpw6 <= Oxohu6; +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Qijpw6 <= 1'b0; + else + Qijpw6 <= Bgvhu6; + +always @(posedge HCLK) Kkjpw6 <= Ourhu6; +always @(posedge HCLK) Kmjpw6 <= Zwrhu6; +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Kojpw6 <= 1'b0; + else + Kojpw6 <= Mxuhu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Lqjpw6 <= 1'b1; + else + Lqjpw6 <= Hxohu6; + +always @(posedge DCLK or negedge DBGRESETn) + if(~DBGRESETn) + Isjpw6 <= 1'b0; + else + Isjpw6 <= E5xhu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Aujpw6 <= 1'b0; + else + Aujpw6 <= Axohu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Yvjpw6 <= 1'b0; + else + Yvjpw6 <= Twohu6; + +always @(posedge HCLK) Wxjpw6 <= Mwohu6; +always @(posedge SCLK or negedge HRESETn) + if(~HRESETn) + Vzjpw6 <= 1'b0; + else + Vzjpw6 <= Fivhu6; + +always @(posedge HCLK) U1kpw6 <= Vethu6; +always @(posedge HCLK) T3kpw6 <= Amshu6; +always @(posedge HCLK) S5kpw6 <= Soshu6; +always @(posedge HCLK) R7kpw6 <= Kiuhu6; +always @(posedge SCLK) T9kpw6 <= Kbuhu6; +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Vbkpw6 <= 1'b0; + else + Vbkpw6 <= C6vhu6; + +always @(posedge HCLK) Rdkpw6 <= Ebrhu6; +always @(posedge HCLK) Rfkpw6 <= Idrhu6; +always @(posedge HCLK) Rhkpw6 <= Okuhu6; +always @(posedge SCLK) Tjkpw6 <= G9uhu6; +always @(posedge HCLK) Vlkpw6 <= Oaqhu6; +always @(posedge HCLK) Vnkpw6 <= Scqhu6; +always @(posedge DCLK or negedge DBGRESETn) + if(~DBGRESETn) + Vpkpw6 <= 1'b0; + else + Vpkpw6 <= Bfphu6; + +always @(posedge DCLK) Nrkpw6 <= I8phu6; +always @(posedge SWCLKTCK) Stkpw6 <= D0yhu6; +always @(posedge SWCLKTCK) Jvkpw6 <= Ejxhu6; +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Oxkpw6 <= 1'b0; + else + Oxkpw6 <= Dwuhu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Pzkpw6 <= 1'b1; + else + Pzkpw6 <= Nfvhu6; + +always @(posedge HCLK) I1lpw6 <= Qdvhu6; +always @(posedge DCLK) H3lpw6 <= L6phu6; +always @(posedge SWCLKTCK) L5lpw6 <= Zqxhu6; +always @(posedge SWCLKTCK or negedge Fmdhu6) + if(~Fmdhu6) + B7lpw6 <= 1'b0; + else + B7lpw6 <= Fwohu6; + +always @(posedge SWCLKTCK) Y8lpw6 <= Rfxhu6; +always @(posedge SWCLKTCK or negedge Fmdhu6) + if(~Fmdhu6) + Kalpw6 <= 1'b1; + else + Kalpw6 <= Zehpw6[2]; + +always @(posedge SWCLKTCK or negedge Fmdhu6) + if(~Fmdhu6) + Bclpw6 <= 1'b0; + else + Bclpw6 <= Zehpw6[0]; + +always @(posedge SWCLKTCK or negedge Fmdhu6) + if(~Fmdhu6) + Sdlpw6 <= 1'b1; + else + Sdlpw6 <= Zehpw6[1]; + +always @(posedge SWCLKTCK or negedge Fmdhu6) + if(~Fmdhu6) + Jflpw6 <= 1'b0; + else + Jflpw6 <= Zehpw6[3]; + +always @(posedge SWCLKTCK or negedge Fmdhu6) + if(~Fmdhu6) + Ahlpw6 <= 1'b1; + else + Ahlpw6 <= Zehpw6[6]; + +always @(posedge SWCLKTCK or negedge Fmdhu6) + if(~Fmdhu6) + Rilpw6 <= 1'b1; + else + Rilpw6 <= Ovxhu6; + +always @(posedge SWCLKTCK or negedge Fmdhu6) + if(~Fmdhu6) + Yklpw6 <= 1'b0; + else + Yklpw6 <= Zehpw6[4]; + +always @(posedge SWCLKTCK or negedge Fmdhu6) + if(~Fmdhu6) + Pmlpw6 <= 1'b0; + else + Pmlpw6 <= Zehpw6[5]; + +always @(posedge SWCLKTCK) Golpw6 <= Yvohu6; +always @(posedge SWCLKTCK) Vplpw6 <= Rvohu6; +always @(posedge SWCLKTCK) Krlpw6 <= Kvohu6; +always @(posedge SWCLKTCK) Zslpw6 <= Dvohu6; +always @(posedge SWCLKTCK or negedge Fmdhu6) + if(~Fmdhu6) + Oulpw6 <= 1'b0; + else + Oulpw6 <= Sqxhu6; + +always @(posedge SWCLKTCK or negedge Fmdhu6) + if(~Fmdhu6) + Kwlpw6 <= 1'b0; + else + Kwlpw6 <= Tgxhu6; + +always @(posedge SWCLKTCK or negedge Fmdhu6) + if(~Fmdhu6) + Gylpw6 <= 1'b0; + else + Gylpw6 <= Ktxhu6; + +always @(posedge SWCLKTCK) Yzlpw6 <= C3yhu6; +always @(posedge SWCLKTCK) O1mpw6 <= Tnxhu6; +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + S3mpw6 <= 1'b0; + else + S3mpw6 <= Gvthu6; + +always @(posedge SCLK) T5mpw6 <= Z0vhu6; +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + S7mpw6 <= 1'b1; + else + S7mpw6 <= Nhthu6; + +always @(posedge HCLK) R9mpw6 <= L7vhu6; +always @(posedge HCLK) Qbmpw6 <= Wqshu6; +always @(posedge HCLK) Pdmpw6 <= Otshu6; +always @(posedge HCLK) Ofmpw6 <= Whuhu6; +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Qhmpw6 <= 1'b0; + else + Qhmpw6 <= Mrthu6; + +always @(posedge HCLK) Mjmpw6 <= Wyrhu6; +always @(posedge HCLK) Mlmpw6 <= O1shu6; +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Mnmpw6 <= 1'b0; + else + Mnmpw6 <= Xmthu6; + +always @(posedge SCLK) Jpmpw6 <= N1vhu6; +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Irmpw6 <= 1'b1; + else + Irmpw6 <= Uhthu6; + +always @(posedge HCLK) Htmpw6 <= Wuohu6; +always @(posedge HCLK) Gvmpw6 <= Ocvhu6; +always @(posedge HCLK) Gxmpw6 <= Gpshu6; +always @(posedge HCLK) Fzmpw6 <= Kkshu6; +always @(posedge HCLK) E1npw6 <= Gxrhu6; +always @(posedge HCLK) E3npw6 <= Ysrhu6; +always @(posedge HCLK) E5npw6 <= H9rhu6; +always @(posedge HCLK) E7npw6 <= S4rhu6; +always @(posedge HCLK) E9npw6 <= R8qhu6; +always @(posedge HCLK) Ebnpw6 <= C4qhu6; +always @(posedge HCLK) Ednpw6 <= Rgphu6; +always @(posedge HCLK) Efnpw6 <= Pxshu6; +always @(posedge HCLK) Ehnpw6 <= Cdvhu6; +always @(posedge HCLK) Ejnpw6 <= Jdvhu6; +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Elnpw6 <= 1'b0; + else + Elnpw6 <= Yjthu6; + +always @(posedge SCLK or negedge HRESETn) + if(~HRESETn) + Fnnpw6 <= 1'b1; + else + Fnnpw6 <= Puohu6; + +always @(posedge HCLK) Fpnpw6 <= Iuohu6; +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Arnpw6 <= 1'b1; + else + Arnpw6 <= Kgphu6; + +always @(posedge HCLK) Usnpw6 <= Dgphu6; +always @(posedge DCLK) Uunpw6 <= H2yhu6; +always @(posedge SWCLKTCK) Zwnpw6 <= A2yhu6; +always @(posedge SWCLKTCK or negedge Fmdhu6) + if(~Fmdhu6) + Qynpw6 <= 1'b0; + else + Qynpw6 <= Hvxhu6; + +always @(posedge SWCLKTCK or negedge Fmdhu6) + if(~Fmdhu6) + I0opw6 <= 1'b0; + else + I0opw6 <= Q3yhu6; + +always @(posedge SWCLKTCK) D2opw6 <= Wsxhu6; +always @(posedge SWCLKTCK) T3opw6 <= Hoxhu6; +always @(posedge HCLK) X5opw6 <= Gguhu6; +always @(posedge SCLK) Y7opw6 <= Oduhu6; +always @(posedge SCLK or negedge HRESETn) + if(~HRESETn) + Z9opw6 <= 1'b0; + else + Z9opw6 <= J4xhu6; + +always @(posedge SCLK or negedge HRESETn) + if(~HRESETn) + Xbopw6 <= 1'b1; + else + Xbopw6 <= N8vhu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Ydopw6 <= 1'b0; + else + Ydopw6 <= Buohu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Ufopw6 <= 1'b0; + else + Ufopw6 <= Utohu6; + +always @(posedge HCLK) Shopw6 <= Ntohu6; +always @(posedge HCLK) Rjopw6 <= Evshu6; +always @(posedge HCLK) Qlopw6 <= Qushu6; +always @(posedge HCLK) Qnopw6 <= Jushu6; +always @(posedge HCLK) Qpopw6 <= Iqshu6; +always @(posedge HCLK) Propw6 <= Mlshu6; +always @(posedge HCLK) Otopw6 <= Iyrhu6; +always @(posedge HCLK) Ovopw6 <= Aurhu6; +always @(posedge HCLK) Oxopw6 <= Qarhu6; +always @(posedge HCLK) Ozopw6 <= B6rhu6; +always @(posedge HCLK) O1ppw6 <= Aaqhu6; +always @(posedge HCLK) O3ppw6 <= L5qhu6; +always @(posedge HCLK) O5ppw6 <= E9thu6; +always @(posedge HCLK) N7ppw6 <= Q8thu6; +always @(posedge HCLK) N9ppw6 <= J8thu6; +always @(posedge HCLK) Nbppw6 <= Krshu6; +always @(posedge HCLK) Mdppw6 <= Omshu6; +always @(posedge HCLK) Lfppw6 <= Kzrhu6; +always @(posedge HCLK) Lhppw6 <= Cvrhu6; +always @(posedge HCLK) Ljppw6 <= Sbrhu6; +always @(posedge HCLK) Llppw6 <= D7rhu6; +always @(posedge HCLK) Lnppw6 <= Cbqhu6; +always @(posedge HCLK) Lpppw6 <= N6qhu6; +always @(posedge HCLK) Lrppw6 <= Zevhu6; +always @(posedge HCLK) Ktppw6 <= Npshu6; +always @(posedge HCLK) Jvppw6 <= Rkshu6; +always @(posedge HCLK) Ixppw6 <= Nxrhu6; +always @(posedge HCLK) Izppw6 <= Ftrhu6; +always @(posedge HCLK) I1qpw6 <= O9rhu6; +always @(posedge HCLK) I3qpw6 <= Z4rhu6; +always @(posedge HCLK) I5qpw6 <= Y8qhu6; +always @(posedge HCLK) I7qpw6 <= J4qhu6; +always @(posedge HCLK) I9qpw6 <= Ygphu6; +always @(posedge HCLK) Ibqpw6 <= Zkphu6; +always @(posedge DCLK) Idqpw6 <= G7phu6; +always @(posedge SWCLKTCK) Nfqpw6 <= F1yhu6; +always @(posedge SWCLKTCK or negedge Fmdhu6) + if(~Fmdhu6) + Ehqpw6 <= 1'b0; + else + Ehqpw6 <= Fgxhu6; + +always @(posedge SWCLKTCK or negedge Fmdhu6) + if(~Fmdhu6) + Cjqpw6 <= 1'b0; + else + Cjqpw6 <= Yfxhu6; + +always @(posedge SWCLKTCK or negedge Fmdhu6) + if(~Fmdhu6) + Xkqpw6 <= 1'b0; + else + Xkqpw6 <= Ytxhu6; + +always @(posedge SWCLKTCK) Gnqpw6 <= Ahxhu6; +always @(posedge SWCLKTCK) Gpqpw6 <= Qpxhu6; +always @(posedge SWCLKTCK) Nrqpw6 <= Eqxhu6; +always @(posedge SWCLKTCK or negedge Fmdhu6) + if(~Fmdhu6) + Utqpw6 <= 1'b0; + else + Utqpw6 <= Fuxhu6; + +always @(posedge DCLK or negedge DBGRESETn) + if(~DBGRESETn) + Xvqpw6 <= 1'b0; + else + Xvqpw6 <= G2ohu6; + +always @(posedge DCLK or negedge DBGRESETn) + if(~DBGRESETn) + Xxqpw6 <= 1'b0; + else + Xxqpw6 <= Q7ohu6; + +always @(posedge SWCLKTCK) Yzqpw6 <= V2yhu6; +always @(posedge SWCLKTCK) D2rpw6 <= Cixhu6; +always @(posedge SWCLKTCK) I4rpw6 <= Hhxhu6; +always @(posedge HCLK) M6rpw6 <= Jluhu6; +always @(posedge SCLK) N8rpw6 <= Xeuhu6; +always @(posedge SCLK) Oarpw6 <= Qeuhu6; +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Pcrpw6 <= 1'b1; + else + Pcrpw6 <= S0vhu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Lerpw6 <= 1'b1; + else + Lerpw6 <= Gtohu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Hgrpw6 <= 1'b1; + else + Hgrpw6 <= X4xhu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Hirpw6 <= 1'b0; + else + Hirpw6 <= Zsohu6; + +always @(posedge HCLK) Fkrpw6 <= Ssohu6; +always @(posedge HCLK) Emrpw6 <= Gbshu6; +always @(posedge HCLK) Dorpw6 <= Nbshu6; +always @(posedge HCLK) Cqrpw6 <= Icshu6; +always @(posedge HCLK) Bsrpw6 <= Wcshu6; +always @(posedge HCLK) Aurpw6 <= Kdshu6; +always @(posedge HCLK) Zvrpw6 <= Ofshu6; +always @(posedge SCLK or negedge HRESETn) + if(~HRESETn) + Yxrpw6 <= 1'b0; + else + Yxrpw6 <= W1phu6; + +always @(posedge HCLK) B0spw6 <= Vfshu6; +always @(posedge HCLK) A2spw6 <= Cgshu6; +always @(posedge HCLK) Z3spw6 <= Xgshu6; +always @(posedge HCLK) Y5spw6 <= Lhshu6; +always @(posedge HCLK) X7spw6 <= Zhshu6; +always @(posedge HCLK) W9spw6 <= Dkshu6; +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Vbspw6 <= 1'b0; + else + Vbspw6 <= Zuthu6; + +always @(posedge SCLK) Xdspw6 <= O5vhu6; +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Wfspw6 <= 1'b1; + else + Wfspw6 <= S7vhu6; + +always @(posedge HCLK) Vhspw6 <= Lsohu6; +always @(posedge HCLK) Ujspw6 <= Fjuhu6; +always @(posedge SCLK) Wlspw6 <= Pauhu6; +always @(posedge HCLK) Ynspw6 <= K6shu6; +always @(posedge HCLK) Ypspw6 <= R6shu6; +always @(posedge HCLK) Yrspw6 <= M7shu6; +always @(posedge HCLK) Ytspw6 <= A8shu6; +always @(posedge HCLK) Yvspw6 <= O8shu6; +always @(posedge HCLK) Yxspw6 <= Sashu6; +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Yzspw6 <= 1'b0; + else + Yzspw6 <= Tivhu6; + +always @(posedge HCLK) Z1tpw6 <= Sirhu6; +always @(posedge HCLK) Z3tpw6 <= Zirhu6; +always @(posedge HCLK) Z5tpw6 <= Bkrhu6; +always @(posedge HCLK) Z7tpw6 <= Pkrhu6; +always @(posedge HCLK) Z9tpw6 <= Dlrhu6; +always @(posedge HCLK) Zbtpw6 <= Tmrhu6; +always @(posedge SCLK or negedge HRESETn) + if(~HRESETn) + Zdtpw6 <= 1'b0; + else + Zdtpw6 <= Qmthu6; + +always @(posedge HCLK) Yftpw6 <= Lvshu6; +always @(posedge HCLK) Xhtpw6 <= Ryshu6; +always @(posedge HCLK) Wjtpw6 <= L9thu6; +always @(posedge HCLK) Vltpw6 <= B9vhu6; +always @(posedge HCLK) Untpw6 <= I9vhu6; +always @(posedge HCLK) Tptpw6 <= Phuhu6; +always @(posedge SCLK) Vrtpw6 <= Fcuhu6; +always @(posedge HCLK) Xttpw6 <= V1shu6; +always @(posedge HCLK) Xvtpw6 <= C2shu6; +always @(posedge HCLK) Xxtpw6 <= X2shu6; +always @(posedge HCLK) Xztpw6 <= L3shu6; +always @(posedge HCLK) X1upw6 <= Z3shu6; +always @(posedge HCLK) X3upw6 <= D6shu6; +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + X5upw6 <= 1'b0; + else + X5upw6 <= Rwuhu6; + +always @(posedge HCLK) Y7upw6 <= Zqqhu6; +always @(posedge HCLK) Y9upw6 <= Grqhu6; +always @(posedge HCLK) Ybupw6 <= Isqhu6; +always @(posedge HCLK) Ydupw6 <= Wsqhu6; +always @(posedge HCLK) Yfupw6 <= Ktqhu6; +always @(posedge HCLK) Yhupw6 <= Avqhu6; +always @(posedge HCLK) Yjupw6 <= Mjuhu6; +always @(posedge SCLK) Amupw6 <= Iauhu6; +always @(posedge SCLK) Coupw6 <= S8uhu6; +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Equpw6 <= 1'b1; + else + Equpw6 <= Esohu6; + +always @(posedge HCLK) Asupw6 <= Hfshu6; +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Ztupw6 <= 1'b0; + else + Ztupw6 <= Fbvhu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Awupw6 <= 1'b1; + else + Awupw6 <= Xrohu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Xxupw6 <= 1'b0; + else + Xxupw6 <= Qrohu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Vzupw6 <= 1'b0; + else + Vzupw6 <= Jrohu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + T1vpw6 <= 1'b0; + else + T1vpw6 <= Crohu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + R3vpw6 <= 1'b0; + else + R3vpw6 <= Vqohu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + P5vpw6 <= 1'b1; + else + P5vpw6 <= Oqohu6; + +always @(posedge DCLK or negedge DBGRESETn) + if(~DBGRESETn) + K7vpw6 <= 1'b1; + else + K7vpw6 <= Vyuhu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + F9vpw6 <= 1'b0; + else + F9vpw6 <= Hqohu6; + +always @(posedge DCLK) Gbvpw6 <= R9phu6; +always @(posedge SWCLKTCK) Ldvpw6 <= Uyxhu6; +always @(posedge SWCLKTCK) Cfvpw6 <= Nkxhu6; +always @(posedge HCLK) Hhvpw6 <= Akuhu6; +always @(posedge HCLK) Jjvpw6 <= D0rhu6; +always @(posedge HCLK) Jlvpw6 <= K0rhu6; +always @(posedge HCLK) Jnvpw6 <= M1rhu6; +always @(posedge HCLK) Jpvpw6 <= A2rhu6; +always @(posedge HCLK) Jrvpw6 <= O2rhu6; +always @(posedge HCLK) Jtvpw6 <= E4rhu6; +always @(posedge DCLK or negedge DBGRESETn) + if(~DBGRESETn) + Jvvpw6 <= 1'b0; + else + Jvvpw6 <= Dhvhu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Dxvpw6 <= 1'b1; + else + Dxvpw6 <= Gfvhu6; + +always @(posedge HCLK) Dzvpw6 <= Aqohu6; +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + C1wpw6 <= 1'b0; + else + C1wpw6 <= Hyuhu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + C3wpw6 <= 1'b0; + else + C3wpw6 <= Tbvhu6; + +always @(posedge HCLK) C5wpw6 <= Kmqhu6; +always @(posedge HCLK) C7wpw6 <= Rmqhu6; +always @(posedge HCLK) C9wpw6 <= Tnqhu6; +always @(posedge HCLK) Cbwpw6 <= Hoqhu6; +always @(posedge HCLK) Cdwpw6 <= Voqhu6; +always @(posedge HCLK) Cfwpw6 <= Lqqhu6; +always @(posedge HCLK) Chwpw6 <= Sqqhu6; +always @(posedge DCLK) Cjwpw6 <= Maphu6; +always @(posedge SWCLKTCK) Hlwpw6 <= Zxxhu6; +always @(posedge SWCLKTCK) Ymwpw6 <= Ilxhu6; +always @(posedge DCLK) Dpwpw6 <= Zcxhu6; +always @(posedge DCLK or negedge DBGRESETn) + if(~DBGRESETn) + Sqwpw6 <= 1'b0; + else + Sqwpw6 <= O3xhu6; + +always @(posedge DCLK) Kswpw6 <= Y9phu6; +always @(posedge SWCLKTCK) Puwpw6 <= Nyxhu6; +always @(posedge SWCLKTCK) Gwwpw6 <= Ukxhu6; +always @(posedge HCLK) Lywpw6 <= Tjuhu6; +always @(posedge SCLK) N0xpw6 <= Bauhu6; +always @(posedge HCLK) P2xpw6 <= Ovqhu6; +always @(posedge HCLK) P4xpw6 <= Vvqhu6; +always @(posedge HCLK) P6xpw6 <= Xwqhu6; +always @(posedge HCLK) P8xpw6 <= Lxqhu6; +always @(posedge HCLK) Paxpw6 <= Zxqhu6; +always @(posedge HCLK) Pcxpw6 <= Pzqhu6; +always @(posedge DCLK or negedge DBGRESETn) + if(~DBGRESETn) + Pexpw6 <= 1'b0; + else + Pexpw6 <= Khvhu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Jgxpw6 <= 1'b1; + else + Jgxpw6 <= Iithu6; + +always @(posedge HCLK) Iixpw6 <= Q4xhu6; +always @(posedge HCLK) Hkxpw6 <= Yuphu6; +always @(posedge HCLK) Hmxpw6 <= Fvphu6; +always @(posedge HCLK) Hoxpw6 <= Hwphu6; +always @(posedge HCLK) Hqxpw6 <= Vwphu6; +always @(posedge HCLK) Hsxpw6 <= Jxphu6; +always @(posedge HCLK) Huxpw6 <= Zyphu6; +always @(posedge HCLK) Gwxpw6 <= Gzphu6; +always @(posedge DCLK) Gyxpw6 <= Ccphu6; +always @(posedge SWCLKTCK) L0ypw6 <= Jwxhu6; +always @(posedge SWCLKTCK) C2ypw6 <= Ymxhu6; +always @(posedge DCLK) H4ypw6 <= Pexhu6; +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + W5ypw6 <= 1'b0; + else + W5ypw6 <= Yavhu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + X7ypw6 <= 1'b0; + else + X7ypw6 <= L0vhu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + U9ypw6 <= 1'b1; + else + U9ypw6 <= Rhvhu6; + +always @(posedge HCLK) Ubypw6 <= Tpohu6; +always @(posedge HCLK) Tdypw6 <= Hnrhu6; +always @(posedge HCLK) Sfypw6 <= Onrhu6; +always @(posedge HCLK) Rhypw6 <= Qorhu6; +always @(posedge HCLK) Qjypw6 <= Eprhu6; +always @(posedge HCLK) Plypw6 <= Sprhu6; +always @(posedge HCLK) Onypw6 <= Uqrhu6; +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Npypw6 <= 1'b0; + else + Npypw6 <= Brrhu6; + +always @(posedge HCLK) Jrypw6 <= P9vhu6; +always @(posedge HCLK) Ftypw6 <= P4thu6; +always @(posedge HCLK) Evypw6 <= I4thu6; +always @(posedge HCLK) Exypw6 <= B4thu6; +always @(posedge HCLK) Ezypw6 <= N3thu6; +always @(posedge HCLK) D1zpw6 <= Atshu6; +always @(posedge HCLK) C3zpw6 <= Eoshu6; +always @(posedge HCLK) B5zpw6 <= Pjshu6; +always @(posedge HCLK) A7zpw6 <= Afshu6; +always @(posedge HCLK) Z8zpw6 <= Eashu6; +always @(posedge HCLK) Zazpw6 <= P5shu6; +always @(posedge HCLK) Zczpw6 <= A1shu6; +always @(posedge HCLK) Zezpw6 <= Swrhu6; +always @(posedge HCLK) Zgzpw6 <= G3thu6; +always @(posedge HCLK) Yizpw6 <= Z2thu6; +always @(posedge HCLK) Ykzpw6 <= S2thu6; +always @(posedge HCLK) Ymzpw6 <= E2thu6; +always @(posedge HCLK) Xozpw6 <= Tsshu6; +always @(posedge HCLK) Wqzpw6 <= Xnshu6; +always @(posedge HCLK) Vszpw6 <= Ijshu6; +always @(posedge HCLK) Uuzpw6 <= Teshu6; +always @(posedge HCLK) Twzpw6 <= X9shu6; +always @(posedge HCLK) Tyzpw6 <= I5shu6; +always @(posedge HCLK) T00qw6 <= T0shu6; +always @(posedge HCLK) T20qw6 <= Lwrhu6; +always @(posedge HCLK) T40qw6 <= Mmrhu6; +always @(posedge HCLK) T60qw6 <= Bdrhu6; +always @(posedge HCLK) T80qw6 <= M8rhu6; +always @(posedge HCLK) Ta0qw6 <= X3rhu6; +always @(posedge HCLK) Tc0qw6 <= Izqhu6; +always @(posedge HCLK) Te0qw6 <= Tuqhu6; +always @(posedge HCLK) Tg0qw6 <= Eqqhu6; +always @(posedge HCLK) Ti0qw6 <= Lcqhu6; +always @(posedge HCLK) Tk0qw6 <= W7qhu6; +always @(posedge HCLK) Tm0qw6 <= Syphu6; +always @(posedge HCLK) So0qw6 <= Hpphu6; +always @(posedge HCLK) Rq0qw6 <= Bhuhu6; +always @(posedge SCLK) Ss0qw6 <= Tcuhu6; +always @(posedge HCLK) Tu0qw6 <= Nlphu6; +always @(posedge HCLK) Sw0qw6 <= Ulphu6; +always @(posedge HCLK) Ry0qw6 <= Wmphu6; +always @(posedge HCLK) Q01qw6 <= Knphu6; +always @(posedge HCLK) P21qw6 <= Ynphu6; +always @(posedge HCLK) O41qw6 <= Opphu6; +always @(posedge HCLK) N61qw6 <= Vpphu6; +always @(posedge DCLK) M81qw6 <= Qcphu6; +always @(posedge SWCLKTCK) Qa1qw6 <= Vvxhu6; +always @(posedge SWCLKTCK) Gc1qw6 <= Mnxhu6; +always @(posedge DCLK) Ke1qw6 <= U6xhu6; +always @(posedge DCLK) Yf1qw6 <= N6xhu6; +always @(posedge DCLK) Mh1qw6 <= Jcphu6; +always @(posedge SWCLKTCK) Qj1qw6 <= Cwxhu6; +always @(posedge SWCLKTCK) Gl1qw6 <= Fnxhu6; +always @(posedge HCLK) Kn1qw6 <= Kuphu6; +always @(posedge HCLK) Jp1qw6 <= Cqphu6; +always @(posedge HCLK) Ir1qw6 <= Jqphu6; +always @(posedge HCLK) Ht1qw6 <= Lrphu6; +always @(posedge HCLK) Gv1qw6 <= Zrphu6; +always @(posedge HCLK) Fx1qw6 <= Nsphu6; +always @(posedge HCLK) Ez1qw6 <= Btphu6; +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + D12qw6 <= 1'b1; + else + D12qw6 <= Mpohu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + A32qw6 <= 1'b1; + else + A32qw6 <= Fpohu6; + +always @(posedge DCLK) X42qw6 <= S6phu6; +always @(posedge SWCLKTCK) C72qw6 <= T1yhu6; +always @(posedge SWCLKTCK or negedge Fmdhu6) + if(~Fmdhu6) + T82qw6 <= 1'b0; + else + T82qw6 <= Lqxhu6; + +always @(posedge SWCLKTCK) Ra2qw6 <= Ohxhu6; +always @(posedge DCLK) Wc2qw6 <= F9xhu6; +always @(posedge DCLK or negedge DBGRESETn) + if(~DBGRESETn) + Le2qw6 <= 1'b0; + else + Le2qw6 <= F2xhu6; + +always @(posedge DCLK or negedge DBGRESETn) + if(~DBGRESETn) + Dg2qw6 <= 1'b0; + else + Dg2qw6 <= G6xhu6; + +always @(posedge DCLK or negedge DBGRESETn) + if(~DBGRESETn) + Uh2qw6 <= 1'b0; + else + Uh2qw6 <= Ghthu6; + +always @(posedge DCLK or negedge DBGRESETn) + if(~DBGRESETn) + Nj2qw6 <= 1'b1; + else + Nj2qw6 <= E7vhu6; + +always @(posedge DCLK) Fl2qw6 <= B8phu6; +always @(posedge SWCLKTCK) Kn2qw6 <= K0yhu6; +always @(posedge SWCLKTCK) Bp2qw6 <= Xixhu6; +always @(posedge DCLK or negedge DBGRESETn) + if(~DBGRESETn) + Gr2qw6 <= 1'b0; + else + Gr2qw6 <= W0xhu6; + +always @(posedge DCLK) Bt2qw6 <= I0xhu6; +always @(posedge DCLK) Xu2qw6 <= Zdphu6; +always @(posedge SWCLKTCK) Bx2qw6 <= Bsxhu6; +always @(posedge SWCLKTCK or negedge Fmdhu6) + if(~Fmdhu6) + Ry2qw6 <= 1'b0; + else + Ry2qw6 <= J3yhu6; + +always @(posedge SWCLKTCK) L03qw6 <= Voxhu6; +always @(posedge DCLK) P23qw6 <= D8xhu6; +always @(posedge DCLK or negedge DBGRESETn) + if(~DBGRESETn) + D43qw6 <= 1'b0; + else + D43qw6 <= T2xhu6; + +always @(posedge DCLK) V53qw6 <= Sdphu6; +always @(posedge SWCLKTCK) Z73qw6 <= Psxhu6; +always @(posedge SWCLKTCK) P93qw6 <= Ooxhu6; +always @(posedge DCLK or negedge DBGRESETn) + if(~DBGRESETn) + Tb3qw6 <= 1'b0; + else + Tb3qw6 <= Dfxhu6; + +always @(posedge DCLK) Nd3qw6 <= B7xhu6; +always @(posedge DCLK) Bf3qw6 <= P7xhu6; +always @(posedge DCLK) Pg3qw6 <= W7xhu6; +always @(posedge DCLK or negedge DBGRESETn) + if(~DBGRESETn) + Di3qw6 <= 1'b0; + else + Di3qw6 <= A3xhu6; + +always @(posedge DCLK) Vj3qw6 <= R8xhu6; +always @(posedge DCLK) Jl3qw6 <= Lcxhu6; +always @(posedge DCLK) Ym3qw6 <= Ecxhu6; +always @(posedge DCLK) No3qw6 <= Vaxhu6; +always @(posedge DCLK) Cq3qw6 <= M9xhu6; +always @(posedge DCLK) Rr3qw6 <= Z6phu6; +always @(posedge SWCLKTCK) Wt3qw6 <= M1yhu6; +always @(posedge SWCLKTCK) Nv3qw6 <= Vhxhu6; +always @(posedge HCLK) Sx3qw6 <= Ufvhu6; +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Sz3qw6 <= 1'b1; + else + Sz3qw6 <= Yoohu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + P14qw6 <= 1'b1; + else + P14qw6 <= Wgvhu6; + +always @(posedge HCLK) P34qw6 <= Xushu6; +always @(posedge HCLK) P54qw6 <= Dyshu6; +always @(posedge HCLK) Gp6ax6 <= L2thu6; +always @(posedge HCLK) Gr6ax6 <= U3thu6; +always @(posedge HCLK) Gt6ax6 <= X8thu6; +always @(posedge HCLK) Gv6ax6 <= W9vhu6; +always @(posedge HCLK) Gx6ax6 <= Davhu6; +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Gz6ax6 <= 1'b0; + else + Gz6ax6 <= Mkthu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + F17ax6 <= 1'b0; + else + F17ax6 <= Rjthu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + C37ax6 <= 1'b1; + else + C37ax6 <= Roohu6; + +always @(posedge HCLK) Z47ax6 <= Dmqhu6; +always @(posedge DCLK) Z67ax6 <= Taphu6; +always @(posedge SWCLKTCK) E97ax6 <= Sxxhu6; +always @(posedge SWCLKTCK) Va7ax6 <= Plxhu6; +always @(posedge DCLK) Ad7ax6 <= Gdxhu6; +always @(posedge DCLK or negedge DBGRESETn) + if(~DBGRESETn) + Pe7ax6 <= 1'b0; + else + Pe7ax6 <= M2xhu6; + +always @(posedge DCLK) Hg7ax6 <= Gephu6; +always @(posedge SWCLKTCK) Li7ax6 <= Urxhu6; +always @(posedge SWCLKTCK) Bk7ax6 <= Cpxhu6; +always @(posedge DCLK) Fm7ax6 <= P0xhu6; +always @(posedge DCLK) Xn7ax6 <= K8xhu6; +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Lp7ax6 <= 1'b0; + else + Lp7ax6 <= Xluhu6; + +always @(posedge SCLK) Nr7ax6 <= U9uhu6; +always @(posedge SCLK) Pt7ax6 <= Ybuhu6; +always @(posedge SCLK) Rv7ax6 <= Hduhu6; +always @(posedge HCLK) Sx7ax6 <= Gdqhu6; +always @(posedge HCLK) Sz7ax6 <= Ndqhu6; +always @(posedge HCLK) S18ax6 <= Peqhu6; +always @(posedge HCLK) S38ax6 <= Dfqhu6; +always @(posedge HCLK) S58ax6 <= Rfqhu6; +always @(posedge HCLK) S78ax6 <= Ahqhu6; +always @(posedge HCLK) S98ax6 <= Hhqhu6; +always @(posedge HCLK) Sb8ax6 <= Ohqhu6; +always @(posedge DCLK) Sd8ax6 <= Abphu6; +always @(posedge SWCLKTCK) Xf8ax6 <= Lxxhu6; +always @(posedge SWCLKTCK) Oh8ax6 <= Exxhu6; +always @(posedge SWCLKTCK) Fj8ax6 <= Dmxhu6; +always @(posedge DCLK) Kl8ax6 <= Udxhu6; +always @(posedge DCLK or negedge DBGRESETn) + if(~DBGRESETn) + Zm8ax6 <= 1'b0; + else + Zm8ax6 <= H3xhu6; + +always @(posedge DCLK) Ro8ax6 <= Obphu6; +always @(posedge SWCLKTCK) Wq8ax6 <= Xwxhu6; +always @(posedge SWCLKTCK) Ns8ax6 <= Kmxhu6; +always @(posedge DCLK) Su8ax6 <= Bexhu6; +always @(posedge DCLK or negedge DBGRESETn) + if(~DBGRESETn) + Hw8ax6 <= 1'b0; + else + Hw8ax6 <= Y1xhu6; + +always @(posedge DCLK or negedge DBGRESETn) + if(~DBGRESETn) + Zx8ax6 <= 1'b0; + else + Zx8ax6 <= Z5xhu6; + +always @(posedge DCLK or negedge DBGRESETn) + if(~DBGRESETn) + Vz8ax6 <= 1'b0; + else + Vz8ax6 <= S5xhu6; + +always @(posedge DCLK or negedge DBGRESETn) + if(~DBGRESETn) + R19ax6 <= 1'b0; + else + R19ax6 <= L5xhu6; + +always @(posedge DCLK) N39ax6 <= Jrvhu6; +always @(posedge DCLK) J59ax6 <= Vqvhu6; +always @(posedge DCLK) G79ax6 <= Mpvhu6; +always @(posedge DCLK) D99ax6 <= Fpvhu6; +always @(posedge DCLK) Ab9ax6 <= Wnvhu6; +always @(posedge DCLK) Xc9ax6 <= Pnvhu6; +always @(posedge DCLK) Ue9ax6 <= Bnvhu6; +always @(posedge DCLK) Rg9ax6 <= Umvhu6; +always @(posedge DCLK) Oi9ax6 <= Gmvhu6; +always @(posedge DCLK) Lk9ax6 <= Zlvhu6; +always @(posedge DCLK) Im9ax6 <= Llvhu6; +always @(posedge DCLK) Fo9ax6 <= Xkvhu6; +always @(posedge DCLK) Bq9ax6 <= Qkvhu6; +always @(posedge DCLK) Xr9ax6 <= Ckvhu6; +always @(posedge DCLK) Tt9ax6 <= Vjvhu6; +always @(posedge DCLK) Pv9ax6 <= Ojvhu6; +always @(posedge DCLK) Lx9ax6 <= Hjvhu6; +always @(posedge DCLK) Hz9ax6 <= Ajvhu6; +always @(posedge DCLK) D1aax6 <= D2whu6; +always @(posedge DCLK) Z2aax6 <= P1whu6; +always @(posedge DCLK) W4aax6 <= G0whu6; +always @(posedge DCLK) T6aax6 <= Zzvhu6; +always @(posedge DCLK) Q8aax6 <= Qyvhu6; +always @(posedge DCLK) Naaax6 <= Jyvhu6; +always @(posedge DCLK) Kcaax6 <= Vxvhu6; +always @(posedge DCLK) Heaax6 <= Oxvhu6; +always @(posedge DCLK) Egaax6 <= Axvhu6; +always @(posedge DCLK) Biaax6 <= Twvhu6; +always @(posedge DCLK) Yjaax6 <= Fwvhu6; +always @(posedge DCLK) Vlaax6 <= Rvvhu6; +always @(posedge DCLK) Rnaax6 <= Kvvhu6; +always @(posedge DCLK) Npaax6 <= Wuvhu6; +always @(posedge DCLK) Jraax6 <= Puvhu6; +always @(posedge DCLK) Ftaax6 <= Iuvhu6; +always @(posedge DCLK) Bvaax6 <= Buvhu6; +always @(posedge DCLK) Xwaax6 <= Utvhu6; +always @(posedge DCLK or negedge DBGRESETn) + if(~DBGRESETn) + Tyaax6 <= 1'b0; + else + Tyaax6 <= Ntvhu6; + +always @(posedge DCLK or negedge DBGRESETn) + if(~DBGRESETn) + P0bax6 <= 1'b0; + else + P0bax6 <= Gtvhu6; + +always @(posedge DCLK or negedge DBGRESETn) + if(~DBGRESETn) + L2bax6 <= 1'b0; + else + L2bax6 <= Zsvhu6; + +always @(posedge DCLK or negedge DBGRESETn) + if(~DBGRESETn) + H4bax6 <= 1'b0; + else + H4bax6 <= T3whu6; + +always @(posedge DCLK) X5bax6 <= Qrvhu6; +always @(posedge DCLK) T7bax6 <= Xrvhu6; +always @(posedge DCLK) P9bax6 <= Esvhu6; +always @(posedge DCLK) Lbbax6 <= Lsvhu6; +always @(posedge DCLK) Hdbax6 <= K2whu6; +always @(posedge DCLK) Dfbax6 <= R2whu6; +always @(posedge DCLK) Zgbax6 <= Y2whu6; +always @(posedge DCLK) Vibax6 <= F3whu6; +always @(posedge DCLK or negedge DBGRESETn) + if(~DBGRESETn) + Rkbax6 <= 1'b0; + else + Rkbax6 <= Ifphu6; + +always @(posedge DCLK or negedge DBGRESETn) + if(~DBGRESETn) + Hmbax6 <= 1'b0; + else + Hmbax6 <= Oyuhu6; + +always @(posedge DCLK or negedge DBGRESETn) + if(~DBGRESETn) + Xnbax6 <= 1'b0; + else + Xnbax6 <= X6vhu6; + +always @(posedge DCLK) Opbax6 <= Vbwhu6; +always @(posedge DCLK) Krbax6 <= Hbwhu6; +always @(posedge DCLK) Htbax6 <= Fawhu6; +always @(posedge DCLK) Evbax6 <= Y9whu6; +always @(posedge DCLK) Bxbax6 <= P8whu6; +always @(posedge DCLK) Yybax6 <= I8whu6; +always @(posedge DCLK) V0cax6 <= U7whu6; +always @(posedge DCLK) S2cax6 <= N7whu6; +always @(posedge DCLK) P4cax6 <= Z6whu6; +always @(posedge DCLK) M6cax6 <= S6whu6; +always @(posedge DCLK) J8cax6 <= E6whu6; +always @(posedge DCLK) Facax6 <= Q5whu6; +always @(posedge DCLK) Bccax6 <= J5whu6; +always @(posedge DCLK) Xdcax6 <= V4whu6; +always @(posedge DCLK) Tfcax6 <= O4whu6; +always @(posedge DCLK) Phcax6 <= H4whu6; +always @(posedge DCLK or negedge DBGRESETn) + if(~DBGRESETn) + Ljcax6 <= 1'b0; + else + Ljcax6 <= A4whu6; + +always @(posedge DCLK) Hlcax6 <= B0xhu6; +always @(posedge DCLK) Dncax6 <= Nzwhu6; +always @(posedge DCLK) Apcax6 <= Lywhu6; +always @(posedge DCLK) Xqcax6 <= Eywhu6; +always @(posedge DCLK) Uscax6 <= Vwwhu6; +always @(posedge DCLK) Rucax6 <= Owwhu6; +always @(posedge DCLK) Owcax6 <= Awwhu6; +always @(posedge DCLK) Lycax6 <= Tvwhu6; +always @(posedge DCLK) I0dax6 <= Fvwhu6; +always @(posedge DCLK) F2dax6 <= Yuwhu6; +always @(posedge DCLK) C4dax6 <= Kuwhu6; +always @(posedge DCLK) Y5dax6 <= Wtwhu6; +always @(posedge DCLK) U7dax6 <= Ptwhu6; +always @(posedge DCLK) Q9dax6 <= Btwhu6; +always @(posedge DCLK) Mbdax6 <= Uswhu6; +always @(posedge DCLK) Iddax6 <= Nswhu6; +always @(posedge DCLK or negedge DBGRESETn) + if(~DBGRESETn) + Efdax6 <= 1'b0; + else + Efdax6 <= Gswhu6; + +always @(posedge DCLK) Ahdax6 <= Zrwhu6; +always @(posedge DCLK) Widax6 <= Lrwhu6; +always @(posedge DCLK) Tkdax6 <= Jqwhu6; +always @(posedge DCLK) Qmdax6 <= Cqwhu6; +always @(posedge DCLK) Nodax6 <= Towhu6; +always @(posedge DCLK) Kqdax6 <= Mowhu6; +always @(posedge DCLK) Hsdax6 <= Ynwhu6; +always @(posedge DCLK) Eudax6 <= Rnwhu6; +always @(posedge DCLK) Bwdax6 <= Dnwhu6; +always @(posedge DCLK) Yxdax6 <= Wmwhu6; +always @(posedge DCLK) Vzdax6 <= Imwhu6; +always @(posedge DCLK) R1eax6 <= Ulwhu6; +always @(posedge DCLK) N3eax6 <= Nlwhu6; +always @(posedge DCLK) J5eax6 <= Zkwhu6; +always @(posedge DCLK) F7eax6 <= Skwhu6; +always @(posedge DCLK) B9eax6 <= Lkwhu6; +always @(posedge DCLK or negedge DBGRESETn) + if(~DBGRESETn) + Xaeax6 <= 1'b0; + else + Xaeax6 <= Ekwhu6; + +always @(posedge DCLK) Tceax6 <= Xjwhu6; +always @(posedge DCLK) Peeax6 <= Jjwhu6; +always @(posedge DCLK) Mgeax6 <= Hiwhu6; +always @(posedge DCLK) Jieax6 <= Aiwhu6; +always @(posedge DCLK) Gkeax6 <= Rgwhu6; +always @(posedge DCLK) Dmeax6 <= Kgwhu6; +always @(posedge DCLK) Aoeax6 <= Wfwhu6; +always @(posedge DCLK) Xpeax6 <= Pfwhu6; +always @(posedge DCLK) Ureax6 <= Bfwhu6; +always @(posedge DCLK) Rteax6 <= Uewhu6; +always @(posedge DCLK) Oveax6 <= Gewhu6; +always @(posedge DCLK) Kxeax6 <= Sdwhu6; +always @(posedge DCLK) Gzeax6 <= Ldwhu6; +always @(posedge DCLK) C1fax6 <= Xcwhu6; +always @(posedge DCLK) Y2fax6 <= Qcwhu6; +always @(posedge DCLK) U4fax6 <= Jcwhu6; +always @(posedge DCLK or negedge DBGRESETn) + if(~DBGRESETn) + Q6fax6 <= 1'b0; + else + Q6fax6 <= Ccwhu6; + +always @(posedge DCLK or negedge DBGRESETn) + if(~DBGRESETn) + M8fax6 <= 1'b0; + else + M8fax6 <= Czuhu6; + +always @(posedge DCLK or negedge DBGRESETn) + if(~DBGRESETn) + Eafax6 <= 1'b0; + else + Eafax6 <= K1xhu6; + +always @(posedge DCLK or negedge DBGRESETn) + if(~DBGRESETn) + Sbfax6 <= 1'b0; + else + Sbfax6 <= R1xhu6; + +always @(posedge DCLK or negedge DBGRESETn) + if(~DBGRESETn) + Hdfax6 <= 1'b0; + else + Hdfax6 <= D1xhu6; + +always @(posedge DCLK) Vefax6 <= Edphu6; +always @(posedge SWCLKTCK) Zgfax6 <= Dtxhu6; +always @(posedge SWCLKTCK) Pifax6 <= Avxhu6; +always @(posedge SWCLKTCK) Okfax6 <= Isxhu6; +always @(posedge SWCLKTCK) Nmfax6 <= Xpxhu6; +always @(posedge DCLK or negedge DBGRESETn) + if(~DBGRESETn) + Uofax6 <= 1'b0; + else + Uofax6 <= Pkhpw6[1]; + +always @(posedge DCLK or negedge DBGRESETn) + if(~DBGRESETn) + Sqfax6 <= 1'b0; + else + Sqfax6 <= Pkhpw6[0]; + +always @(posedge DCLK or negedge DBGRESETn) + if(~DBGRESETn) + Qsfax6 <= 1'b0; + else + Qsfax6 <= Muxhu6; + +always @(posedge SWCLKTCK or negedge Fmdhu6) + if(~Fmdhu6) + Qufax6 <= 1'b0; + else + Qufax6 <= Dtnhu6; + +always @(posedge SWCLKTCK or negedge Fmdhu6) + if(~Fmdhu6) + Qwfax6 <= 1'b0; + else + Qwfax6 <= S3ohu6; + +always @(posedge SWCLKTCK or negedge Fmdhu6) + if(~Fmdhu6) + Ryfax6 <= 1'b0; + else + Ryfax6 <= Rtxhu6; + +always @(posedge SWCLKTCK) J0gax6 <= Tuxhu6; +always @(posedge DCLK) Q2gax6 <= Crvhu6; +always @(posedge DCLK) N4gax6 <= W1whu6; +always @(posedge DCLK) K6gax6 <= Obwhu6; +always @(posedge DCLK) H8gax6 <= Qjwhu6; +always @(posedge DCLK) Eagax6 <= Srwhu6; +always @(posedge DCLK) Bcgax6 <= Uzwhu6; +always @(posedge DCLK) Ydgax6 <= O2yhu6; +always @(posedge DCLK) Nfgax6 <= Hqvhu6; +always @(posedge DCLK) Khgax6 <= B1whu6; +always @(posedge DCLK) Hjgax6 <= Abwhu6; +always @(posedge DCLK) Elgax6 <= Cjwhu6; +always @(posedge DCLK) Bngax6 <= Erwhu6; +always @(posedge DCLK) Yogax6 <= Gzwhu6; +always @(posedge DCLK) Vqgax6 <= T9xhu6; +always @(posedge DCLK or negedge DBGRESETn) + if(~DBGRESETn) + Ksgax6 <= 1'b0; + else + Ksgax6 <= Kfxhu6; + +always @(posedge DCLK or negedge DBGRESETn) + if(~DBGRESETn) + Dugax6 <= 1'b0; + else + Dugax6 <= Wexhu6; + +always @(posedge DCLK or negedge DBGRESETn) + if(~DBGRESETn) + Wvgax6 <= 1'b0; + else + Wvgax6 <= C4xhu6; + +always @(posedge DCLK or negedge DBGRESETn) + if(~DBGRESETn) + Jxgax6 <= 1'b1; + else + Jxgax6 <= V3xhu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Vygax6 <= 1'b0; + else + Vygax6 <= U8vhu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + U0hax6 <= 1'b1; + else + U0hax6 <= Koohu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + R2hax6 <= 1'b1; + else + R2hax6 <= Doohu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + O4hax6 <= 1'b1; + else + O4hax6 <= Wnohu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + L6hax6 <= 1'b1; + else + L6hax6 <= Pnohu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + I8hax6 <= 1'b1; + else + I8hax6 <= Inohu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Fahax6 <= 1'b1; + else + Fahax6 <= Bnohu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Cchax6 <= 1'b1; + else + Cchax6 <= Umohu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Zdhax6 <= 1'b1; + else + Zdhax6 <= Nmohu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Wfhax6 <= 1'b1; + else + Wfhax6 <= Gmohu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Thhax6 <= 1'b1; + else + Thhax6 <= Zlohu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Qjhax6 <= 1'b1; + else + Qjhax6 <= Slohu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Nlhax6 <= 1'b1; + else + Nlhax6 <= Llohu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Knhax6 <= 1'b1; + else + Knhax6 <= Elohu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Hphax6 <= 1'b1; + else + Hphax6 <= Xkohu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Drhax6 <= 1'b1; + else + Drhax6 <= Qkohu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Zshax6 <= 1'b1; + else + Zshax6 <= Jkohu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Vuhax6 <= 1'b1; + else + Vuhax6 <= Ckohu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Rwhax6 <= 1'b1; + else + Rwhax6 <= Vjohu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Nyhax6 <= 1'b1; + else + Nyhax6 <= Ojohu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + J0iax6 <= 1'b1; + else + J0iax6 <= Hjohu6; + +always @(posedge SCLK) G2iax6 <= B2vhu6; +always @(posedge SCLK) F4iax6 <= I2vhu6; +always @(posedge SCLK) E6iax6 <= H5vhu6; +always @(posedge SCLK) E8iax6 <= D3vhu6; +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Daiax6 <= 1'b0; + else + Daiax6 <= Ajohu6; + +always @(posedge SCLK or negedge HRESETn) + if(~HRESETn) + Bciax6 <= 1'b0; + else + Bciax6 <= P2vhu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Zdiax6 <= 1'b0; + else + Zdiax6 <= Tiohu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Xfiax6 <= 1'b0; + else + Xfiax6 <= Xdvhu6; + +always @(posedge DCLK or negedge DBGRESETn) + if(~DBGRESETn) + Thiax6 <= 1'b0; + else + Thiax6 <= Frthu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Ijiax6 <= 1'b0; + else + Ijiax6 <= Ctthu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Eliax6 <= 1'b1; + else + Eliax6 <= W2vhu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Aniax6 <= 1'b0; + else + Aniax6 <= G1vhu6; + +always @(posedge SCLK or negedge HRESETn) + if(~HRESETn) + Woiax6 <= 1'b0; + else + Woiax6 <= Bpthu6; + +always @(posedge SCLK) Zqiax6 <= K3vhu6; +always @(posedge SCLK) Ysiax6 <= R3vhu6; +always @(posedge SCLK) Xuiax6 <= Y3vhu6; +always @(posedge SCLK) Wwiax6 <= F4vhu6; +always @(posedge SCLK) Wyiax6 <= M4vhu6; +always @(posedge SCLK) W0jax6 <= T4vhu6; +always @(posedge SCLK) W2jax6 <= A5vhu6; +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + W4jax6 <= 1'b1; + else + W4jax6 <= Withu6; + +always @(posedge HCLK) V6jax6 <= Miohu6; +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + U8jax6 <= 1'b0; + else + U8jax6 <= Fiohu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Tajax6 <= 1'b1; + else + Tajax6 <= Yhohu6; + +always @(posedge HCLK) Tcjax6 <= Rhohu6; +always @(posedge HCLK) Sejax6 <= Khohu6; +always @(posedge HCLK) Sgjax6 <= Dhohu6; +always @(posedge HCLK) Sijax6 <= Wgohu6; +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Skjax6 <= 1'b1; + else + Skjax6 <= E0vhu6; + +always @(posedge HCLK) Smjax6 <= Pgohu6; +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Sojax6 <= 1'b1; + else + Sojax6 <= Xzuhu6; + +always @(posedge HCLK) Sqjax6 <= Igohu6; +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Ssjax6 <= 1'b1; + else + Ssjax6 <= Qzuhu6; + +always @(posedge HCLK) Sujax6 <= Bgohu6; +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Rwjax6 <= 1'b1; + else + Rwjax6 <= Jzuhu6; + +always @(posedge HCLK) Qyjax6 <= Ufohu6; +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + P0kax6 <= 1'b1; + else + P0kax6 <= V5vhu6; + +always @(posedge HCLK) O2kax6 <= Nfohu6; +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + N4kax6 <= 1'b1; + else + N4kax6 <= Djthu6; + +always @(posedge HCLK) M6kax6 <= Gfohu6; +always @(posedge HCLK) L8kax6 <= Zeohu6; +always @(posedge HCLK) Kakax6 <= Seohu6; +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Jckax6 <= 1'b1; + else + Jckax6 <= Pithu6; + +always @(posedge HCLK) Iekax6 <= Xfthu6; +always @(posedge HCLK) Lgkax6 <= Qfthu6; +always @(posedge HCLK) Oikax6 <= Jfthu6; +always @(posedge HCLK) Rkkax6 <= Cfthu6; +always @(posedge HCLK) Umkax6 <= Leohu6; +always @(posedge HCLK) Tokax6 <= Eeohu6; +always @(posedge HCLK) Sqkax6 <= Pgvhu6; +always @(posedge HCLK) Rskax6 <= Oethu6; +always @(posedge HCLK) Qukax6 <= Cushu6; +always @(posedge HCLK) Pwkax6 <= Ixshu6; +always @(posedge HCLK) Oykax6 <= C8thu6; +always @(posedge HCLK) N0lax6 <= Eevhu6; +always @(posedge HCLK) M2lax6 <= Sevhu6; +always @(posedge SCLK or negedge HRESETn) + if(~HRESETn) + L4lax6 <= 1'b1; + else + L4lax6 <= Wfphu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + L6lax6 <= 1'b1; + else + L6lax6 <= Xdohu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + I8lax6 <= 1'b0; + else + I8lax6 <= Qdohu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Halax6 <= 1'b0; + else + Halax6 <= Z7vhu6; + +always @(posedge HCLK) Eclax6 <= Bxshu6; +always @(posedge HCLK) Delax6 <= Uwshu6; +always @(posedge HCLK) Cglax6 <= Nwshu6; +always @(posedge HCLK) Cilax6 <= Gwshu6; +always @(posedge HCLK) Cklax6 <= Zvshu6; +always @(posedge HCLK) Cmlax6 <= Svshu6; +always @(posedge HCLK) Bolax6 <= Pqshu6; +always @(posedge HCLK) Aqlax6 <= Tlshu6; +always @(posedge HCLK) Zrlax6 <= Ehshu6; +always @(posedge HCLK) Ytlax6 <= Pcshu6; +always @(posedge HCLK) Xvlax6 <= T7shu6; +always @(posedge HCLK) Xxlax6 <= E3shu6; +always @(posedge HCLK) Xzlax6 <= Pyrhu6; +always @(posedge HCLK) X1max6 <= Hurhu6; +always @(posedge HCLK) X3max6 <= Xorhu6; +always @(posedge HCLK) W5max6 <= Ikrhu6; +always @(posedge HCLK) W7max6 <= Xarhu6; +always @(posedge HCLK) W9max6 <= I6rhu6; +always @(posedge HCLK) Wbmax6 <= T1rhu6; +always @(posedge HCLK) Wdmax6 <= Exqhu6; +always @(posedge HCLK) Wfmax6 <= Psqhu6; +always @(posedge HCLK) Whmax6 <= Aoqhu6; +always @(posedge HCLK) Wjmax6 <= Weqhu6; +always @(posedge HCLK) Wlmax6 <= Haqhu6; +always @(posedge HCLK) Wnmax6 <= S5qhu6; +always @(posedge HCLK) Wpmax6 <= Owphu6; +always @(posedge HCLK) Wrmax6 <= Srphu6; +always @(posedge HCLK) Vtmax6 <= Dnphu6; +always @(posedge HCLK) Uvmax6 <= X1thu6; +always @(posedge HCLK) Txmax6 <= Q1thu6; +always @(posedge HCLK) Szmax6 <= J1thu6; +always @(posedge HCLK) S1nax6 <= C1thu6; +always @(posedge HCLK) S3nax6 <= V0thu6; +always @(posedge HCLK) S5nax6 <= O0thu6; +always @(posedge HCLK) R7nax6 <= Msshu6; +always @(posedge HCLK) Q9nax6 <= Qnshu6; +always @(posedge HCLK) Pbnax6 <= Bjshu6; +always @(posedge HCLK) Odnax6 <= Meshu6; +always @(posedge HCLK) Nfnax6 <= Q9shu6; +always @(posedge HCLK) Nhnax6 <= B5shu6; +always @(posedge HCLK) Njnax6 <= M0shu6; +always @(posedge HCLK) Nlnax6 <= Ewrhu6; +always @(posedge HCLK) Nnnax6 <= Fmrhu6; +always @(posedge HCLK) Npnax6 <= Ucrhu6; +always @(posedge HCLK) Nrnax6 <= F8rhu6; +always @(posedge HCLK) Ntnax6 <= Q3rhu6; +always @(posedge HCLK) Nvnax6 <= Bzqhu6; +always @(posedge HCLK) Nxnax6 <= Muqhu6; +always @(posedge HCLK) Nznax6 <= Xpqhu6; +always @(posedge HCLK) N1oax6 <= Tgqhu6; +always @(posedge HCLK) N3oax6 <= Ecqhu6; +always @(posedge HCLK) N5oax6 <= P7qhu6; +always @(posedge HCLK) N7oax6 <= Lyphu6; +always @(posedge HCLK) N9oax6 <= Apphu6; +always @(posedge HCLK) Mboax6 <= V7thu6; +always @(posedge HCLK) Ldoax6 <= O7thu6; +always @(posedge HCLK) Kfoax6 <= H7thu6; +always @(posedge HCLK) Khoax6 <= A7thu6; +always @(posedge HCLK) Kjoax6 <= T6thu6; +always @(posedge HCLK) Kloax6 <= M6thu6; +always @(posedge HCLK) Jnoax6 <= Rrshu6; +always @(posedge HCLK) Ipoax6 <= Vmshu6; +always @(posedge HCLK) Hroax6 <= Gishu6; +always @(posedge HCLK) Gtoax6 <= Rdshu6; +always @(posedge HCLK) Fvoax6 <= V8shu6; +always @(posedge HCLK) Fxoax6 <= G4shu6; +always @(posedge HCLK) Fzoax6 <= Rzrhu6; +always @(posedge HCLK) F1pax6 <= Jvrhu6; +always @(posedge HCLK) F3pax6 <= Zprhu6; +always @(posedge HCLK) E5pax6 <= Klrhu6; +always @(posedge HCLK) E7pax6 <= Zbrhu6; +always @(posedge HCLK) E9pax6 <= K7rhu6; +always @(posedge HCLK) Ebpax6 <= V2rhu6; +always @(posedge HCLK) Edpax6 <= Gyqhu6; +always @(posedge HCLK) Efpax6 <= Rtqhu6; +always @(posedge HCLK) Ehpax6 <= Cpqhu6; +always @(posedge HCLK) Ejpax6 <= Yfqhu6; +always @(posedge HCLK) Elpax6 <= Jbqhu6; +always @(posedge HCLK) Enpax6 <= U6qhu6; +always @(posedge HCLK) Eppax6 <= Qxphu6; +always @(posedge HCLK) Erpax6 <= Usphu6; +always @(posedge HCLK) Dtpax6 <= Fophu6; +always @(posedge HCLK) Cvpax6 <= Hethu6; +always @(posedge HCLK) Bxpax6 <= Aethu6; +always @(posedge HCLK) Azpax6 <= Tdthu6; +always @(posedge HCLK) A1qax6 <= Mdthu6; +always @(posedge HCLK) A3qax6 <= Fdthu6; +always @(posedge HCLK) A5qax6 <= Ycthu6; +always @(posedge HCLK) Z6qax6 <= Upshu6; +always @(posedge HCLK) Y8qax6 <= Ykshu6; +always @(posedge HCLK) Xaqax6 <= Jgshu6; +always @(posedge HCLK) Wcqax6 <= Ubshu6; +always @(posedge HCLK) Veqax6 <= Y6shu6; +always @(posedge HCLK) Vgqax6 <= J2shu6; +always @(posedge HCLK) Viqax6 <= Uxrhu6; +always @(posedge HCLK) Vkqax6 <= Mtrhu6; +always @(posedge HCLK) Vmqax6 <= Vnrhu6; +always @(posedge HCLK) Uoqax6 <= Gjrhu6; +always @(posedge HCLK) Uqqax6 <= V9rhu6; +always @(posedge HCLK) Usqax6 <= G5rhu6; +always @(posedge HCLK) Uuqax6 <= R0rhu6; +always @(posedge HCLK) Uwqax6 <= Cwqhu6; +always @(posedge HCLK) Uyqax6 <= Nrqhu6; +always @(posedge HCLK) U0rax6 <= Ymqhu6; +always @(posedge HCLK) U2rax6 <= Udqhu6; +always @(posedge HCLK) U4rax6 <= F9qhu6; +always @(posedge HCLK) U6rax6 <= Q4qhu6; +always @(posedge HCLK) U8rax6 <= Mvphu6; +always @(posedge HCLK) Uarax6 <= Qqphu6; +always @(posedge HCLK) Tcrax6 <= Bmphu6; +always @(posedge HCLK) Serax6 <= Vtshu6; +always @(posedge HCLK) Rgrax6 <= Zoshu6; +always @(posedge HCLK) Qirax6 <= Zashu6; +always @(posedge HCLK) Qkrax6 <= Rsrhu6; +always @(posedge HCLK) Qmrax6 <= Wrrhu6; +always @(posedge HCLK) Qorax6 <= Prrhu6; +always @(posedge HCLK) Pqrax6 <= Jorhu6; +always @(posedge HCLK) Osrax6 <= Ujrhu6; +always @(posedge HCLK) Ourax6 <= Jarhu6; +always @(posedge HCLK) Owrax6 <= U5rhu6; +always @(posedge HCLK) Oyrax6 <= F1rhu6; +always @(posedge HCLK) O0sax6 <= Qwqhu6; +always @(posedge HCLK) O2sax6 <= Bsqhu6; +always @(posedge HCLK) O4sax6 <= Mnqhu6; +always @(posedge HCLK) O6sax6 <= Ieqhu6; +always @(posedge HCLK) O8sax6 <= T9qhu6; +always @(posedge HCLK) Oasax6 <= E5qhu6; +always @(posedge HCLK) Ocsax6 <= Awphu6; +always @(posedge HCLK) Oesax6 <= Erphu6; +always @(posedge HCLK) Ngsax6 <= Pmphu6; +always @(posedge HCLK) Misax6 <= H0thu6; +always @(posedge HCLK) Lksax6 <= A0thu6; +always @(posedge HCLK) Kmsax6 <= Tzshu6; +always @(posedge HCLK) Kosax6 <= Mzshu6; +always @(posedge HCLK) Kqsax6 <= Fzshu6; +always @(posedge HCLK) Kssax6 <= Yyshu6; +always @(posedge HCLK) Jusax6 <= Fsshu6; +always @(posedge HCLK) Iwsax6 <= Jnshu6; +always @(posedge HCLK) Hysax6 <= Uishu6; +always @(posedge HCLK) G0tax6 <= Feshu6; +always @(posedge HCLK) F2tax6 <= J9shu6; +always @(posedge HCLK) F4tax6 <= U4shu6; +always @(posedge HCLK) F6tax6 <= F0shu6; +always @(posedge HCLK) F8tax6 <= Xvrhu6; +always @(posedge HCLK) Fatax6 <= Nqrhu6; +always @(posedge HCLK) Ectax6 <= Ylrhu6; +always @(posedge HCLK) Eetax6 <= Ncrhu6; +always @(posedge HCLK) Egtax6 <= Y7rhu6; +always @(posedge HCLK) Eitax6 <= J3rhu6; +always @(posedge HCLK) Ektax6 <= Uyqhu6; +always @(posedge HCLK) Emtax6 <= Fuqhu6; +always @(posedge HCLK) Eotax6 <= Qpqhu6; +always @(posedge HCLK) Eqtax6 <= Mgqhu6; +always @(posedge HCLK) Estax6 <= Xbqhu6; +always @(posedge HCLK) Eutax6 <= I7qhu6; +always @(posedge HCLK) Ewtax6 <= Eyphu6; +always @(posedge HCLK) Eytax6 <= Tophu6; +always @(posedge HCLK) D0uax6 <= Bbthu6; +always @(posedge HCLK) C2uax6 <= Uathu6; +always @(posedge HCLK) B4uax6 <= Nathu6; +always @(posedge HCLK) B6uax6 <= Gathu6; +always @(posedge HCLK) B8uax6 <= Z9thu6; +always @(posedge HCLK) Bauax6 <= S9thu6; +always @(posedge HCLK) Acuax6 <= Drshu6; +always @(posedge HCLK) Zduax6 <= Hmshu6; +always @(posedge HCLK) Yfuax6 <= Shshu6; +always @(posedge HCLK) Xhuax6 <= Ddshu6; +always @(posedge HCLK) Wjuax6 <= H8shu6; +always @(posedge HCLK) Wluax6 <= S3shu6; +always @(posedge HCLK) Wnuax6 <= Dzrhu6; +always @(posedge HCLK) Wpuax6 <= Vurhu6; +always @(posedge HCLK) Wruax6 <= Lprhu6; +always @(posedge HCLK) Vtuax6 <= Wkrhu6; +always @(posedge HCLK) Vvuax6 <= Lbrhu6; +always @(posedge HCLK) Vxuax6 <= W6rhu6; +always @(posedge HCLK) Vzuax6 <= H2rhu6; +always @(posedge HCLK) V1vax6 <= Sxqhu6; +always @(posedge HCLK) V3vax6 <= Dtqhu6; +always @(posedge HCLK) V5vax6 <= Ooqhu6; +always @(posedge HCLK) V7vax6 <= Kfqhu6; +always @(posedge HCLK) V9vax6 <= Vaqhu6; +always @(posedge HCLK) Vbvax6 <= G6qhu6; +always @(posedge HCLK) Vdvax6 <= Cxphu6; +always @(posedge HCLK) Vfvax6 <= Gsphu6; +always @(posedge HCLK) Uhvax6 <= Rnphu6; +always @(posedge HCLK) Tjvax6 <= F6thu6; +always @(posedge HCLK) Slvax6 <= Y5thu6; +always @(posedge HCLK) Rnvax6 <= R5thu6; +always @(posedge HCLK) Rpvax6 <= K5thu6; +always @(posedge HCLK) Rrvax6 <= D5thu6; +always @(posedge HCLK) Rtvax6 <= W4thu6; +always @(posedge HCLK) Qvvax6 <= Yrshu6; +always @(posedge HCLK) Pxvax6 <= Cnshu6; +always @(posedge HCLK) Ozvax6 <= Nishu6; +always @(posedge HCLK) N1wax6 <= Ydshu6; +always @(posedge HCLK) M3wax6 <= C9shu6; +always @(posedge HCLK) M5wax6 <= N4shu6; +always @(posedge HCLK) M7wax6 <= Yzrhu6; +always @(posedge HCLK) M9wax6 <= Qvrhu6; +always @(posedge HCLK) Mbwax6 <= Gqrhu6; +always @(posedge HCLK) Ldwax6 <= Rlrhu6; +always @(posedge HCLK) Lfwax6 <= Gcrhu6; +always @(posedge HCLK) Lhwax6 <= R7rhu6; +always @(posedge HCLK) Ljwax6 <= C3rhu6; +always @(posedge HCLK) Llwax6 <= Nyqhu6; +always @(posedge HCLK) Lnwax6 <= Ytqhu6; +always @(posedge HCLK) Lpwax6 <= Jpqhu6; +always @(posedge HCLK) Lrwax6 <= Fgqhu6; +always @(posedge HCLK) Ltwax6 <= Qbqhu6; +always @(posedge HCLK) Lvwax6 <= B7qhu6; +always @(posedge HCLK) Lxwax6 <= Xxphu6; +always @(posedge HCLK) Lzwax6 <= Mophu6; +always @(posedge HCLK) K1xax6 <= Rcthu6; +always @(posedge HCLK) J3xax6 <= Kcthu6; +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + I5xax6 <= 1'b0; + else + I5xax6 <= Hcvhu6; + +always @(posedge HCLK) J7xax6 <= Cluhu6; +always @(posedge HCLK) L9xax6 <= Yiuhu6; +always @(posedge SCLK) Nbxax6 <= Wauhu6; +always @(posedge HCLK) Pdxax6 <= Riuhu6; +always @(posedge SCLK) Rfxax6 <= Dbuhu6; +always @(posedge HCLK) Thxax6 <= Uguhu6; +always @(posedge SCLK) Ujxax6 <= Aduhu6; +always @(posedge HCLK) Vlxax6 <= Lfuhu6; +always @(posedge HCLK) Wnxax6 <= Efuhu6; +always @(posedge HCLK) Xpxax6 <= Zcqhu6; +always @(posedge HCLK) Xrxax6 <= Egthu6; +always @(posedge HCLK) Wtxax6 <= Lgthu6; +always @(posedge HCLK) Vvxax6 <= Dcthu6; +always @(posedge HCLK) Vxxax6 <= Wbthu6; +always @(posedge HCLK) Vzxax6 <= Pbthu6; +always @(posedge HCLK) V1yax6 <= Ibthu6; +always @(posedge HCLK) U3yax6 <= Bqshu6; +always @(posedge HCLK) T5yax6 <= Htshu6; +always @(posedge HCLK) S7yax6 <= Flshu6; +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + R9yax6 <= 1'b0; + else + R9yax6 <= Mbvhu6; + +always @(posedge SCLK or negedge HRESETn) + if(~HRESETn) + Sbyax6 <= 1'b0; + else + Sbyax6 <= Yqthu6; + +always @(posedge SCLK or negedge HRESETn) + if(~HRESETn) + Pdyax6 <= 1'b0; + else + Pdyax6 <= Npghu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Mfyax6 <= 1'b0; + else + Mfyax6 <= W3uhu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Ohyax6 <= 1'b0; + else + Ohyax6 <= P3uhu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Qjyax6 <= 1'b0; + else + Qjyax6 <= I3uhu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Slyax6 <= 1'b0; + else + Slyax6 <= U2uhu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Unyax6 <= 1'b0; + else + Unyax6 <= N2uhu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Wpyax6 <= 1'b0; + else + Wpyax6 <= G2uhu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Yryax6 <= 1'b0; + else + Yryax6 <= Suthu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Auyax6 <= 1'b0; + else + Auyax6 <= Euthu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Cwyax6 <= 1'b0; + else + Cwyax6 <= Xtthu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Eyyax6 <= 1'b0; + else + Eyyax6 <= Qtthu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + G0zax6 <= 1'b0; + else + G0zax6 <= Vlthu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + I2zax6 <= 1'b0; + else + I2zax6 <= Olthu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + H4zax6 <= 1'b0; + else + H4zax6 <= S1uhu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + J6zax6 <= 1'b0; + else + J6zax6 <= L1uhu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + L8zax6 <= 1'b0; + else + L8zax6 <= E1uhu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Nazax6 <= 1'b0; + else + Nazax6 <= Q0uhu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Pczax6 <= 1'b0; + else + Pczax6 <= J0uhu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Rezax6 <= 1'b0; + else + Rezax6 <= C0uhu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Tgzax6 <= 1'b0; + else + Tgzax6 <= Ravhu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Uizax6 <= 1'b0; + else + Uizax6 <= Txuhu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Vkzax6 <= 1'b0; + else + Vkzax6 <= Ivuhu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Wmzax6 <= 1'b0; + else + Wmzax6 <= Aruhu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Xozax6 <= 1'b0; + else + Xozax6 <= Mquhu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Yqzax6 <= 1'b0; + else + Yqzax6 <= Iouhu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Zszax6 <= 1'b0; + else + Zszax6 <= Emuhu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Avzax6 <= 1'b0; + else + Avzax6 <= Qluhu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Cxzax6 <= 1'b0; + else + Cxzax6 <= Lmuhu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Czzax6 <= 1'b0; + else + Czzax6 <= Nnuhu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + C10bx6 <= 1'b0; + else + C10bx6 <= Pouhu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + C30bx6 <= 1'b0; + else + C30bx6 <= Wouhu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + C50bx6 <= 1'b0; + else + C50bx6 <= Kpuhu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + D70bx6 <= 1'b0; + else + D70bx6 <= Rpuhu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + E90bx6 <= 1'b0; + else + E90bx6 <= Ypuhu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Fb0bx6 <= 1'b0; + else + Fb0bx6 <= Fquhu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Gd0bx6 <= 1'b0; + else + Gd0bx6 <= Tquhu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Hf0bx6 <= 1'b0; + else + Hf0bx6 <= Hruhu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Ih0bx6 <= 1'b0; + else + Ih0bx6 <= Oruhu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Jj0bx6 <= 1'b0; + else + Jj0bx6 <= Csuhu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Kl0bx6 <= 1'b0; + else + Kl0bx6 <= Qsuhu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Ln0bx6 <= 1'b0; + else + Ln0bx6 <= Etuhu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Mp0bx6 <= 1'b0; + else + Mp0bx6 <= Stuhu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Nr0bx6 <= 1'b0; + else + Nr0bx6 <= Guuhu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Ot0bx6 <= 1'b0; + else + Ot0bx6 <= Wvuhu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Pv0bx6 <= 1'b0; + else + Pv0bx6 <= Kwuhu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Qx0bx6 <= 1'b0; + else + Qx0bx6 <= Ywuhu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Rz0bx6 <= 1'b0; + else + Rz0bx6 <= Ayuhu6; + +always @(posedge SCLK or negedge HRESETn) + if(~HRESETn) + S11bx6 <= 1'b0; + else + S11bx6 <= Mivhu6; + +always @(posedge SCLK or negedge HRESETn) + if(~HRESETn) + U31bx6 <= 1'b0; + else + U31bx6 <= J5phu6; + +always @(posedge SCLK or negedge HRESETn) + if(~HRESETn) + W51bx6 <= 1'b0; + else + W51bx6 <= Gothu6; + +always @(posedge SCLK or negedge HRESETn) + if(~HRESETn) + Z71bx6 <= 1'b0; + else + Z71bx6 <= R2phu6; + +always @(posedge SCLK or negedge HRESETn) + if(~HRESETn) + Ca1bx6 <= 1'b0; + else + Ca1bx6 <= Snthu6; + +always @(posedge SCLK or negedge HRESETn) + if(~HRESETn) + Fc1bx6 <= 1'b0; + else + Fc1bx6 <= F3phu6; + +always @(posedge SCLK or negedge HRESETn) + if(~HRESETn) + Ie1bx6 <= 1'b0; + else + Ie1bx6 <= Znthu6; + +always @(posedge SCLK or negedge HRESETn) + if(~HRESETn) + Lg1bx6 <= 1'b0; + else + Lg1bx6 <= Y2phu6; + +always @(posedge SCLK or negedge HRESETn) + if(~HRESETn) + Oi1bx6 <= 1'b0; + else + Oi1bx6 <= Nothu6; + +always @(posedge SCLK or negedge HRESETn) + if(~HRESETn) + Rk1bx6 <= 1'b0; + else + Rk1bx6 <= K2phu6; + +always @(posedge SCLK or negedge HRESETn) + if(~HRESETn) + Um1bx6 <= 1'b0; + else + Um1bx6 <= Uothu6; + +always @(posedge SCLK or negedge HRESETn) + if(~HRESETn) + Xo1bx6 <= 1'b0; + else + Xo1bx6 <= D2phu6; + +always @(posedge SCLK or negedge HRESETn) + if(~HRESETn) + Ar1bx6 <= 1'b0; + else + Ar1bx6 <= Vruhu6; + +always @(posedge SCLK or negedge HRESETn) + if(~HRESETn) + Dt1bx6 <= 1'b0; + else + Dt1bx6 <= I1phu6; + +always @(posedge SCLK or negedge HRESETn) + if(~HRESETn) + Gv1bx6 <= 1'b0; + else + Gv1bx6 <= Zgthu6; + +always @(posedge SCLK or negedge HRESETn) + if(~HRESETn) + Jx1bx6 <= 1'b0; + else + Jx1bx6 <= P1phu6; + +always @(posedge SCLK or negedge HRESETn) + if(~HRESETn) + Mz1bx6 <= 1'b0; + else + Mz1bx6 <= Jsuhu6; + +always @(posedge SCLK or negedge HRESETn) + if(~HRESETn) + P12bx6 <= 1'b0; + else + P12bx6 <= B1phu6; + +always @(posedge SCLK or negedge HRESETn) + if(~HRESETn) + S32bx6 <= 1'b0; + else + S32bx6 <= Xsuhu6; + +always @(posedge SCLK or negedge HRESETn) + if(~HRESETn) + V52bx6 <= 1'b0; + else + V52bx6 <= U0phu6; + +always @(posedge SCLK or negedge HRESETn) + if(~HRESETn) + Y72bx6 <= 1'b0; + else + Y72bx6 <= Cmthu6; + +always @(posedge SCLK or negedge HRESETn) + if(~HRESETn) + Aa2bx6 <= 1'b0; + else + Aa2bx6 <= C5phu6; + +always @(posedge SCLK or negedge HRESETn) + if(~HRESETn) + Cc2bx6 <= 1'b0; + else + Cc2bx6 <= Ltuhu6; + +always @(posedge SCLK or negedge HRESETn) + if(~HRESETn) + Fe2bx6 <= 1'b0; + else + Fe2bx6 <= N0phu6; + +always @(posedge SCLK or negedge HRESETn) + if(~HRESETn) + Ig2bx6 <= 1'b0; + else + Ig2bx6 <= Ztuhu6; + +always @(posedge SCLK or negedge HRESETn) + if(~HRESETn) + Li2bx6 <= 1'b0; + else + Li2bx6 <= G0phu6; + +always @(posedge SCLK or negedge HRESETn) + if(~HRESETn) + Ok2bx6 <= 1'b0; + else + Ok2bx6 <= Ppthu6; + +always @(posedge SCLK or negedge HRESETn) + if(~HRESETn) + Rm2bx6 <= 1'b0; + else + Rm2bx6 <= Gwdpw6; + +always @(posedge SCLK or negedge HRESETn) + if(~HRESETn) + Uo2bx6 <= 1'b0; + else + Uo2bx6 <= Pvuhu6; + +always @(posedge SCLK or negedge HRESETn) + if(~HRESETn) + Xq2bx6 <= 1'b0; + else + Xq2bx6 <= Szohu6; + +always @(posedge SCLK or negedge HRESETn) + if(~HRESETn) + At2bx6 <= 1'b0; + else + At2bx6 <= Ipthu6; + +always @(posedge SCLK or negedge HRESETn) + if(~HRESETn) + Dv2bx6 <= 1'b0; + else + Dv2bx6 <= Nwdpw6; + +always @(posedge SCLK or negedge HRESETn) + if(~HRESETn) + Gx2bx6 <= 1'b0; + else + Gx2bx6 <= Wpthu6; + +always @(posedge SCLK or negedge HRESETn) + if(~HRESETn) + Jz2bx6 <= 1'b0; + else + Jz2bx6 <= Lzohu6; + +always @(posedge SCLK or negedge HRESETn) + if(~HRESETn) + M13bx6 <= 1'b0; + else + M13bx6 <= Dqthu6; + +always @(posedge SCLK or negedge HRESETn) + if(~HRESETn) + P33bx6 <= 1'b0; + else + P33bx6 <= Ezohu6; + +always @(posedge SCLK or negedge HRESETn) + if(~HRESETn) + S53bx6 <= 1'b0; + else + S53bx6 <= Kqthu6; + +always @(posedge SCLK or negedge HRESETn) + if(~HRESETn) + V73bx6 <= 1'b0; + else + V73bx6 <= Xyohu6; + +always @(posedge SCLK or negedge HRESETn) + if(~HRESETn) + Y93bx6 <= 1'b0; + else + Y93bx6 <= J6vhu6; + +always @(posedge SCLK or negedge HRESETn) + if(~HRESETn) + Bc3bx6 <= 1'b0; + else + Bc3bx6 <= Qyohu6; + +always @(posedge SCLK or negedge HRESETn) + if(~HRESETn) + Ee3bx6 <= 1'b0; + else + Ee3bx6 <= Q6vhu6; + +always @(posedge SCLK or negedge HRESETn) + if(~HRESETn) + Hg3bx6 <= 1'b0; + else + Hg3bx6 <= Cyohu6; + +always @(posedge SCLK or negedge HRESETn) + if(~HRESETn) + Ki3bx6 <= 1'b0; + else + Ki3bx6 <= Hsthu6; + +always @(posedge SCLK or negedge HRESETn) + if(~HRESETn) + Mk3bx6 <= 1'b0; + else + Mk3bx6 <= A4phu6; + +always @(posedge SCLK or negedge HRESETn) + if(~HRESETn) + Om3bx6 <= 1'b0; + else + Om3bx6 <= Vsthu6; + +always @(posedge SCLK or negedge HRESETn) + if(~HRESETn) + Qo3bx6 <= 1'b0; + else + Qo3bx6 <= M3phu6; + +always @(posedge SCLK or negedge HRESETn) + if(~HRESETn) + Sq3bx6 <= 1'b0; + else + Sq3bx6 <= Enthu6; + +always @(posedge SCLK or negedge HRESETn) + if(~HRESETn) + Us3bx6 <= 1'b0; + else + Us3bx6 <= Bxdpw6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Wu3bx6 <= 1'b0; + else + Wu3bx6 <= A6uhu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Yw3bx6 <= 1'b0; + else + Yw3bx6 <= T5uhu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Az3bx6 <= 1'b0; + else + Az3bx6 <= M5uhu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + C14bx6 <= 1'b0; + else + C14bx6 <= Y4uhu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + E34bx6 <= 1'b0; + else + E34bx6 <= R4uhu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + G54bx6 <= 1'b0; + else + G54bx6 <= K4uhu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + I74bx6 <= 1'b0; + else + I74bx6 <= Kxthu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + K94bx6 <= 1'b0; + else + K94bx6 <= Dxthu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Mb4bx6 <= 1'b0; + else + Mb4bx6 <= Wwthu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Od4bx6 <= 1'b0; + else + Od4bx6 <= Iwthu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Qf4bx6 <= 1'b0; + else + Qf4bx6 <= Bwthu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Sh4bx6 <= 1'b0; + else + Sh4bx6 <= Uvthu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Uj4bx6 <= 1'b0; + else + Uj4bx6 <= Althu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Tl4bx6 <= 1'b0; + else + Tl4bx6 <= Hlthu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Sn4bx6 <= 1'b0; + else + Sn4bx6 <= E8uhu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Up4bx6 <= 1'b0; + else + Up4bx6 <= X7uhu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Wr4bx6 <= 1'b0; + else + Wr4bx6 <= Q7uhu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Yt4bx6 <= 1'b0; + else + Yt4bx6 <= C7uhu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Aw4bx6 <= 1'b0; + else + Aw4bx6 <= V6uhu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Cy4bx6 <= 1'b0; + else + Cy4bx6 <= O6uhu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + E05bx6 <= 1'b0; + else + E05bx6 <= Ozthu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + G25bx6 <= 1'b0; + else + G25bx6 <= Hzthu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + I45bx6 <= 1'b0; + else + I45bx6 <= Azthu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + K65bx6 <= 1'b0; + else + K65bx6 <= Mythu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + M85bx6 <= 1'b0; + else + M85bx6 <= Fythu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Oa5bx6 <= 1'b0; + else + Oa5bx6 <= Yxthu6; + +always @(posedge HCLK) Qc5bx6 <= Loshu6; +always @(posedge HCLK) Pe5bx6 <= Qgshu6; +always @(posedge HCLK) Og5bx6 <= Bcshu6; +always @(posedge HCLK) Ni5bx6 <= F7shu6; +always @(posedge HCLK) Nk5bx6 <= Q2shu6; +always @(posedge HCLK) Nm5bx6 <= Byrhu6; +always @(posedge HCLK) No5bx6 <= Ttrhu6; +always @(posedge HCLK) Nq5bx6 <= Corhu6; +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Ms5bx6 <= 1'b0; + else + Ms5bx6 <= Lirhu6; + +always @(posedge HCLK) Nu5bx6 <= Irrhu6; +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Mw5bx6 <= 1'b1; + else + Mw5bx6 <= Jdohu6; + +always @(posedge HCLK) Jy5bx6 <= Njrhu6; +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + J06bx6 <= 1'b1; + else + J06bx6 <= Cdohu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + F26bx6 <= 1'b1; + else + F26bx6 <= Ruphu6; + +always @(posedge HCLK) D46bx6 <= Carhu6; +always @(posedge HCLK) D66bx6 <= N5rhu6; +always @(posedge HCLK) D86bx6 <= Y0rhu6; +always @(posedge HCLK) Da6bx6 <= Jwqhu6; +always @(posedge HCLK) Dc6bx6 <= Urqhu6; +always @(posedge HCLK) De6bx6 <= Fnqhu6; +always @(posedge HCLK) Dg6bx6 <= Beqhu6; +always @(posedge HCLK) Di6bx6 <= M9qhu6; +always @(posedge HCLK) Dk6bx6 <= X4qhu6; +always @(posedge HCLK) Dm6bx6 <= K8qhu6; +always @(posedge HCLK) Do6bx6 <= Tvphu6; +always @(posedge HCLK) Dq6bx6 <= Xqphu6; +always @(posedge HCLK) Cs6bx6 <= Imphu6; +always @(posedge DCLK) Bu6bx6 <= Vbphu6; +always @(posedge SWCLKTCK) Gw6bx6 <= Qwxhu6; +always @(posedge SWCLKTCK) Xx6bx6 <= Rmxhu6; +always @(posedge HCLK) C07bx6 <= V3qhu6; +always @(posedge HCLK) C27bx6 <= Nzphu6; +always @(posedge HCLK) C47bx6 <= Uzphu6; +always @(posedge HCLK) C67bx6 <= B0qhu6; +always @(posedge HCLK) C87bx6 <= I0qhu6; +always @(posedge HCLK) Ca7bx6 <= P0qhu6; +always @(posedge HCLK) Cc7bx6 <= W0qhu6; +always @(posedge HCLK) Ce7bx6 <= D1qhu6; +always @(posedge HCLK) Cg7bx6 <= K1qhu6; +always @(posedge HCLK) Ci7bx6 <= R1qhu6; +always @(posedge HCLK) Ck7bx6 <= Y1qhu6; +always @(posedge HCLK) Cm7bx6 <= F2qhu6; +always @(posedge HCLK) Co7bx6 <= M2qhu6; +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Cq7bx6 <= 1'b1; + else + Cq7bx6 <= Vcohu6; + +always @(posedge HCLK) Zr7bx6 <= Vhqhu6; +always @(posedge HCLK) Zt7bx6 <= Ciqhu6; +always @(posedge HCLK) Zv7bx6 <= Jiqhu6; +always @(posedge HCLK) Zx7bx6 <= Qiqhu6; +always @(posedge HCLK) Zz7bx6 <= Xiqhu6; +always @(posedge HCLK) Z18bx6 <= Ejqhu6; +always @(posedge HCLK) Z38bx6 <= Ljqhu6; +always @(posedge HCLK) Z58bx6 <= Sjqhu6; +always @(posedge HCLK) Z78bx6 <= Zjqhu6; +always @(posedge HCLK) Z98bx6 <= Gkqhu6; +always @(posedge HCLK) Zb8bx6 <= Nkqhu6; +always @(posedge HCLK) Zd8bx6 <= Ukqhu6; +always @(posedge HCLK) Zf8bx6 <= Blqhu6; +always @(posedge HCLK) Zh8bx6 <= Ilqhu6; +always @(posedge HCLK) Zj8bx6 <= Plqhu6; +always @(posedge HCLK) Zl8bx6 <= Wlqhu6; +always @(posedge HCLK) Zn8bx6 <= T2qhu6; +always @(posedge HCLK) Zp8bx6 <= A3qhu6; +always @(posedge HCLK) Zr8bx6 <= H3qhu6; +always @(posedge HCLK) Yt8bx6 <= O3qhu6; +always @(posedge DCLK) Xv8bx6 <= Slvhu6; +always @(posedge DCLK) Ux8bx6 <= Mwvhu6; +always @(posedge DCLK) Rz8bx6 <= L6whu6; +always @(posedge DCLK) N19bx6 <= Newhu6; +always @(posedge DCLK) J39bx6 <= Pmwhu6; +always @(posedge DCLK) F59bx6 <= Ruwhu6; +always @(posedge DCLK) B79bx6 <= Iexhu6; +always @(posedge SWCLKTCK) Q89bx6 <= Aoxhu6; +always @(posedge HCLK) Ua9bx6 <= Wjshu6; +always @(posedge DCLK) Tc9bx6 <= Jkvhu6; +always @(posedge DCLK) Pe9bx6 <= Dvvhu6; +always @(posedge DCLK) Lg9bx6 <= C5whu6; +always @(posedge DCLK) Hi9bx6 <= Edwhu6; +always @(posedge DCLK) Dk9bx6 <= Glwhu6; +always @(posedge DCLK) Zl9bx6 <= Itwhu6; +always @(posedge DCLK) Vn9bx6 <= I7xhu6; +always @(posedge SCLK or negedge HRESETn) + if(~HRESETn) + Jp9bx6 <= 1'b0; + else + Jp9bx6 <= Osthu6; + +always @(posedge SCLK or negedge HRESETn) + if(~HRESETn) + Lr9bx6 <= 1'b0; + else + Lr9bx6 <= T3phu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Nt9bx6 <= 1'b0; + else + Nt9bx6 <= Bouhu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Nv9bx6 <= 1'b0; + else + Nv9bx6 <= Unuhu6; + +always @(posedge HCLK) Ox9bx6 <= Nguhu6; +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Pz9bx6 <= 1'b0; + else + Pz9bx6 <= L8uhu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + R1abx6 <= 1'b0; + else + R1abx6 <= H6uhu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + T3abx6 <= 1'b0; + else + T3abx6 <= D4uhu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + V5abx6 <= 1'b0; + else + V5abx6 <= Z1uhu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + X7abx6 <= 1'b0; + else + X7abx6 <= Vzthu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Z9abx6 <= 1'b0; + else + Z9abx6 <= Rxthu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Bcabx6 <= 1'b0; + else + Bcabx6 <= Nvthu6; + +always @(posedge DCLK) Ceabx6 <= Ldphu6; +always @(posedge DCLK) Ggabx6 <= Hbphu6; +always @(posedge SWCLKTCK) Liabx6 <= Wlxhu6; +always @(posedge DCLK) Qkabx6 <= Nmvhu6; +always @(posedge DCLK) Nmabx6 <= Hxvhu6; +always @(posedge DCLK) Koabx6 <= G7whu6; +always @(posedge DCLK) Hqabx6 <= Ifwhu6; +always @(posedge DCLK) Esabx6 <= Knwhu6; +always @(posedge DCLK) Buabx6 <= Mvwhu6; +always @(posedge DCLK) Yvabx6 <= Ndxhu6; +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Nxabx6 <= 1'b1; + else + Nxabx6 <= Ocohu6; + +always @(posedge SCLK) Kzabx6 <= Jeuhu6; +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + L1bbx6 <= 1'b0; + else + L1bbx6 <= Smuhu6; + +always @(posedge SCLK or negedge HRESETn) + if(~HRESETn) + L3bbx6 <= 1'b0; + else + L3bbx6 <= Jmthu6; + +always @(posedge SCLK or negedge HRESETn) + if(~HRESETn) + N5bbx6 <= 1'b0; + else + N5bbx6 <= V4phu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + P7bbx6 <= 1'b1; + else + P7bbx6 <= Hcohu6; + +always @(posedge DCLK) L9bbx6 <= Nephu6; +always @(posedge HCLK) Pbbbx6 <= Hvqhu6; +always @(posedge DCLK) Pdbbx6 <= Faphu6; +always @(posedge SWCLKTCK) Ufbbx6 <= Gyxhu6; +always @(posedge SWCLKTCK) Lhbbx6 <= Blxhu6; +always @(posedge DCLK) Qjbbx6 <= Invhu6; +always @(posedge DCLK) Nlbbx6 <= Cyvhu6; +always @(posedge DCLK) Knbbx6 <= B8whu6; +always @(posedge DCLK) Hpbbx6 <= Dgwhu6; +always @(posedge DCLK) Erbbx6 <= Fowhu6; +always @(posedge DCLK) Btbbx6 <= Hwwhu6; +always @(posedge DCLK) Yubbx6 <= Scxhu6; +always @(posedge HCLK) Nwbbx6 <= Anrhu6; +always @(posedge HCLK) Nybbx6 <= H1shu6; +always @(posedge DCLK) N0cbx6 <= N7phu6; +always @(posedge SWCLKTCK) S2cbx6 <= Y0yhu6; +always @(posedge SWCLKTCK) J4cbx6 <= R0yhu6; +always @(posedge SWCLKTCK) A6cbx6 <= Qixhu6; +always @(posedge HCLK) F8cbx6 <= W5shu6; +always @(posedge DCLK) Facbx6 <= Tpvhu6; +always @(posedge DCLK) Cccbx6 <= N0whu6; +always @(posedge DCLK) Zdcbx6 <= Mawhu6; +always @(posedge DCLK) Wfcbx6 <= Oiwhu6; +always @(posedge DCLK) Thcbx6 <= Qqwhu6; +always @(posedge DCLK) Qjcbx6 <= Sywhu6; +always @(posedge DCLK) Nlcbx6 <= Haxhu6; +always @(posedge DCLK) Cncbx6 <= U7phu6; +always @(posedge SWCLKTCK or negedge Fmdhu6) + if(~Fmdhu6) + Hpcbx6 <= 1'b0; + else + Hpcbx6 <= Mgxhu6; + +always @(posedge SWCLKTCK) Drcbx6 <= Jixhu6; +always @(posedge DCLK) Itcbx6 <= Aqvhu6; +always @(posedge DCLK) Fvcbx6 <= U0whu6; +always @(posedge DCLK) Cxcbx6 <= Tawhu6; +always @(posedge DCLK) Zycbx6 <= Viwhu6; +always @(posedge DCLK) W0dbx6 <= Xqwhu6; +always @(posedge DCLK) T2dbx6 <= Zywhu6; +always @(posedge DCLK) Q4dbx6 <= Aaxhu6; +always @(posedge HCLK) F6dbx6 <= Dsrhu6; +always @(posedge DCLK) F8dbx6 <= P8phu6; +always @(posedge SWCLKTCK) Kadbx6 <= Wzxhu6; +always @(posedge SWCLKTCK) Bcdbx6 <= Pzxhu6; +always @(posedge SWCLKTCK) Sddbx6 <= Izxhu6; +always @(posedge SWCLKTCK) Jfdbx6 <= Bzxhu6; +always @(posedge SWCLKTCK) Ahdbx6 <= Gkxhu6; +always @(posedge HCLK) Fjdbx6 <= A9rhu6; +always @(posedge DCLK) Fldbx6 <= Dovhu6; +always @(posedge DCLK) Cndbx6 <= Xyvhu6; +always @(posedge DCLK) Zodbx6 <= W8whu6; +always @(posedge DCLK) Wqdbx6 <= Ygwhu6; +always @(posedge DCLK) Tsdbx6 <= Apwhu6; +always @(posedge DCLK) Qudbx6 <= Cxwhu6; +always @(posedge DCLK) Nwdbx6 <= Xbxhu6; +always @(posedge DCLK) Cydbx6 <= K9phu6; +always @(posedge SWCLKTCK) H0ebx6 <= Zjxhu6; +always @(posedge HCLK) M2ebx6 <= Pdrhu6; +always @(posedge DCLK) M4ebx6 <= Kovhu6; +always @(posedge DCLK) J6ebx6 <= Ezvhu6; +always @(posedge DCLK) G8ebx6 <= D9whu6; +always @(posedge DCLK) Daebx6 <= Fhwhu6; +always @(posedge DCLK) Acebx6 <= Hpwhu6; +always @(posedge DCLK) Xdebx6 <= Jxwhu6; +always @(posedge DCLK) Ufebx6 <= Qbxhu6; +always @(posedge DCLK) Jhebx6 <= D9phu6; +always @(posedge SWCLKTCK) Ojebx6 <= Sjxhu6; +always @(posedge HCLK) Tlebx6 <= Eirhu6; +always @(posedge HCLK) Tnebx6 <= Wdrhu6; +always @(posedge HCLK) Tpebx6 <= Derhu6; +always @(posedge HCLK) Trebx6 <= Kerhu6; +always @(posedge HCLK) Ttebx6 <= Rerhu6; +always @(posedge HCLK) Tvebx6 <= Yerhu6; +always @(posedge HCLK) Txebx6 <= Ffrhu6; +always @(posedge HCLK) Tzebx6 <= Mfrhu6; +always @(posedge HCLK) T1fbx6 <= Tfrhu6; +always @(posedge HCLK) T3fbx6 <= Agrhu6; +always @(posedge HCLK) T5fbx6 <= Hgrhu6; +always @(posedge HCLK) T7fbx6 <= Ogrhu6; +always @(posedge HCLK) T9fbx6 <= Vgrhu6; +always @(posedge HCLK) Tbfbx6 <= Chrhu6; +always @(posedge HCLK) Tdfbx6 <= Jhrhu6; +always @(posedge HCLK) Tffbx6 <= Qhrhu6; +always @(posedge HCLK) Thfbx6 <= Xhrhu6; +always @(posedge DCLK) Tjfbx6 <= Rovhu6; +always @(posedge DCLK) Qlfbx6 <= Lzvhu6; +always @(posedge DCLK) Nnfbx6 <= K9whu6; +always @(posedge DCLK) Kpfbx6 <= Mhwhu6; +always @(posedge DCLK) Hrfbx6 <= Opwhu6; +always @(posedge DCLK) Etfbx6 <= Qxwhu6; +always @(posedge DCLK) Bvfbx6 <= Jbxhu6; +always @(posedge DCLK) Qwfbx6 <= W8phu6; +always @(posedge SCLK or negedge HRESETn) + if(~HRESETn) + Vyfbx6 <= 1'b0; + else + Vyfbx6 <= Uuuhu6; + +always @(posedge SCLK or negedge HRESETn) + if(~HRESETn) + Y0gbx6 <= 1'b0; + else + Y0gbx6 <= Zzohu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + B3gbx6 <= 1'b0; + else + B3gbx6 <= Bvuhu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + C5gbx6 <= 1'b0; + else + C5gbx6 <= Nuuhu6; + +always @(posedge HCLK) D7gbx6 <= Vkuhu6; +always @(posedge SCLK) F9gbx6 <= Z8uhu6; +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Hbgbx6 <= 1'b0; + else + Hbgbx6 <= J7uhu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Jdgbx6 <= 1'b0; + else + Jdgbx6 <= F5uhu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Lfgbx6 <= 1'b0; + else + Lfgbx6 <= B3uhu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Nhgbx6 <= 1'b0; + else + Nhgbx6 <= X0uhu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Pjgbx6 <= 1'b0; + else + Pjgbx6 <= Tythu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Rlgbx6 <= 1'b0; + else + Rlgbx6 <= Pwthu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Tngbx6 <= 1'b0; + else + Tngbx6 <= Luthu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Vpgbx6 <= 1'b0; + else + Vpgbx6 <= Tkthu6; + +always @(posedge SWCLKTCK) Urgbx6 <= Ljxhu6; +always @(posedge HCLK) Ztgbx6 <= Kavhu6; +always @(posedge DCLK) Zvgbx6 <= Yovhu6; +always @(posedge DCLK) Wxgbx6 <= Szvhu6; +always @(posedge DCLK) Tzgbx6 <= R9whu6; +always @(posedge DCLK) Q1hbx6 <= Thwhu6; +always @(posedge DCLK) N3hbx6 <= Vpwhu6; +always @(posedge DCLK) K5hbx6 <= Xxwhu6; +always @(posedge DCLK) H7hbx6 <= Cbxhu6; +always @(posedge SCLK) W8hbx6 <= Yhvhu6; +always @(posedge DCLK) Wahbx6 <= Oqvhu6; +always @(posedge DCLK) Tchbx6 <= I1whu6; +always @(posedge DCLK) Qehbx6 <= Y8xhu6; +always @(posedge SCLK or negedge HRESETn) + if(~HRESETn) + Eghbx6 <= 1'b0; + else + Eghbx6 <= Asthu6; + +always @(posedge SCLK or negedge HRESETn) + if(~HRESETn) + Gihbx6 <= 1'b0; + else + Gihbx6 <= H4phu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Ikhbx6 <= 1'b0; + else + Ikhbx6 <= Gnuhu6; + +always @(posedge HCLK) Imhbx6 <= Zfuhu6; +always @(posedge SCLK) Johbx6 <= Vduhu6; +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Kqhbx6 <= 1'b0; + else + Kqhbx6 <= Jtthu6; + +always @(posedge SCLK or negedge HRESETn) + if(~HRESETn) + Kshbx6 <= 1'b0; + else + Kshbx6 <= Trthu6; + +always @(posedge SCLK or negedge HRESETn) + if(~HRESETn) + Muhbx6 <= 1'b0; + else + Muhbx6 <= O4phu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Owhbx6 <= 1'b0; + else + Owhbx6 <= Zmuhu6; + +always @(posedge HCLK) Oyhbx6 <= Sfuhu6; +always @(posedge SCLK) P0ibx6 <= Ceuhu6; +always @(posedge DCLK) Q2ibx6 <= Oaxhu6; +always @(posedge DCLK or negedge DBGRESETn) + if(~DBGRESETn) + F4ibx6 <= 1'b0; + else + F4ibx6 <= Uephu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + X5ibx6 <= 1'b0; + else + X5ibx6 <= Glphu6; + +always @(posedge HCLK) R7ibx6 <= Fhphu6; +always @(posedge HCLK) R9ibx6 <= Mhphu6; +always @(posedge HCLK) Rbibx6 <= Thphu6; +always @(posedge HCLK) Rdibx6 <= Aiphu6; +always @(posedge HCLK) Rfibx6 <= Hiphu6; +always @(posedge HCLK) Rhibx6 <= Viphu6; +always @(posedge HCLK) Rjibx6 <= Cjphu6; +always @(posedge HCLK) Rlibx6 <= Jjphu6; +always @(posedge HCLK) Rnibx6 <= Qjphu6; +always @(posedge HCLK) Rpibx6 <= Xjphu6; +always @(posedge HCLK) Rribx6 <= Ekphu6; +always @(posedge HCLK) Rtibx6 <= Skphu6; +always @(posedge HCLK) Rvibx6 <= Itphu6; +always @(posedge HCLK) Qxibx6 <= Ptphu6; +always @(posedge HCLK) Pzibx6 <= Wtphu6; +always @(posedge HCLK) O1jbx6 <= Duphu6; +always @(posedge DCLK) N3jbx6 <= Elvhu6; +always @(posedge DCLK) J5jbx6 <= Yvvhu6; +always @(posedge DCLK) F7jbx6 <= X5whu6; +always @(posedge DCLK) B9jbx6 <= Zdwhu6; +always @(posedge DCLK) Xajbx6 <= Bmwhu6; +always @(posedge DCLK) Tcjbx6 <= Duwhu6; +always @(posedge HCLK) Pejbx6 <= Lkphu6; +always @(posedge SCLK or negedge HRESETn) + if(~HRESETn) + Pgjbx6 <= 1'b0; + else + Pgjbx6 <= Lnthu6; + +always @(posedge SCLK or negedge HRESETn) + if(~HRESETn) + Rijbx6 <= 1'b0; + else + Rijbx6 <= Uwdpw6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Tkjbx6 <= 1'b0; + else + Tkjbx6 <= Dpuhu6; + +always @(posedge HCLK) Tmjbx6 <= Ihuhu6; +always @(posedge SCLK) Uojbx6 <= Mcuhu6; +always @(posedge HCLK) Vqjbx6 <= Acohu6; +always @(posedge HCLK) Usjbx6 <= Tbohu6; +always @(posedge HCLK) Tujbx6 <= Mbohu6; +always @(posedge HCLK) Swjbx6 <= Fbohu6; +always @(posedge HCLK) Syjbx6 <= Wzqhu6; +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + S0kbx6 <= 1'b0; + else + S0kbx6 <= Acvhu6; + +always @(posedge SCLK or negedge HRESETn) + if(~HRESETn) + T2kbx6 <= 1'b0; + else + T2kbx6 <= Kjthu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + S4kbx6 <= 1'b0; + else + S4kbx6 <= Levhu6; + +always @(posedge HCLK) T6kbx6 <= L4rhu6; +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + T8kbx6 <= 1'b0; + else + T8kbx6 <= G8vhu6; + +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Qakbx6 <= 1'b0; + else + Qakbx6 <= Rqthu6; + +always @(posedge DCLK) Nckbx6 <= Xcphu6; +always @(posedge HCLK or negedge HRESETn) + if(~HRESETn) + Rekbx6 <= 1'b0; + else + Rekbx6 <= Yaohu6; + +always @(posedge HCLK) Tgkbx6 <= Lashu6; +always @(posedge DCLK) Tikbx6 <= M3whu6; +always @(posedge DCLK) Pkkbx6 <= Ssvhu6; +always @(posedge DCLK or negedge DBGRESETn) + if(~DBGRESETn) + Lmkbx6 <= 1'b0; + else + Lmkbx6 <= Pfphu6; + +always @(posedge SCLK or negedge HRESETn) + if(~HRESETn) + Cokbx6 <= 1'b0; + else + Cokbx6 <= Raohu6; + +always @(posedge SWCLKTCK or negedge Fmdhu6) + if(~Fmdhu6) + Dqkbx6 <= 1'b0; + else + Dqkbx6 <= I5nhu6; + +endmodule + +//------------------------------------------------------------------------------ +// EOF +//------------------------------------------------------------------------------ + diff --git a/lib/common/Soc/Cortex_M3/cortexm3ds_logic.v b/lib/common/Soc/Cortex_M3/cortexm3ds_logic.v new file mode 100644 index 0000000..b5e4b07 --- /dev/null +++ b/lib/common/Soc/Cortex_M3/cortexm3ds_logic.v @@ -0,0 +1,94613 @@ +//------------------------------------------------------------------------------ +// The confidential and proprietary information contained in this file may +// only be used by a person authorised under and to the extent permitted +// by a subsisting licensing agreement from ARM Limited. +// +// (C) COPYRIGHT 2017 ARM Limited. +// ALL RIGHTS RESERVED +// +// This entire notice must be reproduced on all copies of this file +// and copies of this file may only be made by a person if such person is +// permitted to do so under the terms of a subsisting license agreement +// from ARM Limited. +// +// SVN Information +// +// Checked In : $$ +// +// Revision : $$ +// +// Release Information : CM3DesignStart-r0p0-02rel0 +//------------------------------------------------------------------------------ + +//------------------------------------------------------------------------------ +// Cortex-M3 DesignStart processor logic level +//------------------------------------------------------------------------------ + +module cortexm3ds_logic +(ISOLATEn, RETAINn, nTRST, SWCLKTCK, SWDITMS, TDI, +PORESETn, SYSRESETn, RSTBYPASS, CGBYPASS, FCLK, HCLK, TRACECLKIN, STCLK, +STCALIB, AUXFAULT, BIGEND, INTISR, INTNMI, HREADYI, HRDATAI, HRESPI, +IFLUSH, HREADYD, HRDATAD, HRESPD, EXRESPD, SE, HREADYS, HRDATAS, HRESPS, +EXRESPS, EDBGRQ, DBGRESTART, RXEV, SLEEPHOLDREQn, WICENREQ, +FIXMASTERTYPE, TSVALUEB, MPUDISABLE, DBGEN, NIDEN, CDBGPWRUPACK, +DNOTITRANS, TDO, nTDOEN, SWDOEN, SWDO, SWV, JTAGNSW, TRACECLK, TRACEDATA +, HTRANSI, HSIZEI, HADDRI, HBURSTI, HPROTI, MEMATTRI, HTRANSD, HSIZED, +HADDRD, HBURSTD, HPROTD, MEMATTRD, HMASTERD, EXREQD, HWRITED, HWDATAD, +HTRANSS, HSIZES, HADDRS, HBURSTS, HPROTS, MEMATTRS, HMASTERS, EXREQS, +HWRITES, HWDATAS, HMASTLOCKS, BRCHSTAT, HALTED, LOCKUP, SLEEPING, +SLEEPDEEP, ETMINTNUM, ETMINTSTAT, SYSRESETREQ, TXEV, TRCENA, CURRPRI, +DBGRESTARTED, SLEEPHOLDACKn, GATEHCLK, HTMDHADDR, HTMDHTRANS, HTMDHSIZE, +HTMDHBURST, HTMDHPROT, HTMDHWDATA, HTMDHWRITE, HTMDHRDATA, HTMDHREADY, +HTMDHRESP, WICENACK, WAKEUP, CDBGPWRUPREQ, vis_r0_o, vis_r1_o, vis_r2_o, +vis_r3_o, vis_r4_o, vis_r5_o, vis_r6_o, vis_r7_o, vis_r8_o, vis_r9_o, +vis_r10_o, vis_r11_o, vis_r12_o, vis_msp_o, vis_psp_o, vis_pc_o); + +input [25:0] STCALIB; +input [31:0] AUXFAULT; +input [239:0] INTISR; +input [31:0] HRDATAI; +input [1:0] HRESPI; +input [31:0] HRDATAD; +input [1:0] HRESPD; +input [31:0] HRDATAS; +input [1:0] HRESPS; +input [47:0] TSVALUEB; +output [3:0] TRACEDATA; +output [1:0] HTRANSI; +output [2:0] HSIZEI; +output [31:0] HADDRI; +output [2:0] HBURSTI; +output [3:0] HPROTI; +output [1:0] MEMATTRI; +output [1:0] HTRANSD; +output [2:0] HSIZED; +output [31:0] HADDRD; +output [2:0] HBURSTD; +output [3:0] HPROTD; +output [1:0] MEMATTRD; +output [1:0] HMASTERD; +output [31:0] HWDATAD; +output [1:0] HTRANSS; +output [2:0] HSIZES; +output [31:0] HADDRS; +output [2:0] HBURSTS; +output [3:0] HPROTS; +output [1:0] MEMATTRS; +output [1:0] HMASTERS; +output [31:0] HWDATAS; +output [3:0] BRCHSTAT; +output [8:0] ETMINTNUM; +output [2:0] ETMINTSTAT; +output [7:0] CURRPRI; +output [31:0] HTMDHADDR; +output [1:0] HTMDHTRANS; +output [2:0] HTMDHSIZE; +output [2:0] HTMDHBURST; +output [3:0] HTMDHPROT; +output [31:0] HTMDHWDATA; +output [31:0] HTMDHRDATA; +output [1:0] HTMDHRESP; +output [31:0] vis_r0_o; +output [31:0] vis_r1_o; +output [31:0] vis_r2_o; +output [31:0] vis_r3_o; +output [31:0] vis_r4_o; +output [31:0] vis_r5_o; +output [31:0] vis_r6_o; +output [31:0] vis_r7_o; +output [31:0] vis_r8_o; +output [31:0] vis_r9_o; +output [31:0] vis_r10_o; +output [31:0] vis_r11_o; +output [31:0] vis_r12_o; +output [31:2] vis_msp_o; +output [31:2] vis_psp_o; +output [31:1] vis_pc_o; +input ISOLATEn; +input RETAINn; +input nTRST; +input SWCLKTCK; +input SWDITMS; +input TDI; +input PORESETn; +input SYSRESETn; +input RSTBYPASS; +input CGBYPASS; +input FCLK; +input HCLK; +input TRACECLKIN; +input STCLK; +input BIGEND; +input INTNMI; +input HREADYI; +input IFLUSH; +input HREADYD; +input EXRESPD; +input SE; +input HREADYS; +input EXRESPS; +input EDBGRQ; +input DBGRESTART; +input RXEV; +input SLEEPHOLDREQn; +input WICENREQ; +input FIXMASTERTYPE; +input MPUDISABLE; +input DBGEN; +input NIDEN; +input CDBGPWRUPACK; +input DNOTITRANS; +output TDO; +output nTDOEN; +output SWDOEN; +output SWDO; +output SWV; +output JTAGNSW; +output TRACECLK; +output EXREQD; +output HWRITED; +output EXREQS; +output HWRITES; +output HMASTLOCKS; +output HALTED; +output LOCKUP; +output SLEEPING; +output SLEEPDEEP; +output SYSRESETREQ; +output TXEV; +output TRCENA; +output DBGRESTARTED; +output SLEEPHOLDACKn; +output GATEHCLK; +output HTMDHWRITE; +output HTMDHREADY; +output WICENACK; +output WAKEUP; +output CDBGPWRUPREQ; + +wire Ox9dt6, Cy9dt6, Py9dt6, Ez9dt6, Sz9dt6, G0adt6, T0adt6, D1adt6, R1adt6, K2adt6; +wire W2adt6, H3adt6, S3adt6, D4adt6, M4adt6, Y4adt6, L5adt6, X5adt6, K6adt6, O7adt6; +wire P8adt6, O9adt6, Oaadt6, Pbadt6, Lcadt6, Kdadt6, Ieadt6, Ffadt6, Yfadt6, Zgadt6; +wire Aiadt6, Fjadt6, Kkadt6, Iladt6, Nmadt6, Inadt6, Doadt6, Dpadt6, Aqadt6, Dradt6; +wire Esadt6, Dtadt6, Fuadt6, Evadt6, Cwadt6, Xwadt6, Txadt6, Ryadt6, Ozadt6, R0bdt6; +wire L1bdt6, K2bdt6, L3bdt6, K4bdt6, M5bdt6, M6bdt6, G7bdt6, H8bdt6, A9bdt6, Aabdt6; +wire Cbbdt6, Bcbdt6, Ldbdt6, Uebdt6, Kgbdt6, Zhbdt6, Jjbdt6, Tkbdt6, Cmbdt6, Knbdt6; +wire Uobdt6, Bqbdt6, Mrbdt6, Usbdt6, Cubdt6, Ovbdt6, Axbdt6, Lybdt6, Ozbdt6, X0cdt6; +wire J2cdt6, T3cdt6, I5cdt6, S6cdt6, B8cdt6, L9cdt6, Pacdt6, Fccdt6, Qdcdt6, Efcdt6; +wire Sgcdt6, Uicdt6, Nlcdt6, Aocdt6, Crcdt6, Ztcdt6, Ywcdt6, Wzcdt6, A3ddt6, V5ddt6; +wire T8ddt6, Nbddt6, Geddt6, Zgddt6, Vjddt6, Mmddt6, Loddt6, Pqddt6, Xsddt6, Tuddt6; +wire Qwddt6, Qyddt6, M0edt6, I2edt6, F4edt6, B6edt6, Z7edt6, W9edt6, Acedt6, Zdedt6; +wire Ofedt6, Dhedt6, Siedt6, Hkedt6, Wledt6, Lnedt6, Apedt6, Pqedt6, Esedt6, Ttedt6; +wire Ivedt6, Xwedt6, Myedt6, B0fdt6, Q1fdt6, F3fdt6, U4fdt6, J6fdt6, Y7fdt6, N9fdt6; +wire Cbfdt6, Rcfdt6, Gefdt6, Vffdt6, Khfdt6, Zifdt6, Okfdt6, Dmfdt6, Snfdt6, Hpfdt6; +wire Wqfdt6, Lsfdt6, Iufdt6, Lwfdt6, Oyfdt6, N0gdt6, L2gdt6, O4gdt6, D6gdt6, S7gdt6; +wire H9gdt6, Wagdt6, Lcgdt6, Aegdt6, Pfgdt6, Ehgdt6, Djgdt6, Elgdt6, Cngdt6, Xpgdt6; +wire Bsgdt6, Fugdt6, Jwgdt6, Nygdt6, R0hdt6, V2hdt6, Z4hdt6, D7hdt6, Q9hdt6, Ubhdt6; +wire Oehdt6, Sghdt6, Wihdt6, Alhdt6, Enhdt6, Iphdt6, Vrhdt6, Zthdt6, Dwhdt6, Hyhdt6; +wire L0idt6, P2idt6, T4idt6, X6idt6, B9idt6, Fbidt6, Jdidt6, Nfidt6, Rhidt6, Vjidt6; +wire Zlidt6, Doidt6, Hqidt6, Xsidt6, Bvidt6, Fxidt6, Jzidt6, N1jdt6, R3jdt6, V5jdt6; +wire Z7jdt6, Dajdt6, Gcjdt6, Jejdt6, Mgjdt6, Pijdt6, Skjdt6, Vmjdt6, Yojdt6, Brjdt6; +wire Etjdt6, Hvjdt6, Kxjdt6, Nzjdt6, Q1kdt6, T3kdt6, W5kdt6, Z7kdt6, Cakdt6, Fckdt6; +wire Iekdt6, Lgkdt6, Oikdt6, Rkkdt6, Umkdt6, Xokdt6, Arkdt6, Mtkdt6, Pvkdt6, Sxkdt6; +wire Vzkdt6, Y1ldt6, B4ldt6, E6ldt6, H8ldt6, Kaldt6, Ncldt6, Qeldt6, Tgldt6, Wildt6; +wire Zkldt6, Cnldt6, Fpldt6, Irldt6, Ltldt6, Ovldt6, Rxldt6, Uzldt6, X1mdt6, A4mdt6; +wire D6mdt6, G8mdt6, Jamdt6, Mcmdt6, Pemdt6, Sgmdt6, Vimdt6, Ykmdt6, Bnmdt6, Epmdt6; +wire Dsmdt6, Cvmdt6, Bymdt6, A1ndt6, Z3ndt6, Y6ndt6, X9ndt6, Wcndt6, Vfndt6, Uindt6; +wire Tlndt6, Sondt6, Rrndt6, Qundt6, Pxndt6, O0odt6, N3odt6, M6odt6, L9odt6, Kcodt6; +wire Jfodt6, Iiodt6, Hlodt6, Goodt6, Frodt6, Euodt6, Dxodt6, C0pdt6, A3pdt6, Y5pdt6; +wire W8pdt6, Ubpdt6, Sepdt6, Qhpdt6, Okpdt6, Mnpdt6, Kqpdt6, Itpdt6, Gwpdt6, Ezpdt6; +wire C2qdt6, A5qdt6, Y7qdt6, Waqdt6, Udqdt6, Sgqdt6, Qjqdt6, Omqdt6, Mpqdt6, Ksqdt6; +wire Ivqdt6, Gyqdt6, E1rdt6, C4rdt6, A7rdt6, Y9rdt6, Wcrdt6, Ufrdt6, Sirdt6, Qlrdt6; +wire Oordt6, Mrrdt6, Kurdt6, Ixrdt6, G0sdt6, E3sdt6, C6sdt6, A9sdt6, Ybsdt6, Wesdt6; +wire Uhsdt6, Sksdt6, Qnsdt6, Oqsdt6, Mtsdt6, Kwsdt6, Izsdt6, G2tdt6, E5tdt6, C8tdt6; +wire Abtdt6, Ydtdt6, Wgtdt6, Ujtdt6, Smtdt6, Qptdt6, Ostdt6, Mvtdt6, Kytdt6, I1udt6; +wire G4udt6, E7udt6, Caudt6, Adudt6, Yfudt6, Wiudt6, Uludt6, Soudt6, Qrudt6, Ouudt6; +wire Mxudt6, K0vdt6, I3vdt6, G6vdt6, E9vdt6, Ccvdt6, Afvdt6, Yhvdt6, Wkvdt6, Unvdt6; +wire Sqvdt6, Qtvdt6, Owvdt6, Mzvdt6, K2wdt6, I5wdt6, G8wdt6, Ebwdt6, Bewdt6, Ygwdt6; +wire Vjwdt6, Smwdt6, Ppwdt6, Mswdt6, Jvwdt6, Gywdt6, D1xdt6, A4xdt6, S7xdt6, Q9xdt6; +wire Wbxdt6, Zdxdt6, Wfxdt6, Whxdt6, Mkxdt6, Smxdt6, Yoxdt6, Erxdt6, Ktxdt6, Qvxdt6; +wire Wxxdt6, C0ydt6, I2ydt6, O4ydt6, U6ydt6, A9ydt6, Gbydt6, Mdydt6, Sfydt6, Yhydt6; +wire Ekydt6, Kmydt6, Qoydt6, Wqydt6, Btydt6, Gvydt6, Lxydt6, Qzydt6, V1zdt6, A4zdt6; +wire F6zdt6, K8zdt6, Pazdt6, Uczdt6, Zezdt6, Ehzdt6, Jjzdt6, Olzdt6, Tnzdt6, Ypzdt6; +wire Dszdt6, Iuzdt6, Nwzdt6, Syzdt6, X00et6, C30et6, H50et6, M70et6, R90et6, Wb0et6; +wire Be0et6, Gg0et6, Li0et6, Qk0et6, Vm0et6, Ap0et6, Fr0et6, Kt0et6, Pv0et6, Ux0et6; +wire Zz0et6, E21et6, J41et6, O61et6, T81et6, Ya1et6, Dd1et6, If1et6, Nh1et6, Sj1et6; +wire Xl1et6, Co1et6, Hq1et6, Ms1et6, Ru1et6, Ww1et6, Bz1et6, G12et6, L32et6, Q52et6; +wire Z72et6, Ea2et6, Jc2et6, Oe2et6, Bh2et6, Nj2et6, Yl2et6, Po2et6, Gr2et6, Vt2et6; +wire Ow2et6, Ez2et6, W13et6, M43et6, K73et6, Ca3et6, Lc3et6, Ue3et6, Dh3et6, Mj3et6; +wire Vl3et6, Eo3et6, Nq3et6, Ws3et6, Fv3et6, Ox3et6, Xz3et6, G24et6, P44et6, Y64et6; +wire H94et6, Qb4et6, Zd4et6, Ig4et6, Ri4et6, Al4et6, Jn4et6, Sp4et6, Bs4et6, Ku4et6; +wire Tw4et6, Cz4et6, L15et6, U35et6, D65et6, M85et6, Va5et6, Ed5et6, Nf5et6, Wh5et6; +wire Fk5et6, Om5et6, Xo5et6, Gr5et6, Pt5et6, Yv5et6, Hy5et6, Q06et6, Z26et6, I56et6; +wire R76et6, Aa6et6, Jc6et6, Se6et6, Bh6et6, Kj6et6, Tl6et6, Co6et6, Lq6et6, Us6et6; +wire Dv6et6, Mx6et6, Vz6et6, E27et6, N47et6, W67et6, F97et6, Ob7et6, Xd7et6, Gg7et6; +wire Vi7et6, Pl7et6, No7et6, Ir7et6, Ku7et6, Ex7et6, Xz7et6, U28et6, P58et6, L88et6; +wire Ua8et6, Dd8et6, Mf8et6, Vh8et6, Ek8et6, Nm8et6, Wo8et6, Fr8et6, Ot8et6, Xv8et6; +wire Gy8et6, P09et6, Y29et6, H59et6, Q79et6, Z99et6, Ic9et6, Re9et6, Ah9et6, Jj9et6; +wire Sl9et6, Bo9et6, Kq9et6, Ts9et6, Cv9et6, Lx9et6, Uz9et6, D2aet6, M4aet6, V6aet6; +wire E9aet6, Nbaet6, Wdaet6, Fgaet6, Oiaet6, Xkaet6, Gnaet6, Ppaet6, Yraet6, Huaet6; +wire Qwaet6, Zyaet6, I1bet6, R3bet6, A6bet6, J8bet6, Sabet6, Bdbet6, Kfbet6, Thbet6; +wire Pkbet6, Qmbet6, Qobet6, Oqbet6, Zrbet6, Itbet6, Qubet6, Awbet6, Lxbet6, Nybet6; +wire Vzbet6, E1cet6, L2cet6, U3cet6, D5cet6, O6cet6, A8cet6, E9cet6, Macet6, Wbcet6; +wire Hdcet6, Oecet6, Zfcet6, Fhcet6, Micet6, Sjcet6, Ykcet6, Emcet6, Sncet6, Gpcet6; +wire Uqcet6, Iscet6, Wtcet6, Kvcet6, Ywcet6, Mycet6, A0det6, O1det6, C3det6, Q4det6; +wire E6det6, S7det6, G9det6, Uadet6, Icdet6, Wddet6, Kfdet6, Ygdet6, Midet6, Akdet6; +wire Oldet6, Cndet6, Zodet6, Brdet6, Zsdet6, Zudet6, Ywdet6, Yydet6, X0eet6, W2eet6; +wire X4eet6, X6eet6, X8eet6, Cbeet6, Ddeet6, Ffeet6, Dheet6, Ijeet6, Mleet6, Nneet6; +wire Opeet6, Oreet6, Qteet6, Vveet6, Ayeet6, A0fet6, D2fet6, Y3fet6, T5fet6, R7fet6; +wire T9fet6, Hbfet6, Vcfet6, Jefet6, Xffet6, Lhfet6, Zifet6, Nkfet6, Bmfet6, Pnfet6; +wire Gpfet6, Lrfet6, Qtfet6, Ovfet6, Oxfet6, Ozfet6, S1get6, X3get6, V5get6, X7get6; +wire P9get6, Hcget6, Weget6, Phget6, Hkget6, Rmget6, Apget6, Orget6, Euget6, Qwget6; +wire Dzget6, P1het6, C4het6, P7het6, Cbhet6, Pehet6, Cihet6, Plhet6, Cphet6, Pshet6; +wire Cwhet6, Pzhet6, C3iet6, P6iet6, Caiet6, Pdiet6, Chiet6, Pkiet6, Coiet6, Priet6; +wire Cviet6, Pyiet6, C2jet6, P5jet6, C9jet6, Pcjet6, Cgjet6, Pjjet6, Cnjet6, Pqjet6; +wire Cujet6, Pxjet6, C1ket6, P4ket6, C8ket6, Pbket6, Cfket6, Piket6, Cmket6, Ppket6; +wire Ctket6, Pwket6, C0let6, P3let6, C7let6, Palet6, Celet6, Phlet6, Cllet6, Polet6; +wire Cslet6, Pvlet6, Czlet6, P2met6, C6met6, P9met6, Cdmet6, Pgmet6, Ckmet6, Pnmet6; +wire Crmet6, Pumet6, Cymet6, P1net6, C5net6, P8net6, Ccnet6, Senet6, Ihnet6, Ujnet6; +wire Gmnet6, Xnnet6, Spnet6, Ssnet6, Pvnet6, Iynet6, X0oet6, L3oet6, I6oet6, U8oet6; +wire Qboet6, Meoet6, Khoet6, Ekoet6, Wmoet6, Opoet6, Proet6, Qtoet6, Rvoet6, Sxoet6; +wire Tzoet6, U1pet6, V3pet6, W5pet6, X7pet6, Y9pet6, Zbpet6, Aepet6, Bgpet6, Cipet6; +wire Dkpet6, Empet6, Fopet6, Gqpet6, Hspet6, Iupet6, Jwpet6, Kypet6, L0qet6, M2qet6; +wire N4qet6, O6qet6, P8qet6, Qaqet6, Rcqet6, Seqet6, Tgqet6, Uiqet6, Vkqet6, Wmqet6; +wire Xoqet6, Yqqet6, Zsqet6, Avqet6, Bxqet6, Czqet6, D1ret6, E3ret6, F5ret6, G7ret6; +wire H9ret6, Ibret6, Jdret6, Kfret6, Lhret6, Mjret6, Nlret6, Onret6, Ppret6, Qrret6; +wire Rtret6, Svret6, Txret6, Uzret6, V1set6, W3set6, X5set6, Y7set6, Z9set6, Acset6; +wire Beset6, Cgset6, Diset6, Ekset6, Fmset6, Goset6, Hqset6, Isset6, Juset6, Kwset6; +wire Lyset6, M0tet6, N2tet6, O4tet6, P6tet6, Q8tet6, Ratet6, Sctet6, Tetet6, Ugtet6; +wire Vitet6, Wktet6, Xmtet6, Yotet6, Zqtet6, Attet6, Bvtet6, Cxtet6, Dztet6, E1uet6; +wire O3uet6, K6uet6, Y8uet6, Zauet6, Aduet6, Bfuet6, Chuet6, Djuet6, Eluet6, Fnuet6; +wire Gpuet6, Hruet6, Ituet6, Jvuet6, Kxuet6, Lzuet6, M1vet6, N3vet6, O5vet6, P7vet6; +wire Q9vet6, Rbvet6, Sdvet6, Tfvet6, Uhvet6, Vjvet6, Wlvet6, Xnvet6, Ypvet6, Zrvet6; +wire Auvet6, Bwvet6, Cyvet6, D0wet6, E2wet6, F4wet6, G6wet6, H8wet6, Iawet6, Jcwet6; +wire Kewet6, Lgwet6, Miwet6, Nkwet6, Omwet6, Powet6, Qqwet6, Rswet6, Suwet6, Twwet6; +wire Uywet6, V0xet6, W2xet6, X4xet6, Y6xet6, Z8xet6, Abxet6, Bdxet6, Cfxet6, Dhxet6; +wire Ejxet6, Flxet6, Gnxet6, Hpxet6, Irxet6, Jtxet6, Kvxet6, Qxxet6, Wzxet6, I2yet6; +wire S4yet6, M7yet6, X9yet6, Icyet6, Teyet6, Dhyet6, Sjyet6, Dmyet6, Woyet6, Hryet6; +wire Styet6, Ewyet6, Ryyet6, S0zet6, T2zet6, U4zet6, N7zet6, Gazet6, Xczet6, Mezet6; +wire Hgzet6, Bizet6, Rjzet6, Blzet6, Qmzet6, Cozet6, Ppzet6, Frzet6, Tszet6, Fvzet6; +wire Pxzet6, Pzzet6, P10ft6, P30ft6, P50ft6, P70ft6, P90ft6, Pb0ft6, Pd0ft6, Pf0ft6; +wire Ph0ft6, Pj0ft6, Pl0ft6, Zn0ft6, Lq0ft6, Bt0ft6, Ov0ft6, Ay0ft6, K01ft6, T21ft6; +wire F51ft6, U71ft6, Ja1ft6, Zb1ft6, Xc1ft6, Vd1ft6, Te1ft6, Rf1ft6, Pg1ft6, Nh1ft6; +wire Li1ft6, Jj1ft6, Tk1ft6, Dm1ft6, Nn1ft6, Xo1ft6, Hq1ft6, Rr1ft6, Ws1ft6, Cu1ft6; +wire Iv1ft6, Nw1ft6, Tx1ft6, Zy1ft6, D02ft6, M12ft6, W22ft6, L42ft6, Y52ft6, B82ft6; +wire Ea2ft6, Hc2ft6, Ke2ft6, Gg2ft6, Ei2ft6, Fk2ft6, Dm2ft6, Eo2ft6, Cq2ft6, Gs2ft6; +wire Hu2ft6, Gw2ft6, Gy2ft6, I03ft6, T13ft6, E33ft6, P43ft6, A63ft6, L73ft6, W83ft6; +wire Ha3ft6, Sb3ft6, Dd3ft6, Oe3ft6, Zf3ft6, Kh3ft6, Vi3ft6, Gk3ft6, Rl3ft6, Cn3ft6; +wire No3ft6, Yp3ft6, Jr3ft6, Us3ft6, Fu3ft6, Qv3ft6, Bx3ft6, My3ft6, Xz3ft6, I14ft6; +wire T24ft6, E44ft6, P54ft6, A74ft6, L84ft6, W94ft6, Qb4ft6, Id4ft6, Af4ft6, Ah4ft6; +wire Aj4ft6, Sk4ft6, Um4ft6, Po4ft6, Mq4ft6, Fs4ft6, Bu4ft6, Dw4ft6, Fy4ft6, A05ft6; +wire X15ft6, Q35ft6, M55ft6, O75ft6, J95ft6, Gb5ft6, Zc5ft6, Ve5ft6, Kg5ft6, Mi5ft6; +wire Hk5ft6, Em5ft6, Xn5ft6, Tp5ft6, Vr5ft6, Cu5ft6, Nw5ft6, Xy5ft6, D16ft6, Y26ft6; +wire E46ft6, H56ft6, X66ft6, D86ft6, I96ft6, La6ft6, Qb6ft6, Id6ft6, We6ft6, Og6ft6; +wire Ci6ft6, Ak6ft6, Tl6ft6, Ln6ft6, Ig27v6, Ci27v6, Rj27v6, Fl27v6, Mm27v6, Tn27v6; +wire Ap27v6, Hq27v6, Or27v6, Vs27v6, Nu27v6, Iw27v6, Px27v6, Wy27v6, D037v6, K137v6; +wire R237v6, Y337v6, F537v6, M637v6, T737v6, A937v6, Ha37v6, Ob37v6, Vc37v6, Ce37v6; +wire Jf37v6, Qg37v6, Xh37v6, Ej37v6, Lk37v6, Sl37v6, Zm37v6, Yo37v6, Gq37v6, Ur37v6; +wire Jt37v6, Bv37v6, Tw37v6, Ly37v6, D047v6, V147v6, I347v6, X447v6, P647v6, D847v6; +wire V947v6, Fb47v6, Oc47v6, Jd47v6, Ee47v6, Ye47v6, Qf47v6, Mg47v6, Kh47v6, Ii47v6; +wire Gj47v6, Ek47v6, Wk47v6, Sl47v6, Qm47v6, On47v6, Io47v6, Cp47v6, Up47v6, Mq47v6; +wire Qr47v6, Us47v6, Yt47v6, Jv47v6, Vw47v6, Fy47v6, Uz47v6, E157v6, M257v6, V357v6; +wire H557v6, S657v6, D857v6, R957v6, Ab57v6, Lc57v6, Ud57v6, Hf57v6, Tg57v6, Ii57v6; +wire Uj57v6, Cl57v6, Pm57v6, Yn57v6, Kp57v6, Tq57v6, Ds57v6, Lt57v6, Uu57v6, Hw57v6; +wire Sx57v6, Ez57v6, S067v6, F267v6, S367v6, D567v6, O667v6, X767v6, G967v6, Oa67v6; +wire Ub67v6, Uc67v6, Ud67v6, Ue67v6, Uf67v6, Ug67v6, Uh67v6, Ui67v6, Uj67v6, Uk67v6; +wire Ul67v6, Um67v6, Un67v6, Mp67v6, Gr67v6, At67v6, Zt67v6, Xu67v6, Vv67v6, Xw67v6; +wire Ox67v6, Fy67v6, Wy67v6, Xz67v6, T077v6, W177v6, A377v6, C477v6, X477v6, W577v6; +wire S677v6, O777v6, L877v6, I977v6, Sa77v6, Qc77v6, Ie77v6, Gg77v6, Uh77v6, Bj77v6; +wire Ok77v6, Gm77v6, Tn77v6, Dp77v6, Br77v6, Us77v6, Ru77v6, Uw77v6, Ty77v6, Q087v6; +wire G287v6, W387v6, L587v6, F787v6, B987v6, Ka87v6, Jc87v6, De87v6, Tf87v6, Ih87v6; +wire Fj87v6, Yk87v6, Xm87v6, Ro87v6, Uq87v6, Ds87v6, Mt87v6, Vu87v6, Ew87v6, Nx87v6; +wire Wy87v6, F097v6, O197v6, X297v6, G497v6, P597v6, Y697v6, H897v6, Q997v6, Za97v6; +wire Ic97v6, Rd97v6, Af97v6, Jg97v6, Sh97v6, Bj97v6, Kk97v6, Tl97v6, Cn97v6, Lo97v6; +wire Up97v6, Dr97v6, Ms97v6, Vt97v6, Ev97v6, Nw97v6, Cy97v6, Zz97v6, W1a7v6, W3a7v6; +wire Y5a7v6, U7a7v6, K9a7v6, Bba7v6, Vca7v6, Qea7v6, Oga7v6, Uia7v6, Rka7v6, Pma7v6; +wire Soa7v6, Mqa7v6, Gsa7v6, Lua7v6, Rwa7v6, Mya7v6, P0b7v6, J2b7v6, D4b7v6, T5b7v6; +wire P7b7v6, I9b7v6, Hbb7v6, Cdb7v6, Ifb7v6, Bhb7v6, Uib7v6, Tkb7v6, Rmb7v6, Oob7v6; +wire Hqb7v6, Jsb7v6, Ztb7v6, Qvb7v6, Qxb7v6, Lzb7v6, I1c7v6, Z2c7v6, Q4c7v6, N6c7v6; +wire H8c7v6, W9c7v6, Mbc7v6, Gdc7v6, Cfc7v6, Wgc7v6, Qic7v6, Kkc7v6, Emc7v6, Ync7v6; +wire Spc7v6, Frc7v6, Wsc7v6, Cuc7v6, Ivc7v6, Owc7v6, Uxc7v6, Azc7v6, G0d7v6, M1d7v6; +wire S2d7v6, Y3d7v6, E5d7v6, K6d7v6, Q7d7v6, W8d7v6, Cad7v6, Ibd7v6, Ocd7v6, Fed7v6; +wire Xfd7v6, Phd7v6, Fjd7v6, Kkd7v6, Bmd7v6, Lnd7v6, Vod7v6, Fqd7v6, Prd7v6, Zsd7v6; +wire Jud7v6, Tvd7v6, Dxd7v6, Nyd7v6, Xzd7v6, G1e7v6, M2e7v6, W3e7v6, B5e7v6, I6e7v6; +wire M7e7v6, M8e7v6, L9e7v6, Hae7v6, Hbe7v6, Hce7v6, Eee7v6, Lge7v6, Gie7v6, Jke7v6; +wire Ame7v6, Boe7v6, Zpe7v6, Xre7v6, Rte7v6, Kve7v6, Dxe7v6, Wye7v6, R0f7v6, F2f7v6; +wire A4f7v6, T5f7v6, J7f7v6, D9f7v6, Naf7v6, Xbf7v6, Hdf7v6, Ref7v6, Bgf7v6, Lhf7v6; +wire Vif7v6, Fkf7v6, Plf7v6, Zmf7v6, Jof7v6, Tpf7v6, Drf7v6, Ctf7v6, Vuf7v6, Mwf7v6; +wire Iyf7v6, P0g7v6, Z2g7v6, L5g7v6, X7g7v6, Jag7v6, Vcg7v6, Hfg7v6, Thg7v6, Vjg7v6; +wire Cmg7v6, Nog7v6, Brg7v6, Qtg7v6, Fwg7v6, Uyg7v6, J1h7v6, Y3h7v6, N6h7v6, W8h7v6; +wire D9h7v6, K9h7v6, R9h7v6, Y9h7v6, Fah7v6, Mah7v6, Tah7v6, Abh7v6, Hbh7v6, Obh7v6; +wire Vbh7v6, Cch7v6, Jch7v6, Qch7v6, Xch7v6, Edh7v6, Ldh7v6, Sdh7v6, Zdh7v6, Geh7v6; +wire Neh7v6, Ueh7v6, Bfh7v6, Ifh7v6, Pfh7v6, Wfh7v6, Dgh7v6, Kgh7v6, Rgh7v6, Ygh7v6; +wire Fhh7v6, Mhh7v6, Thh7v6, Aih7v6, Hih7v6, Oih7v6, Vih7v6, Cjh7v6, Jjh7v6, Qjh7v6; +wire Xjh7v6, Ekh7v6, Lkh7v6, Skh7v6, Zkh7v6, Glh7v6, Nlh7v6, Ulh7v6, Bmh7v6, Imh7v6; +wire Pmh7v6, Wmh7v6, Dnh7v6, Knh7v6, Rnh7v6, Ynh7v6, Foh7v6, Moh7v6, Toh7v6, Aph7v6; +wire Hph7v6, Oph7v6, Vph7v6, Cqh7v6, Jqh7v6, Qqh7v6, Xqh7v6, Erh7v6, Lrh7v6, Srh7v6; +wire Zrh7v6, Gsh7v6, Nsh7v6, Ush7v6, Bth7v6, Ith7v6, Pth7v6, Wth7v6, Duh7v6, Kuh7v6; +wire Ruh7v6, Yuh7v6, Fvh7v6, Mvh7v6, Tvh7v6, Awh7v6, Hwh7v6, Owh7v6, Vwh7v6, Cxh7v6; +wire Jxh7v6, Qxh7v6, Xxh7v6, Eyh7v6, Lyh7v6, Syh7v6, Zyh7v6, Gzh7v6, Nzh7v6, Uzh7v6; +wire B0i7v6, I0i7v6, P0i7v6, W0i7v6, D1i7v6, K1i7v6, R1i7v6, Y1i7v6, F2i7v6, M2i7v6; +wire T2i7v6, A3i7v6, H3i7v6, O3i7v6, V3i7v6, C4i7v6, J4i7v6, Q4i7v6, X4i7v6, E5i7v6; +wire L5i7v6, S5i7v6, Z5i7v6, G6i7v6, N6i7v6, U6i7v6, B7i7v6, I7i7v6, P7i7v6, W7i7v6; +wire D8i7v6, K8i7v6, R8i7v6, Y8i7v6, F9i7v6, M9i7v6, T9i7v6, Aai7v6, Hai7v6, Oai7v6; +wire Vai7v6, Cbi7v6, Jbi7v6, Qbi7v6, Xbi7v6, Eci7v6, Lci7v6, Sci7v6, Zci7v6, Gdi7v6; +wire Ndi7v6, Udi7v6, Bei7v6, Iei7v6, Pei7v6, Wei7v6, Dfi7v6, Kfi7v6, Rfi7v6, Yfi7v6; +wire Fgi7v6, Mgi7v6, Tgi7v6, Ahi7v6, Hhi7v6, Ohi7v6, Vhi7v6, Cii7v6, Jii7v6, Qii7v6; +wire Xii7v6, Eji7v6, Lji7v6, Sji7v6, Zji7v6, Gki7v6, Nki7v6, Uki7v6, Bli7v6, Ili7v6; +wire Pli7v6, Wli7v6, Dmi7v6, Kmi7v6, Rmi7v6, Ymi7v6, Fni7v6, Mni7v6, Tni7v6, Aoi7v6; +wire Hoi7v6, Ooi7v6, Voi7v6, Cpi7v6, Jpi7v6, Qpi7v6, Xpi7v6, Eqi7v6, Lqi7v6, Sqi7v6; +wire Zqi7v6, Gri7v6, Nri7v6, Uri7v6, Bsi7v6, Isi7v6, Psi7v6, Wsi7v6, Dti7v6, Kti7v6; +wire Rti7v6, Yti7v6, Fui7v6, Mui7v6, Tui7v6, Avi7v6, Hvi7v6, Ovi7v6, Vvi7v6, Cwi7v6; +wire Jwi7v6, Qwi7v6, Xwi7v6, Exi7v6, Lxi7v6, Sxi7v6, Zxi7v6, Gyi7v6, Nyi7v6, Uyi7v6; +wire Bzi7v6, Izi7v6, Pzi7v6, Wzi7v6, D0j7v6, K0j7v6, R0j7v6, Y0j7v6, F1j7v6, M1j7v6; +wire T1j7v6, A2j7v6, H2j7v6, O2j7v6, V2j7v6, C3j7v6, J3j7v6, Q3j7v6, X3j7v6, E4j7v6; +wire L4j7v6, S4j7v6, Z4j7v6, G5j7v6, N5j7v6, U5j7v6, B6j7v6, I6j7v6, P6j7v6, W6j7v6; +wire D7j7v6, K7j7v6, R7j7v6, Y7j7v6, F8j7v6, M8j7v6, T8j7v6, A9j7v6, H9j7v6, O9j7v6; +wire V9j7v6, Caj7v6, Jaj7v6, Qaj7v6, Xaj7v6, Ebj7v6, Lbj7v6, Sbj7v6, Zbj7v6, Gcj7v6; +wire Ncj7v6, Ucj7v6, Bdj7v6, Idj7v6, Pdj7v6, Wdj7v6, Dej7v6, Kej7v6, Rej7v6, Yej7v6; +wire Ffj7v6, Mfj7v6, Tfj7v6, Agj7v6, Hgj7v6, Ogj7v6, Vgj7v6, Chj7v6, Jhj7v6, Qhj7v6; +wire Xhj7v6, Eij7v6, Lij7v6, Sij7v6, Zij7v6, Gjj7v6, Njj7v6, Ujj7v6, Bkj7v6, Ikj7v6; +wire Pkj7v6, Wkj7v6, Dlj7v6, Klj7v6, Rlj7v6, Ylj7v6, Fmj7v6, Mmj7v6, Tmj7v6, Anj7v6; +wire Hnj7v6, Onj7v6, Vnj7v6, Coj7v6, Joj7v6, Qoj7v6, Xoj7v6, Epj7v6, Lpj7v6, Spj7v6; +wire Zpj7v6, Gqj7v6, Nqj7v6, Uqj7v6, Brj7v6, Irj7v6, Prj7v6, Wrj7v6, Dsj7v6, Ksj7v6; +wire Rsj7v6, Ysj7v6, Ftj7v6, Mtj7v6, Ttj7v6, Auj7v6, Huj7v6, Ouj7v6, Vuj7v6, Cvj7v6; +wire Jvj7v6, Qvj7v6, Xvj7v6, Ewj7v6, Lwj7v6, Swj7v6, Zwj7v6, Gxj7v6, Nxj7v6, Uxj7v6; +wire Byj7v6, Iyj7v6, Pyj7v6, Wyj7v6, Dzj7v6, Kzj7v6, Rzj7v6, Yzj7v6, F0k7v6, M0k7v6; +wire T0k7v6, A1k7v6, H1k7v6, O1k7v6, V1k7v6, C2k7v6, J2k7v6, Q2k7v6, X2k7v6, E3k7v6; +wire L3k7v6, S3k7v6, Z3k7v6, G4k7v6, N4k7v6, U4k7v6, B5k7v6, I5k7v6, P5k7v6, W5k7v6; +wire D6k7v6, K6k7v6, R6k7v6, Y6k7v6, F7k7v6, M7k7v6, T7k7v6, A8k7v6, H8k7v6, O8k7v6; +wire V8k7v6, C9k7v6, J9k7v6, Q9k7v6, X9k7v6, Eak7v6, Lak7v6, Sak7v6, Zak7v6, Gbk7v6; +wire Nbk7v6, Ubk7v6, Bck7v6, Ick7v6, Pck7v6, Wck7v6, Ddk7v6, Kdk7v6, Rdk7v6, Ydk7v6; +wire Fek7v6, Mek7v6, Tek7v6, Afk7v6, Hfk7v6, Ofk7v6, Vfk7v6, Cgk7v6, Jgk7v6, Qgk7v6; +wire Xgk7v6, Ehk7v6, Lhk7v6, Shk7v6, Zhk7v6, Gik7v6, Nik7v6, Uik7v6, Bjk7v6, Ijk7v6; +wire Pjk7v6, Wjk7v6, Dkk7v6, Kkk7v6, Rkk7v6, Ykk7v6, Flk7v6, Mlk7v6, Tlk7v6, Amk7v6; +wire Hmk7v6, Omk7v6, Vmk7v6, Cnk7v6, Jnk7v6, Qnk7v6, Xnk7v6, Eok7v6, Lok7v6, Sok7v6; +wire Zok7v6, Gpk7v6, Npk7v6, Upk7v6, Bqk7v6, Iqk7v6, Pqk7v6, Wqk7v6, Drk7v6, Krk7v6; +wire Rrk7v6, Yrk7v6, Fsk7v6, Msk7v6, Tsk7v6, Atk7v6, Htk7v6, Otk7v6, Vtk7v6, Cuk7v6; +wire Juk7v6, Quk7v6, Xuk7v6, Evk7v6, Lvk7v6, Svk7v6, Zvk7v6, Gwk7v6, Nwk7v6, Uwk7v6; +wire Bxk7v6, Ixk7v6, Pxk7v6, Wxk7v6, Dyk7v6, Kyk7v6, Ryk7v6, Yyk7v6, Fzk7v6, Mzk7v6; +wire Tzk7v6, A0l7v6, H0l7v6, O0l7v6, V0l7v6, C1l7v6, J1l7v6, Q1l7v6, X1l7v6, E2l7v6; +wire L2l7v6, S2l7v6, Z2l7v6, G3l7v6, N3l7v6, U3l7v6, B4l7v6, I4l7v6, P4l7v6, W4l7v6; +wire D5l7v6, K5l7v6, R5l7v6, Y5l7v6, F6l7v6, M6l7v6, T6l7v6, A7l7v6, H7l7v6, O7l7v6; +wire V7l7v6, C8l7v6, J8l7v6, Q8l7v6, X8l7v6, E9l7v6, L9l7v6, S9l7v6, Z9l7v6, Gal7v6; +wire Nal7v6, Ual7v6, Bbl7v6, Ibl7v6, Pbl7v6, Wbl7v6, Dcl7v6, Kcl7v6, Rcl7v6, Ycl7v6; +wire Fdl7v6, Mdl7v6, Tdl7v6, Ael7v6, Hel7v6, Oel7v6, Vel7v6, Cfl7v6, Jfl7v6, Qfl7v6; +wire Xfl7v6, Egl7v6, Lgl7v6, Sgl7v6, Zgl7v6, Ghl7v6, Nhl7v6, Uhl7v6, Bil7v6, Iil7v6; +wire Pil7v6, Wil7v6, Djl7v6, Kjl7v6, Rjl7v6, Yjl7v6, Fkl7v6, Mkl7v6, Tkl7v6, All7v6; +wire Hll7v6, Oll7v6, Vll7v6, Cml7v6, Jml7v6, Qml7v6, Xml7v6, Enl7v6, Lnl7v6, Snl7v6; +wire Znl7v6, Gol7v6, Nol7v6, Uol7v6, Bpl7v6, Ipl7v6, Ppl7v6, Wpl7v6, Dql7v6, Kql7v6; +wire Rql7v6, Yql7v6, Frl7v6, Mrl7v6, Trl7v6, Asl7v6, Hsl7v6, Osl7v6, Vsl7v6, Ctl7v6; +wire Jtl7v6, Qtl7v6, Xtl7v6, Eul7v6, Lul7v6, Sul7v6, Zul7v6, Gvl7v6, Nvl7v6, Uvl7v6; +wire Bwl7v6, Iwl7v6, Pwl7v6, Wwl7v6, Dxl7v6, Kxl7v6, Rxl7v6, Yxl7v6, Fyl7v6, Myl7v6; +wire Tyl7v6, Azl7v6, Hzl7v6, Ozl7v6, Vzl7v6, C0m7v6, J0m7v6, Q0m7v6, X0m7v6, E1m7v6; +wire L1m7v6, S1m7v6, Z1m7v6, G2m7v6, N2m7v6, U2m7v6, B3m7v6, I3m7v6, P3m7v6, W3m7v6; +wire D4m7v6, K4m7v6, R4m7v6, Y4m7v6, F5m7v6, M5m7v6, T5m7v6, A6m7v6, H6m7v6, O6m7v6; +wire V6m7v6, C7m7v6, J7m7v6, Q7m7v6, X7m7v6, E8m7v6, L8m7v6, S8m7v6, Z8m7v6, G9m7v6; +wire N9m7v6, U9m7v6, Bam7v6, Iam7v6, Pam7v6, Wam7v6, Dbm7v6, Kbm7v6, Rbm7v6, Ybm7v6; +wire Fcm7v6, Mcm7v6, Tcm7v6, Adm7v6, Hdm7v6, Odm7v6, Vdm7v6, Cem7v6, Jem7v6, Qem7v6; +wire Xem7v6, Efm7v6, Lfm7v6, Sfm7v6, Zfm7v6, Ggm7v6, Ngm7v6, Ugm7v6, Bhm7v6, Ihm7v6; +wire Phm7v6, Whm7v6, Dim7v6, Kim7v6, Rim7v6, Yim7v6, Fjm7v6, Mjm7v6, Tjm7v6, Akm7v6; +wire Hkm7v6, Okm7v6, Vkm7v6, Clm7v6, Jlm7v6, Qlm7v6, Xlm7v6, Emm7v6, Lmm7v6, Smm7v6; +wire Zmm7v6, Gnm7v6, Nnm7v6, Unm7v6, Bom7v6, Iom7v6, Pom7v6, Wom7v6, Dpm7v6, Kpm7v6; +wire Rpm7v6, Ypm7v6, Fqm7v6, Mqm7v6, Tqm7v6, Arm7v6, Hrm7v6, Orm7v6, Vrm7v6, Csm7v6; +wire Jsm7v6, Qsm7v6, Xsm7v6, Etm7v6, Ltm7v6, Stm7v6, Ztm7v6, Gum7v6, Num7v6, Uum7v6; +wire Bvm7v6, Ivm7v6, Pvm7v6, Wvm7v6, Dwm7v6, Kwm7v6, Rwm7v6, Ywm7v6, Fxm7v6, Mxm7v6; +wire Txm7v6, Aym7v6, Hym7v6, Oym7v6, Vym7v6, Czm7v6, Jzm7v6, Qzm7v6, Xzm7v6, E0n7v6; +wire L0n7v6, S0n7v6, Z0n7v6, G1n7v6, N1n7v6, U1n7v6, B2n7v6, I2n7v6, P2n7v6, W2n7v6; +wire D3n7v6, K3n7v6, R3n7v6, Y3n7v6, F4n7v6, M4n7v6, T4n7v6, A5n7v6, H5n7v6, O5n7v6; +wire V5n7v6, C6n7v6, J6n7v6, Q6n7v6, X6n7v6, E7n7v6, L7n7v6, S7n7v6, Z7n7v6, G8n7v6; +wire N8n7v6, U8n7v6, B9n7v6, I9n7v6, P9n7v6, W9n7v6, Dan7v6, Kan7v6, Ran7v6, Yan7v6; +wire Fbn7v6, Mbn7v6, Tbn7v6, Acn7v6, Hcn7v6, Ocn7v6, Vcn7v6, Cdn7v6, Jdn7v6, Qdn7v6; +wire Xdn7v6, Een7v6, Len7v6, Sen7v6, Zen7v6, Gfn7v6, Nfn7v6, Ufn7v6, Bgn7v6, Ign7v6; +wire Pgn7v6, Wgn7v6, Dhn7v6, Khn7v6, Rhn7v6, Yhn7v6, Fin7v6, Min7v6, Tin7v6, Ajn7v6; +wire Hjn7v6, Ojn7v6, Vjn7v6, Ckn7v6, Jkn7v6, Qkn7v6, Xkn7v6, Eln7v6, Lln7v6, Sln7v6; +wire Zln7v6, Gmn7v6, Nmn7v6, Umn7v6, Bnn7v6, Inn7v6, Pnn7v6, Wnn7v6, Don7v6, Kon7v6; +wire Ron7v6, Yon7v6, Fpn7v6, Mpn7v6, Tpn7v6, Aqn7v6, Hqn7v6, Oqn7v6, Vqn7v6, Crn7v6; +wire Jrn7v6, Qrn7v6, Xrn7v6, Esn7v6, Lsn7v6, Ssn7v6, Zsn7v6, Gtn7v6, Ntn7v6, Utn7v6; +wire Bun7v6, Iun7v6, Pun7v6, Wun7v6, Dvn7v6, Kvn7v6, Rvn7v6, Yvn7v6, Fwn7v6, Mwn7v6; +wire Twn7v6, Axn7v6, Hxn7v6, Oxn7v6, Vxn7v6, Cyn7v6, Jyn7v6, Qyn7v6, Xyn7v6, Ezn7v6; +wire Lzn7v6, Szn7v6, Zzn7v6, G0o7v6, N0o7v6, U0o7v6, B1o7v6, I1o7v6, P1o7v6, W1o7v6; +wire D2o7v6, K2o7v6, R2o7v6, Y2o7v6, F3o7v6, M3o7v6, T3o7v6, A4o7v6, H4o7v6, O4o7v6; +wire V4o7v6, C5o7v6, J5o7v6, Q5o7v6, X5o7v6, E6o7v6, L6o7v6, S6o7v6, Z6o7v6, G7o7v6; +wire N7o7v6, U7o7v6, B8o7v6, I8o7v6, P8o7v6, W8o7v6, D9o7v6, K9o7v6, R9o7v6, Y9o7v6; +wire Fao7v6, Mao7v6, Tao7v6, Abo7v6, Hbo7v6, Obo7v6, Vbo7v6, Cco7v6, Jco7v6, Qco7v6; +wire Xco7v6, Edo7v6, Ldo7v6, Sdo7v6, Zdo7v6, Geo7v6, Neo7v6, Ueo7v6, Bfo7v6, Ifo7v6; +wire Pfo7v6, Wfo7v6, Dgo7v6, Kgo7v6, Rgo7v6, Ygo7v6, Fho7v6, Mho7v6, Tho7v6, Aio7v6; +wire Hio7v6, Oio7v6, Vio7v6, Cjo7v6, Jjo7v6, Qjo7v6, Xjo7v6, Eko7v6, Lko7v6, Sko7v6; +wire Zko7v6, Glo7v6, Nlo7v6, Ulo7v6, Bmo7v6, Imo7v6, Pmo7v6, Wmo7v6, Dno7v6, Kno7v6; +wire Rno7v6, Yno7v6, Foo7v6, Moo7v6, Too7v6, Apo7v6, Hpo7v6, Opo7v6, Vpo7v6, Cqo7v6; +wire Jqo7v6, Qqo7v6, Xqo7v6, Ero7v6, Lro7v6, Sro7v6, Zro7v6, Gso7v6, Nso7v6, Uso7v6; +wire Bto7v6, Ito7v6, Pto7v6, Wto7v6, Duo7v6, Kuo7v6, Ruo7v6, Yuo7v6, Fvo7v6, Mvo7v6; +wire Tvo7v6, Awo7v6, Hwo7v6, Owo7v6, Vwo7v6, Cxo7v6, Jxo7v6, Qxo7v6, Xxo7v6, Eyo7v6; +wire Lyo7v6, Syo7v6, Zyo7v6, Gzo7v6, Nzo7v6, Uzo7v6, B0p7v6, I0p7v6, P0p7v6, W0p7v6; +wire D1p7v6, K1p7v6, R1p7v6, Y1p7v6, F2p7v6, M2p7v6, T2p7v6, A3p7v6, H3p7v6, O3p7v6; +wire V3p7v6, C4p7v6, J4p7v6, Q4p7v6, X4p7v6, E5p7v6, L5p7v6, S5p7v6, Z5p7v6, G6p7v6; +wire N6p7v6, U6p7v6, B7p7v6, I7p7v6, P7p7v6, W7p7v6, D8p7v6, K8p7v6, R8p7v6, Y8p7v6; +wire F9p7v6, M9p7v6, T9p7v6, Aap7v6, Hap7v6, Oap7v6, Vap7v6, Cbp7v6, Jbp7v6, Qbp7v6; +wire Xbp7v6, Ecp7v6, Lcp7v6, Scp7v6, Zcp7v6, Gdp7v6, Ndp7v6, Udp7v6, Bep7v6, Iep7v6; +wire Pep7v6, Wep7v6, Dfp7v6, Kfp7v6, Rfp7v6, Yfp7v6, Fgp7v6, Mgp7v6, Tgp7v6, Ahp7v6; +wire Hhp7v6, Ohp7v6, Vhp7v6, Cip7v6, Jip7v6, Qip7v6, Xip7v6, Ejp7v6, Ljp7v6, Sjp7v6; +wire Zjp7v6, Gkp7v6, Nkp7v6, Ukp7v6, Blp7v6, Ilp7v6, Plp7v6, Wlp7v6, Dmp7v6, Kmp7v6; +wire Rmp7v6, Ymp7v6, Fnp7v6, Mnp7v6, Tnp7v6, Aop7v6, Hop7v6, Oop7v6, Vop7v6, Cpp7v6; +wire Jpp7v6, Qpp7v6, Xpp7v6, Eqp7v6, Lqp7v6, Sqp7v6, Zqp7v6, Grp7v6, Nrp7v6, Urp7v6; +wire Bsp7v6, Isp7v6, Psp7v6, Wsp7v6, Dtp7v6, Ktp7v6, Rtp7v6, Ytp7v6, Fup7v6, Mup7v6; +wire Tup7v6, Avp7v6, Hvp7v6, Ovp7v6, Vvp7v6, Cwp7v6, Jwp7v6, Qwp7v6, Xwp7v6, Exp7v6; +wire Lxp7v6, Sxp7v6, Zxp7v6, Gyp7v6, Nyp7v6, Uyp7v6, Bzp7v6, Izp7v6, Pzp7v6, Wzp7v6; +wire D0q7v6, K0q7v6, R0q7v6, Y0q7v6, F1q7v6, M1q7v6, T1q7v6, A2q7v6, H2q7v6, O2q7v6; +wire V2q7v6, C3q7v6, J3q7v6, Q3q7v6, X3q7v6, E4q7v6, L4q7v6, S4q7v6, Z4q7v6, G5q7v6; +wire N5q7v6, U5q7v6, B6q7v6, I6q7v6, P6q7v6, W6q7v6, D7q7v6, K7q7v6, R7q7v6, Y7q7v6; +wire F8q7v6, M8q7v6, T8q7v6, A9q7v6, H9q7v6, O9q7v6, V9q7v6, Caq7v6, Jaq7v6, Qaq7v6; +wire Xaq7v6, Ebq7v6, Lbq7v6, Sbq7v6, Zbq7v6, Gcq7v6, Ncq7v6, Ucq7v6, Bdq7v6, Idq7v6; +wire Pdq7v6, Wdq7v6, Deq7v6, Keq7v6, Req7v6, Yeq7v6, Ffq7v6, Mfq7v6, Tfq7v6, Agq7v6; +wire Hgq7v6, Ogq7v6, Vgq7v6, Chq7v6, Jhq7v6, Qhq7v6, Xhq7v6, Eiq7v6, Liq7v6, Siq7v6; +wire Ziq7v6, Gjq7v6, Njq7v6, Ujq7v6, Bkq7v6, Ikq7v6, Pkq7v6, Wkq7v6, Dlq7v6, Klq7v6; +wire Rlq7v6, Ylq7v6, Fmq7v6, Mmq7v6, Tmq7v6, Anq7v6, Hnq7v6, Onq7v6, Vnq7v6, Coq7v6; +wire Joq7v6, Qoq7v6, Xoq7v6, Epq7v6, Lpq7v6, Spq7v6, Zpq7v6, Gqq7v6, Nqq7v6, Uqq7v6; +wire Brq7v6, Irq7v6, Prq7v6, Wrq7v6, Dsq7v6, Ksq7v6, Rsq7v6, Ysq7v6, Ftq7v6, Mtq7v6; +wire Ttq7v6, Auq7v6, Huq7v6, Ouq7v6, Vuq7v6, Cvq7v6, Jvq7v6, Qvq7v6, Xvq7v6, Ewq7v6; +wire Lwq7v6, Swq7v6, Zwq7v6, Gxq7v6, Nxq7v6, Uxq7v6, Byq7v6, Iyq7v6, Pyq7v6, Wyq7v6; +wire Dzq7v6, Kzq7v6, Rzq7v6, Yzq7v6, F0r7v6, M0r7v6, T0r7v6, A1r7v6, H1r7v6, O1r7v6; +wire V1r7v6, C2r7v6, J2r7v6, Q2r7v6, X2r7v6, E3r7v6, L3r7v6, S3r7v6, Z3r7v6, G4r7v6; +wire N4r7v6, U4r7v6, B5r7v6, I5r7v6, P5r7v6, W5r7v6, D6r7v6, K6r7v6, R6r7v6, Y6r7v6; +wire F7r7v6, M7r7v6, T7r7v6, A8r7v6, H8r7v6, O8r7v6, V8r7v6, C9r7v6, J9r7v6, Q9r7v6; +wire X9r7v6, Ear7v6, Lar7v6, Sar7v6, Zar7v6, Gbr7v6, Nbr7v6, Ubr7v6, Bcr7v6, Icr7v6; +wire Pcr7v6, Wcr7v6, Ddr7v6, Kdr7v6, Rdr7v6, Ydr7v6, Fer7v6, Mer7v6, Ter7v6, Afr7v6; +wire Hfr7v6, Ofr7v6, Vfr7v6, Cgr7v6, Jgr7v6, Qgr7v6, Xgr7v6, Ehr7v6, Lhr7v6, Shr7v6; +wire Zhr7v6, Gir7v6, Nir7v6, Uir7v6, Bjr7v6, Ijr7v6, Pjr7v6, Wjr7v6, Dkr7v6, Kkr7v6; +wire Rkr7v6, Ykr7v6, Flr7v6, Mlr7v6, Tlr7v6, Amr7v6, Hmr7v6, Omr7v6, Vmr7v6, Cnr7v6; +wire Jnr7v6, Qnr7v6, Xnr7v6, Eor7v6, Lor7v6, Sor7v6, Zor7v6, Gpr7v6, Npr7v6, Upr7v6; +wire Bqr7v6, Iqr7v6, Pqr7v6, Wqr7v6, Drr7v6, Krr7v6, Rrr7v6, Yrr7v6, Fsr7v6, Msr7v6; +wire Tsr7v6, Atr7v6, Htr7v6, Otr7v6, Vtr7v6, Cur7v6, Jur7v6, Qur7v6, Xur7v6, Evr7v6; +wire Lvr7v6, Svr7v6, Zvr7v6, Gwr7v6, Nwr7v6, Uwr7v6, Bxr7v6, Ixr7v6, Pxr7v6, Wxr7v6; +wire Dyr7v6, Kyr7v6, Ryr7v6, Yyr7v6, Fzr7v6, Mzr7v6, Tzr7v6, A0s7v6, H0s7v6, O0s7v6; +wire V0s7v6, C1s7v6, J1s7v6, Q1s7v6, X1s7v6, E2s7v6, L2s7v6, S2s7v6, Z2s7v6, G3s7v6; +wire N3s7v6, U3s7v6, B4s7v6, I4s7v6, P4s7v6, W4s7v6, D5s7v6, K5s7v6, R5s7v6, Y5s7v6; +wire F6s7v6, M6s7v6, T6s7v6, A7s7v6, H7s7v6, O7s7v6, V7s7v6, C8s7v6, J8s7v6, Q8s7v6; +wire X8s7v6, E9s7v6, L9s7v6, S9s7v6, Z9s7v6, Gas7v6, Nas7v6, Uas7v6, Bbs7v6, Ibs7v6; +wire Pbs7v6, Wbs7v6, Dcs7v6, Kcs7v6, Rcs7v6, Ycs7v6, Fds7v6, Mds7v6, Tds7v6, Aes7v6; +wire Hes7v6, Oes7v6, Ves7v6, Cfs7v6, Jfs7v6, Qfs7v6, Xfs7v6, Egs7v6, Lgs7v6, Sgs7v6; +wire Zgs7v6, Ghs7v6, Nhs7v6, Uhs7v6, Bis7v6, Iis7v6, Pis7v6, Wis7v6, Djs7v6, Kjs7v6; +wire Rjs7v6, Yjs7v6, Fks7v6, Mks7v6, Tks7v6, Als7v6, Hls7v6, Ols7v6, Vls7v6, Cms7v6; +wire Jms7v6, Qms7v6, Xms7v6, Ens7v6, Lns7v6, Sns7v6, Zns7v6, Gos7v6, Nos7v6, Uos7v6; +wire Bps7v6, Ips7v6, Pps7v6, Wps7v6, Dqs7v6, Kqs7v6, Rqs7v6, Yqs7v6, Frs7v6, Mrs7v6; +wire Trs7v6, Ass7v6, Hss7v6, Oss7v6, Vss7v6, Cts7v6, Jts7v6, Qts7v6, Xts7v6, Eus7v6; +wire Lus7v6, Sus7v6, Zus7v6, Gvs7v6, Nvs7v6, Uvs7v6, Bws7v6, Iws7v6, Pws7v6, Wws7v6; +wire Dxs7v6, Kxs7v6, Rxs7v6, Yxs7v6, Fys7v6, Mys7v6, Tys7v6, Azs7v6, Hzs7v6, Ozs7v6; +wire Vzs7v6, C0t7v6, J0t7v6, Q0t7v6, X0t7v6, E1t7v6, L1t7v6, S1t7v6, Z1t7v6, G2t7v6; +wire N2t7v6, U2t7v6, B3t7v6, I3t7v6, P3t7v6, W3t7v6, D4t7v6, K4t7v6, R4t7v6, Y4t7v6; +wire F5t7v6, M5t7v6, T5t7v6, A6t7v6, H6t7v6, O6t7v6, V6t7v6, C7t7v6, J7t7v6, Q7t7v6; +wire X7t7v6, E8t7v6, L8t7v6, S8t7v6, Z8t7v6, G9t7v6, N9t7v6, U9t7v6, Bat7v6, Iat7v6; +wire Pat7v6, Wat7v6, Dbt7v6, Kbt7v6, Rbt7v6, Ybt7v6, Fct7v6, Mct7v6, Tct7v6, Adt7v6; +wire Hdt7v6, Odt7v6, Vdt7v6, Cet7v6, Jet7v6, Qet7v6, Xet7v6, Eft7v6, Lft7v6, Sft7v6; +wire Zft7v6, Ggt7v6, Ngt7v6, Ugt7v6, Bht7v6, Iht7v6, Pht7v6, Wht7v6, Dit7v6, Kit7v6; +wire Rit7v6, Yit7v6, Fjt7v6, Mjt7v6, Tjt7v6, Akt7v6, Hkt7v6, Okt7v6, Vkt7v6, Clt7v6; +wire Jlt7v6, Qlt7v6, Xlt7v6, Emt7v6, Lmt7v6, Smt7v6, Zmt7v6, Gnt7v6, Nnt7v6, Unt7v6; +wire Bot7v6, Iot7v6, Pot7v6, Wot7v6, Dpt7v6, Kpt7v6, Rpt7v6, Ypt7v6, Fqt7v6, Mqt7v6; +wire Tqt7v6, Art7v6, Hrt7v6, Ort7v6, Vrt7v6, Cst7v6, Jst7v6, Qst7v6, Xst7v6, Ett7v6; +wire Ltt7v6, Stt7v6, Ztt7v6, Gut7v6, Nut7v6, Uut7v6, Bvt7v6, Ivt7v6, Pvt7v6, Wvt7v6; +wire Dwt7v6, Kwt7v6, Rwt7v6, Ywt7v6, Fxt7v6, Mxt7v6, Txt7v6, Ayt7v6, Hyt7v6, Oyt7v6; +wire Vyt7v6, Czt7v6, Jzt7v6, Qzt7v6, Xzt7v6, E0u7v6, L0u7v6, S0u7v6, Z0u7v6, G1u7v6; +wire N1u7v6, U1u7v6, B2u7v6, I2u7v6, P2u7v6, W2u7v6, D3u7v6, K3u7v6, R3u7v6, Y3u7v6; +wire F4u7v6, M4u7v6, T4u7v6, A5u7v6, H5u7v6, O5u7v6, V5u7v6, C6u7v6, J6u7v6, Q6u7v6; +wire X6u7v6, E7u7v6, L7u7v6, S7u7v6, Z7u7v6, G8u7v6, N8u7v6, U8u7v6, B9u7v6, I9u7v6; +wire P9u7v6, W9u7v6, Dau7v6, Kau7v6, Rau7v6, Yau7v6, Fbu7v6, Mbu7v6, Tbu7v6, Acu7v6; +wire Hcu7v6, Ocu7v6, Vcu7v6, Cdu7v6, Jdu7v6, Qdu7v6, Xdu7v6, Eeu7v6, Leu7v6, Seu7v6; +wire Zeu7v6, Gfu7v6, Nfu7v6, Ufu7v6, Bgu7v6, Igu7v6, Pgu7v6, Wgu7v6, Dhu7v6, Khu7v6; +wire Rhu7v6, Yhu7v6, Fiu7v6, Miu7v6, Tiu7v6, Aju7v6, Hju7v6, Oju7v6, Vju7v6, Cku7v6; +wire Jku7v6, Qku7v6, Xku7v6, Elu7v6, Llu7v6, Slu7v6, Zlu7v6, Gmu7v6, Nmu7v6, Umu7v6; +wire Bnu7v6, Inu7v6, Pnu7v6, Wnu7v6, Dou7v6, Kou7v6, Rou7v6, You7v6, Fpu7v6, Mpu7v6; +wire Tpu7v6, Aqu7v6, Hqu7v6, Oqu7v6, Vqu7v6, Cru7v6, Jru7v6, Qru7v6, Xru7v6, Esu7v6; +wire Lsu7v6, Ssu7v6, Zsu7v6, Gtu7v6, Ntu7v6, Utu7v6, Buu7v6, Iuu7v6, Puu7v6, Wuu7v6; +wire Dvu7v6, Kvu7v6, Rvu7v6, Yvu7v6, Fwu7v6, Mwu7v6, Twu7v6, Axu7v6, Hxu7v6, Oxu7v6; +wire Vxu7v6, Cyu7v6, Jyu7v6, Qyu7v6, Xyu7v6, Ezu7v6, Lzu7v6, Szu7v6, Zzu7v6, G0v7v6; +wire N0v7v6, U0v7v6, B1v7v6, I1v7v6, P1v7v6, W1v7v6, D2v7v6, K2v7v6, R2v7v6, Y2v7v6; +wire F3v7v6, M3v7v6, T3v7v6, A4v7v6, H4v7v6, O4v7v6, V4v7v6, C5v7v6, J5v7v6, Q5v7v6; +wire X5v7v6, E6v7v6, L6v7v6, S6v7v6, Z6v7v6, G7v7v6, N7v7v6, U7v7v6, B8v7v6, I8v7v6; +wire P8v7v6, W8v7v6, D9v7v6, K9v7v6, R9v7v6, Y9v7v6, Fav7v6, Mav7v6, Tav7v6, Abv7v6; +wire Hbv7v6, Obv7v6, Vbv7v6, Ccv7v6, Jcv7v6, Qcv7v6, Xcv7v6, Edv7v6, Ldv7v6, Sdv7v6; +wire Zdv7v6, Gev7v6, Nev7v6, Uev7v6, Bfv7v6, Ifv7v6, Pfv7v6, Wfv7v6, Dgv7v6, Kgv7v6; +wire Rgv7v6, Ygv7v6, Fhv7v6, Mhv7v6, Thv7v6, Aiv7v6, Hiv7v6, Oiv7v6, Viv7v6, Cjv7v6; +wire Jjv7v6, Qjv7v6, Xjv7v6, Ekv7v6, Lkv7v6, Skv7v6, Zkv7v6, Glv7v6, Nlv7v6, Ulv7v6; +wire Bmv7v6, Imv7v6, Pmv7v6, Wmv7v6, Dnv7v6, Knv7v6, Rnv7v6, Ynv7v6, Fov7v6, Mov7v6; +wire Tov7v6, Apv7v6, Hpv7v6, Opv7v6, Vpv7v6, Cqv7v6, Jqv7v6, Qqv7v6, Xqv7v6, Erv7v6; +wire Lrv7v6, Srv7v6, Zrv7v6, Gsv7v6, Nsv7v6, Usv7v6, Btv7v6, Itv7v6, Ptv7v6, Wtv7v6; +wire Duv7v6, Kuv7v6, Ruv7v6, Yuv7v6, Fvv7v6, Mvv7v6, Tvv7v6, Awv7v6, Hwv7v6, Owv7v6; +wire Vwv7v6, Cxv7v6, Jxv7v6, Qxv7v6, Xxv7v6, Eyv7v6, Lyv7v6, Syv7v6, Zyv7v6, Gzv7v6; +wire Nzv7v6, Uzv7v6, B0w7v6, I0w7v6, P0w7v6, W0w7v6, D1w7v6, K1w7v6, R1w7v6, Y1w7v6; +wire F2w7v6, M2w7v6, T2w7v6, A3w7v6, H3w7v6, O3w7v6, V3w7v6, C4w7v6, J4w7v6, Q4w7v6; +wire X4w7v6, E5w7v6, L5w7v6, S5w7v6, Z5w7v6, G6w7v6, N6w7v6, U6w7v6, B7w7v6, I7w7v6; +wire P7w7v6, W7w7v6, D8w7v6, K8w7v6, R8w7v6, Y8w7v6, F9w7v6, M9w7v6, T9w7v6, Aaw7v6; +wire Haw7v6, Oaw7v6, Vaw7v6, Cbw7v6, Jbw7v6, Qbw7v6, Xbw7v6, Ecw7v6, Lcw7v6, Scw7v6; +wire Zcw7v6, Gdw7v6, Ndw7v6, Udw7v6, Bew7v6, Iew7v6, Pew7v6, Wew7v6, Dfw7v6, Kfw7v6; +wire Rfw7v6, Yfw7v6, Fgw7v6, Mgw7v6, Tgw7v6, Ahw7v6, Hhw7v6, Ohw7v6, Vhw7v6, Ciw7v6; +wire Jiw7v6, Qiw7v6, Xiw7v6, Ejw7v6, Ljw7v6, Sjw7v6, Zjw7v6, Gkw7v6, Nkw7v6, Ukw7v6; +wire Blw7v6, Ilw7v6, Plw7v6, Wlw7v6, Dmw7v6, Kmw7v6, Rmw7v6, Ymw7v6, Fnw7v6, Mnw7v6; +wire Tnw7v6, Aow7v6, How7v6, Oow7v6, Vow7v6, Cpw7v6, Jpw7v6, Qpw7v6, Xpw7v6, Eqw7v6; +wire Lqw7v6, Sqw7v6, Zqw7v6, Grw7v6, Nrw7v6, Urw7v6, Bsw7v6, Isw7v6, Psw7v6, Wsw7v6; +wire Dtw7v6, Ktw7v6, Rtw7v6, Ytw7v6, Fuw7v6, Muw7v6, Tuw7v6, Avw7v6, Hvw7v6, Ovw7v6; +wire Vvw7v6, Cww7v6, Jww7v6, Qww7v6, Xww7v6, Exw7v6, Lxw7v6, Sxw7v6, Zxw7v6, Gyw7v6; +wire Nyw7v6, Uyw7v6, Bzw7v6, Izw7v6, Pzw7v6, Wzw7v6, D0x7v6, K0x7v6, R0x7v6, Y0x7v6; +wire F1x7v6, M1x7v6, T1x7v6, A2x7v6, H2x7v6, O2x7v6, V2x7v6, C3x7v6, J3x7v6, Q3x7v6; +wire X3x7v6, E4x7v6, L4x7v6, S4x7v6, Z4x7v6, G5x7v6, N5x7v6, U5x7v6, B6x7v6, I6x7v6; +wire P6x7v6, W6x7v6, D7x7v6, K7x7v6, R7x7v6, Y7x7v6, F8x7v6, M8x7v6, T8x7v6, A9x7v6; +wire H9x7v6, O9x7v6, V9x7v6, Cax7v6, Jax7v6, Qax7v6, Xax7v6, Ebx7v6, Lbx7v6, Sbx7v6; +wire Zbx7v6, Gcx7v6, Ncx7v6, Ucx7v6, Bdx7v6, Idx7v6, Pdx7v6, Wdx7v6, Dex7v6, Kex7v6; +wire Rex7v6, Yex7v6, Ffx7v6, Mfx7v6, Tfx7v6, Agx7v6, Hgx7v6, Ogx7v6, Vgx7v6, Chx7v6; +wire Jhx7v6, Qhx7v6, Xhx7v6, Eix7v6, Lix7v6, Six7v6, Zix7v6, Gjx7v6, Njx7v6, Ujx7v6; +wire Bkx7v6, Ikx7v6, Pkx7v6, Wkx7v6, Dlx7v6, Klx7v6, Rlx7v6, Ylx7v6, Fmx7v6, Mmx7v6; +wire Tmx7v6, Anx7v6, Hnx7v6, Onx7v6, Vnx7v6, Cox7v6, Jox7v6, Qox7v6, Xox7v6, Epx7v6; +wire Lpx7v6, Spx7v6, Zpx7v6, Gqx7v6, Nqx7v6, Uqx7v6, Brx7v6, Irx7v6, Prx7v6, Wrx7v6; +wire Dsx7v6, Ksx7v6, Rsx7v6, Ysx7v6, Ftx7v6, Mtx7v6, Ttx7v6, Aux7v6, Hux7v6, Oux7v6; +wire Vux7v6, Cvx7v6, Jvx7v6, Qvx7v6, Xvx7v6, Ewx7v6, Lwx7v6, Swx7v6, Zwx7v6, Gxx7v6; +wire Nxx7v6, Uxx7v6, Byx7v6, Iyx7v6, Pyx7v6, Wyx7v6, Dzx7v6, Kzx7v6, Rzx7v6, Yzx7v6; +wire F0y7v6, M0y7v6, T0y7v6, A1y7v6, H1y7v6, O1y7v6, V1y7v6, C2y7v6, J2y7v6, Q2y7v6; +wire X2y7v6, E3y7v6, L3y7v6, S3y7v6, Z3y7v6, G4y7v6, N4y7v6, U4y7v6, B5y7v6, I5y7v6; +wire P5y7v6, W5y7v6, D6y7v6, K6y7v6, R6y7v6, Y6y7v6, F7y7v6, M7y7v6, T7y7v6, A8y7v6; +wire H8y7v6, O8y7v6, V8y7v6, C9y7v6, J9y7v6, Q9y7v6, X9y7v6, Eay7v6, Lay7v6, Say7v6; +wire Zay7v6, Gby7v6, Nby7v6, Uby7v6, Bcy7v6, Icy7v6, Pcy7v6, Wcy7v6, Ddy7v6, Kdy7v6; +wire Rdy7v6, Ydy7v6, Fey7v6, Mey7v6, Tey7v6, Afy7v6, Hfy7v6, Ofy7v6, Vfy7v6, Cgy7v6; +wire Jgy7v6, Qgy7v6, Xgy7v6, Ehy7v6, Lhy7v6, Shy7v6, Zhy7v6, Giy7v6, Niy7v6, Uiy7v6; +wire Bjy7v6, Ijy7v6, Pjy7v6, Wjy7v6, Dky7v6, Kky7v6, Rky7v6, Yky7v6, Fly7v6, Mly7v6; +wire Tly7v6, Amy7v6, Hmy7v6, Omy7v6, Vmy7v6, Cny7v6, Jny7v6, Qny7v6, Xny7v6, Eoy7v6; +wire Loy7v6, Soy7v6, Zoy7v6, Gpy7v6, Npy7v6, Upy7v6, Bqy7v6, Iqy7v6, Pqy7v6, Wqy7v6; +wire Dry7v6, Kry7v6, Rry7v6, Yry7v6, Fsy7v6, Msy7v6, Tsy7v6, Aty7v6, Hty7v6, Oty7v6; +wire Vty7v6, Cuy7v6, Juy7v6, Quy7v6, Xuy7v6, Evy7v6, Lvy7v6, Svy7v6, Zvy7v6, Gwy7v6; +wire Nwy7v6, Uwy7v6, Bxy7v6, Ixy7v6, Pxy7v6, Wxy7v6, Dyy7v6, Kyy7v6, Ryy7v6, Yyy7v6; +wire Fzy7v6, Mzy7v6, Tzy7v6, A0z7v6, H0z7v6, O0z7v6, V0z7v6, C1z7v6, J1z7v6, Q1z7v6; +wire X1z7v6, E2z7v6, L2z7v6, S2z7v6, Z2z7v6, G3z7v6, N3z7v6, U3z7v6, B4z7v6, I4z7v6; +wire P4z7v6, W4z7v6, D5z7v6, K5z7v6, R5z7v6, Y5z7v6, F6z7v6, M6z7v6, T6z7v6, A7z7v6; +wire H7z7v6, O7z7v6, V7z7v6, C8z7v6, J8z7v6, Q8z7v6, X8z7v6, E9z7v6, L9z7v6, S9z7v6; +wire Z9z7v6, Gaz7v6, Naz7v6, Uaz7v6, Bbz7v6, Ibz7v6, Pbz7v6, Wbz7v6, Dcz7v6, Kcz7v6; +wire Rcz7v6, Ycz7v6, Fdz7v6, Mdz7v6, Tdz7v6, Aez7v6, Hez7v6, Oez7v6, Vez7v6, Cfz7v6; +wire Jfz7v6, Qfz7v6, Xfz7v6, Egz7v6, Lgz7v6, Sgz7v6, Zgz7v6, Ghz7v6, Nhz7v6, Uhz7v6; +wire Biz7v6, Iiz7v6, Piz7v6, Wiz7v6, Djz7v6, Kjz7v6, Rjz7v6, Yjz7v6, Fkz7v6, Mkz7v6; +wire Tkz7v6, Alz7v6, Hlz7v6, Olz7v6, Vlz7v6, Cmz7v6, Jmz7v6, Qmz7v6, Xmz7v6, Enz7v6; +wire Lnz7v6, Snz7v6, Znz7v6, Goz7v6, Noz7v6, Uoz7v6, Bpz7v6, Ipz7v6, Ppz7v6, Wpz7v6; +wire Dqz7v6, Kqz7v6, Rqz7v6, Yqz7v6, Frz7v6, Mrz7v6, Trz7v6, Asz7v6, Hsz7v6, Osz7v6; +wire Vsz7v6, Ctz7v6, Jtz7v6, Qtz7v6, Xtz7v6, Euz7v6, Luz7v6, Suz7v6, Zuz7v6, Gvz7v6; +wire Nvz7v6, Uvz7v6, Bwz7v6, Iwz7v6, Pwz7v6, Wwz7v6, Dxz7v6, Kxz7v6, Rxz7v6, Yxz7v6; +wire Fyz7v6, Myz7v6, Tyz7v6, Azz7v6, Hzz7v6, Ozz7v6, Vzz7v6, C008v6, J008v6, Q008v6; +wire X008v6, E108v6, L108v6, S108v6, Z108v6, G208v6, N208v6, U208v6, B308v6, I308v6; +wire P308v6, W308v6, D408v6, K408v6, R408v6, Y408v6, F508v6, M508v6, T508v6, A608v6; +wire H608v6, O608v6, V608v6, C708v6, J708v6, Q708v6, X708v6, E808v6, L808v6, S808v6; +wire Z808v6, G908v6, N908v6, U908v6, Ba08v6, Ia08v6, Pa08v6, Wa08v6, Db08v6, Kb08v6; +wire Rb08v6, Yb08v6, Fc08v6, Mc08v6, Tc08v6, Ad08v6, Hd08v6, Od08v6, Vd08v6, Ce08v6; +wire Je08v6, Qe08v6, Xe08v6, Ef08v6, Lf08v6, Sf08v6, Zf08v6, Gg08v6, Ng08v6, Ug08v6; +wire Bh08v6, Ih08v6, Ph08v6, Wh08v6, Di08v6, Ki08v6, Ri08v6, Yi08v6, Fj08v6, Mj08v6; +wire Tj08v6, Ak08v6, Hk08v6, Ok08v6, Vk08v6, Cl08v6, Jl08v6, Ql08v6, Xl08v6, Em08v6; +wire Lm08v6, Sm08v6, Zm08v6, Gn08v6, Nn08v6, Un08v6, Bo08v6, Io08v6, Po08v6, Wo08v6; +wire Dp08v6, Kp08v6, Rp08v6, Yp08v6, Fq08v6, Mq08v6, Tq08v6, Ar08v6, Hr08v6, Or08v6; +wire Vr08v6, Cs08v6, Js08v6, Qs08v6, Xs08v6, Et08v6, Lt08v6, St08v6, Zt08v6, Gu08v6; +wire Nu08v6, Uu08v6, Bv08v6, Iv08v6, Pv08v6, Wv08v6, Dw08v6, Kw08v6, Rw08v6, Yw08v6; +wire Fx08v6, Mx08v6, Tx08v6, Ay08v6, Hy08v6, Oy08v6, Vy08v6, Cz08v6, Jz08v6, Qz08v6; +wire Xz08v6, E018v6, L018v6, S018v6, Z018v6, G118v6, N118v6, U118v6, B218v6, I218v6; +wire P218v6, W218v6, D318v6, K318v6, R318v6, Y318v6, F418v6, M418v6, T418v6, A518v6; +wire H518v6, O518v6, V518v6, C618v6, J618v6, Q618v6, X618v6, E718v6, L718v6, S718v6; +wire Z718v6, G818v6, N818v6, U818v6, B918v6, I918v6, P918v6, W918v6, Da18v6, Ka18v6; +wire Ra18v6, Ya18v6, Fb18v6, Mb18v6, Tb18v6, Ac18v6, Hc18v6, Oc18v6, Vc18v6, Cd18v6; +wire Jd18v6, Qd18v6, Xd18v6, Ee18v6, Le18v6, Se18v6, Ze18v6, Gf18v6, Nf18v6, Uf18v6; +wire Bg18v6, Ig18v6, Pg18v6, Wg18v6, Dh18v6, Kh18v6, Rh18v6, Yh18v6, Fi18v6, Mi18v6; +wire Ti18v6, Aj18v6, Hj18v6, Oj18v6, Vj18v6, Ck18v6, Jk18v6, Qk18v6, Xk18v6, El18v6; +wire Ll18v6, Sl18v6, Zl18v6, Gm18v6, Nm18v6, Um18v6, Bn18v6, In18v6, Pn18v6, Wn18v6; +wire Do18v6, Ko18v6, Ro18v6, Yo18v6, Fp18v6, Mp18v6, Tp18v6, Aq18v6, Hq18v6, Oq18v6; +wire Vq18v6, Cr18v6, Jr18v6, Qr18v6, Xr18v6, Es18v6, Ls18v6, Ss18v6, Zs18v6, Gt18v6; +wire Nt18v6, Ut18v6, Bu18v6, Iu18v6, Pu18v6, Wu18v6, Dv18v6, Kv18v6, Rv18v6, Yv18v6; +wire Fw18v6, Mw18v6, Tw18v6, Ax18v6, Hx18v6, Ox18v6, Vx18v6, Cy18v6, Jy18v6, Qy18v6; +wire Xy18v6, Ez18v6, Lz18v6, Sz18v6, Zz18v6, G028v6, N028v6, U028v6, B128v6, I128v6; +wire P128v6, W128v6, D228v6, K228v6, R228v6, Y228v6, F328v6, M328v6, T328v6, A428v6; +wire H428v6, O428v6, V428v6, C528v6, J528v6, Q528v6, X528v6, E628v6, L628v6, S628v6; +wire Z628v6, G728v6, N728v6, U728v6, B828v6, I828v6, P828v6, W828v6, D928v6, K928v6; +wire R928v6, Y928v6, Fa28v6, Ma28v6, Ta28v6, Ab28v6, Hb28v6, Ob28v6, Vb28v6, Cc28v6; +wire Jc28v6, Qc28v6, Xc28v6, Ed28v6, Ld28v6, Sd28v6, Zd28v6, Ge28v6, Ne28v6, Ue28v6; +wire Bf28v6, If28v6, Pf28v6, Wf28v6, Dg28v6, Kg28v6, Rg28v6, Yg28v6, Fh28v6, Mh28v6; +wire Th28v6, Ai28v6, Hi28v6, Oi28v6, Vi28v6, Cj28v6, Jj28v6, Qj28v6, Xj28v6, Ek28v6; +wire Lk28v6, Sk28v6, Zk28v6, Gl28v6, Nl28v6, Ul28v6, Bm28v6, Im28v6, Pm28v6, Wm28v6; +wire Dn28v6, Kn28v6, Rn28v6, Yn28v6, Fo28v6, Mo28v6, To28v6, Ap28v6, Hp28v6, Op28v6; +wire Vp28v6, Cq28v6, Jq28v6, Qq28v6, Xq28v6, Er28v6, Lr28v6, Sr28v6, Zr28v6, Gs28v6; +wire Ns28v6, Us28v6, Bt28v6, It28v6, Pt28v6, Wt28v6, Du28v6, Ku28v6, Ru28v6, Yu28v6; +wire Fv28v6, Mv28v6, Tv28v6, Aw28v6, Hw28v6, Ow28v6, Vw28v6, Cx28v6, Jx28v6, Qx28v6; +wire Xx28v6, Ey28v6, Ly28v6, Sy28v6, Zy28v6, Gz28v6, Nz28v6, Uz28v6, B038v6, I038v6; +wire P038v6, W038v6, D138v6, K138v6, R138v6, Y138v6, F238v6, M238v6, T238v6, A338v6; +wire H338v6, O338v6, V338v6, C438v6, J438v6, Q438v6, X438v6, E538v6, L538v6, S538v6; +wire Z538v6, G638v6, N638v6, U638v6, B738v6, I738v6, P738v6, W738v6, D838v6, K838v6; +wire R838v6, Y838v6, F938v6, M938v6, T938v6, Aa38v6, Ha38v6, Oa38v6, Va38v6, Cb38v6; +wire Jb38v6, Qb38v6, Xb38v6, Ec38v6, Lc38v6, Sc38v6, Zc38v6, Gd38v6, Nd38v6, Ud38v6; +wire Be38v6, Ie38v6, Pe38v6, We38v6, Df38v6, Kf38v6, Rf38v6, Yf38v6, Fg38v6, Mg38v6; +wire Tg38v6, Ah38v6, Hh38v6, Oh38v6, Vh38v6, Ci38v6, Ji38v6, Qi38v6, Xi38v6, Ej38v6; +wire Lj38v6, Sj38v6, Zj38v6, Gk38v6, Nk38v6, Uk38v6, Bl38v6, Il38v6, Pl38v6, Wl38v6; +wire Dm38v6, Km38v6, Rm38v6, Ym38v6, Fn38v6, Mn38v6, Tn38v6, Ao38v6, Ho38v6, Oo38v6; +wire Vo38v6, Cp38v6, Jp38v6, Qp38v6, Xp38v6, Eq38v6, Lq38v6, Sq38v6, Zq38v6, Gr38v6; +wire Nr38v6, Ur38v6, Bs38v6, Is38v6, Ps38v6, Ws38v6, Dt38v6, Kt38v6, Rt38v6, Yt38v6; +wire Fu38v6, Mu38v6, Tu38v6, Av38v6, Hv38v6, Ov38v6, Vv38v6, Cw38v6, Jw38v6, Qw38v6; +wire Xw38v6, Ex38v6, Lx38v6, Sx38v6, Zx38v6, Gy38v6, Ny38v6, Uy38v6, Bz38v6, Iz38v6; +wire Pz38v6, Wz38v6, D048v6, K048v6, R048v6, Y048v6, F148v6, M148v6, T148v6, A248v6; +wire H248v6, O248v6, V248v6, C348v6, J348v6, Q348v6, X348v6, E448v6, L448v6, S448v6; +wire Z448v6, G548v6, N548v6, U548v6, B648v6, I648v6, P648v6, W648v6, D748v6, K748v6; +wire R748v6, Y748v6, F848v6, M848v6, T848v6, A948v6, H948v6, O948v6, V948v6, Ca48v6; +wire Ja48v6, Qa48v6, Xa48v6, Eb48v6, Lb48v6, Sb48v6, Zb48v6, Gc48v6, Nc48v6, Uc48v6; +wire Bd48v6, Id48v6, Pd48v6, Wd48v6, De48v6, Ke48v6, Re48v6, Ye48v6, Ff48v6, Mf48v6; +wire Tf48v6, Ag48v6, Hg48v6, Og48v6, Vg48v6, Ch48v6, Jh48v6, Qh48v6, Xh48v6, Ei48v6; +wire Li48v6, Si48v6, Zi48v6, Gj48v6, Nj48v6, Uj48v6, Bk48v6, Ik48v6, Pk48v6, Wk48v6; +wire Dl48v6, Kl48v6, Rl48v6, Yl48v6, Fm48v6, Mm48v6, Tm48v6, An48v6, Hn48v6, On48v6; +wire Vn48v6, Co48v6, Jo48v6, Qo48v6, Xo48v6, Ep48v6, Lp48v6, Sp48v6, Zp48v6, Gq48v6; +wire Nq48v6, Uq48v6, Br48v6, Ir48v6, Pr48v6, Wr48v6, Ds48v6, Ks48v6, Rs48v6, Ys48v6; +wire Ft48v6, Mt48v6, Tt48v6, Au48v6, Hu48v6, Ou48v6, Vu48v6, Cv48v6, Jv48v6, Qv48v6; +wire Xv48v6, Ew48v6, Lw48v6, Sw48v6, Zw48v6, Gx48v6, Nx48v6, Ux48v6, By48v6, Iy48v6; +wire Py48v6, Wy48v6, Dz48v6, Kz48v6, Rz48v6, Yz48v6, F058v6, M058v6, T058v6, A158v6; +wire H158v6, O158v6, V158v6, C258v6, J258v6, Q258v6, X258v6, E358v6, L358v6, S358v6; +wire Z358v6, G458v6, N458v6, U458v6, B558v6, I558v6, P558v6, W558v6, D658v6, K658v6; +wire R658v6, Y658v6, F758v6, M758v6, T758v6, A858v6, H858v6, O858v6, V858v6, C958v6; +wire J958v6, Q958v6, X958v6, Ea58v6, La58v6, Sa58v6, Za58v6, Gb58v6, Nb58v6, Ub58v6; +wire Bc58v6, Ic58v6, Pc58v6, Wc58v6, Dd58v6, Kd58v6, Rd58v6, Yd58v6, Fe58v6, Me58v6; +wire Te58v6, Af58v6, Hf58v6, Of58v6, Vf58v6, Cg58v6, Jg58v6, Qg58v6, Xg58v6, Eh58v6; +wire Lh58v6, Sh58v6, Zh58v6, Gi58v6, Ni58v6, Ui58v6, Bj58v6, Ij58v6, Pj58v6, Wj58v6; +wire Dk58v6, Kk58v6, Rk58v6, Yk58v6, Fl58v6, Ml58v6, Tl58v6, Am58v6, Hm58v6, Om58v6; +wire Vm58v6, Cn58v6, Jn58v6, Qn58v6, Xn58v6, Eo58v6, Lo58v6, So58v6, Zo58v6, Gp58v6; +wire Np58v6, Up58v6, Bq58v6, Iq58v6, Pq58v6, Wq58v6, Dr58v6, Kr58v6, Rr58v6, Yr58v6; +wire Fs58v6, Ms58v6, Ts58v6, At58v6, Ht58v6, Ot58v6, Vt58v6, Cu58v6, Ju58v6, Qu58v6; +wire Xu58v6, Ev58v6, Lv58v6, Sv58v6, Zv58v6, Gw58v6, Nw58v6, Uw58v6, Bx58v6, Ix58v6; +wire Px58v6, Wx58v6, Dy58v6, Ky58v6, Ry58v6, Yy58v6, Fz58v6, Mz58v6, Tz58v6, A068v6; +wire H068v6, O068v6, V068v6, C168v6, J168v6, Q168v6, X168v6, E268v6, L268v6, S268v6; +wire Z268v6, G368v6, N368v6, U368v6, B468v6, I468v6, P468v6, W468v6, D568v6, K568v6; +wire R568v6, Y568v6, F668v6, M668v6, T668v6, A768v6, H768v6, O768v6, V768v6, C868v6; +wire J868v6, Q868v6, X868v6, E968v6, L968v6, S968v6, Z968v6, Ga68v6, Na68v6, Ua68v6; +wire Bb68v6, Ib68v6, Pb68v6, Wb68v6, Dc68v6, Kc68v6, Rc68v6, Yc68v6, Fd68v6, Md68v6; +wire Td68v6, Ae68v6, He68v6, Oe68v6, Ve68v6, Cf68v6, Jf68v6, Qf68v6, Xf68v6, Eg68v6; +wire Lg68v6, Sg68v6, Zg68v6, Gh68v6, Nh68v6, Uh68v6, Bi68v6, Ii68v6, Pi68v6, Wi68v6; +wire Dj68v6, Kj68v6, Rj68v6, Yj68v6, Fk68v6, Mk68v6, Tk68v6, Al68v6, Hl68v6, Ol68v6; +wire Vl68v6, Cm68v6, Jm68v6, Qm68v6, Xm68v6, En68v6, Ln68v6, Sn68v6, Zn68v6, Go68v6; +wire No68v6, Uo68v6, Bp68v6, Ip68v6, Pp68v6, Wp68v6, Dq68v6, Kq68v6, Rq68v6, Yq68v6; +wire Fr68v6, Mr68v6, Tr68v6, As68v6, Hs68v6, Os68v6, Vs68v6, Ct68v6, Jt68v6, Qt68v6; +wire Xt68v6, Eu68v6, Lu68v6, Su68v6, Zu68v6, Gv68v6, Nv68v6, Uv68v6, Bw68v6, Iw68v6; +wire Pw68v6, Ww68v6, Dx68v6, Kx68v6, Rx68v6, Yx68v6, Fy68v6, My68v6, Ty68v6, Az68v6; +wire Hz68v6, Oz68v6, Vz68v6, C078v6, J078v6, Q078v6, X078v6, E178v6, L178v6, S178v6; +wire Z178v6, G278v6, N278v6, U278v6, B378v6, I378v6, P378v6, W378v6, D478v6, K478v6; +wire R478v6, Y478v6, F578v6, M578v6, T578v6, A678v6, H678v6, O678v6, V678v6, C778v6; +wire J778v6, Q778v6, X778v6, E878v6, L878v6, S878v6, Z878v6, G978v6, N978v6, U978v6; +wire Ba78v6, Ia78v6, Pa78v6, Wa78v6, Db78v6, Kb78v6, Rb78v6, Yb78v6, Fc78v6, Mc78v6; +wire Tc78v6, Ad78v6, Hd78v6, Od78v6, Vd78v6, Ce78v6, Je78v6, Qe78v6, Xe78v6, Ef78v6; +wire Lf78v6, Sf78v6, Zf78v6, Gg78v6, Ng78v6, Ug78v6, Bh78v6, Ih78v6, Ph78v6, Wh78v6; +wire Di78v6, Ki78v6, Ri78v6, Yi78v6, Fj78v6, Mj78v6, Tj78v6, Ak78v6, Hk78v6, Ok78v6; +wire Vk78v6, Cl78v6, Jl78v6, Ql78v6, Xl78v6, Em78v6, Lm78v6, Sm78v6, Zm78v6, Gn78v6; +wire Nn78v6, Un78v6, Bo78v6, Io78v6, Po78v6, Wo78v6, Dp78v6, Kp78v6, Rp78v6, Yp78v6; +wire Fq78v6, Mq78v6, Tq78v6, Ar78v6, Hr78v6, Or78v6, Vr78v6, Cs78v6, Js78v6, Qs78v6; +wire Xs78v6, Et78v6, Lt78v6, St78v6, Zt78v6, Gu78v6, Nu78v6, Uu78v6, Bv78v6, Iv78v6; +wire Pv78v6, Wv78v6, Dw78v6, Kw78v6, Rw78v6, Yw78v6, Fx78v6, Mx78v6, Tx78v6, Ay78v6; +wire Hy78v6, Oy78v6, Vy78v6, Cz78v6, Jz78v6, Qz78v6, Xz78v6, E088v6, L088v6, S088v6; +wire Z088v6, G188v6, N188v6, U188v6, B288v6, I288v6, P288v6, W288v6, D388v6, K388v6; +wire R388v6, Y388v6, F488v6, M488v6, T488v6, A588v6, H588v6, O588v6, V588v6, C688v6; +wire J688v6, Q688v6, X688v6, E788v6, L788v6, S788v6, Z788v6, G888v6, N888v6, U888v6; +wire B988v6, I988v6, P988v6, W988v6, Da88v6, Ka88v6, Ra88v6, Ya88v6, Fb88v6, Mb88v6; +wire Tb88v6, Ac88v6, Hc88v6, Oc88v6, Vc88v6, Cd88v6, Jd88v6, Qd88v6, Xd88v6, Ee88v6; +wire Le88v6, Se88v6, Ze88v6, Gf88v6, Nf88v6, Uf88v6, Bg88v6, Ig88v6, Pg88v6, Wg88v6; +wire Dh88v6, Kh88v6, Rh88v6, Yh88v6, Fi88v6, Mi88v6, Ti88v6, Aj88v6, Hj88v6, Oj88v6; +wire Vj88v6, Ck88v6, Jk88v6, Qk88v6, Xk88v6, El88v6, Ll88v6, Sl88v6, Zl88v6, Gm88v6; +wire Nm88v6, Um88v6, Bn88v6, In88v6, Pn88v6, Wn88v6, Do88v6, Ko88v6, Ro88v6, Yo88v6; +wire Fp88v6, Mp88v6, Tp88v6, Aq88v6, Hq88v6, Oq88v6, Vq88v6, Cr88v6, Jr88v6, Qr88v6; +wire Xr88v6, Es88v6, Ls88v6, Ss88v6, Zs88v6, Gt88v6, Nt88v6, Ut88v6, Bu88v6, Iu88v6; +wire Pu88v6, Wu88v6, Dv88v6, Kv88v6, Rv88v6, Yv88v6, Fw88v6, Mw88v6, Tw88v6, Ax88v6; +wire Hx88v6, Ox88v6, Vx88v6, Cy88v6, Jy88v6, Qy88v6, Xy88v6, Ez88v6, Lz88v6, Sz88v6; +wire Zz88v6, G098v6, N098v6, U098v6, B198v6, I198v6, P198v6, W198v6, D298v6, K298v6; +wire R298v6, Y298v6, F398v6, M398v6, T398v6, A498v6, H498v6, O498v6, V498v6, C598v6; +wire J598v6, Q598v6, X598v6, E698v6, L698v6, S698v6, Z698v6, G798v6, N798v6, U798v6; +wire B898v6, I898v6, P898v6, W898v6, D998v6, K998v6, R998v6, Y998v6, Fa98v6, Ma98v6; +wire Ta98v6, Ab98v6, Hb98v6, Ob98v6, Vb98v6, Cc98v6, Jc98v6, Qc98v6, Xc98v6, Ed98v6; +wire Ld98v6, Sd98v6, Zd98v6, Ge98v6, Ne98v6, Ue98v6, Bf98v6, If98v6, Pf98v6, Wf98v6; +wire Dg98v6, Kg98v6, Rg98v6, Yg98v6, Fh98v6, Mh98v6, Th98v6, Ai98v6, Hi98v6, Oi98v6; +wire Vi98v6, Cj98v6, Jj98v6, Qj98v6, Xj98v6, Ek98v6, Lk98v6, Sk98v6, Zk98v6, Gl98v6; +wire Nl98v6, Ul98v6, Bm98v6, Im98v6, Pm98v6, Wm98v6, Dn98v6, Kn98v6, Rn98v6, Yn98v6; +wire Fo98v6, Mo98v6, To98v6, Ap98v6, Hp98v6, Op98v6, Vp98v6, Cq98v6, Jq98v6, Qq98v6; +wire Xq98v6, Er98v6, Lr98v6, Sr98v6, Zr98v6, Gs98v6, Ns98v6, Us98v6, Bt98v6, It98v6; +wire Pt98v6, Wt98v6, Du98v6, Ku98v6, Ru98v6, Yu98v6, Fv98v6, Mv98v6, Tv98v6, Aw98v6; +wire Hw98v6, Ow98v6, Vw98v6, Cx98v6, Jx98v6, Qx98v6, Xx98v6, Ey98v6, Ly98v6, Sy98v6; +wire Zy98v6, Gz98v6, Nz98v6, Uz98v6, B0a8v6, I0a8v6, P0a8v6, W0a8v6, D1a8v6, K1a8v6; +wire R1a8v6, Y1a8v6, F2a8v6, M2a8v6, T2a8v6, A3a8v6, H3a8v6, O3a8v6, V3a8v6, C4a8v6; +wire J4a8v6, Q4a8v6, X4a8v6, E5a8v6, L5a8v6, S5a8v6, Z5a8v6, G6a8v6, N6a8v6, U6a8v6; +wire B7a8v6, I7a8v6, P7a8v6, W7a8v6, D8a8v6, K8a8v6, R8a8v6, Y8a8v6, F9a8v6, M9a8v6; +wire T9a8v6, Aaa8v6, Haa8v6, Oaa8v6, Vaa8v6, Cba8v6, Jba8v6, Qba8v6, Xba8v6, Eca8v6; +wire Lca8v6, Sca8v6, Zca8v6, Gda8v6, Nda8v6, Uda8v6, Bea8v6, Iea8v6, Pea8v6, Wea8v6; +wire Dfa8v6, Kfa8v6, Rfa8v6, Yfa8v6, Fga8v6, Mga8v6, Tga8v6, Aha8v6, Hha8v6, Oha8v6; +wire Vha8v6, Cia8v6, Jia8v6, Qia8v6, Xia8v6, Eja8v6, Lja8v6, Sja8v6, Zja8v6, Gka8v6; +wire Nka8v6, Uka8v6, Bla8v6, Ila8v6, Pla8v6, Wla8v6, Dma8v6, Kma8v6, Rma8v6, Yma8v6; +wire Fna8v6, Mna8v6, Tna8v6, Aoa8v6, Hoa8v6, Ooa8v6, Voa8v6, Cpa8v6, Jpa8v6, Qpa8v6; +wire Xpa8v6, Eqa8v6, Lqa8v6, Sqa8v6, Zqa8v6, Gra8v6, Nra8v6, Ura8v6, Bsa8v6, Isa8v6; +wire Psa8v6, Wsa8v6, Dta8v6, Kta8v6, Rta8v6, Yta8v6, Fua8v6, Mua8v6, Tua8v6, Ava8v6; +wire Hva8v6, Ova8v6, Vva8v6, Cwa8v6, Jwa8v6, Qwa8v6, Xwa8v6, Exa8v6, Lxa8v6, Sxa8v6; +wire Zxa8v6, Gya8v6, Nya8v6, Uya8v6, Bza8v6, Iza8v6, Pza8v6, Wza8v6, D0b8v6, K0b8v6; +wire R0b8v6, Y0b8v6, F1b8v6, M1b8v6, T1b8v6, A2b8v6, H2b8v6, O2b8v6, V2b8v6, C3b8v6; +wire J3b8v6, Q3b8v6, X3b8v6, E4b8v6, L4b8v6, S4b8v6, Z4b8v6, G5b8v6, N5b8v6, U5b8v6; +wire B6b8v6, I6b8v6, P6b8v6, W6b8v6, D7b8v6, K7b8v6, R7b8v6, Y7b8v6, F8b8v6, M8b8v6; +wire T8b8v6, A9b8v6, H9b8v6, O9b8v6, V9b8v6, Cab8v6, Jab8v6, Qab8v6, Xab8v6, Ebb8v6; +wire Lbb8v6, Sbb8v6, Zbb8v6, Gcb8v6, Ncb8v6, Ucb8v6, Bdb8v6, Idb8v6, Pdb8v6, Wdb8v6; +wire Deb8v6, Keb8v6, Reb8v6, Yeb8v6, Ffb8v6, Mfb8v6, Tfb8v6, Agb8v6, Hgb8v6, Ogb8v6; +wire Vgb8v6, Chb8v6, Jhb8v6, Qhb8v6, Xhb8v6, Eib8v6, Lib8v6, Sib8v6, Zib8v6, Gjb8v6; +wire Njb8v6, Ujb8v6, Bkb8v6, Ikb8v6, Pkb8v6, Wkb8v6, Dlb8v6, Klb8v6, Rlb8v6, Ylb8v6; +wire Fmb8v6, Mmb8v6, Tmb8v6, Anb8v6, Hnb8v6, Onb8v6, Vnb8v6, Cob8v6, Job8v6, Qob8v6; +wire Xob8v6, Epb8v6, Lpb8v6, Spb8v6, Zpb8v6, Gqb8v6, Nqb8v6, Uqb8v6, Brb8v6, Irb8v6; +wire Prb8v6, Wrb8v6, Dsb8v6, Ksb8v6, Rsb8v6, Ysb8v6, Ftb8v6, Mtb8v6, Ttb8v6, Aub8v6; +wire Hub8v6, Oub8v6, Vub8v6, Cvb8v6, Jvb8v6, Qvb8v6, Xvb8v6, Ewb8v6, Lwb8v6, Swb8v6; +wire Zwb8v6, Gxb8v6, Nxb8v6, Uxb8v6, Byb8v6, Iyb8v6, Pyb8v6, Wyb8v6, Dzb8v6, Kzb8v6; +wire Rzb8v6, Yzb8v6, F0c8v6, M0c8v6, T0c8v6, A1c8v6, H1c8v6, O1c8v6, V1c8v6, C2c8v6; +wire J2c8v6, Q2c8v6, X2c8v6, E3c8v6, L3c8v6, S3c8v6, Z3c8v6, G4c8v6, N4c8v6, U4c8v6; +wire B5c8v6, I5c8v6, P5c8v6, W5c8v6, D6c8v6, K6c8v6, R6c8v6, Y6c8v6, F7c8v6, M7c8v6; +wire T7c8v6, A8c8v6, H8c8v6, O8c8v6, V8c8v6, C9c8v6, J9c8v6, Q9c8v6, X9c8v6, Eac8v6; +wire Lac8v6, Sac8v6, Zac8v6, Gbc8v6, Nbc8v6, Ubc8v6, Bcc8v6, Icc8v6, Pcc8v6, Wcc8v6; +wire Ddc8v6, Kdc8v6, Rdc8v6, Ydc8v6, Fec8v6, Mec8v6, Tec8v6, Afc8v6, Hfc8v6, Ofc8v6; +wire Vfc8v6, Cgc8v6, Jgc8v6, Qgc8v6, Xgc8v6, Ehc8v6, Lhc8v6, Shc8v6, Zhc8v6, Gic8v6; +wire Nic8v6, Uic8v6, Bjc8v6, Ijc8v6, Pjc8v6, Wjc8v6, Dkc8v6, Kkc8v6, Rkc8v6, Ykc8v6; +wire Flc8v6, Mlc8v6, Tlc8v6, Amc8v6, Hmc8v6, Omc8v6, Vmc8v6, Cnc8v6, Jnc8v6, Qnc8v6; +wire Xnc8v6, Eoc8v6, Loc8v6, Soc8v6, Zoc8v6, Gpc8v6, Npc8v6, Upc8v6, Bqc8v6, Iqc8v6; +wire Pqc8v6, Wqc8v6, Drc8v6, Krc8v6, Rrc8v6, Yrc8v6, Fsc8v6, Msc8v6, Tsc8v6, Atc8v6; +wire Htc8v6, Otc8v6, Vtc8v6, Cuc8v6, Juc8v6, Quc8v6, Xuc8v6, Evc8v6, Lvc8v6, Svc8v6; +wire Zvc8v6, Gwc8v6, Nwc8v6, Uwc8v6, Bxc8v6, Ixc8v6, Pxc8v6, Wxc8v6, Dyc8v6, Kyc8v6; +wire Ryc8v6, Yyc8v6, Fzc8v6, Mzc8v6, Tzc8v6, A0d8v6, H0d8v6, O0d8v6, V0d8v6, C1d8v6; +wire J1d8v6, Q1d8v6, X1d8v6, E2d8v6, L2d8v6, S2d8v6, Z2d8v6, G3d8v6, N3d8v6, U3d8v6; +wire B4d8v6, I4d8v6, P4d8v6, W4d8v6, D5d8v6, K5d8v6, R5d8v6, Y5d8v6, F6d8v6, M6d8v6; +wire T6d8v6, A7d8v6, H7d8v6, O7d8v6, V7d8v6, C8d8v6, J8d8v6, Q8d8v6, X8d8v6, E9d8v6; +wire L9d8v6, S9d8v6, Z9d8v6, Gad8v6, Nad8v6, Uad8v6, Bbd8v6, Ibd8v6, Pbd8v6, Wbd8v6; +wire Dcd8v6, Kcd8v6, Rcd8v6, Ycd8v6, Fdd8v6, Mdd8v6, Tdd8v6, Aed8v6, Hed8v6, Oed8v6; +wire Ved8v6, Cfd8v6, Jfd8v6, Qfd8v6, Xfd8v6, Egd8v6, Lgd8v6, Sgd8v6, Zgd8v6, Ghd8v6; +wire Nhd8v6, Uhd8v6, Bid8v6, Iid8v6, Pid8v6, Wid8v6, Djd8v6, Kjd8v6, Rjd8v6, Yjd8v6; +wire Fkd8v6, Mkd8v6, Tkd8v6, Ald8v6, Hld8v6, Old8v6, Vld8v6, Cmd8v6, Jmd8v6, Qmd8v6; +wire Xmd8v6, End8v6, Lnd8v6, Snd8v6, Znd8v6, God8v6, Nod8v6, Uod8v6, Bpd8v6, Ipd8v6; +wire Ppd8v6, Wpd8v6, Dqd8v6, Kqd8v6, Rqd8v6, Yqd8v6, Frd8v6, Mrd8v6, Trd8v6, Asd8v6; +wire Hsd8v6, Osd8v6, Vsd8v6, Ctd8v6, Jtd8v6, Qtd8v6, Xtd8v6, Eud8v6, Lud8v6, Sud8v6; +wire Zud8v6, Gvd8v6, Nvd8v6, Uvd8v6, Bwd8v6, Iwd8v6, Pwd8v6, Wwd8v6, Dxd8v6, Kxd8v6; +wire Rxd8v6, Yxd8v6, Fyd8v6, Myd8v6, Tyd8v6, Azd8v6, Hzd8v6, Ozd8v6, Vzd8v6, C0e8v6; +wire J0e8v6, Q0e8v6, X0e8v6, E1e8v6, L1e8v6, S1e8v6, Z1e8v6, G2e8v6, N2e8v6, U2e8v6; +wire B3e8v6, I3e8v6, P3e8v6, W3e8v6, D4e8v6, K4e8v6, R4e8v6, Y4e8v6, F5e8v6, M5e8v6; +wire T5e8v6, A6e8v6, H6e8v6, O6e8v6, V6e8v6, C7e8v6, J7e8v6, Q7e8v6, X7e8v6, E8e8v6; +wire L8e8v6, S8e8v6, Z8e8v6, G9e8v6, N9e8v6, U9e8v6, Bae8v6, Iae8v6, Pae8v6, Wae8v6; +wire Dbe8v6, Kbe8v6, Rbe8v6, Ybe8v6, Fce8v6, Mce8v6, Tce8v6, Ade8v6, Hde8v6, Ode8v6; +wire Vde8v6, Cee8v6, Jee8v6, Qee8v6, Xee8v6, Efe8v6, Lfe8v6, Sfe8v6, Zfe8v6, Gge8v6; +wire Nge8v6, Uge8v6, Bhe8v6, Ihe8v6, Phe8v6, Whe8v6, Die8v6, Kie8v6, Rie8v6, Yie8v6; +wire Fje8v6, Mje8v6, Tje8v6, Ake8v6, Hke8v6, Oke8v6, Vke8v6, Cle8v6, Jle8v6, Qle8v6; +wire Xle8v6, Eme8v6, Lme8v6, Sme8v6, Zme8v6, Gne8v6, Nne8v6, Une8v6, Boe8v6, Ioe8v6; +wire Poe8v6, Woe8v6, Dpe8v6, Kpe8v6, Rpe8v6, Ype8v6, Fqe8v6, Mqe8v6, Tqe8v6, Are8v6; +wire Hre8v6, Ore8v6, Vre8v6, Cse8v6, Jse8v6, Qse8v6, Xse8v6, Ete8v6, Lte8v6, Ste8v6; +wire Zte8v6, Gue8v6, Nue8v6, Uue8v6, Bve8v6, Ive8v6, Pve8v6, Wve8v6, Dwe8v6, Kwe8v6; +wire Rwe8v6, Ywe8v6, Fxe8v6, Mxe8v6, Txe8v6, Aye8v6, Hye8v6, Oye8v6, Vye8v6, Cze8v6; +wire Jze8v6, Qze8v6, Xze8v6, E0f8v6, L0f8v6, S0f8v6, Z0f8v6, G1f8v6, N1f8v6, U1f8v6; +wire B2f8v6, I2f8v6, P2f8v6, W2f8v6, D3f8v6, K3f8v6, R3f8v6, Y3f8v6, F4f8v6, M4f8v6; +wire T4f8v6, A5f8v6, H5f8v6, O5f8v6, V5f8v6, C6f8v6, J6f8v6, Q6f8v6, X6f8v6, E7f8v6; +wire L7f8v6, S7f8v6, Z7f8v6, G8f8v6, N8f8v6, U8f8v6, B9f8v6, I9f8v6, P9f8v6, W9f8v6; +wire Daf8v6, Kaf8v6, Raf8v6, Yaf8v6, Fbf8v6, Mbf8v6, Tbf8v6, Acf8v6, Hcf8v6, Ocf8v6; +wire Vcf8v6, Cdf8v6, Jdf8v6, Qdf8v6, Xdf8v6, Eef8v6, Lef8v6, Sef8v6, Zef8v6, Gff8v6; +wire Nff8v6, Uff8v6, Bgf8v6, Igf8v6, Pgf8v6, Wgf8v6, Dhf8v6, Khf8v6, Rhf8v6, Yhf8v6; +wire Fif8v6, Mif8v6, Tif8v6, Ajf8v6, Hjf8v6, Ojf8v6, Vjf8v6, Ckf8v6, Jkf8v6, Qkf8v6; +wire Xkf8v6, Elf8v6, Llf8v6, Slf8v6, Zlf8v6, Gmf8v6, Nmf8v6, Umf8v6, Bnf8v6, Inf8v6; +wire Pnf8v6, Wnf8v6, Dof8v6, Kof8v6, Rof8v6, Yof8v6, Fpf8v6, Mpf8v6, Tpf8v6, Aqf8v6; +wire Hqf8v6, Oqf8v6, Vqf8v6, Crf8v6, Jrf8v6, Qrf8v6, Xrf8v6, Esf8v6, Lsf8v6, Ssf8v6; +wire Zsf8v6, Gtf8v6, Ntf8v6, Utf8v6, Buf8v6, Iuf8v6, Puf8v6, Wuf8v6, Dvf8v6, Kvf8v6; +wire Rvf8v6, Yvf8v6, Fwf8v6, Mwf8v6, Twf8v6, Axf8v6, Hxf8v6, Oxf8v6, Vxf8v6, Cyf8v6; +wire Jyf8v6, Qyf8v6, Xyf8v6, Ezf8v6, Lzf8v6, Szf8v6, Zzf8v6, G0g8v6, N0g8v6, U0g8v6; +wire B1g8v6, I1g8v6, P1g8v6, W1g8v6, D2g8v6, K2g8v6, R2g8v6, Y2g8v6, F3g8v6, M3g8v6; +wire T3g8v6, A4g8v6, H4g8v6, O4g8v6, V4g8v6, C5g8v6, J5g8v6, Q5g8v6, X5g8v6, E6g8v6; +wire L6g8v6, S6g8v6, Z6g8v6, G7g8v6, N7g8v6, U7g8v6, B8g8v6, I8g8v6, P8g8v6, W8g8v6; +wire D9g8v6, K9g8v6, R9g8v6, Y9g8v6, Fag8v6, Mag8v6, Tag8v6, Abg8v6, Hbg8v6, Obg8v6; +wire Vbg8v6, Ccg8v6, Jcg8v6, Qcg8v6, Xcg8v6, Edg8v6, Ldg8v6, Sdg8v6, Zdg8v6, Geg8v6; +wire Neg8v6, Ueg8v6, Bfg8v6, Ifg8v6, Pfg8v6, Wfg8v6, Dgg8v6, Kgg8v6, Rgg8v6, Ygg8v6; +wire Fhg8v6, Mhg8v6, Thg8v6, Aig8v6, Hig8v6, Oig8v6, Vig8v6, Cjg8v6, Jjg8v6, Qjg8v6; +wire Xjg8v6, Ekg8v6, Lkg8v6, Skg8v6, Zkg8v6, Glg8v6, Nlg8v6, Ulg8v6, Bmg8v6, Img8v6; +wire Pmg8v6, Wmg8v6, Dng8v6, Kng8v6, Rng8v6, Yng8v6, Fog8v6, Mog8v6, Tog8v6, Apg8v6; +wire Hpg8v6, Opg8v6, Vpg8v6, Cqg8v6, Jqg8v6, Qqg8v6, Xqg8v6, Erg8v6, Lrg8v6, Srg8v6; +wire Zrg8v6, Gsg8v6, Nsg8v6, Usg8v6, Btg8v6, Itg8v6, Ptg8v6, Wtg8v6, Dug8v6, Kug8v6; +wire Rug8v6, Yug8v6, Fvg8v6, Mvg8v6, Tvg8v6, Awg8v6, Hwg8v6, Owg8v6, Vwg8v6, Cxg8v6; +wire Jxg8v6, Qxg8v6, Xxg8v6, Eyg8v6, Lyg8v6, Syg8v6, Zyg8v6, Gzg8v6, Nzg8v6, Uzg8v6; +wire B0h8v6, I0h8v6, P0h8v6, W0h8v6, D1h8v6, K1h8v6, R1h8v6, Y1h8v6, F2h8v6, M2h8v6; +wire T2h8v6, A3h8v6, H3h8v6, O3h8v6, V3h8v6, C4h8v6, J4h8v6, Q4h8v6, X4h8v6, E5h8v6; +wire L5h8v6, S5h8v6, Z5h8v6, G6h8v6, N6h8v6, U6h8v6, B7h8v6, I7h8v6, P7h8v6, W7h8v6; +wire D8h8v6, K8h8v6, R8h8v6, Y8h8v6, F9h8v6, M9h8v6, T9h8v6, Aah8v6, Hah8v6, Oah8v6; +wire Vah8v6, Cbh8v6, Jbh8v6, Qbh8v6, Xbh8v6, Ech8v6, Lch8v6, Sch8v6, Zch8v6, Gdh8v6; +wire Ndh8v6, Udh8v6, Beh8v6, Ieh8v6, Peh8v6, Weh8v6, Dfh8v6, Kfh8v6, Rfh8v6, Yfh8v6; +wire Fgh8v6, Mgh8v6, Tgh8v6, Ahh8v6, Hhh8v6, Ohh8v6, Vhh8v6, Cih8v6, Jih8v6, Qih8v6; +wire Xih8v6, Ejh8v6, Ljh8v6, Sjh8v6, Zjh8v6, Gkh8v6, Nkh8v6, Ukh8v6, Blh8v6, Ilh8v6; +wire Plh8v6, Wlh8v6, Dmh8v6, Kmh8v6, Rmh8v6, Ymh8v6, Fnh8v6, Mnh8v6, Tnh8v6, Aoh8v6; +wire Hoh8v6, Ooh8v6, Voh8v6, Cph8v6, Jph8v6, Qph8v6, Xph8v6, Eqh8v6, Lqh8v6, Sqh8v6; +wire Zqh8v6, Grh8v6, Nrh8v6, Urh8v6, Bsh8v6, Ish8v6, Psh8v6, Wsh8v6, Dth8v6, Kth8v6; +wire Rth8v6, Yth8v6, Fuh8v6, Muh8v6, Tuh8v6, Avh8v6, Hvh8v6, Ovh8v6, Vvh8v6, Cwh8v6; +wire Jwh8v6, Qwh8v6, Xwh8v6, Exh8v6, Lxh8v6, Sxh8v6, Zxh8v6, Gyh8v6, Nyh8v6, Uyh8v6; +wire Bzh8v6, Izh8v6, Pzh8v6, Wzh8v6, D0i8v6, K0i8v6, R0i8v6, Y0i8v6, F1i8v6, M1i8v6; +wire T1i8v6, A2i8v6, H2i8v6, O2i8v6, V2i8v6, C3i8v6, J3i8v6, Q3i8v6, X3i8v6, E4i8v6; +wire L4i8v6, S4i8v6, Z4i8v6, G5i8v6, N5i8v6, U5i8v6, B6i8v6, I6i8v6, P6i8v6, W6i8v6; +wire D7i8v6, K7i8v6, R7i8v6, Y7i8v6, F8i8v6, M8i8v6, T8i8v6, A9i8v6, H9i8v6, O9i8v6; +wire V9i8v6, Cai8v6, Jai8v6, Qai8v6, Xai8v6, Ebi8v6, Lbi8v6, Sbi8v6, Zbi8v6, Gci8v6; +wire Nci8v6, Uci8v6, Bdi8v6, Idi8v6, Pdi8v6, Wdi8v6, Dei8v6, Kei8v6, Rei8v6, Yei8v6; +wire Ffi8v6, Mfi8v6, Tfi8v6, Agi8v6, Hgi8v6, Ogi8v6, Vgi8v6, Chi8v6, Jhi8v6, Qhi8v6; +wire Xhi8v6, Eii8v6, Lii8v6, Sii8v6, Zii8v6, Gji8v6, Nji8v6, Uji8v6, Bki8v6, Iki8v6; +wire Pki8v6, Wki8v6, Dli8v6, Kli8v6, Rli8v6, Yli8v6, Fmi8v6, Mmi8v6, Tmi8v6, Ani8v6; +wire Hni8v6, Oni8v6, Vni8v6, Coi8v6, Joi8v6, Qoi8v6, Xoi8v6, Epi8v6, Lpi8v6, Spi8v6; +wire Zpi8v6, Gqi8v6, Nqi8v6, Uqi8v6, Bri8v6, Iri8v6, Pri8v6, Wri8v6, Dsi8v6, Ksi8v6; +wire Rsi8v6, Ysi8v6, Fti8v6, Mti8v6, Tti8v6, Aui8v6, Hui8v6, Oui8v6, Vui8v6, Cvi8v6; +wire Jvi8v6, Qvi8v6, Xvi8v6, Ewi8v6, Lwi8v6, Swi8v6, Zwi8v6, Gxi8v6, Nxi8v6, Uxi8v6; +wire Byi8v6, Iyi8v6, Pyi8v6, Wyi8v6, Dzi8v6, Kzi8v6, Rzi8v6, Yzi8v6, F0j8v6, M0j8v6; +wire T0j8v6, A1j8v6, H1j8v6, O1j8v6, V1j8v6, C2j8v6, J2j8v6, Q2j8v6, X2j8v6, E3j8v6; +wire L3j8v6, S3j8v6, Z3j8v6, G4j8v6, N4j8v6, U4j8v6, B5j8v6, I5j8v6, P5j8v6, W5j8v6; +wire D6j8v6, K6j8v6, R6j8v6, Y6j8v6, F7j8v6, M7j8v6, T7j8v6, A8j8v6, H8j8v6, O8j8v6; +wire V8j8v6, C9j8v6, J9j8v6, Q9j8v6, X9j8v6, Eaj8v6, Laj8v6, Saj8v6, Zaj8v6, Gbj8v6; +wire Nbj8v6, Ubj8v6, Bcj8v6, Icj8v6, Pcj8v6, Wcj8v6, Ddj8v6, Kdj8v6, Rdj8v6, Ydj8v6; +wire Fej8v6, Mej8v6, Tej8v6, Afj8v6, Hfj8v6, Ofj8v6, Vfj8v6, Cgj8v6, Jgj8v6, Qgj8v6; +wire Xgj8v6, Ehj8v6, Lhj8v6, Shj8v6, Zhj8v6, Gij8v6, Nij8v6, Uij8v6, Bjj8v6, Ijj8v6; +wire Pjj8v6, Wjj8v6, Dkj8v6, Kkj8v6, Rkj8v6, Ykj8v6, Flj8v6, Mlj8v6, Tlj8v6, Amj8v6; +wire Hmj8v6, Omj8v6, Vmj8v6, Cnj8v6, Jnj8v6, Qnj8v6, Xnj8v6, Eoj8v6, Loj8v6, Soj8v6; +wire Zoj8v6, Gpj8v6, Npj8v6, Upj8v6, Bqj8v6, Iqj8v6, Pqj8v6, Wqj8v6, Drj8v6, Krj8v6; +wire Rrj8v6, Yrj8v6, Fsj8v6, Msj8v6, Tsj8v6, Atj8v6, Htj8v6, Otj8v6, Vtj8v6, Cuj8v6; +wire Juj8v6, Quj8v6, Xuj8v6, Evj8v6, Lvj8v6, Svj8v6, Zvj8v6, Gwj8v6, Nwj8v6, Uwj8v6; +wire Bxj8v6, Ixj8v6, Pxj8v6, Wxj8v6, Dyj8v6, Kyj8v6, Ryj8v6, Yyj8v6, Fzj8v6, Mzj8v6; +wire Tzj8v6, A0k8v6, H0k8v6, O0k8v6, V0k8v6, C1k8v6, J1k8v6, Q1k8v6, X1k8v6, E2k8v6; +wire L2k8v6, S2k8v6, Z2k8v6, G3k8v6, N3k8v6, U3k8v6, B4k8v6, I4k8v6, P4k8v6, W4k8v6; +wire D5k8v6, K5k8v6, R5k8v6, Y5k8v6, F6k8v6, M6k8v6, T6k8v6, A7k8v6, H7k8v6, O7k8v6; +wire V7k8v6, C8k8v6, J8k8v6, Q8k8v6, X8k8v6, E9k8v6, L9k8v6, S9k8v6, Z9k8v6, Gak8v6; +wire Nak8v6, Uak8v6, Bbk8v6, Ibk8v6, Pbk8v6, Wbk8v6, Dck8v6, Kck8v6, Rck8v6, Yck8v6; +wire Fdk8v6, Mdk8v6, Tdk8v6, Aek8v6, Hek8v6, Oek8v6, Vek8v6, Cfk8v6, Jfk8v6, Qfk8v6; +wire Xfk8v6, Egk8v6, Lgk8v6, Sgk8v6, Zgk8v6, Ghk8v6, Nhk8v6, Uhk8v6, Bik8v6, Iik8v6; +wire Pik8v6, Wik8v6, Djk8v6, Kjk8v6, Rjk8v6, Yjk8v6, Fkk8v6, Mkk8v6, Tkk8v6, Alk8v6; +wire Hlk8v6, Olk8v6, Vlk8v6, Cmk8v6, Jmk8v6, Qmk8v6, Xmk8v6, Enk8v6, Lnk8v6, Snk8v6; +wire Znk8v6, Gok8v6, Nok8v6, Uok8v6, Bpk8v6, Ipk8v6, Ppk8v6, Wpk8v6, Dqk8v6, Kqk8v6; +wire Rqk8v6, Yqk8v6, Frk8v6, Mrk8v6, Trk8v6, Ask8v6, Hsk8v6, Osk8v6, Vsk8v6, Ctk8v6; +wire Jtk8v6, Qtk8v6, Xtk8v6, Euk8v6, Luk8v6, Suk8v6, Zuk8v6, Gvk8v6, Nvk8v6, Uvk8v6; +wire Bwk8v6, Iwk8v6, Pwk8v6, Wwk8v6, Dxk8v6, Kxk8v6, Rxk8v6, Yxk8v6, Fyk8v6, Myk8v6; +wire Tyk8v6, Azk8v6, Hzk8v6, Ozk8v6, Vzk8v6, C0l8v6, J0l8v6, Q0l8v6, X0l8v6, E1l8v6; +wire L1l8v6, S1l8v6, Z1l8v6, G2l8v6, N2l8v6, U2l8v6, B3l8v6, I3l8v6, P3l8v6, W3l8v6; +wire D4l8v6, K4l8v6, R4l8v6, Y4l8v6, F5l8v6, M5l8v6, T5l8v6, A6l8v6, H6l8v6, O6l8v6; +wire V6l8v6, C7l8v6, J7l8v6, Q7l8v6, X7l8v6, E8l8v6, L8l8v6, S8l8v6, Z8l8v6, G9l8v6; +wire N9l8v6, U9l8v6, Bal8v6, Ial8v6, Pal8v6, Wal8v6, Dbl8v6, Kbl8v6, Rbl8v6, Ybl8v6; +wire Fcl8v6, Mcl8v6, Tcl8v6, Adl8v6, Hdl8v6, Odl8v6, Vdl8v6, Cel8v6, Jel8v6, Qel8v6; +wire Xel8v6, Efl8v6, Lfl8v6, Sfl8v6, Zfl8v6, Ggl8v6, Ngl8v6, Ugl8v6, Bhl8v6, Ihl8v6; +wire Phl8v6, Whl8v6, Dil8v6, Kil8v6, Ril8v6, Yil8v6, Fjl8v6, Mjl8v6, Tjl8v6, Akl8v6; +wire Hkl8v6, Okl8v6, Vkl8v6, Cll8v6, Jll8v6, Qll8v6, Xll8v6, Eml8v6, Lml8v6, Sml8v6; +wire Zml8v6, Gnl8v6, Nnl8v6, Unl8v6, Bol8v6, Iol8v6, Pol8v6, Wol8v6, Dpl8v6, Kpl8v6; +wire Rpl8v6, Ypl8v6, Fql8v6, Mql8v6, Tql8v6, Arl8v6, Hrl8v6, Orl8v6, Vrl8v6, Csl8v6; +wire Jsl8v6, Qsl8v6, Xsl8v6, Etl8v6, Ltl8v6, Stl8v6, Ztl8v6, Gul8v6, Nul8v6, Uul8v6; +wire Bvl8v6, Ivl8v6, Pvl8v6, Wvl8v6, Dwl8v6, Kwl8v6, Rwl8v6, Zyl8v6, H1m8v6, P3m8v6; +wire X5m8v6, F8m8v6, Gbm8v6, Hem8v6, Ihm8v6, Jkm8v6, Knm8v6, Lqm8v6, Mtm8v6, Nwm8v6; +wire Pzm8v6, R2n8v6, T5n8v6, V8n8v6, Xbn8v6, Zen8v6, Bin8v6, Dln8v6, Fon8v6, Hrn8v6; +wire Jun8v6, Lxn8v6, N0o8v6, P3o8v6, R6o8v6, T9o8v6, Vco8v6, Xfo8v6, Zio8v6, Bmo8v6; +wire Dpo8v6, Fso8v6, Gvo8v6, Hyo8v6, I1p8v6, J4p8v6, K7p8v6, Lap8v6, Mdp8v6, Ngp8v6; +wire Ojp8v6, Pmp8v6, Rpp8v6, Tsp8v6, Vvp8v6, Xyp8v6, Z1q8v6, B5q8v6, D8q8v6, Fbq8v6; +wire Heq8v6, Jhq8v6, Lkq8v6, Nnq8v6, Pqq8v6, Rtq8v6, Twq8v6, Vzq8v6, X2r8v6, Z5r8v6; +wire B9r8v6, Dcr8v6, Ffr8v6, Hir8v6, Xkr8v6, Nnr8v6, Dqr8v6, Tsr8v6, Svr8v6, Ryr8v6; +wire Q1s8v6, P4s8v6, O7s8v6, Nas8v6, Mds8v6, Lgs8v6, Kjs8v6, Jms8v6, Ips8v6, Hss8v6; +wire Gvs8v6, Fys8v6, E1t8v6, D4t8v6, C7t8v6, Bat8v6, Tct8v6, Let8v6, Bgt8v6, Rht8v6; +wire Hjt8v6, Ojt8v6, Vjt8v6, Ckt8v6, Jkt8v6, Qkt8v6, Xkt8v6, Elt8v6, Llt8v6, Slt8v6; +wire Zlt8v6, Gmt8v6, Nmt8v6, Umt8v6, Bnt8v6, Int8v6, Pnt8v6, Wnt8v6, Dot8v6, Kot8v6; +wire Rot8v6, Yot8v6, Fpt8v6, Mpt8v6, Tpt8v6, Aqt8v6, Hqt8v6, Oqt8v6, Vqt8v6, Crt8v6; +wire Jrt8v6, Qrt8v6, Xrt8v6, Est8v6, Lst8v6, Sst8v6, Zst8v6, Gtt8v6, Ntt8v6, Utt8v6; +wire But8v6, Iut8v6, Put8v6, Wut8v6, Dvt8v6, Kvt8v6, Rvt8v6, Yvt8v6, Fwt8v6, Mwt8v6; +wire Twt8v6, Axt8v6, Hxt8v6, Oxt8v6, Vxt8v6, Cyt8v6, Jyt8v6, Qyt8v6, Xyt8v6, Ezt8v6; +wire Lzt8v6, Szt8v6, Zzt8v6, G0u8v6, N0u8v6, U0u8v6, B1u8v6, I1u8v6, P1u8v6, W1u8v6; +wire D2u8v6, K2u8v6, R2u8v6, Y2u8v6, F3u8v6, M3u8v6, T3u8v6, A4u8v6, H4u8v6, O4u8v6; +wire V4u8v6, C5u8v6, J5u8v6, Q5u8v6, X5u8v6, E6u8v6, L6u8v6, S6u8v6, Z6u8v6, G7u8v6; +wire N7u8v6, U7u8v6, B8u8v6, I8u8v6, P8u8v6, W8u8v6, D9u8v6, K9u8v6, R9u8v6, Y9u8v6; +wire Fau8v6, Mau8v6, Tau8v6, Abu8v6, Hbu8v6, Obu8v6, Vbu8v6, Ccu8v6, Jcu8v6, Qcu8v6; +wire Xcu8v6, Edu8v6, Ldu8v6, Sdu8v6, Zdu8v6, Geu8v6, Neu8v6, Ueu8v6, Bfu8v6, Ifu8v6; +wire Pfu8v6, Wfu8v6, Dgu8v6, Kgu8v6, Rgu8v6, Ygu8v6, Fhu8v6, Mhu8v6, Thu8v6, Aiu8v6; +wire Hiu8v6, Oiu8v6, Viu8v6, Cju8v6, Jju8v6, Qju8v6, Xju8v6, Eku8v6, Lku8v6, Sku8v6; +wire Zku8v6, Glu8v6, Nlu8v6, Ulu8v6, Bmu8v6, Imu8v6, Pmu8v6, Wmu8v6, Dnu8v6, Knu8v6; +wire Rnu8v6, Ynu8v6, Fou8v6, Mou8v6, Tou8v6, Apu8v6, Hpu8v6, Opu8v6, Vpu8v6, Cqu8v6; +wire Jqu8v6, Qqu8v6, Xqu8v6, Eru8v6, Lru8v6, Sru8v6, Zru8v6, Gsu8v6, Nsu8v6, Usu8v6; +wire Btu8v6, Itu8v6, Ptu8v6, Wtu8v6, Duu8v6, Kuu8v6, Ruu8v6, Yuu8v6, Fvu8v6, Mvu8v6; +wire Tvu8v6, Awu8v6, Hwu8v6, Owu8v6, Vwu8v6, Cxu8v6, Jxu8v6, Qxu8v6, Xxu8v6, Eyu8v6; +wire Lyu8v6, Syu8v6, Zyu8v6, Gzu8v6, Nzu8v6, Uzu8v6, B0v8v6, I0v8v6, P0v8v6, W0v8v6; +wire D1v8v6, K1v8v6, R1v8v6, Y1v8v6, F2v8v6, M2v8v6, T2v8v6, A3v8v6, H3v8v6, O3v8v6; +wire V3v8v6, C4v8v6, J4v8v6, Q4v8v6, X4v8v6, E5v8v6, L5v8v6, S5v8v6, Z5v8v6, G6v8v6; +wire N6v8v6, U6v8v6, B7v8v6, I7v8v6, P7v8v6, W7v8v6, D8v8v6, K8v8v6, R8v8v6, Y8v8v6; +wire F9v8v6, M9v8v6, T9v8v6, Aav8v6, Hav8v6, Oav8v6, Vav8v6, Cbv8v6, Jbv8v6, Qbv8v6; +wire Xbv8v6, Ecv8v6, Lcv8v6, Scv8v6, Zcv8v6, Gdv8v6, Ndv8v6, Udv8v6, Bev8v6, Iev8v6; +wire Pev8v6, Wev8v6, Dfv8v6, Kfv8v6, Rfv8v6, Yfv8v6, Fgv8v6, Mgv8v6, Tgv8v6, Ahv8v6; +wire Hhv8v6, Ohv8v6, Vhv8v6, Civ8v6, Jiv8v6, Qiv8v6, Xiv8v6, Ejv8v6, Ljv8v6, Sjv8v6; +wire Zjv8v6, Gkv8v6, Nkv8v6, Ukv8v6, Blv8v6, Ilv8v6, Plv8v6, Wlv8v6, Dmv8v6, Kmv8v6; +wire Rmv8v6, Ymv8v6, Fnv8v6, Mnv8v6, Tnv8v6, Aov8v6, Hov8v6, Oov8v6, Vov8v6, Cpv8v6; +wire Jpv8v6, Qpv8v6, Xpv8v6, Eqv8v6, Lqv8v6, Sqv8v6, Zqv8v6, Grv8v6, Nrv8v6, Urv8v6; +wire Bsv8v6, Isv8v6, Psv8v6, Wsv8v6, Dtv8v6, Ktv8v6, Rtv8v6, Ytv8v6, Fuv8v6, Muv8v6; +wire Tuv8v6, Avv8v6, Hvv8v6, Ovv8v6, Vvv8v6, Cwv8v6, Jwv8v6, Qwv8v6, Xwv8v6, Exv8v6; +wire Lxv8v6, Sxv8v6, Zxv8v6, Gyv8v6, Nyv8v6, Uyv8v6, Bzv8v6, Izv8v6, Pzv8v6, Wzv8v6; +wire D0w8v6, K0w8v6, R0w8v6, Y0w8v6, F1w8v6, M1w8v6, T1w8v6, A2w8v6, H2w8v6, O2w8v6; +wire V2w8v6, C3w8v6, J3w8v6, Q3w8v6, X3w8v6, E4w8v6, L4w8v6, S4w8v6, Z4w8v6, G5w8v6; +wire N5w8v6, U5w8v6, B6w8v6, I6w8v6, P6w8v6, W6w8v6, D7w8v6, K7w8v6, R7w8v6, Y7w8v6; +wire F8w8v6, M8w8v6, T8w8v6, A9w8v6, H9w8v6, O9w8v6, V9w8v6, Caw8v6, Jaw8v6, Qaw8v6; +wire Xaw8v6, Ebw8v6, Lbw8v6, Sbw8v6, Zbw8v6, Gcw8v6, Ncw8v6, Ucw8v6, Bdw8v6, Idw8v6; +wire Pdw8v6, Wdw8v6, Dew8v6, Kew8v6, Rew8v6, Yew8v6, Ffw8v6, Mfw8v6, Tfw8v6, Agw8v6; +wire Hgw8v6, Ogw8v6, Vgw8v6, Chw8v6, Jhw8v6, Qhw8v6, Xhw8v6, Eiw8v6, Liw8v6, Siw8v6; +wire Ziw8v6, Gjw8v6, Njw8v6, Ujw8v6, Bkw8v6, Ikw8v6, Pkw8v6, Wkw8v6, Dlw8v6, Klw8v6; +wire Rlw8v6, Ylw8v6, Fmw8v6, Mmw8v6, Tmw8v6, Anw8v6, Hnw8v6, Onw8v6, Vnw8v6, Cow8v6; +wire Jow8v6, Qow8v6, Xow8v6, Epw8v6, Lpw8v6, Spw8v6, Zpw8v6, Gqw8v6, Nqw8v6, Uqw8v6; +wire Brw8v6, Irw8v6, Prw8v6, Wrw8v6, Dsw8v6, Ksw8v6, Rsw8v6, Ysw8v6, Ftw8v6, Mtw8v6; +wire Ttw8v6, Auw8v6, Huw8v6, Ouw8v6, Vuw8v6, Cvw8v6, Jvw8v6, Qvw8v6, Xvw8v6, Eww8v6; +wire Lww8v6, Sww8v6, Zww8v6, Gxw8v6, Nxw8v6, Uxw8v6, Byw8v6, Iyw8v6, Pyw8v6, Wyw8v6; +wire Dzw8v6, Kzw8v6, Rzw8v6, Yzw8v6, F0x8v6, M0x8v6, T0x8v6, A1x8v6, H1x8v6, O1x8v6; +wire V1x8v6, C2x8v6, J2x8v6, Q2x8v6, X2x8v6, E3x8v6, L3x8v6, S3x8v6, Z3x8v6, G4x8v6; +wire N4x8v6, U4x8v6, B5x8v6, I5x8v6, P5x8v6, W5x8v6, D6x8v6, K6x8v6, R6x8v6, Y6x8v6; +wire F7x8v6, M7x8v6, T7x8v6, A8x8v6, H8x8v6, O8x8v6, V8x8v6, C9x8v6, J9x8v6, Q9x8v6; +wire X9x8v6, Eax8v6, Lax8v6, Sax8v6, Zax8v6, Gbx8v6, Nbx8v6, Ubx8v6, Bcx8v6, Icx8v6; +wire Pcx8v6, Wcx8v6, Ddx8v6, Kdx8v6, Rdx8v6, Ydx8v6, Fex8v6, Mex8v6, Tex8v6, Afx8v6; +wire Hfx8v6, Ofx8v6, Vfx8v6, Cgx8v6, Jgx8v6, Qgx8v6, Xgx8v6, Ehx8v6, Lhx8v6, Shx8v6; +wire Zhx8v6, Gix8v6, Nix8v6, Uix8v6, Bjx8v6, Ijx8v6, Pjx8v6, Wjx8v6, Dkx8v6, Kkx8v6; +wire Rkx8v6, Ykx8v6, Flx8v6, Mlx8v6, Tlx8v6, Amx8v6, Hmx8v6, Omx8v6, Vmx8v6, Cnx8v6; +wire Jnx8v6, Qnx8v6, Xnx8v6, Eox8v6, Lox8v6, Sox8v6, Zox8v6, Gpx8v6, Npx8v6, Upx8v6; +wire Bqx8v6, Iqx8v6, Pqx8v6, Wqx8v6, Drx8v6, Krx8v6, Rrx8v6, Yrx8v6, Fsx8v6, Msx8v6; +wire Tsx8v6, Atx8v6, Htx8v6, Otx8v6, Vtx8v6, Cux8v6, Jux8v6, Qux8v6, Xux8v6, Evx8v6; +wire Lvx8v6, Svx8v6, Zvx8v6, Gwx8v6, Nwx8v6, Uwx8v6, Bxx8v6, Ixx8v6, Pxx8v6, Wxx8v6; +wire Dyx8v6, Kyx8v6, Ryx8v6, Yyx8v6, Fzx8v6, Mzx8v6, Tzx8v6, A0y8v6, H0y8v6, O0y8v6; +wire V0y8v6, C1y8v6, J1y8v6, Q1y8v6, X1y8v6, E2y8v6, L2y8v6, S2y8v6, Z2y8v6, G3y8v6; +wire N3y8v6, U3y8v6, B4y8v6, I4y8v6, P4y8v6, W4y8v6, D5y8v6, K5y8v6, R5y8v6, Y5y8v6; +wire F6y8v6, M6y8v6, T6y8v6, A7y8v6, H7y8v6, O7y8v6, V7y8v6, C8y8v6, J8y8v6, Q8y8v6; +wire X8y8v6, E9y8v6, L9y8v6, S9y8v6, Z9y8v6, Gay8v6, Nay8v6, Uay8v6, Bby8v6, Iby8v6; +wire Pby8v6, Wby8v6, Dcy8v6, Kcy8v6, Rcy8v6, Ycy8v6, Fdy8v6, Mdy8v6, Tdy8v6, Aey8v6; +wire Hey8v6, Oey8v6, Vey8v6, Cfy8v6, Jfy8v6, Qfy8v6, Xfy8v6, Egy8v6, Lgy8v6, Sgy8v6; +wire Zgy8v6, Ghy8v6, Nhy8v6, Uhy8v6, Biy8v6, Iiy8v6, Piy8v6, Wiy8v6, Djy8v6, Kjy8v6; +wire Rjy8v6, Yjy8v6, Fky8v6, Mky8v6, Tky8v6, Aly8v6, Hly8v6, Oly8v6, Vly8v6, Cmy8v6; +wire Jmy8v6, Qmy8v6, Xmy8v6, Eny8v6, Lny8v6, Sny8v6, Zny8v6, Goy8v6, Noy8v6, Uoy8v6; +wire Bpy8v6, Ipy8v6, Ppy8v6, Wpy8v6, Dqy8v6, Kqy8v6, Rqy8v6, Yqy8v6, Fry8v6, Mry8v6; +wire Try8v6, Asy8v6, Hsy8v6, Osy8v6, Vsy8v6, Cty8v6, Jty8v6, Qty8v6, Xty8v6, Euy8v6; +wire Luy8v6, Suy8v6, Zuy8v6, Gvy8v6, Nvy8v6, Uvy8v6, Bwy8v6, Iwy8v6, Pwy8v6, Wwy8v6; +wire Dxy8v6, Kxy8v6, Rxy8v6, Yxy8v6, Fyy8v6, Myy8v6, Tyy8v6, Azy8v6, Hzy8v6, Ozy8v6; +wire Vzy8v6, C0z8v6, J0z8v6, Q0z8v6, X0z8v6, E1z8v6, L1z8v6, S1z8v6, Z1z8v6, G2z8v6; +wire N2z8v6, U2z8v6, B3z8v6, I3z8v6, P3z8v6, W3z8v6, D4z8v6, K4z8v6, R4z8v6, Y4z8v6; +wire F5z8v6, M5z8v6, T5z8v6, A6z8v6, H6z8v6, O6z8v6, V6z8v6, C7z8v6, J7z8v6, Q7z8v6; +wire X7z8v6, E8z8v6, L8z8v6, S8z8v6, Z8z8v6, G9z8v6, N9z8v6, U9z8v6, Baz8v6, Iaz8v6; +wire Paz8v6, Waz8v6, Dbz8v6, Kbz8v6, Rbz8v6, Ybz8v6, Fcz8v6, Mcz8v6, Tcz8v6, Adz8v6; +wire Hdz8v6, Odz8v6, Vdz8v6, Cez8v6, Jez8v6, Qez8v6, Xez8v6, Efz8v6, Lfz8v6, Sfz8v6; +wire Zfz8v6, Ggz8v6, Ngz8v6, Ugz8v6, Bhz8v6, Ihz8v6, Phz8v6, Whz8v6, Diz8v6, Kiz8v6; +wire Riz8v6, Yiz8v6, Fjz8v6, Mjz8v6, Tjz8v6, Akz8v6, Hkz8v6, Okz8v6, Vkz8v6, Clz8v6; +wire Jlz8v6, Qlz8v6, Xlz8v6, Emz8v6, Lmz8v6, Smz8v6, Zmz8v6, Gnz8v6, Nnz8v6, Unz8v6; +wire Boz8v6, Ioz8v6, Poz8v6, Woz8v6, Dpz8v6, Kpz8v6, Rpz8v6, Ypz8v6, Fqz8v6, Mqz8v6; +wire Tqz8v6, Arz8v6, Hrz8v6, Orz8v6, Vrz8v6, Csz8v6, Jsz8v6, Qsz8v6, Xsz8v6, Etz8v6; +wire Ltz8v6, Stz8v6, Ztz8v6, Guz8v6, Nuz8v6, Uuz8v6, Bvz8v6, Ivz8v6, Pvz8v6, Wvz8v6; +wire Dwz8v6, Kwz8v6, Rwz8v6, Ywz8v6, Fxz8v6, Mxz8v6, Txz8v6, Ayz8v6, Hyz8v6, Oyz8v6; +wire Vyz8v6, Czz8v6, Jzz8v6, Qzz8v6, Xzz8v6, E009v6, L009v6, S009v6, Z009v6, G109v6; +wire N109v6, U109v6, B209v6, I209v6, P209v6, W209v6, D309v6, K309v6, R309v6, Y309v6; +wire F409v6, M409v6, T409v6, A509v6, H509v6, O509v6, V509v6, C609v6, J609v6, Q609v6; +wire X609v6, E709v6, L709v6, S709v6, Z709v6, G809v6, N809v6, U809v6, B909v6, I909v6; +wire P909v6, W909v6, Da09v6, Ka09v6, Ra09v6, Ya09v6, Fb09v6, Mb09v6, Tb09v6, Ac09v6; +wire Hc09v6, Oc09v6, Vc09v6, Cd09v6, Jd09v6, Qd09v6, Xd09v6, Ee09v6, Le09v6, Se09v6; +wire Ze09v6, Gf09v6, Nf09v6, Uf09v6, Bg09v6, Ig09v6, Pg09v6, Cnvmv6, Jnvmv6, Qnvmv6; +wire Xnvmv6, Eovmv6, Lovmv6, Sovmv6, Zovmv6, Gpvmv6, Npvmv6, Upvmv6, Bqvmv6, Iqvmv6; +wire Pqvmv6, Wqvmv6, Drvmv6, Krvmv6, Rrvmv6, Yrvmv6, Fsvmv6, Msvmv6, Tsvmv6, Atvmv6; +wire Htvmv6, Otvmv6, Vtvmv6, Cuvmv6, Juvmv6, Quvmv6, Xuvmv6, Evvmv6, Lvvmv6, Svvmv6; +wire Zvvmv6, Gwvmv6, Nwvmv6, Uwvmv6, Bxvmv6, Ixvmv6, Pxvmv6, Wxvmv6, Dyvmv6, Kyvmv6; +wire Ryvmv6, Yyvmv6, Fzvmv6, Mzvmv6, Tzvmv6, A0wmv6, H0wmv6, O0wmv6, V0wmv6, C1wmv6; +wire J1wmv6, Q1wmv6, X1wmv6, E2wmv6, L2wmv6, S2wmv6, Z2wmv6, G3wmv6, N3wmv6, U3wmv6; +wire B4wmv6, I4wmv6, P4wmv6, W4wmv6, D5wmv6, K5wmv6, R5wmv6, Y5wmv6, F6wmv6, M6wmv6; +wire T6wmv6, A7wmv6, H7wmv6, O7wmv6, V7wmv6, C8wmv6, J8wmv6, Q8wmv6, X8wmv6, E9wmv6; +wire L9wmv6, S9wmv6, Z9wmv6, Gawmv6, Nawmv6, Uawmv6, Bbwmv6, Ibwmv6, Pbwmv6, Wbwmv6; +wire Dcwmv6, Kcwmv6, Rcwmv6, Ycwmv6, Fdwmv6, Mdwmv6, Tdwmv6, Aewmv6, Hewmv6, Oewmv6; +wire Vewmv6, Cfwmv6, Jfwmv6, Qfwmv6, Xfwmv6, Egwmv6, Lgwmv6, Sgwmv6, Zgwmv6, Ghwmv6; +wire Nhwmv6, Uhwmv6, Biwmv6, Iiwmv6, Piwmv6, Wiwmv6, Djwmv6, Kjwmv6, Rjwmv6, Yjwmv6; +wire Fkwmv6, Mkwmv6, Tkwmv6, Alwmv6, Hlwmv6, Olwmv6, Vlwmv6, Cmwmv6, Jmwmv6, Qmwmv6; +wire Xmwmv6, Enwmv6, Lnwmv6, Snwmv6, Znwmv6, Gowmv6, Nowmv6, Uowmv6, Bpwmv6, Ipwmv6; +wire Ppwmv6, Wpwmv6, Dqwmv6, Kqwmv6, Rqwmv6, Yqwmv6, Frwmv6, Mrwmv6, Trwmv6, Aswmv6; +wire Hswmv6, Oswmv6, Vswmv6, Ctwmv6, Jtwmv6, Qtwmv6, Xtwmv6, Euwmv6, Luwmv6, Suwmv6; +wire Zuwmv6, Gvwmv6, Nvwmv6, Uvwmv6, Bwwmv6, Iwwmv6, Pwwmv6, Wwwmv6, Dxwmv6, Kxwmv6; +wire Rxwmv6, Yxwmv6, Fywmv6, Mywmv6, Tywmv6, Azwmv6, Hzwmv6, Ozwmv6, Vzwmv6, C0xmv6; +wire J0xmv6, Q0xmv6, X0xmv6, E1xmv6, L1xmv6, S1xmv6, Z1xmv6, G2xmv6, N2xmv6, U2xmv6; +wire B3xmv6, I3xmv6, P3xmv6, W3xmv6, D4xmv6, K4xmv6, R4xmv6, Y4xmv6, F5xmv6, M5xmv6; +wire T5xmv6, A6xmv6, H6xmv6, O6xmv6, V6xmv6, C7xmv6, J7xmv6, Q7xmv6, X7xmv6, E8xmv6; +wire L8xmv6, S8xmv6, Z8xmv6, G9xmv6, N9xmv6, U9xmv6, Baxmv6, Iaxmv6, Paxmv6, Waxmv6; +wire Dbxmv6, Kbxmv6, Rbxmv6, Ybxmv6, Fcxmv6, Mcxmv6, Tcxmv6, Adxmv6, Hdxmv6, Odxmv6; +wire Vdxmv6, Cexmv6, Jexmv6, Qexmv6, Xexmv6, Efxmv6, Lfxmv6, Sfxmv6, Zfxmv6, Ggxmv6; +wire Ngxmv6, Ugxmv6, Bhxmv6, Ihxmv6, Phxmv6, Whxmv6, Dixmv6, Kixmv6, Rixmv6, Yixmv6; +wire Fjxmv6, Mjxmv6, Tjxmv6, Akxmv6, Hkxmv6, Okxmv6, Vkxmv6, Clxmv6, Jlxmv6, Qlxmv6; +wire Xlxmv6, Emxmv6, Lmxmv6, Smxmv6, Zmxmv6, Gnxmv6, Nnxmv6, Unxmv6, Boxmv6, Ioxmv6; +wire Poxmv6, Woxmv6, Dpxmv6, Kpxmv6, Rpxmv6, Ypxmv6, Fqxmv6, Mqxmv6, Tqxmv6, Arxmv6; +wire Hrxmv6, Orxmv6, Vrxmv6, Csxmv6, Jsxmv6, Qsxmv6, Xsxmv6, Etxmv6, Ltxmv6, Stxmv6; +wire Ztxmv6, Guxmv6, Nuxmv6, Uuxmv6, Bvxmv6, Ivxmv6, Pvxmv6, Wvxmv6, Dwxmv6, Kwxmv6; +wire Rwxmv6, Ywxmv6, Fxxmv6, Mxxmv6, Txxmv6, Ayxmv6, Hyxmv6, Oyxmv6, Vyxmv6, Czxmv6; +wire Jzxmv6, Qzxmv6, Xzxmv6, E0ymv6, L0ymv6, S0ymv6, Z0ymv6, G1ymv6, N1ymv6, U1ymv6; +wire B2ymv6, I2ymv6, P2ymv6, W2ymv6, D3ymv6, K3ymv6, R3ymv6, Y3ymv6, F4ymv6, M4ymv6; +wire T4ymv6, A5ymv6, H5ymv6, O5ymv6, V5ymv6, C6ymv6, J6ymv6, Q6ymv6, X6ymv6, E7ymv6; +wire L7ymv6, S7ymv6, Z7ymv6, G8ymv6, N8ymv6, U8ymv6, B9ymv6, I9ymv6, P9ymv6, W9ymv6; +wire Daymv6, Kaymv6, Raymv6, Yaymv6, Fbymv6, Mbymv6, Tbymv6, Acymv6, Hcymv6, Ocymv6; +wire Vcymv6, Cdymv6, Jdymv6, Qdymv6, Xdymv6, Eeymv6, Leymv6, Seymv6, Zeymv6, Gfymv6; +wire Nfymv6, Ufymv6, Bgymv6, Igymv6, Pgymv6, Wgymv6, Dhymv6, Khymv6, Rhymv6, Yhymv6; +wire Fiymv6, Miymv6, Tiymv6, Ajymv6, Hjymv6, Ojymv6, Vjymv6, Ckymv6, Jkymv6, Qkymv6; +wire Xkymv6, Elymv6, Llymv6, Slymv6, Zlymv6, Gmymv6, Nmymv6, Umymv6, Bnymv6, Inymv6; +wire Pnymv6, Wnymv6, Doymv6, Koymv6, Roymv6, Yoymv6, Fpymv6, Mpymv6, Tpymv6, Aqymv6; +wire Hqymv6, Oqymv6, Vqymv6, Crymv6, Jrymv6, Qrymv6, Xrymv6, Esymv6, Lsymv6, Ssymv6; +wire Zsymv6, Gtymv6, Ntymv6, Utymv6, Buymv6, Iuymv6, Puymv6, Wuymv6, Dvymv6, Kvymv6; +wire Rvymv6, Yvymv6, Fwymv6, Mwymv6, Twymv6, Axymv6, Hxymv6, Oxymv6, Vxymv6, Cyymv6; +wire Jyymv6, Qyymv6, Xyymv6, Ezymv6, Lzymv6, Szymv6, Zzymv6, G0zmv6, N0zmv6, U0zmv6; +wire B1zmv6, I1zmv6, P1zmv6, W1zmv6, D2zmv6, K2zmv6, R2zmv6, Y2zmv6, F3zmv6, M3zmv6; +wire T3zmv6, A4zmv6, H4zmv6, O4zmv6, V4zmv6, C5zmv6, J5zmv6, Q5zmv6, X5zmv6, E6zmv6; +wire L6zmv6, S6zmv6, Z6zmv6, G7zmv6, N7zmv6, U7zmv6, B8zmv6, I8zmv6, P8zmv6, W8zmv6; +wire D9zmv6, K9zmv6, R9zmv6, Y9zmv6, Fazmv6, Mazmv6, Tazmv6, Abzmv6, Hbzmv6, Obzmv6; +wire Vbzmv6, Cczmv6, Jczmv6, Qczmv6, Xczmv6, Edzmv6, Ldzmv6, Sdzmv6, Zdzmv6, Gezmv6; +wire Nezmv6, Uezmv6, Bfzmv6, Ifzmv6, Pfzmv6, Wfzmv6, Dgzmv6, Kgzmv6, Rgzmv6, Ygzmv6; +wire Fhzmv6, Mhzmv6, Thzmv6, Aizmv6, Hizmv6, Oizmv6, Vizmv6, Cjzmv6, Jjzmv6, Qjzmv6; +wire Xjzmv6, Ekzmv6, Lkzmv6, Skzmv6, Zkzmv6, Glzmv6, Nlzmv6, Ulzmv6, Bmzmv6, Imzmv6; +wire Pmzmv6, Wmzmv6, Dnzmv6, Knzmv6, Rnzmv6, Ynzmv6, Fozmv6, Mozmv6, Tozmv6, Apzmv6; +wire Hpzmv6, Opzmv6, Vpzmv6, Cqzmv6, Jqzmv6, Qqzmv6, Xqzmv6, Erzmv6, Lrzmv6, Srzmv6; +wire Zrzmv6, Gszmv6, Nszmv6, Uszmv6, Btzmv6, Itzmv6, Ptzmv6, Wtzmv6, Duzmv6, Kuzmv6; +wire Ruzmv6, Yuzmv6, Fvzmv6, Mvzmv6, Tvzmv6, Awzmv6, Hwzmv6, Owzmv6, Vwzmv6, Cxzmv6; +wire Jxzmv6, Qxzmv6, Xxzmv6, Eyzmv6, Lyzmv6, Syzmv6, Zyzmv6, Gzzmv6, Nzzmv6, Uzzmv6; +wire B00nv6, I00nv6, P00nv6, W00nv6, D10nv6, K10nv6, R10nv6, Y10nv6, F20nv6, M20nv6; +wire T20nv6, A30nv6, H30nv6, O30nv6, V30nv6, C40nv6, J40nv6, Q40nv6, X40nv6, E50nv6; +wire L50nv6, S50nv6, Z50nv6, G60nv6, N60nv6, U60nv6, B70nv6, I70nv6, P70nv6, W70nv6; +wire D80nv6, K80nv6, R80nv6, Y80nv6, F90nv6, M90nv6, T90nv6, Aa0nv6, Ha0nv6, Oa0nv6; +wire Va0nv6, Cb0nv6, Jb0nv6, Qb0nv6, Xb0nv6, Ec0nv6, Lc0nv6, Sc0nv6, Zc0nv6, Gd0nv6; +wire Nd0nv6, Ud0nv6, Be0nv6, Ie0nv6, Pe0nv6, We0nv6, Df0nv6, Kf0nv6, Rf0nv6, Yf0nv6; +wire Fg0nv6, Mg0nv6, Tg0nv6, Ah0nv6, Hh0nv6, Oh0nv6, Vh0nv6, Ci0nv6, Ji0nv6, Qi0nv6; +wire Xi0nv6, Ej0nv6, Lj0nv6, Sj0nv6, Zj0nv6, Gk0nv6, Nk0nv6, Uk0nv6, Bl0nv6, Il0nv6; +wire Pl0nv6, Wl0nv6, Dm0nv6, Km0nv6, Rm0nv6, Ym0nv6, Fn0nv6, Mn0nv6, Tn0nv6, Ao0nv6; +wire Ho0nv6, Oo0nv6, Vo0nv6, Cp0nv6, Jp0nv6, Qp0nv6, Xp0nv6, Eq0nv6, Lq0nv6, Sq0nv6; +wire Zq0nv6, Gr0nv6, Nr0nv6, Ur0nv6, Bs0nv6, Is0nv6, Ps0nv6, Ws0nv6, Dt0nv6, Kt0nv6; +wire Rt0nv6, Yt0nv6, Fu0nv6, Mu0nv6, Tu0nv6, Av0nv6, Hv0nv6, Ov0nv6, Vv0nv6, Cw0nv6; +wire Jw0nv6, Qw0nv6, Xw0nv6, Ex0nv6, Lx0nv6, Sx0nv6, Zx0nv6, Gy0nv6, Ny0nv6, Uy0nv6; +wire Bz0nv6, Iz0nv6, Pz0nv6, Wz0nv6, D01nv6, K01nv6, R01nv6, Y01nv6, F11nv6, M11nv6; +wire T11nv6, A21nv6, H21nv6, O21nv6, V21nv6, C31nv6, J31nv6, Q31nv6, X31nv6, E41nv6; +wire L41nv6, S41nv6, Z41nv6, G51nv6, N51nv6, U51nv6, B61nv6, I61nv6, P61nv6, W61nv6; +wire D71nv6, K71nv6, R71nv6, Y71nv6, F81nv6, M81nv6, T81nv6, A91nv6, H91nv6, O91nv6; +wire V91nv6, Ca1nv6, Ja1nv6, Qa1nv6, Xa1nv6, Eb1nv6, Lb1nv6, Sb1nv6, Zb1nv6, Gc1nv6; +wire Nc1nv6, Uc1nv6, Bd1nv6, Id1nv6, Pd1nv6, Wd1nv6, De1nv6, Ke1nv6, Re1nv6, Ye1nv6; +wire Ff1nv6, Mf1nv6, Tf1nv6, Ag1nv6, Hg1nv6, Og1nv6, Vg1nv6, Ch1nv6, Jh1nv6, Qh1nv6; +wire Xh1nv6, Ei1nv6, Li1nv6, Si1nv6, Zi1nv6, Gj1nv6, Nj1nv6, Uj1nv6, Bk1nv6, Ik1nv6; +wire Pk1nv6, Wk1nv6, Dl1nv6, Kl1nv6, Rl1nv6, Yl1nv6, Fm1nv6, Mm1nv6, Tm1nv6, An1nv6; +wire Hn1nv6, On1nv6, Vn1nv6, Co1nv6, Jo1nv6, Qo1nv6, Xo1nv6, Ep1nv6, Lp1nv6, Sp1nv6; +wire Zp1nv6, Gq1nv6, Nq1nv6, Uq1nv6, Br1nv6, Ir1nv6, Pr1nv6, Wr1nv6, Ds1nv6, Ks1nv6; +wire Rs1nv6, Ys1nv6, Ft1nv6, Mt1nv6, Tt1nv6, Au1nv6, Hu1nv6, Ou1nv6, Vu1nv6, Cv1nv6; +wire Jv1nv6, Qv1nv6, Xv1nv6, Ew1nv6, Lw1nv6, Sw1nv6, Zw1nv6, Gx1nv6, Nx1nv6, Ux1nv6; +wire By1nv6, Iy1nv6, Py1nv6, Wy1nv6, Dz1nv6, Kz1nv6, Rz1nv6, Yz1nv6, F02nv6, M02nv6; +wire T02nv6, A12nv6, H12nv6, O12nv6, V12nv6, C22nv6, J22nv6, Q22nv6, X22nv6, E32nv6; +wire L32nv6, S32nv6, Z32nv6, G42nv6, N42nv6, U42nv6, B52nv6, I52nv6, P52nv6, W52nv6; +wire D62nv6, K62nv6, R62nv6, Y62nv6, F72nv6, M72nv6, T72nv6, A82nv6, H82nv6, O82nv6; +wire V82nv6, C92nv6, J92nv6, Q92nv6, X92nv6, Ea2nv6, La2nv6, Sa2nv6, Za2nv6, Gb2nv6; +wire Nb2nv6, Ub2nv6, Bc2nv6, Ic2nv6, Pc2nv6, Wc2nv6, Dd2nv6, Kd2nv6, Rd2nv6, Yd2nv6; +wire Fe2nv6, Me2nv6, Te2nv6, Af2nv6, Hf2nv6, Of2nv6, Vf2nv6, Cg2nv6, Jg2nv6, Qg2nv6; +wire Xg2nv6, Eh2nv6, Lh2nv6, Sh2nv6, Zh2nv6, Gi2nv6, Ni2nv6, Ui2nv6, Bj2nv6, Ij2nv6; +wire Pj2nv6, Wj2nv6, Dk2nv6, Kk2nv6, Rk2nv6, Yk2nv6, Fl2nv6, Ml2nv6, Tl2nv6, Am2nv6; +wire Hm2nv6, Om2nv6, Vm2nv6, Cn2nv6, Jn2nv6, Qn2nv6, Xn2nv6, Eo2nv6, Lo2nv6, So2nv6; +wire Zo2nv6, Gp2nv6, Np2nv6, Up2nv6, Bq2nv6, Iq2nv6, Pq2nv6, Wq2nv6, Dr2nv6, Kr2nv6; +wire Rr2nv6, Yr2nv6, Fs2nv6, Ms2nv6, Ts2nv6, At2nv6, Ht2nv6, Ot2nv6, Vt2nv6, Cu2nv6; +wire Ju2nv6, Qu2nv6, Xu2nv6, Ev2nv6, Lv2nv6, Sv2nv6, Zv2nv6, Gw2nv6, Nw2nv6, Uw2nv6; +wire Bx2nv6, Ix2nv6, Px2nv6, Wx2nv6, Dy2nv6, Ky2nv6, Ry2nv6, Yy2nv6, Fz2nv6, Mz2nv6; +wire Tz2nv6, A03nv6, H03nv6, O03nv6, V03nv6, C13nv6, J13nv6, Q13nv6, X13nv6, E23nv6; +wire L23nv6, S23nv6, Z23nv6, G33nv6, N33nv6, U33nv6, B43nv6, I43nv6, P43nv6, W43nv6; +wire D53nv6, K53nv6, R53nv6, Y53nv6, F63nv6, M63nv6, T63nv6, A73nv6, H73nv6, O73nv6; +wire V73nv6, C83nv6, J83nv6, Q83nv6, X83nv6, E93nv6, L93nv6, S93nv6, Z93nv6, Ga3nv6; +wire Na3nv6, Ua3nv6, Bb3nv6, Ib3nv6, Pb3nv6, Wb3nv6, Dc3nv6, Kc3nv6, Rc3nv6, Yc3nv6; +wire Fd3nv6, Md3nv6, Td3nv6, Ae3nv6, He3nv6, Oe3nv6, Ve3nv6, Cf3nv6, Jf3nv6, Qf3nv6; +wire Xf3nv6, Eg3nv6, Lg3nv6, Sg3nv6, Zg3nv6, Gh3nv6, Nh3nv6, Uh3nv6, Bi3nv6, Ii3nv6; +wire Pi3nv6, Wi3nv6, Dj3nv6, Kj3nv6, Rj3nv6, Yj3nv6, Fk3nv6, Mk3nv6, Tk3nv6, Al3nv6; +wire Hl3nv6, Ol3nv6, Vl3nv6, Cm3nv6, Jm3nv6, Qm3nv6, Xm3nv6, En3nv6, Ln3nv6, Sn3nv6; +wire Zn3nv6, Go3nv6, No3nv6, Uo3nv6, Bp3nv6, Ip3nv6, Pp3nv6, Wp3nv6, Dq3nv6, Kq3nv6; +wire Rq3nv6, Yq3nv6, Fr3nv6, Mr3nv6, Tr3nv6, As3nv6, Hs3nv6, Os3nv6, Vs3nv6, Ct3nv6; +wire Jt3nv6, Qt3nv6, Xt3nv6, Eu3nv6, Lu3nv6, Su3nv6, Zu3nv6, Gv3nv6, Nv3nv6, Uv3nv6; +wire Bw3nv6, Iw3nv6, Pw3nv6, Ww3nv6, Dx3nv6, Kx3nv6, Rx3nv6, Yx3nv6, Fy3nv6, My3nv6; +wire Ty3nv6, Az3nv6, Hz3nv6, Oz3nv6, Vz3nv6, C04nv6, J04nv6, Q04nv6, X04nv6, E14nv6; +wire L14nv6, S14nv6, Z14nv6, G24nv6, N24nv6, U24nv6, B34nv6, I34nv6, P34nv6, W34nv6; +wire D44nv6, K44nv6, R44nv6, Y44nv6, F54nv6, M54nv6, T54nv6, A64nv6, H64nv6, O64nv6; +wire V64nv6, C74nv6, J74nv6, Q74nv6, X74nv6, E84nv6, L84nv6, S84nv6, Z84nv6, G94nv6; +wire N94nv6, U94nv6, Ba4nv6, Ia4nv6, Pa4nv6, Wa4nv6, Db4nv6, Kb4nv6, Rb4nv6, Yb4nv6; +wire Fc4nv6, Mc4nv6, Tc4nv6, Ad4nv6, Hd4nv6, Od4nv6, Vd4nv6, Ce4nv6, Je4nv6, Qe4nv6; +wire Xe4nv6, Ef4nv6, Lf4nv6, Sf4nv6, Zf4nv6, Gg4nv6, Ng4nv6, Ug4nv6, Bh4nv6, Ih4nv6; +wire Ph4nv6, Wh4nv6, Di4nv6, Ki4nv6, Ri4nv6, Yi4nv6, Fj4nv6, Mj4nv6, Tj4nv6, Ak4nv6; +wire Hk4nv6, Ok4nv6, Vk4nv6, Cl4nv6, Jl4nv6, Ql4nv6, Xl4nv6, Em4nv6, Lm4nv6, Sm4nv6; +wire Zm4nv6, Gn4nv6, Nn4nv6, Un4nv6, Bo4nv6, Io4nv6, Po4nv6, Wo4nv6, Dp4nv6, Kp4nv6; +wire Rp4nv6, Yp4nv6, Fq4nv6, Mq4nv6, Tq4nv6, Ar4nv6, Hr4nv6, Or4nv6, Vr4nv6, Cs4nv6; +wire Js4nv6, Qs4nv6, Xs4nv6, Et4nv6, Lt4nv6, St4nv6, Zt4nv6, Gu4nv6, Nu4nv6, Uu4nv6; +wire Bv4nv6, Iv4nv6, Pv4nv6, Wv4nv6, Dw4nv6, Kw4nv6, Rw4nv6, Yw4nv6, Fx4nv6, Mx4nv6; +wire Tx4nv6, Ay4nv6, Hy4nv6, Oy4nv6, Vy4nv6, Cz4nv6, Jz4nv6, Qz4nv6, Xz4nv6, E05nv6; +wire L05nv6, S05nv6, Z05nv6, G15nv6, N15nv6, U15nv6, B25nv6, I25nv6, P25nv6, W25nv6; +wire D35nv6, K35nv6, R35nv6, Y35nv6, F45nv6, M45nv6, T45nv6, A55nv6, H55nv6, O55nv6; +wire V55nv6, C65nv6, J65nv6, Q65nv6, X65nv6, E75nv6, L75nv6, S75nv6, Z75nv6, G85nv6; +wire N85nv6, U85nv6, B95nv6, I95nv6, P95nv6, W95nv6, Da5nv6, Ka5nv6, Ra5nv6, Ya5nv6; +wire Fb5nv6, Mb5nv6, Tb5nv6, Ac5nv6, Hc5nv6, Oc5nv6, Vc5nv6, Cd5nv6, Jd5nv6, Qd5nv6; +wire Xd5nv6, Ee5nv6, Le5nv6, Se5nv6, Ze5nv6, Gf5nv6, Nf5nv6, Uf5nv6, Bg5nv6, Ig5nv6; +wire Pg5nv6, Wg5nv6, Dh5nv6, Kh5nv6, Rh5nv6, Yh5nv6, Fi5nv6, Mi5nv6, Ti5nv6, Aj5nv6; +wire Hj5nv6, Oj5nv6, Vj5nv6, Ck5nv6, Jk5nv6, Qk5nv6, Xk5nv6, El5nv6, Ll5nv6, Sl5nv6; +wire Zl5nv6, Gm5nv6, Nm5nv6, Um5nv6, Bn5nv6, In5nv6, Pn5nv6, Wn5nv6, Do5nv6, Ko5nv6; +wire Ro5nv6, Yo5nv6, Fp5nv6, Mp5nv6, Tp5nv6, Aq5nv6, Hq5nv6, Oq5nv6, Vq5nv6, Cr5nv6; +wire Jr5nv6, Qr5nv6, Xr5nv6, Es5nv6, Ls5nv6, Ss5nv6, Zs5nv6, Gt5nv6, Nt5nv6, Ut5nv6; +wire Bu5nv6, Iu5nv6, Pu5nv6, Wu5nv6, Dv5nv6, Kv5nv6, Rv5nv6, Yv5nv6, Fw5nv6, Mw5nv6; +wire Tw5nv6, Ax5nv6, Hx5nv6, Ox5nv6, Vx5nv6, Cy5nv6, Jy5nv6, Qy5nv6, Xy5nv6, Ez5nv6; +wire Lz5nv6, Sz5nv6, Zz5nv6, G06nv6, N06nv6, U06nv6, B16nv6, I16nv6, P16nv6, W16nv6; +wire D26nv6, K26nv6, R26nv6, Y26nv6, F36nv6, M36nv6, T36nv6, A46nv6, H46nv6, O46nv6; +wire V46nv6, C56nv6, J56nv6, Q56nv6, X56nv6, E66nv6, L66nv6, S66nv6, Z66nv6, G76nv6; +wire N76nv6, U76nv6, B86nv6, I86nv6, P86nv6, W86nv6, D96nv6, K96nv6, R96nv6, Y96nv6; +wire Fa6nv6, Ma6nv6, Ta6nv6, Ab6nv6, Hb6nv6, Ob6nv6, Vb6nv6, Cc6nv6, Jc6nv6, Qc6nv6; +wire Xc6nv6, Ed6nv6, Ld6nv6, Sd6nv6, Zd6nv6, Ge6nv6, Ne6nv6, Ue6nv6, Bf6nv6, If6nv6; +wire Pf6nv6, Wf6nv6, Dg6nv6, Kg6nv6, Rg6nv6, Yg6nv6, Fh6nv6, Mh6nv6, Th6nv6, Ai6nv6; +wire Hi6nv6, Oi6nv6, Vi6nv6, Cj6nv6, Jj6nv6, Qj6nv6, Xj6nv6, Ek6nv6, Lk6nv6, Sk6nv6; +wire Zk6nv6, Gl6nv6, Nl6nv6, Ul6nv6, Bm6nv6, Im6nv6, Pm6nv6, Wm6nv6, Dn6nv6, Kn6nv6; +wire Rn6nv6, Yn6nv6, Fo6nv6, Mo6nv6, To6nv6, Ap6nv6, Hp6nv6, Op6nv6, Vp6nv6, Cq6nv6; +wire Jq6nv6, Qq6nv6, Xq6nv6, Er6nv6, Lr6nv6, Sr6nv6, Zr6nv6, Gs6nv6, Ns6nv6, Us6nv6; +wire Bt6nv6, It6nv6, Pt6nv6, Wt6nv6, Du6nv6, Ku6nv6, Ru6nv6, Yu6nv6, Fv6nv6, Mv6nv6; +wire Tv6nv6, Aw6nv6, Hw6nv6, Ow6nv6, Vw6nv6, Cx6nv6, Jx6nv6, Qx6nv6, Xx6nv6, Ey6nv6; +wire Ly6nv6, Sy6nv6, Zy6nv6, Gz6nv6, Nz6nv6, Uz6nv6, B07nv6, I07nv6, P07nv6, W07nv6; +wire D17nv6, K17nv6, R17nv6, Y17nv6, F27nv6, M27nv6, T27nv6, A37nv6, H37nv6, O37nv6; +wire V37nv6, C47nv6, J47nv6, Q47nv6, X47nv6, E57nv6, L57nv6, S57nv6, Z57nv6, G67nv6; +wire N67nv6, U67nv6, B77nv6, I77nv6, P77nv6, W77nv6, D87nv6, K87nv6, R87nv6, Y87nv6; +wire F97nv6, M97nv6, T97nv6, Aa7nv6, Ha7nv6, Oa7nv6, Va7nv6, Cb7nv6, Jb7nv6, Qb7nv6; +wire Xb7nv6, Ec7nv6, Lc7nv6, Sc7nv6, Zc7nv6, Gd7nv6, Nd7nv6, Ud7nv6, Be7nv6, Ie7nv6; +wire Pe7nv6, We7nv6, Df7nv6, Kf7nv6, Rf7nv6, Yf7nv6, Fg7nv6, Mg7nv6, Tg7nv6, Ah7nv6; +wire Hh7nv6, Oh7nv6, Vh7nv6, Ci7nv6, Ji7nv6, Qi7nv6, Xi7nv6, Ej7nv6, Lj7nv6, Sj7nv6; +wire Zj7nv6, Gk7nv6, Nk7nv6, Uk7nv6, Bl7nv6, Il7nv6, Pl7nv6, Wl7nv6, Dm7nv6, Km7nv6; +wire Rm7nv6, Ym7nv6, Fn7nv6, Mn7nv6, Tn7nv6, Ao7nv6, Ho7nv6, Oo7nv6, Vo7nv6, Cp7nv6; +wire Jp7nv6, Qp7nv6, Xp7nv6, Eq7nv6, Lq7nv6, Sq7nv6, Zq7nv6, Gr7nv6, Nr7nv6, Ur7nv6; +wire Bs7nv6, Is7nv6, Ps7nv6, Ws7nv6, Dt7nv6, Kt7nv6, Rt7nv6, Yt7nv6, Fu7nv6, Mu7nv6; +wire Tu7nv6, Av7nv6, Hv7nv6, Ov7nv6, Vv7nv6, Cw7nv6, Jw7nv6, Qw7nv6, Xw7nv6, Ex7nv6; +wire Lx7nv6, Sx7nv6, Zx7nv6, Gy7nv6, Ny7nv6, Uy7nv6, Bz7nv6, Iz7nv6, Pz7nv6, Wz7nv6; +wire D08nv6, K08nv6, R08nv6, Y08nv6, F18nv6, M18nv6, T18nv6, A28nv6, H28nv6, O28nv6; +wire V28nv6, C38nv6, J38nv6, Q38nv6, X38nv6, E48nv6, L48nv6, S48nv6, Z48nv6, G58nv6; +wire N58nv6, U58nv6, B68nv6, I68nv6, P68nv6, W68nv6, D78nv6, K78nv6, R78nv6, Y78nv6; +wire F88nv6, M88nv6, T88nv6, A98nv6, H98nv6, O98nv6, V98nv6, Ca8nv6, Ja8nv6, Qa8nv6; +wire Xa8nv6, Eb8nv6, Lb8nv6, Sb8nv6, Zb8nv6, Gc8nv6, Nc8nv6, Uc8nv6, Bd8nv6, Id8nv6; +wire Pd8nv6, Wd8nv6, De8nv6, Ke8nv6, Re8nv6, Ye8nv6, Ff8nv6, Mf8nv6, Tf8nv6, Ag8nv6; +wire Hg8nv6, Og8nv6, Vg8nv6, Ch8nv6, Jh8nv6, Qh8nv6, Xh8nv6, Ei8nv6, Li8nv6, Si8nv6; +wire Zi8nv6, Gj8nv6, Nj8nv6, Uj8nv6, Bk8nv6, Ik8nv6, Pk8nv6, Wk8nv6, Dl8nv6, Kl8nv6; +wire Rl8nv6, Yl8nv6, Fm8nv6, Mm8nv6, Tm8nv6, An8nv6, Hn8nv6, On8nv6, Vn8nv6, Co8nv6; +wire Jo8nv6, Qo8nv6, Xo8nv6, Ep8nv6, Lp8nv6, Sp8nv6, Zp8nv6, Gq8nv6, Nq8nv6, Uq8nv6; +wire Br8nv6, Ir8nv6, Pr8nv6, Wr8nv6, Ds8nv6, Ks8nv6, Rs8nv6, Ys8nv6, Ft8nv6, Mt8nv6; +wire Tt8nv6, Au8nv6, Hu8nv6, Ou8nv6, Vu8nv6, Cv8nv6, Jv8nv6, Qv8nv6, Xv8nv6, Ew8nv6; +wire Lw8nv6, Sw8nv6, Zw8nv6, Gx8nv6, Nx8nv6, Ux8nv6, By8nv6, Iy8nv6, Py8nv6, Wy8nv6; +wire Dz8nv6, Kz8nv6, Rz8nv6, Yz8nv6, F09nv6, M09nv6, T09nv6, A19nv6, H19nv6, O19nv6; +wire V19nv6, C29nv6, J29nv6, Q29nv6, X29nv6, E39nv6, L39nv6, S39nv6, Z39nv6, G49nv6; +wire N49nv6, U49nv6, B59nv6, I59nv6, P59nv6, W59nv6, D69nv6, K69nv6, R69nv6, Y69nv6; +wire F79nv6, M79nv6, T79nv6, A89nv6, H89nv6, O89nv6, V89nv6, C99nv6, J99nv6, Q99nv6; +wire X99nv6, Ea9nv6, La9nv6, Sa9nv6, Za9nv6, Gb9nv6, Nb9nv6, Ub9nv6, Bc9nv6, Ic9nv6; +wire Pc9nv6, Wc9nv6, Dd9nv6, Kd9nv6, Rd9nv6, Yd9nv6, Fe9nv6, Me9nv6, Te9nv6, Af9nv6; +wire Hf9nv6, Of9nv6, Vf9nv6, Cg9nv6, Jg9nv6, Qg9nv6, Xg9nv6, Eh9nv6, Lh9nv6, Sh9nv6; +wire Zh9nv6, Gi9nv6, Ni9nv6, Ui9nv6, Bj9nv6, Ij9nv6, Pj9nv6, Wj9nv6, Dk9nv6, Kk9nv6; +wire Rk9nv6, Yk9nv6, Fl9nv6, Ml9nv6, Tl9nv6, Am9nv6, Hm9nv6, Om9nv6, Vm9nv6, Cn9nv6; +wire Jn9nv6, Qn9nv6, Xn9nv6, Eo9nv6, Lo9nv6, So9nv6, Zo9nv6, Gp9nv6, Np9nv6, Up9nv6; +wire Bq9nv6, Iq9nv6, Pq9nv6, Wq9nv6, Dr9nv6, Kr9nv6, Rr9nv6, Yr9nv6, Fs9nv6, Ms9nv6; +wire Ts9nv6, At9nv6, Ht9nv6, Ot9nv6, Vt9nv6, Cu9nv6, Ju9nv6, Qu9nv6, Xu9nv6, Ev9nv6; +wire Lv9nv6, Sv9nv6, Zv9nv6, Gw9nv6, Nw9nv6, Uw9nv6, Bx9nv6, Ix9nv6, Px9nv6, Wx9nv6; +wire Dy9nv6, Ky9nv6, Ry9nv6, Yy9nv6, Fz9nv6, Mz9nv6, Tz9nv6, A0anv6, H0anv6, O0anv6; +wire V0anv6, C1anv6, J1anv6, Q1anv6, X1anv6, E2anv6, L2anv6, S2anv6, Z2anv6, G3anv6; +wire N3anv6, U3anv6, B4anv6, I4anv6, P4anv6, W4anv6, D5anv6, K5anv6, R5anv6, Y5anv6; +wire F6anv6, M6anv6, T6anv6, A7anv6, H7anv6, O7anv6, V7anv6, C8anv6, J8anv6, Q8anv6; +wire X8anv6, E9anv6, L9anv6, S9anv6, Z9anv6, Gaanv6, Naanv6, Uaanv6, Bbanv6, Ibanv6; +wire Pbanv6, Wbanv6, Dcanv6, Kcanv6, Rcanv6, Ycanv6, Fdanv6, Mdanv6, Tdanv6, Aeanv6; +wire Heanv6, Oeanv6, Veanv6, Cfanv6, Jfanv6, Qfanv6, Xfanv6, Eganv6, Lganv6, Sganv6; +wire Zganv6, Ghanv6, Nhanv6, Uhanv6, Bianv6, Iianv6, Pianv6, Wianv6, Djanv6, Kjanv6; +wire Rjanv6, Yjanv6, Fkanv6, Mkanv6, Tkanv6, Alanv6, Hlanv6, Olanv6, Vlanv6, Cmanv6; +wire Jmanv6, Qmanv6, Xmanv6, Enanv6, Lnanv6, Snanv6, Znanv6, Goanv6, Noanv6, Uoanv6; +wire Bpanv6, Ipanv6, Ppanv6, Wpanv6, Dqanv6, Kqanv6, Rqanv6, Yqanv6, Franv6, Mranv6; +wire Tranv6, Asanv6, Hsanv6, Osanv6, Vsanv6, Ctanv6, Jtanv6, Qtanv6, Xtanv6, Euanv6; +wire Luanv6, Suanv6, Zuanv6, Gvanv6, Nvanv6, Uvanv6, Bwanv6, Iwanv6, Pwanv6, Wwanv6; +wire Dxanv6, Kxanv6, Rxanv6, Yxanv6, Fyanv6, Myanv6, Tyanv6, Azanv6, Hzanv6, Ozanv6; +wire Vzanv6, C0bnv6, J0bnv6, Q0bnv6, X0bnv6, E1bnv6, L1bnv6, S1bnv6, Z1bnv6, G2bnv6; +wire N2bnv6, U2bnv6, B3bnv6, I3bnv6, P3bnv6, W3bnv6, D4bnv6, K4bnv6, R4bnv6, Y4bnv6; +wire F5bnv6, M5bnv6, T5bnv6, A6bnv6, H6bnv6, O6bnv6, V6bnv6, C7bnv6, J7bnv6, Q7bnv6; +wire X7bnv6, E8bnv6, L8bnv6, S8bnv6, Z8bnv6, G9bnv6, N9bnv6, U9bnv6, Babnv6, Iabnv6; +wire Pabnv6, Wabnv6, Dbbnv6, Kbbnv6, Rbbnv6, Ybbnv6, Fcbnv6, Mcbnv6, Tcbnv6, Adbnv6; +wire Hdbnv6, Odbnv6, Vdbnv6, Cebnv6, Jebnv6, Qebnv6, Xebnv6, Efbnv6, Lfbnv6, Sfbnv6; +wire Zfbnv6, Ggbnv6, Ngbnv6, Ugbnv6, Bhbnv6, Ihbnv6, Phbnv6, Whbnv6, Dibnv6, Kibnv6; +wire Ribnv6, Yibnv6, Fjbnv6, Mjbnv6, Tjbnv6, Akbnv6, Hkbnv6, Okbnv6, Vkbnv6, Clbnv6; +wire Jlbnv6, Qlbnv6, Xlbnv6, Embnv6, Lmbnv6, Smbnv6, Zmbnv6, Gnbnv6, Nnbnv6, Unbnv6; +wire Bobnv6, Iobnv6, Pobnv6, Wobnv6, Dpbnv6, Kpbnv6, Rpbnv6, Ypbnv6, Fqbnv6, Mqbnv6; +wire Tqbnv6, Arbnv6, Hrbnv6, Orbnv6, Vrbnv6, Csbnv6, Jsbnv6, Qsbnv6, Xsbnv6, Etbnv6; +wire Ltbnv6, Stbnv6, Ztbnv6, Gubnv6, Nubnv6, Uubnv6, Bvbnv6, Ivbnv6, Pvbnv6, Wvbnv6; +wire Dwbnv6, Kwbnv6, Rwbnv6, Ywbnv6, Fxbnv6, Mxbnv6, Txbnv6, Aybnv6, Hybnv6, Oybnv6; +wire Vybnv6, Czbnv6, Jzbnv6, Qzbnv6, Xzbnv6, E0cnv6, L0cnv6, S0cnv6, Z0cnv6, G1cnv6; +wire N1cnv6, U1cnv6, B2cnv6, I2cnv6, P2cnv6, W2cnv6, D3cnv6, K3cnv6, R3cnv6, Y3cnv6; +wire F4cnv6, M4cnv6, T4cnv6, A5cnv6, H5cnv6, O5cnv6, V5cnv6, C6cnv6, J6cnv6, Q6cnv6; +wire X6cnv6, E7cnv6, L7cnv6, S7cnv6, Z7cnv6, G8cnv6, N8cnv6, U8cnv6, B9cnv6, I9cnv6; +wire P9cnv6, W9cnv6, Dacnv6, Kacnv6, Racnv6, Yacnv6, Fbcnv6, Mbcnv6, Tbcnv6, Accnv6; +wire Hccnv6, Occnv6, Vccnv6, Cdcnv6, Jdcnv6, Qdcnv6, Xdcnv6, Eecnv6, Lecnv6, Secnv6; +wire Zecnv6, Gfcnv6, Nfcnv6, Ufcnv6, Bgcnv6, Igcnv6, Pgcnv6, Wgcnv6, Dhcnv6, Khcnv6; +wire Rhcnv6, Yhcnv6, Ficnv6, Micnv6, Ticnv6, Ajcnv6, Hjcnv6, Ojcnv6, Vjcnv6, Ckcnv6; +wire Jkcnv6, Qkcnv6, Xkcnv6, Elcnv6, Llcnv6, Slcnv6, Zlcnv6, Gmcnv6, Nmcnv6, Umcnv6; +wire Bncnv6, Incnv6, Pncnv6, Wncnv6, Docnv6, Kocnv6, Rocnv6, Yocnv6, Fpcnv6, Mpcnv6; +wire Tpcnv6, Aqcnv6, Hqcnv6, Oqcnv6, Vqcnv6, Crcnv6, Jrcnv6, Qrcnv6, Xrcnv6, Escnv6; +wire Lscnv6, Sscnv6, Zscnv6, Gtcnv6, Ntcnv6, Utcnv6, Bucnv6, Iucnv6, Pucnv6, Wucnv6; +wire Dvcnv6, Kvcnv6, Rvcnv6, Yvcnv6, Fwcnv6, Mwcnv6, Twcnv6, Axcnv6, Hxcnv6, Oxcnv6; +wire Vxcnv6, Cycnv6, Jycnv6, Qycnv6, Xycnv6, Ezcnv6, Lzcnv6, Szcnv6, Zzcnv6, G0dnv6; +wire N0dnv6, U0dnv6, B1dnv6, I1dnv6, P1dnv6, W1dnv6, D2dnv6, K2dnv6, R2dnv6, Y2dnv6; +wire F3dnv6, M3dnv6, T3dnv6, A4dnv6, H4dnv6, O4dnv6, V4dnv6, C5dnv6, J5dnv6, Q5dnv6; +wire X5dnv6, E6dnv6, L6dnv6, S6dnv6, Z6dnv6, G7dnv6, N7dnv6, U7dnv6, B8dnv6, I8dnv6; +wire P8dnv6, W8dnv6, D9dnv6, K9dnv6, R9dnv6, Y9dnv6, Fadnv6, Madnv6, Tadnv6, Abdnv6; +wire Hbdnv6, Obdnv6, Vbdnv6, Ccdnv6, Jcdnv6, Qcdnv6, Xcdnv6, Eddnv6, Lddnv6, Sddnv6; +wire Zddnv6, Gednv6, Nednv6, Uednv6, Bfdnv6, Ifdnv6, Pfdnv6, Wfdnv6, Dgdnv6, Kgdnv6; +wire Rgdnv6, Ygdnv6, Fhdnv6, Mhdnv6, Thdnv6, Aidnv6, Hidnv6, Oidnv6, Vidnv6, Cjdnv6; +wire Jjdnv6, Qjdnv6, Xjdnv6, Ekdnv6, Lkdnv6, Skdnv6, Zkdnv6, Gldnv6, Nldnv6, Uldnv6; +wire Bmdnv6, Imdnv6, Pmdnv6, Wmdnv6, Dndnv6, Kndnv6, Rndnv6, Yndnv6, Fodnv6, Modnv6; +wire Todnv6, Apdnv6, Hpdnv6, Opdnv6, Vpdnv6, Cqdnv6, Jqdnv6, Qqdnv6, Xqdnv6, Erdnv6; +wire Lrdnv6, Srdnv6, Zrdnv6, Gsdnv6, Nsdnv6, Usdnv6, Btdnv6, Itdnv6, Ptdnv6, Wtdnv6; +wire Dudnv6, Kudnv6, Rudnv6, Yudnv6, Fvdnv6, Mvdnv6, Tvdnv6, Awdnv6, Hwdnv6, Owdnv6; +wire Vwdnv6, Cxdnv6, Jxdnv6, Qxdnv6, Xxdnv6, Eydnv6, Lydnv6, Sydnv6, Zydnv6, Gzdnv6; +wire Nzdnv6, Uzdnv6, B0env6, I0env6, P0env6, W0env6, D1env6, K1env6, R1env6, Y1env6; +wire F2env6, M2env6, T2env6, A3env6, H3env6, O3env6, V3env6, C4env6, J4env6, Q4env6; +wire X4env6, E5env6, L5env6, S5env6, Z5env6, G6env6, N6env6, U6env6, B7env6, I7env6; +wire P7env6, W7env6, D8env6, K8env6, R8env6, Y8env6, F9env6, M9env6, T9env6, Aaenv6; +wire Haenv6, Oaenv6, Vaenv6, Cbenv6, Jbenv6, Qbenv6, Xbenv6, Ecenv6, Lcenv6, Scenv6; +wire Zcenv6, Gdenv6, Ndenv6, Udenv6, Beenv6, Ieenv6, Peenv6, Weenv6, Dfenv6, Kfenv6; +wire Rfenv6, Yfenv6, Fgenv6, Mgenv6, Tgenv6, Ahenv6, Hhenv6, Ohenv6, Vhenv6, Cienv6; +wire Jienv6, Qienv6, Xienv6, Ejenv6, Ljenv6, Sjenv6, Zjenv6, Gkenv6, Nkenv6, Ukenv6; +wire Blenv6, Ilenv6, Plenv6, Wlenv6, Dmenv6, Kmenv6, Rmenv6, Ymenv6, Fnenv6, Mnenv6; +wire Tnenv6, Aoenv6, Hoenv6, Ooenv6, Voenv6, Cpenv6, Jpenv6, Qpenv6, Xpenv6, Eqenv6; +wire Lqenv6, Sqenv6, Zqenv6, Grenv6, Nrenv6, Urenv6, Bsenv6, Isenv6, Psenv6, Wsenv6; +wire Dtenv6, Ktenv6, Rtenv6, Ytenv6, Fuenv6, Muenv6, Tuenv6, Avenv6, Hvenv6, Ovenv6; +wire Vvenv6, Cwenv6, Jwenv6, Qwenv6, Xwenv6, Exenv6, Lxenv6, Sxenv6, Zxenv6, Gyenv6; +wire Nyenv6, Uyenv6, Bzenv6, Izenv6, Pzenv6, Wzenv6, D0fnv6, K0fnv6, R0fnv6, Y0fnv6; +wire F1fnv6, M1fnv6, T1fnv6, A2fnv6, H2fnv6, O2fnv6, V2fnv6, C3fnv6, J3fnv6, Q3fnv6; +wire X3fnv6, E4fnv6, L4fnv6, S4fnv6, Z4fnv6, G5fnv6, N5fnv6, U5fnv6, B6fnv6, I6fnv6; +wire P6fnv6, W6fnv6, D7fnv6, K7fnv6, R7fnv6, Y7fnv6, F8fnv6, M8fnv6, T8fnv6, A9fnv6; +wire H9fnv6, O9fnv6, V9fnv6, Cafnv6, Jafnv6, Qafnv6, Xafnv6, Ebfnv6, Lbfnv6, Sbfnv6; +wire Zbfnv6, Gcfnv6, Ncfnv6, Ucfnv6, Bdfnv6, Idfnv6, Pdfnv6, Wdfnv6, Defnv6, Kefnv6; +wire Refnv6, Yefnv6, Fffnv6, Mffnv6, Tffnv6, Agfnv6, Hgfnv6, Ogfnv6, Vgfnv6, Chfnv6; +wire Jhfnv6, Qhfnv6, Xhfnv6, Eifnv6, Lifnv6, Sifnv6, Zifnv6, Gjfnv6, Njfnv6, Ujfnv6; +wire Bkfnv6, Ikfnv6, Pkfnv6, Wkfnv6, Dlfnv6, Klfnv6, Rlfnv6, Ylfnv6, Fmfnv6, Mmfnv6; +wire Tmfnv6, Anfnv6, Hnfnv6, Onfnv6, Vnfnv6, Cofnv6, Jofnv6, Qofnv6, Xofnv6, Epfnv6; +wire Lpfnv6, Spfnv6, Zpfnv6, Gqfnv6, Nqfnv6, Uqfnv6, Brfnv6, Irfnv6, Prfnv6, Wrfnv6; +wire Dsfnv6, Ksfnv6, Rsfnv6, Ysfnv6, Ftfnv6, Mtfnv6, Ttfnv6, Aufnv6, Hufnv6, Oufnv6; +wire Vufnv6, Cvfnv6, Jvfnv6, Qvfnv6, Xvfnv6, Ewfnv6, Lwfnv6, Swfnv6, Zwfnv6, Gxfnv6; +wire Nxfnv6, Uxfnv6, Byfnv6, Iyfnv6, Pyfnv6, Wyfnv6, Dzfnv6, Kzfnv6, Rzfnv6, Yzfnv6; +wire F0gnv6, M0gnv6, T0gnv6, A1gnv6, H1gnv6, O1gnv6, V1gnv6, C2gnv6, J2gnv6, Q2gnv6; +wire X2gnv6, E3gnv6, L3gnv6, S3gnv6, Z3gnv6, G4gnv6, N4gnv6, U4gnv6, B5gnv6, I5gnv6; +wire P5gnv6, W5gnv6, D6gnv6, K6gnv6, R6gnv6, Y6gnv6, F7gnv6, M7gnv6, T7gnv6, A8gnv6; +wire H8gnv6, O8gnv6, V8gnv6, C9gnv6, J9gnv6, Q9gnv6, X9gnv6, Eagnv6, Lagnv6, Sagnv6; +wire Zagnv6, Gbgnv6, Nbgnv6, Ubgnv6, Bcgnv6, Icgnv6, Pcgnv6, Wcgnv6, Ddgnv6, Kdgnv6; +wire Rdgnv6, Ydgnv6, Fegnv6, Megnv6, Tegnv6, Afgnv6, Hfgnv6, Ofgnv6, Vfgnv6, Cggnv6; +wire Jggnv6, Qggnv6, Xggnv6, Ehgnv6, Lhgnv6, Shgnv6, Zhgnv6, Gignv6, Nignv6, Uignv6; +wire Bjgnv6, Ijgnv6, Pjgnv6, Wjgnv6, Dkgnv6, Kkgnv6, Rkgnv6, Ykgnv6, Flgnv6, Mlgnv6; +wire Tlgnv6, Amgnv6, Hmgnv6, Omgnv6, Vmgnv6, Cngnv6, Jngnv6, Qngnv6, Xngnv6, Eognv6; +wire Lognv6, Sognv6, Zognv6, Gpgnv6, Npgnv6, Upgnv6, Bqgnv6, Iqgnv6, Pqgnv6, Wqgnv6; +wire Drgnv6, Krgnv6, Rrgnv6, Yrgnv6, Fsgnv6, Msgnv6, Tsgnv6, Atgnv6, Htgnv6, Otgnv6; +wire Vtgnv6, Cugnv6, Jugnv6, Qugnv6, Xugnv6, Evgnv6, Lvgnv6, Svgnv6, Zvgnv6, Gwgnv6; +wire Nwgnv6, Uwgnv6, Bxgnv6, Ixgnv6, Pxgnv6, Wxgnv6, Dygnv6, Kygnv6, Rygnv6, Yygnv6; +wire Fzgnv6, Mzgnv6, Tzgnv6, A0hnv6, H0hnv6, O0hnv6, V0hnv6, C1hnv6, J1hnv6, Q1hnv6; +wire X1hnv6, E2hnv6, L2hnv6, S2hnv6, Z2hnv6, G3hnv6, N3hnv6, U3hnv6, B4hnv6, I4hnv6; +wire P4hnv6, W4hnv6, D5hnv6, K5hnv6, R5hnv6, Y5hnv6, F6hnv6, M6hnv6, T6hnv6, A7hnv6; +wire H7hnv6, O7hnv6, V7hnv6, C8hnv6, J8hnv6, Q8hnv6, X8hnv6, E9hnv6, L9hnv6, S9hnv6; +wire Z9hnv6, Gahnv6, Nahnv6, Uahnv6, Bbhnv6, Ibhnv6, Pbhnv6, Wbhnv6, Dchnv6, Kchnv6; +wire Rchnv6, Ychnv6, Fdhnv6, Mdhnv6, Tdhnv6, Aehnv6, Hehnv6, Oehnv6, Vehnv6, Cfhnv6; +wire Jfhnv6, Qfhnv6, Xfhnv6, Eghnv6, Lghnv6, Sghnv6, Zghnv6, Ghhnv6, Nhhnv6, Uhhnv6; +wire Bihnv6, Iihnv6, Pihnv6, Wihnv6, Djhnv6, Kjhnv6, Rjhnv6, Yjhnv6, Fkhnv6, Mkhnv6; +wire Tkhnv6, Alhnv6, Hlhnv6, Olhnv6, Vlhnv6, Cmhnv6, Jmhnv6, Qmhnv6, Xmhnv6, Enhnv6; +wire Lnhnv6, Snhnv6, Znhnv6, Gohnv6, Nohnv6, Uohnv6, Bphnv6, Iphnv6, Pphnv6, Wphnv6; +wire Dqhnv6, Kqhnv6, Rqhnv6, Yqhnv6, Frhnv6, Mrhnv6, Trhnv6, Ashnv6, Hshnv6, Oshnv6; +wire Vshnv6, Cthnv6, Jthnv6, Qthnv6, Xthnv6, Euhnv6, Luhnv6, Suhnv6, Zuhnv6, Gvhnv6; +wire Nvhnv6, Uvhnv6, Bwhnv6, Iwhnv6, Pwhnv6, Wwhnv6, Dxhnv6, Kxhnv6, Rxhnv6, Yxhnv6; +wire Fyhnv6, Myhnv6, Tyhnv6, Azhnv6, Hzhnv6, Ozhnv6, Vzhnv6, C0inv6, J0inv6, Q0inv6; +wire X0inv6, E1inv6, L1inv6, S1inv6, Z1inv6, G2inv6, N2inv6, U2inv6, B3inv6, I3inv6; +wire P3inv6, W3inv6, D4inv6, K4inv6, R4inv6, Y4inv6, F5inv6, M5inv6, T5inv6, A6inv6; +wire H6inv6, O6inv6, V6inv6, C7inv6, J7inv6, Q7inv6, X7inv6, E8inv6, L8inv6, S8inv6; +wire Z8inv6, G9inv6, N9inv6, U9inv6, Bainv6, Iainv6, Painv6, Wainv6, Dbinv6, Kbinv6; +wire Rbinv6, Ybinv6, Fcinv6, Mcinv6, Tcinv6, Adinv6, Hdinv6, Odinv6, Vdinv6, Ceinv6; +wire Jeinv6, Qeinv6, Xeinv6, Efinv6, Lfinv6, Sfinv6, Zfinv6, Gginv6, Nginv6, Uginv6; +wire Bhinv6, Ihinv6, Phinv6, Whinv6, Diinv6, Kiinv6, Riinv6, Yiinv6, Fjinv6, Mjinv6; +wire Tjinv6, Akinv6, Hkinv6, Okinv6, Vkinv6, Clinv6, Jlinv6, Qlinv6, Xlinv6, Eminv6; +wire Lminv6, Sminv6, Zminv6, Gninv6, Nninv6, Uninv6, Boinv6, Ioinv6, Poinv6, Woinv6; +wire Dpinv6, Kpinv6, Rpinv6, Ypinv6, Fqinv6, Mqinv6, Tqinv6, Arinv6, Hrinv6, Orinv6; +wire Vrinv6, Csinv6, Jsinv6, Qsinv6, Xsinv6, Etinv6, Ltinv6, Stinv6, Ztinv6, Guinv6; +wire Nuinv6, Uuinv6, Bvinv6, Ivinv6, Pvinv6, Wvinv6, Dwinv6, Kwinv6, Rwinv6, Ywinv6; +wire Fxinv6, Mxinv6, Txinv6, Ayinv6, Hyinv6, Oyinv6, Vyinv6, Czinv6, Jzinv6, Qzinv6; +wire Xzinv6, E0jnv6, L0jnv6, S0jnv6, Z0jnv6, G1jnv6, N1jnv6, U1jnv6, B2jnv6, I2jnv6; +wire P2jnv6, W2jnv6, D3jnv6, K3jnv6, R3jnv6, Y3jnv6, F4jnv6, M4jnv6, T4jnv6, A5jnv6; +wire H5jnv6, O5jnv6, V5jnv6, C6jnv6, J6jnv6, Q6jnv6, X6jnv6, E7jnv6, L7jnv6, S7jnv6; +wire Z7jnv6, G8jnv6, N8jnv6, U8jnv6, B9jnv6, I9jnv6, P9jnv6, W9jnv6, Dajnv6, Kajnv6; +wire Rajnv6, Yajnv6, Fbjnv6, Mbjnv6, Tbjnv6, Acjnv6, Hcjnv6, Ocjnv6, Vcjnv6, Cdjnv6; +wire Jdjnv6, Qdjnv6, Xdjnv6, Eejnv6, Lejnv6, Sejnv6, Zejnv6, Gfjnv6, Nfjnv6, Ufjnv6; +wire Bgjnv6, Igjnv6, Pgjnv6, Wgjnv6, Dhjnv6, Khjnv6, Rhjnv6, Yhjnv6, Fijnv6, Mijnv6; +wire Tijnv6, Ajjnv6, Hjjnv6, Ojjnv6, Vjjnv6, Ckjnv6, Jkjnv6, Qkjnv6, Xkjnv6, Eljnv6; +wire Lljnv6, Sljnv6, Zljnv6, Gmjnv6, Nmjnv6, Umjnv6, Bnjnv6, Injnv6, Pnjnv6, Wnjnv6; +wire Dojnv6, Kojnv6, Rojnv6, Yojnv6, Fpjnv6, Mpjnv6, Tpjnv6, Aqjnv6, Hqjnv6, Oqjnv6; +wire Vqjnv6, Crjnv6, Jrjnv6, Qrjnv6, Xrjnv6, Esjnv6, Lsjnv6, Ssjnv6, Zsjnv6, Gtjnv6; +wire Ntjnv6, Utjnv6, Bujnv6, Iujnv6, Pujnv6, Wujnv6, Dvjnv6, Kvjnv6, Rvjnv6, Yvjnv6; +wire Fwjnv6, Mwjnv6, Twjnv6, Axjnv6, Hxjnv6, Oxjnv6, Vxjnv6, Cyjnv6, Jyjnv6, Qyjnv6; +wire Xyjnv6, Ezjnv6, Lzjnv6, Szjnv6, Zzjnv6, G0knv6, N0knv6, U0knv6, B1knv6, I1knv6; +wire P1knv6, W1knv6, D2knv6, K2knv6, R2knv6, Y2knv6, F3knv6, M3knv6, T3knv6, A4knv6; +wire H4knv6, O4knv6, V4knv6, C5knv6, J5knv6, Q5knv6, X5knv6, E6knv6, L6knv6, S6knv6; +wire Z6knv6, G7knv6, N7knv6, U7knv6, B8knv6, I8knv6, P8knv6, W8knv6, D9knv6, K9knv6; +wire R9knv6, Y9knv6, Faknv6, Maknv6, Taknv6, Abknv6, Hbknv6, Obknv6, Vbknv6, Ccknv6; +wire Jcknv6, Qcknv6, Xcknv6, Edknv6, Ldknv6, Sdknv6, Zdknv6, Geknv6, Neknv6, Ueknv6; +wire Bfknv6, Ifknv6, Pfknv6, Wfknv6, Dgknv6, Kgknv6, Rgknv6, Ygknv6, Fhknv6, Mhknv6; +wire Thknv6, Aiknv6, Hiknv6, Oiknv6, Viknv6, Cjknv6, Jjknv6, Qjknv6, Xjknv6, Ekknv6; +wire Lkknv6, Skknv6, Zkknv6, Glknv6, Nlknv6, Ulknv6, Bmknv6, Imknv6, Pmknv6, Wmknv6; +wire Dnknv6, Knknv6, Rnknv6, Ynknv6, Foknv6, Moknv6, Toknv6, Apknv6, Hpknv6, Opknv6; +wire Vpknv6, Cqknv6, Jqknv6, Qqknv6, Xqknv6, Erknv6, Lrknv6, Srknv6, Zrknv6, Gsknv6; +wire Nsknv6, Usknv6, Btknv6, Itknv6, Ptknv6, Wtknv6, Duknv6, Kuknv6, Ruknv6, Yuknv6; +wire Fvknv6, Mvknv6, Tvknv6, Awknv6, Hwknv6, Owknv6, Vwknv6, Cxknv6, Jxknv6, Qxknv6; +wire Xxknv6, Eyknv6, Lyknv6, Syknv6, Zyknv6, Gzknv6, Nzknv6, Uzknv6, B0lnv6, I0lnv6; +wire P0lnv6, W0lnv6, D1lnv6, K1lnv6, R1lnv6, Y1lnv6, F2lnv6, M2lnv6, T2lnv6, A3lnv6; +wire H3lnv6, O3lnv6, V3lnv6, C4lnv6, J4lnv6, Q4lnv6, X4lnv6, E5lnv6, L5lnv6, S5lnv6; +wire Z5lnv6, G6lnv6, N6lnv6, U6lnv6, B7lnv6, I7lnv6, P7lnv6, W7lnv6, D8lnv6, K8lnv6; +wire R8lnv6, Y8lnv6, F9lnv6, M9lnv6, T9lnv6, Aalnv6, Halnv6, Oalnv6, Valnv6, Cblnv6; +wire Jblnv6, Qblnv6, Xblnv6, Eclnv6, Lclnv6, Sclnv6, Zclnv6, Gdlnv6, Ndlnv6, Udlnv6; +wire Belnv6, Ielnv6, Pelnv6, Welnv6, Dflnv6, Kflnv6, Rflnv6, Yflnv6, Fglnv6, Mglnv6; +wire Tglnv6, Ahlnv6, Hhlnv6, Ohlnv6, Vhlnv6, Cilnv6, Jilnv6, Qilnv6, Xilnv6, Ejlnv6; +wire Ljlnv6, Sjlnv6, Zjlnv6, Gklnv6, Nklnv6, Uklnv6, Bllnv6, Illnv6, Pllnv6, Wllnv6; +wire Dmlnv6, Kmlnv6, Rmlnv6, Ymlnv6, Fnlnv6, Mnlnv6, Tnlnv6, Aolnv6, Holnv6, Oolnv6; +wire Volnv6, Cplnv6, Jplnv6, Qplnv6, Xplnv6, Eqlnv6, Lqlnv6, Sqlnv6, Zqlnv6, Grlnv6; +wire Nrlnv6, Urlnv6, Bslnv6, Islnv6, Pslnv6, Wslnv6, Dtlnv6, Ktlnv6, Rtlnv6, Ytlnv6; +wire Fulnv6, Mulnv6, Tulnv6, Avlnv6, Hvlnv6, Ovlnv6, Vvlnv6, Cwlnv6, Jwlnv6, Qwlnv6; +wire Xwlnv6, Exlnv6, Lxlnv6, Sxlnv6, Zxlnv6, Gylnv6, Nylnv6, Uylnv6, Bzlnv6, Izlnv6; +wire Pzlnv6, Wzlnv6, D0mnv6, K0mnv6, R0mnv6, Y0mnv6, F1mnv6, M1mnv6, T1mnv6, A2mnv6; +wire H2mnv6, O2mnv6, V2mnv6, C3mnv6, J3mnv6, Q3mnv6, X3mnv6, E4mnv6, L4mnv6, S4mnv6; +wire Z4mnv6, G5mnv6, N5mnv6, U5mnv6, B6mnv6, I6mnv6, P6mnv6, W6mnv6, D7mnv6, K7mnv6; +wire R7mnv6, Y7mnv6, F8mnv6, M8mnv6, T8mnv6, A9mnv6, H9mnv6, O9mnv6, V9mnv6, Camnv6; +wire Jamnv6, Qamnv6, Xamnv6, Ebmnv6, Lbmnv6, Sbmnv6, Zbmnv6, Gcmnv6, Ncmnv6, Ucmnv6; +wire Bdmnv6, Idmnv6, Pdmnv6, Wdmnv6, Demnv6, Kemnv6, Remnv6, Yemnv6, Ffmnv6, Mfmnv6; +wire Tfmnv6, Agmnv6, Hgmnv6, Ogmnv6, Vgmnv6, Chmnv6, Jhmnv6, Qhmnv6, Xhmnv6, Eimnv6; +wire Limnv6, Simnv6, Zimnv6, Gjmnv6, Njmnv6, Ujmnv6, Bkmnv6, Ikmnv6, Pkmnv6, Wkmnv6; +wire Dlmnv6, Klmnv6, Rlmnv6, Ylmnv6, Fmmnv6, Mmmnv6, Tmmnv6, Anmnv6, Hnmnv6, Onmnv6; +wire Vnmnv6, Comnv6, Jomnv6, Qomnv6, Xomnv6, Epmnv6, Lpmnv6, Spmnv6, Zpmnv6, Gqmnv6; +wire Nqmnv6, Uqmnv6, Brmnv6, Irmnv6, Prmnv6, Wrmnv6, Dsmnv6, Ksmnv6, Rsmnv6, Ysmnv6; +wire Ftmnv6, Mtmnv6, Ttmnv6, Aumnv6, Humnv6, Oumnv6, Vumnv6, Cvmnv6, Jvmnv6, Qvmnv6; +wire Xvmnv6, Ewmnv6, Lwmnv6, Swmnv6, Zwmnv6, Gxmnv6, Nxmnv6, Uxmnv6, Bymnv6, Iymnv6; +wire Pymnv6, Wymnv6, Dzmnv6, Kzmnv6, Rzmnv6, Yzmnv6, F0nnv6, M0nnv6, T0nnv6, A1nnv6; +wire H1nnv6, O1nnv6, V1nnv6, C2nnv6, J2nnv6, Q2nnv6, X2nnv6, E3nnv6, L3nnv6, S3nnv6; +wire Z3nnv6, G4nnv6, N4nnv6, U4nnv6, B5nnv6, I5nnv6, P5nnv6, W5nnv6, D6nnv6, K6nnv6; +wire R6nnv6, Y6nnv6, F7nnv6, M7nnv6, T7nnv6, A8nnv6, H8nnv6, O8nnv6, V8nnv6, C9nnv6; +wire J9nnv6, Q9nnv6, X9nnv6, Eannv6, Lannv6, Sannv6, Zannv6, Gbnnv6, Nbnnv6, Ubnnv6; +wire Bcnnv6, Icnnv6, Pcnnv6, Wcnnv6, Ddnnv6, Kdnnv6, Rdnnv6, Ydnnv6, Fennv6, Mennv6; +wire Tennv6, Afnnv6, Hfnnv6, Ofnnv6, Vfnnv6, Cgnnv6, Jgnnv6, Qgnnv6, Xgnnv6, Ehnnv6; +wire Lhnnv6, Shnnv6, Zhnnv6, Ginnv6, Ninnv6, Uinnv6, Bjnnv6, Ijnnv6, Pjnnv6, Wjnnv6; +wire Dknnv6, Kknnv6, Rknnv6, Yknnv6, Flnnv6, Mlnnv6, Tlnnv6, Amnnv6, Hmnnv6, Omnnv6; +wire Vmnnv6, Cnnnv6, Jnnnv6, Qnnnv6, Xnnnv6, Eonnv6, Lonnv6, Sonnv6, Zonnv6, Gpnnv6; +wire Npnnv6, Upnnv6, Bqnnv6, Iqnnv6, Pqnnv6, Wqnnv6, Drnnv6, Krnnv6, Rrnnv6, Yrnnv6; +wire Fsnnv6, Msnnv6, Tsnnv6, Atnnv6, Htnnv6, Otnnv6, Vtnnv6, Cunnv6, Junnv6, Qunnv6; +wire Xunnv6, Evnnv6, Lvnnv6, Svnnv6, Zvnnv6, Gwnnv6, Nwnnv6, Uwnnv6, Bxnnv6, Ixnnv6; +wire Pxnnv6, Wxnnv6, Dynnv6, Kynnv6, Rynnv6, Yynnv6, Fznnv6, Mznnv6, Tznnv6, A0onv6; +wire H0onv6, O0onv6, V0onv6, C1onv6, J1onv6, Q1onv6, X1onv6, E2onv6, L2onv6, S2onv6; +wire Z2onv6, G3onv6, N3onv6, U3onv6, B4onv6, I4onv6, P4onv6, W4onv6, D5onv6, K5onv6; +wire R5onv6, Y5onv6, F6onv6, M6onv6, T6onv6, A7onv6, H7onv6, O7onv6, V7onv6, C8onv6; +wire J8onv6, Q8onv6, X8onv6, E9onv6, L9onv6, S9onv6, Z9onv6, Gaonv6, Naonv6, Uaonv6; +wire Bbonv6, Ibonv6, Pbonv6, Wbonv6, Dconv6, Kconv6, Rconv6, Yconv6, Fdonv6, Mdonv6; +wire Tdonv6, Aeonv6, Heonv6, Oeonv6, Veonv6, Cfonv6, Jfonv6, Qfonv6, Xfonv6, Egonv6; +wire Lgonv6, Sgonv6, Zgonv6, Ghonv6, Nhonv6, Uhonv6, Bionv6, Iionv6, Pionv6, Wionv6; +wire Djonv6, Kjonv6, Rjonv6, Yjonv6, Fkonv6, Mkonv6, Tkonv6, Alonv6, Hlonv6, Olonv6; +wire Vlonv6, Cmonv6, Jmonv6, Qmonv6, Xmonv6, Enonv6, Lnonv6, Snonv6, Znonv6, Goonv6; +wire Noonv6, Uoonv6, Bponv6, Iponv6, Pponv6, Wponv6, Dqonv6, Kqonv6, Rqonv6, Yqonv6; +wire Fronv6, Mronv6, Tronv6, Asonv6, Hsonv6, Osonv6, Vsonv6, Ctonv6, Jtonv6, Qtonv6; +wire Xtonv6, Euonv6, Luonv6, Suonv6, Zuonv6, Gvonv6, Nvonv6, Uvonv6, Bwonv6, Iwonv6; +wire Pwonv6, Wwonv6, Dxonv6, Kxonv6, Rxonv6, Yxonv6, Fyonv6, Myonv6, Tyonv6, Azonv6; +wire Hzonv6, Ozonv6, Vzonv6, C0pnv6, J0pnv6, Q0pnv6, X0pnv6, E1pnv6, L1pnv6, S1pnv6; +wire Z1pnv6, G2pnv6, N2pnv6, U2pnv6, B3pnv6, I3pnv6, P3pnv6, W3pnv6, D4pnv6, K4pnv6; +wire R4pnv6, Y4pnv6, F5pnv6, M5pnv6, T5pnv6, A6pnv6, H6pnv6, O6pnv6, V6pnv6, C7pnv6; +wire J7pnv6, Q7pnv6, X7pnv6, E8pnv6, L8pnv6, S8pnv6, Z8pnv6, G9pnv6, N9pnv6, U9pnv6; +wire Bapnv6, Iapnv6, Papnv6, Wapnv6, Dbpnv6, Kbpnv6, Rbpnv6, Ybpnv6, Fcpnv6, Mcpnv6; +wire Tcpnv6, Adpnv6, Hdpnv6, Odpnv6, Vdpnv6, Cepnv6, Jepnv6, Qepnv6, Xepnv6, Efpnv6; +wire Lfpnv6, Sfpnv6, Zfpnv6, Ggpnv6, Ngpnv6, Ugpnv6, Bhpnv6, Ihpnv6, Phpnv6, Whpnv6; +wire Dipnv6, Kipnv6, Ripnv6, Yipnv6, Fjpnv6, Mjpnv6, Tjpnv6, Akpnv6, Hkpnv6, Okpnv6; +wire Vkpnv6, Clpnv6, Jlpnv6, Qlpnv6, Xlpnv6, Empnv6, Lmpnv6, Smpnv6, Zmpnv6, Gnpnv6; +wire Nnpnv6, Unpnv6, Bopnv6, Iopnv6, Popnv6, Wopnv6, Dppnv6, Kppnv6, Rppnv6, Yppnv6; +wire Fqpnv6, Mqpnv6, Tqpnv6, Arpnv6, Hrpnv6, Orpnv6, Vrpnv6, Cspnv6, Jspnv6, Qspnv6; +wire Xspnv6, Etpnv6, Ltpnv6, Stpnv6, Ztpnv6, Gupnv6, Nupnv6, Uupnv6, Bvpnv6, Ivpnv6; +wire Pvpnv6, Wvpnv6, Dwpnv6, Kwpnv6, Rwpnv6, Ywpnv6, Fxpnv6, Mxpnv6, Txpnv6, Aypnv6; +wire Hypnv6, Oypnv6, Vypnv6, Czpnv6, Jzpnv6, Qzpnv6, Xzpnv6, E0qnv6, L0qnv6, S0qnv6; +wire Z0qnv6, G1qnv6, N1qnv6, U1qnv6, B2qnv6, I2qnv6, P2qnv6, W2qnv6, D3qnv6, K3qnv6; +wire R3qnv6, Y3qnv6, F4qnv6, M4qnv6, T4qnv6, A5qnv6, H5qnv6, O5qnv6, V5qnv6, C6qnv6; +wire J6qnv6, Q6qnv6, X6qnv6, E7qnv6, L7qnv6, S7qnv6, Z7qnv6, G8qnv6, N8qnv6, U8qnv6; +wire B9qnv6, I9qnv6, P9qnv6, W9qnv6, Daqnv6, Kaqnv6, Raqnv6, Yaqnv6, Fbqnv6, Mbqnv6; +wire Tbqnv6, Acqnv6, Hcqnv6, Ocqnv6, Vcqnv6, Cdqnv6, Jdqnv6, Qdqnv6, Xdqnv6, Eeqnv6; +wire Leqnv6, Seqnv6, Zeqnv6, Gfqnv6, Nfqnv6, Ufqnv6, Bgqnv6, Igqnv6, Pgqnv6, Wgqnv6; +wire Dhqnv6, Khqnv6, Rhqnv6, Yhqnv6, Fiqnv6, Miqnv6, Tiqnv6, Ajqnv6, Hjqnv6, Ojqnv6; +wire Vjqnv6, Ckqnv6, Jkqnv6, Qkqnv6, Xkqnv6, Elqnv6, Llqnv6, Slqnv6, Zlqnv6, Gmqnv6; +wire Nmqnv6, Umqnv6, Bnqnv6, Inqnv6, Pnqnv6, Wnqnv6, Doqnv6, Koqnv6, Roqnv6, Yoqnv6; +wire Fpqnv6, Mpqnv6, Tpqnv6, Aqqnv6, Hqqnv6, Oqqnv6, Vqqnv6, Crqnv6, Jrqnv6, Qrqnv6; +wire Xrqnv6, Esqnv6, Lsqnv6, Ssqnv6, Zsqnv6, Gtqnv6, Ntqnv6, Utqnv6, Buqnv6, Iuqnv6; +wire Puqnv6, Wuqnv6, Dvqnv6, Kvqnv6, Rvqnv6, Yvqnv6, Fwqnv6, Mwqnv6, Twqnv6, Axqnv6; +wire Hxqnv6, Oxqnv6, Vxqnv6, Cyqnv6, Jyqnv6, Qyqnv6, Xyqnv6, Ezqnv6, Lzqnv6, Szqnv6; +wire Zzqnv6, G0rnv6, N0rnv6, U0rnv6, B1rnv6, I1rnv6, P1rnv6, W1rnv6, D2rnv6, K2rnv6; +wire R2rnv6, Y2rnv6, F3rnv6, M3rnv6, T3rnv6, A4rnv6, H4rnv6, O4rnv6, V4rnv6, C5rnv6; +wire J5rnv6, Q5rnv6, X5rnv6, E6rnv6, L6rnv6, S6rnv6, Z6rnv6, G7rnv6, N7rnv6, U7rnv6; +wire B8rnv6, I8rnv6, P8rnv6, W8rnv6, D9rnv6, K9rnv6, R9rnv6, Y9rnv6, Farnv6, Marnv6; +wire Tarnv6, Abrnv6, Hbrnv6, Obrnv6, Vbrnv6, Ccrnv6, Jcrnv6, Qcrnv6, Xcrnv6, Edrnv6; +wire Ldrnv6, Sdrnv6, Zdrnv6, Gernv6, Nernv6, Uernv6, Bfrnv6, Ifrnv6, Pfrnv6, Wfrnv6; +wire Dgrnv6, Kgrnv6, Rgrnv6, Ygrnv6, Fhrnv6, Mhrnv6, Thrnv6, Airnv6, Hirnv6, Oirnv6; +wire Virnv6, Cjrnv6, Jjrnv6, Qjrnv6, Xjrnv6, Ekrnv6, Lkrnv6, Skrnv6, Zkrnv6, Glrnv6; +wire Nlrnv6, Ulrnv6, Bmrnv6, Imrnv6, Pmrnv6, Wmrnv6, Dnrnv6, Knrnv6, Rnrnv6, Ynrnv6; +wire Fornv6, Mornv6, Tornv6, Aprnv6, Hprnv6, Oprnv6, Vprnv6, Cqrnv6, Jqrnv6, Qqrnv6; +wire Xqrnv6, Errnv6, Lrrnv6, Srrnv6, Zrrnv6, Gsrnv6, Nsrnv6, Usrnv6, Btrnv6, Itrnv6; +wire Ptrnv6, Wtrnv6, Durnv6, Kurnv6, Rurnv6, Yurnv6, Fvrnv6, Mvrnv6, Tvrnv6, Awrnv6; +wire Hwrnv6, Owrnv6, Vwrnv6, Cxrnv6, Jxrnv6, Qxrnv6, Xxrnv6, Eyrnv6, Lyrnv6, Syrnv6; +wire Zyrnv6, Gzrnv6, Nzrnv6, Uzrnv6, B0snv6, I0snv6, P0snv6, W0snv6, D1snv6, K1snv6; +wire R1snv6, Y1snv6, F2snv6, M2snv6, T2snv6, A3snv6, H3snv6, O3snv6, V3snv6, C4snv6; +wire J4snv6, Q4snv6, X4snv6, E5snv6, L5snv6, S5snv6, Z5snv6, G6snv6, N6snv6, U6snv6; +wire B7snv6, I7snv6, P7snv6, W7snv6, D8snv6, K8snv6, R8snv6, Y8snv6, F9snv6, M9snv6; +wire T9snv6, Aasnv6, Hasnv6, Oasnv6, Vasnv6, Cbsnv6, Jbsnv6, Qbsnv6, Xbsnv6, Ecsnv6; +wire Lcsnv6, Scsnv6, Zcsnv6, Gdsnv6, Ndsnv6, Udsnv6, Besnv6, Iesnv6, Pesnv6, Wesnv6; +wire Dfsnv6, Kfsnv6, Rfsnv6, Yfsnv6, Fgsnv6, Mgsnv6, Tgsnv6, Ahsnv6, Hhsnv6, Ohsnv6; +wire Vhsnv6, Cisnv6, Jisnv6, Qisnv6, Xisnv6, Ejsnv6, Ljsnv6, Sjsnv6, Zjsnv6, Gksnv6; +wire Nksnv6, Uksnv6, Blsnv6, Ilsnv6, Plsnv6, Wlsnv6, Dmsnv6, Kmsnv6, Rmsnv6, Ymsnv6; +wire Fnsnv6, Mnsnv6, Tnsnv6, Aosnv6, Hosnv6, Oosnv6, Vosnv6, Cpsnv6, Jpsnv6, Qpsnv6; +wire Xpsnv6, Eqsnv6, Lqsnv6, Sqsnv6, Zqsnv6, Grsnv6, Nrsnv6, Ursnv6, Bssnv6, Issnv6; +wire Pssnv6, Wssnv6, Dtsnv6, Ktsnv6, Rtsnv6, Ytsnv6, Fusnv6, Musnv6, Tusnv6, Avsnv6; +wire Hvsnv6, Ovsnv6, Vvsnv6, Cwsnv6, Jwsnv6, Qwsnv6, Xwsnv6, Exsnv6, Lxsnv6, Sxsnv6; +wire Zxsnv6, Gysnv6, Nysnv6, Uysnv6, Bzsnv6, Izsnv6, Pzsnv6, Wzsnv6, D0tnv6, K0tnv6; +wire R0tnv6, Y0tnv6, F1tnv6, M1tnv6, T1tnv6, A2tnv6, H2tnv6, O2tnv6, V2tnv6, C3tnv6; +wire J3tnv6, Q3tnv6, X3tnv6, E4tnv6, L4tnv6, S4tnv6, Z4tnv6, G5tnv6, N5tnv6, U5tnv6; +wire B6tnv6, I6tnv6, P6tnv6, W6tnv6, D7tnv6, K7tnv6, R7tnv6, Y7tnv6, F8tnv6, M8tnv6; +wire T8tnv6, A9tnv6, H9tnv6, O9tnv6, V9tnv6, Catnv6, Jatnv6, Qatnv6, Xatnv6, Ebtnv6; +wire Lbtnv6, Sbtnv6, Zbtnv6, Gctnv6, Nctnv6, Uctnv6, Bdtnv6, Idtnv6, Pdtnv6, Wdtnv6; +wire Detnv6, Ketnv6, Retnv6, Yetnv6, Fftnv6, Mftnv6, Tftnv6, Agtnv6, Hgtnv6, Ogtnv6; +wire Vgtnv6, Chtnv6, Jhtnv6, Qhtnv6, Xhtnv6, Eitnv6, Litnv6, Sitnv6, Zitnv6, Gjtnv6; +wire Njtnv6, Ujtnv6, Bktnv6, Iktnv6, Pktnv6, Wktnv6, Dltnv6, Kltnv6, Rltnv6, Yltnv6; +wire Fmtnv6, Mmtnv6, Tmtnv6, Antnv6, Hntnv6, Ontnv6, Vntnv6, Cotnv6, Jotnv6, Qotnv6; +wire Xotnv6, Eptnv6, Lptnv6, Sptnv6, Zptnv6, Gqtnv6, Nqtnv6, Uqtnv6, Brtnv6, Irtnv6; +wire Prtnv6, Wrtnv6, Dstnv6, Kstnv6, Rstnv6, Ystnv6, Fttnv6, Mttnv6, Tttnv6, Autnv6; +wire Hutnv6, Outnv6, Vutnv6, Cvtnv6, Jvtnv6, Qvtnv6, Xvtnv6, Ewtnv6, Lwtnv6, Swtnv6; +wire Zwtnv6, Gxtnv6, Nxtnv6, Uxtnv6, Bytnv6, Iytnv6, Pytnv6, Wytnv6, Dztnv6, Kztnv6; +wire Rztnv6, Yztnv6, F0unv6, M0unv6, T0unv6, A1unv6, H1unv6, O1unv6, V1unv6, C2unv6; +wire J2unv6, Q2unv6, X2unv6, E3unv6, L3unv6, S3unv6, Z3unv6, G4unv6, N4unv6, U4unv6; +wire B5unv6, I5unv6, P5unv6, W5unv6, D6unv6, K6unv6, R6unv6, Y6unv6, F7unv6, M7unv6; +wire T7unv6, A8unv6, H8unv6, O8unv6, V8unv6, C9unv6, J9unv6, Q9unv6, X9unv6, Eaunv6; +wire Launv6, Saunv6, Zaunv6, Gbunv6, Nbunv6, Ubunv6, Bcunv6, Icunv6, Pcunv6, Wcunv6; +wire Ddunv6, Kdunv6, Rdunv6, Ydunv6, Feunv6, Meunv6, Teunv6, Afunv6, Hfunv6, Ofunv6; +wire Vfunv6, Cgunv6, Jgunv6, Qgunv6, Xgunv6, Ehunv6, Lhunv6, Shunv6, Zhunv6, Giunv6; +wire Niunv6, Uiunv6, Bjunv6, Ijunv6, Pjunv6, Wjunv6, Dkunv6, Kkunv6, Rkunv6, Ykunv6; +wire Flunv6, Mlunv6, Tlunv6, Amunv6, Hmunv6, Omunv6, Vmunv6, Cnunv6, Jnunv6, Qnunv6; +wire Xnunv6, Eounv6, Lounv6, Sounv6, Zounv6, Gpunv6, Npunv6, Upunv6, Bqunv6, Iqunv6; +wire Pqunv6, Wqunv6, Drunv6, Krunv6, Rrunv6, Yrunv6, Fsunv6, Msunv6, Tsunv6, Atunv6; +wire Htunv6, Otunv6, Vtunv6, Cuunv6, Juunv6, Quunv6, Xuunv6, Evunv6, Lvunv6, Svunv6; +wire Zvunv6, Gwunv6, Nwunv6, Uwunv6, Bxunv6, Ixunv6, Pxunv6, Wxunv6, Dyunv6, Kyunv6; +wire Ryunv6, Yyunv6, Fzunv6, Mzunv6, Tzunv6, A0vnv6, H0vnv6, O0vnv6, V0vnv6, C1vnv6; +wire J1vnv6, Q1vnv6, X1vnv6, E2vnv6, L2vnv6, S2vnv6, Z2vnv6, G3vnv6, N3vnv6, U3vnv6; +wire B4vnv6, I4vnv6, P4vnv6, W4vnv6, D5vnv6, K5vnv6, R5vnv6, Y5vnv6, F6vnv6, M6vnv6; +wire T6vnv6, A7vnv6, H7vnv6, O7vnv6, V7vnv6, C8vnv6, J8vnv6, Q8vnv6, X8vnv6, E9vnv6; +wire L9vnv6, S9vnv6, Z9vnv6, Gavnv6, Navnv6, Uavnv6, Bbvnv6, Ibvnv6, Pbvnv6, Wbvnv6; +wire Dcvnv6, Kcvnv6, Rcvnv6, Ycvnv6, Fdvnv6, Mdvnv6, Tdvnv6, Aevnv6, Hevnv6, Oevnv6; +wire Vevnv6, Cfvnv6, Jfvnv6, Qfvnv6, Xfvnv6, Egvnv6, Lgvnv6, Sgvnv6, Zgvnv6, Ghvnv6; +wire Nhvnv6, Uhvnv6, Bivnv6, Iivnv6, Pivnv6, Wivnv6, Djvnv6, Kjvnv6, Rjvnv6, Yjvnv6; +wire Fkvnv6, Mkvnv6, Tkvnv6, Alvnv6, Hlvnv6, Olvnv6, Vlvnv6, Cmvnv6, Jmvnv6, Qmvnv6; +wire Xmvnv6, Envnv6, Lnvnv6, Snvnv6, Znvnv6, Govnv6, Novnv6, Uovnv6, Bpvnv6, Ipvnv6; +wire Ppvnv6, Wpvnv6, Dqvnv6, Kqvnv6, Rqvnv6, Yqvnv6, Frvnv6, Mrvnv6, Trvnv6, Asvnv6; +wire Hsvnv6, Osvnv6, Vsvnv6, Ctvnv6, Jtvnv6, Qtvnv6, Xtvnv6, Euvnv6, Luvnv6, Suvnv6; +wire Zuvnv6, Gvvnv6, Nvvnv6, Uvvnv6, Bwvnv6, Iwvnv6, Pwvnv6, Wwvnv6, Dxvnv6, Kxvnv6; +wire Rxvnv6, Yxvnv6, Fyvnv6, Myvnv6, Tyvnv6, Azvnv6, Hzvnv6, Ozvnv6, Vzvnv6, C0wnv6; +wire J0wnv6, Q0wnv6, X0wnv6, E1wnv6, L1wnv6, S1wnv6, Z1wnv6, G2wnv6, N2wnv6, U2wnv6; +wire B3wnv6, I3wnv6, P3wnv6, W3wnv6, D4wnv6, K4wnv6, R4wnv6, Y4wnv6, F5wnv6, M5wnv6; +wire T5wnv6, A6wnv6, H6wnv6, O6wnv6, V6wnv6, C7wnv6, J7wnv6, Q7wnv6, X7wnv6, E8wnv6; +wire L8wnv6, S8wnv6, Z8wnv6, G9wnv6, N9wnv6, U9wnv6, Bawnv6, Iawnv6, Pawnv6, Wawnv6; +wire Dbwnv6, Kbwnv6, Rbwnv6, Ybwnv6, Fcwnv6, Mcwnv6, Tcwnv6, Adwnv6, Hdwnv6, Odwnv6; +wire Vdwnv6, Cewnv6, Jewnv6, Qewnv6, Xewnv6, Efwnv6, Lfwnv6, Sfwnv6, Zfwnv6, Ggwnv6; +wire Ngwnv6, Ugwnv6, Bhwnv6, Ihwnv6, Phwnv6, Whwnv6, Diwnv6, Kiwnv6, Riwnv6, Yiwnv6; +wire Fjwnv6, Mjwnv6, Tjwnv6, Akwnv6, Hkwnv6, Okwnv6, Vkwnv6, Clwnv6, Jlwnv6, Qlwnv6; +wire Xlwnv6, Emwnv6, Lmwnv6, Smwnv6, Zmwnv6, Gnwnv6, Nnwnv6, Unwnv6, Bownv6, Iownv6; +wire Pownv6, Wownv6, Dpwnv6, Kpwnv6, Rpwnv6, Ypwnv6, Fqwnv6, Mqwnv6, Tqwnv6, Arwnv6; +wire Hrwnv6, Orwnv6, Vrwnv6, Cswnv6, Jswnv6, Qswnv6, Xswnv6, Etwnv6, Ltwnv6, Stwnv6; +wire Ztwnv6, Guwnv6, Nuwnv6, Uuwnv6, Bvwnv6, Ivwnv6, Pvwnv6, Wvwnv6, Dwwnv6, Kwwnv6; +wire Rwwnv6, Ywwnv6, Fxwnv6, Mxwnv6, Txwnv6, Aywnv6, Hywnv6, Oywnv6, Vywnv6, Czwnv6; +wire Jzwnv6, Qzwnv6, Xzwnv6, E0xnv6, L0xnv6, S0xnv6, Z0xnv6, G1xnv6, N1xnv6, U1xnv6; +wire B2xnv6, I2xnv6, P2xnv6, W2xnv6, D3xnv6, K3xnv6, R3xnv6, Y3xnv6, F4xnv6, M4xnv6; +wire T4xnv6, A5xnv6, H5xnv6, O5xnv6, V5xnv6, C6xnv6, J6xnv6, Q6xnv6, X6xnv6, E7xnv6; +wire L7xnv6, S7xnv6, Z7xnv6, G8xnv6, N8xnv6, U8xnv6, B9xnv6, I9xnv6, P9xnv6, W9xnv6; +wire Daxnv6, Kaxnv6, Raxnv6, Yaxnv6, Fbxnv6, Mbxnv6, Tbxnv6, Acxnv6, Hcxnv6, Ocxnv6; +wire Vcxnv6, Cdxnv6, Jdxnv6, Qdxnv6, Xdxnv6, Eexnv6, Lexnv6, Sexnv6, Zexnv6, Gfxnv6; +wire Nfxnv6, Ufxnv6, Bgxnv6, Igxnv6, Pgxnv6, Wgxnv6, Dhxnv6, Khxnv6, Rhxnv6, Yhxnv6; +wire Fixnv6, Mixnv6, Tixnv6, Ajxnv6, Hjxnv6, Ojxnv6, Vjxnv6, Ckxnv6, Jkxnv6, Qkxnv6; +wire Xkxnv6, Elxnv6, Llxnv6, Slxnv6, Zlxnv6, Gmxnv6, Nmxnv6, Umxnv6, Bnxnv6, Inxnv6; +wire Pnxnv6, Wnxnv6, Doxnv6, Koxnv6, Roxnv6, Yoxnv6, Fpxnv6, Mpxnv6, Tpxnv6, Aqxnv6; +wire Hqxnv6, Oqxnv6, Vqxnv6, Crxnv6, Jrxnv6, Qrxnv6, Xrxnv6, Esxnv6, Lsxnv6, Ssxnv6; +wire Zsxnv6, Gtxnv6, Ntxnv6, Utxnv6, Buxnv6, Iuxnv6, Puxnv6, Wuxnv6, Dvxnv6, Kvxnv6; +wire Rvxnv6, Yvxnv6, Fwxnv6, Mwxnv6, Twxnv6, Axxnv6, Hxxnv6, Oxxnv6, Vxxnv6, Cyxnv6; +wire Jyxnv6, Qyxnv6, Xyxnv6, Ezxnv6, Lzxnv6, Szxnv6, Zzxnv6, G0ynv6, N0ynv6, U0ynv6; +wire B1ynv6, I1ynv6, P1ynv6, W1ynv6, D2ynv6, K2ynv6, R2ynv6, Y2ynv6, F3ynv6, M3ynv6; +wire T3ynv6, A4ynv6, H4ynv6, O4ynv6, V4ynv6, C5ynv6, J5ynv6, Q5ynv6, X5ynv6, E6ynv6; +wire L6ynv6, S6ynv6, Z6ynv6, G7ynv6, N7ynv6, U7ynv6, B8ynv6, I8ynv6, P8ynv6, W8ynv6; +wire D9ynv6, K9ynv6, R9ynv6, Y9ynv6, Faynv6, Maynv6, Taynv6, Abynv6, Hbynv6, Obynv6; +wire Vbynv6, Ccynv6, Jcynv6, Qcynv6, Xcynv6, Edynv6, Ldynv6, Sdynv6, Zdynv6, Geynv6; +wire Neynv6, Ueynv6, Bfynv6, Ifynv6, Pfynv6, Wfynv6, Dgynv6, Kgynv6, Rgynv6, Ygynv6; +wire Fhynv6, Mhynv6, Thynv6, Aiynv6, Hiynv6, Oiynv6, Viynv6, Cjynv6, Jjynv6, Qjynv6; +wire Xjynv6, Ekynv6, Lkynv6, Skynv6, Zkynv6, Glynv6, Nlynv6, Ulynv6, Bmynv6, Imynv6; +wire Pmynv6, Wmynv6, Dnynv6, Knynv6, Rnynv6, Ynynv6, Foynv6, Moynv6, Toynv6, Apynv6; +wire Hpynv6, Opynv6, Vpynv6, Cqynv6, Jqynv6, Qqynv6, Xqynv6, Erynv6, Lrynv6, Srynv6; +wire Zrynv6, Gsynv6, Nsynv6, Usynv6, Btynv6, Itynv6, Ptynv6, Wtynv6, Duynv6, Kuynv6; +wire Ruynv6, Yuynv6, Fvynv6, Mvynv6, Tvynv6, Awynv6, Hwynv6, Owynv6, Vwynv6, Cxynv6; +wire Jxynv6, Qxynv6, Xxynv6, Eyynv6, Lyynv6, Syynv6, Zyynv6, Gzynv6, Nzynv6, Uzynv6; +wire B0znv6, I0znv6, P0znv6, W0znv6, D1znv6, K1znv6, R1znv6, Y1znv6, F2znv6, M2znv6; +wire T2znv6, A3znv6, H3znv6, O3znv6, V3znv6, C4znv6, J4znv6, Q4znv6, X4znv6, E5znv6; +wire L5znv6, S5znv6, Z5znv6, G6znv6, N6znv6, U6znv6, B7znv6, I7znv6, P7znv6, W7znv6; +wire D8znv6, K8znv6, R8znv6, Y8znv6, F9znv6, M9znv6, T9znv6, Aaznv6, Haznv6, Oaznv6; +wire Vaznv6, Cbznv6, Jbznv6, Qbznv6, Xbznv6, Ecznv6, Lcznv6, Scznv6, Zcznv6, Gdznv6; +wire Ndznv6, Udznv6, Beznv6, Ieznv6, Peznv6, Weznv6, Dfznv6, Kfznv6, Rfznv6, Yfznv6; +wire Fgznv6, Mgznv6, Tgznv6, Ahznv6, Hhznv6, Ohznv6, Vhznv6, Ciznv6, Jiznv6, Qiznv6; +wire Xiznv6, Ejznv6, Ljznv6, Sjznv6, Zjznv6, Gkznv6, Nkznv6, Ukznv6, Blznv6, Ilznv6; +wire Plznv6, Wlznv6, Dmznv6, Kmznv6, Rmznv6, Ymznv6, Fnznv6, Mnznv6, Tnznv6, Aoznv6; +wire Hoznv6, Ooznv6, Voznv6, Cpznv6, Jpznv6, Qpznv6, Xpznv6, Eqznv6, Lqznv6, Sqznv6; +wire Zqznv6, Grznv6, Nrznv6, Urznv6, Bsznv6, Isznv6, Psznv6, Wsznv6, Dtznv6, Ktznv6; +wire Rtznv6, Ytznv6, Fuznv6, Muznv6, Tuznv6, Avznv6, Hvznv6, Ovznv6, Vvznv6, Cwznv6; +wire Jwznv6, Qwznv6, Xwznv6, Exznv6, Lxznv6, Sxznv6, Zxznv6, Gyznv6, Nyznv6, Uyznv6; +wire Bzznv6, Izznv6, Pzznv6, Wzznv6, D00ov6, K00ov6, R00ov6, Y00ov6, F10ov6, M10ov6; +wire T10ov6, A20ov6, H20ov6, O20ov6, V20ov6, C30ov6, J30ov6, Q30ov6, X30ov6, E40ov6; +wire L40ov6, S40ov6, Z40ov6, G50ov6, N50ov6, U50ov6, B60ov6, I60ov6, P60ov6, W60ov6; +wire D70ov6, K70ov6, R70ov6, Y70ov6, F80ov6, M80ov6, T80ov6, A90ov6, H90ov6, O90ov6; +wire V90ov6, Ca0ov6, Ja0ov6, Qa0ov6, Xa0ov6, Eb0ov6, Lb0ov6, Sb0ov6, Zb0ov6, Gc0ov6; +wire Nc0ov6, Uc0ov6, Bd0ov6, Id0ov6, Pd0ov6, Wd0ov6, De0ov6, Ke0ov6, Re0ov6, Ye0ov6; +wire Ff0ov6, Mf0ov6, Tf0ov6, Ag0ov6, Hg0ov6, Og0ov6, Vg0ov6, Ch0ov6, Jh0ov6, Qh0ov6; +wire Xh0ov6, Ei0ov6, Li0ov6, Si0ov6, Zi0ov6, Gj0ov6, Nj0ov6, Uj0ov6, Bk0ov6, Ik0ov6; +wire Pk0ov6, Wk0ov6, Dl0ov6, Kl0ov6, Rl0ov6, Yl0ov6, Fm0ov6, Mm0ov6, Tm0ov6, An0ov6; +wire Hn0ov6, On0ov6, Vn0ov6, Co0ov6, Jo0ov6, Qo0ov6, Xo0ov6, Ep0ov6, Lp0ov6, Sp0ov6; +wire Zp0ov6, Gq0ov6, Nq0ov6, Uq0ov6, Br0ov6, Ir0ov6, Pr0ov6, Wr0ov6, Ds0ov6, Ks0ov6; +wire Rs0ov6, Ys0ov6, Ft0ov6, Mt0ov6, Tt0ov6, Au0ov6, Hu0ov6, Ou0ov6, Vu0ov6, Cv0ov6; +wire Jv0ov6, Qv0ov6, Xv0ov6, Ew0ov6, Lw0ov6, Sw0ov6, Zw0ov6, Gx0ov6, Nx0ov6, Ux0ov6; +wire By0ov6, Iy0ov6, Py0ov6, Wy0ov6, Dz0ov6, Kz0ov6, Rz0ov6, Yz0ov6, F01ov6, M01ov6; +wire T01ov6, A11ov6, H11ov6, O11ov6, V11ov6, C21ov6, J21ov6, Q21ov6, X21ov6, E31ov6; +wire L31ov6, S31ov6, Z31ov6, G41ov6, N41ov6, U41ov6, B51ov6, I51ov6, P51ov6, W51ov6; +wire D61ov6, K61ov6, R61ov6, Y61ov6, F71ov6, M71ov6, T71ov6, A81ov6, H81ov6, O81ov6; +wire V81ov6, C91ov6, J91ov6, Q91ov6, X91ov6, Ea1ov6, La1ov6, Sa1ov6, Za1ov6, Gb1ov6; +wire Nb1ov6, Ub1ov6, Bc1ov6, Ic1ov6, Pc1ov6, Wc1ov6, Dd1ov6, Kd1ov6, Rd1ov6, Yd1ov6; +wire Fe1ov6, Me1ov6, Te1ov6, Af1ov6, Hf1ov6, Of1ov6, Vf1ov6, Cg1ov6, Jg1ov6, Qg1ov6; +wire Xg1ov6, Eh1ov6, Lh1ov6, Sh1ov6, Zh1ov6, Gi1ov6, Ni1ov6, Ui1ov6, Bj1ov6, Ij1ov6; +wire Pj1ov6, Wj1ov6, Dk1ov6, Kk1ov6, Rk1ov6, Yk1ov6, Fl1ov6, Ml1ov6, Tl1ov6, Am1ov6; +wire Hm1ov6, Om1ov6, Vm1ov6, Cn1ov6, Jn1ov6, Qn1ov6, Xn1ov6, Eo1ov6, Lo1ov6, So1ov6; +wire Zo1ov6, Gp1ov6, Np1ov6, Up1ov6, Bq1ov6, Iq1ov6, Pq1ov6, Wq1ov6, Dr1ov6, Kr1ov6; +wire Rr1ov6, Yr1ov6, Fs1ov6, Ms1ov6, Ts1ov6, At1ov6, Ht1ov6, Ot1ov6, Vt1ov6, Cu1ov6; +wire Ju1ov6, Qu1ov6, Xu1ov6, Ev1ov6, Lv1ov6, Sv1ov6, Zv1ov6, Gw1ov6, Nw1ov6, Uw1ov6; +wire Bx1ov6, Ix1ov6, Px1ov6, Wx1ov6, Dy1ov6, Ky1ov6, Ry1ov6, Yy1ov6, Fz1ov6, Mz1ov6; +wire Tz1ov6, A02ov6, H02ov6, O02ov6, V02ov6, C12ov6, J12ov6, Q12ov6, X12ov6, E22ov6; +wire L22ov6, S22ov6, Z22ov6, G32ov6, N32ov6, U32ov6, B42ov6, I42ov6, P42ov6, W42ov6; +wire D52ov6, K52ov6, R52ov6, Y52ov6, F62ov6, M62ov6, T62ov6, A72ov6, H72ov6, O72ov6; +wire V72ov6, C82ov6, J82ov6, Q82ov6, X82ov6, E92ov6, L92ov6, S92ov6, Z92ov6, Ga2ov6; +wire Na2ov6, Ua2ov6, Bb2ov6, Ib2ov6, Pb2ov6, Wb2ov6, Dc2ov6, Kc2ov6, Rc2ov6, Yc2ov6; +wire Fd2ov6, Md2ov6, Td2ov6, Ae2ov6, He2ov6, Oe2ov6, Ve2ov6, Cf2ov6, Jf2ov6, Qf2ov6; +wire Xf2ov6, Eg2ov6, Lg2ov6, Sg2ov6, Zg2ov6, Gh2ov6, Nh2ov6, Uh2ov6, Bi2ov6, Ii2ov6; +wire Pi2ov6, Wi2ov6, Dj2ov6, Kj2ov6, Rj2ov6, Yj2ov6, Fk2ov6, Mk2ov6, Tk2ov6, Al2ov6; +wire Hl2ov6, Ol2ov6, Vl2ov6, Cm2ov6, Jm2ov6, Qm2ov6, Xm2ov6, En2ov6, Ln2ov6, Sn2ov6; +wire Zn2ov6, Go2ov6, No2ov6, Uo2ov6, Bp2ov6, Ip2ov6, Pp2ov6, Wp2ov6, Dq2ov6, Kq2ov6; +wire Rq2ov6, Yq2ov6, Fr2ov6, Mr2ov6, Tr2ov6, As2ov6, Hs2ov6, Os2ov6, Vs2ov6, Ct2ov6; +wire Jt2ov6, Qt2ov6, Xt2ov6, Eu2ov6, Lu2ov6, Su2ov6, Zu2ov6, Gv2ov6, Nv2ov6, Uv2ov6; +wire Bw2ov6, Iw2ov6, Pw2ov6, Ww2ov6, Dx2ov6, Kx2ov6, Rx2ov6, Yx2ov6, Fy2ov6, My2ov6; +wire Ty2ov6, Az2ov6, Hz2ov6, Oz2ov6, Vz2ov6, C03ov6, J03ov6, Q03ov6, X03ov6, E13ov6; +wire L13ov6, S13ov6, Z13ov6, G23ov6, N23ov6, U23ov6, B33ov6, I33ov6, P33ov6, W33ov6; +wire D43ov6, K43ov6, R43ov6, Y43ov6, F53ov6, M53ov6, T53ov6, A63ov6, H63ov6, O63ov6; +wire V63ov6, C73ov6, J73ov6, Q73ov6, X73ov6, E83ov6, L83ov6, S83ov6, Z83ov6, G93ov6; +wire N93ov6, U93ov6, Ba3ov6, Ia3ov6, Pa3ov6, Wa3ov6, Db3ov6, Kb3ov6, Rb3ov6, Yb3ov6; +wire Fc3ov6, Mc3ov6, Tc3ov6, Ad3ov6, Hd3ov6, Od3ov6, Vd3ov6, Ce3ov6, Je3ov6, Qe3ov6; +wire Xe3ov6, Ef3ov6, Lf3ov6, Sf3ov6, Zf3ov6, Gg3ov6, Ng3ov6, Ug3ov6, Bh3ov6, Ih3ov6; +wire Ph3ov6, Wh3ov6, Di3ov6, Ki3ov6, Ri3ov6, Yi3ov6, Fj3ov6, Mj3ov6, Tj3ov6, Ak3ov6; +wire Hk3ov6, Ok3ov6, Vk3ov6, Cl3ov6, Jl3ov6, Ql3ov6, Xl3ov6, Em3ov6, Lm3ov6, Sm3ov6; +wire Zm3ov6, Gn3ov6, Nn3ov6, Un3ov6, Bo3ov6, Io3ov6, Po3ov6, Wo3ov6, Dp3ov6, Kp3ov6; +wire Rp3ov6, Yp3ov6, Fq3ov6, Mq3ov6, Tq3ov6, Ar3ov6, Hr3ov6, Or3ov6, Vr3ov6, Cs3ov6; +wire Js3ov6, Qs3ov6, Xs3ov6, Et3ov6, Lt3ov6, St3ov6, Zt3ov6, Gu3ov6, Nu3ov6, Uu3ov6; +wire Bv3ov6, Iv3ov6, Pv3ov6, Wv3ov6, Dw3ov6, Kw3ov6, Rw3ov6, Yw3ov6, Fx3ov6, Mx3ov6; +wire Tx3ov6, Ay3ov6, Hy3ov6, Oy3ov6, Vy3ov6, Cz3ov6, Jz3ov6, Qz3ov6, Xz3ov6, E04ov6; +wire L04ov6, S04ov6, Z04ov6, G14ov6, N14ov6, U14ov6, B24ov6, I24ov6, P24ov6, W24ov6; +wire D34ov6, K34ov6, R34ov6, Y34ov6, F44ov6, M44ov6, T44ov6, A54ov6, H54ov6, O54ov6; +wire V54ov6, C64ov6, J64ov6, Q64ov6, X64ov6, E74ov6, L74ov6, S74ov6, Z74ov6, G84ov6; +wire N84ov6, U84ov6, B94ov6, I94ov6, P94ov6, W94ov6, Da4ov6, Ka4ov6, Ra4ov6, Ya4ov6; +wire Fb4ov6, Mb4ov6, Tb4ov6, Ac4ov6, Hc4ov6, Oc4ov6, Vc4ov6, Cd4ov6, Jd4ov6, Qd4ov6; +wire Xd4ov6, Ee4ov6, Le4ov6, Se4ov6, Ze4ov6, Gf4ov6, Nf4ov6, Uf4ov6, Bg4ov6, Ig4ov6; +wire Pg4ov6, Wg4ov6, Dh4ov6, Kh4ov6, Rh4ov6, Yh4ov6, Fi4ov6, Mi4ov6, Ti4ov6, Aj4ov6; +wire Hj4ov6, Oj4ov6, Vj4ov6, Ck4ov6, Jk4ov6, Qk4ov6, Xk4ov6, El4ov6, Ll4ov6, Sl4ov6; +wire Zl4ov6, Gm4ov6, Nm4ov6, Um4ov6, Bn4ov6, In4ov6, Pn4ov6, Wn4ov6, Do4ov6, Ko4ov6; +wire Ro4ov6, Yo4ov6, Fp4ov6, Mp4ov6, Tp4ov6, Aq4ov6, Hq4ov6, Oq4ov6, Vq4ov6, Cr4ov6; +wire Jr4ov6, Qr4ov6, Xr4ov6, Es4ov6, Ls4ov6, Ss4ov6, Zs4ov6, Gt4ov6, Nt4ov6, Ut4ov6; +wire Bu4ov6, Iu4ov6, Pu4ov6, Wu4ov6, Dv4ov6, Kv4ov6, Rv4ov6, Yv4ov6, Fw4ov6, Mw4ov6; +wire Tw4ov6, Ax4ov6, Hx4ov6, Ox4ov6, Vx4ov6, Cy4ov6, Jy4ov6, Qy4ov6, Xy4ov6, Ez4ov6; +wire Lz4ov6, Sz4ov6, Zz4ov6, G05ov6, N05ov6, U05ov6, B15ov6, I15ov6, P15ov6, W15ov6; +wire D25ov6, K25ov6, R25ov6, Y25ov6, F35ov6, M35ov6, T35ov6, A45ov6, H45ov6, O45ov6; +wire V45ov6, C55ov6, J55ov6, Q55ov6, X55ov6, E65ov6, L65ov6, S65ov6, Z65ov6, G75ov6; +wire N75ov6, U75ov6, B85ov6, I85ov6, P85ov6, W85ov6, D95ov6, K95ov6, R95ov6, Y95ov6; +wire Fa5ov6, Ma5ov6, Ta5ov6, Ab5ov6, Hb5ov6, Ob5ov6, Vb5ov6, Cc5ov6, Jc5ov6, Qc5ov6; +wire Xc5ov6, Ed5ov6, Ld5ov6, Sd5ov6, Zd5ov6, Ge5ov6, Ne5ov6, Ue5ov6, Bf5ov6, If5ov6; +wire Pf5ov6, Wf5ov6, Dg5ov6, Kg5ov6, Rg5ov6, Yg5ov6, Fh5ov6, Mh5ov6, Th5ov6, Ai5ov6; +wire Hi5ov6, Oi5ov6, Vi5ov6, Cj5ov6, Jj5ov6, Qj5ov6, Xj5ov6, Ek5ov6, Lk5ov6, Sk5ov6; +wire Zk5ov6, Gl5ov6, Nl5ov6, Ul5ov6, Bm5ov6, Im5ov6, Pm5ov6, Wm5ov6, Dn5ov6, Kn5ov6; +wire Rn5ov6, Yn5ov6, Fo5ov6, Mo5ov6, To5ov6, Ap5ov6, Hp5ov6, Op5ov6, Vp5ov6, Cq5ov6; +wire Jq5ov6, Qq5ov6, Xq5ov6, Er5ov6, Lr5ov6, Sr5ov6, Zr5ov6, Gs5ov6, Ns5ov6, Us5ov6; +wire Bt5ov6, It5ov6, Pt5ov6, Wt5ov6, Du5ov6, Ku5ov6, Ru5ov6, Yu5ov6, Fv5ov6, Mv5ov6; +wire Tv5ov6, Aw5ov6, Hw5ov6, Ow5ov6, Vw5ov6, Cx5ov6, Jx5ov6, Qx5ov6, Xx5ov6, Ey5ov6; +wire Ly5ov6, Sy5ov6, Zy5ov6, Gz5ov6, Nz5ov6, Uz5ov6, B06ov6, I06ov6, P06ov6, W06ov6; +wire D16ov6, K16ov6, R16ov6, Y16ov6, F26ov6, M26ov6, T26ov6, A36ov6, H36ov6, O36ov6; +wire V36ov6, C46ov6, J46ov6, Q46ov6, X46ov6, E56ov6, L56ov6, S56ov6, Z56ov6, G66ov6; +wire N66ov6, U66ov6, B76ov6, I76ov6, P76ov6, W76ov6, D86ov6, K86ov6, R86ov6, Y86ov6; +wire F96ov6, M96ov6, T96ov6, Aa6ov6, Ha6ov6, Oa6ov6, Va6ov6, Cb6ov6, Jb6ov6, Qb6ov6; +wire Xb6ov6, Ec6ov6, Lc6ov6, Sc6ov6, Zc6ov6, Gd6ov6, Nd6ov6, Ud6ov6, Be6ov6, Ie6ov6; +wire Pe6ov6, We6ov6, Df6ov6, Kf6ov6, Rf6ov6, Yf6ov6, Fg6ov6, Mg6ov6, Tg6ov6, Ah6ov6; +wire Hh6ov6, Oh6ov6, Vh6ov6, Ci6ov6, Ji6ov6, Qi6ov6, Xi6ov6, Ej6ov6, Lj6ov6, Sj6ov6; +wire Zj6ov6, Gk6ov6, Nk6ov6, Uk6ov6, Bl6ov6, Il6ov6, Pl6ov6, Wl6ov6, Dm6ov6, Km6ov6; +wire Rm6ov6, Ym6ov6, Fn6ov6, Mn6ov6, Tn6ov6, Ao6ov6, Ho6ov6, Oo6ov6, Vo6ov6, Cp6ov6; +wire Jp6ov6, Qp6ov6, Xp6ov6, Eq6ov6, Lq6ov6, Sq6ov6, Zq6ov6, Gr6ov6, Nr6ov6, Ur6ov6; +wire Bs6ov6, Is6ov6, Ps6ov6, Ws6ov6, Dt6ov6, Kt6ov6, Rt6ov6, Yt6ov6, Fu6ov6, Mu6ov6; +wire Tu6ov6, Av6ov6, Hv6ov6, Ov6ov6, Vv6ov6, Cw6ov6, Jw6ov6, Qw6ov6, Xw6ov6, Ex6ov6; +wire Lx6ov6, Sx6ov6, Zx6ov6, Gy6ov6, Ny6ov6, Uy6ov6, Bz6ov6, Iz6ov6, Pz6ov6, Wz6ov6; +wire D07ov6, K07ov6, R07ov6, Y07ov6, F17ov6, M17ov6, T17ov6, A27ov6, H27ov6, O27ov6; +wire V27ov6, C37ov6, J37ov6, Q37ov6, X37ov6, E47ov6, L47ov6, S47ov6, Z47ov6, G57ov6; +wire N57ov6, U57ov6, B67ov6, I67ov6, P67ov6, W67ov6, D77ov6, K77ov6, R77ov6, Y77ov6; +wire F87ov6, M87ov6, T87ov6, A97ov6, H97ov6, O97ov6, V97ov6, Ca7ov6, Ja7ov6, Qa7ov6; +wire Xa7ov6, Eb7ov6, Lb7ov6, Sb7ov6, Zb7ov6, Gc7ov6, Nc7ov6, Uc7ov6, Bd7ov6, Id7ov6; +wire Pd7ov6, Wd7ov6, De7ov6, Ke7ov6, Re7ov6, Ye7ov6, Ff7ov6, Mf7ov6, Tf7ov6, Ag7ov6; +wire Hg7ov6, Og7ov6, Vg7ov6, Ch7ov6, Jh7ov6, Qh7ov6, Xh7ov6, Ei7ov6, Li7ov6, Si7ov6; +wire Zi7ov6, Gj7ov6, Nj7ov6, Uj7ov6, Bk7ov6, Ik7ov6, Pk7ov6, Wk7ov6, Dl7ov6, Kl7ov6; +wire Rl7ov6, Yl7ov6, Fm7ov6, Mm7ov6, Tm7ov6, An7ov6, Hn7ov6, On7ov6, Vn7ov6, Co7ov6; +wire Jo7ov6, Qo7ov6, Xo7ov6, Ep7ov6, Lp7ov6, Sp7ov6, Zp7ov6, Gq7ov6, Nq7ov6, Uq7ov6; +wire Br7ov6, Ir7ov6, Pr7ov6, Wr7ov6, Ds7ov6, Ks7ov6, Rs7ov6, Ys7ov6, Ft7ov6, Mt7ov6; +wire Tt7ov6, Au7ov6, Hu7ov6, Ou7ov6, Vu7ov6, Cv7ov6, Jv7ov6, Qv7ov6, Xv7ov6, Ew7ov6; +wire Lw7ov6, Sw7ov6, Zw7ov6, Gx7ov6, Nx7ov6, Ux7ov6, By7ov6, Iy7ov6, Py7ov6, Wy7ov6; +wire Dz7ov6, Kz7ov6, Rz7ov6, Yz7ov6, F08ov6, M08ov6, T08ov6, A18ov6, H18ov6, O18ov6; +wire V18ov6, C28ov6, J28ov6, Q28ov6, X28ov6, E38ov6, L38ov6, S38ov6, Z38ov6, G48ov6; +wire N48ov6, U48ov6, B58ov6, I58ov6, P58ov6, W58ov6, D68ov6, K68ov6, R68ov6, Y68ov6; +wire F78ov6, M78ov6, T78ov6, A88ov6, H88ov6, O88ov6, V88ov6, C98ov6, J98ov6, Q98ov6; +wire X98ov6, Ea8ov6, La8ov6, Sa8ov6, Za8ov6, Gb8ov6, Nb8ov6, Ub8ov6, Bc8ov6, Ic8ov6; +wire Pc8ov6, Wc8ov6, Dd8ov6, Kd8ov6, Rd8ov6, Yd8ov6, Fe8ov6, Me8ov6, Te8ov6, Af8ov6; +wire Hf8ov6, Of8ov6, Vf8ov6, Cg8ov6, Jg8ov6, Qg8ov6, Xg8ov6, Eh8ov6, Lh8ov6, Sh8ov6; +wire Zh8ov6, Gi8ov6, Ni8ov6, Ui8ov6, Bj8ov6, Ij8ov6, Pj8ov6, Wj8ov6, Dk8ov6, Kk8ov6; +wire Rk8ov6, Yk8ov6, Fl8ov6, Ml8ov6, Tl8ov6, Am8ov6, Hm8ov6, Om8ov6, Vm8ov6, Cn8ov6; +wire Jn8ov6, Qn8ov6, Xn8ov6, Eo8ov6, Lo8ov6, So8ov6, Zo8ov6, Gp8ov6, Np8ov6, Up8ov6; +wire Bq8ov6, Iq8ov6, Pq8ov6, Wq8ov6, Dr8ov6, Kr8ov6, Rr8ov6, Yr8ov6, Fs8ov6, Ms8ov6; +wire Ts8ov6, At8ov6, Ht8ov6, Ot8ov6, Vt8ov6, Cu8ov6, Ju8ov6, Qu8ov6, Xu8ov6, Ev8ov6; +wire Lv8ov6, Sv8ov6, Zv8ov6, Gw8ov6, Nw8ov6, Uw8ov6, Bx8ov6, Ix8ov6, Px8ov6, Wx8ov6; +wire Dy8ov6, Ky8ov6, Ry8ov6, Yy8ov6, Fz8ov6, Mz8ov6, Tz8ov6, A09ov6, H09ov6, O09ov6; +wire V09ov6, C19ov6, J19ov6, Q19ov6, X19ov6, E29ov6, L29ov6, S29ov6, Z29ov6, G39ov6; +wire N39ov6, U39ov6, B49ov6, I49ov6, P49ov6, W49ov6, D59ov6, K59ov6, R59ov6, Y59ov6; +wire F69ov6, M69ov6, T69ov6, A79ov6, H79ov6, O79ov6, V79ov6, C89ov6, J89ov6, Q89ov6; +wire X89ov6, E99ov6, L99ov6, S99ov6, Z99ov6, Ga9ov6, Na9ov6, Ua9ov6, Bb9ov6, Ib9ov6; +wire Pb9ov6, Wb9ov6, Dc9ov6, Kc9ov6, Rc9ov6, Yc9ov6, Fd9ov6, Md9ov6, Td9ov6, Ae9ov6; +wire He9ov6, Oe9ov6, Ve9ov6, Cf9ov6, Jf9ov6, Qf9ov6, Xf9ov6, Eg9ov6, Lg9ov6, Sg9ov6; +wire Zg9ov6, Gh9ov6, Nh9ov6, Uh9ov6, Bi9ov6, Ii9ov6, Pi9ov6, Wi9ov6, Dj9ov6, Kj9ov6; +wire Rj9ov6, Yj9ov6, Fk9ov6, Mk9ov6, Tk9ov6, Al9ov6, Hl9ov6, Ol9ov6, Vl9ov6, Cm9ov6; +wire Jm9ov6, Qm9ov6, Xm9ov6, En9ov6, Ln9ov6, Sn9ov6, Zn9ov6, Go9ov6, No9ov6, Uo9ov6; +wire Bp9ov6, Ip9ov6, Pp9ov6, Wp9ov6, Dq9ov6, Kq9ov6, Rq9ov6, Yq9ov6, Fr9ov6, Mr9ov6; +wire Tr9ov6, As9ov6, Hs9ov6, Os9ov6, Vs9ov6, Ct9ov6, Jt9ov6, Qt9ov6, Xt9ov6, Eu9ov6; +wire Lu9ov6, Su9ov6, Zu9ov6, Gv9ov6, Nv9ov6, Uv9ov6, Bw9ov6, Iw9ov6, Pw9ov6, Ww9ov6; +wire Dx9ov6, Kx9ov6, Rx9ov6, Yx9ov6, Fy9ov6, My9ov6, Ty9ov6, Az9ov6, Hz9ov6, Oz9ov6; +wire Vz9ov6, C0aov6, J0aov6, Q0aov6, X0aov6, E1aov6, L1aov6, S1aov6, Z1aov6, G2aov6; +wire N2aov6, U2aov6, B3aov6, I3aov6, P3aov6, W3aov6, D4aov6, K4aov6, R4aov6, Y4aov6; +wire F5aov6, M5aov6, T5aov6, A6aov6, H6aov6, O6aov6, V6aov6, C7aov6, J7aov6, Q7aov6; +wire X7aov6, E8aov6, L8aov6, S8aov6, Z8aov6, G9aov6, N9aov6, U9aov6, Baaov6, Iaaov6; +wire Paaov6, Waaov6, Dbaov6, Kbaov6, Rbaov6, Ybaov6, Fcaov6, Mcaov6, Tcaov6, Adaov6; +wire Hdaov6, Odaov6, Vdaov6, Ceaov6, Jeaov6, Qeaov6, Xeaov6, Efaov6, Lfaov6, Sfaov6; +wire Zfaov6, Ggaov6, Ngaov6, Ugaov6, Bhaov6, Ihaov6, Phaov6, Whaov6, Diaov6, Kiaov6; +wire Riaov6, Yiaov6, Fjaov6, Mjaov6, Tjaov6, Akaov6, Hkaov6, Okaov6, Vkaov6, Claov6; +wire Jlaov6, Qlaov6, Xlaov6, Emaov6, Lmaov6, Smaov6, Zmaov6, Gnaov6, Nnaov6, Unaov6; +wire Boaov6, Ioaov6, Poaov6, Woaov6, Dpaov6, Kpaov6, Rpaov6, Ypaov6, Fqaov6, Mqaov6; +wire Tqaov6, Araov6, Hraov6, Oraov6, Vraov6, Csaov6, Jsaov6, Qsaov6, Xsaov6, Etaov6; +wire Ltaov6, Staov6, Ztaov6, Guaov6, Nuaov6, Uuaov6, Bvaov6, Ivaov6, Pvaov6, Wvaov6; +wire Dwaov6, Kwaov6, Rwaov6, Ywaov6, Fxaov6, Mxaov6, Txaov6, Ayaov6, Hyaov6, Oyaov6; +wire Vyaov6, Czaov6, Jzaov6, Qzaov6, Xzaov6, E0bov6, L0bov6, S0bov6, Z0bov6, G1bov6; +wire N1bov6, U1bov6, B2bov6, I2bov6, P2bov6, W2bov6, D3bov6, K3bov6, R3bov6, Y3bov6; +wire F4bov6, M4bov6, T4bov6, A5bov6, H5bov6, O5bov6, V5bov6, C6bov6, J6bov6, Q6bov6; +wire X6bov6, E7bov6, L7bov6, S7bov6, Z7bov6, G8bov6, N8bov6, U8bov6, B9bov6, I9bov6; +wire P9bov6, W9bov6, Dabov6, Kabov6, Rabov6, Yabov6, Fbbov6, Mbbov6, Tbbov6, Acbov6; +wire Hcbov6, Ocbov6, Vcbov6, Cdbov6, Jdbov6, Qdbov6, Xdbov6, Eebov6, Lebov6, Sebov6; +wire Zebov6, Gfbov6, Nfbov6, Ufbov6, Bgbov6, Igbov6, Pgbov6, Wgbov6, Dhbov6, Khbov6; +wire Rhbov6, Yhbov6, Fibov6, Mibov6, Tibov6, Ajbov6, Hjbov6, Ojbov6, Vjbov6, Ckbov6; +wire Jkbov6, Qkbov6, Xkbov6, Elbov6, Llbov6, Slbov6, Zlbov6, Gmbov6, Nmbov6, Umbov6; +wire Bnbov6, Inbov6, Pnbov6, Wnbov6, Dobov6, Kobov6, Robov6, Yobov6, Fpbov6, Mpbov6; +wire Tpbov6, Aqbov6, Hqbov6, Oqbov6, Vqbov6, Crbov6, Jrbov6, Qrbov6, Xrbov6, Esbov6; +wire Lsbov6, Ssbov6, Zsbov6, Gtbov6, Ntbov6, Utbov6, Bubov6, Iubov6, Pubov6, Wubov6; +wire Dvbov6, Kvbov6, Rvbov6, Yvbov6, Fwbov6, Mwbov6, Twbov6, Axbov6, Hxbov6, Oxbov6; +wire Vxbov6, Cybov6, Jybov6, Qybov6, Xybov6, Ezbov6, Lzbov6, Szbov6, Zzbov6, G0cov6; +wire N0cov6, U0cov6, B1cov6, I1cov6, P1cov6, W1cov6, D2cov6, K2cov6, R2cov6, Y2cov6; +wire F3cov6, M3cov6, T3cov6, A4cov6, H4cov6, O4cov6, V4cov6, C5cov6, J5cov6, Q5cov6; +wire X5cov6, E6cov6, L6cov6, S6cov6, Z6cov6, G7cov6, N7cov6, U7cov6, B8cov6, I8cov6; +wire P8cov6, W8cov6, D9cov6, K9cov6, R9cov6, Y9cov6, Facov6, Macov6, Tacov6, Abcov6; +wire Hbcov6, Obcov6, Vbcov6, Cccov6, Jccov6, Qccov6, Xccov6, Edcov6, Ldcov6, Sdcov6; +wire Zdcov6, Gecov6, Necov6, Uecov6, Bfcov6, Ifcov6, Pfcov6, Wfcov6, Dgcov6, Kgcov6; +wire Rgcov6, Ygcov6, Fhcov6, Mhcov6, Thcov6, Aicov6, Hicov6, Oicov6, Vicov6, Cjcov6; +wire Jjcov6, Qjcov6, Xjcov6, Ekcov6, Lkcov6, Skcov6, Zkcov6, Glcov6, Nlcov6, Ulcov6; +wire Bmcov6, Imcov6, Pmcov6, Wmcov6, Dncov6, Kncov6, Rncov6, Yncov6, Focov6, Mocov6; +wire Tocov6, Apcov6, Hpcov6, Opcov6, Vpcov6, Cqcov6, Jqcov6, Qqcov6, Xqcov6, Ercov6; +wire Lrcov6, Srcov6, Zrcov6, Gscov6, Nscov6, Uscov6, Btcov6, Itcov6, Ptcov6, Wtcov6; +wire Ducov6, Kucov6, Rucov6, Yucov6, Fvcov6, Mvcov6, Tvcov6, Awcov6, Hwcov6, Owcov6; +wire Vwcov6, Cxcov6, Jxcov6, Qxcov6, Xxcov6, Eycov6, Lycov6, Sycov6, Zycov6, Gzcov6; +wire Nzcov6, Uzcov6, B0dov6, I0dov6, P0dov6, W0dov6, D1dov6, K1dov6, R1dov6, Y1dov6; +wire F2dov6, M2dov6, T2dov6, A3dov6, H3dov6, O3dov6, V3dov6, C4dov6, J4dov6, Q4dov6; +wire X4dov6, E5dov6, L5dov6, S5dov6, Z5dov6, G6dov6, N6dov6, U6dov6, B7dov6, I7dov6; +wire P7dov6, W7dov6, D8dov6, K8dov6, R8dov6, Y8dov6, F9dov6, M9dov6, T9dov6, Aadov6; +wire Hadov6, Oadov6, Vadov6, Cbdov6, Jbdov6, Qbdov6, Xbdov6, Ecdov6, Lcdov6, Scdov6; +wire Zcdov6, Gddov6, Nddov6, Uddov6, Bedov6, Iedov6, Pedov6, Wedov6, Dfdov6, Kfdov6; +wire Rfdov6, Yfdov6, Fgdov6, Mgdov6, Tgdov6, Ahdov6, Hhdov6, Ohdov6, Vhdov6, Cidov6; +wire Jidov6, Qidov6, Xidov6, Ejdov6, Ljdov6, Sjdov6, Zjdov6, Gkdov6, Nkdov6, Ukdov6; +wire Bldov6, Ildov6, Pldov6, Wldov6, Dmdov6, Kmdov6, Rmdov6, Ymdov6, Fndov6, Mndov6; +wire Tndov6, Aodov6, Hodov6, Oodov6, Vodov6, Cpdov6, Jpdov6, Qpdov6, Xpdov6, Eqdov6; +wire Lqdov6, Sqdov6, Zqdov6, Grdov6, Nrdov6, Urdov6, Bsdov6, Isdov6, Psdov6, Wsdov6; +wire Dtdov6, Ktdov6, Rtdov6, Ytdov6, Fudov6, Mudov6, Tudov6, Avdov6, Hvdov6, Ovdov6; +wire Vvdov6, Cwdov6, Jwdov6, Qwdov6, Xwdov6, Exdov6, Lxdov6, Sxdov6, Zxdov6, Gydov6; +wire Nydov6, Uydov6, Bzdov6, Izdov6, Pzdov6, Wzdov6, D0eov6, K0eov6, R0eov6, Y0eov6; +wire F1eov6, M1eov6, T1eov6, A2eov6, H2eov6, O2eov6, V2eov6, C3eov6, J3eov6, Q3eov6; +wire X3eov6, E4eov6, L4eov6, S4eov6, Z4eov6, G5eov6, N5eov6, U5eov6, B6eov6, I6eov6; +wire P6eov6, W6eov6, D7eov6, K7eov6, R7eov6, Y7eov6, F8eov6, M8eov6, T8eov6, A9eov6; +wire H9eov6, O9eov6, V9eov6, Caeov6, Jaeov6, Qaeov6, Xaeov6, Ebeov6, Lbeov6, Sbeov6; +wire Zbeov6, Gceov6, Nceov6, Uceov6, Bdeov6, Ideov6, Pdeov6, Wdeov6, Deeov6, Keeov6; +wire Reeov6, Yeeov6, Ffeov6, Mfeov6, Tfeov6, Ageov6, Hgeov6, Ogeov6, Vgeov6, Cheov6; +wire Jheov6, Qheov6, Xheov6, Eieov6, Lieov6, Sieov6, Zieov6, Gjeov6, Njeov6, Ujeov6; +wire Bkeov6, Ikeov6, Pkeov6, Wkeov6, Dleov6, Kleov6, Rleov6, Yleov6, Fmeov6, Mmeov6; +wire Tmeov6, Aneov6, Hneov6, Oneov6, Vneov6, Coeov6, Joeov6, Qoeov6, Xoeov6, Epeov6; +wire Lpeov6, Speov6, Zpeov6, Gqeov6, Nqeov6, Uqeov6, Breov6, Ireov6, Preov6, Wreov6; +wire Dseov6, Kseov6, Rseov6, Yseov6, Fteov6, Mteov6, Tteov6, Aueov6, Hueov6, Oueov6; +wire Vueov6, Cveov6, Jveov6, Qveov6, Xveov6, Eweov6, Lweov6, Sweov6, Zweov6, Gxeov6; +wire Nxeov6, Uxeov6, Byeov6, Iyeov6, Pyeov6, Wyeov6, Dzeov6, Kzeov6, Rzeov6, Yzeov6; +wire F0fov6, M0fov6, T0fov6, A1fov6, H1fov6, O1fov6, V1fov6, C2fov6, J2fov6, Q2fov6; +wire X2fov6, E3fov6, L3fov6, S3fov6, Z3fov6, G4fov6, N4fov6, U4fov6, B5fov6, I5fov6; +wire P5fov6, W5fov6, D6fov6, K6fov6, R6fov6, Y6fov6, F7fov6, M7fov6, T7fov6, A8fov6; +wire H8fov6, O8fov6, V8fov6, C9fov6, J9fov6, Q9fov6, X9fov6, Eafov6, Lafov6, Safov6; +wire Zafov6, Gbfov6, Nbfov6, Ubfov6, Bcfov6, Icfov6, Pcfov6, Wcfov6, Ddfov6, Kdfov6; +wire Rdfov6, Ydfov6, Fefov6, Mefov6, Tefov6, Affov6, Hffov6, Offov6, Vffov6, Cgfov6; +wire Jgfov6, Qgfov6, Xgfov6, Ehfov6, Lhfov6, Shfov6, Zhfov6, Gifov6, Nifov6, Uifov6; +wire Bjfov6, Ijfov6, Pjfov6, Wjfov6, Dkfov6, Kkfov6, Rkfov6, Ykfov6, Flfov6, Mlfov6; +wire Tlfov6, Amfov6, Hmfov6, Omfov6, Vmfov6, Cnfov6, Jnfov6, Qnfov6, Xnfov6, Eofov6; +wire Lofov6, Sofov6, Zofov6, Gpfov6, Npfov6, Upfov6, Bqfov6, Iqfov6, Pqfov6, Wqfov6; +wire Drfov6, Krfov6, Rrfov6, Yrfov6, Fsfov6, Msfov6, Tsfov6, Atfov6, Htfov6, Otfov6; +wire Vtfov6, Cufov6, Jufov6, Qufov6, Xufov6, Evfov6, Lvfov6, Svfov6, Zvfov6, Gwfov6; +wire Nwfov6, Uwfov6, Bxfov6, Ixfov6, Pxfov6, Wxfov6, Dyfov6, Kyfov6, Ryfov6, Yyfov6; +wire Fzfov6, Mzfov6, Tzfov6, A0gov6, H0gov6, O0gov6, V0gov6, C1gov6, J1gov6, Q1gov6; +wire X1gov6, E2gov6, L2gov6, S2gov6, Z2gov6, G3gov6, N3gov6, U3gov6, B4gov6, I4gov6; +wire P4gov6, W4gov6, D5gov6, K5gov6, R5gov6, Y5gov6, F6gov6, M6gov6, T6gov6, A7gov6; +wire H7gov6, O7gov6, V7gov6, C8gov6, J8gov6, Q8gov6, X8gov6, E9gov6, L9gov6, S9gov6; +wire Z9gov6, Gagov6, Nagov6, Uagov6, Bbgov6, Ibgov6, Pbgov6, Wbgov6, Dcgov6, Kcgov6; +wire Rcgov6, Ycgov6, Fdgov6, Mdgov6, Tdgov6, Aegov6, Hegov6, Oegov6, Vegov6, Cfgov6; +wire Jfgov6, Qfgov6, Xfgov6, Eggov6, Lggov6, Sggov6, Zggov6, Ghgov6, Nhgov6, Uhgov6; +wire Bigov6, Iigov6, Pigov6, Wigov6, Djgov6, Kjgov6, Rjgov6, Yjgov6, Fkgov6, Mkgov6; +wire Tkgov6, Algov6, Hlgov6, Olgov6, Vlgov6, Cmgov6, Jmgov6, Qmgov6, Xmgov6, Engov6; +wire Lngov6, Sngov6, Zngov6, Gogov6, Nogov6, Uogov6, Bpgov6, Ipgov6, Ppgov6, Wpgov6; +wire Dqgov6, Kqgov6, Rqgov6, Yqgov6, Frgov6, Mrgov6, Trgov6, Asgov6, Hsgov6, Osgov6; +wire Vsgov6, Ctgov6, Jtgov6, Qtgov6, Xtgov6, Eugov6, Lugov6, Sugov6, Zugov6, Gvgov6; +wire Nvgov6, Uvgov6, Bwgov6, Iwgov6, Pwgov6, Wwgov6, Dxgov6, Kxgov6, Rxgov6, Yxgov6; +wire Fygov6, Mygov6, Tygov6, Azgov6, Hzgov6, Ozgov6, Vzgov6, C0hov6, J0hov6, Q0hov6; +wire X0hov6, E1hov6, L1hov6, S1hov6, Z1hov6, G2hov6, N2hov6, U2hov6, B3hov6, I3hov6; +wire P3hov6, W3hov6, D4hov6, K4hov6, R4hov6, Y4hov6, F5hov6, M5hov6, T5hov6, A6hov6; +wire H6hov6, O6hov6, V6hov6, C7hov6, J7hov6, Q7hov6, X7hov6, E8hov6, L8hov6, S8hov6; +wire Z8hov6, G9hov6, N9hov6, U9hov6, Bahov6, Iahov6, Pahov6, Wahov6, Dbhov6, Kbhov6; +wire Rbhov6, Ybhov6, Fchov6, Mchov6, Tchov6, Adhov6, Hdhov6, Odhov6, Vdhov6, Cehov6; +wire Jehov6, Qehov6, Xehov6, Efhov6, Lfhov6, Sfhov6, Zfhov6, Gghov6, Nghov6, Ughov6; +wire Bhhov6, Ihhov6, Phhov6, Whhov6, Dihov6, Kihov6, Rihov6, Yihov6, Fjhov6, Mjhov6; +wire Tjhov6, Akhov6, Hkhov6, Okhov6, Vkhov6, Clhov6, Jlhov6, Qlhov6, Xlhov6, Emhov6; +wire Lmhov6, Smhov6, Zmhov6, Gnhov6, Nnhov6, Unhov6, Bohov6, Iohov6, Pohov6, Wohov6; +wire Dphov6, Kphov6, Rphov6, Yphov6, Fqhov6, Mqhov6, Tqhov6, Arhov6, Hrhov6, Orhov6; +wire Vrhov6, Cshov6, Jshov6, Qshov6, Xshov6, Ethov6, Lthov6, Sthov6, Zthov6, Guhov6; +wire Nuhov6, Uuhov6, Bvhov6, Ivhov6, Pvhov6, Wvhov6, Dwhov6, Kwhov6, Rwhov6, Ywhov6; +wire Fxhov6, Mxhov6, Txhov6, Ayhov6, Hyhov6, Oyhov6, Vyhov6, Czhov6, Jzhov6, Qzhov6; +wire Xzhov6, E0iov6, L0iov6, S0iov6, Z0iov6, G1iov6, N1iov6, U1iov6, B2iov6, I2iov6; +wire P2iov6, W2iov6, D3iov6, K3iov6, R3iov6, Y3iov6, F4iov6, M4iov6, T4iov6, A5iov6; +wire H5iov6, O5iov6, V5iov6, C6iov6, J6iov6, Q6iov6, X6iov6, E7iov6, L7iov6, S7iov6; +wire Z7iov6, G8iov6, N8iov6, U8iov6, B9iov6, I9iov6, P9iov6, W9iov6, Daiov6, Kaiov6; +wire Raiov6, Yaiov6, Fbiov6, Mbiov6, Tbiov6, Aciov6, Hciov6, Ociov6, Vciov6, Cdiov6; +wire Jdiov6, Qdiov6, Xdiov6, Eeiov6, Leiov6, Seiov6, Zeiov6, Gfiov6, Nfiov6, Ufiov6; +wire Bgiov6, Igiov6, Pgiov6, Wgiov6, Dhiov6, Khiov6, Rhiov6, Yhiov6, Fiiov6, Miiov6; +wire Tiiov6, Ajiov6, Hjiov6, Ojiov6, Vjiov6, Ckiov6, Jkiov6, Qkiov6, Xkiov6, Eliov6; +wire Lliov6, Sliov6, Zliov6, Gmiov6, Nmiov6, Umiov6, Bniov6, Iniov6, Pniov6, Wniov6; +wire Doiov6, Koiov6, Roiov6, Yoiov6, Fpiov6, Mpiov6, Tpiov6, Aqiov6, Hqiov6, Oqiov6; +wire Vqiov6, Criov6, Jriov6, Qriov6, Xriov6, Esiov6, Lsiov6, Ssiov6, Zsiov6, Gtiov6; +wire Ntiov6, Utiov6, Buiov6, Iuiov6, Puiov6, Wuiov6, Dviov6, Kviov6, Rviov6, Yviov6; +wire Fwiov6, Mwiov6, Twiov6, Axiov6, Hxiov6, Oxiov6, Vxiov6, Cyiov6, Jyiov6, Qyiov6; +wire Xyiov6, Eziov6, Lziov6, Sziov6, Zziov6, G0jov6, N0jov6, U0jov6, B1jov6, I1jov6; +wire P1jov6, W1jov6, D2jov6, K2jov6, R2jov6, Y2jov6, F3jov6, M3jov6, T3jov6, A4jov6; +wire H4jov6, O4jov6, V4jov6, C5jov6, J5jov6, Q5jov6, X5jov6, E6jov6, L6jov6, S6jov6; +wire Z6jov6, G7jov6, N7jov6, U7jov6, B8jov6, I8jov6, P8jov6, W8jov6, D9jov6, K9jov6; +wire R9jov6, Y9jov6, Fajov6, Majov6, Tajov6, Abjov6, Hbjov6, Objov6, Vbjov6, Ccjov6; +wire Jcjov6, Qcjov6, Xcjov6, Edjov6, Ldjov6, Sdjov6, Zdjov6, Gejov6, Nejov6, Uejov6; +wire Bfjov6, Ifjov6, Pfjov6, Wfjov6, Dgjov6, Kgjov6, Rgjov6, Ygjov6, Fhjov6, Mhjov6; +wire Thjov6, Aijov6, Hijov6, Oijov6, Vijov6, Cjjov6, Jjjov6, Qjjov6, Xjjov6, Ekjov6; +wire Lkjov6, Skjov6, Zkjov6, Gljov6, Nljov6, Uljov6, Bmjov6, Imjov6, Pmjov6, Wmjov6; +wire Dnjov6, Knjov6, Rnjov6, Ynjov6, Fojov6, Mojov6, Tojov6, Apjov6, Hpjov6, Opjov6; +wire Vpjov6, Cqjov6, Jqjov6, Qqjov6, Xqjov6, Erjov6, Lrjov6, Srjov6, Zrjov6, Gsjov6; +wire Nsjov6, Usjov6, Btjov6, Itjov6, Ptjov6, Wtjov6, Dujov6, Kujov6, Rujov6, Yujov6; +wire Fvjov6, Mvjov6, Tvjov6, Awjov6, Hwjov6, Owjov6, Vwjov6, Cxjov6, Jxjov6, Qxjov6; +wire Xxjov6, Eyjov6, Lyjov6, Syjov6, Zyjov6, Gzjov6, Nzjov6, Uzjov6, B0kov6, I0kov6; +wire P0kov6, W0kov6, D1kov6, K1kov6, R1kov6, Y1kov6, F2kov6, M2kov6, T2kov6, A3kov6; +wire H3kov6, O3kov6, V3kov6, C4kov6, J4kov6, Q4kov6, X4kov6, E5kov6, L5kov6, S5kov6; +wire Z5kov6, G6kov6, N6kov6, U6kov6, B7kov6, I7kov6, P7kov6, W7kov6, D8kov6, K8kov6; +wire R8kov6, Y8kov6, F9kov6, M9kov6, T9kov6, Aakov6, Hakov6, Oakov6, Vakov6, Cbkov6; +wire Jbkov6, Qbkov6, Xbkov6, Eckov6, Lckov6, Sckov6, Zckov6, Gdkov6, Ndkov6, Udkov6; +wire Bekov6, Iekov6, Pekov6, Wekov6, Dfkov6, Kfkov6, Rfkov6, Yfkov6, Fgkov6, Mgkov6; +wire Tgkov6, Ahkov6, Hhkov6, Ohkov6, Vhkov6, Cikov6, Jikov6, Qikov6, Xikov6, Ejkov6; +wire Ljkov6, Sjkov6, Zjkov6, Gkkov6, Nkkov6, Ukkov6, Blkov6, Ilkov6, Plkov6, Wlkov6; +wire Dmkov6, Kmkov6, Rmkov6, Ymkov6, Fnkov6, Mnkov6, Tnkov6, Aokov6, Hokov6, Ookov6; +wire Vokov6, Cpkov6, Jpkov6, Qpkov6, Xpkov6, Eqkov6, Lqkov6, Sqkov6, Zqkov6, Grkov6; +wire Nrkov6, Urkov6, Bskov6, Iskov6, Pskov6, Wskov6, Dtkov6, Ktkov6, Rtkov6, Ytkov6; +wire Fukov6, Mukov6, Tukov6, Avkov6, Hvkov6, Ovkov6, Vvkov6, Cwkov6, Jwkov6, Qwkov6; +wire Xwkov6, Exkov6, Lxkov6, Sxkov6, Zxkov6, Gykov6, Nykov6, Uykov6, Bzkov6, Izkov6; +wire Pzkov6, Wzkov6, D0lov6, K0lov6, R0lov6, Y0lov6, F1lov6, M1lov6, T1lov6, A2lov6; +wire H2lov6, O2lov6, V2lov6, C3lov6, J3lov6, Q3lov6, X3lov6, E4lov6, L4lov6, S4lov6; +wire Z4lov6, G5lov6, N5lov6, U5lov6, B6lov6, I6lov6, P6lov6, W6lov6, D7lov6, K7lov6; +wire R7lov6, Y7lov6, F8lov6, M8lov6, T8lov6, A9lov6, H9lov6, O9lov6, V9lov6, Calov6; +wire Jalov6, Qalov6, Xalov6, Eblov6, Lblov6, Sblov6, Zblov6, Gclov6, Nclov6, Uclov6; +wire Bdlov6, Idlov6, Pdlov6, Wdlov6, Delov6, Kelov6, Relov6, Yelov6, Fflov6, Mflov6; +wire Tflov6, Aglov6, Hglov6, Oglov6, Vglov6, Chlov6, Jhlov6, Qhlov6, Xhlov6, Eilov6; +wire Lilov6, Silov6, Zilov6, Gjlov6, Njlov6, Ujlov6, Bklov6, Iklov6, Pklov6, Wklov6; +wire Dllov6, Kllov6, Rllov6, Yllov6, Fmlov6, Mmlov6, Tmlov6, Anlov6, Hnlov6, Onlov6; +wire Vnlov6, Colov6, Jolov6, Qolov6, Xolov6, Eplov6, Lplov6, Splov6, Zplov6, Gqlov6; +wire Nqlov6, Uqlov6, Brlov6, Irlov6, Prlov6, Wrlov6, Dslov6, Kslov6, Rslov6, Yslov6; +wire Ftlov6, Mtlov6, Ttlov6, Aulov6, Hulov6, Oulov6, Vulov6, Cvlov6, Jvlov6, Qvlov6; +wire Xvlov6, Ewlov6, Lwlov6, Swlov6, Zwlov6, Gxlov6, Nxlov6, Uxlov6, Bylov6, Iylov6; +wire Pylov6, Wylov6, Dzlov6, Kzlov6, Rzlov6, Yzlov6, F0mov6, M0mov6, T0mov6, A1mov6; +wire H1mov6, O1mov6, V1mov6, C2mov6, J2mov6, Q2mov6, X2mov6, E3mov6, L3mov6, S3mov6; +wire Z3mov6, G4mov6, N4mov6, U4mov6, B5mov6, I5mov6, P5mov6, W5mov6, D6mov6, K6mov6; +wire R6mov6, Y6mov6, F7mov6, M7mov6, T7mov6, A8mov6, H8mov6, O8mov6, V8mov6, C9mov6; +wire J9mov6, Q9mov6, X9mov6, Eamov6, Lamov6, Samov6, Zamov6, Gbmov6, Nbmov6, Ubmov6; +wire Bcmov6, Icmov6, Pcmov6, Wcmov6, Ddmov6, Kdmov6, Rdmov6, Ydmov6, Femov6, Memov6; +wire Temov6, Afmov6, Hfmov6, Ofmov6, Vfmov6, Cgmov6, Jgmov6, Qgmov6, Xgmov6, Ehmov6; +wire Lhmov6, Shmov6, Zhmov6, Gimov6, Nimov6, Uimov6, Bjmov6, Ijmov6, Pjmov6, Wjmov6; +wire Dkmov6, Kkmov6, Rkmov6, Ykmov6, Flmov6, Mlmov6, Tlmov6, Ammov6, Hmmov6, Ommov6; +wire Vmmov6, Cnmov6, Jnmov6, Qnmov6, Xnmov6, Eomov6, Lomov6, Somov6, Zomov6, Gpmov6; +wire Npmov6, Upmov6, Bqmov6, Iqmov6, Pqmov6, Wqmov6, Drmov6, Krmov6, Rrmov6, Yrmov6; +wire Fsmov6, Msmov6, Tsmov6, Atmov6, Htmov6, Otmov6, Vtmov6, Cumov6, Jumov6, Qumov6; +wire Xumov6, Evmov6, Lvmov6, Svmov6, Zvmov6, Gwmov6, Nwmov6, Uwmov6, Bxmov6, Ixmov6; +wire Pxmov6, Wxmov6, Dymov6, Kymov6, Rymov6, Yymov6, Fzmov6, Mzmov6, Tzmov6, A0nov6; +wire H0nov6, O0nov6, V0nov6, C1nov6, J1nov6, Q1nov6, X1nov6, E2nov6, L2nov6, S2nov6; +wire Z2nov6, G3nov6, N3nov6, U3nov6, B4nov6, I4nov6, P4nov6, W4nov6, D5nov6, K5nov6; +wire R5nov6, Y5nov6, F6nov6, M6nov6, T6nov6, A7nov6, H7nov6, O7nov6, V7nov6, C8nov6; +wire J8nov6, Q8nov6, X8nov6, E9nov6, L9nov6, S9nov6, Z9nov6, Ganov6, Nanov6, Uanov6; +wire Bbnov6, Ibnov6, Pbnov6, Wbnov6, Dcnov6, Kcnov6, Rcnov6, Ycnov6, Fdnov6, Mdnov6; +wire Tdnov6, Aenov6, Henov6, Oenov6, Venov6, Cfnov6, Jfnov6, Qfnov6, Xfnov6, Egnov6; +wire Lgnov6, Sgnov6, Zgnov6, Ghnov6, Nhnov6, Uhnov6, Binov6, Iinov6, Pinov6, Winov6; +wire Djnov6, Kjnov6, Rjnov6, Yjnov6, Fknov6, Mknov6, Tknov6, Alnov6, Hlnov6, Olnov6; +wire Vlnov6, Cmnov6, Jmnov6, Qmnov6, Xmnov6, Ennov6, Lnnov6, Snnov6, Znnov6, Gonov6; +wire Nonov6, Uonov6, Bpnov6, Ipnov6, Ppnov6, Wpnov6, Dqnov6, Kqnov6, Rqnov6, Yqnov6; +wire Frnov6, Mrnov6, Trnov6, Asnov6, Hsnov6, Osnov6, Vsnov6, Ctnov6, Jtnov6, Qtnov6; +wire Xtnov6, Eunov6, Lunov6, Sunov6, Zunov6, Gvnov6, Nvnov6, Uvnov6, Bwnov6, Iwnov6; +wire Pwnov6, Wwnov6, Dxnov6, Kxnov6, Rxnov6, Yxnov6, Fynov6, Mynov6, Tynov6, Aznov6; +wire Hznov6, Oznov6, Vznov6, C0oov6, J0oov6, Q0oov6, X0oov6, E1oov6, L1oov6, S1oov6; +wire Z1oov6, G2oov6, N2oov6, U2oov6, B3oov6, I3oov6, P3oov6, W3oov6, D4oov6, K4oov6; +wire R4oov6, Y4oov6, F5oov6, M5oov6, T5oov6, A6oov6, H6oov6, O6oov6, V6oov6, C7oov6; +wire J7oov6, Q7oov6, X7oov6, E8oov6, L8oov6, S8oov6, Z8oov6, G9oov6, N9oov6, U9oov6; +wire Baoov6, Iaoov6, Paoov6, Waoov6, Dboov6, Kboov6, Rboov6, Yboov6, Fcoov6, Mcoov6; +wire Tcoov6, Adoov6, Hdoov6, Odoov6, Vdoov6, Ceoov6, Jeoov6, Qeoov6, Xeoov6, Efoov6; +wire Lfoov6, Sfoov6, Zfoov6, Ggoov6, Ngoov6, Ugoov6, Bhoov6, Ihoov6, Phoov6, Whoov6; +wire Dioov6, Kioov6, Rioov6, Yioov6, Fjoov6, Mjoov6, Tjoov6, Akoov6, Hkoov6, Okoov6; +wire Vkoov6, Cloov6, Jloov6, Qloov6, Xloov6, Emoov6, Lmoov6, Smoov6, Zmoov6, Gnoov6; +wire Nnoov6, Unoov6, Booov6, Iooov6, Pooov6, Wooov6, Dpoov6, Kpoov6, Rpoov6, Ypoov6; +wire Fqoov6, Mqoov6, Tqoov6, Aroov6, Hroov6, Oroov6, Vroov6, Csoov6, Jsoov6, Qsoov6; +wire Xsoov6, Etoov6, Ltoov6, Stoov6, Ztoov6, Guoov6, Nuoov6, Uuoov6, Bvoov6, Ivoov6; +wire Pvoov6, Wvoov6, Dwoov6, Kwoov6, Rwoov6, Ywoov6, Fxoov6, Mxoov6, Txoov6, Ayoov6; +wire Hyoov6, Oyoov6, Vyoov6, Czoov6, Jzoov6, Qzoov6, Xzoov6, E0pov6, L0pov6, S0pov6; +wire Z0pov6, G1pov6, N1pov6, U1pov6, B2pov6, I2pov6, P2pov6, W2pov6, D3pov6, K3pov6; +wire R3pov6, Y3pov6, F4pov6, M4pov6, T4pov6, A5pov6, H5pov6, O5pov6, V5pov6, C6pov6; +wire J6pov6, Q6pov6, X6pov6, E7pov6, L7pov6, S7pov6, Z7pov6, G8pov6, N8pov6, U8pov6; +wire B9pov6, I9pov6, P9pov6, W9pov6, Dapov6, Kapov6, Rapov6, Yapov6, Fbpov6, Mbpov6; +wire Tbpov6, Acpov6, Hcpov6, Ocpov6, Vcpov6, Cdpov6, Jdpov6, Qdpov6, Xdpov6, Eepov6; +wire Lepov6, Sepov6, Zepov6, Gfpov6, Nfpov6, Ufpov6, Bgpov6, Igpov6, Pgpov6, Wgpov6; +wire Dhpov6, Khpov6, Rhpov6, Yhpov6, Fipov6, Mipov6, Tipov6, Ajpov6, Hjpov6, Ojpov6; +wire Vjpov6, Ckpov6, Jkpov6, Qkpov6, Xkpov6, Elpov6, Llpov6, Slpov6, Zlpov6, Gmpov6; +wire Nmpov6, Umpov6, Bnpov6, Inpov6, Pnpov6, Wnpov6, Dopov6, Kopov6, Ropov6, Yopov6; +wire Fppov6, Mppov6, Tppov6, Aqpov6, Hqpov6, Oqpov6, Vqpov6, Crpov6, Jrpov6, Qrpov6; +wire Xrpov6, Espov6, Lspov6, Sspov6, Zspov6, Gtpov6, Ntpov6, Utpov6, Bupov6, Iupov6; +wire Pupov6, Wupov6, Dvpov6, Kvpov6, Rvpov6, Yvpov6, Fwpov6, Mwpov6, Twpov6, Axpov6; +wire Hxpov6, Oxpov6, Vxpov6, Cypov6, Jypov6, Qypov6, Xypov6, Ezpov6, Lzpov6, Szpov6; +wire Zzpov6, G0qov6, N0qov6, U0qov6, B1qov6, I1qov6, P1qov6, W1qov6, D2qov6, K2qov6; +wire R2qov6, Y2qov6, F3qov6, M3qov6, T3qov6, A4qov6, H4qov6, O4qov6, V4qov6, C5qov6; +wire J5qov6, Q5qov6, X5qov6, E6qov6, L6qov6, S6qov6, Z6qov6, G7qov6, N7qov6, U7qov6; +wire B8qov6, I8qov6, P8qov6, W8qov6, D9qov6, K9qov6, R9qov6, Y9qov6, Faqov6, Maqov6; +wire Taqov6, Abqov6, Hbqov6, Obqov6, Vbqov6, Ccqov6, Jcqov6, Qcqov6, Xcqov6, Edqov6; +wire Ldqov6, Sdqov6, Zdqov6, Geqov6, Neqov6, Ueqov6, Bfqov6, Ifqov6, Pfqov6, Wfqov6; +wire Dgqov6, Kgqov6, Rgqov6, Ygqov6, Fhqov6, Mhqov6, Thqov6, Aiqov6, Hiqov6, Oiqov6; +wire Viqov6, Cjqov6, Jjqov6, Qjqov6, Xjqov6, Ekqov6, Lkqov6, Skqov6, Zkqov6, Glqov6; +wire Nlqov6, Ulqov6, Bmqov6, Imqov6, Pmqov6, Wmqov6, Dnqov6, Knqov6, Rnqov6, Ynqov6; +wire Foqov6, Moqov6, Toqov6, Apqov6, Hpqov6, Opqov6, Vpqov6, Cqqov6, Jqqov6, Qqqov6; +wire Xqqov6, Erqov6, Lrqov6, Srqov6, Zrqov6, Gsqov6, Nsqov6, Usqov6, Btqov6, Itqov6; +wire Ptqov6, Wtqov6, Duqov6, Kuqov6, Ruqov6, Yuqov6, Fvqov6, Mvqov6, Tvqov6, Awqov6; +wire Hwqov6, Owqov6, Vwqov6, Cxqov6, Jxqov6, Qxqov6, Xxqov6, Eyqov6, Lyqov6, Syqov6; +wire Zyqov6, Gzqov6, Nzqov6, Uzqov6, B0rov6, I0rov6, P0rov6, W0rov6, D1rov6, K1rov6; +wire R1rov6, Y1rov6, F2rov6, M2rov6, T2rov6, A3rov6, H3rov6, O3rov6, V3rov6, C4rov6; +wire J4rov6, Q4rov6, X4rov6, E5rov6, L5rov6, S5rov6, Z5rov6, G6rov6, N6rov6, U6rov6; +wire B7rov6, I7rov6, P7rov6, W7rov6, D8rov6, K8rov6, R8rov6, Y8rov6, F9rov6, M9rov6; +wire T9rov6, Aarov6, Harov6, Oarov6, Varov6, Cbrov6, Jbrov6, Qbrov6, Xbrov6, Ecrov6; +wire Lcrov6, Scrov6, Zcrov6, Gdrov6, Ndrov6, Udrov6, Berov6, Ierov6, Perov6, Werov6; +wire Dfrov6, Kfrov6, Rfrov6, Yfrov6, Fgrov6, Mgrov6, Tgrov6, Ahrov6, Hhrov6, Ohrov6; +wire Vhrov6, Cirov6, Jirov6, Qirov6, Xirov6, Ejrov6, Ljrov6, Sjrov6, Zjrov6, Gkrov6; +wire Nkrov6, Ukrov6, Blrov6, Ilrov6, Plrov6, Wlrov6, Dmrov6, Kmrov6, Rmrov6, Ymrov6; +wire Fnrov6, Mnrov6, Tnrov6, Aorov6, Horov6, Oorov6, Vorov6, Cprov6, Jprov6, Qprov6; +wire Xprov6, Eqrov6, Lqrov6, Sqrov6, Zqrov6, Grrov6, Nrrov6, Urrov6, Bsrov6, Isrov6; +wire Psrov6, Wsrov6, Dtrov6, Ktrov6, Rtrov6, Ytrov6, Furov6, Murov6, Turov6, Avrov6; +wire Hvrov6, Ovrov6, Vvrov6, Cwrov6, Jwrov6, Qwrov6, Xwrov6, Exrov6, Lxrov6, Sxrov6; +wire Zxrov6, Gyrov6, Nyrov6, Uyrov6, Bzrov6, Izrov6, Pzrov6, Wzrov6, D0sov6, K0sov6; +wire R0sov6, Y0sov6, F1sov6, M1sov6, T1sov6, A2sov6, H2sov6, O2sov6, V2sov6, C3sov6; +wire J3sov6, Q3sov6, X3sov6, E4sov6, L4sov6, S4sov6, Z4sov6, G5sov6, N5sov6, U5sov6; +wire B6sov6, I6sov6, P6sov6, W6sov6, D7sov6, K7sov6, R7sov6, Y7sov6, F8sov6, M8sov6; +wire T8sov6, A9sov6, H9sov6, O9sov6, V9sov6, Casov6, Jasov6, Qasov6, Xasov6, Ebsov6; +wire Lbsov6, Sbsov6, Zbsov6, Gcsov6, Ncsov6, Ucsov6, Bdsov6, Idsov6, Pdsov6, Wdsov6; +wire Desov6, Kesov6, Resov6, Yesov6, Ffsov6, Mfsov6, Tfsov6, Agsov6, Hgsov6, Ogsov6; +wire Vgsov6, Chsov6, Jhsov6, Qhsov6, Xhsov6, Eisov6, Lisov6, Sisov6, Zisov6, Gjsov6; +wire Njsov6, Ujsov6, Bksov6, Iksov6, Pksov6, Wksov6, Dlsov6, Klsov6, Rlsov6, Ylsov6; +wire Fmsov6, Mmsov6, Tmsov6, Ansov6, Hnsov6, Onsov6, Vnsov6, Cosov6, Josov6, Qosov6; +wire Xosov6, Epsov6, Lpsov6, Spsov6, Zpsov6, Gqsov6, Nqsov6, Uqsov6, Brsov6, Irsov6; +wire Prsov6, Wrsov6, Dssov6, Kssov6, Rssov6, Yssov6, Ftsov6, Mtsov6, Ttsov6, Ausov6; +wire Husov6, Ousov6, Vusov6, Cvsov6, Jvsov6, Qvsov6, Xvsov6, Ewsov6, Lwsov6, Swsov6; +wire Zwsov6, Gxsov6, Nxsov6, Uxsov6, Bysov6, Iysov6, Pysov6, Wysov6, Dzsov6, Kzsov6; +wire Rzsov6, Yzsov6, F0tov6, M0tov6, T0tov6, A1tov6, H1tov6, O1tov6, V1tov6, C2tov6; +wire J2tov6, Q2tov6, X2tov6, E3tov6, L3tov6, S3tov6, Z3tov6, G4tov6, N4tov6, U4tov6; +wire B5tov6, I5tov6, P5tov6, W5tov6, D6tov6, K6tov6, R6tov6, Y6tov6, F7tov6, M7tov6; +wire T7tov6, A8tov6, H8tov6, O8tov6, V8tov6, C9tov6, J9tov6, Q9tov6, X9tov6, Eatov6; +wire Latov6, Satov6, Zatov6, Gbtov6, Nbtov6, Ubtov6, Bctov6, Ictov6, Pctov6, Wctov6; +wire Ddtov6, Kdtov6, Rdtov6, Ydtov6, Fetov6, Metov6, Tetov6, Aftov6, Hftov6, Oftov6; +wire Vftov6, Cgtov6, Jgtov6, Qgtov6, Xgtov6, Ehtov6, Lhtov6, Shtov6, Zhtov6, Gitov6; +wire Nitov6, Uitov6, Bjtov6, Ijtov6, Pjtov6, Wjtov6, Dktov6, Kktov6, Rktov6, Yktov6; +wire Fltov6, Mltov6, Tltov6, Amtov6, Hmtov6, Omtov6, Vmtov6, Cntov6, Jntov6, Mmehw6; +wire Tmehw6, Anehw6, Hnehw6, Onehw6, Vnehw6, Coehw6, Joehw6, Qoehw6, Xoehw6, Epehw6; +wire Lpehw6, Spehw6, Zpehw6, Gqehw6, Nqehw6, Uqehw6, Brehw6, Irehw6, Prehw6, Wrehw6; +wire Dsehw6, Ksehw6, Rsehw6, Ysehw6, Ftehw6, Mtehw6, Ttehw6, Auehw6, Huehw6, Ouehw6; +wire Vuehw6, Cvehw6, Jvehw6, Qvehw6, Xvehw6, Ewehw6, Lwehw6, Swehw6, Zwehw6, Gxehw6; +wire Nxehw6, Uxehw6, Byehw6, Iyehw6, Pyehw6, Wyehw6, Dzehw6, Kzehw6, Rzehw6, Yzehw6; +wire F0fhw6, M0fhw6, T0fhw6, A1fhw6, H1fhw6, O1fhw6, V1fhw6, C2fhw6, J2fhw6, Q2fhw6; +wire X2fhw6, E3fhw6, L3fhw6, S3fhw6, Z3fhw6, G4fhw6, N4fhw6, U4fhw6, B5fhw6, I5fhw6; +wire P5fhw6, W5fhw6, D6fhw6, K6fhw6, R6fhw6, Y6fhw6, F7fhw6, M7fhw6, T7fhw6, A8fhw6; +wire H8fhw6, O8fhw6, V8fhw6, C9fhw6, J9fhw6, Q9fhw6, X9fhw6, Eafhw6, Lafhw6, Safhw6; +wire Zafhw6, Gbfhw6, Nbfhw6, Ubfhw6, Bcfhw6, Icfhw6, Pcfhw6, Wcfhw6, Ddfhw6, Kdfhw6; +wire Rdfhw6, Ydfhw6, Fefhw6, Mefhw6, Tefhw6, Affhw6, Hffhw6, Offhw6, Vffhw6, Cgfhw6; +wire Jgfhw6, Qgfhw6, Xgfhw6, Ehfhw6, Lhfhw6, Shfhw6, Zhfhw6, Gifhw6, Nifhw6, Uifhw6; +wire Bjfhw6, Ijfhw6, Pjfhw6, Wjfhw6, Dkfhw6, Kkfhw6, Rkfhw6, Ykfhw6, Flfhw6, Mlfhw6; +wire Tlfhw6, Amfhw6, Hmfhw6, Omfhw6, Vmfhw6, Cnfhw6, Jnfhw6, Qnfhw6, Xnfhw6, Eofhw6; +wire Lofhw6, Sofhw6, Zofhw6, Gpfhw6, Npfhw6, Upfhw6, Bqfhw6, Iqfhw6, Pqfhw6, Wqfhw6; +wire Drfhw6, Krfhw6, Rrfhw6, Yrfhw6, Fsfhw6, Msfhw6, Tsfhw6, Atfhw6, Htfhw6, Otfhw6; +wire Vtfhw6, Cufhw6, Jufhw6, Qufhw6, Xufhw6, Evfhw6, Lvfhw6, Svfhw6, Zvfhw6, Gwfhw6; +wire Nwfhw6, Uwfhw6, Bxfhw6, Ixfhw6, Pxfhw6, Wxfhw6, Dyfhw6, Kyfhw6, Ryfhw6, Yyfhw6; +wire Fzfhw6, Mzfhw6, Tzfhw6, A0ghw6, H0ghw6, O0ghw6, V0ghw6, C1ghw6, J1ghw6, Q1ghw6; +wire X1ghw6, E2ghw6, L2ghw6, S2ghw6, Z2ghw6, G3ghw6, N3ghw6, U3ghw6, B4ghw6, I4ghw6; +wire P4ghw6, W4ghw6, D5ghw6, K5ghw6, R5ghw6, Y5ghw6, F6ghw6, M6ghw6, T6ghw6, A7ghw6; +wire H7ghw6, O7ghw6, V7ghw6, C8ghw6, J8ghw6, Q8ghw6, X8ghw6, E9ghw6, L9ghw6, S9ghw6; +wire Z9ghw6, Gaghw6, Naghw6, Uaghw6, Bbghw6, Ibghw6, Pbghw6, Wbghw6, Dcghw6, Kcghw6; +wire Rcghw6, Ycghw6, Fdghw6, Mdghw6, Tdghw6, Aeghw6, Heghw6, Oeghw6, Veghw6, Cfghw6; +wire Jfghw6, Qfghw6, Xfghw6, Egghw6, Lgghw6, Sgghw6, Zgghw6, Ghghw6, Nhghw6, Uhghw6; +wire Bighw6, Iighw6, Pighw6, Wighw6, Djghw6, Kjghw6, Rjghw6, Yjghw6, Fkghw6, Mkghw6; +wire Tkghw6, Alghw6, Hlghw6, Olghw6, Vlghw6, Cmghw6, Jmghw6, Qmghw6, Xmghw6, Enghw6; +wire Lnghw6, Snghw6, Znghw6, Goghw6, Noghw6, Uoghw6, Bpghw6, Ipghw6, Ppghw6, Wpghw6; +wire Dqghw6, Kqghw6, Rqghw6, Yqghw6, Frghw6, Mrghw6, Trghw6, Asghw6, Hsghw6, Osghw6; +wire Vsghw6, Ctghw6, Jtghw6, Qtghw6, Xtghw6, Eughw6, Lughw6, Sughw6, Zughw6, Gvghw6; +wire Nvghw6, Uvghw6, Bwghw6, Iwghw6, Pwghw6, Wwghw6, Dxghw6, Kxghw6, Rxghw6, Yxghw6; +wire Fyghw6, Myghw6, Tyghw6, Azghw6, Hzghw6, Ozghw6, Vzghw6, C0hhw6, J0hhw6, Q0hhw6; +wire X0hhw6, E1hhw6, L1hhw6, S1hhw6, Z1hhw6, G2hhw6, N2hhw6, U2hhw6, B3hhw6, I3hhw6; +wire P3hhw6, W3hhw6, D4hhw6, K4hhw6, R4hhw6, Y4hhw6, F5hhw6, M5hhw6, T5hhw6, A6hhw6; +wire H6hhw6, O6hhw6, V6hhw6, C7hhw6, J7hhw6, Q7hhw6, X7hhw6, E8hhw6, L8hhw6, S8hhw6; +wire Z8hhw6, G9hhw6, N9hhw6, U9hhw6, Bahhw6, Iahhw6, Pahhw6, Wahhw6, Dbhhw6, Kbhhw6; +wire Rbhhw6, Ybhhw6, Fchhw6, Mchhw6, Tchhw6, Adhhw6, Hdhhw6, Odhhw6, Vdhhw6, Cehhw6; +wire Jehhw6, Qehhw6, Xehhw6, Efhhw6, Lfhhw6, Sfhhw6, Zfhhw6, Gghhw6, Nghhw6, Ughhw6; +wire Bhhhw6, Ihhhw6, Phhhw6, Whhhw6, Dihhw6, Kihhw6, Rihhw6, Yihhw6, Fjhhw6, Mjhhw6; +wire Tjhhw6, Akhhw6, Hkhhw6, Okhhw6, Vkhhw6, Clhhw6, Jlhhw6, Qlhhw6, Xlhhw6, Emhhw6; +wire Lmhhw6, Smhhw6, Zmhhw6, Gnhhw6, Nnhhw6, Unhhw6, Bohhw6, Iohhw6, Pohhw6, Wohhw6; +wire Dphhw6, Kphhw6, Rphhw6, Yphhw6, Fqhhw6, Mqhhw6, Tqhhw6, Arhhw6, Hrhhw6, Orhhw6; +wire Vrhhw6, Cshhw6, Jshhw6, Qshhw6, Xshhw6, Ethhw6, Lthhw6, Sthhw6, Zthhw6, Guhhw6; +wire Nuhhw6, Uuhhw6, Bvhhw6, Ivhhw6, Pvhhw6, Wvhhw6, Dwhhw6, Kwhhw6, Rwhhw6, Ywhhw6; +wire Fxhhw6, Mxhhw6, Txhhw6, Ayhhw6, Hyhhw6, Oyhhw6, Vyhhw6, Czhhw6, Jzhhw6, Qzhhw6; +wire Xzhhw6, E0ihw6, L0ihw6, S0ihw6, Z0ihw6, G1ihw6, N1ihw6, U1ihw6, B2ihw6, I2ihw6; +wire P2ihw6, W2ihw6, D3ihw6, K3ihw6, R3ihw6, Y3ihw6, F4ihw6, M4ihw6, T4ihw6, A5ihw6; +wire H5ihw6, O5ihw6, V5ihw6, C6ihw6, J6ihw6, Q6ihw6, X6ihw6, E7ihw6, L7ihw6, S7ihw6; +wire Z7ihw6, G8ihw6, N8ihw6, U8ihw6, B9ihw6, I9ihw6, P9ihw6, W9ihw6, Daihw6, Kaihw6; +wire Raihw6, Yaihw6, Fbihw6, Mbihw6, Tbihw6, Acihw6, Hcihw6, Ocihw6, Vcihw6, Cdihw6; +wire Jdihw6, Qdihw6, Xdihw6, Eeihw6, Leihw6, Seihw6, Zeihw6, Gfihw6, Nfihw6, Ufihw6; +wire Bgihw6, Igihw6, Pgihw6, Wgihw6, Dhihw6, Khihw6, Rhihw6, Yhihw6, Fiihw6, Miihw6; +wire Tiihw6, Ajihw6, Hjihw6, Ojihw6, Vjihw6, Ckihw6, Jkihw6, Qkihw6, Xkihw6, Elihw6; +wire Llihw6, Slihw6, Zlihw6, Gmihw6, Nmihw6, Umihw6, Bnihw6, Inihw6, Pnihw6, Wnihw6; +wire Doihw6, Koihw6, Roihw6, Yoihw6, Fpihw6, Mpihw6, Tpihw6, Aqihw6, Hqihw6, Oqihw6; +wire Vqihw6, Crihw6, Jrihw6, Qrihw6, Xrihw6, Esihw6, Lsihw6, Ssihw6, Zsihw6, Gtihw6; +wire Ntihw6, Utihw6, Buihw6, Iuihw6, Puihw6, Wuihw6, Dvihw6, Kvihw6, Rvihw6, Yvihw6; +wire Fwihw6, Mwihw6, Twihw6, Axihw6, Hxihw6, Oxihw6, Vxihw6, Cyihw6, Jyihw6, Qyihw6; +wire Xyihw6, Ezihw6, Lzihw6, Szihw6, Zzihw6, G0jhw6, N0jhw6, U0jhw6, B1jhw6, I1jhw6; +wire P1jhw6, W1jhw6, D2jhw6, K2jhw6, R2jhw6, Y2jhw6, F3jhw6, M3jhw6, T3jhw6, A4jhw6; +wire H4jhw6, O4jhw6, V4jhw6, C5jhw6, J5jhw6, Q5jhw6, X5jhw6, E6jhw6, L6jhw6, S6jhw6; +wire Z6jhw6, G7jhw6, N7jhw6, U7jhw6, B8jhw6, I8jhw6, P8jhw6, W8jhw6, D9jhw6, K9jhw6; +wire R9jhw6, Y9jhw6, Fajhw6, Majhw6, Tajhw6, Abjhw6, Hbjhw6, Objhw6, Vbjhw6, Ccjhw6; +wire Jcjhw6, Qcjhw6, Xcjhw6, Edjhw6, Ldjhw6, Sdjhw6, Zdjhw6, Gejhw6, Nejhw6, Uejhw6; +wire Bfjhw6, Ifjhw6, Pfjhw6, Wfjhw6, Dgjhw6, Kgjhw6, Rgjhw6, Ygjhw6, Fhjhw6, Mhjhw6; +wire Thjhw6, Aijhw6, Hijhw6, Oijhw6, Vijhw6, Cjjhw6, Jjjhw6, Qjjhw6, Xjjhw6, Ekjhw6; +wire Lkjhw6, Skjhw6, Zkjhw6, Gljhw6, Nljhw6, Uljhw6, Bmjhw6, Imjhw6, Pmjhw6, Wmjhw6; +wire Dnjhw6, Knjhw6, Rnjhw6, Ynjhw6, Fojhw6, Mojhw6, Tojhw6, Apjhw6, Hpjhw6, Opjhw6; +wire Vpjhw6, Cqjhw6, Jqjhw6, Qqjhw6, Xqjhw6, Erjhw6, Lrjhw6, Srjhw6, Zrjhw6, Gsjhw6; +wire Nsjhw6, Usjhw6, Btjhw6, Itjhw6, Ptjhw6, Wtjhw6, Dujhw6, Kujhw6, Rujhw6, Yujhw6; +wire Fvjhw6, Mvjhw6, Tvjhw6, Awjhw6, Hwjhw6, Owjhw6, Vwjhw6, Cxjhw6, Jxjhw6, Qxjhw6; +wire Xxjhw6, Eyjhw6, Lyjhw6, Syjhw6, Zyjhw6, Gzjhw6, Nzjhw6, Uzjhw6, B0khw6, I0khw6; +wire P0khw6, W0khw6, D1khw6, K1khw6, R1khw6, Y1khw6, F2khw6, M2khw6, T2khw6, A3khw6; +wire H3khw6, O3khw6, V3khw6, C4khw6, J4khw6, Q4khw6, X4khw6, E5khw6, L5khw6, S5khw6; +wire Z5khw6, G6khw6, N6khw6, U6khw6, B7khw6, I7khw6, P7khw6, W7khw6, D8khw6, K8khw6; +wire R8khw6, Y8khw6, F9khw6, M9khw6, T9khw6, Aakhw6, Hakhw6, Oakhw6, Vakhw6, Cbkhw6; +wire Jbkhw6, Qbkhw6, Xbkhw6, Eckhw6, Lckhw6, Sckhw6, Zckhw6, Gdkhw6, Ndkhw6, Udkhw6; +wire Bekhw6, Iekhw6, Pekhw6, Wekhw6, Dfkhw6, Kfkhw6, Rfkhw6, Yfkhw6, Fgkhw6, Mgkhw6; +wire Tgkhw6, Ahkhw6, Hhkhw6, Ohkhw6, Vhkhw6, Cikhw6, Jikhw6, Qikhw6, Xikhw6, Ejkhw6; +wire Ljkhw6, Sjkhw6, Zjkhw6, Gkkhw6, Nkkhw6, Ukkhw6, Blkhw6, Ilkhw6, Plkhw6, Wlkhw6; +wire Dmkhw6, Kmkhw6, Rmkhw6, Ymkhw6, Fnkhw6, Mnkhw6, Tnkhw6, Aokhw6, Hokhw6, Ookhw6; +wire Vokhw6, Cpkhw6, Jpkhw6, Qpkhw6, Xpkhw6, Eqkhw6, Lqkhw6, Sqkhw6, Zqkhw6, Grkhw6; +wire Nrkhw6, Urkhw6, Bskhw6, Iskhw6, Pskhw6, Wskhw6, Dtkhw6, Ktkhw6, Rtkhw6, Ytkhw6; +wire Fukhw6, Mukhw6, Tukhw6, Avkhw6, Hvkhw6, Ovkhw6, Vvkhw6, Cwkhw6, Jwkhw6, Qwkhw6; +wire Xwkhw6, Exkhw6, Lxkhw6, Sxkhw6, Zxkhw6, Gykhw6, Nykhw6, Uykhw6, Bzkhw6, Izkhw6; +wire Pzkhw6, Wzkhw6, D0lhw6, K0lhw6, R0lhw6, Y0lhw6, F1lhw6, M1lhw6, T1lhw6, A2lhw6; +wire H2lhw6, O2lhw6, V2lhw6, C3lhw6, J3lhw6, Q3lhw6, X3lhw6, E4lhw6, L4lhw6, S4lhw6; +wire Z4lhw6, G5lhw6, N5lhw6, U5lhw6, B6lhw6, I6lhw6, P6lhw6, W6lhw6, D7lhw6, K7lhw6; +wire R7lhw6, Y7lhw6, F8lhw6, M8lhw6, T8lhw6, A9lhw6, H9lhw6, O9lhw6, V9lhw6, Calhw6; +wire Jalhw6, Qalhw6, Xalhw6, Eblhw6, Lblhw6, Sblhw6, Zblhw6, Gclhw6, Nclhw6, Uclhw6; +wire Bdlhw6, Idlhw6, Pdlhw6, Wdlhw6, Delhw6, Kelhw6, Relhw6, Yelhw6, Fflhw6, Mflhw6; +wire Tflhw6, Aglhw6, Hglhw6, Oglhw6, Vglhw6, Chlhw6, Jhlhw6, Qhlhw6, Xhlhw6, Eilhw6; +wire Lilhw6, Silhw6, Zilhw6, Gjlhw6, Njlhw6, Ujlhw6, Bklhw6, Iklhw6, Pklhw6, Wklhw6; +wire Dllhw6, Kllhw6, Rllhw6, Yllhw6, Fmlhw6, Mmlhw6, Tmlhw6, Anlhw6, Hnlhw6, Onlhw6; +wire Vnlhw6, Colhw6, Jolhw6, Qolhw6, Xolhw6, Eplhw6, Lplhw6, Splhw6, Zplhw6, Gqlhw6; +wire Nqlhw6, Uqlhw6, Brlhw6, Irlhw6, Prlhw6, Wrlhw6, Dslhw6, Kslhw6, Rslhw6, Yslhw6; +wire Ftlhw6, Mtlhw6, Ttlhw6, Aulhw6, Hulhw6, Oulhw6, Vulhw6, Cvlhw6, Jvlhw6, Qvlhw6; +wire Xvlhw6, Ewlhw6, Lwlhw6, Swlhw6, Zwlhw6, Gxlhw6, Nxlhw6, Uxlhw6, Bylhw6, Iylhw6; +wire Pylhw6, Wylhw6, Dzlhw6, Kzlhw6, Rzlhw6, Yzlhw6, F0mhw6, M0mhw6, T0mhw6, A1mhw6; +wire H1mhw6, O1mhw6, V1mhw6, C2mhw6, J2mhw6, Q2mhw6, X2mhw6, E3mhw6, L3mhw6, S3mhw6; +wire Z3mhw6, G4mhw6, N4mhw6, U4mhw6, B5mhw6, I5mhw6, P5mhw6, W5mhw6, D6mhw6, K6mhw6; +wire R6mhw6, Y6mhw6, F7mhw6, M7mhw6, T7mhw6, A8mhw6, H8mhw6, O8mhw6, V8mhw6, C9mhw6; +wire J9mhw6, Q9mhw6, X9mhw6, Eamhw6, Lamhw6, Samhw6, Zamhw6, Gbmhw6, Nbmhw6, Ubmhw6; +wire Bcmhw6, Icmhw6, Pcmhw6, Wcmhw6, Ddmhw6, Kdmhw6, Rdmhw6, Ydmhw6, Femhw6, Memhw6; +wire Temhw6, Afmhw6, Hfmhw6, Ofmhw6, Vfmhw6, Cgmhw6, Jgmhw6, Qgmhw6, Xgmhw6, Ehmhw6; +wire Lhmhw6, Shmhw6, Zhmhw6, Gimhw6, Nimhw6, Uimhw6, Bjmhw6, Ijmhw6, Pjmhw6, Wjmhw6; +wire Dkmhw6, Kkmhw6, Rkmhw6, Ykmhw6, Flmhw6, Mlmhw6, Tlmhw6, Ammhw6, Hmmhw6, Ommhw6; +wire Vmmhw6, Cnmhw6, Jnmhw6, Qnmhw6, Xnmhw6, Eomhw6, Lomhw6, Somhw6, Zomhw6, Gpmhw6; +wire Npmhw6, Upmhw6, Bqmhw6, Iqmhw6, Pqmhw6, Wqmhw6, Drmhw6, Krmhw6, Rrmhw6, Yrmhw6; +wire Fsmhw6, Msmhw6, Tsmhw6, Atmhw6, Htmhw6, Otmhw6, Vtmhw6, Cumhw6, Jumhw6, Qumhw6; +wire Xumhw6, Evmhw6, Lvmhw6, Svmhw6, Zvmhw6, Gwmhw6, Nwmhw6, Uwmhw6, Bxmhw6, Ixmhw6; +wire Pxmhw6, Wxmhw6, Dymhw6, Kymhw6, Rymhw6, Yymhw6, Fzmhw6, Mzmhw6, Tzmhw6, A0nhw6; +wire H0nhw6, O0nhw6, V0nhw6, C1nhw6, J1nhw6, Q1nhw6, X1nhw6, E2nhw6, L2nhw6, S2nhw6; +wire Z2nhw6, G3nhw6, N3nhw6, U3nhw6, B4nhw6, I4nhw6, P4nhw6, W4nhw6, D5nhw6, K5nhw6; +wire R5nhw6, Y5nhw6, F6nhw6, M6nhw6, T6nhw6, A7nhw6, H7nhw6, O7nhw6, V7nhw6, C8nhw6; +wire J8nhw6, Q8nhw6, X8nhw6, E9nhw6, L9nhw6, S9nhw6, Z9nhw6, Ganhw6, Nanhw6, Uanhw6; +wire Bbnhw6, Ibnhw6, Pbnhw6, Wbnhw6, Dcnhw6, Kcnhw6, Rcnhw6, Ycnhw6, Fdnhw6, Mdnhw6; +wire Tdnhw6, Aenhw6, Henhw6, Oenhw6, Venhw6, Cfnhw6, Jfnhw6, Qfnhw6, Xfnhw6, Egnhw6; +wire Lgnhw6, Sgnhw6, Zgnhw6, Ghnhw6, Nhnhw6, Uhnhw6, Binhw6, Iinhw6, Pinhw6, Winhw6; +wire Djnhw6, Kjnhw6, Rjnhw6, Yjnhw6, Fknhw6, Mknhw6, Tknhw6, Alnhw6, Hlnhw6, Olnhw6; +wire Vlnhw6, Cmnhw6, Jmnhw6, Qmnhw6, Xmnhw6, Ennhw6, Lnnhw6, Snnhw6, Znnhw6, Gonhw6; +wire Nonhw6, Uonhw6, Bpnhw6, Ipnhw6, Ppnhw6, Wpnhw6, Dqnhw6, Kqnhw6, Rqnhw6, Yqnhw6; +wire Frnhw6, Mrnhw6, Trnhw6, Asnhw6, Hsnhw6, Osnhw6, Vsnhw6, Ctnhw6, Jtnhw6, Qtnhw6; +wire Xtnhw6, Eunhw6, Lunhw6, Sunhw6, Zunhw6, Gvnhw6, Nvnhw6, Uvnhw6, Bwnhw6, Iwnhw6; +wire Pwnhw6, Wwnhw6, Dxnhw6, Kxnhw6, Rxnhw6, Yxnhw6, Fynhw6, Mynhw6, Tynhw6, Aznhw6; +wire Hznhw6, Oznhw6, Vznhw6, C0ohw6, J0ohw6, Q0ohw6, X0ohw6, E1ohw6, L1ohw6, S1ohw6; +wire Z1ohw6, G2ohw6, N2ohw6, U2ohw6, B3ohw6, I3ohw6, P3ohw6, W3ohw6, D4ohw6, K4ohw6; +wire R4ohw6, Y4ohw6, F5ohw6, M5ohw6, T5ohw6, A6ohw6, H6ohw6, O6ohw6, V6ohw6, C7ohw6; +wire J7ohw6, Q7ohw6, X7ohw6, E8ohw6, L8ohw6, S8ohw6, Z8ohw6, G9ohw6, N9ohw6, U9ohw6; +wire Baohw6, Iaohw6, Paohw6, Waohw6, Dbohw6, Kbohw6, Rbohw6, Ybohw6, Fcohw6, Mcohw6; +wire Tcohw6, Adohw6, Hdohw6, Odohw6, Vdohw6, Ceohw6, Jeohw6, Qeohw6, Xeohw6, Efohw6; +wire Lfohw6, Sfohw6, Zfohw6, Ggohw6, Ngohw6, Ugohw6, Bhohw6, Ihohw6, Phohw6, Whohw6; +wire Diohw6, Kiohw6, Riohw6, Yiohw6, Fjohw6, Mjohw6, Tjohw6, Akohw6, Hkohw6, Okohw6; +wire Vkohw6, Clohw6, Jlohw6, Qlohw6, Xlohw6, Emohw6, Lmohw6, Smohw6, Zmohw6, Gnohw6; +wire Nnohw6, Unohw6, Boohw6, Ioohw6, Poohw6, Woohw6, Dpohw6, Kpohw6, Rpohw6, Ypohw6; +wire Fqohw6, Mqohw6, Tqohw6, Arohw6, Hrohw6, Orohw6, Vrohw6, Csohw6, Jsohw6, Qsohw6; +wire Xsohw6, Etohw6, Ltohw6, Stohw6, Ztohw6, Guohw6, Nuohw6, Uuohw6, Bvohw6, Ivohw6; +wire Pvohw6, Wvohw6, Dwohw6, Kwohw6, Rwohw6, Ywohw6, Fxohw6, Mxohw6, Txohw6, Ayohw6; +wire Hyohw6, Oyohw6, Vyohw6, Czohw6, Jzohw6, Qzohw6, Xzohw6, E0phw6, L0phw6, S0phw6; +wire Z0phw6, G1phw6, N1phw6, U1phw6, B2phw6, I2phw6, P2phw6, W2phw6, D3phw6, K3phw6; +wire R3phw6, Y3phw6, F4phw6, M4phw6, T4phw6, A5phw6, H5phw6, O5phw6, V5phw6, C6phw6; +wire J6phw6, Q6phw6, X6phw6, E7phw6, L7phw6, S7phw6, Z7phw6, G8phw6, N8phw6, U8phw6; +wire B9phw6, I9phw6, P9phw6, W9phw6, Daphw6, Kaphw6, Raphw6, Yaphw6, Fbphw6, Mbphw6; +wire Tbphw6, Acphw6, Hcphw6, Ocphw6, Vcphw6, Cdphw6, Jdphw6, Qdphw6, Xdphw6, Eephw6; +wire Lephw6, Sephw6, Zephw6, Gfphw6, Nfphw6, Ufphw6, Bgphw6, Igphw6, Pgphw6, Wgphw6; +wire Dhphw6, Khphw6, Rhphw6, Yhphw6, Fiphw6, Miphw6, Tiphw6, Ajphw6, Hjphw6, Ojphw6; +wire Vjphw6, Ckphw6, Jkphw6, Qkphw6, Xkphw6, Elphw6, Llphw6, Slphw6, Zlphw6, Gmphw6; +wire Nmphw6, Umphw6, Bnphw6, Inphw6, Pnphw6, Wnphw6, Dophw6, Kophw6, Rophw6, Yophw6; +wire Fpphw6, Mpphw6, Tpphw6, Aqphw6, Hqphw6, Oqphw6, Vqphw6, Crphw6, Jrphw6, Qrphw6; +wire Xrphw6, Esphw6, Lsphw6, Ssphw6, Zsphw6, Gtphw6, Ntphw6, Utphw6, Buphw6, Iuphw6; +wire Puphw6, Wuphw6, Dvphw6, Kvphw6, Rvphw6, Yvphw6, Fwphw6, Mwphw6, Twphw6, Axphw6; +wire Hxphw6, Oxphw6, Vxphw6, Cyphw6, Jyphw6, Qyphw6, Xyphw6, Ezphw6, Lzphw6, Szphw6; +wire Zzphw6, G0qhw6, N0qhw6, U0qhw6, B1qhw6, I1qhw6, P1qhw6, W1qhw6, D2qhw6, K2qhw6; +wire R2qhw6, Y2qhw6, F3qhw6, M3qhw6, T3qhw6, A4qhw6, H4qhw6, O4qhw6, V4qhw6, C5qhw6; +wire J5qhw6, Q5qhw6, X5qhw6, E6qhw6, L6qhw6, S6qhw6, Z6qhw6, G7qhw6, N7qhw6, U7qhw6; +wire B8qhw6, I8qhw6, P8qhw6, W8qhw6, D9qhw6, K9qhw6, R9qhw6, Y9qhw6, Faqhw6, Maqhw6; +wire Taqhw6, Abqhw6, Hbqhw6, Obqhw6, Vbqhw6, Ccqhw6, Jcqhw6, Qcqhw6, Xcqhw6, Edqhw6; +wire Ldqhw6, Sdqhw6, Zdqhw6, Geqhw6, Neqhw6, Ueqhw6, Bfqhw6, Ifqhw6, Pfqhw6, Wfqhw6; +wire Dgqhw6, Kgqhw6, Rgqhw6, Ygqhw6, Fhqhw6, Mhqhw6, Thqhw6, Aiqhw6, Hiqhw6, Oiqhw6; +wire Viqhw6, Cjqhw6, Jjqhw6, Qjqhw6, Xjqhw6, Ekqhw6, Lkqhw6, Skqhw6, Zkqhw6, Glqhw6; +wire Nlqhw6, Ulqhw6, Bmqhw6, Imqhw6, Pmqhw6, Wmqhw6, Dnqhw6, Knqhw6, Rnqhw6, Ynqhw6; +wire Foqhw6, Moqhw6, Toqhw6, Apqhw6, Hpqhw6, Opqhw6, Vpqhw6, Cqqhw6, Jqqhw6, Qqqhw6; +wire Xqqhw6, Erqhw6, Lrqhw6, Srqhw6, Zrqhw6, Gsqhw6, Nsqhw6, Usqhw6, Btqhw6, Itqhw6; +wire Ptqhw6, Wtqhw6, Duqhw6, Kuqhw6, Ruqhw6, Yuqhw6, Fvqhw6, Mvqhw6, Tvqhw6, Awqhw6; +wire Hwqhw6, Owqhw6, Vwqhw6, Cxqhw6, Jxqhw6, Qxqhw6, Xxqhw6, Eyqhw6, Lyqhw6, Syqhw6; +wire Zyqhw6, Gzqhw6, Nzqhw6, Uzqhw6, B0rhw6, I0rhw6, P0rhw6, W0rhw6, D1rhw6, K1rhw6; +wire R1rhw6, Y1rhw6, F2rhw6, M2rhw6, T2rhw6, A3rhw6, H3rhw6, O3rhw6, V3rhw6, C4rhw6; +wire J4rhw6, Q4rhw6, X4rhw6, E5rhw6, L5rhw6, S5rhw6, Z5rhw6, G6rhw6, N6rhw6, U6rhw6; +wire B7rhw6, I7rhw6, P7rhw6, W7rhw6, D8rhw6, K8rhw6, R8rhw6, Y8rhw6, F9rhw6, M9rhw6; +wire T9rhw6, Aarhw6, Harhw6, Oarhw6, Varhw6, Cbrhw6, Jbrhw6, Qbrhw6, Xbrhw6, Ecrhw6; +wire Lcrhw6, Scrhw6, Zcrhw6, Gdrhw6, Ndrhw6, Udrhw6, Berhw6, Ierhw6, Perhw6, Werhw6; +wire Dfrhw6, Kfrhw6, Rfrhw6, Yfrhw6, Fgrhw6, Mgrhw6, Tgrhw6, Ahrhw6, Hhrhw6, Ohrhw6; +wire Vhrhw6, Cirhw6, Jirhw6, Qirhw6, Xirhw6, Ejrhw6, Ljrhw6, Sjrhw6, Zjrhw6, Gkrhw6; +wire Nkrhw6, Ukrhw6, Blrhw6, Ilrhw6, Plrhw6, Wlrhw6, Dmrhw6, Kmrhw6, Rmrhw6, Ymrhw6; +wire Fnrhw6, Mnrhw6, Tnrhw6, Aorhw6, Horhw6, Oorhw6, Vorhw6, Cprhw6, Jprhw6, Qprhw6; +wire Xprhw6, Eqrhw6, Lqrhw6, Sqrhw6, Zqrhw6, Grrhw6, Nrrhw6, Urrhw6, Bsrhw6, Isrhw6; +wire Psrhw6, Wsrhw6, Dtrhw6, Ktrhw6, Rtrhw6, Ytrhw6, Furhw6, Murhw6, Turhw6, Avrhw6; +wire Hvrhw6, Ovrhw6, Vvrhw6, Cwrhw6, Jwrhw6, Qwrhw6, Xwrhw6, Exrhw6, Lxrhw6, Sxrhw6; +wire Zxrhw6, Gyrhw6, Nyrhw6, Uyrhw6, Bzrhw6, Izrhw6, Pzrhw6, Wzrhw6, D0shw6, K0shw6; +wire R0shw6, Y0shw6, F1shw6, M1shw6, T1shw6, A2shw6, H2shw6, O2shw6, V2shw6, C3shw6; +wire J3shw6, Q3shw6, X3shw6, E4shw6, L4shw6, S4shw6, Z4shw6, G5shw6, N5shw6, U5shw6; +wire B6shw6, I6shw6, P6shw6, W6shw6, D7shw6, K7shw6, R7shw6, Y7shw6, F8shw6, M8shw6; +wire T8shw6, A9shw6, H9shw6, O9shw6, V9shw6, Cashw6, Jashw6, Qashw6, Xashw6, Ebshw6; +wire Lbshw6, Sbshw6, Zbshw6, Gcshw6, Ncshw6, Ucshw6, Bdshw6, Idshw6, Pdshw6, Wdshw6; +wire Deshw6, Keshw6, Reshw6, Yeshw6, Ffshw6, Mfshw6, Tfshw6, Agshw6, Hgshw6, Ogshw6; +wire Vgshw6, Chshw6, Jhshw6, Qhshw6, Xhshw6, Eishw6, Lishw6, Sishw6, Zishw6, Gjshw6; +wire Njshw6, Ujshw6, Bkshw6, Ikshw6, Pkshw6, Wkshw6, Dlshw6, Klshw6, Rlshw6, Ylshw6; +wire Fmshw6, Mmshw6, Tmshw6, Anshw6, Hnshw6, Onshw6, Vnshw6, Coshw6, Joshw6, Qoshw6; +wire Xoshw6, Epshw6, Lpshw6, Spshw6, Zpshw6, Gqshw6, Nqshw6, Uqshw6, Brshw6, Irshw6; +wire Prshw6, Wrshw6, Dsshw6, Ksshw6, Rsshw6, Ysshw6, Ftshw6, Mtshw6, Ttshw6, Aushw6; +wire Hushw6, Oushw6, Vushw6, Cvshw6, Jvshw6, Qvshw6, Xvshw6, Ewshw6, Lwshw6, Swshw6; +wire Zwshw6, Gxshw6, Nxshw6, Uxshw6, Byshw6, Iyshw6, Pyshw6, Wyshw6, Dzshw6, Kzshw6; +wire Rzshw6, Yzshw6, F0thw6, M0thw6, T0thw6, A1thw6, H1thw6, O1thw6, V1thw6, C2thw6; +wire J2thw6, Q2thw6, X2thw6, E3thw6, L3thw6, S3thw6, Z3thw6, G4thw6, N4thw6, U4thw6; +wire B5thw6, I5thw6, P5thw6, W5thw6, D6thw6, K6thw6, R6thw6, Y6thw6, F7thw6, M7thw6; +wire T7thw6, A8thw6, H8thw6, O8thw6, V8thw6, C9thw6, J9thw6, Q9thw6, X9thw6, Eathw6; +wire Lathw6, Sathw6, Zathw6, Gbthw6, Nbthw6, Ubthw6, Bcthw6, Icthw6, Pcthw6, Wcthw6; +wire Ddthw6, Kdthw6, Rdthw6, Ydthw6, Fethw6, Methw6, Tethw6, Afthw6, Hfthw6, Ofthw6; +wire Vfthw6, Cgthw6, Jgthw6, Qgthw6, Xgthw6, Ehthw6, Lhthw6, Shthw6, Zhthw6, Githw6; +wire Nithw6, Uithw6, Bjthw6, Ijthw6, Pjthw6, Wjthw6, Dkthw6, Kkthw6, Rkthw6, Ykthw6; +wire Flthw6, Mlthw6, Tlthw6, Amthw6, Hmthw6, Omthw6, Vmthw6, Cnthw6, Jnthw6, Qnthw6; +wire Xnthw6, Eothw6, Lothw6, Sothw6, Zothw6, Gpthw6, Npthw6, Upthw6, Bqthw6, Iqthw6; +wire Pqthw6, Wqthw6, Drthw6, Krthw6, Rrthw6, Yrthw6, Fsthw6, Msthw6, Tsthw6, Atthw6; +wire Htthw6, Otthw6, Vtthw6, Cuthw6, Juthw6, Quthw6, Xuthw6, Evthw6, Lvthw6, Svthw6; +wire Zvthw6, Gwthw6, Nwthw6, Uwthw6, Bxthw6, Ixthw6, Pxthw6, Wxthw6, Dythw6, Kythw6; +wire Rythw6, Yythw6, Fzthw6, Mzthw6, Tzthw6, A0uhw6, H0uhw6, O0uhw6, V0uhw6, C1uhw6; +wire J1uhw6, Q1uhw6, X1uhw6, E2uhw6, L2uhw6, S2uhw6, Z2uhw6, G3uhw6, N3uhw6, U3uhw6; +wire B4uhw6, I4uhw6, P4uhw6, W4uhw6, D5uhw6, K5uhw6, R5uhw6, Y5uhw6, F6uhw6, M6uhw6; +wire T6uhw6, A7uhw6, H7uhw6, O7uhw6, V7uhw6, C8uhw6, J8uhw6, Q8uhw6, X8uhw6, E9uhw6; +wire L9uhw6, S9uhw6, Z9uhw6, Gauhw6, Nauhw6, Uauhw6, Bbuhw6, Ibuhw6, Pbuhw6, Wbuhw6; +wire Dcuhw6, Kcuhw6, Rcuhw6, Ycuhw6, Fduhw6, Mduhw6, Tduhw6, Aeuhw6, Heuhw6, Oeuhw6; +wire Veuhw6, Cfuhw6, Jfuhw6, Qfuhw6, Xfuhw6, Eguhw6, Lguhw6, Sguhw6, Zguhw6, Ghuhw6; +wire Nhuhw6, Uhuhw6, Biuhw6, Iiuhw6, Piuhw6, Wiuhw6, Djuhw6, Kjuhw6, Rjuhw6, Yjuhw6; +wire Fkuhw6, Mkuhw6, Tkuhw6, Aluhw6, Hluhw6, Oluhw6, Vluhw6, Cmuhw6, Jmuhw6, Qmuhw6; +wire Xmuhw6, Enuhw6, Lnuhw6, Snuhw6, Znuhw6, Gouhw6, Nouhw6, Uouhw6, Bpuhw6, Ipuhw6; +wire Ppuhw6, Wpuhw6, Dquhw6, Kquhw6, Rquhw6, Yquhw6, Fruhw6, Mruhw6, Truhw6, Asuhw6; +wire Hsuhw6, Osuhw6, Vsuhw6, Ctuhw6, Jtuhw6, Qtuhw6, Xtuhw6, Euuhw6, Luuhw6, Suuhw6; +wire Zuuhw6, Gvuhw6, Nvuhw6, Uvuhw6, Bwuhw6, Iwuhw6, Pwuhw6, Wwuhw6, Dxuhw6, Kxuhw6; +wire Rxuhw6, Yxuhw6, Fyuhw6, Myuhw6, Tyuhw6, Azuhw6, Hzuhw6, Ozuhw6, Vzuhw6, C0vhw6; +wire J0vhw6, Q0vhw6, X0vhw6, E1vhw6, L1vhw6, S1vhw6, Z1vhw6, G2vhw6, N2vhw6, U2vhw6; +wire B3vhw6, I3vhw6, P3vhw6, W3vhw6, D4vhw6, K4vhw6, R4vhw6, Y4vhw6, F5vhw6, M5vhw6; +wire T5vhw6, A6vhw6, H6vhw6, O6vhw6, V6vhw6, C7vhw6, J7vhw6, Q7vhw6, X7vhw6, E8vhw6; +wire L8vhw6, S8vhw6, Z8vhw6, G9vhw6, N9vhw6, U9vhw6, Bavhw6, Iavhw6, Pavhw6, Wavhw6; +wire Dbvhw6, Kbvhw6, Rbvhw6, Ybvhw6, Fcvhw6, Mcvhw6, Tcvhw6, Advhw6, Hdvhw6, Odvhw6; +wire Vdvhw6, Cevhw6, Jevhw6, Qevhw6, Xevhw6, Efvhw6, Lfvhw6, Sfvhw6, Zfvhw6, Ggvhw6; +wire Ngvhw6, Ugvhw6, Bhvhw6, Ihvhw6, Phvhw6, Whvhw6, Divhw6, Kivhw6, Rivhw6, Yivhw6; +wire Fjvhw6, Mjvhw6, Tjvhw6, Akvhw6, Hkvhw6, Okvhw6, Vkvhw6, Clvhw6, Jlvhw6, Qlvhw6; +wire Xlvhw6, Emvhw6, Lmvhw6, Smvhw6, Zmvhw6, Gnvhw6, Nnvhw6, Unvhw6, Bovhw6, Iovhw6; +wire Povhw6, Wovhw6, Dpvhw6, Kpvhw6, Rpvhw6, Ypvhw6, Fqvhw6, Mqvhw6, Tqvhw6, Arvhw6; +wire Hrvhw6, Orvhw6, Vrvhw6, Csvhw6, Jsvhw6, Qsvhw6, Xsvhw6, Etvhw6, Ltvhw6, Stvhw6; +wire Ztvhw6, Guvhw6, Nuvhw6, Uuvhw6, Bvvhw6, Ivvhw6, Pvvhw6, Wvvhw6, Dwvhw6, Kwvhw6; +wire Rwvhw6, Ywvhw6, Fxvhw6, Mxvhw6, Txvhw6, Ayvhw6, Hyvhw6, Oyvhw6, Vyvhw6, Czvhw6; +wire Jzvhw6, Qzvhw6, Xzvhw6, E0whw6, L0whw6, S0whw6, Z0whw6, G1whw6, N1whw6, U1whw6; +wire B2whw6, I2whw6, P2whw6, W2whw6, D3whw6, K3whw6, R3whw6, Y3whw6, F4whw6, M4whw6; +wire T4whw6, A5whw6, H5whw6, O5whw6, V5whw6, C6whw6, J6whw6, Q6whw6, X6whw6, E7whw6; +wire L7whw6, S7whw6, Z7whw6, G8whw6, N8whw6, U8whw6, B9whw6, I9whw6, P9whw6, W9whw6; +wire Dawhw6, Kawhw6, Rawhw6, Yawhw6, Fbwhw6, Mbwhw6, Tbwhw6, Acwhw6, Hcwhw6, Ocwhw6; +wire Vcwhw6, Cdwhw6, Jdwhw6, Qdwhw6, Xdwhw6, Eewhw6, Lewhw6, Sewhw6, Zewhw6, Gfwhw6; +wire Nfwhw6, Ufwhw6, Bgwhw6, Igwhw6, Pgwhw6, Wgwhw6, Dhwhw6, Khwhw6, Rhwhw6, Yhwhw6; +wire Fiwhw6, Miwhw6, Tiwhw6, Ajwhw6, Hjwhw6, Ojwhw6, Vjwhw6, Ckwhw6, Jkwhw6, Qkwhw6; +wire Xkwhw6, Elwhw6, Llwhw6, Slwhw6, Zlwhw6, Gmwhw6, Nmwhw6, Umwhw6, Bnwhw6, Inwhw6; +wire Pnwhw6, Wnwhw6, Dowhw6, Kowhw6, Rowhw6, Yowhw6, Fpwhw6, Mpwhw6, Tpwhw6, Aqwhw6; +wire Hqwhw6, Oqwhw6, Vqwhw6, Crwhw6, Jrwhw6, Qrwhw6, Xrwhw6, Eswhw6, Lswhw6, Sswhw6; +wire Zswhw6, Gtwhw6, Ntwhw6, Utwhw6, Buwhw6, Iuwhw6, Puwhw6, Wuwhw6, Dvwhw6, Kvwhw6; +wire Rvwhw6, Yvwhw6, Fwwhw6, Mwwhw6, Twwhw6, Axwhw6, Hxwhw6, Oxwhw6, Vxwhw6, Cywhw6; +wire Jywhw6, Qywhw6, Xywhw6, Ezwhw6, Lzwhw6, Szwhw6, Zzwhw6, G0xhw6, N0xhw6, U0xhw6; +wire B1xhw6, I1xhw6, P1xhw6, W1xhw6, D2xhw6, K2xhw6, R2xhw6, Y2xhw6, F3xhw6, M3xhw6; +wire T3xhw6, A4xhw6, H4xhw6, O4xhw6, V4xhw6, C5xhw6, J5xhw6, Q5xhw6, X5xhw6, E6xhw6; +wire L6xhw6, S6xhw6, Z6xhw6, G7xhw6, N7xhw6, U7xhw6, B8xhw6, I8xhw6, P8xhw6, W8xhw6; +wire D9xhw6, K9xhw6, R9xhw6, Y9xhw6, Faxhw6, Maxhw6, Taxhw6, Abxhw6, Hbxhw6, Obxhw6; +wire Vbxhw6, Ccxhw6, Jcxhw6, Qcxhw6, Xcxhw6, Edxhw6, Ldxhw6, Sdxhw6, Zdxhw6, Gexhw6; +wire Nexhw6, Uexhw6, Bfxhw6, Ifxhw6, Pfxhw6, Wfxhw6, Dgxhw6, Kgxhw6, Rgxhw6, Ygxhw6; +wire Fhxhw6, Mhxhw6, Thxhw6, Aixhw6, Hixhw6, Oixhw6, Vixhw6, Cjxhw6, Jjxhw6, Qjxhw6; +wire Xjxhw6, Ekxhw6, Lkxhw6, Skxhw6, Zkxhw6, Glxhw6, Nlxhw6, Ulxhw6, Bmxhw6, Imxhw6; +wire Pmxhw6, Wmxhw6, Dnxhw6, Knxhw6, Rnxhw6, Ynxhw6, Foxhw6, Moxhw6, Toxhw6, Apxhw6; +wire Hpxhw6, Opxhw6, Vpxhw6, Cqxhw6, Jqxhw6, Qqxhw6, Xqxhw6, Erxhw6, Lrxhw6, Srxhw6; +wire Zrxhw6, Gsxhw6, Nsxhw6, Usxhw6, Btxhw6, Itxhw6, Ptxhw6, Wtxhw6, Duxhw6, Kuxhw6; +wire Ruxhw6, Yuxhw6, Fvxhw6, Mvxhw6, Tvxhw6, Awxhw6, Hwxhw6, Owxhw6, Vwxhw6, Cxxhw6; +wire Jxxhw6, Qxxhw6, Xxxhw6, Eyxhw6, Lyxhw6, Syxhw6, Zyxhw6, Gzxhw6, Nzxhw6, Uzxhw6; +wire B0yhw6, I0yhw6, P0yhw6, W0yhw6, D1yhw6, K1yhw6, R1yhw6, Y1yhw6, F2yhw6, M2yhw6; +wire T2yhw6, A3yhw6, H3yhw6, O3yhw6, V3yhw6, C4yhw6, J4yhw6, Q4yhw6, X4yhw6, E5yhw6; +wire L5yhw6, S5yhw6, Z5yhw6, G6yhw6, N6yhw6, U6yhw6, B7yhw6, I7yhw6, P7yhw6, W7yhw6; +wire D8yhw6, K8yhw6, R8yhw6, Y8yhw6, F9yhw6, M9yhw6, T9yhw6, Aayhw6, Hayhw6, Oayhw6; +wire Vayhw6, Cbyhw6, Jbyhw6, Qbyhw6, Xbyhw6, Ecyhw6, Lcyhw6, Scyhw6, Zcyhw6, Gdyhw6; +wire Ndyhw6, Udyhw6, Beyhw6, Ieyhw6, Peyhw6, Weyhw6, Dfyhw6, Kfyhw6, Rfyhw6, Yfyhw6; +wire Fgyhw6, Mgyhw6, Tgyhw6, Ahyhw6, Hhyhw6, Ohyhw6, Vhyhw6, Ciyhw6, Jiyhw6, Qiyhw6; +wire Xiyhw6, Ejyhw6, Ljyhw6, Sjyhw6, Zjyhw6, Gkyhw6, Nkyhw6, Ukyhw6, Blyhw6, Ilyhw6; +wire Plyhw6, Wlyhw6, Dmyhw6, Kmyhw6, Rmyhw6, Ymyhw6, Fnyhw6, Mnyhw6, Tnyhw6, Aoyhw6; +wire Hoyhw6, Ooyhw6, Voyhw6, Cpyhw6, Jpyhw6, Qpyhw6, Xpyhw6, Eqyhw6, Lqyhw6, Sqyhw6; +wire Zqyhw6, Gryhw6, Nryhw6, Uryhw6, Bsyhw6, Isyhw6, Psyhw6, Wsyhw6, Dtyhw6, Ktyhw6; +wire Rtyhw6, Ytyhw6, Fuyhw6, Muyhw6, Tuyhw6, Avyhw6, Hvyhw6, Ovyhw6, Vvyhw6, Cwyhw6; +wire Jwyhw6, Qwyhw6, Xwyhw6, Exyhw6, Lxyhw6, Sxyhw6, Zxyhw6, Gyyhw6, Nyyhw6, Uyyhw6; +wire Bzyhw6, Izyhw6, Pzyhw6, Wzyhw6, D0zhw6, K0zhw6, R0zhw6, Y0zhw6, F1zhw6, M1zhw6; +wire T1zhw6, A2zhw6, H2zhw6, O2zhw6, V2zhw6, C3zhw6, J3zhw6, Q3zhw6, X3zhw6, E4zhw6; +wire L4zhw6, S4zhw6, Z4zhw6, G5zhw6, N5zhw6, U5zhw6, B6zhw6, I6zhw6, P6zhw6, W6zhw6; +wire D7zhw6, K7zhw6, R7zhw6, Y7zhw6, F8zhw6, M8zhw6, T8zhw6, A9zhw6, H9zhw6, O9zhw6; +wire V9zhw6, Cazhw6, Jazhw6, Qazhw6, Xazhw6, Ebzhw6, Lbzhw6, Sbzhw6, Zbzhw6, Gczhw6; +wire Nczhw6, Uczhw6, Bdzhw6, Idzhw6, Pdzhw6, Wdzhw6, Dezhw6, Kezhw6, Rezhw6, Yezhw6; +wire Ffzhw6, Mfzhw6, Tfzhw6, Agzhw6, Hgzhw6, Ogzhw6, Vgzhw6, Chzhw6, Jhzhw6, Qhzhw6; +wire Xhzhw6, Eizhw6, Lizhw6, Sizhw6, Zizhw6, Gjzhw6, Njzhw6, Ujzhw6, Bkzhw6, Ikzhw6; +wire Pkzhw6, Wkzhw6, Dlzhw6, Klzhw6, Rlzhw6, Ylzhw6, Fmzhw6, Mmzhw6, Tmzhw6, Anzhw6; +wire Hnzhw6, Onzhw6, Vnzhw6, Cozhw6, Jozhw6, Qozhw6, Xozhw6, Epzhw6, Lpzhw6, Spzhw6; +wire Zpzhw6, Gqzhw6, Nqzhw6, Uqzhw6, Brzhw6, Irzhw6, Przhw6, Wrzhw6, Dszhw6, Kszhw6; +wire Rszhw6, Yszhw6, Ftzhw6, Mtzhw6, Ttzhw6, Auzhw6, Huzhw6, Ouzhw6, Vuzhw6, Cvzhw6; +wire Jvzhw6, Qvzhw6, Xvzhw6, Ewzhw6, Lwzhw6, Swzhw6, Zwzhw6, Gxzhw6, Nxzhw6, Uxzhw6; +wire Byzhw6, Iyzhw6, Pyzhw6, Wyzhw6, Dzzhw6, Kzzhw6, Rzzhw6, Yzzhw6, F00iw6, M00iw6; +wire T00iw6, A10iw6, H10iw6, O10iw6, V10iw6, C20iw6, J20iw6, Q20iw6, X20iw6, E30iw6; +wire L30iw6, S30iw6, Z30iw6, G40iw6, N40iw6, U40iw6, B50iw6, I50iw6, P50iw6, W50iw6; +wire D60iw6, K60iw6, R60iw6, Y60iw6, F70iw6, M70iw6, T70iw6, A80iw6, H80iw6, O80iw6; +wire V80iw6, C90iw6, J90iw6, Q90iw6, X90iw6, Ea0iw6, La0iw6, Sa0iw6, Za0iw6, Gb0iw6; +wire Nb0iw6, Ub0iw6, Bc0iw6, Ic0iw6, Pc0iw6, Wc0iw6, Dd0iw6, Kd0iw6, Rd0iw6, Yd0iw6; +wire Fe0iw6, Me0iw6, Te0iw6, Af0iw6, Hf0iw6, Of0iw6, Vf0iw6, Cg0iw6, Jg0iw6, Qg0iw6; +wire Xg0iw6, Eh0iw6, Lh0iw6, Sh0iw6, Zh0iw6, Gi0iw6, Ni0iw6, Ui0iw6, Bj0iw6, Ij0iw6; +wire Pj0iw6, Wj0iw6, Dk0iw6, Kk0iw6, Rk0iw6, Yk0iw6, Fl0iw6, Ml0iw6, Tl0iw6, Am0iw6; +wire Hm0iw6, Om0iw6, Vm0iw6, Cn0iw6, Jn0iw6, Qn0iw6, Xn0iw6, Eo0iw6, Lo0iw6, So0iw6; +wire Zo0iw6, Gp0iw6, Np0iw6, Up0iw6, Bq0iw6, Iq0iw6, Pq0iw6, Wq0iw6, Dr0iw6, Kr0iw6; +wire Rr0iw6, Yr0iw6, Fs0iw6, Ms0iw6, Ts0iw6, At0iw6, Ht0iw6, Ot0iw6, Vt0iw6, Cu0iw6; +wire Ju0iw6, Qu0iw6, Xu0iw6, Ev0iw6, Lv0iw6, Sv0iw6, Zv0iw6, Gw0iw6, Nw0iw6, Uw0iw6; +wire Bx0iw6, Ix0iw6, Px0iw6, Wx0iw6, Dy0iw6, Ky0iw6, Ry0iw6, Yy0iw6, Fz0iw6, Mz0iw6; +wire Tz0iw6, A01iw6, H01iw6, O01iw6, V01iw6, C11iw6, J11iw6, Q11iw6, X11iw6, E21iw6; +wire L21iw6, S21iw6, Z21iw6, G31iw6, N31iw6, U31iw6, B41iw6, I41iw6, P41iw6, W41iw6; +wire D51iw6, K51iw6, R51iw6, Y51iw6, F61iw6, M61iw6, T61iw6, A71iw6, H71iw6, O71iw6; +wire V71iw6, C81iw6, J81iw6, Q81iw6, X81iw6, E91iw6, L91iw6, S91iw6, Z91iw6, Ga1iw6; +wire Na1iw6, Ua1iw6, Bb1iw6, Ib1iw6, Pb1iw6, Wb1iw6, Dc1iw6, Kc1iw6, Rc1iw6, Yc1iw6; +wire Fd1iw6, Md1iw6, Td1iw6, Ae1iw6, He1iw6, Oe1iw6, Ve1iw6, Cf1iw6, Jf1iw6, Qf1iw6; +wire Xf1iw6, Eg1iw6, Lg1iw6, Sg1iw6, Zg1iw6, Gh1iw6, Nh1iw6, Uh1iw6, Bi1iw6, Ii1iw6; +wire Pi1iw6, Wi1iw6, Dj1iw6, Kj1iw6, Rj1iw6, Yj1iw6, Fk1iw6, Mk1iw6, Tk1iw6, Al1iw6; +wire Hl1iw6, Ol1iw6, Vl1iw6, Cm1iw6, Jm1iw6, Qm1iw6, Xm1iw6, En1iw6, Ln1iw6, Sn1iw6; +wire Zn1iw6, Go1iw6, No1iw6, Uo1iw6, Bp1iw6, Ip1iw6, Pp1iw6, Wp1iw6, Dq1iw6, Kq1iw6; +wire Rq1iw6, Yq1iw6, Fr1iw6, Mr1iw6, Tr1iw6, As1iw6, Hs1iw6, Os1iw6, Vs1iw6, Ct1iw6; +wire Jt1iw6, Qt1iw6, Xt1iw6, Eu1iw6, Lu1iw6, Su1iw6, Zu1iw6, Gv1iw6, Nv1iw6, Uv1iw6; +wire Bw1iw6, Iw1iw6, Pw1iw6, Ww1iw6, Dx1iw6, Kx1iw6, Rx1iw6, Yx1iw6, Fy1iw6, My1iw6; +wire Ty1iw6, Az1iw6, Hz1iw6, Oz1iw6, Vz1iw6, C02iw6, J02iw6, Q02iw6, X02iw6, E12iw6; +wire L12iw6, S12iw6, Z12iw6, G22iw6, N22iw6, U22iw6, B32iw6, I32iw6, P32iw6, W32iw6; +wire D42iw6, K42iw6, R42iw6, Y42iw6, F52iw6, M52iw6, T52iw6, A62iw6, H62iw6, O62iw6; +wire V62iw6, C72iw6, J72iw6, Q72iw6, X72iw6, E82iw6, L82iw6, S82iw6, Z82iw6, G92iw6; +wire N92iw6, U92iw6, Ba2iw6, Ia2iw6, Pa2iw6, Wa2iw6, Db2iw6, Kb2iw6, Rb2iw6, Yb2iw6; +wire Fc2iw6, Mc2iw6, Tc2iw6, Ad2iw6, Hd2iw6, Od2iw6, Vd2iw6, Ce2iw6, Je2iw6, Qe2iw6; +wire Xe2iw6, Ef2iw6, Lf2iw6, Sf2iw6, Zf2iw6, Gg2iw6, Ng2iw6, Ug2iw6, Bh2iw6, Ih2iw6; +wire Ph2iw6, Wh2iw6, Di2iw6, Ki2iw6, Ri2iw6, Yi2iw6, Fj2iw6, Mj2iw6, Tj2iw6, Ak2iw6; +wire Hk2iw6, Ok2iw6, Vk2iw6, Cl2iw6, Jl2iw6, Ql2iw6, Xl2iw6, Em2iw6, Lm2iw6, Sm2iw6; +wire Zm2iw6, Gn2iw6, Nn2iw6, Un2iw6, Bo2iw6, Io2iw6, Po2iw6, Wo2iw6, Dp2iw6, Kp2iw6; +wire Rp2iw6, Yp2iw6, Fq2iw6, Mq2iw6, Tq2iw6, Ar2iw6, Hr2iw6, Or2iw6, Vr2iw6, Cs2iw6; +wire Js2iw6, Qs2iw6, Xs2iw6, Et2iw6, Lt2iw6, St2iw6, Zt2iw6, Gu2iw6, Nu2iw6, Uu2iw6; +wire Bv2iw6, Iv2iw6, Pv2iw6, Wv2iw6, Dw2iw6, Kw2iw6, Rw2iw6, Yw2iw6, Fx2iw6, Mx2iw6; +wire Tx2iw6, Ay2iw6, Hy2iw6, Oy2iw6, Vy2iw6, Cz2iw6, Jz2iw6, Qz2iw6, Xz2iw6, E03iw6; +wire L03iw6, S03iw6, Z03iw6, G13iw6, N13iw6, U13iw6, B23iw6, I23iw6, P23iw6, W23iw6; +wire D33iw6, K33iw6, R33iw6, Y33iw6, F43iw6, M43iw6, T43iw6, A53iw6, H53iw6, O53iw6; +wire V53iw6, C63iw6, J63iw6, Q63iw6, X63iw6, E73iw6, L73iw6, S73iw6, Z73iw6, G83iw6; +wire N83iw6, U83iw6, B93iw6, I93iw6, P93iw6, W93iw6, Da3iw6, Ka3iw6, Ra3iw6, Ya3iw6; +wire Fb3iw6, Mb3iw6, Tb3iw6, Ac3iw6, Hc3iw6, Oc3iw6, Vc3iw6, Cd3iw6, Jd3iw6, Qd3iw6; +wire Xd3iw6, Ee3iw6, Le3iw6, Se3iw6, Ze3iw6, Gf3iw6, Nf3iw6, Uf3iw6, Bg3iw6, Ig3iw6; +wire Pg3iw6, Wg3iw6, Dh3iw6, Kh3iw6, Rh3iw6, Yh3iw6, Fi3iw6, Mi3iw6, Ti3iw6, Aj3iw6; +wire Hj3iw6, Oj3iw6, Vj3iw6, Ck3iw6, Jk3iw6, Qk3iw6, Xk3iw6, El3iw6, Ll3iw6, Sl3iw6; +wire Zl3iw6, Gm3iw6, Nm3iw6, Um3iw6, Bn3iw6, In3iw6, Pn3iw6, Wn3iw6, Do3iw6, Ko3iw6; +wire Ro3iw6, Yo3iw6, Fp3iw6, Mp3iw6, Tp3iw6, Aq3iw6, Hq3iw6, Oq3iw6, Vq3iw6, Cr3iw6; +wire Jr3iw6, Qr3iw6, Xr3iw6, Es3iw6, Ls3iw6, Ss3iw6, Zs3iw6, Gt3iw6, Nt3iw6, Ut3iw6; +wire Bu3iw6, Iu3iw6, Pu3iw6, Wu3iw6, Dv3iw6, Kv3iw6, Rv3iw6, Yv3iw6, Fw3iw6, Mw3iw6; +wire Tw3iw6, Ax3iw6, Hx3iw6, Ox3iw6, Vx3iw6, Cy3iw6, Jy3iw6, Qy3iw6, Xy3iw6, Ez3iw6; +wire Lz3iw6, Sz3iw6, Zz3iw6, G04iw6, N04iw6, U04iw6, B14iw6, I14iw6, P14iw6, W14iw6; +wire D24iw6, K24iw6, R24iw6, Y24iw6, F34iw6, M34iw6, T34iw6, A44iw6, H44iw6, O44iw6; +wire V44iw6, C54iw6, J54iw6, Q54iw6, X54iw6, E64iw6, L64iw6, S64iw6, Z64iw6, G74iw6; +wire N74iw6, U74iw6, B84iw6, I84iw6, P84iw6, W84iw6, D94iw6, K94iw6, R94iw6, Y94iw6; +wire Fa4iw6, Ma4iw6, Ta4iw6, Ab4iw6, Hb4iw6, Ob4iw6, Vb4iw6, Cc4iw6, Jc4iw6, Qc4iw6; +wire Xc4iw6, Ed4iw6, Ld4iw6, Sd4iw6, Zd4iw6, Ge4iw6, Ne4iw6, Ue4iw6, Bf4iw6, If4iw6; +wire Pf4iw6, Wf4iw6, Dg4iw6, Kg4iw6, Rg4iw6, Yg4iw6, Fh4iw6, Mh4iw6, Th4iw6, Ai4iw6; +wire Hi4iw6, Oi4iw6, Vi4iw6, Cj4iw6, Jj4iw6, Qj4iw6, Xj4iw6, Ek4iw6, Lk4iw6, Sk4iw6; +wire Zk4iw6, Gl4iw6, Nl4iw6, Ul4iw6, Bm4iw6, Im4iw6, Pm4iw6, Wm4iw6, Dn4iw6, Kn4iw6; +wire Rn4iw6, Yn4iw6, Fo4iw6, Mo4iw6, To4iw6, Ap4iw6, Hp4iw6, Op4iw6, Vp4iw6, Cq4iw6; +wire Jq4iw6, Qq4iw6, Xq4iw6, Er4iw6, Lr4iw6, Sr4iw6, Zr4iw6, Gs4iw6, Ns4iw6, Us4iw6; +wire Bt4iw6, It4iw6, Pt4iw6, Wt4iw6, Du4iw6, Ku4iw6, Ru4iw6, Yu4iw6, Fv4iw6, Mv4iw6; +wire Tv4iw6, Aw4iw6, Hw4iw6, Ow4iw6, Vw4iw6, Cx4iw6, Jx4iw6, Qx4iw6, Xx4iw6, Ey4iw6; +wire Ly4iw6, Sy4iw6, Zy4iw6, Gz4iw6, Nz4iw6, Uz4iw6, B05iw6, I05iw6, P05iw6, W05iw6; +wire D15iw6, K15iw6, R15iw6, Y15iw6, F25iw6, M25iw6, T25iw6, A35iw6, H35iw6, O35iw6; +wire V35iw6, C45iw6, J45iw6, Q45iw6, X45iw6, E55iw6, L55iw6, S55iw6, Z55iw6, G65iw6; +wire N65iw6, U65iw6, B75iw6, I75iw6, P75iw6, W75iw6, D85iw6, K85iw6, R85iw6, Y85iw6; +wire F95iw6, M95iw6, T95iw6, Aa5iw6, Ha5iw6, Oa5iw6, Va5iw6, Cb5iw6, Jb5iw6, Qb5iw6; +wire Xb5iw6, Ec5iw6, Lc5iw6, Sc5iw6, Zc5iw6, Gd5iw6, Nd5iw6, Ud5iw6, Be5iw6, Ie5iw6; +wire Pe5iw6, We5iw6, Df5iw6, Kf5iw6, Rf5iw6, Yf5iw6, Fg5iw6, Mg5iw6, Tg5iw6, Ah5iw6; +wire Hh5iw6, Oh5iw6, Vh5iw6, Ci5iw6, Ji5iw6, Qi5iw6, Xi5iw6, Ej5iw6, Lj5iw6, Sj5iw6; +wire Zj5iw6, Gk5iw6, Nk5iw6, Uk5iw6, Bl5iw6, Il5iw6, Pl5iw6, Wl5iw6, Dm5iw6, Km5iw6; +wire Rm5iw6, Ym5iw6, Fn5iw6, Mn5iw6, Tn5iw6, Ao5iw6, Ho5iw6, Oo5iw6, Vo5iw6, Cp5iw6; +wire Jp5iw6, Qp5iw6, Xp5iw6, Eq5iw6, Lq5iw6, Sq5iw6, Zq5iw6, Gr5iw6, Nr5iw6, Ur5iw6; +wire Bs5iw6, Is5iw6, Ps5iw6, Ws5iw6, Dt5iw6, Kt5iw6, Rt5iw6, Yt5iw6, Fu5iw6, Mu5iw6; +wire Tu5iw6, Av5iw6, Hv5iw6, Ov5iw6, Vv5iw6, Cw5iw6, Jw5iw6, Qw5iw6, Xw5iw6, Ex5iw6; +wire Lx5iw6, Sx5iw6, Zx5iw6, Gy5iw6, Ny5iw6, Uy5iw6, Bz5iw6, Iz5iw6, Pz5iw6, Wz5iw6; +wire D06iw6, K06iw6, R06iw6, Y06iw6, F16iw6, M16iw6, T16iw6, A26iw6, H26iw6, O26iw6; +wire V26iw6, C36iw6, J36iw6, Q36iw6, X36iw6, E46iw6, L46iw6, S46iw6, Z46iw6, G56iw6; +wire N56iw6, U56iw6, B66iw6, I66iw6, P66iw6, W66iw6, D76iw6, K76iw6, R76iw6, Y76iw6; +wire F86iw6, M86iw6, T86iw6, A96iw6, H96iw6, O96iw6, V96iw6, Ca6iw6, Ja6iw6, Qa6iw6; +wire Xa6iw6, Eb6iw6, Lb6iw6, Sb6iw6, Zb6iw6, Gc6iw6, Nc6iw6, Uc6iw6, Bd6iw6, Id6iw6; +wire Pd6iw6, Wd6iw6, De6iw6, Ke6iw6, Re6iw6, Ye6iw6, Ff6iw6, Mf6iw6, Tf6iw6, Ag6iw6; +wire Hg6iw6, Og6iw6, Vg6iw6, Ch6iw6, Jh6iw6, Qh6iw6, Xh6iw6, Ei6iw6, Li6iw6, Si6iw6; +wire Zi6iw6, Gj6iw6, Nj6iw6, Uj6iw6, Bk6iw6, Ik6iw6, Pk6iw6, Wk6iw6, Dl6iw6, Kl6iw6; +wire Rl6iw6, Yl6iw6, Fm6iw6, Mm6iw6, Tm6iw6, An6iw6, Hn6iw6, On6iw6, Vn6iw6, Co6iw6; +wire Jo6iw6, Qo6iw6, Xo6iw6, Ep6iw6, Lp6iw6, Sp6iw6, Zp6iw6, Gq6iw6, Nq6iw6, Uq6iw6; +wire Br6iw6, Ir6iw6, Pr6iw6, Wr6iw6, Ds6iw6, Ks6iw6, Rs6iw6, Ys6iw6, Ft6iw6, Mt6iw6; +wire Tt6iw6, Au6iw6, Hu6iw6, Ou6iw6, Vu6iw6, Cv6iw6, Jv6iw6, Qv6iw6, Xv6iw6, Ew6iw6; +wire Lw6iw6, Sw6iw6, Zw6iw6, Gx6iw6, Nx6iw6, Ux6iw6, By6iw6, Iy6iw6, Py6iw6, Wy6iw6; +wire Dz6iw6, Kz6iw6, Rz6iw6, Yz6iw6, F07iw6, M07iw6, T07iw6, A17iw6, H17iw6, O17iw6; +wire V17iw6, C27iw6, J27iw6, Q27iw6, X27iw6, E37iw6, L37iw6, S37iw6, Z37iw6, G47iw6; +wire N47iw6, U47iw6, B57iw6, I57iw6, P57iw6, W57iw6, D67iw6, K67iw6, R67iw6, Y67iw6; +wire F77iw6, M77iw6, T77iw6, A87iw6, H87iw6, O87iw6, V87iw6, C97iw6, J97iw6, Q97iw6; +wire X97iw6, Ea7iw6, La7iw6, Sa7iw6, Za7iw6, Gb7iw6, Nb7iw6, Ub7iw6, Bc7iw6, Ic7iw6; +wire Pc7iw6, Wc7iw6, Dd7iw6, Kd7iw6, Rd7iw6, Yd7iw6, Fe7iw6, Me7iw6, Te7iw6, Af7iw6; +wire Hf7iw6, Of7iw6, Vf7iw6, Cg7iw6, Jg7iw6, Qg7iw6, Xg7iw6, Eh7iw6, Lh7iw6, Sh7iw6; +wire Zh7iw6, Gi7iw6, Ni7iw6, Ui7iw6, Bj7iw6, Ij7iw6, Pj7iw6, Wj7iw6, Dk7iw6, Kk7iw6; +wire Rk7iw6, Yk7iw6, Fl7iw6, Ml7iw6, Tl7iw6, Am7iw6, Hm7iw6, Om7iw6, Vm7iw6, Cn7iw6; +wire Jn7iw6, Qn7iw6, Xn7iw6, Eo7iw6, Lo7iw6, So7iw6, Zo7iw6, Gp7iw6, Np7iw6, Up7iw6; +wire Bq7iw6, Iq7iw6, Pq7iw6, Wq7iw6, Dr7iw6, Kr7iw6, Rr7iw6, Yr7iw6, Fs7iw6, Ms7iw6; +wire Ts7iw6, At7iw6, Ht7iw6, Ot7iw6, Vt7iw6, Cu7iw6, Ju7iw6, Qu7iw6, Xu7iw6, Ev7iw6; +wire Lv7iw6, Sv7iw6, Zv7iw6, Gw7iw6, Nw7iw6, Uw7iw6, Bx7iw6, Ix7iw6, Px7iw6, Wx7iw6; +wire Dy7iw6, Ky7iw6, Ry7iw6, Yy7iw6, Fz7iw6, Mz7iw6, Tz7iw6, A08iw6, H08iw6, O08iw6; +wire V08iw6, C18iw6, J18iw6, Q18iw6, X18iw6, E28iw6, L28iw6, S28iw6, Z28iw6, G38iw6; +wire N38iw6, U38iw6, B48iw6, I48iw6, P48iw6, W48iw6, D58iw6, K58iw6, R58iw6, Y58iw6; +wire F68iw6, M68iw6, T68iw6, A78iw6, H78iw6, O78iw6, V78iw6, C88iw6, J88iw6, Q88iw6; +wire X88iw6, E98iw6, L98iw6, S98iw6, Z98iw6, Ga8iw6, Na8iw6, Ua8iw6, Bb8iw6, Ib8iw6; +wire Pb8iw6, Wb8iw6, Dc8iw6, Kc8iw6, Rc8iw6, Yc8iw6, Fd8iw6, Md8iw6, Td8iw6, Ae8iw6; +wire He8iw6, Oe8iw6, Ve8iw6, Cf8iw6, Jf8iw6, Qf8iw6, Xf8iw6, Eg8iw6, Lg8iw6, Sg8iw6; +wire Zg8iw6, Gh8iw6, Nh8iw6, Uh8iw6, Bi8iw6, Ii8iw6, Pi8iw6, Wi8iw6, Dj8iw6, Kj8iw6; +wire Rj8iw6, Yj8iw6, Fk8iw6, Mk8iw6, Tk8iw6, Al8iw6, Hl8iw6, Ol8iw6, Vl8iw6, Cm8iw6; +wire Jm8iw6, Qm8iw6, Xm8iw6, En8iw6, Ln8iw6, Sn8iw6, Zn8iw6, Go8iw6, No8iw6, Uo8iw6; +wire Bp8iw6, Ip8iw6, Pp8iw6, Wp8iw6, Dq8iw6, Kq8iw6, Rq8iw6, Yq8iw6, Fr8iw6, Mr8iw6; +wire Tr8iw6, As8iw6, Hs8iw6, Os8iw6, Vs8iw6, Ct8iw6, Jt8iw6, Qt8iw6, Xt8iw6, Eu8iw6; +wire Lu8iw6, Su8iw6, Zu8iw6, Gv8iw6, Nv8iw6, Uv8iw6, Bw8iw6, Iw8iw6, Pw8iw6, Ww8iw6; +wire Dx8iw6, Kx8iw6, Rx8iw6, Yx8iw6, Fy8iw6, My8iw6, Ty8iw6, Az8iw6, Hz8iw6, Oz8iw6; +wire Vz8iw6, C09iw6, J09iw6, Q09iw6, X09iw6, E19iw6, L19iw6, S19iw6, Z19iw6, G29iw6; +wire N29iw6, U29iw6, B39iw6, I39iw6, P39iw6, W39iw6, D49iw6, K49iw6, R49iw6, Y49iw6; +wire F59iw6, M59iw6, T59iw6, A69iw6, H69iw6, O69iw6, V69iw6, C79iw6, J79iw6, Q79iw6; +wire X79iw6, E89iw6, L89iw6, S89iw6, Z89iw6, G99iw6, N99iw6, U99iw6, Ba9iw6, Ia9iw6; +wire Pa9iw6, Wa9iw6, Db9iw6, Kb9iw6, Rb9iw6, Yb9iw6, Fc9iw6, Mc9iw6, Tc9iw6, Ad9iw6; +wire Hd9iw6, Od9iw6, Vd9iw6, Ce9iw6, Je9iw6, Qe9iw6, Xe9iw6, Ef9iw6, Lf9iw6, Sf9iw6; +wire Zf9iw6, Gg9iw6, Ng9iw6, Ug9iw6, Bh9iw6, Ih9iw6, Ph9iw6, Wh9iw6, Di9iw6, Ki9iw6; +wire Ri9iw6, Yi9iw6, Fj9iw6, Mj9iw6, Tj9iw6, Ak9iw6, Hk9iw6, Ok9iw6, Vk9iw6, Cl9iw6; +wire Jl9iw6, Ql9iw6, Xl9iw6, Em9iw6, Lm9iw6, Sm9iw6, Zm9iw6, Gn9iw6, Nn9iw6, Un9iw6; +wire Bo9iw6, Io9iw6, Po9iw6, Wo9iw6, Dp9iw6, Kp9iw6, Rp9iw6, Yp9iw6, Fq9iw6, Mq9iw6; +wire Tq9iw6, Ar9iw6, Hr9iw6, Or9iw6, Vr9iw6, Cs9iw6, Js9iw6, Qs9iw6, Xs9iw6, Et9iw6; +wire Lt9iw6, St9iw6, Zt9iw6, Gu9iw6, Nu9iw6, Uu9iw6, Bv9iw6, Iv9iw6, Pv9iw6, Wv9iw6; +wire Dw9iw6, Kw9iw6, Rw9iw6, Yw9iw6, Fx9iw6, Mx9iw6, Tx9iw6, Ay9iw6, Hy9iw6, Oy9iw6; +wire Vy9iw6, Cz9iw6, Jz9iw6, Qz9iw6, Xz9iw6, E0aiw6, L0aiw6, S0aiw6, Z0aiw6, G1aiw6; +wire N1aiw6, U1aiw6, B2aiw6, I2aiw6, P2aiw6, W2aiw6, D3aiw6, K3aiw6, R3aiw6, Y3aiw6; +wire F4aiw6, M4aiw6, T4aiw6, A5aiw6, H5aiw6, O5aiw6, V5aiw6, C6aiw6, J6aiw6, Q6aiw6; +wire X6aiw6, E7aiw6, L7aiw6, S7aiw6, Z7aiw6, G8aiw6, N8aiw6, U8aiw6, B9aiw6, I9aiw6; +wire P9aiw6, W9aiw6, Daaiw6, Kaaiw6, Raaiw6, Yaaiw6, Fbaiw6, Mbaiw6, Tbaiw6, Acaiw6; +wire Hcaiw6, Ocaiw6, Vcaiw6, Cdaiw6, Jdaiw6, Qdaiw6, Xdaiw6, Eeaiw6, Leaiw6, Seaiw6; +wire Zeaiw6, Gfaiw6, Nfaiw6, Ufaiw6, Bgaiw6, Igaiw6, Pgaiw6, Wgaiw6, Dhaiw6, Khaiw6; +wire Rhaiw6, Yhaiw6, Fiaiw6, Miaiw6, Tiaiw6, Ajaiw6, Hjaiw6, Ojaiw6, Vjaiw6, Ckaiw6; +wire Jkaiw6, Qkaiw6, Xkaiw6, Elaiw6, Llaiw6, Slaiw6, Zlaiw6, Gmaiw6, Nmaiw6, Umaiw6; +wire Bnaiw6, Inaiw6, Pnaiw6, Wnaiw6, Doaiw6, Koaiw6, Roaiw6, Yoaiw6, Fpaiw6, Mpaiw6; +wire Tpaiw6, Aqaiw6, Hqaiw6, Oqaiw6, Vqaiw6, Craiw6, Jraiw6, Qraiw6, Xraiw6, Esaiw6; +wire Lsaiw6, Ssaiw6, Zsaiw6, Gtaiw6, Ntaiw6, Utaiw6, Buaiw6, Iuaiw6, Puaiw6, Wuaiw6; +wire Dvaiw6, Kvaiw6, Rvaiw6, Yvaiw6, Fwaiw6, Mwaiw6, Twaiw6, Axaiw6, Hxaiw6, Oxaiw6; +wire Vxaiw6, Cyaiw6, Jyaiw6, Qyaiw6, Xyaiw6, Ezaiw6, Lzaiw6, Szaiw6, Zzaiw6, G0biw6; +wire N0biw6, U0biw6, B1biw6, I1biw6, P1biw6, W1biw6, D2biw6, K2biw6, R2biw6, Y2biw6; +wire F3biw6, M3biw6, T3biw6, A4biw6, H4biw6, O4biw6, V4biw6, C5biw6, J5biw6, Q5biw6; +wire X5biw6, E6biw6, L6biw6, S6biw6, Z6biw6, G7biw6, N7biw6, U7biw6, B8biw6, I8biw6; +wire P8biw6, W8biw6, D9biw6, K9biw6, R9biw6, Y9biw6, Fabiw6, Mabiw6, Tabiw6, Abbiw6; +wire Hbbiw6, Obbiw6, Vbbiw6, Ccbiw6, Jcbiw6, Qcbiw6, Xcbiw6, Edbiw6, Ldbiw6, Sdbiw6; +wire Zdbiw6, Gebiw6, Nebiw6, Uebiw6, Bfbiw6, Ifbiw6, Pfbiw6, Wfbiw6, Dgbiw6, Kgbiw6; +wire Rgbiw6, Ygbiw6, Fhbiw6, Mhbiw6, Thbiw6, Aibiw6, Hibiw6, Oibiw6, Vibiw6, Cjbiw6; +wire Jjbiw6, Qjbiw6, Xjbiw6, Ekbiw6, Lkbiw6, Skbiw6, Zkbiw6, Glbiw6, Nlbiw6, Ulbiw6; +wire Bmbiw6, Imbiw6, Pmbiw6, Wmbiw6, Dnbiw6, Knbiw6, Rnbiw6, Ynbiw6, Fobiw6, Mobiw6; +wire Tobiw6, Apbiw6, Hpbiw6, Opbiw6, Vpbiw6, Cqbiw6, Jqbiw6, Qqbiw6, Xqbiw6, Erbiw6; +wire Lrbiw6, Srbiw6, Zrbiw6, Gsbiw6, Nsbiw6, Usbiw6, Btbiw6, Itbiw6, Ptbiw6, Wtbiw6; +wire Dubiw6, Kubiw6, Rubiw6, Yubiw6, Fvbiw6, Mvbiw6, Tvbiw6, Awbiw6, Hwbiw6, Owbiw6; +wire Vwbiw6, Cxbiw6, Jxbiw6, Qxbiw6, Xxbiw6, Eybiw6, Lybiw6, Sybiw6, Zybiw6, Gzbiw6; +wire Nzbiw6, Uzbiw6, B0ciw6, I0ciw6, P0ciw6, W0ciw6, D1ciw6, K1ciw6, R1ciw6, Y1ciw6; +wire F2ciw6, M2ciw6, T2ciw6, A3ciw6, H3ciw6, O3ciw6, V3ciw6, C4ciw6, J4ciw6, Q4ciw6; +wire X4ciw6, E5ciw6, L5ciw6, S5ciw6, Z5ciw6, G6ciw6, N6ciw6, U6ciw6, B7ciw6, I7ciw6; +wire P7ciw6, W7ciw6, D8ciw6, K8ciw6, R8ciw6, Y8ciw6, F9ciw6, M9ciw6, T9ciw6, Aaciw6; +wire Haciw6, Oaciw6, Vaciw6, Cbciw6, Jbciw6, Qbciw6, Xbciw6, Ecciw6, Lcciw6, Scciw6; +wire Zcciw6, Gdciw6, Ndciw6, Udciw6, Beciw6, Ieciw6, Peciw6, Weciw6, Dfciw6, Kfciw6; +wire Rfciw6, Yfciw6, Fgciw6, Mgciw6, Tgciw6, Ahciw6, Hhciw6, Ohciw6, Vhciw6, Ciciw6; +wire Jiciw6, Qiciw6, Xiciw6, Ejciw6, Ljciw6, Sjciw6, Zjciw6, Gkciw6, Nkciw6, Ukciw6; +wire Blciw6, Ilciw6, Plciw6, Wlciw6, Dmciw6, Kmciw6, Rmciw6, Ymciw6, Fnciw6, Mnciw6; +wire Tnciw6, Aociw6, Hociw6, Oociw6, Vociw6, Cpciw6, Jpciw6, Qpciw6, Xpciw6, Eqciw6; +wire Lqciw6, Sqciw6, Zqciw6, Grciw6, Nrciw6, Urciw6, Bsciw6, Isciw6, Psciw6, Wsciw6; +wire Dtciw6, Ktciw6, Rtciw6, Ytciw6, Fuciw6, Muciw6, Tuciw6, Avciw6, Hvciw6, Ovciw6; +wire Vvciw6, Cwciw6, Jwciw6, Qwciw6, Xwciw6, Exciw6, Lxciw6, Sxciw6, Zxciw6, Gyciw6; +wire Nyciw6, Uyciw6, Bzciw6, Izciw6, Pzciw6, Wzciw6, D0diw6, K0diw6, R0diw6, Y0diw6; +wire F1diw6, M1diw6, T1diw6, A2diw6, H2diw6, O2diw6, V2diw6, C3diw6, J3diw6, Q3diw6; +wire X3diw6, E4diw6, L4diw6, S4diw6, Z4diw6, G5diw6, N5diw6, U5diw6, B6diw6, I6diw6; +wire P6diw6, W6diw6, D7diw6, K7diw6, R7diw6, Y7diw6, F8diw6, M8diw6, T8diw6, A9diw6; +wire H9diw6, O9diw6, V9diw6, Cadiw6, Jadiw6, Qadiw6, Xadiw6, Ebdiw6, Lbdiw6, Sbdiw6; +wire Zbdiw6, Gcdiw6, Ncdiw6, Ucdiw6, Bddiw6, Iddiw6, Pddiw6, Wddiw6, Dediw6, Kediw6; +wire Rediw6, Yediw6, Ffdiw6, Mfdiw6, Tfdiw6, Agdiw6, Hgdiw6, Ogdiw6, Vgdiw6, Chdiw6; +wire Jhdiw6, Qhdiw6, Xhdiw6, Eidiw6, Lidiw6, Sidiw6, Zidiw6, Gjdiw6, Njdiw6, Ujdiw6; +wire Bkdiw6, Ikdiw6, Pkdiw6, Wkdiw6, Dldiw6, Kldiw6, Rldiw6, Yldiw6, Fmdiw6, Mmdiw6; +wire Tmdiw6, Andiw6, Hndiw6, Ondiw6, Vndiw6, Codiw6, Jodiw6, Qodiw6, Xodiw6, Epdiw6; +wire Lpdiw6, Spdiw6, Zpdiw6, Gqdiw6, Nqdiw6, Uqdiw6, Brdiw6, Irdiw6, Prdiw6, Wrdiw6; +wire Dsdiw6, Ksdiw6, Rsdiw6, Ysdiw6, Ftdiw6, Mtdiw6, Ttdiw6, Audiw6, Hudiw6, Oudiw6; +wire Vudiw6, Cvdiw6, Jvdiw6, Qvdiw6, Xvdiw6, Ewdiw6, Lwdiw6, Swdiw6, Zwdiw6, Gxdiw6; +wire Nxdiw6, Uxdiw6, Bydiw6, Iydiw6, Pydiw6, Wydiw6, Dzdiw6, Kzdiw6, Rzdiw6, Yzdiw6; +wire F0eiw6, M0eiw6, T0eiw6, A1eiw6, H1eiw6, O1eiw6, V1eiw6, C2eiw6, J2eiw6, Q2eiw6; +wire X2eiw6, E3eiw6, L3eiw6, S3eiw6, Z3eiw6, G4eiw6, N4eiw6, U4eiw6, B5eiw6, I5eiw6; +wire P5eiw6, W5eiw6, D6eiw6, K6eiw6, R6eiw6, Y6eiw6, F7eiw6, M7eiw6, T7eiw6, A8eiw6; +wire H8eiw6, O8eiw6, V8eiw6, C9eiw6, J9eiw6, Q9eiw6, X9eiw6, Eaeiw6, Laeiw6, Saeiw6; +wire Zaeiw6, Gbeiw6, Nbeiw6, Ubeiw6, Bceiw6, Iceiw6, Pceiw6, Wceiw6, Ddeiw6, Kdeiw6; +wire Rdeiw6, Ydeiw6, Feeiw6, Meeiw6, Teeiw6, Afeiw6, Hfeiw6, Ofeiw6, Vfeiw6, Cgeiw6; +wire Jgeiw6, Qgeiw6, Xgeiw6, Eheiw6, Lheiw6, Sheiw6, Zheiw6, Gieiw6, Nieiw6, Uieiw6; +wire Bjeiw6, Ijeiw6, Pjeiw6, Wjeiw6, Dkeiw6, Kkeiw6, Rkeiw6, Ykeiw6, Fleiw6, Mleiw6; +wire Tleiw6, Ameiw6, Hmeiw6, Omeiw6, Vmeiw6, Cneiw6, Jneiw6, Qneiw6, Xneiw6, Eoeiw6; +wire Loeiw6, Soeiw6, Zoeiw6, Gpeiw6, Npeiw6, Upeiw6, Bqeiw6, Iqeiw6, Pqeiw6, Wqeiw6; +wire Dreiw6, Kreiw6, Rreiw6, Yreiw6, Fseiw6, Mseiw6, Tseiw6, Ateiw6, Hteiw6, Oteiw6; +wire Vteiw6, Cueiw6, Jueiw6, Queiw6, Xueiw6, Eveiw6, Lveiw6, Sveiw6, Zveiw6, Gweiw6; +wire Nweiw6, Uweiw6, Bxeiw6, Ixeiw6, Pxeiw6, Wxeiw6, Dyeiw6, Kyeiw6, Ryeiw6, Yyeiw6; +wire Fzeiw6, Mzeiw6, Tzeiw6, A0fiw6, H0fiw6, O0fiw6, V0fiw6, C1fiw6, J1fiw6, Q1fiw6; +wire X1fiw6, E2fiw6, L2fiw6, S2fiw6, Z2fiw6, G3fiw6, N3fiw6, U3fiw6, B4fiw6, I4fiw6; +wire P4fiw6, W4fiw6, D5fiw6, K5fiw6, R5fiw6, Y5fiw6, F6fiw6, M6fiw6, T6fiw6, A7fiw6; +wire H7fiw6, O7fiw6, V7fiw6, C8fiw6, J8fiw6, Q8fiw6, X8fiw6, E9fiw6, L9fiw6, S9fiw6; +wire Z9fiw6, Gafiw6, Nafiw6, Uafiw6, Bbfiw6, Ibfiw6, Pbfiw6, Wbfiw6, Dcfiw6, Kcfiw6; +wire Rcfiw6, Ycfiw6, Fdfiw6, Mdfiw6, Tdfiw6, Aefiw6, Hefiw6, Oefiw6, Vefiw6, Cffiw6; +wire Jffiw6, Qffiw6, Xffiw6, Egfiw6, Lgfiw6, Sgfiw6, Zgfiw6, Ghfiw6, Nhfiw6, Uhfiw6; +wire Bifiw6, Iifiw6, Pifiw6, Wifiw6, Djfiw6, Kjfiw6, Rjfiw6, Yjfiw6, Fkfiw6, Mkfiw6; +wire Tkfiw6, Alfiw6, Hlfiw6, Olfiw6, Vlfiw6, Cmfiw6, Jmfiw6, Qmfiw6, Xmfiw6, Enfiw6; +wire Lnfiw6, Snfiw6, Znfiw6, Gofiw6, Nofiw6, Uofiw6, Bpfiw6, Ipfiw6, Ppfiw6, Wpfiw6; +wire Dqfiw6, Kqfiw6, Rqfiw6, Yqfiw6, Frfiw6, Mrfiw6, Trfiw6, Asfiw6, Hsfiw6, Osfiw6; +wire Vsfiw6, Ctfiw6, Jtfiw6, Qtfiw6, Xtfiw6, Eufiw6, Lufiw6, Sufiw6, Zufiw6, Gvfiw6; +wire Nvfiw6, Uvfiw6, Bwfiw6, Iwfiw6, Pwfiw6, Wwfiw6, Dxfiw6, Kxfiw6, Rxfiw6, Yxfiw6; +wire Fyfiw6, Myfiw6, Tyfiw6, Azfiw6, Hzfiw6, Ozfiw6, Vzfiw6, C0giw6, J0giw6, Q0giw6; +wire X0giw6, E1giw6, L1giw6, S1giw6, Z1giw6, G2giw6, N2giw6, U2giw6, B3giw6, I3giw6; +wire P3giw6, W3giw6, D4giw6, K4giw6, R4giw6, Y4giw6, F5giw6, M5giw6, T5giw6, A6giw6; +wire H6giw6, O6giw6, V6giw6, C7giw6, J7giw6, Q7giw6, X7giw6, E8giw6, L8giw6, S8giw6; +wire Z8giw6, G9giw6, N9giw6, U9giw6, Bagiw6, Iagiw6, Pagiw6, Wagiw6, Dbgiw6, Kbgiw6; +wire Rbgiw6, Ybgiw6, Fcgiw6, Mcgiw6, Tcgiw6, Adgiw6, Hdgiw6, Odgiw6, Vdgiw6, Cegiw6; +wire Jegiw6, Qegiw6, Xegiw6, Efgiw6, Lfgiw6, Sfgiw6, Zfgiw6, Gggiw6, Nggiw6, Uggiw6; +wire Bhgiw6, Ihgiw6, Phgiw6, Whgiw6, Digiw6, Kigiw6, Rigiw6, Yigiw6, Fjgiw6, Mjgiw6; +wire Tjgiw6, Akgiw6, Hkgiw6, Okgiw6, Vkgiw6, Clgiw6, Jlgiw6, Qlgiw6, Xlgiw6, Emgiw6; +wire Lmgiw6, Smgiw6, Zmgiw6, Gngiw6, Nngiw6, Ungiw6, Bogiw6, Iogiw6, Pogiw6, Wogiw6; +wire Dpgiw6, Kpgiw6, Rpgiw6, Ypgiw6, Fqgiw6, Mqgiw6, Tqgiw6, Argiw6, Hrgiw6, Orgiw6; +wire Vrgiw6, Csgiw6, Jsgiw6, Qsgiw6, Xsgiw6, Etgiw6, Ltgiw6, Stgiw6, Ztgiw6, Gugiw6; +wire Nugiw6, Uugiw6, Bvgiw6, Ivgiw6, Pvgiw6, Wvgiw6, Dwgiw6, Kwgiw6, Rwgiw6, Ywgiw6; +wire Fxgiw6, Mxgiw6, Txgiw6, Aygiw6, Hygiw6, Oygiw6, Vygiw6, Czgiw6, Jzgiw6, Qzgiw6; +wire Xzgiw6, E0hiw6, L0hiw6, S0hiw6, Z0hiw6, G1hiw6, N1hiw6, U1hiw6, B2hiw6, I2hiw6; +wire P2hiw6, W2hiw6, D3hiw6, K3hiw6, R3hiw6, Y3hiw6, F4hiw6, M4hiw6, T4hiw6, A5hiw6; +wire H5hiw6, O5hiw6, V5hiw6, C6hiw6, J6hiw6, Q6hiw6, X6hiw6, E7hiw6, L7hiw6, S7hiw6; +wire Z7hiw6, G8hiw6, N8hiw6, U8hiw6, B9hiw6, I9hiw6, P9hiw6, W9hiw6, Dahiw6, Kahiw6; +wire Rahiw6, Yahiw6, Fbhiw6, Mbhiw6, Tbhiw6, Achiw6, Hchiw6, Ochiw6, Vchiw6, Cdhiw6; +wire Jdhiw6, Qdhiw6, Xdhiw6, Eehiw6, Lehiw6, Sehiw6, Zehiw6, Gfhiw6, Nfhiw6, Ufhiw6; +wire Bghiw6, Ighiw6, Pghiw6, Wghiw6, Dhhiw6, Khhiw6, Rhhiw6, Yhhiw6, Fihiw6, Mihiw6; +wire Tihiw6, Ajhiw6, Hjhiw6, Ojhiw6, Vjhiw6, Ckhiw6, Jkhiw6, Qkhiw6, Xkhiw6, Elhiw6; +wire Llhiw6, Slhiw6, Zlhiw6, Gmhiw6, Nmhiw6, Umhiw6, Bnhiw6, Inhiw6, Pnhiw6, Wnhiw6; +wire Dohiw6, Kohiw6, Rohiw6, Yohiw6, Fphiw6, Mphiw6, Tphiw6, Aqhiw6, Hqhiw6, Oqhiw6; +wire Vqhiw6, Crhiw6, Jrhiw6, Qrhiw6, Xrhiw6, Eshiw6, Lshiw6, Sshiw6, Zshiw6, Gthiw6; +wire Nthiw6, Uthiw6, Buhiw6, Iuhiw6, Puhiw6, Wuhiw6, Dvhiw6, Kvhiw6, Rvhiw6, Yvhiw6; +wire Fwhiw6, Mwhiw6, Twhiw6, Axhiw6, Hxhiw6, Oxhiw6, Vxhiw6, Cyhiw6, Jyhiw6, Qyhiw6; +wire Xyhiw6, Ezhiw6, Lzhiw6, Szhiw6, Zzhiw6, G0iiw6, N0iiw6, U0iiw6, B1iiw6, I1iiw6; +wire P1iiw6, W1iiw6, D2iiw6, K2iiw6, R2iiw6, Y2iiw6, F3iiw6, M3iiw6, T3iiw6, A4iiw6; +wire H4iiw6, O4iiw6, V4iiw6, C5iiw6, J5iiw6, Q5iiw6, X5iiw6, E6iiw6, L6iiw6, S6iiw6; +wire Z6iiw6, G7iiw6, N7iiw6, U7iiw6, B8iiw6, I8iiw6, P8iiw6, W8iiw6, D9iiw6, K9iiw6; +wire R9iiw6, Y9iiw6, Faiiw6, Maiiw6, Taiiw6, Abiiw6, Hbiiw6, Obiiw6, Vbiiw6, Cciiw6; +wire Jciiw6, Qciiw6, Xciiw6, Ediiw6, Ldiiw6, Sdiiw6, Zdiiw6, Geiiw6, Neiiw6, Ueiiw6; +wire Bfiiw6, Ifiiw6, Pfiiw6, Wfiiw6, Dgiiw6, Kgiiw6, Rgiiw6, Ygiiw6, Fhiiw6, Mhiiw6; +wire Thiiw6, Aiiiw6, Hiiiw6, Oiiiw6, Viiiw6, Cjiiw6, Jjiiw6, Qjiiw6, Xjiiw6, Ekiiw6; +wire Lkiiw6, Skiiw6, Zkiiw6, Gliiw6, Nliiw6, Uliiw6, Bmiiw6, Imiiw6, Pmiiw6, Wmiiw6; +wire Dniiw6, Kniiw6, Rniiw6, Yniiw6, Foiiw6, Moiiw6, Toiiw6, Apiiw6, Hpiiw6, Opiiw6; +wire Vpiiw6, Cqiiw6, Jqiiw6, Qqiiw6, Xqiiw6, Eriiw6, Lriiw6, Sriiw6, Zriiw6, Gsiiw6; +wire Nsiiw6, Usiiw6, Btiiw6, Itiiw6, Ptiiw6, Wtiiw6, Duiiw6, Kuiiw6, Ruiiw6, Yuiiw6; +wire Fviiw6, Mviiw6, Tviiw6, Awiiw6, Hwiiw6, Owiiw6, Vwiiw6, Cxiiw6, Jxiiw6, Qxiiw6; +wire Xxiiw6, Eyiiw6, Lyiiw6, Syiiw6, Zyiiw6, Gziiw6, Nziiw6, Uziiw6, B0jiw6, I0jiw6; +wire P0jiw6, W0jiw6, D1jiw6, K1jiw6, R1jiw6, Y1jiw6, F2jiw6, M2jiw6, T2jiw6, A3jiw6; +wire H3jiw6, O3jiw6, V3jiw6, C4jiw6, J4jiw6, Q4jiw6, X4jiw6, E5jiw6, L5jiw6, S5jiw6; +wire Z5jiw6, G6jiw6, N6jiw6, U6jiw6, B7jiw6, I7jiw6, P7jiw6, W7jiw6, D8jiw6, K8jiw6; +wire R8jiw6, Y8jiw6, F9jiw6, M9jiw6, T9jiw6, Aajiw6, Hajiw6, Oajiw6, Vajiw6, Cbjiw6; +wire Jbjiw6, Qbjiw6, Xbjiw6, Ecjiw6, Lcjiw6, Scjiw6, Zcjiw6, Gdjiw6, Ndjiw6, Udjiw6; +wire Bejiw6, Iejiw6, Pejiw6, Wejiw6, Dfjiw6, Kfjiw6, Rfjiw6, Yfjiw6, Fgjiw6, Mgjiw6; +wire Tgjiw6, Ahjiw6, Hhjiw6, Ohjiw6, Vhjiw6, Cijiw6, Jijiw6, Qijiw6, Xijiw6, Ejjiw6; +wire Ljjiw6, Sjjiw6, Zjjiw6, Gkjiw6, Nkjiw6, Ukjiw6, Bljiw6, Iljiw6, Pljiw6, Wljiw6; +wire Dmjiw6, Kmjiw6, Rmjiw6, Ymjiw6, Fnjiw6, Mnjiw6, Tnjiw6, Aojiw6, Hojiw6, Oojiw6; +wire Vojiw6, Cpjiw6, Jpjiw6, Qpjiw6, Xpjiw6, Eqjiw6, Lqjiw6, Sqjiw6, Zqjiw6, Grjiw6; +wire Nrjiw6, Urjiw6, Bsjiw6, Isjiw6, Psjiw6, Wsjiw6, Dtjiw6, Ktjiw6, Rtjiw6, Ytjiw6; +wire Fujiw6, Mujiw6, Tujiw6, Avjiw6, Hvjiw6, Ovjiw6, Vvjiw6, Cwjiw6, Jwjiw6, Qwjiw6; +wire Xwjiw6, Exjiw6, Lxjiw6, Sxjiw6, Zxjiw6, Gyjiw6, Nyjiw6, Uyjiw6, Bzjiw6, Izjiw6; +wire Pzjiw6, Wzjiw6, D0kiw6, K0kiw6, R0kiw6, Y0kiw6, F1kiw6, M1kiw6, T1kiw6, A2kiw6; +wire H2kiw6, O2kiw6, V2kiw6, C3kiw6, J3kiw6, Q3kiw6, X3kiw6, E4kiw6, L4kiw6, S4kiw6; +wire Z4kiw6, G5kiw6, N5kiw6, U5kiw6, B6kiw6, I6kiw6, P6kiw6, W6kiw6, D7kiw6, K7kiw6; +wire R7kiw6, Y7kiw6, F8kiw6, M8kiw6, T8kiw6, A9kiw6, H9kiw6, O9kiw6, V9kiw6, Cakiw6; +wire Jakiw6, Qakiw6, Xakiw6, Ebkiw6, Lbkiw6, Sbkiw6, Zbkiw6, Gckiw6, Nckiw6, Uckiw6; +wire Bdkiw6, Idkiw6, Pdkiw6, Wdkiw6, Dekiw6, Kekiw6, Rekiw6, Yekiw6, Ffkiw6, Mfkiw6; +wire Tfkiw6, Agkiw6, Hgkiw6, Ogkiw6, Vgkiw6, Chkiw6, Jhkiw6, Qhkiw6, Xhkiw6, Eikiw6; +wire Likiw6, Sikiw6, Zikiw6, Gjkiw6, Njkiw6, Ujkiw6, Bkkiw6, Ikkiw6, Pkkiw6, Wkkiw6; +wire Dlkiw6, Klkiw6, Rlkiw6, Ylkiw6, Fmkiw6, Mmkiw6, Tmkiw6, Ankiw6, Hnkiw6, Onkiw6; +wire Vnkiw6, Cokiw6, Jokiw6, Qokiw6, Xokiw6, Epkiw6, Lpkiw6, Spkiw6, Zpkiw6, Gqkiw6; +wire Nqkiw6, Uqkiw6, Brkiw6, Irkiw6, Prkiw6, Wrkiw6, Dskiw6, Kskiw6, Rskiw6, Yskiw6; +wire Ftkiw6, Mtkiw6, Ttkiw6, Aukiw6, Hukiw6, Oukiw6, Vukiw6, Cvkiw6, Jvkiw6, Qvkiw6; +wire Xvkiw6, Ewkiw6, Lwkiw6, Swkiw6, Zwkiw6, Gxkiw6, Nxkiw6, Uxkiw6, Bykiw6, Iykiw6; +wire Pykiw6, Wykiw6, Dzkiw6, Kzkiw6, Rzkiw6, Yzkiw6, F0liw6, M0liw6, T0liw6, A1liw6; +wire H1liw6, O1liw6, V1liw6, C2liw6, J2liw6, Q2liw6, X2liw6, E3liw6, L3liw6, S3liw6; +wire Z3liw6, G4liw6, N4liw6, U4liw6, B5liw6, I5liw6, P5liw6, W5liw6, D6liw6, K6liw6; +wire R6liw6, Y6liw6, F7liw6, M7liw6, T7liw6, A8liw6, H8liw6, O8liw6, V8liw6, C9liw6; +wire J9liw6, Q9liw6, X9liw6, Ealiw6, Laliw6, Saliw6, Zaliw6, Gbliw6, Nbliw6, Ubliw6; +wire Bcliw6, Icliw6, Pcliw6, Wcliw6, Ddliw6, Kdliw6, Rdliw6, Ydliw6, Feliw6, Meliw6; +wire Teliw6, Afliw6, Hfliw6, Ofliw6, Vfliw6, Cgliw6, Jgliw6, Qgliw6, Xgliw6, Ehliw6; +wire Lhliw6, Shliw6, Zhliw6, Giliw6, Niliw6, Uiliw6, Bjliw6, Ijliw6, Pjliw6, Wjliw6; +wire Dkliw6, Kkliw6, Rkliw6, Ykliw6, Flliw6, Mlliw6, Tlliw6, Amliw6, Hmliw6, Omliw6; +wire Vmliw6, Cnliw6, Jnliw6, Qnliw6, Xnliw6, Eoliw6, Loliw6, Soliw6, Zoliw6, Gpliw6; +wire Npliw6, Upliw6, Bqliw6, Iqliw6, Pqliw6, Wqliw6, Drliw6, Krliw6, Rrliw6, Yrliw6; +wire Fsliw6, Msliw6, Tsliw6, Atliw6, Htliw6, Otliw6, Vtliw6, Culiw6, Juliw6, Quliw6; +wire Xuliw6, Evliw6, Lvliw6, Svliw6, Zvliw6, Gwliw6, Nwliw6, Uwliw6, Bxliw6, Ixliw6; +wire Pxliw6, Wxliw6, Dyliw6, Kyliw6, Ryliw6, Yyliw6, Fzliw6, Mzliw6, Tzliw6, A0miw6; +wire H0miw6, O0miw6, V0miw6, C1miw6, J1miw6, Q1miw6, X1miw6, E2miw6, L2miw6, S2miw6; +wire Z2miw6, G3miw6, N3miw6, U3miw6, B4miw6, I4miw6, P4miw6, W4miw6, D5miw6, K5miw6; +wire R5miw6, Y5miw6, F6miw6, M6miw6, T6miw6, A7miw6, H7miw6, O7miw6, V7miw6, C8miw6; +wire J8miw6, Q8miw6, X8miw6, E9miw6, L9miw6, S9miw6, Z9miw6, Gamiw6, Namiw6, Uamiw6; +wire Bbmiw6, Ibmiw6, Pbmiw6, Wbmiw6, Dcmiw6, Kcmiw6, Rcmiw6, Ycmiw6, Fdmiw6, Mdmiw6; +wire Tdmiw6, Aemiw6, Hemiw6, Oemiw6, Vemiw6, Cfmiw6, Jfmiw6, Qfmiw6, Xfmiw6, Egmiw6; +wire Lgmiw6, Sgmiw6, Zgmiw6, Ghmiw6, Nhmiw6, Uhmiw6, Bimiw6, Iimiw6, Pimiw6, Wimiw6; +wire Djmiw6, Kjmiw6, Rjmiw6, Yjmiw6, Fkmiw6, Mkmiw6, Tkmiw6, Almiw6, Hlmiw6, Olmiw6; +wire Vlmiw6, Cmmiw6, Jmmiw6, Qmmiw6, Xmmiw6, Enmiw6, Lnmiw6, Snmiw6, Znmiw6, Gomiw6; +wire Nomiw6, Uomiw6, Bpmiw6, Ipmiw6, Ppmiw6, Wpmiw6, Dqmiw6, Kqmiw6, Rqmiw6, Yqmiw6; +wire Frmiw6, Mrmiw6, Trmiw6, Asmiw6, Hsmiw6, Osmiw6, Vsmiw6, Ctmiw6, Jtmiw6, Qtmiw6; +wire Xtmiw6, Eumiw6, Lumiw6, Sumiw6, Zumiw6, Gvmiw6, Nvmiw6, Uvmiw6, Bwmiw6, Iwmiw6; +wire Pwmiw6, Wwmiw6, Dxmiw6, Kxmiw6, Rxmiw6, Yxmiw6, Fymiw6, Mymiw6, Tymiw6, Azmiw6; +wire Hzmiw6, Ozmiw6, Vzmiw6, C0niw6, J0niw6, Q0niw6, X0niw6, E1niw6, L1niw6, S1niw6; +wire Z1niw6, G2niw6, N2niw6, U2niw6, B3niw6, I3niw6, P3niw6, W3niw6, D4niw6, K4niw6; +wire R4niw6, Y4niw6, F5niw6, M5niw6, T5niw6, A6niw6, H6niw6, O6niw6, V6niw6, C7niw6; +wire J7niw6, Q7niw6, X7niw6, E8niw6, L8niw6, S8niw6, Z8niw6, G9niw6, N9niw6, U9niw6; +wire Baniw6, Ianiw6, Paniw6, Waniw6, Dbniw6, Kbniw6, Rbniw6, Ybniw6, Fcniw6, Mcniw6; +wire Tcniw6, Adniw6, Hdniw6, Odniw6, Vdniw6, Ceniw6, Jeniw6, Qeniw6, Xeniw6, Efniw6; +wire Lfniw6, Sfniw6, Zfniw6, Ggniw6, Ngniw6, Ugniw6, Bhniw6, Ihniw6, Phniw6, Whniw6; +wire Diniw6, Kiniw6, Riniw6, Yiniw6, Fjniw6, Mjniw6, Tjniw6, Akniw6, Hkniw6, Okniw6; +wire Vkniw6, Clniw6, Jlniw6, Qlniw6, Xlniw6, Emniw6, Lmniw6, Smniw6, Zmniw6, Gnniw6; +wire Nnniw6, Unniw6, Boniw6, Ioniw6, Poniw6, Woniw6, Dpniw6, Kpniw6, Rpniw6, Ypniw6; +wire Fqniw6, Mqniw6, Tqniw6, Arniw6, Hrniw6, Orniw6, Vrniw6, Csniw6, Jsniw6, Qsniw6; +wire Xsniw6, Etniw6, Ltniw6, Stniw6, Ztniw6, Guniw6, Nuniw6, Uuniw6, Bvniw6, Ivniw6; +wire Pvniw6, Wvniw6, Dwniw6, Kwniw6, Rwniw6, Ywniw6, Fxniw6, Mxniw6, Txniw6, Ayniw6; +wire Hyniw6, Oyniw6, Vyniw6, Czniw6, Jzniw6, Qzniw6, Xzniw6, E0oiw6, L0oiw6, S0oiw6; +wire Z0oiw6, G1oiw6, N1oiw6, U1oiw6, B2oiw6, I2oiw6, P2oiw6, W2oiw6, D3oiw6, K3oiw6; +wire R3oiw6, Y3oiw6, F4oiw6, M4oiw6, T4oiw6, A5oiw6, H5oiw6, O5oiw6, V5oiw6, C6oiw6; +wire J6oiw6, Q6oiw6, X6oiw6, E7oiw6, L7oiw6, S7oiw6, Z7oiw6, G8oiw6, N8oiw6, U8oiw6; +wire B9oiw6, I9oiw6, P9oiw6, W9oiw6, Daoiw6, Kaoiw6, Raoiw6, Yaoiw6, Fboiw6, Mboiw6; +wire Tboiw6, Acoiw6, Hcoiw6, Ocoiw6, Vcoiw6, Cdoiw6, Jdoiw6, Qdoiw6, Xdoiw6, Eeoiw6; +wire Leoiw6, Seoiw6, Zeoiw6, Gfoiw6, Nfoiw6, Ufoiw6, Bgoiw6, Igoiw6, Pgoiw6, Wgoiw6; +wire Dhoiw6, Khoiw6, Rhoiw6, Yhoiw6, Fioiw6, Mioiw6, Tioiw6, Ajoiw6, Hjoiw6, Ojoiw6; +wire Vjoiw6, Ckoiw6, Jkoiw6, Qkoiw6, Xkoiw6, Eloiw6, Lloiw6, Sloiw6, Zloiw6, Gmoiw6; +wire Nmoiw6, Umoiw6, Bnoiw6, Inoiw6, Pnoiw6, Wnoiw6, Dooiw6, Kooiw6, Rooiw6, Yooiw6; +wire Fpoiw6, Mpoiw6, Tpoiw6, Aqoiw6, Hqoiw6, Oqoiw6, Vqoiw6, Croiw6, Jroiw6, Qroiw6; +wire Xroiw6, Esoiw6, Lsoiw6, Ssoiw6, Zsoiw6, Gtoiw6, Ntoiw6, Utoiw6, Buoiw6, Iuoiw6; +wire Puoiw6, Wuoiw6, Dvoiw6, Kvoiw6, Rvoiw6, Yvoiw6, Fwoiw6, Mwoiw6, Twoiw6, Axoiw6; +wire Hxoiw6, Oxoiw6, Vxoiw6, Cyoiw6, Jyoiw6, Qyoiw6, Xyoiw6, Ezoiw6, Lzoiw6, Szoiw6; +wire Zzoiw6, G0piw6, N0piw6, U0piw6, B1piw6, I1piw6, P1piw6, W1piw6, D2piw6, K2piw6; +wire R2piw6, Y2piw6, F3piw6, M3piw6, T3piw6, A4piw6, H4piw6, O4piw6, V4piw6, C5piw6; +wire J5piw6, Q5piw6, X5piw6, E6piw6, L6piw6, S6piw6, Z6piw6, G7piw6, N7piw6, U7piw6; +wire B8piw6, I8piw6, P8piw6, W8piw6, D9piw6, K9piw6, R9piw6, Y9piw6, Fapiw6, Mapiw6; +wire Tapiw6, Abpiw6, Hbpiw6, Obpiw6, Vbpiw6, Ccpiw6, Jcpiw6, Qcpiw6, Xcpiw6, Edpiw6; +wire Ldpiw6, Sdpiw6, Zdpiw6, Gepiw6, Nepiw6, Uepiw6, Bfpiw6, Ifpiw6, Pfpiw6, Wfpiw6; +wire Dgpiw6, Kgpiw6, Rgpiw6, Ygpiw6, Fhpiw6, Mhpiw6, Thpiw6, Aipiw6, Hipiw6, Oipiw6; +wire Vipiw6, Cjpiw6, Jjpiw6, Qjpiw6, Xjpiw6, Ekpiw6, Lkpiw6, Skpiw6, Zkpiw6, Glpiw6; +wire Nlpiw6, Ulpiw6, Bmpiw6, Impiw6, Pmpiw6, Wmpiw6, Dnpiw6, Knpiw6, Rnpiw6, Ynpiw6; +wire Fopiw6, Mopiw6, Topiw6, Appiw6, Hppiw6, Oppiw6, Vppiw6, Cqpiw6, Jqpiw6, Qqpiw6; +wire Xqpiw6, Erpiw6, Lrpiw6, Srpiw6, Zrpiw6, Gspiw6, Nspiw6, Uspiw6, Btpiw6, Itpiw6; +wire Ptpiw6, Wtpiw6, Dupiw6, Kupiw6, Rupiw6, Yupiw6, Fvpiw6, Mvpiw6, Tvpiw6, Awpiw6; +wire Hwpiw6, Owpiw6, Vwpiw6, Cxpiw6, Jxpiw6, Qxpiw6, Xxpiw6, Eypiw6, Lypiw6, Sypiw6; +wire Zypiw6, Gzpiw6, Nzpiw6, Uzpiw6, B0qiw6, I0qiw6, P0qiw6, W0qiw6, D1qiw6, K1qiw6; +wire R1qiw6, Y1qiw6, F2qiw6, M2qiw6, T2qiw6, A3qiw6, H3qiw6, O3qiw6, V3qiw6, C4qiw6; +wire J4qiw6, Q4qiw6, X4qiw6, E5qiw6, L5qiw6, S5qiw6, Z5qiw6, G6qiw6, N6qiw6, U6qiw6; +wire B7qiw6, I7qiw6, P7qiw6, W7qiw6, D8qiw6, K8qiw6, R8qiw6, Y8qiw6, F9qiw6, M9qiw6; +wire T9qiw6, Aaqiw6, Haqiw6, Oaqiw6, Vaqiw6, Cbqiw6, Jbqiw6, Qbqiw6, Xbqiw6, Ecqiw6; +wire Lcqiw6, Scqiw6, Zcqiw6, Gdqiw6, Ndqiw6, Udqiw6, Beqiw6, Ieqiw6, Peqiw6, Weqiw6; +wire Dfqiw6, Kfqiw6, Rfqiw6, Yfqiw6, Fgqiw6, Mgqiw6, Tgqiw6, Ahqiw6, Hhqiw6, Ohqiw6; +wire Vhqiw6, Ciqiw6, Jiqiw6, Qiqiw6, Xiqiw6, Ejqiw6, Ljqiw6, Sjqiw6, Zjqiw6, Gkqiw6; +wire Nkqiw6, Ukqiw6, Blqiw6, Ilqiw6, Plqiw6, Wlqiw6, Dmqiw6, Kmqiw6, Rmqiw6, Ymqiw6; +wire Fnqiw6, Mnqiw6, Tnqiw6, Aoqiw6, Hoqiw6, Ooqiw6, Voqiw6, Cpqiw6, Jpqiw6, Qpqiw6; +wire Xpqiw6, Eqqiw6, Lqqiw6, Sqqiw6, Zqqiw6, Grqiw6, Nrqiw6, Urqiw6, Bsqiw6, Isqiw6; +wire Psqiw6, Wsqiw6, Dtqiw6, Ktqiw6, Rtqiw6, Ytqiw6, Fuqiw6, Muqiw6, Tuqiw6, Avqiw6; +wire Hvqiw6, Ovqiw6, Vvqiw6, Cwqiw6, Jwqiw6, Qwqiw6, Xwqiw6, Exqiw6, Lxqiw6, Sxqiw6; +wire Zxqiw6, Gyqiw6, Nyqiw6, Uyqiw6, Bzqiw6, Izqiw6, Pzqiw6, Wzqiw6, D0riw6, K0riw6; +wire R0riw6, Y0riw6, F1riw6, M1riw6, T1riw6, A2riw6, H2riw6, O2riw6, V2riw6, C3riw6; +wire J3riw6, Q3riw6, X3riw6, E4riw6, L4riw6, S4riw6, Z4riw6, G5riw6, N5riw6, U5riw6; +wire B6riw6, I6riw6, P6riw6, W6riw6, D7riw6, K7riw6, R7riw6, Y7riw6, F8riw6, M8riw6; +wire T8riw6, A9riw6, H9riw6, O9riw6, V9riw6, Cariw6, Jariw6, Qariw6, Xariw6, Ebriw6; +wire Lbriw6, Sbriw6, Zbriw6, Gcriw6, Ncriw6, Ucriw6, Bdriw6, Idriw6, Pdriw6, Wdriw6; +wire Deriw6, Keriw6, Reriw6, Yeriw6, Ffriw6, Mfriw6, Tfriw6, Agriw6, Hgriw6, Ogriw6; +wire Vgriw6, Chriw6, Jhriw6, Qhriw6, Xhriw6, Eiriw6, Liriw6, Siriw6, Ziriw6, Gjriw6; +wire Njriw6, Ujriw6, Bkriw6, Ikriw6, Pkriw6, Wkriw6, Dlriw6, Klriw6, Rlriw6, Ylriw6; +wire Fmriw6, Mmriw6, Tmriw6, Anriw6, Hnriw6, Onriw6, Vnriw6, Coriw6, Joriw6, Qoriw6; +wire Xoriw6, Epriw6, Lpriw6, Spriw6, Zpriw6, Gqriw6, Nqriw6, Uqriw6, Brriw6, Irriw6; +wire Prriw6, Wrriw6, Dsriw6, Ksriw6, Rsriw6, Ysriw6, Ftriw6, Mtriw6, Ttriw6, Auriw6; +wire Huriw6, Ouriw6, Vuriw6, Cvriw6, Jvriw6, Qvriw6, Xvriw6, Ewriw6, Lwriw6, Swriw6; +wire Zwriw6, Gxriw6, Nxriw6, Uxriw6, Byriw6, Iyriw6, Pyriw6, Wyriw6, Dzriw6, Kzriw6; +wire Rzriw6, Yzriw6, F0siw6, M0siw6, T0siw6, A1siw6, H1siw6, O1siw6, V1siw6, C2siw6; +wire J2siw6, Q2siw6, X2siw6, E3siw6, L3siw6, S3siw6, Z3siw6, G4siw6, N4siw6, U4siw6; +wire B5siw6, I5siw6, P5siw6, W5siw6, D6siw6, K6siw6, R6siw6, Y6siw6, F7siw6, M7siw6; +wire T7siw6, A8siw6, H8siw6, O8siw6, V8siw6, C9siw6, J9siw6, Q9siw6, X9siw6, Easiw6; +wire Lasiw6, Sasiw6, Zasiw6, Gbsiw6, Nbsiw6, Ubsiw6, Bcsiw6, Icsiw6, Pcsiw6, Wcsiw6; +wire Ddsiw6, Kdsiw6, Rdsiw6, Ydsiw6, Fesiw6, Mesiw6, Tesiw6, Afsiw6, Hfsiw6, Ofsiw6; +wire Vfsiw6, Cgsiw6, Jgsiw6, Qgsiw6, Xgsiw6, Ehsiw6, Lhsiw6, Shsiw6, Zhsiw6, Gisiw6; +wire Nisiw6, Uisiw6, Bjsiw6, Ijsiw6, Pjsiw6, Wjsiw6, Dksiw6, Kksiw6, Rksiw6, Yksiw6; +wire Flsiw6, Mlsiw6, Tlsiw6, Amsiw6, Hmsiw6, Omsiw6, Vmsiw6, Cnsiw6, Jnsiw6, Qnsiw6; +wire Xnsiw6, Eosiw6, Losiw6, Sosiw6, Zosiw6, Gpsiw6, Npsiw6, Upsiw6, Bqsiw6, Iqsiw6; +wire Pqsiw6, Wqsiw6, Drsiw6, Krsiw6, Rrsiw6, Yrsiw6, Fssiw6, Mssiw6, Tssiw6, Atsiw6; +wire Htsiw6, Otsiw6, Vtsiw6, Cusiw6, Jusiw6, Qusiw6, Xusiw6, Evsiw6, Lvsiw6, Svsiw6; +wire Zvsiw6, Gwsiw6, Nwsiw6, Uwsiw6, Bxsiw6, Ixsiw6, Pxsiw6, Wxsiw6, Dysiw6, Kysiw6; +wire Rysiw6, Yysiw6, Fzsiw6, Mzsiw6, Tzsiw6, A0tiw6, H0tiw6, O0tiw6, V0tiw6, C1tiw6; +wire J1tiw6, Q1tiw6, X1tiw6, E2tiw6, L2tiw6, S2tiw6, Z2tiw6, G3tiw6, N3tiw6, U3tiw6; +wire B4tiw6, I4tiw6, P4tiw6, W4tiw6, D5tiw6, K5tiw6, R5tiw6, Y5tiw6, F6tiw6, M6tiw6; +wire T6tiw6, A7tiw6, H7tiw6, O7tiw6, V7tiw6, C8tiw6, J8tiw6, Q8tiw6, X8tiw6, E9tiw6; +wire L9tiw6, S9tiw6, Z9tiw6, Gatiw6, Natiw6, Uatiw6, Bbtiw6, Ibtiw6, Pbtiw6, Wbtiw6; +wire Dctiw6, Kctiw6, Rctiw6, Yctiw6, Fdtiw6, Mdtiw6, Tdtiw6, Aetiw6, Hetiw6, Oetiw6; +wire Vetiw6, Cftiw6, Jftiw6, Qftiw6, Xftiw6, Egtiw6, Lgtiw6, Sgtiw6, Zgtiw6, Ghtiw6; +wire Nhtiw6, Uhtiw6, Bitiw6, Iitiw6, Pitiw6, Witiw6, Djtiw6, Kjtiw6, Rjtiw6, Yjtiw6; +wire Fktiw6, Mktiw6, Tktiw6, Altiw6, Hltiw6, Oltiw6, Vltiw6, Cmtiw6, Jmtiw6, Qmtiw6; +wire Xmtiw6, Entiw6, Lntiw6, Sntiw6, Zntiw6, Gotiw6, Notiw6, Uotiw6, Bptiw6, Iptiw6; +wire Pptiw6, Wptiw6, Dqtiw6, Kqtiw6, Rqtiw6, Yqtiw6, Frtiw6, Mrtiw6, Trtiw6, Astiw6; +wire Hstiw6, Ostiw6, Vstiw6, Cttiw6, Jttiw6, Qttiw6, Xttiw6, Eutiw6, Lutiw6, Sutiw6; +wire Zutiw6, Gvtiw6, Nvtiw6, Uvtiw6, Bwtiw6, Iwtiw6, Pwtiw6, Wwtiw6, Dxtiw6, Kxtiw6; +wire Rxtiw6, Yxtiw6, Fytiw6, Mytiw6, Tytiw6, Aztiw6, Hztiw6, Oztiw6, Vztiw6, C0uiw6; +wire J0uiw6, Q0uiw6, X0uiw6, E1uiw6, L1uiw6, S1uiw6, Z1uiw6, G2uiw6, N2uiw6, U2uiw6; +wire B3uiw6, I3uiw6, P3uiw6, W3uiw6, D4uiw6, K4uiw6, R4uiw6, Y4uiw6, F5uiw6, M5uiw6; +wire T5uiw6, A6uiw6, H6uiw6, O6uiw6, V6uiw6, C7uiw6, J7uiw6, Q7uiw6, X7uiw6, E8uiw6; +wire L8uiw6, S8uiw6, Z8uiw6, G9uiw6, N9uiw6, U9uiw6, Bauiw6, Iauiw6, Pauiw6, Wauiw6; +wire Dbuiw6, Kbuiw6, Rbuiw6, Ybuiw6, Fcuiw6, Mcuiw6, Tcuiw6, Aduiw6, Hduiw6, Oduiw6; +wire Vduiw6, Ceuiw6, Jeuiw6, Qeuiw6, Xeuiw6, Efuiw6, Lfuiw6, Sfuiw6, Zfuiw6, Gguiw6; +wire Nguiw6, Uguiw6, Bhuiw6, Ihuiw6, Phuiw6, Whuiw6, Diuiw6, Kiuiw6, Riuiw6, Yiuiw6; +wire Fjuiw6, Mjuiw6, Tjuiw6, Akuiw6, Hkuiw6, Okuiw6, Vkuiw6, Cluiw6, Jluiw6, Qluiw6; +wire Xluiw6, Emuiw6, Lmuiw6, Smuiw6, Zmuiw6, Gnuiw6, Nnuiw6, Unuiw6, Bouiw6, Iouiw6; +wire Pouiw6, Wouiw6, Dpuiw6, Kpuiw6, Rpuiw6, Ypuiw6, Fquiw6, Mquiw6, Tquiw6, Aruiw6; +wire Hruiw6, Oruiw6, Vruiw6, Csuiw6, Jsuiw6, Qsuiw6, Xsuiw6, Etuiw6, Ltuiw6, Stuiw6; +wire Ztuiw6, Guuiw6, Nuuiw6, Uuuiw6, Bvuiw6, Ivuiw6, Pvuiw6, Wvuiw6, Dwuiw6, Kwuiw6; +wire Rwuiw6, Ywuiw6, Fxuiw6, Mxuiw6, Txuiw6, Ayuiw6, Hyuiw6, Oyuiw6, Vyuiw6, Czuiw6; +wire Jzuiw6, Qzuiw6, Xzuiw6, E0viw6, L0viw6, S0viw6, Z0viw6, G1viw6, N1viw6, U1viw6; +wire B2viw6, I2viw6, P2viw6, W2viw6, D3viw6, K3viw6, R3viw6, Y3viw6, F4viw6, M4viw6; +wire T4viw6, A5viw6, H5viw6, O5viw6, V5viw6, C6viw6, J6viw6, Q6viw6, X6viw6, E7viw6; +wire L7viw6, S7viw6, Z7viw6, G8viw6, N8viw6, U8viw6, B9viw6, I9viw6, P9viw6, W9viw6; +wire Daviw6, Kaviw6, Raviw6, Yaviw6, Fbviw6, Mbviw6, Tbviw6, Acviw6, Hcviw6, Ocviw6; +wire Vcviw6, Cdviw6, Jdviw6, Qdviw6, Xdviw6, Eeviw6, Leviw6, Seviw6, Zeviw6, Gfviw6; +wire Nfviw6, Ufviw6, Bgviw6, Igviw6, Pgviw6, Wgviw6, Dhviw6, Khviw6, Rhviw6, Yhviw6; +wire Fiviw6, Miviw6, Tiviw6, Ajviw6, Hjviw6, Ojviw6, Vjviw6, Ckviw6, Jkviw6, Qkviw6; +wire Xkviw6, Elviw6, Llviw6, Slviw6, Zlviw6, Gmviw6, Nmviw6, Umviw6, Bnviw6, Inviw6; +wire Pnviw6, Wnviw6, Doviw6, Koviw6, Roviw6, Yoviw6, Fpviw6, Mpviw6, Tpviw6, Aqviw6; +wire Hqviw6, Oqviw6, Vqviw6, Crviw6, Jrviw6, Qrviw6, Xrviw6, Esviw6, Lsviw6, Ssviw6; +wire Zsviw6, Gtviw6, Ntviw6, Utviw6, Buviw6, Iuviw6, Puviw6, Wuviw6, Dvviw6, Kvviw6; +wire Rvviw6, Yvviw6, Fwviw6, Mwviw6, Twviw6, Axviw6, Hxviw6, Oxviw6, Vxviw6, Cyviw6; +wire Jyviw6, Qyviw6, Xyviw6, Ezviw6, Lzviw6, Szviw6, Zzviw6, G0wiw6, N0wiw6, U0wiw6; +wire B1wiw6, I1wiw6, P1wiw6, W1wiw6, D2wiw6, K2wiw6, R2wiw6, Y2wiw6, F3wiw6, M3wiw6; +wire T3wiw6, A4wiw6, H4wiw6, O4wiw6, V4wiw6, C5wiw6, J5wiw6, Q5wiw6, X5wiw6, E6wiw6; +wire L6wiw6, S6wiw6, Z6wiw6, G7wiw6, N7wiw6, U7wiw6, B8wiw6, I8wiw6, P8wiw6, W8wiw6; +wire D9wiw6, K9wiw6, R9wiw6, Y9wiw6, Fawiw6, Mawiw6, Tawiw6, Abwiw6, Hbwiw6, Obwiw6; +wire Vbwiw6, Ccwiw6, Jcwiw6, Qcwiw6, Xcwiw6, Edwiw6, Ldwiw6, Sdwiw6, Zdwiw6, Gewiw6; +wire Newiw6, Uewiw6, Bfwiw6, Ifwiw6, Pfwiw6, Wfwiw6, Dgwiw6, Kgwiw6, Rgwiw6, Ygwiw6; +wire Fhwiw6, Mhwiw6, Thwiw6, Aiwiw6, Hiwiw6, Oiwiw6, Viwiw6, Cjwiw6, Jjwiw6, Qjwiw6; +wire Xjwiw6, Ekwiw6, Lkwiw6, Skwiw6, Zkwiw6, Glwiw6, Nlwiw6, Ulwiw6, Bmwiw6, Imwiw6; +wire Pmwiw6, Wmwiw6, Dnwiw6, Knwiw6, Rnwiw6, Ynwiw6, Fowiw6, Mowiw6, Towiw6, Apwiw6; +wire Hpwiw6, Opwiw6, Vpwiw6, Cqwiw6, Jqwiw6, Qqwiw6, Xqwiw6, Erwiw6, Lrwiw6, Srwiw6; +wire Zrwiw6, Gswiw6, Nswiw6, Uswiw6, Btwiw6, Itwiw6, Ptwiw6, Wtwiw6, Duwiw6, Kuwiw6; +wire Ruwiw6, Yuwiw6, Fvwiw6, Mvwiw6, Tvwiw6, Awwiw6, Hwwiw6, Owwiw6, Vwwiw6, Cxwiw6; +wire Jxwiw6, Qxwiw6, Xxwiw6, Eywiw6, Lywiw6, Sywiw6, Zywiw6, Gzwiw6, Nzwiw6, Uzwiw6; +wire B0xiw6, I0xiw6, P0xiw6, W0xiw6, D1xiw6, K1xiw6, R1xiw6, Y1xiw6, F2xiw6, M2xiw6; +wire T2xiw6, A3xiw6, H3xiw6, O3xiw6, V3xiw6, C4xiw6, J4xiw6, Q4xiw6, X4xiw6, E5xiw6; +wire L5xiw6, S5xiw6, Z5xiw6, G6xiw6, N6xiw6, U6xiw6, B7xiw6, I7xiw6, P7xiw6, W7xiw6; +wire D8xiw6, K8xiw6, R8xiw6, Y8xiw6, F9xiw6, M9xiw6, T9xiw6, Aaxiw6, Haxiw6, Oaxiw6; +wire Vaxiw6, Cbxiw6, Jbxiw6, Qbxiw6, Xbxiw6, Ecxiw6, Lcxiw6, Scxiw6, Zcxiw6, Gdxiw6; +wire Ndxiw6, Udxiw6, Bexiw6, Iexiw6, Pexiw6, Wexiw6, Dfxiw6, Kfxiw6, Rfxiw6, Yfxiw6; +wire Fgxiw6, Mgxiw6, Tgxiw6, Ahxiw6, Hhxiw6, Ohxiw6, Vhxiw6, Cixiw6, Jixiw6, Qixiw6; +wire Xixiw6, Ejxiw6, Ljxiw6, Sjxiw6, Zjxiw6, Gkxiw6, Nkxiw6, Ukxiw6, Blxiw6, Ilxiw6; +wire Plxiw6, Wlxiw6, Dmxiw6, Kmxiw6, Rmxiw6, Ymxiw6, Fnxiw6, Mnxiw6, Tnxiw6, Aoxiw6; +wire Hoxiw6, Ooxiw6, Voxiw6, Cpxiw6, Jpxiw6, Qpxiw6, Xpxiw6, Eqxiw6, Lqxiw6, Sqxiw6; +wire Zqxiw6, Grxiw6, Nrxiw6, Urxiw6, Bsxiw6, Isxiw6, Psxiw6, Wsxiw6, Dtxiw6, Ktxiw6; +wire Rtxiw6, Ytxiw6, Fuxiw6, Muxiw6, Tuxiw6, Avxiw6, Hvxiw6, Ovxiw6, Vvxiw6, Cwxiw6; +wire Jwxiw6, Qwxiw6, Xwxiw6, Exxiw6, Lxxiw6, Sxxiw6, Zxxiw6, Gyxiw6, Nyxiw6, Uyxiw6; +wire Bzxiw6, Izxiw6, Pzxiw6, Wzxiw6, D0yiw6, K0yiw6, R0yiw6, Y0yiw6, F1yiw6, M1yiw6; +wire T1yiw6, A2yiw6, H2yiw6, O2yiw6, V2yiw6, C3yiw6, J3yiw6, Q3yiw6, X3yiw6, E4yiw6; +wire L4yiw6, S4yiw6, Z4yiw6, G5yiw6, N5yiw6, U5yiw6, B6yiw6, I6yiw6, P6yiw6, W6yiw6; +wire D7yiw6, K7yiw6, R7yiw6, Y7yiw6, F8yiw6, M8yiw6, T8yiw6, A9yiw6, H9yiw6, O9yiw6; +wire V9yiw6, Cayiw6, Jayiw6, Qayiw6, Xayiw6, Ebyiw6, Lbyiw6, Sbyiw6, Zbyiw6, Gcyiw6; +wire Ncyiw6, Ucyiw6, Bdyiw6, Idyiw6, Pdyiw6, Wdyiw6, Deyiw6, Keyiw6, Reyiw6, Yeyiw6; +wire Ffyiw6, Mfyiw6, Tfyiw6, Agyiw6, Hgyiw6, Ogyiw6, Vgyiw6, Chyiw6, Jhyiw6, Qhyiw6; +wire Xhyiw6, Eiyiw6, Liyiw6, Siyiw6, Ziyiw6, Gjyiw6, Njyiw6, Ujyiw6, Bkyiw6, Ikyiw6; +wire Pkyiw6, Wkyiw6, Dlyiw6, Klyiw6, Rlyiw6, Ylyiw6, Fmyiw6, Mmyiw6, Tmyiw6, Anyiw6; +wire Hnyiw6, Onyiw6, Vnyiw6, Coyiw6, Joyiw6, Qoyiw6, Xoyiw6, Epyiw6, Lpyiw6, Spyiw6; +wire Zpyiw6, Gqyiw6, Nqyiw6, Uqyiw6, Bryiw6, Iryiw6, Pryiw6, Wryiw6, Dsyiw6, Ksyiw6; +wire Rsyiw6, Ysyiw6, Ftyiw6, Mtyiw6, Ttyiw6, Auyiw6, Huyiw6, Ouyiw6, Vuyiw6, Cvyiw6; +wire Jvyiw6, Qvyiw6, Xvyiw6, Ewyiw6, Lwyiw6, Swyiw6, Zwyiw6, Gxyiw6, Nxyiw6, Uxyiw6; +wire Byyiw6, Iyyiw6, Pyyiw6, Wyyiw6, Dzyiw6, Kzyiw6, Rzyiw6, Yzyiw6, F0ziw6, M0ziw6; +wire T0ziw6, A1ziw6, H1ziw6, O1ziw6, V1ziw6, C2ziw6, J2ziw6, Q2ziw6, X2ziw6, E3ziw6; +wire L3ziw6, S3ziw6, Z3ziw6, G4ziw6, N4ziw6, U4ziw6, B5ziw6, I5ziw6, P5ziw6, W5ziw6; +wire D6ziw6, K6ziw6, R6ziw6, Y6ziw6, F7ziw6, M7ziw6, T7ziw6, A8ziw6, H8ziw6, O8ziw6; +wire V8ziw6, C9ziw6, J9ziw6, Q9ziw6, X9ziw6, Eaziw6, Laziw6, Saziw6, Zaziw6, Gbziw6; +wire Nbziw6, Ubziw6, Bcziw6, Icziw6, Pcziw6, Wcziw6, Ddziw6, Kdziw6, Rdziw6, Ydziw6; +wire Feziw6, Meziw6, Teziw6, Afziw6, Hfziw6, Ofziw6, Vfziw6, Cgziw6, Jgziw6, Qgziw6; +wire Xgziw6, Ehziw6, Lhziw6, Shziw6, Zhziw6, Giziw6, Niziw6, Uiziw6, Bjziw6, Ijziw6; +wire Pjziw6, Wjziw6, Dkziw6, Kkziw6, Rkziw6, Ykziw6, Flziw6, Mlziw6, Tlziw6, Amziw6; +wire Hmziw6, Omziw6, Vmziw6, Cnziw6, Jnziw6, Qnziw6, Xnziw6, Eoziw6, Loziw6, Soziw6; +wire Zoziw6, Gpziw6, Npziw6, Upziw6, Bqziw6, Iqziw6, Pqziw6, Wqziw6, Drziw6, Krziw6; +wire Rrziw6, Yrziw6, Fsziw6, Msziw6, Tsziw6, Atziw6, Htziw6, Otziw6, Vtziw6, Cuziw6; +wire Juziw6, Quziw6, Xuziw6, Evziw6, Lvziw6, Svziw6, Zvziw6, Gwziw6, Nwziw6, Uwziw6; +wire Bxziw6, Ixziw6, Pxziw6, Wxziw6, Dyziw6, Kyziw6, Ryziw6, Yyziw6, Fzziw6, Mzziw6; +wire Tzziw6, A00jw6, H00jw6, O00jw6, V00jw6, C10jw6, J10jw6, Q10jw6, X10jw6, E20jw6; +wire L20jw6, S20jw6, Z20jw6, G30jw6, N30jw6, U30jw6, B40jw6, I40jw6, P40jw6, W40jw6; +wire D50jw6, K50jw6, R50jw6, Y50jw6, F60jw6, M60jw6, T60jw6, A70jw6, H70jw6, O70jw6; +wire V70jw6, C80jw6, J80jw6, Q80jw6, X80jw6, E90jw6, L90jw6, S90jw6, Z90jw6, Ga0jw6; +wire Na0jw6, Ua0jw6, Bb0jw6, Ib0jw6, Pb0jw6, Wb0jw6, Dc0jw6, Kc0jw6, Rc0jw6, Yc0jw6; +wire Fd0jw6, Md0jw6, Td0jw6, Ae0jw6, He0jw6, Oe0jw6, Ve0jw6, Cf0jw6, Jf0jw6, Qf0jw6; +wire Xf0jw6, Eg0jw6, Lg0jw6, Sg0jw6, Zg0jw6, Gh0jw6, Nh0jw6, Uh0jw6, Bi0jw6, Ii0jw6; +wire Pi0jw6, Wi0jw6, Dj0jw6, Kj0jw6, Rj0jw6, Yj0jw6, Fk0jw6, Mk0jw6, Tk0jw6, Al0jw6; +wire Hl0jw6, Ol0jw6, Vl0jw6, Cm0jw6, Jm0jw6, Qm0jw6, Xm0jw6, En0jw6, Ln0jw6, Sn0jw6; +wire Zn0jw6, Go0jw6, No0jw6, Uo0jw6, Bp0jw6, Ip0jw6, Pp0jw6, Wp0jw6, Dq0jw6, Kq0jw6; +wire Rq0jw6, Yq0jw6, Fr0jw6, Mr0jw6, Tr0jw6, As0jw6, Hs0jw6, Os0jw6, Vs0jw6, Ct0jw6; +wire Jt0jw6, Qt0jw6, Xt0jw6, Eu0jw6, Lu0jw6, Su0jw6, Zu0jw6, Gv0jw6, Nv0jw6, Uv0jw6; +wire Bw0jw6, Iw0jw6, Pw0jw6, Ww0jw6, Dx0jw6, Kx0jw6, Rx0jw6, Yx0jw6, Fy0jw6, My0jw6; +wire Ty0jw6, Az0jw6, Hz0jw6, Oz0jw6, Vz0jw6, C01jw6, J01jw6, Q01jw6, X01jw6, E11jw6; +wire L11jw6, S11jw6, Z11jw6, G21jw6, N21jw6, U21jw6, B31jw6, I31jw6, P31jw6, W31jw6; +wire D41jw6, K41jw6, R41jw6, Y41jw6, F51jw6, M51jw6, T51jw6, A61jw6, H61jw6, O61jw6; +wire V61jw6, C71jw6, J71jw6, Q71jw6, X71jw6, E81jw6, L81jw6, S81jw6, Z81jw6, G91jw6; +wire N91jw6, U91jw6, Ba1jw6, Ia1jw6, Pa1jw6, Wa1jw6, Db1jw6, Kb1jw6, Rb1jw6, Yb1jw6; +wire Fc1jw6, Mc1jw6, Tc1jw6, Ad1jw6, Hd1jw6, Od1jw6, Vd1jw6, Ce1jw6, Je1jw6, Qe1jw6; +wire Xe1jw6, Ef1jw6, Lf1jw6, Sf1jw6, Zf1jw6, Gg1jw6, Ng1jw6, Ug1jw6, Bh1jw6, Ih1jw6; +wire Ph1jw6, Wh1jw6, Di1jw6, Ki1jw6, Ri1jw6, Yi1jw6, Fj1jw6, Mj1jw6, Tj1jw6, Ak1jw6; +wire Hk1jw6, Ok1jw6, Vk1jw6, Cl1jw6, Jl1jw6, Ql1jw6, Xl1jw6, Em1jw6, Lm1jw6, Sm1jw6; +wire Zm1jw6, Gn1jw6, Nn1jw6, Un1jw6, Bo1jw6, Io1jw6, Po1jw6, Wo1jw6, Dp1jw6, Kp1jw6; +wire Rp1jw6, Yp1jw6, Fq1jw6, Mq1jw6, Tq1jw6, Ar1jw6, Hr1jw6, Or1jw6, Vr1jw6, Cs1jw6; +wire Js1jw6, Qs1jw6, Xs1jw6, Et1jw6, Lt1jw6, St1jw6, Zt1jw6, Gu1jw6, Nu1jw6, Uu1jw6; +wire Bv1jw6, Iv1jw6, Pv1jw6, Wv1jw6, Dw1jw6, Kw1jw6, Rw1jw6, Yw1jw6, Fx1jw6, Mx1jw6; +wire Tx1jw6, Ay1jw6, Hy1jw6, Oy1jw6, Vy1jw6, Cz1jw6, Jz1jw6, Qz1jw6, Xz1jw6, E02jw6; +wire L02jw6, S02jw6, Z02jw6, G12jw6, N12jw6, U12jw6, B22jw6, I22jw6, P22jw6, W22jw6; +wire D32jw6, K32jw6, R32jw6, Y32jw6, F42jw6, M42jw6, T42jw6, A52jw6, H52jw6, O52jw6; +wire V52jw6, C62jw6, J62jw6, Q62jw6, X62jw6, E72jw6, L72jw6, S72jw6, Z72jw6, G82jw6; +wire N82jw6, U82jw6, B92jw6, I92jw6, P92jw6, W92jw6, Da2jw6, Ka2jw6, Ra2jw6, Ya2jw6; +wire Fb2jw6, Mb2jw6, Tb2jw6, Ac2jw6, Hc2jw6, Oc2jw6, Vc2jw6, Cd2jw6, Jd2jw6, Qd2jw6; +wire Xd2jw6, Ee2jw6, Le2jw6, Se2jw6, Ze2jw6, Gf2jw6, Nf2jw6, Uf2jw6, Bg2jw6, Ig2jw6; +wire Pg2jw6, Wg2jw6, Dh2jw6, Kh2jw6, Rh2jw6, Yh2jw6, Fi2jw6, Mi2jw6, Ti2jw6, Aj2jw6; +wire Hj2jw6, Oj2jw6, Vj2jw6, Ck2jw6, Jk2jw6, Qk2jw6, Xk2jw6, El2jw6, Ll2jw6, Sl2jw6; +wire Zl2jw6, Gm2jw6, Nm2jw6, Um2jw6, Bn2jw6, In2jw6, Pn2jw6, Wn2jw6, Do2jw6, Ko2jw6; +wire Ro2jw6, Yo2jw6, Fp2jw6, Mp2jw6, Tp2jw6, Aq2jw6, Hq2jw6, Oq2jw6, Vq2jw6, Cr2jw6; +wire Jr2jw6, Qr2jw6, Xr2jw6, Es2jw6, Ls2jw6, Ss2jw6, Zs2jw6, Gt2jw6, Nt2jw6, Ut2jw6; +wire Bu2jw6, Iu2jw6, Pu2jw6, Wu2jw6, Dv2jw6, Kv2jw6, Rv2jw6, Yv2jw6, Fw2jw6, Mw2jw6; +wire Tw2jw6, Ax2jw6, Hx2jw6, Ox2jw6, Vx2jw6, Cy2jw6, Jy2jw6, Qy2jw6, Xy2jw6, Ez2jw6; +wire Lz2jw6, Sz2jw6, Zz2jw6, G03jw6, N03jw6, U03jw6, B13jw6, I13jw6, P13jw6, W13jw6; +wire D23jw6, K23jw6, R23jw6, Y23jw6, F33jw6, M33jw6, T33jw6, A43jw6, H43jw6, O43jw6; +wire V43jw6, C53jw6, J53jw6, Q53jw6, X53jw6, E63jw6, L63jw6, S63jw6, Z63jw6, G73jw6; +wire N73jw6, U73jw6, B83jw6, I83jw6, P83jw6, W83jw6, D93jw6, K93jw6, R93jw6, Y93jw6; +wire Fa3jw6, Ma3jw6, Ta3jw6, Ab3jw6, Hb3jw6, Ob3jw6, Vb3jw6, Cc3jw6, Jc3jw6, Qc3jw6; +wire Xc3jw6, Ed3jw6, Ld3jw6, Sd3jw6, Zd3jw6, Ge3jw6, Ne3jw6, Ue3jw6, Bf3jw6, If3jw6; +wire Pf3jw6, Wf3jw6, Dg3jw6, Kg3jw6, Rg3jw6, Yg3jw6, Fh3jw6, Mh3jw6, Th3jw6, Ai3jw6; +wire Hi3jw6, Oi3jw6, Vi3jw6, Cj3jw6, Jj3jw6, Qj3jw6, Xj3jw6, Ek3jw6, Lk3jw6, Sk3jw6; +wire Zk3jw6, Gl3jw6, Nl3jw6, Ul3jw6, Bm3jw6, Im3jw6, Pm3jw6, Wm3jw6, Dn3jw6, Kn3jw6; +wire Rn3jw6, Yn3jw6, Fo3jw6, Mo3jw6, To3jw6, Ap3jw6, Hp3jw6, Op3jw6, Vp3jw6, Cq3jw6; +wire Jq3jw6, Qq3jw6, Xq3jw6, Er3jw6, Lr3jw6, Sr3jw6, Zr3jw6, Gs3jw6, Ns3jw6, Us3jw6; +wire Bt3jw6, It3jw6, Pt3jw6, Wt3jw6, Du3jw6, Ku3jw6, Ru3jw6, Yu3jw6, Fv3jw6, Mv3jw6; +wire Tv3jw6, Aw3jw6, Hw3jw6, Ow3jw6, Vw3jw6, Cx3jw6, Jx3jw6, Qx3jw6, Xx3jw6, Ey3jw6; +wire Ly3jw6, Sy3jw6, Zy3jw6, Gz3jw6, Nz3jw6, Uz3jw6, B04jw6, I04jw6, P04jw6, W04jw6; +wire D14jw6, K14jw6, R14jw6, Y14jw6, F24jw6, M24jw6, T24jw6, A34jw6, H34jw6, O34jw6; +wire V34jw6, C44jw6, J44jw6, Q44jw6, X44jw6, E54jw6, L54jw6, S54jw6, Z54jw6, G64jw6; +wire N64jw6, U64jw6, B74jw6, I74jw6, P74jw6, W74jw6, D84jw6, K84jw6, R84jw6, Y84jw6; +wire F94jw6, M94jw6, T94jw6, Aa4jw6, Ha4jw6, Oa4jw6, Va4jw6, Cb4jw6, Jb4jw6, Qb4jw6; +wire Xb4jw6, Ec4jw6, Lc4jw6, Sc4jw6, Zc4jw6, Gd4jw6, Nd4jw6, Ud4jw6, Be4jw6, Ie4jw6; +wire Pe4jw6, We4jw6, Df4jw6, Kf4jw6, Rf4jw6, Yf4jw6, Fg4jw6, Mg4jw6, Tg4jw6, Ah4jw6; +wire Hh4jw6, Oh4jw6, Vh4jw6, Ci4jw6, Ji4jw6, Qi4jw6, Xi4jw6, Ej4jw6, Lj4jw6, Sj4jw6; +wire Zj4jw6, Gk4jw6, Nk4jw6, Uk4jw6, Bl4jw6, Il4jw6, Pl4jw6, Wl4jw6, Dm4jw6, Km4jw6; +wire Rm4jw6, Ym4jw6, Fn4jw6, Mn4jw6, Tn4jw6, Ao4jw6, Ho4jw6, Oo4jw6, Vo4jw6, Cp4jw6; +wire Jp4jw6, Qp4jw6, Xp4jw6, Eq4jw6, Lq4jw6, Sq4jw6, Zq4jw6, Gr4jw6, Nr4jw6, Ur4jw6; +wire Bs4jw6, Is4jw6, Ps4jw6, Ws4jw6, Dt4jw6, Kt4jw6, Rt4jw6, Yt4jw6, Fu4jw6, Mu4jw6; +wire Tu4jw6, Av4jw6, Hv4jw6, Ov4jw6, Vv4jw6, Cw4jw6, Jw4jw6, Qw4jw6, Xw4jw6, Ex4jw6; +wire Lx4jw6, Sx4jw6, Zx4jw6, Gy4jw6, Ny4jw6, Uy4jw6, Bz4jw6, Iz4jw6, Pz4jw6, Wz4jw6; +wire D05jw6, K05jw6, R05jw6, Y05jw6, F15jw6, M15jw6, T15jw6, A25jw6, H25jw6, O25jw6; +wire V25jw6, C35jw6, J35jw6, Q35jw6, X35jw6, E45jw6, L45jw6, S45jw6, Z45jw6, G55jw6; +wire N55jw6, U55jw6, B65jw6, I65jw6, P65jw6, W65jw6, D75jw6, K75jw6, R75jw6, Y75jw6; +wire F85jw6, M85jw6, T85jw6, A95jw6, H95jw6, O95jw6, V95jw6, Ca5jw6, Ja5jw6, Qa5jw6; +wire Xa5jw6, Eb5jw6, Lb5jw6, Sb5jw6, Zb5jw6, Gc5jw6, Nc5jw6, Uc5jw6, Bd5jw6, Id5jw6; +wire Pd5jw6, Wd5jw6, De5jw6, Ke5jw6, Re5jw6, Ye5jw6, Ff5jw6, Mf5jw6, Tf5jw6, Ag5jw6; +wire Hg5jw6, Og5jw6, Vg5jw6, Ch5jw6, Jh5jw6, Qh5jw6, Xh5jw6, Ei5jw6, Li5jw6, Si5jw6; +wire Zi5jw6, Gj5jw6, Nj5jw6, Uj5jw6, Bk5jw6, Ik5jw6, Pk5jw6, Wk5jw6, Dl5jw6, Kl5jw6; +wire Rl5jw6, Yl5jw6, Fm5jw6, Mm5jw6, Tm5jw6, An5jw6, Hn5jw6, On5jw6, Vn5jw6, Co5jw6; +wire Jo5jw6, Qo5jw6, Xo5jw6, Ep5jw6, Lp5jw6, Sp5jw6, Zp5jw6, Gq5jw6, Nq5jw6, Uq5jw6; +wire Br5jw6, Ir5jw6, Pr5jw6, Wr5jw6, Ds5jw6, Ks5jw6, Rs5jw6, Ys5jw6, Ft5jw6, Mt5jw6; +wire Tt5jw6, Au5jw6, Hu5jw6, Ou5jw6, Vu5jw6, Cv5jw6, Jv5jw6, Qv5jw6, Xv5jw6, Ew5jw6; +wire Lw5jw6, Sw5jw6, Zw5jw6, Gx5jw6, Nx5jw6, Ux5jw6, By5jw6, Iy5jw6, Py5jw6, Wy5jw6; +wire Dz5jw6, Kz5jw6, Rz5jw6, Yz5jw6, F06jw6, M06jw6, T06jw6, A16jw6, H16jw6, O16jw6; +wire V16jw6, C26jw6, J26jw6, Q26jw6, X26jw6, E36jw6, L36jw6, S36jw6, Z36jw6, G46jw6; +wire N46jw6, U46jw6, B56jw6, I56jw6, P56jw6, W56jw6, D66jw6, K66jw6, R66jw6, Y66jw6; +wire F76jw6, M76jw6, T76jw6, A86jw6, H86jw6, O86jw6, V86jw6, C96jw6, J96jw6, Q96jw6; +wire X96jw6, Ea6jw6, La6jw6, Sa6jw6, Za6jw6, Gb6jw6, Nb6jw6, Ub6jw6, Bc6jw6, Ic6jw6; +wire Pc6jw6, Wc6jw6, Dd6jw6, Kd6jw6, Rd6jw6, Yd6jw6, Fe6jw6, Me6jw6, Te6jw6, Af6jw6; +wire Hf6jw6, Of6jw6, Vf6jw6, Cg6jw6, Jg6jw6, Qg6jw6, Xg6jw6, Eh6jw6, Lh6jw6, Sh6jw6; +wire Zh6jw6, Gi6jw6, Ni6jw6, Ui6jw6, Bj6jw6, Ij6jw6, Pj6jw6, Wj6jw6, Dk6jw6, Kk6jw6; +wire Rk6jw6, Yk6jw6, Fl6jw6, Ml6jw6, Tl6jw6, Am6jw6, Hm6jw6, Om6jw6, Vm6jw6, Cn6jw6; +wire Jn6jw6, Qn6jw6, Xn6jw6, Eo6jw6, Lo6jw6, So6jw6, Zo6jw6, Gp6jw6, Np6jw6, Up6jw6; +wire Bq6jw6, Iq6jw6, Pq6jw6, Wq6jw6, Dr6jw6, Kr6jw6, Rr6jw6, Yr6jw6, Fs6jw6, Ms6jw6; +wire Ts6jw6, At6jw6, Ht6jw6, Ot6jw6, Vt6jw6, Cu6jw6, Ju6jw6, Qu6jw6, Xu6jw6, Ev6jw6; +wire Lv6jw6, Sv6jw6, Zv6jw6, Gw6jw6, Nw6jw6, Uw6jw6, Bx6jw6, Ix6jw6, Px6jw6, Wx6jw6; +wire Dy6jw6, Ky6jw6, Ry6jw6, Yy6jw6, Fz6jw6, Mz6jw6, Tz6jw6, A07jw6, H07jw6, O07jw6; +wire V07jw6, C17jw6, J17jw6, Q17jw6, X17jw6, E27jw6, L27jw6, S27jw6, Z27jw6, G37jw6; +wire N37jw6, U37jw6, B47jw6, I47jw6, P47jw6, W47jw6, D57jw6, K57jw6, R57jw6, Y57jw6; +wire F67jw6, M67jw6, T67jw6, A77jw6, H77jw6, O77jw6, V77jw6, C87jw6, J87jw6, Q87jw6; +wire X87jw6, E97jw6, L97jw6, S97jw6, Z97jw6, Ga7jw6, Na7jw6, Ua7jw6, Bb7jw6, Ib7jw6; +wire Pb7jw6, Wb7jw6, Dc7jw6, Kc7jw6, Rc7jw6, Yc7jw6, Fd7jw6, Md7jw6, Td7jw6, Ae7jw6; +wire He7jw6, Oe7jw6, Ve7jw6, Cf7jw6, Jf7jw6, Qf7jw6, Xf7jw6, Eg7jw6, Lg7jw6, Sg7jw6; +wire Zg7jw6, Gh7jw6, Nh7jw6, Uh7jw6, Bi7jw6, Ii7jw6, Pi7jw6, Wi7jw6, Dj7jw6, Kj7jw6; +wire Rj7jw6, Yj7jw6, Fk7jw6, Mk7jw6, Tk7jw6, Al7jw6, Hl7jw6, Ol7jw6, Vl7jw6, Cm7jw6; +wire Jm7jw6, Qm7jw6, Xm7jw6, En7jw6, Ln7jw6, Sn7jw6, Zn7jw6, Go7jw6, No7jw6, Uo7jw6; +wire Bp7jw6, Ip7jw6, Pp7jw6, Wp7jw6, Dq7jw6, Kq7jw6, Rq7jw6, Yq7jw6, Fr7jw6, Mr7jw6; +wire Tr7jw6, As7jw6, Hs7jw6, Os7jw6, Vs7jw6, Ct7jw6, Jt7jw6, Qt7jw6, Xt7jw6, Eu7jw6; +wire Lu7jw6, Su7jw6, Zu7jw6, Gv7jw6, Nv7jw6, Uv7jw6, Bw7jw6, Iw7jw6, Pw7jw6, Ww7jw6; +wire Dx7jw6, Kx7jw6, Rx7jw6, Yx7jw6, Fy7jw6, My7jw6, Ty7jw6, Az7jw6, Hz7jw6, Oz7jw6; +wire Vz7jw6, C08jw6, J08jw6, Q08jw6, X08jw6, E18jw6, L18jw6, S18jw6, Z18jw6, G28jw6; +wire N28jw6, U28jw6, B38jw6, I38jw6, P38jw6, W38jw6, D48jw6, K48jw6, R48jw6, Y48jw6; +wire F58jw6, M58jw6, T58jw6, A68jw6, H68jw6, O68jw6, V68jw6, C78jw6, J78jw6, Q78jw6; +wire X78jw6, E88jw6, L88jw6, S88jw6, Z88jw6, G98jw6, N98jw6, U98jw6, Ba8jw6, Ia8jw6; +wire Pa8jw6, Wa8jw6, Db8jw6, Kb8jw6, Rb8jw6, Yb8jw6, Fc8jw6, Mc8jw6, Tc8jw6, Ad8jw6; +wire Hd8jw6, Od8jw6, Vd8jw6, Ce8jw6, Je8jw6, Qe8jw6, Xe8jw6, Ef8jw6, Lf8jw6, Sf8jw6; +wire Zf8jw6, Gg8jw6, Ng8jw6, Ug8jw6, Bh8jw6, Ih8jw6, Ph8jw6, Wh8jw6, Di8jw6, Ki8jw6; +wire Ri8jw6, Yi8jw6, Fj8jw6, Mj8jw6, Tj8jw6, Ak8jw6, Hk8jw6, Ok8jw6, Vk8jw6, Cl8jw6; +wire Jl8jw6, Ql8jw6, Xl8jw6, Em8jw6, Lm8jw6, Sm8jw6, Zm8jw6, Gn8jw6, Nn8jw6, Un8jw6; +wire Bo8jw6, Io8jw6, Po8jw6, Wo8jw6, Dp8jw6, Kp8jw6, Rp8jw6, Yp8jw6, Fq8jw6, Mq8jw6; +wire Tq8jw6, Ar8jw6, Hr8jw6, Or8jw6, Vr8jw6, Cs8jw6, Js8jw6, Qs8jw6, Xs8jw6, Et8jw6; +wire Lt8jw6, St8jw6, Zt8jw6, Gu8jw6, Nu8jw6, Uu8jw6, Bv8jw6, Iv8jw6, Pv8jw6, Wv8jw6; +wire Dw8jw6, Kw8jw6, Rw8jw6, Yw8jw6, Fx8jw6, Mx8jw6, Tx8jw6, Ay8jw6, Hy8jw6, Oy8jw6; +wire Vy8jw6, Cz8jw6, Jz8jw6, Qz8jw6, Xz8jw6, E09jw6, L09jw6, S09jw6, Z09jw6, G19jw6; +wire N19jw6, U19jw6, B29jw6, I29jw6, P29jw6, W29jw6, D39jw6, K39jw6, R39jw6, Y39jw6; +wire F49jw6, M49jw6, T49jw6, A59jw6, H59jw6, O59jw6, V59jw6, C69jw6, J69jw6, Q69jw6; +wire X69jw6, E79jw6, L79jw6, S79jw6, Z79jw6, G89jw6, N89jw6, U89jw6, B99jw6, I99jw6; +wire P99jw6, W99jw6, Da9jw6, Ka9jw6, Ra9jw6, Ya9jw6, Fb9jw6, Mb9jw6, Tb9jw6, Ac9jw6; +wire Hc9jw6, Oc9jw6, Vc9jw6, Cd9jw6, Jd9jw6, Qd9jw6, Xd9jw6, Ee9jw6, Le9jw6, Se9jw6; +wire Ze9jw6, Gf9jw6, Nf9jw6, Uf9jw6, Bg9jw6, Ig9jw6, Pg9jw6, Wg9jw6, Dh9jw6, Kh9jw6; +wire Rh9jw6, Yh9jw6, Fi9jw6, Mi9jw6, Ti9jw6, Aj9jw6, Hj9jw6, Oj9jw6, Vj9jw6, Ck9jw6; +wire Jk9jw6, Qk9jw6, Xk9jw6, El9jw6, Ll9jw6, Sl9jw6, Zl9jw6, Gm9jw6, Nm9jw6, Um9jw6; +wire Bn9jw6, In9jw6, Pn9jw6, Wn9jw6, Do9jw6, Ko9jw6, Ro9jw6, Yo9jw6, Fp9jw6, Mp9jw6; +wire Tp9jw6, Aq9jw6, Hq9jw6, Oq9jw6, Vq9jw6, Cr9jw6, Jr9jw6, Qr9jw6, Xr9jw6, Es9jw6; +wire Ls9jw6, Ss9jw6, Zs9jw6, Gt9jw6, Nt9jw6, Ut9jw6, Bu9jw6, Iu9jw6, Pu9jw6, Wu9jw6; +wire Dv9jw6, Kv9jw6, Rv9jw6, Yv9jw6, Fw9jw6, Mw9jw6, Tw9jw6, Ax9jw6, Hx9jw6, Ox9jw6; +wire Vx9jw6, Cy9jw6, Jy9jw6, Qy9jw6, Xy9jw6, Ez9jw6, Lz9jw6, Sz9jw6, Zz9jw6, G0ajw6; +wire N0ajw6, U0ajw6, B1ajw6, I1ajw6, P1ajw6, W1ajw6, D2ajw6, K2ajw6, R2ajw6, Y2ajw6; +wire F3ajw6, M3ajw6, T3ajw6, A4ajw6, H4ajw6, O4ajw6, V4ajw6, C5ajw6, J5ajw6, Q5ajw6; +wire X5ajw6, E6ajw6, L6ajw6, S6ajw6, Z6ajw6, G7ajw6, N7ajw6, U7ajw6, B8ajw6, I8ajw6; +wire P8ajw6, W8ajw6, D9ajw6, K9ajw6, R9ajw6, Y9ajw6, Faajw6, Maajw6, Taajw6, Abajw6; +wire Hbajw6, Obajw6, Vbajw6, Ccajw6, Jcajw6, Qcajw6, Xcajw6, Edajw6, Ldajw6, Sdajw6; +wire Zdajw6, Geajw6, Neajw6, Ueajw6, Bfajw6, Ifajw6, Pfajw6, Wfajw6, Dgajw6, Kgajw6; +wire Rgajw6, Ygajw6, Fhajw6, Mhajw6, Thajw6, Aiajw6, Hiajw6, Oiajw6, Viajw6, Cjajw6; +wire Jjajw6, Qjajw6, Xjajw6, Ekajw6, Lkajw6, Skajw6, Zkajw6, Glajw6, Nlajw6, Ulajw6; +wire Bmajw6, Imajw6, Pmajw6, Wmajw6, Dnajw6, Knajw6, Rnajw6, Ynajw6, Foajw6, Moajw6; +wire Toajw6, Apajw6, Hpajw6, Opajw6, Vpajw6, Cqajw6, Jqajw6, Qqajw6, Xqajw6, Erajw6; +wire Lrajw6, Srajw6, Zrajw6, Gsajw6, Nsajw6, Usajw6, Btajw6, Itajw6, Ptajw6, Wtajw6; +wire Duajw6, Kuajw6, Ruajw6, Yuajw6, Fvajw6, Mvajw6, Tvajw6, Awajw6, Hwajw6, Owajw6; +wire Vwajw6, Cxajw6, Jxajw6, Qxajw6, Xxajw6, Eyajw6, Lyajw6, Syajw6, Zyajw6, Gzajw6; +wire Nzajw6, Uzajw6, B0bjw6, I0bjw6, P0bjw6, W0bjw6, D1bjw6, K1bjw6, R1bjw6, Y1bjw6; +wire F2bjw6, M2bjw6, T2bjw6, A3bjw6, H3bjw6, O3bjw6, V3bjw6, C4bjw6, J4bjw6, Q4bjw6; +wire X4bjw6, E5bjw6, L5bjw6, S5bjw6, Z5bjw6, G6bjw6, N6bjw6, U6bjw6, B7bjw6, I7bjw6; +wire P7bjw6, W7bjw6, D8bjw6, K8bjw6, R8bjw6, Y8bjw6, F9bjw6, M9bjw6, T9bjw6, Aabjw6; +wire Habjw6, Oabjw6, Vabjw6, Cbbjw6, Jbbjw6, Qbbjw6, Xbbjw6, Ecbjw6, Lcbjw6, Scbjw6; +wire Zcbjw6, Gdbjw6, Ndbjw6, Udbjw6, Bebjw6, Iebjw6, Pebjw6, Webjw6, Dfbjw6, Kfbjw6; +wire Rfbjw6, Yfbjw6, Fgbjw6, Mgbjw6, Tgbjw6, Ahbjw6, Hhbjw6, Ohbjw6, Vhbjw6, Cibjw6; +wire Jibjw6, Qibjw6, Xibjw6, Ejbjw6, Ljbjw6, Sjbjw6, Zjbjw6, Gkbjw6, Nkbjw6, Ukbjw6; +wire Blbjw6, Ilbjw6, Plbjw6, Wlbjw6, Dmbjw6, Kmbjw6, Rmbjw6, Ymbjw6, Fnbjw6, Mnbjw6; +wire Tnbjw6, Aobjw6, Hobjw6, Oobjw6, Vobjw6, Cpbjw6, Jpbjw6, Qpbjw6, Xpbjw6, Eqbjw6; +wire Lqbjw6, Sqbjw6, Zqbjw6, Grbjw6, Nrbjw6, Urbjw6, Bsbjw6, Isbjw6, Psbjw6, Wsbjw6; +wire Dtbjw6, Ktbjw6, Rtbjw6, Ytbjw6, Fubjw6, Mubjw6, Tubjw6, Avbjw6, Hvbjw6, Ovbjw6; +wire Vvbjw6, Cwbjw6, Jwbjw6, Qwbjw6, Xwbjw6, Exbjw6, Lxbjw6, Sxbjw6, Zxbjw6, Gybjw6; +wire Nybjw6, Uybjw6, Bzbjw6, Izbjw6, Pzbjw6, Wzbjw6, D0cjw6, K0cjw6, R0cjw6, Y0cjw6; +wire F1cjw6, M1cjw6, T1cjw6, A2cjw6, H2cjw6, O2cjw6, V2cjw6, C3cjw6, J3cjw6, Q3cjw6; +wire X3cjw6, E4cjw6, L4cjw6, S4cjw6, Z4cjw6, G5cjw6, N5cjw6, U5cjw6, B6cjw6, I6cjw6; +wire P6cjw6, W6cjw6, D7cjw6, K7cjw6, R7cjw6, Y7cjw6, F8cjw6, M8cjw6, T8cjw6, A9cjw6; +wire H9cjw6, O9cjw6, V9cjw6, Cacjw6, Jacjw6, Qacjw6, Xacjw6, Ebcjw6, Lbcjw6, Sbcjw6; +wire Zbcjw6, Gccjw6, Nccjw6, Uccjw6, Bdcjw6, Idcjw6, Pdcjw6, Wdcjw6, Decjw6, Kecjw6; +wire Recjw6, Yecjw6, Ffcjw6, Mfcjw6, Tfcjw6, Agcjw6, Hgcjw6, Ogcjw6, Vgcjw6, Chcjw6; +wire Jhcjw6, Qhcjw6, Xhcjw6, Eicjw6, Licjw6, Sicjw6, Zicjw6, Gjcjw6, Njcjw6, Ujcjw6; +wire Bkcjw6, Ikcjw6, Pkcjw6, Wkcjw6, Dlcjw6, Klcjw6, Rlcjw6, Ylcjw6, Fmcjw6, Mmcjw6; +wire Tmcjw6, Ikg6x6, Pkg6x6, Wkg6x6, Dlg6x6, Klg6x6, Rlg6x6, Ylg6x6, Fmg6x6, Mmg6x6; +wire Tmg6x6, Ang6x6, Hng6x6, Ong6x6, Vng6x6, Cog6x6, Jog6x6, Qog6x6, Xog6x6, Epg6x6; +wire Lpg6x6, Spg6x6, Zpg6x6, Gqg6x6, Nqg6x6, Uqg6x6, Brg6x6, Irg6x6, Prg6x6, Wrg6x6; +wire Dsg6x6, Ksg6x6, Rsg6x6, Ysg6x6, Ftg6x6, Mtg6x6, Ttg6x6, Aug6x6, Hug6x6, Oug6x6; +wire Vug6x6, Cvg6x6, Jvg6x6, Qvg6x6, Xvg6x6, Ewg6x6, Lwg6x6, Swg6x6, Zwg6x6, Gxg6x6; +wire Nxg6x6, Uxg6x6, Byg6x6, Iyg6x6, Pyg6x6, Wyg6x6, Dzg6x6, Kzg6x6, Rzg6x6, Yzg6x6; +wire F0h6x6, M0h6x6, T0h6x6, A1h6x6, H1h6x6, O1h6x6, V1h6x6, C2h6x6, J2h6x6, Q2h6x6; +wire X2h6x6, E3h6x6, L3h6x6, S3h6x6, Z3h6x6, G4h6x6, N4h6x6, U4h6x6, B5h6x6, I5h6x6; +wire P5h6x6, W5h6x6, D6h6x6, K6h6x6, R6h6x6, Y6h6x6, F7h6x6, M7h6x6, T7h6x6, A8h6x6; +wire H8h6x6, O8h6x6, V8h6x6, C9h6x6, J9h6x6, Q9h6x6, X9h6x6, Eah6x6, Lah6x6, Sah6x6; +wire Zah6x6, Gbh6x6, Nbh6x6, Ubh6x6, Bch6x6, Ich6x6, Pch6x6, Wch6x6, Ddh6x6, Kdh6x6; +wire Rdh6x6, Ydh6x6, Feh6x6, Meh6x6, Teh6x6, Afh6x6, Hfh6x6, Ofh6x6, Vfh6x6, Cgh6x6; +wire Jgh6x6, Qgh6x6, Xgh6x6, Ehh6x6, Lhh6x6, Shh6x6, Zhh6x6, Gih6x6, Nih6x6, Uih6x6; +wire Bjh6x6, Ijh6x6, Pjh6x6, Wjh6x6, Dkh6x6, Kkh6x6, Rkh6x6, Ykh6x6, Flh6x6, Mlh6x6; +wire Tlh6x6, Amh6x6, Hmh6x6, Omh6x6, Vmh6x6, Cnh6x6, Jnh6x6, Qnh6x6, Xnh6x6, Eoh6x6; +wire Loh6x6, Soh6x6, Zoh6x6, Gph6x6, Nph6x6, Uph6x6, Bqh6x6, Iqh6x6, Pqh6x6, Wqh6x6; +wire Drh6x6, Krh6x6, Rrh6x6, Yrh6x6, Fsh6x6, Msh6x6, Tsh6x6, Ath6x6, Hth6x6, Oth6x6; +wire Vth6x6, Cuh6x6, Juh6x6, Quh6x6, Xuh6x6, Evh6x6, Lvh6x6, Svh6x6, Zvh6x6, Gwh6x6; +wire Nwh6x6, Uwh6x6, Bxh6x6, Ixh6x6, Pxh6x6, Wxh6x6, Dyh6x6, Kyh6x6, Ryh6x6, Yyh6x6; +wire Fzh6x6, Mzh6x6, Tzh6x6, A0i6x6, H0i6x6, O0i6x6, V0i6x6, C1i6x6, J1i6x6, Q1i6x6; +wire X1i6x6, E2i6x6, L2i6x6, S2i6x6, Z2i6x6, G3i6x6, N3i6x6, U3i6x6, B4i6x6, I4i6x6; +wire P4i6x6, W4i6x6, D5i6x6, K5i6x6, R5i6x6, Y5i6x6, F6i6x6, M6i6x6, T6i6x6, A7i6x6; +wire H7i6x6, O7i6x6, V7i6x6, C8i6x6, J8i6x6, Q8i6x6, X8i6x6, E9i6x6, L9i6x6, S9i6x6; +wire Z9i6x6, Gai6x6, Nai6x6, Uai6x6, Bbi6x6, Ibi6x6, Pbi6x6, Wbi6x6, Dci6x6, Kci6x6; +wire Rci6x6, Yci6x6, Fdi6x6, Mdi6x6, Tdi6x6, Aei6x6, Hei6x6, Oei6x6, Vei6x6, Cfi6x6; +wire Jfi6x6, Qfi6x6, Xfi6x6, Egi6x6, Lgi6x6, Sgi6x6, Zgi6x6, Ghi6x6, Nhi6x6, Uhi6x6; +wire Bii6x6, Iii6x6, Pii6x6, Wii6x6, Dji6x6, Kji6x6, Rji6x6, Yji6x6, Fki6x6, Mki6x6; +wire Tki6x6, Ali6x6, Hli6x6, Oli6x6, Vli6x6, Cmi6x6, Jmi6x6, Qmi6x6, Xmi6x6, Eni6x6; +wire Lni6x6, Sni6x6, Zni6x6, Goi6x6, Noi6x6, Uoi6x6, Bpi6x6, Ipi6x6, Ppi6x6, Wpi6x6; +wire Dqi6x6, Kqi6x6, Rqi6x6, Yqi6x6, Fri6x6, Mri6x6, Tri6x6, Asi6x6, Hsi6x6, Osi6x6; +wire Vsi6x6, Cti6x6, Jti6x6, Qti6x6, Xti6x6, Eui6x6, Lui6x6, Sui6x6, Zui6x6, Gvi6x6; +wire Nvi6x6, Uvi6x6, Bwi6x6, Iwi6x6, Pwi6x6, Wwi6x6, Dxi6x6, Kxi6x6, Rxi6x6, Yxi6x6; +wire Fyi6x6, Myi6x6, Tyi6x6, Azi6x6, Hzi6x6, Ozi6x6, Vzi6x6, C0j6x6, J0j6x6, Q0j6x6; +wire X0j6x6, E1j6x6, L1j6x6, S1j6x6, Z1j6x6, G2j6x6, N2j6x6, U2j6x6, B3j6x6, I3j6x6; +wire P3j6x6, W3j6x6, D4j6x6, K4j6x6, R4j6x6, Y4j6x6, F5j6x6, M5j6x6, T5j6x6, A6j6x6; +wire H6j6x6, O6j6x6, V6j6x6, C7j6x6, J7j6x6, Q7j6x6, X7j6x6, E8j6x6, L8j6x6, S8j6x6; +wire Z8j6x6, G9j6x6, N9j6x6, U9j6x6, Baj6x6, Iaj6x6, Paj6x6, Waj6x6, Dbj6x6, Kbj6x6; +wire Rbj6x6, Ybj6x6, Fcj6x6, Mcj6x6, Tcj6x6, Adj6x6, Hdj6x6, Odj6x6, Vdj6x6, Cej6x6; +wire Jej6x6, Qej6x6, Xej6x6, Efj6x6, Lfj6x6, Sfj6x6, Zfj6x6, Ggj6x6, Ngj6x6, Ugj6x6; +wire Bhj6x6, Ihj6x6, Phj6x6, Whj6x6, Dij6x6, Kij6x6, Rij6x6, Yij6x6, Fjj6x6, Mjj6x6; +wire Tjj6x6, Akj6x6, Hkj6x6, Okj6x6, Vkj6x6, Clj6x6, Jlj6x6, Qlj6x6, Xlj6x6, Emj6x6; +wire Lmj6x6, Smj6x6, Zmj6x6, Gnj6x6, Nnj6x6, Unj6x6, Boj6x6, Ioj6x6, Poj6x6, Woj6x6; +wire Dpj6x6, Kpj6x6, Rpj6x6, Ypj6x6, Fqj6x6, Mqj6x6, Tqj6x6, Arj6x6, Hrj6x6, Orj6x6; +wire Vrj6x6, Csj6x6, Jsj6x6, Qsj6x6, Xsj6x6, Etj6x6, Ltj6x6, Stj6x6, Ztj6x6, Guj6x6; +wire Nuj6x6, Uuj6x6, Bvj6x6, Ivj6x6, Pvj6x6, Wvj6x6, Dwj6x6, Kwj6x6, Rwj6x6, Ywj6x6; +wire Fxj6x6, Mxj6x6, Txj6x6, Ayj6x6, Hyj6x6, Oyj6x6, Vyj6x6, Czj6x6, Jzj6x6, Qzj6x6; +wire Xzj6x6, E0k6x6, L0k6x6, S0k6x6, Z0k6x6, G1k6x6, N1k6x6, U1k6x6, B2k6x6, I2k6x6; +wire P2k6x6, W2k6x6, D3k6x6, K3k6x6, R3k6x6, Y3k6x6, F4k6x6, M4k6x6, T4k6x6, A5k6x6; +wire H5k6x6, O5k6x6, V5k6x6, C6k6x6, J6k6x6, Q6k6x6, X6k6x6, E7k6x6, L7k6x6, S7k6x6; +wire Z7k6x6, G8k6x6, N8k6x6, U8k6x6, B9k6x6, I9k6x6, P9k6x6, W9k6x6, Dak6x6, Kak6x6; +wire Rak6x6, Yak6x6, Fbk6x6, Mbk6x6, Tbk6x6, Ack6x6, Hck6x6, Ock6x6, Vck6x6, Cdk6x6; +wire Jdk6x6, Qdk6x6, Xdk6x6, Eek6x6, Lek6x6, Sek6x6, Zek6x6, Gfk6x6, Nfk6x6, Ufk6x6; +wire Bgk6x6, Igk6x6, Pgk6x6, Wgk6x6, Dhk6x6, Khk6x6, Rhk6x6, Yhk6x6, Fik6x6, Mik6x6; +wire Tik6x6, Ajk6x6, Hjk6x6, Ojk6x6, Vjk6x6, Ckk6x6, Jkk6x6, Qkk6x6, Xkk6x6, Elk6x6; +wire Llk6x6, Slk6x6, Zlk6x6, Gmk6x6, Nmk6x6, Umk6x6, Bnk6x6, Ink6x6, Pnk6x6, Wnk6x6; +wire Dok6x6, Kok6x6, Rok6x6, Yok6x6, Fpk6x6, Mpk6x6, Tpk6x6, Aqk6x6, Hqk6x6, Oqk6x6; +wire Vqk6x6, Crk6x6, Jrk6x6, Qrk6x6, Xrk6x6, Esk6x6, Lsk6x6, Ssk6x6, Zsk6x6, Gtk6x6; +wire Ntk6x6, Utk6x6, Buk6x6, Iuk6x6, Puk6x6, Wuk6x6, Dvk6x6, Kvk6x6, Rvk6x6, Yvk6x6; +wire Fwk6x6, Mwk6x6, Twk6x6, Axk6x6, Hxk6x6, Oxk6x6, Vxk6x6, Cyk6x6, Jyk6x6, Qyk6x6; +wire Xyk6x6, Ezk6x6, Lzk6x6, Szk6x6, Zzk6x6, G0l6x6, N0l6x6, U0l6x6, B1l6x6, I1l6x6; +wire P1l6x6, W1l6x6, D2l6x6, K2l6x6, R2l6x6, Y2l6x6, F3l6x6, M3l6x6, T3l6x6, A4l6x6; +wire H4l6x6, O4l6x6, V4l6x6, C5l6x6, J5l6x6, Q5l6x6, X5l6x6, E6l6x6, L6l6x6, S6l6x6; +wire Z6l6x6, G7l6x6, N7l6x6, U7l6x6, B8l6x6, I8l6x6, P8l6x6, W8l6x6, D9l6x6, K9l6x6; +wire R9l6x6, Y9l6x6, Fal6x6, Mal6x6, Tal6x6, Abl6x6, Hbl6x6, Obl6x6, Vbl6x6, Ccl6x6; +wire Jcl6x6, Qcl6x6, Xcl6x6, Edl6x6, Ldl6x6, Sdl6x6, Zdl6x6, Gel6x6, Nel6x6, Uel6x6; +wire Bfl6x6, Ifl6x6, Pfl6x6, Wfl6x6, Dgl6x6, Kgl6x6, Rgl6x6, Ygl6x6, Fhl6x6, Mhl6x6; +wire Thl6x6, Ail6x6, Hil6x6, Oil6x6, Vil6x6, Cjl6x6, Jjl6x6, Qjl6x6, Xjl6x6, Ekl6x6; +wire Lkl6x6, Skl6x6, Zkl6x6, Gll6x6, Nll6x6, Ull6x6, Bml6x6, Iml6x6, Pml6x6, Wml6x6; +wire Dnl6x6, Knl6x6, Rnl6x6, Ynl6x6, Fol6x6, Mol6x6, Tol6x6, Apl6x6, Hpl6x6, Opl6x6; +wire Vpl6x6, Cql6x6, Jql6x6, Qql6x6, Xql6x6, Erl6x6, Lrl6x6, Srl6x6, Zrl6x6, Gsl6x6; +wire Nsl6x6, Usl6x6, Btl6x6, Itl6x6, Ptl6x6, Wtl6x6, Dul6x6, Kul6x6, Rul6x6, Yul6x6; +wire Fvl6x6, Mvl6x6, Tvl6x6, Awl6x6, Hwl6x6, Owl6x6, Vwl6x6, Cxl6x6, Jxl6x6, Qxl6x6; +wire Xxl6x6, Eyl6x6, Lyl6x6, Syl6x6, Zyl6x6, Gzl6x6, Nzl6x6, Uzl6x6, B0m6x6, I0m6x6; +wire P0m6x6, W0m6x6, D1m6x6, K1m6x6, R1m6x6, Y1m6x6, F2m6x6, M2m6x6, T2m6x6, A3m6x6; +wire H3m6x6, O3m6x6, V3m6x6, C4m6x6, J4m6x6, Q4m6x6, X4m6x6, E5m6x6, L5m6x6, S5m6x6; +wire Z5m6x6, G6m6x6, N6m6x6, U6m6x6, B7m6x6, I7m6x6, P7m6x6, W7m6x6, D8m6x6, K8m6x6; +wire R8m6x6, Y8m6x6, F9m6x6, M9m6x6, T9m6x6, Aam6x6, Ham6x6, Oam6x6, Vam6x6, Cbm6x6; +wire Jbm6x6, Qbm6x6, Xbm6x6, Ecm6x6, Lcm6x6, Scm6x6, Zcm6x6, Gdm6x6, Ndm6x6, Udm6x6; +wire Bem6x6, Iem6x6, Pem6x6, Wem6x6, Dfm6x6, Kfm6x6, Rfm6x6, Yfm6x6, Fgm6x6, Mgm6x6; +wire Tgm6x6, Ahm6x6, Hhm6x6, Ohm6x6, Vhm6x6, Cim6x6, Jim6x6, Qim6x6, Xim6x6, Ejm6x6; +wire Ljm6x6, Sjm6x6, Zjm6x6, Gkm6x6, Nkm6x6, Ukm6x6, Blm6x6, Ilm6x6, Plm6x6, Wlm6x6; +wire Dmm6x6, Kmm6x6, Rmm6x6, Ymm6x6, Fnm6x6, Mnm6x6, Tnm6x6, Aom6x6, Hom6x6, Oom6x6; +wire Vom6x6, Cpm6x6, Jpm6x6, Qpm6x6, Xpm6x6, Eqm6x6, Lqm6x6, Sqm6x6, Zqm6x6, Grm6x6; +wire Nrm6x6, Urm6x6, Bsm6x6, Ism6x6, Psm6x6, Wsm6x6, Dtm6x6, Ktm6x6, Rtm6x6, Ytm6x6; +wire Fum6x6, Mum6x6, Tum6x6, Avm6x6, Hvm6x6, Ovm6x6, Vvm6x6, Cwm6x6, Jwm6x6, Qwm6x6; +wire Xwm6x6, Exm6x6, Lxm6x6, Sxm6x6, Zxm6x6, Gym6x6, Nym6x6, Uym6x6, Bzm6x6, Izm6x6; +wire Pzm6x6, Wzm6x6, D0n6x6, K0n6x6, R0n6x6, Y0n6x6, F1n6x6, M1n6x6, T1n6x6, A2n6x6; +wire H2n6x6, O2n6x6, V2n6x6, C3n6x6, J3n6x6, Q3n6x6, X3n6x6, E4n6x6, L4n6x6, S4n6x6; +wire Z4n6x6, G5n6x6, N5n6x6, U5n6x6, B6n6x6, I6n6x6, P6n6x6, W6n6x6, D7n6x6, K7n6x6; +wire R7n6x6, Y7n6x6, F8n6x6, M8n6x6, T8n6x6, A9n6x6, H9n6x6, O9n6x6, V9n6x6, Can6x6; +wire Jan6x6, Qan6x6, Xan6x6, Ebn6x6, Lbn6x6, Sbn6x6, Zbn6x6, Gcn6x6, Ncn6x6, Ucn6x6; +wire Bdn6x6, Idn6x6, Pdn6x6, Wdn6x6, Den6x6, Ken6x6, Ren6x6, Yen6x6, Ffn6x6, Mfn6x6; +wire Tfn6x6, Agn6x6, Hgn6x6, Ogn6x6, Vgn6x6, Chn6x6, Jhn6x6, Qhn6x6, Xhn6x6, Ein6x6; +wire Lin6x6, Sin6x6, Zin6x6, Gjn6x6, Njn6x6, Ujn6x6, Bkn6x6, Ikn6x6, Pkn6x6, Wkn6x6; +wire Dln6x6, Kln6x6, Rln6x6, Yln6x6, Fmn6x6, Mmn6x6, Tmn6x6, Ann6x6, Hnn6x6, Onn6x6; +wire Vnn6x6, Con6x6, Jon6x6, Qon6x6, Xon6x6, Epn6x6, Lpn6x6, Spn6x6, Zpn6x6, Gqn6x6; +wire Nqn6x6, Uqn6x6, Brn6x6, Irn6x6, Prn6x6, Wrn6x6, Dsn6x6, Ksn6x6, Rsn6x6, Ysn6x6; +wire Ftn6x6, Mtn6x6, Ttn6x6, Aun6x6, Hun6x6, Oun6x6, Vun6x6, Cvn6x6, Jvn6x6, Qvn6x6; +wire Xvn6x6, Ewn6x6, Lwn6x6, Swn6x6, Zwn6x6, Gxn6x6, Nxn6x6, Uxn6x6, Byn6x6, Iyn6x6; +wire Pyn6x6, Wyn6x6, Dzn6x6, Kzn6x6, Rzn6x6, Yzn6x6, F0o6x6, M0o6x6, T0o6x6, A1o6x6; +wire H1o6x6, O1o6x6, V1o6x6, C2o6x6, J2o6x6, Q2o6x6, X2o6x6, E3o6x6, L3o6x6, S3o6x6; +wire Z3o6x6, G4o6x6, N4o6x6, U4o6x6, B5o6x6, I5o6x6, P5o6x6, W5o6x6, D6o6x6, K6o6x6; +wire R6o6x6, Y6o6x6, F7o6x6, M7o6x6, T7o6x6, A8o6x6, H8o6x6, O8o6x6, V8o6x6, C9o6x6; +wire J9o6x6, Q9o6x6, X9o6x6, Eao6x6, Lao6x6, Sao6x6, Zao6x6, Gbo6x6, Nbo6x6, Ubo6x6; +wire Bco6x6, Ico6x6, Pco6x6, Wco6x6, Ddo6x6, Kdo6x6, Rdo6x6, Ydo6x6, Feo6x6, Meo6x6; +wire Teo6x6, Afo6x6, Hfo6x6, Ofo6x6, Vfo6x6, Cgo6x6, Jgo6x6, Qgo6x6, Xgo6x6, Eho6x6; +wire Lho6x6, Sho6x6, Zho6x6, Gio6x6, Nio6x6, Uio6x6, Bjo6x6, Ijo6x6, Pjo6x6, Wjo6x6; +wire Dko6x6, Kko6x6, Rko6x6, Yko6x6, Flo6x6, Mlo6x6, Tlo6x6, Amo6x6, Hmo6x6, Omo6x6; +wire Vmo6x6, Cno6x6, Jno6x6, Qno6x6, Xno6x6, Eoo6x6, Loo6x6, Soo6x6, Zoo6x6, Gpo6x6; +wire Npo6x6, Upo6x6, Bqo6x6, Iqo6x6, Pqo6x6, Wqo6x6, Dro6x6, Kro6x6, Rro6x6, Yro6x6; +wire Fso6x6, Mso6x6, Tso6x6, Ato6x6, Hto6x6, Oto6x6, Vto6x6, Cuo6x6, Juo6x6, Quo6x6; +wire Xuo6x6, Evo6x6, Lvo6x6, Svo6x6, Zvo6x6, Gwo6x6, Nwo6x6, Uwo6x6, Bxo6x6, Ixo6x6; +wire Pxo6x6, Wxo6x6, Dyo6x6, Kyo6x6, Ryo6x6, Yyo6x6, Fzo6x6, Mzo6x6, Tzo6x6, A0p6x6; +wire H0p6x6, O0p6x6, V0p6x6, C1p6x6, J1p6x6, Q1p6x6, X1p6x6, E2p6x6, L2p6x6, S2p6x6; +wire Z2p6x6, G3p6x6, N3p6x6, U3p6x6, B4p6x6, I4p6x6, P4p6x6, W4p6x6, D5p6x6, K5p6x6; +wire R5p6x6, Y5p6x6, F6p6x6, M6p6x6, T6p6x6, A7p6x6, H7p6x6, O7p6x6, V7p6x6, C8p6x6; +wire J8p6x6, Q8p6x6, X8p6x6, E9p6x6, L9p6x6, S9p6x6, Z9p6x6, Gap6x6, Nap6x6, Uap6x6; +wire Bbp6x6, Ibp6x6, Pbp6x6, Wbp6x6, Dcp6x6, Kcp6x6, Rcp6x6, Ycp6x6, Fdp6x6, Mdp6x6; +wire Tdp6x6, Aep6x6, Hep6x6, Oep6x6, Vep6x6, Cfp6x6, Jfp6x6, Qfp6x6, Xfp6x6, Egp6x6; +wire Lgp6x6, Sgp6x6, Zgp6x6, Ghp6x6, Nhp6x6, Uhp6x6, Bip6x6, Iip6x6, Pip6x6, Wip6x6; +wire Djp6x6, Kjp6x6, Rjp6x6, Yjp6x6, Fkp6x6, Mkp6x6, Tkp6x6, Alp6x6, Hlp6x6, Olp6x6; +wire Vlp6x6, Cmp6x6, Jmp6x6, Qmp6x6, Xmp6x6, Enp6x6, Lnp6x6, Snp6x6, Znp6x6, Gop6x6; +wire Nop6x6, Uop6x6, Bpp6x6, Ipp6x6, Ppp6x6, Wpp6x6, Dqp6x6, Kqp6x6, Rqp6x6, Yqp6x6; +wire Frp6x6, Mrp6x6, Trp6x6, Asp6x6, Hsp6x6, Osp6x6, Vsp6x6, Ctp6x6, Jtp6x6, Qtp6x6; +wire Xtp6x6, Eup6x6, Lup6x6, Sup6x6, Zup6x6, Gvp6x6, Nvp6x6, Uvp6x6, Bwp6x6, Iwp6x6; +wire Pwp6x6, Wwp6x6, Dxp6x6, Kxp6x6, Rxp6x6, Yxp6x6, Fyp6x6, Myp6x6, Typ6x6, Azp6x6; +wire Hzp6x6, Ozp6x6, Vzp6x6, C0q6x6, J0q6x6, Q0q6x6, X0q6x6, E1q6x6, L1q6x6, S1q6x6; +wire Z1q6x6, G2q6x6, N2q6x6, U2q6x6, B3q6x6, I3q6x6, P3q6x6, W3q6x6, D4q6x6, K4q6x6; +wire R4q6x6, Y4q6x6, F5q6x6, M5q6x6, T5q6x6, A6q6x6, H6q6x6, O6q6x6, V6q6x6, C7q6x6; +wire J7q6x6, Q7q6x6, X7q6x6, E8q6x6, L8q6x6, S8q6x6, Z8q6x6, G9q6x6, N9q6x6, U9q6x6; +wire Baq6x6, Iaq6x6, Paq6x6, Waq6x6, Dbq6x6, Kbq6x6, Rbq6x6, Ybq6x6, Fcq6x6, Mcq6x6; +wire Tcq6x6, Adq6x6, Hdq6x6, Odq6x6, Vdq6x6, Ceq6x6, Jeq6x6, Qeq6x6, Xeq6x6, Efq6x6; +wire Lfq6x6, Sfq6x6, Zfq6x6, Ggq6x6, Ngq6x6, Ugq6x6, Bhq6x6, Ihq6x6, Phq6x6, Whq6x6; +wire Diq6x6, Kiq6x6, Riq6x6, Yiq6x6, Fjq6x6, Mjq6x6, Tjq6x6, Akq6x6, Hkq6x6, Okq6x6; +wire Vkq6x6, Clq6x6, Jlq6x6, Qlq6x6, Xlq6x6, Emq6x6, Lmq6x6, Smq6x6, Zmq6x6, Gnq6x6; +wire Nnq6x6, Unq6x6, Boq6x6, Ioq6x6, Poq6x6, Woq6x6, Dpq6x6, Kpq6x6, Rpq6x6, Ypq6x6; +wire Fqq6x6, Mqq6x6, Tqq6x6, Arq6x6, Hrq6x6, Orq6x6, Vrq6x6, Csq6x6, Jsq6x6, Qsq6x6; +wire Xsq6x6, Etq6x6, Ltq6x6, Stq6x6, Ztq6x6, Guq6x6, Nuq6x6, Uuq6x6, Bvq6x6, Ivq6x6; +wire Pvq6x6, Wvq6x6, Dwq6x6, Kwq6x6, Rwq6x6, Ywq6x6, Fxq6x6, Mxq6x6, Txq6x6, Ayq6x6; +wire Hyq6x6, Oyq6x6, Vyq6x6, Czq6x6, Jzq6x6, Qzq6x6, Xzq6x6, E0r6x6, L0r6x6, S0r6x6; +wire Z0r6x6, G1r6x6, N1r6x6, U1r6x6, B2r6x6, I2r6x6, P2r6x6, W2r6x6, D3r6x6, K3r6x6; +wire R3r6x6, Y3r6x6, F4r6x6, M4r6x6, T4r6x6, A5r6x6, H5r6x6, O5r6x6, V5r6x6, C6r6x6; +wire J6r6x6, Q6r6x6, X6r6x6, E7r6x6, L7r6x6, S7r6x6, Z7r6x6, G8r6x6, N8r6x6, U8r6x6; +wire B9r6x6, I9r6x6, P9r6x6, W9r6x6, Dar6x6, Kar6x6, Rar6x6, Yar6x6, Fbr6x6, Mbr6x6; +wire Tbr6x6, Acr6x6, Hcr6x6, Ocr6x6, Vcr6x6, Cdr6x6, Jdr6x6, Qdr6x6, Xdr6x6, Eer6x6; +wire Ler6x6, Ser6x6, Zer6x6, Gfr6x6, Nfr6x6, Ufr6x6, Bgr6x6, Igr6x6, Pgr6x6, Wgr6x6; +wire Dhr6x6, Khr6x6, Rhr6x6, Yhr6x6, Fir6x6, Mir6x6, Tir6x6, Ajr6x6, Hjr6x6, Ojr6x6; +wire Vjr6x6, Ckr6x6, Jkr6x6, Qkr6x6, Xkr6x6, Elr6x6, Llr6x6, Slr6x6, Zlr6x6, Gmr6x6; +wire Nmr6x6, Umr6x6, Bnr6x6, Inr6x6, Pnr6x6, Wnr6x6, Dor6x6, Kor6x6, Ror6x6, Yor6x6; +wire Fpr6x6, Mpr6x6, Tpr6x6, Aqr6x6, Hqr6x6, Oqr6x6, Vqr6x6, Crr6x6, Jrr6x6, Qrr6x6; +wire Xrr6x6, Esr6x6, Lsr6x6, Ssr6x6, Zsr6x6, Gtr6x6, Ntr6x6, Utr6x6, Bur6x6, Iur6x6; +wire Pur6x6, Wur6x6, Dvr6x6, Kvr6x6, Rvr6x6, Yvr6x6, Fwr6x6, Mwr6x6, Twr6x6, Axr6x6; +wire Hxr6x6, Oxr6x6, Vxr6x6, Cyr6x6, Jyr6x6, Qyr6x6, Xyr6x6, Ezr6x6, Lzr6x6, Szr6x6; +wire Zzr6x6, G0s6x6, N0s6x6, U0s6x6, B1s6x6, I1s6x6, P1s6x6, W1s6x6, D2s6x6, K2s6x6; +wire R2s6x6, Y2s6x6, F3s6x6, M3s6x6, T3s6x6, A4s6x6, H4s6x6, O4s6x6, V4s6x6, C5s6x6; +wire J5s6x6, Q5s6x6, X5s6x6, E6s6x6, L6s6x6, S6s6x6, Z6s6x6, G7s6x6, N7s6x6, U7s6x6; +wire B8s6x6, I8s6x6, P8s6x6, W8s6x6, D9s6x6, K9s6x6, R9s6x6, Y9s6x6, Fas6x6, Mas6x6; +wire Tas6x6, Abs6x6, Hbs6x6, Obs6x6, Vbs6x6, Ccs6x6, Jcs6x6, Qcs6x6, Xcs6x6, Eds6x6; +wire Lds6x6, Sds6x6, Zds6x6, Ges6x6, Nes6x6, Ues6x6, Bfs6x6, Ifs6x6, Pfs6x6, Wfs6x6; +wire Dgs6x6, Kgs6x6, Rgs6x6, Ygs6x6, Fhs6x6, Mhs6x6, Ths6x6, Ais6x6, His6x6, Ois6x6; +wire Vis6x6, Cjs6x6, Jjs6x6, Qjs6x6, Xjs6x6, Eks6x6, Lks6x6, Sks6x6, Zks6x6, Gls6x6; +wire Nls6x6, Uls6x6, Bms6x6, Ims6x6, Pms6x6, Wms6x6, Dns6x6, Kns6x6, Rns6x6, Yns6x6; +wire Fos6x6, Mos6x6, Tos6x6, Aps6x6, Hps6x6, Ops6x6, Vps6x6, Cqs6x6, Jqs6x6, Qqs6x6; +wire Xqs6x6, Ers6x6, Lrs6x6, Srs6x6, Zrs6x6, Gss6x6, Nss6x6, Uss6x6, Bts6x6, Its6x6; +wire Pts6x6, Wts6x6, Dus6x6, Kus6x6, Rus6x6, Yus6x6, Fvs6x6, Mvs6x6, Tvs6x6, Aws6x6; +wire Hws6x6, Ows6x6, Vws6x6, Cxs6x6, Jxs6x6, Qxs6x6, Xxs6x6, Eys6x6, Lys6x6, Sys6x6; +wire Zys6x6, Gzs6x6, Nzs6x6, Uzs6x6, B0t6x6, I0t6x6, P0t6x6, W0t6x6, D1t6x6, K1t6x6; +wire R1t6x6, Y1t6x6, F2t6x6, M2t6x6, T2t6x6, A3t6x6, H3t6x6, O3t6x6, V3t6x6, C4t6x6; +wire J4t6x6, Q4t6x6, X4t6x6, E5t6x6, L5t6x6, S5t6x6, Z5t6x6, G6t6x6, N6t6x6, U6t6x6; +wire B7t6x6, I7t6x6, P7t6x6, W7t6x6, D8t6x6, K8t6x6, R8t6x6, Y8t6x6, F9t6x6, M9t6x6; +wire T9t6x6, Aat6x6, Hat6x6, Oat6x6, Vat6x6, Cbt6x6, Jbt6x6, Qbt6x6, Xbt6x6, Ect6x6; +wire Lct6x6, Sct6x6, Zct6x6, Gdt6x6, Ndt6x6, Udt6x6, Bet6x6, Iet6x6, Pet6x6, Wet6x6; +wire Dft6x6, Kft6x6, Rft6x6, Yft6x6, Fgt6x6, Mgt6x6, Tgt6x6, Aht6x6, Hht6x6, Oht6x6; +wire Vht6x6, Cit6x6, Jit6x6, Qit6x6, Xit6x6, Ejt6x6, Ljt6x6, Sjt6x6, Zjt6x6, Gkt6x6; +wire Nkt6x6, Ukt6x6, Blt6x6, Ilt6x6, Plt6x6, Wlt6x6, Dmt6x6, Kmt6x6, Rmt6x6, Ymt6x6; +wire Fnt6x6, Mnt6x6, Tnt6x6, Aot6x6, Hot6x6, Oot6x6, Vot6x6, Cpt6x6, Jpt6x6, Qpt6x6; +wire Xpt6x6, Eqt6x6, Lqt6x6, Sqt6x6, Zqt6x6, Grt6x6, Nrt6x6, Urt6x6, Bst6x6, Ist6x6; +wire Pst6x6, Wst6x6, Dtt6x6, Ktt6x6, Rtt6x6, Ytt6x6, Fut6x6, Mut6x6, Tut6x6, Avt6x6; +wire Hvt6x6, Ovt6x6, Vvt6x6, Cwt6x6, Jwt6x6, Qwt6x6, Xwt6x6, Ext6x6, Lxt6x6, Sxt6x6; +wire Zxt6x6, Gyt6x6, Nyt6x6, Uyt6x6, Bzt6x6, Izt6x6, Pzt6x6, Wzt6x6, D0u6x6, K0u6x6; +wire R0u6x6, Y0u6x6, F1u6x6, M1u6x6, T1u6x6, A2u6x6, H2u6x6, O2u6x6, V2u6x6, C3u6x6; +wire J3u6x6, Q3u6x6, X3u6x6, E4u6x6, L4u6x6, S4u6x6, Z4u6x6, G5u6x6, N5u6x6, U5u6x6; +wire B6u6x6, I6u6x6, P6u6x6, W6u6x6, D7u6x6, K7u6x6, R7u6x6, Y7u6x6, F8u6x6, M8u6x6; +wire T8u6x6, A9u6x6, H9u6x6, O9u6x6, V9u6x6, Cau6x6, Jau6x6, Qau6x6, Xau6x6, Ebu6x6; +wire Lbu6x6, Sbu6x6, Zbu6x6, Gcu6x6, Ncu6x6, Ucu6x6, Bdu6x6, Idu6x6, Pdu6x6, Wdu6x6; +wire Deu6x6, Keu6x6, Reu6x6, Yeu6x6, Ffu6x6, Mfu6x6, Tfu6x6, Agu6x6, Hgu6x6, Ogu6x6; +wire Vgu6x6, Chu6x6, Jhu6x6, Qhu6x6, Xhu6x6, Eiu6x6, Liu6x6, Siu6x6, Ziu6x6, Gju6x6; +wire Nju6x6, Uju6x6, Bku6x6, Iku6x6, Pku6x6, Wku6x6, Dlu6x6, Klu6x6, Rlu6x6, Ylu6x6; +wire Fmu6x6, Mmu6x6, Tmu6x6, Anu6x6, Hnu6x6, Onu6x6, Vnu6x6, Cou6x6, Jou6x6, Qou6x6; +wire Xou6x6, Epu6x6, Lpu6x6, Spu6x6, Zpu6x6, Gqu6x6, Nqu6x6, Uqu6x6, Bru6x6, Iru6x6; +wire Pru6x6, Wru6x6, Dsu6x6, Ksu6x6, Rsu6x6, Ysu6x6, Ftu6x6, Mtu6x6, Ttu6x6, Auu6x6; +wire Huu6x6, Ouu6x6, Vuu6x6, Cvu6x6, Jvu6x6, Qvu6x6, Xvu6x6, Ewu6x6, Lwu6x6, Swu6x6; +wire Zwu6x6, Gxu6x6, Nxu6x6, Uxu6x6, Byu6x6, Iyu6x6, Pyu6x6, Wyu6x6, Dzu6x6, Kzu6x6; +wire Rzu6x6, Yzu6x6, F0v6x6, M0v6x6, T0v6x6, A1v6x6, H1v6x6, O1v6x6, V1v6x6, C2v6x6; +wire J2v6x6, Q2v6x6, X2v6x6, E3v6x6, L3v6x6, S3v6x6, Z3v6x6, G4v6x6, N4v6x6, U4v6x6; +wire B5v6x6, I5v6x6, P5v6x6, W5v6x6, D6v6x6, K6v6x6, R6v6x6, Y6v6x6, F7v6x6, M7v6x6; +wire T7v6x6, A8v6x6, H8v6x6, O8v6x6, V8v6x6, C9v6x6, J9v6x6, Q9v6x6, X9v6x6, Eav6x6; +wire Lav6x6, Sav6x6, Zav6x6, Gbv6x6, Nbv6x6, Ubv6x6, Bcv6x6, Icv6x6, Pcv6x6, Wcv6x6; +wire Ddv6x6, Kdv6x6, Rdv6x6, Ydv6x6, Fev6x6, Mev6x6, Tev6x6, Afv6x6, Hfv6x6, Ofv6x6; +wire Vfv6x6, Cgv6x6, Jgv6x6, Qgv6x6, Xgv6x6, Ehv6x6, Lhv6x6, Shv6x6, Zhv6x6, Giv6x6; +wire Niv6x6, Uiv6x6, Bjv6x6, Ijv6x6, Pjv6x6, Wjv6x6, Dkv6x6, Kkv6x6, Rkv6x6, Ykv6x6; +wire Flv6x6, Mlv6x6, Tlv6x6, Amv6x6, Hmv6x6, Omv6x6, Vmv6x6, Cnv6x6, Jnv6x6, Qnv6x6; +wire Xnv6x6, Eov6x6, Lov6x6, Sov6x6, Zov6x6, Gpv6x6, Npv6x6, Upv6x6, Bqv6x6, Iqv6x6; +wire Pqv6x6, Wqv6x6, Drv6x6, Krv6x6, Rrv6x6, Yrv6x6, Fsv6x6, Msv6x6, Tsv6x6, Atv6x6; +wire Htv6x6, Otv6x6, Vtv6x6, Cuv6x6, Juv6x6, Quv6x6, Xuv6x6, Evv6x6, Lvv6x6, Svv6x6; +wire Zvv6x6, Gwv6x6, Nwv6x6, Uwv6x6, Bxv6x6, Ixv6x6, Pxv6x6, Wxv6x6, Dyv6x6, Kyv6x6; +wire Ryv6x6, Yyv6x6, Fzv6x6, Mzv6x6, Tzv6x6, A0w6x6, H0w6x6, O0w6x6, V0w6x6, C1w6x6; +wire J1w6x6, Q1w6x6, X1w6x6, E2w6x6, L2w6x6, S2w6x6, Z2w6x6, G3w6x6, N3w6x6, U3w6x6; +wire B4w6x6, I4w6x6, P4w6x6, W4w6x6, D5w6x6, K5w6x6, R5w6x6, Y5w6x6, F6w6x6, M6w6x6; +wire T6w6x6, A7w6x6, H7w6x6, O7w6x6, V7w6x6, C8w6x6, J8w6x6, Q8w6x6, X8w6x6, E9w6x6; +wire L9w6x6, S9w6x6, Z9w6x6, Gaw6x6, Naw6x6, Uaw6x6, Bbw6x6, Ibw6x6, Pbw6x6, Wbw6x6; +wire Dcw6x6, Kcw6x6, Rcw6x6, Ycw6x6, Fdw6x6, Mdw6x6, Tdw6x6, Aew6x6, Hew6x6, Oew6x6; +wire Vew6x6, Cfw6x6, Jfw6x6, Qfw6x6, Xfw6x6, Egw6x6, Lgw6x6, Sgw6x6, Zgw6x6, Ghw6x6; +wire Nhw6x6, Uhw6x6, Biw6x6, Iiw6x6, Piw6x6, Wiw6x6, Djw6x6, Kjw6x6, Rjw6x6, Yjw6x6; +wire Fkw6x6, Mkw6x6, Tkw6x6, Alw6x6, Hlw6x6, Olw6x6, Vlw6x6, Cmw6x6, Jmw6x6, Qmw6x6; +wire Xmw6x6, Enw6x6, Lnw6x6, Snw6x6, Znw6x6, Gow6x6, Now6x6, Uow6x6, Bpw6x6, Ipw6x6; +wire Ppw6x6, Wpw6x6, Dqw6x6, Kqw6x6, Rqw6x6, Yqw6x6, Frw6x6, Mrw6x6, Trw6x6, Asw6x6; +wire Hsw6x6, Osw6x6, Vsw6x6, Ctw6x6, Jtw6x6, Qtw6x6, Xtw6x6, Euw6x6, Luw6x6, Suw6x6; +wire Zuw6x6, Gvw6x6, Nvw6x6, Uvw6x6, Bww6x6, Iww6x6, Pww6x6, Www6x6, Dxw6x6, Kxw6x6; +wire Rxw6x6, Yxw6x6, Fyw6x6, Myw6x6, Tyw6x6, Azw6x6, Hzw6x6, Ozw6x6, Vzw6x6, C0x6x6; +wire J0x6x6, Q0x6x6, X0x6x6, E1x6x6, L1x6x6, S1x6x6, Z1x6x6, G2x6x6, N2x6x6, U2x6x6; +wire B3x6x6, I3x6x6, P3x6x6, W3x6x6, D4x6x6, K4x6x6, R4x6x6, Y4x6x6, F5x6x6, M5x6x6; +wire T5x6x6, A6x6x6, H6x6x6, O6x6x6, V6x6x6, C7x6x6, J7x6x6, Q7x6x6, X7x6x6, E8x6x6; +wire L8x6x6, S8x6x6, Z8x6x6, G9x6x6, N9x6x6, U9x6x6, Bax6x6, Iax6x6, Pax6x6, Wax6x6; +wire Dbx6x6, Kbx6x6, Rbx6x6, Ybx6x6, Fcx6x6, Mcx6x6, Tcx6x6, Adx6x6, Hdx6x6, Odx6x6; +wire Vdx6x6, Cex6x6, Jex6x6, Qex6x6, Xex6x6, Efx6x6, Lfx6x6, Sfx6x6, Zfx6x6, Ggx6x6; +wire Ngx6x6, Ugx6x6, Bhx6x6, Ihx6x6, Phx6x6, Whx6x6, Dix6x6, Kix6x6, Rix6x6, Yix6x6; +wire Fjx6x6, Mjx6x6, Tjx6x6, Akx6x6, Hkx6x6, Okx6x6, Vkx6x6, Clx6x6, Jlx6x6, Qlx6x6; +wire Xlx6x6, Emx6x6, Lmx6x6, Smx6x6, Zmx6x6, Gnx6x6, Nnx6x6, Unx6x6, Box6x6, Iox6x6; +wire Pox6x6, Wox6x6, Dpx6x6, Kpx6x6, Rpx6x6, Ypx6x6, Fqx6x6, Mqx6x6, Tqx6x6, Arx6x6; +wire Hrx6x6, Orx6x6, Vrx6x6, Csx6x6, Jsx6x6, Qsx6x6, Xsx6x6, Etx6x6, Ltx6x6, Stx6x6; +wire Ztx6x6, Gux6x6, Nux6x6, Uux6x6, Bvx6x6, Ivx6x6, Pvx6x6, Wvx6x6, Dwx6x6, Kwx6x6; +wire Rwx6x6, Ywx6x6, Fxx6x6, Mxx6x6, Txx6x6, Ayx6x6, Hyx6x6, Oyx6x6, Vyx6x6, Czx6x6; +wire Jzx6x6, Qzx6x6, Xzx6x6, E0y6x6, L0y6x6, S0y6x6, Z0y6x6, G1y6x6, N1y6x6, U1y6x6; +wire B2y6x6, I2y6x6, P2y6x6, W2y6x6, D3y6x6, K3y6x6, R3y6x6, Y3y6x6, F4y6x6, M4y6x6; +wire T4y6x6, A5y6x6, H5y6x6, O5y6x6, V5y6x6, C6y6x6, J6y6x6, Q6y6x6, X6y6x6, E7y6x6; +wire L7y6x6, S7y6x6, Z7y6x6, G8y6x6, N8y6x6, U8y6x6, B9y6x6, I9y6x6, P9y6x6, W9y6x6; +wire Day6x6, Kay6x6, Ray6x6, Yay6x6, Fby6x6, Mby6x6, Tby6x6, Acy6x6, Hcy6x6, Ocy6x6; +wire Vcy6x6, Cdy6x6, Jdy6x6, Qdy6x6, Xdy6x6, Eey6x6, Ley6x6, Sey6x6, Zey6x6, Gfy6x6; +wire Nfy6x6, Ufy6x6, Bgy6x6, Igy6x6, Pgy6x6, Wgy6x6, Dhy6x6, Khy6x6, Rhy6x6, Yhy6x6; +wire Fiy6x6, Miy6x6, Tiy6x6, Ajy6x6, Hjy6x6, Ojy6x6, Vjy6x6, Cky6x6, Jky6x6, Qky6x6; +wire Xky6x6, Ely6x6, Lly6x6, Sly6x6, Zly6x6, Gmy6x6, Nmy6x6, Umy6x6, Bny6x6, Iny6x6; +wire Pny6x6, Wny6x6, Doy6x6, Koy6x6, Roy6x6, Yoy6x6, Fpy6x6, Mpy6x6, Tpy6x6, Aqy6x6; +wire Hqy6x6, Oqy6x6, Vqy6x6, Cry6x6, Jry6x6, Qry6x6, Xry6x6, Esy6x6, Lsy6x6, Ssy6x6; +wire Zsy6x6, Gty6x6, Nty6x6, Uty6x6, Buy6x6, Iuy6x6, Puy6x6, Wuy6x6, Dvy6x6, Kvy6x6; +wire Rvy6x6, Yvy6x6, Fwy6x6, Mwy6x6, Twy6x6, Axy6x6, Hxy6x6, Oxy6x6, Vxy6x6, Cyy6x6; +wire Jyy6x6, Qyy6x6, Xyy6x6, Ezy6x6, Lzy6x6, Szy6x6, Zzy6x6, G0z6x6, N0z6x6, U0z6x6; +wire B1z6x6, I1z6x6, P1z6x6, W1z6x6, D2z6x6, K2z6x6, R2z6x6, Y2z6x6, F3z6x6, M3z6x6; +wire T3z6x6, A4z6x6, H4z6x6, O4z6x6, V4z6x6, C5z6x6, J5z6x6, Q5z6x6, X5z6x6, E6z6x6; +wire L6z6x6, S6z6x6, Z6z6x6, G7z6x6, N7z6x6, U7z6x6, B8z6x6, I8z6x6, P8z6x6, W8z6x6; +wire D9z6x6, K9z6x6, R9z6x6, Y9z6x6, Faz6x6, Maz6x6, Taz6x6, Abz6x6, Hbz6x6, Obz6x6; +wire Vbz6x6, Ccz6x6, Jcz6x6, Qcz6x6, Xcz6x6, Edz6x6, Ldz6x6, Sdz6x6, Zdz6x6, Gez6x6; +wire Nez6x6, Uez6x6, Bfz6x6, Ifz6x6, Pfz6x6, Wfz6x6, Dgz6x6, Kgz6x6, Rgz6x6, Ygz6x6; +wire Fhz6x6, Mhz6x6, Thz6x6, Aiz6x6, Hiz6x6, Oiz6x6, Viz6x6, Cjz6x6, Jjz6x6, Qjz6x6; +wire Xjz6x6, Ekz6x6, Lkz6x6, Skz6x6, Zkz6x6, Glz6x6, Nlz6x6, Ulz6x6, Bmz6x6, Imz6x6; +wire Pmz6x6, Wmz6x6, Dnz6x6, Knz6x6, Rnz6x6, Ynz6x6, Foz6x6, Moz6x6, Toz6x6, Apz6x6; +wire Hpz6x6, Opz6x6, Vpz6x6, Cqz6x6, Jqz6x6, Qqz6x6, Xqz6x6, Erz6x6, Lrz6x6, Srz6x6; +wire Zrz6x6, Gsz6x6, Nsz6x6, Usz6x6, Btz6x6, Itz6x6, Ptz6x6, Wtz6x6, Duz6x6, Kuz6x6; +wire Ruz6x6, Yuz6x6, Fvz6x6, Mvz6x6, Tvz6x6, Awz6x6, Hwz6x6, Owz6x6, Vwz6x6, Cxz6x6; +wire Jxz6x6, Qxz6x6, Xxz6x6, Eyz6x6, Lyz6x6, Syz6x6, Zyz6x6, Gzz6x6, Nzz6x6, Uzz6x6; +wire B007x6, I007x6, P007x6, W007x6, D107x6, K107x6, R107x6, Y107x6, F207x6, M207x6; +wire T207x6, A307x6, H307x6, O307x6, V307x6, C407x6, J407x6, Q407x6, X407x6, E507x6; +wire L507x6, S507x6, Z507x6, G607x6, N607x6, U607x6, B707x6, I707x6, P707x6, W707x6; +wire D807x6, K807x6, R807x6, Y807x6, F907x6, M907x6, T907x6, Aa07x6, Ha07x6, Oa07x6; +wire Va07x6, Cb07x6, Jb07x6, Qb07x6, Xb07x6, Ec07x6, Lc07x6, Sc07x6, Zc07x6, Gd07x6; +wire Nd07x6, Ud07x6, Be07x6, Ie07x6, Pe07x6, We07x6, Df07x6, Kf07x6, Rf07x6, Yf07x6; +wire Fg07x6, Mg07x6, Tg07x6, Ah07x6, Hh07x6, Oh07x6, Vh07x6, Ci07x6, Ji07x6, Qi07x6; +wire Xi07x6, Ej07x6, Lj07x6, Sj07x6, Zj07x6, Gk07x6, Nk07x6, Uk07x6, Bl07x6, Il07x6; +wire Pl07x6, Wl07x6, Dm07x6, Km07x6, Rm07x6, Ym07x6, Fn07x6, Mn07x6, Tn07x6, Ao07x6; +wire Ho07x6, Oo07x6, Vo07x6, Cp07x6, Jp07x6, Qp07x6, Xp07x6, Eq07x6, Lq07x6, Sq07x6; +wire Zq07x6, Gr07x6, Nr07x6, Ur07x6, Bs07x6, Is07x6, Ps07x6, Ws07x6, Dt07x6, Kt07x6; +wire Rt07x6, Yt07x6, Fu07x6, Mu07x6, Tu07x6, Av07x6, Hv07x6, Ov07x6, Vv07x6, Cw07x6; +wire Jw07x6, Qw07x6, Xw07x6, Ex07x6, Lx07x6, Sx07x6, Zx07x6, Gy07x6, Ny07x6, Uy07x6; +wire Bz07x6, Iz07x6, Pz07x6, Wz07x6, D017x6, K017x6, R017x6, Y017x6, F117x6, M117x6; +wire T117x6, A217x6, H217x6, O217x6, V217x6, C317x6, J317x6, Q317x6, X317x6, E417x6; +wire L417x6, S417x6, Z417x6, G517x6, N517x6, U517x6, B617x6, I617x6, P617x6, W617x6; +wire D717x6, K717x6, R717x6, Y717x6, F817x6, M817x6, T817x6, A917x6, H917x6, O917x6; +wire V917x6, Ca17x6, Ja17x6, Qa17x6, Xa17x6, Eb17x6, Lb17x6, Sb17x6, Zb17x6, Gc17x6; +wire Nc17x6, Uc17x6, Bd17x6, Id17x6, Pd17x6, Wd17x6, De17x6, Ke17x6, Re17x6, Ye17x6; +wire Ff17x6, Mf17x6, Tf17x6, Ag17x6, Hg17x6, Og17x6, Vg17x6, Ch17x6, Jh17x6, Qh17x6; +wire Xh17x6, Ei17x6, Li17x6, Si17x6, Zi17x6, Gj17x6, Nj17x6, Uj17x6, Bk17x6, Ik17x6; +wire Pk17x6, Wk17x6, Dl17x6, Kl17x6, Rl17x6, Yl17x6, Fm17x6, Mm17x6, Tm17x6, An17x6; +wire Hn17x6, On17x6, Vn17x6, Co17x6, Jo17x6, Qo17x6, Xo17x6, Ep17x6, Lp17x6, Sp17x6; +wire Zp17x6, Gq17x6, Nq17x6, Uq17x6, Br17x6, Ir17x6, Pr17x6, Wr17x6, Ds17x6, Ks17x6; +wire Rs17x6, Ys17x6, Ft17x6, Mt17x6, Tt17x6, Au17x6, Hu17x6, Ou17x6, Vu17x6, Cv17x6; +wire Jv17x6, Qv17x6, Xv17x6, Ew17x6, Lw17x6, Sw17x6, Zw17x6, Gx17x6, Nx17x6, Ux17x6; +wire By17x6, Iy17x6, Py17x6, Wy17x6, Dz17x6, Kz17x6, Rz17x6, Yz17x6, F027x6, M027x6; +wire T027x6, A127x6, H127x6, O127x6, V127x6, C227x6, J227x6, Q227x6, X227x6, E327x6; +wire L327x6, S327x6, Z327x6, G427x6, N427x6, U427x6, B527x6, I527x6, P527x6, W527x6; +wire D627x6, K627x6, R627x6, Y627x6, F727x6, M727x6, T727x6, A827x6, H827x6, O827x6; +wire V827x6, C927x6, J927x6, Q927x6, X927x6, Ea27x6, La27x6, Sa27x6, Za27x6, Gb27x6; +wire Nb27x6, Ub27x6, Bc27x6, Ic27x6, Pc27x6, Wc27x6, Dd27x6, Kd27x6, Rd27x6, Yd27x6; +wire Fe27x6, Me27x6, Te27x6, Af27x6, Hf27x6, Of27x6, Vf27x6, Cg27x6, Jg27x6, Qg27x6; +wire Xg27x6, Eh27x6, Lh27x6, Sh27x6, Zh27x6, Gi27x6, Ni27x6, Ui27x6, Bj27x6, Ij27x6; +wire Pj27x6, Wj27x6, Dk27x6, Kk27x6, Rk27x6, Yk27x6, Fl27x6, Ml27x6, Tl27x6, Am27x6; +wire Hm27x6, Om27x6, Vm27x6, Cn27x6, Jn27x6, Qn27x6, Xn27x6, Eo27x6, Lo27x6, So27x6; +wire Zo27x6, Gp27x6, Np27x6, Up27x6, Bq27x6, Iq27x6, Pq27x6, Wq27x6, Dr27x6, Kr27x6; +wire Rr27x6, Yr27x6, Fs27x6, Ms27x6, Ts27x6, At27x6, Ht27x6, Ot27x6, Vt27x6, Cu27x6; +wire Ju27x6, Qu27x6, Xu27x6, Ev27x6, Lv27x6, Sv27x6, Zv27x6, Gw27x6, Nw27x6, Uw27x6; +wire Bx27x6, Ix27x6, Px27x6, Wx27x6, Dy27x6, Ky27x6, Ry27x6, Yy27x6, Fz27x6, Mz27x6; +wire Tz27x6, A037x6, H037x6, O037x6, V037x6, C137x6, J137x6, Q137x6, X137x6, E237x6; +wire L237x6, S237x6, Z237x6, G337x6, N337x6, U337x6, B437x6, I437x6, P437x6, W437x6; +wire D537x6, K537x6, R537x6, Y537x6, F637x6, M637x6, T637x6, A737x6, H737x6, O737x6; +wire V737x6, C837x6, J837x6, Q837x6, X837x6, E937x6, L937x6, S937x6, Z937x6, Ga37x6; +wire Na37x6, Ua37x6, Bb37x6, Ib37x6, Pb37x6, Wb37x6, Dc37x6, Kc37x6, Rc37x6, Yc37x6; +wire Fd37x6, Md37x6, Td37x6, Ae37x6, He37x6, Oe37x6, Ve37x6, Cf37x6, Jf37x6, Qf37x6; +wire Xf37x6, Eg37x6, Lg37x6, Sg37x6, Zg37x6, Gh37x6, Nh37x6, Uh37x6, Bi37x6, Ii37x6; +wire Pi37x6, Wi37x6, Dj37x6, Kj37x6, Rj37x6, Yj37x6, Fk37x6, Mk37x6, Tk37x6, Al37x6; +wire Hl37x6, Ol37x6, Vl37x6, Cm37x6, Jm37x6, Qm37x6, Xm37x6, En37x6, Ln37x6, Sn37x6; +wire Zn37x6, Go37x6, No37x6, Uo37x6, Bp37x6, Ip37x6, Pp37x6, Wp37x6, Dq37x6, Kq37x6; +wire Rq37x6, Yq37x6, Fr37x6, Mr37x6, Tr37x6, As37x6, Hs37x6, Os37x6, Vs37x6, Ct37x6; +wire Jt37x6, Qt37x6, Xt37x6, Eu37x6, Lu37x6, Su37x6, Zu37x6, Gv37x6, Nv37x6, Uv37x6; +wire Bw37x6, Iw37x6, Pw37x6, Ww37x6, Dx37x6, Kx37x6, Rx37x6, Yx37x6, Fy37x6, My37x6; +wire Ty37x6, Az37x6, Hz37x6, Oz37x6, Vz37x6, C047x6, J047x6, Q047x6, X047x6, E147x6; +wire L147x6, S147x6, Z147x6, G247x6, N247x6, U247x6, B347x6, I347x6, P347x6, W347x6; +wire D447x6, K447x6, R447x6, Y447x6, F547x6, M547x6, T547x6, A647x6, H647x6, O647x6; +wire V647x6, C747x6, J747x6, Q747x6, X747x6, E847x6, L847x6, S847x6, Z847x6, G947x6; +wire N947x6, U947x6, Ba47x6, Ia47x6, Pa47x6, Wa47x6, Db47x6, Kb47x6, Rb47x6, Yb47x6; +wire Fc47x6, Mc47x6, Tc47x6, Ad47x6, Hd47x6, Od47x6, Vd47x6, Ce47x6, Je47x6, Qe47x6; +wire Xe47x6, Ef47x6, Lf47x6, Sf47x6, Zf47x6, Gg47x6, Ng47x6, Ug47x6, Bh47x6, Ih47x6; +wire Ph47x6, Wh47x6, Di47x6, Ki47x6, Ri47x6, Yi47x6, Fj47x6, Mj47x6, Tj47x6, Ak47x6; +wire Hk47x6, Ok47x6, Vk47x6, Cl47x6, Jl47x6, Ql47x6, Xl47x6, Em47x6, Lm47x6, Sm47x6; +wire Zm47x6, Gn47x6, Nn47x6, Un47x6, Bo47x6, Io47x6, Po47x6, Wo47x6, Dp47x6, Kp47x6; +wire Rp47x6, Yp47x6, Fq47x6, Mq47x6, Tq47x6, Ar47x6, Hr47x6, Or47x6, Vr47x6, Cs47x6; +wire Js47x6, Qs47x6, Xs47x6, Et47x6, Lt47x6, St47x6, Zt47x6, Gu47x6, Nu47x6, Uu47x6; +wire Bv47x6, Iv47x6, Pv47x6, Wv47x6, Dw47x6, Kw47x6, Rw47x6, Yw47x6, Fx47x6, Mx47x6; +wire Tx47x6, Ay47x6, Hy47x6, Oy47x6, Vy47x6, Cz47x6, Jz47x6, Qz47x6, Xz47x6, E057x6; +wire L057x6, S057x6, Z057x6, G157x6, N157x6, U157x6, B257x6, I257x6, P257x6, W257x6; +wire D357x6, K357x6, R357x6, Y357x6, F457x6, M457x6, T457x6, A557x6, H557x6, O557x6; +wire V557x6, C657x6, J657x6, Q657x6, X657x6, E757x6, L757x6, S757x6, Z757x6, G857x6; +wire N857x6, U857x6, B957x6, I957x6, P957x6, W957x6, Da57x6, Ka57x6, Ra57x6, Ya57x6; +wire Fb57x6, Mb57x6, Tb57x6, Ac57x6, Hc57x6, Oc57x6, Vc57x6, Cd57x6, Jd57x6, Qd57x6; +wire Xd57x6, Ee57x6, Le57x6, Se57x6, Ze57x6, Gf57x6, Nf57x6, Uf57x6, Bg57x6, Ig57x6; +wire Pg57x6, Wg57x6, Dh57x6, Kh57x6, Rh57x6, Yh57x6, Fi57x6, Mi57x6, Ti57x6, Aj57x6; +wire Hj57x6, Oj57x6, Vj57x6, Ck57x6, Jk57x6, Qk57x6, Xk57x6, El57x6, Ll57x6, Sl57x6; +wire Zl57x6, Gm57x6, Nm57x6, Um57x6, Bn57x6, In57x6, Pn57x6, Wn57x6, Do57x6, Ko57x6; +wire Ro57x6, Yo57x6, Fp57x6, Mp57x6, Tp57x6, Aq57x6, Hq57x6, Oq57x6, Vq57x6, Cr57x6; +wire Jr57x6, Qr57x6, Xr57x6, Es57x6, Ls57x6, Ss57x6, Zs57x6, Gt57x6, Nt57x6, Ut57x6; +wire Bu57x6, Iu57x6, Pu57x6, Wu57x6, Dv57x6, Kv57x6, Rv57x6, Yv57x6, Fw57x6, Mw57x6; +wire Tw57x6, Ax57x6, Hx57x6, Ox57x6, Vx57x6, Cy57x6, Jy57x6, Qy57x6, Xy57x6, Ez57x6; +wire Lz57x6, Sz57x6, Zz57x6, G067x6, N067x6, U067x6, B167x6, I167x6, P167x6, W167x6; +wire D267x6, K267x6, R267x6, Y267x6, F367x6, M367x6, T367x6, A467x6, H467x6, O467x6; +wire V467x6, C567x6, J567x6, Q567x6, X567x6, E667x6, L667x6, S667x6, Z667x6, G767x6; +wire N767x6, U767x6, B867x6, I867x6, P867x6, W867x6, D967x6, K967x6, R967x6, Y967x6; +wire Fa67x6, Ma67x6, Ta67x6, Ab67x6, Hb67x6, Ob67x6, Vb67x6, Cc67x6, Jc67x6, Qc67x6; +wire Xc67x6, Ed67x6, Ld67x6, Sd67x6, Zd67x6, Ge67x6, Ne67x6, Ue67x6, Bf67x6, If67x6; +wire Pf67x6, Wf67x6, Dg67x6, Kg67x6, Rg67x6, Yg67x6, Fh67x6, Mh67x6, Th67x6, Ai67x6; +wire Hi67x6, Oi67x6, Vi67x6, Cj67x6, Jj67x6, Qj67x6, Xj67x6, Ek67x6, Lk67x6, Sk67x6; +wire Zk67x6, Gl67x6, Nl67x6, Ul67x6, Bm67x6, Im67x6, Pm67x6, Wm67x6, Dn67x6, Kn67x6; +wire Rn67x6, Yn67x6, Fo67x6, Mo67x6, To67x6, Ap67x6, Hp67x6, Op67x6, Vp67x6, Cq67x6; +wire Jq67x6, Qq67x6, Xq67x6, Er67x6, Lr67x6, Sr67x6, Zr67x6, Gs67x6, Ns67x6, Us67x6; +wire Bt67x6, It67x6, Pt67x6, Wt67x6, Du67x6, Ku67x6, Ru67x6, Yu67x6, Fv67x6, Mv67x6; +wire Tv67x6, Aw67x6, Hw67x6, Ow67x6, Vw67x6, Cx67x6, Jx67x6, Qx67x6, Xx67x6, Ey67x6; +wire Ly67x6, Sy67x6, Zy67x6, Gz67x6, Nz67x6, Uz67x6, B077x6, I077x6, P077x6, W077x6; +wire D177x6, K177x6, R177x6, Y177x6, F277x6, M277x6, T277x6, A377x6, H377x6, O377x6; +wire V377x6, C477x6, J477x6, Q477x6, X477x6, E577x6, L577x6, S577x6, Z577x6, G677x6; +wire N677x6, U677x6, B777x6, I777x6, P777x6, W777x6, D877x6, K877x6, R877x6, Y877x6; +wire F977x6, M977x6, T977x6, Aa77x6, Ha77x6, Oa77x6, Va77x6, Cb77x6, Jb77x6, Qb77x6; +wire Xb77x6, Ec77x6, Lc77x6, Sc77x6, Zc77x6, Gd77x6, Nd77x6, Ud77x6, Be77x6, Ie77x6; +wire Pe77x6, We77x6, Df77x6, Kf77x6, Rf77x6, Yf77x6, Fg77x6, Mg77x6, Tg77x6, Ah77x6; +wire Hh77x6, Oh77x6, Vh77x6, Ci77x6, Ji77x6, Qi77x6, Xi77x6, Ej77x6, Lj77x6, Sj77x6; +wire Zj77x6, Gk77x6, Nk77x6, Uk77x6, Bl77x6, Il77x6, Pl77x6, Wl77x6, Dm77x6, Km77x6; +wire Rm77x6, Ym77x6, Fn77x6, Mn77x6, Tn77x6, Ao77x6, Ho77x6, Oo77x6, Vo77x6, Cp77x6; +wire Jp77x6, Qp77x6, Xp77x6, Eq77x6, Lq77x6, Sq77x6, Zq77x6, Gr77x6, Nr77x6, Ur77x6; +wire Bs77x6, Is77x6, Ps77x6, Ws77x6, Dt77x6, Kt77x6, Rt77x6, Yt77x6, Fu77x6, Mu77x6; +wire Tu77x6, Av77x6, Hv77x6, Ov77x6, Vv77x6, Cw77x6, Jw77x6, Qw77x6, Xw77x6, Ex77x6; +wire Lx77x6, Sx77x6, Zx77x6, Gy77x6, Ny77x6, Uy77x6, Bz77x6, Iz77x6, Pz77x6, Wz77x6; +wire D087x6, K087x6, R087x6, Y087x6, F187x6, M187x6, T187x6, A287x6, H287x6, O287x6; +wire V287x6, C387x6, J387x6, Q387x6, X387x6, E487x6, L487x6, S487x6, Z487x6, G587x6; +wire N587x6, U587x6, B687x6, I687x6, P687x6, W687x6, D787x6, K787x6, R787x6, Y787x6; +wire F887x6, M887x6, T887x6, A987x6, H987x6, O987x6, V987x6, Ca87x6, Ja87x6, Qa87x6; +wire Xa87x6, Eb87x6, Lb87x6, Sb87x6, Zb87x6, Gc87x6, Nc87x6, Uc87x6, Bd87x6, Id87x6; +wire Pd87x6, Wd87x6, De87x6, Ke87x6, Re87x6, Ye87x6, Ff87x6, Mf87x6, Tf87x6, Ag87x6; +wire Hg87x6, Og87x6, Vg87x6, Ch87x6, Jh87x6, Qh87x6, Xh87x6, Ei87x6, Li87x6, Si87x6; +wire Zi87x6, Gj87x6, Nj87x6, Uj87x6, Bk87x6, Ik87x6, Pk87x6, Wk87x6, Dl87x6, Kl87x6; +wire Rl87x6, Yl87x6, Fm87x6, Mm87x6, Tm87x6, An87x6, Hn87x6, On87x6, Vn87x6, Co87x6; +wire Jo87x6, Qo87x6, Xo87x6, Ep87x6, Lp87x6, Sp87x6, Zp87x6, Gq87x6, Nq87x6, Uq87x6; +wire Br87x6, Ir87x6, Pr87x6, Wr87x6, Ds87x6, Ks87x6, Rs87x6, Ys87x6, Ft87x6, Mt87x6; +wire Tt87x6, Au87x6, Hu87x6, Ou87x6, Vu87x6, Cv87x6, Jv87x6, Qv87x6, Xv87x6, Ew87x6; +wire Lw87x6, Sw87x6, Zw87x6, Gx87x6, Nx87x6, Ux87x6, By87x6, Iy87x6, Py87x6, Wy87x6; +wire Dz87x6, Kz87x6, Rz87x6, Yz87x6, F097x6, M097x6, T097x6, A197x6, H197x6, O197x6; +wire V197x6, C297x6, J297x6, Q297x6, X297x6, E397x6, L397x6, S397x6, Z397x6, G497x6; +wire N497x6, U497x6, B597x6, I597x6, P597x6, W597x6, D697x6, K697x6, R697x6, Y697x6; +wire F797x6, M797x6, T797x6, A897x6, H897x6, O897x6, V897x6, C997x6, J997x6, Q997x6; +wire X997x6, Ea97x6, La97x6, Sa97x6, Za97x6, Gb97x6, Nb97x6, Ub97x6, Bc97x6, Ic97x6; +wire Pc97x6, Wc97x6, Dd97x6, Kd97x6, Rd97x6, Yd97x6, Fe97x6, Me97x6, Te97x6, Af97x6; +wire Hf97x6, Of97x6, Vf97x6, Cg97x6, Jg97x6, Qg97x6, Xg97x6, Eh97x6, Lh97x6, Sh97x6; +wire Zh97x6, Gi97x6, Ni97x6, Ui97x6, Bj97x6, Ij97x6, Pj97x6, Wj97x6, Dk97x6, Kk97x6; +wire Rk97x6, Yk97x6, Fl97x6, Ml97x6, Tl97x6, Am97x6, Hm97x6, Om97x6, Vm97x6, Cn97x6; +wire Jn97x6, Qn97x6, Xn97x6, Eo97x6, Lo97x6, So97x6, Zo97x6, Gp97x6, Np97x6, Up97x6; +wire Bq97x6, Iq97x6, Pq97x6, Wq97x6, Dr97x6, Kr97x6, Rr97x6, Yr97x6, Fs97x6, Ms97x6; +wire Ts97x6, At97x6, Ht97x6, Ot97x6, Vt97x6, Cu97x6, Ju97x6, Qu97x6, Xu97x6, Ev97x6; +wire Lv97x6, Sv97x6, Zv97x6, Gw97x6, Nw97x6, Uw97x6, Bx97x6, Ix97x6, Px97x6, Wx97x6; +wire Dy97x6, Ky97x6, Ry97x6, Yy97x6, Fz97x6, Mz97x6, Tz97x6, A0a7x6, H0a7x6, O0a7x6; +wire V0a7x6, C1a7x6, J1a7x6, Q1a7x6, X1a7x6, E2a7x6, L2a7x6, S2a7x6, Z2a7x6, G3a7x6; +wire N3a7x6, U3a7x6, B4a7x6, I4a7x6, P4a7x6, W4a7x6, D5a7x6, K5a7x6, R5a7x6, Y5a7x6; +wire F6a7x6, M6a7x6, T6a7x6, A7a7x6, H7a7x6, O7a7x6, V7a7x6, C8a7x6, J8a7x6, Q8a7x6; +wire X8a7x6, E9a7x6, L9a7x6, S9a7x6, Z9a7x6, Gaa7x6, Naa7x6, Uaa7x6, Bba7x6, Iba7x6; +wire Pba7x6, Wba7x6, Dca7x6, Kca7x6, Rca7x6, Yca7x6, Fda7x6, Mda7x6, Tda7x6, Aea7x6; +wire Hea7x6, Oea7x6, Vea7x6, Cfa7x6, Jfa7x6, Qfa7x6, Xfa7x6, Ega7x6, Lga7x6, Sga7x6; +wire Zga7x6, Gha7x6, Nha7x6, Uha7x6, Bia7x6, Iia7x6, Pia7x6, Wia7x6, Dja7x6, Kja7x6; +wire Rja7x6, Yja7x6, Fka7x6, Mka7x6, Tka7x6, Ala7x6, Hla7x6, Ola7x6, Vla7x6, Cma7x6; +wire Jma7x6, Qma7x6, Xma7x6, Ena7x6, Lna7x6, Sna7x6, Zna7x6, Goa7x6, Noa7x6, Uoa7x6; +wire Bpa7x6, Ipa7x6, Ppa7x6, Wpa7x6, Dqa7x6, Kqa7x6, Rqa7x6, Yqa7x6, Fra7x6, Mra7x6; +wire Tra7x6, Asa7x6, Hsa7x6, Osa7x6, Vsa7x6, Cta7x6, Jta7x6, Qta7x6, Xta7x6, Eua7x6; +wire Lua7x6, Sua7x6, Zua7x6, Gva7x6, Nva7x6, Uva7x6, Bwa7x6, Iwa7x6, Pwa7x6, Wwa7x6; +wire Dxa7x6, Kxa7x6, Rxa7x6, Yxa7x6, Fya7x6, Mya7x6, Tya7x6, Aza7x6, Hza7x6, Oza7x6; +wire Vza7x6, C0b7x6, J0b7x6, Q0b7x6, X0b7x6, E1b7x6, L1b7x6, S1b7x6, Z1b7x6, G2b7x6; +wire N2b7x6, U2b7x6, B3b7x6, I3b7x6, P3b7x6, W3b7x6, D4b7x6, K4b7x6, R4b7x6, Y4b7x6; +wire F5b7x6, M5b7x6, T5b7x6, A6b7x6, H6b7x6, O6b7x6, V6b7x6, C7b7x6, J7b7x6, Q7b7x6; +wire X7b7x6, E8b7x6, L8b7x6, S8b7x6, Z8b7x6, G9b7x6, N9b7x6, U9b7x6, Bab7x6, Iab7x6; +wire Pab7x6, Wab7x6, Dbb7x6, Kbb7x6, Rbb7x6, Ybb7x6, Fcb7x6, Mcb7x6, Tcb7x6, Adb7x6; +wire Hdb7x6, Odb7x6, Vdb7x6, Ceb7x6, Jeb7x6, Qeb7x6, Xeb7x6, Efb7x6, Lfb7x6, Sfb7x6; +wire Zfb7x6, Ggb7x6, Ngb7x6, Ugb7x6, Bhb7x6, Ihb7x6, Phb7x6, Whb7x6, Dib7x6, Kib7x6; +wire Rib7x6, Yib7x6, Fjb7x6, Mjb7x6, Tjb7x6, Akb7x6, Hkb7x6, Okb7x6, Vkb7x6, Clb7x6; +wire Jlb7x6, Qlb7x6, Xlb7x6, Emb7x6, Lmb7x6, Smb7x6, Zmb7x6, Gnb7x6, Nnb7x6, Unb7x6; +wire Bob7x6, Iob7x6, Pob7x6, Wob7x6, Dpb7x6, Kpb7x6, Rpb7x6, Ypb7x6, Fqb7x6, Mqb7x6; +wire Tqb7x6, Arb7x6, Hrb7x6, Orb7x6, Vrb7x6, Csb7x6, Jsb7x6, Qsb7x6, Xsb7x6, Etb7x6; +wire Ltb7x6, Stb7x6, Ztb7x6, Gub7x6, Nub7x6, Uub7x6, Bvb7x6, Ivb7x6, Pvb7x6, Wvb7x6; +wire Dwb7x6, Kwb7x6, Rwb7x6, Ywb7x6, Fxb7x6, Mxb7x6, Txb7x6, Ayb7x6, Hyb7x6, Oyb7x6; +wire Vyb7x6, Czb7x6, Jzb7x6, Qzb7x6, Xzb7x6, E0c7x6, L0c7x6, S0c7x6, Z0c7x6, G1c7x6; +wire N1c7x6, U1c7x6, B2c7x6, I2c7x6, P2c7x6, W2c7x6, D3c7x6, K3c7x6, R3c7x6, Y3c7x6; +wire F4c7x6, M4c7x6, T4c7x6, A5c7x6, H5c7x6, O5c7x6, V5c7x6, C6c7x6, J6c7x6, Q6c7x6; +wire X6c7x6, E7c7x6, L7c7x6, S7c7x6, Z7c7x6, G8c7x6, N8c7x6, U8c7x6, B9c7x6, I9c7x6; +wire P9c7x6, W9c7x6, Dac7x6, Kac7x6, Rac7x6, Yac7x6, Fbc7x6, Mbc7x6, Tbc7x6, Acc7x6; +wire Hcc7x6, Occ7x6, Vcc7x6, Cdc7x6, Jdc7x6, Qdc7x6, Xdc7x6, Eec7x6, Lec7x6, Sec7x6; +wire Zec7x6, Gfc7x6, Nfc7x6, Ufc7x6, Bgc7x6, Igc7x6, Pgc7x6, Wgc7x6, Dhc7x6, Khc7x6; +wire Rhc7x6, Yhc7x6, Fic7x6, Mic7x6, Tic7x6, Ajc7x6, Hjc7x6, Ojc7x6, Vjc7x6, Ckc7x6; +wire Jkc7x6, Qkc7x6, Xkc7x6, Elc7x6, Llc7x6, Slc7x6, Zlc7x6, Gmc7x6, Nmc7x6, Umc7x6; +wire Bnc7x6, Inc7x6, Pnc7x6, Wnc7x6, Doc7x6, Koc7x6, Roc7x6, Yoc7x6, Fpc7x6, Mpc7x6; +wire Tpc7x6, Aqc7x6, Hqc7x6, Oqc7x6, Vqc7x6, Crc7x6, Jrc7x6, Qrc7x6, Xrc7x6, Esc7x6; +wire Lsc7x6, Ssc7x6, Zsc7x6, Gtc7x6, Ntc7x6, Utc7x6, Buc7x6, Iuc7x6, Puc7x6, Wuc7x6; +wire Dvc7x6, Kvc7x6, Rvc7x6, Yvc7x6, Fwc7x6, Mwc7x6, Twc7x6, Axc7x6, Hxc7x6, Oxc7x6; +wire Vxc7x6, Cyc7x6, Jyc7x6, Qyc7x6, Xyc7x6, Ezc7x6, Lzc7x6, Szc7x6, Zzc7x6, G0d7x6; +wire N0d7x6, U0d7x6, B1d7x6, I1d7x6, P1d7x6, W1d7x6, D2d7x6, K2d7x6, R2d7x6, Y2d7x6; +wire F3d7x6, M3d7x6, T3d7x6, A4d7x6, H4d7x6, O4d7x6, V4d7x6, C5d7x6, J5d7x6, Q5d7x6; +wire X5d7x6, E6d7x6, L6d7x6, S6d7x6, Z6d7x6, G7d7x6, N7d7x6, U7d7x6, B8d7x6, I8d7x6; +wire P8d7x6, W8d7x6, D9d7x6, K9d7x6, R9d7x6, Y9d7x6, Fad7x6, Mad7x6, Tad7x6, Abd7x6; +wire Hbd7x6, Obd7x6, Vbd7x6, Ccd7x6, Jcd7x6, Qcd7x6, Xcd7x6, Edd7x6, Ldd7x6, Sdd7x6; +wire Zdd7x6, Ged7x6, Ned7x6, Ued7x6, Bfd7x6, Ifd7x6, Pfd7x6, Wfd7x6, Dgd7x6, Kgd7x6; +wire Rgd7x6, Ygd7x6, Fhd7x6, Mhd7x6, Thd7x6, Aid7x6, Hid7x6, Oid7x6, Vid7x6, Cjd7x6; +wire Jjd7x6, Qjd7x6, Xjd7x6, Ekd7x6, Lkd7x6, Skd7x6, Zkd7x6, Gld7x6, Nld7x6, Uld7x6; +wire Bmd7x6, Imd7x6, Pmd7x6, Wmd7x6, Dnd7x6, Knd7x6, Rnd7x6, Ynd7x6, Fod7x6, Mod7x6; +wire Tod7x6, Apd7x6, Hpd7x6, Opd7x6, Vpd7x6, Cqd7x6, Jqd7x6, Qqd7x6, Xqd7x6, Erd7x6; +wire Lrd7x6, Srd7x6, Zrd7x6, Gsd7x6, Nsd7x6, Usd7x6, Btd7x6, Itd7x6, Ptd7x6, Wtd7x6; +wire Dud7x6, Kud7x6, Rud7x6, Yud7x6, Fvd7x6, Mvd7x6, Tvd7x6, Awd7x6, Hwd7x6, Owd7x6; +wire Vwd7x6, Cxd7x6, Jxd7x6, Qxd7x6, Xxd7x6, Eyd7x6, Lyd7x6, Syd7x6, Zyd7x6, Gzd7x6; +wire Nzd7x6, Uzd7x6, B0e7x6, I0e7x6, P0e7x6, W0e7x6, D1e7x6, K1e7x6, R1e7x6, Y1e7x6; +wire F2e7x6, M2e7x6, T2e7x6, A3e7x6, H3e7x6, O3e7x6, V3e7x6, C4e7x6, J4e7x6, Q4e7x6; +wire X4e7x6, E5e7x6, L5e7x6, S5e7x6, Z5e7x6, G6e7x6, N6e7x6, U6e7x6, B7e7x6, I7e7x6; +wire P7e7x6, W7e7x6, D8e7x6, K8e7x6, R8e7x6, Y8e7x6, F9e7x6, M9e7x6, T9e7x6, Aae7x6; +wire Hae7x6, Oae7x6, Vae7x6, Cbe7x6, Jbe7x6, Qbe7x6, Xbe7x6, Ece7x6, Lce7x6, Sce7x6; +wire Zce7x6, Gde7x6, Nde7x6, Ude7x6, Bee7x6, Iee7x6, Pee7x6, Wee7x6, Dfe7x6, Kfe7x6; +wire Rfe7x6, Yfe7x6, Fge7x6, Mge7x6, Tge7x6, Ahe7x6, Hhe7x6, Ohe7x6, Vhe7x6, Cie7x6; +wire Jie7x6, Qie7x6, Xie7x6, Eje7x6, Lje7x6, Sje7x6, Zje7x6, Gke7x6, Nke7x6, Uke7x6; +wire Ble7x6, Ile7x6, Ple7x6, Wle7x6, Dme7x6, Kme7x6, Rme7x6, Yme7x6, Fne7x6, Mne7x6; +wire Tne7x6, Aoe7x6, Hoe7x6, Ooe7x6, Voe7x6, Cpe7x6, Jpe7x6, Qpe7x6, Xpe7x6, Eqe7x6; +wire Lqe7x6, Sqe7x6, Zqe7x6, Gre7x6, Nre7x6, Ure7x6, Bse7x6, Ise7x6, Pse7x6, Wse7x6; +wire Dte7x6, Kte7x6, Rte7x6, Yte7x6, Fue7x6, Mue7x6, Tue7x6, Ave7x6, Hve7x6, Ove7x6; +wire Vve7x6, Cwe7x6, Jwe7x6, Qwe7x6, Xwe7x6, Exe7x6, Lxe7x6, Sxe7x6, Zxe7x6, Gye7x6; +wire Nye7x6, Uye7x6, Bze7x6, Ize7x6, Pze7x6, Wze7x6, D0f7x6, K0f7x6, R0f7x6, Y0f7x6; +wire F1f7x6, M1f7x6, T1f7x6, A2f7x6, H2f7x6, O2f7x6, V2f7x6, C3f7x6, J3f7x6, Q3f7x6; +wire X3f7x6, E4f7x6, L4f7x6, S4f7x6, Z4f7x6, G5f7x6, N5f7x6, U5f7x6, B6f7x6, I6f7x6; +wire P6f7x6, W6f7x6, D7f7x6, K7f7x6, R7f7x6, Y7f7x6, F8f7x6, M8f7x6, T8f7x6, A9f7x6; +wire H9f7x6, O9f7x6, V9f7x6, Caf7x6, Jaf7x6, Qaf7x6, Xaf7x6, Ebf7x6, Lbf7x6, Sbf7x6; +wire Zbf7x6, Gcf7x6, Ncf7x6, Ucf7x6, Bdf7x6, Idf7x6, Pdf7x6, Wdf7x6, Def7x6, Kef7x6; +wire Ref7x6, Yef7x6, Fff7x6, Mff7x6, Tff7x6, Agf7x6, Hgf7x6, Ogf7x6, Vgf7x6, Chf7x6; +wire Jhf7x6, Qhf7x6, Xhf7x6, Eif7x6, Lif7x6, Sif7x6, Zif7x6, Gjf7x6, Njf7x6, Ujf7x6; +wire Bkf7x6, Ikf7x6, Pkf7x6, Wkf7x6, Dlf7x6, Klf7x6, Rlf7x6, Ylf7x6, Fmf7x6, Mmf7x6; +wire Tmf7x6, Anf7x6, Hnf7x6, Onf7x6, Vnf7x6, Cof7x6, Jof7x6, Qof7x6, Xof7x6, Epf7x6; +wire Lpf7x6, Spf7x6, Zpf7x6, Gqf7x6, Nqf7x6, Uqf7x6, Brf7x6, Irf7x6, Prf7x6, Wrf7x6; +wire Dsf7x6, Ksf7x6, Rsf7x6, Ysf7x6, Ftf7x6, Mtf7x6, Ttf7x6, Auf7x6, Huf7x6, Ouf7x6; +wire Vuf7x6, Cvf7x6, Jvf7x6, Qvf7x6, Xvf7x6, Ewf7x6, Lwf7x6, Swf7x6, Zwf7x6, Gxf7x6; +wire Nxf7x6, Uxf7x6, Byf7x6, Iyf7x6, Pyf7x6, Wyf7x6, Dzf7x6, Kzf7x6, Rzf7x6, Yzf7x6; +wire F0g7x6, M0g7x6, T0g7x6, A1g7x6, H1g7x6, O1g7x6, V1g7x6, C2g7x6, J2g7x6, Q2g7x6; +wire X2g7x6, E3g7x6, L3g7x6, S3g7x6, Z3g7x6, G4g7x6, N4g7x6, U4g7x6, B5g7x6, I5g7x6; +wire P5g7x6, W5g7x6, D6g7x6, K6g7x6, R6g7x6, Y6g7x6, F7g7x6, M7g7x6, T7g7x6, A8g7x6; +wire H8g7x6, O8g7x6, V8g7x6, C9g7x6, J9g7x6, Q9g7x6, X9g7x6, Eag7x6, Lag7x6, Sag7x6; +wire Zag7x6, Gbg7x6, Nbg7x6, Ubg7x6, Bcg7x6, Icg7x6, Pcg7x6, Wcg7x6, Ddg7x6, Kdg7x6; +wire Rdg7x6, Ydg7x6, Feg7x6, Meg7x6, Teg7x6, Afg7x6, Hfg7x6, Ofg7x6, Vfg7x6, Cgg7x6; +wire Jgg7x6, Qgg7x6, Xgg7x6, Ehg7x6, Lhg7x6, Shg7x6, Zhg7x6, Gig7x6, Nig7x6, Uig7x6; +wire Bjg7x6, Ijg7x6, Pjg7x6, Wjg7x6, Dkg7x6, Kkg7x6, Rkg7x6, Ykg7x6, Flg7x6, Mlg7x6; +wire Tlg7x6, Amg7x6, Hmg7x6, Omg7x6, Vmg7x6, Cng7x6, Jng7x6, Qng7x6, Xng7x6, Eog7x6; +wire Log7x6, Sog7x6, Zog7x6, Gpg7x6, Npg7x6, Upg7x6, Bqg7x6, Iqg7x6, Pqg7x6, Wqg7x6; +wire Drg7x6, Krg7x6, Rrg7x6, Yrg7x6, Fsg7x6, Msg7x6, Tsg7x6, Atg7x6, Htg7x6, Otg7x6; +wire Vtg7x6, Cug7x6, Jug7x6, Qug7x6, Xug7x6, Evg7x6, Lvg7x6, Svg7x6, Zvg7x6, Gwg7x6; +wire Nwg7x6, Uwg7x6, Bxg7x6, Ixg7x6, Pxg7x6, Wxg7x6, Dyg7x6, Kyg7x6, Ryg7x6, Yyg7x6; +wire Fzg7x6, Mzg7x6, Tzg7x6, A0h7x6, H0h7x6, O0h7x6, V0h7x6, C1h7x6, J1h7x6, Q1h7x6; +wire X1h7x6, E2h7x6, L2h7x6, S2h7x6, Z2h7x6, G3h7x6, N3h7x6, U3h7x6, B4h7x6, I4h7x6; +wire P4h7x6, W4h7x6, D5h7x6, K5h7x6, R5h7x6, Y5h7x6, F6h7x6, M6h7x6, T6h7x6, A7h7x6; +wire H7h7x6, O7h7x6, V7h7x6, C8h7x6, J8h7x6, Q8h7x6, X8h7x6, E9h7x6, L9h7x6, S9h7x6; +wire Z9h7x6, Gah7x6, Nah7x6, Uah7x6, Bbh7x6, Ibh7x6, Pbh7x6, Wbh7x6, Dch7x6, Kch7x6; +wire Rch7x6, Ych7x6, Fdh7x6, Mdh7x6, Tdh7x6, Aeh7x6, Heh7x6, Oeh7x6, Veh7x6, Cfh7x6; +wire Jfh7x6, Qfh7x6, Xfh7x6, Egh7x6, Lgh7x6, Sgh7x6, Zgh7x6, Ghh7x6, Nhh7x6, Uhh7x6; +wire Bih7x6, Iih7x6, Pih7x6, Wih7x6, Djh7x6, Kjh7x6, Rjh7x6, Yjh7x6, Fkh7x6, Mkh7x6; +wire Tkh7x6, Alh7x6, Hlh7x6, Olh7x6, Vlh7x6, Cmh7x6, Jmh7x6, Qmh7x6, Xmh7x6, Enh7x6; +wire Lnh7x6, Snh7x6, Znh7x6, Goh7x6, Noh7x6, Uoh7x6, Bph7x6, Iph7x6, Pph7x6, Wph7x6; +wire Dqh7x6, Kqh7x6, Rqh7x6, Yqh7x6, Frh7x6, Mrh7x6, Trh7x6, Ash7x6, Hsh7x6, Osh7x6; +wire Vsh7x6, Cth7x6, Jth7x6, Qth7x6, Xth7x6, Euh7x6, Luh7x6, Suh7x6, Zuh7x6, Gvh7x6; +wire Nvh7x6, Uvh7x6, Bwh7x6, Iwh7x6, Pwh7x6, Wwh7x6, Dxh7x6, Kxh7x6, Rxh7x6, Yxh7x6; +wire Fyh7x6, Myh7x6, Tyh7x6, Azh7x6, Hzh7x6, Ozh7x6, Vzh7x6, C0i7x6, J0i7x6, Q0i7x6; +wire X0i7x6, E1i7x6, L1i7x6, S1i7x6, Z1i7x6, G2i7x6, N2i7x6, U2i7x6, B3i7x6, I3i7x6; +wire P3i7x6, W3i7x6, D4i7x6, K4i7x6, R4i7x6, Y4i7x6, F5i7x6, M5i7x6, T5i7x6, A6i7x6; +wire H6i7x6, O6i7x6, V6i7x6, C7i7x6, J7i7x6, Q7i7x6, X7i7x6, E8i7x6, L8i7x6, S8i7x6; +wire Z8i7x6, G9i7x6, N9i7x6, U9i7x6, Bai7x6, Iai7x6, Pai7x6, Wai7x6, Dbi7x6, Kbi7x6; +wire Rbi7x6, Ybi7x6, Fci7x6, Mci7x6, Tci7x6, Adi7x6, Hdi7x6, Odi7x6, Vdi7x6, Cei7x6; +wire Jei7x6, Qei7x6, Xei7x6, Efi7x6, Lfi7x6, Sfi7x6, Zfi7x6, Ggi7x6, Ngi7x6, Ugi7x6; +wire Bhi7x6, Ihi7x6, Phi7x6, Whi7x6, Dii7x6, Kii7x6, Rii7x6, Yii7x6, Fji7x6, Mji7x6; +wire Tji7x6, Aki7x6, Hki7x6, Oki7x6, Vki7x6, Cli7x6, Jli7x6, Qli7x6, Xli7x6, Emi7x6; +wire Lmi7x6, Smi7x6, Zmi7x6, Gni7x6, Nni7x6, Uni7x6, Boi7x6, Ioi7x6, Poi7x6, Woi7x6; +wire Dpi7x6, Kpi7x6, Rpi7x6, Ypi7x6, Fqi7x6, Mqi7x6, Tqi7x6, Ari7x6, Hri7x6, Ori7x6; +wire Vri7x6, Csi7x6, Jsi7x6, Qsi7x6, Xsi7x6, Eti7x6, Lti7x6, Sti7x6, Zti7x6, Gui7x6; +wire Nui7x6, Uui7x6, Bvi7x6, Ivi7x6, Pvi7x6, Wvi7x6, Dwi7x6, Kwi7x6, Rwi7x6, Ywi7x6; +wire Fxi7x6, Mxi7x6, Txi7x6, Ayi7x6, Hyi7x6, Oyi7x6, Vyi7x6, Czi7x6, Jzi7x6, Qzi7x6; +wire Xzi7x6, E0j7x6, L0j7x6, S0j7x6, Z0j7x6, G1j7x6, N1j7x6, U1j7x6, B2j7x6, I2j7x6; +wire P2j7x6, W2j7x6, D3j7x6, K3j7x6, R3j7x6, Y3j7x6, F4j7x6, M4j7x6, T4j7x6, A5j7x6; +wire H5j7x6, O5j7x6, V5j7x6, C6j7x6, J6j7x6, Q6j7x6, X6j7x6, E7j7x6, L7j7x6, S7j7x6; +wire Z7j7x6, G8j7x6, N8j7x6, U8j7x6, B9j7x6, I9j7x6, P9j7x6, W9j7x6, Daj7x6, Kaj7x6; +wire Raj7x6, Yaj7x6, Fbj7x6, Mbj7x6, Tbj7x6, Acj7x6, Hcj7x6, Ocj7x6, Vcj7x6, Cdj7x6; +wire Jdj7x6, Qdj7x6, Xdj7x6, Eej7x6, Lej7x6, Sej7x6, Zej7x6, Gfj7x6, Nfj7x6, Ufj7x6; +wire Bgj7x6, Igj7x6, Pgj7x6, Wgj7x6, Dhj7x6, Khj7x6, Rhj7x6, Yhj7x6, Fij7x6, Mij7x6; +wire Tij7x6, Ajj7x6, Hjj7x6, Ojj7x6, Vjj7x6, Ckj7x6, Jkj7x6, Qkj7x6, Xkj7x6, Elj7x6; +wire Llj7x6, Slj7x6, Zlj7x6, Gmj7x6, Nmj7x6, Umj7x6, Bnj7x6, Inj7x6, Pnj7x6, Wnj7x6; +wire Doj7x6, Koj7x6, Roj7x6, Yoj7x6, Fpj7x6, Mpj7x6, Tpj7x6, Aqj7x6, Hqj7x6, Oqj7x6; +wire Vqj7x6, Crj7x6, Jrj7x6, Qrj7x6, Xrj7x6, Esj7x6, Lsj7x6, Ssj7x6, Zsj7x6, Gtj7x6; +wire Ntj7x6, Utj7x6, Buj7x6, Iuj7x6, Puj7x6, Wuj7x6, Dvj7x6, Kvj7x6, Rvj7x6, Yvj7x6; +wire Fwj7x6, Mwj7x6, Twj7x6, Axj7x6, Hxj7x6, Oxj7x6, Vxj7x6, Cyj7x6, Jyj7x6, Qyj7x6; +wire Xyj7x6, Ezj7x6, Lzj7x6, Szj7x6, Zzj7x6, G0k7x6, N0k7x6, U0k7x6, B1k7x6, I1k7x6; +wire P1k7x6, W1k7x6, D2k7x6, K2k7x6, R2k7x6, Y2k7x6, F3k7x6, M3k7x6, T3k7x6, A4k7x6; +wire H4k7x6, O4k7x6, V4k7x6, C5k7x6, J5k7x6, Q5k7x6, X5k7x6, E6k7x6, L6k7x6, S6k7x6; +wire Z6k7x6, G7k7x6, N7k7x6, U7k7x6, B8k7x6, I8k7x6, P8k7x6, W8k7x6, D9k7x6, K9k7x6; +wire R9k7x6, Y9k7x6, Fak7x6, Mak7x6, Tak7x6, Abk7x6, Hbk7x6, Obk7x6, Vbk7x6, Cck7x6; +wire Jck7x6, Qck7x6, Xck7x6, Edk7x6, Ldk7x6, Sdk7x6, Zdk7x6, Gek7x6, Nek7x6, Uek7x6; +wire Bfk7x6, Ifk7x6, Pfk7x6, Wfk7x6, Dgk7x6, Kgk7x6, Rgk7x6, Ygk7x6, Fhk7x6, Mhk7x6; +wire Thk7x6, Aik7x6, Hik7x6, Oik7x6, Vik7x6, Cjk7x6, Jjk7x6, Qjk7x6, Xjk7x6, Ekk7x6; +wire Lkk7x6, Skk7x6, Zkk7x6, Glk7x6, Nlk7x6, Ulk7x6, Bmk7x6, Imk7x6, Pmk7x6, Wmk7x6; +wire Dnk7x6, Knk7x6, Rnk7x6, Ynk7x6, Fok7x6, Mok7x6, Tok7x6, Apk7x6, Hpk7x6, Opk7x6; +wire Vpk7x6, Cqk7x6, Jqk7x6, Qqk7x6, Xqk7x6, Erk7x6, Lrk7x6, Srk7x6, Zrk7x6, Gsk7x6; +wire Nsk7x6, Usk7x6, Btk7x6, Itk7x6, Ptk7x6, Wtk7x6, Duk7x6, Kuk7x6, Ruk7x6, Yuk7x6; +wire Fvk7x6, Mvk7x6, Tvk7x6, Awk7x6, Hwk7x6, Owk7x6, Vwk7x6, Cxk7x6, Jxk7x6, Qxk7x6; +wire Xxk7x6, Eyk7x6, Lyk7x6, Syk7x6, Zyk7x6, Gzk7x6, Nzk7x6, Uzk7x6, B0l7x6, I0l7x6; +wire P0l7x6, W0l7x6, D1l7x6, K1l7x6, R1l7x6, Y1l7x6, F2l7x6, M2l7x6, T2l7x6, A3l7x6; +wire H3l7x6, O3l7x6, V3l7x6, C4l7x6, J4l7x6, Q4l7x6, X4l7x6, E5l7x6, L5l7x6, S5l7x6; +wire Z5l7x6, G6l7x6, N6l7x6, U6l7x6, B7l7x6, I7l7x6, P7l7x6, W7l7x6, D8l7x6, K8l7x6; +wire R8l7x6, Y8l7x6, F9l7x6, M9l7x6, T9l7x6, Aal7x6, Hal7x6, Oal7x6, Val7x6, Cbl7x6; +wire Jbl7x6, Qbl7x6, Xbl7x6, Ecl7x6, Lcl7x6, Scl7x6, Zcl7x6, Gdl7x6, Ndl7x6, Udl7x6; +wire Bel7x6, Iel7x6, Pel7x6, Wel7x6, Dfl7x6, Kfl7x6, Rfl7x6, Yfl7x6, Fgl7x6, Mgl7x6; +wire Tgl7x6, Ahl7x6, Hhl7x6, Ohl7x6, Vhl7x6, Cil7x6, Jil7x6, Qil7x6, Xil7x6, Ejl7x6; +wire Ljl7x6, Sjl7x6, Zjl7x6, Gkl7x6, Nkl7x6, Ukl7x6, Bll7x6, Ill7x6, Pll7x6, Wll7x6; +wire Dml7x6, Kml7x6, Rml7x6, Yml7x6, Fnl7x6, Mnl7x6, Tnl7x6, Aol7x6, Hol7x6, Ool7x6; +wire Vol7x6, Cpl7x6, Jpl7x6, Qpl7x6, Xpl7x6, Eql7x6, Lql7x6, Sql7x6, Zql7x6, Grl7x6; +wire Nrl7x6, Url7x6, Bsl7x6, Isl7x6, Psl7x6, Wsl7x6, Dtl7x6, Ktl7x6, Rtl7x6, Ytl7x6; +wire Ful7x6, Mul7x6, Tul7x6, Avl7x6, Hvl7x6, Ovl7x6, Vvl7x6, Cwl7x6, Jwl7x6, Qwl7x6; +wire Xwl7x6, Exl7x6, Lxl7x6, Sxl7x6, Zxl7x6, Gyl7x6, Nyl7x6, Uyl7x6, Bzl7x6, Izl7x6; +wire Pzl7x6, Wzl7x6, D0m7x6, K0m7x6, R0m7x6, Y0m7x6, F1m7x6, M1m7x6, T1m7x6, A2m7x6; +wire H2m7x6, O2m7x6, V2m7x6, C3m7x6, J3m7x6, Q3m7x6, X3m7x6, E4m7x6, L4m7x6, S4m7x6; +wire Z4m7x6, G5m7x6, N5m7x6, U5m7x6, B6m7x6, I6m7x6, P6m7x6, W6m7x6, D7m7x6, K7m7x6; +wire R7m7x6, Y7m7x6, F8m7x6, M8m7x6, T8m7x6, A9m7x6, H9m7x6, O9m7x6, V9m7x6, Cam7x6; +wire Jam7x6, Qam7x6, Xam7x6, Ebm7x6, Lbm7x6, Sbm7x6, Zbm7x6, Gcm7x6, Ncm7x6, Ucm7x6; +wire Bdm7x6, Idm7x6, Pdm7x6, Wdm7x6, Dem7x6, Kem7x6, Rem7x6, Yem7x6, Ffm7x6, Mfm7x6; +wire Tfm7x6, Agm7x6, Hgm7x6, Ogm7x6, Vgm7x6, Chm7x6, Jhm7x6, Qhm7x6, Xhm7x6, Eim7x6; +wire Lim7x6, Sim7x6, Zim7x6, Gjm7x6, Njm7x6, Ujm7x6, Bkm7x6, Ikm7x6, Pkm7x6, Wkm7x6; +wire Dlm7x6, Klm7x6, Rlm7x6, Ylm7x6, Fmm7x6, Mmm7x6, Tmm7x6, Anm7x6, Hnm7x6, Onm7x6; +wire Vnm7x6, Com7x6, Jom7x6, Qom7x6, Xom7x6, Epm7x6, Lpm7x6, Spm7x6, Zpm7x6, Gqm7x6; +wire Nqm7x6, Uqm7x6, Brm7x6, Irm7x6, Prm7x6, Wrm7x6, Dsm7x6, Ksm7x6, Rsm7x6, Ysm7x6; +wire Ftm7x6, Mtm7x6, Ttm7x6, Aum7x6, Hum7x6, Oum7x6, Vum7x6, Cvm7x6, Jvm7x6, Qvm7x6; +wire Xvm7x6, Ewm7x6, Lwm7x6, Swm7x6, Zwm7x6, Gxm7x6, Nxm7x6, Uxm7x6, Bym7x6, Iym7x6; +wire Pym7x6, Wym7x6, Dzm7x6, Kzm7x6, Rzm7x6, Yzm7x6, F0n7x6, M0n7x6, T0n7x6, A1n7x6; +wire H1n7x6, O1n7x6, V1n7x6, C2n7x6, J2n7x6, Q2n7x6, X2n7x6, E3n7x6, L3n7x6, S3n7x6; +wire Z3n7x6, G4n7x6, N4n7x6, U4n7x6, B5n7x6, I5n7x6, P5n7x6, W5n7x6, D6n7x6, K6n7x6; +wire R6n7x6, Y6n7x6, F7n7x6, M7n7x6, T7n7x6, A8n7x6, H8n7x6, O8n7x6, V8n7x6, C9n7x6; +wire J9n7x6, Q9n7x6, X9n7x6, Ean7x6, Lan7x6, San7x6, Zan7x6, Gbn7x6, Nbn7x6, Ubn7x6; +wire Bcn7x6, Icn7x6, Pcn7x6, Wcn7x6, Ddn7x6, Kdn7x6, Rdn7x6, Ydn7x6, Fen7x6, Men7x6; +wire Ten7x6, Afn7x6, Hfn7x6, Ofn7x6, Vfn7x6, Cgn7x6, Jgn7x6, Qgn7x6, Xgn7x6, Ehn7x6; +wire Lhn7x6, Shn7x6, Zhn7x6, Gin7x6, Nin7x6, Uin7x6, Bjn7x6, Ijn7x6, Pjn7x6, Wjn7x6; +wire Dkn7x6, Kkn7x6, Rkn7x6, Ykn7x6, Fln7x6, Mln7x6, Tln7x6, Amn7x6, Hmn7x6, Omn7x6; +wire Vmn7x6, Cnn7x6, Jnn7x6, Qnn7x6, Xnn7x6, Eon7x6, Lon7x6, Son7x6, Zon7x6, Gpn7x6; +wire Npn7x6, Upn7x6, Bqn7x6, Iqn7x6, Pqn7x6, Wqn7x6, Drn7x6, Krn7x6, Rrn7x6, Yrn7x6; +wire Fsn7x6, Msn7x6, Tsn7x6, Atn7x6, Htn7x6, Otn7x6, Vtn7x6, Cun7x6, Jun7x6, Qun7x6; +wire Xun7x6, Evn7x6, Lvn7x6, Svn7x6, Zvn7x6, Gwn7x6, Nwn7x6, Uwn7x6, Bxn7x6, Ixn7x6; +wire Pxn7x6, Wxn7x6, Dyn7x6, Kyn7x6, Ryn7x6, Yyn7x6, Fzn7x6, Mzn7x6, Tzn7x6, A0o7x6; +wire H0o7x6, O0o7x6, V0o7x6, C1o7x6, J1o7x6, Q1o7x6, X1o7x6, E2o7x6, L2o7x6, S2o7x6; +wire Z2o7x6, G3o7x6, N3o7x6, U3o7x6, B4o7x6, I4o7x6, P4o7x6, W4o7x6, D5o7x6, K5o7x6; +wire R5o7x6, Y5o7x6, F6o7x6, M6o7x6, T6o7x6, A7o7x6, H7o7x6, O7o7x6, V7o7x6, C8o7x6; +wire J8o7x6, Q8o7x6, X8o7x6, E9o7x6, L9o7x6, S9o7x6, Z9o7x6, Gao7x6, Nao7x6, Uao7x6; +wire Bbo7x6, Ibo7x6, Pbo7x6, Wbo7x6, Dco7x6, Kco7x6, Rco7x6, Yco7x6, Fdo7x6, Mdo7x6; +wire Tdo7x6, Aeo7x6, Heo7x6, Oeo7x6, Veo7x6, Cfo7x6, Jfo7x6, Qfo7x6, Xfo7x6, Ego7x6; +wire Lgo7x6, Sgo7x6, Zgo7x6, Gho7x6, Nho7x6, Uho7x6, Bio7x6, Iio7x6, Pio7x6, Wio7x6; +wire Djo7x6, Kjo7x6, Rjo7x6, Yjo7x6, Fko7x6, Mko7x6, Tko7x6, Alo7x6, Hlo7x6, Olo7x6; +wire Vlo7x6, Cmo7x6, Jmo7x6, Qmo7x6, Xmo7x6, Eno7x6, Lno7x6, Sno7x6, Zno7x6, Goo7x6; +wire Noo7x6, Uoo7x6, Bpo7x6, Ipo7x6, Ppo7x6, Wpo7x6, Dqo7x6, Kqo7x6, Rqo7x6, Yqo7x6; +wire Fro7x6, Mro7x6, Tro7x6, Aso7x6, Hso7x6, Oso7x6, Vso7x6, Cto7x6, Jto7x6, Qto7x6; +wire Xto7x6, Euo7x6, Luo7x6, Suo7x6, Zuo7x6, Gvo7x6, Nvo7x6, Uvo7x6, Bwo7x6, Iwo7x6; +wire Pwo7x6, Wwo7x6, Dxo7x6, Kxo7x6, Rxo7x6, Yxo7x6, Fyo7x6, Myo7x6, Tyo7x6, Azo7x6; +wire Hzo7x6, Ozo7x6, Vzo7x6, C0p7x6, J0p7x6, Q0p7x6, X0p7x6, E1p7x6, L1p7x6, S1p7x6; +wire Z1p7x6, G2p7x6, N2p7x6, U2p7x6, B3p7x6, I3p7x6, P3p7x6, W3p7x6, D4p7x6, K4p7x6; +wire R4p7x6, Y4p7x6, F5p7x6, M5p7x6, T5p7x6, A6p7x6, H6p7x6, O6p7x6, V6p7x6, C7p7x6; +wire J7p7x6, Q7p7x6, X7p7x6, E8p7x6, L8p7x6, S8p7x6, Z8p7x6, G9p7x6, N9p7x6, U9p7x6; +wire Bap7x6, Iap7x6, Pap7x6, Wap7x6, Dbp7x6, Kbp7x6, Rbp7x6, Ybp7x6, Fcp7x6, Mcp7x6; +wire Tcp7x6, Adp7x6, Hdp7x6, Odp7x6, Vdp7x6, Cep7x6, Jep7x6, Qep7x6, Xep7x6, Efp7x6; +wire Lfp7x6, Sfp7x6, Zfp7x6, Ggp7x6, Ngp7x6, Ugp7x6, Bhp7x6, Ihp7x6, Php7x6, Whp7x6; +wire Dip7x6, Kip7x6, Rip7x6, Yip7x6, Fjp7x6, Mjp7x6, Tjp7x6, Akp7x6, Hkp7x6, Okp7x6; +wire Vkp7x6, Clp7x6, Jlp7x6, Qlp7x6, Xlp7x6, Emp7x6, Lmp7x6, Smp7x6, Zmp7x6, Gnp7x6; +wire Nnp7x6, Unp7x6, Bop7x6, Iop7x6, Pop7x6, Wop7x6, Dpp7x6, Kpp7x6, Rpp7x6, Ypp7x6; +wire Fqp7x6, Mqp7x6, Tqp7x6, Arp7x6, Hrp7x6, Orp7x6, Vrp7x6, Csp7x6, Jsp7x6, Qsp7x6; +wire Xsp7x6, Etp7x6, Ltp7x6, Stp7x6, Ztp7x6, Gup7x6, Nup7x6, Uup7x6, Bvp7x6, Ivp7x6; +wire Pvp7x6, Wvp7x6, Dwp7x6, Kwp7x6, Rwp7x6, Ywp7x6, Fxp7x6, Mxp7x6, Txp7x6, Ayp7x6; +wire Hyp7x6, Oyp7x6, Vyp7x6, Czp7x6, Jzp7x6, Qzp7x6, Xzp7x6, E0q7x6, L0q7x6, S0q7x6; +wire Z0q7x6, G1q7x6, N1q7x6, U1q7x6, B2q7x6, I2q7x6, P2q7x6, W2q7x6, D3q7x6, K3q7x6; +wire R3q7x6, Y3q7x6, F4q7x6, M4q7x6, T4q7x6, A5q7x6, H5q7x6, O5q7x6, V5q7x6, C6q7x6; +wire J6q7x6, Q6q7x6, X6q7x6, E7q7x6, L7q7x6, S7q7x6, Z7q7x6, G8q7x6, N8q7x6, U8q7x6; +wire B9q7x6, I9q7x6, P9q7x6, W9q7x6, Daq7x6, Kaq7x6, Raq7x6, Yaq7x6, Fbq7x6, Mbq7x6; +wire Tbq7x6, Acq7x6, Hcq7x6, Ocq7x6, Vcq7x6, Cdq7x6, Jdq7x6, Qdq7x6, Xdq7x6, Eeq7x6; +wire Leq7x6, Seq7x6, Zeq7x6, Gfq7x6, Nfq7x6, Ufq7x6, Bgq7x6, Igq7x6, Pgq7x6, Wgq7x6; +wire Dhq7x6, Khq7x6, Rhq7x6, Yhq7x6, Fiq7x6, Miq7x6, Tiq7x6, Ajq7x6, Hjq7x6, Ojq7x6; +wire Vjq7x6, Ckq7x6, Jkq7x6, Qkq7x6, Xkq7x6, Elq7x6, Llq7x6, Slq7x6, Zlq7x6, Gmq7x6; +wire Nmq7x6, Umq7x6, Bnq7x6, Inq7x6, Pnq7x6, Wnq7x6, Doq7x6, Koq7x6, Roq7x6, Yoq7x6; +wire Fpq7x6, Mpq7x6, Tpq7x6, Aqq7x6, Hqq7x6, Oqq7x6, Vqq7x6, Crq7x6, Jrq7x6, Qrq7x6; +wire Xrq7x6, Esq7x6, Lsq7x6, Ssq7x6, Zsq7x6, Gtq7x6, Ntq7x6, Utq7x6, Buq7x6, Iuq7x6; +wire Puq7x6, Wuq7x6, Dvq7x6, Kvq7x6, Rvq7x6, Yvq7x6, Fwq7x6, Mwq7x6, Twq7x6, Axq7x6; +wire Hxq7x6, Oxq7x6, Vxq7x6, Cyq7x6, Jyq7x6, Qyq7x6, Xyq7x6, Ezq7x6, Lzq7x6, Szq7x6; +wire Zzq7x6, G0r7x6, N0r7x6, U0r7x6, B1r7x6, I1r7x6, P1r7x6, W1r7x6, D2r7x6, K2r7x6; +wire R2r7x6, Y2r7x6, F3r7x6, M3r7x6, T3r7x6, A4r7x6, H4r7x6, O4r7x6, V4r7x6, C5r7x6; +wire J5r7x6, Q5r7x6, X5r7x6, E6r7x6, L6r7x6, S6r7x6, Z6r7x6, G7r7x6, N7r7x6, U7r7x6; +wire B8r7x6, I8r7x6, P8r7x6, W8r7x6, D9r7x6, K9r7x6, R9r7x6, Y9r7x6, Far7x6, Mar7x6; +wire Tar7x6, Abr7x6, Hbr7x6, Obr7x6, Vbr7x6, Ccr7x6, Jcr7x6, Qcr7x6, Xcr7x6, Edr7x6; +wire Ldr7x6, Sdr7x6, Zdr7x6, Ger7x6, Ner7x6, Uer7x6, Bfr7x6, Ifr7x6, Pfr7x6, Wfr7x6; +wire Dgr7x6, Kgr7x6, Rgr7x6, Ygr7x6, Fhr7x6, Mhr7x6, Thr7x6, Air7x6, Hir7x6, Oir7x6; +wire Vir7x6, Cjr7x6, Jjr7x6, Qjr7x6, Xjr7x6, Ekr7x6, Lkr7x6, Skr7x6, Zkr7x6, Glr7x6; +wire Nlr7x6, Ulr7x6, Bmr7x6, Imr7x6, Pmr7x6, Wmr7x6, Dnr7x6, Knr7x6, Rnr7x6, Ynr7x6; +wire For7x6, Mor7x6, Tor7x6, Apr7x6, Hpr7x6, Opr7x6, Vpr7x6, Cqr7x6, Jqr7x6, Qqr7x6; +wire Xqr7x6, Err7x6, Lrr7x6, Srr7x6, Zrr7x6, Gsr7x6, Nsr7x6, Usr7x6, Btr7x6, Itr7x6; +wire Ptr7x6, Wtr7x6, Dur7x6, Kur7x6, Rur7x6, Yur7x6, Fvr7x6, Mvr7x6, Tvr7x6, Awr7x6; +wire Hwr7x6, Owr7x6, Vwr7x6, Cxr7x6, Jxr7x6, Qxr7x6, Xxr7x6, Eyr7x6, Lyr7x6, Syr7x6; +wire Zyr7x6, Gzr7x6, Nzr7x6, Uzr7x6, B0s7x6, I0s7x6, P0s7x6, W0s7x6, D1s7x6, K1s7x6; +wire R1s7x6, Y1s7x6, F2s7x6, M2s7x6, T2s7x6, A3s7x6, H3s7x6, O3s7x6, V3s7x6, C4s7x6; +wire J4s7x6, Q4s7x6, X4s7x6, E5s7x6, L5s7x6, S5s7x6, Z5s7x6, G6s7x6, N6s7x6, U6s7x6; +wire B7s7x6, I7s7x6, P7s7x6, W7s7x6, D8s7x6, K8s7x6, R8s7x6, Y8s7x6, F9s7x6, M9s7x6; +wire T9s7x6, Aas7x6, Has7x6, Oas7x6, Vas7x6, Cbs7x6, Jbs7x6, Qbs7x6, Xbs7x6, Ecs7x6; +wire Lcs7x6, Scs7x6, Zcs7x6, Gds7x6, Nds7x6, Uds7x6, Bes7x6, Ies7x6, Pes7x6, Wes7x6; +wire Dfs7x6, Kfs7x6, Rfs7x6, Yfs7x6, Fgs7x6, Mgs7x6, Tgs7x6, Ahs7x6, Hhs7x6, Ohs7x6; +wire Vhs7x6, Cis7x6, Jis7x6, Qis7x6, Xis7x6, Ejs7x6, Ljs7x6, Sjs7x6, Zjs7x6, Gks7x6; +wire Nks7x6, Uks7x6, Bls7x6, Ils7x6, Pls7x6, Wls7x6, Dms7x6, Kms7x6, Rms7x6, Yms7x6; +wire Fns7x6, Mns7x6, Tns7x6, Aos7x6, Hos7x6, Oos7x6, Vos7x6, Cps7x6, Jps7x6, Qps7x6; +wire Xps7x6, Eqs7x6, Lqs7x6, Sqs7x6, Zqs7x6, Grs7x6, Nrs7x6, Urs7x6, Bss7x6, Iss7x6; +wire Pss7x6, Wss7x6, Dts7x6, Kts7x6, Rts7x6, Yts7x6, Fus7x6, Mus7x6, Tus7x6, Avs7x6; +wire Hvs7x6, Ovs7x6, Vvs7x6, Cws7x6, Jws7x6, Qws7x6, Xws7x6, Exs7x6, Lxs7x6, Sxs7x6; +wire Zxs7x6, Gys7x6, Nys7x6, Uys7x6, Bzs7x6, Izs7x6, Pzs7x6, Wzs7x6, D0t7x6, K0t7x6; +wire R0t7x6, Y0t7x6, F1t7x6, M1t7x6, T1t7x6, A2t7x6, H2t7x6, O2t7x6, V2t7x6, C3t7x6; +wire J3t7x6, Q3t7x6, X3t7x6, E4t7x6, L4t7x6, S4t7x6, Z4t7x6, G5t7x6, N5t7x6, U5t7x6; +wire B6t7x6, I6t7x6, P6t7x6, W6t7x6, D7t7x6, K7t7x6, R7t7x6, Y7t7x6, F8t7x6, M8t7x6; +wire T8t7x6, A9t7x6, H9t7x6, O9t7x6, V9t7x6, Cat7x6, Jat7x6, Qat7x6, Xat7x6, Ebt7x6; +wire Lbt7x6, Sbt7x6, Zbt7x6, Gct7x6, Nct7x6, Uct7x6, Bdt7x6, Idt7x6, Pdt7x6, Wdt7x6; +wire Det7x6, Ket7x6, Ret7x6, Yet7x6, Fft7x6, Mft7x6, Tft7x6, Agt7x6, Hgt7x6, Ogt7x6; +wire Vgt7x6, Cht7x6, Jht7x6, Qht7x6, Xht7x6, Eit7x6, Lit7x6, Sit7x6, Zit7x6, Gjt7x6; +wire Njt7x6, Ujt7x6, Bkt7x6, Ikt7x6, Pkt7x6, Wkt7x6, Dlt7x6, Klt7x6, Rlt7x6, Ylt7x6; +wire Fmt7x6, Mmt7x6, Tmt7x6, Ant7x6, Hnt7x6, Ont7x6, Vnt7x6, Cot7x6, Jot7x6, Qot7x6; +wire Xot7x6, Ept7x6, Lpt7x6, Spt7x6, Zpt7x6, Gqt7x6, Nqt7x6, Uqt7x6, Brt7x6, Irt7x6; +wire Prt7x6, Wrt7x6, Dst7x6, Kst7x6, Rst7x6, Yst7x6, Ftt7x6, Mtt7x6, Ttt7x6, Aut7x6; +wire Hut7x6, Out7x6, Vut7x6, Cvt7x6, Jvt7x6, Qvt7x6, Xvt7x6, Ewt7x6, Lwt7x6, Swt7x6; +wire Zwt7x6, Gxt7x6, Nxt7x6, Uxt7x6, Byt7x6, Iyt7x6, Pyt7x6, Wyt7x6, Dzt7x6, Kzt7x6; +wire Rzt7x6, Yzt7x6, F0u7x6, M0u7x6, T0u7x6, A1u7x6, H1u7x6, O1u7x6, V1u7x6, C2u7x6; +wire J2u7x6, Q2u7x6, X2u7x6, E3u7x6, L3u7x6, S3u7x6, Z3u7x6, G4u7x6, N4u7x6, U4u7x6; +wire B5u7x6, I5u7x6, P5u7x6, W5u7x6, D6u7x6, K6u7x6, R6u7x6, Y6u7x6, F7u7x6, M7u7x6; +wire T7u7x6, A8u7x6, H8u7x6, O8u7x6, V8u7x6, C9u7x6, J9u7x6, Q9u7x6, X9u7x6, Eau7x6; +wire Lau7x6, Sau7x6, Zau7x6, Gbu7x6, Nbu7x6, Ubu7x6, Bcu7x6, Icu7x6, Pcu7x6, Wcu7x6; +wire Ddu7x6, Kdu7x6, Rdu7x6, Ydu7x6, Feu7x6, Meu7x6, Teu7x6, Afu7x6, Hfu7x6, Ofu7x6; +wire Vfu7x6, Cgu7x6, Jgu7x6, Qgu7x6, Xgu7x6, Ehu7x6, Lhu7x6, Shu7x6, Zhu7x6, Giu7x6; +wire Niu7x6, Uiu7x6, Bju7x6, Iju7x6, Pju7x6, Wju7x6, Dku7x6, Kku7x6, Rku7x6, Yku7x6; +wire Flu7x6, Mlu7x6, Tlu7x6, Amu7x6, Hmu7x6, Omu7x6, Vmu7x6, Cnu7x6, Jnu7x6, Qnu7x6; +wire Xnu7x6, Eou7x6, Lou7x6, Sou7x6, Zou7x6, Gpu7x6, Npu7x6, Upu7x6, Bqu7x6, Iqu7x6; +wire Pqu7x6, Wqu7x6, Dru7x6, Kru7x6, Rru7x6, Yru7x6, Fsu7x6, Msu7x6, Tsu7x6, Atu7x6; +wire Htu7x6, Otu7x6, Vtu7x6, Cuu7x6, Juu7x6, Quu7x6, Xuu7x6, Evu7x6, Lvu7x6, Svu7x6; +wire Zvu7x6, Gwu7x6, Nwu7x6, Uwu7x6, Bxu7x6, Ixu7x6, Pxu7x6, Wxu7x6, Dyu7x6, Kyu7x6; +wire Ryu7x6, Yyu7x6, Fzu7x6, Mzu7x6, Tzu7x6, A0v7x6, H0v7x6, O0v7x6, V0v7x6, C1v7x6; +wire J1v7x6, Q1v7x6, X1v7x6, E2v7x6, L2v7x6, S2v7x6, Z2v7x6, G3v7x6, N3v7x6, U3v7x6; +wire B4v7x6, I4v7x6, P4v7x6, W4v7x6, D5v7x6, K5v7x6, R5v7x6, Y5v7x6, F6v7x6, M6v7x6; +wire T6v7x6, A7v7x6, H7v7x6, O7v7x6, V7v7x6, C8v7x6, J8v7x6, Q8v7x6, X8v7x6, E9v7x6; +wire L9v7x6, S9v7x6, Z9v7x6, Gav7x6, Nav7x6, Uav7x6, Bbv7x6, Ibv7x6, Pbv7x6, Wbv7x6; +wire Dcv7x6, Kcv7x6, Rcv7x6, Ycv7x6, Fdv7x6, Mdv7x6, Tdv7x6, Aev7x6, Hev7x6, Oev7x6; +wire Vev7x6, Cfv7x6, Jfv7x6, Qfv7x6, Xfv7x6, Egv7x6, Lgv7x6, Sgv7x6, Zgv7x6, Ghv7x6; +wire Nhv7x6, Uhv7x6, Biv7x6, Iiv7x6, Piv7x6, Wiv7x6, Djv7x6, Kjv7x6, Rjv7x6, Yjv7x6; +wire Fkv7x6, Mkv7x6, Tkv7x6, Alv7x6, Hlv7x6, Olv7x6, Vlv7x6, Cmv7x6, Jmv7x6, Qmv7x6; +wire Xmv7x6, Env7x6, Lnv7x6, Snv7x6, Znv7x6, Gov7x6, Nov7x6, Uov7x6, Bpv7x6, Ipv7x6; +wire Ppv7x6, Wpv7x6, Dqv7x6, Kqv7x6, Rqv7x6, Yqv7x6, Frv7x6, Mrv7x6, Trv7x6, Asv7x6; +wire Hsv7x6, Osv7x6, Vsv7x6, Ctv7x6, Jtv7x6, Qtv7x6, Xtv7x6, Euv7x6, Luv7x6, Suv7x6; +wire Zuv7x6, Gvv7x6, Nvv7x6, Uvv7x6, Bwv7x6, Iwv7x6, Pwv7x6, Wwv7x6, Dxv7x6, Kxv7x6; +wire Rxv7x6, Yxv7x6, Fyv7x6, Myv7x6, Tyv7x6, Azv7x6, Hzv7x6, Ozv7x6, Vzv7x6, C0w7x6; +wire J0w7x6, Q0w7x6, X0w7x6, E1w7x6, L1w7x6, S1w7x6, Z1w7x6, G2w7x6, N2w7x6, U2w7x6; +wire B3w7x6, I3w7x6, P3w7x6, W3w7x6, D4w7x6, K4w7x6, R4w7x6, Y4w7x6, F5w7x6, M5w7x6; +wire T5w7x6, A6w7x6, H6w7x6, O6w7x6, V6w7x6, C7w7x6, J7w7x6, Q7w7x6, X7w7x6, E8w7x6; +wire L8w7x6, S8w7x6, Z8w7x6, G9w7x6, N9w7x6, U9w7x6, Baw7x6, Iaw7x6, Paw7x6, Waw7x6; +wire Dbw7x6, Kbw7x6, Rbw7x6, Ybw7x6, Fcw7x6, Mcw7x6, Tcw7x6, Adw7x6, Hdw7x6, Odw7x6; +wire Vdw7x6, Cew7x6, Jew7x6, Qew7x6, Xew7x6, Efw7x6, Lfw7x6, Sfw7x6, Zfw7x6, Ggw7x6; +wire Ngw7x6, Ugw7x6, Bhw7x6, Ihw7x6, Phw7x6, Whw7x6, Diw7x6, Kiw7x6, Riw7x6, Yiw7x6; +wire Fjw7x6, Mjw7x6, Tjw7x6, Akw7x6, Hkw7x6, Okw7x6, Vkw7x6, Clw7x6, Jlw7x6, Qlw7x6; +wire Xlw7x6, Emw7x6, Lmw7x6, Smw7x6, Zmw7x6, Gnw7x6, Nnw7x6, Unw7x6, Bow7x6, Iow7x6; +wire Pow7x6, Wow7x6, Dpw7x6, Kpw7x6, Rpw7x6, Ypw7x6, Fqw7x6, Mqw7x6, Tqw7x6, Arw7x6; +wire Hrw7x6, Orw7x6, Vrw7x6, Csw7x6, Jsw7x6, Qsw7x6, Xsw7x6, Etw7x6, Ltw7x6, Stw7x6; +wire Ztw7x6, Guw7x6, Nuw7x6, Uuw7x6, Bvw7x6, Ivw7x6, Pvw7x6, Wvw7x6, Dww7x6, Kww7x6; +wire Rww7x6, Yww7x6, Fxw7x6, Mxw7x6, Txw7x6, Ayw7x6, Hyw7x6, Oyw7x6, Vyw7x6, Czw7x6; +wire Jzw7x6, Qzw7x6, Xzw7x6, E0x7x6, L0x7x6, S0x7x6, Z0x7x6, G1x7x6, N1x7x6, U1x7x6; +wire B2x7x6, I2x7x6, P2x7x6, W2x7x6, D3x7x6, K3x7x6, R3x7x6, Y3x7x6, F4x7x6, M4x7x6; +wire T4x7x6, A5x7x6, H5x7x6, O5x7x6, V5x7x6, C6x7x6, J6x7x6, Q6x7x6, X6x7x6, E7x7x6; +wire L7x7x6, S7x7x6, Z7x7x6, G8x7x6, N8x7x6, U8x7x6, B9x7x6, I9x7x6, P9x7x6, W9x7x6; +wire Dax7x6, Kax7x6, Rax7x6, Yax7x6, Fbx7x6, Mbx7x6, Tbx7x6, Acx7x6, Hcx7x6, Ocx7x6; +wire Vcx7x6, Cdx7x6, Jdx7x6, Qdx7x6, Xdx7x6, Eex7x6, Lex7x6, Sex7x6, Zex7x6, Gfx7x6; +wire Nfx7x6, Ufx7x6, Bgx7x6, Igx7x6, Pgx7x6, Wgx7x6, Dhx7x6, Khx7x6, Rhx7x6, Yhx7x6; +wire Fix7x6, Mix7x6, Tix7x6, Ajx7x6, Hjx7x6, Ojx7x6, Vjx7x6, Ckx7x6, Jkx7x6, Qkx7x6; +wire Xkx7x6, Elx7x6, Llx7x6, Slx7x6, Zlx7x6, Gmx7x6, Nmx7x6, Umx7x6, Bnx7x6, Inx7x6; +wire Pnx7x6, Wnx7x6, Dox7x6, Kox7x6, Rox7x6, Yox7x6, Fpx7x6, Mpx7x6, Tpx7x6, Aqx7x6; +wire Hqx7x6, Oqx7x6, Vqx7x6, Crx7x6, Jrx7x6, Qrx7x6, Xrx7x6, Esx7x6, Lsx7x6, Ssx7x6; +wire Zsx7x6, Gtx7x6, Ntx7x6, Utx7x6, Bux7x6, Iux7x6, Pux7x6, Wux7x6, Dvx7x6, Kvx7x6; +wire Rvx7x6, Yvx7x6, Fwx7x6, Mwx7x6, Twx7x6, Axx7x6, Hxx7x6, Oxx7x6, Vxx7x6, Cyx7x6; +wire Jyx7x6, Qyx7x6, Xyx7x6, Ezx7x6, Lzx7x6, Szx7x6, Zzx7x6, G0y7x6, N0y7x6, U0y7x6; +wire B1y7x6, I1y7x6, P1y7x6, W1y7x6, D2y7x6, K2y7x6, R2y7x6, Y2y7x6, F3y7x6, M3y7x6; +wire T3y7x6, A4y7x6, H4y7x6, O4y7x6, V4y7x6, C5y7x6, J5y7x6, Q5y7x6, X5y7x6, E6y7x6; +wire L6y7x6, S6y7x6, Z6y7x6, G7y7x6, N7y7x6, U7y7x6, B8y7x6, I8y7x6, P8y7x6, W8y7x6; +wire D9y7x6, K9y7x6, R9y7x6, Y9y7x6, Fay7x6, May7x6, Tay7x6, Aby7x6, Hby7x6, Oby7x6; +wire Vby7x6, Ccy7x6, Jcy7x6, Qcy7x6, Xcy7x6, Edy7x6, Ldy7x6, Sdy7x6, Zdy7x6, Gey7x6; +wire Ney7x6, Uey7x6, Bfy7x6, Ify7x6, Pfy7x6, Wfy7x6, Dgy7x6, Kgy7x6, Rgy7x6, Ygy7x6; +wire Fhy7x6, Mhy7x6, Thy7x6, Aiy7x6, Hiy7x6, Oiy7x6, Viy7x6, Cjy7x6, Jjy7x6, Qjy7x6; +wire Xjy7x6, Eky7x6, Lky7x6, Sky7x6, Zky7x6, Gly7x6, Nly7x6, Uly7x6, Bmy7x6, Imy7x6; +wire Pmy7x6, Wmy7x6, Dny7x6, Kny7x6, Rny7x6, Yny7x6, Foy7x6, Moy7x6, Toy7x6, Apy7x6; +wire Hpy7x6, Opy7x6, Vpy7x6, Cqy7x6, Jqy7x6, Qqy7x6, Xqy7x6, Ery7x6, Lry7x6, Sry7x6; +wire Zry7x6, Gsy7x6, Nsy7x6, Usy7x6, Bty7x6, Ity7x6, Pty7x6, Wty7x6, Duy7x6, Kuy7x6; +wire Ruy7x6, Yuy7x6, Fvy7x6, Mvy7x6, Tvy7x6, Awy7x6, Hwy7x6, Owy7x6, Vwy7x6, Cxy7x6; +wire Jxy7x6, Qxy7x6, Xxy7x6, Eyy7x6, Lyy7x6, Syy7x6, Zyy7x6, Gzy7x6, Nzy7x6, Uzy7x6; +wire B0z7x6, I0z7x6, P0z7x6, W0z7x6, D1z7x6, K1z7x6, R1z7x6, Y1z7x6, F2z7x6, M2z7x6; +wire T2z7x6, A3z7x6, H3z7x6, O3z7x6, V3z7x6, C4z7x6, J4z7x6, Q4z7x6, X4z7x6, E5z7x6; +wire L5z7x6, S5z7x6, Z5z7x6, G6z7x6, N6z7x6, U6z7x6, B7z7x6, I7z7x6, P7z7x6, W7z7x6; +wire D8z7x6, K8z7x6, R8z7x6, Y8z7x6, F9z7x6, M9z7x6, T9z7x6, Aaz7x6, Haz7x6, Oaz7x6; +wire Vaz7x6, Cbz7x6, Jbz7x6, Qbz7x6, Xbz7x6, Ecz7x6, Lcz7x6, Scz7x6, Zcz7x6, Gdz7x6; +wire Ndz7x6, Udz7x6, Bez7x6, Iez7x6, Pez7x6, Wez7x6, Dfz7x6, Kfz7x6, Rfz7x6, Yfz7x6; +wire Fgz7x6, Mgz7x6, Tgz7x6, Ahz7x6, Hhz7x6, Ohz7x6, Vhz7x6, Ciz7x6, Jiz7x6, Qiz7x6; +wire Xiz7x6, Ejz7x6, Ljz7x6, Sjz7x6, Zjz7x6, Gkz7x6, Nkz7x6, Ukz7x6, Blz7x6, Ilz7x6; +wire Plz7x6, Wlz7x6, Dmz7x6, Kmz7x6, Rmz7x6, Ymz7x6, Fnz7x6, Mnz7x6, Tnz7x6, Aoz7x6; +wire Hoz7x6, Ooz7x6, Voz7x6, Cpz7x6, Jpz7x6, Qpz7x6, Xpz7x6, Eqz7x6, Lqz7x6, Sqz7x6; +wire Zqz7x6, Grz7x6, Nrz7x6, Urz7x6, Bsz7x6, Isz7x6, Psz7x6, Wsz7x6, Dtz7x6, Ktz7x6; +wire Rtz7x6, Ytz7x6, Fuz7x6, Muz7x6, Tuz7x6, Avz7x6, Hvz7x6, Ovz7x6, Vvz7x6, Cwz7x6; +wire Jwz7x6, Qwz7x6, Xwz7x6, Exz7x6, Lxz7x6, Sxz7x6, Zxz7x6, Gyz7x6, Nyz7x6, Uyz7x6; +wire Bzz7x6, Izz7x6, Pzz7x6, Wzz7x6, D008x6, K008x6, R008x6, Y008x6, F108x6, M108x6; +wire T108x6, A208x6, H208x6, O208x6, V208x6, C308x6, J308x6, Q308x6, X308x6, E408x6; +wire L408x6, S408x6, Z408x6, G508x6, N508x6, U508x6, B608x6, I608x6, P608x6, W608x6; +wire D708x6, K708x6, R708x6, Y708x6, F808x6, M808x6, T808x6, A908x6, H908x6, O908x6; +wire V908x6, Ca08x6, Ja08x6, Qa08x6, Xa08x6, Eb08x6, Lb08x6, Sb08x6, Zb08x6, Gc08x6; +wire Nc08x6, Uc08x6, Bd08x6, Id08x6, Pd08x6, Wd08x6, De08x6, Ke08x6, Re08x6, Ye08x6; +wire Ff08x6, Mf08x6, Tf08x6, Ag08x6, Hg08x6, Og08x6, Vg08x6, Ch08x6, Jh08x6, Qh08x6; +wire Xh08x6, Ei08x6, Li08x6, Si08x6, Zi08x6, Gj08x6, Nj08x6, Uj08x6, Bk08x6, Ik08x6; +wire Pk08x6, Wk08x6, Dl08x6, Kl08x6, Rl08x6, Yl08x6, Fm08x6, Mm08x6, Tm08x6, An08x6; +wire Hn08x6, On08x6, Vn08x6, Co08x6, Jo08x6, Qo08x6, Xo08x6, Ep08x6, Lp08x6, Sp08x6; +wire Zp08x6, Gq08x6, Nq08x6, Uq08x6, Br08x6, Ir08x6, Pr08x6, Wr08x6, Ds08x6, Ks08x6; +wire Rs08x6, Ys08x6, Ft08x6, Mt08x6, Tt08x6, Au08x6, Hu08x6, Ou08x6, Vu08x6, Cv08x6; +wire Jv08x6, Qv08x6, Xv08x6, Ew08x6, Lw08x6, Sw08x6, Zw08x6, Gx08x6, Nx08x6, Ux08x6; +wire By08x6, Iy08x6, Py08x6, Wy08x6, Dz08x6, Kz08x6, Rz08x6, Yz08x6, F018x6, M018x6; +wire T018x6, A118x6, H118x6, O118x6, V118x6, C218x6, J218x6, Q218x6, X218x6, E318x6; +wire L318x6, S318x6, Z318x6, G418x6, N418x6, U418x6, B518x6, I518x6, P518x6, W518x6; +wire D618x6, K618x6, R618x6, Y618x6, F718x6, M718x6, T718x6, A818x6, H818x6, O818x6; +wire V818x6, C918x6, J918x6, Q918x6, X918x6, Ea18x6, La18x6, Sa18x6, Za18x6, Gb18x6; +wire Nb18x6, Ub18x6, Bc18x6, Ic18x6, Pc18x6, Wc18x6, Dd18x6, Kd18x6, Rd18x6, Yd18x6; +wire Fe18x6, Me18x6, Te18x6, Af18x6, Hf18x6, Of18x6, Vf18x6, Cg18x6, Jg18x6, Qg18x6; +wire Xg18x6, Eh18x6, Lh18x6, Sh18x6, Zh18x6, Gi18x6, Ni18x6, Ui18x6, Bj18x6, Ij18x6; +wire Pj18x6, Wj18x6, Dk18x6, Kk18x6, Rk18x6, Yk18x6, Fl18x6, Ml18x6, Tl18x6, Am18x6; +wire Hm18x6, Om18x6, Vm18x6, Cn18x6, Jn18x6, Qn18x6, Xn18x6, Eo18x6, Lo18x6, So18x6; +wire Zo18x6, Gp18x6, Np18x6, Up18x6, Bq18x6, Iq18x6, Pq18x6, Wq18x6, Dr18x6, Kr18x6; +wire Rr18x6, Yr18x6, Fs18x6, Ms18x6, Ts18x6, At18x6, Ht18x6, Ot18x6, Vt18x6, Cu18x6; +wire Ju18x6, Qu18x6, Xu18x6, Ev18x6, Lv18x6, Sv18x6, Zv18x6, Gw18x6, Nw18x6, Uw18x6; +wire Bx18x6, Ix18x6, Px18x6, Wx18x6, Dy18x6, Ky18x6, Ry18x6, Yy18x6, Fz18x6, Mz18x6; +wire Tz18x6, A028x6, H028x6, O028x6, V028x6, C128x6, J128x6, Q128x6, X128x6, E228x6; +wire L228x6, S228x6, Z228x6, G328x6, N328x6, U328x6, B428x6, I428x6, P428x6, W428x6; +wire D528x6, K528x6, R528x6, Y528x6, F628x6, M628x6, T628x6, A728x6, H728x6, O728x6; +wire V728x6, C828x6, J828x6, Q828x6, X828x6, E928x6, L928x6, S928x6, Z928x6, Ga28x6; +wire Na28x6, Ua28x6, Bb28x6, Ib28x6, Pb28x6, Wb28x6, Dc28x6, Kc28x6, Rc28x6, Yc28x6; +wire Fd28x6, Md28x6, Td28x6, Ae28x6, He28x6, Oe28x6, Ve28x6, Cf28x6, Jf28x6, Qf28x6; +wire Xf28x6, Eg28x6, Lg28x6, Sg28x6, Zg28x6, Gh28x6, Nh28x6, Uh28x6, Bi28x6, Ii28x6; +wire Pi28x6, Wi28x6, Dj28x6, Kj28x6, Rj28x6, Yj28x6, Fk28x6, Mk28x6, Tk28x6, Al28x6; +wire Hl28x6, Ol28x6, Vl28x6, Cm28x6, Jm28x6, Qm28x6, Xm28x6, En28x6, Ln28x6, Sn28x6; +wire Zn28x6, Go28x6, No28x6, Uo28x6, Bp28x6, Ip28x6, Pp28x6, Wp28x6, Dq28x6, Kq28x6; +wire Rq28x6, Yq28x6, Fr28x6, Mr28x6, Tr28x6, As28x6, Hs28x6, Os28x6, Vs28x6, Ct28x6; +wire Jt28x6, Qt28x6, Xt28x6, Eu28x6, Lu28x6, Su28x6, Zu28x6, Gv28x6, Nv28x6, Uv28x6; +wire Bw28x6, Iw28x6, Pw28x6, Ww28x6, Dx28x6, Kx28x6, Rx28x6, Yx28x6, Fy28x6, My28x6; +wire Ty28x6, Az28x6, Hz28x6, Oz28x6, Vz28x6, C038x6, J038x6, Q038x6, X038x6, E138x6; +wire L138x6, S138x6, Z138x6, G238x6, N238x6, U238x6, B338x6, I338x6, P338x6, W338x6; +wire D438x6, K438x6, R438x6, Y438x6, F538x6, M538x6, T538x6, A638x6, H638x6, O638x6; +wire V638x6, C738x6, J738x6, Q738x6, X738x6, E838x6, L838x6, S838x6, Z838x6, G938x6; +wire N938x6, U938x6, Ba38x6, Ia38x6, Pa38x6, Wa38x6, Db38x6, Kb38x6, Rb38x6, Yb38x6; +wire Fc38x6, Mc38x6, Tc38x6, Ad38x6, Hd38x6, Od38x6, Vd38x6, Ce38x6, Je38x6, Qe38x6; +wire Xe38x6, Ef38x6, Lf38x6, Sf38x6, Zf38x6, Gg38x6, Ng38x6, Ug38x6, Bh38x6, Ih38x6; +wire Ph38x6, Wh38x6, Di38x6, Ki38x6, Ri38x6, Yi38x6, Fj38x6, Mj38x6, Tj38x6, Ak38x6; +wire Hk38x6, Ok38x6, Vk38x6, Cl38x6, Jl38x6, Ql38x6, Xl38x6, Em38x6, Lm38x6, Sm38x6; +wire Zm38x6, Gn38x6, Nn38x6, Un38x6, Bo38x6, Io38x6, Po38x6, Wo38x6, Dp38x6, Kp38x6; +wire Rp38x6, Yp38x6, Fq38x6, Mq38x6, Tq38x6, Ar38x6, Hr38x6, Or38x6, Vr38x6, Cs38x6; +wire Js38x6, Qs38x6, Xs38x6, Et38x6, Lt38x6, St38x6, Zt38x6, Gu38x6, Nu38x6, Uu38x6; +wire Bv38x6, Iv38x6, Pv38x6, Wv38x6, Dw38x6, Kw38x6, Rw38x6, Yw38x6, Fx38x6, Mx38x6; +wire Tx38x6, Ay38x6, Hy38x6, Oy38x6, Vy38x6, Cz38x6, Jz38x6, Qz38x6, Xz38x6, E048x6; +wire L048x6, S048x6, Z048x6, G148x6, N148x6, U148x6, B248x6, I248x6, P248x6, W248x6; +wire D348x6, K348x6, R348x6, Y348x6, F448x6, M448x6, T448x6, A548x6, H548x6, O548x6; +wire V548x6, C648x6, J648x6, Q648x6, X648x6, E748x6, L748x6, S748x6, Z748x6, G848x6; +wire N848x6, U848x6, B948x6, I948x6, P948x6, W948x6, Da48x6, Ka48x6, Ra48x6, Ya48x6; +wire Fb48x6, Mb48x6, Tb48x6, Ac48x6, Hc48x6, Oc48x6, Vc48x6, Cd48x6, Jd48x6, Qd48x6; +wire Xd48x6, Ee48x6, Le48x6, Se48x6, Ze48x6, Gf48x6, Nf48x6, Uf48x6, Bg48x6, Ig48x6; +wire Pg48x6, Wg48x6, Dh48x6, Kh48x6, Rh48x6, Yh48x6, Fi48x6, Mi48x6, Ti48x6, Aj48x6; +wire Hj48x6, Oj48x6, Vj48x6, Ck48x6, Jk48x6, Qk48x6, Xk48x6, El48x6, Ll48x6, Sl48x6; +wire Zl48x6, Gm48x6, Nm48x6, Um48x6, Bn48x6, In48x6, Pn48x6, Wn48x6, Do48x6, Ko48x6; +wire Ro48x6, Yo48x6, Fp48x6, Mp48x6, Tp48x6, Aq48x6, Hq48x6, Oq48x6, Vq48x6, Cr48x6; +wire Jr48x6, Qr48x6, Xr48x6, Es48x6, Ls48x6, Ss48x6, Zs48x6, Gt48x6, Nt48x6, Ut48x6; +wire Bu48x6, Iu48x6, Pu48x6, Wu48x6, Dv48x6, Kv48x6, Rv48x6, Yv48x6, Fw48x6, Mw48x6; +wire Tw48x6, Ax48x6, Hx48x6, Ox48x6, Vx48x6, Cy48x6, Jy48x6, Qy48x6, Xy48x6, Ez48x6; +wire Lz48x6, Sz48x6, Zz48x6, G058x6, N058x6, U058x6, B158x6, I158x6, P158x6, W158x6; +wire D258x6, K258x6, R258x6, Y258x6, F358x6, M358x6, T358x6, A458x6, H458x6, O458x6; +wire V458x6, C558x6, J558x6, Q558x6, X558x6, E658x6, L658x6, S658x6, Z658x6, G758x6; +wire N758x6, U758x6, B858x6, I858x6, P858x6, W858x6, D958x6, K958x6, R958x6, Y958x6; +wire Fa58x6, Ma58x6, Ta58x6, Ab58x6, Hb58x6, Ob58x6, Vb58x6, Cc58x6, Jc58x6, Qc58x6; +wire Xc58x6, Ed58x6, Ld58x6, Sd58x6, Zd58x6, Ge58x6, Ne58x6, Ue58x6, Bf58x6, If58x6; +wire Pf58x6, Wf58x6, Dg58x6, Kg58x6, Rg58x6, Yg58x6, Fh58x6, Mh58x6, Th58x6, Ai58x6; +wire Hi58x6, Oi58x6, Vi58x6, Cj58x6, Jj58x6, Qj58x6, Xj58x6, Ek58x6, Lk58x6, Sk58x6; +wire Zk58x6, Gl58x6, Nl58x6, Ul58x6, Bm58x6, Im58x6, Pm58x6, Wm58x6, Dn58x6, Kn58x6; +wire Rn58x6, Yn58x6, Fo58x6, Mo58x6, To58x6, Ap58x6, Hp58x6, Op58x6, Vp58x6, Cq58x6; +wire Jq58x6, Qq58x6, Xq58x6, Er58x6, Lr58x6, Sr58x6, Zr58x6, Gs58x6, Ns58x6, Us58x6; +wire Bt58x6, It58x6, Pt58x6, Wt58x6, Du58x6, Ku58x6, Ru58x6, Yu58x6, Fv58x6, Mv58x6; +wire Tv58x6, Aw58x6, Hw58x6, Ow58x6, Vw58x6, Cx58x6, Jx58x6, Qx58x6, Xx58x6, Ey58x6; +wire Ly58x6, Sy58x6, Zy58x6, Gz58x6, Nz58x6, Uz58x6, B068x6, I068x6, P068x6, W068x6; +wire D168x6, K168x6, R168x6, Y168x6, F268x6, M268x6, T268x6, A368x6, H368x6, O368x6; +wire V368x6, C468x6, J468x6, Q468x6, X468x6, E568x6, L568x6, S568x6, Z568x6, G668x6; +wire N668x6, U668x6, B768x6, I768x6, P768x6, W768x6, D868x6, K868x6, R868x6, Y868x6; +wire F968x6, M968x6, T968x6, Aa68x6, Ha68x6, Oa68x6, Va68x6, Cb68x6, Jb68x6, Qb68x6; +wire Xb68x6, Ec68x6, Lc68x6, Sc68x6, Zc68x6, Gd68x6, Nd68x6, Ud68x6, Be68x6, Ie68x6; +wire Pe68x6, We68x6, Df68x6, Kf68x6, Rf68x6, Yf68x6, Fg68x6, Mg68x6, Tg68x6, Ah68x6; +wire Hh68x6, Oh68x6, Vh68x6, Ci68x6, Ji68x6, Qi68x6, Xi68x6, Ej68x6, Lj68x6, Sj68x6; +wire Zj68x6, Gk68x6, Nk68x6, Uk68x6, Bl68x6, Il68x6, Pl68x6, Wl68x6, Dm68x6, Km68x6; +wire Rm68x6, Ym68x6, Fn68x6, Mn68x6, Tn68x6, Ao68x6, Ho68x6, Oo68x6, Vo68x6, Cp68x6; +wire Jp68x6, Qp68x6, Xp68x6, Eq68x6, Lq68x6, Sq68x6, Zq68x6, Gr68x6, Nr68x6, Ur68x6; +wire Bs68x6, Is68x6, Ps68x6, Ws68x6, Dt68x6, Kt68x6, Rt68x6, Yt68x6, Fu68x6, Mu68x6; +wire Tu68x6, Av68x6, Hv68x6, Ov68x6, Vv68x6, Cw68x6, Jw68x6, Qw68x6, Xw68x6, Ex68x6; +wire Lx68x6, Sx68x6, Zx68x6, Gy68x6, Ny68x6, Uy68x6, Bz68x6, Iz68x6, Pz68x6, Wz68x6; +wire D078x6, K078x6, R078x6, Y078x6, F178x6, M178x6, T178x6, A278x6, H278x6, O278x6; +wire V278x6, C378x6, J378x6, Q378x6, X378x6, E478x6, L478x6, S478x6, Z478x6, G578x6; +wire N578x6, U578x6, B678x6, I678x6, P678x6, W678x6, D778x6, K778x6, R778x6, Y778x6; +wire F878x6, M878x6, T878x6, A978x6, H978x6, O978x6, V978x6, Ca78x6, Ja78x6, Qa78x6; +wire Xa78x6, Eb78x6, Lb78x6, Sb78x6, Zb78x6, Gc78x6, Nc78x6, Uc78x6, Bd78x6, Id78x6; +wire Pd78x6, Wd78x6, De78x6, Ke78x6, Re78x6, Ye78x6, Ff78x6, Mf78x6, Tf78x6, Ag78x6; +wire Hg78x6, Og78x6, Vg78x6, Ch78x6, Jh78x6, Qh78x6, Xh78x6, Ei78x6, Li78x6, Si78x6; +wire Zi78x6, Gj78x6, Nj78x6, Uj78x6, Bk78x6, Ik78x6, Pk78x6, Wk78x6, Dl78x6, Kl78x6; +wire Rl78x6, Yl78x6, Fm78x6, Mm78x6, Tm78x6, An78x6, Hn78x6, On78x6, Vn78x6, Co78x6; +wire Jo78x6, Qo78x6, Xo78x6, Ep78x6, Lp78x6, Sp78x6, Zp78x6, Gq78x6, Nq78x6, Uq78x6; +wire Br78x6, Ir78x6, Pr78x6, Wr78x6, Ds78x6, Ks78x6, Rs78x6, Ys78x6, Ft78x6, Mt78x6; +wire Tt78x6, Au78x6, Hu78x6, Ou78x6, Vu78x6, Cv78x6, Jv78x6, Qv78x6, Xv78x6, Ew78x6; +wire Lw78x6, Sw78x6, Zw78x6, Gx78x6, Nx78x6, Ux78x6, By78x6, Iy78x6, Py78x6, Wy78x6; +wire Dz78x6, Kz78x6, Rz78x6, Yz78x6, F088x6, M088x6, T088x6, A188x6, H188x6, O188x6; +wire V188x6, C288x6, J288x6, Q288x6, X288x6, E388x6, L388x6, S388x6, Z388x6, G488x6; +wire N488x6, U488x6, B588x6, I588x6, P588x6, W588x6, D688x6, K688x6, R688x6, Y688x6; +wire F788x6, M788x6, T788x6, A888x6, H888x6, O888x6, V888x6, C988x6, J988x6, Q988x6; +wire X988x6, Ea88x6, La88x6, Sa88x6, Za88x6, Gb88x6, Nb88x6, Ub88x6, Bc88x6, Ic88x6; +wire Pc88x6, Wc88x6, Dd88x6, Kd88x6, Rd88x6, Yd88x6, Fe88x6, Me88x6, Te88x6, Af88x6; +wire Hf88x6, Of88x6, Vf88x6, Cg88x6, Jg88x6, Qg88x6, Xg88x6, Eh88x6, Lh88x6, Sh88x6; +wire Zh88x6, Gi88x6, Ni88x6, Ui88x6, Bj88x6, Ij88x6, Pj88x6, Wj88x6, Dk88x6, Kk88x6; +wire Rk88x6, Yk88x6, Fl88x6, Ml88x6, Tl88x6, Am88x6, Hm88x6, Om88x6, Vm88x6, Cn88x6; +wire Jn88x6, Qn88x6, Xn88x6, Eo88x6, Lo88x6, So88x6, Zo88x6, Gp88x6, Np88x6, Up88x6; +wire Bq88x6, Iq88x6, Pq88x6, Wq88x6, Dr88x6, Kr88x6, Rr88x6, Yr88x6, Fs88x6, Ms88x6; +wire Ts88x6, At88x6, Ht88x6, Ot88x6, Vt88x6, Cu88x6, Ju88x6, Qu88x6, Xu88x6, Ev88x6; +wire Lv88x6, Sv88x6, Zv88x6, Gw88x6, Nw88x6, Uw88x6, Bx88x6, Ix88x6, Px88x6, Wx88x6; +wire Dy88x6, Ky88x6, Ry88x6, Yy88x6, Fz88x6, Mz88x6, Tz88x6, A098x6, H098x6, O098x6; +wire V098x6, C198x6, J198x6, Q198x6, X198x6, E298x6, L298x6, S298x6, Z298x6, G398x6; +wire N398x6, U398x6, B498x6, I498x6, P498x6, W498x6, D598x6, K598x6, R598x6, Y598x6; +wire F698x6, M698x6, T698x6, A798x6, H798x6, O798x6, V798x6, C898x6, J898x6, Q898x6; +wire X898x6, E998x6, L998x6, S998x6, Z998x6, Ga98x6, Na98x6, Ua98x6, Bb98x6, Ib98x6; +wire Pb98x6, Wb98x6, Dc98x6, Kc98x6, Rc98x6, Yc98x6, Fd98x6, Md98x6, Td98x6, Ae98x6; +wire He98x6, Oe98x6, Ve98x6, Cf98x6, Jf98x6, Qf98x6, Xf98x6, Eg98x6, Lg98x6, Sg98x6; +wire Zg98x6, Gh98x6, Nh98x6, Uh98x6, Bi98x6, Ii98x6, Pi98x6, Wi98x6, Dj98x6, Kj98x6; +wire Rj98x6, Yj98x6, Fk98x6, Mk98x6, Tk98x6, Al98x6, Hl98x6, Ol98x6, Vl98x6, Cm98x6; +wire Jm98x6, Qm98x6, Xm98x6, En98x6, Ln98x6, Sn98x6, Zn98x6, Go98x6, No98x6, Uo98x6; +wire Bp98x6, Ip98x6, Pp98x6, Wp98x6, Dq98x6, Kq98x6, Rq98x6, Yq98x6, Fr98x6, Mr98x6; +wire Tr98x6, As98x6, Hs98x6, Os98x6, Vs98x6, Ct98x6, Jt98x6, Qt98x6, Xt98x6, Eu98x6; +wire Lu98x6, Su98x6, Zu98x6, Gv98x6, Nv98x6, Uv98x6, Bw98x6, Iw98x6, Pw98x6, Ww98x6; +wire Dx98x6, Kx98x6, Rx98x6, Yx98x6, Fy98x6, My98x6, Ty98x6, Az98x6, Hz98x6, Oz98x6; +wire Vz98x6, C0a8x6, J0a8x6, Q0a8x6, X0a8x6, E1a8x6, L1a8x6, S1a8x6, Z1a8x6, G2a8x6; +wire N2a8x6, U2a8x6, B3a8x6, I3a8x6, P3a8x6, W3a8x6, D4a8x6, K4a8x6, R4a8x6, Y4a8x6; +wire F5a8x6, M5a8x6, T5a8x6, A6a8x6, H6a8x6, O6a8x6, V6a8x6, C7a8x6, J7a8x6, Q7a8x6; +wire X7a8x6, E8a8x6, L8a8x6, S8a8x6, Z8a8x6, G9a8x6, N9a8x6, U9a8x6, Baa8x6, Iaa8x6; +wire Paa8x6, Waa8x6, Dba8x6, Kba8x6, Rba8x6, Yba8x6, Fca8x6, Mca8x6, Tca8x6, Ada8x6; +wire Hda8x6, Oda8x6, Vda8x6, Cea8x6, Jea8x6, Qea8x6, Xea8x6, Efa8x6, Lfa8x6, Sfa8x6; +wire Zfa8x6, Gga8x6, Nga8x6, Uga8x6, Bha8x6, Iha8x6, Pha8x6, Wha8x6, Dia8x6, Kia8x6; +wire Ria8x6, Yia8x6, Fja8x6, Mja8x6, Tja8x6, Aka8x6, Hka8x6, Oka8x6, Vka8x6, Cla8x6; +wire Jla8x6, Qla8x6, Xla8x6, Ema8x6, Lma8x6, Sma8x6, Zma8x6, Gna8x6, Nna8x6, Una8x6; +wire Boa8x6, Ioa8x6, Poa8x6, Woa8x6, Dpa8x6, Kpa8x6, Rpa8x6, Ypa8x6, Fqa8x6, Mqa8x6; +wire Tqa8x6, Ara8x6, Hra8x6, Ora8x6, Vra8x6, Csa8x6, Jsa8x6, Qsa8x6, Xsa8x6, Eta8x6; +wire Lta8x6, Sta8x6, Zta8x6, Gua8x6, Nua8x6, Uua8x6, Bva8x6, Iva8x6, Pva8x6, Wva8x6; +wire Dwa8x6, Kwa8x6, Rwa8x6, Ywa8x6, Fxa8x6, Mxa8x6, Txa8x6, Aya8x6, Hya8x6, Oya8x6; +wire Vya8x6, Cza8x6, Jza8x6, Qza8x6, Xza8x6, E0b8x6, L0b8x6, S0b8x6, Z0b8x6, G1b8x6; +wire N1b8x6, U1b8x6, B2b8x6, I2b8x6, P2b8x6, W2b8x6, D3b8x6, K3b8x6, R3b8x6, Y3b8x6; +wire F4b8x6, M4b8x6, T4b8x6, A5b8x6, H5b8x6, O5b8x6, V5b8x6, C6b8x6, J6b8x6, Q6b8x6; +wire X6b8x6, E7b8x6, L7b8x6, S7b8x6, Z7b8x6, G8b8x6, N8b8x6, U8b8x6, B9b8x6, I9b8x6; +wire P9b8x6, W9b8x6, Dab8x6, Kab8x6, Rab8x6, Yab8x6, Fbb8x6, Mbb8x6, Tbb8x6, Acb8x6; +wire Hcb8x6, Ocb8x6, Vcb8x6, Cdb8x6, Jdb8x6, Qdb8x6, Xdb8x6, Eeb8x6, Leb8x6, Seb8x6; +wire Zeb8x6, Gfb8x6, Nfb8x6, Ufb8x6, Bgb8x6, Igb8x6, Pgb8x6, Wgb8x6, Dhb8x6, Khb8x6; +wire Rhb8x6, Yhb8x6, Fib8x6, Mib8x6, Tib8x6, Ajb8x6, Hjb8x6, Ojb8x6, Vjb8x6, Ckb8x6; +wire Jkb8x6, Qkb8x6, Xkb8x6, Elb8x6, Llb8x6, Slb8x6, Zlb8x6, Gmb8x6, Nmb8x6, Umb8x6; +wire Bnb8x6, Inb8x6, Pnb8x6, Wnb8x6, Dob8x6, Kob8x6, Rob8x6, Yob8x6, Fpb8x6, Mpb8x6; +wire Tpb8x6, Aqb8x6, Hqb8x6, Oqb8x6, Vqb8x6, Crb8x6, Jrb8x6, Qrb8x6, Xrb8x6, Esb8x6; +wire Lsb8x6, Ssb8x6, Zsb8x6, Gtb8x6, Ntb8x6, Utb8x6, Bub8x6, Iub8x6, Pub8x6, Wub8x6; +wire Dvb8x6, Kvb8x6, Rvb8x6, Yvb8x6, Fwb8x6, Mwb8x6, Twb8x6, Axb8x6, Hxb8x6, Oxb8x6; +wire Vxb8x6, Cyb8x6, Jyb8x6, Qyb8x6, Xyb8x6, Ezb8x6, Lzb8x6, Szb8x6, Zzb8x6, G0c8x6; +wire N0c8x6, U0c8x6, B1c8x6, I1c8x6, P1c8x6, W1c8x6, D2c8x6, K2c8x6, R2c8x6, Y2c8x6; +wire F3c8x6, M3c8x6, T3c8x6, A4c8x6, H4c8x6, O4c8x6, V4c8x6, C5c8x6, J5c8x6, Q5c8x6; +wire X5c8x6, E6c8x6, L6c8x6, S6c8x6, Z6c8x6, G7c8x6, N7c8x6, U7c8x6, B8c8x6, I8c8x6; +wire P8c8x6, W8c8x6, D9c8x6, K9c8x6, R9c8x6, Y9c8x6, Fac8x6, Mac8x6, Tac8x6, Abc8x6; +wire Hbc8x6, Obc8x6, Vbc8x6, Ccc8x6, Jcc8x6, Qcc8x6, Xcc8x6, Edc8x6, Ldc8x6, Sdc8x6; +wire Zdc8x6, Gec8x6, Nec8x6, Uec8x6, Bfc8x6, Ifc8x6, Pfc8x6, Wfc8x6, Dgc8x6, Kgc8x6; +wire Rgc8x6, Ygc8x6, Fhc8x6, Mhc8x6, Thc8x6, Aic8x6, Hic8x6, Oic8x6, Vic8x6, Cjc8x6; +wire Jjc8x6, Qjc8x6, Xjc8x6, Ekc8x6, Lkc8x6, Skc8x6, Zkc8x6, Glc8x6, Nlc8x6, Ulc8x6; +wire Bmc8x6, Imc8x6, Pmc8x6, Wmc8x6, Dnc8x6, Knc8x6, Rnc8x6, Ync8x6, Foc8x6, Moc8x6; +wire Toc8x6, Apc8x6, Hpc8x6, Opc8x6, Vpc8x6, Cqc8x6, Jqc8x6, Qqc8x6, Xqc8x6, Erc8x6; +wire Lrc8x6, Src8x6, Zrc8x6, Gsc8x6, Nsc8x6, Usc8x6, Btc8x6, Itc8x6, Ptc8x6, Wtc8x6; +wire Duc8x6, Kuc8x6, Ruc8x6, Yuc8x6, Fvc8x6, Mvc8x6, Tvc8x6, Awc8x6, Hwc8x6, Owc8x6; +wire Vwc8x6, Cxc8x6, Jxc8x6, Qxc8x6, Xxc8x6, Eyc8x6, Lyc8x6, Syc8x6, Zyc8x6, Gzc8x6; +wire Nzc8x6, Uzc8x6, B0d8x6, I0d8x6, P0d8x6, W0d8x6, D1d8x6, K1d8x6, R1d8x6, Y1d8x6; +wire F2d8x6, M2d8x6, T2d8x6, A3d8x6, H3d8x6, O3d8x6, V3d8x6, C4d8x6, J4d8x6, Q4d8x6; +wire X4d8x6, E5d8x6, L5d8x6, S5d8x6, Z5d8x6, G6d8x6, N6d8x6, U6d8x6, B7d8x6, I7d8x6; +wire P7d8x6, W7d8x6, D8d8x6, K8d8x6, R8d8x6, Y8d8x6, F9d8x6, M9d8x6, T9d8x6, Aad8x6; +wire Had8x6, Oad8x6, Vad8x6, Cbd8x6, Jbd8x6, Qbd8x6, Xbd8x6, Ecd8x6, Lcd8x6, Scd8x6; +wire Zcd8x6, Gdd8x6, Ndd8x6, Udd8x6, Bed8x6, Ied8x6, Ped8x6, Wed8x6, Dfd8x6, Kfd8x6; +wire Rfd8x6, Yfd8x6, Fgd8x6, Mgd8x6, Tgd8x6, Ahd8x6, Hhd8x6, Ohd8x6, Vhd8x6, Cid8x6; +wire Jid8x6, Qid8x6, Xid8x6, Ejd8x6, Ljd8x6, Sjd8x6, Zjd8x6, Gkd8x6, Nkd8x6, Ukd8x6; +wire Bld8x6, Ild8x6, Pld8x6, Wld8x6, Dmd8x6, Kmd8x6, Rmd8x6, Ymd8x6, Fnd8x6, Mnd8x6; +wire Tnd8x6, Aod8x6, Hod8x6, Ood8x6, Vod8x6, Cpd8x6, Jpd8x6, Qpd8x6, Xpd8x6, Eqd8x6; +wire Lqd8x6, Sqd8x6, Zqd8x6, Grd8x6, Nrd8x6, Urd8x6, Bsd8x6, Isd8x6, Psd8x6, Wsd8x6; +wire Dtd8x6, Ktd8x6, Rtd8x6, Ytd8x6, Fud8x6, Mud8x6, Tud8x6, Avd8x6, Hvd8x6, Ovd8x6; +wire Vvd8x6, Cwd8x6, Jwd8x6, Qwd8x6, Xwd8x6, Exd8x6, Lxd8x6, Sxd8x6, Zxd8x6, Gyd8x6; +wire Nyd8x6, Uyd8x6, Bzd8x6, Izd8x6, Pzd8x6, Wzd8x6, D0e8x6, K0e8x6, R0e8x6, Y0e8x6; +wire F1e8x6, M1e8x6, T1e8x6, A2e8x6, H2e8x6, O2e8x6, V2e8x6, C3e8x6, J3e8x6, Q3e8x6; +wire X3e8x6, E4e8x6, L4e8x6, S4e8x6, Z4e8x6, G5e8x6, N5e8x6, U5e8x6, B6e8x6, I6e8x6; +wire P6e8x6, W6e8x6, D7e8x6, K7e8x6, R7e8x6, Y7e8x6, F8e8x6, M8e8x6, T8e8x6, A9e8x6; +wire H9e8x6, O9e8x6, V9e8x6, Cae8x6, Jae8x6, Qae8x6, Xae8x6, Ebe8x6, Lbe8x6, Sbe8x6; +wire Zbe8x6, Gce8x6, Nce8x6, Uce8x6, Bde8x6, Ide8x6, Pde8x6, Wde8x6, Dee8x6, Kee8x6; +wire Ree8x6, Yee8x6, Ffe8x6, Mfe8x6, Tfe8x6, Age8x6, Hge8x6, Oge8x6, Vge8x6, Che8x6; +wire Jhe8x6, Qhe8x6, Xhe8x6, Eie8x6, Lie8x6, Sie8x6, Zie8x6, Gje8x6, Nje8x6, Uje8x6; +wire Bke8x6, Ike8x6, Pke8x6, Qg3xx6, Xg3xx6, Eh3xx6, Lh3xx6, Sh3xx6, Zh3xx6, Gi3xx6; +wire Ni3xx6, Ui3xx6, Bj3xx6, Ij3xx6, Pj3xx6, Wj3xx6, Dk3xx6, Kk3xx6, Rk3xx6, Yk3xx6; +wire Fl3xx6, Ml3xx6, Tl3xx6, Am3xx6, Hm3xx6, Om3xx6, Vm3xx6, Cn3xx6, Jn3xx6, Qn3xx6; +wire Xn3xx6, Eo3xx6, Lo3xx6, So3xx6, Zo3xx6, Gp3xx6, Np3xx6, Up3xx6, Bq3xx6, Iq3xx6; +wire Pq3xx6, Wq3xx6, Dr3xx6, Kr3xx6, Rr3xx6, Yr3xx6, Fs3xx6, Ms3xx6, Ts3xx6, At3xx6; +wire Ht3xx6, Ot3xx6, Vt3xx6, Cu3xx6, Ju3xx6, Qu3xx6, Xu3xx6, Ev3xx6, Lv3xx6, Sv3xx6; +wire Zv3xx6, Gw3xx6, Nw3xx6, Uw3xx6, Bx3xx6, Ix3xx6, Px3xx6, Wx3xx6, Dy3xx6, Ky3xx6; +wire Ry3xx6, Yy3xx6, Fz3xx6, Mz3xx6, Tz3xx6, A04xx6, H04xx6, O04xx6, V04xx6, C14xx6; +wire J14xx6, Q14xx6, X14xx6, E24xx6, L24xx6, S24xx6, Z24xx6, G34xx6, N34xx6, U34xx6; +wire B44xx6, I44xx6, P44xx6, W44xx6, D54xx6, K54xx6, R54xx6, Y54xx6, F64xx6, M64xx6; +wire T64xx6, A74xx6, H74xx6, O74xx6, V74xx6, C84xx6, J84xx6, Q84xx6, X84xx6, E94xx6; +wire L94xx6, S94xx6, Z94xx6, Ga4xx6, Na4xx6, Ua4xx6, Bb4xx6, Ib4xx6, Pb4xx6, Wb4xx6; +wire Dc4xx6, Kc4xx6, Rc4xx6, Yc4xx6, Fd4xx6, Md4xx6, Td4xx6, Ae4xx6, He4xx6, Oe4xx6; +wire Ve4xx6, Cf4xx6, Jf4xx6, Qf4xx6, Xf4xx6, Eg4xx6, Lg4xx6, Sg4xx6, Zg4xx6, Gh4xx6; +wire Nh4xx6, Uh4xx6, Bi4xx6, Ii4xx6, Pi4xx6, Wi4xx6, Dj4xx6, Kj4xx6, Rj4xx6, Yj4xx6; +wire Fk4xx6, Mk4xx6, Tk4xx6, Al4xx6, Hl4xx6, Ol4xx6, Vl4xx6, Cm4xx6, Jm4xx6, Qm4xx6; +wire Xm4xx6, En4xx6, Ln4xx6, Sn4xx6, Zn4xx6, Go4xx6, No4xx6, Uo4xx6, Bp4xx6, Ip4xx6; +wire Pp4xx6, Wp4xx6, Dq4xx6, Kq4xx6, Rq4xx6, Yq4xx6, Fr4xx6, Mr4xx6, Tr4xx6, As4xx6; +wire Hs4xx6, Os4xx6, Vs4xx6, Ct4xx6, Jt4xx6, Qt4xx6, Xt4xx6, Eu4xx6, Lu4xx6, Su4xx6; +wire Zu4xx6, Gv4xx6, Nv4xx6, Uv4xx6, Bw4xx6, Iw4xx6, Pw4xx6, Ww4xx6, Dx4xx6, Kx4xx6; +wire Rx4xx6, Yx4xx6, Fy4xx6, My4xx6, Ty4xx6, Az4xx6, Hz4xx6, Oz4xx6, Vz4xx6, C05xx6; +wire J05xx6, Q05xx6, X05xx6, E15xx6, L15xx6, S15xx6, Z15xx6, G25xx6, N25xx6, U25xx6; +wire B35xx6, I35xx6, P35xx6, W35xx6, D45xx6, K45xx6, R45xx6, Y45xx6, F55xx6, M55xx6; +wire T55xx6, A65xx6, H65xx6, O65xx6, V65xx6, C75xx6, J75xx6, Q75xx6, X75xx6, E85xx6; +wire L85xx6, S85xx6, Z85xx6, G95xx6, N95xx6, U95xx6, Ba5xx6, Ia5xx6, Pa5xx6, Wa5xx6; +wire Db5xx6, Kb5xx6, Rb5xx6, Yb5xx6, Fc5xx6, Mc5xx6, Tc5xx6, Ad5xx6, Hd5xx6, Od5xx6; +wire Vd5xx6, Ce5xx6, Je5xx6, Qe5xx6, Xe5xx6, Ef5xx6, Lf5xx6, Sf5xx6, Zf5xx6, Gg5xx6; +wire Ng5xx6, Ug5xx6, Bh5xx6, Ih5xx6, Ph5xx6, Wh5xx6, Di5xx6, Ki5xx6, Ri5xx6, Yi5xx6; +wire Fj5xx6, Mj5xx6, Tj5xx6, Ak5xx6, Hk5xx6, Ok5xx6, Vk5xx6, Cl5xx6, Jl5xx6, Ql5xx6; +wire Xl5xx6, Em5xx6, Lm5xx6, Sm5xx6, Zm5xx6, Gn5xx6, Nn5xx6, Un5xx6, Bo5xx6, Io5xx6; +wire Po5xx6, Wo5xx6, Dp5xx6, Kp5xx6, Rp5xx6, Yp5xx6, Fq5xx6, Mq5xx6, Tq5xx6, Ar5xx6; +wire Hr5xx6, Or5xx6, Vr5xx6, Cs5xx6, Js5xx6, Qs5xx6, Xs5xx6, Et5xx6, Lt5xx6, St5xx6; +wire Zt5xx6, Gu5xx6, Nu5xx6, Uu5xx6, Bv5xx6, Iv5xx6, Pv5xx6, Wv5xx6, Dw5xx6, Kw5xx6; +wire Rw5xx6, Yw5xx6, Fx5xx6, Mx5xx6, Tx5xx6, Ay5xx6, Hy5xx6, Oy5xx6, Vy5xx6, Cz5xx6; +wire Jz5xx6, Qz5xx6, Xz5xx6, E06xx6, L06xx6, S06xx6, Z06xx6, G16xx6, N16xx6, U16xx6; +wire B26xx6, I26xx6, P26xx6, W26xx6, D36xx6, K36xx6, R36xx6, Y36xx6, F46xx6, M46xx6; +wire T46xx6, A56xx6, H56xx6, O56xx6, V56xx6, C66xx6, J66xx6, Q66xx6, X66xx6, E76xx6; +wire L76xx6, S76xx6, Z76xx6, G86xx6, N86xx6, U86xx6, B96xx6, I96xx6, P96xx6, W96xx6; +wire Da6xx6, Ka6xx6, Ra6xx6, Ya6xx6, Fb6xx6, Mb6xx6, Tb6xx6, Ac6xx6, Hc6xx6, Oc6xx6; +wire Vc6xx6, Cd6xx6, Jd6xx6, Qd6xx6, Xd6xx6, Ee6xx6, Le6xx6, Se6xx6, Ze6xx6, Gf6xx6; +wire Nf6xx6, Uf6xx6, Bg6xx6, Ig6xx6, Pg6xx6, Wg6xx6, Dh6xx6, Kh6xx6, Rh6xx6, Yh6xx6; +wire Fi6xx6, Mi6xx6, Ti6xx6, Aj6xx6, Hj6xx6, Oj6xx6, Vj6xx6, Ck6xx6, Jk6xx6, Qk6xx6; +wire Xk6xx6, El6xx6, Ll6xx6, Sl6xx6, Zl6xx6, Gm6xx6, Nm6xx6, Um6xx6, Bn6xx6, In6xx6; +wire Pn6xx6, Wn6xx6, Do6xx6, Ko6xx6, Ro6xx6, Yo6xx6, Fp6xx6, Mp6xx6, Tp6xx6, Aq6xx6; +wire Hq6xx6, Oq6xx6, Vq6xx6, Cr6xx6, Jr6xx6, Qr6xx6, Xr6xx6, Es6xx6, Ls6xx6, Ss6xx6; +wire Zs6xx6, Gt6xx6, Nt6xx6, Ut6xx6, Bu6xx6, Iu6xx6, Pu6xx6, Wu6xx6, Dv6xx6, Kv6xx6; +wire Rv6xx6, Yv6xx6, Fw6xx6, Mw6xx6, Tw6xx6, Ax6xx6, Hx6xx6, Ox6xx6, Vx6xx6, Cy6xx6; +wire Jy6xx6, Qy6xx6, Xy6xx6, Ez6xx6, Lz6xx6, Sz6xx6, Zz6xx6, G07xx6, N07xx6, U07xx6; +wire B17xx6, I17xx6, P17xx6, W17xx6, D27xx6, K27xx6, R27xx6, Y27xx6, F37xx6, M37xx6; +wire T37xx6, A47xx6, H47xx6, O47xx6, V47xx6, C57xx6, J57xx6, Q57xx6, X57xx6, E67xx6; +wire L67xx6, S67xx6, Z67xx6, G77xx6, N77xx6, U77xx6, B87xx6, I87xx6, P87xx6, W87xx6; +wire D97xx6, K97xx6, R97xx6, Y97xx6, Fa7xx6, Ma7xx6, Ta7xx6, Ab7xx6, Hb7xx6, Ob7xx6; +wire Vb7xx6, Cc7xx6, Jc7xx6, Qc7xx6, Xc7xx6, Ed7xx6, Ld7xx6, Sd7xx6, Zd7xx6, Ge7xx6; +wire Ne7xx6, Ue7xx6, Bf7xx6, If7xx6, Pf7xx6, Wf7xx6, Dg7xx6, Kg7xx6, Rg7xx6, Yg7xx6; +wire Fh7xx6, Mh7xx6, Th7xx6, Ai7xx6, Hi7xx6, Oi7xx6, Vi7xx6, Cj7xx6, Jj7xx6, Qj7xx6; +wire Xj7xx6, Ek7xx6, Lk7xx6, Sk7xx6, Zk7xx6, Gl7xx6, Nl7xx6, Ul7xx6, Bm7xx6, Im7xx6; +wire Pm7xx6, Wm7xx6, Dn7xx6, Kn7xx6, Rn7xx6, Yn7xx6, Fo7xx6, Mo7xx6, To7xx6, Ap7xx6; +wire Hp7xx6, Op7xx6, Vp7xx6, Cq7xx6, Jq7xx6, Qq7xx6, Xq7xx6, Er7xx6, Lr7xx6, Sr7xx6; +wire Zr7xx6, Gs7xx6, Ns7xx6, Us7xx6, Bt7xx6, It7xx6, Pt7xx6, Wt7xx6, Du7xx6, Ku7xx6; +wire Ru7xx6, Yu7xx6, Fv7xx6, Mv7xx6, Tv7xx6, Aw7xx6, Hw7xx6, Ow7xx6, Vw7xx6, Cx7xx6; +wire Jx7xx6, Qx7xx6, Xx7xx6, Ey7xx6, Ly7xx6, Sy7xx6, Zy7xx6, Gz7xx6, Nz7xx6, Uz7xx6; +wire B08xx6, I08xx6, P08xx6, W08xx6, D18xx6, K18xx6, R18xx6, Y18xx6, F28xx6, M28xx6; +wire T28xx6, A38xx6, H38xx6, O38xx6, V38xx6, C48xx6, J48xx6, Q48xx6, X48xx6, E58xx6; +wire L58xx6, S58xx6, Z58xx6, G68xx6, N68xx6, U68xx6, B78xx6, I78xx6, P78xx6, W78xx6; +wire D88xx6, K88xx6, R88xx6, Y88xx6, F98xx6, M98xx6, T98xx6, Aa8xx6, Ha8xx6, Oa8xx6; +wire Va8xx6, Cb8xx6, Jb8xx6, Qb8xx6, Xb8xx6, Ec8xx6, Lc8xx6, Sc8xx6, Zc8xx6, Gd8xx6; +wire Nd8xx6, Ud8xx6, Be8xx6, Ie8xx6, Pe8xx6, We8xx6, Df8xx6, Kf8xx6, Rf8xx6, Yf8xx6; +wire Fg8xx6, Mg8xx6, Tg8xx6, Ah8xx6, Hh8xx6, Oh8xx6, Vh8xx6, Ci8xx6, Ji8xx6, Qi8xx6; +wire Xi8xx6, Ej8xx6, Lj8xx6, Sj8xx6, Zj8xx6, Gk8xx6, Nk8xx6, Uk8xx6, Bl8xx6, Il8xx6; +wire Pl8xx6, Wl8xx6, Dm8xx6, Km8xx6, Rm8xx6, Ym8xx6, Fn8xx6, Mn8xx6, Tn8xx6, Ao8xx6; +wire Ho8xx6, Oo8xx6, Vo8xx6, Cp8xx6, Jp8xx6, Qp8xx6, Xp8xx6, Eq8xx6, Lq8xx6, Sq8xx6; +wire Zq8xx6, Gr8xx6, Nr8xx6, Ur8xx6, Bs8xx6, Is8xx6, Ps8xx6, Ws8xx6, Dt8xx6, Kt8xx6; +wire Rt8xx6, Yt8xx6, Fu8xx6, Mu8xx6, Tu8xx6, Av8xx6, Hv8xx6, Ov8xx6, Vv8xx6, Cw8xx6; +wire Jw8xx6, Qw8xx6, Xw8xx6, Ex8xx6, Lx8xx6, Sx8xx6, Zx8xx6, Gy8xx6, Ny8xx6, Uy8xx6; +wire Bz8xx6, Iz8xx6, Pz8xx6, Wz8xx6, D09xx6, K09xx6, R09xx6, Y09xx6, F19xx6, M19xx6; +wire T19xx6, A29xx6, H29xx6, O29xx6, V29xx6, C39xx6, J39xx6, Q39xx6, X39xx6, E49xx6; +wire L49xx6, S49xx6, Z49xx6, G59xx6, N59xx6, U59xx6, B69xx6, I69xx6, P69xx6, W69xx6; +wire D79xx6, K79xx6, R79xx6, Y79xx6, F89xx6, M89xx6, T89xx6, A99xx6, H99xx6, O99xx6; +wire V99xx6, Ca9xx6, Ja9xx6, Qa9xx6, Xa9xx6, Eb9xx6, Lb9xx6, Sb9xx6, Zb9xx6, Gc9xx6; +wire Nc9xx6, Uc9xx6, Bd9xx6, Id9xx6, Pd9xx6, Wd9xx6, De9xx6, Ke9xx6, Re9xx6, Ye9xx6; +wire Ff9xx6, Mf9xx6, Tf9xx6, Ag9xx6, Hg9xx6, Og9xx6, Vg9xx6, Ch9xx6, Jh9xx6, Qh9xx6; +wire Xh9xx6, Ei9xx6, Li9xx6, Si9xx6, Zi9xx6, Gj9xx6, Nj9xx6, Uj9xx6, Bk9xx6, Ik9xx6; +wire Pk9xx6, Wk9xx6, Dl9xx6, Kl9xx6, Rl9xx6, Yl9xx6, Fm9xx6, Mm9xx6, Tm9xx6, An9xx6; +wire Hn9xx6, On9xx6, Vn9xx6, Co9xx6, Jo9xx6, Qo9xx6, Xo9xx6, Ep9xx6, Lp9xx6, Sp9xx6; +wire Zp9xx6, Gq9xx6, Nq9xx6, Uq9xx6, Br9xx6, Ir9xx6, Pr9xx6, Wr9xx6, Ds9xx6, Ks9xx6; +wire Rs9xx6, Ys9xx6, Ft9xx6, Mt9xx6, Tt9xx6, Au9xx6, Hu9xx6, Ou9xx6, Vu9xx6, Cv9xx6; +wire Jv9xx6, Qv9xx6, Xv9xx6, Ew9xx6, Lw9xx6, Sw9xx6, Zw9xx6, Gx9xx6, Nx9xx6, Ux9xx6; +wire By9xx6, Iy9xx6, Py9xx6, Wy9xx6, Dz9xx6, Kz9xx6, Rz9xx6, Yz9xx6, F0axx6, M0axx6; +wire T0axx6, A1axx6, H1axx6, O1axx6, V1axx6, C2axx6, J2axx6, Q2axx6, X2axx6, E3axx6; +wire L3axx6, S3axx6, Z3axx6, G4axx6, N4axx6, U4axx6, B5axx6, I5axx6, P5axx6, W5axx6; +wire D6axx6, K6axx6, R6axx6, Y6axx6, F7axx6, M7axx6, T7axx6, A8axx6, H8axx6, O8axx6; +wire V8axx6, C9axx6, J9axx6, Q9axx6, X9axx6, Eaaxx6, Laaxx6, Saaxx6, Zaaxx6, Gbaxx6; +wire Nbaxx6, Ubaxx6, Bcaxx6, Icaxx6, Pcaxx6, Wcaxx6, Ddaxx6, Kdaxx6, Rdaxx6, Ydaxx6; +wire Feaxx6, Meaxx6, Teaxx6, Afaxx6, Hfaxx6, Ofaxx6, Vfaxx6, Cgaxx6, Jgaxx6, Qgaxx6; +wire Xgaxx6, Ehaxx6, Lhaxx6, Shaxx6, Zhaxx6, Giaxx6, Niaxx6, Uiaxx6, Bjaxx6, Ijaxx6; +wire Pjaxx6, Wjaxx6, Dkaxx6, Kkaxx6, Rkaxx6, Ykaxx6, Flaxx6, Mlaxx6, Tlaxx6, Amaxx6; +wire Hmaxx6, Omaxx6, Vmaxx6, Cnaxx6, Jnaxx6, Qnaxx6, Xnaxx6, Eoaxx6, Loaxx6, Soaxx6; +wire Zoaxx6, Gpaxx6, Npaxx6, Upaxx6, Bqaxx6, Iqaxx6, Pqaxx6, Wqaxx6, Draxx6, Kraxx6; +wire Rraxx6, Yraxx6, Fsaxx6, Msaxx6, Tsaxx6, Ataxx6, Htaxx6, Otaxx6, Vtaxx6, Cuaxx6; +wire Juaxx6, Quaxx6, Xuaxx6, Evaxx6, Lvaxx6, Svaxx6, Zvaxx6, Gwaxx6, Nwaxx6, Uwaxx6; +wire Bxaxx6, Ixaxx6, Pxaxx6, Wxaxx6, Dyaxx6, Kyaxx6, Ryaxx6, Yyaxx6, Fzaxx6, Mzaxx6; +wire Tzaxx6, A0bxx6, H0bxx6, O0bxx6, V0bxx6, C1bxx6, J1bxx6, Q1bxx6, X1bxx6, E2bxx6; +wire L2bxx6, S2bxx6, Z2bxx6, G3bxx6, N3bxx6, U3bxx6, B4bxx6, I4bxx6, P4bxx6, W4bxx6; +wire D5bxx6, K5bxx6, R5bxx6, Y5bxx6, F6bxx6, M6bxx6, T6bxx6, A7bxx6, H7bxx6, O7bxx6; +wire V7bxx6, C8bxx6, J8bxx6, Q8bxx6, X8bxx6, E9bxx6, L9bxx6, S9bxx6, Z9bxx6, Gabxx6; +wire Nabxx6, Uabxx6, Bbbxx6, Ibbxx6, Pbbxx6, Wbbxx6, Dcbxx6, Kcbxx6, Rcbxx6, Ycbxx6; +wire Fdbxx6, Mdbxx6, Tdbxx6, Aebxx6, Hebxx6, Oebxx6, Vebxx6, Cfbxx6, Jfbxx6, Qfbxx6; +wire Xfbxx6, Egbxx6, Lgbxx6, Sgbxx6, Zgbxx6, Ghbxx6, Nhbxx6, Uhbxx6, Bibxx6, Iibxx6; +wire Pibxx6, Wibxx6, Djbxx6, Kjbxx6, Rjbxx6, Yjbxx6, Fkbxx6, Mkbxx6, Tkbxx6, Albxx6; +wire Hlbxx6, Olbxx6, Vlbxx6, Cmbxx6, Jmbxx6, Qmbxx6, Xmbxx6, Enbxx6, Lnbxx6, Snbxx6; +wire Znbxx6, Gobxx6, Nobxx6, Uobxx6, Bpbxx6, Ipbxx6, Ppbxx6, Wpbxx6, Dqbxx6, Kqbxx6; +wire Rqbxx6, Yqbxx6, Frbxx6, Mrbxx6, Trbxx6, Asbxx6, Hsbxx6, Osbxx6, Vsbxx6, Ctbxx6; +wire Jtbxx6, Qtbxx6, Xtbxx6, Eubxx6, Lubxx6, Subxx6, Zubxx6, Gvbxx6, Nvbxx6, Uvbxx6; +wire Bwbxx6, Iwbxx6, Pwbxx6, Wwbxx6, Dxbxx6, Kxbxx6, Rxbxx6, Yxbxx6, Fybxx6, Mybxx6; +wire Tybxx6, Azbxx6, Hzbxx6, Ozbxx6, Vzbxx6, C0cxx6, J0cxx6, Q0cxx6, X0cxx6, E1cxx6; +wire L1cxx6, S1cxx6, Z1cxx6, G2cxx6, N2cxx6, U2cxx6, B3cxx6, I3cxx6, P3cxx6, W3cxx6; +wire D4cxx6, K4cxx6, R4cxx6, Y4cxx6, F5cxx6, M5cxx6, T5cxx6, A6cxx6, H6cxx6, O6cxx6; +wire V6cxx6, C7cxx6, J7cxx6, Q7cxx6, X7cxx6, E8cxx6, L8cxx6, S8cxx6, Z8cxx6, G9cxx6; +wire N9cxx6, U9cxx6, Bacxx6, Iacxx6, Pacxx6, Wacxx6, Dbcxx6, Kbcxx6, Rbcxx6, Ybcxx6; +wire Fccxx6, Mccxx6, Tccxx6, Adcxx6, Hdcxx6, Odcxx6, Vdcxx6, Cecxx6, Jecxx6, Qecxx6; +wire Xecxx6, Efcxx6, Lfcxx6, Sfcxx6, Zfcxx6, Ggcxx6, Ngcxx6, Ugcxx6, Bhcxx6, Ihcxx6; +wire Phcxx6, Whcxx6, Dicxx6, Kicxx6, Ricxx6, Yicxx6, Fjcxx6, Mjcxx6, Tjcxx6, Akcxx6; +wire Hkcxx6, Okcxx6, Vkcxx6, Clcxx6, Jlcxx6, Qlcxx6, Xlcxx6, Emcxx6, Lmcxx6, Smcxx6; +wire Zmcxx6, Gncxx6, Nncxx6, Uncxx6, Bocxx6, Iocxx6, Pocxx6, Wocxx6, Dpcxx6, Kpcxx6; +wire Rpcxx6, Ypcxx6, Fqcxx6, Mqcxx6, Tqcxx6, Arcxx6, Hrcxx6, Orcxx6, Vrcxx6, Cscxx6; +wire Jscxx6, Qscxx6, Xscxx6, Etcxx6, Ltcxx6, Stcxx6, Ztcxx6, Gucxx6, Nucxx6, Uucxx6; +wire Bvcxx6, Ivcxx6, Pvcxx6, Wvcxx6, Dwcxx6, Kwcxx6, Rwcxx6, Ywcxx6, Fxcxx6, Mxcxx6; +wire Txcxx6, Aycxx6, Hycxx6, Oycxx6, Vycxx6, Czcxx6, Jzcxx6, Qzcxx6, Xzcxx6, E0dxx6; +wire L0dxx6, S0dxx6, Z0dxx6, G1dxx6, N1dxx6, U1dxx6, B2dxx6, I2dxx6, P2dxx6, W2dxx6; +wire D3dxx6, K3dxx6, R3dxx6, Y3dxx6, F4dxx6, M4dxx6, T4dxx6, A5dxx6, H5dxx6, O5dxx6; +wire V5dxx6, C6dxx6, J6dxx6, Q6dxx6, X6dxx6, E7dxx6, L7dxx6, S7dxx6, Z7dxx6, G8dxx6; +wire N8dxx6, U8dxx6, B9dxx6, I9dxx6, P9dxx6, W9dxx6, Dadxx6, Kadxx6, Radxx6, Yadxx6; +wire Fbdxx6, Mbdxx6, Tbdxx6, Acdxx6, Hcdxx6, Ocdxx6, Vcdxx6, Cddxx6, Jddxx6, Qddxx6; +wire Xddxx6, Eedxx6, Ledxx6, Sedxx6, Zedxx6, Gfdxx6, Nfdxx6, Ufdxx6, Bgdxx6, Igdxx6; +wire Pgdxx6, Wgdxx6, Dhdxx6, Khdxx6, Rhdxx6, Yhdxx6, Fidxx6, Midxx6, Tidxx6, Ajdxx6; +wire Hjdxx6, Ojdxx6, Vjdxx6, Ckdxx6, Jkdxx6, Qkdxx6, Xkdxx6, Eldxx6, Lldxx6, Sldxx6; +wire Zldxx6, Gmdxx6, Nmdxx6, Umdxx6, Bndxx6, Indxx6, Pndxx6, Wndxx6, Dodxx6, Kodxx6; +wire Rodxx6, Yodxx6, Fpdxx6, Mpdxx6, Tpdxx6, Aqdxx6, Hqdxx6, Oqdxx6, Vqdxx6, Crdxx6; +wire Jrdxx6, Qrdxx6, Xrdxx6, Esdxx6, Lsdxx6, Ssdxx6, Zsdxx6, Gtdxx6, Ntdxx6, Utdxx6; +wire Budxx6, Iudxx6, Pudxx6, Wudxx6, Dvdxx6, Kvdxx6, Rvdxx6, Yvdxx6, Fwdxx6, Mwdxx6; +wire Twdxx6, Axdxx6, Hxdxx6, Oxdxx6, Vxdxx6, Cydxx6, Jydxx6, Qydxx6, Xydxx6, Ezdxx6; +wire Lzdxx6, Szdxx6, Zzdxx6, G0exx6, N0exx6, U0exx6, B1exx6, I1exx6, P1exx6, W1exx6; +wire D2exx6, K2exx6, R2exx6, Y2exx6, F3exx6, M3exx6, T3exx6, A4exx6, H4exx6, O4exx6; +wire V4exx6, C5exx6, J5exx6, Q5exx6, X5exx6, E6exx6, L6exx6, S6exx6, Z6exx6, G7exx6; +wire N7exx6, U7exx6, B8exx6, I8exx6, P8exx6, W8exx6, D9exx6, K9exx6, R9exx6, Y9exx6; +wire Faexx6, Maexx6, Taexx6, Abexx6, Hbexx6, Obexx6, Vbexx6, Ccexx6, Jcexx6, Qcexx6; +wire Xcexx6, Edexx6, Ldexx6, Sdexx6, Zdexx6, Geexx6, Neexx6, Ueexx6, Bfexx6, Ifexx6; +wire Pfexx6, Wfexx6, Dgexx6, Kgexx6, Rgexx6, Ygexx6, Fhexx6, Mhexx6, Thexx6, Aiexx6; +wire Hiexx6, Oiexx6, Viexx6, Cjexx6, Jjexx6, Qjexx6, Xjexx6, Ekexx6, Lkexx6, Skexx6; +wire Zkexx6, Glexx6, Nlexx6, Ulexx6, Bmexx6, Imexx6, Pmexx6, Wmexx6, Dnexx6, Knexx6; +wire Rnexx6, Ynexx6, Foexx6, Moexx6, Toexx6, Apexx6, Hpexx6, Opexx6, Vpexx6, Cqexx6; +wire Jqexx6, Qqexx6, Xqexx6, Erexx6, Lrexx6, Srexx6, Zrexx6, Gsexx6, Nsexx6, Usexx6; +wire Btexx6, Itexx6, Ptexx6, Wtexx6, Duexx6, Kuexx6, Ruexx6, Yuexx6, Fvexx6, Mvexx6; +wire Tvexx6, Awexx6, Hwexx6, Owexx6, Vwexx6, Cxexx6, Jxexx6, Qxexx6, Xxexx6, Eyexx6; +wire Lyexx6, Syexx6, Zyexx6, Gzexx6, Nzexx6, Uzexx6, B0fxx6, I0fxx6, P0fxx6, W0fxx6; +wire D1fxx6, K1fxx6, R1fxx6, Y1fxx6, F2fxx6, M2fxx6, T2fxx6, A3fxx6, H3fxx6, O3fxx6; +wire V3fxx6, C4fxx6, J4fxx6, Q4fxx6, X4fxx6, E5fxx6, L5fxx6, S5fxx6, Z5fxx6, G6fxx6; +wire N6fxx6, U6fxx6, B7fxx6, I7fxx6, P7fxx6, W7fxx6, D8fxx6, K8fxx6, R8fxx6, Y8fxx6; +wire F9fxx6, M9fxx6, T9fxx6, Aafxx6, Hafxx6, Oafxx6, Vafxx6, Cbfxx6, Jbfxx6, Qbfxx6; +wire Xbfxx6, Ecfxx6, Lcfxx6, Scfxx6, Zcfxx6, Gdfxx6, Ndfxx6, Udfxx6, Befxx6, Iefxx6; +wire Pefxx6, Wefxx6, Dffxx6, Kffxx6, Rffxx6, Yffxx6, Fgfxx6, Mgfxx6, Tgfxx6, Ahfxx6; +wire Hhfxx6, Ohfxx6, Vhfxx6, Cifxx6, Jifxx6, Qifxx6, Xifxx6, Ejfxx6, Ljfxx6, Sjfxx6; +wire Zjfxx6, Gkfxx6, Nkfxx6, Ukfxx6, Blfxx6, Ilfxx6, Plfxx6, Wlfxx6, Dmfxx6, Kmfxx6; +wire Rmfxx6, Ymfxx6, Fnfxx6, Mnfxx6, Tnfxx6, Aofxx6, Hofxx6, Oofxx6, Vofxx6, Cpfxx6; +wire Jpfxx6, Qpfxx6, Xpfxx6, Eqfxx6, Lqfxx6, Sqfxx6, Zqfxx6, Grfxx6, Nrfxx6, Urfxx6; +wire Bsfxx6, Isfxx6, Psfxx6, Wsfxx6, Dtfxx6, Ktfxx6, Rtfxx6, Ytfxx6, Fufxx6, Mufxx6; +wire Tufxx6, Avfxx6, Hvfxx6, Ovfxx6, Vvfxx6, Cwfxx6, Jwfxx6, Qwfxx6, Xwfxx6, Exfxx6; +wire Lxfxx6, Sxfxx6, Zxfxx6, Gyfxx6, Nyfxx6, Uyfxx6, Bzfxx6, Izfxx6, Pzfxx6, Wzfxx6; +wire D0gxx6, K0gxx6, R0gxx6, Y0gxx6, F1gxx6, M1gxx6, T1gxx6, A2gxx6, H2gxx6, O2gxx6; +wire V2gxx6, C3gxx6, J3gxx6, Q3gxx6, X3gxx6, E4gxx6, L4gxx6, S4gxx6, Z4gxx6, G5gxx6; +wire N5gxx6, U5gxx6, B6gxx6, I6gxx6, P6gxx6, W6gxx6, D7gxx6, K7gxx6, R7gxx6, Y7gxx6; +wire F8gxx6, M8gxx6, T8gxx6, A9gxx6, H9gxx6, O9gxx6, V9gxx6, Cagxx6, Jagxx6, Qagxx6; +wire Xagxx6, Ebgxx6, Lbgxx6, Sbgxx6, Zbgxx6, Gcgxx6, Ncgxx6, Ucgxx6, Bdgxx6, Idgxx6; +wire Pdgxx6, Wdgxx6, Degxx6, Kegxx6, Regxx6, Yegxx6, Ffgxx6, Mfgxx6, Tfgxx6, Aggxx6; +wire Hggxx6, Oggxx6, Vggxx6, Chgxx6, Jhgxx6, Qhgxx6, Xhgxx6, Eigxx6, Ligxx6, Sigxx6; +wire Zigxx6, Gjgxx6, Njgxx6, Ujgxx6, Bkgxx6, Ikgxx6, Pkgxx6, Wkgxx6, Dlgxx6, Klgxx6; +wire Rlgxx6, Ylgxx6, Fmgxx6, Mmgxx6, Tmgxx6, Angxx6, Hngxx6, Ongxx6, Vngxx6, Cogxx6; +wire Jogxx6, Qogxx6, Xogxx6, Epgxx6, Lpgxx6, Spgxx6, Zpgxx6, Gqgxx6, Nqgxx6, Uqgxx6; +wire Brgxx6, Irgxx6, Prgxx6, Wrgxx6, Dsgxx6, Ksgxx6, Rsgxx6, Ysgxx6, Ftgxx6, Mtgxx6; +wire Ttgxx6, Augxx6, Hugxx6, Ougxx6, Vugxx6, Cvgxx6, Jvgxx6, Qvgxx6, Xvgxx6, Ewgxx6; +wire Lwgxx6, Swgxx6, Zwgxx6, Gxgxx6, Nxgxx6, Uxgxx6, Bygxx6, Iygxx6, Pygxx6, Wygxx6; +wire Dzgxx6, Kzgxx6, Rzgxx6, Yzgxx6, F0hxx6, M0hxx6, T0hxx6, A1hxx6, H1hxx6, O1hxx6; +wire V1hxx6, C2hxx6, J2hxx6, Q2hxx6, X2hxx6, E3hxx6, L3hxx6, S3hxx6, Z3hxx6, G4hxx6; +wire N4hxx6, U4hxx6, B5hxx6, I5hxx6, P5hxx6, W5hxx6, D6hxx6, K6hxx6, R6hxx6, Y6hxx6; +wire F7hxx6, M7hxx6, T7hxx6, A8hxx6, H8hxx6, O8hxx6, V8hxx6, C9hxx6, J9hxx6, Q9hxx6; +wire X9hxx6, Eahxx6, Lahxx6, Sahxx6, Zahxx6, Gbhxx6, Nbhxx6, Ubhxx6, Bchxx6, Ichxx6; +wire Pchxx6, Wchxx6, Ddhxx6, Kdhxx6, Rdhxx6, Ydhxx6, Fehxx6, Mehxx6, Tehxx6, Afhxx6; +wire Hfhxx6, Ofhxx6, Vfhxx6, Cghxx6, Jghxx6, Qghxx6, Xghxx6, Ehhxx6, Lhhxx6, Shhxx6; +wire Zhhxx6, Gihxx6, Nihxx6, Uihxx6, Bjhxx6, Ijhxx6, Pjhxx6, Wjhxx6, Dkhxx6, Kkhxx6; +wire Rkhxx6, Ykhxx6, Flhxx6, Mlhxx6, Tlhxx6, Amhxx6, Hmhxx6, Omhxx6, Vmhxx6, Cnhxx6; +wire Jnhxx6, Qnhxx6, Xnhxx6, Eohxx6, Lohxx6, Sohxx6, Zohxx6, Gphxx6, Nphxx6, Uphxx6; +wire Bqhxx6, Iqhxx6, Pqhxx6, Wqhxx6, Drhxx6, Krhxx6, Rrhxx6, Yrhxx6, Fshxx6, Mshxx6; +wire Tshxx6, Athxx6, Hthxx6, Othxx6, Vthxx6, Cuhxx6, Juhxx6, Quhxx6, Xuhxx6, Evhxx6; +wire Lvhxx6, Svhxx6, Zvhxx6, Gwhxx6, Nwhxx6, Uwhxx6, Bxhxx6, Ixhxx6, Pxhxx6, Wxhxx6; +wire Dyhxx6, Kyhxx6, Ryhxx6, Yyhxx6, Fzhxx6, Mzhxx6, Tzhxx6, A0ixx6, H0ixx6, O0ixx6; +wire V0ixx6, C1ixx6, J1ixx6, Q1ixx6, X1ixx6, E2ixx6, L2ixx6, S2ixx6, Z2ixx6, G3ixx6; +wire N3ixx6, U3ixx6, B4ixx6, I4ixx6, P4ixx6, W4ixx6, D5ixx6, K5ixx6, R5ixx6, Y5ixx6; +wire F6ixx6, M6ixx6, T6ixx6, A7ixx6, H7ixx6, O7ixx6, V7ixx6, C8ixx6, J8ixx6, Q8ixx6; +wire X8ixx6, E9ixx6, L9ixx6, S9ixx6, Z9ixx6, Gaixx6, Naixx6, Uaixx6, Bbixx6, Ibixx6; +wire Pbixx6, Wbixx6, Dcixx6, Kcixx6, Rcixx6, Ycixx6, Fdixx6, Mdixx6, Tdixx6, Aeixx6; +wire Heixx6, Oeixx6, Veixx6, Cfixx6, Jfixx6, Qfixx6, Xfixx6, Egixx6, Lgixx6, Sgixx6; +wire Zgixx6, Ghixx6, Nhixx6, Uhixx6, Biixx6, Iiixx6, Piixx6, Wiixx6, Djixx6, Kjixx6; +wire Rjixx6, Yjixx6, Fkixx6, Mkixx6, Tkixx6, Alixx6, Hlixx6, Olixx6, Vlixx6, Cmixx6; +wire Jmixx6, Qmixx6, Xmixx6, Enixx6, Lnixx6, Snixx6, Znixx6, Goixx6, Noixx6, Uoixx6; +wire Bpixx6, Ipixx6, Ppixx6, Wpixx6, Dqixx6, Kqixx6, Rqixx6, Yqixx6, Frixx6, Mrixx6; +wire Trixx6, Asixx6, Hsixx6, Osixx6, Vsixx6, Ctixx6, Jtixx6, Qtixx6, Xtixx6, Euixx6; +wire Luixx6, Suixx6, Zuixx6, Gvixx6, Nvixx6, Uvixx6, Bwixx6, Iwixx6, Pwixx6, Wwixx6; +wire Dxixx6, Kxixx6, Rxixx6, Yxixx6, Fyixx6, Myixx6, Tyixx6, Azixx6, Hzixx6, Ozixx6; +wire Vzixx6, C0jxx6, J0jxx6, Q0jxx6, X0jxx6, E1jxx6, L1jxx6, S1jxx6, Z1jxx6, G2jxx6; +wire N2jxx6, U2jxx6, B3jxx6, I3jxx6, P3jxx6, W3jxx6, D4jxx6, K4jxx6, R4jxx6, Y4jxx6; +wire F5jxx6, M5jxx6, T5jxx6, A6jxx6, H6jxx6, O6jxx6, V6jxx6, C7jxx6, J7jxx6, Q7jxx6; +wire X7jxx6, E8jxx6, L8jxx6, S8jxx6, Z8jxx6, G9jxx6, N9jxx6, U9jxx6, Bajxx6, Iajxx6; +wire Pajxx6, Wajxx6, Dbjxx6, Kbjxx6, Rbjxx6, Ybjxx6, Fcjxx6, Mcjxx6, Tcjxx6, Adjxx6; +wire Hdjxx6, Odjxx6, Vdjxx6, Cejxx6, Jejxx6, Qejxx6, Xejxx6, Efjxx6, Lfjxx6, Sfjxx6; +wire Zfjxx6, Ggjxx6, Ngjxx6, Ugjxx6, Bhjxx6, Ihjxx6, Phjxx6, Whjxx6, Dijxx6, Kijxx6; +wire Rijxx6, Yijxx6, Fjjxx6, Mjjxx6, Tjjxx6, Akjxx6, Hkjxx6, Okjxx6, Vkjxx6, Cljxx6; +wire Jljxx6, Qljxx6, Xljxx6, Emjxx6, Lmjxx6, Smjxx6, Zmjxx6, Gnjxx6, Nnjxx6, Unjxx6; +wire Bojxx6, Iojxx6, Pojxx6, Wojxx6, Dpjxx6, Kpjxx6, Rpjxx6, Ypjxx6, Fqjxx6, Mqjxx6; +wire Tqjxx6, Arjxx6, Hrjxx6, Orjxx6, Vrjxx6, Csjxx6, Jsjxx6, Qsjxx6, Xsjxx6, Etjxx6; +wire Ltjxx6, Stjxx6, Ztjxx6, Gujxx6, Nujxx6, Uujxx6, Bvjxx6, Ivjxx6, Pvjxx6, Wvjxx6; +wire Dwjxx6, Kwjxx6, Rwjxx6, Ywjxx6, Fxjxx6, Mxjxx6, Txjxx6, Ayjxx6, Hyjxx6, Oyjxx6; +wire Vyjxx6, Czjxx6, Jzjxx6, Qzjxx6, Xzjxx6, E0kxx6, L0kxx6, S0kxx6, Z0kxx6, G1kxx6; +wire N1kxx6, U1kxx6, B2kxx6, I2kxx6, P2kxx6, W2kxx6, D3kxx6, K3kxx6, R3kxx6, Y3kxx6; +wire F4kxx6, M4kxx6, T4kxx6, A5kxx6, H5kxx6, O5kxx6, V5kxx6, C6kxx6, J6kxx6, Q6kxx6; +wire X6kxx6, E7kxx6, L7kxx6, S7kxx6, Z7kxx6, G8kxx6, N8kxx6, U8kxx6, B9kxx6, I9kxx6; +wire P9kxx6, W9kxx6, Dakxx6, Kakxx6, Rakxx6, Yakxx6, Fbkxx6, Mbkxx6, Tbkxx6, Ackxx6; +wire Hckxx6, Ockxx6, Vckxx6, Cdkxx6, Jdkxx6, Qdkxx6, Xdkxx6, Eekxx6, Lekxx6, Sekxx6; +wire Zekxx6, Gfkxx6, Nfkxx6, Ufkxx6, Bgkxx6, Igkxx6, Pgkxx6, Wgkxx6, Dhkxx6, Khkxx6; +wire Rhkxx6, Yhkxx6, Fikxx6, Mikxx6, Tikxx6, Ajkxx6, Hjkxx6, Ojkxx6, Vjkxx6, Ckkxx6; +wire Jkkxx6, Qkkxx6, Xkkxx6, Elkxx6, Llkxx6, Slkxx6, Zlkxx6, Gmkxx6, Nmkxx6, Umkxx6; +wire Bnkxx6, Inkxx6, Pnkxx6, Wnkxx6, Dokxx6, Kokxx6, Rokxx6, Yokxx6, Fpkxx6, Mpkxx6; +wire Tpkxx6, Aqkxx6, Hqkxx6, Oqkxx6, Vqkxx6, Crkxx6, Jrkxx6, Qrkxx6, Xrkxx6, Eskxx6; +wire Lskxx6, Sskxx6, Zskxx6, Gtkxx6, Ntkxx6, Utkxx6, Bukxx6, Iukxx6, Pukxx6, Wukxx6; +wire Dvkxx6, Kvkxx6, Rvkxx6, Yvkxx6, Fwkxx6, Mwkxx6, Twkxx6, Axkxx6, Hxkxx6, Oxkxx6; +wire Vxkxx6, Cykxx6, Jykxx6, Qykxx6, Xykxx6, Ezkxx6, Lzkxx6, Szkxx6, Zzkxx6, G0lxx6; +wire N0lxx6, U0lxx6, B1lxx6, I1lxx6, P1lxx6, W1lxx6, D2lxx6, K2lxx6, R2lxx6, Y2lxx6; +wire F3lxx6, M3lxx6, T3lxx6, A4lxx6, H4lxx6, O4lxx6, V4lxx6, C5lxx6, J5lxx6, Q5lxx6; +wire X5lxx6, E6lxx6, L6lxx6, S6lxx6, Z6lxx6, G7lxx6, N7lxx6, U7lxx6, B8lxx6, I8lxx6; +wire P8lxx6, W8lxx6, D9lxx6, K9lxx6, R9lxx6, Y9lxx6, Falxx6, Malxx6, Talxx6, Ablxx6; +wire Hblxx6, Oblxx6, Vblxx6, Cclxx6, Jclxx6, Qclxx6, Xclxx6, Edlxx6, Ldlxx6, Sdlxx6; +wire Zdlxx6, Gelxx6, Nelxx6, Uelxx6, Bflxx6, Iflxx6, Pflxx6, Wflxx6, Dglxx6, Kglxx6; +wire Rglxx6, Yglxx6, Fhlxx6, Mhlxx6, Thlxx6, Ailxx6, Hilxx6, Oilxx6, Vilxx6, Cjlxx6; +wire Jjlxx6, Qjlxx6, Xjlxx6, Eklxx6, Lklxx6, Sklxx6, Zklxx6, Gllxx6, Nllxx6, Ullxx6; +wire Bmlxx6, Imlxx6, Pmlxx6, Wmlxx6, Dnlxx6, Knlxx6, Rnlxx6, Ynlxx6, Folxx6, Molxx6; +wire Tolxx6, Aplxx6, Hplxx6, Oplxx6, Vplxx6, Cqlxx6, Jqlxx6, Qqlxx6, Xqlxx6, Erlxx6; +wire Lrlxx6, Srlxx6, Zrlxx6, Gslxx6, Nslxx6, Uslxx6, Btlxx6, Itlxx6, Ptlxx6, Wtlxx6; +wire Dulxx6, Kulxx6, Rulxx6, Yulxx6, Fvlxx6, Mvlxx6, Tvlxx6, Awlxx6, Hwlxx6, Owlxx6; +wire Vwlxx6, Cxlxx6, Jxlxx6, Qxlxx6, Xxlxx6, Eylxx6, Lylxx6, Sylxx6, Zylxx6, Gzlxx6; +wire Nzlxx6, Uzlxx6, B0mxx6, I0mxx6, P0mxx6, W0mxx6, D1mxx6, K1mxx6, R1mxx6, Y1mxx6; +wire F2mxx6, M2mxx6, T2mxx6, A3mxx6, H3mxx6, O3mxx6, V3mxx6, C4mxx6, J4mxx6, Q4mxx6; +wire X4mxx6, E5mxx6, L5mxx6, S5mxx6, Z5mxx6, G6mxx6, N6mxx6, U6mxx6, B7mxx6, I7mxx6; +wire P7mxx6, W7mxx6, D8mxx6, K8mxx6, R8mxx6, Y8mxx6, F9mxx6, M9mxx6, T9mxx6, Aamxx6; +wire Hamxx6, Oamxx6, Vamxx6, Cbmxx6, Jbmxx6, Qbmxx6, Xbmxx6, Ecmxx6, Lcmxx6, Scmxx6; +wire Zcmxx6, Gdmxx6, Ndmxx6, Udmxx6, Bemxx6, Iemxx6, Pemxx6, Wemxx6, Dfmxx6, Kfmxx6; +wire Rfmxx6, Yfmxx6, Fgmxx6, Mgmxx6, Tgmxx6, Ahmxx6, Hhmxx6, Ohmxx6, Vhmxx6, Cimxx6; +wire Jimxx6, Qimxx6, Ximxx6, Ejmxx6, Ljmxx6, Sjmxx6, Zjmxx6, Gkmxx6, Nkmxx6, Ukmxx6; +wire Blmxx6, Ilmxx6, Plmxx6, Wlmxx6, Dmmxx6, Kmmxx6, Rmmxx6, Ymmxx6, Fnmxx6, Mnmxx6; +wire Tnmxx6, Aomxx6, Homxx6, Oomxx6, Vomxx6, Cpmxx6, Jpmxx6, Qpmxx6, Xpmxx6, Eqmxx6; +wire Lqmxx6, Sqmxx6, Zqmxx6, Grmxx6, Nrmxx6, Urmxx6, Bsmxx6, Ismxx6, Psmxx6, Wsmxx6; +wire Dtmxx6, Ktmxx6, Rtmxx6, Ytmxx6, Fumxx6, Mumxx6, Tumxx6, Avmxx6, Hvmxx6, Ovmxx6; +wire Vvmxx6, Cwmxx6, Jwmxx6, Qwmxx6, Xwmxx6, Exmxx6, Lxmxx6, Sxmxx6, Zxmxx6, Gymxx6; +wire Nymxx6, Uymxx6, Bzmxx6, Izmxx6, Pzmxx6, Wzmxx6, D0nxx6, K0nxx6, R0nxx6, Y0nxx6; +wire F1nxx6, M1nxx6, T1nxx6, A2nxx6, H2nxx6, O2nxx6, V2nxx6, C3nxx6, J3nxx6, Q3nxx6; +wire X3nxx6, E4nxx6, L4nxx6, S4nxx6, Z4nxx6, G5nxx6, N5nxx6, U5nxx6, B6nxx6, I6nxx6; +wire P6nxx6, W6nxx6, D7nxx6, K7nxx6, R7nxx6, Y7nxx6, F8nxx6, M8nxx6, T8nxx6, A9nxx6; +wire H9nxx6, O9nxx6, V9nxx6, Canxx6, Janxx6, Qanxx6, Xanxx6, Ebnxx6, Lbnxx6, Sbnxx6; +wire Zbnxx6, Gcnxx6, Ncnxx6, Ucnxx6, Bdnxx6, Idnxx6, Pdnxx6, Wdnxx6, Denxx6, Kenxx6; +wire Renxx6, Yenxx6, Ffnxx6, Mfnxx6, Tfnxx6, Agnxx6, Hgnxx6, Ognxx6, Vgnxx6, Chnxx6; +wire Jhnxx6, Qhnxx6, Xhnxx6, Einxx6, Linxx6, Sinxx6, Zinxx6, Gjnxx6, Njnxx6, Ujnxx6; +wire Bknxx6, Iknxx6, Pknxx6, Wknxx6, Dlnxx6, Klnxx6, Rlnxx6, Ylnxx6, Fmnxx6, Mmnxx6; +wire Tmnxx6, Annxx6, Hnnxx6, Onnxx6, Vnnxx6, Conxx6, Jonxx6, Qonxx6, Xonxx6, Epnxx6; +wire Lpnxx6, Spnxx6, Zpnxx6, Gqnxx6, Nqnxx6, Uqnxx6, Brnxx6, Irnxx6, Prnxx6, Wrnxx6; +wire Dsnxx6, Ksnxx6, Rsnxx6, Ysnxx6, Ftnxx6, Mtnxx6, Ttnxx6, Aunxx6, Hunxx6, Ounxx6; +wire Vunxx6, Cvnxx6, Jvnxx6, Qvnxx6, Xvnxx6, Ewnxx6, Lwnxx6, Swnxx6, Zwnxx6, Gxnxx6; +wire Nxnxx6, Uxnxx6, Bynxx6, Iynxx6, Pynxx6, Wynxx6, Dznxx6, Kznxx6, Rznxx6, Yznxx6; +wire F0oxx6, M0oxx6, T0oxx6, A1oxx6, H1oxx6, O1oxx6, V1oxx6, C2oxx6, J2oxx6, Q2oxx6; +wire X2oxx6, E3oxx6, L3oxx6, S3oxx6, Z3oxx6, G4oxx6, N4oxx6, U4oxx6, B5oxx6, I5oxx6; +wire P5oxx6, W5oxx6, D6oxx6, K6oxx6, R6oxx6, Y6oxx6, F7oxx6, M7oxx6, T7oxx6, A8oxx6; +wire H8oxx6, O8oxx6, V8oxx6, C9oxx6, J9oxx6, Q9oxx6, X9oxx6, Eaoxx6, Laoxx6, Saoxx6; +wire Zaoxx6, Gboxx6, Nboxx6, Uboxx6, Bcoxx6, Icoxx6, Pcoxx6, Wcoxx6, Ddoxx6, Kdoxx6; +wire Rdoxx6, Ydoxx6, Feoxx6, Meoxx6, Teoxx6, Afoxx6, Hfoxx6, Ofoxx6, Vfoxx6, Cgoxx6; +wire Jgoxx6, Qgoxx6, Xgoxx6, Ehoxx6, Lhoxx6, Shoxx6, Zhoxx6, Gioxx6, Nioxx6, Uioxx6; +wire Bjoxx6, Ijoxx6, Pjoxx6, Wjoxx6, Dkoxx6, Kkoxx6, Rkoxx6, Ykoxx6, Floxx6, Mloxx6; +wire Tloxx6, Amoxx6, Hmoxx6, Omoxx6, Vmoxx6, Cnoxx6, Jnoxx6, Qnoxx6, Xnoxx6, Eooxx6; +wire Looxx6, Sooxx6, Zooxx6, Gpoxx6, Npoxx6, Upoxx6, Bqoxx6, Iqoxx6, Pqoxx6, Wqoxx6; +wire Droxx6, Kroxx6, Rroxx6, Yroxx6, Fsoxx6, Msoxx6, Tsoxx6, Atoxx6, Htoxx6, Otoxx6; +wire Vtoxx6, Cuoxx6, Juoxx6, Quoxx6, Xuoxx6, Evoxx6, Lvoxx6, Svoxx6, Zvoxx6, Gwoxx6; +wire Nwoxx6, Uwoxx6, Bxoxx6, Ixoxx6, Pxoxx6, Wxoxx6, Dyoxx6, Kyoxx6, Ryoxx6, Yyoxx6; +wire Fzoxx6, Mzoxx6, Tzoxx6, A0pxx6, H0pxx6, O0pxx6, V0pxx6, C1pxx6, J1pxx6, Q1pxx6; +wire X1pxx6, E2pxx6, L2pxx6, S2pxx6, Z2pxx6, G3pxx6, N3pxx6, U3pxx6, B4pxx6, I4pxx6; +wire P4pxx6, W4pxx6, D5pxx6, K5pxx6, R5pxx6, Y5pxx6, F6pxx6, M6pxx6, T6pxx6, A7pxx6; +wire H7pxx6, O7pxx6, V7pxx6, C8pxx6, J8pxx6, Q8pxx6, X8pxx6, E9pxx6, L9pxx6, S9pxx6; +wire Z9pxx6, Gapxx6, Napxx6, Uapxx6, Bbpxx6, Ibpxx6, Pbpxx6, Wbpxx6, Dcpxx6, Kcpxx6; +wire Rcpxx6, Ycpxx6, Fdpxx6, Mdpxx6, Tdpxx6, Aepxx6, Hepxx6, Oepxx6, Vepxx6, Cfpxx6; +wire Jfpxx6, Qfpxx6, Xfpxx6, Egpxx6, Lgpxx6, Sgpxx6, Zgpxx6, Ghpxx6, Nhpxx6, Uhpxx6; +wire Bipxx6, Iipxx6, Pipxx6, Wipxx6, Djpxx6, Kjpxx6, Rjpxx6, Yjpxx6, Fkpxx6, Mkpxx6; +wire Tkpxx6, Alpxx6, Hlpxx6, Olpxx6, Vlpxx6, Cmpxx6, Jmpxx6, Qmpxx6, Xmpxx6, Enpxx6; +wire Lnpxx6, Snpxx6, Znpxx6, Gopxx6, Nopxx6, Uopxx6, Bppxx6, Ippxx6, Pppxx6, Wppxx6; +wire Dqpxx6, Kqpxx6, Rqpxx6, Yqpxx6, Frpxx6, Mrpxx6, Trpxx6, Aspxx6, Hspxx6, Ospxx6; +wire Vspxx6, Ctpxx6, Jtpxx6, Qtpxx6, Xtpxx6, Eupxx6, Lupxx6, Supxx6, Zupxx6, Gvpxx6; +wire Nvpxx6, Uvpxx6, Bwpxx6, Iwpxx6, Pwpxx6, Wwpxx6, Dxpxx6, Kxpxx6, Rxpxx6, Yxpxx6; +wire Fypxx6, Mypxx6, Typxx6, Azpxx6, Hzpxx6, Ozpxx6, Vzpxx6, C0qxx6, J0qxx6, Q0qxx6; +wire X0qxx6, E1qxx6, L1qxx6, S1qxx6, Z1qxx6, G2qxx6, N2qxx6, U2qxx6, B3qxx6, I3qxx6; +wire P3qxx6, W3qxx6, D4qxx6, K4qxx6, R4qxx6, Y4qxx6, F5qxx6, M5qxx6, T5qxx6, A6qxx6; +wire H6qxx6, O6qxx6, V6qxx6, C7qxx6, J7qxx6, Q7qxx6, X7qxx6, E8qxx6, L8qxx6, S8qxx6; +wire Z8qxx6, G9qxx6, N9qxx6, U9qxx6, Baqxx6, Iaqxx6, Paqxx6, Waqxx6, Dbqxx6, Kbqxx6; +wire Rbqxx6, Ybqxx6, Fcqxx6, Mcqxx6, Tcqxx6, Adqxx6, Hdqxx6, Odqxx6, Vdqxx6, Ceqxx6; +wire Jeqxx6, Qeqxx6, Xeqxx6, Efqxx6, Lfqxx6, Sfqxx6, Zfqxx6, Ggqxx6, Ngqxx6, Ugqxx6; +wire Bhqxx6, Ihqxx6, Phqxx6, Whqxx6, Diqxx6, Kiqxx6, Riqxx6, Yiqxx6, Fjqxx6, Mjqxx6; +wire Tjqxx6, Akqxx6, Hkqxx6, Okqxx6, Vkqxx6, Clqxx6, Jlqxx6, Qlqxx6, Xlqxx6, Emqxx6; +wire Lmqxx6, Smqxx6, Zmqxx6, Gnqxx6, Nnqxx6, Unqxx6, Boqxx6, Ioqxx6, Poqxx6, Woqxx6; +wire Dpqxx6, Kpqxx6, Rpqxx6, Ypqxx6, Fqqxx6, Mqqxx6, Tqqxx6, Arqxx6, Hrqxx6, Orqxx6; +wire Vrqxx6, Csqxx6, Jsqxx6, Qsqxx6, Xsqxx6, Etqxx6, Ltqxx6, Stqxx6, Ztqxx6, Guqxx6; +wire Nuqxx6, Uuqxx6, Bvqxx6, Ivqxx6, Pvqxx6, Wvqxx6, Dwqxx6, Kwqxx6, Rwqxx6, Ywqxx6; +wire Fxqxx6, Mxqxx6, Txqxx6, Ayqxx6, Hyqxx6, Oyqxx6, Vyqxx6, Czqxx6, Jzqxx6, Qzqxx6; +wire Xzqxx6, E0rxx6, L0rxx6, S0rxx6, Z0rxx6, G1rxx6, N1rxx6, U1rxx6, B2rxx6, I2rxx6; +wire P2rxx6, W2rxx6, D3rxx6, K3rxx6, R3rxx6, Y3rxx6, F4rxx6, M4rxx6, T4rxx6, A5rxx6; +wire H5rxx6, O5rxx6, V5rxx6, C6rxx6, J6rxx6, Q6rxx6, X6rxx6, E7rxx6, L7rxx6, S7rxx6; +wire Z7rxx6, G8rxx6, N8rxx6, U8rxx6, B9rxx6, I9rxx6, P9rxx6, W9rxx6, Darxx6, Karxx6; +wire Rarxx6, Yarxx6, Fbrxx6, Mbrxx6, Tbrxx6, Acrxx6, Hcrxx6, Ocrxx6, Vcrxx6, Cdrxx6; +wire Jdrxx6, Qdrxx6, Xdrxx6, Eerxx6, Lerxx6, Serxx6, Zerxx6, Gfrxx6, Nfrxx6, Ufrxx6; +wire Bgrxx6, Igrxx6, Pgrxx6, Wgrxx6, Dhrxx6, Khrxx6, Rhrxx6, Yhrxx6, Firxx6, Mirxx6; +wire Tirxx6, Ajrxx6, Hjrxx6, Ojrxx6, Vjrxx6, Ckrxx6, Jkrxx6, Qkrxx6, Xkrxx6, Elrxx6; +wire Llrxx6, Slrxx6, Zlrxx6, Gmrxx6, Nmrxx6, Umrxx6, Bnrxx6, Inrxx6, Pnrxx6, Wnrxx6; +wire Dorxx6, Korxx6, Rorxx6, Yorxx6, Fprxx6, Mprxx6, Tprxx6, Aqrxx6, Hqrxx6, Oqrxx6; +wire Vqrxx6, Crrxx6, Jrrxx6, Qrrxx6, Xrrxx6, Esrxx6, Lsrxx6, Ssrxx6, Zsrxx6, Gtrxx6; +wire Ntrxx6, Utrxx6, Burxx6, Iurxx6, Purxx6, Wurxx6, Dvrxx6, Kvrxx6, Rvrxx6, Yvrxx6; +wire Fwrxx6, Mwrxx6, Twrxx6, Axrxx6, Hxrxx6, Oxrxx6, Vxrxx6, Cyrxx6, Jyrxx6, Qyrxx6; +wire Xyrxx6, Ezrxx6, Lzrxx6, Szrxx6, Zzrxx6, G0sxx6, N0sxx6, U0sxx6, B1sxx6, I1sxx6; +wire P1sxx6, W1sxx6, D2sxx6, K2sxx6, R2sxx6, Y2sxx6, F3sxx6, M3sxx6, T3sxx6, A4sxx6; +wire H4sxx6, O4sxx6, V4sxx6, C5sxx6, J5sxx6, Q5sxx6, X5sxx6, E6sxx6, L6sxx6, S6sxx6; +wire Z6sxx6, G7sxx6, N7sxx6, U7sxx6, B8sxx6, I8sxx6, P8sxx6, W8sxx6, D9sxx6, K9sxx6; +wire R9sxx6, Y9sxx6, Fasxx6, Masxx6, Tasxx6, Absxx6, Hbsxx6, Obsxx6, Vbsxx6, Ccsxx6; +wire Jcsxx6, Qcsxx6, Xcsxx6, Edsxx6, Ldsxx6, Sdsxx6, Zdsxx6, Gesxx6, Nesxx6, Uesxx6; +wire Bfsxx6, Ifsxx6, Pfsxx6, Wfsxx6, Dgsxx6, Kgsxx6, Rgsxx6, Ygsxx6, Fhsxx6, Mhsxx6; +wire Thsxx6, Aisxx6, Hisxx6, Oisxx6, Visxx6, Cjsxx6, Jjsxx6, Qjsxx6, Xjsxx6, Eksxx6; +wire Lksxx6, Sksxx6, Zksxx6, Glsxx6, Nlsxx6, Ulsxx6, Bmsxx6, Imsxx6, Pmsxx6, Wmsxx6; +wire Dnsxx6, Knsxx6, Rnsxx6, Ynsxx6, Fosxx6, Mosxx6, Tosxx6, Apsxx6, Hpsxx6, Opsxx6; +wire Vpsxx6, Cqsxx6, Jqsxx6, Qqsxx6, Xqsxx6, Ersxx6, Lrsxx6, Srsxx6, Zrsxx6, Gssxx6; +wire Nssxx6, Vssxx6, Dtsxx6, Ltsxx6, Ttsxx6, Busxx6, Jusxx6, Rusxx6, Zusxx6, Hvsxx6; +wire Pvsxx6, Xvsxx6, Fwsxx6, Nwsxx6, Vwsxx6, Dxsxx6, Lxsxx6, Txsxx6, Bysxx6, Jysxx6; +wire Rysxx6, Zysxx6, Hzsxx6, Pzsxx6, Xzsxx6, F0txx6, N0txx6, V0txx6, D1txx6, L1txx6; +wire T1txx6, B2txx6, J2txx6, R2txx6, Z2txx6, H3txx6, P3txx6, X3txx6, F4txx6, N4txx6; +wire V4txx6, D5txx6, L5txx6, T5txx6, B6txx6, J6txx6, R6txx6, Z6txx6, H7txx6, P7txx6; +wire X7txx6, F8txx6, N8txx6, V8txx6, D9txx6, L9txx6, T9txx6, Batxx6, Jatxx6, Ratxx6; +wire Zatxx6, Hbtxx6, Pbtxx6, Xbtxx6, Fctxx6, Nctxx6, Vctxx6, Ddtxx6, Ldtxx6, Tdtxx6; +wire Betxx6, Jetxx6, Retxx6, Zetxx6, Hftxx6, Pftxx6, Xftxx6, Fgtxx6, Ngtxx6, Vgtxx6; +wire Dhtxx6, Lhtxx6, Thtxx6, Bitxx6, Jitxx6, Ritxx6, Zitxx6, Hjtxx6, Pjtxx6, Xjtxx6; +wire Fktxx6, Nktxx6, Vktxx6, Dltxx6, Lltxx6, Tltxx6, Bmtxx6, Jmtxx6, Rmtxx6, Zmtxx6; +wire Hntxx6, Pntxx6, Xntxx6, Fotxx6, Notxx6, Votxx6, Dptxx6, Lptxx6, Tptxx6, Bqtxx6; +wire Jqtxx6, Rqtxx6, Zqtxx6, Hrtxx6, Prtxx6, Xrtxx6, Fstxx6, Nstxx6, Vstxx6, Dttxx6; +wire Lttxx6, Tttxx6, Butxx6, Jutxx6, Rutxx6, Zutxx6, Hvtxx6, Pvtxx6, Xvtxx6, Fwtxx6; +wire Nwtxx6, Vwtxx6, Dxtxx6, Lxtxx6, Txtxx6, Bytxx6, Jytxx6, Rytxx6, Zytxx6, Hztxx6; +wire Pztxx6, Xztxx6, F0uxx6, N0uxx6, V0uxx6, D1uxx6, L1uxx6, T1uxx6, B2uxx6, J2uxx6; +wire R2uxx6, Z2uxx6, H3uxx6, P3uxx6, X3uxx6, F4uxx6, N4uxx6, V4uxx6, D5uxx6, L5uxx6; +wire T5uxx6, B6uxx6, J6uxx6, R6uxx6, Z6uxx6, H7uxx6, P7uxx6, X7uxx6, F8uxx6, N8uxx6; +wire V8uxx6, D9uxx6, L9uxx6, T9uxx6, Bauxx6, Jauxx6, Rauxx6, Zauxx6, Hbuxx6, Pbuxx6; +wire Xbuxx6, Fcuxx6, Ncuxx6, Vcuxx6, Dduxx6, Lduxx6, Tduxx6, Beuxx6, Jeuxx6, Reuxx6; +wire Zeuxx6, Hfuxx6, Pfuxx6, Xfuxx6, Fguxx6, Nguxx6, Vguxx6, Dhuxx6, Lhuxx6, Thuxx6; +wire Biuxx6, Jiuxx6, Riuxx6, Ziuxx6, Hjuxx6, Pjuxx6, Xjuxx6, Fkuxx6, Nkuxx6, Vkuxx6; +wire Dluxx6, Lluxx6, Tluxx6, Bmuxx6, Jmuxx6, Rmuxx6, Zmuxx6, Hnuxx6, Pnuxx6, Xnuxx6; +wire Fouxx6, Nouxx6, Vouxx6, Dpuxx6, Lpuxx6, Tpuxx6, Bquxx6, Jquxx6, Rquxx6, Zquxx6; +wire Hruxx6, Pruxx6, Xruxx6, Fsuxx6, Nsuxx6, Vsuxx6, Dtuxx6, Ltuxx6, Ttuxx6, Buuxx6; +wire Juuxx6, Ruuxx6, Zuuxx6, Hvuxx6, Pvuxx6, Xvuxx6, Fwuxx6, Nwuxx6, Vwuxx6, Dxuxx6; +wire Lxuxx6, Txuxx6, Byuxx6, Jyuxx6, Ryuxx6, Zyuxx6, Hzuxx6, Pzuxx6, Xzuxx6, F0vxx6; +wire N0vxx6, V0vxx6, D1vxx6, L1vxx6, T1vxx6, B2vxx6, J2vxx6, R2vxx6, Z2vxx6, H3vxx6; +wire P3vxx6, X3vxx6, F4vxx6, N4vxx6, V4vxx6, D5vxx6, L5vxx6, T5vxx6, B6vxx6, J6vxx6; +wire R6vxx6, Z6vxx6, H7vxx6, P7vxx6, X7vxx6, F8vxx6, N8vxx6, V8vxx6, D9vxx6, L9vxx6; +wire T9vxx6, Bavxx6, Javxx6, Ravxx6, Zavxx6, Hbvxx6, Pbvxx6, Xbvxx6, Fcvxx6, Ncvxx6; +wire Vcvxx6, Ddvxx6, Ldvxx6, Tdvxx6, Bevxx6, Jevxx6, Revxx6, Zevxx6, Hfvxx6, Pfvxx6; +wire Xfvxx6, Fgvxx6, Ngvxx6, Vgvxx6, Dhvxx6, Lhvxx6, Thvxx6, Bivxx6, Jivxx6, Rivxx6; +wire Zivxx6, Hjvxx6, Pjvxx6, Xjvxx6, Fkvxx6, Nkvxx6, Vkvxx6, Dlvxx6, Llvxx6, Tlvxx6; +wire Bmvxx6, Jmvxx6, Rmvxx6, Zmvxx6, Hnvxx6, Pnvxx6, Xnvxx6, Fovxx6, Novxx6, Vovxx6; +wire Dpvxx6, Lpvxx6, Tpvxx6, Bqvxx6, Jqvxx6, Rqvxx6, Zqvxx6, Hrvxx6, Prvxx6, Xrvxx6; +wire Fsvxx6, Nsvxx6, Vsvxx6, Dtvxx6, Ltvxx6, Ttvxx6, Buvxx6, Juvxx6, Ruvxx6, Zuvxx6; +wire Hvvxx6, Pvvxx6, Xvvxx6, Fwvxx6, Nwvxx6, Vwvxx6, Dxvxx6, Lxvxx6, Txvxx6, Byvxx6; +wire Jyvxx6, Ryvxx6, Zyvxx6, Hzvxx6, Pzvxx6, Xzvxx6, F0wxx6, N0wxx6, V0wxx6, D1wxx6; +wire L1wxx6, T1wxx6, B2wxx6, J2wxx6, R2wxx6, Z2wxx6, H3wxx6, P3wxx6, X3wxx6, F4wxx6; +wire N4wxx6, V4wxx6, D5wxx6, L5wxx6, T5wxx6, B6wxx6, J6wxx6, R6wxx6, Z6wxx6, H7wxx6; +wire P7wxx6, X7wxx6, F8wxx6, N8wxx6, V8wxx6, D9wxx6, L9wxx6, T9wxx6, Bawxx6, Jawxx6; +wire Rawxx6, Zawxx6, Hbwxx6, Pbwxx6, Xbwxx6, Fcwxx6, Ncwxx6, Vcwxx6, Ddwxx6, Ldwxx6; +wire Tdwxx6, Bewxx6, Jewxx6, Rewxx6, Zewxx6, Hfwxx6, Pfwxx6, Xfwxx6, Fgwxx6, Ngwxx6; +wire Vgwxx6, Dhwxx6, Lhwxx6, Thwxx6, Biwxx6, Jiwxx6, Riwxx6, Ziwxx6, Hjwxx6, Pjwxx6; +wire Xjwxx6, Fkwxx6, Nkwxx6, Vkwxx6, Dlwxx6, Llwxx6, Tlwxx6, Bmwxx6, Jmwxx6, Rmwxx6; +wire Zmwxx6, Hnwxx6, Pnwxx6, Xnwxx6, Fowxx6, Nowxx6, Vowxx6, Dpwxx6, Lpwxx6, Tpwxx6; +wire Bqwxx6, Jqwxx6, Rqwxx6, Zqwxx6, Hrwxx6, Prwxx6, Xrwxx6, Fswxx6, Nswxx6, Vswxx6; +wire Dtwxx6, Ltwxx6, Ttwxx6, Buwxx6, Juwxx6, Ruwxx6, Zuwxx6, Hvwxx6, Pvwxx6, Xvwxx6; +wire Fwwxx6, Nwwxx6, Vwwxx6, Dxwxx6, Lxwxx6, Txwxx6, Bywxx6, Jywxx6, Rywxx6, Zywxx6; +wire Hzwxx6, Pzwxx6, Xzwxx6, F0xxx6, N0xxx6, V0xxx6, D1xxx6, L1xxx6, T1xxx6, B2xxx6; +wire J2xxx6, R2xxx6, Z2xxx6, H3xxx6, P3xxx6, X3xxx6, F4xxx6, N4xxx6, V4xxx6, D5xxx6; +wire L5xxx6, T5xxx6, B6xxx6, J6xxx6, R6xxx6, Z6xxx6, H7xxx6, P7xxx6, X7xxx6, F8xxx6; +wire N8xxx6, V8xxx6, D9xxx6, L9xxx6, T9xxx6, Baxxx6, Jaxxx6, Raxxx6, Zaxxx6, Hbxxx6; +wire Pbxxx6, Xbxxx6, Fcxxx6, Ncxxx6, Vcxxx6, Ddxxx6, Ldxxx6, Tdxxx6, Bexxx6, Jexxx6; +wire Rexxx6, Zexxx6, Hfxxx6, Pfxxx6, Xfxxx6, Fgxxx6, Ngxxx6, Vgxxx6, Dhxxx6, Lhxxx6; +wire Thxxx6, Bixxx6, Jixxx6, Rixxx6, Zixxx6, Hjxxx6, Pjxxx6, Xjxxx6, Fkxxx6, Nkxxx6; +wire Vkxxx6, Dlxxx6, Llxxx6, Tlxxx6, Bmxxx6, Jmxxx6, Rmxxx6, Zmxxx6, Hnxxx6, Pnxxx6; +wire Xnxxx6, Foxxx6, Noxxx6, Voxxx6, Dpxxx6, Lpxxx6, Tpxxx6, Bqxxx6, Jqxxx6, Rqxxx6; +wire Zqxxx6, Hrxxx6, Prxxx6, Xrxxx6, Fsxxx6, Nsxxx6, Vsxxx6, Dtxxx6, Ltxxx6, Ttxxx6; +wire Buxxx6, Juxxx6, Ruxxx6, Zuxxx6, Hvxxx6, Pvxxx6, Xvxxx6, Fwxxx6, Nwxxx6, Vwxxx6; +wire Dxxxx6, Lxxxx6, Txxxx6, Byxxx6, Jyxxx6, Ryxxx6, Zyxxx6, Hzxxx6, Pzxxx6, Xzxxx6; +wire F0yxx6, N0yxx6, V0yxx6, D1yxx6, L1yxx6, T1yxx6, B2yxx6, J2yxx6, R2yxx6, Z2yxx6; +wire H3yxx6, P3yxx6, X3yxx6, F4yxx6, N4yxx6, V4yxx6, D5yxx6, L5yxx6, T5yxx6, B6yxx6; +wire J6yxx6, R6yxx6, Z6yxx6, H7yxx6, P7yxx6, X7yxx6, F8yxx6, N8yxx6, V8yxx6, D9yxx6; +wire L9yxx6, T9yxx6, Bayxx6, Jayxx6, Rayxx6, Zayxx6, Hbyxx6, Pbyxx6, Xbyxx6, Fcyxx6; +wire Ncyxx6, Vcyxx6, Ddyxx6, Ldyxx6, Tdyxx6, Beyxx6, Jeyxx6, Reyxx6, Zeyxx6, Hfyxx6; +wire Pfyxx6, Xfyxx6, Fgyxx6, Ngyxx6, Vgyxx6, Dhyxx6, Lhyxx6, Thyxx6, Biyxx6, Jiyxx6; +wire Riyxx6, Ziyxx6, Hjyxx6, Pjyxx6, Xjyxx6, Fkyxx6, Nkyxx6, Vkyxx6, Dlyxx6, Llyxx6; +wire Tlyxx6, Bmyxx6, Jmyxx6, Rmyxx6, Zmyxx6, Hnyxx6, Pnyxx6, Xnyxx6, Foyxx6, Noyxx6; +wire Voyxx6, Dpyxx6, Lpyxx6, Tpyxx6, Bqyxx6, Jqyxx6, Rqyxx6, Zqyxx6, Hryxx6, Pryxx6; +wire Xryxx6, Fsyxx6, Nsyxx6, Vsyxx6, Dtyxx6, Ltyxx6, Ttyxx6, Buyxx6, Juyxx6, Ruyxx6; +wire Zuyxx6, Hvyxx6, Pvyxx6, Xvyxx6, Fwyxx6, Nwyxx6, Vwyxx6, Dxyxx6, Lxyxx6, Txyxx6; +wire Byyxx6, Jyyxx6, Ryyxx6, Zyyxx6, Hzyxx6, Pzyxx6, Xzyxx6, F0zxx6, N0zxx6, V0zxx6; +wire D1zxx6, L1zxx6, T1zxx6, B2zxx6, J2zxx6, R2zxx6, Z2zxx6, H3zxx6, P3zxx6, X3zxx6; +wire F4zxx6, N4zxx6, V4zxx6, D5zxx6, L5zxx6, T5zxx6, B6zxx6, J6zxx6, R6zxx6, Z6zxx6; +wire H7zxx6, P7zxx6, X7zxx6, F8zxx6, N8zxx6, V8zxx6, D9zxx6, L9zxx6, T9zxx6, Bazxx6; +wire Jazxx6, Razxx6, Zazxx6, Hbzxx6, Pbzxx6, Xbzxx6, Fczxx6, Nczxx6, Vczxx6, Ddzxx6; +wire Ldzxx6, Tdzxx6, Bezxx6, Jezxx6, Rezxx6, Zezxx6, Hfzxx6, Pfzxx6, Xfzxx6, Fgzxx6; +wire Ngzxx6, Vgzxx6, Dhzxx6, Lhzxx6, Thzxx6, Bizxx6, Jizxx6, Rizxx6, Zizxx6, Hjzxx6; +wire Pjzxx6, Xjzxx6, Fkzxx6, Nkzxx6, Vkzxx6, Dlzxx6, Llzxx6, Tlzxx6, Bmzxx6, Jmzxx6; +wire Rmzxx6, Zmzxx6, Hnzxx6, Pnzxx6, Xnzxx6, Fozxx6, Nozxx6, Vozxx6, Dpzxx6, Lpzxx6; +wire Tpzxx6, Bqzxx6, Jqzxx6, Rqzxx6, Zqzxx6, Hrzxx6, Przxx6, Xrzxx6, Fszxx6, Nszxx6; +wire Vszxx6, Dtzxx6, Ltzxx6, Ttzxx6, Buzxx6, Juzxx6, Ruzxx6, Zuzxx6, Hvzxx6, Pvzxx6; +wire Xvzxx6, Fwzxx6, Nwzxx6, Vwzxx6, Dxzxx6, Lxzxx6, Txzxx6, Byzxx6, Jyzxx6, Ryzxx6; +wire Zyzxx6, Hzzxx6, Pzzxx6, Xzzxx6, F00yx6, N00yx6, V00yx6, D10yx6, L10yx6, T10yx6; +wire B20yx6, J20yx6, R20yx6, Z20yx6, H30yx6, P30yx6, X30yx6, F40yx6, N40yx6, V40yx6; +wire D50yx6, L50yx6, T50yx6, B60yx6, J60yx6, R60yx6, Z60yx6, H70yx6, P70yx6, X70yx6; +wire F80yx6, N80yx6, V80yx6, D90yx6, L90yx6, T90yx6, Ba0yx6, Ja0yx6, Ra0yx6, Za0yx6; +wire Hb0yx6, Pb0yx6, Xb0yx6, Fc0yx6, Nc0yx6, Vc0yx6, Dd0yx6, Ld0yx6, Td0yx6, Be0yx6; +wire Je0yx6, Re0yx6, Ze0yx6, Hf0yx6, Pf0yx6, Xf0yx6, Fg0yx6, Ng0yx6, Vg0yx6, Dh0yx6; +wire Lh0yx6, Th0yx6, Bi0yx6, Ji0yx6, Ri0yx6, Zi0yx6, Hj0yx6, Pj0yx6, Xj0yx6, Fk0yx6; +wire Nk0yx6, Vk0yx6, Dl0yx6, Ll0yx6, Tl0yx6, Bm0yx6, Jm0yx6, Rm0yx6, Zm0yx6, Hn0yx6; +wire Pn0yx6, Xn0yx6, Fo0yx6, No0yx6, Vo0yx6, Dp0yx6, Lp0yx6, Tp0yx6, Bq0yx6, Jq0yx6; +wire Rq0yx6, Zq0yx6, Hr0yx6, Pr0yx6, Xr0yx6, Fs0yx6, Ns0yx6, Vs0yx6, Dt0yx6, Lt0yx6; +wire Tt0yx6, Bu0yx6, Ju0yx6, Ru0yx6, Zu0yx6, Hv0yx6, Pv0yx6, Xv0yx6, Fw0yx6, Nw0yx6; +wire Vw0yx6, Dx0yx6, Lx0yx6, Tx0yx6, By0yx6, Jy0yx6, Ry0yx6, Zy0yx6, Hz0yx6, Pz0yx6; +wire Xz0yx6, F01yx6, N01yx6, V01yx6, D11yx6, L11yx6, T11yx6, B21yx6, J21yx6, R21yx6; +wire Z21yx6, H31yx6, P31yx6, X31yx6, F41yx6, N41yx6, V41yx6, D51yx6, L51yx6, T51yx6; +wire B61yx6, J61yx6, R61yx6, Z61yx6, H71yx6, P71yx6, X71yx6, F81yx6, N81yx6, V81yx6; +wire D91yx6, L91yx6, T91yx6, Ba1yx6, Ja1yx6, Ra1yx6, Za1yx6, Hb1yx6, Pb1yx6, Xb1yx6; +wire Fc1yx6, Nc1yx6, Vc1yx6, Dd1yx6, Ld1yx6, Td1yx6, Be1yx6, Je1yx6, Re1yx6, Ze1yx6; +wire Hf1yx6, Pf1yx6, Xf1yx6, Fg1yx6, Ng1yx6, Vg1yx6, Dh1yx6, Lh1yx6, Th1yx6, Bi1yx6; +wire Ji1yx6, Ri1yx6, Zi1yx6, Hj1yx6, Pj1yx6, Xj1yx6, Fk1yx6, Nk1yx6, Vk1yx6, Dl1yx6; +wire Ll1yx6, Tl1yx6, Bm1yx6, Jm1yx6, Rm1yx6, Zm1yx6, Hn1yx6, Pn1yx6, Xn1yx6, Fo1yx6; +wire No1yx6, Vo1yx6, Dp1yx6, Lp1yx6, Tp1yx6, Bq1yx6, Jq1yx6, Rq1yx6, Zq1yx6, Hr1yx6; +wire Pr1yx6, Xr1yx6, Fs1yx6, Ns1yx6, Vs1yx6, Dt1yx6, Lt1yx6, Tt1yx6, Bu1yx6, Ju1yx6; +wire Ru1yx6, Zu1yx6, Hv1yx6, Pv1yx6, Xv1yx6, Fw1yx6, Nw1yx6, Vw1yx6, Dx1yx6, Lx1yx6; +wire Tx1yx6, By1yx6, Jy1yx6, Ry1yx6, Zy1yx6, Hz1yx6, Pz1yx6, Xz1yx6, F02yx6, N02yx6; +wire V02yx6, D12yx6, L12yx6, T12yx6, B22yx6, J22yx6, R22yx6, Z22yx6, H32yx6, P32yx6; +wire X32yx6, F42yx6, N42yx6, V42yx6, D52yx6, L52yx6, T52yx6, B62yx6, J62yx6, R62yx6; +wire Z62yx6, H72yx6, P72yx6, X72yx6, F82yx6, N82yx6, V82yx6, D92yx6, L92yx6, T92yx6; +wire Ba2yx6, Ja2yx6, Ra2yx6, Za2yx6, Hb2yx6, Pb2yx6, Xb2yx6, Fc2yx6, Nc2yx6, Vc2yx6; +wire Dd2yx6, Ld2yx6, Td2yx6, Be2yx6, Je2yx6, Re2yx6, Ze2yx6, Hf2yx6, Pf2yx6, Xf2yx6; +wire Fg2yx6, Ng2yx6, Vg2yx6, Dh2yx6, Lh2yx6, Th2yx6, Bi2yx6, Ji2yx6, Ri2yx6, Zi2yx6; +wire Hj2yx6, Pj2yx6, Xj2yx6, Fk2yx6, Nk2yx6, Vk2yx6, Dl2yx6, Ll2yx6, Tl2yx6, Bm2yx6; +wire Jm2yx6, Rm2yx6, Zm2yx6, Hn2yx6, Pn2yx6, Xn2yx6, Fo2yx6, No2yx6, Vo2yx6, Dp2yx6; +wire Lp2yx6, Tp2yx6, Bq2yx6, Jq2yx6, Rq2yx6, Zq2yx6, Hr2yx6, Pr2yx6, Xr2yx6, Fs2yx6; +wire Ns2yx6, Vs2yx6, Dt2yx6, Lt2yx6, Tt2yx6, Bu2yx6, Ju2yx6, Ru2yx6, Zu2yx6, Hv2yx6; +wire Pv2yx6, Xv2yx6, Fw2yx6, Nw2yx6, Vw2yx6, Dx2yx6, Lx2yx6, Tx2yx6, By2yx6, Jy2yx6; +wire Ry2yx6, Zy2yx6, Hz2yx6, Pz2yx6, Xz2yx6, F03yx6, N03yx6, V03yx6, D13yx6, L13yx6; +wire T13yx6, B23yx6, J23yx6, R23yx6, Z23yx6, H33yx6, P33yx6, X33yx6, F43yx6, N43yx6; +wire V43yx6, D53yx6, L53yx6, T53yx6, B63yx6, J63yx6, R63yx6, Z63yx6, H73yx6, P73yx6; +wire X73yx6, F83yx6, N83yx6, V83yx6, D93yx6, L93yx6, T93yx6, Ba3yx6, Ja3yx6, Ra3yx6; +wire Za3yx6, Hb3yx6, Pb3yx6, Xb3yx6, Fc3yx6, Nc3yx6, Vc3yx6, Dd3yx6, Ld3yx6, Td3yx6; +wire Be3yx6, Je3yx6, Re3yx6, Ze3yx6, Hf3yx6, Pf3yx6, Xf3yx6, Fg3yx6, Ng3yx6, Vg3yx6; +wire Dh3yx6, Lh3yx6, Th3yx6, Bi3yx6, Ji3yx6, Ri3yx6, Zi3yx6, Hj3yx6, Pj3yx6, Xj3yx6; +wire Fk3yx6, Nk3yx6, Vk3yx6, Dl3yx6, Ll3yx6, Tl3yx6, Bm3yx6, Jm3yx6, Rm3yx6, Zm3yx6; +wire Hn3yx6, Pn3yx6, Xn3yx6, Fo3yx6, No3yx6, Vo3yx6, Dp3yx6, Lp3yx6, Tp3yx6, Bq3yx6; +wire Jq3yx6, Rq3yx6, Zq3yx6, Hr3yx6, Pr3yx6, Xr3yx6, Fs3yx6, Ns3yx6, Vs3yx6, Dt3yx6; +wire Lt3yx6, Tt3yx6, Bu3yx6, Ju3yx6, Ru3yx6, Zu3yx6, Hv3yx6, Pv3yx6, Xv3yx6, Fw3yx6; +wire Nw3yx6, Vw3yx6, Dx3yx6, Lx3yx6, Tx3yx6, By3yx6, Jy3yx6, Ry3yx6, Zy3yx6, Hz3yx6; +wire Pz3yx6, Xz3yx6, F04yx6, N04yx6, V04yx6, D14yx6, L14yx6, T14yx6, B24yx6, J24yx6; +wire R24yx6, Z24yx6, H34yx6, P34yx6, X34yx6, F44yx6, N44yx6, V44yx6, D54yx6, L54yx6; +wire T54yx6, B64yx6, J64yx6, R64yx6, Z64yx6, H74yx6, P74yx6, X74yx6, F84yx6, N84yx6; +wire V84yx6, D94yx6, L94yx6, T94yx6, Ba4yx6, Ja4yx6, Ra4yx6, Za4yx6, Hb4yx6, Pb4yx6; +wire Xb4yx6, Fc4yx6, Nc4yx6, Vc4yx6, Dd4yx6, Ld4yx6, Td4yx6, Be4yx6, Je4yx6, Re4yx6; +wire Ze4yx6, Hf4yx6, Pf4yx6, Xf4yx6, Fg4yx6, Ng4yx6, Vg4yx6, Dh4yx6, Lh4yx6, Th4yx6; +wire Bi4yx6, Ji4yx6, Ri4yx6, Zi4yx6, Hj4yx6, Pj4yx6, Xj4yx6, Fk4yx6, Nk4yx6, Vk4yx6; +wire Dl4yx6, Ll4yx6, Tl4yx6, Bm4yx6, Jm4yx6, Rm4yx6, Zm4yx6, Hn4yx6, Pn4yx6, Xn4yx6; +wire Fo4yx6, No4yx6, Vo4yx6, Dp4yx6, Lp4yx6, Tp4yx6, Bq4yx6, Jq4yx6, Rq4yx6, Zq4yx6; +wire Hr4yx6, Pr4yx6, Xr4yx6, Fs4yx6, Ns4yx6, Vs4yx6, Dt4yx6, Lt4yx6, Tt4yx6, Bu4yx6; +wire Ju4yx6, Ru4yx6, Zu4yx6, Hv4yx6, Pv4yx6, Xv4yx6, Fw4yx6, Nw4yx6, Vw4yx6, Dx4yx6; +wire Lx4yx6, Tx4yx6, By4yx6, Jy4yx6, Ry4yx6, Zy4yx6, Hz4yx6, Pz4yx6, Xz4yx6, F05yx6; +wire N05yx6, V05yx6, D15yx6, L15yx6, T15yx6, B25yx6, J25yx6, R25yx6, Z25yx6, H35yx6; +wire P35yx6, X35yx6, F45yx6, N45yx6, V45yx6, D55yx6, L55yx6, T55yx6, B65yx6, J65yx6; +wire R65yx6, Z65yx6, H75yx6, P75yx6, X75yx6, F85yx6, N85yx6, V85yx6, D95yx6, L95yx6; +wire T95yx6, Ba5yx6, Ja5yx6, Ra5yx6, Za5yx6, Hb5yx6, Pb5yx6, Xb5yx6, Fc5yx6, Nc5yx6; +wire Vc5yx6, Dd5yx6, Ld5yx6, Td5yx6, Be5yx6, Je5yx6, Re5yx6, Ze5yx6, Hf5yx6, Pf5yx6; +wire Xf5yx6, Fg5yx6, Ng5yx6, Vg5yx6, Dh5yx6, Lh5yx6, Th5yx6, Bi5yx6, Ji5yx6, Ri5yx6; +wire Zi5yx6, Hj5yx6, Pj5yx6, Xj5yx6, Fk5yx6, Nk5yx6, Vk5yx6, Dl5yx6, Ll5yx6, Tl5yx6; +wire Bm5yx6, Jm5yx6, Rm5yx6, Zm5yx6, Hn5yx6, Pn5yx6, Xn5yx6, Fo5yx6, No5yx6, Vo5yx6; +wire Dp5yx6, Lp5yx6, Tp5yx6, Bq5yx6, Jq5yx6, Rq5yx6, Zq5yx6, Hr5yx6, Pr5yx6, Xr5yx6; +wire Fs5yx6, Ns5yx6, Vs5yx6, Dt5yx6, Lt5yx6, Tt5yx6, Bu5yx6, Ju5yx6, Ru5yx6, Zu5yx6; +wire Hv5yx6, Pv5yx6, Xv5yx6, Fw5yx6, Nw5yx6, Vw5yx6, Dx5yx6, Lx5yx6, Tx5yx6, By5yx6; +wire Jy5yx6, Ry5yx6, Zy5yx6, Hz5yx6, Pz5yx6, Xz5yx6, F06yx6, N06yx6, V06yx6, D16yx6; +wire L16yx6, T16yx6, B26yx6, J26yx6, R26yx6, Z26yx6, H36yx6, P36yx6, X36yx6, F46yx6; +wire N46yx6, V46yx6, D56yx6, L56yx6, T56yx6, B66yx6, J66yx6, R66yx6, Z66yx6, H76yx6; +wire P76yx6, X76yx6, F86yx6, N86yx6, V86yx6, D96yx6, L96yx6, T96yx6, Ba6yx6, Ja6yx6; +wire Ra6yx6, Za6yx6, Hb6yx6, Pb6yx6, Xb6yx6, Fc6yx6, Nc6yx6, Vc6yx6, Dd6yx6, Ld6yx6; +wire Td6yx6, Be6yx6, Je6yx6, Re6yx6, Ze6yx6, Hf6yx6, Pf6yx6, Xf6yx6, Fg6yx6, Ng6yx6; +wire Vg6yx6, Dh6yx6, Lh6yx6, Th6yx6, Bi6yx6, Ji6yx6, Ri6yx6, Zi6yx6, Hj6yx6, Pj6yx6; +wire Xj6yx6, Fk6yx6, Nk6yx6, Vk6yx6, Dl6yx6, Ll6yx6, Tl6yx6, Bm6yx6, Jm6yx6, Rm6yx6; +wire Zm6yx6, Hn6yx6, Pn6yx6, Xn6yx6, Fo6yx6, No6yx6, Vo6yx6, Dp6yx6, Lp6yx6, Tp6yx6; +wire Bq6yx6, Jq6yx6, Rq6yx6, Zq6yx6, Hr6yx6, Pr6yx6, Xr6yx6, Fs6yx6, Ns6yx6, Vs6yx6; +wire Dt6yx6, Lt6yx6, Tt6yx6, Bu6yx6, Ju6yx6, Ru6yx6, Zu6yx6, Hv6yx6, Pv6yx6, Xv6yx6; +wire Fw6yx6, Nw6yx6, Vw6yx6, Dx6yx6, Lx6yx6, Tx6yx6, By6yx6, Jy6yx6, Ry6yx6, Zy6yx6; +wire Hz6yx6, Pz6yx6, Xz6yx6, F07yx6, N07yx6, V07yx6, D17yx6, L17yx6, T17yx6, B27yx6; +wire J27yx6, R27yx6, Z27yx6, H37yx6, P37yx6, X37yx6, F47yx6, N47yx6, V47yx6, D57yx6; +wire L57yx6, T57yx6, B67yx6, J67yx6, R67yx6, Z67yx6, H77yx6, P77yx6, X77yx6, F87yx6; +wire N87yx6, V87yx6, D97yx6, L97yx6, T97yx6, Ba7yx6, Ja7yx6, Ra7yx6, Za7yx6, Hb7yx6; +wire Pb7yx6, Xb7yx6, Fc7yx6, Nc7yx6, Vc7yx6, Dd7yx6, Ld7yx6, Td7yx6, Be7yx6, Je7yx6; +wire Re7yx6, Ze7yx6, Hf7yx6, Pf7yx6, Xf7yx6, Fg7yx6, Ng7yx6, Vg7yx6, Dh7yx6, Lh7yx6; +wire Th7yx6, Bi7yx6, Ji7yx6, Ri7yx6, Zi7yx6, Hj7yx6, Pj7yx6, Xj7yx6, Fk7yx6, Nk7yx6; +wire Vk7yx6, Dl7yx6, Ll7yx6, Tl7yx6, Bm7yx6, Jm7yx6, Rm7yx6, Zm7yx6, Hn7yx6, Pn7yx6; +wire Xn7yx6, Fo7yx6, No7yx6, Vo7yx6, Dp7yx6, Lp7yx6, Tp7yx6, Bq7yx6, Jq7yx6, Rq7yx6; +wire Zq7yx6, Hr7yx6, Pr7yx6, Xr7yx6, Fs7yx6, Ns7yx6, Vs7yx6, Dt7yx6, Lt7yx6, Tt7yx6; +wire Bu7yx6, Ju7yx6, Ru7yx6, Zu7yx6, Hv7yx6, Pv7yx6, Xv7yx6, Fw7yx6, Nw7yx6, Vw7yx6; +wire Dx7yx6, Lx7yx6, Tx7yx6, By7yx6, Jy7yx6, Ry7yx6, Zy7yx6, Hz7yx6, Pz7yx6, Xz7yx6; +wire F08yx6, N08yx6, V08yx6, D18yx6, L18yx6, T18yx6, B28yx6, J28yx6, R28yx6, Z28yx6; +wire H38yx6, P38yx6, X38yx6, F48yx6, N48yx6, V48yx6, D58yx6, L58yx6, T58yx6, B68yx6; +wire J68yx6, R68yx6, Z68yx6, H78yx6, P78yx6, X78yx6, F88yx6, N88yx6, V88yx6, D98yx6; +wire L98yx6, T98yx6, Ba8yx6, Ja8yx6, Ra8yx6, Za8yx6, Hb8yx6, Pb8yx6, Xb8yx6, Fc8yx6; +wire Nc8yx6, Vc8yx6, Dd8yx6, Ld8yx6, Td8yx6, Be8yx6, Je8yx6, Re8yx6, Ze8yx6, Hf8yx6; +wire Pf8yx6, Xf8yx6, Fg8yx6, Ng8yx6, Vg8yx6, Dh8yx6, Lh8yx6, Th8yx6, Bi8yx6, Ji8yx6; +wire Ri8yx6, Zi8yx6, Hj8yx6, Pj8yx6, Xj8yx6, Fk8yx6, Nk8yx6, Vk8yx6, Dl8yx6, Ll8yx6; +wire Tl8yx6, Bm8yx6, Jm8yx6, Rm8yx6, Zm8yx6, Hn8yx6, Pn8yx6, Xn8yx6, Fo8yx6, No8yx6; +wire Vo8yx6, Dp8yx6, Lp8yx6, Tp8yx6, Bq8yx6, Jq8yx6, Rq8yx6, Zq8yx6, Hr8yx6, Pr8yx6; +wire Xr8yx6, Fs8yx6, Ns8yx6, Vs8yx6, Dt8yx6, Lt8yx6, Tt8yx6, Bu8yx6, Ju8yx6, Ru8yx6; +wire Zu8yx6, Hv8yx6, Pv8yx6, Xv8yx6, Fw8yx6, Nw8yx6, Vw8yx6, Dx8yx6, Lx8yx6, Tx8yx6; +wire By8yx6, Jy8yx6, Ry8yx6, Zy8yx6, Hz8yx6, Pz8yx6, Xz8yx6, F09yx6, N09yx6, V09yx6; +wire D19yx6, L19yx6, T19yx6, B29yx6, J29yx6, R29yx6, Z29yx6, H39yx6, P39yx6, X39yx6; +wire F49yx6, N49yx6, V49yx6, D59yx6, L59yx6, T59yx6, B69yx6, J69yx6, R69yx6, Z69yx6; +wire H79yx6, P79yx6, X79yx6, F89yx6, N89yx6, V89yx6, D99yx6, L99yx6, T99yx6, Ba9yx6; +wire Ja9yx6, Ra9yx6, Za9yx6, Hb9yx6, Pb9yx6, Xb9yx6, Fc9yx6, Nc9yx6, Vc9yx6, Dd9yx6; +wire Ld9yx6, Td9yx6, Be9yx6, Je9yx6, Re9yx6, Ze9yx6, Hf9yx6, Pf9yx6, Xf9yx6, Fg9yx6; +wire Ng9yx6, Vg9yx6, Dh9yx6, Lh9yx6, Th9yx6, Bi9yx6, Ji9yx6, Ri9yx6, Zi9yx6, Hj9yx6; +wire Pj9yx6, Xj9yx6, Fk9yx6, Nk9yx6, Vk9yx6, Dl9yx6, Ll9yx6, Tl9yx6, Bm9yx6, Jm9yx6; +wire Rm9yx6, Zm9yx6, Hn9yx6, Pn9yx6, Xn9yx6, Fo9yx6, No9yx6, Vo9yx6, Dp9yx6, Lp9yx6; +wire Tp9yx6, Bq9yx6, Jq9yx6, Rq9yx6, Zq9yx6, Hr9yx6, Pr9yx6, Xr9yx6, Fs9yx6, Ns9yx6; +wire Vs9yx6, Dt9yx6, Lt9yx6, Tt9yx6, Bu9yx6, Ju9yx6, Ru9yx6, Zu9yx6, Hv9yx6, Pv9yx6; +wire Xv9yx6, Fw9yx6, Nw9yx6, Vw9yx6, Dx9yx6, Lx9yx6, Tx9yx6, By9yx6, Jy9yx6, Ry9yx6; +wire Zy9yx6, Hz9yx6, Pz9yx6, Xz9yx6, F0ayx6, N0ayx6, V0ayx6, D1ayx6, L1ayx6, T1ayx6; +wire B2ayx6, J2ayx6, R2ayx6, Z2ayx6, H3ayx6, P3ayx6, X3ayx6, F4ayx6, N4ayx6, V4ayx6; +wire D5ayx6, L5ayx6, T5ayx6, B6ayx6, J6ayx6, R6ayx6, Z6ayx6, H7ayx6, P7ayx6, X7ayx6; +wire F8ayx6, N8ayx6, V8ayx6, D9ayx6, L9ayx6, T9ayx6, Baayx6, Jaayx6, Raayx6, Zaayx6; +wire Hbayx6, Pbayx6, Xbayx6, Fcayx6, Ncayx6, Vcayx6, Ddayx6, Ldayx6, Tdayx6, Beayx6; +wire Jeayx6, Reayx6, Zeayx6, Hfayx6, Pfayx6, Xfayx6, Fgayx6, Ngayx6, Vgayx6, Dhayx6; +wire Lhayx6, Thayx6, Biayx6, Jiayx6, Riayx6, Ziayx6, Hjayx6, Pjayx6, Xjayx6, Fkayx6; +wire Nkayx6, Vkayx6, Dlayx6, Llayx6, Tlayx6, Bmayx6, Jmayx6, Rmayx6, Zmayx6, Hnayx6; +wire Pnayx6, Xnayx6, Foayx6, Noayx6, Voayx6, Dpayx6, Lpayx6, Tpayx6, Bqayx6, Jqayx6; +wire Rqayx6, Zqayx6, Hrayx6, Prayx6, Xrayx6, Fsayx6, Nsayx6, Vsayx6, Dtayx6, Ltayx6; +wire Ttayx6, Buayx6, Juayx6, Ruayx6, Zuayx6, Hvayx6, Pvayx6, Xvayx6, Fwayx6, Nwayx6; +wire Vwayx6, Dxayx6, Lxayx6, Txayx6, Byayx6, Jyayx6, Ryayx6, Zyayx6, Hzayx6, Pzayx6; +wire Xzayx6, F0byx6, N0byx6, V0byx6, D1byx6, L1byx6, T1byx6, B2byx6, J2byx6, R2byx6; +wire Z2byx6, H3byx6, P3byx6, X3byx6, F4byx6, N4byx6, V4byx6, D5byx6, L5byx6, T5byx6; +wire B6byx6, J6byx6, R6byx6, Z6byx6, H7byx6, P7byx6, X7byx6, F8byx6, N8byx6, V8byx6; +wire D9byx6, L9byx6, T9byx6, Babyx6, Jabyx6, Rabyx6, Zabyx6, Hbbyx6, Pbbyx6, Xbbyx6; +wire Fcbyx6, Ncbyx6, Vcbyx6, Ddbyx6, Ldbyx6, Tdbyx6, Bebyx6, Jebyx6, Rebyx6, Zebyx6; +wire Hfbyx6, Pfbyx6, Xfbyx6, Fgbyx6, Ngbyx6, Vgbyx6, Dhbyx6, Lhbyx6, Thbyx6, Bibyx6; +wire Jibyx6, Ribyx6, Zibyx6, Hjbyx6, Pjbyx6, Xjbyx6, Fkbyx6, Nkbyx6, Vkbyx6, Dlbyx6; +wire Llbyx6, Tlbyx6, Bmbyx6, Jmbyx6, Rmbyx6, Zmbyx6, Hnbyx6, Pnbyx6, Xnbyx6, Fobyx6; +wire Nobyx6, Vobyx6, Dpbyx6, Lpbyx6, Tpbyx6, Bqbyx6, Jqbyx6, Rqbyx6, Zqbyx6, Hrbyx6; +wire Prbyx6, Xrbyx6, Fsbyx6, Nsbyx6, Vsbyx6, Dtbyx6, Ltbyx6, Ttbyx6, Bubyx6, Jubyx6; +wire Rubyx6, Zubyx6, Hvbyx6, Pvbyx6, Xvbyx6, Fwbyx6, Nwbyx6, Vwbyx6, Dxbyx6, Lxbyx6; +wire Txbyx6, Bybyx6, Jybyx6, Rybyx6, Zybyx6, Hzbyx6, Pzbyx6, Xzbyx6, F0cyx6, N0cyx6; +wire V0cyx6, D1cyx6, L1cyx6, T1cyx6, B2cyx6, J2cyx6, R2cyx6, Z2cyx6, H3cyx6, P3cyx6; +wire X3cyx6, F4cyx6, N4cyx6, V4cyx6, D5cyx6, L5cyx6, T5cyx6, B6cyx6, J6cyx6, R6cyx6; +wire Z6cyx6, H7cyx6, P7cyx6, X7cyx6, F8cyx6, N8cyx6, V8cyx6, D9cyx6, L9cyx6, T9cyx6; +wire Bacyx6, Jacyx6, Racyx6, Zacyx6, Hbcyx6, Pbcyx6, Xbcyx6, Fccyx6, Nccyx6, Vccyx6; +wire Ddcyx6, Ldcyx6, Tdcyx6, Becyx6, Jecyx6, Recyx6, Zecyx6, Hfcyx6, Pfcyx6, Xfcyx6; +wire Fgcyx6, Ngcyx6, Vgcyx6, Dhcyx6, Lhcyx6, Thcyx6, Bicyx6, Jicyx6, Ricyx6, Zicyx6; +wire Hjcyx6, Pjcyx6, Xjcyx6, Fkcyx6, Nkcyx6, Vkcyx6, Dlcyx6, Llcyx6, Tlcyx6, Bmcyx6; +wire Jmcyx6, Rmcyx6, Zmcyx6, Hncyx6, Pncyx6, Xncyx6, Focyx6, Nocyx6, Vocyx6, Dpcyx6; +wire Lpcyx6, Tpcyx6, Bqcyx6, Jqcyx6, Rqcyx6, Zqcyx6, Hrcyx6, Prcyx6, Xrcyx6, Fscyx6; +wire Nscyx6, Vscyx6, Dtcyx6, Ltcyx6, Ttcyx6, Bucyx6, Jucyx6, Rucyx6, Zucyx6, Hvcyx6; +wire Pvcyx6, Xvcyx6, Fwcyx6, Nwcyx6, Vwcyx6, Dxcyx6, Lxcyx6, Txcyx6, Bycyx6, Jycyx6; +wire Rycyx6, Zycyx6, Hzcyx6, Pzcyx6, Xzcyx6, F0dyx6, N0dyx6, V0dyx6, D1dyx6, L1dyx6; +wire T1dyx6, B2dyx6, J2dyx6, R2dyx6, Z2dyx6, H3dyx6, P3dyx6, X3dyx6, F4dyx6, N4dyx6; +wire V4dyx6, D5dyx6, L5dyx6, T5dyx6, B6dyx6, J6dyx6, R6dyx6, Z6dyx6, H7dyx6, P7dyx6; +wire X7dyx6, F8dyx6, N8dyx6, V8dyx6, D9dyx6, L9dyx6, T9dyx6, Badyx6, Jadyx6, Radyx6; +wire Zadyx6, Hbdyx6, Pbdyx6, Xbdyx6, Fcdyx6, Ncdyx6, Vcdyx6, Dddyx6, Lddyx6, Tddyx6; +wire Bedyx6, Jedyx6, Redyx6, Zedyx6, Hfdyx6, Pfdyx6, Xfdyx6, Fgdyx6, Ngdyx6, Vgdyx6; +wire Dhdyx6, Lhdyx6, Thdyx6, Bidyx6, Jidyx6, Ridyx6, Zidyx6, Hjdyx6, Pjdyx6, Xjdyx6; +wire Fkdyx6, Nkdyx6, Vkdyx6, Dldyx6, Lldyx6, Tldyx6, Bmdyx6, Jmdyx6, Rmdyx6, Zmdyx6; +wire Hndyx6, Pndyx6, Xndyx6, Fodyx6, Nodyx6, Vodyx6, Dpdyx6, Lpdyx6, Tpdyx6, Bqdyx6; +wire Jqdyx6, Rqdyx6, Zqdyx6, Hrdyx6, Prdyx6, Xrdyx6, Fsdyx6, Nsdyx6, Vsdyx6, Dtdyx6; +wire Ltdyx6, Ttdyx6, Budyx6, Judyx6, Rudyx6, Zudyx6, Hvdyx6, Pvdyx6, Xvdyx6, Fwdyx6; +wire Nwdyx6, Vwdyx6, Dxdyx6, Lxdyx6, Txdyx6, Bydyx6, Jydyx6, Rydyx6, Zydyx6, Hzdyx6; +wire Pzdyx6, Xzdyx6, F0eyx6, N0eyx6, V0eyx6, D1eyx6, L1eyx6, T1eyx6, B2eyx6, J2eyx6; +wire R2eyx6, Z2eyx6, H3eyx6, P3eyx6, X3eyx6, F4eyx6, N4eyx6, V4eyx6, D5eyx6, L5eyx6; +wire T5eyx6, B6eyx6, J6eyx6, R6eyx6, Z6eyx6, H7eyx6, P7eyx6, X7eyx6, F8eyx6, N8eyx6; +wire V8eyx6, D9eyx6, L9eyx6, T9eyx6, Baeyx6, Jaeyx6, Raeyx6, Zaeyx6, Hbeyx6, Pbeyx6; +wire Xbeyx6, Fceyx6, Nceyx6, Vceyx6, Ddeyx6, Ldeyx6, Tdeyx6, Beeyx6, Jeeyx6, Reeyx6; +wire Zeeyx6, Hfeyx6, Pfeyx6, Xfeyx6, Fgeyx6, Ngeyx6, Vgeyx6, Dheyx6, Lheyx6, Theyx6; +wire Bieyx6, Jieyx6, Rieyx6, Zieyx6, Hjeyx6, Pjeyx6, Xjeyx6, Fkeyx6, Nkeyx6, Vkeyx6; +wire Dleyx6, Lleyx6, Tleyx6, Bmeyx6, Jmeyx6, Rmeyx6, Zmeyx6, Hneyx6, Pneyx6, Xneyx6; +wire Foeyx6, Noeyx6, Voeyx6, Dpeyx6, Lpeyx6, Tpeyx6, Bqeyx6, Jqeyx6, Rqeyx6, Zqeyx6; +wire Hreyx6, Preyx6, Xreyx6, Fseyx6, Nseyx6, Vseyx6, Dteyx6, Lteyx6, Tteyx6, Bueyx6; +wire Jueyx6, Rueyx6, Zueyx6, Hveyx6, Pveyx6, Xveyx6, Fweyx6, Nweyx6, Vweyx6, Dxeyx6; +wire Lxeyx6, Txeyx6, Byeyx6, Jyeyx6, Ryeyx6, Zyeyx6, Hzeyx6, Pzeyx6, Xzeyx6, F0fyx6; +wire N0fyx6, V0fyx6, D1fyx6, L1fyx6, T1fyx6, B2fyx6, J2fyx6, R2fyx6, Z2fyx6, H3fyx6; +wire P3fyx6, X3fyx6, F4fyx6, N4fyx6, V4fyx6, D5fyx6, L5fyx6, T5fyx6, B6fyx6, J6fyx6; +wire R6fyx6, Z6fyx6, H7fyx6, P7fyx6, X7fyx6, F8fyx6, N8fyx6, V8fyx6, D9fyx6, L9fyx6; +wire T9fyx6, Bafyx6, Jafyx6, Rafyx6, Zafyx6, Hbfyx6, Pbfyx6, Xbfyx6, Fcfyx6, Ncfyx6; +wire Vcfyx6, Ddfyx6, Ldfyx6, Tdfyx6, Befyx6, Jefyx6, Refyx6, Zefyx6, Hffyx6, Pffyx6; +wire Xffyx6, Fgfyx6, Ngfyx6, Vgfyx6, Dhfyx6, Lhfyx6, Thfyx6, Bifyx6, Jifyx6, Rifyx6; +wire Zifyx6, Hjfyx6, Pjfyx6, Xjfyx6, Fkfyx6, Nkfyx6, Vkfyx6, Dlfyx6, Llfyx6, Tlfyx6; +wire Bmfyx6, Jmfyx6, Rmfyx6, Zmfyx6, Hnfyx6, Pnfyx6, Xnfyx6, Fofyx6, Nofyx6, Vofyx6; +wire Dpfyx6, Lpfyx6, Tpfyx6, Bqfyx6, Jqfyx6, Rqfyx6, Zqfyx6, Hrfyx6, Prfyx6, Xrfyx6; +wire Fsfyx6, Nsfyx6, Vsfyx6, Dtfyx6, Ltfyx6, Ttfyx6, Bufyx6, Jufyx6, Rufyx6, Zufyx6; +wire Hvfyx6, Pvfyx6, Xvfyx6, Fwfyx6, Nwfyx6, Vwfyx6, Dxfyx6, Lxfyx6, Txfyx6, Byfyx6; +wire Jyfyx6, Ryfyx6, Zyfyx6, Hzfyx6, Pzfyx6, Xzfyx6, F0gyx6, N0gyx6, V0gyx6, D1gyx6; +wire L1gyx6, T1gyx6, B2gyx6, J2gyx6, R2gyx6, Z2gyx6, H3gyx6, P3gyx6, X3gyx6, F4gyx6; +wire N4gyx6, V4gyx6, D5gyx6, L5gyx6, T5gyx6, B6gyx6, J6gyx6, R6gyx6, Z6gyx6, H7gyx6; +wire P7gyx6, X7gyx6, F8gyx6, N8gyx6, V8gyx6, D9gyx6, L9gyx6, T9gyx6, Bagyx6, Jagyx6; +wire Ragyx6, Zagyx6, Hbgyx6, Pbgyx6, Xbgyx6, Fcgyx6, Ncgyx6, Vcgyx6, Ddgyx6, Ldgyx6; +wire Tdgyx6, Begyx6, Jegyx6, Regyx6, Zegyx6, Hfgyx6, Pfgyx6, Xfgyx6, Fggyx6, Nggyx6; +wire Vggyx6, Dhgyx6, Lhgyx6, Thgyx6, Bigyx6, Jigyx6, Rigyx6, Zigyx6, Hjgyx6, Pjgyx6; +wire Xjgyx6, Fkgyx6, Nkgyx6, Vkgyx6, Dlgyx6, Llgyx6, Tlgyx6, Bmgyx6, Jmgyx6, Rmgyx6; +wire Zmgyx6, Hngyx6, Pngyx6, Xngyx6, Fogyx6, Nogyx6, Vogyx6, Dpgyx6, Lpgyx6, Tpgyx6; +wire Bqgyx6, Jqgyx6, Rqgyx6, Zqgyx6, Hrgyx6, Prgyx6, Xrgyx6, Fsgyx6, Nsgyx6, Vsgyx6; +wire Dtgyx6, Ltgyx6, Ttgyx6, Bugyx6, Jugyx6, Rugyx6, Zugyx6, Hvgyx6, Pvgyx6, Xvgyx6; +wire Fwgyx6, Nwgyx6, Vwgyx6, Dxgyx6, Lxgyx6, Txgyx6, Bygyx6, Jygyx6, Rygyx6, Zygyx6; +wire Hzgyx6, Pzgyx6, Xzgyx6, F0hyx6, N0hyx6, V0hyx6, D1hyx6, L1hyx6, T1hyx6, B2hyx6; +wire J2hyx6, R2hyx6, Z2hyx6, H3hyx6, P3hyx6, X3hyx6, F4hyx6, N4hyx6, V4hyx6, D5hyx6; +wire L5hyx6, T5hyx6, B6hyx6, J6hyx6, R6hyx6, Z6hyx6, H7hyx6, P7hyx6, X7hyx6, F8hyx6; +wire N8hyx6, V8hyx6, D9hyx6, L9hyx6, T9hyx6, Bahyx6, Jahyx6, Rahyx6, Zahyx6, Hbhyx6; +wire Pbhyx6, Xbhyx6, Fchyx6, Nchyx6, Vchyx6, Ddhyx6, Ldhyx6, Tdhyx6, Behyx6, Jehyx6; +wire Rehyx6, Zehyx6, Hfhyx6, Pfhyx6, Xfhyx6, Fghyx6, Nghyx6, Vghyx6, Dhhyx6, Lhhyx6; +wire Thhyx6, Bihyx6, Jihyx6, Rihyx6, Zihyx6, Hjhyx6, Pjhyx6, Xjhyx6, Fkhyx6, Nkhyx6; +wire Vkhyx6, Dlhyx6, Llhyx6, Tlhyx6, Bmhyx6, Jmhyx6, Rmhyx6, Zmhyx6, Hnhyx6, Pnhyx6; +wire Xnhyx6, Fohyx6, Nohyx6, Vohyx6, Dphyx6, Lphyx6, Tphyx6, Bqhyx6, Jqhyx6, Rqhyx6; +wire Zqhyx6, Hrhyx6, Prhyx6, Xrhyx6, Fshyx6, Nshyx6, Vshyx6, Dthyx6, Lthyx6, Tthyx6; +wire Buhyx6, Juhyx6, Ruhyx6, Zuhyx6, Hvhyx6, Pvhyx6, Xvhyx6, Fwhyx6, Nwhyx6, Vwhyx6; +wire Dxhyx6, Lxhyx6, Txhyx6, Byhyx6, Jyhyx6, Ryhyx6, Zyhyx6, Hzhyx6, Pzhyx6, Xzhyx6; +wire F0iyx6, N0iyx6, V0iyx6, D1iyx6, L1iyx6, T1iyx6, B2iyx6, J2iyx6, R2iyx6, Z2iyx6; +wire H3iyx6, P3iyx6, X3iyx6, F4iyx6, N4iyx6, V4iyx6, D5iyx6, L5iyx6, T5iyx6, B6iyx6; +wire J6iyx6, R6iyx6, Z6iyx6, H7iyx6, P7iyx6, X7iyx6, F8iyx6, N8iyx6, V8iyx6, D9iyx6; +wire L9iyx6, T9iyx6, Baiyx6, Jaiyx6, Raiyx6, Zaiyx6, Hbiyx6, Pbiyx6, Xbiyx6, Fciyx6; +wire Nciyx6, Vciyx6, Ddiyx6, Ldiyx6, Tdiyx6, Beiyx6, Jeiyx6, Reiyx6, Zeiyx6, Hfiyx6; +wire Pfiyx6, Xfiyx6, Fgiyx6, Ngiyx6, Vgiyx6, Dhiyx6, Lhiyx6, Thiyx6, Biiyx6, Jiiyx6; +wire Riiyx6, Ziiyx6, Hjiyx6, Pjiyx6, Xjiyx6, Fkiyx6, Nkiyx6, Vkiyx6, Dliyx6, Lliyx6; +wire Tliyx6, Bmiyx6, Jmiyx6, Rmiyx6, Zmiyx6, Hniyx6, Pniyx6, Xniyx6, Foiyx6, Noiyx6; +wire Voiyx6, Dpiyx6, Lpiyx6, Tpiyx6, Bqiyx6, Jqiyx6, Rqiyx6, Zqiyx6, Hriyx6, Priyx6; +wire Xriyx6, Fsiyx6, Nsiyx6, Vsiyx6, Dtiyx6, Ltiyx6, Ttiyx6, Buiyx6, Juiyx6, Ruiyx6; +wire Zuiyx6, Hviyx6, Pviyx6, Xviyx6, Fwiyx6, Nwiyx6, Vwiyx6, Dxiyx6, Lxiyx6, Txiyx6; +wire Byiyx6, Jyiyx6, Ryiyx6, Zyiyx6, Hziyx6, Pziyx6, Xziyx6, F0jyx6, N0jyx6, V0jyx6; +wire D1jyx6, L1jyx6, T1jyx6, B2jyx6, J2jyx6, R2jyx6, Z2jyx6, H3jyx6, P3jyx6, X3jyx6; +wire F4jyx6, N4jyx6, V4jyx6, D5jyx6, L5jyx6, T5jyx6, B6jyx6, J6jyx6, R6jyx6, Z6jyx6; +wire H7jyx6, P7jyx6, X7jyx6, F8jyx6, N8jyx6, V8jyx6, D9jyx6, L9jyx6, T9jyx6, Bajyx6; +wire Jajyx6, Rajyx6, Zajyx6, Hbjyx6, Pbjyx6, Xbjyx6, Fcjyx6, Ncjyx6, Vcjyx6, Ddjyx6; +wire Ldjyx6, Tdjyx6, Bejyx6, Jejyx6, Rejyx6, Zejyx6, Hfjyx6, Pfjyx6, Xfjyx6, Fgjyx6; +wire Ngjyx6, Vgjyx6, Dhjyx6, Lhjyx6, Thjyx6, Bijyx6, Jijyx6, Rijyx6, Zijyx6, Hjjyx6; +wire Pjjyx6, Xjjyx6, Fkjyx6, Nkjyx6, Vkjyx6, Dljyx6, Lljyx6, Tljyx6, Bmjyx6, Jmjyx6; +wire Rmjyx6, Zmjyx6, Hnjyx6, Pnjyx6, Xnjyx6, Fojyx6, Nojyx6, Vojyx6, Dpjyx6, Lpjyx6; +wire Tpjyx6, Bqjyx6, Jqjyx6, Rqjyx6, Zqjyx6, Hrjyx6, Prjyx6, Xrjyx6, Fsjyx6, Nsjyx6; +wire Vsjyx6, Dtjyx6, Ltjyx6, Ttjyx6, Bujyx6, Jujyx6, Rujyx6, Zujyx6, Hvjyx6, Pvjyx6; +wire Xvjyx6, Fwjyx6, Nwjyx6, Vwjyx6, Dxjyx6, Lxjyx6, Txjyx6, Byjyx6, Jyjyx6, Ryjyx6; +wire Zyjyx6, Hzjyx6, Pzjyx6, Xzjyx6, F0kyx6, N0kyx6, V0kyx6, D1kyx6, L1kyx6, T1kyx6; +wire B2kyx6, J2kyx6, R2kyx6, Z2kyx6, H3kyx6, P3kyx6, X3kyx6, F4kyx6, N4kyx6, V4kyx6; +wire D5kyx6, L5kyx6, T5kyx6, B6kyx6, J6kyx6, R6kyx6, Z6kyx6, H7kyx6, P7kyx6, X7kyx6; +wire F8kyx6, N8kyx6, V8kyx6, D9kyx6, L9kyx6, T9kyx6, Bakyx6, Jakyx6, Rakyx6, Zakyx6; +wire Hbkyx6, Pbkyx6, Xbkyx6, Fckyx6, Nckyx6, Vckyx6, Ddkyx6, Ldkyx6, Tdkyx6, Bekyx6; +wire Jekyx6, Rekyx6, Zekyx6, Hfkyx6, Pfkyx6, Xfkyx6, Fgkyx6, Ngkyx6, Vgkyx6, Dhkyx6; +wire Lhkyx6, Thkyx6, Bikyx6, Jikyx6, Rikyx6, Zikyx6, Hjkyx6, Pjkyx6, Xjkyx6, Fkkyx6; +wire Nkkyx6, Vkkyx6, Dlkyx6, Llkyx6, Tlkyx6, Bmkyx6, Jmkyx6, Rmkyx6, Zmkyx6, Hnkyx6; +wire Pnkyx6, Xnkyx6, Fokyx6, Nokyx6, Vokyx6, Dpkyx6, Lpkyx6, Tpkyx6, Bqkyx6, Jqkyx6; +wire Rqkyx6, Zqkyx6, Hrkyx6, Prkyx6, Xrkyx6, Fskyx6, Nskyx6, Vskyx6, Dtkyx6, Ltkyx6; +wire Ttkyx6, Bukyx6, Jukyx6, Rukyx6, Zukyx6, Hvkyx6, Pvkyx6, Xvkyx6, Fwkyx6, Nwkyx6; +wire Vwkyx6, Dxkyx6, Lxkyx6, Txkyx6, Bykyx6, Jykyx6, Rykyx6, Zykyx6, Hzkyx6, Pzkyx6; +wire Xzkyx6, F0lyx6, N0lyx6, V0lyx6, D1lyx6, L1lyx6, T1lyx6, B2lyx6, J2lyx6, R2lyx6; +wire Z2lyx6, H3lyx6, P3lyx6, X3lyx6, F4lyx6, N4lyx6, V4lyx6, D5lyx6, L5lyx6, T5lyx6; +wire B6lyx6, J6lyx6, R6lyx6, Z6lyx6, H7lyx6, P7lyx6, X7lyx6, F8lyx6, N8lyx6, V8lyx6; +wire D9lyx6, L9lyx6, T9lyx6, Balyx6, Jalyx6, Ralyx6, Zalyx6, Hblyx6, Pblyx6, Xblyx6; +wire Fclyx6, Nclyx6, Vclyx6, Ddlyx6, Ldlyx6, Tdlyx6, Belyx6, Jelyx6, Relyx6, Zelyx6; +wire Hflyx6, Pflyx6, Xflyx6, Fglyx6, Nglyx6, Vglyx6, Dhlyx6, Lhlyx6, Thlyx6, Bilyx6; +wire Jilyx6, Rilyx6, Zilyx6, Hjlyx6, Pjlyx6, Xjlyx6, Fklyx6, Nklyx6, Vklyx6, Dllyx6; +wire Lllyx6, Tllyx6, Bmlyx6, Jmlyx6, Rmlyx6, Zmlyx6, Hnlyx6, Pnlyx6, Xnlyx6, Folyx6; +wire Nolyx6, Volyx6, Dplyx6, Lplyx6, Tplyx6, Bqlyx6, Jqlyx6, Rqlyx6, Zqlyx6, Hrlyx6; +wire Prlyx6, Xrlyx6, Fslyx6, Nslyx6, Vslyx6, Dtlyx6, Ltlyx6, Ttlyx6, Bulyx6, Julyx6; +wire Rulyx6, Zulyx6, Hvlyx6, Pvlyx6, Xvlyx6, Fwlyx6, Nwlyx6, Vwlyx6, Dxlyx6, Lxlyx6; +wire Txlyx6, Bylyx6, Jylyx6, Rylyx6, Zylyx6, Hzlyx6, Pzlyx6, Xzlyx6, F0myx6, N0myx6; +wire V0myx6, D1myx6, L1myx6, T1myx6, B2myx6, J2myx6, R2myx6, Z2myx6, H3myx6, P3myx6; +wire X3myx6, F4myx6, N4myx6, V4myx6, D5myx6, L5myx6, T5myx6, B6myx6, J6myx6, R6myx6; +wire Z6myx6, H7myx6, P7myx6, X7myx6, F8myx6, N8myx6, V8myx6, D9myx6, L9myx6, T9myx6; +wire Bamyx6, Jamyx6, Ramyx6, Zamyx6, Hbmyx6, Pbmyx6, Xbmyx6, Fcmyx6, Ncmyx6, Vcmyx6; +wire Ddmyx6, Ldmyx6, Tdmyx6, Bemyx6, Jemyx6, Remyx6, Zemyx6, Hfmyx6, Pfmyx6, Xfmyx6; +wire Fgmyx6, Ngmyx6, Vgmyx6, Dhmyx6, Lhmyx6, Thmyx6, Bimyx6, Jimyx6, Rimyx6, Zimyx6; +wire Hjmyx6, Pjmyx6, Xjmyx6, Fkmyx6, Nkmyx6, Vkmyx6, Dlmyx6, Llmyx6, Tlmyx6, Bmmyx6; +wire Jmmyx6, Rmmyx6, Zmmyx6, Hnmyx6, Pnmyx6, Xnmyx6, Fomyx6, Nomyx6, Vomyx6, Dpmyx6; +wire Lpmyx6, Tpmyx6, Bqmyx6, Jqmyx6, Rqmyx6, Zqmyx6, Hrmyx6, Prmyx6, Xrmyx6, Fsmyx6; +wire Nsmyx6, Vsmyx6, Dtmyx6, Ltmyx6, Ttmyx6, Bumyx6, Jumyx6, Rumyx6, Zumyx6, Hvmyx6; +wire Pvmyx6, Xvmyx6, Fwmyx6, Nwmyx6, Vwmyx6, Dxmyx6, Lxmyx6, Txmyx6, Bymyx6, Jymyx6; +wire Rymyx6, Zymyx6, Hzmyx6, Pzmyx6, Xzmyx6, F0nyx6, N0nyx6, V0nyx6, D1nyx6, L1nyx6; +wire T1nyx6, B2nyx6, J2nyx6, R2nyx6, Z2nyx6, H3nyx6, P3nyx6, X3nyx6, F4nyx6, N4nyx6; +wire V4nyx6, D5nyx6, L5nyx6, T5nyx6, B6nyx6, J6nyx6, R6nyx6, Z6nyx6, H7nyx6, P7nyx6; +wire X7nyx6, F8nyx6, N8nyx6, V8nyx6, D9nyx6, L9nyx6, T9nyx6, Banyx6, Janyx6, Ranyx6; +wire Zanyx6, Hbnyx6, Pbnyx6, Xbnyx6, Fcnyx6, Ncnyx6, Vcnyx6, Ddnyx6, Ldnyx6, Tdnyx6; +wire Benyx6, Jenyx6, Renyx6, Zenyx6, Hfnyx6, Pfnyx6, Xfnyx6, Fgnyx6, Ngnyx6, Vgnyx6; +wire Dhnyx6, Lhnyx6, Thnyx6, Binyx6, Jinyx6, Rinyx6, Zinyx6, Hjnyx6, Pjnyx6, Xjnyx6; +wire Fknyx6, Nknyx6, Vknyx6, Dlnyx6, Llnyx6, Tlnyx6, Bmnyx6, Jmnyx6, Rmnyx6, Zmnyx6; +wire Hnnyx6, Pnnyx6, Xnnyx6, Fonyx6, Nonyx6, Vonyx6, Dpnyx6, Lpnyx6, Tpnyx6, Bqnyx6; +wire Jqnyx6, Rqnyx6, Zqnyx6, Hrnyx6, Prnyx6, Xrnyx6, Fsnyx6, Nsnyx6, Vsnyx6, Dtnyx6; +wire Ltnyx6, Ttnyx6, Bunyx6, Junyx6, Runyx6, Zunyx6, Hvnyx6, Pvnyx6, Xvnyx6, Fwnyx6; +wire Nwnyx6, Vwnyx6, Dxnyx6, Lxnyx6, Txnyx6, Bynyx6, Jynyx6, Rynyx6, Zynyx6, Hznyx6; +wire Pznyx6, Xznyx6, F0oyx6, N0oyx6, V0oyx6, D1oyx6, L1oyx6, T1oyx6, B2oyx6, J2oyx6; +wire R2oyx6, Z2oyx6, H3oyx6, P3oyx6, X3oyx6, F4oyx6, N4oyx6, V4oyx6, D5oyx6, L5oyx6; +wire T5oyx6, B6oyx6, J6oyx6, R6oyx6, Z6oyx6, H7oyx6, P7oyx6, X7oyx6, F8oyx6, N8oyx6; +wire V8oyx6, D9oyx6, L9oyx6, T9oyx6, Baoyx6, Jaoyx6, Raoyx6, Zaoyx6, Hboyx6, Pboyx6; +wire Xboyx6, Fcoyx6, Ncoyx6, Vcoyx6, Ddoyx6, Ldoyx6, Tdoyx6, Beoyx6, Jeoyx6, Reoyx6; +wire Zeoyx6, Hfoyx6, Pfoyx6, Xfoyx6, Fgoyx6, Ngoyx6, Vgoyx6, Dhoyx6, Lhoyx6, Thoyx6; +wire Bioyx6, Jioyx6, Rioyx6, Zioyx6, Hjoyx6, Pjoyx6, Xjoyx6, Fkoyx6, Nkoyx6, Vkoyx6; +wire Dloyx6, Lloyx6, Tloyx6, Bmoyx6, Jmoyx6, Rmoyx6, Zmoyx6, Hnoyx6, Pnoyx6, Xnoyx6; +wire Fooyx6, Nooyx6, Vooyx6, Dpoyx6, Lpoyx6, Tpoyx6, Bqoyx6, Jqoyx6, Rqoyx6, Zqoyx6; +wire Hroyx6, Proyx6, Xroyx6, Fsoyx6, Nsoyx6, Vsoyx6, Dtoyx6, Ltoyx6, Ttoyx6, Buoyx6; +wire Juoyx6, Ruoyx6, Zuoyx6, Hvoyx6, Pvoyx6, Xvoyx6, Fwoyx6, Nwoyx6, Vwoyx6, Dxoyx6; +wire Lxoyx6, Txoyx6, Byoyx6, Jyoyx6, Ryoyx6, Zyoyx6, Hzoyx6, Pzoyx6, Xzoyx6, F0pyx6; +wire N0pyx6, V0pyx6, D1pyx6, L1pyx6, T1pyx6, B2pyx6, J2pyx6, R2pyx6, Z2pyx6, H3pyx6; +wire P3pyx6, X3pyx6, F4pyx6, N4pyx6, V4pyx6, D5pyx6, L5pyx6, T5pyx6, B6pyx6, J6pyx6; +wire R6pyx6, Z6pyx6, H7pyx6, P7pyx6, X7pyx6, F8pyx6, N8pyx6, V8pyx6, D9pyx6, L9pyx6; +wire T9pyx6, Bapyx6, Japyx6, Rapyx6, Zapyx6, Hbpyx6, Pbpyx6, Xbpyx6, Fcpyx6, Ncpyx6; +wire Vcpyx6, Ddpyx6, Ldpyx6, Tdpyx6, Bepyx6, Jepyx6, Repyx6, Zepyx6, Hfpyx6, Pfpyx6; +wire Xfpyx6, Fgpyx6, Ngpyx6, Vgpyx6, Dhpyx6, Lhpyx6, Thpyx6, Bipyx6, Jipyx6, Ripyx6; +wire Zipyx6, Hjpyx6, Pjpyx6, Xjpyx6, Fkpyx6, Nkpyx6, Vkpyx6, Dlpyx6, Llpyx6, Tlpyx6; +wire Bmpyx6, Jmpyx6, Rmpyx6, Zmpyx6, Hnpyx6, Pnpyx6, Xnpyx6, Fopyx6, Nopyx6, Vopyx6; +wire Dppyx6, Lppyx6, Tppyx6, Bqpyx6, Jqpyx6, Rqpyx6, Zqpyx6, Hrpyx6, Prpyx6, Xrpyx6; +wire Fspyx6, Nspyx6, Vspyx6, Dtpyx6, Ltpyx6, Ttpyx6, Bupyx6, Jupyx6, Rupyx6, Zupyx6; +wire Hvpyx6, Pvpyx6, Xvpyx6, Fwpyx6, Nwpyx6, Vwpyx6, Dxpyx6, Lxpyx6, Txpyx6, Bypyx6; +wire Jypyx6, Rypyx6, Zypyx6, Hzpyx6, Pzpyx6, Xzpyx6, F0qyx6, N0qyx6, V0qyx6, D1qyx6; +wire L1qyx6, T1qyx6, B2qyx6, J2qyx6, R2qyx6, Z2qyx6, H3qyx6, P3qyx6, X3qyx6, F4qyx6; +wire N4qyx6, V4qyx6, D5qyx6, L5qyx6, T5qyx6, B6qyx6, J6qyx6, R6qyx6, Z6qyx6, H7qyx6; +wire P7qyx6, X7qyx6, F8qyx6, N8qyx6, V8qyx6, D9qyx6, L9qyx6, T9qyx6, Baqyx6, Jaqyx6; +wire Raqyx6, Zaqyx6, Hbqyx6, Pbqyx6, Xbqyx6, Fcqyx6, Ncqyx6, Vcqyx6, Ddqyx6, Ldqyx6; +wire Tdqyx6, Beqyx6, Jeqyx6, Reqyx6, Zeqyx6, Hfqyx6, Pfqyx6, Xfqyx6, Fgqyx6, Ngqyx6; +wire Vgqyx6, Dhqyx6, Lhqyx6, Thqyx6, Biqyx6, Jiqyx6, Riqyx6, Ziqyx6, Hjqyx6, Pjqyx6; +wire Xjqyx6, Fkqyx6, Nkqyx6, Vkqyx6, Dlqyx6, Llqyx6, Tlqyx6, Bmqyx6, Jmqyx6, Rmqyx6; +wire Zmqyx6, Hnqyx6, Pnqyx6, Xnqyx6, Foqyx6, Noqyx6, Voqyx6, Dpqyx6, Lpqyx6, Tpqyx6; +wire Bqqyx6, Jqqyx6, Rqqyx6, Zqqyx6, Hrqyx6, Prqyx6, Xrqyx6, Fsqyx6, Nsqyx6, Vsqyx6; +wire Dtqyx6, Ltqyx6, Ttqyx6, Buqyx6, Juqyx6, Ruqyx6, Zuqyx6, Hvqyx6, Pvqyx6, Xvqyx6; +wire Fwqyx6, Nwqyx6, Vwqyx6, Dxqyx6, Lxqyx6, Txqyx6, Byqyx6, Jyqyx6, Ryqyx6, Zyqyx6; +wire Hzqyx6, Pzqyx6, Xzqyx6, F0ryx6, N0ryx6, V0ryx6, D1ryx6, L1ryx6, T1ryx6, B2ryx6; +wire J2ryx6, R2ryx6, Z2ryx6, H3ryx6, P3ryx6, X3ryx6, F4ryx6, N4ryx6, V4ryx6, D5ryx6; +wire L5ryx6, T5ryx6, B6ryx6, J6ryx6, R6ryx6, Z6ryx6, H7ryx6, P7ryx6, X7ryx6, F8ryx6; +wire N8ryx6, V8ryx6, D9ryx6, L9ryx6, T9ryx6, Baryx6, Jaryx6, Raryx6, Zaryx6, Hbryx6; +wire Pbryx6, Xbryx6, Fcryx6, Ncryx6, Vcryx6, Ddryx6, Ldryx6, Tdryx6, Beryx6, Jeryx6; +wire Reryx6, Zeryx6, Hfryx6, Pfryx6, Xfryx6, Fgryx6, Ngryx6, Vgryx6, Dhryx6, Lhryx6; +wire Thryx6, Biryx6, Jiryx6, Riryx6, Ziryx6, Hjryx6, Pjryx6, Xjryx6, Fkryx6, Nkryx6; +wire Vkryx6, Dlryx6, Llryx6, Tlryx6, Bmryx6, Jmryx6, Rmryx6, Zmryx6, Hnryx6, Pnryx6; +wire Xnryx6, Foryx6, Noryx6, Voryx6, Dpryx6, Lpryx6, Tpryx6, Bqryx6, Jqryx6, Rqryx6; +wire Zqryx6, Hrryx6, Prryx6, Xrryx6, Fsryx6, Nsryx6, Vsryx6, Dtryx6, Ltryx6, Ttryx6; +wire Buryx6, Juryx6, Ruryx6, Zuryx6, Hvryx6, Pvryx6, Xvryx6, Fwryx6, Nwryx6, Vwryx6; +wire Dxryx6, Lxryx6, Txryx6, Byryx6, Jyryx6, Ryryx6, Zyryx6, Hzryx6, Pzryx6, Xzryx6; +wire F0syx6, N0syx6, V0syx6, D1syx6, L1syx6, T1syx6, B2syx6, J2syx6, R2syx6, Z2syx6; +wire H3syx6, P3syx6, X3syx6, F4syx6, N4syx6, V4syx6, D5syx6, L5syx6, T5syx6, B6syx6; +wire J6syx6, R6syx6, Z6syx6, H7syx6, P7syx6, X7syx6, F8syx6, N8syx6, V8syx6, D9syx6; +wire L9syx6, T9syx6, Basyx6, Jasyx6, Rasyx6, Zasyx6, Hbsyx6, Pbsyx6, Xbsyx6, Fcsyx6; +wire Ncsyx6, Vcsyx6, Ddsyx6, Ldsyx6, Tdsyx6, Besyx6, Jesyx6, Resyx6, Zesyx6, Hfsyx6; +wire Pfsyx6, Xfsyx6, Fgsyx6, Ngsyx6, Vgsyx6, Dhsyx6, Lhsyx6, Thsyx6, Bisyx6, Jisyx6; +wire Risyx6, Zisyx6, Hjsyx6, Pjsyx6, Xjsyx6, Fksyx6, Nksyx6, Vksyx6, Dlsyx6, Llsyx6; +wire Tlsyx6, Bmsyx6, Jmsyx6, Rmsyx6, Zmsyx6, Hnsyx6, Pnsyx6, Xnsyx6, Fosyx6, Nosyx6; +wire Vosyx6, Dpsyx6, Lpsyx6, Tpsyx6, Bqsyx6, Jqsyx6, Rqsyx6, Zqsyx6, Hrsyx6, Prsyx6; +wire Xrsyx6, Fssyx6, Nssyx6, Vssyx6, Dtsyx6, Ltsyx6, Ttsyx6, Busyx6, Jusyx6, Rusyx6; +wire Zusyx6, Hvsyx6, Pvsyx6, Xvsyx6, Fwsyx6, Nwsyx6, Vwsyx6, Dxsyx6, Lxsyx6, Txsyx6; +wire Bysyx6, Jysyx6, Rysyx6, Zysyx6, Hzsyx6, Pzsyx6, Xzsyx6, F0tyx6, N0tyx6, V0tyx6; +wire D1tyx6, L1tyx6, T1tyx6, B2tyx6, J2tyx6, R2tyx6, Z2tyx6, H3tyx6, P3tyx6, X3tyx6; +wire F4tyx6, N4tyx6, V4tyx6, D5tyx6, L5tyx6, T5tyx6, B6tyx6, J6tyx6, R6tyx6, Z6tyx6; +wire H7tyx6, P7tyx6, X7tyx6, F8tyx6, N8tyx6, V8tyx6, D9tyx6, L9tyx6, T9tyx6, Batyx6; +wire Jatyx6, Ratyx6, Zatyx6, Hbtyx6, Pbtyx6, Xbtyx6, Fctyx6, Nctyx6, Vctyx6, Ddtyx6; +wire Ldtyx6, Tdtyx6, Betyx6, Jetyx6, Retyx6, Zetyx6, Hftyx6, Pftyx6, Xftyx6, Fgtyx6; +wire Ngtyx6, Vgtyx6, Dhtyx6, Lhtyx6, Thtyx6, Bityx6, Jityx6, Rityx6, Zityx6, Hjtyx6; +wire Pjtyx6, Xjtyx6, Fktyx6, Nktyx6, Vktyx6, Dltyx6, Lltyx6, Tltyx6, Bmtyx6, Jmtyx6; +wire Rmtyx6, Zmtyx6, Hntyx6, Pntyx6, Xntyx6, Fotyx6, Notyx6, Votyx6, Dptyx6, Lptyx6; +wire Tptyx6, Bqtyx6, Jqtyx6, Rqtyx6, Zqtyx6, Hrtyx6, Prtyx6, Xrtyx6, Fstyx6, Nstyx6; +wire Vstyx6, Dttyx6, Lttyx6, Tttyx6, Butyx6, Jutyx6, Rutyx6, Zutyx6, Hvtyx6, Pvtyx6; +wire Xvtyx6, Fwtyx6, Nwtyx6, Vwtyx6, Dxtyx6, Lxtyx6, Txtyx6, Bytyx6, Jytyx6, Rytyx6; +wire Zytyx6, Hztyx6, Pztyx6, Xztyx6, F0uyx6, N0uyx6, V0uyx6, D1uyx6, L1uyx6, T1uyx6; +wire B2uyx6, J2uyx6, R2uyx6, Z2uyx6, H3uyx6, P3uyx6, X3uyx6, F4uyx6, N4uyx6, V4uyx6; +wire D5uyx6, L5uyx6, T5uyx6, B6uyx6, J6uyx6, R6uyx6, Z6uyx6, H7uyx6, P7uyx6, X7uyx6; +wire F8uyx6, N8uyx6, V8uyx6, D9uyx6, L9uyx6, T9uyx6, Bauyx6, Jauyx6, Rauyx6, Zauyx6; +wire Hbuyx6, Pbuyx6, Xbuyx6, Fcuyx6, Ncuyx6, Vcuyx6, Dduyx6, Lduyx6, Tduyx6, Beuyx6; +wire Jeuyx6, Reuyx6, Zeuyx6, Hfuyx6, Pfuyx6, Xfuyx6, Fguyx6, Nguyx6, Vguyx6, Dhuyx6; +wire Lhuyx6, Thuyx6, Biuyx6, Jiuyx6, Riuyx6, Ziuyx6, Hjuyx6, Pjuyx6, Xjuyx6, Fkuyx6; +wire Nkuyx6, Vkuyx6, Dluyx6, Lluyx6, Tluyx6, Bmuyx6, Jmuyx6, Rmuyx6, Zmuyx6, Hnuyx6; +wire Pnuyx6, Xnuyx6, Fouyx6, Nouyx6, Vouyx6, Dpuyx6, Lpuyx6, Tpuyx6, Bquyx6, Jquyx6; +wire Rquyx6, Zquyx6, Hruyx6, Pruyx6, Xruyx6, Fsuyx6, Nsuyx6, Vsuyx6, Dtuyx6, Ltuyx6; +wire Ttuyx6, Buuyx6, Juuyx6, Ruuyx6, Zuuyx6, Hvuyx6, Pvuyx6, Xvuyx6, Fwuyx6, Nwuyx6; +wire Vwuyx6, Dxuyx6, Lxuyx6, Txuyx6, Byuyx6, Jyuyx6, Ryuyx6, Zyuyx6, Hzuyx6, Pzuyx6; +wire Xzuyx6, F0vyx6, N0vyx6, V0vyx6, D1vyx6, L1vyx6, T1vyx6, B2vyx6, J2vyx6, R2vyx6; +wire Z2vyx6, H3vyx6, P3vyx6, X3vyx6, F4vyx6, N4vyx6, V4vyx6, D5vyx6, L5vyx6, T5vyx6; +wire B6vyx6, J6vyx6, R6vyx6, Z6vyx6, H7vyx6, P7vyx6, X7vyx6, F8vyx6, N8vyx6, V8vyx6; +wire D9vyx6, L9vyx6, T9vyx6, Bavyx6, Javyx6, Ravyx6, Zavyx6, Hbvyx6, Pbvyx6, Xbvyx6; +wire Fcvyx6, Ncvyx6, Vcvyx6, Ddvyx6, Ldvyx6, Tdvyx6, Bevyx6, Jevyx6, Revyx6, Zevyx6; +wire Hfvyx6, Pfvyx6, Xfvyx6, Fgvyx6, Ngvyx6, Vgvyx6, Dhvyx6, Lhvyx6, Thvyx6, Bivyx6; +wire Jivyx6, Rivyx6, Zivyx6, Hjvyx6, Pjvyx6, Xjvyx6, Fkvyx6, Nkvyx6, Vkvyx6, Dlvyx6; +wire Llvyx6, Tlvyx6, Bmvyx6, Jmvyx6, Rmvyx6, Zmvyx6, Hnvyx6, Pnvyx6, Xnvyx6, Fovyx6; +wire Novyx6, Vovyx6, Dpvyx6, Lpvyx6, Tpvyx6, Bqvyx6, Jqvyx6, Rqvyx6, Zqvyx6, Hrvyx6; +wire Prvyx6, Xrvyx6, Fsvyx6, Nsvyx6, Vsvyx6, Dtvyx6, Ltvyx6, Ttvyx6, Buvyx6, Juvyx6; +wire Ruvyx6, Zuvyx6, Hvvyx6, Pvvyx6, Xvvyx6, Fwvyx6, Nwvyx6, Vwvyx6, Dxvyx6, Lxvyx6; +wire Txvyx6, Byvyx6, Jyvyx6, Ryvyx6, Zyvyx6, Hzvyx6, Pzvyx6, Xzvyx6, F0wyx6, N0wyx6; +wire V0wyx6, D1wyx6, L1wyx6, T1wyx6, B2wyx6, J2wyx6, R2wyx6, Z2wyx6, H3wyx6, P3wyx6; +wire X3wyx6, F4wyx6, N4wyx6, V4wyx6, D5wyx6, L5wyx6, T5wyx6, B6wyx6, J6wyx6, R6wyx6; +wire Z6wyx6, H7wyx6, P7wyx6, X7wyx6, F8wyx6, N8wyx6, V8wyx6, D9wyx6, L9wyx6, T9wyx6; +wire Bawyx6, Jawyx6, Rawyx6, Zawyx6, Hbwyx6, Pbwyx6, Xbwyx6, Fcwyx6, Ncwyx6, Vcwyx6; +wire Ddwyx6, Ldwyx6, Tdwyx6, Bewyx6, Jewyx6, Rewyx6, Zewyx6, Hfwyx6, Pfwyx6, Xfwyx6; +wire Fgwyx6, Ngwyx6, Vgwyx6, Dhwyx6, Lhwyx6, Thwyx6, Biwyx6, Jiwyx6, Riwyx6, Ziwyx6; +wire Hjwyx6, Pjwyx6, Xjwyx6, Fkwyx6, Nkwyx6, Vkwyx6, Dlwyx6, Llwyx6, Tlwyx6, Bmwyx6; +wire Jmwyx6, Rmwyx6, Zmwyx6, Hnwyx6, Pnwyx6, Xnwyx6, Fowyx6, Nowyx6, Vowyx6, Dpwyx6; +wire Lpwyx6, Tpwyx6, Bqwyx6, Jqwyx6, Rqwyx6, Zqwyx6, Hrwyx6, Prwyx6, Xrwyx6, Fswyx6; +wire Nswyx6, Vswyx6, Dtwyx6, Ltwyx6, Ttwyx6, Buwyx6, Juwyx6, Ruwyx6, Zuwyx6, Hvwyx6; +wire Pvwyx6, Xvwyx6, Fwwyx6, Nwwyx6, Vwwyx6, Dxwyx6, Lxwyx6, Txwyx6, Bywyx6, Jywyx6; +wire Rywyx6, Zywyx6, Hzwyx6, Pzwyx6, Xzwyx6, F0xyx6, N0xyx6, V0xyx6, D1xyx6, L1xyx6; +wire T1xyx6, B2xyx6, J2xyx6, R2xyx6, Z2xyx6, H3xyx6, P3xyx6, X3xyx6, F4xyx6, N4xyx6; +wire V4xyx6, D5xyx6, L5xyx6, T5xyx6, B6xyx6, J6xyx6, R6xyx6, Z6xyx6, H7xyx6, P7xyx6; +wire X7xyx6, F8xyx6, N8xyx6, V8xyx6, D9xyx6, L9xyx6, T9xyx6, Baxyx6, Jaxyx6, Raxyx6; +wire Zaxyx6, Hbxyx6, Pbxyx6, Xbxyx6, Fcxyx6, Ncxyx6, Vcxyx6, Ddxyx6, Ldxyx6, Tdxyx6; +wire Bexyx6, Jexyx6, Rexyx6, Zexyx6, Hfxyx6, Pfxyx6, Xfxyx6, Fgxyx6, Ngxyx6, Vgxyx6; +wire Dhxyx6, Lhxyx6, Thxyx6, Bixyx6, Jixyx6, Rixyx6, Zixyx6, Hjxyx6, Pjxyx6, Xjxyx6; +wire Fkxyx6, Nkxyx6, Vkxyx6, Dlxyx6, Llxyx6, Tlxyx6, Bmxyx6, Jmxyx6, Rmxyx6, Zmxyx6; +wire Hnxyx6, Pnxyx6, Xnxyx6, Foxyx6, Noxyx6, Voxyx6, Dpxyx6, Lpxyx6, Tpxyx6, Bqxyx6; +wire Jqxyx6, Rqxyx6, Zqxyx6, Hrxyx6, Prxyx6, Xrxyx6, Fsxyx6, Nsxyx6, Vsxyx6, Dtxyx6; +wire Ltxyx6, Ttxyx6, Buxyx6, Juxyx6, Ruxyx6, Zuxyx6, Hvxyx6, Pvxyx6, Xvxyx6, Fwxyx6; +wire Nwxyx6, Vwxyx6, Dxxyx6, Lxxyx6, Txxyx6, Byxyx6, Jyxyx6, Ryxyx6, Zyxyx6, Hzxyx6; +wire Pzxyx6, Xzxyx6, F0yyx6, N0yyx6, V0yyx6, D1yyx6, L1yyx6, T1yyx6, B2yyx6, J2yyx6; +wire R2yyx6, Z2yyx6, H3yyx6, P3yyx6, X3yyx6, F4yyx6, N4yyx6, V4yyx6, D5yyx6, L5yyx6; +wire T5yyx6, B6yyx6, J6yyx6, R6yyx6, Z6yyx6, H7yyx6, P7yyx6, X7yyx6, F8yyx6, N8yyx6; +wire V8yyx6, D9yyx6, L9yyx6, T9yyx6, Bayyx6, Jayyx6, Rayyx6, Zayyx6, Hbyyx6, Pbyyx6; +wire Xbyyx6, Fcyyx6, Ncyyx6, Vcyyx6, Ddyyx6, Ldyyx6, Tdyyx6, Beyyx6, Jeyyx6, Reyyx6; +wire Zeyyx6, Hfyyx6, Pfyyx6, Xfyyx6, Fgyyx6, Ngyyx6, Vgyyx6, Dhyyx6, Lhyyx6, Thyyx6; +wire Biyyx6, Jiyyx6, Riyyx6, Ziyyx6, Hjyyx6, Pjyyx6, Xjyyx6, Fkyyx6, Nkyyx6, Vkyyx6; +wire Dlyyx6, Llyyx6, Tlyyx6, Bmyyx6, Jmyyx6, Rmyyx6, Zmyyx6, Hnyyx6, Pnyyx6, Xnyyx6; +wire Foyyx6, Noyyx6, Voyyx6, Dpyyx6, Lpyyx6, Tpyyx6, Bqyyx6, Jqyyx6, Rqyyx6, Zqyyx6; +wire Hryyx6, Pryyx6, Xryyx6, Fsyyx6, Nsyyx6, Vsyyx6, Dtyyx6, Ltyyx6, Ttyyx6, Buyyx6; +wire Juyyx6, Ruyyx6, Zuyyx6, Hvyyx6, Pvyyx6, Xvyyx6, Fwyyx6, Nwyyx6, Vwyyx6, Dxyyx6; +wire Lxyyx6, Txyyx6, Byyyx6, Jyyyx6, Ryyyx6, Zyyyx6, Hzyyx6, Pzyyx6, Xzyyx6, F0zyx6; +wire N0zyx6, V0zyx6, D1zyx6, L1zyx6, T1zyx6, B2zyx6, J2zyx6, R2zyx6, Z2zyx6, H3zyx6; +wire P3zyx6, X3zyx6, F4zyx6, N4zyx6, V4zyx6, D5zyx6, L5zyx6, T5zyx6, B6zyx6, J6zyx6; +wire R6zyx6, Z6zyx6, H7zyx6, P7zyx6, X7zyx6, F8zyx6, N8zyx6, V8zyx6, D9zyx6, L9zyx6; +wire T9zyx6, Bazyx6, Jazyx6, Razyx6, Zazyx6, Hbzyx6, Pbzyx6, Xbzyx6, Fczyx6, Nczyx6; +wire Vczyx6, Ddzyx6, Ldzyx6, Tdzyx6, Bezyx6, Jezyx6, Rezyx6, Zezyx6, Hfzyx6, Pfzyx6; +wire Xfzyx6, Fgzyx6, Ngzyx6, Vgzyx6, Dhzyx6, Lhzyx6, Thzyx6, Bizyx6, Jizyx6, Rizyx6; +wire Zizyx6, Hjzyx6, Pjzyx6, Xjzyx6, Fkzyx6, Nkzyx6, Vkzyx6, Dlzyx6, Llzyx6, Tlzyx6; +wire Bmzyx6, Jmzyx6, Rmzyx6, Zmzyx6, Hnzyx6, Pnzyx6, Xnzyx6, Fozyx6, Nozyx6, Vozyx6; +wire Dpzyx6, Lpzyx6, Tpzyx6, Bqzyx6, Jqzyx6, Rqzyx6, Zqzyx6, Hrzyx6, Przyx6, Xrzyx6; +wire Fszyx6, Nszyx6, Vszyx6, Dtzyx6, Ltzyx6, Ttzyx6, Buzyx6, Juzyx6, Ruzyx6, Zuzyx6; +wire Hvzyx6, Pvzyx6, Xvzyx6, Fwzyx6, Nwzyx6, Vwzyx6, Dxzyx6, Lxzyx6, Txzyx6, Byzyx6; +wire Jyzyx6, Ryzyx6, Zyzyx6, Hzzyx6, Pzzyx6, Xzzyx6, F00zx6, N00zx6, V00zx6, D10zx6; +wire L10zx6, T10zx6, B20zx6, J20zx6, R20zx6, Z20zx6, H30zx6, P30zx6, X30zx6, F40zx6; +wire N40zx6, V40zx6, D50zx6, L50zx6, T50zx6, B60zx6, J60zx6, R60zx6, Z60zx6, H70zx6; +wire P70zx6, X70zx6, F80zx6, N80zx6, V80zx6, D90zx6, L90zx6, T90zx6, Ba0zx6, Ja0zx6; +wire Ra0zx6, Za0zx6, Hb0zx6, Pb0zx6, Xb0zx6, Fc0zx6, Nc0zx6, Vc0zx6, Dd0zx6, Ld0zx6; +wire Td0zx6, Be0zx6, Je0zx6, Re0zx6, Ze0zx6, Hf0zx6, Pf0zx6, Xf0zx6, Fg0zx6, Ng0zx6; +wire Vg0zx6, Dh0zx6, Lh0zx6, Th0zx6, Bi0zx6, Ji0zx6, Ri0zx6, Zi0zx6, Hj0zx6, Pj0zx6; +wire Xj0zx6, Fk0zx6, Nk0zx6, Vk0zx6, Dl0zx6, Ll0zx6, Tl0zx6, Bm0zx6, Jm0zx6, Rm0zx6; +wire Zm0zx6, Hn0zx6, Pn0zx6, Xn0zx6, Fo0zx6, No0zx6, Vo0zx6, Dp0zx6, Lp0zx6, Tp0zx6; +wire Bq0zx6, Jq0zx6, Rq0zx6, Zq0zx6, Hr0zx6, Pr0zx6, Xr0zx6, Fs0zx6, Ns0zx6, Vs0zx6; +wire Dt0zx6, Lt0zx6, Tt0zx6, Bu0zx6, Ju0zx6, Ru0zx6, Zu0zx6, Hv0zx6, Pv0zx6, Xv0zx6; +wire Fw0zx6, Nw0zx6, Vw0zx6, Dx0zx6, Lx0zx6, Tx0zx6, By0zx6, Jy0zx6, Ry0zx6, Zy0zx6; +wire Hz0zx6, Pz0zx6, Xz0zx6, F01zx6, N01zx6, V01zx6, D11zx6, L11zx6, T11zx6, B21zx6; +wire J21zx6, R21zx6, Z21zx6, H31zx6, P31zx6, X31zx6, F41zx6, N41zx6, V41zx6, D51zx6; +wire L51zx6, T51zx6, B61zx6, J61zx6, R61zx6, Z61zx6, H71zx6, P71zx6, X71zx6, F81zx6; +wire N81zx6, V81zx6, D91zx6, L91zx6, T91zx6, Ba1zx6, Ja1zx6, Ra1zx6, Za1zx6, Hb1zx6; +wire Pb1zx6, Xb1zx6, Fc1zx6, Nc1zx6, Vc1zx6, Dd1zx6, Ld1zx6, Td1zx6, Be1zx6, Je1zx6; +wire Re1zx6, Ze1zx6, Hf1zx6, Pf1zx6, Xf1zx6, Fg1zx6, Ng1zx6, Vg1zx6, Y0jhy6, G1jhy6; +wire O1jhy6, W1jhy6, E2jhy6, M2jhy6, U2jhy6, C3jhy6, K3jhy6, S3jhy6, A4jhy6, I4jhy6; +wire Q4jhy6, Y4jhy6, G5jhy6, O5jhy6, W5jhy6, E6jhy6, M6jhy6, U6jhy6, C7jhy6, K7jhy6; +wire S7jhy6, A8jhy6, I8jhy6, Q8jhy6, Y8jhy6, G9jhy6, O9jhy6, W9jhy6, Eajhy6, Majhy6; +wire Uajhy6, Cbjhy6, Kbjhy6, Sbjhy6, Acjhy6, Icjhy6, Qcjhy6, Ycjhy6, Gdjhy6, Odjhy6; +wire Wdjhy6, Eejhy6, Mejhy6, Uejhy6, Cfjhy6, Kfjhy6, Sfjhy6, Agjhy6, Igjhy6, Qgjhy6; +wire Ygjhy6, Ghjhy6, Ohjhy6, Whjhy6, Eijhy6, Mijhy6, Uijhy6, Cjjhy6, Kjjhy6, Sjjhy6; +wire Akjhy6, Ikjhy6, Qkjhy6, Ykjhy6, Gljhy6, Oljhy6, Wljhy6, Emjhy6, Mmjhy6, Umjhy6; +wire Cnjhy6, Knjhy6, Snjhy6, Aojhy6, Iojhy6, Qojhy6, Yojhy6, Gpjhy6, Opjhy6, Wpjhy6; +wire Eqjhy6, Mqjhy6, Uqjhy6, Crjhy6, Krjhy6, Srjhy6, Asjhy6, Isjhy6, Qsjhy6, Ysjhy6; +wire Gtjhy6, Otjhy6, Wtjhy6, Eujhy6, Mujhy6, Uujhy6, Cvjhy6, Kvjhy6, Svjhy6, Awjhy6; +wire Iwjhy6, Qwjhy6, Ywjhy6, Gxjhy6, Oxjhy6, Wxjhy6, Eyjhy6, Myjhy6, Uyjhy6, Czjhy6; +wire Kzjhy6, Szjhy6, A0khy6, I0khy6, Q0khy6, Y0khy6, G1khy6, O1khy6, W1khy6, E2khy6; +wire M2khy6, U2khy6, C3khy6, K3khy6, S3khy6, A4khy6, I4khy6, Q4khy6, Y4khy6, G5khy6; +wire O5khy6, W5khy6, E6khy6, M6khy6, U6khy6, C7khy6, K7khy6, S7khy6, A8khy6, I8khy6; +wire Q8khy6, Y8khy6, G9khy6, O9khy6, W9khy6, Eakhy6, Makhy6, Uakhy6, Cbkhy6, Kbkhy6; +wire Sbkhy6, Ackhy6, Ickhy6, Qckhy6, Yckhy6, Gdkhy6, Odkhy6, Wdkhy6, Eekhy6, Mekhy6; +wire Uekhy6, Cfkhy6, Kfkhy6, Sfkhy6, Agkhy6, Igkhy6, Qgkhy6, Ygkhy6, Ghkhy6, Ohkhy6; +wire Whkhy6, Eikhy6, Mikhy6, Uikhy6, Cjkhy6, Kjkhy6, Sjkhy6, Akkhy6, Ikkhy6, Qkkhy6; +wire Ykkhy6, Glkhy6, Olkhy6, Wlkhy6, Emkhy6, Mmkhy6, Umkhy6, Cnkhy6, Knkhy6, Snkhy6; +wire Aokhy6, Iokhy6, Qokhy6, Yokhy6, Gpkhy6, Opkhy6, Wpkhy6, Eqkhy6, Mqkhy6, Uqkhy6; +wire Crkhy6, Krkhy6, Srkhy6, Askhy6, Iskhy6, Qskhy6, Yskhy6, Gtkhy6, Otkhy6, Wtkhy6; +wire Eukhy6, Mukhy6, Uukhy6, Cvkhy6, Kvkhy6, Svkhy6, Awkhy6, Iwkhy6, Qwkhy6, Ywkhy6; +wire Gxkhy6, Oxkhy6, Wxkhy6, Eykhy6, Mykhy6, Uykhy6, Czkhy6, Kzkhy6, Szkhy6, A0lhy6; +wire I0lhy6, Q0lhy6, Y0lhy6, G1lhy6, O1lhy6, W1lhy6, E2lhy6, M2lhy6, U2lhy6, C3lhy6; +wire K3lhy6, S3lhy6, A4lhy6, I4lhy6, Q4lhy6, Y4lhy6, G5lhy6, O5lhy6, W5lhy6, E6lhy6; +wire M6lhy6, U6lhy6, C7lhy6, K7lhy6, S7lhy6, A8lhy6, I8lhy6, Q8lhy6, Y8lhy6, G9lhy6; +wire O9lhy6, W9lhy6, Ealhy6, Malhy6, Ualhy6, Cblhy6, Kblhy6, Sblhy6, Aclhy6, Iclhy6; +wire Qclhy6, Yclhy6, Gdlhy6, Odlhy6, Wdlhy6, Eelhy6, Melhy6, Uelhy6, Cflhy6, Kflhy6; +wire Sflhy6, Aglhy6, Iglhy6, Qglhy6, Yglhy6, Ghlhy6, Ohlhy6, Whlhy6, Eilhy6, Milhy6; +wire Uilhy6, Cjlhy6, Kjlhy6, Sjlhy6, Aklhy6, Iklhy6, Qklhy6, Yklhy6, Gllhy6, Ollhy6; +wire Wllhy6, Emlhy6, Mmlhy6, Umlhy6, Cnlhy6, Knlhy6, Snlhy6, Aolhy6, Iolhy6, Qolhy6; +wire Yolhy6, Gplhy6, Oplhy6, Wplhy6, Eqlhy6, Mqlhy6, Uqlhy6, Crlhy6, Krlhy6, Srlhy6; +wire Aslhy6, Islhy6, Qslhy6, Yslhy6, Gtlhy6, Otlhy6, Wtlhy6, Eulhy6, Mulhy6, Uulhy6; +wire Cvlhy6, Kvlhy6, Svlhy6, Awlhy6, Iwlhy6, Qwlhy6, Ywlhy6, Gxlhy6, Oxlhy6, Wxlhy6; +wire Eylhy6, Mylhy6, Uylhy6, Czlhy6, Kzlhy6, Szlhy6, A0mhy6, I0mhy6, Q0mhy6, Y0mhy6; +wire G1mhy6, O1mhy6, W1mhy6, E2mhy6, M2mhy6, U2mhy6, C3mhy6, K3mhy6, S3mhy6, A4mhy6; +wire I4mhy6, Q4mhy6, Y4mhy6, G5mhy6, O5mhy6, W5mhy6, E6mhy6, M6mhy6, U6mhy6, C7mhy6; +wire K7mhy6, S7mhy6, A8mhy6, I8mhy6, Q8mhy6, Y8mhy6, G9mhy6, O9mhy6, W9mhy6, Eamhy6; +wire Mamhy6, Uamhy6, Cbmhy6, Kbmhy6, Sbmhy6, Acmhy6, Icmhy6, Qcmhy6, Ycmhy6, Gdmhy6; +wire Odmhy6, Wdmhy6, Eemhy6, Memhy6, Uemhy6, Cfmhy6, Kfmhy6, Sfmhy6, Agmhy6, Igmhy6; +wire Qgmhy6, Ygmhy6, Ghmhy6, Ohmhy6, Whmhy6, Eimhy6, Mimhy6, Uimhy6, Cjmhy6, Kjmhy6; +wire Sjmhy6, Akmhy6, Ikmhy6, Qkmhy6, Ykmhy6, Glmhy6, Olmhy6, Wlmhy6, Emmhy6, Mmmhy6; +wire Ummhy6, Cnmhy6, Knmhy6, Snmhy6, Aomhy6, Iomhy6, Qomhy6, Yomhy6, Gpmhy6, Opmhy6; +wire Wpmhy6, Eqmhy6, Mqmhy6, Uqmhy6, Crmhy6, Krmhy6, Srmhy6, Asmhy6, Ismhy6, Qsmhy6; +wire Ysmhy6, Gtmhy6, Otmhy6, Wtmhy6, Eumhy6, Mumhy6, Uumhy6, Cvmhy6, Kvmhy6, Svmhy6; +wire Awmhy6, Iwmhy6, Qwmhy6, Ywmhy6, Gxmhy6, Oxmhy6, Wxmhy6, Eymhy6, Mymhy6, Uymhy6; +wire Czmhy6, Kzmhy6, Szmhy6, A0nhy6, I0nhy6, Q0nhy6, Y0nhy6, G1nhy6, O1nhy6, W1nhy6; +wire E2nhy6, M2nhy6, U2nhy6, C3nhy6, K3nhy6, S3nhy6, A4nhy6, I4nhy6, Q4nhy6, Y4nhy6; +wire G5nhy6, O5nhy6, W5nhy6, E6nhy6, M6nhy6, U6nhy6, C7nhy6, K7nhy6, S7nhy6, A8nhy6; +wire I8nhy6, Q8nhy6, Y8nhy6, G9nhy6, O9nhy6, W9nhy6, Eanhy6, Manhy6, Uanhy6, Cbnhy6; +wire Kbnhy6, Sbnhy6, Acnhy6, Icnhy6, Qcnhy6, Ycnhy6, Gdnhy6, Odnhy6, Wdnhy6, Eenhy6; +wire Menhy6, Uenhy6, Cfnhy6, Kfnhy6, Sfnhy6, Agnhy6, Ignhy6, Qgnhy6, Ygnhy6, Ghnhy6; +wire Ohnhy6, Whnhy6, Einhy6, Minhy6, Uinhy6, Cjnhy6, Kjnhy6, Sjnhy6, Aknhy6, Iknhy6; +wire Qknhy6, Yknhy6, Glnhy6, Olnhy6, Wlnhy6, Emnhy6, Mmnhy6, Umnhy6, Cnnhy6, Knnhy6; +wire Snnhy6, Aonhy6, Ionhy6, Qonhy6, Yonhy6, Gpnhy6, Opnhy6, Wpnhy6, Eqnhy6, Mqnhy6; +wire Uqnhy6, Crnhy6, Krnhy6, Srnhy6, Asnhy6, Isnhy6, Qsnhy6, Ysnhy6, Gtnhy6, Otnhy6; +wire Wtnhy6, Eunhy6, Munhy6, Uunhy6, Cvnhy6, Kvnhy6, Svnhy6, Awnhy6, Iwnhy6, Qwnhy6; +wire Ywnhy6, Gxnhy6, Oxnhy6, Wxnhy6, Eynhy6, Mynhy6, Uynhy6, Cznhy6, Kznhy6, Sznhy6; +wire A0ohy6, I0ohy6, Q0ohy6, Y0ohy6, G1ohy6, O1ohy6, W1ohy6, E2ohy6, M2ohy6, U2ohy6; +wire C3ohy6, K3ohy6, S3ohy6, A4ohy6, I4ohy6, Q4ohy6, Y4ohy6, G5ohy6, O5ohy6, W5ohy6; +wire E6ohy6, M6ohy6, U6ohy6, C7ohy6, K7ohy6, S7ohy6, A8ohy6, I8ohy6, Q8ohy6, Y8ohy6; +wire G9ohy6, O9ohy6, W9ohy6, Eaohy6, Maohy6, Uaohy6, Cbohy6, Kbohy6, Sbohy6, Acohy6; +wire Icohy6, Qcohy6, Ycohy6, Gdohy6, Odohy6, Wdohy6, Eeohy6, Meohy6, Ueohy6, Cfohy6; +wire Kfohy6, Sfohy6, Agohy6, Igohy6, Qgohy6, Ygohy6, Ghohy6, Ohohy6, Whohy6, Eiohy6; +wire Miohy6, Uiohy6, Cjohy6, Kjohy6, Sjohy6, Akohy6, Ikohy6, Qkohy6, Ykohy6, Glohy6; +wire Olohy6, Wlohy6, Emohy6, Mmohy6, Umohy6, Cnohy6, Knohy6, Snohy6, Aoohy6, Ioohy6; +wire Qoohy6, Yoohy6, Gpohy6, Opohy6, Wpohy6, Eqohy6, Mqohy6, Uqohy6, Crohy6, Krohy6; +wire Srohy6, Asohy6, Isohy6, Qsohy6, Ysohy6, Gtohy6, Otohy6, Wtohy6, Euohy6, Muohy6; +wire Uuohy6, Cvohy6, Kvohy6, Svohy6, Awohy6, Iwohy6, Qwohy6, Ywohy6, Gxohy6, Oxohy6; +wire Wxohy6, Eyohy6, Myohy6, Uyohy6, Czohy6, Kzohy6, Szohy6, A0phy6, I0phy6, Q0phy6; +wire Y0phy6, G1phy6, O1phy6, W1phy6, E2phy6, M2phy6, U2phy6, C3phy6, K3phy6, S3phy6; +wire A4phy6, I4phy6, Q4phy6, Y4phy6, G5phy6, O5phy6, W5phy6, E6phy6, M6phy6, U6phy6; +wire C7phy6, K7phy6, S7phy6, A8phy6, I8phy6, Q8phy6, Y8phy6, G9phy6, O9phy6, W9phy6; +wire Eaphy6, Maphy6, Uaphy6, Cbphy6, Kbphy6, Sbphy6, Acphy6, Icphy6, Qcphy6, Ycphy6; +wire Gdphy6, Odphy6, Wdphy6, Eephy6, Mephy6, Uephy6, Cfphy6, Kfphy6, Sfphy6, Agphy6; +wire Igphy6, Qgphy6, Ygphy6, Ghphy6, Ohphy6, Whphy6, Eiphy6, Miphy6, Uiphy6, Cjphy6; +wire Kjphy6, Sjphy6, Akphy6, Ikphy6, Qkphy6, Ykphy6, Glphy6, Olphy6, Wlphy6, Emphy6; +wire Mmphy6, Umphy6, Cnphy6, Knphy6, Snphy6, Aophy6, Iophy6, Qophy6, Yophy6, Gpphy6; +wire Opphy6, Wpphy6, Eqphy6, Mqphy6, Uqphy6, Crphy6, Krphy6, Srphy6, Asphy6, Isphy6; +wire Qsphy6, Ysphy6, Gtphy6, Otphy6, Wtphy6, Euphy6, Muphy6, Uuphy6, Cvphy6, Kvphy6; +wire Svphy6, Awphy6, Iwphy6, Qwphy6, Ywphy6, Gxphy6, Oxphy6, Wxphy6, Eyphy6, Myphy6; +wire Uyphy6, Czphy6, Kzphy6, Szphy6, A0qhy6, I0qhy6, Q0qhy6, Y0qhy6, G1qhy6, O1qhy6; +wire W1qhy6, E2qhy6, M2qhy6, U2qhy6, C3qhy6, K3qhy6, S3qhy6, A4qhy6, I4qhy6, Q4qhy6; +wire Y4qhy6, G5qhy6, O5qhy6, W5qhy6, E6qhy6, M6qhy6, U6qhy6, C7qhy6, K7qhy6, S7qhy6; +wire A8qhy6, I8qhy6, Q8qhy6, Y8qhy6, G9qhy6, O9qhy6, W9qhy6, Eaqhy6, Maqhy6, Uaqhy6; +wire Cbqhy6, Kbqhy6, Sbqhy6, Acqhy6, Icqhy6, Qcqhy6, Ycqhy6, Gdqhy6, Odqhy6, Wdqhy6; +wire Eeqhy6, Meqhy6, Ueqhy6, Cfqhy6, Kfqhy6, Sfqhy6, Agqhy6, Igqhy6, Qgqhy6, Ygqhy6; +wire Ghqhy6, Ohqhy6, Whqhy6, Eiqhy6, Miqhy6, Uiqhy6, Cjqhy6, Kjqhy6, Sjqhy6, Akqhy6; +wire Ikqhy6, Qkqhy6, Ykqhy6, Glqhy6, Olqhy6, Wlqhy6, Emqhy6, Mmqhy6, Umqhy6, Cnqhy6; +wire Knqhy6, Snqhy6, Aoqhy6, Ioqhy6, Qoqhy6, Yoqhy6, Gpqhy6, Opqhy6, Wpqhy6, Eqqhy6; +wire Mqqhy6, Uqqhy6, Crqhy6, Krqhy6, Srqhy6, Asqhy6, Isqhy6, Qsqhy6, Ysqhy6, Gtqhy6; +wire Otqhy6, Wtqhy6, Euqhy6, Muqhy6, Uuqhy6, Cvqhy6, Kvqhy6, Svqhy6, Awqhy6, Iwqhy6; +wire Qwqhy6, Ywqhy6, Gxqhy6, Oxqhy6, Wxqhy6, Eyqhy6, Myqhy6, Uyqhy6, Czqhy6, Kzqhy6; +wire Szqhy6, A0rhy6, I0rhy6, Q0rhy6, Y0rhy6, G1rhy6, O1rhy6, W1rhy6, E2rhy6, M2rhy6; +wire U2rhy6, C3rhy6, K3rhy6, S3rhy6, A4rhy6, I4rhy6, Q4rhy6, Y4rhy6, G5rhy6, O5rhy6; +wire W5rhy6, E6rhy6, M6rhy6, U6rhy6, C7rhy6, K7rhy6, S7rhy6, A8rhy6, I8rhy6, Q8rhy6; +wire Y8rhy6, G9rhy6, O9rhy6, W9rhy6, Earhy6, Marhy6, Uarhy6, Cbrhy6, Kbrhy6, Sbrhy6; +wire Acrhy6, Icrhy6, Qcrhy6, Ycrhy6, Gdrhy6, Odrhy6, Wdrhy6, Eerhy6, Merhy6, Uerhy6; +wire Cfrhy6, Kfrhy6, Sfrhy6, Agrhy6, Igrhy6, Qgrhy6, Ygrhy6, Ghrhy6, Ohrhy6, Whrhy6; +wire Eirhy6, Mirhy6, Uirhy6, Cjrhy6, Kjrhy6, Sjrhy6, Akrhy6, Ikrhy6, Qkrhy6, Ykrhy6; +wire Glrhy6, Olrhy6, Wlrhy6, Emrhy6, Mmrhy6, Umrhy6, Cnrhy6, Knrhy6, Snrhy6, Aorhy6; +wire Iorhy6, Qorhy6, Yorhy6, Gprhy6, Oprhy6, Wprhy6, Eqrhy6, Mqrhy6, Uqrhy6, Crrhy6; +wire Krrhy6, Srrhy6, Asrhy6, Isrhy6, Qsrhy6, Ysrhy6, Gtrhy6, Otrhy6, Wtrhy6, Eurhy6; +wire Murhy6, Uurhy6, Cvrhy6, Kvrhy6, Svrhy6, Awrhy6, Iwrhy6, Qwrhy6, Ywrhy6, Gxrhy6; +wire Oxrhy6, Wxrhy6, Eyrhy6, Myrhy6, Uyrhy6, Czrhy6, Kzrhy6, Szrhy6, A0shy6, I0shy6; +wire Q0shy6, Y0shy6, G1shy6, O1shy6, W1shy6, E2shy6, M2shy6, U2shy6, C3shy6, K3shy6; +wire S3shy6, A4shy6, I4shy6, Q4shy6, Y4shy6, G5shy6, O5shy6, W5shy6, E6shy6, M6shy6; +wire U6shy6, C7shy6, K7shy6, S7shy6, A8shy6, I8shy6, Q8shy6, Y8shy6, G9shy6, O9shy6; +wire W9shy6, Eashy6, Mashy6, Uashy6, Cbshy6, Kbshy6, Sbshy6, Acshy6, Icshy6, Qcshy6; +wire Ycshy6, Gdshy6, Odshy6, Wdshy6, Eeshy6, Meshy6, Ueshy6, Cfshy6, Kfshy6, Sfshy6; +wire Agshy6, Igshy6, Qgshy6, Ygshy6, Ghshy6, Ohshy6, Whshy6, Eishy6, Mishy6, Uishy6; +wire Cjshy6, Kjshy6, Sjshy6, Akshy6, Ikshy6, Qkshy6, Ykshy6, Glshy6, Olshy6, Wlshy6; +wire Emshy6, Mmshy6, Umshy6, Cnshy6, Knshy6, Snshy6, Aoshy6, Ioshy6, Qoshy6, Yoshy6; +wire Gpshy6, Opshy6, Wpshy6, Eqshy6, Mqshy6, Uqshy6, Crshy6, Krshy6, Srshy6, Asshy6; +wire Isshy6, Qsshy6, Ysshy6, Gtshy6, Otshy6, Wtshy6, Eushy6, Mushy6, Uushy6, Cvshy6; +wire Kvshy6, Svshy6, Awshy6, Iwshy6, Qwshy6, Ywshy6, Gxshy6, Oxshy6, Wxshy6, Eyshy6; +wire Myshy6, Uyshy6, Czshy6, Kzshy6, Szshy6, A0thy6, I0thy6, Q0thy6, Y0thy6, G1thy6; +wire O1thy6, W1thy6, E2thy6, M2thy6, U2thy6, C3thy6, K3thy6, S3thy6, A4thy6, I4thy6; +wire Q4thy6, Y4thy6, G5thy6, O5thy6, W5thy6, E6thy6, M6thy6, U6thy6, C7thy6, K7thy6; +wire S7thy6, A8thy6, I8thy6, Q8thy6, Y8thy6, G9thy6, O9thy6, W9thy6, Eathy6, Mathy6; +wire Uathy6, Cbthy6, Kbthy6, Sbthy6, Acthy6, Icthy6, Qcthy6, Ycthy6, Gdthy6, Odthy6; +wire Wdthy6, Eethy6, Methy6, Uethy6, Cfthy6, Kfthy6, Sfthy6, Agthy6, Igthy6, Qgthy6; +wire Ygthy6, Ghthy6, Ohthy6, Whthy6, Eithy6, Mithy6, Uithy6, Cjthy6, Kjthy6, Sjthy6; +wire Akthy6, Ikthy6, Qkthy6, Ykthy6, Glthy6, Olthy6, Wlthy6, Emthy6, Mmthy6, Umthy6; +wire Cnthy6, Knthy6, Snthy6, Aothy6, Iothy6, Qothy6, Yothy6, Gpthy6, Opthy6, Wpthy6; +wire Eqthy6, Mqthy6, Uqthy6, Crthy6, Krthy6, Srthy6, Asthy6, Isthy6, Qsthy6, Ysthy6; +wire Gtthy6, Otthy6, Wtthy6, Euthy6, Muthy6, Uuthy6, Cvthy6, Kvthy6, Svthy6, Awthy6; +wire Iwthy6, Qwthy6, Ywthy6, Gxthy6, Oxthy6, Wxthy6, Eythy6, Mythy6, Uythy6, Czthy6; +wire Kzthy6, Szthy6, A0uhy6, I0uhy6, Q0uhy6, Y0uhy6, G1uhy6, O1uhy6, W1uhy6, E2uhy6; +wire M2uhy6, U2uhy6, C3uhy6, K3uhy6, S3uhy6, A4uhy6, I4uhy6, Q4uhy6, Y4uhy6, G5uhy6; +wire O5uhy6, W5uhy6, E6uhy6, M6uhy6, U6uhy6, C7uhy6, K7uhy6, S7uhy6, A8uhy6, I8uhy6; +wire Q8uhy6, Y8uhy6, G9uhy6, O9uhy6, W9uhy6, Eauhy6, Mauhy6, Uauhy6, Cbuhy6, Kbuhy6; +wire Sbuhy6, Acuhy6, Icuhy6, Qcuhy6, Ycuhy6, Gduhy6, Oduhy6, Wduhy6, Eeuhy6, Meuhy6; +wire Ueuhy6, Cfuhy6, Kfuhy6, Sfuhy6, Aguhy6, Iguhy6, Qguhy6, Yguhy6, Ghuhy6, Ohuhy6; +wire Whuhy6, Eiuhy6, Miuhy6, Uiuhy6, Cjuhy6, Kjuhy6, Sjuhy6, Akuhy6, Ikuhy6, Qkuhy6; +wire Ykuhy6, Gluhy6, Oluhy6, Wluhy6, Emuhy6, Mmuhy6, Umuhy6, Cnuhy6, Knuhy6, Snuhy6; +wire Aouhy6, Iouhy6, Qouhy6, Youhy6, Gpuhy6, Opuhy6, Wpuhy6, Equhy6, Mquhy6, Uquhy6; +wire Cruhy6, Kruhy6, Sruhy6, Asuhy6, Isuhy6, Qsuhy6, Ysuhy6, Gtuhy6, Otuhy6, Wtuhy6; +wire Euuhy6, Muuhy6, Uuuhy6, Cvuhy6, Kvuhy6, Svuhy6, Awuhy6, Iwuhy6, Qwuhy6, Ywuhy6; +wire Gxuhy6, Oxuhy6, Wxuhy6, Eyuhy6, Myuhy6, Uyuhy6, Czuhy6, Kzuhy6, Szuhy6, A0vhy6; +wire I0vhy6, Q0vhy6, Y0vhy6, G1vhy6, O1vhy6, W1vhy6, E2vhy6, M2vhy6, U2vhy6, C3vhy6; +wire K3vhy6, S3vhy6, A4vhy6, I4vhy6, Q4vhy6, Y4vhy6, G5vhy6, O5vhy6, W5vhy6, E6vhy6; +wire M6vhy6, U6vhy6, C7vhy6, K7vhy6, S7vhy6, A8vhy6, I8vhy6, Q8vhy6, Y8vhy6, G9vhy6; +wire O9vhy6, W9vhy6, Eavhy6, Mavhy6, Uavhy6, Cbvhy6, Kbvhy6, Sbvhy6, Acvhy6, Icvhy6; +wire Qcvhy6, Ycvhy6, Gdvhy6, Odvhy6, Wdvhy6, Eevhy6, Mevhy6, Uevhy6, Cfvhy6, Kfvhy6; +wire Sfvhy6, Agvhy6, Igvhy6, Qgvhy6, Ygvhy6, Ghvhy6, Ohvhy6, Whvhy6, Eivhy6, Mivhy6; +wire Uivhy6, Cjvhy6, Kjvhy6, Sjvhy6, Akvhy6, Ikvhy6, Qkvhy6, Ykvhy6, Glvhy6, Olvhy6; +wire Wlvhy6, Emvhy6, Mmvhy6, Umvhy6, Cnvhy6, Knvhy6, Snvhy6, Aovhy6, Iovhy6, Qovhy6; +wire Yovhy6, Gpvhy6, Opvhy6, Wpvhy6, Eqvhy6, Mqvhy6, Uqvhy6, Crvhy6, Krvhy6, Srvhy6; +wire Asvhy6, Isvhy6, Qsvhy6, Ysvhy6, Gtvhy6, Otvhy6, Wtvhy6, Euvhy6, Muvhy6, Uuvhy6; +wire Cvvhy6, Kvvhy6, Svvhy6, Awvhy6, Iwvhy6, Qwvhy6, Ywvhy6, Gxvhy6, Oxvhy6, Wxvhy6; +wire Eyvhy6, Myvhy6, Uyvhy6, Czvhy6, Kzvhy6, Szvhy6, A0why6, I0why6, Q0why6, Y0why6; +wire G1why6, O1why6, W1why6, E2why6, M2why6, U2why6, C3why6, K3why6, S3why6, A4why6; +wire I4why6, Q4why6, Y4why6, G5why6, O5why6, W5why6, E6why6, M6why6, U6why6, C7why6; +wire K7why6, S7why6, A8why6, I8why6, Q8why6, Y8why6, G9why6, O9why6, W9why6, Eawhy6; +wire Mawhy6, Uawhy6, Cbwhy6, Kbwhy6, Sbwhy6, Acwhy6, Icwhy6, Qcwhy6, Ycwhy6, Gdwhy6; +wire Odwhy6, Wdwhy6, Eewhy6, Mewhy6, Uewhy6, Cfwhy6, Kfwhy6, Sfwhy6, Agwhy6, Igwhy6; +wire Qgwhy6, Ygwhy6, Ghwhy6, Ohwhy6, Whwhy6, Eiwhy6, Miwhy6, Uiwhy6, Cjwhy6, Kjwhy6; +wire Sjwhy6, Akwhy6, Ikwhy6, Qkwhy6, Ykwhy6, Glwhy6, Olwhy6, Wlwhy6, Emwhy6, Mmwhy6; +wire Umwhy6, Cnwhy6, Knwhy6, Snwhy6, Aowhy6, Iowhy6, Qowhy6, Yowhy6, Gpwhy6, Opwhy6; +wire Wpwhy6, Eqwhy6, Mqwhy6, Uqwhy6, Crwhy6, Krwhy6, Srwhy6, Aswhy6, Iswhy6, Qswhy6; +wire Yswhy6, Gtwhy6, Otwhy6, Wtwhy6, Euwhy6, Muwhy6, Uuwhy6, Cvwhy6, Kvwhy6, Svwhy6; +wire Awwhy6, Iwwhy6, Qwwhy6, Ywwhy6, Gxwhy6, Oxwhy6, Wxwhy6, Eywhy6, Mywhy6, Uywhy6; +wire Czwhy6, Kzwhy6, Szwhy6, A0xhy6, I0xhy6, Q0xhy6, Y0xhy6, G1xhy6, O1xhy6, W1xhy6; +wire E2xhy6, M2xhy6, U2xhy6, C3xhy6, K3xhy6, S3xhy6, A4xhy6, I4xhy6, Q4xhy6, Y4xhy6; +wire G5xhy6, O5xhy6, W5xhy6, E6xhy6, M6xhy6, U6xhy6, C7xhy6, K7xhy6, S7xhy6, A8xhy6; +wire I8xhy6, Q8xhy6, Y8xhy6, G9xhy6, O9xhy6, W9xhy6, Eaxhy6, Maxhy6, Uaxhy6, Cbxhy6; +wire Kbxhy6, Sbxhy6, Acxhy6, Icxhy6, Qcxhy6, Ycxhy6, Gdxhy6, Odxhy6, Wdxhy6, Eexhy6; +wire Mexhy6, Uexhy6, Cfxhy6, Kfxhy6, Sfxhy6, Agxhy6, Igxhy6, Qgxhy6, Ygxhy6, Ghxhy6; +wire Ohxhy6, Whxhy6, Eixhy6, Mixhy6, Uixhy6, Cjxhy6, Kjxhy6, Sjxhy6, Akxhy6, Ikxhy6; +wire Qkxhy6, Ykxhy6, Glxhy6, Olxhy6, Wlxhy6, Emxhy6, Mmxhy6, Umxhy6, Cnxhy6, Knxhy6; +wire Snxhy6, Aoxhy6, Ioxhy6, Qoxhy6, Yoxhy6, Gpxhy6, Opxhy6, Wpxhy6, Eqxhy6, Mqxhy6; +wire Uqxhy6, Crxhy6, Krxhy6, Srxhy6, Asxhy6, Isxhy6, Qsxhy6, Ysxhy6, Gtxhy6, Otxhy6; +wire Wtxhy6, Euxhy6, Muxhy6, Uuxhy6, Cvxhy6, Kvxhy6, Svxhy6, Awxhy6, Iwxhy6, Qwxhy6; +wire Ywxhy6, Gxxhy6, Oxxhy6, Wxxhy6, Eyxhy6, Myxhy6, Uyxhy6, Czxhy6, Kzxhy6, Szxhy6; +wire A0yhy6, I0yhy6, Q0yhy6, Y0yhy6, G1yhy6, O1yhy6, W1yhy6, E2yhy6, M2yhy6, U2yhy6; +wire C3yhy6, K3yhy6, S3yhy6, A4yhy6, I4yhy6, Q4yhy6, Y4yhy6, G5yhy6, O5yhy6, W5yhy6; +wire E6yhy6, M6yhy6, U6yhy6, C7yhy6, K7yhy6, S7yhy6, A8yhy6, I8yhy6, Q8yhy6, Y8yhy6; +wire G9yhy6, O9yhy6, W9yhy6, Eayhy6, Mayhy6, Uayhy6, Cbyhy6, Kbyhy6, Sbyhy6, Acyhy6; +wire Icyhy6, Qcyhy6, Ycyhy6, Gdyhy6, Odyhy6, Wdyhy6, Eeyhy6, Meyhy6, Ueyhy6, Cfyhy6; +wire Kfyhy6, Sfyhy6, Agyhy6, Igyhy6, Qgyhy6, Ygyhy6, Ghyhy6, Ohyhy6, Whyhy6, Eiyhy6; +wire Miyhy6, Uiyhy6, Cjyhy6, Kjyhy6, Sjyhy6, Akyhy6, Ikyhy6, Qkyhy6, Ykyhy6, Glyhy6; +wire Olyhy6, Wlyhy6, Emyhy6, Mmyhy6, Umyhy6, Cnyhy6, Knyhy6, Snyhy6, Aoyhy6, Ioyhy6; +wire Qoyhy6, Yoyhy6, Gpyhy6, Opyhy6, Wpyhy6, Eqyhy6, Mqyhy6, Uqyhy6, Cryhy6, Kryhy6; +wire Sryhy6, Asyhy6, Isyhy6, Qsyhy6, Ysyhy6, Gtyhy6, Otyhy6, Wtyhy6, Euyhy6, Muyhy6; +wire Uuyhy6, Cvyhy6, Kvyhy6, Svyhy6, Awyhy6, Iwyhy6, Qwyhy6, Ywyhy6, Gxyhy6, Oxyhy6; +wire Wxyhy6, Eyyhy6, Myyhy6, Uyyhy6, Czyhy6, Kzyhy6, Szyhy6, A0zhy6, I0zhy6, Q0zhy6; +wire Y0zhy6, G1zhy6, O1zhy6, W1zhy6, E2zhy6, M2zhy6, U2zhy6, C3zhy6, K3zhy6, S3zhy6; +wire A4zhy6, I4zhy6, Q4zhy6, Y4zhy6, G5zhy6, O5zhy6, W5zhy6, E6zhy6, M6zhy6, U6zhy6; +wire C7zhy6, K7zhy6, S7zhy6, A8zhy6, I8zhy6, Q8zhy6, Y8zhy6, G9zhy6, O9zhy6, W9zhy6; +wire Eazhy6, Mazhy6, Uazhy6, Cbzhy6, Kbzhy6, Sbzhy6, Aczhy6, Iczhy6, Qczhy6, Yczhy6; +wire Gdzhy6, Odzhy6, Wdzhy6, Eezhy6, Mezhy6, Uezhy6, Cfzhy6, Kfzhy6, Sfzhy6, Agzhy6; +wire Igzhy6, Qgzhy6, Ygzhy6, Ghzhy6, Ohzhy6, Whzhy6, Eizhy6, Mizhy6, Uizhy6, Cjzhy6; +wire Kjzhy6, Sjzhy6, Akzhy6, Ikzhy6, Qkzhy6, Ykzhy6, Glzhy6, Olzhy6, Wlzhy6, Emzhy6; +wire Mmzhy6, Umzhy6, Cnzhy6, Knzhy6, Snzhy6, Aozhy6, Iozhy6, Qozhy6, Yozhy6, Gpzhy6; +wire Opzhy6, Wpzhy6, Eqzhy6, Mqzhy6, Uqzhy6, Crzhy6, Krzhy6, Srzhy6, Aszhy6, Iszhy6; +wire Qszhy6, Yszhy6, Gtzhy6, Otzhy6, Wtzhy6, Euzhy6, Muzhy6, Uuzhy6, Cvzhy6, Kvzhy6; +wire Svzhy6, Awzhy6, Iwzhy6, Qwzhy6, Ywzhy6, Gxzhy6, Oxzhy6, Wxzhy6, Eyzhy6, Myzhy6; +wire Uyzhy6, Czzhy6, Kzzhy6, Szzhy6, A00iy6, I00iy6, Q00iy6, Y00iy6, G10iy6, O10iy6; +wire W10iy6, E20iy6, M20iy6, U20iy6, C30iy6, K30iy6, S30iy6, A40iy6, I40iy6, Q40iy6; +wire Y40iy6, G50iy6, O50iy6, W50iy6, E60iy6, M60iy6, U60iy6, C70iy6, K70iy6, S70iy6; +wire A80iy6, I80iy6, Q80iy6, Y80iy6, G90iy6, O90iy6, W90iy6, Ea0iy6, Ma0iy6, Ua0iy6; +wire Cb0iy6, Kb0iy6, Sb0iy6, Ac0iy6, Ic0iy6, Qc0iy6, Yc0iy6, Gd0iy6, Od0iy6, Wd0iy6; +wire Ee0iy6, Me0iy6, Ue0iy6, Cf0iy6, Kf0iy6, Sf0iy6, Ag0iy6, Ig0iy6, Qg0iy6, Yg0iy6; +wire Gh0iy6, Oh0iy6, Wh0iy6, Ei0iy6, Mi0iy6, Ui0iy6, Cj0iy6, Kj0iy6, Sj0iy6, Ak0iy6; +wire Ik0iy6, Qk0iy6, Yk0iy6, Gl0iy6, Ol0iy6, Wl0iy6, Em0iy6, Mm0iy6, Um0iy6, Cn0iy6; +wire Kn0iy6, Sn0iy6, Ao0iy6, Io0iy6, Qo0iy6, Yo0iy6, Gp0iy6, Op0iy6, Wp0iy6, Eq0iy6; +wire Mq0iy6, Uq0iy6, Cr0iy6, Kr0iy6, Sr0iy6, As0iy6, Is0iy6, Qs0iy6, Ys0iy6, Gt0iy6; +wire Ot0iy6, Wt0iy6, Eu0iy6, Mu0iy6, Uu0iy6, Cv0iy6, Kv0iy6, Sv0iy6, Aw0iy6, Iw0iy6; +wire Qw0iy6, Yw0iy6, Gx0iy6, Ox0iy6, Wx0iy6, Ey0iy6, My0iy6, Uy0iy6, Cz0iy6, Kz0iy6; +wire Sz0iy6, A01iy6, I01iy6, Q01iy6, Y01iy6, G11iy6, O11iy6, W11iy6, E21iy6, M21iy6; +wire U21iy6, C31iy6, K31iy6, S31iy6, A41iy6, I41iy6, Q41iy6, Y41iy6, G51iy6, O51iy6; +wire W51iy6, E61iy6, M61iy6, U61iy6, C71iy6, K71iy6, S71iy6, A81iy6, I81iy6, Q81iy6; +wire Y81iy6, G91iy6, O91iy6, W91iy6, Ea1iy6, Ma1iy6, Ua1iy6, Cb1iy6, Kb1iy6, Sb1iy6; +wire Ac1iy6, Ic1iy6, Qc1iy6, Yc1iy6, Gd1iy6, Od1iy6, Wd1iy6, Ee1iy6, Me1iy6, Ue1iy6; +wire Cf1iy6, Kf1iy6, Sf1iy6, Ag1iy6, Ig1iy6, Qg1iy6, Yg1iy6, Gh1iy6, Oh1iy6, Wh1iy6; +wire Ei1iy6, Mi1iy6, Ui1iy6, Cj1iy6, Kj1iy6, Sj1iy6, Ak1iy6, Ik1iy6, Qk1iy6, Yk1iy6; +wire Gl1iy6, Ol1iy6, Wl1iy6, Em1iy6, Mm1iy6, Um1iy6, Cn1iy6, Kn1iy6, Sn1iy6, Ao1iy6; +wire Io1iy6, Qo1iy6, Yo1iy6, Gp1iy6, Op1iy6, Wp1iy6, Eq1iy6, Mq1iy6, Uq1iy6, Cr1iy6; +wire Kr1iy6, Sr1iy6, As1iy6, Is1iy6, Qs1iy6, Ys1iy6, Gt1iy6, Ot1iy6, Wt1iy6, Eu1iy6; +wire Mu1iy6, Uu1iy6, Cv1iy6, Kv1iy6, Sv1iy6, Aw1iy6, Iw1iy6, Qw1iy6, Yw1iy6, Gx1iy6; +wire Ox1iy6, Wx1iy6, Ey1iy6, My1iy6, Uy1iy6, Cz1iy6, Kz1iy6, Sz1iy6, A02iy6, I02iy6; +wire Q02iy6, Y02iy6, G12iy6, O12iy6, W12iy6, E22iy6, M22iy6, U22iy6, C32iy6, K32iy6; +wire S32iy6, A42iy6, I42iy6, Q42iy6, Y42iy6, G52iy6, O52iy6, W52iy6, E62iy6, M62iy6; +wire U62iy6, C72iy6, K72iy6, S72iy6, A82iy6, I82iy6, Q82iy6, Y82iy6, G92iy6, O92iy6; +wire W92iy6, Ea2iy6, Ma2iy6, Ua2iy6, Cb2iy6, Kb2iy6, Sb2iy6, Ac2iy6, Ic2iy6, Qc2iy6; +wire Yc2iy6, Gd2iy6, Od2iy6, Wd2iy6, Ee2iy6, Me2iy6, Ue2iy6, Cf2iy6, Kf2iy6, Sf2iy6; +wire Ag2iy6, Ig2iy6, Qg2iy6, Yg2iy6, Gh2iy6, Oh2iy6, Wh2iy6, Ei2iy6, Mi2iy6, Ui2iy6; +wire Cj2iy6, Kj2iy6, Sj2iy6, Ak2iy6, Ik2iy6, Qk2iy6, Yk2iy6, Gl2iy6, Ol2iy6, Wl2iy6; +wire Em2iy6, Mm2iy6, Um2iy6, Cn2iy6, Kn2iy6, Sn2iy6, Ao2iy6, Io2iy6, Qo2iy6, Yo2iy6; +wire Gp2iy6, Op2iy6, Wp2iy6, Eq2iy6, Mq2iy6, Uq2iy6, Cr2iy6, Kr2iy6, Sr2iy6, As2iy6; +wire Is2iy6, Qs2iy6, Ys2iy6, Gt2iy6, Ot2iy6, Wt2iy6, Eu2iy6, Mu2iy6, Uu2iy6, Cv2iy6; +wire Kv2iy6, Sv2iy6, Aw2iy6, Iw2iy6, Qw2iy6, Yw2iy6, Gx2iy6, Ox2iy6, Wx2iy6, Ey2iy6; +wire My2iy6, Uy2iy6, Cz2iy6, Kz2iy6, Sz2iy6, A03iy6, I03iy6, Q03iy6, Y03iy6, G13iy6; +wire O13iy6, W13iy6, E23iy6, M23iy6, U23iy6, C33iy6, K33iy6, S33iy6, A43iy6, I43iy6; +wire Q43iy6, Y43iy6, G53iy6, O53iy6, W53iy6, E63iy6, M63iy6, U63iy6, C73iy6, K73iy6; +wire S73iy6, A83iy6, I83iy6, Q83iy6, Y83iy6, G93iy6, O93iy6, W93iy6, Ea3iy6, Ma3iy6; +wire Ua3iy6, Cb3iy6, Kb3iy6, Sb3iy6, Ac3iy6, Ic3iy6, Qc3iy6, Yc3iy6, Gd3iy6, Od3iy6; +wire Wd3iy6, Ee3iy6, Me3iy6, Ue3iy6, Cf3iy6, Kf3iy6, Sf3iy6, Ag3iy6, Ig3iy6, Qg3iy6; +wire Yg3iy6, Gh3iy6, Oh3iy6, Wh3iy6, Ei3iy6, Mi3iy6, Ui3iy6, Cj3iy6, Kj3iy6, Sj3iy6; +wire Ak3iy6, Ik3iy6, Qk3iy6, Yk3iy6, Gl3iy6, Ol3iy6, Wl3iy6, Em3iy6, Mm3iy6, Um3iy6; +wire Cn3iy6, Kn3iy6, Sn3iy6, Ao3iy6, Io3iy6, Qo3iy6, Yo3iy6, Gp3iy6, Op3iy6, Wp3iy6; +wire Eq3iy6, Mq3iy6, Uq3iy6, Cr3iy6, Kr3iy6, Sr3iy6, As3iy6, Is3iy6, Qs3iy6, Ys3iy6; +wire Gt3iy6, Ot3iy6, Wt3iy6, Eu3iy6, Mu3iy6, Uu3iy6, Cv3iy6, Kv3iy6, Sv3iy6, Aw3iy6; +wire Iw3iy6, Qw3iy6, Yw3iy6, Gx3iy6, Ox3iy6, Wx3iy6, Ey3iy6, My3iy6, Uy3iy6, Cz3iy6; +wire Kz3iy6, Sz3iy6, A04iy6, I04iy6, Q04iy6, Y04iy6, G14iy6, O14iy6, W14iy6, E24iy6; +wire M24iy6, U24iy6, C34iy6, K34iy6, S34iy6, A44iy6, I44iy6, Q44iy6, Y44iy6, G54iy6; +wire O54iy6, W54iy6, E64iy6, M64iy6, U64iy6, C74iy6, K74iy6, S74iy6, A84iy6, I84iy6; +wire Q84iy6, Y84iy6, G94iy6, O94iy6, W94iy6, Ea4iy6, Ma4iy6, Ua4iy6, Cb4iy6, Kb4iy6; +wire Sb4iy6, Ac4iy6, Ic4iy6, Qc4iy6, Yc4iy6, Gd4iy6, Od4iy6, Wd4iy6, Ee4iy6, Me4iy6; +wire Ue4iy6, Cf4iy6, Kf4iy6, Sf4iy6, Ag4iy6, Ig4iy6, Qg4iy6, Yg4iy6, Gh4iy6, Oh4iy6; +wire Wh4iy6, Ei4iy6, Mi4iy6, Ui4iy6, Cj4iy6, Kj4iy6, Sj4iy6, Ak4iy6, Ik4iy6, Qk4iy6; +wire Yk4iy6, Gl4iy6, Ol4iy6, Wl4iy6, Em4iy6, Mm4iy6, Um4iy6, Cn4iy6, Kn4iy6, Sn4iy6; +wire Ao4iy6, Io4iy6, Qo4iy6, Yo4iy6, Gp4iy6, Op4iy6, Wp4iy6, Eq4iy6, Mq4iy6, Uq4iy6; +wire Cr4iy6, Kr4iy6, Sr4iy6, As4iy6, Is4iy6, Qs4iy6, Ys4iy6, Gt4iy6, Ot4iy6, Wt4iy6; +wire Eu4iy6, Mu4iy6, Uu4iy6, Cv4iy6, Kv4iy6, Sv4iy6, Aw4iy6, Iw4iy6, Qw4iy6, Yw4iy6; +wire Gx4iy6, Ox4iy6, Wx4iy6, Ey4iy6, My4iy6, Uy4iy6, Cz4iy6, Kz4iy6, Sz4iy6, A05iy6; +wire I05iy6, Q05iy6, Y05iy6, G15iy6, O15iy6, W15iy6, E25iy6, M25iy6, U25iy6, C35iy6; +wire K35iy6, S35iy6, A45iy6, I45iy6, Q45iy6, Y45iy6, G55iy6, O55iy6, W55iy6, E65iy6; +wire M65iy6, U65iy6, C75iy6, K75iy6, S75iy6, A85iy6, I85iy6, Q85iy6, Y85iy6, G95iy6; +wire O95iy6, W95iy6, Ea5iy6, Ma5iy6, Ua5iy6, Cb5iy6, Kb5iy6, Sb5iy6, Ac5iy6, Ic5iy6; +wire Qc5iy6, Yc5iy6, Gd5iy6, Od5iy6, Wd5iy6, Ee5iy6, Me5iy6, Ue5iy6, Cf5iy6, Kf5iy6; +wire Sf5iy6, Ag5iy6, Ig5iy6, Qg5iy6, Yg5iy6, Gh5iy6, Oh5iy6, Wh5iy6, Ei5iy6, Mi5iy6; +wire Ui5iy6, Cj5iy6, Kj5iy6, Sj5iy6, Ak5iy6, Ik5iy6, Qk5iy6, Yk5iy6, Gl5iy6, Ol5iy6; +wire Wl5iy6, Em5iy6, Mm5iy6, Um5iy6, Cn5iy6, Kn5iy6, Sn5iy6, Ao5iy6, Io5iy6, Qo5iy6; +wire Yo5iy6, Gp5iy6, Op5iy6, Wp5iy6, Eq5iy6, Mq5iy6, Uq5iy6, Cr5iy6, Kr5iy6, Sr5iy6; +wire As5iy6, Is5iy6, Qs5iy6, Ys5iy6, Gt5iy6, Ot5iy6, Wt5iy6, Eu5iy6, Mu5iy6, Uu5iy6; +wire Cv5iy6, Kv5iy6, Sv5iy6, Aw5iy6, Iw5iy6, Qw5iy6, Yw5iy6, Gx5iy6, Ox5iy6, Wx5iy6; +wire Ey5iy6, My5iy6, Uy5iy6, Cz5iy6, Kz5iy6, Sz5iy6, A06iy6, I06iy6, Q06iy6, Y06iy6; +wire G16iy6, O16iy6, W16iy6, E26iy6, M26iy6, U26iy6, C36iy6, K36iy6, S36iy6, A46iy6; +wire I46iy6, Q46iy6, Y46iy6, G56iy6, O56iy6, W56iy6, E66iy6, M66iy6, U66iy6, C76iy6; +wire K76iy6, S76iy6, A86iy6, I86iy6, Q86iy6, Y86iy6, G96iy6, O96iy6, W96iy6, Ea6iy6; +wire Ma6iy6, Ua6iy6, Cb6iy6, Kb6iy6, Sb6iy6, Ac6iy6, Ic6iy6, Qc6iy6, Yc6iy6, Gd6iy6; +wire Od6iy6, Wd6iy6, Ee6iy6, Me6iy6, Ue6iy6, Cf6iy6, Kf6iy6, Sf6iy6, Ag6iy6, Ig6iy6; +wire Qg6iy6, Yg6iy6, Gh6iy6, Oh6iy6, Wh6iy6, Ei6iy6, Mi6iy6, Ui6iy6, Cj6iy6, Kj6iy6; +wire Sj6iy6, Ak6iy6, Ik6iy6, Qk6iy6, Yk6iy6, Gl6iy6, Ol6iy6, Wl6iy6, Em6iy6, Mm6iy6; +wire Um6iy6, Cn6iy6, Kn6iy6, Sn6iy6, Ao6iy6, Io6iy6, Qo6iy6, Yo6iy6, Gp6iy6, Op6iy6; +wire Wp6iy6, Eq6iy6, Mq6iy6, Uq6iy6, Cr6iy6, Kr6iy6, Sr6iy6, As6iy6, Is6iy6, Qs6iy6; +wire Ys6iy6, Gt6iy6, Ot6iy6, Wt6iy6, Eu6iy6, Mu6iy6, Uu6iy6, Cv6iy6, Kv6iy6, Sv6iy6; +wire Aw6iy6, Iw6iy6, Qw6iy6, Yw6iy6, Gx6iy6, Ox6iy6, Wx6iy6, Ey6iy6, My6iy6, Uy6iy6; +wire Cz6iy6, Kz6iy6, Sz6iy6, A07iy6, I07iy6, Q07iy6, Y07iy6, G17iy6, O17iy6, W17iy6; +wire E27iy6, M27iy6, U27iy6, C37iy6, K37iy6, S37iy6, A47iy6, I47iy6, Q47iy6, Y47iy6; +wire G57iy6, O57iy6, W57iy6, E67iy6, M67iy6, U67iy6, C77iy6, K77iy6, S77iy6, A87iy6; +wire I87iy6, Q87iy6, Y87iy6, G97iy6, O97iy6, W97iy6, Ea7iy6, Ma7iy6, Ua7iy6, Cb7iy6; +wire Kb7iy6, Sb7iy6, Ac7iy6, Ic7iy6, Qc7iy6, Yc7iy6, Gd7iy6, Od7iy6, Wd7iy6, Ee7iy6; +wire Me7iy6, Ue7iy6, Cf7iy6, Kf7iy6, Sf7iy6, Ag7iy6, Ig7iy6, Qg7iy6, Yg7iy6, Gh7iy6; +wire Oh7iy6, Wh7iy6, Ei7iy6, Mi7iy6, Ui7iy6, Cj7iy6, Kj7iy6, Sj7iy6, Ak7iy6, Ik7iy6; +wire Qk7iy6, Yk7iy6, Gl7iy6, Ol7iy6, Wl7iy6, Em7iy6, Mm7iy6, Um7iy6, Cn7iy6, Kn7iy6; +wire Sn7iy6, Ao7iy6, Io7iy6, Qo7iy6, Yo7iy6, Gp7iy6, Op7iy6, Wp7iy6, Eq7iy6, Mq7iy6; +wire Uq7iy6, Cr7iy6, Kr7iy6, Sr7iy6, As7iy6, Is7iy6, Qs7iy6, Ys7iy6, Gt7iy6, Ot7iy6; +wire Wt7iy6, Eu7iy6, Mu7iy6, Uu7iy6, Cv7iy6, Kv7iy6, Sv7iy6, Aw7iy6, Iw7iy6, Qw7iy6; +wire Yw7iy6, Gx7iy6, Ox7iy6, Wx7iy6, Ey7iy6, My7iy6, Uy7iy6, Cz7iy6, Kz7iy6, Sz7iy6; +wire A08iy6, I08iy6, Q08iy6, Y08iy6, G18iy6, O18iy6, W18iy6, E28iy6, M28iy6, U28iy6; +wire C38iy6, K38iy6, S38iy6, A48iy6, I48iy6, Q48iy6, Y48iy6, G58iy6, O58iy6, W58iy6; +wire E68iy6, M68iy6, U68iy6, C78iy6, K78iy6, S78iy6, A88iy6, I88iy6, Q88iy6, Y88iy6; +wire G98iy6, O98iy6, W98iy6, Ea8iy6, Ma8iy6, Ua8iy6, Cb8iy6, Kb8iy6, Sb8iy6, Ac8iy6; +wire Ic8iy6, Qc8iy6, Yc8iy6, Gd8iy6, Od8iy6, Wd8iy6, Ee8iy6, Me8iy6, Ue8iy6, Cf8iy6; +wire Kf8iy6, Sf8iy6, Ag8iy6, Ig8iy6, Qg8iy6, Yg8iy6, Gh8iy6, Oh8iy6, Wh8iy6, Ei8iy6; +wire Mi8iy6, Ui8iy6, Cj8iy6, Kj8iy6, Sj8iy6, Ak8iy6, Ik8iy6, Qk8iy6, Yk8iy6, Gl8iy6; +wire Ol8iy6, Wl8iy6, Em8iy6, Mm8iy6, Um8iy6, Cn8iy6, Kn8iy6, Sn8iy6, Ao8iy6, Io8iy6; +wire Qo8iy6, Yo8iy6, Gp8iy6, Op8iy6, Wp8iy6, Eq8iy6, Mq8iy6, Uq8iy6, Cr8iy6, Kr8iy6; +wire Sr8iy6, As8iy6, Is8iy6, Qs8iy6, Ys8iy6, Gt8iy6, Ot8iy6, Wt8iy6, Eu8iy6, Mu8iy6; +wire Uu8iy6, Cv8iy6, Kv8iy6, Sv8iy6, Aw8iy6, Iw8iy6, Qw8iy6, Yw8iy6, Gx8iy6, Ox8iy6; +wire Wx8iy6, Ey8iy6, My8iy6, Uy8iy6, Cz8iy6, Kz8iy6, Sz8iy6, A09iy6, I09iy6, Q09iy6; +wire Y09iy6, G19iy6, O19iy6, W19iy6, E29iy6, M29iy6, U29iy6, C39iy6, K39iy6, S39iy6; +wire A49iy6, I49iy6, Q49iy6, Y49iy6, G59iy6, O59iy6, W59iy6, E69iy6, M69iy6, U69iy6; +wire C79iy6, K79iy6, S79iy6, A89iy6, I89iy6, Q89iy6, Y89iy6, G99iy6, O99iy6, W99iy6; +wire Ea9iy6, Ma9iy6, Ua9iy6, Cb9iy6, Kb9iy6, Sb9iy6, Ac9iy6, Ic9iy6, Qc9iy6, Yc9iy6; +wire Gd9iy6, Od9iy6, Wd9iy6, Ee9iy6, Me9iy6, Ue9iy6, Cf9iy6, Kf9iy6, Sf9iy6, Ag9iy6; +wire Ig9iy6, Qg9iy6, Yg9iy6, Gh9iy6, Oh9iy6, Wh9iy6, Ei9iy6, Mi9iy6, Ui9iy6, Cj9iy6; +wire Kj9iy6, Sj9iy6, Ak9iy6, Ik9iy6, Qk9iy6, Yk9iy6, Gl9iy6, Ol9iy6, Wl9iy6, Em9iy6; +wire Mm9iy6, Um9iy6, Cn9iy6, Kn9iy6, Sn9iy6, Ao9iy6, Io9iy6, Qo9iy6, Yo9iy6, Gp9iy6; +wire Op9iy6, Wp9iy6, Eq9iy6, Mq9iy6, Uq9iy6, Cr9iy6, Kr9iy6, Sr9iy6, As9iy6, Is9iy6; +wire Qs9iy6, Ys9iy6, Gt9iy6, Ot9iy6, Wt9iy6, Eu9iy6, Mu9iy6, Uu9iy6, Cv9iy6, Kv9iy6; +wire Sv9iy6, Aw9iy6, Iw9iy6, Qw9iy6, Yw9iy6, Gx9iy6, Ox9iy6, Wx9iy6, Ey9iy6, My9iy6; +wire Uy9iy6, Cz9iy6, Kz9iy6, Sz9iy6, A0aiy6, I0aiy6, Q0aiy6, Y0aiy6, G1aiy6, O1aiy6; +wire W1aiy6, E2aiy6, M2aiy6, U2aiy6, C3aiy6, K3aiy6, S3aiy6, A4aiy6, I4aiy6, Q4aiy6; +wire Y4aiy6, G5aiy6, O5aiy6, W5aiy6, E6aiy6, M6aiy6, U6aiy6, C7aiy6, K7aiy6, S7aiy6; +wire A8aiy6, I8aiy6, Q8aiy6, Y8aiy6, G9aiy6, O9aiy6, W9aiy6, Eaaiy6, Maaiy6, Uaaiy6; +wire Cbaiy6, Kbaiy6, Sbaiy6, Acaiy6, Icaiy6, Qcaiy6, Ycaiy6, Gdaiy6, Odaiy6, Wdaiy6; +wire Eeaiy6, Meaiy6, Ueaiy6, Cfaiy6, Kfaiy6, Sfaiy6, Agaiy6, Igaiy6, Qgaiy6, Ygaiy6; +wire Ghaiy6, Ohaiy6, Whaiy6, Eiaiy6, Miaiy6, Uiaiy6, Cjaiy6, Kjaiy6, Sjaiy6, Akaiy6; +wire Ikaiy6, Qkaiy6, Ykaiy6, Glaiy6, Olaiy6, Wlaiy6, Emaiy6, Mmaiy6, Umaiy6, Cnaiy6; +wire Knaiy6, Snaiy6, Aoaiy6, Ioaiy6, Qoaiy6, Yoaiy6, Gpaiy6, Opaiy6, Wpaiy6, Eqaiy6; +wire Mqaiy6, Uqaiy6, Craiy6, Kraiy6, Sraiy6, Asaiy6, Isaiy6, Qsaiy6, Ysaiy6, Gtaiy6; +wire Otaiy6, Wtaiy6, Euaiy6, Muaiy6, Uuaiy6, Cvaiy6, Kvaiy6, Svaiy6, Awaiy6, Iwaiy6; +wire Qwaiy6, Ywaiy6, Gxaiy6, Oxaiy6, Wxaiy6, Eyaiy6, Myaiy6, Uyaiy6, Czaiy6, Kzaiy6; +wire Szaiy6, A0biy6, I0biy6, Q0biy6, Y0biy6, G1biy6, O1biy6, W1biy6, E2biy6, M2biy6; +wire U2biy6, C3biy6, K3biy6, S3biy6, A4biy6, I4biy6, Q4biy6, Y4biy6, G5biy6, O5biy6; +wire W5biy6, E6biy6, M6biy6, U6biy6, C7biy6, K7biy6, S7biy6, A8biy6, I8biy6, Q8biy6; +wire Y8biy6, G9biy6, O9biy6, W9biy6, Eabiy6, Mabiy6, Uabiy6, Cbbiy6, Kbbiy6, Sbbiy6; +wire Acbiy6, Icbiy6, Qcbiy6, Ycbiy6, Gdbiy6, Odbiy6, Wdbiy6, Eebiy6, Mebiy6, Uebiy6; +wire Cfbiy6, Kfbiy6, Sfbiy6, Agbiy6, Igbiy6, Qgbiy6, Ygbiy6, Ghbiy6, Ohbiy6, Whbiy6; +wire Eibiy6, Mibiy6, Uibiy6, Cjbiy6, Kjbiy6, Sjbiy6, Akbiy6, Ikbiy6, Qkbiy6, Ykbiy6; +wire Glbiy6, Olbiy6, Wlbiy6, Embiy6, Mmbiy6, Umbiy6, Cnbiy6, Knbiy6, Snbiy6, Aobiy6; +wire Iobiy6, Qobiy6, Yobiy6, Gpbiy6, Opbiy6, Wpbiy6, Eqbiy6, Mqbiy6, Uqbiy6, Crbiy6; +wire Krbiy6, Srbiy6, Asbiy6, Isbiy6, Qsbiy6, Ysbiy6, Gtbiy6, Otbiy6, Wtbiy6, Eubiy6; +wire Mubiy6, Uubiy6, Cvbiy6, Kvbiy6, Svbiy6, Awbiy6, Iwbiy6, Qwbiy6, Ywbiy6, Gxbiy6; +wire Oxbiy6, Wxbiy6, Eybiy6, Mybiy6, Uybiy6, Czbiy6, Kzbiy6, Szbiy6, A0ciy6, I0ciy6; +wire Q0ciy6, Y0ciy6, G1ciy6, O1ciy6, W1ciy6, E2ciy6, M2ciy6, U2ciy6, C3ciy6, K3ciy6; +wire S3ciy6, A4ciy6, I4ciy6, Q4ciy6, Y4ciy6, G5ciy6, O5ciy6, W5ciy6, E6ciy6, M6ciy6; +wire U6ciy6, C7ciy6, K7ciy6, S7ciy6, A8ciy6, I8ciy6, Q8ciy6, Y8ciy6, G9ciy6, O9ciy6; +wire W9ciy6, Eaciy6, Maciy6, Uaciy6, Cbciy6, Kbciy6, Sbciy6, Acciy6, Icciy6, Qcciy6; +wire Ycciy6, Gdciy6, Odciy6, Wdciy6, Eeciy6, Meciy6, Ueciy6, Cfciy6, Kfciy6, Sfciy6; +wire Agciy6, Igciy6, Qgciy6, Ygciy6, Ghciy6, Ohciy6, Whciy6, Eiciy6, Miciy6, Uiciy6; +wire Cjciy6, Kjciy6, Sjciy6, Akciy6, Ikciy6, Qkciy6, Ykciy6, Glciy6, Olciy6, Wlciy6; +wire Emciy6, Mmciy6, Umciy6, Cnciy6, Knciy6, Snciy6, Aociy6, Iociy6, Qociy6, Yociy6; +wire Gpciy6, Opciy6, Wpciy6, Eqciy6, Mqciy6, Uqciy6, Crciy6, Krciy6, Srciy6, Asciy6; +wire Isciy6, Qsciy6, Ysciy6, Gtciy6, Otciy6, Wtciy6, Euciy6, Muciy6, Uuciy6, Cvciy6; +wire Kvciy6, Svciy6, Awciy6, Iwciy6, Qwciy6, Ywciy6, Gxciy6, Oxciy6, Wxciy6, Eyciy6; +wire Myciy6, Uyciy6, Czciy6, Kzciy6, Szciy6, A0diy6, I0diy6, Q0diy6, Y0diy6, G1diy6; +wire O1diy6, W1diy6, E2diy6, M2diy6, U2diy6, C3diy6, K3diy6, S3diy6, A4diy6, I4diy6; +wire Q4diy6, Y4diy6, G5diy6, O5diy6, W5diy6, E6diy6, M6diy6, U6diy6, C7diy6, K7diy6; +wire S7diy6, A8diy6, I8diy6, Q8diy6, Y8diy6, G9diy6, O9diy6, W9diy6, Eadiy6, Madiy6; +wire Uadiy6, Cbdiy6, Kbdiy6, Sbdiy6, Acdiy6, Icdiy6, Qcdiy6, Ycdiy6, Gddiy6, Oddiy6; +wire Wddiy6, Eediy6, Mediy6, Uediy6, Cfdiy6, Kfdiy6, Sfdiy6, Agdiy6, Igdiy6, Qgdiy6; +wire Ygdiy6, Ghdiy6, Ohdiy6, Whdiy6, Eidiy6, Midiy6, Uidiy6, Cjdiy6, Kjdiy6, Sjdiy6; +wire Akdiy6, Ikdiy6, Qkdiy6, Ykdiy6, Gldiy6, Oldiy6, Wldiy6, Emdiy6, Mmdiy6, Umdiy6; +wire Cndiy6, Kndiy6, Sndiy6, Aodiy6, Iodiy6, Qodiy6, Yodiy6, Gpdiy6, Opdiy6, Wpdiy6; +wire Eqdiy6, Mqdiy6, Uqdiy6, Crdiy6, Krdiy6, Srdiy6, Asdiy6, Isdiy6, Qsdiy6, Ysdiy6; +wire Gtdiy6, Otdiy6, Wtdiy6, Eudiy6, Mudiy6, Uudiy6, Cvdiy6, Kvdiy6, Svdiy6, Awdiy6; +wire Iwdiy6, Qwdiy6, Ywdiy6, Gxdiy6, Oxdiy6, Wxdiy6, Eydiy6, Mydiy6, Uydiy6, Czdiy6; +wire Kzdiy6, Szdiy6, A0eiy6, I0eiy6, Q0eiy6, Y0eiy6, G1eiy6, O1eiy6, W1eiy6, E2eiy6; +wire M2eiy6, U2eiy6, C3eiy6, K3eiy6, S3eiy6, A4eiy6, I4eiy6, Q4eiy6, Y4eiy6, G5eiy6; +wire O5eiy6, W5eiy6, E6eiy6, M6eiy6, U6eiy6, C7eiy6, K7eiy6, S7eiy6, A8eiy6, I8eiy6; +wire Q8eiy6, Y8eiy6, G9eiy6, O9eiy6, W9eiy6, Eaeiy6, Maeiy6, Uaeiy6, Cbeiy6, Kbeiy6; +wire Sbeiy6, Aceiy6, Iceiy6, Qceiy6, Yceiy6, Gdeiy6, Odeiy6, Wdeiy6, Eeeiy6, Meeiy6; +wire Ueeiy6, Cfeiy6, Kfeiy6, Sfeiy6, Ageiy6, Igeiy6, Qgeiy6, Ygeiy6, Gheiy6, Oheiy6; +wire Wheiy6, Eieiy6, Mieiy6, Uieiy6, Cjeiy6, Kjeiy6, Sjeiy6, Akeiy6, Ikeiy6, Qkeiy6; +wire Ykeiy6, Gleiy6, Oleiy6, Wleiy6, Emeiy6, Mmeiy6, Umeiy6, Cneiy6, Kneiy6, Sneiy6; +wire Aoeiy6, Ioeiy6, Qoeiy6, Yoeiy6, Gpeiy6, Opeiy6, Wpeiy6, Eqeiy6, Mqeiy6, Uqeiy6; +wire Creiy6, Kreiy6, Sreiy6, Aseiy6, Iseiy6, Qseiy6, Yseiy6, Gteiy6, Oteiy6, Wteiy6; +wire Eueiy6, Mueiy6, Uueiy6, Cveiy6, Kveiy6, Sveiy6, Aweiy6, Iweiy6, Qweiy6, Yweiy6; +wire Gxeiy6, Oxeiy6, Wxeiy6, Eyeiy6, Myeiy6, Uyeiy6, Czeiy6, Kzeiy6, Szeiy6, A0fiy6; +wire I0fiy6, Q0fiy6, Y0fiy6, G1fiy6, O1fiy6, W1fiy6, E2fiy6, M2fiy6, U2fiy6, C3fiy6; +wire K3fiy6, S3fiy6, A4fiy6, I4fiy6, Q4fiy6, Y4fiy6, G5fiy6, O5fiy6, W5fiy6, E6fiy6; +wire M6fiy6, U6fiy6, C7fiy6, K7fiy6, S7fiy6, A8fiy6, I8fiy6, Q8fiy6, Y8fiy6, G9fiy6; +wire O9fiy6, W9fiy6, Eafiy6, Mafiy6, Uafiy6, Cbfiy6, Kbfiy6, Sbfiy6, Acfiy6, Icfiy6; +wire Qcfiy6, Ycfiy6, Gdfiy6, Odfiy6, Wdfiy6, Eefiy6, Mefiy6, Uefiy6, Cffiy6, Kffiy6; +wire Sffiy6, Agfiy6, Igfiy6, Qgfiy6, Ygfiy6, Ghfiy6, Ohfiy6, Whfiy6, Eifiy6, Mifiy6; +wire Uifiy6, Cjfiy6, Kjfiy6, Sjfiy6, Akfiy6, Ikfiy6, Qkfiy6, Ykfiy6, Glfiy6, Olfiy6; +wire Wlfiy6, Emfiy6, Mmfiy6, Umfiy6, Cnfiy6, Knfiy6, Snfiy6, Aofiy6, Iofiy6, Qofiy6; +wire Yofiy6, Gpfiy6, Opfiy6, Wpfiy6, Eqfiy6, Mqfiy6, Uqfiy6, Crfiy6, Krfiy6, Srfiy6; +wire Asfiy6, Isfiy6, Qsfiy6, Ysfiy6, Gtfiy6, Otfiy6, Wtfiy6, Eufiy6, Mufiy6, Uufiy6; +wire Cvfiy6, Kvfiy6, Svfiy6, Awfiy6, Iwfiy6, Qwfiy6, Ywfiy6, Gxfiy6, Oxfiy6, Wxfiy6; +wire Eyfiy6, Myfiy6, Uyfiy6, Czfiy6, Kzfiy6, Szfiy6, A0giy6, I0giy6, Q0giy6, Y0giy6; +wire G1giy6, O1giy6, W1giy6, E2giy6, M2giy6, U2giy6, C3giy6, K3giy6, S3giy6, A4giy6; +wire I4giy6, Q4giy6, Y4giy6, G5giy6, O5giy6, W5giy6, E6giy6, M6giy6, U6giy6, C7giy6; +wire K7giy6, S7giy6, A8giy6, I8giy6, Q8giy6, Y8giy6, G9giy6, O9giy6, W9giy6, Eagiy6; +wire Magiy6, Uagiy6, Cbgiy6, Kbgiy6, Sbgiy6, Acgiy6, Icgiy6, Qcgiy6, Ycgiy6, Gdgiy6; +wire Odgiy6, Wdgiy6, Eegiy6, Megiy6, Uegiy6, Cfgiy6, Kfgiy6, Sfgiy6, Aggiy6, Iggiy6; +wire Qggiy6, Yggiy6, Ghgiy6, Ohgiy6, Whgiy6, Eigiy6, Migiy6, Uigiy6, Cjgiy6, Kjgiy6; +wire Sjgiy6, Akgiy6, Ikgiy6, Qkgiy6, Ykgiy6, Glgiy6, Olgiy6, Wlgiy6, Emgiy6, Mmgiy6; +wire Umgiy6, Cngiy6, Kngiy6, Sngiy6, Aogiy6, Iogiy6, Qogiy6, Yogiy6, Gpgiy6, Opgiy6; +wire Wpgiy6, Eqgiy6, Mqgiy6, Uqgiy6, Crgiy6, Krgiy6, Srgiy6, Asgiy6, Isgiy6, Qsgiy6; +wire Ysgiy6, Gtgiy6, Otgiy6, Wtgiy6, Eugiy6, Mugiy6, Uugiy6, Cvgiy6, Kvgiy6, Svgiy6; +wire Awgiy6, Iwgiy6, Qwgiy6, Ywgiy6, Gxgiy6, Oxgiy6, Wxgiy6, Eygiy6, Mygiy6, Uygiy6; +wire Czgiy6, Kzgiy6, Szgiy6, A0hiy6, I0hiy6, Q0hiy6, Y0hiy6, G1hiy6, O1hiy6, W1hiy6; +wire E2hiy6, M2hiy6, U2hiy6, C3hiy6, K3hiy6, S3hiy6, A4hiy6, I4hiy6, Q4hiy6, Y4hiy6; +wire G5hiy6, O5hiy6, W5hiy6, E6hiy6, M6hiy6, U6hiy6, C7hiy6, K7hiy6, S7hiy6, A8hiy6; +wire I8hiy6, Q8hiy6, Y8hiy6, G9hiy6, O9hiy6, W9hiy6, Eahiy6, Mahiy6, Uahiy6, Cbhiy6; +wire Kbhiy6, Sbhiy6, Achiy6, Ichiy6, Qchiy6, Ychiy6, Gdhiy6, Odhiy6, Wdhiy6, Eehiy6; +wire Mehiy6, Uehiy6, Cfhiy6, Kfhiy6, Sfhiy6, Aghiy6, Ighiy6, Qghiy6, Yghiy6, Ghhiy6; +wire Ohhiy6, Whhiy6, Eihiy6, Mihiy6, Uihiy6, Cjhiy6, Kjhiy6, Sjhiy6, Akhiy6, Ikhiy6; +wire Qkhiy6, Ykhiy6, Glhiy6, Olhiy6, Wlhiy6, Emhiy6, Mmhiy6, Umhiy6, Cnhiy6, Knhiy6; +wire Snhiy6, Aohiy6, Iohiy6, Qohiy6, Yohiy6, Gphiy6, Ophiy6, Wphiy6, Eqhiy6, Mqhiy6; +wire Uqhiy6, Crhiy6, Krhiy6, Srhiy6, Ashiy6, Ishiy6, Qshiy6, Yshiy6, Gthiy6, Othiy6; +wire Wthiy6, Euhiy6, Muhiy6, Uuhiy6, Cvhiy6, Kvhiy6, Svhiy6, Awhiy6, Iwhiy6, Qwhiy6; +wire Ywhiy6, Gxhiy6, Oxhiy6, Wxhiy6, Eyhiy6, Myhiy6, Uyhiy6, Czhiy6, Kzhiy6, Szhiy6; +wire A0iiy6, I0iiy6, Q0iiy6, Y0iiy6, G1iiy6, O1iiy6, W1iiy6, E2iiy6, M2iiy6, U2iiy6; +wire C3iiy6, K3iiy6, S3iiy6, A4iiy6, I4iiy6, Q4iiy6, Y4iiy6, G5iiy6, O5iiy6, W5iiy6; +wire E6iiy6, M6iiy6, U6iiy6, C7iiy6, K7iiy6, S7iiy6, A8iiy6, I8iiy6, Q8iiy6, Y8iiy6; +wire G9iiy6, O9iiy6, W9iiy6, Eaiiy6, Maiiy6, Uaiiy6, Cbiiy6, Kbiiy6, Sbiiy6, Aciiy6; +wire Iciiy6, Qciiy6, Yciiy6, Gdiiy6, Odiiy6, Wdiiy6, Eeiiy6, Meiiy6, Ueiiy6, Cfiiy6; +wire Kfiiy6, Sfiiy6, Agiiy6, Igiiy6, Qgiiy6, Ygiiy6, Ghiiy6, Ohiiy6, Whiiy6, Eiiiy6; +wire Miiiy6, Uiiiy6, Cjiiy6, Kjiiy6, Sjiiy6, Akiiy6, Ikiiy6, Qkiiy6, Ykiiy6, Gliiy6; +wire Oliiy6, Wliiy6, Emiiy6, Mmiiy6, Umiiy6, Cniiy6, Kniiy6, Sniiy6, Aoiiy6, Ioiiy6; +wire Qoiiy6, Yoiiy6, Gpiiy6, Opiiy6, Wpiiy6, Eqiiy6, Mqiiy6, Uqiiy6, Criiy6, Kriiy6; +wire Sriiy6, Asiiy6, Isiiy6, Qsiiy6, Ysiiy6, Gtiiy6, Otiiy6, Wtiiy6, Euiiy6, Muiiy6; +wire Uuiiy6, Cviiy6, Kviiy6, Sviiy6, Awiiy6, Iwiiy6, Qwiiy6, Ywiiy6, Gxiiy6, Oxiiy6; +wire Wxiiy6, Eyiiy6, Myiiy6, Uyiiy6, Cziiy6, Kziiy6, Sziiy6, A0jiy6, I0jiy6, Q0jiy6; +wire Y0jiy6, G1jiy6, O1jiy6, W1jiy6, E2jiy6, M2jiy6, U2jiy6, C3jiy6, K3jiy6, S3jiy6; +wire A4jiy6, I4jiy6, Q4jiy6, Y4jiy6, G5jiy6, O5jiy6, W5jiy6, E6jiy6, M6jiy6, U6jiy6; +wire C7jiy6, K7jiy6, S7jiy6, A8jiy6, I8jiy6, Q8jiy6, Y8jiy6, G9jiy6, O9jiy6, W9jiy6; +wire Eajiy6, Majiy6, Uajiy6, Cbjiy6, Kbjiy6, Sbjiy6, Acjiy6, Icjiy6, Qcjiy6, Ycjiy6; +wire Gdjiy6, Odjiy6, Wdjiy6, Eejiy6, Mejiy6, Uejiy6, Cfjiy6, Kfjiy6, Sfjiy6, Agjiy6; +wire Igjiy6, Qgjiy6, Ygjiy6, Ghjiy6, Ohjiy6, Whjiy6, Eijiy6, Mijiy6, Uijiy6, Cjjiy6; +wire Kjjiy6, Sjjiy6, Akjiy6, Ikjiy6, Qkjiy6, Ykjiy6, Gljiy6, Oljiy6, Wljiy6, Emjiy6; +wire Mmjiy6, Umjiy6, Cnjiy6, Knjiy6, Snjiy6, Aojiy6, Iojiy6, Qojiy6, Yojiy6, Gpjiy6; +wire Opjiy6, Wpjiy6, Eqjiy6, Mqjiy6, Uqjiy6, Crjiy6, Krjiy6, Srjiy6, Asjiy6, Isjiy6; +wire Qsjiy6, Ysjiy6, Gtjiy6, Otjiy6, Wtjiy6, Eujiy6, Mujiy6, Uujiy6, Cvjiy6, Kvjiy6; +wire Svjiy6, Awjiy6, Iwjiy6, Qwjiy6, Ywjiy6, Gxjiy6, Oxjiy6, Wxjiy6, Eyjiy6, Myjiy6; +wire Uyjiy6, Czjiy6, Kzjiy6, Szjiy6, A0kiy6, I0kiy6, Q0kiy6, Y0kiy6, G1kiy6, O1kiy6; +wire W1kiy6, E2kiy6, M2kiy6, U2kiy6, C3kiy6, K3kiy6, S3kiy6, A4kiy6, I4kiy6, Q4kiy6; +wire Y4kiy6, G5kiy6, O5kiy6, W5kiy6, E6kiy6, M6kiy6, U6kiy6, C7kiy6, K7kiy6, S7kiy6; +wire A8kiy6, I8kiy6, Q8kiy6, Y8kiy6, G9kiy6, O9kiy6, W9kiy6, Eakiy6, Makiy6, Uakiy6; +wire Cbkiy6, Kbkiy6, Sbkiy6, Ackiy6, Ickiy6, Qckiy6, Yckiy6, Gdkiy6, Odkiy6, Wdkiy6; +wire Eekiy6, Mekiy6, Uekiy6, Cfkiy6, Kfkiy6, Sfkiy6, Agkiy6, Igkiy6, Qgkiy6, Ygkiy6; +wire Ghkiy6, Ohkiy6, Whkiy6, Eikiy6, Mikiy6, Uikiy6, Cjkiy6, Kjkiy6, Sjkiy6, Akkiy6; +wire Ikkiy6, Qkkiy6, Ykkiy6, Glkiy6, Olkiy6, Wlkiy6, Emkiy6, Mmkiy6, Umkiy6, Cnkiy6; +wire Knkiy6, Snkiy6, Aokiy6, Iokiy6, Qokiy6, Yokiy6, Gpkiy6, Opkiy6, Wpkiy6, Eqkiy6; +wire Mqkiy6, Uqkiy6, Crkiy6, Krkiy6, Srkiy6, Askiy6, Iskiy6, Qskiy6, Yskiy6, Gtkiy6; +wire Otkiy6, Wtkiy6, Eukiy6, Mukiy6, Uukiy6, Cvkiy6, Kvkiy6, Svkiy6, Awkiy6, Iwkiy6; +wire Qwkiy6, Ywkiy6, Gxkiy6, Oxkiy6, Wxkiy6, Eykiy6, Mykiy6, Uykiy6, Czkiy6, Kzkiy6; +wire Szkiy6, A0liy6, I0liy6, Q0liy6, Y0liy6, G1liy6, O1liy6, W1liy6, E2liy6, M2liy6; +wire U2liy6, C3liy6, K3liy6, S3liy6, A4liy6, I4liy6, Q4liy6, Y4liy6, G5liy6, O5liy6; +wire W5liy6, E6liy6, M6liy6, U6liy6, C7liy6, K7liy6, S7liy6, A8liy6, I8liy6, Q8liy6; +wire Y8liy6, G9liy6, O9liy6, W9liy6, Ealiy6, Maliy6, Ualiy6, Cbliy6, Kbliy6, Sbliy6; +wire Acliy6, Icliy6, Qcliy6, Ycliy6, Gdliy6, Odliy6, Wdliy6, Eeliy6, Meliy6, Ueliy6; +wire Cfliy6, Kfliy6, Sfliy6, Agliy6, Igliy6, Qgliy6, Ygliy6, Ghliy6, Ohliy6, Whliy6; +wire Eiliy6, Miliy6, Uiliy6, Cjliy6, Kjliy6, Sjliy6, Akliy6, Ikliy6, Qkliy6, Ykliy6; +wire Glliy6, Olliy6, Wlliy6, Emliy6, Mmliy6, Umliy6, Cnliy6, Knliy6, Snliy6, Aoliy6; +wire Ioliy6, Qoliy6, Yoliy6, Gpliy6, Opliy6, Wpliy6, Eqliy6, Mqliy6, Uqliy6, Crliy6; +wire Krliy6, Srliy6, Asliy6, Isliy6, Qsliy6, Ysliy6, Gtliy6, Otliy6, Wtliy6, Euliy6; +wire Muliy6, Uuliy6, Cvliy6, Kvliy6, Svliy6, Awliy6, Iwliy6, Qwliy6, Ywliy6, Gxliy6; +wire Oxliy6, Wxliy6, Eyliy6, Myliy6, Uyliy6, Czliy6, Kzliy6, Szliy6, A0miy6, I0miy6; +wire Q0miy6, Y0miy6, G1miy6, O1miy6, W1miy6, E2miy6, M2miy6, U2miy6, C3miy6, K3miy6; +wire S3miy6, A4miy6, I4miy6, Q4miy6, Y4miy6, G5miy6, O5miy6, W5miy6, E6miy6, M6miy6; +wire U6miy6, C7miy6, K7miy6, S7miy6, A8miy6, I8miy6, Q8miy6, Y8miy6, G9miy6, O9miy6; +wire W9miy6, Eamiy6, Mamiy6, Uamiy6, Cbmiy6, Kbmiy6, Sbmiy6, Acmiy6, Icmiy6, Qcmiy6; +wire Ycmiy6, Gdmiy6, Odmiy6, Wdmiy6, Eemiy6, Memiy6, Uemiy6, Cfmiy6, Kfmiy6, Sfmiy6; +wire Agmiy6, Igmiy6, Qgmiy6, Ygmiy6, Ghmiy6, Ohmiy6, Whmiy6, Eimiy6, Mimiy6, Uimiy6; +wire Cjmiy6, Kjmiy6, Sjmiy6, Akmiy6, Ikmiy6, Qkmiy6, Ykmiy6, Glmiy6, Olmiy6, Wlmiy6; +wire Emmiy6, Mmmiy6, Ummiy6, Cnmiy6, Knmiy6, Snmiy6, Aomiy6, Iomiy6, Qomiy6, Yomiy6; +wire Gpmiy6, Opmiy6, Wpmiy6, Eqmiy6, Mqmiy6, Uqmiy6, Crmiy6, Krmiy6, Srmiy6, Asmiy6; +wire Ismiy6, Qsmiy6, Ysmiy6, Gtmiy6, Otmiy6, Wtmiy6, Eumiy6, Mumiy6, Uumiy6, Cvmiy6; +wire Kvmiy6, Svmiy6, Awmiy6, Iwmiy6, Qwmiy6, Ywmiy6, Gxmiy6, Oxmiy6, Wxmiy6, Eymiy6; +wire Mymiy6, Uymiy6, Czmiy6, Kzmiy6, Szmiy6, A0niy6, I0niy6, Q0niy6, Y0niy6, G1niy6; +wire O1niy6, W1niy6, E2niy6, M2niy6, U2niy6, C3niy6, K3niy6, S3niy6, A4niy6, I4niy6; +wire Q4niy6, Y4niy6, G5niy6, O5niy6, W5niy6, E6niy6, M6niy6, U6niy6, C7niy6, K7niy6; +wire S7niy6, A8niy6, I8niy6, Q8niy6, Y8niy6, G9niy6, O9niy6, W9niy6, Eaniy6, Maniy6; +wire Uaniy6, Cbniy6, Kbniy6, Sbniy6, Acniy6, Icniy6, Qcniy6, Ycniy6, Gdniy6, Odniy6; +wire Wdniy6, Eeniy6, Meniy6, Ueniy6, Cfniy6, Kfniy6, Sfniy6, Agniy6, Igniy6, Qgniy6; +wire Ygniy6, Ghniy6, Ohniy6, Whniy6, Einiy6, Miniy6, Uiniy6, Cjniy6, Kjniy6, Sjniy6; +wire Akniy6, Ikniy6, Qkniy6, Ykniy6, Glniy6, Olniy6, Wlniy6, Emniy6, Mmniy6, Umniy6; +wire Cnniy6, Knniy6, Snniy6, Aoniy6, Ioniy6, Qoniy6, Yoniy6, Gpniy6, Opniy6, Wpniy6; +wire Eqniy6, Mqniy6, Uqniy6, Crniy6, Krniy6, Srniy6, Asniy6, Isniy6, Qsniy6, Ysniy6; +wire Gtniy6, Otniy6, Wtniy6, Euniy6, Muniy6, Uuniy6, Cvniy6, Kvniy6, Svniy6, Awniy6; +wire Iwniy6, Qwniy6, Ywniy6, Gxniy6, Oxniy6, Wxniy6, Eyniy6, Myniy6, Uyniy6, Czniy6; +wire Kzniy6, Szniy6, A0oiy6, I0oiy6, Q0oiy6, Y0oiy6, G1oiy6, O1oiy6, W1oiy6, E2oiy6; +wire M2oiy6, U2oiy6, C3oiy6, K3oiy6, S3oiy6, A4oiy6, I4oiy6, Q4oiy6, Y4oiy6, G5oiy6; +wire O5oiy6, W5oiy6, E6oiy6, M6oiy6, U6oiy6, C7oiy6, K7oiy6, S7oiy6, A8oiy6, I8oiy6; +wire Q8oiy6, Y8oiy6, G9oiy6, O9oiy6, W9oiy6, Eaoiy6, Maoiy6, Uaoiy6, Cboiy6, Kboiy6; +wire Sboiy6, Acoiy6, Icoiy6, Qcoiy6, Ycoiy6, Gdoiy6, Odoiy6, Wdoiy6, Eeoiy6, Meoiy6; +wire Ueoiy6, Cfoiy6, Kfoiy6, Sfoiy6, Agoiy6, Igoiy6, Qgoiy6, Ygoiy6, Ghoiy6, Ohoiy6; +wire Whoiy6, Eioiy6, Mioiy6, Uioiy6, Cjoiy6, Kjoiy6, Sjoiy6, Akoiy6, Ikoiy6, Qkoiy6; +wire Ykoiy6, Gloiy6, Oloiy6, Wloiy6, Emoiy6, Mmoiy6, Umoiy6, Cnoiy6, Knoiy6, Snoiy6; +wire Aooiy6, Iooiy6, Qooiy6, Yooiy6, Gpoiy6, Opoiy6, Wpoiy6, Eqoiy6, Mqoiy6, Uqoiy6; +wire Croiy6, Kroiy6, Sroiy6, Asoiy6, Isoiy6, Qsoiy6, Ysoiy6, Gtoiy6, Otoiy6, Wtoiy6; +wire Euoiy6, Muoiy6, Uuoiy6, Cvoiy6, Kvoiy6, Svoiy6, Awoiy6, Iwoiy6, Qwoiy6, Ywoiy6; +wire Gxoiy6, Oxoiy6, Wxoiy6, Eyoiy6, Myoiy6, Uyoiy6, Czoiy6, Kzoiy6, Szoiy6, A0piy6; +wire I0piy6, Q0piy6, Y0piy6, G1piy6, O1piy6, W1piy6, E2piy6, M2piy6, U2piy6, C3piy6; +wire K3piy6, S3piy6, A4piy6, I4piy6, Q4piy6, Y4piy6, G5piy6, O5piy6, W5piy6, E6piy6; +wire M6piy6, U6piy6, C7piy6, K7piy6, S7piy6, A8piy6, I8piy6, Q8piy6, Y8piy6, G9piy6; +wire O9piy6, W9piy6, Eapiy6, Mapiy6, Uapiy6, Cbpiy6, Kbpiy6, Sbpiy6, Acpiy6, Icpiy6; +wire Qcpiy6, Ycpiy6, Gdpiy6, Odpiy6, Wdpiy6, Eepiy6, Mepiy6, Uepiy6, Cfpiy6, Kfpiy6; +wire Sfpiy6, Agpiy6, Igpiy6, Qgpiy6, Ygpiy6, Ghpiy6, Ohpiy6, Whpiy6, Eipiy6, Mipiy6; +wire Uipiy6, Cjpiy6, Kjpiy6, Sjpiy6, Akpiy6, Ikpiy6, Qkpiy6, Ykpiy6, Glpiy6, Olpiy6; +wire Wlpiy6, Empiy6, Mmpiy6, Umpiy6, Cnpiy6, Knpiy6, Snpiy6, Aopiy6, Iopiy6, Qopiy6; +wire Yopiy6, Gppiy6, Oppiy6, Wppiy6, Eqpiy6, Mqpiy6, Uqpiy6, Crpiy6, Krpiy6, Srpiy6; +wire Aspiy6, Ispiy6, Qspiy6, Yspiy6, Gtpiy6, Otpiy6, Wtpiy6, Eupiy6, Mupiy6, Uupiy6; +wire Cvpiy6, Kvpiy6, Svpiy6, Awpiy6, Iwpiy6, Qwpiy6, Ywpiy6, Gxpiy6, Oxpiy6, Wxpiy6; +wire Eypiy6, Mypiy6, Uypiy6, Czpiy6, Kzpiy6, Szpiy6, A0qiy6, I0qiy6, Q0qiy6, Y0qiy6; +wire G1qiy6, O1qiy6, W1qiy6, E2qiy6, M2qiy6, U2qiy6, C3qiy6, K3qiy6, S3qiy6, A4qiy6; +wire I4qiy6, Q4qiy6, Y4qiy6, G5qiy6, O5qiy6, W5qiy6, E6qiy6, M6qiy6, U6qiy6, C7qiy6; +wire K7qiy6, S7qiy6, A8qiy6, I8qiy6, Q8qiy6, Y8qiy6, G9qiy6, O9qiy6, W9qiy6, Eaqiy6; +wire Maqiy6, Uaqiy6, Cbqiy6, Kbqiy6, Sbqiy6, Acqiy6, Icqiy6, Qcqiy6, Ycqiy6, Gdqiy6; +wire Odqiy6, Wdqiy6, Eeqiy6, Meqiy6, Ueqiy6, Cfqiy6, Kfqiy6, Sfqiy6, Agqiy6, Igqiy6; +wire Qgqiy6, Ygqiy6, Ghqiy6, Ohqiy6, Whqiy6, Eiqiy6, Miqiy6, Uiqiy6, Cjqiy6, Kjqiy6; +wire Sjqiy6, Akqiy6, Ikqiy6, Qkqiy6, Ykqiy6, Glqiy6, Olqiy6, Wlqiy6, Emqiy6, Mmqiy6; +wire Umqiy6, Cnqiy6, Knqiy6, Snqiy6, Aoqiy6, Ioqiy6, Qoqiy6, Yoqiy6, Gpqiy6, Opqiy6; +wire Wpqiy6, Eqqiy6, Mqqiy6, Uqqiy6, Crqiy6, Krqiy6, Srqiy6, Asqiy6, Isqiy6, Qsqiy6; +wire Ysqiy6, Gtqiy6, Otqiy6, Wtqiy6, Euqiy6, Muqiy6, Uuqiy6, Cvqiy6, Kvqiy6, Svqiy6; +wire Awqiy6, Iwqiy6, Qwqiy6, Ywqiy6, Gxqiy6, Oxqiy6, Wxqiy6, Eyqiy6, Myqiy6, Uyqiy6; +wire Czqiy6, Kzqiy6, Szqiy6, A0riy6, I0riy6, Q0riy6, Y0riy6, G1riy6, O1riy6, W1riy6; +wire E2riy6, M2riy6, U2riy6, C3riy6, K3riy6, S3riy6, A4riy6, I4riy6, Q4riy6, Y4riy6; +wire G5riy6, O5riy6, W5riy6, E6riy6, M6riy6, U6riy6, C7riy6, K7riy6, S7riy6, A8riy6; +wire I8riy6, Q8riy6, Y8riy6, G9riy6, O9riy6, W9riy6, Eariy6, Mariy6, Uariy6, Cbriy6; +wire Kbriy6, Sbriy6, Acriy6, Icriy6, Qcriy6, Ycriy6, Gdriy6, Odriy6, Wdriy6, Eeriy6; +wire Meriy6, Ueriy6, Cfriy6, Kfriy6, Sfriy6, Agriy6, Igriy6, Qgriy6, Ygriy6, Ghriy6; +wire Ohriy6, Whriy6, Eiriy6, Miriy6, Uiriy6, Cjriy6, Kjriy6, Sjriy6, Akriy6, Ikriy6; +wire Qkriy6, Ykriy6, Glriy6, Olriy6, Wlriy6, Emriy6, Mmriy6, Umriy6, Cnriy6, Knriy6; +wire Snriy6, Aoriy6, Ioriy6, Qoriy6, Yoriy6, Gpriy6, Opriy6, Wpriy6, Eqriy6, Mqriy6; +wire Uqriy6, Crriy6, Krriy6, Srriy6, Asriy6, Isriy6, Qsriy6, Ysriy6, Gtriy6, Otriy6; +wire Wtriy6, Euriy6, Muriy6, Uuriy6, Cvriy6, Kvriy6, Svriy6, Awriy6, Iwriy6, Qwriy6; +wire Ywriy6, Gxriy6, Oxriy6, Wxriy6, Eyriy6, Myriy6, Uyriy6, Czriy6, Kzriy6, Szriy6; +wire A0siy6, I0siy6, Q0siy6, Y0siy6, G1siy6, O1siy6, W1siy6, E2siy6, M2siy6, U2siy6; +wire C3siy6, K3siy6, S3siy6, A4siy6, I4siy6, Q4siy6, Y4siy6, G5siy6, O5siy6, W5siy6; +wire E6siy6, M6siy6, U6siy6, C7siy6, K7siy6, S7siy6, A8siy6, I8siy6, Q8siy6, Y8siy6; +wire G9siy6, O9siy6, W9siy6, Easiy6, Masiy6, Uasiy6, Cbsiy6, Kbsiy6, Sbsiy6, Acsiy6; +wire Icsiy6, Qcsiy6, Ycsiy6, Gdsiy6, Odsiy6, Wdsiy6, Eesiy6, Mesiy6, Uesiy6, Cfsiy6; +wire Kfsiy6, Sfsiy6, Agsiy6, Igsiy6, Qgsiy6, Ygsiy6, Ghsiy6, Ohsiy6, Whsiy6, Eisiy6; +wire Misiy6, Uisiy6, Cjsiy6, Kjsiy6, Sjsiy6, Aksiy6, Iksiy6, Qksiy6, Yksiy6, Glsiy6; +wire Olsiy6, Wlsiy6, Emsiy6, Mmsiy6, Umsiy6, Cnsiy6, Knsiy6, Snsiy6, Aosiy6, Iosiy6; +wire Qosiy6, Yosiy6, Gpsiy6, Opsiy6, Wpsiy6, Eqsiy6, Mqsiy6, Uqsiy6, Crsiy6, Krsiy6; +wire Srsiy6, Assiy6, Issiy6, Qssiy6, Yssiy6, Gtsiy6, Otsiy6, Wtsiy6, Eusiy6, Musiy6; +wire Uusiy6, Cvsiy6, Kvsiy6, Svsiy6, Awsiy6, Iwsiy6, Qwsiy6, Ywsiy6, Gxsiy6, Oxsiy6; +wire Wxsiy6, Eysiy6, Mysiy6, Uysiy6, Czsiy6, Kzsiy6, Szsiy6, A0tiy6, I0tiy6, Q0tiy6; +wire Y0tiy6, G1tiy6, O1tiy6, W1tiy6, E2tiy6, M2tiy6, U2tiy6, C3tiy6, K3tiy6, S3tiy6; +wire A4tiy6, I4tiy6, Q4tiy6, Y4tiy6, G5tiy6, O5tiy6, W5tiy6, E6tiy6, M6tiy6, U6tiy6; +wire C7tiy6, K7tiy6, S7tiy6, A8tiy6, I8tiy6, Q8tiy6, Y8tiy6, G9tiy6, O9tiy6, W9tiy6; +wire Eatiy6, Matiy6, Uatiy6, Cbtiy6, Kbtiy6, Sbtiy6, Actiy6, Ictiy6, Qctiy6, Yctiy6; +wire Gdtiy6, Odtiy6, Wdtiy6, Eetiy6, Metiy6, Uetiy6, Cftiy6, Kftiy6, Sftiy6, Agtiy6; +wire Igtiy6, Qgtiy6, Ygtiy6, Ghtiy6, Ohtiy6, Whtiy6, Eitiy6, Mitiy6, Uitiy6, Cjtiy6; +wire Kjtiy6, Sjtiy6, Aktiy6, Iktiy6, Qktiy6, Yktiy6, Gltiy6, Oltiy6, Wltiy6, Emtiy6; +wire Mmtiy6, Umtiy6, Cntiy6, Kntiy6, Sntiy6, Aotiy6, Iotiy6, Qotiy6, Yotiy6, Gptiy6; +wire Optiy6, Wptiy6, Eqtiy6, Mqtiy6, Uqtiy6, Crtiy6, Krtiy6, Srtiy6, Astiy6, Istiy6; +wire Qstiy6, Ystiy6, Gttiy6, Ottiy6, Wttiy6, Eutiy6, Mutiy6, Uutiy6, Cvtiy6, Kvtiy6; +wire Svtiy6, Awtiy6, Iwtiy6, Qwtiy6, Ywtiy6, Gxtiy6, Oxtiy6, Wxtiy6, Eytiy6, Mytiy6; +wire Uytiy6, Cztiy6, Kztiy6, Sztiy6, A0uiy6, I0uiy6, Q0uiy6, Y0uiy6, G1uiy6, O1uiy6; +wire W1uiy6, E2uiy6, M2uiy6, U2uiy6, C3uiy6, K3uiy6, S3uiy6, A4uiy6, I4uiy6, Q4uiy6; +wire Y4uiy6, G5uiy6, O5uiy6, W5uiy6, E6uiy6, M6uiy6, U6uiy6, C7uiy6, K7uiy6, S7uiy6; +wire A8uiy6, I8uiy6, Q8uiy6, Y8uiy6, G9uiy6, O9uiy6, W9uiy6, Eauiy6, Mauiy6, Uauiy6; +wire Cbuiy6, Kbuiy6, Sbuiy6, Acuiy6, Icuiy6, Qcuiy6, Ycuiy6, Gduiy6, Oduiy6, Wduiy6; +wire Eeuiy6, Meuiy6, Ueuiy6, Cfuiy6, Kfuiy6, Sfuiy6, Aguiy6, Iguiy6, Qguiy6, Yguiy6; +wire Ghuiy6, Ohuiy6, Whuiy6, Eiuiy6, Miuiy6, Uiuiy6, Cjuiy6, Kjuiy6, Sjuiy6, Akuiy6; +wire Ikuiy6, Qkuiy6, Ykuiy6, Gluiy6, Oluiy6, Wluiy6, Emuiy6, Mmuiy6, Umuiy6, Cnuiy6; +wire Knuiy6, Snuiy6, Aouiy6, Iouiy6, Qouiy6, Youiy6, Gpuiy6, Opuiy6, Wpuiy6, Equiy6; +wire Mquiy6, Uquiy6, Cruiy6, Kruiy6, Sruiy6, Asuiy6, Isuiy6, Qsuiy6, Ysuiy6, Gtuiy6; +wire Otuiy6, Wtuiy6, Euuiy6, Muuiy6, Uuuiy6, Cvuiy6, Kvuiy6, Svuiy6, Awuiy6, Iwuiy6; +wire Qwuiy6, Ywuiy6, Gxuiy6, Oxuiy6, Wxuiy6, Eyuiy6, Myuiy6, Uyuiy6, Czuiy6, Kzuiy6; +wire Szuiy6, A0viy6, I0viy6, Q0viy6, Y0viy6, G1viy6, O1viy6, W1viy6, E2viy6, M2viy6; +wire U2viy6, C3viy6, K3viy6, S3viy6, A4viy6, I4viy6, Q4viy6, Y4viy6, G5viy6, O5viy6; +wire W5viy6, E6viy6, M6viy6, U6viy6, C7viy6, K7viy6, S7viy6, A8viy6, I8viy6, Q8viy6; +wire Y8viy6, G9viy6, O9viy6, W9viy6, Eaviy6, Maviy6, Uaviy6, Cbviy6, Kbviy6, Sbviy6; +wire Acviy6, Icviy6, Qcviy6, Ycviy6, Gdviy6, Odviy6, Wdviy6, Eeviy6, Meviy6, Ueviy6; +wire Cfviy6, Kfviy6, Sfviy6, Agviy6, Igviy6, Qgviy6, Ygviy6, Ghviy6, Ohviy6, Whviy6; +wire Eiviy6, Miviy6, Uiviy6, Cjviy6, Kjviy6, Sjviy6, Akviy6, Ikviy6, Qkviy6, Ykviy6; +wire Glviy6, Olviy6, Wlviy6, Emviy6, Mmviy6, Umviy6, Cnviy6, Knviy6, Snviy6, Aoviy6; +wire Ioviy6, Qoviy6, Yoviy6, Gpviy6, Opviy6, Wpviy6, Eqviy6, Mqviy6, Uqviy6, Crviy6; +wire Krviy6, Srviy6, Asviy6, Isviy6, Qsviy6, Ysviy6, Gtviy6, Otviy6, Wtviy6, Euviy6; +wire Muviy6, Uuviy6, Cvviy6, Kvviy6, Svviy6, Awviy6, Iwviy6, Qwviy6, Ywviy6, Gxviy6; +wire Oxviy6, Wxviy6, Eyviy6, Myviy6, Uyviy6, Czviy6, Kzviy6, Szviy6, A0wiy6, I0wiy6; +wire Q0wiy6, Y0wiy6, G1wiy6, O1wiy6, W1wiy6, E2wiy6, M2wiy6, U2wiy6, C3wiy6, K3wiy6; +wire S3wiy6, A4wiy6, I4wiy6, Q4wiy6, Y4wiy6, G5wiy6, O5wiy6, W5wiy6, E6wiy6, M6wiy6; +wire U6wiy6, C7wiy6, K7wiy6, S7wiy6, A8wiy6, I8wiy6, Q8wiy6, Y8wiy6, G9wiy6, O9wiy6; +wire W9wiy6, Eawiy6, Mawiy6, Uawiy6, Cbwiy6, Kbwiy6, Sbwiy6, Acwiy6, Icwiy6, Qcwiy6; +wire Ycwiy6, Gdwiy6, Odwiy6, Wdwiy6, Eewiy6, Mewiy6, Uewiy6, Cfwiy6, Kfwiy6, Sfwiy6; +wire Agwiy6, Igwiy6, Qgwiy6, Ygwiy6, Ghwiy6, Ohwiy6, Whwiy6, Eiwiy6, Miwiy6, Uiwiy6; +wire Cjwiy6, Kjwiy6, Sjwiy6, Akwiy6, Ikwiy6, Qkwiy6, Ykwiy6, Glwiy6, Olwiy6, Wlwiy6; +wire Emwiy6, Mmwiy6, Umwiy6, Cnwiy6, Knwiy6, Snwiy6, Aowiy6, Iowiy6, Qowiy6, Yowiy6; +wire Gpwiy6, Opwiy6, Wpwiy6, Eqwiy6, Mqwiy6, Uqwiy6, Crwiy6, Krwiy6, Srwiy6, Aswiy6; +wire Iswiy6, Qswiy6, Yswiy6, Gtwiy6, Otwiy6, Wtwiy6, Euwiy6, Muwiy6, Uuwiy6, Cvwiy6; +wire Kvwiy6, Svwiy6, Awwiy6, Iwwiy6, Qwwiy6, Ywwiy6, Gxwiy6, Oxwiy6, Wxwiy6, Eywiy6; +wire Mywiy6, Uywiy6, Czwiy6, Kzwiy6, Szwiy6, A0xiy6, I0xiy6, Q0xiy6, Y0xiy6, G1xiy6; +wire O1xiy6, W1xiy6, E2xiy6, M2xiy6, U2xiy6, C3xiy6, K3xiy6, S3xiy6, A4xiy6, I4xiy6; +wire Q4xiy6, Y4xiy6, G5xiy6, O5xiy6, W5xiy6, E6xiy6, M6xiy6, U6xiy6, C7xiy6, K7xiy6; +wire S7xiy6, A8xiy6, I8xiy6, Q8xiy6, Y8xiy6, G9xiy6, O9xiy6, W9xiy6, Eaxiy6, Maxiy6; +wire Uaxiy6, Cbxiy6, Kbxiy6, Sbxiy6, Acxiy6, Icxiy6, Qcxiy6, Ycxiy6, Gdxiy6, Odxiy6; +wire Wdxiy6, Eexiy6, Mexiy6, Uexiy6, Cfxiy6, Kfxiy6, Sfxiy6, Agxiy6, Igxiy6, Qgxiy6; +wire Ygxiy6, Ghxiy6, Ohxiy6, Whxiy6, Eixiy6, Mixiy6, Uixiy6, Cjxiy6, Kjxiy6, Sjxiy6; +wire Akxiy6, Ikxiy6, Qkxiy6, Ykxiy6, Glxiy6, Olxiy6, Wlxiy6, Emxiy6, Mmxiy6, Umxiy6; +wire Cnxiy6, Knxiy6, Snxiy6, Aoxiy6, Ioxiy6, Qoxiy6, Yoxiy6, Gpxiy6, Opxiy6, Wpxiy6; +wire Eqxiy6, Mqxiy6, Uqxiy6, Crxiy6, Krxiy6, Srxiy6, Asxiy6, Isxiy6, Qsxiy6, Ysxiy6; +wire Gtxiy6, Otxiy6, Wtxiy6, Euxiy6, Muxiy6, Uuxiy6, Cvxiy6, Kvxiy6, Svxiy6, Awxiy6; +wire Iwxiy6, Qwxiy6, Ywxiy6, Gxxiy6, Oxxiy6, Wxxiy6, Eyxiy6, Myxiy6, Uyxiy6, Czxiy6; +wire Kzxiy6, Szxiy6, A0yiy6, I0yiy6, Q0yiy6, Y0yiy6, G1yiy6, O1yiy6, W1yiy6, E2yiy6; +wire M2yiy6, U2yiy6, C3yiy6, K3yiy6, S3yiy6, A4yiy6, I4yiy6, Q4yiy6, Y4yiy6, G5yiy6; +wire O5yiy6, W5yiy6, E6yiy6, M6yiy6, U6yiy6, C7yiy6, K7yiy6, S7yiy6, A8yiy6, I8yiy6; +wire Q8yiy6, Y8yiy6, G9yiy6, O9yiy6, W9yiy6, Eayiy6, Mayiy6, Uayiy6, Cbyiy6, Kbyiy6; +wire Sbyiy6, Acyiy6, Icyiy6, Qcyiy6, Ycyiy6, Gdyiy6, Odyiy6, Wdyiy6, Eeyiy6, Meyiy6; +wire Ueyiy6, Cfyiy6, Kfyiy6, Sfyiy6, Agyiy6, Igyiy6, Qgyiy6, Ygyiy6, Ghyiy6, Ohyiy6; +wire Whyiy6, Eiyiy6, Miyiy6, Uiyiy6, Cjyiy6, Kjyiy6, Sjyiy6, Akyiy6, Ikyiy6, Qkyiy6; +wire Ykyiy6, Glyiy6, Olyiy6, Wlyiy6, Emyiy6, Mmyiy6, Umyiy6, Cnyiy6, Knyiy6, Snyiy6; +wire Aoyiy6, Ioyiy6, Qoyiy6, Yoyiy6, Gpyiy6, Opyiy6, Wpyiy6, Eqyiy6, Mqyiy6, Uqyiy6; +wire Cryiy6, Kryiy6, Sryiy6, Asyiy6, Isyiy6, Qsyiy6, Ysyiy6, Gtyiy6, Otyiy6, Wtyiy6; +wire Euyiy6, Muyiy6, Uuyiy6, Cvyiy6, Kvyiy6, Svyiy6, Awyiy6, Iwyiy6, Qwyiy6, Ywyiy6; +wire Gxyiy6, Oxyiy6, Wxyiy6, Eyyiy6, Myyiy6, Uyyiy6, Czyiy6, Kzyiy6, Szyiy6, A0ziy6; +wire I0ziy6, Q0ziy6, Y0ziy6, G1ziy6, O1ziy6, W1ziy6, E2ziy6, M2ziy6, U2ziy6, C3ziy6; +wire K3ziy6, S3ziy6, A4ziy6, I4ziy6, Q4ziy6, Y4ziy6, G5ziy6, O5ziy6, W5ziy6, E6ziy6; +wire M6ziy6, U6ziy6, C7ziy6, K7ziy6, S7ziy6, A8ziy6, I8ziy6, Q8ziy6, Y8ziy6, G9ziy6; +wire O9ziy6, W9ziy6, Eaziy6, Maziy6, Uaziy6, Cbziy6, Kbziy6, Sbziy6, Acziy6, Icziy6; +wire Qcziy6, Ycziy6, Gdziy6, Odziy6, Wdziy6, Eeziy6, Meziy6, Ueziy6, Cfziy6, Kfziy6; +wire Sfziy6, Agziy6, Igziy6, Qgziy6, Ygziy6, Ghziy6, Ohziy6, Whziy6, Eiziy6, Miziy6; +wire Uiziy6, Cjziy6, Kjziy6, Sjziy6, Akziy6, Ikziy6, Qkziy6, Ykziy6, Glziy6, Olziy6; +wire Wlziy6, Emziy6, Mmziy6, Umziy6, Cnziy6, Knziy6, Snziy6, Aoziy6, Ioziy6, Qoziy6; +wire Yoziy6, Gpziy6, Opziy6, Wpziy6, Eqziy6, Mqziy6, Uqziy6, Crziy6, Krziy6, Srziy6; +wire Asziy6, Isziy6, Qsziy6, Ysziy6, Gtziy6, Otziy6, Wtziy6, Euziy6, Muziy6, Uuziy6; +wire Cvziy6, Kvziy6, Svziy6, Awziy6, Iwziy6, Qwziy6, Ywziy6, Gxziy6, Oxziy6, Wxziy6; +wire Eyziy6, Myziy6, Uyziy6, Czziy6, Kzziy6, Szziy6, A00jy6, I00jy6, Q00jy6, Y00jy6; +wire G10jy6, O10jy6, W10jy6, E20jy6, M20jy6, U20jy6, C30jy6, K30jy6, S30jy6, A40jy6; +wire I40jy6, Q40jy6, Y40jy6, G50jy6, O50jy6, W50jy6, E60jy6, M60jy6, U60jy6, C70jy6; +wire K70jy6, S70jy6, A80jy6, I80jy6, Q80jy6, Y80jy6, G90jy6, O90jy6, W90jy6, Ea0jy6; +wire Ma0jy6, Ua0jy6, Cb0jy6, Kb0jy6, Sb0jy6, Ac0jy6, Ic0jy6, Qc0jy6, Yc0jy6, Gd0jy6; +wire Od0jy6, Wd0jy6, Ee0jy6, Me0jy6, Ue0jy6, Cf0jy6, Kf0jy6, Sf0jy6, Ag0jy6, Ig0jy6; +wire Qg0jy6, Yg0jy6, Gh0jy6, Oh0jy6, Wh0jy6, Ei0jy6, Mi0jy6, Ui0jy6, Cj0jy6, Kj0jy6; +wire Sj0jy6, Ak0jy6, Ik0jy6, Qk0jy6, Yk0jy6, Gl0jy6, Ol0jy6, Wl0jy6, Em0jy6, Mm0jy6; +wire Um0jy6, Cn0jy6, Kn0jy6, Sn0jy6, Ao0jy6, Io0jy6, Qo0jy6, Yo0jy6, Gp0jy6, Op0jy6; +wire Wp0jy6, Eq0jy6, Mq0jy6, Uq0jy6, Cr0jy6, Kr0jy6, Sr0jy6, As0jy6, Is0jy6, Qs0jy6; +wire Ys0jy6, Gt0jy6, Ot0jy6, Wt0jy6, Eu0jy6, Mu0jy6, Uu0jy6, Cv0jy6, Kv0jy6, Sv0jy6; +wire Aw0jy6, Iw0jy6, Qw0jy6, Yw0jy6, Gx0jy6, Ox0jy6, Wx0jy6, Ey0jy6, My0jy6, Uy0jy6; +wire Cz0jy6, Kz0jy6, Sz0jy6, A01jy6, I01jy6, Q01jy6, Y01jy6, G11jy6, O11jy6, W11jy6; +wire E21jy6, M21jy6, U21jy6, C31jy6, K31jy6, S31jy6, A41jy6, I41jy6, Q41jy6, Y41jy6; +wire G51jy6, O51jy6, W51jy6, E61jy6, M61jy6, U61jy6, C71jy6, K71jy6, S71jy6, A81jy6; +wire I81jy6, Q81jy6, Y81jy6, G91jy6, O91jy6, W91jy6, Ea1jy6, Ma1jy6, Ua1jy6, Cb1jy6; +wire Kb1jy6, Sb1jy6, Ac1jy6, Ic1jy6, Qc1jy6, Yc1jy6, Gd1jy6, Od1jy6, Wd1jy6, Ee1jy6; +wire Me1jy6, Ue1jy6, Cf1jy6, Kf1jy6, Sf1jy6, Ag1jy6, Ig1jy6, Qg1jy6, Yg1jy6, Gh1jy6; +wire Oh1jy6, Wh1jy6, Ei1jy6, Mi1jy6, Ui1jy6, Cj1jy6, Kj1jy6, Sj1jy6, Ak1jy6, Ik1jy6; +wire Qk1jy6, Yk1jy6, Gl1jy6, Ol1jy6, Wl1jy6, Em1jy6, Mm1jy6, Um1jy6, Cn1jy6, Kn1jy6; +wire Sn1jy6, Ao1jy6, Io1jy6, Qo1jy6, Yo1jy6, Gp1jy6, Op1jy6, Wp1jy6, Eq1jy6, Mq1jy6; +wire Uq1jy6, Cr1jy6, Kr1jy6, Sr1jy6, As1jy6, Is1jy6, Qs1jy6, Ys1jy6, Gt1jy6, Ot1jy6; +wire Wt1jy6, Eu1jy6, Mu1jy6, Uu1jy6, Cv1jy6, Kv1jy6, Sv1jy6, Aw1jy6, Iw1jy6, Qw1jy6; +wire Yw1jy6, Gx1jy6, Ox1jy6, Wx1jy6, Ey1jy6, My1jy6, Uy1jy6, Cz1jy6, Kz1jy6, Sz1jy6; +wire A02jy6, I02jy6, Q02jy6, Y02jy6, G12jy6, O12jy6, W12jy6, E22jy6, M22jy6, U22jy6; +wire C32jy6, K32jy6, S32jy6, A42jy6, I42jy6, Q42jy6, Y42jy6, G52jy6, O52jy6, W52jy6; +wire E62jy6, M62jy6, U62jy6, C72jy6, K72jy6, S72jy6, A82jy6, I82jy6, Q82jy6, Y82jy6; +wire G92jy6, O92jy6, W92jy6, Ea2jy6, Ma2jy6, Ua2jy6, Cb2jy6, Kb2jy6, Sb2jy6, Ac2jy6; +wire Ic2jy6, Qc2jy6, Yc2jy6, Gd2jy6, Od2jy6, Wd2jy6, Ee2jy6, Me2jy6, Ue2jy6, Cf2jy6; +wire Kf2jy6, Sf2jy6, Ag2jy6, Ig2jy6, Qg2jy6, Yg2jy6, Gh2jy6, Oh2jy6, Wh2jy6, Ei2jy6; +wire Mi2jy6, Ui2jy6, Cj2jy6, Kj2jy6, Sj2jy6, Ak2jy6, Ik2jy6, Qk2jy6, Yk2jy6, Gl2jy6; +wire Ol2jy6, Wl2jy6, Em2jy6, Mm2jy6, Um2jy6, Cn2jy6, Kn2jy6, Sn2jy6, Ao2jy6, Io2jy6; +wire Qo2jy6, Yo2jy6, Gp2jy6, Op2jy6, Wp2jy6, Eq2jy6, Mq2jy6, Uq2jy6, Cr2jy6, Kr2jy6; +wire Sr2jy6, As2jy6, Is2jy6, Qs2jy6, Ys2jy6, Gt2jy6, Ot2jy6, Wt2jy6, Eu2jy6, Mu2jy6; +wire Uu2jy6, Cv2jy6, Kv2jy6, Sv2jy6, Aw2jy6, Iw2jy6, Qw2jy6, Yw2jy6, Gx2jy6, Ox2jy6; +wire Wx2jy6, Ey2jy6, My2jy6, Uy2jy6, Cz2jy6, Kz2jy6, Sz2jy6, A03jy6, I03jy6, Q03jy6; +wire Y03jy6, G13jy6, O13jy6, W13jy6, E23jy6, M23jy6, U23jy6, C33jy6, K33jy6, S33jy6; +wire A43jy6, I43jy6, Q43jy6, Y43jy6, G53jy6, O53jy6, W53jy6, E63jy6, M63jy6, U63jy6; +wire C73jy6, K73jy6, S73jy6, A83jy6, I83jy6, Q83jy6, Y83jy6, G93jy6, O93jy6, W93jy6; +wire Ea3jy6, Ma3jy6, Ua3jy6, Cb3jy6, Kb3jy6, Sb3jy6, Ac3jy6, Ic3jy6, Qc3jy6, Yc3jy6; +wire Gd3jy6, Od3jy6, Wd3jy6, Ee3jy6, Me3jy6, Ue3jy6, Cf3jy6, Kf3jy6, Sf3jy6, Ag3jy6; +wire Ig3jy6, Qg3jy6, Yg3jy6, Gh3jy6, Oh3jy6, Wh3jy6, Ei3jy6, Mi3jy6, Ui3jy6, Cj3jy6; +wire Kj3jy6, Sj3jy6, Ak3jy6, Ik3jy6, Qk3jy6, Yk3jy6, Gl3jy6, Ol3jy6, Wl3jy6, Em3jy6; +wire Mm3jy6, Um3jy6, Cn3jy6, Kn3jy6, Sn3jy6, Ao3jy6, Io3jy6, Qo3jy6, Yo3jy6, Gp3jy6; +wire Op3jy6, Wp3jy6, Eq3jy6, Mq3jy6, Uq3jy6, Cr3jy6, Kr3jy6, Sr3jy6, As3jy6, Is3jy6; +wire Qs3jy6, Ys3jy6, Gt3jy6, Ot3jy6, Wt3jy6, Eu3jy6, Mu3jy6, Uu3jy6, Cv3jy6, Kv3jy6; +wire Sv3jy6, Aw3jy6, Iw3jy6, Qw3jy6, Yw3jy6, Gx3jy6, Ox3jy6, Wx3jy6, Ey3jy6, My3jy6; +wire Uy3jy6, Cz3jy6, Kz3jy6, Sz3jy6, A04jy6, I04jy6, Q04jy6, Y04jy6, G14jy6, O14jy6; +wire W14jy6, E24jy6, M24jy6, U24jy6, C34jy6, K34jy6, S34jy6, A44jy6, I44jy6, Q44jy6; +wire Y44jy6, G54jy6, O54jy6, W54jy6, E64jy6, M64jy6, U64jy6, C74jy6, K74jy6, S74jy6; +wire A84jy6, I84jy6, Q84jy6, Y84jy6, G94jy6, O94jy6, W94jy6, Ea4jy6, Ma4jy6, Ua4jy6; +wire Cb4jy6, Kb4jy6, Sb4jy6, Ac4jy6, Ic4jy6, Qc4jy6, Yc4jy6, Gd4jy6, Od4jy6, Wd4jy6; +wire Ee4jy6, Me4jy6, Ue4jy6, Cf4jy6, Kf4jy6, Sf4jy6, Ag4jy6, Ig4jy6, Qg4jy6, Yg4jy6; +wire Gh4jy6, Oh4jy6, Wh4jy6, Ei4jy6, Mi4jy6, Ui4jy6, Cj4jy6, Kj4jy6, Sj4jy6, Ak4jy6; +wire Ik4jy6, Qk4jy6, Yk4jy6, Gl4jy6, Ol4jy6, Wl4jy6, Em4jy6, Mm4jy6, Um4jy6, Cn4jy6; +wire Kn4jy6, Sn4jy6, Ao4jy6, Io4jy6, Qo4jy6, Yo4jy6, Gp4jy6, Op4jy6, Wp4jy6, Eq4jy6; +wire Mq4jy6, Uq4jy6, Cr4jy6, Kr4jy6, Sr4jy6, As4jy6, Is4jy6, Qs4jy6, Ys4jy6, Gt4jy6; +wire Ot4jy6, Wt4jy6, Eu4jy6, Mu4jy6, Uu4jy6, Cv4jy6, Kv4jy6, Sv4jy6, Aw4jy6, Iw4jy6; +wire Qw4jy6, Yw4jy6, Gx4jy6, Ox4jy6, Wx4jy6, Ey4jy6, My4jy6, Uy4jy6, Cz4jy6, Kz4jy6; +wire Sz4jy6, A05jy6, I05jy6, Q05jy6, Y05jy6, G15jy6, O15jy6, W15jy6, E25jy6, M25jy6; +wire U25jy6, C35jy6, K35jy6, S35jy6, A45jy6, I45jy6, Q45jy6, Y45jy6, G55jy6, O55jy6; +wire W55jy6, E65jy6, M65jy6, U65jy6, C75jy6, K75jy6, S75jy6, A85jy6, I85jy6, Q85jy6; +wire Y85jy6, G95jy6, O95jy6, W95jy6, Ea5jy6, Ma5jy6, Ua5jy6, Cb5jy6, Kb5jy6, Sb5jy6; +wire Ac5jy6, Ic5jy6, Qc5jy6, Yc5jy6, Gd5jy6, Od5jy6, Wd5jy6, Ee5jy6, Me5jy6, Ue5jy6; +wire Cf5jy6, Kf5jy6, Sf5jy6, Ag5jy6, Ig5jy6, Qg5jy6, Yg5jy6, Gh5jy6, Oh5jy6, Wh5jy6; +wire Ei5jy6, Mi5jy6, Ui5jy6, Cj5jy6, Kj5jy6, Sj5jy6, Ak5jy6, Ik5jy6, Qk5jy6, Yk5jy6; +wire Gl5jy6, Ol5jy6, Wl5jy6, Em5jy6, Mm5jy6, Um5jy6, Cn5jy6, Kn5jy6, Sn5jy6, Ao5jy6; +wire Io5jy6, Qo5jy6, Yo5jy6, Gp5jy6, Op5jy6, Wp5jy6, Eq5jy6, Mq5jy6, Uq5jy6, Cr5jy6; +wire Kr5jy6, Sr5jy6, As5jy6, Is5jy6, Qs5jy6, Ys5jy6, Gt5jy6, Ot5jy6, Wt5jy6, Eu5jy6; +wire Mu5jy6, Uu5jy6, Cv5jy6, Kv5jy6, Sv5jy6, Aw5jy6, Iw5jy6, Qw5jy6, Yw5jy6, Gx5jy6; +wire Ox5jy6, Wx5jy6, Ey5jy6, My5jy6, Uy5jy6, Cz5jy6, Kz5jy6, Sz5jy6, A06jy6, I06jy6; +wire Q06jy6, Y06jy6, G16jy6, O16jy6, W16jy6, E26jy6, M26jy6, U26jy6, C36jy6, K36jy6; +wire S36jy6, A46jy6, I46jy6, Q46jy6, Y46jy6, G56jy6, O56jy6, W56jy6, E66jy6, M66jy6; +wire U66jy6, C76jy6, K76jy6, S76jy6, A86jy6, I86jy6, Q86jy6, Y86jy6, G96jy6, O96jy6; +wire W96jy6, Ea6jy6, Ma6jy6, Ua6jy6, Cb6jy6, Kb6jy6, Sb6jy6, Ac6jy6, Ic6jy6, Qc6jy6; +wire Yc6jy6, Gd6jy6, Od6jy6, Wd6jy6, Ee6jy6, Me6jy6, Ue6jy6, Cf6jy6, Kf6jy6, Sf6jy6; +wire Ag6jy6, Ig6jy6, Qg6jy6, Yg6jy6, Gh6jy6, Oh6jy6, Wh6jy6, Ei6jy6, Mi6jy6, Ui6jy6; +wire Cj6jy6, Kj6jy6, Sj6jy6, Ak6jy6, Ik6jy6, Qk6jy6, Yk6jy6, Gl6jy6, Ol6jy6, Wl6jy6; +wire Em6jy6, Mm6jy6, Um6jy6, Cn6jy6, Kn6jy6, Sn6jy6, Ao6jy6, Io6jy6, Qo6jy6, Yo6jy6; +wire Gp6jy6, Op6jy6, Wp6jy6, Eq6jy6, Mq6jy6, Uq6jy6, Cr6jy6, Kr6jy6, Sr6jy6, As6jy6; +wire Is6jy6, Qs6jy6, Ys6jy6, Gt6jy6, Ot6jy6, Wt6jy6, Eu6jy6, Mu6jy6, Uu6jy6, Cv6jy6; +wire Kv6jy6, Sv6jy6, Aw6jy6, Iw6jy6, Qw6jy6, Yw6jy6, Gx6jy6, Ox6jy6, Wx6jy6, Ey6jy6; +wire My6jy6, Uy6jy6, Cz6jy6, Kz6jy6, Sz6jy6, A07jy6, I07jy6, Q07jy6, Y07jy6, G17jy6; +wire O17jy6, W17jy6, E27jy6, M27jy6, U27jy6, C37jy6, K37jy6, S37jy6, A47jy6, I47jy6; +wire Q47jy6, Y47jy6, G57jy6, O57jy6, W57jy6, E67jy6, M67jy6, U67jy6, C77jy6, K77jy6; +wire S77jy6, A87jy6, I87jy6, Q87jy6, Y87jy6, G97jy6, O97jy6, W97jy6, Ea7jy6, Ma7jy6; +wire Ua7jy6, Cb7jy6, Kb7jy6, Sb7jy6, Ac7jy6, Ic7jy6, Qc7jy6, Yc7jy6, Gd7jy6, Od7jy6; +wire Wd7jy6, Ee7jy6, Me7jy6, Ue7jy6, Cf7jy6, Kf7jy6, Sf7jy6, Ag7jy6, Ig7jy6, Qg7jy6; +wire Yg7jy6, Gh7jy6, Oh7jy6, Wh7jy6, Ei7jy6, Mi7jy6, Ui7jy6, Cj7jy6, Kj7jy6, Sj7jy6; +wire Ak7jy6, Ik7jy6, Qk7jy6, Yk7jy6, Gl7jy6, Ol7jy6, Wl7jy6, Em7jy6, Mm7jy6, Um7jy6; +wire Cn7jy6, Kn7jy6, Sn7jy6, Ao7jy6, Io7jy6, Qo7jy6, Yo7jy6, Gp7jy6, Op7jy6, Wp7jy6; +wire Eq7jy6, Mq7jy6, Uq7jy6, Cr7jy6, Kr7jy6, Sr7jy6, As7jy6, Is7jy6, Qs7jy6, Ys7jy6; +wire Gt7jy6, Ot7jy6, Wt7jy6, Eu7jy6, Mu7jy6, Uu7jy6, Cv7jy6, Kv7jy6, Sv7jy6, Aw7jy6; +wire Iw7jy6, Qw7jy6, Yw7jy6, Gx7jy6, Ox7jy6, Wx7jy6, Ey7jy6, My7jy6, Uy7jy6, Cz7jy6; +wire Kz7jy6, Sz7jy6, A08jy6, I08jy6, Q08jy6, Y08jy6, G18jy6, O18jy6, W18jy6, E28jy6; +wire M28jy6, U28jy6, C38jy6, K38jy6, S38jy6, A48jy6, I48jy6, Q48jy6, Y48jy6, G58jy6; +wire O58jy6, W58jy6, E68jy6, M68jy6, U68jy6, C78jy6, K78jy6, S78jy6, A88jy6, I88jy6; +wire Q88jy6, Y88jy6, G98jy6, O98jy6, W98jy6, Ea8jy6, Ma8jy6, Ua8jy6, Cb8jy6, Kb8jy6; +wire Sb8jy6, Ac8jy6, Ic8jy6, Qc8jy6, Yc8jy6, Gd8jy6, Od8jy6, Wd8jy6, Ee8jy6, Me8jy6; +wire Ue8jy6, Cf8jy6, Kf8jy6, Sf8jy6, Ag8jy6, Ig8jy6, Qg8jy6, Yg8jy6, Gh8jy6, Oh8jy6; +wire Wh8jy6, Ei8jy6, Mi8jy6, Ui8jy6, Cj8jy6, Kj8jy6, Sj8jy6, Ak8jy6, Ik8jy6, Qk8jy6; +wire Yk8jy6, Gl8jy6, Ol8jy6, Wl8jy6, Em8jy6, Mm8jy6, Um8jy6, Cn8jy6, Kn8jy6, Sn8jy6; +wire Ao8jy6, Io8jy6, Qo8jy6, Yo8jy6, Gp8jy6, Op8jy6, Wp8jy6, Eq8jy6, Mq8jy6, Uq8jy6; +wire Cr8jy6, Kr8jy6, Sr8jy6, As8jy6, Is8jy6, Qs8jy6, Ys8jy6, Gt8jy6, Ot8jy6, Wt8jy6; +wire Eu8jy6, Mu8jy6, Uu8jy6, Cv8jy6, Kv8jy6, Sv8jy6, Aw8jy6, Iw8jy6, Qw8jy6, Yw8jy6; +wire Gx8jy6, Ox8jy6, Wx8jy6, Ey8jy6, My8jy6, Uy8jy6, Cz8jy6, Kz8jy6, Sz8jy6, A09jy6; +wire I09jy6, Q09jy6, Y09jy6, G19jy6, O19jy6, W19jy6, E29jy6, M29jy6, U29jy6, C39jy6; +wire K39jy6, S39jy6, A49jy6, I49jy6, Q49jy6, Y49jy6, G59jy6, O59jy6, W59jy6, E69jy6; +wire M69jy6, U69jy6, C79jy6, K79jy6, S79jy6, A89jy6, I89jy6, Q89jy6, Y89jy6, G99jy6; +wire O99jy6, W99jy6, Ea9jy6, Ma9jy6, Ua9jy6, Cb9jy6, Kb9jy6, Sb9jy6, Ac9jy6, Ic9jy6; +wire Qc9jy6, Yc9jy6, Gd9jy6, Od9jy6, Wd9jy6, Ee9jy6, Me9jy6, Ue9jy6, Cf9jy6, Kf9jy6; +wire Sf9jy6, Ag9jy6, Ig9jy6, Qg9jy6, Yg9jy6, Gh9jy6, Oh9jy6, Wh9jy6, Ei9jy6, Mi9jy6; +wire Ui9jy6, Cj9jy6, Kj9jy6, Sj9jy6, Ak9jy6, Ik9jy6, Qk9jy6, Yk9jy6, Gl9jy6, Ol9jy6; +wire Wl9jy6, Em9jy6, Mm9jy6, Um9jy6, Cn9jy6, Kn9jy6, Sn9jy6, Ao9jy6, Io9jy6, Qo9jy6; +wire Yo9jy6, Gp9jy6, Op9jy6, Wp9jy6, Eq9jy6, Mq9jy6, Uq9jy6, Cr9jy6, Kr9jy6, Sr9jy6; +wire As9jy6, Is9jy6, Qs9jy6, Ys9jy6, Gt9jy6, Ot9jy6, Wt9jy6, Eu9jy6, Mu9jy6, Uu9jy6; +wire Cv9jy6, Kv9jy6, Sv9jy6, Aw9jy6, Iw9jy6, Qw9jy6, Yw9jy6, Gx9jy6, Ox9jy6, Wx9jy6; +wire Ey9jy6, My9jy6, Uy9jy6, Cz9jy6, Kz9jy6, Sz9jy6, A0ajy6, I0ajy6, Q0ajy6, Y0ajy6; +wire G1ajy6, O1ajy6, W1ajy6, E2ajy6, M2ajy6, U2ajy6, C3ajy6, K3ajy6, S3ajy6, A4ajy6; +wire I4ajy6, Q4ajy6, Y4ajy6, G5ajy6, O5ajy6, W5ajy6, E6ajy6, M6ajy6, U6ajy6, C7ajy6; +wire K7ajy6, S7ajy6, A8ajy6, I8ajy6, Q8ajy6, Y8ajy6, G9ajy6, O9ajy6, W9ajy6, Eaajy6; +wire Maajy6, Uaajy6, Cbajy6, Kbajy6, Sbajy6, Acajy6, Icajy6, Qcajy6, Ycajy6, Gdajy6; +wire Odajy6, Wdajy6, Eeajy6, Meajy6, Ueajy6, Cfajy6, Kfajy6, Sfajy6, Agajy6, Igajy6; +wire Qgajy6, Ygajy6, Ghajy6, Ohajy6, Whajy6, Eiajy6, Miajy6, Uiajy6, Cjajy6, Kjajy6; +wire Sjajy6, Akajy6, Ikajy6, Qkajy6, Ykajy6, Glajy6, Olajy6, Wlajy6, Emajy6, Mmajy6; +wire Umajy6, Cnajy6, Knajy6, Snajy6, Aoajy6, Ioajy6, Qoajy6, Yoajy6, Gpajy6, Opajy6; +wire Wpajy6, Eqajy6, Mqajy6, Uqajy6, Crajy6, Krajy6, Srajy6, Asajy6, Isajy6, Qsajy6; +wire Ysajy6, Gtajy6, Otajy6, Wtajy6, Euajy6, Muajy6, Uuajy6, Cvajy6, Kvajy6, Svajy6; +wire Awajy6, Iwajy6, Qwajy6, Ywajy6, Gxajy6, Oxajy6, Wxajy6, Eyajy6, Myajy6, Uyajy6; +wire Czajy6, Kzajy6, Szajy6, A0bjy6, I0bjy6, Q0bjy6, Y0bjy6, G1bjy6, O1bjy6, W1bjy6; +wire E2bjy6, M2bjy6, U2bjy6, C3bjy6, K3bjy6, S3bjy6, A4bjy6, I4bjy6, Q4bjy6, Y4bjy6; +wire G5bjy6, O5bjy6, W5bjy6, E6bjy6, M6bjy6, U6bjy6, C7bjy6, K7bjy6, S7bjy6, A8bjy6; +wire I8bjy6, Q8bjy6, Y8bjy6, G9bjy6, O9bjy6, W9bjy6, Eabjy6, Mabjy6, Uabjy6, Cbbjy6; +wire Kbbjy6, Sbbjy6, Acbjy6, Icbjy6, Qcbjy6, Ycbjy6, Gdbjy6, Odbjy6, Wdbjy6, Eebjy6; +wire Mebjy6, Uebjy6, Cfbjy6, Kfbjy6, Sfbjy6, Agbjy6, Igbjy6, Qgbjy6, Ygbjy6, Ghbjy6; +wire Ohbjy6, Whbjy6, Eibjy6, Mibjy6, Uibjy6, Cjbjy6, Kjbjy6, Sjbjy6, Akbjy6, Ikbjy6; +wire Qkbjy6, Ykbjy6, Glbjy6, Olbjy6, Wlbjy6, Embjy6, Mmbjy6, Umbjy6, Cnbjy6, Knbjy6; +wire Snbjy6, Aobjy6, Iobjy6, Qobjy6, Yobjy6, Gpbjy6, Opbjy6, Wpbjy6, Eqbjy6, Mqbjy6; +wire Uqbjy6, Crbjy6, Krbjy6, Srbjy6, Asbjy6, Isbjy6, Qsbjy6, Ysbjy6, Gtbjy6, Otbjy6; +wire Wtbjy6, Eubjy6, Mubjy6, Uubjy6, Cvbjy6, Kvbjy6, Svbjy6, Awbjy6, Iwbjy6, Qwbjy6; +wire Ywbjy6, Gxbjy6, Oxbjy6, Wxbjy6, Eybjy6, Mybjy6, Uybjy6, Czbjy6, Kzbjy6, Szbjy6; +wire A0cjy6, I0cjy6, Q0cjy6, Y0cjy6, G1cjy6, O1cjy6, W1cjy6, E2cjy6, M2cjy6, U2cjy6; +wire C3cjy6, K3cjy6, S3cjy6, A4cjy6, I4cjy6, Q4cjy6, Y4cjy6, G5cjy6, O5cjy6, W5cjy6; +wire E6cjy6, M6cjy6, U6cjy6, C7cjy6, K7cjy6, S7cjy6, A8cjy6, I8cjy6, Q8cjy6, Y8cjy6; +wire G9cjy6, O9cjy6, W9cjy6, Eacjy6, Macjy6, Uacjy6, Cbcjy6, Kbcjy6, Sbcjy6, Accjy6; +wire Iccjy6, Qccjy6, Yccjy6, Gdcjy6, Odcjy6, Wdcjy6, Eecjy6, Mecjy6, Uecjy6, Cfcjy6; +wire Kfcjy6, Sfcjy6, Agcjy6, Igcjy6, Qgcjy6, Ygcjy6, Ghcjy6, Ohcjy6, Whcjy6, Eicjy6; +wire Micjy6, Uicjy6, Cjcjy6, Kjcjy6, Sjcjy6, Akcjy6, Ikcjy6, Qkcjy6, Ykcjy6, Glcjy6; +wire Olcjy6, Wlcjy6, Emcjy6, Mmcjy6, Umcjy6, Cncjy6, Kncjy6, Sncjy6, Aocjy6, Iocjy6; +wire Qocjy6, Yocjy6, Gpcjy6, Opcjy6, Wpcjy6, Eqcjy6, Mqcjy6, Uqcjy6, Crcjy6, Krcjy6; +wire Srcjy6, Ascjy6, Iscjy6, Qscjy6, Yscjy6, Gtcjy6, Otcjy6, Wtcjy6, Eucjy6, Mucjy6; +wire Uucjy6, Cvcjy6, Kvcjy6, Svcjy6, Awcjy6, Iwcjy6, Qwcjy6, Ywcjy6, Gxcjy6, Oxcjy6; +wire Wxcjy6, Eycjy6, Mycjy6, Uycjy6, Czcjy6, Kzcjy6, Szcjy6, A0djy6, I0djy6, Q0djy6; +wire Y0djy6, G1djy6, O1djy6, W1djy6, E2djy6, M2djy6, U2djy6, C3djy6, K3djy6, S3djy6; +wire A4djy6, I4djy6, Q4djy6, Y4djy6, G5djy6, O5djy6, W5djy6, E6djy6, M6djy6, U6djy6; +wire C7djy6, K7djy6, S7djy6, A8djy6, I8djy6, Q8djy6, Y8djy6, G9djy6, O9djy6, W9djy6; +wire Eadjy6, Madjy6, Uadjy6, Cbdjy6, Kbdjy6, Sbdjy6, Acdjy6, Icdjy6, Qcdjy6, Ycdjy6; +wire Gddjy6, Oddjy6, Wddjy6, Eedjy6, Medjy6, Uedjy6, Cfdjy6, Kfdjy6, Sfdjy6, Agdjy6; +wire Igdjy6, Qgdjy6, Ygdjy6, Ghdjy6, Ohdjy6, Whdjy6, Eidjy6, Midjy6, Uidjy6, Cjdjy6; +wire Kjdjy6, Sjdjy6, Akdjy6, Ikdjy6, Qkdjy6, Ykdjy6, Gldjy6, Oldjy6, Wldjy6, Emdjy6; +wire Mmdjy6, Umdjy6, Cndjy6, Kndjy6, Sndjy6, Aodjy6, Iodjy6, Qodjy6, Yodjy6, Gpdjy6; +wire Opdjy6, Wpdjy6, Eqdjy6, Mqdjy6, Uqdjy6, Crdjy6, Krdjy6, Srdjy6, Asdjy6, Isdjy6; +wire Qsdjy6, Ysdjy6, Gtdjy6, Otdjy6, Wtdjy6, Eudjy6, Mudjy6, Uudjy6, Cvdjy6, Kvdjy6; +wire Svdjy6, Awdjy6, Iwdjy6, Qwdjy6, Ywdjy6, Gxdjy6, Oxdjy6, Wxdjy6, Eydjy6, Mydjy6; +wire Uydjy6, Czdjy6, Kzdjy6, Szdjy6, A0ejy6, I0ejy6, Q0ejy6, Y0ejy6, G1ejy6, O1ejy6; +wire W1ejy6, E2ejy6, M2ejy6, U2ejy6, C3ejy6, K3ejy6, S3ejy6, A4ejy6, I4ejy6, Q4ejy6; +wire Y4ejy6, G5ejy6, O5ejy6, W5ejy6, E6ejy6, M6ejy6, U6ejy6, C7ejy6, K7ejy6, S7ejy6; +wire A8ejy6, I8ejy6, Q8ejy6, Y8ejy6, G9ejy6, O9ejy6, W9ejy6, Eaejy6, Maejy6, Uaejy6; +wire Cbejy6, Kbejy6, Sbejy6, Acejy6, Icejy6, Qcejy6, Ycejy6, Gdejy6, Odejy6, Wdejy6; +wire Eeejy6, Meejy6, Ueejy6, Cfejy6, Kfejy6, Sfejy6, Agejy6, Igejy6, Qgejy6, Ygejy6; +wire Ghejy6, Ohejy6, Whejy6, Eiejy6, Miejy6, Uiejy6, Cjejy6, Kjejy6, Sjejy6, Akejy6; +wire Ikejy6, Qkejy6, Ykejy6, Glejy6, Olejy6, Wlejy6, Emejy6, Mmejy6, Umejy6, Cnejy6; +wire Knejy6, Snejy6, Aoejy6, Ioejy6, Qoejy6, Yoejy6, Gpejy6, Opejy6, Wpejy6, Eqejy6; +wire Mqejy6, Uqejy6, Crejy6, Krejy6, Srejy6, Asejy6, Isejy6, Qsejy6, Ysejy6, Gtejy6; +wire Otejy6, Wtejy6, Euejy6, Muejy6, Uuejy6, Cvejy6, Kvejy6, Svejy6, Awejy6, Iwejy6; +wire Qwejy6, Ywejy6, Gxejy6, Oxejy6, Wxejy6, Eyejy6, Myejy6, Uyejy6, Czejy6, Kzejy6; +wire Szejy6, A0fjy6, I0fjy6, Q0fjy6, Y0fjy6, G1fjy6, O1fjy6, W1fjy6, E2fjy6, M2fjy6; +wire U2fjy6, C3fjy6, K3fjy6, S3fjy6, A4fjy6, I4fjy6, Q4fjy6, Y4fjy6, G5fjy6, O5fjy6; +wire W5fjy6, E6fjy6, M6fjy6, U6fjy6, C7fjy6, K7fjy6, S7fjy6, A8fjy6, I8fjy6, Q8fjy6; +wire Y8fjy6, G9fjy6, O9fjy6, W9fjy6, Eafjy6, Mafjy6, Uafjy6, Cbfjy6, Kbfjy6, Sbfjy6; +wire Acfjy6, Icfjy6, Qcfjy6, Ycfjy6, Gdfjy6, Odfjy6, Wdfjy6, Eefjy6, Mefjy6, Uefjy6; +wire Cffjy6, Kffjy6, Sffjy6, Agfjy6, Igfjy6, Qgfjy6, Ygfjy6, Ghfjy6, Ohfjy6, Whfjy6; +wire Eifjy6, Mifjy6, Uifjy6, Cjfjy6, Kjfjy6, Sjfjy6, Akfjy6, Ikfjy6, Qkfjy6, Ykfjy6; +wire Glfjy6, Olfjy6, Wlfjy6, Emfjy6, Mmfjy6, Umfjy6, Cnfjy6, Knfjy6, Snfjy6, Aofjy6; +wire Iofjy6, Qofjy6, Yofjy6, Gpfjy6, Opfjy6, Wpfjy6, Eqfjy6, Mqfjy6, Uqfjy6, Crfjy6; +wire Krfjy6, Srfjy6, Asfjy6, Isfjy6, Qsfjy6, Ysfjy6, Gtfjy6, Otfjy6, Wtfjy6, Eufjy6; +wire Mufjy6, Uufjy6, Cvfjy6, Kvfjy6, Svfjy6, Awfjy6, Iwfjy6, Qwfjy6, Ywfjy6, Gxfjy6; +wire Oxfjy6, Wxfjy6, Eyfjy6, Myfjy6, Uyfjy6, Czfjy6, Kzfjy6, Szfjy6, A0gjy6, I0gjy6; +wire Q0gjy6, Y0gjy6, G1gjy6, O1gjy6, W1gjy6, E2gjy6, M2gjy6, U2gjy6, C3gjy6, K3gjy6; +wire S3gjy6, A4gjy6, I4gjy6, Q4gjy6, Y4gjy6, G5gjy6, O5gjy6, W5gjy6, E6gjy6, M6gjy6; +wire U6gjy6, C7gjy6, K7gjy6, S7gjy6, A8gjy6, I8gjy6, Q8gjy6, Y8gjy6, G9gjy6, O9gjy6; +wire W9gjy6, Eagjy6, Magjy6, Uagjy6, Cbgjy6, Kbgjy6, Sbgjy6, Acgjy6, Icgjy6, Qcgjy6; +wire Ycgjy6, Gdgjy6, Odgjy6, Wdgjy6, Eegjy6, Megjy6, Uegjy6, Cfgjy6, Kfgjy6, Sfgjy6; +wire Aggjy6, Iggjy6, Qggjy6, Yggjy6, Ghgjy6, Ohgjy6, Whgjy6, Eigjy6, Migjy6, Uigjy6; +wire Cjgjy6, Kjgjy6, Sjgjy6, Akgjy6, Ikgjy6, Qkgjy6, Ykgjy6, Glgjy6, Olgjy6, Wlgjy6; +wire Emgjy6, Mmgjy6, Umgjy6, Cngjy6, Kngjy6, Sngjy6, Aogjy6, Iogjy6, Qogjy6, Yogjy6; +wire Gpgjy6, Opgjy6, Wpgjy6, Eqgjy6, Mqgjy6, Uqgjy6, Crgjy6, Krgjy6, Srgjy6, Asgjy6; +wire Isgjy6, Qsgjy6, Ysgjy6, Gtgjy6, Otgjy6, Wtgjy6, Eugjy6, Mugjy6, Uugjy6, Cvgjy6; +wire Kvgjy6, Svgjy6, Awgjy6, Iwgjy6, Qwgjy6, Ywgjy6, Gxgjy6, Oxgjy6, Wxgjy6, Eygjy6; +wire Mygjy6, Uygjy6, Czgjy6, Kzgjy6, Szgjy6, A0hjy6, I0hjy6, Q0hjy6, Y0hjy6, Gpu5z6; +wire Opu5z6, Wpu5z6, Equ5z6, Mqu5z6, Uqu5z6, Cru5z6, Kru5z6, Sru5z6, Asu5z6, Isu5z6; +wire Qsu5z6, Ysu5z6, Gtu5z6, Otu5z6, Wtu5z6, Euu5z6, Muu5z6, Uuu5z6, Cvu5z6, Kvu5z6; +wire Svu5z6, Awu5z6, Iwu5z6, Qwu5z6, Ywu5z6, Gxu5z6, Oxu5z6, Wxu5z6, Eyu5z6, Myu5z6; +wire Uyu5z6, Czu5z6, Kzu5z6, Szu5z6, A0v5z6, I0v5z6, Q0v5z6, Y0v5z6, G1v5z6, O1v5z6; +wire W1v5z6, E2v5z6, M2v5z6, U2v5z6, C3v5z6, K3v5z6, S3v5z6, A4v5z6, I4v5z6, Q4v5z6; +wire Y4v5z6, G5v5z6, O5v5z6, W5v5z6, E6v5z6, M6v5z6, U6v5z6, C7v5z6, K7v5z6, S7v5z6; +wire A8v5z6, I8v5z6, Q8v5z6, Y8v5z6, G9v5z6, O9v5z6, W9v5z6, Eav5z6, Mav5z6, Uav5z6; +wire Cbv5z6, Kbv5z6, Sbv5z6, Acv5z6, Icv5z6, Qcv5z6, Ycv5z6, Gdv5z6, Odv5z6, Wdv5z6; +wire Eev5z6, Mev5z6, Uev5z6, Cfv5z6, Kfv5z6, Sfv5z6, Agv5z6, Igv5z6, Qgv5z6, Ygv5z6; +wire Ghv5z6, Ohv5z6, Whv5z6, Eiv5z6, Miv5z6, Uiv5z6, Cjv5z6, Kjv5z6, Sjv5z6, Akv5z6; +wire Ikv5z6, Qkv5z6, Ykv5z6, Glv5z6, Olv5z6, Wlv5z6, Emv5z6, Mmv5z6, Umv5z6, Cnv5z6; +wire Knv5z6, Snv5z6, Aov5z6, Iov5z6, Qov5z6, Yov5z6, Gpv5z6, Opv5z6, Wpv5z6, Eqv5z6; +wire Mqv5z6, Uqv5z6, Crv5z6, Krv5z6, Srv5z6, Asv5z6, Isv5z6, Qsv5z6, Ysv5z6, Gtv5z6; +wire Otv5z6, Wtv5z6, Euv5z6, Muv5z6, Uuv5z6, Cvv5z6, Kvv5z6, Svv5z6, Awv5z6, Iwv5z6; +wire Qwv5z6, Ywv5z6, Gxv5z6, Oxv5z6, Wxv5z6, Eyv5z6, Myv5z6, Uyv5z6, Czv5z6, Kzv5z6; +wire Szv5z6, A0w5z6, I0w5z6, Q0w5z6, Y0w5z6, G1w5z6, O1w5z6, W1w5z6, E2w5z6, M2w5z6; +wire U2w5z6, C3w5z6, K3w5z6, S3w5z6, A4w5z6, I4w5z6, Q4w5z6, Y4w5z6, G5w5z6, O5w5z6; +wire W5w5z6, E6w5z6, M6w5z6, U6w5z6, C7w5z6, K7w5z6, S7w5z6, A8w5z6, I8w5z6, Q8w5z6; +wire Y8w5z6, G9w5z6, O9w5z6, W9w5z6, Eaw5z6, Maw5z6, Uaw5z6, Cbw5z6, Kbw5z6, Sbw5z6; +wire Acw5z6, Icw5z6, Qcw5z6, Ycw5z6, Gdw5z6, Odw5z6, Wdw5z6, Eew5z6, Mew5z6, Uew5z6; +wire Cfw5z6, Kfw5z6, Sfw5z6, Agw5z6, Igw5z6, Qgw5z6, Ygw5z6, Ghw5z6, Ohw5z6, Whw5z6; +wire Eiw5z6, Miw5z6, Uiw5z6, Cjw5z6, Kjw5z6, Sjw5z6, Akw5z6, Ikw5z6, Qkw5z6, Ykw5z6; +wire Glw5z6, Olw5z6, Wlw5z6, Emw5z6, Mmw5z6, Umw5z6, Cnw5z6, Knw5z6, Snw5z6, Aow5z6; +wire Iow5z6, Qow5z6, Yow5z6, Gpw5z6, Opw5z6, Wpw5z6, Eqw5z6, Mqw5z6, Uqw5z6, Crw5z6; +wire Krw5z6, Srw5z6, Asw5z6, Isw5z6, Qsw5z6, Ysw5z6, Gtw5z6, Otw5z6, Wtw5z6, Euw5z6; +wire Muw5z6, Uuw5z6, Cvw5z6, Kvw5z6, Svw5z6, Aww5z6, Iww5z6, Qww5z6, Yww5z6, Gxw5z6; +wire Oxw5z6, Wxw5z6, Eyw5z6, Myw5z6, Uyw5z6, Czw5z6, Kzw5z6, Szw5z6, A0x5z6, I0x5z6; +wire Q0x5z6, Y0x5z6, G1x5z6, O1x5z6, W1x5z6, E2x5z6, M2x5z6, U2x5z6, C3x5z6, K3x5z6; +wire S3x5z6, A4x5z6, I4x5z6, Q4x5z6, Y4x5z6, G5x5z6, O5x5z6, W5x5z6, E6x5z6, M6x5z6; +wire U6x5z6, C7x5z6, K7x5z6, S7x5z6, A8x5z6, I8x5z6, Q8x5z6, Y8x5z6, G9x5z6, O9x5z6; +wire W9x5z6, Eax5z6, Max5z6, Uax5z6, Cbx5z6, Kbx5z6, Sbx5z6, Acx5z6, Icx5z6, Qcx5z6; +wire Ycx5z6, Gdx5z6, Odx5z6, Wdx5z6, Eex5z6, Mex5z6, Uex5z6, Cfx5z6, Kfx5z6, Sfx5z6; +wire Agx5z6, Igx5z6, Qgx5z6, Ygx5z6, Ghx5z6, Ohx5z6, Whx5z6, Eix5z6, Mix5z6, Uix5z6; +wire Cjx5z6, Kjx5z6, Sjx5z6, Akx5z6, Ikx5z6, Qkx5z6, Ykx5z6, Glx5z6, Olx5z6, Wlx5z6; +wire Emx5z6, Mmx5z6, Umx5z6, Cnx5z6, Knx5z6, Snx5z6, Aox5z6, Iox5z6, Qox5z6, Yox5z6; +wire Gpx5z6, Opx5z6, Wpx5z6, Eqx5z6, Mqx5z6, Uqx5z6, Crx5z6, Krx5z6, Srx5z6, Asx5z6; +wire Isx5z6, Qsx5z6, Ysx5z6, Gtx5z6, Otx5z6, Wtx5z6, Eux5z6, Mux5z6, Uux5z6, Cvx5z6; +wire Kvx5z6, Svx5z6, Awx5z6, Iwx5z6, Qwx5z6, Ywx5z6, Gxx5z6, Oxx5z6, Wxx5z6, Eyx5z6; +wire Myx5z6, Uyx5z6, Czx5z6, Kzx5z6, Szx5z6, A0y5z6, I0y5z6, Q0y5z6, Y0y5z6, G1y5z6; +wire O1y5z6, W1y5z6, E2y5z6, M2y5z6, U2y5z6, C3y5z6, K3y5z6, S3y5z6, A4y5z6, I4y5z6; +wire Q4y5z6, Y4y5z6, G5y5z6, O5y5z6, W5y5z6, E6y5z6, M6y5z6, U6y5z6, C7y5z6, K7y5z6; +wire S7y5z6, A8y5z6, I8y5z6, Q8y5z6, Y8y5z6, G9y5z6, O9y5z6, W9y5z6, Eay5z6, May5z6; +wire Uay5z6, Cby5z6, Kby5z6, Sby5z6, Acy5z6, Icy5z6, Qcy5z6, Ycy5z6, Gdy5z6, Ody5z6; +wire Wdy5z6, Eey5z6, Mey5z6, Uey5z6, Cfy5z6, Kfy5z6, Sfy5z6, Agy5z6, Igy5z6, Qgy5z6; +wire Ygy5z6, Ghy5z6, Ohy5z6, Why5z6, Eiy5z6, Miy5z6, Uiy5z6, Cjy5z6, Kjy5z6, Sjy5z6; +wire Aky5z6, Iky5z6, Qky5z6, Yky5z6, Gly5z6, Oly5z6, Wly5z6, Emy5z6, Mmy5z6, Umy5z6; +wire Cny5z6, Kny5z6, Sny5z6, Aoy5z6, Ioy5z6, Qoy5z6, Yoy5z6, Gpy5z6, Opy5z6, Wpy5z6; +wire Eqy5z6, Mqy5z6, Uqy5z6, Cry5z6, Kry5z6, Sry5z6, Asy5z6, Isy5z6, Qsy5z6, Ysy5z6; +wire Gty5z6, Oty5z6, Wty5z6, Euy5z6, Muy5z6, Uuy5z6, Cvy5z6, Kvy5z6, Svy5z6, Awy5z6; +wire Iwy5z6, Qwy5z6, Ywy5z6, Gxy5z6, Oxy5z6, Wxy5z6, Eyy5z6, Myy5z6, Uyy5z6, Czy5z6; +wire Kzy5z6, Szy5z6, A0z5z6, I0z5z6, Q0z5z6, Y0z5z6, G1z5z6, O1z5z6, W1z5z6, E2z5z6; +wire M2z5z6, U2z5z6, C3z5z6, K3z5z6, S3z5z6, A4z5z6, I4z5z6, Q4z5z6, Y4z5z6, G5z5z6; +wire O5z5z6, W5z5z6, E6z5z6, M6z5z6, U6z5z6, C7z5z6, K7z5z6, S7z5z6, A8z5z6, I8z5z6; +wire Q8z5z6, Y8z5z6, G9z5z6, O9z5z6, W9z5z6, Eaz5z6, Maz5z6, Uaz5z6, Cbz5z6, Kbz5z6; +wire Sbz5z6, Acz5z6, Icz5z6, Qcz5z6, Ycz5z6, Gdz5z6, Odz5z6, Wdz5z6, Eez5z6, Mez5z6; +wire Uez5z6, Cfz5z6, Kfz5z6, Sfz5z6, Agz5z6, Igz5z6, Qgz5z6, Ygz5z6, Ghz5z6, Ohz5z6; +wire Whz5z6, Eiz5z6, Miz5z6, Uiz5z6, Cjz5z6, Kjz5z6, Sjz5z6, Akz5z6, Ikz5z6, Qkz5z6; +wire Ykz5z6, Glz5z6, Olz5z6, Wlz5z6, Emz5z6, Mmz5z6, Umz5z6, Cnz5z6, Knz5z6, Snz5z6; +wire Aoz5z6, Ioz5z6, Qoz5z6, Yoz5z6, Gpz5z6, Opz5z6, Wpz5z6, Eqz5z6, Mqz5z6, Uqz5z6; +wire Crz5z6, Krz5z6, Srz5z6, Asz5z6, Isz5z6, Qsz5z6, Ysz5z6, Gtz5z6, Otz5z6, Wtz5z6; +wire Euz5z6, Muz5z6, Uuz5z6, Cvz5z6, Kvz5z6, Svz5z6, Awz5z6, Iwz5z6, Qwz5z6, Ywz5z6; +wire Gxz5z6, Oxz5z6, Wxz5z6, Eyz5z6, Myz5z6, Uyz5z6, Czz5z6, Kzz5z6, Szz5z6, A006z6; +wire I006z6, Q006z6, Y006z6, G106z6, O106z6, W106z6, E206z6, M206z6, U206z6, C306z6; +wire K306z6, S306z6, A406z6, I406z6, Q406z6, Y406z6, G506z6, O506z6, W506z6, E606z6; +wire M606z6, U606z6, C706z6, K706z6, S706z6, A806z6, I806z6, Q806z6, Y806z6, G906z6; +wire O906z6, W906z6, Ea06z6, Ma06z6, Ua06z6, Cb06z6, Kb06z6, Sb06z6, Ac06z6, Ic06z6; +wire Qc06z6, Yc06z6, Gd06z6, Od06z6, Wd06z6, Ee06z6, Me06z6, Ue06z6, Cf06z6, Kf06z6; +wire Sf06z6, Ag06z6, Ig06z6, Qg06z6, Yg06z6, Gh06z6, Oh06z6, Wh06z6, Ei06z6, Mi06z6; +wire Ui06z6, Cj06z6, Kj06z6, Sj06z6, Ak06z6, Ik06z6, Qk06z6, Yk06z6, Gl06z6, Ol06z6; +wire Wl06z6, Em06z6, Mm06z6, Um06z6, Cn06z6, Kn06z6, Sn06z6, Ao06z6, Io06z6, Qo06z6; +wire Yo06z6, Gp06z6, Op06z6, Wp06z6, Eq06z6, Mq06z6, Uq06z6, Cr06z6, Kr06z6, Sr06z6; +wire As06z6, Is06z6, Qs06z6, Ys06z6, Gt06z6, Ot06z6, Wt06z6, Eu06z6, Mu06z6, Uu06z6; +wire Cv06z6, Kv06z6, Sv06z6, Aw06z6, Iw06z6, Qw06z6, Yw06z6, Gx06z6, Ox06z6, Wx06z6; +wire Ey06z6, My06z6, Uy06z6, Cz06z6, Kz06z6, Sz06z6, A016z6, I016z6, Q016z6, Y016z6; +wire G116z6, O116z6, W116z6, E216z6, M216z6, U216z6, C316z6, K316z6, S316z6, A416z6; +wire I416z6, Q416z6, Y416z6, G516z6, O516z6, W516z6, E616z6, M616z6, U616z6, C716z6; +wire K716z6, S716z6, A816z6, I816z6, Q816z6, Y816z6, G916z6, O916z6, W916z6, Ea16z6; +wire Ma16z6, Ua16z6, Cb16z6, Kb16z6, Sb16z6, Ac16z6, Ic16z6, Qc16z6, Yc16z6, Gd16z6; +wire Od16z6, Wd16z6, Ee16z6, Me16z6, Ue16z6, Cf16z6, Kf16z6, Sf16z6, Ag16z6, Ig16z6; +wire Qg16z6, Yg16z6, Gh16z6, Oh16z6, Wh16z6, Ei16z6, Mi16z6, Ui16z6, Cj16z6, Kj16z6; +wire Sj16z6, Ak16z6, Ik16z6, Qk16z6, Yk16z6, Gl16z6, Ol16z6, Wl16z6, Em16z6, Mm16z6; +wire Um16z6, Cn16z6, Kn16z6, Sn16z6, Ao16z6, Io16z6, Qo16z6, Yo16z6, Gp16z6, Op16z6; +wire Wp16z6, Eq16z6, Mq16z6, Uq16z6, Cr16z6, Kr16z6, Sr16z6, As16z6, Is16z6, Qs16z6; +wire Ys16z6, Gt16z6, Ot16z6, Wt16z6, Eu16z6, Mu16z6, Uu16z6, Cv16z6, Kv16z6, Sv16z6; +wire Aw16z6, Iw16z6, Qw16z6, Yw16z6, Gx16z6, Ox16z6, Wx16z6, Ey16z6, My16z6, Uy16z6; +wire Cz16z6, Kz16z6, Sz16z6, A026z6, I026z6, Q026z6, Y026z6, G126z6, O126z6, W126z6; +wire E226z6, M226z6, U226z6, C326z6, K326z6, S326z6, A426z6, I426z6, Q426z6, Y426z6; +wire G526z6, O526z6, W526z6, E626z6, M626z6, U626z6, C726z6, K726z6, S726z6, A826z6; +wire I826z6, Q826z6, Y826z6, G926z6, O926z6, W926z6, Ea26z6, Ma26z6, Ua26z6, Cb26z6; +wire Kb26z6, Sb26z6, Ac26z6, Ic26z6, Qc26z6, Yc26z6, Gd26z6, Od26z6, Wd26z6, Ee26z6; +wire Me26z6, Ue26z6, Cf26z6, Kf26z6, Sf26z6, Ag26z6, Ig26z6, Qg26z6, Yg26z6, Gh26z6; +wire Oh26z6, Wh26z6, Ei26z6, Mi26z6, Ui26z6, Cj26z6, Kj26z6, Sj26z6, Ak26z6, Ik26z6; +wire Qk26z6, Yk26z6, Gl26z6, Ol26z6, Wl26z6, Em26z6, Mm26z6, Um26z6, Cn26z6, Kn26z6; +wire Sn26z6, Ao26z6, Io26z6, Qo26z6, Yo26z6, Gp26z6, Op26z6, Wp26z6, Eq26z6, Mq26z6; +wire Uq26z6, Cr26z6, Kr26z6, Sr26z6, As26z6, Is26z6, Qs26z6, Ys26z6, Gt26z6, Ot26z6; +wire Wt26z6, Eu26z6, Mu26z6, Uu26z6, Cv26z6, Kv26z6, Sv26z6, Aw26z6, Iw26z6, Qw26z6; +wire Yw26z6, Gx26z6, Ox26z6, Wx26z6, Ey26z6, My26z6, Uy26z6, Cz26z6, Kz26z6, Sz26z6; +wire A036z6, I036z6, Q036z6, Y036z6, G136z6, O136z6, W136z6, E236z6, M236z6, U236z6; +wire C336z6, K336z6, S336z6, A436z6, I436z6, Q436z6, Y436z6, G536z6, O536z6, W536z6; +wire E636z6, M636z6, U636z6, C736z6, K736z6, S736z6, A836z6, I836z6, Q836z6, Y836z6; +wire G936z6, O936z6, W936z6, Ea36z6, Ma36z6, Ua36z6, Cb36z6, Kb36z6, Sb36z6, Ac36z6; +wire Ic36z6, Qc36z6, Yc36z6, Gd36z6, Od36z6, Wd36z6, Ee36z6, Me36z6, Ue36z6, Cf36z6; +wire Kf36z6, Sf36z6, Ag36z6, Ig36z6, Qg36z6, Yg36z6, Gh36z6, Oh36z6, Wh36z6, Ei36z6; +wire Mi36z6, Ui36z6, Cj36z6, Kj36z6, Sj36z6, Ak36z6, Ik36z6, Qk36z6, Yk36z6, Gl36z6; +wire Ol36z6, Wl36z6, Em36z6, Mm36z6, Um36z6, Cn36z6, Kn36z6, Sn36z6, Ao36z6, Io36z6; +wire Qo36z6, Yo36z6, Gp36z6, Op36z6, Wp36z6, Eq36z6, Mq36z6, Uq36z6, Cr36z6, Kr36z6; +wire Sr36z6, As36z6, Is36z6, Qs36z6, Ys36z6, Gt36z6, Ot36z6, Wt36z6, Eu36z6, Mu36z6; +wire Uu36z6, Cv36z6, Kv36z6, Sv36z6, Aw36z6, Iw36z6, Qw36z6, Yw36z6, Gx36z6, Ox36z6; +wire Wx36z6, Ey36z6, My36z6, Uy36z6, Cz36z6, Kz36z6, Sz36z6, A046z6, I046z6, Q046z6; +wire Y046z6, G146z6, O146z6, W146z6, E246z6, M246z6, U246z6, C346z6, K346z6, S346z6; +wire A446z6, I446z6, Q446z6, Y446z6, G546z6, O546z6, W546z6, E646z6, M646z6, U646z6; +wire C746z6, K746z6, S746z6, A846z6, I846z6, Q846z6, Y846z6, G946z6, O946z6, W946z6; +wire Ea46z6, Ma46z6, Ua46z6, Cb46z6, Kb46z6, Sb46z6, Ac46z6, Ic46z6, Qc46z6, Yc46z6; +wire Gd46z6, Od46z6, Wd46z6, Ee46z6, Me46z6, Ue46z6, Cf46z6, Kf46z6, Sf46z6, Ag46z6; +wire Ig46z6, Qg46z6, Yg46z6, Gh46z6, Oh46z6, Wh46z6, Ei46z6, Mi46z6, Ui46z6, Cj46z6; +wire Kj46z6, Sj46z6, Ak46z6, Ik46z6, Qk46z6, Yk46z6, Gl46z6, Ol46z6, Wl46z6, Em46z6; +wire Mm46z6, Um46z6, Cn46z6, Kn46z6, Sn46z6, Ao46z6, Io46z6, Qo46z6, Yo46z6, Gp46z6; +wire Op46z6, Wp46z6, Eq46z6, Mq46z6, Uq46z6, Cr46z6, Kr46z6, Sr46z6, As46z6, Is46z6; +wire Qs46z6, Ys46z6, Gt46z6, Ot46z6, Wt46z6, Eu46z6, Mu46z6, Uu46z6, Cv46z6, Kv46z6; +wire Sv46z6, Aw46z6, Iw46z6, Qw46z6, Yw46z6, Gx46z6, Ox46z6, Wx46z6, Ey46z6, My46z6; +wire Uy46z6, Cz46z6, Kz46z6, Sz46z6, A056z6, I056z6, Q056z6, Y056z6, G156z6, O156z6; +wire W156z6, E256z6, M256z6, U256z6, C356z6, K356z6, S356z6, A456z6, I456z6, Q456z6; +wire Y456z6, G556z6, O556z6, W556z6, E656z6, M656z6, U656z6, C756z6, K756z6, S756z6; +wire A856z6, I856z6, Q856z6, Y856z6, G956z6, O956z6, W956z6, Ea56z6, Ma56z6, Ua56z6; +wire Cb56z6, Kb56z6, Sb56z6, Ac56z6, Ic56z6, Qc56z6, Yc56z6, Gd56z6, Od56z6, Wd56z6; +wire Ee56z6, Me56z6, Ue56z6, Cf56z6, Kf56z6, Sf56z6, Ag56z6, Ig56z6, Qg56z6, Yg56z6; +wire Gh56z6, Oh56z6, Wh56z6, Ei56z6, Mi56z6, Ui56z6, Cj56z6, Kj56z6, Sj56z6, Ak56z6; +wire Ik56z6, Qk56z6, Yk56z6, Gl56z6, Ol56z6, Wl56z6, Em56z6, Mm56z6, Um56z6, Cn56z6; +wire Kn56z6, Sn56z6, Ao56z6, Io56z6, Qo56z6, Yo56z6, Gp56z6, Op56z6, Wp56z6, Eq56z6; +wire Mq56z6, Uq56z6, Cr56z6, Kr56z6, Sr56z6, As56z6, Is56z6, Qs56z6, Ys56z6, Gt56z6; +wire Ot56z6, Wt56z6, Eu56z6, Mu56z6, Uu56z6, Cv56z6, Kv56z6, Sv56z6, Aw56z6, Iw56z6; +wire Qw56z6, Yw56z6, Gx56z6, Ox56z6, Wx56z6, Ey56z6, My56z6, Uy56z6, Cz56z6, Kz56z6; +wire Sz56z6, A066z6, I066z6, Q066z6, Y066z6, G166z6, O166z6, W166z6, E266z6, M266z6; +wire U266z6, C366z6, K366z6, S366z6, A466z6, I466z6, Q466z6, Y466z6, G566z6, O566z6; +wire W566z6, E666z6, M666z6, U666z6, C766z6, K766z6, S766z6, A866z6, I866z6, Q866z6; +wire Y866z6, G966z6, O966z6, W966z6, Ea66z6, Ma66z6, Ua66z6, Cb66z6, Kb66z6, Sb66z6; +wire Ac66z6, Ic66z6, Qc66z6, Yc66z6, Gd66z6, Od66z6, Wd66z6, Ee66z6, Me66z6, Ue66z6; +wire Cf66z6, Kf66z6, Sf66z6, Ag66z6, Ig66z6, Qg66z6, Yg66z6, Gh66z6, Oh66z6, Wh66z6; +wire Ei66z6, Mi66z6, Ui66z6, Cj66z6, Kj66z6, Sj66z6, Ak66z6, Ik66z6, Qk66z6, Yk66z6; +wire Gl66z6, Ol66z6, Wl66z6, Em66z6, Mm66z6, Um66z6, Cn66z6, Kn66z6, Sn66z6, Ao66z6; +wire Io66z6, Qo66z6, Yo66z6, Gp66z6, Op66z6, Wp66z6, Eq66z6, Mq66z6, Uq66z6, Cr66z6; +wire Kr66z6, Sr66z6, As66z6, Is66z6, Qs66z6, Ys66z6, Gt66z6, Ot66z6, Wt66z6, Eu66z6; +wire Mu66z6, Uu66z6, Cv66z6, Kv66z6, Sv66z6, Aw66z6, Iw66z6, Qw66z6, Yw66z6, Gx66z6; +wire Ox66z6, Wx66z6, Ey66z6, My66z6, Uy66z6, Cz66z6, Kz66z6, Sz66z6, A076z6, I076z6; +wire Q076z6, Y076z6, G176z6, O176z6, W176z6, E276z6, M276z6, U276z6, C376z6, K376z6; +wire S376z6, A476z6, I476z6, Q476z6, Y476z6, G576z6, O576z6, W576z6, E676z6, M676z6; +wire U676z6, C776z6, K776z6, S776z6, A876z6, I876z6, Q876z6, Y876z6, G976z6, O976z6; +wire W976z6, Ea76z6, Ma76z6, Ua76z6, Cb76z6, Kb76z6, Sb76z6, Ac76z6, Ic76z6, Qc76z6; +wire Yc76z6, Gd76z6, Od76z6, Wd76z6, Ee76z6, Me76z6, Ue76z6, Cf76z6, Kf76z6, Sf76z6; +wire Ag76z6, Ig76z6, Qg76z6, Yg76z6, Gh76z6, Oh76z6, Wh76z6, Ei76z6, Mi76z6, Ui76z6; +wire Cj76z6, Kj76z6, Sj76z6, Ak76z6, Ik76z6, Qk76z6, Yk76z6, Gl76z6, Ol76z6, Wl76z6; +wire Em76z6, Mm76z6, Um76z6, Cn76z6, Kn76z6, Sn76z6, Ao76z6, Io76z6, Qo76z6, Yo76z6; +wire Gp76z6, Op76z6, Wp76z6, Eq76z6, Mq76z6, Uq76z6, Cr76z6, Kr76z6, Sr76z6, As76z6; +wire Is76z6, Qs76z6, Ys76z6, Gt76z6, Ot76z6, Wt76z6, Eu76z6, Mu76z6, Uu76z6, Cv76z6; +wire Kv76z6, Sv76z6, Aw76z6, Iw76z6, Qw76z6, Yw76z6, Gx76z6, Ox76z6, Wx76z6, Ey76z6; +wire My76z6, Uy76z6, Cz76z6, Kz76z6, Sz76z6, A086z6, I086z6, Q086z6, Y086z6, G186z6; +wire O186z6, W186z6, E286z6, M286z6, U286z6, C386z6, K386z6, S386z6, A486z6, I486z6; +wire Q486z6, Y486z6, G586z6, O586z6, W586z6, E686z6, M686z6, U686z6, C786z6, K786z6; +wire S786z6, A886z6, I886z6, Q886z6, Y886z6, G986z6, O986z6, W986z6, Ea86z6, Ma86z6; +wire Ua86z6, Cb86z6, Kb86z6, Sb86z6, Ac86z6, Ic86z6, Qc86z6, Yc86z6, Gd86z6, Od86z6; +wire Wd86z6, Ee86z6, Me86z6, Ue86z6, Cf86z6, Kf86z6, Sf86z6, Ag86z6, Ig86z6, Qg86z6; +wire Yg86z6, Gh86z6, Oh86z6, Wh86z6, Ei86z6, Mi86z6, Ui86z6, Cj86z6, Kj86z6, Sj86z6; +wire Ak86z6, Ik86z6, Qk86z6, Yk86z6, Gl86z6, Ol86z6, Wl86z6, Em86z6, Mm86z6, Um86z6; +wire Cn86z6, Kn86z6, Sn86z6, Ao86z6, Io86z6, Qo86z6, Yo86z6, Gp86z6, Op86z6, Wp86z6; +wire Eq86z6, Mq86z6, Uq86z6, Cr86z6, Kr86z6, Sr86z6, As86z6, Is86z6, Qs86z6, Ys86z6; +wire Gt86z6, Ot86z6, Wt86z6, Eu86z6, Mu86z6, Uu86z6, Cv86z6, Kv86z6, Sv86z6, Aw86z6; +wire Iw86z6, Qw86z6, Yw86z6, Gx86z6, Ox86z6, Wx86z6, Ey86z6, My86z6, Uy86z6, Cz86z6; +wire Kz86z6, Sz86z6, A096z6, I096z6, Q096z6, Y096z6, G196z6, O196z6, W196z6, E296z6; +wire M296z6, U296z6, C396z6, K396z6, S396z6, A496z6, I496z6, Q496z6, Y496z6, G596z6; +wire O596z6, W596z6, E696z6, M696z6, U696z6, C796z6, K796z6, S796z6, A896z6, I896z6; +wire Q896z6, Y896z6, G996z6, O996z6, W996z6, Ea96z6, Ma96z6, Ua96z6, Cb96z6, Kb96z6; +wire Sb96z6, Ac96z6, Ic96z6, Qc96z6, Yc96z6, Gd96z6, Od96z6, Wd96z6, Ee96z6, Me96z6; +wire Ue96z6, Cf96z6, Kf96z6, Sf96z6, Ag96z6, Ig96z6, Qg96z6, Yg96z6, Gh96z6, Oh96z6; +wire Wh96z6, Ei96z6, Mi96z6, Ui96z6, Cj96z6, Kj96z6, Sj96z6, Ak96z6, Ik96z6, Qk96z6; +wire Yk96z6, Gl96z6, Ol96z6, Wl96z6, Em96z6, Mm96z6, Um96z6, Cn96z6, Kn96z6, Sn96z6; +wire Ao96z6, Io96z6, Qo96z6, Yo96z6, Gp96z6, Op96z6, Wp96z6, Eq96z6, Mq96z6, Uq96z6; +wire Cr96z6, Kr96z6, Sr96z6, As96z6, Is96z6, Qs96z6, Ys96z6, Gt96z6, Ot96z6, Wt96z6; +wire Eu96z6, Mu96z6, Uu96z6, Cv96z6, Kv96z6, Sv96z6, Aw96z6, Iw96z6, Qw96z6, Yw96z6; +wire Gx96z6, Ox96z6, Wx96z6, Ey96z6, My96z6, Uy96z6, Cz96z6, Kz96z6, Sz96z6, A0a6z6; +wire I0a6z6, Q0a6z6, Y0a6z6, G1a6z6, O1a6z6, W1a6z6, E2a6z6, M2a6z6, U2a6z6, C3a6z6; +wire K3a6z6, S3a6z6, A4a6z6, I4a6z6, Q4a6z6, Y4a6z6, G5a6z6, O5a6z6, W5a6z6, E6a6z6; +wire M6a6z6, U6a6z6, C7a6z6, K7a6z6, S7a6z6, A8a6z6, I8a6z6, Q8a6z6, Y8a6z6, G9a6z6; +wire O9a6z6, W9a6z6, Eaa6z6, Maa6z6, Uaa6z6, Cba6z6, Kba6z6, Sba6z6, Aca6z6, Ica6z6; +wire Qca6z6, Yca6z6, Gda6z6, Oda6z6, Wda6z6, Eea6z6, Mea6z6, Uea6z6, Cfa6z6, Kfa6z6; +wire Sfa6z6, Aga6z6, Iga6z6, Qga6z6, Yga6z6, Gha6z6, Oha6z6, Wha6z6, Eia6z6, Mia6z6; +wire Uia6z6, Cja6z6, Kja6z6, Sja6z6, Aka6z6, Ika6z6, Qka6z6, Yka6z6, Gla6z6, Ola6z6; +wire Wla6z6, Ema6z6, Mma6z6, Uma6z6, Cna6z6, Kna6z6, Sna6z6, Aoa6z6, Ioa6z6, Qoa6z6; +wire Yoa6z6, Gpa6z6, Opa6z6, Wpa6z6, Eqa6z6, Mqa6z6, Uqa6z6, Cra6z6, Kra6z6, Sra6z6; +wire Asa6z6, Isa6z6, Qsa6z6, Ysa6z6, Gta6z6, Ota6z6, Wta6z6, Eua6z6, Mua6z6, Uua6z6; +wire Cva6z6, Kva6z6, Sva6z6, Awa6z6, Iwa6z6, Qwa6z6, Ywa6z6, Gxa6z6, Oxa6z6, Wxa6z6; +wire Eya6z6, Mya6z6, Uya6z6, Cza6z6, Kza6z6, Sza6z6, A0b6z6, I0b6z6, Q0b6z6, Y0b6z6; +wire G1b6z6, O1b6z6, W1b6z6, E2b6z6, M2b6z6, U2b6z6, C3b6z6, K3b6z6, S3b6z6, A4b6z6; +wire I4b6z6, Q4b6z6, Y4b6z6, G5b6z6, O5b6z6, W5b6z6, E6b6z6, M6b6z6, U6b6z6, C7b6z6; +wire K7b6z6, S7b6z6, A8b6z6, I8b6z6, Q8b6z6, Y8b6z6, G9b6z6, O9b6z6, W9b6z6, Eab6z6; +wire Mab6z6, Uab6z6, Cbb6z6, Kbb6z6, Sbb6z6, Acb6z6, Icb6z6, Qcb6z6, Ycb6z6, Gdb6z6; +wire Odb6z6, Wdb6z6, Eeb6z6, Meb6z6, Ueb6z6, Cfb6z6, Kfb6z6, Sfb6z6, Agb6z6, Igb6z6; +wire Qgb6z6, Ygb6z6, Ghb6z6, Ohb6z6, Whb6z6, Eib6z6, Mib6z6, Uib6z6, Cjb6z6, Kjb6z6; +wire Sjb6z6, Akb6z6, Ikb6z6, Qkb6z6, Ykb6z6, Glb6z6, Olb6z6, Wlb6z6, Emb6z6, Mmb6z6; +wire Umb6z6, Cnb6z6, Knb6z6, Snb6z6, Aob6z6, Iob6z6, Qob6z6, Yob6z6, Gpb6z6, Opb6z6; +wire Wpb6z6, Eqb6z6, Mqb6z6, Uqb6z6, Crb6z6, Krb6z6, Srb6z6, Asb6z6, Isb6z6, Qsb6z6; +wire Ysb6z6, Gtb6z6, Otb6z6, Wtb6z6, Eub6z6, Mub6z6, Uub6z6, Cvb6z6, Kvb6z6, Svb6z6; +wire Awb6z6, Iwb6z6, Qwb6z6, Ywb6z6, Gxb6z6, Oxb6z6, Wxb6z6, Eyb6z6, Myb6z6, Uyb6z6; +wire Czb6z6, Kzb6z6, Szb6z6, A0c6z6, I0c6z6, Q0c6z6, Y0c6z6, G1c6z6, O1c6z6, W1c6z6; +wire E2c6z6, M2c6z6, U2c6z6, C3c6z6, K3c6z6, S3c6z6, A4c6z6, I4c6z6, Q4c6z6, Y4c6z6; +wire G5c6z6, O5c6z6, W5c6z6, E6c6z6, M6c6z6, U6c6z6, C7c6z6, K7c6z6, S7c6z6, A8c6z6; +wire I8c6z6, Q8c6z6, Y8c6z6, G9c6z6, O9c6z6, W9c6z6, Eac6z6, Mac6z6, Uac6z6, Cbc6z6; +wire Kbc6z6, Sbc6z6, Acc6z6, Icc6z6, Qcc6z6, Ycc6z6, Gdc6z6, Odc6z6, Wdc6z6, Eec6z6; +wire Mec6z6, Uec6z6, Cfc6z6, Kfc6z6, Sfc6z6, Agc6z6, Igc6z6, Qgc6z6, Ygc6z6, Ghc6z6; +wire Ohc6z6, Whc6z6, Eic6z6, Mic6z6, Uic6z6, Cjc6z6, Kjc6z6, Sjc6z6, Akc6z6, Ikc6z6; +wire Qkc6z6, Ykc6z6, Glc6z6, Olc6z6, Wlc6z6, Emc6z6, Mmc6z6, Umc6z6, Cnc6z6, Knc6z6; +wire Snc6z6, Aoc6z6, Ioc6z6, Qoc6z6, Yoc6z6, Gpc6z6, Opc6z6, Wpc6z6, Eqc6z6, Mqc6z6; +wire Uqc6z6, Crc6z6, Krc6z6, Src6z6, Asc6z6, Isc6z6, Qsc6z6, Ysc6z6, Gtc6z6, Otc6z6; +wire Wtc6z6, Euc6z6, Muc6z6, Uuc6z6, Cvc6z6, Kvc6z6, Svc6z6, Awc6z6, Iwc6z6, Qwc6z6; +wire Ywc6z6, Gxc6z6, Oxc6z6, Wxc6z6, Eyc6z6, Myc6z6, Uyc6z6, Czc6z6, Kzc6z6, Szc6z6; +wire A0d6z6, I0d6z6, Q0d6z6, Y0d6z6, G1d6z6, O1d6z6, W1d6z6, E2d6z6, M2d6z6, U2d6z6; +wire C3d6z6, K3d6z6, S3d6z6, A4d6z6, I4d6z6, Q4d6z6, Y4d6z6, G5d6z6, O5d6z6, W5d6z6; +wire E6d6z6, M6d6z6, U6d6z6, C7d6z6, K7d6z6, S7d6z6, A8d6z6, I8d6z6, Q8d6z6, Y8d6z6; +wire G9d6z6, O9d6z6, W9d6z6, Ead6z6, Mad6z6, Uad6z6, Cbd6z6, Kbd6z6, Sbd6z6, Acd6z6; +wire Icd6z6, Qcd6z6, Ycd6z6, Gdd6z6, Odd6z6, Wdd6z6, Eed6z6, Med6z6, Ued6z6, Cfd6z6; +wire Kfd6z6, Sfd6z6, Agd6z6, Igd6z6, Qgd6z6, Ygd6z6, Ghd6z6, Ohd6z6, Whd6z6, Eid6z6; +wire Mid6z6, Uid6z6, Cjd6z6, Kjd6z6, Sjd6z6, Akd6z6, Ikd6z6, Qkd6z6, Ykd6z6, Gld6z6; +wire Old6z6, Wld6z6, Emd6z6, Mmd6z6, Umd6z6, Cnd6z6, Knd6z6, Snd6z6, Aod6z6, Iod6z6; +wire Qod6z6, Yod6z6, Gpd6z6, Opd6z6, Wpd6z6, Eqd6z6, Mqd6z6, Uqd6z6, Crd6z6, Krd6z6; +wire Srd6z6, Asd6z6, Isd6z6, Qsd6z6, Ysd6z6, Gtd6z6, Otd6z6, Wtd6z6, Eud6z6, Mud6z6; +wire Uud6z6, Cvd6z6, Kvd6z6, Svd6z6, Awd6z6, Iwd6z6, Qwd6z6, Ywd6z6, Gxd6z6, Oxd6z6; +wire Wxd6z6, Eyd6z6, Myd6z6, Uyd6z6, Czd6z6, Kzd6z6, Szd6z6, A0e6z6, I0e6z6, Q0e6z6; +wire Y0e6z6, G1e6z6, O1e6z6, W1e6z6, E2e6z6, M2e6z6, U2e6z6, C3e6z6, K3e6z6, S3e6z6; +wire A4e6z6, I4e6z6, Q4e6z6, Y4e6z6, G5e6z6, O5e6z6, W5e6z6, E6e6z6, M6e6z6, U6e6z6; +wire C7e6z6, K7e6z6, S7e6z6, A8e6z6, I8e6z6, Q8e6z6, Y8e6z6, G9e6z6, O9e6z6, W9e6z6; +wire Eae6z6, Mae6z6, Uae6z6, Cbe6z6, Kbe6z6, Sbe6z6, Ace6z6, Ice6z6, Qce6z6, Yce6z6; +wire Gde6z6, Ode6z6, Wde6z6, Eee6z6, Mee6z6, Uee6z6, Cfe6z6, Kfe6z6, Sfe6z6, Age6z6; +wire Ige6z6, Qge6z6, Yge6z6, Ghe6z6, Ohe6z6, Whe6z6, Eie6z6, Mie6z6, Uie6z6, Cje6z6; +wire Kje6z6, Sje6z6, Ake6z6, Ike6z6, Qke6z6, Yke6z6, Gle6z6, Ole6z6, Wle6z6, Eme6z6; +wire Mme6z6, Ume6z6, Cne6z6, Kne6z6, Sne6z6, Aoe6z6, Ioe6z6, Qoe6z6, Yoe6z6, Gpe6z6; +wire Ope6z6, Wpe6z6, Eqe6z6, Mqe6z6, Uqe6z6, Cre6z6, Kre6z6, Sre6z6, Ase6z6, Ise6z6; +wire Qse6z6, Yse6z6, Gte6z6, Ote6z6, Wte6z6, Eue6z6, Mue6z6, Uue6z6, Cve6z6, Kve6z6; +wire Sve6z6, Awe6z6, Iwe6z6, Qwe6z6, Ywe6z6, Gxe6z6, Oxe6z6, Wxe6z6, Eye6z6, Mye6z6; +wire Uye6z6, Cze6z6, Kze6z6, Sze6z6, A0f6z6, I0f6z6, Q0f6z6, Y0f6z6, G1f6z6, O1f6z6; +wire W1f6z6, E2f6z6, M2f6z6, U2f6z6, C3f6z6, K3f6z6, S3f6z6, A4f6z6, I4f6z6, Q4f6z6; +wire Y4f6z6, G5f6z6, O5f6z6, W5f6z6, E6f6z6, M6f6z6, U6f6z6, C7f6z6, K7f6z6, S7f6z6; +wire A8f6z6, I8f6z6, Q8f6z6, Y8f6z6, G9f6z6, O9f6z6, W9f6z6, Eaf6z6, Maf6z6, Uaf6z6; +wire Cbf6z6, Kbf6z6, Sbf6z6, Acf6z6, Icf6z6, Qcf6z6, Ycf6z6, Gdf6z6, Odf6z6, Wdf6z6; +wire Eef6z6, Mef6z6, Uef6z6, Cff6z6, Kff6z6, Sff6z6, Agf6z6, Igf6z6, Qgf6z6, Ygf6z6; +wire Ghf6z6, Ohf6z6, Whf6z6, Eif6z6, Mif6z6, Uif6z6, Cjf6z6, Kjf6z6, Sjf6z6, Akf6z6; +wire Ikf6z6, Qkf6z6, Ykf6z6, Glf6z6, Olf6z6, Wlf6z6, Emf6z6, Mmf6z6, Umf6z6, Cnf6z6; +wire Knf6z6, Snf6z6, Aof6z6, Iof6z6, Qof6z6, Yof6z6, Gpf6z6, Opf6z6, Wpf6z6, Eqf6z6; +wire Mqf6z6, Uqf6z6, Crf6z6, Krf6z6, Srf6z6, Asf6z6, Isf6z6, Qsf6z6, Ysf6z6, Gtf6z6; +wire Otf6z6, Wtf6z6, Euf6z6, Muf6z6, Uuf6z6, Cvf6z6, Kvf6z6, Svf6z6, Awf6z6, Iwf6z6; +wire Qwf6z6, Ywf6z6, Gxf6z6, Oxf6z6, Wxf6z6, Eyf6z6, Myf6z6, Uyf6z6, Czf6z6, Kzf6z6; +wire Szf6z6, A0g6z6, I0g6z6, Q0g6z6, Y0g6z6, G1g6z6, O1g6z6, W1g6z6, E2g6z6, M2g6z6; +wire U2g6z6, C3g6z6, K3g6z6, S3g6z6, A4g6z6, I4g6z6, Q4g6z6, Y4g6z6, G5g6z6, O5g6z6; +wire W5g6z6, E6g6z6, M6g6z6, U6g6z6, C7g6z6, K7g6z6, S7g6z6, A8g6z6, I8g6z6, Q8g6z6; +wire Y8g6z6, G9g6z6, O9g6z6, W9g6z6, Eag6z6, Mag6z6, Uag6z6, Cbg6z6, Kbg6z6, Sbg6z6; +wire Acg6z6, Icg6z6, Qcg6z6, Ycg6z6, Gdg6z6, Odg6z6, Wdg6z6, Eeg6z6, Meg6z6, Ueg6z6; +wire Cfg6z6, Kfg6z6, Sfg6z6, Agg6z6, Igg6z6, Qgg6z6, Ygg6z6, Ghg6z6, Ohg6z6, Whg6z6; +wire Eig6z6, Mig6z6, Uig6z6, Cjg6z6, Kjg6z6, Sjg6z6, Akg6z6, Ikg6z6, Qkg6z6, Ykg6z6; +wire Glg6z6, Olg6z6, Wlg6z6, Emg6z6, Mmg6z6, Umg6z6, Cng6z6, Kng6z6, Sng6z6, Aog6z6; +wire Iog6z6, Qog6z6, Yog6z6, Gpg6z6, Opg6z6, Wpg6z6, Eqg6z6, Mqg6z6, Uqg6z6, Crg6z6; +wire Krg6z6, Srg6z6, Asg6z6, Isg6z6, Qsg6z6, Ysg6z6, Gtg6z6, Otg6z6, Wtg6z6, Eug6z6; +wire Mug6z6, Uug6z6, Cvg6z6, Kvg6z6, Svg6z6, Awg6z6, Iwg6z6, Qwg6z6, Ywg6z6, Gxg6z6; +wire Oxg6z6, Wxg6z6, Eyg6z6, Myg6z6, Uyg6z6, Czg6z6, Kzg6z6, Szg6z6, A0h6z6, I0h6z6; +wire Q0h6z6, Y0h6z6, G1h6z6, O1h6z6, W1h6z6, E2h6z6, M2h6z6, U2h6z6, C3h6z6, K3h6z6; +wire S3h6z6, A4h6z6, I4h6z6, Q4h6z6, Y4h6z6, G5h6z6, O5h6z6, W5h6z6, E6h6z6, M6h6z6; +wire U6h6z6, C7h6z6, K7h6z6, S7h6z6, A8h6z6, I8h6z6, Q8h6z6, Y8h6z6, G9h6z6, O9h6z6; +wire W9h6z6, Eah6z6, Mah6z6, Uah6z6, Cbh6z6, Kbh6z6, Sbh6z6, Ach6z6, Ich6z6, Qch6z6; +wire Ych6z6, Gdh6z6, Odh6z6, Wdh6z6, Eeh6z6, Meh6z6, Ueh6z6, Cfh6z6, Kfh6z6, Sfh6z6; +wire Agh6z6, Igh6z6, Qgh6z6, Ygh6z6, Ghh6z6, Ohh6z6, Whh6z6, Eih6z6, Mih6z6, Uih6z6; +wire Cjh6z6, Kjh6z6, Sjh6z6, Akh6z6, Ikh6z6, Qkh6z6, Ykh6z6, Glh6z6, Olh6z6, Wlh6z6; +wire Emh6z6, Mmh6z6, Umh6z6, Cnh6z6, Knh6z6, Snh6z6, Aoh6z6, Ioh6z6, Qoh6z6, Yoh6z6; +wire Gph6z6, Oph6z6, Wph6z6, Eqh6z6, Mqh6z6, Uqh6z6, Crh6z6, Krh6z6, Srh6z6, Ash6z6; +wire Ish6z6, Qsh6z6, Ysh6z6, Gth6z6, Oth6z6, Wth6z6, Euh6z6, Muh6z6, Uuh6z6, Cvh6z6; +wire Kvh6z6, Svh6z6, Awh6z6, Iwh6z6, Qwh6z6, Ywh6z6, Gxh6z6, Oxh6z6, Wxh6z6, Eyh6z6; +wire Myh6z6, Uyh6z6, Czh6z6, Kzh6z6, Szh6z6, A0i6z6, I0i6z6, Q0i6z6, Y0i6z6, G1i6z6; +wire O1i6z6, W1i6z6, E2i6z6, M2i6z6, U2i6z6, C3i6z6, K3i6z6, S3i6z6, A4i6z6, I4i6z6; +wire Q4i6z6, Y4i6z6, G5i6z6, O5i6z6, W5i6z6, E6i6z6, M6i6z6, U6i6z6, C7i6z6, K7i6z6; +wire S7i6z6, A8i6z6, I8i6z6, Q8i6z6, Y8i6z6, G9i6z6, O9i6z6, W9i6z6, Eai6z6, Mai6z6; +wire Uai6z6, Cbi6z6, Kbi6z6, Sbi6z6, Aci6z6, Ici6z6, Qci6z6, Yci6z6, Gdi6z6, Odi6z6; +wire Wdi6z6, Eei6z6, Mei6z6, Uei6z6, Cfi6z6, Kfi6z6, Sfi6z6, Agi6z6, Igi6z6, Qgi6z6; +wire Ygi6z6, Ghi6z6, Ohi6z6, Whi6z6, Eii6z6, Mii6z6, Uii6z6, Cji6z6, Kji6z6, Sji6z6; +wire Aki6z6, Iki6z6, Qki6z6, Yki6z6, Gli6z6, Oli6z6, Wli6z6, Emi6z6, Mmi6z6, Umi6z6; +wire Cni6z6, Kni6z6, Sni6z6, Aoi6z6, Ioi6z6, Qoi6z6, Yoi6z6, Gpi6z6, Opi6z6, Wpi6z6; +wire Eqi6z6, Mqi6z6, Uqi6z6, Cri6z6, Kri6z6, Sri6z6, Asi6z6, Isi6z6, Qsi6z6, Ysi6z6; +wire Gti6z6, Oti6z6, Wti6z6, Eui6z6, Mui6z6, Uui6z6, Cvi6z6, Kvi6z6, Svi6z6, Awi6z6; +wire Iwi6z6, Qwi6z6, Ywi6z6, Gxi6z6, Oxi6z6, Wxi6z6, Eyi6z6, Myi6z6, Uyi6z6, Czi6z6; +wire Kzi6z6, Szi6z6, A0j6z6, I0j6z6, Q0j6z6, Y0j6z6, G1j6z6, O1j6z6, W1j6z6, E2j6z6; +wire M2j6z6, U2j6z6, C3j6z6, K3j6z6, S3j6z6, A4j6z6, I4j6z6, Q4j6z6, Y4j6z6, G5j6z6; +wire O5j6z6, W5j6z6, E6j6z6, M6j6z6, U6j6z6, C7j6z6, K7j6z6, S7j6z6, A8j6z6, I8j6z6; +wire Q8j6z6, Y8j6z6, G9j6z6, O9j6z6, W9j6z6, Eaj6z6, Maj6z6, Uaj6z6, Cbj6z6, Kbj6z6; +wire Sbj6z6, Acj6z6, Icj6z6, Qcj6z6, Ycj6z6, Gdj6z6, Odj6z6, Wdj6z6, Eej6z6, Mej6z6; +wire Uej6z6, Cfj6z6, Kfj6z6, Sfj6z6, Agj6z6, Igj6z6, Qgj6z6, Ygj6z6, Ghj6z6, Ohj6z6; +wire Whj6z6, Eij6z6, Mij6z6, Uij6z6, Cjj6z6, Kjj6z6, Sjj6z6, Akj6z6, Ikj6z6, Qkj6z6; +wire Ykj6z6, Glj6z6, Olj6z6, Wlj6z6, Emj6z6, Mmj6z6, Umj6z6, Cnj6z6, Knj6z6, Snj6z6; +wire Aoj6z6, Ioj6z6, Qoj6z6, Yoj6z6, Gpj6z6, Opj6z6, Wpj6z6, Eqj6z6, Mqj6z6, Uqj6z6; +wire Crj6z6, Krj6z6, Srj6z6, Asj6z6, Isj6z6, Qsj6z6, Ysj6z6, Gtj6z6, Otj6z6, Wtj6z6; +wire Euj6z6, Muj6z6, Uuj6z6, Cvj6z6, Kvj6z6, Svj6z6, Awj6z6, Iwj6z6, Qwj6z6, Ywj6z6; +wire Gxj6z6, Oxj6z6, Wxj6z6, Eyj6z6, Myj6z6, Uyj6z6, Czj6z6, Kzj6z6, Szj6z6, A0k6z6; +wire I0k6z6, Q0k6z6, Y0k6z6, G1k6z6, O1k6z6, W1k6z6, E2k6z6, M2k6z6, U2k6z6, C3k6z6; +wire K3k6z6, S3k6z6, A4k6z6, I4k6z6, Q4k6z6, Y4k6z6, G5k6z6, O5k6z6, W5k6z6, E6k6z6; +wire M6k6z6, U6k6z6, C7k6z6, K7k6z6, S7k6z6, A8k6z6, I8k6z6, Q8k6z6, Y8k6z6, G9k6z6; +wire O9k6z6, W9k6z6, Eak6z6, Mak6z6, Uak6z6, Cbk6z6, Kbk6z6, Sbk6z6, Ack6z6, Ick6z6; +wire Qck6z6, Yck6z6, Gdk6z6, Odk6z6, Wdk6z6, Eek6z6, Mek6z6, Uek6z6, Cfk6z6, Kfk6z6; +wire Sfk6z6, Agk6z6, Igk6z6, Qgk6z6, Ygk6z6, Ghk6z6, Ohk6z6, Whk6z6, Eik6z6, Mik6z6; +wire Uik6z6, Cjk6z6, Kjk6z6, Sjk6z6, Akk6z6, Ikk6z6, Qkk6z6, Ykk6z6, Glk6z6, Olk6z6; +wire Wlk6z6, Emk6z6, Mmk6z6, Umk6z6, Cnk6z6, Knk6z6, Snk6z6, Aok6z6, Iok6z6, Qok6z6; +wire Yok6z6, Gpk6z6, Opk6z6, Wpk6z6, Eqk6z6, Mqk6z6, Uqk6z6, Crk6z6, Krk6z6, Srk6z6; +wire Ask6z6, Isk6z6, Qsk6z6, Ysk6z6, Gtk6z6, Otk6z6, Wtk6z6, Euk6z6, Muk6z6, Uuk6z6; +wire Cvk6z6, Kvk6z6, Svk6z6, Awk6z6, Iwk6z6, Qwk6z6, Ywk6z6, Gxk6z6, Oxk6z6, Wxk6z6; +wire Eyk6z6, Myk6z6, Uyk6z6, Czk6z6, Kzk6z6, Szk6z6, A0l6z6, I0l6z6, Q0l6z6, Y0l6z6; +wire G1l6z6, O1l6z6, W1l6z6, E2l6z6, M2l6z6, U2l6z6, C3l6z6, K3l6z6, S3l6z6, A4l6z6; +wire I4l6z6, Q4l6z6, Y4l6z6, G5l6z6, O5l6z6, W5l6z6, E6l6z6, M6l6z6, U6l6z6, C7l6z6; +wire K7l6z6, S7l6z6, A8l6z6, I8l6z6, Q8l6z6, Y8l6z6, G9l6z6, O9l6z6, W9l6z6, Eal6z6; +wire Mal6z6, Ual6z6, Cbl6z6, Kbl6z6, Sbl6z6, Acl6z6, Icl6z6, Qcl6z6, Ycl6z6, Gdl6z6; +wire Odl6z6, Wdl6z6, Eel6z6, Mel6z6, Uel6z6, Cfl6z6, Kfl6z6, Sfl6z6, Agl6z6, Igl6z6; +wire Qgl6z6, Ygl6z6, Ghl6z6, Ohl6z6, Whl6z6, Eil6z6, Mil6z6, Uil6z6, Cjl6z6, Kjl6z6; +wire Sjl6z6, Akl6z6, Ikl6z6, Qkl6z6, Ykl6z6, Gll6z6, Oll6z6, Wll6z6, Eml6z6, Mml6z6; +wire Uml6z6, Cnl6z6, Knl6z6, Snl6z6, Aol6z6, Iol6z6, Qol6z6, Yol6z6, Gpl6z6, Opl6z6; +wire Wpl6z6, Eql6z6, Mql6z6, Uql6z6, Crl6z6, Krl6z6, Srl6z6, Asl6z6, Isl6z6, Qsl6z6; +wire Ysl6z6, Gtl6z6, Otl6z6, Wtl6z6, Eul6z6, Mul6z6, Uul6z6, Cvl6z6, Kvl6z6, Svl6z6; +wire Awl6z6, Iwl6z6, Qwl6z6, Ywl6z6, Gxl6z6, Oxl6z6, Wxl6z6, Eyl6z6, Myl6z6, Uyl6z6; +wire Czl6z6, Kzl6z6, Szl6z6, A0m6z6, I0m6z6, Q0m6z6, Y0m6z6, G1m6z6, O1m6z6, W1m6z6; +wire E2m6z6, M2m6z6, U2m6z6, C3m6z6, K3m6z6, S3m6z6, A4m6z6, I4m6z6, Q4m6z6, Y4m6z6; +wire G5m6z6, O5m6z6, W5m6z6, E6m6z6, M6m6z6, U6m6z6, C7m6z6, K7m6z6, S7m6z6, A8m6z6; +wire I8m6z6, Q8m6z6, Y8m6z6, G9m6z6, O9m6z6, W9m6z6, Eam6z6, Mam6z6, Uam6z6, Cbm6z6; +wire Kbm6z6, Sbm6z6, Acm6z6, Icm6z6, Qcm6z6, Ycm6z6, Gdm6z6, Odm6z6, Wdm6z6, Eem6z6; +wire Mem6z6, Uem6z6, Cfm6z6, Kfm6z6, Sfm6z6, Agm6z6, Igm6z6, Qgm6z6, Ygm6z6, Ghm6z6; +wire Ohm6z6, Whm6z6, Eim6z6, Mim6z6, Uim6z6, Cjm6z6, Kjm6z6, Sjm6z6, Akm6z6, Ikm6z6; +wire Qkm6z6, Ykm6z6, Glm6z6, Olm6z6, Wlm6z6, Emm6z6, Mmm6z6, Umm6z6, Cnm6z6, Knm6z6; +wire Snm6z6, Aom6z6, Iom6z6, Qom6z6, Yom6z6, Gpm6z6, Opm6z6, Wpm6z6, Eqm6z6, Mqm6z6; +wire Uqm6z6, Crm6z6, Krm6z6, Srm6z6, Asm6z6, Ism6z6, Qsm6z6, Ysm6z6, Gtm6z6, Otm6z6; +wire Wtm6z6, Eum6z6, Mum6z6, Uum6z6, Cvm6z6, Kvm6z6, Svm6z6, Awm6z6, Iwm6z6, Qwm6z6; +wire Ywm6z6, Gxm6z6, Oxm6z6, Wxm6z6, Eym6z6, Mym6z6, Uym6z6, Czm6z6, Kzm6z6, Szm6z6; +wire A0n6z6, I0n6z6, Q0n6z6, Y0n6z6, G1n6z6, O1n6z6, W1n6z6, E2n6z6, M2n6z6, U2n6z6; +wire C3n6z6, K3n6z6, S3n6z6, A4n6z6, I4n6z6, Q4n6z6, Y4n6z6, G5n6z6, O5n6z6, W5n6z6; +wire E6n6z6, M6n6z6, U6n6z6, C7n6z6, K7n6z6, S7n6z6, A8n6z6, I8n6z6, Q8n6z6, Y8n6z6; +wire G9n6z6, O9n6z6, W9n6z6, Ean6z6, Man6z6, Uan6z6, Cbn6z6, Kbn6z6, Sbn6z6, Acn6z6; +wire Icn6z6, Qcn6z6, Ycn6z6, Gdn6z6, Odn6z6, Wdn6z6, Een6z6, Men6z6, Uen6z6, Cfn6z6; +wire Kfn6z6, Sfn6z6, Agn6z6, Ign6z6, Qgn6z6, Ygn6z6, Ghn6z6, Ohn6z6, Whn6z6, Ein6z6; +wire Min6z6, Uin6z6, Cjn6z6, Kjn6z6, Sjn6z6, Akn6z6, Ikn6z6, Qkn6z6, Ykn6z6, Gln6z6; +wire Oln6z6, Wln6z6, Emn6z6, Mmn6z6, Umn6z6, Cnn6z6, Knn6z6, Snn6z6, Aon6z6, Ion6z6; +wire Qon6z6, Yon6z6, Gpn6z6, Opn6z6, Wpn6z6, Eqn6z6, Mqn6z6, Uqn6z6, Crn6z6, Krn6z6; +wire Srn6z6, Asn6z6, Isn6z6, Qsn6z6, Ysn6z6, Gtn6z6, Otn6z6, Wtn6z6, Eun6z6, Mun6z6; +wire Uun6z6, Cvn6z6, Kvn6z6, Svn6z6, Awn6z6, Iwn6z6, Qwn6z6, Ywn6z6, Gxn6z6, Oxn6z6; +wire Wxn6z6, Eyn6z6, Myn6z6, Uyn6z6, Czn6z6, Kzn6z6, Szn6z6, A0o6z6, I0o6z6, Q0o6z6; +wire Y0o6z6, G1o6z6, O1o6z6, W1o6z6, E2o6z6, M2o6z6, U2o6z6, C3o6z6, K3o6z6, S3o6z6; +wire A4o6z6, I4o6z6, Q4o6z6, Y4o6z6, G5o6z6, O5o6z6, W5o6z6, E6o6z6, M6o6z6, U6o6z6; +wire C7o6z6, K7o6z6, S7o6z6, A8o6z6, I8o6z6, Q8o6z6, Y8o6z6, G9o6z6, O9o6z6, W9o6z6; +wire Eao6z6, Mao6z6, Uao6z6, Cbo6z6, Kbo6z6, Sbo6z6, Aco6z6, Ico6z6, Qco6z6, Yco6z6; +wire Gdo6z6, Odo6z6, Wdo6z6, Eeo6z6, Meo6z6, Ueo6z6, Cfo6z6, Kfo6z6, Sfo6z6, Ago6z6; +wire Igo6z6, Qgo6z6, Ygo6z6, Gho6z6, Oho6z6, Who6z6, Eio6z6, Mio6z6, Uio6z6, Cjo6z6; +wire Kjo6z6, Sjo6z6, Ako6z6, Iko6z6, Qko6z6, Yko6z6, Glo6z6, Olo6z6, Wlo6z6, Emo6z6; +wire Mmo6z6, Umo6z6, Cno6z6, Kno6z6, Sno6z6, Aoo6z6, Ioo6z6, Qoo6z6, Yoo6z6, Gpo6z6; +wire Opo6z6, Wpo6z6, Eqo6z6, Mqo6z6, Uqo6z6, Cro6z6, Kro6z6, Sro6z6, Aso6z6, Iso6z6; +wire Qso6z6, Yso6z6, Gto6z6, Oto6z6, Wto6z6, Euo6z6, Muo6z6, Uuo6z6, Cvo6z6, Kvo6z6; +wire Svo6z6, Awo6z6, Iwo6z6, Qwo6z6, Ywo6z6, Gxo6z6, Oxo6z6, Wxo6z6, Eyo6z6, Myo6z6; +wire Uyo6z6, Czo6z6, Kzo6z6, Szo6z6, A0p6z6, I0p6z6, Q0p6z6, Y0p6z6, G1p6z6, O1p6z6; +wire W1p6z6, E2p6z6, M2p6z6, U2p6z6, C3p6z6, K3p6z6, S3p6z6, A4p6z6, I4p6z6, Q4p6z6; +wire Y4p6z6, G5p6z6, O5p6z6, W5p6z6, E6p6z6, M6p6z6, U6p6z6, C7p6z6, K7p6z6, S7p6z6; +wire A8p6z6, I8p6z6, Q8p6z6, Y8p6z6, G9p6z6, O9p6z6, W9p6z6, Eap6z6, Map6z6, Uap6z6; +wire Cbp6z6, Kbp6z6, Sbp6z6, Acp6z6, Icp6z6, Qcp6z6, Ycp6z6, Gdp6z6, Odp6z6, Wdp6z6; +wire Eep6z6, Mep6z6, Uep6z6, Cfp6z6, Kfp6z6, Sfp6z6, Agp6z6, Igp6z6, Qgp6z6, Ygp6z6; +wire Ghp6z6, Ohp6z6, Whp6z6, Eip6z6, Mip6z6, Uip6z6, Cjp6z6, Kjp6z6, Sjp6z6, Akp6z6; +wire Ikp6z6, Qkp6z6, Ykp6z6, Glp6z6, Olp6z6, Wlp6z6, Emp6z6, Mmp6z6, Ump6z6, Cnp6z6; +wire Knp6z6, Snp6z6, Aop6z6, Iop6z6, Qop6z6, Yop6z6, Gpp6z6, Opp6z6, Wpp6z6, Eqp6z6; +wire Mqp6z6, Uqp6z6, Crp6z6, Krp6z6, Srp6z6, Asp6z6, Isp6z6, Qsp6z6, Ysp6z6, Gtp6z6; +wire Otp6z6, Wtp6z6, Eup6z6, Mup6z6, Uup6z6, Cvp6z6, Kvp6z6, Svp6z6, Awp6z6, Iwp6z6; +wire Qwp6z6, Ywp6z6, Gxp6z6, Oxp6z6, Wxp6z6, Eyp6z6, Myp6z6, Uyp6z6, Czp6z6, Kzp6z6; +wire Szp6z6, A0q6z6, I0q6z6, Q0q6z6, Y0q6z6, G1q6z6, O1q6z6, W1q6z6, E2q6z6, M2q6z6; +wire U2q6z6, C3q6z6, K3q6z6, S3q6z6, A4q6z6, I4q6z6, Q4q6z6, Y4q6z6, G5q6z6, O5q6z6; +wire W5q6z6, E6q6z6, M6q6z6, U6q6z6, C7q6z6, K7q6z6, S7q6z6, A8q6z6, I8q6z6, Q8q6z6; +wire Y8q6z6, G9q6z6, O9q6z6, W9q6z6, Eaq6z6, Maq6z6, Uaq6z6, Cbq6z6, Kbq6z6, Sbq6z6; +wire Acq6z6, Icq6z6, Qcq6z6, Ycq6z6, Gdq6z6, Odq6z6, Wdq6z6, Eeq6z6, Meq6z6, Ueq6z6; +wire Cfq6z6, Kfq6z6, Sfq6z6, Agq6z6, Igq6z6, Qgq6z6, Ygq6z6, Ghq6z6, Ohq6z6, Whq6z6; +wire Eiq6z6, Miq6z6, Uiq6z6, Cjq6z6, Kjq6z6, Sjq6z6, Akq6z6, Ikq6z6, Qkq6z6, Ykq6z6; +wire Glq6z6, Olq6z6, Wlq6z6, Emq6z6, Mmq6z6, Umq6z6, Cnq6z6, Knq6z6, Snq6z6, Aoq6z6; +wire Ioq6z6, Qoq6z6, Yoq6z6, Gpq6z6, Opq6z6, Wpq6z6, Eqq6z6, Mqq6z6, Uqq6z6, Crq6z6; +wire Krq6z6, Srq6z6, Asq6z6, Isq6z6, Qsq6z6, Ysq6z6, Gtq6z6, Otq6z6, Wtq6z6, Euq6z6; +wire Muq6z6, Uuq6z6, Cvq6z6, Kvq6z6, Svq6z6, Awq6z6, Iwq6z6, Qwq6z6, Ywq6z6, Gxq6z6; +wire Oxq6z6, Wxq6z6, Eyq6z6, Myq6z6, Uyq6z6, Czq6z6, Kzq6z6, Szq6z6, A0r6z6, I0r6z6; +wire Q0r6z6, Y0r6z6, G1r6z6, O1r6z6, W1r6z6, E2r6z6, M2r6z6, U2r6z6, C3r6z6, K3r6z6; +wire S3r6z6, A4r6z6, I4r6z6, Q4r6z6, Y4r6z6, G5r6z6, O5r6z6, W5r6z6, E6r6z6, M6r6z6; +wire U6r6z6, C7r6z6, K7r6z6, S7r6z6, A8r6z6, I8r6z6, Q8r6z6, Y8r6z6, G9r6z6, O9r6z6; +wire W9r6z6, Ear6z6, Mar6z6, Uar6z6, Cbr6z6, Kbr6z6, Sbr6z6, Acr6z6, Icr6z6, Qcr6z6; +wire Ycr6z6, Gdr6z6, Odr6z6, Wdr6z6, Eer6z6, Mer6z6, Uer6z6, Cfr6z6, Kfr6z6, Sfr6z6; +wire Agr6z6, Igr6z6, Qgr6z6, Ygr6z6, Ghr6z6, Ohr6z6, Whr6z6, Eir6z6, Mir6z6, Uir6z6; +wire Cjr6z6, Kjr6z6, Sjr6z6, Akr6z6, Ikr6z6, Qkr6z6, Ykr6z6, Glr6z6, Olr6z6, Wlr6z6; +wire Emr6z6, Mmr6z6, Umr6z6, Cnr6z6, Knr6z6, Snr6z6, Aor6z6, Ior6z6, Qor6z6, Yor6z6; +wire Gpr6z6, Opr6z6, Wpr6z6, Eqr6z6, Mqr6z6, Uqr6z6, Crr6z6, Krr6z6, Srr6z6, Asr6z6; +wire Isr6z6, Qsr6z6, Ysr6z6, Gtr6z6, Otr6z6, Wtr6z6, Eur6z6, Mur6z6, Uur6z6, Cvr6z6; +wire Kvr6z6, Svr6z6, Awr6z6, Iwr6z6, Qwr6z6, Ywr6z6, Gxr6z6, Oxr6z6, Wxr6z6, Eyr6z6; +wire Myr6z6, Uyr6z6, Czr6z6, Kzr6z6, Szr6z6, A0s6z6, I0s6z6, Q0s6z6, Y0s6z6, G1s6z6; +wire O1s6z6, W1s6z6, E2s6z6, M2s6z6, U2s6z6, C3s6z6, K3s6z6, S3s6z6, A4s6z6, I4s6z6; +wire Q4s6z6, Y4s6z6, G5s6z6, O5s6z6, W5s6z6, E6s6z6, M6s6z6, U6s6z6, C7s6z6, K7s6z6; +wire S7s6z6, A8s6z6, I8s6z6, Q8s6z6, Y8s6z6, G9s6z6, O9s6z6, W9s6z6, Eas6z6, Mas6z6; +wire Uas6z6, Cbs6z6, Kbs6z6, Sbs6z6, Acs6z6, Ics6z6, Qcs6z6, Ycs6z6, Gds6z6, Ods6z6; +wire Wds6z6, Ees6z6, Mes6z6, Ues6z6, Cfs6z6, Kfs6z6, Sfs6z6, Ags6z6, Igs6z6, Qgs6z6; +wire Ygs6z6, Ghs6z6, Ohs6z6, Whs6z6, Eis6z6, Mis6z6, Uis6z6, Cjs6z6, Kjs6z6, Sjs6z6; +wire Aks6z6, Iks6z6, Qks6z6, Yks6z6, Gls6z6, Ols6z6, Wls6z6, Ems6z6, Mms6z6, Ums6z6; +wire Cns6z6, Kns6z6, Sns6z6, Aos6z6, Ios6z6, Qos6z6, Yos6z6, Gps6z6, Ops6z6, Wps6z6; +wire Eqs6z6, Mqs6z6, Uqs6z6, Crs6z6, Krs6z6, Srs6z6, Ass6z6, Iss6z6, Qss6z6, Yss6z6; +wire Gts6z6, Ots6z6, Wts6z6, Eus6z6, Mus6z6, Uus6z6, Cvs6z6, Kvs6z6, Svs6z6, Aws6z6; +wire Iws6z6, Qws6z6, Yws6z6, Gxs6z6, Oxs6z6, Wxs6z6, Eys6z6, Mys6z6, Uys6z6, Czs6z6; +wire Kzs6z6, Szs6z6, A0t6z6, I0t6z6, Q0t6z6, Y0t6z6, G1t6z6, O1t6z6, W1t6z6, E2t6z6; +wire M2t6z6, U2t6z6, C3t6z6, K3t6z6, S3t6z6, A4t6z6, I4t6z6, Q4t6z6, Y4t6z6, G5t6z6; +wire O5t6z6, W5t6z6, E6t6z6, M6t6z6, U6t6z6, C7t6z6, K7t6z6, S7t6z6, A8t6z6, I8t6z6; +wire Q8t6z6, Y8t6z6, G9t6z6, O9t6z6, W9t6z6, Eat6z6, Mat6z6, Uat6z6, Cbt6z6, Kbt6z6; +wire Sbt6z6, Act6z6, Ict6z6, Qct6z6, Yct6z6, Gdt6z6, Odt6z6, Wdt6z6, Eet6z6, Met6z6; +wire Uet6z6, Cft6z6, Kft6z6, Sft6z6, Agt6z6, Igt6z6, Qgt6z6, Ygt6z6, Ght6z6, Oht6z6; +wire Wht6z6, Eit6z6, Mit6z6, Uit6z6, Cjt6z6, Kjt6z6, Sjt6z6, Akt6z6, Ikt6z6, Qkt6z6; +wire Ykt6z6, Glt6z6, Olt6z6, Wlt6z6, Emt6z6, Mmt6z6, Umt6z6, Cnt6z6, Knt6z6, Snt6z6; +wire Aot6z6, Iot6z6, Qot6z6, Yot6z6, Gpt6z6, Opt6z6, Wpt6z6, Eqt6z6, Mqt6z6, Uqt6z6; +wire Crt6z6, Krt6z6, Srt6z6, Ast6z6, Ist6z6, Qst6z6, Yst6z6, Gtt6z6, Ott6z6, Wtt6z6; +wire Eut6z6, Mut6z6, Uut6z6, Cvt6z6, Kvt6z6, Svt6z6, Awt6z6, Iwt6z6, Qwt6z6, Ywt6z6; +wire Gxt6z6, Oxt6z6, Wxt6z6, Eyt6z6, Myt6z6, Uyt6z6, Czt6z6, Kzt6z6, Szt6z6, A0u6z6; +wire I0u6z6, Q0u6z6, Y0u6z6, G1u6z6, O1u6z6, W1u6z6, E2u6z6, M2u6z6, U2u6z6, C3u6z6; +wire K3u6z6, S3u6z6, A4u6z6, I4u6z6, Q4u6z6, Y4u6z6, G5u6z6, O5u6z6, W5u6z6, E6u6z6; +wire M6u6z6, U6u6z6, C7u6z6, K7u6z6, S7u6z6, A8u6z6, I8u6z6, Q8u6z6, Y8u6z6, G9u6z6; +wire O9u6z6, W9u6z6, Eau6z6, Mau6z6, Uau6z6, Cbu6z6, Kbu6z6, Sbu6z6, Acu6z6, Icu6z6; +wire Qcu6z6, Ycu6z6, Gdu6z6, Odu6z6, Wdu6z6, Eeu6z6, Meu6z6, Ueu6z6, Cfu6z6, Kfu6z6; +wire Sfu6z6, Agu6z6, Igu6z6, Qgu6z6, Ygu6z6, Ghu6z6, Ohu6z6, Whu6z6, Eiu6z6, Miu6z6; +wire Uiu6z6, Cju6z6, Kju6z6, Sju6z6, Aku6z6, Iku6z6, Qku6z6, Yku6z6, Glu6z6, Olu6z6; +wire Wlu6z6, Emu6z6, Mmu6z6, Umu6z6, Cnu6z6, Knu6z6, Snu6z6, Aou6z6, Iou6z6, Qou6z6; +wire You6z6, Gpu6z6, Opu6z6, Wpu6z6, Equ6z6, Mqu6z6, Uqu6z6, Cru6z6, Kru6z6, Sru6z6; +wire Asu6z6, Isu6z6, Qsu6z6, Ysu6z6, Gtu6z6, Otu6z6, Wtu6z6, Euu6z6, Muu6z6, Uuu6z6; +wire Cvu6z6, Kvu6z6, Svu6z6, Awu6z6, Iwu6z6, Qwu6z6, Ywu6z6, Gxu6z6, Oxu6z6, Wxu6z6; +wire Eyu6z6, Myu6z6, Uyu6z6, Czu6z6, Kzu6z6, Szu6z6, A0v6z6, I0v6z6, Q0v6z6, Y0v6z6; +wire G1v6z6, O1v6z6, W1v6z6, E2v6z6, M2v6z6, U2v6z6, C3v6z6, K3v6z6, S3v6z6, A4v6z6; +wire I4v6z6, Q4v6z6, Y4v6z6, G5v6z6, O5v6z6, W5v6z6, E6v6z6, M6v6z6, U6v6z6, C7v6z6; +wire K7v6z6, S7v6z6, A8v6z6, I8v6z6, Q8v6z6, Y8v6z6, G9v6z6, O9v6z6, W9v6z6, Eav6z6; +wire Mav6z6, Uav6z6, Cbv6z6, Kbv6z6, Sbv6z6, Acv6z6, Icv6z6, Qcv6z6, Ycv6z6, Gdv6z6; +wire Odv6z6, Wdv6z6, Eev6z6, Mev6z6, Uev6z6, Cfv6z6, Kfv6z6, Sfv6z6, Agv6z6, Igv6z6; +wire Qgv6z6, Ygv6z6, Ghv6z6, Ohv6z6, Whv6z6, Eiv6z6, Miv6z6, Uiv6z6, Cjv6z6, Kjv6z6; +wire Sjv6z6, Akv6z6, Ikv6z6, Qkv6z6, Ykv6z6, Glv6z6, Olv6z6, Wlv6z6, Emv6z6, Mmv6z6; +wire Umv6z6, Cnv6z6, Knv6z6, Snv6z6, Aov6z6, Iov6z6, Qov6z6, Yov6z6, Gpv6z6, Opv6z6; +wire Wpv6z6, Eqv6z6, Mqv6z6, Uqv6z6, Crv6z6, Krv6z6, Srv6z6, Asv6z6, Isv6z6, Qsv6z6; +wire Ysv6z6, Gtv6z6, Otv6z6, Wtv6z6, Euv6z6, Muv6z6, Uuv6z6, Cvv6z6, Kvv6z6, Svv6z6; +wire Awv6z6, Iwv6z6, Qwv6z6, Ywv6z6, Gxv6z6, Oxv6z6, Wxv6z6, Eyv6z6, Myv6z6, Uyv6z6; +wire Czv6z6, Kzv6z6, Szv6z6, A0w6z6, I0w6z6, Q0w6z6, Y0w6z6, G1w6z6, O1w6z6, W1w6z6; +wire E2w6z6, M2w6z6, U2w6z6, C3w6z6, K3w6z6, S3w6z6, A4w6z6, I4w6z6, Q4w6z6, Y4w6z6; +wire G5w6z6, O5w6z6, W5w6z6, E6w6z6, M6w6z6, U6w6z6, C7w6z6, K7w6z6, S7w6z6, A8w6z6; +wire I8w6z6, Q8w6z6, Y8w6z6, G9w6z6, O9w6z6, W9w6z6, Eaw6z6, Maw6z6, Uaw6z6, Cbw6z6; +wire Kbw6z6, Sbw6z6, Acw6z6, Icw6z6, Qcw6z6, Ycw6z6, Gdw6z6, Odw6z6, Wdw6z6, Eew6z6; +wire Mew6z6, Uew6z6, Cfw6z6, Kfw6z6, Sfw6z6, Agw6z6, Igw6z6, Qgw6z6, Ygw6z6, Ghw6z6; +wire Ohw6z6, Whw6z6, Eiw6z6, Miw6z6, Uiw6z6, Cjw6z6, Kjw6z6, Sjw6z6, Akw6z6, Ikw6z6; +wire Qkw6z6, Ykw6z6, Glw6z6, Olw6z6, Wlw6z6, Emw6z6, Mmw6z6, Umw6z6, Cnw6z6, Knw6z6; +wire Snw6z6, Aow6z6, Iow6z6, Qow6z6, Yow6z6, Gpw6z6, Opw6z6, Wpw6z6, Eqw6z6, Mqw6z6; +wire Uqw6z6, Crw6z6, Krw6z6, Srw6z6, Asw6z6, Isw6z6, Qsw6z6, Ysw6z6, Gtw6z6, Otw6z6; +wire Wtw6z6, Euw6z6, Muw6z6, Uuw6z6, Cvw6z6, Kvw6z6, Svw6z6, Aww6z6, Iww6z6, Qww6z6; +wire Yww6z6, Gxw6z6, Oxw6z6, Wxw6z6, Eyw6z6, Myw6z6, Uyw6z6, Czw6z6, Kzw6z6, Szw6z6; +wire A0x6z6, I0x6z6, Q0x6z6, Y0x6z6, G1x6z6, O1x6z6, W1x6z6, E2x6z6, M2x6z6, U2x6z6; +wire C3x6z6, K3x6z6, S3x6z6, A4x6z6, I4x6z6, Q4x6z6, Y4x6z6, G5x6z6, O5x6z6, W5x6z6; +wire E6x6z6, M6x6z6, U6x6z6, C7x6z6, K7x6z6, S7x6z6, A8x6z6, I8x6z6, Q8x6z6, Y8x6z6; +wire G9x6z6, O9x6z6, W9x6z6, Eax6z6, Max6z6, Uax6z6, Cbx6z6, Kbx6z6, Sbx6z6, Acx6z6; +wire Icx6z6, Qcx6z6, Ycx6z6, Gdx6z6, Odx6z6, Wdx6z6, Eex6z6, Mex6z6, Uex6z6, Cfx6z6; +wire Kfx6z6, Sfx6z6, Agx6z6, Igx6z6, Qgx6z6, Ygx6z6, Ghx6z6, Ohx6z6, Whx6z6, Eix6z6; +wire Mix6z6, Uix6z6, Cjx6z6, Kjx6z6, Sjx6z6, Akx6z6, Ikx6z6, Qkx6z6, Ykx6z6, Glx6z6; +wire Olx6z6, Wlx6z6, Emx6z6, Mmx6z6, Umx6z6, Cnx6z6, Knx6z6, Snx6z6, Aox6z6, Iox6z6; +wire Qox6z6, Yox6z6, Gpx6z6, Opx6z6, Wpx6z6, Eqx6z6, Mqx6z6, Uqx6z6, Crx6z6, Krx6z6; +wire Srx6z6, Asx6z6, Isx6z6, Qsx6z6, Ysx6z6, Gtx6z6, Otx6z6, Wtx6z6, Eux6z6, Mux6z6; +wire Uux6z6, Cvx6z6, Kvx6z6, Svx6z6, Awx6z6, Iwx6z6, Qwx6z6, Ywx6z6, Gxx6z6, Oxx6z6; +wire Wxx6z6, Eyx6z6, Myx6z6, Uyx6z6, Czx6z6, Kzx6z6, Szx6z6, A0y6z6, I0y6z6, Q0y6z6; +wire Y0y6z6, G1y6z6, O1y6z6, W1y6z6, E2y6z6, M2y6z6, U2y6z6, C3y6z6, K3y6z6, S3y6z6; +wire A4y6z6, I4y6z6, Q4y6z6, Y4y6z6, G5y6z6, O5y6z6, W5y6z6, E6y6z6, M6y6z6, U6y6z6; +wire C7y6z6, K7y6z6, S7y6z6, A8y6z6, I8y6z6, Q8y6z6, Y8y6z6, G9y6z6, O9y6z6, W9y6z6; +wire Eay6z6, May6z6, Uay6z6, Cby6z6, Kby6z6, Sby6z6, Acy6z6, Icy6z6, Qcy6z6, Ycy6z6; +wire Gdy6z6, Ody6z6, Wdy6z6, Eey6z6, Mey6z6, Uey6z6, Cfy6z6, Kfy6z6, Sfy6z6, Agy6z6; +wire Igy6z6, Qgy6z6, Ygy6z6, Ghy6z6, Ohy6z6, Why6z6, Eiy6z6, Miy6z6, Uiy6z6, Cjy6z6; +wire Kjy6z6, Sjy6z6, Aky6z6, Iky6z6, Qky6z6, Yky6z6, Gly6z6, Oly6z6, Wly6z6, Emy6z6; +wire Mmy6z6, Umy6z6, Cny6z6, Kny6z6, Sny6z6, Aoy6z6, Ioy6z6, Qoy6z6, Yoy6z6, Gpy6z6; +wire Opy6z6, Wpy6z6, Eqy6z6, Mqy6z6, Uqy6z6, Cry6z6, Kry6z6, Sry6z6, Asy6z6, Isy6z6; +wire Qsy6z6, Ysy6z6, Gty6z6, Oty6z6, Wty6z6, Euy6z6, Muy6z6, Uuy6z6, Cvy6z6, Kvy6z6; +wire Svy6z6, Awy6z6, Iwy6z6, Qwy6z6, Ywy6z6, Gxy6z6, Oxy6z6, Wxy6z6, Eyy6z6, Myy6z6; +wire Uyy6z6, Czy6z6, Kzy6z6, Szy6z6, A0z6z6, I0z6z6, Q0z6z6, Y0z6z6, G1z6z6, O1z6z6; +wire W1z6z6, E2z6z6, M2z6z6, U2z6z6, C3z6z6, K3z6z6, S3z6z6, A4z6z6, I4z6z6, Q4z6z6; +wire Y4z6z6, G5z6z6, O5z6z6, W5z6z6, E6z6z6, M6z6z6, U6z6z6, C7z6z6, K7z6z6, S7z6z6; +wire A8z6z6, I8z6z6, Q8z6z6, Y8z6z6, G9z6z6, O9z6z6, W9z6z6, Eaz6z6, Maz6z6, Uaz6z6; +wire Cbz6z6, Kbz6z6, Sbz6z6, Acz6z6, Icz6z6, Qcz6z6, Ycz6z6, Gdz6z6, Odz6z6, Wdz6z6; +wire Eez6z6, Mez6z6, Uez6z6, Cfz6z6, Kfz6z6, Sfz6z6, Agz6z6, Igz6z6, Qgz6z6, Ygz6z6; +wire Ghz6z6, Ohz6z6, Whz6z6, Eiz6z6, Miz6z6, Uiz6z6, Cjz6z6, Kjz6z6, Sjz6z6, Akz6z6; +wire Ikz6z6, Qkz6z6, Ykz6z6, Glz6z6, Olz6z6, Wlz6z6, Emz6z6, Mmz6z6, Umz6z6, Cnz6z6; +wire Knz6z6, Snz6z6, Aoz6z6, Ioz6z6, Qoz6z6, Yoz6z6, Gpz6z6, Opz6z6, Wpz6z6, Eqz6z6; +wire Mqz6z6, Uqz6z6, Crz6z6, Krz6z6, Srz6z6, Asz6z6, Isz6z6, Qsz6z6, Ysz6z6, Gtz6z6; +wire Otz6z6, Wtz6z6, Euz6z6, Muz6z6, Uuz6z6, Cvz6z6, Kvz6z6, Svz6z6, Awz6z6, Iwz6z6; +wire Qwz6z6, Ywz6z6, Gxz6z6, Oxz6z6, Wxz6z6, Eyz6z6, Myz6z6, Uyz6z6, Czz6z6, Kzz6z6; +wire Szz6z6, A007z6, I007z6, Q007z6, Y007z6, G107z6, O107z6, W107z6, E207z6, M207z6; +wire U207z6, C307z6, K307z6, S307z6, A407z6, I407z6, Q407z6, Y407z6, G507z6, O507z6; +wire W507z6, E607z6, M607z6, U607z6, C707z6, K707z6, S707z6, A807z6, I807z6, Q807z6; +wire Y807z6, G907z6, O907z6, W907z6, Ea07z6, Ma07z6, Ua07z6, Cb07z6, Kb07z6, Sb07z6; +wire Ac07z6, Ic07z6, Qc07z6, Yc07z6, Gd07z6, Od07z6, Wd07z6, Ee07z6, Me07z6, Ue07z6; +wire Cf07z6, Kf07z6, Sf07z6, Ag07z6, Ig07z6, Qg07z6, Yg07z6, Gh07z6, Oh07z6, Wh07z6; +wire Ei07z6, Mi07z6, Ui07z6, Cj07z6, Kj07z6, Sj07z6, Ak07z6, Ik07z6, Qk07z6, Yk07z6; +wire Gl07z6, Ol07z6, Wl07z6, Em07z6, Mm07z6, Um07z6, Cn07z6, Kn07z6, Sn07z6, Ao07z6; +wire Io07z6, Qo07z6, Yo07z6, Gp07z6, Op07z6, Wp07z6, Eq07z6, Mq07z6, Uq07z6, Cr07z6; +wire Kr07z6, Sr07z6, As07z6, Is07z6, Qs07z6, Ys07z6, Gt07z6, Ot07z6, Wt07z6, Eu07z6; +wire Mu07z6, Uu07z6, Cv07z6, Kv07z6, Sv07z6, Aw07z6, Iw07z6, Qw07z6, Yw07z6, Gx07z6; +wire Ox07z6, Wx07z6, Ey07z6, My07z6, Uy07z6, Cz07z6, Kz07z6, Sz07z6, A017z6, I017z6; +wire Q017z6, Y017z6, G117z6, O117z6, W117z6, E217z6, M217z6, U217z6, C317z6, K317z6; +wire S317z6, A417z6, I417z6, Q417z6, Y417z6, G517z6, O517z6, W517z6, E617z6, M617z6; +wire U617z6, C717z6, K717z6, S717z6, A817z6, I817z6, Q817z6, Y817z6, G917z6, O917z6; +wire W917z6, Ea17z6, Ma17z6, Ua17z6, Cb17z6, Kb17z6, Sb17z6, Ac17z6, Ic17z6, Qc17z6; +wire Yc17z6, Gd17z6, Od17z6, Wd17z6, Ee17z6, Me17z6, Ue17z6, Cf17z6, Kf17z6, Sf17z6; +wire Ag17z6, Ig17z6, Qg17z6, Yg17z6, Gh17z6, Oh17z6, Wh17z6, Ei17z6, Mi17z6, Ui17z6; +wire Cj17z6, Kj17z6, Sj17z6, Ak17z6, Ik17z6, Qk17z6, Yk17z6, Gl17z6, Ol17z6, Wl17z6; +wire Em17z6, Mm17z6, Um17z6, Cn17z6, Kn17z6, Sn17z6, Ao17z6, Io17z6, Qo17z6, Yo17z6; +wire Gp17z6, Op17z6, Wp17z6, Eq17z6, Mq17z6, Uq17z6, Cr17z6, Kr17z6, Sr17z6, As17z6; +wire Is17z6, Qs17z6, Ys17z6, Gt17z6, Ot17z6, Wt17z6, Eu17z6, Mu17z6, Uu17z6, Cv17z6; +wire Kv17z6, Sv17z6, Aw17z6, Iw17z6, Qw17z6, Yw17z6, Gx17z6, Ox17z6, Wx17z6, Ey17z6; +wire My17z6, Uy17z6, Cz17z6, Kz17z6, Sz17z6, A027z6, I027z6, Q027z6, Y027z6, G127z6; +wire O127z6, W127z6, E227z6, M227z6, U227z6, C327z6, K327z6, S327z6, A427z6, I427z6; +wire Q427z6, Y427z6, G527z6, O527z6, W527z6, E627z6, M627z6, U627z6, C727z6, K727z6; +wire S727z6, A827z6, I827z6, Q827z6, Y827z6, G927z6, O927z6, W927z6, Ea27z6, Ma27z6; +wire Ua27z6, Cb27z6, Kb27z6, Sb27z6, Ac27z6, Ic27z6, Qc27z6, Yc27z6, Gd27z6, Od27z6; +wire Wd27z6, Ee27z6, Me27z6, Ue27z6, Cf27z6, Kf27z6, Sf27z6, Ag27z6, Ig27z6, Qg27z6; +wire Yg27z6, Gh27z6, Oh27z6, Wh27z6, Ei27z6, Mi27z6, Ui27z6, Cj27z6, Kj27z6, Sj27z6; +wire Ak27z6, Ik27z6, Qk27z6, Yk27z6, Gl27z6, Ol27z6, Wl27z6, Em27z6, Mm27z6, Um27z6; +wire Cn27z6, Kn27z6, Sn27z6, Ao27z6, Io27z6, Qo27z6, Yo27z6, Gp27z6, Op27z6, Wp27z6; +wire Eq27z6, Mq27z6, Uq27z6, Cr27z6, Kr27z6, Sr27z6, As27z6, Is27z6, Qs27z6, Ys27z6; +wire Gt27z6, Ot27z6, Wt27z6, Eu27z6, Mu27z6, Uu27z6, Cv27z6, Kv27z6, Sv27z6, Aw27z6; +wire Iw27z6, Qw27z6, Yw27z6, Gx27z6, Ox27z6, Wx27z6, Ey27z6, My27z6, Uy27z6, Cz27z6; +wire Kz27z6, Sz27z6, A037z6, I037z6, Q037z6, Y037z6, G137z6, O137z6, W137z6, E237z6; +wire M237z6, U237z6, C337z6, K337z6, S337z6, A437z6, I437z6, Q437z6, Y437z6, G537z6; +wire O537z6, W537z6, E637z6, M637z6, U637z6, C737z6, K737z6, S737z6, A837z6, I837z6; +wire Q837z6, Y837z6, G937z6, O937z6, W937z6, Ea37z6, Ma37z6, Ua37z6, Cb37z6, Kb37z6; +wire Sb37z6, Ac37z6, Ic37z6, Qc37z6, Yc37z6, Gd37z6, Od37z6, Wd37z6, Ee37z6, Me37z6; +wire Ue37z6, Cf37z6, Kf37z6, Sf37z6, Ag37z6, Ig37z6, Qg37z6, Yg37z6, Gh37z6, Oh37z6; +wire Wh37z6, Ei37z6, Mi37z6, Ui37z6, Cj37z6, Kj37z6, Sj37z6, Ak37z6, Ik37z6, Qk37z6; +wire Yk37z6, Gl37z6, Ol37z6, Wl37z6, Em37z6, Mm37z6, Um37z6, Cn37z6, Kn37z6, Sn37z6; +wire Ao37z6, Io37z6, Qo37z6, Yo37z6, Gp37z6, Op37z6, Wp37z6, Eq37z6, Mq37z6, Uq37z6; +wire Cr37z6, Kr37z6, Sr37z6, As37z6, Is37z6, Qs37z6, Ys37z6, Gt37z6, Ot37z6, Wt37z6; +wire Eu37z6, Mu37z6, Uu37z6, Cv37z6, Kv37z6, Sv37z6, Aw37z6, Iw37z6, Qw37z6, Yw37z6; +wire Gx37z6, Ox37z6, Wx37z6, Ey37z6, My37z6, Uy37z6, Cz37z6, Kz37z6, Sz37z6, A047z6; +wire I047z6, Q047z6, Y047z6, G147z6, O147z6, W147z6, E247z6, M247z6, U247z6, C347z6; +wire K347z6, S347z6, A447z6, I447z6, Q447z6, Y447z6, G547z6, O547z6, W547z6, E647z6; +wire M647z6, U647z6, C747z6, K747z6, S747z6, A847z6, I847z6, Q847z6, Y847z6, G947z6; +wire O947z6, W947z6, Ea47z6, Ma47z6, Ua47z6, Cb47z6, Kb47z6, Sb47z6, Ac47z6, Ic47z6; +wire Qc47z6, Yc47z6, Gd47z6, Od47z6, Wd47z6, Ee47z6, Me47z6, Ue47z6, Cf47z6, Kf47z6; +wire Sf47z6, Ag47z6, Ig47z6, Qg47z6, Yg47z6, Gh47z6, Oh47z6, Wh47z6, Ei47z6, Mi47z6; +wire Ui47z6, Cj47z6, Kj47z6, Sj47z6, Ak47z6, Ik47z6, Qk47z6, Yk47z6, Gl47z6, Ol47z6; +wire Wl47z6, Em47z6, Mm47z6, Um47z6, Cn47z6, Kn47z6, Sn47z6, Ao47z6, Io47z6, Qo47z6; +wire Yo47z6, Gp47z6, Op47z6, Wp47z6, Eq47z6, Mq47z6, Uq47z6, Cr47z6, Kr47z6, Sr47z6; +wire As47z6, Is47z6, Qs47z6, Ys47z6, Gt47z6, Ot47z6, Wt47z6, Eu47z6, Mu47z6, Uu47z6; +wire Cv47z6, Kv47z6, Sv47z6, Aw47z6, Iw47z6, Qw47z6, Yw47z6, Gx47z6, Ox47z6, Wx47z6; +wire Ey47z6, My47z6, Uy47z6, Cz47z6, Kz47z6, Sz47z6, A057z6, I057z6, Q057z6, Y057z6; +wire G157z6, O157z6, W157z6, E257z6, M257z6, U257z6, C357z6, K357z6, S357z6, A457z6; +wire I457z6, Q457z6, Y457z6, G557z6, O557z6, W557z6, E657z6, M657z6, U657z6, C757z6; +wire K757z6, S757z6, A857z6, I857z6, Q857z6, Y857z6, G957z6, O957z6, W957z6, Ea57z6; +wire Ma57z6, Ua57z6, Cb57z6, Kb57z6, Sb57z6, Ac57z6, Ic57z6, Qc57z6, Yc57z6, Gd57z6; +wire Od57z6, Wd57z6, Ee57z6, Me57z6, Ue57z6, Cf57z6, Kf57z6, Sf57z6, Ag57z6, Ig57z6; +wire Qg57z6, Yg57z6, Gh57z6, Oh57z6, Wh57z6, Ei57z6, Mi57z6, Ui57z6, Cj57z6, Kj57z6; +wire Sj57z6, Ak57z6, Ik57z6, Qk57z6, Yk57z6, Gl57z6, Ol57z6, Wl57z6, Em57z6, Mm57z6; +wire Um57z6, Cn57z6, Kn57z6, Sn57z6, Ao57z6, Io57z6, Qo57z6, Yo57z6, Gp57z6, Op57z6; +wire Wp57z6, Eq57z6, Mq57z6, Uq57z6, Cr57z6, Kr57z6, Sr57z6, As57z6, Is57z6, Qs57z6; +wire Ys57z6, Gt57z6, Ot57z6, Wt57z6, Eu57z6, Mu57z6, Uu57z6, Cv57z6, Kv57z6, Sv57z6; +wire Aw57z6, Iw57z6, Qw57z6, Yw57z6, Gx57z6, Ox57z6, Wx57z6, Ey57z6, My57z6, Uy57z6; +wire Cz57z6, Kz57z6, Sz57z6, A067z6, I067z6, Q067z6, Y067z6, G167z6, O167z6, W167z6; +wire E267z6, M267z6, U267z6, C367z6, K367z6, S367z6, A467z6, I467z6, Q467z6, Y467z6; +wire G567z6, O567z6, W567z6, E667z6, M667z6, U667z6, C767z6, K767z6, S767z6, A867z6; +wire I867z6, Q867z6, Y867z6, G967z6, O967z6, W967z6, Ea67z6, Ma67z6, Ua67z6, Cb67z6; +wire Kb67z6, Sb67z6, Ac67z6, Ic67z6, Qc67z6, Yc67z6, Gd67z6, Od67z6, Wd67z6, Ee67z6; +wire Me67z6, Ue67z6, Cf67z6, Kf67z6, Sf67z6, Ag67z6, Ig67z6, Qg67z6, Yg67z6, Gh67z6; +wire Oh67z6, Wh67z6, Ei67z6, Mi67z6, Ui67z6, Cj67z6, Kj67z6, Sj67z6, Ak67z6, Ik67z6; +wire Qk67z6, Yk67z6, Gl67z6, Ol67z6, Wl67z6, Em67z6, Mm67z6, Um67z6, Cn67z6, Kn67z6; +wire Sn67z6, Ao67z6, Io67z6, Qo67z6, Yo67z6, Gp67z6, Op67z6, Wp67z6, Eq67z6, Mq67z6; +wire Uq67z6, Cr67z6, Kr67z6, Sr67z6, As67z6, Is67z6, Qs67z6, Ys67z6, Gt67z6, Ot67z6; +wire Wt67z6, Eu67z6, Mu67z6, Uu67z6, Cv67z6, Kv67z6, Sv67z6, Aw67z6, Iw67z6, Qw67z6; +wire Yw67z6, Gx67z6, Ox67z6, Wx67z6, Ey67z6, My67z6, Uy67z6, Cz67z6, Kz67z6, Sz67z6; +wire A077z6, I077z6, Q077z6, Y077z6, G177z6, O177z6, W177z6, E277z6, M277z6, U277z6; +wire C377z6, K377z6, S377z6, A477z6, I477z6, Q477z6, Y477z6, G577z6, O577z6, W577z6; +wire E677z6, M677z6, U677z6, C777z6, K777z6, S777z6, A877z6, I877z6, Q877z6, Y877z6; +wire G977z6, O977z6, W977z6, Ea77z6, Ma77z6, Ua77z6, Cb77z6, Kb77z6, Sb77z6, Ac77z6; +wire Ic77z6, Qc77z6, Yc77z6, Gd77z6, Od77z6, Wd77z6, Ee77z6, Me77z6, Ue77z6, Cf77z6; +wire Kf77z6, Sf77z6, Ag77z6, Ig77z6, Qg77z6, Yg77z6, Gh77z6, Oh77z6, Wh77z6, Ei77z6; +wire Mi77z6, Ui77z6, Cj77z6, Kj77z6, Sj77z6, Ak77z6, Ik77z6, Qk77z6, Yk77z6, Gl77z6; +wire Ol77z6, Wl77z6, Em77z6, Mm77z6, Um77z6, Cn77z6, Kn77z6, Sn77z6, Ao77z6, Io77z6; +wire Qo77z6, Yo77z6, Gp77z6, Op77z6, Wp77z6, Eq77z6, Mq77z6, Uq77z6, Cr77z6, Kr77z6; +wire Sr77z6, As77z6, Is77z6, Qs77z6, Ys77z6, Gt77z6, Ot77z6, Wt77z6, Eu77z6, Mu77z6; +wire Uu77z6, Cv77z6, Kv77z6, Sv77z6, Aw77z6, Iw77z6, Qw77z6, Yw77z6, Gx77z6, Ox77z6; +wire Wx77z6, Ey77z6, My77z6, Uy77z6, Cz77z6, Kz77z6, Sz77z6, A087z6, I087z6, Q087z6; +wire Y087z6, G187z6, O187z6, W187z6, E287z6, M287z6, U287z6, C387z6, K387z6, S387z6; +wire A487z6, I487z6, Q487z6, Y487z6, G587z6, O587z6, W587z6, E687z6, M687z6, U687z6; +wire C787z6, K787z6, S787z6, A887z6, I887z6, Q887z6, Y887z6, G987z6, O987z6, W987z6; +wire Ea87z6, Ma87z6, Ua87z6, Cb87z6, Kb87z6, Sb87z6, Ac87z6, Ic87z6, Qc87z6, Yc87z6; +wire Gd87z6, Od87z6, Wd87z6, Ee87z6, Me87z6, Ue87z6, Cf87z6, Kf87z6, Sf87z6, Ag87z6; +wire Ig87z6, Qg87z6, Yg87z6, Gh87z6, Oh87z6, Wh87z6, Ei87z6, Mi87z6, Ui87z6, Cj87z6; +wire Kj87z6, Sj87z6, Ak87z6, Ik87z6, Qk87z6, Yk87z6, Gl87z6, Ol87z6, Wl87z6, Em87z6; +wire Mm87z6, Um87z6, Cn87z6, Kn87z6, Sn87z6, Ao87z6, Io87z6, Qo87z6, Yo87z6, Gp87z6; +wire Op87z6, Wp87z6, Eq87z6, Mq87z6, Uq87z6, Cr87z6, Kr87z6, Sr87z6, As87z6, Is87z6; +wire Qs87z6, Ys87z6, Gt87z6, Ot87z6, Wt87z6, Eu87z6, Mu87z6, Uu87z6, Cv87z6, Kv87z6; +wire Sv87z6, Aw87z6, Iw87z6, Qw87z6, Yw87z6, Gx87z6, Ox87z6, Wx87z6, Ey87z6, My87z6; +wire Uy87z6, Cz87z6, Kz87z6, Sz87z6, A097z6, I097z6, Q097z6, Y097z6, G197z6, O197z6; +wire W197z6, E297z6, M297z6, U297z6, C397z6, K397z6, S397z6, A497z6, I497z6, Q497z6; +wire Y497z6, G597z6, O597z6, W597z6, E697z6, M697z6, U697z6, C797z6, K797z6, S797z6; +wire A897z6, I897z6, Q897z6, Y897z6, G997z6, O997z6, W997z6, Ea97z6, Ma97z6, Ua97z6; +wire Cb97z6, Kb97z6, Sb97z6, Ac97z6, Ic97z6, Qc97z6, Yc97z6, Gd97z6, Od97z6, Wd97z6; +wire Ee97z6, Me97z6, Ue97z6, Cf97z6, Kf97z6, Sf97z6, Ag97z6, Ig97z6, Qg97z6, Yg97z6; +wire Gh97z6, Oh97z6, Wh97z6, Ei97z6, Mi97z6, Ui97z6, Cj97z6, Kj97z6, Sj97z6, Ak97z6; +wire Ik97z6, Qk97z6, Yk97z6, Gl97z6, Ol97z6, Wl97z6, Em97z6, Mm97z6, Um97z6, Cn97z6; +wire Kn97z6, Sn97z6, Ao97z6, Io97z6, Qo97z6, Yo97z6, Gp97z6, Op97z6, Wp97z6, Eq97z6; +wire Mq97z6, Uq97z6, Cr97z6, Kr97z6, Sr97z6, As97z6, Is97z6, Qs97z6, Ys97z6, Gt97z6; +wire Ot97z6, Wt97z6, Eu97z6, Mu97z6, Uu97z6, Cv97z6, Kv97z6, Sv97z6, Aw97z6, Iw97z6; +wire Qw97z6, Yw97z6, Gx97z6, Ox97z6, Wx97z6, Ey97z6, My97z6, Uy97z6, Cz97z6, Kz97z6; +wire Sz97z6, A0a7z6, I0a7z6, Q0a7z6, Y0a7z6, G1a7z6, O1a7z6, W1a7z6, E2a7z6, M2a7z6; +wire U2a7z6, C3a7z6, K3a7z6, S3a7z6, A4a7z6, I4a7z6, Q4a7z6, Y4a7z6, G5a7z6, O5a7z6; +wire W5a7z6, E6a7z6, M6a7z6, U6a7z6, C7a7z6, K7a7z6, S7a7z6, A8a7z6, I8a7z6, Q8a7z6; +wire Y8a7z6, G9a7z6, O9a7z6, W9a7z6, Eaa7z6, Maa7z6, Uaa7z6, Cba7z6, Kba7z6, Sba7z6; +wire Aca7z6, Ica7z6, Qca7z6, Yca7z6, Gda7z6, Oda7z6, Wda7z6, Eea7z6, Mea7z6, Uea7z6; +wire Cfa7z6, Kfa7z6, Sfa7z6, Aga7z6, Iga7z6, Qga7z6, Yga7z6, Gha7z6, Oha7z6, Wha7z6; +wire Eia7z6, Mia7z6, Uia7z6, Cja7z6, Kja7z6, Sja7z6, Aka7z6, Xka7z6, Ula7z6, Rma7z6; +wire Ona7z6, Loa7z6, Ipa7z6, Fqa7z6, Cra7z6, Zra7z6, Xsa7z6, Vta7z6, Tua7z6, Rva7z6; +wire Pwa7z6, Nxa7z6, Lya7z6, Jza7z6, H0b7z6, F1b7z6, D2b7z6, B3b7z6, Z3b7z6, X4b7z6; +wire V5b7z6, T6b7z6, R7b7z6, P8b7z6, N9b7z6, Lab7z6, Jbb7z6, Hcb7z6, Fdb7z6, Deb7z6; +wire Bfb7z6, Zfb7z6, Xgb7z6, Vhb7z6; +wire [63:0] Tib7z6; +wire [66:0] Fjb7z6; +wire [19:2] Pjb7z6; +wire [9:8] Zjb7z6; +wire [2:0] Wkb7z6; +wire [4:0] Tlb7z6; +wire [8:0] Qmb7z6; +wire [31:10] Pnb7z6; +wire [8:0] Nob7z6; +wire [7:5] Ppb7z6; +wire [6:0] Mqb7z6; +wire [1:0] Hrb7z6; +wire [1:0] Gsb7z6; +wire [31:0] Itb7z6; +wire [1:0] Hub7z6; +wire [31:2] Fvb7z6; +wire [5:0] Dwb7z6; +wire [31:0] Kxb7z6; +wire [4:0] Uyb7z6; +wire [1:0] I0c7z6; +wire [31:0] V1c7z6; +wire [4:0] E3c7z6; +wire [3:0] P4c7z6; +wire [4:0] D6c7z6; +wire [8:7] O7c7z6; +wire [3:0] Z8c7z6; +wire [3:0] Oac7z6; +wire [14:3] Ecc7z6; +wire [31:0] Pdc7z6; +wire [31:0] Zec7z6; +wire [3:0] Cgc7z6; +wire [31:5] Fhc7z6; +wire [31:0] Pic7z6; +wire [31:1] Vjc7z6; +wire [31:1] Flc7z6; +wire [2:0] Pmc7z6; +wire [1:0] Lpc7z6; +wire [1:0] Fsc7z6; +wire [31:0] Dvc7z6; +wire [31:0] Byc7z6; +wire [31:2] X0d7z6; +wire [5:0] U3d7z6; +wire [2:0] P6d7z6; +wire [5:0] L9d7z6; +wire [5:0] Gcd7z6; +wire [5:0] Bfd7z6; +wire [31:2] Xhd7z6; +wire [31:1] Wkd7z6; +wire [31:1] Vnd7z6; +wire [22:17] Uqd7z6; +wire [2:1] Osd7z6; +wire [6:0] Gvd7z6; +wire [1:0] Yxd7z6; +wire [5:0] S0e7z6; +wire [1:0] M3e7z6; +wire [1:0] M5e7z6; +wire [1:0] K7e7z6; +wire [2:0] I9e7z6; +wire [4:0] Ibe7z6; +wire [3:0] Ide7z6; +wire [7:3] Mfe7z6; +wire [7:1] Ohe7z6; +wire [31:0] Rje7z6; +wire [7:0] Ple7z6; +wire [1:0] Pne7z6; +wire [5:2] Mpe7z6; +wire [1:0] Fre7z6; +wire [20:0] Dte7z6; +wire [30:0] Cve7z6; +wire [3:0] Xwe7z6; +wire [5:0] Rze7z6; +wire [5:0] K2f7z6; +wire [5:0] D5f7z6; +wire [5:0] S7f7z6; +wire [5:0] Jaf7z6; +wire [3:0] Bdf7z6; +wire [30:0] Uff7z6; +wire [31:0] Kif7z6; +wire [31:0] Alf7z6; +wire [31:0] Onf7z6; +wire [15:0] Cqf7z6; +wire [15:0] Ssf7z6; +wire [15:0] Ivf7z6; +wire [34:0] Yxf7z6; +wire [32:0] L0g7z6; +wire [31:0] X2g7z6; +wire [31:0] J5g7z6; +wire [31:0] V7g7z6; +wire [31:0] Fag7z6; +wire [31:0] Pcg7z6; +wire [32:1] Zfg7z6; +wire [32:1] Jjg7z6; +wire [32:1] Tmg7z6; +wire [32:1] Dqg7z6; +wire [3:0] Ntg7z6; +wire [3:0] Lvg7z6; +wire [3:0] Pxg7z6; +wire [3:0] Nzg7z6; +wire [5:0] Q1h7z6; +wire [1:0] R3h7z6; +wire [3:0] O5h7z6; +wire [3:0] E8h7z6; +wire [5:0] Uah7z6; +wire [1:0] Edh7z6; +wire [1:0] Tfh7z6; +wire [1:0] Kih7z6; +wire [31:0] Zkh7z6; +wire [2:0] Xnh7z6; +wire [31:0] Nqh7z6; +wire [31:0] Fth7z6; +wire [31:0] Vvh7z6; +wire [31:0] Oyh7z6; +wire [31:0] K1i7z6; +wire [9:0] G4i7z6; +wire [1:0] U6i7z6; +wire [9:0] P9i7z6; +wire [1:0] Fci7z6; +wire [3:1] Zei7z6; +wire [31:1] Bhi7z6; +wire [31:1] Eji7z6; +wire [31:1] Gli7z6; +wire [31:1] Bni7z6; +wire [11:2] Toi7z6; +wire [3:0] Bqi7z6; +wire [31:0] Dri7z6; +wire [2:0] Hsi7z6; +wire [9:7] Qti7z6; +wire [31:0] Wui7z6; +wire [31:0] Bwi7z6; +wire [4:0] Bxi7z6; +wire [31:1] Byi7z6; +wire [25:0] Bzi7z6; +wire [23:0] A0j7z6; +wire [23:0] H1j7z6; +wire [6:0] P2j7z6; +wire [15:0] Z3j7z6; +wire [63:0] G5j7z6; +wire [63:0] M6j7z6; +wire [2:0] T7j7z6; +wire [2:0] Z8j7z6; +wire [2:0] Gaj7z6; +wire [2:0] Nbj7z6; +wire [2:0] Tcj7z6; +wire [2:0] Zdj7z6; +wire [2:0] Ffj7z6; +wire [191:0] Lgj7z6; +wire [63:0] Ohj7z6; +wire [6:0] Qij7z6; +wire [63:0] Qkj7z6; +wire [5:1] Qmj7z6; +wire [2:0] Moj7z6; +wire [72:0] Jqj7z6; +wire [5:2] Dtj7z6; +wire [3:0] Pvj7z6; +wire [7:0] Hyj7z6; +wire [31:5] X0k7z6; +wire [31:2] N3k7z6; +wire [31:5] V5k7z6; +wire [7:0] H8k7z6; +wire [23:0] Rbk7z6; +wire [31:5] Dfk7z6; +wire [7:0] Pik7z6; +wire [23:0] Zlk7z6; +wire [24:5] Lpk7z6; +wire [7:0] Xsk7z6; +wire [23:0] Hwk7z6; +wire [24:5] Tzk7z6; +wire [7:0] F3l7z6; +wire [23:0] P6l7z6; +wire [24:5] Bal7z6; +wire [7:0] Ndl7z6; +wire [23:0] Xgl7z6; +wire [31:5] Jkl7z6; +wire [7:0] Vnl7z6; +wire [23:0] Frl7z6; +wire [24:5] Rul7z6; +wire [7:0] Dyl7z6; +wire [23:0] N1m7z6; +wire [24:5] Z4m7z6; +wire [7:0] L8m7z6; +wire [23:0] Vbm7z6; +wire [25:5] Hfm7z6; +wire [31:0] Tim7z6; +wire [1:0] Dkm7z6; +wire [31:0] Cmm7z6; +wire [2:0] Rnm7z6; +wire [2:0] Kqm7z6; +wire [3:0] Dtm7z6; +wire [1:0] Qvm7z6; +wire [3:1] Aym7z6; +wire [1:0] J0n7z6; +wire [1:0] W2n7z6; +wire [3:0] J5n7z6; +wire [1:0] S7n7z6; +wire [4:3] Ean7z6; +wire [31:0] Icn7z6; +wire [2:0] Ven7z6; +wire [31:0] Chn7z6; +wire [31:5] Hjn7z6; +wire [1:0] Qln7z6; +wire [3:0] Znn7z6; +wire [2:0] Eqn7z6; +wire [2:0] Ysn7z6; +wire [2:0] Svn7z6; +wire [2:0] Kyn7z6; +wire [1:0] C1o7z6; +wire [31:4] U3o7z6; +wire [7:2] F5o7z6; +wire [2:0] O7o7z6; +wire [3:0] Y9o7z6; +wire [6:4] Gco7z6; +wire [2:0] Oeo7z6; +wire [1:0] Ugo7z6; +wire [1:0] Ejo7z6; +wire [6:0] Klo7z6; +wire [31:2] Zmo7z6; +wire [31:2] Coo7z6; +wire [26:0] Fpo7z6; +wire [26:0] Nqo7z6; +wire [26:0] Vro7z6; +wire [1:0] Dto7z6; +wire [26:0] Ouo7z6; +wire [1:0] Wvo7z6; +wire [26:0] Hxo7z6; +wire [1:0] Pyo7z6; +wire [26:0] A0p7z6; +wire [1:0] I1p7z6; +wire [28:2] T2p7z6; +wire [28:2] W3p7z6; +wire [5:0] Z4p7z6; +wire [31:0] E6p7z6; +wire [3:0] I7p7z6; +wire [3:0] Q8p7z6; +wire [31:0] U9p7z6; +wire [1:0] Bbp7z6; +wire [1:0] Ncp7z6; +wire [3:0] Zdp7z6; +wire [3:0] Lfp7z6; +wire [3:0] Sgp7z6; +wire [3:0] Rip7z6; +wire [31:0] Mkp7z6; +wire [3:0] Hmp7z6; +wire [3:0] Gop7z6; +wire [31:0] Bqp7z6; +wire [1:0] Wrp7z6; +wire [1:0] Bup7z6; +wire [1:0] Gwp7z6; +wire [3:0] Hyp7z6; +wire [3:0] G0q7z6; +wire [31:0] B2q7z6; +wire [3:0] W3q7z6; +wire [1:0] W5q7z6; +wire [3:0] Y7q7z6; +wire [3:0] X9q7z6; +wire [7:0] Tbq7z6; +wire [7:0] Pdq7z6; +wire [7:0] Kfq7z6; +wire [7:0] Hhq7z6; +wire [7:0] Cjq7z6; +wire [22:12] Xkq7z6; +wire [6:3] Nmq7z6; +wire [14:1] Hoq7z6; +wire [14:0] Gqq7z6; +wire [31:0] Gsq7z6; +wire [14:1] Luq7z6; +wire [14:0] Kwq7z6; +wire [14:0] Kyq7z6; +wire [14:1] P0r7z6; +wire [14:0] O2r7z6; +wire [14:0] O4r7z6; +wire [31:1] T6r7z6; +wire [14:0] S8r7z6; +wire [31:0] Sar7z6; +wire [1:0] Xcr7z6; +wire [1:0] Dfr7z6; +wire [1:0] Jhr7z6; +wire [10:0] Tjr7z6; +wire [31:0] Wlr7z6; +wire [31:0] Cor7z6; +wire [31:1] Gqr7z6; +wire [1:0] Hsr7z6; +wire [1:0] Uur7z6; +wire [1:0] Ixr7z6; +wire [31:1] Rzr7z6; +wire [5:0] V1s7z6; +wire [1:0] C4s7z6; +wire [1:0] M6s7z6; +wire [30:8] P7s7z6; +wire [1:0] R8s7z6; +wire [39:0] X9s7z6; +wire [2:0] Zas7z6; +wire [3:0] Scs7z6; +wire [31:0] Ies7z6; +wire [11:7] Zfs7z6; +wire [3:0] Ihs7z6; +wire [5:0] Vis7z6; +wire [4:0] Nks7z6; +wire [8:0] Kms7z6; +wire [8:0] Cnvmz6; +wire [8:0] Xovmz6; +wire [8:0] Sqvmz6; +wire [8:0] Nsvmz6; +wire [8:4] Iuvmz6; +wire [4:0] Kwvmz6; +wire [8:0] Gyvmz6; +wire [8:0] K0wmz6; +wire [1:0] O2wmz6; +wire [1:0] Y4wmz6; +wire [8:0] J7wmz6; +wire [8:0] N9wmz6; +wire [1:0] Rbwmz6; +wire [1:0] Bewmz6; +wire [8:0] Mgwmz6; +wire [8:0] Qiwmz6; +wire [1:0] Ukwmz6; +wire [1:0] Enwmz6; +wire [8:0] Ppwmz6; +wire [8:0] Trwmz6; +wire [1:0] Xtwmz6; +wire [1:0] Hwwmz6; +wire [8:0] Sywmz6; +wire [8:0] W0xmz6; +wire [1:0] A3xmz6; +wire [1:0] K5xmz6; +wire [7:0] V7xmz6; +wire [2:0] O9xmz6; +wire [3:0] Fbxmz6; +wire [47:0] Vcxmz6; +wire [31:0] Jexmz6; +wire [11:0] Tfxmz6; +wire [3:0] Ogxmz6; +wire [1:0] Hhxmz6; +wire [31:0] Aixmz6; +wire [31:2] Uixmz6; +wire [11:0] Njxmz6; +wire [3:0] Ikxmz6; +wire [1:0] Blxmz6; +wire [31:0] Ulxmz6; +wire [31:2] Omxmz6; +wire [11:0] Hnxmz6; +wire [31:0] Coxmz6; +wire [5:0] Woxmz6; +wire [5:0] Fqxmz6; +wire [31:0] Krxmz6; +wire [1:0] Usxmz6; +wire [1:0] Fuxmz6; +wire [1:0] Ovxmz6; +wire [31:0] Cxxmz6; +wire [4:0] Myxmz6; +wire [4:0] Uzxmz6; +wire [5:0] B1ymz6; +wire [1:0] Q2ymz6; +wire [3:0] Z3ymz6; +wire [34:0] L5ymz6; +wire [3:0] W6ymz6; +wire [3:0] G8ymz6; +wire [3:0] R9ymz6; +wire [1:0] Dbymz6; +wire [4:1] Hcymz6; +wire [3:0] Jdymz6; +wire [3:0] Feymz6; +wire [2:0] Bfymz6; +wire [11:2] Xfymz6; +wire [10:0] Sgymz6; +wire [15:0] Biymz6; +wire [10:0] Ojymz6; +wire [3:0] Blymz6; +wire [3:0] Kmymz6; +wire [10:0] Unymz6; +wire [1:0] Ipymz6; +wire [1:0] Drymz6; +wire [15:0] Ctymz6; +wire [15:0] Ruymz6; +wire [3:0] Iwymz6; +wire [8:0] Zxymz6; +wire [3:0] Vzymz6; +wire [35:7] T1zmz6; +wire [31:7] P3zmz6; +wire [31:1] L5zmz6; +wire [31:1] I7zmz6; +wire [1:0] W8zmz6; +wire [8:0] Pazmz6; +wire [3:0] Lczmz6; +wire [35:1] Jezmz6; +wire [1:0] Fgzmz6; +wire [4:0] Yhzmz6; +wire [31:1] Rjzmz6; +wire [31:1] Slzmz6; +wire [46:0] Gnzmz6; +wire [7:0] Xozmz6; +wire [7:0] Nqzmz6; +wire [7:0] Dszmz6; +wire [7:0] Ttzmz6; +wire [7:0] Jvzmz6; +wire [7:0] Zwzmz6; +wire [7:0] Pyzmz6; +wire [7:0] F00nz6; +wire [7:0] V10nz6; +wire [7:0] L30nz6; +wire [7:0] B50nz6; +wire [7:0] R60nz6; +wire [7:0] H80nz6; +wire [7:0] X90nz6; +wire [7:0] Nb0nz6; +wire [7:0] Dd0nz6; +wire [7:0] Te0nz6; +wire [7:0] Jg0nz6; +wire [7:0] Zh0nz6; +wire [7:0] Pj0nz6; +wire [7:0] Fl0nz6; +wire [7:0] Vm0nz6; +wire [7:0] Lo0nz6; +wire [7:0] Bq0nz6; +wire [1:0] Rr0nz6; +wire [4:0] Ft0nz6; +wire [4:0] Uu0nz6; +wire [2:1] Hw0nz6; +wire [2:0] Ux0nz6; +wire [4:3] Mz0nz6; +wire [4:0] E11nz6; +wire [2:0] R21nz6; +wire [1:0] B41nz6; +wire [2:0] T51nz6; +wire [8:0] H71nz6; +wire [2:0] U81nz6; +wire [2:0] Ja1nz6; +wire [2:0] Yb1nz6; +wire [2:0] Md1nz6; +wire [2:0] Af1nz6; +wire [2:0] Fg1nz6; +wire [7:2] Kh1nz6; +wire [2:0] Hi1nz6; +wire [2:0] Lj1nz6; +wire [12:0] Pk1nz6; +wire [1:0] Nl1nz6; +wire [7:0] Mm1nz6; +wire [7:0] Nn1nz6; +wire [7:0] Oo1nz6; +wire [1:0] Pp1nz6; +wire [7:2] Xq1nz6; +wire [7:0] Yr1nz6; +wire [7:0] Zs1nz6; +wire [7:0] Au1nz6; +wire [1:0] Bv1nz6; +wire [3:0] Jw1nz6; +wire [1:0] Iy1nz6; +wire [11:2] J02nz6; +wire [7:0] Z12nz6; +wire [3:0] T32nz6; +wire [6:0] N52nz6; +wire [7:0] J72nz6; +wire [1:0] D92nz6; +wire [1:0] Qa2nz6; +wire [3:0] Ec2nz6; +wire [12:0] Td2nz6; +wire [2:0] Kf2nz6; +wire [2:0] Ah2nz6; +wire [5:0] Ti2nz6; +reg Sj2nz6, Ik2nz6, Zk2nz6, Ql2nz6, Im2nz6, Ym2nz6, Pn2nz6, Go2nz6, Yo2nz6, Eq2nz6; +reg Er2nz6, Hs2nz6, Et2nz6, Su2nz6, Aw2nz6, Ny2nz6, A13nz6, N33nz6, A63nz6, N83nz6; +reg Ab3nz6, Cd3nz6, Bf3nz6, Yg3nz6, Xh3nz6, Vj3nz6, Ul3nz6, Un3nz6, Ip3nz6, Vq3nz6; +reg Ms3nz6, Su3nz6, Mw3nz6, Sx3nz6, T04nz6, D34nz6, B64nz6, P84nz6, Ab4nz6, Pd4nz6; +reg Jf4nz6, Jh4nz6, Jj4nz6, Hl4nz6, Un4nz6, Nq4nz6, Gt4nz6, Yv4nz6, My4nz6, L15nz6; +reg R45nz6, H65nz6, G95nz6, Kc5nz6, Jf5nz6, Mi5nz6, Kl5nz6, Ho5nz6, Qq5nz6, Rs5nz6; +reg Ou5nz6, Zw5nz6, Oz5nz6, O16nz6, M36nz6, N66nz6, X86nz6, Vb6nz6, Pe6nz6, Jh6nz6; +reg Dk6nz6, Ym6nz6, Tp6nz6, Os6nz6, Jv6nz6, Ey6nz6, Z07nz6, A37nz6, P57nz6, H87nz6; +reg Z97nz6, Oc7nz6, Af7nz6, Qh7nz6, Fk7nz6, Cn7nz6, Cq7nz6, Ls7nz6, Jv7nz6, Dy7nz6; +reg X08nz6, S38nz6, N68nz6, I98nz6, Dc8nz6, Ye8nz6, Th8nz6, Uj8nz6, Rl8nz6, Co8nz6; +reg Rq8nz6, Rs8nz6, Pu8nz6, Qx8nz6, A09nz6, X29nz6, R59nz6, P89nz6, Lb9nz6, Le9nz6; +reg Oh9nz6, Ik9nz6, Gn9nz6, Fq9nz6, Ct9nz6, Av9nz6, Zv9nz6, Zw9nz6, Zx9nz6, Zy9nz6; +reg Zz9nz6, Z0anz6, Z1anz6, Z2anz6, Z3anz6, Z4anz6, A6anz6, B7anz6, C8anz6, D9anz6; +reg Eaanz6, Fbanz6, Gcanz6, Hdanz6, Ieanz6, Jfanz6, Kganz6, Lhanz6, Mianz6, Njanz6; +reg Okanz6, Planz6, Qmanz6, Rnanz6, Soanz6, Tpanz6, Uqanz6, Vranz6, Wsanz6, Xtanz6; +reg Yuanz6, Zvanz6, Axanz6, Byanz6, Czanz6, D0bnz6, E1bnz6, F2bnz6, G3bnz6, H4bnz6; +reg I5bnz6, J6bnz6, K7bnz6, L8bnz6, M9bnz6, Nabnz6, Obbnz6, Pcbnz6, Qdbnz6, Rebnz6; +reg Sfbnz6, Tgbnz6, Uhbnz6, Vibnz6, Wjbnz6, Xkbnz6, Ylbnz6, Zmbnz6, Aobnz6, Bpbnz6; +reg Cqbnz6, Drbnz6, Dsbnz6, Etbnz6, Fwbnz6, Hzbnz6, J2cnz6, L5cnz6, N8cnz6, Pbcnz6; +reg Recnz6, Thcnz6, Vkcnz6, Xncnz6, Zqcnz6, Bucnz6, Dxcnz6, F0dnz6, H3dnz6, J6dnz6; +reg L9dnz6, Ncdnz6, Pfdnz6, Ridnz6, Tldnz6, Vodnz6, Xrdnz6, Zudnz6, Bydnz6, D1enz6; +reg F4enz6, H7enz6, Jaenz6, Ldenz6, Ngenz6, Pjenz6, Rmenz6, Tpenz6, Vsenz6, Xvenz6; +reg Zyenz6, B2fnz6, D5fnz6, F8fnz6, Hbfnz6, Jefnz6, Lhfnz6, Nkfnz6, Pnfnz6, Rqfnz6; +reg Ttfnz6, Vwfnz6, Xzfnz6, Z2gnz6, B6gnz6, D9gnz6, Fcgnz6, Hfgnz6, Jignz6, Llgnz6; +reg Nognz6, Prgnz6, Rugnz6, Txgnz6, V0hnz6, X3hnz6, Z6hnz6, Bahnz6, Cdhnz6, Dghnz6; +reg Bjhnz6, Elhnz6, Cnhnz6, Hphnz6, Yrhnz6, Tuhnz6, Zxhnz6, Pzhnz6, O2inz6, S5inz6; +reg Q8inz6, Vainz6, Xdinz6, Zginz6, Bkinz6, Dninz6, Tpinz6, Osinz6, Kvinz6, Myinz6; +reg O1jnz6, N3jnz6, S5jnz6, Q7jnz6, P9jnz6, Objnz6, Qdjnz6, Wfjnz6, Bijnz6, Fkjnz6; +reg Gmjnz6, Qojnz6, Qrjnz6, Ztjnz6, Fxjnz6, Lzjnz6, P2knz6, D5knz6, O7knz6, Daknz6; +reg Dcknz6, Beknz6, Chknz6, Mjknz6, Kmknz6, Qoknz6, Vqknz6, Mtknz6, Jwknz6, Pzknz6; +reg J2lnz6, L5lnz6, L8lnz6, Ualnz6, Rdlnz6, Pglnz6, Uilnz6, Dllnz6, Aolnz6, Arlnz6; +reg Fulnz6, Exlnz6, Azlnz6, A1mnz6, X3mnz6, X6mnz6, G9mnz6, Qbmnz6, Zdmnz6, Wgmnz6; +reg Wjmnz6, Cnmnz6, Zpmnz6, Wsmnz6, Xvmnz6, Yymnz6, Z1nnz6, X4nnz6, T7nnz6, N9nnz6; +reg Gbnnz6, Wcnnz6, Sennz6, Dhnnz6, Sjnnz6, Plnnz6, Mnnnz6, Kpnnz6, Lsnnz6, Vunnz6; +reg Txnnz6, Vznnz6, W2onz6, G5onz6, E8onz6, U9onz6, Nbonz6, Ceonz6, Sgonz6, Ijonz6; +reg Xlonz6, Voonz6, Yronz6, Xuonz6, Cxonz6, Mzonz6, M2pnz6, V4pnz6, S7pnz6, P9pnz6; +reg Acpnz6, Pepnz6, Pgpnz6, Nipnz6, Olpnz6, Ynpnz6, Wqpnz6, Etpnz6, Svpnz6, Dypnz6; +reg S0qnz6, S2qnz6, Q4qnz6, R7qnz6, Baqnz6, Zcqnz6, Xfqnz6, Viqnz6, Zkqnz6, Ynqnz6; +reg Cqqnz6, Atqnz6, Evqnz6, Dyqnz6, H0rnz6, G3rnz6, K5rnz6, O8rnz6, Pbrnz6, Zdrnz6; +reg Xgrnz6, Yirnz6, Zlrnz6, Jornz6, Hrrnz6, Ntrnz6, Tvrnz6, Uyrnz6, E1snz6, C4snz6; +reg F6snz6, F8snz6, Hasnz6, Fcsnz6, Jesnz6, Hhsnz6, Kksnz6, Xmsnz6, Ypsnz6, Etsnz6; +reg Ewsnz6, Dzsnz6, H2tnz6, G5tnz6, M7tnz6, W9tnz6, Uctnz6, Oetnz6, Mgtnz6, Kitnz6; +reg Jktnz6, Hmtnz6, Fotnz6, Dqtnz6, Bstnz6, Wttnz6, Uvtnz6, Hytnz6, A1unz6, T3unz6; +reg G6unz6, Z8unz6, Sbunz6, Qdunz6, Ofunz6, Mhunz6, Kjunz6, Kmunz6, Tounz6, Qrunz6; +reg Stunz6, Uwunz6, Vzunz6, W2vnz6, U5vnz6, Y7vnz6, Cavnz6, Ccvnz6, Tevnz6, Khvnz6; +reg Pkvnz6, Smvnz6, Rovnz6, Prvnz6, Stvnz6, Wvvnz6, Yyvnz6, D1wnz6, N3wnz6, O5wnz6; +reg Q7wnz6, Rawnz6, Bdwnz6, Zfwnz6, Fiwnz6, Lkwnz6, Mnwnz6, Eqwnz6, Oswnz6, Yuwnz6; +reg Wxwnz6, Mzwnz6, K2xnz6, L5xnz6, V7xnz6, Baxnz6, Hcxnz6, Ifxnz6, Shxnz6, Qkxnz6; +reg Wmxnz6, Cpxnz6, Drxnz6, Ftxnz6, Gwxnz6, Qyxnz6, O1ynz6, L3ynz6, J5ynz6, E7ynz6; +reg Y8ynz6, Ebynz6, Kdynz6, Gfynz6, Chynz6, Yiynz6, Xkynz6, Rmynz6, Hoynz6, Gqynz6; +reg Gsynz6, Guynz6, Gwynz6, Gyynz6, G0znz6, Y2znz6, J5znz6, B8znz6, Maznz6, Xcznz6; +reg Ifznz6, Aiznz6, Skznz6, Dnznz6, Kpznz6, Isznz6, Jvznz6, Txznz6, R00oz6, P30oz6; +reg T50oz6, T70oz6, Ba0oz6, Ec0oz6, Ge0oz6, Jg0oz6, Ki0oz6, Ek0oz6, Em0oz6, Io0oz6; +reg Sq0oz6, Qs0oz6, Wu0oz6, Xw0oz6, Yy0oz6, V01oz6, Q21oz6, O41oz6, M61oz6, O81oz6; +reg Ra1oz6, Md1oz6, Eg1oz6, Ji1oz6, Pk1oz6, Ln1oz6, Qp1oz6, Or1oz6, Zt1oz6, Wv1oz6; +reg Jx1oz6, Oz1oz6, H12oz6, H32oz6, H52oz6, E72oz6, Z82oz6, Xa2oz6, Vc2oz6, Df2oz6; +reg Eh2oz6, Gj2oz6, Lm2oz6, Ip2oz6, Fs2oz6, Cv2oz6, Sx2oz6, J03oz6, A33oz6, Q53oz6; +reg Z73oz6, Ja3oz6, Hd3oz6, Tg3oz6, Sj3oz6, Lm3oz6, Mp3oz6, Wr3oz6, Uu3oz6, Ww3oz6; +reg Wy3oz6, A14oz6, J34oz6, S54oz6, B84oz6, Ka4oz6, Hc4oz6, Ce4oz6, Ag4oz6, Yh4oz6; +reg Ak4oz6, Dm4oz6, Vo4oz6, Ds4oz6, Gv4oz6, Ky4oz6, O15oz6, R45oz6, V75oz6, Za5oz6; +reg Ce5oz6, Fh5oz6, Jk5oz6, Nn5oz6, Qq5oz6, Ut5oz6, Yw5oz6, B06oz6, E36oz6, D66oz6; +reg A96oz6, Db6oz6, Hd6oz6, Ig6oz6, Jj6oz6, Mm6oz6, Pp6oz6, Rr6oz6, Yt6oz6, Ow6oz6; +reg Fz6oz6, O17oz6, O47oz6, O77oz6, Ka7oz6, Gd7oz6, Hf7oz6, Li7oz6, Kl7oz6, No7oz6; +reg Pr7oz6, Tu7oz6, Rx7oz6, U08oz6, T38oz6, V58oz6, X78oz6, Aa8oz6, Sc8oz6, Sf8oz6; +reg Ui8oz6, Xk8oz6, Ko8oz6, Hr8oz6, Vt8oz6, Jw8oz6, Mz8oz6, P29oz6, O59oz6, S89oz6; +reg Qb9oz6, Vd9oz6, Ng9oz6, Qj9oz6, Ql9oz6, Nn9oz6, Up9oz6, Zr9oz6, Gu9oz6, Gw9oz6; +reg Gy9oz6, G0aoz6, G2aoz6, B4aoz6, Z5aoz6, X7aoz6, Z9aoz6, Bcaoz6, Xeaoz6, Chaoz6; +reg Bkaoz6, Anaoz6, Wpaoz6, Bsaoz6, Avaoz6, Zxaoz6, R0boz6, G3boz6, K6boz6, O9boz6; +reg Ncboz6, Rfboz6, Qiboz6, Plboz6, Foboz6, Zqboz6, Qtboz6, Jwboz6, Wyboz6, Y1coz6; +reg Y3coz6, Q6coz6, L8coz6, Eacoz6, Xbcoz6, Qdcoz6, Jfcoz6, Chcoz6, Vicoz6, Okcoz6; +reg Hmcoz6, Aocoz6, Cqcoz6, Xrcoz6, Aucoz6, Pvcoz6, Fxcoz6, Vycoz6, J0doz6, X1doz6; +reg T3doz6, P5doz6, L7doz6, H9doz6, Dbdoz6, Zcdoz6, Vedoz6, Rgdoz6, Nidoz6, Jkdoz6; +reg Fmdoz6, Bodoz6, Updoz6, Nrdoz6, Gtdoz6, Zudoz6, Nwdoz6, Fydoz6, Xzdoz6, P1eoz6; +reg H3eoz6, Y4eoz6, P6eoz6, G8eoz6, X9eoz6, Nbeoz6, Edeoz6, Veeoz6, Ngeoz6, Djeoz6; +reg Ykeoz6, Rmeoz6, Koeoz6, Dqeoz6, Wreoz6, Pteoz6, Hveoz6, Zweoz6, Ryeoz6, I0foz6; +reg M2foz6, Q4foz6, U6foz6, Y8foz6, Cbfoz6, Gdfoz6, Lffoz6, Qhfoz6, Vjfoz6, Amfoz6; +reg Fofoz6, Kqfoz6, Psfoz6, Uufoz6, Zwfoz6, Ezfoz6, J1goz6, V2goz6, K4goz6, A6goz6; +reg X7goz6, V9goz6, Nbgoz6, Jdgoz6, Gfgoz6, Sggoz6, Ligoz6, Ckgoz6, Rlgoz6, Jngoz6; +reg Ipgoz6, Irgoz6, Ctgoz6, Evgoz6, Wwgoz6, Oygoz6, P0hoz6, A2hoz6, L3hoz6, Z5hoz6; +reg P8hoz6, Abhoz6, Uchoz6, Jehoz6, Wfhoz6, Ohhoz6, Cjhoz6, Ukhoz6, Imhoz6, Dohoz6; +reg Sphoz6, Wqhoz6, Urhoz6, Sthoz6, Rvhoz6, Kxhoz6, Pzhoz6, F2ioz6, X4ioz6, W7ioz6; +reg Faioz6, Mcioz6, Veioz6, Xhioz6, Xkioz6, Xnioz6, Arioz6, Utioz6, Twioz6, Pzioz6; +reg L2joz6, N5joz6, F8joz6, Fbjoz6, Jdjoz6, Cgjoz6, Eijoz6, Wkjoz6, Nnjoz6, Wpjoz6; +reg Yrjoz6, Yujoz6, Fxjoz6, Lzjoz6, R1koz6, X3koz6, D6koz6, J8koz6, Pakoz6, Vckoz6; +reg Bfkoz6, Hhkoz6, Ojkoz6, Vlkoz6, Cokoz6, Jqkoz6, Qskoz6, Xukoz6, Exkoz6, Lzkoz6; +reg S1loz6, Z3loz6, G6loz6, N8loz6, Ualoz6, Bdloz6, Ifloz6, Phloz6, Wjloz6, Gmloz6; +reg Eploz6, Srloz6, Vuloz6, Yxloz6, X0moz6, B4moz6, Z6moz6, W9moz6, Tcmoz6, Ufmoz6; +reg Dimoz6, Kkmoz6, Mmmoz6, Gpmoz6, Krmoz6, Ptmoz6, Tvmoz6, Wxmoz6, J0noz6, W2noz6; +reg G5noz6, Y6noz6, N8noz6, Eanoz6, Wbnoz6, Menoz6, Dhnoz6, Vjnoz6, Kmnoz6, Opnoz6; +reg Ssnoz6, Qvnoz6, Tynoz6, S1ooz6, S3ooz6, R5ooz6, O8ooz6, Kbooz6, Deooz6, Sgooz6; +reg Kjooz6, Flooz6, Xmooz6, Poooz6, Dqooz6, Yrooz6, Ltooz6, Yuooz6, Twooz6, Nyooz6; +reg E0poz6, V1poz6, O3poz6, C5poz6, U6poz6, M8poz6, Eapoz6, Wbpoz6, Ndpoz6, Efpoz6; +reg Wgpoz6, Mjpoz6, Zlpoz6, Nopoz6, Drpoz6, Ntpoz6, Fwpoz6, Yypoz6, L1qoz6, A4qoz6; +reg S6qoz6, J9qoz6, Bcqoz6, Vdqoz6, Mfqoz6, Dhqoz6, Fjqoz6, Zlqoz6, Qoqoz6, Grqoz6; +reg Ytqoz6, Tvqoz6, Lxqoz6, Dzqoz6, U0roz6, K2roz6, Y3roz6, M5roz6, A7roz6, O8roz6; +reg Earoz6, Ubroz6, Pdroz6, Bfroz6, Ogroz6, Hiroz6, Ujroz6, Wlroz6, Ynroz6, Aqroz6; +reg Csroz6, Furoz6, Iwroz6, Lyroz6, O0soz6, E3soz6, W5soz6, Z7soz6, Pasoz6, Hdsoz6; +reg Kfsoz6, Aisoz6, Sksoz6, Vmsoz6, Xosoz6, Pqsoz6, Hssoz6, Ttsoz6, Ivsoz6, Zwsoz6; +reg Bzsoz6, E1toz6, Z2toz6, C5toz6, U6toz6, X8toz6, Nbtoz6, Fetoz6, Xftoz6, Aitoz6; +reg Qktoz6, Odazz6, Gfazz6, Jhazz6, Ljazz6, Flazz6, Gnazz6, Zoazz6, Erazz6, Utazz6; +reg Mwazz6, Fyazz6, K0bzz6, L2bzz6, F4bzz6, H6bzz6, Z7bzz6, Cabzz6, Scbzz6, Kfbzz6; +reg Chbzz6, Fjbzz6, Hlbzz6, Bnbzz6, Cpbzz6, Vqbzz6, Atbzz6, Qvbzz6, Iybzz6, B0czz6; +reg G2czz6, H4czz6, B6czz6, D8czz6, V9czz6, Ybczz6, Oeczz6, Ghczz6, Yiczz6, Blczz6; +reg Dnczz6, Xoczz6, Yqczz6, Rsczz6, Wuczz6, Mxczz6, E0dzz6, X1dzz6, C4dzz6, D6dzz6; +reg X7dzz6, Z9dzz6, Rbdzz6, Uddzz6, Kgdzz6, Cjdzz6, Ukdzz6, Xmdzz6, Zodzz6, Tqdzz6; +reg Usdzz6, Nudzz6, Swdzz6, Izdzz6, A2ezz6, T3ezz6, Y5ezz6, Z7ezz6, T9ezz6, Vbezz6; +reg Ndezz6, Qfezz6, Giezz6, Ykezz6, Qmezz6, Toezz6, Vqezz6, Psezz6, Quezz6, Jwezz6; +reg Oyezz6, E1fzz6, W3fzz6, P5fzz6, U7fzz6, Kafzz6, Cdfzz6, Yefzz6, Vhfzz6, Pkfzz6; +reg Cnfzz6, Ppfzz6, Dsfzz6, Wufzz6, Jxfzz6, Xzfzz6, P2gzz6, P5gzz6, D8gzz6, Dbgzz6; +reg Degzz6, Dhgzz6, Dkgzz6, Cngzz6, Wpgzz6, Msgzz6, Jvgzz6, Bygzz6, D1hzz6, D4hzz6; +reg D7hzz6, Gahzz6, Jdhzz6, Ighzz6, Mjhzz6, Kmhzz6, Tohzz6, Prhzz6, Duhzz6, Rwhzz6; +reg Jzhzz6, D1izz6, U2izz6, L4izz6, N6izz6, Q8izz6, Haizz6, Ybizz6, Ldizz6, Dfizz6; +reg Hhizz6, Ziizz6, Dlizz6, Vmizz6, Zoizz6, Rqizz6, Vsizz6, Nuizz6, Ewizz6, Uyizz6; +reg M0jzz6, D2jzz6, X4jzz6, N7jzz6, Fajzz6, Zcjzz6, Mfjzz6, Bijzz6, Rkjzz6, Bnjzz6; +reg Xpjzz6, Osjzz6, Fvjzz6, Rxjzz6, H0kzz6, Y2kzz6, O5kzz6, G7kzz6, I9kzz6, Kbkzz6; +reg Ndkzz6, Qfkzz6, Thkzz6, Wjkzz6, Plkzz6, Knkzz6, Fpkzz6, Xqkzz6, Zskzz6, Qukzz6; +reg Gwkzz6, Wxkzz6, Mzkzz6, C1lzz6, S2lzz6, I4lzz6, Y5lzz6, S7lzz6, M9lzz6, Cclzz6; +reg Xdlzz6, Pflzz6, Khlzz6, Cjlzz6, Xklzz6, Pmlzz6, Holzz6, Kqlzz6, Atlzz6, Svlzz6; +reg Gylzz6, S0mzz6, L3mzz6, B6mzz6, R8mzz6, Hbmzz6, Wdmzz6, Igmzz6, Mjmzz6, Qmmzz6; +reg Lpmzz6, Ksmzz6, Jvmzz6, Iymzz6, K1nzz6, B4nzz6, V6nzz6, P9nzz6, Jcnzz6, Dfnzz6; +reg Vhnzz6, Nknzz6, Cnnzz6, Upnzz6, Ysnzz6, Cwnzz6, Rynzz6, J1ozz6, E3ozz6, W4ozz6; +reg O6ozz6, R8ozz6, Hbozz6, Zdozz6, Rfozz6, Uhozz6, Mkozz6, Bnozz6, Fqozz6, Jtozz6; +reg Zvozz6, Ryozz6, M0pzz6, E2pzz6, S3pzz6, L5pzz6, Z6pzz6, Dapzz6, Hdpzz6, Vfpzz6; +reg Nipzz6, Qlpzz6, Topzz6, Hrpzz6, Ztpzz6, Tvpzz6, Kxpzz6, Bzpzz6, D1qzz6, A4qzz6; +reg X6qzz6, M9qzz6, Dcqzz6, Xdqzz6, Ofqzz6, Diqzz6, Ukqzz6, Omqzz6, Foqzz6, Wpqzz6; +reg Yrqzz6, Quqzz6, Gwqzz6, Hyqzz6, W0rzz6, N3rzz6, C6rzz6, T8rzz6, Ibrzz6, Zdrzz6; +reg Ogrzz6, Fjrzz6, Blrzz6, Xmrzz6, Torzz6, Pqrzz6, Lsrzz6, Hurzz6, Bwrzz6, Sxrzz6; +reg H0szz6, Y2szz6, N5szz6, H7szz6, Y8szz6, Pbszz6, Eeszz6, Tgszz6, Ijszz6, Vlszz6; +reg Coszz6, Vqszz6, Nsszz6, Qvszz6, Tyszz6, H1tzz6, Z3tzz6, T5tzz6, H8tzz6, Zatzz6; +reg Tctzz6, Ketzz6, Dhtzz6, Sjtzz6, Oltzz6, Kntzz6, Gptzz6, Crtzz6, Ystzz6, Vutzz6; +reg Swtzz6, Pytzz6, M0uzz6, J2uzz6, F4uzz6, B6uzz6, Y7uzz6, V9uzz6, Sbuzz6, Pduzz6; +reg Ofuzz6, Jhuzz6, Hjuzz6, Vkuzz6, Qmuzz6, Iouzz6, Aquzz6, Dsuzz6, Vuuzz6, Lxuzz6; +reg D0vzz6, R1vzz6, L3vzz6, F5vzz6, V6vzz6, S8vzz6, Iavzz6, Ybvzz6, Odvzz6, Rgvzz6; +reg Ujvzz6, Mmvzz6, Bpvzz6, Fsvzz6, Jvvzz6, Byvzz6, Q0wzz6, U3wzz6, Y6wzz6, X9wzz6; +reg Bdwzz6, Agwzz6, Eiwzz6, Ikwzz6, Jnwzz6, Mqwzz6, Otwzz6, Rwwzz6, Tzwzz6, W2xzz6; +reg Y5xzz6, B9xzz6, Ecxzz6, Gfxzz6, Iixzz6, Hlxzz6, Loxzz6, Krxzz6, Ktxzz6, Lwxzz6; +reg Lyxzz6, M0yzz6, N2yzz6, O4yzz6, Q6yzz6, Q8yzz6, Vayzz6, Ycyzz6, Weyzz6, Ygyzz6; +reg Ckyzz6, Fnyzz6, Ipyzz6, Nryzz6, Ptyzz6, Xvyzz6, Uyyzz6, R1zzz6, V4zzz6, N7zzz6; +reg Cazzz6, Gdzzz6, Kgzzz6, Cjzzz6, Xkzzz6, Pmzzz6, Epzzz6, Iszzz6, Mvzzz6, Eyzzz6; +reg Zzzzz6, R10007, G40007, K70007, Oa0007, Sd0007, Rg0007, Cj0007, Nl0007, Yn0007; +reg Jq0007, Os0007, Ev0007, Ux0007, K01007, A31007, R51007, I81007, Ab1007, Rd1007; +reg Jg1007, Aj1007, Sl1007, Jo1007, Br1007, St1007, Kw1007, Bz1007, T12007, K42007; +reg C72007, T92007, Lc2007, Cf2007, Uh2007, Lk2007, Dn2007, Up2007, Ms2007, Dv2007; +reg Vx2007, M03007, E33007, V53007, N83007, Eb3007, Wd3007, Mg3007, Cj3007, Tl3007; +reg Jo3007, Ar3007, St3007, Jw3007, Bz3007, S14007, K44007, B74007, T94007, Jc4007; +reg Af4007, Rh4007, Ik4007, Zm4007, Qp4007, Hs4007, Yu4007, Px4007, G05007, X25007; +reg O55007, F85007, Wa5007, Nd5007, Eg5007, Vi5007, Ml5007, Do5007, Uq5007, Lt5007; +reg Cw5007, Sy5007, I16007, Y36007, O66007, E96007, Ub6007, Ke6007, Ah6007, Qj6007; +reg Gm6007, Xo6007, Or6007, Fu6007, Ww6007, Nz6007, E27007, V47007, M77007, Da7007; +reg Uc7007, Lf7007, Ci7007, Tk7007, Kn7007, Bq7007, Ss7007, Jv7007, Ay7007, R08007; +reg I38007, Z58007, P88007, Fb8007, Vd8007, Lg8007, Bj8007, Rl8007, Ho8007, Xq8007; +reg Nt8007, Dw8007, Uy8007, L19007, C49007, T69007, K99007, Bc9007, Se9007, Jh9007; +reg Ak9007, Rm9007, Ip9007, Zr9007, Qu9007, Hx9007, Yz9007, P2a007, G5a007, X7a007; +reg Oaa007, Fda007, Wfa007, Mia007, Cla007, Sna007, Iqa007, Ysa007, Ova007, Eya007; +reg U0b007, K3b007, A6b007, R8b007, Ibb007, Zdb007, Qgb007, Hjb007, Ylb007, Pob007; +reg Grb007, Xtb007, Owb007, Fzb007, W1c007, N4c007, E7c007, V9c007, Mcc007, Dfc007; +reg Uhc007, Lkc007, Cnc007, Tpc007, Jsc007, Zuc007, Pxc007, F0d007, V2d007, L5d007; +reg B8d007, Rad007, Hdd007, Xfd007, Oid007, Fld007, Wnd007, Nqd007, Etd007, Vvd007; +reg Myd007, D1e007, U3e007, L6e007, C9e007, Tbe007, Kee007, Bhe007, Sje007, Jme007; +reg Ape007, Rre007, Iue007, Zwe007, Qze007, G2f007, W4f007, M7f007, Caf007, Scf007; +reg Iff007, Yhf007, Okf007, Enf007, Vpf007, Nsf007, Fvf007, Xxf007, P0g007, H3g007; +reg Z5g007, R8g007, Jbg007, Beg007, Tgg007, Ljg007, Dmg007, Vog007, Nrg007, Fug007; +reg Xwg007, Pzg007, H2h007, Z4h007, R7h007, Jah007, Adh007, Rfh007, Iih007, Zkh007; +reg Qnh007, Hqh007, Ysh007, Pvh007, Gyh007, X0i007, P3i007, H6i007, Z8i007, Rbi007; +reg Jei007, Bhi007, Tji007, Lmi007, Dpi007, Vri007, Nui007, Fxi007, Xzi007, P2j007; +reg H5j007, Z7j007, Raj007, Jdj007, Bgj007, Tij007, Llj007, Coj007, Tqj007, Ktj007; +reg Bwj007, Syj007, J1k007, A4k007, R6k007, I9k007, Zbk007, Rek007, Jhk007, Bkk007; +reg Tmk007, Lpk007, Dsk007, Vuk007, Nxk007, F0l007, X2l007, P5l007, H8l007, Zal007; +reg Rdl007, Jgl007, Bjl007, Tll007, Lol007, Drl007, Vtl007, Nwl007, Ezl007, V1m007; +reg M4m007, D7m007, U9m007, Lcm007, Cfm007, Thm007, Kkm007, Bnm007, Tpm007, Lsm007; +reg Dvm007, Vxm007, N0n007, F3n007, X5n007, P8n007, Hbn007, Zdn007, Rgn007, Jjn007; +reg Bmn007, Ton007, Lrn007, Dun007, Vwn007, Nzn007, F2o007, X4o007, P7o007, Gao007; +reg Xco007, Ofo007, Fio007, Wko007, Nno007, Eqo007, Vso007, Nvo007, Fyo007, X0p007; +reg P3p007, H6p007, Z8p007, Rbp007, Jep007, Bhp007, Tjp007, Lmp007, Dpp007, Vrp007; +reg Nup007, Fxp007, Xzp007, P2q007, H5q007, Z7q007, Raq007, Jdq007, Agq007, Riq007; +reg Ilq007, Znq007, Qqq007, Htq007, Yvq007, Pyq007, G1r007, W3r007, N6r007, E9r007; +reg Vbr007, Mer007, Dhr007, Ujr007, Lmr007, Cpr007, Trr007, Kur007, Bxr007, Szr007; +reg J2s007, A5s007, R7s007, Ias007, Zcs007, Qfs007, His007, Yks007, Pns007, Fqs007; +reg Vss007, Lvs007, Bys007, R0t007, H3t007, X5t007, N8t007, Dbt007, Tdt007, Kgt007; +reg Bjt007, Slt007, Jot007, Art007, Rtt007, Iwt007, Zyt007, Q1u007, H4u007, Y6u007; +reg P9u007, Gcu007, Xeu007, Ohu007, Fku007, Wmu007, Npu007, Esu007, Vuu007, Mxu007; +reg C0v007, S2v007, I5v007, Y7v007, Oav007, Edv007, Ufv007, Kiv007, Alv007, Qnv007; +reg Hqv007, Ysv007, Pvv007, Gyv007, X0w007, O3w007, F6w007, W8w007, Nbw007, Eew007; +reg Vgw007, Mjw007, Dmw007, Uow007, Lrw007, Cuw007, Tww007, Kzw007, B2x007, S4x007; +reg J7x007, Z9x007, Pcx007, Ffx007, Vhx007, Lkx007, Bnx007, Rpx007, Hsx007, Xux007; +reg Nxx007, E0y007, V2y007, M5y007, D8y007, Uay007, Ldy007, Cgy007, Tiy007, Kly007; +reg Boy007, Sqy007, Jty007, Awy007, Ryy007, I1z007, Z3z007, Q6z007, H9z007, Ybz007; +reg Pez007, Ghz007, Wjz007, Mmz007, Cpz007, Srz007, Iuz007, Ywz007, Ozz007, E20107; +reg U40107, Y70107, Qa0107, Lc0107, De0107, Sg0107, Wj0107, An0107, Pp0107, Hs0107; +reg Cu0107, Uv0107, Yy0107, C21107, R41107, J71107, E91107, Wa1107, Ae1107, Eh1107; +reg Tj1107, Lm1107, Go1107, Yp1107, Ct1107, Gw1107, Ez1107, L12107, S32107, V62107; +reg U92107, Yc2107, Nf2107, Fi2107, Ak2107, Sl2107, Wo2107, As2107, Yu2107, Xx2107; +reg W03107, V33107, U63107, T93107, Sc3107, Rf3107, Sh3107, Sj3107, Yl3107, Fo3107; +reg Oq3107, Rt3107, Qw3107, Wy3107, C14107, H34107, N54107, T74107, Z94107, Fc4107; +reg Le4107, Rg4107, Xi4107, Dl4107, Jn4107, Pp4107, Vr4107, Bu4107, Ax4107, Xz4107; +reg U25107, L55107, I85107, Ka5107, Yc5107, Wf5107, Ui5107, Kl5107, En5107, Yo5107; +reg Oq5107, Is5107, Yt5107, Ov5107, Bx5107, Ry5107, I06107, Z16107, P36107, F56107; +reg V66107, L86107, Ba6107, Rb6107, Gd6107, Ve6107, Kg6107, Yh6107, Lj6107, Fl6107; +reg Zn6107, Br6107, Du6107, Bx6107, Vz6107, U27107, T57107, V87107, Xb7107, We7107; +reg Dh7107, Kj7107, Rl7107, Yn7107, Eq7107, Ks7107, Lu7107, Qw7107, Qz7107, Q28107; +reg Q58107, Q88107, Gttf07, Gwtf07, Eztf07, G2uf07, G5uf07, J8uf07, Mbuf07, Peuf07; +reg Ahuf07, Xjuf07, Umuf07, Fpuf07, Csuf07, Zuuf07, Kxuf07, H0vf07, E3vf07, B6vf07; +reg I8vf07, Mbvf07, Bevf07, Tgvf07, Oivf07, Gkvf07, Knvf07, Oqvf07, Dtvf07, Vvvf07; +reg Qxvf07, Izvf07, M2wf07, Q5wf07, F8wf07, Xawf07, Scwf07, Kewf07, Ohwf07, Skwf07; +reg Wnwf07, Lqwf07, Ltwf07, Jwwf07, Hzwf07, D2xf07, D5xf07, A8xf07, Uaxf07, Udxf07; +reg Ngxf07, Wixf07, Xkxf07, Unxf07, Bqxf07, Hsxf07, Nuxf07, Twxf07, Zyxf07, F1yf07; +reg K3yf07, P5yf07, U7yf07, Xayf07, Ndyf07, Dgyf07, Tiyf07, Jlyf07, Znyf07, Pqyf07; +reg Ftyf07, Tvyf07, Xyyf07, B2zf07, E5zf07, I8zf07, Nazf07, Sczf07, Tfzf07, Thzf07; +reg Vjzf07, Lmzf07, Fozf07, Zqzf07, Ptzf07, Owzf07, Byzf07, Yzzf07, M10g07, C30g07; +reg S40g07, H60g07, W70g07, L90g07, Ab0g07, Pc0g07, Ee0g07, Tf0g07, Zg0g07, Fi0g07; +reg Lj0g07, Rk0g07, Om0g07, Lo0g07, Iq0g07, Fs0g07, Cu0g07, Zv0g07, Wx0g07, Uz0g07; +reg S11g07, N31g07, F51g07, G71g07, V81g07, Ka1g07, Zb1g07, Od1g07, Df1g07, Pg1g07; +reg Qi1g07, Rk1g07, Mm1g07, Ap1g07, Ds1g07, Gv1g07, Uw1g07, Iy1g07, Xz1g07, L12g07; +reg C42g07, T62g07, M92g07, Fc2g07, Ye2g07, Rh2g07, Lk2g07, Fn2g07, Zp2g07, Ts2g07; +reg Nv2g07, Hy2g07, B13g07, V33g07, P63g07, J93g07, Dc3g07, Xe3g07, Rh3g07, Lk3g07; +reg Fn3g07, Zp3g07, Ts3g07, Nv3g07, Hy3g07, B14g07, V34g07, O64g07, S84g07, Ra4g07; +reg Tc4g07, Af4g07, Yh4g07, Xk4g07, Vn4g07, Tq4g07, Rt4g07, Pw4g07, Oz4g07, N25g07; +reg M55g07, L85g07, Kb5g07, Ie5g07, Gh5g07, Bk5g07, Ym5g07, Xp5g07, Ws5g07, Vv5g07; +reg Uy5g07, T16g07, W46g07, Z76g07, Xa6g07, Ae6g07, Yg6g07, Wj6g07, Xm6g07, Yp6g07; +reg Zs6g07, Gv6g07, Ky6g07, T07g07, H37g07, P57g07, R87g07, Tb7g07, Ve7g07, Xh7g07; +reg Ak7g07, Dm7g07, Go7g07, Jq7g07, Ss7g07, Bv7g07, Lx7g07, Vz7g07, V18g07, E48g07; +reg N68g07, W88g07, Fb8g07, Kd8g07, Pf8g07, Uh8g07, Zj8g07, Em8g07, Jo8g07, Oq8g07; +reg Ts8g07, Yu8g07, Dx8g07, Iz8g07, N19g07, S39g07, W59g07, A89g07, Ea9g07, Ic9g07; +reg Me9g07, Qg9g07, Ui9g07, Yk9g07, Hn9g07, Qp9g07, Sr9g07, Ut9g07, Wv9g07, Zx9g07; +reg C0ag07, F2ag07, H4ag07, J6ag07, L8ag07, Paag07, Tcag07, Xeag07, Bhag07, Gjag07; +reg Llag07, Qnag07, Vpag07, Asag07, Fuag07, Kwag07, Nyag07, Q0bg07, T2bg07, W4bg07; +reg Z6bg07, C9bg07, Fbbg07, Idbg07, Lfbg07, Phbg07, Tjbg07, Ylbg07, Dobg07, Iqbg07; +reg Nsbg07, Subg07, Xwbg07, Czbg07, H1cg07, M3cg07, R5cg07, W7cg07, Aacg07, Eccg07; +reg Iecg07, Mgcg07, Qicg07, Ukcg07, Ymcg07, Cpcg07, Grcg07, Ktcg07, Ovcg07, Nxcg07; +reg Mzcg07, P1dg07, S3dg07, V5dg07, Y7dg07, Badg07, Ecdg07, Hedg07, Kgdg07, Nidg07; +reg Qkdg07, Tmdg07, Wodg07, Zqdg07, Ctdg07, Fvdg07, Ixdg07, Lzdg07, O1eg07, R3eg07; +reg U5eg07, X7eg07, Aaeg07, Dceg07, Geeg07, Jgeg07, Mieg07, Pkeg07, Smeg07, Qpeg07; +reg Rseg07, Vueg07, Xweg07, Czeg07, H1fg07, M3fg07, R5fg07, W7fg07, Bafg07, Gcfg07; +reg Lefg07, Qgfg07, Vifg07, Alfg07, Enfg07, Ipfg07, Mrfg07, Qtfg07, Uvfg07, Yxfg07; +reg C0gg07, G2gg07, K4gg07, O6gg07, S8gg07, Pagg07, Qcgg07, Oegg07, Tggg07, Bjgg07; +reg Klgg07, Ongg07, Cqgg07, Jsgg07, Qugg07, Xwgg07, Ezgg07, B2hg07, Y4hg07, F7hg07; +reg M9hg07, Pbhg07, Sdhg07, Vfhg07, Rhhg07, Njhg07, Jlhg07, Fnhg07, Bphg07, Xqhg07; +reg Tshg07, Puhg07, Mwhg07, Jyhg07, G0ig07, D2ig07, A4ig07, X5ig07, U7ig07, R9ig07; +reg Obig07, Ldig07, Ifig07, Fhig07, Cjig07, Zkig07, Wmig07, Toig07, Qqig07, Nsig07; +reg Kuig07, Hwig07, Myig07, R0jg07, W2jg07, B5jg07, G7jg07, L9jg07, Qbjg07, Vdjg07; +reg Agjg07, Fijg07, Kkjg07, Omjg07, Sojg07, Wqjg07, Atjg07, Evjg07, Ixjg07, Mzjg07; +reg Q1kg07, U3kg07, Y5kg07, C8kg07, Cakg07, Hckg07, Mekg07, Rgkg07, Wikg07, Blkg07; +reg Gnkg07, Lpkg07, Qrkg07, Vtkg07, Awkg07, Fykg07, J0lg07, N2lg07, R4lg07, V6lg07; +reg Z8lg07, Dblg07, Hdlg07, Lflg07, Phlg07, Tjlg07, Xllg07, Bolg07, Qplg07, Hrlg07; +reg Yslg07, Zulg07, Axlg07, Ezlg07, I1mg07, H3mg07, I5mg07, J7mg07, F9mg07, Lbmg07; +reg Rdmg07, Xfmg07, Dimg07, Hkmg07, Ylmg07, Pnmg07, Epmg07, Vqmg07, Msmg07, Dumg07; +reg Vvmg07, Nxmg07, Fzmg07, X0ng07, P2ng07, H4ng07, Z5ng07, R7ng07, J9ng07, Bbng07; +reg Tcng07, Leng07, Dgng07, Vhng07, Njng07, Flng07, Xmng07, Pong07, Hqng07, Zrng07; +reg Rtng07, Jvng07, Axng07, Ryng07, I0og07, Z1og07, Q3og07, H5og07, Y6og07, P8og07; +reg Gaog07, Ncog07, Eeog07, Vfog07, Mhog07, Djog07, Ukog07, Lmog07, Coog07, Tpog07; +reg Krog07, Btog07, Tuog07, Lwog07, Dyog07, Vzog07, N1pg07, F3pg07, X4pg07, P6pg07; +reg H8pg07, Z9pg07, Rbpg07, Jdpg07, Bfpg07, Tgpg07, Lipg07, Dkpg07, Vlpg07, Nnpg07; +reg Fppg07, Xqpg07, Pspg07, Supg07, Xwpg07, Azpg07, C1qg07, G3qg07, J5qg07, N7qg07; +reg T9qg07, Ubqg07, Wdqg07, Yfqg07, Biqg07, Dkqg07, Gmqg07, Joqg07, Mqqg07, Psqg07; +reg Suqg07, Vwqg07, Yyqg07, B1rg07, E3rg07, H5rg07, K7rg07, N9rg07, Qbrg07, Tdrg07; +reg Wfrg07, Yhrg07, Akrg07, Cmrg07, Eorg07, Gqrg07, Isrg07, Kurg07, Mwrg07, Oyrg07; +reg T0sg07, Y2sg07, D5sg07, I7sg07, N9sg07, Sbsg07, Xdsg07, Cgsg07, Hisg07, Mksg07; +reg Rmsg07, Vosg07, Zqsg07, Dtsg07, Hvsg07, Lxsg07, Pzsg07, T1tg07, X3tg07, B6tg07; +reg F8tg07, Jatg07, Kctg07, Letg07, Kgtg07, Jitg07, Iktg07, Hmtg07, Hotg07, Hqtg07; +reg Hstg07, Hutg07, Hwtg07, Hytg07, G0ug07, F2ug07, E4ug07, J6ug07, O8ug07, Taug07; +reg Ycug07, Dfug07, Ihug07, Njug07, Slug07, Xnug07, Cqug07, Hsug07, Luug07, Pwug07; +reg Tyug07, X0vg07, B3vg07, F5vg07, J7vg07, N9vg07, Rbvg07, Vdvg07, Zfvg07, Aivg07; +reg Bkvg07, Cmvg07, Dovg07, Eqvg07, Fsvg07, Guvg07, Hwvg07, Iyvg07, J0wg07, K2wg07; +reg L4wg07, M6wg07, N8wg07, Nawg07, Ocwg07, Pewg07, Qgwg07, Riwg07, Skwg07, Tmwg07; +reg Towg07, Tqwg07, Tswg07, Tuwg07, Twwg07, Tywg07, T0xg07, U2xg07, S5xg07, Q8xg07; +reg Vaxg07, Adxg07, Ffxg07, Khxg07, Pjxg07, Ulxg07, Znxg07, Eqxg07, Jsxg07, Ouxg07; +reg Twxg07, Xyxg07, B1yg07, F3yg07, J5yg07, N7yg07, R9yg07, Vbyg07, Zdyg07, Dgyg07; +reg Hiyg07, Lkyg07, Nmyg07, Poyg07, Rqyg07, Tsyg07, Vuyg07, Xwyg07, Zyyg07, B1zg07; +reg E3zg07, H5zg07, K7zg07, N9zg07, Qbzg07, Tdzg07, Wfzg07, Zhzg07, Ckzg07, Fmzg07; +reg Iozg07, Lqzg07, Oszg07, Ruzg07, Uwzg07, Xyzg07, A10h07, D30h07, G50h07, J70h07; +reg L90h07, Nb0h07, Pd0h07, Rf0h07, Th0h07, Vj0h07, Xl0h07, Zn0h07, Bq0h07, Ds0h07; +reg Fu0h07, Hw0h07, Iy0h07, J01h07, K21h07, L41h07, M61h07, N81h07, Oa1h07, Hd1h07; +reg Ag1h07, Ni1h07, Ml1h07, Lo1h07, Zq1h07, St1h07, Lw1h07, Kz1h07, J22h07, F52h07; +reg C82h07, R92h07, Fb2h07, Xc2h07, Ne2h07, Dg2h07, Th2h07, Ij2h07, Xk2h07, Mm2h07; +reg Bo2h07, Qp2h07, Fr2h07, Vs2h07, Lu2h07, Bw2h07, Rx2h07, Hz2h07, X03h07, N23h07; +reg D43h07, V53h07, J73h07, B93h07, Ra3h07, Hc3h07, Xd3h07, Mf3h07, Bh3h07, Qi3h07; +reg Fk3h07, Ul3h07, Jn3h07, Zo3h07, Pq3h07, Fs3h07, Vt3h07, Lv3h07, Bx3h07, Ry3h07; +reg H04h07, Z14h07, M34h07, A54h07, Q64h07, G84h07, W94h07, Lb4h07, Ad4h07, Pe4h07; +reg Eg4h07, Th4h07, Ij4h07, Yk4h07, Om4h07, Eo4h07, Up4h07, Kr4h07, At4h07, Qu4h07; +reg Gw4h07, Ux4h07, Kz4h07, A15h07, P25h07, E45h07, T55h07, I75h07, X85h07, Ma5h07; +reg Cc5h07, Sd5h07, If5h07, Yg5h07, Oi5h07, Ek5h07, Ul5h07, In5h07, Ap5h07, Qq5h07; +reg Gs5h07, Wt5h07, Lv5h07, Ax5h07, Py5h07, E06h07, T16h07, I36h07, Y46h07, O66h07; +reg E86h07, U96h07, Kb6h07, Ad6h07, Qe6h07, Gg6h07, Yh6h07, Mj6h07, El6h07, Um6h07; +reg Ko6h07, Aq6h07, Pr6h07, Et6h07, Tu6h07, Iw6h07, Xx6h07, Mz6h07, C17h07, S27h07; +reg I47h07, Y57h07, O77h07, E97h07, Ua7h07, Kc7h07, Ce7h07, Qf7h07, Gh7h07, Wi7h07; +reg Mk7h07, Bm7h07, Qn7h07, Fp7h07, Uq7h07, Js7h07, Yt7h07, Ov7h07, Ex7h07, Uy7h07; +reg K08h07, A28h07, Q38h07, G58h07, W68h07, O88h07, Ca8h07, Ub8h07, Kd8h07, Af8h07; +reg Qg8h07, Fi8h07, Uj8h07, Jl8h07, Ym8h07, No8h07, Cq8h07, Sr8h07, It8h07, Yu8h07; +reg Ow8h07, Ey8h07, Uz8h07, K19h07, A39h07, S49h07, J69h07, A89h07, Q99h07, Gb9h07; +reg Wc9h07, Me9h07, Cg9h07, Sh9h07, Ij9h07, Yk9h07, Pm9h07, Go9h07, Xp9h07, Or9h07; +reg Ft9h07, Wu9h07, Xw9h07, Zy9h07, B1ah07, D3ah07, J5ah07, P7ah07, R9ah07, Tbah07; +reg Vdah07, Bgah07, Hiah07, Jkah07, Lmah07, Noah07, Oqah07, Msah07, Luah07, Kwah07; +reg Jyah07, I0bh07, H2bh07, G4bh07, F6bh07, E8bh07, Dabh07, Ccbh07, Bebh07, Agbh07; +reg Zhbh07, Yjbh07, Xlbh07, Wnbh07, Vpbh07, Urbh07, Ttbh07, Svbh07, Rxbh07, Qzbh07; +reg O1ch07, M3ch07, K5ch07, I7ch07, G9ch07, Ebch07, Cdch07, Afch07, Chch07, Fjch07; +reg Ilch07, Lnch07, Opch07, Rrch07, Utch07, Xvch07, Aych07, D0dh07, G2dh07, J4dh07; +reg M6dh07, P8dh07, Sadh07, Vcdh07, Yedh07, Bhdh07, Ejdh07, Hldh07, Kndh07, Npdh07; +reg Qrdh07, Stdh07, Uvdh07, Wxdh07, Yzdh07, A2eh07, C4eh07, E6eh07, G8eh07, Daeh07; +reg Bceh07, Zdeh07, Xfeh07, Vheh07, Tjeh07, Rleh07, Pneh07, Npeh07, Lreh07, Jteh07; +reg Hveh07, Fxeh07, Dzeh07, A1fh07, X2fh07, U4fh07, R6fh07, O8fh07, Lafh07, Icfh07; +reg Fefh07, Kgfh07, Qifh07, Wkfh07, Cnfh07, Apfh07, Yqfh07, Wsfh07, Yufh07, Axfh07; +reg Czfh07, H1gh07, N3gh07, T5gh07, Z7gh07, Bagh07, Ecgh07, Hegh07, Kggh07, Nigh07; +reg Qkgh07, Tmgh07, Wogh07, Zqgh07, Ctgh07, Fvgh07, Ixgh07, Lzgh07, O1hh07, R3hh07; +reg U5hh07, X7hh07, Aahh07, Dchh07, Gehh07, Jghh07, Mihh07, Pkhh07, Rmhh07, Tohh07; +reg Vqhh07, Xshh07, Zuhh07, Bxhh07, Dzhh07, F1ih07, H3ih07, J5ih07, L7ih07, N9ih07; +reg Pbih07, Rdih07, Tfih07, Vhih07, Yjih07, Bmih07, Eoih07, Hqih07, Ksih07, Nuih07; +reg Qwih07, Tyih07, W0jh07, Z2jh07, C5jh07, F7jh07, I9jh07, Lbjh07, Odjh07, Rfjh07; +reg Uhjh07, Xjjh07, Amjh07, Dojh07, Gqjh07, Jsjh07, Lujh07, Qwjh07, Wyjh07, C1kh07; +reg I3kh07, Q5kh07, C8kh07, Oakh07, Adkh07, Mfkh07, Uhkh07, Ckkh07, Ylkh07, Nnkh07; +reg Fqkh07, Xskh07, Pvkh07, Hykh07, Z0lh07, R3lh07, J6lh07, B9lh07, Tblh07, Kelh07; +reg Bhlh07, Sjlh07, Jmlh07, Aplh07, Rrlh07, Iulh07, Zwlh07, Qzlh07, Z1mh07, I4mh07; +reg Q6mh07, Y8mh07, Gbmh07, Pdmh07, Yfmh07, Rhmh07, Wjmh07, Bmmh07, Gomh07, Lqmh07; +reg Qsmh07, Vumh07, Dxmh07, Lzmh07, T1nh07, B4nh07, J6nh07, R8nh07, Zanh07, Idnh07; +reg Rfnh07, Ainh07, Jknh07, Smnh07, Bpnh07, Jrnh07, Etnh07, Zunh07, Uwnh07, Pynh07; +reg K0oh07, F2oh07, U3oh07, P5oh07, G7oh07, B9oh07, Kboh07, Idoh07, Gfoh07, Ehoh07; +reg Cjoh07, Aloh07, Ymoh07, Wooh07, Uqoh07, Ssoh07, Ruoh07, Pwoh07, Wyoh07, W0ph07; +reg U2ph07, R4ph07, T6ph07, W8ph07, Bbph07, Gdph07, Qfph07, Aiph07, Kkph07, Emph07; +reg Joph07, Hqph07, Lsph07, Vuph07, Ixph07, Pzph07, R1qh07, Z3qh07, F6qh07, D8qh07; +reg Oaqh07, Scqh07, Zeqh07, Dhqh07, Ejqh07, Zkqh07, Fnqh07, Woqh07, Uqqh07, Vsqh07; +reg Nuqh07, Lwqh07, Kyqh07, J0rh07, I2rh07, H4rh07, G6rh07, F8rh07, Earh07, Dcrh07; +reg Cerh07, Bgrh07, Airh07, Zjrh07, Ylrh07, Xnrh07, Wprh07, Vrrh07, Gxps07, Fzps07; +reg E1qs07, D3qs07, C5qs07, B7qs07, A9qs07, Zaqs07, Ycqs07, Xeqs07, Wgqs07, Viqs07; +reg Ukqs07, Tmqs07, Soqs07, Rqqs07, Qsqs07, Puqs07, Owqs07, Nyqs07, M0rs07, L2rs07; +reg K4rs07, I6rs07, G8rs07, Ears07, Ccrs07, Aers07, Yfrs07, Whrs07, Ujrs07, Dmrs07; +reg Mors07, Vqrs07, Etrs07, Nvrs07, Wxrs07, F0ss07, O2ss07, X4ss07, L7ss07, G9ss07; +reg Bbss07, Wcss07, Tess07, Ngss07, Hiss07, Bkss07, Cmss07, Aoss07, Ypss07, Vrss07; +reg Stss07, Pvss07, Mxss07, Kzss07, I1ts07, G3ts07, C5ts07, P7ts07, Cats07, Fcts07; +reg Dets07, Bgts07, Zhts07, Xjts07, Vlts07, Tnts07, Rpts07, Prts07, Ntts07, Mvts07; +reg Lxts07, Kzts07, H1us07, E3us07, D5us07, F7us07, C9us07, Ebus07, Fdus07, Gfus07; +reg Thus07, Mkus07, Fnus07, Lous07, Bqus07, Prus07, Ntus07, Mvus07, Kxus07, Xzus07; +reg Q2vs07, J5vs07, H7vs07, F9vs07, Dbvs07, Bdvs07, Zevs07, Xgvs07, Vivs07, Tkvs07; +reg Rmvs07, Povs07, Nqvs07, Lsvs07, Juvs07, Hwvs07, Uyvs07, N1ws07, G4ws07, X5ws07; +reg O7ws07, F9ws07, Waws07, Ncws07, Eews07, Wfws07, Yhws07, Qjws07, Ilws07, Lnws07; +reg Hpws07, Drws07, Atws07, Xuws07, Uwws07, Tyws07, S0xs07, R2xs07, Q4xs07, P6xs07; +reg O8xs07, Naxs07, Mcxs07, Lexs07, Kgxs07, Jixs07, Ikxs07, Hmxs07, Goxs07, Fqxs07; +reg Esxs07, Duxs07, Cwxs07, Byxs07, A0ys07, Z1ys07, Y3ys07, V6ys07, Y9ys07, Bdys07; +reg Egys07, Ijys07, Mmys07, Qpys07, Usys07, Yvys07, Czys07, G2zs07, D5zs07, M7zs07; +reg W9zs07, Gczs07, Qezs07, Ahzs07, Kjzs07, Ulzs07, Eozs07, Oqzs07, Yszs07, Hvzs07; +reg Rxzs07, B00t07, L20t07, V40t07, F70t07, O90t07, Lc0t07, Ve0t07, Sh0t07, Dk0t07; +reg Gm0t07, Lo0t07, Kr0t07, Ju0t07, Ix0t07, L01t07, M31t07, J61t07, G91t07, Lb1t07; +reg Qd1t07, Tg1t07, Qi1t07, Sk1t07, Um1t07, Wo1t07, Cr1t07, Jt1t07, Pv1t07, Nx1t07; +reg Lz1t07, N12t07, P32t07, R52t07, Z72t07, Ba2t07, Ac2t07, Ge2t07, Fg2t07, Li2t07; +reg Tk2t07, Vm2t07, Xo2t07, Er2t07, It2t07, Pv2t07, Ox2t07, Qz2t07, J23t07, K33t07; +reg J43t07, K63t07, Q83t07, Pa3t07, Pc3t07, Qe3t07, Ug3t07, Ni3t07, Kk3t07, Jm3t07; +reg Io3t07, Hq3t07, Gs3t07, Fu3t07, Ew3t07, Dy3t07, C04t07, H24t07, Q44t07, Y64t07; +reg V94t07, Sc4t07, Pf4t07, Mi4t07, Ik4t07, Zn4t07, Qr4t07, Hv4t07, Vy4t07, N25t07; +reg F65t07, X95t07, Pd5t07, Hh5t07, Tk5t07, Fo5t07, Rr5t07, Dv5t07, Py5t07, B26t07; +reg N56t07, Z86t07, Lc6t07, Xf6t07, Jj6t07, Vm6t07, Hq6t07, Tt6t07, Fx6t07, R07t07; +reg D47t07, P77t07, Bb7t07, Ne7t07, Zh7t07, Ll7t07, Xo7t07, Js7t07, Uv7t07, Gz7t07; +reg S28t07, E68t07, P98t07, Ad8t07, Lg8t07, Tj8t07, Gn8t07, Tq8t07, Gu8t07, Tx8t07; +reg K19t07, B59t07, S89t07, Gc9t07, Yf9t07, Qj9t07, In9t07, Ar9t07, Su9t07, Ey9t07; +reg Q1at07, C5at07, O8at07, Acat07, Mfat07, Yiat07, Kmat07, Wpat07, Itat07, Uwat07; +reg G0bt07, S3bt07, E7bt07, Qabt07, Cebt07, Ohbt07, Albt07, Mobt07, Yrbt07, Kvbt07; +reg Wybt07, I2ct07, U5ct07, F9ct07, Rcct07, Dgct07, Pjct07, Anct07, Lqct07, Wtct07; +reg Exct07, R0dt07, E4dt07, R7dt07, Ebdt07, Vedt07, Midt07, Dmdt07, Rpdt07, Jtdt07; +reg Bxdt07, T0et07, L4et07, D8et07, Pbet07, Bfet07, Niet07, Zlet07, Lpet07, Xset07; +reg Jwet07, Vzet07, H3ft07, T6ft07, Faft07, Rdft07, Dhft07, Pkft07, Boft07, Nrft07; +reg Zuft07, Lyft07, X1gt07, J5gt07, V8gt07, Hcgt07, Tfgt07, Fjgt07, Qmgt07, Cqgt07; +reg Otgt07, Axgt07, L0ht07, W3ht07, H7ht07, Paht07, Ceht07, Phht07, Clht07, Poht07; +reg Gsht07, Xvht07, Ozht07, C3it07, U6it07, Mait07, Eeit07, Whit07, Olit07, Apit07; +reg Msit07, Yvit07, Kzit07, W2jt07, I6jt07, U9jt07, Gdjt07, Sgjt07, Ekjt07, Qnjt07; +reg Crjt07, Oujt07, Ayjt07, M1kt07, Y4kt07, K8kt07, Wbkt07, Ifkt07, Uikt07, Gmkt07; +reg Spkt07, Etkt07, Qwkt07, B0lt07, N3lt07, Z6lt07, Lalt07, Wdlt07, Hhlt07, Sklt07; +reg Aolt07, Nrlt07, Avlt07, Nylt07, A2mt07, U3mt07, V5mt07, Q7mt07, Pamt07, Scmt07; +reg Uemt07, Rhmt07, Ilmt07, Zomt07, Qsmt07, Ewmt07, Wzmt07, O3nt07, G7nt07, Yant07; +reg Qent07, Cint07, Olnt07, Apnt07, Msnt07, Yvnt07, Kznt07, W2ot07, I6ot07, U9ot07; +reg Gdot07, Sgot07, Ekot07, Qnot07, Crot07, Ouot07, Ayot07, M1pt07, Y4pt07, K8pt07; +reg Wbpt07, Ifpt07, Uipt07, Gmpt07, Sppt07, Dtpt07, Pwpt07, B0qt07, N3qt07, Y6qt07; +reg Jaqt07, Udqt07, Chqt07, Pkqt07, Coqt07, Prqt07, Cvqt07, Zxqt07, Q1rt07, H5rt07; +reg Y8rt07, Mcrt07, Egrt07, Wjrt07, Onrt07, Grrt07, Yurt07, Kyrt07, W1st07, I5st07; +reg U8st07, Gcst07, Sfst07, Ejst07, Qmst07, Cqst07, Otst07, Axst07, M0tt07, Y3tt07; +reg K7tt07, Watt07, Iett07, Uhtt07, Gltt07, Sott07, Estt07, Qvtt07, Cztt07, O2ut07; +reg A6ut07, L9ut07, Xcut07, Jgut07, Vjut07, Gnut07, Rqut07, Cuut07, Kxut07, X0vt07; +reg K4vt07, X7vt07, Kbvt07, Hevt07, Yhvt07, Plvt07, Gpvt07, Usvt07, Mwvt07, E0wt07; +reg W3wt07, O7wt07, Gbwt07, Sewt07, Eiwt07, Qlwt07, Cpwt07, Oswt07, Awwt07, Mzwt07; +reg Y2xt07, K6xt07, W9xt07, Idxt07, Ugxt07, Gkxt07, Snxt07, Erxt07, Quxt07, Cyxt07; +reg O1yt07, A5yt07, M8yt07, Ybyt07, Kfyt07, Wiyt07, Imyt07, Tpyt07, Ftyt07, Rwyt07; +reg D0zt07, O3zt07, Z6zt07, Kazt07, Sdzt07, Fhzt07, Skzt07, Fozt07, Crzt07, Tuzt07; +reg Kyzt07, B20u07, P50u07, H90u07, Zc0u07, Rg0u07, Jk0u07, Bo0u07, Nr0u07, Zu0u07; +reg Ly0u07, X11u07, J51u07, V81u07, Hc1u07, Pf1u07, Cj1u07, Pm1u07, Cq1u07, Ot1u07; +reg Ax1u07, M02u07, Y32u07, K72u07, Wa2u07, Ie2u07, Uh2u07, Fl2u07, Ro2u07, Ds2u07; +reg Pv2u07, Az2u07, L23u07, W53u07, I93u07, Uc3u07, Gg3u07, Sj3u07, En3u07, Qq3u07; +reg Cu3u07, Ox3u07, Oz3u07, B34u07, O64u07, Ba4u07, Od4u07, Bh4u07, Ok4u07, Bo4u07; +reg Or4u07, Lt4u07, Av4u07, Pw4u07, Ey4u07, Tz4u07, I15u07, X25u07, M45u07, B65u07; +reg H85u07, Na5u07, Uc5u07, Ef5u07, Ii5u07, Pk5u07, Zm5u07, Xp5u07, Bt5u07, Iv5u07; +reg Sx5u07, W06u07, D36u07, I66u07, N96u07, Tc6u07, Zf6u07, Fj6u07, Lm6u07, Rp6u07; +reg Xs6u07, Dw6u07, Jz6u07, P27u07, V57u07, B97u07, Fc7u07, Fe7u07, Qg7u07, Qi7u07; +reg Bl7u07, Bn7u07, Mp7u07, Mr7u07, Xt7u07, Xv7u07, Iy7u07, I08u07, T28u07, T48u07; +reg E78u07, E98u07, Pb8u07, Pd8u07, Ag8u07, Bi8u07, Nk8u07, Om8u07, Ap8u07, Br8u07; +reg Nt8u07, Ov8u07, Ay8u07, B09u07, N29u07, O49u07, A79u07, B99u07, Nb9u07, Od9u07; +reg Ag9u07, Bi9u07, Nk9u07, Om9u07, Ap9u07, Br9u07, Nt9u07, Ov9u07, Ay9u07, B0au07; +reg N2au07, O4au07, A7au07, B9au07, Nbau07, Odau07, Agau07, Biau07, Nkau07, Omau07; +reg Apau07, Brau07, Ntau07, Ovau07, Ayau07, B0bu07, N2bu07, O4bu07, A7bu07, A9bu07; +reg Zabu07, Ldbu07, Sfbu07, Rhbu07, Dkbu07, Kmbu07, Jobu07, Vqbu07, Ctbu07, Bvbu07; +reg Nxbu07, Uzbu07, T1cu07, F4cu07, M6cu07, L8cu07, Xacu07, Edcu07, Dfcu07, Phcu07; +reg Ojcu07, Amcu07, Zncu07, Lqcu07, Lscu07, Yucu07, Ywcu07, Lzcu07, L1du07, Y3du07; +reg Y5du07, L8du07, Ladu07, Ycdu07, Yedu07, Lhdu07, Ljdu07, Yldu07, Yndu07, Lqdu07; +reg Lsdu07, Yudu07, Ywdu07, Lzdu07, L1eu07, Y3eu07, Y5eu07, L8eu07, Laeu07, Yceu07; +reg Yeeu07, Lheu07, Ljeu07, Yleu07, Yneu07, Lqeu07, Lseu07, Yueu07, Yweu07, Lzeu07; +reg L1fu07, Y3fu07, Y5fu07, L8fu07, Lafu07, Ycfu07, Lffu07, Mhfu07, Ljfu07, Rlfu07; +reg Rnfu07, Zpfu07, Bsfu07, Cufu07, Dwfu07, Eyfu07, D0gu07, D2gu07, L4gu07, N6gu07; +reg O9gu07, Pbgu07, Ndgu07, Ofgu07, Uhgu07, Akgu07, Imgu07, Qogu07, Uqgu07, Xsgu07; +reg Wugu07, Vwgu07, Azgu07, D1hu07, E3hu07, H5hu07, K7hu07, N9hu07, Rbhu07, Vdhu07; +reg Zfhu07, Dihu07, Hkhu07, Lmhu07, Pohu07, Tqhu07, Xshu07, Bvhu07, Fxhu07, Jzhu07; +reg N1iu07, R3iu07, V5iu07, Z7iu07, Daiu07, Hciu07, Leiu07, Pgiu07, Tiiu07, Xkiu07; +reg Fniu07, Npiu07, Vriu07, Ytiu07, Gwiu07, Oyiu07, W0ju07, E3ju07, M5ju07, U7ju07; +reg Caju07, Kcju07, Seju07, Ahju07, Ijju07, Qlju07, Ynju07, Gqju07, Osju07, Wuju07; +reg Exju07, Mzju07, T1ku07, A4ku07, J6ku07, A9ku07, Ibku07, Gdku07, Afku07, Zgku07; +reg Xiku07, Vkku07, Tmku07, Roku07, Pqku07, Nsku07, Luku07, Jwku07, Hyku07, G0lu07; +reg F2lu07, E4lu07, D6lu07, C8lu07, Ualu07, Qclu07, Pelu07, Qglu07, Qilu07, Tklu07; +reg Vmlu07, Hqlu07, Stlu07, Exlu07, P0mu07, B4mu07, M7mu07, Yamu07, Jemu07, Vhmu07; +reg Glmu07, Somu07, Dsmu07, Pvmu07, Azmu07, M2nu07, X5nu07, U7nu07, W9nu07, Mbnu07; +reg Bdnu07, Qenu07, Fgnu07, Uhnu07, Jjnu07, Yknu07, Nmnu07, Conu07, Frnu07, Wtnu07; +reg Ee9917, Ng9917, Sj9917, Jm9917, Mp9917, Vr9917, Av9917, Ix9917, Zz9917, I2a917; +reg Z4a917, C8a917, Laa917, Hda917, Dga917, Zia917, Vla917, Roa917, Nra917, Mta917; +reg Mva917, Rxa917, Vza917, Y1b917, W3b917, X6b917, A9b917, Dbb917, Gdb917, Jfb917; +reg Mhb917, Pjb917, Slb917, Vnb917, Ypb917, Bsb917, Fub917, Jwb917, Nyb917, R0c917; +reg V2c917, Z4c917, D7c917, H9c917, Lbc917, Pdc917, Tfc917, Xhc917, Bkc917, Slc917; +reg Rnc917, Mpc917, Vrc917, Muc917, Uwc917, Vyc917, N1d917, C4d917, R6d917, G9d917; +reg Vbd917, Ydd917, Dgd917, Nid917, Rkd917, Wmd917, Gpd917, Krd917, Rtd917, Wvd917; +reg Gyd917, K0e917, R2e917, W4e917, V7e917, Uae917, Sde917, Qge917, Pje917, Ome917; +reg Yoe917, Cre917, Jte917, Ove917, Yxe917, C0f917, H2f917, G5f917, F8f917, Ebf917; +reg Def917, Chf917, Bkf917, Zmf917, Wof917, Vrf917, Uuf917, Txf917, S0g917, R3g917; +reg Q6g917, P9g917, Ocg917, Nfg917, Mig917, Llg917, Kog917, Jrg917, Iug917, Hxg917; +reg F0h917, D3h917, C6h917, B9h917, Ach917, Zeh917, Yhh917, Xkh917, Wnh917, Vqh917; +reg Uth917, Twh917, Szh917, R2i917, Q5i917, P8i917, Obi917, Nei917, Mhi917, Lki917; +reg Kni917, Jqi917, Iti917, Hwi917, Gzi917, F2j917, E5j917, D8j917, Naj917, Rcj917; +reg Qfj917, Pij917, Olj917, Noj917, Lrj917, Qtj917, Vvj917, Ayj917, F0k917, G2k917; +reg J4k917, M6k917, J8k917, Bck917, Nfk917, Fjk917, Rmk917, Jqk917, Vtk917, Nxk917; +reg Z0l917, R4l917, D8l917, Vbl917, Hfl917, Zil917, Lml917, Dql917, Ptl917, Svl917; +reg Yyl917, P0m917, F2m917, V3m917, L5m917, B7m917, R8m917, Ham917, Xbm917, Ndm917; +reg Nfm917, Phm917, Ikm917, Emm917, Hom917, Lqm917, Psm917, Tum917, Xwm917, Bzm917; +reg F1n917, J3n917, O5n917, T7n917, Y9n917, Dcn917, Ien917, Ngn917, Sin917, Xkn917; +reg Ann917, Dpn917, Ern917, Btn917, Nwn917, Zzn917, L3o917, X6o917, Jao917, Vdo917; +reg Hho917, Tko917, Vmo917, Woo917, Xqo917, Yso917, Zuo917, Axo917, Bzo917, C1p917; +reg D3p917, E5p917, F7p917, H9p917, Nbp917, Udp917, Bgp917, Iip917, Pkp917, Dnp917; +reg Spp917, Bsp917, Kup917, Twp917, Czp917, L1q917, U3q917, D6q917, M8q917, Vaq917; +reg Edq917, Nfq917, Whq917, Fkq917, Omq917, Xoq917, Grq917, Ptq917, Yvq917, Hyq917; +reg Q0r917, Z2r917, I5r917, Q7r917, Y9r917, Gcr917, Oer917, Wgr917, Ejr917, Mlr917; +reg Unr917, Cqr917, Esr917, Gur917, Iwr917, Kyr917, M0s917, O2s917, Q4s917, S6s917; +reg U8s917, Was917, Ycs917, Afs917, Chs917, Ejs917, Gls917, Ins917, Lps917, Krs917; +reg Ats917, Tus917, Qws917, Nys917, K0t917, G2t917, C4t917, Y5t917, U7t917, Q9t917; +reg Mbt917, Idt917, Fft917, Cht917, Zit917, Vkt917, Tmt917, Ipt917, Xrt917, Qtt917; +reg Bwt917, Myt917, K0u917, X2u917, N5u917, D8u917, Qau917, Gdu917, Wfu917, Jiu917; +reg Zku917, Pnu917, Opu917, Mru917, Ktu917, Yvu917, Myu917, N0v917, F3v917, X5v917; +reg R7v917, J9v917, Ebv917, Rdv917, Hgv917, Xiv917, Klv917, Aov917, Qqv917, Dtv917; +reg Tvv917, Jyv917, J0w917, G2w917, G4w917, D6w917, A8w917, X9w917, Rbw917, Ndw917; +reg Jfw917, Fhw917, Bjw917, Ykw917, Smw917, Pow917, Qqw917, Rsw917, Suw917, Tww917; +reg Oyw917, O0x917, O2x917, O4x917, T6x917, E9x917, Pbx917, Mdx917, Efx917, Dhx917; +reg Cjx917, Blx917, Anx917, Zox917, Wqx917, Osx917, Jux917, Lwx917, Nyx917, P0y917; +reg S2y917, Y5y917, P7y917, F9y917, Vay917, Lcy917, Bey917, Rfy917, Hhy917, Xiy917; +reg Nky917, Pmy917, Moy917, Hqy917, Zry917, Lty917, Ovy917, Uxy917, A0z917, N2z917; +reg A5z917, N7z917, Aaz917, Ncz917, Afz917, Nhz917, Bkz917, Pmz917, Dpz917, Rrz917; +reg Fuz917, Twz917, Hzz917, V10a17, J40a17, X60a17, L90a17, Zb0a17, Ne0a17, Bh0a17; +reg Pj0a17, Dm0a17, Qo0a17, Dr0a17, Ot0a17, Bw0a17, Oy0a17, B11a17, R31a17, N61a17; +reg R91a17, Jb1a17, Xd1a17, Lg1a17, Zi1a17, Ml1a17, Po1a17, Or1a17, Nu1a17, Mx1a17; +reg L02a17, K32a17, J62a17, I92a17, Hc2a17, Gf2a17, Ki2a17, Jl2a17, Io2a17, Hr2a17; +reg Gu2a17, Fx2a17, E03a17, D33a17, C63a17, B93a17, Ac3a17, Ze3a17, Yh3a17, Xk3a17; +reg Wn3a17, Vq3a17, Ut3a17, Tw3a17, Sz3a17, R24a17, Q54a17, P84a17, Ob4a17, Ne4a17; +reg Mh4a17, Lk4a17, Kn4a17, Jq4a17, It4a17, Hw4a17, Gz4a17, F25a17, E55a17, C85a17; +reg Bb5a17, Ae5a17, Zg5a17, Yj5a17, Xm5a17, Wp5a17, Vs5a17, Uv5a17, Ty5a17, S16a17; +reg R46a17, Q76a17, Pa6a17, Od6a17, Ng6a17, Lj6a17, Jm6a17, Ip6a17, Hs6a17, Gv6a17; +reg Fy6a17, E17a17, I37a17, H67a17, G97a17, Qb7a17, Ud7a17, Bg7a17, Ei7a17, Ik7a17; +reg Gm7a17, Fo7a17, Eq7a17, Ds7a17, Cu7a17, Bw7a17, Zx7a17, Tz7a17, B28a17, A48a17; +reg O68a17, O88a17, Ma8a17, Kc8a17, Ie8a17, Gg8a17, Ei8a17, Ck8a17, Am8a17, Yn8a17; +reg Wp8a17, Nr8a17, Mt8a17, Dv8a17, Cx8a17, Kz8a17, M19a17, L39a17, I59a17, F79a17; +reg C99a17, Za9a17, Qc9a17, Ne9a17, Kg9a17, Hi9a17, Ek9a17, Bm9a17, Yn9a17, Vp9a17; +reg Sr9a17, Pt9a17, Mv9a17, Jx9a17, Gz9a17, N1aa17, U3aa17, B6aa17, Y7aa17, V9aa17; +reg Sbaa17, Pdaa17, Mfaa17, Jhaa17, Gjaa17, Dlaa17, Anaa17, Xoaa17, Uqaa17, Rsaa17; +reg Ouaa17, Lwaa17, Iyaa17, F0ba17, C2ba17, Z3ba17, W5ba17, T7ba17, Q9ba17, Nbba17; +reg Kdba17, Hfba17, Ohba17, Skba17, Pmba17, Tpba17, Rrba17, Ptba17, Pvba17, Pxba17; +reg Xzba17, F2ca17, N4ca17, K6ca17, H8ca17, Eaca17, Bcca17, Ydca17, Vfca17, Shca17; +reg Pjca17, Mlca17, Jnca17, Gpca17, Drca17, Atca17, Xuca17, Uwca17, Ryca17, O0da17; +reg L2da17, I4da17, F6da17, C8da17, Z9da17, Wbda17, Tdda17, Qfda17, Nhda17, Kjda17; +reg Hlda17, Enda17, Bpda17, Yqda17, Vsda17, Suda17, Pwda17, Myda17, J0ea17, G2ea17; +reg D4ea17, A6ea17, X7ea17, U9ea17, Rbea17, Odea17, Lfea17, Ihea17, Djea17, Blea17; +reg Zmea17, Xoea17, Xqea17, Tsea17, Wvea17, Kyea17, J1fa17, I4fa17, H7fa17, Uafa17; +reg Bdfa17, Iffa17, Phfa17, Wjfa17, Dmfa17, Kofa17, Rqfa17, Ysfa17, Mvfa17, Uxfa17; +reg C0ga17, K2ga17, S4ga17, A7ga17, I9ga17, Qbga17, Ndga17, Cfga17, Rgga17, Giga17; +reg Vjga17, Klga17, Zmga17, Ooga17, Dqga17, Jsga17, Puga17, Mwga17, Bzga17, V0ha17; +reg V2ha17, X5ha17, Z8ha17, Qbha17, Ieha17, Ahha17, Sjha17, Omha17, Gpha17, Yrha17; +reg Quha17, Mxha17, L0ia17, K3ia17, J6ia17, I9ia17, Hcia17, Gfia17, Fiia17, Elia17; +reg Ynia17, Sqia17, Ntia17, Iwia17, Dzia17, Y1ja17, T4ja17, O7ja17, Jaja17, Hdja17; +reg Fgja17, Ejja17, Mlja17, Vnja17, Sqja17, Ptja17, Mwja17, Jzja17, G2ka17, D5ka17; +reg A8ka17, Xaka17, Vdka17, Tgka17, Qjka17, Nmka17, Lpka17, Jska17, Hvka17, Fyka17; +reg D1la17, B4la17, Z6la17, X9la17, Vcla17, Tfla17, Rila17, Plla17, Nola17, Lrla17; +reg Jula17, Hxla17, F0ma17, Z2ma17, T5ma17, N8ma17, Ibma17, Dema17, Ygma17, Tjma17; +reg Omma17, Jpma17, Gsma17, Dvma17, Ayma17, X0na17, U3na17, R6na17, O9na17, Lcna17; +reg Ifna17, Fina17, Dlna17, Bona17, Zqna17, Xtna17, Vwna17, Tzna17, R2oa17, P5oa17; +reg N8oa17, Lboa17, Jeoa17, Hhoa17, Fkoa17, Dnoa17, Bqoa17, Zsoa17, Xvoa17, Vyoa17; +reg T1pa17, R4pa17, O7pa17, Oapa17, Tdpa17, Agpa17, Kipa17, Ukpa17, Enpa17, Oppa17; +reg Mspa17, Kvpa17, Pxpa17, M0qa17, O2qa17, G4qa17, I6qa17, S8qa17, Jbqa17, Aeqa17; +reg Lgqa17, Wiqa17, Hlqa17, Snqa17, Dqqa17, Osqa17, Zuqa17, Kxqa17, Vzqa17, G2ra17; +reg S4ra17, E7ra17, Q9ra17, Ccra17, Oera17, Ahra17, Mjra17, Ylra17, Kora17, Wqra17; +reg Itra17, Uvra17, Gyra17, S0sa17, E3sa17, Q5sa17, C8sa17, Oasa17, Adsa17, Mfsa17; +reg Yhsa17, Kksa17, Rnsa17, Arsa17, Tssa17, Musa17, Fwsa17, Yxsa17, Rzsa17, K1ta17; +reg D3ta17, W4ta17, P6ta17, I8ta17, Cata17, Wbta17, Qdta17, Kfta17, Ehta17, Yita17; +reg Skta17, Mmta17, Gota17, Aqta17, Trta17, Qtta17, Ivta17, Bxta17, Yyta17, Q0ua17; +reg L2ua17, H4ua17, D6ua17, Z7ua17, V9ua17, Rbua17, Ndua17, Jfua17, Fhua17, Bjua17; +reg Xkua17, Tmua17, Poua17, Lqua17, Hsua17, Duua17, Zvua17, Vxua17, Rzua17, N1va17; +reg J3va17, F5va17, B7va17, X8va17, Tava17, Pcva17, Leva17, Hgva17, Diva17, Zjva17; +reg Vlva17, Rnva17, Npva17, Jrva17, Ftva17, Bvva17, Xwva17, Tyva17, P0wa17, K2wa17; +reg F4wa17, A6wa17, V7wa17, Q9wa17, Lbwa17, Gdwa17, Bfwa17, Wgwa17, Oiwa17, Mkwa17; +reg Kmwa17, Iowa17, Fqwa17, Wrwa17, Utwa17, Svwa17, Qxwa17, Ozwa17, K1xa17, M4xa17; +reg O7xa17, Vaxa17, Cexa17, Jhxa17, Skxa17, Knxa17, Cqxa17, Nsxa17, Yuxa17, Qxxa17; +reg I0ya17, T2ya17, E5ya17, P7ya17, Aaya17, Lcya17, Dfya17, Vhya17, Gkya17, Rmya17; +reg Vpya17, Trya17, Rtya17, Ovya17, Lxya17, Izya17, F1za17, C3za17, Z4za17, W6za17; +reg T8za17, Qaza17, Ncza17, Keza17, Hgza17, Eiza17, Bkza17, Ylza17, Vnza17, Spza17; +reg Prza17, Mtza17, Jvza17, Gxza17, Dzza17, A10b17, X20b17, S40b17, Q60b17, O80b17; +reg Ma0b17, Kc0b17, He0b17, Eg0b17, Bi0b17, Yj0b17, Vl0b17, Sn0b17, Pp0b17, Mr0b17; +reg Jt0b17, Gv0b17, Dx0b17, Az0b17, X01b17, U21b17, R41b17, O61b17, L81b17, Ia1b17; +reg Fc1b17, Ce1b17, Zf1b17, Wh1b17, Tj1b17, Ql1b17, Nn1b17, Kp1b17, Hr1b17, Et1b17; +reg Bv1b17, Yw1b17, Vy1b17, S02b17, P22b17, M42b17, J62b17, G82b17, Da2b17, Ac2b17; +reg Xd2b17, Uf2b17, Rh2b17, Oj2b17, Ll2b17, In2b17, Fp2b17, Cr2b17, Zs2b17, Wu2b17; +reg Tw2b17, Qy2b17, N03b17, K23b17, H43b17, E63b17, B83b17, Y93b17, Vb3b17, Sd3b17; +reg Pf3b17, Mh3b17, Jj3b17, Gl3b17, Dn3b17, Ap3b17, Xq3b17, Us3b17, Ru3b17, Ow3b17; +reg Ly3b17, I04b17, F24b17, C44b17, Z54b17, W74b17, T94b17, Qb4b17, Nd4b17, Kf4b17; +reg Hh4b17, Ej4b17, Zk4b17, Xm4b17, Vo4b17, Tq4b17, Rs4b17, Pu4b17, Nw4b17, Uy4b17; +reg X05b17, D45b17, U55b17, K75b17, A95b17, Qa5b17, Gc5b17, Wd5b17, Mf5b17, Ch5b17; +reg Si5b17, Sk5b17, Um5b17, Ro5b17, Cr5b17, Nt5b17, Yv5b17, Jy5b17, U06b17, F36b17; +reg Q56b17, T86b17, Wb6b17, Qe6b17, Tg6b17, Zj6b17, Ql6b17, Gn6b17, Wo6b17, Mq6b17; +reg Cs6b17, St6b17, Iv6b17, Yw6b17, Oy6b17, L07b17, M37b17, Q57b17, R67b17, T77b17; +reg V87b17, W97b17, Xa7b17, Yb7b17, Zc7b17, Yg5m17, Ai5m17, Cj5m17, Ek5m17, Gl5m17; +reg Im5m17, Kn5m17, Mo5m17, Op5m17, Qq5m17, Sr5m17, Us5m17, Wt5m17, Yu5m17, Aw5m17; +reg Cx5m17, Ey5m17, Gz5m17, I06m17, K16m17, M26m17, O36m17, Q46m17, S56m17, U66m17; +reg W76m17, Y86m17, Aa6m17, Cb6m17, Ec6m17, Gd6m17, Ie6m17, Kf6m17, Mg6m17, Oh6m17; +reg Qi6m17, Sj6m17, Uk6m17, Wl6m17, Ym6m17, Ao6m17, Cp6m17, Eq6m17, Gr6m17, Is6m17; +reg Kt6m17, Mu6m17, Ov6m17, Qw6m17, Sx6m17, Uy6m17, Wz6m17, Y07m17, A27m17, B37m17; +reg Z47m17, X67m17, Y87m17, Fb7m17, Je7m17, Nh7m17, Tj7m17, Zl7m17, Fo7m17, Lq7m17; +reg Js7m17, Hu7m17, Fw7m17, Jy7m17, G08m17, N28m17, E58m17, V78m17, Ka8m17, Zc8m17; +reg Ye8m17, Ph8m17, Gk8m17, Nm8m17, Cp8m17, Br8m17, At8m17, Zu8m17, Yw8m17, Fz8m17; +reg W19m17, N49m17, C79m17, R99m17, Yb9m17, Pe9m17, Gh9m17, Vj9m17, Mm9m17, Dp9m17; +reg Or9m17, Du9m17, Ow9m17, Dz9m17, T0am17, I2am17, X3am17, M5am17, B7am17, Q8am17; +reg Faam17, Ubam17, Jdam17, Pfam17, Vham17, Sjam17, Wmam17, Toam17, Zqam17, Ntam17; +reg Tvam17, Qxam17, U0bm17, A3bm17, O5bm17, L7bm17, I9bm17, Tbbm17, Eebm17, Tgbm17; +reg Ejbm17, Plbm17, Eobm17, Pqbm17, Atbm17, Pvbm17, Aybm17, L0cm17, A3cm17, B6cm17; +reg H9cm17, Rbcm17, Pecm17, Mgcm17, Djcm17, Ulcm17, Locm17, Crcm17, Ttcm17, Kwcm17; +reg Bzcm17, S1dm17, J4dm17, B7dm17, T9dm17, Lcdm17, Dfdm17, Vhdm17, Nkdm17, Endm17; +reg Fodm17, Irdm17, Ftdm17, Jwdm17, Mydm17, D0em17, T1em17, J3em17, Z4em17, P6em17; +reg F8em17, V9em17, Lbem17, Bdem17, Dfem17, Ahem17, Ljem17, Wlem17, Loem17, Wqem17; +reg Htem17, Wvem17, Hyem17, S0fm17, H3fm17, S5fm17, D8fm17, Safm17, Tdfm17, Zgfm17; +reg Dkfm17, Rmfm17, Fpfm17, Srfm17, Dufm17, Owfm17, Dzfm17, O1gm17, Z3gm17, O6gm17; +reg Z8gm17, Kbgm17, Zdgm17, Kggm17, Vigm17, Klgm17, Oogm17, Kqgm17, Otgm17, Lvgm17; +reg Lygm17, M1hm17, O2hm17, Q3hm17, R4hm17, O6hm17, Z8hm17, Kbhm17, Zdhm17, Kghm17; +reg Vihm17, Klhm17, Vnhm17, Gqhm17, Vshm17, Gvhm17, Rxhm17, G0im17, J3im17, N6im17; +reg L8im17, Maim17, Pcim17, Vfim17, Mhim17, Cjim17, Skim17, Imim17, Ynim17, Opim17; +reg Erim17, Usim17, Kuim17, Hwim17, Syim17, D1jm17, S3jm17, D6jm17, O8jm17, Dbjm17; +reg Odjm17, Zfjm17, Oijm17, Zkjm17, Knjm17, Zpjm17, Xrjm17, Ytjm17, Ywjm17, D0km17; +reg H3km17, A5km17, T6km17, M8km17, Fakm17, Wbkm17, Pdkm17, Ifkm17, Fhkm17, Yikm17; +reg Alkm17, Xmkm17, Uokm17, Frkm17, Qtkm17, Fwkm17, Qykm17, B1lm17, Q3lm17, B6lm17; +reg M8lm17, Bblm17, Mdlm17, Xflm17, Milm17, Xklm17, Inlm17, Xplm17, Xrlm17, Vtlm17; +reg Wvlm17, Xylm17, Y1mm17, Z4mm17, E8mm17, Abmm17, Wdmm17, Sgmm17, Mjmm17, Cmmm17; +reg Xomm17, Asmm17, Vumm17, Yxmm17, T0nm17, W3nm17, R6nm17, M9nm17, Pcnm17, Kfnm17; +reg Ninm17, Ilnm17, Lonm17, Grnm17, Junm17, Exnm17, I0om17, D3om17, H6om17, L9om17; +reg Pcom17, Tfom17, Xiom17, Bmom17, Fpom17, Jsom17, Nvom17, Ryom17, V1pm17, Z4pm17; +reg D8pm17, Hbpm17, Lepm17, Phpm17, Tkpm17, Xnpm17, Brpm17, Fupm17, Jxpm17, M0qm17; +reg P3qm17, A5qm17, Y6qm17, Z8qm17, Xaqm17, Wcqm17, Veqm17, Ugqm17, Tiqm17, Skqm17; +reg Rmqm17, Qoqm17, Rqqm17, Ssqm17, Tuqm17, Uwqm17, Syqm17, T0rm17, Q2rm17, B5rm17; +reg M7rm17, Barm17, Mcrm17, Xerm17, Mhrm17, Xjrm17, Imrm17, Xorm17, Irrm17, Ttrm17; +reg Iwrm17, Tyrm17, E1sm17, T3sm17, V5sm17, N7sm17, A9sm17, Oasm17, Rdsm17, Ugsm17; +reg Ajsm17, Tksm17, Jnsm17, Dqsm17, Assm17, Uusm17, Sxsm17, Q0tm17, O3tm17, M6tm17; +reg K9tm17, Ictm17, Fftm17, Dhtm17, Ejtm17, Fltm17, Vntm17, Lqtm17, Bttm17, Svtm17; +reg Jytm17, A1um17, R3um17, I6um17, Z8um17, Qbum17, Heum17, Ygum17, Pjum17, Gmum17; +reg Xoum17, Orum17, Fuum17, Wwum17, Nzum17, E2vm17, V4vm17, M7vm17, Davm17, Ucvm17; +reg Lfvm17, Ihvm17, Gjvm17, Hlvm17, Invm17, Gpvm17, Ksvm17, Duvm17, Wvvm17, Pxvm17; +reg Izvm17, B1wm17, U2wm17, N4wm17, G6wm17, Z7wm17, W9wm17, Tbwm17, Udwm17, Vfwm17; +reg Thwm17, Rjwm17; +wire [33:0] Llwm17; +wire [33:0] Cnwm17; +wire [4:0] Towm17; +wire [33:0] Jqwm17; +wire [33:0] Dswm17; +wire [31:0] Puwm17; +wire [31:0] Dxwm17; +wire [33:0] Rzwm17; +wire [33:0] H2xm17; +wire [63:0] W4xm17; +wire [30:0] Y6xm17; +wire [30:0] A9xm17; +wire [33:0] Cbxm17; +wire [33:0] Edxm17; +wire [33:0] Gfxm17; +wire [33:0] Cixm17; +wire [33:0] Wkxm17; +wire [33:0] Snxm17; +wire [31:0] Mqxm17; +wire [33:0] Wtxm17; +wire [31:0] Gxxm17; +wire [33:0] Q0ym17; +wire [33:0] A4ym17; +wire [33:0] K7ym17; +wire [33:0] Uaym17; +wire [33:0] Ldym17; +wire [33:0] Agym17; +wire [33:0] Riym17; +wire [63:0] Glym17; +wire [5:0] Xnym17; +wire [31:0] Mqym17; +wire [33:0] Etym17; +wire [6:0] Uvym17; +wire [33:0] Jyym17; +wire [33:0] H1zm17; +wire [33:0] F4zm17; +wire [33:0] D7zm17; +wire [33:0] Z9zm17; + +assign HTRANSI[0] = 1'b0; +assign HADDRI[1] = 1'b0; +assign HADDRI[0] = 1'b0; +assign HSIZES[2] = 1'b0; +assign HBURSTD[1] = 1'b0; +assign HBURSTD[2] = 1'b0; +assign HBURSTS[1] = 1'b0; +assign HBURSTS[2] = 1'b0; +assign CURRPRI[4] = 1'b0; +assign CURRPRI[3] = 1'b0; +assign CURRPRI[2] = 1'b0; +assign CURRPRI[1] = 1'b0; +assign CURRPRI[0] = 1'b0; +assign HTMDHSIZE[2] = 1'b0; +assign HTMDHPROT[3] = 1'b0; +assign HTMDHPROT[2] = 1'b0; +assign HTMDHRDATA[31] = HTMDHWDATA[31]; +assign HTMDHRDATA[30] = HTMDHWDATA[30]; +assign HTMDHRDATA[29] = HTMDHWDATA[29]; +assign HTMDHRDATA[28] = HTMDHWDATA[28]; +assign HTMDHRDATA[27] = HTMDHWDATA[27]; +assign HTMDHRDATA[26] = HTMDHWDATA[26]; +assign HTMDHRDATA[25] = HTMDHWDATA[25]; +assign HTMDHRDATA[24] = HTMDHWDATA[24]; +assign HTMDHRDATA[23] = HTMDHWDATA[23]; +assign HTMDHRDATA[22] = HTMDHWDATA[22]; +assign HTMDHRDATA[21] = HTMDHWDATA[21]; +assign HTMDHRDATA[20] = HTMDHWDATA[20]; +assign HTMDHRDATA[19] = HTMDHWDATA[19]; +assign HTMDHRDATA[18] = HTMDHWDATA[18]; +assign HTMDHRDATA[17] = HTMDHWDATA[17]; +assign HTMDHRDATA[16] = HTMDHWDATA[16]; +assign HTMDHRDATA[15] = HTMDHWDATA[15]; +assign HTMDHRDATA[14] = HTMDHWDATA[14]; +assign HTMDHRDATA[13] = HTMDHWDATA[13]; +assign HTMDHRDATA[12] = HTMDHWDATA[12]; +assign HTMDHRDATA[11] = HTMDHWDATA[11]; +assign HTMDHRDATA[10] = HTMDHWDATA[10]; +assign HTMDHRDATA[9] = HTMDHWDATA[9]; +assign HTMDHRDATA[8] = HTMDHWDATA[8]; +assign HTMDHRDATA[7] = HTMDHWDATA[7]; +assign HTMDHRDATA[6] = HTMDHWDATA[6]; +assign HTMDHRDATA[5] = HTMDHWDATA[5]; +assign HTMDHRDATA[4] = HTMDHWDATA[4]; +assign HTMDHRDATA[3] = HTMDHWDATA[3]; +assign HTMDHRDATA[2] = HTMDHWDATA[2]; +assign HTMDHRDATA[1] = HTMDHWDATA[1]; +assign HTMDHRDATA[0] = HTMDHWDATA[0]; +assign HBURSTI[2] = 1'b0; +assign HBURSTI[1] = 1'b0; +assign HBURSTI[0] = 1'b0; +assign HSIZEI[1] = 1'b1; +assign HSIZEI[0] = 1'b0; +assign HADDRI[31] = 1'b0; +assign HADDRI[30] = 1'b0; +assign HADDRI[29] = 1'b0; +assign HSIZEI[2] = 1'b0; +assign HPROTI[2] = 1'b0; +assign MEMATTRI[1] = 1'b0; +assign HPROTI[3] = 1'b1; +assign MEMATTRI[0] = 1'b1; +assign HADDRD[31] = 1'b0; +assign HADDRD[30] = 1'b0; +assign HADDRD[29] = 1'b0; +assign HSIZED[2] = 1'b0; +assign HPROTD[2] = 1'b0; +assign MEMATTRD[1] = 1'b0; +assign HPROTD[3] = 1'b1; +assign MEMATTRD[0] = 1'b1; +assign TRCENA = HTMDHBURST[0]; +assign HTMDHBURST[2] = 1'b0; +assign HTMDHBURST[1] = 1'b0; +assign M4adt6 = Sj2nz6; +assign Cy9dt6 = Ik2nz6; +assign Y4adt6 = Zk2nz6; +assign Ez9dt6 = Ql2nz6; +assign L5adt6 = Im2nz6; +assign G0adt6 = Ym2nz6; +assign X5adt6 = Pn2nz6; +assign D1adt6 = Go2nz6; +assign Aabdt6 = Yo2nz6; +assign Kr97z6 = Eq2nz6; +assign Cbbdt6 = Er2nz6; +assign Cb77z6 = Hs2nz6; +assign Bcbdt6 = Et2nz6; +assign Cwadt6 = Su2nz6; +assign Dwb7z6[0] = Aw2nz6; +assign Dwb7z6[1] = Ny2nz6; +assign Dwb7z6[2] = A13nz6; +assign Dwb7z6[3] = N33nz6; +assign Dwb7z6[4] = A63nz6; +assign Dwb7z6[5] = N83nz6; +assign Ffeet6 = Ab3nz6; +assign Cr97z6 = (!Cd3nz6); +assign Evadt6 = Bf3nz6; +assign Jd47v6 = Yg3nz6; +assign Mp67v6 = Xh3nz6; +assign Gj47v6 = Vj3nz6; +assign Tah7v6 = Ul3nz6; +assign I977v6 = Un3nz6; +assign Fy67v6 = Ip3nz6; +assign Gg77v6 = Vq3nz6; +assign Dp77v6 = Ms3nz6; +assign TRACECLK = Su3nz6; +assign Tho7v6 = (!Su3nz6); +assign Ti2nz6[5] = Mw3nz6; +assign Pdc7z6[26] = Sx3nz6; +assign Kxb7z6[26] = T04nz6; +assign Fth7z6[31] = D34nz6; +assign Wlr7z6[31] = B64nz6; +assign K0wmz6[7] = P84nz6; +assign Nsvmz6[7] = Ab4nz6; +assign La6ft6 = Pd4nz6; +assign V7xmz6[7] = Jf4nz6; +assign V7xmz6[1] = Jh4nz6; +assign Pp1nz6[1] = Jj4nz6; +assign U81nz6[1] = Hl4nz6; +assign J1h7v6 = Un4nz6; +assign Af1nz6[1] = Nq4nz6; +assign Itb7z6[0] = Gt4nz6; +assign Tim7z6[0] = Yv4nz6; +assign Zec7z6[16] = My4nz6; +assign Dvc7z6[31] = L15nz6; +assign Hrb7z6[1] = R45nz6; +assign Zec7z6[15] = H65nz6; +assign Byc7z6[15] = G95nz6; +assign Zec7z6[31] = Kc5nz6; +assign Lvg7z6[3] = Jf5nz6; +assign Vi7et6 = Mi5nz6; +assign Fth7z6[0] = Kl5nz6; +assign Kxb7z6[0] = Ho5nz6; +assign D6gdt6 = Qq5nz6; +assign X9s7z6[38] = Rs5nz6; +assign Gyvmz6[6] = Ou5nz6; +assign Nsvmz6[6] = Zw5nz6; +assign V7xmz6[6] = Oz5nz6; +assign Mm1nz6[6] = O16nz6; +assign Pdc7z6[30] = M36nz6; +assign Kxb7z6[30] = N66nz6; +assign Alf7z6[31] = X86nz6; +assign Yxf7z6[0] = Vb6nz6; +assign Yxf7z6[4] = Pe6nz6; +assign Yxf7z6[8] = Jh6nz6; +assign Yxf7z6[12] = Dk6nz6; +assign Yxf7z6[16] = Ym6nz6; +assign Yxf7z6[20] = Tp6nz6; +assign Yxf7z6[24] = Os6nz6; +assign Yxf7z6[28] = Jv6nz6; +assign Yxf7z6[32] = Ey6nz6; +assign O4gdt6 = Z07nz6; +assign Tim7z6[31] = A37nz6; +assign Itb7z6[31] = P57nz6; +assign Dto7z6[1] = H87nz6; +assign Woyet6 = Z97nz6; +assign Znn7z6[1] = Oc7nz6; +assign Hjn7z6[6] = Af7nz6; +assign Tim7z6[30] = Qh7nz6; +assign Fth7z6[6] = Fk7nz6; +assign Pdc7z6[6] = Cn7nz6; +assign Kxb7z6[6] = Cq7nz6; +assign Onf7z6[31] = Ls7nz6; +assign Yxf7z6[3] = Jv7nz6; +assign Yxf7z6[7] = Dy7nz6; +assign Yxf7z6[11] = X08nz6; +assign Yxf7z6[15] = S38nz6; +assign Yxf7z6[19] = N68nz6; +assign Yxf7z6[23] = I98nz6; +assign Yxf7z6[27] = Dc8nz6; +assign Yxf7z6[31] = Ye8nz6; +assign H9gdt6 = Th8nz6; +assign X9s7z6[36] = Uj8nz6; +assign Gyvmz6[4] = Rl8nz6; +assign Nsvmz6[4] = Co8nz6; +assign V7xmz6[4] = Rq8nz6; +assign Mm1nz6[4] = Rs8nz6; +assign Pdc7z6[28] = Pu8nz6; +assign Kxb7z6[28] = Qx8nz6; +assign Fre7z6[0] = A09nz6; +assign Elgdt6 = X29nz6; +assign Onf7z6[30] = R59nz6; +assign D5f7z6[5] = P89nz6; +assign Bdf7z6[1] = Lb9nz6; +assign K1i7z6[0] = Le9nz6; +assign V5k7z6[31] = Oh9nz6; +assign Fth7z6[30] = Ik9nz6; +assign M6j7z6[63] = Gn9nz6; +assign Itbet6 = Fq9nz6; +assign M6bdt6 = Ct9nz6; +assign Oc47v6 = Av9nz6; +assign Uq97z6 = Zv9nz6; +assign Mq97z6 = Zw9nz6; +assign Eq97z6 = Zx9nz6; +assign Wp97z6 = Zy9nz6; +assign Op97z6 = Zz9nz6; +assign Gp97z6 = Z0anz6; +assign Yo97z6 = Z1anz6; +assign Qo97z6 = Z2anz6; +assign Io97z6 = Z3anz6; +assign Ao97z6 = Z4anz6; +assign Sn97z6 = A6anz6; +assign Kn97z6 = B7anz6; +assign Cn97z6 = C8anz6; +assign Um97z6 = D9anz6; +assign Mm97z6 = Eaanz6; +assign Em97z6 = Fbanz6; +assign Wl97z6 = Gcanz6; +assign Ol97z6 = Hdanz6; +assign Gl97z6 = Ieanz6; +assign Yk97z6 = Jfanz6; +assign Qk97z6 = Kganz6; +assign Ik97z6 = Lhanz6; +assign Ak97z6 = Mianz6; +assign Sj97z6 = Njanz6; +assign Kj97z6 = Okanz6; +assign Cj97z6 = Planz6; +assign Ui97z6 = Qmanz6; +assign Mi97z6 = Rnanz6; +assign Ei97z6 = Soanz6; +assign Wh97z6 = Tpanz6; +assign Oh97z6 = Uqanz6; +assign Gh97z6 = Vranz6; +assign Yg97z6 = Wsanz6; +assign Qg97z6 = Xtanz6; +assign Ig97z6 = Yuanz6; +assign Ag97z6 = Zvanz6; +assign Sf97z6 = Axanz6; +assign Kf97z6 = Byanz6; +assign Cf97z6 = Czanz6; +assign Ue97z6 = D0bnz6; +assign Me97z6 = E1bnz6; +assign Ee97z6 = F2bnz6; +assign Wd97z6 = G3bnz6; +assign Od97z6 = H4bnz6; +assign Gd97z6 = I5bnz6; +assign Yc97z6 = J6bnz6; +assign Qc97z6 = K7bnz6; +assign Ic97z6 = L8bnz6; +assign Ac97z6 = M9bnz6; +assign Sb97z6 = Nabnz6; +assign Kb97z6 = Obbnz6; +assign Cb97z6 = Pcbnz6; +assign Ua97z6 = Qdbnz6; +assign Ma97z6 = Rebnz6; +assign Ea97z6 = Sfbnz6; +assign W997z6 = Tgbnz6; +assign O997z6 = Uhbnz6; +assign G997z6 = Vibnz6; +assign Y897z6 = Wjbnz6; +assign Q897z6 = Xkbnz6; +assign I897z6 = Ylbnz6; +assign A897z6 = Zmbnz6; +assign S797z6 = Aobnz6; +assign K797z6 = Bpbnz6; +assign C797z6 = Cqbnz6; +assign Ei77z6 = Drbnz6; +assign U697z6 = Dsbnz6; +assign Jqj7z6[0] = Etbnz6; +assign Jqj7z6[72] = Fwbnz6; +assign Jqj7z6[71] = Hzbnz6; +assign Jqj7z6[70] = J2cnz6; +assign Jqj7z6[69] = L5cnz6; +assign Jqj7z6[68] = N8cnz6; +assign Jqj7z6[67] = Pbcnz6; +assign Jqj7z6[66] = Recnz6; +assign Jqj7z6[65] = Thcnz6; +assign Jqj7z6[64] = Vkcnz6; +assign Jqj7z6[63] = Xncnz6; +assign Jqj7z6[62] = Zqcnz6; +assign Jqj7z6[61] = Bucnz6; +assign Jqj7z6[60] = Dxcnz6; +assign Jqj7z6[59] = F0dnz6; +assign Jqj7z6[58] = H3dnz6; +assign Jqj7z6[57] = J6dnz6; +assign Jqj7z6[56] = L9dnz6; +assign Jqj7z6[55] = Ncdnz6; +assign Jqj7z6[54] = Pfdnz6; +assign Jqj7z6[53] = Ridnz6; +assign Jqj7z6[52] = Tldnz6; +assign Jqj7z6[51] = Vodnz6; +assign Jqj7z6[50] = Xrdnz6; +assign Jqj7z6[49] = Zudnz6; +assign Jqj7z6[48] = Bydnz6; +assign Jqj7z6[47] = D1enz6; +assign Jqj7z6[46] = F4enz6; +assign Jqj7z6[45] = H7enz6; +assign Jqj7z6[44] = Jaenz6; +assign Jqj7z6[43] = Ldenz6; +assign Jqj7z6[42] = Ngenz6; +assign Jqj7z6[41] = Pjenz6; +assign Jqj7z6[40] = Rmenz6; +assign Jqj7z6[39] = Tpenz6; +assign Jqj7z6[38] = Vsenz6; +assign Jqj7z6[37] = Xvenz6; +assign Jqj7z6[36] = Zyenz6; +assign Jqj7z6[35] = B2fnz6; +assign Jqj7z6[34] = D5fnz6; +assign Jqj7z6[33] = F8fnz6; +assign Jqj7z6[32] = Hbfnz6; +assign Jqj7z6[31] = Jefnz6; +assign Jqj7z6[30] = Lhfnz6; +assign Jqj7z6[29] = Nkfnz6; +assign Jqj7z6[28] = Pnfnz6; +assign Jqj7z6[27] = Rqfnz6; +assign Jqj7z6[26] = Ttfnz6; +assign Jqj7z6[25] = Vwfnz6; +assign Jqj7z6[24] = Xzfnz6; +assign Jqj7z6[23] = Z2gnz6; +assign Jqj7z6[22] = B6gnz6; +assign Jqj7z6[21] = D9gnz6; +assign Jqj7z6[20] = Fcgnz6; +assign Jqj7z6[19] = Hfgnz6; +assign Jqj7z6[18] = Jignz6; +assign Jqj7z6[17] = Llgnz6; +assign Jqj7z6[16] = Nognz6; +assign Jqj7z6[15] = Prgnz6; +assign Jqj7z6[14] = Rugnz6; +assign Jqj7z6[13] = Txgnz6; +assign Jqj7z6[12] = V0hnz6; +assign Jqj7z6[11] = X3hnz6; +assign Jqj7z6[10] = Z6hnz6; +assign Jqj7z6[9] = Bahnz6; +assign Jqj7z6[1] = Cdhnz6; +assign V5get6 = Dghnz6; +assign Ldh7v6 = (!Bjhnz6); +assign Kkadt6 = Elhnz6; +assign Aiadt6 = Cnhnz6; +assign Cgc7z6[2] = Hphnz6; +assign Vjddt6 = Yrhnz6; +assign Dvc7z6[10] = Tuhnz6; +assign Hrb7z6[0] = Zxhnz6; +assign Zec7z6[23] = Pzhnz6; +assign Byc7z6[23] = O2inz6; +assign Zec7z6[7] = S5inz6; +assign V1c7z6[5] = Q8inz6; +assign Nzg7z6[0] = Vainz6; +assign Nzg7z6[1] = Xdinz6; +assign Nzg7z6[2] = Zginz6; +assign Nzg7z6[3] = Bkinz6; +assign Wfxdt6 = Dninz6; +assign Sj77z6 = (!Tpinz6); +assign K73et6 = Osinz6; +assign Pl7et6 = Kvinz6; +assign M697z6 = (!Myinz6); +assign Bzi7z6[1] = O1jnz6; +assign Nneet6 = N3jnz6; +assign HALTED = S5jnz6; +assign Ldo7v6 = (!S5jnz6); +assign Z2c7v6 = Q7jnz6; +assign I1c7v6 = P9jnz6; +assign Sdh7v6 = (!Objnz6); +assign DBGRESTARTED = Qdjnz6; +assign Dgo7v6 = (!Qdjnz6); +assign Cbeet6 = Wfjnz6; +assign Opeet6 = Bijnz6; +assign Jjbdt6 = Fkjnz6; +assign Uyb7z6[2] = Gmjnz6; +assign Pdc7z6[2] = Qojnz6; +assign Kxb7z6[2] = Qrjnz6; +assign Ir7et6 = Ztjnz6; +assign Cjq7z6[0] = Fxjnz6; +assign C4s7z6[1] = Lzjnz6; +assign V1s7z6[0] = P2knz6; +assign Sywmz6[0] = D5knz6; +assign Kms7z6[0] = O7knz6; +assign V7xmz6[0] = Daknz6; +assign Nn1nz6[0] = Dcknz6; +assign Pdc7z6[24] = Beknz6; +assign Kxb7z6[24] = Chknz6; +assign Fth7z6[24] = Mjknz6; +assign Oreet6 = Kmknz6; +assign Iladt6 = Qoknz6; +assign Cgc7z6[1] = Vqknz6; +assign Nbddt6 = Mtknz6; +assign Dvc7z6[11] = Jwknz6; +assign Ccnet6 = Pzknz6; +assign Ywcdt6 = J2lnz6; +assign Pdc7z6[1] = L5lnz6; +assign Kxb7z6[1] = L8lnz6; +assign Fth7z6[1] = Ualnz6; +assign Zec7z6[0] = Rdlnz6; +assign V1c7z6[0] = Pglnz6; +assign Kxb7z6[8] = Uilnz6; +assign Fth7z6[8] = Dllnz6; +assign Pdc7z6[8] = Aolnz6; +assign Dvc7z6[8] = Arlnz6; +assign A3ddt6 = Fulnz6; +assign X7get6 = Exlnz6; +assign Byi7z6[31] = Azlnz6; +assign Fth7z6[7] = A1mnz6; +assign Pdc7z6[7] = X3mnz6; +assign Kxb7z6[7] = X6mnz6; +assign Fhc7z6[31] = G9mnz6; +assign Kxb7z6[4] = Qbmnz6; +assign Fth7z6[4] = Zdmnz6; +assign Pdc7z6[4] = Wgmnz6; +assign Dvc7z6[30] = Wjmnz6; +assign U4zet6 = Cnmnz6; +assign N7zet6 = Zpmnz6; +assign Ysn7z6[0] = Wsmnz6; +assign Ysn7z6[2] = Xvmnz6; +assign Ysn7z6[1] = Yymnz6; +assign Khoet6 = Z1nnz6; +assign Wmoet6 = X4nnz6; +assign Ihs7z6[1] = T7nnz6; +assign Ci27v6 = N9nnz6; +assign Zas7z6[2] = Gbnnz6; +assign Tl6ft6 = Wcnnz6; +assign Gyvmz6[8] = Sennz6; +assign Nsvmz6[8] = Dhnnz6; +assign Fbxmz6[1] = Sjnnz6; +assign Fbxmz6[0] = Plnnz6; +assign Mm1nz6[5] = Mnnnz6; +assign Pdc7z6[29] = Kpnnz6; +assign Kxb7z6[29] = Lsnnz6; +assign Fth7z6[29] = Vunnz6; +assign Wui7z6[13] = Txnnz6; +assign Pdc7z6[21] = Vznnz6; +assign Kxb7z6[21] = W2onz6; +assign Fth7z6[21] = G5onz6; +assign Fpo7z6[19] = E8onz6; +assign Ygh7v6 = (!U9onz6); +assign Zbpet6 = U9onz6; +assign Hryet6 = Nbonz6; +assign Qln7z6[0] = Ceonz6; +assign Wzxet6 = Sgonz6; +assign Tim7z6[24] = Ijonz6; +assign Zec7z6[8] = Xlonz6; +assign Byc7z6[8] = Voonz6; +assign Zec7z6[24] = Yronz6; +assign V1c7z6[8] = Xuonz6; +assign Kxb7z6[31] = Cxonz6; +assign Bdf7z6[0] = Mzonz6; +assign Kxb7z6[3] = M2pnz6; +assign Fth7z6[3] = V4pnz6; +assign X9s7z6[19] = S7pnz6; +assign Sywmz6[3] = P9pnz6; +assign Kms7z6[3] = Acpnz6; +assign V7xmz6[3] = Pepnz6; +assign Mm1nz6[3] = Pgpnz6; +assign Pdc7z6[27] = Nipnz6; +assign Kxb7z6[27] = Olpnz6; +assign Fth7z6[27] = Ynpnz6; +assign Kfq7z6[0] = Wqpnz6; +assign V1s7z6[2] = Etpnz6; +assign Sywmz6[2] = Svpnz6; +assign Kms7z6[2] = Dypnz6; +assign V7xmz6[2] = S0qnz6; +assign Mm1nz6[2] = S2qnz6; +assign Pdc7z6[18] = Q4qnz6; +assign Kxb7z6[18] = R7qnz6; +assign Fth7z6[18] = Baqnz6; +assign Z3j7z6[10] = Zcqnz6; +assign Fhcet6 = Xfqnz6; +assign P2j7z6[1] = Viqnz6; +assign M6j7z6[5] = Zkqnz6; +assign P2j7z6[0] = Ynqnz6; +assign Z3j7z6[13] = Cqqnz6; +assign P2j7z6[4] = Atqnz6; +assign M6j7z6[15] = Evqnz6; +assign P2j7z6[2] = Dyqnz6; +assign M6j7z6[55] = H0rnz6; +assign P2j7z6[3] = G3rnz6; +assign Sgcdt6 = K5rnz6; +assign Pdc7z6[25] = O8rnz6; +assign Kxb7z6[25] = Pbrnz6; +assign Fth7z6[25] = Zdrnz6; +assign Wui7z6[9] = Xgrnz6; +assign Pdc7z6[17] = Yirnz6; +assign Kxb7z6[17] = Zlrnz6; +assign Fth7z6[17] = Jornz6; +assign Cjq7z6[1] = Hrrnz6; +assign Cjq7z6[7] = Ntrnz6; +assign Pdc7z6[23] = Tvrnz6; +assign Kxb7z6[23] = Uyrnz6; +assign Fth7z6[23] = E1snz6; +assign Xch7v6 = (!C4snz6); +assign Lfp7z6[1] = F6snz6; +assign Eo2ft6 = F8snz6; +assign Lybdt6 = Hasnz6; +assign Fccdt6 = Fcsnz6; +assign T8ddt6 = Jesnz6; +assign Ztcdt6 = Hhsnz6; +assign Ujnet6 = Kksnz6; +assign Crcdt6 = Xmsnz6; +assign Aocdt6 = Ypsnz6; +assign Kqm7z6[2] = Etsnz6; +assign Zec7z6[13] = Ewsnz6; +assign Byc7z6[13] = Dzsnz6; +assign Zec7z6[29] = H2tnz6; +assign V1c7z6[15] = G5tnz6; +assign Kxb7z6[22] = M7tnz6; +assign Fth7z6[22] = W9tnz6; +assign Xu67v6 = Uctnz6; +assign Uu0nz6[4] = Oetnz6; +assign Rr0nz6[0] = Mgtnz6; +assign Ocd7v6 = Kitnz6; +assign Hw0nz6[2] = Jktnz6; +assign E5d7v6 = Hmtnz6; +assign Hw0nz6[1] = Fotnz6; +assign Rr0nz6[1] = Dqtnz6; +assign Ak67z6 = Bstnz6; +assign Bv1nz6[0] = Wttnz6; +assign Ja1nz6[2] = Uvtnz6; +assign Fwg7v6 = Hytnz6; +assign Fg1nz6[2] = A1unz6; +assign Ja1nz6[1] = T3unz6; +assign Qtg7v6 = G6unz6; +assign Fg1nz6[1] = Z8unz6; +assign Zs1nz6[0] = Sbunz6; +assign Au1nz6[0] = Qdunz6; +assign Yr1nz6[0] = Ofunz6; +assign Yr1nz6[1] = Mhunz6; +assign Pdc7z6[9] = Kjunz6; +assign Kxb7z6[9] = Kmunz6; +assign Fth7z6[9] = Tounz6; +assign Wui7z6[25] = Qrunz6; +assign M43et6 = Stunz6; +assign Jqj7z6[4] = Uwunz6; +assign Jqj7z6[6] = Vzunz6; +assign Oecet6 = W2vnz6; +assign P2j7z6[6] = U5vnz6; +assign P2j7z6[5] = Y7vnz6; +assign Tnzdt6 = Cavnz6; +assign Cgc7z6[0] = Ccvnz6; +assign Cgc7z6[3] = Tevnz6; +assign Fsc7z6[0] = Khvnz6; +assign W8h7v6 = (!Pkvnz6); +assign Inadt6 = Smvnz6; +assign Fjadt6 = Rovnz6; +assign Mmddt6 = Prvnz6; +assign E697z6 = (!Stvnz6); +assign V5ddt6 = Wvvnz6; +assign Pkbet6 = Yyvnz6; +assign Fhc7z6[30] = D1wnz6; +assign Lsfdt6 = N3wnz6; +assign Wui7z6[27] = O5wnz6; +assign Pdc7z6[19] = Q7wnz6; +assign Kxb7z6[19] = Rawnz6; +assign Fth7z6[19] = Bdwnz6; +assign Ipymz6[0] = Zfwnz6; +assign Gm77v6 = Fiwnz6; +assign Pdc7z6[11] = Lkwnz6; +assign vis_psp_o[11] = Mnwnz6; +assign Fhc7z6[11] = Eqwnz6; +assign Kxb7z6[20] = Oswnz6; +assign Fth7z6[20] = Yuwnz6; +assign Fpo7z6[10] = Wxwnz6; +assign Fth7z6[12] = Mzwnz6; +assign Pdc7z6[12] = K2xnz6; +assign Kxb7z6[12] = L5xnz6; +assign Pdq7z6[0] = V7xnz6; +assign Pdq7z6[6] = Baxnz6; +assign Pdc7z6[14] = Hcxnz6; +assign Kxb7z6[14] = Ifxnz6; +assign Fth7z6[14] = Shxnz6; +assign Hhq7z6[6] = Qkxnz6; +assign Hhq7z6[5] = Wmxnz6; +assign S7gdt6 = Cpxnz6; +assign Wui7z6[29] = Drxnz6; +assign Pdc7z6[13] = Ftxnz6; +assign Kxb7z6[13] = Gwxnz6; +assign Fth7z6[13] = Qyxnz6; +assign Pk1nz6[5] = O1ynz6; +assign Td2nz6[0] = L3ynz6; +assign Vuf7v6 = J5ynz6; +assign W3e7v6 = E7ynz6; +assign Thg7v6 = Y8ynz6; +assign Imh7v6 = Ebynz6; +assign W597z6 = (!Kdynz6); +assign We6ft6 = Gfynz6; +assign Qb6ft6 = Chynz6; +assign Vis7z6[5] = Yiynz6; +assign P7s7z6[29] = Xkynz6; +assign E46ft6 = Rmynz6; +assign Nu27v6 = Hoynz6; +assign Iuvmz6[5] = Gqynz6; +assign Iuvmz6[6] = Gsynz6; +assign Iuvmz6[7] = Guynz6; +assign Iuvmz6[8] = Gwynz6; +assign Iuvmz6[4] = Gyynz6; +assign Y4wmz6[0] = G0znz6; +assign Gyvmz6[7] = Y2znz6; +assign Y4wmz6[1] = J5znz6; +assign K0wmz6[4] = B8znz6; +assign K0wmz6[6] = Maznz6; +assign K0wmz6[8] = Xcznz6; +assign Bewmz6[0] = Ifznz6; +assign Bewmz6[1] = Aiznz6; +assign J7wmz6[8] = Skznz6; +assign Ly37v6 = Dnznz6; +assign Fth7z6[15] = Kpznz6; +assign Pdc7z6[15] = Isznz6; +assign Kxb7z6[15] = Jvznz6; +assign Z3j7z6[7] = Txznz6; +assign Z3j7z6[15] = R00oz6; +assign Moj7z6[2] = P30oz6; +assign Zgadt6 = T50oz6; +assign W9edt6 = T70oz6; +assign Mfe7z6[3] = Ba0oz6; +assign Ohe7z6[7] = Ec0oz6; +assign Mfe7z6[7] = Ge0oz6; +assign H3adt6 = Jg0oz6; +assign Wfo7v6 = (!Jg0oz6); +assign Q087v6 = Ki0oz6; +assign W577v6 = Ek0oz6; +assign Gdc7v6 = Em0oz6; +assign Hqb7v6 = Io0oz6; +assign Jsb7v6 = Sq0oz6; +assign Tkb7v6 = Qs0oz6; +assign Bhb7v6 = Wu0oz6; +assign Ifb7v6 = Xw0oz6; +assign Bq0nz6[6] = Yy0oz6; +assign Kj67z6 = V01oz6; +assign Au1nz6[6] = Q21oz6; +assign Zs1nz6[6] = O41oz6; +assign Ohe7z6[6] = M61oz6; +assign Mfe7z6[6] = O81oz6; +assign Yl2et6 = Ra1oz6; +assign Dqr8v6 = (!Md1oz6); +assign Oaadt6 = Eg1oz6; +assign Hhq7z6[4] = Ji1oz6; +assign Qmb7z6[4] = Pk1oz6; +assign Nob7z6[4] = Ln1oz6; +assign D4b7v6 = Qp1oz6; +assign Jjh7v6 = (!Or1oz6); +assign O777v6 = Zt1oz6; +assign Xw67v6 = Wv1oz6; +assign Lzb7v6 = Jx1oz6; +assign Tf87v6 = Oz1oz6; +assign B41nz6[1] = H12oz6; +assign B41nz6[0] = H32oz6; +assign Zwzmz6[7] = H52oz6; +assign Sj67z6 = E72oz6; +assign Au1nz6[7] = Z82oz6; +assign Zs1nz6[7] = Xa2oz6; +assign Ppb7z6[7] = Vc2oz6; +assign Z7edt6 = Df2oz6; +assign Tkbdt6 = Eh2oz6; +assign Fsc7z6[1] = Gj2oz6; +assign Pxg7z6[0] = Lm2oz6; +assign P4c7z6[0] = Ip2oz6; +assign E8h7z6[0] = Fs2oz6; +assign vis_r3_o[0] = Cv2oz6; +assign vis_r3_o[30] = Sx2oz6; +assign vis_r3_o[11] = J03oz6; +assign vis_r3_o[1] = A33oz6; +assign E3c7z6[1] = Q53oz6; +assign Kxb7z6[10] = Z73oz6; +assign Fth7z6[10] = Ja3oz6; +assign O597z6 = (!Hd3oz6); +assign Dkm7z6[1] = Tg3oz6; +assign S7n7z6[0] = Sj3oz6; +assign Pdc7z6[16] = Lm3oz6; +assign Kxb7z6[16] = Mp3oz6; +assign Fth7z6[16] = Wr3oz6; +assign U9p7z6[24] = Uu3oz6; +assign Lfp7z6[0] = Ww3oz6; +assign Fgzmz6[0] = Wy3oz6; +assign Lczmz6[0] = A14oz6; +assign Lczmz6[1] = J34oz6; +assign Lczmz6[2] = S54oz6; +assign Lczmz6[3] = B84oz6; +assign Bq0nz6[3] = Ka4oz6; +assign Mi67z6 = Hc4oz6; +assign Au1nz6[3] = Ce4oz6; +assign Zs1nz6[3] = Ag4oz6; +assign Ohe7z6[5] = Yh4oz6; +assign Mfe7z6[5] = Ak4oz6; +assign Xkr8v6 = (!Dm4oz6); +assign Wzcdt6 = Vo4oz6; +assign P6d7z6[0] = Ds4oz6; +assign Vbh7v6 = (!Gv4oz6); +assign L9d7z6[1] = Ky4oz6; +assign O977z6 = (!O15oz6); +assign A877z6 = (!R45oz6); +assign W177z6 = (!V75oz6); +assign I077z6 = (!Za5oz6); +assign P6d7z6[1] = Ce5oz6; +assign Abh7v6 = (!Fh5oz6); +assign L9d7z6[3] = Jk5oz6; +assign Ea77z6 = (!Nn5oz6); +assign Q877z6 = (!Qq5oz6); +assign M277z6 = (!Ut5oz6); +assign Y077z6 = (!Yw5oz6); +assign P6d7z6[2] = B06oz6; +assign Zec7z6[14] = E36oz6; +assign Uicdt6 = D66oz6; +assign Yfadt6 = A96oz6; +assign Bqbdt6 = Db6oz6; +assign Lpc7z6[1] = Hd6oz6; +assign G597z6 = (!Ig6oz6); +assign Pmc7z6[2] = Jj6oz6; +assign Pmc7z6[1] = Mm6oz6; +assign Ohe7z6[1] = Pp6oz6; +assign L2gdt6 = Rr6oz6; +assign vis_r3_o[5] = Yt6oz6; +assign vis_psp_o[5] = Ow6oz6; +assign Fhc7z6[5] = Fz6oz6; +assign Bdf7z6[3] = O17oz6; +assign Bdf7z6[2] = O47oz6; +assign D5f7z6[3] = O77oz6; +assign D5f7z6[4] = Ka7oz6; +assign Zhbdt6 = Gd7oz6; +assign L9d7z6[5] = Hf7oz6; +assign Pacdt6 = Li7oz6; +assign Bfd7z6[1] = Kl7oz6; +assign Gcd7z6[1] = No7oz6; +assign Byc7z6[19] = Pr7oz6; +assign Zec7z6[3] = Tu7oz6; +assign Byc7z6[3] = Rx7oz6; +assign Zec7z6[19] = U08oz6; +assign Ohe7z6[4] = T38oz6; +assign N0gdt6 = V58oz6; +assign Mfe7z6[4] = X78oz6; +assign Hir8v6 = (!Aa8oz6); +assign Cubdt6 = Sc8oz6; +assign D6c7z6[3] = Sf8oz6; +assign J2cdt6 = Ui8oz6; +assign N1m7z6[4] = Xk8oz6; +assign K6adt6 = Ko8oz6; +assign Ven7z6[1] = Hr8oz6; +assign Tim7z6[9] = Vt8oz6; +assign K377z6 = (!Jw8oz6); +assign U277z6 = (!Mz8oz6); +assign Zec7z6[25] = P29oz6; +assign Byc7z6[25] = O59oz6; +assign Zec7z6[9] = S89oz6; +assign V1c7z6[3] = Qb9oz6; +assign Nnr8v6 = (!Vd9oz6); +assign Kgbdt6 = Ng9oz6; +assign Ke2ft6 = Qj9oz6; +assign H8c7v6 = Ql9oz6; +assign Uib7v6 = Nn9oz6; +assign Rmb7v6 = Up9oz6; +assign Jezmz6[7] = Zr9oz6; +assign Fed7v6 = Gu9oz6; +assign Ft0nz6[4] = Gw9oz6; +assign Ft0nz6[1] = Gy9oz6; +assign Ft0nz6[0] = G0aoz6; +assign Ei67z6 = G2aoz6; +assign Au1nz6[2] = B4aoz6; +assign Zs1nz6[2] = Z5aoz6; +assign Ohe7z6[3] = X7aoz6; +assign Wui7z6[26] = Z9aoz6; +assign Qmb7z6[2] = Bcaoz6; +assign Nob7z6[2] = Xeaoz6; +assign G5j7z6[48] = Chaoz6; +assign M6j7z6[48] = Bkaoz6; +assign Qmb7z6[8] = Anaoz6; +assign Nob7z6[8] = Wpaoz6; +assign G5j7z6[60] = Bsaoz6; +assign M6j7z6[60] = Avaoz6; +assign Itb7z6[28] = Zxaoz6; +assign Tim7z6[28] = R0boz6; +assign K777z6 = (!G3boz6); +assign U677z6 = (!K6boz6); +assign Zec7z6[12] = O9boz6; +assign Byc7z6[12] = Ncboz6; +assign Zec7z6[28] = Rfboz6; +assign Ecc7z6[12] = Qiboz6; +assign Dzget6 = Plboz6; +assign Senet6 = Foboz6; +assign Oe2et6 = Zqboz6; +assign Ldbdt6 = Qtboz6; +assign Ihnet6 = Jwboz6; +assign Ifo7v6 = (!Wyboz6); +assign Byi7z6[30] = Y1coz6; +assign Itb7z6[30] = Y3coz6; +assign Coxmz6[30] = Q6coz6; +assign L5ymz6[33] = L8coz6; +assign L5ymz6[32] = Eacoz6; +assign L5ymz6[31] = Xbcoz6; +assign L5ymz6[30] = Qdcoz6; +assign L5ymz6[29] = Jfcoz6; +assign L5ymz6[28] = Chcoz6; +assign L5ymz6[27] = Vicoz6; +assign L5ymz6[26] = Okcoz6; +assign L5ymz6[25] = Hmcoz6; +assign Tfxmz6[10] = Aocoz6; +assign Hnxmz6[10] = Cqcoz6; +assign Njxmz6[10] = Xrcoz6; +assign Ab57v6 = Aucoz6; +assign Hf57v6 = Pvcoz6; +assign Ii57v6 = Fxcoz6; +assign Tq57v6 = Vycoz6; +assign SWDOEN = J0doz6; +assign Ifh7v6 = (!J0doz6); +assign B1ymz6[0] = X1doz6; +assign B1ymz6[1] = T3doz6; +assign B1ymz6[2] = P5doz6; +assign B1ymz6[3] = L7doz6; +assign B1ymz6[4] = H9doz6; +assign B1ymz6[5] = Dbdoz6; +assign Fqxmz6[5] = Zcdoz6; +assign Fqxmz6[3] = Vedoz6; +assign Fqxmz6[2] = Rgdoz6; +assign Fqxmz6[1] = Nidoz6; +assign Fqxmz6[4] = Jkdoz6; +assign Fqxmz6[0] = Fmdoz6; +assign R9ymz6[2] = Bodoz6; +assign R9ymz6[0] = Updoz6; +assign R9ymz6[3] = Nrdoz6; +assign R9ymz6[1] = Gtdoz6; +assign nTDOEN = (!Zudoz6); +assign G8ymz6[3] = Nwdoz6; +assign G8ymz6[2] = Fydoz6; +assign G8ymz6[1] = Xzdoz6; +assign G8ymz6[0] = P1eoz6; +assign W6ymz6[0] = H3eoz6; +assign W6ymz6[1] = Y4eoz6; +assign W6ymz6[2] = P6eoz6; +assign W6ymz6[3] = G8eoz6; +assign V357v6 = X9eoz6; +assign Ud57v6 = Nbeoz6; +assign Cxxmz6[7] = Edeoz6; +assign Omxmz6[7] = Veeoz6; +assign U3o7z6[11] = Ngeoz6; +assign Coxmz6[11] = Djeoz6; +assign L5ymz6[14] = Ykeoz6; +assign L5ymz6[13] = Rmeoz6; +assign L5ymz6[12] = Koeoz6; +assign L5ymz6[11] = Dqeoz6; +assign L5ymz6[10] = Wreoz6; +assign L5ymz6[9] = Pteoz6; +assign L5ymz6[8] = Hveoz6; +assign L5ymz6[7] = Zweoz6; +assign F267v6 = Ryeoz6; +assign Aixmz6[4] = I0foz6; +assign Aixmz6[5] = M2foz6; +assign Aixmz6[6] = Q4foz6; +assign Aixmz6[7] = U6foz6; +assign Aixmz6[8] = Y8foz6; +assign Aixmz6[9] = Cbfoz6; +assign Aixmz6[10] = Gdfoz6; +assign Aixmz6[11] = Lffoz6; +assign Aixmz6[22] = Qhfoz6; +assign Aixmz6[23] = Vjfoz6; +assign Aixmz6[24] = Amfoz6; +assign Aixmz6[25] = Fofoz6; +assign Aixmz6[26] = Kqfoz6; +assign Aixmz6[27] = Psfoz6; +assign Aixmz6[28] = Uufoz6; +assign Aixmz6[29] = Zwfoz6; +assign Aixmz6[30] = Ezfoz6; +assign Qs67z6 = (!J1goz6); +assign S367v6 = V2goz6; +assign Bmh7v6 = K4goz6; +assign Oh67z6 = (!A6goz6); +assign Ye47v6 = X7goz6; +assign Up47v6 = V9goz6; +assign Un67v6 = Nbgoz6; +assign Ek47v6 = Jdgoz6; +assign Is67z6 = (!Gfgoz6); +assign Wh77z6 = (!Sggoz6); +assign Uu57v6 = Ligoz6; +assign Hw57v6 = Ckgoz6; +assign Ulh7v6 = Rlgoz6; +assign Gh67z6 = (!Jngoz6); +assign Ee47v6 = Ipgoz6; +assign Hnxmz6[0] = Irgoz6; +assign Njxmz6[0] = Ctgoz6; +assign Cxxmz6[12] = Evgoz6; +assign Cxxmz6[11] = Wwgoz6; +assign Ikxmz6[3] = Oygoz6; +assign Dbymz6[1] = P0hoz6; +assign Dbymz6[0] = A2hoz6; +assign Fvzet6 = L3hoz6; +assign F5o7z6[7] = Z5hoz6; +assign Gco7z6[6] = P8hoz6; +assign Io47v6 = Abhoz6; +assign H557v6 = Uchoz6; +assign Pm57v6 = Jehoz6; +assign Cxxmz6[31] = Wfhoz6; +assign Omxmz6[31] = Ohhoz6; +assign Cxxmz6[30] = Cjhoz6; +assign Omxmz6[30] = Ukhoz6; +assign Sl47v6 = Imhoz6; +assign R1adt6 = Dohoz6; +assign A9bdt6 = Sphoz6; +assign D9h7v6 = (!Wqhoz6); +assign Gr67v6 = Urhoz6; +assign Ii47v6 = Sthoz6; +assign L5ymz6[34] = Rvhoz6; +assign Aixmz6[31] = Kxhoz6; +assign U3o7z6[31] = Pzhoz6; +assign Fvb7z6[31] = F2ioz6; +assign C1o7z6[1] = X4ioz6; +assign Vveet6 = W7ioz6; +assign A0fet6 = Faioz6; +assign Qteet6 = Mcioz6; +assign Y497z6 = (!Veioz6); +assign Qboet6 = Xhioz6; +assign U8oet6 = Xkioz6; +assign Wbxdt6 = Xnioz6; +assign W13et6 = Arioz6; +assign No7et6 = Utioz6; +assign Kih7z6[1] = Twioz6; +assign Kih7z6[0] = Pzioz6; +assign D6c7z6[2] = L2joz6; +assign Yg77z6 = (!N5joz6); +assign Thbet6 = F8joz6; +assign X4eet6 = Fbjoz6; +assign Lcadt6 = Jdjoz6; +assign Ohe7z6[2] = Cgjoz6; +assign vis_psp_o[30] = Eijoz6; +assign vis_psp_o[8] = Wkjoz6; +assign Fhc7z6[8] = Nnjoz6; +assign Fuadt6 = Wpjoz6; +assign Uebdt6 = Yrjoz6; +assign vis_pc_o[31] = Yujoz6; +assign vis_pc_o[1] = Fxjoz6; +assign vis_pc_o[2] = Lzjoz6; +assign vis_pc_o[3] = R1koz6; +assign vis_pc_o[4] = X3koz6; +assign vis_pc_o[5] = D6koz6; +assign vis_pc_o[6] = J8koz6; +assign vis_pc_o[7] = Pakoz6; +assign vis_pc_o[8] = Vckoz6; +assign vis_pc_o[9] = Bfkoz6; +assign vis_pc_o[10] = Hhkoz6; +assign vis_pc_o[11] = Ojkoz6; +assign vis_pc_o[12] = Vlkoz6; +assign vis_pc_o[13] = Cokoz6; +assign vis_pc_o[14] = Jqkoz6; +assign vis_pc_o[15] = Qskoz6; +assign vis_pc_o[16] = Xukoz6; +assign vis_pc_o[17] = Exkoz6; +assign vis_pc_o[18] = Lzkoz6; +assign vis_pc_o[19] = S1loz6; +assign vis_pc_o[20] = Z3loz6; +assign vis_pc_o[21] = G6loz6; +assign vis_pc_o[22] = N8loz6; +assign vis_pc_o[23] = Ualoz6; +assign vis_pc_o[24] = Bdloz6; +assign vis_pc_o[25] = Ifloz6; +assign vis_pc_o[26] = Phloz6; +assign Fhc7z6[26] = Wjloz6; +assign Fth7z6[26] = Gmloz6; +assign Tim7z6[2] = Eploz6; +assign Uu67z6 = (!Srloz6); +assign Eu67z6 = (!Vuloz6); +assign Zec7z6[18] = Yxloz6; +assign Byc7z6[18] = X0moz6; +assign Zec7z6[2] = B4moz6; +assign Pxg7z6[1] = Z6moz6; +assign P4c7z6[1] = W9moz6; +assign Xz7et6 = Tcmoz6; +assign Toi7z6[2] = Ufmoz6; +assign Aqadt6 = Dimoz6; +assign Esadt6 = Kkmoz6; +assign Zjb7z6[9] = Mmmoz6; +assign Dradt6 = Gpmoz6; +assign O6cet6 = Krmoz6; +assign O9adt6 = Ptmoz6; +assign P8adt6 = Tvmoz6; +assign Frzet6 = Wxmoz6; +assign Oeo7z6[2] = J0noz6; +assign R0bdt6 = W2noz6; +assign Cp47v6 = G5noz6; +assign S657v6 = Y6noz6; +assign Cxxmz6[4] = N8noz6; +assign Omxmz6[4] = Eanoz6; +assign F5o7z6[4] = Wbnoz6; +assign Ugo7z6[1] = Menoz6; +assign Itb7z6[17] = Dhnoz6; +assign Tim7z6[17] = Vjnoz6; +assign Wt67z6 = (!Kmnoz6); +assign Gt67z6 = (!Opnoz6); +assign Zec7z6[1] = Ssnoz6; +assign Byc7z6[1] = Qvnoz6; +assign Zec7z6[17] = Tynoz6; +assign Qyddt6 = S1ooz6; +assign Y3fet6 = S3ooz6; +assign Geddt6 = R5ooz6; +assign Edh7z6[1] = O8ooz6; +assign S7n7z6[1] = Kbooz6; +assign Tim7z6[29] = Deooz6; +assign Itb7z6[29] = Sgooz6; +assign Coxmz6[29] = Kjooz6; +assign Cxxmz6[29] = Flooz6; +assign Cxxmz6[28] = Xmooz6; +assign Omxmz6[28] = Poooz6; +assign Qm47v6 = Dqooz6; +assign Lc57v6 = Yrooz6; +assign M257v6 = Ltooz6; +assign On47v6 = Yuooz6; +assign Coxmz6[0] = Twooz6; +assign Krxmz6[0] = Nyooz6; +assign Cxxmz6[0] = E0poz6; +assign Fy47v6 = V1poz6; +assign Uzxmz6[2] = O3poz6; +assign D857v6 = C5poz6; +assign Krxmz6[29] = U6poz6; +assign Krxmz6[11] = M8poz6; +assign Krxmz6[30] = Eapoz6; +assign Krxmz6[6] = Wbpoz6; +assign Cxxmz6[6] = Ndpoz6; +assign Omxmz6[6] = Efpoz6; +assign F5o7z6[6] = Wgpoz6; +assign Oeo7z6[0] = Mjpoz6; +assign Blzet6 = Zlpoz6; +assign T21ft6 = Nopoz6; +assign Hgzet6 = Drpoz6; +assign Dnh7v6 = (!Ntpoz6); +assign F51ft6 = Fwpoz6; +assign Zdh7v6 = (!Yypoz6); +assign L3bdt6 = L1qoz6; +assign Fvb7z6[11] = A4qoz6; +assign Ugo7z6[0] = S6qoz6; +assign Itb7z6[1] = J9qoz6; +assign Coxmz6[1] = Bcqoz6; +assign Krxmz6[1] = Vdqoz6; +assign Cxxmz6[1] = Mfqoz6; +assign Ulxmz6[1] = Dhqoz6; +assign Pl0ft6 = Fjqoz6; +assign Hub7z6[0] = Zlqoz6; +assign U3o7z6[10] = Qoqoz6; +assign Fvb7z6[10] = Grqoz6; +assign Coxmz6[10] = Ytqoz6; +assign Krxmz6[10] = Tvqoz6; +assign Cxxmz6[10] = Lxqoz6; +assign Cxxmz6[9] = Dzqoz6; +assign Fuxmz6[1] = U0roz6; +assign Uzxmz6[4] = K2roz6; +assign Uzxmz6[3] = Y3roz6; +assign Uzxmz6[0] = M5roz6; +assign Uzxmz6[1] = A7roz6; +assign Cl57v6 = O8roz6; +assign Yn57v6 = Earoz6; +assign Ovxmz6[0] = Ubroz6; +assign Ds57v6 = Pdroz6; +assign Kp57v6 = Bfroz6; +assign Tg57v6 = Ogroz6; +assign Yg67z6 = (!Hiroz6); +assign Ulxmz6[4] = Ujroz6; +assign Ulxmz6[6] = Wlroz6; +assign Ulxmz6[7] = Ynroz6; +assign Ulxmz6[9] = Aqroz6; +assign Ulxmz6[10] = Csroz6; +assign Ulxmz6[11] = Furoz6; +assign Ulxmz6[12] = Iwroz6; +assign Ulxmz6[28] = Lyroz6; +assign U3o7z6[28] = O0soz6; +assign Fvb7z6[28] = E3soz6; +assign Ulxmz6[29] = W5soz6; +assign U3o7z6[29] = Z7soz6; +assign Fvb7z6[29] = Pasoz6; +assign Ulxmz6[30] = Hdsoz6; +assign U3o7z6[30] = Kfsoz6; +assign Fvb7z6[30] = Aisoz6; +assign Ulxmz6[31] = Sksoz6; +assign Ulxmz6[0] = Vmsoz6; +assign Usxmz6[0] = Xosoz6; +assign Usxmz6[1] = Pqsoz6; +assign E157v6 = Hssoz6; +assign Yt47v6 = Ttsoz6; +assign Cxxmz6[2] = Ivsoz6; +assign Ulxmz6[2] = Zwsoz6; +assign Blxmz6[0] = Bzsoz6; +assign Hnxmz6[11] = E1toz6; +assign Njxmz6[11] = Z2toz6; +assign Cxxmz6[23] = C5toz6; +assign Ulxmz6[23] = U6toz6; +assign U3o7z6[23] = X8toz6; +assign Fvb7z6[23] = Nbtoz6; +assign Cxxmz6[22] = Fetoz6; +assign Ulxmz6[22] = Xftoz6; +assign U3o7z6[22] = Aitoz6; +assign Fvb7z6[22] = Qktoz6; +assign Cxxmz6[21] = Odazz6; +assign Ulxmz6[21] = Gfazz6; +assign Njxmz6[9] = Jhazz6; +assign Hnxmz6[9] = Ljazz6; +assign Tfxmz6[9] = Flazz6; +assign L5ymz6[24] = Gnazz6; +assign Aixmz6[21] = Zoazz6; +assign U3o7z6[21] = Erazz6; +assign Fvb7z6[21] = Utazz6; +assign L5ymz6[23] = Mwazz6; +assign Aixmz6[20] = Fyazz6; +assign Tfxmz6[8] = K0bzz6; +assign Hnxmz6[8] = L2bzz6; +assign Njxmz6[8] = F4bzz6; +assign Cxxmz6[20] = H6bzz6; +assign Ulxmz6[20] = Z7bzz6; +assign U3o7z6[20] = Cabzz6; +assign Fvb7z6[20] = Scbzz6; +assign Cxxmz6[19] = Kfbzz6; +assign Ulxmz6[19] = Chbzz6; +assign Njxmz6[7] = Fjbzz6; +assign Hnxmz6[7] = Hlbzz6; +assign Tfxmz6[7] = Bnbzz6; +assign L5ymz6[22] = Cpbzz6; +assign Aixmz6[19] = Vqbzz6; +assign U3o7z6[19] = Atbzz6; +assign Fvb7z6[19] = Qvbzz6; +assign L5ymz6[21] = Iybzz6; +assign Aixmz6[18] = B0czz6; +assign Tfxmz6[6] = G2czz6; +assign Hnxmz6[6] = H4czz6; +assign Njxmz6[6] = B6czz6; +assign Cxxmz6[18] = D8czz6; +assign Ulxmz6[18] = V9czz6; +assign U3o7z6[18] = Ybczz6; +assign Fvb7z6[18] = Oeczz6; +assign Cxxmz6[17] = Ghczz6; +assign Ulxmz6[17] = Yiczz6; +assign Njxmz6[5] = Blczz6; +assign Hnxmz6[5] = Dnczz6; +assign Tfxmz6[5] = Xoczz6; +assign L5ymz6[20] = Yqczz6; +assign Aixmz6[17] = Rsczz6; +assign U3o7z6[17] = Wuczz6; +assign Fvb7z6[17] = Mxczz6; +assign L5ymz6[19] = E0dzz6; +assign Aixmz6[16] = X1dzz6; +assign Tfxmz6[4] = C4dzz6; +assign Hnxmz6[4] = D6dzz6; +assign Njxmz6[4] = X7dzz6; +assign Cxxmz6[16] = Z9dzz6; +assign Ulxmz6[16] = Rbdzz6; +assign U3o7z6[16] = Uddzz6; +assign Fvb7z6[16] = Kgdzz6; +assign Cxxmz6[15] = Cjdzz6; +assign Ulxmz6[15] = Ukdzz6; +assign Njxmz6[3] = Xmdzz6; +assign Hnxmz6[3] = Zodzz6; +assign Tfxmz6[3] = Tqdzz6; +assign L5ymz6[18] = Usdzz6; +assign Aixmz6[15] = Nudzz6; +assign U3o7z6[15] = Swdzz6; +assign Fvb7z6[15] = Izdzz6; +assign L5ymz6[17] = A2ezz6; +assign Aixmz6[14] = T3ezz6; +assign Tfxmz6[2] = Y5ezz6; +assign Hnxmz6[2] = Z7ezz6; +assign Njxmz6[2] = T9ezz6; +assign Cxxmz6[14] = Vbezz6; +assign Ulxmz6[14] = Ndezz6; +assign U3o7z6[14] = Qfezz6; +assign Fvb7z6[14] = Giezz6; +assign Cxxmz6[13] = Ykezz6; +assign Ulxmz6[13] = Qmezz6; +assign Njxmz6[1] = Toezz6; +assign Hnxmz6[1] = Vqezz6; +assign Tfxmz6[1] = Psezz6; +assign L5ymz6[16] = Quezz6; +assign Aixmz6[13] = Jwezz6; +assign U3o7z6[13] = Oyezz6; +assign Fvb7z6[13] = E1fzz6; +assign L5ymz6[15] = W3fzz6; +assign Aixmz6[12] = P5fzz6; +assign U3o7z6[12] = U7fzz6; +assign Fvb7z6[12] = Kafzz6; +assign Klo7z6[0] = Cdfzz6; +assign Q497z6 = (!Yefzz6); +assign Lq0ft6 = Vhfzz6; +assign Ejo7z6[0] = Pkfzz6; +assign Ejo7z6[1] = Cnfzz6; +assign Xczet6 = Ppfzz6; +assign U71ft6 = Dsfzz6; +assign Ua77z6 = (!Wufzz6); +assign Ma77z6 = (!Jxfzz6); +assign K4bdt6 = Xzfzz6; +assign O3uet6 = P2gzz6; +assign I2yet6 = P5gzz6; +assign Rnm7z6[2] = D8gzz6; +assign Rnm7z6[1] = Dbgzz6; +assign Rnm7z6[0] = Degzz6; +assign I497z6 = (!Dhgzz6); +assign Dkm7z6[0] = Dkgzz6; +assign Knh7v6 = (!Cngzz6); +assign Qln7z6[1] = Wpgzz6; +assign Ygo7v6 = (!Msgzz6); +assign X0oet6 = Jvgzz6; +assign Meoet6 = Bygzz6; +assign Kqm7z6[0] = D1hzz6; +assign Kqm7z6[1] = D4hzz6; +assign Sz67z6 = (!D7hzz6); +assign Cz67z6 = (!Gahzz6); +assign Zec7z6[22] = Jdhzz6; +assign Byc7z6[22] = Ighzz6; +assign Zec7z6[6] = Mjhzz6; +assign I0c7z6[0] = Kmhzz6; +assign Edh7z6[0] = Tohzz6; +assign Ven7z6[0] = Prhzz6; +assign Tim7z6[3] = Duhzz6; +assign Itb7z6[3] = Rwhzz6; +assign Coxmz6[3] = Jzhzz6; +assign Krxmz6[3] = D1izz6; +assign Cxxmz6[3] = U2izz6; +assign Ulxmz6[3] = L4izz6; +assign Blxmz6[1] = N6izz6; +assign Omxmz6[3] = Q8izz6; +assign Omxmz6[2] = Haizz6; +assign R957v6 = Ybizz6; +assign L5ymz6[6] = Ldizz6; +assign Aixmz6[3] = Dfizz6; +assign L5ymz6[5] = Hhizz6; +assign Aixmz6[2] = Ziizz6; +assign L5ymz6[4] = Dlizz6; +assign Aixmz6[1] = Vmizz6; +assign L5ymz6[3] = Zoizz6; +assign Aixmz6[0] = Rqizz6; +assign L5ymz6[2] = Vsizz6; +assign Uixmz6[3] = Nuizz6; +assign F5o7z6[3] = Ewizz6; +assign L5ymz6[1] = Uyizz6; +assign Uixmz6[2] = M0jzz6; +assign Cozet6 = D2jzz6; +assign Zn0ft6 = X4jzz6; +assign K6uet6 = N7jzz6; +assign O7o7z6[2] = Fajzz6; +assign Oeo7z6[1] = Zcjzz6; +assign Ppzet6 = Mfjzz6; +assign Ov0ft6 = Bijzz6; +assign L1bdt6 = Rkjzz6; +assign Ekoet6 = Bnjzz6; +assign Xnnet6 = Xpjzz6; +assign Styet6 = Osjzz6; +assign Znn7z6[0] = Fvjzz6; +assign Tszet6 = Rxjzz6; +assign Hub7z6[1] = H0kzz6; +assign F5o7z6[2] = Y2kzz6; +assign L5ymz6[0] = O5kzz6; +assign Hhxmz6[0] = G7kzz6; +assign Hhxmz6[1] = I9kzz6; +assign Ogxmz6[0] = Kbkzz6; +assign Ogxmz6[1] = Ndkzz6; +assign Ogxmz6[2] = Qfkzz6; +assign Ogxmz6[3] = Thkzz6; +assign Qf47v6 = Wjkzz6; +assign Mg47v6 = Plkzz6; +assign Kh47v6 = Knkzz6; +assign Ez57v6 = Fpkzz6; +assign Tfxmz6[11] = Xqkzz6; +assign S067v6 = Zskzz6; +assign Uixmz6[25] = Qukzz6; +assign Uixmz6[26] = Gwkzz6; +assign Uixmz6[27] = Wxkzz6; +assign Uixmz6[28] = Mzkzz6; +assign Uixmz6[29] = C1lzz6; +assign Uixmz6[30] = S2lzz6; +assign Uixmz6[31] = I4lzz6; +assign Uixmz6[4] = Y5lzz6; +assign Uixmz6[5] = S7lzz6; +assign F5o7z6[5] = M9lzz6; +assign Coxmz6[17] = Cclzz6; +assign Krxmz6[17] = Xdlzz6; +assign Coxmz6[28] = Pflzz6; +assign Krxmz6[28] = Khlzz6; +assign Coxmz6[25] = Cjlzz6; +assign Krxmz6[25] = Xklzz6; +assign Cxxmz6[25] = Pmlzz6; +assign Ulxmz6[25] = Holzz6; +assign U3o7z6[25] = Kqlzz6; +assign Fvb7z6[25] = Atlzz6; +assign Ven7z6[2] = Svlzz6; +assign Znn7z6[2] = Gylzz6; +assign Gmnet6 = S0mzz6; +assign Aym7z6[1] = L3mzz6; +assign Aym7z6[2] = B6mzz6; +assign Aym7z6[3] = R8mzz6; +assign Sjyet6 = Hbmzz6; +assign Znn7z6[3] = Wdmzz6; +assign Ueh7v6 = (!Igmzz6); +assign G977z6 = (!Mjmzz6); +assign Gazet6 = Qmmzz6; +assign Kyn7z6[1] = Lpmzz6; +assign Kyn7z6[0] = Ksmzz6; +assign Kyn7z6[2] = Jvmzz6; +assign D6c7z6[0] = Iymzz6; +assign Ewyet6 = K1nzz6; +assign Dtm7z6[3] = B4nzz6; +assign Dtm7z6[1] = V6nzz6; +assign Dtm7z6[0] = P9nzz6; +assign Dtm7z6[2] = Jcnzz6; +assign Itb7z6[2] = Dfnzz6; +assign Itb7z6[9] = Vhnzz6; +assign Tim7z6[25] = Nknzz6; +assign Itb7z6[25] = Cnnzz6; +assign S377z6 = (!Upnzz6); +assign C377z6 = (!Ysnzz6); +assign Tim7z6[27] = Cwnzz6; +assign Itb7z6[27] = Rynzz6; +assign Coxmz6[27] = J1ozz6; +assign Krxmz6[27] = E3ozz6; +assign Cxxmz6[27] = W4ozz6; +assign Ulxmz6[27] = O6ozz6; +assign U3o7z6[27] = R8ozz6; +assign Fvb7z6[27] = Hbozz6; +assign Cxxmz6[26] = Zdozz6; +assign Ulxmz6[26] = Rfozz6; +assign Itb7z6[26] = Uhozz6; +assign Tim7z6[26] = Mkozz6; +assign Y477z6 = (!Bnozz6); +assign I477z6 = (!Fqozz6); +assign U3o7z6[26] = Jtozz6; +assign Fvb7z6[26] = Zvozz6; +assign Coxmz6[26] = Ryozz6; +assign Krxmz6[26] = M0pzz6; +assign Omxmz6[26] = E2pzz6; +assign Wk47v6 = S3pzz6; +assign Omxmz6[27] = L5pzz6; +assign E677z6 = (!Z6pzz6); +assign O577z6 = (!Dapzz6); +assign Tim7z6[4] = Hdpzz6; +assign Itb7z6[4] = Vfpzz6; +assign Gx67z6 = (!Nipzz6); +assign Qw67z6 = (!Qlpzz6); +assign Tim7z6[5] = Topzz6; +assign Itb7z6[5] = Hrpzz6; +assign Coxmz6[5] = Ztpzz6; +assign Krxmz6[5] = Tvpzz6; +assign Cxxmz6[5] = Kxpzz6; +assign Ulxmz6[5] = Bzpzz6; +assign Gco7z6[5] = D1qzz6; +assign Gco7z6[4] = A4qzz6; +assign U3o7z6[9] = X6qzz6; +assign Fvb7z6[9] = M9qzz6; +assign Coxmz6[9] = Dcqzz6; +assign Krxmz6[9] = Xdqzz6; +assign U3o7z6[8] = Ofqzz6; +assign Fvb7z6[8] = Diqzz6; +assign Coxmz6[8] = Ukqzz6; +assign Krxmz6[8] = Omqzz6; +assign Cxxmz6[8] = Foqzz6; +assign Ulxmz6[8] = Wpqzz6; +assign Itb7z6[8] = Yrqzz6; +assign Fuxmz6[0] = Quqzz6; +assign Ikxmz6[0] = Gwqzz6; +assign U3o7z6[7] = Hyqzz6; +assign Fvb7z6[7] = W0rzz6; +assign U3o7z6[6] = N3rzz6; +assign Fvb7z6[6] = C6rzz6; +assign U3o7z6[5] = T8rzz6; +assign Fvb7z6[5] = Ibrzz6; +assign U3o7z6[4] = Zdrzz6; +assign Fvb7z6[4] = Ogrzz6; +assign Klo7z6[6] = Fjrzz6; +assign Klo7z6[4] = Blrzz6; +assign Klo7z6[5] = Xmrzz6; +assign Klo7z6[3] = Torzz6; +assign Klo7z6[2] = Pqrzz6; +assign Klo7z6[1] = Lsrzz6; +assign Coxmz6[4] = Hurzz6; +assign Krxmz6[4] = Bwrzz6; +assign Y9o7z6[3] = Sxrzz6; +assign Fvb7z6[3] = H0szz6; +assign Y9o7z6[2] = Y2szz6; +assign Coxmz6[2] = N5szz6; +assign Krxmz6[2] = H7szz6; +assign Fvb7z6[2] = Y8szz6; +assign Y9o7z6[1] = Pbszz6; +assign Y9o7z6[0] = Eeszz6; +assign Bizet6 = Tgszz6; +assign K01ft6 = Ijszz6; +assign Mezet6 = Vlszz6; +assign Wmh7v6 = (!Coszz6); +assign Omxmz6[5] = Vqszz6; +assign My67z6 = (!Nsszz6); +assign Wx67z6 = (!Qvszz6); +assign Tim7z6[6] = Tyszz6; +assign Itb7z6[6] = H1tzz6; +assign Coxmz6[6] = Z3tzz6; +assign Tim7z6[7] = T5tzz6; +assign Itb7z6[7] = H8tzz6; +assign Coxmz6[7] = Zatzz6; +assign Krxmz6[7] = Tctzz6; +assign Qmzet6 = Ketzz6; +assign K2bdt6 = Dhtzz6; +assign Pjb7z6[3] = Sjtzz6; +assign Pjb7z6[4] = Oltzz6; +assign Pjb7z6[6] = Kntzz6; +assign Pjb7z6[7] = Gptzz6; +assign Pjb7z6[9] = Crtzz6; +assign Pjb7z6[13] = Ystzz6; +assign Pjb7z6[14] = Vutzz6; +assign Pjb7z6[15] = Swtzz6; +assign Pjb7z6[16] = Pytzz6; +assign Pjb7z6[17] = M0uzz6; +assign Pjb7z6[5] = J2uzz6; +assign Pjb7z6[8] = F4uzz6; +assign Pjb7z6[10] = B6uzz6; +assign Pjb7z6[11] = Y7uzz6; +assign Pjb7z6[18] = V9uzz6; +assign Pjb7z6[19] = Sbuzz6; +assign D16ft6 = Pduzz6; +assign K2adt6 = Ofuzz6; +assign A497z6 = (!Jhuzz6); +assign Omxmz6[25] = Hjuzz6; +assign Coxmz6[24] = Vkuzz6; +assign Krxmz6[24] = Qmuzz6; +assign Cxxmz6[24] = Iouzz6; +assign Ulxmz6[24] = Aquzz6; +assign Itb7z6[24] = Dsuzz6; +assign U3o7z6[24] = Vuuzz6; +assign Fvb7z6[24] = Lxuzz6; +assign S397z6 = (!D0vzz6); +assign Uixmz6[6] = R1vzz6; +assign Uixmz6[7] = L3vzz6; +assign Uixmz6[24] = F5vzz6; +assign Oh77z6 = (!V6vzz6); +assign Q2ymz6[1] = S8vzz6; +assign Q2ymz6[0] = Iavzz6; +assign Sx57v6 = Ybvzz6; +assign Aw67z6 = (!Odvzz6); +assign Kv67z6 = (!Rgvzz6); +assign Itb7z6[10] = Ujvzz6; +assign Tim7z6[10] = Mmvzz6; +assign Q477z6 = (!Bpvzz6); +assign A477z6 = (!Fsvzz6); +assign Itb7z6[11] = Jvvzz6; +assign Tim7z6[11] = Byvzz6; +assign W577z6 = (!Q0wzz6); +assign G577z6 = (!U3wzz6); +assign Zec7z6[27] = Y6wzz6; +assign Byc7z6[27] = X9wzz6; +assign Zec7z6[11] = Bdwzz6; +assign Qwddt6 = Agwzz6; +assign K397z6 = (!Eiwzz6); +assign Lpc7z6[0] = Ikwzz6; +assign Bfd7z6[3] = Jnwzz6; +assign Gcd7z6[3] = Mqwzz6; +assign Bfd7z6[5] = Otwzz6; +assign Gcd7z6[5] = Rwwzz6; +assign Bfd7z6[0] = Tzwzz6; +assign Gcd7z6[0] = W2xzz6; +assign Bfd7z6[2] = Y5xzz6; +assign Bfd7z6[4] = B9xzz6; +assign Gcd7z6[4] = Ecxzz6; +assign Gcd7z6[2] = Gfxzz6; +assign Zec7z6[26] = Iixzz6; +assign Byc7z6[26] = Hlxzz6; +assign Zec7z6[10] = Loxzz6; +assign F4edt6 = Krxzz6; +assign Jqj7z6[5] = Ktxzz6; +assign Xsddt6 = Lwxzz6; +assign Geh7v6 = (!Lyxzz6); +assign Ffadt6 = M0yzz6; +assign Tuddt6 = N2yzz6; +assign S6cdt6 = O4yzz6; +assign Uobdt6 = Q6yzz6; +assign M5e7z6[1] = Q8yzz6; +assign Knbdt6 = Vayzz6; +assign W9c7v6 = Ycyzz6; +assign N6c7v6 = Weyzz6; +assign Byc7z6[10] = Ygyzz6; +assign Pmc7z6[0] = Ckyzz6; +assign I5cdt6 = Fnyzz6; +assign K7e7z6[1] = Ipyzz6; +assign B6edt6 = Nryzz6; +assign T3cdt6 = Ptyzz6; +assign Xnh7z6[1] = Xvyzz6; +assign Xnh7z6[0] = Uyyzz6; +assign Byc7z6[11] = R1zzz6; +assign Itb7z6[12] = V4zzz6; +assign Tim7z6[12] = N7zzz6; +assign C777z6 = (!Cazzz6); +assign M677z6 = (!Gdzzz6); +assign Itb7z6[13] = Kgzzz6; +assign Coxmz6[13] = Cjzzz6; +assign Krxmz6[13] = Xkzzz6; +assign Tim7z6[13] = Pmzzz6; +assign I877z6 = (!Epzzz6); +assign S777z6 = (!Iszzz6); +assign Itb7z6[14] = Mvzzz6; +assign Coxmz6[14] = Eyzzz6; +assign Krxmz6[14] = Zzzzz6; +assign Tim7z6[14] = R10007; +assign Byc7z6[14] = G40007; +assign Bfh7v6 = (!K70007); +assign Y877z6 = (!Oa0007); +assign Zec7z6[30] = Sd0007; +assign Ide7z6[0] = Rg0007; +assign Ide7z6[3] = Cj0007; +assign Ide7z6[2] = Nl0007; +assign Ide7z6[1] = Yn0007; +assign K7e7z6[0] = Jq0007; +assign vis_r3_o[3] = Os0007; +assign vis_r3_o[6] = Ev0007; +assign vis_r3_o[7] = Ux0007; +assign vis_r3_o[9] = K01007; +assign vis_psp_o[9] = A31007; +assign vis_r3_o[12] = R51007; +assign vis_psp_o[12] = I81007; +assign vis_r3_o[13] = Ab1007; +assign vis_psp_o[13] = Rd1007; +assign vis_r3_o[14] = Jg1007; +assign vis_psp_o[14] = Aj1007; +assign vis_r3_o[16] = Sl1007; +assign vis_psp_o[16] = Jo1007; +assign vis_r3_o[17] = Br1007; +assign vis_psp_o[17] = St1007; +assign vis_r3_o[19] = Kw1007; +assign vis_psp_o[19] = Bz1007; +assign vis_r3_o[20] = T12007; +assign vis_psp_o[20] = K42007; +assign vis_r3_o[21] = C72007; +assign vis_psp_o[21] = T92007; +assign vis_r3_o[22] = Lc2007; +assign vis_psp_o[22] = Cf2007; +assign vis_r3_o[23] = Uh2007; +assign vis_psp_o[23] = Lk2007; +assign vis_r3_o[24] = Dn2007; +assign vis_psp_o[24] = Up2007; +assign vis_r3_o[25] = Ms2007; +assign vis_psp_o[25] = Dv2007; +assign vis_r3_o[10] = Vx2007; +assign vis_psp_o[10] = M03007; +assign vis_r3_o[18] = E33007; +assign vis_psp_o[18] = V53007; +assign vis_r3_o[26] = N83007; +assign vis_psp_o[26] = Eb3007; +assign vis_r3_o[4] = Wd3007; +assign vis_r3_o[2] = Mg3007; +assign vis_psp_o[2] = Cj3007; +assign vis_r3_o[8] = Tl3007; +assign vis_r3_o[27] = Jo3007; +assign vis_psp_o[27] = Ar3007; +assign vis_r3_o[15] = St3007; +assign vis_psp_o[15] = Jw3007; +assign vis_r3_o[29] = Bz3007; +assign vis_psp_o[29] = S14007; +assign vis_r3_o[28] = K44007; +assign vis_psp_o[28] = B74007; +assign vis_r1_o[0] = T94007; +assign vis_r1_o[30] = Jc4007; +assign vis_r1_o[29] = Af4007; +assign vis_r1_o[28] = Rh4007; +assign vis_r1_o[27] = Ik4007; +assign vis_r1_o[26] = Zm4007; +assign vis_r1_o[25] = Qp4007; +assign vis_r1_o[24] = Hs4007; +assign vis_r1_o[23] = Yu4007; +assign vis_r1_o[22] = Px4007; +assign vis_r1_o[21] = G05007; +assign vis_r1_o[20] = X25007; +assign vis_r1_o[19] = O55007; +assign vis_r1_o[18] = F85007; +assign vis_r1_o[17] = Wa5007; +assign vis_r1_o[16] = Nd5007; +assign vis_r1_o[15] = Eg5007; +assign vis_r1_o[14] = Vi5007; +assign vis_r1_o[13] = Ml5007; +assign vis_r1_o[12] = Do5007; +assign vis_r1_o[11] = Uq5007; +assign vis_r1_o[10] = Lt5007; +assign vis_r1_o[9] = Cw5007; +assign vis_r1_o[8] = Sy5007; +assign vis_r1_o[7] = I16007; +assign vis_r1_o[6] = Y36007; +assign vis_r1_o[5] = O66007; +assign vis_r1_o[4] = E96007; +assign vis_r1_o[3] = Ub6007; +assign vis_r1_o[2] = Ke6007; +assign vis_r1_o[1] = Ah6007; +assign vis_r5_o[0] = Qj6007; +assign vis_r5_o[30] = Gm6007; +assign vis_r5_o[29] = Xo6007; +assign vis_r5_o[28] = Or6007; +assign vis_r5_o[27] = Fu6007; +assign vis_r5_o[26] = Ww6007; +assign vis_r5_o[25] = Nz6007; +assign vis_r5_o[24] = E27007; +assign vis_r5_o[23] = V47007; +assign vis_r5_o[22] = M77007; +assign vis_r5_o[21] = Da7007; +assign vis_r5_o[20] = Uc7007; +assign vis_r5_o[19] = Lf7007; +assign vis_r5_o[18] = Ci7007; +assign vis_r5_o[17] = Tk7007; +assign vis_r5_o[16] = Kn7007; +assign vis_r5_o[15] = Bq7007; +assign vis_r5_o[14] = Ss7007; +assign vis_r5_o[13] = Jv7007; +assign vis_r5_o[12] = Ay7007; +assign vis_r5_o[11] = R08007; +assign vis_r5_o[10] = I38007; +assign vis_r5_o[9] = Z58007; +assign vis_r5_o[8] = P88007; +assign vis_r5_o[7] = Fb8007; +assign vis_r5_o[6] = Vd8007; +assign vis_r5_o[5] = Lg8007; +assign vis_r5_o[4] = Bj8007; +assign vis_r5_o[3] = Rl8007; +assign vis_r5_o[2] = Ho8007; +assign vis_r5_o[1] = Xq8007; +assign vis_r7_o[0] = Nt8007; +assign vis_r7_o[30] = Dw8007; +assign vis_r7_o[29] = Uy8007; +assign vis_r7_o[28] = L19007; +assign vis_r7_o[27] = C49007; +assign vis_r7_o[26] = T69007; +assign vis_r7_o[25] = K99007; +assign vis_r7_o[24] = Bc9007; +assign vis_r7_o[23] = Se9007; +assign vis_r7_o[22] = Jh9007; +assign vis_r7_o[21] = Ak9007; +assign vis_r7_o[20] = Rm9007; +assign vis_r7_o[19] = Ip9007; +assign vis_r7_o[18] = Zr9007; +assign vis_r7_o[17] = Qu9007; +assign vis_r7_o[16] = Hx9007; +assign vis_r7_o[15] = Yz9007; +assign vis_r7_o[14] = P2a007; +assign vis_r7_o[13] = G5a007; +assign vis_r7_o[12] = X7a007; +assign vis_r7_o[11] = Oaa007; +assign vis_r7_o[10] = Fda007; +assign vis_r7_o[9] = Wfa007; +assign vis_r7_o[8] = Mia007; +assign vis_r7_o[7] = Cla007; +assign vis_r7_o[6] = Sna007; +assign vis_r7_o[5] = Iqa007; +assign vis_r7_o[4] = Ysa007; +assign vis_r7_o[3] = Ova007; +assign vis_r7_o[2] = Eya007; +assign vis_r7_o[1] = U0b007; +assign vis_r8_o[0] = K3b007; +assign vis_r8_o[30] = A6b007; +assign vis_r8_o[29] = R8b007; +assign vis_r8_o[28] = Ibb007; +assign vis_r8_o[27] = Zdb007; +assign vis_r8_o[26] = Qgb007; +assign vis_r8_o[25] = Hjb007; +assign vis_r8_o[24] = Ylb007; +assign vis_r8_o[23] = Pob007; +assign vis_r8_o[22] = Grb007; +assign vis_r8_o[21] = Xtb007; +assign vis_r8_o[20] = Owb007; +assign vis_r8_o[19] = Fzb007; +assign vis_r8_o[18] = W1c007; +assign vis_r8_o[17] = N4c007; +assign vis_r8_o[16] = E7c007; +assign vis_r8_o[15] = V9c007; +assign vis_r8_o[14] = Mcc007; +assign vis_r8_o[13] = Dfc007; +assign vis_r8_o[12] = Uhc007; +assign vis_r8_o[11] = Lkc007; +assign vis_r8_o[10] = Cnc007; +assign vis_r8_o[9] = Tpc007; +assign vis_r8_o[8] = Jsc007; +assign vis_r8_o[7] = Zuc007; +assign vis_r8_o[6] = Pxc007; +assign vis_r8_o[5] = F0d007; +assign vis_r8_o[4] = V2d007; +assign vis_r8_o[3] = L5d007; +assign vis_r8_o[2] = B8d007; +assign vis_r8_o[1] = Rad007; +assign vis_r9_o[0] = Hdd007; +assign vis_r9_o[30] = Xfd007; +assign vis_r9_o[29] = Oid007; +assign vis_r9_o[28] = Fld007; +assign vis_r9_o[27] = Wnd007; +assign vis_r9_o[26] = Nqd007; +assign vis_r9_o[25] = Etd007; +assign vis_r9_o[24] = Vvd007; +assign vis_r9_o[23] = Myd007; +assign vis_r9_o[22] = D1e007; +assign vis_r9_o[21] = U3e007; +assign vis_r9_o[20] = L6e007; +assign vis_r9_o[19] = C9e007; +assign vis_r9_o[18] = Tbe007; +assign vis_r9_o[17] = Kee007; +assign vis_r9_o[16] = Bhe007; +assign vis_r9_o[15] = Sje007; +assign vis_r9_o[14] = Jme007; +assign vis_r9_o[13] = Ape007; +assign vis_r9_o[12] = Rre007; +assign vis_r9_o[11] = Iue007; +assign vis_r9_o[10] = Zwe007; +assign vis_r9_o[9] = Qze007; +assign vis_r9_o[8] = G2f007; +assign vis_r9_o[7] = W4f007; +assign vis_r9_o[6] = M7f007; +assign vis_r9_o[5] = Caf007; +assign vis_r9_o[4] = Scf007; +assign vis_r9_o[3] = Iff007; +assign vis_r9_o[2] = Yhf007; +assign vis_r9_o[1] = Okf007; +assign vis_r10_o[0] = Enf007; +assign vis_r10_o[30] = Vpf007; +assign vis_r10_o[29] = Nsf007; +assign vis_r10_o[28] = Fvf007; +assign vis_r10_o[27] = Xxf007; +assign vis_r10_o[26] = P0g007; +assign vis_r10_o[25] = H3g007; +assign vis_r10_o[24] = Z5g007; +assign vis_r10_o[23] = R8g007; +assign vis_r10_o[22] = Jbg007; +assign vis_r10_o[21] = Beg007; +assign vis_r10_o[20] = Tgg007; +assign vis_r10_o[19] = Ljg007; +assign vis_r10_o[18] = Dmg007; +assign vis_r10_o[17] = Vog007; +assign vis_r10_o[16] = Nrg007; +assign vis_r10_o[15] = Fug007; +assign vis_r10_o[14] = Xwg007; +assign vis_r10_o[13] = Pzg007; +assign vis_r10_o[12] = H2h007; +assign vis_r10_o[11] = Z4h007; +assign vis_r10_o[10] = R7h007; +assign vis_r10_o[9] = Jah007; +assign vis_r10_o[8] = Adh007; +assign vis_r10_o[7] = Rfh007; +assign vis_r10_o[6] = Iih007; +assign vis_r10_o[5] = Zkh007; +assign vis_r10_o[4] = Qnh007; +assign vis_r10_o[3] = Hqh007; +assign vis_r10_o[2] = Ysh007; +assign vis_r10_o[1] = Pvh007; +assign vis_r11_o[0] = Gyh007; +assign vis_r11_o[30] = X0i007; +assign vis_r11_o[29] = P3i007; +assign vis_r11_o[28] = H6i007; +assign vis_r11_o[27] = Z8i007; +assign vis_r11_o[26] = Rbi007; +assign vis_r11_o[25] = Jei007; +assign vis_r11_o[24] = Bhi007; +assign vis_r11_o[23] = Tji007; +assign vis_r11_o[22] = Lmi007; +assign vis_r11_o[21] = Dpi007; +assign vis_r11_o[20] = Vri007; +assign vis_r11_o[19] = Nui007; +assign vis_r11_o[18] = Fxi007; +assign vis_r11_o[17] = Xzi007; +assign vis_r11_o[16] = P2j007; +assign vis_r11_o[15] = H5j007; +assign vis_r11_o[14] = Z7j007; +assign vis_r11_o[13] = Raj007; +assign vis_r11_o[12] = Jdj007; +assign vis_r11_o[11] = Bgj007; +assign vis_r11_o[10] = Tij007; +assign vis_r11_o[9] = Llj007; +assign vis_r11_o[8] = Coj007; +assign vis_r11_o[7] = Tqj007; +assign vis_r11_o[6] = Ktj007; +assign vis_r11_o[5] = Bwj007; +assign vis_r11_o[4] = Syj007; +assign vis_r11_o[3] = J1k007; +assign vis_r11_o[2] = A4k007; +assign vis_r11_o[1] = R6k007; +assign vis_r12_o[0] = I9k007; +assign vis_r12_o[30] = Zbk007; +assign vis_r12_o[29] = Rek007; +assign vis_r12_o[28] = Jhk007; +assign vis_r12_o[27] = Bkk007; +assign vis_r12_o[26] = Tmk007; +assign vis_r12_o[25] = Lpk007; +assign vis_r12_o[24] = Dsk007; +assign vis_r12_o[23] = Vuk007; +assign vis_r12_o[22] = Nxk007; +assign vis_r12_o[21] = F0l007; +assign vis_r12_o[20] = X2l007; +assign vis_r12_o[19] = P5l007; +assign vis_r12_o[18] = H8l007; +assign vis_r12_o[17] = Zal007; +assign vis_r12_o[16] = Rdl007; +assign vis_r12_o[15] = Jgl007; +assign vis_r12_o[14] = Bjl007; +assign vis_r12_o[13] = Tll007; +assign vis_r12_o[12] = Lol007; +assign vis_r12_o[11] = Drl007; +assign vis_r12_o[10] = Vtl007; +assign vis_r12_o[9] = Nwl007; +assign vis_r12_o[8] = Ezl007; +assign vis_r12_o[7] = V1m007; +assign vis_r12_o[6] = M4m007; +assign vis_r12_o[5] = D7m007; +assign vis_r12_o[4] = U9m007; +assign vis_r12_o[3] = Lcm007; +assign vis_r12_o[2] = Cfm007; +assign vis_r12_o[1] = Thm007; +assign vis_msp_o[2] = Kkm007; +assign vis_msp_o[30] = Bnm007; +assign vis_msp_o[29] = Tpm007; +assign vis_msp_o[28] = Lsm007; +assign vis_msp_o[27] = Dvm007; +assign vis_msp_o[26] = Vxm007; +assign vis_msp_o[25] = N0n007; +assign vis_msp_o[24] = F3n007; +assign vis_msp_o[23] = X5n007; +assign vis_msp_o[22] = P8n007; +assign vis_msp_o[21] = Hbn007; +assign vis_msp_o[20] = Zdn007; +assign vis_msp_o[19] = Rgn007; +assign vis_msp_o[18] = Jjn007; +assign vis_msp_o[17] = Bmn007; +assign vis_msp_o[16] = Ton007; +assign vis_msp_o[15] = Lrn007; +assign vis_msp_o[14] = Dun007; +assign vis_msp_o[13] = Vwn007; +assign vis_msp_o[12] = Nzn007; +assign vis_msp_o[11] = F2o007; +assign vis_msp_o[10] = X4o007; +assign vis_msp_o[9] = P7o007; +assign vis_msp_o[8] = Gao007; +assign vis_msp_o[7] = Xco007; +assign vis_msp_o[6] = Ofo007; +assign vis_msp_o[5] = Fio007; +assign vis_msp_o[4] = Wko007; +assign vis_msp_o[3] = Nno007; +assign Pic7z6[0] = Eqo007; +assign Pic7z6[30] = Vso007; +assign Pic7z6[29] = Nvo007; +assign Pic7z6[28] = Fyo007; +assign Pic7z6[27] = X0p007; +assign Pic7z6[26] = P3p007; +assign Pic7z6[25] = H6p007; +assign Pic7z6[24] = Z8p007; +assign Pic7z6[23] = Rbp007; +assign Pic7z6[22] = Jep007; +assign Pic7z6[21] = Bhp007; +assign Pic7z6[20] = Tjp007; +assign Pic7z6[19] = Lmp007; +assign Pic7z6[18] = Dpp007; +assign Pic7z6[17] = Vrp007; +assign Pic7z6[16] = Nup007; +assign Pic7z6[15] = Fxp007; +assign Pic7z6[14] = Xzp007; +assign Pic7z6[13] = P2q007; +assign Pic7z6[12] = H5q007; +assign Pic7z6[11] = Z7q007; +assign Pic7z6[10] = Raq007; +assign Pic7z6[9] = Jdq007; +assign Pic7z6[8] = Agq007; +assign Pic7z6[7] = Riq007; +assign Pic7z6[6] = Ilq007; +assign Pic7z6[5] = Znq007; +assign Pic7z6[4] = Qqq007; +assign Pic7z6[3] = Htq007; +assign Pic7z6[2] = Yvq007; +assign Pic7z6[1] = Pyq007; +assign vis_r2_o[0] = G1r007; +assign vis_r2_o[30] = W3r007; +assign vis_r2_o[29] = N6r007; +assign vis_r2_o[28] = E9r007; +assign vis_r2_o[27] = Vbr007; +assign vis_r2_o[26] = Mer007; +assign vis_r2_o[25] = Dhr007; +assign vis_r2_o[24] = Ujr007; +assign vis_r2_o[23] = Lmr007; +assign vis_r2_o[22] = Cpr007; +assign vis_r2_o[21] = Trr007; +assign vis_r2_o[20] = Kur007; +assign vis_r2_o[19] = Bxr007; +assign vis_r2_o[18] = Szr007; +assign vis_r2_o[17] = J2s007; +assign vis_r2_o[16] = A5s007; +assign vis_r2_o[15] = R7s007; +assign vis_r2_o[14] = Ias007; +assign vis_r2_o[13] = Zcs007; +assign vis_r2_o[12] = Qfs007; +assign vis_r2_o[11] = His007; +assign vis_r2_o[10] = Yks007; +assign vis_r2_o[9] = Pns007; +assign vis_r2_o[8] = Fqs007; +assign vis_r2_o[7] = Vss007; +assign vis_r2_o[6] = Lvs007; +assign vis_r2_o[5] = Bys007; +assign vis_r2_o[4] = R0t007; +assign vis_r2_o[3] = H3t007; +assign vis_r2_o[2] = X5t007; +assign vis_r2_o[1] = N8t007; +assign vis_r4_o[0] = Dbt007; +assign vis_r4_o[30] = Tdt007; +assign vis_r4_o[29] = Kgt007; +assign vis_r4_o[28] = Bjt007; +assign vis_r4_o[27] = Slt007; +assign vis_r4_o[26] = Jot007; +assign vis_r4_o[25] = Art007; +assign vis_r4_o[24] = Rtt007; +assign vis_r4_o[23] = Iwt007; +assign vis_r4_o[22] = Zyt007; +assign vis_r4_o[21] = Q1u007; +assign vis_r4_o[20] = H4u007; +assign vis_r4_o[19] = Y6u007; +assign vis_r4_o[18] = P9u007; +assign vis_r4_o[17] = Gcu007; +assign vis_r4_o[16] = Xeu007; +assign vis_r4_o[15] = Ohu007; +assign vis_r4_o[14] = Fku007; +assign vis_r4_o[13] = Wmu007; +assign vis_r4_o[12] = Npu007; +assign vis_r4_o[11] = Esu007; +assign vis_r4_o[10] = Vuu007; +assign vis_r4_o[9] = Mxu007; +assign vis_r4_o[8] = C0v007; +assign vis_r4_o[7] = S2v007; +assign vis_r4_o[6] = I5v007; +assign vis_r4_o[5] = Y7v007; +assign vis_r4_o[4] = Oav007; +assign vis_r4_o[3] = Edv007; +assign vis_r4_o[2] = Ufv007; +assign vis_r4_o[1] = Kiv007; +assign vis_r6_o[0] = Alv007; +assign vis_r6_o[30] = Qnv007; +assign vis_r6_o[29] = Hqv007; +assign vis_r6_o[28] = Ysv007; +assign vis_r6_o[27] = Pvv007; +assign vis_r6_o[26] = Gyv007; +assign vis_r6_o[25] = X0w007; +assign vis_r6_o[24] = O3w007; +assign vis_r6_o[23] = F6w007; +assign vis_r6_o[22] = W8w007; +assign vis_r6_o[21] = Nbw007; +assign vis_r6_o[20] = Eew007; +assign vis_r6_o[19] = Vgw007; +assign vis_r6_o[18] = Mjw007; +assign vis_r6_o[17] = Dmw007; +assign vis_r6_o[16] = Uow007; +assign vis_r6_o[15] = Lrw007; +assign vis_r6_o[14] = Cuw007; +assign vis_r6_o[13] = Tww007; +assign vis_r6_o[12] = Kzw007; +assign vis_r6_o[11] = B2x007; +assign vis_r6_o[10] = S4x007; +assign vis_r6_o[9] = J7x007; +assign vis_r6_o[8] = Z9x007; +assign vis_r6_o[7] = Pcx007; +assign vis_r6_o[6] = Ffx007; +assign vis_r6_o[5] = Vhx007; +assign vis_r6_o[4] = Lkx007; +assign vis_r6_o[3] = Bnx007; +assign vis_r6_o[2] = Rpx007; +assign vis_r6_o[1] = Hsx007; +assign vis_r0_o[0] = Xux007; +assign vis_r0_o[30] = Nxx007; +assign vis_r0_o[29] = E0y007; +assign vis_r0_o[28] = V2y007; +assign vis_r0_o[27] = M5y007; +assign vis_r0_o[26] = D8y007; +assign vis_r0_o[25] = Uay007; +assign vis_r0_o[24] = Ldy007; +assign vis_r0_o[23] = Cgy007; +assign vis_r0_o[22] = Tiy007; +assign vis_r0_o[21] = Kly007; +assign vis_r0_o[20] = Boy007; +assign vis_r0_o[19] = Sqy007; +assign vis_r0_o[18] = Jty007; +assign vis_r0_o[17] = Awy007; +assign vis_r0_o[16] = Ryy007; +assign vis_r0_o[15] = I1z007; +assign vis_r0_o[14] = Z3z007; +assign vis_r0_o[13] = Q6z007; +assign vis_r0_o[12] = H9z007; +assign vis_r0_o[11] = Ybz007; +assign vis_r0_o[10] = Pez007; +assign vis_r0_o[9] = Ghz007; +assign vis_r0_o[8] = Wjz007; +assign vis_r0_o[7] = Mmz007; +assign vis_r0_o[6] = Cpz007; +assign vis_r0_o[5] = Srz007; +assign vis_r0_o[4] = Iuz007; +assign vis_r0_o[3] = Ywz007; +assign vis_r0_o[2] = Ozz007; +assign vis_r0_o[1] = E20107; +assign Byc7z6[30] = U40107; +assign Itb7z6[15] = Y70107; +assign Coxmz6[15] = Qa0107; +assign Krxmz6[15] = Lc0107; +assign Tim7z6[15] = De0107; +assign Hbh7v6 = (!Sg0107); +assign Obh7v6 = (!Wj0107); +assign Tim7z6[23] = An0107; +assign Itb7z6[23] = Pp0107; +assign Coxmz6[23] = Hs0107; +assign Krxmz6[23] = Cu0107; +assign G177z6 = (!Uv0107); +assign Q077z6 = (!Yy0107); +assign Tim7z6[22] = C21107; +assign Itb7z6[22] = R41107; +assign Coxmz6[22] = J71107; +assign Krxmz6[22] = E91107; +assign A077z6 = (!Wa1107); +assign Kz67z6 = (!Ae1107); +assign Tim7z6[21] = Eh1107; +assign Itb7z6[21] = Tj1107; +assign Coxmz6[21] = Lm1107; +assign Krxmz6[21] = Go1107; +assign Uy67z6 = (!Yp1107); +assign Ey67z6 = (!Ct1107); +assign Zec7z6[5] = Gw1107; +assign I9e7z6[1] = Ez1107; +assign I9e7z6[2] = L12107; +assign Byc7z6[5] = S32107; +assign Zec7z6[21] = V62107; +assign Byc7z6[21] = U92107; +assign Tim7z6[20] = Yc2107; +assign Itb7z6[20] = Nf2107; +assign Coxmz6[20] = Fi2107; +assign Krxmz6[20] = Ak2107; +assign Ox67z6 = (!Sl2107); +assign Yw67z6 = (!Wo2107); +assign Zec7z6[4] = As2107; +assign Vjc7z6[1] = Yu2107; +assign Vjc7z6[2] = Xx2107; +assign Vjc7z6[3] = W03107; +assign Vjc7z6[4] = V33107; +assign Vjc7z6[5] = U63107; +assign Vjc7z6[6] = T93107; +assign Vjc7z6[31] = Sc3107; +assign Usbdt6 = Rf3107; +assign M0edt6 = Sh3107; +assign Ic77z6 = (!Sj3107); +assign I9e7z6[0] = Yl3107; +assign Sb77z6 = (!Fo3107); +assign Byc7z6[4] = Oq3107; +assign Zec7z6[20] = Rt3107; +assign V1c7z6[24] = Qw3107; +assign V1c7z6[16] = Wy3107; +assign V1c7z6[9] = C14107; +assign V1c7z6[25] = H34107; +assign V1c7z6[17] = N54107; +assign V1c7z6[10] = T74107; +assign V1c7z6[26] = Z94107; +assign V1c7z6[18] = Fc4107; +assign V1c7z6[11] = Le4107; +assign V1c7z6[19] = Rg4107; +assign V1c7z6[21] = Xi4107; +assign V1c7z6[13] = Dl4107; +assign V1c7z6[22] = Jn4107; +assign V1c7z6[14] = Pp4107; +assign V1c7z6[23] = Vr4107; +assign Ecc7z6[13] = Bu4107; +assign P4c7z6[2] = Ax4107; +assign E8h7z6[2] = Xz4107; +assign Pbadt6 = U25107; +assign Xnh7z6[2] = L55107; +assign Ozbdt6 = I85107; +assign E1uet6 = Ka5107; +assign Ecc7z6[3] = Yc5107; +assign Ecc7z6[6] = Wf5107; +assign Bh2et6 = Ui5107; +assign Ihs7z6[2] = Kl5107; +assign Ihs7z6[3] = En5107; +assign Cch7v6 = (!Yo5107); +assign Ihs7z6[0] = Oq5107; +assign Tn27v6 = Is5107; +assign Zfs7z6[8] = Yt5107; +assign C397z6 = (!Ov5107); +assign Zas7z6[0] = Bx5107; +assign Zfs7z6[11] = Ry5107; +assign Zfs7z6[10] = I06107; +assign Zfs7z6[9] = Z16107; +assign Zfs7z6[7] = P36107; +assign Mm27v6 = F56107; +assign Ap27v6 = V66107; +assign Hq27v6 = L86107; +assign Zas7z6[1] = Ba6107; +assign Z4p7z6[1] = Rb6107; +assign Z4p7z6[2] = Gd6107; +assign Z4p7z6[3] = Ve6107; +assign Z4p7z6[4] = Kg6107; +assign Z4p7z6[5] = Yh6107; +assign W2adt6 = Lj6107; +assign Ow2et6 = Fl6107; +assign Wkb7z6[2] = Zn6107; +assign Gd77z6 = (!Br6107); +assign Ecc7z6[9] = Du6107; +assign Whxdt6 = Bx6107; +assign Ecc7z6[10] = Vz6107; +assign Ecc7z6[11] = U27107; +assign U6i7z6[1] = T57107; +assign U6i7z6[0] = V87107; +assign Ecc7z6[14] = Xb7107; +assign Ibe7z6[4] = We7107; +assign Ibe7z6[1] = Dh7107; +assign Ibe7z6[0] = Kj7107; +assign M3e7z6[1] = Rl7107; +assign V1c7z6[12] = Yn7107; +assign V1c7z6[20] = Eq7107; +assign I2edt6 = Ks7107; +assign M5e7z6[0] = Lu7107; +assign Q1h7z6[0] = Qw7107; +assign Q1h7z6[1] = Qz7107; +assign Q1h7z6[2] = Q28107; +assign Q1h7z6[3] = Q58107; +assign Q1h7z6[4] = Q88107; +assign Q1h7z6[5] = Gttf07; +assign Ecc7z6[5] = Gwtf07; +assign Q9xdt6 = Eztf07; +assign P58et6 = G2uf07; +assign Lvg7z6[0] = G5uf07; +assign Lvg7z6[1] = J8uf07; +assign Lvg7z6[2] = Mbuf07; +assign Z8c7z6[0] = Peuf07; +assign Ntg7z6[0] = Ahuf07; +assign O5h7z6[0] = Xjuf07; +assign Z8c7z6[3] = Umuf07; +assign Ntg7z6[3] = Fpuf07; +assign O5h7z6[3] = Csuf07; +assign Z8c7z6[1] = Zuuf07; +assign Ntg7z6[1] = Kxuf07; +assign O5h7z6[1] = H0vf07; +assign Pxg7z6[3] = E3vf07; +assign M3e7z6[0] = B6vf07; +assign Byc7z6[20] = I8vf07; +assign Tim7z6[19] = Mbvf07; +assign Itb7z6[19] = Bevf07; +assign Coxmz6[19] = Tgvf07; +assign Krxmz6[19] = Oivf07; +assign Iw67z6 = (!Gkvf07); +assign Sv67z6 = (!Knvf07); +assign Tim7z6[18] = Oqvf07; +assign Itb7z6[18] = Dtvf07; +assign Coxmz6[18] = Vvvf07; +assign Krxmz6[18] = Qxvf07; +assign Cv67z6 = (!Izvf07); +assign Mu67z6 = (!M2wf07); +assign Tim7z6[16] = Q5wf07; +assign Itb7z6[16] = F8wf07; +assign Coxmz6[16] = Xawf07; +assign Krxmz6[16] = Scwf07; +assign Byc7z6[16] = Kewf07; +assign W977z6 = (!Ohwf07); +assign Neh7v6 = (!Skwf07); +assign K9h7v6 = (!Wnwf07); +assign Xjh7v6 = (!Lqwf07); +assign Tfh7z6[1] = Ltwf07; +assign Tfh7z6[0] = Jwwf07; +assign Ez2et6 = Hzwf07; +assign R3h7z6[0] = D2xf07; +assign Zdxdt6 = D5xf07; +assign S7xdt6 = A8xf07; +assign R3h7z6[1] = Uaxf07; +assign Gg7et6 = Udxf07; +assign I0c7z6[1] = Ngxf07; +assign Mrbdt6 = Wixf07; +assign Vt2et6 = Xkxf07; +assign Lwfdt6 = Unxf07; +assign V1c7z6[27] = Bqxf07; +assign V1c7z6[28] = Hsxf07; +assign V1c7z6[29] = Nuxf07; +assign V1c7z6[30] = Twxf07; +assign V1c7z6[31] = Zyxf07; +assign V1c7z6[1] = F1yf07; +assign V1c7z6[7] = K3yf07; +assign V1c7z6[6] = P5yf07; +assign Byc7z6[6] = U7yf07; +assign J5n7z6[0] = Xayf07; +assign X9yet6 = Ndyf07; +assign Icyet6 = Dgyf07; +assign T2zet6 = Tiyf07; +assign S0zet6 = Jlyf07; +assign Ryyet6 = Znyf07; +assign Hjn7z6[5] = Pqyf07; +assign Teyet6 = Ftyf07; +assign L9d7z6[4] = Tvyf07; +assign L9d7z6[0] = Xyyf07; +assign Ieadt6 = B2zf07; +assign L9d7z6[2] = E5zf07; +assign Tlb7z6[0] = I8zf07; +assign Wkb7z6[0] = Nazf07; +assign Jqj7z6[2] = Sczf07; +assign Qg77z6 = Tfzf07; +assign Ig77z6 = Thzf07; +assign I6oet6 = Vjzf07; +assign Ja1ft6 = Lmzf07; +assign Orget6 = Fozf07; +assign Euget6 = Zqzf07; +assign C1o7z6[0] = Ptzf07; +assign D02ft6 = Owzf07; +assign Pjb7z6[12] = Byzf07; +assign L877v6 = Yzzf07; +assign Xfymz6[11] = M10g07; +assign Xfymz6[10] = C30g07; +assign Xfymz6[9] = S40g07; +assign Xfymz6[8] = H60g07; +assign Xfymz6[7] = W70g07; +assign Xfymz6[6] = L90g07; +assign Xfymz6[5] = Ab0g07; +assign Xfymz6[4] = Pc0g07; +assign Xfymz6[3] = Ee0g07; +assign Ti2nz6[4] = Tf0g07; +assign Ti2nz6[3] = Zg0g07; +assign Ti2nz6[2] = Fi0g07; +assign Ti2nz6[1] = Lj0g07; +assign J02nz6[3] = Rk0g07; +assign J02nz6[4] = Om0g07; +assign J02nz6[5] = Lo0g07; +assign J02nz6[6] = Iq0g07; +assign J02nz6[7] = Fs0g07; +assign J02nz6[8] = Cu0g07; +assign J02nz6[9] = Zv0g07; +assign J02nz6[10] = Wx0g07; +assign J02nz6[11] = Uz0g07; +assign Coxmz6[12] = S11g07; +assign Krxmz6[12] = N31g07; +assign Tfxmz6[0] = F51g07; +assign Myxmz6[0] = G71g07; +assign Myxmz6[1] = V81g07; +assign Myxmz6[2] = Ka1g07; +assign Myxmz6[3] = Zb1g07; +assign Myxmz6[4] = Od1g07; +assign Uj57v6 = Df1g07; +assign Ikxmz6[1] = Pg1g07; +assign Ikxmz6[2] = Qi1g07; +assign Ovxmz6[1] = Rk1g07; +assign Tim7z6[1] = Mm1g07; +assign Ot67z6 = (!Ap1g07); +assign Ys67z6 = (!Ds1g07); +assign SWDO = Gv1g07; +assign Uz47v6 = Uw1g07; +assign CDBGPWRUPREQ = Iy1g07; +assign Omxmz6[29] = Xz1g07; +assign Qwget6 = L12g07; +assign P1het6 = C42g07; +assign V5k7z6[6] = T62g07; +assign V5k7z6[7] = M92g07; +assign V5k7z6[8] = Fc2g07; +assign V5k7z6[9] = Ye2g07; +assign V5k7z6[10] = Rh2g07; +assign V5k7z6[11] = Lk2g07; +assign V5k7z6[12] = Fn2g07; +assign V5k7z6[13] = Zp2g07; +assign V5k7z6[14] = Ts2g07; +assign V5k7z6[15] = Nv2g07; +assign V5k7z6[16] = Hy2g07; +assign Ui77z6 = (!B13g07); +assign V5k7z6[18] = V33g07; +assign V5k7z6[19] = P63g07; +assign Cj77z6 = (!J93g07); +assign V5k7z6[21] = Dc3g07; +assign V5k7z6[22] = Xe3g07; +assign Kj77z6 = (!Rh3g07); +assign V5k7z6[24] = Lk3g07; +assign V5k7z6[25] = Fn3g07; +assign U297z6 = (!Zp3g07); +assign V5k7z6[27] = Ts3g07; +assign V5k7z6[28] = Nv3g07; +assign V5k7z6[29] = Hy3g07; +assign V5k7z6[30] = B14g07; +assign V5k7z6[5] = V34g07; +assign Gw2ft6 = O64g07; +assign D2fet6 = S84g07; +assign Mah7v6 = (!Ra4g07); +assign Ibe7z6[3] = Tc4g07; +assign Dte7z6[3] = Af4g07; +assign Dte7z6[16] = Yh4g07; +assign Dte7z6[4] = Xk4g07; +assign Dte7z6[5] = Vn4g07; +assign Dte7z6[6] = Tq4g07; +assign Dte7z6[9] = Rt4g07; +assign Dte7z6[10] = Pw4g07; +assign Dte7z6[11] = Oz4g07; +assign Dte7z6[12] = N25g07; +assign Dte7z6[18] = M55g07; +assign Dte7z6[20] = L85g07; +assign Dte7z6[2] = Kb5g07; +assign Dte7z6[0] = Ie5g07; +assign Ehgdt6 = Gh5g07; +assign Djgdt6 = Bk5g07; +assign Dte7z6[19] = Ym5g07; +assign Dte7z6[17] = Xp5g07; +assign Dte7z6[15] = Ws5g07; +assign Dte7z6[14] = Vv5g07; +assign Dte7z6[13] = Uy5g07; +assign Oac7z6[3] = T16g07; +assign Oac7z6[1] = W46g07; +assign Ubhdt6 = Z76g07; +assign Oac7z6[0] = Xa6g07; +assign Dte7z6[7] = Ae6g07; +assign Dte7z6[1] = Yg6g07; +assign Xwe7z6[0] = Wj6g07; +assign Xwe7z6[3] = Xm6g07; +assign Xwe7z6[1] = Yp6g07; +assign Ibe7z6[2] = Zs6g07; +assign Byc7z6[17] = Gv6g07; +assign Rjzet6 = Ky6g07; +assign Ay0ft6 = T07g07; +assign Kb77z6 = (!H37g07); +assign Zjb7z6[8] = P57g07; +assign Tlb7z6[3] = R87g07; +assign Tlb7z6[4] = Tb7g07; +assign Tlb7z6[1] = Ve7g07; +assign Bqi7z6[0] = Xh7g07; +assign Bqi7z6[1] = Ak7g07; +assign Bqi7z6[2] = Dm7g07; +assign Bqi7z6[3] = Go7g07; +assign Toi7z6[5] = Jq7g07; +assign Toi7z6[8] = Ss7g07; +assign Toi7z6[10] = Bv7g07; +assign Toi7z6[11] = Lx7g07; +assign Lxbet6 = Vz7g07; +assign Awbet6 = V18g07; +assign Toi7z6[9] = E48g07; +assign Toi7z6[7] = N68g07; +assign Toi7z6[6] = W88g07; +assign H1j7z6[23] = Fb8g07; +assign H1j7z6[22] = Kd8g07; +assign H1j7z6[21] = Pf8g07; +assign H1j7z6[20] = Uh8g07; +assign H1j7z6[19] = Zj8g07; +assign H1j7z6[18] = Em8g07; +assign H1j7z6[17] = Jo8g07; +assign H1j7z6[15] = Oq8g07; +assign H1j7z6[14] = Ts8g07; +assign H1j7z6[13] = Yu8g07; +assign H1j7z6[12] = Dx8g07; +assign H1j7z6[11] = Iz8g07; +assign H1j7z6[10] = N19g07; +assign H1j7z6[9] = S39g07; +assign H1j7z6[0] = W59g07; +assign H1j7z6[7] = A89g07; +assign H1j7z6[6] = Ea9g07; +assign H1j7z6[5] = Ic9g07; +assign H1j7z6[4] = Me9g07; +assign H1j7z6[3] = Qg9g07; +assign H1j7z6[1] = Ui9g07; +assign Toi7z6[4] = Yk9g07; +assign Toi7z6[3] = Hn9g07; +assign T7j7z6[0] = Qp9g07; +assign T7j7z6[2] = Sr9g07; +assign T7j7z6[1] = Ut9g07; +assign Z8j7z6[0] = Wv9g07; +assign Z8j7z6[2] = Zx9g07; +assign Z8j7z6[1] = C0ag07; +assign Nbj7z6[0] = F2ag07; +assign Nbj7z6[2] = H4ag07; +assign Nbj7z6[1] = J6ag07; +assign Lgj7z6[96] = L8ag07; +assign Lgj7z6[97] = Paag07; +assign Lgj7z6[98] = Tcag07; +assign Lgj7z6[99] = Xeag07; +assign Lgj7z6[100] = Bhag07; +assign Lgj7z6[101] = Gjag07; +assign Lgj7z6[102] = Llag07; +assign Lgj7z6[103] = Qnag07; +assign Lgj7z6[105] = Vpag07; +assign Lgj7z6[106] = Asag07; +assign Lgj7z6[107] = Fuag07; +assign Lgj7z6[0] = Kwag07; +assign Lgj7z6[1] = Nyag07; +assign Lgj7z6[2] = Q0bg07; +assign Lgj7z6[3] = T2bg07; +assign Lgj7z6[4] = W4bg07; +assign Lgj7z6[5] = Z6bg07; +assign Lgj7z6[6] = C9bg07; +assign Lgj7z6[7] = Fbbg07; +assign Lgj7z6[9] = Idbg07; +assign Lgj7z6[10] = Lfbg07; +assign Lgj7z6[11] = Phbg07; +assign Lgj7z6[108] = Tjbg07; +assign Lgj7z6[109] = Ylbg07; +assign Lgj7z6[110] = Dobg07; +assign Lgj7z6[111] = Iqbg07; +assign Lgj7z6[112] = Nsbg07; +assign Lgj7z6[113] = Subg07; +assign Lgj7z6[114] = Xwbg07; +assign Lgj7z6[115] = Czbg07; +assign Lgj7z6[117] = H1cg07; +assign Lgj7z6[118] = M3cg07; +assign Lgj7z6[119] = R5cg07; +assign Lgj7z6[12] = W7cg07; +assign Lgj7z6[13] = Aacg07; +assign Lgj7z6[14] = Eccg07; +assign Lgj7z6[15] = Iecg07; +assign Lgj7z6[16] = Mgcg07; +assign Lgj7z6[17] = Qicg07; +assign Lgj7z6[18] = Ukcg07; +assign Lgj7z6[19] = Ymcg07; +assign Lgj7z6[21] = Cpcg07; +assign Lgj7z6[22] = Grcg07; +assign Lgj7z6[23] = Ktcg07; +assign Micet6 = Ovcg07; +assign Sjcet6 = Nxcg07; +assign Ohj7z6[32] = Mzcg07; +assign Ohj7z6[33] = P1dg07; +assign Ohj7z6[35] = S3dg07; +assign Ohj7z6[36] = V5dg07; +assign Ohj7z6[37] = Y7dg07; +assign Ohj7z6[38] = Badg07; +assign Ohj7z6[39] = Ecdg07; +assign Ohj7z6[41] = Hedg07; +assign Ohj7z6[42] = Kgdg07; +assign Ohj7z6[43] = Nidg07; +assign Ohj7z6[44] = Qkdg07; +assign Ohj7z6[45] = Tmdg07; +assign Ohj7z6[46] = Wodg07; +assign Ohj7z6[47] = Zqdg07; +assign Ohj7z6[56] = Ctdg07; +assign Ohj7z6[57] = Fvdg07; +assign Ohj7z6[58] = Ixdg07; +assign Ohj7z6[59] = Lzdg07; +assign Ohj7z6[60] = O1eg07; +assign Ohj7z6[61] = R3eg07; +assign Ohj7z6[62] = U5eg07; +assign Ohj7z6[63] = X7eg07; +assign Ohj7z6[49] = Aaeg07; +assign Ohj7z6[50] = Dceg07; +assign Ohj7z6[51] = Geeg07; +assign Ohj7z6[52] = Jgeg07; +assign Ohj7z6[53] = Mieg07; +assign Ohj7z6[54] = Pkeg07; +assign Hdcet6 = Smeg07; +assign Jqj7z6[7] = Qpeg07; +assign D5cet6 = Rseg07; +assign L2cet6 = Vueg07; +assign Lgj7z6[155] = Xweg07; +assign Lgj7z6[154] = Czeg07; +assign Lgj7z6[153] = H1fg07; +assign Lgj7z6[151] = M3fg07; +assign Lgj7z6[150] = R5fg07; +assign Lgj7z6[149] = W7fg07; +assign Lgj7z6[148] = Bafg07; +assign Lgj7z6[147] = Gcfg07; +assign Lgj7z6[146] = Lefg07; +assign Lgj7z6[145] = Qgfg07; +assign Lgj7z6[144] = Vifg07; +assign Lgj7z6[59] = Alfg07; +assign Lgj7z6[58] = Enfg07; +assign Lgj7z6[57] = Ipfg07; +assign Lgj7z6[55] = Mrfg07; +assign Lgj7z6[54] = Qtfg07; +assign Lgj7z6[53] = Uvfg07; +assign Lgj7z6[52] = Yxfg07; +assign Lgj7z6[51] = C0gg07; +assign Lgj7z6[50] = G2gg07; +assign Lgj7z6[49] = K4gg07; +assign Lgj7z6[48] = O6gg07; +assign A8cet6 = S8gg07; +assign E9cet6 = Pagg07; +assign Bxi7z6[1] = Qcgg07; +assign Mleet6 = Oegg07; +assign Ijeet6 = Tggg07; +assign Dheet6 = Bjgg07; +assign X6eet6 = Klgg07; +assign Kdadt6 = Ongg07; +assign Qij7z6[6] = Cqgg07; +assign Qij7z6[5] = Jsgg07; +assign Qij7z6[4] = Qugg07; +assign Qij7z6[3] = Xwgg07; +assign P4c7z6[3] = Ezgg07; +assign E8h7z6[3] = B2hg07; +assign Qij7z6[1] = Y4hg07; +assign Qij7z6[0] = F7hg07; +assign Gaj7z6[0] = M9hg07; +assign Gaj7z6[2] = Pbhg07; +assign Gaj7z6[1] = Sdhg07; +assign Bwi7z6[0] = Vfhg07; +assign Bwi7z6[1] = Rhhg07; +assign Bwi7z6[3] = Njhg07; +assign Bwi7z6[4] = Jlhg07; +assign Bwi7z6[5] = Fnhg07; +assign Bwi7z6[6] = Bphg07; +assign Bwi7z6[7] = Xqhg07; +assign Bwi7z6[9] = Tshg07; +assign Bwi7z6[10] = Puhg07; +assign Bwi7z6[11] = Mwhg07; +assign Bwi7z6[12] = Jyhg07; +assign Bwi7z6[13] = G0ig07; +assign Bwi7z6[14] = D2ig07; +assign Bwi7z6[15] = A4ig07; +assign Bwi7z6[17] = X5ig07; +assign Bwi7z6[18] = U7ig07; +assign Bwi7z6[19] = R9ig07; +assign Bwi7z6[20] = Obig07; +assign Bwi7z6[21] = Ldig07; +assign Bwi7z6[22] = Ifig07; +assign Bwi7z6[24] = Fhig07; +assign Bwi7z6[25] = Cjig07; +assign Bwi7z6[26] = Zkig07; +assign Bwi7z6[27] = Wmig07; +assign Bwi7z6[28] = Toig07; +assign Bwi7z6[29] = Qqig07; +assign Bwi7z6[30] = Nsig07; +assign Bwi7z6[31] = Kuig07; +assign Lgj7z6[180] = Hwig07; +assign Lgj7z6[181] = Myig07; +assign Lgj7z6[182] = R0jg07; +assign Lgj7z6[183] = W2jg07; +assign Lgj7z6[184] = B5jg07; +assign Lgj7z6[185] = G7jg07; +assign Lgj7z6[186] = L9jg07; +assign Lgj7z6[187] = Qbjg07; +assign Lgj7z6[189] = Vdjg07; +assign Lgj7z6[190] = Agjg07; +assign Lgj7z6[191] = Fijg07; +assign Lgj7z6[84] = Kkjg07; +assign Lgj7z6[85] = Omjg07; +assign Lgj7z6[86] = Sojg07; +assign Lgj7z6[87] = Wqjg07; +assign Lgj7z6[88] = Atjg07; +assign Lgj7z6[89] = Evjg07; +assign Lgj7z6[90] = Ixjg07; +assign Lgj7z6[91] = Mzjg07; +assign Lgj7z6[93] = Q1kg07; +assign Lgj7z6[94] = U3kg07; +assign Lgj7z6[95] = Y5kg07; +assign Byi7z6[1] = C8kg07; +assign Lgj7z6[132] = Cakg07; +assign Lgj7z6[133] = Hckg07; +assign Lgj7z6[134] = Mekg07; +assign Lgj7z6[135] = Rgkg07; +assign Lgj7z6[136] = Wikg07; +assign Lgj7z6[137] = Blkg07; +assign Lgj7z6[138] = Gnkg07; +assign Lgj7z6[139] = Lpkg07; +assign Lgj7z6[141] = Qrkg07; +assign Lgj7z6[142] = Vtkg07; +assign Lgj7z6[143] = Awkg07; +assign Lgj7z6[36] = Fykg07; +assign Lgj7z6[37] = J0lg07; +assign Lgj7z6[38] = N2lg07; +assign Lgj7z6[39] = R4lg07; +assign Lgj7z6[40] = V6lg07; +assign Lgj7z6[41] = Z8lg07; +assign Lgj7z6[42] = Dblg07; +assign Lgj7z6[43] = Hdlg07; +assign Lgj7z6[45] = Lflg07; +assign Lgj7z6[46] = Phlg07; +assign Lgj7z6[47] = Tjlg07; +assign HTMDHBURST[0] = Xllg07; +assign HTMDHREADY = Bolg07; +assign HTMDHRESP[1] = Qplg07; +assign HTMDHRESP[0] = Hrlg07; +assign Nmq7z6[6] = Yslg07; +assign Nmq7z6[4] = Zulg07; +assign Af4ft6 = Axlg07; +assign Ah4ft6 = Ezlg07; +assign M297z6 = (!I1mg07); +assign Nmq7z6[5] = H3mg07; +assign Nmq7z6[3] = I5mg07; +assign Aj4ft6 = J7mg07; +assign Bbp7z6[0] = F9mg07; +assign Bbp7z6[1] = Lbmg07; +assign Ncp7z6[0] = Rdmg07; +assign Ncp7z6[1] = Xfmg07; +assign L42ft6 = Dimg07; +assign HTMDHPROT[0] = Hkmg07; +assign Nlh7v6 = (!Hkmg07); +assign HTMDHADDR[0] = Ylmg07; +assign Pfh7v6 = (!Ylmg07); +assign HTMDHWRITE = Pnmg07; +assign Cjh7v6 = (!Pnmg07); +assign HTMDHPROT[1] = Epmg07; +assign HTMDHSIZE[1] = Vqmg07; +assign Wfh7v6 = (!Vqmg07); +assign HTMDHSIZE[0] = Msmg07; +assign Kgh7v6 = (!Msmg07); +assign HTMDHADDR[31] = Dumg07; +assign HTMDHADDR[30] = Vvmg07; +assign HTMDHADDR[29] = Nxmg07; +assign HTMDHADDR[28] = Fzmg07; +assign HTMDHADDR[27] = X0ng07; +assign HTMDHADDR[26] = P2ng07; +assign HTMDHADDR[25] = H4ng07; +assign HTMDHADDR[24] = Z5ng07; +assign HTMDHADDR[23] = R7ng07; +assign HTMDHADDR[22] = J9ng07; +assign HTMDHADDR[21] = Bbng07; +assign HTMDHADDR[20] = Tcng07; +assign HTMDHADDR[19] = Leng07; +assign HTMDHADDR[18] = Dgng07; +assign HTMDHADDR[17] = Vhng07; +assign HTMDHADDR[16] = Njng07; +assign HTMDHADDR[15] = Flng07; +assign HTMDHADDR[14] = Xmng07; +assign HTMDHADDR[13] = Pong07; +assign HTMDHADDR[12] = Hqng07; +assign HTMDHADDR[11] = Zrng07; +assign HTMDHADDR[10] = Rtng07; +assign HTMDHADDR[9] = Jvng07; +assign HTMDHADDR[8] = Axng07; +assign HTMDHADDR[7] = Ryng07; +assign HTMDHADDR[6] = I0og07; +assign HTMDHADDR[5] = Z1og07; +assign HTMDHADDR[4] = Q3og07; +assign HTMDHADDR[3] = H5og07; +assign HTMDHADDR[2] = Y6og07; +assign HTMDHADDR[1] = P8og07; +assign Rgh7v6 = (!P8og07); +assign Ea2ft6 = Gaog07; +assign Jexmz6[0] = Ncog07; +assign Jexmz6[1] = Eeog07; +assign Jexmz6[2] = Vfog07; +assign Jexmz6[3] = Mhog07; +assign Jexmz6[4] = Djog07; +assign Jexmz6[5] = Ukog07; +assign Jexmz6[6] = Lmog07; +assign Jexmz6[7] = Coog07; +assign Jexmz6[8] = Tpog07; +assign Jexmz6[9] = Krog07; +assign Jexmz6[10] = Btog07; +assign Jexmz6[11] = Tuog07; +assign Jexmz6[12] = Lwog07; +assign Jexmz6[13] = Dyog07; +assign Jexmz6[14] = Vzog07; +assign Jexmz6[15] = N1pg07; +assign Jexmz6[16] = F3pg07; +assign Jexmz6[17] = X4pg07; +assign Jexmz6[18] = P6pg07; +assign Jexmz6[19] = H8pg07; +assign Jexmz6[20] = Z9pg07; +assign Jexmz6[21] = Rbpg07; +assign Jexmz6[22] = Jdpg07; +assign Jexmz6[23] = Bfpg07; +assign Jexmz6[24] = Tgpg07; +assign Jexmz6[25] = Lipg07; +assign Jexmz6[26] = Dkpg07; +assign Jexmz6[27] = Vlpg07; +assign Jexmz6[29] = Nnpg07; +assign Jexmz6[30] = Fppg07; +assign Jexmz6[31] = Xqpg07; +assign X0eet6 = Pspg07; +assign W2eet6 = Supg07; +assign Yydet6 = Xwpg07; +assign Brdet6 = Azpg07; +assign Zsdet6 = C1qg07; +assign Zudet6 = G3qg07; +assign Ywdet6 = J5qg07; +assign Zodet6 = N7qg07; +assign Nybet6 = T9qg07; +assign Vzbet6 = Ubqg07; +assign Qti7z6[7] = Wdqg07; +assign Pnb7z6[15] = Yfqg07; +assign Qti7z6[9] = Biqg07; +assign Pnb7z6[10] = Dkqg07; +assign Pnb7z6[11] = Gmqg07; +assign Pnb7z6[12] = Joqg07; +assign Pnb7z6[13] = Mqqg07; +assign Pnb7z6[14] = Psqg07; +assign Pnb7z6[17] = Suqg07; +assign Pnb7z6[20] = Vwqg07; +assign Pnb7z6[21] = Yyqg07; +assign Pnb7z6[31] = B1rg07; +assign Pnb7z6[25] = E3rg07; +assign Pnb7z6[26] = H5rg07; +assign Pnb7z6[27] = K7rg07; +assign Pnb7z6[28] = N9rg07; +assign Pnb7z6[29] = Qbrg07; +assign Pnb7z6[30] = Tdrg07; +assign Tcj7z6[0] = Wfrg07; +assign Tcj7z6[2] = Yhrg07; +assign Tcj7z6[1] = Akrg07; +assign Ffj7z6[0] = Cmrg07; +assign Ffj7z6[2] = Eorg07; +assign Ffj7z6[1] = Gqrg07; +assign Zdj7z6[0] = Isrg07; +assign Zdj7z6[2] = Kurg07; +assign Zdj7z6[1] = Mwrg07; +assign Lgj7z6[168] = Oyrg07; +assign Lgj7z6[169] = T0sg07; +assign Lgj7z6[170] = Y2sg07; +assign Lgj7z6[171] = D5sg07; +assign Lgj7z6[172] = I7sg07; +assign Lgj7z6[173] = N9sg07; +assign Lgj7z6[174] = Sbsg07; +assign Lgj7z6[175] = Xdsg07; +assign Lgj7z6[177] = Cgsg07; +assign Lgj7z6[178] = Hisg07; +assign Lgj7z6[179] = Mksg07; +assign Lgj7z6[72] = Rmsg07; +assign Lgj7z6[73] = Vosg07; +assign Lgj7z6[74] = Zqsg07; +assign Lgj7z6[75] = Dtsg07; +assign Lgj7z6[76] = Hvsg07; +assign Lgj7z6[77] = Lxsg07; +assign Lgj7z6[78] = Pzsg07; +assign Lgj7z6[79] = T1tg07; +assign Lgj7z6[81] = X3tg07; +assign Lgj7z6[82] = B6tg07; +assign Lgj7z6[83] = F8tg07; +assign Doadt6 = Jatg07; +assign O7adt6 = Kctg07; +assign Bzi7z6[7] = Letg07; +assign Bzi7z6[9] = Kgtg07; +assign Bzi7z6[10] = Jitg07; +assign Bzi7z6[11] = Iktg07; +assign Bzi7z6[12] = Hmtg07; +assign Bzi7z6[15] = Hotg07; +assign Bzi7z6[17] = Hqtg07; +assign Bzi7z6[18] = Hstg07; +assign Bzi7z6[19] = Hutg07; +assign Bzi7z6[25] = Hwtg07; +assign Bzi7z6[3] = Hytg07; +assign Bzi7z6[4] = G0ug07; +assign Bzi7z6[0] = F2ug07; +assign Lgj7z6[120] = E4ug07; +assign Lgj7z6[121] = J6ug07; +assign Lgj7z6[122] = O8ug07; +assign Lgj7z6[123] = Taug07; +assign Lgj7z6[124] = Ycug07; +assign Lgj7z6[125] = Dfug07; +assign Lgj7z6[126] = Ihug07; +assign Lgj7z6[127] = Njug07; +assign Lgj7z6[129] = Slug07; +assign Lgj7z6[130] = Xnug07; +assign Lgj7z6[131] = Cqug07; +assign Lgj7z6[35] = Hsug07; +assign Lgj7z6[34] = Luug07; +assign Lgj7z6[33] = Pwug07; +assign Lgj7z6[31] = Tyug07; +assign Lgj7z6[30] = X0vg07; +assign Lgj7z6[29] = B3vg07; +assign Lgj7z6[28] = F5vg07; +assign Lgj7z6[27] = J7vg07; +assign Lgj7z6[26] = N9vg07; +assign Lgj7z6[25] = Rbvg07; +assign Lgj7z6[24] = Vdvg07; +assign Dri7z6[17] = Zfvg07; +assign Dri7z6[18] = Aivg07; +assign Dri7z6[19] = Bkvg07; +assign Dri7z6[20] = Cmvg07; +assign Dri7z6[21] = Dovg07; +assign Dri7z6[22] = Eqvg07; +assign Dri7z6[24] = Fsvg07; +assign Dri7z6[25] = Guvg07; +assign Dri7z6[26] = Hwvg07; +assign Dri7z6[27] = Iyvg07; +assign Dri7z6[28] = J0wg07; +assign Dri7z6[29] = K2wg07; +assign Dri7z6[30] = L4wg07; +assign Dri7z6[31] = M6wg07; +assign Dri7z6[9] = N8wg07; +assign Dri7z6[10] = Nawg07; +assign Dri7z6[11] = Ocwg07; +assign Dri7z6[12] = Pewg07; +assign Dri7z6[13] = Qgwg07; +assign Dri7z6[14] = Riwg07; +assign Dri7z6[15] = Skwg07; +assign Dri7z6[7] = Tmwg07; +assign Dri7z6[6] = Towg07; +assign Dri7z6[5] = Tqwg07; +assign Dri7z6[4] = Tswg07; +assign Dri7z6[3] = Tuwg07; +assign Dri7z6[1] = Twwg07; +assign Dri7z6[0] = Tywg07; +assign Dtadt6 = T0xg07; +assign Ku7et6 = U2xg07; +assign R9h7v6 = (!S5xg07); +assign Lgj7z6[156] = Q8xg07; +assign Lgj7z6[157] = Vaxg07; +assign Lgj7z6[158] = Adxg07; +assign Lgj7z6[159] = Ffxg07; +assign Lgj7z6[160] = Khxg07; +assign Lgj7z6[161] = Pjxg07; +assign Lgj7z6[162] = Ulxg07; +assign Lgj7z6[163] = Znxg07; +assign Lgj7z6[165] = Eqxg07; +assign Lgj7z6[166] = Jsxg07; +assign Lgj7z6[167] = Ouxg07; +assign Lgj7z6[71] = Twxg07; +assign Lgj7z6[70] = Xyxg07; +assign Lgj7z6[69] = B1yg07; +assign Lgj7z6[67] = F3yg07; +assign Lgj7z6[66] = J5yg07; +assign Lgj7z6[65] = N7yg07; +assign Lgj7z6[64] = R9yg07; +assign Lgj7z6[63] = Vbyg07; +assign Lgj7z6[62] = Zdyg07; +assign Lgj7z6[61] = Dgyg07; +assign Lgj7z6[60] = Hiyg07; +assign Ohj7z6[0] = Lkyg07; +assign Ohj7z6[1] = Nmyg07; +assign Ohj7z6[3] = Poyg07; +assign Ohj7z6[4] = Rqyg07; +assign Ohj7z6[5] = Tsyg07; +assign Ohj7z6[6] = Vuyg07; +assign Ohj7z6[7] = Xwyg07; +assign Ohj7z6[9] = Zyyg07; +assign Ohj7z6[10] = B1zg07; +assign Ohj7z6[11] = E3zg07; +assign Ohj7z6[12] = H5zg07; +assign Ohj7z6[13] = K7zg07; +assign Ohj7z6[14] = N9zg07; +assign Ohj7z6[15] = Qbzg07; +assign Ohj7z6[17] = Tdzg07; +assign Ohj7z6[18] = Wfzg07; +assign Ohj7z6[19] = Zhzg07; +assign Ohj7z6[20] = Ckzg07; +assign Ohj7z6[21] = Fmzg07; +assign Ohj7z6[22] = Iozg07; +assign Ohj7z6[24] = Lqzg07; +assign Ohj7z6[25] = Oszg07; +assign Ohj7z6[26] = Ruzg07; +assign Ohj7z6[27] = Uwzg07; +assign Ohj7z6[28] = Xyzg07; +assign Ohj7z6[29] = A10h07; +assign Ohj7z6[30] = D30h07; +assign Ohj7z6[31] = G50h07; +assign Wui7z6[30] = J70h07; +assign Wui7z6[28] = L90h07; +assign Wui7z6[31] = Nb0h07; +assign Wui7z6[20] = Pd0h07; +assign Wui7z6[19] = Rf0h07; +assign Wui7z6[18] = Th0h07; +assign Wui7z6[17] = Vj0h07; +assign Wui7z6[14] = Xl0h07; +assign Wui7z6[12] = Zn0h07; +assign Wui7z6[11] = Bq0h07; +assign Wui7z6[10] = Ds0h07; +assign Wui7z6[15] = Fu0h07; +assign Wui7z6[0] = Hw0h07; +assign Wui7z6[6] = Iy0h07; +assign Wui7z6[5] = J01h07; +assign Wui7z6[4] = K21h07; +assign Wui7z6[3] = L41h07; +assign Wui7z6[1] = M61h07; +assign Wui7z6[7] = N81h07; +assign Dtj7z6[2] = Oa1h07; +assign Dtj7z6[5] = Hd1h07; +assign Rmget6 = Ag1h07; +assign Pvj7z6[0] = Ni1h07; +assign Pvj7z6[3] = Ml1h07; +assign Hkget6 = Lo1h07; +assign Dtj7z6[4] = Zq1h07; +assign Dtj7z6[3] = St1h07; +assign Pvj7z6[2] = Lw1h07; +assign Pvj7z6[1] = Kz1h07; +assign Phget6 = J22h07; +assign Weget6 = F52h07; +assign Z4p7z6[0] = C82h07; +assign Hq1ft6 = R92h07; +assign I1p7z6[1] = Fb2h07; +assign A0p7z6[18] = Xc2h07; +assign A0p7z6[15] = Ne2h07; +assign A0p7z6[10] = Dg2h07; +assign A0p7z6[9] = Th2h07; +assign A0p7z6[8] = Ij2h07; +assign A0p7z6[5] = Xk2h07; +assign A0p7z6[4] = Mm2h07; +assign A0p7z6[1] = Bo2h07; +assign A0p7z6[7] = Qp2h07; +assign A0p7z6[11] = Fr2h07; +assign A0p7z6[12] = Vs2h07; +assign A0p7z6[13] = Lu2h07; +assign A0p7z6[19] = Bw2h07; +assign A0p7z6[23] = Rx2h07; +assign A0p7z6[24] = Hz2h07; +assign A0p7z6[25] = X03h07; +assign A0p7z6[26] = N23h07; +assign I1p7z6[0] = D43h07; +assign Iv1ft6 = V53h07; +assign Tx1ft6 = J73h07; +assign W3p7z6[20] = B93h07; +assign W3p7z6[17] = Ra3h07; +assign W3p7z6[12] = Hc3h07; +assign W3p7z6[11] = Xd3h07; +assign W3p7z6[10] = Mf3h07; +assign W3p7z6[7] = Bh3h07; +assign W3p7z6[6] = Qi3h07; +assign W3p7z6[3] = Fk3h07; +assign W3p7z6[9] = Ul3h07; +assign W3p7z6[13] = Jn3h07; +assign W3p7z6[14] = Zo3h07; +assign W3p7z6[15] = Pq3h07; +assign W3p7z6[21] = Fs3h07; +assign W3p7z6[25] = Vt3h07; +assign W3p7z6[26] = Lv3h07; +assign W3p7z6[27] = Bx3h07; +assign W3p7z6[28] = Ry3h07; +assign Nw1ft6 = H04h07; +assign Zy1ft6 = Z14h07; +assign Tk1ft6 = M34h07; +assign Nqo7z6[18] = A54h07; +assign Nqo7z6[15] = Q64h07; +assign Nqo7z6[10] = G84h07; +assign Nqo7z6[9] = W94h07; +assign Nqo7z6[8] = Lb4h07; +assign Nqo7z6[5] = Ad4h07; +assign Nqo7z6[4] = Pe4h07; +assign Nqo7z6[1] = Eg4h07; +assign Nqo7z6[7] = Th4h07; +assign Nqo7z6[11] = Ij4h07; +assign Nqo7z6[12] = Yk4h07; +assign Nqo7z6[13] = Om4h07; +assign Nqo7z6[19] = Eo4h07; +assign Nqo7z6[23] = Up4h07; +assign Nqo7z6[24] = Kr4h07; +assign Nqo7z6[25] = At4h07; +assign Nqo7z6[26] = Qu4h07; +assign Jj1ft6 = Gw4h07; +assign Fpo7z6[18] = Ux4h07; +assign Fpo7z6[15] = Kz4h07; +assign Fpo7z6[9] = A15h07; +assign Fpo7z6[8] = P25h07; +assign Fpo7z6[5] = E45h07; +assign Fpo7z6[4] = T55h07; +assign Fpo7z6[1] = I75h07; +assign Fpo7z6[7] = X85h07; +assign Fpo7z6[11] = Ma5h07; +assign Fpo7z6[12] = Cc5h07; +assign Fpo7z6[13] = Sd5h07; +assign Fpo7z6[23] = If5h07; +assign Fpo7z6[24] = Yg5h07; +assign Fpo7z6[25] = Oi5h07; +assign Fpo7z6[26] = Ek5h07; +assign Rr1ft6 = Ul5h07; +assign Cu1ft6 = In5h07; +assign T2p7z6[20] = Ap5h07; +assign T2p7z6[17] = Qq5h07; +assign T2p7z6[12] = Gs5h07; +assign T2p7z6[11] = Wt5h07; +assign T2p7z6[10] = Lv5h07; +assign T2p7z6[7] = Ax5h07; +assign T2p7z6[6] = Py5h07; +assign T2p7z6[3] = E06h07; +assign T2p7z6[9] = T16h07; +assign T2p7z6[13] = I36h07; +assign T2p7z6[14] = Y46h07; +assign T2p7z6[15] = O66h07; +assign T2p7z6[21] = E86h07; +assign T2p7z6[25] = U96h07; +assign T2p7z6[26] = Kb6h07; +assign T2p7z6[27] = Ad6h07; +assign T2p7z6[28] = Qe6h07; +assign Ws1ft6 = Gg6h07; +assign Nn1ft6 = Yh6h07; +assign Wvo7z6[1] = Mj6h07; +assign Ouo7z6[18] = El6h07; +assign Ouo7z6[15] = Um6h07; +assign Ouo7z6[10] = Ko6h07; +assign Ouo7z6[9] = Aq6h07; +assign Ouo7z6[8] = Pr6h07; +assign Ouo7z6[5] = Et6h07; +assign Ouo7z6[4] = Tu6h07; +assign Ouo7z6[1] = Iw6h07; +assign Ouo7z6[7] = Xx6h07; +assign Ouo7z6[11] = Mz6h07; +assign Ouo7z6[12] = C17h07; +assign Ouo7z6[13] = S27h07; +assign Ouo7z6[19] = I47h07; +assign Ouo7z6[23] = Y57h07; +assign Ouo7z6[24] = O77h07; +assign Ouo7z6[25] = E97h07; +assign Ouo7z6[26] = Ua7h07; +assign Wvo7z6[0] = Kc7h07; +assign Dm1ft6 = Ce7h07; +assign Vro7z6[18] = Qf7h07; +assign Vro7z6[15] = Gh7h07; +assign Vro7z6[10] = Wi7h07; +assign Vro7z6[9] = Mk7h07; +assign Vro7z6[8] = Bm7h07; +assign Vro7z6[5] = Qn7h07; +assign Vro7z6[4] = Fp7h07; +assign Vro7z6[1] = Uq7h07; +assign Vro7z6[7] = Js7h07; +assign Vro7z6[11] = Yt7h07; +assign Vro7z6[12] = Ov7h07; +assign Vro7z6[13] = Ex7h07; +assign Vro7z6[19] = Uy7h07; +assign Vro7z6[23] = K08h07; +assign Vro7z6[24] = A28h07; +assign Vro7z6[25] = Q38h07; +assign Vro7z6[26] = G58h07; +assign Dto7z6[0] = W68h07; +assign Xo1ft6 = O88h07; +assign Pyo7z6[1] = Ca8h07; +assign Hxo7z6[18] = Ub8h07; +assign Hxo7z6[15] = Kd8h07; +assign Hxo7z6[10] = Af8h07; +assign Hxo7z6[9] = Qg8h07; +assign Hxo7z6[8] = Fi8h07; +assign Hxo7z6[5] = Uj8h07; +assign Hxo7z6[4] = Jl8h07; +assign Hxo7z6[1] = Ym8h07; +assign Hxo7z6[7] = No8h07; +assign Hxo7z6[11] = Cq8h07; +assign Hxo7z6[12] = Sr8h07; +assign Hxo7z6[13] = It8h07; +assign Hxo7z6[19] = Yu8h07; +assign Hxo7z6[23] = Ow8h07; +assign Hxo7z6[24] = Ey8h07; +assign Hxo7z6[25] = Uz8h07; +assign Hxo7z6[26] = K19h07; +assign Pyo7z6[0] = A39h07; +assign Goset6 = S49h07; +assign Juset6 = J69h07; +assign O4tet6 = A89h07; +assign P6tet6 = Q99h07; +assign Q8tet6 = Gb9h07; +assign Tetet6 = Wc9h07; +assign Ugtet6 = Me9h07; +assign Ratet6 = Cg9h07; +assign N2tet6 = Sh9h07; +assign M0tet6 = Ij9h07; +assign Lyset6 = Yk9h07; +assign Fmset6 = Pm9h07; +assign Beset6 = Go9h07; +assign Acset6 = Xp9h07; +assign Z9set6 = Or9h07; +assign Sr97z6 = (!Ft9h07); +assign Y7set6 = Ft9h07; +assign E297z6 = (!Wu9h07); +assign Rip7z6[0] = Xw9h07; +assign Rip7z6[3] = Zy9h07; +assign Rip7z6[1] = B1ah07; +assign Pdq7z6[3] = D3ah07; +assign Pdq7z6[1] = J5ah07; +assign G0q7z6[0] = P7ah07; +assign G0q7z6[3] = R9ah07; +assign G0q7z6[1] = Tbah07; +assign Cjq7z6[3] = Vdah07; +assign W22ft6 = Bgah07; +assign I7p7z6[3] = Hiah07; +assign I7p7z6[1] = Jkah07; +assign I7p7z6[0] = Lmah07; +assign M12ft6 = Noah07; +assign E6p7z6[0] = Oqah07; +assign E6p7z6[31] = Msah07; +assign E6p7z6[30] = Luah07; +assign E6p7z6[29] = Kwah07; +assign E6p7z6[28] = Jyah07; +assign E6p7z6[27] = I0bh07; +assign E6p7z6[26] = H2bh07; +assign E6p7z6[25] = G4bh07; +assign E6p7z6[24] = F6bh07; +assign E6p7z6[23] = E8bh07; +assign E6p7z6[22] = Dabh07; +assign E6p7z6[21] = Ccbh07; +assign E6p7z6[20] = Bebh07; +assign E6p7z6[19] = Agbh07; +assign E6p7z6[18] = Zhbh07; +assign E6p7z6[17] = Yjbh07; +assign E6p7z6[16] = Xlbh07; +assign E6p7z6[15] = Wnbh07; +assign E6p7z6[14] = Vpbh07; +assign E6p7z6[13] = Urbh07; +assign E6p7z6[12] = Ttbh07; +assign E6p7z6[11] = Svbh07; +assign E6p7z6[10] = Rxbh07; +assign E6p7z6[9] = Qzbh07; +assign E6p7z6[8] = O1ch07; +assign E6p7z6[7] = M3ch07; +assign E6p7z6[6] = K5ch07; +assign E6p7z6[5] = I7ch07; +assign E6p7z6[4] = G9ch07; +assign E6p7z6[3] = Ebch07; +assign E6p7z6[1] = Cdch07; +assign Bqp7z6[0] = Afch07; +assign Bqp7z6[31] = Chch07; +assign Bqp7z6[30] = Fjch07; +assign Bqp7z6[29] = Ilch07; +assign Bqp7z6[28] = Lnch07; +assign Bqp7z6[27] = Opch07; +assign Bqp7z6[26] = Rrch07; +assign Bqp7z6[25] = Utch07; +assign Bqp7z6[24] = Xvch07; +assign Bqp7z6[23] = Aych07; +assign Bqp7z6[22] = D0dh07; +assign Bqp7z6[21] = G2dh07; +assign Bqp7z6[20] = J4dh07; +assign Bqp7z6[19] = M6dh07; +assign Bqp7z6[18] = P8dh07; +assign Bqp7z6[17] = Sadh07; +assign Bqp7z6[16] = Vcdh07; +assign Bqp7z6[15] = Yedh07; +assign Bqp7z6[14] = Bhdh07; +assign Bqp7z6[13] = Ejdh07; +assign Bqp7z6[12] = Hldh07; +assign Bqp7z6[11] = Kndh07; +assign Bqp7z6[10] = Npdh07; +assign Bqp7z6[9] = Qrdh07; +assign Bqp7z6[8] = Stdh07; +assign Bqp7z6[7] = Uvdh07; +assign Bqp7z6[6] = Wxdh07; +assign Bqp7z6[5] = Yzdh07; +assign Bqp7z6[4] = A2eh07; +assign Bqp7z6[3] = C4eh07; +assign Bqp7z6[1] = E6eh07; +assign Qb4ft6 = G8eh07; +assign Xkq7z6[22] = Daeh07; +assign Xkq7z6[21] = Bceh07; +assign Xkq7z6[20] = Zdeh07; +assign Xkq7z6[19] = Xfeh07; +assign Xkq7z6[18] = Vheh07; +assign Xkq7z6[17] = Tjeh07; +assign Xkq7z6[16] = Rleh07; +assign Xkq7z6[15] = Pneh07; +assign Xkq7z6[14] = Npeh07; +assign Xkq7z6[13] = Lreh07; +assign Xkq7z6[12] = Jteh07; +assign W5q7z6[1] = Hveh07; +assign W5q7z6[0] = Fxeh07; +assign Id4ft6 = Dzeh07; +assign X9q7z6[3] = A1fh07; +assign X9q7z6[2] = X2fh07; +assign X9q7z6[1] = U4fh07; +assign X9q7z6[0] = R6fh07; +assign Y7q7z6[3] = O8fh07; +assign Y7q7z6[2] = Lafh07; +assign Y7q7z6[0] = Icfh07; +assign Dm2ft6 = Fefh07; +assign Hmp7z6[3] = Kgfh07; +assign Hmp7z6[1] = Qifh07; +assign Hmp7z6[0] = Wkfh07; +assign Q8p7z6[0] = Cnfh07; +assign Q8p7z6[3] = Apfh07; +assign Q8p7z6[1] = Yqfh07; +assign Gop7z6[0] = Wsfh07; +assign Gop7z6[3] = Yufh07; +assign Gop7z6[1] = Axfh07; +assign Ei2ft6 = Czfh07; +assign Sgp7z6[3] = H1gh07; +assign Sgp7z6[1] = N3gh07; +assign Sgp7z6[0] = T5gh07; +assign B2q7z6[0] = Z7gh07; +assign B2q7z6[31] = Bagh07; +assign B2q7z6[30] = Ecgh07; +assign B2q7z6[29] = Hegh07; +assign B2q7z6[28] = Kggh07; +assign B2q7z6[27] = Nigh07; +assign B2q7z6[26] = Qkgh07; +assign B2q7z6[25] = Tmgh07; +assign B2q7z6[24] = Wogh07; +assign B2q7z6[23] = Zqgh07; +assign B2q7z6[22] = Ctgh07; +assign B2q7z6[21] = Fvgh07; +assign B2q7z6[20] = Ixgh07; +assign B2q7z6[19] = Lzgh07; +assign B2q7z6[18] = O1hh07; +assign B2q7z6[17] = R3hh07; +assign B2q7z6[16] = U5hh07; +assign B2q7z6[15] = X7hh07; +assign B2q7z6[14] = Aahh07; +assign B2q7z6[13] = Dchh07; +assign B2q7z6[12] = Gehh07; +assign B2q7z6[11] = Jghh07; +assign B2q7z6[10] = Mihh07; +assign B2q7z6[9] = Pkhh07; +assign B2q7z6[8] = Rmhh07; +assign B2q7z6[7] = Tohh07; +assign B2q7z6[6] = Vqhh07; +assign B2q7z6[5] = Xshh07; +assign B2q7z6[4] = Zuhh07; +assign B2q7z6[3] = Bxhh07; +assign B2q7z6[1] = Dzhh07; +assign Mkp7z6[1] = F1ih07; +assign Mkp7z6[3] = H3ih07; +assign Mkp7z6[4] = J5ih07; +assign Mkp7z6[5] = L7ih07; +assign Mkp7z6[6] = N9ih07; +assign Mkp7z6[7] = Pbih07; +assign Mkp7z6[8] = Rdih07; +assign Mkp7z6[9] = Tfih07; +assign Mkp7z6[10] = Vhih07; +assign Mkp7z6[11] = Yjih07; +assign Mkp7z6[12] = Bmih07; +assign Mkp7z6[13] = Eoih07; +assign Mkp7z6[14] = Hqih07; +assign Mkp7z6[15] = Ksih07; +assign Mkp7z6[16] = Nuih07; +assign Mkp7z6[17] = Qwih07; +assign Mkp7z6[18] = Tyih07; +assign Mkp7z6[19] = W0jh07; +assign Mkp7z6[20] = Z2jh07; +assign Mkp7z6[21] = C5jh07; +assign Mkp7z6[22] = F7jh07; +assign Mkp7z6[23] = I9jh07; +assign Mkp7z6[24] = Lbjh07; +assign Mkp7z6[25] = Odjh07; +assign Mkp7z6[26] = Rfjh07; +assign Mkp7z6[27] = Uhjh07; +assign Mkp7z6[28] = Xjjh07; +assign Mkp7z6[29] = Amjh07; +assign Mkp7z6[30] = Dojh07; +assign Mkp7z6[31] = Gqjh07; +assign Mkp7z6[0] = Jsjh07; +assign Gs2ft6 = Lujh07; +assign Hyp7z6[3] = Qwjh07; +assign Hyp7z6[1] = Wyjh07; +assign Hyp7z6[0] = C1kh07; +assign Gwp7z6[1] = I3kh07; +assign Bup7z6[0] = Q5kh07; +assign Bup7z6[1] = C8kh07; +assign Wrp7z6[0] = Oakh07; +assign Wrp7z6[1] = Adkh07; +assign Cq2ft6 = Mfkh07; +assign Gwp7z6[0] = Uhkh07; +assign Pjb7z6[2] = Ckkh07; +assign Xfymz6[2] = Ylkh07; +assign Unymz6[9] = Nnkh07; +assign Unymz6[4] = Fqkh07; +assign Unymz6[6] = Xskh07; +assign Unymz6[7] = Pvkh07; +assign Unymz6[0] = Hykh07; +assign Unymz6[1] = Z0lh07; +assign Unymz6[2] = R3lh07; +assign Unymz6[3] = J6lh07; +assign Unymz6[8] = B9lh07; +assign Ojymz6[9] = Tblh07; +assign Ojymz6[4] = Kelh07; +assign Ojymz6[6] = Bhlh07; +assign Ojymz6[7] = Sjlh07; +assign Ojymz6[0] = Jmlh07; +assign Ojymz6[1] = Aplh07; +assign Ojymz6[2] = Rrlh07; +assign Ojymz6[3] = Iulh07; +assign Ojymz6[8] = Zwlh07; +assign Kmymz6[1] = Qzlh07; +assign Kmymz6[3] = Z1mh07; +assign Blymz6[1] = I4mh07; +assign Blymz6[2] = Q6mh07; +assign Blymz6[3] = Y8mh07; +assign Kmymz6[0] = Gbmh07; +assign At67v6 = Pdmh07; +assign W197z6 = Yfmh07; +assign Wd77z6 = Rhmh07; +assign Cf77z6 = Wjmh07; +assign Kf77z6 = Bmmh07; +assign Sf77z6 = Gomh07; +assign Ag77z6 = Lqmh07; +assign Gh77z6 = Qsmh07; +assign Biymz6[1] = Vumh07; +assign Biymz6[3] = Dxmh07; +assign Biymz6[4] = Lzmh07; +assign Biymz6[5] = T1nh07; +assign Biymz6[6] = B4nh07; +assign Biymz6[7] = J6nh07; +assign Biymz6[9] = R8nh07; +assign Biymz6[10] = Zanh07; +assign Biymz6[11] = Idnh07; +assign Biymz6[12] = Rfnh07; +assign Biymz6[13] = Ainh07; +assign Biymz6[14] = Jknh07; +assign Biymz6[15] = Smnh07; +assign Biymz6[0] = Bpnh07; +assign Feymz6[0] = Jrnh07; +assign Feymz6[1] = Etnh07; +assign Feymz6[2] = Zunh07; +assign Feymz6[3] = Uwnh07; +assign Bfymz6[1] = Pynh07; +assign Bfymz6[2] = K0oh07; +assign Ue77z6 = F2oh07; +assign Jke7v6 = U3oh07; +assign C477v6 = P5oh07; +assign Qc77v6 = G7oh07; +assign Bj77v6 = B9oh07; +assign H71nz6[0] = Kboh07; +assign H71nz6[1] = Idoh07; +assign H71nz6[2] = Gfoh07; +assign H71nz6[3] = Ehoh07; +assign H71nz6[4] = Cjoh07; +assign H71nz6[5] = Aloh07; +assign H71nz6[6] = Ymoh07; +assign H71nz6[7] = Wooh07; +assign H71nz6[8] = Uqoh07; +assign Kkd7v6 = Ssoh07; +assign A377v6 = Ruoh07; +assign Uw77v6 = Pwoh07; +assign W177v6 = Wyoh07; +assign Vv67v6 = W0ph07; +assign Wy67v6 = U2ph07; +assign Qobet6 = R4ph07; +assign O197z6 = (!T6ph07); +assign ETMINTSTAT[1] = W8ph07; +assign Zkh7v6 = (!W8ph07); +assign ETMINTSTAT[0] = Bbph07; +assign Skh7v6 = (!Bbph07); +assign Tjr7z6[6] = Gdph07; +assign Tjr7z6[1] = Qfph07; +assign Tjr7z6[0] = Aiph07; +assign Sr67z6 = (!Kkph07); +assign ETMINTSTAT[2] = Emph07; +assign Glh7v6 = (!Emph07); +assign Soa7v6 = Joph07; +assign Yhzmz6[4] = Hqph07; +assign Thh7v6 = (!Lsph07); +assign Yc77z6 = (!Vuph07); +assign I9b7v6 = Ixph07; +assign Mbc7v6 = Pzph07; +assign Qvb7v6 = R1qh07; +assign G197z6 = (!Z3qh07); +assign Bba7v6 = F6qh07; +assign Tjr7z6[10] = D8qh07; +assign Zxymz6[8] = Oaqh07; +assign Pazmz6[8] = Scqh07; +assign Qmbet6 = Zeqh07; +assign Ie77v6 = Dhqh07; +assign X477v6 = Ejqh07; +assign Ipymz6[1] = Zkqh07; +assign Spc7v6 = Fnqh07; +assign Y097z6 = (!Woqh07); +assign Edh7v6 = (!Uqqh07); +assign Xz67v6 = Vsqh07; +assign Gnzmz6[0] = Nuqh07; +assign Ync7v6 = Lwqh07; +assign Emc7v6 = Kyqh07; +assign Kkc7v6 = J0rh07; +assign Qic7v6 = I2rh07; +assign Wgc7v6 = H4rh07; +assign Cfc7v6 = G6rh07; +assign Gnzmz6[46] = F8rh07; +assign Gnzmz6[45] = Earh07; +assign Gnzmz6[44] = Dcrh07; +assign Gnzmz6[43] = Cerh07; +assign Gnzmz6[42] = Bgrh07; +assign Gnzmz6[41] = Airh07; +assign Gnzmz6[40] = Zjrh07; +assign Gnzmz6[38] = Ylrh07; +assign Gnzmz6[37] = Xnrh07; +assign Gnzmz6[36] = Wprh07; +assign Gnzmz6[35] = Vrrh07; +assign Gnzmz6[34] = Gxps07; +assign Gnzmz6[33] = Fzps07; +assign Gnzmz6[32] = E1qs07; +assign Gnzmz6[30] = D3qs07; +assign Gnzmz6[29] = C5qs07; +assign Gnzmz6[28] = B7qs07; +assign Gnzmz6[27] = A9qs07; +assign Gnzmz6[26] = Zaqs07; +assign Gnzmz6[25] = Ycqs07; +assign Gnzmz6[24] = Xeqs07; +assign Gnzmz6[22] = Wgqs07; +assign Gnzmz6[21] = Viqs07; +assign Gnzmz6[20] = Ukqs07; +assign Gnzmz6[19] = Tmqs07; +assign Gnzmz6[18] = Soqs07; +assign Gnzmz6[17] = Rqqs07; +assign Gnzmz6[16] = Qsqs07; +assign Gnzmz6[14] = Puqs07; +assign Gnzmz6[13] = Owqs07; +assign Gnzmz6[12] = Nyqs07; +assign Gnzmz6[11] = M0rs07; +assign Gnzmz6[10] = L2rs07; +assign Gnzmz6[9] = K4rs07; +assign Gnzmz6[8] = I6rs07; +assign Gnzmz6[6] = G8rs07; +assign Gnzmz6[5] = Ears07; +assign Gnzmz6[4] = Ccrs07; +assign Gnzmz6[3] = Aers07; +assign Gnzmz6[2] = Yfrs07; +assign Gnzmz6[1] = Whrs07; +assign Sgymz6[9] = Ujrs07; +assign Sgymz6[4] = Dmrs07; +assign Sgymz6[6] = Mors07; +assign Sgymz6[7] = Vqrs07; +assign Sgymz6[0] = Etrs07; +assign Sgymz6[1] = Nvrs07; +assign Sgymz6[2] = Wxrs07; +assign Sgymz6[3] = F0ss07; +assign Sgymz6[8] = O2ss07; +assign Ok77v6 = X4ss07; +assign Jdymz6[3] = L7ss07; +assign Jdymz6[0] = G9ss07; +assign Jdymz6[1] = Bbss07; +assign J02nz6[2] = Wcss07; +assign Jw1nz6[3] = Tess07; +assign Jw1nz6[1] = Ngss07; +assign Jw1nz6[0] = Hiss07; +assign Hce7v6 = Bkss07; +assign Nl1nz6[0] = Cmss07; +assign Nl1nz6[1] = Aoss07; +assign Pk1nz6[1] = Ypss07; +assign Pk1nz6[3] = Vrss07; +assign Pk1nz6[6] = Stss07; +assign Pk1nz6[7] = Pvss07; +assign Pk1nz6[10] = Mxss07; +assign Pk1nz6[11] = Kzss07; +assign Pk1nz6[12] = I1ts07; +assign Nyd7v6 = G3ts07; +assign N6h7v6 = C5ts07; +assign M7e7v6 = P7ts07; +assign Fhh7v6 = (!P7ts07); +assign Drf7v6 = Cats07; +assign Td2nz6[1] = Fcts07; +assign Td2nz6[2] = Dets07; +assign Td2nz6[3] = Bgts07; +assign Td2nz6[4] = Zhts07; +assign Td2nz6[5] = Xjts07; +assign Td2nz6[6] = Vlts07; +assign Td2nz6[7] = Tnts07; +assign Td2nz6[8] = Rpts07; +assign Td2nz6[9] = Prts07; +assign Td2nz6[10] = Ntts07; +assign Td2nz6[11] = Mvts07; +assign Td2nz6[12] = Lxts07; +assign Pk1nz6[0] = Kzts07; +assign Pk1nz6[9] = H1us07; +assign Lge7v6 = E3us07; +assign Iy1nz6[1] = D5us07; +assign Gie7v6 = F7us07; +assign Iy1nz6[0] = C9us07; +assign Eee7v6 = Ebus07; +assign Hae7v6 = Fdus07; +assign Ja1nz6[0] = Gfus07; +assign Brg7v6 = Thus07; +assign Fg1nz6[0] = Mkus07; +assign Ti2nz6[0] = Fnus07; +assign Or27v6 = Lous07; +assign Q097z6 = (!Bqus07); +assign Ig27v6 = Prus07; +assign Ln6ft6 = Ntus07; +assign Pp1nz6[0] = Mvus07; +assign U81nz6[0] = Kxus07; +assign Uyg7v6 = Xzus07; +assign Af1nz6[0] = Q2vs07; +assign Oo1nz6[6] = J5vs07; +assign Oo1nz6[5] = H7vs07; +assign Oo1nz6[4] = F9vs07; +assign Oo1nz6[3] = Dbvs07; +assign Oo1nz6[2] = Bdvs07; +assign Oo1nz6[1] = Zevs07; +assign Nn1nz6[6] = Xgvs07; +assign Nn1nz6[5] = Vivs07; +assign Nn1nz6[4] = Tkvs07; +assign Nn1nz6[3] = Rmvs07; +assign Nn1nz6[2] = Povs07; +assign Nn1nz6[1] = Nqvs07; +assign Mm1nz6[1] = Lsvs07; +assign Mm1nz6[0] = Juvs07; +assign U81nz6[2] = Hwvs07; +assign Y3h7v6 = Uyvs07; +assign Af1nz6[2] = N1ws07; +assign Mqb7z6[1] = G4ws07; +assign Mqb7z6[2] = X5ws07; +assign Mqb7z6[3] = O7ws07; +assign Mqb7z6[4] = F9ws07; +assign Mqb7z6[5] = Waws07; +assign Mqb7z6[6] = Ncws07; +assign Rj27v6 = Eews07; +assign Ci6ft6 = Wfws07; +assign D86ft6 = Yhws07; +assign Og6ft6 = Qjws07; +assign Zm37v6 = Ilws07; +assign R8s7z6[0] = Lnws07; +assign R8s7z6[1] = Hpws07; +assign Scs7z6[1] = Drws07; +assign Scs7z6[3] = Atws07; +assign Scs7z6[0] = Xuws07; +assign Ies7z6[24] = Uwws07; +assign Ies7z6[31] = Tyws07; +assign Ies7z6[30] = S0xs07; +assign Ies7z6[29] = R2xs07; +assign Ies7z6[28] = Q4xs07; +assign Ies7z6[27] = P6xs07; +assign Ies7z6[26] = O8xs07; +assign Ies7z6[25] = Naxs07; +assign Ies7z6[15] = Mcxs07; +assign Ies7z6[14] = Lexs07; +assign Ies7z6[13] = Kgxs07; +assign Ies7z6[12] = Jixs07; +assign Ies7z6[11] = Ikxs07; +assign Ies7z6[10] = Hmxs07; +assign Ies7z6[9] = Goxs07; +assign Ies7z6[0] = Fqxs07; +assign Ies7z6[7] = Esxs07; +assign Ies7z6[6] = Duxs07; +assign Ies7z6[5] = Cwxs07; +assign Ies7z6[4] = Byxs07; +assign Ies7z6[3] = A0ys07; +assign Ies7z6[1] = Z1ys07; +assign Ex7et6 = Y3ys07; +assign K1i7z6[1] = V6ys07; +assign K1i7z6[2] = Y9ys07; +assign K1i7z6[5] = Bdys07; +assign K1i7z6[11] = Egys07; +assign K1i7z6[13] = Ijys07; +assign K1i7z6[14] = Mmys07; +assign K1i7z6[15] = Qpys07; +assign K1i7z6[19] = Usys07; +assign K1i7z6[23] = Yvys07; +assign K1i7z6[24] = Czys07; +assign E8h7z6[1] = G2zs07; +assign E3c7z6[0] = D5zs07; +assign Fhc7z6[20] = M7zs07; +assign Fhc7z6[23] = W9zs07; +assign Fhc7z6[14] = Gczs07; +assign Fhc7z6[22] = Qezs07; +assign Fhc7z6[13] = Ahzs07; +assign Fhc7z6[21] = Kjzs07; +assign Fhc7z6[12] = Ulzs07; +assign Fhc7z6[19] = Eozs07; +assign Fhc7z6[17] = Oqzs07; +assign Fhc7z6[9] = Yszs07; +assign Fhc7z6[16] = Hvzs07; +assign Fhc7z6[24] = Rxzs07; +assign Fhc7z6[25] = B00t07; +assign Fhc7z6[10] = L20t07; +assign Fhc7z6[18] = V40t07; +assign E3c7z6[2] = F70t07; +assign Fth7z6[2] = O90t07; +assign Fhc7z6[15] = Lc0t07; +assign Pxg7z6[2] = Ve0t07; +assign Z8c7z6[2] = Sh0t07; +assign Oyfdt6 = Dk0t07; +assign X0cdt6 = Gm0t07; +assign Qdcdt6 = Lo0t07; +assign Osd7z6[1] = Kr0t07; +assign Osd7z6[2] = Ju0t07; +assign Oac7z6[2] = Ix0t07; +assign Xwe7z6[2] = L01t07; +assign Ntg7z6[2] = M31t07; +assign O5h7z6[2] = J61t07; +assign V1c7z6[4] = G91t07; +assign V1c7z6[2] = Lb1t07; +assign Byc7z6[2] = Qd1t07; +assign Y7q7z6[1] = Tg1t07; +assign Bqp7z6[2] = Qi1t07; +assign Gop7z6[2] = Sk1t07; +assign Rip7z6[2] = Um1t07; +assign Hmp7z6[2] = Wo1t07; +assign B82ft6 = Cr1t07; +assign Sgp7z6[2] = Jt1t07; +assign E6p7z6[2] = Pv1t07; +assign Q8p7z6[2] = Nx1t07; +assign B2q7z6[2] = Lz1t07; +assign G0q7z6[2] = N12t07; +assign I7p7z6[2] = P32t07; +assign Zdp7z6[0] = R52t07; +assign Iwymz6[0] = Z72t07; +assign Um4ft6 = Ba2t07; +assign Hyp7z6[2] = Ac2t07; +assign Fy4ft6 = Ge2t07; +assign Dw4ft6 = Fg2t07; +assign Zdp7z6[1] = Li2t07; +assign Iwymz6[1] = Tk2t07; +assign Mkp7z6[2] = Vm2t07; +assign Y52ft6 = Xo2t07; +assign Ayeet6 = Er2t07; +assign Qij7z6[2] = It2t07; +assign Nmadt6 = Pv2t07; +assign U3cet6 = Ox2t07; +assign Hcget6 = Qz2t07; +assign Fjb7z6[0] = J23t07; +assign WICENACK = K33t07; +assign Dpadt6 = J43t07; +assign Me77z6 = (!K63t07); +assign Qg67z6 = (!Q83t07); +assign As67z6 = (!Pa3t07); +assign Cndet6 = Pc3t07; +assign H1j7z6[2] = Qe3t07; +assign X66ft6 = Ug3t07; +assign Scs7z6[2] = Ni3t07; +assign Ies7z6[23] = Kk3t07; +assign Ies7z6[22] = Jm3t07; +assign Ies7z6[21] = Io3t07; +assign Ies7z6[20] = Hq3t07; +assign Ies7z6[19] = Gs3t07; +assign Ies7z6[18] = Fu3t07; +assign Ies7z6[17] = Ew3t07; +assign Ies7z6[2] = Dy3t07; +assign Ee77z6 = C04t07; +assign Kmymz6[2] = H24t07; +assign Biymz6[2] = Q44t07; +assign Hyj7z6[1] = Y64t07; +assign Hyj7z6[3] = V94t07; +assign Hyj7z6[0] = Sc4t07; +assign Hyj7z6[2] = Pf4t07; +assign Bwi7z6[2] = Mi4t07; +assign P6l7z6[20] = Ik4t07; +assign P6l7z6[21] = Zn4t07; +assign P6l7z6[22] = Qr4t07; +assign P6l7z6[23] = Hv4t07; +assign P6l7z6[18] = Vy4t07; +assign P6l7z6[17] = N25t07; +assign P6l7z6[16] = F65t07; +assign P6l7z6[15] = X95t07; +assign P6l7z6[19] = Pd5t07; +assign P6l7z6[10] = Hh5t07; +assign P6l7z6[9] = Tk5t07; +assign P6l7z6[8] = Fo5t07; +assign P6l7z6[7] = Rr5t07; +assign P6l7z6[11] = Dv5t07; +assign P6l7z6[12] = Py5t07; +assign P6l7z6[13] = B26t07; +assign I097z6 = (!N56t07); +assign A097z6 = (!Z86t07); +assign Sz87z6 = (!Lc6t07); +assign Kz87z6 = (!Xf6t07); +assign Cz87z6 = (!Jj6t07); +assign Uy87z6 = (!Vm6t07); +assign Bal7z6[24] = Hq6t07; +assign My87z6 = (!Tt6t07); +assign Ey87z6 = (!Fx6t07); +assign Wx87z6 = (!R07t07); +assign Ox87z6 = (!D47t07); +assign Gx87z6 = (!P77t07); +assign Yw87z6 = (!Bb7t07); +assign Qw87z6 = (!Ne7t07); +assign Iw87z6 = (!Zh7t07); +assign Aw87z6 = (!Ll7t07); +assign Sv87z6 = (!Xo7t07); +assign Kv87z6 = (!Js7t07); +assign Cv87z6 = (!Uv7t07); +assign Uu87z6 = (!Gz7t07); +assign Mu87z6 = (!S28t07); +assign Bal7z6[5] = E68t07; +assign Eu87z6 = (!P98t07); +assign Wt87z6 = (!Ad8t07); +assign P6l7z6[0] = Lg8t07; +assign P6l7z6[1] = Tj8t07; +assign P6l7z6[3] = Gn8t07; +assign P6l7z6[4] = Tq8t07; +assign P6l7z6[5] = Gu8t07; +assign Hwk7z6[20] = Tx8t07; +assign Hwk7z6[21] = K19t07; +assign Hwk7z6[22] = B59t07; +assign Hwk7z6[23] = S89t07; +assign Hwk7z6[18] = Gc9t07; +assign Hwk7z6[17] = Yf9t07; +assign Hwk7z6[16] = Qj9t07; +assign Hwk7z6[15] = In9t07; +assign Hwk7z6[19] = Ar9t07; +assign Hwk7z6[10] = Su9t07; +assign Hwk7z6[9] = Ey9t07; +assign Hwk7z6[8] = Q1at07; +assign Hwk7z6[7] = C5at07; +assign Hwk7z6[11] = O8at07; +assign Hwk7z6[12] = Acat07; +assign Hwk7z6[13] = Mfat07; +assign Ot87z6 = (!Yiat07); +assign Gt87z6 = (!Kmat07); +assign Ys87z6 = (!Wpat07); +assign Qs87z6 = (!Itat07); +assign Is87z6 = (!Uwat07); +assign As87z6 = (!G0bt07); +assign Tzk7z6[24] = S3bt07; +assign Sr87z6 = (!E7bt07); +assign Kr87z6 = (!Qabt07); +assign Cr87z6 = (!Cebt07); +assign Uq87z6 = (!Ohbt07); +assign Mq87z6 = (!Albt07); +assign Eq87z6 = (!Mobt07); +assign Wp87z6 = (!Yrbt07); +assign Op87z6 = (!Kvbt07); +assign Gp87z6 = (!Wybt07); +assign Yo87z6 = (!I2ct07); +assign Qo87z6 = (!U5ct07); +assign Io87z6 = (!F9ct07); +assign Ao87z6 = (!Rcct07); +assign Sn87z6 = (!Dgct07); +assign Tzk7z6[5] = Pjct07; +assign Kn87z6 = (!Anct07); +assign Cn87z6 = (!Lqct07); +assign Hwk7z6[0] = Wtct07; +assign Hwk7z6[1] = Exct07; +assign Hwk7z6[3] = R0dt07; +assign Hwk7z6[4] = E4dt07; +assign Hwk7z6[5] = R7dt07; +assign Zlk7z6[20] = Ebdt07; +assign Zlk7z6[21] = Vedt07; +assign Zlk7z6[22] = Midt07; +assign Zlk7z6[23] = Dmdt07; +assign Zlk7z6[18] = Rpdt07; +assign Zlk7z6[17] = Jtdt07; +assign Zlk7z6[16] = Bxdt07; +assign Zlk7z6[15] = T0et07; +assign Zlk7z6[19] = L4et07; +assign Zlk7z6[10] = D8et07; +assign Zlk7z6[9] = Pbet07; +assign Zlk7z6[8] = Bfet07; +assign Zlk7z6[7] = Niet07; +assign Zlk7z6[11] = Zlet07; +assign Zlk7z6[12] = Lpet07; +assign Zlk7z6[13] = Xset07; +assign Um87z6 = (!Jwet07); +assign Mm87z6 = (!Vzet07); +assign Em87z6 = (!H3ft07); +assign Wl87z6 = (!T6ft07); +assign Ol87z6 = (!Faft07); +assign Gl87z6 = (!Rdft07); +assign Lpk7z6[24] = Dhft07; +assign Yk87z6 = (!Pkft07); +assign Qk87z6 = (!Boft07); +assign Ik87z6 = (!Nrft07); +assign Ak87z6 = (!Zuft07); +assign Sj87z6 = (!Lyft07); +assign Kj87z6 = (!X1gt07); +assign Cj87z6 = (!J5gt07); +assign Ui87z6 = (!V8gt07); +assign Mi87z6 = (!Hcgt07); +assign Ei87z6 = (!Tfgt07); +assign Wh87z6 = (!Fjgt07); +assign Oh87z6 = (!Qmgt07); +assign Gh87z6 = (!Cqgt07); +assign Yg87z6 = (!Otgt07); +assign Lpk7z6[5] = Axgt07; +assign Qg87z6 = (!L0ht07); +assign Ig87z6 = (!W3ht07); +assign Zlk7z6[0] = H7ht07; +assign Zlk7z6[1] = Paht07; +assign Zlk7z6[3] = Ceht07; +assign Zlk7z6[4] = Phht07; +assign Zlk7z6[5] = Clht07; +assign Rbk7z6[20] = Poht07; +assign Rbk7z6[21] = Gsht07; +assign Rbk7z6[22] = Xvht07; +assign Rbk7z6[23] = Ozht07; +assign Rbk7z6[18] = C3it07; +assign Rbk7z6[17] = U6it07; +assign Rbk7z6[16] = Mait07; +assign Rbk7z6[15] = Eeit07; +assign Rbk7z6[19] = Whit07; +assign Rbk7z6[10] = Olit07; +assign Rbk7z6[9] = Apit07; +assign Rbk7z6[8] = Msit07; +assign Rbk7z6[7] = Yvit07; +assign Rbk7z6[11] = Kzit07; +assign Rbk7z6[12] = W2jt07; +assign Rbk7z6[13] = I6jt07; +assign Dfk7z6[30] = U9jt07; +assign Dfk7z6[29] = Gdjt07; +assign Dfk7z6[28] = Sgjt07; +assign Dfk7z6[27] = Ekjt07; +assign Dfk7z6[26] = Qnjt07; +assign Dfk7z6[25] = Crjt07; +assign Dfk7z6[24] = Oujt07; +assign Dfk7z6[31] = Ayjt07; +assign Dfk7z6[22] = M1kt07; +assign Dfk7z6[21] = Y4kt07; +assign Dfk7z6[17] = K8kt07; +assign Dfk7z6[18] = Wbkt07; +assign Dfk7z6[19] = Ifkt07; +assign Dfk7z6[20] = Uikt07; +assign Dfk7z6[15] = Gmkt07; +assign Dfk7z6[14] = Spkt07; +assign Dfk7z6[13] = Etkt07; +assign Dfk7z6[9] = Qwkt07; +assign Dfk7z6[10] = B0lt07; +assign Dfk7z6[11] = N3lt07; +assign Dfk7z6[12] = Z6lt07; +assign Dfk7z6[5] = Lalt07; +assign Dfk7z6[6] = Wdlt07; +assign Dfk7z6[7] = Hhlt07; +assign Rbk7z6[0] = Sklt07; +assign Rbk7z6[1] = Aolt07; +assign Rbk7z6[3] = Nrlt07; +assign Rbk7z6[4] = Avlt07; +assign Rbk7z6[5] = Nylt07; +assign Jw1nz6[2] = A2mt07; +assign Wui7z6[2] = U3mt07; +assign Jdymz6[2] = V5mt07; +assign Apget6 = Q7mt07; +assign Ohj7z6[34] = Pamt07; +assign Ohj7z6[2] = Scmt07; +assign Hyj7z6[5] = Uemt07; +assign Frl7z6[20] = Rhmt07; +assign Frl7z6[21] = Ilmt07; +assign Frl7z6[22] = Zomt07; +assign Frl7z6[23] = Qsmt07; +assign Frl7z6[18] = Ewmt07; +assign Frl7z6[17] = Wzmt07; +assign Frl7z6[16] = O3nt07; +assign Frl7z6[15] = G7nt07; +assign Frl7z6[19] = Yant07; +assign Frl7z6[10] = Qent07; +assign Frl7z6[9] = Cint07; +assign Frl7z6[8] = Olnt07; +assign Frl7z6[7] = Apnt07; +assign Frl7z6[11] = Msnt07; +assign Frl7z6[12] = Yvnt07; +assign Frl7z6[13] = Kznt07; +assign Ag87z6 = (!W2ot07); +assign Sf87z6 = (!I6ot07); +assign Kf87z6 = (!U9ot07); +assign Cf87z6 = (!Gdot07); +assign Ue87z6 = (!Sgot07); +assign Me87z6 = (!Ekot07); +assign Rul7z6[24] = Qnot07; +assign Ee87z6 = (!Crot07); +assign Wd87z6 = (!Ouot07); +assign Od87z6 = (!Ayot07); +assign Gd87z6 = (!M1pt07); +assign Yc87z6 = (!Y4pt07); +assign Qc87z6 = (!K8pt07); +assign Ic87z6 = (!Wbpt07); +assign Ac87z6 = (!Ifpt07); +assign Sb87z6 = (!Uipt07); +assign Kb87z6 = (!Gmpt07); +assign Cb87z6 = (!Sppt07); +assign Ua87z6 = (!Dtpt07); +assign Ma87z6 = (!Pwpt07); +assign Ea87z6 = (!B0qt07); +assign Rul7z6[5] = N3qt07; +assign W987z6 = (!Y6qt07); +assign O987z6 = (!Jaqt07); +assign Frl7z6[0] = Udqt07; +assign Frl7z6[1] = Chqt07; +assign Frl7z6[3] = Pkqt07; +assign Frl7z6[4] = Coqt07; +assign Frl7z6[5] = Prqt07; +assign Hyj7z6[4] = Cvqt07; +assign Xgl7z6[20] = Zxqt07; +assign Xgl7z6[21] = Q1rt07; +assign Xgl7z6[22] = H5rt07; +assign Xgl7z6[23] = Y8rt07; +assign Xgl7z6[18] = Mcrt07; +assign Xgl7z6[17] = Egrt07; +assign Xgl7z6[16] = Wjrt07; +assign Xgl7z6[15] = Onrt07; +assign Xgl7z6[19] = Grrt07; +assign Xgl7z6[10] = Yurt07; +assign Xgl7z6[9] = Kyrt07; +assign Xgl7z6[8] = W1st07; +assign Xgl7z6[7] = I5st07; +assign Xgl7z6[11] = U8st07; +assign Xgl7z6[12] = Gcst07; +assign Xgl7z6[13] = Sfst07; +assign Jkl7z6[30] = Ejst07; +assign Jkl7z6[29] = Qmst07; +assign Jkl7z6[28] = Cqst07; +assign Jkl7z6[27] = Otst07; +assign Jkl7z6[26] = Axst07; +assign Jkl7z6[25] = M0tt07; +assign Jkl7z6[24] = Y3tt07; +assign Jkl7z6[31] = K7tt07; +assign Jkl7z6[22] = Watt07; +assign Jkl7z6[21] = Iett07; +assign Jkl7z6[17] = Uhtt07; +assign Jkl7z6[18] = Gltt07; +assign Jkl7z6[19] = Sott07; +assign Jkl7z6[20] = Estt07; +assign Jkl7z6[15] = Qvtt07; +assign Jkl7z6[14] = Cztt07; +assign Jkl7z6[13] = O2ut07; +assign Jkl7z6[9] = A6ut07; +assign Jkl7z6[10] = L9ut07; +assign Jkl7z6[11] = Xcut07; +assign Jkl7z6[12] = Jgut07; +assign Jkl7z6[5] = Vjut07; +assign Jkl7z6[6] = Gnut07; +assign Jkl7z6[7] = Rqut07; +assign Xgl7z6[0] = Cuut07; +assign Xgl7z6[1] = Kxut07; +assign Xgl7z6[3] = X0vt07; +assign Xgl7z6[4] = K4vt07; +assign Xgl7z6[5] = X7vt07; +assign Hyj7z6[6] = Kbvt07; +assign N1m7z6[20] = Hevt07; +assign N1m7z6[21] = Yhvt07; +assign N1m7z6[22] = Plvt07; +assign N1m7z6[23] = Gpvt07; +assign N1m7z6[18] = Usvt07; +assign N1m7z6[17] = Mwvt07; +assign N1m7z6[16] = E0wt07; +assign N1m7z6[15] = W3wt07; +assign N1m7z6[19] = O7wt07; +assign N1m7z6[10] = Gbwt07; +assign N1m7z6[9] = Sewt07; +assign N1m7z6[8] = Eiwt07; +assign N1m7z6[7] = Qlwt07; +assign N1m7z6[11] = Cpwt07; +assign N1m7z6[12] = Oswt07; +assign N1m7z6[13] = Awwt07; +assign G987z6 = (!Mzwt07); +assign Y887z6 = (!Y2xt07); +assign Q887z6 = (!K6xt07); +assign I887z6 = (!W9xt07); +assign A887z6 = (!Idxt07); +assign S787z6 = (!Ugxt07); +assign Z4m7z6[24] = Gkxt07; +assign K787z6 = (!Snxt07); +assign C787z6 = (!Erxt07); +assign U687z6 = (!Quxt07); +assign M687z6 = (!Cyxt07); +assign E687z6 = (!O1yt07); +assign W587z6 = (!A5yt07); +assign O587z6 = (!M8yt07); +assign G587z6 = (!Ybyt07); +assign Y487z6 = (!Kfyt07); +assign Q487z6 = (!Wiyt07); +assign I487z6 = (!Imyt07); +assign A487z6 = (!Tpyt07); +assign S387z6 = (!Ftyt07); +assign K387z6 = (!Rwyt07); +assign Z4m7z6[5] = D0zt07; +assign C387z6 = (!O3zt07); +assign U287z6 = (!Z6zt07); +assign N1m7z6[0] = Kazt07; +assign N1m7z6[1] = Sdzt07; +assign N1m7z6[3] = Fhzt07; +assign N1m7z6[5] = Skzt07; +assign Hyj7z6[7] = Fozt07; +assign Vbm7z6[20] = Crzt07; +assign Vbm7z6[21] = Tuzt07; +assign Vbm7z6[22] = Kyzt07; +assign Vbm7z6[23] = B20u07; +assign Vbm7z6[15] = P50u07; +assign Vbm7z6[16] = H90u07; +assign Vbm7z6[17] = Zc0u07; +assign Vbm7z6[18] = Rg0u07; +assign Vbm7z6[19] = Jk0u07; +assign Vbm7z6[10] = Bo0u07; +assign Vbm7z6[9] = Nr0u07; +assign Vbm7z6[8] = Zu0u07; +assign Vbm7z6[7] = Ly0u07; +assign Vbm7z6[11] = X11u07; +assign Vbm7z6[12] = J51u07; +assign Vbm7z6[13] = V81u07; +assign Vbm7z6[0] = Hc1u07; +assign Vbm7z6[1] = Pf1u07; +assign Vbm7z6[3] = Cj1u07; +assign Vbm7z6[5] = Pm1u07; +assign M287z6 = (!Cq1u07); +assign E287z6 = (!Ot1u07); +assign W187z6 = (!Ax1u07); +assign O187z6 = (!M02u07); +assign G187z6 = (!Y32u07); +assign Y087z6 = (!K72u07); +assign Q087z6 = (!Wa2u07); +assign I087z6 = (!Ie2u07); +assign A087z6 = (!Uh2u07); +assign Sz77z6 = (!Fl2u07); +assign Kz77z6 = (!Ro2u07); +assign Cz77z6 = (!Ds2u07); +assign Hfm7z6[5] = Pv2u07; +assign Uy77z6 = (!Az2u07); +assign My77z6 = (!L23u07); +assign Ey77z6 = (!W53u07); +assign Wx77z6 = (!I93u07); +assign Ox77z6 = (!Uc3u07); +assign Gx77z6 = (!Gg3u07); +assign Yw77z6 = (!Sj3u07); +assign Qw77z6 = (!En3u07); +assign Hfm7z6[25] = Qq3u07; +assign Iw77z6 = (!Cu3u07); +assign Dri7z6[2] = Ox3u07; +assign Rbk7z6[2] = Oz3u07; +assign Zlk7z6[2] = B34u07; +assign Hwk7z6[2] = O64u07; +assign P6l7z6[2] = Ba4u07; +assign Xgl7z6[2] = Od4u07; +assign Frl7z6[2] = Bh4u07; +assign N1m7z6[2] = Ok4u07; +assign Vbm7z6[2] = Bo4u07; +assign Pk1nz6[2] = Or4u07; +assign W3p7z6[2] = Lt4u07; +assign T2p7z6[2] = Av4u07; +assign A0p7z6[0] = Pw4u07; +assign Hxo7z6[0] = Ey4u07; +assign Ouo7z6[0] = Tz4u07; +assign Vro7z6[0] = I15u07; +assign Nqo7z6[0] = X25u07; +assign Fpo7z6[0] = M45u07; +assign Pdq7z6[2] = B65u07; +assign Cjq7z6[2] = H85u07; +assign vis_pc_o[27] = Na5u07; +assign Fhc7z6[27] = Uc5u07; +assign K1i7z6[27] = Ef5u07; +assign vis_pc_o[28] = Ii5u07; +assign Fhc7z6[28] = Pk5u07; +assign Fth7z6[28] = Zm5u07; +assign K1i7z6[28] = Xp5u07; +assign vis_pc_o[29] = Bt5u07; +assign Fhc7z6[29] = Iv5u07; +assign K1i7z6[29] = Sx5u07; +assign vis_pc_o[30] = W06u07; +assign Dvc7z6[2] = D36u07; +assign Dvc7z6[9] = I66u07; +assign Dvc7z6[12] = N96u07; +assign Dvc7z6[13] = Tc6u07; +assign Dvc7z6[14] = Zf6u07; +assign Dvc7z6[15] = Fj6u07; +assign Dvc7z6[17] = Lm6u07; +assign Dvc7z6[21] = Rp6u07; +assign Dvc7z6[25] = Xs6u07; +assign Dvc7z6[26] = Dw6u07; +assign Dvc7z6[27] = Jz6u07; +assign Dvc7z6[28] = P27u07; +assign Dvc7z6[29] = V57u07; +assign K1i7z6[30] = B97u07; +assign Aw77z6 = Fc7u07; +assign Rzr7z6[1] = Fe7u07; +assign Sv77z6 = Qg7u07; +assign Rzr7z6[2] = Qi7u07; +assign Kv77z6 = Bl7u07; +assign Rzr7z6[3] = Bn7u07; +assign Cv77z6 = Mp7u07; +assign Rzr7z6[4] = Mr7u07; +assign Uu77z6 = Xt7u07; +assign Rzr7z6[5] = Xv7u07; +assign Mu77z6 = Iy7u07; +assign Rzr7z6[6] = I08u07; +assign Eu77z6 = T28u07; +assign Rzr7z6[7] = T48u07; +assign Wt77z6 = E78u07; +assign Rzr7z6[8] = E98u07; +assign Ot77z6 = Pb8u07; +assign Rzr7z6[9] = Pd8u07; +assign Gt77z6 = Ag8u07; +assign Rzr7z6[10] = Bi8u07; +assign Ys77z6 = Nk8u07; +assign Rzr7z6[11] = Om8u07; +assign Qs77z6 = Ap8u07; +assign Rzr7z6[12] = Br8u07; +assign Is77z6 = Nt8u07; +assign Rzr7z6[13] = Ov8u07; +assign As77z6 = Ay8u07; +assign Rzr7z6[14] = B09u07; +assign Sr77z6 = N29u07; +assign Rzr7z6[15] = O49u07; +assign Kr77z6 = A79u07; +assign Rzr7z6[16] = B99u07; +assign Cr77z6 = Nb9u07; +assign Rzr7z6[17] = Od9u07; +assign Uq77z6 = Ag9u07; +assign Rzr7z6[18] = Bi9u07; +assign Mq77z6 = Nk9u07; +assign Rzr7z6[19] = Om9u07; +assign Eq77z6 = Ap9u07; +assign Rzr7z6[20] = Br9u07; +assign Wp77z6 = Nt9u07; +assign Rzr7z6[21] = Ov9u07; +assign Op77z6 = Ay9u07; +assign Rzr7z6[22] = B0au07; +assign Gp77z6 = N2au07; +assign Rzr7z6[23] = O4au07; +assign Yo77z6 = A7au07; +assign Rzr7z6[24] = B9au07; +assign Qo77z6 = Nbau07; +assign Rzr7z6[25] = Odau07; +assign Io77z6 = Agau07; +assign Rzr7z6[26] = Biau07; +assign Ao77z6 = Nkau07; +assign Rzr7z6[27] = Omau07; +assign Sn77z6 = Apau07; +assign Rzr7z6[28] = Brau07; +assign Kn77z6 = Ntau07; +assign Rzr7z6[29] = Ovau07; +assign Cn77z6 = Ayau07; +assign Rzr7z6[30] = B0bu07; +assign Um77z6 = N2bu07; +assign Rzr7z6[31] = O4bu07; +assign Slzmz6[31] = A7bu07; +assign Qk67z6 = (!A7bu07); +assign Slzmz6[1] = A9bu07; +assign Rjzmz6[1] = Zabu07; +assign Jezmz6[1] = Ldbu07; +assign Slzmz6[2] = Sfbu07; +assign Rjzmz6[2] = Rhbu07; +assign Jezmz6[2] = Dkbu07; +assign Slzmz6[3] = Kmbu07; +assign Rjzmz6[3] = Jobu07; +assign Jezmz6[3] = Vqbu07; +assign Slzmz6[4] = Ctbu07; +assign Rjzmz6[4] = Bvbu07; +assign Jezmz6[4] = Nxbu07; +assign Slzmz6[5] = Uzbu07; +assign Rjzmz6[5] = T1cu07; +assign Jezmz6[5] = F4cu07; +assign Slzmz6[6] = M6cu07; +assign Rjzmz6[6] = L8cu07; +assign Jezmz6[6] = Xacu07; +assign Slzmz6[7] = Edcu07; +assign Ik67z6 = (!Edcu07); +assign Rjzmz6[7] = Dfcu07; +assign Slzmz6[8] = Phcu07; +assign Kr67z6 = (!Phcu07); +assign Rjzmz6[8] = Ojcu07; +assign Slzmz6[9] = Amcu07; +assign Cr67z6 = (!Amcu07); +assign Rjzmz6[9] = Zncu07; +assign Slzmz6[10] = Lqcu07; +assign Uq67z6 = (!Lqcu07); +assign Rjzmz6[10] = Lscu07; +assign Slzmz6[11] = Yucu07; +assign Mq67z6 = (!Yucu07); +assign Rjzmz6[11] = Ywcu07; +assign Slzmz6[12] = Lzcu07; +assign Eq67z6 = (!Lzcu07); +assign Rjzmz6[12] = L1du07; +assign Slzmz6[13] = Y3du07; +assign Wp67z6 = (!Y3du07); +assign Rjzmz6[13] = Y5du07; +assign Slzmz6[14] = L8du07; +assign Op67z6 = (!L8du07); +assign Rjzmz6[14] = Ladu07; +assign Slzmz6[15] = Ycdu07; +assign Gp67z6 = (!Ycdu07); +assign Rjzmz6[15] = Yedu07; +assign Slzmz6[16] = Lhdu07; +assign Yo67z6 = (!Lhdu07); +assign Rjzmz6[16] = Ljdu07; +assign Slzmz6[17] = Yldu07; +assign Qo67z6 = (!Yldu07); +assign Rjzmz6[17] = Yndu07; +assign Slzmz6[18] = Lqdu07; +assign Io67z6 = (!Lqdu07); +assign Rjzmz6[18] = Lsdu07; +assign Slzmz6[19] = Yudu07; +assign Ao67z6 = (!Yudu07); +assign Rjzmz6[19] = Ywdu07; +assign Slzmz6[20] = Lzdu07; +assign Rjzmz6[20] = L1eu07; +assign Slzmz6[21] = Y3eu07; +assign Sn67z6 = (!Y3eu07); +assign Rjzmz6[21] = Y5eu07; +assign Slzmz6[22] = L8eu07; +assign Kn67z6 = (!L8eu07); +assign Rjzmz6[22] = Laeu07; +assign Slzmz6[23] = Yceu07; +assign Cn67z6 = (!Yceu07); +assign Rjzmz6[23] = Yeeu07; +assign Slzmz6[24] = Lheu07; +assign Um67z6 = (!Lheu07); +assign Rjzmz6[24] = Ljeu07; +assign Slzmz6[25] = Yleu07; +assign Mm67z6 = (!Yleu07); +assign Rjzmz6[25] = Yneu07; +assign Slzmz6[26] = Lqeu07; +assign Em67z6 = (!Lqeu07); +assign Rjzmz6[26] = Lseu07; +assign Slzmz6[27] = Yueu07; +assign Wl67z6 = (!Yueu07); +assign Rjzmz6[27] = Yweu07; +assign Slzmz6[28] = Lzeu07; +assign Ol67z6 = (!Lzeu07); +assign Rjzmz6[28] = L1fu07; +assign Slzmz6[29] = Y3fu07; +assign Gl67z6 = (!Y3fu07); +assign Rjzmz6[29] = Y5fu07; +assign Slzmz6[30] = L8fu07; +assign Yk67z6 = (!L8fu07); +assign Rjzmz6[30] = Lafu07; +assign Rjzmz6[31] = Ycfu07; +assign Hk5ft6 = Lffu07; +assign Mi5ft6 = Mhfu07; +assign Kg5ft6 = Ljfu07; +assign Lfp7z6[3] = Rlfu07; +assign Zdp7z6[3] = Rnfu07; +assign Iwymz6[3] = Zpfu07; +assign A05ft6 = Bsfu07; +assign Po4ft6 = Cufu07; +assign J95ft6 = Dwfu07; +assign O75ft6 = Eyfu07; +assign Lfp7z6[2] = D0gu07; +assign Zdp7z6[2] = D2gu07; +assign Iwymz6[2] = L4gu07; +assign Jqj7z6[3] = N6gu07; +assign Cmbdt6 = O9gu07; +assign LOCKUP = Pbgu07; +assign Mhh7v6 = (!Pbgu07); +assign Ac77z6 = Ndgu07; +assign Qjh7v6 = (!Ofgu07); +assign W1a7v6 = Uhgu07; +assign Pqddt6 = Akgu07; +assign Loddt6 = Imgu07; +assign H1j7z6[8] = Qogu07; +assign H56ft6 = Uqgu07; +assign Ies7z6[8] = Xsgu07; +assign T077v6 = Wugu07; +assign Q4c7v6 = Vwgu07; +assign Ro87v6 = Azgu07; +assign Oob7v6 = D1hu07; +assign Qxb7v6 = E3hu07; +assign P3zmz6[8] = H5hu07; +assign P3zmz6[9] = K7hu07; +assign P3zmz6[10] = N9hu07; +assign P3zmz6[11] = Rbhu07; +assign P3zmz6[12] = Vdhu07; +assign P3zmz6[13] = Zfhu07; +assign P3zmz6[14] = Dihu07; +assign P3zmz6[15] = Hkhu07; +assign P3zmz6[16] = Lmhu07; +assign P3zmz6[17] = Pohu07; +assign P3zmz6[18] = Tqhu07; +assign P3zmz6[19] = Xshu07; +assign P3zmz6[20] = Bvhu07; +assign P3zmz6[21] = Fxhu07; +assign P3zmz6[22] = Jzhu07; +assign P3zmz6[23] = N1iu07; +assign P3zmz6[24] = R3iu07; +assign P3zmz6[25] = V5iu07; +assign P3zmz6[26] = Z7iu07; +assign P3zmz6[27] = Daiu07; +assign P3zmz6[28] = Hciu07; +assign P3zmz6[29] = Leiu07; +assign P3zmz6[30] = Pgiu07; +assign P3zmz6[31] = Tiiu07; +assign Jezmz6[15] = Xkiu07; +assign Jezmz6[23] = Fniu07; +assign Jezmz6[31] = Npiu07; +assign P3zmz6[7] = Vriu07; +assign Jezmz6[10] = Ytiu07; +assign Jezmz6[11] = Gwiu07; +assign Jezmz6[12] = Oyiu07; +assign Jezmz6[13] = W0ju07; +assign Jezmz6[16] = E3ju07; +assign Jezmz6[17] = M5ju07; +assign Jezmz6[18] = U7ju07; +assign Jezmz6[19] = Caju07; +assign Jezmz6[20] = Kcju07; +assign Jezmz6[21] = Seju07; +assign Jezmz6[24] = Ahju07; +assign Jezmz6[25] = Ijju07; +assign Jezmz6[26] = Qlju07; +assign Jezmz6[27] = Ynju07; +assign Jezmz6[28] = Gqju07; +assign Jezmz6[29] = Osju07; +assign Jezmz6[34] = Wuju07; +assign Jezmz6[35] = Exju07; +assign Jezmz6[8] = Mzju07; +assign Jezmz6[9] = T1ku07; +assign Sgymz6[5] = A4ku07; +assign Ojymz6[5] = J6ku07; +assign Biymz6[8] = A9ku07; +assign Ruymz6[8] = Ibku07; +assign Uh77v6 = Gdku07; +assign Ruymz6[15] = Afku07; +assign Ruymz6[0] = Zgku07; +assign Ruymz6[1] = Xiku07; +assign Ruymz6[2] = Vkku07; +assign Ruymz6[3] = Tmku07; +assign Ruymz6[4] = Roku07; +assign Ruymz6[5] = Pqku07; +assign Ruymz6[6] = Nsku07; +assign Ruymz6[7] = Luku07; +assign Ruymz6[9] = Jwku07; +assign Ruymz6[10] = Hyku07; +assign Ruymz6[11] = G0lu07; +assign Ruymz6[12] = F2lu07; +assign Ruymz6[13] = E4lu07; +assign Ruymz6[14] = D6lu07; +assign Unymz6[5] = C8lu07; +assign Bwi7z6[8] = Ualu07; +assign Bzi7z6[8] = Qclu07; +assign Wui7z6[8] = Pelu07; +assign Dri7z6[8] = Qglu07; +assign Ohj7z6[40] = Qilu07; +assign Ohj7z6[8] = Tklu07; +assign Rbk7z6[6] = Vmlu07; +assign Dfk7z6[8] = Hqlu07; +assign Zlk7z6[6] = Stlu07; +assign Lpk7z6[8] = Exlu07; +assign Hwk7z6[6] = P0mu07; +assign Tzk7z6[8] = B4mu07; +assign P6l7z6[6] = M7mu07; +assign Bal7z6[8] = Yamu07; +assign Xgl7z6[6] = Jemu07; +assign Jkl7z6[8] = Vhmu07; +assign Frl7z6[6] = Glmu07; +assign Rul7z6[8] = Somu07; +assign N1m7z6[6] = Dsmu07; +assign Z4m7z6[8] = Pvmu07; +assign Vbm7z6[6] = Azmu07; +assign Hfm7z6[8] = M2nu07; +assign Pk1nz6[8] = X5nu07; +assign Qti7z6[8] = U7nu07; +assign Sctet6 = W9nu07; +assign W3p7z6[8] = Mbnu07; +assign T2p7z6[8] = Bdnu07; +assign A0p7z6[6] = Qenu07; +assign Hxo7z6[6] = Fgnu07; +assign Ouo7z6[6] = Uhnu07; +assign Vro7z6[6] = Jjnu07; +assign Nqo7z6[6] = Yknu07; +assign Fpo7z6[6] = Nmnu07; +assign K1i7z6[8] = Conu07; +assign vis_psp_o[7] = Frnu07; +assign K1i7z6[7] = Wtnu07; +assign Fhc7z6[7] = Ee9917; +assign Dvc7z6[7] = Ng9917; +assign vis_psp_o[6] = Sj9917; +assign K1i7z6[6] = Jm9917; +assign Fhc7z6[6] = Mp9917; +assign Dvc7z6[6] = Vr9917; +assign Ppb7z6[6] = Av9917; +assign vis_psp_o[4] = Ix9917; +assign E3c7z6[4] = Zz9917; +assign vis_psp_o[3] = I2a917; +assign K1i7z6[3] = Z4a917; +assign E3c7z6[3] = C8a917; +assign Qmb7z6[1] = Laa917; +assign Qmb7z6[3] = Hda917; +assign Qmb7z6[5] = Dga917; +assign Qmb7z6[6] = Zia917; +assign Qmb7z6[7] = Vla917; +assign Qmb7z6[0] = Roa917; +assign Ykcet6 = Nra917; +assign E1cet6 = Mta917; +assign H1j7z6[16] = Mva917; +assign A0j7z6[16] = Rxa917; +assign A0j7z6[0] = Vza917; +assign M5bdt6 = Y1b917; +assign Jqj7z6[8] = W3b917; +assign Macet6 = X6b917; +assign A0j7z6[1] = A9b917; +assign A0j7z6[2] = Dbb917; +assign A0j7z6[3] = Gdb917; +assign A0j7z6[4] = Jfb917; +assign A0j7z6[5] = Mhb917; +assign A0j7z6[6] = Pjb917; +assign A0j7z6[7] = Slb917; +assign A0j7z6[8] = Vnb917; +assign A0j7z6[9] = Ypb917; +assign A0j7z6[10] = Bsb917; +assign A0j7z6[11] = Fub917; +assign A0j7z6[12] = Jwb917; +assign A0j7z6[13] = Nyb917; +assign A0j7z6[14] = R0c917; +assign A0j7z6[15] = V2c917; +assign A0j7z6[17] = Z4c917; +assign A0j7z6[18] = D7c917; +assign A0j7z6[19] = H9c917; +assign A0j7z6[20] = Lbc917; +assign A0j7z6[21] = Pdc917; +assign A0j7z6[22] = Tfc917; +assign A0j7z6[23] = Xhc917; +assign Mqb7z6[0] = Bkc917; +assign Ies7z6[16] = Slc917; +assign Bfymz6[0] = Rnc917; +assign Sgymz6[10] = Mpc917; +assign Ojymz6[10] = Vrc917; +assign Blymz6[0] = Muc917; +assign Tn77v6 = Uwc917; +assign Unymz6[10] = Vyc917; +assign Fjd7v6 = N1d917; +assign Hcymz6[1] = C4d917; +assign Hcymz6[2] = R6d917; +assign Hcymz6[3] = G9d917; +assign G7bdt6 = Vbd917; +assign Nob7z6[0] = Ydd917; +assign Tjr7z6[2] = Dgd917; +assign Yhzmz6[0] = Nid917; +assign Nob7z6[7] = Rkd917; +assign Tjr7z6[9] = Wmd917; +assign Zxymz6[7] = Gpd917; +assign Pazmz6[7] = Krd917; +assign Nob7z6[6] = Rtd917; +assign Tjr7z6[8] = Wvd917; +assign Zxymz6[6] = Gyd917; +assign Pazmz6[6] = K0e917; +assign Nob7z6[5] = R2e917; +assign G5j7z6[32] = W4e917; +assign M6j7z6[32] = V7e917; +assign G5j7z6[0] = Uae917; +assign M6j7z6[0] = Sde917; +assign G5j7z6[16] = Qge917; +assign M6j7z6[16] = Pje917; +assign Tjr7z6[7] = Ome917; +assign Zxymz6[5] = Yoe917; +assign Pazmz6[5] = Cre917; +assign Nob7z6[3] = Jte917; +assign Tjr7z6[5] = Ove917; +assign Yhzmz6[3] = Yxe917; +assign Nob7z6[1] = C0f917; +assign G5j7z6[44] = H2f917; +assign M6j7z6[44] = G5f917; +assign G5j7z6[28] = F8f917; +assign M6j7z6[28] = Ebf917; +assign G5j7z6[12] = Def917; +assign M6j7z6[12] = Chf917; +assign Z3j7z6[8] = Bkf917; +assign Bxi7z6[4] = Zmf917; +assign G5j7z6[35] = Wof917; +assign M6j7z6[35] = Vrf917; +assign G5j7z6[19] = Uuf917; +assign M6j7z6[19] = Txf917; +assign G5j7z6[3] = S0g917; +assign M6j7z6[3] = R3g917; +assign G5j7z6[43] = Q6g917; +assign M6j7z6[43] = P9g917; +assign G5j7z6[27] = Ocg917; +assign M6j7z6[27] = Nfg917; +assign G5j7z6[11] = Mig917; +assign M6j7z6[11] = Llg917; +assign G5j7z6[31] = Kog917; +assign M6j7z6[31] = Jrg917; +assign G5j7z6[15] = Iug917; +assign Z3j7z6[11] = Hxg917; +assign Zfcet6 = F0h917; +assign G5j7z6[46] = D3h917; +assign M6j7z6[46] = C6h917; +assign G5j7z6[14] = B9h917; +assign M6j7z6[14] = Ach917; +assign G5j7z6[30] = Zeh917; +assign M6j7z6[30] = Yhh917; +assign G5j7z6[33] = Xkh917; +assign M6j7z6[33] = Wnh917; +assign G5j7z6[17] = Vqh917; +assign M6j7z6[17] = Uth917; +assign G5j7z6[1] = Twh917; +assign M6j7z6[1] = Szh917; +assign G5j7z6[41] = R2i917; +assign M6j7z6[41] = Q5i917; +assign G5j7z6[25] = P8i917; +assign M6j7z6[25] = Obi917; +assign G5j7z6[9] = Nei917; +assign M6j7z6[9] = Mhi917; +assign G5j7z6[61] = Lki917; +assign M6j7z6[61] = Kni917; +assign G5j7z6[13] = Jqi917; +assign M6j7z6[13] = Iti917; +assign G5j7z6[29] = Hwi917; +assign M6j7z6[29] = Gzi917; +assign G5j7z6[45] = F2j917; +assign M6j7z6[45] = E5j917; +assign Tjr7z6[3] = D8j917; +assign Yhzmz6[1] = Naj917; +assign G5j7z6[47] = Rcj917; +assign M6j7z6[47] = Qfj917; +assign G5j7z6[62] = Pij917; +assign M6j7z6[62] = Olj917; +assign X3get6 = Noj917; +assign SYSRESETREQ = Lrj917; +assign Hsi7z6[2] = Qtj917; +assign Hsi7z6[1] = Vvj917; +assign Hsi7z6[0] = Ayj917; +assign Dri7z6[16] = F0k917; +assign Ohj7z6[16] = G2k917; +assign Ohj7z6[48] = J4k917; +assign Bwi7z6[16] = M6k917; +assign Rbk7z6[14] = J8k917; +assign Dfk7z6[16] = Bck917; +assign Zlk7z6[14] = Nfk917; +assign Lpk7z6[16] = Fjk917; +assign Hwk7z6[14] = Rmk917; +assign Tzk7z6[16] = Jqk917; +assign P6l7z6[14] = Vtk917; +assign Bal7z6[16] = Nxk917; +assign Xgl7z6[14] = Z0l917; +assign Jkl7z6[16] = R4l917; +assign Frl7z6[14] = D8l917; +assign Rul7z6[16] = Vbl917; +assign N1m7z6[14] = Hfl917; +assign Z4m7z6[16] = Zil917; +assign Vbm7z6[14] = Lml917; +assign Hfm7z6[16] = Dql917; +assign Pnb7z6[16] = Ptl917; +assign Dvc7z6[16] = Svl917; +assign Kwset6 = Yyl917; +assign W3p7z6[16] = P0m917; +assign T2p7z6[16] = F2m917; +assign A0p7z6[14] = V3m917; +assign Hxo7z6[14] = L5m917; +assign Ouo7z6[14] = B7m917; +assign Vro7z6[14] = R8m917; +assign Nqo7z6[14] = Ham917; +assign Fpo7z6[14] = Xbm917; +assign Bzi7z6[16] = Ndm917; +assign Wui7z6[16] = Nfm917; +assign Iynet6 = Phm917; +assign Bxi7z6[3] = Ikm917; +assign Lgj7z6[8] = Emm917; +assign Lgj7z6[20] = Hom917; +assign Lgj7z6[32] = Lqm917; +assign Lgj7z6[44] = Psm917; +assign Lgj7z6[56] = Tum917; +assign Lgj7z6[68] = Xwm917; +assign Lgj7z6[80] = Bzm917; +assign Lgj7z6[92] = F1n917; +assign Lgj7z6[104] = J3n917; +assign Lgj7z6[116] = O5n917; +assign Lgj7z6[128] = T7n917; +assign Lgj7z6[140] = Y9n917; +assign Lgj7z6[152] = Dcn917; +assign Lgj7z6[164] = Ien917; +assign Lgj7z6[176] = Ngn917; +assign Lgj7z6[188] = Sin917; +assign Ohj7z6[23] = Xkn917; +assign Ohj7z6[55] = Ann917; +assign Dri7z6[23] = Dpn917; +assign Bwi7z6[23] = Ern917; +assign Dfk7z6[23] = Btn917; +assign Mm77z6 = (!Nwn917); +assign Em77z6 = (!Zzn917); +assign Wl77z6 = (!L3o917); +assign Jkl7z6[23] = X6o917; +assign Ol77z6 = (!Jao917); +assign Gl77z6 = (!Vdo917); +assign Yk77z6 = (!Hho917); +assign U9p7z6[23] = Tko917; +assign U9p7z6[0] = Vmo917; +assign U9p7z6[1] = Woo917; +assign U9p7z6[2] = Xqo917; +assign U9p7z6[3] = Yso917; +assign U9p7z6[4] = Zuo917; +assign U9p7z6[5] = Axo917; +assign U9p7z6[6] = Bzo917; +assign U9p7z6[7] = C1p917; +assign U9p7z6[8] = D3p917; +assign U9p7z6[9] = E5p917; +assign U9p7z6[10] = F7p917; +assign Gy2ft6 = H9p917; +assign W3q7z6[0] = Nbp917; +assign W3q7z6[1] = Udp917; +assign W3q7z6[2] = Bgp917; +assign W3q7z6[3] = Iip917; +assign V1s7z6[5] = Pkp917; +assign Cu5ft6 = Dnp917; +assign Gqr7z6[31] = Spp917; +assign Gqr7z6[30] = Bsp917; +assign Gqr7z6[29] = Kup917; +assign Gqr7z6[28] = Twp917; +assign Gqr7z6[27] = Czp917; +assign Gqr7z6[26] = L1q917; +assign Gqr7z6[25] = U3q917; +assign Gqr7z6[24] = D6q917; +assign Gqr7z6[23] = M8q917; +assign Gqr7z6[22] = Vaq917; +assign Gqr7z6[21] = Edq917; +assign Gqr7z6[20] = Nfq917; +assign Gqr7z6[19] = Whq917; +assign Gqr7z6[18] = Fkq917; +assign Gqr7z6[17] = Omq917; +assign Gqr7z6[16] = Xoq917; +assign Gqr7z6[15] = Grq917; +assign Gqr7z6[14] = Ptq917; +assign Gqr7z6[13] = Yvq917; +assign Gqr7z6[12] = Hyq917; +assign Gqr7z6[11] = Q0r917; +assign Gqr7z6[10] = Z2r917; +assign Gqr7z6[9] = I5r917; +assign Gqr7z6[8] = Q7r917; +assign Gqr7z6[7] = Y9r917; +assign Gqr7z6[6] = Gcr917; +assign Gqr7z6[5] = Oer917; +assign Gqr7z6[4] = Wgr917; +assign Gqr7z6[3] = Ejr917; +assign Gqr7z6[2] = Mlr917; +assign Gqr7z6[1] = Unr917; +assign U9p7z6[11] = Cqr917; +assign U9p7z6[12] = Esr917; +assign U9p7z6[13] = Gur917; +assign U9p7z6[14] = Iwr917; +assign U9p7z6[15] = Kyr917; +assign U9p7z6[16] = M0s917; +assign U9p7z6[17] = O2s917; +assign U9p7z6[18] = Q4s917; +assign U9p7z6[19] = S6s917; +assign U9p7z6[20] = U8s917; +assign U9p7z6[21] = Was917; +assign U9p7z6[22] = Ycs917; +assign U9p7z6[25] = Afs917; +assign U9p7z6[26] = Chs917; +assign U9p7z6[27] = Ejs917; +assign U9p7z6[28] = Gls917; +assign Hu2ft6 = Ins917; +assign Txadt6 = Lps917; +assign Ur37v6 = Krs917; +assign I96ft6 = Ats917; +assign X9s7z6[16] = Tus917; +assign X9s7z6[11] = Qws917; +assign X9s7z6[10] = Nys917; +assign X9s7z6[8] = K0t917; +assign X9s7z6[7] = G2t917; +assign X9s7z6[6] = C4t917; +assign X9s7z6[5] = Y5t917; +assign X9s7z6[4] = U7t917; +assign X9s7z6[3] = Q9t917; +assign X9s7z6[1] = Mbt917; +assign X9s7z6[22] = Idt917; +assign X9s7z6[23] = Fft917; +assign X9s7z6[24] = Cht917; +assign X9s7z6[0] = Zit917; +assign G1e7v6 = Vkt917; +assign Cmg7v6 = Tmt917; +assign L9e7v6 = Ipt917; +assign I6e7v6 = Xrt917; +assign Iyf7v6 = Qtt917; +assign Ekh7v6 = (!Bwt917); +assign Xre7v6 = Myt917; +assign Md1nz6[2] = K0u917; +assign X7g7v6 = X2u917; +assign Lj1nz6[2] = N5u917; +assign Md1nz6[1] = D8u917; +assign L5g7v6 = Qau917; +assign Fah7v6 = (!Gdu917); +assign Md1nz6[0] = Wfu917; +assign Z2g7v6 = Jiu917; +assign Lj1nz6[0] = Zku917; +assign F2f7v6 = Pnu917; +assign J7f7v6 = Opu917; +assign B5e7v6 = Mru917; +assign P0g7v6 = Ktu917; +assign Lkh7v6 = (!Yvu917); +assign Xzd7v6 = Myu917; +assign Nog7v6 = N0v917; +assign M8e7v6 = F3v917; +assign T5f7v6 = X5v917; +assign Od77z6 = (!R7v917); +assign Qa2nz6[1] = J9v917; +assign Yb1nz6[2] = Ebv917; +assign Hfg7v6 = Rdv917; +assign Hi1nz6[2] = Hgv917; +assign Yb1nz6[1] = Xiv917; +assign Vcg7v6 = Klv917; +assign Y9h7v6 = (!Aov917); +assign Yb1nz6[0] = Qqv917; +assign Jag7v6 = Dtv917; +assign Hi1nz6[0] = Tvv917; +assign Mwf7v6 = Jyv917; +assign Ctf7v6 = J0w917; +assign Qk77z6 = (!G2w917); +assign Kf2nz6[0] = G4w917; +assign Kf2nz6[1] = D6w917; +assign Kf2nz6[2] = A8w917; +assign D92nz6[0] = X9w917; +assign Ec2nz6[0] = Rbw917; +assign Ec2nz6[1] = Ndw917; +assign Ec2nz6[2] = Jfw917; +assign Ec2nz6[3] = Fhw917; +assign Dxe7v6 = Bjw917; +assign D92nz6[1] = Ykw917; +assign Kve7v6 = Smw917; +assign T32nz6[0] = Pow917; +assign T32nz6[1] = Qqw917; +assign T32nz6[2] = Rsw917; +assign T32nz6[3] = Suw917; +assign Qa2nz6[0] = Tww917; +assign Ah2nz6[0] = Oyw917; +assign Ah2nz6[1] = O0x917; +assign Ah2nz6[2] = O2x917; +assign M2e7v6 = O4x917; +assign Vjg7v6 = T6x917; +assign Hbe7v6 = E9x917; +assign Ak6ft6 = Pbx917; +assign Id6ft6 = Mdx917; +assign Vis7z6[3] = Efx917; +assign Vis7z6[2] = Dhx917; +assign Vis7z6[1] = Cjx917; +assign Vis7z6[0] = Blx917; +assign Vis7z6[4] = Anx917; +assign A4f7v6 = Zox917; +assign R0f7v6 = Wqx917; +assign Ik77z6 = (!Osx917); +assign U9p7z6[29] = Jux917; +assign U9p7z6[30] = Lwx917; +assign U9p7z6[31] = Nyx917; +assign Pnb7z6[23] = P0y917; +assign Dvc7z6[23] = S2y917; +assign Diset6 = Y5y917; +assign W3p7z6[23] = P7y917; +assign T2p7z6[23] = F9y917; +assign A0p7z6[21] = Vay917; +assign Hxo7z6[21] = Lcy917; +assign Ouo7z6[21] = Bey917; +assign Vro7z6[21] = Rfy917; +assign Nqo7z6[21] = Hhy917; +assign Fpo7z6[21] = Xiy917; +assign Wui7z6[23] = Nky917; +assign X9s7z6[31] = Pmy917; +assign Coxmz6[31] = Moy917; +assign Krxmz6[31] = Hqy917; +assign TDO = Zry917; +assign Pmh7v6 = (!Lty917); +assign Sk4ft6 = Ovy917; +assign M55ft6 = Uxy917; +assign Wlr7z6[1] = A0z917; +assign Wlr7z6[2] = N2z917; +assign Wlr7z6[3] = A5z917; +assign Wlr7z6[5] = N7z917; +assign Wlr7z6[6] = Aaz917; +assign Wlr7z6[8] = Ncz917; +assign Wlr7z6[9] = Afz917; +assign Wlr7z6[10] = Nhz917; +assign Wlr7z6[11] = Bkz917; +assign Wlr7z6[13] = Pmz917; +assign Wlr7z6[14] = Dpz917; +assign Wlr7z6[16] = Rrz917; +assign Wlr7z6[17] = Fuz917; +assign Wlr7z6[18] = Twz917; +assign Wlr7z6[19] = Hzz917; +assign Wlr7z6[21] = V10a17; +assign Wlr7z6[22] = J40a17; +assign Wlr7z6[24] = X60a17; +assign Wlr7z6[25] = L90a17; +assign Wlr7z6[26] = Zb0a17; +assign Wlr7z6[27] = Ne0a17; +assign Wlr7z6[29] = Bh0a17; +assign Wlr7z6[30] = Pj0a17; +assign Dfr7z6[0] = Dm0a17; +assign Dfr7z6[1] = Qo0a17; +assign Vr5ft6 = Dr0a17; +assign Xcr7z6[0] = Ot0a17; +assign Xcr7z6[1] = Bw0a17; +assign Wlr7z6[0] = Oy0a17; +assign J5n7z6[1] = B11a17; +assign BRCHSTAT[3] = R31a17; +assign Byc7z6[28] = N61a17; +assign Jexmz6[28] = R91a17; +assign Wlr7z6[28] = Jb1a17; +assign Wlr7z6[20] = Xd1a17; +assign Wlr7z6[12] = Lg1a17; +assign Wlr7z6[4] = Zi1a17; +assign K1i7z6[4] = Ml1a17; +assign G5j7z6[49] = Po1a17; +assign M6j7z6[49] = Or1a17; +assign G5j7z6[51] = Nu1a17; +assign M6j7z6[51] = Mx1a17; +assign G5j7z6[57] = L02a17; +assign M6j7z6[57] = K32a17; +assign G5j7z6[59] = J62a17; +assign M6j7z6[59] = I92a17; +assign G5j7z6[63] = Hc2a17; +assign K1i7z6[16] = Gf2a17; +assign G5j7z6[56] = Ki2a17; +assign M6j7z6[56] = Jl2a17; +assign G5j7z6[40] = Io2a17; +assign M6j7z6[40] = Hr2a17; +assign G5j7z6[24] = Gu2a17; +assign M6j7z6[24] = Fx2a17; +assign G5j7z6[8] = E03a17; +assign M6j7z6[8] = D33a17; +assign G5j7z6[50] = C63a17; +assign M6j7z6[50] = B93a17; +assign G5j7z6[34] = Ac3a17; +assign M6j7z6[34] = Ze3a17; +assign G5j7z6[18] = Yh3a17; +assign M6j7z6[18] = Xk3a17; +assign G5j7z6[2] = Wn3a17; +assign M6j7z6[2] = Vq3a17; +assign G5j7z6[58] = Ut3a17; +assign M6j7z6[58] = Tw3a17; +assign G5j7z6[42] = Sz3a17; +assign M6j7z6[42] = R24a17; +assign G5j7z6[26] = Q54a17; +assign M6j7z6[26] = P84a17; +assign G5j7z6[10] = Ob4a17; +assign M6j7z6[10] = Ne4a17; +assign G5j7z6[52] = Mh4a17; +assign M6j7z6[52] = Lk4a17; +assign G5j7z6[36] = Kn4a17; +assign M6j7z6[36] = Jq4a17; +assign G5j7z6[20] = It4a17; +assign M6j7z6[20] = Hw4a17; +assign G5j7z6[4] = Gz4a17; +assign M6j7z6[4] = F25a17; +assign Z3j7z6[0] = E55a17; +assign G5j7z6[53] = C85a17; +assign M6j7z6[53] = Bb5a17; +assign G5j7z6[37] = Ae5a17; +assign M6j7z6[37] = Zg5a17; +assign G5j7z6[5] = Yj5a17; +assign G5j7z6[21] = Xm5a17; +assign M6j7z6[21] = Wp5a17; +assign G5j7z6[54] = Vs5a17; +assign M6j7z6[54] = Uv5a17; +assign G5j7z6[38] = Ty5a17; +assign M6j7z6[38] = S16a17; +assign G5j7z6[6] = R46a17; +assign M6j7z6[6] = Q76a17; +assign G5j7z6[22] = Pa6a17; +assign M6j7z6[22] = Od6a17; +assign Z3j7z6[3] = Ng6a17; +assign Z3j7z6[12] = Lj6a17; +assign G5j7z6[55] = Jm6a17; +assign G5j7z6[39] = Ip6a17; +assign M6j7z6[39] = Hs6a17; +assign G5j7z6[23] = Gv6a17; +assign M6j7z6[23] = Fy6a17; +assign Moj7z6[0] = E17a17; +assign G5j7z6[7] = I37a17; +assign M6j7z6[7] = H67a17; +assign Tjr7z6[4] = G97a17; +assign Yhzmz6[2] = Qb7a17; +assign Pazmz6[4] = Ud7a17; +assign Hbb7v6 = Bg7a17; +assign Fgzmz6[1] = Ei7a17; +assign L587v6 = Ik7a17; +assign Ka87v6 = Gm7a17; +assign Gnzmz6[39] = Fo7a17; +assign Gnzmz6[31] = Eq7a17; +assign Gnzmz6[23] = Ds7a17; +assign Gnzmz6[15] = Cu7a17; +assign B987v6 = Bw7a17; +assign De87v6 = Zx7a17; +assign Jezmz6[33] = Tz7a17; +assign Ztb7v6 = B28a17; +assign Cdb7v6 = A48a17; +assign Xfd7v6 = O68a17; +assign E11nz6[0] = O88a17; +assign E11nz6[1] = Ma8a17; +assign E11nz6[2] = Kc8a17; +assign E11nz6[3] = Ie8a17; +assign E11nz6[4] = Gg8a17; +assign Uu0nz6[3] = Ei8a17; +assign Uu0nz6[2] = Ck8a17; +assign Uu0nz6[0] = Am8a17; +assign Uu0nz6[1] = Yn8a17; +assign R21nz6[0] = Wp8a17; +assign T51nz6[0] = Nr8a17; +assign R21nz6[1] = Mt8a17; +assign T51nz6[1] = Dv8a17; +assign Jezmz6[32] = Cx8a17; +assign Zt67v6 = Kz8a17; +assign T51nz6[2] = M19a17; +assign Vm0nz6[3] = L39a17; +assign Vm0nz6[6] = I59a17; +assign Lo0nz6[3] = F79a17; +assign Lo0nz6[6] = C99a17; +assign R21nz6[2] = Za9a17; +assign Ttzmz6[0] = Qc9a17; +assign Jvzmz6[0] = Ne9a17; +assign Zwzmz6[0] = Kg9a17; +assign Dd0nz6[0] = Hi9a17; +assign Te0nz6[0] = Ek9a17; +assign Jg0nz6[0] = Bm9a17; +assign L30nz6[0] = Yn9a17; +assign B50nz6[0] = Vp9a17; +assign R60nz6[0] = Sr9a17; +assign Vm0nz6[0] = Pt9a17; +assign Lo0nz6[0] = Mv9a17; +assign Bq0nz6[0] = Jx9a17; +assign Pazmz6[3] = Gz9a17; +assign Pazmz6[0] = N1aa17; +assign Pazmz6[1] = U3aa17; +assign Xozmz6[2] = B6aa17; +assign Nqzmz6[2] = Y7aa17; +assign Dszmz6[2] = V9aa17; +assign H80nz6[2] = Sbaa17; +assign X90nz6[2] = Pdaa17; +assign Nb0nz6[2] = Mfaa17; +assign Ttzmz6[2] = Jhaa17; +assign Jvzmz6[2] = Gjaa17; +assign Zwzmz6[2] = Dlaa17; +assign Dd0nz6[2] = Anaa17; +assign Te0nz6[2] = Xoaa17; +assign Jg0nz6[2] = Uqaa17; +assign Pyzmz6[2] = Rsaa17; +assign F00nz6[2] = Ouaa17; +assign V10nz6[2] = Lwaa17; +assign Zh0nz6[2] = Iyaa17; +assign Pj0nz6[2] = F0ba17; +assign Fl0nz6[2] = C2ba17; +assign L30nz6[2] = Z3ba17; +assign B50nz6[2] = W5ba17; +assign R60nz6[2] = T7ba17; +assign Vm0nz6[2] = Q9ba17; +assign Lo0nz6[2] = Nbba17; +assign Bq0nz6[2] = Kdba17; +assign Pazmz6[2] = Hfba17; +assign K1i7z6[10] = Ohba17; +assign X9s7z6[34] = Skba17; +assign K1i7z6[18] = Pmba17; +assign Yr1nz6[2] = Tpba17; +assign Xq1nz6[2] = Rrba17; +assign Ft0nz6[2] = Ptba17; +assign Ft0nz6[3] = Pvba17; +assign Jezmz6[30] = Pxba17; +assign Jezmz6[22] = Xzba17; +assign Jezmz6[14] = F2ca17; +assign Xozmz6[3] = N4ca17; +assign Nqzmz6[3] = K6ca17; +assign Dszmz6[3] = H8ca17; +assign H80nz6[3] = Eaca17; +assign X90nz6[3] = Bcca17; +assign Nb0nz6[3] = Ydca17; +assign Ttzmz6[3] = Vfca17; +assign Jvzmz6[3] = Shca17; +assign Zwzmz6[3] = Pjca17; +assign Dd0nz6[3] = Mlca17; +assign Te0nz6[3] = Jnca17; +assign Jg0nz6[3] = Gpca17; +assign Pyzmz6[3] = Drca17; +assign F00nz6[3] = Atca17; +assign V10nz6[3] = Xuca17; +assign Zh0nz6[3] = Uwca17; +assign Pj0nz6[3] = Ryca17; +assign Fl0nz6[3] = O0da17; +assign L30nz6[3] = L2da17; +assign B50nz6[3] = I4da17; +assign R60nz6[3] = F6da17; +assign Xozmz6[1] = C8da17; +assign Nqzmz6[1] = Z9da17; +assign Dszmz6[1] = Wbda17; +assign H80nz6[1] = Tdda17; +assign X90nz6[1] = Qfda17; +assign Nb0nz6[1] = Nhda17; +assign Ttzmz6[1] = Kjda17; +assign Jvzmz6[1] = Hlda17; +assign Zwzmz6[1] = Enda17; +assign Dd0nz6[1] = Bpda17; +assign Te0nz6[1] = Yqda17; +assign Jg0nz6[1] = Vsda17; +assign Pyzmz6[1] = Suda17; +assign F00nz6[1] = Pwda17; +assign V10nz6[1] = Myda17; +assign Zh0nz6[1] = J0ea17; +assign Pj0nz6[1] = G2ea17; +assign Fl0nz6[1] = D4ea17; +assign L30nz6[1] = A6ea17; +assign B50nz6[1] = X7ea17; +assign R60nz6[1] = U9ea17; +assign Vm0nz6[1] = Rbea17; +assign Lo0nz6[1] = Odea17; +assign Bq0nz6[1] = Lfea17; +assign Wh67z6 = Ihea17; +assign Bv1nz6[1] = Djea17; +assign Au1nz6[1] = Blea17; +assign Zs1nz6[1] = Zmea17; +assign S677v6 = Xoea17; +assign Qch7v6 = (!Xqea17); +assign Byc7z6[9] = Tsea17; +assign Tim7z6[8] = Wvea17; +assign Svn7z6[0] = Kyea17; +assign Svn7z6[2] = J1fa17; +assign Svn7z6[1] = I4fa17; +assign Vbm7z6[4] = H7fa17; +assign Tbq7z6[4] = Uafa17; +assign Tbq7z6[0] = Bdfa17; +assign Tbq7z6[1] = Iffa17; +assign Tbq7z6[2] = Phfa17; +assign Tbq7z6[3] = Wjfa17; +assign Tbq7z6[5] = Dmfa17; +assign Tbq7z6[6] = Kofa17; +assign Tbq7z6[7] = Rqfa17; +assign V1s7z6[4] = Ysfa17; +assign Kfq7z6[4] = Mvfa17; +assign Kfq7z6[1] = Uxfa17; +assign Kfq7z6[2] = C0ga17; +assign Kfq7z6[3] = K2ga17; +assign Kfq7z6[5] = S4ga17; +assign Kfq7z6[6] = A7ga17; +assign Kfq7z6[7] = I9ga17; +assign Pk1nz6[4] = Qbga17; +assign W3p7z6[4] = Ndga17; +assign T2p7z6[4] = Cfga17; +assign A0p7z6[2] = Rgga17; +assign Hxo7z6[2] = Giga17; +assign Ouo7z6[2] = Vjga17; +assign Vro7z6[2] = Klga17; +assign Nqo7z6[2] = Zmga17; +assign Fpo7z6[2] = Ooga17; +assign Pdq7z6[4] = Dqga17; +assign Cjq7z6[4] = Jsga17; +assign X9s7z6[12] = Puga17; +assign Hcymz6[4] = Mwga17; +assign Mi77z6 = Bzga17; +assign L9cdt6 = V0ha17; +assign D6c7z6[4] = V2ha17; +assign D6c7z6[1] = X5ha17; +assign D7hdt6 = Z8ha17; +assign Mpe7z6[5] = Qbha17; +assign Xpgdt6 = Ieha17; +assign Bsgdt6 = Ahha17; +assign Pne7z6[0] = Sjha17; +assign Mpe7z6[2] = Omha17; +assign Mpe7z6[3] = Gpha17; +assign Mpe7z6[4] = Yrha17; +assign Pne7z6[1] = Quha17; +assign Ple7z6[1] = Mxha17; +assign Ple7z6[2] = L0ia17; +assign Ple7z6[3] = K3ia17; +assign Ple7z6[4] = J6ia17; +assign Ple7z6[5] = I9ia17; +assign Ple7z6[6] = Hcia17; +assign Ple7z6[0] = Gfia17; +assign Ple7z6[7] = Fiia17; +assign Yxf7z6[2] = Elia17; +assign Yxf7z6[6] = Ynia17; +assign Yxf7z6[10] = Sqia17; +assign Yxf7z6[14] = Ntia17; +assign Yxf7z6[18] = Iwia17; +assign Yxf7z6[22] = Dzia17; +assign Yxf7z6[26] = Y1ja17; +assign Yxf7z6[30] = T4ja17; +assign Yxf7z6[34] = O7ja17; +assign Alf7z6[24] = Jaja17; +assign Alf7z6[21] = Hdja17; +assign Cngdt6 = Fgja17; +assign Ppb7z6[5] = Ejja17; +assign Kxb7z6[5] = Mlja17; +assign Alf7z6[0] = Vnja17; +assign Alf7z6[1] = Sqja17; +assign Alf7z6[2] = Ptja17; +assign Alf7z6[3] = Mwja17; +assign Alf7z6[4] = Jzja17; +assign Alf7z6[5] = G2ka17; +assign Alf7z6[6] = D5ka17; +assign Alf7z6[7] = A8ka17; +assign Alf7z6[15] = Xaka17; +assign Alf7z6[16] = Vdka17; +assign Alf7z6[8] = Tgka17; +assign Alf7z6[9] = Qjka17; +assign Alf7z6[10] = Nmka17; +assign Alf7z6[11] = Lpka17; +assign Alf7z6[12] = Jska17; +assign Alf7z6[13] = Hvka17; +assign Alf7z6[14] = Fyka17; +assign Alf7z6[17] = D1la17; +assign Alf7z6[18] = B4la17; +assign Alf7z6[19] = Z6la17; +assign Alf7z6[20] = X9la17; +assign Alf7z6[22] = Vcla17; +assign Alf7z6[23] = Tfla17; +assign Alf7z6[25] = Rila17; +assign Alf7z6[26] = Plla17; +assign Alf7z6[27] = Nola17; +assign Alf7z6[30] = Lrla17; +assign Alf7z6[28] = Jula17; +assign Alf7z6[29] = Hxla17; +assign Yxf7z6[1] = F0ma17; +assign Yxf7z6[5] = Z2ma17; +assign Yxf7z6[9] = T5ma17; +assign Yxf7z6[13] = N8ma17; +assign Yxf7z6[17] = Ibma17; +assign Yxf7z6[21] = Dema17; +assign Yxf7z6[25] = Ygma17; +assign Yxf7z6[29] = Tjma17; +assign Yxf7z6[33] = Omma17; +assign Onf7z6[0] = Jpma17; +assign Onf7z6[1] = Gsma17; +assign Onf7z6[2] = Dvma17; +assign Onf7z6[3] = Ayma17; +assign Onf7z6[4] = X0na17; +assign Onf7z6[5] = U3na17; +assign Onf7z6[6] = R6na17; +assign Onf7z6[7] = O9na17; +assign Onf7z6[8] = Lcna17; +assign Onf7z6[9] = Ifna17; +assign Onf7z6[10] = Fina17; +assign Onf7z6[11] = Dlna17; +assign Onf7z6[12] = Bona17; +assign Onf7z6[13] = Zqna17; +assign Onf7z6[14] = Xtna17; +assign Onf7z6[15] = Vwna17; +assign Onf7z6[16] = Tzna17; +assign Onf7z6[17] = R2oa17; +assign Onf7z6[18] = P5oa17; +assign Onf7z6[19] = N8oa17; +assign Onf7z6[20] = Lboa17; +assign Onf7z6[21] = Jeoa17; +assign Onf7z6[22] = Hhoa17; +assign Onf7z6[23] = Fkoa17; +assign Onf7z6[24] = Dnoa17; +assign Onf7z6[25] = Bqoa17; +assign Onf7z6[26] = Zsoa17; +assign Onf7z6[27] = Xvoa17; +assign Onf7z6[28] = Vyoa17; +assign Onf7z6[29] = T1pa17; +assign Fth7z6[5] = R4pa17; +assign Pdc7z6[5] = O7pa17; +assign Dvc7z6[5] = Oapa17; +assign Iufdt6 = Tdpa17; +assign Uyb7z6[1] = Agpa17; +assign Uyb7z6[4] = Kipa17; +assign Uyb7z6[3] = Ukpa17; +assign Uyb7z6[0] = Enpa17; +assign Z3j7z6[1] = Oppa17; +assign Z3j7z6[14] = Mspa17; +assign Wbcet6 = Kvpa17; +assign Efcdt6 = Pxpa17; +assign Fk2ft6 = M0qa17; +assign HTMDHTRANS[0] = O2qa17; +assign Gg2ft6 = G4qa17; +assign Xy5ft6 = I6qa17; +assign Jhr7z6[0] = S8qa17; +assign Jhr7z6[1] = Jbqa17; +assign Cor7z6[0] = Aeqa17; +assign Cor7z6[1] = Lgqa17; +assign Cor7z6[2] = Wiqa17; +assign Cor7z6[3] = Hlqa17; +assign Cor7z6[4] = Snqa17; +assign Cor7z6[5] = Dqqa17; +assign Cor7z6[6] = Osqa17; +assign Cor7z6[7] = Zuqa17; +assign Cor7z6[8] = Kxqa17; +assign Cor7z6[9] = Vzqa17; +assign Cor7z6[10] = G2ra17; +assign Cor7z6[11] = S4ra17; +assign Cor7z6[12] = E7ra17; +assign Cor7z6[13] = Q9ra17; +assign Cor7z6[14] = Ccra17; +assign Cor7z6[15] = Oera17; +assign Cor7z6[16] = Ahra17; +assign Cor7z6[17] = Mjra17; +assign Cor7z6[18] = Ylra17; +assign Cor7z6[19] = Kora17; +assign Cor7z6[20] = Wqra17; +assign Cor7z6[21] = Itra17; +assign Cor7z6[22] = Uvra17; +assign Cor7z6[23] = Gyra17; +assign Cor7z6[24] = S0sa17; +assign Cor7z6[25] = E3sa17; +assign Cor7z6[26] = Q5sa17; +assign Cor7z6[27] = C8sa17; +assign Cor7z6[28] = Oasa17; +assign Cor7z6[29] = Adsa17; +assign Cor7z6[30] = Mfsa17; +assign Cor7z6[31] = Yhsa17; +assign Xwadt6 = Kksa17; +assign Hsr7z6[1] = Rnsa17; +assign P7s7z6[8] = Arsa17; +assign P7s7z6[9] = Tssa17; +assign P7s7z6[10] = Musa17; +assign P7s7z6[11] = Fwsa17; +assign P7s7z6[12] = Yxsa17; +assign P7s7z6[13] = Rzsa17; +assign P7s7z6[14] = K1ta17; +assign P7s7z6[16] = D3ta17; +assign P7s7z6[17] = W4ta17; +assign P7s7z6[18] = P6ta17; +assign P7s7z6[19] = I8ta17; +assign P7s7z6[20] = Cata17; +assign P7s7z6[21] = Wbta17; +assign P7s7z6[22] = Qdta17; +assign P7s7z6[24] = Kfta17; +assign P7s7z6[25] = Ehta17; +assign P7s7z6[26] = Yita17; +assign P7s7z6[27] = Skta17; +assign P7s7z6[28] = Mmta17; +assign P7s7z6[30] = Gota17; +assign Y26ft6 = Aqta17; +assign Jch7v6 = (!Trta17); +assign Gq37v6 = Qtta17; +assign I347v6 = Ivta17; +assign Fbxmz6[3] = Bxta17; +assign Ak77z6 = (!Yyta17); +assign Vcxmz6[0] = Q0ua17; +assign Vcxmz6[47] = L2ua17; +assign Vcxmz6[46] = H4ua17; +assign Vcxmz6[45] = D6ua17; +assign Vcxmz6[44] = Z7ua17; +assign Vcxmz6[43] = V9ua17; +assign Vcxmz6[42] = Rbua17; +assign Vcxmz6[41] = Ndua17; +assign Vcxmz6[40] = Jfua17; +assign Vcxmz6[39] = Fhua17; +assign Vcxmz6[38] = Bjua17; +assign Vcxmz6[37] = Xkua17; +assign Vcxmz6[36] = Tmua17; +assign Vcxmz6[35] = Poua17; +assign Vcxmz6[34] = Lqua17; +assign Vcxmz6[33] = Hsua17; +assign Vcxmz6[32] = Duua17; +assign Vcxmz6[31] = Zvua17; +assign Vcxmz6[30] = Vxua17; +assign Vcxmz6[29] = Rzua17; +assign Vcxmz6[28] = N1va17; +assign Vcxmz6[27] = J3va17; +assign Vcxmz6[26] = F5va17; +assign Vcxmz6[25] = B7va17; +assign Vcxmz6[24] = X8va17; +assign Vcxmz6[23] = Tava17; +assign Vcxmz6[22] = Pcva17; +assign Vcxmz6[21] = Leva17; +assign Vcxmz6[20] = Hgva17; +assign Vcxmz6[19] = Diva17; +assign Vcxmz6[18] = Zjva17; +assign Vcxmz6[17] = Vlva17; +assign Vcxmz6[16] = Rnva17; +assign Vcxmz6[15] = Npva17; +assign Vcxmz6[14] = Jrva17; +assign Vcxmz6[13] = Ftva17; +assign Vcxmz6[12] = Bvva17; +assign Vcxmz6[11] = Xwva17; +assign Vcxmz6[10] = Tyva17; +assign Vcxmz6[9] = P0wa17; +assign Vcxmz6[8] = K2wa17; +assign Vcxmz6[7] = F4wa17; +assign Vcxmz6[6] = A6wa17; +assign Vcxmz6[5] = V7wa17; +assign Vcxmz6[4] = Q9wa17; +assign Vcxmz6[3] = Lbwa17; +assign Vcxmz6[2] = Gdwa17; +assign Vcxmz6[1] = Bfwa17; +assign P647v6 = Wgwa17; +assign O9xmz6[0] = Oiwa17; +assign O9xmz6[2] = Mkwa17; +assign O9xmz6[1] = Kmwa17; +assign Fbxmz6[2] = Iowa17; +assign V147v6 = Fqwa17; +assign Oo1nz6[7] = Wrwa17; +assign Nn1nz6[7] = Utwa17; +assign Mm1nz6[7] = Svwa17; +assign Kh1nz6[7] = Qxwa17; +assign Vs27v6 = Ozwa17; +assign Ixr7z6[1] = K1xa17; +assign Ixr7z6[0] = M4xa17; +assign Uur7z6[1] = O7xa17; +assign Uur7z6[0] = Vaxa17; +assign Nw5ft6 = Cexa17; +assign Hsr7z6[0] = Jhxa17; +assign Enwmz6[0] = Skxa17; +assign Enwmz6[1] = Knxa17; +assign Mgwmz6[8] = Cqxa17; +assign Qiwmz6[8] = Nsxa17; +assign K5xmz6[0] = Yuxa17; +assign K5xmz6[1] = Qxxa17; +assign Sywmz6[8] = I0ya17; +assign W0xmz6[3] = T2ya17; +assign W0xmz6[2] = E5ya17; +assign W0xmz6[0] = P7ya17; +assign W0xmz6[8] = Aaya17; +assign Hwwmz6[0] = Lcya17; +assign Hwwmz6[1] = Dfya17; +assign Ppwmz6[8] = Vhya17; +assign Trwmz6[8] = Gkya17; +assign C4s7z6[0] = Rmya17; +assign Yr1nz6[3] = Vpya17; +assign Xq1nz6[3] = Trya17; +assign Xozmz6[4] = Rtya17; +assign Nqzmz6[4] = Ovya17; +assign Dszmz6[4] = Lxya17; +assign H80nz6[4] = Izya17; +assign X90nz6[4] = F1za17; +assign Nb0nz6[4] = C3za17; +assign Pyzmz6[4] = Z4za17; +assign F00nz6[4] = W6za17; +assign V10nz6[4] = T8za17; +assign Zh0nz6[4] = Qaza17; +assign Pj0nz6[4] = Ncza17; +assign Fl0nz6[4] = Keza17; +assign Ttzmz6[4] = Hgza17; +assign Jvzmz6[4] = Eiza17; +assign Zwzmz6[4] = Bkza17; +assign Dd0nz6[4] = Ylza17; +assign Te0nz6[4] = Vnza17; +assign Jg0nz6[4] = Spza17; +assign L30nz6[4] = Prza17; +assign B50nz6[4] = Mtza17; +assign R60nz6[4] = Jvza17; +assign Vm0nz6[4] = Gxza17; +assign Lo0nz6[4] = Dzza17; +assign Bq0nz6[4] = A10b17; +assign Ui67z6 = X20b17; +assign Au1nz6[4] = S40b17; +assign Zs1nz6[4] = Q60b17; +assign Yr1nz6[4] = O80b17; +assign Xq1nz6[4] = Ma0b17; +assign Xozmz6[6] = Kc0b17; +assign Nqzmz6[6] = He0b17; +assign Dszmz6[6] = Eg0b17; +assign H80nz6[6] = Bi0b17; +assign X90nz6[6] = Yj0b17; +assign Nb0nz6[6] = Vl0b17; +assign Ttzmz6[6] = Sn0b17; +assign Jvzmz6[6] = Pp0b17; +assign Zwzmz6[6] = Mr0b17; +assign Dd0nz6[6] = Jt0b17; +assign Te0nz6[6] = Gv0b17; +assign Jg0nz6[6] = Dx0b17; +assign Pyzmz6[6] = Az0b17; +assign F00nz6[6] = X01b17; +assign V10nz6[6] = U21b17; +assign Zh0nz6[6] = R41b17; +assign Pj0nz6[6] = O61b17; +assign Fl0nz6[6] = L81b17; +assign L30nz6[6] = Ia1b17; +assign B50nz6[6] = Fc1b17; +assign R60nz6[6] = Ce1b17; +assign Xozmz6[7] = Zf1b17; +assign Nqzmz6[7] = Wh1b17; +assign Dszmz6[7] = Tj1b17; +assign H80nz6[7] = Ql1b17; +assign X90nz6[7] = Nn1b17; +assign Nb0nz6[7] = Kp1b17; +assign Ttzmz6[7] = Hr1b17; +assign Jvzmz6[7] = Et1b17; +assign Dd0nz6[7] = Bv1b17; +assign Te0nz6[7] = Yw1b17; +assign Jg0nz6[7] = Vy1b17; +assign Pyzmz6[7] = S02b17; +assign F00nz6[7] = P22b17; +assign V10nz6[7] = M42b17; +assign Zh0nz6[7] = J62b17; +assign Pj0nz6[7] = G82b17; +assign Fl0nz6[7] = Da2b17; +assign L30nz6[7] = Ac2b17; +assign B50nz6[7] = Xd2b17; +assign R60nz6[7] = Uf2b17; +assign Vm0nz6[7] = Rh2b17; +assign Lo0nz6[7] = Oj2b17; +assign Bq0nz6[7] = Ll2b17; +assign Xozmz6[0] = In2b17; +assign Nqzmz6[0] = Fp2b17; +assign Dszmz6[0] = Cr2b17; +assign H80nz6[0] = Zs2b17; +assign X90nz6[0] = Wu2b17; +assign Nb0nz6[0] = Tw2b17; +assign Pyzmz6[0] = Qy2b17; +assign F00nz6[0] = N03b17; +assign V10nz6[0] = K23b17; +assign Zh0nz6[0] = H43b17; +assign Pj0nz6[0] = E63b17; +assign Fl0nz6[0] = B83b17; +assign Xozmz6[5] = Y93b17; +assign Nqzmz6[5] = Vb3b17; +assign Dszmz6[5] = Sd3b17; +assign H80nz6[5] = Pf3b17; +assign X90nz6[5] = Mh3b17; +assign Nb0nz6[5] = Jj3b17; +assign Pyzmz6[5] = Gl3b17; +assign F00nz6[5] = Dn3b17; +assign V10nz6[5] = Ap3b17; +assign Zh0nz6[5] = Xq3b17; +assign Pj0nz6[5] = Us3b17; +assign Fl0nz6[5] = Ru3b17; +assign Ttzmz6[5] = Ow3b17; +assign Jvzmz6[5] = Ly3b17; +assign Zwzmz6[5] = I04b17; +assign Dd0nz6[5] = F24b17; +assign Te0nz6[5] = C44b17; +assign Jg0nz6[5] = Z54b17; +assign L30nz6[5] = W74b17; +assign B50nz6[5] = T94b17; +assign R60nz6[5] = Qb4b17; +assign Vm0nz6[5] = Nd4b17; +assign Lo0nz6[5] = Kf4b17; +assign Bq0nz6[5] = Hh4b17; +assign Cj67z6 = Ej4b17; +assign Au1nz6[5] = Zk4b17; +assign Zs1nz6[5] = Xm4b17; +assign Yr1nz6[5] = Vo4b17; +assign Xq1nz6[5] = Tq4b17; +assign W94ft6 = Rs4b17; +assign Bxi7z6[2] = Pu4b17; +assign Hc2ft6 = Nw4b17; +assign Pnb7z6[24] = Uy4b17; +assign Dvc7z6[24] = X05b17; +assign Cgset6 = D45b17; +assign W3p7z6[24] = U55b17; +assign T2p7z6[24] = K75b17; +assign A0p7z6[22] = A95b17; +assign Hxo7z6[22] = Qa5b17; +assign Ouo7z6[22] = Gc5b17; +assign Vro7z6[22] = Wd5b17; +assign Nqo7z6[22] = Mf5b17; +assign Fpo7z6[22] = Ch5b17; +assign Bzi7z6[24] = Si5b17; +assign Wui7z6[24] = Sk5b17; +assign X9s7z6[32] = Um5b17; +assign K0wmz6[0] = Ro5b17; +assign Gyvmz6[0] = Cr5b17; +assign J7wmz6[0] = Nt5b17; +assign Qiwmz6[0] = Yv5b17; +assign Mgwmz6[0] = Jy5b17; +assign Trwmz6[0] = U06b17; +assign Ppwmz6[0] = F36b17; +assign E277z6 = (!Q56b17); +assign O177z6 = (!T86b17); +assign J0n7z6[0] = Wb6b17; +assign Pnb7z6[18] = Qe6b17; +assign Dvc7z6[18] = Tg6b17; +assign Isset6 = Zj6b17; +assign W3p7z6[18] = Ql6b17; +assign T2p7z6[18] = Gn6b17; +assign A0p7z6[16] = Wo6b17; +assign Hxo7z6[16] = Mq6b17; +assign Ouo7z6[16] = Cs6b17; +assign Vro7z6[16] = St6b17; +assign Nqo7z6[16] = Iv6b17; +assign Fpo7z6[16] = Yw6b17; +assign X9s7z6[26] = Oy6b17; +assign Pdc7z6[10] = L07b17; +assign Moj7z6[1] = M37b17; +assign Fjb7z6[2] = Q57b17; +assign Fjb7z6[66] = R67b17; +assign Fjb7z6[65] = T77b17; +assign Fjb7z6[4] = V87b17; +assign Fjb7z6[5] = W97b17; +assign Fjb7z6[6] = Xa7b17; +assign Fjb7z6[7] = Yb7b17; +assign Fjb7z6[9] = Zc7b17; +assign Fjb7z6[10] = Yg5m17; +assign Fjb7z6[11] = Ai5m17; +assign Fjb7z6[12] = Cj5m17; +assign Fjb7z6[13] = Ek5m17; +assign Fjb7z6[14] = Gl5m17; +assign Fjb7z6[15] = Im5m17; +assign Fjb7z6[16] = Kn5m17; +assign Fjb7z6[17] = Mo5m17; +assign Fjb7z6[19] = Op5m17; +assign Fjb7z6[20] = Qq5m17; +assign Fjb7z6[21] = Sr5m17; +assign Fjb7z6[22] = Us5m17; +assign Fjb7z6[23] = Wt5m17; +assign Fjb7z6[24] = Yu5m17; +assign Fjb7z6[25] = Aw5m17; +assign Fjb7z6[26] = Cx5m17; +assign Fjb7z6[27] = Ey5m17; +assign Fjb7z6[28] = Gz5m17; +assign Fjb7z6[29] = I06m17; +assign Fjb7z6[30] = K16m17; +assign Fjb7z6[31] = M26m17; +assign Fjb7z6[32] = O36m17; +assign Fjb7z6[33] = Q46m17; +assign Fjb7z6[34] = S56m17; +assign Fjb7z6[35] = U66m17; +assign Fjb7z6[36] = W76m17; +assign Fjb7z6[37] = Y86m17; +assign Fjb7z6[38] = Aa6m17; +assign Fjb7z6[39] = Cb6m17; +assign Fjb7z6[40] = Ec6m17; +assign Fjb7z6[41] = Gd6m17; +assign Fjb7z6[42] = Ie6m17; +assign Fjb7z6[43] = Kf6m17; +assign Fjb7z6[44] = Mg6m17; +assign Fjb7z6[45] = Oh6m17; +assign Fjb7z6[46] = Qi6m17; +assign Fjb7z6[47] = Sj6m17; +assign Fjb7z6[48] = Uk6m17; +assign Fjb7z6[49] = Wl6m17; +assign Fjb7z6[50] = Ym6m17; +assign Fjb7z6[51] = Ao6m17; +assign Fjb7z6[52] = Cp6m17; +assign Fjb7z6[53] = Eq6m17; +assign Fjb7z6[54] = Gr6m17; +assign Fjb7z6[55] = Is6m17; +assign Fjb7z6[56] = Kt6m17; +assign Fjb7z6[57] = Mu6m17; +assign Fjb7z6[59] = Ov6m17; +assign Fjb7z6[60] = Qw6m17; +assign Fjb7z6[61] = Sx6m17; +assign Fjb7z6[62] = Uy6m17; +assign Fjb7z6[63] = Wz6m17; +assign Fjb7z6[64] = Y07m17; +assign Fjb7z6[3] = A27m17; +assign Yr1nz6[7] = B37m17; +assign Xq1nz6[7] = Z47m17; +assign J72nz6[7] = X67m17; +assign Qc77z6 = (!Y87m17); +assign K1i7z6[12] = Fb7m17; +assign K1i7z6[20] = Je7m17; +assign Hhq7z6[3] = Nh7m17; +assign Hhq7z6[2] = Tj7m17; +assign Hhq7z6[1] = Zl7m17; +assign Hhq7z6[0] = Fo7m17; +assign Yr1nz6[6] = Lq7m17; +assign Xq1nz6[6] = Js7m17; +assign Bxi7z6[0] = Hu7m17; +assign Qubet6 = Fw7m17; +assign X9s7z6[15] = Jy7m17; +assign Bv37v6 = G08m17; +assign Xtwmz6[0] = N28m17; +assign Xtwmz6[1] = E58m17; +assign Cnvmz6[0] = V78m17; +assign Cnvmz6[8] = Ka8m17; +assign Kwvmz6[0] = Zc8m17; +assign A3xmz6[0] = Ye8m17; +assign A3xmz6[1] = Ph8m17; +assign Jt37v6 = Gk8m17; +assign Kms7z6[8] = Nm8m17; +assign Kwvmz6[1] = Cp8m17; +assign Kwvmz6[2] = Br8m17; +assign Kwvmz6[3] = At8m17; +assign Kwvmz6[4] = Zu8m17; +assign Tw37v6 = Yw8m17; +assign Ukwmz6[0] = Fz8m17; +assign Ukwmz6[1] = W19m17; +assign Xovmz6[0] = N49m17; +assign Xovmz6[8] = C79m17; +assign D047v6 = R99m17; +assign O2wmz6[0] = Yb9m17; +assign O2wmz6[1] = Pe9m17; +assign Nsvmz6[0] = Gh9m17; +assign Rbwmz6[0] = Vj9m17; +assign Rbwmz6[1] = Mm9m17; +assign N9wmz6[0] = Dp9m17; +assign Sqvmz6[0] = Or9m17; +assign N9wmz6[8] = Du9m17; +assign Sqvmz6[8] = Ow9m17; +assign Vitet6 = Dz9m17; +assign W3p7z6[5] = T0am17; +assign T2p7z6[5] = I2am17; +assign A0p7z6[3] = X3am17; +assign Hxo7z6[3] = M5am17; +assign Ouo7z6[3] = B7am17; +assign Vro7z6[3] = Q8am17; +assign Nqo7z6[3] = Faam17; +assign Fpo7z6[3] = Ubam17; +assign Pdq7z6[5] = Jdam17; +assign Cjq7z6[5] = Pfam17; +assign X9s7z6[13] = Vham17; +assign K1i7z6[21] = Sjam17; +assign X9s7z6[37] = Wmam17; +assign Hhq7z6[7] = Toam17; +assign V1s7z6[1] = Zqam17; +assign Cjq7z6[6] = Ntam17; +assign X9s7z6[14] = Tvam17; +assign K1i7z6[22] = Qxam17; +assign Pdq7z6[7] = U0bm17; +assign V1s7z6[3] = A3bm17; +assign X9s7z6[28] = O5bm17; +assign X9s7z6[20] = L7bm17; +assign W0xmz6[4] = I9bm17; +assign Sywmz6[4] = Tbbm17; +assign Kms7z6[4] = Eebm17; +assign Trwmz6[4] = Tgbm17; +assign Ppwmz6[4] = Ejbm17; +assign Cnvmz6[4] = Plbm17; +assign Qiwmz6[4] = Eobm17; +assign Mgwmz6[4] = Pqbm17; +assign Xovmz6[4] = Atbm17; +assign N9wmz6[4] = Pvbm17; +assign J7wmz6[4] = Aybm17; +assign Sqvmz6[4] = L0cm17; +assign Pdc7z6[20] = A3cm17; +assign Dvc7z6[20] = B6cm17; +assign Kxb7z6[11] = H9cm17; +assign Fth7z6[11] = Rbcm17; +assign X9s7z6[35] = Pecm17; +assign vis_r1_o[31] = Mgcm17; +assign vis_r2_o[31] = Djcm17; +assign vis_r3_o[31] = Ulcm17; +assign vis_r4_o[31] = Locm17; +assign vis_r5_o[31] = Crcm17; +assign vis_r6_o[31] = Ttcm17; +assign vis_r7_o[31] = Kwcm17; +assign vis_r8_o[31] = Bzcm17; +assign vis_r9_o[31] = S1dm17; +assign vis_r10_o[31] = J4dm17; +assign vis_r11_o[31] = B7dm17; +assign vis_r12_o[31] = T9dm17; +assign vis_msp_o[31] = Lcdm17; +assign Pic7z6[31] = Dfdm17; +assign vis_psp_o[31] = Vhdm17; +assign vis_r0_o[31] = Nkdm17; +assign Fjb7z6[1] = Endm17; +assign K1i7z6[9] = Fodm17; +assign X9s7z6[33] = Irdm17; +assign K1i7z6[17] = Ftdm17; +assign Pnb7z6[22] = Jwdm17; +assign Ekset6 = Mydm17; +assign W3p7z6[22] = D0em17; +assign T2p7z6[22] = T1em17; +assign A0p7z6[20] = J3em17; +assign Hxo7z6[20] = Z4em17; +assign Ouo7z6[20] = P6em17; +assign Vro7z6[20] = F8em17; +assign Nqo7z6[20] = V9em17; +assign Fpo7z6[20] = Lbem17; +assign Wui7z6[22] = Bdem17; +assign X9s7z6[30] = Dfem17; +assign W0xmz6[6] = Ahem17; +assign Sywmz6[6] = Ljem17; +assign Kms7z6[6] = Wlem17; +assign Trwmz6[6] = Loem17; +assign Ppwmz6[6] = Wqem17; +assign Cnvmz6[6] = Htem17; +assign Qiwmz6[6] = Wvem17; +assign Mgwmz6[6] = Hyem17; +assign Xovmz6[6] = S0fm17; +assign N9wmz6[6] = H3fm17; +assign J7wmz6[6] = S5fm17; +assign Sqvmz6[6] = D8fm17; +assign Pdc7z6[22] = Safm17; +assign Dvc7z6[22] = Tdfm17; +assign Byc7z6[29] = Zgfm17; +assign Wlr7z6[23] = Dkfm17; +assign Wlr7z6[15] = Rmfm17; +assign Wlr7z6[7] = Fpfm17; +assign W0xmz6[7] = Srfm17; +assign Sywmz6[7] = Dufm17; +assign Kms7z6[7] = Owfm17; +assign Trwmz6[7] = Dzfm17; +assign Ppwmz6[7] = O1gm17; +assign Cnvmz6[7] = Z3gm17; +assign Qiwmz6[7] = O6gm17; +assign Mgwmz6[7] = Z8gm17; +assign Xovmz6[7] = Kbgm17; +assign N9wmz6[7] = Zdgm17; +assign J7wmz6[7] = Kggm17; +assign Sqvmz6[7] = Vigm17; +assign K1i7z6[31] = Klgm17; +assign X9s7z6[9] = Oogm17; +assign K1i7z6[25] = Kqgm17; +assign X9s7z6[17] = Otgm17; +assign Pdc7z6[0] = Lvgm17; +assign Pdc7z6[31] = Lygm17; +assign Fjb7z6[58] = M1hm17; +assign Fjb7z6[18] = O2hm17; +assign Fjb7z6[8] = Q3hm17; +assign X9s7z6[18] = R4hm17; +assign K0wmz6[2] = O6hm17; +assign Gyvmz6[2] = Z8hm17; +assign Nsvmz6[2] = Kbhm17; +assign N9wmz6[2] = Zdhm17; +assign J7wmz6[2] = Kghm17; +assign Sqvmz6[2] = Vihm17; +assign Qiwmz6[2] = Klhm17; +assign Mgwmz6[2] = Vnhm17; +assign Xovmz6[2] = Gqhm17; +assign Trwmz6[2] = Vshm17; +assign Ppwmz6[2] = Gvhm17; +assign Cnvmz6[2] = Rxhm17; +assign Oyh7z6[1] = G0im17; +assign K1i7z6[26] = J3im17; +assign Kh1nz6[2] = N6im17; +assign J72nz6[2] = L8im17; +assign Pnb7z6[19] = Maim17; +assign Dvc7z6[19] = Pcim17; +assign Hqset6 = Vfim17; +assign W3p7z6[19] = Mhim17; +assign T2p7z6[19] = Cjim17; +assign A0p7z6[17] = Skim17; +assign Hxo7z6[17] = Imim17; +assign Ouo7z6[17] = Ynim17; +assign Vro7z6[17] = Opim17; +assign Nqo7z6[17] = Erim17; +assign Fpo7z6[17] = Usim17; +assign X9s7z6[27] = Kuim17; +assign K0wmz6[3] = Hwim17; +assign Gyvmz6[3] = Syim17; +assign Nsvmz6[3] = D1jm17; +assign N9wmz6[3] = S3jm17; +assign J7wmz6[3] = D6jm17; +assign Sqvmz6[3] = O8jm17; +assign Qiwmz6[3] = Dbjm17; +assign Mgwmz6[3] = Odjm17; +assign Xovmz6[3] = Zfjm17; +assign Trwmz6[3] = Oijm17; +assign Ppwmz6[3] = Zkjm17; +assign Cnvmz6[3] = Knjm17; +assign Kh1nz6[3] = Zpjm17; +assign J72nz6[3] = Xrjm17; +assign Pdc7z6[3] = Ytjm17; +assign Dvc7z6[3] = Ywjm17; +assign Byc7z6[24] = D0km17; +assign Xmtet6 = H3km17; +assign Yotet6 = A5km17; +assign Gsb7z6[0] = T6km17; +assign Gsb7z6[1] = M8km17; +assign Ozadt6 = Fakm17; +assign Y9pet6 = Wbkm17; +assign X7pet6 = Pdkm17; +assign V3pet6 = Ifkm17; +assign Wktet6 = Fhkm17; +assign Wui7z6[21] = Yikm17; +assign X9s7z6[29] = Alkm17; +assign X9s7z6[21] = Xmkm17; +assign W0xmz6[5] = Uokm17; +assign Sywmz6[5] = Frkm17; +assign Kms7z6[5] = Qtkm17; +assign Trwmz6[5] = Fwkm17; +assign Ppwmz6[5] = Qykm17; +assign Cnvmz6[5] = B1lm17; +assign Qiwmz6[5] = Q3lm17; +assign Mgwmz6[5] = B6lm17; +assign Xovmz6[5] = M8lm17; +assign N9wmz6[5] = Bblm17; +assign J7wmz6[5] = Mdlm17; +assign Sqvmz6[5] = Xflm17; +assign K0wmz6[5] = Milm17; +assign Gyvmz6[5] = Xklm17; +assign Nsvmz6[5] = Inlm17; +assign V7xmz6[5] = Xplm17; +assign Kh1nz6[5] = Xrlm17; +assign J72nz6[5] = Vtlm17; +assign Eqn7z6[0] = Wvlm17; +assign Eqn7z6[2] = Xylm17; +assign Eqn7z6[1] = Y1mm17; +assign Dvc7z6[4] = Z4mm17; +assign D5f7z6[2] = E8mm17; +assign D5f7z6[0] = Abmm17; +assign D5f7z6[1] = Wdmm17; +assign W2n7z6[0] = Sgmm17; +assign J5n7z6[2] = Mjmm17; +assign G4i7z6[0] = Cmmm17; +assign Oyh7z6[2] = Xomm17; +assign G4i7z6[1] = Asmm17; +assign Oyh7z6[3] = Vumm17; +assign G4i7z6[2] = Yxmm17; +assign Oyh7z6[4] = T0nm17; +assign G4i7z6[3] = W3nm17; +assign G4i7z6[4] = R6nm17; +assign Oyh7z6[6] = M9nm17; +assign G4i7z6[5] = Pcnm17; +assign Oyh7z6[7] = Kfnm17; +assign G4i7z6[6] = Ninm17; +assign Oyh7z6[8] = Ilnm17; +assign G4i7z6[7] = Lonm17; +assign Oyh7z6[9] = Grnm17; +assign G4i7z6[8] = Junm17; +assign Oyh7z6[10] = Exnm17; +assign G4i7z6[9] = I0om17; +assign Oyh7z6[11] = D3om17; +assign Oyh7z6[12] = H6om17; +assign Oyh7z6[13] = L9om17; +assign Oyh7z6[14] = Pcom17; +assign Oyh7z6[15] = Tfom17; +assign Oyh7z6[16] = Xiom17; +assign Oyh7z6[17] = Bmom17; +assign Oyh7z6[18] = Fpom17; +assign Oyh7z6[19] = Jsom17; +assign Oyh7z6[20] = Nvom17; +assign Oyh7z6[21] = Ryom17; +assign Oyh7z6[22] = V1pm17; +assign Oyh7z6[23] = Z4pm17; +assign Oyh7z6[24] = D8pm17; +assign Oyh7z6[25] = Hbpm17; +assign Oyh7z6[26] = Lepm17; +assign Oyh7z6[27] = Phpm17; +assign Oyh7z6[28] = Tkpm17; +assign Oyh7z6[29] = Xnpm17; +assign Oyh7z6[30] = Brpm17; +assign Oyh7z6[31] = Fupm17; +assign Oyh7z6[0] = Jxpm17; +assign Byc7z6[0] = M0qm17; +assign Ryadt6 = P3qm17; +assign Oo1nz6[0] = A5qm17; +assign J72nz6[0] = Y6qm17; +assign N52nz6[6] = Z8qm17; +assign N52nz6[5] = Xaqm17; +assign N52nz6[4] = Wcqm17; +assign N52nz6[3] = Veqm17; +assign N52nz6[2] = Ugqm17; +assign N52nz6[1] = Tiqm17; +assign N52nz6[0] = Skqm17; +assign Wye7v6 = Rmqm17; +assign Z12nz6[2] = Qoqm17; +assign Z12nz6[3] = Rqqm17; +assign Z12nz6[5] = Ssqm17; +assign Z12nz6[7] = Tuqm17; +assign TRACEDATA[3] = Uwqm17; +assign Oih7v6 = (!Uwqm17); +assign Z12nz6[0] = Syqm17; +assign X9s7z6[25] = T0rm17; +assign K0wmz6[1] = Q2rm17; +assign Gyvmz6[1] = B5rm17; +assign Nsvmz6[1] = M7rm17; +assign N9wmz6[1] = Barm17; +assign J7wmz6[1] = Mcrm17; +assign Sqvmz6[1] = Xerm17; +assign Qiwmz6[1] = Mhrm17; +assign Mgwmz6[1] = Xjrm17; +assign Xovmz6[1] = Imrm17; +assign Trwmz6[1] = Xorm17; +assign Ppwmz6[1] = Irrm17; +assign Cnvmz6[1] = Ttrm17; +assign W0xmz6[1] = Iwrm17; +assign Sywmz6[1] = Tyrm17; +assign Kms7z6[1] = E1sm17; +assign T5fet6 = T3sm17; +assign HTMDHTRANS[1] = V5sm17; +assign Dgh7v6 = (!V5sm17); +assign Fb47v6 = N7sm17; +assign V947v6 = A9sm17; +assign Oyh7z6[5] = Oasm17; +assign Byc7z6[7] = Rdsm17; +assign R7fet6 = Ugsm17; +assign W5pet6 = Ajsm17; +assign J5n7z6[3] = Tksm17; +assign J0n7z6[1] = Jnsm17; +assign U1pet6 = Dqsm17; +assign W2n7z6[1] = Assm17; +assign S7f7z6[0] = Uusm17; +assign S7f7z6[2] = Sxsm17; +assign S7f7z6[5] = Q0tm17; +assign S7f7z6[1] = O3tm17; +assign S7f7z6[3] = M6tm17; +assign S7f7z6[4] = K9tm17; +assign Fre7z6[1] = Ictm17; +assign Kh1nz6[4] = Fftm17; +assign J72nz6[4] = Dhtm17; +assign Z12nz6[4] = Ejtm17; +assign Hjn7z6[7] = Fltm17; +assign Hjn7z6[8] = Vntm17; +assign Hjn7z6[9] = Lqtm17; +assign Hjn7z6[10] = Bttm17; +assign Hjn7z6[11] = Svtm17; +assign Hjn7z6[12] = Jytm17; +assign Hjn7z6[13] = A1um17; +assign Hjn7z6[14] = R3um17; +assign Hjn7z6[15] = I6um17; +assign Hjn7z6[16] = Z8um17; +assign Hjn7z6[17] = Qbum17; +assign Hjn7z6[18] = Heum17; +assign Hjn7z6[19] = Ygum17; +assign Hjn7z6[20] = Pjum17; +assign Hjn7z6[21] = Gmum17; +assign Hjn7z6[22] = Xoum17; +assign Hjn7z6[23] = Orum17; +assign Hjn7z6[24] = Fuum17; +assign Hjn7z6[25] = Wwum17; +assign Hjn7z6[26] = Nzum17; +assign Hjn7z6[27] = E2vm17; +assign Hjn7z6[28] = V4vm17; +assign Hjn7z6[29] = M7vm17; +assign Hjn7z6[30] = Davm17; +assign Hjn7z6[31] = Ucvm17; +assign X9s7z6[39] = Lfvm17; +assign Kh1nz6[6] = Ihvm17; +assign J72nz6[6] = Gjvm17; +assign Z12nz6[6] = Hlvm17; +assign TRACEDATA[2] = Invm17; +assign Hih7v6 = (!Invm17); +assign Byc7z6[31] = Gpvm17; +assign Cxtet6 = Ksvm17; +assign Bvtet6 = Duvm17; +assign Attet6 = Wvvm17; +assign Zqtet6 = Pxvm17; +assign Dztet6 = Izvm17; +assign Fopet6 = B1wm17; +assign Empet6 = U2wm17; +assign Dkpet6 = N4wm17; +assign Cipet6 = G6wm17; +assign Bgpet6 = Z7wm17; +assign Aepet6 = W9wm17; +assign J72nz6[1] = Tbwm17; +assign Z12nz6[1] = Udwm17; +assign TRACEDATA[1] = Vfwm17; +assign Vih7v6 = (!Vfwm17); +assign TRACEDATA[0] = Thwm17; +assign Aih7v6 = (!Thwm17); +assign SWV = Rjwm17; +assign H1m8v6 = (Hsi7z6[2] ? X5m8v6 : 1'b1); +assign Zyl8v6 = (Hsi7z6[2] ? Kja7z6 : 1'b1); +assign Rwl8v6 = (Hsi7z6[2] ? P3m8v6 : 1'b1); +assign X5m8v6 = (Hsi7z6[1] ? Sja7z6 : 1'b1); +assign Dpo8v6 = (O7c7z6[8] ? B9r8v6 : Ffr8v6); +assign Bmo8v6 = (O7c7z6[8] ? Z5r8v6 : Dcr8v6); +assign Zio8v6 = (O7c7z6[8] ? X2r8v6 : B9r8v6); +assign Xfo8v6 = (O7c7z6[8] ? Vzq8v6 : Z5r8v6); +assign Vco8v6 = (O7c7z6[8] ? Twq8v6 : X2r8v6); +assign T9o8v6 = (O7c7z6[8] ? Rtq8v6 : Vzq8v6); +assign R6o8v6 = (O7c7z6[8] ? Pqq8v6 : Twq8v6); +assign P3o8v6 = (O7c7z6[8] ? Nnq8v6 : Rtq8v6); +assign N0o8v6 = (O7c7z6[8] ? Lkq8v6 : Pqq8v6); +assign Lxn8v6 = (O7c7z6[8] ? Jhq8v6 : Nnq8v6); +assign Jun8v6 = (O7c7z6[8] ? Heq8v6 : Lkq8v6); +assign Hrn8v6 = (O7c7z6[8] ? Fbq8v6 : Jhq8v6); +assign Fon8v6 = (O7c7z6[8] ? D8q8v6 : Heq8v6); +assign Dln8v6 = (O7c7z6[8] ? B5q8v6 : Fbq8v6); +assign Bin8v6 = (O7c7z6[8] ? Z1q8v6 : D8q8v6); +assign Zen8v6 = (O7c7z6[8] ? Xyp8v6 : B5q8v6); +assign Xbn8v6 = (O7c7z6[8] ? Vvp8v6 : Z1q8v6); +assign V8n8v6 = (O7c7z6[8] ? Tsp8v6 : Xyp8v6); +assign T5n8v6 = (O7c7z6[8] ? Rpp8v6 : Vvp8v6); +assign R2n8v6 = (O7c7z6[8] ? Pmp8v6 : Tsp8v6); +assign Pzm8v6 = (O7c7z6[8] ? Ojp8v6 : Rpp8v6); +assign Nwm8v6 = (O7c7z6[8] ? Ngp8v6 : Pmp8v6); +assign Mtm8v6 = (O7c7z6[8] ? Mdp8v6 : Ojp8v6); +assign Lqm8v6 = (O7c7z6[8] ? Lap8v6 : Ngp8v6); +assign Knm8v6 = (O7c7z6[8] ? K7p8v6 : Mdp8v6); +assign Jkm8v6 = (O7c7z6[8] ? J4p8v6 : Lap8v6); +assign Ihm8v6 = (O7c7z6[8] ? I1p8v6 : K7p8v6); +assign Hem8v6 = (O7c7z6[8] ? Hyo8v6 : J4p8v6); +assign Gbm8v6 = (O7c7z6[8] ? Gvo8v6 : I1p8v6); +assign F8m8v6 = (O7c7z6[8] ? Fso8v6 : Hyo8v6); +assign Ffr8v6 = (O7c7z6[7] ? Zkh7z6[30] : Zkh7z6[31]); +assign Dcr8v6 = (O7c7z6[7] ? Zkh7z6[29] : Zkh7z6[30]); +assign B9r8v6 = (O7c7z6[7] ? Zkh7z6[28] : Zkh7z6[29]); +assign Z5r8v6 = (O7c7z6[7] ? Zkh7z6[27] : Zkh7z6[28]); +assign X2r8v6 = (O7c7z6[7] ? Zkh7z6[26] : Zkh7z6[27]); +assign Vzq8v6 = (O7c7z6[7] ? Zkh7z6[25] : Zkh7z6[26]); +assign Twq8v6 = (O7c7z6[7] ? Zkh7z6[24] : Zkh7z6[25]); +assign Rtq8v6 = (O7c7z6[7] ? Zkh7z6[23] : Zkh7z6[24]); +assign Pqq8v6 = (O7c7z6[7] ? Zkh7z6[22] : Zkh7z6[23]); +assign Nnq8v6 = (O7c7z6[7] ? Zkh7z6[21] : Zkh7z6[22]); +assign Lkq8v6 = (O7c7z6[7] ? Zkh7z6[20] : Zkh7z6[21]); +assign Jhq8v6 = (O7c7z6[7] ? Zkh7z6[19] : Zkh7z6[20]); +assign Heq8v6 = (O7c7z6[7] ? Zkh7z6[18] : Zkh7z6[19]); +assign Fbq8v6 = (O7c7z6[7] ? Zkh7z6[17] : Zkh7z6[18]); +assign D8q8v6 = (O7c7z6[7] ? Zkh7z6[16] : Zkh7z6[17]); +assign B5q8v6 = (O7c7z6[7] ? Zkh7z6[15] : Zkh7z6[16]); +assign Z1q8v6 = (O7c7z6[7] ? Zkh7z6[14] : Zkh7z6[15]); +assign Xyp8v6 = (O7c7z6[7] ? Zkh7z6[13] : Zkh7z6[14]); +assign Vvp8v6 = (O7c7z6[7] ? Zkh7z6[12] : Zkh7z6[13]); +assign Tsp8v6 = (O7c7z6[7] ? Zkh7z6[11] : Zkh7z6[12]); +assign Rpp8v6 = (O7c7z6[7] ? Zkh7z6[10] : Zkh7z6[11]); +assign Pmp8v6 = (O7c7z6[7] ? Zkh7z6[9] : Zkh7z6[10]); +assign Ojp8v6 = (O7c7z6[7] ? Zkh7z6[8] : Zkh7z6[9]); +assign Ngp8v6 = (O7c7z6[7] ? Zkh7z6[7] : Zkh7z6[8]); +assign Mdp8v6 = (O7c7z6[7] ? Zkh7z6[6] : Zkh7z6[7]); +assign Lap8v6 = (O7c7z6[7] ? Zkh7z6[5] : Zkh7z6[6]); +assign K7p8v6 = (O7c7z6[7] ? Zkh7z6[4] : Zkh7z6[5]); +assign J4p8v6 = (O7c7z6[7] ? Zkh7z6[3] : Zkh7z6[4]); +assign I1p8v6 = (O7c7z6[7] ? Zkh7z6[2] : Zkh7z6[3]); +assign Hyo8v6 = (O7c7z6[7] ? Zkh7z6[1] : Zkh7z6[2]); +assign Gvo8v6 = (O7c7z6[7] ? Zkh7z6[0] : Zkh7z6[1]); +assign Q1s8v6 = (Bat8v6 ? Nas8v6 : Jms8v6); +assign Ryr8v6 = (Bat8v6 ? O7s8v6 : Kjs8v6); +assign Svr8v6 = (Bat8v6 ? P4s8v6 : Lgs8v6); +assign Tsr8v6 = (Bat8v6 ? 1'b0 : Mds8v6); +assign Jms8v6 = (Kfa7z6 ? Fys8v6 : D4t8v6); +assign Kjs8v6 = (Kfa7z6 ? Gvs8v6 : E1t8v6); +assign Lgs8v6 = (Kfa7z6 ? Hss8v6 : Fys8v6); +assign Mds8v6 = (Kfa7z6 ? Ips8v6 : Gvs8v6); +assign Nas8v6 = (Kfa7z6 ? C7t8v6 : Hss8v6); +assign O7s8v6 = (Kfa7z6 ? 1'b0 : Ips8v6); +assign D4t8v6 = (Sfa7z6 ? Uqd7z6[21] : Uqd7z6[22]); +assign E1t8v6 = (Sfa7z6 ? Uqd7z6[20] : Uqd7z6[21]); +assign Fys8v6 = (Sfa7z6 ? Uqd7z6[19] : Uqd7z6[20]); +assign Gvs8v6 = (Sfa7z6 ? Uqd7z6[18] : Uqd7z6[19]); +assign Hss8v6 = (Sfa7z6 ? Uqd7z6[17] : Uqd7z6[18]); +assign Ips8v6 = (Sfa7z6 ? Ovbdt6 : Uqd7z6[17]); +assign {D9f7v6, Naf7v6, Xbf7v6, Hdf7v6, Ref7v6, Bgf7v6, Lhf7v6, Vif7v6, + Fkf7v6, Plf7v6, Zmf7v6, Jof7v6, Tpf7v6} = (Td2nz6 + 1'b1); +assign {Bmd7v6, Lnd7v6, Vod7v6, Fqd7v6, Prd7v6, Zsd7v6, Jud7v6, Tvd7v6, + Dxd7v6} = (H71nz6 - 1'b1); +assign Llwm17 = ({E11nz6, 1'b0} + {{1'b0, Rht8v6, Bgt8v6, Let8v6, + Wsc7v6}, 1'b1}); +assign {Mz0nz6, Ux0nz6} = Llwm17[33:1]; +assign Cnwm17 = ({{G0d7v6, M1d7v6, S2d7v6, Y3d7v6, E5d7v6}, 1'b0} + + {E11nz6, 1'b1}); +assign {Cuc7v6, Ivc7v6, Owc7v6, Uxc7v6, Azc7v6} = Cnwm17[33:1]; +assign Towm17 = ((E11nz6 - {Rr0nz6, Hw0nz6, E5d7v6}) - 1'b0); +assign {K6d7v6, Q7d7v6, W8d7v6, Cad7v6, Ibd7v6} = Towm17[4:0]; +assign Jqwm17 = ({Slzmz6, 1'b0} + {{1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, + 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, + 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, + 1'b0, 1'b0, 1'b0, 1'b0, W9c7v6}, 1'b1}); +assign {Uq87v6, Ds87v6, Mt87v6, Vu87v6, Ew87v6, Nx87v6, Wy87v6, F097v6, + O197v6, X297v6, G497v6, P597v6, Y697v6, H897v6, Q997v6, Za97v6, + Ic97v6, Rd97v6, Af97v6, Jg97v6, Sh97v6, Bj97v6, Kk97v6, Tl97v6, + Cn97v6, Lo97v6, Up97v6, Dr97v6, Ms97v6, Vt97v6, Ev97v6} = + Jqwm17[33:1]; +assign Ctymz6 = (Ruymz6 - 1'b1); +assign {Ub67v6, Uc67v6, Ud67v6, Ue67v6, Uf67v6, Ug67v6, Uh67v6, Ui67v6, + Uj67v6, Uk67v6, Ul67v6, Um67v6} = (Hnxmz6 - 1'b1); +assign {Iw27v6, Px27v6, Wy27v6, D037v6, K137v6, R237v6, Y337v6, F537v6, + M637v6, T737v6, A937v6, Ha37v6, Ob37v6, Vc37v6, Ce37v6, Jf37v6, + Qg37v6, Xh37v6, Ej37v6, Lk37v6, Sl37v6} = ({P7s7z6[30:24], + P7s7z6[22:16], P7s7z6[14:8]} + 1'b1); +assign Em5ft6 = (({Mkp7z6[31:15], S8r7z6} == {T6r7z6[31:16], Ve5ft6, + T6r7z6[14:1], 1'b0}) ? 1'b1 : 1'b0); +assign Gb5ft6 = (({Bqp7z6[31:15], O2r7z6} == {T6r7z6[31:16], Ve5ft6, + P0r7z6, 1'b0}) ? 1'b1 : 1'b0); +assign X15ft6 = (({B2q7z6[31:15], Kwq7z6} == {T6r7z6[31:16], Ve5ft6, + Luq7z6, 1'b0}) ? 1'b1 : 1'b0); +assign Mq4ft6 = (({E6p7z6[31:15], Gqq7z6} == {T6r7z6[31:16], Ve5ft6, + Hoq7z6, 1'b0}) ? 1'b1 : 1'b0); +assign {I03ft6, T13ft6, E33ft6, P43ft6, A63ft6, L73ft6, W83ft6, Ha3ft6, + Sb3ft6, Dd3ft6, Oe3ft6, Zf3ft6, Kh3ft6, Vi3ft6, Gk3ft6, Rl3ft6, + Cn3ft6, No3ft6, Yp3ft6, Jr3ft6, Us3ft6, Fu3ft6, Qv3ft6, Bx3ft6, + My3ft6, Xz3ft6, I14ft6, T24ft6, E44ft6, P54ft6, A74ft6, L84ft6} + = (U9p7z6 + 1'b1); +assign Zb1ft6 = (({1'b0, 1'b0, 1'b0, Fpo7z6} == Zmo7z6) ? 1'b1 : 1'b0); +assign Xc1ft6 = (({1'b0, 1'b0, 1'b0, Nqo7z6} == Zmo7z6) ? 1'b1 : 1'b0); +assign Vd1ft6 = (({1'b0, 1'b0, 1'b0, Vro7z6} == Coo7z6) ? 1'b1 : 1'b0); +assign Te1ft6 = (({1'b0, 1'b0, 1'b0, Ouo7z6} == Coo7z6) ? 1'b1 : 1'b0); +assign Rf1ft6 = (({1'b0, 1'b0, 1'b0, Hxo7z6} == Coo7z6) ? 1'b1 : 1'b0); +assign Pg1ft6 = (({1'b0, 1'b0, 1'b0, A0p7z6} == Coo7z6) ? 1'b1 : 1'b0); +assign Nh1ft6 = (({1'b0, 1'b0, 1'b0, T2p7z6} == Coo7z6) ? 1'b1 : 1'b0); +assign Li1ft6 = (({1'b0, 1'b0, 1'b0, W3p7z6} == Coo7z6) ? 1'b1 : 1'b0); +assign Dswm17 = ({{U3o7z6[11:4], Y9o7z6}, 1'b0} + {{1'b0, 1'b0, 1'b0, + 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, O7o7z6}, 1'b1}); +assign {Pxzet6, Pzzet6, P10ft6, P30ft6, P50ft6, P70ft6, P90ft6, Pb0ft6, + Pd0ft6, Pf0ft6, Ph0ft6, Pj0ft6} = Dswm17[33:1]; +assign Puwm17 = ({1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, + 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, + 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, + 1'b0, 1'b0, Kvxet6} << {Ean7z6, Ryyet6, S0zet6, T2zet6}); +assign {Y8uet6, Zauet6, Aduet6, Bfuet6, Chuet6, Djuet6, Eluet6, Fnuet6, + Gpuet6, Hruet6, Ituet6, Jvuet6, Kxuet6, Lzuet6, M1vet6, N3vet6, + O5vet6, P7vet6, Q9vet6, Rbvet6, Sdvet6, Tfvet6, Uhvet6, Vjvet6, + Wlvet6, Xnvet6, Ypvet6, Zrvet6, Auvet6, Bwvet6, Cyvet6, D0wet6} + = Puwm17[31:0]; +assign Dxwm17 = ({1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, + 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, + 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, + 1'b0, 1'b0, 1'b1} << {Ean7z6, Ryyet6, S0zet6, T2zet6}); +assign {E2wet6, F4wet6, G6wet6, H8wet6, Iawet6, Jcwet6, Kewet6, Lgwet6, + Miwet6, Nkwet6, Omwet6, Powet6, Qqwet6, Rswet6, Suwet6, Twwet6, + Uywet6, V0xet6, W2xet6, X4xet6, Y6xet6, Z8xet6, Abxet6, Bdxet6, + Cfxet6, Dhxet6, Ejxet6, Flxet6, Gnxet6, Hpxet6, Irxet6, Jtxet6} + = Dxwm17[31:0]; +assign Rzwm17 = ({Chn7z6, 1'b0} + {{1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, + 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, + 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, + 1'b0, 1'b0, 1'b0, M7yet6, 1'b0, 1'b0}, 1'b1}); +assign Icn7z6 = Rzwm17[33:1]; +assign H2xm17 = ({N3k7z6, 1'b0} + {{1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, + 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, + 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, + 1'b0, 1'b0, 1'b0, Obo7v6}, 1'b1}); +assign {X0k7z6, Aka7z6, Xka7z6, Ula7z6} = H2xm17[33:1]; +assign P9get6 = (({Tib7z6, M5bdt6, Oqbet6, Zrbet6, Qmj7z6[5:4], E6a7z6, + Pnfet6, Qmj7z6[1], S3a7z6} != Jqj7z6) ? 1'b1 : 1'b0); +assign Fs4ft6 = (({E6p7z6[31:15], Gqq7z6} == {Gsq7z6[31:16], Bu4ft6, + Gsq7z6[14:0]}) ? 1'b1 : 1'b0); +assign Q35ft6 = (({B2q7z6[31:15], Kwq7z6} == {Sar7z6[31:16], Tp5ft6, + Kyq7z6}) ? 1'b1 : 1'b0); +assign Zc5ft6 = (({Bqp7z6[31:15], O2r7z6} == {Sar7z6[31:16], Tp5ft6, + O4r7z6}) ? 1'b1 : 1'b0); +assign Xn5ft6 = (({Mkp7z6[31:15], S8r7z6} == {Sar7z6[31:16], Tp5ft6, + Sar7z6[14:0]}) ? 1'b1 : 1'b0); +assign {Emcet6, Sncet6, Gpcet6, Uqcet6, Iscet6, Wtcet6, Kvcet6, Ywcet6, + Mycet6, A0det6, O1det6, C3det6, Q4det6, E6det6, S7det6, G9det6, + Uadet6, Icdet6, Wddet6, Kfdet6, Ygdet6, Midet6, Akdet6, Oldet6} + = (A0j7z6 - 1'b1); +assign W4xm17 = ({1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, + 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, + 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, + 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, + 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, + 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, + 1'b0, 1'b0, 1'b0, 1'b0, T9fet6} << {Bmfet6, Nkfet6, Zifet6, + Lhfet6, Xffet6, Jefet6, Vcfet6, Hbfet6}); +assign Qkj7z6 = W4xm17[63:0]; +assign Y6xm17 = ((vis_pc_o - {1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, + 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, + 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, + 1'b0, 1'b0, 1'b1, 1'b0}) - 1'b0); +assign Bni7z6 = Y6xm17[30:0]; +assign A9xm17 = ((vis_pc_o - {1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, + 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, + 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, + 1'b0, Zei7z6}) - 1'b0); +assign Gli7z6 = A9xm17[30:0]; +assign Cbxm17 = ({vis_pc_o, 1'b0} + {{1'b0, 1'b0, 1'b0, 1'b0, 1'b0, + 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, + 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, + 1'b0, 1'b0, 1'b0, 1'b0, A4a7z6, Tao7v6}, 1'b1}); +assign Bhi7z6 = Cbxm17[33:1]; +assign Edxm17 = ({{Wt97z6, Eu97z6, Cv97z6, Uu97z6, Sv97z6, Qw97z6, + Ox97z6, Wx97z6, Ey97z6, My97z6, Uy97z6, Cz97z6, Kz97z6, Yw97z6, + Sz97z6, A0a7z6, Kv97z6, I0a7z6, Q0a7z6, Y0a7z6, G1a7z6, Gx97z6, + O1a7z6, Aw97z6, W1a7z6, E2a7z6, M2a7z6, Iw97z6, U2a7z6, As97z6, + Mu97z6}, 1'b0} + {{1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, + 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, + 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, + 1'b0, 1'b0, 1'b1, 1'b0}, 1'b1}); +assign Eji7z6 = Edxm17[33:1]; +assign Gfxm17 = ({{Ca3et6, Lc3et6, Ue3et6, Dh3et6, Mj3et6, Vl3et6, + Eo3et6, Nq3et6, Ws3et6, Fv3et6, Ox3et6, Xz3et6, G24et6, P44et6, + Y64et6, H94et6, Qb4et6, Zd4et6, Ig4et6, Ri4et6, Al4et6, Jn4et6, + Sp4et6, Bs4et6, Ku4et6, Tw4et6, Cz4et6, L15et6, U35et6, D65et6, + M85et6, Va5et6}, 1'b0} + {{1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, + 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, + 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, + 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, Ueo7v6}, 1'b1}); +assign Nqh7z6 = Gfxm17[33:1]; +assign Cixm17 = ({Vvh7z6, 1'b0} + {{Xd7et6, Ob7et6, F97et6, W67et6, + N47et6, E27et6, Vz6et6, Mx6et6, Dv6et6, Us6et6, Lq6et6, Co6et6, + Tl6et6, Kj6et6, Bh6et6, Se6et6, Jc6et6, Aa6et6, R76et6, I56et6, + Z26et6, Q06et6, Hy5et6, Yv5et6, Pt5et6, Gr5et6, Xo5et6, Om5et6, + Fk5et6, Wh5et6, Nf5et6, Ed5et6}, 1'b1}); +assign {Ca3et6, Lc3et6, Ue3et6, Dh3et6, Mj3et6, Vl3et6, Eo3et6, Nq3et6, + Ws3et6, Fv3et6, Ox3et6, Xz3et6, G24et6, P44et6, Y64et6, H94et6, + Qb4et6, Zd4et6, Ig4et6, Ri4et6, Al4et6, Jn4et6, Sp4et6, Bs4et6, + Ku4et6, Tw4et6, Cz4et6, L15et6, U35et6, D65et6, M85et6, Va5et6} + = Cixm17[33:1]; +assign Wkxm17 = ({{Nbaet6, Wdaet6, Fgaet6, Oiaet6, Xkaet6, Gnaet6, + Ppaet6, Yraet6, Huaet6, Qwaet6}, 1'b0} + {{1'b0, 1'b0, 1'b0, + 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, Cfa7z6}, 1'b1}); +assign P9i7z6 = Wkxm17[33:1]; +assign Snxm17 = ({{1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, + Fci7z6}, 1'b0} + {{Cfa7z6, Cfa7z6, Kfbet6, Bdbet6, Sabet6, + J8bet6, A6bet6, R3bet6, I1bet6, Zyaet6}, 1'b1}); +assign {Nbaet6, Wdaet6, Fgaet6, Oiaet6, Xkaet6, Gnaet6, Ppaet6, Yraet6, + Huaet6, Qwaet6} = Snxm17[33:1]; +assign Mqxm17 = ((Pcg7z6 - {A4xdt6, A4xdt6, A4xdt6, Alf7z6[31:3]}) - + 1'b0); +assign {Epmdt6, Dsmdt6, Cvmdt6, Bymdt6, A1ndt6, Z3ndt6, Y6ndt6, X9ndt6, + Wcndt6, Vfndt6, Uindt6, Tlndt6, Sondt6, Rrndt6, Qundt6, Pxndt6, + O0odt6, N3odt6, M6odt6, L9odt6, Kcodt6, Jfodt6, Iiodt6, Hlodt6, + Goodt6, Frodt6, Euodt6, Dxodt6, C0pdt6, A3pdt6, Y5pdt6, W8pdt6} + = Mqxm17[31:0]; +assign Wtxm17 = ({Pcg7z6, 1'b0} + {{A4xdt6, A4xdt6, A4xdt6, + Alf7z6[31:3]}, 1'b1}); +assign {Ubpdt6, Sepdt6, Qhpdt6, Okpdt6, Mnpdt6, Kqpdt6, Itpdt6, Gwpdt6, + Ezpdt6, C2qdt6, A5qdt6, Y7qdt6, Waqdt6, Udqdt6, Sgqdt6, Qjqdt6, + Omqdt6, Mpqdt6, Ksqdt6, Ivqdt6, Gyqdt6, E1rdt6, C4rdt6, A7rdt6, + Y9rdt6, Wcrdt6, Ufrdt6, Sirdt6, Qlrdt6, Oordt6, Mrrdt6, Kurdt6} + = Wtxm17[33:1]; +assign Gxxm17 = ((Zfg7z6 - {A4xdt6, A4xdt6, Alf7z6[31:2]}) - 1'b0); +assign {Ixrdt6, G0sdt6, E3sdt6, C6sdt6, A9sdt6, Ybsdt6, Wesdt6, Uhsdt6, + Sksdt6, Qnsdt6, Oqsdt6, Mtsdt6, Kwsdt6, Izsdt6, G2tdt6, E5tdt6, + C8tdt6, Abtdt6, Ydtdt6, Wgtdt6, Ujtdt6, Smtdt6, Qptdt6, Ostdt6, + Mvtdt6, Kytdt6, I1udt6, G4udt6, E7udt6, Caudt6, Adudt6, Yfudt6} + = Gxxm17[31:0]; +assign Q0ym17 = ({Zfg7z6, 1'b0} + {{A4xdt6, A4xdt6, Alf7z6[31:2]}, 1'b1} + ); +assign {Wiudt6, Uludt6, Soudt6, Qrudt6, Ouudt6, Mxudt6, K0vdt6, I3vdt6, + G6vdt6, E9vdt6, Ccvdt6, Afvdt6, Yhvdt6, Wkvdt6, Unvdt6, Sqvdt6, + Qtvdt6, Owvdt6, Mzvdt6, K2wdt6, I5wdt6, G8wdt6, Ebwdt6, Bewdt6, + Ygwdt6, Vjwdt6, Smwdt6, Ppwdt6, Mswdt6, Jvwdt6, Gywdt6, D1xdt6} + = Q0ym17[33:1]; +assign A4ym17 = ({{Tmg7z6, 1'b1}, 1'b0} + {{Jjg7z6, Wvl8v6}, 1'b1}); +assign {Zfg7z6, Rma7z6} = A4ym17[33:1]; +assign K7ym17 = ({{Onf7z6, 1'b1}, 1'b0} + {{Dqg7z6, Geo7v6}, 1'b1}); +assign {Tmg7z6, Ona7z6} = K7ym17[33:1]; +assign Iphdt6 = ((Kif7z6 == {Uff7z6, Arkdt6}) ? 1'b1 : 1'b0); +assign Uaym17 = ({{Vrhdt6, Zthdt6, Dwhdt6, Hyhdt6, L0idt6, P2idt6, + T4idt6, X6idt6, B9idt6, Fbidt6, Jdidt6, Nfidt6, Rhidt6, Vjidt6, + Zlidt6, Doidt6}, 1'b0} + {{1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, + 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, Hqidt6}, + 1'b1}); +assign Cqf7z6 = Uaym17[33:1]; +assign Ldym17 = ({Ivf7z6, 1'b0} + {Ssf7z6, 1'b1}); +assign {Vrhdt6, Zthdt6, Dwhdt6, Hyhdt6, L0idt6, P2idt6, T4idt6, X6idt6, + B9idt6, Fbidt6, Jdidt6, Nfidt6, Rhidt6, Vjidt6, Zlidt6, Doidt6} + = Ldym17[33:1]; +assign Agym17 = ({{Xsidt6, Bvidt6, Fxidt6, Jzidt6, N1jdt6, R3jdt6, + V5jdt6, Z7jdt6, Dajdt6, Gcjdt6, Jejdt6, Mgjdt6, Pijdt6, Skjdt6, + Vmjdt6, Yojdt6, Brjdt6, Etjdt6, Hvjdt6, Kxjdt6, Nzjdt6, Q1kdt6, + T3kdt6, W5kdt6, Z7kdt6, Cakdt6, Fckdt6, Iekdt6, Lgkdt6, Oikdt6, + Rkkdt6, Umkdt6, Xokdt6}, 1'b0} + {{1'b0, 1'b0, 1'b0, 1'b0, 1'b0, + 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, + 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, + 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, Arkdt6}, 1'b1}); +assign L0g7z6 = Agym17[33:1]; +assign Riym17 = ({{1'b0, J5g7z6}, 1'b0} + {{1'b0, X2g7z6}, 1'b1}); +assign {Xsidt6, Bvidt6, Fxidt6, Jzidt6, N1jdt6, R3jdt6, V5jdt6, Z7jdt6, + Dajdt6, Gcjdt6, Jejdt6, Mgjdt6, Pijdt6, Skjdt6, Vmjdt6, Yojdt6, + Brjdt6, Etjdt6, Hvjdt6, Kxjdt6, Nzjdt6, Q1kdt6, T3kdt6, W5kdt6, + Z7kdt6, Cakdt6, Fckdt6, Iekdt6, Lgkdt6, Oikdt6, Rkkdt6, Umkdt6, + Xokdt6} = Riym17[33:1]; +assign Glym17 = (Fag7z6 * V7g7z6); +assign {Loa7z6, Ipa7z6, Fqa7z6, Cra7z6, Zra7z6, Xsa7z6, Vta7z6, Tua7z6, + Rva7z6, Pwa7z6, Nxa7z6, Lya7z6, Jza7z6, H0b7z6, F1b7z6, D2b7z6, + B3b7z6, Z3b7z6, X4b7z6, V5b7z6, T6b7z6, R7b7z6, P8b7z6, N9b7z6, + Lab7z6, Jbb7z6, Hcb7z6, Fdb7z6, Deb7z6, Bfb7z6, Zfb7z6, Xgb7z6, + Mtkdt6, Pvkdt6, Sxkdt6, Vzkdt6, Y1ldt6, B4ldt6, E6ldt6, H8ldt6, + Kaldt6, Ncldt6, Qeldt6, Tgldt6, Wildt6, Zkldt6, Cnldt6, Fpldt6, + Irldt6, Ltldt6, Ovldt6, Rxldt6, Uzldt6, X1mdt6, A4mdt6, D6mdt6, + G8mdt6, Jamdt6, Mcmdt6, Pemdt6, Sgmdt6, Vimdt6, Ykmdt6, Bnmdt6} + = Glym17[63:0]; +assign Xnym17 = ((K2f7z6 - Rze7z6) - 1'b0); +assign {Fugdt6, Jwgdt6, Nygdt6, R0hdt6, V2hdt6, Z4hdt6} = Xnym17[5:0]; +assign Mqym17 = ({1'b1, 1'b1, 1'b1, 1'b1, 1'b1, 1'b1, 1'b1, 1'b1, 1'b1, + 1'b1, 1'b1, 1'b1, 1'b1, 1'b1, 1'b1, 1'b1, 1'b1, 1'b1, 1'b1, + 1'b1, 1'b1, 1'b1, 1'b1, 1'b1, 1'b1, 1'b1, 1'b1, 1'b1, 1'b1, + 1'b1, 1'b1, 1'b1} << Jaf7z6); +assign Rje7z6 = Mqym17[31:0]; +assign Etym17 = ({V1c7z6[31:27], 1'b0} + {V1c7z6[4:0], 1'b1}); +assign {Oehdt6, Sghdt6, Wihdt6, Alhdt6, Enhdt6} = Etym17[33:1]; +assign Uvym17 = (({1'b0, S0e7z6} - {1'b0, 1'b0, 1'b0, 1'b0, 1'b0, + Yxd7z6}) - 1'b0); +assign Gvd7z6 = Uvym17[6:0]; +assign Nlcdt6 = (({Dvc7z6[31:2], 1'b0, 1'b0} == {X0d7z6, 1'b0, 1'b0}) ? + 1'b1 : 1'b0); +assign Jyym17 = ({{Pdc7z6[31:2], 1'b0}, 1'b0} + {{1'b0, 1'b0, 1'b0, + 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, + 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, + 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b1, 1'b0}, 1'b1}); +assign {Xhd7z6, Vhb7z6} = Jyym17[33:1]; +assign H1zm17 = ({vis_pc_o, 1'b0} + {{Vjc7z6[31], Vjc7z6[31], + Vjc7z6[31], Vjc7z6[31], Vjc7z6[31], Vjc7z6[31], Vjc7z6[31], + Vjc7z6[31], Vjc7z6[31], Vjc7z6[31], Vjc7z6[31], Vjc7z6[31], + Vjc7z6[31], Vjc7z6[31], Vjc7z6[31], Vjc7z6[31], Vjc7z6[31], + Vjc7z6[31], Vjc7z6[31], Vjc7z6[31], Vjc7z6[31], Vjc7z6[31], + Vjc7z6[31], Vjc7z6[31], Vjc7z6[31], Vjc7z6[6:1]}, 1'b1}); +assign Wkd7z6 = H1zm17[33:1]; +assign F4zm17 = ({vis_pc_o, 1'b0} + {{Flc7z6[31], Flc7z6[31], + Flc7z6[31], Flc7z6[31], Flc7z6[31], Flc7z6[31], Flc7z6[31], + Flc7z6[31], Flc7z6[23:1]}, 1'b1}); +assign Vnd7z6 = F4zm17[33:1]; +assign D7zm17 = ({{L88et6, Ua8et6, Dd8et6, Mf8et6, Vh8et6, Ek8et6, + Nm8et6, Wo8et6, Fr8et6, Ot8et6, Xv8et6, Gy8et6, P09et6, Y29et6, + H59et6, Q79et6, Z99et6, Ic9et6, Re9et6, Ah9et6, Jj9et6, Sl9et6, + Bo9et6, Kq9et6, Ts9et6, Cv9et6, Lx9et6, Uz9et6, D2aet6, M4aet6, + V6aet6, E9aet6}, 1'b0} + {{1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, + 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, + 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, + 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, P58et6}, 1'b1}); +assign {Cmm7z6[31:3], U28et6, Cmm7z6[1:0]} = D7zm17[33:1]; +assign Z9zm17 = ({K1i7z6, 1'b0} + {Oyh7z6, 1'b1}); +assign {L88et6, Ua8et6, Dd8et6, Mf8et6, Vh8et6, Ek8et6, Nm8et6, Wo8et6, + Fr8et6, Ot8et6, Xv8et6, Gy8et6, P09et6, Y29et6, H59et6, Q79et6, + Z99et6, Ic9et6, Re9et6, Ah9et6, Jj9et6, Sl9et6, Bo9et6, Kq9et6, + Ts9et6, Cv9et6, Lx9et6, Uz9et6, D2aet6, M4aet6, V6aet6, E9aet6} + = Z9zm17[33:1]; +assign Tpt8v6 = (S7gdt6 & H9gdt6); +assign Ojt8v6 = (~(Q1fdt6 & Tpt8v6)); +assign Aqt8v6 = (S7gdt6 & But8v6); +assign Hjt8v6 = (~(B0fdt6 & Aqt8v6)); +assign Qkt8v6 = (Ojt8v6 & Hjt8v6); +assign Vqt8v6 = (~(But8v6 | S7gdt6)); +assign Ckt8v6 = (~(Myedt6 & Vqt8v6)); +assign Crt8v6 = (~(H9gdt6 | S7gdt6)); +assign Vjt8v6 = (~(Xwedt6 & Crt8v6)); +assign Jkt8v6 = (Ckt8v6 & Vjt8v6); +assign Xkt8v6 = (~(Qkt8v6 & Jkt8v6)); +assign Int8v6 = (~(D6gdt6 & Xkt8v6)); +assign Llt8v6 = (~(Ivedt6 & Tpt8v6)); +assign Elt8v6 = (~(Ttedt6 & Aqt8v6)); +assign Nmt8v6 = (Llt8v6 & Elt8v6); +assign Zlt8v6 = (~(Esedt6 & Vqt8v6)); +assign Slt8v6 = (~(Pqedt6 & Crt8v6)); +assign Gmt8v6 = (Zlt8v6 & Slt8v6); +assign Umt8v6 = (~(Nmt8v6 & Gmt8v6)); +assign Bnt8v6 = (~(Umt8v6 & Iut8v6)); +assign Pnt8v6 = (~(Int8v6 & Bnt8v6)); +assign Utt8v6 = (~(O4gdt6 & Pnt8v6)); +assign Dot8v6 = (~(Apedt6 & Tpt8v6)); +assign Wnt8v6 = (~(Lnedt6 & Aqt8v6)); +assign Fpt8v6 = (Dot8v6 & Wnt8v6); +assign Rot8v6 = (~(Wledt6 & Vqt8v6)); +assign Kot8v6 = (~(Hkedt6 & Crt8v6)); +assign Yot8v6 = (Rot8v6 & Kot8v6); +assign Mpt8v6 = (~(Fpt8v6 & Yot8v6)); +assign Zst8v6 = (~(Mpt8v6 & D6gdt6)); +assign Oqt8v6 = (~(Siedt6 & Tpt8v6)); +assign Hqt8v6 = (~(Dhedt6 & Aqt8v6)); +assign Est8v6 = (Oqt8v6 & Hqt8v6); +assign Qrt8v6 = (~(Ofedt6 & Vqt8v6)); +assign Jrt8v6 = (~(Zdedt6 & Crt8v6)); +assign Xrt8v6 = (Qrt8v6 & Jrt8v6); +assign Lst8v6 = (~(Est8v6 & Xrt8v6)); +assign Sst8v6 = (~(Lst8v6 & Iut8v6)); +assign Gtt8v6 = (Zst8v6 & Sst8v6); +assign Ntt8v6 = (Gtt8v6 | O4gdt6); +assign Acedt6 = (~(Utt8v6 & Ntt8v6)); +assign But8v6 = (!H9gdt6); +assign Iut8v6 = (!D6gdt6); +assign B1u8v6 = (Aegdt6 & Pfgdt6); +assign Wut8v6 = (~(Wqfdt6 & B1u8v6)); +assign I1u8v6 = (Aegdt6 & J5u8v6); +assign Put8v6 = (~(Hpfdt6 & I1u8v6)); +assign Yvt8v6 = (Wut8v6 & Put8v6); +assign D2u8v6 = (~(J5u8v6 | Aegdt6)); +assign Kvt8v6 = (~(Snfdt6 & D2u8v6)); +assign K2u8v6 = (~(Pfgdt6 | Aegdt6)); +assign Dvt8v6 = (~(Dmfdt6 & K2u8v6)); +assign Rvt8v6 = (Kvt8v6 & Dvt8v6); +assign Fwt8v6 = (~(Yvt8v6 & Rvt8v6)); +assign Qyt8v6 = (~(Lcgdt6 & Fwt8v6)); +assign Twt8v6 = (~(Okfdt6 & B1u8v6)); +assign Mwt8v6 = (~(Zifdt6 & I1u8v6)); +assign Vxt8v6 = (Twt8v6 & Mwt8v6); +assign Hxt8v6 = (~(Khfdt6 & D2u8v6)); +assign Axt8v6 = (~(Vffdt6 & K2u8v6)); +assign Oxt8v6 = (Hxt8v6 & Axt8v6); +assign Cyt8v6 = (~(Vxt8v6 & Oxt8v6)); +assign Jyt8v6 = (~(Cyt8v6 & Q5u8v6)); +assign Xyt8v6 = (~(Qyt8v6 & Jyt8v6)); +assign C5u8v6 = (~(Wagdt6 & Xyt8v6)); +assign Lzt8v6 = (~(Gefdt6 & B1u8v6)); +assign Ezt8v6 = (~(Rcfdt6 & I1u8v6)); +assign N0u8v6 = (Lzt8v6 & Ezt8v6); +assign Zzt8v6 = (~(Cbfdt6 & D2u8v6)); +assign Szt8v6 = (~(N9fdt6 & K2u8v6)); +assign G0u8v6 = (Zzt8v6 & Szt8v6); +assign U0u8v6 = (~(N0u8v6 & G0u8v6)); +assign H4u8v6 = (~(U0u8v6 & Lcgdt6)); +assign W1u8v6 = (~(Y7fdt6 & B1u8v6)); +assign P1u8v6 = (~(J6fdt6 & I1u8v6)); +assign M3u8v6 = (W1u8v6 & P1u8v6); +assign Y2u8v6 = (~(U4fdt6 & D2u8v6)); +assign R2u8v6 = (~(F3fdt6 & K2u8v6)); +assign F3u8v6 = (Y2u8v6 & R2u8v6); +assign T3u8v6 = (~(M3u8v6 & F3u8v6)); +assign A4u8v6 = (~(T3u8v6 & Q5u8v6)); +assign O4u8v6 = (H4u8v6 & A4u8v6); +assign V4u8v6 = (O4u8v6 | Wagdt6); +assign B8cdt6 = (~(C5u8v6 & V4u8v6)); +assign J5u8v6 = (!Pfgdt6); +assign Q5u8v6 = (!Lcgdt6); +assign Imu8v6 = (Alhdt6 & Enhdt6); +assign E6u8v6 = (~(Neo7v6 & Imu8v6)); +assign Pmu8v6 = (Alhdt6 & Lru8v6); +assign X5u8v6 = (~(Cve7z6[30] & Pmu8v6)); +assign G7u8v6 = (E6u8v6 & X5u8v6); +assign Knu8v6 = (~(Lru8v6 | Alhdt6)); +assign S6u8v6 = (~(Cve7z6[29] & Knu8v6)); +assign Rnu8v6 = (~(Enhdt6 | Alhdt6)); +assign L6u8v6 = (~(Cve7z6[28] & Rnu8v6)); +assign Z6u8v6 = (S6u8v6 & L6u8v6); +assign N7u8v6 = (~(G7u8v6 & Z6u8v6)); +assign Y9u8v6 = (~(Wihdt6 & N7u8v6)); +assign B8u8v6 = (~(Cve7z6[27] & Imu8v6)); +assign U7u8v6 = (~(Cve7z6[26] & Pmu8v6)); +assign D9u8v6 = (B8u8v6 & U7u8v6); +assign P8u8v6 = (~(Cve7z6[25] & Knu8v6)); +assign I8u8v6 = (~(Cve7z6[24] & Rnu8v6)); +assign W8u8v6 = (P8u8v6 & I8u8v6); +assign K9u8v6 = (~(D9u8v6 & W8u8v6)); +assign R9u8v6 = (~(K9u8v6 & Sru8v6)); +assign Fau8v6 = (~(Y9u8v6 & R9u8v6)); +assign Ifu8v6 = (~(Sghdt6 & Fau8v6)); +assign Tau8v6 = (~(Cve7z6[23] & Imu8v6)); +assign Mau8v6 = (~(Cve7z6[22] & Pmu8v6)); +assign Vbu8v6 = (Tau8v6 & Mau8v6); +assign Hbu8v6 = (~(Cve7z6[21] & Knu8v6)); +assign Abu8v6 = (~(Cve7z6[20] & Rnu8v6)); +assign Obu8v6 = (Hbu8v6 & Abu8v6); +assign Ccu8v6 = (~(Vbu8v6 & Obu8v6)); +assign Neu8v6 = (~(Ccu8v6 & Wihdt6)); +assign Qcu8v6 = (~(Cve7z6[19] & Imu8v6)); +assign Jcu8v6 = (~(Cve7z6[18] & Pmu8v6)); +assign Sdu8v6 = (Qcu8v6 & Jcu8v6); +assign Edu8v6 = (~(Cve7z6[17] & Knu8v6)); +assign Xcu8v6 = (~(Cve7z6[16] & Rnu8v6)); +assign Ldu8v6 = (Edu8v6 & Xcu8v6); +assign Zdu8v6 = (~(Sdu8v6 & Ldu8v6)); +assign Geu8v6 = (~(Zdu8v6 & Sru8v6)); +assign Ueu8v6 = (~(Neu8v6 & Geu8v6)); +assign Bfu8v6 = (~(Ueu8v6 & Zru8v6)); +assign Pfu8v6 = (~(Ifu8v6 & Bfu8v6)); +assign Eru8v6 = (~(Oehdt6 & Pfu8v6)); +assign Dgu8v6 = (~(Cve7z6[15] & Imu8v6)); +assign Wfu8v6 = (~(Cve7z6[14] & Pmu8v6)); +assign Fhu8v6 = (Dgu8v6 & Wfu8v6); +assign Rgu8v6 = (~(Cve7z6[13] & Knu8v6)); +assign Kgu8v6 = (~(Cve7z6[12] & Rnu8v6)); +assign Ygu8v6 = (Rgu8v6 & Kgu8v6); +assign Mhu8v6 = (~(Fhu8v6 & Ygu8v6)); +assign Xju8v6 = (~(Mhu8v6 & Wihdt6)); +assign Aiu8v6 = (~(Cve7z6[11] & Imu8v6)); +assign Thu8v6 = (~(Cve7z6[10] & Pmu8v6)); +assign Cju8v6 = (Aiu8v6 & Thu8v6); +assign Oiu8v6 = (~(Cve7z6[9] & Knu8v6)); +assign Hiu8v6 = (~(Cve7z6[8] & Rnu8v6)); +assign Viu8v6 = (Oiu8v6 & Hiu8v6); +assign Jju8v6 = (~(Cju8v6 & Viu8v6)); +assign Qju8v6 = (~(Jju8v6 & Sru8v6)); +assign Eku8v6 = (~(Xju8v6 & Qju8v6)); +assign Jqu8v6 = (~(Eku8v6 & Sghdt6)); +assign Sku8v6 = (~(Cve7z6[7] & Imu8v6)); +assign Lku8v6 = (~(Cve7z6[6] & Pmu8v6)); +assign Ulu8v6 = (Sku8v6 & Lku8v6); +assign Glu8v6 = (~(Cve7z6[5] & Knu8v6)); +assign Zku8v6 = (~(Cve7z6[4] & Rnu8v6)); +assign Nlu8v6 = (Glu8v6 & Zku8v6); +assign Bmu8v6 = (~(Ulu8v6 & Nlu8v6)); +assign Opu8v6 = (~(Bmu8v6 & Wihdt6)); +assign Dnu8v6 = (~(Cve7z6[3] & Imu8v6)); +assign Wmu8v6 = (~(Cve7z6[2] & Pmu8v6)); +assign Tou8v6 = (Dnu8v6 & Wmu8v6); +assign Fou8v6 = (~(Cve7z6[1] & Knu8v6)); +assign Ynu8v6 = (~(Cve7z6[0] & Rnu8v6)); +assign Mou8v6 = (Fou8v6 & Ynu8v6); +assign Apu8v6 = (~(Tou8v6 & Mou8v6)); +assign Hpu8v6 = (~(Apu8v6 & Sru8v6)); +assign Vpu8v6 = (~(Opu8v6 & Hpu8v6)); +assign Cqu8v6 = (~(Vpu8v6 & Zru8v6)); +assign Qqu8v6 = (Jqu8v6 & Cqu8v6); +assign Xqu8v6 = (Qqu8v6 | Oehdt6); +assign Q9hdt6 = (~(Eru8v6 & Xqu8v6)); +assign Lru8v6 = (!Enhdt6); +assign Sru8v6 = (!Wihdt6); +assign Zru8v6 = (!Sghdt6); +assign Nsu8v6 = (~(H8k7z6[7] & Pehet6)); +assign Gsu8v6 = (~(H8k7z6[6] & Qxu8v6)); +assign Usu8v6 = (~(Nsu8v6 & Gsu8v6)); +assign Duu8v6 = (~(Cbhet6 & Usu8v6)); +assign Itu8v6 = (~(H8k7z6[5] & Pehet6)); +assign Btu8v6 = (~(H8k7z6[4] & Qxu8v6)); +assign Ptu8v6 = (~(Itu8v6 & Btu8v6)); +assign Wtu8v6 = (~(Ptu8v6 & Xxu8v6)); +assign Kuu8v6 = (~(Duu8v6 & Wtu8v6)); +assign Jxu8v6 = (~(P7het6 & Kuu8v6)); +assign Yuu8v6 = (~(H8k7z6[3] & Pehet6)); +assign Ruu8v6 = (~(H8k7z6[2] & Qxu8v6)); +assign Fvu8v6 = (~(Yuu8v6 & Ruu8v6)); +assign Owu8v6 = (~(Fvu8v6 & Cbhet6)); +assign Tvu8v6 = (~(H8k7z6[1] & Pehet6)); +assign Mvu8v6 = (~(H8k7z6[0] & Qxu8v6)); +assign Awu8v6 = (~(Tvu8v6 & Mvu8v6)); +assign Hwu8v6 = (~(Awu8v6 & Xxu8v6)); +assign Vwu8v6 = (~(Owu8v6 & Hwu8v6)); +assign Cxu8v6 = (Eyu8v6 | P7het6); +assign C4het6 = (~(Jxu8v6 & Cxu8v6)); +assign Qxu8v6 = (!Pehet6); +assign Xxu8v6 = (!Cbhet6); +assign Eyu8v6 = (!Vwu8v6); +assign Syu8v6 = (~(H8k7z6[7] & Pshet6)); +assign Lyu8v6 = (~(H8k7z6[6] & C4v8v6)); +assign Zyu8v6 = (~(Syu8v6 & Lyu8v6)); +assign I0v8v6 = (~(Cphet6 & Zyu8v6)); +assign Nzu8v6 = (~(H8k7z6[5] & Pshet6)); +assign Gzu8v6 = (~(H8k7z6[4] & C4v8v6)); +assign Uzu8v6 = (~(Nzu8v6 & Gzu8v6)); +assign B0v8v6 = (~(Uzu8v6 & V3v8v6)); +assign P0v8v6 = (~(I0v8v6 & B0v8v6)); +assign O3v8v6 = (~(Plhet6 & P0v8v6)); +assign D1v8v6 = (~(H8k7z6[3] & Pshet6)); +assign W0v8v6 = (~(H8k7z6[2] & C4v8v6)); +assign K1v8v6 = (~(D1v8v6 & W0v8v6)); +assign T2v8v6 = (~(K1v8v6 & Cphet6)); +assign Y1v8v6 = (~(H8k7z6[1] & Pshet6)); +assign R1v8v6 = (~(H8k7z6[0] & C4v8v6)); +assign F2v8v6 = (~(Y1v8v6 & R1v8v6)); +assign M2v8v6 = (~(F2v8v6 & V3v8v6)); +assign A3v8v6 = (~(T2v8v6 & M2v8v6)); +assign H3v8v6 = (J4v8v6 | Plhet6); +assign Cihet6 = (~(O3v8v6 & H3v8v6)); +assign V3v8v6 = (!Cphet6); +assign C4v8v6 = (!Pshet6); +assign J4v8v6 = (!A3v8v6); +assign X4v8v6 = (~(Pik7z6[7] & P6iet6)); +assign Q4v8v6 = (~(Pik7z6[6] & Aav8v6)); +assign E5v8v6 = (~(X4v8v6 & Q4v8v6)); +assign N6v8v6 = (~(C3iet6 & E5v8v6)); +assign S5v8v6 = (~(Pik7z6[5] & P6iet6)); +assign L5v8v6 = (~(Pik7z6[4] & Aav8v6)); +assign Z5v8v6 = (~(S5v8v6 & L5v8v6)); +assign G6v8v6 = (~(Z5v8v6 & Hav8v6)); +assign U6v8v6 = (~(N6v8v6 & G6v8v6)); +assign T9v8v6 = (~(Pzhet6 & U6v8v6)); +assign I7v8v6 = (~(Pik7z6[3] & P6iet6)); +assign B7v8v6 = (~(Pik7z6[2] & Aav8v6)); +assign P7v8v6 = (~(I7v8v6 & B7v8v6)); +assign Y8v8v6 = (~(P7v8v6 & C3iet6)); +assign D8v8v6 = (~(Pik7z6[1] & P6iet6)); +assign W7v8v6 = (~(Pik7z6[0] & Aav8v6)); +assign K8v8v6 = (~(D8v8v6 & W7v8v6)); +assign R8v8v6 = (~(K8v8v6 & Hav8v6)); +assign F9v8v6 = (~(Y8v8v6 & R8v8v6)); +assign M9v8v6 = (Oav8v6 | Pzhet6); +assign Cwhet6 = (~(T9v8v6 & M9v8v6)); +assign Aav8v6 = (!P6iet6); +assign Hav8v6 = (!C3iet6); +assign Oav8v6 = (!F9v8v6); +assign Cbv8v6 = (~(Pik7z6[7] & Pkiet6)); +assign Vav8v6 = (~(Pik7z6[6] & Mgv8v6)); +assign Jbv8v6 = (~(Cbv8v6 & Vav8v6)); +assign Scv8v6 = (~(Chiet6 & Jbv8v6)); +assign Xbv8v6 = (~(Pik7z6[5] & Pkiet6)); +assign Qbv8v6 = (~(Pik7z6[4] & Mgv8v6)); +assign Ecv8v6 = (~(Xbv8v6 & Qbv8v6)); +assign Lcv8v6 = (~(Ecv8v6 & Fgv8v6)); +assign Zcv8v6 = (~(Scv8v6 & Lcv8v6)); +assign Yfv8v6 = (~(Pdiet6 & Zcv8v6)); +assign Ndv8v6 = (~(Pik7z6[3] & Pkiet6)); +assign Gdv8v6 = (~(Pik7z6[2] & Mgv8v6)); +assign Udv8v6 = (~(Ndv8v6 & Gdv8v6)); +assign Dfv8v6 = (~(Udv8v6 & Chiet6)); +assign Iev8v6 = (~(Pik7z6[1] & Pkiet6)); +assign Bev8v6 = (~(Pik7z6[0] & Mgv8v6)); +assign Pev8v6 = (~(Iev8v6 & Bev8v6)); +assign Wev8v6 = (~(Pev8v6 & Fgv8v6)); +assign Kfv8v6 = (~(Dfv8v6 & Wev8v6)); +assign Rfv8v6 = (Tgv8v6 | Pdiet6); +assign Caiet6 = (~(Yfv8v6 & Rfv8v6)); +assign Fgv8v6 = (!Chiet6); +assign Mgv8v6 = (!Pkiet6); +assign Tgv8v6 = (!Kfv8v6); +assign Hhv8v6 = (~(Xsk7z6[7] & Pyiet6)); +assign Ahv8v6 = (~(Xsk7z6[6] & Kmv8v6)); +assign Ohv8v6 = (~(Hhv8v6 & Ahv8v6)); +assign Xiv8v6 = (~(Cviet6 & Ohv8v6)); +assign Civ8v6 = (~(Xsk7z6[5] & Pyiet6)); +assign Vhv8v6 = (~(Xsk7z6[4] & Kmv8v6)); +assign Jiv8v6 = (~(Civ8v6 & Vhv8v6)); +assign Qiv8v6 = (~(Jiv8v6 & Rmv8v6)); +assign Ejv8v6 = (~(Xiv8v6 & Qiv8v6)); +assign Dmv8v6 = (~(Priet6 & Ejv8v6)); +assign Sjv8v6 = (~(Xsk7z6[3] & Pyiet6)); +assign Ljv8v6 = (~(Xsk7z6[2] & Kmv8v6)); +assign Zjv8v6 = (~(Sjv8v6 & Ljv8v6)); +assign Ilv8v6 = (~(Zjv8v6 & Cviet6)); +assign Nkv8v6 = (~(Xsk7z6[1] & Pyiet6)); +assign Gkv8v6 = (~(Xsk7z6[0] & Kmv8v6)); +assign Ukv8v6 = (~(Nkv8v6 & Gkv8v6)); +assign Blv8v6 = (~(Ukv8v6 & Rmv8v6)); +assign Plv8v6 = (~(Ilv8v6 & Blv8v6)); +assign Wlv8v6 = (Ymv8v6 | Priet6); +assign Coiet6 = (~(Dmv8v6 & Wlv8v6)); +assign Kmv8v6 = (!Pyiet6); +assign Rmv8v6 = (!Cviet6); +assign Ymv8v6 = (!Plv8v6); +assign Mnv8v6 = (~(Xsk7z6[7] & Pcjet6)); +assign Fnv8v6 = (~(Xsk7z6[6] & Wsv8v6)); +assign Tnv8v6 = (~(Mnv8v6 & Fnv8v6)); +assign Cpv8v6 = (~(C9jet6 & Tnv8v6)); +assign Hov8v6 = (~(Xsk7z6[5] & Pcjet6)); +assign Aov8v6 = (~(Xsk7z6[4] & Wsv8v6)); +assign Oov8v6 = (~(Hov8v6 & Aov8v6)); +assign Vov8v6 = (~(Oov8v6 & Psv8v6)); +assign Jpv8v6 = (~(Cpv8v6 & Vov8v6)); +assign Isv8v6 = (~(P5jet6 & Jpv8v6)); +assign Xpv8v6 = (~(Xsk7z6[3] & Pcjet6)); +assign Qpv8v6 = (~(Xsk7z6[2] & Wsv8v6)); +assign Eqv8v6 = (~(Xpv8v6 & Qpv8v6)); +assign Nrv8v6 = (~(Eqv8v6 & C9jet6)); +assign Sqv8v6 = (~(Xsk7z6[1] & Pcjet6)); +assign Lqv8v6 = (~(Xsk7z6[0] & Wsv8v6)); +assign Zqv8v6 = (~(Sqv8v6 & Lqv8v6)); +assign Grv8v6 = (~(Zqv8v6 & Psv8v6)); +assign Urv8v6 = (~(Nrv8v6 & Grv8v6)); +assign Bsv8v6 = (Dtv8v6 | P5jet6); +assign C2jet6 = (~(Isv8v6 & Bsv8v6)); +assign Psv8v6 = (!C9jet6); +assign Wsv8v6 = (!Pcjet6); +assign Dtv8v6 = (!Urv8v6); +assign Rtv8v6 = (~(F3l7z6[7] & Pqjet6)); +assign Ktv8v6 = (~(F3l7z6[6] & Uyv8v6)); +assign Ytv8v6 = (~(Rtv8v6 & Ktv8v6)); +assign Hvv8v6 = (~(Cnjet6 & Ytv8v6)); +assign Muv8v6 = (~(F3l7z6[5] & Pqjet6)); +assign Fuv8v6 = (~(F3l7z6[4] & Uyv8v6)); +assign Tuv8v6 = (~(Muv8v6 & Fuv8v6)); +assign Avv8v6 = (~(Tuv8v6 & Bzv8v6)); +assign Ovv8v6 = (~(Hvv8v6 & Avv8v6)); +assign Nyv8v6 = (~(Pjjet6 & Ovv8v6)); +assign Cwv8v6 = (~(F3l7z6[3] & Pqjet6)); +assign Vvv8v6 = (~(F3l7z6[2] & Uyv8v6)); +assign Jwv8v6 = (~(Cwv8v6 & Vvv8v6)); +assign Sxv8v6 = (~(Jwv8v6 & Cnjet6)); +assign Xwv8v6 = (~(F3l7z6[1] & Pqjet6)); +assign Qwv8v6 = (~(F3l7z6[0] & Uyv8v6)); +assign Exv8v6 = (~(Xwv8v6 & Qwv8v6)); +assign Lxv8v6 = (~(Exv8v6 & Bzv8v6)); +assign Zxv8v6 = (~(Sxv8v6 & Lxv8v6)); +assign Gyv8v6 = (Izv8v6 | Pjjet6); +assign Cgjet6 = (~(Nyv8v6 & Gyv8v6)); +assign Uyv8v6 = (!Pqjet6); +assign Bzv8v6 = (!Cnjet6); +assign Izv8v6 = (!Zxv8v6); +assign Wzv8v6 = (~(F3l7z6[7] & P4ket6)); +assign Pzv8v6 = (~(F3l7z6[6] & G5w8v6)); +assign D0w8v6 = (~(Wzv8v6 & Pzv8v6)); +assign M1w8v6 = (~(C1ket6 & D0w8v6)); +assign R0w8v6 = (~(F3l7z6[5] & P4ket6)); +assign K0w8v6 = (~(F3l7z6[4] & G5w8v6)); +assign Y0w8v6 = (~(R0w8v6 & K0w8v6)); +assign F1w8v6 = (~(Y0w8v6 & Z4w8v6)); +assign T1w8v6 = (~(M1w8v6 & F1w8v6)); +assign S4w8v6 = (~(Pxjet6 & T1w8v6)); +assign H2w8v6 = (~(F3l7z6[3] & P4ket6)); +assign A2w8v6 = (~(F3l7z6[2] & G5w8v6)); +assign O2w8v6 = (~(H2w8v6 & A2w8v6)); +assign X3w8v6 = (~(O2w8v6 & C1ket6)); +assign C3w8v6 = (~(F3l7z6[1] & P4ket6)); +assign V2w8v6 = (~(F3l7z6[0] & G5w8v6)); +assign J3w8v6 = (~(C3w8v6 & V2w8v6)); +assign Q3w8v6 = (~(J3w8v6 & Z4w8v6)); +assign E4w8v6 = (~(X3w8v6 & Q3w8v6)); +assign L4w8v6 = (N5w8v6 | Pxjet6); +assign Cujet6 = (~(S4w8v6 & L4w8v6)); +assign Z4w8v6 = (!C1ket6); +assign G5w8v6 = (!P4ket6); +assign N5w8v6 = (!E4w8v6); +assign B6w8v6 = (~(Ndl7z6[7] & Piket6)); +assign U5w8v6 = (~(Ndl7z6[6] & Ebw8v6)); +assign I6w8v6 = (~(B6w8v6 & U5w8v6)); +assign R7w8v6 = (~(Cfket6 & I6w8v6)); +assign W6w8v6 = (~(Ndl7z6[5] & Piket6)); +assign P6w8v6 = (~(Ndl7z6[4] & Ebw8v6)); +assign D7w8v6 = (~(W6w8v6 & P6w8v6)); +assign K7w8v6 = (~(D7w8v6 & Lbw8v6)); +assign Y7w8v6 = (~(R7w8v6 & K7w8v6)); +assign Xaw8v6 = (~(Pbket6 & Y7w8v6)); +assign M8w8v6 = (~(Ndl7z6[3] & Piket6)); +assign F8w8v6 = (~(Ndl7z6[2] & Ebw8v6)); +assign T8w8v6 = (~(M8w8v6 & F8w8v6)); +assign Caw8v6 = (~(T8w8v6 & Cfket6)); +assign H9w8v6 = (~(Ndl7z6[1] & Piket6)); +assign A9w8v6 = (~(Ndl7z6[0] & Ebw8v6)); +assign O9w8v6 = (~(H9w8v6 & A9w8v6)); +assign V9w8v6 = (~(O9w8v6 & Lbw8v6)); +assign Jaw8v6 = (~(Caw8v6 & V9w8v6)); +assign Qaw8v6 = (Sbw8v6 | Pbket6); +assign C8ket6 = (~(Xaw8v6 & Qaw8v6)); +assign Ebw8v6 = (!Piket6); +assign Lbw8v6 = (!Cfket6); +assign Sbw8v6 = (!Jaw8v6); +assign Gcw8v6 = (~(Ndl7z6[7] & Pwket6)); +assign Zbw8v6 = (~(Ndl7z6[6] & Qhw8v6)); +assign Ncw8v6 = (~(Gcw8v6 & Zbw8v6)); +assign Wdw8v6 = (~(Ctket6 & Ncw8v6)); +assign Bdw8v6 = (~(Ndl7z6[5] & Pwket6)); +assign Ucw8v6 = (~(Ndl7z6[4] & Qhw8v6)); +assign Idw8v6 = (~(Bdw8v6 & Ucw8v6)); +assign Pdw8v6 = (~(Idw8v6 & Jhw8v6)); +assign Dew8v6 = (~(Wdw8v6 & Pdw8v6)); +assign Chw8v6 = (~(Ppket6 & Dew8v6)); +assign Rew8v6 = (~(Ndl7z6[3] & Pwket6)); +assign Kew8v6 = (~(Ndl7z6[2] & Qhw8v6)); +assign Yew8v6 = (~(Rew8v6 & Kew8v6)); +assign Hgw8v6 = (~(Yew8v6 & Ctket6)); +assign Mfw8v6 = (~(Ndl7z6[1] & Pwket6)); +assign Ffw8v6 = (~(Ndl7z6[0] & Qhw8v6)); +assign Tfw8v6 = (~(Mfw8v6 & Ffw8v6)); +assign Agw8v6 = (~(Tfw8v6 & Jhw8v6)); +assign Ogw8v6 = (~(Hgw8v6 & Agw8v6)); +assign Vgw8v6 = (Xhw8v6 | Ppket6); +assign Cmket6 = (~(Chw8v6 & Vgw8v6)); +assign Jhw8v6 = (!Ctket6); +assign Qhw8v6 = (!Pwket6); +assign Xhw8v6 = (!Ogw8v6); +assign Liw8v6 = (~(Vnl7z6[7] & Palet6)); +assign Eiw8v6 = (~(Vnl7z6[6] & Onw8v6)); +assign Siw8v6 = (~(Liw8v6 & Eiw8v6)); +assign Bkw8v6 = (~(C7let6 & Siw8v6)); +assign Gjw8v6 = (~(Vnl7z6[5] & Palet6)); +assign Ziw8v6 = (~(Vnl7z6[4] & Onw8v6)); +assign Njw8v6 = (~(Gjw8v6 & Ziw8v6)); +assign Ujw8v6 = (~(Njw8v6 & Vnw8v6)); +assign Ikw8v6 = (~(Bkw8v6 & Ujw8v6)); +assign Hnw8v6 = (~(P3let6 & Ikw8v6)); +assign Wkw8v6 = (~(Vnl7z6[3] & Palet6)); +assign Pkw8v6 = (~(Vnl7z6[2] & Onw8v6)); +assign Dlw8v6 = (~(Wkw8v6 & Pkw8v6)); +assign Mmw8v6 = (~(Dlw8v6 & C7let6)); +assign Rlw8v6 = (~(Vnl7z6[1] & Palet6)); +assign Klw8v6 = (~(Vnl7z6[0] & Onw8v6)); +assign Ylw8v6 = (~(Rlw8v6 & Klw8v6)); +assign Fmw8v6 = (~(Ylw8v6 & Vnw8v6)); +assign Tmw8v6 = (~(Mmw8v6 & Fmw8v6)); +assign Anw8v6 = (Cow8v6 | P3let6); +assign C0let6 = (~(Hnw8v6 & Anw8v6)); +assign Onw8v6 = (!Palet6); +assign Vnw8v6 = (!C7let6); +assign Cow8v6 = (!Tmw8v6); +assign Qow8v6 = (~(Vnl7z6[7] & Polet6)); +assign Jow8v6 = (~(Vnl7z6[6] & Auw8v6)); +assign Xow8v6 = (~(Qow8v6 & Jow8v6)); +assign Gqw8v6 = (~(Cllet6 & Xow8v6)); +assign Lpw8v6 = (~(Vnl7z6[5] & Polet6)); +assign Epw8v6 = (~(Vnl7z6[4] & Auw8v6)); +assign Spw8v6 = (~(Lpw8v6 & Epw8v6)); +assign Zpw8v6 = (~(Spw8v6 & Ttw8v6)); +assign Nqw8v6 = (~(Gqw8v6 & Zpw8v6)); +assign Mtw8v6 = (~(Phlet6 & Nqw8v6)); +assign Brw8v6 = (~(Vnl7z6[3] & Polet6)); +assign Uqw8v6 = (~(Vnl7z6[2] & Auw8v6)); +assign Irw8v6 = (~(Brw8v6 & Uqw8v6)); +assign Rsw8v6 = (~(Irw8v6 & Cllet6)); +assign Wrw8v6 = (~(Vnl7z6[1] & Polet6)); +assign Prw8v6 = (~(Vnl7z6[0] & Auw8v6)); +assign Dsw8v6 = (~(Wrw8v6 & Prw8v6)); +assign Ksw8v6 = (~(Dsw8v6 & Ttw8v6)); +assign Ysw8v6 = (~(Rsw8v6 & Ksw8v6)); +assign Ftw8v6 = (Huw8v6 | Phlet6); +assign Celet6 = (~(Mtw8v6 & Ftw8v6)); +assign Ttw8v6 = (!Cllet6); +assign Auw8v6 = (!Polet6); +assign Huw8v6 = (!Ysw8v6); +assign Vuw8v6 = (~(Dyl7z6[7] & P2met6)); +assign Ouw8v6 = (~(Dyl7z6[6] & Yzw8v6)); +assign Cvw8v6 = (~(Vuw8v6 & Ouw8v6)); +assign Lww8v6 = (~(Czlet6 & Cvw8v6)); +assign Qvw8v6 = (~(Dyl7z6[5] & P2met6)); +assign Jvw8v6 = (~(Dyl7z6[4] & Yzw8v6)); +assign Xvw8v6 = (~(Qvw8v6 & Jvw8v6)); +assign Eww8v6 = (~(Xvw8v6 & F0x8v6)); +assign Sww8v6 = (~(Lww8v6 & Eww8v6)); +assign Rzw8v6 = (~(Pvlet6 & Sww8v6)); +assign Gxw8v6 = (~(Dyl7z6[3] & P2met6)); +assign Zww8v6 = (~(Dyl7z6[2] & Yzw8v6)); +assign Nxw8v6 = (~(Gxw8v6 & Zww8v6)); +assign Wyw8v6 = (~(Nxw8v6 & Czlet6)); +assign Byw8v6 = (~(Dyl7z6[1] & P2met6)); +assign Uxw8v6 = (~(Dyl7z6[0] & Yzw8v6)); +assign Iyw8v6 = (~(Byw8v6 & Uxw8v6)); +assign Pyw8v6 = (~(Iyw8v6 & F0x8v6)); +assign Dzw8v6 = (~(Wyw8v6 & Pyw8v6)); +assign Kzw8v6 = (M0x8v6 | Pvlet6); +assign Cslet6 = (~(Rzw8v6 & Kzw8v6)); +assign Yzw8v6 = (!P2met6); +assign F0x8v6 = (!Czlet6); +assign M0x8v6 = (!Dzw8v6); +assign A1x8v6 = (~(Dyl7z6[7] & Pgmet6)); +assign T0x8v6 = (~(Dyl7z6[6] & K6x8v6)); +assign H1x8v6 = (~(A1x8v6 & T0x8v6)); +assign Q2x8v6 = (~(Cdmet6 & H1x8v6)); +assign V1x8v6 = (~(Dyl7z6[5] & Pgmet6)); +assign O1x8v6 = (~(Dyl7z6[4] & K6x8v6)); +assign C2x8v6 = (~(V1x8v6 & O1x8v6)); +assign J2x8v6 = (~(C2x8v6 & D6x8v6)); +assign X2x8v6 = (~(Q2x8v6 & J2x8v6)); +assign W5x8v6 = (~(P9met6 & X2x8v6)); +assign L3x8v6 = (~(Dyl7z6[3] & Pgmet6)); +assign E3x8v6 = (~(Dyl7z6[2] & K6x8v6)); +assign S3x8v6 = (~(L3x8v6 & E3x8v6)); +assign B5x8v6 = (~(S3x8v6 & Cdmet6)); +assign G4x8v6 = (~(Dyl7z6[1] & Pgmet6)); +assign Z3x8v6 = (~(Dyl7z6[0] & K6x8v6)); +assign N4x8v6 = (~(G4x8v6 & Z3x8v6)); +assign U4x8v6 = (~(N4x8v6 & D6x8v6)); +assign I5x8v6 = (~(B5x8v6 & U4x8v6)); +assign P5x8v6 = (R6x8v6 | P9met6); +assign C6met6 = (~(W5x8v6 & P5x8v6)); +assign D6x8v6 = (!Cdmet6); +assign K6x8v6 = (!Pgmet6); +assign R6x8v6 = (!I5x8v6); +assign F7x8v6 = (~(L8m7z6[7] & Pumet6)); +assign Y6x8v6 = (~(L8m7z6[6] & Icx8v6)); +assign M7x8v6 = (~(F7x8v6 & Y6x8v6)); +assign V8x8v6 = (~(Crmet6 & M7x8v6)); +assign A8x8v6 = (~(L8m7z6[5] & Pumet6)); +assign T7x8v6 = (~(L8m7z6[4] & Icx8v6)); +assign H8x8v6 = (~(A8x8v6 & T7x8v6)); +assign O8x8v6 = (~(H8x8v6 & Pcx8v6)); +assign C9x8v6 = (~(V8x8v6 & O8x8v6)); +assign Bcx8v6 = (~(Pnmet6 & C9x8v6)); +assign Q9x8v6 = (~(L8m7z6[3] & Pumet6)); +assign J9x8v6 = (~(L8m7z6[2] & Icx8v6)); +assign X9x8v6 = (~(Q9x8v6 & J9x8v6)); +assign Gbx8v6 = (~(X9x8v6 & Crmet6)); +assign Lax8v6 = (~(L8m7z6[1] & Pumet6)); +assign Eax8v6 = (~(L8m7z6[0] & Icx8v6)); +assign Sax8v6 = (~(Lax8v6 & Eax8v6)); +assign Zax8v6 = (~(Sax8v6 & Pcx8v6)); +assign Nbx8v6 = (~(Gbx8v6 & Zax8v6)); +assign Ubx8v6 = (Wcx8v6 | Pnmet6); +assign Ckmet6 = (~(Bcx8v6 & Ubx8v6)); +assign Icx8v6 = (!Pumet6); +assign Pcx8v6 = (!Crmet6); +assign Wcx8v6 = (!Nbx8v6); +assign Kdx8v6 = (~(L8m7z6[7] & P8net6)); +assign Ddx8v6 = (~(L8m7z6[6] & Uix8v6)); +assign Rdx8v6 = (~(Kdx8v6 & Ddx8v6)); +assign Afx8v6 = (~(C5net6 & Rdx8v6)); +assign Fex8v6 = (~(L8m7z6[5] & P8net6)); +assign Ydx8v6 = (~(L8m7z6[4] & Uix8v6)); +assign Mex8v6 = (~(Fex8v6 & Ydx8v6)); +assign Tex8v6 = (~(Mex8v6 & Nix8v6)); +assign Hfx8v6 = (~(Afx8v6 & Tex8v6)); +assign Gix8v6 = (~(P1net6 & Hfx8v6)); +assign Vfx8v6 = (~(L8m7z6[3] & P8net6)); +assign Ofx8v6 = (~(L8m7z6[2] & Uix8v6)); +assign Cgx8v6 = (~(Vfx8v6 & Ofx8v6)); +assign Lhx8v6 = (~(Cgx8v6 & C5net6)); +assign Qgx8v6 = (~(L8m7z6[1] & P8net6)); +assign Jgx8v6 = (~(L8m7z6[0] & Uix8v6)); +assign Xgx8v6 = (~(Qgx8v6 & Jgx8v6)); +assign Ehx8v6 = (~(Xgx8v6 & Nix8v6)); +assign Shx8v6 = (~(Lhx8v6 & Ehx8v6)); +assign Zhx8v6 = (Bjx8v6 | P1net6); +assign Cymet6 = (~(Gix8v6 & Zhx8v6)); +assign Nix8v6 = (!C5net6); +assign Uix8v6 = (!P8net6); +assign Bjx8v6 = (!Shx8v6); +assign Tzx8v6 = (S0zet6 & T2zet6); +assign Pjx8v6 = (~(Vbo7v6 & Tzx8v6)); +assign A0y8v6 = (S0zet6 & D5y8v6); +assign Ijx8v6 = (~(M6a7z6 & A0y8v6)); +assign Rkx8v6 = (Pjx8v6 & Ijx8v6); +assign V0y8v6 = (~(D5y8v6 | S0zet6)); +assign Dkx8v6 = (~(U6a7z6 & V0y8v6)); +assign C1y8v6 = (~(T2zet6 | S0zet6)); +assign Wjx8v6 = (~(C7a7z6 & C1y8v6)); +assign Kkx8v6 = (Dkx8v6 & Wjx8v6); +assign Ykx8v6 = (~(Rkx8v6 & Kkx8v6)); +assign Jnx8v6 = (~(Ryyet6 & Ykx8v6)); +assign Mlx8v6 = (~(K7a7z6 & Tzx8v6)); +assign Flx8v6 = (~(S7a7z6 & A0y8v6)); +assign Omx8v6 = (Mlx8v6 & Flx8v6); +assign Amx8v6 = (~(A8a7z6 & V0y8v6)); +assign Tlx8v6 = (~(I8a7z6 & C1y8v6)); +assign Hmx8v6 = (Amx8v6 & Tlx8v6); +assign Vmx8v6 = (~(Omx8v6 & Hmx8v6)); +assign Cnx8v6 = (~(Vmx8v6 & W4y8v6)); +assign Qnx8v6 = (~(Jnx8v6 & Cnx8v6)); +assign Tsx8v6 = (~(Ean7z6[3] & Qnx8v6)); +assign Eox8v6 = (~(Q8a7z6 & Tzx8v6)); +assign Xnx8v6 = (~(Y8a7z6 & A0y8v6)); +assign Gpx8v6 = (Eox8v6 & Xnx8v6); +assign Sox8v6 = (~(G9a7z6 & V0y8v6)); +assign Lox8v6 = (~(Cco7v6 & C1y8v6)); +assign Zox8v6 = (Sox8v6 & Lox8v6); +assign Npx8v6 = (~(Gpx8v6 & Zox8v6)); +assign Yrx8v6 = (~(Npx8v6 & Ryyet6)); +assign Bqx8v6 = (~(O9a7z6 & Tzx8v6)); +assign Upx8v6 = (~(W9a7z6 & A0y8v6)); +assign Drx8v6 = (Bqx8v6 & Upx8v6); +assign Pqx8v6 = (~(Eaa7z6 & V0y8v6)); +assign Iqx8v6 = (~(Maa7z6 & C1y8v6)); +assign Wqx8v6 = (Pqx8v6 & Iqx8v6); +assign Krx8v6 = (~(Drx8v6 & Wqx8v6)); +assign Rrx8v6 = (~(Krx8v6 & W4y8v6)); +assign Fsx8v6 = (~(Yrx8v6 & Rrx8v6)); +assign Msx8v6 = (~(Fsx8v6 & K5y8v6)); +assign Atx8v6 = (~(Tsx8v6 & Msx8v6)); +assign P4y8v6 = (~(Ean7z6[4] & Atx8v6)); +assign Otx8v6 = (~(Uaa7z6 & Tzx8v6)); +assign Htx8v6 = (~(Cba7z6 & A0y8v6)); +assign Qux8v6 = (Otx8v6 & Htx8v6); +assign Cux8v6 = (~(Kba7z6 & V0y8v6)); +assign Vtx8v6 = (~(Jco7v6 & C1y8v6)); +assign Jux8v6 = (Cux8v6 & Vtx8v6); +assign Xux8v6 = (~(Qux8v6 & Jux8v6)); +assign Ixx8v6 = (~(Xux8v6 & Ryyet6)); +assign Lvx8v6 = (~(Sba7z6 & Tzx8v6)); +assign Evx8v6 = (~(Aca7z6 & A0y8v6)); +assign Nwx8v6 = (Lvx8v6 & Evx8v6); +assign Zvx8v6 = (~(Ica7z6 & V0y8v6)); +assign Svx8v6 = (~(Qca7z6 & C1y8v6)); +assign Gwx8v6 = (Zvx8v6 & Svx8v6); +assign Uwx8v6 = (~(Nwx8v6 & Gwx8v6)); +assign Bxx8v6 = (~(Uwx8v6 & W4y8v6)); +assign Pxx8v6 = (~(Ixx8v6 & Bxx8v6)); +assign U3y8v6 = (~(Pxx8v6 & Ean7z6[3])); +assign Dyx8v6 = (~(Yca7z6 & Tzx8v6)); +assign Wxx8v6 = (~(Gda7z6 & A0y8v6)); +assign Fzx8v6 = (Dyx8v6 & Wxx8v6); +assign Ryx8v6 = (~(Oda7z6 & V0y8v6)); +assign Kyx8v6 = (~(Qco7v6 & C1y8v6)); +assign Yyx8v6 = (Ryx8v6 & Kyx8v6); +assign Mzx8v6 = (~(Fzx8v6 & Yyx8v6)); +assign Z2y8v6 = (~(Mzx8v6 & Ryyet6)); +assign O0y8v6 = (~(Wda7z6 & Tzx8v6)); +assign H0y8v6 = (~(Eea7z6 & A0y8v6)); +assign E2y8v6 = (O0y8v6 & H0y8v6); +assign Q1y8v6 = (~(Mea7z6 & V0y8v6)); +assign J1y8v6 = (~(Uea7z6 & C1y8v6)); +assign X1y8v6 = (Q1y8v6 & J1y8v6); +assign L2y8v6 = (~(E2y8v6 & X1y8v6)); +assign S2y8v6 = (~(L2y8v6 & W4y8v6)); +assign G3y8v6 = (~(Z2y8v6 & S2y8v6)); +assign N3y8v6 = (~(G3y8v6 & K5y8v6)); +assign B4y8v6 = (U3y8v6 & N3y8v6); +assign I4y8v6 = (B4y8v6 | Ean7z6[4]); +assign Qxxet6 = (~(P4y8v6 & I4y8v6)); +assign W4y8v6 = (!Ryyet6); +assign D5y8v6 = (!T2zet6); +assign K5y8v6 = (!Ean7z6[3]); +assign Cmy8v6 = (Hq27v6 & Or27v6); +assign Y5y8v6 = (~(Ies7z6[31] & Cmy8v6)); +assign Jmy8v6 = (Hq27v6 & Fry8v6); +assign R5y8v6 = (~(Ies7z6[30] & Jmy8v6)); +assign A7y8v6 = (Y5y8v6 & R5y8v6); +assign Eny8v6 = (~(Fry8v6 | Hq27v6)); +assign M6y8v6 = (~(Ies7z6[29] & Eny8v6)); +assign Lny8v6 = (~(Or27v6 | Hq27v6)); +assign F6y8v6 = (~(Ies7z6[28] & Lny8v6)); +assign T6y8v6 = (M6y8v6 & F6y8v6); +assign H7y8v6 = (~(A7y8v6 & T6y8v6)); +assign S9y8v6 = (~(Ap27v6 & H7y8v6)); +assign V7y8v6 = (~(Ies7z6[27] & Cmy8v6)); +assign O7y8v6 = (~(Ies7z6[26] & Jmy8v6)); +assign X8y8v6 = (V7y8v6 & O7y8v6); +assign J8y8v6 = (~(Ies7z6[25] & Eny8v6)); +assign C8y8v6 = (~(Ies7z6[24] & Lny8v6)); +assign Q8y8v6 = (J8y8v6 & C8y8v6); +assign E9y8v6 = (~(X8y8v6 & Q8y8v6)); +assign L9y8v6 = (~(E9y8v6 & Mry8v6)); +assign Z9y8v6 = (~(S9y8v6 & L9y8v6)); +assign Cfy8v6 = (~(Tn27v6 & Z9y8v6)); +assign Nay8v6 = (~(Ies7z6[23] & Cmy8v6)); +assign Gay8v6 = (~(Ies7z6[22] & Jmy8v6)); +assign Pby8v6 = (Nay8v6 & Gay8v6); +assign Bby8v6 = (~(Ies7z6[21] & Eny8v6)); +assign Uay8v6 = (~(Ies7z6[20] & Lny8v6)); +assign Iby8v6 = (Bby8v6 & Uay8v6); +assign Wby8v6 = (~(Pby8v6 & Iby8v6)); +assign Hey8v6 = (~(Wby8v6 & Ap27v6)); +assign Kcy8v6 = (~(Ies7z6[19] & Cmy8v6)); +assign Dcy8v6 = (~(Ies7z6[18] & Jmy8v6)); +assign Mdy8v6 = (Kcy8v6 & Dcy8v6); +assign Ycy8v6 = (~(Ies7z6[17] & Eny8v6)); +assign Rcy8v6 = (~(Ies7z6[16] & Lny8v6)); +assign Fdy8v6 = (Ycy8v6 & Rcy8v6); +assign Tdy8v6 = (~(Mdy8v6 & Fdy8v6)); +assign Aey8v6 = (~(Tdy8v6 & Mry8v6)); +assign Oey8v6 = (~(Hey8v6 & Aey8v6)); +assign Vey8v6 = (~(Oey8v6 & Try8v6)); +assign Jfy8v6 = (~(Cfy8v6 & Vey8v6)); +assign Yqy8v6 = (~(Mm27v6 & Jfy8v6)); +assign Xfy8v6 = (~(Ies7z6[15] & Cmy8v6)); +assign Qfy8v6 = (~(Ies7z6[14] & Jmy8v6)); +assign Zgy8v6 = (Xfy8v6 & Qfy8v6); +assign Lgy8v6 = (~(Ies7z6[13] & Eny8v6)); +assign Egy8v6 = (~(Ies7z6[12] & Lny8v6)); +assign Sgy8v6 = (Lgy8v6 & Egy8v6); +assign Ghy8v6 = (~(Zgy8v6 & Sgy8v6)); +assign Rjy8v6 = (~(Ghy8v6 & Ap27v6)); +assign Uhy8v6 = (~(Ies7z6[11] & Cmy8v6)); +assign Nhy8v6 = (~(Ies7z6[10] & Jmy8v6)); +assign Wiy8v6 = (Uhy8v6 & Nhy8v6); +assign Iiy8v6 = (~(Ies7z6[9] & Eny8v6)); +assign Biy8v6 = (~(Ies7z6[8] & Lny8v6)); +assign Piy8v6 = (Iiy8v6 & Biy8v6); +assign Djy8v6 = (~(Wiy8v6 & Piy8v6)); +assign Kjy8v6 = (~(Djy8v6 & Mry8v6)); +assign Yjy8v6 = (~(Rjy8v6 & Kjy8v6)); +assign Dqy8v6 = (~(Yjy8v6 & Tn27v6)); +assign Mky8v6 = (~(Ies7z6[7] & Cmy8v6)); +assign Fky8v6 = (~(Ies7z6[6] & Jmy8v6)); +assign Oly8v6 = (Mky8v6 & Fky8v6); +assign Aly8v6 = (~(Ies7z6[5] & Eny8v6)); +assign Tky8v6 = (~(Ies7z6[4] & Lny8v6)); +assign Hly8v6 = (Aly8v6 & Tky8v6); +assign Vly8v6 = (~(Oly8v6 & Hly8v6)); +assign Ipy8v6 = (~(Vly8v6 & Ap27v6)); +assign Xmy8v6 = (~(Ies7z6[3] & Cmy8v6)); +assign Qmy8v6 = (~(Ies7z6[2] & Jmy8v6)); +assign Noy8v6 = (Xmy8v6 & Qmy8v6); +assign Zny8v6 = (~(Ies7z6[1] & Eny8v6)); +assign Sny8v6 = (~(Ies7z6[0] & Lny8v6)); +assign Goy8v6 = (Zny8v6 & Sny8v6); +assign Uoy8v6 = (~(Noy8v6 & Goy8v6)); +assign Bpy8v6 = (~(Uoy8v6 & Mry8v6)); +assign Ppy8v6 = (~(Ipy8v6 & Bpy8v6)); +assign Wpy8v6 = (~(Ppy8v6 & Try8v6)); +assign Kqy8v6 = (Dqy8v6 & Wpy8v6); +assign Rqy8v6 = (Kqy8v6 | Mm27v6); +assign Fl27v6 = (~(Yqy8v6 & Rqy8v6)); +assign Fry8v6 = (!Or27v6); +assign Mry8v6 = (!Ap27v6); +assign Try8v6 = (!Tn27v6); +assign P209v6 = (~(Znn7z6[3] | Znn7z6[2])); +assign Hsy8v6 = (~(V3pet6 & P209v6)); +assign I209v6 = (~(Znn7z6[1] | Znn7z6[3])); +assign Lfz8v6 = (Znn7z6[2] & I209v6); +assign Asy8v6 = (~(Bgpet6 & Lfz8v6)); +assign Euy8v6 = (Hsy8v6 & Asy8v6); +assign Z009v6 = (~(Znn7z6[2] | D309v6)); +assign Z8z8v6 = (Z009v6 & F409v6); +assign Cty8v6 = (~(Hspet6 & Z8z8v6)); +assign Ivz8v6 = (~(R309v6 | D309v6)); +assign Osy8v6 = (~(F409v6 | R309v6)); +assign G109v6 = (Ivz8v6 | Osy8v6); +assign Vsy8v6 = (~(W2n7z6[0] & G109v6)); +assign Qty8v6 = (Cty8v6 & Vsy8v6); +assign C7z8v6 = (Znn7z6[1] & Z009v6); +assign Jty8v6 = (~(N4qet6 & C7z8v6)); +assign Xty8v6 = (Qty8v6 & Jty8v6); +assign Proet6 = (~(Euy8v6 & Xty8v6)); +assign Suy8v6 = (~(U1pet6 & P209v6)); +assign Luy8v6 = (~(Aepet6 & Lfz8v6)); +assign Iwy8v6 = (Suy8v6 & Luy8v6); +assign Gvy8v6 = (~(Gqpet6 & Z8z8v6)); +assign Zuy8v6 = (~(W2n7z6[1] & G109v6)); +assign Uvy8v6 = (Gvy8v6 & Zuy8v6); +assign Nvy8v6 = (~(M2qet6 & C7z8v6)); +assign Bwy8v6 = (Uvy8v6 & Nvy8v6); +assign Opoet6 = (~(Iwy8v6 & Bwy8v6)); +assign Wwy8v6 = (~(Zbpet6 & P209v6)); +assign Pwy8v6 = (~(Fopet6 & Lfz8v6)); +assign Myy8v6 = (Wwy8v6 & Pwy8v6); +assign Kxy8v6 = (~(L0qet6 & Z8z8v6)); +assign Dxy8v6 = (~(J5n7z6[0] & G109v6)); +assign Yxy8v6 = (Kxy8v6 & Dxy8v6); +assign Rxy8v6 = (~(Rcqet6 & C7z8v6)); +assign Fyy8v6 = (Yxy8v6 & Rxy8v6); +assign Tzoet6 = (~(Myy8v6 & Fyy8v6)); +assign Azy8v6 = (~(Y9pet6 & P209v6)); +assign Tyy8v6 = (~(Empet6 & Lfz8v6)); +assign Q0z8v6 = (Azy8v6 & Tyy8v6); +assign Ozy8v6 = (~(Kypet6 & Z8z8v6)); +assign Hzy8v6 = (~(J5n7z6[1] & G109v6)); +assign C0z8v6 = (Ozy8v6 & Hzy8v6); +assign Vzy8v6 = (~(Qaqet6 & C7z8v6)); +assign J0z8v6 = (C0z8v6 & Vzy8v6); +assign Sxoet6 = (~(Q0z8v6 & J0z8v6)); +assign E1z8v6 = (~(X7pet6 & P209v6)); +assign X0z8v6 = (~(Dkpet6 & Lfz8v6)); +assign U2z8v6 = (E1z8v6 & X0z8v6); +assign S1z8v6 = (~(Jwpet6 & Z8z8v6)); +assign L1z8v6 = (~(J5n7z6[2] & G109v6)); +assign G2z8v6 = (S1z8v6 & L1z8v6); +assign Z1z8v6 = (~(P8qet6 & C7z8v6)); +assign N2z8v6 = (G2z8v6 & Z1z8v6); +assign Rvoet6 = (~(U2z8v6 & N2z8v6)); +assign I3z8v6 = (~(W5pet6 & P209v6)); +assign B3z8v6 = (~(Cipet6 & Lfz8v6)); +assign Y4z8v6 = (I3z8v6 & B3z8v6); +assign W3z8v6 = (~(Iupet6 & Z8z8v6)); +assign P3z8v6 = (~(J5n7z6[3] & G109v6)); +assign K4z8v6 = (W3z8v6 & P3z8v6); +assign D4z8v6 = (~(O6qet6 & C7z8v6)); +assign R4z8v6 = (K4z8v6 & D4z8v6); +assign Qtoet6 = (~(Y4z8v6 & R4z8v6)); +assign M5z8v6 = (~(Yotet6 & P209v6)); +assign F5z8v6 = (~(Dztet6 & Lfz8v6)); +assign V6z8v6 = (M5z8v6 & F5z8v6); +assign H6z8v6 = (~(Qvm7z6[0] & Ivz8v6)); +assign T5z8v6 = (~(R309v6 | Znn7z6[3])); +assign Waz8v6 = (T5z8v6 & Znn7z6[1]); +assign A6z8v6 = (~(X9yet6 & Waz8v6)); +assign O6z8v6 = (H6z8v6 & A6z8v6); +assign X5set6 = (~(V6z8v6 & O6z8v6)); +assign Q7z8v6 = (~(Cxtet6 & Lfz8v6)); +assign J7z8v6 = (~(Eia7z6 & C7z8v6)); +assign E8z8v6 = (Q7z8v6 & J7z8v6); +assign X7z8v6 = (~(Xmtet6 & P209v6)); +assign Baz8v6 = (E8z8v6 & X7z8v6); +assign S8z8v6 = (~(Qvm7z6[1] & Ivz8v6)); +assign L8z8v6 = (~(Icyet6 & Waz8v6)); +assign N9z8v6 = (S8z8v6 & L8z8v6); +assign G9z8v6 = (~(Mia7z6 & Z8z8v6)); +assign U9z8v6 = (N9z8v6 & G9z8v6); +assign W3set6 = (~(Baz8v6 & U9z8v6)); +assign Paz8v6 = (~(Wktet6 & P209v6)); +assign Iaz8v6 = (~(Bvtet6 & Lfz8v6)); +assign Ybz8v6 = (Paz8v6 & Iaz8v6); +assign Kbz8v6 = (~(Hjn7z6[7] & Ivz8v6)); +assign Xzz8v6 = (Z009v6 | Waz8v6); +assign Dbz8v6 = (~(T2zet6 & Xzz8v6)); +assign Rbz8v6 = (Kbz8v6 & Dbz8v6); +assign V1set6 = (~(Ybz8v6 & Rbz8v6)); +assign Fcz8v6 = (~(Hjn7z6[8] & Ivz8v6)); +assign Odz8v6 = (Fcz8v6 & K309v6); +assign Mcz8v6 = (F409v6 | Znn7z6[3]); +assign Cez8v6 = (~(Znn7z6[2] & Mcz8v6)); +assign Adz8v6 = (~(S0zet6 & Cez8v6)); +assign Tcz8v6 = (~(Attet6 & I209v6)); +assign Hdz8v6 = (Adz8v6 & Tcz8v6); +assign Uzret6 = (~(Odz8v6 & Hdz8v6)); +assign Vdz8v6 = (~(Hjn7z6[9] & Ivz8v6)); +assign Efz8v6 = (Vdz8v6 & K309v6); +assign Qez8v6 = (~(Ryyet6 & Cez8v6)); +assign Jez8v6 = (~(Zqtet6 & I209v6)); +assign Xez8v6 = (Qez8v6 & Jez8v6); +assign Txret6 = (~(Efz8v6 & Xez8v6)); +assign Zfz8v6 = (~(Hjn7z6[5] & Xzz8v6)); +assign E009v6 = (P209v6 | Lfz8v6); +assign Sfz8v6 = (~(Vitet6 & E009v6)); +assign Ngz8v6 = (Zfz8v6 & Sfz8v6); +assign Ggz8v6 = (~(Hjn7z6[10] & Ivz8v6)); +assign Svret6 = (~(Ngz8v6 & Ggz8v6)); +assign Bhz8v6 = (~(Hjn7z6[6] & Xzz8v6)); +assign Ugz8v6 = (~(Ugtet6 & E009v6)); +assign Phz8v6 = (Bhz8v6 & Ugz8v6); +assign Ihz8v6 = (~(Hjn7z6[11] & Ivz8v6)); +assign Rtret6 = (~(Phz8v6 & Ihz8v6)); +assign Diz8v6 = (~(Hjn7z6[7] & Xzz8v6)); +assign Whz8v6 = (~(Tetet6 & E009v6)); +assign Riz8v6 = (Diz8v6 & Whz8v6); +assign Kiz8v6 = (~(Hjn7z6[12] & Ivz8v6)); +assign Qrret6 = (~(Riz8v6 & Kiz8v6)); +assign Fjz8v6 = (~(Hjn7z6[8] & Xzz8v6)); +assign Yiz8v6 = (~(Sctet6 & E009v6)); +assign Tjz8v6 = (Fjz8v6 & Yiz8v6); +assign Mjz8v6 = (~(Hjn7z6[13] & Ivz8v6)); +assign Ppret6 = (~(Tjz8v6 & Mjz8v6)); +assign Hkz8v6 = (~(Hjn7z6[9] & Xzz8v6)); +assign Akz8v6 = (~(Ratet6 & E009v6)); +assign Vkz8v6 = (Hkz8v6 & Akz8v6); +assign Okz8v6 = (~(Hjn7z6[14] & Ivz8v6)); +assign Onret6 = (~(Vkz8v6 & Okz8v6)); +assign Jlz8v6 = (~(Hjn7z6[10] & Xzz8v6)); +assign Clz8v6 = (~(Q8tet6 & E009v6)); +assign Xlz8v6 = (Jlz8v6 & Clz8v6); +assign Qlz8v6 = (~(Hjn7z6[15] & Ivz8v6)); +assign Nlret6 = (~(Xlz8v6 & Qlz8v6)); +assign Lmz8v6 = (~(Hjn7z6[11] & Xzz8v6)); +assign Emz8v6 = (~(P6tet6 & E009v6)); +assign Zmz8v6 = (Lmz8v6 & Emz8v6); +assign Smz8v6 = (~(Hjn7z6[16] & Ivz8v6)); +assign Mjret6 = (~(Zmz8v6 & Smz8v6)); +assign Nnz8v6 = (~(Hjn7z6[12] & Xzz8v6)); +assign Gnz8v6 = (~(O4tet6 & E009v6)); +assign Boz8v6 = (Nnz8v6 & Gnz8v6); +assign Unz8v6 = (~(Hjn7z6[17] & Ivz8v6)); +assign Lhret6 = (~(Boz8v6 & Unz8v6)); +assign Poz8v6 = (~(Hjn7z6[13] & Xzz8v6)); +assign Ioz8v6 = (~(N2tet6 & E009v6)); +assign Dpz8v6 = (Poz8v6 & Ioz8v6); +assign Woz8v6 = (~(Hjn7z6[18] & Ivz8v6)); +assign Kfret6 = (~(Dpz8v6 & Woz8v6)); +assign Rpz8v6 = (~(Hjn7z6[14] & Xzz8v6)); +assign Kpz8v6 = (~(M0tet6 & E009v6)); +assign Fqz8v6 = (Rpz8v6 & Kpz8v6); +assign Ypz8v6 = (~(Hjn7z6[19] & Ivz8v6)); +assign Jdret6 = (~(Fqz8v6 & Ypz8v6)); +assign Tqz8v6 = (~(Hjn7z6[15] & Xzz8v6)); +assign Mqz8v6 = (~(Lyset6 & E009v6)); +assign Hrz8v6 = (Tqz8v6 & Mqz8v6); +assign Arz8v6 = (~(Hjn7z6[20] & Ivz8v6)); +assign Ibret6 = (~(Hrz8v6 & Arz8v6)); +assign Vrz8v6 = (~(Hjn7z6[16] & Xzz8v6)); +assign Orz8v6 = (~(Kwset6 & E009v6)); +assign Jsz8v6 = (Vrz8v6 & Orz8v6); +assign Csz8v6 = (~(Hjn7z6[21] & Ivz8v6)); +assign H9ret6 = (~(Jsz8v6 & Csz8v6)); +assign Xsz8v6 = (~(Hjn7z6[17] & Xzz8v6)); +assign Qsz8v6 = (~(Juset6 & E009v6)); +assign Ltz8v6 = (Xsz8v6 & Qsz8v6); +assign Etz8v6 = (~(Hjn7z6[22] & Ivz8v6)); +assign G7ret6 = (~(Ltz8v6 & Etz8v6)); +assign Ztz8v6 = (~(Hjn7z6[18] & Xzz8v6)); +assign Stz8v6 = (~(Isset6 & E009v6)); +assign Nuz8v6 = (Ztz8v6 & Stz8v6); +assign Guz8v6 = (~(Hjn7z6[23] & Ivz8v6)); +assign F5ret6 = (~(Nuz8v6 & Guz8v6)); +assign Bvz8v6 = (~(Hjn7z6[19] & Xzz8v6)); +assign Uuz8v6 = (~(Hqset6 & E009v6)); +assign Wvz8v6 = (Bvz8v6 & Uuz8v6); +assign Pvz8v6 = (~(Hjn7z6[24] & Ivz8v6)); +assign E3ret6 = (~(Wvz8v6 & Pvz8v6)); +assign Kwz8v6 = (~(Hjn7z6[20] & Xzz8v6)); +assign Dwz8v6 = (~(Goset6 & E009v6)); +assign D1ret6 = (~(Kwz8v6 & Dwz8v6)); +assign Ywz8v6 = (~(Hjn7z6[21] & Xzz8v6)); +assign Rwz8v6 = (~(Fmset6 & E009v6)); +assign Czqet6 = (~(Ywz8v6 & Rwz8v6)); +assign Mxz8v6 = (~(Hjn7z6[22] & Xzz8v6)); +assign Fxz8v6 = (~(Ekset6 & E009v6)); +assign Bxqet6 = (~(Mxz8v6 & Fxz8v6)); +assign Ayz8v6 = (~(Hjn7z6[23] & Xzz8v6)); +assign Txz8v6 = (~(Diset6 & E009v6)); +assign Avqet6 = (~(Ayz8v6 & Txz8v6)); +assign Oyz8v6 = (~(Hjn7z6[24] & Xzz8v6)); +assign Hyz8v6 = (~(Cgset6 & E009v6)); +assign Zsqet6 = (~(Oyz8v6 & Hyz8v6)); +assign Czz8v6 = (~(Hjn7z6[25] & Xzz8v6)); +assign Vyz8v6 = (~(Beset6 & E009v6)); +assign Yqqet6 = (~(Czz8v6 & Vyz8v6)); +assign Qzz8v6 = (~(Hjn7z6[26] & Xzz8v6)); +assign Jzz8v6 = (~(Acset6 & E009v6)); +assign Xoqet6 = (~(Qzz8v6 & Jzz8v6)); +assign S009v6 = (~(Hjn7z6[27] & Xzz8v6)); +assign L009v6 = (~(Z9set6 & E009v6)); +assign Wmqet6 = (~(S009v6 & L009v6)); +assign N109v6 = (G109v6 | Z009v6); +assign B209v6 = (~(Hjn7z6[28] & N109v6)); +assign U109v6 = (Sr97z6 | N109v6); +assign Vkqet6 = (~(B209v6 & U109v6)); +assign W209v6 = (P209v6 | I209v6); +assign Uiqet6 = (W209v6 | Hjn7z6[29]); +assign Tgqet6 = (Hjn7z6[30] & Y309v6); +assign Seqet6 = (Hjn7z6[31] & Y309v6); +assign D309v6 = (!Znn7z6[3]); +assign K309v6 = (!P209v6); +assign R309v6 = (!Znn7z6[2]); +assign Y309v6 = (!W209v6); +assign F409v6 = (!Znn7z6[1]); +assign Ra09v6 = (~(Gf09v6 | Yo37v6)); +assign T409v6 = (~(Iuvmz6[5] & Ra09v6)); +assign Ya09v6 = (~(M6s7z6[1] | Yo37v6)); +assign M409v6 = (~(Iuvmz6[7] & Ya09v6)); +assign Jd09v6 = (T409v6 & M409v6); +assign V509v6 = (Ze09v6 | Jd09v6); +assign H509v6 = (~(Iuvmz6[6] & Ra09v6)); +assign A509v6 = (~(Iuvmz6[8] & Ya09v6)); +assign L709v6 = (H509v6 & A509v6); +assign O509v6 = (L709v6 | M6s7z6[0]); +assign Q609v6 = (V509v6 & O509v6); +assign C609v6 = (~(M6s7z6[0] | M6s7z6[1])); +assign Ee09v6 = (C609v6 & Yo37v6); +assign J609v6 = (~(Ee09v6 & Iuvmz6[4])); +assign Nks7z6[0] = (~(Q609v6 & J609v6)); +assign E709v6 = (~(Iuvmz6[7] & Ra09v6)); +assign X609v6 = (~(Iuvmz6[4] & Ya09v6)); +assign I909v6 = (E709v6 & X609v6); +assign Z709v6 = (I909v6 | M6s7z6[0]); +assign S709v6 = (L709v6 | Ze09v6); +assign N809v6 = (Z709v6 & S709v6); +assign G809v6 = (~(Ee09v6 & Iuvmz6[5])); +assign Nks7z6[1] = (~(N809v6 & G809v6)); +assign B909v6 = (~(Iuvmz6[8] & Ra09v6)); +assign U809v6 = (~(Iuvmz6[5] & Ya09v6)); +assign Tb09v6 = (B909v6 & U809v6); +assign W909v6 = (Tb09v6 | M6s7z6[0]); +assign P909v6 = (I909v6 | Ze09v6); +assign Ka09v6 = (W909v6 & P909v6); +assign Da09v6 = (~(Ee09v6 & Iuvmz6[6])); +assign Nks7z6[2] = (~(Ka09v6 & Da09v6)); +assign Mb09v6 = (~(Iuvmz6[4] & Ra09v6)); +assign Fb09v6 = (~(Iuvmz6[6] & Ya09v6)); +assign Cd09v6 = (Mb09v6 & Fb09v6); +assign Hc09v6 = (Cd09v6 | M6s7z6[0]); +assign Ac09v6 = (Tb09v6 | Ze09v6); +assign Vc09v6 = (Hc09v6 & Ac09v6); +assign Oc09v6 = (~(Ee09v6 & Iuvmz6[7])); +assign Nks7z6[3] = (~(Vc09v6 & Oc09v6)); +assign Xd09v6 = (Ze09v6 | Cd09v6); +assign Qd09v6 = (Jd09v6 | M6s7z6[0]); +assign Se09v6 = (Xd09v6 & Qd09v6); +assign Le09v6 = (~(Iuvmz6[8] & Ee09v6)); +assign Nks7z6[4] = (~(Se09v6 & Le09v6)); +assign Ze09v6 = (!M6s7z6[0]); +assign Gf09v6 = (!M6s7z6[1]); +assign Fkwmv6 = (~(Vzwmv6 | Fqxmz6[3])); +assign Xmwmv6 = (~(K3a7z6 | Fqxmz6[4])); +assign Nf09v6 = (Fqxmz6[2] | Fqxmz6[4]); +assign Bxvmv6 = (I3xmv6 & Nf09v6); +assign Zovmv6 = (~(K3a7z6 | Fqxmz6[2])); +assign Djwmv6 = (Bxvmv6 | Zovmv6); +assign Piwmv6 = (~(G2xmv6 | Q0xmv6)); +assign O0wmv6 = (C0xmv6 | Piwmv6); +assign Uf09v6 = (O0wmv6 | Zovmv6); +assign S9wmv6 = (Fqxmz6[5] & Uf09v6); +assign Xuvmv6 = (Djwmv6 & S9wmv6); +assign Qnvmv6 = (~(Fkwmv6 & Xuvmv6)); +assign Tkwmv6 = (~(Fqxmz6[0] | E1xmv6)); +assign Xnvmv6 = (~(Uia7z6 | Q0xmv6)); +assign Bg09v6 = (C0xmv6 | Z1xmv6); +assign Ig09v6 = (~(Fqxmz6[5] & Bg09v6)); +assign Oswmv6 = (~(Piwmv6 & Fqxmz6[4])); +assign Lgwmv6 = (Ig09v6 & Oswmv6); +assign Pg09v6 = (SWDITMS | Q0xmv6); +assign Cnvmv6 = (~(Pg09v6 & K4xmv6)); +assign Alwmv6 = (~(C0xmv6 & Cnvmv6)); +assign Jnvmv6 = (~(Lgwmv6 & Alwmv6)); +assign Wbwmv6 = (~(Tkwmv6 & Jnvmv6)); +assign Fsvmv6 = (Qnvmv6 & Wbwmv6); +assign K5wmv6 = (~(Fqxmz6[3] | Fqxmz6[0])); +assign Lovmv6 = (~(S1xmv6 | Zovmv6)); +assign Eovmv6 = (Xnvmv6 | Zovmv6); +assign Tsvmv6 = (Fqxmz6[4] & Eovmv6); +assign D5wmv6 = (Lovmv6 & W3xmv6); +assign A0wmv6 = (~(B3xmv6 | D5wmv6)); +assign Sovmv6 = (~(Djwmv6 & A0wmv6)); +assign Wqvmv6 = (~(K5wmv6 & Sovmv6)); +assign Ghwmv6 = (~(Vzwmv6 | E1xmv6)); +assign Iqvmv6 = (~(S1xmv6 | L1xmv6)); +assign Upvmv6 = (Fqxmz6[4] | SWDITMS); +assign Gpvmv6 = (~(C0xmv6 | Zovmv6)); +assign Npvmv6 = (~(Gpvmv6 & Z1xmv6)); +assign Bqvmv6 = (~(Upvmv6 & Npvmv6)); +assign Pqvmv6 = (~(Iqvmv6 & Bqvmv6)); +assign Rrvmv6 = (Wqvmv6 & Pqvmv6); +assign Drvmv6 = (Fkwmv6 | Ghwmv6); +assign Krvmv6 = (~(Drvmv6 & B3xmv6)); +assign Yrvmv6 = (Rrvmv6 & Krvmv6); +assign Msvmv6 = (~(Fsvmv6 & Yrvmv6)); +assign Nwvmv6 = (~(Msvmv6 & J0xmv6)); +assign Atvmv6 = (~(Tsvmv6 | S1xmv6)); +assign Suwmv6 = (~(Atvmv6 & Alwmv6)); +assign Aewmv6 = (~(Oswmv6 & Suwmv6)); +assign Cuvmv6 = (~(Aewmv6 & Fkwmv6)); +assign Otvmv6 = (~(Alwmv6 & E1xmv6)); +assign Htvmv6 = (E1xmv6 | Xmwmv6); +assign Bwwmv6 = (Otvmv6 & Htvmv6); +assign Uwvmv6 = (U2xmv6 | Bwwmv6); +assign Vtvmv6 = (~(Uwvmv6 & Vzwmv6)); +assign Zvvmv6 = (Cuvmv6 & Vtvmv6); +assign Aswmv6 = (~(Q0xmv6 | Fqxmz6[4])); +assign Juvmv6 = (~(Us47v6 & Aswmv6)); +assign Quvmv6 = (~(Juvmv6 & Oswmv6)); +assign Evvmv6 = (~(S1xmv6 & Quvmv6)); +assign Lvvmv6 = (~(Evvmv6 & D4xmv6)); +assign Svvmv6 = (~(Ghwmv6 & Lvvmv6)); +assign Gwvmv6 = (Zvvmv6 & Svvmv6); +assign Mzvmv6 = (Gwvmv6 | J0xmv6); +assign Woxmz6[0] = (~(Nwvmv6 & Mzvmv6)); +assign Dyvmv6 = (~(Fqxmz6[0] & Uwvmv6)); +assign Dcwmv6 = (~(Bxvmv6 & O0wmv6)); +assign Ixvmv6 = (S1xmv6 | Dcwmv6); +assign Pxvmv6 = (~(Oswmv6 & Ixvmv6)); +assign Wxvmv6 = (~(Pxvmv6 & E1xmv6)); +assign Ryvmv6 = (Dyvmv6 & Wxvmv6); +assign Kyvmv6 = (~(Aewmv6 & Fqxmz6[3])); +assign Yyvmv6 = (~(Ryvmv6 & Kyvmv6)); +assign Fzvmv6 = (~(Yyvmv6 & J0xmv6)); +assign Woxmz6[1] = (~(Mzvmv6 & Fzvmv6)); +assign Tzvmv6 = (I3xmv6 | Q0xmv6); +assign Hewmv6 = (~(A0wmv6 & Tzvmv6)); +assign Z2wmv6 = (~(Hewmv6 & Tkwmv6)); +assign Qtwmv6 = (K4xmv6 | Fqxmz6[4]); +assign H0wmv6 = (X0xmv6 | Us47v6); +assign V0wmv6 = (Qtwmv6 & H0wmv6); +assign C1wmv6 = (~(V0wmv6 & O0wmv6)); +assign L2wmv6 = (~(C1wmv6 & S1xmv6)); +assign X1wmv6 = (~(S1xmv6 | Q0xmv6)); +assign J1wmv6 = (C0xmv6 | Uia7z6); +assign Q1wmv6 = (~(I3xmv6 & J1wmv6)); +assign E2wmv6 = (~(X1wmv6 & Q1wmv6)); +assign S2wmv6 = (L2wmv6 & E2wmv6); +assign Cfwmv6 = (~(S2wmv6 & Ghwmv6)); +assign M6wmv6 = (Z2wmv6 & Cfwmv6); +assign I4wmv6 = (I3xmv6 | Fqxmz6[2]); +assign G3wmv6 = (G2xmv6 | C0xmv6); +assign N3wmv6 = (G3wmv6 & I3xmv6); +assign U3wmv6 = (~(N3wmv6 & Fqxmz6[2])); +assign B4wmv6 = (~(U3wmv6 & Fqxmz6[5])); +assign P4wmv6 = (I4wmv6 & B4wmv6); +assign W4wmv6 = (~(P4wmv6 & Oswmv6)); +assign Y5wmv6 = (~(W4wmv6 & Fkwmv6)); +assign A7wmv6 = (P3xmv6 | D5wmv6); +assign R5wmv6 = (~(K5wmv6 & A7wmv6)); +assign F6wmv6 = (Y5wmv6 & R5wmv6); +assign T6wmv6 = (~(M6wmv6 & F6wmv6)); +assign Pbwmv6 = (~(T6wmv6 & Fqxmz6[1])); +assign E9wmv6 = (~(Hewmv6 & Ghwmv6)); +assign J8wmv6 = (~(A7wmv6 & Fqxmz6[3])); +assign H7wmv6 = (SWDITMS | Fqxmz6[5]); +assign O7wmv6 = (~(H7wmv6 & Aswmv6)); +assign V7wmv6 = (~(Oswmv6 & O7wmv6)); +assign C8wmv6 = (~(V7wmv6 & E1xmv6)); +assign Q8wmv6 = (~(J8wmv6 & C8wmv6)); +assign X8wmv6 = (~(Q8wmv6 & Vzwmv6)); +assign Uawmv6 = (E9wmv6 & X8wmv6); +assign L9wmv6 = (Fqxmz6[2] | SWDITMS); +assign Z9wmv6 = (~(S9wmv6 & L9wmv6)); +assign Gawmv6 = (~(Z9wmv6 & Dcwmv6)); +assign Nawmv6 = (~(Fkwmv6 & Gawmv6)); +assign Bbwmv6 = (~(Uawmv6 & Nawmv6)); +assign Ibwmv6 = (~(Bbwmv6 & J0xmv6)); +assign Woxmz6[2] = (~(Pbwmv6 & Ibwmv6)); +assign Mdwmv6 = (Wbwmv6 & Oswmv6); +assign Ycwmv6 = (Vzwmv6 | D4xmv6); +assign Kcwmv6 = (~(Dcwmv6 | Fqxmz6[0])); +assign Rcwmv6 = (~(Kcwmv6 & Fqxmz6[5])); +assign Fdwmv6 = (Ycwmv6 & Rcwmv6); +assign Tdwmv6 = (~(Mdwmv6 & Fdwmv6)); +assign Egwmv6 = (~(Tdwmv6 & J0xmv6)); +assign Vewmv6 = (~(Aewmv6 & Vzwmv6)); +assign Oewmv6 = (~(Hewmv6 & Fkwmv6)); +assign Jfwmv6 = (Vewmv6 & Oewmv6); +assign Qfwmv6 = (~(Jfwmv6 & Cfwmv6)); +assign Xfwmv6 = (~(Qfwmv6 & Fqxmz6[1])); +assign Iiwmv6 = (Egwmv6 & Xfwmv6); +assign Zgwmv6 = (Tkwmv6 | J0xmv6); +assign Sgwmv6 = (~(Lgwmv6 & I3xmv6)); +assign Uhwmv6 = (Zgwmv6 & Sgwmv6); +assign Nhwmv6 = (Ghwmv6 | Fqxmz6[1]); +assign Biwmv6 = (~(Uhwmv6 & Nhwmv6)); +assign Woxmz6[3] = (~(Iiwmv6 & Biwmv6)); +assign Wiwmv6 = (Cja7z6 & Q0xmv6); +assign Lnwmv6 = (~(Wiwmv6 | Piwmv6)); +assign Frwmv6 = (C0xmv6 | Lnwmv6); +assign Kjwmv6 = (~(Djwmv6 & Frwmv6)); +assign Rjwmv6 = (~(Kjwmv6 & S1xmv6)); +assign Yjwmv6 = (~(D4xmv6 & Rjwmv6)); +assign Qmwmv6 = (~(Fkwmv6 & Yjwmv6)); +assign Uvwmv6 = (~(S1xmv6 | W3xmv6)); +assign Mkwmv6 = (~(C0xmv6 | Fqxmz6[5])); +assign Iwwmv6 = (Mkwmv6 & Lnwmv6); +assign Cmwmv6 = (~(Uvwmv6 | Iwwmv6)); +assign Olwmv6 = (L1xmv6 | Xmwmv6); +assign Hlwmv6 = (~(Alwmv6 & Tkwmv6)); +assign Vlwmv6 = (~(Olwmv6 & Hlwmv6)); +assign Jmwmv6 = (~(Cmwmv6 & Vlwmv6)); +assign Ppwmv6 = (Qmwmv6 & Jmwmv6); +assign Enwmv6 = (~(Xmwmv6 | Fqxmz6[3])); +assign Bpwmv6 = (Enwmv6 & Vzwmv6); +assign Znwmv6 = (N2xmv6 | K3a7z6); +assign Snwmv6 = (~(Frwmv6 & X0xmv6)); +assign Nowmv6 = (Znwmv6 & Snwmv6); +assign Gowmv6 = (P3xmv6 | S1xmv6); +assign Uowmv6 = (Nowmv6 & Gowmv6); +assign Ipwmv6 = (~(Bpwmv6 & Uowmv6)); +assign Wpwmv6 = (~(Ppwmv6 & Ipwmv6)); +assign Fywmv6 = (~(Wpwmv6 & J0xmv6)); +assign Dqwmv6 = (~(Fqxmz6[4] | SWDITMS)); +assign Yqwmv6 = (~(Dqwmv6 & E1xmv6)); +assign Kqwmv6 = (Aswmv6 & Fqxmz6[3]); +assign Rqwmv6 = (~(Kqwmv6 & Qr47v6)); +assign Mrwmv6 = (Yqwmv6 & Rqwmv6); +assign Trwmv6 = (~(Mrwmv6 & Frwmv6)); +assign Luwmv6 = (~(Trwmv6 & S1xmv6)); +assign Hswmv6 = (~(Mq47v6 & Aswmv6)); +assign Vswmv6 = (Hswmv6 & K4xmv6); +assign Ctwmv6 = (~(Vswmv6 & Oswmv6)); +assign Jtwmv6 = (~(Ctwmv6 & Fqxmz6[5])); +assign Xtwmv6 = (~(Qtwmv6 & Jtwmv6)); +assign Euwmv6 = (~(Xtwmv6 & Fqxmz6[3])); +assign Gvwmv6 = (Luwmv6 & Euwmv6); +assign Zuwmv6 = (Suwmv6 | Fqxmz6[3]); +assign Nvwmv6 = (~(Gvwmv6 & Zuwmv6)); +assign Kxwmv6 = (~(Nvwmv6 & Fqxmz6[0])); +assign Wwwmv6 = (~(Bwwmv6 | Uvwmv6)); +assign Pwwmv6 = (~(Iwwmv6 | Fqxmz6[0])); +assign Dxwmv6 = (~(Wwwmv6 & Pwwmv6)); +assign Rxwmv6 = (~(Kxwmv6 & Dxwmv6)); +assign Yxwmv6 = (~(Rxwmv6 & Fqxmz6[1])); +assign Woxmz6[4] = (~(Fywmv6 & Yxwmv6)); +assign Tywmv6 = (~(K3a7z6 | Q0xmv6)); +assign Mywmv6 = (~(J0xmv6 | L1xmv6)); +assign Azwmv6 = (~(Tywmv6 & Mywmv6)); +assign Ozwmv6 = (Azwmv6 ^ Fqxmz6[5]); +assign Hzwmv6 = (C0xmv6 | Q0xmv6); +assign Woxmz6[5] = (~(Ozwmv6 & Hzwmv6)); +assign Vzwmv6 = (!Fqxmz6[0]); +assign C0xmv6 = (!Fqxmz6[4]); +assign J0xmv6 = (!Fqxmz6[1]); +assign Q0xmv6 = (!Fqxmz6[2]); +assign X0xmv6 = (!Aswmv6); +assign E1xmv6 = (!Fqxmz6[3]); +assign L1xmv6 = (!Ghwmv6); +assign S1xmv6 = (!Fqxmz6[5]); +assign Z1xmv6 = (!Xnvmv6); +assign G2xmv6 = (!Uia7z6); +assign N2xmv6 = (!Lnwmv6); +assign U2xmv6 = (!Lgwmv6); +assign B3xmv6 = (!Oswmv6); +assign I3xmv6 = (!Xmwmv6); +assign P3xmv6 = (!Dcwmv6); +assign W3xmv6 = (!Tsvmv6); +assign D4xmv6 = (!Xuvmv6); +assign K4xmv6 = (!Zovmv6); +assign Fn0nv6 = (~(O21nv6 | R01nv6)); +assign Xw0nv6 = (~(Dwb7z6[3] | Dwb7z6[1])); +assign C6ymv6 = (~(Fn0nv6 | Xw0nv6)); +assign Y4xmv6 = (X31nv6 | Y01nv6); +assign Jw0nv6 = (~(Y01nv6 | M11nv6)); +assign R4xmv6 = (~(Jjzdt6 & Jw0nv6)); +assign F5xmv6 = (Y4xmv6 & R4xmv6); +assign Khymv6 = (~(O21nv6 | Dwb7z6[2])); +assign Ym0nv6 = (~(R01nv6 | J31nv6)); +assign X7xmv6 = (F5xmv6 & Q31nv6); +assign Ayxmv6 = (Xw0nv6 & Y01nv6); +assign Hv0nv6 = (Ayxmv6 & Z41nv6); +assign A6xmv6 = (~(Li0et6 & Hv0nv6)); +assign Gr0nv6 = (Dwb7z6[3] & O21nv6); +assign Ynzmv6 = (~(Z41nv6 & Gr0nv6)); +assign Cp0nv6 = (~(O21nv6 | Dwb7z6[3])); +assign M5xmv6 = (I61nv6 | Cp0nv6); +assign T5xmv6 = (~(M5xmv6 & Iga7z6)); +assign J7xmv6 = (A6xmv6 & T5xmv6); +assign W8zmv6 = (~(Y01nv6 | Dwb7z6[0])); +assign Ci0nv6 = (~(Z41nv6 | Dwb7z6[2])); +assign N60nv6 = (W8zmv6 | Ci0nv6); +assign H6xmv6 = (N60nv6 | Gvydt6); +assign V6xmv6 = (~(H6xmv6 & Fn0nv6)); +assign Sj0nv6 = (Dwb7z6[0] & Gr0nv6); +assign O6xmv6 = (~(Sj0nv6 & A4zdt6)); +assign C7xmv6 = (V6xmv6 & O6xmv6); +assign Q7xmv6 = (J7xmv6 & C7xmv6); +assign E8xmv6 = (~(X7xmv6 & Q7xmv6)); +assign Ie0nv6 = (~(K01nv6 | Dwb7z6[5])); +assign Lfxmv6 = (~(E8xmv6 & Ie0nv6)); +assign L8xmv6 = (M11nv6 | N60nv6); +assign Syzmv6 = (Dwb7z6[2] & Dwb7z6[1]); +assign Apzmv6 = (Syzmv6 & Dwb7z6[3]); +assign Oa0nv6 = (~(Dwb7z6[0] & Apzmv6)); +assign S8xmv6 = (L8xmv6 & Oa0nv6); +assign Z8xmv6 = (~(S8xmv6 & Ynzmv6)); +assign N9xmv6 = (~(Ys97z6 & Z8xmv6)); +assign Uszmv6 = (Ym0nv6 & Z41nv6); +assign G9xmv6 = (~(If1et6 & Uszmv6)); +assign Baxmv6 = (N9xmv6 & G9xmv6); +assign Nr0nv6 = (~(Dwb7z6[3] | J31nv6)); +assign U9xmv6 = (~(L32et6 & Nr0nv6)); +assign Qexmv6 = (Baxmv6 & U9xmv6); +assign Waxmv6 = (D01nv6 | F11nv6); +assign Kf0nv6 = (~(Y01nv6 & Gr0nv6)); +assign W70nv6 = (Dwb7z6[2] & Gr0nv6); +assign Iaxmv6 = (~(C31nv6 | W70nv6)); +assign Paxmv6 = (K71nv6 | Iaxmv6); +assign Kbxmv6 = (Waxmv6 & Paxmv6); +assign Dbxmv6 = (~(Hq1et6 & Jw0nv6)); +assign Mcxmv6 = (~(Kbxmv6 & Dbxmv6)); +assign Ybxmv6 = (~(Mcxmv6 & Dwb7z6[3])); +assign Fhzmv6 = (~(Syzmv6 & R01nv6)); +assign Bvxmv6 = (~(Ym0nv6 | A21nv6)); +assign Rbxmv6 = (K71nv6 | Bvxmv6); +assign Fcxmv6 = (~(Ybxmv6 & Rbxmv6)); +assign Hdxmv6 = (~(Fcxmv6 & Dwb7z6[0])); +assign Tcxmv6 = (~(U51nv6 | Dwb7z6[3])); +assign Adxmv6 = (~(Tcxmv6 & Mcxmv6)); +assign Cexmv6 = (Hdxmv6 & Adxmv6); +assign Odxmv6 = (A21nv6 | Apzmv6); +assign Hcymv6 = (~(Odxmv6 & Z41nv6)); +assign Vdxmv6 = (D71nv6 | Hcymv6); +assign Jexmv6 = (Cexmv6 & Vdxmv6); +assign Xexmv6 = (~(Qexmv6 & Jexmv6)); +assign Wl0nv6 = (~(Dwb7z6[4] | Dwb7z6[5])); +assign Efxmv6 = (~(Xexmv6 & Wl0nv6)); +assign Unxmv6 = (Lfxmv6 & Efxmv6); +assign Ufymv6 = (~(Aga7z6 & Hv0nv6)); +assign Ov0nv6 = (~(F11nv6 | Z41nv6)); +assign Sfxmv6 = (~(Sfydt6 & Ov0nv6)); +assign Zfxmv6 = (Ufymv6 & Sfxmv6); +assign Mjxmv6 = (Zfxmv6 & Ynzmv6); +assign Ngxmv6 = (T11nv6 | Kgo7v6); +assign Ggxmv6 = (~(X00et6 & Nr0nv6)); +assign Ugxmv6 = (~(Ngxmv6 & Ggxmv6)); +assign Phxmv6 = (~(Ugxmv6 & Z41nv6)); +assign Bhxmv6 = (~(U51nv6 | Olzdt6)); +assign Ihxmv6 = (~(Bhxmv6 & Apzmv6)); +assign Yixmv6 = (Phxmv6 & Ihxmv6); +assign Dixmv6 = (E41nv6 | N60nv6); +assign Whxmv6 = (~(Dwb7z6[0] & Nr0nv6)); +assign Kixmv6 = (~(Dixmv6 & Whxmv6)); +assign Rixmv6 = (~(Kixmv6 & Ys97z6)); +assign Fjxmv6 = (Yixmv6 & Rixmv6); +assign Tjxmv6 = (~(Mjxmv6 & Fjxmv6)); +assign Av0nv6 = (Dwb7z6[5] & K01nv6); +assign Gnxmv6 = (~(Tjxmv6 & Av0nv6)); +assign Qxzmv6 = (~(Dwb7z6[1] | Dwb7z6[2])); +assign R10nv6 = (~(Qxzmv6 | Ci0nv6)); +assign Lmxmv6 = (~(Ys97z6 & R10nv6)); +assign Akxmv6 = (~(Wxxdt6 & Dwb7z6[1])); +assign Qlxmv6 = (Akxmv6 & Ynzmv6); +assign Hkxmv6 = (~(Dwb7z6[1] | Dwb7z6[0])); +assign Clxmv6 = (~(Hkxmv6 & L32et6)); +assign Okxmv6 = (~(M11nv6 | Tnzdt6)); +assign Vkxmv6 = (~(Okxmv6 & Dwb7z6[0])); +assign Jlxmv6 = (Clxmv6 & Vkxmv6); +assign Xlxmv6 = (Qlxmv6 & Jlxmv6); +assign Emxmv6 = (Xlxmv6 | R10nv6); +assign Smxmv6 = (~(Lmxmv6 & Emxmv6)); +assign Uy0nv6 = (Dwb7z6[5] & Dwb7z6[4]); +assign Zmxmv6 = (~(Smxmv6 & Uy0nv6)); +assign Nnxmv6 = (Gnxmv6 & Zmxmv6); +assign Uah7z6[0] = (~(Unxmv6 & Nnxmv6)); +assign Ioxmv6 = (~(Ehzdt6 & Jw0nv6)); +assign Boxmv6 = (~(Gg0et6 & Hv0nv6)); +assign Woxmv6 = (Ioxmv6 & Boxmv6); +assign Ec0nv6 = (Ci0nv6 & Dwb7z6[3]); +assign Poxmv6 = (~(Ec0nv6 & A4zdt6)); +assign X6ymv6 = (Q31nv6 & Poxmv6); +assign Csxmv6 = (Woxmv6 & X6ymv6); +assign Dpxmv6 = (Z41nv6 | Btydt6); +assign Ypxmv6 = (~(Dpxmv6 & Fn0nv6)); +assign Kpxmv6 = (~(R01nv6 | Tnzdt6)); +assign Rpxmv6 = (~(Kpxmv6 & W8zmv6)); +assign Orxmv6 = (Ypxmv6 & Rpxmv6); +assign Arxmv6 = (~(Cp0nv6 & Dwb7z6[0])); +assign Fqxmv6 = (R01nv6 | Dwb7z6[2]); +assign Mqxmv6 = (~(J31nv6 & Fqxmv6)); +assign Tqxmv6 = (~(Mqxmv6 & Z41nv6)); +assign S7ymv6 = (Arxmv6 & Tqxmv6); +assign Hrxmv6 = (S7ymv6 | Iga7z6); +assign Vrxmv6 = (Orxmv6 & Hrxmv6); +assign Jsxmv6 = (~(Csxmv6 & Vrxmv6)); +assign Txxmv6 = (~(Jsxmv6 & Ie0nv6)); +assign Srzmv6 = (~(Ov0nv6 & Lxydt6)); +assign Qsxmv6 = (H21nv6 | Dwb7z6[0]); +assign B2ymv6 = (~(Dwb7z6[3] ^ Z41nv6)); +assign Rf0nv6 = (Dwb7z6[2] & O21nv6); +assign Awzmv6 = (~(B2ymv6 & Rf0nv6)); +assign Xsxmv6 = (Qsxmv6 & Awzmv6); +assign Erzmv6 = (~(Xsxmv6 & Oa0nv6)); +assign Etxmv6 = (~(Gt97z6 & Erzmv6)); +assign Stxmv6 = (Srzmv6 & Etxmv6); +assign Ltxmv6 = (~(G12et6 & Nr0nv6)); +assign Ywxmv6 = (Stxmv6 & Ltxmv6); +assign Ptzmv6 = (Jw0nv6 & N51nv6); +assign Uuxmv6 = (~(Co1et6 & Ptzmv6)); +assign Zkzmv6 = (~(Z41nv6 | Kf0nv6)); +assign Ztxmv6 = (Hcymv6 & G51nv6); +assign Acymv6 = (V21nv6 | B2ymv6); +assign Guxmv6 = (~(Ztxmv6 & Acymv6)); +assign Nuxmv6 = (~(Kt0et6 & Guxmv6)); +assign Kwxmv6 = (Uuxmv6 & Nuxmv6); +assign Wvxmv6 = (~(Dd1et6 & Uszmv6)); +assign Ivxmv6 = (~(Bvxmv6 | Z41nv6)); +assign Pvxmv6 = (~(Ivxmv6 & E21et6)); +assign Dwxmv6 = (Wvxmv6 & Pvxmv6); +assign Rwxmv6 = (Kwxmv6 & Dwxmv6); +assign Fxxmv6 = (~(Ywxmv6 & Rwxmv6)); +assign Mxxmv6 = (~(Fxxmv6 & Wl0nv6)); +assign V5ymv6 = (Txxmv6 & Mxxmv6); +assign Oyxmv6 = (~(Mdydt6 & Ayxmv6)); +assign Tvzmv6 = (~(C31nv6 | A21nv6)); +assign Hyxmv6 = (D01nv6 | Tvzmv6); +assign Vyxmv6 = (Oyxmv6 & Hyxmv6); +assign Rm0nv6 = (~(Fhzmv6 | Dwb7z6[0])); +assign N1ymv6 = (Vyxmv6 & S41nv6); +assign Czxmv6 = (Kgo7v6 | Dwb7z6[0]); +assign L0ymv6 = (~(Czxmv6 & Jw0nv6)); +assign Jzxmv6 = (R01nv6 & Y01nv6); +assign Qzxmv6 = (~(Jzxmv6 & Syzdt6)); +assign Xzxmv6 = (~(H21nv6 & Qzxmv6)); +assign E0ymv6 = (~(Xzxmv6 & N51nv6)); +assign Z0ymv6 = (L0ymv6 & E0ymv6); +assign Gzzmv6 = (~(N51nv6 | J31nv6)); +assign Pgymv6 = (L41nv6 | Gzzmv6); +assign S0ymv6 = (~(Gt97z6 & Pgymv6)); +assign G1ymv6 = (Z0ymv6 & S0ymv6); +assign U1ymv6 = (~(N1ymv6 & G1ymv6)); +assign H5ymv6 = (~(U1ymv6 & Av0nv6)); +assign P2ymv6 = (~(Gt97z6 & R10nv6)); +assign I2ymv6 = (B2ymv6 | Kf0nv6); +assign M4ymv6 = (P2ymv6 & I2ymv6); +assign H30nv6 = (Khymv6 & Dwb7z6[0]); +assign Y3ymv6 = (~(Qvxdt6 & H30nv6)); +assign D3ymv6 = (D01nv6 | N51nv6); +assign W2ymv6 = (~(G12et6 & N51nv6)); +assign K3ymv6 = (~(D3ymv6 & W2ymv6)); +assign R3ymv6 = (~(K3ymv6 & Qxzmv6)); +assign F4ymv6 = (Y3ymv6 & R3ymv6); +assign T4ymv6 = (~(M4ymv6 & F4ymv6)); +assign A5ymv6 = (~(T4ymv6 & Uy0nv6)); +assign O5ymv6 = (H5ymv6 & A5ymv6); +assign Uah7z6[1] = (~(V5ymv6 & O5ymv6)); +assign Q6ymv6 = (~(Zezdt6 & Jw0nv6)); +assign J6ymv6 = (W8zmv6 & D01nv6); +assign Pnymv6 = (~(J6ymv6 & C6ymv6)); +assign E7ymv6 = (Q6ymv6 & Pnymv6); +assign W9ymv6 = (E7ymv6 & X6ymv6); +assign L7ymv6 = (~(Be0et6 & Hv0nv6)); +assign Wmzmv6 = (~(Ov0nv6 & Cubdt6)); +assign I9ymv6 = (L7ymv6 & Wmzmv6); +assign U8ymv6 = (S7ymv6 | Bfo7v6); +assign Jxzmv6 = (~(Lxydt6 | Dwb7z6[0])); +assign Z7ymv6 = (Wqydt6 & Dwb7z6[0]); +assign G8ymv6 = (Jxzmv6 | Z7ymv6); +assign N8ymv6 = (~(G8ymv6 & Fn0nv6)); +assign B9ymv6 = (U8ymv6 & N8ymv6); +assign P9ymv6 = (I9ymv6 & B9ymv6); +assign Daymv6 = (~(W9ymv6 & P9ymv6)); +assign Gfymv6 = (~(Daymv6 & Ie0nv6)); +assign Raymv6 = (~(Bz1et6 & Nr0nv6)); +assign Kaymv6 = (~(Ot97z6 & Erzmv6)); +assign Yaymv6 = (Raymv6 & Kaymv6); +assign Qczmv6 = (~(Ov0nv6 & D01nv6)); +assign Leymv6 = (Yaymv6 & Qczmv6); +assign Mbymv6 = (~(Xl1et6 & Ptzmv6)); +assign Fbymv6 = (~(Ya1et6 & Uszmv6)); +assign Xdymv6 = (Mbymv6 & Fbymv6); +assign Tbymv6 = (Z41nv6 | Q31nv6); +assign Lsymv6 = (Acymv6 & Tbymv6); +assign Ocymv6 = (~(Lsymv6 & Hcymv6)); +assign Jdymv6 = (~(Fr0et6 & Ocymv6)); +assign Vcymv6 = (~(Tvzmv6 | Z41nv6)); +assign Cdymv6 = (~(Vcymv6 & Nh1et6)); +assign Qdymv6 = (Jdymv6 & Cdymv6); +assign Eeymv6 = (Xdymv6 & Qdymv6); +assign Seymv6 = (~(Leymv6 & Eeymv6)); +assign Zeymv6 = (~(Seymv6 & Wl0nv6)); +assign Nmymv6 = (Gfymv6 & Zeymv6); +assign Hwzmv6 = (~(N51nv6 & Ym0nv6)); +assign Igymv6 = (Hwzmv6 & Awzmv6); +assign Nfymv6 = (~(Kf0nv6 | Dwb7z6[0])); +assign Vjymv6 = (~(Nfymv6 & Tnzdt6)); +assign Bgymv6 = (Ufymv6 & Vjymv6); +assign Hjymv6 = (Igymv6 & Bgymv6); +assign Dhymv6 = (~(Gbydt6 & Ov0nv6)); +assign Wgymv6 = (~(Pgymv6 & Ot97z6)); +assign Tiymv6 = (Dhymv6 & Wgymv6); +assign Lyzmv6 = (Khymv6 & N51nv6); +assign Fiymv6 = (~(Nwzdt6 & Lyzmv6)); +assign Rhymv6 = (~(Dwb7z6[0] | Tnzdt6)); +assign Yhymv6 = (~(Rhymv6 & Apzmv6)); +assign Miymv6 = (Fiymv6 & Yhymv6); +assign Ajymv6 = (Tiymv6 & Miymv6); +assign Ojymv6 = (~(Hjymv6 & Ajymv6)); +assign Zlymv6 = (~(Ojymv6 & Av0nv6)); +assign Ckymv6 = (~(Bz1et6 & Hv0nv6)); +assign Elymv6 = (Ckymv6 & Vjymv6); +assign Qkymv6 = (~(Ot97z6 & R10nv6)); +assign Jkymv6 = (~(Ktxdt6 & H30nv6)); +assign Xkymv6 = (Qkymv6 & Jkymv6); +assign Llymv6 = (~(Elymv6 & Xkymv6)); +assign Slymv6 = (~(Llymv6 & Uy0nv6)); +assign Gmymv6 = (Zlymv6 & Slymv6); +assign Uah7z6[2] = (~(Nmymv6 & Gmymv6)); +assign Inymv6 = (~(Wb0et6 & Hv0nv6)); +assign Bnymv6 = (Q31nv6 | Aga7z6); +assign Umymv6 = (~(R71nv6 & Ov0nv6)); +assign Bfzmv6 = (Bnymv6 & Umymv6); +assign Wnymv6 = (Inymv6 & Bfzmv6); +assign Oqymv6 = (Wnymv6 & Pnymv6); +assign Koymv6 = (~(V1zdt6 & Zkzmv6)); +assign Fazmv6 = (Syzmv6 & X31nv6); +assign B8zmv6 = (~(Fazmv6 & Z41nv6)); +assign Doymv6 = (B8zmv6 | Aga7z6); +assign Aqymv6 = (Koymv6 & Doymv6); +assign Roymv6 = (Rf0nv6 & X31nv6); +assign Mpymv6 = (~(Roymv6 & Uczdt6)); +assign Yoymv6 = (Fazmv6 & Dwb7z6[0]); +assign Fpymv6 = (~(Yoymv6 & Qoydt6)); +assign Tpymv6 = (Mpymv6 & Fpymv6); +assign Hqymv6 = (Aqymv6 & Tpymv6); +assign Vqymv6 = (~(Oqymv6 & Hqymv6)); +assign Rvymv6 = (~(Vqymv6 & Ie0nv6)); +assign Jrymv6 = (~(Ww1et6 & Nr0nv6)); +assign Crymv6 = (~(Qs97z6 & Erzmv6)); +assign Qrymv6 = (Jrymv6 & Crymv6); +assign Wuymv6 = (Qrymv6 & Qczmv6); +assign Esymv6 = (~(Wb0et6 & Ptzmv6)); +assign Xrymv6 = (~(Sj1et6 & Rm0nv6)); +assign Iuymv6 = (Esymv6 & Xrymv6); +assign Utymv6 = (~(T81et6 & Uszmv6)); +assign Ssymv6 = (~(Apzmv6 & Z41nv6)); +assign Zsymv6 = (Ssymv6 & Lsymv6); +assign J5zmv6 = (Zsymv6 & G51nv6); +assign Knzmv6 = (Fhzmv6 | Z41nv6); +assign Gtymv6 = (~(J5zmv6 & Knzmv6)); +assign Ntymv6 = (~(Ap0et6 & Gtymv6)); +assign Buymv6 = (Utymv6 & Ntymv6); +assign Puymv6 = (Iuymv6 & Buymv6); +assign Dvymv6 = (~(Wuymv6 & Puymv6)); +assign Kvymv6 = (~(Dvymv6 & Wl0nv6)); +assign A4zmv6 = (Rvymv6 & Kvymv6); +assign U7zmv6 = (~(Hv0nv6 & Lxydt6)); +assign Yvymv6 = (~(N60nv6 & Gr0nv6)); +assign Fwymv6 = (U7zmv6 & Yvymv6); +assign N0zmv6 = (Fwymv6 & Hwzmv6); +assign Cyymv6 = (~(Qs97z6 & Gzzmv6)); +assign Twymv6 = (Fhzmv6 | Tnzdt6); +assign Mwymv6 = (~(A9ydt6 & Qxzmv6)); +assign Hxymv6 = (Twymv6 & Mwymv6); +assign Axymv6 = (~(Qs97z6 & Fn0nv6)); +assign Oxymv6 = (~(Hxymv6 & Axymv6)); +assign Vxymv6 = (~(Oxymv6 & Dwb7z6[0])); +assign Zzymv6 = (Cyymv6 & Vxymv6); +assign Lzymv6 = (~(Iuzdt6 & Lyzmv6)); +assign Qyymv6 = (Dwb7z6[1] | Yga7z6); +assign Jyymv6 = (~(Olzdt6 & Dwb7z6[3])); +assign Xyymv6 = (~(Qyymv6 & Jyymv6)); +assign Ezymv6 = (~(Xyymv6 & W8zmv6)); +assign Szymv6 = (Lzymv6 & Ezymv6); +assign G0zmv6 = (Zzymv6 & Szymv6); +assign U0zmv6 = (~(N0zmv6 & G0zmv6)); +assign M3zmv6 = (~(U0zmv6 & Av0nv6)); +assign B1zmv6 = (~(Ww1et6 & Hv0nv6)); +assign R2zmv6 = (B1zmv6 & G51nv6); +assign P1zmv6 = (~(Erxdt6 & H30nv6)); +assign F20nv6 = (Qxzmv6 & Dwb7z6[0]); +assign I1zmv6 = (~(F20nv6 & D01nv6)); +assign D2zmv6 = (P1zmv6 & I1zmv6); +assign W1zmv6 = (~(Qs97z6 & R10nv6)); +assign K2zmv6 = (D2zmv6 & W1zmv6); +assign Y2zmv6 = (~(R2zmv6 & K2zmv6)); +assign F3zmv6 = (~(Y2zmv6 & Uy0nv6)); +assign T3zmv6 = (M3zmv6 & F3zmv6); +assign Uah7z6[3] = (~(A4zmv6 & T3zmv6)); +assign O4zmv6 = (~(Aga7z6 & Ov0nv6)); +assign H4zmv6 = (~(Is97z6 & Erzmv6)); +assign C5zmv6 = (O4zmv6 & H4zmv6); +assign V4zmv6 = (~(Ru1et6 & Nr0nv6)); +assign Z6zmv6 = (C5zmv6 & V4zmv6); +assign Nszmv6 = (~(Fhzmv6 & J5zmv6)); +assign X5zmv6 = (~(Vm0et6 & Nszmv6)); +assign Q5zmv6 = (~(O61et6 & Uszmv6)); +assign L6zmv6 = (X5zmv6 & Q5zmv6); +assign E6zmv6 = (~(R90et6 & Ptzmv6)); +assign S6zmv6 = (L6zmv6 & E6zmv6); +assign G7zmv6 = (~(Z6zmv6 & S6zmv6)); +assign Jczmv6 = (~(G7zmv6 & Wl0nv6)); +assign N7zmv6 = (~(U6ydt6 & Ov0nv6)); +assign I8zmv6 = (U7zmv6 & N7zmv6); +assign Obzmv6 = (I8zmv6 & B8zmv6); +assign P8zmv6 = (N51nv6 & Nr0nv6); +assign Y9zmv6 = (~(P8zmv6 & Dszdt6)); +assign K9zmv6 = (W8zmv6 & X31nv6); +assign D9zmv6 = (~(Dwb7z6[1] | Kgo7v6)); +assign R9zmv6 = (~(K9zmv6 & D9zmv6)); +assign Abzmv6 = (Y9zmv6 & R9zmv6); +assign Mazmv6 = (Gzzmv6 | Fazmv6); +assign Tazmv6 = (~(Mazmv6 & Is97z6)); +assign Hbzmv6 = (Abzmv6 & Tazmv6); +assign Vbzmv6 = (~(Obzmv6 & Hbzmv6)); +assign Cczmv6 = (~(Vbzmv6 & Av0nv6)); +assign Skzmv6 = (Jczmv6 & Cczmv6); +assign Xczmv6 = (~(Ru1et6 & Hv0nv6)); +assign Nezmv6 = (Xczmv6 & Qczmv6); +assign Zdzmv6 = (~(Yoxdt6 & H30nv6)); +assign Edzmv6 = (J31nv6 | Dwb7z6[0]); +assign Ldzmv6 = (~(Y01nv6 & Edzmv6)); +assign Sdzmv6 = (~(Ldzmv6 & Is97z6)); +assign Gezmv6 = (Zdzmv6 & Sdzmv6); +assign Uezmv6 = (~(Nezmv6 & Gezmv6)); +assign Ekzmv6 = (~(Uezmv6 & Uy0nv6)); +assign Dgzmv6 = (S41nv6 & Bfzmv6); +assign Pfzmv6 = (~(Pazdt6 & Jw0nv6)); +assign Ifzmv6 = (~(R90et6 & Hv0nv6)); +assign Wfzmv6 = (Pfzmv6 & Ifzmv6); +assign Jjzmv6 = (Dgzmv6 & Wfzmv6); +assign Rgzmv6 = (~(Kmydt6 & L41nv6)); +assign Kgzmv6 = (D01nv6 | V21nv6); +assign Vizmv6 = (Rgzmv6 & Kgzmv6); +assign Ygzmv6 = (Kf0nv6 | Dwb7z6[0]); +assign Mhzmv6 = (~(Fhzmv6 & Ygzmv6)); +assign Hizmv6 = (~(Bfo7v6 & Mhzmv6)); +assign Thzmv6 = (~(Dwb7z6[0] | Aga7z6)); +assign Aizmv6 = (~(Thzmv6 & Syzmv6)); +assign Oizmv6 = (Hizmv6 & Aizmv6); +assign Cjzmv6 = (Vizmv6 & Oizmv6); +assign Qjzmv6 = (~(Jjzmv6 & Cjzmv6)); +assign Xjzmv6 = (~(Qjzmv6 & Ie0nv6)); +assign Lkzmv6 = (Ekzmv6 & Xjzmv6); +assign Uah7z6[4] = (~(Skzmv6 & Lkzmv6)); +assign Pmzmv6 = (~(Nr0nv6 | Zkzmv6)); +assign Nlzmv6 = (~(K8zdt6 & Jw0nv6)); +assign Glzmv6 = (~(M70et6 & Hv0nv6)); +assign Bmzmv6 = (Nlzmv6 & Glzmv6); +assign Ulzmv6 = (Lxydt6 | J31nv6); +assign Imzmv6 = (Bmzmv6 & Ulzmv6); +assign Qqzmv6 = (Pmzmv6 & Imzmv6); +assign Dnzmv6 = (~(Ekydt6 & L41nv6)); +assign Cqzmv6 = (Dnzmv6 & Wmzmv6); +assign Rnzmv6 = (~(Kf0nv6 & Knzmv6)); +assign Tozmv6 = (~(Rnzmv6 & Iga7z6)); +assign Fozmv6 = (~(Ynzmv6 | Tnzdt6)); +assign Mozmv6 = (~(Fozmv6 & Dwb7z6[2])); +assign Opzmv6 = (Tozmv6 & Mozmv6); +assign Hpzmv6 = (~(Jxzmv6 & Apzmv6)); +assign Vpzmv6 = (Opzmv6 & Hpzmv6); +assign Jqzmv6 = (Cqzmv6 & Vpzmv6); +assign Xqzmv6 = (~(Qqzmv6 & Jqzmv6)); +assign Mvzmv6 = (~(Xqzmv6 & Ie0nv6)); +assign Lrzmv6 = (~(Y4a7z6 & Erzmv6)); +assign Gszmv6 = (Srzmv6 & Lrzmv6); +assign Zrzmv6 = (~(Ms1et6 & Nr0nv6)); +assign Ruzmv6 = (Gszmv6 & Zrzmv6); +assign Itzmv6 = (~(Qk0et6 & Nszmv6)); +assign Btzmv6 = (~(J41et6 & Uszmv6)); +assign Duzmv6 = (Itzmv6 & Btzmv6); +assign Wtzmv6 = (~(Ptzmv6 & M70et6)); +assign Kuzmv6 = (Duzmv6 & Wtzmv6); +assign Yuzmv6 = (~(Ruzmv6 & Kuzmv6)); +assign Fvzmv6 = (~(Yuzmv6 & Wl0nv6)); +assign S50nv6 = (Mvzmv6 & Fvzmv6); +assign Cxzmv6 = (Awzmv6 & Tvzmv6); +assign Owzmv6 = (~(Yga7z6 & Jw0nv6)); +assign Vwzmv6 = (Owzmv6 & Hwzmv6); +assign D10nv6 = (Cxzmv6 & Vwzmv6); +assign Eyzmv6 = (~(Qxzmv6 & Jxzmv6)); +assign Xxzmv6 = (~(O4ydt6 & F20nv6)); +assign P00nv6 = (Eyzmv6 & Xxzmv6); +assign B00nv6 = (~(Ypzdt6 & Lyzmv6)); +assign Zyzmv6 = (Syzmv6 & Dwb7z6[0]); +assign Nzzmv6 = (Gzzmv6 | Zyzmv6); +assign Uzzmv6 = (~(Nzzmv6 & Y4a7z6)); +assign I00nv6 = (B00nv6 & Uzzmv6); +assign W00nv6 = (P00nv6 & I00nv6); +assign K10nv6 = (~(D10nv6 & W00nv6)); +assign E50nv6 = (~(K10nv6 & Av0nv6)); +assign Y10nv6 = (~(Y4a7z6 & R10nv6)); +assign J40nv6 = (Y10nv6 & Kf0nv6); +assign A30nv6 = (~(Tnzdt6 & F20nv6)); +assign M20nv6 = (~(H21nv6 | Dwb7z6[0])); +assign T20nv6 = (~(M20nv6 & Ms1et6)); +assign V30nv6 = (A30nv6 & T20nv6); +assign O30nv6 = (~(Smxdt6 & H30nv6)); +assign C40nv6 = (V30nv6 & O30nv6); +assign Q40nv6 = (~(J40nv6 & C40nv6)); +assign X40nv6 = (~(Q40nv6 & Uy0nv6)); +assign L50nv6 = (E50nv6 & X40nv6); +assign Uah7z6[5] = (~(S50nv6 & L50nv6)); +assign I70nv6 = (~(Ea2et6 & U51nv6)); +assign G60nv6 = (~(Jc2et6 & Dwb7z6[0])); +assign Z50nv6 = (~(Gr2et6 & Z41nv6)); +assign U60nv6 = (~(G60nv6 & Z50nv6)); +assign B70nv6 = (~(U60nv6 & N60nv6)); +assign P70nv6 = (~(I70nv6 & B70nv6)); +assign K80nv6 = (~(Cp0nv6 & P70nv6)); +assign D80nv6 = (~(W70nv6 & Gr2et6)); +assign T90nv6 = (K80nv6 & D80nv6); +assign Y80nv6 = (W61nv6 | Y01nv6); +assign R80nv6 = (~(H50et6 & Y01nv6)); +assign F90nv6 = (Y80nv6 & R80nv6); +assign Aa0nv6 = (F90nv6 & Dwb7z6[0]); +assign M90nv6 = (F11nv6 | Aa0nv6); +assign Ud0nv6 = (T90nv6 & M90nv6); +assign Ha0nv6 = (Aa0nv6 | M11nv6); +assign Va0nv6 = (~(Oa0nv6 & Ha0nv6)); +assign Qb0nv6 = (~(Va0nv6 & O5a7z6)); +assign Cb0nv6 = (Jc2et6 | Dwb7z6[2]); +assign Jb0nv6 = (~(Cb0nv6 & I61nv6)); +assign Gd0nv6 = (Qb0nv6 & Jb0nv6); +assign Xb0nv6 = (Fn0nv6 & Z41nv6); +assign Sc0nv6 = (~(Xb0nv6 & Z72et6)); +assign Lc0nv6 = (~(Ec0nv6 & Po2et6)); +assign Zc0nv6 = (Sc0nv6 & Lc0nv6); +assign Nd0nv6 = (Gd0nv6 & Zc0nv6); +assign Be0nv6 = (~(Ud0nv6 & Nd0nv6)); +assign Km0nv6 = (~(Ie0nv6 & Be0nv6)); +assign We0nv6 = (~(Cp0nv6 & Po2et6)); +assign Pe0nv6 = (~(Ov0nv6 & Z72et6)); +assign Df0nv6 = (We0nv6 & Pe0nv6); +assign Il0nv6 = (Df0nv6 & G51nv6); +assign Vh0nv6 = (~(O5a7z6 | Z41nv6)); +assign Oh0nv6 = (T11nv6 | Vh0nv6); +assign Fg0nv6 = (W61nv6 | Kf0nv6); +assign Yf0nv6 = (~(Zz0et6 & Rf0nv6)); +assign Tg0nv6 = (Fg0nv6 & Yf0nv6); +assign Mg0nv6 = (~(Nj2et6 & Xw0nv6)); +assign Ah0nv6 = (~(Tg0nv6 & Mg0nv6)); +assign Hh0nv6 = (~(Ah0nv6 & Z41nv6)); +assign Uk0nv6 = (Oh0nv6 & Hh0nv6); +assign Qi0nv6 = (Y01nv6 | P61nv6); +assign Ji0nv6 = (B61nv6 | Po2et6); +assign Lj0nv6 = (Qi0nv6 & Ji0nv6); +assign Xi0nv6 = (E41nv6 | W61nv6); +assign Ej0nv6 = (~(Q31nv6 & Xi0nv6)); +assign Gk0nv6 = (~(Lj0nv6 & Ej0nv6)); +assign Zj0nv6 = (~(Sj0nv6 & Gr2et6)); +assign Nk0nv6 = (Gk0nv6 & Zj0nv6); +assign Bl0nv6 = (Uk0nv6 & Nk0nv6); +assign Pl0nv6 = (~(Il0nv6 & Bl0nv6)); +assign Dm0nv6 = (~(Wl0nv6 & Pl0nv6)); +assign Wz0nv6 = (Km0nv6 & Dm0nv6); +assign Ho0nv6 = (~(Ym0nv6 | Rm0nv6)); +assign Tn0nv6 = (~(Fn0nv6 & Po2et6)); +assign Mn0nv6 = (~(Qzydt6 & Hv0nv6)); +assign Ao0nv6 = (Tn0nv6 & Mn0nv6); +assign Mu0nv6 = (Ho0nv6 & Ao0nv6); +assign Vo0nv6 = (~(C0ydt6 & A21nv6)); +assign Oo0nv6 = (~(Yhydt6 & Ov0nv6)); +assign Yt0nv6 = (Vo0nv6 & Oo0nv6); +assign Qp0nv6 = (~(F6zdt6 & Jw0nv6)); +assign Jp0nv6 = (~(C30et6 & Cp0nv6)); +assign Xp0nv6 = (~(Qp0nv6 & Jp0nv6)); +assign Sq0nv6 = (~(Xp0nv6 & Z41nv6)); +assign Eq0nv6 = (Gr2et6 | Y01nv6); +assign Lq0nv6 = (~(Eq0nv6 & I61nv6)); +assign Kt0nv6 = (Sq0nv6 & Lq0nv6); +assign Zq0nv6 = (~(I2ydt6 & Jw0nv6)); +assign Ps0nv6 = (Zq0nv6 & E41nv6); +assign Bs0nv6 = (~(O5a7z6 & Gr0nv6)); +assign Ur0nv6 = (~(Hbo7v6 & Nr0nv6)); +assign Is0nv6 = (Bs0nv6 & Ur0nv6); +assign Ws0nv6 = (~(Ps0nv6 & Is0nv6)); +assign Dt0nv6 = (~(Ws0nv6 & Dwb7z6[0])); +assign Rt0nv6 = (Kt0nv6 & Dt0nv6); +assign Fu0nv6 = (Yt0nv6 & Rt0nv6); +assign Tu0nv6 = (~(Mu0nv6 & Fu0nv6)); +assign Iz0nv6 = (~(Av0nv6 & Tu0nv6)); +assign Cw0nv6 = (~(Hv0nv6 & Po2et6)); +assign Vv0nv6 = (~(Mkxdt6 & Ov0nv6)); +assign Gy0nv6 = (Cw0nv6 & Vv0nv6); +assign Qw0nv6 = (Dwb7z6[2] | Jw0nv6); +assign Sx0nv6 = (~(Qw0nv6 & Gr2et6)); +assign Ex0nv6 = (~(Xw0nv6 | Dwb7z6[2])); +assign Lx0nv6 = (~(Ex0nv6 & P61nv6)); +assign Zx0nv6 = (Sx0nv6 & Lx0nv6); +assign Ny0nv6 = (~(Gy0nv6 & Zx0nv6)); +assign Bz0nv6 = (~(Uy0nv6 & Ny0nv6)); +assign Pz0nv6 = (Iz0nv6 & Bz0nv6); +assign Q52et6 = (~(Wz0nv6 & Pz0nv6)); +assign D01nv6 = (!Tnzdt6); +assign K01nv6 = (!Dwb7z6[4]); +assign R01nv6 = (!Dwb7z6[3]); +assign Y01nv6 = (!Dwb7z6[2]); +assign F11nv6 = (!Ayxmv6); +assign M11nv6 = (!Xw0nv6); +assign T11nv6 = (!Jw0nv6); +assign A21nv6 = (!Fhzmv6); +assign H21nv6 = (!Qxzmv6); +assign O21nv6 = (!Dwb7z6[1]); +assign V21nv6 = (!W70nv6); +assign C31nv6 = (!Kf0nv6); +assign J31nv6 = (!Khymv6); +assign Q31nv6 = (!Ym0nv6); +assign X31nv6 = (!C6ymv6); +assign E41nv6 = (!Fn0nv6); +assign L41nv6 = (!Oa0nv6); +assign S41nv6 = (!Rm0nv6); +assign Z41nv6 = (!Dwb7z6[0]); +assign G51nv6 = (!Zkzmv6); +assign N51nv6 = (!B2ymv6); +assign U51nv6 = (!N60nv6); +assign B61nv6 = (!Ci0nv6); +assign I61nv6 = (!Ynzmv6); +assign P61nv6 = (!Vh0nv6); +assign W61nv6 = (!O5a7z6); +assign D71nv6 = (!Pv0et6); +assign K71nv6 = (!Ux0et6); +assign R71nv6 = (!Cubdt6); +assign Zpe7v6 = (~(Y71nv6 & F81nv6)); +assign F81nv6 = (~(M81nv6 & T81nv6)); +assign Y71nv6 = (A91nv6 & H91nv6); +assign A91nv6 = (~(Xre7v6 & O91nv6)); +assign O91nv6 = (~(V91nv6 & Ca1nv6)); +assign Rte7v6 = (L9e7v6 | Ja1nv6); +assign Ja1nv6 = (I6e7v6 & H91nv6); +assign H91nv6 = (~(Qa1nv6 & Xa1nv6)); +assign Xa1nv6 = (Eb1nv6 ? T81nv6 : V91nv6); +assign Qa1nv6 = (Lb1nv6 & I6e7v6); +assign Ame7v6 = (~(Y097z6 & Sb1nv6)); +assign Sb1nv6 = (~(Xzd7v6 & Lkh7v6)); +assign Boe7v6 = (~(Zb1nv6 & Gc1nv6)); +assign Gc1nv6 = (~(G1e7v6 & Ekh7v6)); +assign Mq47v6 = (~(Nc1nv6 & SWDITMS)); +assign Qr47v6 = (~(Uc1nv6 & SWDITMS)); +assign Us47v6 = (Uia7z6 & SWDITMS); +assign Jv47v6 = (~(Bd1nv6 & Id1nv6)); +assign Id1nv6 = (~(Pd1nv6 & Wd1nv6)); +assign Pd1nv6 = (~(De1nv6 & Ke1nv6)); +assign Bd1nv6 = (~(Re1nv6 | Ye1nv6)); +assign Vw47v6 = (~(Ff1nv6 & Mf1nv6)); +assign Mf1nv6 = (Tf1nv6 & Ag1nv6); +assign Ag1nv6 = (~(Uj57v6 & Ye1nv6)); +assign Ye1nv6 = (Hg1nv6 & Uzxmz6[4]); +assign Hg1nv6 = (Uzxmz6[1] & Og1nv6); +assign Tf1nv6 = (Vg1nv6 & Ch1nv6); +assign Ch1nv6 = (~(Jh1nv6 & Qh1nv6)); +assign Jh1nv6 = (Hf57v6 ? Ei1nv6 : Xh1nv6); +assign Vg1nv6 = (~(Cxxmz6[0] & Re1nv6)); +assign Re1nv6 = (Li1nv6 & Uzxmz6[0]); +assign Ff1nv6 = (Si1nv6 & Zi1nv6); +assign Zi1nv6 = (Ke1nv6 | Gj1nv6); +assign Si1nv6 = (De1nv6 ? Nj1nv6 : Wd1nv6); +assign De1nv6 = (~(Xh1nv6 | Ei1nv6)); +assign Nj1nv6 = (~(Uj1nv6 & Ke1nv6)); +assign Lt57v6 = (Bk1nv6 | Ik1nv6); +assign Ik1nv6 = (R9ymz6[3] ? G8ymz6[0] : Pk1nv6); +assign Pk1nv6 = (Wk1nv6 & Dl1nv6); +assign Dl1nv6 = (Kl1nv6 | L5ymz6[34]); +assign Kl1nv6 = (Rl1nv6 & W6ymz6[3]); +assign Rl1nv6 = (Yl1nv6 & Fm1nv6); +assign Fm1nv6 = (Mm1nv6 | Tm1nv6); +assign Yl1nv6 = (~(W6ymz6[0] & An1nv6)); +assign Wk1nv6 = (Hn1nv6 & On1nv6); +assign On1nv6 = (~(Vn1nv6 & Co1nv6)); +assign Vn1nv6 = (Jo1nv6 & Qo1nv6); +assign Hn1nv6 = (~(Xo1nv6 & Ep1nv6)); +assign Ep1nv6 = (Mm1nv6 ? Qo1nv6 : Lp1nv6); +assign Lp1nv6 = (~(W6ymz6[0] | L5ymz6[3])); +assign Xo1nv6 = (W6ymz6[1] & W6ymz6[3]); +assign Bk1nv6 = (~(Sp1nv6 & Zp1nv6)); +assign Sp1nv6 = (Gq1nv6 ^ Nq1nv6); +assign Z3ymz6[3] = (~(Uq1nv6 & Br1nv6)); +assign Br1nv6 = (Ir1nv6 & Pr1nv6); +assign Ir1nv6 = (~(Wr1nv6 & Ds1nv6)); +assign Uq1nv6 = (Ks1nv6 & Rs1nv6); +assign Rs1nv6 = (~(Ys1nv6 & Gq1nv6)); +assign Ys1nv6 = (!Ft1nv6); +assign Ks1nv6 = (~(R9ymz6[3] & Zp1nv6)); +assign Z3ymz6[2] = (~(Mt1nv6 & Tt1nv6)); +assign Tt1nv6 = (~(R9ymz6[2] & Au1nv6)); +assign Au1nv6 = (~(R9ymz6[1] & Nq1nv6)); +assign Mt1nv6 = (~(Hu1nv6 & Gq1nv6)); +assign Z3ymz6[1] = (Ou1nv6 | Vu1nv6); +assign Ou1nv6 = (Wr1nv6 ? Cv1nv6 : Ds1nv6); +assign Cv1nv6 = (~(Jv1nv6 & Qv1nv6)); +assign Jv1nv6 = (Xv1nv6 & Ew1nv6); +assign Ew1nv6 = (Lw1nv6 | R9ymz6[3]); +assign Xv1nv6 = (Pr1nv6 | R9ymz6[0]); +assign Ds1nv6 = (R9ymz6[2] & Gq1nv6); +assign Z3ymz6[0] = (Vu1nv6 | Sw1nv6); +assign Sw1nv6 = (Zw1nv6 & Hu1nv6); +assign Hu1nv6 = (!Wr1nv6); +assign Zw1nv6 = (~(Gx1nv6 & Qv1nv6)); +assign Qv1nv6 = (~(Nx1nv6 | Ux1nv6)); +assign Ux1nv6 = (~(R9ymz6[1] | R9ymz6[2])); +assign Gx1nv6 = (~(Nq1nv6 | By1nv6)); +assign Vu1nv6 = (Wr1nv6 ? Py1nv6 : Iy1nv6); +assign Wr1nv6 = (JTAGNSW & K3a7z6); +assign Py1nv6 = (R9ymz6[0] & Zp1nv6); +assign Oa67v6 = (Dz1nv6 ? Wy1nv6 : Esf8v6); +assign G967v6 = (JTAGNSW ? Rz1nv6 : Kz1nv6); +assign Rz1nv6 = (Hw57v6 & Esf8v6); +assign Kz1nv6 = (Uz47v6 & Wy1nv6); +assign O667v6 = (Dz1nv6 ? Sl47v6 : Mg47v6); +assign X767v6 = (Dz1nv6 ? Qm47v6 : Kh47v6); +assign Ddeet6 = (~(Yz1nv6 | Ffeet6)); +assign Yz1nv6 = (Dgo7v6 & F02nv6); +assign X8eet6 = (M02nv6 & T02nv6); +assign T02nv6 = (Dgo7v6 ? Cbeet6 : Ffeet6); +assign M02nv6 = (A12nv6 & F02nv6); +assign T9fet6 = (H12nv6 & O12nv6); +assign O12nv6 = (V12nv6 & C22nv6); +assign C22nv6 = (J22nv6 & Q22nv6); +assign J22nv6 = (X22nv6 & E32nv6); +assign H12nv6 = (L32nv6 & S32nv6); +assign S32nv6 = (Z32nv6 & G42nv6); +assign L32nv6 = (Toi7z6[9] & N42nv6); +assign Hbfet6 = (Q22nv6 & U42nv6); +assign Vcfet6 = (Q22nv6 & B52nv6); +assign Jefet6 = (Q22nv6 & I52nv6); +assign Xffet6 = (Q22nv6 & P52nv6); +assign Lhfet6 = (Q22nv6 & W52nv6); +assign Zifet6 = (Q22nv6 & D62nv6); +assign Nkfet6 = (Q22nv6 & K62nv6); +assign Bmfet6 = (Q22nv6 & R62nv6); +assign P3m8v6 = (Sja7z6 & Kja7z6); +assign Gpfet6 = (Y62nv6 & F72nv6); +assign F72nv6 = (M72nv6 & T72nv6); +assign T72nv6 = (~(A82nv6 & H82nv6)); +assign H82nv6 = (O82nv6 & V82nv6); +assign O82nv6 = (~(C92nv6 & J92nv6)); +assign A82nv6 = (Nmadt6 & Q92nv6); +assign Q92nv6 = (~(Fjadt6 & Inadt6)); +assign M72nv6 = (~(Ovfet6 | Qtfet6)); +assign Y62nv6 = (X92nv6 & D5cet6); +assign X92nv6 = (Ea2nv6 & La2nv6); +assign La2nv6 = (~(Sa2nv6 & Za2nv6)); +assign Ozfet6 = (~(Gb2nv6 & Nb2nv6)); +assign Nb2nv6 = (~(Ub2nv6 & Bc2nv6)); +assign Gb2nv6 = (~(Ic2nv6 & Pc2nv6)); +assign Pc2nv6 = (Wc2nv6 & Dd2nv6); +assign Dd2nv6 = (~(Kd2nv6 & Rd2nv6)); +assign Wc2nv6 = (~(Yd2nv6 | Fe2nv6)); +assign Ic2nv6 = (Me2nv6 & E1cet6); +assign Me2nv6 = (Te2nv6 & Nmadt6); +assign Qtfet6 = (Af2nv6 & Hf2nv6); +assign Hf2nv6 = (Of2nv6 & Vf2nv6); +assign Vf2nv6 = (Cg2nv6 & Jg2nv6); +assign Cg2nv6 = (Qg2nv6 & Xg2nv6); +assign Of2nv6 = (Eh2nv6 & Lh2nv6); +assign Eh2nv6 = (Sh2nv6 & SLEEPHOLDACKn); +assign Af2nv6 = (Zh2nv6 & Gi2nv6); +assign Gi2nv6 = (Ni2nv6 & Ui2nv6); +assign Ni2nv6 = (Za2nv6 & Bj2nv6); +assign Zh2nv6 = (Ij2nv6 & Ub2nv6); +assign Ij2nv6 = (Pj2nv6 & Wj2nv6); +assign Wj2nv6 = (~(Dk2nv6 & Kk2nv6)); +assign Kk2nv6 = (Rk2nv6 & Yk2nv6); +assign Yk2nv6 = (Fl2nv6 & Ml2nv6); +assign Ml2nv6 = (Tl2nv6 & Am2nv6); +assign Am2nv6 = (Hm2nv6 & Om2nv6); +assign Hm2nv6 = (Vm2nv6 & Cn2nv6); +assign Tl2nv6 = (Jn2nv6 & Qn2nv6); +assign Jn2nv6 = (~(Z3j7z6[11] | Z3j7z6[3])); +assign Fl2nv6 = (Xn2nv6 & Eo2nv6); +assign Eo2nv6 = (Lo2nv6 & So2nv6); +assign Lo2nv6 = (Zo2nv6 & Gp2nv6); +assign Xn2nv6 = (Np2nv6 & Up2nv6); +assign Np2nv6 = (Bq2nv6 & Iq2nv6); +assign Rk2nv6 = (Pq2nv6 & Wq2nv6); +assign Wq2nv6 = (Dr2nv6 & Kr2nv6); +assign Kr2nv6 = (Rr2nv6 & Yr2nv6); +assign Rr2nv6 = (Fs2nv6 & Ms2nv6); +assign Dr2nv6 = (~(Ts2nv6 | G5j7z6[18])); +assign Ts2nv6 = (G5j7z6[19] | G5j7z6[48]); +assign Pq2nv6 = (At2nv6 & Ht2nv6); +assign Ht2nv6 = (Ot2nv6 & Vt2nv6); +assign Ot2nv6 = (Cu2nv6 & Ju2nv6); +assign At2nv6 = (Qu2nv6 & Xu2nv6); +assign Qu2nv6 = (Ev2nv6 & Lv2nv6); +assign Dk2nv6 = (Sv2nv6 & Zv2nv6); +assign Zv2nv6 = (Gw2nv6 & Nw2nv6); +assign Nw2nv6 = (Uw2nv6 & Bx2nv6); +assign Bx2nv6 = (Ix2nv6 & Px2nv6); +assign Ix2nv6 = (~(Wx2nv6 | Dy2nv6)); +assign Uw2nv6 = (Ky2nv6 & Ry2nv6); +assign Ky2nv6 = (~(Yy2nv6 | Fz2nv6)); +assign Gw2nv6 = (Mz2nv6 & Tz2nv6); +assign Tz2nv6 = (A03nv6 & H03nv6); +assign A03nv6 = (~(O03nv6 | V03nv6)); +assign Mz2nv6 = (C13nv6 & J13nv6); +assign C13nv6 = (Q13nv6 & X13nv6); +assign Sv2nv6 = (E23nv6 & L23nv6); +assign L23nv6 = (S23nv6 & Z23nv6); +assign Z23nv6 = (G33nv6 & N33nv6); +assign G33nv6 = (U33nv6 & B43nv6); +assign S23nv6 = (I43nv6 & P43nv6); +assign I43nv6 = (W43nv6 & D53nv6); +assign E23nv6 = (K53nv6 & R53nv6); +assign R53nv6 = (Y53nv6 & F63nv6); +assign Y53nv6 = (~(M63nv6 | T63nv6)); +assign K53nv6 = (A73nv6 & H73nv6); +assign A73nv6 = (O73nv6 & V73nv6); +assign S1get6 = (Ea2nv6 & Za2nv6); +assign Lrfet6 = (~(C83nv6 & J83nv6)); +assign J83nv6 = (~(Q83nv6 & X83nv6)); +assign Q83nv6 = (E93nv6 & L93nv6); +assign E93nv6 = (~(S93nv6 & Z93nv6)); +assign Z93nv6 = (~(Ga3nv6 & Qg2nv6)); +assign C83nv6 = (~(Na3nv6 & Tnzdt6)); +assign Ovfet6 = (Ua3nv6 & Pj2nv6); +assign Pj2nv6 = (~(Sa2nv6 & S93nv6)); +assign Ua3nv6 = (L93nv6 & Bb3nv6); +assign Bb3nv6 = (!Ib3nv6); +assign L93nv6 = (~(Pb3nv6 & Oreet6)); +assign Pb3nv6 = (Wb3nv6 & S93nv6); +assign Wb3nv6 = (~(Dc3nv6 & Kc3nv6)); +assign Kc3nv6 = (~(Rc3nv6 & P2j7z6[1])); +assign Pnmet6 = (~(Yc3nv6 & Fd3nv6)); +assign Fd3nv6 = (Md3nv6 & Td3nv6); +assign Td3nv6 = (Oe3nv6 ? He3nv6 : Ae3nv6); +assign He3nv6 = (~(HADDRI[28] & Ve3nv6)); +assign Ae3nv6 = (~(Cf3nv6 & HADDRI[25])); +assign Cf3nv6 = (!Jf3nv6); +assign Md3nv6 = (Qf3nv6 & Xf3nv6); +assign Xf3nv6 = (Ve3nv6 | Eg3nv6); +assign Qf3nv6 = (Zg3nv6 ? Sg3nv6 : Lg3nv6); +assign Sg3nv6 = (~(Gh3nv6 & HADDRI[19])); +assign Lg3nv6 = (~(HADDRI[22] & Jf3nv6)); +assign Yc3nv6 = (Nh3nv6 & Uh3nv6); +assign Uh3nv6 = (Pi3nv6 ? Ii3nv6 : Bi3nv6); +assign Ii3nv6 = (~(HADDRI[10] & Wi3nv6)); +assign Bi3nv6 = (Dj3nv6 | Kj3nv6); +assign Nh3nv6 = (Fk3nv6 ? Yj3nv6 : Rj3nv6); +assign Yj3nv6 = (~(HADDRI[16] & Mk3nv6)); +assign Rj3nv6 = (~(Tk3nv6 & HADDRI[13])); +assign Crmet6 = (~(Al3nv6 & Hl3nv6)); +assign Hl3nv6 = (Ol3nv6 & Vl3nv6); +assign Vl3nv6 = (Qm3nv6 ? Jm3nv6 : Cm3nv6); +assign Jm3nv6 = (~(Xm3nv6 & HADDRI[24])); +assign Cm3nv6 = (~(HADDRI[27] & En3nv6)); +assign Ol3nv6 = (Ln3nv6 & Sn3nv6); +assign Sn3nv6 = (Zn3nv6 | En3nv6); +assign Ln3nv6 = (Uo3nv6 ? No3nv6 : Go3nv6); +assign No3nv6 = (~(HADDRI[21] & Bp3nv6)); +assign Go3nv6 = (~(Ip3nv6 & HADDRI[18])); +assign Al3nv6 = (Pp3nv6 & Wp3nv6); +assign Wp3nv6 = (Rq3nv6 ? Kq3nv6 : Dq3nv6); +assign Kq3nv6 = (Yq3nv6 | Fr3nv6); +assign Dq3nv6 = (~(HADDRI[9] & Mr3nv6)); +assign Pp3nv6 = (Hs3nv6 ? As3nv6 : Tr3nv6); +assign As3nv6 = (~(Os3nv6 & HADDRI[12])); +assign Tr3nv6 = (~(HADDRI[15] & Vs3nv6)); +assign Pumet6 = (~(Ct3nv6 & Jt3nv6)); +assign Jt3nv6 = (Qt3nv6 & Xt3nv6); +assign Xt3nv6 = (Su3nv6 ? Lu3nv6 : Eu3nv6); +assign Lu3nv6 = (~(Zu3nv6 & HADDRI[23])); +assign Eu3nv6 = (~(HADDRI[26] & Gv3nv6)); +assign Qt3nv6 = (Nv3nv6 & Uv3nv6); +assign Uv3nv6 = (Gv3nv6 | Bw3nv6); +assign Nv3nv6 = (Ww3nv6 ? Pw3nv6 : Iw3nv6); +assign Pw3nv6 = (~(Dx3nv6 & HADDRI[17])); +assign Iw3nv6 = (~(HADDRI[20] & Kx3nv6)); +assign Ct3nv6 = (Rx3nv6 & Yx3nv6); +assign Yx3nv6 = (Ty3nv6 ? My3nv6 : Fy3nv6); +assign My3nv6 = (Az3nv6 | Hz3nv6); +assign Fy3nv6 = (~(HADDRI[8] & Oz3nv6)); +assign Rx3nv6 = (J04nv6 ? C04nv6 : Vz3nv6); +assign C04nv6 = (~(Q04nv6 & HADDRI[11])); +assign Vz3nv6 = (~(HADDRI[14] & X04nv6)); +assign P1net6 = (~(E14nv6 & L14nv6)); +assign L14nv6 = (S14nv6 & Z14nv6); +assign Z14nv6 = (Oe3nv6 ? N24nv6 : G24nv6); +assign N24nv6 = (~(U24nv6 & Ve3nv6)); +assign G24nv6 = (Jf3nv6 | B34nv6); +assign S14nv6 = (I34nv6 & P34nv6); +assign P34nv6 = (Ve3nv6 | W34nv6); +assign I34nv6 = (Zg3nv6 ? K44nv6 : D44nv6); +assign K44nv6 = (~(Gh3nv6 & R44nv6)); +assign D44nv6 = (~(Y44nv6 & Jf3nv6)); +assign E14nv6 = (F54nv6 & M54nv6); +assign M54nv6 = (Pi3nv6 ? A64nv6 : T54nv6); +assign A64nv6 = (~(H64nv6 & Wi3nv6)); +assign T54nv6 = (Dj3nv6 | O64nv6); +assign F54nv6 = (Fk3nv6 ? C74nv6 : V64nv6); +assign C74nv6 = (J74nv6 | Gh3nv6); +assign V64nv6 = (~(Tk3nv6 & Q74nv6)); +assign C5net6 = (~(X74nv6 & E84nv6)); +assign E84nv6 = (L84nv6 & S84nv6); +assign S84nv6 = (Qm3nv6 ? G94nv6 : Z84nv6); +assign G94nv6 = (~(Xm3nv6 & N94nv6)); +assign Z84nv6 = (~(U94nv6 & En3nv6)); +assign L84nv6 = (Ba4nv6 & Ia4nv6); +assign Ia4nv6 = (En3nv6 | Pa4nv6); +assign Ba4nv6 = (Uo3nv6 ? Db4nv6 : Wa4nv6); +assign Db4nv6 = (Kb4nv6 | Xm3nv6); +assign Wa4nv6 = (~(Ip3nv6 & Rb4nv6)); +assign X74nv6 = (Yb4nv6 & Fc4nv6); +assign Fc4nv6 = (Rq3nv6 ? Tc4nv6 : Mc4nv6); +assign Tc4nv6 = (Ad4nv6 | Fr3nv6); +assign Mc4nv6 = (~(Hd4nv6 & Mr3nv6)); +assign Yb4nv6 = (Hs3nv6 ? Vd4nv6 : Od4nv6); +assign Vd4nv6 = (~(Os3nv6 & Ce4nv6)); +assign Od4nv6 = (~(Je4nv6 & Vs3nv6)); +assign P8net6 = (~(Qe4nv6 & Xe4nv6)); +assign Xe4nv6 = (Ef4nv6 & Lf4nv6); +assign Lf4nv6 = (Su3nv6 ? Zf4nv6 : Sf4nv6); +assign Zf4nv6 = (Kx3nv6 | Gg4nv6); +assign Sf4nv6 = (Ng4nv6 | Ug4nv6); +assign Ug4nv6 = (!Gv3nv6); +assign Ef4nv6 = (Bh4nv6 & Ih4nv6); +assign Ih4nv6 = (Gv3nv6 | Ph4nv6); +assign Bh4nv6 = (Ww3nv6 ? Di4nv6 : Wh4nv6); +assign Di4nv6 = (X04nv6 | Ki4nv6); +assign Wh4nv6 = (Ri4nv6 | Zu3nv6); +assign Qe4nv6 = (Yi4nv6 & Fj4nv6); +assign Fj4nv6 = (Ty3nv6 ? Tj4nv6 : Mj4nv6); +assign Tj4nv6 = (Ak4nv6 | Hz3nv6); +assign Mj4nv6 = (~(Hk4nv6 & Oz3nv6)); +assign Yi4nv6 = (J04nv6 ? Vk4nv6 : Ok4nv6); +assign Vk4nv6 = (~(Q04nv6 & Cl4nv6)); +assign Ok4nv6 = (~(Jl4nv6 & X04nv6)); +assign L8m7z6[7] = (Vbm7z6[13] & Ql4nv6); +assign L8m7z6[6] = (~(Xl4nv6 & Em4nv6)); +assign Em4nv6 = (~(Vbm7z6[11] & Lm4nv6)); +assign Xl4nv6 = (Sm4nv6 & Zm4nv6); +assign Zm4nv6 = (~(Vbm7z6[9] & Gn4nv6)); +assign Sm4nv6 = (~(Vbm7z6[12] & Nn4nv6)); +assign L8m7z6[5] = (~(Un4nv6 & Bo4nv6)); +assign Bo4nv6 = (~(Vbm7z6[9] & Lm4nv6)); +assign Un4nv6 = (Io4nv6 & Po4nv6); +assign Po4nv6 = (~(Vbm7z6[12] & Gn4nv6)); +assign Io4nv6 = (~(Vbm7z6[11] & Nn4nv6)); +assign L8m7z6[4] = (~(Wo4nv6 & Dp4nv6)); +assign Dp4nv6 = (~(Vbm7z6[7] & Lm4nv6)); +assign Wo4nv6 = (Kp4nv6 & Rp4nv6); +assign Rp4nv6 = (~(Vbm7z6[8] & Gn4nv6)); +assign Kp4nv6 = (~(Vbm7z6[10] & Nn4nv6)); +assign L8m7z6[3] = (~(Yp4nv6 & Fq4nv6)); +assign Fq4nv6 = (~(Vbm7z6[12] & Lm4nv6)); +assign Yp4nv6 = (Mq4nv6 & Tq4nv6); +assign Tq4nv6 = (~(Vbm7z6[11] & Gn4nv6)); +assign Mq4nv6 = (~(Vbm7z6[9] & Nn4nv6)); +assign L8m7z6[2] = (~(Ar4nv6 & Hr4nv6)); +assign Hr4nv6 = (~(Vbm7z6[10] & Lm4nv6)); +assign Ar4nv6 = (Or4nv6 & Vr4nv6); +assign Vr4nv6 = (~(Vbm7z6[7] & Gn4nv6)); +assign Or4nv6 = (~(Vbm7z6[8] & Nn4nv6)); +assign L8m7z6[1] = (~(Cs4nv6 & Js4nv6)); +assign Js4nv6 = (~(Vbm7z6[8] & Lm4nv6)); +assign Lm4nv6 = (!Qs4nv6); +assign Cs4nv6 = (Xs4nv6 & Et4nv6); +assign Et4nv6 = (~(Vbm7z6[10] & Gn4nv6)); +assign Gn4nv6 = (!Lt4nv6); +assign Xs4nv6 = (~(Vbm7z6[7] & Nn4nv6)); +assign Nn4nv6 = (!St4nv6); +assign L8m7z6[0] = (Vbm7z6[6] & Ql4nv6); +assign Ql4nv6 = (~(Zt4nv6 & Qs4nv6)); +assign Qs4nv6 = (Vbm7z6[3] ? Nu4nv6 : Gu4nv6); +assign Zt4nv6 = (Lt4nv6 & St4nv6); +assign St4nv6 = (Vbm7z6[3] ? Bv4nv6 : Uu4nv6); +assign Bv4nv6 = (Gu4nv6 & Iv4nv6); +assign Iv4nv6 = (~(Pv4nv6 & Wv4nv6)); +assign Pv4nv6 = (Vbm7z6[1] & Vbm7z6[2]); +assign Gu4nv6 = (Vbm7z6[5] ? Kw4nv6 : Dw4nv6); +assign Kw4nv6 = (!Rw4nv6); +assign Rw4nv6 = (Vbm7z6[4] ? Fx4nv6 : Yw4nv6); +assign Dw4nv6 = (~(Mx4nv6 & Vbm7z6[1])); +assign Mx4nv6 = (Vbm7z6[4] & Tx4nv6); +assign Lt4nv6 = (Vbm7z6[3] ? Uu4nv6 : Nu4nv6); +assign Uu4nv6 = (Vbm7z6[5] ? Hy4nv6 : Ay4nv6); +assign Hy4nv6 = (!Oy4nv6); +assign Oy4nv6 = (Vbm7z6[4] ? Vy4nv6 : Fx4nv6); +assign Ay4nv6 = (~(Yw4nv6 & Vbm7z6[4])); +assign Nu4nv6 = (Vbm7z6[5] ? Jz4nv6 : Cz4nv6); +assign Jz4nv6 = (!Qz4nv6); +assign Qz4nv6 = (Vbm7z6[4] ? Yw4nv6 : Vy4nv6); +assign Yw4nv6 = (Vbm7z6[2] & Xz4nv6); +assign Xz4nv6 = (!Vbm7z6[1]); +assign Vy4nv6 = (Vbm7z6[1] & Tx4nv6); +assign Cz4nv6 = (~(Vbm7z6[4] & Fx4nv6)); +assign Fx4nv6 = (Vbm7z6[1] ^ Tx4nv6); +assign Tx4nv6 = (!Vbm7z6[2]); +assign Pvlet6 = (~(E05nv6 & L05nv6)); +assign L05nv6 = (S05nv6 & Z05nv6); +assign Z05nv6 = (U15nv6 ? N15nv6 : G15nv6); +assign N15nv6 = (~(HADDRI[28] & B25nv6)); +assign G15nv6 = (~(I25nv6 & HADDRI[25])); +assign S05nv6 = (P25nv6 & W25nv6); +assign W25nv6 = (B25nv6 | Eg3nv6); +assign P25nv6 = (R35nv6 ? K35nv6 : D35nv6); +assign K35nv6 = (~(HADDRI[22] & Y35nv6)); +assign D35nv6 = (~(F45nv6 & HADDRI[19])); +assign E05nv6 = (M45nv6 & T45nv6); +assign T45nv6 = (O55nv6 ? H55nv6 : A55nv6); +assign H55nv6 = (~(HADDRI[10] & V55nv6)); +assign A55nv6 = (C65nv6 | Kj3nv6); +assign M45nv6 = (X65nv6 ? Q65nv6 : J65nv6); +assign Q65nv6 = (~(HADDRI[16] & E75nv6)); +assign J65nv6 = (~(L75nv6 & HADDRI[13])); +assign Czlet6 = (~(S75nv6 & Z75nv6)); +assign Z75nv6 = (G85nv6 & N85nv6); +assign N85nv6 = (I95nv6 ? B95nv6 : U85nv6); +assign B95nv6 = (~(HADDRI[27] & P95nv6)); +assign U85nv6 = (~(W95nv6 & HADDRI[24])); +assign G85nv6 = (Da5nv6 & Ka5nv6); +assign Ka5nv6 = (Zn3nv6 | P95nv6); +assign Da5nv6 = (Fb5nv6 ? Ya5nv6 : Ra5nv6); +assign Ya5nv6 = (~(HADDRI[21] & Mb5nv6)); +assign Ra5nv6 = (~(Tb5nv6 & HADDRI[18])); +assign S75nv6 = (Ac5nv6 & Hc5nv6); +assign Hc5nv6 = (Cd5nv6 ? Vc5nv6 : Oc5nv6); +assign Vc5nv6 = (~(HADDRI[9] & Jd5nv6)); +assign Oc5nv6 = (Yq3nv6 | Qd5nv6); +assign Ac5nv6 = (Le5nv6 ? Ee5nv6 : Xd5nv6); +assign Ee5nv6 = (~(HADDRI[15] & Se5nv6)); +assign Xd5nv6 = (~(Ze5nv6 & HADDRI[12])); +assign P2met6 = (~(Gf5nv6 & Nf5nv6)); +assign Nf5nv6 = (Uf5nv6 & Bg5nv6); +assign Bg5nv6 = (Wg5nv6 ? Pg5nv6 : Ig5nv6); +assign Pg5nv6 = (~(HADDRI[26] & Dh5nv6)); +assign Ig5nv6 = (~(Kh5nv6 & HADDRI[23])); +assign Uf5nv6 = (Rh5nv6 & Yh5nv6); +assign Yh5nv6 = (Dh5nv6 | Bw3nv6); +assign Rh5nv6 = (Ti5nv6 ? Mi5nv6 : Fi5nv6); +assign Mi5nv6 = (~(HADDRI[20] & Aj5nv6)); +assign Fi5nv6 = (~(Hj5nv6 & HADDRI[17])); +assign Gf5nv6 = (Oj5nv6 & Vj5nv6); +assign Vj5nv6 = (Qk5nv6 ? Jk5nv6 : Ck5nv6); +assign Jk5nv6 = (Az3nv6 | Xk5nv6); +assign Ck5nv6 = (~(HADDRI[8] & El5nv6)); +assign Oj5nv6 = (Zl5nv6 ? Sl5nv6 : Ll5nv6); +assign Sl5nv6 = (~(HADDRI[14] & Gm5nv6)); +assign Ll5nv6 = (~(Nm5nv6 & HADDRI[11])); +assign P9met6 = (~(Um5nv6 & Bn5nv6)); +assign Bn5nv6 = (In5nv6 & Pn5nv6); +assign Pn5nv6 = (F45nv6 ? Do5nv6 : Wn5nv6); +assign Do5nv6 = (~(R44nv6 & Ko5nv6)); +assign Wn5nv6 = (Ro5nv6 | J74nv6); +assign In5nv6 = (Yo5nv6 & Fp5nv6); +assign Fp5nv6 = (Mp5nv6 | C65nv6); +assign Mp5nv6 = (~(Tp5nv6 & Aq5nv6)); +assign Yo5nv6 = (I25nv6 ? Oq5nv6 : Hq5nv6); +assign Oq5nv6 = (B34nv6 | U15nv6); +assign Hq5nv6 = (~(R35nv6 & Y44nv6)); +assign R35nv6 = (!Ko5nv6); +assign Um5nv6 = (Vq5nv6 & Cr5nv6); +assign Cr5nv6 = (L75nv6 ? Qr5nv6 : Jr5nv6); +assign Qr5nv6 = (~(Q74nv6 & Ro5nv6)); +assign Jr5nv6 = (~(O55nv6 & H64nv6)); +assign Vq5nv6 = (Es5nv6 ? W34nv6 : Xr5nv6); +assign Xr5nv6 = (~(U15nv6 & U24nv6)); +assign Cdmet6 = (~(Ls5nv6 & Ss5nv6)); +assign Ss5nv6 = (Zs5nv6 & Gt5nv6); +assign Gt5nv6 = (Tb5nv6 ? Ut5nv6 : Nt5nv6); +assign Ut5nv6 = (~(Rb4nv6 & Bu5nv6)); +assign Nt5nv6 = (~(Le5nv6 & Je4nv6)); +assign Le5nv6 = (!Iu5nv6); +assign Zs5nv6 = (Pu5nv6 & Wu5nv6); +assign Wu5nv6 = (~(Dv5nv6 & Kv5nv6)); +assign Dv5nv6 = (~(Qd5nv6 | Cd5nv6)); +assign Pu5nv6 = (W95nv6 ? Yv5nv6 : Rv5nv6); +assign Yv5nv6 = (~(N94nv6 & Fw5nv6)); +assign Rv5nv6 = (Bu5nv6 | Kb4nv6); +assign Ls5nv6 = (Mw5nv6 & Tw5nv6); +assign Tw5nv6 = (Ze5nv6 ? Hx5nv6 : Ax5nv6); +assign Hx5nv6 = (~(Ce4nv6 & Iu5nv6)); +assign Ax5nv6 = (~(Cd5nv6 & Hd4nv6)); +assign Mw5nv6 = (Vx5nv6 ? Pa4nv6 : Ox5nv6); +assign Ox5nv6 = (~(I95nv6 & U94nv6)); +assign Pgmet6 = (~(Cy5nv6 & Jy5nv6)); +assign Jy5nv6 = (Qy5nv6 & Xy5nv6); +assign Xy5nv6 = (Hj5nv6 ? Lz5nv6 : Ez5nv6); +assign Lz5nv6 = (Ki4nv6 | Ti5nv6); +assign Ez5nv6 = (~(Zl5nv6 & Jl4nv6)); +assign Zl5nv6 = (!Sz5nv6); +assign Qy5nv6 = (Zz5nv6 & G06nv6); +assign G06nv6 = (~(N06nv6 & Qk5nv6)); +assign N06nv6 = (~(Ak4nv6 | Xk5nv6)); +assign Zz5nv6 = (Kh5nv6 ? B16nv6 : U06nv6); +assign B16nv6 = (Gg4nv6 | Wg5nv6); +assign U06nv6 = (I16nv6 | Ri4nv6); +assign Cy5nv6 = (P16nv6 & W16nv6); +assign W16nv6 = (Nm5nv6 ? K26nv6 : D26nv6); +assign K26nv6 = (~(Cl4nv6 & Sz5nv6)); +assign D26nv6 = (~(Hk4nv6 & R26nv6)); +assign P16nv6 = (F36nv6 ? Ph4nv6 : Y26nv6); +assign Y26nv6 = (M36nv6 | Ng4nv6); +assign Dyl7z6[7] = (N1m7z6[13] & T36nv6); +assign Dyl7z6[6] = (~(A46nv6 & H46nv6)); +assign H46nv6 = (~(N1m7z6[11] & O46nv6)); +assign A46nv6 = (V46nv6 & C56nv6); +assign C56nv6 = (~(N1m7z6[9] & J56nv6)); +assign V46nv6 = (~(N1m7z6[12] & Q56nv6)); +assign Dyl7z6[5] = (~(X56nv6 & E66nv6)); +assign E66nv6 = (~(N1m7z6[9] & O46nv6)); +assign X56nv6 = (L66nv6 & S66nv6); +assign S66nv6 = (~(N1m7z6[12] & J56nv6)); +assign L66nv6 = (~(N1m7z6[11] & Q56nv6)); +assign Dyl7z6[4] = (~(Z66nv6 & G76nv6)); +assign G76nv6 = (~(N1m7z6[7] & O46nv6)); +assign Z66nv6 = (N76nv6 & U76nv6); +assign U76nv6 = (~(N1m7z6[8] & J56nv6)); +assign N76nv6 = (~(N1m7z6[10] & Q56nv6)); +assign Dyl7z6[3] = (~(B86nv6 & I86nv6)); +assign I86nv6 = (~(N1m7z6[12] & O46nv6)); +assign B86nv6 = (P86nv6 & W86nv6); +assign W86nv6 = (~(N1m7z6[11] & J56nv6)); +assign P86nv6 = (~(N1m7z6[9] & Q56nv6)); +assign Dyl7z6[2] = (~(D96nv6 & K96nv6)); +assign K96nv6 = (~(N1m7z6[10] & O46nv6)); +assign D96nv6 = (R96nv6 & Y96nv6); +assign Y96nv6 = (~(N1m7z6[7] & J56nv6)); +assign R96nv6 = (~(N1m7z6[8] & Q56nv6)); +assign Dyl7z6[1] = (~(Fa6nv6 & Ma6nv6)); +assign Ma6nv6 = (~(N1m7z6[8] & O46nv6)); +assign O46nv6 = (!Ta6nv6); +assign Fa6nv6 = (Ab6nv6 & Hb6nv6); +assign Hb6nv6 = (~(N1m7z6[10] & J56nv6)); +assign J56nv6 = (!Ob6nv6); +assign Ab6nv6 = (~(N1m7z6[7] & Q56nv6)); +assign Q56nv6 = (!Vb6nv6); +assign Dyl7z6[0] = (N1m7z6[6] & T36nv6); +assign T36nv6 = (~(Cc6nv6 & Ta6nv6)); +assign Ta6nv6 = (N1m7z6[3] ? Qc6nv6 : Jc6nv6); +assign Cc6nv6 = (Ob6nv6 & Vb6nv6); +assign Vb6nv6 = (N1m7z6[3] ? Ed6nv6 : Xc6nv6); +assign Ed6nv6 = (Jc6nv6 & Ld6nv6); +assign Ld6nv6 = (~(Sd6nv6 & Zd6nv6)); +assign Sd6nv6 = (N1m7z6[2] & N1m7z6[1]); +assign Jc6nv6 = (N1m7z6[5] ? Ne6nv6 : Ge6nv6); +assign Ne6nv6 = (!Ue6nv6); +assign Ue6nv6 = (N1m7z6[4] ? If6nv6 : Bf6nv6); +assign Ge6nv6 = (~(Pf6nv6 & N1m7z6[4])); +assign Ob6nv6 = (N1m7z6[3] ? Xc6nv6 : Qc6nv6); +assign Xc6nv6 = (N1m7z6[5] ? Dg6nv6 : Wf6nv6); +assign Dg6nv6 = (!Kg6nv6); +assign Kg6nv6 = (N1m7z6[4] ? Pf6nv6 : If6nv6); +assign Wf6nv6 = (~(Bf6nv6 & N1m7z6[4])); +assign Qc6nv6 = (N1m7z6[5] ? Yg6nv6 : Rg6nv6); +assign Yg6nv6 = (!Fh6nv6); +assign Fh6nv6 = (N1m7z6[4] ? Bf6nv6 : Pf6nv6); +assign Bf6nv6 = (N1m7z6[2] & Mh6nv6); +assign Mh6nv6 = (!N1m7z6[1]); +assign Pf6nv6 = (N1m7z6[1] & Th6nv6); +assign Rg6nv6 = (~(N1m7z6[4] & If6nv6)); +assign If6nv6 = (N1m7z6[1] ^ Th6nv6); +assign Th6nv6 = (!N1m7z6[2]); +assign P3let6 = (~(Ai6nv6 & Hi6nv6)); +assign Hi6nv6 = (Oi6nv6 & Vi6nv6); +assign Vi6nv6 = (Qj6nv6 ? Jj6nv6 : Cj6nv6); +assign Jj6nv6 = (~(HADDRI[28] & Xj6nv6)); +assign Cj6nv6 = (~(Ek6nv6 & HADDRI[25])); +assign Oi6nv6 = (Lk6nv6 & Sk6nv6); +assign Sk6nv6 = (Xj6nv6 | Eg3nv6); +assign Lk6nv6 = (Nl6nv6 ? Gl6nv6 : Zk6nv6); +assign Gl6nv6 = (~(HADDRI[22] & Ul6nv6)); +assign Zk6nv6 = (~(Bm6nv6 & HADDRI[19])); +assign Ai6nv6 = (Im6nv6 & Pm6nv6); +assign Pm6nv6 = (Kn6nv6 ? Dn6nv6 : Wm6nv6); +assign Dn6nv6 = (~(HADDRI[10] & Rn6nv6)); +assign Wm6nv6 = (Yn6nv6 | Kj3nv6); +assign Im6nv6 = (To6nv6 ? Mo6nv6 : Fo6nv6); +assign Mo6nv6 = (~(HADDRI[16] & Ap6nv6)); +assign Fo6nv6 = (~(Hp6nv6 & HADDRI[13])); +assign C7let6 = (~(Op6nv6 & Vp6nv6)); +assign Vp6nv6 = (Cq6nv6 & Jq6nv6); +assign Jq6nv6 = (Er6nv6 ? Xq6nv6 : Qq6nv6); +assign Xq6nv6 = (~(HADDRI[27] & Lr6nv6)); +assign Qq6nv6 = (~(Sr6nv6 & HADDRI[24])); +assign Cq6nv6 = (Zr6nv6 & Gs6nv6); +assign Gs6nv6 = (Zn3nv6 | Lr6nv6); +assign Zr6nv6 = (Bt6nv6 ? Us6nv6 : Ns6nv6); +assign Us6nv6 = (~(HADDRI[21] & It6nv6)); +assign Ns6nv6 = (~(Pt6nv6 & HADDRI[18])); +assign Op6nv6 = (Wt6nv6 & Du6nv6); +assign Du6nv6 = (Yu6nv6 ? Ru6nv6 : Ku6nv6); +assign Ru6nv6 = (~(HADDRI[9] & Fv6nv6)); +assign Ku6nv6 = (Yq3nv6 | Mv6nv6); +assign Wt6nv6 = (Hw6nv6 ? Aw6nv6 : Tv6nv6); +assign Aw6nv6 = (~(HADDRI[15] & Ow6nv6)); +assign Tv6nv6 = (~(Vw6nv6 & HADDRI[12])); +assign Palet6 = (~(Cx6nv6 & Jx6nv6)); +assign Jx6nv6 = (Qx6nv6 & Xx6nv6); +assign Xx6nv6 = (Sy6nv6 ? Ly6nv6 : Ey6nv6); +assign Ly6nv6 = (~(HADDRI[26] & Zy6nv6)); +assign Ey6nv6 = (~(Gz6nv6 & HADDRI[23])); +assign Qx6nv6 = (Nz6nv6 & Uz6nv6); +assign Uz6nv6 = (Zy6nv6 | Bw3nv6); +assign Nz6nv6 = (P07nv6 ? I07nv6 : B07nv6); +assign I07nv6 = (~(HADDRI[20] & W07nv6)); +assign B07nv6 = (~(D17nv6 & HADDRI[17])); +assign Cx6nv6 = (K17nv6 & R17nv6); +assign R17nv6 = (M27nv6 ? F27nv6 : Y17nv6); +assign F27nv6 = (Az3nv6 | T27nv6); +assign Y17nv6 = (~(HADDRI[8] & A37nv6)); +assign K17nv6 = (V37nv6 ? O37nv6 : H37nv6); +assign O37nv6 = (~(HADDRI[14] & C47nv6)); +assign H37nv6 = (~(J47nv6 & HADDRI[11])); +assign Phlet6 = (~(Q47nv6 & X47nv6)); +assign X47nv6 = (E57nv6 & L57nv6); +assign L57nv6 = (Bm6nv6 ? Z57nv6 : S57nv6); +assign Z57nv6 = (~(R44nv6 & G67nv6)); +assign S57nv6 = (N67nv6 | J74nv6); +assign E57nv6 = (U67nv6 & B77nv6); +assign B77nv6 = (I77nv6 | Yn6nv6); +assign I77nv6 = (~(Tp5nv6 & P77nv6)); +assign U67nv6 = (Ek6nv6 ? D87nv6 : W77nv6); +assign D87nv6 = (B34nv6 | Qj6nv6); +assign W77nv6 = (~(Nl6nv6 & Y44nv6)); +assign Nl6nv6 = (!G67nv6); +assign Q47nv6 = (K87nv6 & R87nv6); +assign R87nv6 = (Hp6nv6 ? F97nv6 : Y87nv6); +assign F97nv6 = (~(Q74nv6 & N67nv6)); +assign Y87nv6 = (~(Kn6nv6 & H64nv6)); +assign K87nv6 = (T97nv6 ? W34nv6 : M97nv6); +assign M97nv6 = (~(Qj6nv6 & U24nv6)); +assign Cllet6 = (~(Aa7nv6 & Ha7nv6)); +assign Ha7nv6 = (Oa7nv6 & Va7nv6); +assign Va7nv6 = (Pt6nv6 ? Jb7nv6 : Cb7nv6); +assign Jb7nv6 = (~(Rb4nv6 & Qb7nv6)); +assign Cb7nv6 = (~(Hw6nv6 & Je4nv6)); +assign Hw6nv6 = (!Xb7nv6); +assign Oa7nv6 = (Ec7nv6 & Lc7nv6); +assign Lc7nv6 = (~(Sc7nv6 & Kv5nv6)); +assign Sc7nv6 = (~(Mv6nv6 | Yu6nv6)); +assign Ec7nv6 = (Sr6nv6 ? Gd7nv6 : Zc7nv6); +assign Gd7nv6 = (~(N94nv6 & Nd7nv6)); +assign Zc7nv6 = (Qb7nv6 | Kb4nv6); +assign Aa7nv6 = (Ud7nv6 & Be7nv6); +assign Be7nv6 = (Vw6nv6 ? Pe7nv6 : Ie7nv6); +assign Pe7nv6 = (~(Ce4nv6 & Xb7nv6)); +assign Ie7nv6 = (~(Yu6nv6 & Hd4nv6)); +assign Ud7nv6 = (Df7nv6 ? Pa4nv6 : We7nv6); +assign We7nv6 = (~(Er6nv6 & U94nv6)); +assign Polet6 = (~(Kf7nv6 & Rf7nv6)); +assign Rf7nv6 = (Yf7nv6 & Fg7nv6); +assign Fg7nv6 = (D17nv6 ? Tg7nv6 : Mg7nv6); +assign Tg7nv6 = (Ki4nv6 | P07nv6); +assign Mg7nv6 = (~(V37nv6 & Jl4nv6)); +assign V37nv6 = (!Ah7nv6); +assign Yf7nv6 = (Hh7nv6 & Oh7nv6); +assign Oh7nv6 = (~(Vh7nv6 & Ci7nv6)); +assign Vh7nv6 = (~(Ji7nv6 | T27nv6)); +assign Hh7nv6 = (Gz6nv6 ? Xi7nv6 : Qi7nv6); +assign Xi7nv6 = (Gg4nv6 | Sy6nv6); +assign Qi7nv6 = (Ej7nv6 | Ri4nv6); +assign Kf7nv6 = (Lj7nv6 & Sj7nv6); +assign Sj7nv6 = (J47nv6 ? Gk7nv6 : Zj7nv6); +assign Gk7nv6 = (~(Cl4nv6 & Ah7nv6)); +assign Zj7nv6 = (~(Hk4nv6 & Ji7nv6)); +assign Lj7nv6 = (Uk7nv6 ? Ph4nv6 : Nk7nv6); +assign Nk7nv6 = (Bl7nv6 | Ng4nv6); +assign Vnl7z6[7] = (Frl7z6[13] & Il7nv6); +assign Vnl7z6[6] = (~(Pl7nv6 & Wl7nv6)); +assign Wl7nv6 = (~(Frl7z6[11] & Dm7nv6)); +assign Pl7nv6 = (Km7nv6 & Rm7nv6); +assign Rm7nv6 = (~(Frl7z6[9] & Ym7nv6)); +assign Km7nv6 = (~(Frl7z6[12] & Fn7nv6)); +assign Vnl7z6[5] = (~(Mn7nv6 & Tn7nv6)); +assign Tn7nv6 = (~(Frl7z6[9] & Dm7nv6)); +assign Mn7nv6 = (Ao7nv6 & Ho7nv6); +assign Ho7nv6 = (~(Frl7z6[12] & Ym7nv6)); +assign Ao7nv6 = (~(Frl7z6[11] & Fn7nv6)); +assign Vnl7z6[4] = (~(Oo7nv6 & Vo7nv6)); +assign Vo7nv6 = (~(Frl7z6[7] & Dm7nv6)); +assign Oo7nv6 = (Cp7nv6 & Jp7nv6); +assign Jp7nv6 = (~(Frl7z6[8] & Ym7nv6)); +assign Cp7nv6 = (~(Frl7z6[10] & Fn7nv6)); +assign Vnl7z6[3] = (~(Qp7nv6 & Xp7nv6)); +assign Xp7nv6 = (~(Frl7z6[12] & Dm7nv6)); +assign Qp7nv6 = (Eq7nv6 & Lq7nv6); +assign Lq7nv6 = (~(Frl7z6[11] & Ym7nv6)); +assign Eq7nv6 = (~(Frl7z6[9] & Fn7nv6)); +assign Vnl7z6[2] = (~(Sq7nv6 & Zq7nv6)); +assign Zq7nv6 = (~(Frl7z6[10] & Dm7nv6)); +assign Sq7nv6 = (Gr7nv6 & Nr7nv6); +assign Nr7nv6 = (~(Frl7z6[7] & Ym7nv6)); +assign Gr7nv6 = (~(Frl7z6[8] & Fn7nv6)); +assign Vnl7z6[1] = (~(Ur7nv6 & Bs7nv6)); +assign Bs7nv6 = (~(Frl7z6[8] & Dm7nv6)); +assign Dm7nv6 = (!Is7nv6); +assign Ur7nv6 = (Ps7nv6 & Ws7nv6); +assign Ws7nv6 = (~(Frl7z6[10] & Ym7nv6)); +assign Ym7nv6 = (!Dt7nv6); +assign Ps7nv6 = (~(Frl7z6[7] & Fn7nv6)); +assign Fn7nv6 = (!Kt7nv6); +assign Vnl7z6[0] = (Frl7z6[6] & Il7nv6); +assign Il7nv6 = (~(Rt7nv6 & Is7nv6)); +assign Is7nv6 = (Frl7z6[3] ? Fu7nv6 : Yt7nv6); +assign Rt7nv6 = (Dt7nv6 & Kt7nv6); +assign Kt7nv6 = (Frl7z6[3] ? Tu7nv6 : Mu7nv6); +assign Tu7nv6 = (Yt7nv6 & Av7nv6); +assign Av7nv6 = (~(Hv7nv6 & Ov7nv6)); +assign Hv7nv6 = (Frl7z6[1] & Frl7z6[2]); +assign Yt7nv6 = (Frl7z6[5] ? Cw7nv6 : Vv7nv6); +assign Cw7nv6 = (!Jw7nv6); +assign Jw7nv6 = (Frl7z6[4] ? Xw7nv6 : Qw7nv6); +assign Vv7nv6 = (~(Ex7nv6 & Frl7z6[1])); +assign Ex7nv6 = (Frl7z6[4] & Lx7nv6); +assign Dt7nv6 = (Frl7z6[3] ? Mu7nv6 : Fu7nv6); +assign Mu7nv6 = (Frl7z6[5] ? Zx7nv6 : Sx7nv6); +assign Zx7nv6 = (!Gy7nv6); +assign Gy7nv6 = (Frl7z6[4] ? Ny7nv6 : Xw7nv6); +assign Sx7nv6 = (~(Qw7nv6 & Frl7z6[4])); +assign Fu7nv6 = (Frl7z6[5] ? Bz7nv6 : Uy7nv6); +assign Bz7nv6 = (!Iz7nv6); +assign Iz7nv6 = (Frl7z6[4] ? Qw7nv6 : Ny7nv6); +assign Qw7nv6 = (Frl7z6[2] & Pz7nv6); +assign Pz7nv6 = (!Frl7z6[1]); +assign Ny7nv6 = (Frl7z6[1] & Lx7nv6); +assign Uy7nv6 = (~(Frl7z6[4] & Xw7nv6)); +assign Xw7nv6 = (Frl7z6[1] ^ Lx7nv6); +assign Lx7nv6 = (!Frl7z6[2]); +assign Pbket6 = (~(Wz7nv6 & D08nv6)); +assign D08nv6 = (K08nv6 & R08nv6); +assign R08nv6 = (M18nv6 ? F18nv6 : Y08nv6); +assign F18nv6 = (~(HADDRI[28] & T18nv6)); +assign Y08nv6 = (~(A28nv6 & HADDRI[25])); +assign K08nv6 = (H28nv6 & O28nv6); +assign O28nv6 = (T18nv6 | Eg3nv6); +assign H28nv6 = (J38nv6 ? C38nv6 : V28nv6); +assign C38nv6 = (~(HADDRI[22] & Q38nv6)); +assign V28nv6 = (~(X38nv6 & HADDRI[19])); +assign Wz7nv6 = (E48nv6 & L48nv6); +assign L48nv6 = (G58nv6 ? Z48nv6 : S48nv6); +assign Z48nv6 = (~(HADDRI[10] & N58nv6)); +assign S48nv6 = (U58nv6 | Kj3nv6); +assign E48nv6 = (P68nv6 ? I68nv6 : B68nv6); +assign I68nv6 = (~(HADDRI[16] & W68nv6)); +assign B68nv6 = (~(D78nv6 & HADDRI[13])); +assign Cfket6 = (~(K78nv6 & R78nv6)); +assign R78nv6 = (Y78nv6 & F88nv6); +assign F88nv6 = (A98nv6 ? T88nv6 : M88nv6); +assign T88nv6 = (~(HADDRI[27] & H98nv6)); +assign M88nv6 = (~(O98nv6 & HADDRI[24])); +assign Y78nv6 = (V98nv6 & Ca8nv6); +assign Ca8nv6 = (Zn3nv6 | H98nv6); +assign V98nv6 = (Xa8nv6 ? Qa8nv6 : Ja8nv6); +assign Qa8nv6 = (~(HADDRI[21] & Eb8nv6)); +assign Ja8nv6 = (~(Lb8nv6 & HADDRI[18])); +assign K78nv6 = (Sb8nv6 & Zb8nv6); +assign Zb8nv6 = (Uc8nv6 ? Nc8nv6 : Gc8nv6); +assign Nc8nv6 = (~(HADDRI[9] & Bd8nv6)); +assign Gc8nv6 = (Yq3nv6 | Id8nv6); +assign Sb8nv6 = (De8nv6 ? Wd8nv6 : Pd8nv6); +assign Wd8nv6 = (~(HADDRI[15] & Ke8nv6)); +assign Pd8nv6 = (~(Re8nv6 & HADDRI[12])); +assign Piket6 = (~(Ye8nv6 & Ff8nv6)); +assign Ff8nv6 = (Mf8nv6 & Tf8nv6); +assign Tf8nv6 = (Og8nv6 ? Hg8nv6 : Ag8nv6); +assign Hg8nv6 = (~(HADDRI[26] & Vg8nv6)); +assign Ag8nv6 = (~(Ch8nv6 & HADDRI[23])); +assign Mf8nv6 = (Jh8nv6 & Qh8nv6); +assign Qh8nv6 = (Vg8nv6 | Bw3nv6); +assign Jh8nv6 = (Li8nv6 ? Ei8nv6 : Xh8nv6); +assign Ei8nv6 = (~(HADDRI[20] & Si8nv6)); +assign Xh8nv6 = (~(Zi8nv6 & HADDRI[17])); +assign Ye8nv6 = (Gj8nv6 & Nj8nv6); +assign Nj8nv6 = (Ik8nv6 ? Bk8nv6 : Uj8nv6); +assign Bk8nv6 = (Az3nv6 | Pk8nv6); +assign Uj8nv6 = (~(HADDRI[8] & Wk8nv6)); +assign Gj8nv6 = (Rl8nv6 ? Kl8nv6 : Dl8nv6); +assign Kl8nv6 = (~(HADDRI[14] & Yl8nv6)); +assign Dl8nv6 = (~(Fm8nv6 & HADDRI[11])); +assign Ppket6 = (~(Mm8nv6 & Tm8nv6)); +assign Tm8nv6 = (An8nv6 & Hn8nv6); +assign Hn8nv6 = (X38nv6 ? Vn8nv6 : On8nv6); +assign Vn8nv6 = (~(R44nv6 & Co8nv6)); +assign On8nv6 = (Jo8nv6 | J74nv6); +assign An8nv6 = (Qo8nv6 & Xo8nv6); +assign Xo8nv6 = (Ep8nv6 | U58nv6); +assign Ep8nv6 = (~(Tp5nv6 & Lp8nv6)); +assign Qo8nv6 = (A28nv6 ? Zp8nv6 : Sp8nv6); +assign Zp8nv6 = (B34nv6 | M18nv6); +assign Sp8nv6 = (~(J38nv6 & Y44nv6)); +assign J38nv6 = (!Co8nv6); +assign Mm8nv6 = (Gq8nv6 & Nq8nv6); +assign Nq8nv6 = (D78nv6 ? Br8nv6 : Uq8nv6); +assign Br8nv6 = (~(Q74nv6 & Jo8nv6)); +assign Uq8nv6 = (~(G58nv6 & H64nv6)); +assign Gq8nv6 = (Pr8nv6 ? W34nv6 : Ir8nv6); +assign Ir8nv6 = (~(M18nv6 & U24nv6)); +assign Ctket6 = (~(Wr8nv6 & Ds8nv6)); +assign Ds8nv6 = (Ks8nv6 & Rs8nv6); +assign Rs8nv6 = (Lb8nv6 ? Ft8nv6 : Ys8nv6); +assign Ft8nv6 = (~(Rb4nv6 & Mt8nv6)); +assign Ys8nv6 = (~(De8nv6 & Je4nv6)); +assign De8nv6 = (!Tt8nv6); +assign Ks8nv6 = (Au8nv6 & Hu8nv6); +assign Hu8nv6 = (~(Ou8nv6 & Kv5nv6)); +assign Ou8nv6 = (~(Id8nv6 | Uc8nv6)); +assign Au8nv6 = (O98nv6 ? Cv8nv6 : Vu8nv6); +assign Cv8nv6 = (~(N94nv6 & Jv8nv6)); +assign Vu8nv6 = (Mt8nv6 | Kb4nv6); +assign Wr8nv6 = (Qv8nv6 & Xv8nv6); +assign Xv8nv6 = (Re8nv6 ? Lw8nv6 : Ew8nv6); +assign Lw8nv6 = (~(Ce4nv6 & Tt8nv6)); +assign Ew8nv6 = (~(Uc8nv6 & Hd4nv6)); +assign Qv8nv6 = (Zw8nv6 ? Pa4nv6 : Sw8nv6); +assign Sw8nv6 = (~(A98nv6 & U94nv6)); +assign Pwket6 = (~(Gx8nv6 & Nx8nv6)); +assign Nx8nv6 = (Ux8nv6 & By8nv6); +assign By8nv6 = (Zi8nv6 ? Py8nv6 : Iy8nv6); +assign Py8nv6 = (Ki4nv6 | Li8nv6); +assign Iy8nv6 = (~(Rl8nv6 & Jl4nv6)); +assign Rl8nv6 = (!Wy8nv6); +assign Ux8nv6 = (Dz8nv6 & Kz8nv6); +assign Kz8nv6 = (~(Rz8nv6 & Ik8nv6)); +assign Rz8nv6 = (~(Ak4nv6 | Pk8nv6)); +assign Dz8nv6 = (Ch8nv6 ? F09nv6 : Yz8nv6); +assign F09nv6 = (Gg4nv6 | Og8nv6); +assign Yz8nv6 = (M09nv6 | Ri4nv6); +assign Gx8nv6 = (T09nv6 & A19nv6); +assign A19nv6 = (Fm8nv6 ? O19nv6 : H19nv6); +assign O19nv6 = (~(Cl4nv6 & Wy8nv6)); +assign H19nv6 = (~(Hk4nv6 & V19nv6)); +assign T09nv6 = (J29nv6 ? Ph4nv6 : C29nv6); +assign C29nv6 = (Q29nv6 | Ng4nv6); +assign Ndl7z6[7] = (Xgl7z6[13] & X29nv6); +assign Ndl7z6[6] = (~(E39nv6 & L39nv6)); +assign L39nv6 = (~(Xgl7z6[11] & S39nv6)); +assign E39nv6 = (Z39nv6 & G49nv6); +assign G49nv6 = (~(Xgl7z6[9] & N49nv6)); +assign Z39nv6 = (~(Xgl7z6[12] & U49nv6)); +assign Ndl7z6[5] = (~(B59nv6 & I59nv6)); +assign I59nv6 = (~(Xgl7z6[9] & S39nv6)); +assign B59nv6 = (P59nv6 & W59nv6); +assign W59nv6 = (~(Xgl7z6[12] & N49nv6)); +assign P59nv6 = (~(Xgl7z6[11] & U49nv6)); +assign Ndl7z6[4] = (~(D69nv6 & K69nv6)); +assign K69nv6 = (~(Xgl7z6[7] & S39nv6)); +assign D69nv6 = (R69nv6 & Y69nv6); +assign Y69nv6 = (~(Xgl7z6[8] & N49nv6)); +assign R69nv6 = (~(Xgl7z6[10] & U49nv6)); +assign Ndl7z6[3] = (~(F79nv6 & M79nv6)); +assign M79nv6 = (~(Xgl7z6[12] & S39nv6)); +assign F79nv6 = (T79nv6 & A89nv6); +assign A89nv6 = (~(Xgl7z6[11] & N49nv6)); +assign T79nv6 = (~(Xgl7z6[9] & U49nv6)); +assign Ndl7z6[2] = (~(H89nv6 & O89nv6)); +assign O89nv6 = (~(Xgl7z6[10] & S39nv6)); +assign H89nv6 = (V89nv6 & C99nv6); +assign C99nv6 = (~(Xgl7z6[7] & N49nv6)); +assign V89nv6 = (~(Xgl7z6[8] & U49nv6)); +assign Ndl7z6[1] = (~(J99nv6 & Q99nv6)); +assign Q99nv6 = (~(Xgl7z6[8] & S39nv6)); +assign S39nv6 = (!X99nv6); +assign J99nv6 = (Ea9nv6 & La9nv6); +assign La9nv6 = (~(Xgl7z6[10] & N49nv6)); +assign N49nv6 = (!Sa9nv6); +assign Ea9nv6 = (~(Xgl7z6[7] & U49nv6)); +assign U49nv6 = (!Za9nv6); +assign Ndl7z6[0] = (Xgl7z6[6] & X29nv6); +assign X29nv6 = (~(Gb9nv6 & X99nv6)); +assign X99nv6 = (Xgl7z6[3] ? Ub9nv6 : Nb9nv6); +assign Gb9nv6 = (Sa9nv6 & Za9nv6); +assign Za9nv6 = (Xgl7z6[3] ? Ic9nv6 : Bc9nv6); +assign Ic9nv6 = (Nb9nv6 & Pc9nv6); +assign Pc9nv6 = (~(Wc9nv6 & Dd9nv6)); +assign Wc9nv6 = (Xgl7z6[2] & Xgl7z6[1]); +assign Nb9nv6 = (Xgl7z6[5] ? Rd9nv6 : Kd9nv6); +assign Rd9nv6 = (!Yd9nv6); +assign Yd9nv6 = (Xgl7z6[4] ? Me9nv6 : Fe9nv6); +assign Kd9nv6 = (~(Te9nv6 & Xgl7z6[4])); +assign Sa9nv6 = (Xgl7z6[3] ? Bc9nv6 : Ub9nv6); +assign Bc9nv6 = (Xgl7z6[5] ? Hf9nv6 : Af9nv6); +assign Hf9nv6 = (!Of9nv6); +assign Of9nv6 = (Xgl7z6[4] ? Te9nv6 : Me9nv6); +assign Af9nv6 = (~(Fe9nv6 & Xgl7z6[4])); +assign Ub9nv6 = (Xgl7z6[5] ? Cg9nv6 : Vf9nv6); +assign Cg9nv6 = (!Jg9nv6); +assign Jg9nv6 = (Xgl7z6[4] ? Fe9nv6 : Te9nv6); +assign Fe9nv6 = (Xgl7z6[2] & Qg9nv6); +assign Qg9nv6 = (!Xgl7z6[1]); +assign Te9nv6 = (Xgl7z6[1] & Xg9nv6); +assign Vf9nv6 = (~(Xgl7z6[4] & Me9nv6)); +assign Me9nv6 = (Xgl7z6[1] ^ Xg9nv6); +assign Xg9nv6 = (!Xgl7z6[2]); +assign Pjjet6 = (~(Eh9nv6 & Lh9nv6)); +assign Lh9nv6 = (Sh9nv6 & Zh9nv6); +assign Zh9nv6 = (Ui9nv6 ? Ni9nv6 : Gi9nv6); +assign Ni9nv6 = (~(HADDRI[28] & Bj9nv6)); +assign Gi9nv6 = (~(Ij9nv6 & HADDRI[25])); +assign Sh9nv6 = (Pj9nv6 & Wj9nv6); +assign Wj9nv6 = (Bj9nv6 | Eg3nv6); +assign Pj9nv6 = (Rk9nv6 ? Kk9nv6 : Dk9nv6); +assign Kk9nv6 = (~(HADDRI[22] & Yk9nv6)); +assign Dk9nv6 = (~(Fl9nv6 & HADDRI[19])); +assign Eh9nv6 = (Ml9nv6 & Tl9nv6); +assign Tl9nv6 = (Om9nv6 ? Hm9nv6 : Am9nv6); +assign Hm9nv6 = (~(HADDRI[10] & Vm9nv6)); +assign Am9nv6 = (Cn9nv6 | Kj3nv6); +assign Ml9nv6 = (Xn9nv6 ? Qn9nv6 : Jn9nv6); +assign Qn9nv6 = (~(HADDRI[16] & Eo9nv6)); +assign Jn9nv6 = (~(Lo9nv6 & HADDRI[13])); +assign Cnjet6 = (~(So9nv6 & Zo9nv6)); +assign Zo9nv6 = (Gp9nv6 & Np9nv6); +assign Np9nv6 = (Iq9nv6 ? Bq9nv6 : Up9nv6); +assign Bq9nv6 = (~(HADDRI[27] & Pq9nv6)); +assign Up9nv6 = (~(Wq9nv6 & HADDRI[24])); +assign Gp9nv6 = (Dr9nv6 & Kr9nv6); +assign Kr9nv6 = (Zn3nv6 | Pq9nv6); +assign Dr9nv6 = (Fs9nv6 ? Yr9nv6 : Rr9nv6); +assign Yr9nv6 = (~(HADDRI[21] & Ms9nv6)); +assign Rr9nv6 = (~(Ts9nv6 & HADDRI[18])); +assign So9nv6 = (At9nv6 & Ht9nv6); +assign Ht9nv6 = (Cu9nv6 ? Vt9nv6 : Ot9nv6); +assign Vt9nv6 = (~(HADDRI[9] & Ju9nv6)); +assign Ot9nv6 = (Yq3nv6 | Qu9nv6); +assign At9nv6 = (Lv9nv6 ? Ev9nv6 : Xu9nv6); +assign Ev9nv6 = (~(HADDRI[15] & Sv9nv6)); +assign Xu9nv6 = (~(Zv9nv6 & HADDRI[12])); +assign Pqjet6 = (~(Gw9nv6 & Nw9nv6)); +assign Nw9nv6 = (Uw9nv6 & Bx9nv6); +assign Bx9nv6 = (Wx9nv6 ? Px9nv6 : Ix9nv6); +assign Px9nv6 = (~(HADDRI[26] & Dy9nv6)); +assign Ix9nv6 = (~(Ky9nv6 & HADDRI[23])); +assign Uw9nv6 = (Ry9nv6 & Yy9nv6); +assign Yy9nv6 = (Dy9nv6 | Bw3nv6); +assign Ry9nv6 = (Tz9nv6 ? Mz9nv6 : Fz9nv6); +assign Mz9nv6 = (~(HADDRI[20] & A0anv6)); +assign Fz9nv6 = (~(H0anv6 & HADDRI[17])); +assign Gw9nv6 = (O0anv6 & V0anv6); +assign V0anv6 = (Q1anv6 ? J1anv6 : C1anv6); +assign J1anv6 = (Az3nv6 | X1anv6); +assign C1anv6 = (~(HADDRI[8] & E2anv6)); +assign O0anv6 = (Z2anv6 ? S2anv6 : L2anv6); +assign S2anv6 = (~(HADDRI[14] & G3anv6)); +assign L2anv6 = (~(N3anv6 & HADDRI[11])); +assign Pxjet6 = (~(U3anv6 & B4anv6)); +assign B4anv6 = (I4anv6 & P4anv6); +assign P4anv6 = (Fl9nv6 ? D5anv6 : W4anv6); +assign D5anv6 = (~(R44nv6 & K5anv6)); +assign W4anv6 = (R5anv6 | J74nv6); +assign I4anv6 = (Y5anv6 & F6anv6); +assign F6anv6 = (M6anv6 | Cn9nv6); +assign M6anv6 = (~(Tp5nv6 & T6anv6)); +assign Y5anv6 = (Ij9nv6 ? H7anv6 : A7anv6); +assign H7anv6 = (B34nv6 | Ui9nv6); +assign A7anv6 = (~(Rk9nv6 & Y44nv6)); +assign Rk9nv6 = (!K5anv6); +assign U3anv6 = (O7anv6 & V7anv6); +assign V7anv6 = (Lo9nv6 ? J8anv6 : C8anv6); +assign J8anv6 = (~(Q74nv6 & R5anv6)); +assign C8anv6 = (~(Om9nv6 & H64nv6)); +assign O7anv6 = (X8anv6 ? W34nv6 : Q8anv6); +assign Q8anv6 = (~(Ui9nv6 & U24nv6)); +assign C1ket6 = (~(E9anv6 & L9anv6)); +assign L9anv6 = (S9anv6 & Z9anv6); +assign Z9anv6 = (Ts9nv6 ? Naanv6 : Gaanv6); +assign Naanv6 = (~(Rb4nv6 & Uaanv6)); +assign Gaanv6 = (~(Lv9nv6 & Je4nv6)); +assign Lv9nv6 = (!Bbanv6); +assign S9anv6 = (Ibanv6 & Pbanv6); +assign Pbanv6 = (~(Wbanv6 & Kv5nv6)); +assign Wbanv6 = (~(Qu9nv6 | Cu9nv6)); +assign Ibanv6 = (Wq9nv6 ? Kcanv6 : Dcanv6); +assign Kcanv6 = (~(N94nv6 & Rcanv6)); +assign Dcanv6 = (Uaanv6 | Kb4nv6); +assign E9anv6 = (Ycanv6 & Fdanv6); +assign Fdanv6 = (Zv9nv6 ? Tdanv6 : Mdanv6); +assign Tdanv6 = (~(Ce4nv6 & Bbanv6)); +assign Mdanv6 = (~(Cu9nv6 & Hd4nv6)); +assign Ycanv6 = (Heanv6 ? Pa4nv6 : Aeanv6); +assign Aeanv6 = (~(Iq9nv6 & U94nv6)); +assign P4ket6 = (~(Oeanv6 & Veanv6)); +assign Veanv6 = (Cfanv6 & Jfanv6); +assign Jfanv6 = (H0anv6 ? Xfanv6 : Qfanv6); +assign Xfanv6 = (Ki4nv6 | Tz9nv6); +assign Qfanv6 = (~(Z2anv6 & Jl4nv6)); +assign Z2anv6 = (!Eganv6); +assign Cfanv6 = (Lganv6 & Sganv6); +assign Sganv6 = (~(Zganv6 & Q1anv6)); +assign Zganv6 = (~(Ak4nv6 | X1anv6)); +assign Lganv6 = (Ky9nv6 ? Nhanv6 : Ghanv6); +assign Nhanv6 = (Gg4nv6 | Wx9nv6); +assign Ghanv6 = (Uhanv6 | Ri4nv6); +assign Oeanv6 = (Bianv6 & Iianv6); +assign Iianv6 = (N3anv6 ? Wianv6 : Pianv6); +assign Wianv6 = (~(Cl4nv6 & Eganv6)); +assign Pianv6 = (~(Hk4nv6 & Djanv6)); +assign Bianv6 = (Rjanv6 ? Ph4nv6 : Kjanv6); +assign Kjanv6 = (Yjanv6 | Ng4nv6); +assign F3l7z6[7] = (P6l7z6[13] & Fkanv6); +assign F3l7z6[6] = (~(Mkanv6 & Tkanv6)); +assign Tkanv6 = (~(P6l7z6[11] & Alanv6)); +assign Mkanv6 = (Hlanv6 & Olanv6); +assign Olanv6 = (~(P6l7z6[9] & Vlanv6)); +assign Hlanv6 = (~(P6l7z6[12] & Cmanv6)); +assign F3l7z6[5] = (~(Jmanv6 & Qmanv6)); +assign Qmanv6 = (~(P6l7z6[9] & Alanv6)); +assign Jmanv6 = (Xmanv6 & Enanv6); +assign Enanv6 = (~(P6l7z6[12] & Vlanv6)); +assign Xmanv6 = (~(P6l7z6[11] & Cmanv6)); +assign F3l7z6[4] = (~(Lnanv6 & Snanv6)); +assign Snanv6 = (~(P6l7z6[7] & Alanv6)); +assign Lnanv6 = (Znanv6 & Goanv6); +assign Goanv6 = (~(P6l7z6[8] & Vlanv6)); +assign Znanv6 = (~(P6l7z6[10] & Cmanv6)); +assign F3l7z6[3] = (~(Noanv6 & Uoanv6)); +assign Uoanv6 = (~(P6l7z6[12] & Alanv6)); +assign Noanv6 = (Bpanv6 & Ipanv6); +assign Ipanv6 = (~(P6l7z6[11] & Vlanv6)); +assign Bpanv6 = (~(P6l7z6[9] & Cmanv6)); +assign F3l7z6[2] = (~(Ppanv6 & Wpanv6)); +assign Wpanv6 = (~(P6l7z6[10] & Alanv6)); +assign Ppanv6 = (Dqanv6 & Kqanv6); +assign Kqanv6 = (~(P6l7z6[7] & Vlanv6)); +assign Dqanv6 = (~(P6l7z6[8] & Cmanv6)); +assign F3l7z6[1] = (~(Rqanv6 & Yqanv6)); +assign Yqanv6 = (~(P6l7z6[8] & Alanv6)); +assign Alanv6 = (!Franv6); +assign Rqanv6 = (Mranv6 & Tranv6); +assign Tranv6 = (~(P6l7z6[10] & Vlanv6)); +assign Vlanv6 = (!Asanv6); +assign Mranv6 = (~(P6l7z6[7] & Cmanv6)); +assign Cmanv6 = (!Hsanv6); +assign F3l7z6[0] = (P6l7z6[6] & Fkanv6); +assign Fkanv6 = (~(Osanv6 & Franv6)); +assign Franv6 = (P6l7z6[3] ? Ctanv6 : Vsanv6); +assign Osanv6 = (Asanv6 & Hsanv6); +assign Hsanv6 = (P6l7z6[3] ? Qtanv6 : Jtanv6); +assign Qtanv6 = (Vsanv6 & Xtanv6); +assign Xtanv6 = (~(Euanv6 & Luanv6)); +assign Euanv6 = (P6l7z6[1] & P6l7z6[2]); +assign Vsanv6 = (P6l7z6[5] ? Zuanv6 : Suanv6); +assign Zuanv6 = (!Gvanv6); +assign Gvanv6 = (P6l7z6[4] ? Uvanv6 : Nvanv6); +assign Suanv6 = (~(Bwanv6 & P6l7z6[1])); +assign Bwanv6 = (P6l7z6[4] & Iwanv6); +assign Asanv6 = (P6l7z6[3] ? Jtanv6 : Ctanv6); +assign Jtanv6 = (P6l7z6[5] ? Wwanv6 : Pwanv6); +assign Wwanv6 = (!Dxanv6); +assign Dxanv6 = (P6l7z6[4] ? Kxanv6 : Uvanv6); +assign Pwanv6 = (~(Nvanv6 & P6l7z6[4])); +assign Ctanv6 = (P6l7z6[5] ? Yxanv6 : Rxanv6); +assign Yxanv6 = (!Fyanv6); +assign Fyanv6 = (P6l7z6[4] ? Nvanv6 : Kxanv6); +assign Nvanv6 = (P6l7z6[2] & Myanv6); +assign Myanv6 = (!P6l7z6[1]); +assign Kxanv6 = (P6l7z6[1] & Iwanv6); +assign Rxanv6 = (~(P6l7z6[4] & Uvanv6)); +assign Uvanv6 = (P6l7z6[1] ^ Iwanv6); +assign Iwanv6 = (!P6l7z6[2]); +assign Priet6 = (~(Tyanv6 & Azanv6)); +assign Azanv6 = (Hzanv6 & Ozanv6); +assign Ozanv6 = (J0bnv6 ? C0bnv6 : Vzanv6); +assign C0bnv6 = (~(HADDRI[28] & Q0bnv6)); +assign Vzanv6 = (~(X0bnv6 & HADDRI[25])); +assign Hzanv6 = (E1bnv6 & L1bnv6); +assign L1bnv6 = (Q0bnv6 | Eg3nv6); +assign E1bnv6 = (G2bnv6 ? Z1bnv6 : S1bnv6); +assign Z1bnv6 = (~(HADDRI[22] & N2bnv6)); +assign S1bnv6 = (~(U2bnv6 & HADDRI[19])); +assign Tyanv6 = (B3bnv6 & I3bnv6); +assign I3bnv6 = (D4bnv6 ? W3bnv6 : P3bnv6); +assign W3bnv6 = (~(HADDRI[10] & K4bnv6)); +assign P3bnv6 = (R4bnv6 | Kj3nv6); +assign B3bnv6 = (M5bnv6 ? F5bnv6 : Y4bnv6); +assign F5bnv6 = (~(HADDRI[16] & T5bnv6)); +assign Y4bnv6 = (~(A6bnv6 & HADDRI[13])); +assign Cviet6 = (~(H6bnv6 & O6bnv6)); +assign O6bnv6 = (V6bnv6 & C7bnv6); +assign C7bnv6 = (X7bnv6 ? Q7bnv6 : J7bnv6); +assign Q7bnv6 = (~(HADDRI[27] & E8bnv6)); +assign J7bnv6 = (~(L8bnv6 & HADDRI[24])); +assign V6bnv6 = (S8bnv6 & Z8bnv6); +assign Z8bnv6 = (Zn3nv6 | E8bnv6); +assign S8bnv6 = (U9bnv6 ? N9bnv6 : G9bnv6); +assign N9bnv6 = (~(HADDRI[21] & Babnv6)); +assign G9bnv6 = (~(Iabnv6 & HADDRI[18])); +assign H6bnv6 = (Pabnv6 & Wabnv6); +assign Wabnv6 = (Rbbnv6 ? Kbbnv6 : Dbbnv6); +assign Kbbnv6 = (~(HADDRI[9] & Ybbnv6)); +assign Dbbnv6 = (Yq3nv6 | Fcbnv6); +assign Pabnv6 = (Adbnv6 ? Tcbnv6 : Mcbnv6); +assign Tcbnv6 = (~(HADDRI[15] & Hdbnv6)); +assign Mcbnv6 = (~(Odbnv6 & HADDRI[12])); +assign Pyiet6 = (~(Vdbnv6 & Cebnv6)); +assign Cebnv6 = (Jebnv6 & Qebnv6); +assign Qebnv6 = (Lfbnv6 ? Efbnv6 : Xebnv6); +assign Efbnv6 = (~(HADDRI[26] & Sfbnv6)); +assign Xebnv6 = (~(Zfbnv6 & HADDRI[23])); +assign Jebnv6 = (Ggbnv6 & Ngbnv6); +assign Ngbnv6 = (Sfbnv6 | Bw3nv6); +assign Ggbnv6 = (Ihbnv6 ? Bhbnv6 : Ugbnv6); +assign Bhbnv6 = (~(HADDRI[20] & Phbnv6)); +assign Ugbnv6 = (~(Whbnv6 & HADDRI[17])); +assign Vdbnv6 = (Dibnv6 & Kibnv6); +assign Kibnv6 = (Fjbnv6 ? Yibnv6 : Ribnv6); +assign Yibnv6 = (Az3nv6 | Mjbnv6); +assign Ribnv6 = (~(HADDRI[8] & Tjbnv6)); +assign Dibnv6 = (Okbnv6 ? Hkbnv6 : Akbnv6); +assign Hkbnv6 = (~(HADDRI[14] & Vkbnv6)); +assign Akbnv6 = (~(Clbnv6 & HADDRI[11])); +assign P5jet6 = (~(Jlbnv6 & Qlbnv6)); +assign Qlbnv6 = (Xlbnv6 & Embnv6); +assign Embnv6 = (U2bnv6 ? Smbnv6 : Lmbnv6); +assign Smbnv6 = (~(R44nv6 & Zmbnv6)); +assign Lmbnv6 = (Gnbnv6 | J74nv6); +assign Xlbnv6 = (Nnbnv6 & Unbnv6); +assign Unbnv6 = (Bobnv6 | R4bnv6); +assign Bobnv6 = (~(Tp5nv6 & Iobnv6)); +assign Nnbnv6 = (X0bnv6 ? Wobnv6 : Pobnv6); +assign Wobnv6 = (B34nv6 | J0bnv6); +assign Pobnv6 = (~(G2bnv6 & Y44nv6)); +assign G2bnv6 = (!Zmbnv6); +assign Jlbnv6 = (Dpbnv6 & Kpbnv6); +assign Kpbnv6 = (A6bnv6 ? Ypbnv6 : Rpbnv6); +assign Ypbnv6 = (~(Q74nv6 & Gnbnv6)); +assign Rpbnv6 = (~(D4bnv6 & H64nv6)); +assign Dpbnv6 = (Mqbnv6 ? W34nv6 : Fqbnv6); +assign Fqbnv6 = (~(J0bnv6 & U24nv6)); +assign C9jet6 = (~(Tqbnv6 & Arbnv6)); +assign Arbnv6 = (Hrbnv6 & Orbnv6); +assign Orbnv6 = (Iabnv6 ? Csbnv6 : Vrbnv6); +assign Csbnv6 = (~(Rb4nv6 & Jsbnv6)); +assign Vrbnv6 = (~(Adbnv6 & Je4nv6)); +assign Adbnv6 = (!Qsbnv6); +assign Hrbnv6 = (Xsbnv6 & Etbnv6); +assign Etbnv6 = (~(Ltbnv6 & Kv5nv6)); +assign Ltbnv6 = (~(Fcbnv6 | Rbbnv6)); +assign Xsbnv6 = (L8bnv6 ? Ztbnv6 : Stbnv6); +assign Ztbnv6 = (~(N94nv6 & Gubnv6)); +assign Stbnv6 = (Jsbnv6 | Kb4nv6); +assign Tqbnv6 = (Nubnv6 & Uubnv6); +assign Uubnv6 = (Odbnv6 ? Ivbnv6 : Bvbnv6); +assign Ivbnv6 = (~(Ce4nv6 & Qsbnv6)); +assign Bvbnv6 = (~(Rbbnv6 & Hd4nv6)); +assign Nubnv6 = (Wvbnv6 ? Pa4nv6 : Pvbnv6); +assign Pvbnv6 = (~(X7bnv6 & U94nv6)); +assign Pcjet6 = (~(Dwbnv6 & Kwbnv6)); +assign Kwbnv6 = (Rwbnv6 & Ywbnv6); +assign Ywbnv6 = (Whbnv6 ? Mxbnv6 : Fxbnv6); +assign Mxbnv6 = (Ki4nv6 | Ihbnv6); +assign Fxbnv6 = (~(Okbnv6 & Jl4nv6)); +assign Okbnv6 = (!Txbnv6); +assign Rwbnv6 = (Aybnv6 & Hybnv6); +assign Hybnv6 = (~(Oybnv6 & Fjbnv6)); +assign Oybnv6 = (~(Ak4nv6 | Mjbnv6)); +assign Aybnv6 = (Zfbnv6 ? Czbnv6 : Vybnv6); +assign Czbnv6 = (Gg4nv6 | Lfbnv6); +assign Vybnv6 = (Jzbnv6 | Ri4nv6); +assign Dwbnv6 = (Qzbnv6 & Xzbnv6); +assign Xzbnv6 = (Clbnv6 ? L0cnv6 : E0cnv6); +assign L0cnv6 = (~(Cl4nv6 & Txbnv6)); +assign E0cnv6 = (~(Hk4nv6 & S0cnv6)); +assign Qzbnv6 = (G1cnv6 ? Ph4nv6 : Z0cnv6); +assign Z0cnv6 = (N1cnv6 | Ng4nv6); +assign Xsk7z6[7] = (Hwk7z6[13] & U1cnv6); +assign Xsk7z6[6] = (~(B2cnv6 & I2cnv6)); +assign I2cnv6 = (~(Hwk7z6[11] & P2cnv6)); +assign B2cnv6 = (W2cnv6 & D3cnv6); +assign D3cnv6 = (~(Hwk7z6[9] & K3cnv6)); +assign W2cnv6 = (~(Hwk7z6[12] & R3cnv6)); +assign Xsk7z6[5] = (~(Y3cnv6 & F4cnv6)); +assign F4cnv6 = (~(Hwk7z6[9] & P2cnv6)); +assign Y3cnv6 = (M4cnv6 & T4cnv6); +assign T4cnv6 = (~(Hwk7z6[12] & K3cnv6)); +assign M4cnv6 = (~(Hwk7z6[11] & R3cnv6)); +assign Xsk7z6[4] = (~(A5cnv6 & H5cnv6)); +assign H5cnv6 = (~(Hwk7z6[7] & P2cnv6)); +assign A5cnv6 = (O5cnv6 & V5cnv6); +assign V5cnv6 = (~(Hwk7z6[8] & K3cnv6)); +assign O5cnv6 = (~(Hwk7z6[10] & R3cnv6)); +assign Xsk7z6[3] = (~(C6cnv6 & J6cnv6)); +assign J6cnv6 = (~(Hwk7z6[12] & P2cnv6)); +assign C6cnv6 = (Q6cnv6 & X6cnv6); +assign X6cnv6 = (~(Hwk7z6[11] & K3cnv6)); +assign Q6cnv6 = (~(Hwk7z6[9] & R3cnv6)); +assign Xsk7z6[2] = (~(E7cnv6 & L7cnv6)); +assign L7cnv6 = (~(Hwk7z6[10] & P2cnv6)); +assign E7cnv6 = (S7cnv6 & Z7cnv6); +assign Z7cnv6 = (~(Hwk7z6[7] & K3cnv6)); +assign S7cnv6 = (~(Hwk7z6[8] & R3cnv6)); +assign Xsk7z6[1] = (~(G8cnv6 & N8cnv6)); +assign N8cnv6 = (~(Hwk7z6[8] & P2cnv6)); +assign P2cnv6 = (!U8cnv6); +assign G8cnv6 = (B9cnv6 & I9cnv6); +assign I9cnv6 = (~(Hwk7z6[10] & K3cnv6)); +assign K3cnv6 = (!P9cnv6); +assign B9cnv6 = (~(Hwk7z6[7] & R3cnv6)); +assign R3cnv6 = (!W9cnv6); +assign Xsk7z6[0] = (Hwk7z6[6] & U1cnv6); +assign U1cnv6 = (~(Dacnv6 & U8cnv6)); +assign U8cnv6 = (Hwk7z6[3] ? Racnv6 : Kacnv6); +assign Dacnv6 = (P9cnv6 & W9cnv6); +assign W9cnv6 = (Hwk7z6[3] ? Fbcnv6 : Yacnv6); +assign Fbcnv6 = (Kacnv6 & Mbcnv6); +assign Mbcnv6 = (~(Tbcnv6 & Accnv6)); +assign Tbcnv6 = (Hwk7z6[2] & Hwk7z6[1]); +assign Kacnv6 = (Hwk7z6[5] ? Occnv6 : Hccnv6); +assign Occnv6 = (!Vccnv6); +assign Vccnv6 = (Hwk7z6[4] ? Jdcnv6 : Cdcnv6); +assign Hccnv6 = (~(Qdcnv6 & Hwk7z6[4])); +assign P9cnv6 = (Hwk7z6[3] ? Yacnv6 : Racnv6); +assign Yacnv6 = (Hwk7z6[5] ? Eecnv6 : Xdcnv6); +assign Eecnv6 = (!Lecnv6); +assign Lecnv6 = (Hwk7z6[4] ? Qdcnv6 : Jdcnv6); +assign Xdcnv6 = (~(Cdcnv6 & Hwk7z6[4])); +assign Racnv6 = (Hwk7z6[5] ? Zecnv6 : Secnv6); +assign Zecnv6 = (!Gfcnv6); +assign Gfcnv6 = (Hwk7z6[4] ? Cdcnv6 : Qdcnv6); +assign Cdcnv6 = (Hwk7z6[2] & Nfcnv6); +assign Nfcnv6 = (!Hwk7z6[1]); +assign Qdcnv6 = (Hwk7z6[1] & Ufcnv6); +assign Secnv6 = (~(Hwk7z6[4] & Jdcnv6)); +assign Jdcnv6 = (Hwk7z6[1] ^ Ufcnv6); +assign Ufcnv6 = (!Hwk7z6[2]); +assign Pzhet6 = (~(Bgcnv6 & Igcnv6)); +assign Igcnv6 = (Pgcnv6 & Wgcnv6); +assign Wgcnv6 = (Rhcnv6 ? Khcnv6 : Dhcnv6); +assign Khcnv6 = (~(HADDRI[28] & Yhcnv6)); +assign Dhcnv6 = (~(Ficnv6 & HADDRI[25])); +assign Pgcnv6 = (Micnv6 & Ticnv6); +assign Ticnv6 = (Yhcnv6 | Eg3nv6); +assign Micnv6 = (Ojcnv6 ? Hjcnv6 : Ajcnv6); +assign Hjcnv6 = (~(HADDRI[22] & Vjcnv6)); +assign Ajcnv6 = (~(Ckcnv6 & HADDRI[19])); +assign Bgcnv6 = (Jkcnv6 & Qkcnv6); +assign Qkcnv6 = (Llcnv6 ? Elcnv6 : Xkcnv6); +assign Elcnv6 = (~(HADDRI[10] & Slcnv6)); +assign Xkcnv6 = (Zlcnv6 | Kj3nv6); +assign Jkcnv6 = (Umcnv6 ? Nmcnv6 : Gmcnv6); +assign Nmcnv6 = (~(HADDRI[16] & Bncnv6)); +assign Gmcnv6 = (~(Incnv6 & HADDRI[13])); +assign C3iet6 = (~(Pncnv6 & Wncnv6)); +assign Wncnv6 = (Docnv6 & Kocnv6); +assign Kocnv6 = (Fpcnv6 ? Yocnv6 : Rocnv6); +assign Yocnv6 = (~(HADDRI[27] & Mpcnv6)); +assign Rocnv6 = (~(Tpcnv6 & HADDRI[24])); +assign Docnv6 = (Aqcnv6 & Hqcnv6); +assign Hqcnv6 = (Zn3nv6 | Mpcnv6); +assign Aqcnv6 = (Crcnv6 ? Vqcnv6 : Oqcnv6); +assign Vqcnv6 = (~(HADDRI[21] & Jrcnv6)); +assign Oqcnv6 = (~(Qrcnv6 & HADDRI[18])); +assign Pncnv6 = (Xrcnv6 & Escnv6); +assign Escnv6 = (Zscnv6 ? Sscnv6 : Lscnv6); +assign Sscnv6 = (~(HADDRI[9] & Gtcnv6)); +assign Lscnv6 = (Yq3nv6 | Ntcnv6); +assign Xrcnv6 = (Iucnv6 ? Bucnv6 : Utcnv6); +assign Bucnv6 = (~(HADDRI[15] & Pucnv6)); +assign Utcnv6 = (~(Wucnv6 & HADDRI[12])); +assign P6iet6 = (~(Dvcnv6 & Kvcnv6)); +assign Kvcnv6 = (Rvcnv6 & Yvcnv6); +assign Yvcnv6 = (Twcnv6 ? Mwcnv6 : Fwcnv6); +assign Mwcnv6 = (~(HADDRI[26] & Axcnv6)); +assign Fwcnv6 = (~(Hxcnv6 & HADDRI[23])); +assign Rvcnv6 = (Oxcnv6 & Vxcnv6); +assign Vxcnv6 = (Axcnv6 | Bw3nv6); +assign Oxcnv6 = (Qycnv6 ? Jycnv6 : Cycnv6); +assign Jycnv6 = (~(HADDRI[20] & Xycnv6)); +assign Cycnv6 = (~(Ezcnv6 & HADDRI[17])); +assign Dvcnv6 = (Lzcnv6 & Szcnv6); +assign Szcnv6 = (N0dnv6 ? G0dnv6 : Zzcnv6); +assign G0dnv6 = (Az3nv6 | U0dnv6); +assign Zzcnv6 = (~(HADDRI[8] & B1dnv6)); +assign Lzcnv6 = (W1dnv6 ? P1dnv6 : I1dnv6); +assign P1dnv6 = (~(HADDRI[14] & D2dnv6)); +assign I1dnv6 = (~(K2dnv6 & HADDRI[11])); +assign Pdiet6 = (~(R2dnv6 & Y2dnv6)); +assign Y2dnv6 = (F3dnv6 & M3dnv6); +assign M3dnv6 = (Ckcnv6 ? A4dnv6 : T3dnv6); +assign A4dnv6 = (~(R44nv6 & H4dnv6)); +assign T3dnv6 = (O4dnv6 | J74nv6); +assign F3dnv6 = (V4dnv6 & C5dnv6); +assign C5dnv6 = (J5dnv6 | Zlcnv6); +assign J5dnv6 = (~(Tp5nv6 & Q5dnv6)); +assign V4dnv6 = (Ficnv6 ? E6dnv6 : X5dnv6); +assign E6dnv6 = (B34nv6 | Rhcnv6); +assign X5dnv6 = (~(Ojcnv6 & Y44nv6)); +assign Ojcnv6 = (!H4dnv6); +assign R2dnv6 = (L6dnv6 & S6dnv6); +assign S6dnv6 = (Incnv6 ? G7dnv6 : Z6dnv6); +assign G7dnv6 = (~(Q74nv6 & O4dnv6)); +assign Z6dnv6 = (~(Llcnv6 & H64nv6)); +assign L6dnv6 = (U7dnv6 ? W34nv6 : N7dnv6); +assign N7dnv6 = (~(Rhcnv6 & U24nv6)); +assign Chiet6 = (~(B8dnv6 & I8dnv6)); +assign I8dnv6 = (P8dnv6 & W8dnv6); +assign W8dnv6 = (Qrcnv6 ? K9dnv6 : D9dnv6); +assign K9dnv6 = (~(Rb4nv6 & R9dnv6)); +assign D9dnv6 = (~(Iucnv6 & Je4nv6)); +assign Iucnv6 = (!Y9dnv6); +assign P8dnv6 = (Fadnv6 & Madnv6); +assign Madnv6 = (~(Tadnv6 & Kv5nv6)); +assign Tadnv6 = (~(Ntcnv6 | Zscnv6)); +assign Fadnv6 = (Tpcnv6 ? Hbdnv6 : Abdnv6); +assign Hbdnv6 = (~(N94nv6 & Obdnv6)); +assign Abdnv6 = (R9dnv6 | Kb4nv6); +assign B8dnv6 = (Vbdnv6 & Ccdnv6); +assign Ccdnv6 = (Wucnv6 ? Qcdnv6 : Jcdnv6); +assign Qcdnv6 = (~(Ce4nv6 & Y9dnv6)); +assign Jcdnv6 = (~(Zscnv6 & Hd4nv6)); +assign Vbdnv6 = (Eddnv6 ? Pa4nv6 : Xcdnv6); +assign Xcdnv6 = (~(Fpcnv6 & U94nv6)); +assign Pkiet6 = (~(Lddnv6 & Sddnv6)); +assign Sddnv6 = (Zddnv6 & Gednv6); +assign Gednv6 = (Ezcnv6 ? Uednv6 : Nednv6); +assign Uednv6 = (Ki4nv6 | Qycnv6); +assign Nednv6 = (~(W1dnv6 & Jl4nv6)); +assign W1dnv6 = (!Bfdnv6); +assign Zddnv6 = (Ifdnv6 & Pfdnv6); +assign Pfdnv6 = (~(Wfdnv6 & N0dnv6)); +assign Wfdnv6 = (~(Ak4nv6 | U0dnv6)); +assign Ifdnv6 = (Hxcnv6 ? Kgdnv6 : Dgdnv6); +assign Kgdnv6 = (Gg4nv6 | Twcnv6); +assign Dgdnv6 = (Rgdnv6 | Ri4nv6); +assign Lddnv6 = (Ygdnv6 & Fhdnv6); +assign Fhdnv6 = (K2dnv6 ? Thdnv6 : Mhdnv6); +assign Thdnv6 = (~(Cl4nv6 & Bfdnv6)); +assign Mhdnv6 = (~(Hk4nv6 & Aidnv6)); +assign Ygdnv6 = (Oidnv6 ? Ph4nv6 : Hidnv6); +assign Hidnv6 = (Vidnv6 | Ng4nv6); +assign Pik7z6[7] = (Zlk7z6[13] & Cjdnv6); +assign Pik7z6[6] = (~(Jjdnv6 & Qjdnv6)); +assign Qjdnv6 = (~(Zlk7z6[11] & Xjdnv6)); +assign Jjdnv6 = (Ekdnv6 & Lkdnv6); +assign Lkdnv6 = (~(Zlk7z6[9] & Skdnv6)); +assign Ekdnv6 = (~(Zlk7z6[12] & Zkdnv6)); +assign Pik7z6[5] = (~(Gldnv6 & Nldnv6)); +assign Nldnv6 = (~(Zlk7z6[9] & Xjdnv6)); +assign Gldnv6 = (Uldnv6 & Bmdnv6); +assign Bmdnv6 = (~(Zlk7z6[12] & Skdnv6)); +assign Uldnv6 = (~(Zlk7z6[11] & Zkdnv6)); +assign Pik7z6[4] = (~(Imdnv6 & Pmdnv6)); +assign Pmdnv6 = (~(Zlk7z6[7] & Xjdnv6)); +assign Imdnv6 = (Wmdnv6 & Dndnv6); +assign Dndnv6 = (~(Zlk7z6[8] & Skdnv6)); +assign Wmdnv6 = (~(Zlk7z6[10] & Zkdnv6)); +assign Pik7z6[3] = (~(Kndnv6 & Rndnv6)); +assign Rndnv6 = (~(Zlk7z6[12] & Xjdnv6)); +assign Kndnv6 = (Yndnv6 & Fodnv6); +assign Fodnv6 = (~(Zlk7z6[11] & Skdnv6)); +assign Yndnv6 = (~(Zlk7z6[9] & Zkdnv6)); +assign Pik7z6[2] = (~(Modnv6 & Todnv6)); +assign Todnv6 = (~(Zlk7z6[10] & Xjdnv6)); +assign Modnv6 = (Apdnv6 & Hpdnv6); +assign Hpdnv6 = (~(Zlk7z6[7] & Skdnv6)); +assign Apdnv6 = (~(Zlk7z6[8] & Zkdnv6)); +assign Pik7z6[1] = (~(Opdnv6 & Vpdnv6)); +assign Vpdnv6 = (~(Zlk7z6[8] & Xjdnv6)); +assign Xjdnv6 = (!Cqdnv6); +assign Opdnv6 = (Jqdnv6 & Qqdnv6); +assign Qqdnv6 = (~(Zlk7z6[10] & Skdnv6)); +assign Skdnv6 = (!Xqdnv6); +assign Jqdnv6 = (~(Zlk7z6[7] & Zkdnv6)); +assign Zkdnv6 = (!Erdnv6); +assign Pik7z6[0] = (Zlk7z6[6] & Cjdnv6); +assign Cjdnv6 = (~(Lrdnv6 & Cqdnv6)); +assign Cqdnv6 = (Zlk7z6[3] ? Zrdnv6 : Srdnv6); +assign Lrdnv6 = (Xqdnv6 & Erdnv6); +assign Erdnv6 = (Zlk7z6[3] ? Nsdnv6 : Gsdnv6); +assign Nsdnv6 = (Srdnv6 & Usdnv6); +assign Usdnv6 = (~(Btdnv6 & Itdnv6)); +assign Btdnv6 = (Zlk7z6[1] & Zlk7z6[2]); +assign Srdnv6 = (Zlk7z6[5] ? Wtdnv6 : Ptdnv6); +assign Wtdnv6 = (!Dudnv6); +assign Dudnv6 = (Zlk7z6[4] ? Rudnv6 : Kudnv6); +assign Ptdnv6 = (~(Yudnv6 & Zlk7z6[1])); +assign Yudnv6 = (Zlk7z6[4] & Fvdnv6); +assign Xqdnv6 = (Zlk7z6[3] ? Gsdnv6 : Zrdnv6); +assign Gsdnv6 = (Zlk7z6[5] ? Tvdnv6 : Mvdnv6); +assign Tvdnv6 = (!Awdnv6); +assign Awdnv6 = (Zlk7z6[4] ? Hwdnv6 : Rudnv6); +assign Mvdnv6 = (~(Kudnv6 & Zlk7z6[4])); +assign Zrdnv6 = (Zlk7z6[5] ? Vwdnv6 : Owdnv6); +assign Vwdnv6 = (!Cxdnv6); +assign Cxdnv6 = (Zlk7z6[4] ? Kudnv6 : Hwdnv6); +assign Kudnv6 = (Zlk7z6[2] & Jxdnv6); +assign Jxdnv6 = (!Zlk7z6[1]); +assign Hwdnv6 = (Zlk7z6[1] & Fvdnv6); +assign Owdnv6 = (~(Zlk7z6[4] & Rudnv6)); +assign Rudnv6 = (Zlk7z6[1] ^ Fvdnv6); +assign Fvdnv6 = (!Zlk7z6[2]); +assign P7het6 = (~(Qxdnv6 & Xxdnv6)); +assign Xxdnv6 = (Eydnv6 & Lydnv6); +assign Lydnv6 = (Gzdnv6 ? Zydnv6 : Sydnv6); +assign Zydnv6 = (~(HADDRI[28] & Nzdnv6)); +assign Sydnv6 = (~(Uzdnv6 & HADDRI[25])); +assign Eydnv6 = (B0env6 & I0env6); +assign I0env6 = (Nzdnv6 | Eg3nv6); +assign B0env6 = (D1env6 ? W0env6 : P0env6); +assign W0env6 = (~(HADDRI[22] & K1env6)); +assign P0env6 = (~(R1env6 & HADDRI[19])); +assign Qxdnv6 = (Y1env6 & F2env6); +assign F2env6 = (A3env6 ? T2env6 : M2env6); +assign T2env6 = (~(HADDRI[10] & H3env6)); +assign M2env6 = (O3env6 | Kj3nv6); +assign Y1env6 = (J4env6 ? C4env6 : V3env6); +assign C4env6 = (~(HADDRI[16] & Q4env6)); +assign V3env6 = (~(X4env6 & HADDRI[13])); +assign Cbhet6 = (~(E5env6 & L5env6)); +assign L5env6 = (S5env6 & Z5env6); +assign Z5env6 = (U6env6 ? N6env6 : G6env6); +assign N6env6 = (~(HADDRI[27] & B7env6)); +assign G6env6 = (~(I7env6 & HADDRI[24])); +assign S5env6 = (P7env6 & W7env6); +assign W7env6 = (Zn3nv6 | B7env6); +assign P7env6 = (R8env6 ? K8env6 : D8env6); +assign K8env6 = (~(HADDRI[21] & Y8env6)); +assign D8env6 = (~(F9env6 & HADDRI[18])); +assign E5env6 = (M9env6 & T9env6); +assign T9env6 = (Oaenv6 ? Haenv6 : Aaenv6); +assign Haenv6 = (~(HADDRI[9] & Vaenv6)); +assign Aaenv6 = (Yq3nv6 | Cbenv6); +assign M9env6 = (Xbenv6 ? Qbenv6 : Jbenv6); +assign Qbenv6 = (~(HADDRI[15] & Ecenv6)); +assign Jbenv6 = (~(Lcenv6 & HADDRI[12])); +assign Pehet6 = (~(Scenv6 & Zcenv6)); +assign Zcenv6 = (Gdenv6 & Ndenv6); +assign Ndenv6 = (Ieenv6 ? Beenv6 : Udenv6); +assign Beenv6 = (~(HADDRI[26] & Peenv6)); +assign Udenv6 = (~(Weenv6 & HADDRI[23])); +assign Gdenv6 = (Dfenv6 & Kfenv6); +assign Kfenv6 = (Peenv6 | Bw3nv6); +assign Dfenv6 = (Fgenv6 ? Yfenv6 : Rfenv6); +assign Yfenv6 = (~(HADDRI[20] & Mgenv6)); +assign Rfenv6 = (~(Tgenv6 & HADDRI[17])); +assign Scenv6 = (Ahenv6 & Hhenv6); +assign Hhenv6 = (Cienv6 ? Vhenv6 : Ohenv6); +assign Vhenv6 = (Az3nv6 | Jienv6); +assign Ohenv6 = (~(HADDRI[8] & Qienv6)); +assign Ahenv6 = (Ljenv6 ? Ejenv6 : Xienv6); +assign Ejenv6 = (~(HADDRI[14] & Sjenv6)); +assign Xienv6 = (~(Zjenv6 & HADDRI[11])); +assign Plhet6 = (~(Gkenv6 & Nkenv6)); +assign Nkenv6 = (Ukenv6 & Blenv6); +assign Blenv6 = (R1env6 ? Plenv6 : Ilenv6); +assign Plenv6 = (~(R44nv6 & Wlenv6)); +assign Ilenv6 = (Dmenv6 | J74nv6); +assign Ukenv6 = (Kmenv6 & Rmenv6); +assign Rmenv6 = (Ymenv6 | O3env6); +assign Ymenv6 = (~(Tp5nv6 & Fnenv6)); +assign Kmenv6 = (Uzdnv6 ? Tnenv6 : Mnenv6); +assign Tnenv6 = (B34nv6 | Gzdnv6); +assign Mnenv6 = (~(D1env6 & Y44nv6)); +assign D1env6 = (!Wlenv6); +assign Gkenv6 = (Aoenv6 & Hoenv6); +assign Hoenv6 = (X4env6 ? Voenv6 : Ooenv6); +assign Voenv6 = (~(Q74nv6 & Dmenv6)); +assign Ooenv6 = (~(A3env6 & H64nv6)); +assign Aoenv6 = (Jpenv6 ? W34nv6 : Cpenv6); +assign Cpenv6 = (~(Gzdnv6 & U24nv6)); +assign Cphet6 = (~(Qpenv6 & Xpenv6)); +assign Xpenv6 = (Eqenv6 & Lqenv6); +assign Lqenv6 = (F9env6 ? Zqenv6 : Sqenv6); +assign Zqenv6 = (~(Rb4nv6 & Grenv6)); +assign Sqenv6 = (~(Xbenv6 & Je4nv6)); +assign Xbenv6 = (!Nrenv6); +assign Eqenv6 = (Urenv6 & Bsenv6); +assign Bsenv6 = (~(Isenv6 & Kv5nv6)); +assign Isenv6 = (~(Cbenv6 | Oaenv6)); +assign Urenv6 = (I7env6 ? Wsenv6 : Psenv6); +assign Wsenv6 = (~(N94nv6 & Dtenv6)); +assign Psenv6 = (Grenv6 | Kb4nv6); +assign Qpenv6 = (Ktenv6 & Rtenv6); +assign Rtenv6 = (Lcenv6 ? Fuenv6 : Ytenv6); +assign Fuenv6 = (~(Ce4nv6 & Nrenv6)); +assign Ytenv6 = (~(Oaenv6 & Hd4nv6)); +assign Ktenv6 = (Tuenv6 ? Pa4nv6 : Muenv6); +assign Muenv6 = (~(U6env6 & U94nv6)); +assign Pshet6 = (~(Avenv6 & Hvenv6)); +assign Hvenv6 = (Ovenv6 & Vvenv6); +assign Vvenv6 = (Tgenv6 ? Jwenv6 : Cwenv6); +assign Jwenv6 = (Ki4nv6 | Fgenv6); +assign Cwenv6 = (~(Ljenv6 & Jl4nv6)); +assign Ljenv6 = (!Qwenv6); +assign Ovenv6 = (Xwenv6 & Exenv6); +assign Exenv6 = (~(Lxenv6 & Cienv6)); +assign Lxenv6 = (~(Ak4nv6 | Jienv6)); +assign Xwenv6 = (Weenv6 ? Zxenv6 : Sxenv6); +assign Zxenv6 = (Gg4nv6 | Ieenv6); +assign Sxenv6 = (Gyenv6 | Ri4nv6); +assign Avenv6 = (Nyenv6 & Uyenv6); +assign Uyenv6 = (Zjenv6 ? Izenv6 : Bzenv6); +assign Izenv6 = (~(Cl4nv6 & Qwenv6)); +assign Bzenv6 = (~(Hk4nv6 & Pzenv6)); +assign Nyenv6 = (D0fnv6 ? Ph4nv6 : Wzenv6); +assign Wzenv6 = (K0fnv6 | Ng4nv6); +assign H8k7z6[7] = (Rbk7z6[13] & R0fnv6); +assign H8k7z6[6] = (~(Y0fnv6 & F1fnv6)); +assign F1fnv6 = (~(Rbk7z6[11] & M1fnv6)); +assign Y0fnv6 = (T1fnv6 & A2fnv6); +assign A2fnv6 = (~(Rbk7z6[9] & H2fnv6)); +assign T1fnv6 = (~(Rbk7z6[12] & O2fnv6)); +assign H8k7z6[5] = (~(V2fnv6 & C3fnv6)); +assign C3fnv6 = (~(Rbk7z6[9] & M1fnv6)); +assign V2fnv6 = (J3fnv6 & Q3fnv6); +assign Q3fnv6 = (~(Rbk7z6[12] & H2fnv6)); +assign J3fnv6 = (~(Rbk7z6[11] & O2fnv6)); +assign H8k7z6[4] = (~(X3fnv6 & E4fnv6)); +assign E4fnv6 = (~(Rbk7z6[7] & M1fnv6)); +assign X3fnv6 = (L4fnv6 & S4fnv6); +assign S4fnv6 = (~(Rbk7z6[8] & H2fnv6)); +assign L4fnv6 = (~(Rbk7z6[10] & O2fnv6)); +assign H8k7z6[3] = (~(Z4fnv6 & G5fnv6)); +assign G5fnv6 = (~(Rbk7z6[12] & M1fnv6)); +assign Z4fnv6 = (N5fnv6 & U5fnv6); +assign U5fnv6 = (~(Rbk7z6[11] & H2fnv6)); +assign N5fnv6 = (~(Rbk7z6[9] & O2fnv6)); +assign H8k7z6[2] = (~(B6fnv6 & I6fnv6)); +assign I6fnv6 = (~(Rbk7z6[10] & M1fnv6)); +assign B6fnv6 = (P6fnv6 & W6fnv6); +assign W6fnv6 = (~(Rbk7z6[7] & H2fnv6)); +assign P6fnv6 = (~(Rbk7z6[8] & O2fnv6)); +assign H8k7z6[1] = (~(D7fnv6 & K7fnv6)); +assign K7fnv6 = (~(Rbk7z6[8] & M1fnv6)); +assign M1fnv6 = (!R7fnv6); +assign D7fnv6 = (Y7fnv6 & F8fnv6); +assign F8fnv6 = (~(Rbk7z6[10] & H2fnv6)); +assign H2fnv6 = (!M8fnv6); +assign Y7fnv6 = (~(Rbk7z6[7] & O2fnv6)); +assign O2fnv6 = (!T8fnv6); +assign H8k7z6[0] = (Rbk7z6[6] & R0fnv6); +assign R0fnv6 = (~(A9fnv6 & R7fnv6)); +assign R7fnv6 = (Rbk7z6[3] ? O9fnv6 : H9fnv6); +assign A9fnv6 = (M8fnv6 & T8fnv6); +assign T8fnv6 = (Rbk7z6[3] ? Cafnv6 : V9fnv6); +assign Cafnv6 = (H9fnv6 & Jafnv6); +assign Jafnv6 = (~(Qafnv6 & Xafnv6)); +assign Qafnv6 = (Rbk7z6[2] & Rbk7z6[1]); +assign H9fnv6 = (Rbk7z6[5] ? Lbfnv6 : Ebfnv6); +assign Lbfnv6 = (!Sbfnv6); +assign Sbfnv6 = (Rbk7z6[4] ? Gcfnv6 : Zbfnv6); +assign Ebfnv6 = (~(Ncfnv6 & Rbk7z6[4])); +assign M8fnv6 = (Rbk7z6[3] ? V9fnv6 : O9fnv6); +assign V9fnv6 = (Rbk7z6[5] ? Bdfnv6 : Ucfnv6); +assign Bdfnv6 = (!Idfnv6); +assign Idfnv6 = (Rbk7z6[4] ? Ncfnv6 : Gcfnv6); +assign Ucfnv6 = (~(Zbfnv6 & Rbk7z6[4])); +assign O9fnv6 = (Rbk7z6[5] ? Wdfnv6 : Pdfnv6); +assign Wdfnv6 = (!Defnv6); +assign Defnv6 = (Rbk7z6[4] ? Zbfnv6 : Ncfnv6); +assign Zbfnv6 = (Rbk7z6[2] & Kefnv6); +assign Kefnv6 = (!Rbk7z6[1]); +assign Ncfnv6 = (Rbk7z6[1] & Refnv6); +assign Pdfnv6 = (~(Rbk7z6[4] & Gcfnv6)); +assign Gcfnv6 = (Rbk7z6[1] ^ Refnv6); +assign Refnv6 = (!Rbk7z6[2]); +assign N3k7z6[9] = (Obo7v6 & Cmm7z6[9]); +assign N3k7z6[8] = (Obo7v6 & Cmm7z6[8]); +assign N3k7z6[7] = (Obo7v6 & Cmm7z6[7]); +assign N3k7z6[6] = (Obo7v6 & Cmm7z6[6]); +assign N3k7z6[5] = (Cmm7z6[5] & Obo7v6); +assign N3k7z6[4] = (Cmm7z6[4] & Obo7v6); +assign N3k7z6[3] = (Cmm7z6[3] & Obo7v6); +assign N3k7z6[31] = (Obo7v6 & Cmm7z6[31]); +assign N3k7z6[30] = (Obo7v6 & Cmm7z6[30]); +assign N3k7z6[2] = (Yefnv6 & Obo7v6); +assign N3k7z6[29] = (Obo7v6 & Cmm7z6[29]); +assign N3k7z6[28] = (Obo7v6 & Cmm7z6[28]); +assign N3k7z6[27] = (Obo7v6 & Cmm7z6[27]); +assign N3k7z6[26] = (Obo7v6 & Cmm7z6[26]); +assign N3k7z6[25] = (Obo7v6 & Cmm7z6[25]); +assign N3k7z6[24] = (Obo7v6 & Cmm7z6[24]); +assign N3k7z6[23] = (Obo7v6 & Cmm7z6[23]); +assign N3k7z6[22] = (Obo7v6 & Cmm7z6[22]); +assign N3k7z6[21] = (Obo7v6 & Cmm7z6[21]); +assign N3k7z6[20] = (Obo7v6 & Cmm7z6[20]); +assign N3k7z6[19] = (Obo7v6 & Cmm7z6[19]); +assign N3k7z6[18] = (Obo7v6 & Cmm7z6[18]); +assign N3k7z6[17] = (Obo7v6 & Cmm7z6[17]); +assign N3k7z6[16] = (Obo7v6 & Cmm7z6[16]); +assign N3k7z6[15] = (Obo7v6 & Cmm7z6[15]); +assign N3k7z6[14] = (Obo7v6 & Cmm7z6[14]); +assign N3k7z6[13] = (Obo7v6 & Cmm7z6[13]); +assign N3k7z6[12] = (Obo7v6 & Cmm7z6[12]); +assign N3k7z6[11] = (Obo7v6 & Cmm7z6[11]); +assign N3k7z6[10] = (Obo7v6 & Cmm7z6[10]); +assign D847v6 = (~(Fffnv6 & Mffnv6)); +assign Mffnv6 = (Tffnv6 & Agfnv6); +assign Agfnv6 = (~(Hgfnv6 & R8s7z6[0])); +assign Hgfnv6 = (Ogfnv6 & Fho7v6); +assign Ogfnv6 = (Vgfnv6 | R8s7z6[1]); +assign Tffnv6 = (~(Chfnv6 & Jhfnv6)); +assign Jhfnv6 = (~(Qhfnv6 & Xhfnv6)); +assign Chfnv6 = (~(Eifnv6 | Lifnv6)); +assign Fffnv6 = (Sifnv6 & Zifnv6); +assign Zifnv6 = (Gjfnv6 | Ak77z6); +assign Coo7z6[9] = (Zy1ft6 & HADDRI[9]); +assign Coo7z6[8] = (Zy1ft6 & HADDRI[8]); +assign Coo7z6[7] = (Zy1ft6 & HADDRI[7]); +assign Coo7z6[6] = (Zy1ft6 & HADDRI[6]); +assign Coo7z6[5] = (Zy1ft6 & HADDRI[5]); +assign Coo7z6[4] = (Zy1ft6 & HADDRI[4]); +assign Coo7z6[3] = (Zy1ft6 & HADDRI[3]); +assign Coo7z6[31] = (Zy1ft6 & Njfnv6); +assign Coo7z6[30] = (Zy1ft6 & Ujfnv6); +assign Coo7z6[2] = (Zy1ft6 & HADDRI[2]); +assign Coo7z6[29] = (Zy1ft6 & Bkfnv6); +assign Coo7z6[28] = (Zy1ft6 & HADDRI[28]); +assign Coo7z6[27] = (Zy1ft6 & HADDRI[27]); +assign Coo7z6[26] = (Zy1ft6 & HADDRI[26]); +assign Coo7z6[25] = (Zy1ft6 & HADDRI[25]); +assign Coo7z6[24] = (Zy1ft6 & HADDRI[24]); +assign Coo7z6[23] = (Zy1ft6 & HADDRI[23]); +assign Coo7z6[22] = (Zy1ft6 & HADDRI[22]); +assign Coo7z6[21] = (Zy1ft6 & HADDRI[21]); +assign Coo7z6[20] = (Zy1ft6 & HADDRI[20]); +assign Coo7z6[19] = (Zy1ft6 & HADDRI[19]); +assign Coo7z6[18] = (Zy1ft6 & HADDRI[18]); +assign Coo7z6[17] = (Zy1ft6 & HADDRI[17]); +assign Coo7z6[16] = (Zy1ft6 & HADDRI[16]); +assign Coo7z6[15] = (Zy1ft6 & HADDRI[15]); +assign Coo7z6[14] = (Zy1ft6 & HADDRI[14]); +assign Coo7z6[13] = (Zy1ft6 & HADDRI[13]); +assign Coo7z6[12] = (Zy1ft6 & HADDRI[12]); +assign Coo7z6[11] = (Zy1ft6 & HADDRI[11]); +assign Coo7z6[10] = (Zy1ft6 & HADDRI[10]); +assign Zmo7z6[9] = (Zy1ft6 & Cmm7z6[9]); +assign Zmo7z6[8] = (Zy1ft6 & Cmm7z6[8]); +assign Zmo7z6[7] = (Zy1ft6 & Cmm7z6[7]); +assign Zmo7z6[6] = (Zy1ft6 & Cmm7z6[6]); +assign Zmo7z6[5] = (Zy1ft6 & Cmm7z6[5]); +assign Zmo7z6[4] = (Zy1ft6 & Cmm7z6[4]); +assign Zmo7z6[3] = (Zy1ft6 & Cmm7z6[3]); +assign Zmo7z6[31] = (Zy1ft6 & Cmm7z6[31]); +assign Zmo7z6[30] = (Zy1ft6 & Cmm7z6[30]); +assign Zmo7z6[2] = (Zy1ft6 & Yefnv6); +assign Zmo7z6[29] = (Zy1ft6 & Cmm7z6[29]); +assign Zmo7z6[28] = (Zy1ft6 & Cmm7z6[28]); +assign Zmo7z6[27] = (Zy1ft6 & Cmm7z6[27]); +assign Zmo7z6[26] = (Zy1ft6 & Cmm7z6[26]); +assign Zmo7z6[25] = (Zy1ft6 & Cmm7z6[25]); +assign Zmo7z6[24] = (Zy1ft6 & Cmm7z6[24]); +assign Zmo7z6[23] = (Zy1ft6 & Cmm7z6[23]); +assign Zmo7z6[22] = (Zy1ft6 & Cmm7z6[22]); +assign Zmo7z6[21] = (Zy1ft6 & Cmm7z6[21]); +assign Zmo7z6[20] = (Zy1ft6 & Cmm7z6[20]); +assign Zmo7z6[19] = (Zy1ft6 & Cmm7z6[19]); +assign Zmo7z6[18] = (Zy1ft6 & Cmm7z6[18]); +assign Zmo7z6[17] = (Zy1ft6 & Cmm7z6[17]); +assign Zmo7z6[16] = (Zy1ft6 & Cmm7z6[16]); +assign Zmo7z6[15] = (Zy1ft6 & Cmm7z6[15]); +assign Zmo7z6[14] = (Zy1ft6 & Cmm7z6[14]); +assign Zmo7z6[13] = (Zy1ft6 & Cmm7z6[13]); +assign Zmo7z6[12] = (Zy1ft6 & Cmm7z6[12]); +assign Zmo7z6[11] = (Zy1ft6 & Cmm7z6[11]); +assign Zmo7z6[10] = (Zy1ft6 & Cmm7z6[10]); +assign T6r7z6[9] = (Ikfnv6 & Pkfnv6); +assign T6r7z6[8] = (Wkfnv6 & Dlfnv6); +assign T6r7z6[7] = (Klfnv6 & Rlfnv6); +assign T6r7z6[6] = (Ylfnv6 & Fmfnv6); +assign T6r7z6[5] = (Mmfnv6 & Tmfnv6); +assign T6r7z6[4] = (Anfnv6 & Hnfnv6); +assign T6r7z6[3] = (Onfnv6 & Vnfnv6); +assign T6r7z6[31] = (Um77z6 & HTMDHBURST[0]); +assign T6r7z6[30] = (Cn77z6 & HTMDHBURST[0]); +assign T6r7z6[2] = (Cofnv6 & Jofnv6); +assign T6r7z6[29] = (Kn77z6 & HTMDHBURST[0]); +assign T6r7z6[28] = (Sn77z6 & HTMDHBURST[0]); +assign T6r7z6[27] = (Ao77z6 & HTMDHBURST[0]); +assign T6r7z6[26] = (Io77z6 & HTMDHBURST[0]); +assign T6r7z6[25] = (Qo77z6 & HTMDHBURST[0]); +assign T6r7z6[24] = (Yo77z6 & HTMDHBURST[0]); +assign T6r7z6[23] = (Gp77z6 & HTMDHBURST[0]); +assign T6r7z6[22] = (Op77z6 & HTMDHBURST[0]); +assign T6r7z6[21] = (Wp77z6 & HTMDHBURST[0]); +assign T6r7z6[20] = (Eq77z6 & HTMDHBURST[0]); +assign T6r7z6[1] = (Qofnv6 & Xofnv6); +assign T6r7z6[19] = (Mq77z6 & HTMDHBURST[0]); +assign T6r7z6[18] = (Uq77z6 & HTMDHBURST[0]); +assign T6r7z6[17] = (Cr77z6 & HTMDHBURST[0]); +assign T6r7z6[16] = (Kr77z6 & HTMDHBURST[0]); +assign T6r7z6[14] = (Epfnv6 & Lpfnv6); +assign T6r7z6[13] = (Spfnv6 & Zpfnv6); +assign T6r7z6[12] = (Gqfnv6 & Nqfnv6); +assign T6r7z6[11] = (Uqfnv6 & Brfnv6); +assign T6r7z6[10] = (~(Irfnv6 | Prfnv6)); +assign S8r7z6[9] = (Mkp7z6[9] & Pkfnv6); +assign S8r7z6[8] = (Mkp7z6[8] & Dlfnv6); +assign S8r7z6[7] = (Mkp7z6[7] & Rlfnv6); +assign S8r7z6[6] = (Mkp7z6[6] & Fmfnv6); +assign S8r7z6[5] = (Mkp7z6[5] & Tmfnv6); +assign S8r7z6[4] = (Mkp7z6[4] & Hnfnv6); +assign S8r7z6[3] = (Mkp7z6[3] & Onfnv6); +assign S8r7z6[2] = (Mkp7z6[2] & Jofnv6); +assign S8r7z6[14] = (Mkp7z6[14] & Lpfnv6); +assign S8r7z6[13] = (Mkp7z6[13] & Zpfnv6); +assign S8r7z6[12] = (Mkp7z6[12] & Nqfnv6); +assign S8r7z6[11] = (Mkp7z6[11] & Brfnv6); +assign S8r7z6[10] = (Mkp7z6[10] & Wrfnv6); +assign Sar7z6[9] = (Dsfnv6 & Pkfnv6); +assign Sar7z6[8] = (Ksfnv6 & Dlfnv6); +assign Sar7z6[7] = (Rsfnv6 & Rlfnv6); +assign Sar7z6[6] = (Ysfnv6 & Fmfnv6); +assign Fmfnv6 = (Tmfnv6 | Ftfnv6); +assign Ftfnv6 = (Mtfnv6 & Rlfnv6); +assign Sar7z6[5] = (Ttfnv6 & Tmfnv6); +assign Tmfnv6 = (Hnfnv6 | Aufnv6); +assign Aufnv6 = (~(Rip7z6[3] | Rip7z6[1])); +assign Sar7z6[4] = (Hufnv6 & Hnfnv6); +assign Hnfnv6 = (Onfnv6 | Oufnv6); +assign Oufnv6 = (Vufnv6 & Mtfnv6); +assign Vufnv6 = (Cvfnv6 & Rlfnv6); +assign Rlfnv6 = (!Rip7z6[3]); +assign Sar7z6[3] = (Jvfnv6 & Onfnv6); +assign Sar7z6[2] = (Qvfnv6 & Jofnv6); +assign Jofnv6 = (~(Xvfnv6 & Ewfnv6)); +assign Ewfnv6 = (~(Onfnv6 & Mtfnv6)); +assign Xvfnv6 = (!Qofnv6); +assign Sar7z6[1] = (~(Lwfnv6 & Swfnv6)); +assign Swfnv6 = (~(S8r7z6[1] & Zwfnv6)); +assign S8r7z6[1] = (Mkp7z6[1] & Qofnv6); +assign Lwfnv6 = (~(Gxfnv6 & Qofnv6)); +assign Sar7z6[14] = (Nxfnv6 & Lpfnv6); +assign Lpfnv6 = (Mtfnv6 | Zpfnv6); +assign Sar7z6[13] = (Uxfnv6 & Zpfnv6); +assign Zpfnv6 = (Cvfnv6 | Nqfnv6); +assign Sar7z6[12] = (Byfnv6 & Nqfnv6); +assign Nqfnv6 = (Brfnv6 | Iyfnv6); +assign Iyfnv6 = (Mtfnv6 & Cvfnv6); +assign Sar7z6[11] = (Pyfnv6 & Brfnv6); +assign Brfnv6 = (~(Rip7z6[2] & Prfnv6)); +assign Prfnv6 = (!Wrfnv6); +assign Sar7z6[10] = (Wyfnv6 & Wrfnv6); +assign Wrfnv6 = (Pkfnv6 | Dzfnv6); +assign Dzfnv6 = (~(Rip7z6[0] | Rip7z6[2])); +assign Pkfnv6 = (Dlfnv6 | Kzfnv6); +assign Dlfnv6 = (~(Rip7z6[3] & Rzfnv6)); +assign Rzfnv6 = (~(Kzfnv6 & Mtfnv6)); +assign Kzfnv6 = (~(Rip7z6[2] | Rip7z6[1])); +assign Sar7z6[0] = (Zwfnv6 ? S8r7z6[0] : Yzfnv6); +assign Zwfnv6 = (F0gnv6 & M0gnv6); +assign M0gnv6 = (~(T0gnv6 & A1gnv6)); +assign A1gnv6 = (~(Mkp7z6[1] & H1gnv6)); +assign F0gnv6 = (~(O1gnv6 | V1gnv6)); +assign O1gnv6 = (C2gnv6 & J2gnv6); +assign J2gnv6 = (~(Q2gnv6 & X2gnv6)); +assign X2gnv6 = (~(Mkp7z6[1] & E3gnv6)); +assign E3gnv6 = (L3gnv6 | Mkp7z6[0]); +assign S8r7z6[0] = (S3gnv6 & Mkp7z6[0]); +assign Yzfnv6 = (S3gnv6 & Z3gnv6); +assign S3gnv6 = (Qofnv6 & Mtfnv6); +assign Mtfnv6 = (!Rip7z6[0]); +assign Qofnv6 = (Onfnv6 & Cvfnv6); +assign Cvfnv6 = (!Rip7z6[1]); +assign Onfnv6 = (~(Rip7z6[2] | Rip7z6[3])); +assign Ve5ft6 = (Sr77z6 & HTMDHBURST[0]); +assign P0r7z6[9] = (Ikfnv6 & G4gnv6); +assign P0r7z6[8] = (Wkfnv6 & N4gnv6); +assign P0r7z6[7] = (Klfnv6 & U4gnv6); +assign P0r7z6[6] = (Ylfnv6 & B5gnv6); +assign P0r7z6[5] = (Mmfnv6 & I5gnv6); +assign P0r7z6[4] = (Anfnv6 & P5gnv6); +assign P0r7z6[3] = (W5gnv6 & Vnfnv6); +assign P0r7z6[2] = (Cofnv6 & D6gnv6); +assign P0r7z6[1] = (K6gnv6 & Xofnv6); +assign P0r7z6[14] = (Epfnv6 & R6gnv6); +assign P0r7z6[13] = (Spfnv6 & Y6gnv6); +assign P0r7z6[12] = (Gqfnv6 & F7gnv6); +assign P0r7z6[11] = (Uqfnv6 & M7gnv6); +assign P0r7z6[10] = (~(Irfnv6 | T7gnv6)); +assign O2r7z6[9] = (Bqp7z6[9] & G4gnv6); +assign O2r7z6[8] = (Bqp7z6[8] & N4gnv6); +assign O2r7z6[7] = (Bqp7z6[7] & U4gnv6); +assign O2r7z6[6] = (Bqp7z6[6] & B5gnv6); +assign O2r7z6[5] = (Bqp7z6[5] & I5gnv6); +assign O2r7z6[4] = (Bqp7z6[4] & P5gnv6); +assign O2r7z6[3] = (Bqp7z6[3] & W5gnv6); +assign O2r7z6[2] = (Bqp7z6[2] & D6gnv6); +assign O2r7z6[14] = (Bqp7z6[14] & R6gnv6); +assign O2r7z6[13] = (Bqp7z6[13] & Y6gnv6); +assign O2r7z6[12] = (Bqp7z6[12] & F7gnv6); +assign O2r7z6[11] = (Bqp7z6[11] & M7gnv6); +assign O2r7z6[10] = (Bqp7z6[10] & A8gnv6); +assign O4r7z6[9] = (Dsfnv6 & G4gnv6); +assign O4r7z6[8] = (Ksfnv6 & N4gnv6); +assign O4r7z6[7] = (Rsfnv6 & U4gnv6); +assign O4r7z6[6] = (Ysfnv6 & B5gnv6); +assign B5gnv6 = (I5gnv6 | H8gnv6); +assign H8gnv6 = (O8gnv6 & U4gnv6); +assign O4r7z6[5] = (Ttfnv6 & I5gnv6); +assign I5gnv6 = (P5gnv6 | V8gnv6); +assign V8gnv6 = (~(Gop7z6[3] | Gop7z6[1])); +assign O4r7z6[4] = (Hufnv6 & P5gnv6); +assign P5gnv6 = (W5gnv6 | C9gnv6); +assign C9gnv6 = (J9gnv6 & O8gnv6); +assign J9gnv6 = (Q9gnv6 & U4gnv6); +assign U4gnv6 = (!Gop7z6[3]); +assign O4r7z6[3] = (W5gnv6 & Jvfnv6); +assign O4r7z6[2] = (Qvfnv6 & D6gnv6); +assign D6gnv6 = (~(X9gnv6 & Eagnv6)); +assign Eagnv6 = (~(W5gnv6 & O8gnv6)); +assign X9gnv6 = (!K6gnv6); +assign O4r7z6[1] = (~(Lagnv6 & Sagnv6)); +assign Sagnv6 = (~(O2r7z6[1] & Zagnv6)); +assign O2r7z6[1] = (Bqp7z6[1] & K6gnv6); +assign Lagnv6 = (~(K6gnv6 & Gxfnv6)); +assign O4r7z6[14] = (Nxfnv6 & R6gnv6); +assign R6gnv6 = (O8gnv6 | Y6gnv6); +assign O4r7z6[13] = (Uxfnv6 & Y6gnv6); +assign Y6gnv6 = (Q9gnv6 | F7gnv6); +assign O4r7z6[12] = (Byfnv6 & F7gnv6); +assign F7gnv6 = (M7gnv6 | Gbgnv6); +assign Gbgnv6 = (~(Gop7z6[0] | Gop7z6[1])); +assign O4r7z6[11] = (Pyfnv6 & M7gnv6); +assign M7gnv6 = (~(Gop7z6[2] & T7gnv6)); +assign T7gnv6 = (!A8gnv6); +assign O4r7z6[10] = (Wyfnv6 & A8gnv6); +assign A8gnv6 = (G4gnv6 | Nbgnv6); +assign Nbgnv6 = (~(Gop7z6[0] | Gop7z6[2])); +assign G4gnv6 = (N4gnv6 | Ubgnv6); +assign N4gnv6 = (~(Gop7z6[3] & Bcgnv6)); +assign Bcgnv6 = (~(Ubgnv6 & O8gnv6)); +assign Ubgnv6 = (~(Gop7z6[2] | Gop7z6[1])); +assign O4r7z6[0] = (Zagnv6 ? O2r7z6[0] : Icgnv6); +assign Zagnv6 = (Pcgnv6 & Wcgnv6); +assign Wcgnv6 = (~(T0gnv6 & Ddgnv6)); +assign Ddgnv6 = (~(Bqp7z6[1] & H1gnv6)); +assign Pcgnv6 = (~(Kdgnv6 | Rdgnv6)); +assign Kdgnv6 = (C2gnv6 & Ydgnv6); +assign Ydgnv6 = (~(Q2gnv6 & Fegnv6)); +assign Fegnv6 = (~(Bqp7z6[1] & Megnv6)); +assign Megnv6 = (L3gnv6 | Bqp7z6[0]); +assign O2r7z6[0] = (Tegnv6 & Bqp7z6[0]); +assign Tegnv6 = (K6gnv6 & O8gnv6); +assign Icgnv6 = (Afgnv6 & K6gnv6); +assign K6gnv6 = (W5gnv6 & Q9gnv6); +assign Q9gnv6 = (!Gop7z6[1]); +assign W5gnv6 = (~(Gop7z6[2] | Gop7z6[3])); +assign Afgnv6 = (Z3gnv6 & O8gnv6); +assign O8gnv6 = (!Gop7z6[0]); +assign Luq7z6[9] = (Ikfnv6 & Hfgnv6); +assign Luq7z6[8] = (Wkfnv6 & Ofgnv6); +assign Luq7z6[7] = (Klfnv6 & Vfgnv6); +assign Luq7z6[6] = (Ylfnv6 & Cggnv6); +assign Luq7z6[5] = (Mmfnv6 & Jggnv6); +assign Luq7z6[4] = (Anfnv6 & Qggnv6); +assign Luq7z6[3] = (Xggnv6 & Vnfnv6); +assign Luq7z6[2] = (Cofnv6 & Ehgnv6); +assign Luq7z6[1] = (Lhgnv6 & Xofnv6); +assign Luq7z6[14] = (Epfnv6 & Shgnv6); +assign Luq7z6[13] = (Spfnv6 & Zhgnv6); +assign Luq7z6[12] = (Gqfnv6 & Gignv6); +assign Luq7z6[11] = (Uqfnv6 & Nignv6); +assign Luq7z6[10] = (~(Irfnv6 | Uignv6)); +assign Kwq7z6[9] = (B2q7z6[9] & Hfgnv6); +assign Kwq7z6[8] = (B2q7z6[8] & Ofgnv6); +assign Kwq7z6[7] = (B2q7z6[7] & Vfgnv6); +assign Kwq7z6[6] = (B2q7z6[6] & Cggnv6); +assign Kwq7z6[5] = (B2q7z6[5] & Jggnv6); +assign Kwq7z6[4] = (B2q7z6[4] & Qggnv6); +assign Kwq7z6[3] = (B2q7z6[3] & Xggnv6); +assign Kwq7z6[2] = (B2q7z6[2] & Ehgnv6); +assign Kwq7z6[14] = (B2q7z6[14] & Shgnv6); +assign Kwq7z6[13] = (B2q7z6[13] & Zhgnv6); +assign Kwq7z6[12] = (B2q7z6[12] & Gignv6); +assign Kwq7z6[11] = (B2q7z6[11] & Nignv6); +assign Kwq7z6[10] = (B2q7z6[10] & Bjgnv6); +assign Kyq7z6[9] = (Dsfnv6 & Hfgnv6); +assign Kyq7z6[8] = (Ksfnv6 & Ofgnv6); +assign Kyq7z6[7] = (Rsfnv6 & Vfgnv6); +assign Kyq7z6[6] = (Ysfnv6 & Cggnv6); +assign Cggnv6 = (Jggnv6 | Ijgnv6); +assign Ijgnv6 = (Pjgnv6 & Vfgnv6); +assign Kyq7z6[5] = (Ttfnv6 & Jggnv6); +assign Jggnv6 = (Qggnv6 | Wjgnv6); +assign Wjgnv6 = (~(G0q7z6[1] | G0q7z6[3])); +assign Kyq7z6[4] = (Hufnv6 & Qggnv6); +assign Qggnv6 = (Xggnv6 | Dkgnv6); +assign Dkgnv6 = (Kkgnv6 & Pjgnv6); +assign Kkgnv6 = (Rkgnv6 & Vfgnv6); +assign Vfgnv6 = (!G0q7z6[3]); +assign Kyq7z6[3] = (Xggnv6 & Jvfnv6); +assign Kyq7z6[2] = (Qvfnv6 & Ehgnv6); +assign Ehgnv6 = (~(Ykgnv6 & Flgnv6)); +assign Flgnv6 = (~(Xggnv6 & Pjgnv6)); +assign Ykgnv6 = (!Lhgnv6); +assign Kyq7z6[1] = (~(Mlgnv6 & Tlgnv6)); +assign Tlgnv6 = (~(Kwq7z6[1] & Amgnv6)); +assign Kwq7z6[1] = (B2q7z6[1] & Lhgnv6); +assign Mlgnv6 = (~(Lhgnv6 & Gxfnv6)); +assign Kyq7z6[14] = (Nxfnv6 & Shgnv6); +assign Shgnv6 = (Pjgnv6 | Zhgnv6); +assign Kyq7z6[13] = (Uxfnv6 & Zhgnv6); +assign Zhgnv6 = (Rkgnv6 | Gignv6); +assign Kyq7z6[12] = (Byfnv6 & Gignv6); +assign Gignv6 = (Nignv6 | Hmgnv6); +assign Hmgnv6 = (Pjgnv6 & Rkgnv6); +assign Kyq7z6[11] = (Pyfnv6 & Nignv6); +assign Nignv6 = (~(G0q7z6[2] & Uignv6)); +assign Uignv6 = (!Bjgnv6); +assign Kyq7z6[10] = (Wyfnv6 & Bjgnv6); +assign Bjgnv6 = (Hfgnv6 | Omgnv6); +assign Omgnv6 = (~(G0q7z6[0] | G0q7z6[2])); +assign Hfgnv6 = (~(Vmgnv6 & Cngnv6)); +assign Cngnv6 = (G0q7z6[1] | G0q7z6[2]); +assign Vmgnv6 = (!Ofgnv6); +assign Ofgnv6 = (~(G0q7z6[3] & Jngnv6)); +assign Jngnv6 = (~(Qngnv6 & Pjgnv6)); +assign Qngnv6 = (~(G0q7z6[1] | G0q7z6[2])); +assign Kyq7z6[0] = (Amgnv6 ? Kwq7z6[0] : Xngnv6); +assign Amgnv6 = (Eognv6 & Lognv6); +assign Lognv6 = (~(T0gnv6 & Sognv6)); +assign Sognv6 = (~(B2q7z6[1] & H1gnv6)); +assign Eognv6 = (~(Zognv6 | Gpgnv6)); +assign Zognv6 = (C2gnv6 & Npgnv6); +assign Npgnv6 = (~(Q2gnv6 & Upgnv6)); +assign Upgnv6 = (~(B2q7z6[1] & Bqgnv6)); +assign Bqgnv6 = (L3gnv6 | B2q7z6[0]); +assign Kwq7z6[0] = (Iqgnv6 & B2q7z6[0]); +assign Iqgnv6 = (Lhgnv6 & Pjgnv6); +assign Xngnv6 = (Pqgnv6 & Lhgnv6); +assign Lhgnv6 = (Xggnv6 & Rkgnv6); +assign Rkgnv6 = (!G0q7z6[1]); +assign Xggnv6 = (~(G0q7z6[2] | G0q7z6[3])); +assign Pqgnv6 = (Z3gnv6 & Pjgnv6); +assign Pjgnv6 = (!G0q7z6[0]); +assign Hoq7z6[9] = (Ikfnv6 & Wqgnv6); +assign Ikfnv6 = (Ot77z6 & HTMDHBURST[0]); +assign Hoq7z6[8] = (Wkfnv6 & Drgnv6); +assign Wkfnv6 = (Wt77z6 & HTMDHBURST[0]); +assign Hoq7z6[7] = (Klfnv6 & Krgnv6); +assign Klfnv6 = (Eu77z6 & HTMDHBURST[0]); +assign Hoq7z6[6] = (Ylfnv6 & Rrgnv6); +assign Ylfnv6 = (Mu77z6 & HTMDHBURST[0]); +assign Hoq7z6[5] = (Mmfnv6 & Yrgnv6); +assign Mmfnv6 = (Uu77z6 & HTMDHBURST[0]); +assign Hoq7z6[4] = (Anfnv6 & Fsgnv6); +assign Anfnv6 = (Cv77z6 & HTMDHBURST[0]); +assign Hoq7z6[3] = (Msgnv6 & Vnfnv6); +assign Vnfnv6 = (Kv77z6 & HTMDHBURST[0]); +assign Hoq7z6[2] = (Cofnv6 & Tsgnv6); +assign Cofnv6 = (Sv77z6 & HTMDHBURST[0]); +assign Hoq7z6[1] = (Atgnv6 & Xofnv6); +assign Xofnv6 = (Aw77z6 & HTMDHBURST[0]); +assign Hoq7z6[14] = (Epfnv6 & Htgnv6); +assign Epfnv6 = (As77z6 & HTMDHBURST[0]); +assign Hoq7z6[13] = (Spfnv6 & Otgnv6); +assign Spfnv6 = (Is77z6 & HTMDHBURST[0]); +assign Hoq7z6[12] = (Gqfnv6 & Vtgnv6); +assign Gqfnv6 = (Qs77z6 & HTMDHBURST[0]); +assign Hoq7z6[11] = (Uqfnv6 & Cugnv6); +assign Uqfnv6 = (Ys77z6 & HTMDHBURST[0]); +assign Hoq7z6[10] = (~(Irfnv6 | Jugnv6)); +assign Irfnv6 = (~(Gt77z6 & HTMDHBURST[0])); +assign Gqq7z6[9] = (E6p7z6[9] & Wqgnv6); +assign Gqq7z6[8] = (E6p7z6[8] & Drgnv6); +assign Gqq7z6[7] = (E6p7z6[7] & Krgnv6); +assign Gqq7z6[6] = (E6p7z6[6] & Rrgnv6); +assign Gqq7z6[5] = (E6p7z6[5] & Yrgnv6); +assign Gqq7z6[4] = (E6p7z6[4] & Fsgnv6); +assign Gqq7z6[3] = (E6p7z6[3] & Msgnv6); +assign Gqq7z6[2] = (E6p7z6[2] & Tsgnv6); +assign Gqq7z6[14] = (E6p7z6[14] & Htgnv6); +assign Gqq7z6[13] = (E6p7z6[13] & Otgnv6); +assign Gqq7z6[12] = (E6p7z6[12] & Vtgnv6); +assign Gqq7z6[11] = (E6p7z6[11] & Cugnv6); +assign Gqq7z6[10] = (E6p7z6[10] & Qugnv6); +assign Gsq7z6[9] = (Xugnv6 & Wqgnv6); +assign Xugnv6 = (W22ft6 ? U9p7z6[9] : Dsfnv6); +assign Gsq7z6[8] = (Evgnv6 & Drgnv6); +assign Evgnv6 = (W22ft6 ? U9p7z6[8] : Ksfnv6); +assign Gsq7z6[7] = (Lvgnv6 & Krgnv6); +assign Lvgnv6 = (W22ft6 ? U9p7z6[7] : Rsfnv6); +assign Gsq7z6[6] = (Svgnv6 & Rrgnv6); +assign Rrgnv6 = (Yrgnv6 | Zvgnv6); +assign Zvgnv6 = (Gwgnv6 & Krgnv6); +assign Svgnv6 = (W22ft6 ? U9p7z6[6] : Ysfnv6); +assign Gsq7z6[5] = (Nwgnv6 & Yrgnv6); +assign Yrgnv6 = (Fsgnv6 | Uwgnv6); +assign Uwgnv6 = (~(Q8p7z6[1] | Q8p7z6[3])); +assign Nwgnv6 = (W22ft6 ? U9p7z6[5] : Ttfnv6); +assign Gsq7z6[4] = (Bxgnv6 & Fsgnv6); +assign Fsgnv6 = (Msgnv6 | Ixgnv6); +assign Ixgnv6 = (Pxgnv6 & Gwgnv6); +assign Pxgnv6 = (Wxgnv6 & Krgnv6); +assign Krgnv6 = (!Q8p7z6[3]); +assign Bxgnv6 = (W22ft6 ? U9p7z6[4] : Hufnv6); +assign Gsq7z6[3] = (Dygnv6 & Msgnv6); +assign Dygnv6 = (W22ft6 ? U9p7z6[3] : Jvfnv6); +assign Gsq7z6[31] = (W22ft6 ? U9p7z6[31] : Sar7z6[31]); +assign Sar7z6[31] = (~(Kygnv6 | Rygnv6)); +assign Gsq7z6[30] = (W22ft6 ? U9p7z6[30] : Sar7z6[30]); +assign Sar7z6[30] = (~(Kygnv6 | Yygnv6)); +assign Gsq7z6[2] = (Fzgnv6 & Tsgnv6); +assign Tsgnv6 = (~(Mzgnv6 & Tzgnv6)); +assign Tzgnv6 = (~(Msgnv6 & Gwgnv6)); +assign Mzgnv6 = (!Atgnv6); +assign Fzgnv6 = (W22ft6 ? U9p7z6[2] : Qvfnv6); +assign Gsq7z6[29] = (W22ft6 ? U9p7z6[29] : Sar7z6[29]); +assign Sar7z6[29] = (~(Kygnv6 | A0hnv6)); +assign Gsq7z6[28] = (W22ft6 ? U9p7z6[28] : Sar7z6[28]); +assign Sar7z6[28] = (~(Kygnv6 | H0hnv6)); +assign Gsq7z6[27] = (W22ft6 ? U9p7z6[27] : Sar7z6[27]); +assign Sar7z6[27] = (~(Kygnv6 | O0hnv6)); +assign Gsq7z6[26] = (W22ft6 ? U9p7z6[26] : Sar7z6[26]); +assign Sar7z6[26] = (~(Kygnv6 | V0hnv6)); +assign Gsq7z6[25] = (W22ft6 ? U9p7z6[25] : Sar7z6[25]); +assign Sar7z6[25] = (~(Kygnv6 | C1hnv6)); +assign Gsq7z6[24] = (W22ft6 ? U9p7z6[24] : Sar7z6[24]); +assign Sar7z6[24] = (~(Kygnv6 | J1hnv6)); +assign Gsq7z6[23] = (W22ft6 ? U9p7z6[23] : Sar7z6[23]); +assign Sar7z6[23] = (~(Kygnv6 | Q1hnv6)); +assign Gsq7z6[22] = (W22ft6 ? U9p7z6[22] : Sar7z6[22]); +assign Sar7z6[22] = (~(Kygnv6 | X1hnv6)); +assign Gsq7z6[21] = (W22ft6 ? U9p7z6[21] : Sar7z6[21]); +assign Sar7z6[21] = (~(Kygnv6 | E2hnv6)); +assign Gsq7z6[20] = (W22ft6 ? U9p7z6[20] : Sar7z6[20]); +assign Sar7z6[20] = (~(Kygnv6 | L2hnv6)); +assign Gsq7z6[1] = (~(S2hnv6 & Z2hnv6)); +assign Z2hnv6 = (~(G3hnv6 & Atgnv6)); +assign G3hnv6 = (W22ft6 ? U9p7z6[1] : Gxfnv6); +assign S2hnv6 = (~(Gqq7z6[1] & N3hnv6)); +assign Gqq7z6[1] = (E6p7z6[1] & Atgnv6); +assign Gsq7z6[19] = (W22ft6 ? U9p7z6[19] : Sar7z6[19]); +assign Sar7z6[19] = (~(Kygnv6 | U3hnv6)); +assign U3hnv6 = (!Cmm7z6[19]); +assign Gsq7z6[18] = (W22ft6 ? U9p7z6[18] : Sar7z6[18]); +assign Sar7z6[18] = (~(Kygnv6 | B4hnv6)); +assign B4hnv6 = (!Cmm7z6[18]); +assign Gsq7z6[17] = (W22ft6 ? U9p7z6[17] : Sar7z6[17]); +assign Sar7z6[17] = (~(Kygnv6 | I4hnv6)); +assign Gsq7z6[16] = (W22ft6 ? U9p7z6[16] : Sar7z6[16]); +assign Sar7z6[16] = (~(Kygnv6 | P4hnv6)); +assign Gsq7z6[14] = (W4hnv6 & Htgnv6); +assign Htgnv6 = (Gwgnv6 | Otgnv6); +assign W4hnv6 = (W22ft6 ? U9p7z6[14] : Nxfnv6); +assign Gsq7z6[13] = (D5hnv6 & Otgnv6); +assign Otgnv6 = (Wxgnv6 | Vtgnv6); +assign D5hnv6 = (W22ft6 ? U9p7z6[13] : Uxfnv6); +assign Gsq7z6[12] = (K5hnv6 & Vtgnv6); +assign Vtgnv6 = (Cugnv6 | R5hnv6); +assign R5hnv6 = (Gwgnv6 & Wxgnv6); +assign K5hnv6 = (W22ft6 ? U9p7z6[12] : Byfnv6); +assign Gsq7z6[11] = (Y5hnv6 & Cugnv6); +assign Cugnv6 = (~(Q8p7z6[2] & Jugnv6)); +assign Jugnv6 = (!Qugnv6); +assign Y5hnv6 = (W22ft6 ? U9p7z6[11] : Pyfnv6); +assign Gsq7z6[10] = (F6hnv6 & Qugnv6); +assign Qugnv6 = (Wqgnv6 | M6hnv6); +assign M6hnv6 = (~(Q8p7z6[0] | Q8p7z6[2])); +assign Wqgnv6 = (Drgnv6 | T6hnv6); +assign Drgnv6 = (~(Q8p7z6[3] & A7hnv6)); +assign A7hnv6 = (~(T6hnv6 & Gwgnv6)); +assign T6hnv6 = (~(Q8p7z6[1] | Q8p7z6[2])); +assign F6hnv6 = (W22ft6 ? U9p7z6[10] : Wyfnv6); +assign Gsq7z6[0] = (~(H7hnv6 & O7hnv6)); +assign O7hnv6 = (~(V7hnv6 & C8hnv6)); +assign C8hnv6 = (W22ft6 ? U9p7z6[0] : J8hnv6); +assign J8hnv6 = (~(L3gnv6 | N3hnv6)); +assign H7hnv6 = (~(Gqq7z6[0] & N3hnv6)); +assign N3hnv6 = (Q8hnv6 & X8hnv6); +assign X8hnv6 = (~(E9hnv6 | W22ft6)); +assign Q8hnv6 = (L9hnv6 & S9hnv6); +assign S9hnv6 = (~(T0gnv6 & Z9hnv6)); +assign Z9hnv6 = (~(E6p7z6[1] & H1gnv6)); +assign H1gnv6 = (~(Gxfnv6 & Z3gnv6)); +assign T0gnv6 = (~(L3gnv6 & Gahnv6)); +assign Gahnv6 = (!Gxfnv6); +assign L9hnv6 = (~(C2gnv6 & Nahnv6)); +assign Nahnv6 = (~(Q2gnv6 & Uahnv6)); +assign Uahnv6 = (~(E6p7z6[1] & Bbhnv6)); +assign Bbhnv6 = (L3gnv6 | E6p7z6[0]); +assign L3gnv6 = (!Z3gnv6); +assign Q2gnv6 = (Ibhnv6 & Pbhnv6); +assign Ibhnv6 = (Wbhnv6 & HTMDHBURST[0]); +assign C2gnv6 = (Dchnv6 | Kygnv6); +assign Dchnv6 = (Pbhnv6 ? Kchnv6 : Wbhnv6); +assign Kchnv6 = (~(Gxfnv6 & Wbhnv6)); +assign Gqq7z6[0] = (V7hnv6 & E6p7z6[0]); +assign V7hnv6 = (Atgnv6 & Gwgnv6); +assign Gwgnv6 = (!Q8p7z6[0]); +assign Atgnv6 = (Msgnv6 & Wxgnv6); +assign Wxgnv6 = (!Q8p7z6[1]); +assign Msgnv6 = (~(Q8p7z6[2] | Q8p7z6[3])); +assign Bu4ft6 = (W22ft6 ? U9p7z6[15] : Tp5ft6); +assign Zdedt6 = (~(Rchnv6 & Ychnv6)); +assign Ofedt6 = (~(Fdhnv6 & Mdhnv6)); +assign Dhedt6 = (~(Tdhnv6 & Aehnv6)); +assign Tdhnv6 = (Rchnv6 & Hehnv6); +assign Siedt6 = (~(Oehnv6 & Vehnv6)); +assign Hkedt6 = (~(Cfhnv6 & Jfhnv6)); +assign Cfhnv6 = (Rchnv6 & Qfhnv6); +assign Wledt6 = (~(Fdhnv6 & Qfhnv6)); +assign Lnedt6 = (~(Xfhnv6 & Jfhnv6)); +assign Xfhnv6 = (Rchnv6 & Eghnv6); +assign Rchnv6 = (~(Lghnv6 | Sghnv6)); +assign Apedt6 = (~(Fdhnv6 & Eghnv6)); +assign Fdhnv6 = (Oehnv6 & Zghnv6); +assign Oehnv6 = (~(Ghhnv6 | Sghnv6)); +assign Sghnv6 = (~(Nhhnv6 | Uhhnv6)); +assign Pqedt6 = (~(Bihnv6 & Mdhnv6)); +assign Esedt6 = (~(Iihnv6 & Ychnv6)); +assign Ychnv6 = (Pihnv6 & Hehnv6); +assign Pihnv6 = (Mdhnv6 & Wihnv6); +assign Ttedt6 = (~(Djhnv6 & Vehnv6)); +assign Vehnv6 = (Kjhnv6 & Aehnv6); +assign Kjhnv6 = (Rjhnv6 & Yjhnv6); +assign Ivedt6 = (~(Fkhnv6 & Iihnv6)); +assign Fkhnv6 = (Aehnv6 & Hehnv6); +assign Hehnv6 = (Mkhnv6 & Tkhnv6); +assign Tkhnv6 = (~(Alhnv6 & Hlhnv6)); +assign Mkhnv6 = (Olhnv6 & Vlhnv6); +assign Aehnv6 = (Cmhnv6 & Jmhnv6); +assign Jmhnv6 = (~(Qmhnv6 & Hlhnv6)); +assign Cmhnv6 = (Uhhnv6 ? Eghnv6 : Mdhnv6); +assign Xwedt6 = (~(Bihnv6 & Qfhnv6)); +assign Myedt6 = (~(Xmhnv6 & Iihnv6)); +assign Xmhnv6 = (Jfhnv6 & Qfhnv6); +assign Qfhnv6 = (Uhhnv6 ? Mdhnv6 : Eghnv6); +assign Mdhnv6 = (~(Enhnv6 & Lnhnv6)); +assign Enhnv6 = (Snhnv6 & Znhnv6); +assign B0fdt6 = (~(Bihnv6 & Eghnv6)); +assign Bihnv6 = (Djhnv6 & Zghnv6); +assign Zghnv6 = (Gohnv6 & Rjhnv6); +assign Gohnv6 = (Yjhnv6 & Wihnv6); +assign Yjhnv6 = (~(Nohnv6 & Uohnv6)); +assign Nohnv6 = (Uhhnv6 & Snhnv6); +assign Djhnv6 = (~(Bphnv6 | Lghnv6)); +assign Lghnv6 = (Uhhnv6 & Iphnv6); +assign Iphnv6 = (!Nhhnv6); +assign Nhhnv6 = (~(Pphnv6 & Snhnv6)); +assign Pphnv6 = (Wphnv6 & Znhnv6); +assign Q1fdt6 = (~(Dqhnv6 & Iihnv6)); +assign Iihnv6 = (~(Bphnv6 | Ghhnv6)); +assign Ghhnv6 = (Kqhnv6 & Uhhnv6); +assign Kqhnv6 = (!Rqhnv6); +assign Bphnv6 = (~(Rqhnv6 | Uhhnv6)); +assign Rqhnv6 = (~(Yqhnv6 & Wphnv6)); +assign Dqhnv6 = (Jfhnv6 & Eghnv6); +assign Eghnv6 = (~(Yqhnv6 & Lnhnv6)); +assign Yqhnv6 = (Znhnv6 & Hlhnv6); +assign Jfhnv6 = (Frhnv6 & Rjhnv6); +assign Rjhnv6 = (Mrhnv6 & Olhnv6); +assign Olhnv6 = (~(Alhnv6 & Uhhnv6)); +assign Mrhnv6 = (~(Alhnv6 & Snhnv6)); +assign Alhnv6 = (~(Znhnv6 | Lnhnv6)); +assign Znhnv6 = (!Uohnv6); +assign Frhnv6 = (Vlhnv6 & Wihnv6); +assign Wihnv6 = (~(Qmhnv6 & Snhnv6)); +assign Qmhnv6 = (Trhnv6 & Lnhnv6); +assign Lnhnv6 = (!Wphnv6); +assign Wphnv6 = (Ashnv6 ? Ide7z6[2] : Ohe7z6[6]); +assign Trhnv6 = (Uohnv6 & Hshnv6); +assign Hshnv6 = (!Uhhnv6); +assign Vlhnv6 = (~(Oshnv6 & Uohnv6)); +assign Uohnv6 = (Ashnv6 ? Ide7z6[3] : Ohe7z6[7]); +assign Oshnv6 = (Uhhnv6 & Hlhnv6); +assign Hlhnv6 = (!Snhnv6); +assign Snhnv6 = (Ashnv6 ? Ide7z6[0] : N0gdt6); +assign Uhhnv6 = (Ashnv6 ? Ide7z6[1] : Ohe7z6[5]); +assign F3fdt6 = (~(Vshnv6 & Cthnv6)); +assign U4fdt6 = (~(Jthnv6 & Qthnv6)); +assign J6fdt6 = (~(Xthnv6 & Euhnv6)); +assign Xthnv6 = (Vshnv6 & Luhnv6); +assign Y7fdt6 = (~(Suhnv6 & Zuhnv6)); +assign N9fdt6 = (~(Gvhnv6 & Nvhnv6)); +assign Gvhnv6 = (Vshnv6 & Uvhnv6); +assign Cbfdt6 = (~(Jthnv6 & Uvhnv6)); +assign Rcfdt6 = (~(Bwhnv6 & Nvhnv6)); +assign Bwhnv6 = (Vshnv6 & Iwhnv6); +assign Vshnv6 = (~(Pwhnv6 | Wwhnv6)); +assign Gefdt6 = (~(Jthnv6 & Iwhnv6)); +assign Jthnv6 = (Suhnv6 & Dxhnv6); +assign Suhnv6 = (~(Wwhnv6 | Kxhnv6)); +assign Wwhnv6 = (Rxhnv6 & Yxhnv6); +assign Rxhnv6 = (!Fyhnv6); +assign Vffdt6 = (~(Myhnv6 & Qthnv6)); +assign Khfdt6 = (~(Tyhnv6 & Cthnv6)); +assign Cthnv6 = (Azhnv6 & Luhnv6); +assign Azhnv6 = (Qthnv6 & Hzhnv6); +assign Zifdt6 = (~(Ozhnv6 & Zuhnv6)); +assign Zuhnv6 = (Vzhnv6 & Euhnv6); +assign Vzhnv6 = (C0inv6 & J0inv6); +assign Okfdt6 = (~(Q0inv6 & Tyhnv6)); +assign Q0inv6 = (Euhnv6 & Luhnv6); +assign Luhnv6 = (X0inv6 & E1inv6); +assign E1inv6 = (~(L1inv6 & S1inv6)); +assign X0inv6 = (Z1inv6 & G2inv6); +assign Euhnv6 = (N2inv6 & U2inv6); +assign U2inv6 = (~(S1inv6 & B3inv6)); +assign N2inv6 = (I3inv6 ? Iwhnv6 : Qthnv6); +assign Dmfdt6 = (~(Myhnv6 & Uvhnv6)); +assign Snfdt6 = (~(P3inv6 & Tyhnv6)); +assign P3inv6 = (Nvhnv6 & Uvhnv6); +assign Uvhnv6 = (I3inv6 ? Qthnv6 : Iwhnv6); +assign Qthnv6 = (~(W3inv6 & D4inv6)); +assign W3inv6 = (K4inv6 & Yxhnv6); +assign Hpfdt6 = (~(Myhnv6 & Iwhnv6)); +assign Myhnv6 = (Ozhnv6 & Dxhnv6); +assign Dxhnv6 = (R4inv6 & C0inv6); +assign R4inv6 = (J0inv6 & Hzhnv6); +assign J0inv6 = (~(Y4inv6 & Yxhnv6)); +assign Ozhnv6 = (~(Pwhnv6 | F5inv6)); +assign Pwhnv6 = (M5inv6 & T5inv6); +assign M5inv6 = (Yxhnv6 & I3inv6); +assign Wqfdt6 = (~(A6inv6 & Tyhnv6)); +assign Tyhnv6 = (~(F5inv6 | Kxhnv6)); +assign Kxhnv6 = (H6inv6 & S1inv6); +assign H6inv6 = (T5inv6 & I3inv6); +assign F5inv6 = (~(Yxhnv6 | Fyhnv6)); +assign Fyhnv6 = (~(O6inv6 & V6inv6)); +assign O6inv6 = (K4inv6 & T5inv6); +assign T5inv6 = (!D4inv6); +assign A6inv6 = (Nvhnv6 & Iwhnv6); +assign Iwhnv6 = (~(C7inv6 & S1inv6)); +assign C7inv6 = (D4inv6 & K4inv6); +assign Nvhnv6 = (J7inv6 & C0inv6); +assign C0inv6 = (Q7inv6 & Z1inv6); +assign Z1inv6 = (~(L1inv6 & I3inv6)); +assign Q7inv6 = (~(L1inv6 & Yxhnv6)); +assign L1inv6 = (~(K4inv6 | D4inv6)); +assign J7inv6 = (G2inv6 & Hzhnv6); +assign Hzhnv6 = (~(B3inv6 & Yxhnv6)); +assign B3inv6 = (X7inv6 & D4inv6); +assign D4inv6 = (~(E8inv6 | L8inv6)); +assign E8inv6 = (Z8inv6 ? Ohe7z6[6] : S8inv6); +assign S8inv6 = (G9inv6 & N9inv6); +assign N9inv6 = (~(U9inv6 & Bainv6)); +assign G9inv6 = (~(Iainv6 & Painv6)); +assign X7inv6 = (V6inv6 & Wainv6); +assign G2inv6 = (~(Y4inv6 & S1inv6)); +assign S1inv6 = (!Yxhnv6); +assign Yxhnv6 = (~(Dbinv6 & Kbinv6)); +assign Kbinv6 = (~(Rbinv6 & Ybinv6)); +assign Ybinv6 = (~(U9inv6 & Fcinv6)); +assign Rbinv6 = (Mcinv6 & Tcinv6); +assign Mcinv6 = (~(Iainv6 & Bainv6)); +assign Dbinv6 = (~(Adinv6 & Z8inv6)); +assign Adinv6 = (Hdinv6 ? N0gdt6 : Ohe7z6[4]); +assign Y4inv6 = (Wainv6 & I3inv6); +assign I3inv6 = (!V6inv6); +assign V6inv6 = (~(Odinv6 | L8inv6)); +assign Odinv6 = (Z8inv6 ? Ohe7z6[5] : Vdinv6); +assign Vdinv6 = (Ceinv6 & Jeinv6); +assign Jeinv6 = (~(Iainv6 & Qeinv6)); +assign Ceinv6 = (~(U9inv6 & Xeinv6)); +assign Wainv6 = (!K4inv6); +assign K4inv6 = (~(Efinv6 | L8inv6)); +assign L8inv6 = (~(Lfinv6 | Z8inv6)); +assign Efinv6 = (Z8inv6 ? Ohe7z6[7] : Sfinv6); +assign Z8inv6 = (!Tcinv6); +assign Sfinv6 = (~(Zfinv6 & Gginv6)); +assign Zfinv6 = (~(Nginv6 & Zec7z6[9])); +assign Wagdt6 = (~(Uginv6 & Bhinv6)); +assign Bhinv6 = (~(O4gdt6 & Ihinv6)); +assign Lcgdt6 = (~(Phinv6 & Whinv6)); +assign Whinv6 = (~(D6gdt6 & Ihinv6)); +assign Zei7z6[3] = (Diinv6 & Zhbdt6); +assign Diinv6 = (Kiinv6 & Riinv6); +assign Zei7z6[2] = (Yiinv6 | Fjinv6); +assign Fjinv6 = (Pkbet6 & Mjinv6); +assign Mjinv6 = (~(Riinv6 & Tjinv6)); +assign Tjinv6 = (Akinv6 | K397z6); +assign Akinv6 = (!Kgbdt6); +assign Yiinv6 = (Riinv6 ? Okinv6 : Hkinv6); +assign Okinv6 = (~(Zhbdt6 & Kiinv6)); +assign Zei7z6[1] = (Riinv6 ? Clinv6 : Vkinv6); +assign Riinv6 = (~(Jlinv6 & Qlinv6)); +assign Jlinv6 = (Xlinv6 & Eminv6); +assign Clinv6 = (Zhbdt6 & Lminv6); +assign Lminv6 = (~(Sminv6 & Kiinv6)); +assign Kiinv6 = (Pkbet6 | Kgbdt6); +assign Sminv6 = (Pkbet6 ? Zminv6 : K397z6); +assign Zminv6 = (~(K397z6 & Kgbdt6)); +assign Vkinv6 = (~(Hkinv6 | Pkbet6)); +assign Hkinv6 = (K7e7z6[1] & Gninv6); +assign Nj2et6 = (Yfadt6 & Nninv6); +assign Nninv6 = (~(Uninv6 & Boinv6)); +assign Boinv6 = (~(Ioinv6 | Poinv6)); +assign Ioinv6 = (~(Woinv6 & Dpinv6)); +assign Uninv6 = (Kpinv6 & Rpinv6); +assign Rpinv6 = (Ypinv6 | Fqinv6); +assign Wqydt6 = (~(Mqinv6 & Lxydt6)); +assign Mqinv6 = (~(Tqinv6 & Ot97z6)); +assign Btydt6 = (~(Arinv6 & Lxydt6)); +assign Arinv6 = (~(Tqinv6 & Gt97z6)); +assign Gvydt6 = (~(Tqinv6 & Hrinv6)); +assign Qzydt6 = (Orinv6 & Po2et6); +assign Po2et6 = (~(Vrinv6 & Csinv6)); +assign Orinv6 = (~(Jsinv6 & Qsinv6)); +assign Jsinv6 = (M43et6 & K73et6); +assign V1zdt6 = (Xsinv6 & Aga7z6); +assign A4zdt6 = (Etinv6 & Aga7z6); +assign F6zdt6 = (~(Vrinv6 & Ltinv6)); +assign Ltinv6 = (~(O5a7z6 & Yga7z6)); +assign K8zdt6 = (Y4a7z6 & Lxydt6); +assign Pazdt6 = (~(Lxydt6 & Stinv6)); +assign Uczdt6 = (~(Qga7z6 & Ztinv6)); +assign Ztinv6 = (~(Qs97z6 & Lxydt6)); +assign Zezdt6 = (~(Qga7z6 & Guinv6)); +assign Guinv6 = (~(Ot97z6 & Lxydt6)); +assign Ehzdt6 = (Gt97z6 & Lxydt6); +assign Jjzdt6 = (~(Qg2nv6 & Nuinv6)); +assign Nuinv6 = (~(Ys97z6 & Lxydt6)); +assign Ypzdt6 = (~(Uuinv6 & Bvinv6)); +assign Dszdt6 = (Uuinv6 & Is97z6); +assign Iuzdt6 = (Uuinv6 & Qs97z6); +assign Nwzdt6 = (~(Ivinv6 & Bfo7v6)); +assign Ivinv6 = (~(Uuinv6 & Ot97z6)); +assign Syzdt6 = (~(Pvinv6 & Wvinv6)); +assign Wvinv6 = (~(Uuinv6 & Gt97z6)); +assign Pvinv6 = (~(Dwinv6 & Bfo7v6)); +assign X00et6 = (~(Uuinv6 & Hrinv6)); +assign C30et6 = (~(Kwinv6 & Rwinv6)); +assign Rwinv6 = (~(Hbo7v6 & O5a7z6)); +assign H50et6 = (Cubdt6 | Gr2et6); +assign M70et6 = (O5a7z6 & Y4a7z6); +assign R90et6 = (O5a7z6 & Is97z6); +assign Wb0et6 = (O5a7z6 & Qs97z6); +assign Li0et6 = (O5a7z6 & Ys97z6); +assign Qk0et6 = (Y4a7z6 & Aga7z6); +assign Vm0et6 = (Is97z6 & Aga7z6); +assign Ap0et6 = (~(Ywinv6 & Aga7z6)); +assign Fr0et6 = (~(Dpinv6 & Aga7z6)); +assign Kt0et6 = (~(Fxinv6 & Aga7z6)); +assign Pv0et6 = (~(Hrinv6 & Aga7z6)); +assign Ux0et6 = (Ys97z6 & Aga7z6); +assign Zz0et6 = (~(Csinv6 & Mxinv6)); +assign Mxinv6 = (~(Txinv6 & O5a7z6)); +assign E21et6 = (Gt97z6 & Aga7z6); +assign J41et6 = (Tnzdt6 & Y4a7z6); +assign O61et6 = (Tnzdt6 & Is97z6); +assign T81et6 = (~(Tnzdt6 & Ywinv6)); +assign Ya1et6 = (Tnzdt6 & Ot97z6); +assign Dd1et6 = (~(Tnzdt6 & Fxinv6)); +assign If1et6 = (~(Tnzdt6 & Hrinv6)); +assign Nh1et6 = (Ot97z6 & Aga7z6); +assign Sj1et6 = (Qs97z6 & Aga7z6); +assign Xl1et6 = (Be0et6 | Ayinv6); +assign Ayinv6 = (Hyinv6 & Ypinv6); +assign Hyinv6 = (!Oyinv6); +assign Be0et6 = (O5a7z6 & Ot97z6); +assign Co1et6 = (Gg0et6 | Vyinv6); +assign Vyinv6 = (Oyinv6 & Ypinv6); +assign Gg0et6 = (O5a7z6 & Gt97z6); +assign Hq1et6 = (~(O5a7z6 & Hrinv6)); +assign Ms1et6 = (Czinv6 & Y4a7z6); +assign Ru1et6 = (Czinv6 & Is97z6); +assign Ww1et6 = (Czinv6 & Qs97z6); +assign Bz1et6 = (Czinv6 ? Ot97z6 : Jzinv6); +assign Jzinv6 = (~(Oyinv6 & Qzinv6)); +assign G12et6 = (Czinv6 ? Gt97z6 : Xzinv6); +assign Xzinv6 = (Oyinv6 & Qzinv6); +assign Oyinv6 = (E0jnv6 & L0jnv6); +assign E0jnv6 = (B8cdt6 & S0jnv6); +assign L32et6 = (Czinv6 ? Ys97z6 : Qzinv6); +assign Czinv6 = (~(Z0jnv6 & Lxydt6)); +assign Z0jnv6 = (G1jnv6 | N1jnv6); +assign G1jnv6 = (~(U1jnv6 & B2jnv6)); +assign Qzinv6 = (~(L0jnv6 & I2jnv6)); +assign L0jnv6 = (P2jnv6 & B2jnv6); +assign Z72et6 = (~(Csinv6 & W2jnv6)); +assign Csinv6 = (!D3jnv6); +assign Ea2et6 = (~(Kwinv6 & W2jnv6)); +assign W2jnv6 = (~(Txinv6 & Gr2et6)); +assign Mkxdt6 = (K3jnv6 & R3jnv6); +assign R3jnv6 = (~(Qsinv6 & Qg2nv6)); +assign Smxdt6 = (~(Tnzdt6 & Bvinv6)); +assign Yoxdt6 = (~(Tnzdt6 & Stinv6)); +assign Stinv6 = (!Is97z6); +assign Erxdt6 = (Tnzdt6 & Qs97z6); +assign Ktxdt6 = (~(Tnzdt6 & Dpinv6)); +assign Qvxdt6 = (Tnzdt6 & Gt97z6); +assign Wxxdt6 = (Tnzdt6 & Ys97z6); +assign I2ydt6 = (~(Y3jnv6 & Xsinv6)); +assign O4ydt6 = (~(Bvinv6 & Qg2nv6)); +assign U6ydt6 = (Is97z6 & Qg2nv6); +assign A9ydt6 = (Qs97z6 & Qg2nv6); +assign Gbydt6 = (~(Dpinv6 & Qg2nv6)); +assign Dpinv6 = (!Ot97z6); +assign Mdydt6 = (~(Fxinv6 & Qg2nv6)); +assign Fxinv6 = (!Gt97z6); +assign Sfydt6 = (~(Hrinv6 & Qg2nv6)); +assign Hrinv6 = (!Ys97z6); +assign Yhydt6 = (~(Qg2nv6 & Y3jnv6)); +assign Ekydt6 = (~(Tqinv6 & Bvinv6)); +assign Bvinv6 = (!Y4a7z6); +assign Kmydt6 = (Tqinv6 & Is97z6); +assign Qoydt6 = (Tqinv6 & Qs97z6); +assign Fci7z6[1] = (~(F4jnv6 | Fci7z6[0])); +assign F4jnv6 = (M4jnv6 & T4jnv6); +assign Fci7z6[0] = (A5jnv6 & H5jnv6); +assign A5jnv6 = (O5jnv6 & V5jnv6); +assign O5jnv6 = (~(C6jnv6 & J6jnv6)); +assign Zkh7z6[9] = (~(Q6jnv6 & X6jnv6)); +assign X6jnv6 = (~(E7jnv6 & L7jnv6)); +assign Q6jnv6 = (S7jnv6 & Z7jnv6); +assign Z7jnv6 = (~(vis_pc_o[9] & G8jnv6)); +assign S7jnv6 = (N8jnv6 | U8jnv6); +assign Zkh7z6[8] = (~(B9jnv6 & I9jnv6)); +assign I9jnv6 = (~(E7jnv6 & P9jnv6)); +assign B9jnv6 = (W9jnv6 & Dajnv6); +assign Dajnv6 = (~(vis_pc_o[8] & G8jnv6)); +assign W9jnv6 = (N8jnv6 | Kajnv6); +assign Zkh7z6[7] = (~(Rajnv6 & Yajnv6)); +assign Yajnv6 = (~(E7jnv6 & Fbjnv6)); +assign Rajnv6 = (Mbjnv6 & Tbjnv6); +assign Tbjnv6 = (~(vis_pc_o[7] & G8jnv6)); +assign Mbjnv6 = (N8jnv6 | Acjnv6); +assign Zkh7z6[6] = (~(Hcjnv6 & Ocjnv6)); +assign Ocjnv6 = (~(E7jnv6 & Vcjnv6)); +assign Hcjnv6 = (Cdjnv6 & Jdjnv6); +assign Jdjnv6 = (~(vis_pc_o[6] & G8jnv6)); +assign Cdjnv6 = (N8jnv6 | Qdjnv6); +assign Zkh7z6[5] = (~(Xdjnv6 & Eejnv6)); +assign Eejnv6 = (~(E7jnv6 & Lejnv6)); +assign Xdjnv6 = (Sejnv6 & Zejnv6); +assign Zejnv6 = (~(vis_pc_o[5] & G8jnv6)); +assign Sejnv6 = (N8jnv6 | Gfjnv6); +assign Zkh7z6[4] = (~(Nfjnv6 & Ufjnv6)); +assign Ufjnv6 = (~(E7jnv6 & Bgjnv6)); +assign Nfjnv6 = (Igjnv6 & Pgjnv6); +assign Pgjnv6 = (~(vis_pc_o[4] & G8jnv6)); +assign Igjnv6 = (N8jnv6 | Wgjnv6); +assign Zkh7z6[3] = (~(Dhjnv6 & Khjnv6)); +assign Khjnv6 = (~(E7jnv6 & Rhjnv6)); +assign Dhjnv6 = (Yhjnv6 & Fijnv6); +assign Fijnv6 = (~(vis_pc_o[3] & G8jnv6)); +assign Yhjnv6 = (N8jnv6 | Mijnv6); +assign Zkh7z6[31] = (~(Tijnv6 & Ajjnv6)); +assign Ajjnv6 = (~(E7jnv6 & Hjjnv6)); +assign Tijnv6 = (Ojjnv6 & Vjjnv6); +assign Vjjnv6 = (~(vis_pc_o[31] & G8jnv6)); +assign Ojjnv6 = (N8jnv6 | Ckjnv6); +assign Zkh7z6[30] = (~(Jkjnv6 & Qkjnv6)); +assign Qkjnv6 = (~(E7jnv6 & Xkjnv6)); +assign Jkjnv6 = (Eljnv6 & Lljnv6); +assign Lljnv6 = (~(vis_pc_o[30] & G8jnv6)); +assign Eljnv6 = (N8jnv6 | Sljnv6); +assign Zkh7z6[2] = (~(Zljnv6 & Gmjnv6)); +assign Gmjnv6 = (~(E7jnv6 & Nmjnv6)); +assign Zljnv6 = (Umjnv6 & Bnjnv6); +assign Bnjnv6 = (~(vis_pc_o[2] & G8jnv6)); +assign Umjnv6 = (N8jnv6 | Injnv6); +assign Zkh7z6[29] = (~(Pnjnv6 & Wnjnv6)); +assign Wnjnv6 = (~(E7jnv6 & Dojnv6)); +assign Pnjnv6 = (Kojnv6 & Rojnv6); +assign Rojnv6 = (~(vis_pc_o[29] & G8jnv6)); +assign Kojnv6 = (N8jnv6 | Yojnv6); +assign Zkh7z6[28] = (~(Fpjnv6 & Mpjnv6)); +assign Mpjnv6 = (~(E7jnv6 & Tpjnv6)); +assign Fpjnv6 = (Aqjnv6 & Hqjnv6); +assign Hqjnv6 = (~(vis_pc_o[28] & G8jnv6)); +assign Aqjnv6 = (N8jnv6 | Oqjnv6); +assign Zkh7z6[27] = (~(Vqjnv6 & Crjnv6)); +assign Crjnv6 = (~(E7jnv6 & Jrjnv6)); +assign Vqjnv6 = (Qrjnv6 & Xrjnv6); +assign Xrjnv6 = (~(vis_pc_o[27] & G8jnv6)); +assign Qrjnv6 = (N8jnv6 | Esjnv6); +assign Zkh7z6[26] = (~(Lsjnv6 & Ssjnv6)); +assign Ssjnv6 = (~(E7jnv6 & Zsjnv6)); +assign Lsjnv6 = (Gtjnv6 & Ntjnv6); +assign Ntjnv6 = (~(vis_pc_o[26] & G8jnv6)); +assign Gtjnv6 = (N8jnv6 | Utjnv6); +assign Zkh7z6[25] = (~(Bujnv6 & Iujnv6)); +assign Iujnv6 = (~(E7jnv6 & Pujnv6)); +assign Bujnv6 = (Wujnv6 & Dvjnv6); +assign Dvjnv6 = (~(vis_pc_o[25] & G8jnv6)); +assign Wujnv6 = (N8jnv6 | Kvjnv6); +assign Zkh7z6[24] = (~(Rvjnv6 & Yvjnv6)); +assign Yvjnv6 = (~(E7jnv6 & Fwjnv6)); +assign Rvjnv6 = (Mwjnv6 & Twjnv6); +assign Twjnv6 = (~(vis_pc_o[24] & G8jnv6)); +assign Mwjnv6 = (N8jnv6 | Axjnv6); +assign Zkh7z6[23] = (~(Hxjnv6 & Oxjnv6)); +assign Oxjnv6 = (~(E7jnv6 & Vxjnv6)); +assign Hxjnv6 = (Cyjnv6 & Jyjnv6); +assign Jyjnv6 = (~(vis_pc_o[23] & G8jnv6)); +assign Cyjnv6 = (N8jnv6 | Qyjnv6); +assign Zkh7z6[22] = (~(Xyjnv6 & Ezjnv6)); +assign Ezjnv6 = (~(E7jnv6 & Lzjnv6)); +assign Xyjnv6 = (Szjnv6 & Zzjnv6); +assign Zzjnv6 = (~(vis_pc_o[22] & G8jnv6)); +assign Szjnv6 = (N8jnv6 | G0knv6); +assign Zkh7z6[21] = (~(N0knv6 & U0knv6)); +assign U0knv6 = (~(E7jnv6 & B1knv6)); +assign N0knv6 = (I1knv6 & P1knv6); +assign P1knv6 = (~(vis_pc_o[21] & G8jnv6)); +assign I1knv6 = (N8jnv6 | W1knv6); +assign Zkh7z6[20] = (~(D2knv6 & K2knv6)); +assign K2knv6 = (~(E7jnv6 & R2knv6)); +assign D2knv6 = (Y2knv6 & F3knv6); +assign F3knv6 = (~(vis_pc_o[20] & G8jnv6)); +assign Y2knv6 = (N8jnv6 | M3knv6); +assign Zkh7z6[1] = (~(T3knv6 & A4knv6)); +assign A4knv6 = (N8jnv6 | H4knv6); +assign T3knv6 = (O4knv6 & V4knv6); +assign V4knv6 = (~(C5knv6 & E7jnv6)); +assign C5knv6 = (~(J5knv6 | Q5knv6)); +assign O4knv6 = (~(vis_pc_o[1] & G8jnv6)); +assign Zkh7z6[19] = (~(X5knv6 & E6knv6)); +assign E6knv6 = (~(E7jnv6 & L6knv6)); +assign X5knv6 = (S6knv6 & Z6knv6); +assign Z6knv6 = (~(vis_pc_o[19] & G8jnv6)); +assign S6knv6 = (N8jnv6 | G7knv6); +assign Zkh7z6[18] = (~(N7knv6 & U7knv6)); +assign U7knv6 = (~(E7jnv6 & B8knv6)); +assign N7knv6 = (I8knv6 & P8knv6); +assign P8knv6 = (~(vis_pc_o[18] & G8jnv6)); +assign I8knv6 = (N8jnv6 | W8knv6); +assign Zkh7z6[17] = (~(D9knv6 & K9knv6)); +assign K9knv6 = (~(E7jnv6 & R9knv6)); +assign D9knv6 = (Y9knv6 & Faknv6); +assign Faknv6 = (~(vis_pc_o[17] & G8jnv6)); +assign Y9knv6 = (N8jnv6 | Maknv6); +assign Zkh7z6[16] = (~(Taknv6 & Abknv6)); +assign Abknv6 = (~(E7jnv6 & Hbknv6)); +assign Taknv6 = (Obknv6 & Vbknv6); +assign Vbknv6 = (~(vis_pc_o[16] & G8jnv6)); +assign Obknv6 = (N8jnv6 | Ccknv6); +assign Zkh7z6[15] = (~(Jcknv6 & Qcknv6)); +assign Qcknv6 = (~(E7jnv6 & Xcknv6)); +assign Jcknv6 = (Edknv6 & Ldknv6); +assign Ldknv6 = (~(vis_pc_o[15] & G8jnv6)); +assign Edknv6 = (N8jnv6 | Sdknv6); +assign Zkh7z6[14] = (~(Zdknv6 & Geknv6)); +assign Geknv6 = (~(E7jnv6 & Neknv6)); +assign Zdknv6 = (Ueknv6 & Bfknv6); +assign Bfknv6 = (~(vis_pc_o[14] & G8jnv6)); +assign Ueknv6 = (N8jnv6 | Ifknv6); +assign Zkh7z6[13] = (~(Pfknv6 & Wfknv6)); +assign Wfknv6 = (~(E7jnv6 & Dgknv6)); +assign Pfknv6 = (Kgknv6 & Rgknv6); +assign Rgknv6 = (~(vis_pc_o[13] & G8jnv6)); +assign Kgknv6 = (N8jnv6 | Ygknv6); +assign Zkh7z6[12] = (~(Fhknv6 & Mhknv6)); +assign Mhknv6 = (~(E7jnv6 & Thknv6)); +assign Fhknv6 = (Aiknv6 & Hiknv6); +assign Hiknv6 = (~(vis_pc_o[12] & G8jnv6)); +assign Aiknv6 = (N8jnv6 | Oiknv6); +assign Zkh7z6[11] = (~(Viknv6 & Cjknv6)); +assign Cjknv6 = (~(E7jnv6 & Jjknv6)); +assign Viknv6 = (Qjknv6 & Xjknv6); +assign Xjknv6 = (~(vis_pc_o[11] & G8jnv6)); +assign Qjknv6 = (~(Ekknv6 & Lkknv6)); +assign Zkh7z6[10] = (~(Skknv6 & Zkknv6)); +assign Zkknv6 = (~(E7jnv6 & Glknv6)); +assign Skknv6 = (Nlknv6 & Ulknv6); +assign Ulknv6 = (~(vis_pc_o[10] & G8jnv6)); +assign G8jnv6 = (~(Bmknv6 | E7jnv6)); +assign Nlknv6 = (~(Ekknv6 & Imknv6)); +assign Ekknv6 = (!N8jnv6); +assign Zkh7z6[0] = (!Pmknv6); +assign Vvh7z6[9] = (Wmknv6 ? Fth7z6[9] : Kxb7z6[9]); +assign Vvh7z6[8] = (Wmknv6 ? Fth7z6[8] : Kxb7z6[8]); +assign Vvh7z6[7] = (Wmknv6 ? Fth7z6[7] : Kxb7z6[7]); +assign Vvh7z6[6] = (Wmknv6 ? Fth7z6[6] : Kxb7z6[6]); +assign Vvh7z6[5] = (Wmknv6 ? Fth7z6[5] : Kxb7z6[5]); +assign Vvh7z6[4] = (Wmknv6 ? Fth7z6[4] : Kxb7z6[4]); +assign Vvh7z6[3] = (Wmknv6 ? Fth7z6[3] : Kxb7z6[3]); +assign Vvh7z6[31] = (Wmknv6 ? Fth7z6[31] : Kxb7z6[31]); +assign Vvh7z6[30] = (Wmknv6 ? Fth7z6[30] : Kxb7z6[30]); +assign Vvh7z6[2] = (Wmknv6 ? Fth7z6[2] : Kxb7z6[2]); +assign Vvh7z6[29] = (Wmknv6 ? Fth7z6[29] : Kxb7z6[29]); +assign Vvh7z6[28] = (Wmknv6 ? Fth7z6[28] : Kxb7z6[28]); +assign Vvh7z6[27] = (Wmknv6 ? Fth7z6[27] : Kxb7z6[27]); +assign Vvh7z6[26] = (Wmknv6 ? Fth7z6[26] : Kxb7z6[26]); +assign Vvh7z6[25] = (Wmknv6 ? Fth7z6[25] : Kxb7z6[25]); +assign Vvh7z6[24] = (Wmknv6 ? Fth7z6[24] : Kxb7z6[24]); +assign Vvh7z6[23] = (Wmknv6 ? Fth7z6[23] : Kxb7z6[23]); +assign Vvh7z6[22] = (Wmknv6 ? Fth7z6[22] : Kxb7z6[22]); +assign Vvh7z6[21] = (Wmknv6 ? Fth7z6[21] : Kxb7z6[21]); +assign Vvh7z6[20] = (Wmknv6 ? Fth7z6[20] : Kxb7z6[20]); +assign Vvh7z6[1] = (Wmknv6 ? Fth7z6[1] : Kxb7z6[1]); +assign Vvh7z6[19] = (Wmknv6 ? Fth7z6[19] : Kxb7z6[19]); +assign Vvh7z6[18] = (Wmknv6 ? Fth7z6[18] : Kxb7z6[18]); +assign Vvh7z6[17] = (Wmknv6 ? Fth7z6[17] : Kxb7z6[17]); +assign Vvh7z6[16] = (Wmknv6 ? Fth7z6[16] : Kxb7z6[16]); +assign Vvh7z6[15] = (Wmknv6 ? Fth7z6[15] : Kxb7z6[15]); +assign Vvh7z6[14] = (Wmknv6 ? Fth7z6[14] : Kxb7z6[14]); +assign Vvh7z6[13] = (Wmknv6 ? Fth7z6[13] : Kxb7z6[13]); +assign Vvh7z6[12] = (Wmknv6 ? Fth7z6[12] : Kxb7z6[12]); +assign Vvh7z6[11] = (Wmknv6 ? Fth7z6[11] : Kxb7z6[11]); +assign Vvh7z6[10] = (Wmknv6 ? Fth7z6[10] : Kxb7z6[10]); +assign Vvh7z6[0] = (Wmknv6 ? Fth7z6[0] : Kxb7z6[0]); +assign Ed5et6 = (~(Dnknv6 ^ Ueo7v6)); +assign Dnknv6 = (Knknv6 & Rnknv6); +assign Rnknv6 = (~(Ynknv6 & E3c7z6[0])); +assign Knknv6 = (~(Foknv6 & V1c7z6[0])); +assign Nf5et6 = (~(Moknv6 ^ Ueo7v6)); +assign Moknv6 = (Toknv6 & Apknv6); +assign Apknv6 = (~(Foknv6 & V1c7z6[1])); +assign Toknv6 = (Hpknv6 & Opknv6); +assign Opknv6 = (~(Ynknv6 & E3c7z6[1])); +assign Hpknv6 = (~(Vpknv6 & Fth7z6[0])); +assign Wh5et6 = (~(Cqknv6 ^ Ueo7v6)); +assign Cqknv6 = (Jqknv6 & Qqknv6); +assign Qqknv6 = (Xqknv6 & Erknv6); +assign Erknv6 = (~(Ynknv6 & E3c7z6[2])); +assign Xqknv6 = (Lrknv6 & Srknv6); +assign Lrknv6 = (~(Foknv6 & V1c7z6[2])); +assign Jqknv6 = (Zrknv6 & Gsknv6); +assign Gsknv6 = (~(Vpknv6 & Fth7z6[1])); +assign Fk5et6 = (~(Nsknv6 ^ Ueo7v6)); +assign Nsknv6 = (Usknv6 & Btknv6); +assign Btknv6 = (Itknv6 & Ptknv6); +assign Ptknv6 = (~(Ynknv6 & E3c7z6[3])); +assign Usknv6 = (Wtknv6 & Duknv6); +assign Duknv6 = (~(Foknv6 & V1c7z6[3])); +assign Wtknv6 = (~(Vpknv6 & Fth7z6[2])); +assign Om5et6 = (~(Kuknv6 ^ Ueo7v6)); +assign Kuknv6 = (Ruknv6 & Yuknv6); +assign Yuknv6 = (Fvknv6 & Mvknv6); +assign Mvknv6 = (~(Ynknv6 & E3c7z6[4])); +assign Ruknv6 = (Tvknv6 & Awknv6); +assign Awknv6 = (~(Foknv6 & V1c7z6[4])); +assign Tvknv6 = (~(Vpknv6 & Fth7z6[3])); +assign Xo5et6 = (~(Hwknv6 ^ Ueo7v6)); +assign Hwknv6 = (Owknv6 & Vwknv6); +assign Vwknv6 = (Cxknv6 & Jxknv6); +assign Jxknv6 = (Qxknv6 & Xxknv6); +assign Cxknv6 = (~(Eyknv6 | Lyknv6)); +assign Owknv6 = (Syknv6 & Zyknv6); +assign Zyknv6 = (Gzknv6 & Nzknv6); +assign Gzknv6 = (~(Vpknv6 & Fth7z6[4])); +assign Syknv6 = (Uzknv6 & B0lnv6); +assign B0lnv6 = (~(Foknv6 & V1c7z6[5])); +assign Uzknv6 = (~(Ynknv6 & Fhc7z6[5])); +assign Gr5et6 = (~(I0lnv6 ^ Ueo7v6)); +assign I0lnv6 = (P0lnv6 & W0lnv6); +assign W0lnv6 = (D1lnv6 & K1lnv6); +assign K1lnv6 = (~(Foknv6 & V1c7z6[6])); +assign P0lnv6 = (R1lnv6 & Y1lnv6); +assign Y1lnv6 = (~(Ynknv6 & Fhc7z6[6])); +assign R1lnv6 = (~(Vpknv6 & Fth7z6[5])); +assign Pt5et6 = (~(F2lnv6 ^ Ueo7v6)); +assign F2lnv6 = (M2lnv6 & T2lnv6); +assign T2lnv6 = (A3lnv6 & H3lnv6); +assign H3lnv6 = (~(Foknv6 & V1c7z6[7])); +assign M2lnv6 = (O3lnv6 & V3lnv6); +assign V3lnv6 = (~(Ynknv6 & Fhc7z6[7])); +assign O3lnv6 = (~(Vpknv6 & Fth7z6[6])); +assign Yv5et6 = (~(C4lnv6 ^ Ueo7v6)); +assign C4lnv6 = (J4lnv6 & Q4lnv6); +assign Q4lnv6 = (~(Ynknv6 & Fhc7z6[8])); +assign J4lnv6 = (X4lnv6 & E5lnv6); +assign E5lnv6 = (~(Foknv6 & V1c7z6[8])); +assign X4lnv6 = (~(Vpknv6 & Fth7z6[7])); +assign Hy5et6 = (~(L5lnv6 ^ Ueo7v6)); +assign L5lnv6 = (S5lnv6 & Z5lnv6); +assign Z5lnv6 = (~(Ynknv6 & Fhc7z6[9])); +assign S5lnv6 = (G6lnv6 & N6lnv6); +assign N6lnv6 = (~(Foknv6 & V1c7z6[9])); +assign G6lnv6 = (~(Vpknv6 & Fth7z6[8])); +assign Q06et6 = (~(U6lnv6 ^ Ueo7v6)); +assign U6lnv6 = (B7lnv6 & I7lnv6); +assign I7lnv6 = (~(Ynknv6 & Fhc7z6[10])); +assign B7lnv6 = (P7lnv6 & W7lnv6); +assign W7lnv6 = (~(Foknv6 & V1c7z6[10])); +assign P7lnv6 = (~(Vpknv6 & Fth7z6[9])); +assign Z26et6 = (~(D8lnv6 ^ Ueo7v6)); +assign D8lnv6 = (K8lnv6 & R8lnv6); +assign R8lnv6 = (~(Ynknv6 & Fhc7z6[11])); +assign K8lnv6 = (Y8lnv6 & F9lnv6); +assign F9lnv6 = (~(Foknv6 & V1c7z6[11])); +assign Y8lnv6 = (~(Vpknv6 & Fth7z6[10])); +assign I56et6 = (~(M9lnv6 ^ Ueo7v6)); +assign M9lnv6 = (T9lnv6 & Aalnv6); +assign Aalnv6 = (~(Ynknv6 & Fhc7z6[12])); +assign T9lnv6 = (Halnv6 & Oalnv6); +assign Oalnv6 = (~(Foknv6 & V1c7z6[12])); +assign Halnv6 = (~(Vpknv6 & Fth7z6[11])); +assign R76et6 = (~(Valnv6 ^ Ueo7v6)); +assign Valnv6 = (Cblnv6 & Jblnv6); +assign Jblnv6 = (~(Ynknv6 & Fhc7z6[13])); +assign Cblnv6 = (Qblnv6 & Xblnv6); +assign Xblnv6 = (~(Foknv6 & V1c7z6[13])); +assign Qblnv6 = (~(Vpknv6 & Fth7z6[12])); +assign Aa6et6 = (~(Eclnv6 ^ Ueo7v6)); +assign Eclnv6 = (Lclnv6 & Sclnv6); +assign Sclnv6 = (~(Ynknv6 & Fhc7z6[14])); +assign Lclnv6 = (Zclnv6 & Gdlnv6); +assign Gdlnv6 = (~(Foknv6 & V1c7z6[14])); +assign Zclnv6 = (~(Vpknv6 & Fth7z6[13])); +assign Jc6et6 = (~(Ndlnv6 ^ Ueo7v6)); +assign Ndlnv6 = (Udlnv6 & Belnv6); +assign Belnv6 = (~(Ynknv6 & Fhc7z6[15])); +assign Udlnv6 = (Ielnv6 & Pelnv6); +assign Pelnv6 = (~(Foknv6 & V1c7z6[15])); +assign Ielnv6 = (~(Vpknv6 & Fth7z6[14])); +assign Se6et6 = (~(Welnv6 ^ Ueo7v6)); +assign Welnv6 = (Dflnv6 & Kflnv6); +assign Kflnv6 = (~(Ynknv6 & Fhc7z6[16])); +assign Dflnv6 = (Rflnv6 & Yflnv6); +assign Yflnv6 = (~(Foknv6 & V1c7z6[16])); +assign Rflnv6 = (~(Vpknv6 & Fth7z6[15])); +assign Bh6et6 = (~(Fglnv6 ^ Ueo7v6)); +assign Fglnv6 = (Mglnv6 & Tglnv6); +assign Tglnv6 = (~(Foknv6 & V1c7z6[17])); +assign Mglnv6 = (~(Ynknv6 & Fhc7z6[17])); +assign Kj6et6 = (~(Ahlnv6 ^ Ueo7v6)); +assign Ahlnv6 = (Hhlnv6 & Ohlnv6); +assign Ohlnv6 = (~(Foknv6 & V1c7z6[18])); +assign Hhlnv6 = (~(Ynknv6 & Fhc7z6[18])); +assign Tl6et6 = (~(Vhlnv6 ^ Ueo7v6)); +assign Vhlnv6 = (Cilnv6 & Jilnv6); +assign Jilnv6 = (~(Foknv6 & V1c7z6[19])); +assign Cilnv6 = (~(Ynknv6 & Fhc7z6[19])); +assign Co6et6 = (~(Qilnv6 ^ Ueo7v6)); +assign Qilnv6 = (Xilnv6 & Ejlnv6); +assign Ejlnv6 = (~(Foknv6 & V1c7z6[20])); +assign Xilnv6 = (~(Ynknv6 & Fhc7z6[20])); +assign Lq6et6 = (~(Ljlnv6 ^ Ueo7v6)); +assign Ljlnv6 = (Sjlnv6 & Zjlnv6); +assign Zjlnv6 = (~(Foknv6 & V1c7z6[21])); +assign Sjlnv6 = (~(Ynknv6 & Fhc7z6[21])); +assign Us6et6 = (~(Gklnv6 ^ Ueo7v6)); +assign Gklnv6 = (Nklnv6 & Uklnv6); +assign Uklnv6 = (~(Foknv6 & V1c7z6[22])); +assign Nklnv6 = (~(Ynknv6 & Fhc7z6[22])); +assign Dv6et6 = (~(Bllnv6 ^ Ueo7v6)); +assign Bllnv6 = (Illnv6 & Pllnv6); +assign Pllnv6 = (~(Foknv6 & V1c7z6[23])); +assign Illnv6 = (~(Ynknv6 & Fhc7z6[23])); +assign Mx6et6 = (~(Wllnv6 ^ Ueo7v6)); +assign Wllnv6 = (Dmlnv6 & Kmlnv6); +assign Kmlnv6 = (~(Foknv6 & V1c7z6[24])); +assign Dmlnv6 = (~(Ynknv6 & Fhc7z6[24])); +assign Vz6et6 = (~(Rmlnv6 ^ Ueo7v6)); +assign Rmlnv6 = (Ymlnv6 & Fnlnv6); +assign Fnlnv6 = (~(Foknv6 & V1c7z6[25])); +assign Ymlnv6 = (~(Ynknv6 & Fhc7z6[25])); +assign E27et6 = (~(Mnlnv6 ^ Ueo7v6)); +assign Mnlnv6 = (Tnlnv6 & Aolnv6); +assign Aolnv6 = (~(Foknv6 & V1c7z6[26])); +assign Tnlnv6 = (~(Ynknv6 & Fhc7z6[26])); +assign N47et6 = (~(Holnv6 ^ Ueo7v6)); +assign Holnv6 = (Oolnv6 & Volnv6); +assign Volnv6 = (~(Foknv6 & V1c7z6[27])); +assign Oolnv6 = (~(Ynknv6 & Fhc7z6[27])); +assign W67et6 = (~(Cplnv6 ^ Ueo7v6)); +assign Cplnv6 = (Jplnv6 & Qplnv6); +assign Qplnv6 = (~(Foknv6 & V1c7z6[28])); +assign Jplnv6 = (~(Ynknv6 & Fhc7z6[28])); +assign F97et6 = (Xplnv6 ^ Eqlnv6); +assign Xplnv6 = (Lqlnv6 & Sqlnv6); +assign Sqlnv6 = (~(Foknv6 & V1c7z6[29])); +assign Lqlnv6 = (~(Ynknv6 & Fhc7z6[29])); +assign Ob7et6 = (Zqlnv6 ^ Eqlnv6); +assign Zqlnv6 = (Grlnv6 & Nrlnv6); +assign Nrlnv6 = (~(Foknv6 & V1c7z6[30])); +assign Grlnv6 = (~(Ynknv6 & Fhc7z6[30])); +assign Xd7et6 = (Urlnv6 ^ Eqlnv6); +assign Urlnv6 = (Bslnv6 & Islnv6); +assign Islnv6 = (~(Foknv6 & V1c7z6[31])); +assign Foknv6 = (T3cdt6 & Pslnv6); +assign Pslnv6 = (!Wslnv6); +assign Bslnv6 = (~(Ynknv6 & Fhc7z6[31])); +assign Ynknv6 = (~(Wslnv6 | T3cdt6)); +assign Wslnv6 = (Dtlnv6 & Ktlnv6); +assign Ktlnv6 = (~(Rtlnv6 & Ytlnv6)); +assign Rtlnv6 = (Fulnv6 & Dwb7z6[4]); +assign Dtlnv6 = (Mulnv6 & Tulnv6); +assign Zyaet6 = (~(Avlnv6 ^ Hvlnv6)); +assign Avlnv6 = (~(Zrknv6 & Ovlnv6)); +assign Ovlnv6 = (~(V1c7z6[2] & Vvlnv6)); +assign Zrknv6 = (~(Q1h7z6[0] & Cwlnv6)); +assign I1bet6 = (~(Jwlnv6 ^ Hvlnv6)); +assign Jwlnv6 = (~(Itknv6 & Qwlnv6)); +assign Qwlnv6 = (~(V1c7z6[3] & Vvlnv6)); +assign Itknv6 = (~(Q1h7z6[1] & Cwlnv6)); +assign R3bet6 = (~(Xwlnv6 ^ Hvlnv6)); +assign Xwlnv6 = (~(Fvknv6 & Exlnv6)); +assign Exlnv6 = (~(V1c7z6[4] & Vvlnv6)); +assign Fvknv6 = (~(Q1h7z6[2] & Cwlnv6)); +assign A6bet6 = (~(Lxlnv6 ^ Hvlnv6)); +assign Lxlnv6 = (~(Nzknv6 & Sxlnv6)); +assign Sxlnv6 = (~(V1c7z6[5] & Vvlnv6)); +assign Nzknv6 = (~(Q1h7z6[3] & Cwlnv6)); +assign J8bet6 = (~(Zxlnv6 ^ Hvlnv6)); +assign Hvlnv6 = (!Cfa7z6); +assign Zxlnv6 = (~(D1lnv6 & Gylnv6)); +assign Gylnv6 = (~(V1c7z6[6] & Vvlnv6)); +assign D1lnv6 = (~(Q1h7z6[4] & Cwlnv6)); +assign Sabet6 = (Nylnv6 ^ Cfa7z6); +assign Nylnv6 = (~(A3lnv6 & Uylnv6)); +assign Uylnv6 = (~(V1c7z6[7] & Vvlnv6)); +assign A3lnv6 = (~(Q1h7z6[5] & Cwlnv6)); +assign Bdbet6 = (Cfa7z6 ^ Bzlnv6); +assign Bzlnv6 = (V1c7z6[8] & Vvlnv6); +assign Kfbet6 = (Cfa7z6 ^ Izlnv6); +assign Izlnv6 = (V1c7z6[9] & Vvlnv6); +assign U3d7z6[5] = (~(Pzlnv6 & Wzlnv6)); +assign Wzlnv6 = (~(D0mnv6 & Bfd7z6[5])); +assign Pzlnv6 = (K0mnv6 | R0mnv6); +assign U3d7z6[4] = (~(Y0mnv6 & F1mnv6)); +assign F1mnv6 = (~(M1mnv6 & T1mnv6)); +assign Y0mnv6 = (A2mnv6 & H2mnv6); +assign A2mnv6 = (~(Bfd7z6[4] & D0mnv6)); +assign U3d7z6[3] = (~(O2mnv6 & V2mnv6)); +assign V2mnv6 = (~(D0mnv6 & Bfd7z6[3])); +assign O2mnv6 = (C3mnv6 | R0mnv6); +assign U3d7z6[2] = (~(J3mnv6 & Q3mnv6)); +assign Q3mnv6 = (~(Bfd7z6[2] & D0mnv6)); +assign J3mnv6 = (X3mnv6 | R0mnv6); +assign U3d7z6[1] = (~(E4mnv6 & L4mnv6)); +assign L4mnv6 = (R0mnv6 | S4mnv6); +assign R0mnv6 = (!T1mnv6); +assign E4mnv6 = (Z4mnv6 & G5mnv6); +assign G5mnv6 = (~(N5mnv6 & U5mnv6)); +assign N5mnv6 = (B6mnv6 & H2mnv6); +assign Z4mnv6 = (~(D0mnv6 & Bfd7z6[1])); +assign U3d7z6[0] = (~(I6mnv6 & P6mnv6)); +assign P6mnv6 = (~(T1mnv6 & W6mnv6)); +assign T1mnv6 = (~(D7mnv6 | Mao7v6)); +assign I6mnv6 = (K7mnv6 & R7mnv6); +assign R7mnv6 = (~(Y7mnv6 & F8mnv6)); +assign Y7mnv6 = (U5mnv6 & H2mnv6); +assign K7mnv6 = (~(Bfd7z6[0] & D0mnv6)); +assign D0mnv6 = (M8mnv6 & H2mnv6); +assign Zgddt6 = (T8mnv6 & A9mnv6); +assign T8mnv6 = (~(H9mnv6 & O9mnv6)); +assign O9mnv6 = (~(V9mnv6 & Lfinv6)); +assign Lfinv6 = (~(U9inv6 & Iainv6)); +assign Iainv6 = (!Nginv6); +assign H9mnv6 = (~(Camnv6 & Jamnv6)); +assign Yxd7z6[1] = (Yxd7z6[0] & A4a7z6); +assign S0e7z6[5] = (Yxd7z6[0] & Zec7z6[9]); +assign S0e7z6[4] = (Yxd7z6[0] & Zec7z6[7]); +assign S0e7z6[3] = (Yxd7z6[0] & Zec7z6[6]); +assign S0e7z6[2] = (Yxd7z6[0] & Zec7z6[5]); +assign S0e7z6[1] = (Yxd7z6[0] & Zec7z6[4]); +assign S0e7z6[0] = (Yxd7z6[0] & Zec7z6[3]); +assign Pcg7z6[9] = (Qamnv6 ? Ebwdt6 : Qptdt6); +assign Pcg7z6[8] = (Qamnv6 ? Bewdt6 : Ostdt6); +assign Pcg7z6[7] = (Qamnv6 ? Ygwdt6 : Mvtdt6); +assign Pcg7z6[6] = (Qamnv6 ? Vjwdt6 : Kytdt6); +assign Pcg7z6[5] = (Qamnv6 ? Smwdt6 : I1udt6); +assign Pcg7z6[4] = (Qamnv6 ? Ppwdt6 : G4udt6); +assign Pcg7z6[3] = (Qamnv6 ? Mswdt6 : E7udt6); +assign Pcg7z6[30] = (Qamnv6 ? Uludt6 : G0sdt6); +assign Pcg7z6[2] = (Qamnv6 ? Jvwdt6 : Caudt6); +assign Pcg7z6[29] = (Qamnv6 ? Soudt6 : E3sdt6); +assign Pcg7z6[28] = (Qamnv6 ? Qrudt6 : C6sdt6); +assign Pcg7z6[27] = (Qamnv6 ? Ouudt6 : A9sdt6); +assign Pcg7z6[26] = (Qamnv6 ? Mxudt6 : Ybsdt6); +assign Pcg7z6[25] = (Qamnv6 ? K0vdt6 : Wesdt6); +assign Pcg7z6[24] = (Qamnv6 ? I3vdt6 : Uhsdt6); +assign Pcg7z6[23] = (Qamnv6 ? G6vdt6 : Sksdt6); +assign Pcg7z6[22] = (Qamnv6 ? E9vdt6 : Qnsdt6); +assign Pcg7z6[21] = (Qamnv6 ? Ccvdt6 : Oqsdt6); +assign Pcg7z6[20] = (Qamnv6 ? Afvdt6 : Mtsdt6); +assign Pcg7z6[1] = (Qamnv6 ? Gywdt6 : Adudt6); +assign Pcg7z6[19] = (Qamnv6 ? Yhvdt6 : Kwsdt6); +assign Pcg7z6[18] = (Qamnv6 ? Wkvdt6 : Izsdt6); +assign Pcg7z6[17] = (Qamnv6 ? Unvdt6 : G2tdt6); +assign Pcg7z6[16] = (Qamnv6 ? Sqvdt6 : E5tdt6); +assign Pcg7z6[15] = (Qamnv6 ? Qtvdt6 : C8tdt6); +assign Pcg7z6[14] = (Qamnv6 ? Owvdt6 : Abtdt6); +assign Pcg7z6[13] = (Qamnv6 ? Mzvdt6 : Ydtdt6); +assign Pcg7z6[12] = (Qamnv6 ? K2wdt6 : Wgtdt6); +assign Pcg7z6[11] = (Qamnv6 ? I5wdt6 : Ujtdt6); +assign Pcg7z6[10] = (Qamnv6 ? G8wdt6 : Smtdt6); +assign Pcg7z6[0] = (Qamnv6 ? D1xdt6 : Yfudt6); +assign Jjg7z6[9] = (~(Xamnv6 ^ Alf7z6[9])); +assign Jjg7z6[8] = (~(Xamnv6 ^ Alf7z6[8])); +assign Jjg7z6[7] = (~(Xamnv6 ^ Alf7z6[7])); +assign Jjg7z6[6] = (~(Xamnv6 ^ Alf7z6[6])); +assign Jjg7z6[5] = (~(Xamnv6 ^ Alf7z6[5])); +assign Jjg7z6[4] = (~(Xamnv6 ^ Alf7z6[4])); +assign Jjg7z6[3] = (~(Xamnv6 ^ Alf7z6[3])); +assign Jjg7z6[32] = (~(Xamnv6 ^ A4xdt6)); +assign A4xdt6 = (Elgdt6 & Alf7z6[31]); +assign Jjg7z6[31] = (Xamnv6 ^ Ebmnv6); +assign Jjg7z6[30] = (Wvl8v6 ^ Alf7z6[30]); +assign Jjg7z6[2] = (~(Xamnv6 ^ Alf7z6[2])); +assign Jjg7z6[29] = (~(Xamnv6 ^ Alf7z6[29])); +assign Jjg7z6[28] = (~(Xamnv6 ^ Alf7z6[28])); +assign Jjg7z6[27] = (~(Xamnv6 ^ Alf7z6[27])); +assign Jjg7z6[26] = (~(Xamnv6 ^ Alf7z6[26])); +assign Jjg7z6[25] = (~(Xamnv6 ^ Alf7z6[25])); +assign Jjg7z6[24] = (~(Xamnv6 ^ Alf7z6[24])); +assign Jjg7z6[23] = (~(Xamnv6 ^ Alf7z6[23])); +assign Jjg7z6[22] = (~(Xamnv6 ^ Alf7z6[22])); +assign Jjg7z6[21] = (~(Xamnv6 ^ Alf7z6[21])); +assign Jjg7z6[20] = (~(Xamnv6 ^ Alf7z6[20])); +assign Jjg7z6[1] = (~(Xamnv6 ^ Alf7z6[1])); +assign Jjg7z6[19] = (~(Xamnv6 ^ Alf7z6[19])); +assign Jjg7z6[18] = (~(Xamnv6 ^ Alf7z6[18])); +assign Jjg7z6[17] = (~(Xamnv6 ^ Alf7z6[17])); +assign Jjg7z6[16] = (Wvl8v6 ^ Alf7z6[16]); +assign Jjg7z6[15] = (~(Xamnv6 ^ Alf7z6[15])); +assign Jjg7z6[14] = (Wvl8v6 ^ Alf7z6[14]); +assign Jjg7z6[13] = (Wvl8v6 ^ Alf7z6[13]); +assign Jjg7z6[12] = (~(Xamnv6 ^ Alf7z6[12])); +assign Jjg7z6[11] = (~(Xamnv6 ^ Alf7z6[11])); +assign Xamnv6 = (!Wvl8v6); +assign Jjg7z6[10] = (Wvl8v6 ^ Alf7z6[10]); +assign Dqg7z6[9] = (~(Alf7z6[8] ^ Lbmnv6)); +assign Dqg7z6[8] = (~(Alf7z6[7] ^ Lbmnv6)); +assign Dqg7z6[7] = (~(Alf7z6[6] ^ Lbmnv6)); +assign Dqg7z6[6] = (~(Alf7z6[5] ^ Lbmnv6)); +assign Dqg7z6[5] = (~(Alf7z6[4] ^ Lbmnv6)); +assign Dqg7z6[4] = (~(Alf7z6[3] ^ Lbmnv6)); +assign Dqg7z6[3] = (~(Alf7z6[2] ^ Lbmnv6)); +assign Dqg7z6[32] = (Ebmnv6 ^ Lbmnv6); +assign Dqg7z6[31] = (Alf7z6[30] ^ Geo7v6); +assign Dqg7z6[30] = (~(Alf7z6[29] ^ Lbmnv6)); +assign Dqg7z6[2] = (~(Alf7z6[1] ^ Lbmnv6)); +assign Dqg7z6[29] = (~(Alf7z6[28] ^ Lbmnv6)); +assign Dqg7z6[28] = (~(Alf7z6[27] ^ Lbmnv6)); +assign Dqg7z6[27] = (~(Alf7z6[26] ^ Lbmnv6)); +assign Dqg7z6[26] = (~(Alf7z6[25] ^ Lbmnv6)); +assign Dqg7z6[25] = (~(Alf7z6[24] ^ Lbmnv6)); +assign Dqg7z6[24] = (~(Alf7z6[23] ^ Lbmnv6)); +assign Dqg7z6[23] = (~(Alf7z6[22] ^ Lbmnv6)); +assign Dqg7z6[22] = (~(Alf7z6[21] ^ Lbmnv6)); +assign Dqg7z6[21] = (~(Alf7z6[20] ^ Lbmnv6)); +assign Dqg7z6[20] = (~(Alf7z6[19] ^ Lbmnv6)); +assign Dqg7z6[1] = (Alf7z6[0] ^ Geo7v6); +assign Dqg7z6[19] = (~(Alf7z6[18] ^ Lbmnv6)); +assign Dqg7z6[18] = (~(Alf7z6[17] ^ Lbmnv6)); +assign Dqg7z6[17] = (Alf7z6[16] ^ Geo7v6); +assign Dqg7z6[16] = (~(Alf7z6[15] ^ Lbmnv6)); +assign Dqg7z6[15] = (Alf7z6[14] ^ Geo7v6); +assign Dqg7z6[14] = (Alf7z6[13] ^ Geo7v6); +assign Dqg7z6[13] = (~(Alf7z6[12] ^ Lbmnv6)); +assign Lbmnv6 = (!Geo7v6); +assign Dqg7z6[12] = (Alf7z6[11] ^ Geo7v6); +assign Dqg7z6[11] = (Alf7z6[10] ^ Geo7v6); +assign Dqg7z6[10] = (Alf7z6[9] ^ Geo7v6); +assign Ssf7z6[9] = (Alf7z6[25] & Sbmnv6); +assign Ssf7z6[8] = (Alf7z6[24] & Sbmnv6); +assign Ssf7z6[7] = (Alf7z6[23] & Sbmnv6); +assign Ssf7z6[6] = (Alf7z6[22] & Sbmnv6); +assign Ssf7z6[5] = (Alf7z6[21] & Sbmnv6); +assign Ssf7z6[4] = (Alf7z6[20] & Sbmnv6); +assign Ssf7z6[3] = (Alf7z6[19] & Sbmnv6); +assign Ssf7z6[2] = (Alf7z6[18] & Sbmnv6); +assign Ssf7z6[1] = (Alf7z6[17] & Sbmnv6); +assign Ssf7z6[15] = (Alf7z6[31] & Sbmnv6); +assign Ssf7z6[14] = (Alf7z6[30] & Sbmnv6); +assign Ssf7z6[13] = (Alf7z6[29] & Sbmnv6); +assign Ssf7z6[12] = (Alf7z6[28] & Sbmnv6); +assign Ssf7z6[11] = (Alf7z6[27] & Sbmnv6); +assign Ssf7z6[10] = (Alf7z6[26] & Sbmnv6); +assign Ssf7z6[0] = (Alf7z6[16] & Sbmnv6); +assign Ivf7z6[9] = (Yxf7z6[25] & Zbmnv6); +assign Ivf7z6[8] = (Yxf7z6[24] & Zbmnv6); +assign Ivf7z6[7] = (Yxf7z6[23] & Zbmnv6); +assign Ivf7z6[6] = (Yxf7z6[22] & Zbmnv6); +assign Ivf7z6[5] = (Yxf7z6[21] & Zbmnv6); +assign Ivf7z6[4] = (Yxf7z6[20] & Zbmnv6); +assign Ivf7z6[3] = (Yxf7z6[19] & Zbmnv6); +assign Ivf7z6[2] = (Yxf7z6[18] & Zbmnv6); +assign Ivf7z6[1] = (Yxf7z6[17] & Zbmnv6); +assign Ivf7z6[15] = (Yxf7z6[31] & Zbmnv6); +assign Ivf7z6[14] = (Yxf7z6[30] & Zbmnv6); +assign Ivf7z6[13] = (Yxf7z6[29] & Zbmnv6); +assign Ivf7z6[12] = (Yxf7z6[28] & Zbmnv6); +assign Ivf7z6[11] = (Yxf7z6[27] & Zbmnv6); +assign Ivf7z6[10] = (Yxf7z6[26] & Zbmnv6); +assign Ivf7z6[0] = (Yxf7z6[16] & Zbmnv6); +assign Hqidt6 = (L0g7z6[32] & Sbmnv6); +assign Sbmnv6 = (Zbmnv6 | Gcmnv6); +assign V7g7z6[9] = (~(Ncmnv6 & Ucmnv6)); +assign Ucmnv6 = (~(S7f7z6[4] & Fhc7z6[25])); +assign Ncmnv6 = (~(S7f7z6[3] & Fhc7z6[9])); +assign V7g7z6[8] = (~(Bdmnv6 & Idmnv6)); +assign Idmnv6 = (~(S7f7z6[4] & Fhc7z6[24])); +assign Bdmnv6 = (~(S7f7z6[3] & Fhc7z6[8])); +assign V7g7z6[7] = (~(Pdmnv6 & Wdmnv6)); +assign Wdmnv6 = (~(S7f7z6[4] & Fhc7z6[23])); +assign Pdmnv6 = (~(S7f7z6[3] & Fhc7z6[7])); +assign V7g7z6[6] = (~(Demnv6 & Kemnv6)); +assign Kemnv6 = (~(S7f7z6[4] & Fhc7z6[22])); +assign Demnv6 = (~(S7f7z6[3] & Fhc7z6[6])); +assign V7g7z6[5] = (~(Remnv6 & Yemnv6)); +assign Yemnv6 = (~(S7f7z6[4] & Fhc7z6[21])); +assign Remnv6 = (~(S7f7z6[3] & Fhc7z6[5])); +assign V7g7z6[4] = (~(Ffmnv6 & Mfmnv6)); +assign Mfmnv6 = (~(S7f7z6[3] & E3c7z6[4])); +assign Ffmnv6 = (~(S7f7z6[4] & Fhc7z6[20])); +assign V7g7z6[3] = (~(Tfmnv6 & Agmnv6)); +assign Agmnv6 = (~(S7f7z6[3] & E3c7z6[3])); +assign Tfmnv6 = (~(S7f7z6[4] & Fhc7z6[19])); +assign V7g7z6[31] = (S7f7z6[5] & Fhc7z6[31]); +assign V7g7z6[30] = (S7f7z6[5] & Fhc7z6[30]); +assign V7g7z6[2] = (~(Hgmnv6 & Ogmnv6)); +assign Ogmnv6 = (~(S7f7z6[3] & E3c7z6[2])); +assign Hgmnv6 = (~(S7f7z6[4] & Fhc7z6[18])); +assign V7g7z6[29] = (S7f7z6[5] & Fhc7z6[29]); +assign V7g7z6[28] = (S7f7z6[5] & Fhc7z6[28]); +assign V7g7z6[27] = (S7f7z6[5] & Fhc7z6[27]); +assign V7g7z6[26] = (S7f7z6[5] & Fhc7z6[26]); +assign V7g7z6[25] = (S7f7z6[5] & Fhc7z6[25]); +assign V7g7z6[24] = (S7f7z6[5] & Fhc7z6[24]); +assign V7g7z6[23] = (S7f7z6[5] & Fhc7z6[23]); +assign V7g7z6[22] = (S7f7z6[5] & Fhc7z6[22]); +assign V7g7z6[21] = (S7f7z6[5] & Fhc7z6[21]); +assign V7g7z6[20] = (S7f7z6[5] & Fhc7z6[20]); +assign V7g7z6[1] = (~(Vgmnv6 & Chmnv6)); +assign Chmnv6 = (~(S7f7z6[3] & E3c7z6[1])); +assign Vgmnv6 = (~(S7f7z6[4] & Fhc7z6[17])); +assign V7g7z6[19] = (S7f7z6[5] & Fhc7z6[19]); +assign V7g7z6[18] = (S7f7z6[5] & Fhc7z6[18]); +assign V7g7z6[17] = (S7f7z6[5] & Fhc7z6[17]); +assign V7g7z6[16] = (S7f7z6[5] & Fhc7z6[16]); +assign V7g7z6[15] = (~(Jhmnv6 & Qhmnv6)); +assign Qhmnv6 = (~(S7f7z6[3] & Fhc7z6[15])); +assign Jhmnv6 = (~(S7f7z6[4] & Fhc7z6[31])); +assign V7g7z6[14] = (~(Xhmnv6 & Eimnv6)); +assign Eimnv6 = (~(S7f7z6[3] & Fhc7z6[14])); +assign Xhmnv6 = (~(S7f7z6[4] & Fhc7z6[30])); +assign V7g7z6[13] = (~(Limnv6 & Simnv6)); +assign Simnv6 = (~(S7f7z6[3] & Fhc7z6[13])); +assign Limnv6 = (~(S7f7z6[4] & Fhc7z6[29])); +assign V7g7z6[12] = (~(Zimnv6 & Gjmnv6)); +assign Gjmnv6 = (~(S7f7z6[3] & Fhc7z6[12])); +assign Zimnv6 = (~(S7f7z6[4] & Fhc7z6[28])); +assign V7g7z6[11] = (~(Njmnv6 & Ujmnv6)); +assign Ujmnv6 = (~(S7f7z6[3] & Fhc7z6[11])); +assign Njmnv6 = (~(S7f7z6[4] & Fhc7z6[27])); +assign V7g7z6[10] = (~(Bkmnv6 & Ikmnv6)); +assign Ikmnv6 = (~(S7f7z6[3] & Fhc7z6[10])); +assign Bkmnv6 = (~(S7f7z6[4] & Fhc7z6[26])); +assign V7g7z6[0] = (~(Pkmnv6 & Wkmnv6)); +assign Wkmnv6 = (~(S7f7z6[3] & E3c7z6[0])); +assign Pkmnv6 = (~(S7f7z6[4] & Fhc7z6[16])); +assign Fag7z6[9] = (~(Dlmnv6 & Klmnv6)); +assign Klmnv6 = (~(S7f7z6[1] & Kxb7z6[25])); +assign Dlmnv6 = (~(S7f7z6[0] & Kxb7z6[9])); +assign Fag7z6[8] = (~(Rlmnv6 & Ylmnv6)); +assign Ylmnv6 = (~(S7f7z6[1] & Kxb7z6[24])); +assign Rlmnv6 = (~(S7f7z6[0] & Kxb7z6[8])); +assign Fag7z6[7] = (~(Fmmnv6 & Mmmnv6)); +assign Mmmnv6 = (~(S7f7z6[1] & Kxb7z6[23])); +assign Fmmnv6 = (~(S7f7z6[0] & Kxb7z6[7])); +assign Fag7z6[6] = (~(Tmmnv6 & Anmnv6)); +assign Anmnv6 = (~(S7f7z6[1] & Kxb7z6[22])); +assign Tmmnv6 = (~(S7f7z6[0] & Kxb7z6[6])); +assign Fag7z6[5] = (~(Hnmnv6 & Onmnv6)); +assign Onmnv6 = (~(S7f7z6[1] & Kxb7z6[21])); +assign Hnmnv6 = (~(S7f7z6[0] & Kxb7z6[5])); +assign Fag7z6[4] = (~(Vnmnv6 & Comnv6)); +assign Comnv6 = (~(S7f7z6[1] & Kxb7z6[20])); +assign Vnmnv6 = (~(S7f7z6[0] & Kxb7z6[4])); +assign Fag7z6[3] = (~(Jomnv6 & Qomnv6)); +assign Qomnv6 = (~(S7f7z6[1] & Kxb7z6[19])); +assign Jomnv6 = (~(S7f7z6[0] & Kxb7z6[3])); +assign Fag7z6[31] = (S7f7z6[2] & Kxb7z6[31]); +assign Fag7z6[30] = (S7f7z6[2] & Kxb7z6[30]); +assign Fag7z6[2] = (~(Xomnv6 & Epmnv6)); +assign Epmnv6 = (~(S7f7z6[1] & Kxb7z6[18])); +assign Xomnv6 = (~(S7f7z6[0] & Kxb7z6[2])); +assign Fag7z6[29] = (S7f7z6[2] & Kxb7z6[29]); +assign Fag7z6[28] = (S7f7z6[2] & Kxb7z6[28]); +assign Fag7z6[27] = (S7f7z6[2] & Kxb7z6[27]); +assign Fag7z6[26] = (S7f7z6[2] & Kxb7z6[26]); +assign Fag7z6[25] = (S7f7z6[2] & Kxb7z6[25]); +assign Fag7z6[24] = (S7f7z6[2] & Kxb7z6[24]); +assign Fag7z6[23] = (S7f7z6[2] & Kxb7z6[23]); +assign Fag7z6[22] = (S7f7z6[2] & Kxb7z6[22]); +assign Fag7z6[21] = (S7f7z6[2] & Kxb7z6[21]); +assign Fag7z6[20] = (S7f7z6[2] & Kxb7z6[20]); +assign Fag7z6[1] = (~(Lpmnv6 & Spmnv6)); +assign Spmnv6 = (~(S7f7z6[1] & Kxb7z6[17])); +assign Lpmnv6 = (~(S7f7z6[0] & Kxb7z6[1])); +assign Fag7z6[19] = (S7f7z6[2] & Kxb7z6[19]); +assign Fag7z6[18] = (S7f7z6[2] & Kxb7z6[18]); +assign Fag7z6[17] = (S7f7z6[2] & Kxb7z6[17]); +assign Fag7z6[16] = (S7f7z6[2] & Kxb7z6[16]); +assign Fag7z6[15] = (~(Zpmnv6 & Gqmnv6)); +assign Gqmnv6 = (~(S7f7z6[0] & Kxb7z6[15])); +assign Zpmnv6 = (~(S7f7z6[1] & Kxb7z6[31])); +assign Fag7z6[14] = (~(Nqmnv6 & Uqmnv6)); +assign Uqmnv6 = (~(S7f7z6[0] & Kxb7z6[14])); +assign Nqmnv6 = (~(S7f7z6[1] & Kxb7z6[30])); +assign Fag7z6[13] = (~(Brmnv6 & Irmnv6)); +assign Irmnv6 = (~(S7f7z6[0] & Kxb7z6[13])); +assign Brmnv6 = (~(S7f7z6[1] & Kxb7z6[29])); +assign Fag7z6[12] = (~(Prmnv6 & Wrmnv6)); +assign Wrmnv6 = (~(S7f7z6[0] & Kxb7z6[12])); +assign Prmnv6 = (~(S7f7z6[1] & Kxb7z6[28])); +assign Fag7z6[11] = (~(Dsmnv6 & Ksmnv6)); +assign Ksmnv6 = (~(S7f7z6[0] & Kxb7z6[11])); +assign Dsmnv6 = (~(S7f7z6[1] & Kxb7z6[27])); +assign Fag7z6[10] = (~(Rsmnv6 & Ysmnv6)); +assign Ysmnv6 = (~(S7f7z6[0] & Kxb7z6[10])); +assign Rsmnv6 = (~(S7f7z6[1] & Kxb7z6[26])); +assign Fag7z6[0] = (~(Ftmnv6 & Mtmnv6)); +assign Mtmnv6 = (~(S7f7z6[0] & Kxb7z6[0])); +assign Ftmnv6 = (~(S7f7z6[1] & Kxb7z6[16])); +assign Kif7z6[9] = (X2g7z6[9] ^ J5g7z6[9]); +assign Kif7z6[8] = (X2g7z6[8] ^ J5g7z6[8]); +assign Kif7z6[7] = (X2g7z6[7] ^ J5g7z6[7]); +assign Kif7z6[6] = (X2g7z6[6] ^ J5g7z6[6]); +assign Kif7z6[5] = (X2g7z6[5] ^ J5g7z6[5]); +assign Kif7z6[4] = (X2g7z6[4] ^ J5g7z6[4]); +assign Kif7z6[3] = (X2g7z6[3] ^ J5g7z6[3]); +assign Kif7z6[31] = (X2g7z6[31] ^ J5g7z6[31]); +assign Kif7z6[30] = (X2g7z6[30] ^ J5g7z6[30]); +assign Kif7z6[2] = (X2g7z6[2] ^ J5g7z6[2]); +assign Kif7z6[29] = (X2g7z6[29] ^ J5g7z6[29]); +assign Kif7z6[28] = (X2g7z6[28] ^ J5g7z6[28]); +assign Kif7z6[27] = (X2g7z6[27] ^ J5g7z6[27]); +assign Kif7z6[26] = (X2g7z6[26] ^ J5g7z6[26]); +assign Kif7z6[25] = (X2g7z6[25] ^ J5g7z6[25]); +assign Kif7z6[24] = (X2g7z6[24] ^ J5g7z6[24]); +assign Kif7z6[23] = (X2g7z6[23] ^ J5g7z6[23]); +assign Kif7z6[22] = (X2g7z6[22] ^ J5g7z6[22]); +assign Kif7z6[21] = (X2g7z6[21] ^ J5g7z6[21]); +assign Kif7z6[20] = (X2g7z6[20] ^ J5g7z6[20]); +assign Kif7z6[1] = (X2g7z6[1] ^ J5g7z6[1]); +assign Kif7z6[19] = (X2g7z6[19] ^ J5g7z6[19]); +assign Kif7z6[18] = (X2g7z6[18] ^ J5g7z6[18]); +assign Kif7z6[17] = (X2g7z6[17] ^ J5g7z6[17]); +assign Kif7z6[16] = (X2g7z6[16] ^ J5g7z6[16]); +assign Kif7z6[15] = (X2g7z6[15] ^ J5g7z6[15]); +assign Kif7z6[14] = (X2g7z6[14] ^ J5g7z6[14]); +assign Kif7z6[13] = (X2g7z6[13] ^ J5g7z6[13]); +assign Kif7z6[12] = (X2g7z6[12] ^ J5g7z6[12]); +assign Kif7z6[11] = (X2g7z6[11] ^ J5g7z6[11]); +assign Kif7z6[10] = (X2g7z6[10] ^ J5g7z6[10]); +assign Kif7z6[0] = (X2g7z6[0] ^ J5g7z6[0]); +assign Uff7z6[9] = (X2g7z6[9] | J5g7z6[9]); +assign J5g7z6[9] = (Ttmnv6 & Aumnv6); +assign X2g7z6[9] = (~(Humnv6 | Oumnv6)); +assign Uff7z6[8] = (X2g7z6[8] | J5g7z6[8]); +assign J5g7z6[8] = (Vumnv6 & Aumnv6); +assign X2g7z6[8] = (~(Cvmnv6 | Oumnv6)); +assign Uff7z6[7] = (X2g7z6[7] | J5g7z6[7]); +assign J5g7z6[7] = (Jvmnv6 & Aumnv6); +assign X2g7z6[7] = (~(Qvmnv6 | Oumnv6)); +assign Uff7z6[6] = (X2g7z6[6] | J5g7z6[6]); +assign J5g7z6[6] = (Xvmnv6 & Aumnv6); +assign X2g7z6[6] = (~(Ewmnv6 | Oumnv6)); +assign Uff7z6[5] = (X2g7z6[5] | J5g7z6[5]); +assign J5g7z6[5] = (Lwmnv6 & Aumnv6); +assign X2g7z6[5] = (~(Swmnv6 | Oumnv6)); +assign Uff7z6[4] = (X2g7z6[4] | J5g7z6[4]); +assign J5g7z6[4] = (Zwmnv6 & Aumnv6); +assign X2g7z6[4] = (~(Gxmnv6 | Oumnv6)); +assign Uff7z6[3] = (X2g7z6[3] | J5g7z6[3]); +assign J5g7z6[3] = (Nxmnv6 & Aumnv6); +assign X2g7z6[3] = (~(Uxmnv6 | Oumnv6)); +assign Uff7z6[30] = (X2g7z6[30] | J5g7z6[30]); +assign J5g7z6[30] = (Bymnv6 & Aumnv6); +assign X2g7z6[30] = (~(Iymnv6 | Oumnv6)); +assign Uff7z6[2] = (X2g7z6[2] | J5g7z6[2]); +assign J5g7z6[2] = (Pymnv6 & Aumnv6); +assign X2g7z6[2] = (~(Wymnv6 | Oumnv6)); +assign Uff7z6[29] = (X2g7z6[29] | J5g7z6[29]); +assign J5g7z6[29] = (Dzmnv6 & Aumnv6); +assign X2g7z6[29] = (~(Kzmnv6 | Oumnv6)); +assign Uff7z6[28] = (X2g7z6[28] | J5g7z6[28]); +assign J5g7z6[28] = (Rzmnv6 & Aumnv6); +assign X2g7z6[28] = (~(Yzmnv6 | Oumnv6)); +assign Uff7z6[27] = (X2g7z6[27] | J5g7z6[27]); +assign J5g7z6[27] = (F0nnv6 & Aumnv6); +assign X2g7z6[27] = (~(M0nnv6 | Oumnv6)); +assign Uff7z6[26] = (X2g7z6[26] | J5g7z6[26]); +assign J5g7z6[26] = (T0nnv6 & Aumnv6); +assign X2g7z6[26] = (~(A1nnv6 | Oumnv6)); +assign Uff7z6[25] = (X2g7z6[25] | J5g7z6[25]); +assign J5g7z6[25] = (H1nnv6 & Aumnv6); +assign X2g7z6[25] = (~(O1nnv6 | Oumnv6)); +assign Uff7z6[24] = (X2g7z6[24] | J5g7z6[24]); +assign J5g7z6[24] = (V1nnv6 & Aumnv6); +assign X2g7z6[24] = (~(C2nnv6 | Oumnv6)); +assign Uff7z6[23] = (X2g7z6[23] | J5g7z6[23]); +assign J5g7z6[23] = (J2nnv6 & Aumnv6); +assign X2g7z6[23] = (~(Q2nnv6 | Oumnv6)); +assign Uff7z6[22] = (X2g7z6[22] | J5g7z6[22]); +assign J5g7z6[22] = (X2nnv6 & Aumnv6); +assign X2g7z6[22] = (~(E3nnv6 | Oumnv6)); +assign Uff7z6[21] = (X2g7z6[21] | J5g7z6[21]); +assign J5g7z6[21] = (L3nnv6 & Aumnv6); +assign X2g7z6[21] = (~(S3nnv6 | Oumnv6)); +assign Uff7z6[20] = (X2g7z6[20] | J5g7z6[20]); +assign J5g7z6[20] = (Z3nnv6 & Aumnv6); +assign X2g7z6[20] = (~(G4nnv6 | Oumnv6)); +assign Uff7z6[1] = (X2g7z6[1] | J5g7z6[1]); +assign J5g7z6[1] = (N4nnv6 & Aumnv6); +assign X2g7z6[1] = (~(U4nnv6 | Oumnv6)); +assign Uff7z6[19] = (X2g7z6[19] | J5g7z6[19]); +assign J5g7z6[19] = (B5nnv6 & Aumnv6); +assign X2g7z6[19] = (~(I5nnv6 | Oumnv6)); +assign Uff7z6[18] = (X2g7z6[18] | J5g7z6[18]); +assign J5g7z6[18] = (P5nnv6 & Aumnv6); +assign X2g7z6[18] = (~(W5nnv6 | Oumnv6)); +assign Uff7z6[17] = (X2g7z6[17] | J5g7z6[17]); +assign J5g7z6[17] = (D6nnv6 & Aumnv6); +assign X2g7z6[17] = (~(K6nnv6 | Oumnv6)); +assign Uff7z6[16] = (X2g7z6[16] | J5g7z6[16]); +assign J5g7z6[16] = (R6nnv6 & Aumnv6); +assign X2g7z6[16] = (~(Y6nnv6 | Oumnv6)); +assign Uff7z6[15] = (X2g7z6[15] | J5g7z6[15]); +assign J5g7z6[15] = (F7nnv6 & Aumnv6); +assign X2g7z6[15] = (~(M7nnv6 | Oumnv6)); +assign Uff7z6[14] = (X2g7z6[14] | J5g7z6[14]); +assign J5g7z6[14] = (T7nnv6 & Aumnv6); +assign X2g7z6[14] = (~(A8nnv6 | Oumnv6)); +assign Uff7z6[13] = (X2g7z6[13] | J5g7z6[13]); +assign J5g7z6[13] = (H8nnv6 & Aumnv6); +assign X2g7z6[13] = (~(O8nnv6 | Oumnv6)); +assign Uff7z6[12] = (X2g7z6[12] | J5g7z6[12]); +assign J5g7z6[12] = (V8nnv6 & Aumnv6); +assign X2g7z6[12] = (~(C9nnv6 | Oumnv6)); +assign Uff7z6[11] = (X2g7z6[11] | J5g7z6[11]); +assign J5g7z6[11] = (J9nnv6 & Aumnv6); +assign X2g7z6[11] = (~(Q9nnv6 | Oumnv6)); +assign Uff7z6[10] = (X2g7z6[10] | J5g7z6[10]); +assign J5g7z6[10] = (X9nnv6 & Aumnv6); +assign X2g7z6[10] = (~(Eannv6 | Oumnv6)); +assign Uff7z6[0] = (X2g7z6[0] | J5g7z6[0]); +assign J5g7z6[0] = (~(Lannv6 | Sannv6)); +assign X2g7z6[0] = (Zannv6 & Gbnnv6); +assign Arkdt6 = (~(Nbnnv6 & Ubnnv6)); +assign Ubnnv6 = (~(Bcnnv6 & Gbnnv6)); +assign Bcnnv6 = (~(Icnnv6 & Pcnnv6)); +assign Pcnnv6 = (~(D7hdt6 & Wcnnv6)); +assign Icnnv6 = (~(Dte7z6[20] & S7gdt6)); +assign Nbnnv6 = (~(Ddnnv6 & Kdnnv6)); +assign Kdnnv6 = (~(Dte7z6[20] & Rdnnv6)); +assign Ddnnv6 = (~(Ydnnv6 | Fennv6)); +assign Ydnnv6 = (Mennv6 & Tennv6); +assign Jaf7z6[5] = (~(Afnnv6 & Hfnnv6)); +assign Afnnv6 = (~(Ofnnv6 & Vfnnv6)); +assign Vfnnv6 = (~(Q9hdt6 & Mrbdt6)); +assign Jaf7z6[4] = (Cgnnv6 & Jgnnv6); +assign Jaf7z6[3] = (Qgnnv6 & Jgnnv6); +assign Jaf7z6[2] = (Xgnnv6 & Jgnnv6); +assign Jaf7z6[1] = (Ehnnv6 & Jgnnv6); +assign Jaf7z6[0] = (Lhnnv6 & Jgnnv6); +assign Jgnnv6 = (~(Shnnv6 & Zhnnv6)); +assign Zhnnv6 = (~(Ginnv6 & Ofnnv6)); +assign Ginnv6 = (Q9hdt6 & Mrbdt6); +assign Shnnv6 = (Ninnv6 & Uinnv6); +assign Rze7z6[5] = (Bjnnv6 & Ijnnv6); +assign Rze7z6[4] = (Ijnnv6 & Pjnnv6); +assign Rze7z6[3] = (Ijnnv6 & Wjnnv6); +assign Rze7z6[2] = (Ijnnv6 & Dknnv6); +assign Rze7z6[1] = (Ijnnv6 & Kknnv6); +assign Rze7z6[0] = (Ijnnv6 & Rknnv6); +assign K2f7z6[5] = (D5f7z6[5] & Ijnnv6); +assign K2f7z6[4] = (D5f7z6[4] & Ijnnv6); +assign K2f7z6[3] = (D5f7z6[3] & Ijnnv6); +assign K2f7z6[2] = (D5f7z6[2] & Ijnnv6); +assign K2f7z6[1] = (D5f7z6[1] & Ijnnv6); +assign K2f7z6[0] = (D5f7z6[0] & Ijnnv6); +assign Flc7z6[9] = (~(Yknnv6 & Flnnv6)); +assign Yknnv6 = (Mlnnv6 & Tlnnv6); +assign Tlnnv6 = (~(Zec7z6[24] & Amnnv6)); +assign Flc7z6[8] = (~(Hmnnv6 & Omnnv6)); +assign Omnnv6 = (~(Zec7z6[23] & Amnnv6)); +assign Hmnnv6 = (~(Zec7z6[7] & Vmnnv6)); +assign Flc7z6[7] = (~(Cnnnv6 & Jnnnv6)); +assign Jnnnv6 = (~(Zec7z6[22] & Amnnv6)); +assign Cnnnv6 = (~(Zec7z6[6] & Vmnnv6)); +assign Flc7z6[6] = (~(Qnnnv6 & Xnnnv6)); +assign Xnnnv6 = (~(Zec7z6[21] & Amnnv6)); +assign Qnnnv6 = (~(Zec7z6[5] & Vmnnv6)); +assign Flc7z6[5] = (~(Eonnv6 & Lonnv6)); +assign Lonnv6 = (~(Zec7z6[20] & Amnnv6)); +assign Eonnv6 = (~(Zec7z6[4] & Vmnnv6)); +assign Flc7z6[4] = (~(Sonnv6 & Zonnv6)); +assign Zonnv6 = (~(Zec7z6[19] & Amnnv6)); +assign Sonnv6 = (~(Zec7z6[3] & Vmnnv6)); +assign Flc7z6[3] = (~(Gpnnv6 & Npnnv6)); +assign Npnnv6 = (~(Zec7z6[18] & Amnnv6)); +assign Gpnnv6 = (~(Zec7z6[2] & Vmnnv6)); +assign Flc7z6[31] = (~(Upnnv6 & Bqnnv6)); +assign Bqnnv6 = (~(Zec7z6[10] & Amnnv6)); +assign Flc7z6[2] = (~(Iqnnv6 & Pqnnv6)); +assign Pqnnv6 = (~(Zec7z6[17] & Amnnv6)); +assign Iqnnv6 = (~(Zec7z6[1] & Vmnnv6)); +assign Flc7z6[23] = (~(Wqnnv6 & Drnnv6)); +assign Drnnv6 = (~(Krnnv6 & Rrnnv6)); +assign Krnnv6 = (Zec7z6[10] ^ Yrnnv6); +assign Yrnnv6 = (!Zec7z6[29]); +assign Flc7z6[22] = (~(Wqnnv6 & Fsnnv6)); +assign Fsnnv6 = (~(Msnnv6 & Rrnnv6)); +assign Flc7z6[21] = (~(Wqnnv6 & Tsnnv6)); +assign Tsnnv6 = (~(Rrnnv6 & Zec7z6[9])); +assign Flc7z6[20] = (~(Wqnnv6 & Atnnv6)); +assign Atnnv6 = (~(Rrnnv6 & Zec7z6[8])); +assign Wqnnv6 = (Upnnv6 & Htnnv6); +assign Flc7z6[1] = (~(Otnnv6 & Vtnnv6)); +assign Vtnnv6 = (~(Zec7z6[16] & Amnnv6)); +assign Otnnv6 = (~(Zec7z6[0] & Vmnnv6)); +assign Flc7z6[19] = (~(Cunnv6 & Upnnv6)); +assign Cunnv6 = (Junnv6 & Qunnv6); +assign Qunnv6 = (~(Rrnnv6 & Zec7z6[7])); +assign Junnv6 = (~(Nginv6 & Zec7z6[27])); +assign Flc7z6[18] = (~(Xunnv6 & Upnnv6)); +assign Xunnv6 = (Evnnv6 & Lvnnv6); +assign Lvnnv6 = (~(Rrnnv6 & Zec7z6[6])); +assign Evnnv6 = (~(Nginv6 & Zec7z6[29])); +assign Flc7z6[17] = (~(Upnnv6 & Svnnv6)); +assign Svnnv6 = (~(Zec7z6[5] & Amnnv6)); +assign Flc7z6[16] = (~(Upnnv6 & Zvnnv6)); +assign Zvnnv6 = (~(Zec7z6[4] & Amnnv6)); +assign Flc7z6[15] = (~(Upnnv6 & Gwnnv6)); +assign Gwnnv6 = (~(Zec7z6[3] & Amnnv6)); +assign Flc7z6[14] = (~(Upnnv6 & Nwnnv6)); +assign Nwnnv6 = (~(Zec7z6[2] & Amnnv6)); +assign Flc7z6[13] = (~(Upnnv6 & Uwnnv6)); +assign Uwnnv6 = (~(Zec7z6[1] & Amnnv6)); +assign Flc7z6[12] = (~(Upnnv6 & Bxnnv6)); +assign Bxnnv6 = (~(Zec7z6[0] & Amnnv6)); +assign Flc7z6[11] = (~(Upnnv6 & Ixnnv6)); +assign Ixnnv6 = (~(Zec7z6[26] & Amnnv6)); +assign Upnnv6 = (Flnnv6 & Pxnnv6); +assign Flc7z6[10] = (~(Wxnnv6 & Flnnv6)); +assign Wxnnv6 = (Dynnv6 & Kynnv6); +assign Kynnv6 = (~(Zec7z6[25] & Amnnv6)); +assign Axbdt6 = (Rynnv6 & Yynnv6); +assign Yynnv6 = (Fznnv6 & Mznnv6); +assign Mznnv6 = (~(Icy7v6 | Bdi8v6)); +assign Fznnv6 = (~(Tznnv6 | A0onv6)); +assign Rynnv6 = (H0onv6 & O0onv6); +assign O0onv6 = (~(V0onv6 | C1onv6)); +assign H0onv6 = (Oaadt6 & J1onv6); +assign J1onv6 = (~(Q1onv6 & X1onv6)); +assign X1onv6 = (~(E2onv6 & L2onv6)); +assign L2onv6 = (Lybdt6 & S2onv6); +assign E2onv6 = (Z2onv6 & G3onv6); +assign Q1onv6 = (~(N3onv6 & U3onv6)); +assign U3onv6 = (~(B4onv6 & I4onv6)); +assign I4onv6 = (P4onv6 & W4onv6); +assign P4onv6 = (~(D5onv6 & K5onv6)); +assign D5onv6 = (~(R5onv6 & Y5onv6)); +assign Y5onv6 = (F6onv6 & M6onv6); +assign F6onv6 = (T6onv6 & A7onv6); +assign R5onv6 = (H7onv6 & O7onv6); +assign H7onv6 = (V7onv6 & C8onv6); +assign V7onv6 = (~(J8onv6 & Q8onv6)); +assign J8onv6 = (X8onv6 & E9onv6); +assign B4onv6 = (L9onv6 & S9onv6); +assign S9onv6 = (~(Z9onv6 & Gaonv6)); +assign O7o7z6[1] = (Pl0ft6 & Naonv6); +assign HMASTERS[1] = (~(Uaonv6 | Bbonv6)); +assign HMASTERD[1] = (~(Ibonv6 | Bbonv6)); +assign Bbonv6 = (~(Pbonv6 & Xnnet6)); +assign L3oet6 = (Wbonv6 & Dconv6); +assign Wbonv6 = (Kconv6 & Rconv6); +assign Pvnet6 = (Iynet6 ? Fdonv6 : Yconv6); +assign Fdonv6 = (~(Mdonv6 & Tdonv6)); +assign Tdonv6 = (Aeonv6 | Qteet6); +assign Yconv6 = (Heonv6 & Oeonv6); +assign Oeonv6 = (!Veonv6); +assign Heonv6 = (Cfonv6 & Jfonv6); +assign Spnet6 = (Qfonv6 & Xfonv6); +assign Xfonv6 = (Egonv6 & Lgonv6); +assign Egonv6 = (Sgonv6 & Zgonv6); +assign Qfonv6 = (Ghonv6 & B2jnv6); +assign Ssnet6 = (Nhonv6 & Uhonv6); +assign Uhonv6 = (~(Xjh7v6 & Bionv6)); +assign M7yet6 = (~(Iionv6 & Pionv6)); +assign Pionv6 = (~(Wionv6 & Djonv6)); +assign Wionv6 = (Znn7z6[1] & Kjonv6); +assign Iionv6 = (~(Rjonv6 & Yjonv6)); +assign Rjonv6 = (~(Fkonv6 ^ Mkonv6)); +assign Fkonv6 = (Tkonv6 | Alonv6); +assign Dhyet6 = (~(Hlonv6 & Olonv6)); +assign Olonv6 = (~(Sjyet6 & Vlonv6)); +assign Vlonv6 = (Cmonv6 | Jmonv6); +assign Hlonv6 = (!Qmonv6); +assign Dmyet6 = (Xmonv6 & Enonv6); +assign Xmonv6 = (~(Cmonv6 | Jmonv6)); +assign Jmonv6 = (!Yjonv6); +assign S4yet6 = (~(Lnonv6 & Snonv6)); +assign Snonv6 = (~(Znonv6 & Dkm7z6[0])); +assign Znonv6 = (HRESPD[0] & Goonv6); +assign Lnonv6 = (~(Noonv6 & HRESPS[0])); +assign Kvxet6 = (~(Uoonv6 & Bponv6)); +assign Bponv6 = (~(Styet6 & Iponv6)); +assign Iponv6 = (~(Pponv6 & Wponv6)); +assign Wponv6 = (~(Dqonv6 & Kqonv6)); +assign Pponv6 = (~(Rqonv6 & Yqonv6)); +assign Uoonv6 = (Fronv6 & Mronv6); +assign Mronv6 = (~(Tronv6 & Asonv6)); +assign Fronv6 = (~(Ewyet6 & Hsonv6)); +assign Hsonv6 = (~(Osonv6 & Vsonv6)); +assign Vsonv6 = (~(Dqonv6 & Itb7z6[8])); +assign Dqonv6 = (Ctonv6 & S7n7z6[0]); +assign Ctonv6 = (Evadt6 & Jtonv6); +assign Osonv6 = (~(Rqonv6 & Itb7z6[24])); +assign Ean7z6[4] = (Qtonv6 | Qvm7z6[1]); +assign Qvm7z6[1] = (Hjn7z6[6] & Xtonv6); +assign Xtonv6 = (Jtonv6 | S7n7z6[0]); +assign Qtonv6 = (Hjn7z6[6] ? Euonv6 : Rqonv6); +assign Rqonv6 = (Luonv6 & S7n7z6[1]); +assign Luonv6 = (~(Euonv6 | S7n7z6[0])); +assign Ean7z6[3] = (Suonv6 | Qvm7z6[0]); +assign Qvm7z6[0] = (Hjn7z6[5] & Zuonv6); +assign Suonv6 = (Evadt6 ? Gvonv6 : Hjn7z6[5]); +assign Gvonv6 = (~(Zuonv6 | Hjn7z6[5])); +assign Chn7z6[9] = (~(Nvonv6 & Uvonv6)); +assign Uvonv6 = (Bwonv6 & Iwonv6); +assign Iwonv6 = (~(Pwonv6 & Cmm7z6[9])); +assign Bwonv6 = (~(Wwonv6 & HADDRI[9])); +assign Nvonv6 = (Dxonv6 & Kxonv6); +assign Kxonv6 = (~(Fvb7z6[9] & Rxonv6)); +assign Dxonv6 = (~(Hjn7z6[9] & Djonv6)); +assign Chn7z6[8] = (~(Yxonv6 & Fyonv6)); +assign Fyonv6 = (Myonv6 & Tyonv6); +assign Tyonv6 = (~(Pwonv6 & Cmm7z6[8])); +assign Myonv6 = (~(Wwonv6 & HADDRI[8])); +assign Yxonv6 = (Azonv6 & Hzonv6); +assign Hzonv6 = (~(Fvb7z6[8] & Rxonv6)); +assign Azonv6 = (~(Hjn7z6[8] & Djonv6)); +assign Chn7z6[7] = (~(Ozonv6 & Vzonv6)); +assign Vzonv6 = (C0pnv6 & J0pnv6); +assign J0pnv6 = (~(Pwonv6 & Cmm7z6[7])); +assign C0pnv6 = (~(Wwonv6 & HADDRI[7])); +assign Ozonv6 = (Q0pnv6 & X0pnv6); +assign X0pnv6 = (~(Fvb7z6[7] & Rxonv6)); +assign Q0pnv6 = (~(Hjn7z6[7] & Djonv6)); +assign Chn7z6[6] = (~(E1pnv6 & L1pnv6)); +assign L1pnv6 = (S1pnv6 & Z1pnv6); +assign Z1pnv6 = (~(Pwonv6 & Cmm7z6[6])); +assign S1pnv6 = (~(Wwonv6 & HADDRI[6])); +assign E1pnv6 = (G2pnv6 & N2pnv6); +assign N2pnv6 = (~(Fvb7z6[6] & Rxonv6)); +assign G2pnv6 = (~(Hjn7z6[6] & Djonv6)); +assign Chn7z6[5] = (~(U2pnv6 & B3pnv6)); +assign B3pnv6 = (I3pnv6 & P3pnv6); +assign P3pnv6 = (~(Pwonv6 & Cmm7z6[5])); +assign I3pnv6 = (~(Wwonv6 & HADDRI[5])); +assign U2pnv6 = (W3pnv6 & D4pnv6); +assign D4pnv6 = (~(Fvb7z6[5] & Rxonv6)); +assign W3pnv6 = (~(Hjn7z6[5] & Djonv6)); +assign Chn7z6[4] = (~(K4pnv6 & R4pnv6)); +assign R4pnv6 = (Y4pnv6 & F5pnv6); +assign F5pnv6 = (~(Pwonv6 & Cmm7z6[4])); +assign Y4pnv6 = (~(Wwonv6 & HADDRI[4])); +assign K4pnv6 = (M5pnv6 & T5pnv6); +assign T5pnv6 = (~(Fvb7z6[4] & Rxonv6)); +assign M5pnv6 = (~(Ryyet6 & Djonv6)); +assign Chn7z6[3] = (~(A6pnv6 & H6pnv6)); +assign H6pnv6 = (O6pnv6 & V6pnv6); +assign V6pnv6 = (~(Pwonv6 & Cmm7z6[3])); +assign O6pnv6 = (~(Wwonv6 & HADDRI[3])); +assign A6pnv6 = (C7pnv6 & J7pnv6); +assign J7pnv6 = (~(Fvb7z6[3] & Rxonv6)); +assign C7pnv6 = (~(S0zet6 & Djonv6)); +assign Chn7z6[31] = (~(Q7pnv6 & X7pnv6)); +assign X7pnv6 = (E8pnv6 & L8pnv6); +assign L8pnv6 = (~(Pwonv6 & Cmm7z6[31])); +assign E8pnv6 = (~(Wwonv6 & Njfnv6)); +assign Q7pnv6 = (S8pnv6 & Z8pnv6); +assign Z8pnv6 = (~(Rxonv6 & Fvb7z6[31])); +assign S8pnv6 = (~(Hjn7z6[31] & Djonv6)); +assign Chn7z6[30] = (~(G9pnv6 & N9pnv6)); +assign N9pnv6 = (U9pnv6 & Bapnv6); +assign Bapnv6 = (~(Pwonv6 & Cmm7z6[30])); +assign U9pnv6 = (~(Wwonv6 & Ujfnv6)); +assign G9pnv6 = (Iapnv6 & Papnv6); +assign Papnv6 = (~(Rxonv6 & Fvb7z6[30])); +assign Iapnv6 = (~(Hjn7z6[30] & Djonv6)); +assign Chn7z6[2] = (~(Wapnv6 & Dbpnv6)); +assign Dbpnv6 = (Kbpnv6 & Rbpnv6); +assign Rbpnv6 = (~(Pwonv6 & Yefnv6)); +assign Kbpnv6 = (~(Wwonv6 & HADDRI[2])); +assign Wapnv6 = (Ybpnv6 & Fcpnv6); +assign Fcpnv6 = (~(Fvb7z6[2] & Rxonv6)); +assign Ybpnv6 = (~(T2zet6 & Djonv6)); +assign Chn7z6[29] = (~(Mcpnv6 & Tcpnv6)); +assign Tcpnv6 = (Adpnv6 & Hdpnv6); +assign Hdpnv6 = (~(Pwonv6 & Cmm7z6[29])); +assign Adpnv6 = (~(Wwonv6 & Bkfnv6)); +assign Mcpnv6 = (Odpnv6 & Vdpnv6); +assign Vdpnv6 = (~(Rxonv6 & Fvb7z6[29])); +assign Odpnv6 = (~(Hjn7z6[29] & Djonv6)); +assign Chn7z6[28] = (~(Cepnv6 & Jepnv6)); +assign Jepnv6 = (Qepnv6 & Xepnv6); +assign Xepnv6 = (~(Pwonv6 & Cmm7z6[28])); +assign Qepnv6 = (~(Wwonv6 & HADDRI[28])); +assign Cepnv6 = (Efpnv6 & Lfpnv6); +assign Lfpnv6 = (~(Fvb7z6[28] & Rxonv6)); +assign Efpnv6 = (~(Hjn7z6[28] & Djonv6)); +assign Chn7z6[27] = (~(Sfpnv6 & Zfpnv6)); +assign Zfpnv6 = (Ggpnv6 & Ngpnv6); +assign Ngpnv6 = (~(Pwonv6 & Cmm7z6[27])); +assign Ggpnv6 = (~(Wwonv6 & HADDRI[27])); +assign Sfpnv6 = (Ugpnv6 & Bhpnv6); +assign Bhpnv6 = (~(Fvb7z6[27] & Rxonv6)); +assign Ugpnv6 = (~(Hjn7z6[27] & Djonv6)); +assign Chn7z6[26] = (~(Ihpnv6 & Phpnv6)); +assign Phpnv6 = (Whpnv6 & Dipnv6); +assign Dipnv6 = (~(Pwonv6 & Cmm7z6[26])); +assign Whpnv6 = (~(Wwonv6 & HADDRI[26])); +assign Ihpnv6 = (Kipnv6 & Ripnv6); +assign Ripnv6 = (~(Fvb7z6[26] & Rxonv6)); +assign Kipnv6 = (~(Hjn7z6[26] & Djonv6)); +assign Chn7z6[25] = (~(Yipnv6 & Fjpnv6)); +assign Fjpnv6 = (Mjpnv6 & Tjpnv6); +assign Tjpnv6 = (~(Pwonv6 & Cmm7z6[25])); +assign Mjpnv6 = (~(Wwonv6 & HADDRI[25])); +assign Yipnv6 = (Akpnv6 & Hkpnv6); +assign Hkpnv6 = (~(Rxonv6 & Fvb7z6[25])); +assign Akpnv6 = (~(Hjn7z6[25] & Djonv6)); +assign Chn7z6[24] = (~(Okpnv6 & Vkpnv6)); +assign Vkpnv6 = (Clpnv6 & Jlpnv6); +assign Jlpnv6 = (~(Pwonv6 & Cmm7z6[24])); +assign Clpnv6 = (~(Wwonv6 & HADDRI[24])); +assign Okpnv6 = (Qlpnv6 & Xlpnv6); +assign Xlpnv6 = (~(Fvb7z6[24] & Rxonv6)); +assign Qlpnv6 = (~(Hjn7z6[24] & Djonv6)); +assign Chn7z6[23] = (~(Empnv6 & Lmpnv6)); +assign Lmpnv6 = (Smpnv6 & Zmpnv6); +assign Zmpnv6 = (~(Pwonv6 & Cmm7z6[23])); +assign Smpnv6 = (~(Wwonv6 & HADDRI[23])); +assign Empnv6 = (Gnpnv6 & Nnpnv6); +assign Nnpnv6 = (~(Fvb7z6[23] & Rxonv6)); +assign Gnpnv6 = (~(Hjn7z6[23] & Djonv6)); +assign Chn7z6[22] = (~(Unpnv6 & Bopnv6)); +assign Bopnv6 = (Iopnv6 & Popnv6); +assign Popnv6 = (~(Pwonv6 & Cmm7z6[22])); +assign Iopnv6 = (~(Wwonv6 & HADDRI[22])); +assign Unpnv6 = (Wopnv6 & Dppnv6); +assign Dppnv6 = (~(Fvb7z6[22] & Rxonv6)); +assign Wopnv6 = (~(Hjn7z6[22] & Djonv6)); +assign Chn7z6[21] = (~(Kppnv6 & Rppnv6)); +assign Rppnv6 = (Yppnv6 & Fqpnv6); +assign Fqpnv6 = (~(Pwonv6 & Cmm7z6[21])); +assign Yppnv6 = (~(Wwonv6 & HADDRI[21])); +assign Kppnv6 = (Mqpnv6 & Tqpnv6); +assign Tqpnv6 = (~(Fvb7z6[21] & Rxonv6)); +assign Mqpnv6 = (~(Hjn7z6[21] & Djonv6)); +assign Chn7z6[20] = (~(Arpnv6 & Hrpnv6)); +assign Hrpnv6 = (Orpnv6 & Vrpnv6); +assign Vrpnv6 = (~(Pwonv6 & Cmm7z6[20])); +assign Orpnv6 = (~(Wwonv6 & HADDRI[20])); +assign Arpnv6 = (Cspnv6 & Jspnv6); +assign Jspnv6 = (~(Fvb7z6[20] & Rxonv6)); +assign Cspnv6 = (~(Hjn7z6[20] & Djonv6)); +assign Chn7z6[1] = (~(Qspnv6 & Xspnv6)); +assign Xspnv6 = (~(Icyet6 & Djonv6)); +assign Qspnv6 = (Etpnv6 & Ltpnv6); +assign Ltpnv6 = (~(Pwonv6 & Cmm7z6[1])); +assign Etpnv6 = (~(Rxonv6 & Stpnv6)); +assign Chn7z6[19] = (~(Ztpnv6 & Gupnv6)); +assign Gupnv6 = (Nupnv6 & Uupnv6); +assign Uupnv6 = (~(Pwonv6 & Cmm7z6[19])); +assign Nupnv6 = (~(Wwonv6 & HADDRI[19])); +assign Ztpnv6 = (Bvpnv6 & Ivpnv6); +assign Ivpnv6 = (~(Fvb7z6[19] & Rxonv6)); +assign Bvpnv6 = (~(Hjn7z6[19] & Djonv6)); +assign Chn7z6[18] = (~(Pvpnv6 & Wvpnv6)); +assign Wvpnv6 = (Dwpnv6 & Kwpnv6); +assign Kwpnv6 = (~(Pwonv6 & Cmm7z6[18])); +assign Dwpnv6 = (~(Wwonv6 & HADDRI[18])); +assign Pvpnv6 = (Rwpnv6 & Ywpnv6); +assign Ywpnv6 = (~(Fvb7z6[18] & Rxonv6)); +assign Rwpnv6 = (~(Hjn7z6[18] & Djonv6)); +assign Chn7z6[17] = (~(Fxpnv6 & Mxpnv6)); +assign Mxpnv6 = (Txpnv6 & Aypnv6); +assign Aypnv6 = (~(Pwonv6 & Cmm7z6[17])); +assign Txpnv6 = (~(Wwonv6 & HADDRI[17])); +assign Fxpnv6 = (Hypnv6 & Oypnv6); +assign Oypnv6 = (~(Fvb7z6[17] & Rxonv6)); +assign Hypnv6 = (~(Hjn7z6[17] & Djonv6)); +assign Chn7z6[16] = (~(Vypnv6 & Czpnv6)); +assign Czpnv6 = (Jzpnv6 & Qzpnv6); +assign Qzpnv6 = (~(Pwonv6 & Cmm7z6[16])); +assign Jzpnv6 = (~(Wwonv6 & HADDRI[16])); +assign Vypnv6 = (Xzpnv6 & E0qnv6); +assign E0qnv6 = (~(Fvb7z6[16] & Rxonv6)); +assign Xzpnv6 = (~(Hjn7z6[16] & Djonv6)); +assign Chn7z6[15] = (~(L0qnv6 & S0qnv6)); +assign S0qnv6 = (Z0qnv6 & G1qnv6); +assign G1qnv6 = (~(Pwonv6 & Cmm7z6[15])); +assign Z0qnv6 = (~(Wwonv6 & HADDRI[15])); +assign L0qnv6 = (N1qnv6 & U1qnv6); +assign U1qnv6 = (~(Fvb7z6[15] & Rxonv6)); +assign N1qnv6 = (~(Hjn7z6[15] & Djonv6)); +assign Chn7z6[14] = (~(B2qnv6 & I2qnv6)); +assign I2qnv6 = (P2qnv6 & W2qnv6); +assign W2qnv6 = (~(Pwonv6 & Cmm7z6[14])); +assign P2qnv6 = (~(Wwonv6 & HADDRI[14])); +assign B2qnv6 = (D3qnv6 & K3qnv6); +assign K3qnv6 = (~(Fvb7z6[14] & Rxonv6)); +assign D3qnv6 = (~(Hjn7z6[14] & Djonv6)); +assign Chn7z6[13] = (~(R3qnv6 & Y3qnv6)); +assign Y3qnv6 = (F4qnv6 & M4qnv6); +assign M4qnv6 = (~(Pwonv6 & Cmm7z6[13])); +assign F4qnv6 = (~(Wwonv6 & HADDRI[13])); +assign R3qnv6 = (T4qnv6 & A5qnv6); +assign A5qnv6 = (~(Fvb7z6[13] & Rxonv6)); +assign T4qnv6 = (~(Hjn7z6[13] & Djonv6)); +assign Chn7z6[12] = (~(H5qnv6 & O5qnv6)); +assign O5qnv6 = (V5qnv6 & C6qnv6); +assign C6qnv6 = (~(Pwonv6 & Cmm7z6[12])); +assign V5qnv6 = (~(Wwonv6 & HADDRI[12])); +assign H5qnv6 = (J6qnv6 & Q6qnv6); +assign Q6qnv6 = (~(Fvb7z6[12] & Rxonv6)); +assign J6qnv6 = (~(Hjn7z6[12] & Djonv6)); +assign Chn7z6[11] = (~(X6qnv6 & E7qnv6)); +assign E7qnv6 = (L7qnv6 & S7qnv6); +assign S7qnv6 = (~(Pwonv6 & Cmm7z6[11])); +assign L7qnv6 = (~(Wwonv6 & HADDRI[11])); +assign X6qnv6 = (Z7qnv6 & G8qnv6); +assign G8qnv6 = (~(Fvb7z6[11] & Rxonv6)); +assign Z7qnv6 = (~(Hjn7z6[11] & Djonv6)); +assign Chn7z6[10] = (~(N8qnv6 & U8qnv6)); +assign U8qnv6 = (B9qnv6 & I9qnv6); +assign I9qnv6 = (~(Pwonv6 & Cmm7z6[10])); +assign B9qnv6 = (~(Wwonv6 & HADDRI[10])); +assign N8qnv6 = (P9qnv6 & W9qnv6); +assign W9qnv6 = (~(Fvb7z6[10] & Rxonv6)); +assign P9qnv6 = (~(Hjn7z6[10] & Djonv6)); +assign Chn7z6[0] = (~(Daqnv6 & Kaqnv6)); +assign Kaqnv6 = (~(X9yet6 & Djonv6)); +assign Daqnv6 = (Raqnv6 & Yaqnv6); +assign Yaqnv6 = (~(Pwonv6 & Cmm7z6[0])); +assign Pwonv6 = (Fbqnv6 & Yjonv6); +assign Raqnv6 = (~(Rxonv6 & Mbqnv6)); +assign Gqpet6 = (Tbqnv6 ? W2n7z6[1] : J0n7z6[1]); +assign Hspet6 = (Tbqnv6 ? W2n7z6[0] : J0n7z6[0]); +assign Iupet6 = (Tbqnv6 ? J5n7z6[3] : Aym7z6[3]); +assign Jwpet6 = (Tbqnv6 ? J5n7z6[2] : Aym7z6[2]); +assign Kypet6 = (Tbqnv6 ? J5n7z6[1] : Aym7z6[1]); +assign L0qet6 = (Styet6 | J5n7z6[0]); +assign M2qet6 = (~(Acqnv6 & Hcqnv6)); +assign Hcqnv6 = (~(W2n7z6[1] & Ocqnv6)); +assign Acqnv6 = (Vcqnv6 & Cdqnv6); +assign Cdqnv6 = (~(Jdqnv6 & Qdqnv6)); +assign Vcqnv6 = (~(Xdqnv6 & J0n7z6[1])); +assign N4qet6 = (~(Eeqnv6 & Leqnv6)); +assign Leqnv6 = (~(W2n7z6[0] & Ocqnv6)); +assign Eeqnv6 = (Seqnv6 & Zeqnv6); +assign Zeqnv6 = (~(Jdqnv6 & Gfqnv6)); +assign Seqnv6 = (~(Xdqnv6 & J0n7z6[0])); +assign O6qet6 = (~(Nfqnv6 & Ufqnv6)); +assign Ufqnv6 = (~(J5n7z6[3] & Ocqnv6)); +assign Nfqnv6 = (Bgqnv6 & Igqnv6); +assign Igqnv6 = (~(Jdqnv6 & Pgqnv6)); +assign Bgqnv6 = (~(Xdqnv6 & Aym7z6[3])); +assign P8qet6 = (~(Wgqnv6 & Dhqnv6)); +assign Dhqnv6 = (~(J5n7z6[2] & Ocqnv6)); +assign Wgqnv6 = (Khqnv6 & Rhqnv6); +assign Rhqnv6 = (~(Jdqnv6 & Yhqnv6)); +assign Khqnv6 = (~(Xdqnv6 & Aym7z6[2])); +assign Qaqet6 = (~(Fiqnv6 & Miqnv6)); +assign Miqnv6 = (~(J5n7z6[1] & Ocqnv6)); +assign Fiqnv6 = (Tiqnv6 & Ajqnv6); +assign Ajqnv6 = (~(Jdqnv6 & Hjqnv6)); +assign Tiqnv6 = (~(Xdqnv6 & Aym7z6[1])); +assign Rcqet6 = (Ojqnv6 | Jdqnv6); +assign Jdqnv6 = (~(Ocqnv6 | Vjqnv6)); +assign Ojqnv6 = (Xdqnv6 | J5n7z6[0]); +assign Xdqnv6 = (~(Ocqnv6 | Gmnet6)); +assign Ocqnv6 = (~(Ckqnv6 & Styet6)); +assign Ckqnv6 = (~(Jkqnv6 | Kjonv6)); +assign H8bdt6 = (Qkqnv6 & Ox9dt6); +assign Qkqnv6 = (~(Xkqnv6 & Elqnv6)); +assign Elqnv6 = (~(G7bdt6 & Ez9dt6)); +assign Us77v6 = (Drymz6[0] | Drymz6[1]); +assign Drymz6[1] = (~(Llqnv6 & Slqnv6)); +assign Slqnv6 = (Zlqnv6 & Gmqnv6); +assign Gmqnv6 = (~(Nmqnv6 & Umqnv6)); +assign Nmqnv6 = (W177v6 & Bnqnv6); +assign Zlqnv6 = (~(Inqnv6 & Pnqnv6)); +assign Pnqnv6 = (Wnqnv6 | Doqnv6); +assign Llqnv6 = (Koqnv6 & Roqnv6); +assign Roqnv6 = (~(Yoqnv6 & Fpqnv6)); +assign Drymz6[0] = (~(Mpqnv6 & Tpqnv6)); +assign Tpqnv6 = (Aqqnv6 & Hqqnv6); +assign Hqqnv6 = (~(Oqqnv6 & Vqqnv6)); +assign Vqqnv6 = (Crqnv6 & Jrqnv6); +assign Crqnv6 = (Bnqnv6 & Fpqnv6); +assign Oqqnv6 = (~(Qrqnv6 | Xrqnv6)); +assign Xrqnv6 = (Unymz6[8] ? Lsqnv6 : Esqnv6); +assign Lsqnv6 = (Ssqnv6 & Zsqnv6); +assign Ssqnv6 = (~(Unymz6[10] & Gtqnv6)); +assign Gtqnv6 = (Ntqnv6 | Utqnv6); +assign Ntqnv6 = (!Unymz6[9]); +assign Esqnv6 = (Unymz6[10] ? Iuqnv6 : Buqnv6); +assign Iuqnv6 = (Utqnv6 & Zsqnv6); +assign Zsqnv6 = (!Buqnv6); +assign Qrqnv6 = (~(Puqnv6 & Fy67v6)); +assign Puqnv6 = (Unymz6[10] ? Dvqnv6 : Wuqnv6); +assign Dvqnv6 = (Kvqnv6 | Unymz6[9]); +assign Kvqnv6 = (Unymz6[8] ? Rvqnv6 : Utqnv6); +assign Rvqnv6 = (~(Buqnv6 & Utqnv6)); +assign Buqnv6 = (Yvqnv6 & Fwqnv6); +assign Fwqnv6 = (Unymz6[1] ? Twqnv6 : Mwqnv6); +assign Twqnv6 = (~(Axqnv6 & Hxqnv6)); +assign Hxqnv6 = (~(Unymz6[0] | Unymz6[3])); +assign Axqnv6 = (Lfp7z6[2] & Unymz6[2]); +assign Mwqnv6 = (~(Oxqnv6 & Vxqnv6)); +assign Oxqnv6 = (Unymz6[3] ? Jyqnv6 : Cyqnv6); +assign Jyqnv6 = (Uh77v6 & Qyqnv6); +assign Cyqnv6 = (Lfp7z6[0] & Unymz6[2]); +assign Yvqnv6 = (Xyqnv6 & Ezqnv6); +assign Ezqnv6 = (~(Tn77v6 & Lzqnv6)); +assign Xyqnv6 = (~(Unymz6[2] & Szqnv6)); +assign Szqnv6 = (Zzqnv6 | Lzqnv6); +assign Zzqnv6 = (~(G0rnv6 | Vxqnv6)); +assign Vxqnv6 = (!Unymz6[0]); +assign G0rnv6 = (Unymz6[1] ? U0rnv6 : N0rnv6); +assign N0rnv6 = (B1rnv6 | Unymz6[3]); +assign Wuqnv6 = (~(Utqnv6 & Unymz6[9])); +assign Utqnv6 = (I1rnv6 & P1rnv6); +assign P1rnv6 = (Unymz6[4] ? D2rnv6 : W1rnv6); +assign D2rnv6 = (~(Unymz6[6] & K2rnv6)); +assign K2rnv6 = (Unymz6[5] ? Y2rnv6 : R2rnv6); +assign Y2rnv6 = (Unymz6[7] | Lfp7z6[3]); +assign R2rnv6 = (~(B1rnv6 | Unymz6[7])); +assign W1rnv6 = (~(F3rnv6 & M3rnv6)); +assign F3rnv6 = (Unymz6[7] ? A4rnv6 : T3rnv6); +assign A4rnv6 = (Uh77v6 & H4rnv6); +assign H4rnv6 = (!Unymz6[6]); +assign T3rnv6 = (Lfp7z6[0] & Unymz6[6]); +assign I1rnv6 = (Unymz6[4] ? V4rnv6 : O4rnv6); +assign V4rnv6 = (~(Tn77v6 & C5rnv6)); +assign O4rnv6 = (~(J5rnv6 & Q5rnv6)); +assign Q5rnv6 = (~(M3rnv6 | Unymz6[7])); +assign M3rnv6 = (!Unymz6[5]); +assign J5rnv6 = (Lfp7z6[2] & Unymz6[6]); +assign Aqqnv6 = (~(Umqnv6 & Doqnv6)); +assign Umqnv6 = (Inqnv6 & Ipymz6[1]); +assign Inqnv6 = (X5rnv6 & E6rnv6); +assign Mpqnv6 = (Koqnv6 & L6rnv6); +assign L6rnv6 = (~(Yoqnv6 & Wnqnv6)); +assign Yoqnv6 = (S6rnv6 & Z6rnv6); +assign S6rnv6 = (P52nv6 & E6rnv6); +assign Koqnv6 = (G7rnv6 & N7rnv6); +assign N7rnv6 = (~(U7rnv6 & E6rnv6)); +assign U7rnv6 = (~(B8rnv6 & I8rnv6)); +assign I8rnv6 = (~(Wnqnv6 & P8rnv6)); +assign P8rnv6 = (~(W177v6 & Ldo7v6)); +assign B8rnv6 = (~(Ipymz6[1] & W8rnv6)); +assign W8rnv6 = (~(D9rnv6 & K9rnv6)); +assign K9rnv6 = (~(Doqnv6 & P52nv6)); +assign Doqnv6 = (Ipymz6[0] & R9rnv6); +assign R9rnv6 = (Y9rnv6 | Uw77v6); +assign D9rnv6 = (~(F02nv6 & Bnqnv6)); +assign G7rnv6 = (~(Farnv6 & Marnv6)); +assign Marnv6 = (P52nv6 & Bnqnv6); +assign Farnv6 = (Z6rnv6 & Tarnv6); +assign Tarnv6 = (~(X477v6 & Ipymz6[1])); +assign Z6rnv6 = (!X5rnv6); +assign Ru77v6 = (~(Abrnv6 & Hbrnv6)); +assign Hbrnv6 = (X5rnv6 | Jrqnv6); +assign Abrnv6 = (~(Uw77v6 & Y9rnv6)); +assign Br77v6 = (Obrnv6 & Vbrnv6); +assign Vbrnv6 = (E6rnv6 & Jrqnv6); +assign Obrnv6 = (Ldo7v6 & Ccrnv6); +assign Ccrnv6 = (~(Jcrnv6 & Qcrnv6)); +assign Qcrnv6 = (~(Wnqnv6 & W177v6)); +assign Jcrnv6 = (~(Ipymz6[1] & Bnqnv6)); +assign Bnqnv6 = (!Ipymz6[0]); +assign Ty77v6 = (~(Xcrnv6 & Edrnv6)); +assign Edrnv6 = (~(Tn77v6 & Ldrnv6)); +assign Ldrnv6 = (~(Sdrnv6 & Zdrnv6)); +assign Zdrnv6 = (~(Bj77v6 & Gernv6)); +assign Sdrnv6 = (Jrqnv6 ? Uernv6 : Nernv6); +assign Uernv6 = (~(Bfrnv6 & Ifrnv6)); +assign Ifrnv6 = (Pfrnv6 & Wfrnv6); +assign Wfrnv6 = (~(Lfp7z6[1] & Blymz6[1])); +assign Pfrnv6 = (Dgrnv6 & Y9rnv6); +assign Dgrnv6 = (~(Lfp7z6[0] & Blymz6[0])); +assign Bfrnv6 = (Kgrnv6 & Rgrnv6); +assign Rgrnv6 = (~(Lfp7z6[2] & Blymz6[2])); +assign Kgrnv6 = (~(Lfp7z6[3] & Blymz6[3])); +assign Xcrnv6 = (Nernv6 ? Fhrnv6 : Ygrnv6); +assign Ygrnv6 = (~(Mhrnv6 & Jrqnv6)); +assign Mhrnv6 = (~(Thrnv6 & Airnv6)); +assign Airnv6 = (Hirnv6 & Oirnv6); +assign Oirnv6 = (~(Lfp7z6[0] & Kmymz6[0])); +assign Hirnv6 = (~(Lfp7z6[1] & Kmymz6[1])); +assign Thrnv6 = (Virnv6 & Cjrnv6); +assign Cjrnv6 = (~(Lfp7z6[2] & Kmymz6[2])); +assign Virnv6 = (~(Lfp7z6[3] & Kmymz6[3])); +assign Frc7v6 = (~(Jjrnv6 | Qjrnv6)); +assign Phd7v6 = (Xjrnv6 & Vv67v6); +assign Xjrnv6 = (Ekrnv6 & Jrqnv6); +assign Ekrnv6 = (~(Lkrnv6 & Skrnv6)); +assign Skrnv6 = (~(Zkrnv6 & Glrnv6)); +assign Glrnv6 = (~(Hcymz6[4] ^ Nlrnv6)); +assign Lkrnv6 = (~(Ulrnv6 & Bmrnv6)); +assign Bmrnv6 = (~(Imrnv6 & Pmrnv6)); +assign Pmrnv6 = (~(Nlrnv6 & Wmrnv6)); +assign Wmrnv6 = (Dnrnv6 | Hcymz6[3]); +assign Ulrnv6 = (Knrnv6 & Rnrnv6); +assign Rnrnv6 = (~(Ynrnv6 & Fornv6)); +assign Fornv6 = (Mornv6 | Tornv6); +assign Mornv6 = (Aprnv6 & Hprnv6); +assign Hprnv6 = (~(Hcymz6[1] & Oprnv6)); +assign Oprnv6 = (~(Vprnv6 & Cqrnv6)); +assign Cqrnv6 = (~(Fjd7v6 & Jqrnv6)); +assign Jqrnv6 = (~(Qqrnv6 & Xqrnv6)); +assign Xqrnv6 = (!Hcymz6[2]); +assign Vprnv6 = (~(Hcymz6[2] & Errnv6)); +assign Aprnv6 = (Lrrnv6 & Dnrnv6); +assign Lrrnv6 = (~(Srrnv6 & Zrrnv6)); +assign Srrnv6 = (~(Gsrnv6 | Fjd7v6)); +assign Ynrnv6 = (Nsrnv6 & Usrnv6); +assign Usrnv6 = (~(Zrrnv6 & Btrnv6)); +assign Btrnv6 = (~(Dnrnv6 & Itrnv6)); +assign Itrnv6 = (~(Hcymz6[2] & Ptrnv6)); +assign Ptrnv6 = (~(Wtrnv6 & Tornv6)); +assign Tornv6 = (Durnv6 & Kurnv6); +assign Kurnv6 = (~(Errnv6 & Rurnv6)); +assign Wtrnv6 = (~(Hcymz6[1] | Fjd7v6)); +assign Nsrnv6 = (~(Yurnv6 & Fvrnv6)); +assign Yurnv6 = (Dnrnv6 ^ Hcymz6[3]); +assign Knrnv6 = (~(Mvrnv6 & Tvrnv6)); +assign Mvrnv6 = (Nlrnv6 ^ Hcymz6[4]); +assign Nlrnv6 = (~(Hcymz6[3] & Dnrnv6)); +assign Dnrnv6 = (~(Awrnv6 & Rurnv6)); +assign Rurnv6 = (!Hcymz6[1]); +assign Awrnv6 = (~(Hcymz6[2] | Fjd7v6)); +assign G0d7v6 = (~(Hwrnv6 ^ Owrnv6)); +assign Hwrnv6 = (~(Rr0nz6[0] & Vwrnv6)); +assign M1d7v6 = (Cxrnv6 ^ Vwrnv6); +assign Vwrnv6 = (Jxrnv6 | E5d7v6); +assign S2d7v6 = (~(Qxrnv6 & Xxrnv6)); +assign Qxrnv6 = (Lyrnv6 ? Eyrnv6 : Hw0nz6[2]); +assign G287v6 = (Syrnv6 & Zyrnv6); +assign Zyrnv6 = (Gzrnv6 & Nzrnv6); +assign Nzrnv6 = (E6rnv6 & Uzrnv6); +assign Gzrnv6 = (B0snv6 & I0snv6); +assign Syrnv6 = (P0snv6 & Xz67v6); +assign P0snv6 = (W0snv6 & D1snv6); +assign W0snv6 = (~(K1snv6 & R1snv6)); +assign W387v6 = (Xz67v6 & Y1snv6); +assign Y1snv6 = (~(F2snv6 & M2snv6)); +assign M2snv6 = (~(T2snv6 & I0snv6)); +assign T2snv6 = (~(A3snv6 & H3snv6)); +assign H3snv6 = (O3snv6 & V3snv6); +assign V3snv6 = (~(L587v6 | Tf87v6)); +assign O3snv6 = (C4snv6 & J4snv6); +assign C4snv6 = (~(Q4snv6 & Qmbet6)); +assign Q4snv6 = (~(X4snv6 | Wfo7v6)); +assign A3snv6 = (E5snv6 & L5snv6); +assign L5snv6 = (Sgymz6[8] ? Z5snv6 : S5snv6); +assign Z5snv6 = (~(G6snv6 & N6snv6)); +assign N6snv6 = (~(U6snv6 & B7snv6)); +assign B7snv6 = (Sgymz6[10] | Sgymz6[9]); +assign S5snv6 = (I7snv6 | G6snv6); +assign I7snv6 = (Sgymz6[9] ? U6snv6 : Sgymz6[10]); +assign E5snv6 = (P7snv6 & W7snv6); +assign W7snv6 = (~(D8snv6 & Sgymz6[10])); +assign D8snv6 = (G6snv6 ? R8snv6 : K8snv6); +assign G6snv6 = (Y8snv6 & F9snv6); +assign F9snv6 = (Sgymz6[0] ? T9snv6 : M9snv6); +assign T9snv6 = (~(Aasnv6 & Hasnv6)); +assign Hasnv6 = (~(Sgymz6[1] | Sgymz6[3])); +assign Aasnv6 = (Sgymz6[2] & Oasnv6); +assign M9snv6 = (~(Vasnv6 & Cbsnv6)); +assign Vasnv6 = (Sgymz6[3] ? Qbsnv6 : Jbsnv6); +assign Qbsnv6 = (Uh77v6 & Xbsnv6); +assign Jbsnv6 = (Sgymz6[2] & Ecsnv6); +assign Y8snv6 = (Lcsnv6 & Scsnv6); +assign Scsnv6 = (~(Tn77v6 & Zcsnv6)); +assign Lcsnv6 = (~(Sgymz6[2] & Gdsnv6)); +assign Gdsnv6 = (Ndsnv6 | Zcsnv6); +assign Ndsnv6 = (~(Udsnv6 | Cbsnv6)); +assign Cbsnv6 = (!Sgymz6[1]); +assign Udsnv6 = (Sgymz6[0] ? Iesnv6 : Besnv6); +assign Besnv6 = (Sgymz6[3] | Pesnv6); +assign R8snv6 = (~(Wesnv6 & Dfsnv6)); +assign Wesnv6 = (~(U6snv6 & Kfsnv6)); +assign K8snv6 = (Sgymz6[8] & Rfsnv6); +assign Rfsnv6 = (Dfsnv6 | U6snv6); +assign U6snv6 = (Yfsnv6 & Fgsnv6); +assign Fgsnv6 = (Sgymz6[4] ? Tgsnv6 : Mgsnv6); +assign Tgsnv6 = (Ahsnv6 | Hhsnv6); +assign Mgsnv6 = (Ohsnv6 & Vhsnv6); +assign Vhsnv6 = (~(Cisnv6 & Jisnv6)); +assign Jisnv6 = (~(Sgymz6[5] | Sgymz6[6])); +assign Cisnv6 = (Uh77v6 & Sgymz6[7]); +assign Ohsnv6 = (Ahsnv6 | Qisnv6); +assign Ahsnv6 = (~(Xisnv6 & Sgymz6[6])); +assign Xisnv6 = (~(Sgymz6[5] | Sgymz6[7])); +assign Yfsnv6 = (Ejsnv6 & Ljsnv6); +assign Ljsnv6 = (~(Sjsnv6 & Zjsnv6)); +assign Zjsnv6 = (Sgymz6[4] ? Nksnv6 : Gksnv6); +assign Nksnv6 = (Uksnv6 | Sgymz6[7]); +assign Gksnv6 = (~(Sgymz6[7] | Pesnv6)); +assign Sjsnv6 = (Sgymz6[6] & Sgymz6[5]); +assign Ejsnv6 = (~(Tn77v6 & Blsnv6)); +assign Dfsnv6 = (!Sgymz6[9]); +assign W8zmz6[1] = (~(Ilsnv6 & Plsnv6)); +assign Plsnv6 = (~(Wlsnv6 & Hbb7v6)); +assign Wlsnv6 = (Dmsnv6 & Uzrnv6); +assign Dmsnv6 = (~(Fgzmz6[0] & X477v6)); +assign Ilsnv6 = (~(Kmsnv6 & Rmsnv6)); +assign Rmsnv6 = (~(Ymsnv6 & Fnsnv6)); +assign Xm87v6 = (~(Mnsnv6 & Tnsnv6)); +assign Tnsnv6 = (~(Aosnv6 & Hosnv6)); +assign Hosnv6 = (~(Wha7z6 | U7a7v6)); +assign Aosnv6 = (N6c7v6 & Oosnv6); +assign Mnsnv6 = (~(Vosnv6 & Cpsnv6)); +assign Oga7v6 = (~(J4snv6 & Jpsnv6)); +assign Jpsnv6 = (~(Fgzmz6[0] & Qpsnv6)); +assign Qpsnv6 = (~(Xpsnv6 & Eqsnv6)); +assign Eqsnv6 = (~(Xco7v6 | Cdb7v6)); +assign Xpsnv6 = (Lqsnv6 & Sqsnv6); +assign T5b7v6 = (~(Wfo7v6 & Zqsnv6)); +assign Zqsnv6 = (~(Grsnv6 & Gdc7v6)); +assign Grsnv6 = (Pfo7v6 & Nrsnv6); +assign L5zmz6[6] = (Ursnv6 ? Slzmz6[6] : Rjzmz6[6]); +assign L5zmz6[5] = (Ursnv6 ? Slzmz6[5] : Rjzmz6[5]); +assign L5zmz6[4] = (Ursnv6 ? Slzmz6[4] : Rjzmz6[4]); +assign L5zmz6[3] = (Ursnv6 ? Slzmz6[3] : Rjzmz6[3]); +assign L5zmz6[2] = (Ursnv6 ? Slzmz6[2] : Rjzmz6[2]); +assign L5zmz6[1] = (Ursnv6 ? Slzmz6[1] : Rjzmz6[1]); +assign Vzymz6[3] = (~(Bssnv6 & Issnv6)); +assign Issnv6 = (~(Pssnv6 & Lczmz6[3])); +assign Bssnv6 = (Wssnv6 & Dtsnv6); +assign Dtsnv6 = (~(Ktsnv6 & Lczmz6[2])); +assign Wssnv6 = (Rtsnv6 | Ytsnv6); +assign Vzymz6[2] = (Rtsnv6 ^ Ytsnv6); +assign Ytsnv6 = (~(Ktsnv6 ^ Fusnv6)); +assign Fusnv6 = (Pssnv6 & Lczmz6[2]); +assign Ktsnv6 = (~(Musnv6 | Tusnv6)); +assign Rtsnv6 = (Avsnv6 | Hvsnv6); +assign Avsnv6 = (Ovsnv6 | Vvsnv6); +assign Vzymz6[1] = (~(Cwsnv6 ^ Vvsnv6)); +assign Vvsnv6 = (~(Jwsnv6 ^ Musnv6)); +assign Jwsnv6 = (~(Pssnv6 & Lczmz6[1])); +assign Cwsnv6 = (~(Hvsnv6 | Ovsnv6)); +assign Vzymz6[0] = (Hvsnv6 ^ Ovsnv6); +assign Ovsnv6 = (~(Qwsnv6 & W9c7v6)); +assign Qwsnv6 = (W8zmz6[0] & Cpsnv6); +assign Hvsnv6 = (~(Musnv6 & Xwsnv6)); +assign Xwsnv6 = (~(Exsnv6 & Lxsnv6)); +assign Lxsnv6 = (~(Lczmz6[0] & Pssnv6)); +assign Musnv6 = (~(Sxsnv6 & Lczmz6[0])); +assign Sxsnv6 = (~(B0snv6 | Exsnv6)); +assign Exsnv6 = (Wha7z6 ? Gysnv6 : Zxsnv6); +assign Gysnv6 = (Nysnv6 | H8c7v6); +assign Nysnv6 = (!W8zmz6[0]); +assign Zxsnv6 = (~(Uysnv6 & Oosnv6)); +assign Uysnv6 = (~(U7a7v6 | N6c7v6)); +assign U7a7v6 = (Bzsnv6 | K9a7v6); +assign K9a7v6 = (~(Izsnv6 & Pzsnv6)); +assign Pzsnv6 = (~(Wzsnv6 & D0tnv6)); +assign D0tnv6 = (K0tnv6 & R0tnv6); +assign K0tnv6 = (X4snv6 & Uzrnv6); +assign Wzsnv6 = (Y0tnv6 & Ztb7v6); +assign Y0tnv6 = (~(Xco7v6 | W577v6)); +assign Bzsnv6 = (F1tnv6 & Jsb7v6); +assign F1tnv6 = (~(M1tnv6 | Wha7z6)); +assign F787v6 = (~(T1tnv6 & A2tnv6)); +assign A2tnv6 = (~(H2tnv6 | Oob7v6)); +assign T1tnv6 = (Tvrnv6 & O2tnv6); +assign O2tnv6 = (~(Fgzmz6[0] & V2tnv6)); +assign V2tnv6 = (~(C3tnv6 & J3tnv6)); +assign J3tnv6 = (Q3tnv6 & X3tnv6); +assign Q3tnv6 = (~(S677v6 | Bba7v6)); +assign C3tnv6 = (~(E4tnv6 | Edo7v6)); +assign E4tnv6 = (W577v6 & L4tnv6); +assign L4tnv6 = (Nw97v6 | H8c7v6); +assign P0b7v6 = (~(S4tnv6 & Z4tnv6)); +assign Z4tnv6 = (~(G5tnv6 & N5tnv6)); +assign N5tnv6 = (U5tnv6 & B6tnv6); +assign B6tnv6 = (~(I6tnv6 | ETMINTNUM[6])); +assign I6tnv6 = (ETMINTNUM[7] | ETMINTNUM[8]); +assign U5tnv6 = (~(ETMINTNUM[4] | ETMINTNUM[5])); +assign G5tnv6 = (P6tnv6 & W6tnv6); +assign W6tnv6 = (~(D7tnv6 | ETMINTNUM[1])); +assign D7tnv6 = (ETMINTNUM[2] | ETMINTNUM[3]); +assign P6tnv6 = (~(ETMINTNUM[0] | K7tnv6)); +assign S4tnv6 = (~(R7tnv6 & Y7tnv6)); +assign Y7tnv6 = (Sqsnv6 & F8tnv6); +assign R7tnv6 = (D4b7v6 & Ldo7v6); +assign Qea7v6 = (~(Uzrnv6 & M8tnv6)); +assign M8tnv6 = (~(T8tnv6 & Zt67v6)); +assign Pma7v6 = (A9tnv6 & H9tnv6); +assign H9tnv6 = (Gsa7v6 & O9tnv6); +assign Ih87v6 = (Bhb7v6 & Fgzmz6[0]); +assign W3a7v6 = (~(V9tnv6 & Qjh7v6)); +assign V9tnv6 = (W1a7v6 ? Rmb7v6 : Catnv6); +assign Catnv6 = (~(Soa7v6 & Mqa7v6)); +assign P7b7v6 = (~(D1snv6 & Jatnv6)); +assign Jatnv6 = (~(Qatnv6 & W8zmz6[0])); +assign D1snv6 = (!Oosnv6); +assign Vca7v6 = (!X3tnv6); +assign Yk87v6 = (Vosnv6 & W9c7v6); +assign Fj87v6 = (Xatnv6 & Ebtnv6); +assign Ebtnv6 = (Lbtnv6 & Sbtnv6); +assign Sbtnv6 = (~(Zbtnv6 & Gctnv6)); +assign Gctnv6 = (~(Nctnv6 & Uctnv6)); +assign Nctnv6 = (Bdtnv6 & Idtnv6); +assign Zbtnv6 = (!Pdtnv6); +assign Lbtnv6 = (Wdtnv6 & Detnv6); +assign Xatnv6 = (Ketnv6 & Vosnv6); +assign Vosnv6 = (Retnv6 & Wha7z6); +assign Retnv6 = (H8c7v6 & W8zmz6[0]); +assign Rwa7v6 = (~(Yetnv6 & Fftnv6)); +assign Yetnv6 = (~(Mftnv6 & Tftnv6)); +assign Gsa7v6 = (I9b7v6 | Agtnv6); +assign Zxymz6[4] = (~(Hgtnv6 & Ogtnv6)); +assign Ogtnv6 = (~(Vgtnv6 & Chtnv6)); +assign Chtnv6 = (~(Jhtnv6 & Qhtnv6)); +assign Jhtnv6 = (Xhtnv6 & Eitnv6); +assign Xhtnv6 = (~(Litnv6 & Sitnv6)); +assign Sitnv6 = (~(Zitnv6 & Gjtnv6)); +assign Gjtnv6 = (Yhzmz6[0] | Yhzmz6[4]); +assign Litnv6 = (Njtnv6 & Ujtnv6); +assign Hgtnv6 = (Bktnv6 & Iktnv6); +assign Iktnv6 = (~(Pktnv6 & Wktnv6)); +assign Pktnv6 = (Dltnv6 & Ujtnv6); +assign Bktnv6 = (~(Yhzmz6[4] & Kltnv6)); +assign Kltnv6 = (Rltnv6 | Yhzmz6[3]); +assign Zxymz6[3] = (~(Yltnv6 & Fmtnv6)); +assign Fmtnv6 = (Mmtnv6 & Tmtnv6); +assign Yltnv6 = (Antnv6 & Hntnv6); +assign Hntnv6 = (~(Dltnv6 & Ontnv6)); +assign Ontnv6 = (Vntnv6 | Cotnv6); +assign Cotnv6 = (~(Njtnv6 | Jotnv6)); +assign Vntnv6 = (Yhzmz6[2] ? Wktnv6 : Qotnv6); +assign Qotnv6 = (Yhzmz6[4] & Njtnv6); +assign Antnv6 = (Xotnv6 | Eptnv6); +assign Zxymz6[2] = (~(Lptnv6 & Sptnv6)); +assign Sptnv6 = (Mmtnv6 & Eitnv6); +assign Eitnv6 = (Ujtnv6 | Zptnv6); +assign Mmtnv6 = (~(Gqtnv6 & Nqtnv6)); +assign Nqtnv6 = (Uqtnv6 & Vgtnv6); +assign Uqtnv6 = (Brtnv6 & Njtnv6); +assign Gqtnv6 = (~(Ujtnv6 | Jotnv6)); +assign Lptnv6 = (Irtnv6 & Prtnv6); +assign Prtnv6 = (~(Vgtnv6 & Wrtnv6)); +assign Wrtnv6 = (~(Dstnv6 & Kstnv6)); +assign Kstnv6 = (~(Rstnv6 & Yhzmz6[0])); +assign Rstnv6 = (Wktnv6 & Njtnv6); +assign Irtnv6 = (~(Yhzmz6[2] & Ystnv6)); +assign Zxymz6[1] = (~(Fttnv6 & Mttnv6)); +assign Mttnv6 = (Tttnv6 & Zptnv6); +assign Zptnv6 = (~(Autnv6 & Yhzmz6[1])); +assign Fttnv6 = (Hutnv6 & Outnv6); +assign Outnv6 = (~(Yhzmz6[1] & Ystnv6)); +assign Ystnv6 = (~(Eptnv6 & Zitnv6)); +assign Hutnv6 = (Rltnv6 | Vutnv6); +assign Zxymz6[0] = (~(Cvtnv6 & Jvtnv6)); +assign Jvtnv6 = (Qvtnv6 & Tmtnv6); +assign Tmtnv6 = (~(Xvtnv6 & Yhzmz6[1])); +assign Xvtnv6 = (Yhzmz6[0] & Wktnv6); +assign Wktnv6 = (!Zitnv6); +assign Qvtnv6 = (Ewtnv6 | Jotnv6); +assign Ewtnv6 = (~(Dltnv6 & Tttnv6)); +assign Tttnv6 = (!Lwtnv6); +assign Dltnv6 = (~(Rltnv6 | Yhzmz6[0])); +assign Cvtnv6 = (Qhtnv6 & Swtnv6); +assign Swtnv6 = (Brtnv6 | Eptnv6); +assign Eptnv6 = (~(Rltnv6 | Yhzmz6[4])); +assign Rltnv6 = (!Vgtnv6); +assign Vgtnv6 = (Zwtnv6 & Gxtnv6); +assign Gxtnv6 = (~(Zxymz6[7] | Zxymz6[8])); +assign Zwtnv6 = (~(Zxymz6[5] | Zxymz6[6])); +assign Qhtnv6 = (Vutnv6 & Dstnv6); +assign Dstnv6 = (Nxtnv6 | Jotnv6); +assign Vutnv6 = (Uxtnv6 & Bytnv6); +assign Bytnv6 = (Nxtnv6 | Zitnv6); +assign Zitnv6 = (Xotnv6 | Yhzmz6[4]); +assign Xotnv6 = (!Yhzmz6[3]); +assign Nxtnv6 = (~(Iytnv6 & Yhzmz6[2])); +assign Iytnv6 = (Yhzmz6[0] & Njtnv6); +assign Njtnv6 = (!Yhzmz6[1]); +assign Uxtnv6 = (~(Autnv6 & Lwtnv6)); +assign Lwtnv6 = (Yhzmz6[1] & Ujtnv6); +assign Ujtnv6 = (!Yhzmz6[2]); +assign Autnv6 = (~(Brtnv6 | Jotnv6)); +assign Jotnv6 = (Yhzmz6[3] | Yhzmz6[4]); +assign Brtnv6 = (!Yhzmz6[0]); +assign Rka7v6 = (~(Pytnv6 & Nrsnv6)); +assign Pytnv6 = (Jjh7v6 & Wytnv6); +assign Wytnv6 = (!Mbc7v6); +assign I7zmz6[9] = (~(Dztnv6 & Kztnv6)); +assign Kztnv6 = (~(Ot77z6 & Rztnv6)); +assign Dztnv6 = (Yztnv6 & F0unv6); +assign F0unv6 = (~(Kk97v6 & M0unv6)); +assign Yztnv6 = (~(T0unv6 & Rjzmz6[9])); +assign I7zmz6[8] = (~(A1unv6 & H1unv6)); +assign H1unv6 = (~(Wt77z6 & Rztnv6)); +assign A1unv6 = (O1unv6 & V1unv6); +assign V1unv6 = (~(Tl97v6 & M0unv6)); +assign O1unv6 = (~(T0unv6 & Rjzmz6[8])); +assign I7zmz6[7] = (~(C2unv6 & J2unv6)); +assign J2unv6 = (~(Eu77z6 & Rztnv6)); +assign C2unv6 = (Q2unv6 & X2unv6); +assign X2unv6 = (~(Cn97v6 & M0unv6)); +assign Q2unv6 = (~(T0unv6 & Rjzmz6[7])); +assign I7zmz6[6] = (~(E3unv6 & L3unv6)); +assign L3unv6 = (~(Mu77z6 & Rztnv6)); +assign E3unv6 = (S3unv6 & Z3unv6); +assign Z3unv6 = (~(Lo97v6 & M0unv6)); +assign S3unv6 = (~(T0unv6 & Rjzmz6[6])); +assign I7zmz6[5] = (~(G4unv6 & N4unv6)); +assign N4unv6 = (~(Uu77z6 & Rztnv6)); +assign G4unv6 = (U4unv6 & B5unv6); +assign B5unv6 = (~(Up97v6 & M0unv6)); +assign U4unv6 = (~(T0unv6 & Rjzmz6[5])); +assign I7zmz6[4] = (~(I5unv6 & P5unv6)); +assign P5unv6 = (~(Cv77z6 & Rztnv6)); +assign I5unv6 = (W5unv6 & D6unv6); +assign D6unv6 = (~(Dr97v6 & M0unv6)); +assign W5unv6 = (~(T0unv6 & Rjzmz6[4])); +assign I7zmz6[3] = (~(K6unv6 & R6unv6)); +assign R6unv6 = (~(Kv77z6 & Rztnv6)); +assign K6unv6 = (Y6unv6 & F7unv6); +assign F7unv6 = (~(Ms97v6 & M0unv6)); +assign Y6unv6 = (~(T0unv6 & Rjzmz6[3])); +assign I7zmz6[31] = (~(M7unv6 & T7unv6)); +assign T7unv6 = (~(Um77z6 & Rztnv6)); +assign M7unv6 = (A8unv6 & H8unv6); +assign H8unv6 = (~(Uq87v6 & M0unv6)); +assign A8unv6 = (~(T0unv6 & Rjzmz6[31])); +assign I7zmz6[30] = (~(O8unv6 & V8unv6)); +assign V8unv6 = (~(Cn77z6 & Rztnv6)); +assign O8unv6 = (C9unv6 & J9unv6); +assign J9unv6 = (~(Ds87v6 & M0unv6)); +assign C9unv6 = (~(T0unv6 & Rjzmz6[30])); +assign I7zmz6[2] = (~(Q9unv6 & X9unv6)); +assign X9unv6 = (~(Sv77z6 & Rztnv6)); +assign Q9unv6 = (Eaunv6 & Launv6); +assign Launv6 = (~(Vt97v6 & M0unv6)); +assign Eaunv6 = (~(T0unv6 & Rjzmz6[2])); +assign I7zmz6[29] = (~(Saunv6 & Zaunv6)); +assign Zaunv6 = (~(Kn77z6 & Rztnv6)); +assign Saunv6 = (Gbunv6 & Nbunv6); +assign Nbunv6 = (~(Mt87v6 & M0unv6)); +assign Gbunv6 = (~(T0unv6 & Rjzmz6[29])); +assign I7zmz6[28] = (~(Ubunv6 & Bcunv6)); +assign Bcunv6 = (~(Sn77z6 & Rztnv6)); +assign Ubunv6 = (Icunv6 & Pcunv6); +assign Pcunv6 = (~(Vu87v6 & M0unv6)); +assign Icunv6 = (~(T0unv6 & Rjzmz6[28])); +assign I7zmz6[27] = (~(Wcunv6 & Ddunv6)); +assign Ddunv6 = (~(Ao77z6 & Rztnv6)); +assign Wcunv6 = (Kdunv6 & Rdunv6); +assign Rdunv6 = (~(Ew87v6 & M0unv6)); +assign Kdunv6 = (~(T0unv6 & Rjzmz6[27])); +assign I7zmz6[26] = (~(Ydunv6 & Feunv6)); +assign Feunv6 = (~(Io77z6 & Rztnv6)); +assign Ydunv6 = (Meunv6 & Teunv6); +assign Teunv6 = (~(Nx87v6 & M0unv6)); +assign Meunv6 = (~(T0unv6 & Rjzmz6[26])); +assign I7zmz6[25] = (~(Afunv6 & Hfunv6)); +assign Hfunv6 = (~(Qo77z6 & Rztnv6)); +assign Afunv6 = (Ofunv6 & Vfunv6); +assign Vfunv6 = (~(Wy87v6 & M0unv6)); +assign Ofunv6 = (~(T0unv6 & Rjzmz6[25])); +assign I7zmz6[24] = (~(Cgunv6 & Jgunv6)); +assign Jgunv6 = (~(Yo77z6 & Rztnv6)); +assign Cgunv6 = (Qgunv6 & Xgunv6); +assign Xgunv6 = (~(F097v6 & M0unv6)); +assign Qgunv6 = (~(T0unv6 & Rjzmz6[24])); +assign I7zmz6[23] = (~(Ehunv6 & Lhunv6)); +assign Lhunv6 = (~(Gp77z6 & Rztnv6)); +assign Ehunv6 = (Shunv6 & Zhunv6); +assign Zhunv6 = (~(O197v6 & M0unv6)); +assign Shunv6 = (~(T0unv6 & Rjzmz6[23])); +assign I7zmz6[22] = (~(Giunv6 & Niunv6)); +assign Niunv6 = (~(Op77z6 & Rztnv6)); +assign Giunv6 = (Uiunv6 & Bjunv6); +assign Bjunv6 = (~(X297v6 & M0unv6)); +assign Uiunv6 = (~(T0unv6 & Rjzmz6[22])); +assign I7zmz6[21] = (~(Ijunv6 & Pjunv6)); +assign Pjunv6 = (~(Wp77z6 & Rztnv6)); +assign Ijunv6 = (Wjunv6 & Dkunv6); +assign Dkunv6 = (~(G497v6 & M0unv6)); +assign Wjunv6 = (~(T0unv6 & Rjzmz6[21])); +assign I7zmz6[20] = (~(Kkunv6 & Rkunv6)); +assign Rkunv6 = (~(Eq77z6 & Rztnv6)); +assign Kkunv6 = (Ykunv6 & Flunv6); +assign Flunv6 = (~(P597v6 & M0unv6)); +assign Ykunv6 = (~(Rjzmz6[20] & T0unv6)); +assign I7zmz6[1] = (~(Mlunv6 & Tlunv6)); +assign Tlunv6 = (~(Aw77z6 & Rztnv6)); +assign Mlunv6 = (Amunv6 & Hmunv6); +assign Hmunv6 = (~(Ev97v6 & M0unv6)); +assign Amunv6 = (~(T0unv6 & Rjzmz6[1])); +assign I7zmz6[19] = (~(Omunv6 & Vmunv6)); +assign Vmunv6 = (~(Mq77z6 & Rztnv6)); +assign Omunv6 = (Cnunv6 & Jnunv6); +assign Jnunv6 = (~(Y697v6 & M0unv6)); +assign Cnunv6 = (~(T0unv6 & Rjzmz6[19])); +assign I7zmz6[18] = (~(Qnunv6 & Xnunv6)); +assign Xnunv6 = (~(Uq77z6 & Rztnv6)); +assign Qnunv6 = (Eounv6 & Lounv6); +assign Lounv6 = (~(H897v6 & M0unv6)); +assign Eounv6 = (~(T0unv6 & Rjzmz6[18])); +assign I7zmz6[17] = (~(Sounv6 & Zounv6)); +assign Zounv6 = (~(Cr77z6 & Rztnv6)); +assign Sounv6 = (Gpunv6 & Npunv6); +assign Npunv6 = (~(Q997v6 & M0unv6)); +assign Gpunv6 = (~(T0unv6 & Rjzmz6[17])); +assign I7zmz6[16] = (~(Upunv6 & Bqunv6)); +assign Bqunv6 = (~(Kr77z6 & Rztnv6)); +assign Upunv6 = (Iqunv6 & Pqunv6); +assign Pqunv6 = (~(Za97v6 & M0unv6)); +assign Iqunv6 = (~(T0unv6 & Rjzmz6[16])); +assign I7zmz6[15] = (~(Wqunv6 & Drunv6)); +assign Drunv6 = (~(Sr77z6 & Rztnv6)); +assign Wqunv6 = (Krunv6 & Rrunv6); +assign Rrunv6 = (~(Ic97v6 & M0unv6)); +assign Krunv6 = (~(T0unv6 & Rjzmz6[15])); +assign I7zmz6[14] = (~(Yrunv6 & Fsunv6)); +assign Fsunv6 = (~(As77z6 & Rztnv6)); +assign Yrunv6 = (Msunv6 & Tsunv6); +assign Tsunv6 = (~(Rd97v6 & M0unv6)); +assign Msunv6 = (~(T0unv6 & Rjzmz6[14])); +assign I7zmz6[13] = (~(Atunv6 & Htunv6)); +assign Htunv6 = (~(Is77z6 & Rztnv6)); +assign Atunv6 = (Otunv6 & Vtunv6); +assign Vtunv6 = (~(Af97v6 & M0unv6)); +assign Otunv6 = (~(T0unv6 & Rjzmz6[13])); +assign I7zmz6[12] = (~(Cuunv6 & Juunv6)); +assign Juunv6 = (~(Qs77z6 & Rztnv6)); +assign Cuunv6 = (Quunv6 & Xuunv6); +assign Xuunv6 = (~(Jg97v6 & M0unv6)); +assign Quunv6 = (~(T0unv6 & Rjzmz6[12])); +assign I7zmz6[11] = (~(Evunv6 & Lvunv6)); +assign Lvunv6 = (~(Ys77z6 & Rztnv6)); +assign Evunv6 = (Svunv6 & Zvunv6); +assign Zvunv6 = (~(Sh97v6 & M0unv6)); +assign Svunv6 = (~(T0unv6 & Rjzmz6[11])); +assign I7zmz6[10] = (~(Gwunv6 & Nwunv6)); +assign Nwunv6 = (~(Gt77z6 & Rztnv6)); +assign Gwunv6 = (Uwunv6 & Bxunv6); +assign Bxunv6 = (~(Bj97v6 & M0unv6)); +assign Uwunv6 = (~(T0unv6 & Rjzmz6[10])); +assign Lua7v6 = (Ixunv6 & Agtnv6); +assign Agtnv6 = (!K7tnv6); +assign Ixunv6 = (F02nv6 & R0tnv6); +assign Mqa7v6 = (!Pxunv6); +assign Nw97v6 = (~(Wxunv6 & Dyunv6)); +assign Dyunv6 = (~(Kyunv6 & Detnv6)); +assign Kyunv6 = (~(Ryunv6 & Yyunv6)); +assign Yyunv6 = (~(M0unv6 & H8c7v6)); +assign M0unv6 = (~(Rztnv6 | Fzunv6)); +assign Ryunv6 = (~(T0unv6 & N6c7v6)); +assign T0unv6 = (~(Mzunv6 | Rztnv6)); +assign Rztnv6 = (Wdtnv6 | Xco7v6); +assign Mzunv6 = (!Fzunv6); +assign Wxunv6 = (~(Ketnv6 & Wdtnv6)); +assign Cy97v6 = (Tzunv6 & Wdtnv6); +assign Tzunv6 = (T077v6 ? Qobet6 : A0vnv6); +assign T1zmz6[9] = (H0vnv6 ? L5zmz6[9] : L5zmz6[8]); +assign T1zmz6[8] = (H0vnv6 ? L5zmz6[8] : L5zmz6[7]); +assign T1zmz6[7] = (~(O0vnv6 & V0vnv6)); +assign V0vnv6 = (~(C1vnv6 & J1vnv6)); +assign J1vnv6 = (~(Q1vnv6 & X1vnv6)); +assign X1vnv6 = (E2vnv6 & L2vnv6); +assign L2vnv6 = (S2vnv6 & Z2vnv6); +assign S2vnv6 = (~(P3zmz6[7] & G3vnv6)); +assign E2vnv6 = (N3vnv6 & U3vnv6); +assign U3vnv6 = (~(L5zmz6[10] ^ P3zmz6[10])); +assign N3vnv6 = (~(L5zmz6[11] ^ P3zmz6[11])); +assign Q1vnv6 = (B4vnv6 & I4vnv6); +assign I4vnv6 = (~(L5zmz6[9] ^ P3zmz6[9])); +assign B4vnv6 = (P4vnv6 & W4vnv6); +assign W4vnv6 = (~(L5zmz6[12] ^ P3zmz6[12])); +assign P4vnv6 = (~(L5zmz6[8] ^ P3zmz6[8])); +assign O0vnv6 = (D5vnv6 & K5vnv6); +assign D5vnv6 = (~(L5zmz6[7] & R5vnv6)); +assign R5vnv6 = (~(P3zmz6[7] & C1vnv6)); +assign T1zmz6[35] = (C1vnv6 & L5zmz6[31]); +assign T1zmz6[34] = (C1vnv6 & L5zmz6[30]); +assign T1zmz6[33] = (~(Y5vnv6 & F6vnv6)); +assign F6vnv6 = (~(Oosnv6 & M6vnv6)); +assign M6vnv6 = (Y5a7v6 | Fgzmz6[1]); +assign Y5vnv6 = (~(C1vnv6 & L5zmz6[29])); +assign T1zmz6[32] = (~(T6vnv6 & A7vnv6)); +assign A7vnv6 = (~(Oosnv6 & H7vnv6)); +assign H7vnv6 = (Uzrnv6 | Y5a7v6); +assign Y5a7v6 = (I1c7v6 ? R0tnv6 : O7vnv6); +assign O7vnv6 = (Qvb7v6 & V7vnv6); +assign V7vnv6 = (~(Xw67v6 & C8vnv6)); +assign C8vnv6 = (J2b7v6 | Hqb7v6); +assign T6vnv6 = (~(C1vnv6 & L5zmz6[28])); +assign T1zmz6[31] = (H0vnv6 ? L5zmz6[31] : J8vnv6); +assign T1zmz6[30] = (!Q8vnv6); +assign Q8vnv6 = (C1vnv6 ? E9vnv6 : X8vnv6); +assign E9vnv6 = (J8vnv6 ? L9vnv6 : Z2vnv6); +assign T1zmz6[29] = (H0vnv6 ? L5zmz6[29] : L5zmz6[26]); +assign T1zmz6[28] = (H0vnv6 ? L5zmz6[28] : L5zmz6[25]); +assign T1zmz6[27] = (H0vnv6 ? L5zmz6[27] : L5zmz6[24]); +assign T1zmz6[26] = (H0vnv6 ? L5zmz6[26] : L5zmz6[23]); +assign T1zmz6[25] = (H0vnv6 ? L5zmz6[25] : L5zmz6[22]); +assign T1zmz6[24] = (H0vnv6 ? L5zmz6[24] : L5zmz6[21]); +assign T1zmz6[23] = (H0vnv6 ? L5zmz6[23] : S9vnv6); +assign T1zmz6[22] = (H0vnv6 ? L5zmz6[22] : Z9vnv6); +assign Z9vnv6 = (S9vnv6 ? Tct8v6 : Zz97v6); +assign T1zmz6[21] = (H0vnv6 ? L5zmz6[21] : L5zmz6[19]); +assign T1zmz6[20] = (H0vnv6 ? Tct8v6 : L5zmz6[18]); +assign T1zmz6[19] = (H0vnv6 ? L5zmz6[19] : L5zmz6[17]); +assign T1zmz6[18] = (H0vnv6 ? L5zmz6[18] : L5zmz6[16]); +assign T1zmz6[17] = (H0vnv6 ? L5zmz6[17] : L5zmz6[15]); +assign T1zmz6[16] = (H0vnv6 ? L5zmz6[16] : L5zmz6[14]); +assign T1zmz6[15] = (~(K5vnv6 & Gavnv6)); +assign Gavnv6 = (~(L5zmz6[15] & H0vnv6)); +assign K5vnv6 = (!Navnv6); +assign T1zmz6[14] = (Uavnv6 | Bbvnv6); +assign Bbvnv6 = (Navnv6 & L5zmz6[13]); +assign Navnv6 = (~(H0vnv6 | Ibvnv6)); +assign Uavnv6 = (C1vnv6 ? Pbvnv6 : L5zmz6[14]); +assign C1vnv6 = (!H0vnv6); +assign Pbvnv6 = (Ibvnv6 & Zz97v6); +assign Ibvnv6 = (Wbvnv6 & Dcvnv6); +assign Dcvnv6 = (Kcvnv6 & Rcvnv6); +assign Rcvnv6 = (Ycvnv6 & Fdvnv6); +assign Fdvnv6 = (!S9vnv6); +assign S9vnv6 = (~(Mdvnv6 & Tdvnv6)); +assign Tdvnv6 = (Aevnv6 & Hevnv6); +assign Hevnv6 = (Oevnv6 & Vevnv6); +assign Vevnv6 = (!J8vnv6); +assign J8vnv6 = (~(Cfvnv6 & Jfvnv6)); +assign Jfvnv6 = (Qfvnv6 & Xfvnv6); +assign Xfvnv6 = (~(L5zmz6[29] ^ P3zmz6[29])); +assign Qfvnv6 = (Egvnv6 & Lgvnv6); +assign Lgvnv6 = (~(L5zmz6[31] ^ P3zmz6[31])); +assign Egvnv6 = (X8vnv6 ^ P3zmz6[30]); +assign Cfvnv6 = (Sgvnv6 & Zgvnv6); +assign Zgvnv6 = (L9vnv6 ^ P3zmz6[27]); +assign Sgvnv6 = (~(L5zmz6[28] ^ P3zmz6[28])); +assign Oevnv6 = (~(P3zmz6[20] ^ Tct8v6)); +assign Aevnv6 = (Ghvnv6 & Nhvnv6); +assign Nhvnv6 = (~(L5zmz6[21] ^ P3zmz6[21])); +assign Ghvnv6 = (~(L5zmz6[22] ^ P3zmz6[22])); +assign Mdvnv6 = (Uhvnv6 & Bivnv6); +assign Bivnv6 = (Iivnv6 & Pivnv6); +assign Pivnv6 = (~(L5zmz6[23] ^ P3zmz6[23])); +assign Iivnv6 = (~(L5zmz6[24] ^ P3zmz6[24])); +assign Uhvnv6 = (Wivnv6 & Djvnv6); +assign Djvnv6 = (~(L5zmz6[25] ^ P3zmz6[25])); +assign Wivnv6 = (~(L5zmz6[26] ^ P3zmz6[26])); +assign Ycvnv6 = (~(L5zmz6[13] ^ P3zmz6[13])); +assign Kcvnv6 = (Kjvnv6 & Rjvnv6); +assign Rjvnv6 = (~(L5zmz6[14] ^ P3zmz6[14])); +assign Kjvnv6 = (~(L5zmz6[15] ^ P3zmz6[15])); +assign Wbvnv6 = (Yjvnv6 & Fkvnv6); +assign Fkvnv6 = (Mkvnv6 & Tkvnv6); +assign Tkvnv6 = (~(L5zmz6[16] ^ P3zmz6[16])); +assign Mkvnv6 = (~(L5zmz6[17] ^ P3zmz6[17])); +assign Yjvnv6 = (Alvnv6 & Hlvnv6); +assign Hlvnv6 = (~(L5zmz6[18] ^ P3zmz6[18])); +assign Alvnv6 = (~(L5zmz6[19] ^ P3zmz6[19])); +assign T1zmz6[13] = (H0vnv6 ? L5zmz6[13] : L5zmz6[12]); +assign T1zmz6[12] = (H0vnv6 ? L5zmz6[12] : L5zmz6[11]); +assign T1zmz6[11] = (H0vnv6 ? L5zmz6[11] : L5zmz6[10]); +assign T1zmz6[10] = (H0vnv6 ? L5zmz6[10] : L5zmz6[9]); +assign Sa77v6 = (Ue77z6 & Jrqnv6); +assign T0adt6 = (~(Olvnv6 & Vlvnv6)); +assign Vlvnv6 = (~(D1adt6 & Xkqnv6)); +assign Is97z6 = (~(Cmvnv6 & Jmvnv6)); +assign Jmvnv6 = (Qmvnv6 & Xmvnv6); +assign Cmvnv6 = (Envnv6 & Woinv6); +assign Woinv6 = (~(Lnvnv6 & Snvnv6)); +assign Lnvnv6 = (Znvnv6 & Bfo7v6); +assign Ys97z6 = (~(Govnv6 & Envnv6)); +assign Govnv6 = (Xmvnv6 & Ywinv6); +assign Ywinv6 = (!Qs97z6); +assign Qs97z6 = (~(Novnv6 & Uovnv6)); +assign Uovnv6 = (Bpvnv6 & Ipvnv6); +assign Novnv6 = (~(Poinv6 | Ppvnv6)); +assign Ppvnv6 = (!Wpvnv6); +assign Gt97z6 = (~(Dqvnv6 & Kpinv6)); +assign Kpinv6 = (Kqvnv6 & Rqvnv6); +assign Rqvnv6 = (~(Yqvnv6 & Frvnv6)); +assign Dqvnv6 = (Mrvnv6 & Trvnv6); +assign Mrvnv6 = (~(Poinv6 & Asvnv6)); +assign Asvnv6 = (~(Hsvnv6 & Osvnv6)); +assign Osvnv6 = (Vsvnv6 & Ctvnv6); +assign Ctvnv6 = (~(Jtvnv6 & Qtvnv6)); +assign Jtvnv6 = (~(Xtvnv6 & Dwb7z6[2])); +assign Vsvnv6 = (~(Euvnv6 & Luvnv6)); +assign Hsvnv6 = (Suvnv6 & Zuvnv6); +assign Zuvnv6 = (~(Dwb7z6[2] & Gvvnv6)); +assign Suvnv6 = (Bwvnv6 ? Uvvnv6 : Nvvnv6); +assign Poinv6 = (Iwvnv6 & Bfo7v6); +assign Ot97z6 = (~(Pwvnv6 & Trvnv6)); +assign Trvnv6 = (~(Wwvnv6 & Frvnv6)); +assign Pwvnv6 = (Ipvnv6 & Dxvnv6); +assign Ipvnv6 = (~(Kxvnv6 & Frvnv6)); +assign Frvnv6 = (~(Gaonv6 | Iga7z6)); +assign C3a7z6 = (!SWCLKTCK); +assign Y4a7z6 = (~(Rxvnv6 & Kqvnv6)); +assign Kqvnv6 = (Yxvnv6 & Envnv6); +assign Envnv6 = (Fyvnv6 & Myvnv6); +assign Myvnv6 = (~(Tyvnv6 & Azvnv6)); +assign Azvnv6 = (Hzvnv6 & Ozvnv6); +assign Hzvnv6 = (Vzvnv6 & C0wnv6); +assign Tyvnv6 = (J0wnv6 & Q0wnv6); +assign J0wnv6 = (X0wnv6 & E1wnv6); +assign Fyvnv6 = (~(L1wnv6 & S1wnv6)); +assign L1wnv6 = (Ldo7v6 & Qg2nv6); +assign Yxvnv6 = (Qmvnv6 & Bpvnv6); +assign Qmvnv6 = (~(Z1wnv6 & G2wnv6)); +assign G2wnv6 = (Dxvnv6 & Iga7z6); +assign Z1wnv6 = (Fqinv6 & Bpvnv6); +assign Fqinv6 = (Wpvnv6 & Xmvnv6); +assign Rxvnv6 = (Wpvnv6 & Dxvnv6); +assign W5a7z6 = (!Bj2nv6); +assign Cfa7z6 = (V5jnv6 & N2wnv6); +assign N2wnv6 = (~(M4jnv6 & T4jnv6)); +assign M4jnv6 = (!Vvlnv6); +assign Vvlnv6 = (H5jnv6 | U2wnv6); +assign H5jnv6 = (~(B3wnv6 & I3wnv6)); +assign Qga7z6 = (!Olzdt6); +assign Yga7z6 = (!Rgo7v6); +assign Kja7z6 = (!Hsi7z6[1]); +assign Sja7z6 = (!Hsi7z6[0]); +assign Dwl8v6 = (P3wnv6 & Glh7v6); +assign P3wnv6 = (~(W3wnv6 | Zkh7v6)); +assign Wvl8v6 = (D4wnv6 ^ Tmg7z6[32]); +assign Pvl8v6 = (Bt0ft6 & K4wnv6); +assign K4wnv6 = (!G5a7z6); +assign G5a7z6 = (~(R4wnv6 & Y4wnv6)); +assign Y4wnv6 = (~(F5wnv6 & Ejo7z6[0])); +assign F5wnv6 = (M5wnv6 & Ejo7z6[1]); +assign R4wnv6 = (T5wnv6 | A6wnv6); +assign Bt0ft6 = (~(H6wnv6 & O6wnv6)); +assign O6wnv6 = (~(V6wnv6 & C7wnv6)); +assign H6wnv6 = (J7wnv6 & A6wnv6); +assign J7wnv6 = (~(M5wnv6 & Ejo7z6[1])); +assign M5wnv6 = (!Q7wnv6); +assign Ivl8v6 = (~(X7wnv6 & E8wnv6)); +assign E8wnv6 = (~(L8wnv6 & Itb7z6[31])); +assign X7wnv6 = (S8wnv6 & Z8wnv6); +assign Z8wnv6 = (~(G9wnv6 & N9wnv6)); +assign N9wnv6 = (~(U9wnv6 & Bawnv6)); +assign Bawnv6 = (Iawnv6 & Pawnv6); +assign Pawnv6 = (Wawnv6 | Dbwnv6); +assign Iawnv6 = (~(Dtm7z6[3] & Kbwnv6)); +assign U9wnv6 = (Rbwnv6 & Ybwnv6); +assign Ybwnv6 = (~(Dtm7z6[0] & HRDATAD[31])); +assign Rbwnv6 = (~(Dtm7z6[1] & HRDATAS[31])); +assign S8wnv6 = (~(Fcwnv6 & Mcwnv6)); +assign Bvl8v6 = (Adwnv6 ? Tcwnv6 : Dbymz6[1]); +assign Tcwnv6 = (Dbymz6[0] & Hdwnv6); +assign Hdwnv6 = (~(Odwnv6 & Vdwnv6)); +assign Vdwnv6 = (Dbymz6[1] & Cewnv6); +assign Odwnv6 = (Jewnv6 & Qewnv6); +assign Uul8v6 = (~(Xewnv6 & Efwnv6)); +assign Efwnv6 = (Lfwnv6 & Sfwnv6); +assign Sfwnv6 = (~(Tfxmz6[11] & Zfwnv6)); +assign Lfwnv6 = (~(Njxmz6[11] & Ggwnv6)); +assign Xewnv6 = (Ngwnv6 & Ugwnv6); +assign Ugwnv6 = (~(Ub67v6 & Bhwnv6)); +assign Ngwnv6 = (~(Hnxmz6[11] & Ihwnv6)); +assign Nul8v6 = (~(Phwnv6 & Whwnv6)); +assign Whwnv6 = (~(Diwnv6 & Tfxmz6[11])); +assign Phwnv6 = (Kiwnv6 & Riwnv6); +assign Riwnv6 = (~(Yiwnv6 & Hnxmz6[11])); +assign Kiwnv6 = (~(L5ymz6[26] & Fjwnv6)); +assign Gul8v6 = (~(Mjwnv6 & Tjwnv6)); +assign Tjwnv6 = (Akwnv6 & Hkwnv6); +assign Hkwnv6 = (~(Ii47v6 & Okwnv6)); +assign Akwnv6 = (Vkwnv6 & Clwnv6); +assign Clwnv6 = (~(Uixmz6[31] & Jlwnv6)); +assign Vkwnv6 = (~(Coxmz6[31] & Qlwnv6)); +assign Mjwnv6 = (Xlwnv6 & Emwnv6); +assign Emwnv6 = (~(L5ymz6[34] & Lmwnv6)); +assign Xlwnv6 = (~(TDI & Smwnv6)); +assign Ztl8v6 = (Zmwnv6 ? U3o7z6[31] : Mcwnv6); +assign Stl8v6 = (~(Gnwnv6 & Nnwnv6)); +assign Nnwnv6 = (~(Unwnv6 & Bownv6)); +assign Gnwnv6 = (~(Iownv6 & Dtm7z6[2])); +assign Ltl8v6 = (~(Pownv6 & Wownv6)); +assign Wownv6 = (~(Dpwnv6 & Itb7z6[0])); +assign Pownv6 = (Kpwnv6 & Rpwnv6); +assign Rpwnv6 = (~(Ypwnv6 & Fqwnv6)); +assign Ypwnv6 = (~(Mqwnv6 & Tqwnv6)); +assign Tqwnv6 = (Arwnv6 & Hrwnv6); +assign Hrwnv6 = (~(Dtm7z6[3] & Orwnv6)); +assign Arwnv6 = (Wawnv6 | Vrwnv6); +assign Mqwnv6 = (Cswnv6 & Jswnv6); +assign Jswnv6 = (~(Dtm7z6[0] & HRDATAD[0])); +assign Cswnv6 = (~(Dtm7z6[1] & HRDATAS[0])); +assign Kpwnv6 = (~(Fcwnv6 & Qswnv6)); +assign Etl8v6 = (~(Xswnv6 & Etwnv6)); +assign Etwnv6 = (Ltwnv6 & Stwnv6); +assign Stwnv6 = (~(Ztwnv6 & Kxb7z6[31])); +assign Ltwnv6 = (Guwnv6 & Nuwnv6); +assign Nuwnv6 = (~(Uuwnv6 & Bvwnv6)); +assign Guwnv6 = (~(Ivwnv6 & Fhc7z6[31])); +assign Xswnv6 = (Pvwnv6 & Wvwnv6); +assign Wvwnv6 = (~(Dwwnv6 & Nqh7z6[31])); +assign Pvwnv6 = (~(Kwwnv6 & Fth7z6[31])); +assign Xsl8v6 = (~(Rwwnv6 & Ywwnv6)); +assign Ywwnv6 = (Fxwnv6 & Mxwnv6); +assign Mxwnv6 = (Txwnv6 & Aywnv6); +assign Txwnv6 = (~(Hywnv6 & Bvwnv6)); +assign Fxwnv6 = (Oywnv6 & Vywnv6); +assign Vywnv6 = (~(Czwnv6 & Fhc7z6[31])); +assign Oywnv6 = (~(Jzwnv6 & Pic7z6[31])); +assign Rwwnv6 = (Qzwnv6 & Xzwnv6); +assign Xzwnv6 = (E0xnv6 & L0xnv6); +assign L0xnv6 = (S0xnv6 | Z0xnv6); +assign E0xnv6 = (~(G1xnv6 & N1xnv6)); +assign Qzwnv6 = (U1xnv6 & B2xnv6); +assign B2xnv6 = (~(I2xnv6 & P2xnv6)); +assign U1xnv6 = (~(W2xnv6 & Pdc7z6[31])); +assign Qsl8v6 = (~(D3xnv6 & Dconv6)); +assign Jsl8v6 = (~(K3xnv6 & R3xnv6)); +assign R3xnv6 = (~(D3xnv6 & Y3xnv6)); +assign D3xnv6 = (!F4xnv6); +assign K3xnv6 = (~(Ujnet6 & M4xnv6)); +assign Csl8v6 = (~(T4xnv6 & A5xnv6)); +assign A5xnv6 = (~(H5xnv6 & Ujnet6)); +assign T4xnv6 = (~(O5xnv6 & L9d7z6[5])); +assign Vrl8v6 = (~(V5xnv6 & C6xnv6)); +assign C6xnv6 = (~(J6xnv6 & Q6xnv6)); +assign Q6xnv6 = (Dxvnv6 & X6xnv6); +assign J6xnv6 = (Geddt6 & E7xnv6); +assign E7xnv6 = (~(L7xnv6 & K3jnv6)); +assign V5xnv6 = (~(S7xnv6 & Q0wnv6)); +assign S7xnv6 = (Z7xnv6 & G8xnv6); +assign Z7xnv6 = (!N8xnv6); +assign Orl8v6 = (~(U8xnv6 & B9xnv6)); +assign B9xnv6 = (I9xnv6 & Aywnv6); +assign I9xnv6 = (~(G1xnv6 & P9xnv6)); +assign U8xnv6 = (W9xnv6 & Daxnv6); +assign Daxnv6 = (~(I2xnv6 & Kaxnv6)); +assign W9xnv6 = (~(Pdc7z6[0] & W2xnv6)); +assign Hrl8v6 = (~(Raxnv6 & Yaxnv6)); +assign Yaxnv6 = (Fbxnv6 & Mbxnv6); +assign Mbxnv6 = (Tbxnv6 & Aywnv6); +assign Tbxnv6 = (~(Hywnv6 & Acxnv6)); +assign Fbxnv6 = (Hcxnv6 & Ocxnv6); +assign Ocxnv6 = (~(Czwnv6 & Fhc7z6[30])); +assign Hcxnv6 = (~(Jzwnv6 & Pic7z6[30])); +assign Raxnv6 = (Vcxnv6 & Cdxnv6); +assign Cdxnv6 = (Jdxnv6 & Qdxnv6); +assign Qdxnv6 = (S0xnv6 | Xdxnv6); +assign Jdxnv6 = (~(G1xnv6 & Eexnv6)); +assign Vcxnv6 = (Lexnv6 & Sexnv6); +assign Sexnv6 = (~(I2xnv6 & Zexnv6)); +assign Lexnv6 = (~(W2xnv6 & Pdc7z6[30])); +assign Arl8v6 = (~(Gfxnv6 & Nfxnv6)); +assign Nfxnv6 = (Ufxnv6 & Bgxnv6); +assign Bgxnv6 = (Igxnv6 & Aywnv6); +assign Igxnv6 = (~(Hywnv6 & Pgxnv6)); +assign Ufxnv6 = (Wgxnv6 & Dhxnv6); +assign Dhxnv6 = (~(Czwnv6 & Fhc7z6[29])); +assign Wgxnv6 = (~(Jzwnv6 & Pic7z6[29])); +assign Gfxnv6 = (Khxnv6 & Rhxnv6); +assign Rhxnv6 = (Yhxnv6 & Fixnv6); +assign Fixnv6 = (S0xnv6 | Mixnv6); +assign Yhxnv6 = (~(G1xnv6 & Tixnv6)); +assign Khxnv6 = (Ajxnv6 & Hjxnv6); +assign Hjxnv6 = (~(I2xnv6 & Ojxnv6)); +assign Ajxnv6 = (~(W2xnv6 & Pdc7z6[29])); +assign Tql8v6 = (~(Vjxnv6 & Ckxnv6)); +assign Ckxnv6 = (Jkxnv6 & Qkxnv6); +assign Qkxnv6 = (Xkxnv6 & Aywnv6); +assign Xkxnv6 = (~(Hywnv6 & Elxnv6)); +assign Jkxnv6 = (Llxnv6 & Slxnv6); +assign Slxnv6 = (~(Czwnv6 & Fhc7z6[28])); +assign Llxnv6 = (~(Jzwnv6 & Pic7z6[28])); +assign Vjxnv6 = (Zlxnv6 & Gmxnv6); +assign Gmxnv6 = (Nmxnv6 & Umxnv6); +assign Umxnv6 = (S0xnv6 | Bnxnv6); +assign Nmxnv6 = (~(G1xnv6 & Inxnv6)); +assign Zlxnv6 = (Pnxnv6 & Wnxnv6); +assign Wnxnv6 = (~(I2xnv6 & Doxnv6)); +assign Pnxnv6 = (~(W2xnv6 & Pdc7z6[28])); +assign Mql8v6 = (~(Koxnv6 & Roxnv6)); +assign Roxnv6 = (Yoxnv6 & Fpxnv6); +assign Fpxnv6 = (Mpxnv6 & Aywnv6); +assign Mpxnv6 = (~(Hywnv6 & Tpxnv6)); +assign Yoxnv6 = (Aqxnv6 & Hqxnv6); +assign Hqxnv6 = (~(Czwnv6 & Fhc7z6[27])); +assign Aqxnv6 = (~(Jzwnv6 & Pic7z6[27])); +assign Koxnv6 = (Oqxnv6 & Vqxnv6); +assign Vqxnv6 = (Crxnv6 & Jrxnv6); +assign Jrxnv6 = (S0xnv6 | Qrxnv6); +assign Crxnv6 = (~(G1xnv6 & Xrxnv6)); +assign Oqxnv6 = (Esxnv6 & Lsxnv6); +assign Lsxnv6 = (~(I2xnv6 & Ssxnv6)); +assign Esxnv6 = (~(W2xnv6 & Pdc7z6[27])); +assign Fql8v6 = (~(Zsxnv6 & Gtxnv6)); +assign Gtxnv6 = (Ntxnv6 & Utxnv6); +assign Utxnv6 = (Buxnv6 & Aywnv6); +assign Buxnv6 = (~(Hywnv6 & Iuxnv6)); +assign Ntxnv6 = (Puxnv6 & Wuxnv6); +assign Wuxnv6 = (~(Czwnv6 & Fhc7z6[26])); +assign Puxnv6 = (~(Jzwnv6 & Pic7z6[26])); +assign Zsxnv6 = (Dvxnv6 & Kvxnv6); +assign Kvxnv6 = (Rvxnv6 & Yvxnv6); +assign Yvxnv6 = (S0xnv6 | Fwxnv6); +assign Rvxnv6 = (~(G1xnv6 & Mwxnv6)); +assign Dvxnv6 = (Twxnv6 & Axxnv6); +assign Axxnv6 = (~(I2xnv6 & Hxxnv6)); +assign Twxnv6 = (~(W2xnv6 & Pdc7z6[26])); +assign Ypl8v6 = (~(Oxxnv6 & Vxxnv6)); +assign Vxxnv6 = (Cyxnv6 & Jyxnv6); +assign Jyxnv6 = (Qyxnv6 & Aywnv6); +assign Qyxnv6 = (~(Hywnv6 & Xyxnv6)); +assign Cyxnv6 = (Ezxnv6 & Lzxnv6); +assign Lzxnv6 = (~(Czwnv6 & Fhc7z6[25])); +assign Ezxnv6 = (~(Jzwnv6 & Pic7z6[25])); +assign Oxxnv6 = (Szxnv6 & Zzxnv6); +assign Zzxnv6 = (G0ynv6 & N0ynv6); +assign N0ynv6 = (S0xnv6 | U0ynv6); +assign G0ynv6 = (~(G1xnv6 & B1ynv6)); +assign Szxnv6 = (I1ynv6 & P1ynv6); +assign P1ynv6 = (~(I2xnv6 & W1ynv6)); +assign I1ynv6 = (~(W2xnv6 & Pdc7z6[25])); +assign Rpl8v6 = (~(D2ynv6 & K2ynv6)); +assign K2ynv6 = (R2ynv6 & Y2ynv6); +assign Y2ynv6 = (F3ynv6 & Aywnv6); +assign F3ynv6 = (~(Hywnv6 & M3ynv6)); +assign R2ynv6 = (T3ynv6 & A4ynv6); +assign A4ynv6 = (~(Czwnv6 & Fhc7z6[24])); +assign T3ynv6 = (~(Jzwnv6 & Pic7z6[24])); +assign D2ynv6 = (H4ynv6 & O4ynv6); +assign O4ynv6 = (V4ynv6 & C5ynv6); +assign C5ynv6 = (S0xnv6 | J5ynv6); +assign V4ynv6 = (~(G1xnv6 & Kaxnv6)); +assign H4ynv6 = (Q5ynv6 & X5ynv6); +assign X5ynv6 = (~(I2xnv6 & P9xnv6)); +assign Q5ynv6 = (~(W2xnv6 & Pdc7z6[24])); +assign Kpl8v6 = (~(E6ynv6 & L6ynv6)); +assign L6ynv6 = (S6ynv6 & Z6ynv6); +assign Z6ynv6 = (G7ynv6 & Aywnv6); +assign G7ynv6 = (~(Hywnv6 & N7ynv6)); +assign S6ynv6 = (U7ynv6 & B8ynv6); +assign B8ynv6 = (~(Czwnv6 & Fhc7z6[23])); +assign U7ynv6 = (~(Jzwnv6 & Pic7z6[23])); +assign E6ynv6 = (I8ynv6 & P8ynv6); +assign P8ynv6 = (W8ynv6 & D9ynv6); +assign D9ynv6 = (S0xnv6 | K9ynv6); +assign W8ynv6 = (~(G1xnv6 & R9ynv6)); +assign I8ynv6 = (Y9ynv6 & Faynv6); +assign Faynv6 = (~(I2xnv6 & Maynv6)); +assign Y9ynv6 = (~(W2xnv6 & Pdc7z6[23])); +assign Dpl8v6 = (~(Taynv6 & Abynv6)); +assign Abynv6 = (Hbynv6 & Obynv6); +assign Obynv6 = (Vbynv6 & Aywnv6); +assign Vbynv6 = (~(Hywnv6 & Ccynv6)); +assign Hbynv6 = (Jcynv6 & Qcynv6); +assign Qcynv6 = (~(Czwnv6 & Fhc7z6[22])); +assign Jcynv6 = (~(Jzwnv6 & Pic7z6[22])); +assign Taynv6 = (Xcynv6 & Edynv6); +assign Edynv6 = (Ldynv6 & Sdynv6); +assign Sdynv6 = (S0xnv6 | Zdynv6); +assign Ldynv6 = (~(G1xnv6 & Geynv6)); +assign Xcynv6 = (Neynv6 & Ueynv6); +assign Ueynv6 = (~(I2xnv6 & Bfynv6)); +assign Neynv6 = (~(W2xnv6 & Pdc7z6[22])); +assign Wol8v6 = (~(Ifynv6 & Pfynv6)); +assign Pfynv6 = (Wfynv6 & Dgynv6); +assign Dgynv6 = (Kgynv6 & Aywnv6); +assign Kgynv6 = (~(Hywnv6 & Rgynv6)); +assign Wfynv6 = (Ygynv6 & Fhynv6); +assign Fhynv6 = (~(Czwnv6 & Fhc7z6[21])); +assign Ygynv6 = (~(Jzwnv6 & Pic7z6[21])); +assign Ifynv6 = (Mhynv6 & Thynv6); +assign Thynv6 = (Aiynv6 & Hiynv6); +assign Hiynv6 = (S0xnv6 | Oiynv6); +assign Aiynv6 = (~(G1xnv6 & Viynv6)); +assign Mhynv6 = (Cjynv6 & Jjynv6); +assign Jjynv6 = (~(I2xnv6 & Qjynv6)); +assign Cjynv6 = (~(W2xnv6 & Pdc7z6[21])); +assign Pol8v6 = (~(Xjynv6 & Ekynv6)); +assign Ekynv6 = (Lkynv6 & Skynv6); +assign Skynv6 = (Zkynv6 & Aywnv6); +assign Zkynv6 = (~(Hywnv6 & Glynv6)); +assign Lkynv6 = (Nlynv6 & Ulynv6); +assign Ulynv6 = (~(Czwnv6 & Fhc7z6[20])); +assign Nlynv6 = (~(Jzwnv6 & Pic7z6[20])); +assign Xjynv6 = (Bmynv6 & Imynv6); +assign Imynv6 = (Pmynv6 & Wmynv6); +assign Wmynv6 = (S0xnv6 | Dnynv6); +assign Pmynv6 = (~(G1xnv6 & Knynv6)); +assign Bmynv6 = (Rnynv6 & Ynynv6); +assign Ynynv6 = (~(I2xnv6 & Foynv6)); +assign Rnynv6 = (~(W2xnv6 & Pdc7z6[20])); +assign Iol8v6 = (~(Moynv6 & Toynv6)); +assign Toynv6 = (Apynv6 & Hpynv6); +assign Hpynv6 = (Opynv6 & Aywnv6); +assign Opynv6 = (~(Hywnv6 & Vpynv6)); +assign Apynv6 = (Cqynv6 & Jqynv6); +assign Jqynv6 = (~(Czwnv6 & Fhc7z6[19])); +assign Cqynv6 = (~(Jzwnv6 & Pic7z6[19])); +assign Moynv6 = (Qqynv6 & Xqynv6); +assign Xqynv6 = (Erynv6 & Lrynv6); +assign Lrynv6 = (S0xnv6 | Srynv6); +assign Erynv6 = (~(G1xnv6 & Zrynv6)); +assign Qqynv6 = (Gsynv6 & Nsynv6); +assign Nsynv6 = (~(I2xnv6 & Usynv6)); +assign Gsynv6 = (~(W2xnv6 & Pdc7z6[19])); +assign Bol8v6 = (~(Btynv6 & Itynv6)); +assign Itynv6 = (Ptynv6 & Wtynv6); +assign Wtynv6 = (Duynv6 & Aywnv6); +assign Duynv6 = (~(Hywnv6 & Kuynv6)); +assign Ptynv6 = (Ruynv6 & Yuynv6); +assign Yuynv6 = (~(Czwnv6 & Fhc7z6[18])); +assign Ruynv6 = (~(Jzwnv6 & Pic7z6[18])); +assign Btynv6 = (Fvynv6 & Mvynv6); +assign Mvynv6 = (Tvynv6 & Awynv6); +assign Awynv6 = (S0xnv6 | Hwynv6); +assign Tvynv6 = (~(G1xnv6 & Owynv6)); +assign Fvynv6 = (Vwynv6 & Cxynv6); +assign Cxynv6 = (~(I2xnv6 & Jxynv6)); +assign Vwynv6 = (~(W2xnv6 & Pdc7z6[18])); +assign Unl8v6 = (~(Qxynv6 & Xxynv6)); +assign Xxynv6 = (Eyynv6 & Lyynv6); +assign Lyynv6 = (Syynv6 & Aywnv6); +assign Syynv6 = (~(Hywnv6 & Zyynv6)); +assign Eyynv6 = (Gzynv6 & Nzynv6); +assign Nzynv6 = (~(Czwnv6 & Fhc7z6[17])); +assign Gzynv6 = (~(Jzwnv6 & Pic7z6[17])); +assign Qxynv6 = (Uzynv6 & B0znv6); +assign B0znv6 = (I0znv6 & P0znv6); +assign P0znv6 = (S0xnv6 | W0znv6); +assign I0znv6 = (~(G1xnv6 & D1znv6)); +assign Uzynv6 = (K1znv6 & R1znv6); +assign R1znv6 = (~(I2xnv6 & Y1znv6)); +assign K1znv6 = (~(W2xnv6 & Pdc7z6[17])); +assign Nnl8v6 = (~(F2znv6 & M2znv6)); +assign M2znv6 = (T2znv6 & A3znv6); +assign A3znv6 = (H3znv6 & Aywnv6); +assign H3znv6 = (~(Hywnv6 & O3znv6)); +assign T2znv6 = (V3znv6 & C4znv6); +assign C4znv6 = (~(Czwnv6 & Fhc7z6[16])); +assign V3znv6 = (~(Jzwnv6 & Pic7z6[16])); +assign F2znv6 = (J4znv6 & Q4znv6); +assign Q4znv6 = (X4znv6 & E5znv6); +assign E5znv6 = (S0xnv6 | L5znv6); +assign X4znv6 = (~(G1xnv6 & S5znv6)); +assign J4znv6 = (Z5znv6 & G6znv6); +assign G6znv6 = (~(I2xnv6 & N6znv6)); +assign Z5znv6 = (~(W2xnv6 & Pdc7z6[16])); +assign Gnl8v6 = (~(U6znv6 & B7znv6)); +assign B7znv6 = (I7znv6 & P7znv6); +assign P7znv6 = (W7znv6 & Aywnv6); +assign W7znv6 = (~(Hywnv6 & D8znv6)); +assign I7znv6 = (K8znv6 & R8znv6); +assign R8znv6 = (~(Czwnv6 & Fhc7z6[15])); +assign K8znv6 = (~(Jzwnv6 & Pic7z6[15])); +assign U6znv6 = (Y8znv6 & F9znv6); +assign F9znv6 = (M9znv6 & T9znv6); +assign T9znv6 = (S0xnv6 | Aaznv6); +assign M9znv6 = (~(G1xnv6 & Maynv6)); +assign Y8znv6 = (Haznv6 & Oaznv6); +assign Oaznv6 = (~(I2xnv6 & R9ynv6)); +assign Haznv6 = (~(W2xnv6 & Pdc7z6[15])); +assign Zml8v6 = (~(Vaznv6 & Cbznv6)); +assign Cbznv6 = (Jbznv6 & Qbznv6); +assign Qbznv6 = (Xbznv6 & Aywnv6); +assign Xbznv6 = (~(Hywnv6 & Ecznv6)); +assign Jbznv6 = (Lcznv6 & Scznv6); +assign Scznv6 = (~(Czwnv6 & Fhc7z6[14])); +assign Lcznv6 = (~(Jzwnv6 & Pic7z6[14])); +assign Vaznv6 = (Zcznv6 & Gdznv6); +assign Gdznv6 = (Ndznv6 & Udznv6); +assign Udznv6 = (S0xnv6 | Beznv6); +assign Ndznv6 = (~(G1xnv6 & Bfynv6)); +assign Zcznv6 = (Ieznv6 & Peznv6); +assign Peznv6 = (~(I2xnv6 & Geynv6)); +assign Ieznv6 = (~(W2xnv6 & Pdc7z6[14])); +assign Sml8v6 = (~(Weznv6 & Dfznv6)); +assign Dfznv6 = (Kfznv6 & Rfznv6); +assign Rfznv6 = (Yfznv6 & Aywnv6); +assign Yfznv6 = (~(Hywnv6 & Fgznv6)); +assign Kfznv6 = (Mgznv6 & Tgznv6); +assign Tgznv6 = (~(Czwnv6 & Fhc7z6[13])); +assign Mgznv6 = (~(Jzwnv6 & Pic7z6[13])); +assign Weznv6 = (Ahznv6 & Hhznv6); +assign Hhznv6 = (Ohznv6 & Vhznv6); +assign Vhznv6 = (S0xnv6 | Ciznv6); +assign Ohznv6 = (~(G1xnv6 & Qjynv6)); +assign Ahznv6 = (Jiznv6 & Qiznv6); +assign Qiznv6 = (~(I2xnv6 & Viynv6)); +assign Jiznv6 = (~(W2xnv6 & Pdc7z6[13])); +assign Lml8v6 = (~(Xiznv6 & Ejznv6)); +assign Ejznv6 = (Ljznv6 & Sjznv6); +assign Sjznv6 = (Zjznv6 & Aywnv6); +assign Zjznv6 = (~(Hywnv6 & Gkznv6)); +assign Ljznv6 = (Nkznv6 & Ukznv6); +assign Ukznv6 = (~(Czwnv6 & Fhc7z6[12])); +assign Nkznv6 = (~(Jzwnv6 & Pic7z6[12])); +assign Xiznv6 = (Blznv6 & Ilznv6); +assign Ilznv6 = (Plznv6 & Wlznv6); +assign Wlznv6 = (S0xnv6 | Dmznv6); +assign Plznv6 = (~(G1xnv6 & Foynv6)); +assign Blznv6 = (Kmznv6 & Rmznv6); +assign Rmznv6 = (~(I2xnv6 & Knynv6)); +assign Kmznv6 = (~(W2xnv6 & Pdc7z6[12])); +assign Eml8v6 = (~(Ymznv6 & Fnznv6)); +assign Fnznv6 = (Mnznv6 & Tnznv6); +assign Tnznv6 = (Aoznv6 & Aywnv6); +assign Aoznv6 = (~(Hywnv6 & Hoznv6)); +assign Mnznv6 = (Ooznv6 & Voznv6); +assign Voznv6 = (~(Czwnv6 & Fhc7z6[11])); +assign Ooznv6 = (~(Jzwnv6 & Pic7z6[11])); +assign Ymznv6 = (Cpznv6 & Jpznv6); +assign Jpznv6 = (Qpznv6 & Xpznv6); +assign Xpznv6 = (S0xnv6 | Eqznv6); +assign Qpznv6 = (~(G1xnv6 & Usynv6)); +assign Cpznv6 = (Lqznv6 & Sqznv6); +assign Sqznv6 = (~(I2xnv6 & Zrynv6)); +assign Lqznv6 = (~(W2xnv6 & Pdc7z6[11])); +assign Xll8v6 = (~(Zqznv6 & Grznv6)); +assign Grznv6 = (Nrznv6 & Urznv6); +assign Urznv6 = (Bsznv6 & Aywnv6); +assign Bsznv6 = (~(Hywnv6 & Isznv6)); +assign Nrznv6 = (Psznv6 & Wsznv6); +assign Wsznv6 = (~(Czwnv6 & Fhc7z6[10])); +assign Psznv6 = (~(Jzwnv6 & Pic7z6[10])); +assign Zqznv6 = (Dtznv6 & Ktznv6); +assign Ktznv6 = (Rtznv6 & Ytznv6); +assign Ytznv6 = (S0xnv6 | Fuznv6); +assign Rtznv6 = (~(G1xnv6 & Jxynv6)); +assign Dtznv6 = (Muznv6 & Tuznv6); +assign Tuznv6 = (~(I2xnv6 & Owynv6)); +assign Muznv6 = (~(W2xnv6 & Pdc7z6[10])); +assign Qll8v6 = (~(Avznv6 & Hvznv6)); +assign Hvznv6 = (Ovznv6 & Vvznv6); +assign Vvznv6 = (Cwznv6 & Aywnv6); +assign Cwznv6 = (~(Hywnv6 & Jwznv6)); +assign Ovznv6 = (Qwznv6 & Xwznv6); +assign Xwznv6 = (~(Czwnv6 & Fhc7z6[9])); +assign Qwznv6 = (~(Jzwnv6 & Pic7z6[9])); +assign Avznv6 = (Exznv6 & Lxznv6); +assign Lxznv6 = (Sxznv6 & Zxznv6); +assign Zxznv6 = (S0xnv6 | Gyznv6); +assign Sxznv6 = (~(G1xnv6 & Y1znv6)); +assign Exznv6 = (Nyznv6 & Uyznv6); +assign Uyznv6 = (~(I2xnv6 & D1znv6)); +assign Nyznv6 = (~(W2xnv6 & Pdc7z6[9])); +assign Jll8v6 = (~(Bzznv6 & Izznv6)); +assign Izznv6 = (Pzznv6 & Wzznv6); +assign Wzznv6 = (D00ov6 & Aywnv6); +assign D00ov6 = (~(Hywnv6 & K00ov6)); +assign Pzznv6 = (R00ov6 & Y00ov6); +assign Y00ov6 = (~(Czwnv6 & Fhc7z6[8])); +assign R00ov6 = (~(Jzwnv6 & Pic7z6[8])); +assign Bzznv6 = (F10ov6 & M10ov6); +assign M10ov6 = (T10ov6 & A20ov6); +assign A20ov6 = (S0xnv6 | H20ov6); +assign T10ov6 = (~(G1xnv6 & N6znv6)); +assign F10ov6 = (O20ov6 & V20ov6); +assign V20ov6 = (~(I2xnv6 & S5znv6)); +assign O20ov6 = (~(W2xnv6 & Pdc7z6[8])); +assign Cll8v6 = (~(C30ov6 & J30ov6)); +assign J30ov6 = (Q30ov6 & X30ov6); +assign X30ov6 = (E40ov6 & Aywnv6); +assign E40ov6 = (~(Hywnv6 & L40ov6)); +assign Q30ov6 = (S40ov6 & Z40ov6); +assign Z40ov6 = (~(Czwnv6 & Fhc7z6[7])); +assign S40ov6 = (~(Jzwnv6 & Pic7z6[7])); +assign C30ov6 = (G50ov6 & N50ov6); +assign N50ov6 = (U50ov6 & B60ov6); +assign B60ov6 = (S0xnv6 | I60ov6); +assign U50ov6 = (~(G1xnv6 & P2xnv6)); +assign G50ov6 = (P60ov6 & W60ov6); +assign W60ov6 = (~(I2xnv6 & N1xnv6)); +assign P60ov6 = (~(W2xnv6 & Pdc7z6[7])); +assign Vkl8v6 = (~(D70ov6 & K70ov6)); +assign K70ov6 = (R70ov6 & Y70ov6); +assign Y70ov6 = (F80ov6 & Aywnv6); +assign F80ov6 = (~(Hywnv6 & M80ov6)); +assign R70ov6 = (T80ov6 & A90ov6); +assign A90ov6 = (~(Czwnv6 & Fhc7z6[6])); +assign T80ov6 = (~(Jzwnv6 & Pic7z6[6])); +assign D70ov6 = (H90ov6 & O90ov6); +assign O90ov6 = (V90ov6 & Ca0ov6); +assign Ca0ov6 = (S0xnv6 | Ja0ov6); +assign V90ov6 = (~(G1xnv6 & Zexnv6)); +assign H90ov6 = (Qa0ov6 & Xa0ov6); +assign Xa0ov6 = (~(I2xnv6 & Eexnv6)); +assign Qa0ov6 = (~(W2xnv6 & Pdc7z6[6])); +assign Okl8v6 = (~(Eb0ov6 & Lb0ov6)); +assign Lb0ov6 = (Sb0ov6 & Zb0ov6); +assign Zb0ov6 = (Gc0ov6 & Aywnv6); +assign Gc0ov6 = (~(Hywnv6 & Nc0ov6)); +assign Sb0ov6 = (Uc0ov6 & Bd0ov6); +assign Bd0ov6 = (~(Czwnv6 & Fhc7z6[5])); +assign Uc0ov6 = (~(Jzwnv6 & Pic7z6[5])); +assign Eb0ov6 = (Id0ov6 & Pd0ov6); +assign Pd0ov6 = (Wd0ov6 & De0ov6); +assign De0ov6 = (S0xnv6 | Ke0ov6); +assign Wd0ov6 = (~(G1xnv6 & Ojxnv6)); +assign Id0ov6 = (Re0ov6 & Ye0ov6); +assign Ye0ov6 = (~(I2xnv6 & Tixnv6)); +assign Re0ov6 = (~(W2xnv6 & Pdc7z6[5])); +assign Hkl8v6 = (~(Ff0ov6 & Mf0ov6)); +assign Mf0ov6 = (Tf0ov6 & Ag0ov6); +assign Ag0ov6 = (Hg0ov6 & Aywnv6); +assign Hg0ov6 = (~(Hywnv6 & Og0ov6)); +assign Tf0ov6 = (Vg0ov6 & Ch0ov6); +assign Ch0ov6 = (~(Czwnv6 & E3c7z6[4])); +assign Vg0ov6 = (~(Jzwnv6 & Pic7z6[4])); +assign Ff0ov6 = (Jh0ov6 & Qh0ov6); +assign Qh0ov6 = (Xh0ov6 & Ei0ov6); +assign Ei0ov6 = (S0xnv6 | Li0ov6); +assign Xh0ov6 = (~(G1xnv6 & Doxnv6)); +assign Jh0ov6 = (Si0ov6 & Zi0ov6); +assign Zi0ov6 = (~(I2xnv6 & Inxnv6)); +assign Si0ov6 = (~(W2xnv6 & Pdc7z6[4])); +assign Akl8v6 = (~(Gj0ov6 & Nj0ov6)); +assign Nj0ov6 = (Uj0ov6 & Bk0ov6); +assign Bk0ov6 = (Ik0ov6 & Aywnv6); +assign Ik0ov6 = (~(Hywnv6 & Pk0ov6)); +assign Uj0ov6 = (Wk0ov6 & Dl0ov6); +assign Dl0ov6 = (~(Czwnv6 & E3c7z6[3])); +assign Wk0ov6 = (~(Jzwnv6 & Pic7z6[3])); +assign Gj0ov6 = (Kl0ov6 & Rl0ov6); +assign Rl0ov6 = (Yl0ov6 & Fm0ov6); +assign Fm0ov6 = (S0xnv6 | Mm0ov6); +assign Yl0ov6 = (~(G1xnv6 & Ssxnv6)); +assign Kl0ov6 = (Tm0ov6 & An0ov6); +assign An0ov6 = (~(I2xnv6 & Xrxnv6)); +assign Tm0ov6 = (~(W2xnv6 & Pdc7z6[3])); +assign Tjl8v6 = (~(Hn0ov6 & On0ov6)); +assign On0ov6 = (Vn0ov6 & Co0ov6); +assign Co0ov6 = (Jo0ov6 & Aywnv6); +assign Jo0ov6 = (~(Hywnv6 & Qo0ov6)); +assign Hywnv6 = (Xo0ov6 & Ep0ov6); +assign Xo0ov6 = (~(W2xnv6 | Lp0ov6)); +assign Vn0ov6 = (Sp0ov6 & Zp0ov6); +assign Zp0ov6 = (~(Czwnv6 & E3c7z6[2])); +assign Czwnv6 = (Gq0ov6 & Nq0ov6); +assign Gq0ov6 = (Lp0ov6 & Qdcdt6); +assign Sp0ov6 = (~(Jzwnv6 & Pic7z6[2])); +assign Jzwnv6 = (Uq0ov6 & Nq0ov6); +assign Nq0ov6 = (Ep0ov6 & Br0ov6); +assign Uq0ov6 = (Lp0ov6 & Ir0ov6); +assign Hn0ov6 = (Pr0ov6 & Wr0ov6); +assign Wr0ov6 = (Ds0ov6 & Ks0ov6); +assign Ks0ov6 = (S0xnv6 | Rs0ov6); +assign S0xnv6 = (~(Ys0ov6 & Br0ov6)); +assign Ys0ov6 = (Ft0ov6 | Mt0ov6); +assign Mt0ov6 = (Tt0ov6 & Au0ov6); +assign Tt0ov6 = (Lp0ov6 & Ep0ov6); +assign Ep0ov6 = (~(Hu0ov6 & Ou0ov6)); +assign Ou0ov6 = (~(Vu0ov6 & Cv0ov6)); +assign Cv0ov6 = (~(Jv0ov6 & Qv0ov6)); +assign Ds0ov6 = (~(G1xnv6 & Hxxnv6)); +assign Pr0ov6 = (Xv0ov6 & Ew0ov6); +assign Ew0ov6 = (~(I2xnv6 & Mwxnv6)); +assign Xv0ov6 = (~(W2xnv6 & Pdc7z6[2])); +assign Mjl8v6 = (~(Lw0ov6 & Sw0ov6)); +assign Sw0ov6 = (Zw0ov6 & Aywnv6); +assign Aywnv6 = (~(Gx0ov6 & Br0ov6)); +assign Gx0ov6 = (~(Nx0ov6 & Ux0ov6)); +assign Ux0ov6 = (~(Sgcdt6 & By0ov6)); +assign Zw0ov6 = (~(G1xnv6 & W1ynv6)); +assign G1xnv6 = (Iy0ov6 & Evadt6); +assign Iy0ov6 = (Br0ov6 & By0ov6); +assign Lw0ov6 = (Py0ov6 & Wy0ov6); +assign Wy0ov6 = (~(I2xnv6 & B1ynv6)); +assign I2xnv6 = (Dz0ov6 & Br0ov6); +assign Dz0ov6 = (By0ov6 & Euonv6); +assign Py0ov6 = (~(W2xnv6 & Pdc7z6[1])); +assign W2xnv6 = (!Br0ov6); +assign Br0ov6 = (~(Kz0ov6 & Rz0ov6)); +assign Rz0ov6 = (Yz0ov6 & F01ov6); +assign F01ov6 = (~(M01ov6 & Vu0ov6)); +assign M01ov6 = (Q0wnv6 & T01ov6); +assign T01ov6 = (~(Qv0ov6 & A11ov6)); +assign Yz0ov6 = (~(H11ov6 & O11ov6)); +assign O11ov6 = (~(Nx0ov6 & V11ov6)); +assign V11ov6 = (~(Ywcdt6 & By0ov6)); +assign By0ov6 = (C21ov6 | J21ov6); +assign Kz0ov6 = (Q21ov6 & X21ov6); +assign X21ov6 = (~(Ft0ov6 & E31ov6)); +assign Ft0ov6 = (L31ov6 & S31ov6); +assign S31ov6 = (Z31ov6 & Jv0ov6); +assign Z31ov6 = (Ldo7v6 & Qv0ov6); +assign L31ov6 = (G41ov6 & Vu0ov6); +assign Vu0ov6 = (N41ov6 & U41ov6); +assign U41ov6 = (~(B51ov6 | I51ov6)); +assign N41ov6 = (P51ov6 & W51ov6); +assign Q21ov6 = (Hu0ov6 | D61ov6); +assign Fjl8v6 = (~(K61ov6 & R61ov6)); +assign R61ov6 = (Y61ov6 & F71ov6); +assign F71ov6 = (M71ov6 & T71ov6); +assign T71ov6 = (~(A81ov6 & Y9o7v6)); +assign M71ov6 = (H81ov6 & O81ov6); +assign O81ov6 = (~(Byc7z6[15] & V81ov6)); +assign H81ov6 = (~(C91ov6 & R9ynv6)); +assign Y61ov6 = (J91ov6 & Q91ov6); +assign Q91ov6 = (~(X91ov6 & Fao7v6)); +assign J91ov6 = (~(Ea1ov6 & W8o7v6)); +assign K61ov6 = (La1ov6 & Sa1ov6); +assign Sa1ov6 = (Za1ov6 & Gb1ov6); +assign Gb1ov6 = (~(Nb1ov6 & P8o7v6)); +assign Za1ov6 = (~(Byc7z6[31] & Ub1ov6)); +assign La1ov6 = (Bc1ov6 & Ic1ov6); +assign Ic1ov6 = (~(Pc1ov6 & P2xnv6)); +assign Bc1ov6 = (~(Zec7z6[31] & Wc1ov6)); +assign Yil8v6 = (~(Dd1ov6 ^ Kd1ov6)); +assign Dd1ov6 = (~(Rd1ov6 & Yd1ov6)); +assign Yd1ov6 = (~(Wzcdt6 & Fe1ov6)); +assign Fe1ov6 = (~(Me1ov6 & Te1ov6)); +assign Te1ov6 = (A11ov6 | G41ov6); +assign A11ov6 = (~(A9mnv6 & Af1ov6)); +assign Rd1ov6 = (Hf1ov6 & Of1ov6); +assign Of1ov6 = (~(Vf1ov6 & Cg1ov6)); +assign Vf1ov6 = (Jv0ov6 & Jg1ov6); +assign Jg1ov6 = (~(Qg1ov6 & Xg1ov6)); +assign Qg1ov6 = (Eh1ov6 & Lh1ov6); +assign Hf1ov6 = (~(Me1ov6 & Sh1ov6)); +assign Sh1ov6 = (~(Zh1ov6 & Gi1ov6)); +assign Gi1ov6 = (~(Ni1ov6 & Ui1ov6)); +assign Ui1ov6 = (Af1ov6 ? A9mnv6 : Eh1ov6); +assign Ni1ov6 = (G41ov6 & Kd1ov6); +assign G41ov6 = (N8xnv6 & Lh1ov6); +assign Zh1ov6 = (Bj1ov6 | A9mnv6); +assign Bj1ov6 = (Ij1ov6 | Jv0ov6); +assign Me1ov6 = (Qv0ov6 & Pj1ov6); +assign Ril8v6 = (Aocdt6 | Wj1ov6); +assign Kil8v6 = (~(Dk1ov6 & Kk1ov6)); +assign Kk1ov6 = (~(Rk1ov6 & Yk1ov6)); +assign Rk1ov6 = (DNOTITRANS & Fl1ov6); +assign Dk1ov6 = (~(U4zet6 & Ml1ov6)); +assign Ml1ov6 = (~(DNOTITRANS & Tl1ov6)); +assign Tl1ov6 = (~(Am1ov6 & Fl1ov6)); +assign Fl1ov6 = (!HREADYI); +assign Dil8v6 = (Om1ov6 ? Hm1ov6 : Ysn7z6[0]); +assign Whl8v6 = (Om1ov6 ? Vm1ov6 : Ysn7z6[1]); +assign Om1ov6 = (!Cn1ov6); +assign Phl8v6 = (Cn1ov6 ? Ysn7z6[2] : Jn1ov6); +assign Cn1ov6 = (~(Ihl8v6 | N7zet6)); +assign Ihl8v6 = (HTRANSD[1] & Goonv6); +assign Bhl8v6 = (~(Qn1ov6 & Xn1ov6)); +assign Xn1ov6 = (~(Qsinv6 & O5a7z6)); +assign Qn1ov6 = (~(Wbxdt6 & Vrinv6)); +assign Ugl8v6 = (Eo1ov6 & Lo1ov6); +assign Eo1ov6 = (Ir7et6 | So1ov6); +assign So1ov6 = (Zo1ov6 & Gp1ov6); +assign Ngl8v6 = (Np1ov6 | Up1ov6); +assign Up1ov6 = (Bq1ov6 & Iq1ov6); +assign Iq1ov6 = (Pq1ov6 | Y8uet6); +assign Pq1ov6 = (~(E2wet6 | Wq1ov6)); +assign Wq1ov6 = (!Vbo7v6); +assign Np1ov6 = (Kr1ov6 ? Dr1ov6 : Tim7z6[31]); +assign Dr1ov6 = (~(Rr1ov6 & Yr1ov6)); +assign Yr1ov6 = (~(Fs1ov6 & Itb7z6[31])); +assign Rr1ov6 = (Ms1ov6 & Ts1ov6); +assign Ts1ov6 = (~(At1ov6 & Vbo7v6)); +assign Ms1ov6 = (~(Ht1ov6 & Ot1ov6)); +assign Ggl8v6 = (~(Vt1ov6 & Cu1ov6)); +assign Cu1ov6 = (~(Ju1ov6 & Qu1ov6)); +assign Vt1ov6 = (Xu1ov6 & Uginv6); +assign Uginv6 = (~(Ev1ov6 & Lv1ov6)); +assign Lv1ov6 = (Sv1ov6 | Mtkdt6); +assign Sv1ov6 = (Gw1ov6 ? Zv1ov6 : L0g7z6[31]); +assign Zv1ov6 = (~(Nw1ov6 & Uw1ov6)); +assign Uw1ov6 = (Bx1ov6 & Ix1ov6); +assign Ix1ov6 = (~(Px1ov6 & Fhc7z6[31])); +assign Bx1ov6 = (~(Wx1ov6 & Dy1ov6)); +assign Nw1ov6 = (Ky1ov6 & Ry1ov6); +assign Xu1ov6 = (~(O4gdt6 & Yy1ov6)); +assign Zfl8v6 = (~(Fz1ov6 & Mz1ov6)); +assign Mz1ov6 = (Tz1ov6 & A02ov6); +assign A02ov6 = (~(H02ov6 & Wt97z6)); +assign Tz1ov6 = (O02ov6 & V02ov6); +assign V02ov6 = (C12ov6 | Ckjnv6); +assign Ckjnv6 = (J12ov6 & Q12ov6); +assign Q12ov6 = (X12ov6 & E22ov6); +assign E22ov6 = (L22ov6 & S22ov6); +assign S22ov6 = (Z22ov6 & G32ov6); +assign G32ov6 = (~(vis_psp_o[31] & N32ov6)); +assign Z22ov6 = (~(U32ov6 & Pic7z6[31])); +assign L22ov6 = (B42ov6 & I42ov6); +assign I42ov6 = (~(vis_msp_o[31] & P42ov6)); +assign B42ov6 = (~(vis_r12_o[31] & W42ov6)); +assign X12ov6 = (D52ov6 & K52ov6); +assign K52ov6 = (R52ov6 & Y52ov6); +assign Y52ov6 = (~(vis_r11_o[31] & F62ov6)); +assign R52ov6 = (~(vis_r10_o[31] & M62ov6)); +assign D52ov6 = (T62ov6 & A72ov6); +assign A72ov6 = (~(vis_r9_o[31] & H72ov6)); +assign T62ov6 = (~(vis_r8_o[31] & O72ov6)); +assign J12ov6 = (V72ov6 & C82ov6); +assign C82ov6 = (J82ov6 & Q82ov6); +assign Q82ov6 = (X82ov6 & E92ov6); +assign E92ov6 = (~(vis_r7_o[31] & L92ov6)); +assign X82ov6 = (~(vis_r6_o[31] & S92ov6)); +assign J82ov6 = (Z92ov6 & Ga2ov6); +assign Ga2ov6 = (~(vis_r5_o[31] & Na2ov6)); +assign Z92ov6 = (~(vis_r4_o[31] & Ua2ov6)); +assign V72ov6 = (Bb2ov6 & Ib2ov6); +assign Ib2ov6 = (Pb2ov6 & Wb2ov6); +assign Wb2ov6 = (~(vis_r3_o[31] & Dc2ov6)); +assign Pb2ov6 = (~(vis_r2_o[31] & Kc2ov6)); +assign Bb2ov6 = (Rc2ov6 & Yc2ov6); +assign Yc2ov6 = (~(vis_r1_o[31] & Fd2ov6)); +assign Rc2ov6 = (~(vis_r0_o[31] & Md2ov6)); +assign O02ov6 = (~(Td2ov6 & Ae2ov6)); +assign Fz1ov6 = (He2ov6 & Oe2ov6); +assign Oe2ov6 = (~(Ve2ov6 & vis_pc_o[31])); +assign He2ov6 = (~(Fhc7z6[31] & Cf2ov6)); +assign Sfl8v6 = (Jf2ov6 & Qf2ov6); +assign Jf2ov6 = (Xf2ov6 & Eg2ov6); +assign Eg2ov6 = (!Lg2ov6); +assign Xf2ov6 = (~(Sg2ov6 & Zg2ov6)); +assign Zg2ov6 = (~(Gh2ov6 & Nh2ov6)); +assign Sg2ov6 = (~(Uh2ov6 & Bi2ov6)); +assign Lfl8v6 = (~(Ii2ov6 & Pi2ov6)); +assign Pi2ov6 = (Wi2ov6 | Zfg7z6[32]); +assign Ii2ov6 = (Dj2ov6 & Kj2ov6); +assign Kj2ov6 = (~(Rj2ov6 & Vimdt6)); +assign Dj2ov6 = (~(Yj2ov6 & Yxf7z6[2])); +assign Efl8v6 = (~(Fk2ov6 & Mk2ov6)); +assign Mk2ov6 = (~(Tk2ov6 & Qu1ov6)); +assign Fk2ov6 = (Al2ov6 & Phinv6); +assign Phinv6 = (~(Ev1ov6 & Hl2ov6)); +assign Hl2ov6 = (Ol2ov6 | Vl2ov6); +assign Vl2ov6 = (Jm2ov6 ? Iphdt6 : Cm2ov6); +assign Cm2ov6 = (~(Qm2ov6 & Xm2ov6)); +assign Xm2ov6 = (En2ov6 & Ln2ov6); +assign Ln2ov6 = (~(Sn2ov6 & Zn2ov6)); +assign Zn2ov6 = (Go2ov6 & No2ov6); +assign No2ov6 = (Uo2ov6 & Bp2ov6); +assign Bp2ov6 = (Ip2ov6 & Pp2ov6); +assign Pp2ov6 = (Wp2ov6 & Dq2ov6); +assign Wp2ov6 = (Kq2ov6 & Ky1ov6); +assign Ip2ov6 = (Rq2ov6 & Yq2ov6); +assign Uo2ov6 = (Fr2ov6 & Mr2ov6); +assign Mr2ov6 = (Tr2ov6 & As2ov6); +assign Fr2ov6 = (Hs2ov6 & Os2ov6); +assign Go2ov6 = (Vs2ov6 & Ct2ov6); +assign Ct2ov6 = (Jt2ov6 & Qt2ov6); +assign Qt2ov6 = (Xt2ov6 & Eu2ov6); +assign Jt2ov6 = (Lu2ov6 & Su2ov6); +assign Vs2ov6 = (Zu2ov6 & Gv2ov6); +assign Gv2ov6 = (Nv2ov6 & Uv2ov6); +assign Zu2ov6 = (Bw2ov6 & Iw2ov6); +assign Sn2ov6 = (Pw2ov6 & Ww2ov6); +assign Ww2ov6 = (Dx2ov6 & Kx2ov6); +assign Kx2ov6 = (Rx2ov6 & Yx2ov6); +assign Yx2ov6 = (Fy2ov6 & My2ov6); +assign Rx2ov6 = (Ty2ov6 & Az2ov6); +assign Dx2ov6 = (Hz2ov6 & Oz2ov6); +assign Oz2ov6 = (Vz2ov6 & C03ov6); +assign Hz2ov6 = (J03ov6 & Q03ov6); +assign Pw2ov6 = (X03ov6 & E13ov6); +assign E13ov6 = (L13ov6 & S13ov6); +assign S13ov6 = (Z13ov6 & G23ov6); +assign L13ov6 = (N23ov6 & U23ov6); +assign X03ov6 = (B33ov6 & I33ov6); +assign I33ov6 = (P33ov6 & W33ov6); +assign B33ov6 = (Fennv6 & D43ov6); +assign En2ov6 = (~(K43ov6 & R43ov6)); +assign R43ov6 = (Y43ov6 & F53ov6); +assign F53ov6 = (M53ov6 & T53ov6); +assign T53ov6 = (A63ov6 & H63ov6); +assign H63ov6 = (~(O63ov6 & V63ov6)); +assign V63ov6 = (C73ov6 | J73ov6); +assign A63ov6 = (~(Q73ov6 & X73ov6)); +assign X73ov6 = (~(E83ov6 & L83ov6)); +assign L83ov6 = (S83ov6 & Z83ov6); +assign Z83ov6 = (G93ov6 & N93ov6); +assign N93ov6 = (U93ov6 & Ba3ov6); +assign G93ov6 = (~(Ia3ov6 | Pa3ov6)); +assign S83ov6 = (~(Wa3ov6 | Db3ov6)); +assign Wa3ov6 = (Kb3ov6 | Rb3ov6); +assign E83ov6 = (Yb3ov6 & Fc3ov6); +assign Fc3ov6 = (Mc3ov6 & Tc3ov6); +assign Tc3ov6 = (~(Ad3ov6 | Hd3ov6)); +assign Mc3ov6 = (~(Od3ov6 | Vd3ov6)); +assign Yb3ov6 = (~(Ce3ov6 | Je3ov6)); +assign Ce3ov6 = (Qe3ov6 | Xe3ov6); +assign Q73ov6 = (~(Ef3ov6 & Lf3ov6)); +assign Ef3ov6 = (Sf3ov6 & Zf3ov6); +assign M53ov6 = (Gg3ov6 & Ng3ov6); +assign Ng3ov6 = (~(O63ov6 & Ug3ov6)); +assign O63ov6 = (~(Bh3ov6 & Ih3ov6)); +assign Ih3ov6 = (Ph3ov6 & Wh3ov6); +assign Wh3ov6 = (~(Di3ov6 | Ki3ov6)); +assign Ph3ov6 = (~(Ri3ov6 | Yi3ov6)); +assign Bh3ov6 = (Fj3ov6 & Mj3ov6); +assign Mj3ov6 = (~(Tj3ov6 | Ak3ov6)); +assign Fj3ov6 = (~(Hk3ov6 | Ok3ov6)); +assign Y43ov6 = (Vk3ov6 & Cl3ov6); +assign Cl3ov6 = (Jl3ov6 & Ry1ov6); +assign Jl3ov6 = (!Ql3ov6); +assign Vk3ov6 = (~(Xl3ov6 | Em3ov6)); +assign K43ov6 = (Lm3ov6 & Sm3ov6); +assign Sm3ov6 = (Zm3ov6 & Gn3ov6); +assign Gn3ov6 = (~(Nn3ov6 | Un3ov6)); +assign Zm3ov6 = (~(Bo3ov6 | Io3ov6)); +assign Lm3ov6 = (Po3ov6 & Wo3ov6); +assign Po3ov6 = (Dp3ov6 & Kp3ov6); +assign Qm2ov6 = (Rp3ov6 & Yp3ov6); +assign Yp3ov6 = (~(Fq3ov6 & Mq3ov6)); +assign Mq3ov6 = (Tq3ov6 & Ar3ov6); +assign Ar3ov6 = (Hr3ov6 & Or3ov6); +assign Or3ov6 = (Vr3ov6 & Cs3ov6); +assign Cs3ov6 = (~(Js3ov6 | Qs3ov6)); +assign Js3ov6 = (Xs3ov6 | Et3ov6); +assign Vr3ov6 = (~(Lt3ov6 | St3ov6)); +assign Hr3ov6 = (Zt3ov6 & Gu3ov6); +assign Gu3ov6 = (~(Nu3ov6 | Uu3ov6)); +assign Zt3ov6 = (~(Bv3ov6 | Iv3ov6)); +assign Tq3ov6 = (Pv3ov6 & Wv3ov6); +assign Wv3ov6 = (Dw3ov6 & Kw3ov6); +assign Kw3ov6 = (~(Rw3ov6 | Wx1ov6)); +assign Dw3ov6 = (Yw3ov6 & Fx3ov6); +assign Pv3ov6 = (Mx3ov6 & Tx3ov6); +assign Tx3ov6 = (Ay3ov6 & Hy3ov6); +assign Mx3ov6 = (Oy3ov6 & Vy3ov6); +assign Fq3ov6 = (Cz3ov6 & Jz3ov6); +assign Jz3ov6 = (Qz3ov6 & Xz3ov6); +assign Xz3ov6 = (E04ov6 & L04ov6); +assign L04ov6 = (S04ov6 & Z04ov6); +assign E04ov6 = (G14ov6 & N14ov6); +assign Qz3ov6 = (U14ov6 & B24ov6); +assign B24ov6 = (I24ov6 & P24ov6); +assign U14ov6 = (W24ov6 & D34ov6); +assign Cz3ov6 = (K34ov6 & R34ov6); +assign R34ov6 = (Y34ov6 & F44ov6); +assign F44ov6 = (M44ov6 & T44ov6); +assign Y34ov6 = (A54ov6 & H54ov6); +assign K34ov6 = (O54ov6 & V54ov6); +assign V54ov6 = (C64ov6 & J64ov6); +assign O54ov6 = (Q64ov6 & X64ov6); +assign Rp3ov6 = (~(Px1ov6 & Fhc7z6[30])); +assign Ol2ov6 = (E74ov6 & L74ov6); +assign L74ov6 = (S74ov6 & Z74ov6); +assign Z74ov6 = (G84ov6 & N84ov6); +assign N84ov6 = (U84ov6 & B94ov6); +assign B94ov6 = (~(I94ov6 | Sxkdt6)); +assign I94ov6 = (Pvkdt6 | Mtkdt6); +assign U84ov6 = (~(Y1ldt6 | Vzkdt6)); +assign G84ov6 = (P94ov6 & W94ov6); +assign W94ov6 = (~(E6ldt6 | B4ldt6)); +assign P94ov6 = (~(Kaldt6 | H8ldt6)); +assign S74ov6 = (Da4ov6 & Ka4ov6); +assign Ka4ov6 = (Ra4ov6 & Ya4ov6); +assign Ya4ov6 = (~(Qeldt6 | Ncldt6)); +assign Ra4ov6 = (~(Wildt6 | Tgldt6)); +assign Da4ov6 = (Fb4ov6 & Mb4ov6); +assign Mb4ov6 = (~(Cnldt6 | Zkldt6)); +assign Fb4ov6 = (~(Irldt6 | Fpldt6)); +assign E74ov6 = (Tb4ov6 & Ac4ov6); +assign Ac4ov6 = (Hc4ov6 & Oc4ov6); +assign Oc4ov6 = (Vc4ov6 & Cd4ov6); +assign Cd4ov6 = (~(Ovldt6 | Ltldt6)); +assign Vc4ov6 = (~(Uzldt6 | Rxldt6)); +assign Hc4ov6 = (Jd4ov6 & Qd4ov6); +assign Qd4ov6 = (~(A4mdt6 | X1mdt6)); +assign Jd4ov6 = (~(G8mdt6 | D6mdt6)); +assign Tb4ov6 = (Xd4ov6 & Ee4ov6); +assign Ee4ov6 = (Le4ov6 & Se4ov6); +assign Se4ov6 = (~(Mcmdt6 | Jamdt6)); +assign Le4ov6 = (~(Sgmdt6 | Pemdt6)); +assign Xd4ov6 = (Ze4ov6 & Gf4ov6); +assign Gf4ov6 = (~(Ykmdt6 | Vimdt6)); +assign Ze4ov6 = (~(Nf4ov6 | Bnmdt6)); +assign Ev1ov6 = (!Ihinv6); +assign Ihinv6 = (~(Uf4ov6 & Bg4ov6)); +assign Al2ov6 = (~(D6gdt6 & Yy1ov6)); +assign Yy1ov6 = (~(Ig4ov6 & Pg4ov6)); +assign Pg4ov6 = (Wg4ov6 | Bg4ov6); +assign Xel8v6 = (~(Dh4ov6 & Kh4ov6)); +assign Kh4ov6 = (Rh4ov6 & Yh4ov6); +assign Yh4ov6 = (~(Td2ov6 & Fi4ov6)); +assign Rh4ov6 = (Mi4ov6 & Ti4ov6); +assign Ti4ov6 = (C12ov6 | Sljnv6); +assign Sljnv6 = (Aj4ov6 & Hj4ov6); +assign Hj4ov6 = (Oj4ov6 & Vj4ov6); +assign Vj4ov6 = (Ck4ov6 & Jk4ov6); +assign Jk4ov6 = (Qk4ov6 & Xk4ov6); +assign Xk4ov6 = (~(vis_psp_o[30] & N32ov6)); +assign Qk4ov6 = (~(U32ov6 & Pic7z6[30])); +assign Ck4ov6 = (El4ov6 & Ll4ov6); +assign Ll4ov6 = (~(vis_msp_o[30] & P42ov6)); +assign El4ov6 = (~(vis_r12_o[30] & W42ov6)); +assign Oj4ov6 = (Sl4ov6 & Zl4ov6); +assign Zl4ov6 = (Gm4ov6 & Nm4ov6); +assign Nm4ov6 = (~(vis_r11_o[30] & F62ov6)); +assign Gm4ov6 = (~(vis_r10_o[30] & M62ov6)); +assign Sl4ov6 = (Um4ov6 & Bn4ov6); +assign Bn4ov6 = (~(vis_r9_o[30] & H72ov6)); +assign Um4ov6 = (~(vis_r8_o[30] & O72ov6)); +assign Aj4ov6 = (In4ov6 & Pn4ov6); +assign Pn4ov6 = (Wn4ov6 & Do4ov6); +assign Do4ov6 = (Ko4ov6 & Ro4ov6); +assign Ro4ov6 = (~(vis_r7_o[30] & L92ov6)); +assign Ko4ov6 = (~(vis_r6_o[30] & S92ov6)); +assign Wn4ov6 = (Yo4ov6 & Fp4ov6); +assign Fp4ov6 = (~(vis_r5_o[30] & Na2ov6)); +assign Yo4ov6 = (~(vis_r4_o[30] & Ua2ov6)); +assign In4ov6 = (Mp4ov6 & Tp4ov6); +assign Tp4ov6 = (Aq4ov6 & Hq4ov6); +assign Hq4ov6 = (~(vis_r3_o[30] & Dc2ov6)); +assign Aq4ov6 = (~(vis_r2_o[30] & Kc2ov6)); +assign Mp4ov6 = (Oq4ov6 & Vq4ov6); +assign Vq4ov6 = (~(vis_r1_o[30] & Fd2ov6)); +assign Oq4ov6 = (~(vis_r0_o[30] & Md2ov6)); +assign Mi4ov6 = (~(H02ov6 & Eu97z6)); +assign Dh4ov6 = (Cr4ov6 & Jr4ov6); +assign Jr4ov6 = (~(Ve2ov6 & vis_pc_o[30])); +assign Cr4ov6 = (~(Fhc7z6[30] & Cf2ov6)); +assign Qel8v6 = (~(Qr4ov6 & Xr4ov6)); +assign Qr4ov6 = (Es4ov6 & Ls4ov6); +assign Ls4ov6 = (~(Dpo8v6 & Ss4ov6)); +assign Es4ov6 = (~(Oyh7z6[31] & Zs4ov6)); +assign Jel8v6 = (~(Gt4ov6 & Nt4ov6)); +assign Nt4ov6 = (Ut4ov6 | C397z6); +assign Gt4ov6 = (~(Bu4ov6 & Iu4ov6)); +assign Cel8v6 = (~(Pu4ov6 & Wu4ov6)); +assign Wu4ov6 = (Dv4ov6 & Kv4ov6); +assign Kv4ov6 = (~(Rv4ov6 & Yv4ov6)); +assign Dv4ov6 = (Fw4ov6 & Mw4ov6); +assign Mw4ov6 = (~(Tw4ov6 & Ax4ov6)); +assign Fw4ov6 = (~(Hx4ov6 & Ox4ov6)); +assign Pu4ov6 = (Vx4ov6 & Cy4ov6); +assign Cy4ov6 = (~(Jy4ov6 & Qy4ov6)); +assign Vx4ov6 = (~(Wlr7z6[31] & Xy4ov6)); +assign Vdl8v6 = (Lz4ov6 ? K0wmz6[7] : Ez4ov6); +assign Odl8v6 = (~(Sz4ov6 & Zz4ov6)); +assign Zz4ov6 = (~(Nsvmz6[7] & G05ov6)); +assign Sz4ov6 = (N05ov6 & U05ov6); +assign U05ov6 = (~(Gyvmz6[7] & B15ov6)); +assign N05ov6 = (~(I15ov6 & K0wmz6[7])); +assign Hdl8v6 = (W15ov6 ? P15ov6 : V7xmz6[7]); +assign W15ov6 = (!D25ov6); +assign Adl8v6 = (~(K25ov6 & R25ov6)); +assign R25ov6 = (~(D25ov6 & La6ft6)); +assign Tcl8v6 = (!Y25ov6); +assign Y25ov6 = (T35ov6 ? M35ov6 : F35ov6); +assign Mcl8v6 = (A45ov6 | H45ov6); +assign H45ov6 = (O45ov6 & Fbxmz6[1]); +assign O45ov6 = (Fbxmz6[3] & V45ov6); +assign V45ov6 = (~(C55ov6 & J55ov6)); +assign J55ov6 = (~(Q55ov6 & I347v6)); +assign Q55ov6 = (~(T35ov6 | O9xmz6[1])); +assign A45ov6 = (T35ov6 ? Fbxmz6[2] : X55ov6); +assign X55ov6 = (~(E65ov6 & L65ov6)); +assign L65ov6 = (S65ov6 & Z65ov6); +assign E65ov6 = (G75ov6 & N75ov6); +assign G75ov6 = (~(U75ov6 & B85ov6)); +assign Fcl8v6 = (~(I85ov6 & P85ov6)); +assign P85ov6 = (~(T35ov6 & Fbxmz6[3])); +assign T35ov6 = (!W85ov6); +assign Ybl8v6 = (W85ov6 ? D95ov6 : Fbxmz6[0]); +assign Rbl8v6 = (~(K95ov6 & R95ov6)); +assign R95ov6 = (Y95ov6 | Fa5ov6); +assign K95ov6 = (~(O9xmz6[1] & Ma5ov6)); +assign Kbl8v6 = (Ab5ov6 ? Ta5ov6 : Pp1nz6[1]); +assign Ta5ov6 = (~(Hb5ov6 & Ob5ov6)); +assign Ob5ov6 = (~(Vb5ov6 & Cc5ov6)); +assign Dbl8v6 = (~(Jc5ov6 & Qc5ov6)); +assign Qc5ov6 = (~(Xc5ov6 & Ed5ov6)); +assign Ed5ov6 = (Hb5ov6 ^ Ld5ov6); +assign Jc5ov6 = (~(U81nz6[0] & Sd5ov6)); +assign Wal8v6 = (Ge5ov6 ? Zd5ov6 : Oo1nz6[0]); +assign Pal8v6 = (Ge5ov6 ? Vb5ov6 : Oo1nz6[1]); +assign Ial8v6 = (Ne5ov6 ? Zd5ov6 : Nn1nz6[0]); +assign Bal8v6 = (Ne5ov6 ? Vb5ov6 : Nn1nz6[1]); +assign U9l8v6 = (Ue5ov6 ? Zd5ov6 : Mm1nz6[0]); +assign N9l8v6 = (Ue5ov6 ? Vb5ov6 : Mm1nz6[1]); +assign Vb5ov6 = (~(Bf5ov6 & If5ov6)); +assign If5ov6 = (~(V7xmz6[1] & Pf5ov6)); +assign Bf5ov6 = (I347v6 ? Dg5ov6 : Wf5ov6); +assign Dg5ov6 = (Kg5ov6 & Rg5ov6); +assign Rg5ov6 = (Yg5ov6 & Fh5ov6); +assign Fh5ov6 = (~(Mh5ov6 & Vcxmz6[22])); +assign Yg5ov6 = (~(Vcxmz6[1] & Gjfnv6)); +assign Kg5ov6 = (Th5ov6 & Ai5ov6); +assign Ai5ov6 = (~(Hi5ov6 & Vcxmz6[15])); +assign Th5ov6 = (~(Oi5ov6 & Vcxmz6[8])); +assign Wf5ov6 = (Vi5ov6 & Cj5ov6); +assign Cj5ov6 = (~(Oi5ov6 & Vcxmz6[34])); +assign Vi5ov6 = (Jj5ov6 & Qj5ov6); +assign Qj5ov6 = (~(Gjfnv6 & Vcxmz6[27])); +assign Jj5ov6 = (~(Hi5ov6 & Vcxmz6[41])); +assign G9l8v6 = (~(Xj5ov6 & Ek5ov6)); +assign Ek5ov6 = (~(Xc5ov6 & Lk5ov6)); +assign Lk5ov6 = (~(Hb5ov6 ^ Sk5ov6)); +assign Hb5ov6 = (~(Zk5ov6 & Gl5ov6)); +assign Zk5ov6 = (Nl5ov6 ^ Ul5ov6); +assign Xj5ov6 = (~(U81nz6[1] & Sd5ov6)); +assign Z8l8v6 = (Im5ov6 ? Bm5ov6 : Md1nz6[0]); +assign Bm5ov6 = (~(Pm5ov6 ^ Wm5ov6)); +assign S8l8v6 = (Im5ov6 ? Dn5ov6 : Md1nz6[1]); +assign Dn5ov6 = (Kn5ov6 ^ Pm5ov6); +assign Pm5ov6 = (Rn5ov6 ^ Wm5ov6); +assign L8l8v6 = (Im5ov6 ? Kn5ov6 : Md1nz6[2]); +assign Im5ov6 = (Yn5ov6 & Fo5ov6); +assign Yn5ov6 = (~(Mo5ov6 & To5ov6)); +assign To5ov6 = (~(Ap5ov6 & Hp5ov6)); +assign Ap5ov6 = (~(Op5ov6 | Vp5ov6)); +assign Kn5ov6 = (~(Cq5ov6 ^ Md1nz6[2])); +assign Cq5ov6 = (~(Rn5ov6 & Wm5ov6)); +assign Wm5ov6 = (Jq5ov6 | Qq5ov6); +assign E8l8v6 = (Xq5ov6 | Er5ov6); +assign Er5ov6 = (Lr5ov6 & W197z6); +assign Xq5ov6 = (At67v6 ? Zr5ov6 : Sr5ov6); +assign Zr5ov6 = (Gs5ov6 & U42nv6); +assign X7l8v6 = (Ns5ov6 & Us5ov6); +assign Us5ov6 = (Bt5ov6 & It5ov6); +assign It5ov6 = (~(Pt5ov6 & Wt5ov6)); +assign Wt5ov6 = (Du5ov6 & Ku5ov6); +assign Ku5ov6 = (~(Ru5ov6 & Ea2ft6)); +assign Ru5ov6 = (Cq2ft6 & Yu5ov6); +assign Yu5ov6 = (~(Fv5ov6 & Mv5ov6)); +assign Mv5ov6 = (~(Bup7z6[0] & Tv5ov6)); +assign Fv5ov6 = (~(Wrp7z6[0] & Aw5ov6)); +assign Du5ov6 = (~(Y52ft6 & Hw5ov6)); +assign Pt5ov6 = (Ow5ov6 & Vw5ov6); +assign Vw5ov6 = (~(Hc2ft6 & Cx5ov6)); +assign Ow5ov6 = (~(B82ft6 & Jx5ov6)); +assign Bt5ov6 = (~(Qx5ov6 & Xx5ov6)); +assign Xx5ov6 = (~(Ey5ov6 & Ly5ov6)); +assign Ly5ov6 = (Gwp7z6[0] ? Zy5ov6 : Sy5ov6); +assign Zy5ov6 = (~(Gz5ov6 & Nz5ov6)); +assign Nz5ov6 = (~(Uz5ov6 & B06ov6)); +assign B06ov6 = (I06ov6 & P06ov6); +assign P06ov6 = (W06ov6 & D16ov6); +assign D16ov6 = (K16ov6 & R16ov6); +assign W06ov6 = (Y16ov6 & F26ov6); +assign I06ov6 = (M26ov6 & T26ov6); +assign T26ov6 = (~(B2q7z6[9] ^ A36ov6)); +assign M26ov6 = (H36ov6 & O36ov6); +assign O36ov6 = (~(B2q7z6[13] ^ V36ov6)); +assign H36ov6 = (~(B2q7z6[11] ^ C46ov6)); +assign Uz5ov6 = (J46ov6 & Q46ov6); +assign Q46ov6 = (X46ov6 & E56ov6); +assign E56ov6 = (L56ov6 & S56ov6); +assign S56ov6 = (Z56ov6 ^ G66ov6); +assign L56ov6 = (N66ov6 ^ U66ov6); +assign X46ov6 = (B76ov6 & I76ov6); +assign I76ov6 = (~(B2q7z6[8] ^ P76ov6)); +assign B76ov6 = (~(B2q7z6[14] ^ W76ov6)); +assign J46ov6 = (D86ov6 & K86ov6); +assign D86ov6 = (R86ov6 & Y86ov6); +assign Y86ov6 = (~(B2q7z6[12] ^ F96ov6)); +assign Gz5ov6 = (~(M96ov6 & T96ov6)); +assign T96ov6 = (Aa6ov6 & Ha6ov6); +assign Ha6ov6 = (Oa6ov6 & Va6ov6); +assign Va6ov6 = (~(B2q7z6[9] ^ Cb6ov6)); +assign Aa6ov6 = (Jb6ov6 & Qb6ov6); +assign Qb6ov6 = (~(B2q7z6[10] ^ Xb6ov6)); +assign Jb6ov6 = (Ec6ov6 & Lc6ov6); +assign Lc6ov6 = (~(B2q7z6[13] ^ Sc6ov6)); +assign Ec6ov6 = (~(B2q7z6[11] ^ Zc6ov6)); +assign M96ov6 = (Gd6ov6 & Nd6ov6); +assign Nd6ov6 = (Ud6ov6 & Be6ov6); +assign Be6ov6 = (~(B2q7z6[14] ^ Ie6ov6)); +assign Ud6ov6 = (Pe6ov6 & We6ov6); +assign We6ov6 = (~(B2q7z6[15] ^ Df6ov6)); +assign Pe6ov6 = (~(B2q7z6[12] ^ Kf6ov6)); +assign Gd6ov6 = (Rf6ov6 & Yf6ov6); +assign Rf6ov6 = (Fg6ov6 & Mg6ov6); +assign Mg6ov6 = (~(B2q7z6[8] ^ Tg6ov6)); +assign Sy5ov6 = (~(Ah6ov6 & Hh6ov6)); +assign Hh6ov6 = (~(Oh6ov6 & Vh6ov6)); +assign Vh6ov6 = (Ci6ov6 & Ji6ov6); +assign Ji6ov6 = (Qi6ov6 & Xi6ov6); +assign Xi6ov6 = (Ej6ov6 ^ Sc6ov6); +assign Qi6ov6 = (~(B2q7z6[3] ^ Zc6ov6)); +assign Ci6ov6 = (Lj6ov6 & Sj6ov6); +assign Sj6ov6 = (Zj6ov6 ^ Df6ov6); +assign Lj6ov6 = (Gk6ov6 ^ Xb6ov6); +assign Oh6ov6 = (Nk6ov6 & Uk6ov6); +assign Uk6ov6 = (Bl6ov6 & Il6ov6); +assign Il6ov6 = (Pl6ov6 ^ Ie6ov6); +assign Bl6ov6 = (~(B2q7z6[4] ^ Kf6ov6)); +assign Nk6ov6 = (Wl6ov6 & Dm6ov6); +assign Dm6ov6 = (~(B2q7z6[0] ^ Tg6ov6)); +assign Wl6ov6 = (~(B2q7z6[1] ^ Cb6ov6)); +assign Ah6ov6 = (~(Km6ov6 & Oa6ov6)); +assign Oa6ov6 = (Rm6ov6 & Ym6ov6); +assign Ym6ov6 = (~(G66ov6 ^ B2q7z6[7])); +assign Rm6ov6 = (~(U66ov6 ^ B2q7z6[2])); +assign Km6ov6 = (Yf6ov6 & Fg6ov6); +assign Fg6ov6 = (Fn6ov6 & Mn6ov6); +assign Mn6ov6 = (Tn6ov6 & Ao6ov6); +assign Ao6ov6 = (Ej6ov6 ^ V36ov6); +assign Tn6ov6 = (~(B2q7z6[3] ^ C46ov6)); +assign Fn6ov6 = (Ho6ov6 & Oo6ov6); +assign Oo6ov6 = (Pl6ov6 ^ W76ov6); +assign Ho6ov6 = (~(B2q7z6[4] ^ F96ov6)); +assign Yf6ov6 = (Vo6ov6 & Cp6ov6); +assign Cp6ov6 = (~(B2q7z6[0] ^ P76ov6)); +assign Vo6ov6 = (~(B2q7z6[1] ^ A36ov6)); +assign Ey5ov6 = (Jp6ov6 & Bbp7z6[1]); +assign Qx5ov6 = (Qp6ov6 & Xp6ov6); +assign Xp6ov6 = (~(Eq6ov6 & Lq6ov6)); +assign Lq6ov6 = (Sq6ov6 & Zq6ov6); +assign Sq6ov6 = (Gr6ov6 & Nr6ov6); +assign Nr6ov6 = (~(Ur6ov6 & Bs6ov6)); +assign Bs6ov6 = (~(Is6ov6 & Ps6ov6)); +assign Ps6ov6 = (Ws6ov6 & Dt6ov6); +assign Dt6ov6 = (Kt6ov6 & Rt6ov6); +assign Rt6ov6 = (Yt6ov6 & Fu6ov6); +assign Fu6ov6 = (~(B2q7z6[31] ^ Df6ov6)); +assign Df6ov6 = (~(Mu6ov6 & Tu6ov6)); +assign Tu6ov6 = (Av6ov6 & Hv6ov6); +assign Hv6ov6 = (~(Ov6ov6 & Ox4ov6)); +assign Av6ov6 = (~(Vv6ov6 & Yv4ov6)); +assign Mu6ov6 = (Cw6ov6 & Jw6ov6); +assign Jw6ov6 = (~(Qw6ov6 & Ax4ov6)); +assign Cw6ov6 = (~(Xw6ov6 & Qy4ov6)); +assign Yt6ov6 = (~(Ex6ov6 | Lx6ov6)); +assign Kt6ov6 = (Sx6ov6 & Zx6ov6); +assign Zx6ov6 = (~(B2q7z6[26] ^ Xb6ov6)); +assign Xb6ov6 = (~(Gy6ov6 & Ny6ov6)); +assign Ny6ov6 = (Uy6ov6 & Bz6ov6); +assign Bz6ov6 = (~(Ov6ov6 & Iz6ov6)); +assign Uy6ov6 = (~(Vv6ov6 & Pz6ov6)); +assign Gy6ov6 = (Wz6ov6 & D07ov6); +assign D07ov6 = (~(Qw6ov6 & K07ov6)); +assign Wz6ov6 = (~(Xw6ov6 & R07ov6)); +assign Sx6ov6 = (~(B2q7z6[24] ^ Tg6ov6)); +assign Tg6ov6 = (~(Y07ov6 & F17ov6)); +assign F17ov6 = (M17ov6 & T17ov6); +assign T17ov6 = (~(Ov6ov6 & A27ov6)); +assign M17ov6 = (~(Vv6ov6 & H27ov6)); +assign Y07ov6 = (O27ov6 & V27ov6); +assign V27ov6 = (~(Qw6ov6 & C37ov6)); +assign O27ov6 = (~(Xw6ov6 & J37ov6)); +assign Ws6ov6 = (Q37ov6 & X37ov6); +assign X37ov6 = (E47ov6 & L47ov6); +assign L47ov6 = (~(B2q7z6[28] ^ Kf6ov6)); +assign Kf6ov6 = (~(S47ov6 & Z47ov6)); +assign Z47ov6 = (G57ov6 & N57ov6); +assign N57ov6 = (~(Ov6ov6 & U57ov6)); +assign G57ov6 = (~(Vv6ov6 & B67ov6)); +assign S47ov6 = (I67ov6 & P67ov6); +assign P67ov6 = (~(Qw6ov6 & W67ov6)); +assign I67ov6 = (~(Xw6ov6 & D77ov6)); +assign E47ov6 = (K77ov6 & R77ov6); +assign R77ov6 = (~(B2q7z6[25] ^ Cb6ov6)); +assign Cb6ov6 = (~(Y77ov6 & F87ov6)); +assign F87ov6 = (M87ov6 & T87ov6); +assign T87ov6 = (~(Ov6ov6 & A97ov6)); +assign M87ov6 = (~(Vv6ov6 & H97ov6)); +assign Y77ov6 = (O97ov6 & V97ov6); +assign V97ov6 = (~(Qw6ov6 & Ca7ov6)); +assign O97ov6 = (~(Xw6ov6 & Ja7ov6)); +assign K77ov6 = (~(B2q7z6[27] ^ Zc6ov6)); +assign Zc6ov6 = (~(Qa7ov6 & Xa7ov6)); +assign Xa7ov6 = (Eb7ov6 & Lb7ov6); +assign Lb7ov6 = (~(Ov6ov6 & Sb7ov6)); +assign Eb7ov6 = (~(Vv6ov6 & Zb7ov6)); +assign Qa7ov6 = (Gc7ov6 & Nc7ov6); +assign Nc7ov6 = (~(Qw6ov6 & Uc7ov6)); +assign Gc7ov6 = (~(Xw6ov6 & Bd7ov6)); +assign Q37ov6 = (Id7ov6 & Pd7ov6); +assign Pd7ov6 = (~(B2q7z6[23] ^ G66ov6)); +assign G66ov6 = (~(Wd7ov6 & De7ov6)); +assign De7ov6 = (Ke7ov6 & Re7ov6); +assign Re7ov6 = (~(Ov6ov6 & Yv4ov6)); +assign Ke7ov6 = (~(Vv6ov6 & Ax4ov6)); +assign Wd7ov6 = (Ye7ov6 & Ff7ov6); +assign Ff7ov6 = (~(Qw6ov6 & Qy4ov6)); +assign Ye7ov6 = (~(Xw6ov6 & Ox4ov6)); +assign Id7ov6 = (~(B2q7z6[29] ^ Sc6ov6)); +assign Sc6ov6 = (~(Mf7ov6 & Tf7ov6)); +assign Tf7ov6 = (Ag7ov6 & Hg7ov6); +assign Hg7ov6 = (~(Ov6ov6 & Og7ov6)); +assign Ag7ov6 = (~(Vv6ov6 & Vg7ov6)); +assign Mf7ov6 = (Ch7ov6 & Jh7ov6); +assign Jh7ov6 = (~(Qw6ov6 & Qh7ov6)); +assign Ch7ov6 = (~(Xw6ov6 & Xh7ov6)); +assign Is6ov6 = (Ei7ov6 & Li7ov6); +assign Li7ov6 = (Si7ov6 & Zi7ov6); +assign Zi7ov6 = (Gj7ov6 & Nj7ov6); +assign Nj7ov6 = (~(B2q7z6[17] ^ A36ov6)); +assign A36ov6 = (~(Uj7ov6 & Bk7ov6)); +assign Bk7ov6 = (Ik7ov6 & Pk7ov6); +assign Pk7ov6 = (~(Ov6ov6 & H97ov6)); +assign Ik7ov6 = (~(Vv6ov6 & Ca7ov6)); +assign Uj7ov6 = (Wk7ov6 & Dl7ov6); +assign Dl7ov6 = (~(Qw6ov6 & Ja7ov6)); +assign Wk7ov6 = (~(Xw6ov6 & A97ov6)); +assign Gj7ov6 = (Kl7ov6 & Rl7ov6); +assign Rl7ov6 = (~(B2q7z6[30] ^ Ie6ov6)); +assign Ie6ov6 = (~(Yl7ov6 & Fm7ov6)); +assign Fm7ov6 = (Mm7ov6 & Tm7ov6); +assign Tm7ov6 = (~(Ov6ov6 & An7ov6)); +assign Mm7ov6 = (~(Vv6ov6 & Hn7ov6)); +assign Yl7ov6 = (On7ov6 & Vn7ov6); +assign Vn7ov6 = (~(Qw6ov6 & Co7ov6)); +assign On7ov6 = (~(Xw6ov6 & Jo7ov6)); +assign Kl7ov6 = (~(B2q7z6[16] ^ P76ov6)); +assign P76ov6 = (~(Qo7ov6 & Xo7ov6)); +assign Xo7ov6 = (Ep7ov6 & Lp7ov6); +assign Lp7ov6 = (~(Ov6ov6 & H27ov6)); +assign Ep7ov6 = (~(Vv6ov6 & C37ov6)); +assign Qo7ov6 = (Sp7ov6 & Zp7ov6); +assign Zp7ov6 = (~(Qw6ov6 & J37ov6)); +assign Sp7ov6 = (~(Xw6ov6 & A27ov6)); +assign Si7ov6 = (Gq7ov6 & Nq7ov6); +assign Nq7ov6 = (~(B2q7z6[20] ^ F96ov6)); +assign F96ov6 = (~(Uq7ov6 & Br7ov6)); +assign Br7ov6 = (Ir7ov6 & Pr7ov6); +assign Pr7ov6 = (~(Ov6ov6 & B67ov6)); +assign Ir7ov6 = (~(Vv6ov6 & W67ov6)); +assign Uq7ov6 = (Wr7ov6 & Ds7ov6); +assign Ds7ov6 = (~(Qw6ov6 & D77ov6)); +assign Wr7ov6 = (~(Xw6ov6 & U57ov6)); +assign Gq7ov6 = (~(B2q7z6[18] ^ U66ov6)); +assign U66ov6 = (~(Ks7ov6 & Rs7ov6)); +assign Rs7ov6 = (Ys7ov6 & Ft7ov6); +assign Ft7ov6 = (~(Ov6ov6 & Pz6ov6)); +assign Ys7ov6 = (~(Vv6ov6 & K07ov6)); +assign Ks7ov6 = (Mt7ov6 & Tt7ov6); +assign Tt7ov6 = (~(Qw6ov6 & R07ov6)); +assign Mt7ov6 = (~(Xw6ov6 & Iz6ov6)); +assign Ei7ov6 = (Au7ov6 & Hu7ov6); +assign Hu7ov6 = (Ou7ov6 & Vu7ov6); +assign Vu7ov6 = (~(B2q7z6[22] ^ W76ov6)); +assign W76ov6 = (~(Cv7ov6 & Jv7ov6)); +assign Jv7ov6 = (Qv7ov6 & Xv7ov6); +assign Xv7ov6 = (~(Ov6ov6 & Hn7ov6)); +assign Qv7ov6 = (~(Vv6ov6 & Co7ov6)); +assign Cv7ov6 = (Ew7ov6 & Lw7ov6); +assign Lw7ov6 = (~(Qw6ov6 & Jo7ov6)); +assign Ew7ov6 = (~(Xw6ov6 & An7ov6)); +assign Ou7ov6 = (Sw7ov6 & Zw7ov6); +assign Zw7ov6 = (~(B2q7z6[19] ^ C46ov6)); +assign C46ov6 = (~(Gx7ov6 & Nx7ov6)); +assign Nx7ov6 = (Ux7ov6 & By7ov6); +assign By7ov6 = (~(Ov6ov6 & Zb7ov6)); +assign Ux7ov6 = (~(Vv6ov6 & Uc7ov6)); +assign Gx7ov6 = (Iy7ov6 & Py7ov6); +assign Py7ov6 = (~(Qw6ov6 & Bd7ov6)); +assign Iy7ov6 = (~(Xw6ov6 & Sb7ov6)); +assign Sw7ov6 = (~(B2q7z6[21] ^ V36ov6)); +assign V36ov6 = (~(Wy7ov6 & Dz7ov6)); +assign Dz7ov6 = (Kz7ov6 & Rz7ov6); +assign Rz7ov6 = (~(Ov6ov6 & Vg7ov6)); +assign Kz7ov6 = (~(Vv6ov6 & Qh7ov6)); +assign Wy7ov6 = (Yz7ov6 & F08ov6); +assign F08ov6 = (~(Qw6ov6 & Xh7ov6)); +assign Yz7ov6 = (~(Xw6ov6 & Og7ov6)); +assign Au7ov6 = (M08ov6 & Gwp7z6[1]); +assign Ur6ov6 = (~(Jp6ov6 & T08ov6)); +assign Qp6ov6 = (~(A18ov6 & Jp6ov6)); +assign Jp6ov6 = (~(H18ov6 | Ex6ov6)); +assign Ex6ov6 = (L42ft6 ? V18ov6 : O18ov6); +assign H18ov6 = (Lx6ov6 | Gwp7z6[1]); +assign A18ov6 = (C28ov6 & J28ov6); +assign J28ov6 = (~(Q28ov6 & X28ov6)); +assign X28ov6 = (~(E38ov6 & L38ov6)); +assign L38ov6 = (S38ov6 & Z38ov6); +assign Z38ov6 = (R16ov6 & T08ov6); +assign R16ov6 = (~(G48ov6 ^ B2q7z6[5])); +assign S38ov6 = (F26ov6 & K16ov6); +assign K16ov6 = (~(N48ov6 ^ B2q7z6[7])); +assign F26ov6 = (~(U48ov6 ^ B2q7z6[2])); +assign E38ov6 = (B58ov6 & K86ov6); +assign K86ov6 = (I58ov6 & P58ov6); +assign P58ov6 = (~(B2q7z6[3] ^ W58ov6)); +assign I58ov6 = (~(B2q7z6[4] ^ D68ov6)); +assign B58ov6 = (R86ov6 & Y16ov6); +assign Y16ov6 = (~(K68ov6 ^ B2q7z6[6])); +assign R86ov6 = (R68ov6 & Y68ov6); +assign Y68ov6 = (~(B2q7z6[0] ^ F78ov6)); +assign R68ov6 = (~(B2q7z6[1] ^ M78ov6)); +assign Q28ov6 = (~(Eq6ov6 & T78ov6)); +assign T78ov6 = (A88ov6 & M08ov6); +assign M08ov6 = (H88ov6 & O88ov6); +assign O88ov6 = (V88ov6 & C98ov6); +assign C98ov6 = (J98ov6 & Q98ov6); +assign Q98ov6 = (~(B2q7z6[13] ^ G48ov6)); +assign G48ov6 = (~(X98ov6 & Ea8ov6)); +assign Ea8ov6 = (La8ov6 & Sa8ov6); +assign Sa8ov6 = (~(Ov6ov6 & Qh7ov6)); +assign La8ov6 = (~(Vv6ov6 & Xh7ov6)); +assign X98ov6 = (Za8ov6 & Gb8ov6); +assign Gb8ov6 = (~(Qw6ov6 & Og7ov6)); +assign Za8ov6 = (~(Xw6ov6 & Vg7ov6)); +assign J98ov6 = (~(B2q7z6[11] ^ W58ov6)); +assign W58ov6 = (~(Nb8ov6 & Ub8ov6)); +assign Ub8ov6 = (Bc8ov6 & Ic8ov6); +assign Ic8ov6 = (~(Ov6ov6 & Uc7ov6)); +assign Bc8ov6 = (~(Vv6ov6 & Bd7ov6)); +assign Nb8ov6 = (Pc8ov6 & Wc8ov6); +assign Wc8ov6 = (~(Qw6ov6 & Sb7ov6)); +assign Pc8ov6 = (~(Xw6ov6 & Zb7ov6)); +assign V88ov6 = (Dd8ov6 & Kd8ov6); +assign Kd8ov6 = (Z56ov6 ^ N48ov6); +assign N48ov6 = (~(Rd8ov6 & Yd8ov6)); +assign Yd8ov6 = (Fe8ov6 & Me8ov6); +assign Me8ov6 = (~(Ov6ov6 & Ax4ov6)); +assign Fe8ov6 = (~(Vv6ov6 & Qy4ov6)); +assign Rd8ov6 = (Te8ov6 & Af8ov6); +assign Af8ov6 = (~(Qw6ov6 & Ox4ov6)); +assign Te8ov6 = (~(Xw6ov6 & Yv4ov6)); +assign Z56ov6 = (!B2q7z6[15]); +assign Dd8ov6 = (N66ov6 ^ U48ov6); +assign U48ov6 = (~(Hf8ov6 & Of8ov6)); +assign Of8ov6 = (Vf8ov6 & Cg8ov6); +assign Cg8ov6 = (~(Ov6ov6 & K07ov6)); +assign Vf8ov6 = (~(Vv6ov6 & R07ov6)); +assign Hf8ov6 = (Jg8ov6 & Qg8ov6); +assign Qg8ov6 = (~(Qw6ov6 & Iz6ov6)); +assign Jg8ov6 = (~(Xw6ov6 & Pz6ov6)); +assign N66ov6 = (!B2q7z6[10]); +assign H88ov6 = (Xg8ov6 & Eh8ov6); +assign Eh8ov6 = (Lh8ov6 & Sh8ov6); +assign Sh8ov6 = (~(B2q7z6[14] ^ K68ov6)); +assign K68ov6 = (~(Zh8ov6 & Gi8ov6)); +assign Gi8ov6 = (Ni8ov6 & Ui8ov6); +assign Ui8ov6 = (~(Ov6ov6 & Co7ov6)); +assign Ni8ov6 = (~(Vv6ov6 & Jo7ov6)); +assign Zh8ov6 = (Bj8ov6 & Ij8ov6); +assign Ij8ov6 = (~(Qw6ov6 & An7ov6)); +assign Bj8ov6 = (~(Xw6ov6 & Hn7ov6)); +assign Lh8ov6 = (~(B2q7z6[12] ^ D68ov6)); +assign D68ov6 = (~(Pj8ov6 & Wj8ov6)); +assign Wj8ov6 = (Dk8ov6 & Kk8ov6); +assign Kk8ov6 = (~(Ov6ov6 & W67ov6)); +assign Dk8ov6 = (~(Vv6ov6 & D77ov6)); +assign Pj8ov6 = (Rk8ov6 & Yk8ov6); +assign Yk8ov6 = (~(Qw6ov6 & U57ov6)); +assign Rk8ov6 = (~(Xw6ov6 & B67ov6)); +assign Xg8ov6 = (Fl8ov6 & Ml8ov6); +assign Ml8ov6 = (Tl8ov6 ^ F78ov6); +assign F78ov6 = (~(Am8ov6 & Hm8ov6)); +assign Hm8ov6 = (Om8ov6 & Vm8ov6); +assign Vm8ov6 = (~(Ov6ov6 & C37ov6)); +assign Om8ov6 = (~(Vv6ov6 & J37ov6)); +assign Am8ov6 = (Cn8ov6 & Jn8ov6); +assign Jn8ov6 = (~(Qw6ov6 & A27ov6)); +assign Cn8ov6 = (~(Xw6ov6 & H27ov6)); +assign Tl8ov6 = (!B2q7z6[8]); +assign Fl8ov6 = (~(B2q7z6[9] ^ M78ov6)); +assign M78ov6 = (~(Qn8ov6 & Xn8ov6)); +assign Xn8ov6 = (Eo8ov6 & Lo8ov6); +assign Lo8ov6 = (~(Ov6ov6 & Ca7ov6)); +assign Eo8ov6 = (~(Vv6ov6 & Ja7ov6)); +assign Qn8ov6 = (So8ov6 & Zo8ov6); +assign Zo8ov6 = (~(Qw6ov6 & A97ov6)); +assign So8ov6 = (~(Xw6ov6 & H97ov6)); +assign A88ov6 = (Zq6ov6 & Gr6ov6); +assign Gr6ov6 = (Gp8ov6 ^ Pl6ov6); +assign Pl6ov6 = (!B2q7z6[6]); +assign Gp8ov6 = (~(Np8ov6 & Up8ov6)); +assign Up8ov6 = (Bq8ov6 & Iq8ov6); +assign Iq8ov6 = (~(Ov6ov6 & Jo7ov6)); +assign Bq8ov6 = (~(Vv6ov6 & An7ov6)); +assign Np8ov6 = (Pq8ov6 & Wq8ov6); +assign Wq8ov6 = (~(Qw6ov6 & Hn7ov6)); +assign Pq8ov6 = (~(Xw6ov6 & Co7ov6)); +assign Zq6ov6 = (Dr8ov6 ^ Ej6ov6); +assign Ej6ov6 = (!B2q7z6[5]); +assign Dr8ov6 = (~(Kr8ov6 & Rr8ov6)); +assign Rr8ov6 = (Yr8ov6 & Fs8ov6); +assign Fs8ov6 = (~(Ov6ov6 & Xh7ov6)); +assign Yr8ov6 = (~(Vv6ov6 & Og7ov6)); +assign Kr8ov6 = (Ms8ov6 & Ts8ov6); +assign Ts8ov6 = (~(Qw6ov6 & Vg7ov6)); +assign Ms8ov6 = (~(Xw6ov6 & Qh7ov6)); +assign Eq6ov6 = (~(At8ov6 | Ht8ov6)); +assign Ht8ov6 = (~(Ot8ov6 & Vt8ov6)); +assign Vt8ov6 = (Cu8ov6 & Ju8ov6); +assign Ju8ov6 = (~(Zj6ov6 ^ Qu8ov6)); +assign Qu8ov6 = (Xu8ov6 & Ev8ov6); +assign Ev8ov6 = (Lv8ov6 & Sv8ov6); +assign Sv8ov6 = (~(Ov6ov6 & Qy4ov6)); +assign Lv8ov6 = (~(Vv6ov6 & Ox4ov6)); +assign Xu8ov6 = (Zv8ov6 & Gw8ov6); +assign Gw8ov6 = (~(Qw6ov6 & Yv4ov6)); +assign Zv8ov6 = (~(Xw6ov6 & Ax4ov6)); +assign Zj6ov6 = (!B2q7z6[7]); +assign Cu8ov6 = (~(Gk6ov6 ^ Nw8ov6)); +assign Nw8ov6 = (Uw8ov6 & Bx8ov6); +assign Bx8ov6 = (Ix8ov6 & Px8ov6); +assign Px8ov6 = (~(Ov6ov6 & R07ov6)); +assign Ix8ov6 = (~(Vv6ov6 & Iz6ov6)); +assign Uw8ov6 = (Wx8ov6 & Dy8ov6); +assign Dy8ov6 = (~(Qw6ov6 & Pz6ov6)); +assign Wx8ov6 = (~(Xw6ov6 & K07ov6)); +assign Gk6ov6 = (!B2q7z6[2]); +assign Ot8ov6 = (Ky8ov6 & Ry8ov6); +assign Ry8ov6 = (B2q7z6[0] ^ Yy8ov6); +assign Yy8ov6 = (Fz8ov6 & Mz8ov6); +assign Mz8ov6 = (Tz8ov6 & A09ov6); +assign A09ov6 = (~(Ov6ov6 & J37ov6)); +assign Tz8ov6 = (~(Vv6ov6 & A27ov6)); +assign Fz8ov6 = (H09ov6 & O09ov6); +assign O09ov6 = (~(Qw6ov6 & H27ov6)); +assign H09ov6 = (~(Xw6ov6 & C37ov6)); +assign Ky8ov6 = (B2q7z6[1] ^ V09ov6); +assign V09ov6 = (C19ov6 & J19ov6); +assign J19ov6 = (Q19ov6 & X19ov6); +assign X19ov6 = (~(Ov6ov6 & Ja7ov6)); +assign Q19ov6 = (~(Vv6ov6 & A97ov6)); +assign C19ov6 = (E29ov6 & L29ov6); +assign L29ov6 = (~(Qw6ov6 & H97ov6)); +assign E29ov6 = (~(Xw6ov6 & Ca7ov6)); +assign At8ov6 = (~(S29ov6 & Z29ov6)); +assign Z29ov6 = (B2q7z6[3] ^ G39ov6); +assign G39ov6 = (N39ov6 & U39ov6); +assign U39ov6 = (B49ov6 & I49ov6); +assign I49ov6 = (~(Ov6ov6 & Bd7ov6)); +assign B49ov6 = (~(Vv6ov6 & Sb7ov6)); +assign N39ov6 = (P49ov6 & W49ov6); +assign W49ov6 = (~(Qw6ov6 & Zb7ov6)); +assign P49ov6 = (~(Xw6ov6 & Uc7ov6)); +assign S29ov6 = (B2q7z6[4] ^ D59ov6); +assign D59ov6 = (K59ov6 & R59ov6); +assign R59ov6 = (Y59ov6 & F69ov6); +assign F69ov6 = (~(Ov6ov6 & D77ov6)); +assign Ov6ov6 = (~(M69ov6 | Ncp7z6[0])); +assign Y59ov6 = (~(Vv6ov6 & U57ov6)); +assign Vv6ov6 = (~(T69ov6 | Ncp7z6[1])); +assign K59ov6 = (A79ov6 & H79ov6); +assign H79ov6 = (~(Qw6ov6 & B67ov6)); +assign Qw6ov6 = (~(Ncp7z6[0] | Ncp7z6[1])); +assign A79ov6 = (~(Xw6ov6 & W67ov6)); +assign Xw6ov6 = (~(T69ov6 | M69ov6)); +assign C28ov6 = (Bbp7z6[1] | Bbp7z6[0]); +assign Ns5ov6 = (O5a7z6 & O79ov6); +assign O79ov6 = (~(Gwp7z6[1] & V79ov6)); +assign V79ov6 = (~(Bbp7z6[1] & C89ov6)); +assign C89ov6 = (T08ov6 | Bbp7z6[0]); +assign T08ov6 = (!Gwp7z6[0]); +assign Q7l8v6 = (~(J89ov6 & Q89ov6)); +assign Q89ov6 = (X89ov6 & E99ov6); +assign X89ov6 = (~(L99ov6 | Mb88v6)); +assign J89ov6 = (S99ov6 & Z99ov6); +assign Z99ov6 = (~(Gg2ft6 & Ga9ov6)); +assign Ga9ov6 = (~(Na9ov6 & Ua9ov6)); +assign S99ov6 = (~(Kg5ft6 & Bb9ov6)); +assign C7l8v6 = (Pb9ov6 ? D6c7z6[0] : Ib9ov6); +assign Ib9ov6 = (~(Wb9ov6 & Dc9ov6)); +assign Dc9ov6 = (Kc9ov6 & Rc9ov6); +assign Rc9ov6 = (~(Yc9ov6 & Fd9ov6)); +assign Kc9ov6 = (~(Md9ov6 & Td9ov6)); +assign Wb9ov6 = (Ae9ov6 & He9ov6); +assign He9ov6 = (~(Oe9ov6 & Ve9ov6)); +assign Ae9ov6 = (~(Cf9ov6 & Jf9ov6)); +assign O6l8v6 = (~(Qf9ov6 & Xf9ov6)); +assign Xf9ov6 = (Eg9ov6 | Mulnv6); +assign Qf9ov6 = (~(Lg9ov6 & Sg9ov6)); +assign Sg9ov6 = (Zg9ov6 & Gh9ov6); +assign Gh9ov6 = (~(Nh9ov6 & Uh9ov6)); +assign Uh9ov6 = (Bi9ov6 & Ii9ov6); +assign Nh9ov6 = (Gr2et6 & Pi9ov6); +assign Zg9ov6 = (Xmvnv6 & Dxvnv6); +assign Xmvnv6 = (~(Wi9ov6 & Dj9ov6)); +assign Wi9ov6 = (Q0wnv6 & Ldo7v6); +assign Lg9ov6 = (S7xdt6 & Kj9ov6); +assign Kj9ov6 = (~(Ecc7z6[14] & Pbadt6)); +assign A6l8v6 = (Yj9ov6 ? Rj9ov6 : Kyn7z6[0]); +assign T5l8v6 = (Yj9ov6 ? Fk9ov6 : Kyn7z6[1]); +assign Yj9ov6 = (!Mk9ov6); +assign M5l8v6 = (~(Tk9ov6 & Al9ov6)); +assign Al9ov6 = (~(Hl9ov6 & Ol9ov6)); +assign Ol9ov6 = (~(Vl9ov6 & Cm9ov6)); +assign Cm9ov6 = (Jm9ov6 & Qm9ov6); +assign Jm9ov6 = (Xm9ov6 & En9ov6); +assign Vl9ov6 = (Ln9ov6 & Sn9ov6); +assign Sn9ov6 = (Zn9ov6 | Go9ov6); +assign Ln9ov6 = (No9ov6 & Uo9ov6); +assign Uo9ov6 = (~(Bp9ov6 & Ip9ov6)); +assign Ip9ov6 = (~(Pp9ov6 & Wp9ov6)); +assign Tk9ov6 = (~(Dq9ov6 & Qln7z6[1])); +assign F5l8v6 = (~(Kq9ov6 & Rq9ov6)); +assign Rq9ov6 = (~(Hl9ov6 & Yq9ov6)); +assign Kq9ov6 = (~(Dq9ov6 & Xnnet6)); +assign Y4l8v6 = (Rconv6 ? Yk1ov6 : Meoet6); +assign R4l8v6 = (Mr9ov6 ? Hrb7z6[0] : Fr9ov6); +assign K4l8v6 = (As9ov6 ? L9d7z6[2] : Tr9ov6); +assign D4l8v6 = (~(Hs9ov6 & Os9ov6)); +assign Os9ov6 = (~(W9edt6 & Vs9ov6)); +assign W3l8v6 = (~(Ct9ov6 & Jt9ov6)); +assign Jt9ov6 = (Qt9ov6 & Xt9ov6); +assign Xt9ov6 = (Eu9ov6 | Lu9ov6); +assign Qt9ov6 = (Su9ov6 & Zu9ov6); +assign Zu9ov6 = (~(Gv9ov6 & Nv9ov6)); +assign Su9ov6 = (~(Uv9ov6 & Mu97z6)); +assign Ct9ov6 = (Bw9ov6 & Iw9ov6); +assign Iw9ov6 = (~(Pw9ov6 & Kxb7z6[1])); +assign Bw9ov6 = (Ww9ov6 & Dx9ov6); +assign Dx9ov6 = (~(Kx9ov6 & vis_pc_o[1])); +assign Ww9ov6 = (~(Rx9ov6 & Gli7z6[1])); +assign P3l8v6 = (~(Yx9ov6 & Fy9ov6)); +assign Fy9ov6 = (~(My9ov6 & Qu1ov6)); +assign Yx9ov6 = (Ty9ov6 & Az9ov6); +assign Az9ov6 = (~(Hz9ov6 & H9gdt6)); +assign Ty9ov6 = (~(Uf4ov6 & Pfgdt6)); +assign Pfgdt6 = (Vz9ov6 ? Oz9ov6 : H9gdt6); +assign Vz9ov6 = (Uf4ov6 & C0aov6); +assign C0aov6 = (~(J0aov6 & Q0aov6)); +assign J0aov6 = (~(Dte7z6[19] & Dte7z6[18])); +assign Oz9ov6 = (!X0aov6); +assign X0aov6 = (Jm2ov6 ? L1aov6 : E1aov6); +assign L1aov6 = (~(S1aov6 & Z1aov6)); +assign Z1aov6 = (~(X2g7z6[31] & G2aov6)); +assign S1aov6 = (J5g7z6[31] ? X2g7z6[31] : G2aov6); +assign J5g7z6[31] = (N2aov6 & Aumnv6); +assign Aumnv6 = (!Sannv6); +assign Sannv6 = (~(U2aov6 | Dte7z6[2])); +assign X2g7z6[31] = (B3aov6 & Gbnnv6); +assign Gbnnv6 = (!Oumnv6); +assign Oumnv6 = (~(U2aov6 | Dte7z6[3])); +assign U2aov6 = (~(I3aov6 & P3aov6)); +assign P3aov6 = (~(W3aov6 & D4aov6)); +assign W3aov6 = (~(K4aov6 & R4aov6)); +assign I3aov6 = (Y4aov6 & F5aov6); +assign F5aov6 = (!M5aov6); +assign G2aov6 = (T5aov6 | L0g7z6[31]); +assign T5aov6 = (!Ky1ov6); +assign E1aov6 = (~(Px1ov6 & Fhc7z6[28])); +assign I3l8v6 = (~(A6aov6 & H6aov6)); +assign H6aov6 = (O6aov6 & V6aov6); +assign V6aov6 = (~(Td2ov6 & C7aov6)); +assign O6aov6 = (J7aov6 & Q7aov6); +assign Q7aov6 = (C12ov6 | Oqjnv6); +assign Oqjnv6 = (X7aov6 & E8aov6); +assign E8aov6 = (L8aov6 & S8aov6); +assign S8aov6 = (Z8aov6 & G9aov6); +assign G9aov6 = (N9aov6 & U9aov6); +assign U9aov6 = (~(vis_psp_o[28] & N32ov6)); +assign N9aov6 = (~(U32ov6 & Pic7z6[28])); +assign Z8aov6 = (Baaov6 & Iaaov6); +assign Iaaov6 = (~(vis_msp_o[28] & P42ov6)); +assign Baaov6 = (~(vis_r12_o[28] & W42ov6)); +assign L8aov6 = (Paaov6 & Waaov6); +assign Waaov6 = (Dbaov6 & Kbaov6); +assign Kbaov6 = (~(vis_r11_o[28] & F62ov6)); +assign Dbaov6 = (~(vis_r10_o[28] & M62ov6)); +assign Paaov6 = (Rbaov6 & Ybaov6); +assign Ybaov6 = (~(vis_r9_o[28] & H72ov6)); +assign Rbaov6 = (~(vis_r8_o[28] & O72ov6)); +assign X7aov6 = (Fcaov6 & Mcaov6); +assign Mcaov6 = (Tcaov6 & Adaov6); +assign Adaov6 = (Hdaov6 & Odaov6); +assign Odaov6 = (~(vis_r7_o[28] & L92ov6)); +assign Hdaov6 = (~(vis_r6_o[28] & S92ov6)); +assign Tcaov6 = (Vdaov6 & Ceaov6); +assign Ceaov6 = (~(vis_r5_o[28] & Na2ov6)); +assign Vdaov6 = (~(vis_r4_o[28] & Ua2ov6)); +assign Fcaov6 = (Jeaov6 & Qeaov6); +assign Qeaov6 = (Xeaov6 & Efaov6); +assign Efaov6 = (~(vis_r3_o[28] & Dc2ov6)); +assign Xeaov6 = (~(vis_r2_o[28] & Kc2ov6)); +assign Jeaov6 = (Lfaov6 & Sfaov6); +assign Sfaov6 = (~(vis_r1_o[28] & Fd2ov6)); +assign Lfaov6 = (~(vis_r0_o[28] & Md2ov6)); +assign J7aov6 = (~(H02ov6 & Uu97z6)); +assign A6aov6 = (Zfaov6 & Ggaov6); +assign Ggaov6 = (~(Ve2ov6 & vis_pc_o[28])); +assign Zfaov6 = (~(Fhc7z6[28] & Cf2ov6)); +assign B3l8v6 = (Ngaov6 & Ugaov6); +assign Ugaov6 = (~(Bhaov6 | Pacdt6)); +assign Ngaov6 = (Snvnv6 & Ihaov6); +assign U2l8v6 = (~(Phaov6 & Whaov6)); +assign Whaov6 = (Diaov6 | G597z6); +assign N2l8v6 = (~(Ij1ov6 & Kiaov6)); +assign Kiaov6 = (~(Riaov6 & Lpc7z6[1])); +assign G2l8v6 = (Diaov6 ? Yiaov6 : Pmc7z6[0]); +assign Z1l8v6 = (Diaov6 ? Fjaov6 : Pmc7z6[1]); +assign S1l8v6 = (~(Mjaov6 & Tjaov6)); +assign Tjaov6 = (Akaov6 & Hkaov6); +assign Hkaov6 = (~(Ohe7z6[7] & Okaov6)); +assign Akaov6 = (Vkaov6 & Claov6); +assign Claov6 = (~(Jlaov6 & Zec7z6[7])); +assign Vkaov6 = (~(Qlaov6 & Xlaov6)); +assign Mjaov6 = (Emaov6 & Lmaov6); +assign Lmaov6 = (Smaov6 | Zmaov6); +assign Emaov6 = (~(Gnaov6 & Zec7z6[23])); +assign L1l8v6 = (~(Unaov6 & Boaov6)); +assign Boaov6 = (Ioaov6 & Poaov6); +assign Poaov6 = (~(Ohe7z6[6] & Okaov6)); +assign Ioaov6 = (Woaov6 & Dpaov6); +assign Dpaov6 = (~(Jlaov6 & Zec7z6[6])); +assign Woaov6 = (~(Qlaov6 & Kpaov6)); +assign Unaov6 = (Rpaov6 & Ypaov6); +assign Ypaov6 = (Smaov6 | Fqaov6); +assign Rpaov6 = (~(Gnaov6 & Zec7z6[22])); +assign E1l8v6 = (!Mqaov6); +assign Mqaov6 = (Nnaov6 ? Qtvnv6 : Tqaov6); +assign Tqaov6 = (Araov6 & Hraov6); +assign Hraov6 = (Oraov6 & Vraov6); +assign Vraov6 = (Csaov6 & Jsaov6); +assign Csaov6 = (Qsaov6 & Srknv6); +assign Oraov6 = (Xsaov6 & Etaov6); +assign Xsaov6 = (~(Ltaov6 & Staov6)); +assign Ltaov6 = (Ztaov6 & Guaov6); +assign Guaov6 = (~(Nuaov6 & Uuaov6)); +assign Uuaov6 = (Fqaov6 & Zmaov6); +assign Nuaov6 = (Bvaov6 & Ivaov6); +assign Araov6 = (Pvaov6 & Wvaov6); +assign Wvaov6 = (Dwaov6 & Kwaov6); +assign Kwaov6 = (~(Rwaov6 & Yl2et6)); +assign Rwaov6 = (Ywaov6 & Fxaov6); +assign Dwaov6 = (~(Xtvnv6 & Mxaov6)); +assign Mxaov6 = (~(Txaov6 & Ayaov6)); +assign Pvaov6 = (Hyaov6 & Oyaov6); +assign Oyaov6 = (Vyaov6 | Txinv6); +assign Vyaov6 = (Czaov6 & Jzaov6); +assign Czaov6 = (Qzaov6 & Xzaov6); +assign Qzaov6 = (~(E0bov6 & Lxydt6)); +assign E0bov6 = (~(Euvnv6 & L0bov6)); +assign Hyaov6 = (~(S0bov6 & Qg2nv6)); +assign X0l8v6 = (~(Z0bov6 & G1bov6)); +assign G1bov6 = (~(Pw9ov6 & Kxb7z6[0])); +assign Z0bov6 = (N1bov6 & U1bov6); +assign U1bov6 = (~(Gv9ov6 & B2bov6)); +assign N1bov6 = (Eu9ov6 | I2bov6); +assign Q0l8v6 = (~(P2bov6 & W2bov6)); +assign W2bov6 = (~(D3bov6 & S7f7z6[5])); +assign J0l8v6 = (~(K3bov6 & R3bov6)); +assign R3bov6 = (~(Y3bov6 & Yxf7z6[27])); +assign K3bov6 = (F4bov6 & M4bov6); +assign M4bov6 = (~(Rj2ov6 & Mtkdt6)); +assign F4bov6 = (~(Yj2ov6 & Yxf7z6[31])); +assign C0l8v6 = (~(T4bov6 & A5bov6)); +assign A5bov6 = (H5bov6 & O5bov6); +assign O5bov6 = (~(V5bov6 & C6bov6)); +assign H5bov6 = (~(J6bov6 & Alf7z6[31])); +assign T4bov6 = (Q6bov6 & X6bov6); +assign X6bov6 = (~(Cqf7z6[15] & E7bov6)); +assign Q6bov6 = (~(L0g7z6[31] & L7bov6)); +assign Vzk8v6 = (~(S7bov6 & Z7bov6)); +assign Z7bov6 = (G8bov6 & N8bov6); +assign N8bov6 = (~(Ubpdt6 & U8bov6)); +assign G8bov6 = (B9bov6 & I9bov6); +assign I9bov6 = (~(Epmdt6 & P9bov6)); +assign B9bov6 = (~(W9bov6 & Onf7z6[31])); +assign S7bov6 = (Dabov6 & Kabov6); +assign Kabov6 = (~(Rabov6 & L0g7z6[31])); +assign Dabov6 = (Yabov6 & Fbbov6); +assign Fbbov6 = (~(Mtkdt6 & Mbbov6)); +assign Yabov6 = (~(L0g7z6[15] & Gcmnv6)); +assign Ozk8v6 = (Tbbov6 ? vis_r0_o[31] : Ae2ov6); +assign Hzk8v6 = (~(Acbov6 & Hcbov6)); +assign Hcbov6 = (Ocbov6 & Vcbov6); +assign Vcbov6 = (~(H02ov6 & Cv97z6)); +assign Ocbov6 = (Cdbov6 & Jdbov6); +assign Jdbov6 = (C12ov6 | Yojnv6); +assign Yojnv6 = (Qdbov6 & Xdbov6); +assign Xdbov6 = (Eebov6 & Lebov6); +assign Lebov6 = (Sebov6 & Zebov6); +assign Zebov6 = (Gfbov6 & Nfbov6); +assign Nfbov6 = (~(vis_psp_o[29] & N32ov6)); +assign Gfbov6 = (~(U32ov6 & Pic7z6[29])); +assign Sebov6 = (Ufbov6 & Bgbov6); +assign Bgbov6 = (~(vis_msp_o[29] & P42ov6)); +assign Ufbov6 = (~(vis_r12_o[29] & W42ov6)); +assign Eebov6 = (Igbov6 & Pgbov6); +assign Pgbov6 = (Wgbov6 & Dhbov6); +assign Dhbov6 = (~(vis_r11_o[29] & F62ov6)); +assign Wgbov6 = (~(vis_r10_o[29] & M62ov6)); +assign Igbov6 = (Khbov6 & Rhbov6); +assign Rhbov6 = (~(vis_r9_o[29] & H72ov6)); +assign Khbov6 = (~(vis_r8_o[29] & O72ov6)); +assign Qdbov6 = (Yhbov6 & Fibov6); +assign Fibov6 = (Mibov6 & Tibov6); +assign Tibov6 = (Ajbov6 & Hjbov6); +assign Hjbov6 = (~(vis_r7_o[29] & L92ov6)); +assign Ajbov6 = (~(vis_r6_o[29] & S92ov6)); +assign Mibov6 = (Ojbov6 & Vjbov6); +assign Vjbov6 = (~(vis_r5_o[29] & Na2ov6)); +assign Ojbov6 = (~(vis_r4_o[29] & Ua2ov6)); +assign Yhbov6 = (Ckbov6 & Jkbov6); +assign Jkbov6 = (Qkbov6 & Xkbov6); +assign Xkbov6 = (~(vis_r3_o[29] & Dc2ov6)); +assign Qkbov6 = (~(vis_r2_o[29] & Kc2ov6)); +assign Ckbov6 = (Elbov6 & Llbov6); +assign Llbov6 = (~(vis_r1_o[29] & Fd2ov6)); +assign Elbov6 = (~(vis_r0_o[29] & Md2ov6)); +assign Cdbov6 = (~(Td2ov6 & Slbov6)); +assign Acbov6 = (Zlbov6 & Gmbov6); +assign Gmbov6 = (~(Ve2ov6 & vis_pc_o[29])); +assign Zlbov6 = (~(Fhc7z6[29] & Cf2ov6)); +assign Azk8v6 = (~(Nmbov6 & Umbov6)); +assign Umbov6 = (~(Bnbov6 & Qu1ov6)); +assign Nmbov6 = (Inbov6 & Pnbov6); +assign Pnbov6 = (~(Hz9ov6 & S7gdt6)); +assign Inbov6 = (~(Uf4ov6 & Aegdt6)); +assign Aegdt6 = (~(Wnbov6 & Dobov6)); +assign Dobov6 = (Rdnnv6 | Kobov6); +assign Rdnnv6 = (!S7gdt6); +assign Wnbov6 = (Gw1ov6 ? Yobov6 : Robov6); +assign Yobov6 = (~(Fpbov6 & Mpbov6)); +assign Fpbov6 = (Uf4ov6 & Tpbov6); +assign Tpbov6 = (~(Aqbov6 & Hqbov6)); +assign Hqbov6 = (~(Dte7z6[5] & V1c7z6[31])); +assign Aqbov6 = (Oqbov6 & Vqbov6); +assign Vqbov6 = (~(Crbov6 & Jrbov6)); +assign Jrbov6 = (Dy1ov6 | Dte7z6[4]); +assign Crbov6 = (Esbov6 ? Xrbov6 : Qrbov6); +assign Esbov6 = (Lsbov6 & Ssbov6); +assign Ssbov6 = (~(Zsbov6 & Gtbov6)); +assign Gtbov6 = (~(Ntbov6 & Utbov6)); +assign Qrbov6 = (Iubov6 ? S7gdt6 : Bubov6); +assign Iubov6 = (Pubov6 & Wubov6); +assign Pubov6 = (~(Ntbov6 | Dvbov6)); +assign Dvbov6 = (Utbov6 & Kvbov6); +assign Bubov6 = (Fwbov6 ? Yvbov6 : Rvbov6); +assign Oqbov6 = (~(Px1ov6 & Fhc7z6[29])); +assign Robov6 = (~(Mwbov6 & Twbov6)); +assign Twbov6 = (~(Dte7z6[4] | Dte7z6[5])); +assign Mwbov6 = (L0g7z6[32] & Kobov6); +assign Kobov6 = (Mpbov6 & Uf4ov6); +assign Tyk8v6 = (~(Axbov6 & Hxbov6)); +assign Hxbov6 = (Oxbov6 & Vxbov6); +assign Vxbov6 = (Eu9ov6 | Cybov6); +assign Oxbov6 = (Jybov6 & Qybov6); +assign Qybov6 = (~(Gv9ov6 & Slbov6)); +assign Jybov6 = (~(Uv9ov6 & Cv97z6)); +assign Axbov6 = (Xybov6 & Ezbov6); +assign Ezbov6 = (~(Pw9ov6 & Kxb7z6[29])); +assign Xybov6 = (Lzbov6 & Szbov6); +assign Szbov6 = (~(Kx9ov6 & vis_pc_o[29])); +assign Lzbov6 = (~(Gli7z6[29] & Rx9ov6)); +assign Myk8v6 = (~(Zzbov6 & G0cov6)); +assign G0cov6 = (N0cov6 & U0cov6); +assign U0cov6 = (Eu9ov6 | B1cov6); +assign N0cov6 = (I1cov6 & P1cov6); +assign P1cov6 = (~(Gv9ov6 & Ae2ov6)); +assign I1cov6 = (~(Uv9ov6 & Wt97z6)); +assign Zzbov6 = (W1cov6 & D2cov6); +assign D2cov6 = (~(Pw9ov6 & Kxb7z6[31])); +assign W1cov6 = (K2cov6 & R2cov6); +assign R2cov6 = (~(Kx9ov6 & vis_pc_o[31])); +assign K2cov6 = (~(Rx9ov6 & Gli7z6[31])); +assign Fyk8v6 = (~(Y2cov6 & F3cov6)); +assign F3cov6 = (M3cov6 & T3cov6); +assign T3cov6 = (~(H02ov6 & Kv97z6)); +assign M3cov6 = (A4cov6 & H4cov6); +assign H4cov6 = (C12ov6 | Sdknv6); +assign Sdknv6 = (O4cov6 & V4cov6); +assign V4cov6 = (C5cov6 & J5cov6); +assign J5cov6 = (Q5cov6 & X5cov6); +assign X5cov6 = (E6cov6 & L6cov6); +assign L6cov6 = (~(vis_psp_o[15] & N32ov6)); +assign E6cov6 = (~(U32ov6 & Pic7z6[15])); +assign Q5cov6 = (S6cov6 & Z6cov6); +assign Z6cov6 = (~(vis_msp_o[15] & P42ov6)); +assign S6cov6 = (~(vis_r12_o[15] & W42ov6)); +assign C5cov6 = (G7cov6 & N7cov6); +assign N7cov6 = (U7cov6 & B8cov6); +assign B8cov6 = (~(vis_r11_o[15] & F62ov6)); +assign U7cov6 = (~(vis_r10_o[15] & M62ov6)); +assign G7cov6 = (I8cov6 & P8cov6); +assign P8cov6 = (~(vis_r9_o[15] & H72ov6)); +assign I8cov6 = (~(vis_r8_o[15] & O72ov6)); +assign O4cov6 = (W8cov6 & D9cov6); +assign D9cov6 = (K9cov6 & R9cov6); +assign R9cov6 = (Y9cov6 & Facov6); +assign Facov6 = (~(vis_r7_o[15] & L92ov6)); +assign Y9cov6 = (~(vis_r6_o[15] & S92ov6)); +assign K9cov6 = (Macov6 & Tacov6); +assign Tacov6 = (~(vis_r5_o[15] & Na2ov6)); +assign Macov6 = (~(vis_r4_o[15] & Ua2ov6)); +assign W8cov6 = (Abcov6 & Hbcov6); +assign Hbcov6 = (Obcov6 & Vbcov6); +assign Vbcov6 = (~(vis_r3_o[15] & Dc2ov6)); +assign Obcov6 = (~(vis_r2_o[15] & Kc2ov6)); +assign Abcov6 = (Cccov6 & Jccov6); +assign Jccov6 = (~(vis_r1_o[15] & Fd2ov6)); +assign Cccov6 = (~(vis_r0_o[15] & Md2ov6)); +assign A4cov6 = (~(Td2ov6 & Qccov6)); +assign Y2cov6 = (Xccov6 & Edcov6); +assign Edcov6 = (~(Ve2ov6 & vis_pc_o[15])); +assign Xccov6 = (~(Fhc7z6[15] & Cf2ov6)); +assign Yxk8v6 = (~(Ldcov6 & Sdcov6)); +assign Sdcov6 = (~(B987v6 & I0snv6)); +assign Ldcov6 = (~(Zdcov6 & Gecov6)); +assign Zdcov6 = (~(Necov6 & Uecov6)); +assign Uecov6 = (Bfcov6 & Ifcov6); +assign Ifcov6 = (~(Pfcov6 | Wfcov6)); +assign Pfcov6 = (TSVALUEB[10] ^ Gnzmz6[11]); +assign Bfcov6 = (Dgcov6 & Kgcov6); +assign Kgcov6 = (~(TSVALUEB[11] ^ Gnzmz6[12])); +assign Dgcov6 = (~(TSVALUEB[12] ^ Gnzmz6[13])); +assign Necov6 = (Rgcov6 & Ygcov6); +assign Ygcov6 = (Fhcov6 & Mhcov6); +assign Mhcov6 = (~(TSVALUEB[13] ^ Gnzmz6[14])); +assign Fhcov6 = (~(TSVALUEB[7] ^ Gnzmz6[8])); +assign Rgcov6 = (Thcov6 & Aicov6); +assign Aicov6 = (~(TSVALUEB[8] ^ Gnzmz6[9])); +assign Thcov6 = (~(TSVALUEB[9] ^ Gnzmz6[10])); +assign Rxk8v6 = (~(Hicov6 & Oicov6)); +assign Oicov6 = (~(Vicov6 & Fed7v6)); +assign Hicov6 = (~(Cjcov6 & Jjcov6)); +assign Jjcov6 = (Qjcov6 & Xjcov6); +assign Xjcov6 = (~(Ekcov6 & Lkcov6)); +assign Ekcov6 = (Xfd7v6 ^ Ocd7v6); +assign Cjcov6 = (Skcov6 & Zkcov6); +assign Zkcov6 = (~(Glcov6 & Nlcov6)); +assign Glcov6 = (~(Ulcov6 & Bmcov6)); +assign Bmcov6 = (Imcov6 & Pmcov6); +assign Pmcov6 = (Wmcov6 & Fftnv6); +assign Imcov6 = (Dncov6 & Kncov6); +assign Kncov6 = (E11nz6[0] ^ E5d7v6); +assign Dncov6 = (~(Rncov6 ^ E11nz6[4])); +assign Ulcov6 = (Yncov6 & Focov6); +assign Focov6 = (Mocov6 ^ Tocov6); +assign Yncov6 = (Apcov6 & Hpcov6); +assign Hpcov6 = (~(Opcov6 ^ E11nz6[3])); +assign Apcov6 = (~(Y3d7v6 ^ E11nz6[1])); +assign Kxk8v6 = (~(Lyrnv6 ^ Wmcov6)); +assign Dxk8v6 = (Wmcov6 ? Rncov6 : Rr0nz6[1]); +assign Rncov6 = (Vpcov6 & Lkcov6); +assign Vpcov6 = (~(Owrnv6 ^ Cqcov6)); +assign Cqcov6 = (Jqcov6 & Rr0nz6[0]); +assign Wwk8v6 = (Wmcov6 ? Y3d7v6 : Hw0nz6[1]); +assign Y3d7v6 = (Lyrnv6 ^ Qqcov6); +assign Pwk8v6 = (Wmcov6 ? Tocov6 : Hw0nz6[2]); +assign Tocov6 = (~(Xqcov6 & Eyrnv6)); +assign Xqcov6 = (Lyrnv6 ? Ercov6 : Xxrnv6); +assign Iwk8v6 = (Wmcov6 ? Opcov6 : Rr0nz6[0]); +assign Opcov6 = (Lrcov6 & Lkcov6); +assign Lrcov6 = (~(Cxrnv6 ^ Jqcov6)); +assign Jqcov6 = (~(Srcov6 | Lyrnv6)); +assign Bwk8v6 = (~(Zrcov6 & Gscov6)); +assign Gscov6 = (~(Ft0nz6[4] & Nscov6)); +assign Nscov6 = (~(Uscov6 & Btcov6)); +assign Btcov6 = (~(Ft0nz6[3] & Itcov6)); +assign Zrcov6 = (~(Spc7v6 & Ptcov6)); +assign Ptcov6 = (~(Wtcov6 ^ Tvrnv6)); +assign Wtcov6 = (Ducov6 & Fvrnv6); +assign Uvk8v6 = (~(Kucov6 & Rucov6)); +assign Rucov6 = (~(Spc7v6 & Yucov6)); +assign Yucov6 = (Fvcov6 ^ Durnv6); +assign Kucov6 = (Ft0nz6[1] ? Tvcov6 : Mvcov6); +assign Mvcov6 = (Awcov6 | Ft0nz6[0]); +assign Nvk8v6 = (~(Hwcov6 & Owcov6)); +assign Hwcov6 = (Vwcov6 & Cxcov6); +assign Cxcov6 = (~(Ft0nz6[2] & Jxcov6)); +assign Jxcov6 = (~(Tvcov6 & Qxcov6)); +assign Qxcov6 = (~(Ft0nz6[1] & Itcov6)); +assign Tvcov6 = (Xxcov6 & Eycov6); +assign Eycov6 = (~(Itcov6 & Ft0nz6[0])); +assign Vwcov6 = (~(Spc7v6 & Lycov6)); +assign Lycov6 = (Sycov6 ^ Qqrnv6); +assign Gvk8v6 = (~(Zycov6 & Gzcov6)); +assign Gzcov6 = (~(Spc7v6 & Nzcov6)); +assign Nzcov6 = (~(Ducov6 ^ Imrnv6)); +assign Ducov6 = (~(Sycov6 | Qqrnv6)); +assign Sycov6 = (Fvcov6 | Durnv6); +assign Fvcov6 = (Gsrnv6 | Uzcov6); +assign Zycov6 = (Ft0nz6[3] ? Uscov6 : Owcov6); +assign Uscov6 = (Xxcov6 & B0dov6); +assign B0dov6 = (Awcov6 | I0dov6); +assign Owcov6 = (~(Itcov6 & I0dov6)); +assign Itcov6 = (!Awcov6); +assign Zuk8v6 = (~(P0dov6 & W0dov6)); +assign W0dov6 = (~(D1dov6 & Spc7v6)); +assign D1dov6 = (~(Errnv6 ^ Uzcov6)); +assign P0dov6 = (K1dov6 ? Awcov6 : Xxcov6); +assign Awcov6 = (~(R1dov6 & Qjrnv6)); +assign Qjrnv6 = (~(Y1dov6 & I0dov6)); +assign I0dov6 = (F2dov6 & K1dov6); +assign F2dov6 = (~(Ft0nz6[1] | Ft0nz6[2])); +assign Y1dov6 = (~(Ft0nz6[3] | Ft0nz6[4])); +assign R1dov6 = (~(M2dov6 | Spc7v6)); +assign Xxcov6 = (!M2dov6); +assign M2dov6 = (~(T2dov6 | Spc7v6)); +assign T2dov6 = (~(A3dov6 | H3dov6)); +assign Suk8v6 = (V3dov6 ? H71nz6[1] : O3dov6); +assign O3dov6 = (Tvd7v6 | C4dov6); +assign Luk8v6 = (V3dov6 ? H71nz6[8] : J4dov6); +assign J4dov6 = (Bmd7v6 | C4dov6); +assign Euk8v6 = (V3dov6 ? H71nz6[7] : Q4dov6); +assign Q4dov6 = (Lnd7v6 | C4dov6); +assign Xtk8v6 = (V3dov6 ? H71nz6[6] : X4dov6); +assign X4dov6 = (Vod7v6 | C4dov6); +assign Qtk8v6 = (V3dov6 ? H71nz6[5] : E5dov6); +assign E5dov6 = (Fqd7v6 | C4dov6); +assign Jtk8v6 = (V3dov6 ? H71nz6[4] : L5dov6); +assign L5dov6 = (Prd7v6 | C4dov6); +assign Ctk8v6 = (V3dov6 ? H71nz6[3] : S5dov6); +assign S5dov6 = (Zsd7v6 | C4dov6); +assign Vsk8v6 = (V3dov6 ? H71nz6[2] : Z5dov6); +assign Z5dov6 = (Jud7v6 | C4dov6); +assign Osk8v6 = (V3dov6 ? H71nz6[0] : G6dov6); +assign V3dov6 = (~(N6dov6 | U6dov6)); +assign U6dov6 = (Sr5ov6 & Jrqnv6); +assign G6dov6 = (Dxd7v6 | C4dov6); +assign Hsk8v6 = (I7dov6 ? B7dov6 : Uh77v6); +assign B7dov6 = (P7dov6 & W7dov6); +assign W7dov6 = (D8dov6 & K8dov6); +assign K8dov6 = (R8dov6 & Y8dov6); +assign Y8dov6 = (~(F9dov6 | Ruymz6[7])); +assign F9dov6 = (Ruymz6[8] | Ruymz6[9]); +assign R8dov6 = (~(Ruymz6[5] | Ruymz6[6])); +assign D8dov6 = (M9dov6 & T9dov6); +assign T9dov6 = (~(Ruymz6[3] | Ruymz6[4])); +assign M9dov6 = (~(Ruymz6[1] | Ruymz6[2])); +assign P7dov6 = (Aadov6 & Hadov6); +assign Hadov6 = (Oadov6 & Vadov6); +assign Vadov6 = (~(Ruymz6[14] | Ruymz6[15])); +assign Oadov6 = (~(Ruymz6[12] | Ruymz6[13])); +assign Aadov6 = (Cbdov6 & Jbdov6); +assign Jbdov6 = (~(Ruymz6[10] | Ruymz6[11])); +assign Cbdov6 = (Ruymz6[0] & Y9rnv6); +assign Ask8v6 = (~(Qbdov6 & Xbdov6)); +assign Xbdov6 = (Ecdov6 & Lcdov6); +assign Lcdov6 = (Scdov6 & Zcdov6); +assign Zcdov6 = (Gddov6 & Nddov6); +assign Nddov6 = (Uddov6 & Bedov6); +assign Bedov6 = (Iedov6 & Pedov6); +assign Pedov6 = (~(Hvw7v6 & Wedov6)); +assign Iedov6 = (Dfdov6 & Kfdov6); +assign Kfdov6 = (~(Rtw7v6 & Rfdov6)); +assign Dfdov6 = (~(Avw7v6 & Yfdov6)); +assign Uddov6 = (Fgdov6 & Mgdov6); +assign Mgdov6 = (~(Vvw7v6 & Tgdov6)); +assign Fgdov6 = (~(Jww7v6 & Ahdov6)); +assign Gddov6 = (Hhdov6 & Ohdov6); +assign Ohdov6 = (Vhdov6 & Cidov6); +assign Cidov6 = (~(Zxw7v6 & Jidov6)); +assign Vhdov6 = (Qidov6 & Xidov6); +assign Xidov6 = (~(Xww7v6 & Ejdov6)); +assign Qidov6 = (~(Lxw7v6 & Ljdov6)); +assign Hhdov6 = (Sjdov6 & Zjdov6); +assign Zjdov6 = (~(Nyw7v6 & Gkdov6)); +assign Sjdov6 = (~(Bzw7v6 & Nkdov6)); +assign Scdov6 = (Ukdov6 & Bldov6); +assign Bldov6 = (Ildov6 & Pldov6); +assign Pldov6 = (Wldov6 & Dmdov6); +assign Dmdov6 = (~(R0x7v6 & Kmdov6)); +assign Wldov6 = (Rmdov6 & Ymdov6); +assign Ymdov6 = (~(Pzw7v6 & Fndov6)); +assign Rmdov6 = (~(D0x7v6 & Mndov6)); +assign Ildov6 = (Tndov6 & Aodov6); +assign Aodov6 = (~(F1x7v6 & Hodov6)); +assign Tndov6 = (~(T1x7v6 & Oodov6)); +assign Ukdov6 = (Vodov6 & Cpdov6); +assign Cpdov6 = (Jpdov6 & Qpdov6); +assign Qpdov6 = (~(H2x7v6 & Xpdov6)); +assign Jpdov6 = (~(V2x7v6 & Eqdov6)); +assign Vodov6 = (Lqdov6 & Sqdov6); +assign Sqdov6 = (~(J3x7v6 & Zqdov6)); +assign Lqdov6 = (~(X3x7v6 & Grdov6)); +assign Ecdov6 = (Nrdov6 & Urdov6); +assign Urdov6 = (Bsdov6 & Isdov6); +assign Isdov6 = (Psdov6 & Wsdov6); +assign Wsdov6 = (Dtdov6 & Ktdov6); +assign Ktdov6 = (~(N5x7v6 & Rtdov6)); +assign Dtdov6 = (Ytdov6 & Fudov6); +assign Fudov6 = (~(L4x7v6 & Mudov6)); +assign Ytdov6 = (~(Z4x7v6 & Tudov6)); +assign Psdov6 = (Avdov6 & Hvdov6); +assign Hvdov6 = (~(B6x7v6 & Ovdov6)); +assign Avdov6 = (~(P6x7v6 & Vvdov6)); +assign Bsdov6 = (Cwdov6 & Jwdov6); +assign Jwdov6 = (Qwdov6 & Xwdov6); +assign Xwdov6 = (~(D7x7v6 & Exdov6)); +assign Qwdov6 = (~(R7x7v6 & Lxdov6)); +assign Cwdov6 = (Sxdov6 & Zxdov6); +assign Zxdov6 = (~(F8x7v6 & Gydov6)); +assign Sxdov6 = (~(T8x7v6 & Nydov6)); +assign Nrdov6 = (Uydov6 & Bzdov6); +assign Bzdov6 = (Izdov6 & Pzdov6); +assign Pzdov6 = (Wzdov6 & D0eov6); +assign D0eov6 = (~(Jax7v6 & K0eov6)); +assign Wzdov6 = (R0eov6 & Y0eov6); +assign Y0eov6 = (~(H9x7v6 & F1eov6)); +assign R0eov6 = (~(V9x7v6 & M1eov6)); +assign Izdov6 = (T1eov6 & A2eov6); +assign A2eov6 = (~(Xax7v6 & H2eov6)); +assign T1eov6 = (~(Lbx7v6 & O2eov6)); +assign Uydov6 = (V2eov6 & C3eov6); +assign C3eov6 = (J3eov6 & Q3eov6); +assign Q3eov6 = (~(Zbx7v6 & X3eov6)); +assign J3eov6 = (~(Ncx7v6 & E4eov6)); +assign V2eov6 = (L4eov6 & S4eov6); +assign S4eov6 = (Z4eov6 | Zfcet6); +assign L4eov6 = (~(Pdx7v6 & G5eov6)); +assign Qbdov6 = (N5eov6 & U5eov6); +assign U5eov6 = (B6eov6 & I6eov6); +assign I6eov6 = (P6eov6 & W6eov6); +assign W6eov6 = (D7eov6 & K7eov6); +assign K7eov6 = (R7eov6 & Y7eov6); +assign Y7eov6 = (~(Nr38v6 & F8eov6)); +assign R7eov6 = (M8eov6 & T8eov6); +assign T8eov6 = (~(Lq38v6 & A9eov6)); +assign M8eov6 = (~(Zq38v6 & H9eov6)); +assign D7eov6 = (O9eov6 & V9eov6); +assign V9eov6 = (~(Bs38v6 & Caeov6)); +assign O9eov6 = (~(Ps38v6 & Jaeov6)); +assign P6eov6 = (Qaeov6 & Xaeov6); +assign Xaeov6 = (Ebeov6 & Lbeov6); +assign Lbeov6 = (~(Dt38v6 & Sbeov6)); +assign Ebeov6 = (~(Rt38v6 & Zbeov6)); +assign Qaeov6 = (Gceov6 & Nceov6); +assign Nceov6 = (~(Fu38v6 & Uceov6)); +assign Gceov6 = (~(Tu38v6 & Bdeov6)); +assign B6eov6 = (Ideov6 & Pdeov6); +assign Pdeov6 = (Wdeov6 & Deeov6); +assign Deeov6 = (Keeov6 & Reeov6); +assign Reeov6 = (~(Jw38v6 & Yeeov6)); +assign Keeov6 = (Ffeov6 & Mfeov6); +assign Mfeov6 = (~(Hv38v6 & Tfeov6)); +assign Ffeov6 = (~(Vv38v6 & Ageov6)); +assign Wdeov6 = (Hgeov6 & Ogeov6); +assign Ogeov6 = (~(Xw38v6 & Vgeov6)); +assign Hgeov6 = (~(Lx38v6 & Cheov6)); +assign Ideov6 = (Jheov6 & Qheov6); +assign Qheov6 = (Xheov6 & Eieov6); +assign Eieov6 = (~(Zx38v6 & Lieov6)); +assign Xheov6 = (~(Ny38v6 & Sieov6)); +assign Jheov6 = (Zieov6 & Gjeov6); +assign Gjeov6 = (~(Bz38v6 & Njeov6)); +assign Zieov6 = (~(Pz38v6 & Ujeov6)); +assign N5eov6 = (Bkeov6 & Ikeov6); +assign Ikeov6 = (Pkeov6 & Wkeov6); +assign Wkeov6 = (Dleov6 & Kleov6); +assign Kleov6 = (Rleov6 & Yleov6); +assign Yleov6 = (~(F148v6 & Fmeov6)); +assign Rleov6 = (Mmeov6 & Tmeov6); +assign Tmeov6 = (~(D048v6 & Aneov6)); +assign Mmeov6 = (~(R048v6 & Hneov6)); +assign Dleov6 = (Oneov6 & Vneov6); +assign Vneov6 = (~(T148v6 & Coeov6)); +assign Oneov6 = (~(H248v6 & Joeov6)); +assign Pkeov6 = (Qoeov6 & Xoeov6); +assign Xoeov6 = (Epeov6 & Lpeov6); +assign Lpeov6 = (~(V248v6 & Speov6)); +assign Epeov6 = (~(J348v6 & Zpeov6)); +assign Qoeov6 = (Gqeov6 & Nqeov6); +assign Nqeov6 = (~(X348v6 & Uqeov6)); +assign Gqeov6 = (~(L448v6 & Breov6)); +assign Bkeov6 = (Ireov6 & Preov6); +assign Preov6 = (Wreov6 & Dseov6); +assign Dseov6 = (Kseov6 & Rseov6); +assign Rseov6 = (~(Qfk8v6 & Yseov6)); +assign Kseov6 = (Fteov6 & Mteov6); +assign Mteov6 = (~(Z448v6 & Tteov6)); +assign Fteov6 = (~(Vek8v6 & Aueov6)); +assign Wreov6 = (Hueov6 & Oueov6); +assign Oueov6 = (~(Xfk8v6 & Vueov6)); +assign Hueov6 = (~(Sgk8v6 & Cveov6)); +assign Ireov6 = (Jveov6 & Qveov6); +assign Qveov6 = (Xveov6 & Eweov6); +assign Eweov6 = (~(Nhk8v6 & Lweov6)); +assign Xveov6 = (~(Djk8v6 & Sweov6)); +assign Jveov6 = (Zweov6 & Gxeov6); +assign Gxeov6 = (~(Yjk8v6 & Nxeov6)); +assign Zweov6 = (~(Yqk8v6 & Uxeov6)); +assign Trk8v6 = (~(Byeov6 & Iyeov6)); +assign Iyeov6 = (Pyeov6 | Wyeov6); +assign Mrk8v6 = (Dzeov6 & Kzeov6); +assign Kzeov6 = (Wyeov6 ? Yzeov6 : Rzeov6); +assign Yzeov6 = (D2fet6 & F0fov6); +assign F0fov6 = (Tnzdt6 | SLEEPHOLDREQn); +assign Rzeov6 = (M0fov6 & T0fov6); +assign Frk8v6 = (~(A1fov6 & H1fov6)); +assign H1fov6 = (~(INTISR[63] & O1fov6)); +assign A1fov6 = (~(U697z6 & V1fov6)); +assign Yqk8v6 = (~(C2fov6 & J2fov6)); +assign J2fov6 = (~(Q2fov6 & X2fov6)); +assign X2fov6 = (~(Jqj7z6[1] & X3get6)); +assign Q2fov6 = (Qmj7z6[1] & Uxeov6); +assign C2fov6 = (~(V5get6 & E3fov6)); +assign E3fov6 = (~(L3fov6 & Cn2nv6)); +assign Rqk8v6 = (Cn2nv6 ? L3fov6 : S3fov6); +assign S3fov6 = (~(Z3fov6 & G4fov6)); +assign G4fov6 = (~(N4fov6 & U4fov6)); +assign Kqk8v6 = (Zs4ov6 ? Xz7et6 : B5fov6); +assign B5fov6 = (~(Dtadt6 & I5fov6)); +assign Dqk8v6 = (W5fov6 ? Pjb7z6[19] : P5fov6); +assign Ppk8v6 = (~(Wfo7v6 & D6fov6)); +assign D6fov6 = (~(K6fov6 & Ke2ft6)); +assign Ipk8v6 = (~(R6fov6 & Y6fov6)); +assign Y6fov6 = (~(F7fov6 & Em5ft6)); +assign F7fov6 = (M7fov6 & Wdtnv6); +assign M7fov6 = (Hk5ft6 | V1gnv6); +assign R6fov6 = (~(K6fov6 & Hk5ft6)); +assign Bpk8v6 = (~(T7fov6 & A8fov6)); +assign A8fov6 = (~(Bxi7z6[2] & H8fov6)); +assign H8fov6 = (~(O8fov6 & I52nv6)); +assign T7fov6 = (~(V8fov6 & C9fov6)); +assign V8fov6 = (~(J9fov6 & Q9fov6)); +assign Q9fov6 = (~(X9fov6 | Eafov6)); +assign J9fov6 = (~(L99ov6 | Lafov6)); +assign Uok8v6 = (Pb9ov6 ? D6c7z6[2] : Safov6); +assign Safov6 = (~(Zafov6 & Gbfov6)); +assign Gbfov6 = (Nbfov6 & Ubfov6); +assign Ubfov6 = (~(Yc9ov6 & Bcfov6)); +assign Nbfov6 = (~(Md9ov6 & Icfov6)); +assign Zafov6 = (Pcfov6 & Wcfov6); +assign Wcfov6 = (~(Oe9ov6 & Ddfov6)); +assign Pcfov6 = (~(Cf9ov6 & Kdfov6)); +assign Nok8v6 = (~(Rdfov6 & Ydfov6)); +assign Ydfov6 = (~(E3c7z6[0] & Cf2ov6)); +assign Rdfov6 = (Fefov6 & Mefov6); +assign Mefov6 = (C12ov6 | Tefov6); +assign Fefov6 = (~(Td2ov6 & B2bov6)); +assign Gok8v6 = (Hffov6 ? Inadt6 : Affov6); +assign Hffov6 = (Offov6 & Vffov6); +assign Vffov6 = (~(Cgfov6 & Jgfov6)); +assign Jgfov6 = (~(Qgfov6 & Xgfov6)); +assign Qgfov6 = (Ehfov6 & Lhfov6); +assign Ehfov6 = (~(Shfov6 & Zhfov6)); +assign Zhfov6 = (~(Gifov6 & Nifov6)); +assign Nifov6 = (~(I9e7z6[1] & Uifov6)); +assign Uifov6 = (~(I9e7z6[0] & Xsinv6)); +assign Gifov6 = (~(Ibe7z6[3] & Bjfov6)); +assign Bjfov6 = (~(E3c7z6[0] & Xsinv6)); +assign Affov6 = (Ijfov6 & Offov6); +assign Ijfov6 = (~(Pjfov6 & Wjfov6)); +assign Wjfov6 = (Dkfov6 & Kkfov6); +assign Dkfov6 = (~(Rkfov6 & Ykfov6)); +assign Pjfov6 = (Flfov6 & Xgfov6); +assign Xgfov6 = (~(Ieadt6 & Mlfov6)); +assign Znk8v6 = (~(Tlfov6 & Amfov6)); +assign Amfov6 = (~(Hmfov6 & Omfov6)); +assign Omfov6 = (Vmfov6 & Cnfov6); +assign Cnfov6 = (Jnfov6 | Qnfov6); +assign Vmfov6 = (Xnfov6 & SLEEPHOLDACKn); +assign Hmfov6 = (Eofov6 & Lofov6); +assign Lofov6 = (F02nv6 | Cwadt6); +assign Tlfov6 = (~(Sofov6 & Zofov6)); +assign Sofov6 = (Nneet6 & Ldo7v6); +assign Snk8v6 = (~(Gpfov6 & Npfov6)); +assign Npfov6 = (~(Upfov6 & Ohe7z6[2])); +assign Lnk8v6 = (~(Bqfov6 & Iqfov6)); +assign Iqfov6 = (~(Gnaov6 & Tcinv6)); +assign Tcinv6 = (~(Pqfov6 & Qg2nv6)); +assign Pqfov6 = (Hdinv6 | Wqfov6); +assign Hdinv6 = (~(Drfov6 & Krfov6)); +assign Krfov6 = (Rrfov6 | Yrfov6); +assign Rrfov6 = (Fsfov6 & Msfov6); +assign Msfov6 = (!Cmbdt6); +assign Bqfov6 = (~(Iufdt6 & Vs9ov6)); +assign Enk8v6 = (~(Tsfov6 & Atfov6)); +assign Atfov6 = (~(Htfov6 & Qu1ov6)); +assign Tsfov6 = (Otfov6 & Vtfov6); +assign Vtfov6 = (~(Cufov6 & Jufov6)); +assign Cufov6 = (Uf4ov6 & Qufov6); +assign Qufov6 = (~(Px1ov6 & Xufov6)); +assign Xufov6 = (!Fhc7z6[27]); +assign Uf4ov6 = (!Wg4ov6); +assign Otfov6 = (~(Lsfdt6 & Evfov6)); +assign Evfov6 = (~(Ig4ov6 & Lvfov6)); +assign Lvfov6 = (Wg4ov6 | Jufov6); +assign Ig4ov6 = (!Hz9ov6); +assign Hz9ov6 = (Svfov6 & Wg4ov6); +assign Wg4ov6 = (~(Zvfov6 & Gwfov6)); +assign Gwfov6 = (~(Nwfov6 & Uwfov6)); +assign Uwfov6 = (~(Iufdt6 & Knbdt6)); +assign Nwfov6 = (~(Yrfov6 | Lwfdt6)); +assign Zvfov6 = (Bg4ov6 | Jufov6); +assign Jufov6 = (Bxfov6 & Ixfov6); +assign Bxfov6 = (Pxfov6 & Wxfov6); +assign Wxfov6 = (~(Dyfov6 & Q0aov6)); +assign Q0aov6 = (~(Px1ov6 & I0c7z6[1])); +assign Dyfov6 = (Kyfov6 & Ryfov6); +assign Kyfov6 = (~(Yyfov6 & Fzfov6)); +assign Yyfov6 = (Mzfov6 & V5bov6); +assign Bg4ov6 = (Mpbov6 | Tzfov6); +assign Tzfov6 = (A0gov6 & Dte7z6[18]); +assign A0gov6 = (Ixfov6 & Pxfov6); +assign Mpbov6 = (H0gov6 & Ixfov6); +assign H0gov6 = (Pxfov6 & O0gov6); +assign O0gov6 = (V0gov6 | Dte7z6[19]); +assign V0gov6 = (Px1ov6 & I0c7z6[1]); +assign Px1ov6 = (C1gov6 & J1gov6); +assign Xmk8v6 = (~(Q1gov6 & X1gov6)); +assign X1gov6 = (E2gov6 & L2gov6); +assign L2gov6 = (~(Td2ov6 & S2gov6)); +assign E2gov6 = (Z2gov6 & G3gov6); +assign G3gov6 = (C12ov6 | Esjnv6); +assign Esjnv6 = (N3gov6 & U3gov6); +assign U3gov6 = (B4gov6 & I4gov6); +assign I4gov6 = (P4gov6 & W4gov6); +assign W4gov6 = (D5gov6 & K5gov6); +assign K5gov6 = (~(vis_psp_o[27] & N32ov6)); +assign D5gov6 = (~(U32ov6 & Pic7z6[27])); +assign P4gov6 = (R5gov6 & Y5gov6); +assign Y5gov6 = (~(vis_msp_o[27] & P42ov6)); +assign R5gov6 = (~(vis_r12_o[27] & W42ov6)); +assign B4gov6 = (F6gov6 & M6gov6); +assign M6gov6 = (T6gov6 & A7gov6); +assign A7gov6 = (~(vis_r11_o[27] & F62ov6)); +assign T6gov6 = (~(vis_r10_o[27] & M62ov6)); +assign F6gov6 = (H7gov6 & O7gov6); +assign O7gov6 = (~(vis_r9_o[27] & H72ov6)); +assign H7gov6 = (~(vis_r8_o[27] & O72ov6)); +assign N3gov6 = (V7gov6 & C8gov6); +assign C8gov6 = (J8gov6 & Q8gov6); +assign Q8gov6 = (X8gov6 & E9gov6); +assign E9gov6 = (~(vis_r7_o[27] & L92ov6)); +assign X8gov6 = (~(vis_r6_o[27] & S92ov6)); +assign J8gov6 = (L9gov6 & S9gov6); +assign S9gov6 = (~(vis_r5_o[27] & Na2ov6)); +assign L9gov6 = (~(vis_r4_o[27] & Ua2ov6)); +assign V7gov6 = (Z9gov6 & Gagov6); +assign Gagov6 = (Nagov6 & Uagov6); +assign Uagov6 = (~(vis_r3_o[27] & Dc2ov6)); +assign Nagov6 = (~(vis_r2_o[27] & Kc2ov6)); +assign Z9gov6 = (Bbgov6 & Ibgov6); +assign Ibgov6 = (~(vis_r1_o[27] & Fd2ov6)); +assign Bbgov6 = (~(vis_r0_o[27] & Md2ov6)); +assign Z2gov6 = (~(H02ov6 & Sv97z6)); +assign Q1gov6 = (Pbgov6 & Wbgov6); +assign Wbgov6 = (~(Ve2ov6 & vis_pc_o[27])); +assign Pbgov6 = (~(Fhc7z6[27] & Cf2ov6)); +assign Qmk8v6 = (~(Dcgov6 & Kcgov6)); +assign Kcgov6 = (Rcgov6 & Ycgov6); +assign Ycgov6 = (~(H02ov6 & Mu97z6)); +assign Rcgov6 = (Fdgov6 & Mdgov6); +assign Mdgov6 = (C12ov6 | H4knv6); +assign H4knv6 = (Tdgov6 & Aegov6); +assign Aegov6 = (Hegov6 & Oegov6); +assign Oegov6 = (Vegov6 & Cfgov6); +assign Cfgov6 = (Jfgov6 & Qfgov6); +assign Qfgov6 = (~(Pic7z6[1] & U32ov6)); +assign Jfgov6 = (~(vis_r12_o[1] & W42ov6)); +assign Vegov6 = (Xfgov6 & Eggov6); +assign Eggov6 = (~(vis_r11_o[1] & F62ov6)); +assign Xfgov6 = (~(vis_r10_o[1] & M62ov6)); +assign Hegov6 = (Lggov6 & Sggov6); +assign Sggov6 = (~(vis_r7_o[1] & L92ov6)); +assign Lggov6 = (Zggov6 & Ghgov6); +assign Ghgov6 = (~(vis_r9_o[1] & H72ov6)); +assign Zggov6 = (~(vis_r8_o[1] & O72ov6)); +assign Tdgov6 = (Nhgov6 & Uhgov6); +assign Uhgov6 = (Bigov6 & Iigov6); +assign Iigov6 = (Pigov6 & Wigov6); +assign Wigov6 = (~(vis_r6_o[1] & S92ov6)); +assign Pigov6 = (~(vis_r5_o[1] & Na2ov6)); +assign Bigov6 = (Djgov6 & Kjgov6); +assign Kjgov6 = (~(vis_r4_o[1] & Ua2ov6)); +assign Djgov6 = (~(vis_r3_o[1] & Dc2ov6)); +assign Nhgov6 = (Rjgov6 & Yjgov6); +assign Yjgov6 = (~(vis_r0_o[1] & Md2ov6)); +assign Rjgov6 = (Fkgov6 & Mkgov6); +assign Mkgov6 = (~(vis_r2_o[1] & Kc2ov6)); +assign Fkgov6 = (~(vis_r1_o[1] & Fd2ov6)); +assign Fdgov6 = (~(Td2ov6 & Nv9ov6)); +assign Dcgov6 = (Tkgov6 & Algov6); +assign Algov6 = (~(Ve2ov6 & vis_pc_o[1])); +assign Tkgov6 = (~(E3c7z6[1] & Cf2ov6)); +assign Jmk8v6 = (~(Hlgov6 & Olgov6)); +assign Olgov6 = (~(Vlgov6 & Ppb7z6[7])); +assign Hlgov6 = (Cmgov6 & Jmgov6); +assign Jmgov6 = (Qmgov6 | Zmaov6); +assign Cmgov6 = (~(Xmgov6 & Fhc7z6[7])); +assign Cmk8v6 = (~(Engov6 & Lngov6)); +assign Lngov6 = (~(Vlgov6 & Ppb7z6[5])); +assign Engov6 = (Sngov6 & Zngov6); +assign Zngov6 = (Qmgov6 | Ivaov6); +assign Sngov6 = (~(Xmgov6 & Fhc7z6[5])); +assign Vlk8v6 = (~(Gogov6 & Nogov6)); +assign Nogov6 = (~(Vlgov6 & Ppb7z6[6])); +assign Gogov6 = (Uogov6 & Bpgov6); +assign Bpgov6 = (Qmgov6 | Fqaov6); +assign Qmgov6 = (Ipgov6 | Vlgov6); +assign Uogov6 = (~(Xmgov6 & Fhc7z6[6])); +assign Xmgov6 = (Ipgov6 & Ppgov6); +assign Ppgov6 = (!Vlgov6); +assign Vlgov6 = (Wpgov6 & Dqgov6); +assign Wpgov6 = (~(Kqgov6 & Rqgov6)); +assign Rqgov6 = (Yqgov6 | Ibe7z6[1]); +assign Yqgov6 = (Ibe7z6[2] & Frgov6); +assign Olk8v6 = (Trgov6 ? Mrgov6 : Moj7z6[2]); +assign Hlk8v6 = (Trgov6 ? Asgov6 : Moj7z6[1]); +assign Alk8v6 = (S93nv6 ? P2j7z6[6] : Hsgov6); +assign Tkk8v6 = (S93nv6 ? P2j7z6[5] : Osgov6); +assign Mkk8v6 = (Vsgov6 & Ctgov6); +assign Ctgov6 = (~(Jtgov6 & Qtgov6)); +assign Qtgov6 = (~(Xtgov6 & X7get6)); +assign Xtgov6 = (Eugov6 & Lugov6); +assign Jtgov6 = (~(Ib3nv6 & Sugov6)); +assign Fkk8v6 = (Fjadt6 ? Gvgov6 : Zugov6); +assign Gvgov6 = (~(Z3fov6 & Nvgov6)); +assign Nvgov6 = (~(Uvgov6 & U4fov6)); +assign Zugov6 = (~(Bwgov6 & Iwgov6)); +assign Iwgov6 = (~(Pwgov6 & X7get6)); +assign Pwgov6 = (~(Wwgov6 | Dxgov6)); +assign Bwgov6 = (Kxgov6 | Rxgov6); +assign Yjk8v6 = (~(Yxgov6 & Fygov6)); +assign Fygov6 = (~(Mygov6 & Fjadt6)); +assign Mygov6 = (S3a7z6 & Tygov6); +assign Tygov6 = (!Jqj7z6[0]); +assign Yxgov6 = (Hdcet6 ? Hzgov6 : Azgov6); +assign Hzgov6 = (Ozgov6 & Vzgov6); +assign Ozgov6 = (~(Rxgov6 | Fjadt6)); +assign Azgov6 = (C0hov6 & J0hov6); +assign J0hov6 = (~(Q0hov6 & X0hov6)); +assign C0hov6 = (~(S3a7z6 & Ev2nv6)); +assign Rjk8v6 = (S93nv6 ? P2j7z6[0] : E1hov6); +assign Kjk8v6 = (~(L1hov6 & S1hov6)); +assign S1hov6 = (~(G5j7z6[63] & Z1hov6)); +assign Z1hov6 = (~(G2hov6 & N2hov6)); +assign Djk8v6 = (!U2hov6); +assign U2hov6 = (M6j7z6[63] ? I3hov6 : B3hov6); +assign I3hov6 = (~(L1hov6 & P3hov6)); +assign P3hov6 = (~(W3hov6 & X0hov6)); +assign L1hov6 = (~(D4hov6 & K4hov6)); +assign D4hov6 = (R4hov6 & Y4hov6); +assign B3hov6 = (F5hov6 & M5hov6); +assign M5hov6 = (~(T5hov6 & X0hov6)); +assign F5hov6 = (~(Qkj7z6[63] | A6hov6)); +assign A6hov6 = (H6hov6 & Tib7z6[63]); +assign H6hov6 = (~(Jqj7z6[72] & G5j7z6[63])); +assign Wik8v6 = (Trgov6 ? O6hov6 : Moj7z6[0]); +assign Trgov6 = (~(S93nv6 & V6hov6)); +assign O6hov6 = (!C7hov6); +assign Pik8v6 = (J7hov6 & Q7hov6); +assign J7hov6 = (X7hov6 & E8hov6); +assign E8hov6 = (~(Tnzdt6 & L8hov6)); +assign X7hov6 = (~(Vzvnv6 & S8hov6)); +assign S8hov6 = (~(Vzbet6 & Z8hov6)); +assign Z8hov6 = (~(L8hov6 & G9hov6)); +assign G9hov6 = (~(N3onv6 & Ga3nv6)); +assign L8hov6 = (~(N9hov6 & U9hov6)); +assign U9hov6 = (Bahov6 & Iahov6); +assign Bahov6 = (~(Pahov6 & Wahov6)); +assign Wahov6 = (Dbhov6 | Kbhov6); +assign N9hov6 = (Tnzdt6 & Rbhov6); +assign Rbhov6 = (~(Kbhov6 & Dbhov6)); +assign Dbhov6 = (!Ybhov6); +assign Kbhov6 = (Fchov6 & Mchov6); +assign Mchov6 = (~(Tchov6 & Adhov6)); +assign Fchov6 = (~(Hdhov6 & Odhov6)); +assign Odhov6 = (Vdhov6 & Cehov6); +assign Vdhov6 = (~(Jehov6 & Qehov6)); +assign Hdhov6 = (Moj7z6[0] & Rwl8v6); +assign Iik8v6 = (Efhov6 ? Xehov6 : Oac7z6[1]); +assign Bik8v6 = (Lfhov6 | Sfhov6); +assign Sfhov6 = (Zfhov6 & Qu1ov6); +assign Lfhov6 = (Ughov6 ? Nghov6 : Gghov6); +assign Ughov6 = (Bhhov6 & Ihhov6); +assign Ihhov6 = (~(Phhov6 & Whhov6)); +assign Bhhov6 = (Dihov6 & Kihov6); +assign Dihov6 = (Rihov6 | Sb77z6); +assign Nghov6 = (Svfov6 & Lybdt6); +assign Uhk8v6 = (~(Yihov6 | Fjhov6)); +assign Yihov6 = (~(Mjhov6 & Tjhov6)); +assign Nhk8v6 = (~(Akhov6 & Hkhov6)); +assign Hkhov6 = (~(Okhov6 & Qmj7z6[4])); +assign Okhov6 = (Vkhov6 & Lweov6); +assign Vkhov6 = (~(Jqj7z6[4] & Z3j7z6[3])); +assign Akhov6 = (Qlhov6 ? Jlhov6 : Clhov6); +assign Jlhov6 = (~(Xlhov6 & Emhov6)); +assign Xlhov6 = (Lmhov6 | Lweov6); +assign Lweov6 = (!Z3j7z6[12]); +assign Clhov6 = (~(Z3j7z6[12] & Lmhov6)); +assign Ghk8v6 = (~(Smhov6 & Lmhov6)); +assign Lmhov6 = (~(Zmhov6 & Gnhov6)); +assign Zmhov6 = (~(Kxgov6 | Z3j7z6[3])); +assign Smhov6 = (Z3j7z6[3] ? Unhov6 : Nnhov6); +assign Unhov6 = (~(Bohov6 & Iohov6)); +assign Iohov6 = (~(Pohov6 & Wohov6)); +assign Bohov6 = (Dphov6 & U4fov6); +assign Dphov6 = (~(Kphov6 & Rphov6)); +assign Nnhov6 = (~(Wohov6 & P52nv6)); +assign Zgk8v6 = (~(Yphov6 & Fqhov6)); +assign Yphov6 = (Z3j7z6[0] ? Tqhov6 : Mqhov6); +assign Tqhov6 = (~(Arhov6 & Hrhov6)); +assign Hrhov6 = (~(Orhov6 & Wohov6)); +assign Arhov6 = (Vrhov6 & U4fov6); +assign Vrhov6 = (~(Kphov6 & Cshov6)); +assign Mqhov6 = (~(Wohov6 & U42nv6)); +assign Sgk8v6 = (~(Jshov6 & Qshov6)); +assign Qshov6 = (~(Xshov6 & Pnfet6)); +assign Xshov6 = (Ethov6 & Cveov6); +assign Ethov6 = (~(Jqj7z6[2] & Z3j7z6[0])); +assign Jshov6 = (Qlhov6 ? Sthov6 : Lthov6); +assign Sthov6 = (~(Zthov6 & Guhov6)); +assign Zthov6 = (Fqhov6 | Cveov6); +assign Cveov6 = (!Z3j7z6[13]); +assign Lthov6 = (~(Z3j7z6[13] & Fqhov6)); +assign Fqhov6 = (~(Nuhov6 & Uuhov6)); +assign Nuhov6 = (Vzgov6 & Bvhov6); +assign Lgk8v6 = (S93nv6 ? P2j7z6[1] : Ivhov6); +assign Egk8v6 = (~(Pvhov6 & Wvhov6)); +assign Wvhov6 = (~(G5j7z6[62] & Dwhov6)); +assign Dwhov6 = (Kwhov6 | Rwhov6); +assign Xfk8v6 = (!Ywhov6); +assign Ywhov6 = (Oecet6 ? Mxhov6 : Fxhov6); +assign Mxhov6 = (~(Txhov6 & Ayhov6)); +assign Txhov6 = (~(Hyhov6 & Oyhov6)); +assign Fxhov6 = (~(Vyhov6 & Zrbet6)); +assign Vyhov6 = (~(Jqj7z6[6] & Z3j7z6[8])); +assign Qfk8v6 = (~(Czhov6 & Jzhov6)); +assign Jzhov6 = (~(Qzhov6 & Qmj7z6[5])); +assign Qzhov6 = (Xzhov6 & Yseov6); +assign Xzhov6 = (~(Jqj7z6[5] & Z3j7z6[7])); +assign Czhov6 = (Qlhov6 ? L0iov6 : E0iov6); +assign L0iov6 = (~(S0iov6 & Z0iov6)); +assign S0iov6 = (G1iov6 | Yseov6); +assign E0iov6 = (~(Z3j7z6[15] & G1iov6)); +assign Jfk8v6 = (!N1iov6); +assign N1iov6 = (Na3nv6 ? B2iov6 : U1iov6); +assign Cfk8v6 = (~(I2iov6 & P2iov6)); +assign P2iov6 = (~(G5j7z6[47] & W2iov6)); +assign W2iov6 = (~(D3iov6 & N2hov6)); +assign Vek8v6 = (!K3iov6); +assign K3iov6 = (M6j7z6[47] ? Y3iov6 : R3iov6); +assign Y3iov6 = (~(I2iov6 & F4iov6)); +assign F4iov6 = (~(M4iov6 & Z0iov6)); +assign I2iov6 = (~(T4iov6 & K4hov6)); +assign T4iov6 = (A5iov6 & H5iov6); +assign R3iov6 = (O5iov6 & V5iov6); +assign V5iov6 = (~(C6iov6 & Z0iov6)); +assign O5iov6 = (~(Qkj7z6[47] | J6iov6)); +assign J6iov6 = (Q6iov6 & Tib7z6[47]); +assign Q6iov6 = (~(Jqj7z6[56] & G5j7z6[47])); +assign Oek8v6 = (!X6iov6); +assign X6iov6 = (Na3nv6 ? L7iov6 : E7iov6); +assign Hek8v6 = (!S7iov6); +assign S7iov6 = (Na3nv6 ? G8iov6 : Z7iov6); +assign Na3nv6 = (!S93nv6); +assign S93nv6 = (~(N8iov6 & U8iov6)); +assign U8iov6 = (~(B9iov6 & I9iov6)); +assign I9iov6 = (P9iov6 & Nxeov6); +assign P9iov6 = (~(V5get6 & W9iov6)); +assign B9iov6 = (Tnzdt6 & Daiov6); +assign Daiov6 = (~(Kaiov6 & Raiov6)); +assign Raiov6 = (Yaiov6 | Ybhov6); +assign Kaiov6 = (Fbiov6 & V82nv6); +assign Fbiov6 = (~(Mbiov6 & Tbiov6)); +assign Tbiov6 = (~(Ybhov6 & Yaiov6)); +assign Yaiov6 = (~(Aciov6 & Hciov6)); +assign Hciov6 = (~(Tchov6 & Ociov6)); +assign Aciov6 = (~(Vciov6 & Moj7z6[0])); +assign Vciov6 = (Cdiov6 & Jdiov6); +assign Jdiov6 = (~(Qdiov6 & Qehov6)); +assign Qehov6 = (!Tchov6); +assign Tchov6 = (Moj7z6[1] & Zyl8v6); +assign Ybhov6 = (Moj7z6[2] & H1m8v6); +assign N8iov6 = (Eugov6 & V6hov6); +assign V6hov6 = (~(Xdiov6 & Eeiov6)); +assign Eeiov6 = (Leiov6 & Seiov6); +assign Seiov6 = (Zeiov6 & Gfiov6); +assign Gfiov6 = (~(E7iov6 ^ L7iov6)); +assign Zeiov6 = (~(U1iov6 ^ B2iov6)); +assign Leiov6 = (Nfiov6 & Ufiov6); +assign Ufiov6 = (~(Z7iov6 ^ G8iov6)); +assign Nfiov6 = (Bgiov6 ^ E1hov6); +assign E1hov6 = (~(Igiov6 & Pgiov6)); +assign Pgiov6 = (Wgiov6 & Dhiov6); +assign Dhiov6 = (Khiov6 & Rhiov6); +assign Rhiov6 = (~(Yhiov6 & Fiiov6)); +assign Yhiov6 = (Miiov6 & Osgov6); +assign Miiov6 = (Hjiov6 ? Ajiov6 : Tiiov6); +assign Khiov6 = (~(Ojiov6 & Vjiov6)); +assign Ojiov6 = (Qkiov6 ? Jkiov6 : Ckiov6); +assign Wgiov6 = (Xkiov6 & Eliov6); +assign Eliov6 = (~(Lliov6 & Sliov6)); +assign Lliov6 = (Nmiov6 ? Gmiov6 : Zliov6); +assign Xkiov6 = (~(Umiov6 & Bniov6)); +assign Umiov6 = (Wniov6 ? Pniov6 : Iniov6); +assign Igiov6 = (Doiov6 & Koiov6); +assign Koiov6 = (Roiov6 & Yoiov6); +assign Yoiov6 = (~(Fpiov6 & Mpiov6)); +assign Fpiov6 = (Hqiov6 ? Aqiov6 : Tpiov6); +assign Aqiov6 = (Criov6 ? Vqiov6 : Oqiov6); +assign Tpiov6 = (Xriov6 ? Qriov6 : Jriov6); +assign Roiov6 = (~(Esiov6 & Lsiov6)); +assign Esiov6 = (Gtiov6 ? Zsiov6 : Ssiov6); +assign Zsiov6 = (Buiov6 ? Utiov6 : Ntiov6); +assign Ssiov6 = (Wuiov6 ? Puiov6 : Iuiov6); +assign Doiov6 = (Dviov6 & Kviov6); +assign Kviov6 = (~(Rviov6 & Yviov6)); +assign Yviov6 = (~(Fwiov6 & Mwiov6)); +assign Mwiov6 = (Twiov6 & Axiov6); +assign Axiov6 = (Hxiov6 & Oxiov6); +assign Oxiov6 = (~(Vxiov6 & Cyiov6)); +assign Vxiov6 = (Jyiov6 & Qyiov6); +assign Hxiov6 = (~(Xyiov6 & Eziov6)); +assign Xyiov6 = (Zziov6 ? Sziov6 : Lziov6); +assign Twiov6 = (G0jov6 & N0jov6); +assign N0jov6 = (~(U0jov6 & B1jov6)); +assign U0jov6 = (W1jov6 ? P1jov6 : I1jov6); +assign G0jov6 = (~(D2jov6 & K2jov6)); +assign D2jov6 = (F3jov6 ? Y2jov6 : R2jov6); +assign Fwiov6 = (M3jov6 & T3jov6); +assign T3jov6 = (~(A4jov6 & Nxeov6)); +assign M3jov6 = (H4jov6 & O4jov6); +assign O4jov6 = (~(V4jov6 & C5jov6)); +assign V4jov6 = (X5jov6 ? Q5jov6 : J5jov6); +assign H4jov6 = (~(E6jov6 & L6jov6)); +assign L6jov6 = (~(S6jov6 & Z6jov6)); +assign Z6jov6 = (~(G7jov6 & N7jov6)); +assign Dviov6 = (~(Hsgov6 & U7jov6)); +assign U7jov6 = (B8jov6 | I8jov6); +assign I8jov6 = (D9jov6 ? W8jov6 : P8jov6); +assign W8jov6 = (K9jov6 & R9jov6); +assign K9jov6 = (Y9jov6 & Fajov6); +assign P8jov6 = (Abjov6 ? Tajov6 : Majov6); +assign Tajov6 = (Vbjov6 ? Objov6 : Hbjov6); +assign Majov6 = (Qcjov6 ? Jcjov6 : Ccjov6); +assign B8jov6 = (~(Xcjov6 & Edjov6)); +assign Edjov6 = (~(Ldjov6 & Sdjov6)); +assign Ldjov6 = (Nejov6 ? Gejov6 : Zdjov6); +assign Xcjov6 = (Uejov6 | Bfjov6); +assign Xdiov6 = (Ifjov6 & Pfjov6); +assign Pfjov6 = (Hsgov6 ^ Wfjov6); +assign Ifjov6 = (Dgjov6 & Kgjov6); +assign Kgjov6 = (Rgjov6 ^ Ivhov6); +assign Ivhov6 = (~(Ygjov6 & Fhjov6)); +assign Fhjov6 = (Mhjov6 & Thjov6); +assign Thjov6 = (Aijov6 & Hijov6); +assign Hijov6 = (~(Oijov6 & Fiiov6)); +assign Fiiov6 = (Vijov6 & Cjjov6); +assign Vijov6 = (Jjjov6 & Qjjov6); +assign Oijov6 = (Osgov6 & Hjiov6); +assign Aijov6 = (~(Xjjov6 & Mpiov6)); +assign Xjjov6 = (Ekjov6 ? Xriov6 : Criov6); +assign Mhjov6 = (Lkjov6 & Skjov6); +assign Skjov6 = (~(Zkjov6 & Lsiov6)); +assign Zkjov6 = (Gtiov6 ? Buiov6 : Wuiov6); +assign Lkjov6 = (~(Hsgov6 & Gljov6)); +assign Gljov6 = (~(Nljov6 & Uljov6)); +assign Uljov6 = (~(Sdjov6 & Nejov6)); +assign Nljov6 = (Bmjov6 & Uejov6); +assign Uejov6 = (~(Imjov6 & D9jov6)); +assign Imjov6 = (Pmjov6 & Y9jov6); +assign Bmjov6 = (~(Wmjov6 & Dnjov6)); +assign Wmjov6 = (Abjov6 ? Vbjov6 : Qcjov6); +assign Ygjov6 = (Knjov6 & Rnjov6); +assign Rnjov6 = (Ynjov6 & Fojov6); +assign Fojov6 = (~(Vjiov6 & Qkiov6)); +assign Vjiov6 = (Mojov6 & Tojov6); +assign Mojov6 = (~(Apjov6 | Hpjov6)); +assign Ynjov6 = (~(Rviov6 & Opjov6)); +assign Opjov6 = (~(Vpjov6 & Cqjov6)); +assign Cqjov6 = (Jqjov6 & Qqjov6); +assign Qqjov6 = (Xqjov6 & Erjov6); +assign Erjov6 = (~(E6jov6 & Lrjov6)); +assign Lrjov6 = (~(S6jov6 & Srjov6)); +assign Xqjov6 = (Zrjov6 | Gsjov6); +assign Jqjov6 = (Nsjov6 & Usjov6); +assign Usjov6 = (~(Eziov6 & Zziov6)); +assign Eziov6 = (Btjov6 & Itjov6); +assign Btjov6 = (Ptjov6 & Wtjov6); +assign Nsjov6 = (~(B1jov6 & W1jov6)); +assign B1jov6 = (Dujov6 & Itjov6); +assign Dujov6 = (Kujov6 & Rujov6); +assign Vpjov6 = (Yujov6 & Fvjov6); +assign Yujov6 = (Mvjov6 & Tvjov6); +assign Tvjov6 = (~(K2jov6 & F3jov6)); +assign Mvjov6 = (~(C5jov6 & X5jov6)); +assign Knjov6 = (Awjov6 & Hwjov6); +assign Hwjov6 = (~(Sliov6 & Nmiov6)); +assign Awjov6 = (~(Bniov6 & Wniov6)); +assign Dgjov6 = (Osgov6 ^ Owjov6); +assign Eugov6 = (~(Kkadt6 & Sugov6)); +assign Aek8v6 = (~(Vwjov6 & Cxjov6)); +assign Cxjov6 = (~(Qmb7z6[8] & Jxjov6)); +assign Vwjov6 = (Qxjov6 | Xxjov6); +assign Tdk8v6 = (~(Eyjov6 & Lyjov6)); +assign Lyjov6 = (Syjov6 & Zyjov6); +assign Zyjov6 = (~(H02ov6 & Aw97z6)); +assign Syjov6 = (Gzjov6 & Nzjov6); +assign Nzjov6 = (C12ov6 | Kajnv6); +assign Kajnv6 = (Uzjov6 & B0kov6); +assign B0kov6 = (I0kov6 & P0kov6); +assign P0kov6 = (W0kov6 & D1kov6); +assign D1kov6 = (K1kov6 & R1kov6); +assign R1kov6 = (~(vis_psp_o[8] & N32ov6)); +assign K1kov6 = (~(U32ov6 & Pic7z6[8])); +assign W0kov6 = (Y1kov6 & F2kov6); +assign F2kov6 = (~(vis_msp_o[8] & P42ov6)); +assign Y1kov6 = (~(vis_r12_o[8] & W42ov6)); +assign I0kov6 = (M2kov6 & T2kov6); +assign T2kov6 = (A3kov6 & H3kov6); +assign H3kov6 = (~(vis_r11_o[8] & F62ov6)); +assign A3kov6 = (~(vis_r10_o[8] & M62ov6)); +assign M2kov6 = (O3kov6 & V3kov6); +assign V3kov6 = (~(vis_r9_o[8] & H72ov6)); +assign O3kov6 = (~(vis_r8_o[8] & O72ov6)); +assign Uzjov6 = (C4kov6 & J4kov6); +assign J4kov6 = (Q4kov6 & X4kov6); +assign X4kov6 = (E5kov6 & L5kov6); +assign L5kov6 = (~(vis_r7_o[8] & L92ov6)); +assign E5kov6 = (~(vis_r6_o[8] & S92ov6)); +assign Q4kov6 = (S5kov6 & Z5kov6); +assign Z5kov6 = (~(vis_r5_o[8] & Na2ov6)); +assign S5kov6 = (~(vis_r4_o[8] & Ua2ov6)); +assign C4kov6 = (G6kov6 & N6kov6); +assign N6kov6 = (U6kov6 & B7kov6); +assign B7kov6 = (~(vis_r3_o[8] & Dc2ov6)); +assign U6kov6 = (~(vis_r2_o[8] & Kc2ov6)); +assign G6kov6 = (I7kov6 & P7kov6); +assign P7kov6 = (~(vis_r1_o[8] & Fd2ov6)); +assign I7kov6 = (~(vis_r0_o[8] & Md2ov6)); +assign Gzjov6 = (~(Td2ov6 & W7kov6)); +assign Eyjov6 = (D8kov6 & K8kov6); +assign K8kov6 = (~(Ve2ov6 & vis_pc_o[8])); +assign D8kov6 = (~(Fhc7z6[8] & Cf2ov6)); +assign Mdk8v6 = (~(R8kov6 & Y8kov6)); +assign Y8kov6 = (F9kov6 & M9kov6); +assign M9kov6 = (~(T9kov6 & C6bov6)); +assign F9kov6 = (~(J6bov6 & Alf7z6[24])); +assign R8kov6 = (Aakov6 & Hakov6); +assign Hakov6 = (~(Cqf7z6[8] & E7bov6)); +assign Aakov6 = (~(L0g7z6[24] & L7bov6)); +assign Fdk8v6 = (~(Oakov6 & Vakov6)); +assign Vakov6 = (Cbkov6 & Jbkov6); +assign Jbkov6 = (~(Sepdt6 & U8bov6)); +assign Cbkov6 = (Qbkov6 & Xbkov6); +assign Xbkov6 = (~(Dsmdt6 & P9bov6)); +assign Qbkov6 = (~(W9bov6 & Onf7z6[30])); +assign Oakov6 = (Eckov6 & Lckov6); +assign Lckov6 = (~(L0g7z6[30] & Rabov6)); +assign Eckov6 = (Sckov6 & Zckov6); +assign Zckov6 = (~(Pvkdt6 & Mbbov6)); +assign Sckov6 = (~(L0g7z6[14] & Gcmnv6)); +assign Yck8v6 = (~(Gdkov6 & Ndkov6)); +assign Ndkov6 = (~(Udkov6 & Bekov6)); +assign Bekov6 = (~(Iekov6 & Pekov6)); +assign Pekov6 = (Wekov6 | Mpe7z6[4]); +assign Iekov6 = (~(Dfkov6 & Kfkov6)); +assign Gdkov6 = (Rfkov6 | Udkov6); +assign Rck8v6 = (~(Yfkov6 & Fgkov6)); +assign Fgkov6 = (Mgkov6 & Tgkov6); +assign Tgkov6 = (~(Kurdt6 & U8bov6)); +assign Mgkov6 = (Ahkov6 & Hhkov6); +assign Hhkov6 = (~(W8pdt6 & P9bov6)); +assign Ahkov6 = (~(Onf7z6[0] & Ohkov6)); +assign Yfkov6 = (Vhkov6 & Cikov6); +assign Cikov6 = (~(Bnmdt6 & Mbbov6)); +assign Vhkov6 = (~(L0g7z6[0] & Rabov6)); +assign Kck8v6 = (~(Jikov6 & Qikov6)); +assign Qikov6 = (Xikov6 & Ejkov6); +assign Ejkov6 = (~(H02ov6 & As97z6)); +assign Xikov6 = (Ljkov6 & Sjkov6); +assign Sjkov6 = (C12ov6 | Injnv6); +assign Injnv6 = (Zjkov6 & Gkkov6); +assign Gkkov6 = (Nkkov6 & Ukkov6); +assign Ukkov6 = (Blkov6 & Ilkov6); +assign Ilkov6 = (Plkov6 & Wlkov6); +assign Wlkov6 = (~(vis_psp_o[2] & N32ov6)); +assign Plkov6 = (~(U32ov6 & Pic7z6[2])); +assign Blkov6 = (Dmkov6 & Kmkov6); +assign Kmkov6 = (~(vis_msp_o[2] & P42ov6)); +assign Dmkov6 = (~(vis_r12_o[2] & W42ov6)); +assign Nkkov6 = (Rmkov6 & Ymkov6); +assign Ymkov6 = (Fnkov6 & Mnkov6); +assign Mnkov6 = (~(vis_r11_o[2] & F62ov6)); +assign Fnkov6 = (~(vis_r10_o[2] & M62ov6)); +assign Rmkov6 = (Tnkov6 & Aokov6); +assign Aokov6 = (~(vis_r9_o[2] & H72ov6)); +assign Tnkov6 = (~(vis_r8_o[2] & O72ov6)); +assign Zjkov6 = (Hokov6 & Ookov6); +assign Ookov6 = (Vokov6 & Cpkov6); +assign Cpkov6 = (Jpkov6 & Qpkov6); +assign Qpkov6 = (~(vis_r7_o[2] & L92ov6)); +assign Jpkov6 = (~(vis_r6_o[2] & S92ov6)); +assign Vokov6 = (Xpkov6 & Eqkov6); +assign Eqkov6 = (~(vis_r5_o[2] & Na2ov6)); +assign Xpkov6 = (~(vis_r4_o[2] & Ua2ov6)); +assign Hokov6 = (Lqkov6 & Sqkov6); +assign Sqkov6 = (Zqkov6 & Grkov6); +assign Grkov6 = (~(vis_r3_o[2] & Dc2ov6)); +assign Zqkov6 = (~(vis_r2_o[2] & Kc2ov6)); +assign Lqkov6 = (Nrkov6 & Urkov6); +assign Urkov6 = (~(vis_r1_o[2] & Fd2ov6)); +assign Nrkov6 = (~(vis_r0_o[2] & Md2ov6)); +assign Ljkov6 = (~(Td2ov6 & Bskov6)); +assign Jikov6 = (Iskov6 & Pskov6); +assign Pskov6 = (~(Ve2ov6 & vis_pc_o[2])); +assign Iskov6 = (~(E3c7z6[2] & Cf2ov6)); +assign Dck8v6 = (~(Wskov6 & Dtkov6)); +assign Dtkov6 = (Ktkov6 & Rtkov6); +assign Rtkov6 = (~(Iv3ov6 & C6bov6)); +assign Ktkov6 = (~(J6bov6 & Alf7z6[30])); +assign Wskov6 = (Ytkov6 & Fukov6); +assign Fukov6 = (~(Cqf7z6[14] & E7bov6)); +assign Ytkov6 = (~(L0g7z6[30] & L7bov6)); +assign Wbk8v6 = (~(Mukov6 & Tukov6)); +assign Tukov6 = (Avkov6 & Hvkov6); +assign Hvkov6 = (~(Qhpdt6 & U8bov6)); +assign Avkov6 = (Ovkov6 & Vvkov6); +assign Vvkov6 = (~(Cvmdt6 & P9bov6)); +assign Ovkov6 = (~(W9bov6 & Onf7z6[29])); +assign Mukov6 = (Cwkov6 & Jwkov6); +assign Jwkov6 = (~(L0g7z6[29] & Rabov6)); +assign Cwkov6 = (Qwkov6 & Xwkov6); +assign Xwkov6 = (~(Sxkdt6 & Mbbov6)); +assign Qwkov6 = (~(L0g7z6[13] & Gcmnv6)); +assign Pbk8v6 = (~(Exkov6 & Lxkov6)); +assign Lxkov6 = (Sxkov6 & Zxkov6); +assign Zxkov6 = (~(H02ov6 & Iw97z6)); +assign Sxkov6 = (Gykov6 & Nykov6); +assign Nykov6 = (C12ov6 | Wgjnv6); +assign Wgjnv6 = (Uykov6 & Bzkov6); +assign Bzkov6 = (Izkov6 & Pzkov6); +assign Pzkov6 = (Wzkov6 & D0lov6); +assign D0lov6 = (K0lov6 & R0lov6); +assign R0lov6 = (~(vis_psp_o[4] & N32ov6)); +assign K0lov6 = (~(U32ov6 & Pic7z6[4])); +assign Wzkov6 = (Y0lov6 & F1lov6); +assign F1lov6 = (~(vis_msp_o[4] & P42ov6)); +assign Y0lov6 = (~(vis_r12_o[4] & W42ov6)); +assign Izkov6 = (M1lov6 & T1lov6); +assign T1lov6 = (A2lov6 & H2lov6); +assign H2lov6 = (~(vis_r11_o[4] & F62ov6)); +assign A2lov6 = (~(vis_r10_o[4] & M62ov6)); +assign M1lov6 = (O2lov6 & V2lov6); +assign V2lov6 = (~(vis_r9_o[4] & H72ov6)); +assign O2lov6 = (~(vis_r8_o[4] & O72ov6)); +assign Uykov6 = (C3lov6 & J3lov6); +assign J3lov6 = (Q3lov6 & X3lov6); +assign X3lov6 = (E4lov6 & L4lov6); +assign L4lov6 = (~(vis_r7_o[4] & L92ov6)); +assign E4lov6 = (~(vis_r6_o[4] & S92ov6)); +assign Q3lov6 = (S4lov6 & Z4lov6); +assign Z4lov6 = (~(vis_r5_o[4] & Na2ov6)); +assign S4lov6 = (~(vis_r4_o[4] & Ua2ov6)); +assign C3lov6 = (G5lov6 & N5lov6); +assign N5lov6 = (U5lov6 & B6lov6); +assign B6lov6 = (~(vis_r3_o[4] & Dc2ov6)); +assign U5lov6 = (~(vis_r2_o[4] & Kc2ov6)); +assign G5lov6 = (I6lov6 & P6lov6); +assign P6lov6 = (~(vis_r1_o[4] & Fd2ov6)); +assign I6lov6 = (~(vis_r0_o[4] & Md2ov6)); +assign Gykov6 = (~(Td2ov6 & W6lov6)); +assign Exkov6 = (D7lov6 & K7lov6); +assign K7lov6 = (~(Ve2ov6 & vis_pc_o[4])); +assign D7lov6 = (~(E3c7z6[4] & Cf2ov6)); +assign Ibk8v6 = (~(Wpvnv6 & R7lov6)); +assign R7lov6 = (~(Y7lov6 & F02nv6)); +assign Y7lov6 = (~(F8lov6 & M8lov6)); +assign F8lov6 = (S2onv6 & C0wnv6); +assign Bbk8v6 = (~(T8lov6 & A9lov6)); +assign A9lov6 = (~(H9lov6 & X6eet6)); +assign H9lov6 = (~(Ldo7v6 | Kdadt6)); +assign Uak8v6 = (Kdadt6 ? Bpvnv6 : O9lov6); +assign Bpvnv6 = (V9lov6 | Ldo7v6); +assign O9lov6 = (Calov6 & O5a7z6); +assign Calov6 = (Ztaov6 & Gvvnv6); +assign Nak8v6 = (Jalov6 & Qalov6); +assign Qalov6 = (~(Xalov6 & Eblov6)); +assign Eblov6 = (~(Hryet6 & Lblov6)); +assign Xalov6 = (~(Sblov6 & Zblov6)); +assign Gak8v6 = (~(Gclov6 & Nclov6)); +assign Nclov6 = (~(Hl9ov6 & Uclov6)); +assign Gclov6 = (~(Dq9ov6 & Ewyet6)); +assign Z9k8v6 = (Bdlov6 | A497z6); +assign S9k8v6 = (~(Bdlov6 & Idlov6)); +assign Idlov6 = (~(Pdlov6 & Ja1ft6)); +assign Bdlov6 = (~(Wdlov6 & Delov6)); +assign Delov6 = (~(Kelov6 & Relov6)); +assign Kelov6 = (~(Yelov6 | Fflov6)); +assign L9k8v6 = (Mflov6 & Kb77z6); +assign Mflov6 = (Aglov6 ? Frzet6 : Tflov6); +assign Tflov6 = (I6oet6 & Hglov6); +assign Hglov6 = (~(Oglov6 & Vglov6)); +assign Vglov6 = (Chlov6 & Jhlov6); +assign Jhlov6 = (~(Dtm7z6[3] & Qhlov6)); +assign Chlov6 = (~(Dtm7z6[2] & Xhlov6)); +assign Oglov6 = (Eilov6 & Lilov6); +assign Lilov6 = (~(Dtm7z6[0] & HRESPD[0])); +assign Eilov6 = (~(Dtm7z6[1] & HRESPS[0])); +assign E9k8v6 = (Silov6 ? Zdh7v6 : Blzet6); +assign X8k8v6 = (~(Zilov6 & Gjlov6)); +assign Gjlov6 = (~(Njlov6 & Ujlov6)); +assign Zilov6 = (~(Bklov6 & Pvj7z6[0])); +assign Q8k8v6 = (Pklov6 ? Iklov6 : Hfm7z6[25]); +assign J8k8v6 = (Pb9ov6 ? D6c7z6[3] : Wklov6); +assign Wklov6 = (~(Dllov6 & Kllov6)); +assign Kllov6 = (Rllov6 & Yllov6); +assign Yllov6 = (~(Yc9ov6 & Fmlov6)); +assign Rllov6 = (~(Md9ov6 & Mmlov6)); +assign Dllov6 = (Tmlov6 & Anlov6); +assign Anlov6 = (~(Oe9ov6 & Hnlov6)); +assign Tmlov6 = (~(Cf9ov6 & Onlov6)); +assign C8k8v6 = (~(Vnlov6 & Colov6)); +assign Colov6 = (Jolov6 | Qolov6); +assign Vnlov6 = (Xolov6 & Eplov6); +assign Eplov6 = (~(Lplov6 & Splov6)); +assign Splov6 = (Zplov6 & Gqlov6); +assign Gqlov6 = (~(Nqlov6 | Qmb7z6[6])); +assign Nqlov6 = (Qmb7z6[7] | Qmb7z6[8]); +assign Zplov6 = (~(Qmb7z6[4] | Qmb7z6[5])); +assign Lplov6 = (Uqlov6 & Brlov6); +assign Brlov6 = (~(Irlov6 | Qmb7z6[1])); +assign Irlov6 = (Qmb7z6[2] | Qmb7z6[3]); +assign Uqlov6 = (~(Prlov6 | Qmb7z6[0])); +assign Prlov6 = (~(Wrlov6 | Lcadt6)); +assign Xolov6 = (~(Dslov6 & Kslov6)); +assign Dslov6 = (~(Rslov6 | Lcadt6)); +assign V7k8v6 = (!Yslov6); +assign Yslov6 = (O5a7z6 ? Mtlov6 : Ftlov6); +assign Mtlov6 = (~(Ttlov6 & Aulov6)); +assign Ttlov6 = (Hulov6 & Oulov6); +assign Oulov6 = (~(Rslov6 ^ Vulov6)); +assign Vulov6 = (Cvlov6 & Jvlov6); +assign Jvlov6 = (Qvlov6 & Xvlov6); +assign Xvlov6 = (Ewlov6 & Lwlov6); +assign Ewlov6 = (~(Swlov6 | Zwlov6)); +assign Qvlov6 = (Gxlov6 & Nxlov6); +assign Cvlov6 = (Uxlov6 & Bylov6); +assign Bylov6 = (Iylov6 & Pylov6); +assign Uxlov6 = (Wylov6 & Dzlov6); +assign O7k8v6 = (~(Kzlov6 & Rzlov6)); +assign Rzlov6 = (~(Yzlov6 & F0mov6)); +assign F0mov6 = (Svfov6 & Vs9ov6); +assign Yzlov6 = (L2gdt6 & M0mov6); +assign Kzlov6 = (~(T0mov6 & A1mov6)); +assign A1mov6 = (~(H1mov6 & O1mov6)); +assign O1mov6 = (V1mov6 & Gpfov6); +assign Gpfov6 = (C2mov6 & J2mov6); +assign J2mov6 = (~(Q2mov6 & X2mov6)); +assign C2mov6 = (E3mov6 & L3mov6); +assign L3mov6 = (~(S3mov6 & Z3mov6)); +assign S3mov6 = (G4mov6 ? Zec7z6[1] : Zec7z6[17]); +assign E3mov6 = (~(N4mov6 & Ohe7z6[1])); +assign H1mov6 = (U4mov6 & B5mov6); +assign T0mov6 = (~(I5mov6 & M0mov6)); +assign I5mov6 = (Svfov6 & P5mov6); +assign Svfov6 = (!Qu1ov6); +assign H7k8v6 = (C1onv6 & W5mov6); +assign C1onv6 = (~(Fjhov6 | D6mov6)); +assign A7k8v6 = (Tznnv6 & W5mov6); +assign W5mov6 = (~(K6mov6 & R6mov6)); +assign R6mov6 = (~(S2onv6 & Geh7v6)); +assign Tznnv6 = (~(Fjhov6 | Y6mov6)); +assign Fjhov6 = (~(F7mov6 & G3onv6)); +assign F7mov6 = (~(M7mov6 | T7mov6)); +assign T6k8v6 = (A8mov6 & H8mov6); +assign H8mov6 = (~(O8mov6 & V8mov6)); +assign V8mov6 = (~(Loddt6 & C9mov6)); +assign O8mov6 = (~(J9mov6 | Pqddt6)); +assign M6k8v6 = (Pqddt6 | Q9mov6); +assign Q9mov6 = (X9mov6 & Eamov6); +assign Eamov6 = (~(J9mov6 | C9mov6)); +assign J9mov6 = (A8mov6 & Lamov6); +assign X9mov6 = (Loddt6 & Samov6); +assign F6k8v6 = (~(Zamov6 & Gbmov6)); +assign Gbmov6 = (~(Dheet6 & Nbmov6)); +assign Y5k8v6 = (Ubmov6 ? D62nv6 : Qteet6); +assign Ubmov6 = (~(Bcmov6 | Dheet6)); +assign R5k8v6 = (~(Mdonv6 & Icmov6)); +assign Icmov6 = (~(Pcmov6 & Wcmov6)); +assign Pcmov6 = (Aeonv6 & B2jnv6); +assign K5k8v6 = (!Ddmov6); +assign Ddmov6 = (Kdmov6 ? Y497z6 : Jfonv6); +assign D5k8v6 = (Mdonv6 ? Rj9ov6 : Qboet6); +assign W4k8v6 = (~(Sh2nv6 | Rdmov6)); +assign P4k8v6 = (~(Ydmov6 & Femov6)); +assign Femov6 = (~(Memov6 & Temov6)); +assign Temov6 = (Afmov6 & Hfmov6); +assign Hfmov6 = (Ofmov6 & Cmm7z6[9]); +assign Ofmov6 = (Cmm7z6[6] & Cmm7z6[8]); +assign Afmov6 = (Vfmov6 & Cmm7z6[7]); +assign Memov6 = (Cgmov6 & Jgmov6); +assign Jgmov6 = (Cmm7z6[4] & Cmm7z6[5]); +assign Cgmov6 = (Yefnv6 & Cmm7z6[3]); +assign Ydmov6 = (~(Ex7et6 & Vrinv6)); +assign I4k8v6 = (!Qgmov6); +assign Qgmov6 = (Vfmov6 ? Ehmov6 : Xgmov6); +assign Ehmov6 = (~(Evadt6 & Lgonv6)); +assign B4k8v6 = (W13et6 | Vfmov6); +assign U3k8v6 = (Shmov6 ? Ow2et6 : Lhmov6); +assign N3k8v6 = (Shmov6 ? Kih7z6[1] : Cmm7z6[1]); +assign G3k8v6 = (Shmov6 ? Kih7z6[0] : Cmm7z6[0]); +assign Z2k8v6 = (!Zhmov6); +assign Zhmov6 = (Vfmov6 ? Nimov6 : Gimov6); +assign Nimov6 = (~(M43et6 & K73et6)); +assign S2k8v6 = (Uimov6 ? Xmtet6 : Cmm7z6[1]); +assign L2k8v6 = (Uimov6 ? Yotet6 : Cmm7z6[0]); +assign E2k8v6 = (Bjmov6 & Ypinv6); +assign Bjmov6 = (~(Ijmov6 & Pjmov6)); +assign Pjmov6 = (~(W13et6 & Wjmov6)); +assign Wjmov6 = (~(Dkmov6 & Kkmov6)); +assign Kkmov6 = (~(Rkmov6 & Ykmov6)); +assign Ykmov6 = (Flmov6 & Mlmov6); +assign Rkmov6 = (A0onv6 & Tlmov6); +assign Dkmov6 = (~(Ammov6 & Gimov6)); +assign Ammov6 = (~(Hmmov6 & Ommov6)); +assign Ommov6 = (~(A0onv6 & Whhov6)); +assign X1k8v6 = (~(Vmmov6 & Cnmov6)); +assign Cnmov6 = (~(Jnmov6 & Kgbdt6)); +assign Jnmov6 = (Qnmov6 & Xnmov6); +assign Qnmov6 = (~(O5a7z6 & Eomov6)); +assign Eomov6 = (~(Lomov6 & Somov6)); +assign Lomov6 = (Zomov6 & Gpmov6); +assign Zomov6 = (~(Npmov6 & Ijmov6)); +assign Npmov6 = (~(Upmov6 & Bqmov6)); +assign Upmov6 = (Flmov6 & Iqmov6); +assign Vmmov6 = (~(Pqmov6 & Wqmov6)); +assign Wqmov6 = (~(Drmov6 & Krmov6)); +assign Krmov6 = (~(Rrmov6 & Yrmov6)); +assign Yrmov6 = (U1jnv6 & Fsmov6); +assign Rrmov6 = (Msmov6 & N1jnv6); +assign Drmov6 = (~(Tsmov6 & Atmov6)); +assign Tsmov6 = (Ypinv6 & Ijmov6); +assign Pqmov6 = (~(Htmov6 | Nhonv6)); +assign Q1k8v6 = (~(Otmov6 & Vtmov6)); +assign Vtmov6 = (Cumov6 & Jumov6); +assign Jumov6 = (~(Qumov6 & Xumov6)); +assign Cumov6 = (Evmov6 & Lvmov6); +assign Lvmov6 = (Svmov6 | Bvaov6); +assign Evmov6 = (~(Zvmov6 & Gwmov6)); +assign Otmov6 = (Nwmov6 & Uwmov6); +assign Uwmov6 = (~(Bxmov6 & Ixmov6)); +assign Nwmov6 = (~(Nnaov6 & Pxmov6)); +assign J1k8v6 = (~(Wxmov6 & Dymov6)); +assign Dymov6 = (Kymov6 & 1'b1); +assign Kymov6 = (Rymov6 & Yymov6); +assign Yymov6 = (Svmov6 | Zmaov6); +assign Zmaov6 = (!Fzmov6); +assign Rymov6 = (~(Zvmov6 & Mzmov6)); +assign Wxmov6 = (Tzmov6 & A0nov6); +assign A0nov6 = (~(Bxmov6 & H0nov6)); +assign Tzmov6 = (~(Nnaov6 & Xlaov6)); +assign C1k8v6 = (~(O0nov6 & V0nov6)); +assign V0nov6 = (C1nov6 & J1nov6); +assign J1nov6 = (~(Qumov6 & Xlaov6)); +assign C1nov6 = (Q1nov6 & X1nov6); +assign X1nov6 = (Svmov6 | Fqaov6); +assign Fqaov6 = (!E2nov6); +assign Q1nov6 = (~(Zvmov6 & L2nov6)); +assign O0nov6 = (S2nov6 & Z2nov6); +assign Z2nov6 = (~(Bxmov6 & G3nov6)); +assign S2nov6 = (~(Nnaov6 & Kpaov6)); +assign V0k8v6 = (~(N3nov6 & U3nov6)); +assign U3nov6 = (B4nov6 & I4nov6); +assign I4nov6 = (~(Qumov6 & Kpaov6)); +assign Qumov6 = (P4nov6 & Ywaov6); +assign P4nov6 = (Fxaov6 & W4nov6); +assign B4nov6 = (D5nov6 & K5nov6); +assign K5nov6 = (Svmov6 | Ivaov6); +assign Svmov6 = (~(R5nov6 & Staov6)); +assign R5nov6 = (Ztaov6 & W4nov6); +assign D5nov6 = (~(Zvmov6 & Y5nov6)); +assign Zvmov6 = (W4nov6 & F6nov6); +assign F6nov6 = (~(M6nov6 & Txaov6)); +assign M6nov6 = (Etaov6 & Ayaov6); +assign Etaov6 = (~(Xtvnv6 & Lyknv6)); +assign N3nov6 = (T6nov6 & A7nov6); +assign A7nov6 = (~(Bxmov6 & H7nov6)); +assign Bxmov6 = (O7nov6 & W4nov6); +assign O7nov6 = (~(V7nov6 & C8nov6)); +assign V7nov6 = (J8nov6 & Xzaov6); +assign Xzaov6 = (~(Q8nov6 & X8nov6)); +assign X8nov6 = (~(Tnzdt6 & E9nov6)); +assign Q8nov6 = (L9nov6 & Bfo7v6); +assign T6nov6 = (~(Nnaov6 & Xumov6)); +assign O0k8v6 = (~(Vs9ov6 & S9nov6)); +assign S9nov6 = (~(Zhbdt6 & Rihov6)); +assign H0k8v6 = (~(V1mov6 & Z9nov6)); +assign Z9nov6 = (~(Upfov6 & Ohe7z6[3])); +assign V1mov6 = (Ganov6 & Nanov6); +assign Nanov6 = (~(Uanov6 & X2mov6)); +assign Ganov6 = (Bbnov6 & Ibnov6); +assign Ibnov6 = (~(Pbnov6 & Z3mov6)); +assign Pbnov6 = (G4mov6 ? Zec7z6[2] : Zec7z6[18]); +assign Bbnov6 = (~(N4mov6 & Ohe7z6[2])); +assign A0k8v6 = (~(G4mov6 & Wbnov6)); +assign Wbnov6 = (~(Knbdt6 & Dcnov6)); +assign Tzj8v6 = (~(Kcnov6 & Rcnov6)); +assign Rcnov6 = (Ycnov6 | Hs9ov6); +assign Kcnov6 = (~(I9e7z6[2] & Dcnov6)); +assign Mzj8v6 = (Mdnov6 ? Nmadt6 : Fdnov6); +assign Mdnov6 = (Tdnov6 & Dqgov6); +assign Dqgov6 = (~(Rkfov6 & Cgfov6)); +assign Tdnov6 = (~(Kqgov6 & Aenov6)); +assign Aenov6 = (I9e7z6[2] | Ibe7z6[0]); +assign Kqgov6 = (Shfov6 & Cgfov6); +assign Cgfov6 = (Ib3nv6 | Henov6); +assign Ib3nv6 = (Oenov6 & Lugov6); +assign Lugov6 = (!X83nv6); +assign X83nv6 = (Oxfet6 & SLEEPHOLDACKn); +assign Oxfet6 = (!Jg2nv6); +assign Oenov6 = (~(Venov6 & Cfnov6)); +assign Cfnov6 = (~(Sh2nv6 & Qg2nv6)); +assign Fdnov6 = (~(Jfnov6 & Qfnov6)); +assign Qfnov6 = (~(Rkfov6 & Swlov6)); +assign Fzj8v6 = (~(Xfnov6 | Tnzdt6)); +assign Yyj8v6 = (Lgnov6 ? Tkbdt6 : Egnov6); +assign Lgnov6 = (Sgnov6 & Lhfov6); +assign Sgnov6 = (!Zgnov6); +assign Egnov6 = (Ibe7z6[4] ? E3c7z6[0] : Zfhov6); +assign Ryj8v6 = (Wj1ov6 ? Ghnov6 : Fsc7z6[1]); +assign Kyj8v6 = (~(Nhnov6 & Uhnov6)); +assign Nhnov6 = (~(Ztcdt6 & M4xnv6)); +assign Dyj8v6 = (Binov6 & F4xnv6); +assign Binov6 = (Crcdt6 | Wj1ov6); +assign Wxj8v6 = (~(T8ddt6 ^ Iinov6)); +assign Iinov6 = (T8ddt6 ? Uhnov6 : Ldo7v6); +assign Uhnov6 = (~(N8xnv6 & Am1ov6)); +assign Pxj8v6 = (Qp38v6 | Pinov6); +assign Pinov6 = (Winov6 & Djnov6); +assign Djnov6 = (Kjnov6 & Pj1ov6); +assign Kjnov6 = (~(Iladt6 & J21ov6)); +assign Winov6 = (Rjnov6 & Sgcdt6); +assign Ixj8v6 = (Fknov6 ? Yjnov6 : Cgc7z6[1]); +assign Yjnov6 = (~(Mknov6 & Tknov6)); +assign Tknov6 = (Alnov6 & Hlnov6); +assign Hlnov6 = (Olnov6 & Nx0ov6); +assign Alnov6 = (Vlnov6 & Cmnov6); +assign Cmnov6 = (~(Jmnov6 & Qg2nv6)); +assign Jmnov6 = (Qmnov6 | Xmnov6); +assign Vlnov6 = (~(Ennov6 & J21ov6)); +assign Mknov6 = (Lnnov6 & Snnov6); +assign Snnov6 = (~(Znnov6 & Gonov6)); +assign Lnnov6 = (Nonov6 & Uonov6); +assign Uonov6 = (~(Bpnov6 & Rgo7v6)); +assign Nonov6 = (~(Ipnov6 & Pj1ov6)); +assign Bxj8v6 = (~(Ldbdt6 ^ Ppnov6)); +assign Ppnov6 = (Ldbdt6 ? Wpnov6 : Dxvnv6); +assign Wpnov6 = (~(Wrlov6 | Dqnov6)); +assign Uwj8v6 = (~(Kqnov6 & Rqnov6)); +assign Rqnov6 = (~(Yqnov6 & Frnov6)); +assign Yqnov6 = (M0edt6 & Mrnov6); +assign Kqnov6 = (~(Trnov6 & Asnov6)); +assign Asnov6 = (~(Hsnov6 & Osnov6)); +assign Osnov6 = (~(Vsnov6 & Ctnov6)); +assign Hsnov6 = (~(Jtnov6 & Qtnov6)); +assign Nwj8v6 = (~(Xnfov6 & T0fov6)); +assign T0fov6 = (SLEEPHOLDACKn | SLEEPHOLDREQn); +assign Xnfov6 = (~(Xtnov6 & SLEEPING)); +assign Xtnov6 = (~(M0fov6 | SLEEPHOLDREQn)); +assign M0fov6 = (Eunov6 & Lunov6); +assign Eunov6 = (Pyeov6 & Sunov6); +assign Zvj8v6 = (Fknov6 ? Zunov6 : Cgc7z6[0]); +assign Zunov6 = (~(Gvnov6 & Nvnov6)); +assign Nvnov6 = (Uvnov6 & Bwnov6); +assign Uvnov6 = (P51ov6 & Iwnov6); +assign Gvnov6 = (Pwnov6 & Wwnov6); +assign Wwnov6 = (Dxnov6 & Kxnov6); +assign Kxnov6 = (~(Xmnov6 & Qg2nv6)); +assign Dxnov6 = (~(Rxnov6 & IFLUSH)); +assign Pwnov6 = (Yxnov6 & Fynov6); +assign Fynov6 = (~(Bpnov6 & Gonov6)); +assign Svj8v6 = (Fknov6 ? Mynov6 : Cgc7z6[2]); +assign Mynov6 = (~(Tynov6 & Aznov6)); +assign Aznov6 = (Hznov6 & Olnov6); +assign Olnov6 = (~(Ennov6 & Oznov6)); +assign Hznov6 = (~(Gonov6 & Vznov6)); +assign Vznov6 = (~(Hu0ov6 & C0oov6)); +assign C0oov6 = (~(Bpnov6 & Aiadt6)); +assign Tynov6 = (Yxnov6 & J0oov6); +assign J0oov6 = (~(Q0oov6 & Pj1ov6)); +assign Q0oov6 = (~(X0oov6 & P51ov6)); +assign Yxnov6 = (E1oov6 & L1oov6); +assign L1oov6 = (S1oov6 | Tnzdt6); +assign E1oov6 = (~(Z1oov6 & G2oov6)); +assign Lvj8v6 = (Fknov6 ? N2oov6 : Cgc7z6[3]); +assign Fknov6 = (~(U2oov6 & B3oov6)); +assign B3oov6 = (I3oov6 & P3oov6); +assign P3oov6 = (W3oov6 & D4oov6); +assign D4oov6 = (K4oov6 & Iwnov6); +assign K4oov6 = (~(R4oov6 & Bpnov6)); +assign R4oov6 = (Ldo7v6 & Y4oov6); +assign Y4oov6 = (~(Dxvnv6 & F5oov6)); +assign F5oov6 = (~(O5a7z6 & Tnzdt6)); +assign W3oov6 = (M5oov6 & T5oov6); +assign T5oov6 = (~(A6oov6 & H6oov6)); +assign H6oov6 = (~(Iladt6 & X0wnv6)); +assign M5oov6 = (~(Xmnov6 & O6oov6)); +assign O6oov6 = (~(Qg2nv6 & V6oov6)); +assign V6oov6 = (~(K3jnv6 & Sh2nv6)); +assign Xmnov6 = (!C7oov6); +assign I3oov6 = (J7oov6 & Q7oov6); +assign Q7oov6 = (~(N8xnv6 & X7oov6)); +assign X7oov6 = (~(E8oov6 & L8oov6)); +assign E8oov6 = (S8oov6 & Z8oov6); +assign S8oov6 = (~(G9oov6 & Pj1ov6)); +assign G9oov6 = (Qmnov6 | N9oov6); +assign J7oov6 = (U9oov6 & Baoov6); +assign Baoov6 = (~(J21ov6 & Iaoov6)); +assign Iaoov6 = (~(Ennov6 & Paoov6)); +assign Paoov6 = (~(Waoov6 & H11ov6)); +assign Waoov6 = (~(Dboov6 | Sgcdt6)); +assign U9oov6 = (~(Kboov6 & Rboov6)); +assign Rboov6 = (~(Gonov6 & Qv0ov6)); +assign U2oov6 = (Yboov6 & Fcoov6); +assign Fcoov6 = (Mcoov6 & Tcoov6); +assign Tcoov6 = (Pj1ov6 | L8oov6); +assign Mcoov6 = (Adoov6 & Hdoov6); +assign Hdoov6 = (~(Odoov6 & Wrlov6)); +assign Wrlov6 = (!Vsgov6); +assign Adoov6 = (Venov6 | Vdoov6); +assign Yboov6 = (Ceoov6 & Jeoov6); +assign Ceoov6 = (Rjnov6 & Qeoov6); +assign Qeoov6 = (~(Sa2nv6 & Z1oov6)); +assign Rjnov6 = (Xeoov6 & P51ov6); +assign Xeoov6 = (~(Efoov6 & Lfoov6)); +assign Lfoov6 = (~(Dboov6 | Sfoov6)); +assign Dboov6 = (Zfoov6 & Somov6); +assign Somov6 = (~(Ggoov6 & Dwb7z6[1])); +assign Zfoov6 = (Ngoov6 & Ugoov6); +assign Ugoov6 = (~(Bhoov6 & Ihoov6)); +assign Ihoov6 = (~(Phoov6 & Whoov6)); +assign Whoov6 = (~(Dioov6 & Kioov6)); +assign Phoov6 = (~(Fxaov6 & Uvvnv6)); +assign Ngoov6 = (~(Rioov6 & Yioov6)); +assign Efoov6 = (J21ov6 & H11ov6); +assign N2oov6 = (~(Fjoov6 & Mjoov6)); +assign Mjoov6 = (Tjoov6 & C7oov6); +assign C7oov6 = (~(Akoov6 & Cgc7z6[3])); +assign Akoov6 = (Cgc7z6[0] & Cgc7z6[2]); +assign Tjoov6 = (Hu0ov6 & Hkoov6); +assign Fjoov6 = (Vdoov6 & Jeoov6); +assign Jeoov6 = (Okoov6 & Vkoov6); +assign Vkoov6 = (~(Iladt6 & Z1oov6)); +assign Okoov6 = (Cloov6 & Jloov6); +assign Jloov6 = (Qg2nv6 | S1oov6); +assign S1oov6 = (~(Qmnov6 | Odoov6)); +assign Odoov6 = (Qloov6 & Cgc7z6[0]); +assign Cloov6 = (Z8oov6 | Ennov6); +assign Ennov6 = (G2oov6 & Pj1ov6); +assign Vdoov6 = (X6xnv6 & Xloov6); +assign Evj8v6 = (Wj1ov6 ? Emoov6 : Fsc7z6[0]); +assign Xuj8v6 = (~(Lmoov6 & Smoov6)); +assign Smoov6 = (~(N8xnv6 & Emoov6)); +assign Lmoov6 = (~(Ywcdt6 & M4xnv6)); +assign Quj8v6 = (Zmoov6 & Gnoov6); +assign Gnoov6 = (Nnoov6 & Unoov6); +assign Unoov6 = (Booov6 & Nx0ov6); +assign Booov6 = (Iooov6 & G2oov6); +assign Nnoov6 = (~(Sugov6 | S1wnv6)); +assign Zmoov6 = (Pooov6 & Wooov6); +assign Wooov6 = (Dpoov6 & Gpmov6); +assign Dpoov6 = (V5ddt6 | IFLUSH); +assign Juj8v6 = (Rpoov6 ? P6d7z6[1] : Kpoov6); +assign Kpoov6 = (Ypoov6 & P6d7z6[0]); +assign Cuj8v6 = (As9ov6 ? L9d7z6[3] : Ujnet6); +assign Vtj8v6 = (Rpoov6 ? P6d7z6[0] : Fqoov6); +assign Fqoov6 = (Mqoov6 | P6d7z6[2]); +assign Otj8v6 = (Tqoov6 ? L9d7z6[0] : Tr9ov6); +assign Htj8v6 = (Tqoov6 ? L9d7z6[1] : Ujnet6); +assign Atj8v6 = (Rpoov6 ? P6d7z6[2] : Aroov6); +assign Rpoov6 = (Hroov6 & Ij1ov6); +assign Hroov6 = (~(Mqoov6 & Oroov6)); +assign Oroov6 = (~(Vroov6 & P6d7z6[0])); +assign Mqoov6 = (!Ypoov6); +assign Aroov6 = (Ypoov6 & P6d7z6[1]); +assign Ypoov6 = (Vroov6 & Csoov6); +assign Csoov6 = (Jsoov6 & Qsoov6); +assign Vroov6 = (D61ov6 & Iwnov6); +assign Tsj8v6 = (~(Xsoov6 & Etoov6)); +assign Etoov6 = (~(Tr9ov6 & H5xnv6)); +assign Xsoov6 = (~(O5xnv6 & L9d7z6[4])); +assign Msj8v6 = (~(Ltoov6 & Stoov6)); +assign Stoov6 = (Ztoov6 & Guoov6); +assign Guoov6 = (Nuoov6 & Uuoov6); +assign Uuoov6 = (~(Bvoov6 & D9o7v6)); +assign Nuoov6 = (Ivoov6 & Pvoov6); +assign Pvoov6 = (~(Byc7z6[16] & Wvoov6)); +assign Ivoov6 = (~(Dwoov6 & N6znv6)); +assign Ztoov6 = (Kwoov6 & Rwoov6); +assign Rwoov6 = (~(X91ov6 & Ke48v6)); +assign Kwoov6 = (~(Ea1ov6 & Nvs7v6)); +assign Ltoov6 = (Ywoov6 & Fxoov6); +assign Fxoov6 = (Mxoov6 & Txoov6); +assign Txoov6 = (~(Nb1ov6 & De48v6)); +assign Mxoov6 = (~(Byc7z6[0] & Ub1ov6)); +assign Ywoov6 = (Ayoov6 & Hyoov6); +assign Hyoov6 = (~(Pc1ov6 & Kaxnv6)); +assign Ayoov6 = (~(Zec7z6[0] & Wc1ov6)); +assign Fsj8v6 = (~(Oyoov6 & Vyoov6)); +assign Vyoov6 = (Czoov6 & Jzoov6); +assign Jzoov6 = (Qzoov6 & Xzoov6); +assign Xzoov6 = (~(A81ov6 & Rl48v6)); +assign Qzoov6 = (E0pov6 & L0pov6); +assign L0pov6 = (~(Byc7z6[14] & V81ov6)); +assign E0pov6 = (~(C91ov6 & Geynv6)); +assign Czoov6 = (S0pov6 & Z0pov6); +assign Z0pov6 = (~(X91ov6 & Gos7v6)); +assign S0pov6 = (~(Ea1ov6 & R9o7v6)); +assign Oyoov6 = (G1pov6 & N1pov6); +assign N1pov6 = (U1pov6 & B2pov6); +assign B2pov6 = (~(Nb1ov6 & K9o7v6)); +assign U1pov6 = (~(Byc7z6[30] & Ub1ov6)); +assign G1pov6 = (I2pov6 & P2pov6); +assign P2pov6 = (~(Pc1ov6 & Zexnv6)); +assign I2pov6 = (~(Zec7z6[30] & Wc1ov6)); +assign Yrj8v6 = (~(W2pov6 & D3pov6)); +assign D3pov6 = (K3pov6 & R3pov6); +assign R3pov6 = (Y3pov6 & F4pov6); +assign F4pov6 = (~(A81ov6 & Kl48v6)); +assign Y3pov6 = (M4pov6 & T4pov6); +assign T4pov6 = (~(Byc7z6[13] & V81ov6)); +assign M4pov6 = (~(C91ov6 & Viynv6)); +assign K3pov6 = (A5pov6 & H5pov6); +assign H5pov6 = (~(X91ov6 & Uos7v6)); +assign A5pov6 = (~(Ea1ov6 & Dl48v6)); +assign W2pov6 = (O5pov6 & V5pov6); +assign V5pov6 = (C6pov6 & J6pov6); +assign J6pov6 = (~(Nb1ov6 & Nos7v6)); +assign C6pov6 = (~(Byc7z6[29] & Ub1ov6)); +assign O5pov6 = (Q6pov6 & X6pov6); +assign X6pov6 = (~(Pc1ov6 & Ojxnv6)); +assign Q6pov6 = (~(Zec7z6[29] & Wc1ov6)); +assign Rrj8v6 = (~(E7pov6 & L7pov6)); +assign L7pov6 = (S7pov6 & Z7pov6); +assign Z7pov6 = (G8pov6 & N8pov6); +assign N8pov6 = (~(A81ov6 & Wk48v6)); +assign G8pov6 = (U8pov6 & B9pov6); +assign B9pov6 = (~(Byc7z6[12] & V81ov6)); +assign U8pov6 = (~(C91ov6 & Knynv6)); +assign S7pov6 = (I9pov6 & P9pov6); +assign P9pov6 = (~(X91ov6 & Ips7v6)); +assign I9pov6 = (~(Ea1ov6 & Pk48v6)); +assign E7pov6 = (W9pov6 & Dapov6); +assign Dapov6 = (Kapov6 & Rapov6); +assign Rapov6 = (~(Nb1ov6 & Bps7v6)); +assign Kapov6 = (~(Byc7z6[28] & Ub1ov6)); +assign W9pov6 = (Yapov6 & Fbpov6); +assign Fbpov6 = (~(Pc1ov6 & Doxnv6)); +assign Yapov6 = (~(Zec7z6[28] & Wc1ov6)); +assign Krj8v6 = (~(Mbpov6 & Tbpov6)); +assign Tbpov6 = (Acpov6 & Hcpov6); +assign Hcpov6 = (Ocpov6 & Vcpov6); +assign Vcpov6 = (~(A81ov6 & Ik48v6)); +assign Ocpov6 = (Cdpov6 & Jdpov6); +assign Jdpov6 = (~(Byc7z6[11] & V81ov6)); +assign Cdpov6 = (~(C91ov6 & Zrynv6)); +assign Acpov6 = (Qdpov6 & Xdpov6); +assign Xdpov6 = (~(X91ov6 & Wps7v6)); +assign Qdpov6 = (~(Ea1ov6 & Bk48v6)); +assign Mbpov6 = (Eepov6 & Lepov6); +assign Lepov6 = (Sepov6 & Zepov6); +assign Zepov6 = (~(Nb1ov6 & Pps7v6)); +assign Sepov6 = (~(Byc7z6[27] & Ub1ov6)); +assign Eepov6 = (Gfpov6 & Nfpov6); +assign Nfpov6 = (~(Pc1ov6 & Ssxnv6)); +assign Gfpov6 = (~(Zec7z6[27] & Wc1ov6)); +assign Drj8v6 = (~(Ufpov6 & Bgpov6)); +assign Bgpov6 = (Igpov6 & Pgpov6); +assign Pgpov6 = (Wgpov6 & Dhpov6); +assign Dhpov6 = (~(A81ov6 & Uj48v6)); +assign Wgpov6 = (Khpov6 & Rhpov6); +assign Rhpov6 = (~(Byc7z6[10] & V81ov6)); +assign Khpov6 = (~(C91ov6 & Owynv6)); +assign Igpov6 = (Yhpov6 & Fipov6); +assign Fipov6 = (~(X91ov6 & Kqs7v6)); +assign Yhpov6 = (~(Ea1ov6 & Nj48v6)); +assign Ufpov6 = (Mipov6 & Tipov6); +assign Tipov6 = (Ajpov6 & Hjpov6); +assign Hjpov6 = (~(Nb1ov6 & Dqs7v6)); +assign Ajpov6 = (~(Byc7z6[26] & Ub1ov6)); +assign Mipov6 = (Ojpov6 & Vjpov6); +assign Vjpov6 = (~(Pc1ov6 & Hxxnv6)); +assign Ojpov6 = (~(Zec7z6[26] & Wc1ov6)); +assign Wqj8v6 = (~(Ckpov6 & Jkpov6)); +assign Jkpov6 = (Qkpov6 & Xkpov6); +assign Xkpov6 = (Elpov6 & Llpov6); +assign Llpov6 = (~(A81ov6 & Gj48v6)); +assign Elpov6 = (Slpov6 & Zlpov6); +assign Zlpov6 = (~(Byc7z6[9] & V81ov6)); +assign Slpov6 = (~(C91ov6 & D1znv6)); +assign Qkpov6 = (Gmpov6 & Nmpov6); +assign Nmpov6 = (~(X91ov6 & Yqs7v6)); +assign Gmpov6 = (~(Ea1ov6 & Zi48v6)); +assign Ckpov6 = (Umpov6 & Bnpov6); +assign Bnpov6 = (Inpov6 & Pnpov6); +assign Pnpov6 = (~(Nb1ov6 & Rqs7v6)); +assign Inpov6 = (~(Byc7z6[25] & Ub1ov6)); +assign Umpov6 = (Wnpov6 & Dopov6); +assign Dopov6 = (~(Pc1ov6 & W1ynv6)); +assign Wnpov6 = (~(Zec7z6[25] & Wc1ov6)); +assign Pqj8v6 = (~(Kopov6 & Ropov6)); +assign Ropov6 = (Yopov6 & Fppov6); +assign Fppov6 = (Mppov6 & Tppov6); +assign Tppov6 = (~(A81ov6 & Si48v6)); +assign Mppov6 = (Aqpov6 & Hqpov6); +assign Hqpov6 = (~(Byc7z6[8] & V81ov6)); +assign Aqpov6 = (~(C91ov6 & S5znv6)); +assign Yopov6 = (Oqpov6 & Vqpov6); +assign Vqpov6 = (~(X91ov6 & Mrs7v6)); +assign Oqpov6 = (~(Ea1ov6 & Li48v6)); +assign Kopov6 = (Crpov6 & Jrpov6); +assign Jrpov6 = (Qrpov6 & Xrpov6); +assign Xrpov6 = (~(Nb1ov6 & Frs7v6)); +assign Qrpov6 = (~(Byc7z6[24] & Ub1ov6)); +assign Crpov6 = (Espov6 & Lspov6); +assign Lspov6 = (~(Pc1ov6 & P9xnv6)); +assign Espov6 = (~(Zec7z6[24] & Wc1ov6)); +assign Iqj8v6 = (~(Sspov6 & Zspov6)); +assign Zspov6 = (Gtpov6 & Ntpov6); +assign Ntpov6 = (Utpov6 & Bupov6); +assign Bupov6 = (~(A81ov6 & Ei48v6)); +assign Utpov6 = (Iupov6 & Pupov6); +assign Pupov6 = (~(Byc7z6[7] & V81ov6)); +assign Iupov6 = (~(C91ov6 & N1xnv6)); +assign Gtpov6 = (Wupov6 & Dvpov6); +assign Dvpov6 = (~(X91ov6 & Ass7v6)); +assign Wupov6 = (~(Ea1ov6 & Xh48v6)); +assign Sspov6 = (Kvpov6 & Rvpov6); +assign Rvpov6 = (Yvpov6 & Fwpov6); +assign Fwpov6 = (~(Nb1ov6 & Trs7v6)); +assign Yvpov6 = (~(Byc7z6[23] & Ub1ov6)); +assign Kvpov6 = (Mwpov6 & Twpov6); +assign Twpov6 = (~(Pc1ov6 & Maynv6)); +assign Mwpov6 = (~(Zec7z6[23] & Wc1ov6)); +assign Bqj8v6 = (~(Axpov6 & Hxpov6)); +assign Hxpov6 = (Oxpov6 & Vxpov6); +assign Vxpov6 = (Cypov6 & Jypov6); +assign Jypov6 = (~(A81ov6 & Qh48v6)); +assign Cypov6 = (Qypov6 & Xypov6); +assign Xypov6 = (~(Byc7z6[6] & V81ov6)); +assign Qypov6 = (~(C91ov6 & Eexnv6)); +assign Oxpov6 = (Ezpov6 & Lzpov6); +assign Lzpov6 = (~(X91ov6 & Oss7v6)); +assign Ezpov6 = (~(Ea1ov6 & Jh48v6)); +assign Axpov6 = (Szpov6 & Zzpov6); +assign Zzpov6 = (G0qov6 & N0qov6); +assign N0qov6 = (~(Nb1ov6 & Hss7v6)); +assign G0qov6 = (~(Byc7z6[22] & Ub1ov6)); +assign Szpov6 = (U0qov6 & B1qov6); +assign B1qov6 = (~(Pc1ov6 & Bfynv6)); +assign U0qov6 = (~(Zec7z6[22] & Wc1ov6)); +assign Upj8v6 = (~(I1qov6 & P1qov6)); +assign P1qov6 = (W1qov6 & D2qov6); +assign D2qov6 = (K2qov6 & R2qov6); +assign R2qov6 = (~(A81ov6 & Ch48v6)); +assign K2qov6 = (Y2qov6 & F3qov6); +assign F3qov6 = (~(Byc7z6[5] & V81ov6)); +assign Y2qov6 = (~(C91ov6 & Tixnv6)); +assign W1qov6 = (M3qov6 & T3qov6); +assign T3qov6 = (~(X91ov6 & Cts7v6)); +assign M3qov6 = (~(Ea1ov6 & Vg48v6)); +assign I1qov6 = (A4qov6 & H4qov6); +assign H4qov6 = (O4qov6 & V4qov6); +assign V4qov6 = (~(Nb1ov6 & Vss7v6)); +assign O4qov6 = (~(Byc7z6[21] & Ub1ov6)); +assign A4qov6 = (C5qov6 & J5qov6); +assign J5qov6 = (~(Pc1ov6 & Qjynv6)); +assign C5qov6 = (~(Zec7z6[21] & Wc1ov6)); +assign Npj8v6 = (~(Q5qov6 & X5qov6)); +assign X5qov6 = (E6qov6 & L6qov6); +assign L6qov6 = (S6qov6 & Z6qov6); +assign Z6qov6 = (~(A81ov6 & Og48v6)); +assign S6qov6 = (G7qov6 & N7qov6); +assign N7qov6 = (~(Byc7z6[4] & V81ov6)); +assign G7qov6 = (~(C91ov6 & Inxnv6)); +assign E6qov6 = (U7qov6 & B8qov6); +assign B8qov6 = (~(X91ov6 & Qts7v6)); +assign U7qov6 = (~(Ea1ov6 & Hg48v6)); +assign Q5qov6 = (I8qov6 & P8qov6); +assign P8qov6 = (W8qov6 & D9qov6); +assign D9qov6 = (~(Nb1ov6 & Jts7v6)); +assign W8qov6 = (~(Byc7z6[20] & Ub1ov6)); +assign I8qov6 = (K9qov6 & R9qov6); +assign R9qov6 = (~(Pc1ov6 & Foynv6)); +assign K9qov6 = (~(Zec7z6[20] & Wc1ov6)); +assign Gpj8v6 = (~(Y9qov6 & Faqov6)); +assign Faqov6 = (Maqov6 & Taqov6); +assign Taqov6 = (Abqov6 & Hbqov6); +assign Hbqov6 = (~(A81ov6 & Ag48v6)); +assign Abqov6 = (Obqov6 & Vbqov6); +assign Vbqov6 = (~(Byc7z6[3] & V81ov6)); +assign Obqov6 = (~(C91ov6 & Xrxnv6)); +assign Maqov6 = (Ccqov6 & Jcqov6); +assign Jcqov6 = (~(X91ov6 & Eus7v6)); +assign Ccqov6 = (~(Ea1ov6 & Tf48v6)); +assign Y9qov6 = (Qcqov6 & Xcqov6); +assign Xcqov6 = (Edqov6 & Ldqov6); +assign Ldqov6 = (~(Nb1ov6 & Xts7v6)); +assign Edqov6 = (~(Byc7z6[19] & Ub1ov6)); +assign Qcqov6 = (Sdqov6 & Zdqov6); +assign Zdqov6 = (~(Pc1ov6 & Usynv6)); +assign Sdqov6 = (~(Zec7z6[19] & Wc1ov6)); +assign Zoj8v6 = (~(Geqov6 & Neqov6)); +assign Neqov6 = (Ueqov6 & Bfqov6); +assign Bfqov6 = (Ifqov6 & Pfqov6); +assign Pfqov6 = (~(A81ov6 & Mf48v6)); +assign Ifqov6 = (Wfqov6 & Dgqov6); +assign Dgqov6 = (~(Byc7z6[2] & V81ov6)); +assign Wfqov6 = (~(C91ov6 & Mwxnv6)); +assign Ueqov6 = (Kgqov6 & Rgqov6); +assign Rgqov6 = (~(X91ov6 & Sus7v6)); +assign Kgqov6 = (~(Ea1ov6 & Ff48v6)); +assign Geqov6 = (Ygqov6 & Fhqov6); +assign Fhqov6 = (Mhqov6 & Thqov6); +assign Thqov6 = (~(Nb1ov6 & Lus7v6)); +assign Mhqov6 = (~(Byc7z6[18] & Ub1ov6)); +assign Ygqov6 = (Aiqov6 & Hiqov6); +assign Hiqov6 = (~(Pc1ov6 & Jxynv6)); +assign Aiqov6 = (~(Zec7z6[18] & Wc1ov6)); +assign Soj8v6 = (~(Oiqov6 & Viqov6)); +assign Viqov6 = (Cjqov6 & Jjqov6); +assign Jjqov6 = (Qjqov6 & Xjqov6); +assign Xjqov6 = (~(A81ov6 & Ye48v6)); +assign Qjqov6 = (Ekqov6 & Lkqov6); +assign Lkqov6 = (~(Byc7z6[1] & V81ov6)); +assign Ekqov6 = (~(C91ov6 & B1ynv6)); +assign Cjqov6 = (Skqov6 & Zkqov6); +assign Zkqov6 = (~(X91ov6 & Gvs7v6)); +assign Skqov6 = (~(Ea1ov6 & Re48v6)); +assign Oiqov6 = (Glqov6 & Nlqov6); +assign Nlqov6 = (Ulqov6 & Bmqov6); +assign Bmqov6 = (~(Nb1ov6 & Zus7v6)); +assign Ulqov6 = (~(Byc7z6[17] & Ub1ov6)); +assign Glqov6 = (Imqov6 & Pmqov6); +assign Pmqov6 = (~(Pc1ov6 & Y1znv6)); +assign Imqov6 = (~(Zec7z6[17] & Wc1ov6)); +assign Loj8v6 = (~(Wmqov6 & Dnqov6)); +assign Dnqov6 = (Knqov6 & Rnqov6); +assign Rnqov6 = (Ynqov6 & Foqov6); +assign Foqov6 = (~(A81ov6 & Ke48v6)); +assign Ynqov6 = (Moqov6 & Toqov6); +assign Toqov6 = (~(Byc7z6[0] & V81ov6)); +assign V81ov6 = (~(Apqov6 | Hpqov6)); +assign Moqov6 = (~(C91ov6 & Kaxnv6)); +assign C91ov6 = (~(Opqov6 | Apqov6)); +assign Apqov6 = (!Bvoov6); +assign Knqov6 = (Vpqov6 & Cqqov6); +assign Cqqov6 = (~(X91ov6 & Nvs7v6)); +assign Vpqov6 = (~(Ea1ov6 & De48v6)); +assign Wmqov6 = (Jqqov6 & Qqqov6); +assign Qqqov6 = (Xqqov6 & Erqov6); +assign Erqov6 = (~(Nb1ov6 & D9o7v6)); +assign Xqqov6 = (~(Byc7z6[16] & Ub1ov6)); +assign Jqqov6 = (Lrqov6 & Srqov6); +assign Srqov6 = (~(Pc1ov6 & N6znv6)); +assign Lrqov6 = (~(Zec7z6[16] & Wc1ov6)); +assign Eoj8v6 = (~(Zrqov6 & Gsqov6)); +assign Gsqov6 = (Nsqov6 & Usqov6); +assign Usqov6 = (Btqov6 & Itqov6); +assign Itqov6 = (~(Bvoov6 & P8o7v6)); +assign Btqov6 = (Ptqov6 & Wtqov6); +assign Wtqov6 = (~(Wvoov6 & Byc7z6[31])); +assign Ptqov6 = (~(Dwoov6 & P2xnv6)); +assign Nsqov6 = (Duqov6 & Kuqov6); +assign Kuqov6 = (~(X91ov6 & Y9o7v6)); +assign Duqov6 = (~(Ea1ov6 & Fao7v6)); +assign Zrqov6 = (Ruqov6 & Yuqov6); +assign Yuqov6 = (Fvqov6 & Mvqov6); +assign Mvqov6 = (~(Nb1ov6 & W8o7v6)); +assign Fvqov6 = (~(Ub1ov6 & Byc7z6[15])); +assign Ruqov6 = (Tvqov6 & Awqov6); +assign Awqov6 = (~(Pc1ov6 & R9ynv6)); +assign Tvqov6 = (~(Zec7z6[15] & Wc1ov6)); +assign Xnj8v6 = (~(Hwqov6 & Owqov6)); +assign Owqov6 = (Vwqov6 & Cxqov6); +assign Cxqov6 = (Jxqov6 & Qxqov6); +assign Qxqov6 = (~(Bvoov6 & K9o7v6)); +assign Jxqov6 = (Xxqov6 & Eyqov6); +assign Eyqov6 = (~(Byc7z6[30] & Wvoov6)); +assign Xxqov6 = (~(Dwoov6 & Zexnv6)); +assign Vwqov6 = (Lyqov6 & Syqov6); +assign Syqov6 = (~(X91ov6 & Rl48v6)); +assign Lyqov6 = (~(Ea1ov6 & Gos7v6)); +assign Hwqov6 = (Zyqov6 & Gzqov6); +assign Gzqov6 = (Nzqov6 & Uzqov6); +assign Uzqov6 = (~(Nb1ov6 & R9o7v6)); +assign Nzqov6 = (~(Byc7z6[14] & Ub1ov6)); +assign Zyqov6 = (B0rov6 & I0rov6); +assign I0rov6 = (~(Pc1ov6 & Geynv6)); +assign B0rov6 = (~(Zec7z6[14] & Wc1ov6)); +assign Qnj8v6 = (~(P0rov6 & W0rov6)); +assign W0rov6 = (D1rov6 & K1rov6); +assign K1rov6 = (R1rov6 & Y1rov6); +assign Y1rov6 = (~(Bvoov6 & Nos7v6)); +assign R1rov6 = (F2rov6 & M2rov6); +assign M2rov6 = (~(Byc7z6[29] & Wvoov6)); +assign F2rov6 = (~(Dwoov6 & Ojxnv6)); +assign D1rov6 = (T2rov6 & A3rov6); +assign A3rov6 = (~(X91ov6 & Kl48v6)); +assign T2rov6 = (~(Ea1ov6 & Uos7v6)); +assign P0rov6 = (H3rov6 & O3rov6); +assign O3rov6 = (V3rov6 & C4rov6); +assign C4rov6 = (~(Nb1ov6 & Dl48v6)); +assign V3rov6 = (~(Byc7z6[13] & Ub1ov6)); +assign H3rov6 = (J4rov6 & Q4rov6); +assign Q4rov6 = (~(Pc1ov6 & Viynv6)); +assign J4rov6 = (~(Zec7z6[13] & Wc1ov6)); +assign Jnj8v6 = (~(X4rov6 & E5rov6)); +assign E5rov6 = (L5rov6 & S5rov6); +assign S5rov6 = (Z5rov6 & G6rov6); +assign G6rov6 = (~(Bvoov6 & Bps7v6)); +assign Z5rov6 = (N6rov6 & U6rov6); +assign U6rov6 = (~(Byc7z6[28] & Wvoov6)); +assign N6rov6 = (~(Dwoov6 & Doxnv6)); +assign L5rov6 = (B7rov6 & I7rov6); +assign I7rov6 = (~(X91ov6 & Wk48v6)); +assign B7rov6 = (~(Ea1ov6 & Ips7v6)); +assign X4rov6 = (P7rov6 & W7rov6); +assign W7rov6 = (D8rov6 & K8rov6); +assign K8rov6 = (~(Nb1ov6 & Pk48v6)); +assign D8rov6 = (~(Byc7z6[12] & Ub1ov6)); +assign P7rov6 = (R8rov6 & Y8rov6); +assign Y8rov6 = (~(Pc1ov6 & Knynv6)); +assign R8rov6 = (~(Zec7z6[12] & Wc1ov6)); +assign Cnj8v6 = (~(F9rov6 & M9rov6)); +assign M9rov6 = (T9rov6 & Aarov6); +assign Aarov6 = (Harov6 & Oarov6); +assign Oarov6 = (~(Bvoov6 & Pps7v6)); +assign Harov6 = (Varov6 & Cbrov6); +assign Cbrov6 = (~(Byc7z6[27] & Wvoov6)); +assign Varov6 = (~(Dwoov6 & Ssxnv6)); +assign T9rov6 = (Jbrov6 & Qbrov6); +assign Qbrov6 = (~(X91ov6 & Ik48v6)); +assign Jbrov6 = (~(Ea1ov6 & Wps7v6)); +assign F9rov6 = (Xbrov6 & Ecrov6); +assign Ecrov6 = (Lcrov6 & Scrov6); +assign Scrov6 = (~(Nb1ov6 & Bk48v6)); +assign Lcrov6 = (~(Byc7z6[11] & Ub1ov6)); +assign Xbrov6 = (Zcrov6 & Gdrov6); +assign Gdrov6 = (~(Pc1ov6 & Zrynv6)); +assign Zcrov6 = (~(Zec7z6[11] & Wc1ov6)); +assign Vmj8v6 = (Vs9ov6 ? Qwddt6 : A4a7z6); +assign Omj8v6 = (!Ndrov6); +assign Ndrov6 = (N3onv6 ? Udrov6 : K397z6); +assign Udrov6 = (~(Qwddt6 & Berov6)); +assign Berov6 = (~(Zhbdt6 & Ierov6)); +assign Hmj8v6 = (~(Perov6 & Werov6)); +assign Werov6 = (~(Snvnv6 & Ovbdt6)); +assign Perov6 = (~(M5e7z6[1] & Dcnov6)); +assign Amj8v6 = (~(Dfrov6 & Kfrov6)); +assign Kfrov6 = (Rfrov6 & Yfrov6); +assign Yfrov6 = (Fgrov6 & Mgrov6); +assign Mgrov6 = (~(Bvoov6 & Dqs7v6)); +assign Fgrov6 = (Tgrov6 & Ahrov6); +assign Ahrov6 = (~(Byc7z6[26] & Wvoov6)); +assign Tgrov6 = (~(Dwoov6 & Hxxnv6)); +assign Rfrov6 = (Hhrov6 & Ohrov6); +assign Ohrov6 = (~(X91ov6 & Uj48v6)); +assign Hhrov6 = (~(Ea1ov6 & Kqs7v6)); +assign Dfrov6 = (Vhrov6 & Cirov6); +assign Cirov6 = (Jirov6 & Qirov6); +assign Qirov6 = (~(Nb1ov6 & Nj48v6)); +assign Jirov6 = (~(Byc7z6[10] & Ub1ov6)); +assign Vhrov6 = (Xirov6 & Ejrov6); +assign Ejrov6 = (~(Pc1ov6 & Owynv6)); +assign Xirov6 = (~(Zec7z6[10] & Wc1ov6)); +assign Tlj8v6 = (~(Ljrov6 & Sjrov6)); +assign Sjrov6 = (Zjrov6 & Gkrov6); +assign Gkrov6 = (Nkrov6 & Ukrov6); +assign Ukrov6 = (~(Bvoov6 & Rqs7v6)); +assign Nkrov6 = (Blrov6 & Ilrov6); +assign Ilrov6 = (~(Byc7z6[25] & Wvoov6)); +assign Blrov6 = (~(Dwoov6 & W1ynv6)); +assign Zjrov6 = (Plrov6 & Wlrov6); +assign Wlrov6 = (~(X91ov6 & Gj48v6)); +assign Plrov6 = (~(Ea1ov6 & Yqs7v6)); +assign Ljrov6 = (Dmrov6 & Kmrov6); +assign Kmrov6 = (Rmrov6 & Ymrov6); +assign Ymrov6 = (~(Nb1ov6 & Zi48v6)); +assign Rmrov6 = (~(Byc7z6[9] & Ub1ov6)); +assign Dmrov6 = (Fnrov6 & Mnrov6); +assign Mnrov6 = (~(Pc1ov6 & D1znv6)); +assign Fnrov6 = (~(Zec7z6[9] & Wc1ov6)); +assign Mlj8v6 = (~(Tnrov6 & Aorov6)); +assign Aorov6 = (Horov6 & Oorov6); +assign Oorov6 = (Vorov6 & Cprov6); +assign Cprov6 = (~(Bvoov6 & Frs7v6)); +assign Vorov6 = (Jprov6 & Qprov6); +assign Qprov6 = (~(Byc7z6[24] & Wvoov6)); +assign Jprov6 = (~(Dwoov6 & P9xnv6)); +assign Horov6 = (Xprov6 & Eqrov6); +assign Eqrov6 = (~(X91ov6 & Si48v6)); +assign Xprov6 = (~(Ea1ov6 & Mrs7v6)); +assign Tnrov6 = (Lqrov6 & Sqrov6); +assign Sqrov6 = (Zqrov6 & Grrov6); +assign Grrov6 = (~(Nb1ov6 & Li48v6)); +assign Zqrov6 = (~(Byc7z6[8] & Ub1ov6)); +assign Lqrov6 = (Nrrov6 & Urrov6); +assign Urrov6 = (~(Pc1ov6 & S5znv6)); +assign Nrrov6 = (~(Zec7z6[8] & Wc1ov6)); +assign Flj8v6 = (~(Bsrov6 & Isrov6)); +assign Isrov6 = (~(Uobdt6 & Dcnov6)); +assign Ykj8v6 = (~(Psrov6 & Wsrov6)); +assign Wsrov6 = (Dtrov6 & Ktrov6); +assign Ktrov6 = (Rtrov6 & Ytrov6); +assign Ytrov6 = (~(Bvoov6 & Trs7v6)); +assign Rtrov6 = (Furov6 & Murov6); +assign Murov6 = (~(Byc7z6[23] & Wvoov6)); +assign Furov6 = (~(Dwoov6 & Maynv6)); +assign Dtrov6 = (Turov6 & Avrov6); +assign Avrov6 = (~(X91ov6 & Ei48v6)); +assign Turov6 = (~(Ea1ov6 & Ass7v6)); +assign Psrov6 = (Hvrov6 & Ovrov6); +assign Ovrov6 = (Vvrov6 & Cwrov6); +assign Cwrov6 = (~(Nb1ov6 & Xh48v6)); +assign Vvrov6 = (~(Byc7z6[7] & Ub1ov6)); +assign Hvrov6 = (Jwrov6 & Qwrov6); +assign Qwrov6 = (~(Pc1ov6 & N1xnv6)); +assign Jwrov6 = (~(Zec7z6[7] & Wc1ov6)); +assign Rkj8v6 = (~(Xwrov6 & Exrov6)); +assign Exrov6 = (Lxrov6 & Sxrov6); +assign Lxrov6 = (~(Zxrov6 & Zec7z6[7])); +assign Xwrov6 = (Gyrov6 & Nyrov6); +assign Nyrov6 = (~(Uyrov6 & Zec7z6[9])); +assign Gyrov6 = (~(Ide7z6[1] & Vs9ov6)); +assign Kkj8v6 = (~(Bzrov6 & Izrov6)); +assign Izrov6 = (Pzrov6 & Sxrov6); +assign Pzrov6 = (~(Zxrov6 & Zec7z6[8])); +assign Bzrov6 = (Wzrov6 & D0sov6); +assign D0sov6 = (~(Uyrov6 & Zec7z6[10])); +assign Wzrov6 = (~(Ide7z6[2] & Vs9ov6)); +assign Dkj8v6 = (~(K0sov6 & R0sov6)); +assign R0sov6 = (Y0sov6 & Sxrov6); +assign Sxrov6 = (~(F1sov6 & M1sov6)); +assign M1sov6 = (T1sov6 & A2sov6); +assign F1sov6 = (N3onv6 & H2sov6); +assign Y0sov6 = (~(Zxrov6 & Zec7z6[9])); +assign K0sov6 = (O2sov6 & V2sov6); +assign V2sov6 = (~(Uyrov6 & Zec7z6[11])); +assign O2sov6 = (~(Ide7z6[3] & Vs9ov6)); +assign Wjj8v6 = (~(C3sov6 & J3sov6)); +assign J3sov6 = (~(K7e7z6[0] & Dcnov6)); +assign C3sov6 = (Q3sov6 & X3sov6); +assign Q3sov6 = (~(E4sov6 & L4sov6)); +assign E4sov6 = (N3onv6 & Zec7z6[30]); +assign Pjj8v6 = (~(X3sov6 & S4sov6)); +assign S4sov6 = (~(K7e7z6[1] & Dcnov6)); +assign X3sov6 = (~(Z4sov6 & G5sov6)); +assign Z4sov6 = (N3onv6 & Zec7z6[7]); +assign Ijj8v6 = (~(N5sov6 & U5sov6)); +assign U5sov6 = (B6sov6 & I6sov6); +assign I6sov6 = (P6sov6 & W6sov6); +assign W6sov6 = (~(Bvoov6 & Hss7v6)); +assign P6sov6 = (D7sov6 & K7sov6); +assign K7sov6 = (~(Byc7z6[22] & Wvoov6)); +assign D7sov6 = (~(Dwoov6 & Bfynv6)); +assign B6sov6 = (R7sov6 & Y7sov6); +assign Y7sov6 = (~(X91ov6 & Qh48v6)); +assign R7sov6 = (~(Ea1ov6 & Oss7v6)); +assign N5sov6 = (F8sov6 & M8sov6); +assign M8sov6 = (T8sov6 & A9sov6); +assign A9sov6 = (~(Nb1ov6 & Jh48v6)); +assign T8sov6 = (~(Byc7z6[6] & Ub1ov6)); +assign F8sov6 = (H9sov6 & O9sov6); +assign O9sov6 = (~(Pc1ov6 & Eexnv6)); +assign H9sov6 = (~(Zec7z6[6] & Wc1ov6)); +assign Bjj8v6 = (~(V9sov6 & Casov6)); +assign Casov6 = (Jasov6 & Qasov6); +assign Qasov6 = (~(Zxrov6 & Zec7z6[6])); +assign Zxrov6 = (~(H2sov6 | Vs9ov6)); +assign Jasov6 = (~(Uyrov6 & Zec7z6[8])); +assign Uyrov6 = (~(Vs9ov6 | T1sov6)); +assign V9sov6 = (Xasov6 & Ebsov6); +assign Ebsov6 = (~(Ide7z6[0] & Vs9ov6)); +assign Xasov6 = (~(Yxd7z6[0] & Zec7z6[11])); +assign Uij8v6 = (~(Lbsov6 & Sbsov6)); +assign Sbsov6 = (~(I5cdt6 & Dcnov6)); +assign Lbsov6 = (~(Zbsov6 & N3onv6)); +assign Nij8v6 = (~(Gcsov6 & Ncsov6)); +assign Ncsov6 = (Ucsov6 & Bdsov6); +assign Bdsov6 = (Idsov6 & Pdsov6); +assign Pdsov6 = (~(Bvoov6 & Vss7v6)); +assign Idsov6 = (Wdsov6 & Desov6); +assign Desov6 = (~(Byc7z6[21] & Wvoov6)); +assign Wdsov6 = (~(Dwoov6 & Qjynv6)); +assign Ucsov6 = (Kesov6 & Resov6); +assign Resov6 = (~(X91ov6 & Ch48v6)); +assign Kesov6 = (~(Ea1ov6 & Cts7v6)); +assign Gcsov6 = (Yesov6 & Ffsov6); +assign Ffsov6 = (Mfsov6 & Tfsov6); +assign Tfsov6 = (~(Nb1ov6 & Vg48v6)); +assign Mfsov6 = (~(Byc7z6[5] & Ub1ov6)); +assign Yesov6 = (Agsov6 & Hgsov6); +assign Hgsov6 = (~(Pc1ov6 & Tixnv6)); +assign Agsov6 = (~(Zec7z6[5] & Wc1ov6)); +assign Gij8v6 = (~(Ogsov6 & Vgsov6)); +assign Vgsov6 = (~(Chsov6 & Jhsov6)); +assign Chsov6 = (Snvnv6 & Zec7z6[0]); +assign Ogsov6 = (~(I9e7z6[1] & Dcnov6)); +assign Zhj8v6 = (~(Qhsov6 & Xhsov6)); +assign Xhsov6 = (Eisov6 & Lisov6); +assign Lisov6 = (Sisov6 & Zisov6); +assign Zisov6 = (~(Bvoov6 & Jts7v6)); +assign Sisov6 = (Gjsov6 & Njsov6); +assign Njsov6 = (~(Byc7z6[20] & Wvoov6)); +assign Gjsov6 = (~(Dwoov6 & Foynv6)); +assign Eisov6 = (Ujsov6 & Bksov6); +assign Bksov6 = (~(X91ov6 & Og48v6)); +assign Ujsov6 = (~(Ea1ov6 & Qts7v6)); +assign Qhsov6 = (Iksov6 & Pksov6); +assign Pksov6 = (Wksov6 & Dlsov6); +assign Dlsov6 = (~(Nb1ov6 & Hg48v6)); +assign Wksov6 = (~(Byc7z6[4] & Ub1ov6)); +assign Iksov6 = (Klsov6 & Rlsov6); +assign Rlsov6 = (~(Pc1ov6 & Inxnv6)); +assign Klsov6 = (~(Zec7z6[4] & Wc1ov6)); +assign Shj8v6 = (~(Ylsov6 & Fmsov6)); +assign Fmsov6 = (~(Mmsov6 & Tmsov6)); +assign Mmsov6 = (Ansov6 & Snvnv6); +assign Ylsov6 = (~(M5e7z6[0] & Dcnov6)); +assign Lhj8v6 = (~(Hnsov6 & Onsov6)); +assign Onsov6 = (~(Snvnv6 & Vnsov6)); +assign Vnsov6 = (~(Cosov6 & Josov6)); +assign Josov6 = (Qosov6 & Xosov6); +assign Qosov6 = (Epsov6 & Lpsov6); +assign Cosov6 = (Spsov6 & Zpsov6); +assign Spsov6 = (Gqsov6 & Nqsov6); +assign Nqsov6 = (Qtnov6 | O7onv6); +assign O7onv6 = (Uqsov6 & Brsov6); +assign Brsov6 = (Irsov6 & Prsov6); +assign Uqsov6 = (Wrsov6 & Dssov6); +assign Gqsov6 = (~(Tmsov6 & Kssov6)); +assign Hnsov6 = (~(Lwfdt6 & Vs9ov6)); +assign Ehj8v6 = (~(Rssov6 & Yssov6)); +assign Yssov6 = (~(Ftsov6 & Mtsov6)); +assign Ftsov6 = (Snvnv6 & Uqd7z6[20]); +assign Rssov6 = (~(M3e7z6[1] & Dcnov6)); +assign Xgj8v6 = (~(Ttsov6 & Ausov6)); +assign Ausov6 = (~(Husov6 & Mtsov6)); +assign Husov6 = (Snvnv6 & E9onv6); +assign Ttsov6 = (~(M3e7z6[0] & Dcnov6)); +assign Qgj8v6 = (~(Ousov6 & Vusov6)); +assign Vusov6 = (~(Cvsov6 & Jhsov6)); +assign Cvsov6 = (Snvnv6 & Zec7z6[4]); +assign Ousov6 = (~(I9e7z6[0] & Dcnov6)); +assign Jgj8v6 = (~(Jvsov6 & Qvsov6)); +assign Qvsov6 = (Xvsov6 & Ewsov6); +assign Ewsov6 = (Lwsov6 & Swsov6); +assign Swsov6 = (~(Bvoov6 & Xts7v6)); +assign Lwsov6 = (Zwsov6 & Gxsov6); +assign Gxsov6 = (~(Byc7z6[19] & Wvoov6)); +assign Zwsov6 = (~(Dwoov6 & Usynv6)); +assign Xvsov6 = (Nxsov6 & Uxsov6); +assign Uxsov6 = (~(X91ov6 & Ag48v6)); +assign Nxsov6 = (~(Ea1ov6 & Eus7v6)); +assign Jvsov6 = (Bysov6 & Iysov6); +assign Iysov6 = (Pysov6 & Wysov6); +assign Wysov6 = (~(Nb1ov6 & Tf48v6)); +assign Pysov6 = (~(Byc7z6[3] & Ub1ov6)); +assign Bysov6 = (Dzsov6 & Kzsov6); +assign Kzsov6 = (~(Pc1ov6 & Xrxnv6)); +assign Dzsov6 = (~(Zec7z6[3] & Wc1ov6)); +assign Cgj8v6 = (~(Rzsov6 & Yzsov6)); +assign Yzsov6 = (F0tov6 & M0tov6); +assign M0tov6 = (T0tov6 & A1tov6); +assign A1tov6 = (~(Bvoov6 & Lus7v6)); +assign T0tov6 = (H1tov6 & O1tov6); +assign O1tov6 = (~(Byc7z6[18] & Wvoov6)); +assign H1tov6 = (~(Dwoov6 & Jxynv6)); +assign F0tov6 = (V1tov6 & C2tov6); +assign C2tov6 = (~(X91ov6 & Mf48v6)); +assign V1tov6 = (~(Ea1ov6 & Sus7v6)); +assign Rzsov6 = (J2tov6 & Q2tov6); +assign Q2tov6 = (X2tov6 & E3tov6); +assign E3tov6 = (~(Nb1ov6 & Ff48v6)); +assign X2tov6 = (~(Byc7z6[2] & Ub1ov6)); +assign J2tov6 = (L3tov6 & S3tov6); +assign S3tov6 = (~(Pc1ov6 & Mwxnv6)); +assign L3tov6 = (~(Zec7z6[2] & Wc1ov6)); +assign Vfj8v6 = (~(Z3tov6 & G4tov6)); +assign G4tov6 = (N4tov6 & U4tov6); +assign U4tov6 = (B5tov6 & I5tov6); +assign I5tov6 = (~(Bvoov6 & Zus7v6)); +assign Bvoov6 = (~(P5tov6 | W5tov6)); +assign P5tov6 = (K6tov6 ? C3mnv6 : D6tov6); +assign B5tov6 = (R6tov6 & Y6tov6); +assign Y6tov6 = (~(Byc7z6[17] & Wvoov6)); +assign Wvoov6 = (~(F7tov6 | Hpqov6)); +assign R6tov6 = (~(Dwoov6 & Y1znv6)); +assign Dwoov6 = (~(F7tov6 | Opqov6)); +assign F7tov6 = (!A81ov6); +assign A81ov6 = (~(M7tov6 | W5tov6)); +assign M7tov6 = (K6tov6 ? K0mnv6 : T7tov6); +assign N4tov6 = (A8tov6 & H8tov6); +assign H8tov6 = (~(X91ov6 & Ye48v6)); +assign X91ov6 = (O8tov6 & V8tov6); +assign O8tov6 = (K6tov6 ? W6mnv6 : Bfd7z6[0]); +assign A8tov6 = (~(Ea1ov6 & Gvs7v6)); +assign Ea1ov6 = (~(C9tov6 | W5tov6)); +assign C9tov6 = (K6tov6 ? S4mnv6 : J9tov6); +assign Z3tov6 = (Q9tov6 & X9tov6); +assign X9tov6 = (Eatov6 & Latov6); +assign Latov6 = (~(Nb1ov6 & Re48v6)); +assign Nb1ov6 = (~(Satov6 | W5tov6)); +assign W5tov6 = (!V8tov6); +assign V8tov6 = (Zatov6 & Gbtov6); +assign Satov6 = (K6tov6 ? X3mnv6 : Nbtov6); +assign Eatov6 = (~(Byc7z6[1] & Ub1ov6)); +assign Ub1ov6 = (Ubtov6 & Zatov6); +assign Ubtov6 = (Bctov6 & Opqov6); +assign Q9tov6 = (Ictov6 & Pctov6); +assign Pctov6 = (~(Pc1ov6 & B1ynv6)); +assign Pc1ov6 = (Wctov6 & Hpqov6); +assign Wctov6 = (Zatov6 & Bctov6); +assign Bctov6 = (!Gbtov6); +assign Gbtov6 = (~(Ddtov6 | Mao7v6)); +assign Ddtov6 = (K6tov6 ? M1mnv6 : Bfd7z6[4]); +assign Zatov6 = (!Wc1ov6); +assign Ictov6 = (~(Zec7z6[1] & Wc1ov6)); +assign Wc1ov6 = (~(Kdtov6 & Rdtov6)); +assign Kdtov6 = (~(Ydtov6 & M8mnv6)); +assign Ydtov6 = (Ij1ov6 & Fetov6); +assign Ofj8v6 = (~(Metov6 & Tetov6)); +assign Tetov6 = (~(Aftov6 & Hftov6)); +assign Metov6 = (~(Ibe7z6[0] & Dcnov6)); +assign Hfj8v6 = (~(Oftov6 & Vftov6)); +assign Vftov6 = (~(Cgtov6 & Aftov6)); +assign Cgtov6 = (Ovbdt6 & Jgtov6); +assign Oftov6 = (~(Ibe7z6[1] & Dcnov6)); +assign Afj8v6 = (~(Qgtov6 & Xgtov6)); +assign Xgtov6 = (~(Ehtov6 & Aftov6)); +assign Qgtov6 = (~(Ibe7z6[2] & Dcnov6)); +assign Tej8v6 = (~(Lhtov6 & Shtov6)); +assign Shtov6 = (~(Zhtov6 & Aftov6)); +assign Aftov6 = (Gitov6 & Nitov6); +assign Lhtov6 = (~(Ibe7z6[3] & Dcnov6)); +assign Mej8v6 = (~(Uitov6 & Bjtov6)); +assign Bjtov6 = (~(Nitov6 & Ijtov6)); +assign Nitov6 = (Pjtov6 & Wjtov6); +assign Wjtov6 = (Dktov6 & Uqd7z6[20]); +assign Dktov6 = (Kktov6 & Rktov6); +assign Pjtov6 = (Tmsov6 & Snvnv6); +assign Uitov6 = (~(Ibe7z6[4] & Dcnov6)); +assign Fej8v6 = (~(Yktov6 & Fltov6)); +assign Fltov6 = (~(N3onv6 & Mltov6)); +assign Mltov6 = (~(Tltov6 & Amtov6)); +assign Yktov6 = (Hmtov6 | Sb77z6); +assign Ydj8v6 = (~(Omtov6 & Vmtov6)); +assign Vmtov6 = (Vs9ov6 | Cntov6); +assign Omtov6 = (~(I0c7z6[1] & Dcnov6)); +assign Rdj8v6 = (~(Jntov6 & Mmehw6)); +assign Mmehw6 = (Vs9ov6 | Tmehw6); +assign Jntov6 = (~(I0c7z6[0] & Dcnov6)); +assign Kdj8v6 = (Shmov6 ? Edh7z6[0] : Wbhnv6); +assign Ddj8v6 = (Uimov6 ? Gsb7z6[0] : Wbhnv6); +assign Wcj8v6 = (Shmov6 ? Edh7z6[1] : Anehw6); +assign Pcj8v6 = (Uimov6 ? Gsb7z6[1] : Anehw6); +assign Icj8v6 = (~(Hnehw6 & Onehw6)); +assign Onehw6 = (~(N3onv6 & Vnehw6)); +assign Vnehw6 = (~(Coehw6 & Joehw6)); +assign Joehw6 = (Qoehw6 & Xoehw6); +assign Xoehw6 = (Epehw6 & Lpehw6); +assign Lpehw6 = (~(Spehw6 & Zpehw6)); +assign Spehw6 = (~(Gqehw6 & Nqehw6)); +assign Epehw6 = (Uqehw6 | Zec7z6[7]); +assign Qoehw6 = (Brehw6 & Irehw6); +assign Irehw6 = (~(Prehw6 & Qtnov6)); +assign Brehw6 = (Wrehw6 | Dsehw6); +assign Coehw6 = (Ksehw6 & Rsehw6); +assign Rsehw6 = (Ysehw6 & Ftehw6); +assign Ftehw6 = (~(Mtehw6 & Ttehw6)); +assign Ysehw6 = (~(Auehw6 & Zec7z6[8])); +assign Ksehw6 = (Huehw6 & Ouehw6); +assign Ouehw6 = (~(Vuehw6 & Cvehw6)); +assign Hnehw6 = (~(Mrbdt6 & Dcnov6)); +assign Bcj8v6 = (Shmov6 ? Vt2et6 : Mrbdt6); +assign Ubj8v6 = (~(Jvehw6 & Qvehw6)); +assign Qvehw6 = (~(T3cdt6 & Dcnov6)); +assign Jvehw6 = (Vs9ov6 | Xvehw6); +assign Nbj8v6 = (~(Ewehw6 & Lwehw6)); +assign Lwehw6 = (~(Swehw6 & Snvnv6)); +assign Swehw6 = (~(Tmehw6 | Zwehw6)); +assign Tmehw6 = (Gxehw6 & Nxehw6); +assign Nxehw6 = (Uxehw6 & Byehw6); +assign Byehw6 = (Iyehw6 & Wrehw6); +assign Iyehw6 = (Pyehw6 & Wyehw6); +assign Uxehw6 = (Dzehw6 & Kzehw6); +assign Kzehw6 = (~(Uqd7z6[20] & Rzehw6)); +assign Rzehw6 = (~(Yzehw6 & F0fhw6)); +assign Dzehw6 = (~(M0fhw6 & Zec7z6[26])); +assign Gxehw6 = (T0fhw6 & A1fhw6); +assign A1fhw6 = (H1fhw6 & O1fhw6); +assign O1fhw6 = (~(Vuehw6 & V1fhw6)); +assign H1fhw6 = (C2fhw6 & J2fhw6); +assign J2fhw6 = (~(Mtehw6 & Fcinv6)); +assign C2fhw6 = (T6onv6 | Q2fhw6); +assign T0fhw6 = (Huehw6 & X2fhw6); +assign X2fhw6 = (~(E3fhw6 & Auehw6)); +assign Huehw6 = (L3fhw6 & S3fhw6); +assign S3fhw6 = (~(Vuehw6 & Z3fhw6)); +assign L3fhw6 = (G4fhw6 & N4fhw6); +assign G4fhw6 = (~(U4fhw6 & B5fhw6)); +assign B5fhw6 = (I5fhw6 & Gginv6); +assign U4fhw6 = (P5fhw6 & V1fhw6); +assign Ewehw6 = (~(W5fhw6 & Tfh7z6[0])); +assign Gbj8v6 = (~(D6fhw6 & K6fhw6)); +assign K6fhw6 = (~(R6fhw6 & Snvnv6)); +assign R6fhw6 = (~(Cntov6 | Zwehw6)); +assign Cntov6 = (Y6fhw6 & F7fhw6); +assign F7fhw6 = (M7fhw6 & T7fhw6); +assign T7fhw6 = (A8fhw6 & H8fhw6); +assign H8fhw6 = (O8fhw6 & Amtov6); +assign A8fhw6 = (~(Zbsov6 | V8fhw6)); +assign M7fhw6 = (C9fhw6 & J9fhw6); +assign J9fhw6 = (Q9fhw6 & X9fhw6); +assign C9fhw6 = (Eafhw6 & Lafhw6); +assign Lafhw6 = (~(Safhw6 & P5fhw6)); +assign Safhw6 = (Zafhw6 & Gbfhw6); +assign Eafhw6 = (~(Auehw6 & Nbfhw6)); +assign Y6fhw6 = (Ubfhw6 & Bcfhw6); +assign Bcfhw6 = (Icfhw6 & Pcfhw6); +assign Pcfhw6 = (Wcfhw6 & Ddfhw6); +assign Ddfhw6 = (~(Vuehw6 & Kdfhw6)); +assign Wcfhw6 = (~(Rdfhw6 & Ydfhw6)); +assign Icfhw6 = (Fefhw6 & Mefhw6); +assign Ubfhw6 = (Tefhw6 & Affhw6); +assign Affhw6 = (M0fhw6 ? Offhw6 : Hffhw6); +assign Tefhw6 = (Vffhw6 & Cgfhw6); +assign D6fhw6 = (~(Tfh7z6[1] & W5fhw6)); +assign Zaj8v6 = (~(Jgfhw6 & Qgfhw6)); +assign Qgfhw6 = (~(Pbadt6 & Vs9ov6)); +assign Saj8v6 = (Ehfhw6 ? Xgfhw6 : P4c7z6[0]); +assign Laj8v6 = (Lhfhw6 ? E8h7z6[0] : P4c7z6[0]); +assign Eaj8v6 = (Ehfhw6 ? Shfhw6 : Lvg7z6[3]); +assign X9j8v6 = (Ehfhw6 ? Zhfhw6 : Lvg7z6[2]); +assign Q9j8v6 = (Ehfhw6 ? Gifhw6 : Lvg7z6[1]); +assign J9j8v6 = (Ehfhw6 ? Nifhw6 : Lvg7z6[0]); +assign C9j8v6 = (Ehfhw6 ? Uifhw6 : P4c7z6[3]); +assign V8j8v6 = (Lhfhw6 ? E8h7z6[3] : P4c7z6[3]); +assign O8j8v6 = (Ehfhw6 ? Bjfhw6 : P4c7z6[2]); +assign H8j8v6 = (Lhfhw6 ? E8h7z6[2] : P4c7z6[2]); +assign A8j8v6 = (Ehfhw6 ? Ijfhw6 : P4c7z6[1]); +assign T7j8v6 = (Lhfhw6 ? E8h7z6[1] : P4c7z6[1]); +assign M7j8v6 = (!Pjfhw6); +assign Pjfhw6 = (Kkfhw6 ? Dkfhw6 : Wjfhw6); +assign Dkfhw6 = (Rkfhw6 & Ykfhw6); +assign Ykfhw6 = (~(Flfhw6 & Mlfhw6)); +assign Mlfhw6 = (~(Tlfhw6 & Amfhw6)); +assign Tlfhw6 = (Hmfhw6 & Omfhw6); +assign Hmfhw6 = (~(Vmfhw6 & Cnfhw6)); +assign Cnfhw6 = (Xnfhw6 ? Qnfhw6 : Jnfhw6); +assign Qnfhw6 = (~(Eofhw6 & Lofhw6)); +assign Jnfhw6 = (Sofhw6 ? Zec7z6[27] : Zec7z6[25]); +assign Vmfhw6 = (Zofhw6 & Gpfhw6); +assign Gpfhw6 = (~(Npfhw6 & Upfhw6)); +assign Upfhw6 = (!Bqfhw6); +assign Flfhw6 = (Wqfhw6 ? Pqfhw6 : Iqfhw6); +assign Pqfhw6 = (Amfhw6 ? Krfhw6 : Drfhw6); +assign Amfhw6 = (!Rrfhw6); +assign Krfhw6 = (Yrfhw6 & Fsfhw6); +assign Fsfhw6 = (~(Msfhw6 & Npfhw6)); +assign Yrfhw6 = (Xnfhw6 ? Atfhw6 : Tsfhw6); +assign Atfhw6 = (~(Eofhw6 & Htfhw6)); +assign Tsfhw6 = (Sofhw6 ? Vtfhw6 : Otfhw6); +assign Drfhw6 = (Cufhw6 & Jufhw6); +assign Jufhw6 = (~(Qufhw6 & Npfhw6)); +assign Cufhw6 = (Xnfhw6 ? Evfhw6 : Xufhw6); +assign Evfhw6 = (~(Lvfhw6 & Eofhw6)); +assign Xufhw6 = (Sofhw6 ? Zvfhw6 : Svfhw6); +assign Iqfhw6 = (~(Gwfhw6 & Nwfhw6)); +assign Nwfhw6 = (Xnfhw6 ? Bxfhw6 : Uwfhw6); +assign Bxfhw6 = (~(Eofhw6 & Ixfhw6)); +assign Uwfhw6 = (~(Pxfhw6 & Sofhw6)); +assign Gwfhw6 = (Wxfhw6 & Rrfhw6); +assign Wxfhw6 = (~(Npfhw6 & Dyfhw6)); +assign Rkfhw6 = (~(Kyfhw6 & Ryfhw6)); +assign Kyfhw6 = (~(Yyfhw6 | Qtnov6)); +assign F7j8v6 = (Jgfhw6 ? Ecc7z6[14] : Fzfhw6); +assign Y6j8v6 = (Jgfhw6 ? Ecc7z6[13] : Mzfhw6); +assign R6j8v6 = (Dcnov6 ? Ozbdt6 : Bi9ov6); +assign K6j8v6 = (!Tzfhw6); +assign Tzfhw6 = (Kkfhw6 ? H0ghw6 : A0ghw6); +assign H0ghw6 = (~(O0ghw6 & V0ghw6)); +assign V0ghw6 = (C1ghw6 & J1ghw6); +assign C1ghw6 = (Q1ghw6 & Lofhw6); +assign O0ghw6 = (Zec7z6[25] & Auehw6); +assign D6j8v6 = (!X1ghw6); +assign X1ghw6 = (Kkfhw6 ? E2ghw6 : V5jnv6); +assign E2ghw6 = (L2ghw6 & S2ghw6); +assign S2ghw6 = (Z2ghw6 & G3ghw6); +assign Z2ghw6 = (~(N3ghw6 | U3ghw6)); +assign L2ghw6 = (B4ghw6 & I4ghw6); +assign V5jnv6 = (!Ecc7z6[11]); +assign W5j8v6 = (~(P4ghw6 & W4ghw6)); +assign W4ghw6 = (~(P58et6 & Zs4ov6)); +assign P5j8v6 = (~(D5ghw6 & Xr4ov6)); +assign D5ghw6 = (K5ghw6 & R5ghw6); +assign R5ghw6 = (~(Bmo8v6 & Ss4ov6)); +assign K5ghw6 = (~(Oyh7z6[30] & Zs4ov6)); +assign I5j8v6 = (~(Y5ghw6 & Xr4ov6)); +assign Y5ghw6 = (F6ghw6 & M6ghw6); +assign M6ghw6 = (~(Zio8v6 & Ss4ov6)); +assign F6ghw6 = (~(Oyh7z6[29] & Zs4ov6)); +assign B5j8v6 = (~(T6ghw6 & Xr4ov6)); +assign T6ghw6 = (A7ghw6 & H7ghw6); +assign H7ghw6 = (~(Xfo8v6 & Ss4ov6)); +assign A7ghw6 = (~(Oyh7z6[28] & Zs4ov6)); +assign U4j8v6 = (~(O7ghw6 & Xr4ov6)); +assign O7ghw6 = (V7ghw6 & C8ghw6); +assign C8ghw6 = (~(Vco8v6 & Ss4ov6)); +assign V7ghw6 = (~(Oyh7z6[27] & Zs4ov6)); +assign N4j8v6 = (~(J8ghw6 & Xr4ov6)); +assign J8ghw6 = (Q8ghw6 & X8ghw6); +assign X8ghw6 = (~(T9o8v6 & Ss4ov6)); +assign Q8ghw6 = (~(Oyh7z6[26] & Zs4ov6)); +assign G4j8v6 = (~(E9ghw6 & Xr4ov6)); +assign E9ghw6 = (L9ghw6 & S9ghw6); +assign S9ghw6 = (~(R6o8v6 & Ss4ov6)); +assign L9ghw6 = (~(Oyh7z6[25] & Zs4ov6)); +assign Z3j8v6 = (~(Z9ghw6 & Xr4ov6)); +assign Z9ghw6 = (Gaghw6 & Naghw6); +assign Naghw6 = (~(P3o8v6 & Ss4ov6)); +assign Gaghw6 = (~(Oyh7z6[24] & Zs4ov6)); +assign S3j8v6 = (~(Uaghw6 & Xr4ov6)); +assign Uaghw6 = (Bbghw6 & Ibghw6); +assign Ibghw6 = (~(N0o8v6 & Ss4ov6)); +assign Bbghw6 = (~(Oyh7z6[23] & Zs4ov6)); +assign L3j8v6 = (~(Pbghw6 & Xr4ov6)); +assign Pbghw6 = (Wbghw6 & Dcghw6); +assign Dcghw6 = (~(Lxn8v6 & Ss4ov6)); +assign Wbghw6 = (~(Oyh7z6[22] & Zs4ov6)); +assign E3j8v6 = (~(Kcghw6 & Xr4ov6)); +assign Kcghw6 = (Rcghw6 & Ycghw6); +assign Ycghw6 = (~(Jun8v6 & Ss4ov6)); +assign Rcghw6 = (~(Oyh7z6[21] & Zs4ov6)); +assign X2j8v6 = (~(Fdghw6 & Xr4ov6)); +assign Fdghw6 = (Mdghw6 & Tdghw6); +assign Tdghw6 = (~(Hrn8v6 & Ss4ov6)); +assign Mdghw6 = (~(Oyh7z6[20] & Zs4ov6)); +assign Q2j8v6 = (~(Aeghw6 & Xr4ov6)); +assign Aeghw6 = (Heghw6 & Oeghw6); +assign Oeghw6 = (~(Fon8v6 & Ss4ov6)); +assign Heghw6 = (~(Oyh7z6[19] & Zs4ov6)); +assign J2j8v6 = (~(Veghw6 & Xr4ov6)); +assign Veghw6 = (Cfghw6 & Jfghw6); +assign Jfghw6 = (~(Dln8v6 & Ss4ov6)); +assign Cfghw6 = (~(Oyh7z6[18] & Zs4ov6)); +assign C2j8v6 = (~(Qfghw6 & Xr4ov6)); +assign Qfghw6 = (Xfghw6 & Egghw6); +assign Egghw6 = (~(Bin8v6 & Ss4ov6)); +assign Xfghw6 = (~(Oyh7z6[17] & Zs4ov6)); +assign V1j8v6 = (~(Lgghw6 & Xr4ov6)); +assign Lgghw6 = (Sgghw6 & Zgghw6); +assign Zgghw6 = (~(Zen8v6 & Ss4ov6)); +assign Sgghw6 = (~(Oyh7z6[16] & Zs4ov6)); +assign O1j8v6 = (~(Ghghw6 & Xr4ov6)); +assign Ghghw6 = (Nhghw6 & Uhghw6); +assign Uhghw6 = (~(Xbn8v6 & Ss4ov6)); +assign Nhghw6 = (~(Oyh7z6[15] & Zs4ov6)); +assign H1j8v6 = (~(Bighw6 & Xr4ov6)); +assign Bighw6 = (Iighw6 & Pighw6); +assign Pighw6 = (~(V8n8v6 & Ss4ov6)); +assign Iighw6 = (~(Oyh7z6[14] & Zs4ov6)); +assign A1j8v6 = (~(Wighw6 & Xr4ov6)); +assign Wighw6 = (Djghw6 & Kjghw6); +assign Kjghw6 = (~(T5n8v6 & Ss4ov6)); +assign Djghw6 = (~(Oyh7z6[13] & Zs4ov6)); +assign T0j8v6 = (~(Rjghw6 & Xr4ov6)); +assign Xr4ov6 = (Fkghw6 ? P4ghw6 : Yjghw6); +assign Rjghw6 = (Mkghw6 & Tkghw6); +assign Tkghw6 = (~(R2n8v6 & Ss4ov6)); +assign Mkghw6 = (~(Oyh7z6[12] & Zs4ov6)); +assign M0j8v6 = (~(Alghw6 & Hlghw6)); +assign Hlghw6 = (~(Oyh7z6[11] & Zs4ov6)); +assign Alghw6 = (Olghw6 ? P4ghw6 : Yjghw6); +assign Olghw6 = (Vlghw6 & Cmghw6); +assign Cmghw6 = (~(Pzm8v6 & Jmghw6)); +assign Vlghw6 = (Qmghw6 & Fkghw6); +assign Fkghw6 = (~(G4i7z6[9] & Xmghw6)); +assign Qmghw6 = (Enghw6 | Lnghw6); +assign F0j8v6 = (~(Snghw6 & Znghw6)); +assign Znghw6 = (~(Oyh7z6[10] & Zs4ov6)); +assign Snghw6 = (Goghw6 ? P4ghw6 : Yjghw6); +assign Goghw6 = (Noghw6 & Uoghw6); +assign Uoghw6 = (~(Nwm8v6 & Jmghw6)); +assign Noghw6 = (Bpghw6 & Ipghw6); +assign Ipghw6 = (Enghw6 | Ppghw6); +assign Bpghw6 = (~(G4i7z6[8] & Xmghw6)); +assign Yzi8v6 = (~(Wpghw6 & Dqghw6)); +assign Dqghw6 = (~(Oyh7z6[9] & Zs4ov6)); +assign Wpghw6 = (Kqghw6 ? P4ghw6 : Yjghw6); +assign Kqghw6 = (Rqghw6 & Yqghw6); +assign Yqghw6 = (~(Mtm8v6 & Jmghw6)); +assign Rqghw6 = (Frghw6 & Mrghw6); +assign Mrghw6 = (Enghw6 | Trghw6); +assign Frghw6 = (~(G4i7z6[7] & Xmghw6)); +assign Rzi8v6 = (~(Asghw6 & Hsghw6)); +assign Hsghw6 = (~(Oyh7z6[8] & Zs4ov6)); +assign Asghw6 = (Osghw6 ? P4ghw6 : Yjghw6); +assign Osghw6 = (Vsghw6 & Ctghw6); +assign Ctghw6 = (~(Lqm8v6 & Jmghw6)); +assign Vsghw6 = (Jtghw6 & Qtghw6); +assign Qtghw6 = (Enghw6 | Xtghw6); +assign Jtghw6 = (~(G4i7z6[6] & Xmghw6)); +assign Kzi8v6 = (~(Eughw6 & Lughw6)); +assign Lughw6 = (~(Oyh7z6[7] & Zs4ov6)); +assign Eughw6 = (Sughw6 ? P4ghw6 : Yjghw6); +assign Sughw6 = (Zughw6 & Gvghw6); +assign Gvghw6 = (Nvghw6 & Uvghw6); +assign Uvghw6 = (~(Bwghw6 & Q1h7z6[5])); +assign Nvghw6 = (~(Knm8v6 & Jmghw6)); +assign Zughw6 = (Iwghw6 & Pwghw6); +assign Pwghw6 = (~(Wwghw6 & Dxghw6)); +assign Iwghw6 = (~(G4i7z6[5] & Xmghw6)); +assign Dzi8v6 = (~(Kxghw6 & Rxghw6)); +assign Rxghw6 = (~(Oyh7z6[6] & Zs4ov6)); +assign Kxghw6 = (Yxghw6 ? P4ghw6 : Yjghw6); +assign Yxghw6 = (Fyghw6 & Myghw6); +assign Myghw6 = (Tyghw6 & Azghw6); +assign Azghw6 = (~(G4i7z6[4] & Xmghw6)); +assign Tyghw6 = (Hzghw6 & Qsaov6); +assign Hzghw6 = (~(Jkm8v6 & Jmghw6)); +assign Fyghw6 = (Ozghw6 & Vzghw6); +assign Vzghw6 = (~(Wwghw6 & C0hhw6)); +assign Ozghw6 = (~(Bwghw6 & Q1h7z6[4])); +assign Bwghw6 = (J0hhw6 & Q0hhw6); +assign Wyi8v6 = (~(X0hhw6 & E1hhw6)); +assign E1hhw6 = (~(Oyh7z6[5] & Zs4ov6)); +assign X0hhw6 = (L1hhw6 ? P4ghw6 : Yjghw6); +assign L1hhw6 = (S1hhw6 & Z1hhw6); +assign Z1hhw6 = (G2hhw6 & N2hhw6); +assign N2hhw6 = (~(G4i7z6[3] & Xmghw6)); +assign G2hhw6 = (U2hhw6 & B3hhw6); +assign U2hhw6 = (~(J0hhw6 & I3hhw6)); +assign I3hhw6 = (~(P3hhw6 & W3hhw6)); +assign W3hhw6 = (~(Q0hhw6 & Q1h7z6[3])); +assign P3hhw6 = (~(Nzg7z6[3] & D4hhw6)); +assign S1hhw6 = (K4hhw6 & R4hhw6); +assign R4hhw6 = (Enghw6 | Y4hhw6); +assign K4hhw6 = (F5hhw6 & M5hhw6); +assign M5hhw6 = (~(T5hhw6 & A6hhw6)); +assign F5hhw6 = (~(Ihm8v6 & Jmghw6)); +assign Pyi8v6 = (~(H6hhw6 & O6hhw6)); +assign O6hhw6 = (~(Oyh7z6[4] & Zs4ov6)); +assign H6hhw6 = (V6hhw6 ? P4ghw6 : Yjghw6); +assign V6hhw6 = (C7hhw6 & J7hhw6); +assign J7hhw6 = (Q7hhw6 & X7hhw6); +assign X7hhw6 = (~(G4i7z6[2] & Xmghw6)); +assign Q7hhw6 = (E8hhw6 & L8hhw6); +assign E8hhw6 = (~(J0hhw6 & S8hhw6)); +assign S8hhw6 = (~(Z8hhw6 & G9hhw6)); +assign Z8hhw6 = (N9hhw6 & U9hhw6); +assign U9hhw6 = (~(Nzg7z6[2] & D4hhw6)); +assign N9hhw6 = (~(Q0hhw6 & Q1h7z6[2])); +assign J0hhw6 = (~(Bahhw6 | Tnzdt6)); +assign C7hhw6 = (Iahhw6 & Pahhw6); +assign Pahhw6 = (~(Wwghw6 & Wahhw6)); +assign Iahhw6 = (Dbhhw6 & Kbhhw6); +assign Kbhhw6 = (~(T5hhw6 & Rbhhw6)); +assign Dbhhw6 = (~(Hem8v6 & Jmghw6)); +assign Iyi8v6 = (~(Ybhhw6 & Fchhw6)); +assign Fchhw6 = (~(Oyh7z6[3] & Zs4ov6)); +assign Ybhhw6 = (Mchhw6 ? P4ghw6 : Yjghw6); +assign Mchhw6 = (Tchhw6 & Adhhw6); +assign Adhhw6 = (Hdhhw6 & Odhhw6); +assign Odhhw6 = (Enghw6 | Vdhhw6); +assign Hdhhw6 = (~(Cehhw6 & T5hhw6)); +assign Tchhw6 = (Jehhw6 & Qehhw6); +assign Qehhw6 = (~(Xehhw6 & Efhhw6)); +assign Efhhw6 = (~(Lfhhw6 & Sfhhw6)); +assign Sfhhw6 = (Zfhhw6 & Gghhw6); +assign Gghhw6 = (Nghhw6 & Ughhw6); +assign Ughhw6 = (~(Hir8v6 & Bhhhw6)); +assign Bhhhw6 = (~(Ihhhw6 & Phhhw6)); +assign Phhhw6 = (~(Whhhw6 & Dihhw6)); +assign Whhhw6 = (~(Kihhw6 | Xumov6)); +assign Ihhhw6 = (Rihhw6 | Yihhw6); +assign Nghhw6 = (Fjhhw6 & L8hhw6); +assign Fjhhw6 = (~(Mjhhw6 & Tjhhw6)); +assign Tjhhw6 = (~(Akhhw6 & Hkhhw6)); +assign Akhhw6 = (Okhhw6 & Vkhhw6); +assign Okhhw6 = (~(Clhhw6 & Aga7z6)); +assign Mjhhw6 = (G4i7z6[1] | Jlhhw6); +assign Zfhhw6 = (Qlhhw6 & Xlhhw6); +assign Xlhhw6 = (~(Emhhw6 & Clhhw6)); +assign Qlhhw6 = (Hkhhw6 | Iga7z6); +assign Lfhhw6 = (Lmhhw6 & Smhhw6); +assign Smhhw6 = (Zmhhw6 & Gnhhw6); +assign Gnhhw6 = (~(Nzg7z6[1] & D4hhw6)); +assign Zmhhw6 = (~(Q0hhw6 & Q1h7z6[1])); +assign Jehhw6 = (~(Gbm8v6 & Jmghw6)); +assign Byi8v6 = (~(Nnhhw6 & Unhhw6)); +assign Unhhw6 = (~(Oyh7z6[2] & Zs4ov6)); +assign Nnhhw6 = (Bohhw6 ? P4ghw6 : Yjghw6); +assign Bohhw6 = (Iohhw6 & Pohhw6); +assign Pohhw6 = (Wohhw6 & Dphhw6); +assign Dphhw6 = (~(Wwghw6 & Kphhw6)); +assign Wohhw6 = (~(T5hhw6 & Rphhw6)); +assign T5hhw6 = (Yphhw6 & Fqhhw6); +assign Yphhw6 = (Mqhhw6 & Bahhw6); +assign Iohhw6 = (Tqhhw6 & Arhhw6); +assign Arhhw6 = (~(Xehhw6 & Hrhhw6)); +assign Hrhhw6 = (~(Orhhw6 & Vrhhw6)); +assign Vrhhw6 = (Cshhw6 & Jshhw6); +assign Jshhw6 = (~(Clhhw6 & Lxydt6)); +assign Cshhw6 = (Qshhw6 & Xshhw6); +assign Xshhw6 = (~(Ethhw6 & Qg2nv6)); +assign Ethhw6 = (~(Lthhw6 & Sthhw6)); +assign Sthhw6 = (~(Nzg7z6[0] & D4hhw6)); +assign Lthhw6 = (~(Q0hhw6 & Q1h7z6[0])); +assign Qshhw6 = (~(G4i7z6[0] & Xmghw6)); +assign Xmghw6 = (~(Zthhw6 | Jlhhw6)); +assign Jlhhw6 = (Guhhw6 & Nuhhw6); +assign Nuhhw6 = (~(U6i7z6[1] & Uebdt6)); +assign Guhhw6 = (~(U6i7z6[0] & Tnzdt6)); +assign Zthhw6 = (Uuhhw6 & Bvhhw6); +assign Bvhhw6 = (Hkhhw6 | Bfo7v6); +assign Uuhhw6 = (Ivhhw6 & Vkhhw6); +assign Ivhhw6 = (~(Clhhw6 & Pvhhw6)); +assign Orhhw6 = (Wvhhw6 & Jzaov6); +assign Tqhhw6 = (~(F8m8v6 & Jmghw6)); +assign Uxi8v6 = (~(Dwhhw6 & Kwhhw6)); +assign Kwhhw6 = (Rwhhw6 ? Yjghw6 : P4ghw6); +assign Rwhhw6 = (Wwghw6 & Ywhhw6); +assign Wwghw6 = (!Enghw6); +assign Dwhhw6 = (Fxhhw6 & Mxhhw6); +assign Mxhhw6 = (~(Txhhw6 & Gvo8v6)); +assign Txhhw6 = (Ss4ov6 & Ayhhw6); +assign Ss4ov6 = (Hyhhw6 & Jmghw6); +assign Fxhhw6 = (~(Oyh7z6[1] & Zs4ov6)); +assign Nxi8v6 = (~(Oyhhw6 & Vyhhw6)); +assign Vyhhw6 = (~(Oyh7z6[0] & Zs4ov6)); +assign Oyhhw6 = (Czhhw6 ? P4ghw6 : Yjghw6); +assign Czhhw6 = (Jzhhw6 & Qzhhw6); +assign Qzhhw6 = (Enghw6 | Xzhhw6); +assign Enghw6 = (~(E0ihw6 & L0ihw6)); +assign L0ihw6 = (~(Xehhw6 | Xvehw6)); +assign Xehhw6 = (!Bahhw6); +assign E0ihw6 = (Fqhhw6 & S0ihw6); +assign Fqhhw6 = (!Z0ihw6); +assign Jzhhw6 = (~(G1ihw6 & Fso8v6)); +assign Fso8v6 = (~(Pmknv6 | O7c7z6[7])); +assign O7c7z6[7] = (Uqd7z6[20] & N1ihw6); +assign N1ihw6 = (~(U1ihw6 & B2ihw6)); +assign B2ihw6 = (~(I2ihw6 & P2ihw6)); +assign I2ihw6 = (N3onv6 & Auehw6); +assign Pmknv6 = (W2ihw6 & D3ihw6); +assign D3ihw6 = (~(K3ihw6 & E7jnv6)); +assign K3ihw6 = (~(Q5knv6 | R3ihw6)); +assign Q5knv6 = (~(Y3ihw6 | F4ihw6)); +assign W2ihw6 = (N8jnv6 | Tefov6); +assign Tefov6 = (M4ihw6 & T4ihw6); +assign T4ihw6 = (A5ihw6 & H5ihw6); +assign H5ihw6 = (O5ihw6 & V5ihw6); +assign V5ihw6 = (C6ihw6 & J6ihw6); +assign J6ihw6 = (~(Pic7z6[0] & U32ov6)); +assign C6ihw6 = (~(vis_r12_o[0] & W42ov6)); +assign O5ihw6 = (Q6ihw6 & X6ihw6); +assign X6ihw6 = (~(vis_r11_o[0] & F62ov6)); +assign Q6ihw6 = (~(vis_r10_o[0] & M62ov6)); +assign A5ihw6 = (E7ihw6 & L7ihw6); +assign L7ihw6 = (~(vis_r7_o[0] & L92ov6)); +assign E7ihw6 = (S7ihw6 & Z7ihw6); +assign Z7ihw6 = (~(vis_r9_o[0] & H72ov6)); +assign S7ihw6 = (~(vis_r8_o[0] & O72ov6)); +assign M4ihw6 = (G8ihw6 & N8ihw6); +assign N8ihw6 = (U8ihw6 & B9ihw6); +assign B9ihw6 = (I9ihw6 & P9ihw6); +assign P9ihw6 = (~(vis_r6_o[0] & S92ov6)); +assign I9ihw6 = (~(vis_r5_o[0] & Na2ov6)); +assign U8ihw6 = (W9ihw6 & Daihw6); +assign Daihw6 = (~(vis_r4_o[0] & Ua2ov6)); +assign W9ihw6 = (~(vis_r3_o[0] & Dc2ov6)); +assign G8ihw6 = (Kaihw6 & Raihw6); +assign Raihw6 = (~(vis_r0_o[0] & Md2ov6)); +assign Kaihw6 = (Yaihw6 & Fbihw6); +assign Fbihw6 = (~(vis_r2_o[0] & Kc2ov6)); +assign Yaihw6 = (~(vis_r1_o[0] & Fd2ov6)); +assign N8jnv6 = (E7jnv6 | Mbihw6); +assign E7jnv6 = (Tbihw6 & Acihw6); +assign Acihw6 = (Hcihw6 & Ocihw6); +assign Ocihw6 = (~(Vcihw6 ^ F4ihw6)); +assign Tbihw6 = (Cdihw6 & Jdihw6); +assign Jdihw6 = (~(Qdihw6 ^ Xdihw6)); +assign Cdihw6 = (Eeihw6 & Leihw6); +assign Leihw6 = (~(Seihw6 ^ Zeihw6)); +assign Eeihw6 = (~(Gfihw6 ^ Nfihw6)); +assign G1ihw6 = (Jmghw6 & Ayhhw6); +assign Ayhhw6 = (!O7c7z6[8]); +assign O7c7z6[8] = (Ufihw6 & Bgihw6); +assign Bgihw6 = (Uqd7z6[21] & Auehw6); +assign Ufihw6 = (P2ihw6 & N3onv6); +assign Jmghw6 = (Igihw6 & Bahhw6); +assign Bahhw6 = (~(Pgihw6 & Wgihw6)); +assign Wgihw6 = (Dhihw6 & Khihw6); +assign Khihw6 = (~(Rhihw6 & Qg2nv6)); +assign Dhihw6 = (Yhihw6 & Fiihw6); +assign Yhihw6 = (~(Miihw6 & Lxydt6)); +assign Miihw6 = (~(Hkhhw6 & Tiihw6)); +assign Tiihw6 = (Ajihw6 | Hjihw6); +assign Pgihw6 = (Ojihw6 & Vjihw6); +assign Ojihw6 = (~(Ckihw6 & Jkihw6)); +assign Igihw6 = (~(U1ihw6 & Qkihw6)); +assign Qkihw6 = (~(Yqvnv6 & Xvehw6)); +assign P4ghw6 = (Zs4ov6 | Xkihw6); +assign Yjghw6 = (~(Xkihw6 & Hyhhw6)); +assign Xkihw6 = (Elihw6 & Llihw6); +assign Llihw6 = (Slihw6 & Zlihw6); +assign Zlihw6 = (~(Gmihw6 & Zwehw6)); +assign Gmihw6 = (Tnzdt6 & Nmihw6); +assign Nmihw6 = (~(Umihw6 & Bnihw6)); +assign Bnihw6 = (Inihw6 & Pnihw6); +assign Pnihw6 = (~(Bhoov6 & Dwb7z6[3])); +assign Inihw6 = (~(Wnihw6 | Doihw6)); +assign Umihw6 = (Koihw6 & Roihw6); +assign Roihw6 = (Dwb7z6[5] ? Fpihw6 : Yoihw6); +assign Fpihw6 = (~(Ytlnv6 & Mpihw6)); +assign Yoihw6 = (Tpihw6 & Mpihw6); +assign Tpihw6 = (~(Dioov6 & Aqihw6)); +assign Koihw6 = (Hqihw6 & Oqihw6); +assign Oqihw6 = (~(Nvvnv6 & Bwvnv6)); +assign Hqihw6 = (~(Vqihw6 & Gvvnv6)); +assign Slihw6 = (Crihw6 & Qsaov6); +assign Crihw6 = (~(Jrihw6 & Qrihw6)); +assign Qrihw6 = (~(Xrihw6 | N3ghw6)); +assign N3ghw6 = (Ryfhw6 & Zec7z6[7]); +assign Xrihw6 = (U3ghw6 | Esihw6); +assign U3ghw6 = (Lsihw6 & Ssihw6); +assign Ssihw6 = (~(Zsihw6 & Auehw6)); +assign Zsihw6 = (Gtihw6 & Xeinv6); +assign Gtihw6 = (~(Rktov6 & Ntihw6)); +assign Ntihw6 = (~(Utihw6 & Buihw6)); +assign Jrihw6 = (Iuihw6 & B4ghw6); +assign Iuihw6 = (I4ghw6 & G3ghw6); +assign Elihw6 = (Puihw6 & Wuihw6); +assign Wuihw6 = (~(Q0hhw6 & Ecc7z6[11])); +assign Puihw6 = (L8hhw6 | Dwb7z6[5]); +assign Gxi8v6 = (Jgfhw6 ? Ecc7z6[10] : Z0ihw6); +assign Z0ihw6 = (~(Dvihw6 & B4ghw6)); +assign B4ghw6 = (Kvihw6 & Rvihw6); +assign Rvihw6 = (~(Zofhw6 & Zec7z6[7])); +assign Kvihw6 = (Yvihw6 & O8fhw6); +assign Dvihw6 = (Fwihw6 & Mwihw6); +assign Mwihw6 = (~(Twihw6 & Axihw6)); +assign Twihw6 = (~(Hxihw6 | Zec7z6[26])); +assign Fwihw6 = (~(Ryfhw6 & Bainv6)); +assign Zwi8v6 = (Jgfhw6 ? Ecc7z6[9] : Oxihw6); +assign Swi8v6 = (Lhfhw6 ? Whxdt6 : Vxihw6); +assign Lwi8v6 = (Jgfhw6 ? Ecc7z6[6] : Cyihw6); +assign Jgfhw6 = (!Kkfhw6); +assign Ewi8v6 = (~(Jyihw6 & Qyihw6)); +assign Qyihw6 = (~(Bh2et6 & Lhfhw6)); +assign Xvi8v6 = (~(Xyihw6 & Ezihw6)); +assign Ezihw6 = (~(Zdxdt6 & Lzihw6)); +assign Lzihw6 = (Ypinv6 | Bqmov6); +assign Xyihw6 = (Eg9ov6 | B3wnv6); +assign Eg9ov6 = (~(Szihw6 & Msmov6)); +assign Szihw6 = (Zzihw6 & Bi9ov6); +assign Qvi8v6 = (~(G0jhw6 & N0jhw6)); +assign N0jhw6 = (~(U0jhw6 & R3h7z6[0])); +assign Jvi8v6 = (B1jhw6 | I1jhw6); +assign I1jhw6 = (Thbet6 & P1jhw6); +assign Cvi8v6 = (Kkfhw6 ? Mqhhw6 : Ecc7z6[5]); +assign Vui8v6 = (Kkfhw6 ? Yqvnv6 : Ecc7z6[3]); +assign Oui8v6 = (~(W1jhw6 & D2jhw6)); +assign D2jhw6 = (~(K2jhw6 & Ubhdt6)); +assign Hui8v6 = (Ehfhw6 ? Nfihw6 : Pxg7z6[3]); +assign Aui8v6 = (Ehfhw6 ? Xdihw6 : Pxg7z6[2]); +assign Tti8v6 = (Ehfhw6 ? F4ihw6 : Pxg7z6[1]); +assign Mti8v6 = (Ehfhw6 ? Zeihw6 : Pxg7z6[0]); +assign Fti8v6 = (Uicdt6 ? Y2jhw6 : R2jhw6); +assign Y2jhw6 = (F3jhw6 & M3jhw6); +assign M3jhw6 = (~(T3jhw6 & A4jhw6)); +assign F3jhw6 = (Ga3nv6 & X6xnv6); +assign R2jhw6 = (H4jhw6 & Cgc7z6[1]); +assign H4jhw6 = (O4jhw6 & V4jhw6); +assign Ysi8v6 = (Oe2et6 ? Ga3nv6 : Dqnov6); +assign Ksi8v6 = (Udkov6 ? C5jhw6 : Bsgdt6); +assign Dsi8v6 = (Udkov6 ? J5jhw6 : Mpe7z6[4]); +assign Wri8v6 = (Udkov6 ? Q5jhw6 : Mpe7z6[3]); +assign Pri8v6 = (Udkov6 ? X5jhw6 : Mpe7z6[2]); +assign Iri8v6 = (Udkov6 ? E6jhw6 : Xpgdt6); +assign Bri8v6 = (Qf2ov6 ? L6jhw6 : Pne7z6[1]); +assign Uqi8v6 = (Qf2ov6 ? S6jhw6 : Pne7z6[0]); +assign S6jhw6 = (!Bsgdt6); +assign Nqi8v6 = (Z6jhw6 ? D5f7z6[2] : Dknnv6); +assign Gqi8v6 = (Z6jhw6 ? D5f7z6[4] : Pjnnv6); +assign Zpi8v6 = (Z6jhw6 ? D5f7z6[5] : Bjnnv6); +assign Spi8v6 = (Z6jhw6 ? D5f7z6[0] : Rknnv6); +assign Lpi8v6 = (~(G7jhw6 & N7jhw6)); +assign N7jhw6 = (U7jhw6 & B8jhw6); +assign B8jhw6 = (~(Okpdt6 & U8bov6)); +assign U7jhw6 = (I8jhw6 & P8jhw6); +assign P8jhw6 = (~(Bymdt6 & P9bov6)); +assign I8jhw6 = (~(W9bov6 & Onf7z6[28])); +assign G7jhw6 = (W8jhw6 & D9jhw6); +assign D9jhw6 = (~(L0g7z6[28] & Rabov6)); +assign W8jhw6 = (K9jhw6 & R9jhw6); +assign R9jhw6 = (~(Vzkdt6 & Mbbov6)); +assign K9jhw6 = (~(L0g7z6[12] & Gcmnv6)); +assign Epi8v6 = (~(Y9jhw6 & Fajhw6)); +assign Fajhw6 = (Majhw6 & Tajhw6); +assign Tajhw6 = (~(Mnpdt6 & U8bov6)); +assign Majhw6 = (Abjhw6 & Hbjhw6); +assign Hbjhw6 = (~(A1ndt6 & P9bov6)); +assign Abjhw6 = (~(W9bov6 & Onf7z6[27])); +assign Y9jhw6 = (Objhw6 & Vbjhw6); +assign Vbjhw6 = (~(L0g7z6[27] & Rabov6)); +assign Objhw6 = (Ccjhw6 & Jcjhw6); +assign Jcjhw6 = (~(Y1ldt6 & Mbbov6)); +assign Ccjhw6 = (~(L0g7z6[11] & Gcmnv6)); +assign Xoi8v6 = (~(Qcjhw6 & Xcjhw6)); +assign Xcjhw6 = (Edjhw6 & Ldjhw6); +assign Ldjhw6 = (~(Kqpdt6 & U8bov6)); +assign Edjhw6 = (Sdjhw6 & Zdjhw6); +assign Zdjhw6 = (~(Z3ndt6 & P9bov6)); +assign Sdjhw6 = (~(W9bov6 & Onf7z6[26])); +assign Qcjhw6 = (Gejhw6 & Nejhw6); +assign Nejhw6 = (~(L0g7z6[26] & Rabov6)); +assign Gejhw6 = (Uejhw6 & Bfjhw6); +assign Bfjhw6 = (~(B4ldt6 & Mbbov6)); +assign Uejhw6 = (~(L0g7z6[10] & Gcmnv6)); +assign Qoi8v6 = (~(Ifjhw6 & Pfjhw6)); +assign Pfjhw6 = (Wfjhw6 & Dgjhw6); +assign Dgjhw6 = (~(Itpdt6 & U8bov6)); +assign Wfjhw6 = (Kgjhw6 & Rgjhw6); +assign Rgjhw6 = (~(Y6ndt6 & P9bov6)); +assign Kgjhw6 = (~(W9bov6 & Onf7z6[25])); +assign Ifjhw6 = (Ygjhw6 & Fhjhw6); +assign Fhjhw6 = (~(L0g7z6[25] & Rabov6)); +assign Ygjhw6 = (Mhjhw6 & Thjhw6); +assign Thjhw6 = (~(E6ldt6 & Mbbov6)); +assign Mhjhw6 = (~(L0g7z6[9] & Gcmnv6)); +assign Joi8v6 = (~(Aijhw6 & Hijhw6)); +assign Hijhw6 = (Oijhw6 & Vijhw6); +assign Vijhw6 = (~(Gwpdt6 & U8bov6)); +assign Oijhw6 = (Cjjhw6 & Jjjhw6); +assign Jjjhw6 = (~(X9ndt6 & P9bov6)); +assign Cjjhw6 = (~(W9bov6 & Onf7z6[24])); +assign Aijhw6 = (Qjjhw6 & Xjjhw6); +assign Xjjhw6 = (~(L0g7z6[24] & Rabov6)); +assign Qjjhw6 = (Ekjhw6 & Lkjhw6); +assign Lkjhw6 = (~(H8ldt6 & Mbbov6)); +assign Ekjhw6 = (~(L0g7z6[8] & Gcmnv6)); +assign Coi8v6 = (~(Skjhw6 & Zkjhw6)); +assign Zkjhw6 = (Gljhw6 & Nljhw6); +assign Nljhw6 = (~(Ezpdt6 & U8bov6)); +assign Gljhw6 = (Uljhw6 & Bmjhw6); +assign Bmjhw6 = (~(Wcndt6 & P9bov6)); +assign Uljhw6 = (~(W9bov6 & Onf7z6[23])); +assign Skjhw6 = (Imjhw6 & Pmjhw6); +assign Pmjhw6 = (~(L0g7z6[23] & Rabov6)); +assign Imjhw6 = (Wmjhw6 & Dnjhw6); +assign Dnjhw6 = (~(Kaldt6 & Mbbov6)); +assign Wmjhw6 = (~(L0g7z6[7] & Gcmnv6)); +assign Vni8v6 = (~(Knjhw6 & Rnjhw6)); +assign Rnjhw6 = (Ynjhw6 & Fojhw6); +assign Fojhw6 = (~(C2qdt6 & U8bov6)); +assign Ynjhw6 = (Mojhw6 & Tojhw6); +assign Tojhw6 = (~(Vfndt6 & P9bov6)); +assign Mojhw6 = (~(W9bov6 & Onf7z6[22])); +assign Knjhw6 = (Apjhw6 & Hpjhw6); +assign Hpjhw6 = (~(L0g7z6[22] & Rabov6)); +assign Apjhw6 = (Opjhw6 & Vpjhw6); +assign Vpjhw6 = (~(Ncldt6 & Mbbov6)); +assign Opjhw6 = (~(L0g7z6[6] & Gcmnv6)); +assign Oni8v6 = (~(Cqjhw6 & Jqjhw6)); +assign Jqjhw6 = (Qqjhw6 & Xqjhw6); +assign Xqjhw6 = (~(A5qdt6 & U8bov6)); +assign Qqjhw6 = (Erjhw6 & Lrjhw6); +assign Lrjhw6 = (~(Uindt6 & P9bov6)); +assign Erjhw6 = (~(W9bov6 & Onf7z6[21])); +assign Cqjhw6 = (Srjhw6 & Zrjhw6); +assign Zrjhw6 = (~(L0g7z6[21] & Rabov6)); +assign Srjhw6 = (Gsjhw6 & Nsjhw6); +assign Nsjhw6 = (~(Qeldt6 & Mbbov6)); +assign Gsjhw6 = (~(L0g7z6[5] & Gcmnv6)); +assign Hni8v6 = (~(Usjhw6 & Btjhw6)); +assign Btjhw6 = (Itjhw6 & Ptjhw6); +assign Ptjhw6 = (~(Y7qdt6 & U8bov6)); +assign Itjhw6 = (Wtjhw6 & Dujhw6); +assign Dujhw6 = (~(Tlndt6 & P9bov6)); +assign Wtjhw6 = (~(W9bov6 & Onf7z6[20])); +assign Usjhw6 = (Kujhw6 & Rujhw6); +assign Rujhw6 = (~(L0g7z6[20] & Rabov6)); +assign Kujhw6 = (Yujhw6 & Fvjhw6); +assign Fvjhw6 = (~(Tgldt6 & Mbbov6)); +assign Yujhw6 = (~(L0g7z6[4] & Gcmnv6)); +assign Ani8v6 = (~(Mvjhw6 & Tvjhw6)); +assign Tvjhw6 = (Awjhw6 & Hwjhw6); +assign Hwjhw6 = (~(Waqdt6 & U8bov6)); +assign Awjhw6 = (Owjhw6 & Vwjhw6); +assign Vwjhw6 = (~(Sondt6 & P9bov6)); +assign Owjhw6 = (~(W9bov6 & Onf7z6[19])); +assign Mvjhw6 = (Cxjhw6 & Jxjhw6); +assign Jxjhw6 = (~(L0g7z6[19] & Rabov6)); +assign Cxjhw6 = (Qxjhw6 & Xxjhw6); +assign Xxjhw6 = (~(Wildt6 & Mbbov6)); +assign Qxjhw6 = (~(L0g7z6[3] & Gcmnv6)); +assign Tmi8v6 = (~(Eyjhw6 & Lyjhw6)); +assign Lyjhw6 = (Syjhw6 & Zyjhw6); +assign Zyjhw6 = (~(Udqdt6 & U8bov6)); +assign Syjhw6 = (Gzjhw6 & Nzjhw6); +assign Nzjhw6 = (~(Rrndt6 & P9bov6)); +assign Gzjhw6 = (~(W9bov6 & Onf7z6[18])); +assign Eyjhw6 = (Uzjhw6 & B0khw6); +assign B0khw6 = (~(L0g7z6[18] & Rabov6)); +assign Uzjhw6 = (I0khw6 & P0khw6); +assign P0khw6 = (~(Zkldt6 & Mbbov6)); +assign I0khw6 = (~(L0g7z6[2] & Gcmnv6)); +assign Mmi8v6 = (~(W0khw6 & D1khw6)); +assign D1khw6 = (K1khw6 & R1khw6); +assign R1khw6 = (~(Sgqdt6 & U8bov6)); +assign K1khw6 = (Y1khw6 & F2khw6); +assign F2khw6 = (~(Qundt6 & P9bov6)); +assign Y1khw6 = (~(W9bov6 & Onf7z6[17])); +assign W0khw6 = (M2khw6 & T2khw6); +assign T2khw6 = (~(L0g7z6[17] & Rabov6)); +assign M2khw6 = (A3khw6 & H3khw6); +assign H3khw6 = (~(Cnldt6 & Mbbov6)); +assign A3khw6 = (~(L0g7z6[1] & Gcmnv6)); +assign Fmi8v6 = (~(O3khw6 & V3khw6)); +assign V3khw6 = (C4khw6 & J4khw6); +assign J4khw6 = (~(Qjqdt6 & U8bov6)); +assign C4khw6 = (Q4khw6 & X4khw6); +assign X4khw6 = (~(Pxndt6 & P9bov6)); +assign Q4khw6 = (~(W9bov6 & Onf7z6[16])); +assign O3khw6 = (E5khw6 & L5khw6); +assign L5khw6 = (~(L0g7z6[16] & Rabov6)); +assign E5khw6 = (S5khw6 & Z5khw6); +assign Z5khw6 = (~(Fpldt6 & Mbbov6)); +assign S5khw6 = (~(L0g7z6[0] & Gcmnv6)); +assign Yli8v6 = (~(G6khw6 & N6khw6)); +assign N6khw6 = (U6khw6 & B7khw6); +assign B7khw6 = (~(Omqdt6 & U8bov6)); +assign U6khw6 = (I7khw6 & P7khw6); +assign P7khw6 = (~(O0odt6 & P9bov6)); +assign I7khw6 = (~(Onf7z6[15] & Ohkov6)); +assign G6khw6 = (W7khw6 & D8khw6); +assign D8khw6 = (~(Irldt6 & Mbbov6)); +assign W7khw6 = (~(L0g7z6[15] & Rabov6)); +assign Rli8v6 = (~(K8khw6 & R8khw6)); +assign R8khw6 = (Y8khw6 & F9khw6); +assign F9khw6 = (~(Mpqdt6 & U8bov6)); +assign Y8khw6 = (M9khw6 & T9khw6); +assign T9khw6 = (~(N3odt6 & P9bov6)); +assign M9khw6 = (~(Onf7z6[14] & Ohkov6)); +assign K8khw6 = (Aakhw6 & Hakhw6); +assign Hakhw6 = (~(Ltldt6 & Mbbov6)); +assign Aakhw6 = (~(L0g7z6[14] & Rabov6)); +assign Kli8v6 = (~(Oakhw6 & Vakhw6)); +assign Vakhw6 = (Cbkhw6 & Jbkhw6); +assign Jbkhw6 = (~(Ksqdt6 & U8bov6)); +assign Cbkhw6 = (Qbkhw6 & Xbkhw6); +assign Xbkhw6 = (~(M6odt6 & P9bov6)); +assign Qbkhw6 = (~(Onf7z6[13] & Ohkov6)); +assign Oakhw6 = (Eckhw6 & Lckhw6); +assign Lckhw6 = (~(Ovldt6 & Mbbov6)); +assign Eckhw6 = (~(L0g7z6[13] & Rabov6)); +assign Dli8v6 = (~(Sckhw6 & Zckhw6)); +assign Zckhw6 = (Gdkhw6 & Ndkhw6); +assign Ndkhw6 = (~(Ivqdt6 & U8bov6)); +assign Gdkhw6 = (Udkhw6 & Bekhw6); +assign Bekhw6 = (~(L9odt6 & P9bov6)); +assign Udkhw6 = (~(Onf7z6[12] & Ohkov6)); +assign Sckhw6 = (Iekhw6 & Pekhw6); +assign Pekhw6 = (~(Rxldt6 & Mbbov6)); +assign Iekhw6 = (~(L0g7z6[12] & Rabov6)); +assign Wki8v6 = (~(Wekhw6 & Dfkhw6)); +assign Dfkhw6 = (Kfkhw6 & Rfkhw6); +assign Rfkhw6 = (~(Gyqdt6 & U8bov6)); +assign Kfkhw6 = (Yfkhw6 & Fgkhw6); +assign Fgkhw6 = (~(Kcodt6 & P9bov6)); +assign Yfkhw6 = (~(Onf7z6[11] & Ohkov6)); +assign Wekhw6 = (Mgkhw6 & Tgkhw6); +assign Tgkhw6 = (~(Uzldt6 & Mbbov6)); +assign Mgkhw6 = (~(L0g7z6[11] & Rabov6)); +assign Pki8v6 = (~(Ahkhw6 & Hhkhw6)); +assign Hhkhw6 = (Ohkhw6 & Vhkhw6); +assign Vhkhw6 = (~(E1rdt6 & U8bov6)); +assign Ohkhw6 = (Cikhw6 & Jikhw6); +assign Jikhw6 = (~(Jfodt6 & P9bov6)); +assign Cikhw6 = (~(Onf7z6[10] & Ohkov6)); +assign Ahkhw6 = (Qikhw6 & Xikhw6); +assign Xikhw6 = (~(X1mdt6 & Mbbov6)); +assign Qikhw6 = (~(L0g7z6[10] & Rabov6)); +assign Iki8v6 = (~(Ejkhw6 & Ljkhw6)); +assign Ljkhw6 = (Sjkhw6 & Zjkhw6); +assign Zjkhw6 = (~(C4rdt6 & U8bov6)); +assign Sjkhw6 = (Gkkhw6 & Nkkhw6); +assign Nkkhw6 = (~(Iiodt6 & P9bov6)); +assign Gkkhw6 = (~(Onf7z6[9] & Ohkov6)); +assign Ejkhw6 = (Ukkhw6 & Blkhw6); +assign Blkhw6 = (~(A4mdt6 & Mbbov6)); +assign Ukkhw6 = (~(L0g7z6[9] & Rabov6)); +assign Bki8v6 = (~(Ilkhw6 & Plkhw6)); +assign Plkhw6 = (Wlkhw6 & Dmkhw6); +assign Dmkhw6 = (~(A7rdt6 & U8bov6)); +assign Wlkhw6 = (Kmkhw6 & Rmkhw6); +assign Rmkhw6 = (~(Hlodt6 & P9bov6)); +assign Kmkhw6 = (~(Onf7z6[8] & Ohkov6)); +assign Ilkhw6 = (Ymkhw6 & Fnkhw6); +assign Fnkhw6 = (~(D6mdt6 & Mbbov6)); +assign Ymkhw6 = (~(L0g7z6[8] & Rabov6)); +assign Uji8v6 = (~(Mnkhw6 & Tnkhw6)); +assign Tnkhw6 = (Aokhw6 & Hokhw6); +assign Hokhw6 = (~(Y9rdt6 & U8bov6)); +assign Aokhw6 = (Ookhw6 & Vokhw6); +assign Vokhw6 = (~(Goodt6 & P9bov6)); +assign Ookhw6 = (~(Onf7z6[7] & Ohkov6)); +assign Mnkhw6 = (Cpkhw6 & Jpkhw6); +assign Jpkhw6 = (~(G8mdt6 & Mbbov6)); +assign Cpkhw6 = (~(L0g7z6[7] & Rabov6)); +assign Nji8v6 = (~(Qpkhw6 & Xpkhw6)); +assign Xpkhw6 = (Eqkhw6 & Lqkhw6); +assign Lqkhw6 = (~(Wcrdt6 & U8bov6)); +assign Eqkhw6 = (Sqkhw6 & Zqkhw6); +assign Zqkhw6 = (~(Frodt6 & P9bov6)); +assign Sqkhw6 = (~(Onf7z6[6] & Ohkov6)); +assign Qpkhw6 = (Grkhw6 & Nrkhw6); +assign Nrkhw6 = (~(Jamdt6 & Mbbov6)); +assign Grkhw6 = (~(L0g7z6[6] & Rabov6)); +assign Gji8v6 = (~(Urkhw6 & Bskhw6)); +assign Bskhw6 = (Iskhw6 & Pskhw6); +assign Pskhw6 = (~(Ufrdt6 & U8bov6)); +assign Iskhw6 = (Wskhw6 & Dtkhw6); +assign Dtkhw6 = (~(Euodt6 & P9bov6)); +assign Wskhw6 = (~(Onf7z6[5] & Ohkov6)); +assign Urkhw6 = (Ktkhw6 & Rtkhw6); +assign Rtkhw6 = (~(Mcmdt6 & Mbbov6)); +assign Ktkhw6 = (~(L0g7z6[5] & Rabov6)); +assign Zii8v6 = (~(Ytkhw6 & Fukhw6)); +assign Fukhw6 = (Mukhw6 & Tukhw6); +assign Tukhw6 = (~(Sirdt6 & U8bov6)); +assign Mukhw6 = (Avkhw6 & Hvkhw6); +assign Hvkhw6 = (~(Dxodt6 & P9bov6)); +assign Avkhw6 = (~(Onf7z6[4] & Ohkov6)); +assign Ytkhw6 = (Ovkhw6 & Vvkhw6); +assign Vvkhw6 = (~(Pemdt6 & Mbbov6)); +assign Ovkhw6 = (~(L0g7z6[4] & Rabov6)); +assign Sii8v6 = (~(Cwkhw6 & Jwkhw6)); +assign Jwkhw6 = (Qwkhw6 & Xwkhw6); +assign Xwkhw6 = (~(Qlrdt6 & U8bov6)); +assign Qwkhw6 = (Exkhw6 & Lxkhw6); +assign Lxkhw6 = (~(C0pdt6 & P9bov6)); +assign Exkhw6 = (~(Onf7z6[3] & Ohkov6)); +assign Cwkhw6 = (Sxkhw6 & Zxkhw6); +assign Zxkhw6 = (~(Sgmdt6 & Mbbov6)); +assign Sxkhw6 = (~(L0g7z6[3] & Rabov6)); +assign Lii8v6 = (~(Gykhw6 & Nykhw6)); +assign Nykhw6 = (Uykhw6 & Bzkhw6); +assign Bzkhw6 = (~(Oordt6 & U8bov6)); +assign Uykhw6 = (Izkhw6 & Pzkhw6); +assign Pzkhw6 = (~(A3pdt6 & P9bov6)); +assign Izkhw6 = (~(Onf7z6[2] & Ohkov6)); +assign Gykhw6 = (Wzkhw6 & D0lhw6); +assign D0lhw6 = (~(Vimdt6 & Mbbov6)); +assign Wzkhw6 = (~(L0g7z6[2] & Rabov6)); +assign Eii8v6 = (~(K0lhw6 & R0lhw6)); +assign R0lhw6 = (Y0lhw6 & F1lhw6); +assign F1lhw6 = (~(Mrrdt6 & U8bov6)); +assign U8bov6 = (M1lhw6 & T1lhw6); +assign Y0lhw6 = (A2lhw6 & H2lhw6); +assign H2lhw6 = (~(Y5pdt6 & P9bov6)); +assign P9bov6 = (M1lhw6 & O2lhw6); +assign O2lhw6 = (!T1lhw6); +assign A2lhw6 = (~(Onf7z6[1] & Ohkov6)); +assign Ohkov6 = (Gcmnv6 | W9bov6); +assign W9bov6 = (V2lhw6 & C3lhw6); +assign C3lhw6 = (~(M1lhw6 | Rabov6)); +assign V2lhw6 = (~(Mbbov6 | Gcmnv6)); +assign K0lhw6 = (J3lhw6 & Q3lhw6); +assign Q3lhw6 = (~(Ykmdt6 & Mbbov6)); +assign Mbbov6 = (~(X3lhw6 & E4lhw6)); +assign J3lhw6 = (~(L0g7z6[1] & Rabov6)); +assign Xhi8v6 = (Ehfhw6 ? L4lhw6 : Ntg7z6[3]); +assign Qhi8v6 = (Efhov6 ? L4lhw6 : Oac7z6[3]); +assign Jhi8v6 = (Ehfhw6 ? S4lhw6 : Ntg7z6[2]); +assign Chi8v6 = (Efhov6 ? S4lhw6 : Oac7z6[2]); +assign Efhov6 = (!K2jhw6); +assign Vgi8v6 = (Ehfhw6 ? Xehov6 : Ntg7z6[1]); +assign Ogi8v6 = (~(Z4lhw6 & G5lhw6)); +assign G5lhw6 = (~(Z8c7z6[0] & Vs9ov6)); +assign Z4lhw6 = (N5lhw6 & U5lhw6); +assign U5lhw6 = (~(B6lhw6 & I6lhw6)); +assign N5lhw6 = (~(P6lhw6 & Nifhw6)); +assign Hgi8v6 = (~(W6lhw6 & D7lhw6)); +assign D7lhw6 = (~(Z8c7z6[1] & Vs9ov6)); +assign W6lhw6 = (K7lhw6 & R7lhw6); +assign R7lhw6 = (~(B6lhw6 & Xehov6)); +assign K7lhw6 = (~(P6lhw6 & Gifhw6)); +assign Agi8v6 = (~(Y7lhw6 & F8lhw6)); +assign F8lhw6 = (~(Z8c7z6[2] & Vs9ov6)); +assign Y7lhw6 = (M8lhw6 & T8lhw6); +assign T8lhw6 = (~(B6lhw6 & S4lhw6)); +assign M8lhw6 = (~(P6lhw6 & Zhfhw6)); +assign Tfi8v6 = (~(A9lhw6 & H9lhw6)); +assign H9lhw6 = (~(Z8c7z6[3] & Vs9ov6)); +assign A9lhw6 = (O9lhw6 & V9lhw6); +assign V9lhw6 = (~(B6lhw6 & L4lhw6)); +assign B6lhw6 = (~(Vs9ov6 | P6lhw6)); +assign O9lhw6 = (~(P6lhw6 & Shfhw6)); +assign Mfi8v6 = (Ehfhw6 ? I6lhw6 : Ntg7z6[0]); +assign Ehfhw6 = (Kkfhw6 & Calhw6); +assign Kkfhw6 = (Snvnv6 & Jalhw6); +assign Jalhw6 = (Qalhw6 | Fzfhw6); +assign Ffi8v6 = (~(Xalhw6 & Eblhw6)); +assign Eblhw6 = (~(O5h7z6[0] & Lhfhw6)); +assign Xalhw6 = (Lblhw6 & Sblhw6); +assign Sblhw6 = (~(Zblhw6 & Lvg7z6[0])); +assign Lblhw6 = (Jyihw6 | Gclhw6); +assign Yei8v6 = (~(Nclhw6 & Uclhw6)); +assign Uclhw6 = (~(O5h7z6[1] & Lhfhw6)); +assign Nclhw6 = (Bdlhw6 & Idlhw6); +assign Idlhw6 = (~(Zblhw6 & Lvg7z6[1])); +assign Bdlhw6 = (Jyihw6 | Pdlhw6); +assign Rei8v6 = (~(Wdlhw6 & Delhw6)); +assign Delhw6 = (~(O5h7z6[2] & Lhfhw6)); +assign Wdlhw6 = (Kelhw6 & Relhw6); +assign Relhw6 = (~(Zblhw6 & Lvg7z6[2])); +assign Kelhw6 = (Jyihw6 | Yelhw6); +assign Kei8v6 = (~(Fflhw6 & Mflhw6)); +assign Mflhw6 = (~(O5h7z6[3] & Lhfhw6)); +assign Fflhw6 = (Tflhw6 & Aglhw6); +assign Aglhw6 = (~(Zblhw6 & Lvg7z6[3])); +assign Zblhw6 = (~(Lhfhw6 | Zzihw6)); +assign Lhfhw6 = (!Hglhw6); +assign Tflhw6 = (Jyihw6 | Oglhw6); +assign Jyihw6 = (~(Hglhw6 & Zzihw6)); +assign Hglhw6 = (Gr2et6 & Vglhw6); +assign Dei8v6 = (K2jhw6 ? Oac7z6[0] : I6lhw6); +assign K2jhw6 = (W1jhw6 & Chlhw6); +assign Chlhw6 = (~(Ubhdt6 & Jhlhw6)); +assign Jhlhw6 = (~(Qhlhw6 & Dcnov6)); +assign Qhlhw6 = (~(Xhlhw6 & Ixfov6)); +assign W1jhw6 = (~(N3onv6 & Eilhw6)); +assign Wdi8v6 = (Trnov6 & Lilhw6); +assign Lilhw6 = (Silhw6 | Zilhw6); +assign Pdi8v6 = (~(Gjlhw6 & Njlhw6)); +assign Njlhw6 = (~(Ujlhw6 & Frnov6)); +assign Frnov6 = (Bklhw6 & C0wnv6); +assign Ujlhw6 = (Qyddt6 & Mrnov6); +assign Gjlhw6 = (~(Trnov6 & Iklhw6)); +assign Iklhw6 = (~(Pklhw6 & Wklhw6)); +assign Wklhw6 = (~(Vsnov6 & Ovbdt6)); +assign Pklhw6 = (~(Jtnov6 & Zec7z6[4])); +assign Idi8v6 = (Pyeov6 ? Dllhw6 : R7fet6); +assign Dllhw6 = (!Lunov6); +assign Bdi8v6 = (Kllhw6 & Rllhw6); +assign Rllhw6 = (Yllhw6 & Fmlhw6); +assign Fmlhw6 = (Mmlhw6 & Tmlhw6); +assign Tmlhw6 = (Anlhw6 & Hnlhw6); +assign Hnlhw6 = (Onlhw6 & Vnlhw6); +assign Anlhw6 = (W4onv6 & Hffhw6); +assign Mmlhw6 = (~(Colhw6 | Mtsov6)); +assign Mtsov6 = (Jolhw6 & Qolhw6); +assign Colhw6 = (Jhsov6 | Xolhw6); +assign Yllhw6 = (Eplhw6 & Lplhw6); +assign Lplhw6 = (Splhw6 & F0fhw6); +assign Splhw6 = (Zplhw6 & Calhw6); +assign Calhw6 = (!Fzfhw6); +assign Fzfhw6 = (Gqlhw6 & Nqlhw6); +assign Eplhw6 = (Uqlhw6 & I4ghw6); +assign Uqlhw6 = (Brlhw6 & Irlhw6); +assign Irlhw6 = (~(Prlhw6 & Zec7z6[10])); +assign Prlhw6 = (Wrlhw6 & Dslhw6); +assign Wrlhw6 = (~(Zec7z6[9] & Zec7z6[8])); +assign Kllhw6 = (Kslhw6 & Rslhw6); +assign Rslhw6 = (Yslhw6 & Ftlhw6); +assign Ftlhw6 = (Mtlhw6 & Ttlhw6); +assign Ttlhw6 = (Aulhw6 & Hulhw6); +assign Mtlhw6 = (Oulhw6 & Vulhw6); +assign Yslhw6 = (Cvlhw6 & Jvlhw6); +assign Cvlhw6 = (Qvlhw6 & Xvlhw6); +assign Kslhw6 = (Ewlhw6 & Lwlhw6); +assign Lwlhw6 = (~(Swlhw6 | Zwlhw6)); +assign Swlhw6 = (Gxlhw6 | Nxlhw6); +assign Ewlhw6 = (Uxlhw6 & Bylhw6); +assign Uxlhw6 = (Iylhw6 & Trnov6); +assign Uci8v6 = (~(Pylhw6 & Wylhw6)); +assign Wylhw6 = (~(Bfd7z6[0] & M8mnv6)); +assign Pylhw6 = (Dzlhw6 & Kzlhw6); +assign Kzlhw6 = (~(Rzlhw6 & W6mnv6)); +assign W6mnv6 = (~(Yzlhw6 & F0mhw6)); +assign F0mhw6 = (M0mhw6 & Iwnov6); +assign M0mhw6 = (~(T0mhw6 & A1mhw6)); +assign T0mhw6 = (H1mhw6 ? Bfd7z6[4] : Bfd7z6[5]); +assign Yzlhw6 = (O1mhw6 & V1mhw6); +assign V1mhw6 = (~(F8mnv6 & Kboov6)); +assign O1mhw6 = (C2mhw6 | Pdc7z6[1]); +assign Dzlhw6 = (~(F8mnv6 & U5mnv6)); +assign Nci8v6 = (~(J2mhw6 & Q2mhw6)); +assign Q2mhw6 = (K0mnv6 | D7mnv6); +assign K0mnv6 = (~(X2mhw6 & A1mhw6)); +assign X2mhw6 = (H1mhw6 ? Bfd7z6[3] : Bfd7z6[4]); +assign J2mhw6 = (~(M8mnv6 & Bfd7z6[5])); +assign Gci8v6 = (~(E3mhw6 & L3mhw6)); +assign L3mhw6 = (~(M1mnv6 & Rzlhw6)); +assign M1mnv6 = (S3mhw6 & A1mhw6); +assign S3mhw6 = (H1mhw6 ? Bfd7z6[2] : Bfd7z6[3]); +assign E3mhw6 = (~(Bfd7z6[4] & M8mnv6)); +assign Zbi8v6 = (~(Z3mhw6 & G4mhw6)); +assign G4mhw6 = (C3mnv6 | D7mnv6); +assign C3mnv6 = (~(N4mhw6 & A1mhw6)); +assign N4mhw6 = (H1mhw6 ? Bfd7z6[1] : Bfd7z6[2]); +assign Z3mhw6 = (~(M8mnv6 & Bfd7z6[3])); +assign Sbi8v6 = (~(U4mhw6 & B5mhw6)); +assign B5mhw6 = (X3mnv6 | D7mnv6); +assign X3mnv6 = (~(I5mhw6 & A1mhw6)); +assign I5mhw6 = (H1mhw6 ? Bfd7z6[0] : Bfd7z6[1]); +assign U4mhw6 = (~(Bfd7z6[2] & M8mnv6)); +assign Lbi8v6 = (~(P5mhw6 & W5mhw6)); +assign W5mhw6 = (~(M8mnv6 & Bfd7z6[1])); +assign P5mhw6 = (D6mhw6 & K6mhw6); +assign K6mhw6 = (D7mnv6 | S4mnv6); +assign S4mnv6 = (R6mhw6 & Y6mhw6); +assign Y6mhw6 = (~(Pdc7z6[1] & F7mhw6)); +assign R6mhw6 = (M7mhw6 & T7mhw6); +assign T7mhw6 = (~(A8mhw6 & A1mhw6)); +assign A8mhw6 = (H1mhw6 ? Bfd7z6[5] : Bfd7z6[0]); +assign H1mhw6 = (~(H8mhw6 | Tao7v6)); +assign H8mhw6 = (!Yiaov6); +assign M7mhw6 = (~(Kboov6 & B6mnv6)); +assign D7mnv6 = (!Rzlhw6); +assign Rzlhw6 = (~(U5mnv6 | M8mnv6)); +assign M8mnv6 = (D61ov6 & O8mhw6); +assign O8mhw6 = (~(K6tov6 & V8mhw6)); +assign V8mhw6 = (~(C9mhw6 & Pacdt6)); +assign C9mhw6 = (C2mhw6 & Iwnov6); +assign K6tov6 = (~(J9mhw6 & C2mhw6)); +assign C2mhw6 = (!F7mhw6); +assign F7mhw6 = (~(Q9mhw6 & Z8oov6)); +assign Q9mhw6 = (~(X9mhw6 & Iwnov6)); +assign J9mhw6 = (Eamhw6 & Iwnov6); +assign Iwnov6 = (~(X9mhw6 & A4jhw6)); +assign Eamhw6 = (~(N3onv6 & A1mhw6)); +assign A1mhw6 = (!Lamhw6); +assign D6mhw6 = (~(U5mnv6 & B6mnv6)); +assign B6mnv6 = (!F8mnv6); +assign F8mnv6 = (Samhw6 & Zamhw6); +assign Zamhw6 = (Qdcdt6 ? Nbmhw6 : Gbmhw6); +assign Nbmhw6 = (~(Lp0ov6 & E3c7z6[1])); +assign Gbmhw6 = (~(Ubmhw6 & Bcmhw6)); +assign Bcmhw6 = (Icmhw6 & Pcmhw6); +assign Icmhw6 = (Wkd7z6[1] | Jamnv6); +assign Ubmhw6 = (Lp0ov6 & Wcmhw6); +assign Wcmhw6 = (Vnd7z6[1] | Ddmhw6); +assign Samhw6 = (Lp0ov6 ? Rdmhw6 : Kdmhw6); +assign Lp0ov6 = (Af1ov6 & Gpmov6); +assign Rdmhw6 = (~(Pic7z6[1] & Ir0ov6)); +assign U5mnv6 = (~(Lamhw6 | D61ov6)); +assign Lamhw6 = (Cgc7z6[3] ? Cgc7z6[1] : Ydmhw6); +assign Ebi8v6 = (~(Femhw6 & Memhw6)); +assign Memhw6 = (~(Riaov6 & Lpc7z6[0])); +assign Xai8v6 = (~(Temhw6 & Afmhw6)); +assign Afmhw6 = (~(Hfmhw6 & Snvnv6)); +assign Hfmhw6 = (~(Ofmhw6 | Pacdt6)); +assign Temhw6 = (~(Vfmhw6 & Efcdt6)); +assign Vfmhw6 = (Qv0ov6 & X6xnv6); +assign Qai8v6 = (~(Brlhw6 | Cgmhw6)); +assign Cgmhw6 = (!Trnov6); +assign Brlhw6 = (~(Jgmhw6 & Qgmhw6)); +assign Qgmhw6 = (Zec7z6[12] & Zec7z6[8]); +assign Jgmhw6 = (Z3fhw6 & Xgmhw6); +assign Cai8v6 = (Ehmhw6 & Trnov6); +assign Ehmhw6 = (Lhmhw6 & Dslhw6); +assign Dslhw6 = (Shmhw6 | Zhmhw6); +assign Lhmhw6 = (Gbfhw6 | Gimhw6); +assign Gimhw6 = (~(Painv6 | Zec7z6[8])); +assign O9i8v6 = (Nimhw6 & Uimhw6); +assign Uimhw6 = (Tuddt6 | Bjmhw6); +assign Bjmhw6 = (Ffadt6 & Lamov6); +assign Lamov6 = (Tnzdt6 | Etinv6); +assign Nimhw6 = (Samov6 & Ijmhw6); +assign Samov6 = (~(Dj9ov6 & O5a7z6)); +assign H9i8v6 = (~(Pjmhw6 | V9i8v6)); +assign Pjmhw6 = (Vs9ov6 & Wjmhw6); +assign Wjmhw6 = (~(Dkmhw6 & Oaadt6)); +assign Dkmhw6 = (Wpvnv6 & Kkmhw6); +assign Wpvnv6 = (~(Rkmhw6 & Ykmhw6)); +assign Ykmhw6 = (Flmhw6 & Q0wnv6); +assign Flmhw6 = (~(Dj9ov6 | S1wnv6)); +assign Rkmhw6 = (C9mov6 & Mlmhw6); +assign T8i8v6 = (!Tlmhw6); +assign Tlmhw6 = (Ammhw6 ? Xzhhw6 : J6jnv6); +assign M8i8v6 = (~(Hmmhw6 & Ommhw6)); +assign Ommhw6 = (Vmmhw6 & Cnmhw6); +assign Cnmhw6 = (~(Jnmhw6 & Uqd7z6[20])); +assign Vmmhw6 = (Qnmhw6 & Xnmhw6); +assign Qnmhw6 = (~(Eomhw6 & Lomhw6)); +assign Hmmhw6 = (Somhw6 & Zomhw6); +assign Zomhw6 = (~(V1c7z6[31] & Gpmhw6)); +assign Somhw6 = (Npmhw6 & Upmhw6); +assign Upmhw6 = (~(Bqmhw6 & Zec7z6[3])); +assign F8i8v6 = (~(Iqmhw6 & Pqmhw6)); +assign Pqmhw6 = (Wqmhw6 & Drmhw6); +assign Drmhw6 = (~(Jnmhw6 & Uqd7z6[19])); +assign Wqmhw6 = (Krmhw6 & Xnmhw6); +assign Krmhw6 = (~(Rrmhw6 & Eomhw6)); +assign Iqmhw6 = (Yrmhw6 & Fsmhw6); +assign Fsmhw6 = (~(V1c7z6[30] & Gpmhw6)); +assign Yrmhw6 = (Msmhw6 & Tsmhw6); +assign Tsmhw6 = (~(Bqmhw6 & Zec7z6[2])); +assign Y7i8v6 = (~(Atmhw6 & Htmhw6)); +assign Htmhw6 = (Otmhw6 & Vtmhw6); +assign Vtmhw6 = (~(Jnmhw6 & Uqd7z6[18])); +assign Otmhw6 = (Cumhw6 & Xnmhw6); +assign Cumhw6 = (~(Jumhw6 & Eomhw6)); +assign Atmhw6 = (Qumhw6 & Xumhw6); +assign Xumhw6 = (~(V1c7z6[29] & Gpmhw6)); +assign Qumhw6 = (Evmhw6 & Lvmhw6); +assign Lvmhw6 = (~(Bqmhw6 & Zec7z6[1])); +assign R7i8v6 = (~(Svmhw6 & Zvmhw6)); +assign Zvmhw6 = (Gwmhw6 & Nwmhw6); +assign Nwmhw6 = (~(Jnmhw6 & Uqd7z6[17])); +assign Gwmhw6 = (Uwmhw6 & Xnmhw6); +assign Uwmhw6 = (~(Bxmhw6 & Eomhw6)); +assign Svmhw6 = (Ixmhw6 & Pxmhw6); +assign Pxmhw6 = (~(V1c7z6[28] & Gpmhw6)); +assign Ixmhw6 = (Wxmhw6 & Dymhw6); +assign Dymhw6 = (~(Bqmhw6 & Zec7z6[0])); +assign K7i8v6 = (~(Kymhw6 & Rymhw6)); +assign Rymhw6 = (Yymhw6 & Fzmhw6); +assign Fzmhw6 = (~(Bqmhw6 & Zec7z6[10])); +assign Yymhw6 = (Mzmhw6 & Xnmhw6); +assign Mzmhw6 = (~(Jnmhw6 & Ovbdt6)); +assign Jnmhw6 = (Ammhw6 & Tzmhw6); +assign Tzmhw6 = (~(A0nhw6 & Uqehw6)); +assign A0nhw6 = (H0nhw6 & O0nhw6); +assign H0nhw6 = (~(V0nhw6 & E3fhw6)); +assign Kymhw6 = (C1nhw6 & J1nhw6); +assign J1nhw6 = (~(V1c7z6[27] & Gpmhw6)); +assign C1nhw6 = (Q1nhw6 & X1nhw6); +assign X1nhw6 = (~(Eomhw6 & E2nhw6)); +assign Q1nhw6 = (~(L2nhw6 & Uqd7z6[19])); +assign D7i8v6 = (~(S2nhw6 & Z2nhw6)); +assign Z2nhw6 = (G3nhw6 & N3nhw6); +assign N3nhw6 = (~(Eomhw6 & U3nhw6)); +assign G3nhw6 = (B4nhw6 & Xnmhw6); +assign B4nhw6 = (~(Bqmhw6 & Zec7z6[30])); +assign S2nhw6 = (I4nhw6 & P4nhw6); +assign P4nhw6 = (~(L2nhw6 & Uqd7z6[18])); +assign I4nhw6 = (~(V1c7z6[26] & Gpmhw6)); +assign W6i8v6 = (~(W4nhw6 & D5nhw6)); +assign D5nhw6 = (K5nhw6 & R5nhw6); +assign R5nhw6 = (~(Eomhw6 & Y5nhw6)); +assign K5nhw6 = (F6nhw6 & Xnmhw6); +assign F6nhw6 = (~(Bqmhw6 & M6nhw6)); +assign W4nhw6 = (T6nhw6 & A7nhw6); +assign A7nhw6 = (~(L2nhw6 & Uqd7z6[17])); +assign T6nhw6 = (~(V1c7z6[25] & Gpmhw6)); +assign P6i8v6 = (~(H7nhw6 & O7nhw6)); +assign O7nhw6 = (V7nhw6 & C8nhw6); +assign C8nhw6 = (~(Eomhw6 & J8nhw6)); +assign V7nhw6 = (Q8nhw6 & Xnmhw6); +assign Xnmhw6 = (~(X8nhw6 & E9nhw6)); +assign E9nhw6 = (~(L9nhw6 & S9nhw6)); +assign Q8nhw6 = (~(Bqmhw6 & Z9nhw6)); +assign H7nhw6 = (Ganhw6 & Nanhw6); +assign Nanhw6 = (~(L2nhw6 & Ovbdt6)); +assign Ganhw6 = (~(V1c7z6[24] & Gpmhw6)); +assign I6i8v6 = (~(Uanhw6 & Bbnhw6)); +assign Bbnhw6 = (Ibnhw6 & Pbnhw6); +assign Pbnhw6 = (~(Wbnhw6 & Lomhw6)); +assign Ibnhw6 = (Dcnhw6 & Kcnhw6); +assign Dcnhw6 = (~(Rcnhw6 & Ycnhw6)); +assign Rcnhw6 = (M6nhw6 ^ Painv6); +assign Uanhw6 = (Fdnhw6 & Mdnhw6); +assign Mdnhw6 = (~(V1c7z6[23] & Gpmhw6)); +assign Fdnhw6 = (Tdnhw6 & Aenhw6); +assign Aenhw6 = (~(Eomhw6 & Q1s8v6)); +assign Tdnhw6 = (~(Henhw6 & Oenhw6)); +assign B6i8v6 = (~(Venhw6 & Cfnhw6)); +assign Cfnhw6 = (Jfnhw6 & Qfnhw6); +assign Qfnhw6 = (~(Ycnhw6 & Msnnv6)); +assign Msnnv6 = (Zec7z6[10] ^ Offhw6); +assign Jfnhw6 = (Xfnhw6 & Kcnhw6); +assign Xfnhw6 = (~(Wbnhw6 & Rrmhw6)); +assign Venhw6 = (Egnhw6 & Lgnhw6); +assign Lgnhw6 = (~(V1c7z6[22] & Gpmhw6)); +assign Egnhw6 = (Sgnhw6 & Zgnhw6); +assign Zgnhw6 = (~(Eomhw6 & Ryr8v6)); +assign Sgnhw6 = (~(Uqd7z6[22] & Henhw6)); +assign U5i8v6 = (~(Ghnhw6 & Nhnhw6)); +assign Nhnhw6 = (Uhnhw6 & Binhw6); +assign Binhw6 = (~(Ycnhw6 & Zec7z6[9])); +assign Uhnhw6 = (Iinhw6 & Kcnhw6); +assign Iinhw6 = (~(Wbnhw6 & Jumhw6)); +assign Ghnhw6 = (Pinhw6 & Winhw6); +assign Winhw6 = (~(V1c7z6[21] & Gpmhw6)); +assign Pinhw6 = (Djnhw6 & Kjnhw6); +assign Kjnhw6 = (~(Eomhw6 & Svr8v6)); +assign Djnhw6 = (~(Uqd7z6[21] & Henhw6)); +assign N5i8v6 = (~(Rjnhw6 & Yjnhw6)); +assign Yjnhw6 = (Fknhw6 & Mknhw6); +assign Mknhw6 = (~(Ycnhw6 & Zec7z6[8])); +assign Fknhw6 = (Tknhw6 & Kcnhw6); +assign Kcnhw6 = (~(X8nhw6 & Alnhw6)); +assign Alnhw6 = (~(Hlnhw6 & Olnhw6)); +assign Hlnhw6 = (Pxnnv6 & H2sov6); +assign X8nhw6 = (Ammhw6 & Vlnhw6); +assign Vlnhw6 = (~(Olnhw6 & Painv6)); +assign Tknhw6 = (~(Wbnhw6 & Bxmhw6)); +assign Rjnhw6 = (Cmnhw6 & Jmnhw6); +assign Jmnhw6 = (~(V1c7z6[20] & Gpmhw6)); +assign Cmnhw6 = (Qmnhw6 & Xmnhw6); +assign Xmnhw6 = (~(Eomhw6 & Tsr8v6)); +assign Qmnhw6 = (~(Uqd7z6[20] & Henhw6)); +assign G5i8v6 = (~(Ennhw6 & Lnnhw6)); +assign Lnnhw6 = (Snnhw6 & Znnhw6); +assign Znnhw6 = (~(Ycnhw6 & Zec7z6[7])); +assign Snnhw6 = (Gonhw6 & Nonhw6); +assign Gonhw6 = (~(Eomhw6 & Uonhw6)); +assign Ennhw6 = (~(Bpnhw6 | Ipnhw6)); +assign Ipnhw6 = (Ammhw6 ? Ppnhw6 : V1c7z6[19]); +assign Ppnhw6 = (Wpnhw6 & Zec7z6[27]); +assign Bpnhw6 = (~(Dqnhw6 & Kqnhw6)); +assign Kqnhw6 = (~(Uqd7z6[19] & Henhw6)); +assign Dqnhw6 = (~(Wbnhw6 & E2nhw6)); +assign Z4i8v6 = (~(Rqnhw6 & Yqnhw6)); +assign Yqnhw6 = (Frnhw6 & Mrnhw6); +assign Mrnhw6 = (~(Ycnhw6 & Zec7z6[6])); +assign Ycnhw6 = (Ammhw6 & L4sov6); +assign Frnhw6 = (Trnhw6 & Nonhw6); +assign Trnhw6 = (~(Eomhw6 & Asnhw6)); +assign Rqnhw6 = (~(Hsnhw6 | Osnhw6)); +assign Osnhw6 = (Ammhw6 ? Vsnhw6 : V1c7z6[18]); +assign Vsnhw6 = (Wpnhw6 & M6nhw6); +assign Hsnhw6 = (~(Ctnhw6 & Jtnhw6)); +assign Jtnhw6 = (~(Uqd7z6[18] & Henhw6)); +assign Ctnhw6 = (~(Wbnhw6 & U3nhw6)); +assign S4i8v6 = (~(Qtnhw6 & Xtnhw6)); +assign Xtnhw6 = (Eunhw6 & Lunhw6); +assign Lunhw6 = (~(Uqd7z6[17] & Henhw6)); +assign Eunhw6 = (Sunhw6 & Nonhw6); +assign Sunhw6 = (~(Eomhw6 & Zunhw6)); +assign Eomhw6 = (Gvnhw6 & Ammhw6); +assign Gvnhw6 = (Nvnhw6 & Painv6); +assign Qtnhw6 = (~(Uvnhw6 | Bwnhw6)); +assign Bwnhw6 = (Wbnhw6 & Y5nhw6); +assign Uvnhw6 = (Ammhw6 ? Iwnhw6 : V1c7z6[17]); +assign Iwnhw6 = (~(Zpehw6 | S9nhw6)); +assign L4i8v6 = (~(Pwnhw6 & Wwnhw6)); +assign Wwnhw6 = (Dxnhw6 & Nonhw6); +assign Dxnhw6 = (~(Ovbdt6 & Henhw6)); +assign Henhw6 = (Bqmhw6 | Kxnhw6); +assign Kxnhw6 = (Rxnhw6 & Ammhw6); +assign Rxnhw6 = (~(Yxnhw6 | Kfa7z6)); +assign Bqmhw6 = (Fynhw6 & Ammhw6); +assign Fynhw6 = (Mynhw6 & Zec7z6[7]); +assign Pwnhw6 = (~(Tynhw6 | Aznhw6)); +assign Aznhw6 = (Wbnhw6 & J8nhw6); +assign Tynhw6 = (Ammhw6 ? Hznhw6 : V1c7z6[16]); +assign Hznhw6 = (~(Qtnov6 | S9nhw6)); +assign E4i8v6 = (~(Oznhw6 & Vznhw6)); +assign Vznhw6 = (C0ohw6 & Npmhw6); +assign Npmhw6 = (~(L2nhw6 & Oenhw6)); +assign C0ohw6 = (J0ohw6 & Nonhw6); +assign J0ohw6 = (~(Q0ohw6 & Lomhw6)); +assign Oznhw6 = (X0ohw6 & E1ohw6); +assign E1ohw6 = (Gpmhw6 ? S1ohw6 : L1ohw6); +assign X0ohw6 = (Z1ohw6 & G2ohw6); +assign G2ohw6 = (N2ohw6 | U2ohw6); +assign Z1ohw6 = (~(Wbnhw6 & Q1s8v6)); +assign X3i8v6 = (~(B3ohw6 & I3ohw6)); +assign I3ohw6 = (P3ohw6 & Msmhw6); +assign Msmhw6 = (~(L2nhw6 & Uqd7z6[22])); +assign P3ohw6 = (W3ohw6 & Nonhw6); +assign W3ohw6 = (~(Q0ohw6 & Rrmhw6)); +assign Rrmhw6 = (D4ohw6 & K4ohw6); +assign B3ohw6 = (~(R4ohw6 | Y4ohw6)); +assign Y4ohw6 = (Ammhw6 ? Dyfhw6 : V1c7z6[14]); +assign R4ohw6 = (~(F5ohw6 & M5ohw6)); +assign M5ohw6 = (N2ohw6 | T5ohw6); +assign F5ohw6 = (~(Wbnhw6 & Ryr8v6)); +assign Q3i8v6 = (~(A6ohw6 & H6ohw6)); +assign H6ohw6 = (O6ohw6 & Evmhw6); +assign Evmhw6 = (~(L2nhw6 & Uqd7z6[21])); +assign O6ohw6 = (V6ohw6 & Nonhw6); +assign V6ohw6 = (~(Q0ohw6 & Jumhw6)); +assign Jumhw6 = (C7ohw6 & Bat8v6); +assign Q0ohw6 = (Ammhw6 & J7ohw6); +assign A6ohw6 = (Q7ohw6 & X7ohw6); +assign X7ohw6 = (~(V1c7z6[13] & Gpmhw6)); +assign Q7ohw6 = (E8ohw6 & L8ohw6); +assign L8ohw6 = (N2ohw6 | S8ohw6); +assign E8ohw6 = (~(Wbnhw6 & Svr8v6)); +assign J3i8v6 = (~(Z8ohw6 & G9ohw6)); +assign G9ohw6 = (N9ohw6 & U9ohw6); +assign U9ohw6 = (N2ohw6 | Baohw6); +assign N2ohw6 = (~(Ammhw6 & Iaohw6)); +assign Iaohw6 = (~(S9nhw6 & Paohw6)); +assign N9ohw6 = (Wxmhw6 & Nonhw6); +assign Nonhw6 = (~(Ammhw6 & Waohw6)); +assign Waohw6 = (~(Olnhw6 & Pxnnv6)); +assign Wxmhw6 = (~(L2nhw6 & Uqd7z6[20])); +assign L2nhw6 = (Ammhw6 & Dbohw6); +assign Z8ohw6 = (~(Kbohw6 | Rbohw6)); +assign Rbohw6 = (Wbnhw6 & Tsr8v6); +assign Wbnhw6 = (Ammhw6 & Ybohw6); +assign Kbohw6 = (Ammhw6 ? Fcohw6 : V1c7z6[12]); +assign Fcohw6 = (~(Mcohw6 & Tcohw6)); +assign Tcohw6 = (O0nhw6 | Adohw6); +assign Mcohw6 = (~(Hdohw6 | Ixfhw6)); +assign Hdohw6 = (Bxmhw6 & J7ohw6); +assign Bxmhw6 = (~(M6nhw6 | Odohw6)); +assign C3i8v6 = (!Vdohw6); +assign Vdohw6 = (Ammhw6 ? Lnghw6 : Ceohw6); +assign Lnghw6 = (Jeohw6 & Qeohw6); +assign Qeohw6 = (Xeohw6 & Efohw6); +assign Efohw6 = (L9nhw6 & Lfohw6); +assign Lfohw6 = (~(Ybohw6 & Uonhw6)); +assign L9nhw6 = (Olnhw6 & Pxnnv6); +assign Pxnnv6 = (Sfohw6 | Painv6); +assign Xeohw6 = (Zfohw6 & Ggohw6); +assign Ggohw6 = (~(Zec7z6[27] & Ngohw6)); +assign Zfohw6 = (~(J7ohw6 & E2nhw6)); +assign E2nhw6 = (!Ugohw6); +assign Ugohw6 = (Oenhw6 ? Ihohw6 : Bhohw6); +assign Ihohw6 = (Phohw6 & Whohw6); +assign Whohw6 = (~(Diohw6 & Uqd7z6[22])); +assign Phohw6 = (~(D4ohw6 & Uqd7z6[20])); +assign Bhohw6 = (Kiohw6 & Riohw6); +assign Riohw6 = (~(Diohw6 & Uqd7z6[21])); +assign Kiohw6 = (~(Yiohw6 & Kfa7z6)); +assign Yiohw6 = (~(Bat8v6 & Fjohw6)); +assign Jeohw6 = (Mjohw6 & Tjohw6); +assign Tjohw6 = (Akohw6 & Hkohw6); +assign Hkohw6 = (~(Dbohw6 & Uqd7z6[19])); +assign Akohw6 = (~(Zec7z6[10] & Okohw6)); +assign Mjohw6 = (Vkohw6 & Clohw6); +assign Clohw6 = (O0nhw6 | Bat8v6); +assign Vkohw6 = (Jlohw6 | S9nhw6); +assign V2i8v6 = (!Qlohw6); +assign Qlohw6 = (Ammhw6 ? Ppghw6 : Xlohw6); +assign Ppghw6 = (Emohw6 & Lmohw6); +assign Lmohw6 = (Smohw6 & Zmohw6); +assign Zmohw6 = (Gnohw6 & Nnohw6); +assign Nnohw6 = (~(Zec7z6[26] & Ngohw6)); +assign Gnohw6 = (Unohw6 & Olnhw6); +assign Unohw6 = (~(Asnhw6 & Ybohw6)); +assign Smohw6 = (Boohw6 & Ioohw6); +assign Ioohw6 = (~(J7ohw6 & U3nhw6)); +assign U3nhw6 = (Poohw6 | Woohw6); +assign Woohw6 = (Oenhw6 ? Kpohw6 : Dpohw6); +assign Kpohw6 = (Uqd7z6[19] & Kfa7z6); +assign Poohw6 = (~(Rpohw6 & Ypohw6)); +assign Ypohw6 = (~(Diohw6 & Fqohw6)); +assign Rpohw6 = (~(Mqohw6 & K4ohw6)); +assign Boohw6 = (~(Dbohw6 & Uqd7z6[18])); +assign Emohw6 = (Tqohw6 & Arohw6); +assign Arohw6 = (Hrohw6 & Orohw6); +assign Orohw6 = (~(Zec7z6[30] & Okohw6)); +assign Hrohw6 = (O0nhw6 | Kfa7z6); +assign Tqohw6 = (Dynnv6 & Vrohw6); +assign Vrohw6 = (Buihw6 | S9nhw6); +assign Dynnv6 = (~(Csohw6 & Zec7z6[9])); +assign O2i8v6 = (!Jsohw6); +assign Jsohw6 = (Ammhw6 ? Trghw6 : Qsohw6); +assign Trghw6 = (Xsohw6 & Etohw6); +assign Etohw6 = (Ltohw6 & Stohw6); +assign Stohw6 = (Ztohw6 & Guohw6); +assign Guohw6 = (~(Nuohw6 & Oenhw6)); +assign Ztohw6 = (Uuohw6 & Olnhw6); +assign Olnhw6 = (T1sov6 | Xeinv6); +assign Uuohw6 = (Xeinv6 | Bvohw6); +assign Ltohw6 = (Ivohw6 & Pvohw6); +assign Pvohw6 = (~(Zec7z6[25] & Ngohw6)); +assign Ivohw6 = (~(Zunhw6 & Ybohw6)); +assign Ybohw6 = (Nvnhw6 & Adohw6); +assign Xsohw6 = (Wvohw6 & Dwohw6); +assign Dwohw6 = (Kwohw6 & Rwohw6); +assign Rwohw6 = (~(Okohw6 & M6nhw6)); +assign Kwohw6 = (Ywohw6 & Fxohw6); +assign Fxohw6 = (~(J7ohw6 & Y5nhw6)); +assign Y5nhw6 = (~(Mxohw6 & Txohw6)); +assign Txohw6 = (~(C7ohw6 & M6nhw6)); +assign C7ohw6 = (Oenhw6 ? Hyohw6 : Ayohw6); +assign Hyohw6 = (Uqd7z6[22] & Kfa7z6); +assign Ayohw6 = (~(Kfa7z6 & Dsehw6)); +assign Mxohw6 = (Sfa7z6 ? Vyohw6 : Oyohw6); +assign Oyohw6 = (!Dpohw6); +assign Dpohw6 = (~(Czohw6 & Jzohw6)); +assign Jzohw6 = (~(Diohw6 & Uqd7z6[20])); +assign Czohw6 = (~(D4ohw6 & Uqd7z6[18])); +assign Ywohw6 = (~(Dbohw6 & Uqd7z6[17])); +assign Wvohw6 = (Mlnnv6 & Qzohw6); +assign Qzohw6 = (Lofhw6 | S9nhw6); +assign Mlnnv6 = (~(Csohw6 & Zec7z6[8])); +assign H2i8v6 = (!Xzohw6); +assign Xzohw6 = (Ammhw6 ? Xtghw6 : E0phw6); +assign Xtghw6 = (L0phw6 & S0phw6); +assign S0phw6 = (Z0phw6 & G1phw6); +assign G1phw6 = (N1phw6 & U1phw6); +assign U1phw6 = (~(Uqd7z6[22] & Nuohw6)); +assign Nuohw6 = (~(B2phw6 & O0nhw6)); +assign N1phw6 = (~(Zec7z6[24] & Ngohw6)); +assign Ngohw6 = (Zofhw6 | I2phw6); +assign Z0phw6 = (P2phw6 & W2phw6); +assign W2phw6 = (~(J7ohw6 & J8nhw6)); +assign J8nhw6 = (~(D3phw6 & K3phw6)); +assign K3phw6 = (Oenhw6 ? Vyohw6 : R3phw6); +assign Vyohw6 = (Y3phw6 & F4phw6); +assign F4phw6 = (~(Diohw6 & Uqd7z6[19])); +assign Y3phw6 = (~(D4ohw6 & Uqd7z6[17])); +assign R3phw6 = (~(Diohw6 & Uqd7z6[18])); +assign Diohw6 = (~(M6nhw6 | Kfa7z6)); +assign D3phw6 = (M4phw6 & T4phw6); +assign T4phw6 = (~(Lomhw6 & Ovbdt6)); +assign Lomhw6 = (D4ohw6 & Sfa7z6); +assign M4phw6 = (Odohw6 | Bat8v6); +assign Odohw6 = (~(A5phw6 | Fqohw6)); +assign A5phw6 = (Z9nhw6 ? K4ohw6 : H5phw6); +assign H5phw6 = (Uqd7z6[20] & Sfa7z6); +assign P2phw6 = (~(Dbohw6 & Ovbdt6)); +assign Dbohw6 = (~(Yxnhw6 | Bat8v6)); +assign L0phw6 = (O5phw6 & V5phw6); +assign V5phw6 = (C6phw6 & J6phw6); +assign J6phw6 = (~(Okohw6 & Z9nhw6)); +assign C6phw6 = (~(Zec7z6[6] & Zwlhw6)); +assign O5phw6 = (Q6phw6 & X6phw6); +assign X6phw6 = (S9nhw6 | Sfa7z6); +assign Q6phw6 = (Xeinv6 | E7phw6); +assign A2i8v6 = (Gpmhw6 ? V1c7z6[7] : Dxghw6); +assign T1i8v6 = (Gpmhw6 ? V1c7z6[6] : C0hhw6); +assign M1i8v6 = (!L7phw6); +assign L7phw6 = (Ammhw6 ? Y4hhw6 : S7phw6); +assign F1i8v6 = (Gpmhw6 ? V1c7z6[4] : Wahhw6); +assign Y0i8v6 = (!Z7phw6); +assign Z7phw6 = (Ammhw6 ? Vdhhw6 : G8phw6); +assign R0i8v6 = (Gpmhw6 ? V1c7z6[2] : Kphhw6); +assign K0i8v6 = (Gpmhw6 ? V1c7z6[1] : Ywhhw6); +assign Gpmhw6 = (!Ammhw6); +assign Ammhw6 = (~(Z2onv6 | N8phw6)); +assign N8phw6 = (U8phw6 & B9phw6); +assign B9phw6 = (I9phw6 & P9phw6); +assign P9phw6 = (W9phw6 & Kkmhw6); +assign I9phw6 = (Daphw6 & Kaphw6); +assign U8phw6 = (Raphw6 & Yaphw6); +assign Yaphw6 = (~(Fbphw6 | Mbphw6)); +assign Raphw6 = (Tbphw6 & Xvehw6); +assign D0i8v6 = (Hcphw6 ? Wfxdt6 : Acphw6); +assign Hcphw6 = (Nnaov6 & Ocphw6); +assign Ocphw6 = (~(Vcphw6 & Cdphw6)); +assign Cdphw6 = (Jdphw6 & Qdphw6); +assign Qdphw6 = (~(Cehhw6 | Xdphw6)); +assign Jdphw6 = (Cwlnv6 & Gr2et6); +assign Vcphw6 = (~(Eephw6 | A6hhw6)); +assign Eephw6 = (Rphhw6 | Rbhhw6); +assign Nnaov6 = (!W4nov6); +assign W4nov6 = (~(Lephw6 & Sephw6)); +assign Sephw6 = (Zephw6 & Gfphw6); +assign Gfphw6 = (Nfphw6 & Ufphw6); +assign Nfphw6 = (~(Clhhw6 & Jc2et6)); +assign Jc2et6 = (~(Vrinv6 & Kwinv6)); +assign Kwinv6 = (Ypinv6 | Bfo7v6); +assign Zephw6 = (Bgphw6 & Igphw6); +assign Igphw6 = (~(Gr2et6 & Pgphw6)); +assign Pgphw6 = (~(Wgphw6 & Dhphw6)); +assign Dhphw6 = (Khphw6 & Rhphw6); +assign Khphw6 = (Jsaov6 & Srknv6); +assign Wgphw6 = (Yhphw6 & Jzaov6); +assign Jzaov6 = (Fiphw6 & Miphw6); +assign Miphw6 = (~(Tiphw6 & Fxaov6)); +assign Fiphw6 = (Ajphw6 & Hjphw6); +assign Yhphw6 = (Ojphw6 & Vjphw6); +assign Vjphw6 = (~(Ckphw6 & Vqihw6)); +assign Bgphw6 = (~(Jkphw6 & O5a7z6)); +assign Jkphw6 = (Qkphw6 & Xkphw6); +assign Xkphw6 = (~(Txaov6 & Elphw6)); +assign Qkphw6 = (~(Xdphw6 & Qtvnv6)); +assign Lephw6 = (Llphw6 & Slphw6); +assign Slphw6 = (~(Zlphw6 & Gmphw6)); +assign Zlphw6 = (Nmphw6 & Qtvnv6); +assign Nmphw6 = (~(Umphw6 & Bnphw6)); +assign Bnphw6 = (Inphw6 | Iga7z6); +assign Umphw6 = (Txaov6 | Uebdt6); +assign Txaov6 = (Pnphw6 & Wnphw6); +assign Wnphw6 = (~(Dophw6 & Fulnv6)); +assign Pnphw6 = (~(Kophw6 & Dioov6)); +assign Llphw6 = (Rophw6 & Yophw6); +assign Yophw6 = (~(Lyknv6 & C0ydt6)); +assign Rophw6 = (~(Fpphw6 & Msmov6)); +assign Acphw6 = (~(Mpphw6 & Tpphw6)); +assign Tpphw6 = (~(Aqphw6 & Hqphw6)); +assign Hqphw6 = (Oqphw6 & Vqphw6); +assign Vqphw6 = (~(Crphw6 | Cehhw6)); +assign Crphw6 = (Mqhhw6 | S1wnv6); +assign Oqphw6 = (Jrphw6 & Ldo7v6); +assign Jrphw6 = (Pbadt6 & Rphhw6); +assign Aqphw6 = (Qrphw6 & Xrphw6); +assign Xrphw6 = (Esphw6 & Ecc7z6[5]); +assign Esphw6 = (Tlmov6 & Lsphw6); +assign Qrphw6 = (~(Rbhhw6 | A6hhw6)); +assign Mpphw6 = (~(Ssphw6 & Cwlnv6)); +assign Ssphw6 = (Msmov6 & Yioov6); +assign Wzh8v6 = (!Zsphw6); +assign Zsphw6 = (Vfmov6 ? Hjihw6 : Sj77z6); +assign Pzh8v6 = (Gtphw6 ? Q1h7z6[0] : Rphhw6); +assign Izh8v6 = (Gtphw6 ? Q1h7z6[1] : Cehhw6); +assign Bzh8v6 = (Gtphw6 ? Q1h7z6[2] : Rbhhw6); +assign Uyh8v6 = (Gtphw6 ? Q1h7z6[3] : A6hhw6); +assign Nyh8v6 = (Q1h7z6[4] & Gtphw6); +assign Gyh8v6 = (Q1h7z6[5] & Gtphw6); +assign Gtphw6 = (!Iwvnv6); +assign Zxh8v6 = (Utphw6 ? Gg7et6 : Ntphw6); +assign Utphw6 = (Buphw6 & Iuphw6); +assign Iuphw6 = (~(Wmknv6 & Gr2et6)); +assign Wmknv6 = (Gg7et6 & Puphw6); +assign Buphw6 = (~(Wuphw6 & Dvphw6)); +assign Dvphw6 = (Kvphw6 & Vxihw6); +assign Kvphw6 = (Rvphw6 & Ntphw6); +assign Rvphw6 = (~(Yvphw6 & Fwphw6)); +assign Yvphw6 = (~(Etinv6 & Iga7z6)); +assign Wuphw6 = (Ecc7z6[11] & Mwphw6); +assign Ntphw6 = (~(Twphw6 & Fwphw6)); +assign Fwphw6 = (~(Axphw6 & Hxphw6)); +assign Hxphw6 = (Oxphw6 & Vxphw6); +assign Oxphw6 = (Bfo7v6 & Hjihw6); +assign Axphw6 = (O5a7z6 & Tnzdt6); +assign Sxh8v6 = (Uimov6 ? Ozadt6 : Cyphw6); +assign Lxh8v6 = (~(Jyphw6 & Qyphw6)); +assign Qyphw6 = (~(Xyphw6 & Ezphw6)); +assign Xyphw6 = (Lzphw6 & Szphw6); +assign Jyphw6 = (~(Dkm7z6[1] & Zzphw6)); +assign Exh8v6 = (N0qhw6 ? S7n7z6[0] : G0qhw6); +assign G0qhw6 = (~(U0qhw6 & B1qhw6)); +assign B1qhw6 = (~(Wbhnv6 & Fbqnv6)); +assign U0qhw6 = (~(Uclov6 & Hub7z6[0])); +assign Xwh8v6 = (N0qhw6 ? S7n7z6[1] : I1qhw6); +assign I1qhw6 = (~(P1qhw6 & W1qhw6)); +assign W1qhw6 = (~(Fbqnv6 & Anehw6)); +assign P1qhw6 = (~(Uclov6 & Hub7z6[1])); +assign Qwh8v6 = (~(D2qhw6 & K2qhw6)); +assign K2qhw6 = (~(R2qhw6 & Cyphw6)); +assign D2qhw6 = (~(E1uet6 & Y2qhw6)); +assign Jwh8v6 = (~(F3qhw6 & M3qhw6)); +assign M3qhw6 = (~(T3qhw6 & A4qhw6)); +assign F3qhw6 = (~(H4qhw6 & Znn7z6[1])); +assign Cwh8v6 = (V4qhw6 ? O4qhw6 : Ppzet6); +assign V4qhw6 = (Kr97z6 & C5qhw6); +assign C5qhw6 = (~(O4qhw6 & J5qhw6)); +assign J5qhw6 = (~(Q5qhw6 & X5qhw6)); +assign X5qhw6 = (~(E6qhw6 | L6qhw6)); +assign Q5qhw6 = (Ee47v6 & Dbymz6[1]); +assign Vvh8v6 = (Z6qhw6 ? S6qhw6 : Io47v6); +assign S6qhw6 = (!Cewnv6); +assign Ovh8v6 = (~(G7qhw6 & N7qhw6)); +assign N7qhw6 = (~(S067v6 & U7qhw6)); +assign U7qhw6 = (~(L5ymz6[8] & B8qhw6)); +assign G7qhw6 = (W8qhw6 ? P8qhw6 : I8qhw6); +assign I8qhw6 = (~(D9qhw6 & K9qhw6)); +assign D9qhw6 = (~(R9qhw6 | Y9qhw6)); +assign Y9qhw6 = (Kh47v6 & Gj47v6); +assign Hvh8v6 = (~(Faqhw6 & Maqhw6)); +assign Maqhw6 = (Taqhw6 & Abqhw6); +assign Abqhw6 = (~(Krxmz6[31] & Hbqhw6)); +assign Taqhw6 = (~(Obqhw6 & Ii47v6)); +assign Faqhw6 = (Vbqhw6 & Ccqhw6); +assign Ccqhw6 = (~(Jcqhw6 & Coxmz6[31])); +assign Vbqhw6 = (Edqhw6 ? Xcqhw6 : Qcqhw6); +assign Xcqhw6 = (!Cxxmz6[31]); +assign Qcqhw6 = (Ldqhw6 | Sdqhw6); +assign Avh8v6 = (Zdqhw6 ? Omxmz6[31] : Cxxmz6[31]); +assign Tuh8v6 = (~(Geqhw6 & Neqhw6)); +assign Neqhw6 = (~(Dbymz6[0] & Ueqhw6)); +assign Ueqhw6 = (~(Adwnv6 & Bfqhw6)); +assign Bfqhw6 = (~(Ifqhw6 & Qewnv6)); +assign Ifqhw6 = (Jewnv6 & Cewnv6); +assign Cewnv6 = (~(Pfqhw6 & Wfqhw6)); +assign Wfqhw6 = (Dgqhw6 & Kgqhw6); +assign Dgqhw6 = (Rgqhw6 & Ygqhw6); +assign Pfqhw6 = (Oeo7z6[0] & Fhqhw6); +assign Fhqhw6 = (~(Mhqhw6 & Thqhw6)); +assign Thqhw6 = (~(Fvzet6 | Tszet6)); +assign Mhqhw6 = (Gco7z6[6] & Aiqhw6); +assign Jewnv6 = (Viqhw6 ? Oiqhw6 : Hiqhw6); +assign Oiqhw6 = (~(Cjqhw6 & Jjqhw6)); +assign Hiqhw6 = (~(Qjqhw6 & Xjqhw6)); +assign Geqhw6 = (~(Adwnv6 & Ekqhw6)); +assign Adwnv6 = (Kr97z6 & Lkqhw6); +assign Lkqhw6 = (~(Skqhw6 & Zkqhw6)); +assign Zkqhw6 = (~(Dbymz6[0] & Glqhw6)); +assign Skqhw6 = (~(Ekqhw6 ^ Nlqhw6)); +assign Nlqhw6 = (~(Dbymz6[0] | Ye47v6)); +assign Muh8v6 = (Bmqhw6 ? F5o7z6[2] : Ulqhw6); +assign Fuh8v6 = (Bmqhw6 ? F5o7z6[3] : Imqhw6); +assign Yth8v6 = (Bmqhw6 ? F5o7z6[4] : Pmqhw6); +assign Rth8v6 = (Bmqhw6 ? F5o7z6[5] : Wmqhw6); +assign Kth8v6 = (Bmqhw6 ? F5o7z6[6] : Dnqhw6); +assign Dth8v6 = (Bmqhw6 ? F5o7z6[7] : Knqhw6); +assign Wsh8v6 = (Rnqhw6 ? Cb77z6 : Gco7z6[6]); +assign Psh8v6 = (~(Ynqhw6 & Foqhw6)); +assign Foqhw6 = (Moqhw6 & Toqhw6); +assign Toqhw6 = (~(Tfxmz6[1] & Zfwnv6)); +assign Moqhw6 = (~(Njxmz6[1] & Ggwnv6)); +assign Ynqhw6 = (Apqhw6 & Hpqhw6); +assign Hpqhw6 = (~(Ul67v6 & Bhwnv6)); +assign Apqhw6 = (~(Hnxmz6[1] & Ihwnv6)); +assign Ish8v6 = (~(Opqhw6 & Vpqhw6)); +assign Vpqhw6 = (Cqqhw6 & Jqqhw6); +assign Jqqhw6 = (~(Tfxmz6[2] & Zfwnv6)); +assign Cqqhw6 = (~(Njxmz6[2] & Ggwnv6)); +assign Opqhw6 = (Qqqhw6 & Xqqhw6); +assign Xqqhw6 = (~(Uk67v6 & Bhwnv6)); +assign Qqqhw6 = (~(Hnxmz6[2] & Ihwnv6)); +assign Bsh8v6 = (~(Erqhw6 & Lrqhw6)); +assign Lrqhw6 = (Srqhw6 & Zrqhw6); +assign Zrqhw6 = (~(Tfxmz6[3] & Zfwnv6)); +assign Srqhw6 = (~(Njxmz6[3] & Ggwnv6)); +assign Erqhw6 = (Gsqhw6 & Nsqhw6); +assign Nsqhw6 = (~(Uj67v6 & Bhwnv6)); +assign Gsqhw6 = (~(Hnxmz6[3] & Ihwnv6)); +assign Urh8v6 = (~(Usqhw6 & Btqhw6)); +assign Btqhw6 = (Itqhw6 & Ptqhw6); +assign Ptqhw6 = (~(Tfxmz6[4] & Zfwnv6)); +assign Itqhw6 = (~(Njxmz6[4] & Ggwnv6)); +assign Usqhw6 = (Wtqhw6 & Duqhw6); +assign Duqhw6 = (~(Ui67v6 & Bhwnv6)); +assign Wtqhw6 = (~(Hnxmz6[4] & Ihwnv6)); +assign Nrh8v6 = (~(Kuqhw6 & Ruqhw6)); +assign Ruqhw6 = (Yuqhw6 & Fvqhw6); +assign Fvqhw6 = (~(Tfxmz6[5] & Zfwnv6)); +assign Yuqhw6 = (~(Njxmz6[5] & Ggwnv6)); +assign Kuqhw6 = (Mvqhw6 & Tvqhw6); +assign Tvqhw6 = (~(Uh67v6 & Bhwnv6)); +assign Mvqhw6 = (~(Hnxmz6[5] & Ihwnv6)); +assign Grh8v6 = (~(Awqhw6 & Hwqhw6)); +assign Hwqhw6 = (Owqhw6 & Vwqhw6); +assign Vwqhw6 = (~(Tfxmz6[6] & Zfwnv6)); +assign Owqhw6 = (~(Njxmz6[6] & Ggwnv6)); +assign Awqhw6 = (Cxqhw6 & Jxqhw6); +assign Jxqhw6 = (~(Ug67v6 & Bhwnv6)); +assign Cxqhw6 = (~(Hnxmz6[6] & Ihwnv6)); +assign Zqh8v6 = (~(Qxqhw6 & Xxqhw6)); +assign Xxqhw6 = (Eyqhw6 & Lyqhw6); +assign Lyqhw6 = (~(Tfxmz6[7] & Zfwnv6)); +assign Eyqhw6 = (~(Njxmz6[7] & Ggwnv6)); +assign Qxqhw6 = (Syqhw6 & Zyqhw6); +assign Zyqhw6 = (~(Uf67v6 & Bhwnv6)); +assign Syqhw6 = (~(Hnxmz6[7] & Ihwnv6)); +assign Sqh8v6 = (~(Gzqhw6 & Nzqhw6)); +assign Nzqhw6 = (Uzqhw6 & B0rhw6); +assign B0rhw6 = (~(Tfxmz6[8] & Zfwnv6)); +assign Uzqhw6 = (~(Njxmz6[8] & Ggwnv6)); +assign Gzqhw6 = (I0rhw6 & P0rhw6); +assign P0rhw6 = (~(Ue67v6 & Bhwnv6)); +assign I0rhw6 = (~(Hnxmz6[8] & Ihwnv6)); +assign Lqh8v6 = (~(W0rhw6 & D1rhw6)); +assign D1rhw6 = (K1rhw6 & R1rhw6); +assign R1rhw6 = (~(Tfxmz6[9] & Zfwnv6)); +assign K1rhw6 = (~(Njxmz6[9] & Ggwnv6)); +assign W0rhw6 = (Y1rhw6 & F2rhw6); +assign F2rhw6 = (~(Ud67v6 & Bhwnv6)); +assign Y1rhw6 = (~(Hnxmz6[9] & Ihwnv6)); +assign Eqh8v6 = (~(M2rhw6 & T2rhw6)); +assign T2rhw6 = (A3rhw6 & H3rhw6); +assign H3rhw6 = (~(Tfxmz6[10] & Zfwnv6)); +assign A3rhw6 = (~(Njxmz6[10] & Ggwnv6)); +assign M2rhw6 = (O3rhw6 & V3rhw6); +assign V3rhw6 = (~(Uc67v6 & Bhwnv6)); +assign O3rhw6 = (~(Hnxmz6[10] & Ihwnv6)); +assign Xph8v6 = (~(C4rhw6 & J4rhw6)); +assign J4rhw6 = (Q4rhw6 & X4rhw6); +assign X4rhw6 = (~(Tfxmz6[0] & Zfwnv6)); +assign Zfwnv6 = (E5rhw6 & JTAGNSW); +assign E5rhw6 = (L5rhw6 & E6qhw6); +assign Q4rhw6 = (~(Njxmz6[0] & Ggwnv6)); +assign Ggwnv6 = (S5rhw6 & L5rhw6); +assign S5rhw6 = (Dz1nv6 & E6qhw6); +assign C4rhw6 = (Z5rhw6 & G6rhw6); +assign G6rhw6 = (~(Um67v6 & Bhwnv6)); +assign Bhwnv6 = (N6rhw6 & U6rhw6); +assign N6rhw6 = (Dbymz6[0] & L5rhw6); +assign Z5rhw6 = (~(Hnxmz6[0] & Ihwnv6)); +assign Ihwnv6 = (!L5rhw6); +assign L5rhw6 = (~(B7rhw6 & I7rhw6)); +assign I7rhw6 = (~(Z6qhw6 & P7rhw6)); +assign P7rhw6 = (U6rhw6 | Ee47v6); +assign U6rhw6 = (Qewnv6 & W7rhw6); +assign W7rhw6 = (~(D8rhw6 & K8rhw6)); +assign K8rhw6 = (~(Qjqhw6 & Cjqhw6)); +assign D8rhw6 = (Viqhw6 ? Cjqhw6 : Qjqhw6); +assign Cjqhw6 = (!Xjqhw6); +assign Qewnv6 = (~(R8rhw6 | Ee47v6)); +assign R8rhw6 = (Y8rhw6 & F9rhw6); +assign F9rhw6 = (M9rhw6 & T9rhw6); +assign T9rhw6 = (~(Aarhw6 | Hnxmz6[7])); +assign Aarhw6 = (Hnxmz6[8] | Hnxmz6[9]); +assign M9rhw6 = (~(Harhw6 | Hnxmz6[4])); +assign Harhw6 = (Hnxmz6[5] | Hnxmz6[6]); +assign Y8rhw6 = (Oarhw6 & Varhw6); +assign Varhw6 = (~(Cbrhw6 | Hnxmz6[1])); +assign Cbrhw6 = (Hnxmz6[2] | Hnxmz6[3]); +assign Oarhw6 = (~(Jbrhw6 | Hnxmz6[0])); +assign Jbrhw6 = (Hnxmz6[10] | Hnxmz6[11]); +assign B7rhw6 = (~(Qbrhw6 & Xbrhw6)); +assign Xbrhw6 = (E6qhw6 & Ekqhw6); +assign Qbrhw6 = (Ye47v6 & Kr97z6); +assign Qph8v6 = (~(Ecrhw6 & Lcrhw6)); +assign Lcrhw6 = (~(Cxxmz6[23] & Scrhw6)); +assign Ecrhw6 = (Zcrhw6 & Gdrhw6); +assign Gdrhw6 = (~(Ndrhw6 & Njxmz6[11])); +assign Zcrhw6 = (~(Udrhw6 & Hnxmz6[11])); +assign Jph8v6 = (Berhw6 & Ierhw6); +assign Ierhw6 = (Perhw6 & Werhw6); +assign Berhw6 = (Dfrhw6 & Lc57v6); +assign Cph8v6 = (~(Kfrhw6 & Rfrhw6)); +assign Rfrhw6 = (~(R957v6 & Yfrhw6)); +assign Voh8v6 = (~(Fgrhw6 & Mgrhw6)); +assign Mgrhw6 = (~(Tgrhw6 & Io47v6)); +assign Fgrhw6 = (Ahrhw6 & Hhrhw6); +assign Ahrhw6 = (~(H557v6 & Ohrhw6)); +assign Ooh8v6 = (~(Vhrhw6 & Cirhw6)); +assign Cirhw6 = (Jirhw6 & Qirhw6); +assign Qirhw6 = (Xirhw6 & Ejrhw6); +assign Xirhw6 = (~(Ovxmz6[1] & Ljrhw6)); +assign Jirhw6 = (Sjrhw6 & Zjrhw6); +assign Zjrhw6 = (~(Coxmz6[1] & Gkrhw6)); +assign Sjrhw6 = (~(Nkrhw6 & Cxxmz6[2])); +assign Vhrhw6 = (Ukrhw6 & Blrhw6); +assign Blrhw6 = (~(Cxxmz6[1] & Edqhw6)); +assign Ukrhw6 = (Ilrhw6 & Plrhw6); +assign Plrhw6 = (~(Krxmz6[1] & Hbqhw6)); +assign Ilrhw6 = (~(V357v6 & Obqhw6)); +assign Hoh8v6 = (~(Wlrhw6 & Dmrhw6)); +assign Dmrhw6 = (Kmrhw6 & Rmrhw6); +assign Rmrhw6 = (~(Krxmz6[2] & Hbqhw6)); +assign Kmrhw6 = (Ymrhw6 & Ejrhw6); +assign Ymrhw6 = (~(Cxxmz6[3] & Nkrhw6)); +assign Wlrhw6 = (Fnrhw6 & Mnrhw6); +assign Mnrhw6 = (~(Coxmz6[2] & Jcqhw6)); +assign Fnrhw6 = (Tnrhw6 & Aorhw6); +assign Aorhw6 = (~(Blxmz6[0] & Obqhw6)); +assign Tnrhw6 = (~(Cxxmz6[2] & Edqhw6)); +assign Aoh8v6 = (~(Horhw6 & Oorhw6)); +assign Oorhw6 = (Vorhw6 & Cprhw6); +assign Cprhw6 = (~(Blxmz6[1] & Obqhw6)); +assign Vorhw6 = (Jprhw6 & Qprhw6); +assign Qprhw6 = (~(Cxxmz6[4] & Nkrhw6)); +assign Jprhw6 = (~(Krxmz6[3] & Hbqhw6)); +assign Horhw6 = (Xprhw6 & Eqrhw6); +assign Eqrhw6 = (~(Cxxmz6[3] & Edqhw6)); +assign Xprhw6 = (~(Coxmz6[3] & Jcqhw6)); +assign Tnh8v6 = (~(Lqrhw6 & Sqrhw6)); +assign Sqrhw6 = (Zqrhw6 & Grrhw6); +assign Grrhw6 = (~(Krxmz6[4] & Hbqhw6)); +assign Zqrhw6 = (Nrrhw6 & Ejrhw6); +assign Nrrhw6 = (~(Cxxmz6[5] & Nkrhw6)); +assign Lqrhw6 = (Urrhw6 & Bsrhw6); +assign Bsrhw6 = (~(Coxmz6[4] & Jcqhw6)); +assign Urrhw6 = (Isrhw6 & Psrhw6); +assign Psrhw6 = (~(S657v6 & Obqhw6)); +assign Isrhw6 = (~(Cxxmz6[4] & Edqhw6)); +assign Mnh8v6 = (~(Wsrhw6 & Dtrhw6)); +assign Dtrhw6 = (Ktrhw6 & Rtrhw6); +assign Rtrhw6 = (~(Krxmz6[5] & Hbqhw6)); +assign Ktrhw6 = (Ytrhw6 & Ejrhw6); +assign Ytrhw6 = (~(Cxxmz6[6] & Nkrhw6)); +assign Wsrhw6 = (Furhw6 & Murhw6); +assign Murhw6 = (~(Coxmz6[5] & Jcqhw6)); +assign Furhw6 = (Turhw6 & Avrhw6); +assign Avrhw6 = (~(H557v6 & Obqhw6)); +assign Turhw6 = (~(Cxxmz6[5] & Edqhw6)); +assign Fnh8v6 = (~(Hvrhw6 & Ovrhw6)); +assign Ovrhw6 = (Vvrhw6 & Cwrhw6); +assign Cwrhw6 = (Ejrhw6 & Jwrhw6); +assign Jwrhw6 = (!Ljrhw6); +assign Vvrhw6 = (Qwrhw6 & Xwrhw6); +assign Xwrhw6 = (~(Yt47v6 & Exrhw6)); +assign Qwrhw6 = (~(Coxmz6[6] & Gkrhw6)); +assign Hvrhw6 = (Lxrhw6 & Sxrhw6); +assign Sxrhw6 = (~(Cxxmz6[6] & Edqhw6)); +assign Lxrhw6 = (Zxrhw6 & Gyrhw6); +assign Gyrhw6 = (~(Cxxmz6[7] & Nkrhw6)); +assign Zxrhw6 = (~(Krxmz6[6] & Hbqhw6)); +assign Ymh8v6 = (~(Nyrhw6 & Uyrhw6)); +assign Uyrhw6 = (Bzrhw6 & Izrhw6); +assign Izrhw6 = (~(Ud57v6 & Obqhw6)); +assign Bzrhw6 = (Pzrhw6 & Wzrhw6); +assign Wzrhw6 = (~(Cxxmz6[8] & Nkrhw6)); +assign Pzrhw6 = (~(Krxmz6[7] & Hbqhw6)); +assign Nyrhw6 = (D0shw6 & K0shw6); +assign K0shw6 = (~(Cxxmz6[7] & Edqhw6)); +assign D0shw6 = (~(Coxmz6[7] & Jcqhw6)); +assign Rmh8v6 = (~(R0shw6 & Y0shw6)); +assign Y0shw6 = (F1shw6 & M1shw6); +assign M1shw6 = (~(Krxmz6[8] & Hbqhw6)); +assign F1shw6 = (T1shw6 & A2shw6); +assign A2shw6 = (~(Fuxmz6[0] & Ljrhw6)); +assign T1shw6 = (~(Cxxmz6[9] & Nkrhw6)); +assign R0shw6 = (H2shw6 & O2shw6); +assign O2shw6 = (~(Coxmz6[8] & Jcqhw6)); +assign H2shw6 = (V2shw6 & C3shw6); +assign C3shw6 = (~(Ikxmz6[0] & Obqhw6)); +assign V2shw6 = (~(Cxxmz6[8] & Edqhw6)); +assign Kmh8v6 = (~(J3shw6 & Q3shw6)); +assign Q3shw6 = (X3shw6 & E4shw6); +assign E4shw6 = (~(Krxmz6[9] & Hbqhw6)); +assign X3shw6 = (L4shw6 & S4shw6); +assign S4shw6 = (~(Fuxmz6[1] & Ljrhw6)); +assign L4shw6 = (~(Cxxmz6[10] & Nkrhw6)); +assign J3shw6 = (Z4shw6 & G5shw6); +assign G5shw6 = (~(Coxmz6[9] & Jcqhw6)); +assign Z4shw6 = (N5shw6 & U5shw6); +assign U5shw6 = (~(Ikxmz6[1] & Obqhw6)); +assign N5shw6 = (~(Cxxmz6[9] & Edqhw6)); +assign Dmh8v6 = (~(B6shw6 & I6shw6)); +assign I6shw6 = (P6shw6 & W6shw6); +assign W6shw6 = (~(Krxmz6[10] & Hbqhw6)); +assign P6shw6 = (D7shw6 & Ejrhw6); +assign D7shw6 = (~(Cxxmz6[11] & Nkrhw6)); +assign B6shw6 = (K7shw6 & R7shw6); +assign R7shw6 = (~(Coxmz6[10] & Jcqhw6)); +assign K7shw6 = (Y7shw6 & F8shw6); +assign F8shw6 = (~(Ikxmz6[2] & Obqhw6)); +assign Y7shw6 = (~(Cxxmz6[10] & Edqhw6)); +assign Wlh8v6 = (~(M8shw6 & T8shw6)); +assign T8shw6 = (A9shw6 & H9shw6); +assign H9shw6 = (~(Ikxmz6[3] & Obqhw6)); +assign A9shw6 = (O9shw6 & V9shw6); +assign V9shw6 = (~(Cxxmz6[12] & Nkrhw6)); +assign O9shw6 = (~(Krxmz6[11] & Hbqhw6)); +assign M8shw6 = (Cashw6 & Jashw6); +assign Jashw6 = (~(Cxxmz6[11] & Edqhw6)); +assign Cashw6 = (~(Coxmz6[11] & Jcqhw6)); +assign Plh8v6 = (~(Qashw6 & Xashw6)); +assign Xashw6 = (Ebshw6 & Lbshw6); +assign Lbshw6 = (~(Krxmz6[12] & Hbqhw6)); +assign Ebshw6 = (Sbshw6 & Ejrhw6); +assign Sbshw6 = (~(Cxxmz6[13] & Nkrhw6)); +assign Qashw6 = (Zbshw6 & Gcshw6); +assign Gcshw6 = (~(Coxmz6[12] & Jcqhw6)); +assign Zbshw6 = (Ncshw6 & Ucshw6); +assign Ucshw6 = (~(Njxmz6[0] & Obqhw6)); +assign Ncshw6 = (~(Cxxmz6[12] & Edqhw6)); +assign Ilh8v6 = (~(Bdshw6 & Idshw6)); +assign Idshw6 = (Pdshw6 & Wdshw6); +assign Wdshw6 = (~(Njxmz6[1] & Obqhw6)); +assign Pdshw6 = (Deshw6 & Keshw6); +assign Keshw6 = (~(Cxxmz6[14] & Nkrhw6)); +assign Deshw6 = (~(Krxmz6[13] & Hbqhw6)); +assign Bdshw6 = (Reshw6 & Yeshw6); +assign Yeshw6 = (~(Cxxmz6[13] & Edqhw6)); +assign Reshw6 = (~(Coxmz6[13] & Jcqhw6)); +assign Blh8v6 = (~(Ffshw6 & Mfshw6)); +assign Mfshw6 = (Tfshw6 & Agshw6); +assign Agshw6 = (~(Njxmz6[2] & Obqhw6)); +assign Tfshw6 = (Hgshw6 & Ogshw6); +assign Ogshw6 = (~(Cxxmz6[15] & Nkrhw6)); +assign Hgshw6 = (~(Krxmz6[14] & Hbqhw6)); +assign Ffshw6 = (Vgshw6 & Chshw6); +assign Chshw6 = (~(Cxxmz6[14] & Edqhw6)); +assign Vgshw6 = (~(Coxmz6[14] & Jcqhw6)); +assign Ukh8v6 = (~(Jhshw6 & Qhshw6)); +assign Qhshw6 = (Xhshw6 & Eishw6); +assign Eishw6 = (~(Njxmz6[3] & Obqhw6)); +assign Xhshw6 = (Lishw6 & Sishw6); +assign Sishw6 = (~(Cxxmz6[16] & Nkrhw6)); +assign Lishw6 = (~(Krxmz6[15] & Hbqhw6)); +assign Jhshw6 = (Zishw6 & Gjshw6); +assign Gjshw6 = (~(Cxxmz6[15] & Edqhw6)); +assign Zishw6 = (~(Coxmz6[15] & Jcqhw6)); +assign Nkh8v6 = (~(Njshw6 & Ujshw6)); +assign Ujshw6 = (Bkshw6 & Ikshw6); +assign Ikshw6 = (~(Njxmz6[4] & Obqhw6)); +assign Bkshw6 = (Pkshw6 & Wkshw6); +assign Wkshw6 = (~(Cxxmz6[17] & Nkrhw6)); +assign Pkshw6 = (~(Krxmz6[16] & Hbqhw6)); +assign Njshw6 = (Dlshw6 & Klshw6); +assign Klshw6 = (~(Cxxmz6[16] & Edqhw6)); +assign Dlshw6 = (~(Coxmz6[16] & Jcqhw6)); +assign Gkh8v6 = (~(Rlshw6 & Ylshw6)); +assign Ylshw6 = (Fmshw6 & Mmshw6); +assign Mmshw6 = (~(Njxmz6[5] & Obqhw6)); +assign Fmshw6 = (Tmshw6 & Anshw6); +assign Anshw6 = (~(Cxxmz6[18] & Nkrhw6)); +assign Tmshw6 = (~(Krxmz6[17] & Hbqhw6)); +assign Rlshw6 = (Hnshw6 & Onshw6); +assign Onshw6 = (~(Cxxmz6[17] & Edqhw6)); +assign Hnshw6 = (~(Coxmz6[17] & Jcqhw6)); +assign Zjh8v6 = (~(Vnshw6 & Coshw6)); +assign Coshw6 = (Joshw6 & Qoshw6); +assign Qoshw6 = (~(Njxmz6[6] & Obqhw6)); +assign Joshw6 = (Xoshw6 & Epshw6); +assign Epshw6 = (~(Cxxmz6[19] & Nkrhw6)); +assign Xoshw6 = (~(Krxmz6[18] & Hbqhw6)); +assign Vnshw6 = (Lpshw6 & Spshw6); +assign Spshw6 = (~(Cxxmz6[18] & Edqhw6)); +assign Lpshw6 = (~(Coxmz6[18] & Jcqhw6)); +assign Sjh8v6 = (~(Zpshw6 & Gqshw6)); +assign Gqshw6 = (Nqshw6 & Uqshw6); +assign Uqshw6 = (~(Njxmz6[7] & Obqhw6)); +assign Nqshw6 = (Brshw6 & Irshw6); +assign Irshw6 = (~(Cxxmz6[20] & Nkrhw6)); +assign Brshw6 = (~(Krxmz6[19] & Hbqhw6)); +assign Zpshw6 = (Prshw6 & Wrshw6); +assign Wrshw6 = (~(Cxxmz6[19] & Edqhw6)); +assign Prshw6 = (~(Coxmz6[19] & Jcqhw6)); +assign Ljh8v6 = (~(Dsshw6 & Ksshw6)); +assign Ksshw6 = (Rsshw6 & Ysshw6); +assign Ysshw6 = (~(Njxmz6[8] & Obqhw6)); +assign Rsshw6 = (Ftshw6 & Mtshw6); +assign Mtshw6 = (~(Cxxmz6[21] & Nkrhw6)); +assign Ftshw6 = (~(Krxmz6[20] & Hbqhw6)); +assign Dsshw6 = (Ttshw6 & Aushw6); +assign Aushw6 = (~(Cxxmz6[20] & Edqhw6)); +assign Ttshw6 = (~(Coxmz6[20] & Jcqhw6)); +assign Ejh8v6 = (~(Hushw6 & Oushw6)); +assign Oushw6 = (Vushw6 & Cvshw6); +assign Cvshw6 = (~(Krxmz6[21] & Hbqhw6)); +assign Vushw6 = (Jvshw6 & Ejrhw6); +assign Jvshw6 = (~(Cxxmz6[22] & Nkrhw6)); +assign Hushw6 = (Qvshw6 & Xvshw6); +assign Xvshw6 = (~(Coxmz6[21] & Jcqhw6)); +assign Qvshw6 = (Ewshw6 & Lwshw6); +assign Lwshw6 = (~(Njxmz6[9] & Obqhw6)); +assign Ewshw6 = (~(Cxxmz6[21] & Edqhw6)); +assign Xih8v6 = (~(Swshw6 & Zwshw6)); +assign Zwshw6 = (Gxshw6 & Nxshw6); +assign Nxshw6 = (~(Njxmz6[10] & Obqhw6)); +assign Gxshw6 = (Uxshw6 & Byshw6); +assign Byshw6 = (~(Nkrhw6 & Cxxmz6[23])); +assign Uxshw6 = (~(Krxmz6[22] & Hbqhw6)); +assign Swshw6 = (Iyshw6 & Pyshw6); +assign Pyshw6 = (~(Cxxmz6[22] & Edqhw6)); +assign Iyshw6 = (~(Coxmz6[22] & Jcqhw6)); +assign Qih8v6 = (~(Wyshw6 & Dzshw6)); +assign Dzshw6 = (Kzshw6 & Rzshw6); +assign Rzshw6 = (~(Krxmz6[23] & Hbqhw6)); +assign Kzshw6 = (Yzshw6 & Ejrhw6); +assign Yzshw6 = (~(Cxxmz6[24] & Nkrhw6)); +assign Wyshw6 = (F0thw6 & M0thw6); +assign M0thw6 = (~(Coxmz6[23] & Jcqhw6)); +assign F0thw6 = (T0thw6 & A1thw6); +assign A1thw6 = (~(Obqhw6 & Njxmz6[11])); +assign T0thw6 = (~(Cxxmz6[23] & Edqhw6)); +assign Jih8v6 = (~(H1thw6 & O1thw6)); +assign O1thw6 = (V1thw6 & C2thw6); +assign C2thw6 = (~(Krxmz6[24] & Hbqhw6)); +assign V1thw6 = (J2thw6 & Ejrhw6); +assign J2thw6 = (~(Cxxmz6[25] & Nkrhw6)); +assign H1thw6 = (Q2thw6 & X2thw6); +assign X2thw6 = (~(Cxxmz6[24] & Edqhw6)); +assign Q2thw6 = (~(Coxmz6[24] & Jcqhw6)); +assign Cih8v6 = (~(E3thw6 & L3thw6)); +assign L3thw6 = (S3thw6 & Z3thw6); +assign Z3thw6 = (~(Krxmz6[25] & Hbqhw6)); +assign S3thw6 = (G4thw6 & Ejrhw6); +assign G4thw6 = (~(Cxxmz6[26] & Nkrhw6)); +assign E3thw6 = (N4thw6 & U4thw6); +assign U4thw6 = (~(Cxxmz6[25] & Edqhw6)); +assign N4thw6 = (~(Coxmz6[25] & Jcqhw6)); +assign Vhh8v6 = (~(B5thw6 & I5thw6)); +assign I5thw6 = (P5thw6 & W5thw6); +assign W5thw6 = (~(Wk47v6 & Obqhw6)); +assign P5thw6 = (D6thw6 & K6thw6); +assign K6thw6 = (~(Cxxmz6[27] & Nkrhw6)); +assign D6thw6 = (~(Krxmz6[26] & Hbqhw6)); +assign B5thw6 = (R6thw6 & Y6thw6); +assign Y6thw6 = (~(Cxxmz6[26] & Edqhw6)); +assign R6thw6 = (~(Coxmz6[26] & Jcqhw6)); +assign Ohh8v6 = (~(F7thw6 & M7thw6)); +assign M7thw6 = (T7thw6 & A8thw6); +assign A8thw6 = (~(Krxmz6[27] & Hbqhw6)); +assign T7thw6 = (H8thw6 & Ejrhw6); +assign H8thw6 = (~(Cxxmz6[28] & Nkrhw6)); +assign F7thw6 = (O8thw6 & V8thw6); +assign V8thw6 = (~(Cxxmz6[27] & Edqhw6)); +assign O8thw6 = (~(Coxmz6[27] & Jcqhw6)); +assign Hhh8v6 = (~(C9thw6 & J9thw6)); +assign J9thw6 = (Q9thw6 & X9thw6); +assign X9thw6 = (~(Obqhw6 & Qm47v6)); +assign Q9thw6 = (Eathw6 & Lathw6); +assign Lathw6 = (~(Cxxmz6[29] & Nkrhw6)); +assign Eathw6 = (~(Krxmz6[28] & Hbqhw6)); +assign C9thw6 = (Sathw6 & Zathw6); +assign Zathw6 = (~(Cxxmz6[28] & Edqhw6)); +assign Sathw6 = (~(Coxmz6[28] & Jcqhw6)); +assign Ahh8v6 = (~(Gbthw6 & Nbthw6)); +assign Nbthw6 = (Ubthw6 & Bcthw6); +assign Bcthw6 = (~(Krxmz6[29] & Hbqhw6)); +assign Ubthw6 = (Icthw6 & Ejrhw6); +assign Icthw6 = (~(Cxxmz6[30] & Nkrhw6)); +assign Gbthw6 = (Pcthw6 & Wcthw6); +assign Wcthw6 = (~(Coxmz6[29] & Jcqhw6)); +assign Pcthw6 = (Ddthw6 & Kdthw6); +assign Kdthw6 = (~(Obqhw6 & Gj47v6)); +assign Ddthw6 = (~(Cxxmz6[29] & Edqhw6)); +assign Tgh8v6 = (~(Rdthw6 & Ydthw6)); +assign Ydthw6 = (Fethw6 & Methw6); +assign Methw6 = (~(Obqhw6 & Sl47v6)); +assign Fethw6 = (Tethw6 & Afthw6); +assign Afthw6 = (~(Nkrhw6 & Cxxmz6[31])); +assign Tethw6 = (~(Krxmz6[30] & Hbqhw6)); +assign Rdthw6 = (Hfthw6 & Ofthw6); +assign Ofthw6 = (~(Cxxmz6[30] & Edqhw6)); +assign Hfthw6 = (~(Coxmz6[30] & Jcqhw6)); +assign Mgh8v6 = (~(Vfthw6 & Cgthw6)); +assign Cgthw6 = (Jgthw6 & Qgthw6); +assign Qgthw6 = (Xgthw6 & Ejrhw6); +assign Ejrhw6 = (~(Ehthw6 & Lhthw6)); +assign Ehthw6 = (Shthw6 & Zhthw6); +assign Xgthw6 = (~(Ovxmz6[0] & Ljrhw6)); +assign Ljrhw6 = (Githw6 & Lhthw6); +assign Jgthw6 = (Nithw6 & Uithw6); +assign Uithw6 = (~(Coxmz6[0] & Gkrhw6)); +assign Gkrhw6 = (Bjthw6 & Xh1nv6); +assign Bjthw6 = (Ijthw6 & Pjthw6); +assign Nithw6 = (~(Nkrhw6 & Cxxmz6[1])); +assign Nkrhw6 = (~(Edqhw6 | Wjthw6)); +assign Vfthw6 = (Dkthw6 & Kkthw6); +assign Kkthw6 = (~(Edqhw6 & Cxxmz6[0])); +assign Edqhw6 = (!Ijthw6); +assign Dkthw6 = (Rkthw6 & Ykthw6); +assign Ykthw6 = (~(Krxmz6[0] & Hbqhw6)); +assign Hbqhw6 = (Flthw6 & Cl57v6); +assign Flthw6 = (Lhthw6 & Zhthw6); +assign Rkthw6 = (~(Fy47v6 & Obqhw6)); +assign Obqhw6 = (~(Mlthw6 | Pm57v6)); +assign Mlthw6 = (!Exrhw6); +assign Exrhw6 = (Tlthw6 & Yn57v6); +assign Tlthw6 = (Lhthw6 & Shthw6); +assign Lhthw6 = (Amthw6 & Xh1nv6); +assign Amthw6 = (Ijthw6 & Hmthw6); +assign Ijthw6 = (~(Omthw6 & Vmthw6)); +assign Vmthw6 = (~(Cnthw6 & Jnthw6)); +assign Jnthw6 = (~(Qnthw6 & Xnthw6)); +assign Xnthw6 = (~(Eothw6 & Lothw6)); +assign Qnthw6 = (~(Sothw6 | Zothw6)); +assign Cnthw6 = (Gpthw6 & Npthw6); +assign Omthw6 = (~(Upthw6 & Bqthw6)); +assign Fgh8v6 = (Pqthw6 ? Iqthw6 : Ovxmz6[1]); +assign Iqthw6 = (Cxxmz6[1] | Uc1nv6); +assign Yfh8v6 = (Pqthw6 ? Wqthw6 : Fuxmz6[1]); +assign Wqthw6 = (Cxxmz6[9] & Uia7z6); +assign Rfh8v6 = (Drthw6 ? Hf57v6 : Ab57v6); +assign Kfh8v6 = (Ii57v6 ? Rrthw6 : Krthw6); +assign Rrthw6 = (Yrthw6 & Fsthw6); +assign Fsthw6 = (~(Msthw6 & Tsthw6)); +assign Tsthw6 = (Bqthw6 & Hf57v6); +assign Msthw6 = (Eothw6 & Ds57v6); +assign Yrthw6 = (Atthw6 | Wd1nv6); +assign Krthw6 = (~(Atthw6 | Wd1nv6)); +assign Dfh8v6 = (~(Htthw6 & Otthw6)); +assign Otthw6 = (~(Vtthw6 & Npthw6)); +assign Vtthw6 = (Cuthw6 | Juthw6); +assign Juthw6 = (Sdqhw6 ? Xuthw6 : Quthw6); +assign Cuthw6 = (~(Evthw6 & Lvthw6)); +assign Lvthw6 = (Svthw6 | Zvthw6); +assign Zvthw6 = (~(Ii57v6 | Tg57v6)); +assign Svthw6 = (Sdqhw6 ? Nwthw6 : Gwthw6); +assign Gwthw6 = (Uwthw6 & Bxthw6); +assign Evthw6 = (~(Ixthw6 & Pxthw6)); +assign Ixthw6 = (~(Wxthw6 | Uzxmz6[3])); +assign Htthw6 = (~(Tq57v6 & Atthw6)); +assign Weh8v6 = (~(Dythw6 & Kythw6)); +assign Kythw6 = (~(Rythw6 & Yythw6)); +assign Peh8v6 = (~(Dythw6 & Fzthw6)); +assign Fzthw6 = (~(Rythw6 & Mzthw6)); +assign Mzthw6 = (Tzthw6 ^ Yythw6); +assign Yythw6 = (!B1ymz6[0]); +assign Ieh8v6 = (A0uhw6 & H0uhw6); +assign H0uhw6 = (B1ymz6[2] ^ O0uhw6); +assign Beh8v6 = (A0uhw6 & V0uhw6); +assign V0uhw6 = (B1ymz6[3] ^ C1uhw6); +assign A0uhw6 = (Rythw6 & Dythw6); +assign Dythw6 = (~(J1uhw6 & Rythw6)); +assign Udh8v6 = (Rythw6 & Q1uhw6); +assign Q1uhw6 = (B1ymz6[4] ^ X1uhw6); +assign Ndh8v6 = (Rythw6 & E2uhw6); +assign E2uhw6 = (B1ymz6[5] ^ L2uhw6); +assign L2uhw6 = (X1uhw6 & B1ymz6[4]); +assign X1uhw6 = (C1uhw6 & B1ymz6[3]); +assign C1uhw6 = (O0uhw6 & B1ymz6[2]); +assign O0uhw6 = (B1ymz6[0] & B1ymz6[1]); +assign Rythw6 = (Ifh7v6 & S2uhw6); +assign Gdh8v6 = (Z2uhw6 ? Woxmz6[1] : Fqxmz6[1]); +assign Z2uhw6 = (!G3uhw6); +assign Zch8v6 = (G3uhw6 ? Fqxmz6[2] : Woxmz6[2]); +assign Sch8v6 = (G3uhw6 ? Fqxmz6[3] : Woxmz6[3]); +assign Lch8v6 = (G3uhw6 | Woxmz6[4]); +assign Ech8v6 = (G3uhw6 ? Fqxmz6[5] : Woxmz6[5]); +assign Xbh8v6 = (G3uhw6 ? Fqxmz6[0] : Woxmz6[0]); +assign G3uhw6 = (N3uhw6 & Fqxmz6[4]); +assign N3uhw6 = (Fqxmz6[0] ? B4uhw6 : U3uhw6); +assign B4uhw6 = (I4uhw6 & P4uhw6); +assign P4uhw6 = (W4uhw6 & Fqxmz6[2]); +assign W4uhw6 = (Fqxmz6[1] & Uia7z6); +assign I4uhw6 = (Fqxmz6[5] & Fqxmz6[3]); +assign U3uhw6 = (D5uhw6 & K5uhw6); +assign K5uhw6 = (~(R5uhw6 | Fqxmz6[2])); +assign R5uhw6 = (Fqxmz6[3] | Fqxmz6[5]); +assign D5uhw6 = (~(Nc1nv6 | Fqxmz6[1])); +assign Qbh8v6 = (~(Y5uhw6 & F6uhw6)); +assign F6uhw6 = (~(G8ymz6[1] & M6uhw6)); +assign Y5uhw6 = (~(G8ymz6[2] & Nx1nv6)); +assign Jbh8v6 = (T6uhw6 | A7uhw6); +assign T6uhw6 = (Nx1nv6 ? G8ymz6[1] : G8ymz6[0]); +assign Cbh8v6 = (~(H7uhw6 & O7uhw6)); +assign O7uhw6 = (~(G8ymz6[2] & M6uhw6)); +assign H7uhw6 = (~(G8ymz6[3] & Nx1nv6)); +assign Vah8v6 = (~(V7uhw6 & C8uhw6)); +assign C8uhw6 = (~(G8ymz6[3] & M6uhw6)); +assign M6uhw6 = (~(Nx1nv6 | A7uhw6)); +assign V7uhw6 = (~(Nx1nv6 & TDI)); +assign Nx1nv6 = (D567v6 & R9ymz6[3]); +assign Oah8v6 = (~(J8uhw6 & Q8uhw6)); +assign Q8uhw6 = (Iy1nv6 | Jo1nv6); +assign J8uhw6 = (~(X8uhw6 & G8ymz6[0])); +assign Hah8v6 = (~(E9uhw6 & L9uhw6)); +assign L9uhw6 = (~(X8uhw6 & G8ymz6[1])); +assign E9uhw6 = (S9uhw6 & Cja7z6); +assign S9uhw6 = (Iy1nv6 | An1nv6); +assign Aah8v6 = (~(Z9uhw6 & Gauhw6)); +assign Gauhw6 = (~(X8uhw6 & G8ymz6[2])); +assign Z9uhw6 = (Nauhw6 & Cja7z6); +assign Nauhw6 = (Iy1nv6 | Mm1nv6); +assign T9h8v6 = (~(Uauhw6 & Bbuhw6)); +assign Bbuhw6 = (~(X8uhw6 & G8ymz6[3])); +assign Uauhw6 = (Ibuhw6 & Cja7z6); +assign Ibuhw6 = (Iy1nv6 | Pbuhw6); +assign Pbuhw6 = (!W6ymz6[3]); +assign Iy1nv6 = (X8uhw6 | Nc1nv6); +assign X8uhw6 = (Wbuhw6 & Lw1nv6); +assign Wbuhw6 = (R9ymz6[3] & R9ymz6[2]); +assign M9h8v6 = (~(Dcuhw6 & Kcuhw6)); +assign Kcuhw6 = (~(Smwnv6 & L5ymz6[1])); +assign Dcuhw6 = (Rcuhw6 & Ycuhw6); +assign Ycuhw6 = (Fduhw6 | Mduhw6); +assign Rcuhw6 = (~(Lmwnv6 & L5ymz6[0])); +assign F9h8v6 = (~(Tduhw6 & Aeuhw6)); +assign Aeuhw6 = (Heuhw6 & Oeuhw6); +assign Oeuhw6 = (~(Coxmz6[30] & Qlwnv6)); +assign Heuhw6 = (Veuhw6 & Cfuhw6); +assign Veuhw6 = (~(Uixmz6[30] & Jlwnv6)); +assign Tduhw6 = (Jfuhw6 & Qfuhw6); +assign Qfuhw6 = (~(Smwnv6 & L5ymz6[34])); +assign Jfuhw6 = (Xfuhw6 & Eguhw6); +assign Eguhw6 = (~(Okwnv6 & Mg47v6)); +assign Xfuhw6 = (~(L5ymz6[33] & Lmwnv6)); +assign Y8h8v6 = (~(Lguhw6 & Sguhw6)); +assign Sguhw6 = (Zguhw6 & Ghuhw6); +assign Ghuhw6 = (~(Okwnv6 & Gj47v6)); +assign Zguhw6 = (Nhuhw6 & Uhuhw6); +assign Uhuhw6 = (~(Uixmz6[29] & Jlwnv6)); +assign Nhuhw6 = (~(Coxmz6[29] & Qlwnv6)); +assign Lguhw6 = (Biuhw6 & Iiuhw6); +assign Iiuhw6 = (~(L5ymz6[32] & Lmwnv6)); +assign Biuhw6 = (~(L5ymz6[33] & Smwnv6)); +assign R8h8v6 = (~(Piuhw6 & Wiuhw6)); +assign Wiuhw6 = (Djuhw6 & Kjuhw6); +assign Kjuhw6 = (~(Okwnv6 & Kh47v6)); +assign Djuhw6 = (Rjuhw6 & Yjuhw6); +assign Yjuhw6 = (~(Uixmz6[28] & Jlwnv6)); +assign Rjuhw6 = (~(Coxmz6[28] & Qlwnv6)); +assign Piuhw6 = (Fkuhw6 & Mkuhw6); +assign Mkuhw6 = (~(L5ymz6[31] & Lmwnv6)); +assign Fkuhw6 = (~(L5ymz6[32] & Smwnv6)); +assign K8h8v6 = (~(Tkuhw6 & Aluhw6)); +assign Aluhw6 = (Hluhw6 & Oluhw6); +assign Oluhw6 = (~(Coxmz6[27] & Qlwnv6)); +assign Hluhw6 = (Vluhw6 & Cfuhw6); +assign Vluhw6 = (~(Uixmz6[27] & Jlwnv6)); +assign Tkuhw6 = (Cmuhw6 & Jmuhw6); +assign Jmuhw6 = (~(L5ymz6[30] & Lmwnv6)); +assign Cmuhw6 = (~(L5ymz6[31] & Smwnv6)); +assign D8h8v6 = (~(Qmuhw6 & Xmuhw6)); +assign Xmuhw6 = (Enuhw6 & Lnuhw6); +assign Lnuhw6 = (~(Qf47v6 & Okwnv6)); +assign Enuhw6 = (Snuhw6 & Znuhw6); +assign Znuhw6 = (~(Uixmz6[26] & Jlwnv6)); +assign Snuhw6 = (~(Coxmz6[26] & Qlwnv6)); +assign Qmuhw6 = (Gouhw6 & Nouhw6); +assign Nouhw6 = (~(L5ymz6[29] & Lmwnv6)); +assign Gouhw6 = (~(L5ymz6[30] & Smwnv6)); +assign W7h8v6 = (~(Uouhw6 & Bpuhw6)); +assign Bpuhw6 = (Ipuhw6 & Ppuhw6); +assign Ppuhw6 = (~(Coxmz6[25] & Qlwnv6)); +assign Ipuhw6 = (Wpuhw6 & Cfuhw6); +assign Wpuhw6 = (~(Uixmz6[25] & Jlwnv6)); +assign Uouhw6 = (Dquhw6 & Kquhw6); +assign Kquhw6 = (~(L5ymz6[28] & Lmwnv6)); +assign Dquhw6 = (~(L5ymz6[29] & Smwnv6)); +assign P7h8v6 = (~(Rquhw6 & Yquhw6)); +assign Yquhw6 = (Fruhw6 & Mruhw6); +assign Mruhw6 = (~(Coxmz6[24] & Qlwnv6)); +assign Fruhw6 = (Truhw6 & Cfuhw6); +assign Truhw6 = (~(Uixmz6[24] & Jlwnv6)); +assign Rquhw6 = (Asuhw6 & Hsuhw6); +assign Hsuhw6 = (~(L5ymz6[27] & Lmwnv6)); +assign Asuhw6 = (~(L5ymz6[28] & Smwnv6)); +assign I7h8v6 = (~(Osuhw6 & Vsuhw6)); +assign Vsuhw6 = (Ctuhw6 & Jtuhw6); +assign Jtuhw6 = (~(Okwnv6 & Tfxmz6[11])); +assign Ctuhw6 = (Qtuhw6 & Cfuhw6); +assign Qtuhw6 = (~(Coxmz6[23] & Qlwnv6)); +assign Osuhw6 = (Xtuhw6 & Euuhw6); +assign Euuhw6 = (~(Lmwnv6 & L5ymz6[26])); +assign Xtuhw6 = (~(L5ymz6[27] & Smwnv6)); +assign B7h8v6 = (~(Luuhw6 & Suuhw6)); +assign Suuhw6 = (Zuuhw6 & Gvuhw6); +assign Gvuhw6 = (~(Coxmz6[22] & Qlwnv6)); +assign Zuuhw6 = (~(Tfxmz6[10] & Okwnv6)); +assign Luuhw6 = (Nvuhw6 & Uvuhw6); +assign Uvuhw6 = (~(L5ymz6[25] & Lmwnv6)); +assign Nvuhw6 = (~(Smwnv6 & L5ymz6[26])); +assign U6h8v6 = (~(Bwuhw6 & Iwuhw6)); +assign Iwuhw6 = (Pwuhw6 & Wwuhw6); +assign Wwuhw6 = (~(Tfxmz6[9] & Okwnv6)); +assign Pwuhw6 = (Dxuhw6 & Cfuhw6); +assign Dxuhw6 = (~(Coxmz6[21] & Qlwnv6)); +assign Bwuhw6 = (Kxuhw6 & Rxuhw6); +assign Rxuhw6 = (~(L5ymz6[24] & Lmwnv6)); +assign Kxuhw6 = (~(L5ymz6[25] & Smwnv6)); +assign N6h8v6 = (~(Yxuhw6 & Fyuhw6)); +assign Fyuhw6 = (Myuhw6 & Tyuhw6); +assign Tyuhw6 = (~(Coxmz6[20] & Qlwnv6)); +assign Myuhw6 = (~(Tfxmz6[8] & Okwnv6)); +assign Yxuhw6 = (Azuhw6 & Hzuhw6); +assign Hzuhw6 = (~(L5ymz6[23] & Lmwnv6)); +assign Azuhw6 = (~(L5ymz6[24] & Smwnv6)); +assign G6h8v6 = (~(Ozuhw6 & Vzuhw6)); +assign Vzuhw6 = (C0vhw6 & J0vhw6); +assign J0vhw6 = (~(Coxmz6[19] & Qlwnv6)); +assign C0vhw6 = (~(Tfxmz6[7] & Okwnv6)); +assign Ozuhw6 = (Q0vhw6 & X0vhw6); +assign X0vhw6 = (~(L5ymz6[22] & Lmwnv6)); +assign Q0vhw6 = (~(L5ymz6[23] & Smwnv6)); +assign Z5h8v6 = (~(E1vhw6 & L1vhw6)); +assign L1vhw6 = (S1vhw6 & Z1vhw6); +assign Z1vhw6 = (~(Coxmz6[18] & Qlwnv6)); +assign S1vhw6 = (~(Tfxmz6[6] & Okwnv6)); +assign E1vhw6 = (G2vhw6 & N2vhw6); +assign N2vhw6 = (~(L5ymz6[21] & Lmwnv6)); +assign G2vhw6 = (~(L5ymz6[22] & Smwnv6)); +assign S5h8v6 = (~(U2vhw6 & B3vhw6)); +assign B3vhw6 = (I3vhw6 & P3vhw6); +assign P3vhw6 = (~(Coxmz6[17] & Qlwnv6)); +assign I3vhw6 = (~(Tfxmz6[5] & Okwnv6)); +assign U2vhw6 = (W3vhw6 & D4vhw6); +assign D4vhw6 = (~(L5ymz6[20] & Lmwnv6)); +assign W3vhw6 = (~(L5ymz6[21] & Smwnv6)); +assign L5h8v6 = (~(K4vhw6 & R4vhw6)); +assign R4vhw6 = (Y4vhw6 & F5vhw6); +assign F5vhw6 = (~(Coxmz6[16] & Qlwnv6)); +assign Y4vhw6 = (~(Tfxmz6[4] & Okwnv6)); +assign K4vhw6 = (M5vhw6 & T5vhw6); +assign T5vhw6 = (~(L5ymz6[19] & Lmwnv6)); +assign M5vhw6 = (~(L5ymz6[20] & Smwnv6)); +assign E5h8v6 = (~(A6vhw6 & H6vhw6)); +assign H6vhw6 = (O6vhw6 & V6vhw6); +assign V6vhw6 = (~(Coxmz6[15] & Qlwnv6)); +assign O6vhw6 = (~(Tfxmz6[3] & Okwnv6)); +assign A6vhw6 = (C7vhw6 & J7vhw6); +assign J7vhw6 = (~(L5ymz6[18] & Lmwnv6)); +assign C7vhw6 = (~(L5ymz6[19] & Smwnv6)); +assign X4h8v6 = (~(Q7vhw6 & X7vhw6)); +assign X7vhw6 = (E8vhw6 & L8vhw6); +assign L8vhw6 = (~(Coxmz6[14] & Qlwnv6)); +assign E8vhw6 = (~(Tfxmz6[2] & Okwnv6)); +assign Q7vhw6 = (S8vhw6 & Z8vhw6); +assign Z8vhw6 = (~(L5ymz6[17] & Lmwnv6)); +assign S8vhw6 = (~(L5ymz6[18] & Smwnv6)); +assign Q4h8v6 = (~(G9vhw6 & N9vhw6)); +assign N9vhw6 = (U9vhw6 & Bavhw6); +assign Bavhw6 = (~(Coxmz6[13] & Qlwnv6)); +assign U9vhw6 = (~(Tfxmz6[1] & Okwnv6)); +assign G9vhw6 = (Iavhw6 & Pavhw6); +assign Pavhw6 = (~(L5ymz6[16] & Lmwnv6)); +assign Iavhw6 = (~(L5ymz6[17] & Smwnv6)); +assign J4h8v6 = (~(Wavhw6 & Dbvhw6)); +assign Dbvhw6 = (Kbvhw6 & Rbvhw6); +assign Rbvhw6 = (~(Coxmz6[12] & Qlwnv6)); +assign Kbvhw6 = (~(Tfxmz6[0] & Okwnv6)); +assign Wavhw6 = (Ybvhw6 & Fcvhw6); +assign Fcvhw6 = (~(L5ymz6[15] & Lmwnv6)); +assign Ybvhw6 = (~(L5ymz6[16] & Smwnv6)); +assign C4h8v6 = (~(Mcvhw6 & Tcvhw6)); +assign Tcvhw6 = (Advhw6 & Hdvhw6); +assign Hdvhw6 = (~(Coxmz6[11] & Qlwnv6)); +assign Advhw6 = (~(Ogxmz6[3] & Okwnv6)); +assign Mcvhw6 = (Odvhw6 & Vdvhw6); +assign Vdvhw6 = (~(L5ymz6[14] & Lmwnv6)); +assign Odvhw6 = (~(L5ymz6[15] & Smwnv6)); +assign V3h8v6 = (~(Cevhw6 & Jevhw6)); +assign Jevhw6 = (Qevhw6 & Xevhw6); +assign Xevhw6 = (~(Ogxmz6[2] & Okwnv6)); +assign Qevhw6 = (Efvhw6 & Cfuhw6); +assign Efvhw6 = (~(Coxmz6[10] & Qlwnv6)); +assign Cevhw6 = (Lfvhw6 & Sfvhw6); +assign Sfvhw6 = (~(L5ymz6[13] & Lmwnv6)); +assign Lfvhw6 = (~(L5ymz6[14] & Smwnv6)); +assign O3h8v6 = (~(Zfvhw6 & Ggvhw6)); +assign Ggvhw6 = (Ngvhw6 & Ugvhw6); +assign Ugvhw6 = (~(Coxmz6[9] & Qlwnv6)); +assign Ngvhw6 = (~(Ogxmz6[1] & Okwnv6)); +assign Zfvhw6 = (Bhvhw6 & Ihvhw6); +assign Ihvhw6 = (~(L5ymz6[12] & Lmwnv6)); +assign Bhvhw6 = (~(L5ymz6[13] & Smwnv6)); +assign H3h8v6 = (~(Phvhw6 & Whvhw6)); +assign Whvhw6 = (Divhw6 & Kivhw6); +assign Kivhw6 = (~(Coxmz6[8] & Qlwnv6)); +assign Divhw6 = (~(Ogxmz6[0] & Okwnv6)); +assign Phvhw6 = (Rivhw6 & Yivhw6); +assign Yivhw6 = (~(L5ymz6[11] & Lmwnv6)); +assign Rivhw6 = (~(L5ymz6[12] & Smwnv6)); +assign A3h8v6 = (~(Fjvhw6 & Mjvhw6)); +assign Mjvhw6 = (Tjvhw6 & Akvhw6); +assign Akvhw6 = (~(Uixmz6[7] & Jlwnv6)); +assign Tjvhw6 = (~(Coxmz6[7] & Qlwnv6)); +assign Fjvhw6 = (Hkvhw6 & Okvhw6); +assign Okvhw6 = (~(L5ymz6[10] & Lmwnv6)); +assign Hkvhw6 = (~(L5ymz6[11] & Smwnv6)); +assign T2h8v6 = (~(Vkvhw6 & Clvhw6)); +assign Clvhw6 = (Jlvhw6 & Qlvhw6); +assign Qlvhw6 = (~(Coxmz6[6] & Qlwnv6)); +assign Jlvhw6 = (Xlvhw6 & Cfuhw6); +assign Xlvhw6 = (~(Uixmz6[6] & Jlwnv6)); +assign Vkvhw6 = (Emvhw6 & Lmvhw6); +assign Lmvhw6 = (~(L5ymz6[9] & Lmwnv6)); +assign Emvhw6 = (~(L5ymz6[10] & Smwnv6)); +assign M2h8v6 = (~(Smvhw6 & Zmvhw6)); +assign Zmvhw6 = (Gnvhw6 & Nnvhw6); +assign Nnvhw6 = (~(Coxmz6[5] & Qlwnv6)); +assign Gnvhw6 = (Unvhw6 & Cfuhw6); +assign Unvhw6 = (~(Uixmz6[5] & Jlwnv6)); +assign Smvhw6 = (Bovhw6 & Iovhw6); +assign Iovhw6 = (~(L5ymz6[9] & Smwnv6)); +assign Bovhw6 = (Povhw6 & Wovhw6); +assign Wovhw6 = (~(S067v6 & Okwnv6)); +assign Povhw6 = (~(L5ymz6[8] & Lmwnv6)); +assign F2h8v6 = (~(Dpvhw6 & Kpvhw6)); +assign Kpvhw6 = (Rpvhw6 & Ypvhw6); +assign Ypvhw6 = (~(Coxmz6[4] & Qlwnv6)); +assign Rpvhw6 = (Fqvhw6 & Cfuhw6); +assign Fqvhw6 = (~(Uixmz6[4] & Jlwnv6)); +assign Jlwnv6 = (Mqvhw6 & Tqvhw6); +assign Tqvhw6 = (~(Mduhw6 | Q2ymz6[0])); +assign Mqvhw6 = (Uu57v6 & Q2ymz6[1]); +assign Dpvhw6 = (Arvhw6 & Hrvhw6); +assign Hrvhw6 = (~(L5ymz6[8] & Smwnv6)); +assign Arvhw6 = (Orvhw6 & Vrvhw6); +assign Vrvhw6 = (~(F267v6 & Okwnv6)); +assign Orvhw6 = (~(L5ymz6[7] & Lmwnv6)); +assign Y1h8v6 = (~(Csvhw6 & Jsvhw6)); +assign Jsvhw6 = (Qsvhw6 & Xsvhw6); +assign Xsvhw6 = (~(Coxmz6[3] & Qlwnv6)); +assign Qsvhw6 = (~(Hhxmz6[1] & Okwnv6)); +assign Csvhw6 = (Etvhw6 & Ltvhw6); +assign Ltvhw6 = (~(L5ymz6[6] & Lmwnv6)); +assign Etvhw6 = (~(L5ymz6[7] & Smwnv6)); +assign R1h8v6 = (~(Stvhw6 & Ztvhw6)); +assign Ztvhw6 = (Guvhw6 & Nuvhw6); +assign Nuvhw6 = (~(Hhxmz6[0] & Okwnv6)); +assign Guvhw6 = (Uuvhw6 & Cfuhw6); +assign Uuvhw6 = (~(Coxmz6[2] & Qlwnv6)); +assign Stvhw6 = (Bvvhw6 & Ivvhw6); +assign Ivvhw6 = (~(L5ymz6[5] & Lmwnv6)); +assign Bvvhw6 = (~(L5ymz6[6] & Smwnv6)); +assign K1h8v6 = (~(Pvvhw6 & Wvvhw6)); +assign Wvvhw6 = (Dwvhw6 & Kwvhw6); +assign Kwvhw6 = (~(Okwnv6 & Sx57v6)); +assign Dwvhw6 = (Rwvhw6 & Cfuhw6); +assign Rwvhw6 = (~(Coxmz6[1] & Qlwnv6)); +assign Pvvhw6 = (Ywvhw6 & Fxvhw6); +assign Fxvhw6 = (~(L5ymz6[4] & Lmwnv6)); +assign Ywvhw6 = (~(L5ymz6[5] & Smwnv6)); +assign D1h8v6 = (~(Mxvhw6 & Txvhw6)); +assign Txvhw6 = (Ayvhw6 & Hyvhw6); +assign Hyvhw6 = (~(Okwnv6 & Ez57v6)); +assign Okwnv6 = (Oyvhw6 & Vyvhw6); +assign Vyvhw6 = (~(Mduhw6 | Q2ymz6[1])); +assign Oyvhw6 = (Q2ymz6[0] & Uu57v6); +assign Ayvhw6 = (Czvhw6 & Cfuhw6); +assign Cfuhw6 = (~(Jzvhw6 & Qzvhw6)); +assign Qzvhw6 = (W6ymz6[2] & W6ymz6[3]); +assign Jzvhw6 = (Xzvhw6 & Tm1nv6); +assign Czvhw6 = (~(Coxmz6[0] & Qlwnv6)); +assign Qlwnv6 = (~(Mduhw6 | Uu57v6)); +assign Mxvhw6 = (E0whw6 & L0whw6); +assign L0whw6 = (~(L5ymz6[3] & Lmwnv6)); +assign E0whw6 = (~(L5ymz6[4] & Smwnv6)); +assign W0h8v6 = (~(S0whw6 & Z0whw6)); +assign Z0whw6 = (~(L5ymz6[2] & Lmwnv6)); +assign S0whw6 = (~(L5ymz6[3] & Smwnv6)); +assign P0h8v6 = (~(G1whw6 & N1whw6)); +assign N1whw6 = (~(L5ymz6[2] & Smwnv6)); +assign G1whw6 = (U1whw6 & B2whw6); +assign B2whw6 = (Mduhw6 | I2whw6); +assign Mduhw6 = (~(P2whw6 & Xzvhw6)); +assign U1whw6 = (~(Lmwnv6 & L5ymz6[1])); +assign Lmwnv6 = (W2whw6 & Cja7z6); +assign Cja7z6 = (!Nc1nv6); +assign Nc1nv6 = (R9ymz6[0] & A7uhw6); +assign A7uhw6 = (!Pr1nv6); +assign Pr1nv6 = (~(D3whw6 & R9ymz6[3])); +assign D3whw6 = (R9ymz6[2] & R9ymz6[1]); +assign W2whw6 = (~(Smwnv6 | Xzvhw6)); +assign Smwnv6 = (D567v6 & K3whw6); +assign D567v6 = (R3whw6 & R9ymz6[1]); +assign R3whw6 = (Nq1nv6 & Zp1nv6); +assign Zp1nv6 = (!R9ymz6[2]); +assign I0h8v6 = (Pqthw6 ? Y3whw6 : Fuxmz6[0]); +assign Y3whw6 = (Cxxmz6[8] & Uia7z6); +assign B0h8v6 = (~(F4whw6 & M4whw6)); +assign M4whw6 = (~(T4whw6 & Uia7z6)); +assign F4whw6 = (~(J1uhw6 & Uzxmz6[1])); +assign Uzg8v6 = (~(A5whw6 & H5whw6)); +assign H5whw6 = (~(O5whw6 & Uia7z6)); +assign A5whw6 = (~(J1uhw6 & Uzxmz6[2])); +assign Nzg8v6 = (~(V5whw6 & C6whw6)); +assign C6whw6 = (~(J6whw6 & Uia7z6)); +assign J6whw6 = (~(Q6whw6 & X6whw6)); +assign X6whw6 = (E7whw6 & L7whw6); +assign L7whw6 = (S7whw6 & Z7whw6); +assign S7whw6 = (G8whw6 & N8whw6); +assign E7whw6 = (U8whw6 & B9whw6); +assign U8whw6 = (!Quthw6); +assign Q6whw6 = (I9whw6 & P9whw6); +assign P9whw6 = (W9whw6 & Dawhw6); +assign Dawhw6 = (~(Kawhw6 & Rawhw6)); +assign Kawhw6 = (Tq57v6 & Yawhw6); +assign Yawhw6 = (~(Sdqhw6 & Fbwhw6)); +assign W9whw6 = (~(Mbwhw6 & Tbwhw6)); +assign I9whw6 = (Wjthw6 & Acwhw6); +assign Acwhw6 = (~(Xuthw6 & Hcwhw6)); +assign V5whw6 = (~(J1uhw6 & Uzxmz6[3])); +assign Gzg8v6 = (~(Ocwhw6 & Vcwhw6)); +assign Vcwhw6 = (~(Cdwhw6 & Uia7z6)); +assign Ocwhw6 = (~(J1uhw6 & Uzxmz6[4])); +assign Zyg8v6 = (~(Jdwhw6 & Qdwhw6)); +assign Qdwhw6 = (Xdwhw6 | Uc1nv6); +assign Jdwhw6 = (~(J1uhw6 & Uzxmz6[0])); +assign Syg8v6 = (!Eewhw6); +assign Eewhw6 = (Zewhw6 ? Sewhw6 : Lewhw6); +assign Lyg8v6 = (!Gfwhw6); +assign Gfwhw6 = (Myxmz6[1] ? Ufwhw6 : Nfwhw6); +assign Nfwhw6 = (Sewhw6 | Zewhw6); +assign Zewhw6 = (!Myxmz6[0]); +assign Eyg8v6 = (Myxmz6[2] ? Igwhw6 : Bgwhw6); +assign Igwhw6 = (~(Ufwhw6 & Pgwhw6)); +assign Pgwhw6 = (Sewhw6 | Myxmz6[1]); +assign Ufwhw6 = (Lewhw6 & Wgwhw6); +assign Wgwhw6 = (Sewhw6 | Myxmz6[0]); +assign Bgwhw6 = (Dhwhw6 & Khwhw6); +assign Xxg8v6 = (Myxmz6[3] ? Yhwhw6 : Rhwhw6); +assign Yhwhw6 = (~(Lewhw6 & Fiwhw6)); +assign Fiwhw6 = (Sewhw6 | Miwhw6); +assign Rhwhw6 = (Khwhw6 & Miwhw6); +assign Qxg8v6 = (Myxmz6[4] ? Ajwhw6 : Tiwhw6); +assign Ajwhw6 = (~(Lewhw6 & Hjwhw6)); +assign Hjwhw6 = (~(Khwhw6 & Ojwhw6)); +assign Tiwhw6 = (Khwhw6 & Vjwhw6); +assign Khwhw6 = (!Sewhw6); +assign Sewhw6 = (~(Lewhw6 & Uia7z6)); +assign Lewhw6 = (~(Ckwhw6 & Uia7z6)); +assign Ckwhw6 = (~(Jkwhw6 & Uzxmz6[0])); +assign Jxg8v6 = (Qkwhw6 ? Cl57v6 : S2uhw6); +assign Cxg8v6 = (Qkwhw6 ? Yn57v6 : Cl57v6); +assign Vwg8v6 = (~(Xkwhw6 & Elwhw6)); +assign Elwhw6 = (~(Llwhw6 & Slwhw6)); +assign Llwhw6 = (~(Zlwhw6 & Gmwhw6)); +assign Gmwhw6 = (~(Nmwhw6 & Zothw6)); +assign Nmwhw6 = (~(Umwhw6 | Uj57v6)); +assign Zlwhw6 = (Wxthw6 | Bnwhw6); +assign Bnwhw6 = (Inwhw6 & Ldqhw6); +assign Xkwhw6 = (~(Uj57v6 & Pnwhw6)); +assign Pnwhw6 = (~(Slwhw6 & Wnwhw6)); +assign Wnwhw6 = (~(Zothw6 & Umwhw6)); +assign Slwhw6 = (~(Qkwhw6 & Dowhw6)); +assign Dowhw6 = (~(Kowhw6 & Npthw6)); +assign Kowhw6 = (~(Rowhw6 & Yowhw6)); +assign Yowhw6 = (~(Uzxmz6[0] & Fpwhw6)); +assign Fpwhw6 = (~(Mpwhw6 & Tpwhw6)); +assign Rowhw6 = (Aqwhw6 & Hqwhw6); +assign Aqwhw6 = (~(Oqwhw6 & Vqwhw6)); +assign Vqwhw6 = (Tbwhw6 | Crwhw6); +assign Qkwhw6 = (Bxthw6 | J1uhw6); +assign Owg8v6 = (~(Uia7z6 & Jrwhw6)); +assign Jrwhw6 = (~(Tg57v6 & Qrwhw6)); +assign Qrwhw6 = (~(Xrwhw6 & Eothw6)); +assign Hwg8v6 = (Drthw6 ? D857v6 : Eswhw6); +assign Drthw6 = (~(Lswhw6 & Sswhw6)); +assign Sswhw6 = (Xdwhw6 & Cdwhw6); +assign Cdwhw6 = (~(Zswhw6 & Gtwhw6)); +assign Gtwhw6 = (Ntwhw6 & Utwhw6); +assign Utwhw6 = (Buwhw6 & Z7whw6); +assign Buwhw6 = (~(Iuwhw6 | Puwhw6)); +assign Ntwhw6 = (Wuwhw6 & Dvwhw6); +assign Zswhw6 = (Kvwhw6 & Rvwhw6); +assign Rvwhw6 = (Yvwhw6 & Fwwhw6); +assign Fwwhw6 = (~(Mwwhw6 & Og1nv6)); +assign Mwwhw6 = (Twwhw6 & Axwhw6); +assign Yvwhw6 = (Hxwhw6 & Oxwhw6); +assign Oxwhw6 = (~(Crwhw6 & Og1nv6)); +assign Hxwhw6 = (~(Vxwhw6 & Xuthw6)); +assign Vxwhw6 = (!Hcwhw6); +assign Hcwhw6 = (Fuxmz6[1] | Fuxmz6[0]); +assign Kvwhw6 = (Wjthw6 & Cywhw6); +assign Cywhw6 = (~(Jywhw6 & Qywhw6)); +assign Jywhw6 = (Xywhw6 & Ezwhw6); +assign Xdwhw6 = (Lzwhw6 & Szwhw6); +assign Szwhw6 = (Zzwhw6 & G0xhw6); +assign G0xhw6 = (N0xhw6 & N8whw6); +assign N0xhw6 = (~(Puwhw6 | Ei1nv6)); +assign Zzwhw6 = (U0xhw6 & Wuwhw6); +assign U0xhw6 = (~(B1xhw6 & I1xhw6)); +assign B1xhw6 = (~(Dvwhw6 & P1xhw6)); +assign Lzwhw6 = (W1xhw6 & D2xhw6); +assign D2xhw6 = (K2xhw6 & R2xhw6); +assign R2xhw6 = (~(Rawhw6 & Tq57v6)); +assign K2xhw6 = (Y2xhw6 & F3xhw6); +assign F3xhw6 = (~(Sdqhw6 & M3xhw6)); +assign M3xhw6 = (~(T3xhw6 & A4xhw6)); +assign A4xhw6 = (~(Jkwhw6 & Twwhw6)); +assign T3xhw6 = (H4xhw6 & Mpwhw6); +assign H4xhw6 = (~(O4xhw6 & Oqwhw6)); +assign Y2xhw6 = (V4xhw6 | Wjthw6); +assign W1xhw6 = (C5xhw6 & J5xhw6); +assign C5xhw6 = (Twwhw6 ? Inwhw6 : Q5xhw6); +assign Inwhw6 = (Bxthw6 & X5xhw6); +assign X5xhw6 = (~(E6xhw6 & Oqwhw6)); +assign E6xhw6 = (Uzxmz6[1] & L6xhw6); +assign Q5xhw6 = (~(Uzxmz6[3] & S6xhw6)); +assign S6xhw6 = (Uzxmz6[1] ^ Axwhw6); +assign Lswhw6 = (Z6xhw6 & G7xhw6); +assign G7xhw6 = (!T4whw6); +assign T4whw6 = (~(N7xhw6 & U7xhw6)); +assign U7xhw6 = (B8xhw6 & I8xhw6); +assign I8xhw6 = (P8xhw6 & W8xhw6); +assign P8xhw6 = (~(D9xhw6 | Xh1nv6)); +assign B8xhw6 = (K9xhw6 & R9xhw6); +assign R9xhw6 = (~(S2uhw6 & Y9xhw6)); +assign Y9xhw6 = (~(Faxhw6 & Maxhw6)); +assign Maxhw6 = (~(Taxhw6 & Twwhw6)); +assign Faxhw6 = (Abxhw6 & Hbxhw6); +assign Hbxhw6 = (~(Obxhw6 & Tbwhw6)); +assign Obxhw6 = (Vbxhw6 & Ccxhw6); +assign Abxhw6 = (~(Rawhw6 & Jcxhw6)); +assign Jcxhw6 = (~(Ii57v6 & Tq57v6)); +assign K9xhw6 = (Qcxhw6 & Uwthw6); +assign Qcxhw6 = (~(V4xhw6 & Gpthw6)); +assign Gpthw6 = (!Wjthw6); +assign Wjthw6 = (Xcxhw6 & Ldqhw6); +assign Ldqhw6 = (~(Jkwhw6 & Tbwhw6)); +assign Jkwhw6 = (!Tpwhw6); +assign Tpwhw6 = (~(Edxhw6 & Uzxmz6[4])); +assign Edxhw6 = (Uzxmz6[3] & Vbxhw6); +assign V4xhw6 = (Myxmz6[4] & Vjwhw6); +assign Vjwhw6 = (!Ojwhw6); +assign Ojwhw6 = (~(Myxmz6[3] & Miwhw6)); +assign Miwhw6 = (Dhwhw6 & Myxmz6[2]); +assign Dhwhw6 = (Myxmz6[1] & Myxmz6[0]); +assign N7xhw6 = (Ldxhw6 & Sdxhw6); +assign Sdxhw6 = (Zdxhw6 & Gexhw6); +assign Gexhw6 = (Bxthw6 | Twwhw6); +assign Zdxhw6 = (Nexhw6 & Uexhw6); +assign Uexhw6 = (~(Puwhw6 & Ezwhw6)); +assign Nexhw6 = (Dvwhw6 | Fuxmz6[1]); +assign Ldxhw6 = (J5xhw6 & P1xhw6); +assign P1xhw6 = (~(Xuthw6 & Fuxmz6[1])); +assign J5xhw6 = (Bfxhw6 & G8whw6); +assign G8whw6 = (~(Mbwhw6 & Crwhw6)); +assign Bfxhw6 = (~(Crwhw6 & Uzxmz6[2])); +assign Z6xhw6 = (!O5whw6); +assign O5whw6 = (~(Ifxhw6 & Pfxhw6)); +assign Pfxhw6 = (Wfxhw6 & Dgxhw6); +assign Dgxhw6 = (Kgxhw6 & Xcxhw6); +assign Xcxhw6 = (!Zothw6); +assign Zothw6 = (Taxhw6 & Uzxmz6[0]); +assign Kgxhw6 = (~(Pxthw6 | Rgxhw6)); +assign Pxthw6 = (Ygxhw6 & Crwhw6); +assign Ygxhw6 = (Uzxmz6[2] & Axwhw6); +assign Wfxhw6 = (Fhxhw6 & Mhxhw6); +assign Mhxhw6 = (~(Thxhw6 & Xuthw6)); +assign Xuthw6 = (Mbwhw6 & Aixhw6); +assign Mbwhw6 = (Uzxmz6[3] & Axwhw6); +assign Thxhw6 = (~(I1xhw6 | Fuxmz6[1])); +assign I1xhw6 = (!Fuxmz6[0]); +assign Fhxhw6 = (Bxthw6 & Z7whw6); +assign Bxthw6 = (~(Hixhw6 & Vbxhw6)); +assign Ifxhw6 = (Oixhw6 & Vixhw6); +assign Vixhw6 = (Cjxhw6 & Wuwhw6); +assign Wuwhw6 = (~(Jjxhw6 & Uj1nv6)); +assign Jjxhw6 = (Uzxmz6[2] & Twwhw6); +assign Cjxhw6 = (~(Qjxhw6 | D9xhw6)); +assign D9xhw6 = (Qywhw6 & Xjxhw6); +assign Xjxhw6 = (~(Xywhw6 & Ezwhw6)); +assign Ezwhw6 = (!Upthw6); +assign Xywhw6 = (Ekxhw6 | Fy47v6); +assign Qywhw6 = (!N8whw6); +assign N8whw6 = (~(Lkxhw6 & Skxhw6)); +assign Skxhw6 = (Uzxmz6[1] & Uzxmz6[2]); +assign Lkxhw6 = (Uj1nv6 & Uzxmz6[0]); +assign Qjxhw6 = (!Dvwhw6); +assign Dvwhw6 = (~(Zkxhw6 & Tbwhw6)); +assign Zkxhw6 = (Uj1nv6 & Uzxmz6[1]); +assign Oixhw6 = (Glxhw6 & Nlxhw6); +assign Nlxhw6 = (~(Ulxhw6 & Bmxhw6)); +assign Bmxhw6 = (S2uhw6 & Fbwhw6); +assign Fbwhw6 = (!Ii57v6); +assign Ulxhw6 = (Rawhw6 & Tq57v6); +assign Rawhw6 = (!Mpwhw6); +assign Mpwhw6 = (~(Imxhw6 & Uzxmz6[1])); +assign Imxhw6 = (Og1nv6 & Axwhw6); +assign Glxhw6 = (B9whw6 & W8xhw6); +assign W8xhw6 = (~(Pmxhw6 & Iuwhw6)); +assign Pmxhw6 = (Uzxmz6[0] & Uzxmz6[2]); +assign B9whw6 = (~(Upthw6 & Puwhw6)); +assign Eswhw6 = (~(Wmxhw6 | Sothw6)); +assign Wmxhw6 = (Dnxhw6 & Knxhw6); +assign Knxhw6 = (~(Yn57v6 & Rnxhw6)); +assign Rnxhw6 = (Lothw6 | Pm57v6); +assign Awg8v6 = (Jcqhw6 | Ynxhw6); +assign Ynxhw6 = (Yt47v6 & Foxhw6); +assign Foxhw6 = (~(Xrwhw6 & Moxhw6)); +assign Xrwhw6 = (~(Lothw6 | Tq57v6)); +assign Tvg8v6 = (Zdqhw6 ? Omxmz6[25] : Cxxmz6[25]); +assign Mvg8v6 = (Zdqhw6 ? Omxmz6[26] : Cxxmz6[26]); +assign Fvg8v6 = (Zdqhw6 ? Omxmz6[27] : Cxxmz6[27]); +assign Yug8v6 = (Zdqhw6 ? Omxmz6[28] : Cxxmz6[28]); +assign Rug8v6 = (Zdqhw6 ? Omxmz6[29] : Cxxmz6[29]); +assign Zdqhw6 = (!Toxhw6); +assign Kug8v6 = (Toxhw6 ? Cxxmz6[30] : Omxmz6[30]); +assign Dug8v6 = (Toxhw6 ? Cxxmz6[4] : Omxmz6[4]); +assign Wtg8v6 = (Toxhw6 ? Cxxmz6[5] : Omxmz6[5]); +assign Ptg8v6 = (Toxhw6 ? Cxxmz6[6] : Omxmz6[6]); +assign Itg8v6 = (Toxhw6 ? Cxxmz6[7] : Omxmz6[7]); +assign Btg8v6 = (Toxhw6 ? Cxxmz6[0] : Pm57v6); +assign Usg8v6 = (~(Apxhw6 & Hpxhw6)); +assign Hpxhw6 = (~(Cxxmz6[13] & Scrhw6)); +assign Apxhw6 = (Opxhw6 & Vpxhw6); +assign Vpxhw6 = (~(Ndrhw6 & Njxmz6[1])); +assign Opxhw6 = (~(Udrhw6 & Hnxmz6[1])); +assign Nsg8v6 = (~(Cqxhw6 & Jqxhw6)); +assign Jqxhw6 = (~(Cxxmz6[14] & Scrhw6)); +assign Cqxhw6 = (Qqxhw6 & Xqxhw6); +assign Xqxhw6 = (~(Ndrhw6 & Njxmz6[2])); +assign Qqxhw6 = (~(Udrhw6 & Hnxmz6[2])); +assign Gsg8v6 = (~(Erxhw6 & Lrxhw6)); +assign Lrxhw6 = (~(Cxxmz6[15] & Scrhw6)); +assign Erxhw6 = (Srxhw6 & Zrxhw6); +assign Zrxhw6 = (~(Ndrhw6 & Njxmz6[3])); +assign Srxhw6 = (~(Udrhw6 & Hnxmz6[3])); +assign Zrg8v6 = (~(Gsxhw6 & Nsxhw6)); +assign Nsxhw6 = (~(Cxxmz6[16] & Scrhw6)); +assign Gsxhw6 = (Usxhw6 & Btxhw6); +assign Btxhw6 = (~(Ndrhw6 & Njxmz6[4])); +assign Usxhw6 = (~(Udrhw6 & Hnxmz6[4])); +assign Srg8v6 = (~(Itxhw6 & Ptxhw6)); +assign Ptxhw6 = (~(Cxxmz6[17] & Scrhw6)); +assign Itxhw6 = (Wtxhw6 & Duxhw6); +assign Duxhw6 = (~(Ndrhw6 & Njxmz6[5])); +assign Wtxhw6 = (~(Udrhw6 & Hnxmz6[5])); +assign Lrg8v6 = (~(Kuxhw6 & Ruxhw6)); +assign Ruxhw6 = (~(Cxxmz6[18] & Scrhw6)); +assign Kuxhw6 = (Yuxhw6 & Fvxhw6); +assign Fvxhw6 = (~(Ndrhw6 & Njxmz6[6])); +assign Yuxhw6 = (~(Udrhw6 & Hnxmz6[6])); +assign Erg8v6 = (~(Mvxhw6 & Tvxhw6)); +assign Tvxhw6 = (~(Cxxmz6[19] & Scrhw6)); +assign Mvxhw6 = (Awxhw6 & Hwxhw6); +assign Hwxhw6 = (~(Ndrhw6 & Njxmz6[7])); +assign Awxhw6 = (~(Udrhw6 & Hnxmz6[7])); +assign Xqg8v6 = (~(Owxhw6 & Vwxhw6)); +assign Vwxhw6 = (~(Cxxmz6[20] & Scrhw6)); +assign Owxhw6 = (Cxxhw6 & Jxxhw6); +assign Jxxhw6 = (~(Ndrhw6 & Njxmz6[8])); +assign Cxxhw6 = (~(Udrhw6 & Hnxmz6[8])); +assign Qqg8v6 = (~(Qxxhw6 & Xxxhw6)); +assign Xxxhw6 = (~(Cxxmz6[21] & Scrhw6)); +assign Qxxhw6 = (Eyxhw6 & Lyxhw6); +assign Lyxhw6 = (~(Ndrhw6 & Njxmz6[9])); +assign Eyxhw6 = (~(Udrhw6 & Hnxmz6[9])); +assign Jqg8v6 = (~(Syxhw6 & Zyxhw6)); +assign Zyxhw6 = (~(Cxxmz6[22] & Scrhw6)); +assign Syxhw6 = (Gzxhw6 & Nzxhw6); +assign Nzxhw6 = (~(Ndrhw6 & Njxmz6[10])); +assign Gzxhw6 = (~(Udrhw6 & Hnxmz6[10])); +assign Cqg8v6 = (~(Uzxhw6 & B0yhw6)); +assign B0yhw6 = (~(Cxxmz6[12] & Scrhw6)); +assign Uzxhw6 = (I0yhw6 & P0yhw6); +assign P0yhw6 = (~(Ndrhw6 & Njxmz6[0])); +assign Ndrhw6 = (~(Udrhw6 | Scrhw6)); +assign I0yhw6 = (~(Udrhw6 & Hnxmz6[0])); +assign Udrhw6 = (~(Yfrhw6 | Scrhw6)); +assign Vpg8v6 = (W0yhw6 ? Blxmz6[0] : Cxxmz6[2]); +assign Opg8v6 = (W0yhw6 ? Blxmz6[1] : Cxxmz6[3]); +assign Hpg8v6 = (Z6qhw6 ? K1yhw6 : D1yhw6); +assign K1yhw6 = (Viqhw6 & R1yhw6); +assign Viqhw6 = (Y1yhw6 & F2yhw6); +assign F2yhw6 = (M2yhw6 & T2yhw6); +assign T2yhw6 = (~(A3yhw6 & H3yhw6)); +assign H3yhw6 = (~(O3yhw6 & V3yhw6)); +assign V3yhw6 = (C4yhw6 & J4yhw6); +assign J4yhw6 = (Q4yhw6 & X4yhw6); +assign X4yhw6 = (~(E5yhw6 ^ L5yhw6)); +assign Q4yhw6 = (~(S5yhw6 ^ Z5yhw6)); +assign C4yhw6 = (G6yhw6 & N6yhw6); +assign N6yhw6 = (~(U6yhw6 ^ B7yhw6)); +assign G6yhw6 = (~(I7yhw6 ^ P7yhw6)); +assign O3yhw6 = (W7yhw6 & D8yhw6); +assign D8yhw6 = (K8yhw6 & R8yhw6); +assign R8yhw6 = (~(Y8yhw6 ^ F9yhw6)); +assign K8yhw6 = (M9yhw6 ^ T9yhw6); +assign W7yhw6 = (Aayhw6 & Hayhw6); +assign Hayhw6 = (~(Oayhw6 ^ Qswnv6)); +assign Aayhw6 = (~(Vayhw6 ^ Cbyhw6)); +assign A3yhw6 = (Dz1nv6 ? Ikxmz6[0] : Ogxmz6[0]); +assign M2yhw6 = (~(Jbyhw6 & Qbyhw6)); +assign Qbyhw6 = (~(Xbyhw6 & Ecyhw6)); +assign Ecyhw6 = (Lcyhw6 & Scyhw6); +assign Scyhw6 = (Zcyhw6 & Gdyhw6); +assign Gdyhw6 = (~(Ndyhw6 ^ Udyhw6)); +assign Zcyhw6 = (~(Beyhw6 ^ Ieyhw6)); +assign Lcyhw6 = (Peyhw6 & Weyhw6); +assign Weyhw6 = (~(Dfyhw6 ^ Kfyhw6)); +assign Peyhw6 = (~(Rfyhw6 ^ Yfyhw6)); +assign Xbyhw6 = (Fgyhw6 & Mgyhw6); +assign Mgyhw6 = (Tgyhw6 & Ahyhw6); +assign Ahyhw6 = (~(Hhyhw6 ^ Ohyhw6)); +assign Tgyhw6 = (~(Vhyhw6 ^ Ciyhw6)); +assign Fgyhw6 = (Jiyhw6 & Qiyhw6); +assign Qiyhw6 = (~(Xiyhw6 ^ Ejyhw6)); +assign Jiyhw6 = (~(Ljyhw6 ^ Sjyhw6)); +assign Jbyhw6 = (Dz1nv6 ? Ikxmz6[2] : Ogxmz6[2]); +assign Y1yhw6 = (Zjyhw6 & Gkyhw6); +assign Gkyhw6 = (~(Nkyhw6 & Ukyhw6)); +assign Ukyhw6 = (~(Blyhw6 & Ilyhw6)); +assign Ilyhw6 = (Plyhw6 & Wlyhw6); +assign Wlyhw6 = (Dmyhw6 & Kmyhw6); +assign Kmyhw6 = (~(Rmyhw6 ^ Ymyhw6)); +assign Dmyhw6 = (~(Fnyhw6 ^ Mnyhw6)); +assign Plyhw6 = (Tnyhw6 & Aoyhw6); +assign Aoyhw6 = (~(Hoyhw6 ^ Mcwnv6)); +assign Mcwnv6 = (Dz1nv6 ? Ulxmz6[31] : Aixmz6[31]); +assign Tnyhw6 = (~(Ooyhw6 ^ Voyhw6)); +assign Blyhw6 = (Cpyhw6 & Jpyhw6); +assign Jpyhw6 = (Qpyhw6 & Xpyhw6); +assign Xpyhw6 = (~(Eqyhw6 ^ Lqyhw6)); +assign Qpyhw6 = (~(Sqyhw6 ^ Zqyhw6)); +assign Cpyhw6 = (Gryhw6 & Nryhw6); +assign Nryhw6 = (~(Uryhw6 ^ Bsyhw6)); +assign Gryhw6 = (~(Isyhw6 ^ Psyhw6)); +assign Nkyhw6 = (Dz1nv6 ? Ikxmz6[3] : Ogxmz6[3]); +assign Zjyhw6 = (~(Wsyhw6 & Dtyhw6)); +assign Dtyhw6 = (~(Ktyhw6 & Rtyhw6)); +assign Rtyhw6 = (Ytyhw6 & Fuyhw6); +assign Fuyhw6 = (Muyhw6 & Tuyhw6); +assign Tuyhw6 = (~(Avyhw6 ^ Hvyhw6)); +assign Muyhw6 = (~(Ovyhw6 ^ Vvyhw6)); +assign Ytyhw6 = (Cwyhw6 & Jwyhw6); +assign Jwyhw6 = (~(Qwyhw6 ^ Xwyhw6)); +assign Cwyhw6 = (~(Exyhw6 ^ Lxyhw6)); +assign Ktyhw6 = (Sxyhw6 & Zxyhw6); +assign Zxyhw6 = (Gyyhw6 & Nyyhw6); +assign Nyyhw6 = (~(Uyyhw6 ^ Bzyhw6)); +assign Gyyhw6 = (~(Izyhw6 ^ Pzyhw6)); +assign Sxyhw6 = (Wzyhw6 & D0zhw6); +assign D0zhw6 = (~(K0zhw6 ^ R0zhw6)); +assign Wzyhw6 = (~(Y0zhw6 ^ F1zhw6)); +assign Wsyhw6 = (Dz1nv6 ? Ikxmz6[1] : Ogxmz6[1]); +assign D1yhw6 = (Cp47v6 & M1zhw6); +assign M1zhw6 = (R1yhw6 | T1zhw6); +assign Apg8v6 = (W0yhw6 ? Ikxmz6[0] : Cxxmz6[8]); +assign Tog8v6 = (W0yhw6 ? Ikxmz6[1] : Cxxmz6[9]); +assign Mog8v6 = (W0yhw6 ? Ikxmz6[2] : Cxxmz6[10]); +assign W0yhw6 = (!Scrhw6); +assign Fog8v6 = (Scrhw6 ? Cxxmz6[11] : Ikxmz6[3]); +assign Yng8v6 = (Scrhw6 ? Cxxmz6[26] : Wk47v6); +assign Rng8v6 = (Scrhw6 ? Cxxmz6[28] : Qm47v6); +assign Kng8v6 = (Scrhw6 ? Cxxmz6[30] : Sl47v6); +assign Dng8v6 = (Scrhw6 ? Cxxmz6[0] : Fy47v6); +assign Scrhw6 = (A2zhw6 & H2zhw6); +assign H2zhw6 = (~(Pm57v6 | Cl57v6)); +assign A2zhw6 = (O2zhw6 & Yn57v6); +assign Wmg8v6 = (V2zhw6 ? S657v6 : Tgrhw6); +assign Pmg8v6 = (~(C3zhw6 & J3zhw6)); +assign J3zhw6 = (~(Q3zhw6 & X3zhw6)); +assign X3zhw6 = (~(E4zhw6 | J1uhw6)); +assign Q3zhw6 = (Fy47v6 & Puwhw6); +assign Puwhw6 = (!Ke1nv6); +assign Ke1nv6 = (~(L4zhw6 & Uj1nv6)); +assign C3zhw6 = (~(V357v6 & S4zhw6)); +assign S4zhw6 = (~(Cxxmz6[4] & Z4zhw6)); +assign Img8v6 = (N5zhw6 ? G5zhw6 : Ud57v6); +assign N5zhw6 = (Npthw6 & U5zhw6); +assign U5zhw6 = (~(B6zhw6 & I6zhw6)); +assign I6zhw6 = (P6zhw6 | Z7whw6); +assign P6zhw6 = (Wxthw6 | V357v6); +assign Wxthw6 = (~(S2uhw6 ^ Uj57v6)); +assign B6zhw6 = (W6zhw6 & Perhw6); +assign W6zhw6 = (~(D7zhw6 & K7zhw6)); +assign K7zhw6 = (Eothw6 & R7zhw6); +assign D7zhw6 = (Cxxmz6[3] & Y7zhw6); +assign G5zhw6 = (!F8zhw6); +assign Bmg8v6 = (~(M8zhw6 & T8zhw6)); +assign T8zhw6 = (~(A9zhw6 & H9zhw6)); +assign H9zhw6 = (O9zhw6 & Kp57v6); +assign O9zhw6 = (~(D857v6 | Ud57v6)); +assign A9zhw6 = (V9zhw6 & Cazhw6); +assign M8zhw6 = (Jazhw6 | Qazhw6); +assign Jazhw6 = (V9zhw6 ? Eothw6 : Xazhw6); +assign Xazhw6 = (~(Perhw6 & Werhw6)); +assign Ulg8v6 = (Toxhw6 ? Cxxmz6[24] : Ebzhw6); +assign Toxhw6 = (Lbzhw6 & O2zhw6); +assign Lbzhw6 = (Cl57v6 & Zhthw6); +assign Ebzhw6 = (!S397z6); +assign Nlg8v6 = (Pqthw6 ? Sbzhw6 : Ovxmz6[0]); +assign Pqthw6 = (~(Zbzhw6 & Uia7z6)); +assign Zbzhw6 = (~(Githw6 & O2zhw6)); +assign O2zhw6 = (Gczhw6 & Nczhw6); +assign Nczhw6 = (Uczhw6 & Gj1nv6); +assign Uczhw6 = (~(Kp57v6 | Ud57v6)); +assign Gczhw6 = (F8zhw6 & V9zhw6); +assign Githw6 = (Bdzhw6 & Pm57v6); +assign Bdzhw6 = (Yn57v6 & Shthw6); +assign Shthw6 = (!Cl57v6); +assign Sbzhw6 = (Cxxmz6[0] | Uc1nv6); +assign Glg8v6 = (~(Idzhw6 & Pdzhw6)); +assign Pdzhw6 = (~(Uz47v6 & Wdzhw6)); +assign Wdzhw6 = (~(Dfrhw6 & Dezhw6)); +assign Idzhw6 = (Dezhw6 | Umwhw6); +assign Umwhw6 = (!Cxxmz6[0]); +assign Dezhw6 = (~(Kezhw6 & Rezhw6)); +assign Rezhw6 = (Yezhw6 & Npthw6); +assign Yezhw6 = (~(Tq57v6 | Ud57v6)); +assign Kezhw6 = (Ffzhw6 & F8zhw6); +assign F8zhw6 = (Z7whw6 & Perhw6); +assign Perhw6 = (~(Lc57v6 & Mfzhw6)); +assign Mfzhw6 = (~(Tfzhw6 & Agzhw6)); +assign Agzhw6 = (~(Tgrhw6 & Hgzhw6)); +assign Hgzhw6 = (~(V2zhw6 & P8qhw6)); +assign P8qhw6 = (!Io47v6); +assign V2zhw6 = (Tgrhw6 ? Vgzhw6 : Ogzhw6); +assign Vgzhw6 = (~(Chzhw6 & Jhzhw6)); +assign Jhzhw6 = (~(Qhzhw6 & Xhzhw6)); +assign Chzhw6 = (Cp47v6 ? Qhzhw6 : Xhzhw6); +assign Ogzhw6 = (~(Eizhw6 & Cxxmz6[1])); +assign Eizhw6 = (Z4zhw6 & Qh1nv6); +assign Z4zhw6 = (Lizhw6 & V9zhw6); +assign Lizhw6 = (Eothw6 & Wd1nv6); +assign Tfzhw6 = (Hhrhw6 & Sizhw6); +assign Sizhw6 = (~(Zizhw6 & Gjzhw6)); +assign Gjzhw6 = (Hmthw6 & Ccxhw6); +assign Zizhw6 = (Ab57v6 & Ei1nv6); +assign Ei1nv6 = (Aixhw6 & Uzxmz6[4]); +assign Aixhw6 = (O4xhw6 & Twwhw6); +assign O4xhw6 = (Vbxhw6 & L6xhw6); +assign Hhrhw6 = (Ohrhw6 | Hmthw6); +assign Ohrhw6 = (~(Njzhw6 & Ujzhw6)); +assign Ujzhw6 = (Bkzhw6 & Yfrhw6); +assign Yfrhw6 = (!Tgrhw6); +assign Tgrhw6 = (R957v6 & Ek47v6); +assign Bkzhw6 = (~(Ikzhw6 & Pkzhw6)); +assign Pkzhw6 = (Hmthw6 | Cazhw6); +assign Ikzhw6 = (~(Cxxmz6[2] & Eothw6)); +assign Njzhw6 = (V9zhw6 & Gj1nv6); +assign Gj1nv6 = (Qh1nv6 & Wd1nv6); +assign V9zhw6 = (Wkzhw6 & Y7zhw6); +assign Wkzhw6 = (Hf57v6 & Npthw6); +assign Z7whw6 = (~(Dlzhw6 & Klzhw6)); +assign Klzhw6 = (Uzxmz6[3] & L6xhw6); +assign Dlzhw6 = (Crwhw6 & Uzxmz6[4]); +assign Ffzhw6 = (Y7zhw6 & Eothw6); +assign Y7zhw6 = (Rlzhw6 & Taxhw6); +assign Taxhw6 = (!Hqwhw6); +assign Hqwhw6 = (~(Li1nv6 & Uzxmz6[4])); +assign Li1nv6 = (Og1nv6 & Vbxhw6); +assign Og1nv6 = (~(Ccxhw6 | L6xhw6)); +assign Rlzhw6 = (Lothw6 & Twwhw6); +assign Zkg8v6 = (Kfrhw6 ? On47v6 : Ylzhw6); +assign Ylzhw6 = (M257v6 & E157v6); +assign Skg8v6 = (Kfrhw6 ? Omxmz6[2] : Fmzhw6); +assign Kfrhw6 = (!Mmzhw6); +assign Fmzhw6 = (M257v6 ? Usxmz6[0] : Yn57v6); +assign Lkg8v6 = (Mmzhw6 ? Tmzhw6 : Omxmz6[3]); +assign Mmzhw6 = (Dfrhw6 & Wy1nv6); +assign Wy1nv6 = (Anzhw6 & Hnzhw6); +assign Anzhw6 = (~(Onzhw6 & Vnzhw6)); +assign Vnzhw6 = (~(Cazhw6 & Cozhw6)); +assign Cozhw6 = (~(Werhw6 & Jozhw6)); +assign Jozhw6 = (~(Qozhw6 & Xozhw6)); +assign Xozhw6 = (Epzhw6 & E4zhw6); +assign E4zhw6 = (Sothw6 & R7zhw6); +assign Sothw6 = (Lpzhw6 & Spzhw6); +assign Spzhw6 = (~(H557v6 | Ud57v6)); +assign Lpzhw6 = (~(V357v6 | S657v6)); +assign Epzhw6 = (Qhzhw6 & Xhzhw6); +assign Xhzhw6 = (!Blxmz6[1]); +assign Qhzhw6 = (!Blxmz6[0]); +assign Qozhw6 = (Zpzhw6 & Ds57v6); +assign Zpzhw6 = (Kp57v6 & Bqthw6); +assign Cazhw6 = (Qm47v6 & Gj47v6); +assign Tmzhw6 = (M257v6 ? Usxmz6[1] : Cl57v6); +assign Ekg8v6 = (~(Gqzhw6 & Nqzhw6)); +assign Nqzhw6 = (~(Uqzhw6 & Ymyhw6)); +assign Gqzhw6 = (~(Cozet6 & Brzhw6)); +assign Xjg8v6 = (~(Irzhw6 & Przhw6)); +assign Przhw6 = (~(Uqzhw6 & Bsyhw6)); +assign Irzhw6 = (~(Qmzet6 & Brzhw6)); +assign Qjg8v6 = (~(Wrzhw6 & Dszhw6)); +assign Dszhw6 = (~(Kszhw6 & Uqzhw6)); +assign Kszhw6 = (~(T9yhw6 | Rszhw6)); +assign Wrzhw6 = (~(Gco7z6[4] & Brzhw6)); +assign Jjg8v6 = (Brzhw6 ? Gco7z6[5] : Rszhw6); +assign Cjg8v6 = (~(Yszhw6 ^ Bizet6)); +assign Vig8v6 = (Zmwnv6 ? U3o7z6[12] : Bzyhw6); +assign Oig8v6 = (Zmwnv6 ? U3o7z6[13] : Hvyhw6); +assign Hig8v6 = (Zmwnv6 ? U3o7z6[14] : Pzyhw6); +assign Aig8v6 = (Zmwnv6 ? U3o7z6[15] : Xwyhw6); +assign Thg8v6 = (Zmwnv6 ? U3o7z6[16] : Sjyhw6); +assign Mhg8v6 = (Zmwnv6 ? U3o7z6[17] : Ejyhw6); +assign Fhg8v6 = (Zmwnv6 ? U3o7z6[18] : Yfyhw6); +assign Ygg8v6 = (Zmwnv6 ? U3o7z6[19] : Ieyhw6); +assign Rgg8v6 = (Zmwnv6 ? U3o7z6[20] : Ciyhw6); +assign Kgg8v6 = (Zmwnv6 ? U3o7z6[21] : Udyhw6); +assign Dgg8v6 = (Zmwnv6 ? U3o7z6[22] : Ohyhw6); +assign Wfg8v6 = (Zmwnv6 ? U3o7z6[23] : Kfyhw6); +assign Pfg8v6 = (Zmwnv6 ? U3o7z6[24] : Psyhw6); +assign Ifg8v6 = (~(Ftzhw6 & Mtzhw6)); +assign Mtzhw6 = (~(Ttzhw6 & Bsyhw6)); +assign Ftzhw6 = (~(U3o7z6[25] & Zmwnv6)); +assign Bfg8v6 = (Zmwnv6 ? U3o7z6[26] : Voyhw6); +assign Ueg8v6 = (Zmwnv6 ? U3o7z6[27] : Mnyhw6); +assign Neg8v6 = (Zmwnv6 ? U3o7z6[28] : Lqyhw6); +assign Geg8v6 = (~(Auzhw6 & Huzhw6)); +assign Huzhw6 = (~(Ttzhw6 & Ymyhw6)); +assign Auzhw6 = (~(U3o7z6[29] & Zmwnv6)); +assign Zdg8v6 = (Zmwnv6 ? U3o7z6[30] : Zqyhw6); +assign Sdg8v6 = (~(Ouzhw6 & Vuzhw6)); +assign Vuzhw6 = (~(Cvzhw6 & Uqzhw6)); +assign Uqzhw6 = (!Brzhw6); +assign Cvzhw6 = (Qswnv6 & Jvzhw6); +assign Ouzhw6 = (~(Pl0ft6 & Brzhw6)); +assign Ldg8v6 = (Brzhw6 ? O7o7z6[2] : Qvzhw6); +assign Brzhw6 = (~(Xvzhw6 & Ewzhw6)); +assign Ewzhw6 = (~(Lwzhw6 | Bmqhw6)); +assign Bmqhw6 = (!Rnqhw6); +assign Xvzhw6 = (~(Ulqhw6 | Swzhw6)); +assign Edg8v6 = (~(Zwzhw6 & Gxzhw6)); +assign Gxzhw6 = (~(Yszhw6 & Y9o7z6[0])); +assign Zwzhw6 = (Nxzhw6 & Uxzhw6); +assign Uxzhw6 = (~(Ttzhw6 & Qswnv6)); +assign Qswnv6 = (JTAGNSW ? Aixmz6[0] : Ulxmz6[0]); +assign Nxzhw6 = (~(Pj0ft6 & Byzhw6)); +assign Xcg8v6 = (~(Iyzhw6 & Pyzhw6)); +assign Pyzhw6 = (~(Qvzhw6 & Ttzhw6)); +assign Iyzhw6 = (Wyzhw6 & Dzzhw6); +assign Dzzhw6 = (~(Ph0ft6 & Byzhw6)); +assign Wyzhw6 = (~(Yszhw6 & Y9o7z6[1])); +assign Qcg8v6 = (~(Kzzhw6 & Rzzhw6)); +assign Rzzhw6 = (~(Ttzhw6 & P7yhw6)); +assign Kzzhw6 = (Yzzhw6 & F00iw6); +assign F00iw6 = (~(Pf0ft6 & Byzhw6)); +assign Yzzhw6 = (~(Yszhw6 & Y9o7z6[2])); +assign Jcg8v6 = (~(M00iw6 & T00iw6)); +assign T00iw6 = (~(Ttzhw6 & Z5yhw6)); +assign M00iw6 = (A10iw6 & H10iw6); +assign H10iw6 = (~(Pd0ft6 & Byzhw6)); +assign A10iw6 = (~(Yszhw6 & Y9o7z6[3])); +assign Ccg8v6 = (~(O10iw6 & V10iw6)); +assign V10iw6 = (~(Yszhw6 & U3o7z6[4])); +assign O10iw6 = (C20iw6 & J20iw6); +assign J20iw6 = (Zmwnv6 | T9yhw6); +assign T9yhw6 = (!Q20iw6); +assign C20iw6 = (~(Pb0ft6 & Byzhw6)); +assign Vbg8v6 = (~(X20iw6 & E30iw6)); +assign E30iw6 = (~(Rszhw6 & Ttzhw6)); +assign X20iw6 = (L30iw6 & S30iw6); +assign S30iw6 = (~(P90ft6 & Byzhw6)); +assign L30iw6 = (~(Yszhw6 & U3o7z6[5])); +assign Obg8v6 = (~(Z30iw6 & G40iw6)); +assign G40iw6 = (~(Ttzhw6 & F9yhw6)); +assign Z30iw6 = (N40iw6 & U40iw6); +assign U40iw6 = (~(P70ft6 & Byzhw6)); +assign N40iw6 = (~(Yszhw6 & U3o7z6[6])); +assign Hbg8v6 = (~(B50iw6 & I50iw6)); +assign I50iw6 = (~(Ttzhw6 & B7yhw6)); +assign B50iw6 = (P50iw6 & W50iw6); +assign W50iw6 = (~(P50ft6 & Byzhw6)); +assign P50iw6 = (~(Yszhw6 & U3o7z6[7])); +assign Abg8v6 = (~(D60iw6 & K60iw6)); +assign K60iw6 = (~(Ttzhw6 & F1zhw6)); +assign D60iw6 = (R60iw6 & Y60iw6); +assign Y60iw6 = (~(P30ft6 & Byzhw6)); +assign R60iw6 = (~(Yszhw6 & U3o7z6[8])); +assign Tag8v6 = (~(F70iw6 & M70iw6)); +assign M70iw6 = (~(Ttzhw6 & R0zhw6)); +assign F70iw6 = (T70iw6 & A80iw6); +assign A80iw6 = (~(P10ft6 & Byzhw6)); +assign T70iw6 = (~(Yszhw6 & U3o7z6[9])); +assign Mag8v6 = (~(H80iw6 & O80iw6)); +assign O80iw6 = (~(Ttzhw6 & Lxyhw6)); +assign H80iw6 = (V80iw6 & C90iw6); +assign C90iw6 = (~(Pzzet6 & Byzhw6)); +assign V80iw6 = (~(Yszhw6 & U3o7z6[10])); +assign Fag8v6 = (~(J90iw6 & Q90iw6)); +assign Q90iw6 = (~(Ttzhw6 & Vvyhw6)); +assign J90iw6 = (X90iw6 & Ea0iw6); +assign Ea0iw6 = (~(Pxzet6 & Byzhw6)); +assign Byzhw6 = (~(Yszhw6 | Ttzhw6)); +assign Ttzhw6 = (!Zmwnv6); +assign X90iw6 = (~(Yszhw6 & U3o7z6[11])); +assign Yszhw6 = (La0iw6 & Zmwnv6); +assign Zmwnv6 = (~(Sa0iw6 & Za0iw6)); +assign Za0iw6 = (Rnqhw6 & Ulqhw6); +assign Rnqhw6 = (Gb0iw6 & Kr97z6); +assign Gb0iw6 = (Kgqhw6 & Ekqhw6); +assign Ekqhw6 = (!Dbymz6[1]); +assign Sa0iw6 = (~(Swzhw6 | Lwzhw6)); +assign La0iw6 = (~(Nb0iw6 & Ub0iw6)); +assign Ub0iw6 = (Gco7z6[5] ? Ic0iw6 : Bc0iw6); +assign Bc0iw6 = (Pc0iw6 & Gco7z6[4]); +assign Nb0iw6 = (Oeo7z6[2] & Wc0iw6); +assign Y9g8v6 = (~(Dd0iw6 & Kd0iw6)); +assign Kd0iw6 = (~(I2yet6 & Y2qhw6)); +assign Dd0iw6 = (Rd0iw6 & Yd0iw6); +assign Yd0iw6 = (~(Fe0iw6 & L3bdt6)); +assign Rd0iw6 = (~(R2qhw6 & Lhmov6)); +assign R9g8v6 = (Me0iw6 ? Vayhw6 : Coxmz6[1]); +assign Vayhw6 = (~(Te0iw6 & Af0iw6)); +assign Af0iw6 = (Hf0iw6 & Of0iw6); +assign Hf0iw6 = (~(O7o7z6[2] & Vf0iw6)); +assign Te0iw6 = (Cg0iw6 & Jg0iw6); +assign Jg0iw6 = (~(Itb7z6[1] & Qg0iw6)); +assign Cg0iw6 = (~(Y9o7z6[1] & Xg0iw6)); +assign K9g8v6 = (Jcqhw6 ? Coxmz6[1] : Krxmz6[1]); +assign D9g8v6 = (Me0iw6 ? I7yhw6 : Coxmz6[2]); +assign I7yhw6 = (~(Eh0iw6 & Lh0iw6)); +assign Lh0iw6 = (~(Itb7z6[2] & Qg0iw6)); +assign Eh0iw6 = (~(Y9o7z6[2] & Xg0iw6)); +assign W8g8v6 = (Jcqhw6 ? Coxmz6[2] : Krxmz6[2]); +assign P8g8v6 = (Me0iw6 ? S5yhw6 : Coxmz6[3]); +assign S5yhw6 = (~(Sh0iw6 & Zh0iw6)); +assign Zh0iw6 = (~(Itb7z6[3] & Qg0iw6)); +assign Sh0iw6 = (~(Y9o7z6[3] & Xg0iw6)); +assign I8g8v6 = (Jcqhw6 ? Coxmz6[3] : Krxmz6[3]); +assign B8g8v6 = (Me0iw6 ? M9yhw6 : Coxmz6[4]); +assign M9yhw6 = (~(Gi0iw6 & Ni0iw6)); +assign Ni0iw6 = (Ui0iw6 & Bj0iw6); +assign Ui0iw6 = (~(Gco7z6[4] & Vf0iw6)); +assign Gi0iw6 = (Ij0iw6 & Pj0iw6); +assign Pj0iw6 = (~(Itb7z6[4] & Qg0iw6)); +assign Ij0iw6 = (~(U3o7z6[4] & Xg0iw6)); +assign U7g8v6 = (Jcqhw6 ? Coxmz6[4] : Krxmz6[4]); +assign N7g8v6 = (Me0iw6 ? E5yhw6 : Coxmz6[5]); +assign E5yhw6 = (~(Wj0iw6 & Dk0iw6)); +assign Dk0iw6 = (~(U3o7z6[5] & Xg0iw6)); +assign Wj0iw6 = (Kk0iw6 & Rk0iw6); +assign Rk0iw6 = (~(Gco7z6[5] & Vf0iw6)); +assign Kk0iw6 = (~(Itb7z6[5] & Qg0iw6)); +assign G7g8v6 = (Jcqhw6 ? Coxmz6[5] : Krxmz6[5]); +assign Z6g8v6 = (Me0iw6 ? Y8yhw6 : Coxmz6[6]); +assign Y8yhw6 = (~(Yk0iw6 & Fl0iw6)); +assign Fl0iw6 = (~(U3o7z6[6] & Xg0iw6)); +assign Yk0iw6 = (Ml0iw6 & Tl0iw6); +assign Tl0iw6 = (~(Vf0iw6 & Gco7z6[6])); +assign Ml0iw6 = (~(Itb7z6[6] & Qg0iw6)); +assign S6g8v6 = (Jcqhw6 ? Coxmz6[6] : Krxmz6[6]); +assign L6g8v6 = (Me0iw6 ? U6yhw6 : Coxmz6[7]); +assign U6yhw6 = (~(Am0iw6 & Hm0iw6)); +assign Hm0iw6 = (~(U3o7z6[7] & Xg0iw6)); +assign Am0iw6 = (Om0iw6 & Vm0iw6); +assign Vm0iw6 = (Cn0iw6 | L6qhw6); +assign Om0iw6 = (~(Itb7z6[7] & Qg0iw6)); +assign E6g8v6 = (Jcqhw6 ? Coxmz6[7] : Krxmz6[7]); +assign X5g8v6 = (Me0iw6 ? Y0zhw6 : Coxmz6[8]); +assign Y0zhw6 = (~(Jn0iw6 & Qn0iw6)); +assign Qn0iw6 = (~(Itb7z6[8] & Qg0iw6)); +assign Jn0iw6 = (~(U3o7z6[8] & Xg0iw6)); +assign Q5g8v6 = (Jcqhw6 ? Coxmz6[8] : Krxmz6[8]); +assign J5g8v6 = (Me0iw6 ? K0zhw6 : Coxmz6[9]); +assign K0zhw6 = (~(Xn0iw6 & Eo0iw6)); +assign Eo0iw6 = (~(Itb7z6[9] & Qg0iw6)); +assign Xn0iw6 = (~(U3o7z6[9] & Xg0iw6)); +assign C5g8v6 = (Jcqhw6 ? Coxmz6[9] : Krxmz6[9]); +assign V4g8v6 = (Me0iw6 ? Exyhw6 : Coxmz6[10]); +assign Exyhw6 = (~(Lo0iw6 & So0iw6)); +assign So0iw6 = (~(Itb7z6[10] & Qg0iw6)); +assign Lo0iw6 = (~(U3o7z6[10] & Xg0iw6)); +assign O4g8v6 = (Jcqhw6 ? Coxmz6[10] : Krxmz6[10]); +assign H4g8v6 = (Me0iw6 ? Ovyhw6 : Coxmz6[11]); +assign Ovyhw6 = (~(Zo0iw6 & Gp0iw6)); +assign Gp0iw6 = (~(Itb7z6[11] & Qg0iw6)); +assign Zo0iw6 = (~(U3o7z6[11] & Xg0iw6)); +assign A4g8v6 = (Jcqhw6 ? Coxmz6[11] : Krxmz6[11]); +assign T3g8v6 = (Me0iw6 ? Uyyhw6 : Coxmz6[12]); +assign Uyyhw6 = (~(Np0iw6 & Up0iw6)); +assign Up0iw6 = (~(U3o7z6[12] & Xg0iw6)); +assign Np0iw6 = (Bq0iw6 & Of0iw6); +assign Bq0iw6 = (~(Itb7z6[12] & Qg0iw6)); +assign M3g8v6 = (Jcqhw6 ? Coxmz6[12] : Krxmz6[12]); +assign F3g8v6 = (Me0iw6 ? Avyhw6 : Coxmz6[13]); +assign Avyhw6 = (~(Iq0iw6 & Pq0iw6)); +assign Pq0iw6 = (~(U3o7z6[13] & Xg0iw6)); +assign Iq0iw6 = (Wq0iw6 & Of0iw6); +assign Wq0iw6 = (~(Itb7z6[13] & Qg0iw6)); +assign Y2g8v6 = (Jcqhw6 ? Coxmz6[13] : Krxmz6[13]); +assign R2g8v6 = (Me0iw6 ? Izyhw6 : Coxmz6[14]); +assign Izyhw6 = (~(Dr0iw6 & Kr0iw6)); +assign Kr0iw6 = (~(U3o7z6[14] & Xg0iw6)); +assign Dr0iw6 = (Rr0iw6 & Of0iw6); +assign Rr0iw6 = (~(Itb7z6[14] & Qg0iw6)); +assign K2g8v6 = (Jcqhw6 ? Coxmz6[14] : Krxmz6[14]); +assign D2g8v6 = (Me0iw6 ? Qwyhw6 : Coxmz6[15]); +assign Qwyhw6 = (~(Yr0iw6 & Fs0iw6)); +assign Fs0iw6 = (~(U3o7z6[15] & Xg0iw6)); +assign Yr0iw6 = (Ms0iw6 & Of0iw6); +assign Ms0iw6 = (~(Itb7z6[15] & Qg0iw6)); +assign W1g8v6 = (Jcqhw6 ? Coxmz6[15] : Krxmz6[15]); +assign P1g8v6 = (Me0iw6 ? Ljyhw6 : Coxmz6[16]); +assign Ljyhw6 = (~(Ts0iw6 & At0iw6)); +assign At0iw6 = (~(U3o7z6[16] & Xg0iw6)); +assign Ts0iw6 = (Ht0iw6 & Ot0iw6); +assign Ht0iw6 = (~(Itb7z6[16] & Qg0iw6)); +assign I1g8v6 = (Jcqhw6 ? Coxmz6[16] : Krxmz6[16]); +assign B1g8v6 = (Me0iw6 ? Xiyhw6 : Coxmz6[17]); +assign Xiyhw6 = (~(Vt0iw6 & Cu0iw6)); +assign Cu0iw6 = (~(U3o7z6[17] & Xg0iw6)); +assign Vt0iw6 = (Ju0iw6 & Ot0iw6); +assign Ju0iw6 = (~(Itb7z6[17] & Qg0iw6)); +assign U0g8v6 = (Jcqhw6 ? Coxmz6[17] : Krxmz6[17]); +assign N0g8v6 = (Me0iw6 ? Rfyhw6 : Coxmz6[18]); +assign Rfyhw6 = (~(Qu0iw6 & Xu0iw6)); +assign Xu0iw6 = (~(U3o7z6[18] & Xg0iw6)); +assign Qu0iw6 = (Ev0iw6 & Ot0iw6); +assign Ev0iw6 = (~(Itb7z6[18] & Qg0iw6)); +assign G0g8v6 = (Jcqhw6 ? Coxmz6[18] : Krxmz6[18]); +assign Zzf8v6 = (Me0iw6 ? Beyhw6 : Coxmz6[19]); +assign Beyhw6 = (~(Lv0iw6 & Sv0iw6)); +assign Sv0iw6 = (~(U3o7z6[19] & Xg0iw6)); +assign Lv0iw6 = (Zv0iw6 & Of0iw6); +assign Zv0iw6 = (~(Itb7z6[19] & Qg0iw6)); +assign Szf8v6 = (Jcqhw6 ? Coxmz6[19] : Krxmz6[19]); +assign Lzf8v6 = (Me0iw6 ? Vhyhw6 : Coxmz6[20]); +assign Vhyhw6 = (~(Gw0iw6 & Nw0iw6)); +assign Nw0iw6 = (~(U3o7z6[20] & Xg0iw6)); +assign Gw0iw6 = (Uw0iw6 & Bj0iw6); +assign Uw0iw6 = (~(Itb7z6[20] & Qg0iw6)); +assign Ezf8v6 = (Jcqhw6 ? Coxmz6[20] : Krxmz6[20]); +assign Xyf8v6 = (Me0iw6 ? Ndyhw6 : Coxmz6[21]); +assign Ndyhw6 = (~(Bx0iw6 & Ix0iw6)); +assign Ix0iw6 = (~(U3o7z6[21] & Xg0iw6)); +assign Bx0iw6 = (Px0iw6 & Bj0iw6); +assign Px0iw6 = (~(Itb7z6[21] & Qg0iw6)); +assign Qyf8v6 = (Jcqhw6 ? Coxmz6[21] : Krxmz6[21]); +assign Jyf8v6 = (Me0iw6 ? Hhyhw6 : Coxmz6[22]); +assign Hhyhw6 = (~(Wx0iw6 & Dy0iw6)); +assign Dy0iw6 = (~(U3o7z6[22] & Xg0iw6)); +assign Wx0iw6 = (Ky0iw6 & Bj0iw6); +assign Ky0iw6 = (~(Itb7z6[22] & Qg0iw6)); +assign Cyf8v6 = (Jcqhw6 ? Coxmz6[22] : Krxmz6[22]); +assign Vxf8v6 = (Me0iw6 ? Dfyhw6 : Coxmz6[23]); +assign Dfyhw6 = (~(Ry0iw6 & Yy0iw6)); +assign Yy0iw6 = (~(Itb7z6[23] & Qg0iw6)); +assign Ry0iw6 = (~(U3o7z6[23] & Xg0iw6)); +assign Oxf8v6 = (Jcqhw6 ? Coxmz6[23] : Krxmz6[23]); +assign Hxf8v6 = (Me0iw6 ? Isyhw6 : Coxmz6[24]); +assign Isyhw6 = (~(Fz0iw6 & Mz0iw6)); +assign Mz0iw6 = (~(U3o7z6[24] & Xg0iw6)); +assign Fz0iw6 = (Tz0iw6 & Cn0iw6); +assign Cn0iw6 = (!Vf0iw6); +assign Tz0iw6 = (~(Itb7z6[24] & Qg0iw6)); +assign Axf8v6 = (Jcqhw6 ? Coxmz6[24] : Krxmz6[24]); +assign Twf8v6 = (Me0iw6 ? Uryhw6 : Coxmz6[25]); +assign Uryhw6 = (~(A01iw6 & H01iw6)); +assign H01iw6 = (~(U3o7z6[25] & Xg0iw6)); +assign A01iw6 = (O01iw6 & V01iw6); +assign V01iw6 = (~(Qmzet6 & Vf0iw6)); +assign O01iw6 = (~(Itb7z6[25] & Qg0iw6)); +assign Mwf8v6 = (Jcqhw6 ? Coxmz6[25] : Krxmz6[25]); +assign Fwf8v6 = (Me0iw6 ? Ooyhw6 : Coxmz6[26]); +assign Ooyhw6 = (~(C11iw6 & J11iw6)); +assign J11iw6 = (~(U3o7z6[26] & Xg0iw6)); +assign C11iw6 = (Q11iw6 & Bj0iw6); +assign Bj0iw6 = (Ot0iw6 | X11iw6); +assign Q11iw6 = (~(Itb7z6[26] & Qg0iw6)); +assign Yvf8v6 = (Jcqhw6 ? Coxmz6[26] : Krxmz6[26]); +assign Rvf8v6 = (Me0iw6 ? Fnyhw6 : Coxmz6[27]); +assign Fnyhw6 = (~(E21iw6 & L21iw6)); +assign L21iw6 = (~(Itb7z6[27] & Qg0iw6)); +assign E21iw6 = (~(U3o7z6[27] & Xg0iw6)); +assign Kvf8v6 = (Jcqhw6 ? Coxmz6[27] : Krxmz6[27]); +assign Dvf8v6 = (Me0iw6 ? Eqyhw6 : Coxmz6[28]); +assign Eqyhw6 = (~(S21iw6 & Z21iw6)); +assign Z21iw6 = (~(Itb7z6[28] & Qg0iw6)); +assign S21iw6 = (~(U3o7z6[28] & Xg0iw6)); +assign Wuf8v6 = (Jcqhw6 ? Coxmz6[28] : Krxmz6[28]); +assign Puf8v6 = (Me0iw6 ? Rmyhw6 : Coxmz6[29]); +assign Rmyhw6 = (~(G31iw6 & N31iw6)); +assign N31iw6 = (U31iw6 & Ot0iw6); +assign U31iw6 = (~(Cozet6 & Vf0iw6)); +assign G31iw6 = (B41iw6 & I41iw6); +assign I41iw6 = (~(Itb7z6[29] & Qg0iw6)); +assign B41iw6 = (~(U3o7z6[29] & Xg0iw6)); +assign Iuf8v6 = (Jcqhw6 ? Coxmz6[29] : Krxmz6[29]); +assign Buf8v6 = (Me0iw6 ? Sqyhw6 : Coxmz6[30]); +assign Sqyhw6 = (~(P41iw6 & W41iw6)); +assign W41iw6 = (~(U3o7z6[30] & Xg0iw6)); +assign P41iw6 = (D51iw6 & Of0iw6); +assign D51iw6 = (~(Itb7z6[30] & Qg0iw6)); +assign Utf8v6 = (Jcqhw6 ? Coxmz6[30] : Krxmz6[30]); +assign Ntf8v6 = (Me0iw6 ? Hoyhw6 : Coxmz6[31]); +assign Hoyhw6 = (~(K51iw6 & R51iw6)); +assign R51iw6 = (~(U3o7z6[31] & Xg0iw6)); +assign K51iw6 = (Y51iw6 & Of0iw6); +assign Of0iw6 = (Ot0iw6 | F5o7z6[2]); +assign Y51iw6 = (~(Itb7z6[31] & Qg0iw6)); +assign Gtf8v6 = (Jcqhw6 ? Coxmz6[31] : Krxmz6[31]); +assign Zsf8v6 = (Me0iw6 ? Oayhw6 : Coxmz6[0]); +assign Me0iw6 = (Z6qhw6 & Lwzhw6); +assign Lwzhw6 = (!F61iw6); +assign Z6qhw6 = (M61iw6 & T61iw6); +assign T61iw6 = (Dbymz6[0] & Glqhw6); +assign Glqhw6 = (R0bdt6 | A71iw6); +assign A71iw6 = (!Kgqhw6); +assign M61iw6 = (Kr97z6 & Dbymz6[1]); +assign Oayhw6 = (~(H71iw6 & O71iw6)); +assign O71iw6 = (V71iw6 & Ot0iw6); +assign Ot0iw6 = (~(C81iw6 & J81iw6)); +assign J81iw6 = (Q81iw6 & F5o7z6[4]); +assign Q81iw6 = (F5o7z6[3] & Kgqhw6); +assign C81iw6 = (X81iw6 & F5o7z6[7]); +assign X81iw6 = (F5o7z6[6] & F5o7z6[5]); +assign V71iw6 = (~(Vf0iw6 & Pl0ft6)); +assign Vf0iw6 = (E91iw6 & L91iw6); +assign E91iw6 = (S91iw6 & X11iw6); +assign H71iw6 = (Z91iw6 & Ga1iw6); +assign Ga1iw6 = (~(Itb7z6[0] & Qg0iw6)); +assign Qg0iw6 = (~(Na1iw6 & Ua1iw6)); +assign Ua1iw6 = (~(Bb1iw6 & F5o7z6[3])); +assign Na1iw6 = (~(Ib1iw6 & Kgqhw6)); +assign Z91iw6 = (~(Y9o7z6[0] & Xg0iw6)); +assign Xg0iw6 = (Bb1iw6 & L91iw6); +assign L91iw6 = (~(F5o7z6[3] | F5o7z6[4])); +assign Bb1iw6 = (F5o7z6[2] & S91iw6); +assign S91iw6 = (Pb1iw6 & Kgqhw6); +assign Ssf8v6 = (Jcqhw6 ? Coxmz6[0] : Krxmz6[0]); +assign Jcqhw6 = (Moxhw6 & Upthw6); +assign Upthw6 = (Ekxhw6 & Ds57v6); +assign Moxhw6 = (Bqthw6 & Pjthw6); +assign Pjthw6 = (~(Hmthw6 & Wb1iw6)); +assign Wb1iw6 = (~(Yn57v6 & Cl57v6)); +assign Hmthw6 = (!Kp57v6); +assign Lsf8v6 = (Kc1iw6 ? Sx57v6 : Dc1iw6); +assign Kc1iw6 = (Rc1iw6 & Yc1iw6); +assign Yc1iw6 = (~(Fd1iw6 & I2whw6)); +assign I2whw6 = (!Fduhw6); +assign Fd1iw6 = (Xzvhw6 & Ez57v6); +assign Rc1iw6 = (~(Md1iw6 & Td1iw6)); +assign Td1iw6 = (~(L5ymz6[3] & Ae1iw6)); +assign Ae1iw6 = (!L5ymz6[4]); +assign Md1iw6 = (!He1iw6); +assign Esf8v6 = (Oe1iw6 & Hnzhw6); +assign Oe1iw6 = (~(Ve1iw6 & Cf1iw6)); +assign Cf1iw6 = (~(Jf1iw6 & Qf1iw6)); +assign Qf1iw6 = (Xf1iw6 & Eg1iw6); +assign Jf1iw6 = (Lg1iw6 & Kh47v6); +assign Lg1iw6 = (Gj47v6 & R9qhw6); +assign Ve1iw6 = (~(Sg1iw6 | S367v6)); +assign Xrf8v6 = (~(Zg1iw6 & Gh1iw6)); +assign Gh1iw6 = (~(Nh1iw6 & Uh1iw6)); +assign Uh1iw6 = (Bi1iw6 & Ii1iw6); +assign Ii1iw6 = (Hw57v6 | Pi1iw6); +assign Pi1iw6 = (S367v6 & Hnzhw6); +assign Bi1iw6 = (Jo1nv6 & An1nv6); +assign An1nv6 = (!W6ymz6[1]); +assign Nh1iw6 = (By1nv6 & Co1nv6); +assign Zg1iw6 = (~(Hw57v6 & Hnzhw6)); +assign Qrf8v6 = (~(Wi1iw6 & Dj1iw6)); +assign Dj1iw6 = (~(Tfxmz6[1] & Diwnv6)); +assign Wi1iw6 = (Kj1iw6 & Rj1iw6); +assign Rj1iw6 = (~(Hnxmz6[1] & Yiwnv6)); +assign Kj1iw6 = (~(L5ymz6[16] & Fjwnv6)); +assign Jrf8v6 = (~(Yj1iw6 & Fk1iw6)); +assign Fk1iw6 = (~(Tfxmz6[2] & Diwnv6)); +assign Yj1iw6 = (Mk1iw6 & Tk1iw6); +assign Tk1iw6 = (~(Hnxmz6[2] & Yiwnv6)); +assign Mk1iw6 = (~(L5ymz6[17] & Fjwnv6)); +assign Crf8v6 = (~(Al1iw6 & Hl1iw6)); +assign Hl1iw6 = (~(Tfxmz6[3] & Diwnv6)); +assign Al1iw6 = (Ol1iw6 & Vl1iw6); +assign Vl1iw6 = (~(Hnxmz6[3] & Yiwnv6)); +assign Ol1iw6 = (~(L5ymz6[18] & Fjwnv6)); +assign Vqf8v6 = (~(Cm1iw6 & Jm1iw6)); +assign Jm1iw6 = (~(Tfxmz6[4] & Diwnv6)); +assign Cm1iw6 = (Qm1iw6 & Xm1iw6); +assign Xm1iw6 = (~(Hnxmz6[4] & Yiwnv6)); +assign Qm1iw6 = (~(L5ymz6[19] & Fjwnv6)); +assign Oqf8v6 = (~(En1iw6 & Ln1iw6)); +assign Ln1iw6 = (~(Tfxmz6[5] & Diwnv6)); +assign En1iw6 = (Sn1iw6 & Zn1iw6); +assign Zn1iw6 = (~(Hnxmz6[5] & Yiwnv6)); +assign Sn1iw6 = (~(L5ymz6[20] & Fjwnv6)); +assign Hqf8v6 = (~(Go1iw6 & No1iw6)); +assign No1iw6 = (~(Tfxmz6[6] & Diwnv6)); +assign Go1iw6 = (Uo1iw6 & Bp1iw6); +assign Bp1iw6 = (~(Hnxmz6[6] & Yiwnv6)); +assign Uo1iw6 = (~(L5ymz6[21] & Fjwnv6)); +assign Aqf8v6 = (~(Ip1iw6 & Pp1iw6)); +assign Pp1iw6 = (~(Tfxmz6[7] & Diwnv6)); +assign Ip1iw6 = (Wp1iw6 & Dq1iw6); +assign Dq1iw6 = (~(Hnxmz6[7] & Yiwnv6)); +assign Wp1iw6 = (~(L5ymz6[22] & Fjwnv6)); +assign Tpf8v6 = (~(Kq1iw6 & Rq1iw6)); +assign Rq1iw6 = (~(Tfxmz6[8] & Diwnv6)); +assign Kq1iw6 = (Yq1iw6 & Fr1iw6); +assign Fr1iw6 = (~(Hnxmz6[8] & Yiwnv6)); +assign Yq1iw6 = (~(L5ymz6[23] & Fjwnv6)); +assign Mpf8v6 = (~(Mr1iw6 & Tr1iw6)); +assign Tr1iw6 = (~(Tfxmz6[9] & Diwnv6)); +assign Mr1iw6 = (As1iw6 & Hs1iw6); +assign Hs1iw6 = (~(Hnxmz6[9] & Yiwnv6)); +assign As1iw6 = (~(L5ymz6[24] & Fjwnv6)); +assign Fpf8v6 = (~(Os1iw6 & Vs1iw6)); +assign Vs1iw6 = (~(Tfxmz6[10] & Diwnv6)); +assign Os1iw6 = (Ct1iw6 & Jt1iw6); +assign Jt1iw6 = (~(Hnxmz6[10] & Yiwnv6)); +assign Ct1iw6 = (~(L5ymz6[25] & Fjwnv6)); +assign Yof8v6 = (~(Qt1iw6 & Xt1iw6)); +assign Xt1iw6 = (~(Tfxmz6[0] & Diwnv6)); +assign Qt1iw6 = (Eu1iw6 & Lu1iw6); +assign Lu1iw6 = (~(Hnxmz6[0] & Yiwnv6)); +assign Yiwnv6 = (~(Diwnv6 | Su1iw6)); +assign Eu1iw6 = (~(L5ymz6[15] & Fjwnv6)); +assign Fjwnv6 = (~(Dc1iw6 | Diwnv6)); +assign Diwnv6 = (Zu1iw6 & He1iw6); +assign Zu1iw6 = (~(W8qhw6 & Dc1iw6)); +assign Rof8v6 = (Gv1iw6 ? F267v6 : W8qhw6); +assign Gv1iw6 = (Nv1iw6 & Uv1iw6); +assign Uv1iw6 = (~(L5ymz6[7] & B8qhw6)); +assign B8qhw6 = (~(He1iw6 | W8qhw6)); +assign Nv1iw6 = (Bw1iw6 | Iw1iw6); +assign Iw1iw6 = (Cp47v6 ? Hhxmz6[0] : Hhxmz6[1]); +assign Bw1iw6 = (~(W8qhw6 & Pw1iw6)); +assign Pw1iw6 = (Hhxmz6[0] | Hhxmz6[1]); +assign Kof8v6 = (Iownv6 | Ww1iw6); +assign Ww1iw6 = (Dx1iw6 & Q7wnv6); +assign Dof8v6 = (~(Kx1iw6 & Rx1iw6)); +assign Rx1iw6 = (~(Yx1iw6 & Unwnv6)); +assign Kx1iw6 = (~(Iownv6 & Dtm7z6[0])); +assign Wnf8v6 = (~(Fy1iw6 & My1iw6)); +assign My1iw6 = (~(Ty1iw6 & Unwnv6)); +assign Unwnv6 = (~(Az1iw6 | Iownv6)); +assign Ty1iw6 = (Hz1iw6 & Oz1iw6); +assign Fy1iw6 = (~(Iownv6 & Dtm7z6[1])); +assign Pnf8v6 = (~(Vz1iw6 & C02iw6)); +assign C02iw6 = (~(Hl9ov6 & Fbqnv6)); +assign Vz1iw6 = (~(Dq9ov6 & Styet6)); +assign Inf8v6 = (~(J02iw6 & Q02iw6)); +assign Q02iw6 = (~(T3qhw6 & X02iw6)); +assign J02iw6 = (~(H4qhw6 & Znn7z6[0])); +assign Bnf8v6 = (~(E12iw6 & L12iw6)); +assign L12iw6 = (~(T3qhw6 & S12iw6)); +assign E12iw6 = (~(H4qhw6 & Znn7z6[2])); +assign Umf8v6 = (~(Z12iw6 & G22iw6)); +assign G22iw6 = (~(T3qhw6 & N22iw6)); +assign T3qhw6 = (~(U22iw6 | H4qhw6)); +assign Z12iw6 = (~(H4qhw6 & Znn7z6[3])); +assign H4qhw6 = (Jalov6 & B32iw6); +assign Nmf8v6 = (Q7wnv6 ? FIXMASTERTYPE : Lq0ft6); +assign Gmf8v6 = (~(I32iw6 & P32iw6)); +assign P32iw6 = (~(W32iw6 & Lxbet6)); +assign I32iw6 = (D42iw6 | K42iw6); +assign Zlf8v6 = (!R42iw6); +assign R42iw6 = (W32iw6 ? F52iw6 : Y42iw6); +assign Y42iw6 = (~(M52iw6 & T52iw6)); +assign Slf8v6 = (H62iw6 ? A62iw6 : Toi7z6[11]); +assign Llf8v6 = (H62iw6 ? O62iw6 : Toi7z6[10]); +assign Elf8v6 = (H62iw6 ? V62iw6 : Toi7z6[9]); +assign Xkf8v6 = (H62iw6 ? C72iw6 : Toi7z6[8]); +assign Qkf8v6 = (H62iw6 ? J72iw6 : Toi7z6[7]); +assign Jkf8v6 = (H62iw6 ? Q72iw6 : Toi7z6[6]); +assign Ckf8v6 = (H62iw6 ? X72iw6 : Toi7z6[5]); +assign H62iw6 = (!W32iw6); +assign Vjf8v6 = (W32iw6 ? Toi7z6[4] : E82iw6); +assign Ojf8v6 = (W32iw6 ? Toi7z6[3] : L82iw6); +assign Hjf8v6 = (W32iw6 ? Toi7z6[2] : S82iw6); +assign Ajf8v6 = (Z82iw6 & Lxbet6); +assign Z82iw6 = (~(G92iw6 | N92iw6)); +assign Tif8v6 = (~(U92iw6 & Ba2iw6)); +assign Ba2iw6 = (~(Ia2iw6 & Pa2iw6)); +assign U92iw6 = (~(W32iw6 & Bqi7z6[3])); +assign Mif8v6 = (~(Wa2iw6 & Db2iw6)); +assign Db2iw6 = (~(Ia2iw6 & Kb2iw6)); +assign Wa2iw6 = (~(W32iw6 & Bqi7z6[2])); +assign Fif8v6 = (~(Rb2iw6 & Yb2iw6)); +assign Yb2iw6 = (~(Ia2iw6 & Fc2iw6)); +assign Rb2iw6 = (~(W32iw6 & Bqi7z6[1])); +assign Yhf8v6 = (~(Mc2iw6 & Tc2iw6)); +assign Tc2iw6 = (~(Ia2iw6 & Ujlov6)); +assign Ia2iw6 = (~(K42iw6 | Ad2iw6)); +assign Mc2iw6 = (~(W32iw6 & Bqi7z6[0])); +assign W32iw6 = (K42iw6 & Hd2iw6); +assign Hd2iw6 = (~(Od2iw6 & Vd2iw6)); +assign Od2iw6 = (~(Ce2iw6 & Je2iw6)); +assign Ce2iw6 = (!Q22nv6); +assign K42iw6 = (Qe2iw6 | Xe2iw6); +assign Qe2iw6 = (~(Ef2iw6 & Vd2iw6)); +assign Rhf8v6 = (~(Lf2iw6 & Sf2iw6)); +assign Sf2iw6 = (~(Lgj7z6[11] & Zf2iw6)); +assign Lf2iw6 = (~(Gg2iw6 & Ng2iw6)); +assign Khf8v6 = (~(Ug2iw6 & Bh2iw6)); +assign Bh2iw6 = (~(Lgj7z6[23] & Ih2iw6)); +assign Ug2iw6 = (~(Ph2iw6 & Gg2iw6)); +assign Dhf8v6 = (~(Wh2iw6 & Di2iw6)); +assign Di2iw6 = (~(Lgj7z6[35] & Ki2iw6)); +assign Wh2iw6 = (~(Ri2iw6 & Gg2iw6)); +assign Wgf8v6 = (~(Yi2iw6 & Fj2iw6)); +assign Fj2iw6 = (~(Lgj7z6[47] & Mj2iw6)); +assign Yi2iw6 = (~(Tj2iw6 & Gg2iw6)); +assign Pgf8v6 = (~(Ak2iw6 & Hk2iw6)); +assign Hk2iw6 = (~(Lgj7z6[59] & Ok2iw6)); +assign Ak2iw6 = (~(Vk2iw6 & Gg2iw6)); +assign Igf8v6 = (~(Cl2iw6 & Jl2iw6)); +assign Jl2iw6 = (~(Lgj7z6[71] & Ql2iw6)); +assign Cl2iw6 = (~(Xl2iw6 & Gg2iw6)); +assign Bgf8v6 = (~(Em2iw6 & Lm2iw6)); +assign Lm2iw6 = (~(Lgj7z6[83] & Sm2iw6)); +assign Em2iw6 = (~(Zm2iw6 & Gg2iw6)); +assign Uff8v6 = (~(Gn2iw6 & Nn2iw6)); +assign Nn2iw6 = (~(Lgj7z6[95] & Un2iw6)); +assign Gn2iw6 = (~(Bo2iw6 & Gg2iw6)); +assign Nff8v6 = (~(Io2iw6 & Po2iw6)); +assign Po2iw6 = (~(Lgj7z6[107] & Wo2iw6)); +assign Io2iw6 = (~(Dp2iw6 & Gg2iw6)); +assign Gff8v6 = (~(Kp2iw6 & Rp2iw6)); +assign Rp2iw6 = (~(Lgj7z6[119] & Yp2iw6)); +assign Kp2iw6 = (~(Fq2iw6 & Gg2iw6)); +assign Zef8v6 = (~(Mq2iw6 & Tq2iw6)); +assign Tq2iw6 = (~(Lgj7z6[131] & Ar2iw6)); +assign Mq2iw6 = (~(Hr2iw6 & Gg2iw6)); +assign Sef8v6 = (~(Or2iw6 & Vr2iw6)); +assign Vr2iw6 = (~(Lgj7z6[143] & Cs2iw6)); +assign Or2iw6 = (~(Js2iw6 & Gg2iw6)); +assign Lef8v6 = (~(Qs2iw6 & Xs2iw6)); +assign Xs2iw6 = (~(Lgj7z6[155] & Et2iw6)); +assign Qs2iw6 = (~(Lt2iw6 & Gg2iw6)); +assign Eef8v6 = (~(St2iw6 & Zt2iw6)); +assign Zt2iw6 = (~(Lgj7z6[167] & Gu2iw6)); +assign St2iw6 = (~(Nu2iw6 & Gg2iw6)); +assign Xdf8v6 = (~(Uu2iw6 & Bv2iw6)); +assign Bv2iw6 = (~(Lgj7z6[179] & Iv2iw6)); +assign Uu2iw6 = (~(Pv2iw6 & Gg2iw6)); +assign Qdf8v6 = (~(Wv2iw6 & Dw2iw6)); +assign Dw2iw6 = (~(Lgj7z6[191] & Kw2iw6)); +assign Wv2iw6 = (~(Rw2iw6 & Gg2iw6)); +assign Jdf8v6 = (~(Yw2iw6 & Fx2iw6)); +assign Fx2iw6 = (~(Ohj7z6[63] & Mx2iw6)); +assign Mx2iw6 = (~(Tx2iw6 & X0hov6)); +assign Yw2iw6 = (~(Ay2iw6 & Gg2iw6)); +assign Cdf8v6 = (~(Hy2iw6 & Oy2iw6)); +assign Oy2iw6 = (~(Ohj7z6[31] & Vy2iw6)); +assign Vy2iw6 = (~(Cz2iw6 & X0hov6)); +assign Hy2iw6 = (~(Jz2iw6 & Gg2iw6)); +assign Ocf8v6 = (~(Vcf8v6 & Qz2iw6)); +assign Qz2iw6 = (~(P8adt6 & Xz2iw6)); +assign Xz2iw6 = (~(O9adt6 & E03iw6)); +assign E03iw6 = (Ef2iw6 | Xe2iw6); +assign Vcf8v6 = (~(L03iw6 & S03iw6)); +assign S03iw6 = (O9adt6 & Vd2iw6); +assign L03iw6 = (~(Ef2iw6 | Xe2iw6)); +assign Xe2iw6 = (~(Z03iw6 & G13iw6)); +assign Z03iw6 = (~(N13iw6 | U13iw6)); +assign Ef2iw6 = (~(B23iw6 & I23iw6)); +assign I23iw6 = (~(P23iw6 & W23iw6)); +assign W23iw6 = (D33iw6 & K33iw6); +assign K33iw6 = (R33iw6 & A62iw6); +assign R33iw6 = (O62iw6 & V62iw6); +assign D33iw6 = (O6cet6 & C72iw6); +assign P23iw6 = (Y33iw6 & F43iw6); +assign F43iw6 = (~(M43iw6 | L82iw6)); +assign M43iw6 = (T43iw6 | Q72iw6); +assign Y33iw6 = (~(J72iw6 | S82iw6)); +assign Acf8v6 = (~(Hcf8v6 & A53iw6)); +assign A53iw6 = (~(Euget6 & H53iw6)); +assign H53iw6 = (!Orget6); +assign Hcf8v6 = (~(O53iw6 & V53iw6)); +assign V53iw6 = (Wdlov6 & Orget6); +assign Wdlov6 = (~(Iu4ov6 | C63iw6)); +assign Tbf8v6 = (~(J63iw6 & Q63iw6)); +assign Q63iw6 = (~(Njlov6 & Pa2iw6)); +assign J63iw6 = (~(Bklov6 & Pvj7z6[3])); +assign Mbf8v6 = (~(X63iw6 & E73iw6)); +assign E73iw6 = (~(Ad2iw6 & L73iw6)); +assign X63iw6 = (~(Bklov6 & Rmget6)); +assign Fbf8v6 = (Z73iw6 ? S73iw6 : Hkget6); +assign S73iw6 = (G83iw6 & N83iw6); +assign Yaf8v6 = (Z73iw6 ? X72iw6 : Dtj7z6[5]); +assign Raf8v6 = (Z73iw6 ? E82iw6 : Dtj7z6[4]); +assign Kaf8v6 = (Z73iw6 ? L82iw6 : Dtj7z6[3]); +assign Daf8v6 = (Z73iw6 ? S82iw6 : Dtj7z6[2]); +assign W9f8v6 = (~(U83iw6 & B93iw6)); +assign B93iw6 = (~(Njlov6 & Kb2iw6)); +assign U83iw6 = (~(Bklov6 & Pvj7z6[2])); +assign P9f8v6 = (~(I93iw6 & P93iw6)); +assign P93iw6 = (~(Njlov6 & Fc2iw6)); +assign Njlov6 = (L73iw6 & D42iw6); +assign L73iw6 = (O53iw6 & W93iw6); +assign W93iw6 = (~(Da3iw6 | Bklov6)); +assign I93iw6 = (~(Bklov6 & Pvj7z6[1])); +assign Bklov6 = (!Z73iw6); +assign Z73iw6 = (~(Ka3iw6 & Ra3iw6)); +assign Ra3iw6 = (~(O53iw6 & Ya3iw6)); +assign Ya3iw6 = (~(Da3iw6 | MPUDISABLE)); +assign O53iw6 = (G13iw6 & N13iw6); +assign Ka3iw6 = (~(Fb3iw6 & Mb3iw6)); +assign Mb3iw6 = (~(Tb3iw6 & Ac3iw6)); +assign Ac3iw6 = (~(Hc3iw6 | Rmget6)); +assign Tb3iw6 = (Oc3iw6 & Vc3iw6); +assign Oc3iw6 = (~(Cd3iw6 & Jd3iw6)); +assign Jd3iw6 = (Pvj7z6[1] | Pvj7z6[2]); +assign Fb3iw6 = (~(Pdlov6 | MPUDISABLE)); +assign I9f8v6 = (Vd2iw6 ? Qd3iw6 : C1o7z6[1]); +assign Qd3iw6 = (M52iw6 & D42iw6); +assign B9f8v6 = (!Xd3iw6); +assign Xd3iw6 = (Pdlov6 ? Q497z6 : Ee3iw6); +assign U8f8v6 = (Vd2iw6 ? Le3iw6 : C1o7z6[0]); +assign Le3iw6 = (Se3iw6 & D42iw6); +assign N8f8v6 = (~(Ze3iw6 & Gf3iw6)); +assign Gf3iw6 = (~(Lgj7z6[190] & Kw2iw6)); +assign Ze3iw6 = (~(Nf3iw6 & Rw2iw6)); +assign G8f8v6 = (~(Uf3iw6 & Bg3iw6)); +assign Bg3iw6 = (~(Lgj7z6[178] & Iv2iw6)); +assign Uf3iw6 = (~(Nf3iw6 & Pv2iw6)); +assign Z7f8v6 = (~(Ig3iw6 & Pg3iw6)); +assign Pg3iw6 = (~(Lgj7z6[166] & Gu2iw6)); +assign Ig3iw6 = (~(Nf3iw6 & Nu2iw6)); +assign S7f8v6 = (~(Wg3iw6 & Dh3iw6)); +assign Dh3iw6 = (~(Lgj7z6[154] & Et2iw6)); +assign Wg3iw6 = (~(Nf3iw6 & Lt2iw6)); +assign L7f8v6 = (~(Kh3iw6 & Rh3iw6)); +assign Rh3iw6 = (~(Lgj7z6[142] & Cs2iw6)); +assign Kh3iw6 = (~(Nf3iw6 & Js2iw6)); +assign E7f8v6 = (~(Yh3iw6 & Fi3iw6)); +assign Fi3iw6 = (~(Lgj7z6[130] & Ar2iw6)); +assign Yh3iw6 = (~(Nf3iw6 & Hr2iw6)); +assign X6f8v6 = (~(Mi3iw6 & Ti3iw6)); +assign Ti3iw6 = (~(Lgj7z6[118] & Yp2iw6)); +assign Mi3iw6 = (~(Nf3iw6 & Fq2iw6)); +assign Q6f8v6 = (~(Aj3iw6 & Hj3iw6)); +assign Hj3iw6 = (~(Lgj7z6[106] & Wo2iw6)); +assign Aj3iw6 = (~(Nf3iw6 & Dp2iw6)); +assign J6f8v6 = (~(Oj3iw6 & Vj3iw6)); +assign Vj3iw6 = (~(Lgj7z6[94] & Un2iw6)); +assign Oj3iw6 = (~(Nf3iw6 & Bo2iw6)); +assign C6f8v6 = (~(Ck3iw6 & Jk3iw6)); +assign Jk3iw6 = (~(Lgj7z6[82] & Sm2iw6)); +assign Ck3iw6 = (~(Nf3iw6 & Zm2iw6)); +assign V5f8v6 = (~(Qk3iw6 & Xk3iw6)); +assign Xk3iw6 = (~(Lgj7z6[70] & Ql2iw6)); +assign Qk3iw6 = (~(Nf3iw6 & Xl2iw6)); +assign O5f8v6 = (~(El3iw6 & Ll3iw6)); +assign Ll3iw6 = (~(Lgj7z6[58] & Ok2iw6)); +assign El3iw6 = (~(Nf3iw6 & Vk2iw6)); +assign H5f8v6 = (~(Sl3iw6 & Zl3iw6)); +assign Zl3iw6 = (~(Lgj7z6[46] & Mj2iw6)); +assign Sl3iw6 = (~(Nf3iw6 & Tj2iw6)); +assign A5f8v6 = (~(Gm3iw6 & Nm3iw6)); +assign Nm3iw6 = (~(Lgj7z6[34] & Ki2iw6)); +assign Gm3iw6 = (~(Nf3iw6 & Ri2iw6)); +assign T4f8v6 = (~(Um3iw6 & Bn3iw6)); +assign Bn3iw6 = (~(Lgj7z6[22] & Ih2iw6)); +assign Um3iw6 = (~(Nf3iw6 & Ph2iw6)); +assign M4f8v6 = (~(In3iw6 & Pn3iw6)); +assign Pn3iw6 = (~(Lgj7z6[10] & Zf2iw6)); +assign In3iw6 = (~(Nf3iw6 & Ng2iw6)); +assign F4f8v6 = (~(Wn3iw6 & Do3iw6)); +assign Do3iw6 = (~(Ohj7z6[30] & Ko3iw6)); +assign Ko3iw6 = (~(Cz2iw6 & Ro3iw6)); +assign Wn3iw6 = (~(Nf3iw6 & Jz2iw6)); +assign Y3f8v6 = (~(Yo3iw6 & Fp3iw6)); +assign Fp3iw6 = (~(Ohj7z6[62] & Mp3iw6)); +assign Mp3iw6 = (~(Tx2iw6 & Ro3iw6)); +assign Yo3iw6 = (~(Nf3iw6 & Ay2iw6)); +assign R3f8v6 = (~(Tp3iw6 & Aq3iw6)); +assign Aq3iw6 = (~(Lgj7z6[189] & Kw2iw6)); +assign Kw2iw6 = (~(Rw2iw6 & Bqi7z6[3])); +assign Tp3iw6 = (~(Rw2iw6 & Hq3iw6)); +assign K3f8v6 = (~(Oq3iw6 & Vq3iw6)); +assign Vq3iw6 = (~(Lgj7z6[177] & Iv2iw6)); +assign Iv2iw6 = (~(Pv2iw6 & Bqi7z6[3])); +assign Oq3iw6 = (~(Pv2iw6 & Hq3iw6)); +assign D3f8v6 = (~(Cr3iw6 & Jr3iw6)); +assign Jr3iw6 = (~(Lgj7z6[165] & Gu2iw6)); +assign Gu2iw6 = (~(Nu2iw6 & Bqi7z6[3])); +assign Cr3iw6 = (~(Nu2iw6 & Hq3iw6)); +assign W2f8v6 = (~(Qr3iw6 & Xr3iw6)); +assign Xr3iw6 = (~(Lgj7z6[153] & Et2iw6)); +assign Et2iw6 = (~(Lt2iw6 & Bqi7z6[3])); +assign Qr3iw6 = (~(Lt2iw6 & Hq3iw6)); +assign P2f8v6 = (~(Es3iw6 & Ls3iw6)); +assign Ls3iw6 = (~(Lgj7z6[141] & Cs2iw6)); +assign Cs2iw6 = (~(Js2iw6 & Bqi7z6[3])); +assign Es3iw6 = (~(Js2iw6 & Hq3iw6)); +assign I2f8v6 = (~(Ss3iw6 & Zs3iw6)); +assign Zs3iw6 = (~(Lgj7z6[129] & Ar2iw6)); +assign Ar2iw6 = (~(Hr2iw6 & Bqi7z6[3])); +assign Ss3iw6 = (~(Hr2iw6 & Hq3iw6)); +assign B2f8v6 = (~(Gt3iw6 & Nt3iw6)); +assign Nt3iw6 = (~(Lgj7z6[117] & Yp2iw6)); +assign Yp2iw6 = (~(Fq2iw6 & Bqi7z6[3])); +assign Gt3iw6 = (~(Fq2iw6 & Hq3iw6)); +assign U1f8v6 = (~(Ut3iw6 & Bu3iw6)); +assign Bu3iw6 = (~(Lgj7z6[105] & Wo2iw6)); +assign Wo2iw6 = (~(Dp2iw6 & Bqi7z6[3])); +assign Ut3iw6 = (~(Dp2iw6 & Hq3iw6)); +assign N1f8v6 = (~(Iu3iw6 & Pu3iw6)); +assign Pu3iw6 = (~(Lgj7z6[93] & Un2iw6)); +assign Un2iw6 = (Wu3iw6 | Dv3iw6); +assign Iu3iw6 = (~(Bo2iw6 & Hq3iw6)); +assign G1f8v6 = (~(Kv3iw6 & Rv3iw6)); +assign Rv3iw6 = (~(Lgj7z6[81] & Sm2iw6)); +assign Sm2iw6 = (~(Zm2iw6 & Bqi7z6[3])); +assign Kv3iw6 = (~(Zm2iw6 & Hq3iw6)); +assign Z0f8v6 = (~(Yv3iw6 & Fw3iw6)); +assign Fw3iw6 = (~(Lgj7z6[69] & Ql2iw6)); +assign Ql2iw6 = (~(Xl2iw6 & Bqi7z6[3])); +assign Yv3iw6 = (~(Xl2iw6 & Hq3iw6)); +assign S0f8v6 = (~(Mw3iw6 & Tw3iw6)); +assign Tw3iw6 = (~(Lgj7z6[57] & Ok2iw6)); +assign Ok2iw6 = (~(Vk2iw6 & Bqi7z6[3])); +assign Mw3iw6 = (~(Vk2iw6 & Hq3iw6)); +assign L0f8v6 = (~(Ax3iw6 & Hx3iw6)); +assign Hx3iw6 = (~(Lgj7z6[45] & Mj2iw6)); +assign Mj2iw6 = (~(Tj2iw6 & Bqi7z6[3])); +assign Ax3iw6 = (~(Tj2iw6 & Hq3iw6)); +assign E0f8v6 = (~(Ox3iw6 & Vx3iw6)); +assign Vx3iw6 = (~(Lgj7z6[33] & Ki2iw6)); +assign Ki2iw6 = (~(Ri2iw6 & Bqi7z6[3])); +assign Ox3iw6 = (~(Ri2iw6 & Hq3iw6)); +assign Xze8v6 = (~(Cy3iw6 & Jy3iw6)); +assign Jy3iw6 = (~(Lgj7z6[21] & Ih2iw6)); +assign Ih2iw6 = (~(Ph2iw6 & Bqi7z6[3])); +assign Cy3iw6 = (~(Ph2iw6 & Hq3iw6)); +assign Qze8v6 = (~(Qy3iw6 & Xy3iw6)); +assign Xy3iw6 = (~(Lgj7z6[9] & Zf2iw6)); +assign Zf2iw6 = (~(Ng2iw6 & Bqi7z6[3])); +assign Qy3iw6 = (~(Ng2iw6 & Hq3iw6)); +assign Jze8v6 = (~(Ez3iw6 & Lz3iw6)); +assign Lz3iw6 = (~(Ohj7z6[29] & Sz3iw6)); +assign Sz3iw6 = (~(Cz2iw6 & Zz3iw6)); +assign Ez3iw6 = (~(Jz2iw6 & Hq3iw6)); +assign Cze8v6 = (~(G04iw6 & N04iw6)); +assign N04iw6 = (~(Ohj7z6[61] & U04iw6)); +assign U04iw6 = (~(Tx2iw6 & Zz3iw6)); +assign G04iw6 = (~(Ay2iw6 & Hq3iw6)); +assign Vye8v6 = (~(B14iw6 & I14iw6)); +assign I14iw6 = (~(Ohj7z6[28] & P14iw6)); +assign P14iw6 = (~(Cz2iw6 & W14iw6)); +assign B14iw6 = (~(D24iw6 & W14iw6)); +assign Oye8v6 = (~(K24iw6 & R24iw6)); +assign R24iw6 = (~(Ohj7z6[60] & Y24iw6)); +assign Y24iw6 = (~(Tx2iw6 & W14iw6)); +assign K24iw6 = (~(F34iw6 & W14iw6)); +assign Hye8v6 = (~(M34iw6 & T34iw6)); +assign T34iw6 = (~(Ohj7z6[27] & A44iw6)); +assign A44iw6 = (~(Cz2iw6 & H44iw6)); +assign M34iw6 = (~(D24iw6 & H44iw6)); +assign Aye8v6 = (~(O44iw6 & V44iw6)); +assign V44iw6 = (~(Ohj7z6[59] & C54iw6)); +assign C54iw6 = (~(Tx2iw6 & H44iw6)); +assign O44iw6 = (~(F34iw6 & H44iw6)); +assign Txe8v6 = (~(J54iw6 & Q54iw6)); +assign Q54iw6 = (~(Ohj7z6[26] & X54iw6)); +assign X54iw6 = (~(Cz2iw6 & E64iw6)); +assign J54iw6 = (~(D24iw6 & E64iw6)); +assign Mxe8v6 = (~(L64iw6 & S64iw6)); +assign S64iw6 = (~(Ohj7z6[58] & Z64iw6)); +assign Z64iw6 = (~(Tx2iw6 & E64iw6)); +assign L64iw6 = (~(F34iw6 & E64iw6)); +assign Fxe8v6 = (~(G74iw6 & N74iw6)); +assign N74iw6 = (~(Ohj7z6[25] & U74iw6)); +assign U74iw6 = (~(Cz2iw6 & Iklov6)); +assign G74iw6 = (~(D24iw6 & Iklov6)); +assign Ywe8v6 = (~(B84iw6 & I84iw6)); +assign I84iw6 = (~(Ohj7z6[57] & P84iw6)); +assign P84iw6 = (~(Tx2iw6 & Iklov6)); +assign B84iw6 = (~(F34iw6 & Iklov6)); +assign Rwe8v6 = (!W84iw6); +assign W84iw6 = (K94iw6 ? Pfh7v6 : D94iw6); +assign Kwe8v6 = (!R94iw6); +assign R94iw6 = (K94iw6 ? Cjh7v6 : Y94iw6); +assign Dwe8v6 = (K94iw6 ? HTMDHPROT[1] : Hjqnv6); +assign Wve8v6 = (K94iw6 ? Fa4iw6 : Anehw6); +assign Pve8v6 = (!Ma4iw6); +assign Ma4iw6 = (K94iw6 ? Kgh7v6 : Ta4iw6); +assign Ive8v6 = (!Ab4iw6); +assign Ab4iw6 = (Ob4iw6 ? Hb4iw6 : Dgh7v6); +assign Hb4iw6 = (~(Aeonv6 & Vb4iw6)); +assign Bve8v6 = (K94iw6 ? HTMDHTRANS[0] : Cc4iw6); +assign Cc4iw6 = (Jc4iw6 & Aeonv6); +assign Uue8v6 = (K94iw6 ? HTMDHADDR[31] : Cmm7z6[31]); +assign Nue8v6 = (K94iw6 ? HTMDHADDR[30] : Cmm7z6[30]); +assign Gue8v6 = (K94iw6 ? HTMDHADDR[29] : Cmm7z6[29]); +assign Zte8v6 = (K94iw6 ? HTMDHADDR[28] : Cmm7z6[28]); +assign Ste8v6 = (K94iw6 ? HTMDHADDR[27] : Cmm7z6[27]); +assign Lte8v6 = (K94iw6 ? HTMDHADDR[26] : Cmm7z6[26]); +assign Ete8v6 = (K94iw6 ? HTMDHADDR[25] : Cmm7z6[25]); +assign Xse8v6 = (K94iw6 ? HTMDHADDR[24] : Cmm7z6[24]); +assign Qse8v6 = (K94iw6 ? HTMDHADDR[23] : Cmm7z6[23]); +assign Jse8v6 = (K94iw6 ? HTMDHADDR[22] : Cmm7z6[22]); +assign Cse8v6 = (K94iw6 ? HTMDHADDR[21] : Cmm7z6[21]); +assign Vre8v6 = (K94iw6 ? HTMDHADDR[20] : Cmm7z6[20]); +assign Ore8v6 = (K94iw6 ? HTMDHADDR[19] : Cmm7z6[19]); +assign Hre8v6 = (K94iw6 ? HTMDHADDR[18] : Cmm7z6[18]); +assign Are8v6 = (K94iw6 ? HTMDHADDR[17] : Cmm7z6[17]); +assign Tqe8v6 = (K94iw6 ? HTMDHADDR[16] : Cmm7z6[16]); +assign Mqe8v6 = (K94iw6 ? HTMDHADDR[15] : Cmm7z6[15]); +assign Fqe8v6 = (K94iw6 ? HTMDHADDR[14] : Cmm7z6[14]); +assign Ype8v6 = (K94iw6 ? HTMDHADDR[13] : Cmm7z6[13]); +assign Rpe8v6 = (K94iw6 ? HTMDHADDR[12] : Cmm7z6[12]); +assign Kpe8v6 = (K94iw6 ? HTMDHADDR[11] : Cmm7z6[11]); +assign Dpe8v6 = (K94iw6 ? HTMDHADDR[10] : Cmm7z6[10]); +assign Woe8v6 = (K94iw6 ? HTMDHADDR[9] : Cmm7z6[9]); +assign Poe8v6 = (K94iw6 ? HTMDHADDR[8] : Cmm7z6[8]); +assign Ioe8v6 = (K94iw6 ? HTMDHADDR[7] : Cmm7z6[7]); +assign Boe8v6 = (K94iw6 ? HTMDHADDR[6] : Cmm7z6[6]); +assign Une8v6 = (K94iw6 ? HTMDHADDR[5] : Cmm7z6[5]); +assign Nne8v6 = (K94iw6 ? HTMDHADDR[4] : Cmm7z6[4]); +assign Gne8v6 = (K94iw6 ? HTMDHADDR[3] : Cmm7z6[3]); +assign Zme8v6 = (K94iw6 ? HTMDHADDR[2] : Yefnv6); +assign Sme8v6 = (!Qc4iw6); +assign Qc4iw6 = (K94iw6 ? Rgh7v6 : Xc4iw6); +assign Lme8v6 = (!Ed4iw6); +assign Ed4iw6 = (Ob4iw6 ? Sd4iw6 : Ld4iw6); +assign Sd4iw6 = (~(Zd4iw6 & Ge4iw6)); +assign Ge4iw6 = (~(Kgh7v6 & Wfh7v6)); +assign Zd4iw6 = (~(Pfh7v6 | Dgh7v6)); +assign Eme8v6 = (!Ne4iw6); +assign Ne4iw6 = (Ob4iw6 ? Bf4iw6 : Ue4iw6); +assign Bf4iw6 = (~(If4iw6 & Pf4iw6)); +assign Pf4iw6 = (~(Dgh7v6 | Rgh7v6)); +assign If4iw6 = (Kgh7v6 & Fa4iw6); +assign Fa4iw6 = (!Wfh7v6); +assign Qle8v6 = (Dg4iw6 ? Wf4iw6 : Dri7z6[24]); +assign Jle8v6 = (Dg4iw6 ? Iklov6 : Dri7z6[25]); +assign Cle8v6 = (Dg4iw6 ? E64iw6 : Dri7z6[26]); +assign Vke8v6 = (Dg4iw6 ? H44iw6 : Dri7z6[27]); +assign Oke8v6 = (Dg4iw6 ? W14iw6 : Dri7z6[28]); +assign Hke8v6 = (Dg4iw6 ? Zz3iw6 : Dri7z6[29]); +assign Ake8v6 = (Dg4iw6 ? Ro3iw6 : Dri7z6[30]); +assign Tje8v6 = (Dg4iw6 ? X0hov6 : Dri7z6[31]); +assign Dg4iw6 = (~(Kg4iw6 | Dv3iw6)); +assign Mje8v6 = (~(Rg4iw6 & Yg4iw6)); +assign Yg4iw6 = (~(Ohj7z6[24] & Fh4iw6)); +assign Fh4iw6 = (~(Cz2iw6 & Wf4iw6)); +assign Cz2iw6 = (~(Mh4iw6 | Dv3iw6)); +assign Rg4iw6 = (~(D24iw6 & Wf4iw6)); +assign D24iw6 = (Jz2iw6 & Bqi7z6[3]); +assign Fje8v6 = (~(Th4iw6 & Ai4iw6)); +assign Ai4iw6 = (~(Ohj7z6[56] & Hi4iw6)); +assign Hi4iw6 = (~(Tx2iw6 & Wf4iw6)); +assign Tx2iw6 = (~(Oi4iw6 | Dv3iw6)); +assign Th4iw6 = (~(F34iw6 & Wf4iw6)); +assign F34iw6 = (Ay2iw6 & Bqi7z6[3]); +assign Yie8v6 = (~(Vi4iw6 & Cj4iw6)); +assign Cj4iw6 = (~(Lgj7z6[188] & Jj4iw6)); +assign Vi4iw6 = (~(Qj4iw6 & Rw2iw6)); +assign Rie8v6 = (~(Xj4iw6 & Ek4iw6)); +assign Ek4iw6 = (~(Lgj7z6[176] & Lk4iw6)); +assign Xj4iw6 = (~(Qj4iw6 & Pv2iw6)); +assign Kie8v6 = (~(Sk4iw6 & Zk4iw6)); +assign Zk4iw6 = (~(Lgj7z6[164] & Gl4iw6)); +assign Sk4iw6 = (~(Qj4iw6 & Nu2iw6)); +assign Die8v6 = (~(Nl4iw6 & Ul4iw6)); +assign Ul4iw6 = (~(Lgj7z6[152] & Bm4iw6)); +assign Nl4iw6 = (~(Qj4iw6 & Lt2iw6)); +assign Whe8v6 = (~(Im4iw6 & Pm4iw6)); +assign Pm4iw6 = (~(Lgj7z6[140] & Wm4iw6)); +assign Im4iw6 = (~(Qj4iw6 & Js2iw6)); +assign Phe8v6 = (~(Dn4iw6 & Kn4iw6)); +assign Kn4iw6 = (~(Lgj7z6[128] & Rn4iw6)); +assign Dn4iw6 = (~(Qj4iw6 & Hr2iw6)); +assign Ihe8v6 = (~(Yn4iw6 & Fo4iw6)); +assign Fo4iw6 = (~(Lgj7z6[116] & Mo4iw6)); +assign Yn4iw6 = (~(Qj4iw6 & Fq2iw6)); +assign Bhe8v6 = (~(To4iw6 & Ap4iw6)); +assign Ap4iw6 = (~(Lgj7z6[104] & Hp4iw6)); +assign To4iw6 = (~(Qj4iw6 & Dp2iw6)); +assign Uge8v6 = (~(Op4iw6 & Vp4iw6)); +assign Vp4iw6 = (~(Lgj7z6[92] & Cq4iw6)); +assign Op4iw6 = (~(Qj4iw6 & Bo2iw6)); +assign Nge8v6 = (~(Jq4iw6 & Qq4iw6)); +assign Qq4iw6 = (~(Lgj7z6[80] & Xq4iw6)); +assign Jq4iw6 = (~(Qj4iw6 & Zm2iw6)); +assign Gge8v6 = (~(Er4iw6 & Lr4iw6)); +assign Lr4iw6 = (~(Lgj7z6[68] & Sr4iw6)); +assign Er4iw6 = (~(Qj4iw6 & Xl2iw6)); +assign Zfe8v6 = (~(Zr4iw6 & Gs4iw6)); +assign Gs4iw6 = (~(Lgj7z6[56] & Ns4iw6)); +assign Zr4iw6 = (~(Qj4iw6 & Vk2iw6)); +assign Sfe8v6 = (~(Us4iw6 & Bt4iw6)); +assign Bt4iw6 = (~(Lgj7z6[44] & It4iw6)); +assign Us4iw6 = (~(Qj4iw6 & Tj2iw6)); +assign Lfe8v6 = (~(Pt4iw6 & Wt4iw6)); +assign Wt4iw6 = (~(Lgj7z6[32] & Du4iw6)); +assign Pt4iw6 = (~(Qj4iw6 & Ri2iw6)); +assign Efe8v6 = (~(Ku4iw6 & Ru4iw6)); +assign Ru4iw6 = (~(Lgj7z6[20] & Yu4iw6)); +assign Ku4iw6 = (~(Qj4iw6 & Ph2iw6)); +assign Xee8v6 = (~(Fv4iw6 & Mv4iw6)); +assign Mv4iw6 = (~(Lgj7z6[8] & Tv4iw6)); +assign Fv4iw6 = (~(Qj4iw6 & Ng2iw6)); +assign Qee8v6 = (~(Aw4iw6 & Hw4iw6)); +assign Hw4iw6 = (~(Ohj7z6[23] & Ow4iw6)); +assign Ow4iw6 = (~(Vw4iw6 & Cx4iw6)); +assign Aw4iw6 = (~(Qj4iw6 & Jz2iw6)); +assign Jee8v6 = (~(Jx4iw6 & Qx4iw6)); +assign Qx4iw6 = (~(Ohj7z6[55] & Xx4iw6)); +assign Xx4iw6 = (~(Ey4iw6 & Cx4iw6)); +assign Jx4iw6 = (~(Qj4iw6 & Ay2iw6)); +assign Cee8v6 = (~(Ly4iw6 & Sy4iw6)); +assign Sy4iw6 = (~(Lgj7z6[187] & Jj4iw6)); +assign Ly4iw6 = (~(Rw2iw6 & Zy4iw6)); +assign Vde8v6 = (~(Gz4iw6 & Nz4iw6)); +assign Nz4iw6 = (~(Lgj7z6[175] & Lk4iw6)); +assign Gz4iw6 = (~(Pv2iw6 & Zy4iw6)); +assign Ode8v6 = (~(Uz4iw6 & B05iw6)); +assign B05iw6 = (~(Lgj7z6[163] & Gl4iw6)); +assign Uz4iw6 = (~(Nu2iw6 & Zy4iw6)); +assign Hde8v6 = (~(I05iw6 & P05iw6)); +assign P05iw6 = (~(Lgj7z6[151] & Bm4iw6)); +assign I05iw6 = (~(Lt2iw6 & Zy4iw6)); +assign Ade8v6 = (~(W05iw6 & D15iw6)); +assign D15iw6 = (~(Lgj7z6[139] & Wm4iw6)); +assign W05iw6 = (~(Js2iw6 & Zy4iw6)); +assign Tce8v6 = (~(K15iw6 & R15iw6)); +assign R15iw6 = (~(Lgj7z6[127] & Rn4iw6)); +assign K15iw6 = (~(Hr2iw6 & Zy4iw6)); +assign Mce8v6 = (~(Y15iw6 & F25iw6)); +assign F25iw6 = (~(Lgj7z6[115] & Mo4iw6)); +assign Y15iw6 = (~(Fq2iw6 & Zy4iw6)); +assign Fce8v6 = (~(M25iw6 & T25iw6)); +assign T25iw6 = (~(Lgj7z6[103] & Hp4iw6)); +assign M25iw6 = (~(Dp2iw6 & Zy4iw6)); +assign Ybe8v6 = (~(A35iw6 & H35iw6)); +assign H35iw6 = (~(Lgj7z6[91] & Cq4iw6)); +assign A35iw6 = (~(Bo2iw6 & Zy4iw6)); +assign Rbe8v6 = (~(O35iw6 & V35iw6)); +assign V35iw6 = (~(Lgj7z6[79] & Xq4iw6)); +assign O35iw6 = (~(Zm2iw6 & Zy4iw6)); +assign Kbe8v6 = (~(C45iw6 & J45iw6)); +assign J45iw6 = (~(Lgj7z6[67] & Sr4iw6)); +assign C45iw6 = (~(Xl2iw6 & Zy4iw6)); +assign Dbe8v6 = (~(Q45iw6 & X45iw6)); +assign X45iw6 = (~(Lgj7z6[55] & Ns4iw6)); +assign Q45iw6 = (~(Vk2iw6 & Zy4iw6)); +assign Wae8v6 = (~(E55iw6 & L55iw6)); +assign L55iw6 = (~(Lgj7z6[43] & It4iw6)); +assign E55iw6 = (~(Tj2iw6 & Zy4iw6)); +assign Pae8v6 = (~(S55iw6 & Z55iw6)); +assign Z55iw6 = (~(Lgj7z6[31] & Du4iw6)); +assign S55iw6 = (~(Ri2iw6 & Zy4iw6)); +assign Iae8v6 = (~(G65iw6 & N65iw6)); +assign N65iw6 = (~(Lgj7z6[19] & Yu4iw6)); +assign G65iw6 = (~(Ph2iw6 & Zy4iw6)); +assign Bae8v6 = (~(U65iw6 & B75iw6)); +assign B75iw6 = (~(Lgj7z6[7] & Tv4iw6)); +assign U65iw6 = (~(Ng2iw6 & Zy4iw6)); +assign U9e8v6 = (~(I75iw6 & P75iw6)); +assign P75iw6 = (~(Ohj7z6[22] & W75iw6)); +assign W75iw6 = (~(Vw4iw6 & D85iw6)); +assign I75iw6 = (~(Jz2iw6 & Zy4iw6)); +assign N9e8v6 = (~(K85iw6 & R85iw6)); +assign R85iw6 = (~(Ohj7z6[54] & Y85iw6)); +assign Y85iw6 = (~(Ey4iw6 & D85iw6)); +assign K85iw6 = (~(Ay2iw6 & Zy4iw6)); +assign G9e8v6 = (~(F95iw6 & M95iw6)); +assign M95iw6 = (~(Lgj7z6[186] & Jj4iw6)); +assign Jj4iw6 = (~(Rw2iw6 & Bqi7z6[2])); +assign F95iw6 = (~(T95iw6 & Rw2iw6)); +assign Z8e8v6 = (~(Aa5iw6 & Ha5iw6)); +assign Ha5iw6 = (~(Lgj7z6[174] & Lk4iw6)); +assign Lk4iw6 = (~(Pv2iw6 & Bqi7z6[2])); +assign Aa5iw6 = (~(T95iw6 & Pv2iw6)); +assign S8e8v6 = (~(Oa5iw6 & Va5iw6)); +assign Va5iw6 = (~(Lgj7z6[162] & Gl4iw6)); +assign Gl4iw6 = (~(Nu2iw6 & Bqi7z6[2])); +assign Oa5iw6 = (~(T95iw6 & Nu2iw6)); +assign L8e8v6 = (~(Cb5iw6 & Jb5iw6)); +assign Jb5iw6 = (~(Lgj7z6[150] & Bm4iw6)); +assign Bm4iw6 = (~(Lt2iw6 & Bqi7z6[2])); +assign Cb5iw6 = (~(T95iw6 & Lt2iw6)); +assign E8e8v6 = (~(Qb5iw6 & Xb5iw6)); +assign Xb5iw6 = (~(Lgj7z6[138] & Wm4iw6)); +assign Wm4iw6 = (~(Js2iw6 & Bqi7z6[2])); +assign Qb5iw6 = (~(T95iw6 & Js2iw6)); +assign X7e8v6 = (~(Ec5iw6 & Lc5iw6)); +assign Lc5iw6 = (~(Lgj7z6[126] & Rn4iw6)); +assign Rn4iw6 = (~(Hr2iw6 & Bqi7z6[2])); +assign Ec5iw6 = (~(T95iw6 & Hr2iw6)); +assign Q7e8v6 = (~(Sc5iw6 & Zc5iw6)); +assign Zc5iw6 = (~(Lgj7z6[114] & Mo4iw6)); +assign Mo4iw6 = (~(Fq2iw6 & Bqi7z6[2])); +assign Sc5iw6 = (~(T95iw6 & Fq2iw6)); +assign J7e8v6 = (~(Gd5iw6 & Nd5iw6)); +assign Nd5iw6 = (~(Lgj7z6[102] & Hp4iw6)); +assign Hp4iw6 = (~(Dp2iw6 & Bqi7z6[2])); +assign Gd5iw6 = (~(T95iw6 & Dp2iw6)); +assign C7e8v6 = (~(Ud5iw6 & Be5iw6)); +assign Be5iw6 = (~(Lgj7z6[90] & Cq4iw6)); +assign Cq4iw6 = (Wu3iw6 | Ie5iw6); +assign Ud5iw6 = (~(T95iw6 & Bo2iw6)); +assign V6e8v6 = (~(Pe5iw6 & We5iw6)); +assign We5iw6 = (~(Lgj7z6[78] & Xq4iw6)); +assign Xq4iw6 = (~(Zm2iw6 & Bqi7z6[2])); +assign Pe5iw6 = (~(T95iw6 & Zm2iw6)); +assign O6e8v6 = (~(Df5iw6 & Kf5iw6)); +assign Kf5iw6 = (~(Lgj7z6[66] & Sr4iw6)); +assign Sr4iw6 = (~(Xl2iw6 & Bqi7z6[2])); +assign Df5iw6 = (~(T95iw6 & Xl2iw6)); +assign H6e8v6 = (~(Rf5iw6 & Yf5iw6)); +assign Yf5iw6 = (~(Lgj7z6[54] & Ns4iw6)); +assign Ns4iw6 = (~(Vk2iw6 & Bqi7z6[2])); +assign Rf5iw6 = (~(T95iw6 & Vk2iw6)); +assign A6e8v6 = (~(Fg5iw6 & Mg5iw6)); +assign Mg5iw6 = (~(Lgj7z6[42] & It4iw6)); +assign It4iw6 = (~(Tj2iw6 & Bqi7z6[2])); +assign Fg5iw6 = (~(T95iw6 & Tj2iw6)); +assign T5e8v6 = (~(Tg5iw6 & Ah5iw6)); +assign Ah5iw6 = (~(Lgj7z6[30] & Du4iw6)); +assign Du4iw6 = (~(Ri2iw6 & Bqi7z6[2])); +assign Tg5iw6 = (~(T95iw6 & Ri2iw6)); +assign M5e8v6 = (~(Hh5iw6 & Oh5iw6)); +assign Oh5iw6 = (~(Lgj7z6[18] & Yu4iw6)); +assign Yu4iw6 = (~(Ph2iw6 & Bqi7z6[2])); +assign Hh5iw6 = (~(T95iw6 & Ph2iw6)); +assign F5e8v6 = (~(Vh5iw6 & Ci5iw6)); +assign Ci5iw6 = (~(Lgj7z6[6] & Tv4iw6)); +assign Tv4iw6 = (~(Ng2iw6 & Bqi7z6[2])); +assign Vh5iw6 = (~(T95iw6 & Ng2iw6)); +assign Y4e8v6 = (~(Ji5iw6 & Qi5iw6)); +assign Qi5iw6 = (~(Ohj7z6[21] & Xi5iw6)); +assign Xi5iw6 = (~(Vw4iw6 & Ej5iw6)); +assign Ji5iw6 = (~(T95iw6 & Jz2iw6)); +assign R4e8v6 = (~(Lj5iw6 & Sj5iw6)); +assign Sj5iw6 = (~(Ohj7z6[53] & Zj5iw6)); +assign Zj5iw6 = (~(Ey4iw6 & Ej5iw6)); +assign Lj5iw6 = (~(T95iw6 & Ay2iw6)); +assign K4e8v6 = (~(Gk5iw6 & Nk5iw6)); +assign Nk5iw6 = (~(Ohj7z6[20] & Uk5iw6)); +assign Uk5iw6 = (~(Vw4iw6 & Bl5iw6)); +assign Gk5iw6 = (~(Il5iw6 & Bl5iw6)); +assign D4e8v6 = (~(Pl5iw6 & Wl5iw6)); +assign Wl5iw6 = (~(Ohj7z6[52] & Dm5iw6)); +assign Dm5iw6 = (~(Ey4iw6 & Bl5iw6)); +assign Pl5iw6 = (~(Km5iw6 & Bl5iw6)); +assign W3e8v6 = (~(Rm5iw6 & Ym5iw6)); +assign Ym5iw6 = (~(Ohj7z6[19] & Fn5iw6)); +assign Fn5iw6 = (~(Vw4iw6 & Mn5iw6)); +assign Rm5iw6 = (~(Il5iw6 & Mn5iw6)); +assign P3e8v6 = (~(Tn5iw6 & Ao5iw6)); +assign Ao5iw6 = (~(Ohj7z6[51] & Ho5iw6)); +assign Ho5iw6 = (~(Ey4iw6 & Mn5iw6)); +assign Tn5iw6 = (~(Km5iw6 & Mn5iw6)); +assign I3e8v6 = (~(Oo5iw6 & Vo5iw6)); +assign Vo5iw6 = (~(Ohj7z6[18] & Cp5iw6)); +assign Cp5iw6 = (~(Vw4iw6 & Jp5iw6)); +assign Oo5iw6 = (~(Il5iw6 & Jp5iw6)); +assign B3e8v6 = (~(Qp5iw6 & Xp5iw6)); +assign Xp5iw6 = (~(Ohj7z6[50] & Eq5iw6)); +assign Eq5iw6 = (~(Ey4iw6 & Jp5iw6)); +assign Qp5iw6 = (~(Km5iw6 & Jp5iw6)); +assign U2e8v6 = (~(Lq5iw6 & Sq5iw6)); +assign Sq5iw6 = (~(Ohj7z6[17] & Zq5iw6)); +assign Zq5iw6 = (~(Vw4iw6 & Gr5iw6)); +assign Lq5iw6 = (~(Il5iw6 & Gr5iw6)); +assign N2e8v6 = (~(Nr5iw6 & Ur5iw6)); +assign Ur5iw6 = (~(Ohj7z6[49] & Bs5iw6)); +assign Bs5iw6 = (~(Ey4iw6 & Gr5iw6)); +assign Nr5iw6 = (~(Km5iw6 & Gr5iw6)); +assign G2e8v6 = (Ps5iw6 ? Is5iw6 : Dri7z6[16]); +assign Z1e8v6 = (Ps5iw6 ? Gr5iw6 : Dri7z6[17]); +assign S1e8v6 = (Ps5iw6 ? Jp5iw6 : Dri7z6[18]); +assign L1e8v6 = (Ps5iw6 ? Mn5iw6 : Dri7z6[19]); +assign E1e8v6 = (Ps5iw6 ? Bl5iw6 : Dri7z6[20]); +assign X0e8v6 = (Ps5iw6 ? Ej5iw6 : Dri7z6[21]); +assign Q0e8v6 = (Ps5iw6 ? D85iw6 : Dri7z6[22]); +assign J0e8v6 = (Ps5iw6 ? Cx4iw6 : Dri7z6[23]); +assign Ps5iw6 = (~(Kg4iw6 | Ie5iw6)); +assign C0e8v6 = (~(Ws5iw6 & Dt5iw6)); +assign Dt5iw6 = (~(Ohj7z6[16] & Kt5iw6)); +assign Kt5iw6 = (~(Vw4iw6 & Is5iw6)); +assign Vw4iw6 = (~(Mh4iw6 | Ie5iw6)); +assign Ws5iw6 = (~(Il5iw6 & Is5iw6)); +assign Il5iw6 = (Jz2iw6 & Bqi7z6[2]); +assign Vzd8v6 = (~(Rt5iw6 & Yt5iw6)); +assign Yt5iw6 = (~(Ohj7z6[48] & Fu5iw6)); +assign Fu5iw6 = (~(Ey4iw6 & Is5iw6)); +assign Ey4iw6 = (~(Oi4iw6 | Ie5iw6)); +assign Rt5iw6 = (~(Km5iw6 & Is5iw6)); +assign Km5iw6 = (Ay2iw6 & Bqi7z6[2]); +assign Ozd8v6 = (~(Mu5iw6 & Tu5iw6)); +assign Tu5iw6 = (~(Lgj7z6[185] & Av5iw6)); +assign Mu5iw6 = (~(Hv5iw6 & Rw2iw6)); +assign Hzd8v6 = (~(Ov5iw6 & Vv5iw6)); +assign Vv5iw6 = (~(Lgj7z6[173] & Cw5iw6)); +assign Ov5iw6 = (~(Hv5iw6 & Pv2iw6)); +assign Azd8v6 = (~(Jw5iw6 & Qw5iw6)); +assign Qw5iw6 = (~(Lgj7z6[161] & Xw5iw6)); +assign Jw5iw6 = (~(Hv5iw6 & Nu2iw6)); +assign Tyd8v6 = (~(Ex5iw6 & Lx5iw6)); +assign Lx5iw6 = (~(Lgj7z6[149] & Sx5iw6)); +assign Ex5iw6 = (~(Hv5iw6 & Lt2iw6)); +assign Myd8v6 = (~(Zx5iw6 & Gy5iw6)); +assign Gy5iw6 = (~(Lgj7z6[137] & Ny5iw6)); +assign Zx5iw6 = (~(Hv5iw6 & Js2iw6)); +assign Fyd8v6 = (~(Uy5iw6 & Bz5iw6)); +assign Bz5iw6 = (~(Lgj7z6[125] & Iz5iw6)); +assign Uy5iw6 = (~(Hv5iw6 & Hr2iw6)); +assign Yxd8v6 = (~(Pz5iw6 & Wz5iw6)); +assign Wz5iw6 = (~(Lgj7z6[113] & D06iw6)); +assign Pz5iw6 = (~(Hv5iw6 & Fq2iw6)); +assign Rxd8v6 = (~(K06iw6 & R06iw6)); +assign R06iw6 = (~(Lgj7z6[101] & Y06iw6)); +assign K06iw6 = (~(Hv5iw6 & Dp2iw6)); +assign Kxd8v6 = (~(F16iw6 & M16iw6)); +assign M16iw6 = (T16iw6 | A26iw6); +assign F16iw6 = (~(Hv5iw6 & Bo2iw6)); +assign Dxd8v6 = (~(H26iw6 & O26iw6)); +assign O26iw6 = (~(Lgj7z6[77] & V26iw6)); +assign H26iw6 = (~(Hv5iw6 & Zm2iw6)); +assign Wwd8v6 = (~(C36iw6 & J36iw6)); +assign J36iw6 = (~(Lgj7z6[65] & Q36iw6)); +assign C36iw6 = (~(Hv5iw6 & Xl2iw6)); +assign Pwd8v6 = (~(X36iw6 & E46iw6)); +assign E46iw6 = (~(Lgj7z6[53] & L46iw6)); +assign X36iw6 = (~(Hv5iw6 & Vk2iw6)); +assign Iwd8v6 = (~(S46iw6 & Z46iw6)); +assign Z46iw6 = (~(Lgj7z6[41] & G56iw6)); +assign S46iw6 = (~(Hv5iw6 & Tj2iw6)); +assign Bwd8v6 = (~(N56iw6 & U56iw6)); +assign U56iw6 = (~(Lgj7z6[29] & B66iw6)); +assign N56iw6 = (~(Hv5iw6 & Ri2iw6)); +assign Uvd8v6 = (~(I66iw6 & P66iw6)); +assign P66iw6 = (~(Lgj7z6[17] & W66iw6)); +assign I66iw6 = (~(Hv5iw6 & Ph2iw6)); +assign Nvd8v6 = (~(D76iw6 & K76iw6)); +assign K76iw6 = (~(Lgj7z6[5] & R76iw6)); +assign D76iw6 = (~(Hv5iw6 & Ng2iw6)); +assign Gvd8v6 = (~(Y76iw6 & F86iw6)); +assign F86iw6 = (~(Ohj7z6[15] & M86iw6)); +assign M86iw6 = (~(T86iw6 & Z0iov6)); +assign Y76iw6 = (~(Hv5iw6 & Jz2iw6)); +assign Zud8v6 = (~(A96iw6 & H96iw6)); +assign H96iw6 = (~(Ohj7z6[47] & O96iw6)); +assign O96iw6 = (~(V96iw6 & Z0iov6)); +assign A96iw6 = (~(Hv5iw6 & Ay2iw6)); +assign Sud8v6 = (~(Ca6iw6 & Ja6iw6)); +assign Ja6iw6 = (~(Lgj7z6[184] & Av5iw6)); +assign Ca6iw6 = (~(Qa6iw6 & Rw2iw6)); +assign Lud8v6 = (~(Xa6iw6 & Eb6iw6)); +assign Eb6iw6 = (~(Lgj7z6[172] & Cw5iw6)); +assign Xa6iw6 = (~(Qa6iw6 & Pv2iw6)); +assign Eud8v6 = (~(Lb6iw6 & Sb6iw6)); +assign Sb6iw6 = (~(Lgj7z6[160] & Xw5iw6)); +assign Lb6iw6 = (~(Qa6iw6 & Nu2iw6)); +assign Xtd8v6 = (~(Zb6iw6 & Gc6iw6)); +assign Gc6iw6 = (~(Lgj7z6[148] & Sx5iw6)); +assign Zb6iw6 = (~(Qa6iw6 & Lt2iw6)); +assign Qtd8v6 = (~(Nc6iw6 & Uc6iw6)); +assign Uc6iw6 = (~(Lgj7z6[136] & Ny5iw6)); +assign Nc6iw6 = (~(Qa6iw6 & Js2iw6)); +assign Jtd8v6 = (~(Bd6iw6 & Id6iw6)); +assign Id6iw6 = (~(Lgj7z6[124] & Iz5iw6)); +assign Bd6iw6 = (~(Qa6iw6 & Hr2iw6)); +assign Ctd8v6 = (~(Pd6iw6 & Wd6iw6)); +assign Wd6iw6 = (~(Lgj7z6[112] & D06iw6)); +assign Pd6iw6 = (~(Qa6iw6 & Fq2iw6)); +assign Vsd8v6 = (~(De6iw6 & Ke6iw6)); +assign Ke6iw6 = (~(Lgj7z6[100] & Y06iw6)); +assign De6iw6 = (~(Qa6iw6 & Dp2iw6)); +assign Osd8v6 = (~(Re6iw6 & Ye6iw6)); +assign Ye6iw6 = (Ff6iw6 | A26iw6); +assign Re6iw6 = (~(Qa6iw6 & Bo2iw6)); +assign Hsd8v6 = (~(Mf6iw6 & Tf6iw6)); +assign Tf6iw6 = (~(Lgj7z6[76] & V26iw6)); +assign Mf6iw6 = (~(Qa6iw6 & Zm2iw6)); +assign Asd8v6 = (~(Ag6iw6 & Hg6iw6)); +assign Hg6iw6 = (~(Lgj7z6[64] & Q36iw6)); +assign Ag6iw6 = (~(Qa6iw6 & Xl2iw6)); +assign Trd8v6 = (~(Og6iw6 & Vg6iw6)); +assign Vg6iw6 = (~(Lgj7z6[52] & L46iw6)); +assign Og6iw6 = (~(Qa6iw6 & Vk2iw6)); +assign Mrd8v6 = (~(Ch6iw6 & Jh6iw6)); +assign Jh6iw6 = (~(Lgj7z6[40] & G56iw6)); +assign Ch6iw6 = (~(Qa6iw6 & Tj2iw6)); +assign Frd8v6 = (~(Qh6iw6 & Xh6iw6)); +assign Xh6iw6 = (~(Lgj7z6[28] & B66iw6)); +assign Qh6iw6 = (~(Qa6iw6 & Ri2iw6)); +assign Yqd8v6 = (~(Ei6iw6 & Li6iw6)); +assign Li6iw6 = (~(Lgj7z6[16] & W66iw6)); +assign Ei6iw6 = (~(Qa6iw6 & Ph2iw6)); +assign Rqd8v6 = (~(Si6iw6 & Zi6iw6)); +assign Zi6iw6 = (~(Lgj7z6[4] & R76iw6)); +assign Si6iw6 = (~(Qa6iw6 & Ng2iw6)); +assign Kqd8v6 = (~(Gj6iw6 & Nj6iw6)); +assign Nj6iw6 = (~(Ohj7z6[14] & Uj6iw6)); +assign Uj6iw6 = (~(T86iw6 & Bk6iw6)); +assign Gj6iw6 = (~(Qa6iw6 & Jz2iw6)); +assign Dqd8v6 = (~(Ik6iw6 & Pk6iw6)); +assign Pk6iw6 = (~(Ohj7z6[46] & Wk6iw6)); +assign Wk6iw6 = (~(V96iw6 & Bk6iw6)); +assign Ik6iw6 = (~(Qa6iw6 & Ay2iw6)); +assign Wpd8v6 = (~(Dl6iw6 & Kl6iw6)); +assign Kl6iw6 = (~(Lgj7z6[183] & Av5iw6)); +assign Av5iw6 = (~(Rw2iw6 & Bqi7z6[1])); +assign Dl6iw6 = (~(Rl6iw6 & Rw2iw6)); +assign Ppd8v6 = (~(Yl6iw6 & Fm6iw6)); +assign Fm6iw6 = (~(Lgj7z6[171] & Cw5iw6)); +assign Cw5iw6 = (~(Pv2iw6 & Bqi7z6[1])); +assign Yl6iw6 = (~(Rl6iw6 & Pv2iw6)); +assign Ipd8v6 = (~(Mm6iw6 & Tm6iw6)); +assign Tm6iw6 = (~(Lgj7z6[159] & Xw5iw6)); +assign Xw5iw6 = (~(Nu2iw6 & Bqi7z6[1])); +assign Mm6iw6 = (~(Rl6iw6 & Nu2iw6)); +assign Bpd8v6 = (~(An6iw6 & Hn6iw6)); +assign Hn6iw6 = (~(Lgj7z6[147] & Sx5iw6)); +assign Sx5iw6 = (~(Lt2iw6 & Bqi7z6[1])); +assign An6iw6 = (~(Rl6iw6 & Lt2iw6)); +assign Uod8v6 = (~(On6iw6 & Vn6iw6)); +assign Vn6iw6 = (~(Lgj7z6[135] & Ny5iw6)); +assign Ny5iw6 = (~(Js2iw6 & Bqi7z6[1])); +assign On6iw6 = (~(Rl6iw6 & Js2iw6)); +assign Nod8v6 = (~(Co6iw6 & Jo6iw6)); +assign Jo6iw6 = (~(Lgj7z6[123] & Iz5iw6)); +assign Iz5iw6 = (~(Hr2iw6 & Bqi7z6[1])); +assign Co6iw6 = (~(Rl6iw6 & Hr2iw6)); +assign God8v6 = (~(Qo6iw6 & Xo6iw6)); +assign Xo6iw6 = (~(Lgj7z6[111] & D06iw6)); +assign D06iw6 = (~(Fq2iw6 & Bqi7z6[1])); +assign Qo6iw6 = (~(Rl6iw6 & Fq2iw6)); +assign Znd8v6 = (~(Ep6iw6 & Lp6iw6)); +assign Lp6iw6 = (~(Lgj7z6[99] & Y06iw6)); +assign Y06iw6 = (~(Dp2iw6 & Bqi7z6[1])); +assign Ep6iw6 = (~(Rl6iw6 & Dp2iw6)); +assign Snd8v6 = (~(Sp6iw6 & Zp6iw6)); +assign Zp6iw6 = (Gq6iw6 | A26iw6); +assign A26iw6 = (~(Wu3iw6 | Nq6iw6)); +assign Wu3iw6 = (!Bo2iw6); +assign Sp6iw6 = (~(Rl6iw6 & Bo2iw6)); +assign Lnd8v6 = (~(Uq6iw6 & Br6iw6)); +assign Br6iw6 = (~(Lgj7z6[75] & V26iw6)); +assign V26iw6 = (~(Zm2iw6 & Bqi7z6[1])); +assign Uq6iw6 = (~(Rl6iw6 & Zm2iw6)); +assign End8v6 = (~(Ir6iw6 & Pr6iw6)); +assign Pr6iw6 = (~(Lgj7z6[63] & Q36iw6)); +assign Q36iw6 = (~(Xl2iw6 & Bqi7z6[1])); +assign Ir6iw6 = (~(Rl6iw6 & Xl2iw6)); +assign Xmd8v6 = (~(Wr6iw6 & Ds6iw6)); +assign Ds6iw6 = (~(Lgj7z6[51] & L46iw6)); +assign L46iw6 = (~(Vk2iw6 & Bqi7z6[1])); +assign Wr6iw6 = (~(Rl6iw6 & Vk2iw6)); +assign Qmd8v6 = (~(Ks6iw6 & Rs6iw6)); +assign Rs6iw6 = (~(Lgj7z6[39] & G56iw6)); +assign G56iw6 = (~(Tj2iw6 & Bqi7z6[1])); +assign Ks6iw6 = (~(Rl6iw6 & Tj2iw6)); +assign Jmd8v6 = (~(Ys6iw6 & Ft6iw6)); +assign Ft6iw6 = (~(Lgj7z6[27] & B66iw6)); +assign B66iw6 = (~(Ri2iw6 & Bqi7z6[1])); +assign Ys6iw6 = (~(Rl6iw6 & Ri2iw6)); +assign Cmd8v6 = (~(Mt6iw6 & Tt6iw6)); +assign Tt6iw6 = (~(Lgj7z6[15] & W66iw6)); +assign W66iw6 = (~(Ph2iw6 & Bqi7z6[1])); +assign Mt6iw6 = (~(Rl6iw6 & Ph2iw6)); +assign Vld8v6 = (~(Au6iw6 & Hu6iw6)); +assign Hu6iw6 = (~(Lgj7z6[3] & R76iw6)); +assign R76iw6 = (~(Ng2iw6 & Bqi7z6[1])); +assign Au6iw6 = (~(Rl6iw6 & Ng2iw6)); +assign Old8v6 = (~(Ou6iw6 & Vu6iw6)); +assign Vu6iw6 = (~(Ohj7z6[13] & Cv6iw6)); +assign Cv6iw6 = (~(T86iw6 & Guhov6)); +assign Ou6iw6 = (~(Rl6iw6 & Jz2iw6)); +assign Hld8v6 = (~(Jv6iw6 & Qv6iw6)); +assign Qv6iw6 = (~(Ohj7z6[45] & Xv6iw6)); +assign Xv6iw6 = (~(V96iw6 & Guhov6)); +assign Jv6iw6 = (~(Rl6iw6 & Ay2iw6)); +assign Ald8v6 = (~(Ew6iw6 & Lw6iw6)); +assign Lw6iw6 = (~(Ohj7z6[12] & Sw6iw6)); +assign Sw6iw6 = (~(T86iw6 & Emhov6)); +assign Ew6iw6 = (~(Zw6iw6 & Emhov6)); +assign Tkd8v6 = (~(Gx6iw6 & Nx6iw6)); +assign Nx6iw6 = (~(Ohj7z6[44] & Ux6iw6)); +assign Ux6iw6 = (~(V96iw6 & Emhov6)); +assign Gx6iw6 = (~(By6iw6 & Emhov6)); +assign Mkd8v6 = (~(Iy6iw6 & Py6iw6)); +assign Py6iw6 = (~(Ohj7z6[11] & Wy6iw6)); +assign Wy6iw6 = (~(T86iw6 & Dz6iw6)); +assign Iy6iw6 = (~(Zw6iw6 & Dz6iw6)); +assign Fkd8v6 = (~(Kz6iw6 & Rz6iw6)); +assign Rz6iw6 = (~(Ohj7z6[43] & Yz6iw6)); +assign Yz6iw6 = (~(V96iw6 & Dz6iw6)); +assign Kz6iw6 = (~(By6iw6 & Dz6iw6)); +assign Yjd8v6 = (Kkd7v6 ? F07iw6 : N6dov6); +assign F07iw6 = (~(C4dov6 | C477v6)); +assign Rjd8v6 = (~(M07iw6 & T07iw6)); +assign T07iw6 = (~(Ohj7z6[10] & A17iw6)); +assign A17iw6 = (~(T86iw6 & H17iw6)); +assign M07iw6 = (~(Zw6iw6 & H17iw6)); +assign Kjd8v6 = (~(O17iw6 & V17iw6)); +assign V17iw6 = (~(Ohj7z6[42] & C27iw6)); +assign C27iw6 = (~(V96iw6 & H17iw6)); +assign O17iw6 = (~(By6iw6 & H17iw6)); +assign Djd8v6 = (X27iw6 ? Q27iw6 : J27iw6); +assign Q27iw6 = (Dtadt6 | Cr97z6); +assign Wid8v6 = (~(E37iw6 & L37iw6)); +assign L37iw6 = (~(Ohj7z6[9] & S37iw6)); +assign S37iw6 = (~(T86iw6 & J27iw6)); +assign E37iw6 = (~(Zw6iw6 & J27iw6)); +assign Pid8v6 = (~(Z37iw6 & G47iw6)); +assign G47iw6 = (~(Ohj7z6[41] & N47iw6)); +assign N47iw6 = (~(V96iw6 & J27iw6)); +assign Z37iw6 = (~(By6iw6 & J27iw6)); +assign Iid8v6 = (B57iw6 ? U47iw6 : Dri7z6[8]); +assign Bid8v6 = (B57iw6 ? J27iw6 : Dri7z6[9]); +assign Uhd8v6 = (B57iw6 ? H17iw6 : Dri7z6[10]); +assign Nhd8v6 = (B57iw6 ? Dz6iw6 : Dri7z6[11]); +assign Ghd8v6 = (B57iw6 ? Emhov6 : Dri7z6[12]); +assign Zgd8v6 = (B57iw6 ? Guhov6 : Dri7z6[13]); +assign Sgd8v6 = (B57iw6 ? Bk6iw6 : Dri7z6[14]); +assign Lgd8v6 = (B57iw6 ? Z0iov6 : Dri7z6[15]); +assign B57iw6 = (I57iw6 & Bqi7z6[1]); +assign I57iw6 = (!Kg4iw6); +assign Egd8v6 = (~(P57iw6 & W57iw6)); +assign W57iw6 = (~(Ohj7z6[8] & D67iw6)); +assign D67iw6 = (~(T86iw6 & U47iw6)); +assign T86iw6 = (K67iw6 & Bqi7z6[1]); +assign K67iw6 = (!Mh4iw6); +assign P57iw6 = (~(Zw6iw6 & U47iw6)); +assign Zw6iw6 = (Jz2iw6 & Bqi7z6[1]); +assign Xfd8v6 = (~(R67iw6 & Y67iw6)); +assign Y67iw6 = (~(Ohj7z6[40] & F77iw6)); +assign F77iw6 = (~(V96iw6 & U47iw6)); +assign V96iw6 = (M77iw6 & Bqi7z6[1]); +assign M77iw6 = (!Oi4iw6); +assign R67iw6 = (~(By6iw6 & U47iw6)); +assign By6iw6 = (Ay2iw6 & Bqi7z6[1]); +assign Qfd8v6 = (~(T77iw6 & A87iw6)); +assign A87iw6 = (~(Lgj7z6[182] & H87iw6)); +assign T77iw6 = (~(O87iw6 & Rw2iw6)); +assign Jfd8v6 = (~(V87iw6 & C97iw6)); +assign C97iw6 = (~(Lgj7z6[170] & J97iw6)); +assign V87iw6 = (~(O87iw6 & Pv2iw6)); +assign Cfd8v6 = (~(Q97iw6 & X97iw6)); +assign X97iw6 = (~(Lgj7z6[158] & Ea7iw6)); +assign Q97iw6 = (~(O87iw6 & Nu2iw6)); +assign Ved8v6 = (~(La7iw6 & Sa7iw6)); +assign Sa7iw6 = (~(Lgj7z6[146] & Za7iw6)); +assign La7iw6 = (~(O87iw6 & Lt2iw6)); +assign Oed8v6 = (~(Gb7iw6 & Nb7iw6)); +assign Nb7iw6 = (Ub7iw6 | Bc7iw6); +assign Gb7iw6 = (~(O87iw6 & Js2iw6)); +assign Hed8v6 = (~(Ic7iw6 & Pc7iw6)); +assign Pc7iw6 = (Wc7iw6 | Dd7iw6); +assign Ic7iw6 = (~(O87iw6 & Hr2iw6)); +assign Aed8v6 = (~(Kd7iw6 & Rd7iw6)); +assign Rd7iw6 = (Yd7iw6 | Fe7iw6); +assign Kd7iw6 = (~(O87iw6 & Fq2iw6)); +assign Tdd8v6 = (~(Me7iw6 & Te7iw6)); +assign Te7iw6 = (Af7iw6 | Hf7iw6); +assign Af7iw6 = (!Lgj7z6[98]); +assign Me7iw6 = (~(O87iw6 & Dp2iw6)); +assign Mdd8v6 = (~(Of7iw6 & Vf7iw6)); +assign Vf7iw6 = (~(Lgj7z6[86] & Cg7iw6)); +assign Of7iw6 = (~(O87iw6 & Bo2iw6)); +assign Fdd8v6 = (~(Jg7iw6 & Qg7iw6)); +assign Qg7iw6 = (~(Lgj7z6[74] & Xg7iw6)); +assign Jg7iw6 = (~(O87iw6 & Zm2iw6)); +assign Ycd8v6 = (~(Eh7iw6 & Lh7iw6)); +assign Lh7iw6 = (Sh7iw6 | Zh7iw6); +assign Eh7iw6 = (~(O87iw6 & Xl2iw6)); +assign Rcd8v6 = (~(Gi7iw6 & Ni7iw6)); +assign Ni7iw6 = (~(Lgj7z6[50] & Ui7iw6)); +assign Gi7iw6 = (~(O87iw6 & Vk2iw6)); +assign Kcd8v6 = (~(Bj7iw6 & Ij7iw6)); +assign Ij7iw6 = (~(Lgj7z6[38] & Pj7iw6)); +assign Bj7iw6 = (~(O87iw6 & Tj2iw6)); +assign Dcd8v6 = (~(Wj7iw6 & Dk7iw6)); +assign Dk7iw6 = (Kk7iw6 | Rk7iw6); +assign Wj7iw6 = (~(O87iw6 & Ri2iw6)); +assign Wbd8v6 = (~(Yk7iw6 & Fl7iw6)); +assign Fl7iw6 = (Ml7iw6 | Tl7iw6); +assign Yk7iw6 = (~(O87iw6 & Ph2iw6)); +assign Pbd8v6 = (~(Am7iw6 & Hm7iw6)); +assign Hm7iw6 = (~(Lgj7z6[2] & Om7iw6)); +assign Am7iw6 = (~(O87iw6 & Ng2iw6)); +assign Ibd8v6 = (~(Vm7iw6 & Cn7iw6)); +assign Cn7iw6 = (~(Ohj7z6[7] & Jn7iw6)); +assign Jn7iw6 = (~(Qn7iw6 & R62nv6)); +assign Vm7iw6 = (~(O87iw6 & Jz2iw6)); +assign Bbd8v6 = (~(Xn7iw6 & Eo7iw6)); +assign Eo7iw6 = (~(Ohj7z6[39] & Lo7iw6)); +assign Lo7iw6 = (~(So7iw6 & R62nv6)); +assign Xn7iw6 = (~(O87iw6 & Ay2iw6)); +assign Uad8v6 = (~(Zo7iw6 & Gp7iw6)); +assign Gp7iw6 = (~(Lgj7z6[181] & H87iw6)); +assign Zo7iw6 = (~(Np7iw6 & Rw2iw6)); +assign Nad8v6 = (~(Up7iw6 & Bq7iw6)); +assign Bq7iw6 = (~(Lgj7z6[169] & J97iw6)); +assign Up7iw6 = (~(Np7iw6 & Pv2iw6)); +assign Gad8v6 = (~(Iq7iw6 & Pq7iw6)); +assign Pq7iw6 = (~(Lgj7z6[157] & Ea7iw6)); +assign Iq7iw6 = (~(Np7iw6 & Nu2iw6)); +assign Z9d8v6 = (~(Wq7iw6 & Dr7iw6)); +assign Dr7iw6 = (~(Lgj7z6[145] & Za7iw6)); +assign Wq7iw6 = (~(Np7iw6 & Lt2iw6)); +assign S9d8v6 = (~(Kr7iw6 & Rr7iw6)); +assign Rr7iw6 = (Yr7iw6 | Bc7iw6); +assign Kr7iw6 = (~(Np7iw6 & Js2iw6)); +assign L9d8v6 = (~(Fs7iw6 & Ms7iw6)); +assign Ms7iw6 = (Ts7iw6 | Dd7iw6); +assign Fs7iw6 = (~(Np7iw6 & Hr2iw6)); +assign E9d8v6 = (~(At7iw6 & Ht7iw6)); +assign Ht7iw6 = (Ot7iw6 | Fe7iw6); +assign At7iw6 = (~(Np7iw6 & Fq2iw6)); +assign X8d8v6 = (~(Vt7iw6 & Cu7iw6)); +assign Cu7iw6 = (Ju7iw6 | Hf7iw6); +assign Vt7iw6 = (~(Np7iw6 & Dp2iw6)); +assign Q8d8v6 = (~(Qu7iw6 & Xu7iw6)); +assign Xu7iw6 = (~(Lgj7z6[85] & Cg7iw6)); +assign Qu7iw6 = (~(Np7iw6 & Bo2iw6)); +assign J8d8v6 = (~(Ev7iw6 & Lv7iw6)); +assign Lv7iw6 = (~(Lgj7z6[73] & Xg7iw6)); +assign Ev7iw6 = (~(Np7iw6 & Zm2iw6)); +assign C8d8v6 = (~(Sv7iw6 & Zv7iw6)); +assign Zv7iw6 = (Gw7iw6 | Zh7iw6); +assign Sv7iw6 = (~(Np7iw6 & Xl2iw6)); +assign V7d8v6 = (~(Nw7iw6 & Uw7iw6)); +assign Uw7iw6 = (~(Lgj7z6[49] & Ui7iw6)); +assign Nw7iw6 = (~(Np7iw6 & Vk2iw6)); +assign O7d8v6 = (~(Bx7iw6 & Ix7iw6)); +assign Ix7iw6 = (~(Lgj7z6[37] & Pj7iw6)); +assign Bx7iw6 = (~(Np7iw6 & Tj2iw6)); +assign H7d8v6 = (~(Px7iw6 & Wx7iw6)); +assign Wx7iw6 = (Dy7iw6 | Rk7iw6); +assign Px7iw6 = (~(Np7iw6 & Ri2iw6)); +assign A7d8v6 = (~(Ky7iw6 & Ry7iw6)); +assign Ry7iw6 = (Yy7iw6 | Tl7iw6); +assign Ky7iw6 = (~(Np7iw6 & Ph2iw6)); +assign T6d8v6 = (~(Fz7iw6 & Mz7iw6)); +assign Mz7iw6 = (~(Lgj7z6[1] & Om7iw6)); +assign Fz7iw6 = (~(Np7iw6 & Ng2iw6)); +assign M6d8v6 = (~(Tz7iw6 & A08iw6)); +assign A08iw6 = (~(Ohj7z6[6] & H08iw6)); +assign H08iw6 = (~(Qn7iw6 & K62nv6)); +assign Tz7iw6 = (~(Np7iw6 & Jz2iw6)); +assign F6d8v6 = (~(O08iw6 & V08iw6)); +assign V08iw6 = (~(Ohj7z6[38] & C18iw6)); +assign C18iw6 = (~(So7iw6 & K62nv6)); +assign O08iw6 = (~(Np7iw6 & Ay2iw6)); +assign Y5d8v6 = (~(J18iw6 & Q18iw6)); +assign Q18iw6 = (~(Lgj7z6[180] & H87iw6)); +assign H87iw6 = (~(Rw2iw6 & Bqi7z6[0])); +assign J18iw6 = (~(X18iw6 & Rw2iw6)); +assign Rw2iw6 = (E28iw6 & L28iw6); +assign R5d8v6 = (~(S28iw6 & Z28iw6)); +assign Z28iw6 = (~(Lgj7z6[168] & J97iw6)); +assign J97iw6 = (~(Pv2iw6 & Bqi7z6[0])); +assign S28iw6 = (~(X18iw6 & Pv2iw6)); +assign Pv2iw6 = (~(G38iw6 | N38iw6)); +assign K5d8v6 = (~(U38iw6 & B48iw6)); +assign B48iw6 = (~(Lgj7z6[156] & Ea7iw6)); +assign Ea7iw6 = (~(Nu2iw6 & Bqi7z6[0])); +assign U38iw6 = (~(X18iw6 & Nu2iw6)); +assign Nu2iw6 = (~(I48iw6 | P48iw6)); +assign D5d8v6 = (~(W48iw6 & D58iw6)); +assign D58iw6 = (~(Lgj7z6[144] & Za7iw6)); +assign Za7iw6 = (~(Lt2iw6 & Bqi7z6[0])); +assign W48iw6 = (~(X18iw6 & Lt2iw6)); +assign Lt2iw6 = (K58iw6 & R58iw6); +assign K58iw6 = (!G38iw6); +assign W4d8v6 = (~(Y58iw6 & F68iw6)); +assign F68iw6 = (M68iw6 | Bc7iw6); +assign Bc7iw6 = (Js2iw6 & Bqi7z6[0]); +assign Y58iw6 = (~(X18iw6 & Js2iw6)); +assign Js2iw6 = (E28iw6 & T68iw6); +assign E28iw6 = (!I48iw6); +assign P4d8v6 = (~(A78iw6 & H78iw6)); +assign H78iw6 = (O78iw6 | Dd7iw6); +assign Dd7iw6 = (Hr2iw6 & Bqi7z6[0]); +assign A78iw6 = (~(X18iw6 & Hr2iw6)); +assign Hr2iw6 = (~(G38iw6 | V78iw6)); +assign I4d8v6 = (~(C88iw6 & J88iw6)); +assign J88iw6 = (Q88iw6 | Fe7iw6); +assign Fe7iw6 = (Fq2iw6 & Bqi7z6[0]); +assign C88iw6 = (~(X18iw6 & Fq2iw6)); +assign Fq2iw6 = (~(I48iw6 | X88iw6)); +assign I48iw6 = (~(E98iw6 & L98iw6)); +assign L98iw6 = (S98iw6 & Toi7z6[10]); +assign E98iw6 = (Z98iw6 & Toi7z6[2]); +assign B4d8v6 = (~(Ga8iw6 & Na8iw6)); +assign Na8iw6 = (Ua8iw6 | Hf7iw6); +assign Hf7iw6 = (Dp2iw6 & Bqi7z6[0]); +assign Ga8iw6 = (~(X18iw6 & Dp2iw6)); +assign Dp2iw6 = (~(G38iw6 | X88iw6)); +assign G38iw6 = (~(Bb8iw6 & Ib8iw6)); +assign Ib8iw6 = (Toi7z6[10] & Pb8iw6); +assign Bb8iw6 = (Z98iw6 & S98iw6); +assign U3d8v6 = (~(Wb8iw6 & Dc8iw6)); +assign Dc8iw6 = (~(Lgj7z6[84] & Cg7iw6)); +assign Cg7iw6 = (~(Bo2iw6 & Bqi7z6[0])); +assign Wb8iw6 = (~(X18iw6 & Bo2iw6)); +assign Bo2iw6 = (~(N38iw6 | Kc8iw6)); +assign N3d8v6 = (~(Rc8iw6 & Yc8iw6)); +assign Yc8iw6 = (~(Lgj7z6[72] & Xg7iw6)); +assign Xg7iw6 = (~(Zm2iw6 & Bqi7z6[0])); +assign Rc8iw6 = (~(X18iw6 & Zm2iw6)); +assign Zm2iw6 = (~(N38iw6 | Fd8iw6)); +assign N38iw6 = (!L28iw6); +assign G3d8v6 = (~(Md8iw6 & Td8iw6)); +assign Td8iw6 = (Ae8iw6 | Zh7iw6); +assign Zh7iw6 = (Xl2iw6 & Bqi7z6[0]); +assign Md8iw6 = (~(X18iw6 & Xl2iw6)); +assign Xl2iw6 = (~(Kc8iw6 | P48iw6)); +assign Z2d8v6 = (~(He8iw6 & Oe8iw6)); +assign Oe8iw6 = (~(Lgj7z6[48] & Ui7iw6)); +assign Ui7iw6 = (~(Vk2iw6 & Bqi7z6[0])); +assign He8iw6 = (~(X18iw6 & Vk2iw6)); +assign Vk2iw6 = (Ve8iw6 & R58iw6); +assign S2d8v6 = (~(Cf8iw6 & Jf8iw6)); +assign Jf8iw6 = (~(Lgj7z6[36] & Pj7iw6)); +assign Pj7iw6 = (~(Tj2iw6 & Bqi7z6[0])); +assign Cf8iw6 = (~(X18iw6 & Tj2iw6)); +assign Tj2iw6 = (~(Kc8iw6 | V78iw6)); +assign L2d8v6 = (~(Qf8iw6 & Xf8iw6)); +assign Xf8iw6 = (Eg8iw6 | Rk7iw6); +assign Rk7iw6 = (Ri2iw6 & Bqi7z6[0]); +assign Qf8iw6 = (~(X18iw6 & Ri2iw6)); +assign Ri2iw6 = (~(Fd8iw6 | V78iw6)); +assign V78iw6 = (!T68iw6); +assign E2d8v6 = (~(Lg8iw6 & Sg8iw6)); +assign Sg8iw6 = (Zg8iw6 | Tl7iw6); +assign Tl7iw6 = (Ph2iw6 & Bqi7z6[0]); +assign Lg8iw6 = (~(X18iw6 & Ph2iw6)); +assign Ph2iw6 = (~(Kc8iw6 | X88iw6)); +assign Kc8iw6 = (Gh8iw6 | Pb8iw6); +assign X1d8v6 = (~(Nh8iw6 & Uh8iw6)); +assign Uh8iw6 = (~(Lgj7z6[0] & Om7iw6)); +assign Om7iw6 = (~(Ng2iw6 & Bqi7z6[0])); +assign Nh8iw6 = (~(X18iw6 & Ng2iw6)); +assign Ng2iw6 = (~(Fd8iw6 | X88iw6)); +assign Fd8iw6 = (!Ve8iw6); +assign Ve8iw6 = (Bi8iw6 & Pb8iw6); +assign Bi8iw6 = (!Gh8iw6); +assign Gh8iw6 = (~(Ii8iw6 & Z98iw6)); +assign Ii8iw6 = (Pi8iw6 & Toi7z6[10]); +assign Q1d8v6 = (~(Wi8iw6 & Dj8iw6)); +assign Dj8iw6 = (~(Ohj7z6[5] & Kj8iw6)); +assign Kj8iw6 = (~(Qn7iw6 & D62nv6)); +assign Wi8iw6 = (~(X18iw6 & Jz2iw6)); +assign J1d8v6 = (~(Rj8iw6 & Yj8iw6)); +assign Yj8iw6 = (~(Ohj7z6[37] & Fk8iw6)); +assign Fk8iw6 = (~(So7iw6 & D62nv6)); +assign Rj8iw6 = (~(X18iw6 & Ay2iw6)); +assign C1d8v6 = (Al8iw6 ? Tk8iw6 : Mk8iw6); +assign Al8iw6 = (Hl8iw6 & Esadt6); +assign Hl8iw6 = (Rabov6 & Mrnov6); +assign Mk8iw6 = (Cngdt6 & Ol8iw6); +assign V0d8v6 = (Vl8iw6 & Rabov6); +assign Vl8iw6 = (Tk8iw6 & Cm8iw6); +assign Cm8iw6 = (~(Jm8iw6 & Qm8iw6)); +assign Qm8iw6 = (~(Esadt6 & Mrnov6)); +assign O0d8v6 = (~(Xm8iw6 & En8iw6)); +assign En8iw6 = (~(Bxi7z6[4] & Ln8iw6)); +assign Ln8iw6 = (~(O8fov6 & W52nv6)); +assign Xm8iw6 = (~(C9fov6 & Sn8iw6)); +assign C9fov6 = (~(Zn8iw6 & Go8iw6)); +assign Go8iw6 = (~(Q7hov6 & Vm2nv6)); +assign Zn8iw6 = (~(Fe2nv6 & Ldo7v6)); +assign H0d8v6 = (~(No8iw6 & Uo8iw6)); +assign Uo8iw6 = (~(Ohj7z6[4] & Bp8iw6)); +assign Bp8iw6 = (~(Qn7iw6 & W52nv6)); +assign No8iw6 = (~(Ip8iw6 & W52nv6)); +assign A0d8v6 = (~(Pp8iw6 & Wp8iw6)); +assign Wp8iw6 = (~(Ohj7z6[36] & Dq8iw6)); +assign Dq8iw6 = (~(So7iw6 & W52nv6)); +assign Pp8iw6 = (~(Kq8iw6 & W52nv6)); +assign Tzc8v6 = (~(Rq8iw6 & Yq8iw6)); +assign Yq8iw6 = (~(Fr8iw6 & B8cdt6)); +assign Fr8iw6 = (Mr8iw6 & Tr8iw6); +assign Mr8iw6 = (~(As8iw6 & Hs8iw6)); +assign Hs8iw6 = (~(Mqhhw6 | Wwvnv6)); +assign As8iw6 = (Os8iw6 & Vs8iw6); +assign Vs8iw6 = (~(Dradt6 & Ct8iw6)); +assign Ct8iw6 = (Yqvnv6 | Kxvnv6); +assign Os8iw6 = (~(Yqvnv6 & Mzfhw6)); +assign Rq8iw6 = (~(W5fhw6 & Ez2et6)); +assign W5fhw6 = (~(Jt8iw6 | Qt8iw6)); +assign Qt8iw6 = (~(Gaonv6 | Zwehw6)); +assign Jt8iw6 = (I2jnv6 ? Gr2et6 : Xt8iw6); +assign Xt8iw6 = (Tfh7z6[0] | Tfh7z6[1]); +assign Mzc8v6 = (~(Eu8iw6 & Lu8iw6)); +assign Lu8iw6 = (~(Ohj7z6[3] & Su8iw6)); +assign Su8iw6 = (~(Qn7iw6 & P52nv6)); +assign Eu8iw6 = (~(Ip8iw6 & P52nv6)); +assign Fzc8v6 = (~(Zu8iw6 & Gv8iw6)); +assign Gv8iw6 = (~(Ohj7z6[35] & Nv8iw6)); +assign Nv8iw6 = (~(So7iw6 & P52nv6)); +assign Zu8iw6 = (~(Kq8iw6 & P52nv6)); +assign Yyc8v6 = (Uv8iw6 ? Apget6 : I52nv6); +assign Ryc8v6 = (~(Bw8iw6 & Iw8iw6)); +assign Iw8iw6 = (~(Ohj7z6[2] & Pw8iw6)); +assign Pw8iw6 = (~(Qn7iw6 & I52nv6)); +assign Bw8iw6 = (~(Ip8iw6 & I52nv6)); +assign Kyc8v6 = (~(Ww8iw6 & Dx8iw6)); +assign Dx8iw6 = (~(Ohj7z6[34] & Kx8iw6)); +assign Kx8iw6 = (~(So7iw6 & I52nv6)); +assign Ww8iw6 = (~(Kq8iw6 & I52nv6)); +assign Dyc8v6 = (Uv8iw6 ? Weget6 : B52nv6); +assign Uv8iw6 = (!Rx8iw6); +assign Wxc8v6 = (~(Yx8iw6 & Fy8iw6)); +assign Fy8iw6 = (~(Ohj7z6[1] & My8iw6)); +assign My8iw6 = (~(Qn7iw6 & B52nv6)); +assign Yx8iw6 = (~(Ip8iw6 & B52nv6)); +assign Pxc8v6 = (~(Ty8iw6 & Az8iw6)); +assign Az8iw6 = (~(Ohj7z6[33] & Hz8iw6)); +assign Hz8iw6 = (~(So7iw6 & B52nv6)); +assign Ty8iw6 = (~(Kq8iw6 & B52nv6)); +assign Ixc8v6 = (!Oz8iw6); +assign Oz8iw6 = (J09iw6 ? C09iw6 : Vz8iw6); +assign Bxc8v6 = (~(Q09iw6 & X09iw6)); +assign X09iw6 = (E19iw6 | L19iw6); +assign Q09iw6 = (~(J09iw6 & Hyj7z6[6])); +assign Uwc8v6 = (~(S19iw6 & Z19iw6)); +assign Z19iw6 = (B52nv6 | E19iw6); +assign E19iw6 = (~(G29iw6 & Orhov6)); +assign G29iw6 = (N29iw6 & I52nv6); +assign S19iw6 = (~(J09iw6 & Hyj7z6[4])); +assign Nwc8v6 = (~(U29iw6 & B39iw6)); +assign B39iw6 = (~(I39iw6 & P39iw6)); +assign U29iw6 = (~(J09iw6 & Hyj7z6[2])); +assign Gwc8v6 = (~(W39iw6 & D49iw6)); +assign D49iw6 = (~(K49iw6 & P39iw6)); +assign W39iw6 = (~(J09iw6 & Hyj7z6[0])); +assign Zvc8v6 = (Rx8iw6 ? U42nv6 : Phget6); +assign Rx8iw6 = (R49iw6 & Y49iw6); +assign Y49iw6 = (F59iw6 & Dtj7z6[4]); +assign F59iw6 = (M59iw6 & T59iw6); +assign R49iw6 = (Hc3iw6 & Dtj7z6[2]); +assign Svc8v6 = (~(A69iw6 & H69iw6)); +assign H69iw6 = (~(O69iw6 & V69iw6)); +assign V69iw6 = (C79iw6 & J79iw6); +assign O69iw6 = (Q79iw6 & Jjbdt6); +assign A69iw6 = (~(X79iw6 & E89iw6)); +assign E89iw6 = (~(L89iw6 & C79iw6)); +assign C79iw6 = (S89iw6 & Jolov6); +assign S89iw6 = (~(Gr2et6 & Puphw6)); +assign L89iw6 = (Q79iw6 & J79iw6); +assign J79iw6 = (~(Zgnov6 & J2cdt6)); +assign Zgnov6 = (Z89iw6 & G99iw6); +assign G99iw6 = (~(Z7edt6 | Tnzdt6)); +assign Z89iw6 = (Ibe7z6[4] & N99iw6); +assign Q79iw6 = (U99iw6 & Ba9iw6); +assign Ba9iw6 = (~(Ia9iw6 & Eyknv6)); +assign Ia9iw6 = (O5a7z6 & Venov6); +assign U99iw6 = (Pa9iw6 & Lhfov6); +assign Pa9iw6 = (~(Tnzdt6 & Wa9iw6)); +assign Wa9iw6 = (~(Db9iw6 & Kb9iw6)); +assign Db9iw6 = (~(Rb9iw6 & Kioov6)); +assign X79iw6 = (~(Yb9iw6 & Fc9iw6)); +assign Fc9iw6 = (~(Ibe7z6[4] & E3c7z6[1])); +assign Yb9iw6 = (Mc9iw6 & Tc9iw6); +assign Tc9iw6 = (Jolov6 | Ad9iw6); +assign Jolov6 = (Dxvnv6 | Hd9iw6); +assign Mc9iw6 = (~(Rkfov6 & Od9iw6)); +assign Rkfov6 = (!Lhfov6); +assign Lhfov6 = (~(Vd9iw6 & Ce9iw6)); +assign Vd9iw6 = (Qij7z6[2] & Gvvnv6); +assign Lvc8v6 = (~(Je9iw6 & Qe9iw6)); +assign Qe9iw6 = (Xe9iw6 & Ef9iw6); +assign Ef9iw6 = (~(Ohe7z6[5] & Okaov6)); +assign Okaov6 = (N4mov6 | Upfov6); +assign Xe9iw6 = (Lf9iw6 & Sf9iw6); +assign Sf9iw6 = (~(Jlaov6 & Zec7z6[5])); +assign Lf9iw6 = (~(Qlaov6 & Xumov6)); +assign Je9iw6 = (Zf9iw6 & Gg9iw6); +assign Gg9iw6 = (Smaov6 | Ivaov6); +assign Ivaov6 = (!Ng9iw6); +assign Zf9iw6 = (~(Gnaov6 & Zec7z6[21])); +assign Evc8v6 = (~(B5mov6 & Ug9iw6)); +assign Ug9iw6 = (~(Upfov6 & Ohe7z6[4])); +assign B5mov6 = (Bh9iw6 & Ih9iw6); +assign Ih9iw6 = (~(Ph9iw6 & X2mov6)); +assign Bh9iw6 = (Wh9iw6 & Di9iw6); +assign Di9iw6 = (~(Ki9iw6 & Z3mov6)); +assign Ki9iw6 = (G4mov6 ? Zec7z6[3] : Zec7z6[19]); +assign Wh9iw6 = (~(N4mov6 & Ohe7z6[3])); +assign Xuc8v6 = (~(Ri9iw6 & Yi9iw6)); +assign Yi9iw6 = (Fj9iw6 & Mj9iw6); +assign Mj9iw6 = (Smaov6 | Bvaov6); +assign Bvaov6 = (!Tj9iw6); +assign Smaov6 = (~(X2mov6 & Ak9iw6)); +assign Ak9iw6 = (~(Staov6 & Hk9iw6)); +assign Staov6 = (Ok9iw6 & Vk9iw6); +assign Vk9iw6 = (Cl9iw6 & Jl9iw6); +assign Ok9iw6 = (Ql9iw6 & Xl9iw6); +assign Fj9iw6 = (Em9iw6 & Lm9iw6); +assign Lm9iw6 = (~(Jlaov6 & Zec7z6[4])); +assign Jlaov6 = (~(P5mov6 | Gnaov6)); +assign Em9iw6 = (~(Qlaov6 & Pxmov6)); +assign Qlaov6 = (~(Hk9iw6 | Hulov6)); +assign Ri9iw6 = (Sm9iw6 & Zm9iw6); +assign Zm9iw6 = (~(Gnaov6 & Zec7z6[20])); +assign Gnaov6 = (!G4mov6); +assign Sm9iw6 = (Gn9iw6 & Nn9iw6); +assign Nn9iw6 = (~(Upfov6 & N0gdt6)); +assign Gn9iw6 = (~(N4mov6 & Ohe7z6[4])); +assign Quc8v6 = (~(U4mov6 & Un9iw6)); +assign Un9iw6 = (~(Upfov6 & Ohe7z6[1])); +assign U4mov6 = (Bo9iw6 & Io9iw6); +assign Io9iw6 = (~(Od9iw6 & X2mov6)); +assign X2mov6 = (~(Po9iw6 & Wo9iw6)); +assign Wo9iw6 = (~(Dp9iw6 & Hulov6)); +assign Dp9iw6 = (!Hk9iw6); +assign Hk9iw6 = (~(Kp9iw6 & Rp9iw6)); +assign Rp9iw6 = (Yp9iw6 & Kb9iw6); +assign Yp9iw6 = (Fiihw6 & Elphw6); +assign Kp9iw6 = (Fq9iw6 & Mq9iw6); +assign Fq9iw6 = (Tq9iw6 & Ar9iw6); +assign Ar9iw6 = (!M0mov6); +assign Bo9iw6 = (~(Hr9iw6 & Z3mov6)); +assign Z3mov6 = (!P5mov6); +assign Hr9iw6 = (G4mov6 ? Zec7z6[0] : Zec7z6[16]); +assign Juc8v6 = (Qu1ov6 ? Or9iw6 : Qmb7z6[1]); +assign Cuc8v6 = (Qu1ov6 ? Vr9iw6 : Qmb7z6[2]); +assign Vtc8v6 = (Qu1ov6 ? Cs9iw6 : Qmb7z6[3]); +assign Otc8v6 = (Qu1ov6 ? Js9iw6 : Qmb7z6[4]); +assign Htc8v6 = (Qu1ov6 ? Qs9iw6 : Qmb7z6[5]); +assign Atc8v6 = (Qu1ov6 ? Xs9iw6 : Qmb7z6[6]); +assign Tsc8v6 = (Qu1ov6 ? Zwlov6 : Qmb7z6[7]); +assign Msc8v6 = (Qu1ov6 ? Et9iw6 : Qmb7z6[8]); +assign Fsc8v6 = (Qu1ov6 ? Swlov6 : Qmb7z6[0]); +assign Rrc8v6 = (~(Lt9iw6 & St9iw6)); +assign St9iw6 = (~(Zt9iw6 & A0j7z6[0])); +assign Lt9iw6 = (Gu9iw6 & Nu9iw6); +assign Nu9iw6 = (~(Uu9iw6 & H1j7z6[0])); +assign Gu9iw6 = (~(Oldet6 & Bv9iw6)); +assign Krc8v6 = (~(Iv9iw6 & Pv9iw6)); +assign Pv9iw6 = (~(Zt9iw6 & A0j7z6[1])); +assign Iv9iw6 = (Wv9iw6 & Dw9iw6); +assign Dw9iw6 = (~(Uu9iw6 & H1j7z6[1])); +assign Wv9iw6 = (~(Akdet6 & Bv9iw6)); +assign Drc8v6 = (~(Kw9iw6 & Rw9iw6)); +assign Rw9iw6 = (~(Zt9iw6 & A0j7z6[2])); +assign Kw9iw6 = (Yw9iw6 & Fx9iw6); +assign Fx9iw6 = (~(Uu9iw6 & H1j7z6[2])); +assign Yw9iw6 = (~(Midet6 & Bv9iw6)); +assign Wqc8v6 = (~(Mx9iw6 & Tx9iw6)); +assign Tx9iw6 = (~(Zt9iw6 & A0j7z6[3])); +assign Mx9iw6 = (Ay9iw6 & Hy9iw6); +assign Hy9iw6 = (~(Uu9iw6 & H1j7z6[3])); +assign Ay9iw6 = (~(Ygdet6 & Bv9iw6)); +assign Pqc8v6 = (~(Oy9iw6 & Vy9iw6)); +assign Vy9iw6 = (~(Zt9iw6 & A0j7z6[4])); +assign Oy9iw6 = (Cz9iw6 & Jz9iw6); +assign Jz9iw6 = (~(Uu9iw6 & H1j7z6[4])); +assign Cz9iw6 = (~(Kfdet6 & Bv9iw6)); +assign Iqc8v6 = (~(Qz9iw6 & Xz9iw6)); +assign Xz9iw6 = (~(Zt9iw6 & A0j7z6[5])); +assign Qz9iw6 = (E0aiw6 & L0aiw6); +assign L0aiw6 = (~(Uu9iw6 & H1j7z6[5])); +assign E0aiw6 = (~(Wddet6 & Bv9iw6)); +assign Bqc8v6 = (~(S0aiw6 & Z0aiw6)); +assign Z0aiw6 = (~(Zt9iw6 & A0j7z6[6])); +assign S0aiw6 = (G1aiw6 & N1aiw6); +assign N1aiw6 = (~(Uu9iw6 & H1j7z6[6])); +assign G1aiw6 = (~(Icdet6 & Bv9iw6)); +assign Upc8v6 = (~(U1aiw6 & B2aiw6)); +assign B2aiw6 = (~(Zt9iw6 & A0j7z6[7])); +assign U1aiw6 = (I2aiw6 & P2aiw6); +assign P2aiw6 = (~(Uu9iw6 & H1j7z6[7])); +assign I2aiw6 = (~(Uadet6 & Bv9iw6)); +assign Npc8v6 = (~(W2aiw6 & D3aiw6)); +assign D3aiw6 = (~(Zt9iw6 & A0j7z6[8])); +assign W2aiw6 = (K3aiw6 & R3aiw6); +assign R3aiw6 = (~(Uu9iw6 & H1j7z6[8])); +assign K3aiw6 = (~(G9det6 & Bv9iw6)); +assign Gpc8v6 = (~(Y3aiw6 & F4aiw6)); +assign F4aiw6 = (~(Zt9iw6 & A0j7z6[9])); +assign Y3aiw6 = (M4aiw6 & T4aiw6); +assign T4aiw6 = (~(Uu9iw6 & H1j7z6[9])); +assign M4aiw6 = (~(S7det6 & Bv9iw6)); +assign Zoc8v6 = (~(A5aiw6 & H5aiw6)); +assign H5aiw6 = (~(Zt9iw6 & A0j7z6[10])); +assign A5aiw6 = (O5aiw6 & V5aiw6); +assign V5aiw6 = (~(Uu9iw6 & H1j7z6[10])); +assign O5aiw6 = (~(E6det6 & Bv9iw6)); +assign Soc8v6 = (~(C6aiw6 & J6aiw6)); +assign J6aiw6 = (~(Zt9iw6 & A0j7z6[11])); +assign C6aiw6 = (Q6aiw6 & X6aiw6); +assign X6aiw6 = (~(Uu9iw6 & H1j7z6[11])); +assign Q6aiw6 = (~(Q4det6 & Bv9iw6)); +assign Loc8v6 = (~(E7aiw6 & L7aiw6)); +assign L7aiw6 = (~(Zt9iw6 & A0j7z6[12])); +assign E7aiw6 = (S7aiw6 & Z7aiw6); +assign Z7aiw6 = (~(Uu9iw6 & H1j7z6[12])); +assign S7aiw6 = (~(C3det6 & Bv9iw6)); +assign Eoc8v6 = (~(G8aiw6 & N8aiw6)); +assign N8aiw6 = (~(Zt9iw6 & A0j7z6[13])); +assign G8aiw6 = (U8aiw6 & B9aiw6); +assign B9aiw6 = (~(Uu9iw6 & H1j7z6[13])); +assign U8aiw6 = (~(O1det6 & Bv9iw6)); +assign Xnc8v6 = (~(I9aiw6 & P9aiw6)); +assign P9aiw6 = (~(Zt9iw6 & A0j7z6[14])); +assign I9aiw6 = (W9aiw6 & Daaiw6); +assign Daaiw6 = (~(Uu9iw6 & H1j7z6[14])); +assign W9aiw6 = (~(A0det6 & Bv9iw6)); +assign Qnc8v6 = (~(Kaaiw6 & Raaiw6)); +assign Raaiw6 = (~(Zt9iw6 & A0j7z6[15])); +assign Kaaiw6 = (Yaaiw6 & Fbaiw6); +assign Fbaiw6 = (~(Uu9iw6 & H1j7z6[15])); +assign Yaaiw6 = (~(Mycet6 & Bv9iw6)); +assign Jnc8v6 = (~(Mbaiw6 & Tbaiw6)); +assign Tbaiw6 = (~(Zt9iw6 & A0j7z6[16])); +assign Mbaiw6 = (Acaiw6 & Hcaiw6); +assign Hcaiw6 = (~(Uu9iw6 & H1j7z6[16])); +assign Acaiw6 = (~(Ywcet6 & Bv9iw6)); +assign Cnc8v6 = (~(Ocaiw6 & Vcaiw6)); +assign Vcaiw6 = (~(Zt9iw6 & A0j7z6[17])); +assign Ocaiw6 = (Cdaiw6 & Jdaiw6); +assign Jdaiw6 = (~(Uu9iw6 & H1j7z6[17])); +assign Cdaiw6 = (~(Kvcet6 & Bv9iw6)); +assign Vmc8v6 = (~(Qdaiw6 & Xdaiw6)); +assign Xdaiw6 = (~(Zt9iw6 & A0j7z6[18])); +assign Qdaiw6 = (Eeaiw6 & Leaiw6); +assign Leaiw6 = (~(Uu9iw6 & H1j7z6[18])); +assign Eeaiw6 = (~(Wtcet6 & Bv9iw6)); +assign Omc8v6 = (~(Seaiw6 & Zeaiw6)); +assign Zeaiw6 = (~(Zt9iw6 & A0j7z6[19])); +assign Seaiw6 = (Gfaiw6 & Nfaiw6); +assign Nfaiw6 = (~(Uu9iw6 & H1j7z6[19])); +assign Gfaiw6 = (~(Iscet6 & Bv9iw6)); +assign Hmc8v6 = (~(Ufaiw6 & Bgaiw6)); +assign Bgaiw6 = (~(Zt9iw6 & A0j7z6[20])); +assign Ufaiw6 = (Igaiw6 & Pgaiw6); +assign Pgaiw6 = (~(Uu9iw6 & H1j7z6[20])); +assign Igaiw6 = (~(Uqcet6 & Bv9iw6)); +assign Amc8v6 = (~(Wgaiw6 & Dhaiw6)); +assign Dhaiw6 = (~(Zt9iw6 & A0j7z6[21])); +assign Wgaiw6 = (Khaiw6 & Rhaiw6); +assign Rhaiw6 = (~(Uu9iw6 & H1j7z6[21])); +assign Khaiw6 = (~(Gpcet6 & Bv9iw6)); +assign Tlc8v6 = (~(Yhaiw6 & Fiaiw6)); +assign Fiaiw6 = (~(Zt9iw6 & A0j7z6[22])); +assign Yhaiw6 = (Miaiw6 & Tiaiw6); +assign Tiaiw6 = (~(Uu9iw6 & H1j7z6[22])); +assign Miaiw6 = (~(Sncet6 & Bv9iw6)); +assign Mlc8v6 = (~(Ajaiw6 & Hjaiw6)); +assign Hjaiw6 = (~(Zt9iw6 & A0j7z6[23])); +assign Ajaiw6 = (Ojaiw6 & Vjaiw6); +assign Vjaiw6 = (~(Uu9iw6 & H1j7z6[23])); +assign Uu9iw6 = (~(Ckaiw6 | Jkaiw6)); +assign Ckaiw6 = (Zt9iw6 | Qkaiw6); +assign Ojaiw6 = (~(Emcet6 & Bv9iw6)); +assign Bv9iw6 = (Xkaiw6 & Jkaiw6); +assign Jkaiw6 = (~(Elaiw6 & Llaiw6)); +assign Llaiw6 = (!A0j7z6[0]); +assign Xkaiw6 = (~(Zt9iw6 | Qkaiw6)); +assign Zt9iw6 = (~(Slaiw6 | Qkaiw6)); +assign Qkaiw6 = (!Zlaiw6); +assign Flc8v6 = (~(Gmaiw6 & Nmaiw6)); +assign Nmaiw6 = (~(Umaiw6 & Macet6)); +assign Umaiw6 = (Bnaiw6 & Zlaiw6); +assign Bnaiw6 = (~(Inaiw6 & Pnaiw6)); +assign Pnaiw6 = (F52iw6 & Wnaiw6); +assign Inaiw6 = (Doaiw6 & Koaiw6); +assign Gmaiw6 = (~(Roaiw6 & Slaiw6)); +assign Roaiw6 = (Elaiw6 & A0j7z6[0]); +assign Ykc8v6 = (Yoaiw6 & Fpaiw6); +assign Fpaiw6 = (E9cet6 & A0j7z6[0]); +assign Yoaiw6 = (Slaiw6 & Elaiw6); +assign Elaiw6 = (Mpaiw6 & Tpaiw6); +assign Tpaiw6 = (Aqaiw6 & Hqaiw6); +assign Hqaiw6 = (Oqaiw6 & Vqaiw6); +assign Vqaiw6 = (~(Craiw6 | A0j7z6[7])); +assign Craiw6 = (A0j7z6[8] | A0j7z6[9]); +assign Oqaiw6 = (~(Jraiw6 | A0j7z6[4])); +assign Jraiw6 = (A0j7z6[5] | A0j7z6[6]); +assign Aqaiw6 = (Qraiw6 & Xraiw6); +assign Xraiw6 = (~(Esaiw6 | A0j7z6[23])); +assign Esaiw6 = (A0j7z6[2] | A0j7z6[3]); +assign Qraiw6 = (~(Lsaiw6 | A0j7z6[20])); +assign Lsaiw6 = (A0j7z6[21] | A0j7z6[22]); +assign Mpaiw6 = (Ssaiw6 & Zsaiw6); +assign Zsaiw6 = (Gtaiw6 & Ntaiw6); +assign Ntaiw6 = (~(Utaiw6 | A0j7z6[18])); +assign Utaiw6 = (A0j7z6[19] | A0j7z6[1]); +assign Gtaiw6 = (~(Buaiw6 | A0j7z6[15])); +assign Buaiw6 = (A0j7z6[16] | A0j7z6[17]); +assign Ssaiw6 = (Iuaiw6 & Puaiw6); +assign Puaiw6 = (~(Wuaiw6 | A0j7z6[12])); +assign Wuaiw6 = (A0j7z6[13] | A0j7z6[14]); +assign Iuaiw6 = (~(A0j7z6[10] | A0j7z6[11])); +assign Slaiw6 = (Dvaiw6 & Kvaiw6); +assign Kvaiw6 = (Rvaiw6 & Zlaiw6); +assign Zlaiw6 = (~(Yvaiw6 & Doaiw6)); +assign Yvaiw6 = (L28iw6 & Q22nv6); +assign Q22nv6 = (~(Fwaiw6 & Mwaiw6)); +assign Mwaiw6 = (Ie5iw6 & Dv3iw6); +assign Fwaiw6 = (Twaiw6 & Nq6iw6); +assign Rvaiw6 = (~(Axaiw6 & Hxaiw6)); +assign Hxaiw6 = (As67z6 | Cndet6); +assign Dvaiw6 = (A8cet6 & Ldo7v6); +assign Rkc8v6 = (Oxaiw6 | AUXFAULT[31]); +assign Oxaiw6 = (Bwi7z6[31] & Vxaiw6); +assign Vxaiw6 = (~(Cyaiw6 & X0hov6)); +assign Kkc8v6 = (Jyaiw6 | AUXFAULT[30]); +assign Jyaiw6 = (Bwi7z6[30] & Qyaiw6); +assign Qyaiw6 = (~(Cyaiw6 & Ro3iw6)); +assign Dkc8v6 = (Xyaiw6 | AUXFAULT[29]); +assign Xyaiw6 = (Bwi7z6[29] & Ezaiw6); +assign Ezaiw6 = (~(Cyaiw6 & Zz3iw6)); +assign Wjc8v6 = (Lzaiw6 | AUXFAULT[28]); +assign Lzaiw6 = (Bwi7z6[28] & Szaiw6); +assign Szaiw6 = (~(Cyaiw6 & W14iw6)); +assign Pjc8v6 = (Zzaiw6 | AUXFAULT[27]); +assign Zzaiw6 = (Bwi7z6[27] & G0biw6); +assign G0biw6 = (~(Cyaiw6 & H44iw6)); +assign Ijc8v6 = (N0biw6 | AUXFAULT[26]); +assign N0biw6 = (Bwi7z6[26] & U0biw6); +assign U0biw6 = (~(Cyaiw6 & E64iw6)); +assign Bjc8v6 = (B1biw6 | AUXFAULT[25]); +assign B1biw6 = (Bwi7z6[25] & I1biw6); +assign I1biw6 = (~(Cyaiw6 & Iklov6)); +assign Uic8v6 = (P1biw6 | AUXFAULT[24]); +assign P1biw6 = (Bwi7z6[24] & W1biw6); +assign W1biw6 = (~(Cyaiw6 & Wf4iw6)); +assign Cyaiw6 = (~(D2biw6 | Dv3iw6)); +assign Nic8v6 = (K2biw6 | AUXFAULT[23]); +assign K2biw6 = (Bwi7z6[23] & R2biw6); +assign R2biw6 = (~(Y2biw6 & Cx4iw6)); +assign Gic8v6 = (F3biw6 | AUXFAULT[22]); +assign F3biw6 = (Bwi7z6[22] & M3biw6); +assign M3biw6 = (~(Y2biw6 & D85iw6)); +assign Zhc8v6 = (T3biw6 | AUXFAULT[21]); +assign T3biw6 = (Bwi7z6[21] & A4biw6); +assign A4biw6 = (~(Y2biw6 & Ej5iw6)); +assign Shc8v6 = (H4biw6 | AUXFAULT[20]); +assign H4biw6 = (Bwi7z6[20] & O4biw6); +assign O4biw6 = (~(Y2biw6 & Bl5iw6)); +assign Lhc8v6 = (V4biw6 | AUXFAULT[19]); +assign V4biw6 = (Bwi7z6[19] & C5biw6); +assign C5biw6 = (~(Y2biw6 & Mn5iw6)); +assign Ehc8v6 = (J5biw6 | AUXFAULT[18]); +assign J5biw6 = (Bwi7z6[18] & Q5biw6); +assign Q5biw6 = (~(Y2biw6 & Jp5iw6)); +assign Xgc8v6 = (X5biw6 | AUXFAULT[17]); +assign X5biw6 = (Bwi7z6[17] & E6biw6); +assign E6biw6 = (~(Y2biw6 & Gr5iw6)); +assign Qgc8v6 = (L6biw6 | AUXFAULT[16]); +assign L6biw6 = (Bwi7z6[16] & S6biw6); +assign S6biw6 = (~(Y2biw6 & Is5iw6)); +assign Y2biw6 = (~(D2biw6 | Ie5iw6)); +assign Jgc8v6 = (Z6biw6 | AUXFAULT[15]); +assign Z6biw6 = (Bwi7z6[15] & G7biw6); +assign G7biw6 = (~(N7biw6 & Z0iov6)); +assign Cgc8v6 = (U7biw6 | AUXFAULT[14]); +assign U7biw6 = (Bwi7z6[14] & B8biw6); +assign B8biw6 = (~(N7biw6 & Bk6iw6)); +assign Vfc8v6 = (I8biw6 | AUXFAULT[13]); +assign I8biw6 = (Bwi7z6[13] & P8biw6); +assign P8biw6 = (~(N7biw6 & Guhov6)); +assign Ofc8v6 = (W8biw6 | AUXFAULT[12]); +assign W8biw6 = (Bwi7z6[12] & D9biw6); +assign D9biw6 = (~(N7biw6 & Emhov6)); +assign Hfc8v6 = (K9biw6 | AUXFAULT[11]); +assign K9biw6 = (Bwi7z6[11] & R9biw6); +assign R9biw6 = (~(N7biw6 & Dz6iw6)); +assign Afc8v6 = (Y9biw6 | AUXFAULT[10]); +assign Y9biw6 = (Bwi7z6[10] & Fabiw6); +assign Fabiw6 = (~(N7biw6 & H17iw6)); +assign Tec8v6 = (Mabiw6 | AUXFAULT[9]); +assign Mabiw6 = (Bwi7z6[9] & Tabiw6); +assign Tabiw6 = (~(N7biw6 & J27iw6)); +assign Mec8v6 = (Abbiw6 | AUXFAULT[8]); +assign Abbiw6 = (Bwi7z6[8] & Hbbiw6); +assign Hbbiw6 = (~(N7biw6 & U47iw6)); +assign N7biw6 = (Obbiw6 & Bqi7z6[1]); +assign Obbiw6 = (!D2biw6); +assign Fec8v6 = (Vbbiw6 | AUXFAULT[7]); +assign Vbbiw6 = (Bwi7z6[7] & Ccbiw6); +assign Ccbiw6 = (~(Jcbiw6 & R62nv6)); +assign Ydc8v6 = (Qcbiw6 | AUXFAULT[6]); +assign Qcbiw6 = (Bwi7z6[6] & Xcbiw6); +assign Xcbiw6 = (~(Jcbiw6 & K62nv6)); +assign Rdc8v6 = (Edbiw6 | AUXFAULT[5]); +assign Edbiw6 = (Bwi7z6[5] & Ldbiw6); +assign Ldbiw6 = (~(Jcbiw6 & D62nv6)); +assign Kdc8v6 = (Sdbiw6 | AUXFAULT[4]); +assign Sdbiw6 = (Bwi7z6[4] & Zdbiw6); +assign Zdbiw6 = (~(Jcbiw6 & W52nv6)); +assign Ddc8v6 = (Gebiw6 | AUXFAULT[3]); +assign Gebiw6 = (Bwi7z6[3] & Nebiw6); +assign Nebiw6 = (~(Jcbiw6 & P52nv6)); +assign Wcc8v6 = (Uebiw6 | AUXFAULT[2]); +assign Uebiw6 = (Bwi7z6[2] & Bfbiw6); +assign Bfbiw6 = (~(Jcbiw6 & I52nv6)); +assign Pcc8v6 = (Ifbiw6 | AUXFAULT[1]); +assign Ifbiw6 = (Bwi7z6[1] & Pfbiw6); +assign Pfbiw6 = (~(Jcbiw6 & B52nv6)); +assign Icc8v6 = (Wfbiw6 | AUXFAULT[0]); +assign Wfbiw6 = (Bwi7z6[0] & Dgbiw6); +assign Dgbiw6 = (~(Jcbiw6 & U42nv6)); +assign Jcbiw6 = (~(D2biw6 | Twaiw6)); +assign D2biw6 = (~(Kgbiw6 & L28iw6)); +assign Bcc8v6 = (Rgbiw6 ? U42nv6 : Dri7z6[0]); +assign Ubc8v6 = (Rgbiw6 ? B52nv6 : Dri7z6[1]); +assign Nbc8v6 = (Rgbiw6 ? I52nv6 : Dri7z6[2]); +assign Gbc8v6 = (Rgbiw6 ? P52nv6 : Dri7z6[3]); +assign Zac8v6 = (Rgbiw6 ? W52nv6 : Dri7z6[4]); +assign Sac8v6 = (Rgbiw6 ? D62nv6 : Dri7z6[5]); +assign Lac8v6 = (Rgbiw6 ? K62nv6 : Dri7z6[6]); +assign Eac8v6 = (Rgbiw6 ? R62nv6 : Dri7z6[7]); +assign Rgbiw6 = (~(Kg4iw6 | Twaiw6)); +assign Kg4iw6 = (~(Ygbiw6 & Toi7z6[3])); +assign Ygbiw6 = (~(N92iw6 | Toi7z6[2])); +assign X9c8v6 = (Fhbiw6 ? U42nv6 : Rbk7z6[0]); +assign Q9c8v6 = (Mhbiw6 ? U42nv6 : Zlk7z6[0]); +assign J9c8v6 = (Thbiw6 ? U42nv6 : Hwk7z6[0]); +assign C9c8v6 = (Aibiw6 ? U42nv6 : P6l7z6[0]); +assign V8c8v6 = (Hibiw6 ? U42nv6 : Xgl7z6[0]); +assign O8c8v6 = (Oibiw6 ? U42nv6 : Frl7z6[0]); +assign H8c8v6 = (Vibiw6 ? U42nv6 : N1m7z6[0]); +assign A8c8v6 = (Cjbiw6 ? U42nv6 : Vbm7z6[0]); +assign T7c8v6 = (Fhbiw6 ? B52nv6 : Rbk7z6[1]); +assign M7c8v6 = (Mhbiw6 ? B52nv6 : Zlk7z6[1]); +assign F7c8v6 = (Thbiw6 ? B52nv6 : Hwk7z6[1]); +assign Y6c8v6 = (Aibiw6 ? B52nv6 : P6l7z6[1]); +assign R6c8v6 = (Hibiw6 ? B52nv6 : Xgl7z6[1]); +assign K6c8v6 = (Oibiw6 ? B52nv6 : Frl7z6[1]); +assign D6c8v6 = (Vibiw6 ? B52nv6 : N1m7z6[1]); +assign W5c8v6 = (Cjbiw6 ? B52nv6 : Vbm7z6[1]); +assign P5c8v6 = (Fhbiw6 ? I52nv6 : Rbk7z6[2]); +assign I5c8v6 = (Mhbiw6 ? I52nv6 : Zlk7z6[2]); +assign B5c8v6 = (Thbiw6 ? I52nv6 : Hwk7z6[2]); +assign U4c8v6 = (Aibiw6 ? I52nv6 : P6l7z6[2]); +assign N4c8v6 = (Hibiw6 ? I52nv6 : Xgl7z6[2]); +assign G4c8v6 = (Oibiw6 ? I52nv6 : Frl7z6[2]); +assign Z3c8v6 = (Vibiw6 ? I52nv6 : N1m7z6[2]); +assign S3c8v6 = (Cjbiw6 ? I52nv6 : Vbm7z6[2]); +assign L3c8v6 = (Fhbiw6 ? P52nv6 : Rbk7z6[3]); +assign E3c8v6 = (Mhbiw6 ? P52nv6 : Zlk7z6[3]); +assign X2c8v6 = (Thbiw6 ? P52nv6 : Hwk7z6[3]); +assign Q2c8v6 = (Aibiw6 ? P52nv6 : P6l7z6[3]); +assign J2c8v6 = (Hibiw6 ? P52nv6 : Xgl7z6[3]); +assign C2c8v6 = (Oibiw6 ? P52nv6 : Frl7z6[3]); +assign V1c8v6 = (Vibiw6 ? P52nv6 : N1m7z6[3]); +assign O1c8v6 = (Cjbiw6 ? P52nv6 : Vbm7z6[3]); +assign H1c8v6 = (Fhbiw6 ? W52nv6 : Rbk7z6[4]); +assign A1c8v6 = (Mhbiw6 ? W52nv6 : Zlk7z6[4]); +assign T0c8v6 = (Thbiw6 ? W52nv6 : Hwk7z6[4]); +assign M0c8v6 = (Aibiw6 ? W52nv6 : P6l7z6[4]); +assign F0c8v6 = (Hibiw6 ? W52nv6 : Xgl7z6[4]); +assign Yzb8v6 = (Oibiw6 ? W52nv6 : Frl7z6[4]); +assign Rzb8v6 = (Vibiw6 ? W52nv6 : N1m7z6[4]); +assign Kzb8v6 = (Cjbiw6 ? W52nv6 : Vbm7z6[4]); +assign Dzb8v6 = (Fhbiw6 ? D62nv6 : Rbk7z6[5]); +assign Fhbiw6 = (Jjbiw6 & Qjbiw6); +assign Wyb8v6 = (Xjbiw6 ? D62nv6 : Dfk7z6[5]); +assign Pyb8v6 = (Mhbiw6 ? D62nv6 : Zlk7z6[5]); +assign Mhbiw6 = (Jjbiw6 & Ekbiw6); +assign Iyb8v6 = (Lkbiw6 ? D62nv6 : Lpk7z6[5]); +assign Byb8v6 = (Thbiw6 ? D62nv6 : Hwk7z6[5]); +assign Thbiw6 = (Jjbiw6 & Skbiw6); +assign Uxb8v6 = (Zkbiw6 ? D62nv6 : Tzk7z6[5]); +assign Nxb8v6 = (Aibiw6 ? D62nv6 : P6l7z6[5]); +assign Aibiw6 = (Jjbiw6 & Glbiw6); +assign Gxb8v6 = (Nlbiw6 ? D62nv6 : Bal7z6[5]); +assign Zwb8v6 = (Hibiw6 ? D62nv6 : Xgl7z6[5]); +assign Hibiw6 = (Jjbiw6 & Ulbiw6); +assign Swb8v6 = (Bmbiw6 ? D62nv6 : Jkl7z6[5]); +assign Lwb8v6 = (Oibiw6 ? D62nv6 : Frl7z6[5]); +assign Oibiw6 = (Jjbiw6 & Imbiw6); +assign Ewb8v6 = (Pmbiw6 ? D62nv6 : Rul7z6[5]); +assign Xvb8v6 = (Vibiw6 ? D62nv6 : N1m7z6[5]); +assign Vibiw6 = (Jjbiw6 & Wmbiw6); +assign Qvb8v6 = (Dnbiw6 ? D62nv6 : Z4m7z6[5]); +assign Jvb8v6 = (Cjbiw6 ? D62nv6 : Vbm7z6[5]); +assign Cjbiw6 = (Jjbiw6 & Knbiw6); +assign Jjbiw6 = (Hc3iw6 & Rnbiw6); +assign Cvb8v6 = (Ynbiw6 ? D62nv6 : Hfm7z6[5]); +assign Vub8v6 = (Xjbiw6 ? K62nv6 : Dfk7z6[6]); +assign Oub8v6 = (Lkbiw6 ? K62nv6 : Fobiw6); +assign Hub8v6 = (Zkbiw6 ? K62nv6 : Mobiw6); +assign Aub8v6 = (Nlbiw6 ? K62nv6 : Tobiw6); +assign Ttb8v6 = (Bmbiw6 ? K62nv6 : Jkl7z6[6]); +assign Mtb8v6 = (Pmbiw6 ? K62nv6 : Apbiw6); +assign Ftb8v6 = (Dnbiw6 ? K62nv6 : Hpbiw6); +assign Ysb8v6 = (Ynbiw6 ? K62nv6 : Opbiw6); +assign Rsb8v6 = (Xjbiw6 ? R62nv6 : Dfk7z6[7]); +assign Xjbiw6 = (~(Vpbiw6 | Cqbiw6)); +assign Ksb8v6 = (Lkbiw6 ? R62nv6 : Jqbiw6); +assign Lkbiw6 = (~(Vpbiw6 | Qqbiw6)); +assign Dsb8v6 = (Zkbiw6 ? R62nv6 : Xqbiw6); +assign Zkbiw6 = (~(Vpbiw6 | Erbiw6)); +assign Wrb8v6 = (Nlbiw6 ? R62nv6 : Lrbiw6); +assign Nlbiw6 = (~(Vpbiw6 | Srbiw6)); +assign Prb8v6 = (Bmbiw6 ? R62nv6 : Jkl7z6[7]); +assign Bmbiw6 = (~(Vpbiw6 | Zrbiw6)); +assign Irb8v6 = (Pmbiw6 ? R62nv6 : Gsbiw6); +assign Pmbiw6 = (Nsbiw6 & Imbiw6); +assign Brb8v6 = (Dnbiw6 ? R62nv6 : Usbiw6); +assign Dnbiw6 = (Nsbiw6 & Wmbiw6); +assign Nsbiw6 = (!Vpbiw6); +assign Uqb8v6 = (Ynbiw6 ? R62nv6 : Btbiw6); +assign Ynbiw6 = (~(Vpbiw6 | Itbiw6)); +assign Vpbiw6 = (~(Hc3iw6 & Ptbiw6)); +assign Nqb8v6 = (Wtbiw6 ? Rbk7z6[6] : U47iw6); +assign Gqb8v6 = (Dubiw6 ? Dfk7z6[8] : U47iw6); +assign Zpb8v6 = (Kubiw6 ? Zlk7z6[6] : U47iw6); +assign Spb8v6 = (Rubiw6 ? Lpk7z6[8] : U47iw6); +assign Lpb8v6 = (Yubiw6 ? Hwk7z6[6] : U47iw6); +assign Epb8v6 = (Fvbiw6 ? Tzk7z6[8] : U47iw6); +assign Xob8v6 = (Mvbiw6 ? P6l7z6[6] : U47iw6); +assign Qob8v6 = (Tvbiw6 ? Bal7z6[8] : U47iw6); +assign Job8v6 = (Awbiw6 ? Xgl7z6[6] : U47iw6); +assign Cob8v6 = (Hwbiw6 ? Jkl7z6[8] : U47iw6); +assign Vnb8v6 = (Owbiw6 ? Frl7z6[6] : U47iw6); +assign Onb8v6 = (Vwbiw6 ? Rul7z6[8] : U47iw6); +assign Hnb8v6 = (Cxbiw6 ? N1m7z6[6] : U47iw6); +assign Anb8v6 = (Jxbiw6 ? Z4m7z6[8] : U47iw6); +assign Tmb8v6 = (Qxbiw6 ? U47iw6 : Vbm7z6[6]); +assign Mmb8v6 = (Xxbiw6 ? U47iw6 : Hfm7z6[8]); +assign Fmb8v6 = (Wtbiw6 ? Rbk7z6[7] : J27iw6); +assign Ylb8v6 = (Dubiw6 ? Dfk7z6[9] : J27iw6); +assign Rlb8v6 = (Kubiw6 ? Zlk7z6[7] : J27iw6); +assign Klb8v6 = (Rubiw6 ? Eybiw6 : J27iw6); +assign Dlb8v6 = (Yubiw6 ? Hwk7z6[7] : J27iw6); +assign Wkb8v6 = (Fvbiw6 ? Lybiw6 : J27iw6); +assign Pkb8v6 = (Mvbiw6 ? P6l7z6[7] : J27iw6); +assign Ikb8v6 = (Tvbiw6 ? Sybiw6 : J27iw6); +assign Bkb8v6 = (Awbiw6 ? Xgl7z6[7] : J27iw6); +assign Ujb8v6 = (Hwbiw6 ? Jkl7z6[9] : J27iw6); +assign Njb8v6 = (Owbiw6 ? Frl7z6[7] : J27iw6); +assign Gjb8v6 = (Vwbiw6 ? Zybiw6 : J27iw6); +assign Zib8v6 = (Cxbiw6 ? N1m7z6[7] : J27iw6); +assign Sib8v6 = (Jxbiw6 ? Gzbiw6 : J27iw6); +assign Lib8v6 = (Qxbiw6 ? J27iw6 : Vbm7z6[7]); +assign Eib8v6 = (Xxbiw6 ? J27iw6 : Nzbiw6); +assign Xhb8v6 = (Wtbiw6 ? Rbk7z6[8] : H17iw6); +assign Qhb8v6 = (Dubiw6 ? Dfk7z6[10] : H17iw6); +assign Jhb8v6 = (Kubiw6 ? Zlk7z6[8] : H17iw6); +assign Chb8v6 = (Rubiw6 ? Uzbiw6 : H17iw6); +assign Vgb8v6 = (Yubiw6 ? Hwk7z6[8] : H17iw6); +assign Ogb8v6 = (Fvbiw6 ? B0ciw6 : H17iw6); +assign Hgb8v6 = (Mvbiw6 ? P6l7z6[8] : H17iw6); +assign Agb8v6 = (Tvbiw6 ? I0ciw6 : H17iw6); +assign Tfb8v6 = (Awbiw6 ? Xgl7z6[8] : H17iw6); +assign Mfb8v6 = (Hwbiw6 ? Jkl7z6[10] : H17iw6); +assign Ffb8v6 = (Owbiw6 ? Frl7z6[8] : H17iw6); +assign Yeb8v6 = (Vwbiw6 ? P0ciw6 : H17iw6); +assign Reb8v6 = (Cxbiw6 ? N1m7z6[8] : H17iw6); +assign Keb8v6 = (Jxbiw6 ? W0ciw6 : H17iw6); +assign Deb8v6 = (Qxbiw6 ? H17iw6 : Vbm7z6[8]); +assign Wdb8v6 = (Xxbiw6 ? H17iw6 : D1ciw6); +assign Pdb8v6 = (Wtbiw6 ? Rbk7z6[9] : Dz6iw6); +assign Wtbiw6 = (!K1ciw6); +assign Idb8v6 = (Dubiw6 ? Dfk7z6[11] : Dz6iw6); +assign Bdb8v6 = (Kubiw6 ? Zlk7z6[9] : Dz6iw6); +assign Kubiw6 = (!R1ciw6); +assign Ucb8v6 = (Rubiw6 ? Y1ciw6 : Dz6iw6); +assign Ncb8v6 = (Yubiw6 ? Hwk7z6[9] : Dz6iw6); +assign Yubiw6 = (!F2ciw6); +assign Gcb8v6 = (Fvbiw6 ? M2ciw6 : Dz6iw6); +assign Zbb8v6 = (Mvbiw6 ? P6l7z6[9] : Dz6iw6); +assign Mvbiw6 = (!T2ciw6); +assign Sbb8v6 = (Tvbiw6 ? A3ciw6 : Dz6iw6); +assign Lbb8v6 = (Awbiw6 ? Xgl7z6[9] : Dz6iw6); +assign Awbiw6 = (!H3ciw6); +assign Ebb8v6 = (Hwbiw6 ? Jkl7z6[11] : Dz6iw6); +assign Xab8v6 = (Owbiw6 ? Frl7z6[9] : Dz6iw6); +assign Owbiw6 = (!O3ciw6); +assign Qab8v6 = (Vwbiw6 ? V3ciw6 : Dz6iw6); +assign Vwbiw6 = (!C4ciw6); +assign Jab8v6 = (Cxbiw6 ? N1m7z6[9] : Dz6iw6); +assign Cxbiw6 = (!J4ciw6); +assign Cab8v6 = (Jxbiw6 ? Q4ciw6 : Dz6iw6); +assign V9b8v6 = (Qxbiw6 ? Dz6iw6 : Vbm7z6[9]); +assign O9b8v6 = (Xxbiw6 ? Dz6iw6 : X4ciw6); +assign H9b8v6 = (K1ciw6 ? Emhov6 : Rbk7z6[10]); +assign A9b8v6 = (E5ciw6 ? Emhov6 : Dfk7z6[12]); +assign T8b8v6 = (R1ciw6 ? Emhov6 : Zlk7z6[10]); +assign M8b8v6 = (S5ciw6 ? Emhov6 : L5ciw6); +assign F8b8v6 = (F2ciw6 ? Emhov6 : Hwk7z6[10]); +assign Y7b8v6 = (G6ciw6 ? Emhov6 : Z5ciw6); +assign R7b8v6 = (T2ciw6 ? Emhov6 : P6l7z6[10]); +assign K7b8v6 = (U6ciw6 ? Emhov6 : N6ciw6); +assign D7b8v6 = (H3ciw6 ? Emhov6 : Xgl7z6[10]); +assign W6b8v6 = (B7ciw6 ? Emhov6 : Jkl7z6[12]); +assign P6b8v6 = (O3ciw6 ? Emhov6 : Frl7z6[10]); +assign I6b8v6 = (C4ciw6 ? Emhov6 : I7ciw6); +assign B6b8v6 = (J4ciw6 ? Emhov6 : N1m7z6[10]); +assign U5b8v6 = (W7ciw6 ? Emhov6 : P7ciw6); +assign N5b8v6 = (Qxbiw6 ? Emhov6 : Vbm7z6[10]); +assign G5b8v6 = (Xxbiw6 ? Emhov6 : D8ciw6); +assign Z4b8v6 = (K1ciw6 ? Guhov6 : Rbk7z6[11]); +assign S4b8v6 = (E5ciw6 ? Guhov6 : Dfk7z6[13]); +assign L4b8v6 = (R1ciw6 ? Guhov6 : Zlk7z6[11]); +assign E4b8v6 = (S5ciw6 ? Guhov6 : K8ciw6); +assign X3b8v6 = (F2ciw6 ? Guhov6 : Hwk7z6[11]); +assign Q3b8v6 = (G6ciw6 ? Guhov6 : R8ciw6); +assign J3b8v6 = (T2ciw6 ? Guhov6 : P6l7z6[11]); +assign C3b8v6 = (U6ciw6 ? Guhov6 : Y8ciw6); +assign V2b8v6 = (H3ciw6 ? Guhov6 : Xgl7z6[11]); +assign O2b8v6 = (B7ciw6 ? Guhov6 : Jkl7z6[13]); +assign H2b8v6 = (O3ciw6 ? Guhov6 : Frl7z6[11]); +assign A2b8v6 = (C4ciw6 ? Guhov6 : F9ciw6); +assign T1b8v6 = (J4ciw6 ? Guhov6 : N1m7z6[11]); +assign M1b8v6 = (W7ciw6 ? Guhov6 : M9ciw6); +assign F1b8v6 = (Qxbiw6 ? Guhov6 : Vbm7z6[11]); +assign Y0b8v6 = (Xxbiw6 ? Guhov6 : T9ciw6); +assign R0b8v6 = (K1ciw6 ? Bk6iw6 : Rbk7z6[12]); +assign K0b8v6 = (E5ciw6 ? Bk6iw6 : Dfk7z6[14]); +assign D0b8v6 = (R1ciw6 ? Bk6iw6 : Zlk7z6[12]); +assign Wza8v6 = (S5ciw6 ? Bk6iw6 : Aaciw6); +assign Pza8v6 = (F2ciw6 ? Bk6iw6 : Hwk7z6[12]); +assign Iza8v6 = (G6ciw6 ? Bk6iw6 : Haciw6); +assign Bza8v6 = (T2ciw6 ? Bk6iw6 : P6l7z6[12]); +assign Uya8v6 = (U6ciw6 ? Bk6iw6 : Oaciw6); +assign Nya8v6 = (H3ciw6 ? Bk6iw6 : Xgl7z6[12]); +assign Gya8v6 = (B7ciw6 ? Bk6iw6 : Jkl7z6[14]); +assign Zxa8v6 = (O3ciw6 ? Bk6iw6 : Frl7z6[12]); +assign Sxa8v6 = (C4ciw6 ? Bk6iw6 : Vaciw6); +assign Lxa8v6 = (J4ciw6 ? Bk6iw6 : N1m7z6[12]); +assign Exa8v6 = (W7ciw6 ? Bk6iw6 : Cbciw6); +assign Xwa8v6 = (Qxbiw6 ? Bk6iw6 : Vbm7z6[12]); +assign Qwa8v6 = (Xxbiw6 ? Bk6iw6 : Jbciw6); +assign Jwa8v6 = (K1ciw6 ? Z0iov6 : Rbk7z6[13]); +assign K1ciw6 = (~(Qbciw6 | Cqbiw6)); +assign Cwa8v6 = (E5ciw6 ? Z0iov6 : Dfk7z6[15]); +assign Vva8v6 = (R1ciw6 ? Z0iov6 : Zlk7z6[13]); +assign R1ciw6 = (~(Qbciw6 | Qqbiw6)); +assign Ova8v6 = (S5ciw6 ? Z0iov6 : Xbciw6); +assign Hva8v6 = (F2ciw6 ? Z0iov6 : Hwk7z6[13]); +assign F2ciw6 = (~(Qbciw6 | Erbiw6)); +assign Ava8v6 = (G6ciw6 ? Z0iov6 : Ecciw6); +assign Tua8v6 = (T2ciw6 ? Z0iov6 : P6l7z6[13]); +assign T2ciw6 = (~(Qbciw6 | Srbiw6)); +assign Mua8v6 = (U6ciw6 ? Z0iov6 : Lcciw6); +assign Fua8v6 = (H3ciw6 ? Z0iov6 : Xgl7z6[13]); +assign H3ciw6 = (~(Qbciw6 | Zrbiw6)); +assign Yta8v6 = (B7ciw6 ? Z0iov6 : Jkl7z6[15]); +assign Rta8v6 = (O3ciw6 ? Z0iov6 : Frl7z6[13]); +assign O3ciw6 = (~(Qbciw6 | Scciw6)); +assign Kta8v6 = (C4ciw6 ? Z0iov6 : Zcciw6); +assign Dta8v6 = (J4ciw6 ? Z0iov6 : N1m7z6[13]); +assign J4ciw6 = (~(Qbciw6 | Gdciw6)); +assign Wsa8v6 = (W7ciw6 ? Z0iov6 : Ndciw6); +assign Psa8v6 = (Qxbiw6 ? Z0iov6 : Vbm7z6[13]); +assign Qxbiw6 = (~(Qbciw6 | Itbiw6)); +assign Qbciw6 = (~(Pvj7z6[1] & Rnbiw6)); +assign Isa8v6 = (Xxbiw6 ? Z0iov6 : Udciw6); +assign Bsa8v6 = (Beciw6 ? Is5iw6 : Rbk7z6[14]); +assign Ura8v6 = (Dubiw6 ? Dfk7z6[16] : Is5iw6); +assign Nra8v6 = (Ieciw6 ? Is5iw6 : Zlk7z6[14]); +assign Gra8v6 = (Rubiw6 ? Lpk7z6[16] : Is5iw6); +assign Zqa8v6 = (Peciw6 ? Is5iw6 : Hwk7z6[14]); +assign Sqa8v6 = (Fvbiw6 ? Tzk7z6[16] : Is5iw6); +assign Lqa8v6 = (Weciw6 ? Is5iw6 : P6l7z6[14]); +assign Eqa8v6 = (Tvbiw6 ? Bal7z6[16] : Is5iw6); +assign Xpa8v6 = (Dfciw6 ? Is5iw6 : Xgl7z6[14]); +assign Qpa8v6 = (Hwbiw6 ? Jkl7z6[16] : Is5iw6); +assign Jpa8v6 = (Kfciw6 ? Is5iw6 : Frl7z6[14]); +assign Cpa8v6 = (C4ciw6 ? Is5iw6 : Rul7z6[16]); +assign Voa8v6 = (Rfciw6 ? Is5iw6 : N1m7z6[14]); +assign Ooa8v6 = (Jxbiw6 ? Z4m7z6[16] : Is5iw6); +assign Hoa8v6 = (Yfciw6 ? Is5iw6 : Vbm7z6[14]); +assign Aoa8v6 = (Fgciw6 ? Hfm7z6[16] : Is5iw6); +assign Tna8v6 = (Beciw6 ? Gr5iw6 : Rbk7z6[15]); +assign Mna8v6 = (Dubiw6 ? Dfk7z6[17] : Gr5iw6); +assign Fna8v6 = (Ieciw6 ? Gr5iw6 : Zlk7z6[15]); +assign Yma8v6 = (Rubiw6 ? Mgciw6 : Gr5iw6); +assign Rma8v6 = (Peciw6 ? Gr5iw6 : Hwk7z6[15]); +assign Kma8v6 = (Fvbiw6 ? Tgciw6 : Gr5iw6); +assign Dma8v6 = (Weciw6 ? Gr5iw6 : P6l7z6[15]); +assign Wla8v6 = (Tvbiw6 ? Ahciw6 : Gr5iw6); +assign Pla8v6 = (Dfciw6 ? Gr5iw6 : Xgl7z6[15]); +assign Ila8v6 = (Hwbiw6 ? Jkl7z6[17] : Gr5iw6); +assign Bla8v6 = (Kfciw6 ? Gr5iw6 : Frl7z6[15]); +assign Uka8v6 = (C4ciw6 ? Gr5iw6 : Hhciw6); +assign Nka8v6 = (Rfciw6 ? Gr5iw6 : N1m7z6[15]); +assign Gka8v6 = (Jxbiw6 ? Ohciw6 : Gr5iw6); +assign Zja8v6 = (Yfciw6 ? Gr5iw6 : Vbm7z6[15]); +assign Sja8v6 = (Fgciw6 ? Vhciw6 : Gr5iw6); +assign Fgciw6 = (!Xxbiw6); +assign Lja8v6 = (Beciw6 ? Jp5iw6 : Rbk7z6[16]); +assign Eja8v6 = (Dubiw6 ? Dfk7z6[18] : Jp5iw6); +assign Xia8v6 = (Ieciw6 ? Jp5iw6 : Zlk7z6[16]); +assign Qia8v6 = (Rubiw6 ? Ciciw6 : Jp5iw6); +assign Jia8v6 = (Peciw6 ? Jp5iw6 : Hwk7z6[16]); +assign Cia8v6 = (Fvbiw6 ? Jiciw6 : Jp5iw6); +assign Vha8v6 = (Weciw6 ? Jp5iw6 : P6l7z6[16]); +assign Oha8v6 = (Tvbiw6 ? Qiciw6 : Jp5iw6); +assign Hha8v6 = (Dfciw6 ? Jp5iw6 : Xgl7z6[16]); +assign Aha8v6 = (Hwbiw6 ? Jkl7z6[18] : Jp5iw6); +assign Tga8v6 = (Kfciw6 ? Jp5iw6 : Frl7z6[16]); +assign Mga8v6 = (C4ciw6 ? Jp5iw6 : Xiciw6); +assign Fga8v6 = (Rfciw6 ? Jp5iw6 : N1m7z6[16]); +assign Yfa8v6 = (Jxbiw6 ? Ejciw6 : Jp5iw6); +assign Rfa8v6 = (Yfciw6 ? Jp5iw6 : Vbm7z6[16]); +assign Kfa8v6 = (Xxbiw6 ? Jp5iw6 : Ljciw6); +assign Dfa8v6 = (Beciw6 ? Mn5iw6 : Rbk7z6[17]); +assign Wea8v6 = (Dubiw6 ? Dfk7z6[19] : Mn5iw6); +assign Dubiw6 = (!E5ciw6); +assign Pea8v6 = (Ieciw6 ? Mn5iw6 : Zlk7z6[17]); +assign Iea8v6 = (Rubiw6 ? Sjciw6 : Mn5iw6); +assign Rubiw6 = (!S5ciw6); +assign Bea8v6 = (Peciw6 ? Mn5iw6 : Hwk7z6[17]); +assign Uda8v6 = (Fvbiw6 ? Zjciw6 : Mn5iw6); +assign Fvbiw6 = (!G6ciw6); +assign Nda8v6 = (Weciw6 ? Mn5iw6 : P6l7z6[17]); +assign Gda8v6 = (Tvbiw6 ? Gkciw6 : Mn5iw6); +assign Tvbiw6 = (!U6ciw6); +assign Zca8v6 = (Dfciw6 ? Mn5iw6 : Xgl7z6[17]); +assign Sca8v6 = (Hwbiw6 ? Jkl7z6[19] : Mn5iw6); +assign Hwbiw6 = (!B7ciw6); +assign Lca8v6 = (Kfciw6 ? Mn5iw6 : Frl7z6[17]); +assign Eca8v6 = (C4ciw6 ? Mn5iw6 : Nkciw6); +assign Xba8v6 = (Rfciw6 ? Mn5iw6 : N1m7z6[17]); +assign Qba8v6 = (Jxbiw6 ? Ukciw6 : Mn5iw6); +assign Jxbiw6 = (!W7ciw6); +assign Jba8v6 = (Yfciw6 ? Mn5iw6 : Vbm7z6[17]); +assign Cba8v6 = (Xxbiw6 ? Mn5iw6 : Blciw6); +assign Vaa8v6 = (Beciw6 ? Bl5iw6 : Rbk7z6[18]); +assign Oaa8v6 = (E5ciw6 ? Bl5iw6 : Dfk7z6[20]); +assign Haa8v6 = (Ieciw6 ? Bl5iw6 : Zlk7z6[18]); +assign Aaa8v6 = (S5ciw6 ? Bl5iw6 : Ilciw6); +assign T9a8v6 = (Peciw6 ? Bl5iw6 : Hwk7z6[18]); +assign M9a8v6 = (G6ciw6 ? Bl5iw6 : Plciw6); +assign F9a8v6 = (Weciw6 ? Bl5iw6 : P6l7z6[18]); +assign Y8a8v6 = (U6ciw6 ? Bl5iw6 : Wlciw6); +assign R8a8v6 = (Dfciw6 ? Bl5iw6 : Xgl7z6[18]); +assign K8a8v6 = (B7ciw6 ? Bl5iw6 : Jkl7z6[20]); +assign D8a8v6 = (Kfciw6 ? Bl5iw6 : Frl7z6[18]); +assign W7a8v6 = (C4ciw6 ? Bl5iw6 : Dmciw6); +assign P7a8v6 = (Rfciw6 ? Bl5iw6 : N1m7z6[18]); +assign I7a8v6 = (W7ciw6 ? Bl5iw6 : Kmciw6); +assign B7a8v6 = (Yfciw6 ? Bl5iw6 : Vbm7z6[18]); +assign U6a8v6 = (Xxbiw6 ? Bl5iw6 : Rmciw6); +assign N6a8v6 = (Beciw6 ? Ej5iw6 : Rbk7z6[19]); +assign Beciw6 = (~(Ymciw6 | Cqbiw6)); +assign G6a8v6 = (E5ciw6 ? Ej5iw6 : Dfk7z6[21]); +assign Z5a8v6 = (Ieciw6 ? Ej5iw6 : Zlk7z6[19]); +assign Ieciw6 = (~(Ymciw6 | Qqbiw6)); +assign S5a8v6 = (S5ciw6 ? Ej5iw6 : Fnciw6); +assign L5a8v6 = (Peciw6 ? Ej5iw6 : Hwk7z6[19]); +assign Peciw6 = (~(Ymciw6 | Erbiw6)); +assign E5a8v6 = (G6ciw6 ? Ej5iw6 : Mnciw6); +assign X4a8v6 = (Weciw6 ? Ej5iw6 : P6l7z6[19]); +assign Weciw6 = (~(Ymciw6 | Srbiw6)); +assign Q4a8v6 = (U6ciw6 ? Ej5iw6 : Tnciw6); +assign J4a8v6 = (Dfciw6 ? Ej5iw6 : Xgl7z6[19]); +assign Dfciw6 = (~(Ymciw6 | Zrbiw6)); +assign C4a8v6 = (B7ciw6 ? Ej5iw6 : Jkl7z6[21]); +assign V3a8v6 = (Kfciw6 ? Ej5iw6 : Frl7z6[19]); +assign Kfciw6 = (~(Ymciw6 | Scciw6)); +assign O3a8v6 = (C4ciw6 ? Ej5iw6 : Aociw6); +assign H3a8v6 = (Rfciw6 ? Ej5iw6 : N1m7z6[19]); +assign Rfciw6 = (~(Ymciw6 | Gdciw6)); +assign Ymciw6 = (!Hociw6); +assign A3a8v6 = (W7ciw6 ? Ej5iw6 : Oociw6); +assign T2a8v6 = (Yfciw6 ? Ej5iw6 : Vbm7z6[19]); +assign Yfciw6 = (Hociw6 & Knbiw6); +assign Hociw6 = (Pvj7z6[2] & Rnbiw6); +assign Rnbiw6 = (!Vociw6); +assign M2a8v6 = (Xxbiw6 ? Ej5iw6 : Cpciw6); +assign F2a8v6 = (E5ciw6 ? D85iw6 : Dfk7z6[22]); +assign Y1a8v6 = (S5ciw6 ? D85iw6 : Jpciw6); +assign R1a8v6 = (G6ciw6 ? D85iw6 : Qpciw6); +assign K1a8v6 = (U6ciw6 ? D85iw6 : Xpciw6); +assign D1a8v6 = (B7ciw6 ? D85iw6 : Jkl7z6[22]); +assign W0a8v6 = (C4ciw6 ? D85iw6 : Eqciw6); +assign P0a8v6 = (W7ciw6 ? D85iw6 : Lqciw6); +assign I0a8v6 = (Xxbiw6 ? D85iw6 : Sqciw6); +assign B0a8v6 = (E5ciw6 ? Cx4iw6 : Dfk7z6[23]); +assign E5ciw6 = (~(Zqciw6 | Cqbiw6)); +assign Uz98v6 = (S5ciw6 ? Cx4iw6 : Grciw6); +assign S5ciw6 = (~(Zqciw6 | Qqbiw6)); +assign Nz98v6 = (G6ciw6 ? Cx4iw6 : Nrciw6); +assign G6ciw6 = (~(Zqciw6 | Erbiw6)); +assign Gz98v6 = (U6ciw6 ? Cx4iw6 : Urciw6); +assign U6ciw6 = (~(Zqciw6 | Srbiw6)); +assign Zy98v6 = (B7ciw6 ? Cx4iw6 : Jkl7z6[23]); +assign B7ciw6 = (~(Zqciw6 | Zrbiw6)); +assign Sy98v6 = (C4ciw6 ? Cx4iw6 : Bsciw6); +assign C4ciw6 = (~(Zqciw6 | Scciw6)); +assign Scciw6 = (!Imbiw6); +assign Ly98v6 = (W7ciw6 ? Cx4iw6 : Isciw6); +assign W7ciw6 = (~(Zqciw6 | Gdciw6)); +assign Ey98v6 = (Xxbiw6 ? Cx4iw6 : Psciw6); +assign Xxbiw6 = (~(Zqciw6 | Itbiw6)); +assign Zqciw6 = (~(Ptbiw6 & Cd3iw6)); +assign Xx98v6 = (Wsciw6 ? Wf4iw6 : Rbk7z6[20]); +assign Qx98v6 = (Dtciw6 ? Wf4iw6 : Dfk7z6[24]); +assign Jx98v6 = (Ktciw6 ? Wf4iw6 : Zlk7z6[20]); +assign Cx98v6 = (Rtciw6 ? Wf4iw6 : Lpk7z6[24]); +assign Vw98v6 = (Ytciw6 ? Wf4iw6 : Hwk7z6[20]); +assign Ow98v6 = (Fuciw6 ? Wf4iw6 : Tzk7z6[24]); +assign Hw98v6 = (Muciw6 ? Wf4iw6 : P6l7z6[20]); +assign Aw98v6 = (Tuciw6 ? Wf4iw6 : Bal7z6[24]); +assign Tv98v6 = (Avciw6 ? Wf4iw6 : Xgl7z6[20]); +assign Mv98v6 = (Hvciw6 ? Wf4iw6 : Jkl7z6[24]); +assign Fv98v6 = (Ovciw6 ? Wf4iw6 : Frl7z6[20]); +assign Yu98v6 = (Vvciw6 ? Wf4iw6 : Rul7z6[24]); +assign Ru98v6 = (Cwciw6 ? Wf4iw6 : N1m7z6[20]); +assign Ku98v6 = (Jwciw6 ? Wf4iw6 : Z4m7z6[24]); +assign Du98v6 = (Qwciw6 ? Wf4iw6 : Vbm7z6[20]); +assign Wt98v6 = (Pklov6 ? Wf4iw6 : Xwciw6); +assign Pt98v6 = (Wsciw6 ? Iklov6 : Rbk7z6[21]); +assign It98v6 = (Dtciw6 ? Iklov6 : Dfk7z6[25]); +assign Bt98v6 = (Ktciw6 ? Iklov6 : Zlk7z6[21]); +assign Us98v6 = (Rtciw6 ? Iklov6 : Exciw6); +assign Ns98v6 = (Ytciw6 ? Iklov6 : Hwk7z6[21]); +assign Gs98v6 = (Fuciw6 ? Iklov6 : Lxciw6); +assign Zr98v6 = (Muciw6 ? Iklov6 : P6l7z6[21]); +assign Sr98v6 = (Tuciw6 ? Iklov6 : Sxciw6); +assign Lr98v6 = (Avciw6 ? Iklov6 : Xgl7z6[21]); +assign Er98v6 = (Hvciw6 ? Iklov6 : Jkl7z6[25]); +assign Xq98v6 = (Ovciw6 ? Iklov6 : Frl7z6[21]); +assign Qq98v6 = (Vvciw6 ? Iklov6 : Zxciw6); +assign Jq98v6 = (Cwciw6 ? Iklov6 : N1m7z6[21]); +assign Cq98v6 = (Jwciw6 ? Iklov6 : Gyciw6); +assign Vp98v6 = (Qwciw6 ? Iklov6 : Vbm7z6[21]); +assign Op98v6 = (Wsciw6 ? E64iw6 : Rbk7z6[22]); +assign Hp98v6 = (Dtciw6 ? E64iw6 : Dfk7z6[26]); +assign Ap98v6 = (Ktciw6 ? E64iw6 : Zlk7z6[22]); +assign To98v6 = (Rtciw6 ? E64iw6 : Nyciw6); +assign Mo98v6 = (Ytciw6 ? E64iw6 : Hwk7z6[22]); +assign Fo98v6 = (Fuciw6 ? E64iw6 : Uyciw6); +assign Yn98v6 = (Muciw6 ? E64iw6 : P6l7z6[22]); +assign Rn98v6 = (Tuciw6 ? E64iw6 : Bzciw6); +assign Kn98v6 = (Avciw6 ? E64iw6 : Xgl7z6[22]); +assign Dn98v6 = (Hvciw6 ? E64iw6 : Jkl7z6[26]); +assign Wm98v6 = (Ovciw6 ? E64iw6 : Frl7z6[22]); +assign Pm98v6 = (Vvciw6 ? E64iw6 : Izciw6); +assign Im98v6 = (Cwciw6 ? E64iw6 : N1m7z6[22]); +assign Bm98v6 = (Jwciw6 ? E64iw6 : Pzciw6); +assign Ul98v6 = (Qwciw6 ? E64iw6 : Vbm7z6[22]); +assign Nl98v6 = (Pklov6 ? E64iw6 : Wzciw6); +assign Gl98v6 = (Dtciw6 ? H44iw6 : Dfk7z6[27]); +assign Zk98v6 = (Rtciw6 ? H44iw6 : D0diw6); +assign Sk98v6 = (Fuciw6 ? H44iw6 : K0diw6); +assign Lk98v6 = (Tuciw6 ? H44iw6 : R0diw6); +assign Ek98v6 = (Hvciw6 ? H44iw6 : Jkl7z6[27]); +assign Xj98v6 = (Vvciw6 ? H44iw6 : Y0diw6); +assign Qj98v6 = (Jwciw6 ? H44iw6 : F1diw6); +assign Jj98v6 = (Pklov6 ? H44iw6 : M1diw6); +assign Cj98v6 = (Wsciw6 ? W14iw6 : Rbk7z6[23]); +assign Wsciw6 = (T1diw6 & Qjbiw6); +assign Qjbiw6 = (!Cqbiw6); +assign Vi98v6 = (Dtciw6 ? W14iw6 : Dfk7z6[28]); +assign Oi98v6 = (Ktciw6 ? W14iw6 : Zlk7z6[23]); +assign Ktciw6 = (T1diw6 & Ekbiw6); +assign Ekbiw6 = (!Qqbiw6); +assign Hi98v6 = (Rtciw6 ? W14iw6 : A2diw6); +assign Ai98v6 = (Ytciw6 ? W14iw6 : Hwk7z6[23]); +assign Ytciw6 = (T1diw6 & Skbiw6); +assign Skbiw6 = (!Erbiw6); +assign Th98v6 = (Fuciw6 ? W14iw6 : H2diw6); +assign Mh98v6 = (Muciw6 ? W14iw6 : P6l7z6[23]); +assign Muciw6 = (T1diw6 & Glbiw6); +assign Glbiw6 = (!Srbiw6); +assign Fh98v6 = (Tuciw6 ? W14iw6 : O2diw6); +assign Yg98v6 = (Avciw6 ? W14iw6 : Xgl7z6[23]); +assign Avciw6 = (T1diw6 & Ulbiw6); +assign Ulbiw6 = (!Zrbiw6); +assign Rg98v6 = (Hvciw6 ? W14iw6 : Jkl7z6[28]); +assign Kg98v6 = (Ovciw6 ? W14iw6 : Frl7z6[23]); +assign Ovciw6 = (T1diw6 & Imbiw6); +assign Dg98v6 = (Vvciw6 ? W14iw6 : V2diw6); +assign Wf98v6 = (Cwciw6 ? W14iw6 : N1m7z6[23]); +assign Cwciw6 = (~(C3diw6 | Gdciw6)); +assign Pf98v6 = (Jwciw6 ? W14iw6 : J3diw6); +assign If98v6 = (Qwciw6 ? W14iw6 : Vbm7z6[23]); +assign Qwciw6 = (T1diw6 & Knbiw6); +assign T1diw6 = (!C3diw6); +assign C3diw6 = (Vc3iw6 | Vociw6); +assign Bf98v6 = (Pklov6 ? W14iw6 : Q3diw6); +assign Ue98v6 = (Dtciw6 ? Zz3iw6 : Dfk7z6[29]); +assign Ne98v6 = (Rtciw6 ? Zz3iw6 : X3diw6); +assign Ge98v6 = (Fuciw6 ? Zz3iw6 : E4diw6); +assign Zd98v6 = (Tuciw6 ? Zz3iw6 : L4diw6); +assign Sd98v6 = (Hvciw6 ? Zz3iw6 : Jkl7z6[29]); +assign Ld98v6 = (Vvciw6 ? Zz3iw6 : S4diw6); +assign Ed98v6 = (Jwciw6 ? Zz3iw6 : Z4diw6); +assign Xc98v6 = (Pklov6 ? Zz3iw6 : G5diw6); +assign Qc98v6 = (Dtciw6 ? Ro3iw6 : Dfk7z6[30]); +assign Jc98v6 = (Rtciw6 ? Ro3iw6 : N5diw6); +assign Cc98v6 = (Fuciw6 ? Ro3iw6 : U5diw6); +assign Vb98v6 = (Tuciw6 ? Ro3iw6 : B6diw6); +assign Ob98v6 = (Hvciw6 ? Ro3iw6 : Jkl7z6[30]); +assign Hb98v6 = (Vvciw6 ? Ro3iw6 : I6diw6); +assign Ab98v6 = (Jwciw6 ? Ro3iw6 : P6diw6); +assign Ta98v6 = (Pklov6 ? Ro3iw6 : W6diw6); +assign Ma98v6 = (Dtciw6 ? X0hov6 : Dfk7z6[31]); +assign Dtciw6 = (~(D7diw6 | Cqbiw6)); +assign Cqbiw6 = (K7diw6 & R7diw6); +assign R7diw6 = (~(K49iw6 & Y7diw6)); +assign K49iw6 = (L19iw6 & Orhov6); +assign K7diw6 = (~(Hyj7z6[0] & F8diw6)); +assign Fa98v6 = (Rtciw6 ? X0hov6 : M8diw6); +assign Rtciw6 = (~(D7diw6 | Qqbiw6)); +assign Qqbiw6 = (T8diw6 & A9diw6); +assign A9diw6 = (~(H9diw6 & Y7diw6)); +assign T8diw6 = (~(Hyj7z6[1] & F8diw6)); +assign M8diw6 = (!Yk87z6); +assign Y998v6 = (Fuciw6 ? X0hov6 : O9diw6); +assign Fuciw6 = (~(D7diw6 | Erbiw6)); +assign Erbiw6 = (V9diw6 & Cadiw6); +assign Cadiw6 = (~(I39iw6 & Y7diw6)); +assign I39iw6 = (Orhov6 & B52nv6); +assign V9diw6 = (~(Hyj7z6[2] & F8diw6)); +assign O9diw6 = (!Sr87z6); +assign R998v6 = (Tuciw6 ? X0hov6 : Jadiw6); +assign Tuciw6 = (~(D7diw6 | Srbiw6)); +assign Srbiw6 = (Qadiw6 & Xadiw6); +assign Xadiw6 = (~(Y7diw6 & Ebdiw6)); +assign Y7diw6 = (~(I52nv6 | F8diw6)); +assign Qadiw6 = (~(Hyj7z6[3] & F8diw6)); +assign K998v6 = (Hvciw6 ? X0hov6 : Jkl7z6[31]); +assign Hvciw6 = (~(D7diw6 | Zrbiw6)); +assign Zrbiw6 = (Lbdiw6 & Sbdiw6); +assign Sbdiw6 = (Zbdiw6 | B52nv6); +assign Lbdiw6 = (~(Hyj7z6[4] & F8diw6)); +assign D998v6 = (Vvciw6 ? X0hov6 : Gcdiw6); +assign Vvciw6 = (Ncdiw6 & Imbiw6); +assign Imbiw6 = (Bddiw6 ? Ucdiw6 : Hyj7z6[5]); +assign Gcdiw6 = (!Ee87z6); +assign W898v6 = (Jwciw6 ? X0hov6 : Iddiw6); +assign Jwciw6 = (Ncdiw6 & Wmbiw6); +assign Wmbiw6 = (!Gdciw6); +assign Gdciw6 = (Pddiw6 & Wddiw6); +assign Wddiw6 = (Zbdiw6 | L19iw6); +assign Zbdiw6 = (~(Dediw6 & Bddiw6)); +assign Dediw6 = (Orhov6 & I52nv6); +assign Pddiw6 = (~(Hyj7z6[6] & F8diw6)); +assign Iddiw6 = (!K787z6); +assign P898v6 = (Pklov6 ? X0hov6 : Kediw6); +assign Pklov6 = (Ncdiw6 & Knbiw6); +assign Knbiw6 = (!Itbiw6); +assign Itbiw6 = (Bddiw6 ? Vz8iw6 : C09iw6); +assign Bddiw6 = (!F8diw6); +assign Vz8iw6 = (~(Ebdiw6 & I52nv6)); +assign Ncdiw6 = (!D7diw6); +assign D7diw6 = (Vc3iw6 | Rediw6); +assign Vc3iw6 = (~(Pvj7z6[3] & Cd3iw6)); +assign Kediw6 = (!Iw77z6); +assign I898v6 = (~(Yediw6 & Senet6)); +assign Yediw6 = (Ffdiw6 & Mfdiw6); +assign Ffdiw6 = (Tfdiw6 | Gr2et6); +assign B898v6 = (Agdiw6 & Hgdiw6); +assign Hgdiw6 = (Ogdiw6 & Cmm7z6[0]); +assign Ogdiw6 = (Lgonv6 & Xc4iw6); +assign Agdiw6 = (Vgdiw6 & Pbhnv6); +assign Vgdiw6 = (Wbhnv6 & Vfmov6); +assign U798v6 = (Chdiw6 ? Dzget6 : Hjqnv6); +assign N798v6 = (Chdiw6 ? Qwget6 : Lhmov6); +assign G798v6 = (Chdiw6 ? V5k7z6[6] : X0k7z6[6]); +assign Z698v6 = (Chdiw6 ? V5k7z6[7] : X0k7z6[7]); +assign S698v6 = (Chdiw6 ? V5k7z6[8] : X0k7z6[8]); +assign L698v6 = (Chdiw6 ? V5k7z6[9] : X0k7z6[9]); +assign E698v6 = (Chdiw6 ? V5k7z6[10] : X0k7z6[10]); +assign X598v6 = (Chdiw6 ? V5k7z6[11] : X0k7z6[11]); +assign Q598v6 = (Chdiw6 ? V5k7z6[12] : X0k7z6[12]); +assign J598v6 = (Chdiw6 ? V5k7z6[13] : X0k7z6[13]); +assign C598v6 = (Chdiw6 ? V5k7z6[14] : X0k7z6[14]); +assign V498v6 = (Chdiw6 ? V5k7z6[15] : X0k7z6[15]); +assign O498v6 = (Chdiw6 ? V5k7z6[16] : X0k7z6[16]); +assign H498v6 = (Chdiw6 ? Jhdiw6 : X0k7z6[17]); +assign A498v6 = (Chdiw6 ? V5k7z6[18] : X0k7z6[18]); +assign T398v6 = (Chdiw6 ? V5k7z6[19] : X0k7z6[19]); +assign M398v6 = (Chdiw6 ? Qhdiw6 : X0k7z6[20]); +assign Qhdiw6 = (!Cj77z6); +assign F398v6 = (Chdiw6 ? V5k7z6[21] : X0k7z6[21]); +assign Y298v6 = (Chdiw6 ? V5k7z6[22] : X0k7z6[22]); +assign R298v6 = (Chdiw6 ? Xhdiw6 : X0k7z6[23]); +assign Xhdiw6 = (!Kj77z6); +assign K298v6 = (Chdiw6 ? V5k7z6[24] : X0k7z6[24]); +assign D298v6 = (Chdiw6 ? V5k7z6[25] : X0k7z6[25]); +assign W198v6 = (Chdiw6 ? Eidiw6 : X0k7z6[26]); +assign Eidiw6 = (!U297z6); +assign P198v6 = (Chdiw6 ? V5k7z6[27] : X0k7z6[27]); +assign I198v6 = (Chdiw6 ? V5k7z6[28] : X0k7z6[28]); +assign B198v6 = (Chdiw6 ? V5k7z6[29] : X0k7z6[29]); +assign Chdiw6 = (!Obo7v6); +assign U098v6 = (Obo7v6 ? X0k7z6[30] : V5k7z6[30]); +assign N098v6 = (Obo7v6 ? X0k7z6[31] : V5k7z6[31]); +assign G098v6 = (Obo7v6 ? X0k7z6[5] : V5k7z6[5]); +assign Zz88v6 = (Lidiw6 ? P9i7z6[9] : G4i7z6[9]); +assign Sz88v6 = (Lidiw6 ? P9i7z6[8] : G4i7z6[8]); +assign Lz88v6 = (Lidiw6 ? P9i7z6[7] : G4i7z6[7]); +assign Ez88v6 = (Lidiw6 ? P9i7z6[6] : G4i7z6[6]); +assign Xy88v6 = (Lidiw6 ? P9i7z6[5] : G4i7z6[5]); +assign Qy88v6 = (Lidiw6 ? P9i7z6[4] : G4i7z6[4]); +assign Jy88v6 = (Lidiw6 ? P9i7z6[3] : G4i7z6[3]); +assign Cy88v6 = (Lidiw6 ? P9i7z6[2] : G4i7z6[2]); +assign Vx88v6 = (Lidiw6 ? P9i7z6[1] : G4i7z6[1]); +assign Ox88v6 = (Sidiw6 ? G4i7z6[0] : P9i7z6[0]); +assign Hx88v6 = (Zidiw6 ? Wbhnv6 : Bbp7z6[0]); +assign Ax88v6 = (Zidiw6 ? Anehw6 : Bbp7z6[1]); +assign Tw88v6 = (Zidiw6 ? Cmm7z6[0] : Ncp7z6[0]); +assign Mw88v6 = (Zidiw6 ? Cmm7z6[1] : Ncp7z6[1]); +assign Fw88v6 = (Zidiw6 ? Lhmov6 : L42ft6); +assign Yv88v6 = (K94iw6 ? Ea2ft6 : Gjdiw6); +assign Rv88v6 = (~(Njdiw6 & Ujdiw6)); +assign Ujdiw6 = (~(Bkdiw6 & Gr2et6)); +assign Njdiw6 = (~(Ikdiw6 | Tfdiw6)); +assign Ikdiw6 = (Ihnet6 & Ypinv6); +assign Kv88v6 = (~(Pkdiw6 & Wkdiw6)); +assign Wkdiw6 = (~(Dldiw6 & Kldiw6)); +assign Dldiw6 = (!Rldiw6); +assign Pkdiw6 = (~(Xnh7z6[0] & P1jhw6)); +assign Dv88v6 = (~(Yldiw6 & Fmdiw6)); +assign Fmdiw6 = (Rldiw6 | Kldiw6); +assign Rldiw6 = (~(Mmdiw6 & B1jhw6)); +assign Mmdiw6 = (T3cdt6 & B2jnv6); +assign Yldiw6 = (~(Xnh7z6[1] & P1jhw6)); +assign Wu88v6 = (~(Tmdiw6 & Andiw6)); +assign Andiw6 = (~(Hndiw6 & B1jhw6)); +assign B1jhw6 = (Ondiw6 & Vndiw6); +assign Vndiw6 = (Codiw6 & Fsmov6); +assign Ondiw6 = (Jodiw6 & Ii9ov6); +assign Jodiw6 = (!P1jhw6); +assign Hndiw6 = (Qodiw6 & Xodiw6); +assign Tmdiw6 = (~(Xnh7z6[2] & P1jhw6)); +assign P1jhw6 = (~(O5a7z6 & Epdiw6)); +assign Epdiw6 = (~(Lpdiw6 & Spdiw6)); +assign Lpdiw6 = (~(Zpdiw6 & Codiw6)); +assign Codiw6 = (Aeonv6 & Lxydt6); +assign Pu88v6 = (~(Ygh7v6 & Uimov6)); +assign Iu88v6 = (Uimov6 ? Y9pet6 : Hjqnv6); +assign Bu88v6 = (~(Gqdiw6 & Nqdiw6)); +assign Nqdiw6 = (~(Uqdiw6 & Ezphw6)); +assign Ezphw6 = (Brdiw6 & Irdiw6); +assign Irdiw6 = (Prdiw6 & Wrdiw6); +assign Wrdiw6 = (B2jnv6 & Lhmov6); +assign Prdiw6 = (Zblov6 & Yhqnv6); +assign Brdiw6 = (Dsdiw6 & Ghonv6); +assign Ghonv6 = (!Bionv6); +assign Bionv6 = (~(Ksdiw6 & Rsdiw6)); +assign Ksdiw6 = (Aeonv6 & Vb4iw6); +assign Dsdiw6 = (Qodiw6 & Tlmov6); +assign Uqdiw6 = (Lzphw6 & Ysdiw6); +assign Lzphw6 = (~(Cyphw6 | Ftdiw6)); +assign Ftdiw6 = (~(Rj9ov6 | Hm1ov6)); +assign Gqdiw6 = (~(Dkm7z6[0] & Zzphw6)); +assign Zzphw6 = (!Rsdiw6); +assign Ut88v6 = (~(Mtdiw6 & Ttdiw6)); +assign Ttdiw6 = (Audiw6 | Alonv6); +assign Alonv6 = (Hudiw6 & Oudiw6); +assign Oudiw6 = (~(Vudiw6 & Cvdiw6)); +assign Cvdiw6 = (!Jvdiw6); +assign Hudiw6 = (~(Enonv6 & Qvdiw6)); +assign Mtdiw6 = (~(Dq9ov6 & Ven7z6[2])); +assign Nt88v6 = (~(Xvdiw6 & Ewdiw6)); +assign Ewdiw6 = (Audiw6 | Tkonv6); +assign Tkonv6 = (Lwdiw6 & Swdiw6); +assign Swdiw6 = (~(Vudiw6 & Zwdiw6)); +assign Lwdiw6 = (~(Gxdiw6 & Enonv6)); +assign Gxdiw6 = (!Nxdiw6); +assign Audiw6 = (!Hl9ov6); +assign Xvdiw6 = (~(Dq9ov6 & Ven7z6[1])); +assign Gt88v6 = (~(Uxdiw6 & Bydiw6)); +assign Bydiw6 = (~(Hl9ov6 & Mkonv6)); +assign Mkonv6 = (~(Iydiw6 & Pydiw6)); +assign Pydiw6 = (~(Wydiw6 & Enonv6)); +assign Wydiw6 = (Cmm7z6[1] & Dzdiw6); +assign Dzdiw6 = (~(Cmm7z6[0] & Ta4iw6)); +assign Iydiw6 = (~(Vudiw6 & Kzdiw6)); +assign Kzdiw6 = (~(Rzdiw6 & Yzdiw6)); +assign Yzdiw6 = (~(Hub7z6[0] & Stpnv6)); +assign Uxdiw6 = (~(Dq9ov6 & Ven7z6[0])); +assign Zs88v6 = (F0eiw6 ? Icn7z6[0] : X9yet6); +assign Ss88v6 = (F0eiw6 ? Icn7z6[1] : Icyet6); +assign Ls88v6 = (F0eiw6 ? Icn7z6[2] : T2zet6); +assign Es88v6 = (F0eiw6 ? Icn7z6[3] : S0zet6); +assign Xr88v6 = (F0eiw6 ? Icn7z6[4] : Ryyet6); +assign Qr88v6 = (F0eiw6 ? Icn7z6[5] : Hjn7z6[5]); +assign Jr88v6 = (F0eiw6 ? Icn7z6[6] : Hjn7z6[6]); +assign Cr88v6 = (F0eiw6 ? Icn7z6[7] : Hjn7z6[7]); +assign Vq88v6 = (F0eiw6 ? Icn7z6[8] : Hjn7z6[8]); +assign Oq88v6 = (F0eiw6 ? Icn7z6[9] : Hjn7z6[9]); +assign Hq88v6 = (F0eiw6 ? Icn7z6[10] : Hjn7z6[10]); +assign Aq88v6 = (F0eiw6 ? Icn7z6[11] : Hjn7z6[11]); +assign Tp88v6 = (F0eiw6 ? Icn7z6[12] : Hjn7z6[12]); +assign Mp88v6 = (F0eiw6 ? Icn7z6[13] : Hjn7z6[13]); +assign Fp88v6 = (F0eiw6 ? Icn7z6[14] : Hjn7z6[14]); +assign Yo88v6 = (F0eiw6 ? Icn7z6[15] : Hjn7z6[15]); +assign Ro88v6 = (F0eiw6 ? Icn7z6[16] : Hjn7z6[16]); +assign Ko88v6 = (F0eiw6 ? Icn7z6[17] : Hjn7z6[17]); +assign Do88v6 = (F0eiw6 ? Icn7z6[18] : Hjn7z6[18]); +assign Wn88v6 = (F0eiw6 ? Icn7z6[19] : Hjn7z6[19]); +assign Pn88v6 = (F0eiw6 ? Icn7z6[20] : Hjn7z6[20]); +assign In88v6 = (F0eiw6 ? Icn7z6[21] : Hjn7z6[21]); +assign Bn88v6 = (F0eiw6 ? Icn7z6[22] : Hjn7z6[22]); +assign Um88v6 = (F0eiw6 ? Icn7z6[23] : Hjn7z6[23]); +assign Nm88v6 = (F0eiw6 ? Icn7z6[24] : Hjn7z6[24]); +assign F0eiw6 = (!M0eiw6); +assign Gm88v6 = (M0eiw6 ? Hjn7z6[25] : Icn7z6[25]); +assign Zl88v6 = (M0eiw6 ? Hjn7z6[26] : Icn7z6[26]); +assign Sl88v6 = (M0eiw6 ? Hjn7z6[27] : Icn7z6[27]); +assign Ll88v6 = (M0eiw6 ? Hjn7z6[28] : Icn7z6[28]); +assign El88v6 = (M0eiw6 ? Hjn7z6[29] : Icn7z6[29]); +assign Xk88v6 = (M0eiw6 ? Hjn7z6[30] : Icn7z6[30]); +assign Qk88v6 = (M0eiw6 ? Hjn7z6[31] : Icn7z6[31]); +assign M0eiw6 = (T0eiw6 & N0qhw6); +assign T0eiw6 = (~(A1eiw6 & H1eiw6)); +assign H1eiw6 = (X02iw6 & O1eiw6); +assign A1eiw6 = (V1eiw6 & C2eiw6); +assign C2eiw6 = (~(J2eiw6 & Q2eiw6)); +assign Q2eiw6 = (~(N22iw6 & Kjonv6)); +assign Jk88v6 = (~(X2eiw6 & E3eiw6)); +assign E3eiw6 = (~(Hl9ov6 & L3eiw6)); +assign Hl9ov6 = (~(U22iw6 | Dq9ov6)); +assign X2eiw6 = (~(Dq9ov6 & Qln7z6[0])); +assign Dq9ov6 = (~(U22iw6 | S3eiw6)); +assign U22iw6 = (!Jalov6); +assign Ck88v6 = (~(Z3eiw6 & G4eiw6)); +assign G4eiw6 = (~(Teyet6 & N4eiw6)); +assign Z3eiw6 = (U4eiw6 | N4eiw6); +assign N4eiw6 = (~(O1eiw6 & B5eiw6)); +assign B5eiw6 = (~(I5eiw6 & P5eiw6)); +assign P5eiw6 = (~(S12iw6 | A4qhw6)); +assign I5eiw6 = (~(X02iw6 | N22iw6)); +assign U4eiw6 = (W5eiw6 | D6eiw6); +assign Vj88v6 = (Uimov6 ? X7pet6 : Yhqnv6); +assign Oj88v6 = (Uimov6 ? W5pet6 : Pgqnv6); +assign Hj88v6 = (Uimov6 ? V3pet6 : Gfqnv6); +assign Uimov6 = (!Sblov6); +assign Aj88v6 = (Sblov6 ? Qdqnv6 : U1pet6); +assign Ti88v6 = (~(K6eiw6 & R6eiw6)); +assign R6eiw6 = (~(P39iw6 & Ebdiw6)); +assign K6eiw6 = (~(J09iw6 & Hyj7z6[3])); +assign Mi88v6 = (~(Y6eiw6 & F7eiw6)); +assign F7eiw6 = (~(H9diw6 & P39iw6)); +assign P39iw6 = (~(I52nv6 | J09iw6)); +assign H9diw6 = (L19iw6 & U42nv6); +assign Y6eiw6 = (~(J09iw6 & Hyj7z6[1])); +assign J09iw6 = (!N29iw6); +assign Fi88v6 = (N29iw6 ? Ucdiw6 : Hyj7z6[5]); +assign N29iw6 = (~(M7eiw6 & F8diw6)); +assign F8diw6 = (~(T7eiw6 & A8eiw6)); +assign A8eiw6 = (Ptbiw6 & W52nv6); +assign T7eiw6 = (H8eiw6 & Pohov6); +assign M7eiw6 = (~(O8eiw6 & V8eiw6)); +assign V8eiw6 = (C9eiw6 & J9eiw6); +assign J9eiw6 = (~(Dtj7z6[2] | Dtj7z6[5])); +assign C9eiw6 = (Hc3iw6 & Q9eiw6); +assign Hc3iw6 = (Pvj7z6[0] & Cd3iw6); +assign Cd3iw6 = (Rediw6 | H8eiw6); +assign H8eiw6 = (X9eiw6 & Eaeiw6); +assign Eaeiw6 = (Laeiw6 & Pvj7z6[1]); +assign Laeiw6 = (Pvj7z6[0] & Hkget6); +assign X9eiw6 = (Pvj7z6[3] & Pvj7z6[2]); +assign O8eiw6 = (Saeiw6 & Zaeiw6); +assign Saeiw6 = (Gbeiw6 & Nbeiw6); +assign Yh88v6 = (~(Ubeiw6 & Bceiw6)); +assign Bceiw6 = (~(Ohj7z6[0] & Iceiw6)); +assign Iceiw6 = (~(Qn7iw6 & U42nv6)); +assign Qn7iw6 = (~(Mh4iw6 | Twaiw6)); +assign Mh4iw6 = (~(Pceiw6 & Wceiw6)); +assign Ubeiw6 = (~(Ip8iw6 & U42nv6)); +assign Ip8iw6 = (Jz2iw6 & Bqi7z6[0]); +assign Jz2iw6 = (Ddeiw6 & Wceiw6); +assign Rh88v6 = (~(Kdeiw6 & Rdeiw6)); +assign Rdeiw6 = (~(Ohj7z6[32] & Ydeiw6)); +assign Ydeiw6 = (~(So7iw6 & U42nv6)); +assign So7iw6 = (~(Oi4iw6 | Twaiw6)); +assign Oi4iw6 = (~(Feeiw6 & Wceiw6)); +assign Kdeiw6 = (~(Kq8iw6 & U42nv6)); +assign Kq8iw6 = (Ay2iw6 & Bqi7z6[0]); +assign Ay2iw6 = (Meeiw6 & Wceiw6); +assign Wceiw6 = (Teeiw6 & Afeiw6); +assign Afeiw6 = (~(Hfeiw6 | Toi7z6[9])); +assign Kh88v6 = (Vfeiw6 ? Ofeiw6 : Klo7z6[0]); +assign Dh88v6 = (~(Cgeiw6 & Jgeiw6)); +assign Jgeiw6 = (~(Qgeiw6 & Xgeiw6)); +assign Cgeiw6 = (~(Klo7z6[6] & Eheiw6)); +assign Wg88v6 = (~(Lheiw6 & Sheiw6)); +assign Sheiw6 = (~(Xgeiw6 & N13iw6)); +assign Lheiw6 = (~(Eheiw6 & Klo7z6[5])); +assign Pg88v6 = (~(Zheiw6 & Gieiw6)); +assign Gieiw6 = (~(Nieiw6 & Xgeiw6)); +assign Xgeiw6 = (G13iw6 & Vfeiw6); +assign G13iw6 = (Uieiw6 & Bjeiw6); +assign Bjeiw6 = (Ijeiw6 & Pjeiw6); +assign Ijeiw6 = (Wjeiw6 & Dkeiw6); +assign Uieiw6 = (Kkeiw6 & Rkeiw6); +assign Nieiw6 = (~(N13iw6 | Qgeiw6)); +assign Qgeiw6 = (Ykeiw6 & Fleiw6); +assign Fleiw6 = (X72iw6 & E82iw6); +assign Ykeiw6 = (~(Mleiw6 | V62iw6)); +assign N13iw6 = (Tleiw6 & Ameiw6); +assign Ameiw6 = (~(Hmeiw6 | Omeiw6)); +assign Omeiw6 = (!J72iw6); +assign Tleiw6 = (Vmeiw6 & Cneiw6); +assign Zheiw6 = (~(Klo7z6[4] & Eheiw6)); +assign Ig88v6 = (Vfeiw6 ? Jneiw6 : Klo7z6[3]); +assign Vfeiw6 = (!Eheiw6); +assign Bg88v6 = (Eheiw6 ? Klo7z6[2] : Yelov6); +assign Uf88v6 = (Eheiw6 ? Klo7z6[1] : Fflov6); +assign Eheiw6 = (C63iw6 & Qneiw6); +assign Qneiw6 = (~(Xneiw6 & Vd2iw6)); +assign Nf88v6 = (~(Eoeiw6 & Loeiw6)); +assign Loeiw6 = (~(Soeiw6 & D42iw6)); +assign Eoeiw6 = (~(D02ft6 & Pdlov6)); +assign Gf88v6 = (Zoeiw6 ? Z4p7z6[1] : L82iw6); +assign Ze88v6 = (Zoeiw6 ? Z4p7z6[2] : E82iw6); +assign Se88v6 = (Zoeiw6 ? Z4p7z6[3] : X72iw6); +assign Le88v6 = (!Gpeiw6); +assign Gpeiw6 = (Zoeiw6 ? Upeiw6 : Npeiw6); +assign Zoeiw6 = (!Soeiw6); +assign Npeiw6 = (~(Bqeiw6 & Iqeiw6)); +assign Bqeiw6 = (Cneiw6 & Pqeiw6); +assign Pqeiw6 = (~(X72iw6 & Wqeiw6)); +assign Wqeiw6 = (L82iw6 | E82iw6); +assign Ee88v6 = (Soeiw6 ? Dreiw6 : Z4p7z6[5]); +assign Dreiw6 = (Kreiw6 & Rreiw6); +assign Rreiw6 = (J72iw6 & V62iw6); +assign Kreiw6 = (~(Hmeiw6 | Cneiw6)); +assign Cneiw6 = (!Q72iw6); +assign Hmeiw6 = (~(Yreiw6 & Fseiw6)); +assign Fseiw6 = (A62iw6 & O62iw6); +assign Yreiw6 = (T43iw6 & C72iw6); +assign T43iw6 = (~(Mseiw6 & Tseiw6)); +assign Tseiw6 = (!X72iw6); +assign Mseiw6 = (!E82iw6); +assign Xd88v6 = (Soeiw6 ? S82iw6 : Z4p7z6[0]); +assign Soeiw6 = (~(Ateiw6 | Da3iw6)); +assign Ateiw6 = (!Yelov6); +assign Yelov6 = (Hteiw6 & Rkeiw6); +assign Hteiw6 = (Oteiw6 & Dkeiw6); +assign Qd88v6 = (Vteiw6 ? Nmq7z6[3] : L82iw6); +assign Jd88v6 = (Vteiw6 ? Nmq7z6[4] : E82iw6); +assign Cd88v6 = (Vteiw6 ? Nmq7z6[5] : X72iw6); +assign Vc88v6 = (Vteiw6 ? Nmq7z6[6] : Q72iw6); +assign Oc88v6 = (Vteiw6 ? Cueiw6 : D42iw6); +assign Hc88v6 = (!Jueiw6); +assign Jueiw6 = (Vteiw6 ? Xueiw6 : Queiw6); +assign Queiw6 = (Iqeiw6 & Eveiw6); +assign Eveiw6 = (~(Q72iw6 & X72iw6)); +assign Ac88v6 = (!Lveiw6); +assign Lveiw6 = (Vteiw6 ? Zveiw6 : Sveiw6); +assign Vteiw6 = (!Zdo7v6); +assign Sveiw6 = (Mleiw6 | Vmeiw6); +assign Vmeiw6 = (!V62iw6); +assign Mleiw6 = (~(Gweiw6 & Nweiw6)); +assign Nweiw6 = (Uweiw6 & O62iw6); +assign Uweiw6 = (Q72iw6 & J72iw6); +assign Gweiw6 = (C72iw6 & A62iw6); +assign Tb88v6 = (Zdo7v6 ? S82iw6 : Bxeiw6); +assign Mb88v6 = (Ixeiw6 & Pxeiw6); +assign Pxeiw6 = (~(Wxeiw6 | Sgp7z6[2])); +assign Ixeiw6 = (Sgp7z6[3] & HTMDHBURST[0]); +assign Fb88v6 = (Ypinv6 ? Kg5ft6 : Dyeiw6); +assign Dyeiw6 = (Kyeiw6 & Ryeiw6); +assign Kyeiw6 = (~(Yyeiw6 & Fzeiw6)); +assign Fzeiw6 = (~(Sgp7z6[1] & Mzeiw6)); +assign Yyeiw6 = (~(Tzeiw6 & A0fiw6)); +assign Ya88v6 = (Ypinv6 ? Dw4ft6 : H0fiw6); +assign H0fiw6 = (O0fiw6 & V0fiw6); +assign O0fiw6 = (~(C1fiw6 & J1fiw6)); +assign J1fiw6 = (Q1fiw6 | X1fiw6); +assign C1fiw6 = (~(E2fiw6 & L2fiw6)); +assign Ra88v6 = (K94iw6 ? Fy4ft6 : S2fiw6); +assign Ka88v6 = (Z2fiw6 ? Zdp7z6[1] : Gpgnv6); +assign Z2fiw6 = (Kygnv6 & B1rnv6); +assign Da88v6 = (~(G3fiw6 & N3fiw6)); +assign N3fiw6 = (~(U3fiw6 & Zidiw6)); +assign U3fiw6 = (Jx5ov6 & Zc5ft6); +assign Jx5ov6 = (!B4fiw6); +assign G3fiw6 = (~(B82ft6 & K94iw6)); +assign W988v6 = (~(I4fiw6 & P4fiw6)); +assign P4fiw6 = (~(W4fiw6 & Zidiw6)); +assign W4fiw6 = (Hw5ov6 & Xn5ft6); +assign Hw5ov6 = (!D5fiw6); +assign I4fiw6 = (~(Y52ft6 & K94iw6)); +assign P988v6 = (K5fiw6 ? Zdp7z6[3] : V1gnv6); +assign K5fiw6 = (Kygnv6 & U0rnv6); +assign V1gnv6 = (R5fiw6 & Y5fiw6); +assign Y5fiw6 = (F6fiw6 & D5fiw6); +assign R5fiw6 = (M6fiw6 & T6fiw6); +assign I988v6 = (~(A7fiw6 & H7fiw6)); +assign H7fiw6 = (~(O7fiw6 & U9p7z6[0])); +assign A7fiw6 = (V7fiw6 & C8fiw6); +assign C8fiw6 = (~(L84ft6 & J8fiw6)); +assign V7fiw6 = (Q8fiw6 | Orhov6); +assign B988v6 = (~(X8fiw6 & E9fiw6)); +assign E9fiw6 = (~(O7fiw6 & U9p7z6[1])); +assign X8fiw6 = (L9fiw6 & S9fiw6); +assign S9fiw6 = (~(A74ft6 & J8fiw6)); +assign L9fiw6 = (Q8fiw6 | L19iw6); +assign U888v6 = (~(Z9fiw6 & Gafiw6)); +assign Gafiw6 = (~(O7fiw6 & U9p7z6[2])); +assign Z9fiw6 = (Nafiw6 & Uafiw6); +assign Uafiw6 = (~(P54ft6 & J8fiw6)); +assign Nafiw6 = (Q8fiw6 | Fhrnv6); +assign N888v6 = (~(Bbfiw6 & Ibfiw6)); +assign Ibfiw6 = (Q8fiw6 | Pohov6); +assign Bbfiw6 = (Pbfiw6 & Wbfiw6); +assign Wbfiw6 = (~(E44ft6 & J8fiw6)); +assign Pbfiw6 = (~(O7fiw6 & U9p7z6[3])); +assign G888v6 = (~(Dcfiw6 & Kcfiw6)); +assign Kcfiw6 = (Q8fiw6 | Zaeiw6); +assign Dcfiw6 = (Rcfiw6 & Ycfiw6); +assign Ycfiw6 = (~(T24ft6 & J8fiw6)); +assign Rcfiw6 = (~(O7fiw6 & U9p7z6[4])); +assign Z788v6 = (~(Fdfiw6 & Mdfiw6)); +assign Mdfiw6 = (Q8fiw6 | Tdfiw6); +assign Fdfiw6 = (Aefiw6 & Hefiw6); +assign Hefiw6 = (~(I14ft6 & J8fiw6)); +assign Aefiw6 = (~(O7fiw6 & U9p7z6[5])); +assign S788v6 = (~(Oefiw6 & Vefiw6)); +assign Vefiw6 = (Q8fiw6 | Gbeiw6); +assign Oefiw6 = (Cffiw6 & Jffiw6); +assign Jffiw6 = (~(Xz3ft6 & J8fiw6)); +assign Cffiw6 = (~(O7fiw6 & U9p7z6[6])); +assign L788v6 = (~(Qffiw6 & Xffiw6)); +assign Xffiw6 = (Q8fiw6 | Egfiw6); +assign Qffiw6 = (Lgfiw6 & Sgfiw6); +assign Sgfiw6 = (~(My3ft6 & J8fiw6)); +assign Lgfiw6 = (~(O7fiw6 & U9p7z6[7])); +assign E788v6 = (~(Zgfiw6 & Ghfiw6)); +assign Ghfiw6 = (Q8fiw6 | Nhfiw6); +assign Zgfiw6 = (Uhfiw6 & Bifiw6); +assign Bifiw6 = (~(Bx3ft6 & J8fiw6)); +assign Uhfiw6 = (~(O7fiw6 & U9p7z6[8])); +assign X688v6 = (~(Iifiw6 & Pifiw6)); +assign Pifiw6 = (Q8fiw6 | Wifiw6); +assign Iifiw6 = (Djfiw6 & Kjfiw6); +assign Kjfiw6 = (~(Qv3ft6 & J8fiw6)); +assign Djfiw6 = (~(O7fiw6 & U9p7z6[9])); +assign Q688v6 = (~(Rjfiw6 & Yjfiw6)); +assign Yjfiw6 = (Q8fiw6 | Fkfiw6); +assign Rjfiw6 = (Mkfiw6 & Tkfiw6); +assign Tkfiw6 = (~(Fu3ft6 & J8fiw6)); +assign Mkfiw6 = (~(O7fiw6 & U9p7z6[10])); +assign J688v6 = (~(Alfiw6 & Hlfiw6)); +assign Hlfiw6 = (Q8fiw6 | Olfiw6); +assign Alfiw6 = (Vlfiw6 & Cmfiw6); +assign Cmfiw6 = (~(Us3ft6 & J8fiw6)); +assign Vlfiw6 = (~(O7fiw6 & U9p7z6[11])); +assign C688v6 = (~(Jmfiw6 & Qmfiw6)); +assign Qmfiw6 = (Q8fiw6 | Xmfiw6); +assign Jmfiw6 = (Enfiw6 & Lnfiw6); +assign Lnfiw6 = (~(Jr3ft6 & J8fiw6)); +assign Enfiw6 = (~(O7fiw6 & U9p7z6[12])); +assign V588v6 = (~(Snfiw6 & Znfiw6)); +assign Znfiw6 = (Q8fiw6 | Gofiw6); +assign Snfiw6 = (Nofiw6 & Uofiw6); +assign Uofiw6 = (~(Yp3ft6 & J8fiw6)); +assign Nofiw6 = (~(O7fiw6 & U9p7z6[13])); +assign O588v6 = (~(Bpfiw6 & Ipfiw6)); +assign Ipfiw6 = (Q8fiw6 | Ppfiw6); +assign Bpfiw6 = (Wpfiw6 & Dqfiw6); +assign Dqfiw6 = (~(No3ft6 & J8fiw6)); +assign Wpfiw6 = (~(O7fiw6 & U9p7z6[14])); +assign H588v6 = (~(Kqfiw6 & Rqfiw6)); +assign Rqfiw6 = (Q8fiw6 | Yqfiw6); +assign Kqfiw6 = (Frfiw6 & Mrfiw6); +assign Mrfiw6 = (~(Cn3ft6 & J8fiw6)); +assign Frfiw6 = (~(O7fiw6 & U9p7z6[15])); +assign A588v6 = (~(Trfiw6 & Asfiw6)); +assign Asfiw6 = (Q8fiw6 | Hsfiw6); +assign Trfiw6 = (Osfiw6 & Vsfiw6); +assign Vsfiw6 = (~(Rl3ft6 & J8fiw6)); +assign Osfiw6 = (~(O7fiw6 & U9p7z6[16])); +assign T488v6 = (~(Ctfiw6 & Jtfiw6)); +assign Jtfiw6 = (Q8fiw6 | Oyhov6); +assign Ctfiw6 = (Qtfiw6 & Xtfiw6); +assign Xtfiw6 = (~(Gk3ft6 & J8fiw6)); +assign Qtfiw6 = (~(O7fiw6 & U9p7z6[17])); +assign M488v6 = (~(Eufiw6 & Lufiw6)); +assign Lufiw6 = (Q8fiw6 | Sufiw6); +assign Eufiw6 = (Zufiw6 & Gvfiw6); +assign Gvfiw6 = (~(Vi3ft6 & J8fiw6)); +assign Zufiw6 = (~(O7fiw6 & U9p7z6[18])); +assign F488v6 = (~(Nvfiw6 & Uvfiw6)); +assign Uvfiw6 = (Q8fiw6 | Bwfiw6); +assign Nvfiw6 = (Iwfiw6 & Pwfiw6); +assign Pwfiw6 = (~(Kh3ft6 & J8fiw6)); +assign Iwfiw6 = (~(O7fiw6 & U9p7z6[19])); +assign Y388v6 = (~(Wwfiw6 & Dxfiw6)); +assign Dxfiw6 = (Q8fiw6 | Kxfiw6); +assign Wwfiw6 = (Rxfiw6 & Yxfiw6); +assign Yxfiw6 = (~(Zf3ft6 & J8fiw6)); +assign Rxfiw6 = (~(O7fiw6 & U9p7z6[20])); +assign R388v6 = (~(Fyfiw6 & Myfiw6)); +assign Myfiw6 = (Q8fiw6 | Tyfiw6); +assign Fyfiw6 = (Azfiw6 & Hzfiw6); +assign Hzfiw6 = (~(Oe3ft6 & J8fiw6)); +assign Azfiw6 = (~(O7fiw6 & U9p7z6[21])); +assign K388v6 = (~(Ozfiw6 & Vzfiw6)); +assign Vzfiw6 = (Q8fiw6 | C0giw6); +assign Ozfiw6 = (J0giw6 & Q0giw6); +assign Q0giw6 = (~(Dd3ft6 & J8fiw6)); +assign J0giw6 = (~(O7fiw6 & U9p7z6[22])); +assign D388v6 = (~(X0giw6 & E1giw6)); +assign E1giw6 = (Q8fiw6 | L1giw6); +assign X0giw6 = (S1giw6 & Z1giw6); +assign Z1giw6 = (~(Sb3ft6 & J8fiw6)); +assign S1giw6 = (~(O7fiw6 & U9p7z6[23])); +assign W288v6 = (~(G2giw6 & N2giw6)); +assign N2giw6 = (Q8fiw6 | U2giw6); +assign G2giw6 = (B3giw6 & I3giw6); +assign I3giw6 = (~(Ha3ft6 & J8fiw6)); +assign B3giw6 = (~(O7fiw6 & U9p7z6[24])); +assign P288v6 = (~(P3giw6 & W3giw6)); +assign W3giw6 = (Q8fiw6 | D4giw6); +assign P3giw6 = (K4giw6 & R4giw6); +assign R4giw6 = (~(W83ft6 & J8fiw6)); +assign K4giw6 = (~(O7fiw6 & U9p7z6[25])); +assign I288v6 = (~(Y4giw6 & F5giw6)); +assign F5giw6 = (Q8fiw6 | M5giw6); +assign Y4giw6 = (T5giw6 & A6giw6); +assign A6giw6 = (~(L73ft6 & J8fiw6)); +assign T5giw6 = (~(O7fiw6 & U9p7z6[26])); +assign B288v6 = (~(H6giw6 & O6giw6)); +assign O6giw6 = (Q8fiw6 | V6giw6); +assign H6giw6 = (C7giw6 & J7giw6); +assign J7giw6 = (~(A63ft6 & J8fiw6)); +assign C7giw6 = (~(O7fiw6 & U9p7z6[27])); +assign U188v6 = (~(Q7giw6 & X7giw6)); +assign X7giw6 = (Q8fiw6 | E8giw6); +assign Q7giw6 = (L8giw6 & S8giw6); +assign S8giw6 = (~(P43ft6 & J8fiw6)); +assign L8giw6 = (~(O7fiw6 & U9p7z6[28])); +assign N188v6 = (~(Z8giw6 & G9giw6)); +assign G9giw6 = (Q8fiw6 | N9giw6); +assign Z8giw6 = (U9giw6 & Bagiw6); +assign Bagiw6 = (~(E33ft6 & J8fiw6)); +assign U9giw6 = (~(O7fiw6 & U9p7z6[29])); +assign G188v6 = (~(Iagiw6 & Pagiw6)); +assign Pagiw6 = (Q8fiw6 | Wagiw6); +assign Iagiw6 = (Dbgiw6 & Kbgiw6); +assign Kbgiw6 = (~(T13ft6 & J8fiw6)); +assign Dbgiw6 = (~(O7fiw6 & U9p7z6[30])); +assign Z088v6 = (~(Rbgiw6 & Ybgiw6)); +assign Ybgiw6 = (Q8fiw6 | Fcgiw6); +assign Rbgiw6 = (Mcgiw6 & Tcgiw6); +assign Tcgiw6 = (~(I03ft6 & J8fiw6)); +assign J8fiw6 = (Adgiw6 & Q8fiw6); +assign Adgiw6 = (!O7fiw6); +assign Mcgiw6 = (~(O7fiw6 & U9p7z6[31])); +assign S088v6 = (~(Hdgiw6 & Odgiw6)); +assign Odgiw6 = (~(Vdgiw6 & Zidiw6)); +assign Zidiw6 = (~(Cegiw6 | Kygnv6)); +assign Vdgiw6 = (Cx5ov6 & Fs4ft6); +assign Hdgiw6 = (~(Hc2ft6 & K94iw6)); +assign L088v6 = (~(Jegiw6 & Qegiw6)); +assign Qegiw6 = (~(Xegiw6 & U42nv6)); +assign Jegiw6 = (Tbq7z6[0] ? Lfgiw6 : Efgiw6); +assign E088v6 = (~(Sfgiw6 & Zfgiw6)); +assign Zfgiw6 = (~(Xegiw6 & B52nv6)); +assign Sfgiw6 = (Tbq7z6[1] ? Nggiw6 : Gggiw6); +assign Gggiw6 = (~(Uggiw6 & Tbq7z6[0])); +assign Xz78v6 = (~(Bhgiw6 & Ihgiw6)); +assign Ihgiw6 = (Phgiw6 | Fhrnv6); +assign Bhgiw6 = (Tbq7z6[2] ? Digiw6 : Whgiw6); +assign Digiw6 = (Nggiw6 & Kigiw6); +assign Kigiw6 = (Efgiw6 | Tbq7z6[1]); +assign Nggiw6 = (Lfgiw6 & Rigiw6); +assign Rigiw6 = (Efgiw6 | Tbq7z6[0]); +assign Whgiw6 = (~(Yigiw6 & Uggiw6)); +assign Qz78v6 = (~(Fjgiw6 & Mjgiw6)); +assign Mjgiw6 = (~(Xegiw6 & P52nv6)); +assign Fjgiw6 = (Tbq7z6[3] ? Akgiw6 : Tjgiw6); +assign Tjgiw6 = (~(Hkgiw6 & Uggiw6)); +assign Jz78v6 = (~(Okgiw6 & Vkgiw6)); +assign Vkgiw6 = (Phgiw6 | Zaeiw6); +assign Okgiw6 = (Tbq7z6[4] ? Jlgiw6 : Clgiw6); +assign Jlgiw6 = (Akgiw6 & Qlgiw6); +assign Qlgiw6 = (Efgiw6 | Tbq7z6[3]); +assign Akgiw6 = (Lfgiw6 & Xlgiw6); +assign Xlgiw6 = (Efgiw6 | Hkgiw6); +assign Clgiw6 = (~(Emgiw6 & Hkgiw6)); +assign Emgiw6 = (Uggiw6 & Tbq7z6[3]); +assign Cz78v6 = (~(Lmgiw6 & Smgiw6)); +assign Smgiw6 = (~(Xegiw6 & D62nv6)); +assign Lmgiw6 = (Tbq7z6[5] ? Gngiw6 : Zmgiw6); +assign Zmgiw6 = (~(Nngiw6 & Uggiw6)); +assign Vy78v6 = (~(Ungiw6 & Bogiw6)); +assign Bogiw6 = (~(Xegiw6 & K62nv6)); +assign Xegiw6 = (!Phgiw6); +assign Ungiw6 = (Tbq7z6[6] ? Pogiw6 : Iogiw6); +assign Oy78v6 = (~(Wogiw6 & Dpgiw6)); +assign Dpgiw6 = (Phgiw6 | Egfiw6); +assign Wogiw6 = (Tbq7z6[7] ? Rpgiw6 : Kpgiw6); +assign Rpgiw6 = (Pogiw6 & Ypgiw6); +assign Ypgiw6 = (~(Uggiw6 & Fqgiw6)); +assign Pogiw6 = (Gngiw6 & Mqgiw6); +assign Mqgiw6 = (Efgiw6 | Tbq7z6[5]); +assign Gngiw6 = (Lfgiw6 & Tqgiw6); +assign Tqgiw6 = (Efgiw6 | Nngiw6); +assign Kpgiw6 = (Iogiw6 | Fqgiw6); +assign Fqgiw6 = (!Tbq7z6[6]); +assign Iogiw6 = (~(Argiw6 & Nngiw6)); +assign Argiw6 = (Uggiw6 & Tbq7z6[5]); +assign Uggiw6 = (!Efgiw6); +assign Efgiw6 = (~(Hrgiw6 & Orgiw6)); +assign Hrgiw6 = (Lfgiw6 & Phgiw6); +assign Lfgiw6 = (Vrgiw6 | Csgiw6); +assign Vrgiw6 = (~(Orgiw6 & Phgiw6)); +assign Phgiw6 = (~(Jsgiw6 & Qsgiw6)); +assign Orgiw6 = (~(Xsgiw6 & Etgiw6)); +assign Xsgiw6 = (Ltgiw6 & Ej5iw6); +assign Ltgiw6 = (~(Xkq7z6[21] & HTMDHBURST[0])); +assign Hy78v6 = (~(Stgiw6 & Ztgiw6)); +assign Ztgiw6 = (~(Gugiw6 & U42nv6)); +assign Stgiw6 = (Kfq7z6[0] ? Uugiw6 : Nugiw6); +assign Ay78v6 = (~(Bvgiw6 & Ivgiw6)); +assign Ivgiw6 = (~(Gugiw6 & B52nv6)); +assign Bvgiw6 = (Kfq7z6[1] ? Wvgiw6 : Pvgiw6); +assign Pvgiw6 = (~(Dwgiw6 & Kfq7z6[0])); +assign Tx78v6 = (~(Kwgiw6 & Rwgiw6)); +assign Rwgiw6 = (Ywgiw6 | Fhrnv6); +assign Kwgiw6 = (Kfq7z6[2] ? Mxgiw6 : Fxgiw6); +assign Mxgiw6 = (Wvgiw6 & Txgiw6); +assign Txgiw6 = (Nugiw6 | Kfq7z6[1]); +assign Wvgiw6 = (Uugiw6 & Aygiw6); +assign Aygiw6 = (Nugiw6 | Kfq7z6[0]); +assign Fxgiw6 = (~(Hygiw6 & Dwgiw6)); +assign Mx78v6 = (~(Oygiw6 & Vygiw6)); +assign Vygiw6 = (~(Gugiw6 & P52nv6)); +assign Oygiw6 = (Kfq7z6[3] ? Jzgiw6 : Czgiw6); +assign Czgiw6 = (~(Qzgiw6 & Dwgiw6)); +assign Fx78v6 = (~(Xzgiw6 & E0hiw6)); +assign E0hiw6 = (Ywgiw6 | Zaeiw6); +assign Xzgiw6 = (Kfq7z6[4] ? S0hiw6 : L0hiw6); +assign S0hiw6 = (Jzgiw6 & Z0hiw6); +assign Z0hiw6 = (Nugiw6 | Kfq7z6[3]); +assign Jzgiw6 = (Uugiw6 & G1hiw6); +assign G1hiw6 = (Nugiw6 | Qzgiw6); +assign L0hiw6 = (~(N1hiw6 & Qzgiw6)); +assign N1hiw6 = (Dwgiw6 & Kfq7z6[3]); +assign Yw78v6 = (~(U1hiw6 & B2hiw6)); +assign B2hiw6 = (~(Gugiw6 & D62nv6)); +assign U1hiw6 = (Kfq7z6[5] ? P2hiw6 : I2hiw6); +assign I2hiw6 = (~(W2hiw6 & Dwgiw6)); +assign Rw78v6 = (~(D3hiw6 & K3hiw6)); +assign K3hiw6 = (~(Gugiw6 & K62nv6)); +assign Gugiw6 = (!Ywgiw6); +assign D3hiw6 = (Kfq7z6[6] ? Y3hiw6 : R3hiw6); +assign Kw78v6 = (~(F4hiw6 & M4hiw6)); +assign M4hiw6 = (Ywgiw6 | Egfiw6); +assign F4hiw6 = (Kfq7z6[7] ? A5hiw6 : T4hiw6); +assign A5hiw6 = (Y3hiw6 & H5hiw6); +assign H5hiw6 = (~(Dwgiw6 & O5hiw6)); +assign Y3hiw6 = (P2hiw6 & V5hiw6); +assign V5hiw6 = (Nugiw6 | Kfq7z6[5]); +assign P2hiw6 = (Uugiw6 & C6hiw6); +assign C6hiw6 = (Nugiw6 | W2hiw6); +assign T4hiw6 = (R3hiw6 | O5hiw6); +assign O5hiw6 = (!Kfq7z6[6]); +assign R3hiw6 = (~(J6hiw6 & W2hiw6)); +assign J6hiw6 = (Dwgiw6 & Kfq7z6[5]); +assign Dwgiw6 = (!Nugiw6); +assign Nugiw6 = (~(Q6hiw6 & X6hiw6)); +assign Q6hiw6 = (Uugiw6 & Ywgiw6); +assign Uugiw6 = (E7hiw6 | L7hiw6); +assign E7hiw6 = (~(X6hiw6 & Ywgiw6)); +assign Ywgiw6 = (~(Jsgiw6 & S7hiw6)); +assign X6hiw6 = (~(Z7hiw6 & Etgiw6)); +assign Z7hiw6 = (G8hiw6 & Mn5iw6); +assign G8hiw6 = (~(Xkq7z6[19] & HTMDHBURST[0])); +assign Dw78v6 = (~(N8hiw6 & U8hiw6)); +assign U8hiw6 = (~(B9hiw6 & I9hiw6)); +assign I9hiw6 = (P9hiw6 & W9hiw6); +assign W9hiw6 = (W5q7z6[1] | W5q7z6[0]); +assign P9hiw6 = (~(Txadt6 | Gw2ft6)); +assign B9hiw6 = (Dahiw6 & Qb4ft6); +assign Dahiw6 = (A9i8v6 & HTMDHBURST[0]); +assign N8hiw6 = (~(Kahiw6 & Rahiw6)); +assign Rahiw6 = (Yahiw6 & Fbhiw6); +assign Fbhiw6 = (Hu2ft6 ^ Mbhiw6); +assign Yahiw6 = (Tbhiw6 & Zb1nv6); +assign Tbhiw6 = (~(Gw2ft6 & O7fiw6)); +assign Kahiw6 = (Qb4ft6 & HTMDHBURST[0]); +assign Wv78v6 = (~(Achiw6 & Hchiw6)); +assign Hchiw6 = (Ochiw6 & Vchiw6); +assign Ochiw6 = (~(Cdhiw6 & Y7q7z6[0])); +assign Achiw6 = (Jdhiw6 & Qdhiw6); +assign Qdhiw6 = (~(W3q7z6[0] & Xdhiw6)); +assign Jdhiw6 = (~(Eehiw6 & X9q7z6[0])); +assign Pv78v6 = (~(Lehiw6 & Sehiw6)); +assign Sehiw6 = (W3q7z6[1] ? Zehiw6 : Vchiw6); +assign Lehiw6 = (Gfhiw6 & Nfhiw6); +assign Nfhiw6 = (~(Cdhiw6 & Y7q7z6[1])); +assign Gfhiw6 = (~(Eehiw6 & X9q7z6[1])); +assign Iv78v6 = (~(Ufhiw6 & Bghiw6)); +assign Bghiw6 = (W3q7z6[2] ? Pghiw6 : Ighiw6); +assign Ighiw6 = (Vchiw6 | W3q7z6[1]); +assign Vchiw6 = (~(Wghiw6 & Dhhiw6)); +assign Dhhiw6 = (~(Khhiw6 | W3q7z6[0])); +assign Ufhiw6 = (Rhhiw6 & Yhhiw6); +assign Yhhiw6 = (~(Cdhiw6 & Y7q7z6[2])); +assign Rhhiw6 = (~(Eehiw6 & X9q7z6[2])); +assign Bv78v6 = (~(Fihiw6 & Mihiw6)); +assign Mihiw6 = (~(Eehiw6 & X9q7z6[3])); +assign Fihiw6 = (Tihiw6 & Ajhiw6); +assign Ajhiw6 = (~(W3q7z6[3] & Hjhiw6)); +assign Hjhiw6 = (~(Pghiw6 & Ojhiw6)); +assign Ojhiw6 = (~(W3q7z6[2] & Vjhiw6)); +assign Pghiw6 = (Zehiw6 & Ckhiw6); +assign Ckhiw6 = (~(W3q7z6[1] & Vjhiw6)); +assign Zehiw6 = (Jkhiw6 & Qkhiw6); +assign Qkhiw6 = (~(W3q7z6[0] & Vjhiw6)); +assign Tihiw6 = (~(Cdhiw6 & Y7q7z6[3])); +assign Cdhiw6 = (Wghiw6 & Khhiw6); +assign Wghiw6 = (Jkhiw6 & Vjhiw6); +assign Jkhiw6 = (!Xdhiw6); +assign Xdhiw6 = (~(Eehiw6 | Xkhiw6)); +assign Eehiw6 = (!Vjhiw6); +assign Vjhiw6 = (~(Etgiw6 & Elhiw6)); +assign Elhiw6 = (~(Llhiw6 & Slhiw6)); +assign Slhiw6 = (~(Zlhiw6 & Gmhiw6)); +assign Zlhiw6 = (~(Xmfiw6 & Nmhiw6)); +assign Nmhiw6 = (C0giw6 | Xkq7z6[22]); +assign Llhiw6 = (Umhiw6 | HTMDHBURST[0]); +assign Uu78v6 = (Inhiw6 ? Cu5ft6 : Bnhiw6); +assign Nu78v6 = (~(Pnhiw6 & Wnhiw6)); +assign Wnhiw6 = (~(W2adt6 & Dohiw6)); +assign Dohiw6 = (D16ft6 | Kohiw6); +assign Kohiw6 = (~(Sdo7v6 | K2adt6)); +assign Pnhiw6 = (~(Sdo7v6 & D42iw6)); +assign Gu78v6 = (!Rohiw6); +assign Rohiw6 = (Mphiw6 ? Fphiw6 : Yohiw6); +assign Fphiw6 = (~(W2adt6 & Tphiw6)); +assign Tphiw6 = (!K2adt6); +assign Zt78v6 = (W5fov6 ? Pjb7z6[2] : S82iw6); +assign St78v6 = (W5fov6 ? Pjb7z6[18] : Aqhiw6); +assign Lt78v6 = (W5fov6 ? Pjb7z6[17] : Hqhiw6); +assign Et78v6 = (!Oqhiw6); +assign Oqhiw6 = (W5fov6 ? Crhiw6 : Vqhiw6); +assign Xs78v6 = (W5fov6 ? Pjb7z6[15] : Wjeiw6); +assign Qs78v6 = (W5fov6 ? Pjb7z6[14] : Pjeiw6); +assign Js78v6 = (W5fov6 ? Pjb7z6[13] : Dkeiw6); +assign Cs78v6 = (W5fov6 ? Pjb7z6[12] : Jrhiw6); +assign Vr78v6 = (Xrhiw6 ? Qrhiw6 : Jke7v6); +assign Qrhiw6 = (~(K2adt6 | W2adt6)); +assign Or78v6 = (W5fov6 ? Pjb7z6[11] : A62iw6); +assign Hr78v6 = (W5fov6 ? Pjb7z6[10] : O62iw6); +assign Ar78v6 = (W5fov6 ? Pjb7z6[9] : V62iw6); +assign Tq78v6 = (W5fov6 ? Pjb7z6[8] : C72iw6); +assign Mq78v6 = (W5fov6 ? Pjb7z6[7] : J72iw6); +assign Fq78v6 = (W5fov6 ? Pjb7z6[6] : Q72iw6); +assign Yp78v6 = (W5fov6 ? Pjb7z6[5] : X72iw6); +assign W5fov6 = (!Sdo7v6); +assign Rp78v6 = (Sdo7v6 ? E82iw6 : Pjb7z6[4]); +assign Kp78v6 = (Sdo7v6 ? L82iw6 : Pjb7z6[3]); +assign Dp78v6 = (Lshiw6 ? Eshiw6 : Xu67v6); +assign Lshiw6 = (Sshiw6 & L877v6); +assign Sshiw6 = (Zshiw6 & Gthiw6); +assign Wo78v6 = (Nthiw6 ? U42nv6 : Iy1nz6[0]); +assign Po78v6 = (Nthiw6 ? P52nv6 : Gie7v6); +assign Io78v6 = (Nthiw6 ? B52nv6 : Iy1nz6[1]); +assign Nthiw6 = (Uthiw6 & Buhiw6); +assign Uthiw6 = (Iuhiw6 & Puhiw6); +assign Bo78v6 = (Wuhiw6 ? Pk1nz6[0] : U42nv6); +assign Un78v6 = (~(Nyd7v6 ^ Wuhiw6)); +assign Nn78v6 = (Wuhiw6 ? Pk1nz6[12] : Emhov6); +assign Gn78v6 = (Wuhiw6 ? Pk1nz6[11] : Dz6iw6); +assign Zm78v6 = (Wuhiw6 ? Pk1nz6[10] : H17iw6); +assign Sm78v6 = (Wuhiw6 ? Pk1nz6[9] : J27iw6); +assign Lm78v6 = (Wuhiw6 ? Pk1nz6[8] : U47iw6); +assign Wuhiw6 = (!Dvhiw6); +assign Em78v6 = (Dvhiw6 ? R62nv6 : Pk1nz6[7]); +assign Xl78v6 = (Dvhiw6 ? K62nv6 : Pk1nz6[6]); +assign Ql78v6 = (Dvhiw6 ? D62nv6 : Pk1nz6[5]); +assign Jl78v6 = (Dvhiw6 ? W52nv6 : Pk1nz6[4]); +assign Cl78v6 = (Dvhiw6 ? P52nv6 : Pk1nz6[3]); +assign Vk78v6 = (Dvhiw6 ? I52nv6 : Pk1nz6[2]); +assign Ok78v6 = (Dvhiw6 ? B52nv6 : Pk1nz6[1]); +assign Dvhiw6 = (Kvhiw6 & Rvhiw6); +assign Kvhiw6 = (Yvhiw6 & Iuhiw6); +assign Hk78v6 = (Fwhiw6 ? Nl1nz6[0] : U42nv6); +assign Ak78v6 = (Fwhiw6 ? Nl1nz6[1] : B52nv6); +assign Fwhiw6 = (~(Rvhiw6 & Mwhiw6)); +assign Tj78v6 = (~(Twhiw6 & Axhiw6)); +assign Axhiw6 = (~(Hxhiw6 & Oxhiw6)); +assign Oxhiw6 = (Vxhiw6 & Cyhiw6); +assign Cyhiw6 = (Jyhiw6 & Qyhiw6); +assign Qyhiw6 = (~(Td2nz6[8] | Td2nz6[9])); +assign Jyhiw6 = (~(Td2nz6[6] | Td2nz6[7])); +assign Vxhiw6 = (Xyhiw6 & Ezhiw6); +assign Xyhiw6 = (~(Td2nz6[4] | Td2nz6[5])); +assign Hxhiw6 = (Lzhiw6 & Szhiw6); +assign Szhiw6 = (Zzhiw6 & G0iiw6); +assign Zzhiw6 = (~(Td2nz6[1] | Td2nz6[2])); +assign Lzhiw6 = (N0iiw6 & U0iiw6); +assign N0iiw6 = (~(Td2nz6[10] | Td2nz6[11])); +assign Mj78v6 = (~(B1iiw6 & I1iiw6)); +assign I1iiw6 = (~(Tpf7v6 & P1iiw6)); +assign B1iiw6 = (~(W1iiw6 & Td2nz6[0])); +assign Fj78v6 = (~(D2iiw6 & K2iiw6)); +assign K2iiw6 = (~(Jof7v6 & P1iiw6)); +assign D2iiw6 = (~(W1iiw6 & Td2nz6[1])); +assign Yi78v6 = (~(R2iiw6 & Y2iiw6)); +assign Y2iiw6 = (~(Zmf7v6 & P1iiw6)); +assign R2iiw6 = (~(W1iiw6 & Td2nz6[2])); +assign Ri78v6 = (~(F3iiw6 & M3iiw6)); +assign M3iiw6 = (~(Plf7v6 & P1iiw6)); +assign F3iiw6 = (~(W1iiw6 & Td2nz6[3])); +assign Ki78v6 = (~(T3iiw6 & A4iiw6)); +assign A4iiw6 = (~(Fkf7v6 & P1iiw6)); +assign T3iiw6 = (~(W1iiw6 & Td2nz6[4])); +assign Di78v6 = (~(H4iiw6 & O4iiw6)); +assign O4iiw6 = (~(Vif7v6 & P1iiw6)); +assign H4iiw6 = (~(W1iiw6 & Td2nz6[5])); +assign Wh78v6 = (~(V4iiw6 & C5iiw6)); +assign C5iiw6 = (~(Lhf7v6 & P1iiw6)); +assign V4iiw6 = (~(W1iiw6 & Td2nz6[6])); +assign Ph78v6 = (~(J5iiw6 & Q5iiw6)); +assign Q5iiw6 = (~(Bgf7v6 & P1iiw6)); +assign J5iiw6 = (~(W1iiw6 & Td2nz6[7])); +assign Ih78v6 = (~(X5iiw6 & E6iiw6)); +assign E6iiw6 = (~(Ref7v6 & P1iiw6)); +assign X5iiw6 = (~(W1iiw6 & Td2nz6[8])); +assign Bh78v6 = (~(L6iiw6 & S6iiw6)); +assign S6iiw6 = (~(Hdf7v6 & P1iiw6)); +assign L6iiw6 = (~(W1iiw6 & Td2nz6[9])); +assign Ug78v6 = (~(Z6iiw6 & G7iiw6)); +assign G7iiw6 = (~(Xbf7v6 & P1iiw6)); +assign Z6iiw6 = (~(W1iiw6 & Td2nz6[10])); +assign Ng78v6 = (~(N7iiw6 & U7iiw6)); +assign U7iiw6 = (~(Naf7v6 & P1iiw6)); +assign N7iiw6 = (~(W1iiw6 & Td2nz6[11])); +assign Gg78v6 = (~(B8iiw6 & I8iiw6)); +assign I8iiw6 = (~(D9f7v6 & P1iiw6)); +assign P1iiw6 = (P8iiw6 & W8iiw6); +assign P8iiw6 = (D9iiw6 & K9iiw6); +assign K9iiw6 = (!W1iiw6); +assign D9iiw6 = (~(R9iiw6 & Y9iiw6)); +assign Y9iiw6 = (Faiiw6 & Maiiw6); +assign Maiiw6 = (Taiiw6 & Abiiw6); +assign Abiiw6 = (Hbiiw6 & Obiiw6); +assign Obiiw6 = (Pk1nz6[0] ^ U0iiw6); +assign U0iiw6 = (!Td2nz6[0]); +assign Hbiiw6 = (~(Pk1nz6[10] ^ Td2nz6[10])); +assign Taiiw6 = (Vbiiw6 & Cciiw6); +assign Cciiw6 = (~(Pk1nz6[11] ^ Td2nz6[11])); +assign Vbiiw6 = (Pk1nz6[12] ^ G0iiw6); +assign G0iiw6 = (!Td2nz6[12]); +assign Faiiw6 = (Jciiw6 & Qciiw6); +assign Qciiw6 = (~(Pk1nz6[2] ^ Td2nz6[2])); +assign Jciiw6 = (Xciiw6 & Ediiw6); +assign Ediiw6 = (Pk1nz6[3] ^ Ezhiw6); +assign Ezhiw6 = (!Td2nz6[3]); +assign Xciiw6 = (~(Pk1nz6[1] ^ Td2nz6[1])); +assign R9iiw6 = (Ldiiw6 & Sdiiw6); +assign Sdiiw6 = (Zdiiw6 & Geiiw6); +assign Geiiw6 = (~(Pk1nz6[5] ^ Td2nz6[5])); +assign Zdiiw6 = (Neiiw6 & Ueiiw6); +assign Ueiiw6 = (~(Pk1nz6[6] ^ Td2nz6[6])); +assign Neiiw6 = (~(Pk1nz6[4] ^ Td2nz6[4])); +assign Ldiiw6 = (Bfiiw6 & Ifiiw6); +assign Ifiiw6 = (~(Pk1nz6[8] ^ Td2nz6[8])); +assign Bfiiw6 = (Pfiiw6 & Wfiiw6); +assign Wfiiw6 = (~(Pk1nz6[9] ^ Td2nz6[9])); +assign Pfiiw6 = (~(Pk1nz6[7] ^ Td2nz6[7])); +assign B8iiw6 = (~(W1iiw6 & Td2nz6[12])); +assign W1iiw6 = (Dgiiw6 & W8iiw6); +assign W8iiw6 = (Fhh7v6 ^ Drf7v6); +assign Dgiiw6 = (M81nv6 & Vuf7v6); +assign Zf78v6 = (Kgiiw6 ? B52nv6 : Lge7v6); +assign Kgiiw6 = (Buhiw6 & Rgiiw6); +assign Buhiw6 = (Rvhiw6 & J02nz6[2]); +assign Sf78v6 = (Ygiiw6 ? U42nv6 : Hce7v6); +assign Ygiiw6 = (Fhiiw6 & Rvhiw6); +assign Fhiiw6 = (Mhiiw6 & Thiiw6); +assign Lf78v6 = (Aiiiw6 ? Eee7v6 : U42nv6); +assign Ef78v6 = (Aiiiw6 ? Hae7v6 : B52nv6); +assign Aiiiw6 = (~(Rvhiw6 & Hiiiw6)); +assign Xe78v6 = (~(Oiiiw6 & Viiiw6)); +assign Viiiw6 = (~(Jw1nz6[0] & Cjiiw6)); +assign Cjiiw6 = (~(Jjiiw6 & U42nv6)); +assign Oiiiw6 = (~(Qjiiw6 & U42nv6)); +assign Qe78v6 = (~(Xjiiw6 & Ekiiw6)); +assign Ekiiw6 = (~(Jw1nz6[1] & Lkiiw6)); +assign Lkiiw6 = (~(Jjiiw6 & B52nv6)); +assign Xjiiw6 = (~(Qjiiw6 & B52nv6)); +assign Je78v6 = (~(Skiiw6 & Zkiiw6)); +assign Zkiiw6 = (~(Jw1nz6[2] & Gliiw6)); +assign Gliiw6 = (~(Jjiiw6 & I52nv6)); +assign Skiiw6 = (~(Qjiiw6 & I52nv6)); +assign Ce78v6 = (~(Nliiw6 & Uliiw6)); +assign Uliiw6 = (~(Jw1nz6[3] & Bmiiw6)); +assign Bmiiw6 = (~(Jjiiw6 & P52nv6)); +assign Nliiw6 = (~(Qjiiw6 & P52nv6)); +assign Qjiiw6 = (Jjiiw6 & Imiiw6); +assign Jjiiw6 = (Rvhiw6 & Pmiiw6); +assign Rvhiw6 = (Wmiiw6 & Xrhiw6); +assign Xrhiw6 = (Dniiw6 & Kniiw6); +assign Wmiiw6 = (K2adt6 & W2adt6); +assign Vd78v6 = (~(Rniiw6 & Yniiw6)); +assign Yniiw6 = (~(Xc5ov6 & Sk5ov6)); +assign Sk5ov6 = (!Foiiw6); +assign Foiiw6 = (U81nz6[2] ? Toiiw6 : Moiiw6); +assign Toiiw6 = (Nl5ov6 & Ld5ov6); +assign Moiiw6 = (~(Ul5ov6 & Nl5ov6)); +assign Xc5ov6 = (Apiiw6 & Cc5ov6); +assign Rniiw6 = (~(U81nz6[2] & Sd5ov6)); +assign Sd5ov6 = (!Apiiw6); +assign Od78v6 = (~(Hpiiw6 & Opiiw6)); +assign Opiiw6 = (~(Vpiiw6 & Hcget6)); +assign Vpiiw6 = (U3cet6 & Cqiiw6); +assign Hpiiw6 = (~(Jd47v6 & Jqiiw6)); +assign Jqiiw6 = (Hcget6 | Qqiiw6); +assign Qqiiw6 = (K3jnv6 & Byeov6); +assign Hd78v6 = (~(Xqiiw6 & Eriiw6)); +assign Eriiw6 = (~(Fjb7z6[0] & Lriiw6)); +assign Xqiiw6 = (~(Sriiw6 & Zriiw6)); +assign Ad78v6 = (~(Gsiiw6 & Nsiiw6)); +assign Nsiiw6 = (~(Oc47v6 & Usiiw6)); +assign Tc78v6 = (~(Btiiw6 & Itiiw6)); +assign Itiiw6 = (~(O1fov6 & RXEV)); +assign Btiiw6 = (~(Ei77z6 & V1fov6)); +assign Mc78v6 = (~(Ptiiw6 & Wtiiw6)); +assign Wtiiw6 = (~(INTISR[62] & O1fov6)); +assign Ptiiw6 = (~(C797z6 & V1fov6)); +assign Fc78v6 = (~(Duiiw6 & Kuiiw6)); +assign Kuiiw6 = (~(INTISR[61] & O1fov6)); +assign Duiiw6 = (~(K797z6 & V1fov6)); +assign Yb78v6 = (~(Ruiiw6 & Yuiiw6)); +assign Yuiiw6 = (~(INTISR[60] & O1fov6)); +assign Ruiiw6 = (~(S797z6 & V1fov6)); +assign Rb78v6 = (~(Fviiw6 & Mviiw6)); +assign Mviiw6 = (~(INTISR[59] & O1fov6)); +assign Fviiw6 = (~(A897z6 & V1fov6)); +assign Kb78v6 = (~(Tviiw6 & Awiiw6)); +assign Awiiw6 = (~(INTISR[58] & O1fov6)); +assign Tviiw6 = (~(I897z6 & V1fov6)); +assign Db78v6 = (~(Hwiiw6 & Owiiw6)); +assign Owiiw6 = (~(INTISR[57] & O1fov6)); +assign Hwiiw6 = (~(Q897z6 & V1fov6)); +assign Wa78v6 = (~(Vwiiw6 & Cxiiw6)); +assign Cxiiw6 = (~(INTISR[56] & O1fov6)); +assign Vwiiw6 = (~(Y897z6 & V1fov6)); +assign Pa78v6 = (~(Jxiiw6 & Qxiiw6)); +assign Qxiiw6 = (~(INTISR[55] & O1fov6)); +assign Jxiiw6 = (~(G997z6 & V1fov6)); +assign Ia78v6 = (~(Xxiiw6 & Eyiiw6)); +assign Eyiiw6 = (~(INTISR[54] & O1fov6)); +assign Xxiiw6 = (~(O997z6 & V1fov6)); +assign Ba78v6 = (~(Lyiiw6 & Syiiw6)); +assign Syiiw6 = (~(INTISR[53] & O1fov6)); +assign Lyiiw6 = (~(W997z6 & V1fov6)); +assign U978v6 = (~(Zyiiw6 & Gziiw6)); +assign Gziiw6 = (~(INTISR[52] & O1fov6)); +assign Zyiiw6 = (~(Ea97z6 & V1fov6)); +assign N978v6 = (~(Nziiw6 & Uziiw6)); +assign Uziiw6 = (~(INTISR[51] & O1fov6)); +assign Nziiw6 = (~(Ma97z6 & V1fov6)); +assign G978v6 = (~(B0jiw6 & I0jiw6)); +assign I0jiw6 = (~(INTISR[50] & O1fov6)); +assign B0jiw6 = (~(Ua97z6 & V1fov6)); +assign Z878v6 = (~(P0jiw6 & W0jiw6)); +assign W0jiw6 = (~(INTISR[49] & O1fov6)); +assign P0jiw6 = (~(Cb97z6 & V1fov6)); +assign S878v6 = (~(D1jiw6 & K1jiw6)); +assign K1jiw6 = (~(INTISR[48] & O1fov6)); +assign D1jiw6 = (~(Kb97z6 & V1fov6)); +assign L878v6 = (~(R1jiw6 & Y1jiw6)); +assign Y1jiw6 = (~(INTISR[47] & O1fov6)); +assign R1jiw6 = (~(Sb97z6 & V1fov6)); +assign E878v6 = (~(F2jiw6 & M2jiw6)); +assign M2jiw6 = (~(INTISR[46] & O1fov6)); +assign F2jiw6 = (~(Ac97z6 & V1fov6)); +assign X778v6 = (~(T2jiw6 & A3jiw6)); +assign A3jiw6 = (~(INTISR[45] & O1fov6)); +assign T2jiw6 = (~(Ic97z6 & V1fov6)); +assign Q778v6 = (~(H3jiw6 & O3jiw6)); +assign O3jiw6 = (~(INTISR[44] & O1fov6)); +assign H3jiw6 = (~(Qc97z6 & V1fov6)); +assign J778v6 = (~(V3jiw6 & C4jiw6)); +assign C4jiw6 = (~(INTISR[43] & O1fov6)); +assign V3jiw6 = (~(Yc97z6 & V1fov6)); +assign C778v6 = (~(J4jiw6 & Q4jiw6)); +assign Q4jiw6 = (~(INTISR[42] & O1fov6)); +assign J4jiw6 = (~(Gd97z6 & V1fov6)); +assign V678v6 = (~(X4jiw6 & E5jiw6)); +assign E5jiw6 = (~(INTISR[41] & O1fov6)); +assign X4jiw6 = (~(Od97z6 & V1fov6)); +assign O678v6 = (~(L5jiw6 & S5jiw6)); +assign S5jiw6 = (~(INTISR[40] & O1fov6)); +assign L5jiw6 = (~(Wd97z6 & V1fov6)); +assign H678v6 = (~(Z5jiw6 & G6jiw6)); +assign G6jiw6 = (~(INTISR[39] & O1fov6)); +assign Z5jiw6 = (~(Ee97z6 & V1fov6)); +assign A678v6 = (~(N6jiw6 & U6jiw6)); +assign U6jiw6 = (~(INTISR[38] & O1fov6)); +assign N6jiw6 = (~(Me97z6 & V1fov6)); +assign T578v6 = (~(B7jiw6 & I7jiw6)); +assign I7jiw6 = (~(INTISR[37] & O1fov6)); +assign B7jiw6 = (~(Ue97z6 & V1fov6)); +assign M578v6 = (~(P7jiw6 & W7jiw6)); +assign W7jiw6 = (~(INTISR[36] & O1fov6)); +assign P7jiw6 = (~(Cf97z6 & V1fov6)); +assign F578v6 = (~(D8jiw6 & K8jiw6)); +assign K8jiw6 = (~(INTISR[35] & O1fov6)); +assign D8jiw6 = (~(Kf97z6 & V1fov6)); +assign Y478v6 = (~(R8jiw6 & Y8jiw6)); +assign Y8jiw6 = (~(INTISR[34] & O1fov6)); +assign R8jiw6 = (~(Sf97z6 & V1fov6)); +assign R478v6 = (~(F9jiw6 & M9jiw6)); +assign M9jiw6 = (~(INTISR[33] & O1fov6)); +assign F9jiw6 = (~(Ag97z6 & V1fov6)); +assign K478v6 = (~(T9jiw6 & Aajiw6)); +assign Aajiw6 = (~(INTISR[32] & O1fov6)); +assign T9jiw6 = (~(Ig97z6 & V1fov6)); +assign D478v6 = (~(Hajiw6 & Oajiw6)); +assign Oajiw6 = (~(INTISR[31] & O1fov6)); +assign Hajiw6 = (~(Qg97z6 & V1fov6)); +assign W378v6 = (~(Vajiw6 & Cbjiw6)); +assign Cbjiw6 = (~(INTISR[30] & O1fov6)); +assign Vajiw6 = (~(Yg97z6 & V1fov6)); +assign P378v6 = (~(Jbjiw6 & Qbjiw6)); +assign Qbjiw6 = (~(INTISR[29] & O1fov6)); +assign Jbjiw6 = (~(Gh97z6 & V1fov6)); +assign I378v6 = (~(Xbjiw6 & Ecjiw6)); +assign Ecjiw6 = (~(INTISR[28] & O1fov6)); +assign Xbjiw6 = (~(Oh97z6 & V1fov6)); +assign B378v6 = (~(Lcjiw6 & Scjiw6)); +assign Scjiw6 = (~(INTISR[27] & O1fov6)); +assign Lcjiw6 = (~(Wh97z6 & V1fov6)); +assign U278v6 = (~(Zcjiw6 & Gdjiw6)); +assign Gdjiw6 = (~(INTISR[26] & O1fov6)); +assign Zcjiw6 = (~(Ei97z6 & V1fov6)); +assign N278v6 = (~(Ndjiw6 & Udjiw6)); +assign Udjiw6 = (~(INTISR[25] & O1fov6)); +assign Ndjiw6 = (~(Mi97z6 & V1fov6)); +assign G278v6 = (~(Bejiw6 & Iejiw6)); +assign Iejiw6 = (~(INTISR[24] & O1fov6)); +assign Bejiw6 = (~(Ui97z6 & V1fov6)); +assign Z178v6 = (~(Pejiw6 & Wejiw6)); +assign Wejiw6 = (~(INTISR[23] & O1fov6)); +assign Pejiw6 = (~(Cj97z6 & V1fov6)); +assign S178v6 = (~(Dfjiw6 & Kfjiw6)); +assign Kfjiw6 = (~(INTISR[22] & O1fov6)); +assign Dfjiw6 = (~(Kj97z6 & V1fov6)); +assign L178v6 = (~(Rfjiw6 & Yfjiw6)); +assign Yfjiw6 = (~(INTISR[21] & O1fov6)); +assign Rfjiw6 = (~(Sj97z6 & V1fov6)); +assign E178v6 = (~(Fgjiw6 & Mgjiw6)); +assign Mgjiw6 = (~(INTISR[20] & O1fov6)); +assign Fgjiw6 = (~(Ak97z6 & V1fov6)); +assign X078v6 = (~(Tgjiw6 & Ahjiw6)); +assign Ahjiw6 = (~(INTISR[19] & O1fov6)); +assign Tgjiw6 = (~(Ik97z6 & V1fov6)); +assign Q078v6 = (~(Hhjiw6 & Ohjiw6)); +assign Ohjiw6 = (~(INTISR[18] & O1fov6)); +assign Hhjiw6 = (~(Qk97z6 & V1fov6)); +assign J078v6 = (~(Vhjiw6 & Cijiw6)); +assign Cijiw6 = (~(INTISR[17] & O1fov6)); +assign Vhjiw6 = (~(Yk97z6 & V1fov6)); +assign C078v6 = (~(Jijiw6 & Qijiw6)); +assign Qijiw6 = (~(INTISR[16] & O1fov6)); +assign Jijiw6 = (~(Gl97z6 & V1fov6)); +assign Vz68v6 = (~(Xijiw6 & Ejjiw6)); +assign Ejjiw6 = (~(INTISR[15] & O1fov6)); +assign Xijiw6 = (~(Ol97z6 & V1fov6)); +assign Oz68v6 = (~(Ljjiw6 & Sjjiw6)); +assign Sjjiw6 = (~(INTISR[14] & O1fov6)); +assign Ljjiw6 = (~(Wl97z6 & V1fov6)); +assign Hz68v6 = (~(Zjjiw6 & Gkjiw6)); +assign Gkjiw6 = (~(INTISR[13] & O1fov6)); +assign Zjjiw6 = (~(Em97z6 & V1fov6)); +assign Az68v6 = (~(Nkjiw6 & Ukjiw6)); +assign Ukjiw6 = (~(INTISR[12] & O1fov6)); +assign Nkjiw6 = (~(Mm97z6 & V1fov6)); +assign Ty68v6 = (~(Bljiw6 & Iljiw6)); +assign Iljiw6 = (~(INTISR[11] & O1fov6)); +assign Bljiw6 = (~(Um97z6 & V1fov6)); +assign My68v6 = (~(Pljiw6 & Wljiw6)); +assign Wljiw6 = (~(INTISR[10] & O1fov6)); +assign Pljiw6 = (~(Cn97z6 & V1fov6)); +assign Fy68v6 = (~(Dmjiw6 & Kmjiw6)); +assign Kmjiw6 = (~(INTISR[9] & O1fov6)); +assign Dmjiw6 = (~(Kn97z6 & V1fov6)); +assign Yx68v6 = (~(Rmjiw6 & Ymjiw6)); +assign Ymjiw6 = (~(INTISR[8] & O1fov6)); +assign Rmjiw6 = (~(Sn97z6 & V1fov6)); +assign Rx68v6 = (~(Fnjiw6 & Mnjiw6)); +assign Mnjiw6 = (~(INTISR[7] & O1fov6)); +assign Fnjiw6 = (~(Ao97z6 & V1fov6)); +assign Kx68v6 = (~(Tnjiw6 & Aojiw6)); +assign Aojiw6 = (~(INTISR[6] & O1fov6)); +assign Tnjiw6 = (~(Io97z6 & V1fov6)); +assign Dx68v6 = (~(Hojiw6 & Oojiw6)); +assign Oojiw6 = (~(INTISR[5] & O1fov6)); +assign Hojiw6 = (~(Qo97z6 & V1fov6)); +assign Ww68v6 = (~(Vojiw6 & Cpjiw6)); +assign Cpjiw6 = (~(INTISR[4] & O1fov6)); +assign Vojiw6 = (~(Yo97z6 & V1fov6)); +assign Pw68v6 = (~(Jpjiw6 & Qpjiw6)); +assign Qpjiw6 = (~(INTISR[3] & O1fov6)); +assign Jpjiw6 = (~(Gp97z6 & V1fov6)); +assign Iw68v6 = (~(Xpjiw6 & Eqjiw6)); +assign Eqjiw6 = (~(INTISR[2] & O1fov6)); +assign Xpjiw6 = (~(Op97z6 & V1fov6)); +assign Bw68v6 = (~(Lqjiw6 & Sqjiw6)); +assign Sqjiw6 = (~(INTISR[1] & O1fov6)); +assign Lqjiw6 = (~(Wp97z6 & V1fov6)); +assign Uv68v6 = (~(Zqjiw6 & Grjiw6)); +assign Grjiw6 = (~(INTISR[0] & O1fov6)); +assign Zqjiw6 = (~(Eq97z6 & V1fov6)); +assign Nv68v6 = (~(Nrjiw6 & Urjiw6)); +assign Urjiw6 = (~(EDBGRQ & O1fov6)); +assign Nrjiw6 = (~(Mq97z6 & V1fov6)); +assign Gv68v6 = (~(Bsjiw6 & Isjiw6)); +assign Isjiw6 = (~(INTNMI & O1fov6)); +assign O1fov6 = (Psjiw6 & Usiiw6); +assign Bsjiw6 = (~(Uq97z6 & V1fov6)); +assign V1fov6 = (~(M6bdt6 & Psjiw6)); +assign Psjiw6 = (Oc47v6 | Sriiw6); +assign Zu68v6 = (~(Wsjiw6 & Dtjiw6)); +assign Wsjiw6 = (G7bdt6 & U42nv6); +assign Su68v6 = (Dtjiw6 ? I52nv6 : SYSRESETREQ); +assign Lu68v6 = (Dtjiw6 ? H17iw6 : Hsi7z6[2]); +assign Eu68v6 = (Dtjiw6 ? J27iw6 : Hsi7z6[1]); +assign Xt68v6 = (Dtjiw6 ? U47iw6 : Hsi7z6[0]); +assign Qt68v6 = (Ktjiw6 ? Z0iov6 : Pnb7z6[15]); +assign Jt68v6 = (Ktjiw6 ? U47iw6 : Qti7z6[8]); +assign Ct68v6 = (Ktjiw6 ? J27iw6 : Qti7z6[9]); +assign Vs68v6 = (Ktjiw6 ? H17iw6 : Pnb7z6[10]); +assign Os68v6 = (Ktjiw6 ? Dz6iw6 : Pnb7z6[11]); +assign Hs68v6 = (Ktjiw6 ? Emhov6 : Pnb7z6[12]); +assign As68v6 = (Ktjiw6 ? Guhov6 : Pnb7z6[13]); +assign Tr68v6 = (Ktjiw6 ? Bk6iw6 : Pnb7z6[14]); +assign Ktjiw6 = (Rtjiw6 & Bqi7z6[1]); +assign Mr68v6 = (Ytjiw6 ? Cx4iw6 : Pnb7z6[23]); +assign Fr68v6 = (Ytjiw6 ? Is5iw6 : Pnb7z6[16]); +assign Yq68v6 = (Ytjiw6 ? Gr5iw6 : Pnb7z6[17]); +assign Rq68v6 = (Ytjiw6 ? Jp5iw6 : Pnb7z6[18]); +assign Kq68v6 = (Ytjiw6 ? Mn5iw6 : Pnb7z6[19]); +assign Dq68v6 = (Ytjiw6 ? Bl5iw6 : Pnb7z6[20]); +assign Wp68v6 = (Ytjiw6 ? Ej5iw6 : Pnb7z6[21]); +assign Pp68v6 = (Ytjiw6 ? D85iw6 : Pnb7z6[22]); +assign Ytjiw6 = (Rtjiw6 & Bqi7z6[2]); +assign Ip68v6 = (Fujiw6 ? X0hov6 : Pnb7z6[31]); +assign Bp68v6 = (Fujiw6 ? Wf4iw6 : Pnb7z6[24]); +assign Uo68v6 = (Fujiw6 ? Iklov6 : Pnb7z6[25]); +assign No68v6 = (Fujiw6 ? E64iw6 : Pnb7z6[26]); +assign Go68v6 = (Fujiw6 ? H44iw6 : Pnb7z6[27]); +assign Zn68v6 = (Fujiw6 ? W14iw6 : Pnb7z6[28]); +assign Sn68v6 = (Fujiw6 ? Zz3iw6 : Pnb7z6[29]); +assign Ln68v6 = (Fujiw6 ? Ro3iw6 : Pnb7z6[30]); +assign Fujiw6 = (Rtjiw6 & Bqi7z6[3]); +assign En68v6 = (~(Mujiw6 & Tujiw6)); +assign Tujiw6 = (~(Qti7z6[7] & Avjiw6)); +assign Avjiw6 = (~(Rtjiw6 & Bqi7z6[0])); +assign Mujiw6 = (~(Rtjiw6 & O87iw6)); +assign Rtjiw6 = (Hvjiw6 & T68iw6); +assign Xm68v6 = (!Ovjiw6); +assign Ovjiw6 = (Kdmov6 ? I497z6 : Vvjiw6); +assign Qm68v6 = (~(Cwjiw6 & Jwjiw6)); +assign Jwjiw6 = (~(Qwjiw6 & Ysdiw6)); +assign Cwjiw6 = (~(Kdmov6 & Rnm7z6[0])); +assign Jm68v6 = (~(Xwjiw6 & Exjiw6)); +assign Exjiw6 = (~(Lxjiw6 & Qwjiw6)); +assign Xwjiw6 = (~(Kdmov6 & Rnm7z6[1])); +assign Cm68v6 = (~(Sxjiw6 & Zxjiw6)); +assign Zxjiw6 = (~(Qwjiw6 & Gyjiw6)); +assign Qwjiw6 = (Vvjiw6 & Mdonv6); +assign Vvjiw6 = (Nyjiw6 & Uyjiw6); +assign Uyjiw6 = (~(Bzjiw6 & I2yet6)); +assign Nyjiw6 = (Izjiw6 & Sgonv6); +assign Izjiw6 = (~(Lgonv6 & Zgonv6)); +assign Sxjiw6 = (~(Kdmov6 & Rnm7z6[2])); +assign Kdmov6 = (!Mdonv6); +assign Vl68v6 = (Jalov6 & Pzjiw6); +assign Pzjiw6 = (~(Wzjiw6 & D0kiw6)); +assign D0kiw6 = (~(K0kiw6 & Woyet6)); +assign K0kiw6 = (R0kiw6 & Y0kiw6); +assign R0kiw6 = (~(F1kiw6 & Znn7z6[0])); +assign F1kiw6 = (!M1kiw6); +assign Wzjiw6 = (~(T1kiw6 & A2kiw6)); +assign T1kiw6 = (~(H2kiw6 | M4xnv6)); +assign Jalov6 = (~(L1bdt6 | Qteet6)); +assign Ol68v6 = (~(O2kiw6 & V2kiw6)); +assign V2kiw6 = (~(C3kiw6 & J3kiw6)); +assign C3kiw6 = (Ebdiw6 & Q3kiw6); +assign O2kiw6 = (~(Zy1ft6 & X3kiw6)); +assign X3kiw6 = (~(E4kiw6 & J3kiw6)); +assign E4kiw6 = (Q3kiw6 & B52nv6); +assign Hl68v6 = (L4kiw6 ? K62nv6 : Ugtet6); +assign Al68v6 = (L4kiw6 ? R62nv6 : Tetet6); +assign Tk68v6 = (L4kiw6 ? U47iw6 : Sctet6); +assign Mk68v6 = (L4kiw6 ? J27iw6 : Ratet6); +assign Fk68v6 = (L4kiw6 ? H17iw6 : Q8tet6); +assign Yj68v6 = (L4kiw6 ? Dz6iw6 : P6tet6); +assign Rj68v6 = (L4kiw6 ? Emhov6 : O4tet6); +assign Kj68v6 = (L4kiw6 ? Guhov6 : N2tet6); +assign Dj68v6 = (L4kiw6 ? Bk6iw6 : M0tet6); +assign Wi68v6 = (L4kiw6 ? Z0iov6 : Lyset6); +assign Pi68v6 = (L4kiw6 ? Is5iw6 : Kwset6); +assign Ii68v6 = (L4kiw6 ? Gr5iw6 : Juset6); +assign Bi68v6 = (L4kiw6 ? Jp5iw6 : Isset6); +assign Uh68v6 = (L4kiw6 ? Mn5iw6 : Hqset6); +assign Nh68v6 = (L4kiw6 ? Bl5iw6 : Goset6); +assign Gh68v6 = (L4kiw6 ? Ej5iw6 : Fmset6); +assign Zg68v6 = (L4kiw6 ? D85iw6 : Ekset6); +assign Sg68v6 = (L4kiw6 ? Cx4iw6 : Diset6); +assign Lg68v6 = (L4kiw6 ? Wf4iw6 : Cgset6); +assign Eg68v6 = (L4kiw6 ? Iklov6 : Beset6); +assign Xf68v6 = (L4kiw6 ? E64iw6 : Acset6); +assign Qf68v6 = (L4kiw6 ? H44iw6 : Z9set6); +assign Jf68v6 = (L4kiw6 ? W14iw6 : Y7set6); +assign Cf68v6 = (L4kiw6 ? D62nv6 : Vitet6); +assign L4kiw6 = (J3kiw6 & S4kiw6); +assign Ve68v6 = (Z4kiw6 ? P52nv6 : W3p7z6[3]); +assign Oe68v6 = (Z4kiw6 ? W52nv6 : W3p7z6[4]); +assign He68v6 = (Z4kiw6 ? D62nv6 : W3p7z6[5]); +assign Ae68v6 = (Z4kiw6 ? K62nv6 : W3p7z6[6]); +assign Td68v6 = (Z4kiw6 ? R62nv6 : W3p7z6[7]); +assign Md68v6 = (Z4kiw6 ? U47iw6 : W3p7z6[8]); +assign Fd68v6 = (Z4kiw6 ? J27iw6 : W3p7z6[9]); +assign Yc68v6 = (Z4kiw6 ? H17iw6 : W3p7z6[10]); +assign Rc68v6 = (Z4kiw6 ? Dz6iw6 : W3p7z6[11]); +assign Kc68v6 = (Z4kiw6 ? Emhov6 : W3p7z6[12]); +assign Dc68v6 = (Z4kiw6 ? Guhov6 : W3p7z6[13]); +assign Wb68v6 = (Z4kiw6 ? Bk6iw6 : W3p7z6[14]); +assign Pb68v6 = (Z4kiw6 ? Z0iov6 : W3p7z6[15]); +assign Ib68v6 = (Z4kiw6 ? Is5iw6 : W3p7z6[16]); +assign Bb68v6 = (Z4kiw6 ? Gr5iw6 : W3p7z6[17]); +assign Ua68v6 = (Z4kiw6 ? Jp5iw6 : W3p7z6[18]); +assign Na68v6 = (Z4kiw6 ? Mn5iw6 : W3p7z6[19]); +assign Ga68v6 = (Z4kiw6 ? Bl5iw6 : W3p7z6[20]); +assign Z968v6 = (Z4kiw6 ? Ej5iw6 : W3p7z6[21]); +assign S968v6 = (Z4kiw6 ? D85iw6 : W3p7z6[22]); +assign L968v6 = (Z4kiw6 ? Cx4iw6 : W3p7z6[23]); +assign E968v6 = (Z4kiw6 ? Wf4iw6 : W3p7z6[24]); +assign X868v6 = (Z4kiw6 ? Iklov6 : W3p7z6[25]); +assign Q868v6 = (Z4kiw6 ? E64iw6 : W3p7z6[26]); +assign J868v6 = (Z4kiw6 ? H44iw6 : W3p7z6[27]); +assign C868v6 = (Z4kiw6 ? W14iw6 : W3p7z6[28]); +assign V768v6 = (Z4kiw6 ? Ro3iw6 : Nw1ft6); +assign O768v6 = (Z4kiw6 ? X0hov6 : Tx1ft6); +assign H768v6 = (Z4kiw6 ? I52nv6 : W3p7z6[2]); +assign A768v6 = (Z4kiw6 ? U42nv6 : Iv1ft6); +assign Z4kiw6 = (J3kiw6 & G5kiw6); +assign T668v6 = (N5kiw6 ? P52nv6 : T2p7z6[3]); +assign M668v6 = (N5kiw6 ? W52nv6 : T2p7z6[4]); +assign F668v6 = (N5kiw6 ? D62nv6 : T2p7z6[5]); +assign Y568v6 = (N5kiw6 ? K62nv6 : T2p7z6[6]); +assign R568v6 = (N5kiw6 ? R62nv6 : T2p7z6[7]); +assign K568v6 = (N5kiw6 ? U47iw6 : T2p7z6[8]); +assign D568v6 = (N5kiw6 ? J27iw6 : T2p7z6[9]); +assign W468v6 = (N5kiw6 ? H17iw6 : T2p7z6[10]); +assign P468v6 = (N5kiw6 ? Dz6iw6 : T2p7z6[11]); +assign I468v6 = (N5kiw6 ? Emhov6 : T2p7z6[12]); +assign B468v6 = (N5kiw6 ? Guhov6 : T2p7z6[13]); +assign U368v6 = (N5kiw6 ? Bk6iw6 : T2p7z6[14]); +assign N368v6 = (N5kiw6 ? Z0iov6 : T2p7z6[15]); +assign G368v6 = (N5kiw6 ? Is5iw6 : T2p7z6[16]); +assign Z268v6 = (N5kiw6 ? Gr5iw6 : T2p7z6[17]); +assign S268v6 = (N5kiw6 ? Jp5iw6 : T2p7z6[18]); +assign L268v6 = (N5kiw6 ? Mn5iw6 : T2p7z6[19]); +assign E268v6 = (N5kiw6 ? Bl5iw6 : T2p7z6[20]); +assign X168v6 = (N5kiw6 ? Ej5iw6 : T2p7z6[21]); +assign Q168v6 = (N5kiw6 ? D85iw6 : T2p7z6[22]); +assign J168v6 = (N5kiw6 ? Cx4iw6 : T2p7z6[23]); +assign C168v6 = (N5kiw6 ? Wf4iw6 : T2p7z6[24]); +assign V068v6 = (N5kiw6 ? Iklov6 : T2p7z6[25]); +assign O068v6 = (N5kiw6 ? E64iw6 : T2p7z6[26]); +assign H068v6 = (N5kiw6 ? H44iw6 : T2p7z6[27]); +assign A068v6 = (N5kiw6 ? W14iw6 : T2p7z6[28]); +assign Tz58v6 = (N5kiw6 ? Ro3iw6 : Ws1ft6); +assign Mz58v6 = (N5kiw6 ? X0hov6 : Cu1ft6); +assign Fz58v6 = (N5kiw6 ? I52nv6 : T2p7z6[2]); +assign Yy58v6 = (N5kiw6 ? U42nv6 : Rr1ft6); +assign N5kiw6 = (J3kiw6 & U5kiw6); +assign Ry58v6 = (B6kiw6 ? P52nv6 : A0p7z6[1]); +assign Ky58v6 = (B6kiw6 ? W52nv6 : A0p7z6[2]); +assign Dy58v6 = (B6kiw6 ? D62nv6 : A0p7z6[3]); +assign Wx58v6 = (B6kiw6 ? K62nv6 : A0p7z6[4]); +assign Px58v6 = (B6kiw6 ? R62nv6 : A0p7z6[5]); +assign Ix58v6 = (B6kiw6 ? U47iw6 : A0p7z6[6]); +assign Bx58v6 = (B6kiw6 ? J27iw6 : A0p7z6[7]); +assign Uw58v6 = (B6kiw6 ? H17iw6 : A0p7z6[8]); +assign Nw58v6 = (B6kiw6 ? Dz6iw6 : A0p7z6[9]); +assign Gw58v6 = (B6kiw6 ? Emhov6 : A0p7z6[10]); +assign Zv58v6 = (B6kiw6 ? Guhov6 : A0p7z6[11]); +assign Sv58v6 = (B6kiw6 ? Bk6iw6 : A0p7z6[12]); +assign Lv58v6 = (B6kiw6 ? Z0iov6 : A0p7z6[13]); +assign Ev58v6 = (B6kiw6 ? Is5iw6 : A0p7z6[14]); +assign Xu58v6 = (B6kiw6 ? Gr5iw6 : A0p7z6[15]); +assign Qu58v6 = (B6kiw6 ? Jp5iw6 : A0p7z6[16]); +assign Ju58v6 = (B6kiw6 ? Mn5iw6 : A0p7z6[17]); +assign Cu58v6 = (B6kiw6 ? Bl5iw6 : A0p7z6[18]); +assign Vt58v6 = (B6kiw6 ? Ej5iw6 : A0p7z6[19]); +assign Ot58v6 = (B6kiw6 ? D85iw6 : A0p7z6[20]); +assign Ht58v6 = (B6kiw6 ? Cx4iw6 : A0p7z6[21]); +assign At58v6 = (B6kiw6 ? Wf4iw6 : A0p7z6[22]); +assign Ts58v6 = (B6kiw6 ? Iklov6 : A0p7z6[23]); +assign Ms58v6 = (B6kiw6 ? E64iw6 : A0p7z6[24]); +assign Fs58v6 = (B6kiw6 ? H44iw6 : A0p7z6[25]); +assign Yr58v6 = (B6kiw6 ? W14iw6 : A0p7z6[26]); +assign Rr58v6 = (B6kiw6 ? Ro3iw6 : I1p7z6[0]); +assign Kr58v6 = (B6kiw6 ? X0hov6 : I1p7z6[1]); +assign Dr58v6 = (B6kiw6 ? I52nv6 : A0p7z6[0]); +assign Wq58v6 = (B6kiw6 ? U42nv6 : Hq1ft6); +assign B6kiw6 = (J3kiw6 & I6kiw6); +assign Pq58v6 = (P6kiw6 ? P52nv6 : Hxo7z6[1]); +assign Iq58v6 = (P6kiw6 ? W52nv6 : Hxo7z6[2]); +assign Bq58v6 = (P6kiw6 ? D62nv6 : Hxo7z6[3]); +assign Up58v6 = (P6kiw6 ? K62nv6 : Hxo7z6[4]); +assign Np58v6 = (P6kiw6 ? R62nv6 : Hxo7z6[5]); +assign Gp58v6 = (P6kiw6 ? U47iw6 : Hxo7z6[6]); +assign Zo58v6 = (P6kiw6 ? J27iw6 : Hxo7z6[7]); +assign So58v6 = (P6kiw6 ? H17iw6 : Hxo7z6[8]); +assign Lo58v6 = (P6kiw6 ? Dz6iw6 : Hxo7z6[9]); +assign Eo58v6 = (P6kiw6 ? Emhov6 : Hxo7z6[10]); +assign Xn58v6 = (P6kiw6 ? Guhov6 : Hxo7z6[11]); +assign Qn58v6 = (P6kiw6 ? Bk6iw6 : Hxo7z6[12]); +assign Jn58v6 = (P6kiw6 ? Z0iov6 : Hxo7z6[13]); +assign Cn58v6 = (P6kiw6 ? Is5iw6 : Hxo7z6[14]); +assign Vm58v6 = (P6kiw6 ? Gr5iw6 : Hxo7z6[15]); +assign Om58v6 = (P6kiw6 ? Jp5iw6 : Hxo7z6[16]); +assign Hm58v6 = (P6kiw6 ? Mn5iw6 : Hxo7z6[17]); +assign Am58v6 = (P6kiw6 ? Bl5iw6 : Hxo7z6[18]); +assign Tl58v6 = (P6kiw6 ? Ej5iw6 : Hxo7z6[19]); +assign Ml58v6 = (P6kiw6 ? D85iw6 : Hxo7z6[20]); +assign Fl58v6 = (P6kiw6 ? Cx4iw6 : Hxo7z6[21]); +assign Yk58v6 = (P6kiw6 ? Wf4iw6 : Hxo7z6[22]); +assign Rk58v6 = (P6kiw6 ? Iklov6 : Hxo7z6[23]); +assign Kk58v6 = (P6kiw6 ? E64iw6 : Hxo7z6[24]); +assign Dk58v6 = (P6kiw6 ? H44iw6 : Hxo7z6[25]); +assign Wj58v6 = (P6kiw6 ? W14iw6 : Hxo7z6[26]); +assign Pj58v6 = (P6kiw6 ? Ro3iw6 : Pyo7z6[0]); +assign Ij58v6 = (P6kiw6 ? X0hov6 : Pyo7z6[1]); +assign Bj58v6 = (P6kiw6 ? I52nv6 : Hxo7z6[0]); +assign Ui58v6 = (P6kiw6 ? U42nv6 : Xo1ft6); +assign P6kiw6 = (J3kiw6 & W6kiw6); +assign Ni58v6 = (D7kiw6 ? P52nv6 : Ouo7z6[1]); +assign Gi58v6 = (D7kiw6 ? W52nv6 : Ouo7z6[2]); +assign Zh58v6 = (D7kiw6 ? D62nv6 : Ouo7z6[3]); +assign Sh58v6 = (D7kiw6 ? K62nv6 : Ouo7z6[4]); +assign Lh58v6 = (D7kiw6 ? R62nv6 : Ouo7z6[5]); +assign Eh58v6 = (D7kiw6 ? U47iw6 : Ouo7z6[6]); +assign Xg58v6 = (D7kiw6 ? J27iw6 : Ouo7z6[7]); +assign Qg58v6 = (D7kiw6 ? H17iw6 : Ouo7z6[8]); +assign Jg58v6 = (D7kiw6 ? Dz6iw6 : Ouo7z6[9]); +assign Cg58v6 = (D7kiw6 ? Emhov6 : Ouo7z6[10]); +assign Vf58v6 = (D7kiw6 ? Guhov6 : Ouo7z6[11]); +assign Of58v6 = (D7kiw6 ? Bk6iw6 : Ouo7z6[12]); +assign Hf58v6 = (D7kiw6 ? Z0iov6 : Ouo7z6[13]); +assign Af58v6 = (D7kiw6 ? Is5iw6 : Ouo7z6[14]); +assign Te58v6 = (D7kiw6 ? Gr5iw6 : Ouo7z6[15]); +assign Me58v6 = (D7kiw6 ? Jp5iw6 : Ouo7z6[16]); +assign Fe58v6 = (D7kiw6 ? Mn5iw6 : Ouo7z6[17]); +assign Yd58v6 = (D7kiw6 ? Bl5iw6 : Ouo7z6[18]); +assign Rd58v6 = (D7kiw6 ? Ej5iw6 : Ouo7z6[19]); +assign Kd58v6 = (D7kiw6 ? D85iw6 : Ouo7z6[20]); +assign Dd58v6 = (D7kiw6 ? Cx4iw6 : Ouo7z6[21]); +assign Wc58v6 = (D7kiw6 ? Wf4iw6 : Ouo7z6[22]); +assign Pc58v6 = (D7kiw6 ? Iklov6 : Ouo7z6[23]); +assign Ic58v6 = (D7kiw6 ? E64iw6 : Ouo7z6[24]); +assign Bc58v6 = (D7kiw6 ? H44iw6 : Ouo7z6[25]); +assign Ub58v6 = (D7kiw6 ? W14iw6 : Ouo7z6[26]); +assign Nb58v6 = (D7kiw6 ? Ro3iw6 : Wvo7z6[0]); +assign Gb58v6 = (D7kiw6 ? X0hov6 : Wvo7z6[1]); +assign Za58v6 = (D7kiw6 ? I52nv6 : Ouo7z6[0]); +assign Sa58v6 = (D7kiw6 ? U42nv6 : Nn1ft6); +assign D7kiw6 = (J3kiw6 & K7kiw6); +assign La58v6 = (R7kiw6 ? P52nv6 : Vro7z6[1]); +assign Ea58v6 = (R7kiw6 ? W52nv6 : Vro7z6[2]); +assign X958v6 = (R7kiw6 ? D62nv6 : Vro7z6[3]); +assign Q958v6 = (R7kiw6 ? K62nv6 : Vro7z6[4]); +assign J958v6 = (R7kiw6 ? R62nv6 : Vro7z6[5]); +assign C958v6 = (R7kiw6 ? U47iw6 : Vro7z6[6]); +assign V858v6 = (R7kiw6 ? J27iw6 : Vro7z6[7]); +assign O858v6 = (R7kiw6 ? H17iw6 : Vro7z6[8]); +assign H858v6 = (R7kiw6 ? Dz6iw6 : Vro7z6[9]); +assign A858v6 = (R7kiw6 ? Emhov6 : Vro7z6[10]); +assign T758v6 = (R7kiw6 ? Guhov6 : Vro7z6[11]); +assign M758v6 = (R7kiw6 ? Bk6iw6 : Vro7z6[12]); +assign F758v6 = (R7kiw6 ? Z0iov6 : Vro7z6[13]); +assign Y658v6 = (R7kiw6 ? Is5iw6 : Vro7z6[14]); +assign R658v6 = (R7kiw6 ? Gr5iw6 : Vro7z6[15]); +assign K658v6 = (R7kiw6 ? Jp5iw6 : Vro7z6[16]); +assign D658v6 = (R7kiw6 ? Mn5iw6 : Vro7z6[17]); +assign W558v6 = (R7kiw6 ? Bl5iw6 : Vro7z6[18]); +assign P558v6 = (R7kiw6 ? Ej5iw6 : Vro7z6[19]); +assign I558v6 = (R7kiw6 ? D85iw6 : Vro7z6[20]); +assign B558v6 = (R7kiw6 ? Cx4iw6 : Vro7z6[21]); +assign U458v6 = (R7kiw6 ? Wf4iw6 : Vro7z6[22]); +assign N458v6 = (R7kiw6 ? Iklov6 : Vro7z6[23]); +assign G458v6 = (R7kiw6 ? E64iw6 : Vro7z6[24]); +assign Z358v6 = (R7kiw6 ? H44iw6 : Vro7z6[25]); +assign S358v6 = (R7kiw6 ? W14iw6 : Vro7z6[26]); +assign L358v6 = (R7kiw6 ? Ro3iw6 : Dto7z6[0]); +assign E358v6 = (R7kiw6 ? X0hov6 : Dto7z6[1]); +assign X258v6 = (R7kiw6 ? I52nv6 : Vro7z6[0]); +assign Q258v6 = (R7kiw6 ? U42nv6 : Dm1ft6); +assign R7kiw6 = (J3kiw6 & Y7kiw6); +assign J258v6 = (F8kiw6 ? P52nv6 : Nqo7z6[1]); +assign C258v6 = (F8kiw6 ? W52nv6 : Nqo7z6[2]); +assign V158v6 = (F8kiw6 ? D62nv6 : Nqo7z6[3]); +assign O158v6 = (F8kiw6 ? K62nv6 : Nqo7z6[4]); +assign H158v6 = (F8kiw6 ? R62nv6 : Nqo7z6[5]); +assign A158v6 = (F8kiw6 ? U47iw6 : Nqo7z6[6]); +assign T058v6 = (F8kiw6 ? J27iw6 : Nqo7z6[7]); +assign M058v6 = (F8kiw6 ? H17iw6 : Nqo7z6[8]); +assign F058v6 = (F8kiw6 ? Dz6iw6 : Nqo7z6[9]); +assign Yz48v6 = (F8kiw6 ? Emhov6 : Nqo7z6[10]); +assign Rz48v6 = (F8kiw6 ? Guhov6 : Nqo7z6[11]); +assign Kz48v6 = (F8kiw6 ? Bk6iw6 : Nqo7z6[12]); +assign Dz48v6 = (F8kiw6 ? Z0iov6 : Nqo7z6[13]); +assign Wy48v6 = (F8kiw6 ? Is5iw6 : Nqo7z6[14]); +assign Py48v6 = (F8kiw6 ? Gr5iw6 : Nqo7z6[15]); +assign Iy48v6 = (F8kiw6 ? Jp5iw6 : Nqo7z6[16]); +assign By48v6 = (F8kiw6 ? Mn5iw6 : Nqo7z6[17]); +assign Ux48v6 = (F8kiw6 ? Bl5iw6 : Nqo7z6[18]); +assign Nx48v6 = (F8kiw6 ? Ej5iw6 : Nqo7z6[19]); +assign Gx48v6 = (F8kiw6 ? D85iw6 : Nqo7z6[20]); +assign Zw48v6 = (F8kiw6 ? Cx4iw6 : Nqo7z6[21]); +assign Sw48v6 = (F8kiw6 ? Wf4iw6 : Nqo7z6[22]); +assign Lw48v6 = (F8kiw6 ? Iklov6 : Nqo7z6[23]); +assign Ew48v6 = (F8kiw6 ? E64iw6 : Nqo7z6[24]); +assign Xv48v6 = (F8kiw6 ? H44iw6 : Nqo7z6[25]); +assign Qv48v6 = (F8kiw6 ? W14iw6 : Nqo7z6[26]); +assign Jv48v6 = (F8kiw6 ? I52nv6 : Nqo7z6[0]); +assign Cv48v6 = (F8kiw6 ? U42nv6 : Tk1ft6); +assign F8kiw6 = (J3kiw6 & M8kiw6); +assign Vu48v6 = (T8kiw6 ? Fpo7z6[1] : P52nv6); +assign Ou48v6 = (T8kiw6 ? Fpo7z6[2] : W52nv6); +assign Hu48v6 = (T8kiw6 ? Fpo7z6[3] : D62nv6); +assign Au48v6 = (T8kiw6 ? Fpo7z6[4] : K62nv6); +assign Tt48v6 = (T8kiw6 ? Fpo7z6[5] : R62nv6); +assign Mt48v6 = (T8kiw6 ? Fpo7z6[6] : U47iw6); +assign Ft48v6 = (T8kiw6 ? Fpo7z6[7] : J27iw6); +assign Ys48v6 = (T8kiw6 ? Fpo7z6[8] : H17iw6); +assign Rs48v6 = (T8kiw6 ? Fpo7z6[9] : Dz6iw6); +assign Ks48v6 = (T8kiw6 ? Fpo7z6[10] : Emhov6); +assign Ds48v6 = (T8kiw6 ? Fpo7z6[11] : Guhov6); +assign Wr48v6 = (T8kiw6 ? Fpo7z6[12] : Bk6iw6); +assign Pr48v6 = (T8kiw6 ? Fpo7z6[13] : Z0iov6); +assign Ir48v6 = (T8kiw6 ? Fpo7z6[14] : Is5iw6); +assign Br48v6 = (T8kiw6 ? Fpo7z6[15] : Gr5iw6); +assign Uq48v6 = (T8kiw6 ? Fpo7z6[16] : Jp5iw6); +assign Nq48v6 = (T8kiw6 ? Fpo7z6[17] : Mn5iw6); +assign Gq48v6 = (T8kiw6 ? Fpo7z6[18] : Bl5iw6); +assign Zp48v6 = (T8kiw6 ? Fpo7z6[19] : Ej5iw6); +assign Sp48v6 = (T8kiw6 ? Fpo7z6[20] : D85iw6); +assign Lp48v6 = (T8kiw6 ? Fpo7z6[21] : Cx4iw6); +assign T8kiw6 = (!A9kiw6); +assign Ep48v6 = (A9kiw6 ? Wf4iw6 : Fpo7z6[22]); +assign Xo48v6 = (A9kiw6 ? Iklov6 : Fpo7z6[23]); +assign Qo48v6 = (A9kiw6 ? E64iw6 : Fpo7z6[24]); +assign Jo48v6 = (A9kiw6 ? H44iw6 : Fpo7z6[25]); +assign Co48v6 = (A9kiw6 ? W14iw6 : Fpo7z6[26]); +assign Vn48v6 = (A9kiw6 ? I52nv6 : Fpo7z6[0]); +assign On48v6 = (A9kiw6 ? U42nv6 : Jj1ft6); +assign A9kiw6 = (J3kiw6 & H9kiw6); +assign J3kiw6 = (O9kiw6 & V9kiw6); +assign V9kiw6 = (M1kiw6 & Vd2iw6); +assign M1kiw6 = (Cakiw6 | Znn7z6[1]); +assign O9kiw6 = (D02ft6 & Jakiw6); +assign Jakiw6 = (~(Qakiw6 & Znn7z6[1])); +assign Hn48v6 = (~(Rconv6 & Xakiw6)); +assign Xakiw6 = (~(Ebkiw6 & Lbkiw6)); +assign Ebkiw6 = (Sbkiw6 & Kconv6); +assign Sbkiw6 = (~(Dconv6 & Wp9ov6)); +assign An48v6 = (M4xnv6 ? Ryadt6 : Zbkiw6); +assign Zbkiw6 = (~(H2kiw6 | A2kiw6)); +assign A2kiw6 = (~(Fr9ov6 | Gckiw6)); +assign Fr9ov6 = (~(Nckiw6 & Uckiw6)); +assign Uckiw6 = (Bdkiw6 & Idkiw6); +assign Idkiw6 = (~(Pdkiw6 & Pyo7z6[0])); +assign Bdkiw6 = (Wdkiw6 & Dekiw6); +assign Dekiw6 = (~(Kekiw6 & I1p7z6[0])); +assign Wdkiw6 = (~(Rekiw6 & Ws1ft6)); +assign Nckiw6 = (Yekiw6 & Ffkiw6); +assign Ffkiw6 = (~(Mfkiw6 & Nw1ft6)); +assign Yekiw6 = (Tfkiw6 & Agkiw6); +assign Agkiw6 = (~(Hgkiw6 & Wvo7z6[0])); +assign Tfkiw6 = (~(Ogkiw6 & Dto7z6[0])); +assign Tm48v6 = (Mr9ov6 ? Hrb7z6[1] : Gckiw6); +assign Gckiw6 = (~(Vgkiw6 & Chkiw6)); +assign Chkiw6 = (Jhkiw6 & Qhkiw6); +assign Qhkiw6 = (~(Pdkiw6 & Pyo7z6[1])); +assign Jhkiw6 = (Xhkiw6 & Eikiw6); +assign Eikiw6 = (~(Kekiw6 & I1p7z6[1])); +assign Xhkiw6 = (~(Rekiw6 & Cu1ft6)); +assign Vgkiw6 = (Likiw6 & Sikiw6); +assign Sikiw6 = (~(Mfkiw6 & Tx1ft6)); +assign Likiw6 = (Zikiw6 & Gjkiw6); +assign Gjkiw6 = (~(Hgkiw6 & Wvo7z6[1])); +assign Zikiw6 = (~(Ogkiw6 & Dto7z6[1])); +assign Mm48v6 = (Rconv6 ? Njkiw6 : Kqm7z6[0]); +assign Fm48v6 = (Rconv6 ? Ujkiw6 : Kqm7z6[1]); +assign Ujkiw6 = (~(Bkkiw6 | Njkiw6)); +assign Yl48v6 = (Rconv6 ? Bkkiw6 : Kqm7z6[2]); +assign Rl48v6 = (Pkkiw6 ? Geynv6 : Ikkiw6); +assign Ikkiw6 = (!Y877z6); +assign Kl48v6 = (Pkkiw6 ? Viynv6 : Wkkiw6); +assign Wkkiw6 = (!S777z6); +assign Dl48v6 = (Klkiw6 ? Viynv6 : Dlkiw6); +assign Dlkiw6 = (!I877z6); +assign Wk48v6 = (Pkkiw6 ? Knynv6 : Rlkiw6); +assign Rlkiw6 = (!M677z6); +assign Pk48v6 = (Klkiw6 ? Knynv6 : Ylkiw6); +assign Ylkiw6 = (!C777z6); +assign Ik48v6 = (Pkkiw6 ? Zrynv6 : Fmkiw6); +assign Fmkiw6 = (!G577z6); +assign Bk48v6 = (Klkiw6 ? Zrynv6 : Mmkiw6); +assign Mmkiw6 = (!W577z6); +assign Uj48v6 = (Pkkiw6 ? Owynv6 : Tmkiw6); +assign Tmkiw6 = (!A477z6); +assign Nj48v6 = (Klkiw6 ? Owynv6 : Ankiw6); +assign Ankiw6 = (!Q477z6); +assign Gj48v6 = (Pkkiw6 ? D1znv6 : Hnkiw6); +assign Hnkiw6 = (!U277z6); +assign Zi48v6 = (Klkiw6 ? D1znv6 : Onkiw6); +assign Onkiw6 = (!K377z6); +assign Si48v6 = (Pkkiw6 ? S5znv6 : Vnkiw6); +assign Vnkiw6 = (!O177z6); +assign Li48v6 = (Klkiw6 ? S5znv6 : Cokiw6); +assign Cokiw6 = (!E277z6); +assign Ei48v6 = (Pkkiw6 ? N1xnv6 : Jokiw6); +assign Jokiw6 = (!I077z6); +assign Xh48v6 = (Klkiw6 ? N1xnv6 : Qokiw6); +assign Qokiw6 = (!Y077z6); +assign Qh48v6 = (Pkkiw6 ? Eexnv6 : Xokiw6); +assign Xokiw6 = (!Cz67z6); +assign Jh48v6 = (Klkiw6 ? Eexnv6 : Epkiw6); +assign Epkiw6 = (!Sz67z6); +assign Ch48v6 = (Pkkiw6 ? Tixnv6 : Lpkiw6); +assign Lpkiw6 = (!Wx67z6); +assign Vg48v6 = (Klkiw6 ? Tixnv6 : Spkiw6); +assign Spkiw6 = (!My67z6); +assign Og48v6 = (!Zpkiw6); +assign Zpkiw6 = (Pkkiw6 ? Gqkiw6 : Qw67z6); +assign Hg48v6 = (!Nqkiw6); +assign Nqkiw6 = (Klkiw6 ? Gqkiw6 : Gx67z6); +assign Gqkiw6 = (!Inxnv6); +assign Ag48v6 = (!Uqkiw6); +assign Uqkiw6 = (Pkkiw6 ? Brkiw6 : Kv67z6); +assign Tf48v6 = (!Irkiw6); +assign Irkiw6 = (Klkiw6 ? Brkiw6 : Aw67z6); +assign Brkiw6 = (!Xrxnv6); +assign Mf48v6 = (!Prkiw6); +assign Prkiw6 = (Tqoov6 ? Eu67z6 : Wrkiw6); +assign Ff48v6 = (!Dskiw6); +assign Dskiw6 = (As9ov6 ? Uu67z6 : Wrkiw6); +assign Wrkiw6 = (!Mwxnv6); +assign Ye48v6 = (!Kskiw6); +assign Kskiw6 = (Tqoov6 ? Ys67z6 : Rskiw6); +assign Re48v6 = (!Yskiw6); +assign Yskiw6 = (As9ov6 ? Ot67z6 : Rskiw6); +assign Rskiw6 = (!B1ynv6); +assign Ke48v6 = (!Ftkiw6); +assign Ftkiw6 = (Pkkiw6 ? Mtkiw6 : O977z6); +assign De48v6 = (!Ttkiw6); +assign Ttkiw6 = (Klkiw6 ? Mtkiw6 : Ea77z6); +assign Mtkiw6 = (!Kaxnv6); +assign Wd48v6 = (Aukiw6 & Tlmov6); +assign Pd48v6 = (Hukiw6 & Oukiw6); +assign Oukiw6 = (O5a7z6 & Vukiw6); +assign Vukiw6 = (~(Cvkiw6 & Jvkiw6)); +assign Jvkiw6 = (~(Qvkiw6 & Hmmov6)); +assign Hmmov6 = (!Ihnet6); +assign Cvkiw6 = (Xvkiw6 & Mlmov6); +assign Hukiw6 = (~(Tr8iw6 | Whhov6)); +assign Id48v6 = (Ewkiw6 & Tlmov6); +assign Bd48v6 = (Lwkiw6 & Ewkiw6); +assign Uc48v6 = (Swkiw6 & Ewkiw6); +assign Ewkiw6 = (Zwkiw6 & Ihnet6); +assign Zwkiw6 = (O5a7z6 & Gimov6); +assign Nc48v6 = (Lwkiw6 & Aukiw6); +assign Lwkiw6 = (Ow2et6 & Whhov6); +assign Gc48v6 = (Swkiw6 & Aukiw6); +assign Aukiw6 = (Gxkiw6 & Nxkiw6); +assign Nxkiw6 = (Xvkiw6 & Gimov6); +assign Gimov6 = (!Pl7et6); +assign Gxkiw6 = (A0onv6 & O5a7z6); +assign Swkiw6 = (Whhov6 & Uxkiw6); +assign Zb48v6 = (~(Fsfov6 & Bykiw6)); +assign Bykiw6 = (~(Cmbdt6 & Iykiw6)); +assign Iykiw6 = (F02nv6 | Z2onv6); +assign Z2onv6 = (Vs9ov6 & Kkmhw6); +assign Sb48v6 = (Pykiw6 & Wykiw6); +assign Wykiw6 = (Tlmov6 & O5a7z6); +assign Pykiw6 = (~(Xvkiw6 | Qvkiw6)); +assign Xvkiw6 = (Flmov6 | Uxkiw6); +assign Uxkiw6 = (!Ow2et6); +assign Flmov6 = (~(Xnh7z6[2] & Dzkiw6)); +assign Lb48v6 = (~(Kzkiw6 & Rzkiw6)); +assign Rzkiw6 = (Yzkiw6 | Orhov6); +assign Kzkiw6 = (Hhq7z6[0] ? M0liw6 : F0liw6); +assign Eb48v6 = (~(T0liw6 & A1liw6)); +assign A1liw6 = (Yzkiw6 | L19iw6); +assign T0liw6 = (Hhq7z6[1] ? O1liw6 : H1liw6); +assign H1liw6 = (~(V1liw6 & Hhq7z6[0])); +assign Xa48v6 = (~(C2liw6 & J2liw6)); +assign J2liw6 = (Yzkiw6 | Fhrnv6); +assign C2liw6 = (Hhq7z6[2] ? X2liw6 : Q2liw6); +assign X2liw6 = (O1liw6 & E3liw6); +assign E3liw6 = (F0liw6 | Hhq7z6[1]); +assign O1liw6 = (M0liw6 & L3liw6); +assign L3liw6 = (F0liw6 | Hhq7z6[0]); +assign Q2liw6 = (~(S3liw6 & V1liw6)); +assign Qa48v6 = (~(Z3liw6 & G4liw6)); +assign G4liw6 = (Yzkiw6 | Pohov6); +assign Z3liw6 = (B5liw6 ? U4liw6 : N4liw6); +assign U4liw6 = (~(I5liw6 & V1liw6)); +assign Ja48v6 = (~(P5liw6 & W5liw6)); +assign W5liw6 = (Yzkiw6 | Zaeiw6); +assign P5liw6 = (Hhq7z6[4] ? K6liw6 : D6liw6); +assign K6liw6 = (N4liw6 & R6liw6); +assign R6liw6 = (~(V1liw6 & B5liw6)); +assign B5liw6 = (!Hhq7z6[3]); +assign N4liw6 = (M0liw6 & Y6liw6); +assign Y6liw6 = (F0liw6 | I5liw6); +assign D6liw6 = (~(F7liw6 & I5liw6)); +assign F7liw6 = (V1liw6 & Hhq7z6[3]); +assign Ca48v6 = (~(M7liw6 & T7liw6)); +assign T7liw6 = (Yzkiw6 | Tdfiw6); +assign M7liw6 = (Hhq7z6[5] ? H8liw6 : A8liw6); +assign A8liw6 = (O8liw6 | F0liw6); +assign V948v6 = (~(V8liw6 & C9liw6)); +assign C9liw6 = (Yzkiw6 | Gbeiw6); +assign V8liw6 = (Hhq7z6[6] ? Q9liw6 : J9liw6); +assign O948v6 = (~(X9liw6 & Ealiw6)); +assign Ealiw6 = (Yzkiw6 | Egfiw6); +assign X9liw6 = (Hhq7z6[7] ? Saliw6 : Laliw6); +assign Saliw6 = (Q9liw6 & Zaliw6); +assign Zaliw6 = (~(V1liw6 & Gbliw6)); +assign Q9liw6 = (H8liw6 & Nbliw6); +assign Nbliw6 = (F0liw6 | Hhq7z6[5]); +assign H8liw6 = (M0liw6 & Ubliw6); +assign Ubliw6 = (~(V1liw6 & O8liw6)); +assign Laliw6 = (J9liw6 | Gbliw6); +assign Gbliw6 = (!Hhq7z6[6]); +assign J9liw6 = (Bcliw6 | O8liw6); +assign Bcliw6 = (~(V1liw6 & Hhq7z6[5])); +assign V1liw6 = (!F0liw6); +assign F0liw6 = (~(Icliw6 & Pcliw6)); +assign Icliw6 = (M0liw6 & Yzkiw6); +assign M0liw6 = (~(Wcliw6 & Pcliw6)); +assign Pcliw6 = (~(Ddliw6 & Etgiw6)); +assign Ddliw6 = (Kdliw6 & Jp5iw6); +assign Kdliw6 = (~(Xkq7z6[18] & HTMDHBURST[0])); +assign Wcliw6 = (Yzkiw6 & Rdliw6); +assign Yzkiw6 = (~(Jsgiw6 & Ydliw6)); +assign H948v6 = (Teliw6 ? Meliw6 : Feliw6); +assign Meliw6 = (Dtadt6 & Tnzdt6); +assign Feliw6 = (Afliw6 & Ku7et6); +assign Afliw6 = (U28et6 & Lo1ov6); +assign A948v6 = (Lo1ov6 & Hfliw6); +assign Lo1ov6 = (Tlmov6 | Kslov6); +assign T848v6 = (Ofliw6 & Vfliw6); +assign Vfliw6 = (~(Cgliw6 | Zofov6)); +assign Zofov6 = (Yfadt6 & Qg2nv6); +assign Cgliw6 = (~(Sh2nv6 & Jgliw6)); +assign Ofliw6 = (Kslov6 & Kihov6); +assign M848v6 = (Qgliw6 & Jgliw6); +assign Qgliw6 = (~(Kslov6 & Kihov6)); +assign F848v6 = (Xgliw6 & Jgliw6); +assign Xgliw6 = (~(Vsgov6 & Sh2nv6)); +assign Y748v6 = (Lhliw6 ? Tjr7z6[1] : Ehliw6); +assign R748v6 = (Lhliw6 ? Tjr7z6[0] : W3wnv6); +assign K748v6 = (~(Shliw6 & Zhliw6)); +assign Zhliw6 = (Qxjov6 | Giliw6); +assign Shliw6 = (Niliw6 & Uiliw6); +assign Uiliw6 = (~(Bjliw6 & P2j7z6[1])); +assign Niliw6 = (~(Qmb7z6[1] & Jxjov6)); +assign D748v6 = (~(Ijliw6 & Pjliw6)); +assign Pjliw6 = (Qxjov6 | Wjliw6); +assign Ijliw6 = (Dkliw6 & Kkliw6); +assign Kkliw6 = (~(Bjliw6 & P2j7z6[2])); +assign Dkliw6 = (~(Qmb7z6[2] & Jxjov6)); +assign W648v6 = (~(Rkliw6 & Ykliw6)); +assign Ykliw6 = (Qxjov6 | Flliw6); +assign Rkliw6 = (Mlliw6 & Tlliw6); +assign Tlliw6 = (~(Bjliw6 & P2j7z6[3])); +assign Mlliw6 = (~(Qmb7z6[3] & Jxjov6)); +assign P648v6 = (~(Amliw6 & Hmliw6)); +assign Hmliw6 = (Qxjov6 | Omliw6); +assign Amliw6 = (Vmliw6 & Cnliw6); +assign Cnliw6 = (~(Bjliw6 & P2j7z6[4])); +assign Vmliw6 = (~(Qmb7z6[4] & Jxjov6)); +assign I648v6 = (~(Jnliw6 & Qnliw6)); +assign Qnliw6 = (Qxjov6 | Xnliw6); +assign Jnliw6 = (Eoliw6 & Loliw6); +assign Loliw6 = (~(Bjliw6 & P2j7z6[5])); +assign Eoliw6 = (~(Qmb7z6[5] & Jxjov6)); +assign B648v6 = (~(Soliw6 & Zoliw6)); +assign Zoliw6 = (Qxjov6 | Gpliw6); +assign Soliw6 = (Npliw6 & Upliw6); +assign Upliw6 = (~(Bjliw6 & P2j7z6[6])); +assign Npliw6 = (~(Qmb7z6[6] & Jxjov6)); +assign U548v6 = (~(Bqliw6 & Iqliw6)); +assign Iqliw6 = (~(Qmb7z6[7] & Jxjov6)); +assign Bqliw6 = (Qxjov6 | Pqliw6); +assign N548v6 = (~(Wqliw6 & Drliw6)); +assign Drliw6 = (Qxjov6 | Krliw6); +assign Wqliw6 = (Rrliw6 & Yrliw6); +assign Yrliw6 = (~(Bjliw6 & P2j7z6[0])); +assign Bjliw6 = (~(Ga3nv6 | Fsliw6)); +assign Rrliw6 = (~(Qmb7z6[0] & Jxjov6)); +assign Jxjov6 = (Msliw6 & Qxjov6); +assign Qxjov6 = (~(Tsliw6 & Kslov6)); +assign Tsliw6 = (~(Fsliw6 | Lcadt6)); +assign Msliw6 = (U4fov6 & Ga3nv6); +assign G548v6 = (~(Atliw6 & Htliw6)); +assign Htliw6 = (~(G5j7z6[0] & Otliw6)); +assign Otliw6 = (~(Vtliw6 & Culiw6)); +assign Z448v6 = (!Juliw6); +assign Juliw6 = (M6j7z6[0] ? Xuliw6 : Quliw6); +assign Xuliw6 = (~(Evliw6 & Atliw6)); +assign Atliw6 = (~(Lvliw6 & Svliw6)); +assign Lvliw6 = (~(Zvliw6 | G5j7z6[0])); +assign Evliw6 = (~(Gwliw6 & U42nv6)); +assign Quliw6 = (Nwliw6 & Uwliw6); +assign Uwliw6 = (~(Bxliw6 & U42nv6)); +assign Nwliw6 = (~(Qkj7z6[0] | Ixliw6)); +assign Ixliw6 = (Pxliw6 & Tib7z6[0]); +assign Pxliw6 = (~(Jqj7z6[9] & G5j7z6[0])); +assign S448v6 = (~(Wxliw6 & Dyliw6)); +assign Dyliw6 = (~(G5j7z6[2] & Kyliw6)); +assign Kyliw6 = (~(Vtliw6 & Ryliw6)); +assign L448v6 = (!Yyliw6); +assign Yyliw6 = (M6j7z6[2] ? Mzliw6 : Fzliw6); +assign Mzliw6 = (~(Wxliw6 & Tzliw6)); +assign Tzliw6 = (~(Gwliw6 & I52nv6)); +assign Wxliw6 = (~(A0miw6 & H0miw6)); +assign A0miw6 = (~(Rxgov6 | G5j7z6[2])); +assign Fzliw6 = (O0miw6 & V0miw6); +assign V0miw6 = (~(Bxliw6 & I52nv6)); +assign O0miw6 = (~(Qkj7z6[2] | C1miw6)); +assign C1miw6 = (J1miw6 & Tib7z6[2]); +assign J1miw6 = (~(Jqj7z6[11] & G5j7z6[2])); +assign E448v6 = (~(Q1miw6 & X1miw6)); +assign X1miw6 = (~(G5j7z6[4] & E2miw6)); +assign E2miw6 = (~(Vtliw6 & L2miw6)); +assign X348v6 = (!S2miw6); +assign S2miw6 = (M6j7z6[4] ? G3miw6 : Z2miw6); +assign G3miw6 = (~(N3miw6 & Q1miw6)); +assign Q1miw6 = (~(U3miw6 & H0miw6)); +assign U3miw6 = (Uuhov6 & B4miw6); +assign N3miw6 = (~(Gwliw6 & W52nv6)); +assign Z2miw6 = (I4miw6 & P4miw6); +assign P4miw6 = (~(Bxliw6 & W52nv6)); +assign I4miw6 = (~(Qkj7z6[4] | W4miw6)); +assign W4miw6 = (D5miw6 & Tib7z6[4]); +assign D5miw6 = (~(Jqj7z6[13] & G5j7z6[4])); +assign Q348v6 = (~(K5miw6 & R5miw6)); +assign R5miw6 = (~(G5j7z6[6] & Y5miw6)); +assign Y5miw6 = (~(Vtliw6 & F6miw6)); +assign J348v6 = (!M6miw6); +assign M6miw6 = (M6j7z6[6] ? A7miw6 : T6miw6); +assign A7miw6 = (~(K5miw6 & H7miw6)); +assign H7miw6 = (~(Gwliw6 & K62nv6)); +assign K5miw6 = (~(O7miw6 & H0miw6)); +assign O7miw6 = (Gnhov6 & V7miw6); +assign T6miw6 = (C8miw6 & J8miw6); +assign J8miw6 = (~(Bxliw6 & K62nv6)); +assign C8miw6 = (~(Qkj7z6[6] | Q8miw6)); +assign Q8miw6 = (X8miw6 & Tib7z6[6]); +assign X8miw6 = (~(Jqj7z6[15] & G5j7z6[6])); +assign C348v6 = (~(E9miw6 & L9miw6)); +assign L9miw6 = (~(G5j7z6[16] & S9miw6)); +assign E9miw6 = (Z9miw6 & Gamiw6); +assign Z9miw6 = (Namiw6 | Fsliw6); +assign V248v6 = (!Uamiw6); +assign Uamiw6 = (M6j7z6[16] ? Ibmiw6 : Bbmiw6); +assign Ibmiw6 = (~(Pbmiw6 & Gamiw6)); +assign Gamiw6 = (~(Wbmiw6 & Svliw6)); +assign Wbmiw6 = (Dcmiw6 & Cu2nv6); +assign Cu2nv6 = (!G5j7z6[16]); +assign Pbmiw6 = (~(Kcmiw6 & Is5iw6)); +assign Bbmiw6 = (Rcmiw6 & Ycmiw6); +assign Ycmiw6 = (~(Fdmiw6 & Is5iw6)); +assign Rcmiw6 = (~(Qkj7z6[16] | Mdmiw6)); +assign Mdmiw6 = (Tdmiw6 & Tib7z6[16]); +assign Tdmiw6 = (~(Jqj7z6[25] & G5j7z6[16])); +assign O248v6 = (~(Aemiw6 & Hemiw6)); +assign Hemiw6 = (~(Oemiw6 & G5j7z6[18])); +assign Oemiw6 = (Vemiw6 & U4fov6); +assign Vemiw6 = (~(Cfmiw6 & Jfmiw6)); +assign H248v6 = (!Qfmiw6); +assign Qfmiw6 = (M6j7z6[18] ? Egmiw6 : Xfmiw6); +assign Egmiw6 = (~(Aemiw6 & Lgmiw6)); +assign Lgmiw6 = (~(Kcmiw6 & Jp5iw6)); +assign Aemiw6 = (~(Sgmiw6 & Dcmiw6)); +assign Sgmiw6 = (~(Rxgov6 | G5j7z6[18])); +assign Xfmiw6 = (Zgmiw6 & Ghmiw6); +assign Ghmiw6 = (~(Fdmiw6 & Jp5iw6)); +assign Zgmiw6 = (~(Qkj7z6[18] | Nhmiw6)); +assign Nhmiw6 = (Uhmiw6 & Tib7z6[18]); +assign Uhmiw6 = (~(Jqj7z6[27] & G5j7z6[18])); +assign A248v6 = (~(Bimiw6 & Iimiw6)); +assign Iimiw6 = (~(G5j7z6[20] & Pimiw6)); +assign Pimiw6 = (~(Wimiw6 & L2miw6)); +assign T148v6 = (!Djmiw6); +assign Djmiw6 = (M6j7z6[20] ? Rjmiw6 : Kjmiw6); +assign Rjmiw6 = (~(Yjmiw6 & Bimiw6)); +assign Bimiw6 = (~(Fkmiw6 & Dcmiw6)); +assign Fkmiw6 = (Uuhov6 & Mkmiw6); +assign Yjmiw6 = (~(Kcmiw6 & Bl5iw6)); +assign Kjmiw6 = (Tkmiw6 & Almiw6); +assign Almiw6 = (~(Fdmiw6 & Bl5iw6)); +assign Tkmiw6 = (~(Qkj7z6[20] | Hlmiw6)); +assign Hlmiw6 = (Olmiw6 & Tib7z6[20]); +assign Olmiw6 = (~(Jqj7z6[29] & G5j7z6[20])); +assign M148v6 = (~(Vlmiw6 & Cmmiw6)); +assign Cmmiw6 = (~(Jmmiw6 & G5j7z6[22])); +assign Jmmiw6 = (Qmmiw6 & U4fov6); +assign Qmmiw6 = (~(Cfmiw6 & Rphov6)); +assign F148v6 = (!Xmmiw6); +assign Xmmiw6 = (M6j7z6[22] ? Lnmiw6 : Enmiw6); +assign Lnmiw6 = (~(Vlmiw6 & Snmiw6)); +assign Snmiw6 = (~(Kcmiw6 & D85iw6)); +assign Vlmiw6 = (~(Znmiw6 & Dcmiw6)); +assign Znmiw6 = (Gnhov6 & Gomiw6); +assign Enmiw6 = (Nomiw6 & Uomiw6); +assign Uomiw6 = (~(Fdmiw6 & D85iw6)); +assign Nomiw6 = (~(Qkj7z6[22] | Bpmiw6)); +assign Bpmiw6 = (Ipmiw6 & Tib7z6[22]); +assign Ipmiw6 = (~(Jqj7z6[31] & G5j7z6[22])); +assign Y048v6 = (~(Ppmiw6 & Wpmiw6)); +assign Wpmiw6 = (~(G5j7z6[32] & Dqmiw6)); +assign Dqmiw6 = (~(Kqmiw6 & Culiw6)); +assign Culiw6 = (~(Rqmiw6 & U4fov6)); +assign R048v6 = (!Yqmiw6); +assign Yqmiw6 = (M6j7z6[32] ? Mrmiw6 : Frmiw6); +assign Mrmiw6 = (~(Trmiw6 & Ppmiw6)); +assign Ppmiw6 = (~(Asmiw6 & Svliw6)); +assign Asmiw6 = (A5iov6 & Hsmiw6); +assign Trmiw6 = (~(Osmiw6 & U42nv6)); +assign Frmiw6 = (Vsmiw6 & Ctmiw6); +assign Ctmiw6 = (~(Jtmiw6 & U42nv6)); +assign Vsmiw6 = (~(Qkj7z6[32] | Qtmiw6)); +assign Qtmiw6 = (Xtmiw6 & Tib7z6[32]); +assign Xtmiw6 = (~(Jqj7z6[41] & G5j7z6[32])); +assign K048v6 = (~(Eumiw6 & Lumiw6)); +assign Lumiw6 = (~(G5j7z6[34] & Sumiw6)); +assign Sumiw6 = (~(D3iov6 & Ryliw6)); +assign Ryliw6 = (~(U4fov6 & Zumiw6)); +assign D048v6 = (!Gvmiw6); +assign Gvmiw6 = (M6j7z6[34] ? Uvmiw6 : Nvmiw6); +assign Uvmiw6 = (~(Eumiw6 & Bwmiw6)); +assign Bwmiw6 = (~(Osmiw6 & I52nv6)); +assign Eumiw6 = (~(Iwmiw6 & A5iov6)); +assign Iwmiw6 = (~(Rxgov6 | G5j7z6[34])); +assign Nvmiw6 = (Pwmiw6 & Wwmiw6); +assign Wwmiw6 = (~(Jtmiw6 & I52nv6)); +assign Pwmiw6 = (~(Qkj7z6[34] | Dxmiw6)); +assign Dxmiw6 = (Kxmiw6 & Tib7z6[34]); +assign Kxmiw6 = (~(Jqj7z6[43] & G5j7z6[34])); +assign Wz38v6 = (~(Rxmiw6 & Yxmiw6)); +assign Yxmiw6 = (~(G5j7z6[36] & Fymiw6)); +assign Fymiw6 = (~(Kqmiw6 & L2miw6)); +assign Pz38v6 = (!Mymiw6); +assign Mymiw6 = (M6j7z6[36] ? Azmiw6 : Tymiw6); +assign Azmiw6 = (~(Hzmiw6 & Rxmiw6)); +assign Rxmiw6 = (~(Ozmiw6 & A5iov6)); +assign Ozmiw6 = (Uuhov6 & Vzmiw6); +assign Hzmiw6 = (~(Osmiw6 & W52nv6)); +assign Tymiw6 = (C0niw6 & J0niw6); +assign J0niw6 = (~(Jtmiw6 & W52nv6)); +assign C0niw6 = (~(Qkj7z6[36] | Q0niw6)); +assign Q0niw6 = (X0niw6 & Tib7z6[36]); +assign X0niw6 = (~(Jqj7z6[45] & G5j7z6[36])); +assign Iz38v6 = (~(E1niw6 & L1niw6)); +assign L1niw6 = (~(G5j7z6[38] & S1niw6)); +assign S1niw6 = (~(D3iov6 & F6miw6)); +assign Bz38v6 = (!Z1niw6); +assign Z1niw6 = (M6j7z6[38] ? N2niw6 : G2niw6); +assign N2niw6 = (~(E1niw6 & U2niw6)); +assign U2niw6 = (~(Osmiw6 & K62nv6)); +assign E1niw6 = (~(B3niw6 & A5iov6)); +assign B3niw6 = (Gnhov6 & I3niw6); +assign G2niw6 = (P3niw6 & W3niw6); +assign W3niw6 = (~(Jtmiw6 & K62nv6)); +assign P3niw6 = (~(Qkj7z6[38] | D4niw6)); +assign D4niw6 = (K4niw6 & Tib7z6[38]); +assign K4niw6 = (~(Jqj7z6[47] & G5j7z6[38])); +assign Uy38v6 = (~(R4niw6 & Y4niw6)); +assign Y4niw6 = (~(F5niw6 & U4fov6)); +assign R4niw6 = (M5niw6 & T5niw6); +assign M5niw6 = (Z3fov6 | A6niw6); +assign Ny38v6 = (!H6niw6); +assign H6niw6 = (M6j7z6[48] ? V6niw6 : O6niw6); +assign V6niw6 = (~(C7niw6 & T5niw6)); +assign T5niw6 = (~(J7niw6 & Svliw6)); +assign Svliw6 = (Q7niw6 & Rgjov6); +assign J7niw6 = (R4hov6 & A6niw6); +assign A6niw6 = (!G5j7z6[48]); +assign C7niw6 = (~(X7niw6 & Is5iw6)); +assign O6niw6 = (E8niw6 & L8niw6); +assign L8niw6 = (~(S8niw6 & Is5iw6)); +assign E8niw6 = (~(Qkj7z6[48] | Z8niw6)); +assign Z8niw6 = (G9niw6 & Tib7z6[48]); +assign G9niw6 = (~(Jqj7z6[57] & G5j7z6[48])); +assign Gy38v6 = (~(N9niw6 & U9niw6)); +assign U9niw6 = (~(Baniw6 & U4fov6)); +assign N9niw6 = (Ianiw6 & Paniw6); +assign Ianiw6 = (Z3fov6 | Fs2nv6); +assign Fs2nv6 = (!G5j7z6[50]); +assign Zx38v6 = (!Waniw6); +assign Waniw6 = (M6j7z6[50] ? Kbniw6 : Dbniw6); +assign Kbniw6 = (~(Rbniw6 & Paniw6)); +assign Paniw6 = (~(Ybniw6 & R4hov6)); +assign Ybniw6 = (~(Rxgov6 | G5j7z6[50])); +assign Rbniw6 = (~(X7niw6 & Jp5iw6)); +assign Dbniw6 = (Fcniw6 & Mcniw6); +assign Mcniw6 = (~(S8niw6 & Jp5iw6)); +assign Fcniw6 = (~(Qkj7z6[50] | Tcniw6)); +assign Tcniw6 = (Adniw6 & Tib7z6[50]); +assign Adniw6 = (~(Jqj7z6[59] & G5j7z6[50])); +assign Sx38v6 = (~(Hdniw6 & Odniw6)); +assign Odniw6 = (~(G5j7z6[1] & Vdniw6)); +assign Vdniw6 = (~(Vtliw6 & Ceniw6)); +assign Lx38v6 = (!Jeniw6); +assign Jeniw6 = (M6j7z6[1] ? Xeniw6 : Qeniw6); +assign Xeniw6 = (~(Hdniw6 & Efniw6)); +assign Efniw6 = (~(Gwliw6 & B52nv6)); +assign Hdniw6 = (~(Lfniw6 & Sfniw6)); +assign Lfniw6 = (~(Zvliw6 | G5j7z6[1])); +assign Qeniw6 = (Zfniw6 & Ggniw6); +assign Ggniw6 = (~(Bxliw6 & B52nv6)); +assign Zfniw6 = (~(Qkj7z6[1] | Ngniw6)); +assign Ngniw6 = (Ugniw6 & Tib7z6[1]); +assign Ugniw6 = (~(Jqj7z6[10] & G5j7z6[1])); +assign Ex38v6 = (~(Bhniw6 & Ihniw6)); +assign Ihniw6 = (~(G5j7z6[3] & Phniw6)); +assign Phniw6 = (~(Vtliw6 & Whniw6)); +assign Xw38v6 = (!Diniw6); +assign Diniw6 = (M6j7z6[3] ? Riniw6 : Kiniw6); +assign Riniw6 = (~(Bhniw6 & Yiniw6)); +assign Yiniw6 = (~(Gwliw6 & P52nv6)); +assign Bhniw6 = (~(Fjniw6 & Mjniw6)); +assign Fjniw6 = (~(Zvliw6 | G5j7z6[3])); +assign Zvliw6 = (!H0miw6); +assign Kiniw6 = (Tjniw6 & Akniw6); +assign Akniw6 = (~(Bxliw6 & P52nv6)); +assign Tjniw6 = (~(Qkj7z6[3] | Hkniw6)); +assign Hkniw6 = (Okniw6 & Tib7z6[3]); +assign Okniw6 = (~(Jqj7z6[12] & G5j7z6[3])); +assign Qw38v6 = (~(Vkniw6 & Clniw6)); +assign Clniw6 = (~(G5j7z6[5] & Jlniw6)); +assign Jlniw6 = (~(Vtliw6 & Qlniw6)); +assign Jw38v6 = (!Xlniw6); +assign Xlniw6 = (M6j7z6[5] ? Lmniw6 : Emniw6); +assign Lmniw6 = (~(Vkniw6 & Smniw6)); +assign Smniw6 = (~(Gwliw6 & D62nv6)); +assign Vkniw6 = (~(Zmniw6 & H0miw6)); +assign Zmniw6 = (Gnniw6 & Nnniw6); +assign Emniw6 = (Unniw6 & Boniw6); +assign Boniw6 = (~(Bxliw6 & D62nv6)); +assign Unniw6 = (~(Qkj7z6[5] | Ioniw6)); +assign Ioniw6 = (Poniw6 & Tib7z6[5]); +assign Poniw6 = (~(Jqj7z6[14] & G5j7z6[5])); +assign Cw38v6 = (~(Woniw6 & Dpniw6)); +assign Dpniw6 = (~(G5j7z6[7] & Kpniw6)); +assign Kpniw6 = (~(Vtliw6 & Rpniw6)); +assign Vv38v6 = (!Ypniw6); +assign Ypniw6 = (M6j7z6[7] ? Mqniw6 : Fqniw6); +assign Mqniw6 = (~(Woniw6 & Tqniw6)); +assign Tqniw6 = (~(Gwliw6 & R62nv6)); +assign Gwliw6 = (~(Arniw6 | Twaiw6)); +assign Woniw6 = (~(Hrniw6 & H0miw6)); +assign Hrniw6 = (Orniw6 & Vrniw6); +assign Fqniw6 = (Csniw6 & Jsniw6); +assign Jsniw6 = (~(Bxliw6 & R62nv6)); +assign Bxliw6 = (~(Qsniw6 | Twaiw6)); +assign Csniw6 = (~(Qkj7z6[7] | Xsniw6)); +assign Xsniw6 = (Etniw6 & Tib7z6[7]); +assign Etniw6 = (~(Jqj7z6[16] & G5j7z6[7])); +assign Ov38v6 = (~(Ltniw6 & Stniw6)); +assign Stniw6 = (~(Ztniw6 & G5j7z6[17])); +assign Ztniw6 = (Guniw6 & U4fov6); +assign Guniw6 = (~(Cfmiw6 & Nuniw6)); +assign Hv38v6 = (!Uuniw6); +assign Uuniw6 = (M6j7z6[17] ? Ivniw6 : Bvniw6); +assign Ivniw6 = (~(Ltniw6 & Pvniw6)); +assign Pvniw6 = (~(Kcmiw6 & Gr5iw6)); +assign Ltniw6 = (~(Wvniw6 & Sfniw6)); +assign Wvniw6 = (Dcmiw6 & Ju2nv6); +assign Ju2nv6 = (!G5j7z6[17]); +assign Bvniw6 = (Dwniw6 & Kwniw6); +assign Kwniw6 = (~(Fdmiw6 & Gr5iw6)); +assign Dwniw6 = (~(Qkj7z6[17] | Rwniw6)); +assign Rwniw6 = (Ywniw6 & Tib7z6[17]); +assign Ywniw6 = (~(Jqj7z6[26] & G5j7z6[17])); +assign Av38v6 = (~(Fxniw6 & Mxniw6)); +assign Mxniw6 = (~(Txniw6 & U4fov6)); +assign Fxniw6 = (Ayniw6 & Hyniw6); +assign Ayniw6 = (Z3fov6 | Oyniw6); +assign Tu38v6 = (!Vyniw6); +assign Vyniw6 = (M6j7z6[19] ? Jzniw6 : Czniw6); +assign Jzniw6 = (~(Qzniw6 & Hyniw6)); +assign Hyniw6 = (~(Xzniw6 & Mjniw6)); +assign Xzniw6 = (Dcmiw6 & Oyniw6); +assign Oyniw6 = (!G5j7z6[19]); +assign Qzniw6 = (~(Kcmiw6 & Mn5iw6)); +assign Czniw6 = (E0oiw6 & L0oiw6); +assign L0oiw6 = (~(Fdmiw6 & Mn5iw6)); +assign E0oiw6 = (~(Qkj7z6[19] | S0oiw6)); +assign S0oiw6 = (Z0oiw6 & Tib7z6[19]); +assign Z0oiw6 = (~(Jqj7z6[28] & G5j7z6[19])); +assign Mu38v6 = (~(G1oiw6 & N1oiw6)); +assign N1oiw6 = (~(U1oiw6 & G5j7z6[21])); +assign U1oiw6 = (B2oiw6 & U4fov6); +assign B2oiw6 = (~(Cfmiw6 & I2oiw6)); +assign Fu38v6 = (!P2oiw6); +assign P2oiw6 = (M6j7z6[21] ? D3oiw6 : W2oiw6); +assign D3oiw6 = (~(G1oiw6 & K3oiw6)); +assign K3oiw6 = (~(Kcmiw6 & Ej5iw6)); +assign G1oiw6 = (~(R3oiw6 & Dcmiw6)); +assign R3oiw6 = (Gnniw6 & Y3oiw6); +assign W2oiw6 = (F4oiw6 & M4oiw6); +assign M4oiw6 = (~(Fdmiw6 & Ej5iw6)); +assign F4oiw6 = (~(Qkj7z6[21] | T4oiw6)); +assign T4oiw6 = (A5oiw6 & Tib7z6[21]); +assign A5oiw6 = (~(Jqj7z6[30] & G5j7z6[21])); +assign Yt38v6 = (~(H5oiw6 & O5oiw6)); +assign O5oiw6 = (~(V5oiw6 & G5j7z6[23])); +assign V5oiw6 = (C6oiw6 & U4fov6); +assign C6oiw6 = (~(Cfmiw6 & J6oiw6)); +assign Rt38v6 = (!Q6oiw6); +assign Q6oiw6 = (M6j7z6[23] ? E7oiw6 : X6oiw6); +assign E7oiw6 = (~(H5oiw6 & L7oiw6)); +assign L7oiw6 = (~(Kcmiw6 & Cx4iw6)); +assign Kcmiw6 = (~(Arniw6 | Ie5iw6)); +assign H5oiw6 = (~(S7oiw6 & Dcmiw6)); +assign S7oiw6 = (Orniw6 & Z7oiw6); +assign X6oiw6 = (G8oiw6 & N8oiw6); +assign N8oiw6 = (~(Fdmiw6 & Cx4iw6)); +assign Fdmiw6 = (~(Qsniw6 | Ie5iw6)); +assign G8oiw6 = (~(Qkj7z6[23] | U8oiw6)); +assign U8oiw6 = (B9oiw6 & Tib7z6[23]); +assign B9oiw6 = (~(Jqj7z6[32] & G5j7z6[23])); +assign Kt38v6 = (~(I9oiw6 & P9oiw6)); +assign P9oiw6 = (~(G5j7z6[33] & W9oiw6)); +assign W9oiw6 = (~(D3iov6 & Ceniw6)); +assign Ceniw6 = (~(U4fov6 & Daoiw6)); +assign Dt38v6 = (!Kaoiw6); +assign Kaoiw6 = (M6j7z6[33] ? Yaoiw6 : Raoiw6); +assign Yaoiw6 = (~(I9oiw6 & Fboiw6)); +assign Fboiw6 = (~(Osmiw6 & B52nv6)); +assign I9oiw6 = (~(Mboiw6 & Sfniw6)); +assign Mboiw6 = (A5iov6 & Tboiw6); +assign Raoiw6 = (Acoiw6 & Hcoiw6); +assign Hcoiw6 = (~(Jtmiw6 & B52nv6)); +assign Acoiw6 = (~(Qkj7z6[33] | Ocoiw6)); +assign Ocoiw6 = (Vcoiw6 & Tib7z6[33]); +assign Vcoiw6 = (~(Jqj7z6[42] & G5j7z6[33])); +assign Ws38v6 = (~(Cdoiw6 & Jdoiw6)); +assign Jdoiw6 = (~(G5j7z6[35] & Qdoiw6)); +assign Qdoiw6 = (~(D3iov6 & Whniw6)); +assign Whniw6 = (~(Xdoiw6 & U4fov6)); +assign Ps38v6 = (!Eeoiw6); +assign Eeoiw6 = (M6j7z6[35] ? Seoiw6 : Leoiw6); +assign Seoiw6 = (~(Cdoiw6 & Zeoiw6)); +assign Zeoiw6 = (~(Osmiw6 & P52nv6)); +assign Cdoiw6 = (~(Gfoiw6 & Mjniw6)); +assign Gfoiw6 = (A5iov6 & Nfoiw6); +assign Leoiw6 = (Ufoiw6 & Bgoiw6); +assign Bgoiw6 = (~(Jtmiw6 & P52nv6)); +assign Ufoiw6 = (~(Qkj7z6[35] | Igoiw6)); +assign Igoiw6 = (Pgoiw6 & Tib7z6[35]); +assign Pgoiw6 = (~(Jqj7z6[44] & G5j7z6[35])); +assign Is38v6 = (~(Wgoiw6 & Dhoiw6)); +assign Dhoiw6 = (~(G5j7z6[37] & Khoiw6)); +assign Khoiw6 = (~(D3iov6 & Qlniw6)); +assign Bs38v6 = (!Rhoiw6); +assign Rhoiw6 = (M6j7z6[37] ? Fioiw6 : Yhoiw6); +assign Fioiw6 = (~(Wgoiw6 & Mioiw6)); +assign Mioiw6 = (~(Osmiw6 & D62nv6)); +assign Wgoiw6 = (~(Tioiw6 & A5iov6)); +assign Tioiw6 = (Gnniw6 & Ajoiw6); +assign Yhoiw6 = (Hjoiw6 & Ojoiw6); +assign Ojoiw6 = (~(Jtmiw6 & D62nv6)); +assign Hjoiw6 = (~(Qkj7z6[37] | Vjoiw6)); +assign Vjoiw6 = (Ckoiw6 & Tib7z6[37]); +assign Ckoiw6 = (~(Jqj7z6[46] & G5j7z6[37])); +assign Ur38v6 = (~(Jkoiw6 & Qkoiw6)); +assign Qkoiw6 = (~(G5j7z6[39] & Xkoiw6)); +assign Xkoiw6 = (~(D3iov6 & Rpniw6)); +assign Nr38v6 = (!Eloiw6); +assign Eloiw6 = (M6j7z6[39] ? Sloiw6 : Lloiw6); +assign Sloiw6 = (~(Jkoiw6 & Zloiw6)); +assign Zloiw6 = (~(Osmiw6 & R62nv6)); +assign Osmiw6 = (Gmoiw6 & Bqi7z6[0]); +assign Gmoiw6 = (!Nmoiw6); +assign Jkoiw6 = (~(Umoiw6 & A5iov6)); +assign Umoiw6 = (Orniw6 & Bnoiw6); +assign Lloiw6 = (Inoiw6 & Pnoiw6); +assign Pnoiw6 = (~(Jtmiw6 & R62nv6)); +assign Jtmiw6 = (Wnoiw6 & Bqi7z6[0]); +assign Wnoiw6 = (!Dooiw6); +assign Inoiw6 = (~(Qkj7z6[39] | Kooiw6)); +assign Kooiw6 = (Rooiw6 & Tib7z6[39]); +assign Rooiw6 = (~(Jqj7z6[48] & G5j7z6[39])); +assign Gr38v6 = (~(Yooiw6 & Fpoiw6)); +assign Fpoiw6 = (Mpoiw6 | Fsliw6); +assign Yooiw6 = (Tpoiw6 & Aqoiw6); +assign Tpoiw6 = (Z3fov6 | Yr2nv6); +assign Zq38v6 = (!Hqoiw6); +assign Hqoiw6 = (M6j7z6[49] ? Vqoiw6 : Oqoiw6); +assign Vqoiw6 = (~(Croiw6 & Aqoiw6)); +assign Aqoiw6 = (~(Jroiw6 & Sfniw6)); +assign Sfniw6 = (~(Qroiw6 | P2j7z6[1])); +assign Jroiw6 = (R4hov6 & Yr2nv6); +assign Yr2nv6 = (!G5j7z6[49]); +assign Croiw6 = (~(X7niw6 & Gr5iw6)); +assign Oqoiw6 = (Xroiw6 & Esoiw6); +assign Esoiw6 = (~(S8niw6 & Gr5iw6)); +assign Xroiw6 = (~(Qkj7z6[49] | Lsoiw6)); +assign Lsoiw6 = (Ssoiw6 & Tib7z6[49]); +assign Ssoiw6 = (~(Jqj7z6[58] & G5j7z6[49])); +assign Sq38v6 = (~(Zsoiw6 & Gtoiw6)); +assign Gtoiw6 = (~(Ntoiw6 & U4fov6)); +assign Zsoiw6 = (Utoiw6 & Buoiw6); +assign Utoiw6 = (Z3fov6 | Ms2nv6); +assign Lq38v6 = (!Iuoiw6); +assign Iuoiw6 = (M6j7z6[51] ? Wuoiw6 : Puoiw6); +assign Wuoiw6 = (~(Dvoiw6 & Buoiw6)); +assign Buoiw6 = (~(Kvoiw6 & Mjniw6)); +assign Kvoiw6 = (R4hov6 & Ms2nv6); +assign Ms2nv6 = (!G5j7z6[51]); +assign Dvoiw6 = (~(X7niw6 & Mn5iw6)); +assign Puoiw6 = (Rvoiw6 & Yvoiw6); +assign Yvoiw6 = (~(S8niw6 & Mn5iw6)); +assign Rvoiw6 = (~(Qkj7z6[51] | Fwoiw6)); +assign Fwoiw6 = (Mwoiw6 & Tib7z6[51]); +assign Mwoiw6 = (~(Jqj7z6[60] & G5j7z6[51])); +assign Eq38v6 = (~(Twoiw6 & Axoiw6)); +assign Axoiw6 = (~(Hxoiw6 & Oxoiw6)); +assign Oxoiw6 = (~(A6oov6 | IFLUSH)); +assign A6oov6 = (N8xnv6 & Znnov6); +assign Hxoiw6 = (D61ov6 & A3ddt6); +assign Twoiw6 = (~(Vxoiw6 & Cyoiw6)); +assign Cyoiw6 = (M4xnv6 & Pj1ov6); +assign Vxoiw6 = (Jyoiw6 & Qyoiw6); +assign Jyoiw6 = (~(Xyoiw6 & Xloov6)); +assign Xloov6 = (!J21ov6); +assign Xyoiw6 = (~(Wzcdt6 & D61ov6)); +assign Xp38v6 = (~(Ezoiw6 & Lzoiw6)); +assign Lzoiw6 = (~(Szoiw6 & Pj1ov6)); +assign Ezoiw6 = (Zzoiw6 & G0piw6); +assign G0piw6 = (~(N0piw6 & U0piw6)); +assign U0piw6 = (B1piw6 & Ldo7v6); +assign B1piw6 = (I1piw6 & V4jhw6); +assign I1piw6 = (~(P1piw6 & W1piw6)); +assign W1piw6 = (~(Cgc7z6[0] & Qg2nv6)); +assign N0piw6 = (D2piw6 & Cgc7z6[2]); +assign Zzoiw6 = (~(K2piw6 & R2piw6)); +assign R2piw6 = (~(L7xnv6 | Y2piw6)); +assign L7xnv6 = (N8xnv6 & Q0wnv6); +assign N8xnv6 = (Xg1ov6 & H11ov6); +assign Xg1ov6 = (F3piw6 & Kconv6); +assign F3piw6 = (~(Crcdt6 & M3piw6)); +assign M3piw6 = (~(T3piw6 & Nlcdt6)); +assign T3piw6 = (A4piw6 & H4piw6); +assign H4piw6 = (Fsc7z6[0] ^ Eh1ov6); +assign Eh1ov6 = (!Emoov6); +assign A4piw6 = (~(Fsc7z6[1] ^ Ghnov6)); +assign K2piw6 = (Nbddt6 & O4piw6); +assign Qp38v6 = (V4piw6 & C5piw6); +assign C5piw6 = (J5piw6 & M4xnv6); +assign M4xnv6 = (!H11ov6); +assign J5piw6 = (~(IFLUSH | Sgcdt6)); +assign V4piw6 = (Qyoiw6 & Q5piw6); +assign Q5piw6 = (~(L8oov6 & X5piw6)); +assign X5piw6 = (~(J21ov6 & G2oov6)); +assign J21ov6 = (E6piw6 & Cgc7z6[3]); +assign Qyoiw6 = (Ujnet6 | Tr9ov6); +assign Tr9ov6 = (X0oet6 & L6piw6); +assign L6piw6 = (~(S6piw6 & Z6piw6)); +assign Z6piw6 = (~(G7piw6 & HRESPS[0])); +assign S6piw6 = (N7piw6 & U7piw6); +assign U7piw6 = (~(HRESPI[0] & B8piw6)); +assign B8piw6 = (~(I8piw6 & P8piw6)); +assign P8piw6 = (W8piw6 | D9piw6); +assign W8piw6 = (G7piw6 | K9piw6); +assign I8piw6 = (~(R9piw6 & Y9piw6)); +assign Y9piw6 = (~(Fapiw6 & Hrb7z6[0])); +assign N7piw6 = (~(K9piw6 & Qhlov6)); +assign Jp38v6 = (~(L3fov6 | Mapiw6)); +assign L3fov6 = (Mjniw6 & Vzgov6); +assign Cp38v6 = (~(Tapiw6 & Abpiw6)); +assign Abpiw6 = (~(S6cdt6 & Dcnov6)); +assign Tapiw6 = (Vs9ov6 | V9i8v6); +assign V9i8v6 = (Xolhw6 & Trnov6); +assign Trnov6 = (~(Vs9ov6 | T7mov6)); +assign Vo38v6 = (Dcnov6 ? Usbdt6 : Hbpiw6); +assign Oo38v6 = (~(Obpiw6 & Vbpiw6)); +assign Vbpiw6 = (~(Ccpiw6 & Ple7z6[0])); +assign Obpiw6 = (Jcpiw6 & Qcpiw6); +assign Qcpiw6 = (~(Udkov6 & C5jhw6)); +assign C5jhw6 = (~(Xcpiw6 & Edpiw6)); +assign Edpiw6 = (~(Dfkov6 & Ldpiw6)); +assign Ldpiw6 = (~(Sdpiw6 & Zdpiw6)); +assign Zdpiw6 = (~(Z4hdt6 & Gepiw6)); +assign Xcpiw6 = (~(Bsgdt6 & Nepiw6)); +assign Jcpiw6 = (Uepiw6 | Xzhhw6); +assign Xzhhw6 = (Bfpiw6 & Ifpiw6); +assign Ifpiw6 = (Pfpiw6 & Wfpiw6); +assign Wfpiw6 = (~(Uqd7z6[22] & Dgpiw6)); +assign Pfpiw6 = (Kgpiw6 & Rgpiw6); +assign Kgpiw6 = (~(Zec7z6[6] & Ygpiw6)); +assign Bfpiw6 = (Fhpiw6 & Htfhw6); +assign Htfhw6 = (!Mhpiw6); +assign Fhpiw6 = (Thpiw6 & Aipiw6); +assign Aipiw6 = (~(Ovbdt6 & Hipiw6)); +assign Thpiw6 = (~(Zec7z6[0] & Oipiw6)); +assign Ho38v6 = (~(Vipiw6 & Cjpiw6)); +assign Cjpiw6 = (~(Jjpiw6 & Dxghw6)); +assign Dxghw6 = (~(Qjpiw6 & Xjpiw6)); +assign Xjpiw6 = (Ekpiw6 & Lkpiw6); +assign Lkpiw6 = (Skpiw6 & Zkpiw6); +assign Zkpiw6 = (Glpiw6 | S9nhw6); +assign Skpiw6 = (Dsehw6 | B2phw6); +assign Ekpiw6 = (Nlpiw6 & Ulpiw6); +assign Ulpiw6 = (~(Zec7z6[7] & Oipiw6)); +assign Nlpiw6 = (~(Hipiw6 & Oenhw6)); +assign Qjpiw6 = (Bmpiw6 & Impiw6); +assign Impiw6 = (Pmpiw6 & Wmpiw6); +assign Wmpiw6 = (~(Q1s8v6 & J7ohw6)); +assign Pmpiw6 = (Fcinv6 | E7phw6); +assign Bmpiw6 = (Dnpiw6 & Knpiw6); +assign Knpiw6 = (~(Zec7z6[5] & Zwlhw6)); +assign Vipiw6 = (~(Ple7z6[7] & Ccpiw6)); +assign Ao38v6 = (~(Rnpiw6 & Ynpiw6)); +assign Ynpiw6 = (~(Jjpiw6 & C0hhw6)); +assign C0hhw6 = (~(Fopiw6 & Mopiw6)); +assign Mopiw6 = (Topiw6 & Appiw6); +assign Appiw6 = (Hppiw6 & Oppiw6); +assign Oppiw6 = (~(Ryr8v6 & J7ohw6)); +assign Hppiw6 = (Vppiw6 & Cqpiw6); +assign Cqpiw6 = (~(Jqpiw6 & Zec7z6[10])); +assign Vppiw6 = (~(Uqd7z6[22] & Hipiw6)); +assign Topiw6 = (Qqpiw6 & Xqpiw6); +assign Xqpiw6 = (~(Zec7z6[4] & Zwlhw6)); +assign Qqpiw6 = (~(Zec7z6[6] & Oipiw6)); +assign Fopiw6 = (Erpiw6 & Lrpiw6); +assign Lrpiw6 = (Srpiw6 & Zrpiw6); +assign Zrpiw6 = (Zpehw6 | E7phw6); +assign Srpiw6 = (Gspiw6 & Nspiw6); +assign Nspiw6 = (E9onv6 | B2phw6); +assign Gspiw6 = (Dsehw6 | S9nhw6); +assign Erpiw6 = (Qufhw6 & Uspiw6); +assign Uspiw6 = (~(Btpiw6 & Zec7z6[9])); +assign Rnpiw6 = (~(Ple7z6[6] & Ccpiw6)); +assign Tn38v6 = (~(Itpiw6 & Ptpiw6)); +assign Ptpiw6 = (Uepiw6 | Y4hhw6); +assign Y4hhw6 = (Wtpiw6 & Dupiw6); +assign Dupiw6 = (Kupiw6 & Rupiw6); +assign Rupiw6 = (Yupiw6 & Fvpiw6); +assign Fvpiw6 = (Mvpiw6 & Tvpiw6); +assign Tvpiw6 = (~(Awpiw6 & Hwpiw6)); +assign Awpiw6 = (Owpiw6 & Vwpiw6); +assign Vwpiw6 = (Dsehw6 ^ E9onv6); +assign Mvpiw6 = (O0nhw6 | Rktov6); +assign Yupiw6 = (Cxpiw6 & Jxpiw6); +assign Jxpiw6 = (~(Jqpiw6 & Zec7z6[9])); +assign Cxpiw6 = (~(Uqd7z6[21] & Hipiw6)); +assign Kupiw6 = (Qxpiw6 & Xxpiw6); +assign Xxpiw6 = (~(Zec7z6[5] & Oipiw6)); +assign Qxpiw6 = (Eypiw6 & Lypiw6); +assign Lypiw6 = (~(Svr8v6 & J7ohw6)); +assign Eypiw6 = (~(Zec7z6[3] & Zwlhw6)); +assign Wtpiw6 = (Sypiw6 & Zypiw6); +assign Zypiw6 = (Gzpiw6 & Nzpiw6); +assign Nzpiw6 = (Qtnov6 | E7phw6); +assign Gzpiw6 = (Uzpiw6 & B0qiw6); +assign B0qiw6 = (Fjohw6 | B2phw6); +assign Uzpiw6 = (E9onv6 | S9nhw6); +assign Sypiw6 = (I0qiw6 & P0qiw6); +assign I0qiw6 = (W0qiw6 & D1qiw6); +assign D1qiw6 = (~(K1qiw6 & Zec7z6[10])); +assign W0qiw6 = (~(Btpiw6 & Zec7z6[7])); +assign Itpiw6 = (~(Ccpiw6 & Ple7z6[5])); +assign Mn38v6 = (~(R1qiw6 & Y1qiw6)); +assign Y1qiw6 = (~(Ccpiw6 & Ple7z6[4])); +assign R1qiw6 = (F2qiw6 & M2qiw6); +assign M2qiw6 = (~(Udkov6 & J5jhw6)); +assign J5jhw6 = (T2qiw6 | A3qiw6); +assign A3qiw6 = (Dfkov6 & H3qiw6); +assign H3qiw6 = (~(O3qiw6 & V3qiw6)); +assign V3qiw6 = (~(Jwgdt6 & C4qiw6)); +assign C4qiw6 = (J4qiw6 | Nygdt6); +assign T2qiw6 = (Mpe7z6[4] ? X4qiw6 : Q4qiw6); +assign X4qiw6 = (~(E5qiw6 | L5qiw6)); +assign F2qiw6 = (~(Jjpiw6 & Wahhw6)); +assign Wahhw6 = (~(S5qiw6 & Z5qiw6)); +assign Z5qiw6 = (G6qiw6 & N6qiw6); +assign N6qiw6 = (U6qiw6 & B7qiw6); +assign B7qiw6 = (I7qiw6 & P7qiw6); +assign P7qiw6 = (~(Zec7z6[10] & W7qiw6)); +assign I7qiw6 = (~(Jqpiw6 & Zec7z6[8])); +assign U6qiw6 = (D8qiw6 & K8qiw6); +assign K8qiw6 = (~(Uqd7z6[20] & Hipiw6)); +assign D8qiw6 = (~(Zec7z6[30] & Dgpiw6)); +assign G6qiw6 = (R8qiw6 & Y8qiw6); +assign Y8qiw6 = (T6onv6 | Dsehw6); +assign R8qiw6 = (F9qiw6 & M9qiw6); +assign M9qiw6 = (~(Tsr8v6 & J7ohw6)); +assign F9qiw6 = (~(Zec7z6[2] & Zwlhw6)); +assign S5qiw6 = (T9qiw6 & Aaqiw6); +assign Aaqiw6 = (Haqiw6 & Oaqiw6); +assign Oaqiw6 = (Vaqiw6 & Cbqiw6); +assign Cbqiw6 = (~(Zec7z6[4] & Oipiw6)); +assign Vaqiw6 = (Jbqiw6 | B2phw6); +assign Haqiw6 = (Qbqiw6 & Xbqiw6); +assign Xbqiw6 = (Fjohw6 | S9nhw6); +assign Qbqiw6 = (U2ohw6 | E7phw6); +assign T9qiw6 = (Ecqiw6 & Lvfhw6); +assign Lvfhw6 = (!Lcqiw6); +assign Ecqiw6 = (Scqiw6 & Zcqiw6); +assign Zcqiw6 = (~(K1qiw6 & Zec7z6[9])); +assign Scqiw6 = (~(Btpiw6 & Zec7z6[6])); +assign Fn38v6 = (~(Gdqiw6 & Ndqiw6)); +assign Ndqiw6 = (~(Ccpiw6 & Ple7z6[3])); +assign Gdqiw6 = (Udqiw6 & Beqiw6); +assign Beqiw6 = (~(Udkov6 & Q5jhw6)); +assign Q5jhw6 = (~(Ieqiw6 & Peqiw6)); +assign Peqiw6 = (~(Dfkov6 & Weqiw6)); +assign Weqiw6 = (Nygdt6 ^ Dfqiw6); +assign Ieqiw6 = (Kfqiw6 & Wekov6); +assign Wekov6 = (!Q4qiw6); +assign Q4qiw6 = (Nepiw6 & L5qiw6); +assign L5qiw6 = (~(Mpe7z6[3] | Mpe7z6[2])); +assign Kfqiw6 = (~(Rfqiw6 & Mpe7z6[3])); +assign Rfqiw6 = (Mpe7z6[2] & Nepiw6); +assign Udqiw6 = (Uepiw6 | Vdhhw6); +assign Vdhhw6 = (Yfqiw6 & Fgqiw6); +assign Fgqiw6 = (Mgqiw6 & Tgqiw6); +assign Tgqiw6 = (Ahqiw6 & Hhqiw6); +assign Hhqiw6 = (Ohqiw6 & Vhqiw6); +assign Vhqiw6 = (~(J7ohw6 & Uonhw6)); +assign Uonhw6 = (Nas8v6 & M6nhw6); +assign Ohqiw6 = (~(Zec7z6[9] & W7qiw6)); +assign Ahqiw6 = (Ciqiw6 & Jiqiw6); +assign Jiqiw6 = (~(Jqpiw6 & Zec7z6[7])); +assign Ciqiw6 = (~(Uqd7z6[19] & Hipiw6)); +assign Mgqiw6 = (Qiqiw6 & Xiqiw6); +assign Xiqiw6 = (T6onv6 | E9onv6); +assign Qiqiw6 = (Ejqiw6 & Ljqiw6); +assign Ljqiw6 = (~(Dgpiw6 & M6nhw6)); +assign Ejqiw6 = (~(Zec7z6[1] & Zwlhw6)); +assign Yfqiw6 = (Sjqiw6 & Zjqiw6); +assign Zjqiw6 = (Gkqiw6 & Nkqiw6); +assign Nkqiw6 = (Ukqiw6 & Blqiw6); +assign Blqiw6 = (~(Zec7z6[3] & Oipiw6)); +assign Ukqiw6 = (Jgtov6 | B2phw6); +assign Gkqiw6 = (Ilqiw6 & Plqiw6); +assign Plqiw6 = (Jbqiw6 | S9nhw6); +assign Ilqiw6 = (T5ohw6 | E7phw6); +assign Sjqiw6 = (Wlqiw6 & Dmqiw6); +assign Wlqiw6 = (Kmqiw6 & Rmqiw6); +assign Rmqiw6 = (~(K1qiw6 & Zec7z6[8])); +assign Kmqiw6 = (~(Btpiw6 & Zec7z6[5])); +assign Ym38v6 = (~(Ymqiw6 & Fnqiw6)); +assign Fnqiw6 = (~(Ccpiw6 & Ple7z6[2])); +assign Ymqiw6 = (Mnqiw6 & Tnqiw6); +assign Tnqiw6 = (~(Udkov6 & X5jhw6)); +assign X5jhw6 = (~(Aoqiw6 & Hoqiw6)); +assign Hoqiw6 = (~(Dfkov6 & Ooqiw6)); +assign Ooqiw6 = (~(J4qiw6 & Voqiw6)); +assign Voqiw6 = (~(R0hdt6 & Cpqiw6)); +assign J4qiw6 = (!Dfqiw6); +assign Aoqiw6 = (E5qiw6 | Mpe7z6[2]); +assign Mnqiw6 = (~(Jjpiw6 & Kphhw6)); +assign Kphhw6 = (~(Jpqiw6 & Qpqiw6)); +assign Qpqiw6 = (Xpqiw6 & Eqqiw6); +assign Eqqiw6 = (Lqqiw6 & Sqqiw6); +assign Sqqiw6 = (Zqqiw6 & Grqiw6); +assign Grqiw6 = (~(Asnhw6 & J7ohw6)); +assign Asnhw6 = (O7s8v6 & M6nhw6); +assign Zqqiw6 = (~(Jqpiw6 & Zec7z6[6])); +assign Jqpiw6 = (~(Nrqiw6 | Zec7z6[12])); +assign Lqqiw6 = (Urqiw6 & Bsqiw6); +assign Bsqiw6 = (~(Uqd7z6[18] & Hipiw6)); +assign Urqiw6 = (~(Zec7z6[8] & Ygpiw6)); +assign Xpqiw6 = (Isqiw6 & Psqiw6); +assign Psqiw6 = (~(Zec7z6[2] & Oipiw6)); +assign Isqiw6 = (Wsqiw6 & Dtqiw6); +assign Dtqiw6 = (~(Dgpiw6 & Z9nhw6)); +assign Wsqiw6 = (~(Zec7z6[0] & Zwlhw6)); +assign Jpqiw6 = (Ktqiw6 & Rtqiw6); +assign Rtqiw6 = (Ytqiw6 & Fuqiw6); +assign Fuqiw6 = (S8ohw6 | E7phw6); +assign Ytqiw6 = (Muqiw6 & Tuqiw6); +assign Tuqiw6 = (Ctnov6 | B2phw6); +assign Muqiw6 = (Jgtov6 | S9nhw6); +assign Ktqiw6 = (Avqiw6 & Msfhw6); +assign Avqiw6 = (Hvqiw6 & Ovqiw6); +assign Ovqiw6 = (~(K1qiw6 & Zec7z6[7])); +assign Hvqiw6 = (~(Btpiw6 & Zec7z6[4])); +assign Rm38v6 = (~(Vvqiw6 & Cwqiw6)); +assign Cwqiw6 = (~(Ccpiw6 & Ple7z6[1])); +assign Vvqiw6 = (Jwqiw6 & Qwqiw6); +assign Qwqiw6 = (~(Udkov6 & E6jhw6)); +assign E6jhw6 = (~(Xwqiw6 & Exqiw6)); +assign Exqiw6 = (~(Dfkov6 & Lxqiw6)); +assign Lxqiw6 = (~(Cpqiw6 & Sxqiw6)); +assign Sxqiw6 = (~(V2hdt6 & Sdpiw6)); +assign Xwqiw6 = (L6jhw6 | E5qiw6); +assign E5qiw6 = (!Nepiw6); +assign Nepiw6 = (~(Dfkov6 | Mpe7z6[5])); +assign L6jhw6 = (!Xpgdt6); +assign Jwqiw6 = (~(Jjpiw6 & Ywhhw6)); +assign Ywhhw6 = (~(Zxqiw6 & Gyqiw6)); +assign Gyqiw6 = (Nyqiw6 & Uyqiw6); +assign Uyqiw6 = (Bzqiw6 & Izqiw6); +assign Izqiw6 = (~(Dgpiw6 & Oenhw6)); +assign Dgpiw6 = (~(Pzqiw6 & Uqehw6)); +assign Pzqiw6 = (Wzqiw6 & D0riw6); +assign Wzqiw6 = (O0nhw6 | K0riw6); +assign Bzqiw6 = (R0riw6 & Y0riw6); +assign Y0riw6 = (~(Uqd7z6[17] & Hipiw6)); +assign Hipiw6 = (F1riw6 | Okohw6); +assign Okohw6 = (~(Prsov6 & Paohw6)); +assign Paohw6 = (~(Mynhw6 & Xeinv6)); +assign F1riw6 = (~(M1riw6 & T1riw6)); +assign M1riw6 = (Yxnhw6 | Mqohw6); +assign Mqohw6 = (Kfa7z6 & M6nhw6); +assign Yxnhw6 = (~(A2riw6 & H2riw6)); +assign R0riw6 = (~(Zec7z6[7] & Ygpiw6)); +assign Ygpiw6 = (W7qiw6 | O2riw6); +assign O2riw6 = (!V2riw6); +assign W7qiw6 = (~(C3riw6 & J3riw6)); +assign J3riw6 = (~(Rdfhw6 & Zec7z6[12])); +assign Nyqiw6 = (Q3riw6 & X3riw6); +assign X3riw6 = (~(Zunhw6 & J7ohw6)); +assign J7ohw6 = (E4riw6 & Nvnhw6); +assign Nvnhw6 = (~(L4riw6 | H2riw6)); +assign E4riw6 = (Zec7z6[10] & Zec7z6[30]); +assign Zunhw6 = (P4s8v6 & M6nhw6); +assign P4s8v6 = (C7t8v6 & Z9nhw6); +assign C7t8v6 = (~(Ctnov6 | Sfa7z6)); +assign Q3riw6 = (~(Zec7z6[1] & Oipiw6)); +assign Zxqiw6 = (S4riw6 & Z4riw6); +assign Z4riw6 = (G5riw6 & N5riw6); +assign N5riw6 = (~(K1qiw6 & Zec7z6[6])); +assign G5riw6 = (U5riw6 & B6riw6); +assign B6riw6 = (Ctnov6 | S9nhw6); +assign U5riw6 = (Baohw6 | E7phw6); +assign S4riw6 = (I6riw6 & P6riw6); +assign P6riw6 = (~(Btpiw6 & Zec7z6[3])); +assign Jjpiw6 = (!Uepiw6); +assign Uepiw6 = (Udkov6 | Ccpiw6); +assign Ccpiw6 = (~(W6riw6 | Udkov6)); +assign Udkov6 = (D7riw6 & Bdf7z6[2]); +assign D7riw6 = (Bdf7z6[3] & Y4aov6); +assign Km38v6 = (K7riw6 | R7riw6); +assign K7riw6 = (Y7riw6 & Djgdt6); +assign Y7riw6 = (F8riw6 & M8riw6); +assign F8riw6 = (~(Ehgdt6 & Zbmnv6)); +assign Zbmnv6 = (!T8riw6); +assign Dm38v6 = (~(A9riw6 & H9riw6)); +assign H9riw6 = (~(O9riw6 & T8riw6)); +assign O9riw6 = (Ehgdt6 & M8riw6); +assign A9riw6 = (~(V9riw6 & Cariw6)); +assign Cariw6 = (~(Jariw6 & Qariw6)); +assign Jariw6 = (~(W6riw6 & Xariw6)); +assign Wl38v6 = (~(Ebriw6 & Lbriw6)); +assign Lbriw6 = (Sbriw6 | Zbriw6); +assign Ebriw6 = (~(Dte7z6[0] & M8riw6)); +assign Pl38v6 = (~(Gcriw6 & Ncriw6)); +assign Ncriw6 = (~(Ucriw6 & Bdriw6)); +assign Bdriw6 = (~(Idriw6 & Pdriw6)); +assign Idriw6 = (Wdriw6 & Deriw6); +assign Gcriw6 = (~(Dte7z6[20] & M8riw6)); +assign Il38v6 = (~(Keriw6 & Reriw6)); +assign Reriw6 = (~(Ucriw6 & Yeriw6)); +assign Yeriw6 = (~(Ffriw6 & Mfriw6)); +assign Mfriw6 = (Tfriw6 & Agriw6); +assign Agriw6 = (~(Hgriw6 & Ogriw6)); +assign Ogriw6 = (~(Vgriw6 & Chriw6)); +assign Chriw6 = (Jhriw6 | H2riw6); +assign Vgriw6 = (Daphw6 & Dssov6); +assign Tfriw6 = (Qhriw6 & Xhriw6); +assign Ffriw6 = (Eiriw6 & Liriw6); +assign Eiriw6 = (Siriw6 & Wdriw6); +assign Keriw6 = (~(Dte7z6[19] & M8riw6)); +assign Bl38v6 = (~(Ziriw6 & Gjriw6)); +assign Gjriw6 = (~(Ucriw6 & Njriw6)); +assign Njriw6 = (~(Ujriw6 & Bkriw6)); +assign Bkriw6 = (Ikriw6 & Pkriw6); +assign Pkriw6 = (Qhriw6 & Wkriw6); +assign Qhriw6 = (~(Hgriw6 & Dlriw6)); +assign Ikriw6 = (Klriw6 & Rlriw6); +assign Klriw6 = (~(Ylriw6 & Fmriw6)); +assign Ylriw6 = (Hgriw6 & H2riw6); +assign Hgriw6 = (~(Qtnov6 | Mmriw6)); +assign Ujriw6 = (Tmriw6 & Anriw6); +assign Tmriw6 = (V2riw6 & Aulhw6); +assign Ziriw6 = (~(Dte7z6[18] & M8riw6)); +assign Uk38v6 = (Hnriw6 | Teliw6); +assign Hnriw6 = (N3onv6 ? Onriw6 : X0cdt6); +assign Onriw6 = (~(Vnriw6 & Coriw6)); +assign Coriw6 = (Joriw6 & Qoriw6); +assign Qoriw6 = (~(Xoriw6 & Cyihw6)); +assign Xoriw6 = (~(Epriw6 & Lpriw6)); +assign Lpriw6 = (~(Spriw6 & S0ihw6)); +assign Epriw6 = (~(Iwvnv6 & Dyfhw6)); +assign Iwvnv6 = (Mqhhw6 & B8cdt6); +assign Joriw6 = (~(B8cdt6 & Zpriw6)); +assign Zpriw6 = (~(Gqriw6 & Nqriw6)); +assign Nqriw6 = (~(Uqriw6 & Brriw6)); +assign Uqriw6 = (Oxihw6 & Irriw6); +assign Oxihw6 = (~(Prriw6 & Bylhw6)); +assign Prriw6 = (Wrriw6 & Dsriw6); +assign Wrriw6 = (~(Ksriw6 & Zec7z6[5])); +assign Ksriw6 = (~(Rsriw6 | K0riw6)); +assign Gqriw6 = (Ysriw6 & Ftriw6); +assign Ftriw6 = (~(Mtriw6 & Ttriw6)); +assign Ttriw6 = (Auriw6 & Gifhw6); +assign Auriw6 = (Zhfhw6 & Shfhw6); +assign Mtriw6 = (~(Nifhw6 | Huriw6)); +assign Huriw6 = (~(Ouriw6 | P6lhw6)); +assign P6lhw6 = (Vuriw6 & Cvriw6); +assign Cvriw6 = (!Cyihw6); +assign Vuriw6 = (N3onv6 & Mzfhw6); +assign Mzfhw6 = (!Jvriw6); +assign Ysriw6 = (~(Qvriw6 & Xvriw6)); +assign Xvriw6 = (Cyihw6 & F4ihw6); +assign Cyihw6 = (~(Ewriw6 & Lwriw6)); +assign Lwriw6 = (Swriw6 & Yvihw6); +assign Swriw6 = (~(Zwriw6 | Gxriw6)); +assign Ewriw6 = (Nxriw6 & Uxriw6); +assign Uxriw6 = (~(Zec7z6[4] & Byriw6)); +assign Byriw6 = (~(Iyriw6 & Mefhw6)); +assign Nxriw6 = (Pyriw6 & Wyriw6); +assign Wyriw6 = (~(Ydfhw6 & Dzriw6)); +assign Dzriw6 = (Xgmhw6 | Kzriw6); +assign Pyriw6 = (~(Zec7z6[11] & Rzriw6)); +assign Qvriw6 = (Wwvnv6 & Yzriw6); +assign Vnriw6 = (F0siw6 & M0siw6); +assign M0siw6 = (~(Spriw6 & Eilhw6)); +assign Eilhw6 = (~(T0siw6 & A1siw6)); +assign A1siw6 = (H1siw6 & O1siw6); +assign O1siw6 = (V1siw6 & C2siw6); +assign C2siw6 = (~(J2siw6 & Q2siw6)); +assign Q2siw6 = (X2siw6 & E3siw6); +assign E3siw6 = (~(L3siw6 & Uqd7z6[20])); +assign L3siw6 = (Uqd7z6[18] & S3siw6); +assign X2siw6 = (~(Uqd7z6[19] & Z3siw6)); +assign Z3siw6 = (~(G4siw6 & N4siw6)); +assign N4siw6 = (~(Uqd7z6[17] & Ovbdt6)); +assign G4siw6 = (Jbqiw6 & E9onv6); +assign J2siw6 = (U4siw6 & Kktov6); +assign V1siw6 = (B5siw6 & Xhriw6); +assign H1siw6 = (I5siw6 & P5siw6); +assign P5siw6 = (W5siw6 | D6siw6); +assign I5siw6 = (K6siw6 & R6siw6); +assign R6siw6 = (~(Y6siw6 & F7siw6)); +assign F7siw6 = (M7siw6 & Rktov6); +assign Y6siw6 = (Tmsov6 & Ansov6); +assign K6siw6 = (~(T7siw6 & Gxlhw6)); +assign Gxlhw6 = (~(A8siw6 & H8siw6)); +assign H8siw6 = (O8siw6 & V8siw6); +assign V8siw6 = (C9siw6 & Daphw6); +assign Daphw6 = (!J9siw6); +assign C9siw6 = (Kaphw6 & Q9siw6); +assign O8siw6 = (O0nhw6 & Xosov6); +assign A8siw6 = (X9siw6 & Easiw6); +assign Easiw6 = (Lasiw6 & Sasiw6); +assign Lasiw6 = (Jhriw6 & Zasiw6); +assign Jhriw6 = (!Fmriw6); +assign X9siw6 = (Gbsiw6 & Nbsiw6); +assign T7siw6 = (~(Zec7z6[25] & Ubsiw6)); +assign T0siw6 = (Bcsiw6 & Icsiw6); +assign Icsiw6 = (Pcsiw6 & Wcsiw6); +assign Pcsiw6 = (Ddsiw6 & S9nhw6); +assign Bcsiw6 = (Kdsiw6 & Rdsiw6); +assign Kdsiw6 = (Siriw6 & Ydsiw6); +assign Spriw6 = (Fesiw6 & Mesiw6); +assign Mesiw6 = (Tesiw6 & S4lhw6); +assign Tesiw6 = (L4lhw6 & Xehov6); +assign Fesiw6 = (~(I6lhw6 | Gaonv6)); +assign Gaonv6 = (!B8cdt6); +assign F0siw6 = (~(X0cdt6 & V0onv6)); +assign V0onv6 = (Afsiw6 & Hfsiw6); +assign Hfsiw6 = (Pxfov6 & Ofsiw6); +assign Afsiw6 = (Ecc7z6[3] & Pbadt6); +assign Nk38v6 = (Vfsiw6 ? Oyfdt6 : Ofsiw6); +assign Ofsiw6 = (Cgsiw6 | S0jnv6); +assign Gk38v6 = (~(Jgsiw6 & Qgsiw6)); +assign Qgsiw6 = (~(Xgsiw6 & Ohe7z6[7])); +assign Jgsiw6 = (~(Vfsiw6 & Mfe7z6[7])); +assign Zj38v6 = (~(Ehsiw6 & Lhsiw6)); +assign Lhsiw6 = (~(Xgsiw6 & Ohe7z6[6])); +assign Ehsiw6 = (~(Vfsiw6 & Mfe7z6[6])); +assign Sj38v6 = (~(Shsiw6 & Zhsiw6)); +assign Zhsiw6 = (~(Xgsiw6 & Ohe7z6[5])); +assign Shsiw6 = (~(Vfsiw6 & Mfe7z6[5])); +assign Lj38v6 = (~(Gisiw6 & Nisiw6)); +assign Nisiw6 = (~(Xgsiw6 & N0gdt6)); +assign Gisiw6 = (~(Vfsiw6 & Mfe7z6[4])); +assign Ej38v6 = (~(Uisiw6 & Bjsiw6)); +assign Bjsiw6 = (~(Xgsiw6 & Ohe7z6[4])); +assign Xgsiw6 = (~(Vfsiw6 | Sa2nv6)); +assign Uisiw6 = (~(Vfsiw6 & Mfe7z6[3])); +assign Vfsiw6 = (Upfov6 & Ijsiw6); +assign Ijsiw6 = (~(N3onv6 & Oyfdt6)); +assign Upfov6 = (Pjsiw6 & Wjsiw6); +assign Wjsiw6 = (Dksiw6 & P5mov6); +assign P5mov6 = (~(N3onv6 & Kksiw6)); +assign Kksiw6 = (~(W4onv6 & G4mov6)); +assign Dksiw6 = (Rksiw6 & Yksiw6); +assign Yksiw6 = (~(Flsiw6 & Mlsiw6)); +assign Flsiw6 = (~(Wqfov6 | Tlsiw6)); +assign Tlsiw6 = (!Ohe7z6[4]); +assign Rksiw6 = (!N4mov6); +assign N4mov6 = (Amsiw6 & Mlsiw6); +assign Mlsiw6 = (Hmsiw6 & Fsfov6); +assign Fsfov6 = (Omsiw6 & Vmsiw6); +assign Omsiw6 = (Cnsiw6 & Jnsiw6); +assign Cnsiw6 = (~(Qg2nv6 & Qnsiw6)); +assign Qnsiw6 = (~(Xnsiw6 & Eosiw6)); +assign Eosiw6 = (Losiw6 & Sosiw6); +assign Xnsiw6 = (Gd77z6 & Zosiw6); +assign Hmsiw6 = (~(Gpsiw6 | Npsiw6)); +assign Npsiw6 = (Upsiw6 & Bqsiw6); +assign Bqsiw6 = (~(Iqsiw6 & N3onv6)); +assign Iqsiw6 = (W4onv6 & Qg2nv6); +assign Upsiw6 = (~(Teliw6 & Pqsiw6)); +assign Pqsiw6 = (Wqsiw6 | Drsiw6); +assign Amsiw6 = (Krsiw6 & Wqfov6); +assign Pjsiw6 = (Rrsiw6 & M0mov6); +assign M0mov6 = (Yrsiw6 & Fssiw6); +assign Fssiw6 = (~(Mssiw6 | Zo1ov6)); +assign Mssiw6 = (Tssiw6 & Atsiw6); +assign Atsiw6 = (~(Htsiw6 & Otsiw6)); +assign Tssiw6 = (~(Elphw6 & Vtsiw6)); +assign Vtsiw6 = (~(Gmphw6 & Cusiw6)); +assign Cusiw6 = (~(Mq9iw6 & Jusiw6)); +assign Jusiw6 = (~(Qusiw6 & Ijmov6)); +assign Yrsiw6 = (Xusiw6 & Evsiw6); +assign Evsiw6 = (~(Lvsiw6 & Gmphw6)); +assign Gmphw6 = (Gr2et6 & Otsiw6); +assign Lvsiw6 = (Svsiw6 & Yioov6); +assign Svsiw6 = (~(Zvsiw6 & Xlinv6)); +assign Xlinv6 = (Rhphw6 | Bwvnv6); +assign Zvsiw6 = (Gwsiw6 | Dwb7z6[5]); +assign Xusiw6 = (~(Xtvnv6 & Nwsiw6)); +assign Nwsiw6 = (~(Uwsiw6 & Bxsiw6)); +assign Bxsiw6 = (~(Ixsiw6 & Pxsiw6)); +assign Pxsiw6 = (Bfo7v6 & Qtvnv6); +assign Ixsiw6 = (Wxsiw6 & Gr2et6); +assign Uwsiw6 = (~(Dysiw6 & C0ydt6)); +assign C0ydt6 = (~(Qg2nv6 & Kysiw6)); +assign Kysiw6 = (~(Hbo7v6 & Xsinv6)); +assign Xtvnv6 = (~(Rysiw6 | Htsiw6)); +assign Htsiw6 = (Yysiw6 & Fzsiw6); +assign Fzsiw6 = (~(L2nov6 | Mzmov6)); +assign Yysiw6 = (~(Gwmov6 | Y5nov6)); +assign Rrsiw6 = (Mzsiw6 & Po9iw6); +assign Po9iw6 = (~(F02nv6 & Qu1ov6)); +assign Mzsiw6 = (~(Tzsiw6 & A0tiw6)); +assign A0tiw6 = (~(F02nv6 | Yrfov6)); +assign Tzsiw6 = (~(Krsiw6 | H0tiw6)); +assign Krsiw6 = (Wqsiw6 | Rihov6); +assign Xi38v6 = (~(O0tiw6 & V0tiw6)); +assign V0tiw6 = (~(Dte7z6[17] & M8riw6)); +assign Qi38v6 = (C1tiw6 | J1tiw6); +assign J1tiw6 = (Dte7z6[16] & M8riw6); +assign Ji38v6 = (Q1tiw6 | X1tiw6); +assign X1tiw6 = (Dte7z6[15] & M8riw6); +assign Ci38v6 = (~(E2tiw6 & L2tiw6)); +assign L2tiw6 = (~(Dte7z6[14] & M8riw6)); +assign Vh38v6 = (~(S2tiw6 & Z2tiw6)); +assign Z2tiw6 = (~(Dte7z6[13] & M8riw6)); +assign Oh38v6 = (~(G3tiw6 & N3tiw6)); +assign N3tiw6 = (~(D3bov6 & S7f7z6[1])); +assign G3tiw6 = (U3tiw6 & B4tiw6); +assign Hh38v6 = (~(P2bov6 & I4tiw6)); +assign I4tiw6 = (~(D3bov6 & S7f7z6[2])); +assign Ah38v6 = (~(P4tiw6 & W4tiw6)); +assign W4tiw6 = (D5tiw6 & B4tiw6); +assign B4tiw6 = (~(K5tiw6 & R5tiw6)); +assign K5tiw6 = (~(Y5tiw6 | I4a7z6)); +assign D5tiw6 = (F6tiw6 | Q4a7z6); +assign P4tiw6 = (P2bov6 & M6tiw6); +assign M6tiw6 = (~(D3bov6 & S7f7z6[3])); +assign Tg38v6 = (~(T6tiw6 & A7tiw6)); +assign A7tiw6 = (~(D3bov6 & S7f7z6[4])); +assign T6tiw6 = (H7tiw6 & U3tiw6); +assign U3tiw6 = (~(O7tiw6 & V7tiw6)); +assign V7tiw6 = (~(Rsi8v6 | I4a7z6)); +assign O7tiw6 = (Abo7v6 & Y5tiw6); +assign H7tiw6 = (F6tiw6 | Y5tiw6); +assign Mg38v6 = (~(C8tiw6 & P2bov6)); +assign P2bov6 = (Abo7v6 ? Q8tiw6 : J8tiw6); +assign Q8tiw6 = (~(X8tiw6 & Y5tiw6)); +assign Y5tiw6 = (!Q4a7z6); +assign Q4a7z6 = (S9tiw6 ? L9tiw6 : E9tiw6); +assign L9tiw6 = (~(Z9tiw6 & Gatiw6)); +assign Gatiw6 = (Natiw6 & Uatiw6); +assign Uatiw6 = (Bbtiw6 & Qariw6); +assign Bbtiw6 = (Ibtiw6 | Pbtiw6); +assign Natiw6 = (Wbtiw6 & Dctiw6); +assign Dctiw6 = (~(E9tiw6 & Kctiw6)); +assign Kctiw6 = (~(Rctiw6 & Yctiw6)); +assign Rctiw6 = (Fdtiw6 & Mdtiw6); +assign Fdtiw6 = (~(Tdtiw6 & Aetiw6)); +assign Wbtiw6 = (~(Hetiw6 & Oetiw6)); +assign Oetiw6 = (~(Vetiw6 & Cftiw6)); +assign Cftiw6 = (Jftiw6 & Qftiw6); +assign Jftiw6 = (Xftiw6 | Egtiw6); +assign Vetiw6 = (Lgtiw6 & Sgtiw6); +assign Sgtiw6 = (Zgtiw6 | Ghtiw6); +assign Z9tiw6 = (Nhtiw6 & Uhtiw6); +assign Uhtiw6 = (Bitiw6 & Iitiw6); +assign Iitiw6 = (~(Ijnnv6 & Kfkov6)); +assign Kfkov6 = (~(O3qiw6 ^ Fugdt6)); +assign O3qiw6 = (~(Pitiw6 & Dfqiw6)); +assign Dfqiw6 = (~(Cpqiw6 | R0hdt6)); +assign Cpqiw6 = (Sdpiw6 | V2hdt6); +assign Sdpiw6 = (Gepiw6 | Z4hdt6); +assign Pitiw6 = (~(Nygdt6 | Jwgdt6)); +assign Nhtiw6 = (Dfkov6 & Witiw6); +assign X8tiw6 = (Djtiw6 & I4a7z6); +assign J8tiw6 = (I4a7z6 | Kjtiw6); +assign Kjtiw6 = (~(Rsi8v6 | Rjtiw6)); +assign Rsi8v6 = (!Djtiw6); +assign C8tiw6 = (Yjtiw6 & F6tiw6); +assign F6tiw6 = (~(R5tiw6 & I4a7z6)); +assign I4a7z6 = (S9tiw6 ? Mktiw6 : Fktiw6); +assign Mktiw6 = (~(Tktiw6 & Altiw6)); +assign Altiw6 = (Hltiw6 & Oltiw6); +assign Oltiw6 = (Vltiw6 & Cmtiw6); +assign Vltiw6 = (~(Jmtiw6 & Qmtiw6)); +assign Qmtiw6 = (Xmtiw6 & Xftiw6); +assign Xmtiw6 = (Entiw6 & Lntiw6); +assign Jmtiw6 = (Hetiw6 & Qftiw6); +assign Hltiw6 = (Sntiw6 & Zntiw6); +assign Zntiw6 = (~(Gotiw6 & Notiw6)); +assign Gotiw6 = (Ibtiw6 & R4aov6); +assign Ibtiw6 = (~(Uotiw6 & Egtiw6)); +assign Sntiw6 = (~(Fktiw6 & Bptiw6)); +assign Bptiw6 = (~(Iptiw6 & Pptiw6)); +assign Pptiw6 = (~(Wptiw6 & Dqtiw6)); +assign Wptiw6 = (Zgtiw6 & Aetiw6); +assign Tktiw6 = (Kqtiw6 & Witiw6); +assign Witiw6 = (Rqtiw6 & Yqtiw6); +assign Rqtiw6 = (~(Frtiw6 & Mrtiw6)); +assign Mrtiw6 = (!Trtiw6); +assign Kqtiw6 = (Astiw6 & Hstiw6); +assign Hstiw6 = (~(Mpe7z6[5] & Y3bov6)); +assign Fktiw6 = (E9tiw6 | Ouriw6); +assign Ouriw6 = (Rjtiw6 & Ostiw6); +assign Ostiw6 = (S2tiw6 ^ E2tiw6); +assign R5tiw6 = (Djtiw6 & Vstiw6); +assign Djtiw6 = (S9tiw6 ? Jttiw6 : Cttiw6); +assign Jttiw6 = (Qttiw6 & Xttiw6); +assign Xttiw6 = (Eutiw6 & Lutiw6); +assign Lutiw6 = (Cttiw6 | Iptiw6); +assign Iptiw6 = (Yctiw6 & E4lhw6); +assign Yctiw6 = (Sutiw6 & Zutiw6); +assign Zutiw6 = (~(Gvtiw6 | Nvtiw6)); +assign Sutiw6 = (Uvtiw6 & Ol8iw6); +assign Eutiw6 = (Bwtiw6 & Z6jhw6); +assign Bwtiw6 = (~(Iwtiw6 & Zgtiw6)); +assign Iwtiw6 = (~(Qariw6 & Pwtiw6)); +assign Pwtiw6 = (Mdtiw6 | Cttiw6); +assign Qttiw6 = (Dfkov6 & Astiw6); +assign Astiw6 = (Wwtiw6 & Dxtiw6); +assign Wwtiw6 = (Kxtiw6 & Rxtiw6); +assign Rxtiw6 = (!Yxtiw6); +assign Cttiw6 = (~(E9tiw6 | Fytiw6)); +assign Fytiw6 = (Q1tiw6 & Mytiw6); +assign E9tiw6 = (Tytiw6 & Rjtiw6); +assign Yjtiw6 = (~(D3bov6 & S7f7z6[0])); +assign D3bov6 = (Aztiw6 & Hztiw6); +assign Hztiw6 = (~(Oztiw6 | Rjtiw6)); +assign Rjtiw6 = (Vztiw6 & C1tiw6); +assign Vztiw6 = (~(O0tiw6 | Q1tiw6)); +assign Aztiw6 = (~(Ol8iw6 | Mytiw6)); +assign Mytiw6 = (C0uiw6 & C1tiw6); +assign C0uiw6 = (J0uiw6 & E2tiw6); +assign J0uiw6 = (!O0tiw6); +assign O0tiw6 = (~(N3onv6 & Q0uiw6)); +assign Q0uiw6 = (~(X0uiw6 & E1uiw6)); +assign E1uiw6 = (L1uiw6 & S1uiw6); +assign L1uiw6 = (Z1uiw6 & G2uiw6); +assign X0uiw6 = (N2uiw6 & U2uiw6); +assign N2uiw6 = (Rdsiw6 & B3uiw6); +assign B3uiw6 = (~(K5onv6 & I3uiw6)); +assign I3uiw6 = (~(P3uiw6 & Q9siw6)); +assign Rdsiw6 = (W3uiw6 & D4uiw6); +assign D4uiw6 = (K4uiw6 & R4uiw6); +assign W3uiw6 = (Y4uiw6 & F5uiw6); +assign Fg38v6 = (~(M5uiw6 & T5uiw6)); +assign T5uiw6 = (~(Y3bov6 & Yxf7z6[2])); +assign M5uiw6 = (A6uiw6 & H6uiw6); +assign H6uiw6 = (~(Rj2ov6 & Jamdt6)); +assign A6uiw6 = (~(Yj2ov6 & Yxf7z6[6])); +assign Yf38v6 = (~(O6uiw6 & V6uiw6)); +assign V6uiw6 = (~(Y3bov6 & Yxf7z6[6])); +assign O6uiw6 = (C7uiw6 & J7uiw6); +assign J7uiw6 = (~(Rj2ov6 & X1mdt6)); +assign C7uiw6 = (~(Yj2ov6 & Yxf7z6[10])); +assign Rf38v6 = (~(Q7uiw6 & X7uiw6)); +assign X7uiw6 = (~(Y3bov6 & Yxf7z6[10])); +assign Q7uiw6 = (E8uiw6 & L8uiw6); +assign L8uiw6 = (~(Rj2ov6 & Ltldt6)); +assign E8uiw6 = (~(Yj2ov6 & Yxf7z6[14])); +assign Kf38v6 = (~(S8uiw6 & Z8uiw6)); +assign Z8uiw6 = (~(Y3bov6 & Yxf7z6[14])); +assign S8uiw6 = (G9uiw6 & N9uiw6); +assign N9uiw6 = (~(Rj2ov6 & Zkldt6)); +assign G9uiw6 = (~(Yj2ov6 & Yxf7z6[18])); +assign Df38v6 = (~(U9uiw6 & Bauiw6)); +assign Bauiw6 = (~(Y3bov6 & Yxf7z6[18])); +assign U9uiw6 = (Iauiw6 & Pauiw6); +assign Pauiw6 = (~(Rj2ov6 & Ncldt6)); +assign Iauiw6 = (~(Yj2ov6 & Yxf7z6[22])); +assign We38v6 = (~(Wauiw6 & Dbuiw6)); +assign Dbuiw6 = (~(Y3bov6 & Yxf7z6[22])); +assign Wauiw6 = (Kbuiw6 & Rbuiw6); +assign Rbuiw6 = (~(Rj2ov6 & B4ldt6)); +assign Kbuiw6 = (~(Yj2ov6 & Yxf7z6[26])); +assign Pe38v6 = (~(Ybuiw6 & Fcuiw6)); +assign Fcuiw6 = (~(Y3bov6 & Yxf7z6[26])); +assign Ybuiw6 = (Mcuiw6 & Tcuiw6); +assign Tcuiw6 = (~(Rj2ov6 & Pvkdt6)); +assign Mcuiw6 = (~(Yj2ov6 & Yxf7z6[30])); +assign Ie38v6 = (~(Aduiw6 & Hduiw6)); +assign Hduiw6 = (~(Yj2ov6 & Yxf7z6[34])); +assign Aduiw6 = (~(Y3bov6 & Yxf7z6[30])); +assign Be38v6 = (~(Oduiw6 & Vduiw6)); +assign Vduiw6 = (Wi2ov6 | Tmg7z6[32]); +assign Oduiw6 = (Ceuiw6 & Jeuiw6); +assign Jeuiw6 = (~(Rj2ov6 & Sgmdt6)); +assign Ceuiw6 = (~(Yj2ov6 & Yxf7z6[3])); +assign Ud38v6 = (~(Qeuiw6 & Xeuiw6)); +assign Xeuiw6 = (~(Y3bov6 & Yxf7z6[3])); +assign Qeuiw6 = (Efuiw6 & Lfuiw6); +assign Lfuiw6 = (~(Rj2ov6 & G8mdt6)); +assign Efuiw6 = (~(Yj2ov6 & Yxf7z6[7])); +assign Nd38v6 = (~(Sfuiw6 & Zfuiw6)); +assign Zfuiw6 = (~(Y3bov6 & Yxf7z6[7])); +assign Sfuiw6 = (Gguiw6 & Nguiw6); +assign Nguiw6 = (~(Rj2ov6 & Uzldt6)); +assign Gguiw6 = (~(Yj2ov6 & Yxf7z6[11])); +assign Gd38v6 = (~(Uguiw6 & Bhuiw6)); +assign Bhuiw6 = (~(Y3bov6 & Yxf7z6[11])); +assign Uguiw6 = (Ihuiw6 & Phuiw6); +assign Phuiw6 = (~(Rj2ov6 & Irldt6)); +assign Ihuiw6 = (~(Yj2ov6 & Yxf7z6[15])); +assign Zc38v6 = (~(Whuiw6 & Diuiw6)); +assign Diuiw6 = (~(Y3bov6 & Yxf7z6[15])); +assign Whuiw6 = (Kiuiw6 & Riuiw6); +assign Riuiw6 = (~(Rj2ov6 & Wildt6)); +assign Kiuiw6 = (~(Yj2ov6 & Yxf7z6[19])); +assign Sc38v6 = (~(Yiuiw6 & Fjuiw6)); +assign Fjuiw6 = (~(Y3bov6 & Yxf7z6[19])); +assign Yiuiw6 = (Mjuiw6 & Tjuiw6); +assign Tjuiw6 = (~(Rj2ov6 & Kaldt6)); +assign Mjuiw6 = (~(Yj2ov6 & Yxf7z6[23])); +assign Lc38v6 = (~(Akuiw6 & Hkuiw6)); +assign Hkuiw6 = (~(Y3bov6 & Yxf7z6[23])); +assign Akuiw6 = (Okuiw6 & Vkuiw6); +assign Vkuiw6 = (~(Rj2ov6 & Y1ldt6)); +assign Okuiw6 = (~(Yj2ov6 & Yxf7z6[27])); +assign Ec38v6 = (~(Cluiw6 & Jluiw6)); +assign Jluiw6 = (Rgpiw6 | Sbriw6); +assign Rgpiw6 = (~(Qluiw6 & Xluiw6)); +assign Xluiw6 = (Uqd7z6[21] & Owpiw6); +assign Qluiw6 = (Hwpiw6 & Uqd7z6[20]); +assign Cluiw6 = (~(Dte7z6[12] & M8riw6)); +assign Xb38v6 = (~(Emuiw6 & Lmuiw6)); +assign Lmuiw6 = (Sbriw6 | Smuiw6); +assign Emuiw6 = (~(Dte7z6[11] & M8riw6)); +assign Qb38v6 = (~(Zmuiw6 & Gnuiw6)); +assign Gnuiw6 = (~(Ucriw6 & Nnuiw6)); +assign Nnuiw6 = (~(Unuiw6 & Bouiw6)); +assign Unuiw6 = (C3riw6 & A7onv6); +assign Zmuiw6 = (~(Dte7z6[10] & M8riw6)); +assign Jb38v6 = (~(Iouiw6 & Pouiw6)); +assign Pouiw6 = (~(Dte7z6[9] & M8riw6)); +assign Iouiw6 = (~(Ucriw6 & Wouiw6)); +assign Wouiw6 = (~(Dpuiw6 & Kpuiw6)); +assign Kpuiw6 = (Rpuiw6 & Ypuiw6); +assign Ypuiw6 = (L4riw6 & Fquiw6); +assign Rpuiw6 = (Mquiw6 & M6onv6); +assign Dpuiw6 = (Tquiw6 & Aruiw6); +assign Tquiw6 = (L9onv6 & Bouiw6); +assign Cb38v6 = (~(Hruiw6 & Oruiw6)); +assign Oruiw6 = (~(Ucriw6 & Vruiw6)); +assign Vruiw6 = (~(Csuiw6 & Jsuiw6)); +assign Jsuiw6 = (Qsuiw6 & Xsuiw6); +assign Xsuiw6 = (~(Etuiw6 & Zec7z6[5])); +assign Qsuiw6 = (Ltuiw6 & Stuiw6); +assign Csuiw6 = (Ztuiw6 & Guuiw6); +assign Ztuiw6 = (Nuuiw6 & Uuuiw6); +assign Uuuiw6 = (~(Bvuiw6 & Nbfhw6)); +assign Nuuiw6 = (~(Uqd7z6[21] & Owpiw6)); +assign Hruiw6 = (~(Dte7z6[7] & M8riw6)); +assign Va38v6 = (~(Ivuiw6 & Pvuiw6)); +assign Pvuiw6 = (~(Ucriw6 & Wvuiw6)); +assign Wvuiw6 = (~(Dwuiw6 & Kwuiw6)); +assign Kwuiw6 = (Rwuiw6 & Ywuiw6); +assign Ywuiw6 = (~(Fxuiw6 & V0nhw6)); +assign Fxuiw6 = (Nbfhw6 & Mxuiw6); +assign Rwuiw6 = (Txuiw6 & Ayuiw6); +assign Txuiw6 = (~(Hyuiw6 & Oyuiw6)); +assign Dwuiw6 = (Vyuiw6 & Guuiw6); +assign Guuiw6 = (Czuiw6 & Jzuiw6); +assign Jzuiw6 = (~(Bvuiw6 & Qzuiw6)); +assign Czuiw6 = (Xzuiw6 & T6onv6); +assign Vyuiw6 = (E0viw6 & L0viw6); +assign L0viw6 = (~(Bvuiw6 & E3fhw6)); +assign E0viw6 = (~(Uqd7z6[20] & Owpiw6)); +assign Ivuiw6 = (~(Dte7z6[6] & M8riw6)); +assign Oa38v6 = (~(S0viw6 & Z0viw6)); +assign Z0viw6 = (~(G1viw6 & Fmriw6)); +assign Fmriw6 = (~(L4riw6 | N1viw6)); +assign G1viw6 = (~(Sbriw6 | H2riw6)); +assign S0viw6 = (~(Dte7z6[5] & M8riw6)); +assign Ha38v6 = (~(U1viw6 & B2viw6)); +assign B2viw6 = (~(Ucriw6 & J9siw6)); +assign U1viw6 = (~(Dte7z6[4] & M8riw6)); +assign Aa38v6 = (~(I2viw6 & P2viw6)); +assign P2viw6 = (~(Dte7z6[3] & M8riw6)); +assign T938v6 = (~(W2viw6 & D3viw6)); +assign D3viw6 = (Sbriw6 | K3viw6); +assign Sbriw6 = (!Ucriw6); +assign W2viw6 = (~(Dte7z6[2] & M8riw6)); +assign M938v6 = (~(R3viw6 & Y3viw6)); +assign Y3viw6 = (~(Ucriw6 & F4viw6)); +assign F4viw6 = (~(M4viw6 & T4viw6)); +assign T4viw6 = (A5viw6 & H5viw6); +assign H5viw6 = (O5viw6 & V5viw6); +assign V5viw6 = (Xhriw6 & C6viw6); +assign O5viw6 = (~(J6viw6 | Q6viw6)); +assign A5viw6 = (X6viw6 & E7viw6); +assign E7viw6 = (L7viw6 & X9fhw6); +assign X6viw6 = (S7viw6 & Z7viw6); +assign M4viw6 = (G8viw6 & N8viw6); +assign N8viw6 = (U8viw6 & B9viw6); +assign B9viw6 = (I9viw6 & P9viw6); +assign I9viw6 = (~(W9viw6 & Daviw6)); +assign W9viw6 = (Kaviw6 & Qtnov6); +assign U8viw6 = (Raviw6 & Yaviw6); +assign Yaviw6 = (W5siw6 | Gginv6); +assign Raviw6 = (~(Zafhw6 & V1fhw6)); +assign G8viw6 = (Fbviw6 & Mbviw6); +assign Mbviw6 = (Tbviw6 & Acviw6); +assign Acviw6 = (Hcviw6 | Xeinv6); +assign Fbviw6 = (Zpsov6 & Ocviw6); +assign Zpsov6 = (Vcviw6 & Cdviw6); +assign Cdviw6 = (W5siw6 | Jdviw6); +assign Ucriw6 = (~(M8riw6 | Vs9ov6)); +assign R3viw6 = (~(Dte7z6[1] & M8riw6)); +assign F938v6 = (~(Qdviw6 & Xdviw6)); +assign Xdviw6 = (~(Xwe7z6[1] & M8riw6)); +assign Qdviw6 = (Eeviw6 & Leviw6); +assign Leviw6 = (~(Seviw6 & Gifhw6)); +assign Gifhw6 = (~(Zeviw6 & Gfviw6)); +assign Gfviw6 = (Nfviw6 | Bat8v6); +assign Zeviw6 = (Ufviw6 & Bgviw6); +assign Bgviw6 = (~(Uqd7z6[17] & Igviw6)); +assign Ufviw6 = (~(Zec7z6[25] & Pgviw6)); +assign Eeviw6 = (~(R7riw6 & Oac7z6[1])); +assign Y838v6 = (~(Wgviw6 & Dhviw6)); +assign Dhviw6 = (~(Xwe7z6[2] & M8riw6)); +assign Wgviw6 = (Khviw6 & Rhviw6); +assign Rhviw6 = (~(Seviw6 & Zhfhw6)); +assign Zhfhw6 = (~(Yhviw6 & Fiviw6)); +assign Fiviw6 = (~(Zec7z6[26] & Pgviw6)); +assign Yhviw6 = (Miviw6 & Tiviw6); +assign Tiviw6 = (~(Uqd7z6[18] & Igviw6)); +assign Miviw6 = (Adohw6 | Nfviw6); +assign Khviw6 = (~(R7riw6 & Oac7z6[2])); +assign R838v6 = (~(Ajviw6 & Hjviw6)); +assign Hjviw6 = (~(Xwe7z6[3] & M8riw6)); +assign Ajviw6 = (Ojviw6 & Vjviw6); +assign Vjviw6 = (~(Seviw6 & Shfhw6)); +assign Shfhw6 = (~(Ckviw6 & Jkviw6)); +assign Jkviw6 = (~(Zec7z6[27] & Pgviw6)); +assign Ckviw6 = (Qkviw6 & Xkviw6); +assign Xkviw6 = (~(Uqd7z6[19] & Igviw6)); +assign Qkviw6 = (Elviw6 | Nfviw6); +assign Ojviw6 = (~(R7riw6 & Oac7z6[3])); +assign K838v6 = (~(Llviw6 & Slviw6)); +assign Slviw6 = (~(Xwe7z6[0] & M8riw6)); +assign Llviw6 = (Zlviw6 & Gmviw6); +assign Gmviw6 = (~(Seviw6 & Nifhw6)); +assign Nifhw6 = (~(Nmviw6 & Umviw6)); +assign Umviw6 = (Nfviw6 | Kfa7z6); +assign Nfviw6 = (Bnviw6 & Inviw6); +assign Nmviw6 = (Pnviw6 & Wnviw6); +assign Wnviw6 = (~(Ovbdt6 & Igviw6)); +assign Pnviw6 = (~(Zec7z6[24] & Pgviw6)); +assign Seviw6 = (~(M8riw6 | Xariw6)); +assign Zlviw6 = (~(R7riw6 & Oac7z6[0])); +assign R7riw6 = (W6riw6 & Xariw6); +assign W6riw6 = (!M8riw6); +assign M8riw6 = (~(Hmtov6 & Doviw6)); +assign Doviw6 = (~(Koviw6 & Roviw6)); +assign Roviw6 = (Tytiw6 & Yoviw6); +assign Yoviw6 = (~(Q1tiw6 | C1tiw6)); +assign C1tiw6 = (N3onv6 & Fpviw6); +assign Fpviw6 = (~(Mpviw6 & Tpviw6)); +assign Tpviw6 = (Aqviw6 & Hqviw6); +assign Hqviw6 = (~(M0fhw6 | Oqviw6)); +assign Aqviw6 = (Vqviw6 & R4uiw6); +assign R4uiw6 = (Nqehw6 | Ubsiw6); +assign Vqviw6 = (~(Crviw6 & Jrviw6)); +assign Jrviw6 = (!Kssov6); +assign Mpviw6 = (Qrviw6 & Xrviw6); +assign Qrviw6 = (F5uiw6 & Esviw6); +assign F5uiw6 = (Lsviw6 & Ssviw6); +assign Q1tiw6 = (N3onv6 & Zsviw6); +assign Zsviw6 = (~(Gtviw6 & Ntviw6)); +assign Ntviw6 = (Utviw6 & Buviw6); +assign Utviw6 = (C3riw6 & Iuviw6); +assign Iuviw6 = (~(Puviw6 & K5onv6)); +assign Puviw6 = (~(P3uiw6 & Sasiw6)); +assign Sasiw6 = (Wuviw6 & Dvviw6); +assign Dvviw6 = (~(Bvuiw6 | Kvviw6)); +assign Wuviw6 = (Rvviw6 & Yvviw6); +assign P3uiw6 = (Fwviw6 & Mwviw6); +assign Mwviw6 = (Twviw6 & Kaphw6); +assign Kaphw6 = (!Prehw6); +assign Prehw6 = (~(T6onv6 | Axviw6)); +assign Axviw6 = (~(Nbfhw6 | Hxviw6)); +assign Twviw6 = (~(Oxviw6 & Tmsov6)); +assign Oxviw6 = (~(M0fhw6 | K0riw6)); +assign M0fhw6 = (Vxviw6 & Tmsov6); +assign Tmsov6 = (!Hffhw6); +assign Vxviw6 = (Kssov6 & Rktov6); +assign Fwviw6 = (Vffhw6 & Cyviw6); +assign Cyviw6 = (~(U4siw6 & Ansov6)); +assign Vffhw6 = (Jyviw6 & Qyviw6); +assign Qyviw6 = (Zasiw6 & L7viw6); +assign Jyviw6 = (Xyviw6 & S7viw6); +assign Xyviw6 = (~(Ezviw6 & Lzviw6)); +assign Ezviw6 = (A2riw6 & K0riw6); +assign Gtviw6 = (Szviw6 & Y4uiw6); +assign Y4uiw6 = (Zzviw6 & G0wiw6); +assign G0wiw6 = (N0wiw6 & X9fhw6); +assign N0wiw6 = (~(V8fhw6 | Oqviw6)); +assign Zzviw6 = (U0wiw6 & Aruiw6); +assign Aruiw6 = (B1wiw6 & Q9fhw6); +assign B1wiw6 = (I1wiw6 & Amtov6); +assign U0wiw6 = (~(P1wiw6 | Mtehw6)); +assign Szviw6 = (W1wiw6 & D2wiw6); +assign Tytiw6 = (E2tiw6 & S2tiw6); +assign S2tiw6 = (~(N3onv6 & K2wiw6)); +assign K2wiw6 = (~(R2wiw6 & Y2wiw6)); +assign Y2wiw6 = (F3wiw6 & M3wiw6); +assign M3wiw6 = (T3wiw6 & Epsov6); +assign T3wiw6 = (A4wiw6 & H4wiw6); +assign F3wiw6 = (Lsviw6 & O4wiw6); +assign O4wiw6 = (~(Crviw6 & V4wiw6)); +assign Crviw6 = (C5wiw6 & J5wiw6); +assign J5wiw6 = (~(Q5wiw6 | Ansov6)); +assign C5wiw6 = (U4siw6 & Z1uiw6); +assign Lsviw6 = (X5wiw6 & E6wiw6); +assign X5wiw6 = (~(L6wiw6 & S6wiw6)); +assign R2wiw6 = (Z6wiw6 & G7wiw6); +assign G7wiw6 = (N7wiw6 & Esviw6); +assign Esviw6 = (U7wiw6 & B8wiw6); +assign B8wiw6 = (~(P1wiw6 | Zbsov6)); +assign P1wiw6 = (I8wiw6 & Uqd7z6[20]); +assign I8wiw6 = (X8onv6 & P8wiw6); +assign U7wiw6 = (D2wiw6 & W8wiw6); +assign W8wiw6 = (~(D9wiw6 & K5onv6)); +assign D2wiw6 = (K9wiw6 & Ycnov6); +assign Ycnov6 = (~(Jhsov6 & Zec7z6[1])); +assign K9wiw6 = (~(R9wiw6 & Hftov6)); +assign N7wiw6 = (Y9wiw6 & Fawiw6); +assign Fawiw6 = (~(Mawiw6 & Tawiw6)); +assign Mawiw6 = (Abwiw6 | Hbwiw6); +assign Hbwiw6 = (Obwiw6 & Hxviw6); +assign Y9wiw6 = (Uqehw6 | Mmriw6); +assign Uqehw6 = (Rvviw6 & Xosov6); +assign Rvviw6 = (~(V0nhw6 & Nbfhw6)); +assign Z6wiw6 = (Ocviw6 & U2uiw6); +assign U2uiw6 = (Vbwiw6 & Ccwiw6); +assign Ccwiw6 = (~(K5onv6 & Jcwiw6)); +assign Jcwiw6 = (~(Qcwiw6 & Yvviw6)); +assign Yvviw6 = (Xcwiw6 | Dsehw6); +assign Vbwiw6 = (~(U4siw6 & Kssov6)); +assign Ocviw6 = (Edwiw6 & Ldwiw6); +assign Edwiw6 = (~(Sdwiw6 & E3fhw6)); +assign Sdwiw6 = (Zdwiw6 & Tawiw6); +assign E2tiw6 = (~(N3onv6 & Gewiw6)); +assign Gewiw6 = (~(Newiw6 & Uewiw6)); +assign Uewiw6 = (Bfwiw6 & Ifwiw6); +assign Ifwiw6 = (Pfwiw6 & P9viw6); +assign P9viw6 = (~(Wfwiw6 & Rktov6)); +assign Pfwiw6 = (Z7viw6 & H4wiw6); +assign Z7viw6 = (Dgwiw6 | K0riw6); +assign Bfwiw6 = (Kgwiw6 & Rgwiw6); +assign Rgwiw6 = (~(R9wiw6 & S3siw6)); +assign S3siw6 = (!Hftov6); +assign Kgwiw6 = (E6wiw6 & V4wiw6); +assign V4wiw6 = (~(Ygwiw6 & Fhwiw6)); +assign Fhwiw6 = (Ijtov6 & Kktov6); +assign E6wiw6 = (Q1ghw6 | Mhwiw6); +assign Newiw6 = (Thwiw6 & Aiwiw6); +assign Aiwiw6 = (Hiwiw6 & Oiwiw6); +assign Oiwiw6 = (~(Tawiw6 & Viwiw6)); +assign Hiwiw6 = (Ssviw6 & Z1uiw6); +assign Z1uiw6 = (~(Cjwiw6 & Jjwiw6)); +assign Jjwiw6 = (Ovbdt6 & Fjohw6); +assign Cjwiw6 = (U4siw6 & Qjwiw6); +assign Ssviw6 = (~(Xjwiw6 & L6wiw6)); +assign Thwiw6 = (W1wiw6 & Ekwiw6); +assign W1wiw6 = (Lkwiw6 & Skwiw6); +assign Skwiw6 = (Zkwiw6 & S1uiw6); +assign S1uiw6 = (Mmriw6 | Nbsiw6); +assign Nbsiw6 = (Glwiw6 & Wrehw6); +assign Wrehw6 = (Nlwiw6 | E9onv6); +assign Glwiw6 = (Xcwiw6 | Uqd7z6[21]); +assign Xcwiw6 = (Nlwiw6 | Uqd7z6[20]); +assign Nlwiw6 = (~(Ulwiw6 & Bmwiw6)); +assign Ulwiw6 = (Zec7z6[4] & Zpehw6); +assign Zkwiw6 = (~(Imwiw6 & K5onv6)); +assign Imwiw6 = (~(Pmwiw6 & Wmwiw6)); +assign Wmwiw6 = (Xosov6 & Q9siw6); +assign Q9siw6 = (!D9wiw6); +assign D9wiw6 = (Dnwiw6 & Knwiw6); +assign Knwiw6 = (Rnwiw6 & Zec7z6[4]); +assign Rnwiw6 = (E9onv6 & Dsehw6); +assign Dnwiw6 = (Bmwiw6 & Zec7z6[5]); +assign Xosov6 = (!Etuiw6); +assign Etuiw6 = (Ynwiw6 & V0nhw6); +assign Ynwiw6 = (Fowiw6 & Fcinv6); +assign Fowiw6 = (~(Hwpiw6 & Zec7z6[5])); +assign Pmwiw6 = (Qcwiw6 & O0nhw6); +assign O0nhw6 = (~(Mowiw6 & V0nhw6)); +assign Mowiw6 = (Qzuiw6 & Xeinv6); +assign Qcwiw6 = (Zasiw6 | Xeinv6); +assign Zasiw6 = (~(Towiw6 & Mynhw6)); +assign Towiw6 = (Nbfhw6 & Qtnov6); +assign Lkwiw6 = (Xrviw6 & K4uiw6); +assign Xrviw6 = (~(Apwiw6 | Q5wiw6)); +assign Q5wiw6 = (Zhtov6 & R9wiw6); +assign R9wiw6 = (Ygwiw6 & Hpwiw6); +assign Hpwiw6 = (Gitov6 & Kktov6); +assign Ygwiw6 = (U4siw6 & Uqd7z6[20]); +assign U4siw6 = (~(Onlhw6 | Mmriw6)); +assign Mmriw6 = (!K5onv6); +assign K5onv6 = (~(Opwiw6 & Zec7z6[25])); +assign Opwiw6 = (Ubsiw6 & Vpwiw6); +assign Vpwiw6 = (~(Tawiw6 & Cqwiw6)); +assign Cqwiw6 = (~(Jqwiw6 & Qqwiw6)); +assign Qqwiw6 = (~(Hxviw6 & Xqwiw6)); +assign Jqwiw6 = (~(Abwiw6 | Erwiw6)); +assign Tawiw6 = (!Wrsov6); +assign Zhtov6 = (Uqd7z6[17] & Ovbdt6); +assign Apwiw6 = (Jhsov6 & Zec7z6[0]); +assign Jhsov6 = (Lrwiw6 & Srwiw6); +assign Srwiw6 = (Zrwiw6 & Zec7z6[5]); +assign Lrwiw6 = (Ttehw6 & Cvehw6); +assign Koviw6 = (Gswiw6 & Xhlhw6); +assign Gswiw6 = (Nswiw6 & I2viw6); +assign I2viw6 = (~(N3onv6 & Uswiw6)); +assign Uswiw6 = (~(Btwiw6 & Itwiw6)); +assign Itwiw6 = (Ptwiw6 & L7viw6); +assign L7viw6 = (~(Wtwiw6 & K0riw6)); +assign Wtwiw6 = (!Dgwiw6); +assign Dgwiw6 = (~(Duwiw6 & Qzuiw6)); +assign Duwiw6 = (Owpiw6 & Zdwiw6); +assign Ptwiw6 = (X9fhw6 & Xhriw6); +assign Btwiw6 = (K3viw6 & S7viw6); +assign S7viw6 = (~(Wfwiw6 & K0riw6)); +assign Wfwiw6 = (Kuwiw6 & A2riw6); +assign Kuwiw6 = (Qzuiw6 & Zdwiw6); +assign K3viw6 = (Ruwiw6 & Yuwiw6); +assign Yuwiw6 = (Fvwiw6 & Mvwiw6); +assign Mvwiw6 = (Tvwiw6 & S9nhw6); +assign Tvwiw6 = (B5siw6 & Wkriw6); +assign Fvwiw6 = (V2riw6 & Ddsiw6); +assign Ruwiw6 = (Awwiw6 & Hwwiw6); +assign Hwwiw6 = (Wdriw6 & Wcsiw6); +assign Awwiw6 = (Liriw6 & Gbsiw6); +assign Gbsiw6 = (~(Dlriw6 | Owwiw6)); +assign Owwiw6 = (Vwwiw6 & Kaviw6); +assign Kaviw6 = (!Prsov6); +assign Vwwiw6 = (Cxwiw6 & Qtnov6); +assign Cxwiw6 = (Daviw6 | Abwiw6); +assign Abwiw6 = (Zdwiw6 & Hxviw6); +assign Daviw6 = (E3fhw6 & Zec7z6[7]); +assign Dlriw6 = (~(Jxwiw6 & Qxwiw6)); +assign Qxwiw6 = (Xxwiw6 & Zbriw6); +assign Zbriw6 = (W9phw6 & Eywiw6); +assign Eywiw6 = (~(Lywiw6 & A2riw6)); +assign Lywiw6 = (Sywiw6 & Nbfhw6); +assign W9phw6 = (~(Zywiw6 & Sywiw6)); +assign Zywiw6 = (Owpiw6 & Nbfhw6); +assign Xxwiw6 = (~(Gzwiw6 | Mbphw6)); +assign Mbphw6 = (Nzwiw6 & Hxviw6); +assign Gzwiw6 = (Uzwiw6 & A2riw6); +assign Uzwiw6 = (B0xiw6 & Hxviw6); +assign Jxwiw6 = (Pdriw6 & Tbviw6); +assign Tbviw6 = (Tbphw6 & I0xiw6); +assign I0xiw6 = (~(A2riw6 & Erwiw6)); +assign Tbphw6 = (P0xiw6 & Deriw6); +assign Deriw6 = (~(Nzwiw6 & Qzuiw6)); +assign P0xiw6 = (~(Erwiw6 & Owpiw6)); +assign Pdriw6 = (W0xiw6 & D1xiw6); +assign D1xiw6 = (~(K1xiw6 & A2riw6)); +assign K1xiw6 = (Nbfhw6 & B0xiw6); +assign W0xiw6 = (~(Fbphw6 | J6viw6)); +assign J6viw6 = (R1xiw6 & A2riw6); +assign A2riw6 = (!L4riw6); +assign R1xiw6 = (Qzuiw6 & B0xiw6); +assign Fbphw6 = (Nzwiw6 & Nbfhw6); +assign Nzwiw6 = (~(D0riw6 | Y1xiw6)); +assign Nswiw6 = (~(J9siw6 & N3onv6)); +assign J9siw6 = (~(D0riw6 | N1viw6)); +assign N1viw6 = (F2xiw6 & M2xiw6); +assign F2xiw6 = (!Viwiw6); +assign Viwiw6 = (~(T2xiw6 & A3xiw6)); +assign A3xiw6 = (~(H3xiw6 & Zdwiw6)); +assign H3xiw6 = (Nbfhw6 & Rktov6); +assign T2xiw6 = (~(Obwiw6 & Hxviw6)); +assign Hmtov6 = (!Dcnov6); +assign D838v6 = (Sidiw6 ? U6i7z6[0] : O3xiw6); +assign O3xiw6 = (Vxihw6 & V3xiw6); +assign V3xiw6 = (~(C4xiw6 & J4xiw6)); +assign J4xiw6 = (~(Q4xiw6 & Ecc7z6[11])); +assign Q4xiw6 = (Mwphw6 & Cwlnv6); +assign C4xiw6 = (~(X4xiw6 & E5xiw6)); +assign E5xiw6 = (~(L5xiw6 & S5xiw6)); +assign S5xiw6 = (~(Z5xiw6 & G6xiw6)); +assign Z5xiw6 = (~(N6xiw6 | Ecc7z6[10])); +assign W738v6 = (~(U6xiw6 & B7xiw6)); +assign B7xiw6 = (I7xiw6 & P7xiw6); +assign P7xiw6 = (~(Td2ov6 & W7xiw6)); +assign I7xiw6 = (D8xiw6 & K8xiw6); +assign K8xiw6 = (C12ov6 | Utjnv6); +assign Utjnv6 = (R8xiw6 & Y8xiw6); +assign Y8xiw6 = (F9xiw6 & M9xiw6); +assign M9xiw6 = (T9xiw6 & Aaxiw6); +assign Aaxiw6 = (Haxiw6 & Oaxiw6); +assign Oaxiw6 = (~(vis_psp_o[26] & N32ov6)); +assign Haxiw6 = (~(U32ov6 & Pic7z6[26])); +assign T9xiw6 = (Vaxiw6 & Cbxiw6); +assign Cbxiw6 = (~(vis_msp_o[26] & P42ov6)); +assign Vaxiw6 = (~(vis_r12_o[26] & W42ov6)); +assign F9xiw6 = (Jbxiw6 & Qbxiw6); +assign Qbxiw6 = (Xbxiw6 & Ecxiw6); +assign Ecxiw6 = (~(vis_r11_o[26] & F62ov6)); +assign Xbxiw6 = (~(vis_r10_o[26] & M62ov6)); +assign Jbxiw6 = (Lcxiw6 & Scxiw6); +assign Scxiw6 = (~(vis_r9_o[26] & H72ov6)); +assign Lcxiw6 = (~(vis_r8_o[26] & O72ov6)); +assign R8xiw6 = (Zcxiw6 & Gdxiw6); +assign Gdxiw6 = (Ndxiw6 & Udxiw6); +assign Udxiw6 = (Bexiw6 & Iexiw6); +assign Iexiw6 = (~(vis_r7_o[26] & L92ov6)); +assign Bexiw6 = (~(vis_r6_o[26] & S92ov6)); +assign Ndxiw6 = (Pexiw6 & Wexiw6); +assign Wexiw6 = (~(vis_r5_o[26] & Na2ov6)); +assign Pexiw6 = (~(vis_r4_o[26] & Ua2ov6)); +assign Zcxiw6 = (Dfxiw6 & Kfxiw6); +assign Kfxiw6 = (Rfxiw6 & Yfxiw6); +assign Yfxiw6 = (~(vis_r3_o[26] & Dc2ov6)); +assign Rfxiw6 = (~(vis_r2_o[26] & Kc2ov6)); +assign Dfxiw6 = (Fgxiw6 & Mgxiw6); +assign Mgxiw6 = (~(vis_r1_o[26] & Fd2ov6)); +assign Fgxiw6 = (~(vis_r0_o[26] & Md2ov6)); +assign D8xiw6 = (~(H02ov6 & Qw97z6)); +assign U6xiw6 = (Tgxiw6 & Ahxiw6); +assign Ahxiw6 = (~(Ve2ov6 & vis_pc_o[26])); +assign Tgxiw6 = (~(Fhc7z6[26] & Cf2ov6)); +assign P738v6 = (~(Hhxiw6 & Ohxiw6)); +assign Ohxiw6 = (Vhxiw6 & Cixiw6); +assign Cixiw6 = (~(H02ov6 & Yw97z6)); +assign Vhxiw6 = (Jixiw6 & Qixiw6); +assign Qixiw6 = (C12ov6 | W8knv6); +assign W8knv6 = (Xixiw6 & Ejxiw6); +assign Ejxiw6 = (Ljxiw6 & Sjxiw6); +assign Sjxiw6 = (Zjxiw6 & Gkxiw6); +assign Gkxiw6 = (Nkxiw6 & Ukxiw6); +assign Ukxiw6 = (~(vis_psp_o[18] & N32ov6)); +assign Nkxiw6 = (~(U32ov6 & Pic7z6[18])); +assign Zjxiw6 = (Blxiw6 & Ilxiw6); +assign Ilxiw6 = (~(vis_msp_o[18] & P42ov6)); +assign Blxiw6 = (~(vis_r12_o[18] & W42ov6)); +assign Ljxiw6 = (Plxiw6 & Wlxiw6); +assign Wlxiw6 = (Dmxiw6 & Kmxiw6); +assign Kmxiw6 = (~(vis_r11_o[18] & F62ov6)); +assign Dmxiw6 = (~(vis_r10_o[18] & M62ov6)); +assign Plxiw6 = (Rmxiw6 & Ymxiw6); +assign Ymxiw6 = (~(vis_r9_o[18] & H72ov6)); +assign Rmxiw6 = (~(vis_r8_o[18] & O72ov6)); +assign Xixiw6 = (Fnxiw6 & Mnxiw6); +assign Mnxiw6 = (Tnxiw6 & Aoxiw6); +assign Aoxiw6 = (Hoxiw6 & Ooxiw6); +assign Ooxiw6 = (~(vis_r7_o[18] & L92ov6)); +assign Hoxiw6 = (~(vis_r6_o[18] & S92ov6)); +assign Tnxiw6 = (Voxiw6 & Cpxiw6); +assign Cpxiw6 = (~(vis_r5_o[18] & Na2ov6)); +assign Voxiw6 = (~(vis_r4_o[18] & Ua2ov6)); +assign Fnxiw6 = (Jpxiw6 & Qpxiw6); +assign Qpxiw6 = (Xpxiw6 & Eqxiw6); +assign Eqxiw6 = (~(vis_r3_o[18] & Dc2ov6)); +assign Xpxiw6 = (~(vis_r2_o[18] & Kc2ov6)); +assign Jpxiw6 = (Lqxiw6 & Sqxiw6); +assign Sqxiw6 = (~(vis_r1_o[18] & Fd2ov6)); +assign Lqxiw6 = (~(vis_r0_o[18] & Md2ov6)); +assign Jixiw6 = (~(Td2ov6 & Zqxiw6)); +assign Hhxiw6 = (Grxiw6 & Nrxiw6); +assign Nrxiw6 = (~(Ve2ov6 & vis_pc_o[18])); +assign Grxiw6 = (~(Fhc7z6[18] & Cf2ov6)); +assign I738v6 = (~(Urxiw6 & Bsxiw6)); +assign Bsxiw6 = (Isxiw6 & Psxiw6); +assign Psxiw6 = (~(H02ov6 & Gx97z6)); +assign Isxiw6 = (Wsxiw6 & Dtxiw6); +assign Dtxiw6 = (~(Ktxiw6 & Imknv6)); +assign Imknv6 = (~(Rtxiw6 & Ytxiw6)); +assign Ytxiw6 = (Fuxiw6 & Muxiw6); +assign Muxiw6 = (Tuxiw6 & Avxiw6); +assign Avxiw6 = (Hvxiw6 & Ovxiw6); +assign Ovxiw6 = (~(vis_psp_o[10] & N32ov6)); +assign Hvxiw6 = (~(U32ov6 & Pic7z6[10])); +assign Tuxiw6 = (Vvxiw6 & Cwxiw6); +assign Cwxiw6 = (~(vis_msp_o[10] & P42ov6)); +assign Vvxiw6 = (~(vis_r12_o[10] & W42ov6)); +assign Fuxiw6 = (Jwxiw6 & Qwxiw6); +assign Qwxiw6 = (Xwxiw6 & Exxiw6); +assign Exxiw6 = (~(vis_r11_o[10] & F62ov6)); +assign Xwxiw6 = (~(vis_r10_o[10] & M62ov6)); +assign Jwxiw6 = (Lxxiw6 & Sxxiw6); +assign Sxxiw6 = (~(vis_r9_o[10] & H72ov6)); +assign Lxxiw6 = (~(vis_r8_o[10] & O72ov6)); +assign Rtxiw6 = (Zxxiw6 & Gyxiw6); +assign Gyxiw6 = (Nyxiw6 & Uyxiw6); +assign Uyxiw6 = (Bzxiw6 & Izxiw6); +assign Izxiw6 = (~(vis_r7_o[10] & L92ov6)); +assign Bzxiw6 = (~(vis_r6_o[10] & S92ov6)); +assign Nyxiw6 = (Pzxiw6 & Wzxiw6); +assign Wzxiw6 = (~(vis_r5_o[10] & Na2ov6)); +assign Pzxiw6 = (~(vis_r4_o[10] & Ua2ov6)); +assign Zxxiw6 = (D0yiw6 & K0yiw6); +assign K0yiw6 = (R0yiw6 & Y0yiw6); +assign Y0yiw6 = (~(vis_r3_o[10] & Dc2ov6)); +assign R0yiw6 = (~(vis_r2_o[10] & Kc2ov6)); +assign D0yiw6 = (F1yiw6 & M1yiw6); +assign M1yiw6 = (~(vis_r1_o[10] & Fd2ov6)); +assign F1yiw6 = (~(vis_r0_o[10] & Md2ov6)); +assign Wsxiw6 = (~(Td2ov6 & T1yiw6)); +assign Urxiw6 = (A2yiw6 & H2yiw6); +assign H2yiw6 = (~(Ve2ov6 & vis_pc_o[10])); +assign A2yiw6 = (~(Fhc7z6[10] & Cf2ov6)); +assign B738v6 = (~(O2yiw6 & V2yiw6)); +assign V2yiw6 = (~(Eji7z6[2] & C3yiw6)); +assign O2yiw6 = (J3yiw6 & Q3yiw6); +assign Q3yiw6 = (~(Bhi7z6[2] & X3yiw6)); +assign J3yiw6 = (~(E4yiw6 & vis_pc_o[2])); +assign U638v6 = (~(L4yiw6 & S4yiw6)); +assign S4yiw6 = (Z4yiw6 & G5yiw6); +assign G5yiw6 = (Eu9ov6 | N5yiw6); +assign Z4yiw6 = (U5yiw6 & B6yiw6); +assign B6yiw6 = (~(Gv9ov6 & Bskov6)); +assign U5yiw6 = (~(Uv9ov6 & As97z6)); +assign L4yiw6 = (I6yiw6 & P6yiw6); +assign P6yiw6 = (~(Pw9ov6 & Kxb7z6[2])); +assign I6yiw6 = (W6yiw6 & D7yiw6); +assign D7yiw6 = (~(Kx9ov6 & vis_pc_o[2])); +assign W6yiw6 = (~(Gli7z6[2] & Rx9ov6)); +assign N638v6 = (K7yiw6 ? vis_psp_o[2] : Bskov6); +assign G638v6 = (K7yiw6 ? vis_psp_o[31] : Ae2ov6); +assign Z538v6 = (K7yiw6 ? vis_psp_o[30] : Fi4ov6); +assign S538v6 = (K7yiw6 ? vis_psp_o[29] : Slbov6); +assign L538v6 = (K7yiw6 ? vis_psp_o[28] : C7aov6); +assign E538v6 = (K7yiw6 ? vis_psp_o[27] : S2gov6); +assign X438v6 = (K7yiw6 ? vis_psp_o[26] : W7xiw6); +assign Q438v6 = (K7yiw6 ? vis_psp_o[25] : R7yiw6); +assign J438v6 = (K7yiw6 ? vis_psp_o[24] : Y7yiw6); +assign C438v6 = (K7yiw6 ? vis_psp_o[23] : F8yiw6); +assign V338v6 = (K7yiw6 ? vis_psp_o[22] : M8yiw6); +assign O338v6 = (K7yiw6 ? vis_psp_o[21] : T8yiw6); +assign H338v6 = (K7yiw6 ? vis_psp_o[20] : A9yiw6); +assign A338v6 = (K7yiw6 ? vis_psp_o[19] : H9yiw6); +assign T238v6 = (K7yiw6 ? vis_psp_o[18] : Zqxiw6); +assign M238v6 = (K7yiw6 ? vis_psp_o[17] : O9yiw6); +assign F238v6 = (K7yiw6 ? vis_psp_o[16] : V9yiw6); +assign Y138v6 = (K7yiw6 ? vis_psp_o[15] : Qccov6); +assign R138v6 = (K7yiw6 ? vis_psp_o[14] : Cayiw6); +assign K138v6 = (K7yiw6 ? vis_psp_o[13] : Jayiw6); +assign D138v6 = (K7yiw6 ? vis_psp_o[12] : Qayiw6); +assign W038v6 = (K7yiw6 ? vis_psp_o[11] : Xayiw6); +assign P038v6 = (K7yiw6 ? vis_psp_o[10] : T1yiw6); +assign K7yiw6 = (!Ebyiw6); +assign I038v6 = (Ebyiw6 ? Lbyiw6 : vis_psp_o[9]); +assign B038v6 = (Ebyiw6 ? W7kov6 : vis_psp_o[8]); +assign Uz28v6 = (Ebyiw6 ? Sbyiw6 : vis_psp_o[7]); +assign Nz28v6 = (Ebyiw6 ? Zbyiw6 : vis_psp_o[6]); +assign Gz28v6 = (Ebyiw6 ? Gcyiw6 : vis_psp_o[5]); +assign Zy28v6 = (Ebyiw6 ? W6lov6 : vis_psp_o[4]); +assign Sy28v6 = (Ebyiw6 ? Ncyiw6 : vis_psp_o[3]); +assign Ebyiw6 = (Ucyiw6 & Bdyiw6); +assign Ly28v6 = (Idyiw6 ? Pic7z6[0] : B2bov6); +assign Ey28v6 = (Idyiw6 ? Pic7z6[31] : Ae2ov6); +assign Xx28v6 = (Idyiw6 ? Pic7z6[30] : Fi4ov6); +assign Qx28v6 = (Idyiw6 ? Pic7z6[29] : Slbov6); +assign Jx28v6 = (Idyiw6 ? Pic7z6[28] : C7aov6); +assign Cx28v6 = (Idyiw6 ? Pic7z6[27] : S2gov6); +assign Vw28v6 = (Idyiw6 ? Pic7z6[26] : W7xiw6); +assign Ow28v6 = (Idyiw6 ? Pic7z6[25] : R7yiw6); +assign Hw28v6 = (Idyiw6 ? Pic7z6[24] : Y7yiw6); +assign Aw28v6 = (Idyiw6 ? Pic7z6[23] : F8yiw6); +assign Tv28v6 = (Idyiw6 ? Pic7z6[22] : M8yiw6); +assign Mv28v6 = (Idyiw6 ? Pic7z6[21] : T8yiw6); +assign Fv28v6 = (Idyiw6 ? Pic7z6[20] : A9yiw6); +assign Yu28v6 = (Idyiw6 ? Pic7z6[19] : H9yiw6); +assign Ru28v6 = (Idyiw6 ? Pic7z6[18] : Zqxiw6); +assign Ku28v6 = (Idyiw6 ? Pic7z6[17] : O9yiw6); +assign Du28v6 = (Idyiw6 ? Pic7z6[16] : V9yiw6); +assign Wt28v6 = (Idyiw6 ? Pic7z6[15] : Qccov6); +assign Pt28v6 = (Idyiw6 ? Pic7z6[14] : Cayiw6); +assign It28v6 = (Idyiw6 ? Pic7z6[13] : Jayiw6); +assign Bt28v6 = (Idyiw6 ? Pic7z6[12] : Qayiw6); +assign Us28v6 = (Idyiw6 ? Pic7z6[11] : Xayiw6); +assign Ns28v6 = (Idyiw6 ? Pic7z6[10] : T1yiw6); +assign Gs28v6 = (Idyiw6 ? Pic7z6[9] : Lbyiw6); +assign Zr28v6 = (Idyiw6 ? Pic7z6[8] : W7kov6); +assign Idyiw6 = (!Pdyiw6); +assign Sr28v6 = (Pdyiw6 ? Sbyiw6 : Pic7z6[7]); +assign Lr28v6 = (Pdyiw6 ? Zbyiw6 : Pic7z6[6]); +assign Er28v6 = (Pdyiw6 ? Gcyiw6 : Pic7z6[5]); +assign Xq28v6 = (Pdyiw6 ? W6lov6 : Pic7z6[4]); +assign Qq28v6 = (Pdyiw6 ? Ncyiw6 : Pic7z6[3]); +assign Jq28v6 = (Pdyiw6 ? Bskov6 : Pic7z6[2]); +assign Cq28v6 = (Pdyiw6 ? Nv9ov6 : Pic7z6[1]); +assign Pdyiw6 = (Ucyiw6 & Wdyiw6); +assign Vp28v6 = (Deyiw6 ? vis_msp_o[2] : Bskov6); +assign Op28v6 = (Deyiw6 ? vis_msp_o[31] : Ae2ov6); +assign Hp28v6 = (Deyiw6 ? vis_msp_o[30] : Fi4ov6); +assign Ap28v6 = (Deyiw6 ? vis_msp_o[29] : Slbov6); +assign To28v6 = (Deyiw6 ? vis_msp_o[28] : C7aov6); +assign Mo28v6 = (Deyiw6 ? vis_msp_o[27] : S2gov6); +assign Fo28v6 = (Deyiw6 ? vis_msp_o[26] : W7xiw6); +assign Yn28v6 = (Deyiw6 ? vis_msp_o[25] : R7yiw6); +assign Rn28v6 = (Deyiw6 ? vis_msp_o[24] : Y7yiw6); +assign Kn28v6 = (Deyiw6 ? vis_msp_o[23] : F8yiw6); +assign Dn28v6 = (Deyiw6 ? vis_msp_o[22] : M8yiw6); +assign Wm28v6 = (Deyiw6 ? vis_msp_o[21] : T8yiw6); +assign Pm28v6 = (Deyiw6 ? vis_msp_o[20] : A9yiw6); +assign Im28v6 = (Deyiw6 ? vis_msp_o[19] : H9yiw6); +assign Bm28v6 = (Deyiw6 ? vis_msp_o[18] : Zqxiw6); +assign Ul28v6 = (Deyiw6 ? vis_msp_o[17] : O9yiw6); +assign Nl28v6 = (Deyiw6 ? vis_msp_o[16] : V9yiw6); +assign Gl28v6 = (Deyiw6 ? vis_msp_o[15] : Qccov6); +assign Zk28v6 = (Deyiw6 ? vis_msp_o[14] : Cayiw6); +assign Sk28v6 = (Deyiw6 ? vis_msp_o[13] : Jayiw6); +assign Lk28v6 = (Deyiw6 ? vis_msp_o[12] : Qayiw6); +assign Ek28v6 = (Deyiw6 ? vis_msp_o[11] : Xayiw6); +assign Xj28v6 = (Deyiw6 ? vis_msp_o[10] : T1yiw6); +assign Qj28v6 = (Deyiw6 ? vis_msp_o[9] : Lbyiw6); +assign Jj28v6 = (Deyiw6 ? vis_msp_o[8] : W7kov6); +assign Cj28v6 = (Deyiw6 ? vis_msp_o[7] : Sbyiw6); +assign Deyiw6 = (!Keyiw6); +assign Vi28v6 = (Keyiw6 ? Zbyiw6 : vis_msp_o[6]); +assign Oi28v6 = (Keyiw6 ? Gcyiw6 : vis_msp_o[5]); +assign Hi28v6 = (Keyiw6 ? W6lov6 : vis_msp_o[4]); +assign Ai28v6 = (Keyiw6 ? Ncyiw6 : vis_msp_o[3]); +assign Keyiw6 = (~(Reyiw6 | Yeyiw6)); +assign Th28v6 = (Ffyiw6 ? vis_r12_o[0] : B2bov6); +assign Mh28v6 = (Ffyiw6 ? vis_r12_o[31] : Ae2ov6); +assign Fh28v6 = (Ffyiw6 ? vis_r12_o[30] : Fi4ov6); +assign Yg28v6 = (Ffyiw6 ? vis_r12_o[29] : Slbov6); +assign Rg28v6 = (Ffyiw6 ? vis_r12_o[28] : C7aov6); +assign Kg28v6 = (Ffyiw6 ? vis_r12_o[27] : S2gov6); +assign Dg28v6 = (Ffyiw6 ? vis_r12_o[26] : W7xiw6); +assign Wf28v6 = (Ffyiw6 ? vis_r12_o[25] : R7yiw6); +assign Pf28v6 = (Ffyiw6 ? vis_r12_o[24] : Y7yiw6); +assign If28v6 = (Ffyiw6 ? vis_r12_o[23] : F8yiw6); +assign Bf28v6 = (Ffyiw6 ? vis_r12_o[22] : M8yiw6); +assign Ue28v6 = (Ffyiw6 ? vis_r12_o[21] : T8yiw6); +assign Ne28v6 = (Ffyiw6 ? vis_r12_o[20] : A9yiw6); +assign Ge28v6 = (Ffyiw6 ? vis_r12_o[19] : H9yiw6); +assign Zd28v6 = (Ffyiw6 ? vis_r12_o[18] : Zqxiw6); +assign Sd28v6 = (Ffyiw6 ? vis_r12_o[17] : O9yiw6); +assign Ld28v6 = (Ffyiw6 ? vis_r12_o[16] : V9yiw6); +assign Ed28v6 = (Ffyiw6 ? vis_r12_o[15] : Qccov6); +assign Xc28v6 = (Ffyiw6 ? vis_r12_o[14] : Cayiw6); +assign Qc28v6 = (Ffyiw6 ? vis_r12_o[13] : Jayiw6); +assign Jc28v6 = (Ffyiw6 ? vis_r12_o[12] : Qayiw6); +assign Cc28v6 = (Ffyiw6 ? vis_r12_o[11] : Xayiw6); +assign Vb28v6 = (Ffyiw6 ? vis_r12_o[10] : T1yiw6); +assign Ob28v6 = (Ffyiw6 ? vis_r12_o[9] : Lbyiw6); +assign Hb28v6 = (Ffyiw6 ? vis_r12_o[8] : W7kov6); +assign Ab28v6 = (Ffyiw6 ? vis_r12_o[7] : Sbyiw6); +assign Ta28v6 = (Ffyiw6 ? vis_r12_o[6] : Zbyiw6); +assign Ma28v6 = (Ffyiw6 ? vis_r12_o[5] : Gcyiw6); +assign Ffyiw6 = (!Mfyiw6); +assign Fa28v6 = (Mfyiw6 ? W6lov6 : vis_r12_o[4]); +assign Y928v6 = (Mfyiw6 ? Ncyiw6 : vis_r12_o[3]); +assign R928v6 = (Mfyiw6 ? Bskov6 : vis_r12_o[2]); +assign K928v6 = (Mfyiw6 ? Nv9ov6 : vis_r12_o[1]); +assign Mfyiw6 = (~(Reyiw6 | Tfyiw6)); +assign D928v6 = (Agyiw6 ? vis_r11_o[0] : B2bov6); +assign W828v6 = (Agyiw6 ? vis_r11_o[31] : Ae2ov6); +assign P828v6 = (Agyiw6 ? vis_r11_o[30] : Fi4ov6); +assign I828v6 = (Agyiw6 ? vis_r11_o[29] : Slbov6); +assign B828v6 = (Agyiw6 ? vis_r11_o[28] : C7aov6); +assign U728v6 = (Agyiw6 ? vis_r11_o[27] : S2gov6); +assign N728v6 = (Agyiw6 ? vis_r11_o[26] : W7xiw6); +assign G728v6 = (Agyiw6 ? vis_r11_o[25] : R7yiw6); +assign Z628v6 = (Agyiw6 ? vis_r11_o[24] : Y7yiw6); +assign S628v6 = (Agyiw6 ? vis_r11_o[23] : F8yiw6); +assign L628v6 = (Agyiw6 ? vis_r11_o[22] : M8yiw6); +assign E628v6 = (Agyiw6 ? vis_r11_o[21] : T8yiw6); +assign X528v6 = (Agyiw6 ? vis_r11_o[20] : A9yiw6); +assign Q528v6 = (Agyiw6 ? vis_r11_o[19] : H9yiw6); +assign J528v6 = (Agyiw6 ? vis_r11_o[18] : Zqxiw6); +assign C528v6 = (Agyiw6 ? vis_r11_o[17] : O9yiw6); +assign V428v6 = (Agyiw6 ? vis_r11_o[16] : V9yiw6); +assign O428v6 = (Agyiw6 ? vis_r11_o[15] : Qccov6); +assign H428v6 = (Agyiw6 ? vis_r11_o[14] : Cayiw6); +assign A428v6 = (Agyiw6 ? vis_r11_o[13] : Jayiw6); +assign T328v6 = (Agyiw6 ? vis_r11_o[12] : Qayiw6); +assign M328v6 = (Agyiw6 ? vis_r11_o[11] : Xayiw6); +assign F328v6 = (Agyiw6 ? vis_r11_o[10] : T1yiw6); +assign Y228v6 = (Agyiw6 ? vis_r11_o[9] : Lbyiw6); +assign R228v6 = (Agyiw6 ? vis_r11_o[8] : W7kov6); +assign Agyiw6 = (!Hgyiw6); +assign K228v6 = (Hgyiw6 ? Sbyiw6 : vis_r11_o[7]); +assign D228v6 = (Hgyiw6 ? Zbyiw6 : vis_r11_o[6]); +assign W128v6 = (Hgyiw6 ? Gcyiw6 : vis_r11_o[5]); +assign P128v6 = (Hgyiw6 ? W6lov6 : vis_r11_o[4]); +assign I128v6 = (Hgyiw6 ? Ncyiw6 : vis_r11_o[3]); +assign B128v6 = (Hgyiw6 ? Bskov6 : vis_r11_o[2]); +assign U028v6 = (Hgyiw6 ? Nv9ov6 : vis_r11_o[1]); +assign Hgyiw6 = (Ogyiw6 & Bdyiw6); +assign Bdyiw6 = (!Yeyiw6); +assign N028v6 = (Vgyiw6 ? vis_r10_o[0] : B2bov6); +assign G028v6 = (Vgyiw6 ? vis_r10_o[31] : Ae2ov6); +assign Zz18v6 = (Vgyiw6 ? vis_r10_o[30] : Fi4ov6); +assign Sz18v6 = (Vgyiw6 ? vis_r10_o[29] : Slbov6); +assign Lz18v6 = (Vgyiw6 ? vis_r10_o[28] : C7aov6); +assign Ez18v6 = (Vgyiw6 ? vis_r10_o[27] : S2gov6); +assign Xy18v6 = (Vgyiw6 ? vis_r10_o[26] : W7xiw6); +assign Qy18v6 = (Vgyiw6 ? vis_r10_o[25] : R7yiw6); +assign Jy18v6 = (Vgyiw6 ? vis_r10_o[24] : Y7yiw6); +assign Cy18v6 = (Vgyiw6 ? vis_r10_o[23] : F8yiw6); +assign Vx18v6 = (Vgyiw6 ? vis_r10_o[22] : M8yiw6); +assign Ox18v6 = (Vgyiw6 ? vis_r10_o[21] : T8yiw6); +assign Hx18v6 = (Vgyiw6 ? vis_r10_o[20] : A9yiw6); +assign Ax18v6 = (Vgyiw6 ? vis_r10_o[19] : H9yiw6); +assign Tw18v6 = (Vgyiw6 ? vis_r10_o[18] : Zqxiw6); +assign Mw18v6 = (Vgyiw6 ? vis_r10_o[17] : O9yiw6); +assign Fw18v6 = (Vgyiw6 ? vis_r10_o[16] : V9yiw6); +assign Yv18v6 = (Vgyiw6 ? vis_r10_o[15] : Qccov6); +assign Rv18v6 = (Vgyiw6 ? vis_r10_o[14] : Cayiw6); +assign Kv18v6 = (Vgyiw6 ? vis_r10_o[13] : Jayiw6); +assign Dv18v6 = (Vgyiw6 ? vis_r10_o[12] : Qayiw6); +assign Wu18v6 = (Vgyiw6 ? vis_r10_o[11] : Xayiw6); +assign Pu18v6 = (Vgyiw6 ? vis_r10_o[10] : T1yiw6); +assign Iu18v6 = (Vgyiw6 ? vis_r10_o[9] : Lbyiw6); +assign Bu18v6 = (Vgyiw6 ? vis_r10_o[8] : W7kov6); +assign Vgyiw6 = (!Chyiw6); +assign Ut18v6 = (Chyiw6 ? Sbyiw6 : vis_r10_o[7]); +assign Nt18v6 = (Chyiw6 ? Zbyiw6 : vis_r10_o[6]); +assign Gt18v6 = (Chyiw6 ? Gcyiw6 : vis_r10_o[5]); +assign Zs18v6 = (Chyiw6 ? W6lov6 : vis_r10_o[4]); +assign Ss18v6 = (Chyiw6 ? Ncyiw6 : vis_r10_o[3]); +assign Ls18v6 = (Chyiw6 ? Bskov6 : vis_r10_o[2]); +assign Es18v6 = (Chyiw6 ? Nv9ov6 : vis_r10_o[1]); +assign Chyiw6 = (Ogyiw6 & Wdyiw6); +assign Wdyiw6 = (!Tfyiw6); +assign Xr18v6 = (Jhyiw6 ? vis_r9_o[0] : B2bov6); +assign Qr18v6 = (Jhyiw6 ? vis_r9_o[31] : Ae2ov6); +assign Jr18v6 = (Jhyiw6 ? vis_r9_o[30] : Fi4ov6); +assign Cr18v6 = (Jhyiw6 ? vis_r9_o[29] : Slbov6); +assign Vq18v6 = (Jhyiw6 ? vis_r9_o[28] : C7aov6); +assign Oq18v6 = (Jhyiw6 ? vis_r9_o[27] : S2gov6); +assign Hq18v6 = (Jhyiw6 ? vis_r9_o[26] : W7xiw6); +assign Aq18v6 = (Jhyiw6 ? vis_r9_o[25] : R7yiw6); +assign Tp18v6 = (Jhyiw6 ? vis_r9_o[24] : Y7yiw6); +assign Mp18v6 = (Jhyiw6 ? vis_r9_o[23] : F8yiw6); +assign Fp18v6 = (Jhyiw6 ? vis_r9_o[22] : M8yiw6); +assign Yo18v6 = (Jhyiw6 ? vis_r9_o[21] : T8yiw6); +assign Ro18v6 = (Jhyiw6 ? vis_r9_o[20] : A9yiw6); +assign Ko18v6 = (Jhyiw6 ? vis_r9_o[19] : H9yiw6); +assign Do18v6 = (Jhyiw6 ? vis_r9_o[18] : Zqxiw6); +assign Wn18v6 = (Jhyiw6 ? vis_r9_o[17] : O9yiw6); +assign Pn18v6 = (Jhyiw6 ? vis_r9_o[16] : V9yiw6); +assign In18v6 = (Jhyiw6 ? vis_r9_o[15] : Qccov6); +assign Bn18v6 = (Jhyiw6 ? vis_r9_o[14] : Cayiw6); +assign Um18v6 = (Jhyiw6 ? vis_r9_o[13] : Jayiw6); +assign Nm18v6 = (Jhyiw6 ? vis_r9_o[12] : Qayiw6); +assign Gm18v6 = (Jhyiw6 ? vis_r9_o[11] : Xayiw6); +assign Zl18v6 = (Jhyiw6 ? vis_r9_o[10] : T1yiw6); +assign Sl18v6 = (Jhyiw6 ? vis_r9_o[9] : Lbyiw6); +assign Ll18v6 = (Jhyiw6 ? vis_r9_o[8] : W7kov6); +assign El18v6 = (Jhyiw6 ? vis_r9_o[7] : Sbyiw6); +assign Jhyiw6 = (!Qhyiw6); +assign Xk18v6 = (Qhyiw6 ? Zbyiw6 : vis_r9_o[6]); +assign Qk18v6 = (Qhyiw6 ? Gcyiw6 : vis_r9_o[5]); +assign Jk18v6 = (Qhyiw6 ? W6lov6 : vis_r9_o[4]); +assign Ck18v6 = (Qhyiw6 ? Ncyiw6 : vis_r9_o[3]); +assign Vj18v6 = (Qhyiw6 ? Bskov6 : vis_r9_o[2]); +assign Oj18v6 = (Qhyiw6 ? Nv9ov6 : vis_r9_o[1]); +assign Qhyiw6 = (~(Yeyiw6 | Xhyiw6)); +assign Yeyiw6 = (~(Eiyiw6 & Liyiw6)); +assign Eiyiw6 = (Siyiw6 & Ziyiw6); +assign Hj18v6 = (Gjyiw6 ? vis_r8_o[0] : B2bov6); +assign Aj18v6 = (Gjyiw6 ? vis_r8_o[31] : Ae2ov6); +assign Ti18v6 = (Gjyiw6 ? vis_r8_o[30] : Fi4ov6); +assign Mi18v6 = (Gjyiw6 ? vis_r8_o[29] : Slbov6); +assign Fi18v6 = (Gjyiw6 ? vis_r8_o[28] : C7aov6); +assign Yh18v6 = (Gjyiw6 ? vis_r8_o[27] : S2gov6); +assign Rh18v6 = (Gjyiw6 ? vis_r8_o[26] : W7xiw6); +assign Kh18v6 = (Gjyiw6 ? vis_r8_o[25] : R7yiw6); +assign Dh18v6 = (Gjyiw6 ? vis_r8_o[24] : Y7yiw6); +assign Wg18v6 = (Gjyiw6 ? vis_r8_o[23] : F8yiw6); +assign Pg18v6 = (Gjyiw6 ? vis_r8_o[22] : M8yiw6); +assign Ig18v6 = (Gjyiw6 ? vis_r8_o[21] : T8yiw6); +assign Bg18v6 = (Gjyiw6 ? vis_r8_o[20] : A9yiw6); +assign Uf18v6 = (Gjyiw6 ? vis_r8_o[19] : H9yiw6); +assign Nf18v6 = (Gjyiw6 ? vis_r8_o[18] : Zqxiw6); +assign Gf18v6 = (Gjyiw6 ? vis_r8_o[17] : O9yiw6); +assign Ze18v6 = (Gjyiw6 ? vis_r8_o[16] : V9yiw6); +assign Se18v6 = (Gjyiw6 ? vis_r8_o[15] : Qccov6); +assign Le18v6 = (Gjyiw6 ? vis_r8_o[14] : Cayiw6); +assign Ee18v6 = (Gjyiw6 ? vis_r8_o[13] : Jayiw6); +assign Xd18v6 = (Gjyiw6 ? vis_r8_o[12] : Qayiw6); +assign Qd18v6 = (Gjyiw6 ? vis_r8_o[11] : Xayiw6); +assign Jd18v6 = (Gjyiw6 ? vis_r8_o[10] : T1yiw6); +assign Cd18v6 = (Gjyiw6 ? vis_r8_o[9] : Lbyiw6); +assign Vc18v6 = (Gjyiw6 ? vis_r8_o[8] : W7kov6); +assign Oc18v6 = (Gjyiw6 ? vis_r8_o[7] : Sbyiw6); +assign Gjyiw6 = (!Njyiw6); +assign Hc18v6 = (Njyiw6 ? Zbyiw6 : vis_r8_o[6]); +assign Ac18v6 = (Njyiw6 ? Gcyiw6 : vis_r8_o[5]); +assign Tb18v6 = (Njyiw6 ? W6lov6 : vis_r8_o[4]); +assign Mb18v6 = (Njyiw6 ? Ncyiw6 : vis_r8_o[3]); +assign Fb18v6 = (Njyiw6 ? Bskov6 : vis_r8_o[2]); +assign Ya18v6 = (Njyiw6 ? Nv9ov6 : vis_r8_o[1]); +assign Njyiw6 = (~(Tfyiw6 | Xhyiw6)); +assign Tfyiw6 = (~(Ujyiw6 & Liyiw6)); +assign Ujyiw6 = (Ziyiw6 & Bkyiw6); +assign Ra18v6 = (Ikyiw6 ? vis_r7_o[0] : B2bov6); +assign Ka18v6 = (Ikyiw6 ? vis_r7_o[31] : Ae2ov6); +assign Da18v6 = (Ikyiw6 ? vis_r7_o[30] : Fi4ov6); +assign W918v6 = (Ikyiw6 ? vis_r7_o[29] : Slbov6); +assign P918v6 = (Ikyiw6 ? vis_r7_o[28] : C7aov6); +assign I918v6 = (Ikyiw6 ? vis_r7_o[27] : S2gov6); +assign B918v6 = (Ikyiw6 ? vis_r7_o[26] : W7xiw6); +assign U818v6 = (Ikyiw6 ? vis_r7_o[25] : R7yiw6); +assign N818v6 = (Ikyiw6 ? vis_r7_o[24] : Y7yiw6); +assign G818v6 = (Ikyiw6 ? vis_r7_o[23] : F8yiw6); +assign Z718v6 = (Ikyiw6 ? vis_r7_o[22] : M8yiw6); +assign S718v6 = (Ikyiw6 ? vis_r7_o[21] : T8yiw6); +assign L718v6 = (Ikyiw6 ? vis_r7_o[20] : A9yiw6); +assign E718v6 = (Ikyiw6 ? vis_r7_o[19] : H9yiw6); +assign X618v6 = (Ikyiw6 ? vis_r7_o[18] : Zqxiw6); +assign Q618v6 = (Ikyiw6 ? vis_r7_o[17] : O9yiw6); +assign J618v6 = (Ikyiw6 ? vis_r7_o[16] : V9yiw6); +assign C618v6 = (Ikyiw6 ? vis_r7_o[15] : Qccov6); +assign V518v6 = (Ikyiw6 ? vis_r7_o[14] : Cayiw6); +assign O518v6 = (Ikyiw6 ? vis_r7_o[13] : Jayiw6); +assign H518v6 = (Ikyiw6 ? vis_r7_o[12] : Qayiw6); +assign A518v6 = (Ikyiw6 ? vis_r7_o[11] : Xayiw6); +assign T418v6 = (Ikyiw6 ? vis_r7_o[10] : T1yiw6); +assign M418v6 = (Ikyiw6 ? vis_r7_o[9] : Lbyiw6); +assign F418v6 = (Ikyiw6 ? vis_r7_o[8] : W7kov6); +assign Ikyiw6 = (!Pkyiw6); +assign Y318v6 = (Pkyiw6 ? Sbyiw6 : vis_r7_o[7]); +assign R318v6 = (Pkyiw6 ? Zbyiw6 : vis_r7_o[6]); +assign K318v6 = (Pkyiw6 ? Gcyiw6 : vis_r7_o[5]); +assign D318v6 = (Pkyiw6 ? W6lov6 : vis_r7_o[4]); +assign W218v6 = (Pkyiw6 ? Ncyiw6 : vis_r7_o[3]); +assign P218v6 = (Pkyiw6 ? Bskov6 : vis_r7_o[2]); +assign I218v6 = (Pkyiw6 ? Nv9ov6 : vis_r7_o[1]); +assign Pkyiw6 = (Ucyiw6 & Wkyiw6); +assign B218v6 = (Dlyiw6 ? vis_r6_o[0] : B2bov6); +assign U118v6 = (Dlyiw6 ? vis_r6_o[31] : Ae2ov6); +assign N118v6 = (Dlyiw6 ? vis_r6_o[30] : Fi4ov6); +assign G118v6 = (Dlyiw6 ? vis_r6_o[29] : Slbov6); +assign Z018v6 = (Dlyiw6 ? vis_r6_o[28] : C7aov6); +assign S018v6 = (Dlyiw6 ? vis_r6_o[27] : S2gov6); +assign L018v6 = (Dlyiw6 ? vis_r6_o[26] : W7xiw6); +assign E018v6 = (Dlyiw6 ? vis_r6_o[25] : R7yiw6); +assign Xz08v6 = (Dlyiw6 ? vis_r6_o[24] : Y7yiw6); +assign Qz08v6 = (Dlyiw6 ? vis_r6_o[23] : F8yiw6); +assign Jz08v6 = (Dlyiw6 ? vis_r6_o[22] : M8yiw6); +assign Cz08v6 = (Dlyiw6 ? vis_r6_o[21] : T8yiw6); +assign Vy08v6 = (Dlyiw6 ? vis_r6_o[20] : A9yiw6); +assign Oy08v6 = (Dlyiw6 ? vis_r6_o[19] : H9yiw6); +assign Hy08v6 = (Dlyiw6 ? vis_r6_o[18] : Zqxiw6); +assign Ay08v6 = (Dlyiw6 ? vis_r6_o[17] : O9yiw6); +assign Tx08v6 = (Dlyiw6 ? vis_r6_o[16] : V9yiw6); +assign Mx08v6 = (Dlyiw6 ? vis_r6_o[15] : Qccov6); +assign Fx08v6 = (Dlyiw6 ? vis_r6_o[14] : Cayiw6); +assign Yw08v6 = (Dlyiw6 ? vis_r6_o[13] : Jayiw6); +assign Rw08v6 = (Dlyiw6 ? vis_r6_o[12] : Qayiw6); +assign Kw08v6 = (Dlyiw6 ? vis_r6_o[11] : Xayiw6); +assign Dw08v6 = (Dlyiw6 ? vis_r6_o[10] : T1yiw6); +assign Wv08v6 = (Dlyiw6 ? vis_r6_o[9] : Lbyiw6); +assign Pv08v6 = (Dlyiw6 ? vis_r6_o[8] : W7kov6); +assign Dlyiw6 = (!Klyiw6); +assign Iv08v6 = (Klyiw6 ? Sbyiw6 : vis_r6_o[7]); +assign Bv08v6 = (Klyiw6 ? Zbyiw6 : vis_r6_o[6]); +assign Uu08v6 = (Klyiw6 ? Gcyiw6 : vis_r6_o[5]); +assign Nu08v6 = (Klyiw6 ? W6lov6 : vis_r6_o[4]); +assign Gu08v6 = (Klyiw6 ? Ncyiw6 : vis_r6_o[3]); +assign Zt08v6 = (Klyiw6 ? Bskov6 : vis_r6_o[2]); +assign St08v6 = (Klyiw6 ? Nv9ov6 : vis_r6_o[1]); +assign Klyiw6 = (Ucyiw6 & Rlyiw6); +assign Ucyiw6 = (Ylyiw6 & Fmyiw6); +assign Lt08v6 = (Mmyiw6 ? vis_r5_o[0] : B2bov6); +assign Et08v6 = (Mmyiw6 ? vis_r5_o[31] : Ae2ov6); +assign Xs08v6 = (Mmyiw6 ? vis_r5_o[30] : Fi4ov6); +assign Qs08v6 = (Mmyiw6 ? vis_r5_o[29] : Slbov6); +assign Js08v6 = (Mmyiw6 ? vis_r5_o[28] : C7aov6); +assign Cs08v6 = (Mmyiw6 ? vis_r5_o[27] : S2gov6); +assign Vr08v6 = (Mmyiw6 ? vis_r5_o[26] : W7xiw6); +assign Or08v6 = (Mmyiw6 ? vis_r5_o[25] : R7yiw6); +assign Hr08v6 = (Mmyiw6 ? vis_r5_o[24] : Y7yiw6); +assign Ar08v6 = (Mmyiw6 ? vis_r5_o[23] : F8yiw6); +assign Tq08v6 = (Mmyiw6 ? vis_r5_o[22] : M8yiw6); +assign Mq08v6 = (Mmyiw6 ? vis_r5_o[21] : T8yiw6); +assign Fq08v6 = (Mmyiw6 ? vis_r5_o[20] : A9yiw6); +assign Yp08v6 = (Mmyiw6 ? vis_r5_o[19] : H9yiw6); +assign Rp08v6 = (Mmyiw6 ? vis_r5_o[18] : Zqxiw6); +assign Kp08v6 = (Mmyiw6 ? vis_r5_o[17] : O9yiw6); +assign Dp08v6 = (Mmyiw6 ? vis_r5_o[16] : V9yiw6); +assign Wo08v6 = (Mmyiw6 ? vis_r5_o[15] : Qccov6); +assign Po08v6 = (Mmyiw6 ? vis_r5_o[14] : Cayiw6); +assign Io08v6 = (Mmyiw6 ? vis_r5_o[13] : Jayiw6); +assign Bo08v6 = (Mmyiw6 ? vis_r5_o[12] : Qayiw6); +assign Un08v6 = (Mmyiw6 ? vis_r5_o[11] : Xayiw6); +assign Nn08v6 = (Mmyiw6 ? vis_r5_o[10] : T1yiw6); +assign Gn08v6 = (Mmyiw6 ? vis_r5_o[9] : Lbyiw6); +assign Zm08v6 = (Mmyiw6 ? vis_r5_o[8] : W7kov6); +assign Sm08v6 = (Mmyiw6 ? vis_r5_o[7] : Sbyiw6); +assign Lm08v6 = (Mmyiw6 ? vis_r5_o[6] : Zbyiw6); +assign Em08v6 = (Mmyiw6 ? vis_r5_o[5] : Gcyiw6); +assign Mmyiw6 = (!Tmyiw6); +assign Xl08v6 = (Tmyiw6 ? W6lov6 : vis_r5_o[4]); +assign Ql08v6 = (Tmyiw6 ? Ncyiw6 : vis_r5_o[3]); +assign Jl08v6 = (Tmyiw6 ? Bskov6 : vis_r5_o[2]); +assign Cl08v6 = (Tmyiw6 ? Nv9ov6 : vis_r5_o[1]); +assign Tmyiw6 = (~(Anyiw6 | Reyiw6)); +assign Vk08v6 = (Hnyiw6 ? vis_r4_o[0] : B2bov6); +assign Ok08v6 = (Hnyiw6 ? vis_r4_o[31] : Ae2ov6); +assign Hk08v6 = (Hnyiw6 ? vis_r4_o[30] : Fi4ov6); +assign Ak08v6 = (Hnyiw6 ? vis_r4_o[29] : Slbov6); +assign Tj08v6 = (Hnyiw6 ? vis_r4_o[28] : C7aov6); +assign Mj08v6 = (Hnyiw6 ? vis_r4_o[27] : S2gov6); +assign Fj08v6 = (Hnyiw6 ? vis_r4_o[26] : W7xiw6); +assign Yi08v6 = (Hnyiw6 ? vis_r4_o[25] : R7yiw6); +assign Ri08v6 = (Hnyiw6 ? vis_r4_o[24] : Y7yiw6); +assign Ki08v6 = (Hnyiw6 ? vis_r4_o[23] : F8yiw6); +assign Di08v6 = (Hnyiw6 ? vis_r4_o[22] : M8yiw6); +assign Wh08v6 = (Hnyiw6 ? vis_r4_o[21] : T8yiw6); +assign Ph08v6 = (Hnyiw6 ? vis_r4_o[20] : A9yiw6); +assign Ih08v6 = (Hnyiw6 ? vis_r4_o[19] : H9yiw6); +assign Bh08v6 = (Hnyiw6 ? vis_r4_o[18] : Zqxiw6); +assign Ug08v6 = (Hnyiw6 ? vis_r4_o[17] : O9yiw6); +assign Ng08v6 = (Hnyiw6 ? vis_r4_o[16] : V9yiw6); +assign Gg08v6 = (Hnyiw6 ? vis_r4_o[15] : Qccov6); +assign Zf08v6 = (Hnyiw6 ? vis_r4_o[14] : Cayiw6); +assign Sf08v6 = (Hnyiw6 ? vis_r4_o[13] : Jayiw6); +assign Lf08v6 = (Hnyiw6 ? vis_r4_o[12] : Qayiw6); +assign Ef08v6 = (Hnyiw6 ? vis_r4_o[11] : Xayiw6); +assign Xe08v6 = (Hnyiw6 ? vis_r4_o[10] : T1yiw6); +assign Qe08v6 = (Hnyiw6 ? vis_r4_o[9] : Lbyiw6); +assign Je08v6 = (Hnyiw6 ? vis_r4_o[8] : W7kov6); +assign Hnyiw6 = (!Onyiw6); +assign Ce08v6 = (Onyiw6 ? Sbyiw6 : vis_r4_o[7]); +assign Vd08v6 = (Onyiw6 ? Zbyiw6 : vis_r4_o[6]); +assign Od08v6 = (Onyiw6 ? Gcyiw6 : vis_r4_o[5]); +assign Hd08v6 = (Onyiw6 ? W6lov6 : vis_r4_o[4]); +assign Ad08v6 = (Onyiw6 ? Ncyiw6 : vis_r4_o[3]); +assign Tc08v6 = (Onyiw6 ? Bskov6 : vis_r4_o[2]); +assign Mc08v6 = (Onyiw6 ? Nv9ov6 : vis_r4_o[1]); +assign Onyiw6 = (~(Reyiw6 | Vnyiw6)); +assign Reyiw6 = (Ylyiw6 | Coyiw6); +assign Fc08v6 = (Joyiw6 ? vis_r3_o[0] : B2bov6); +assign Yb08v6 = (Joyiw6 ? vis_r3_o[31] : Ae2ov6); +assign Rb08v6 = (Joyiw6 ? vis_r3_o[30] : Fi4ov6); +assign Kb08v6 = (Joyiw6 ? vis_r3_o[29] : Slbov6); +assign Db08v6 = (Joyiw6 ? vis_r3_o[28] : C7aov6); +assign Wa08v6 = (Joyiw6 ? vis_r3_o[27] : S2gov6); +assign Pa08v6 = (Joyiw6 ? vis_r3_o[26] : W7xiw6); +assign Ia08v6 = (Joyiw6 ? vis_r3_o[25] : R7yiw6); +assign Ba08v6 = (Joyiw6 ? vis_r3_o[24] : Y7yiw6); +assign U908v6 = (Joyiw6 ? vis_r3_o[23] : F8yiw6); +assign N908v6 = (Joyiw6 ? vis_r3_o[22] : M8yiw6); +assign G908v6 = (Joyiw6 ? vis_r3_o[21] : T8yiw6); +assign Z808v6 = (Joyiw6 ? vis_r3_o[20] : A9yiw6); +assign S808v6 = (Joyiw6 ? vis_r3_o[19] : H9yiw6); +assign L808v6 = (Joyiw6 ? vis_r3_o[18] : Zqxiw6); +assign E808v6 = (Joyiw6 ? vis_r3_o[17] : O9yiw6); +assign X708v6 = (Joyiw6 ? vis_r3_o[16] : V9yiw6); +assign Q708v6 = (Joyiw6 ? vis_r3_o[15] : Qccov6); +assign J708v6 = (Joyiw6 ? vis_r3_o[14] : Cayiw6); +assign C708v6 = (Joyiw6 ? vis_r3_o[13] : Jayiw6); +assign V608v6 = (Joyiw6 ? vis_r3_o[12] : Qayiw6); +assign O608v6 = (Joyiw6 ? vis_r3_o[11] : Xayiw6); +assign H608v6 = (Joyiw6 ? vis_r3_o[10] : T1yiw6); +assign A608v6 = (Joyiw6 ? vis_r3_o[9] : Lbyiw6); +assign T508v6 = (Joyiw6 ? vis_r3_o[8] : W7kov6); +assign Joyiw6 = (!Qoyiw6); +assign M508v6 = (Qoyiw6 ? Sbyiw6 : vis_r3_o[7]); +assign F508v6 = (Qoyiw6 ? Zbyiw6 : vis_r3_o[6]); +assign Y408v6 = (Qoyiw6 ? Gcyiw6 : vis_r3_o[5]); +assign R408v6 = (Qoyiw6 ? W6lov6 : vis_r3_o[4]); +assign K408v6 = (Qoyiw6 ? Ncyiw6 : vis_r3_o[3]); +assign D408v6 = (Qoyiw6 ? Bskov6 : vis_r3_o[2]); +assign W308v6 = (Qoyiw6 ? Nv9ov6 : vis_r3_o[1]); +assign Qoyiw6 = (Ogyiw6 & Wkyiw6); +assign Wkyiw6 = (!Anyiw6); +assign P308v6 = (Xoyiw6 ? vis_r2_o[0] : B2bov6); +assign I308v6 = (Xoyiw6 ? vis_r2_o[31] : Ae2ov6); +assign B308v6 = (Xoyiw6 ? vis_r2_o[30] : Fi4ov6); +assign U208v6 = (Xoyiw6 ? vis_r2_o[29] : Slbov6); +assign N208v6 = (Xoyiw6 ? vis_r2_o[28] : C7aov6); +assign G208v6 = (Xoyiw6 ? vis_r2_o[27] : S2gov6); +assign Z108v6 = (Xoyiw6 ? vis_r2_o[26] : W7xiw6); +assign S108v6 = (Xoyiw6 ? vis_r2_o[25] : R7yiw6); +assign L108v6 = (Xoyiw6 ? vis_r2_o[24] : Y7yiw6); +assign E108v6 = (Xoyiw6 ? vis_r2_o[23] : F8yiw6); +assign X008v6 = (Xoyiw6 ? vis_r2_o[22] : M8yiw6); +assign Q008v6 = (Xoyiw6 ? vis_r2_o[21] : T8yiw6); +assign J008v6 = (Xoyiw6 ? vis_r2_o[20] : A9yiw6); +assign C008v6 = (Xoyiw6 ? vis_r2_o[19] : H9yiw6); +assign Vzz7v6 = (Xoyiw6 ? vis_r2_o[18] : Zqxiw6); +assign Ozz7v6 = (Xoyiw6 ? vis_r2_o[17] : O9yiw6); +assign Hzz7v6 = (Xoyiw6 ? vis_r2_o[16] : V9yiw6); +assign Azz7v6 = (Xoyiw6 ? vis_r2_o[15] : Qccov6); +assign Tyz7v6 = (Xoyiw6 ? vis_r2_o[14] : Cayiw6); +assign Myz7v6 = (Xoyiw6 ? vis_r2_o[13] : Jayiw6); +assign Fyz7v6 = (Xoyiw6 ? vis_r2_o[12] : Qayiw6); +assign Yxz7v6 = (Xoyiw6 ? vis_r2_o[11] : Xayiw6); +assign Rxz7v6 = (Xoyiw6 ? vis_r2_o[10] : T1yiw6); +assign Kxz7v6 = (Xoyiw6 ? vis_r2_o[9] : Lbyiw6); +assign Dxz7v6 = (Xoyiw6 ? vis_r2_o[8] : W7kov6); +assign Xoyiw6 = (!Epyiw6); +assign Wwz7v6 = (Epyiw6 ? Sbyiw6 : vis_r2_o[7]); +assign Pwz7v6 = (Epyiw6 ? Zbyiw6 : vis_r2_o[6]); +assign Iwz7v6 = (Epyiw6 ? Gcyiw6 : vis_r2_o[5]); +assign Bwz7v6 = (Epyiw6 ? W6lov6 : vis_r2_o[4]); +assign Uvz7v6 = (Epyiw6 ? Ncyiw6 : vis_r2_o[3]); +assign Nvz7v6 = (Epyiw6 ? Bskov6 : vis_r2_o[2]); +assign Gvz7v6 = (Epyiw6 ? Nv9ov6 : vis_r2_o[1]); +assign Epyiw6 = (Ogyiw6 & Rlyiw6); +assign Ogyiw6 = (Coyiw6 & Ylyiw6); +assign Zuz7v6 = (Lpyiw6 ? vis_r1_o[0] : B2bov6); +assign Suz7v6 = (Lpyiw6 ? vis_r1_o[31] : Ae2ov6); +assign Ae2ov6 = (Spyiw6 ? Wt97z6 : Gli7z6[31]); +assign Wt97z6 = (~(Zpyiw6 & Gqyiw6)); +assign Gqyiw6 = (~(Nqyiw6 & Bvwnv6)); +assign Bvwnv6 = (~(Uqyiw6 & Bryiw6)); +assign Bryiw6 = (Iryiw6 & Pryiw6); +assign Pryiw6 = (~(Wryiw6 & Hjjnv6)); +assign Iryiw6 = (Dsyiw6 & Ksyiw6); +assign Ksyiw6 = (~(Ju1ov6 & Rsyiw6)); +assign Dsyiw6 = (~(Nqh7z6[31] & Ysyiw6)); +assign Uqyiw6 = (Ftyiw6 & Mtyiw6); +assign Mtyiw6 = (~(Fth7z6[31] & Ttyiw6)); +assign Zpyiw6 = (Auyiw6 & Huyiw6); +assign Huyiw6 = (~(Pdc7z6[31] & Ouyiw6)); +assign Auyiw6 = (~(Vuyiw6 & Cvyiw6)); +assign Cvyiw6 = (~(Jvyiw6 & Qvyiw6)); +assign Qvyiw6 = (Xvyiw6 & Ewyiw6); +assign Ewyiw6 = (Lwyiw6 & Swyiw6); +assign Swyiw6 = (Zwyiw6 & Gxyiw6); +assign Gxyiw6 = (~(Nxyiw6 & Rje7z6[31])); +assign Nxyiw6 = (Uxyiw6 & Kxb7z6[31]); +assign Zwyiw6 = (~(Byyiw6 & Wx1ov6)); +assign Byyiw6 = (Dy1ov6 & J1gov6); +assign Lwyiw6 = (Iyyiw6 & Pyyiw6); +assign Pyyiw6 = (~(Wyyiw6 & V5bov6)); +assign Wyyiw6 = (~(Dzyiw6 & Kzyiw6)); +assign Dzyiw6 = (Rzyiw6 & Yzyiw6); +assign Yzyiw6 = (~(F0ziw6 & M0ziw6)); +assign Rzyiw6 = (Ninnv6 | Rje7z6[31]); +assign Iyyiw6 = (~(T0ziw6 & Rje7z6[31])); +assign Xvyiw6 = (A1ziw6 & H1ziw6); +assign H1ziw6 = (~(L0g7z6[15] & O1ziw6)); +assign A1ziw6 = (V1ziw6 & C2ziw6); +assign C2ziw6 = (~(L0g7z6[31] & J2ziw6)); +assign V1ziw6 = (~(Cqf7z6[15] & Q2ziw6)); +assign Jvyiw6 = (X2ziw6 & E3ziw6); +assign E3ziw6 = (L3ziw6 & S3ziw6); +assign S3ziw6 = (~(Z3ziw6 & E3c7z6[0])); +assign L3ziw6 = (G4ziw6 & N4ziw6); +assign N4ziw6 = (~(U4ziw6 & V1c7z6[31])); +assign G4ziw6 = (~(B5ziw6 & O4gdt6)); +assign X2ziw6 = (I5ziw6 & Ry1ov6); +assign Ry1ov6 = (P5ziw6 & W5ziw6); +assign W5ziw6 = (D6ziw6 & K6ziw6); +assign K6ziw6 = (~(R6ziw6 & Y6ziw6)); +assign D6ziw6 = (~(F7ziw6 & M7ziw6)); +assign P5ziw6 = (T7ziw6 & A8ziw6); +assign A8ziw6 = (~(J73ov6 & H8ziw6)); +assign I5ziw6 = (Ky1ov6 & O8ziw6); +assign O8ziw6 = (~(Mtkdt6 & Oztiw6)); +assign Ky1ov6 = (J9ziw6 ? C9ziw6 : V8ziw6); +assign J9ziw6 = (!N2aov6); +assign N2aov6 = (Q9ziw6 ^ Dte7z6[0]); +assign Q9ziw6 = (~(X9ziw6 & Eaziw6)); +assign Eaziw6 = (~(Yxf7z6[15] & Laziw6)); +assign X9ziw6 = (Saziw6 & Zaziw6); +assign Zaziw6 = (~(Gbziw6 & Yxf7z6[31])); +assign Saziw6 = (~(Kxb7z6[31] & Nbziw6)); +assign C9ziw6 = (~(B3aov6 & Ubziw6)); +assign V8ziw6 = (B3aov6 ? Icziw6 : Bcziw6); +assign B3aov6 = (Mennv6 ^ Pcziw6); +assign Pcziw6 = (Wcziw6 & Ddziw6); +assign Ddziw6 = (~(Kdziw6 & Rdziw6)); +assign Wcziw6 = (~(Ydziw6 & Feziw6)); +assign Feziw6 = (~(Meziw6 & Teziw6)); +assign Teziw6 = (Afziw6 & Hfziw6); +assign Hfziw6 = (~(Onf7z6[31] & Ofziw6)); +assign Afziw6 = (Vfziw6 & Cgziw6); +assign Cgziw6 = (~(Kxb7z6[31] & Jgziw6)); +assign Jgziw6 = (~(Z6jhw6 & Qgziw6)); +assign Vfziw6 = (~(Gvtiw6 & Xgziw6)); +assign Xgziw6 = (~(Ehziw6 & Lhziw6)); +assign Lhziw6 = (Shziw6 & Zhziw6); +assign Zhziw6 = (~(Yxf7z6[31] & Giziw6)); +assign Shziw6 = (~(Yxf7z6[32] & Niziw6)); +assign Ehziw6 = (Uiziw6 & Bjziw6); +assign Bjziw6 = (~(Yxf7z6[33] & Ijziw6)); +assign Uiziw6 = (~(Yxf7z6[34] & Pjziw6)); +assign Meziw6 = (Wjziw6 & Dkziw6); +assign Dkziw6 = (Ebmnv6 | Kkziw6); +assign Ebmnv6 = (!Alf7z6[31]); +assign Wjziw6 = (~(Alf7z6[15] & Rkziw6)); +assign Luz7v6 = (Lpyiw6 ? vis_r1_o[30] : Fi4ov6); +assign Euz7v6 = (Lpyiw6 ? vis_r1_o[29] : Slbov6); +assign Xtz7v6 = (Lpyiw6 ? vis_r1_o[28] : C7aov6); +assign Qtz7v6 = (Lpyiw6 ? vis_r1_o[27] : S2gov6); +assign Jtz7v6 = (Lpyiw6 ? vis_r1_o[26] : W7xiw6); +assign Ctz7v6 = (Lpyiw6 ? vis_r1_o[25] : R7yiw6); +assign Vsz7v6 = (Lpyiw6 ? vis_r1_o[24] : Y7yiw6); +assign Osz7v6 = (Lpyiw6 ? vis_r1_o[23] : F8yiw6); +assign Hsz7v6 = (Lpyiw6 ? vis_r1_o[22] : M8yiw6); +assign Asz7v6 = (Lpyiw6 ? vis_r1_o[21] : T8yiw6); +assign Trz7v6 = (Lpyiw6 ? vis_r1_o[20] : A9yiw6); +assign Mrz7v6 = (Lpyiw6 ? vis_r1_o[19] : H9yiw6); +assign Frz7v6 = (Lpyiw6 ? vis_r1_o[18] : Zqxiw6); +assign Yqz7v6 = (Lpyiw6 ? vis_r1_o[17] : O9yiw6); +assign Rqz7v6 = (Lpyiw6 ? vis_r1_o[16] : V9yiw6); +assign Kqz7v6 = (Lpyiw6 ? vis_r1_o[15] : Qccov6); +assign Dqz7v6 = (Lpyiw6 ? vis_r1_o[14] : Cayiw6); +assign Wpz7v6 = (Lpyiw6 ? vis_r1_o[13] : Jayiw6); +assign Ppz7v6 = (Lpyiw6 ? vis_r1_o[12] : Qayiw6); +assign Ipz7v6 = (Lpyiw6 ? vis_r1_o[11] : Xayiw6); +assign Bpz7v6 = (Lpyiw6 ? vis_r1_o[10] : T1yiw6); +assign Uoz7v6 = (Lpyiw6 ? vis_r1_o[9] : Lbyiw6); +assign Noz7v6 = (Lpyiw6 ? vis_r1_o[8] : W7kov6); +assign Goz7v6 = (Lpyiw6 ? vis_r1_o[7] : Sbyiw6); +assign Lpyiw6 = (!Ykziw6); +assign Znz7v6 = (Ykziw6 ? Zbyiw6 : vis_r1_o[6]); +assign Snz7v6 = (Ykziw6 ? Gcyiw6 : vis_r1_o[5]); +assign Lnz7v6 = (Ykziw6 ? W6lov6 : vis_r1_o[4]); +assign Enz7v6 = (Ykziw6 ? Ncyiw6 : vis_r1_o[3]); +assign Xmz7v6 = (Ykziw6 ? Bskov6 : vis_r1_o[2]); +assign Qmz7v6 = (Ykziw6 ? Nv9ov6 : vis_r1_o[1]); +assign Ykziw6 = (~(Anyiw6 | Xhyiw6)); +assign Anyiw6 = (~(Flziw6 & Liyiw6)); +assign Flziw6 = (Mlziw6 & Siyiw6); +assign Jmz7v6 = (Tbbov6 ? vis_r0_o[0] : B2bov6); +assign B2bov6 = (~(Spyiw6 & Tlziw6)); +assign Tlziw6 = (~(Gghov6 & Amziw6)); +assign Gghov6 = (~(Hmziw6 & Omziw6)); +assign Omziw6 = (~(Pdc7z6[0] & Ouyiw6)); +assign Hmziw6 = (Vmziw6 & Cnziw6); +assign Cnziw6 = (~(Vuyiw6 & Jnziw6)); +assign Jnziw6 = (~(Qnziw6 & Xnziw6)); +assign Xnziw6 = (Eoziw6 & Loziw6); +assign Loziw6 = (Soziw6 & Zoziw6); +assign Zoziw6 = (Gpziw6 & Npziw6); +assign Npziw6 = (~(Upziw6 & C1gov6)); +assign Upziw6 = (Bqziw6 & Tkbdt6); +assign Gpziw6 = (Iqziw6 & Pqziw6); +assign Pqziw6 = (~(Wqziw6 & Drziw6)); +assign Drziw6 = (Krziw6 & Rrziw6); +assign Rrziw6 = (~(Yrziw6 & Fsziw6)); +assign Fsziw6 = (~(Dte7z6[14] & Inadt6)); +assign Yrziw6 = (~(Dte7z6[13] & Nmadt6)); +assign Krziw6 = (N99iw6 & Msziw6); +assign Wqziw6 = (Dte7z6[15] & Dte7z6[16]); +assign Iqziw6 = (~(Tsziw6 & Uxyiw6)); +assign Tsziw6 = (Kxb7z6[0] & Atziw6); +assign Soziw6 = (Htziw6 & Otziw6); +assign Otziw6 = (~(Vtziw6 & Cuziw6)); +assign Vtziw6 = (~(Juziw6 & Quziw6)); +assign Juziw6 = (Xuziw6 & Evziw6); +assign Xuziw6 = (Atziw6 | Ninnv6); +assign Atziw6 = (Lvziw6 | Rje7z6[0]); +assign Htziw6 = (~(Svziw6 & Rknnv6)); +assign Rknnv6 = (~(Zvziw6 & Gwziw6)); +assign Gwziw6 = (Nwziw6 & Uwziw6); +assign Uwziw6 = (~(Bxziw6 & Ixziw6)); +assign Ixziw6 = (~(Pxziw6 & Wxziw6)); +assign Wxziw6 = (~(Dyziw6 & Kyziw6)); +assign Kyziw6 = (~(Ryziw6 & Yyziw6)); +assign Ryziw6 = (Tzziw6 ? Mzziw6 : Fzziw6); +assign Mzziw6 = (~(A00jw6 & H00jw6)); +assign A00jw6 = (O00jw6 | V00jw6); +assign V00jw6 = (~(C10jw6 | J10jw6)); +assign J10jw6 = (!Q10jw6); +assign Fzziw6 = (H00jw6 | X10jw6); +assign X10jw6 = (O00jw6 & E20jw6); +assign E20jw6 = (~(Q10jw6 & C10jw6)); +assign Pxziw6 = (~(L20jw6 & S20jw6)); +assign Nwziw6 = (Z20jw6 & G30jw6); +assign G30jw6 = (~(N30jw6 & U30jw6)); +assign N30jw6 = (B40jw6 & I40jw6); +assign Z20jw6 = (~(P40jw6 & W40jw6)); +assign W40jw6 = (~(D50jw6 & K50jw6)); +assign K50jw6 = (~(R50jw6 & Y50jw6)); +assign Y50jw6 = (~(F60jw6 & M60jw6)); +assign F60jw6 = (Tzziw6 ? A70jw6 : T60jw6); +assign A70jw6 = (~(H70jw6 & O70jw6)); +assign H70jw6 = (V70jw6 | C80jw6); +assign C80jw6 = (~(J80jw6 | Q80jw6)); +assign Q80jw6 = (!X80jw6); +assign T60jw6 = (O70jw6 | E90jw6); +assign E90jw6 = (V70jw6 & L90jw6); +assign L90jw6 = (~(X80jw6 & J80jw6)); +assign D50jw6 = (S90jw6 | Z90jw6); +assign Zvziw6 = (Ga0jw6 & Na0jw6); +assign Na0jw6 = (~(Ua0jw6 & Bb0jw6)); +assign Bb0jw6 = (~(Ib0jw6 & Pb0jw6)); +assign Pb0jw6 = (~(Wb0jw6 & Dc0jw6)); +assign Dc0jw6 = (~(Kc0jw6 & Rc0jw6)); +assign Kc0jw6 = (Tzziw6 ? Fd0jw6 : Yc0jw6); +assign Fd0jw6 = (~(Md0jw6 & Td0jw6)); +assign Md0jw6 = (Ae0jw6 | He0jw6); +assign He0jw6 = (~(Oe0jw6 | Ve0jw6)); +assign Ve0jw6 = (!Cf0jw6); +assign Yc0jw6 = (Td0jw6 | Jf0jw6); +assign Jf0jw6 = (Ae0jw6 & Qf0jw6); +assign Qf0jw6 = (~(Cf0jw6 & Oe0jw6)); +assign Ib0jw6 = (Xf0jw6 | Eg0jw6); +assign Ga0jw6 = (~(Lg0jw6 & Sg0jw6)); +assign Lg0jw6 = (~(Zg0jw6 & Gh0jw6)); +assign Zg0jw6 = (Tzziw6 ? Uh0jw6 : Nh0jw6); +assign Uh0jw6 = (~(Bi0jw6 & Ii0jw6)); +assign Bi0jw6 = (Pi0jw6 | Wi0jw6); +assign Wi0jw6 = (Dj0jw6 & Kj0jw6); +assign Nh0jw6 = (Ii0jw6 | Rj0jw6); +assign Rj0jw6 = (Pi0jw6 & Yj0jw6); +assign Yj0jw6 = (Fk0jw6 | Kj0jw6); +assign Eoziw6 = (Mk0jw6 & Tk0jw6); +assign Tk0jw6 = (Al0jw6 & Hl0jw6); +assign Hl0jw6 = (~(Ol0jw6 & Bo3ov6)); +assign Al0jw6 = (~(J73ov6 & Pa3ov6)); +assign Mk0jw6 = (Vl0jw6 & Cm0jw6); +assign Cm0jw6 = (~(Tj3ov6 & C73ov6)); +assign Vl0jw6 = (~(Jm0jw6 & Qm0jw6)); +assign Qnziw6 = (Xm0jw6 & En0jw6); +assign En0jw6 = (Ln0jw6 & Sn0jw6); +assign Sn0jw6 = (Zn0jw6 & Go0jw6); +assign Go0jw6 = (~(L0g7z6[0] & J2ziw6)); +assign Zn0jw6 = (No0jw6 & Uo0jw6); +assign Uo0jw6 = (~(T0ziw6 & Rje7z6[0])); +assign No0jw6 = (Ryfov6 | Bp0jw6); +assign Ln0jw6 = (Ip0jw6 & Pp0jw6); +assign Pp0jw6 = (~(L0g7z6[16] & Q2ziw6)); +assign Ip0jw6 = (~(O1ziw6 & Onf7z6[0])); +assign Xm0jw6 = (Wp0jw6 & Dq0jw6); +assign Dq0jw6 = (Kq0jw6 & Rq0jw6); +assign Rq0jw6 = (~(U4ziw6 & E3c7z6[0])); +assign Kq0jw6 = (~(Z3ziw6 & Fhc7z6[31])); +assign Wp0jw6 = (Dq2ov6 & Yq0jw6); +assign Yq0jw6 = (~(Bnmdt6 & Oztiw6)); +assign Dq2ov6 = (Fr0jw6 & Mr0jw6); +assign Mr0jw6 = (~(Tr0jw6 & As0jw6)); +assign Tr0jw6 = (~(Hs0jw6 | Icziw6)); +assign Hs0jw6 = (!Zannv6); +assign Fr0jw6 = (~(Os0jw6 & Ubziw6)); +assign Os0jw6 = (As0jw6 ^ Zannv6); +assign Zannv6 = (~(Vs0jw6 ^ Mennv6)); +assign Vs0jw6 = (~(Ct0jw6 & Jt0jw6)); +assign Jt0jw6 = (Qt0jw6 & Xt0jw6); +assign Xt0jw6 = (Eu0jw6 & Lu0jw6); +assign Lu0jw6 = (~(Yxf7z6[2] & Su0jw6)); +assign Eu0jw6 = (Zu0jw6 & Gv0jw6); +assign Gv0jw6 = (~(Yxf7z6[0] & Nv0jw6)); +assign Zu0jw6 = (~(Yxf7z6[1] & Uv0jw6)); +assign Qt0jw6 = (Bw0jw6 & Iw0jw6); +assign Iw0jw6 = (~(Yxf7z6[3] & Pw0jw6)); +assign Bw0jw6 = (Ww0jw6 | Dx0jw6); +assign Ct0jw6 = (Kx0jw6 & Rx0jw6); +assign Rx0jw6 = (Yx0jw6 & Fy0jw6); +assign Fy0jw6 = (~(Onf7z6[0] & My0jw6)); +assign Yx0jw6 = (Ty0jw6 & Az0jw6); +assign Az0jw6 = (~(Hz0jw6 & Kxb7z6[0])); +assign Ty0jw6 = (~(Oz0jw6 & E3c7z6[0])); +assign Kx0jw6 = (Vz0jw6 & C01jw6); +assign C01jw6 = (~(Onf7z6[16] & J01jw6)); +assign Vz0jw6 = (~(Alf7z6[0] & Q01jw6)); +assign As0jw6 = (!Lannv6); +assign Lannv6 = (X01jw6 ^ Tennv6); +assign X01jw6 = (~(E11jw6 & L11jw6)); +assign L11jw6 = (~(Kxb7z6[0] & S11jw6)); +assign E11jw6 = (~(Yxf7z6[0] & Gbziw6)); +assign Vmziw6 = (Z11jw6 | G21jw6); +assign Cmz7v6 = (Tbbov6 ? vis_r0_o[30] : Fi4ov6); +assign Vlz7v6 = (Tbbov6 ? vis_r0_o[29] : Slbov6); +assign Slbov6 = (Spyiw6 ? Cv97z6 : Gli7z6[29]); +assign Cv97z6 = (~(N21jw6 & U21jw6)); +assign U21jw6 = (~(Nqyiw6 & Pgxnv6)); +assign N21jw6 = (B31jw6 & I31jw6); +assign I31jw6 = (~(Pdc7z6[29] & Ouyiw6)); +assign B31jw6 = (~(Vuyiw6 & P31jw6)); +assign P31jw6 = (~(W31jw6 & D41jw6)); +assign D41jw6 = (K41jw6 & R41jw6); +assign R41jw6 = (Y41jw6 & F51jw6); +assign F51jw6 = (M51jw6 & T51jw6); +assign T51jw6 = (~(A61jw6 & Uxyiw6)); +assign A61jw6 = (Kxb7z6[29] & H61jw6); +assign M51jw6 = (~(Lt3ov6 & O61jw6)); +assign O61jw6 = (~(V61jw6 & Quziw6)); +assign V61jw6 = (C71jw6 & J71jw6); +assign J71jw6 = (H61jw6 | Ninnv6); +assign H61jw6 = (Q71jw6 | Rje7z6[29]); +assign C71jw6 = (~(Ofnnv6 & Q71jw6)); +assign Y41jw6 = (X71jw6 & E81jw6); +assign E81jw6 = (~(F7ziw6 & Rb3ov6)); +assign X71jw6 = (~(J73ov6 & Nn3ov6)); +assign K41jw6 = (L81jw6 & S81jw6); +assign S81jw6 = (Z81jw6 & G91jw6); +assign G91jw6 = (~(R6ziw6 & Kb3ov6)); +assign Z81jw6 = (~(T0ziw6 & Rje7z6[29])); +assign L81jw6 = (N91jw6 & U91jw6); +assign U91jw6 = (Ryfov6 | Ba1jw6); +assign Ba1jw6 = (!Q71jw6); +assign N91jw6 = (~(L0g7z6[29] & J2ziw6)); +assign W31jw6 = (Ia1jw6 & Pa1jw6); +assign Pa1jw6 = (Wa1jw6 & Db1jw6); +assign Db1jw6 = (Kb1jw6 & Rb1jw6); +assign Rb1jw6 = (~(Cqf7z6[13] & Q2ziw6)); +assign Kb1jw6 = (~(L0g7z6[13] & O1ziw6)); +assign Wa1jw6 = (Yb1jw6 & Fc1jw6); +assign Fc1jw6 = (~(U4ziw6 & V1c7z6[29])); +assign Yb1jw6 = (~(B5ziw6 & S7gdt6)); +assign Ia1jw6 = (Mc1jw6 & Tc1jw6); +assign Tc1jw6 = (Ad1jw6 & Hd1jw6); +assign Hd1jw6 = (~(Z3ziw6 & E3c7z6[2])); +assign Ad1jw6 = (~(Sxkdt6 & Oztiw6)); +assign Mc1jw6 = (Yq2ov6 & T7ziw6); +assign Yq2ov6 = (Od1jw6 & Vd1jw6); +assign Vd1jw6 = (~(Ce1jw6 & Dzmnv6)); +assign Ce1jw6 = (~(Kzmnv6 | Icziw6)); +assign Od1jw6 = (~(Je1jw6 & Ubziw6)); +assign Je1jw6 = (~(Dzmnv6 ^ Kzmnv6)); +assign Kzmnv6 = (Qe1jw6 ^ Mennv6); +assign Qe1jw6 = (~(Xe1jw6 & Ef1jw6)); +assign Ef1jw6 = (Lf1jw6 & Sf1jw6); +assign Sf1jw6 = (Zf1jw6 & Gg1jw6); +assign Gg1jw6 = (~(Su0jw6 & Yxf7z6[31])); +assign Zf1jw6 = (Ng1jw6 & Ug1jw6); +assign Ug1jw6 = (~(Yxf7z6[29] & Nv0jw6)); +assign Ng1jw6 = (~(Yxf7z6[30] & Uv0jw6)); +assign Lf1jw6 = (Bh1jw6 & Ih1jw6); +assign Ih1jw6 = (~(Pw0jw6 & Yxf7z6[32])); +assign Bh1jw6 = (~(Ph1jw6 & Rdziw6)); +assign Xe1jw6 = (Wh1jw6 & Di1jw6); +assign Di1jw6 = (Ki1jw6 & Ri1jw6); +assign Ri1jw6 = (~(Onf7z6[29] & My0jw6)); +assign Ki1jw6 = (Yi1jw6 & Fj1jw6); +assign Fj1jw6 = (~(Hz0jw6 & Kxb7z6[29])); +assign Yi1jw6 = (~(Oz0jw6 & Fhc7z6[29])); +assign Wh1jw6 = (Mj1jw6 & Tj1jw6); +assign Tj1jw6 = (~(Alf7z6[13] & J01jw6)); +assign Mj1jw6 = (~(Alf7z6[29] & Q01jw6)); +assign Dzmnv6 = (~(Ak1jw6 ^ Tennv6)); +assign Ak1jw6 = (~(Hk1jw6 & Ok1jw6)); +assign Ok1jw6 = (~(Yxf7z6[13] & Laziw6)); +assign Hk1jw6 = (Vk1jw6 & Cl1jw6); +assign Cl1jw6 = (~(Yxf7z6[29] & Gbziw6)); +assign Vk1jw6 = (~(Kxb7z6[29] & Nbziw6)); +assign Olz7v6 = (Tbbov6 ? vis_r0_o[28] : C7aov6); +assign Hlz7v6 = (Tbbov6 ? vis_r0_o[27] : S2gov6); +assign Alz7v6 = (Tbbov6 ? vis_r0_o[26] : W7xiw6); +assign Tkz7v6 = (Tbbov6 ? vis_r0_o[25] : R7yiw6); +assign Mkz7v6 = (Tbbov6 ? vis_r0_o[24] : Y7yiw6); +assign Fkz7v6 = (Tbbov6 ? vis_r0_o[23] : F8yiw6); +assign Yjz7v6 = (Tbbov6 ? vis_r0_o[22] : M8yiw6); +assign Rjz7v6 = (Tbbov6 ? vis_r0_o[21] : T8yiw6); +assign Kjz7v6 = (Tbbov6 ? vis_r0_o[20] : A9yiw6); +assign Djz7v6 = (Tbbov6 ? vis_r0_o[19] : H9yiw6); +assign Wiz7v6 = (Tbbov6 ? vis_r0_o[18] : Zqxiw6); +assign Piz7v6 = (Tbbov6 ? vis_r0_o[17] : O9yiw6); +assign Iiz7v6 = (Tbbov6 ? vis_r0_o[16] : V9yiw6); +assign Biz7v6 = (Tbbov6 ? vis_r0_o[15] : Qccov6); +assign Uhz7v6 = (Tbbov6 ? vis_r0_o[14] : Cayiw6); +assign Nhz7v6 = (Tbbov6 ? vis_r0_o[13] : Jayiw6); +assign Ghz7v6 = (Tbbov6 ? vis_r0_o[12] : Qayiw6); +assign Zgz7v6 = (Tbbov6 ? vis_r0_o[11] : Xayiw6); +assign Sgz7v6 = (Tbbov6 ? vis_r0_o[10] : T1yiw6); +assign Lgz7v6 = (Tbbov6 ? vis_r0_o[9] : Lbyiw6); +assign Egz7v6 = (Tbbov6 ? vis_r0_o[8] : W7kov6); +assign Xfz7v6 = (Tbbov6 ? vis_r0_o[7] : Sbyiw6); +assign Qfz7v6 = (Tbbov6 ? vis_r0_o[6] : Zbyiw6); +assign Jfz7v6 = (Tbbov6 ? vis_r0_o[5] : Gcyiw6); +assign Tbbov6 = (!Jl1jw6); +assign Cfz7v6 = (Jl1jw6 ? W6lov6 : vis_r0_o[4]); +assign Vez7v6 = (Jl1jw6 ? Ncyiw6 : vis_r0_o[3]); +assign Oez7v6 = (Jl1jw6 ? Bskov6 : vis_r0_o[2]); +assign Bskov6 = (Spyiw6 ? As97z6 : Gli7z6[2]); +assign As97z6 = (~(Ql1jw6 & Xl1jw6)); +assign Xl1jw6 = (~(Nqyiw6 & Qo0ov6)); +assign Ql1jw6 = (Em1jw6 & Lm1jw6); +assign Lm1jw6 = (~(Pdc7z6[2] & Ouyiw6)); +assign Em1jw6 = (~(Vuyiw6 & Sm1jw6)); +assign Sm1jw6 = (~(Zm1jw6 & Gn1jw6)); +assign Gn1jw6 = (Nn1jw6 & Un1jw6); +assign Un1jw6 = (Bo1jw6 & Io1jw6); +assign Io1jw6 = (Po1jw6 & Wo1jw6); +assign Wo1jw6 = (~(Dp1jw6 & Kp1jw6)); +assign Dp1jw6 = (~(Quziw6 & Rp1jw6)); +assign Rp1jw6 = (~(Yp1jw6 & Fq1jw6)); +assign Yp1jw6 = (~(Ninnv6 | Rje7z6[2])); +assign Po1jw6 = (~(Rje7z6[2] & Mq1jw6)); +assign Mq1jw6 = (T0ziw6 | Tq1jw6); +assign Tq1jw6 = (Uxyiw6 & Kxb7z6[2]); +assign Bo1jw6 = (Ar1jw6 & Hr1jw6); +assign Hr1jw6 = (~(Or1jw6 & Vr1jw6)); +assign Or1jw6 = (~(Cs1jw6 & Js1jw6)); +assign Js1jw6 = (~(Uxyiw6 & Kxb7z6[2])); +assign Cs1jw6 = (Qs1jw6 & Ryfov6); +assign Qs1jw6 = (~(Ofnnv6 & Kp1jw6)); +assign Ar1jw6 = (~(Svziw6 & Dknnv6)); +assign Dknnv6 = (~(Xs1jw6 & Et1jw6)); +assign Et1jw6 = (Lt1jw6 & St1jw6); +assign St1jw6 = (~(Zt1jw6 & Gu1jw6)); +assign Zt1jw6 = (Nu1jw6 & I40jw6); +assign Lt1jw6 = (~(P40jw6 & Uu1jw6)); +assign Xs1jw6 = (Bv1jw6 & Iv1jw6); +assign Iv1jw6 = (~(Bxziw6 & Pv1jw6)); +assign Bv1jw6 = (~(Ua0jw6 & Wv1jw6)); +assign Nn1jw6 = (Dw1jw6 & Kw1jw6); +assign Kw1jw6 = (Rw1jw6 & Yw1jw6); +assign Yw1jw6 = (~(Hk3ov6 & C73ov6)); +assign Rw1jw6 = (~(Ol0jw6 & Un3ov6)); +assign Dw1jw6 = (Fx1jw6 & Mx1jw6); +assign Mx1jw6 = (~(Jm0jw6 & Tx1jw6)); +assign Fx1jw6 = (~(J73ov6 & Db3ov6)); +assign Zm1jw6 = (Ay1jw6 & Hy1jw6); +assign Hy1jw6 = (Oy1jw6 & Vy1jw6); +assign Vy1jw6 = (Cz1jw6 & Jz1jw6); +assign Jz1jw6 = (~(L0g7z6[2] & J2ziw6)); +assign Cz1jw6 = (~(L0g7z6[18] & Q2ziw6)); +assign Oy1jw6 = (Qz1jw6 & Xz1jw6); +assign Xz1jw6 = (~(O1ziw6 & Onf7z6[2])); +assign Qz1jw6 = (~(U4ziw6 & E3c7z6[2])); +assign Ay1jw6 = (E02jw6 & Rq2ov6); +assign Rq2ov6 = (L02jw6 & S02jw6); +assign S02jw6 = (~(Z02jw6 & Pymnv6)); +assign Z02jw6 = (~(Wymnv6 | Icziw6)); +assign L02jw6 = (~(G12jw6 & Ubziw6)); +assign G12jw6 = (~(Pymnv6 ^ Wymnv6)); +assign Wymnv6 = (N12jw6 ^ Mennv6); +assign N12jw6 = (~(U12jw6 & B22jw6)); +assign B22jw6 = (I22jw6 & P22jw6); +assign P22jw6 = (W22jw6 & D32jw6); +assign D32jw6 = (~(Yxf7z6[4] & Su0jw6)); +assign W22jw6 = (K32jw6 & R32jw6); +assign R32jw6 = (~(Yxf7z6[2] & Nv0jw6)); +assign K32jw6 = (~(Yxf7z6[3] & Uv0jw6)); +assign I22jw6 = (Y32jw6 & F42jw6); +assign F42jw6 = (~(Yxf7z6[5] & Pw0jw6)); +assign Y32jw6 = (M42jw6 | Dx0jw6); +assign U12jw6 = (T42jw6 & A52jw6); +assign A52jw6 = (H52jw6 & O52jw6); +assign O52jw6 = (~(Onf7z6[2] & My0jw6)); +assign H52jw6 = (V52jw6 & C62jw6); +assign C62jw6 = (~(Hz0jw6 & Kxb7z6[2])); +assign V52jw6 = (~(Oz0jw6 & E3c7z6[2])); +assign T42jw6 = (J62jw6 & Q62jw6); +assign Q62jw6 = (~(Onf7z6[18] & J01jw6)); +assign J62jw6 = (~(Alf7z6[2] & Q01jw6)); +assign Pymnv6 = (~(X62jw6 ^ Tennv6)); +assign X62jw6 = (~(E72jw6 & L72jw6)); +assign L72jw6 = (~(Yxf7z6[2] & Gbziw6)); +assign E72jw6 = (~(Kxb7z6[2] & Nbziw6)); +assign E02jw6 = (S72jw6 & Z72jw6); +assign Z72jw6 = (~(Z3ziw6 & Fhc7z6[29])); +assign S72jw6 = (~(Vimdt6 & Oztiw6)); +assign Hez7v6 = (Jl1jw6 ? Nv9ov6 : vis_r0_o[1]); +assign Jl1jw6 = (~(Vnyiw6 | Xhyiw6)); +assign Xhyiw6 = (Fmyiw6 | Ylyiw6); +assign Vnyiw6 = (!Rlyiw6); +assign Rlyiw6 = (G82jw6 & Liyiw6); +assign G82jw6 = (Mlziw6 & Bkyiw6); +assign Nv9ov6 = (Spyiw6 ? N82jw6 : Gli7z6[1]); +assign N82jw6 = (Amziw6 & Mu97z6); +assign Mu97z6 = (~(U82jw6 & B92jw6)); +assign B92jw6 = (Z11jw6 | Kdmhw6); +assign U82jw6 = (I92jw6 & P92jw6); +assign P92jw6 = (~(Pdc7z6[1] & Ouyiw6)); +assign I92jw6 = (~(Vuyiw6 & W92jw6)); +assign W92jw6 = (~(Da2jw6 & Ka2jw6)); +assign Ka2jw6 = (Ra2jw6 & Ya2jw6); +assign Ya2jw6 = (Fb2jw6 & Mb2jw6); +assign Mb2jw6 = (Tb2jw6 & Ac2jw6); +assign Ac2jw6 = (~(Hc2jw6 & Jm0jw6)); +assign Hc2jw6 = (Nob7z6[1] & Rslov6); +assign Tb2jw6 = (Oc2jw6 & Vc2jw6); +assign Vc2jw6 = (~(Cd2jw6 & Uxyiw6)); +assign Cd2jw6 = (Kxb7z6[1] & Jd2jw6); +assign Oc2jw6 = (~(Qd2jw6 & C1gov6)); +assign Qd2jw6 = (Bqziw6 & Jjbdt6); +assign Fb2jw6 = (Xd2jw6 & Ee2jw6); +assign Ee2jw6 = (~(Le2jw6 & Se2jw6)); +assign Le2jw6 = (~(Ze2jw6 & Quziw6)); +assign Ze2jw6 = (Gf2jw6 & Nf2jw6); +assign Nf2jw6 = (Jd2jw6 | Ninnv6); +assign Jd2jw6 = (Uf2jw6 | Rje7z6[1]); +assign Gf2jw6 = (~(Ofnnv6 & Uf2jw6)); +assign Xd2jw6 = (~(Ol0jw6 & Io3ov6)); +assign Ra2jw6 = (Bg2jw6 & Ig2jw6); +assign Ig2jw6 = (Pg2jw6 & Wg2jw6); +assign Wg2jw6 = (Lf3ov6 | U93ov6); +assign Pg2jw6 = (~(Ak3ov6 & C73ov6)); +assign Bg2jw6 = (Dh2jw6 & Kh2jw6); +assign Kh2jw6 = (~(T0ziw6 & Rje7z6[1])); +assign Dh2jw6 = (Ryfov6 | Rh2jw6); +assign Da2jw6 = (Yh2jw6 & Fi2jw6); +assign Fi2jw6 = (Mi2jw6 & Ti2jw6); +assign Ti2jw6 = (Aj2jw6 & Hj2jw6); +assign Hj2jw6 = (~(L0g7z6[1] & J2ziw6)); +assign Aj2jw6 = (~(L0g7z6[17] & Q2ziw6)); +assign Mi2jw6 = (Oj2jw6 & Vj2jw6); +assign Vj2jw6 = (~(O1ziw6 & Onf7z6[1])); +assign Oj2jw6 = (~(U4ziw6 & E3c7z6[1])); +assign Yh2jw6 = (Ck2jw6 & Jk2jw6); +assign Jk2jw6 = (Qk2jw6 & Xk2jw6); +assign Xk2jw6 = (~(Z3ziw6 & Fhc7z6[30])); +assign Qk2jw6 = (~(Svziw6 & Kknnv6)); +assign Ck2jw6 = (As2ov6 & El2jw6); +assign El2jw6 = (~(Ykmdt6 & Oztiw6)); +assign As2ov6 = (Ll2jw6 & Sl2jw6); +assign Sl2jw6 = (~(Zl2jw6 & N4nnv6)); +assign Zl2jw6 = (~(U4nnv6 | Icziw6)); +assign Ll2jw6 = (~(Gm2jw6 & Ubziw6)); +assign Gm2jw6 = (~(N4nnv6 ^ U4nnv6)); +assign U4nnv6 = (Nm2jw6 ^ Mennv6); +assign Nm2jw6 = (~(Um2jw6 & Bn2jw6)); +assign Bn2jw6 = (In2jw6 & Pn2jw6); +assign Pn2jw6 = (Wn2jw6 & Do2jw6); +assign Do2jw6 = (~(Yxf7z6[3] & Su0jw6)); +assign Wn2jw6 = (Ko2jw6 & Ro2jw6); +assign Ro2jw6 = (~(Yxf7z6[1] & Nv0jw6)); +assign Ko2jw6 = (~(Yxf7z6[2] & Uv0jw6)); +assign In2jw6 = (Yo2jw6 & Fp2jw6); +assign Fp2jw6 = (~(Yxf7z6[4] & Pw0jw6)); +assign Yo2jw6 = (Mp2jw6 | Dx0jw6); +assign Um2jw6 = (Tp2jw6 & Aq2jw6); +assign Aq2jw6 = (Hq2jw6 & Oq2jw6); +assign Oq2jw6 = (~(Onf7z6[1] & My0jw6)); +assign Hq2jw6 = (Vq2jw6 & Cr2jw6); +assign Cr2jw6 = (~(Hz0jw6 & Kxb7z6[1])); +assign Vq2jw6 = (~(Oz0jw6 & E3c7z6[1])); +assign Tp2jw6 = (Jr2jw6 & Qr2jw6); +assign Qr2jw6 = (~(Onf7z6[17] & J01jw6)); +assign Jr2jw6 = (~(Alf7z6[1] & Q01jw6)); +assign N4nnv6 = (~(Xr2jw6 ^ Tennv6)); +assign Xr2jw6 = (~(Es2jw6 & Ls2jw6)); +assign Ls2jw6 = (~(Kxb7z6[1] & S11jw6)); +assign S11jw6 = (~(Ss2jw6 & Zs2jw6)); +assign Ss2jw6 = (Dx0jw6 | Usbdt6); +assign Es2jw6 = (~(Yxf7z6[1] & Gbziw6)); +assign Amziw6 = (!Gt2jw6); +assign Aez7v6 = (Ut2jw6 ? A4a7z6 : Nt2jw6); +assign Nt2jw6 = (Pkbet6 | C3yiw6); +assign Tdz7v6 = (~(Bu2jw6 & Iu2jw6)); +assign Iu2jw6 = (~(Eji7z6[1] & C3yiw6)); +assign Bu2jw6 = (Pu2jw6 & Wu2jw6); +assign Wu2jw6 = (~(Bhi7z6[1] & X3yiw6)); +assign Pu2jw6 = (~(E4yiw6 & vis_pc_o[1])); +assign Mdz7v6 = (~(Dv2jw6 & Kv2jw6)); +assign Kv2jw6 = (~(Eji7z6[3] & C3yiw6)); +assign Dv2jw6 = (Rv2jw6 & Yv2jw6); +assign Yv2jw6 = (~(Bhi7z6[3] & X3yiw6)); +assign Rv2jw6 = (~(E4yiw6 & vis_pc_o[3])); +assign Fdz7v6 = (~(Fw2jw6 & Mw2jw6)); +assign Mw2jw6 = (~(Eji7z6[4] & C3yiw6)); +assign Fw2jw6 = (Tw2jw6 & Ax2jw6); +assign Ax2jw6 = (~(Bhi7z6[4] & X3yiw6)); +assign Tw2jw6 = (~(E4yiw6 & vis_pc_o[4])); +assign Ycz7v6 = (~(Hx2jw6 & Ox2jw6)); +assign Ox2jw6 = (Vx2jw6 & Cy2jw6); +assign Cy2jw6 = (Eu9ov6 | Jy2jw6); +assign Vx2jw6 = (Qy2jw6 & Xy2jw6); +assign Xy2jw6 = (~(Gv9ov6 & W6lov6)); +assign W6lov6 = (Spyiw6 ? Iw97z6 : Gli7z6[4]); +assign Qy2jw6 = (~(Uv9ov6 & Iw97z6)); +assign Iw97z6 = (~(Ez2jw6 & Lz2jw6)); +assign Lz2jw6 = (~(Nqyiw6 & Og0ov6)); +assign Ez2jw6 = (Sz2jw6 & Zz2jw6); +assign Zz2jw6 = (~(Pdc7z6[4] & Ouyiw6)); +assign Sz2jw6 = (~(Vuyiw6 & G03jw6)); +assign G03jw6 = (~(N03jw6 & U03jw6)); +assign U03jw6 = (B13jw6 & I13jw6); +assign I13jw6 = (P13jw6 & W13jw6); +assign W13jw6 = (D23jw6 & K23jw6); +assign K23jw6 = (~(R23jw6 & Uxyiw6)); +assign R23jw6 = (Kxb7z6[4] & Y23jw6); +assign D23jw6 = (~(F33jw6 & Jm0jw6)); +assign F33jw6 = (Nob7z6[4] & Rslov6); +assign P13jw6 = (M33jw6 & T33jw6); +assign T33jw6 = (~(Et3ov6 & A43jw6)); +assign A43jw6 = (~(H43jw6 & Quziw6)); +assign H43jw6 = (O43jw6 & V43jw6); +assign V43jw6 = (Y23jw6 | Ninnv6); +assign Y23jw6 = (C53jw6 | Rje7z6[4]); +assign O43jw6 = (~(Ofnnv6 & C53jw6)); +assign M33jw6 = (~(Svziw6 & Pjnnv6)); +assign Pjnnv6 = (Bxziw6 | P40jw6); +assign B13jw6 = (J53jw6 & Q53jw6); +assign Q53jw6 = (X53jw6 & E63jw6); +assign E63jw6 = (~(Ol0jw6 & Em3ov6)); +assign X53jw6 = (~(Ki3ov6 & C73ov6)); +assign J53jw6 = (L63jw6 & S63jw6); +assign S63jw6 = (~(J73ov6 & Xe3ov6)); +assign L63jw6 = (~(T0ziw6 & Rje7z6[4])); +assign N03jw6 = (Z63jw6 & G73jw6); +assign G73jw6 = (N73jw6 & U73jw6); +assign U73jw6 = (B83jw6 & I83jw6); +assign I83jw6 = (Ryfov6 | P83jw6); +assign B83jw6 = (~(L0g7z6[4] & J2ziw6)); +assign N73jw6 = (W83jw6 & D93jw6); +assign D93jw6 = (~(L0g7z6[20] & Q2ziw6)); +assign W83jw6 = (~(O1ziw6 & Onf7z6[4])); +assign Z63jw6 = (K93jw6 & R93jw6); +assign R93jw6 = (Y93jw6 & Fa3jw6); +assign Fa3jw6 = (~(U4ziw6 & E3c7z6[4])); +assign Y93jw6 = (~(Z3ziw6 & Fhc7z6[27])); +assign K93jw6 = (Tr2ov6 & Ma3jw6); +assign Ma3jw6 = (~(Pemdt6 & Oztiw6)); +assign Tr2ov6 = (Ta3jw6 & Ab3jw6); +assign Ab3jw6 = (~(Hb3jw6 & Zwmnv6)); +assign Hb3jw6 = (~(Gxmnv6 | Icziw6)); +assign Ta3jw6 = (~(Ob3jw6 & Ubziw6)); +assign Ob3jw6 = (~(Zwmnv6 ^ Gxmnv6)); +assign Gxmnv6 = (Vb3jw6 ^ Mennv6); +assign Vb3jw6 = (~(Cc3jw6 & Jc3jw6)); +assign Jc3jw6 = (Qc3jw6 & Xc3jw6); +assign Xc3jw6 = (Ed3jw6 & Ld3jw6); +assign Ld3jw6 = (~(Yxf7z6[6] & Su0jw6)); +assign Ed3jw6 = (Sd3jw6 & Zd3jw6); +assign Zd3jw6 = (~(Yxf7z6[4] & Nv0jw6)); +assign Sd3jw6 = (~(Yxf7z6[5] & Uv0jw6)); +assign Qc3jw6 = (Ge3jw6 & Ne3jw6); +assign Ne3jw6 = (~(Yxf7z6[7] & Pw0jw6)); +assign Ge3jw6 = (~(Ue3jw6 & Rdziw6)); +assign Cc3jw6 = (Bf3jw6 & If3jw6); +assign If3jw6 = (Pf3jw6 & Wf3jw6); +assign Wf3jw6 = (~(Onf7z6[4] & My0jw6)); +assign Pf3jw6 = (Dg3jw6 & Kg3jw6); +assign Kg3jw6 = (~(Hz0jw6 & Kxb7z6[4])); +assign Dg3jw6 = (~(Oz0jw6 & E3c7z6[4])); +assign Bf3jw6 = (Rg3jw6 & Yg3jw6); +assign Yg3jw6 = (~(Onf7z6[20] & J01jw6)); +assign Rg3jw6 = (~(Alf7z6[4] & Q01jw6)); +assign Zwmnv6 = (~(Fh3jw6 ^ Tennv6)); +assign Fh3jw6 = (~(Mh3jw6 & Th3jw6)); +assign Th3jw6 = (~(Yxf7z6[4] & Gbziw6)); +assign Mh3jw6 = (~(Kxb7z6[4] & Nbziw6)); +assign Hx2jw6 = (Ai3jw6 & Hi3jw6); +assign Hi3jw6 = (~(Pw9ov6 & Kxb7z6[4])); +assign Ai3jw6 = (Oi3jw6 & Vi3jw6); +assign Vi3jw6 = (~(Kx9ov6 & vis_pc_o[4])); +assign Oi3jw6 = (~(Gli7z6[4] & Rx9ov6)); +assign Rcz7v6 = (~(Cj3jw6 & Jj3jw6)); +assign Jj3jw6 = (~(Eji7z6[5] & C3yiw6)); +assign Cj3jw6 = (Qj3jw6 & Xj3jw6); +assign Xj3jw6 = (~(Bhi7z6[5] & X3yiw6)); +assign Qj3jw6 = (~(E4yiw6 & vis_pc_o[5])); +assign Kcz7v6 = (~(Ek3jw6 & Lk3jw6)); +assign Lk3jw6 = (~(Eji7z6[6] & C3yiw6)); +assign Ek3jw6 = (Sk3jw6 & Zk3jw6); +assign Zk3jw6 = (~(Bhi7z6[6] & X3yiw6)); +assign Sk3jw6 = (~(E4yiw6 & vis_pc_o[6])); +assign Dcz7v6 = (~(Gl3jw6 & Nl3jw6)); +assign Nl3jw6 = (~(Eji7z6[7] & C3yiw6)); +assign Gl3jw6 = (Ul3jw6 & Bm3jw6); +assign Bm3jw6 = (~(Bhi7z6[7] & X3yiw6)); +assign Ul3jw6 = (~(E4yiw6 & vis_pc_o[7])); +assign Wbz7v6 = (~(Im3jw6 & Pm3jw6)); +assign Pm3jw6 = (~(Eji7z6[8] & C3yiw6)); +assign Im3jw6 = (Wm3jw6 & Dn3jw6); +assign Dn3jw6 = (~(Bhi7z6[8] & X3yiw6)); +assign Wm3jw6 = (~(E4yiw6 & vis_pc_o[8])); +assign Pbz7v6 = (~(Kn3jw6 & Rn3jw6)); +assign Rn3jw6 = (Yn3jw6 & Fo3jw6); +assign Fo3jw6 = (Eu9ov6 | Mo3jw6); +assign Yn3jw6 = (To3jw6 & Ap3jw6); +assign Ap3jw6 = (~(Gv9ov6 & W7kov6)); +assign W7kov6 = (Spyiw6 ? Aw97z6 : Gli7z6[8]); +assign To3jw6 = (~(Uv9ov6 & Aw97z6)); +assign Aw97z6 = (~(Hp3jw6 & Op3jw6)); +assign Op3jw6 = (~(Nqyiw6 & K00ov6)); +assign Hp3jw6 = (Vp3jw6 & Cq3jw6); +assign Cq3jw6 = (~(Pdc7z6[8] & Ouyiw6)); +assign Vp3jw6 = (~(Vuyiw6 & Jq3jw6)); +assign Jq3jw6 = (~(Qq3jw6 & Xq3jw6)); +assign Xq3jw6 = (Er3jw6 & Lr3jw6); +assign Lr3jw6 = (Sr3jw6 & Zr3jw6); +assign Zr3jw6 = (Gs3jw6 & Ns3jw6); +assign Gs3jw6 = (~(Us3jw6 & Uxyiw6)); +assign Us3jw6 = (Kxb7z6[8] & Bt3jw6); +assign Sr3jw6 = (It3jw6 & Pt3jw6); +assign Pt3jw6 = (~(Wt3jw6 & Jm0jw6)); +assign Wt3jw6 = (Nob7z6[8] & Rslov6); +assign It3jw6 = (~(Du3jw6 & Ku3jw6)); +assign Du3jw6 = (~(Ru3jw6 & Quziw6)); +assign Ru3jw6 = (Yu3jw6 & Fv3jw6); +assign Fv3jw6 = (Bt3jw6 | Ninnv6); +assign Bt3jw6 = (Mv3jw6 | Rje7z6[8]); +assign Yu3jw6 = (~(Ofnnv6 & Mv3jw6)); +assign Er3jw6 = (Tv3jw6 & Aw3jw6); +assign Aw3jw6 = (Hw3jw6 & Ow3jw6); +assign Ow3jw6 = (~(Bo3ov6 & C73ov6)); +assign Hw3jw6 = (~(Tj3ov6 & Ug3ov6)); +assign Tv3jw6 = (Vw3jw6 & Cx3jw6); +assign Cx3jw6 = (Lf3ov6 | Ba3ov6); +assign Vw3jw6 = (~(T0ziw6 & Rje7z6[8])); +assign Qq3jw6 = (Jx3jw6 & Qx3jw6); +assign Qx3jw6 = (Xx3jw6 & Ey3jw6); +assign Ey3jw6 = (Ly3jw6 & Sy3jw6); +assign Sy3jw6 = (Ryfov6 | Zy3jw6); +assign Ly3jw6 = (~(L0g7z6[8] & J2ziw6)); +assign Xx3jw6 = (Gz3jw6 & Nz3jw6); +assign Nz3jw6 = (~(L0g7z6[24] & Q2ziw6)); +assign Gz3jw6 = (~(O1ziw6 & Onf7z6[8])); +assign Jx3jw6 = (Uz3jw6 & B04jw6); +assign B04jw6 = (I04jw6 & P04jw6); +assign P04jw6 = (~(U4ziw6 & Fhc7z6[8])); +assign I04jw6 = (~(Z3ziw6 & Fhc7z6[23])); +assign Uz3jw6 = (Os2ov6 & W04jw6); +assign W04jw6 = (~(D6mdt6 & Oztiw6)); +assign Os2ov6 = (D14jw6 & K14jw6); +assign K14jw6 = (~(R14jw6 & Vumnv6)); +assign R14jw6 = (~(Cvmnv6 | Icziw6)); +assign D14jw6 = (~(Y14jw6 & Ubziw6)); +assign Y14jw6 = (~(Vumnv6 ^ Cvmnv6)); +assign Cvmnv6 = (F24jw6 ^ Mennv6); +assign F24jw6 = (~(M24jw6 & T24jw6)); +assign T24jw6 = (A34jw6 & H34jw6); +assign H34jw6 = (O34jw6 & V34jw6); +assign V34jw6 = (~(Yxf7z6[10] & Su0jw6)); +assign O34jw6 = (C44jw6 & J44jw6); +assign J44jw6 = (~(Yxf7z6[8] & Nv0jw6)); +assign C44jw6 = (~(Yxf7z6[9] & Uv0jw6)); +assign A34jw6 = (Q44jw6 & X44jw6); +assign X44jw6 = (~(Yxf7z6[11] & Pw0jw6)); +assign Q44jw6 = (E54jw6 | Dx0jw6); +assign M24jw6 = (L54jw6 & S54jw6); +assign S54jw6 = (Z54jw6 & G64jw6); +assign G64jw6 = (~(Onf7z6[8] & My0jw6)); +assign Z54jw6 = (N64jw6 & U64jw6); +assign U64jw6 = (~(Hz0jw6 & Kxb7z6[8])); +assign N64jw6 = (~(Oz0jw6 & Fhc7z6[8])); +assign L54jw6 = (B74jw6 & I74jw6); +assign I74jw6 = (~(Onf7z6[24] & J01jw6)); +assign B74jw6 = (~(Alf7z6[8] & Q01jw6)); +assign Vumnv6 = (~(P74jw6 ^ Tennv6)); +assign P74jw6 = (~(W74jw6 & D84jw6)); +assign D84jw6 = (~(Yxf7z6[8] & Gbziw6)); +assign W74jw6 = (~(Kxb7z6[8] & Nbziw6)); +assign Kn3jw6 = (K84jw6 & R84jw6); +assign R84jw6 = (~(Pw9ov6 & Kxb7z6[8])); +assign K84jw6 = (Y84jw6 & F94jw6); +assign F94jw6 = (~(Kx9ov6 & vis_pc_o[8])); +assign Y84jw6 = (~(Gli7z6[8] & Rx9ov6)); +assign Ibz7v6 = (~(M94jw6 & T94jw6)); +assign T94jw6 = (~(Eji7z6[9] & C3yiw6)); +assign M94jw6 = (Aa4jw6 & Ha4jw6); +assign Ha4jw6 = (~(Bhi7z6[9] & X3yiw6)); +assign Aa4jw6 = (~(E4yiw6 & vis_pc_o[9])); +assign Bbz7v6 = (~(Oa4jw6 & Va4jw6)); +assign Va4jw6 = (~(Eji7z6[10] & C3yiw6)); +assign Oa4jw6 = (Cb4jw6 & Jb4jw6); +assign Jb4jw6 = (~(Bhi7z6[10] & X3yiw6)); +assign Cb4jw6 = (~(E4yiw6 & vis_pc_o[10])); +assign Uaz7v6 = (~(Qb4jw6 & Xb4jw6)); +assign Xb4jw6 = (Ec4jw6 & Lc4jw6); +assign Lc4jw6 = (Eu9ov6 | Sc4jw6); +assign Ec4jw6 = (Zc4jw6 & Gd4jw6); +assign Gd4jw6 = (~(Gv9ov6 & T1yiw6)); +assign T1yiw6 = (Gninv6 ? Gli7z6[10] : Gx97z6); +assign Zc4jw6 = (~(Uv9ov6 & Gx97z6)); +assign Gx97z6 = (~(Nd4jw6 & Ud4jw6)); +assign Ud4jw6 = (~(Nqyiw6 & Isznv6)); +assign Nd4jw6 = (Be4jw6 & Ie4jw6); +assign Ie4jw6 = (~(Pdc7z6[10] & Ouyiw6)); +assign Be4jw6 = (~(Vuyiw6 & Pe4jw6)); +assign Pe4jw6 = (~(We4jw6 & Df4jw6)); +assign Df4jw6 = (Kf4jw6 & Rf4jw6); +assign Rf4jw6 = (Yf4jw6 & Fg4jw6); +assign Fg4jw6 = (Mg4jw6 & Ns3jw6); +assign Mg4jw6 = (~(Tg4jw6 & Uxyiw6)); +assign Tg4jw6 = (Kxb7z6[10] & Ah4jw6); +assign Yf4jw6 = (Hh4jw6 & Oh4jw6); +assign Oh4jw6 = (~(Vh4jw6 & Ci4jw6)); +assign Vh4jw6 = (~(Ji4jw6 & Quziw6)); +assign Ji4jw6 = (Qi4jw6 & Xi4jw6); +assign Xi4jw6 = (Ah4jw6 | Ninnv6); +assign Ah4jw6 = (Ej4jw6 | Rje7z6[10]); +assign Qi4jw6 = (~(Ofnnv6 & Ej4jw6)); +assign Hh4jw6 = (~(Hk3ov6 & Ug3ov6)); +assign Kf4jw6 = (Lj4jw6 & Sj4jw6); +assign Sj4jw6 = (Zj4jw6 & Gk4jw6); +assign Gk4jw6 = (~(Un3ov6 & C73ov6)); +assign Zj4jw6 = (~(J73ov6 & Vd3ov6)); +assign Lj4jw6 = (Nk4jw6 & Uk4jw6); +assign Uk4jw6 = (~(T0ziw6 & Rje7z6[10])); +assign Nk4jw6 = (Ryfov6 | Bl4jw6); +assign We4jw6 = (Il4jw6 & Pl4jw6); +assign Pl4jw6 = (Wl4jw6 & Dm4jw6); +assign Dm4jw6 = (Km4jw6 & Rm4jw6); +assign Rm4jw6 = (~(L0g7z6[10] & J2ziw6)); +assign Km4jw6 = (~(L0g7z6[26] & Q2ziw6)); +assign Wl4jw6 = (Ym4jw6 & Fn4jw6); +assign Fn4jw6 = (~(O1ziw6 & Onf7z6[10])); +assign Ym4jw6 = (~(U4ziw6 & Fhc7z6[10])); +assign Il4jw6 = (Mn4jw6 & Hs2ov6); +assign Hs2ov6 = (Tn4jw6 & Ao4jw6); +assign Ao4jw6 = (~(Ho4jw6 & X9nnv6)); +assign Ho4jw6 = (~(Eannv6 | Icziw6)); +assign Tn4jw6 = (~(Oo4jw6 & Ubziw6)); +assign Oo4jw6 = (~(X9nnv6 ^ Eannv6)); +assign Eannv6 = (Vo4jw6 ^ Mennv6); +assign Vo4jw6 = (~(Cp4jw6 & Jp4jw6)); +assign Jp4jw6 = (Qp4jw6 & Xp4jw6); +assign Xp4jw6 = (Eq4jw6 & Lq4jw6); +assign Lq4jw6 = (~(Yxf7z6[12] & Su0jw6)); +assign Eq4jw6 = (Sq4jw6 & Zq4jw6); +assign Zq4jw6 = (~(Yxf7z6[10] & Nv0jw6)); +assign Sq4jw6 = (~(Yxf7z6[11] & Uv0jw6)); +assign Qp4jw6 = (Gr4jw6 & Nr4jw6); +assign Nr4jw6 = (~(Yxf7z6[13] & Pw0jw6)); +assign Gr4jw6 = (Ur4jw6 | Dx0jw6); +assign Cp4jw6 = (Bs4jw6 & Is4jw6); +assign Is4jw6 = (Ps4jw6 & Ws4jw6); +assign Ws4jw6 = (~(Onf7z6[10] & My0jw6)); +assign Ps4jw6 = (Dt4jw6 & Kt4jw6); +assign Kt4jw6 = (~(Hz0jw6 & Kxb7z6[10])); +assign Dt4jw6 = (~(Oz0jw6 & Fhc7z6[10])); +assign Bs4jw6 = (Rt4jw6 & Yt4jw6); +assign Yt4jw6 = (~(Onf7z6[26] & J01jw6)); +assign Rt4jw6 = (~(Alf7z6[10] & Q01jw6)); +assign X9nnv6 = (~(Fu4jw6 ^ Tennv6)); +assign Fu4jw6 = (~(Mu4jw6 & Tu4jw6)); +assign Tu4jw6 = (~(Yxf7z6[10] & Gbziw6)); +assign Mu4jw6 = (~(Kxb7z6[10] & Nbziw6)); +assign Mn4jw6 = (Av4jw6 & Hv4jw6); +assign Hv4jw6 = (~(Z3ziw6 & Fhc7z6[21])); +assign Av4jw6 = (~(X1mdt6 & Oztiw6)); +assign Qb4jw6 = (Ov4jw6 & Vv4jw6); +assign Vv4jw6 = (~(Pw9ov6 & Kxb7z6[10])); +assign Ov4jw6 = (Cw4jw6 & Jw4jw6); +assign Jw4jw6 = (~(Kx9ov6 & vis_pc_o[10])); +assign Cw4jw6 = (~(Gli7z6[10] & Rx9ov6)); +assign Naz7v6 = (~(Qw4jw6 & Xw4jw6)); +assign Xw4jw6 = (~(Eji7z6[11] & C3yiw6)); +assign Qw4jw6 = (Ex4jw6 & Lx4jw6); +assign Lx4jw6 = (~(Bhi7z6[11] & X3yiw6)); +assign Ex4jw6 = (~(E4yiw6 & vis_pc_o[11])); +assign Gaz7v6 = (~(Sx4jw6 & Zx4jw6)); +assign Zx4jw6 = (~(Eji7z6[12] & C3yiw6)); +assign Sx4jw6 = (Gy4jw6 & Ny4jw6); +assign Ny4jw6 = (~(Bhi7z6[12] & X3yiw6)); +assign Gy4jw6 = (~(E4yiw6 & vis_pc_o[12])); +assign Z9z7v6 = (~(Uy4jw6 & Bz4jw6)); +assign Bz4jw6 = (~(Eji7z6[13] & C3yiw6)); +assign Uy4jw6 = (Iz4jw6 & Pz4jw6); +assign Pz4jw6 = (~(Bhi7z6[13] & X3yiw6)); +assign Iz4jw6 = (~(E4yiw6 & vis_pc_o[13])); +assign S9z7v6 = (~(Wz4jw6 & D05jw6)); +assign D05jw6 = (~(Eji7z6[14] & C3yiw6)); +assign Wz4jw6 = (K05jw6 & R05jw6); +assign R05jw6 = (~(Bhi7z6[14] & X3yiw6)); +assign K05jw6 = (~(E4yiw6 & vis_pc_o[14])); +assign L9z7v6 = (~(Y05jw6 & F15jw6)); +assign F15jw6 = (~(Eji7z6[15] & C3yiw6)); +assign Y05jw6 = (M15jw6 & T15jw6); +assign T15jw6 = (~(Bhi7z6[15] & X3yiw6)); +assign M15jw6 = (~(E4yiw6 & vis_pc_o[15])); +assign E9z7v6 = (~(A25jw6 & H25jw6)); +assign H25jw6 = (O25jw6 & V25jw6); +assign V25jw6 = (Eu9ov6 | C35jw6); +assign O25jw6 = (J35jw6 & Q35jw6); +assign Q35jw6 = (~(Gv9ov6 & Qccov6)); +assign Qccov6 = (Spyiw6 ? Kv97z6 : Gli7z6[15]); +assign J35jw6 = (~(Uv9ov6 & Kv97z6)); +assign Kv97z6 = (~(X35jw6 & E45jw6)); +assign E45jw6 = (~(Nqyiw6 & D8znv6)); +assign X35jw6 = (L45jw6 & S45jw6); +assign S45jw6 = (~(Pdc7z6[15] & Ouyiw6)); +assign L45jw6 = (~(Vuyiw6 & Z45jw6)); +assign Z45jw6 = (~(G55jw6 & N55jw6)); +assign N55jw6 = (U55jw6 & B65jw6); +assign B65jw6 = (I65jw6 & P65jw6); +assign P65jw6 = (W65jw6 & Ns3jw6); +assign W65jw6 = (~(D75jw6 & Uxyiw6)); +assign D75jw6 = (Kxb7z6[15] & K75jw6); +assign I65jw6 = (R75jw6 & Y75jw6); +assign Y75jw6 = (~(F85jw6 & M85jw6)); +assign F85jw6 = (~(T85jw6 & Quziw6)); +assign T85jw6 = (A95jw6 & H95jw6); +assign H95jw6 = (K75jw6 | Ninnv6); +assign K75jw6 = (O95jw6 | Rje7z6[15]); +assign A95jw6 = (~(Ofnnv6 & O95jw6)); +assign R75jw6 = (~(Ok3ov6 & Ug3ov6)); +assign U55jw6 = (V95jw6 & Ca5jw6); +assign Ca5jw6 = (~(L0g7z6[15] & J2ziw6)); +assign V95jw6 = (Ja5jw6 & Qa5jw6); +assign Qa5jw6 = (~(T0ziw6 & Rje7z6[15])); +assign Ja5jw6 = (Ryfov6 | Xa5jw6); +assign G55jw6 = (Eb5jw6 & Lb5jw6); +assign Lb5jw6 = (Sb5jw6 & Zb5jw6); +assign Zb5jw6 = (Gc5jw6 & Nc5jw6); +assign Nc5jw6 = (~(L0g7z6[31] & Q2ziw6)); +assign Gc5jw6 = (~(O1ziw6 & Onf7z6[15])); +assign Sb5jw6 = (Uc5jw6 & Bd5jw6); +assign Bd5jw6 = (~(U4ziw6 & Fhc7z6[15])); +assign Uc5jw6 = (~(Z3ziw6 & Fhc7z6[16])); +assign Eb5jw6 = (Id5jw6 & Kp3ov6); +assign Kp3ov6 = (Pd5jw6 & Wd5jw6); +assign Wd5jw6 = (~(H8ziw6 & C73ov6)); +assign Pd5jw6 = (~(J73ov6 & Y6ziw6)); +assign Id5jw6 = (Eu2ov6 & De5jw6); +assign De5jw6 = (~(Irldt6 & Oztiw6)); +assign Eu2ov6 = (Ke5jw6 & Re5jw6); +assign Re5jw6 = (~(Ye5jw6 & F7nnv6)); +assign Ye5jw6 = (~(M7nnv6 | Icziw6)); +assign Ke5jw6 = (~(Ff5jw6 & Ubziw6)); +assign Ff5jw6 = (~(F7nnv6 ^ M7nnv6)); +assign M7nnv6 = (Mf5jw6 ^ Mennv6); +assign Mf5jw6 = (~(Tf5jw6 & Ag5jw6)); +assign Ag5jw6 = (Hg5jw6 & Og5jw6); +assign Og5jw6 = (Vg5jw6 & Ch5jw6); +assign Ch5jw6 = (~(Yxf7z6[17] & Su0jw6)); +assign Vg5jw6 = (Jh5jw6 & Qh5jw6); +assign Qh5jw6 = (~(Nv0jw6 & Yxf7z6[15])); +assign Jh5jw6 = (~(Yxf7z6[16] & Uv0jw6)); +assign Hg5jw6 = (Xh5jw6 & Ei5jw6); +assign Ei5jw6 = (~(Yxf7z6[18] & Pw0jw6)); +assign Xh5jw6 = (~(Hz0jw6 & Kxb7z6[15])); +assign Tf5jw6 = (Li5jw6 & Si5jw6); +assign Si5jw6 = (Zi5jw6 & Gj5jw6); +assign Gj5jw6 = (~(J01jw6 & Onf7z6[31])); +assign Zi5jw6 = (Nj5jw6 & Uj5jw6); +assign Uj5jw6 = (~(Oz0jw6 & Fhc7z6[15])); +assign Nj5jw6 = (~(Onf7z6[15] & My0jw6)); +assign Li5jw6 = (Bk5jw6 & Ik5jw6); +assign Ik5jw6 = (Pk5jw6 | Dx0jw6); +assign Bk5jw6 = (~(Q01jw6 & Alf7z6[15])); +assign F7nnv6 = (~(Wk5jw6 ^ Tennv6)); +assign Wk5jw6 = (~(Dl5jw6 & Kl5jw6)); +assign Kl5jw6 = (~(Yxf7z6[15] & Gbziw6)); +assign Dl5jw6 = (~(Kxb7z6[15] & Nbziw6)); +assign A25jw6 = (Rl5jw6 & Yl5jw6); +assign Yl5jw6 = (~(Pw9ov6 & Kxb7z6[15])); +assign Rl5jw6 = (Fm5jw6 & Mm5jw6); +assign Mm5jw6 = (~(Kx9ov6 & vis_pc_o[15])); +assign Fm5jw6 = (~(Gli7z6[15] & Rx9ov6)); +assign X8z7v6 = (~(Tm5jw6 & An5jw6)); +assign An5jw6 = (~(Eji7z6[16] & C3yiw6)); +assign Tm5jw6 = (Hn5jw6 & On5jw6); +assign On5jw6 = (~(Bhi7z6[16] & X3yiw6)); +assign Hn5jw6 = (~(E4yiw6 & vis_pc_o[16])); +assign Q8z7v6 = (~(Vn5jw6 & Co5jw6)); +assign Co5jw6 = (~(Eji7z6[17] & C3yiw6)); +assign Vn5jw6 = (Jo5jw6 & Qo5jw6); +assign Qo5jw6 = (~(Bhi7z6[17] & X3yiw6)); +assign Jo5jw6 = (~(E4yiw6 & vis_pc_o[17])); +assign J8z7v6 = (~(Xo5jw6 & Ep5jw6)); +assign Ep5jw6 = (~(Eji7z6[18] & C3yiw6)); +assign Xo5jw6 = (Lp5jw6 & Sp5jw6); +assign Sp5jw6 = (~(Bhi7z6[18] & X3yiw6)); +assign Lp5jw6 = (~(E4yiw6 & vis_pc_o[18])); +assign C8z7v6 = (~(Zp5jw6 & Gq5jw6)); +assign Gq5jw6 = (Nq5jw6 & Uq5jw6); +assign Uq5jw6 = (Eu9ov6 | Br5jw6); +assign Nq5jw6 = (Ir5jw6 & Pr5jw6); +assign Pr5jw6 = (~(Gv9ov6 & Zqxiw6)); +assign Zqxiw6 = (Spyiw6 ? Yw97z6 : Gli7z6[18]); +assign Ir5jw6 = (~(Uv9ov6 & Yw97z6)); +assign Yw97z6 = (~(Wr5jw6 & Ds5jw6)); +assign Ds5jw6 = (~(Nqyiw6 & Kuynv6)); +assign Wr5jw6 = (Ks5jw6 & Rs5jw6); +assign Rs5jw6 = (~(Pdc7z6[18] & Ouyiw6)); +assign Ks5jw6 = (~(Vuyiw6 & Ys5jw6)); +assign Ys5jw6 = (~(Ft5jw6 & Mt5jw6)); +assign Mt5jw6 = (Tt5jw6 & Au5jw6); +assign Au5jw6 = (Hu5jw6 & Ou5jw6); +assign Ou5jw6 = (Vu5jw6 & Cv5jw6); +assign Cv5jw6 = (~(Jv5jw6 & Uxyiw6)); +assign Jv5jw6 = (Kxb7z6[18] & Qv5jw6); +assign Vu5jw6 = (~(Xv5jw6 & Ew5jw6)); +assign Xv5jw6 = (~(Lw5jw6 & Quziw6)); +assign Lw5jw6 = (Sw5jw6 & Zw5jw6); +assign Zw5jw6 = (Qv5jw6 | Ninnv6); +assign Qv5jw6 = (Gx5jw6 | Rje7z6[18]); +assign Sw5jw6 = (~(Ofnnv6 & Gx5jw6)); +assign Hu5jw6 = (Nx5jw6 & Ux5jw6); +assign Ux5jw6 = (~(J73ov6 & Hk3ov6)); +assign Hk3ov6 = (~(Ur4jw6 ^ Dte7z6[1])); +assign Ur4jw6 = (T3cdt6 ? Xlohw6 : Z04ov6); +assign Xlohw6 = (!V1c7z6[10]); +assign Nx5jw6 = (~(R6ziw6 & Db3ov6)); +assign Tt5jw6 = (By5jw6 & Iy5jw6); +assign Iy5jw6 = (Py5jw6 & Wy5jw6); +assign Wy5jw6 = (~(F7ziw6 & Vd3ov6)); +assign Py5jw6 = (~(T0ziw6 & Rje7z6[18])); +assign By5jw6 = (Dz5jw6 & Kz5jw6); +assign Kz5jw6 = (Ryfov6 | Rz5jw6); +assign Dz5jw6 = (~(L0g7z6[18] & J2ziw6)); +assign Ft5jw6 = (Yz5jw6 & F06jw6); +assign F06jw6 = (M06jw6 & T06jw6); +assign T06jw6 = (A16jw6 & H16jw6); +assign H16jw6 = (~(Cqf7z6[2] & Q2ziw6)); +assign A16jw6 = (~(O1ziw6 & L0g7z6[2])); +assign M06jw6 = (O16jw6 & V16jw6); +assign V16jw6 = (~(U4ziw6 & V1c7z6[18])); +assign O16jw6 = (~(Z3ziw6 & Fhc7z6[13])); +assign Yz5jw6 = (C26jw6 & Xt2ov6); +assign Xt2ov6 = (J26jw6 & Q26jw6); +assign Q26jw6 = (~(X26jw6 & P5nnv6)); +assign X26jw6 = (~(W5nnv6 | Icziw6)); +assign J26jw6 = (~(E36jw6 & Ubziw6)); +assign E36jw6 = (~(P5nnv6 ^ W5nnv6)); +assign W5nnv6 = (L36jw6 ^ Mennv6); +assign L36jw6 = (~(S36jw6 & Z36jw6)); +assign Z36jw6 = (G46jw6 & N46jw6); +assign N46jw6 = (U46jw6 & B56jw6); +assign B56jw6 = (~(Yxf7z6[20] & Su0jw6)); +assign U46jw6 = (I56jw6 & P56jw6); +assign P56jw6 = (~(Yxf7z6[18] & Nv0jw6)); +assign I56jw6 = (~(Yxf7z6[19] & Uv0jw6)); +assign G46jw6 = (W56jw6 & D66jw6); +assign D66jw6 = (~(Yxf7z6[21] & Pw0jw6)); +assign W56jw6 = (~(K66jw6 & Rdziw6)); +assign S36jw6 = (R66jw6 & Y66jw6); +assign Y66jw6 = (F76jw6 & M76jw6); +assign M76jw6 = (~(Onf7z6[18] & My0jw6)); +assign F76jw6 = (T76jw6 & A86jw6); +assign A86jw6 = (~(Hz0jw6 & Kxb7z6[18])); +assign T76jw6 = (~(Oz0jw6 & Fhc7z6[18])); +assign R66jw6 = (H86jw6 & O86jw6); +assign O86jw6 = (~(Alf7z6[2] & J01jw6)); +assign H86jw6 = (~(Alf7z6[18] & Q01jw6)); +assign P5nnv6 = (~(V86jw6 ^ Tennv6)); +assign V86jw6 = (~(C96jw6 & J96jw6)); +assign J96jw6 = (~(Yxf7z6[2] & Laziw6)); +assign C96jw6 = (Q96jw6 & X96jw6); +assign X96jw6 = (~(Yxf7z6[18] & Gbziw6)); +assign Q96jw6 = (~(Kxb7z6[18] & Nbziw6)); +assign C26jw6 = (T7ziw6 & Ea6jw6); +assign Ea6jw6 = (~(Zkldt6 & Oztiw6)); +assign Zp5jw6 = (La6jw6 & Sa6jw6); +assign Sa6jw6 = (~(Pw9ov6 & Kxb7z6[18])); +assign La6jw6 = (Za6jw6 & Gb6jw6); +assign Gb6jw6 = (~(Kx9ov6 & vis_pc_o[18])); +assign Za6jw6 = (~(Gli7z6[18] & Rx9ov6)); +assign V7z7v6 = (~(Nb6jw6 & Ub6jw6)); +assign Ub6jw6 = (~(Eji7z6[19] & C3yiw6)); +assign Nb6jw6 = (Bc6jw6 & Ic6jw6); +assign Ic6jw6 = (~(Bhi7z6[19] & X3yiw6)); +assign Bc6jw6 = (~(E4yiw6 & vis_pc_o[19])); +assign O7z7v6 = (~(Pc6jw6 & Wc6jw6)); +assign Wc6jw6 = (~(Eji7z6[20] & C3yiw6)); +assign Pc6jw6 = (Dd6jw6 & Kd6jw6); +assign Kd6jw6 = (~(Bhi7z6[20] & X3yiw6)); +assign Dd6jw6 = (~(E4yiw6 & vis_pc_o[20])); +assign H7z7v6 = (~(Rd6jw6 & Yd6jw6)); +assign Yd6jw6 = (~(Eji7z6[21] & C3yiw6)); +assign Rd6jw6 = (Fe6jw6 & Me6jw6); +assign Me6jw6 = (~(Bhi7z6[21] & X3yiw6)); +assign Fe6jw6 = (~(E4yiw6 & vis_pc_o[21])); +assign A7z7v6 = (~(Te6jw6 & Af6jw6)); +assign Af6jw6 = (~(Eji7z6[22] & C3yiw6)); +assign Te6jw6 = (Hf6jw6 & Of6jw6); +assign Of6jw6 = (~(Bhi7z6[22] & X3yiw6)); +assign Hf6jw6 = (~(E4yiw6 & vis_pc_o[22])); +assign T6z7v6 = (~(Vf6jw6 & Cg6jw6)); +assign Cg6jw6 = (~(Eji7z6[23] & C3yiw6)); +assign Vf6jw6 = (Jg6jw6 & Qg6jw6); +assign Qg6jw6 = (~(Bhi7z6[23] & X3yiw6)); +assign Jg6jw6 = (~(E4yiw6 & vis_pc_o[23])); +assign M6z7v6 = (~(Xg6jw6 & Eh6jw6)); +assign Eh6jw6 = (~(Eji7z6[24] & C3yiw6)); +assign Xg6jw6 = (Lh6jw6 & Sh6jw6); +assign Sh6jw6 = (~(Bhi7z6[24] & X3yiw6)); +assign Lh6jw6 = (~(E4yiw6 & vis_pc_o[24])); +assign F6z7v6 = (~(Zh6jw6 & Gi6jw6)); +assign Gi6jw6 = (~(Eji7z6[25] & C3yiw6)); +assign Zh6jw6 = (Ni6jw6 & Ui6jw6); +assign Ui6jw6 = (~(Bhi7z6[25] & X3yiw6)); +assign Ni6jw6 = (~(E4yiw6 & vis_pc_o[25])); +assign Y5z7v6 = (~(Bj6jw6 & Ij6jw6)); +assign Ij6jw6 = (Pj6jw6 & Wj6jw6); +assign Wj6jw6 = (Eu9ov6 | Dk6jw6); +assign Pj6jw6 = (Kk6jw6 & Rk6jw6); +assign Rk6jw6 = (~(Gv9ov6 & R7yiw6)); +assign Kk6jw6 = (~(Uv9ov6 & Ox97z6)); +assign Bj6jw6 = (Yk6jw6 & Fl6jw6); +assign Fl6jw6 = (~(Pw9ov6 & Kxb7z6[25])); +assign Yk6jw6 = (Ml6jw6 & Tl6jw6); +assign Tl6jw6 = (~(Kx9ov6 & vis_pc_o[25])); +assign Ml6jw6 = (~(Gli7z6[25] & Rx9ov6)); +assign R5z7v6 = (~(Am6jw6 & Hm6jw6)); +assign Hm6jw6 = (Om6jw6 & Vm6jw6); +assign Vm6jw6 = (~(H02ov6 & Ox97z6)); +assign Om6jw6 = (Cn6jw6 & Jn6jw6); +assign Jn6jw6 = (C12ov6 | Kvjnv6); +assign Kvjnv6 = (Qn6jw6 & Xn6jw6); +assign Xn6jw6 = (Eo6jw6 & Lo6jw6); +assign Lo6jw6 = (So6jw6 & Zo6jw6); +assign Zo6jw6 = (Gp6jw6 & Np6jw6); +assign Np6jw6 = (~(vis_psp_o[25] & N32ov6)); +assign Gp6jw6 = (~(U32ov6 & Pic7z6[25])); +assign So6jw6 = (Up6jw6 & Bq6jw6); +assign Bq6jw6 = (~(vis_msp_o[25] & P42ov6)); +assign Up6jw6 = (~(vis_r12_o[25] & W42ov6)); +assign Eo6jw6 = (Iq6jw6 & Pq6jw6); +assign Pq6jw6 = (Wq6jw6 & Dr6jw6); +assign Dr6jw6 = (~(vis_r11_o[25] & F62ov6)); +assign Wq6jw6 = (~(vis_r10_o[25] & M62ov6)); +assign Iq6jw6 = (Kr6jw6 & Rr6jw6); +assign Rr6jw6 = (~(vis_r9_o[25] & H72ov6)); +assign Kr6jw6 = (~(vis_r8_o[25] & O72ov6)); +assign Qn6jw6 = (Yr6jw6 & Fs6jw6); +assign Fs6jw6 = (Ms6jw6 & Ts6jw6); +assign Ts6jw6 = (At6jw6 & Ht6jw6); +assign Ht6jw6 = (~(vis_r7_o[25] & L92ov6)); +assign At6jw6 = (~(vis_r6_o[25] & S92ov6)); +assign Ms6jw6 = (Ot6jw6 & Vt6jw6); +assign Vt6jw6 = (~(vis_r5_o[25] & Na2ov6)); +assign Ot6jw6 = (~(vis_r4_o[25] & Ua2ov6)); +assign Yr6jw6 = (Cu6jw6 & Ju6jw6); +assign Ju6jw6 = (Qu6jw6 & Xu6jw6); +assign Xu6jw6 = (~(vis_r3_o[25] & Dc2ov6)); +assign Qu6jw6 = (~(vis_r2_o[25] & Kc2ov6)); +assign Cu6jw6 = (Ev6jw6 & Lv6jw6); +assign Lv6jw6 = (~(vis_r1_o[25] & Fd2ov6)); +assign Ev6jw6 = (~(vis_r0_o[25] & Md2ov6)); +assign Cn6jw6 = (~(Td2ov6 & R7yiw6)); +assign R7yiw6 = (Spyiw6 ? Ox97z6 : Gli7z6[25]); +assign Ox97z6 = (~(Sv6jw6 & Zv6jw6)); +assign Zv6jw6 = (~(Nqyiw6 & Xyxnv6)); +assign Sv6jw6 = (Gw6jw6 & Nw6jw6); +assign Nw6jw6 = (~(Pdc7z6[25] & Ouyiw6)); +assign Gw6jw6 = (~(Vuyiw6 & Uw6jw6)); +assign Uw6jw6 = (~(Bx6jw6 & Ix6jw6)); +assign Ix6jw6 = (Px6jw6 & Wx6jw6); +assign Wx6jw6 = (Dy6jw6 & Ky6jw6); +assign Ky6jw6 = (Ry6jw6 & Yy6jw6); +assign Yy6jw6 = (~(Fz6jw6 & Uxyiw6)); +assign Fz6jw6 = (Kxb7z6[25] & Mz6jw6); +assign Ry6jw6 = (~(Tz6jw6 & A07jw6)); +assign Tz6jw6 = (~(H07jw6 & Quziw6)); +assign H07jw6 = (O07jw6 & V07jw6); +assign V07jw6 = (Mz6jw6 | Ninnv6); +assign Mz6jw6 = (~(C17jw6 & J17jw6)); +assign C17jw6 = (!Rje7z6[25]); +assign O07jw6 = (J17jw6 | Evziw6); +assign Dy6jw6 = (Q17jw6 & X17jw6); +assign X17jw6 = (J17jw6 | Ryfov6); +assign Q17jw6 = (~(J73ov6 & Io3ov6)); +assign Px6jw6 = (E27jw6 & L27jw6); +assign L27jw6 = (S27jw6 & Z27jw6); +assign Z27jw6 = (Sf3ov6 | U93ov6); +assign S27jw6 = (~(R6ziw6 & Ia3ov6)); +assign E27jw6 = (G37jw6 & N37jw6); +assign N37jw6 = (~(T0ziw6 & Rje7z6[25])); +assign G37jw6 = (~(L0g7z6[25] & J2ziw6)); +assign Bx6jw6 = (U37jw6 & B47jw6); +assign B47jw6 = (I47jw6 & P47jw6); +assign P47jw6 = (W47jw6 & D57jw6); +assign D57jw6 = (~(Cqf7z6[9] & Q2ziw6)); +assign W47jw6 = (~(L0g7z6[9] & O1ziw6)); +assign I47jw6 = (K57jw6 & R57jw6); +assign R57jw6 = (~(U4ziw6 & V1c7z6[25])); +assign K57jw6 = (~(Z3ziw6 & Fhc7z6[6])); +assign U37jw6 = (Y57jw6 & Su2ov6); +assign Su2ov6 = (F67jw6 & M67jw6); +assign M67jw6 = (~(T67jw6 & H1nnv6)); +assign T67jw6 = (~(O1nnv6 | Icziw6)); +assign F67jw6 = (~(A77jw6 & Ubziw6)); +assign A77jw6 = (~(H1nnv6 ^ O1nnv6)); +assign O1nnv6 = (H77jw6 ^ Mennv6); +assign H77jw6 = (~(O77jw6 & V77jw6)); +assign V77jw6 = (C87jw6 & J87jw6); +assign J87jw6 = (Q87jw6 & X87jw6); +assign X87jw6 = (~(Yxf7z6[27] & Su0jw6)); +assign Q87jw6 = (E97jw6 & L97jw6); +assign L97jw6 = (~(Yxf7z6[25] & Nv0jw6)); +assign E97jw6 = (~(Yxf7z6[26] & Uv0jw6)); +assign C87jw6 = (S97jw6 & Z97jw6); +assign Z97jw6 = (~(Pw0jw6 & Yxf7z6[28])); +assign S97jw6 = (~(Ga7jw6 & Rdziw6)); +assign O77jw6 = (Na7jw6 & Ua7jw6); +assign Ua7jw6 = (Bb7jw6 & Ib7jw6); +assign Ib7jw6 = (~(Onf7z6[25] & My0jw6)); +assign Bb7jw6 = (Pb7jw6 & Wb7jw6); +assign Wb7jw6 = (~(Hz0jw6 & Kxb7z6[25])); +assign Pb7jw6 = (~(Oz0jw6 & Fhc7z6[25])); +assign Na7jw6 = (Dc7jw6 & Kc7jw6); +assign Kc7jw6 = (~(Alf7z6[9] & J01jw6)); +assign Dc7jw6 = (~(Alf7z6[25] & Q01jw6)); +assign H1nnv6 = (~(Rc7jw6 ^ Tennv6)); +assign Rc7jw6 = (~(Yc7jw6 & Fd7jw6)); +assign Fd7jw6 = (~(Yxf7z6[9] & Laziw6)); +assign Yc7jw6 = (Md7jw6 & Td7jw6); +assign Td7jw6 = (~(Yxf7z6[25] & Gbziw6)); +assign Md7jw6 = (~(Kxb7z6[25] & Nbziw6)); +assign Y57jw6 = (T7ziw6 & Ae7jw6); +assign Ae7jw6 = (~(E6ldt6 & Oztiw6)); +assign Am6jw6 = (He7jw6 & Oe7jw6); +assign Oe7jw6 = (~(Ve2ov6 & vis_pc_o[25])); +assign He7jw6 = (~(Fhc7z6[25] & Cf2ov6)); +assign K5z7v6 = (~(Ve7jw6 & Cf7jw6)); +assign Cf7jw6 = (Jf7jw6 & Qf7jw6); +assign Qf7jw6 = (Eu9ov6 | Xf7jw6); +assign Jf7jw6 = (Eg7jw6 & Lg7jw6); +assign Lg7jw6 = (~(Gv9ov6 & Y7yiw6)); +assign Eg7jw6 = (~(Uv9ov6 & Wx97z6)); +assign Ve7jw6 = (Sg7jw6 & Zg7jw6); +assign Zg7jw6 = (~(Pw9ov6 & Kxb7z6[24])); +assign Sg7jw6 = (Gh7jw6 & Nh7jw6); +assign Nh7jw6 = (~(Kx9ov6 & vis_pc_o[24])); +assign Gh7jw6 = (~(Gli7z6[24] & Rx9ov6)); +assign D5z7v6 = (~(Uh7jw6 & Bi7jw6)); +assign Bi7jw6 = (Ii7jw6 & Pi7jw6); +assign Pi7jw6 = (~(H02ov6 & Wx97z6)); +assign Ii7jw6 = (Wi7jw6 & Dj7jw6); +assign Dj7jw6 = (C12ov6 | Axjnv6); +assign Axjnv6 = (Kj7jw6 & Rj7jw6); +assign Rj7jw6 = (Yj7jw6 & Fk7jw6); +assign Fk7jw6 = (Mk7jw6 & Tk7jw6); +assign Tk7jw6 = (Al7jw6 & Hl7jw6); +assign Hl7jw6 = (~(vis_psp_o[24] & N32ov6)); +assign Al7jw6 = (~(U32ov6 & Pic7z6[24])); +assign Mk7jw6 = (Ol7jw6 & Vl7jw6); +assign Vl7jw6 = (~(vis_msp_o[24] & P42ov6)); +assign Ol7jw6 = (~(vis_r12_o[24] & W42ov6)); +assign Yj7jw6 = (Cm7jw6 & Jm7jw6); +assign Jm7jw6 = (Qm7jw6 & Xm7jw6); +assign Xm7jw6 = (~(vis_r11_o[24] & F62ov6)); +assign Qm7jw6 = (~(vis_r10_o[24] & M62ov6)); +assign Cm7jw6 = (En7jw6 & Ln7jw6); +assign Ln7jw6 = (~(vis_r9_o[24] & H72ov6)); +assign En7jw6 = (~(vis_r8_o[24] & O72ov6)); +assign Kj7jw6 = (Sn7jw6 & Zn7jw6); +assign Zn7jw6 = (Go7jw6 & No7jw6); +assign No7jw6 = (Uo7jw6 & Bp7jw6); +assign Bp7jw6 = (~(vis_r7_o[24] & L92ov6)); +assign Uo7jw6 = (~(vis_r6_o[24] & S92ov6)); +assign Go7jw6 = (Ip7jw6 & Pp7jw6); +assign Pp7jw6 = (~(vis_r5_o[24] & Na2ov6)); +assign Ip7jw6 = (~(vis_r4_o[24] & Ua2ov6)); +assign Sn7jw6 = (Wp7jw6 & Dq7jw6); +assign Dq7jw6 = (Kq7jw6 & Rq7jw6); +assign Rq7jw6 = (~(vis_r3_o[24] & Dc2ov6)); +assign Kq7jw6 = (~(vis_r2_o[24] & Kc2ov6)); +assign Wp7jw6 = (Yq7jw6 & Fr7jw6); +assign Fr7jw6 = (~(vis_r1_o[24] & Fd2ov6)); +assign Yq7jw6 = (~(vis_r0_o[24] & Md2ov6)); +assign Wi7jw6 = (~(Td2ov6 & Y7yiw6)); +assign Y7yiw6 = (Spyiw6 ? Wx97z6 : Gli7z6[24]); +assign Wx97z6 = (~(Mr7jw6 & Tr7jw6)); +assign Tr7jw6 = (~(Nqyiw6 & M3ynv6)); +assign Mr7jw6 = (As7jw6 & Hs7jw6); +assign Hs7jw6 = (~(Pdc7z6[24] & Ouyiw6)); +assign As7jw6 = (~(Vuyiw6 & Os7jw6)); +assign Os7jw6 = (~(Vs7jw6 & Ct7jw6)); +assign Ct7jw6 = (Jt7jw6 & Qt7jw6); +assign Qt7jw6 = (Xt7jw6 & Eu7jw6); +assign Eu7jw6 = (Lu7jw6 & Su7jw6); +assign Su7jw6 = (~(Zu7jw6 & Uxyiw6)); +assign Zu7jw6 = (Kxb7z6[24] & Gv7jw6); +assign Lu7jw6 = (~(Nv7jw6 & T9kov6)); +assign Nv7jw6 = (~(Uv7jw6 & Quziw6)); +assign Uv7jw6 = (Bw7jw6 & Iw7jw6); +assign Iw7jw6 = (Gv7jw6 | Ninnv6); +assign Gv7jw6 = (Rje7z6[24] | Pw7jw6); +assign Bw7jw6 = (~(Ofnnv6 & Pw7jw6)); +assign Xt7jw6 = (Ww7jw6 & Dx7jw6); +assign Dx7jw6 = (~(J73ov6 & Bo3ov6)); +assign Bo3ov6 = (~(Ww0jw6 ^ Dte7z6[1])); +assign Ww0jw6 = (T3cdt6 ? J6jnv6 : C64ov6); +assign Ww7jw6 = (~(F7ziw6 & Pa3ov6)); +assign Jt7jw6 = (Kx7jw6 & Rx7jw6); +assign Rx7jw6 = (Yx7jw6 & Fy7jw6); +assign Fy7jw6 = (Zf3ov6 | Ba3ov6); +assign Yx7jw6 = (~(T0ziw6 & Rje7z6[24])); +assign Kx7jw6 = (My7jw6 & Ty7jw6); +assign Ty7jw6 = (Ryfov6 | Az7jw6); +assign My7jw6 = (~(L0g7z6[24] & J2ziw6)); +assign Vs7jw6 = (Hz7jw6 & Oz7jw6); +assign Oz7jw6 = (Vz7jw6 & C08jw6); +assign C08jw6 = (J08jw6 & Q08jw6); +assign Q08jw6 = (~(Cqf7z6[8] & Q2ziw6)); +assign J08jw6 = (~(L0g7z6[8] & O1ziw6)); +assign Vz7jw6 = (X08jw6 & E18jw6); +assign E18jw6 = (~(U4ziw6 & V1c7z6[24])); +assign X08jw6 = (~(Z3ziw6 & Fhc7z6[7])); +assign Hz7jw6 = (L18jw6 & Lu2ov6); +assign Lu2ov6 = (S18jw6 & Z18jw6); +assign Z18jw6 = (~(G28jw6 & V1nnv6)); +assign G28jw6 = (~(C2nnv6 | Icziw6)); +assign S18jw6 = (~(N28jw6 & Ubziw6)); +assign N28jw6 = (~(V1nnv6 ^ C2nnv6)); +assign C2nnv6 = (U28jw6 ^ Mennv6); +assign U28jw6 = (~(B38jw6 & I38jw6)); +assign I38jw6 = (P38jw6 & W38jw6); +assign W38jw6 = (D48jw6 & K48jw6); +assign K48jw6 = (~(Yxf7z6[26] & Su0jw6)); +assign D48jw6 = (R48jw6 & Y48jw6); +assign Y48jw6 = (~(Yxf7z6[24] & Nv0jw6)); +assign R48jw6 = (~(Yxf7z6[25] & Uv0jw6)); +assign P38jw6 = (F58jw6 & M58jw6); +assign M58jw6 = (~(Yxf7z6[27] & Pw0jw6)); +assign F58jw6 = (~(T58jw6 & Rdziw6)); +assign B38jw6 = (A68jw6 & H68jw6); +assign H68jw6 = (O68jw6 & V68jw6); +assign V68jw6 = (~(Onf7z6[24] & My0jw6)); +assign O68jw6 = (C78jw6 & J78jw6); +assign J78jw6 = (~(Hz0jw6 & Kxb7z6[24])); +assign C78jw6 = (~(Oz0jw6 & Fhc7z6[24])); +assign A68jw6 = (Q78jw6 & X78jw6); +assign X78jw6 = (~(Alf7z6[8] & J01jw6)); +assign Q78jw6 = (~(Alf7z6[24] & Q01jw6)); +assign V1nnv6 = (~(E88jw6 ^ Tennv6)); +assign E88jw6 = (~(L88jw6 & S88jw6)); +assign S88jw6 = (~(Yxf7z6[8] & Laziw6)); +assign L88jw6 = (Z88jw6 & G98jw6); +assign G98jw6 = (~(Yxf7z6[24] & Gbziw6)); +assign Z88jw6 = (~(Kxb7z6[24] & Nbziw6)); +assign L18jw6 = (T7ziw6 & N98jw6); +assign N98jw6 = (~(H8ldt6 & Oztiw6)); +assign Uh7jw6 = (U98jw6 & Ba8jw6); +assign Ba8jw6 = (~(Ve2ov6 & vis_pc_o[24])); +assign U98jw6 = (~(Fhc7z6[24] & Cf2ov6)); +assign W4z7v6 = (~(Ia8jw6 & Pa8jw6)); +assign Pa8jw6 = (Wa8jw6 & Db8jw6); +assign Db8jw6 = (Eu9ov6 | Kb8jw6); +assign Wa8jw6 = (Rb8jw6 & Yb8jw6); +assign Yb8jw6 = (~(Gv9ov6 & V9yiw6)); +assign Rb8jw6 = (~(Uv9ov6 & A0a7z6)); +assign Ia8jw6 = (Fc8jw6 & Mc8jw6); +assign Mc8jw6 = (~(Pw9ov6 & Kxb7z6[16])); +assign Fc8jw6 = (Tc8jw6 & Ad8jw6); +assign Ad8jw6 = (~(Kx9ov6 & vis_pc_o[16])); +assign Tc8jw6 = (~(Gli7z6[16] & Rx9ov6)); +assign P4z7v6 = (~(Hd8jw6 & Od8jw6)); +assign Od8jw6 = (Vd8jw6 & Ce8jw6); +assign Ce8jw6 = (~(H02ov6 & A0a7z6)); +assign Vd8jw6 = (Je8jw6 & Qe8jw6); +assign Qe8jw6 = (C12ov6 | Ccknv6); +assign Ccknv6 = (Xe8jw6 & Ef8jw6); +assign Ef8jw6 = (Lf8jw6 & Sf8jw6); +assign Sf8jw6 = (Zf8jw6 & Gg8jw6); +assign Gg8jw6 = (Ng8jw6 & Ug8jw6); +assign Ug8jw6 = (~(vis_psp_o[16] & N32ov6)); +assign Ng8jw6 = (~(U32ov6 & Pic7z6[16])); +assign Zf8jw6 = (Bh8jw6 & Ih8jw6); +assign Ih8jw6 = (~(vis_msp_o[16] & P42ov6)); +assign Bh8jw6 = (~(vis_r12_o[16] & W42ov6)); +assign Lf8jw6 = (Ph8jw6 & Wh8jw6); +assign Wh8jw6 = (Di8jw6 & Ki8jw6); +assign Ki8jw6 = (~(vis_r11_o[16] & F62ov6)); +assign Di8jw6 = (~(vis_r10_o[16] & M62ov6)); +assign Ph8jw6 = (Ri8jw6 & Yi8jw6); +assign Yi8jw6 = (~(vis_r9_o[16] & H72ov6)); +assign Ri8jw6 = (~(vis_r8_o[16] & O72ov6)); +assign Xe8jw6 = (Fj8jw6 & Mj8jw6); +assign Mj8jw6 = (Tj8jw6 & Ak8jw6); +assign Ak8jw6 = (Hk8jw6 & Ok8jw6); +assign Ok8jw6 = (~(vis_r7_o[16] & L92ov6)); +assign Hk8jw6 = (~(vis_r6_o[16] & S92ov6)); +assign Tj8jw6 = (Vk8jw6 & Cl8jw6); +assign Cl8jw6 = (~(vis_r5_o[16] & Na2ov6)); +assign Vk8jw6 = (~(vis_r4_o[16] & Ua2ov6)); +assign Fj8jw6 = (Jl8jw6 & Ql8jw6); +assign Ql8jw6 = (Xl8jw6 & Em8jw6); +assign Em8jw6 = (~(vis_r3_o[16] & Dc2ov6)); +assign Xl8jw6 = (~(vis_r2_o[16] & Kc2ov6)); +assign Jl8jw6 = (Lm8jw6 & Sm8jw6); +assign Sm8jw6 = (~(vis_r1_o[16] & Fd2ov6)); +assign Lm8jw6 = (~(vis_r0_o[16] & Md2ov6)); +assign Je8jw6 = (~(Td2ov6 & V9yiw6)); +assign V9yiw6 = (Spyiw6 ? A0a7z6 : Gli7z6[16]); +assign A0a7z6 = (~(Zm8jw6 & Gn8jw6)); +assign Gn8jw6 = (~(Nqyiw6 & O3znv6)); +assign Zm8jw6 = (Nn8jw6 & Un8jw6); +assign Un8jw6 = (~(Pdc7z6[16] & Ouyiw6)); +assign Nn8jw6 = (~(Vuyiw6 & Bo8jw6)); +assign Bo8jw6 = (~(Io8jw6 & Po8jw6)); +assign Po8jw6 = (Wo8jw6 & Dp8jw6); +assign Dp8jw6 = (Kp8jw6 & Rp8jw6); +assign Rp8jw6 = (Yp8jw6 & Fq8jw6); +assign Fq8jw6 = (~(Mq8jw6 & Uxyiw6)); +assign Mq8jw6 = (Kxb7z6[16] & Tq8jw6); +assign Yp8jw6 = (~(Ar8jw6 & Hr8jw6)); +assign Ar8jw6 = (~(Or8jw6 & Quziw6)); +assign Or8jw6 = (Vr8jw6 & Cs8jw6); +assign Cs8jw6 = (Tq8jw6 | Ninnv6); +assign Tq8jw6 = (Rje7z6[16] | Js8jw6); +assign Vr8jw6 = (~(Ofnnv6 & Js8jw6)); +assign Kp8jw6 = (Qs8jw6 & Xs8jw6); +assign Xs8jw6 = (~(R6ziw6 & Pa3ov6)); +assign Pa3ov6 = (T58jw6 ^ Dte7z6[1]); +assign T58jw6 = (T3cdt6 ? V1c7z6[24] : T9kov6); +assign Qs8jw6 = (~(J73ov6 & Tj3ov6)); +assign Tj3ov6 = (~(E54jw6 ^ Dte7z6[1])); +assign E54jw6 = (T3cdt6 ? E0phw6 : Vy3ov6); +assign Wo8jw6 = (Et8jw6 & Lt8jw6); +assign Lt8jw6 = (St8jw6 & Zt8jw6); +assign Zt8jw6 = (Sf3ov6 | Ba3ov6); +assign Ba3ov6 = (Gu8jw6 ^ Nu8jw6); +assign St8jw6 = (~(T0ziw6 & Rje7z6[16])); +assign Et8jw6 = (Uu8jw6 & Bv8jw6); +assign Bv8jw6 = (Ryfov6 | Iv8jw6); +assign Uu8jw6 = (~(L0g7z6[16] & J2ziw6)); +assign Io8jw6 = (Pv8jw6 & Wv8jw6); +assign Wv8jw6 = (Dw8jw6 & Kw8jw6); +assign Kw8jw6 = (Rw8jw6 & Yw8jw6); +assign Yw8jw6 = (~(Cqf7z6[0] & Q2ziw6)); +assign Rw8jw6 = (~(L0g7z6[0] & O1ziw6)); +assign Dw8jw6 = (Fx8jw6 & Mx8jw6); +assign Mx8jw6 = (~(U4ziw6 & V1c7z6[16])); +assign Fx8jw6 = (~(Z3ziw6 & Fhc7z6[15])); +assign Pv8jw6 = (Tx8jw6 & Uv2ov6); +assign Uv2ov6 = (Ay8jw6 & Hy8jw6); +assign Hy8jw6 = (~(Oy8jw6 & R6nnv6)); +assign Oy8jw6 = (~(Y6nnv6 | Icziw6)); +assign Ay8jw6 = (~(Vy8jw6 & Ubziw6)); +assign Vy8jw6 = (~(R6nnv6 ^ Y6nnv6)); +assign Y6nnv6 = (Cz8jw6 ^ Mennv6); +assign Cz8jw6 = (~(Jz8jw6 & Qz8jw6)); +assign Qz8jw6 = (Xz8jw6 & E09jw6); +assign E09jw6 = (L09jw6 & S09jw6); +assign S09jw6 = (~(Yxf7z6[18] & Su0jw6)); +assign L09jw6 = (Z09jw6 & G19jw6); +assign G19jw6 = (~(Yxf7z6[16] & Nv0jw6)); +assign Z09jw6 = (~(Yxf7z6[17] & Uv0jw6)); +assign Xz8jw6 = (N19jw6 & U19jw6); +assign U19jw6 = (~(Yxf7z6[19] & Pw0jw6)); +assign N19jw6 = (~(Gu8jw6 & Rdziw6)); +assign Gu8jw6 = (T3cdt6 ? V1c7z6[16] : Hr8jw6); +assign Jz8jw6 = (B29jw6 & I29jw6); +assign I29jw6 = (P29jw6 & W29jw6); +assign W29jw6 = (~(Onf7z6[16] & My0jw6)); +assign P29jw6 = (D39jw6 & K39jw6); +assign K39jw6 = (~(Hz0jw6 & Kxb7z6[16])); +assign D39jw6 = (~(Oz0jw6 & Fhc7z6[16])); +assign B29jw6 = (R39jw6 & Y39jw6); +assign Y39jw6 = (~(Alf7z6[0] & J01jw6)); +assign R39jw6 = (~(Alf7z6[16] & Q01jw6)); +assign R6nnv6 = (~(F49jw6 ^ Tennv6)); +assign F49jw6 = (~(M49jw6 & T49jw6)); +assign T49jw6 = (~(Yxf7z6[0] & Laziw6)); +assign M49jw6 = (A59jw6 & H59jw6); +assign H59jw6 = (~(Yxf7z6[16] & Gbziw6)); +assign A59jw6 = (~(Kxb7z6[16] & Nbziw6)); +assign Tx8jw6 = (T7ziw6 & O59jw6); +assign O59jw6 = (~(Fpldt6 & Oztiw6)); +assign Hd8jw6 = (V59jw6 & C69jw6); +assign C69jw6 = (~(Ve2ov6 & vis_pc_o[16])); +assign V59jw6 = (~(Fhc7z6[16] & Cf2ov6)); +assign I4z7v6 = (~(J69jw6 & Q69jw6)); +assign Q69jw6 = (X69jw6 & E79jw6); +assign E79jw6 = (Eu9ov6 | L79jw6); +assign X69jw6 = (S79jw6 & Z79jw6); +assign Z79jw6 = (~(Gv9ov6 & Lbyiw6)); +assign S79jw6 = (~(Uv9ov6 & O1a7z6)); +assign J69jw6 = (G89jw6 & N89jw6); +assign N89jw6 = (~(Pw9ov6 & Kxb7z6[9])); +assign G89jw6 = (U89jw6 & B99jw6); +assign B99jw6 = (~(Kx9ov6 & vis_pc_o[9])); +assign U89jw6 = (~(Gli7z6[9] & Rx9ov6)); +assign B4z7v6 = (~(I99jw6 & P99jw6)); +assign P99jw6 = (W99jw6 & Da9jw6); +assign Da9jw6 = (~(H02ov6 & O1a7z6)); +assign W99jw6 = (Ka9jw6 & Ra9jw6); +assign Ra9jw6 = (C12ov6 | U8jnv6); +assign U8jnv6 = (Ya9jw6 & Fb9jw6); +assign Fb9jw6 = (Mb9jw6 & Tb9jw6); +assign Tb9jw6 = (Ac9jw6 & Hc9jw6); +assign Hc9jw6 = (Oc9jw6 & Vc9jw6); +assign Vc9jw6 = (~(vis_psp_o[9] & N32ov6)); +assign Oc9jw6 = (~(U32ov6 & Pic7z6[9])); +assign Ac9jw6 = (Cd9jw6 & Jd9jw6); +assign Jd9jw6 = (~(vis_msp_o[9] & P42ov6)); +assign Cd9jw6 = (~(vis_r12_o[9] & W42ov6)); +assign Mb9jw6 = (Qd9jw6 & Xd9jw6); +assign Xd9jw6 = (Ee9jw6 & Le9jw6); +assign Le9jw6 = (~(vis_r11_o[9] & F62ov6)); +assign Ee9jw6 = (~(vis_r10_o[9] & M62ov6)); +assign Qd9jw6 = (Se9jw6 & Ze9jw6); +assign Ze9jw6 = (~(vis_r9_o[9] & H72ov6)); +assign Se9jw6 = (~(vis_r8_o[9] & O72ov6)); +assign Ya9jw6 = (Gf9jw6 & Nf9jw6); +assign Nf9jw6 = (Uf9jw6 & Bg9jw6); +assign Bg9jw6 = (Ig9jw6 & Pg9jw6); +assign Pg9jw6 = (~(vis_r7_o[9] & L92ov6)); +assign Ig9jw6 = (~(vis_r6_o[9] & S92ov6)); +assign Uf9jw6 = (Wg9jw6 & Dh9jw6); +assign Dh9jw6 = (~(vis_r5_o[9] & Na2ov6)); +assign Wg9jw6 = (~(vis_r4_o[9] & Ua2ov6)); +assign Gf9jw6 = (Kh9jw6 & Rh9jw6); +assign Rh9jw6 = (Yh9jw6 & Fi9jw6); +assign Fi9jw6 = (~(vis_r3_o[9] & Dc2ov6)); +assign Yh9jw6 = (~(vis_r2_o[9] & Kc2ov6)); +assign Kh9jw6 = (Mi9jw6 & Ti9jw6); +assign Ti9jw6 = (~(vis_r1_o[9] & Fd2ov6)); +assign Mi9jw6 = (~(vis_r0_o[9] & Md2ov6)); +assign Ka9jw6 = (~(Td2ov6 & Lbyiw6)); +assign Lbyiw6 = (Spyiw6 ? O1a7z6 : Gli7z6[9]); +assign O1a7z6 = (~(Aj9jw6 & Hj9jw6)); +assign Hj9jw6 = (~(Nqyiw6 & Jwznv6)); +assign Aj9jw6 = (Oj9jw6 & Vj9jw6); +assign Vj9jw6 = (~(Pdc7z6[9] & Ouyiw6)); +assign Oj9jw6 = (~(Vuyiw6 & Ck9jw6)); +assign Ck9jw6 = (~(Jk9jw6 & Qk9jw6)); +assign Qk9jw6 = (Xk9jw6 & El9jw6); +assign El9jw6 = (Ll9jw6 & Sl9jw6); +assign Sl9jw6 = (Zl9jw6 & Ns3jw6); +assign Zl9jw6 = (~(Gm9jw6 & Uxyiw6)); +assign Gm9jw6 = (Kxb7z6[9] & Nm9jw6); +assign Ll9jw6 = (Um9jw6 & Bn9jw6); +assign Bn9jw6 = (~(In9jw6 & Pn9jw6)); +assign In9jw6 = (~(Wn9jw6 & Quziw6)); +assign Wn9jw6 = (Do9jw6 & Ko9jw6); +assign Ko9jw6 = (Nm9jw6 | Ninnv6); +assign Nm9jw6 = (Ro9jw6 | Rje7z6[9]); +assign Do9jw6 = (~(Ofnnv6 & Ro9jw6)); +assign Um9jw6 = (~(Io3ov6 & C73ov6)); +assign Io3ov6 = (~(Mp2jw6 ^ Dte7z6[1])); +assign Mp2jw6 = (T3cdt6 ? C6jnv6 : Hy3ov6); +assign Xk9jw6 = (Yo9jw6 & Fp9jw6); +assign Fp9jw6 = (Mp9jw6 & Tp9jw6); +assign Tp9jw6 = (~(Ak3ov6 & Ug3ov6)); +assign Mp9jw6 = (~(J73ov6 & Ia3ov6)); +assign Yo9jw6 = (Aq9jw6 & Hq9jw6); +assign Hq9jw6 = (~(T0ziw6 & Rje7z6[9])); +assign Aq9jw6 = (Ryfov6 | Oq9jw6); +assign Jk9jw6 = (Vq9jw6 & Cr9jw6); +assign Cr9jw6 = (Jr9jw6 & Qr9jw6); +assign Qr9jw6 = (Xr9jw6 & Es9jw6); +assign Es9jw6 = (~(L0g7z6[9] & J2ziw6)); +assign Xr9jw6 = (~(L0g7z6[25] & Q2ziw6)); +assign Jr9jw6 = (Ls9jw6 & Ss9jw6); +assign Ss9jw6 = (~(O1ziw6 & Onf7z6[9])); +assign Ls9jw6 = (~(U4ziw6 & Fhc7z6[9])); +assign Vq9jw6 = (Zs9jw6 & Nv2ov6); +assign Nv2ov6 = (Gt9jw6 & Nt9jw6); +assign Nt9jw6 = (~(Ut9jw6 & Ttmnv6)); +assign Ut9jw6 = (~(Humnv6 | Icziw6)); +assign Gt9jw6 = (~(Bu9jw6 & Ubziw6)); +assign Bu9jw6 = (~(Ttmnv6 ^ Humnv6)); +assign Humnv6 = (Iu9jw6 ^ Mennv6); +assign Iu9jw6 = (~(Pu9jw6 & Wu9jw6)); +assign Wu9jw6 = (Dv9jw6 & Kv9jw6); +assign Kv9jw6 = (Rv9jw6 & Yv9jw6); +assign Yv9jw6 = (~(Yxf7z6[11] & Su0jw6)); +assign Rv9jw6 = (Fw9jw6 & Mw9jw6); +assign Mw9jw6 = (~(Yxf7z6[9] & Nv0jw6)); +assign Fw9jw6 = (~(Yxf7z6[10] & Uv0jw6)); +assign Dv9jw6 = (Tw9jw6 & Ax9jw6); +assign Ax9jw6 = (~(Yxf7z6[12] & Pw0jw6)); +assign Tw9jw6 = (Hx9jw6 | Dx0jw6); +assign Pu9jw6 = (Ox9jw6 & Vx9jw6); +assign Vx9jw6 = (Cy9jw6 & Jy9jw6); +assign Jy9jw6 = (~(Onf7z6[9] & My0jw6)); +assign Cy9jw6 = (Qy9jw6 & Xy9jw6); +assign Xy9jw6 = (~(Hz0jw6 & Kxb7z6[9])); +assign Qy9jw6 = (~(Oz0jw6 & Fhc7z6[9])); +assign Ox9jw6 = (Ez9jw6 & Lz9jw6); +assign Lz9jw6 = (~(Onf7z6[25] & J01jw6)); +assign Ez9jw6 = (~(Alf7z6[9] & Q01jw6)); +assign Ttmnv6 = (~(Sz9jw6 ^ Tennv6)); +assign Sz9jw6 = (~(Zz9jw6 & G0ajw6)); +assign G0ajw6 = (~(Yxf7z6[9] & Gbziw6)); +assign Zz9jw6 = (~(Kxb7z6[9] & Nbziw6)); +assign Zs9jw6 = (N0ajw6 & U0ajw6); +assign U0ajw6 = (~(Z3ziw6 & Fhc7z6[22])); +assign N0ajw6 = (~(A4mdt6 & Oztiw6)); +assign I99jw6 = (B1ajw6 & I1ajw6); +assign I1ajw6 = (~(Ve2ov6 & vis_pc_o[9])); +assign B1ajw6 = (~(Fhc7z6[9] & Cf2ov6)); +assign U3z7v6 = (~(P1ajw6 & W1ajw6)); +assign W1ajw6 = (D2ajw6 & K2ajw6); +assign K2ajw6 = (Eu9ov6 | R2ajw6); +assign D2ajw6 = (Y2ajw6 & F3ajw6); +assign F3ajw6 = (~(Gv9ov6 & O9yiw6)); +assign Y2ajw6 = (~(Uv9ov6 & Sz97z6)); +assign P1ajw6 = (M3ajw6 & T3ajw6); +assign T3ajw6 = (~(Pw9ov6 & Kxb7z6[17])); +assign M3ajw6 = (A4ajw6 & H4ajw6); +assign H4ajw6 = (~(Kx9ov6 & vis_pc_o[17])); +assign A4ajw6 = (~(Gli7z6[17] & Rx9ov6)); +assign N3z7v6 = (~(O4ajw6 & V4ajw6)); +assign V4ajw6 = (C5ajw6 & J5ajw6); +assign J5ajw6 = (~(H02ov6 & Sz97z6)); +assign C5ajw6 = (Q5ajw6 & X5ajw6); +assign X5ajw6 = (C12ov6 | Maknv6); +assign Maknv6 = (E6ajw6 & L6ajw6); +assign L6ajw6 = (S6ajw6 & Z6ajw6); +assign Z6ajw6 = (G7ajw6 & N7ajw6); +assign N7ajw6 = (U7ajw6 & B8ajw6); +assign B8ajw6 = (~(vis_psp_o[17] & N32ov6)); +assign U7ajw6 = (~(U32ov6 & Pic7z6[17])); +assign G7ajw6 = (I8ajw6 & P8ajw6); +assign P8ajw6 = (~(vis_msp_o[17] & P42ov6)); +assign I8ajw6 = (~(vis_r12_o[17] & W42ov6)); +assign S6ajw6 = (W8ajw6 & D9ajw6); +assign D9ajw6 = (K9ajw6 & R9ajw6); +assign R9ajw6 = (~(vis_r11_o[17] & F62ov6)); +assign K9ajw6 = (~(vis_r10_o[17] & M62ov6)); +assign W8ajw6 = (Y9ajw6 & Faajw6); +assign Faajw6 = (~(vis_r9_o[17] & H72ov6)); +assign Y9ajw6 = (~(vis_r8_o[17] & O72ov6)); +assign E6ajw6 = (Maajw6 & Taajw6); +assign Taajw6 = (Abajw6 & Hbajw6); +assign Hbajw6 = (Obajw6 & Vbajw6); +assign Vbajw6 = (~(vis_r7_o[17] & L92ov6)); +assign Obajw6 = (~(vis_r6_o[17] & S92ov6)); +assign Abajw6 = (Ccajw6 & Jcajw6); +assign Jcajw6 = (~(vis_r5_o[17] & Na2ov6)); +assign Ccajw6 = (~(vis_r4_o[17] & Ua2ov6)); +assign Maajw6 = (Qcajw6 & Xcajw6); +assign Xcajw6 = (Edajw6 & Ldajw6); +assign Ldajw6 = (~(vis_r3_o[17] & Dc2ov6)); +assign Edajw6 = (~(vis_r2_o[17] & Kc2ov6)); +assign Qcajw6 = (Sdajw6 & Zdajw6); +assign Zdajw6 = (~(vis_r1_o[17] & Fd2ov6)); +assign Sdajw6 = (~(vis_r0_o[17] & Md2ov6)); +assign Q5ajw6 = (~(Td2ov6 & O9yiw6)); +assign O9yiw6 = (Spyiw6 ? Sz97z6 : Gli7z6[17]); +assign Sz97z6 = (~(Geajw6 & Neajw6)); +assign Neajw6 = (~(Nqyiw6 & Zyynv6)); +assign Geajw6 = (Ueajw6 & Bfajw6); +assign Bfajw6 = (~(Pdc7z6[17] & Ouyiw6)); +assign Ueajw6 = (~(Vuyiw6 & Ifajw6)); +assign Ifajw6 = (~(Pfajw6 & Wfajw6)); +assign Wfajw6 = (Dgajw6 & Kgajw6); +assign Kgajw6 = (Rgajw6 & Ygajw6); +assign Ygajw6 = (Fhajw6 & Mhajw6); +assign Mhajw6 = (~(Thajw6 & Uxyiw6)); +assign Thajw6 = (Kxb7z6[17] & Aiajw6); +assign Fhajw6 = (~(Hiajw6 & Oiajw6)); +assign Hiajw6 = (~(Viajw6 & Quziw6)); +assign Viajw6 = (Cjajw6 & Jjajw6); +assign Jjajw6 = (Aiajw6 | Ninnv6); +assign Aiajw6 = (Qjajw6 | Rje7z6[17]); +assign Cjajw6 = (~(Ofnnv6 & Qjajw6)); +assign Rgajw6 = (Xjajw6 & Ekajw6); +assign Ekajw6 = (Zf3ov6 | U93ov6); +assign U93ov6 = (Ga7jw6 ^ Nu8jw6); +assign Ga7jw6 = (T3cdt6 ? V1c7z6[25] : A07jw6); +assign Xjajw6 = (~(J73ov6 & Ak3ov6)); +assign Ak3ov6 = (~(Hx9jw6 ^ Dte7z6[1])); +assign Hx9jw6 = (T3cdt6 ? Qsohw6 : Oy3ov6); +assign Qsohw6 = (!V1c7z6[9]); +assign Dgajw6 = (Lkajw6 & Skajw6); +assign Skajw6 = (Zkajw6 & Glajw6); +assign Glajw6 = (~(F7ziw6 & Ia3ov6)); +assign Ia3ov6 = (Nlajw6 ^ Dte7z6[1]); +assign Zkajw6 = (~(T0ziw6 & Rje7z6[17])); +assign Lkajw6 = (Ulajw6 & Bmajw6); +assign Bmajw6 = (Ryfov6 | Imajw6); +assign Ulajw6 = (~(L0g7z6[17] & J2ziw6)); +assign Pfajw6 = (Pmajw6 & Wmajw6); +assign Wmajw6 = (Dnajw6 & Knajw6); +assign Knajw6 = (Rnajw6 & Ynajw6); +assign Ynajw6 = (~(Cqf7z6[1] & Q2ziw6)); +assign Rnajw6 = (~(L0g7z6[1] & O1ziw6)); +assign Dnajw6 = (Foajw6 & Moajw6); +assign Moajw6 = (~(U4ziw6 & V1c7z6[17])); +assign Foajw6 = (~(Z3ziw6 & Fhc7z6[14])); +assign Pmajw6 = (Toajw6 & Iw2ov6); +assign Iw2ov6 = (Apajw6 & Hpajw6); +assign Hpajw6 = (~(Opajw6 & D6nnv6)); +assign Opajw6 = (~(K6nnv6 | Icziw6)); +assign Apajw6 = (~(Vpajw6 & Ubziw6)); +assign Vpajw6 = (~(D6nnv6 ^ K6nnv6)); +assign K6nnv6 = (Cqajw6 ^ Mennv6); +assign Cqajw6 = (~(Jqajw6 & Qqajw6)); +assign Qqajw6 = (Xqajw6 & Erajw6); +assign Erajw6 = (Lrajw6 & Srajw6); +assign Srajw6 = (~(Yxf7z6[19] & Su0jw6)); +assign Lrajw6 = (Zrajw6 & Gsajw6); +assign Gsajw6 = (~(Yxf7z6[17] & Nv0jw6)); +assign Zrajw6 = (~(Yxf7z6[18] & Uv0jw6)); +assign Xqajw6 = (Nsajw6 & Usajw6); +assign Usajw6 = (~(Yxf7z6[20] & Pw0jw6)); +assign Nsajw6 = (~(Nlajw6 & Rdziw6)); +assign Nlajw6 = (T3cdt6 ? V1c7z6[17] : Oiajw6); +assign Jqajw6 = (Btajw6 & Itajw6); +assign Itajw6 = (Ptajw6 & Wtajw6); +assign Wtajw6 = (~(Onf7z6[17] & My0jw6)); +assign Ptajw6 = (Duajw6 & Kuajw6); +assign Kuajw6 = (~(Hz0jw6 & Kxb7z6[17])); +assign Duajw6 = (~(Oz0jw6 & Fhc7z6[17])); +assign Btajw6 = (Ruajw6 & Yuajw6); +assign Yuajw6 = (~(Alf7z6[1] & J01jw6)); +assign Ruajw6 = (~(Alf7z6[17] & Q01jw6)); +assign D6nnv6 = (~(Fvajw6 ^ Tennv6)); +assign Fvajw6 = (~(Mvajw6 & Tvajw6)); +assign Tvajw6 = (~(Yxf7z6[1] & Laziw6)); +assign Mvajw6 = (Awajw6 & Hwajw6); +assign Hwajw6 = (~(Yxf7z6[17] & Gbziw6)); +assign Awajw6 = (~(Kxb7z6[17] & Nbziw6)); +assign Toajw6 = (T7ziw6 & Owajw6); +assign Owajw6 = (~(Cnldt6 & Oztiw6)); +assign O4ajw6 = (Vwajw6 & Cxajw6); +assign Cxajw6 = (~(Ve2ov6 & vis_pc_o[17])); +assign Vwajw6 = (~(Fhc7z6[17] & Cf2ov6)); +assign G3z7v6 = (~(Jxajw6 & Qxajw6)); +assign Qxajw6 = (Xxajw6 & Eyajw6); +assign Eyajw6 = (Eu9ov6 | Lyajw6); +assign Xxajw6 = (Syajw6 & Zyajw6); +assign Zyajw6 = (~(Gv9ov6 & Xayiw6)); +assign Syajw6 = (~(Uv9ov6 & G1a7z6)); +assign Jxajw6 = (Gzajw6 & Nzajw6); +assign Nzajw6 = (~(Pw9ov6 & Kxb7z6[11])); +assign Gzajw6 = (Uzajw6 & B0bjw6); +assign B0bjw6 = (~(Kx9ov6 & vis_pc_o[11])); +assign Uzajw6 = (~(Gli7z6[11] & Rx9ov6)); +assign Z2z7v6 = (~(I0bjw6 & P0bjw6)); +assign P0bjw6 = (W0bjw6 & D1bjw6); +assign D1bjw6 = (~(H02ov6 & G1a7z6)); +assign W0bjw6 = (K1bjw6 & R1bjw6); +assign R1bjw6 = (~(Ktxiw6 & Lkknv6)); +assign Lkknv6 = (~(Y1bjw6 & F2bjw6)); +assign F2bjw6 = (M2bjw6 & T2bjw6); +assign T2bjw6 = (A3bjw6 & H3bjw6); +assign H3bjw6 = (O3bjw6 & V3bjw6); +assign V3bjw6 = (~(vis_psp_o[11] & N32ov6)); +assign O3bjw6 = (~(U32ov6 & Pic7z6[11])); +assign A3bjw6 = (C4bjw6 & J4bjw6); +assign J4bjw6 = (~(vis_msp_o[11] & P42ov6)); +assign C4bjw6 = (~(vis_r12_o[11] & W42ov6)); +assign M2bjw6 = (Q4bjw6 & X4bjw6); +assign X4bjw6 = (E5bjw6 & L5bjw6); +assign L5bjw6 = (~(vis_r11_o[11] & F62ov6)); +assign E5bjw6 = (~(vis_r10_o[11] & M62ov6)); +assign Q4bjw6 = (S5bjw6 & Z5bjw6); +assign Z5bjw6 = (~(vis_r9_o[11] & H72ov6)); +assign S5bjw6 = (~(vis_r8_o[11] & O72ov6)); +assign Y1bjw6 = (G6bjw6 & N6bjw6); +assign N6bjw6 = (U6bjw6 & B7bjw6); +assign B7bjw6 = (I7bjw6 & P7bjw6); +assign P7bjw6 = (~(vis_r7_o[11] & L92ov6)); +assign I7bjw6 = (~(vis_r6_o[11] & S92ov6)); +assign U6bjw6 = (W7bjw6 & D8bjw6); +assign D8bjw6 = (~(vis_r5_o[11] & Na2ov6)); +assign W7bjw6 = (~(vis_r4_o[11] & Ua2ov6)); +assign G6bjw6 = (K8bjw6 & R8bjw6); +assign R8bjw6 = (Y8bjw6 & F9bjw6); +assign F9bjw6 = (~(vis_r3_o[11] & Dc2ov6)); +assign Y8bjw6 = (~(vis_r2_o[11] & Kc2ov6)); +assign K8bjw6 = (M9bjw6 & T9bjw6); +assign T9bjw6 = (~(vis_r1_o[11] & Fd2ov6)); +assign M9bjw6 = (~(vis_r0_o[11] & Md2ov6)); +assign K1bjw6 = (~(Td2ov6 & Xayiw6)); +assign Xayiw6 = (Spyiw6 ? G1a7z6 : Gli7z6[11]); +assign G1a7z6 = (~(Aabjw6 & Habjw6)); +assign Habjw6 = (~(Nqyiw6 & Hoznv6)); +assign Aabjw6 = (Oabjw6 & Vabjw6); +assign Vabjw6 = (~(Pdc7z6[11] & Ouyiw6)); +assign Oabjw6 = (~(Vuyiw6 & Cbbjw6)); +assign Cbbjw6 = (~(Jbbjw6 & Qbbjw6)); +assign Qbbjw6 = (Xbbjw6 & Ecbjw6); +assign Ecbjw6 = (Lcbjw6 & Scbjw6); +assign Scbjw6 = (Zcbjw6 & Ns3jw6); +assign Zcbjw6 = (~(Gdbjw6 & Uxyiw6)); +assign Gdbjw6 = (Kxb7z6[11] & Ndbjw6); +assign Lcbjw6 = (Udbjw6 & Bebjw6); +assign Bebjw6 = (~(Iebjw6 & Pebjw6)); +assign Iebjw6 = (~(Webjw6 & Quziw6)); +assign Webjw6 = (Dfbjw6 & Kfbjw6); +assign Kfbjw6 = (Ndbjw6 | Ninnv6); +assign Ndbjw6 = (Rfbjw6 | Rje7z6[11]); +assign Dfbjw6 = (~(Ofnnv6 & Rfbjw6)); +assign Udbjw6 = (~(Ri3ov6 & Ug3ov6)); +assign Xbbjw6 = (Yfbjw6 & Fgbjw6); +assign Fgbjw6 = (Mgbjw6 & Tgbjw6); +assign Tgbjw6 = (~(Xl3ov6 & C73ov6)); +assign Mgbjw6 = (~(J73ov6 & Hd3ov6)); +assign Yfbjw6 = (Ahbjw6 & Hhbjw6); +assign Hhbjw6 = (~(T0ziw6 & Rje7z6[11])); +assign Ahbjw6 = (Ryfov6 | Ohbjw6); +assign Jbbjw6 = (Vhbjw6 & Cibjw6); +assign Cibjw6 = (Jibjw6 & Qibjw6); +assign Qibjw6 = (Xibjw6 & Ejbjw6); +assign Ejbjw6 = (~(L0g7z6[11] & J2ziw6)); +assign Xibjw6 = (~(L0g7z6[27] & Q2ziw6)); +assign Jibjw6 = (Ljbjw6 & Sjbjw6); +assign Sjbjw6 = (~(O1ziw6 & Onf7z6[11])); +assign Ljbjw6 = (~(U4ziw6 & Fhc7z6[11])); +assign Vhbjw6 = (Zjbjw6 & Bw2ov6); +assign Bw2ov6 = (Gkbjw6 & Nkbjw6); +assign Nkbjw6 = (~(Ukbjw6 & J9nnv6)); +assign Ukbjw6 = (~(Q9nnv6 | Icziw6)); +assign Gkbjw6 = (~(Blbjw6 & Ubziw6)); +assign Blbjw6 = (~(J9nnv6 ^ Q9nnv6)); +assign Q9nnv6 = (Ilbjw6 ^ Mennv6); +assign Ilbjw6 = (~(Plbjw6 & Wlbjw6)); +assign Wlbjw6 = (Dmbjw6 & Kmbjw6); +assign Kmbjw6 = (Rmbjw6 & Ymbjw6); +assign Ymbjw6 = (~(Yxf7z6[13] & Su0jw6)); +assign Rmbjw6 = (Fnbjw6 & Mnbjw6); +assign Mnbjw6 = (~(Yxf7z6[11] & Nv0jw6)); +assign Fnbjw6 = (~(Yxf7z6[12] & Uv0jw6)); +assign Dmbjw6 = (Tnbjw6 & Aobjw6); +assign Aobjw6 = (~(Yxf7z6[14] & Pw0jw6)); +assign Tnbjw6 = (Hobjw6 | Dx0jw6); +assign Plbjw6 = (Oobjw6 & Vobjw6); +assign Vobjw6 = (Cpbjw6 & Jpbjw6); +assign Jpbjw6 = (~(Onf7z6[11] & My0jw6)); +assign Cpbjw6 = (Qpbjw6 & Xpbjw6); +assign Xpbjw6 = (~(Hz0jw6 & Kxb7z6[11])); +assign Qpbjw6 = (~(Oz0jw6 & Fhc7z6[11])); +assign Oobjw6 = (Eqbjw6 & Lqbjw6); +assign Lqbjw6 = (~(Onf7z6[27] & J01jw6)); +assign Eqbjw6 = (~(Alf7z6[11] & Q01jw6)); +assign J9nnv6 = (~(Sqbjw6 ^ Tennv6)); +assign Sqbjw6 = (~(Zqbjw6 & Grbjw6)); +assign Grbjw6 = (~(Yxf7z6[11] & Gbziw6)); +assign Zqbjw6 = (~(Kxb7z6[11] & Nbziw6)); +assign Zjbjw6 = (Nrbjw6 & Urbjw6); +assign Urbjw6 = (~(Z3ziw6 & Fhc7z6[20])); +assign Nrbjw6 = (~(Uzldt6 & Oztiw6)); +assign I0bjw6 = (Bsbjw6 & Isbjw6); +assign Isbjw6 = (~(Ve2ov6 & vis_pc_o[11])); +assign Bsbjw6 = (~(Fhc7z6[11] & Cf2ov6)); +assign S2z7v6 = (~(Psbjw6 & Wsbjw6)); +assign Wsbjw6 = (Dtbjw6 & Ktbjw6); +assign Ktbjw6 = (Eu9ov6 | Rtbjw6); +assign Dtbjw6 = (Ytbjw6 & Fubjw6); +assign Fubjw6 = (~(Gv9ov6 & H9yiw6)); +assign Ytbjw6 = (~(Uv9ov6 & Kz97z6)); +assign Psbjw6 = (Mubjw6 & Tubjw6); +assign Tubjw6 = (~(Pw9ov6 & Kxb7z6[19])); +assign Mubjw6 = (Avbjw6 & Hvbjw6); +assign Hvbjw6 = (~(Kx9ov6 & vis_pc_o[19])); +assign Avbjw6 = (~(Gli7z6[19] & Rx9ov6)); +assign L2z7v6 = (~(Ovbjw6 & Vvbjw6)); +assign Vvbjw6 = (Cwbjw6 & Jwbjw6); +assign Jwbjw6 = (~(H02ov6 & Kz97z6)); +assign Cwbjw6 = (Qwbjw6 & Xwbjw6); +assign Xwbjw6 = (C12ov6 | G7knv6); +assign G7knv6 = (Exbjw6 & Lxbjw6); +assign Lxbjw6 = (Sxbjw6 & Zxbjw6); +assign Zxbjw6 = (Gybjw6 & Nybjw6); +assign Nybjw6 = (Uybjw6 & Bzbjw6); +assign Bzbjw6 = (~(vis_psp_o[19] & N32ov6)); +assign Uybjw6 = (~(U32ov6 & Pic7z6[19])); +assign Gybjw6 = (Izbjw6 & Pzbjw6); +assign Pzbjw6 = (~(vis_msp_o[19] & P42ov6)); +assign Izbjw6 = (~(vis_r12_o[19] & W42ov6)); +assign Sxbjw6 = (Wzbjw6 & D0cjw6); +assign D0cjw6 = (K0cjw6 & R0cjw6); +assign R0cjw6 = (~(vis_r11_o[19] & F62ov6)); +assign K0cjw6 = (~(vis_r10_o[19] & M62ov6)); +assign Wzbjw6 = (Y0cjw6 & F1cjw6); +assign F1cjw6 = (~(vis_r9_o[19] & H72ov6)); +assign Y0cjw6 = (~(vis_r8_o[19] & O72ov6)); +assign Exbjw6 = (M1cjw6 & T1cjw6); +assign T1cjw6 = (A2cjw6 & H2cjw6); +assign H2cjw6 = (O2cjw6 & V2cjw6); +assign V2cjw6 = (~(vis_r7_o[19] & L92ov6)); +assign O2cjw6 = (~(vis_r6_o[19] & S92ov6)); +assign A2cjw6 = (C3cjw6 & J3cjw6); +assign J3cjw6 = (~(vis_r5_o[19] & Na2ov6)); +assign C3cjw6 = (~(vis_r4_o[19] & Ua2ov6)); +assign M1cjw6 = (Q3cjw6 & X3cjw6); +assign X3cjw6 = (E4cjw6 & L4cjw6); +assign L4cjw6 = (~(vis_r3_o[19] & Dc2ov6)); +assign E4cjw6 = (~(vis_r2_o[19] & Kc2ov6)); +assign Q3cjw6 = (S4cjw6 & Z4cjw6); +assign Z4cjw6 = (~(vis_r1_o[19] & Fd2ov6)); +assign S4cjw6 = (~(vis_r0_o[19] & Md2ov6)); +assign Qwbjw6 = (~(Td2ov6 & H9yiw6)); +assign H9yiw6 = (Spyiw6 ? Kz97z6 : Gli7z6[19]); +assign Kz97z6 = (~(G5cjw6 & N5cjw6)); +assign N5cjw6 = (~(Nqyiw6 & Vpynv6)); +assign G5cjw6 = (U5cjw6 & B6cjw6); +assign B6cjw6 = (~(Pdc7z6[19] & Ouyiw6)); +assign U5cjw6 = (~(Vuyiw6 & I6cjw6)); +assign I6cjw6 = (~(P6cjw6 & W6cjw6)); +assign W6cjw6 = (D7cjw6 & K7cjw6); +assign K7cjw6 = (R7cjw6 & Y7cjw6); +assign Y7cjw6 = (F8cjw6 & M8cjw6); +assign M8cjw6 = (~(T8cjw6 & Uxyiw6)); +assign T8cjw6 = (Kxb7z6[19] & A9cjw6); +assign F8cjw6 = (~(H9cjw6 & O9cjw6)); +assign H9cjw6 = (~(V9cjw6 & Quziw6)); +assign V9cjw6 = (Cacjw6 & Jacjw6); +assign Jacjw6 = (A9cjw6 | Ninnv6); +assign A9cjw6 = (Qacjw6 | Rje7z6[19]); +assign Cacjw6 = (~(Ofnnv6 & Qacjw6)); +assign R7cjw6 = (Xacjw6 & Ebcjw6); +assign Ebcjw6 = (~(J73ov6 & Ri3ov6)); +assign Xacjw6 = (~(F7ziw6 & Hd3ov6)); +assign D7cjw6 = (Lbcjw6 & Sbcjw6); +assign Sbcjw6 = (Zbcjw6 & Gccjw6); +assign Gccjw6 = (~(R6ziw6 & Ad3ov6)); +assign Zbcjw6 = (~(T0ziw6 & Rje7z6[19])); +assign Lbcjw6 = (Nccjw6 & Uccjw6); +assign Uccjw6 = (Ryfov6 | Bdcjw6); +assign Nccjw6 = (~(L0g7z6[19] & J2ziw6)); +assign P6cjw6 = (Idcjw6 & Pdcjw6); +assign Pdcjw6 = (Wdcjw6 & Decjw6); +assign Decjw6 = (Kecjw6 & Recjw6); +assign Recjw6 = (~(Cqf7z6[3] & Q2ziw6)); +assign Kecjw6 = (~(L0g7z6[3] & O1ziw6)); +assign Wdcjw6 = (Yecjw6 & Ffcjw6); +assign Ffcjw6 = (~(U4ziw6 & V1c7z6[19])); +assign Yecjw6 = (~(Z3ziw6 & Fhc7z6[12])); +assign Idcjw6 = (Mfcjw6 & My2ov6); +assign My2ov6 = (Tfcjw6 & Agcjw6); +assign Agcjw6 = (~(Hgcjw6 & B5nnv6)); +assign Hgcjw6 = (~(I5nnv6 | Icziw6)); +assign Tfcjw6 = (~(Ogcjw6 & Ubziw6)); +assign Ogcjw6 = (~(B5nnv6 ^ I5nnv6)); +assign I5nnv6 = (Vgcjw6 ^ Mennv6); +assign Vgcjw6 = (~(Chcjw6 & Jhcjw6)); +assign Jhcjw6 = (Qhcjw6 & Xhcjw6); +assign Xhcjw6 = (Eicjw6 & Licjw6); +assign Licjw6 = (~(Yxf7z6[21] & Su0jw6)); +assign Eicjw6 = (Sicjw6 & Zicjw6); +assign Zicjw6 = (~(Yxf7z6[19] & Nv0jw6)); +assign Sicjw6 = (~(Yxf7z6[20] & Uv0jw6)); +assign Qhcjw6 = (Gjcjw6 & Njcjw6); +assign Njcjw6 = (~(Yxf7z6[22] & Pw0jw6)); +assign Gjcjw6 = (~(Ujcjw6 & Rdziw6)); +assign Chcjw6 = (Bkcjw6 & Ikcjw6); +assign Ikcjw6 = (Pkcjw6 & Wkcjw6); +assign Wkcjw6 = (~(Onf7z6[19] & My0jw6)); +assign Pkcjw6 = (Dlcjw6 & Klcjw6); +assign Klcjw6 = (~(Hz0jw6 & Kxb7z6[19])); +assign Dlcjw6 = (~(Oz0jw6 & Fhc7z6[19])); +assign Bkcjw6 = (Rlcjw6 & Ylcjw6); +assign Ylcjw6 = (~(Alf7z6[3] & J01jw6)); +assign Rlcjw6 = (~(Alf7z6[19] & Q01jw6)); +assign B5nnv6 = (~(Fmcjw6 ^ Tennv6)); +assign Fmcjw6 = (~(Mmcjw6 & Tmcjw6)); +assign Tmcjw6 = (~(Yxf7z6[3] & Laziw6)); +assign Mmcjw6 = (Ikg6x6 & Pkg6x6); +assign Pkg6x6 = (~(Yxf7z6[19] & Gbziw6)); +assign Ikg6x6 = (~(Kxb7z6[19] & Nbziw6)); +assign Mfcjw6 = (T7ziw6 & Wkg6x6); +assign Wkg6x6 = (~(Wildt6 & Oztiw6)); +assign Ovbjw6 = (Dlg6x6 & Klg6x6); +assign Klg6x6 = (~(Ve2ov6 & vis_pc_o[19])); +assign Dlg6x6 = (~(Fhc7z6[19] & Cf2ov6)); +assign E2z7v6 = (~(Rlg6x6 & Ylg6x6)); +assign Ylg6x6 = (Fmg6x6 & Mmg6x6); +assign Mmg6x6 = (Eu9ov6 | Tmg6x6); +assign Fmg6x6 = (Ang6x6 & Hng6x6); +assign Hng6x6 = (~(Gv9ov6 & Qayiw6)); +assign Ang6x6 = (~(Uv9ov6 & Y0a7z6)); +assign Rlg6x6 = (Ong6x6 & Vng6x6); +assign Vng6x6 = (~(Pw9ov6 & Kxb7z6[12])); +assign Ong6x6 = (Cog6x6 & Jog6x6); +assign Jog6x6 = (~(Kx9ov6 & vis_pc_o[12])); +assign Cog6x6 = (~(Gli7z6[12] & Rx9ov6)); +assign X1z7v6 = (~(Qog6x6 & Xog6x6)); +assign Xog6x6 = (Epg6x6 & Lpg6x6); +assign Lpg6x6 = (~(H02ov6 & Y0a7z6)); +assign Epg6x6 = (Spg6x6 & Zpg6x6); +assign Zpg6x6 = (C12ov6 | Oiknv6); +assign Oiknv6 = (Gqg6x6 & Nqg6x6); +assign Nqg6x6 = (Uqg6x6 & Brg6x6); +assign Brg6x6 = (Irg6x6 & Prg6x6); +assign Prg6x6 = (Wrg6x6 & Dsg6x6); +assign Dsg6x6 = (~(vis_psp_o[12] & N32ov6)); +assign Wrg6x6 = (~(U32ov6 & Pic7z6[12])); +assign Irg6x6 = (Ksg6x6 & Rsg6x6); +assign Rsg6x6 = (~(vis_msp_o[12] & P42ov6)); +assign Ksg6x6 = (~(vis_r12_o[12] & W42ov6)); +assign Uqg6x6 = (Ysg6x6 & Ftg6x6); +assign Ftg6x6 = (Mtg6x6 & Ttg6x6); +assign Ttg6x6 = (~(vis_r11_o[12] & F62ov6)); +assign Mtg6x6 = (~(vis_r10_o[12] & M62ov6)); +assign Ysg6x6 = (Aug6x6 & Hug6x6); +assign Hug6x6 = (~(vis_r9_o[12] & H72ov6)); +assign Aug6x6 = (~(vis_r8_o[12] & O72ov6)); +assign Gqg6x6 = (Oug6x6 & Vug6x6); +assign Vug6x6 = (Cvg6x6 & Jvg6x6); +assign Jvg6x6 = (Qvg6x6 & Xvg6x6); +assign Xvg6x6 = (~(vis_r7_o[12] & L92ov6)); +assign Qvg6x6 = (~(vis_r6_o[12] & S92ov6)); +assign Cvg6x6 = (Ewg6x6 & Lwg6x6); +assign Lwg6x6 = (~(vis_r5_o[12] & Na2ov6)); +assign Ewg6x6 = (~(vis_r4_o[12] & Ua2ov6)); +assign Oug6x6 = (Swg6x6 & Zwg6x6); +assign Zwg6x6 = (Gxg6x6 & Nxg6x6); +assign Nxg6x6 = (~(vis_r3_o[12] & Dc2ov6)); +assign Gxg6x6 = (~(vis_r2_o[12] & Kc2ov6)); +assign Swg6x6 = (Uxg6x6 & Byg6x6); +assign Byg6x6 = (~(vis_r1_o[12] & Fd2ov6)); +assign Uxg6x6 = (~(vis_r0_o[12] & Md2ov6)); +assign Spg6x6 = (~(Td2ov6 & Qayiw6)); +assign Qayiw6 = (Spyiw6 ? Y0a7z6 : Gli7z6[12]); +assign Y0a7z6 = (~(Iyg6x6 & Pyg6x6)); +assign Pyg6x6 = (~(Nqyiw6 & Gkznv6)); +assign Iyg6x6 = (Wyg6x6 & Dzg6x6); +assign Dzg6x6 = (~(Pdc7z6[12] & Ouyiw6)); +assign Wyg6x6 = (~(Vuyiw6 & Kzg6x6)); +assign Kzg6x6 = (~(Rzg6x6 & Yzg6x6)); +assign Yzg6x6 = (F0h6x6 & M0h6x6); +assign M0h6x6 = (T0h6x6 & A1h6x6); +assign A1h6x6 = (H1h6x6 & Ns3jw6); +assign H1h6x6 = (~(O1h6x6 & Uxyiw6)); +assign O1h6x6 = (Kxb7z6[12] & V1h6x6); +assign T0h6x6 = (C2h6x6 & J2h6x6); +assign J2h6x6 = (~(Q2h6x6 & X2h6x6)); +assign Q2h6x6 = (~(E3h6x6 & Quziw6)); +assign E3h6x6 = (L3h6x6 & S3h6x6); +assign S3h6x6 = (V1h6x6 | Ninnv6); +assign V1h6x6 = (~(Z3h6x6 & G4h6x6)); +assign Z3h6x6 = (!Rje7z6[12]); +assign L3h6x6 = (G4h6x6 | Evziw6); +assign C2h6x6 = (~(Em3ov6 & C73ov6)); +assign F0h6x6 = (N4h6x6 & U4h6x6); +assign U4h6x6 = (B5h6x6 & I5h6x6); +assign I5h6x6 = (~(Ki3ov6 & Ug3ov6)); +assign B5h6x6 = (~(J73ov6 & Od3ov6)); +assign N4h6x6 = (P5h6x6 & W5h6x6); +assign W5h6x6 = (~(T0ziw6 & Rje7z6[12])); +assign P5h6x6 = (G4h6x6 | Ryfov6); +assign Rzg6x6 = (D6h6x6 & K6h6x6); +assign K6h6x6 = (R6h6x6 & Y6h6x6); +assign Y6h6x6 = (F7h6x6 & M7h6x6); +assign M7h6x6 = (~(L0g7z6[12] & J2ziw6)); +assign F7h6x6 = (~(L0g7z6[28] & Q2ziw6)); +assign R6h6x6 = (T7h6x6 & A8h6x6); +assign A8h6x6 = (~(O1ziw6 & Onf7z6[12])); +assign T7h6x6 = (~(U4ziw6 & Fhc7z6[12])); +assign D6h6x6 = (H8h6x6 & Fy2ov6); +assign Fy2ov6 = (O8h6x6 & V8h6x6); +assign V8h6x6 = (~(C9h6x6 & V8nnv6)); +assign C9h6x6 = (~(C9nnv6 | Icziw6)); +assign O8h6x6 = (~(J9h6x6 & Ubziw6)); +assign J9h6x6 = (~(V8nnv6 ^ C9nnv6)); +assign C9nnv6 = (Q9h6x6 ^ Mennv6); +assign Q9h6x6 = (~(X9h6x6 & Eah6x6)); +assign Eah6x6 = (Lah6x6 & Sah6x6); +assign Sah6x6 = (Zah6x6 & Gbh6x6); +assign Gbh6x6 = (~(Yxf7z6[14] & Su0jw6)); +assign Zah6x6 = (Nbh6x6 & Ubh6x6); +assign Ubh6x6 = (~(Yxf7z6[12] & Nv0jw6)); +assign Nbh6x6 = (~(Yxf7z6[13] & Uv0jw6)); +assign Lah6x6 = (Bch6x6 & Ich6x6); +assign Ich6x6 = (~(Pw0jw6 & Yxf7z6[15])); +assign Bch6x6 = (Pch6x6 | Dx0jw6); +assign X9h6x6 = (Wch6x6 & Ddh6x6); +assign Ddh6x6 = (Kdh6x6 & Rdh6x6); +assign Rdh6x6 = (~(Onf7z6[12] & My0jw6)); +assign Kdh6x6 = (Ydh6x6 & Feh6x6); +assign Feh6x6 = (~(Hz0jw6 & Kxb7z6[12])); +assign Ydh6x6 = (~(Oz0jw6 & Fhc7z6[12])); +assign Wch6x6 = (Meh6x6 & Teh6x6); +assign Teh6x6 = (~(J01jw6 & Onf7z6[28])); +assign Meh6x6 = (~(Q01jw6 & Alf7z6[12])); +assign V8nnv6 = (~(Afh6x6 ^ Tennv6)); +assign Afh6x6 = (~(Hfh6x6 & Ofh6x6)); +assign Ofh6x6 = (~(Yxf7z6[12] & Gbziw6)); +assign Hfh6x6 = (~(Kxb7z6[12] & Nbziw6)); +assign H8h6x6 = (Vfh6x6 & Cgh6x6); +assign Cgh6x6 = (~(Z3ziw6 & Fhc7z6[19])); +assign Vfh6x6 = (~(Rxldt6 & Oztiw6)); +assign Qog6x6 = (Jgh6x6 & Qgh6x6); +assign Qgh6x6 = (~(Ve2ov6 & vis_pc_o[12])); +assign Jgh6x6 = (~(Fhc7z6[12] & Cf2ov6)); +assign Q1z7v6 = (~(Xgh6x6 & Ehh6x6)); +assign Ehh6x6 = (Lhh6x6 & Shh6x6); +assign Shh6x6 = (Eu9ov6 | Zhh6x6); +assign Lhh6x6 = (Gih6x6 & Nih6x6); +assign Nih6x6 = (~(Gv9ov6 & Ncyiw6)); +assign Gih6x6 = (~(Uv9ov6 & U2a7z6)); +assign Xgh6x6 = (Uih6x6 & Bjh6x6); +assign Bjh6x6 = (~(Pw9ov6 & Kxb7z6[3])); +assign Uih6x6 = (Ijh6x6 & Pjh6x6); +assign Pjh6x6 = (~(Kx9ov6 & vis_pc_o[3])); +assign Ijh6x6 = (~(Gli7z6[3] & Rx9ov6)); +assign J1z7v6 = (~(Wjh6x6 & Dkh6x6)); +assign Dkh6x6 = (Kkh6x6 & Rkh6x6); +assign Rkh6x6 = (~(H02ov6 & U2a7z6)); +assign Kkh6x6 = (Ykh6x6 & Flh6x6); +assign Flh6x6 = (C12ov6 | Mijnv6); +assign Mijnv6 = (Mlh6x6 & Tlh6x6); +assign Tlh6x6 = (Amh6x6 & Hmh6x6); +assign Hmh6x6 = (Omh6x6 & Vmh6x6); +assign Vmh6x6 = (Cnh6x6 & Jnh6x6); +assign Jnh6x6 = (~(vis_psp_o[3] & N32ov6)); +assign Cnh6x6 = (~(U32ov6 & Pic7z6[3])); +assign Omh6x6 = (Qnh6x6 & Xnh6x6); +assign Xnh6x6 = (~(vis_msp_o[3] & P42ov6)); +assign Qnh6x6 = (~(vis_r12_o[3] & W42ov6)); +assign Amh6x6 = (Eoh6x6 & Loh6x6); +assign Loh6x6 = (Soh6x6 & Zoh6x6); +assign Zoh6x6 = (~(vis_r11_o[3] & F62ov6)); +assign Soh6x6 = (~(vis_r10_o[3] & M62ov6)); +assign Eoh6x6 = (Gph6x6 & Nph6x6); +assign Nph6x6 = (~(vis_r9_o[3] & H72ov6)); +assign Gph6x6 = (~(vis_r8_o[3] & O72ov6)); +assign Mlh6x6 = (Uph6x6 & Bqh6x6); +assign Bqh6x6 = (Iqh6x6 & Pqh6x6); +assign Pqh6x6 = (Wqh6x6 & Drh6x6); +assign Drh6x6 = (~(vis_r7_o[3] & L92ov6)); +assign Wqh6x6 = (~(vis_r6_o[3] & S92ov6)); +assign Iqh6x6 = (Krh6x6 & Rrh6x6); +assign Rrh6x6 = (~(vis_r5_o[3] & Na2ov6)); +assign Krh6x6 = (~(vis_r4_o[3] & Ua2ov6)); +assign Uph6x6 = (Yrh6x6 & Fsh6x6); +assign Fsh6x6 = (Msh6x6 & Tsh6x6); +assign Tsh6x6 = (~(vis_r3_o[3] & Dc2ov6)); +assign Msh6x6 = (~(vis_r2_o[3] & Kc2ov6)); +assign Yrh6x6 = (Ath6x6 & Hth6x6); +assign Hth6x6 = (~(vis_r1_o[3] & Fd2ov6)); +assign Ath6x6 = (~(vis_r0_o[3] & Md2ov6)); +assign Ykh6x6 = (~(Td2ov6 & Ncyiw6)); +assign Ncyiw6 = (Spyiw6 ? U2a7z6 : Gli7z6[3]); +assign U2a7z6 = (~(Oth6x6 & Vth6x6)); +assign Vth6x6 = (~(Nqyiw6 & Pk0ov6)); +assign Oth6x6 = (Cuh6x6 & Juh6x6); +assign Juh6x6 = (~(Pdc7z6[3] & Ouyiw6)); +assign Cuh6x6 = (~(Vuyiw6 & Quh6x6)); +assign Quh6x6 = (~(Xuh6x6 & Evh6x6)); +assign Evh6x6 = (Lvh6x6 & Svh6x6); +assign Svh6x6 = (Zvh6x6 & Gwh6x6); +assign Gwh6x6 = (Nwh6x6 & Uwh6x6); +assign Uwh6x6 = (~(Bxh6x6 & Uxyiw6)); +assign Bxh6x6 = (Kxb7z6[3] & Ixh6x6); +assign Nwh6x6 = (~(Pxh6x6 & Jm0jw6)); +assign Pxh6x6 = (Nob7z6[3] & Rslov6); +assign Zvh6x6 = (Wxh6x6 & Dyh6x6); +assign Dyh6x6 = (~(Kyh6x6 & Ryh6x6)); +assign Kyh6x6 = (~(Yyh6x6 & Quziw6)); +assign Yyh6x6 = (Fzh6x6 & Mzh6x6); +assign Mzh6x6 = (Ixh6x6 | Ninnv6); +assign Ixh6x6 = (Tzh6x6 | Rje7z6[3]); +assign Fzh6x6 = (~(Ofnnv6 & Tzh6x6)); +assign Wxh6x6 = (~(Svziw6 & Wjnnv6)); +assign Lvh6x6 = (A0i6x6 & H0i6x6); +assign H0i6x6 = (O0i6x6 & V0i6x6); +assign V0i6x6 = (~(Ri3ov6 & C73ov6)); +assign Ri3ov6 = (~(Hobjw6 ^ Dte7z6[1])); +assign Hobjw6 = (T3cdt6 ? Ceohw6 : S04ov6); +assign O0i6x6 = (~(Ol0jw6 & Xl3ov6)); +assign A0i6x6 = (C1i6x6 & J1i6x6); +assign J1i6x6 = (~(J73ov6 & Ad3ov6)); +assign C1i6x6 = (~(T0ziw6 & Rje7z6[3])); +assign Xuh6x6 = (Q1i6x6 & X1i6x6); +assign X1i6x6 = (E2i6x6 & L2i6x6); +assign L2i6x6 = (S2i6x6 & Z2i6x6); +assign Z2i6x6 = (Ryfov6 | G3i6x6); +assign S2i6x6 = (~(L0g7z6[3] & J2ziw6)); +assign E2i6x6 = (N3i6x6 & U3i6x6); +assign U3i6x6 = (~(L0g7z6[19] & Q2ziw6)); +assign N3i6x6 = (~(O1ziw6 & Onf7z6[3])); +assign Q1i6x6 = (B4i6x6 & I4i6x6); +assign I4i6x6 = (P4i6x6 & W4i6x6); +assign W4i6x6 = (~(U4ziw6 & E3c7z6[3])); +assign P4i6x6 = (~(Z3ziw6 & Fhc7z6[28])); +assign B4i6x6 = (Az2ov6 & D5i6x6); +assign D5i6x6 = (~(Sgmdt6 & Oztiw6)); +assign Az2ov6 = (K5i6x6 & R5i6x6); +assign R5i6x6 = (~(Y5i6x6 & Nxmnv6)); +assign Y5i6x6 = (~(Uxmnv6 | Icziw6)); +assign K5i6x6 = (~(F6i6x6 & Ubziw6)); +assign F6i6x6 = (~(Nxmnv6 ^ Uxmnv6)); +assign Uxmnv6 = (M6i6x6 ^ Mennv6); +assign M6i6x6 = (~(T6i6x6 & A7i6x6)); +assign A7i6x6 = (H7i6x6 & O7i6x6); +assign O7i6x6 = (V7i6x6 & C8i6x6); +assign C8i6x6 = (~(Yxf7z6[5] & Su0jw6)); +assign V7i6x6 = (J8i6x6 & Q8i6x6); +assign Q8i6x6 = (~(Yxf7z6[3] & Nv0jw6)); +assign J8i6x6 = (~(Yxf7z6[4] & Uv0jw6)); +assign H7i6x6 = (X8i6x6 & E9i6x6); +assign E9i6x6 = (~(Yxf7z6[6] & Pw0jw6)); +assign X8i6x6 = (L9i6x6 | Dx0jw6); +assign T6i6x6 = (S9i6x6 & Z9i6x6); +assign Z9i6x6 = (Gai6x6 & Nai6x6); +assign Nai6x6 = (~(Onf7z6[3] & My0jw6)); +assign Gai6x6 = (Uai6x6 & Bbi6x6); +assign Bbi6x6 = (~(Hz0jw6 & Kxb7z6[3])); +assign Uai6x6 = (~(Oz0jw6 & E3c7z6[3])); +assign S9i6x6 = (Ibi6x6 & Pbi6x6); +assign Pbi6x6 = (~(Onf7z6[19] & J01jw6)); +assign Ibi6x6 = (~(Alf7z6[3] & Q01jw6)); +assign Nxmnv6 = (~(Wbi6x6 ^ Tennv6)); +assign Wbi6x6 = (~(Dci6x6 & Kci6x6)); +assign Kci6x6 = (~(Yxf7z6[3] & Gbziw6)); +assign Dci6x6 = (~(Kxb7z6[3] & Nbziw6)); +assign Wjh6x6 = (Rci6x6 & Yci6x6); +assign Yci6x6 = (~(Ve2ov6 & vis_pc_o[3])); +assign Rci6x6 = (~(E3c7z6[3] & Cf2ov6)); +assign C1z7v6 = (~(Fdi6x6 & Mdi6x6)); +assign Mdi6x6 = (Tdi6x6 & Aei6x6); +assign Aei6x6 = (Eu9ov6 | Hei6x6); +assign Tdi6x6 = (Oei6x6 & Vei6x6); +assign Vei6x6 = (~(Gv9ov6 & Gcyiw6)); +assign Oei6x6 = (~(Uv9ov6 & M2a7z6)); +assign Fdi6x6 = (Cfi6x6 & Jfi6x6); +assign Jfi6x6 = (~(Pw9ov6 & Kxb7z6[5])); +assign Cfi6x6 = (Qfi6x6 & Xfi6x6); +assign Xfi6x6 = (~(Kx9ov6 & vis_pc_o[5])); +assign Qfi6x6 = (~(Gli7z6[5] & Rx9ov6)); +assign V0z7v6 = (~(Egi6x6 & Lgi6x6)); +assign Lgi6x6 = (Sgi6x6 & Zgi6x6); +assign Zgi6x6 = (~(H02ov6 & M2a7z6)); +assign Sgi6x6 = (Ghi6x6 & Nhi6x6); +assign Nhi6x6 = (C12ov6 | Gfjnv6); +assign Gfjnv6 = (Uhi6x6 & Bii6x6); +assign Bii6x6 = (Iii6x6 & Pii6x6); +assign Pii6x6 = (Wii6x6 & Dji6x6); +assign Dji6x6 = (Kji6x6 & Rji6x6); +assign Rji6x6 = (~(vis_psp_o[5] & N32ov6)); +assign Kji6x6 = (~(U32ov6 & Pic7z6[5])); +assign Wii6x6 = (Yji6x6 & Fki6x6); +assign Fki6x6 = (~(vis_msp_o[5] & P42ov6)); +assign Yji6x6 = (~(vis_r12_o[5] & W42ov6)); +assign Iii6x6 = (Mki6x6 & Tki6x6); +assign Tki6x6 = (Ali6x6 & Hli6x6); +assign Hli6x6 = (~(vis_r11_o[5] & F62ov6)); +assign Ali6x6 = (~(vis_r10_o[5] & M62ov6)); +assign Mki6x6 = (Oli6x6 & Vli6x6); +assign Vli6x6 = (~(vis_r9_o[5] & H72ov6)); +assign Oli6x6 = (~(vis_r8_o[5] & O72ov6)); +assign Uhi6x6 = (Cmi6x6 & Jmi6x6); +assign Jmi6x6 = (Qmi6x6 & Xmi6x6); +assign Xmi6x6 = (Eni6x6 & Lni6x6); +assign Lni6x6 = (~(vis_r7_o[5] & L92ov6)); +assign Eni6x6 = (~(vis_r6_o[5] & S92ov6)); +assign Qmi6x6 = (Sni6x6 & Zni6x6); +assign Zni6x6 = (~(vis_r5_o[5] & Na2ov6)); +assign Sni6x6 = (~(vis_r4_o[5] & Ua2ov6)); +assign Cmi6x6 = (Goi6x6 & Noi6x6); +assign Noi6x6 = (Uoi6x6 & Bpi6x6); +assign Bpi6x6 = (~(vis_r3_o[5] & Dc2ov6)); +assign Uoi6x6 = (~(vis_r2_o[5] & Kc2ov6)); +assign Goi6x6 = (Ipi6x6 & Ppi6x6); +assign Ppi6x6 = (~(vis_r1_o[5] & Fd2ov6)); +assign Ipi6x6 = (~(vis_r0_o[5] & Md2ov6)); +assign Ghi6x6 = (~(Td2ov6 & Gcyiw6)); +assign Gcyiw6 = (Spyiw6 ? M2a7z6 : Gli7z6[5]); +assign M2a7z6 = (~(Wpi6x6 & Dqi6x6)); +assign Dqi6x6 = (~(Nqyiw6 & Nc0ov6)); +assign Wpi6x6 = (Kqi6x6 & Rqi6x6); +assign Rqi6x6 = (~(Pdc7z6[5] & Ouyiw6)); +assign Kqi6x6 = (~(Vuyiw6 & Yqi6x6)); +assign Yqi6x6 = (~(Fri6x6 & Mri6x6)); +assign Mri6x6 = (Tri6x6 & Asi6x6); +assign Asi6x6 = (Hsi6x6 & Osi6x6); +assign Osi6x6 = (Vsi6x6 & Cti6x6); +assign Cti6x6 = (~(Jm0jw6 & Jti6x6)); +assign Vsi6x6 = (Qti6x6 & Xti6x6); +assign Xti6x6 = (~(Eui6x6 & Uxyiw6)); +assign Eui6x6 = (Kxb7z6[5] & Lui6x6); +assign Qti6x6 = (~(Xs3ov6 & Sui6x6)); +assign Sui6x6 = (~(Zui6x6 & Quziw6)); +assign Zui6x6 = (Gvi6x6 & Nvi6x6); +assign Nvi6x6 = (Lui6x6 | Ninnv6); +assign Lui6x6 = (Uvi6x6 | Rje7z6[5]); +assign Gvi6x6 = (~(Ofnnv6 & Uvi6x6)); +assign Hsi6x6 = (Bwi6x6 & Iwi6x6); +assign Iwi6x6 = (~(Svziw6 & Bjnnv6)); +assign Bjnnv6 = (Pwi6x6 & Wwi6x6); +assign Pwi6x6 = (~(Dxi6x6 | Kxi6x6)); +assign Bwi6x6 = (~(J73ov6 & Rb3ov6)); +assign Tri6x6 = (Rxi6x6 & Yxi6x6); +assign Yxi6x6 = (Fyi6x6 & Myi6x6); +assign Myi6x6 = (~(Yi3ov6 & C73ov6)); +assign Fyi6x6 = (~(Ol0jw6 & Nn3ov6)); +assign Rxi6x6 = (Tyi6x6 & Azi6x6); +assign Azi6x6 = (~(Hzi6x6 & Ppb7z6[5])); +assign Tyi6x6 = (~(T0ziw6 & Rje7z6[5])); +assign Fri6x6 = (Ozi6x6 & Vzi6x6); +assign Vzi6x6 = (C0j6x6 & J0j6x6); +assign J0j6x6 = (Q0j6x6 & X0j6x6); +assign X0j6x6 = (Ryfov6 | E1j6x6); +assign E1j6x6 = (!Uvi6x6); +assign Q0j6x6 = (~(L0g7z6[5] & J2ziw6)); +assign C0j6x6 = (L1j6x6 & S1j6x6); +assign S1j6x6 = (~(L0g7z6[21] & Q2ziw6)); +assign L1j6x6 = (~(O1ziw6 & Onf7z6[5])); +assign Ozi6x6 = (Z1j6x6 & G2j6x6); +assign G2j6x6 = (N2j6x6 & U2j6x6); +assign U2j6x6 = (~(U4ziw6 & Fhc7z6[5])); +assign N2j6x6 = (~(Z3ziw6 & Fhc7z6[26])); +assign Z1j6x6 = (Ty2ov6 & B3j6x6); +assign B3j6x6 = (~(Mcmdt6 & Oztiw6)); +assign Ty2ov6 = (I3j6x6 & P3j6x6); +assign P3j6x6 = (~(W3j6x6 & Lwmnv6)); +assign W3j6x6 = (~(Swmnv6 | Icziw6)); +assign I3j6x6 = (~(D4j6x6 & Ubziw6)); +assign D4j6x6 = (~(Lwmnv6 ^ Swmnv6)); +assign Swmnv6 = (K4j6x6 ^ Mennv6); +assign K4j6x6 = (~(R4j6x6 & Y4j6x6)); +assign Y4j6x6 = (F5j6x6 & M5j6x6); +assign M5j6x6 = (T5j6x6 & A6j6x6); +assign A6j6x6 = (~(Yxf7z6[7] & Su0jw6)); +assign T5j6x6 = (H6j6x6 & O6j6x6); +assign O6j6x6 = (~(Yxf7z6[5] & Nv0jw6)); +assign H6j6x6 = (~(Yxf7z6[6] & Uv0jw6)); +assign F5j6x6 = (V6j6x6 & C7j6x6); +assign C7j6x6 = (~(Yxf7z6[8] & Pw0jw6)); +assign V6j6x6 = (~(J7j6x6 & Rdziw6)); +assign R4j6x6 = (Q7j6x6 & X7j6x6); +assign X7j6x6 = (E8j6x6 & L8j6x6); +assign L8j6x6 = (~(Onf7z6[5] & My0jw6)); +assign E8j6x6 = (S8j6x6 & Z8j6x6); +assign Z8j6x6 = (~(Hz0jw6 & Kxb7z6[5])); +assign S8j6x6 = (~(Oz0jw6 & Fhc7z6[5])); +assign Q7j6x6 = (G9j6x6 & N9j6x6); +assign N9j6x6 = (~(Onf7z6[21] & J01jw6)); +assign G9j6x6 = (~(Alf7z6[5] & Q01jw6)); +assign Lwmnv6 = (~(U9j6x6 ^ Tennv6)); +assign U9j6x6 = (~(Baj6x6 & Iaj6x6)); +assign Iaj6x6 = (~(Yxf7z6[5] & Gbziw6)); +assign Baj6x6 = (~(Kxb7z6[5] & Nbziw6)); +assign Egi6x6 = (Paj6x6 & Waj6x6); +assign Waj6x6 = (~(Ve2ov6 & vis_pc_o[5])); +assign Paj6x6 = (~(Fhc7z6[5] & Cf2ov6)); +assign O0z7v6 = (~(Dbj6x6 & Kbj6x6)); +assign Kbj6x6 = (Rbj6x6 & Ybj6x6); +assign Ybj6x6 = (Eu9ov6 | Fcj6x6); +assign Rbj6x6 = (Mcj6x6 & Tcj6x6); +assign Tcj6x6 = (~(Gv9ov6 & T8yiw6)); +assign Mcj6x6 = (~(Uv9ov6 & Uy97z6)); +assign Dbj6x6 = (Adj6x6 & Hdj6x6); +assign Hdj6x6 = (~(Pw9ov6 & Kxb7z6[21])); +assign Adj6x6 = (Odj6x6 & Vdj6x6); +assign Vdj6x6 = (~(Kx9ov6 & vis_pc_o[21])); +assign Odj6x6 = (~(Gli7z6[21] & Rx9ov6)); +assign H0z7v6 = (~(Cej6x6 & Jej6x6)); +assign Jej6x6 = (Qej6x6 & Xej6x6); +assign Xej6x6 = (~(H02ov6 & Uy97z6)); +assign Qej6x6 = (Efj6x6 & Lfj6x6); +assign Lfj6x6 = (C12ov6 | W1knv6); +assign W1knv6 = (Sfj6x6 & Zfj6x6); +assign Zfj6x6 = (Ggj6x6 & Ngj6x6); +assign Ngj6x6 = (Ugj6x6 & Bhj6x6); +assign Bhj6x6 = (Ihj6x6 & Phj6x6); +assign Phj6x6 = (~(vis_psp_o[21] & N32ov6)); +assign Ihj6x6 = (~(U32ov6 & Pic7z6[21])); +assign Ugj6x6 = (Whj6x6 & Dij6x6); +assign Dij6x6 = (~(vis_msp_o[21] & P42ov6)); +assign Whj6x6 = (~(vis_r12_o[21] & W42ov6)); +assign Ggj6x6 = (Kij6x6 & Rij6x6); +assign Rij6x6 = (Yij6x6 & Fjj6x6); +assign Fjj6x6 = (~(vis_r11_o[21] & F62ov6)); +assign Yij6x6 = (~(vis_r10_o[21] & M62ov6)); +assign Kij6x6 = (Mjj6x6 & Tjj6x6); +assign Tjj6x6 = (~(vis_r9_o[21] & H72ov6)); +assign Mjj6x6 = (~(vis_r8_o[21] & O72ov6)); +assign Sfj6x6 = (Akj6x6 & Hkj6x6); +assign Hkj6x6 = (Okj6x6 & Vkj6x6); +assign Vkj6x6 = (Clj6x6 & Jlj6x6); +assign Jlj6x6 = (~(vis_r7_o[21] & L92ov6)); +assign Clj6x6 = (~(vis_r6_o[21] & S92ov6)); +assign Okj6x6 = (Qlj6x6 & Xlj6x6); +assign Xlj6x6 = (~(vis_r5_o[21] & Na2ov6)); +assign Qlj6x6 = (~(vis_r4_o[21] & Ua2ov6)); +assign Akj6x6 = (Emj6x6 & Lmj6x6); +assign Lmj6x6 = (Smj6x6 & Zmj6x6); +assign Zmj6x6 = (~(vis_r3_o[21] & Dc2ov6)); +assign Smj6x6 = (~(vis_r2_o[21] & Kc2ov6)); +assign Emj6x6 = (Gnj6x6 & Nnj6x6); +assign Nnj6x6 = (~(vis_r1_o[21] & Fd2ov6)); +assign Gnj6x6 = (~(vis_r0_o[21] & Md2ov6)); +assign Efj6x6 = (~(Td2ov6 & T8yiw6)); +assign T8yiw6 = (Spyiw6 ? Uy97z6 : Gli7z6[21]); +assign Uy97z6 = (~(Unj6x6 & Boj6x6)); +assign Boj6x6 = (~(Nqyiw6 & Rgynv6)); +assign Unj6x6 = (Ioj6x6 & Poj6x6); +assign Poj6x6 = (~(Pdc7z6[21] & Ouyiw6)); +assign Ioj6x6 = (~(Vuyiw6 & Woj6x6)); +assign Woj6x6 = (~(Dpj6x6 & Kpj6x6)); +assign Kpj6x6 = (Rpj6x6 & Ypj6x6); +assign Ypj6x6 = (Fqj6x6 & Mqj6x6); +assign Mqj6x6 = (Tqj6x6 & Arj6x6); +assign Arj6x6 = (~(Hrj6x6 & Uxyiw6)); +assign Hrj6x6 = (Kxb7z6[21] & Orj6x6); +assign Tqj6x6 = (~(Vrj6x6 & Csj6x6)); +assign Vrj6x6 = (~(Jsj6x6 & Quziw6)); +assign Jsj6x6 = (Qsj6x6 & Xsj6x6); +assign Xsj6x6 = (Orj6x6 | Ninnv6); +assign Orj6x6 = (Etj6x6 | Rje7z6[21]); +assign Qsj6x6 = (~(Ofnnv6 & Etj6x6)); +assign Fqj6x6 = (Ltj6x6 & Stj6x6); +assign Stj6x6 = (~(R6ziw6 & Rb3ov6)); +assign Rb3ov6 = (Ph1jw6 ^ Dte7z6[1]); +assign Ph1jw6 = (T3cdt6 ? V1c7z6[29] : Lt3ov6); +assign Ltj6x6 = (~(J73ov6 & Yi3ov6)); +assign Rpj6x6 = (Ztj6x6 & Guj6x6); +assign Guj6x6 = (Nuj6x6 & Uuj6x6); +assign Uuj6x6 = (~(F7ziw6 & Kb3ov6)); +assign Nuj6x6 = (~(T0ziw6 & Rje7z6[21])); +assign Ztj6x6 = (Bvj6x6 & Ivj6x6); +assign Ivj6x6 = (Ryfov6 | Pvj6x6); +assign Bvj6x6 = (~(L0g7z6[21] & J2ziw6)); +assign Dpj6x6 = (Wvj6x6 & Dwj6x6); +assign Dwj6x6 = (Kwj6x6 & Rwj6x6); +assign Rwj6x6 = (Ywj6x6 & Fxj6x6); +assign Fxj6x6 = (~(Cqf7z6[5] & Q2ziw6)); +assign Ywj6x6 = (~(L0g7z6[5] & O1ziw6)); +assign Kwj6x6 = (Mxj6x6 & Txj6x6); +assign Txj6x6 = (~(U4ziw6 & V1c7z6[21])); +assign Mxj6x6 = (~(Z3ziw6 & Fhc7z6[10])); +assign Wvj6x6 = (Ayj6x6 & C03ov6); +assign C03ov6 = (Hyj6x6 & Oyj6x6); +assign Oyj6x6 = (~(Vyj6x6 & L3nnv6)); +assign Vyj6x6 = (~(S3nnv6 | Icziw6)); +assign Hyj6x6 = (~(Czj6x6 & Ubziw6)); +assign Czj6x6 = (~(L3nnv6 ^ S3nnv6)); +assign S3nnv6 = (Jzj6x6 ^ Mennv6); +assign Jzj6x6 = (~(Qzj6x6 & Xzj6x6)); +assign Xzj6x6 = (E0k6x6 & L0k6x6); +assign L0k6x6 = (S0k6x6 & Z0k6x6); +assign Z0k6x6 = (~(Yxf7z6[23] & Su0jw6)); +assign S0k6x6 = (G1k6x6 & N1k6x6); +assign N1k6x6 = (~(Yxf7z6[21] & Nv0jw6)); +assign G1k6x6 = (~(Yxf7z6[22] & Uv0jw6)); +assign E0k6x6 = (U1k6x6 & B2k6x6); +assign B2k6x6 = (~(Yxf7z6[24] & Pw0jw6)); +assign U1k6x6 = (~(I2k6x6 & Rdziw6)); +assign Qzj6x6 = (P2k6x6 & W2k6x6); +assign W2k6x6 = (D3k6x6 & K3k6x6); +assign K3k6x6 = (~(Onf7z6[21] & My0jw6)); +assign D3k6x6 = (R3k6x6 & Y3k6x6); +assign Y3k6x6 = (~(Hz0jw6 & Kxb7z6[21])); +assign R3k6x6 = (~(Oz0jw6 & Fhc7z6[21])); +assign P2k6x6 = (F4k6x6 & M4k6x6); +assign M4k6x6 = (~(Alf7z6[5] & J01jw6)); +assign F4k6x6 = (~(Alf7z6[21] & Q01jw6)); +assign L3nnv6 = (~(T4k6x6 ^ Tennv6)); +assign T4k6x6 = (~(A5k6x6 & H5k6x6)); +assign H5k6x6 = (~(Yxf7z6[5] & Laziw6)); +assign A5k6x6 = (O5k6x6 & V5k6x6); +assign V5k6x6 = (~(Yxf7z6[21] & Gbziw6)); +assign O5k6x6 = (~(Kxb7z6[21] & Nbziw6)); +assign Ayj6x6 = (T7ziw6 & C6k6x6); +assign C6k6x6 = (~(Qeldt6 & Oztiw6)); +assign Cej6x6 = (J6k6x6 & Q6k6x6); +assign Q6k6x6 = (~(Ve2ov6 & vis_pc_o[21])); +assign J6k6x6 = (~(Fhc7z6[21] & Cf2ov6)); +assign A0z7v6 = (~(X6k6x6 & E7k6x6)); +assign E7k6x6 = (L7k6x6 & S7k6x6); +assign S7k6x6 = (Eu9ov6 | Z7k6x6); +assign L7k6x6 = (G8k6x6 & N8k6x6); +assign N8k6x6 = (~(Gv9ov6 & Jayiw6)); +assign G8k6x6 = (~(Uv9ov6 & Q0a7z6)); +assign X6k6x6 = (U8k6x6 & B9k6x6); +assign B9k6x6 = (~(Pw9ov6 & Kxb7z6[13])); +assign U8k6x6 = (I9k6x6 & P9k6x6); +assign P9k6x6 = (~(Kx9ov6 & vis_pc_o[13])); +assign I9k6x6 = (~(Gli7z6[13] & Rx9ov6)); +assign Tzy7v6 = (~(W9k6x6 & Dak6x6)); +assign Dak6x6 = (Kak6x6 & Rak6x6); +assign Rak6x6 = (~(H02ov6 & Q0a7z6)); +assign Kak6x6 = (Yak6x6 & Fbk6x6); +assign Fbk6x6 = (C12ov6 | Ygknv6); +assign Ygknv6 = (Mbk6x6 & Tbk6x6); +assign Tbk6x6 = (Ack6x6 & Hck6x6); +assign Hck6x6 = (Ock6x6 & Vck6x6); +assign Vck6x6 = (Cdk6x6 & Jdk6x6); +assign Jdk6x6 = (~(vis_psp_o[13] & N32ov6)); +assign Cdk6x6 = (~(U32ov6 & Pic7z6[13])); +assign Ock6x6 = (Qdk6x6 & Xdk6x6); +assign Xdk6x6 = (~(vis_msp_o[13] & P42ov6)); +assign Qdk6x6 = (~(vis_r12_o[13] & W42ov6)); +assign Ack6x6 = (Eek6x6 & Lek6x6); +assign Lek6x6 = (Sek6x6 & Zek6x6); +assign Zek6x6 = (~(vis_r11_o[13] & F62ov6)); +assign Sek6x6 = (~(vis_r10_o[13] & M62ov6)); +assign Eek6x6 = (Gfk6x6 & Nfk6x6); +assign Nfk6x6 = (~(vis_r9_o[13] & H72ov6)); +assign Gfk6x6 = (~(vis_r8_o[13] & O72ov6)); +assign Mbk6x6 = (Ufk6x6 & Bgk6x6); +assign Bgk6x6 = (Igk6x6 & Pgk6x6); +assign Pgk6x6 = (Wgk6x6 & Dhk6x6); +assign Dhk6x6 = (~(vis_r7_o[13] & L92ov6)); +assign Wgk6x6 = (~(vis_r6_o[13] & S92ov6)); +assign Igk6x6 = (Khk6x6 & Rhk6x6); +assign Rhk6x6 = (~(vis_r5_o[13] & Na2ov6)); +assign Khk6x6 = (~(vis_r4_o[13] & Ua2ov6)); +assign Ufk6x6 = (Yhk6x6 & Fik6x6); +assign Fik6x6 = (Mik6x6 & Tik6x6); +assign Tik6x6 = (~(vis_r3_o[13] & Dc2ov6)); +assign Mik6x6 = (~(vis_r2_o[13] & Kc2ov6)); +assign Yhk6x6 = (Ajk6x6 & Hjk6x6); +assign Hjk6x6 = (~(vis_r1_o[13] & Fd2ov6)); +assign Ajk6x6 = (~(vis_r0_o[13] & Md2ov6)); +assign Yak6x6 = (~(Td2ov6 & Jayiw6)); +assign Jayiw6 = (Spyiw6 ? Q0a7z6 : Gli7z6[13]); +assign Q0a7z6 = (~(Ojk6x6 & Vjk6x6)); +assign Vjk6x6 = (~(Nqyiw6 & Fgznv6)); +assign Ojk6x6 = (Ckk6x6 & Jkk6x6); +assign Jkk6x6 = (~(Pdc7z6[13] & Ouyiw6)); +assign Ckk6x6 = (~(Vuyiw6 & Qkk6x6)); +assign Qkk6x6 = (~(Xkk6x6 & Elk6x6)); +assign Elk6x6 = (Llk6x6 & Slk6x6); +assign Slk6x6 = (Zlk6x6 & Gmk6x6); +assign Gmk6x6 = (Nmk6x6 & Ns3jw6); +assign Nmk6x6 = (~(Umk6x6 & Uxyiw6)); +assign Umk6x6 = (Kxb7z6[13] & Bnk6x6); +assign Zlk6x6 = (Ink6x6 & Pnk6x6); +assign Pnk6x6 = (~(Wnk6x6 & Dok6x6)); +assign Wnk6x6 = (~(Kok6x6 & Quziw6)); +assign Kok6x6 = (Rok6x6 & Yok6x6); +assign Yok6x6 = (Bnk6x6 | Ninnv6); +assign Bnk6x6 = (Fpk6x6 | Rje7z6[13]); +assign Rok6x6 = (~(Ofnnv6 & Fpk6x6)); +assign Ink6x6 = (~(Yi3ov6 & Ug3ov6)); +assign Yi3ov6 = (Mpk6x6 ^ Dte7z6[1]); +assign Llk6x6 = (Tpk6x6 & Aqk6x6); +assign Aqk6x6 = (Hqk6x6 & Oqk6x6); +assign Oqk6x6 = (~(Nn3ov6 & C73ov6)); +assign Nn3ov6 = (J7j6x6 ^ Dte7z6[1]); +assign J7j6x6 = (T3cdt6 ? V1c7z6[5] : Xs3ov6); +assign Hqk6x6 = (~(J73ov6 & Kb3ov6)); +assign Kb3ov6 = (I2k6x6 ^ Dte7z6[1]); +assign I2k6x6 = (T3cdt6 ? V1c7z6[21] : Csj6x6); +assign Tpk6x6 = (Vqk6x6 & Crk6x6); +assign Crk6x6 = (~(T0ziw6 & Rje7z6[13])); +assign Vqk6x6 = (Ryfov6 | Jrk6x6); +assign Xkk6x6 = (Qrk6x6 & Xrk6x6); +assign Xrk6x6 = (Esk6x6 & Lsk6x6); +assign Lsk6x6 = (Ssk6x6 & Zsk6x6); +assign Zsk6x6 = (~(L0g7z6[13] & J2ziw6)); +assign Ssk6x6 = (~(L0g7z6[29] & Q2ziw6)); +assign Esk6x6 = (Gtk6x6 & Ntk6x6); +assign Ntk6x6 = (~(O1ziw6 & Onf7z6[13])); +assign Gtk6x6 = (~(U4ziw6 & Fhc7z6[13])); +assign Qrk6x6 = (Utk6x6 & Vz2ov6); +assign Vz2ov6 = (Buk6x6 & Iuk6x6); +assign Iuk6x6 = (~(Puk6x6 & H8nnv6)); +assign Puk6x6 = (~(O8nnv6 | Icziw6)); +assign Buk6x6 = (~(Wuk6x6 & Ubziw6)); +assign Wuk6x6 = (~(H8nnv6 ^ O8nnv6)); +assign O8nnv6 = (Dvk6x6 ^ Mennv6); +assign Dvk6x6 = (~(Kvk6x6 & Rvk6x6)); +assign Rvk6x6 = (Yvk6x6 & Fwk6x6); +assign Fwk6x6 = (Mwk6x6 & Twk6x6); +assign Twk6x6 = (~(Su0jw6 & Yxf7z6[15])); +assign Mwk6x6 = (Axk6x6 & Hxk6x6); +assign Hxk6x6 = (~(Yxf7z6[13] & Nv0jw6)); +assign Axk6x6 = (~(Yxf7z6[14] & Uv0jw6)); +assign Yvk6x6 = (Oxk6x6 & Vxk6x6); +assign Vxk6x6 = (~(Yxf7z6[16] & Pw0jw6)); +assign Oxk6x6 = (~(Mpk6x6 & Rdziw6)); +assign Mpk6x6 = (T3cdt6 ? V1c7z6[13] : Dok6x6); +assign Kvk6x6 = (Cyk6x6 & Jyk6x6); +assign Jyk6x6 = (Qyk6x6 & Xyk6x6); +assign Xyk6x6 = (~(Onf7z6[13] & My0jw6)); +assign Qyk6x6 = (Ezk6x6 & Lzk6x6); +assign Lzk6x6 = (~(Hz0jw6 & Kxb7z6[13])); +assign Ezk6x6 = (~(Oz0jw6 & Fhc7z6[13])); +assign Cyk6x6 = (Szk6x6 & Zzk6x6); +assign Zzk6x6 = (~(Onf7z6[29] & J01jw6)); +assign Szk6x6 = (~(Alf7z6[13] & Q01jw6)); +assign H8nnv6 = (~(G0l6x6 ^ Tennv6)); +assign G0l6x6 = (~(N0l6x6 & U0l6x6)); +assign U0l6x6 = (~(Yxf7z6[13] & Gbziw6)); +assign N0l6x6 = (~(Kxb7z6[13] & Nbziw6)); +assign Utk6x6 = (B1l6x6 & I1l6x6); +assign I1l6x6 = (~(Z3ziw6 & Fhc7z6[18])); +assign B1l6x6 = (~(Ovldt6 & Oztiw6)); +assign W9k6x6 = (P1l6x6 & W1l6x6); +assign W1l6x6 = (~(Ve2ov6 & vis_pc_o[13])); +assign P1l6x6 = (~(Fhc7z6[13] & Cf2ov6)); +assign Mzy7v6 = (~(D2l6x6 & K2l6x6)); +assign K2l6x6 = (R2l6x6 & Y2l6x6); +assign Y2l6x6 = (Eu9ov6 | F3l6x6); +assign R2l6x6 = (M3l6x6 & T3l6x6); +assign T3l6x6 = (~(Gv9ov6 & Zbyiw6)); +assign M3l6x6 = (~(Uv9ov6 & E2a7z6)); +assign D2l6x6 = (A4l6x6 & H4l6x6); +assign H4l6x6 = (~(Pw9ov6 & Kxb7z6[6])); +assign A4l6x6 = (O4l6x6 & V4l6x6); +assign V4l6x6 = (~(Kx9ov6 & vis_pc_o[6])); +assign O4l6x6 = (~(Gli7z6[6] & Rx9ov6)); +assign Fzy7v6 = (~(C5l6x6 & J5l6x6)); +assign J5l6x6 = (Q5l6x6 & X5l6x6); +assign X5l6x6 = (~(H02ov6 & E2a7z6)); +assign Q5l6x6 = (E6l6x6 & L6l6x6); +assign L6l6x6 = (C12ov6 | Qdjnv6); +assign Qdjnv6 = (S6l6x6 & Z6l6x6); +assign Z6l6x6 = (G7l6x6 & N7l6x6); +assign N7l6x6 = (U7l6x6 & B8l6x6); +assign B8l6x6 = (I8l6x6 & P8l6x6); +assign P8l6x6 = (~(vis_psp_o[6] & N32ov6)); +assign I8l6x6 = (~(U32ov6 & Pic7z6[6])); +assign U7l6x6 = (W8l6x6 & D9l6x6); +assign D9l6x6 = (~(vis_msp_o[6] & P42ov6)); +assign W8l6x6 = (~(vis_r12_o[6] & W42ov6)); +assign G7l6x6 = (K9l6x6 & R9l6x6); +assign R9l6x6 = (Y9l6x6 & Fal6x6); +assign Fal6x6 = (~(vis_r11_o[6] & F62ov6)); +assign Y9l6x6 = (~(vis_r10_o[6] & M62ov6)); +assign K9l6x6 = (Mal6x6 & Tal6x6); +assign Tal6x6 = (~(vis_r9_o[6] & H72ov6)); +assign Mal6x6 = (~(vis_r8_o[6] & O72ov6)); +assign S6l6x6 = (Abl6x6 & Hbl6x6); +assign Hbl6x6 = (Obl6x6 & Vbl6x6); +assign Vbl6x6 = (Ccl6x6 & Jcl6x6); +assign Jcl6x6 = (~(vis_r7_o[6] & L92ov6)); +assign Ccl6x6 = (~(vis_r6_o[6] & S92ov6)); +assign Obl6x6 = (Qcl6x6 & Xcl6x6); +assign Xcl6x6 = (~(vis_r5_o[6] & Na2ov6)); +assign Qcl6x6 = (~(vis_r4_o[6] & Ua2ov6)); +assign Abl6x6 = (Edl6x6 & Ldl6x6); +assign Ldl6x6 = (Sdl6x6 & Zdl6x6); +assign Zdl6x6 = (~(vis_r3_o[6] & Dc2ov6)); +assign Sdl6x6 = (~(vis_r2_o[6] & Kc2ov6)); +assign Edl6x6 = (Gel6x6 & Nel6x6); +assign Nel6x6 = (~(vis_r1_o[6] & Fd2ov6)); +assign Gel6x6 = (~(vis_r0_o[6] & Md2ov6)); +assign E6l6x6 = (~(Td2ov6 & Zbyiw6)); +assign Zbyiw6 = (Spyiw6 ? E2a7z6 : Gli7z6[6]); +assign E2a7z6 = (~(Uel6x6 & Bfl6x6)); +assign Bfl6x6 = (~(Nqyiw6 & M80ov6)); +assign Uel6x6 = (Ifl6x6 & Pfl6x6); +assign Pfl6x6 = (~(Pdc7z6[6] & Ouyiw6)); +assign Ifl6x6 = (~(Vuyiw6 & Wfl6x6)); +assign Wfl6x6 = (~(Dgl6x6 & Kgl6x6)); +assign Kgl6x6 = (Rgl6x6 & Ygl6x6); +assign Ygl6x6 = (Fhl6x6 & Mhl6x6); +assign Mhl6x6 = (Thl6x6 & Ail6x6); +assign Ail6x6 = (~(Hil6x6 & Uxyiw6)); +assign Hil6x6 = (Kxb7z6[6] & Oil6x6); +assign Thl6x6 = (~(Vil6x6 & Jm0jw6)); +assign Vil6x6 = (Nob7z6[6] & Rslov6); +assign Fhl6x6 = (Cjl6x6 & Jjl6x6); +assign Jjl6x6 = (~(Nu3ov6 & Qjl6x6)); +assign Qjl6x6 = (~(Xjl6x6 & Quziw6)); +assign Xjl6x6 = (Ekl6x6 & Lkl6x6); +assign Lkl6x6 = (Oil6x6 | Ninnv6); +assign Oil6x6 = (Skl6x6 | Rje7z6[6]); +assign Ekl6x6 = (~(Ofnnv6 & Skl6x6)); +assign Cjl6x6 = (~(Ol0jw6 & Ql3ov6)); +assign Ol0jw6 = (Gg3ov6 & Zkl6x6); +assign Zkl6x6 = (Gll6x6 | Nll6x6); +assign Rgl6x6 = (Ull6x6 & Bml6x6); +assign Bml6x6 = (Iml6x6 & Pml6x6); +assign Pml6x6 = (~(Di3ov6 & C73ov6)); +assign Iml6x6 = (~(Hzi6x6 & Ppb7z6[6])); +assign Ull6x6 = (Wml6x6 & Dnl6x6); +assign Dnl6x6 = (~(T0ziw6 & Rje7z6[6])); +assign Wml6x6 = (Ryfov6 | Knl6x6); +assign Dgl6x6 = (Rnl6x6 & Ynl6x6); +assign Ynl6x6 = (Fol6x6 & Mol6x6); +assign Mol6x6 = (Tol6x6 & Apl6x6); +assign Apl6x6 = (~(J73ov6 & Je3ov6)); +assign Tol6x6 = (~(L0g7z6[6] & J2ziw6)); +assign Fol6x6 = (Hpl6x6 & Opl6x6); +assign Opl6x6 = (~(L0g7z6[22] & Q2ziw6)); +assign Hpl6x6 = (~(O1ziw6 & Onf7z6[6])); +assign Rnl6x6 = (Vpl6x6 & Cql6x6); +assign Cql6x6 = (Jql6x6 & Qql6x6); +assign Qql6x6 = (~(U4ziw6 & Fhc7z6[6])); +assign Jql6x6 = (~(Z3ziw6 & Fhc7z6[25])); +assign Vpl6x6 = (Q03ov6 & Xql6x6); +assign Xql6x6 = (~(Jamdt6 & Oztiw6)); +assign Q03ov6 = (Erl6x6 & Lrl6x6); +assign Lrl6x6 = (~(Srl6x6 & Xvmnv6)); +assign Srl6x6 = (~(Ewmnv6 | Icziw6)); +assign Erl6x6 = (~(Zrl6x6 & Ubziw6)); +assign Zrl6x6 = (~(Xvmnv6 ^ Ewmnv6)); +assign Ewmnv6 = (Gsl6x6 ^ Mennv6); +assign Gsl6x6 = (~(Nsl6x6 & Usl6x6)); +assign Usl6x6 = (Btl6x6 & Itl6x6); +assign Itl6x6 = (Ptl6x6 & Wtl6x6); +assign Wtl6x6 = (~(Yxf7z6[8] & Su0jw6)); +assign Ptl6x6 = (Dul6x6 & Kul6x6); +assign Kul6x6 = (~(Yxf7z6[6] & Nv0jw6)); +assign Dul6x6 = (~(Yxf7z6[7] & Uv0jw6)); +assign Btl6x6 = (Rul6x6 & Yul6x6); +assign Yul6x6 = (~(Yxf7z6[9] & Pw0jw6)); +assign Rul6x6 = (~(Fvl6x6 & Rdziw6)); +assign Nsl6x6 = (Mvl6x6 & Tvl6x6); +assign Tvl6x6 = (Awl6x6 & Hwl6x6); +assign Hwl6x6 = (~(Onf7z6[6] & My0jw6)); +assign Awl6x6 = (Owl6x6 & Vwl6x6); +assign Vwl6x6 = (~(Hz0jw6 & Kxb7z6[6])); +assign Owl6x6 = (~(Oz0jw6 & Fhc7z6[6])); +assign Mvl6x6 = (Cxl6x6 & Jxl6x6); +assign Jxl6x6 = (~(Onf7z6[22] & J01jw6)); +assign Cxl6x6 = (~(Alf7z6[6] & Q01jw6)); +assign Xvmnv6 = (~(Qxl6x6 ^ Tennv6)); +assign Qxl6x6 = (~(Xxl6x6 & Eyl6x6)); +assign Eyl6x6 = (~(Yxf7z6[6] & Gbziw6)); +assign Xxl6x6 = (~(Kxb7z6[6] & Nbziw6)); +assign C5l6x6 = (Lyl6x6 & Syl6x6); +assign Syl6x6 = (~(Ve2ov6 & vis_pc_o[6])); +assign Lyl6x6 = (~(Fhc7z6[6] & Cf2ov6)); +assign Yyy7v6 = (~(Zyl6x6 & Gzl6x6)); +assign Gzl6x6 = (Nzl6x6 & Uzl6x6); +assign Uzl6x6 = (Eu9ov6 | B0m6x6); +assign Nzl6x6 = (I0m6x6 & P0m6x6); +assign P0m6x6 = (~(Gv9ov6 & M8yiw6)); +assign I0m6x6 = (~(Uv9ov6 & My97z6)); +assign Zyl6x6 = (W0m6x6 & D1m6x6); +assign D1m6x6 = (~(Pw9ov6 & Kxb7z6[22])); +assign W0m6x6 = (K1m6x6 & R1m6x6); +assign R1m6x6 = (~(Kx9ov6 & vis_pc_o[22])); +assign K1m6x6 = (~(Gli7z6[22] & Rx9ov6)); +assign Ryy7v6 = (~(Y1m6x6 & F2m6x6)); +assign F2m6x6 = (M2m6x6 & T2m6x6); +assign T2m6x6 = (~(H02ov6 & My97z6)); +assign M2m6x6 = (A3m6x6 & H3m6x6); +assign H3m6x6 = (C12ov6 | G0knv6); +assign G0knv6 = (O3m6x6 & V3m6x6); +assign V3m6x6 = (C4m6x6 & J4m6x6); +assign J4m6x6 = (Q4m6x6 & X4m6x6); +assign X4m6x6 = (E5m6x6 & L5m6x6); +assign L5m6x6 = (~(vis_psp_o[22] & N32ov6)); +assign E5m6x6 = (~(U32ov6 & Pic7z6[22])); +assign Q4m6x6 = (S5m6x6 & Z5m6x6); +assign Z5m6x6 = (~(vis_msp_o[22] & P42ov6)); +assign S5m6x6 = (~(vis_r12_o[22] & W42ov6)); +assign C4m6x6 = (G6m6x6 & N6m6x6); +assign N6m6x6 = (U6m6x6 & B7m6x6); +assign B7m6x6 = (~(vis_r11_o[22] & F62ov6)); +assign U6m6x6 = (~(vis_r10_o[22] & M62ov6)); +assign G6m6x6 = (I7m6x6 & P7m6x6); +assign P7m6x6 = (~(vis_r9_o[22] & H72ov6)); +assign I7m6x6 = (~(vis_r8_o[22] & O72ov6)); +assign O3m6x6 = (W7m6x6 & D8m6x6); +assign D8m6x6 = (K8m6x6 & R8m6x6); +assign R8m6x6 = (Y8m6x6 & F9m6x6); +assign F9m6x6 = (~(vis_r7_o[22] & L92ov6)); +assign Y8m6x6 = (~(vis_r6_o[22] & S92ov6)); +assign K8m6x6 = (M9m6x6 & T9m6x6); +assign T9m6x6 = (~(vis_r5_o[22] & Na2ov6)); +assign M9m6x6 = (~(vis_r4_o[22] & Ua2ov6)); +assign W7m6x6 = (Aam6x6 & Ham6x6); +assign Ham6x6 = (Oam6x6 & Vam6x6); +assign Vam6x6 = (~(vis_r3_o[22] & Dc2ov6)); +assign Oam6x6 = (~(vis_r2_o[22] & Kc2ov6)); +assign Aam6x6 = (Cbm6x6 & Jbm6x6); +assign Jbm6x6 = (~(vis_r1_o[22] & Fd2ov6)); +assign Cbm6x6 = (~(vis_r0_o[22] & Md2ov6)); +assign A3m6x6 = (~(Td2ov6 & M8yiw6)); +assign M8yiw6 = (Spyiw6 ? My97z6 : Gli7z6[22]); +assign My97z6 = (~(Qbm6x6 & Xbm6x6)); +assign Xbm6x6 = (~(Nqyiw6 & Ccynv6)); +assign Qbm6x6 = (Ecm6x6 & Lcm6x6); +assign Lcm6x6 = (~(Pdc7z6[22] & Ouyiw6)); +assign Ecm6x6 = (~(Vuyiw6 & Scm6x6)); +assign Scm6x6 = (~(Zcm6x6 & Gdm6x6)); +assign Gdm6x6 = (Ndm6x6 & Udm6x6); +assign Udm6x6 = (Bem6x6 & Iem6x6); +assign Iem6x6 = (Pem6x6 & Wem6x6); +assign Wem6x6 = (~(Dfm6x6 & Uxyiw6)); +assign Dfm6x6 = (Kxb7z6[22] & Kfm6x6); +assign Pem6x6 = (~(Rfm6x6 & Yfm6x6)); +assign Rfm6x6 = (~(Fgm6x6 & Quziw6)); +assign Fgm6x6 = (Mgm6x6 & Tgm6x6); +assign Tgm6x6 = (Kfm6x6 | Ninnv6); +assign Kfm6x6 = (Ahm6x6 | Rje7z6[22]); +assign Mgm6x6 = (~(Ofnnv6 & Ahm6x6)); +assign Bem6x6 = (Hhm6x6 & Ohm6x6); +assign Ohm6x6 = (~(J73ov6 & Di3ov6)); +assign Hhm6x6 = (~(T0ziw6 & Rje7z6[22])); +assign Ndm6x6 = (Vhm6x6 & Cim6x6); +assign Cim6x6 = (Jim6x6 & Qim6x6); +assign Qim6x6 = (Ryfov6 | Xim6x6); +assign Jim6x6 = (~(L0g7z6[22] & J2ziw6)); +assign Vhm6x6 = (Ejm6x6 & Ljm6x6); +assign Ljm6x6 = (~(R6ziw6 & Je3ov6)); +assign Ejm6x6 = (~(F7ziw6 & Qe3ov6)); +assign Zcm6x6 = (Sjm6x6 & Zjm6x6); +assign Zjm6x6 = (Gkm6x6 & Nkm6x6); +assign Nkm6x6 = (Ukm6x6 & Blm6x6); +assign Blm6x6 = (~(Cqf7z6[6] & Q2ziw6)); +assign Ukm6x6 = (~(L0g7z6[6] & O1ziw6)); +assign Gkm6x6 = (Ilm6x6 & Plm6x6); +assign Plm6x6 = (~(U4ziw6 & V1c7z6[22])); +assign Ilm6x6 = (~(Z3ziw6 & Fhc7z6[9])); +assign Sjm6x6 = (Wlm6x6 & J03ov6); +assign J03ov6 = (Dmm6x6 & Kmm6x6); +assign Kmm6x6 = (~(Rmm6x6 & X2nnv6)); +assign Rmm6x6 = (~(E3nnv6 | Icziw6)); +assign Dmm6x6 = (~(Ymm6x6 & Ubziw6)); +assign Ymm6x6 = (~(X2nnv6 ^ E3nnv6)); +assign E3nnv6 = (Fnm6x6 ^ Mennv6); +assign Fnm6x6 = (~(Mnm6x6 & Tnm6x6)); +assign Tnm6x6 = (Aom6x6 & Hom6x6); +assign Hom6x6 = (Oom6x6 & Vom6x6); +assign Vom6x6 = (~(Yxf7z6[24] & Su0jw6)); +assign Oom6x6 = (Cpm6x6 & Jpm6x6); +assign Jpm6x6 = (~(Yxf7z6[22] & Nv0jw6)); +assign Cpm6x6 = (~(Yxf7z6[23] & Uv0jw6)); +assign Aom6x6 = (Qpm6x6 & Xpm6x6); +assign Xpm6x6 = (~(Yxf7z6[25] & Pw0jw6)); +assign Qpm6x6 = (~(Eqm6x6 & Rdziw6)); +assign Mnm6x6 = (Lqm6x6 & Sqm6x6); +assign Sqm6x6 = (Zqm6x6 & Grm6x6); +assign Grm6x6 = (~(Onf7z6[22] & My0jw6)); +assign Zqm6x6 = (Nrm6x6 & Urm6x6); +assign Urm6x6 = (~(Hz0jw6 & Kxb7z6[22])); +assign Nrm6x6 = (~(Oz0jw6 & Fhc7z6[22])); +assign Lqm6x6 = (Bsm6x6 & Ism6x6); +assign Ism6x6 = (~(Alf7z6[6] & J01jw6)); +assign Bsm6x6 = (~(Alf7z6[22] & Q01jw6)); +assign X2nnv6 = (~(Psm6x6 ^ Tennv6)); +assign Psm6x6 = (~(Wsm6x6 & Dtm6x6)); +assign Dtm6x6 = (~(Yxf7z6[6] & Laziw6)); +assign Wsm6x6 = (Ktm6x6 & Rtm6x6); +assign Rtm6x6 = (~(Yxf7z6[22] & Gbziw6)); +assign Ktm6x6 = (~(Kxb7z6[22] & Nbziw6)); +assign Wlm6x6 = (T7ziw6 & Ytm6x6); +assign Ytm6x6 = (~(Ncldt6 & Oztiw6)); +assign Y1m6x6 = (Fum6x6 & Mum6x6); +assign Mum6x6 = (~(Ve2ov6 & vis_pc_o[22])); +assign Fum6x6 = (~(Fhc7z6[22] & Cf2ov6)); +assign Kyy7v6 = (~(Tum6x6 & Avm6x6)); +assign Avm6x6 = (Hvm6x6 & Ovm6x6); +assign Ovm6x6 = (Eu9ov6 | Vvm6x6); +assign Hvm6x6 = (Cwm6x6 & Jwm6x6); +assign Jwm6x6 = (~(Gv9ov6 & Cayiw6)); +assign Cwm6x6 = (~(Uv9ov6 & I0a7z6)); +assign Tum6x6 = (Qwm6x6 & Xwm6x6); +assign Xwm6x6 = (~(Pw9ov6 & Kxb7z6[14])); +assign Qwm6x6 = (Exm6x6 & Lxm6x6); +assign Lxm6x6 = (~(Kx9ov6 & vis_pc_o[14])); +assign Exm6x6 = (~(Gli7z6[14] & Rx9ov6)); +assign Dyy7v6 = (~(Sxm6x6 & Zxm6x6)); +assign Zxm6x6 = (Gym6x6 & Nym6x6); +assign Nym6x6 = (~(H02ov6 & I0a7z6)); +assign Gym6x6 = (Uym6x6 & Bzm6x6); +assign Bzm6x6 = (C12ov6 | Ifknv6); +assign Ifknv6 = (Izm6x6 & Pzm6x6); +assign Pzm6x6 = (Wzm6x6 & D0n6x6); +assign D0n6x6 = (K0n6x6 & R0n6x6); +assign R0n6x6 = (Y0n6x6 & F1n6x6); +assign F1n6x6 = (~(vis_psp_o[14] & N32ov6)); +assign Y0n6x6 = (~(U32ov6 & Pic7z6[14])); +assign K0n6x6 = (M1n6x6 & T1n6x6); +assign T1n6x6 = (~(vis_msp_o[14] & P42ov6)); +assign M1n6x6 = (~(vis_r12_o[14] & W42ov6)); +assign Wzm6x6 = (A2n6x6 & H2n6x6); +assign H2n6x6 = (O2n6x6 & V2n6x6); +assign V2n6x6 = (~(vis_r11_o[14] & F62ov6)); +assign O2n6x6 = (~(vis_r10_o[14] & M62ov6)); +assign A2n6x6 = (C3n6x6 & J3n6x6); +assign J3n6x6 = (~(vis_r9_o[14] & H72ov6)); +assign C3n6x6 = (~(vis_r8_o[14] & O72ov6)); +assign Izm6x6 = (Q3n6x6 & X3n6x6); +assign X3n6x6 = (E4n6x6 & L4n6x6); +assign L4n6x6 = (S4n6x6 & Z4n6x6); +assign Z4n6x6 = (~(vis_r7_o[14] & L92ov6)); +assign S4n6x6 = (~(vis_r6_o[14] & S92ov6)); +assign E4n6x6 = (G5n6x6 & N5n6x6); +assign N5n6x6 = (~(vis_r5_o[14] & Na2ov6)); +assign G5n6x6 = (~(vis_r4_o[14] & Ua2ov6)); +assign Q3n6x6 = (U5n6x6 & B6n6x6); +assign B6n6x6 = (I6n6x6 & P6n6x6); +assign P6n6x6 = (~(vis_r3_o[14] & Dc2ov6)); +assign I6n6x6 = (~(vis_r2_o[14] & Kc2ov6)); +assign U5n6x6 = (W6n6x6 & D7n6x6); +assign D7n6x6 = (~(vis_r1_o[14] & Fd2ov6)); +assign W6n6x6 = (~(vis_r0_o[14] & Md2ov6)); +assign Uym6x6 = (~(Td2ov6 & Cayiw6)); +assign Cayiw6 = (Spyiw6 ? I0a7z6 : Gli7z6[14]); +assign I0a7z6 = (~(K7n6x6 & R7n6x6)); +assign R7n6x6 = (~(Nqyiw6 & Ecznv6)); +assign K7n6x6 = (Y7n6x6 & F8n6x6); +assign F8n6x6 = (~(Pdc7z6[14] & Ouyiw6)); +assign Y7n6x6 = (~(Vuyiw6 & M8n6x6)); +assign M8n6x6 = (~(T8n6x6 & A9n6x6)); +assign A9n6x6 = (H9n6x6 & O9n6x6); +assign O9n6x6 = (V9n6x6 & Can6x6); +assign Can6x6 = (Jan6x6 & Ns3jw6); +assign Jan6x6 = (~(Qan6x6 & Uxyiw6)); +assign Qan6x6 = (Kxb7z6[14] & Xan6x6); +assign V9n6x6 = (Ebn6x6 & Lbn6x6); +assign Lbn6x6 = (~(Sbn6x6 & Zbn6x6)); +assign Sbn6x6 = (~(Gcn6x6 & Quziw6)); +assign Gcn6x6 = (Ncn6x6 & Ucn6x6); +assign Ucn6x6 = (Xan6x6 | Ninnv6); +assign Xan6x6 = (Bdn6x6 | Rje7z6[14]); +assign Ncn6x6 = (~(Ofnnv6 & Bdn6x6)); +assign Ebn6x6 = (~(Di3ov6 & Ug3ov6)); +assign Di3ov6 = (Idn6x6 ^ Dte7z6[1]); +assign H9n6x6 = (Pdn6x6 & Wdn6x6); +assign Wdn6x6 = (Den6x6 & Ken6x6); +assign Ken6x6 = (~(Ql3ov6 & C73ov6)); +assign Den6x6 = (~(T0ziw6 & Rje7z6[14])); +assign Pdn6x6 = (Ren6x6 & Yen6x6); +assign Yen6x6 = (Ryfov6 | Ffn6x6); +assign Ren6x6 = (~(J73ov6 & Qe3ov6)); +assign T8n6x6 = (Mfn6x6 & Tfn6x6); +assign Tfn6x6 = (Agn6x6 & Hgn6x6); +assign Hgn6x6 = (Ogn6x6 & Vgn6x6); +assign Vgn6x6 = (~(L0g7z6[14] & J2ziw6)); +assign Ogn6x6 = (~(L0g7z6[30] & Q2ziw6)); +assign Agn6x6 = (Chn6x6 & Jhn6x6); +assign Jhn6x6 = (~(O1ziw6 & Onf7z6[14])); +assign Chn6x6 = (~(U4ziw6 & Fhc7z6[14])); +assign Mfn6x6 = (Qhn6x6 & G23ov6); +assign G23ov6 = (Xhn6x6 & Ein6x6); +assign Ein6x6 = (~(Lin6x6 & T7nnv6)); +assign Lin6x6 = (~(A8nnv6 | Icziw6)); +assign Xhn6x6 = (~(Sin6x6 & Ubziw6)); +assign Sin6x6 = (~(T7nnv6 ^ A8nnv6)); +assign A8nnv6 = (Zin6x6 ^ Mennv6); +assign Zin6x6 = (~(Gjn6x6 & Njn6x6)); +assign Njn6x6 = (Ujn6x6 & Bkn6x6); +assign Bkn6x6 = (Ikn6x6 & Pkn6x6); +assign Pkn6x6 = (~(Yxf7z6[16] & Su0jw6)); +assign Ikn6x6 = (Wkn6x6 & Dln6x6); +assign Dln6x6 = (~(Yxf7z6[14] & Nv0jw6)); +assign Wkn6x6 = (~(Uv0jw6 & Yxf7z6[15])); +assign Ujn6x6 = (Kln6x6 & Rln6x6); +assign Rln6x6 = (~(Yxf7z6[17] & Pw0jw6)); +assign Kln6x6 = (~(Idn6x6 & Rdziw6)); +assign Idn6x6 = (T3cdt6 ? V1c7z6[14] : Zbn6x6); +assign Gjn6x6 = (Yln6x6 & Fmn6x6); +assign Fmn6x6 = (Mmn6x6 & Tmn6x6); +assign Tmn6x6 = (~(Onf7z6[14] & My0jw6)); +assign Mmn6x6 = (Ann6x6 & Hnn6x6); +assign Hnn6x6 = (~(Hz0jw6 & Kxb7z6[14])); +assign Ann6x6 = (~(Oz0jw6 & Fhc7z6[14])); +assign Yln6x6 = (Onn6x6 & Vnn6x6); +assign Vnn6x6 = (~(Onf7z6[30] & J01jw6)); +assign Onn6x6 = (~(Alf7z6[14] & Q01jw6)); +assign T7nnv6 = (~(Con6x6 ^ Tennv6)); +assign Con6x6 = (~(Jon6x6 & Qon6x6)); +assign Qon6x6 = (~(Yxf7z6[14] & Gbziw6)); +assign Jon6x6 = (~(Kxb7z6[14] & Nbziw6)); +assign Qhn6x6 = (Xon6x6 & Epn6x6); +assign Epn6x6 = (~(Z3ziw6 & Fhc7z6[17])); +assign Xon6x6 = (~(Ltldt6 & Oztiw6)); +assign Sxm6x6 = (Lpn6x6 & Spn6x6); +assign Spn6x6 = (~(Ve2ov6 & vis_pc_o[14])); +assign Lpn6x6 = (~(Fhc7z6[14] & Cf2ov6)); +assign Wxy7v6 = (~(Zpn6x6 & Gqn6x6)); +assign Gqn6x6 = (Nqn6x6 & Uqn6x6); +assign Uqn6x6 = (Eu9ov6 | Brn6x6); +assign Nqn6x6 = (Irn6x6 & Prn6x6); +assign Prn6x6 = (~(Gv9ov6 & Sbyiw6)); +assign Irn6x6 = (~(Uv9ov6 & W1a7z6)); +assign Zpn6x6 = (Wrn6x6 & Dsn6x6); +assign Dsn6x6 = (~(Pw9ov6 & Kxb7z6[7])); +assign Wrn6x6 = (Ksn6x6 & Rsn6x6); +assign Rsn6x6 = (~(Kx9ov6 & vis_pc_o[7])); +assign Ksn6x6 = (~(Gli7z6[7] & Rx9ov6)); +assign Pxy7v6 = (~(Ysn6x6 & Ftn6x6)); +assign Ftn6x6 = (Mtn6x6 & Ttn6x6); +assign Ttn6x6 = (~(Cuziw6 & C6bov6)); +assign Mtn6x6 = (~(J6bov6 & Alf7z6[0])); +assign Ysn6x6 = (Aun6x6 & Hun6x6); +assign Hun6x6 = (~(L0g7z6[16] & E7bov6)); +assign Aun6x6 = (~(L0g7z6[0] & L7bov6)); +assign Ixy7v6 = (~(Oun6x6 & Vun6x6)); +assign Vun6x6 = (Cvn6x6 & Jvn6x6); +assign Jvn6x6 = (~(H02ov6 & W1a7z6)); +assign Cvn6x6 = (Qvn6x6 & Xvn6x6); +assign Xvn6x6 = (C12ov6 | Acjnv6); +assign Acjnv6 = (Ewn6x6 & Lwn6x6); +assign Lwn6x6 = (Swn6x6 & Zwn6x6); +assign Zwn6x6 = (Gxn6x6 & Nxn6x6); +assign Nxn6x6 = (Uxn6x6 & Byn6x6); +assign Byn6x6 = (~(vis_psp_o[7] & N32ov6)); +assign Uxn6x6 = (~(U32ov6 & Pic7z6[7])); +assign Gxn6x6 = (Iyn6x6 & Pyn6x6); +assign Pyn6x6 = (~(vis_msp_o[7] & P42ov6)); +assign Iyn6x6 = (~(vis_r12_o[7] & W42ov6)); +assign Swn6x6 = (Wyn6x6 & Dzn6x6); +assign Dzn6x6 = (Kzn6x6 & Rzn6x6); +assign Rzn6x6 = (~(vis_r11_o[7] & F62ov6)); +assign Kzn6x6 = (~(vis_r10_o[7] & M62ov6)); +assign Wyn6x6 = (Yzn6x6 & F0o6x6); +assign F0o6x6 = (~(vis_r9_o[7] & H72ov6)); +assign Yzn6x6 = (~(vis_r8_o[7] & O72ov6)); +assign Ewn6x6 = (M0o6x6 & T0o6x6); +assign T0o6x6 = (A1o6x6 & H1o6x6); +assign H1o6x6 = (O1o6x6 & V1o6x6); +assign V1o6x6 = (~(vis_r7_o[7] & L92ov6)); +assign O1o6x6 = (~(vis_r6_o[7] & S92ov6)); +assign A1o6x6 = (C2o6x6 & J2o6x6); +assign J2o6x6 = (~(vis_r5_o[7] & Na2ov6)); +assign C2o6x6 = (~(vis_r4_o[7] & Ua2ov6)); +assign M0o6x6 = (Q2o6x6 & X2o6x6); +assign X2o6x6 = (E3o6x6 & L3o6x6); +assign L3o6x6 = (~(vis_r3_o[7] & Dc2ov6)); +assign E3o6x6 = (~(vis_r2_o[7] & Kc2ov6)); +assign Q2o6x6 = (S3o6x6 & Z3o6x6); +assign Z3o6x6 = (~(vis_r1_o[7] & Fd2ov6)); +assign S3o6x6 = (~(vis_r0_o[7] & Md2ov6)); +assign Qvn6x6 = (~(Td2ov6 & Sbyiw6)); +assign Sbyiw6 = (Spyiw6 ? W1a7z6 : Gli7z6[7]); +assign W1a7z6 = (~(G4o6x6 & N4o6x6)); +assign N4o6x6 = (~(Nqyiw6 & L40ov6)); +assign G4o6x6 = (U4o6x6 & B5o6x6); +assign B5o6x6 = (~(Pdc7z6[7] & Ouyiw6)); +assign U4o6x6 = (~(Vuyiw6 & I5o6x6)); +assign I5o6x6 = (~(P5o6x6 & W5o6x6)); +assign W5o6x6 = (D6o6x6 & K6o6x6); +assign K6o6x6 = (R6o6x6 & Y6o6x6); +assign Y6o6x6 = (F7o6x6 & M7o6x6); +assign M7o6x6 = (~(T7o6x6 & Uxyiw6)); +assign T7o6x6 = (Kxb7z6[7] & A8o6x6); +assign F7o6x6 = (~(Bv3ov6 & H8o6x6)); +assign H8o6x6 = (~(O8o6x6 & Quziw6)); +assign O8o6x6 = (V8o6x6 & C9o6x6); +assign C9o6x6 = (A8o6x6 | Ninnv6); +assign A8o6x6 = (J9o6x6 | Rje7z6[7]); +assign V8o6x6 = (~(Ofnnv6 & J9o6x6)); +assign R6o6x6 = (Q9o6x6 & X9o6x6); +assign X9o6x6 = (~(Hzi6x6 & Ppb7z6[7])); +assign Hzi6x6 = (Eao6x6 & C1gov6); +assign C1gov6 = (Lao6x6 & Dte7z6[16]); +assign Lao6x6 = (Sao6x6 & Msziw6); +assign Eao6x6 = (~(Zao6x6 | Gbo6x6)); +assign Q9o6x6 = (~(Ok3ov6 & C73ov6)); +assign C73ov6 = (~(Zf3ov6 & Nbo6x6)); +assign Nbo6x6 = (Ubo6x6 | Bi2ov6); +assign D6o6x6 = (Bco6x6 & Ico6x6); +assign Ico6x6 = (Pco6x6 & Wco6x6); +assign Wco6x6 = (~(Jm0jw6 & Ddo6x6)); +assign Jm0jw6 = (Kdo6x6 & Dte7z6[14]); +assign Pco6x6 = (~(T0ziw6 & Rje7z6[7])); +assign Bco6x6 = (Rdo6x6 & Ydo6x6); +assign Ydo6x6 = (Ryfov6 | Feo6x6); +assign Feo6x6 = (!J9o6x6); +assign Rdo6x6 = (~(L0g7z6[7] & J2ziw6)); +assign P5o6x6 = (Meo6x6 & Teo6x6); +assign Teo6x6 = (Afo6x6 & Hfo6x6); +assign Hfo6x6 = (Ofo6x6 & Vfo6x6); +assign Vfo6x6 = (~(L0g7z6[23] & Q2ziw6)); +assign Ofo6x6 = (~(O1ziw6 & Onf7z6[7])); +assign Afo6x6 = (Cgo6x6 & Jgo6x6); +assign Jgo6x6 = (~(U4ziw6 & Fhc7z6[7])); +assign Cgo6x6 = (~(Z3ziw6 & Fhc7z6[24])); +assign Meo6x6 = (Qgo6x6 & Wo3ov6); +assign Wo3ov6 = (Xgo6x6 & Eho6x6); +assign Eho6x6 = (~(J73ov6 & M7ziw6)); +assign Xgo6x6 = (Lho6x6 & Ns3jw6); +assign Ns3jw6 = (~(Nll6x6 & H8ziw6)); +assign Lho6x6 = (~(H8ziw6 & Gll6x6)); +assign Gll6x6 = (Ug3ov6 | Ubo6x6); +assign Ug3ov6 = (~(Sf3ov6 & Sho6x6)); +assign Sho6x6 = (~(Zho6x6 & Ubo6x6)); +assign Sf3ov6 = (!F7ziw6); +assign Qgo6x6 = (Z13ov6 & Gio6x6); +assign Gio6x6 = (~(G8mdt6 & Oztiw6)); +assign Z13ov6 = (Nio6x6 & Uio6x6); +assign Uio6x6 = (~(Bjo6x6 & Jvmnv6)); +assign Bjo6x6 = (~(Qvmnv6 | Icziw6)); +assign Nio6x6 = (~(Ijo6x6 & Ubziw6)); +assign Ijo6x6 = (~(Jvmnv6 ^ Qvmnv6)); +assign Qvmnv6 = (Pjo6x6 ^ Mennv6); +assign Pjo6x6 = (~(Wjo6x6 & Dko6x6)); +assign Dko6x6 = (Kko6x6 & Rko6x6); +assign Rko6x6 = (Yko6x6 & Flo6x6); +assign Flo6x6 = (~(Yxf7z6[9] & Su0jw6)); +assign Yko6x6 = (Mlo6x6 & Tlo6x6); +assign Tlo6x6 = (~(Yxf7z6[7] & Nv0jw6)); +assign Mlo6x6 = (~(Yxf7z6[8] & Uv0jw6)); +assign Kko6x6 = (Amo6x6 & Hmo6x6); +assign Hmo6x6 = (~(Yxf7z6[10] & Pw0jw6)); +assign Amo6x6 = (~(Hz0jw6 & Kxb7z6[7])); +assign Wjo6x6 = (Omo6x6 & Vmo6x6); +assign Vmo6x6 = (Cno6x6 & Jno6x6); +assign Jno6x6 = (~(Onf7z6[23] & J01jw6)); +assign Cno6x6 = (Qno6x6 & Xno6x6); +assign Xno6x6 = (~(Oz0jw6 & Fhc7z6[7])); +assign Qno6x6 = (~(Onf7z6[7] & My0jw6)); +assign Omo6x6 = (Eoo6x6 & Loo6x6); +assign Loo6x6 = (~(Soo6x6 & Rdziw6)); +assign Eoo6x6 = (~(Alf7z6[7] & Q01jw6)); +assign Jvmnv6 = (~(Zoo6x6 ^ Tennv6)); +assign Zoo6x6 = (~(Gpo6x6 & Npo6x6)); +assign Npo6x6 = (~(Yxf7z6[7] & Gbziw6)); +assign Gpo6x6 = (~(Kxb7z6[7] & Nbziw6)); +assign Oun6x6 = (Upo6x6 & Bqo6x6); +assign Bqo6x6 = (~(Ve2ov6 & vis_pc_o[7])); +assign Upo6x6 = (~(Fhc7z6[7] & Cf2ov6)); +assign Bxy7v6 = (~(Iqo6x6 & Pqo6x6)); +assign Pqo6x6 = (Wqo6x6 & Dro6x6); +assign Dro6x6 = (~(St3ov6 & C6bov6)); +assign Wqo6x6 = (~(J6bov6 & Alf7z6[27])); +assign Iqo6x6 = (Kro6x6 & Rro6x6); +assign Rro6x6 = (~(Cqf7z6[11] & E7bov6)); +assign Kro6x6 = (~(L0g7z6[27] & L7bov6)); +assign Uwy7v6 = (~(Yro6x6 & Fso6x6)); +assign Fso6x6 = (Mso6x6 & Tso6x6); +assign Tso6x6 = (~(Qs3ov6 & C6bov6)); +assign Mso6x6 = (~(J6bov6 & Alf7z6[26])); +assign Yro6x6 = (Ato6x6 & Hto6x6); +assign Hto6x6 = (~(Cqf7z6[10] & E7bov6)); +assign Ato6x6 = (~(L0g7z6[26] & L7bov6)); +assign Nwy7v6 = (~(Oto6x6 & Vto6x6)); +assign Vto6x6 = (Cuo6x6 & Juo6x6); +assign Juo6x6 = (Eu9ov6 | Quo6x6); +assign Cuo6x6 = (Xuo6x6 & Evo6x6); +assign Evo6x6 = (~(Gv9ov6 & F8yiw6)); +assign Xuo6x6 = (~(Uv9ov6 & Ey97z6)); +assign Oto6x6 = (Lvo6x6 & Svo6x6); +assign Svo6x6 = (~(Pw9ov6 & Kxb7z6[23])); +assign Lvo6x6 = (Zvo6x6 & Gwo6x6); +assign Gwo6x6 = (~(Kx9ov6 & vis_pc_o[23])); +assign Zvo6x6 = (~(Gli7z6[23] & Rx9ov6)); +assign Gwy7v6 = (~(Nwo6x6 & Uwo6x6)); +assign Uwo6x6 = (Bxo6x6 & Ixo6x6); +assign Ixo6x6 = (~(H02ov6 & Ey97z6)); +assign Bxo6x6 = (Pxo6x6 & Wxo6x6); +assign Wxo6x6 = (C12ov6 | Qyjnv6); +assign Qyjnv6 = (Dyo6x6 & Kyo6x6); +assign Kyo6x6 = (Ryo6x6 & Yyo6x6); +assign Yyo6x6 = (Fzo6x6 & Mzo6x6); +assign Mzo6x6 = (Tzo6x6 & A0p6x6); +assign A0p6x6 = (~(vis_psp_o[23] & N32ov6)); +assign Tzo6x6 = (~(U32ov6 & Pic7z6[23])); +assign Fzo6x6 = (H0p6x6 & O0p6x6); +assign O0p6x6 = (~(vis_msp_o[23] & P42ov6)); +assign H0p6x6 = (~(vis_r12_o[23] & W42ov6)); +assign Ryo6x6 = (V0p6x6 & C1p6x6); +assign C1p6x6 = (J1p6x6 & Q1p6x6); +assign Q1p6x6 = (~(vis_r11_o[23] & F62ov6)); +assign J1p6x6 = (~(vis_r10_o[23] & M62ov6)); +assign V0p6x6 = (X1p6x6 & E2p6x6); +assign E2p6x6 = (~(vis_r9_o[23] & H72ov6)); +assign X1p6x6 = (~(vis_r8_o[23] & O72ov6)); +assign Dyo6x6 = (L2p6x6 & S2p6x6); +assign S2p6x6 = (Z2p6x6 & G3p6x6); +assign G3p6x6 = (N3p6x6 & U3p6x6); +assign U3p6x6 = (~(vis_r7_o[23] & L92ov6)); +assign N3p6x6 = (~(vis_r6_o[23] & S92ov6)); +assign Z2p6x6 = (B4p6x6 & I4p6x6); +assign I4p6x6 = (~(vis_r5_o[23] & Na2ov6)); +assign B4p6x6 = (~(vis_r4_o[23] & Ua2ov6)); +assign L2p6x6 = (P4p6x6 & W4p6x6); +assign W4p6x6 = (D5p6x6 & K5p6x6); +assign K5p6x6 = (~(vis_r3_o[23] & Dc2ov6)); +assign D5p6x6 = (~(vis_r2_o[23] & Kc2ov6)); +assign P4p6x6 = (R5p6x6 & Y5p6x6); +assign Y5p6x6 = (~(vis_r1_o[23] & Fd2ov6)); +assign R5p6x6 = (~(vis_r0_o[23] & Md2ov6)); +assign Pxo6x6 = (~(Td2ov6 & F8yiw6)); +assign F8yiw6 = (Spyiw6 ? Ey97z6 : Gli7z6[23]); +assign Ey97z6 = (~(F6p6x6 & M6p6x6)); +assign M6p6x6 = (~(Nqyiw6 & N7ynv6)); +assign F6p6x6 = (T6p6x6 & A7p6x6); +assign A7p6x6 = (~(Pdc7z6[23] & Ouyiw6)); +assign T6p6x6 = (~(Vuyiw6 & H7p6x6)); +assign H7p6x6 = (~(O7p6x6 & V7p6x6)); +assign V7p6x6 = (C8p6x6 & J8p6x6); +assign J8p6x6 = (Q8p6x6 & X8p6x6); +assign X8p6x6 = (E9p6x6 & L9p6x6); +assign L9p6x6 = (~(S9p6x6 & Uxyiw6)); +assign S9p6x6 = (Kxb7z6[23] & Z9p6x6); +assign E9p6x6 = (~(Gap6x6 & Nap6x6)); +assign Gap6x6 = (~(Uap6x6 & Quziw6)); +assign Uap6x6 = (Bbp6x6 & Ibp6x6); +assign Ibp6x6 = (Z9p6x6 | Ninnv6); +assign Z9p6x6 = (Pbp6x6 | Rje7z6[23]); +assign Bbp6x6 = (~(Ofnnv6 & Pbp6x6)); +assign Q8p6x6 = (Wbp6x6 & Dcp6x6); +assign Dcp6x6 = (~(T0ziw6 & Rje7z6[23])); +assign Wbp6x6 = (Ryfov6 | Kcp6x6); +assign C8p6x6 = (Rcp6x6 & Ycp6x6); +assign Ycp6x6 = (~(Cqf7z6[7] & Q2ziw6)); +assign Rcp6x6 = (Fdp6x6 & Mdp6x6); +assign Mdp6x6 = (~(J73ov6 & Ok3ov6)); +assign Fdp6x6 = (~(L0g7z6[23] & J2ziw6)); +assign O7p6x6 = (Tdp6x6 & Aep6x6); +assign Aep6x6 = (Hep6x6 & Oep6x6); +assign Oep6x6 = (~(Z3ziw6 & Fhc7z6[8])); +assign Hep6x6 = (Vep6x6 & Cfp6x6); +assign Cfp6x6 = (~(L0g7z6[7] & O1ziw6)); +assign Vep6x6 = (~(U4ziw6 & V1c7z6[23])); +assign Tdp6x6 = (Jfp6x6 & Dp3ov6); +assign Dp3ov6 = (Qfp6x6 & T7ziw6); +assign Qfp6x6 = (Xfp6x6 & Egp6x6); +assign Egp6x6 = (~(F7ziw6 & Y6ziw6)); +assign Y6ziw6 = (~(Lgp6x6 ^ Nu8jw6)); +assign Xfp6x6 = (~(R6ziw6 & M7ziw6)); +assign M7ziw6 = (Kdziw6 ^ Dte7z6[1]); +assign Kdziw6 = (Kvbov6 ? Wx1ov6 : V1c7z6[31]); +assign Wx1ov6 = (Dte7z6[12] ? S7gdt6 : V5bov6); +assign Jfp6x6 = (U23ov6 & Sgp6x6); +assign Sgp6x6 = (~(Kaldt6 & Oztiw6)); +assign U23ov6 = (Zgp6x6 & Ghp6x6); +assign Ghp6x6 = (~(Nhp6x6 & J2nnv6)); +assign Nhp6x6 = (~(Q2nnv6 | Icziw6)); +assign Zgp6x6 = (~(Uhp6x6 & Ubziw6)); +assign Uhp6x6 = (~(J2nnv6 ^ Q2nnv6)); +assign Q2nnv6 = (Bip6x6 ^ Mennv6); +assign Bip6x6 = (~(Iip6x6 & Pip6x6)); +assign Pip6x6 = (Wip6x6 & Djp6x6); +assign Djp6x6 = (Kjp6x6 & Rjp6x6); +assign Rjp6x6 = (~(Yxf7z6[25] & Su0jw6)); +assign Kjp6x6 = (Yjp6x6 & Fkp6x6); +assign Fkp6x6 = (~(Yxf7z6[23] & Nv0jw6)); +assign Yjp6x6 = (~(Yxf7z6[24] & Uv0jw6)); +assign Wip6x6 = (Mkp6x6 & Tkp6x6); +assign Tkp6x6 = (~(Yxf7z6[26] & Pw0jw6)); +assign Mkp6x6 = (~(Lgp6x6 & Rdziw6)); +assign Lgp6x6 = (T3cdt6 ? V1c7z6[23] : Nap6x6); +assign Iip6x6 = (Alp6x6 & Hlp6x6); +assign Hlp6x6 = (Olp6x6 & Vlp6x6); +assign Vlp6x6 = (~(Onf7z6[23] & My0jw6)); +assign Olp6x6 = (Cmp6x6 & Jmp6x6); +assign Jmp6x6 = (~(Hz0jw6 & Kxb7z6[23])); +assign Cmp6x6 = (~(Oz0jw6 & Fhc7z6[23])); +assign Alp6x6 = (Qmp6x6 & Xmp6x6); +assign Xmp6x6 = (~(Alf7z6[7] & J01jw6)); +assign Qmp6x6 = (~(Alf7z6[23] & Q01jw6)); +assign J2nnv6 = (~(Enp6x6 ^ Tennv6)); +assign Enp6x6 = (~(Lnp6x6 & Snp6x6)); +assign Snp6x6 = (~(Yxf7z6[7] & Laziw6)); +assign Lnp6x6 = (Znp6x6 & Gop6x6); +assign Gop6x6 = (~(Yxf7z6[23] & Gbziw6)); +assign Znp6x6 = (~(Kxb7z6[23] & Nbziw6)); +assign Nwo6x6 = (Nop6x6 & Uop6x6); +assign Uop6x6 = (~(Ve2ov6 & vis_pc_o[23])); +assign Nop6x6 = (~(Fhc7z6[23] & Cf2ov6)); +assign Zvy7v6 = (~(Bpp6x6 & Ipp6x6)); +assign Ipp6x6 = (Ppp6x6 & Wpp6x6); +assign Wpp6x6 = (Eu9ov6 | Dqp6x6); +assign Ppp6x6 = (Kqp6x6 & Rqp6x6); +assign Rqp6x6 = (~(Gv9ov6 & A9yiw6)); +assign Kqp6x6 = (~(Uv9ov6 & Cz97z6)); +assign Bpp6x6 = (Yqp6x6 & Frp6x6); +assign Frp6x6 = (~(Pw9ov6 & Kxb7z6[20])); +assign Yqp6x6 = (Mrp6x6 & Trp6x6); +assign Trp6x6 = (~(Kx9ov6 & vis_pc_o[20])); +assign Mrp6x6 = (~(Gli7z6[20] & Rx9ov6)); +assign Svy7v6 = (~(Asp6x6 & Hsp6x6)); +assign Hsp6x6 = (Osp6x6 & Vsp6x6); +assign Vsp6x6 = (~(Td2ov6 & A9yiw6)); +assign A9yiw6 = (Spyiw6 ? Cz97z6 : Gli7z6[20]); +assign Td2ov6 = (~(Ctp6x6 | Jtp6x6)); +assign Ctp6x6 = (Cf2ov6 | Mbihw6); +assign Osp6x6 = (Qtp6x6 & Xtp6x6); +assign Xtp6x6 = (~(H02ov6 & Cz97z6)); +assign Cz97z6 = (~(Eup6x6 & Lup6x6)); +assign Lup6x6 = (~(Nqyiw6 & Glynv6)); +assign Eup6x6 = (Sup6x6 & Zup6x6); +assign Zup6x6 = (~(Pdc7z6[20] & Ouyiw6)); +assign Sup6x6 = (~(Vuyiw6 & Gvp6x6)); +assign Gvp6x6 = (~(Nvp6x6 & Uvp6x6)); +assign Uvp6x6 = (Bwp6x6 & Iwp6x6); +assign Iwp6x6 = (Pwp6x6 & Wwp6x6); +assign Wwp6x6 = (Dxp6x6 & Kxp6x6); +assign Kxp6x6 = (~(Rxp6x6 & Uxyiw6)); +assign Rxp6x6 = (Kxb7z6[20] & Yxp6x6); +assign Dxp6x6 = (~(Fyp6x6 & Myp6x6)); +assign Fyp6x6 = (~(Typ6x6 & Quziw6)); +assign Typ6x6 = (Azp6x6 & Hzp6x6); +assign Hzp6x6 = (Yxp6x6 | Ninnv6); +assign Yxp6x6 = (Ozp6x6 | Rje7z6[20]); +assign Azp6x6 = (~(Ofnnv6 & Ozp6x6)); +assign Pwp6x6 = (Vzp6x6 & C0q6x6); +assign C0q6x6 = (~(J73ov6 & Ki3ov6)); +assign Ki3ov6 = (~(Pch6x6 ^ Dte7z6[1])); +assign Pch6x6 = (T3cdt6 ? J0q6x6 : N14ov6); +assign Vzp6x6 = (~(F7ziw6 & Od3ov6)); +assign Bwp6x6 = (Q0q6x6 & X0q6x6); +assign X0q6x6 = (E1q6x6 & L1q6x6); +assign L1q6x6 = (~(R6ziw6 & Xe3ov6)); +assign E1q6x6 = (~(T0ziw6 & Rje7z6[20])); +assign Q0q6x6 = (S1q6x6 & Z1q6x6); +assign Z1q6x6 = (Ryfov6 | G2q6x6); +assign S1q6x6 = (~(L0g7z6[20] & J2ziw6)); +assign Nvp6x6 = (N2q6x6 & U2q6x6); +assign U2q6x6 = (B3q6x6 & I3q6x6); +assign I3q6x6 = (P3q6x6 & W3q6x6); +assign W3q6x6 = (~(Cqf7z6[4] & Q2ziw6)); +assign P3q6x6 = (~(L0g7z6[4] & O1ziw6)); +assign B3q6x6 = (D4q6x6 & K4q6x6); +assign K4q6x6 = (~(U4ziw6 & V1c7z6[20])); +assign D4q6x6 = (~(Z3ziw6 & Fhc7z6[11])); +assign N2q6x6 = (R4q6x6 & N23ov6); +assign N23ov6 = (Y4q6x6 & F5q6x6); +assign F5q6x6 = (~(M5q6x6 & Z3nnv6)); +assign M5q6x6 = (~(G4nnv6 | Icziw6)); +assign Y4q6x6 = (~(T5q6x6 & Ubziw6)); +assign T5q6x6 = (~(Z3nnv6 ^ G4nnv6)); +assign G4nnv6 = (A6q6x6 ^ Mennv6); +assign A6q6x6 = (~(H6q6x6 & O6q6x6)); +assign O6q6x6 = (V6q6x6 & C7q6x6); +assign C7q6x6 = (J7q6x6 & Q7q6x6); +assign Q7q6x6 = (~(Yxf7z6[22] & Su0jw6)); +assign J7q6x6 = (X7q6x6 & E8q6x6); +assign E8q6x6 = (~(Yxf7z6[20] & Nv0jw6)); +assign X7q6x6 = (~(Yxf7z6[21] & Uv0jw6)); +assign V6q6x6 = (L8q6x6 & S8q6x6); +assign S8q6x6 = (~(Yxf7z6[23] & Pw0jw6)); +assign L8q6x6 = (~(Z8q6x6 & Rdziw6)); +assign H6q6x6 = (G9q6x6 & N9q6x6); +assign N9q6x6 = (U9q6x6 & Baq6x6); +assign Baq6x6 = (~(Onf7z6[20] & My0jw6)); +assign U9q6x6 = (Iaq6x6 & Paq6x6); +assign Paq6x6 = (~(Hz0jw6 & Kxb7z6[20])); +assign Iaq6x6 = (~(Oz0jw6 & Fhc7z6[20])); +assign G9q6x6 = (Waq6x6 & Dbq6x6); +assign Dbq6x6 = (~(Alf7z6[4] & J01jw6)); +assign Waq6x6 = (~(Alf7z6[20] & Q01jw6)); +assign Z3nnv6 = (~(Kbq6x6 ^ Tennv6)); +assign Kbq6x6 = (~(Rbq6x6 & Ybq6x6)); +assign Ybq6x6 = (~(Yxf7z6[4] & Laziw6)); +assign Rbq6x6 = (Fcq6x6 & Mcq6x6); +assign Mcq6x6 = (~(Yxf7z6[20] & Gbziw6)); +assign Fcq6x6 = (~(Kxb7z6[20] & Nbziw6)); +assign R4q6x6 = (T7ziw6 & Tcq6x6); +assign Tcq6x6 = (~(Tgldt6 & Oztiw6)); +assign H02ov6 = (Adq6x6 & C3yiw6); +assign Adq6x6 = (Hdq6x6 & Mbihw6); +assign Qtp6x6 = (C12ov6 | M3knv6); +assign M3knv6 = (Odq6x6 & Vdq6x6); +assign Vdq6x6 = (Ceq6x6 & Jeq6x6); +assign Jeq6x6 = (Qeq6x6 & Xeq6x6); +assign Xeq6x6 = (Efq6x6 & Lfq6x6); +assign Lfq6x6 = (~(vis_psp_o[20] & N32ov6)); +assign N32ov6 = (~(Y3ihw6 | Sfq6x6)); +assign Efq6x6 = (~(U32ov6 & Pic7z6[20])); +assign U32ov6 = (Yzriw6 & Zfq6x6); +assign Qeq6x6 = (Ggq6x6 & Ngq6x6); +assign Ngq6x6 = (~(vis_msp_o[20] & P42ov6)); +assign P42ov6 = (~(Zfq6x6 | Y3ihw6)); +assign Ggq6x6 = (~(vis_r12_o[20] & W42ov6)); +assign W42ov6 = (Sfq6x6 & Yzriw6); +assign Ceq6x6 = (Ugq6x6 & Bhq6x6); +assign Bhq6x6 = (Ihq6x6 & Phq6x6); +assign Phq6x6 = (~(vis_r11_o[20] & F62ov6)); +assign F62ov6 = (Whq6x6 & Diq6x6); +assign Ihq6x6 = (~(vis_r10_o[20] & M62ov6)); +assign M62ov6 = (Kiq6x6 & Diq6x6); +assign Ugq6x6 = (Riq6x6 & Yiq6x6); +assign Yiq6x6 = (~(vis_r9_o[20] & H72ov6)); +assign H72ov6 = (Whq6x6 & Fjq6x6); +assign Whq6x6 = (Nfihw6 & Zeihw6); +assign Riq6x6 = (~(vis_r8_o[20] & O72ov6)); +assign O72ov6 = (Kiq6x6 & Fjq6x6); +assign Kiq6x6 = (Mjq6x6 & Nfihw6); +assign Odq6x6 = (Tjq6x6 & Akq6x6); +assign Akq6x6 = (Hkq6x6 & Okq6x6); +assign Okq6x6 = (Vkq6x6 & Clq6x6); +assign Clq6x6 = (~(vis_r7_o[20] & L92ov6)); +assign L92ov6 = (Jlq6x6 & Qlq6x6); +assign Vkq6x6 = (~(vis_r6_o[20] & S92ov6)); +assign S92ov6 = (Jlq6x6 & Xlq6x6); +assign Jlq6x6 = (Zfq6x6 & Xdihw6); +assign Hkq6x6 = (Emq6x6 & Lmq6x6); +assign Lmq6x6 = (~(vis_r5_o[20] & Na2ov6)); +assign Na2ov6 = (Smq6x6 & Qlq6x6); +assign Emq6x6 = (~(vis_r4_o[20] & Ua2ov6)); +assign Ua2ov6 = (Smq6x6 & Xlq6x6); +assign Smq6x6 = (Sfq6x6 & Xdihw6); +assign Tjq6x6 = (Zmq6x6 & Gnq6x6); +assign Gnq6x6 = (Nnq6x6 & Unq6x6); +assign Unq6x6 = (~(vis_r3_o[20] & Dc2ov6)); +assign Dc2ov6 = (Qlq6x6 & Diq6x6); +assign Nnq6x6 = (~(vis_r2_o[20] & Kc2ov6)); +assign Kc2ov6 = (Xlq6x6 & Diq6x6); +assign Diq6x6 = (~(Xdihw6 | Sfq6x6)); +assign Zmq6x6 = (Boq6x6 & Ioq6x6); +assign Ioq6x6 = (~(vis_r1_o[20] & Fd2ov6)); +assign Fd2ov6 = (Qlq6x6 & Fjq6x6); +assign Qlq6x6 = (~(Nfihw6 | Mjq6x6)); +assign Boq6x6 = (~(vis_r0_o[20] & Md2ov6)); +assign Md2ov6 = (Xlq6x6 & Fjq6x6); +assign Fjq6x6 = (~(Zfq6x6 | Xdihw6)); +assign Xlq6x6 = (~(Nfihw6 | Zeihw6)); +assign C12ov6 = (!Ktxiw6); +assign Ktxiw6 = (Poq6x6 & Hdq6x6); +assign Poq6x6 = (Jtp6x6 & Bmknv6); +assign Bmknv6 = (!Mbihw6); +assign Jtp6x6 = (~(Woq6x6 & Dpq6x6)); +assign Dpq6x6 = (Kpq6x6 & Rpq6x6); +assign Rpq6x6 = (Ylyiw6 ^ Sfq6x6); +assign Sfq6x6 = (!Zfq6x6); +assign Zfq6x6 = (~(Ypq6x6 & Fqq6x6)); +assign Fqq6x6 = (~(Mqq6x6 & Tqq6x6)); +assign Kpq6x6 = (Liyiw6 & Arq6x6); +assign Arq6x6 = (Zeihw6 ^ Bkyiw6); +assign Woq6x6 = (Hrq6x6 & Orq6x6); +assign Orq6x6 = (Mlziw6 ^ Nfihw6); +assign Hrq6x6 = (Coyiw6 ^ Xdihw6); +assign Asp6x6 = (Vrq6x6 & Csq6x6); +assign Csq6x6 = (~(Ve2ov6 & vis_pc_o[20])); +assign Ve2ov6 = (Jsq6x6 & Hdq6x6); +assign Hdq6x6 = (!Cf2ov6); +assign Jsq6x6 = (Mbihw6 & Qsq6x6); +assign Mbihw6 = (Mqq6x6 & F4ihw6); +assign Mqq6x6 = (!Y3ihw6); +assign Y3ihw6 = (~(Xsq6x6 & Nfihw6)); +assign Xsq6x6 = (Xdihw6 & Zeihw6); +assign Vrq6x6 = (~(Fhc7z6[20] & Cf2ov6)); +assign Cf2ov6 = (~(Etq6x6 & Ltq6x6)); +assign Lvy7v6 = (Z6jhw6 ? D5f7z6[3] : Wjnnv6); +assign Wjnnv6 = (Ua0jw6 | P40jw6); +assign Evy7v6 = (~(Stq6x6 & Ztq6x6)); +assign Ztq6x6 = (Guq6x6 & Nuq6x6); +assign Nuq6x6 = (~(Myp6x6 & C6bov6)); +assign Guq6x6 = (~(J6bov6 & Alf7z6[20])); +assign Stq6x6 = (Uuq6x6 & Bvq6x6); +assign Bvq6x6 = (~(Cqf7z6[4] & E7bov6)); +assign Uuq6x6 = (~(L0g7z6[20] & L7bov6)); +assign Xuy7v6 = (~(Ivq6x6 & Pvq6x6)); +assign Pvq6x6 = (Wvq6x6 & Dwq6x6); +assign Dwq6x6 = (~(Lt3ov6 & C6bov6)); +assign Wvq6x6 = (~(J6bov6 & Alf7z6[29])); +assign Ivq6x6 = (Kwq6x6 & Rwq6x6); +assign Rwq6x6 = (~(Cqf7z6[13] & E7bov6)); +assign Kwq6x6 = (~(L0g7z6[29] & L7bov6)); +assign Quy7v6 = (~(Ywq6x6 & Fxq6x6)); +assign Fxq6x6 = (Mxq6x6 & Txq6x6); +assign Txq6x6 = (~(Uu3ov6 & C6bov6)); +assign Mxq6x6 = (~(J6bov6 & Alf7z6[28])); +assign Ywq6x6 = (Ayq6x6 & Hyq6x6); +assign Hyq6x6 = (~(Cqf7z6[12] & E7bov6)); +assign Ayq6x6 = (~(L0g7z6[28] & L7bov6)); +assign Juy7v6 = (~(Oyq6x6 & Vyq6x6)); +assign Vyq6x6 = (Czq6x6 & Jzq6x6); +assign Jzq6x6 = (~(M85jw6 & C6bov6)); +assign Czq6x6 = (~(J6bov6 & Alf7z6[15])); +assign Oyq6x6 = (Qzq6x6 & Xzq6x6); +assign Xzq6x6 = (~(L0g7z6[31] & E7bov6)); +assign Qzq6x6 = (~(L0g7z6[15] & L7bov6)); +assign Cuy7v6 = (~(E0r6x6 & L0r6x6)); +assign L0r6x6 = (S0r6x6 & Z0r6x6); +assign Z0r6x6 = (~(Nap6x6 & C6bov6)); +assign S0r6x6 = (~(J6bov6 & Alf7z6[23])); +assign E0r6x6 = (G1r6x6 & N1r6x6); +assign N1r6x6 = (~(Cqf7z6[7] & E7bov6)); +assign G1r6x6 = (~(L0g7z6[23] & L7bov6)); +assign Vty7v6 = (~(U1r6x6 & B2r6x6)); +assign B2r6x6 = (I2r6x6 & P2r6x6); +assign P2r6x6 = (~(Bv3ov6 & C6bov6)); +assign I2r6x6 = (~(J6bov6 & Alf7z6[7])); +assign U1r6x6 = (W2r6x6 & D3r6x6); +assign D3r6x6 = (~(L0g7z6[23] & E7bov6)); +assign W2r6x6 = (~(L0g7z6[7] & L7bov6)); +assign Oty7v6 = (~(K3r6x6 & R3r6x6)); +assign R3r6x6 = (Y3r6x6 & F4r6x6); +assign F4r6x6 = (~(Zbn6x6 & C6bov6)); +assign Y3r6x6 = (~(J6bov6 & Alf7z6[14])); +assign K3r6x6 = (M4r6x6 & T4r6x6); +assign T4r6x6 = (~(L0g7z6[30] & E7bov6)); +assign M4r6x6 = (~(L0g7z6[14] & L7bov6)); +assign Hty7v6 = (~(A5r6x6 & H5r6x6)); +assign H5r6x6 = (O5r6x6 & V5r6x6); +assign V5r6x6 = (~(Yfm6x6 & C6bov6)); +assign O5r6x6 = (~(J6bov6 & Alf7z6[22])); +assign A5r6x6 = (C6r6x6 & J6r6x6); +assign J6r6x6 = (~(Cqf7z6[6] & E7bov6)); +assign C6r6x6 = (~(L0g7z6[22] & L7bov6)); +assign Aty7v6 = (~(Q6r6x6 & X6r6x6)); +assign X6r6x6 = (E7r6x6 & L7r6x6); +assign L7r6x6 = (~(Nu3ov6 & C6bov6)); +assign E7r6x6 = (~(J6bov6 & Alf7z6[6])); +assign Q6r6x6 = (S7r6x6 & Z7r6x6); +assign Z7r6x6 = (~(L0g7z6[22] & E7bov6)); +assign S7r6x6 = (~(L0g7z6[6] & L7bov6)); +assign Tsy7v6 = (~(G8r6x6 & N8r6x6)); +assign N8r6x6 = (U8r6x6 & B9r6x6); +assign B9r6x6 = (~(Dok6x6 & C6bov6)); +assign U8r6x6 = (~(J6bov6 & Alf7z6[13])); +assign G8r6x6 = (I9r6x6 & P9r6x6); +assign P9r6x6 = (~(L0g7z6[29] & E7bov6)); +assign I9r6x6 = (~(L0g7z6[13] & L7bov6)); +assign Msy7v6 = (~(W9r6x6 & Dar6x6)); +assign Dar6x6 = (Kar6x6 & Rar6x6); +assign Rar6x6 = (~(Csj6x6 & C6bov6)); +assign Kar6x6 = (~(J6bov6 & Alf7z6[21])); +assign W9r6x6 = (Yar6x6 & Fbr6x6); +assign Fbr6x6 = (~(Cqf7z6[5] & E7bov6)); +assign Yar6x6 = (~(L0g7z6[21] & L7bov6)); +assign Fsy7v6 = (~(Mbr6x6 & Tbr6x6)); +assign Tbr6x6 = (Acr6x6 & Hcr6x6); +assign Hcr6x6 = (~(Xs3ov6 & C6bov6)); +assign Acr6x6 = (~(J6bov6 & Alf7z6[5])); +assign Mbr6x6 = (Ocr6x6 & Vcr6x6); +assign Vcr6x6 = (~(L0g7z6[21] & E7bov6)); +assign Ocr6x6 = (~(L0g7z6[5] & L7bov6)); +assign Yry7v6 = (~(Cdr6x6 & Jdr6x6)); +assign Jdr6x6 = (Qdr6x6 & Xdr6x6); +assign Xdr6x6 = (~(Et3ov6 & C6bov6)); +assign Qdr6x6 = (~(J6bov6 & Alf7z6[4])); +assign Cdr6x6 = (Eer6x6 & Ler6x6); +assign Ler6x6 = (~(L0g7z6[20] & E7bov6)); +assign Eer6x6 = (~(L0g7z6[4] & L7bov6)); +assign Rry7v6 = (~(Ser6x6 & Zer6x6)); +assign Zer6x6 = (Gfr6x6 & Nfr6x6); +assign Nfr6x6 = (~(Ryh6x6 & C6bov6)); +assign Gfr6x6 = (~(J6bov6 & Alf7z6[3])); +assign Ser6x6 = (Ufr6x6 & Bgr6x6); +assign Bgr6x6 = (~(L0g7z6[19] & E7bov6)); +assign Ufr6x6 = (~(L0g7z6[3] & L7bov6)); +assign Kry7v6 = (~(Igr6x6 & Pgr6x6)); +assign Pgr6x6 = (Wgr6x6 & Dhr6x6); +assign Dhr6x6 = (~(X2h6x6 & C6bov6)); +assign Wgr6x6 = (~(J6bov6 & Alf7z6[12])); +assign Igr6x6 = (Khr6x6 & Rhr6x6); +assign Rhr6x6 = (~(L0g7z6[28] & E7bov6)); +assign Khr6x6 = (~(L0g7z6[12] & L7bov6)); +assign Dry7v6 = (~(Yhr6x6 & Fir6x6)); +assign Fir6x6 = (Mir6x6 & Tir6x6); +assign Tir6x6 = (~(O9cjw6 & C6bov6)); +assign Mir6x6 = (~(J6bov6 & Alf7z6[19])); +assign Yhr6x6 = (Ajr6x6 & Hjr6x6); +assign Hjr6x6 = (~(Cqf7z6[3] & E7bov6)); +assign Ajr6x6 = (~(L0g7z6[19] & L7bov6)); +assign Wqy7v6 = (~(Ojr6x6 & Vjr6x6)); +assign Vjr6x6 = (Ckr6x6 & Jkr6x6); +assign Jkr6x6 = (~(Pebjw6 & C6bov6)); +assign Ckr6x6 = (~(J6bov6 & Alf7z6[11])); +assign Ojr6x6 = (Qkr6x6 & Xkr6x6); +assign Xkr6x6 = (~(L0g7z6[27] & E7bov6)); +assign Qkr6x6 = (~(L0g7z6[11] & L7bov6)); +assign Pqy7v6 = (~(Elr6x6 & Llr6x6)); +assign Llr6x6 = (Slr6x6 & Zlr6x6); +assign Zlr6x6 = (~(Oiajw6 & C6bov6)); +assign Slr6x6 = (~(J6bov6 & Alf7z6[17])); +assign Elr6x6 = (Gmr6x6 & Nmr6x6); +assign Nmr6x6 = (~(Cqf7z6[1] & E7bov6)); +assign Gmr6x6 = (~(L0g7z6[17] & L7bov6)); +assign Iqy7v6 = (~(Umr6x6 & Bnr6x6)); +assign Bnr6x6 = (Inr6x6 & Pnr6x6); +assign Pnr6x6 = (~(Pn9jw6 & C6bov6)); +assign Inr6x6 = (~(J6bov6 & Alf7z6[9])); +assign Umr6x6 = (Wnr6x6 & Dor6x6); +assign Dor6x6 = (~(L0g7z6[25] & E7bov6)); +assign Wnr6x6 = (~(L0g7z6[9] & L7bov6)); +assign Bqy7v6 = (~(Kor6x6 & Ror6x6)); +assign Ror6x6 = (Yor6x6 & Fpr6x6); +assign Fpr6x6 = (~(Ku3jw6 & C6bov6)); +assign Yor6x6 = (~(J6bov6 & Alf7z6[8])); +assign Kor6x6 = (Mpr6x6 & Tpr6x6); +assign Tpr6x6 = (~(L0g7z6[24] & E7bov6)); +assign Mpr6x6 = (~(L0g7z6[8] & L7bov6)); +assign Upy7v6 = (~(Aqr6x6 & Hqr6x6)); +assign Hqr6x6 = (Oqr6x6 & Vqr6x6); +assign Vqr6x6 = (~(Hr8jw6 & C6bov6)); +assign Oqr6x6 = (~(J6bov6 & Alf7z6[16])); +assign Aqr6x6 = (Crr6x6 & Jrr6x6); +assign Jrr6x6 = (~(Cqf7z6[0] & E7bov6)); +assign Crr6x6 = (~(L0g7z6[16] & L7bov6)); +assign Npy7v6 = (~(Qrr6x6 & Xrr6x6)); +assign Xrr6x6 = (Esr6x6 & Lsr6x6); +assign Lsr6x6 = (~(A07jw6 & C6bov6)); +assign Esr6x6 = (~(J6bov6 & Alf7z6[25])); +assign Qrr6x6 = (Ssr6x6 & Zsr6x6); +assign Zsr6x6 = (~(Cqf7z6[9] & E7bov6)); +assign Ssr6x6 = (~(L0g7z6[25] & L7bov6)); +assign Gpy7v6 = (~(Gtr6x6 & Ntr6x6)); +assign Ntr6x6 = (~(Eji7z6[26] & C3yiw6)); +assign Gtr6x6 = (Utr6x6 & Bur6x6); +assign Bur6x6 = (~(Bhi7z6[26] & X3yiw6)); +assign Utr6x6 = (~(E4yiw6 & vis_pc_o[26])); +assign Zoy7v6 = (~(Iur6x6 & Pur6x6)); +assign Pur6x6 = (~(Eji7z6[27] & C3yiw6)); +assign Iur6x6 = (Wur6x6 & Dvr6x6); +assign Dvr6x6 = (~(Bhi7z6[27] & X3yiw6)); +assign Wur6x6 = (~(E4yiw6 & vis_pc_o[27])); +assign Soy7v6 = (~(Kvr6x6 & Rvr6x6)); +assign Rvr6x6 = (~(Eji7z6[28] & C3yiw6)); +assign Kvr6x6 = (Yvr6x6 & Fwr6x6); +assign Fwr6x6 = (~(Bhi7z6[28] & X3yiw6)); +assign Yvr6x6 = (~(E4yiw6 & vis_pc_o[28])); +assign Loy7v6 = (~(Mwr6x6 & Twr6x6)); +assign Twr6x6 = (~(Eji7z6[29] & C3yiw6)); +assign Mwr6x6 = (Axr6x6 & Hxr6x6); +assign Hxr6x6 = (~(Bhi7z6[29] & X3yiw6)); +assign Axr6x6 = (~(E4yiw6 & vis_pc_o[29])); +assign Eoy7v6 = (~(Oxr6x6 & Vxr6x6)); +assign Vxr6x6 = (~(Eji7z6[30] & C3yiw6)); +assign Oxr6x6 = (Cyr6x6 & Jyr6x6); +assign Jyr6x6 = (~(Bhi7z6[30] & X3yiw6)); +assign Cyr6x6 = (~(E4yiw6 & vis_pc_o[30])); +assign Xny7v6 = (~(Qyr6x6 & Xyr6x6)); +assign Xyr6x6 = (~(Eji7z6[31] & C3yiw6)); +assign Qyr6x6 = (Ezr6x6 & Lzr6x6); +assign Lzr6x6 = (~(Bhi7z6[31] & X3yiw6)); +assign X3yiw6 = (~(E4yiw6 | C3yiw6)); +assign Ezr6x6 = (~(E4yiw6 & vis_pc_o[31])); +assign E4yiw6 = (~(Ut2jw6 | C3yiw6)); +assign Qny7v6 = (~(Szr6x6 & Zzr6x6)); +assign Zzr6x6 = (G0s6x6 & N0s6x6); +assign N0s6x6 = (Eu9ov6 | U0s6x6); +assign G0s6x6 = (B1s6x6 & I1s6x6); +assign I1s6x6 = (~(Gv9ov6 & W7xiw6)); +assign W7xiw6 = (Gninv6 ? Gli7z6[26] : Qw97z6); +assign B1s6x6 = (~(Uv9ov6 & Qw97z6)); +assign Qw97z6 = (~(P1s6x6 & W1s6x6)); +assign W1s6x6 = (~(Nqyiw6 & Iuxnv6)); +assign P1s6x6 = (D2s6x6 & K2s6x6); +assign K2s6x6 = (~(Pdc7z6[26] & Ouyiw6)); +assign D2s6x6 = (~(Vuyiw6 & R2s6x6)); +assign R2s6x6 = (~(Y2s6x6 & F3s6x6)); +assign F3s6x6 = (M3s6x6 & T3s6x6); +assign T3s6x6 = (A4s6x6 & H4s6x6); +assign H4s6x6 = (O4s6x6 & V4s6x6); +assign V4s6x6 = (~(C5s6x6 & Uxyiw6)); +assign C5s6x6 = (Kxb7z6[26] & J5s6x6); +assign O4s6x6 = (~(Qs3ov6 & Q5s6x6)); +assign Q5s6x6 = (~(X5s6x6 & Quziw6)); +assign X5s6x6 = (E6s6x6 & L6s6x6); +assign L6s6x6 = (J5s6x6 | Ninnv6); +assign J5s6x6 = (S6s6x6 | Rje7z6[26]); +assign E6s6x6 = (~(Ofnnv6 & S6s6x6)); +assign A4s6x6 = (Z6s6x6 & G7s6x6); +assign G7s6x6 = (~(J73ov6 & Un3ov6)); +assign Un3ov6 = (~(M42jw6 ^ Dte7z6[1])); +assign M42jw6 = (T3cdt6 ? N7s6x6 : Fx3ov6); +assign Z6s6x6 = (~(F7ziw6 & Db3ov6)); +assign Db3ov6 = (U7s6x6 ^ Dte7z6[1]); +assign M3s6x6 = (B8s6x6 & I8s6x6); +assign I8s6x6 = (P8s6x6 & W8s6x6); +assign W8s6x6 = (~(R6ziw6 & Vd3ov6)); +assign Vd3ov6 = (K66jw6 ^ Dte7z6[1]); +assign K66jw6 = (T3cdt6 ? V1c7z6[18] : Ew5jw6); +assign P8s6x6 = (~(T0ziw6 & Rje7z6[26])); +assign B8s6x6 = (D9s6x6 & K9s6x6); +assign K9s6x6 = (Ryfov6 | R9s6x6); +assign R9s6x6 = (!S6s6x6); +assign D9s6x6 = (~(L0g7z6[26] & J2ziw6)); +assign Y2s6x6 = (Y9s6x6 & Fas6x6); +assign Fas6x6 = (Mas6x6 & Tas6x6); +assign Tas6x6 = (Abs6x6 & Hbs6x6); +assign Hbs6x6 = (~(Cqf7z6[10] & Q2ziw6)); +assign Abs6x6 = (~(L0g7z6[10] & O1ziw6)); +assign Mas6x6 = (Obs6x6 & Vbs6x6); +assign Vbs6x6 = (~(U4ziw6 & V1c7z6[26])); +assign Obs6x6 = (~(Z3ziw6 & Fhc7z6[5])); +assign Y9s6x6 = (Ccs6x6 & W33ov6); +assign W33ov6 = (Jcs6x6 & Qcs6x6); +assign Qcs6x6 = (~(Xcs6x6 & T0nnv6)); +assign Xcs6x6 = (~(A1nnv6 | Icziw6)); +assign Jcs6x6 = (~(Eds6x6 & Ubziw6)); +assign Eds6x6 = (~(T0nnv6 ^ A1nnv6)); +assign A1nnv6 = (Lds6x6 ^ Mennv6); +assign Lds6x6 = (~(Sds6x6 & Zds6x6)); +assign Zds6x6 = (Ges6x6 & Nes6x6); +assign Nes6x6 = (Ues6x6 & Bfs6x6); +assign Bfs6x6 = (~(Su0jw6 & Yxf7z6[28])); +assign Ues6x6 = (Ifs6x6 & Pfs6x6); +assign Pfs6x6 = (~(Yxf7z6[26] & Nv0jw6)); +assign Ifs6x6 = (~(Yxf7z6[27] & Uv0jw6)); +assign Ges6x6 = (Wfs6x6 & Dgs6x6); +assign Dgs6x6 = (~(Pw0jw6 & Yxf7z6[29])); +assign Wfs6x6 = (~(U7s6x6 & Rdziw6)); +assign U7s6x6 = (T3cdt6 ? V1c7z6[26] : Qs3ov6); +assign Sds6x6 = (Kgs6x6 & Rgs6x6); +assign Rgs6x6 = (Ygs6x6 & Fhs6x6); +assign Fhs6x6 = (~(Onf7z6[26] & My0jw6)); +assign Ygs6x6 = (Mhs6x6 & Ths6x6); +assign Ths6x6 = (~(Hz0jw6 & Kxb7z6[26])); +assign Mhs6x6 = (~(Oz0jw6 & Fhc7z6[26])); +assign Kgs6x6 = (Ais6x6 & His6x6); +assign His6x6 = (~(Alf7z6[10] & J01jw6)); +assign Ais6x6 = (~(Alf7z6[26] & Q01jw6)); +assign T0nnv6 = (~(Ois6x6 ^ Tennv6)); +assign Ois6x6 = (~(Vis6x6 & Cjs6x6)); +assign Cjs6x6 = (~(Yxf7z6[10] & Laziw6)); +assign Vis6x6 = (Jjs6x6 & Qjs6x6); +assign Qjs6x6 = (~(Yxf7z6[26] & Gbziw6)); +assign Jjs6x6 = (~(Kxb7z6[26] & Nbziw6)); +assign Ccs6x6 = (T7ziw6 & Xjs6x6); +assign Xjs6x6 = (~(B4ldt6 & Oztiw6)); +assign Szr6x6 = (Eks6x6 & Lks6x6); +assign Lks6x6 = (~(Pw9ov6 & Kxb7z6[26])); +assign Eks6x6 = (Sks6x6 & Zks6x6); +assign Zks6x6 = (~(Kx9ov6 & vis_pc_o[26])); +assign Sks6x6 = (~(Gli7z6[26] & Rx9ov6)); +assign Jny7v6 = (~(Gls6x6 & Nls6x6)); +assign Nls6x6 = (Uls6x6 & Bms6x6); +assign Bms6x6 = (~(Kp1jw6 & C6bov6)); +assign Uls6x6 = (~(J6bov6 & Alf7z6[2])); +assign Gls6x6 = (Ims6x6 & Pms6x6); +assign Pms6x6 = (~(L0g7z6[18] & E7bov6)); +assign Ims6x6 = (~(L0g7z6[2] & L7bov6)); +assign Cny7v6 = (~(Wms6x6 & Dns6x6)); +assign Dns6x6 = (Kns6x6 & Rns6x6); +assign Rns6x6 = (~(Ci4jw6 & C6bov6)); +assign Kns6x6 = (~(J6bov6 & Alf7z6[10])); +assign Wms6x6 = (Yns6x6 & Fos6x6); +assign Fos6x6 = (~(L0g7z6[26] & E7bov6)); +assign Yns6x6 = (~(L0g7z6[10] & L7bov6)); +assign Vmy7v6 = (~(Mos6x6 & Tos6x6)); +assign Tos6x6 = (Aps6x6 & Hps6x6); +assign Hps6x6 = (~(Ew5jw6 & C6bov6)); +assign Aps6x6 = (~(J6bov6 & Alf7z6[18])); +assign Mos6x6 = (Ops6x6 & Vps6x6); +assign Vps6x6 = (~(Cqf7z6[2] & E7bov6)); +assign Ops6x6 = (~(L0g7z6[18] & L7bov6)); +assign Omy7v6 = (~(Cqs6x6 & Jqs6x6)); +assign Jqs6x6 = (Qqs6x6 & Xqs6x6); +assign Xqs6x6 = (Eu9ov6 | Ers6x6); +assign Qqs6x6 = (Lrs6x6 & Srs6x6); +assign Srs6x6 = (~(Gv9ov6 & S2gov6)); +assign S2gov6 = (Gninv6 ? Gli7z6[27] : Sv97z6); +assign Lrs6x6 = (~(Uv9ov6 & Sv97z6)); +assign Sv97z6 = (~(Zrs6x6 & Gss6x6)); +assign Gss6x6 = (~(Nqyiw6 & Tpxnv6)); +assign Zrs6x6 = (Nss6x6 & Uss6x6); +assign Uss6x6 = (~(Pdc7z6[27] & Ouyiw6)); +assign Nss6x6 = (~(Vuyiw6 & Bts6x6)); +assign Bts6x6 = (~(Its6x6 & Pts6x6)); +assign Pts6x6 = (Wts6x6 & Dus6x6); +assign Dus6x6 = (Kus6x6 & Rus6x6); +assign Rus6x6 = (Yus6x6 & Fvs6x6); +assign Fvs6x6 = (~(Mvs6x6 & Uxyiw6)); +assign Mvs6x6 = (Kxb7z6[27] & Tvs6x6); +assign Yus6x6 = (~(St3ov6 & Aws6x6)); +assign Aws6x6 = (~(Hws6x6 & Quziw6)); +assign Hws6x6 = (Ows6x6 & Vws6x6); +assign Vws6x6 = (Tvs6x6 | Ninnv6); +assign Tvs6x6 = (Cxs6x6 | Rje7z6[27]); +assign Ows6x6 = (~(Ofnnv6 & Cxs6x6)); +assign Kus6x6 = (Jxs6x6 & Qxs6x6); +assign Qxs6x6 = (~(J73ov6 & Xl3ov6)); +assign Xl3ov6 = (~(L9i6x6 ^ Dte7z6[1])); +assign L9i6x6 = (T3cdt6 ? G8phw6 : Ay3ov6); +assign Jxs6x6 = (~(R6ziw6 & Hd3ov6)); +assign Hd3ov6 = (Ujcjw6 ^ Dte7z6[1]); +assign Ujcjw6 = (T3cdt6 ? V1c7z6[19] : O9cjw6); +assign Wts6x6 = (Xxs6x6 & Eys6x6); +assign Eys6x6 = (Lys6x6 & Sys6x6); +assign Sys6x6 = (~(F7ziw6 & Ad3ov6)); +assign Ad3ov6 = (Zys6x6 ^ Dte7z6[1]); +assign Lys6x6 = (~(T0ziw6 & Rje7z6[27])); +assign Xxs6x6 = (Gzs6x6 & Nzs6x6); +assign Nzs6x6 = (Ryfov6 | Uzs6x6); +assign Uzs6x6 = (!Cxs6x6); +assign Gzs6x6 = (~(L0g7z6[27] & J2ziw6)); +assign Its6x6 = (B0t6x6 & I0t6x6); +assign I0t6x6 = (P0t6x6 & W0t6x6); +assign W0t6x6 = (D1t6x6 & K1t6x6); +assign K1t6x6 = (~(Cqf7z6[11] & Q2ziw6)); +assign D1t6x6 = (~(L0g7z6[11] & O1ziw6)); +assign P0t6x6 = (R1t6x6 & Y1t6x6); +assign Y1t6x6 = (~(U4ziw6 & V1c7z6[27])); +assign R1t6x6 = (~(B5ziw6 & Lsfdt6)); +assign B0t6x6 = (F2t6x6 & M2t6x6); +assign M2t6x6 = (T2t6x6 & A3t6x6); +assign A3t6x6 = (~(Z3ziw6 & E3c7z6[4])); +assign T2t6x6 = (~(Y1ldt6 & Oztiw6)); +assign F2t6x6 = (P33ov6 & T7ziw6); +assign P33ov6 = (H3t6x6 & O3t6x6); +assign O3t6x6 = (~(V3t6x6 & F0nnv6)); +assign V3t6x6 = (~(M0nnv6 | Icziw6)); +assign H3t6x6 = (~(C4t6x6 & Ubziw6)); +assign C4t6x6 = (~(F0nnv6 ^ M0nnv6)); +assign M0nnv6 = (J4t6x6 ^ Mennv6); +assign J4t6x6 = (~(Q4t6x6 & X4t6x6)); +assign X4t6x6 = (E5t6x6 & L5t6x6); +assign L5t6x6 = (S5t6x6 & Z5t6x6); +assign Z5t6x6 = (~(Su0jw6 & Yxf7z6[29])); +assign S5t6x6 = (G6t6x6 & N6t6x6); +assign N6t6x6 = (~(Yxf7z6[27] & Nv0jw6)); +assign G6t6x6 = (~(Uv0jw6 & Yxf7z6[28])); +assign E5t6x6 = (U6t6x6 & B7t6x6); +assign B7t6x6 = (~(Pw0jw6 & Yxf7z6[30])); +assign U6t6x6 = (~(Zys6x6 & Rdziw6)); +assign Zys6x6 = (T3cdt6 ? V1c7z6[27] : St3ov6); +assign Q4t6x6 = (I7t6x6 & P7t6x6); +assign P7t6x6 = (W7t6x6 & D8t6x6); +assign D8t6x6 = (~(Onf7z6[27] & My0jw6)); +assign W7t6x6 = (K8t6x6 & R8t6x6); +assign R8t6x6 = (~(Hz0jw6 & Kxb7z6[27])); +assign K8t6x6 = (~(Oz0jw6 & Fhc7z6[27])); +assign I7t6x6 = (Y8t6x6 & F9t6x6); +assign F9t6x6 = (~(Alf7z6[11] & J01jw6)); +assign Y8t6x6 = (~(Alf7z6[27] & Q01jw6)); +assign F0nnv6 = (~(M9t6x6 ^ Tennv6)); +assign M9t6x6 = (~(T9t6x6 & Aat6x6)); +assign Aat6x6 = (~(Yxf7z6[11] & Laziw6)); +assign T9t6x6 = (Hat6x6 & Oat6x6); +assign Oat6x6 = (~(Yxf7z6[27] & Gbziw6)); +assign Hat6x6 = (~(Kxb7z6[27] & Nbziw6)); +assign Cqs6x6 = (Vat6x6 & Cbt6x6); +assign Cbt6x6 = (~(Pw9ov6 & Kxb7z6[27])); +assign Vat6x6 = (Jbt6x6 & Qbt6x6); +assign Qbt6x6 = (~(Kx9ov6 & vis_pc_o[27])); +assign Jbt6x6 = (~(Gli7z6[27] & Rx9ov6)); +assign Hmy7v6 = (~(Xbt6x6 & Ect6x6)); +assign Ect6x6 = (Lct6x6 & Sct6x6); +assign Sct6x6 = (Eu9ov6 | Zct6x6); +assign Lct6x6 = (Gdt6x6 & Ndt6x6); +assign Ndt6x6 = (~(Gv9ov6 & C7aov6)); +assign C7aov6 = (Gninv6 ? Gli7z6[28] : Uu97z6); +assign Gdt6x6 = (~(Uv9ov6 & Uu97z6)); +assign Uu97z6 = (~(Udt6x6 & Bet6x6)); +assign Bet6x6 = (~(Nqyiw6 & Elxnv6)); +assign Udt6x6 = (Iet6x6 & Pet6x6); +assign Pet6x6 = (~(Pdc7z6[28] & Ouyiw6)); +assign Iet6x6 = (~(Vuyiw6 & Wet6x6)); +assign Wet6x6 = (~(Dft6x6 & Kft6x6)); +assign Kft6x6 = (Rft6x6 & Yft6x6); +assign Yft6x6 = (Fgt6x6 & Mgt6x6); +assign Mgt6x6 = (Tgt6x6 & Aht6x6); +assign Aht6x6 = (~(Hht6x6 & Uxyiw6)); +assign Hht6x6 = (Kxb7z6[28] & Oht6x6); +assign Tgt6x6 = (~(Uu3ov6 & Vht6x6)); +assign Vht6x6 = (~(Cit6x6 & Quziw6)); +assign Cit6x6 = (Jit6x6 & Qit6x6); +assign Qit6x6 = (Oht6x6 | Ninnv6); +assign Oht6x6 = (Rje7z6[28] | Xit6x6); +assign Jit6x6 = (~(Ofnnv6 & Xit6x6)); +assign Fgt6x6 = (Ejt6x6 & Ljt6x6); +assign Ljt6x6 = (~(J73ov6 & Em3ov6)); +assign Em3ov6 = (Ue3jw6 ^ Dte7z6[1]); +assign Ue3jw6 = (T3cdt6 ? V1c7z6[4] : Et3ov6); +assign Ejt6x6 = (~(R6ziw6 & Od3ov6)); +assign Od3ov6 = (Z8q6x6 ^ Dte7z6[1]); +assign Z8q6x6 = (T3cdt6 ? V1c7z6[20] : Myp6x6); +assign Rft6x6 = (Sjt6x6 & Zjt6x6); +assign Zjt6x6 = (Gkt6x6 & Nkt6x6); +assign Nkt6x6 = (~(F7ziw6 & Xe3ov6)); +assign Xe3ov6 = (Ukt6x6 ^ Dte7z6[1]); +assign Gkt6x6 = (~(T0ziw6 & Rje7z6[28])); +assign Sjt6x6 = (Blt6x6 & Ilt6x6); +assign Ilt6x6 = (Ryfov6 | Plt6x6); +assign Blt6x6 = (~(L0g7z6[28] & J2ziw6)); +assign Dft6x6 = (Wlt6x6 & Dmt6x6); +assign Dmt6x6 = (Kmt6x6 & Rmt6x6); +assign Rmt6x6 = (Ymt6x6 & Fnt6x6); +assign Fnt6x6 = (~(Cqf7z6[12] & Q2ziw6)); +assign Ymt6x6 = (~(L0g7z6[12] & O1ziw6)); +assign Kmt6x6 = (Mnt6x6 & Tnt6x6); +assign Tnt6x6 = (~(U4ziw6 & V1c7z6[28])); +assign Mnt6x6 = (~(B5ziw6 & H9gdt6)); +assign Wlt6x6 = (Aot6x6 & Hot6x6); +assign Hot6x6 = (Oot6x6 & Vot6x6); +assign Vot6x6 = (~(Z3ziw6 & E3c7z6[3])); +assign Oot6x6 = (~(Vzkdt6 & Oztiw6)); +assign Aot6x6 = (D43ov6 & T7ziw6); +assign D43ov6 = (Cpt6x6 & Jpt6x6); +assign Jpt6x6 = (~(Qpt6x6 & Rzmnv6)); +assign Qpt6x6 = (~(Yzmnv6 | Icziw6)); +assign Cpt6x6 = (~(Xpt6x6 & Ubziw6)); +assign Xpt6x6 = (~(Rzmnv6 ^ Yzmnv6)); +assign Yzmnv6 = (Eqt6x6 ^ Mennv6); +assign Eqt6x6 = (~(Lqt6x6 & Sqt6x6)); +assign Sqt6x6 = (Zqt6x6 & Grt6x6); +assign Grt6x6 = (Nrt6x6 & Urt6x6); +assign Urt6x6 = (~(Yxf7z6[30] & Su0jw6)); +assign Nrt6x6 = (Bst6x6 & Ist6x6); +assign Ist6x6 = (~(Yxf7z6[28] & Nv0jw6)); +assign Bst6x6 = (~(Yxf7z6[29] & Uv0jw6)); +assign Zqt6x6 = (Pst6x6 & Wst6x6); +assign Wst6x6 = (~(Pw0jw6 & Yxf7z6[31])); +assign Pst6x6 = (~(Ukt6x6 & Rdziw6)); +assign Ukt6x6 = (T3cdt6 ? V1c7z6[28] : Uu3ov6); +assign Lqt6x6 = (Dtt6x6 & Ktt6x6); +assign Ktt6x6 = (Rtt6x6 & Ytt6x6); +assign Ytt6x6 = (~(Onf7z6[28] & My0jw6)); +assign Rtt6x6 = (Fut6x6 & Mut6x6); +assign Mut6x6 = (~(Hz0jw6 & Kxb7z6[28])); +assign Fut6x6 = (~(Oz0jw6 & Fhc7z6[28])); +assign Dtt6x6 = (Tut6x6 & Avt6x6); +assign Avt6x6 = (~(Alf7z6[12] & J01jw6)); +assign Tut6x6 = (~(Alf7z6[28] & Q01jw6)); +assign Rzmnv6 = (~(Hvt6x6 ^ Tennv6)); +assign Tennv6 = (!Dte7z6[0]); +assign Hvt6x6 = (~(Ovt6x6 & Vvt6x6)); +assign Vvt6x6 = (~(Yxf7z6[12] & Laziw6)); +assign Ovt6x6 = (Cwt6x6 & Jwt6x6); +assign Jwt6x6 = (~(Yxf7z6[28] & Gbziw6)); +assign Cwt6x6 = (~(Kxb7z6[28] & Nbziw6)); +assign Xbt6x6 = (Qwt6x6 & Xwt6x6); +assign Xwt6x6 = (~(Pw9ov6 & Kxb7z6[28])); +assign Qwt6x6 = (Ext6x6 & Lxt6x6); +assign Lxt6x6 = (~(Kx9ov6 & vis_pc_o[28])); +assign Ext6x6 = (~(Gli7z6[28] & Rx9ov6)); +assign Amy7v6 = (~(Sxt6x6 & Zxt6x6)); +assign Zxt6x6 = (Gyt6x6 & Nyt6x6); +assign Nyt6x6 = (~(Kx9ov6 & vis_pc_o[30])); +assign Kx9ov6 = (Uyt6x6 & Qsq6x6); +assign Gyt6x6 = (Bzt6x6 & Izt6x6); +assign Izt6x6 = (~(Uv9ov6 & Eu97z6)); +assign Uv9ov6 = (Uyt6x6 & C3yiw6); +assign C3yiw6 = (!Qsq6x6); +assign Qsq6x6 = (~(Pzt6x6 & Gt2jw6)); +assign Pzt6x6 = (Wzt6x6 & D0u6x6); +assign Uyt6x6 = (K0u6x6 & R0u6x6); +assign K0u6x6 = (Ut2jw6 & Y0u6x6); +assign Bzt6x6 = (Eu9ov6 | F1u6x6); +assign Eu9ov6 = (~(M1u6x6 & T1u6x6)); +assign M1u6x6 = (Y0u6x6 & A2u6x6); +assign Sxt6x6 = (H2u6x6 & O2u6x6); +assign O2u6x6 = (~(Pw9ov6 & Kxb7z6[30])); +assign H2u6x6 = (V2u6x6 & C3u6x6); +assign C3u6x6 = (~(Rx9ov6 & Gli7z6[30])); +assign Rx9ov6 = (~(J3u6x6 | Ut2jw6)); +assign Ut2jw6 = (~(Q3u6x6 & Vs9ov6)); +assign Q3u6x6 = (~(X3u6x6 & E4u6x6)); +assign E4u6x6 = (L4u6x6 & S4u6x6); +assign S4u6x6 = (~(Ffadt6 | Tuddt6)); +assign L4u6x6 = (Rihov6 & Z4u6x6); +assign Z4u6x6 = (~(G5u6x6 & N5u6x6)); +assign N5u6x6 = (U5u6x6 & Kkmhw6); +assign G5u6x6 = (B6u6x6 & Ijmhw6); +assign Ijmhw6 = (!C9mov6); +assign C9mov6 = (I6u6x6 & Nneet6); +assign I6u6x6 = (O5a7z6 & P6u6x6); +assign B6u6x6 = (~(W6u6x6 & D7u6x6)); +assign X3u6x6 = (K7u6x6 & Mlmhw6); +assign Mlmhw6 = (R7u6x6 & E1wnv6); +assign R7u6x6 = (Ldo7v6 & S2onv6); +assign K7u6x6 = (Zhbdt6 & Y7u6x6); +assign J3u6x6 = (~(R0u6x6 & Y0u6x6)); +assign V2u6x6 = (~(Gv9ov6 & Fi4ov6)); +assign Fi4ov6 = (Gninv6 ? Gli7z6[30] : Eu97z6); +assign Eu97z6 = (~(F8u6x6 & M8u6x6)); +assign M8u6x6 = (~(Nqyiw6 & Acxnv6)); +assign Nqyiw6 = (!Z11jw6); +assign F8u6x6 = (T8u6x6 & A9u6x6); +assign A9u6x6 = (~(Pdc7z6[30] & Ouyiw6)); +assign T8u6x6 = (~(Vuyiw6 & H9u6x6)); +assign H9u6x6 = (~(O9u6x6 & V9u6x6)); +assign V9u6x6 = (Cau6x6 & Jau6x6); +assign Jau6x6 = (Qau6x6 & Xau6x6); +assign Xau6x6 = (Ebu6x6 & Lbu6x6); +assign Lbu6x6 = (~(Sbu6x6 & Uxyiw6)); +assign Sbu6x6 = (Kxb7z6[30] & Zbu6x6); +assign Ebu6x6 = (~(Iv3ov6 & Gcu6x6)); +assign Gcu6x6 = (~(Ncu6x6 & Quziw6)); +assign Quziw6 = (Kzyiw6 & Ucu6x6); +assign Ucu6x6 = (Rw3ov6 | Bdu6x6); +assign Kzyiw6 = (Wdu6x6 ? Pdu6x6 : Idu6x6); +assign Pdu6x6 = (~(Deu6x6 & Fzfov6)); +assign Idu6x6 = (Mzfov6 | Uinnv6); +assign Mzfov6 = (~(Mrbdt6 & Keu6x6)); +assign Keu6x6 = (!Reu6x6); +assign Ncu6x6 = (Yeu6x6 & Ffu6x6); +assign Ffu6x6 = (Zbu6x6 | Ninnv6); +assign Zbu6x6 = (Rje7z6[30] | F0ziw6); +assign Yeu6x6 = (~(F0ziw6 & Ofnnv6)); +assign Qau6x6 = (Mfu6x6 & Tfu6x6); +assign Tfu6x6 = (Ryfov6 | Agu6x6); +assign Ryfov6 = (~(Hgu6x6 & Wdu6x6)); +assign Wdu6x6 = (!V5bov6); +assign Hgu6x6 = (~(Uinnv6 | Deu6x6)); +assign Deu6x6 = (Ogu6x6 & Vgu6x6); +assign Vgu6x6 = (Chu6x6 & Jhu6x6); +assign Jhu6x6 = (Qhu6x6 & Xhu6x6); +assign Xhu6x6 = (Eiu6x6 & Liu6x6); +assign Liu6x6 = (Siu6x6 & Ziu6x6); +assign Ziu6x6 = (~(Rje7z6[0] & Cuziw6)); +assign Siu6x6 = (~(Rje7z6[2] & Kp1jw6)); +assign Eiu6x6 = (Gju6x6 & Nju6x6); +assign Nju6x6 = (~(Rje7z6[3] & Ryh6x6)); +assign Gju6x6 = (~(Rje7z6[4] & Et3ov6)); +assign Qhu6x6 = (Uju6x6 & Bku6x6); +assign Bku6x6 = (Iku6x6 & Pku6x6); +assign Pku6x6 = (~(Rje7z6[5] & Xs3ov6)); +assign Iku6x6 = (~(Rje7z6[8] & Ku3jw6)); +assign Uju6x6 = (Wku6x6 & Dlu6x6); +assign Dlu6x6 = (~(Rje7z6[9] & Pn9jw6)); +assign Wku6x6 = (~(Rje7z6[10] & Ci4jw6)); +assign Chu6x6 = (Klu6x6 & Rlu6x6); +assign Rlu6x6 = (Ylu6x6 & Fmu6x6); +assign Fmu6x6 = (Mmu6x6 & Tmu6x6); +assign Tmu6x6 = (~(Rje7z6[11] & Pebjw6)); +assign Mmu6x6 = (~(Rje7z6[12] & X2h6x6)); +assign Ylu6x6 = (Anu6x6 & Hnu6x6); +assign Hnu6x6 = (~(Rje7z6[13] & Dok6x6)); +assign Anu6x6 = (~(Rje7z6[14] & Zbn6x6)); +assign Klu6x6 = (Onu6x6 & Vnu6x6); +assign Vnu6x6 = (Cou6x6 & Jou6x6); +assign Jou6x6 = (~(Rje7z6[16] & Hr8jw6)); +assign Cou6x6 = (~(Rje7z6[17] & Oiajw6)); +assign Onu6x6 = (Qou6x6 & Xou6x6); +assign Xou6x6 = (~(Rje7z6[18] & Ew5jw6)); +assign Qou6x6 = (~(Rje7z6[19] & O9cjw6)); +assign Ogu6x6 = (Epu6x6 & Lpu6x6); +assign Lpu6x6 = (Spu6x6 & Zpu6x6); +assign Zpu6x6 = (Gqu6x6 & Nqu6x6); +assign Nqu6x6 = (Uqu6x6 & Bru6x6); +assign Bru6x6 = (~(Rje7z6[20] & Myp6x6)); +assign Uqu6x6 = (~(Rje7z6[21] & Csj6x6)); +assign Gqu6x6 = (Iru6x6 & Pru6x6); +assign Pru6x6 = (~(Rje7z6[23] & Nap6x6)); +assign Iru6x6 = (~(Rje7z6[24] & T9kov6)); +assign Spu6x6 = (Wru6x6 & Dsu6x6); +assign Dsu6x6 = (Ksu6x6 & Rsu6x6); +assign Rsu6x6 = (~(Rje7z6[25] & A07jw6)); +assign Ksu6x6 = (~(Rje7z6[26] & Qs3ov6)); +assign Wru6x6 = (Ysu6x6 & Ftu6x6); +assign Ftu6x6 = (~(Rje7z6[27] & St3ov6)); +assign Ysu6x6 = (~(Rje7z6[29] & Lt3ov6)); +assign Epu6x6 = (Mtu6x6 & Ttu6x6); +assign Ttu6x6 = (Auu6x6 & Huu6x6); +assign Huu6x6 = (Ouu6x6 & Vuu6x6); +assign Vuu6x6 = (~(Rje7z6[28] & Uu3ov6)); +assign Ouu6x6 = (~(Rje7z6[6] & Nu3ov6)); +assign Auu6x6 = (Cvu6x6 & Jvu6x6); +assign Jvu6x6 = (~(Rje7z6[22] & Yfm6x6)); +assign Cvu6x6 = (~(Rje7z6[30] & Iv3ov6)); +assign Mtu6x6 = (Qvu6x6 & Xvu6x6); +assign Xvu6x6 = (~(Rje7z6[1] & Se2jw6)); +assign Qvu6x6 = (Ewu6x6 & Lwu6x6); +assign Lwu6x6 = (~(Rje7z6[7] & Bv3ov6)); +assign Ewu6x6 = (~(Rje7z6[15] & M85jw6)); +assign Mfu6x6 = (~(T0ziw6 & Rje7z6[30])); +assign T0ziw6 = (Swu6x6 & Zwu6x6); +assign Zwu6x6 = (~(Gxu6x6 & Evziw6)); +assign Gxu6x6 = (~(Nxu6x6 & Mrbdt6)); +assign Nxu6x6 = (Reu6x6 & V5bov6); +assign V5bov6 = (~(Uxu6x6 & Byu6x6)); +assign Uxu6x6 = (~(Yvbov6 & Iyu6x6)); +assign Iyu6x6 = (~(Pyu6x6 & Wyu6x6)); +assign Wyu6x6 = (Dzu6x6 | Ntbov6); +assign Yvbov6 = (~(Kzu6x6 & Rzu6x6)); +assign Rzu6x6 = (Yzu6x6 & F0v6x6); +assign F0v6x6 = (M0v6x6 | T0v6x6); +assign Yzu6x6 = (A1v6x6 | H1v6x6); +assign Kzu6x6 = (O1v6x6 & V1v6x6); +assign V1v6x6 = (C2v6x6 | J2v6x6); +assign O1v6x6 = (Q2v6x6 | X2v6x6); +assign Reu6x6 = (~(E3v6x6 & L3v6x6)); +assign L3v6x6 = (S3v6x6 & Z3v6x6); +assign Z3v6x6 = (G4v6x6 & N4v6x6); +assign N4v6x6 = (U4v6x6 & B5v6x6); +assign B5v6x6 = (I5v6x6 & P5v6x6); +assign P5v6x6 = (~(Fx3ov6 & Fq1jw6)); +assign Fx3ov6 = (!Kp1jw6); +assign Kp1jw6 = (~(W5v6x6 & D6v6x6)); +assign D6v6x6 = (~(K6v6x6 & R6v6x6)); +assign R6v6x6 = (~(Y6v6x6 & F7v6x6)); +assign F7v6x6 = (M7v6x6 & T7v6x6); +assign T7v6x6 = (C2v6x6 | A8v6x6); +assign M7v6x6 = (M0v6x6 | J2v6x6); +assign Y6v6x6 = (H8v6x6 & O8v6x6); +assign O8v6x6 = (A1v6x6 | V8v6x6); +assign H8v6x6 = (Q2v6x6 | C9v6x6); +assign K6v6x6 = (~(Dzu6x6 ^ J9v6x6)); +assign W5v6x6 = (~(Xrbov6 & Q9v6x6)); +assign Q9v6x6 = (Dzu6x6 | J9v6x6); +assign J9v6x6 = (X9v6x6 & Eav6x6); +assign X9v6x6 = (Zav6x6 ? Sav6x6 : Lav6x6); +assign I5v6x6 = (~(Yw3ov6 & J17jw6)); +assign J17jw6 = (~(Js8jw6 & Gbv6x6)); +assign Yw3ov6 = (!A07jw6); +assign A07jw6 = (~(Nbv6x6 & Ubv6x6)); +assign Ubv6x6 = (~(Bcv6x6 & Icv6x6)); +assign Icv6x6 = (~(Pcv6x6 & Wcv6x6)); +assign Wcv6x6 = (Ddv6x6 & Kdv6x6); +assign Kdv6x6 = (A1v6x6 | Rdv6x6); +assign Ddv6x6 = (Q2v6x6 | Ydv6x6); +assign Pcv6x6 = (Fev6x6 & Mev6x6); +assign Mev6x6 = (C2v6x6 | Tev6x6); +assign Fev6x6 = (M0v6x6 | Afv6x6); +assign Bcv6x6 = (~(Dzu6x6 ^ Hfv6x6)); +assign Nbv6x6 = (~(Xrbov6 & Ofv6x6)); +assign Ofv6x6 = (Dzu6x6 | Hfv6x6); +assign Hfv6x6 = (Vfv6x6 & Cgv6x6); +assign Cgv6x6 = (Jgv6x6 | Qgv6x6); +assign U4v6x6 = (Xgv6x6 & Ehv6x6); +assign Ehv6x6 = (Iv3ov6 | F0ziw6); +assign Xgv6x6 = (~(Hy3ov6 & Rh2jw6)); +assign Rh2jw6 = (!Uf2jw6); +assign Uf2jw6 = (~(Fq1jw6 & Lhv6x6)); +assign Lhv6x6 = (~(M0ziw6 & Lvziw6)); +assign Fq1jw6 = (!Vr1jw6); +assign Vr1jw6 = (C53jw6 | Shv6x6); +assign Hy3ov6 = (!Se2jw6); +assign G4v6x6 = (Zhv6x6 & Giv6x6); +assign Giv6x6 = (Niv6x6 & Uiv6x6); +assign Uiv6x6 = (~(Ay3ov6 & G3i6x6)); +assign G3i6x6 = (!Tzh6x6); +assign Tzh6x6 = (~(P83jw6 & Bjv6x6)); +assign Bjv6x6 = (~(Shv6x6 & M0ziw6)); +assign P83jw6 = (!C53jw6); +assign Ay3ov6 = (!Ryh6x6); +assign Ryh6x6 = (~(Ijv6x6 & Pjv6x6)); +assign Pjv6x6 = (~(Wjv6x6 & Dkv6x6)); +assign Dkv6x6 = (~(Kkv6x6 & Rkv6x6)); +assign Rkv6x6 = (Ykv6x6 & Flv6x6); +assign Flv6x6 = (Q2v6x6 | A8v6x6); +assign Ykv6x6 = (C2v6x6 | Mlv6x6); +assign Kkv6x6 = (Tlv6x6 & Amv6x6); +assign Amv6x6 = (A1v6x6 | C9v6x6); +assign Tlv6x6 = (M0v6x6 | V8v6x6); +assign Wjv6x6 = (~(Dzu6x6 ^ Hmv6x6)); +assign Ijv6x6 = (~(Xrbov6 & Omv6x6)); +assign Omv6x6 = (Dzu6x6 | Hmv6x6); +assign Hmv6x6 = (Vmv6x6 & Eav6x6); +assign Vmv6x6 = (Zav6x6 ? Jnv6x6 : Cnv6x6); +assign Niv6x6 = (C53jw6 | Et3ov6); +assign Et3ov6 = (Xnv6x6 ? Xrbov6 : Qnv6x6); +assign Xnv6x6 = (Eov6x6 & Lov6x6); +assign Lov6x6 = (~(Sov6x6 & Cnv6x6)); +assign Qnv6x6 = (~(Zov6x6 & Gpv6x6)); +assign Gpv6x6 = (Npv6x6 & Upv6x6); +assign Upv6x6 = (A1v6x6 | A8v6x6); +assign Npv6x6 = (Q2v6x6 | Mlv6x6); +assign Zov6x6 = (Bqv6x6 & Iqv6x6); +assign Iqv6x6 = (C2v6x6 | Pqv6x6); +assign Bqv6x6 = (M0v6x6 | C9v6x6); +assign C53jw6 = (~(Zy3jw6 & Wqv6x6)); +assign Wqv6x6 = (~(Drv6x6 & Lvziw6)); +assign Zhv6x6 = (Krv6x6 & Rrv6x6); +assign Rrv6x6 = (Uvi6x6 | Xs3ov6); +assign Xs3ov6 = (Fsv6x6 ? Xrbov6 : Yrv6x6); +assign Fsv6x6 = (Eov6x6 & Msv6x6); +assign Msv6x6 = (~(Sov6x6 & Lav6x6)); +assign Yrv6x6 = (~(Tsv6x6 & Atv6x6)); +assign Atv6x6 = (Htv6x6 & Otv6x6); +assign Otv6x6 = (M0v6x6 | A8v6x6); +assign A8v6x6 = (Vtv6x6 & Cuv6x6); +assign Cuv6x6 = (Juv6x6 | Quv6x6); +assign Vtv6x6 = (Xuv6x6 & Evv6x6); +assign Evv6x6 = (Lvv6x6 | Svv6x6); +assign Xuv6x6 = (~(Zvv6x6 & Gwv6x6)); +assign Htv6x6 = (A1v6x6 | Mlv6x6); +assign Tsv6x6 = (Nwv6x6 & Uwv6x6); +assign Uwv6x6 = (Q2v6x6 | Pqv6x6); +assign Nwv6x6 = (C2v6x6 | Bxv6x6); +assign Uvi6x6 = (~(Knl6x6 & Ixv6x6)); +assign Ixv6x6 = (~(Pxv6x6 & Lvziw6)); +assign Knl6x6 = (!Skl6x6); +assign Krv6x6 = (Skl6x6 | Nu3ov6); +assign Skl6x6 = (~(Zy3jw6 & Wxv6x6)); +assign Wxv6x6 = (~(Shv6x6 & Drv6x6)); +assign S3v6x6 = (Dyv6x6 & Kyv6x6); +assign Kyv6x6 = (Ryv6x6 & Yyv6x6); +assign Yyv6x6 = (Fzv6x6 & Mzv6x6); +assign Mzv6x6 = (J9o6x6 | Bv3ov6); +assign J9o6x6 = (~(Zy3jw6 & Tzv6x6)); +assign Tzv6x6 = (~(Pxv6x6 & Shv6x6)); +assign Fzv6x6 = (~(Vy3ov6 & Zy3jw6)); +assign Zy3jw6 = (!Mv3jw6); +assign Vy3ov6 = (!Ku3jw6); +assign Ku3jw6 = (~(A0w6x6 & H0w6x6)); +assign H0w6x6 = (~(O0w6x6 & V0w6x6)); +assign V0w6x6 = (~(C1w6x6 & J1w6x6)); +assign J1w6x6 = (Q1w6x6 & X1w6x6); +assign X1w6x6 = (M0v6x6 | Bxv6x6); +assign Q1w6x6 = (E2w6x6 & L2w6x6); +assign E2w6x6 = (C2v6x6 | S2w6x6); +assign C1w6x6 = (Z2w6x6 & G3w6x6); +assign G3w6x6 = (A1v6x6 | N3w6x6); +assign Z2w6x6 = (Q2v6x6 | U3w6x6); +assign O0w6x6 = (P4w6x6 ? I4w6x6 : B4w6x6); +assign A0w6x6 = (P4w6x6 | Byu6x6); +assign Ryv6x6 = (W4w6x6 & D5w6x6); +assign D5w6x6 = (~(Oy3ov6 & Oq9jw6)); +assign Oq9jw6 = (!Ro9jw6); +assign Ro9jw6 = (~(Iv8jw6 & K5w6x6)); +assign K5w6x6 = (~(Gbv6x6 & Lvziw6)); +assign Gbv6x6 = (R5w6x6 & Y5w6x6); +assign Y5w6x6 = (~(F6w6x6 & M6w6x6)); +assign F6w6x6 = (T6w6x6 & A7w6x6); +assign Oy3ov6 = (!Pn9jw6); +assign Pn9jw6 = (~(H7w6x6 & O7w6x6)); +assign O7w6x6 = (~(V7w6x6 & C8w6x6)); +assign C8w6x6 = (~(J8w6x6 & Q8w6x6)); +assign Q8w6x6 = (X8w6x6 & E9w6x6); +assign E9w6x6 = (C2v6x6 | L9w6x6); +assign X8w6x6 = (S9w6x6 & L2w6x6); +assign S9w6x6 = (Q2v6x6 | S2w6x6); +assign J8w6x6 = (Z9w6x6 & Gaw6x6); +assign Gaw6x6 = (M0v6x6 | N3w6x6); +assign Z9w6x6 = (A1v6x6 | U3w6x6); +assign V7w6x6 = (Naw6x6 ? I4w6x6 : B4w6x6); +assign H7w6x6 = (Byu6x6 | Naw6x6); +assign Naw6x6 = (P4w6x6 & Uaw6x6); +assign Uaw6x6 = (~(Bbw6x6 & Qgv6x6)); +assign W4w6x6 = (~(Z04ov6 & Bl4jw6)); +assign Bl4jw6 = (!Ej4jw6); +assign Ej4jw6 = (~(G4h6x6 & Ibw6x6)); +assign Ibw6x6 = (~(Shv6x6 & R5w6x6)); +assign Z04ov6 = (!Ci4jw6); +assign Ci4jw6 = (~(Pbw6x6 & Wbw6x6)); +assign Wbw6x6 = (~(Dcw6x6 & Kcw6x6)); +assign Kcw6x6 = (~(Rcw6x6 & Ycw6x6)); +assign Ycw6x6 = (Fdw6x6 & Mdw6x6); +assign Mdw6x6 = (Q2v6x6 | L9w6x6); +assign Fdw6x6 = (Tdw6x6 & L2w6x6); +assign Tdw6x6 = (A1v6x6 | S2w6x6); +assign Rcw6x6 = (Aew6x6 & Hew6x6); +assign Hew6x6 = (C2v6x6 | Oew6x6); +assign Aew6x6 = (M0v6x6 | U3w6x6); +assign Dcw6x6 = (Vew6x6 ? I4w6x6 : B4w6x6); +assign Pbw6x6 = (Byu6x6 | Vew6x6); +assign Vew6x6 = (P4w6x6 & Cfw6x6); +assign Cfw6x6 = (~(Bbw6x6 & Sav6x6)); +assign Dyv6x6 = (Jfw6x6 & Qfw6x6); +assign Qfw6x6 = (Xfw6x6 & Egw6x6); +assign Egw6x6 = (~(S04ov6 & Ohbjw6)); +assign Ohbjw6 = (!Rfbjw6); +assign Rfbjw6 = (~(G4h6x6 & Lgw6x6)); +assign Lgw6x6 = (~(Sgw6x6 & Shv6x6)); +assign Sgw6x6 = (R5w6x6 & M0ziw6); +assign S04ov6 = (!Pebjw6); +assign Pebjw6 = (~(Zgw6x6 & Ghw6x6)); +assign Ghw6x6 = (~(Nhw6x6 & Uhw6x6)); +assign Uhw6x6 = (~(Biw6x6 & Iiw6x6)); +assign Iiw6x6 = (Piw6x6 & Wiw6x6); +assign Wiw6x6 = (A1v6x6 | L9w6x6); +assign Piw6x6 = (Djw6x6 & L2w6x6); +assign Djw6x6 = (M0v6x6 | S2w6x6); +assign S2w6x6 = (Kjw6x6 & Rjw6x6); +assign Rjw6x6 = (Yjw6x6 & Fkw6x6); +assign Fkw6x6 = (Mkw6x6 | Tkw6x6); +assign Yjw6x6 = (Lvv6x6 | Alw6x6); +assign Kjw6x6 = (Hlw6x6 & Olw6x6); +assign Olw6x6 = (~(Vlw6x6 & Cmw6x6)); +assign Hlw6x6 = (~(Zvv6x6 & Jmw6x6)); +assign Biw6x6 = (Qmw6x6 & Xmw6x6); +assign Xmw6x6 = (Q2v6x6 | Oew6x6); +assign Qmw6x6 = (C2v6x6 | Enw6x6); +assign Nhw6x6 = (Lnw6x6 ? I4w6x6 : B4w6x6); +assign Zgw6x6 = (Byu6x6 | Lnw6x6); +assign Lnw6x6 = (P4w6x6 & Snw6x6); +assign Snw6x6 = (~(Bbw6x6 & Jnv6x6)); +assign Xfw6x6 = (~(N14ov6 & G4h6x6)); +assign G4h6x6 = (~(Mv3jw6 & Znw6x6)); +assign Znw6x6 = (~(M6w6x6 & Iv8jw6)); +assign Mv3jw6 = (~(Gow6x6 & Iv8jw6)); +assign Gow6x6 = (~(R5w6x6 & Lvziw6)); +assign N14ov6 = (!X2h6x6); +assign X2h6x6 = (~(Now6x6 & Uow6x6)); +assign Uow6x6 = (~(Bpw6x6 & Ipw6x6)); +assign Ipw6x6 = (~(Ppw6x6 & Wpw6x6)); +assign Wpw6x6 = (Dqw6x6 & Kqw6x6); +assign Kqw6x6 = (A1v6x6 | Oew6x6); +assign Dqw6x6 = (Rqw6x6 & L2w6x6); +assign Rqw6x6 = (M0v6x6 | L9w6x6); +assign L9w6x6 = (Yqw6x6 & Frw6x6); +assign Frw6x6 = (Mrw6x6 & Trw6x6); +assign Trw6x6 = (Mkw6x6 | Asw6x6); +assign Mrw6x6 = (Lvv6x6 | Hsw6x6); +assign Yqw6x6 = (Osw6x6 & Vsw6x6); +assign Vsw6x6 = (~(Vlw6x6 & Ctw6x6)); +assign Osw6x6 = (~(Zvv6x6 & Jtw6x6)); +assign Ppw6x6 = (Qtw6x6 & Xtw6x6); +assign Xtw6x6 = (Q2v6x6 | Enw6x6); +assign Qtw6x6 = (C2v6x6 | Euw6x6); +assign Bpw6x6 = (Luw6x6 ? I4w6x6 : B4w6x6); +assign Now6x6 = (Byu6x6 | Luw6x6); +assign Luw6x6 = (P4w6x6 & Suw6x6); +assign Suw6x6 = (~(Bbw6x6 & Zuw6x6)); +assign Jfw6x6 = (Gvw6x6 & Nvw6x6); +assign Nvw6x6 = (~(G14ov6 & Jrk6x6)); +assign Jrk6x6 = (!Fpk6x6); +assign Fpk6x6 = (~(Ffn6x6 & Uvw6x6)); +assign Uvw6x6 = (~(Bww6x6 & Pxv6x6)); +assign Bww6x6 = (R5w6x6 & Lvziw6); +assign G14ov6 = (!Dok6x6); +assign Dok6x6 = (~(Iww6x6 & Pww6x6)); +assign Pww6x6 = (~(Www6x6 & Dxw6x6)); +assign Dxw6x6 = (~(Kxw6x6 & Rxw6x6)); +assign Rxw6x6 = (Yxw6x6 & Fyw6x6); +assign Fyw6x6 = (A1v6x6 | Enw6x6); +assign Yxw6x6 = (Myw6x6 & L2w6x6); +assign Myw6x6 = (M0v6x6 | Oew6x6); +assign Oew6x6 = (Tyw6x6 & Azw6x6); +assign Azw6x6 = (Hzw6x6 & Ozw6x6); +assign Ozw6x6 = (Mkw6x6 | Vzw6x6); +assign Hzw6x6 = (Lvv6x6 | C0x6x6); +assign Tyw6x6 = (J0x6x6 & Q0x6x6); +assign Q0x6x6 = (~(Vlw6x6 & X0x6x6)); +assign J0x6x6 = (E1x6x6 | L1x6x6); +assign Kxw6x6 = (S1x6x6 & Z1x6x6); +assign Z1x6x6 = (Q2v6x6 | Euw6x6); +assign S1x6x6 = (C2v6x6 | G2x6x6); +assign Www6x6 = (N2x6x6 ? I4w6x6 : B4w6x6); +assign Iww6x6 = (Byu6x6 | N2x6x6); +assign N2x6x6 = (P4w6x6 & U2x6x6); +assign U2x6x6 = (~(Bbw6x6 & B3x6x6)); +assign Gvw6x6 = (~(P24ov6 & Ffn6x6)); +assign Ffn6x6 = (!Bdn6x6); +assign Bdn6x6 = (~(Iv8jw6 & I3x6x6)); +assign I3x6x6 = (~(P3x6x6 & Shv6x6)); +assign P3x6x6 = (R5w6x6 & Drv6x6); +assign P24ov6 = (!Zbn6x6); +assign Zbn6x6 = (~(W3x6x6 & D4x6x6)); +assign D4x6x6 = (~(K4x6x6 & R4x6x6)); +assign R4x6x6 = (~(Y4x6x6 & F5x6x6)); +assign F5x6x6 = (M5x6x6 & T5x6x6); +assign T5x6x6 = (A1v6x6 | Euw6x6); +assign M5x6x6 = (A6x6x6 & L2w6x6); +assign A6x6x6 = (M0v6x6 | Enw6x6); +assign Enw6x6 = (H6x6x6 & O6x6x6); +assign O6x6x6 = (V6x6x6 & C7x6x6); +assign C7x6x6 = (Mkw6x6 | J7x6x6); +assign V6x6x6 = (Lvv6x6 | Q7x6x6); +assign H6x6x6 = (X7x6x6 & E8x6x6); +assign E8x6x6 = (~(Vlw6x6 & L8x6x6)); +assign X7x6x6 = (E1x6x6 | S8x6x6); +assign Y4x6x6 = (Z8x6x6 & G9x6x6); +assign G9x6x6 = (Q2v6x6 | G2x6x6); +assign Z8x6x6 = (C2v6x6 | N9x6x6); +assign K4x6x6 = (U9x6x6 ? I4w6x6 : B4w6x6); +assign W3x6x6 = (Byu6x6 | U9x6x6); +assign U9x6x6 = (P4w6x6 & Bax6x6); +assign Bax6x6 = (~(Bbw6x6 & Iax6x6)); +assign Bbw6x6 = (Pax6x6 & Wax6x6); +assign Pax6x6 = (~(Dbx6x6 | Kbx6x6)); +assign P4w6x6 = (Rbx6x6 | Ybx6x6); +assign E3v6x6 = (Fcx6x6 & Mcx6x6); +assign Mcx6x6 = (Tcx6x6 & Adx6x6); +assign Adx6x6 = (Hdx6x6 & Odx6x6); +assign Odx6x6 = (Vdx6x6 & Cex6x6); +assign Cex6x6 = (~(I24ov6 & Xa5jw6)); +assign Xa5jw6 = (!O95jw6); +assign O95jw6 = (~(Iv8jw6 & Jex6x6)); +assign Jex6x6 = (~(Qex6x6 & Pxv6x6)); +assign Qex6x6 = (R5w6x6 & Shv6x6); +assign Shv6x6 = (Xex6x6 & Lvziw6); +assign Vdx6x6 = (~(D34ov6 & Imajw6)); +assign Imajw6 = (!Qjajw6); +assign Qjajw6 = (~(Rz5jw6 & Efx6x6)); +assign Efx6x6 = (~(Js8jw6 & M0ziw6)); +assign D34ov6 = (!Oiajw6); +assign Oiajw6 = (~(Lfx6x6 & Sfx6x6)); +assign Sfx6x6 = (~(Zfx6x6 & Ggx6x6)); +assign Ggx6x6 = (~(Ngx6x6 & Ugx6x6)); +assign Ugx6x6 = (Bhx6x6 & Ihx6x6); +assign Ihx6x6 = (C2v6x6 | Phx6x6); +assign Bhx6x6 = (Whx6x6 & L2w6x6); +assign Whx6x6 = (Q2v6x6 | Dix6x6); +assign Ngx6x6 = (Kix6x6 & Rix6x6); +assign Rix6x6 = (M0v6x6 | N9x6x6); +assign Kix6x6 = (A1v6x6 | Yix6x6); +assign Zfx6x6 = (Fjx6x6 ? I4w6x6 : B4w6x6); +assign Lfx6x6 = (Fjx6x6 | Byu6x6); +assign Fjx6x6 = (~(Mjx6x6 & Tjx6x6)); +assign Mjx6x6 = (Akx6x6 & Hkx6x6); +assign Hkx6x6 = (Okx6x6 | Vkx6x6); +assign Akx6x6 = (~(Ybx6x6 & Iax6x6)); +assign Hdx6x6 = (Clx6x6 & Jlx6x6); +assign Jlx6x6 = (~(W24ov6 & Rz5jw6)); +assign Rz5jw6 = (!Gx5jw6); +assign Gx5jw6 = (~(G2q6x6 & Qlx6x6)); +assign Qlx6x6 = (~(Js8jw6 & Xex6x6)); +assign W24ov6 = (!Ew5jw6); +assign Ew5jw6 = (~(Xlx6x6 & Emx6x6)); +assign Emx6x6 = (~(Lmx6x6 & Smx6x6)); +assign Smx6x6 = (~(Zmx6x6 & Gnx6x6)); +assign Gnx6x6 = (Nnx6x6 & Unx6x6); +assign Unx6x6 = (Q2v6x6 | Phx6x6); +assign Nnx6x6 = (Box6x6 & L2w6x6); +assign Box6x6 = (A1v6x6 | Dix6x6); +assign Zmx6x6 = (Iox6x6 & Pox6x6); +assign Pox6x6 = (C2v6x6 | Wox6x6); +assign Iox6x6 = (M0v6x6 | Yix6x6); +assign Lmx6x6 = (Dpx6x6 ? I4w6x6 : B4w6x6); +assign Xlx6x6 = (Dpx6x6 | Byu6x6); +assign Dpx6x6 = (~(Tjx6x6 & Kpx6x6)); +assign Kpx6x6 = (~(Ybx6x6 & B3x6x6)); +assign Tjx6x6 = (Jgv6x6 & Rpx6x6); +assign Rpx6x6 = (Okx6x6 | Sav6x6); +assign Clx6x6 = (~(T44ov6 & Bdcjw6)); +assign Bdcjw6 = (!Qacjw6); +assign Qacjw6 = (~(G2q6x6 & Ypx6x6)); +assign Ypx6x6 = (~(Fqx6x6 & Js8jw6)); +assign T44ov6 = (!O9cjw6); +assign O9cjw6 = (~(Mqx6x6 & Tqx6x6)); +assign Tqx6x6 = (~(Arx6x6 & Hrx6x6)); +assign Hrx6x6 = (~(Orx6x6 & Vrx6x6)); +assign Vrx6x6 = (Csx6x6 & Jsx6x6); +assign Jsx6x6 = (A1v6x6 | Phx6x6); +assign Csx6x6 = (Qsx6x6 & L2w6x6); +assign Qsx6x6 = (M0v6x6 | Dix6x6); +assign Orx6x6 = (Xsx6x6 & Etx6x6); +assign Etx6x6 = (Q2v6x6 | Wox6x6); +assign Xsx6x6 = (C2v6x6 | Ltx6x6); +assign Arx6x6 = (Stx6x6 ? I4w6x6 : B4w6x6); +assign Mqx6x6 = (Stx6x6 | Byu6x6); +assign Stx6x6 = (~(Ztx6x6 & Gux6x6)); +assign Gux6x6 = (~(Ybx6x6 & Zuw6x6)); +assign Ztx6x6 = (Nux6x6 & Jgv6x6); +assign Nux6x6 = (Okx6x6 | Jnv6x6); +assign Tcx6x6 = (Uux6x6 & Bvx6x6); +assign Bvx6x6 = (Ivx6x6 & Pvx6x6); +assign Pvx6x6 = (~(M44ov6 & G2q6x6)); +assign G2q6x6 = (!Ozp6x6); +assign Ozp6x6 = (~(Az7jw6 & Wvx6x6)); +assign Wvx6x6 = (~(Js8jw6 & Drv6x6)); +assign M44ov6 = (!Myp6x6); +assign Myp6x6 = (~(Dwx6x6 & Kwx6x6)); +assign Kwx6x6 = (~(Rwx6x6 & Ywx6x6)); +assign Ywx6x6 = (~(Fxx6x6 & Mxx6x6)); +assign Mxx6x6 = (Txx6x6 & Ayx6x6); +assign Ayx6x6 = (A1v6x6 | Wox6x6); +assign Txx6x6 = (Hyx6x6 & L2w6x6); +assign Hyx6x6 = (M0v6x6 | Phx6x6); +assign Phx6x6 = (Oyx6x6 & Vyx6x6); +assign Vyx6x6 = (Czx6x6 & Jzx6x6); +assign Jzx6x6 = (Mkw6x6 | Qzx6x6); +assign Czx6x6 = (~(Xzx6x6 & E0y6x6)); +assign Oyx6x6 = (L0y6x6 & S0y6x6); +assign S0y6x6 = (Juv6x6 | Z0y6x6); +assign L0y6x6 = (~(Zvv6x6 & G1y6x6)); +assign Fxx6x6 = (N1y6x6 & U1y6x6); +assign U1y6x6 = (Q2v6x6 | Ltx6x6); +assign N1y6x6 = (C2v6x6 | B2y6x6); +assign Rwx6x6 = (I2y6x6 ? I4w6x6 : B4w6x6); +assign Dwx6x6 = (I2y6x6 | Byu6x6); +assign I2y6x6 = (~(P2y6x6 & W2y6x6)); +assign W2y6x6 = (Okx6x6 | Zuw6x6); +assign P2y6x6 = (D3y6x6 & Jgv6x6); +assign D3y6x6 = (~(Ybx6x6 & Jnv6x6)); +assign Ivx6x6 = (~(H54ov6 & Pvj6x6)); +assign Pvj6x6 = (!Etj6x6); +assign Etj6x6 = (~(Xim6x6 & K3y6x6)); +assign K3y6x6 = (~(Pxv6x6 & Js8jw6)); +assign H54ov6 = (!Csj6x6); +assign Csj6x6 = (~(R3y6x6 & Y3y6x6)); +assign Y3y6x6 = (~(F4y6x6 & M4y6x6)); +assign M4y6x6 = (~(T4y6x6 & A5y6x6)); +assign A5y6x6 = (H5y6x6 & O5y6x6); +assign O5y6x6 = (A1v6x6 | Ltx6x6); +assign H5y6x6 = (V5y6x6 & L2w6x6); +assign V5y6x6 = (M0v6x6 | Wox6x6); +assign Wox6x6 = (C6y6x6 & J6y6x6); +assign J6y6x6 = (Q6y6x6 & X6y6x6); +assign X6y6x6 = (Mkw6x6 | E7y6x6); +assign Q6y6x6 = (Lvv6x6 | L7y6x6); +assign C6y6x6 = (S7y6x6 & Z7y6x6); +assign Z7y6x6 = (Juv6x6 | G8y6x6); +assign S7y6x6 = (~(Zvv6x6 & N8y6x6)); +assign T4y6x6 = (U8y6x6 & B9y6x6); +assign B9y6x6 = (Q2v6x6 | B2y6x6); +assign U8y6x6 = (C2v6x6 | I9y6x6); +assign F4y6x6 = (P9y6x6 ? I4w6x6 : B4w6x6); +assign R3y6x6 = (P9y6x6 | Byu6x6); +assign P9y6x6 = (~(W9y6x6 & Day6x6)); +assign Day6x6 = (~(Ybx6x6 & Sav6x6)); +assign W9y6x6 = (Kay6x6 & Jgv6x6); +assign Kay6x6 = (Okx6x6 | B3x6x6); +assign B3x6x6 = (!Lav6x6); +assign Uux6x6 = (Ray6x6 & Yay6x6); +assign Yay6x6 = (~(A54ov6 & Xim6x6)); +assign Xim6x6 = (!Ahm6x6); +assign Ahm6x6 = (~(Az7jw6 & Fby6x6)); +assign Fby6x6 = (~(Mby6x6 & Js8jw6)); +assign Mby6x6 = (Drv6x6 & Xex6x6); +assign A54ov6 = (!Yfm6x6); +assign Ray6x6 = (~(J64ov6 & Kcp6x6)); +assign Kcp6x6 = (!Pbp6x6); +assign Pbp6x6 = (~(Az7jw6 & Tby6x6)); +assign Tby6x6 = (~(Acy6x6 & Pxv6x6)); +assign Pxv6x6 = (~(M6w6x6 | A7w6x6)); +assign Acy6x6 = (Xex6x6 & Js8jw6); +assign J64ov6 = (!Nap6x6); +assign Nap6x6 = (~(Hcy6x6 & Ocy6x6)); +assign Ocy6x6 = (~(Vcy6x6 & Cdy6x6)); +assign Cdy6x6 = (~(Jdy6x6 & Qdy6x6)); +assign Qdy6x6 = (Xdy6x6 & Eey6x6); +assign Eey6x6 = (C2v6x6 | Rdv6x6); +assign Xdy6x6 = (M0v6x6 | B2y6x6); +assign Jdy6x6 = (Ley6x6 & Sey6x6); +assign Sey6x6 = (A1v6x6 | I9y6x6); +assign Ley6x6 = (Q2v6x6 | Afv6x6); +assign Vcy6x6 = (~(Dzu6x6 ^ Zey6x6)); +assign Hcy6x6 = (~(Xrbov6 & Gfy6x6)); +assign Gfy6x6 = (Dzu6x6 | Zey6x6); +assign Zey6x6 = (Nfy6x6 & Ufy6x6); +assign Ufy6x6 = (Okx6x6 | Bgy6x6); +assign Fcx6x6 = (Igy6x6 & Pgy6x6); +assign Pgy6x6 = (Wgy6x6 & Dhy6x6); +assign Dhy6x6 = (Khy6x6 & Rhy6x6); +assign Rhy6x6 = (S6s6x6 | Qs3ov6); +assign Qs3ov6 = (Fiy6x6 ? Xrbov6 : Yhy6x6); +assign Fiy6x6 = (Pyu6x6 & Miy6x6); +assign Miy6x6 = (~(Tiy6x6 & Ajy6x6)); +assign Tiy6x6 = (Sov6x6 & Hjy6x6); +assign Yhy6x6 = (~(Ojy6x6 & Vjy6x6)); +assign Vjy6x6 = (Cky6x6 & Jky6x6); +assign Jky6x6 = (M0v6x6 | Rdv6x6); +assign Cky6x6 = (A1v6x6 | Ydv6x6); +assign Ojy6x6 = (Qky6x6 & Xky6x6); +assign Xky6x6 = (Q2v6x6 | Tev6x6); +assign Qky6x6 = (C2v6x6 | Ely6x6); +assign S6s6x6 = (~(Plt6x6 & Lly6x6)); +assign Lly6x6 = (~(Pw7jw6 & Xex6x6)); +assign Khy6x6 = (Cxs6x6 | St3ov6); +assign St3ov6 = (Zly6x6 ? Xrbov6 : Sly6x6); +assign Zly6x6 = (Pyu6x6 & Gmy6x6); +assign Gmy6x6 = (~(Nmy6x6 & Ajy6x6)); +assign Nmy6x6 = (Umy6x6 & Sov6x6); +assign Umy6x6 = (!Jnv6x6); +assign Jnv6x6 = (~(Hjy6x6 & Bny6x6)); +assign Bny6x6 = (~(Vkx6x6 & Zuw6x6)); +assign Hjy6x6 = (!Sav6x6); +assign Sly6x6 = (~(Iny6x6 & Pny6x6)); +assign Pny6x6 = (Wny6x6 & Doy6x6); +assign Doy6x6 = (M0v6x6 | Ydv6x6); +assign Wny6x6 = (A1v6x6 | Tev6x6); +assign Iny6x6 = (Koy6x6 & Roy6x6); +assign Roy6x6 = (Q2v6x6 | Ely6x6); +assign Koy6x6 = (C2v6x6 | Yoy6x6); +assign Cxs6x6 = (~(Plt6x6 & Fpy6x6)); +assign Fpy6x6 = (~(Fqx6x6 & Pw7jw6)); +assign Fqx6x6 = (Xex6x6 & M0ziw6); +assign Plt6x6 = (!Xit6x6); +assign Wgy6x6 = (Mpy6x6 & Tpy6x6); +assign Tpy6x6 = (Q71jw6 | Lt3ov6); +assign Lt3ov6 = (Hqy6x6 ? Xrbov6 : Aqy6x6); +assign Hqy6x6 = (Pyu6x6 & Oqy6x6); +assign Oqy6x6 = (~(Vqy6x6 & Ajy6x6)); +assign Vqy6x6 = (Sov6x6 & Lav6x6); +assign Lav6x6 = (~(Cry6x6 & Iax6x6)); +assign Cry6x6 = (~(Jry6x6 & Cnv6x6)); +assign Aqy6x6 = (~(Qry6x6 & Xry6x6)); +assign Xry6x6 = (Esy6x6 & Lsy6x6); +assign Lsy6x6 = (M0v6x6 | Ely6x6); +assign Esy6x6 = (A1v6x6 | Yoy6x6); +assign Qry6x6 = (Ssy6x6 & Zsy6x6); +assign Zsy6x6 = (Q2v6x6 | T0v6x6); +assign Ssy6x6 = (C2v6x6 | H1v6x6); +assign Q71jw6 = (~(Agu6x6 & Gty6x6)); +assign Gty6x6 = (~(Xit6x6 & M0ziw6)); +assign Agu6x6 = (!F0ziw6); +assign F0ziw6 = (Xit6x6 & Xex6x6); +assign Mpy6x6 = (~(C64ov6 & Bp0jw6)); +assign Bp0jw6 = (!Lvziw6); +assign C64ov6 = (!Cuziw6); +assign Cuziw6 = (~(Nty6x6 & L2w6x6)); +assign Nty6x6 = (~(Sov6x6 & Rvbov6)); +assign Rvbov6 = (~(Uty6x6 & Buy6x6)); +assign Buy6x6 = (Iuy6x6 & Puy6x6); +assign Puy6x6 = (Q2v6x6 | J2v6x6); +assign Iuy6x6 = (C2v6x6 | V8v6x6); +assign Uty6x6 = (Wuy6x6 & Dvy6x6); +assign Dvy6x6 = (A1v6x6 | X2v6x6); +assign Wuy6x6 = (M0v6x6 | H1v6x6); +assign Igy6x6 = (Kvy6x6 & Rvy6x6); +assign Rvy6x6 = (Uu3ov6 | Xit6x6); +assign Xit6x6 = (Pw7jw6 & Drv6x6); +assign Drv6x6 = (!M6w6x6); +assign M6w6x6 = (Yvy6x6 ^ Fwy6x6); +assign Yvy6x6 = (~(Mwy6x6 & M0ziw6)); +assign Uu3ov6 = (Axy6x6 ? Xrbov6 : Twy6x6); +assign Axy6x6 = (Pyu6x6 & Hxy6x6); +assign Hxy6x6 = (~(Oxy6x6 & Ajy6x6)); +assign Oxy6x6 = (Sov6x6 & Cnv6x6); +assign Twy6x6 = (~(Vxy6x6 & Cyy6x6)); +assign Cyy6x6 = (Jyy6x6 & Qyy6x6); +assign Qyy6x6 = (M0v6x6 | Tev6x6); +assign Tev6x6 = (Xyy6x6 & Ezy6x6); +assign Ezy6x6 = (Lzy6x6 & Szy6x6); +assign Szy6x6 = (Mkw6x6 | Zzy6x6); +assign Lzy6x6 = (Lvv6x6 | G0z6x6); +assign Xyy6x6 = (N0z6x6 & U0z6x6); +assign U0z6x6 = (~(Vlw6x6 & B1z6x6)); +assign N0z6x6 = (E1x6x6 | I1z6x6); +assign Jyy6x6 = (A1v6x6 | Ely6x6); +assign Ely6x6 = (P1z6x6 & W1z6x6); +assign W1z6x6 = (D2z6x6 & K2z6x6); +assign K2z6x6 = (Mkw6x6 | R2z6x6); +assign D2z6x6 = (Lvv6x6 | Y2z6x6); +assign P1z6x6 = (F3z6x6 & M3z6x6); +assign M3z6x6 = (~(Vlw6x6 & T3z6x6)); +assign F3z6x6 = (E1x6x6 | A4z6x6); +assign Vxy6x6 = (H4z6x6 & O4z6x6); +assign O4z6x6 = (Q2v6x6 | Yoy6x6); +assign H4z6x6 = (C2v6x6 | T0v6x6); +assign Kvy6x6 = (V4z6x6 & C5z6x6); +assign C5z6x6 = (~(X64ov6 & Iv8jw6)); +assign X64ov6 = (!Hr8jw6); +assign Hr8jw6 = (~(J5z6x6 & Q5z6x6)); +assign Q5z6x6 = (~(X5z6x6 & E6z6x6)); +assign E6z6x6 = (~(L6z6x6 & S6z6x6)); +assign S6z6x6 = (Z6z6x6 & G7z6x6); +assign G7z6x6 = (C2v6x6 | Dix6x6); +assign Dix6x6 = (N7z6x6 & U7z6x6); +assign U7z6x6 = (B8z6x6 & I8z6x6); +assign I8z6x6 = (Mkw6x6 | P8z6x6); +assign B8z6x6 = (Lvv6x6 | W8z6x6); +assign N7z6x6 = (D9z6x6 & K9z6x6); +assign K9z6x6 = (Juv6x6 | R9z6x6); +assign D9z6x6 = (E1x6x6 | Y9z6x6); +assign Z6z6x6 = (M0v6x6 | G2x6x6); +assign L6z6x6 = (Faz6x6 & Maz6x6); +assign Maz6x6 = (A1v6x6 | N9x6x6); +assign Faz6x6 = (Q2v6x6 | Yix6x6); +assign X5z6x6 = (~(Dzu6x6 ^ Taz6x6)); +assign J5z6x6 = (~(Xrbov6 & Abz6x6)); +assign Abz6x6 = (Dzu6x6 | Taz6x6); +assign Taz6x6 = (Hbz6x6 & Nfy6x6); +assign Hbz6x6 = (Obz6x6 & Okx6x6); +assign Obz6x6 = (~(Ybx6x6 & Bgy6x6)); +assign V4z6x6 = (~(Q64ov6 & Az7jw6)); +assign Az7jw6 = (!Pw7jw6); +assign Pw7jw6 = (Js8jw6 & R5w6x6); +assign R5w6x6 = (Vbz6x6 ^ Ccz6x6); +assign Js8jw6 = (!Iv8jw6); +assign Iv8jw6 = (~(Jcz6x6 & Lvziw6)); +assign Lvziw6 = (~(Qcz6x6 & Xcz6x6)); +assign Xcz6x6 = (Edz6x6 & Ldz6x6); +assign Edz6x6 = (Xex6x6 & Sdz6x6); +assign Sdz6x6 = (Hfnnv6 | Zdz6x6); +assign Hfnnv6 = (~(Gez6x6 & V1c7z6[31])); +assign Gez6x6 = (~(Nez6x6 | Uez6x6)); +assign Xex6x6 = (!T6w6x6); +assign T6w6x6 = (Mwy6x6 ^ M0ziw6); +assign M0ziw6 = (!A7w6x6); +assign Qcz6x6 = (~(Ccz6x6 | Bfz6x6)); +assign Jcz6x6 = (~(Ifz6x6 ^ Bfz6x6)); +assign Bfz6x6 = (~(Pfz6x6 & Wfz6x6)); +assign Wfz6x6 = (~(Cgnnv6 & Swu6x6)); +assign Cgnnv6 = (~(Dgz6x6 ^ V1c7z6[31])); +assign Dgz6x6 = (Nez6x6 | Uez6x6); +assign Pfz6x6 = (~(V1c7z6[12] & Uxyiw6)); +assign Ifz6x6 = (~(Vbz6x6 & Kgz6x6)); +assign Kgz6x6 = (!Ccz6x6); +assign Ccz6x6 = (~(Rgz6x6 & Ygz6x6)); +assign Ygz6x6 = (~(Qgnnv6 & Swu6x6)); +assign Qgnnv6 = (Uez6x6 ^ Nez6x6); +assign Nez6x6 = (!V1c7z6[30]); +assign Uez6x6 = (~(V1c7z6[29] & Fhz6x6)); +assign Rgz6x6 = (~(Uxyiw6 & V1c7z6[11])); +assign Vbz6x6 = (Ldz6x6 & Mwy6x6); +assign Mwy6x6 = (Mhz6x6 & Thz6x6); +assign Thz6x6 = (~(Ehnnv6 & Swu6x6)); +assign Ehnnv6 = (Aiz6x6 ^ V1c7z6[28]); +assign Mhz6x6 = (~(Uxyiw6 & V1c7z6[9])); +assign Ldz6x6 = (~(Fwy6x6 | A7w6x6)); +assign A7w6x6 = (~(Hiz6x6 & Oiz6x6)); +assign Oiz6x6 = (~(Lhnnv6 & Swu6x6)); +assign Lhnnv6 = (Viz6x6 ^ V1c7z6[27]); +assign Hiz6x6 = (~(Uxyiw6 & V1c7z6[8])); +assign Fwy6x6 = (~(Cjz6x6 & Jjz6x6)); +assign Jjz6x6 = (~(Xgnnv6 & Swu6x6)); +assign Xgnnv6 = (Fhz6x6 ^ V1c7z6[29]); +assign Fhz6x6 = (Aiz6x6 & V1c7z6[28]); +assign Aiz6x6 = (V1c7z6[27] & Viz6x6); +assign Viz6x6 = (~(Ninnv6 & Evziw6)); +assign Ninnv6 = (!Uxyiw6); +assign Cjz6x6 = (~(Uxyiw6 & V1c7z6[10])); +assign Uxyiw6 = (Dy1ov6 & Bqziw6); +assign Q64ov6 = (!T9kov6); +assign T9kov6 = (~(Qjz6x6 & Xjz6x6)); +assign Xjz6x6 = (~(Ekz6x6 & Lkz6x6)); +assign Lkz6x6 = (~(Skz6x6 & Zkz6x6)); +assign Zkz6x6 = (Glz6x6 & Nlz6x6); +assign Nlz6x6 = (Q2v6x6 | Rdv6x6); +assign Rdv6x6 = (Ulz6x6 & Bmz6x6); +assign Bmz6x6 = (Imz6x6 & Pmz6x6); +assign Pmz6x6 = (Mkw6x6 | Wmz6x6); +assign Imz6x6 = (Lvv6x6 | Dnz6x6); +assign Ulz6x6 = (Knz6x6 & Rnz6x6); +assign Rnz6x6 = (~(Vlw6x6 & Ynz6x6)); +assign Knz6x6 = (E1x6x6 | Foz6x6); +assign Glz6x6 = (C2v6x6 | Ydv6x6); +assign Ydv6x6 = (Moz6x6 & Toz6x6); +assign Toz6x6 = (Apz6x6 & Hpz6x6); +assign Hpz6x6 = (Mkw6x6 | Opz6x6); +assign Apz6x6 = (Lvv6x6 | Vpz6x6); +assign Moz6x6 = (Cqz6x6 & Jqz6x6); +assign Jqz6x6 = (~(Vlw6x6 & Qqz6x6)); +assign Cqz6x6 = (E1x6x6 | Xqz6x6); +assign Skz6x6 = (Erz6x6 & Lrz6x6); +assign Lrz6x6 = (M0v6x6 | I9y6x6); +assign Erz6x6 = (A1v6x6 | Afv6x6); +assign Ekz6x6 = (~(Dzu6x6 ^ Nfy6x6)); +assign Qjz6x6 = (~(Xrbov6 & Srz6x6)); +assign Srz6x6 = (~(Ajy6x6 & Sov6x6)); +assign Swu6x6 = (!Zdz6x6); +assign Zdz6x6 = (Evziw6 & Uinnv6); +assign Uinnv6 = (!Fzfov6); +assign Fzfov6 = (~(Rw3ov6 | Zao6x6)); +assign Evziw6 = (!Ofnnv6); +assign Ofnnv6 = (Dy1ov6 & Zrz6x6); +assign Dy1ov6 = (!Rw3ov6); +assign Rw3ov6 = (~(Gsz6x6 & Dte7z6[15])); +assign Cau6x6 = (Nsz6x6 & Usz6x6); +assign Usz6x6 = (Btz6x6 & Itz6x6); +assign Itz6x6 = (~(J73ov6 & Ql3ov6)); +assign Ql3ov6 = (Fvl6x6 ^ Dte7z6[1]); +assign Fvl6x6 = (T3cdt6 ? V1c7z6[6] : Nu3ov6); +assign Nu3ov6 = (Wtz6x6 ? Xrbov6 : Ptz6x6); +assign Wtz6x6 = (Eov6x6 & Duz6x6); +assign Duz6x6 = (~(Sov6x6 & Kuz6x6)); +assign Eov6x6 = (~(Sov6x6 ^ Eav6x6)); +assign Ptz6x6 = (~(Ruz6x6 & Yuz6x6)); +assign Yuz6x6 = (Fvz6x6 & Mvz6x6); +assign Mvz6x6 = (M0v6x6 | Mlv6x6); +assign Mlv6x6 = (Tvz6x6 & Awz6x6); +assign Awz6x6 = (Juv6x6 | Hwz6x6); +assign Tvz6x6 = (Owz6x6 & Vwz6x6); +assign Vwz6x6 = (Lvv6x6 | Cxz6x6); +assign Owz6x6 = (~(Zvv6x6 & Jxz6x6)); +assign Fvz6x6 = (A1v6x6 | Pqv6x6); +assign Ruz6x6 = (Qxz6x6 & Xxz6x6); +assign Xxz6x6 = (Q2v6x6 | Bxv6x6); +assign Qxz6x6 = (C2v6x6 | N3w6x6); +assign J73ov6 = (!Lf3ov6); +assign Lf3ov6 = (Ubo6x6 | Zho6x6); +assign Btz6x6 = (~(L0g7z6[30] & J2ziw6)); +assign J2ziw6 = (~(Eyz6x6 & Lyz6x6)); +assign Lyz6x6 = (Syz6x6 & Zgtiw6); +assign Syz6x6 = (~(Zyz6x6 & Gzz6x6)); +assign Zyz6x6 = (E4lhw6 & Nzz6x6); +assign Eyz6x6 = (Dx0jw6 & Uzz6x6); +assign Uzz6x6 = (~(Uh2ov6 & Gvtiw6)); +assign Nsz6x6 = (B007x6 & I007x6); +assign I007x6 = (~(R6ziw6 & Qe3ov6)); +assign Qe3ov6 = (Eqm6x6 ^ Dte7z6[1]); +assign Eqm6x6 = (T3cdt6 ? V1c7z6[22] : Yfm6x6); +assign Yfm6x6 = (~(P007x6 & W007x6)); +assign W007x6 = (~(D107x6 & K107x6)); +assign K107x6 = (~(R107x6 & Y107x6)); +assign Y107x6 = (F207x6 & M207x6); +assign M207x6 = (Q2v6x6 | I9y6x6); +assign I9y6x6 = (T207x6 & A307x6); +assign A307x6 = (H307x6 & O307x6); +assign O307x6 = (~(V307x6 & E0y6x6)); +assign E0y6x6 = (~(C407x6 & J407x6)); +assign H307x6 = (Lvv6x6 | Zzy6x6); +assign Zzy6x6 = (Q407x6 & X407x6); +assign T207x6 = (E507x6 & L507x6); +assign L507x6 = (~(Vlw6x6 & G1y6x6)); +assign G1y6x6 = (~(S507x6 & Z507x6)); +assign E507x6 = (~(Zvv6x6 & B1z6x6)); +assign B1z6x6 = (~(G607x6 & N607x6)); +assign F207x6 = (U607x6 & B707x6); +assign B707x6 = (M0v6x6 | Ltx6x6); +assign Ltx6x6 = (I707x6 & P707x6); +assign P707x6 = (W707x6 & D807x6); +assign D807x6 = (Mkw6x6 | K807x6); +assign W707x6 = (Lvv6x6 | Wmz6x6); +assign Wmz6x6 = (R807x6 & Y807x6); +assign I707x6 = (F907x6 & M907x6); +assign M907x6 = (Juv6x6 | T907x6); +assign F907x6 = (~(Zvv6x6 & Ynz6x6)); +assign Ynz6x6 = (~(Aa07x6 & Ha07x6)); +assign U607x6 = (A1v6x6 | B2y6x6); +assign B2y6x6 = (Oa07x6 & Va07x6); +assign Va07x6 = (Cb07x6 & Jb07x6); +assign Jb07x6 = (Mkw6x6 | W8z6x6); +assign W8z6x6 = (Qb07x6 & Xb07x6); +assign Qb07x6 = (Ec07x6 & Lc07x6); +assign Cb07x6 = (Lvv6x6 | Opz6x6); +assign Opz6x6 = (Sc07x6 & Zc07x6); +assign Oa07x6 = (Gd07x6 & Nd07x6); +assign Nd07x6 = (Juv6x6 | Y9z6x6); +assign Y9z6x6 = (Ud07x6 & Be07x6); +assign Ud07x6 = (Ie07x6 & Pe07x6); +assign Pe07x6 = (~(Cve7z6[15] & We07x6)); +assign Ie07x6 = (~(Dbx6x6 & Neo7v6)); +assign Gd07x6 = (~(Zvv6x6 & Qqz6x6)); +assign Qqz6x6 = (~(Df07x6 & Kf07x6)); +assign R107x6 = (L2w6x6 & Rf07x6); +assign Rf07x6 = (C2v6x6 | Afv6x6); +assign Afv6x6 = (Yf07x6 & Fg07x6); +assign Fg07x6 = (Mg07x6 & Tg07x6); +assign Tg07x6 = (Mkw6x6 | L7y6x6); +assign L7y6x6 = (Ah07x6 & Hh07x6); +assign Mg07x6 = (Lvv6x6 | R2z6x6); +assign R2z6x6 = (Oh07x6 & Vh07x6); +assign Yf07x6 = (Ci07x6 & Ji07x6); +assign Ji07x6 = (~(Vlw6x6 & N8y6x6)); +assign N8y6x6 = (~(Qi07x6 & Xi07x6)); +assign Ci07x6 = (~(Zvv6x6 & T3z6x6)); +assign T3z6x6 = (~(Ej07x6 & Lj07x6)); +assign D107x6 = (Sj07x6 ? I4w6x6 : B4w6x6); +assign I4w6x6 = (~(Zj07x6 & Dzu6x6)); +assign B4w6x6 = (~(Zj07x6 & Gk07x6)); +assign Zj07x6 = (L2w6x6 & Nk07x6); +assign L2w6x6 = (~(Xrbov6 & Dzu6x6)); +assign P007x6 = (Sj07x6 | Byu6x6); +assign Sj07x6 = (~(Uk07x6 & Bl07x6)); +assign Bl07x6 = (Okx6x6 | Iax6x6); +assign Iax6x6 = (!Kuz6x6); +assign Uk07x6 = (Il07x6 & Jgv6x6); +assign Il07x6 = (~(Ybx6x6 & Qgv6x6)); +assign Ybx6x6 = (!Wax6x6); +assign R6ziw6 = (!Zf3ov6); +assign Zf3ov6 = (~(Pl07x6 & Zho6x6)); +assign Pl07x6 = (~(Ubo6x6 | Mrbdt6)); +assign B007x6 = (~(F7ziw6 & Je3ov6)); +assign Je3ov6 = (Wl07x6 ^ Dte7z6[1]); +assign O9u6x6 = (Dm07x6 & Km07x6); +assign Km07x6 = (Rm07x6 & Ym07x6); +assign Ym07x6 = (Fn07x6 & Mn07x6); +assign Mn07x6 = (~(Cqf7z6[14] & Q2ziw6)); +assign Q2ziw6 = (~(Tn07x6 & Ao07x6)); +assign Ao07x6 = (~(Ho07x6 & Tdtiw6)); +assign Ho07x6 = (Gzz6x6 & Nzz6x6); +assign Tn07x6 = (~(Dqtiw6 & Oo07x6)); +assign Fn07x6 = (~(L0g7z6[14] & O1ziw6)); +assign O1ziw6 = (~(Dqtiw6 | Vo07x6)); +assign Rm07x6 = (Cp07x6 & Jp07x6); +assign Jp07x6 = (~(U4ziw6 & V1c7z6[30])); +assign U4ziw6 = (Qp07x6 & Xp07x6); +assign Cp07x6 = (~(B5ziw6 & D6gdt6)); +assign B5ziw6 = (Kdo6x6 & Dte7z6[13]); +assign Kdo6x6 = (Eq07x6 & Dte7z6[17]); +assign Eq07x6 = (~(Dte7z6[15] | Dte7z6[16])); +assign Dm07x6 = (Lq07x6 & Sq07x6); +assign Sq07x6 = (Zq07x6 & Gr07x6); +assign Gr07x6 = (~(Z3ziw6 & E3c7z6[1])); +assign Z3ziw6 = (Qp07x6 & Zrz6x6); +assign Zq07x6 = (~(Pvkdt6 & Oztiw6)); +assign Lq07x6 = (Kq2ov6 & T7ziw6); +assign T7ziw6 = (Nr07x6 & Ur07x6); +assign Ur07x6 = (~(H8ziw6 & Bs07x6)); +assign Bs07x6 = (Is07x6 | Nll6x6); +assign Nll6x6 = (Ps07x6 & Mrbdt6); +assign Ps07x6 = (~(Zho6x6 | F7ziw6)); +assign F7ziw6 = (Gg3ov6 & I0c7z6[1]); +assign Is07x6 = (~(Ubo6x6 | Bi2ov6)); +assign Bi2ov6 = (!Mrbdt6); +assign H8ziw6 = (Gg3ov6 & Ws07x6); +assign Ws07x6 = (Dte7z6[1] ^ Soo6x6); +assign Soo6x6 = (T3cdt6 ? V1c7z6[7] : Bv3ov6); +assign Bv3ov6 = (Kt07x6 ? Dt07x6 : Xrbov6); +assign Kt07x6 = (~(Dzu6x6 ^ Rt07x6)); +assign Rt07x6 = (Eav6x6 & Bgy6x6); +assign Bgy6x6 = (!Yt07x6); +assign Dt07x6 = (~(Fu07x6 & Mu07x6)); +assign Mu07x6 = (Tu07x6 & Av07x6); +assign Av07x6 = (M0v6x6 | Pqv6x6); +assign Pqv6x6 = (Hv07x6 & Ov07x6); +assign Ov07x6 = (Vv07x6 & Cw07x6); +assign Cw07x6 = (~(V307x6 & Jw07x6)); +assign Vv07x6 = (Lvv6x6 | Tkw6x6); +assign Hv07x6 = (Qw07x6 & Xw07x6); +assign Xw07x6 = (Juv6x6 | Ex07x6); +assign Qw07x6 = (~(Zvv6x6 & Cmw6x6)); +assign Cmw6x6 = (~(Lx07x6 & Sx07x6)); +assign Tu07x6 = (A1v6x6 | Bxv6x6); +assign Bxv6x6 = (Zx07x6 & Gy07x6); +assign Gy07x6 = (Ny07x6 & Uy07x6); +assign Uy07x6 = (Mkw6x6 | Bz07x6); +assign Ny07x6 = (Lvv6x6 | Asw6x6); +assign Zx07x6 = (Iz07x6 & Pz07x6); +assign Pz07x6 = (~(Vlw6x6 & Wz07x6)); +assign Iz07x6 = (~(Zvv6x6 & Ctw6x6)); +assign Ctw6x6 = (~(D017x6 & K017x6)); +assign Fu07x6 = (R017x6 & Y017x6); +assign Y017x6 = (Q2v6x6 | N3w6x6); +assign N3w6x6 = (F117x6 & M117x6); +assign M117x6 = (T117x6 & A217x6); +assign A217x6 = (Mkw6x6 | Svv6x6); +assign T117x6 = (Lvv6x6 | Vzw6x6); +assign F117x6 = (H217x6 & O217x6); +assign O217x6 = (~(Vlw6x6 & Gwv6x6)); +assign Gwv6x6 = (~(V217x6 & C317x6)); +assign H217x6 = (~(Zvv6x6 & X0x6x6)); +assign X0x6x6 = (~(J317x6 & Q317x6)); +assign R017x6 = (C2v6x6 | U3w6x6); +assign U3w6x6 = (X317x6 & E417x6); +assign E417x6 = (L417x6 & S417x6); +assign S417x6 = (Mkw6x6 | Cxz6x6); +assign L417x6 = (Lvv6x6 | J7x6x6); +assign X317x6 = (Z417x6 & G517x6); +assign G517x6 = (~(Vlw6x6 & Jxz6x6)); +assign Jxz6x6 = (~(N517x6 & U517x6)); +assign Z417x6 = (~(Zvv6x6 & L8x6x6)); +assign L8x6x6 = (~(B617x6 & I617x6)); +assign Nr07x6 = (~(P617x6 & W617x6)); +assign W617x6 = (Ok3ov6 & Ubo6x6); +assign Ubo6x6 = (~(Gg3ov6 & Bqziw6)); +assign Ok3ov6 = (~(Pk5jw6 ^ Dte7z6[1])); +assign Pk5jw6 = (T3cdt6 ? S1ohw6 : I24ov6); +assign S1ohw6 = (!V1c7z6[15]); +assign I24ov6 = (!M85jw6); +assign M85jw6 = (~(D717x6 & K717x6)); +assign K717x6 = (~(R717x6 & Y717x6)); +assign Y717x6 = (~(F817x6 & M817x6)); +assign M817x6 = (T817x6 & A917x6); +assign A917x6 = (M0v6x6 | Euw6x6); +assign Euw6x6 = (H917x6 & O917x6); +assign O917x6 = (V917x6 & Ca17x6); +assign Ca17x6 = (Mkw6x6 | Alw6x6); +assign Alw6x6 = (S507x6 & Ja17x6); +assign S507x6 = (Qa17x6 & Xa17x6); +assign Xa17x6 = (~(Cve7z6[16] & We07x6)); +assign Qa17x6 = (~(Dbx6x6 & Cve7z6[0])); +assign V917x6 = (Lvv6x6 | P8z6x6); +assign P8z6x6 = (G607x6 & D017x6); +assign D017x6 = (Eb17x6 & Lb17x6); +assign Lb17x6 = (~(Cve7z6[28] & Sb17x6)); +assign Eb17x6 = (~(Cve7z6[12] & Kbx6x6)); +assign G607x6 = (Zb17x6 & Gc17x6); +assign Gc17x6 = (~(Cve7z6[20] & We07x6)); +assign Zb17x6 = (~(Cve7z6[4] & Dbx6x6)); +assign H917x6 = (Nc17x6 & Uc17x6); +assign Uc17x6 = (~(Vlw6x6 & Jmw6x6)); +assign Jmw6x6 = (~(Bd17x6 & Id17x6)); +assign Nc17x6 = (E1x6x6 | R9z6x6); +assign R9z6x6 = (Pd17x6 & R807x6); +assign R807x6 = (Wd17x6 & De17x6); +assign De17x6 = (~(Cve7z6[3] & Sb17x6)); +assign Wd17x6 = (~(Cve7z6[19] & Kbx6x6)); +assign Pd17x6 = (Ke17x6 & Re17x6); +assign Re17x6 = (~(Cve7z6[11] & We07x6)); +assign Ke17x6 = (~(Cve7z6[27] & Dbx6x6)); +assign T817x6 = (A1v6x6 | G2x6x6); +assign G2x6x6 = (Ye17x6 & Ff17x6); +assign Ff17x6 = (Mf17x6 & Tf17x6); +assign Tf17x6 = (Mkw6x6 | Hsw6x6); +assign Hsw6x6 = (Qi07x6 & V217x6); +assign V217x6 = (Ag17x6 & Hg17x6); +assign Hg17x6 = (~(Cve7z6[25] & Sb17x6)); +assign Ag17x6 = (~(Cve7z6[9] & Kbx6x6)); +assign Qi07x6 = (Og17x6 & Vg17x6); +assign Vg17x6 = (~(Cve7z6[17] & We07x6)); +assign Og17x6 = (~(Cve7z6[1] & Dbx6x6)); +assign Mf17x6 = (Lvv6x6 | Qzx6x6); +assign Qzx6x6 = (Ej07x6 & J317x6); +assign J317x6 = (Ch17x6 & Jh17x6); +assign Jh17x6 = (~(Cve7z6[29] & Sb17x6)); +assign Ch17x6 = (~(Cve7z6[13] & Kbx6x6)); +assign Ej07x6 = (Qh17x6 & Xh17x6); +assign Xh17x6 = (~(Cve7z6[21] & We07x6)); +assign Qh17x6 = (~(Cve7z6[5] & Dbx6x6)); +assign Ye17x6 = (Ei17x6 & Li17x6); +assign Li17x6 = (~(Vlw6x6 & Jtw6x6)); +assign Jtw6x6 = (~(Si17x6 & Zi17x6)); +assign Si17x6 = (Xb07x6 & Ec07x6); +assign Ec07x6 = (~(Cve7z6[16] & Kbx6x6)); +assign Xb07x6 = (~(Sb17x6 & Cve7z6[0])); +assign Ei17x6 = (E1x6x6 | Z0y6x6); +assign Z0y6x6 = (Gj17x6 & Sc07x6); +assign Sc07x6 = (Nj17x6 & Uj17x6); +assign Uj17x6 = (~(Cve7z6[4] & Sb17x6)); +assign Nj17x6 = (~(Cve7z6[20] & Kbx6x6)); +assign Gj17x6 = (Bk17x6 & Ik17x6); +assign Ik17x6 = (~(Cve7z6[12] & We07x6)); +assign Bk17x6 = (~(Cve7z6[28] & Dbx6x6)); +assign F817x6 = (Pk17x6 & Wk17x6); +assign Wk17x6 = (Q2v6x6 | N9x6x6); +assign N9x6x6 = (Dl17x6 & Kl17x6); +assign Kl17x6 = (Rl17x6 & Yl17x6); +assign Yl17x6 = (Mkw6x6 | C0x6x6); +assign C0x6x6 = (Aa07x6 & N517x6); +assign N517x6 = (Fm17x6 & Mm17x6); +assign Mm17x6 = (~(Cve7z6[26] & Sb17x6)); +assign Fm17x6 = (~(Cve7z6[10] & Kbx6x6)); +assign Aa07x6 = (Tm17x6 & An17x6); +assign An17x6 = (~(Cve7z6[18] & We07x6)); +assign Tm17x6 = (~(Cve7z6[2] & Dbx6x6)); +assign Rl17x6 = (Lvv6x6 | E7y6x6); +assign E7y6x6 = (B617x6 & Hn17x6); +assign B617x6 = (On17x6 & Vn17x6); +assign Vn17x6 = (~(Cve7z6[30] & Sb17x6)); +assign On17x6 = (~(Cve7z6[14] & Kbx6x6)); +assign Dl17x6 = (Co17x6 & Jo17x6); +assign Jo17x6 = (Juv6x6 | L1x6x6); +assign L1x6x6 = (Qo17x6 & C407x6); +assign C407x6 = (Xo17x6 & Ep17x6); +assign Ep17x6 = (~(Cve7z6[1] & Sb17x6)); +assign Xo17x6 = (~(Cve7z6[17] & Kbx6x6)); +assign Qo17x6 = (Lp17x6 & Sp17x6); +assign Sp17x6 = (~(Cve7z6[9] & We07x6)); +assign Lp17x6 = (~(Cve7z6[25] & Dbx6x6)); +assign Co17x6 = (E1x6x6 | G8y6x6); +assign G8y6x6 = (Zp17x6 & Q407x6); +assign Q407x6 = (Gq17x6 & Nq17x6); +assign Nq17x6 = (~(Cve7z6[5] & Sb17x6)); +assign Gq17x6 = (~(Cve7z6[21] & Kbx6x6)); +assign Zp17x6 = (Uq17x6 & Br17x6); +assign Br17x6 = (~(Cve7z6[13] & We07x6)); +assign Uq17x6 = (~(Cve7z6[29] & Dbx6x6)); +assign Pk17x6 = (C2v6x6 | Yix6x6); +assign Yix6x6 = (Ir17x6 & Pr17x6); +assign Pr17x6 = (Wr17x6 & Ds17x6); +assign Ds17x6 = (Mkw6x6 | Q7x6x6); +assign Q7x6x6 = (Df07x6 & Lx07x6); +assign Lx07x6 = (Ks17x6 & Rs17x6); +assign Rs17x6 = (~(Cve7z6[27] & Sb17x6)); +assign Ks17x6 = (~(Cve7z6[11] & Kbx6x6)); +assign Df07x6 = (Ys17x6 & Ft17x6); +assign Ft17x6 = (~(Cve7z6[19] & We07x6)); +assign Ys17x6 = (~(Cve7z6[3] & Dbx6x6)); +assign Wr17x6 = (Lvv6x6 | K807x6); +assign K807x6 = (Bd17x6 & Mt17x6); +assign Bd17x6 = (Tt17x6 & Au17x6); +assign Au17x6 = (~(Sb17x6 & Neo7v6)); +assign Tt17x6 = (~(Cve7z6[15] & Kbx6x6)); +assign Ir17x6 = (Hu17x6 & Ou17x6); +assign Ou17x6 = (Juv6x6 | S8x6x6); +assign S8x6x6 = (Vu17x6 & Ah07x6); +assign Ah07x6 = (Cv17x6 & Jv17x6); +assign Jv17x6 = (~(Cve7z6[2] & Sb17x6)); +assign Cv17x6 = (~(Cve7z6[18] & Kbx6x6)); +assign Vu17x6 = (Qv17x6 & Xv17x6); +assign Xv17x6 = (~(Cve7z6[10] & We07x6)); +assign Qv17x6 = (~(Cve7z6[26] & Dbx6x6)); +assign Hu17x6 = (E1x6x6 | T907x6); +assign T907x6 = (Ew17x6 & Oh07x6); +assign Oh07x6 = (Lw17x6 & Sw17x6); +assign Sw17x6 = (~(Cve7z6[6] & Sb17x6)); +assign Lw17x6 = (~(Cve7z6[22] & Kbx6x6)); +assign Ew17x6 = (Zw17x6 & Gx17x6); +assign Gx17x6 = (~(Cve7z6[14] & We07x6)); +assign Zw17x6 = (~(Cve7z6[30] & Dbx6x6)); +assign R717x6 = (~(Dzu6x6 ^ Nx17x6)); +assign D717x6 = (~(Xrbov6 & Ux17x6)); +assign Ux17x6 = (Dzu6x6 | Nx17x6); +assign Nx17x6 = (By17x6 & Iy17x6); +assign Iy17x6 = (Wax6x6 & Okx6x6); +assign Wax6x6 = (Py17x6 | Dbx6x6); +assign By17x6 = (Nfy6x6 & Wy17x6); +assign Wy17x6 = (~(Sb17x6 & Yt07x6)); +assign Nfy6x6 = (Vfv6x6 & Jgv6x6); +assign Jgv6x6 = (!Ajy6x6); +assign P617x6 = (Zho6x6 & Mrbdt6); +assign Zho6x6 = (Gg3ov6 & I0c7z6[0]); +assign Gg3ov6 = (Qp07x6 & Dz17x6); +assign Dz17x6 = (~(Bdu6x6 & Kz17x6)); +assign Kq2ov6 = (Iymnv6 ? Yz17x6 : Rz17x6); +assign Iymnv6 = (F027x6 ^ Mennv6); +assign Mennv6 = (M027x6 & T027x6); +assign T027x6 = (A127x6 & Nu8jw6); +assign Nu8jw6 = (!Dte7z6[1]); +assign M027x6 = (H127x6 & O127x6); +assign O127x6 = (~(V127x6 & Nvtiw6)); +assign V127x6 = (Gzz6x6 & Zrz6x6); +assign Gzz6x6 = (C227x6 & Dte7z6[15]); +assign C227x6 = (~(J227x6 | Djgdt6)); +assign H127x6 = (Kxb7z6[31] ? X227x6 : Q227x6); +assign X227x6 = (~(E327x6 & L327x6)); +assign L327x6 = (~(Z6jhw6 & S327x6)); +assign S327x6 = (~(Z327x6 & G427x6)); +assign Z327x6 = (Bdf7z6[3] & Nh2ov6); +assign Q227x6 = (~(N427x6 & Gvtiw6)); +assign F027x6 = (~(U427x6 & B527x6)); +assign B527x6 = (I527x6 & P527x6); +assign P527x6 = (W527x6 & D627x6); +assign D627x6 = (~(Su0jw6 & Yxf7z6[32])); +assign Su0jw6 = (K627x6 & Ijziw6); +assign Ijziw6 = (Pne7z6[1] & R627x6); +assign W527x6 = (Y627x6 & F727x6); +assign F727x6 = (~(Yxf7z6[30] & Nv0jw6)); +assign Nv0jw6 = (K627x6 & Giziw6); +assign Giziw6 = (~(Pne7z6[0] | Pne7z6[1])); +assign Y627x6 = (~(Uv0jw6 & Yxf7z6[31])); +assign Uv0jw6 = (K627x6 & Niziw6); +assign Niziw6 = (~(R627x6 | Pne7z6[1])); +assign R627x6 = (!Pne7z6[0]); +assign I527x6 = (M727x6 & T727x6); +assign T727x6 = (~(Pw0jw6 & Yxf7z6[33])); +assign Pw0jw6 = (K627x6 & Pjziw6); +assign Pjziw6 = (Pne7z6[1] & Pne7z6[0]); +assign K627x6 = (Gvtiw6 & Ydziw6); +assign Gvtiw6 = (A827x6 & Bdf7z6[3]); +assign M727x6 = (~(Hz0jw6 & Kxb7z6[30])); +assign Hz0jw6 = (~(Z6jhw6 | H827x6)); +assign U427x6 = (O827x6 & V827x6); +assign V827x6 = (C927x6 & J927x6); +assign J927x6 = (~(Alf7z6[14] & J01jw6)); +assign J01jw6 = (Ydziw6 & Rkziw6); +assign Rkziw6 = (~(Q927x6 & X927x6)); +assign Q927x6 = (Pbtiw6 & E4lhw6); +assign C927x6 = (Ea27x6 & La27x6); +assign La27x6 = (~(Oz0jw6 & Fhc7z6[30])); +assign Oz0jw6 = (Sa27x6 & Za27x6); +assign Sa27x6 = (Ydziw6 & Kxb7z6[31]); +assign Ea27x6 = (~(Onf7z6[30] & My0jw6)); +assign My0jw6 = (Ydziw6 & Ofziw6); +assign O827x6 = (Gb27x6 & Nb27x6); +assign Nb27x6 = (~(Wl07x6 & Rdziw6)); +assign Rdziw6 = (!Dx0jw6); +assign Wl07x6 = (T3cdt6 ? V1c7z6[30] : Iv3ov6); +assign Iv3ov6 = (Bc27x6 ? Xrbov6 : Ub27x6); +assign Bc27x6 = (Pyu6x6 & Ic27x6); +assign Ic27x6 = (~(Pc27x6 & Ajy6x6)); +assign Pc27x6 = (Sov6x6 & Kuz6x6); +assign Sov6x6 = (!Dzu6x6); +assign Pyu6x6 = (Nk07x6 & Gk07x6); +assign Gk07x6 = (~(Vfv6x6 & Dzu6x6)); +assign Nk07x6 = (Dzu6x6 | Vfv6x6); +assign Ub27x6 = (~(Wc27x6 & Dd27x6)); +assign Dd27x6 = (Kd27x6 & Rd27x6); +assign Rd27x6 = (M0v6x6 | Yoy6x6); +assign Yoy6x6 = (Yd27x6 & Fe27x6); +assign Fe27x6 = (Me27x6 & Te27x6); +assign Te27x6 = (Mkw6x6 | Dnz6x6); +assign Dnz6x6 = (Be07x6 & Af27x6); +assign Be07x6 = (Hf27x6 & Of27x6); +assign Of27x6 = (~(Cve7z6[7] & Sb17x6)); +assign Hf27x6 = (~(Cve7z6[23] & Kbx6x6)); +assign Me27x6 = (Lvv6x6 | Vf27x6); +assign Yd27x6 = (Cg27x6 & Jg27x6); +assign Jg27x6 = (Juv6x6 | Foz6x6); +assign Foz6x6 = (Qg27x6 & Xg27x6); +assign Qg27x6 = (Hn17x6 & Eh27x6); +assign Eh27x6 = (~(Cve7z6[22] & We07x6)); +assign Hn17x6 = (~(Cve7z6[6] & Dbx6x6)); +assign Cg27x6 = (E1x6x6 | Lh27x6); +assign Kd27x6 = (A1v6x6 | T0v6x6); +assign T0v6x6 = (Sh27x6 & Zh27x6); +assign Zh27x6 = (Gi27x6 & Ni27x6); +assign Ni27x6 = (Mkw6x6 | Vpz6x6); +assign Vpz6x6 = (Ui27x6 & Z507x6); +assign Z507x6 = (Bj27x6 & Ij27x6); +assign Ij27x6 = (~(Cve7z6[8] & Sb17x6)); +assign Bj27x6 = (~(Cve7z6[24] & Kbx6x6)); +assign Gi27x6 = (Lvv6x6 | Pj27x6); +assign Sh27x6 = (Wj27x6 & Dk27x6); +assign Dk27x6 = (E1x6x6 | Kk27x6); +assign Wj27x6 = (Juv6x6 | Xqz6x6); +assign Xqz6x6 = (Rk27x6 & Yk27x6); +assign Rk27x6 = (Mt17x6 & Fl27x6); +assign Fl27x6 = (~(Cve7z6[23] & We07x6)); +assign Mt17x6 = (~(Cve7z6[7] & Dbx6x6)); +assign Wc27x6 = (Ml27x6 & Tl27x6); +assign Tl27x6 = (Q2v6x6 | H1v6x6); +assign H1v6x6 = (Am27x6 & Hm27x6); +assign Hm27x6 = (Om27x6 & Vm27x6); +assign Vm27x6 = (Mkw6x6 | G0z6x6); +assign G0z6x6 = (C317x6 & Xi07x6); +assign Xi07x6 = (Cn27x6 & Jn27x6); +assign Jn27x6 = (~(Cve7z6[9] & Sb17x6)); +assign Cn27x6 = (~(Cve7z6[25] & Kbx6x6)); +assign C317x6 = (Qn27x6 & Xn27x6); +assign Xn27x6 = (~(Cve7z6[1] & We07x6)); +assign Qn27x6 = (~(Cve7z6[17] & Dbx6x6)); +assign Om27x6 = (~(Xzx6x6 & Eo27x6)); +assign Eo27x6 = (~(Q317x6 & Lj07x6)); +assign Lj07x6 = (Lo27x6 & So27x6); +assign So27x6 = (~(Cve7z6[13] & Sb17x6)); +assign Lo27x6 = (~(Cve7z6[29] & Kbx6x6)); +assign Q317x6 = (Zo27x6 & Gp27x6); +assign Gp27x6 = (~(Cve7z6[5] & We07x6)); +assign Zo27x6 = (~(Cve7z6[21] & Dbx6x6)); +assign Am27x6 = (Np27x6 & Up27x6); +assign Up27x6 = (~(Zvv6x6 & Bq27x6)); +assign Np27x6 = (Juv6x6 | I1z6x6); +assign I1z6x6 = (Iq27x6 & Pq27x6); +assign Iq27x6 = (Wq27x6 & Lc07x6); +assign Lc07x6 = (~(Cve7z6[8] & Dbx6x6)); +assign Wq27x6 = (~(Cve7z6[24] & We07x6)); +assign Ml27x6 = (C2v6x6 | X2v6x6); +assign Gb27x6 = (~(Alf7z6[30] & Q01jw6)); +assign Q01jw6 = (~(H827x6 | Kkziw6)); +assign Kkziw6 = (~(Frtiw6 | Wcnnv6)); +assign Wcnnv6 = (!Uvtiw6); +assign Yz17x6 = (~(Bymnv6 & Ubziw6)); +assign Ubziw6 = (!Bcziw6); +assign Rz17x6 = (Bymnv6 ? Icziw6 : Bcziw6); +assign Bymnv6 = (Dr27x6 ^ Dte7z6[0]); +assign Dr27x6 = (~(Kr27x6 & Rr27x6)); +assign Rr27x6 = (~(Yxf7z6[14] & Laziw6)); +assign Laziw6 = (~(H827x6 | T8riw6)); +assign T8riw6 = (E4lhw6 & Mdtiw6); +assign Mdtiw6 = (!Dqtiw6); +assign Kr27x6 = (Yr27x6 & Fs27x6); +assign Fs27x6 = (~(Yxf7z6[30] & Gbziw6)); +assign Gbziw6 = (Ydziw6 & Ms27x6); +assign Ms27x6 = (~(Ts27x6 & A127x6)); +assign Yr27x6 = (~(Kxb7z6[30] & Nbziw6)); +assign Nbziw6 = (~(Dx0jw6 & Zs2jw6)); +assign Zs2jw6 = (H827x6 | At27x6); +assign At27x6 = (~(Ht27x6 | Ofziw6)); +assign Ofziw6 = (~(Ot27x6 & Cmtiw6)); +assign Ht27x6 = (~(Uvtiw6 & Qgziw6)); +assign Qgziw6 = (~(Za27x6 & Fhc7z6[31])); +assign Za27x6 = (Vt27x6 & Hetiw6); +assign Vt27x6 = (Mrbdt6 & Cu27x6); +assign Uvtiw6 = (~(A827x6 & Ju27x6)); +assign Dx0jw6 = (~(Fennv6 | Jm2ov6)); +assign Jm2ov6 = (!Gw1ov6); +assign Gw1ov6 = (~(Dte7z6[3] & Qu27x6)); +assign Qu27x6 = (~(Qp07x6 & J1gov6)); +assign Fennv6 = (Xu27x6 & Bdu6x6); +assign Icziw6 = (Ev27x6 & Lv27x6); +assign Ev27x6 = (~(Zrz6x6 & Xu27x6)); +assign Bcziw6 = (Sv27x6 & Lv27x6); +assign Lv27x6 = (~(Xu27x6 & Bqziw6)); +assign Sv27x6 = (~(Xu27x6 & Xp07x6)); +assign Gv9ov6 = (~(Zv27x6 | T1u6x6)); +assign T1u6x6 = (~(Gw27x6 & Nw27x6)); +assign Nw27x6 = (Uw27x6 & Bx27x6); +assign Bx27x6 = (Ylyiw6 ^ Ix27x6); +assign Ylyiw6 = (Px27x6 | D0u6x6); +assign Px27x6 = (~(Wx27x6 & Spyiw6)); +assign Wx27x6 = (~(Dy27x6 & Ky27x6)); +assign Ky27x6 = (Yy27x6 ? Ry27x6 : Qij7z6[1]); +assign Ry27x6 = (~(Fz27x6 & Mz27x6)); +assign Fz27x6 = (~(M5e7z6[0] & Ldo7v6)); +assign Dy27x6 = (Gt2jw6 & Tz27x6); +assign Tz27x6 = (~(A037x6 & M5e7z6[0])); +assign A037x6 = (~(F02nv6 | M5e7z6[1])); +assign Gt2jw6 = (H037x6 & O037x6); +assign Uw27x6 = (Liyiw6 & V037x6); +assign V037x6 = (Xgfhw6 ^ Bkyiw6); +assign Bkyiw6 = (!Siyiw6); +assign Liyiw6 = (Wzt6x6 & C137x6); +assign C137x6 = (~(J137x6 & H037x6)); +assign H037x6 = (Q137x6 & X137x6); +assign Q137x6 = (~(E237x6 & L237x6)); +assign E237x6 = (~(Gfihw6 | S237x6)); +assign J137x6 = (Siyiw6 & D0u6x6); +assign D0u6x6 = (~(Z237x6 & G337x6)); +assign Z237x6 = (N337x6 & U337x6); +assign U337x6 = (~(Vuyiw6 & B437x6)); +assign N337x6 = (~(Ouyiw6 & X0oov6)); +assign Siyiw6 = (O037x6 & Spyiw6); +assign O037x6 = (~(I437x6 & P437x6)); +assign I437x6 = (W437x6 & D537x6); +assign D537x6 = (~(K537x6 & Vuyiw6)); +assign W437x6 = (~(Ouyiw6 & R537x6)); +assign Wzt6x6 = (~(Y537x6 & L237x6)); +assign Y537x6 = (Z11jw6 & F637x6); +assign F637x6 = (!Vuyiw6); +assign Z11jw6 = (~(M637x6 & T637x6)); +assign T637x6 = (Srknv6 | Gp1ov6); +assign Gp1ov6 = (A737x6 & H737x6); +assign A737x6 = (Dtadt6 & O737x6); +assign O737x6 = (!Kxb7z6[2]); +assign Gw27x6 = (V737x6 & C837x6); +assign C837x6 = (Mlziw6 ^ Uifhw6); +assign Mlziw6 = (!Ziyiw6); +assign Ziyiw6 = (~(J837x6 & Q837x6)); +assign Q837x6 = (~(S237x6 | Gninv6)); +assign S237x6 = (Vuyiw6 & X837x6); +assign J837x6 = (~(Ouyiw6 | Gfihw6)); +assign V737x6 = (Coyiw6 ^ Bjfhw6); +assign Coyiw6 = (!Fmyiw6); +assign Fmyiw6 = (X137x6 | Gninv6); +assign Gninv6 = (!Spyiw6); +assign Spyiw6 = (~(K7e7z6[0] & Pxfov6)); +assign X137x6 = (~(E937x6 & L237x6)); +assign L237x6 = (!Ouyiw6); +assign E937x6 = (L937x6 & S937x6); +assign S937x6 = (~(Vuyiw6 & Z937x6)); +assign Zv27x6 = (Pw9ov6 | R0u6x6); +assign Pw9ov6 = (!Y0u6x6); +assign Y0u6x6 = (~(Ga37x6 & Na37x6)); +assign Na37x6 = (Ua37x6 & Bb37x6); +assign Bb37x6 = (Ypinv6 | Ib37x6); +assign Ua37x6 = (Pb37x6 & Wb37x6); +assign Pb37x6 = (~(Etq6x6 & Dc37x6)); +assign Dc37x6 = (~(Kc37x6 & Rc37x6)); +assign Rc37x6 = (Yc37x6 & Fd37x6); +assign Fd37x6 = (Md37x6 & Td37x6); +assign Td37x6 = (Bnviw6 & T6onv6); +assign Bnviw6 = (Dssov6 & Vnlhw6); +assign Yc37x6 = (Ae37x6 & He37x6); +assign He37x6 = (B5siw6 & Epsov6); +assign Ae37x6 = (Oe37x6 & I4ghw6); +assign Kc37x6 = (Ve37x6 & Cf37x6); +assign Cf37x6 = (Jf37x6 & Qf37x6); +assign Qf37x6 = (Ydsiw6 & Hulhw6); +assign Jf37x6 = (~(Zwlhw6 | Nxlhw6)); +assign Zwlhw6 = (~(Bvohw6 & Hcviw6)); +assign Bvohw6 = (Ddsiw6 & G3ghw6); +assign Ve37x6 = (Xf37x6 & Eg37x6); +assign Eg37x6 = (Bylhw6 & Iylhw6); +assign Iylhw6 = (Lg37x6 & Sg37x6); +assign Sg37x6 = (Iyriw6 & Nqehw6); +assign Iyriw6 = (Yzehw6 & T1riw6); +assign Lg37x6 = (Gqehw6 & Mefhw6); +assign Xf37x6 = (Liriw6 & Wrsov6); +assign Wrsov6 = (L4riw6 & D0riw6); +assign Liriw6 = (Vcviw6 & Zg37x6); +assign Zg37x6 = (~(Gh37x6 | Nh37x6)); +assign Vcviw6 = (Rlriw6 & Uh37x6); +assign Etq6x6 = (~(Hs9ov6 & Bsrov6)); +assign Hs9ov6 = (!Snvnv6); +assign Ga37x6 = (Bi37x6 & Ii37x6); +assign Ii37x6 = (~(Gr2et6 & Pi37x6)); +assign Pi37x6 = (~(Wi37x6 & Dj37x6)); +assign Tly7v6 = (Kj37x6 & Qf2ov6); +assign Kj37x6 = (~(Gepiw6 | Lg2ov6)); +assign Gepiw6 = (~(Gh2ov6 & Fhc7z6[31])); +assign Gh2ov6 = (Rj37x6 & Yj37x6); +assign Yj37x6 = (Fk37x6 & Mk37x6); +assign Mk37x6 = (Tk37x6 & Al37x6); +assign Al37x6 = (~(Hl37x6 | Kxb7z6[28])); +assign Hl37x6 = (Kxb7z6[29] | Kxb7z6[30]); +assign Fk37x6 = (Ol37x6 & Vl37x6); +assign Rj37x6 = (Cm37x6 & Jm37x6); +assign Jm37x6 = (Qm37x6 & Xm37x6); +assign Xm37x6 = (~(En37x6 | Kxb7z6[19])); +assign En37x6 = (Kxb7z6[20] | Kxb7z6[21]); +assign Qm37x6 = (~(Kxb7z6[17] | Kxb7z6[18])); +assign Cm37x6 = (Ln37x6 & Sn37x6); +assign Sn37x6 = (~(Zn37x6 | Kxb7z6[16])); +assign Ln37x6 = (Go37x6 & E327x6); +assign Mly7v6 = (Lg2ov6 ? Elgdt6 : N427x6); +assign Lg2ov6 = (No37x6 & Uo37x6); +assign Uo37x6 = (~(Qf2ov6 & Qg2nv6)); +assign No37x6 = (~(Fre7z6[0] | Fre7z6[1])); +assign Fly7v6 = (~(Bp37x6 & Ip37x6)); +assign Ip37x6 = (~(Vi7et6 & Vrinv6)); +assign Bp37x6 = (~(Pp37x6 & Wp37x6)); +assign Pp37x6 = (Dq37x6 & Kq37x6); +assign Kq37x6 = (Ii9ov6 ? Yq37x6 : Rq37x6); +assign Yq37x6 = (Fr37x6 & Bi9ov6); +assign Fr37x6 = (Xvehw6 ? Tr37x6 : Mr37x6); +assign Tr37x6 = (As37x6 & Hs37x6); +assign Hs37x6 = (Os37x6 & Vs37x6); +assign Vs37x6 = (~(Lvg7z6[2] ^ S4lhw6)); +assign Os37x6 = (~(Lvg7z6[1] ^ Xehov6)); +assign As37x6 = (Ct37x6 & Jt37x6); +assign Jt37x6 = (~(Lvg7z6[0] ^ I6lhw6)); +assign Ct37x6 = (~(Lvg7z6[3] ^ L4lhw6)); +assign Mr37x6 = (Qt37x6 & Xt37x6); +assign Xt37x6 = (Eu37x6 & Lu37x6); +assign Lu37x6 = (~(Lvg7z6[3] ^ Nfihw6)); +assign Eu37x6 = (~(Lvg7z6[2] ^ Xdihw6)); +assign Qt37x6 = (Su37x6 & Zu37x6); +assign Zu37x6 = (Lvg7z6[0] ^ Mjq6x6); +assign Su37x6 = (Lvg7z6[1] ^ Ypq6x6); +assign Ypq6x6 = (!F4ihw6); +assign Rq37x6 = (Xvehw6 ? Nv37x6 : Gv37x6); +assign Nv37x6 = (Uv37x6 & Bw37x6); +assign Bw37x6 = (Iw37x6 & Pw37x6); +assign Pw37x6 = (Yelhw6 ^ S4lhw6); +assign S4lhw6 = (~(Ww37x6 & Dx37x6)); +assign Dx37x6 = (Kx37x6 & Rx37x6); +assign Rx37x6 = (~(Zec7z6[30] & Yx37x6)); +assign Kx37x6 = (Jlohw6 | Fy37x6); +assign Ww37x6 = (My37x6 & Ty37x6); +assign Iw37x6 = (~(Ntg7z6[1] ^ Xehov6)); +assign Xehov6 = (~(Az37x6 & Hz37x6)); +assign Hz37x6 = (Oz37x6 & Vz37x6); +assign Vz37x6 = (Buihw6 | Fy37x6); +assign Oz37x6 = (~(Yx37x6 & M6nhw6)); +assign Az37x6 = (C047x6 & Jvlhw6); +assign Uv37x6 = (J047x6 & Q047x6); +assign Q047x6 = (~(Ntg7z6[0] ^ I6lhw6)); +assign I6lhw6 = (~(X047x6 & E147x6)); +assign E147x6 = (L147x6 & S147x6); +assign S147x6 = (~(Yx37x6 & Z9nhw6)); +assign L147x6 = (Lofhw6 | Fy37x6); +assign X047x6 = (Z147x6 & Ty37x6); +assign J047x6 = (Oglhw6 ^ L4lhw6); +assign L4lhw6 = (~(G247x6 & N247x6)); +assign N247x6 = (U247x6 & B347x6); +assign B347x6 = (Offhw6 | Fy37x6); +assign Fy37x6 = (I347x6 & P347x6); +assign P347x6 = (W347x6 & Onlhw6); +assign I347x6 = (D447x6 & Mquiw6); +assign U247x6 = (K447x6 & R447x6); +assign K447x6 = (~(Zec7z6[31] & Yx37x6)); +assign Yx37x6 = (~(Y447x6 & F547x6)); +assign G247x6 = (M547x6 & Ty37x6); +assign Ty37x6 = (Jvlhw6 & Hffhw6); +assign Gv37x6 = (T547x6 & A647x6); +assign A647x6 = (H647x6 & O647x6); +assign O647x6 = (Oglhw6 ^ Nfihw6); +assign H647x6 = (Yelhw6 ^ Xdihw6); +assign T547x6 = (V647x6 & C747x6); +assign C747x6 = (Gclhw6 ^ Zeihw6); +assign V647x6 = (Pdlhw6 ^ F4ihw6); +assign Dq37x6 = (Ypinv6 ? Atmov6 : Fsmov6); +assign Yky7v6 = (~(J747x6 & Q747x6)); +assign Q747x6 = (X747x6 & E847x6); +assign E847x6 = (~(Ivwnv6 & E3c7z6[0])); +assign X747x6 = (L847x6 & S847x6); +assign S847x6 = (Z847x6 | G21jw6); +assign G21jw6 = (G947x6 & N947x6); +assign N947x6 = (U947x6 & Ba47x6); +assign Ba47x6 = (Ia47x6 & Pa47x6); +assign Pa47x6 = (~(Wa47x6 & Db47x6)); +assign Db47x6 = (Kb47x6 & Ijmov6); +assign Wa47x6 = (R3h7z6[0] & Rb47x6); +assign Rb47x6 = (~(Yb47x6 & Fc47x6)); +assign Fc47x6 = (~(EXRESPD & Mc47x6)); +assign Yb47x6 = (~(Tc47x6 | R3h7z6[1])); +assign Tc47x6 = (EXRESPS & Ad47x6); +assign Ia47x6 = (~(Swlov6 & Rsyiw6)); +assign U947x6 = (Hd47x6 & Od47x6); +assign Od47x6 = (~(Nqh7z6[0] & Ysyiw6)); +assign Hd47x6 = (Vd47x6 | R3ihw6); +assign G947x6 = (Ce47x6 & Je47x6); +assign Ce47x6 = (Qe47x6 & Xe47x6); +assign Xe47x6 = (~(Fth7z6[0] & Ttyiw6)); +assign Qe47x6 = (~(Uyb7z6[0] & Ef47x6)); +assign L847x6 = (~(Lf47x6 & Sf47x6)); +assign Sf47x6 = (~(Zf47x6 & Gg47x6)); +assign Gg47x6 = (Ng47x6 & Ug47x6); +assign Ug47x6 = (~(Bh47x6 & Ve9ov6)); +assign Ng47x6 = (Ih47x6 & Ph47x6); +assign Ph47x6 = (~(Wh47x6 & Zfhov6)); +assign Ih47x6 = (~(Di47x6 & Et9iw6)); +assign Zf47x6 = (Ki47x6 & Ri47x6); +assign Ri47x6 = (~(Yi47x6 & Td9ov6)); +assign Ki47x6 = (Fj47x6 & Mj47x6); +assign Mj47x6 = (~(Tj47x6 & Jf9ov6)); +assign Fj47x6 = (~(Ak47x6 & Fd9ov6)); +assign J747x6 = (Hk47x6 & Ok47x6); +assign Ok47x6 = (~(Kwwnv6 & Fth7z6[0])); +assign Hk47x6 = (Vk47x6 & Cl47x6); +assign Cl47x6 = (~(Ztwnv6 & Kxb7z6[0])); +assign Vk47x6 = (~(Nqh7z6[0] & Dwwnv6)); +assign Rky7v6 = (~(Jl47x6 & Ql47x6)); +assign Ql47x6 = (Xl47x6 & Em47x6); +assign Em47x6 = (~(Ztwnv6 & Kxb7z6[30])); +assign Xl47x6 = (Lm47x6 & Sm47x6); +assign Sm47x6 = (~(Uuwnv6 & Acxnv6)); +assign Acxnv6 = (~(Zm47x6 & Gn47x6)); +assign Gn47x6 = (Nn47x6 & Un47x6); +assign Un47x6 = (~(Wryiw6 & Xkjnv6)); +assign Nn47x6 = (Bo47x6 & Io47x6); +assign Io47x6 = (~(Tk2ov6 & Rsyiw6)); +assign Bo47x6 = (~(Nqh7z6[30] & Ysyiw6)); +assign Zm47x6 = (Ftyiw6 & Po47x6); +assign Po47x6 = (~(Fth7z6[30] & Ttyiw6)); +assign Lm47x6 = (~(Ivwnv6 & Fhc7z6[30])); +assign Jl47x6 = (Wo47x6 & Dp47x6); +assign Dp47x6 = (~(Dwwnv6 & Nqh7z6[30])); +assign Wo47x6 = (~(Kwwnv6 & Fth7z6[30])); +assign Kky7v6 = (~(Kp47x6 & Rp47x6)); +assign Rp47x6 = (Yp47x6 & Fq47x6); +assign Fq47x6 = (~(Ztwnv6 & Kxb7z6[29])); +assign Yp47x6 = (Mq47x6 & Tq47x6); +assign Tq47x6 = (~(Uuwnv6 & Pgxnv6)); +assign Pgxnv6 = (~(Ar47x6 & Hr47x6)); +assign Hr47x6 = (Or47x6 & Vr47x6); +assign Vr47x6 = (~(Wryiw6 & Dojnv6)); +assign Or47x6 = (Cs47x6 & Js47x6); +assign Js47x6 = (~(Bnbov6 & Rsyiw6)); +assign Cs47x6 = (~(Nqh7z6[29] & Ysyiw6)); +assign Ar47x6 = (Ftyiw6 & Qs47x6); +assign Qs47x6 = (~(Fth7z6[29] & Ttyiw6)); +assign Mq47x6 = (~(Ivwnv6 & Fhc7z6[29])); +assign Kp47x6 = (Xs47x6 & Et47x6); +assign Et47x6 = (~(Dwwnv6 & Nqh7z6[29])); +assign Xs47x6 = (~(Kwwnv6 & Fth7z6[29])); +assign Dky7v6 = (~(Lt47x6 & St47x6)); +assign St47x6 = (Zt47x6 & Gu47x6); +assign Gu47x6 = (~(Ztwnv6 & Kxb7z6[28])); +assign Zt47x6 = (Nu47x6 & Uu47x6); +assign Uu47x6 = (~(Uuwnv6 & Elxnv6)); +assign Elxnv6 = (~(Bv47x6 & Iv47x6)); +assign Iv47x6 = (Pv47x6 & Wv47x6); +assign Wv47x6 = (~(Wryiw6 & Tpjnv6)); +assign Pv47x6 = (Dw47x6 & Kw47x6); +assign Kw47x6 = (~(My9ov6 & Rsyiw6)); +assign Dw47x6 = (~(Nqh7z6[28] & Ysyiw6)); +assign Bv47x6 = (Ftyiw6 & Rw47x6); +assign Rw47x6 = (~(Fth7z6[28] & Ttyiw6)); +assign Nu47x6 = (~(Ivwnv6 & Fhc7z6[28])); +assign Lt47x6 = (Yw47x6 & Fx47x6); +assign Fx47x6 = (~(Dwwnv6 & Nqh7z6[28])); +assign Yw47x6 = (~(Kwwnv6 & Fth7z6[28])); +assign Wjy7v6 = (~(Mx47x6 & Tx47x6)); +assign Tx47x6 = (Ay47x6 & Hy47x6); +assign Hy47x6 = (~(Ztwnv6 & Kxb7z6[27])); +assign Ay47x6 = (Oy47x6 & Vy47x6); +assign Vy47x6 = (~(Uuwnv6 & Tpxnv6)); +assign Tpxnv6 = (~(Cz47x6 & Jz47x6)); +assign Jz47x6 = (Qz47x6 & Xz47x6); +assign Xz47x6 = (~(Wryiw6 & Jrjnv6)); +assign Qz47x6 = (E057x6 & L057x6); +assign L057x6 = (~(Htfov6 & Rsyiw6)); +assign E057x6 = (~(Nqh7z6[27] & Ysyiw6)); +assign Cz47x6 = (Ftyiw6 & S057x6); +assign S057x6 = (~(Fth7z6[27] & Ttyiw6)); +assign Oy47x6 = (~(Ivwnv6 & Fhc7z6[27])); +assign Mx47x6 = (Z057x6 & G157x6); +assign G157x6 = (~(Dwwnv6 & Nqh7z6[27])); +assign Z057x6 = (~(Kwwnv6 & Fth7z6[27])); +assign Pjy7v6 = (~(N157x6 & U157x6)); +assign U157x6 = (B257x6 & I257x6); +assign I257x6 = (~(Ztwnv6 & Kxb7z6[26])); +assign B257x6 = (P257x6 & W257x6); +assign W257x6 = (~(Uuwnv6 & Iuxnv6)); +assign Iuxnv6 = (~(D357x6 & K357x6)); +assign K357x6 = (R357x6 & Y357x6); +assign Y357x6 = (~(Wryiw6 & Zsjnv6)); +assign R357x6 = (F457x6 & M457x6); +assign M457x6 = (~(Q2mov6 & Rsyiw6)); +assign F457x6 = (~(Nqh7z6[26] & Ysyiw6)); +assign D357x6 = (Ftyiw6 & T457x6); +assign T457x6 = (~(Fth7z6[26] & Ttyiw6)); +assign P257x6 = (~(Ivwnv6 & Fhc7z6[26])); +assign N157x6 = (A557x6 & H557x6); +assign H557x6 = (~(Dwwnv6 & Nqh7z6[26])); +assign A557x6 = (~(Kwwnv6 & Fth7z6[26])); +assign Ijy7v6 = (~(O557x6 & V557x6)); +assign V557x6 = (C657x6 & J657x6); +assign J657x6 = (~(Ztwnv6 & Kxb7z6[25])); +assign C657x6 = (Q657x6 & X657x6); +assign X657x6 = (~(Uuwnv6 & Xyxnv6)); +assign Xyxnv6 = (~(E757x6 & L757x6)); +assign L757x6 = (S757x6 & Z757x6); +assign Z757x6 = (~(Od9iw6 & Rsyiw6)); +assign S757x6 = (G857x6 & N857x6); +assign N857x6 = (~(Nqh7z6[25] & Ysyiw6)); +assign G857x6 = (~(Wryiw6 & Pujnv6)); +assign E757x6 = (Ftyiw6 & U857x6); +assign U857x6 = (~(Fth7z6[25] & Ttyiw6)); +assign Q657x6 = (~(Ivwnv6 & Fhc7z6[25])); +assign O557x6 = (B957x6 & I957x6); +assign I957x6 = (~(Dwwnv6 & Nqh7z6[25])); +assign B957x6 = (~(Kwwnv6 & Fth7z6[25])); +assign Bjy7v6 = (~(P957x6 & W957x6)); +assign W957x6 = (Da57x6 & Ka57x6); +assign Ka57x6 = (~(Ztwnv6 & Kxb7z6[24])); +assign Da57x6 = (Ra57x6 & Ya57x6); +assign Ya57x6 = (~(Uuwnv6 & M3ynv6)); +assign M3ynv6 = (~(Fb57x6 & Mb57x6)); +assign Mb57x6 = (Tb57x6 & Ac57x6); +assign Ac57x6 = (~(Wryiw6 & Fwjnv6)); +assign Tb57x6 = (Hc57x6 & Oc57x6); +assign Oc57x6 = (~(Zfhov6 & Rsyiw6)); +assign Zfhov6 = (Xgmov6 ? Fd9ov6 : Td9ov6); +assign Hc57x6 = (~(Nqh7z6[24] & Ysyiw6)); +assign Fb57x6 = (Ftyiw6 & Vc57x6); +assign Vc57x6 = (~(Fth7z6[24] & Ttyiw6)); +assign Ra57x6 = (~(Ivwnv6 & Fhc7z6[24])); +assign P957x6 = (Cd57x6 & Jd57x6); +assign Jd57x6 = (~(Dwwnv6 & Nqh7z6[24])); +assign Cd57x6 = (~(Kwwnv6 & Fth7z6[24])); +assign Uiy7v6 = (~(Qd57x6 & Xd57x6)); +assign Xd57x6 = (Ee57x6 & Le57x6); +assign Le57x6 = (~(Ztwnv6 & Kxb7z6[23])); +assign Ee57x6 = (Se57x6 & Ze57x6); +assign Ze57x6 = (~(Uuwnv6 & N7ynv6)); +assign N7ynv6 = (~(Gf57x6 & Nf57x6)); +assign Nf57x6 = (Uf57x6 & Bg57x6); +assign Bg57x6 = (~(Nqh7z6[23] & Ysyiw6)); +assign Uf57x6 = (Ig57x6 & Pg57x6); +assign Pg57x6 = (~(Wg57x6 & Dh57x6)); +assign Ig57x6 = (~(Kh57x6 & Rh57x6)); +assign Gf57x6 = (Yh57x6 & Ftyiw6); +assign Yh57x6 = (Fi57x6 & Mi57x6); +assign Mi57x6 = (~(Wryiw6 & Vxjnv6)); +assign Fi57x6 = (~(Fth7z6[23] & Ttyiw6)); +assign Se57x6 = (~(Ivwnv6 & Fhc7z6[23])); +assign Qd57x6 = (Ti57x6 & Aj57x6); +assign Aj57x6 = (~(Dwwnv6 & Nqh7z6[23])); +assign Ti57x6 = (~(Kwwnv6 & Fth7z6[23])); +assign Niy7v6 = (~(Hj57x6 & Oj57x6)); +assign Oj57x6 = (Vj57x6 & Ck57x6); +assign Ck57x6 = (~(Ztwnv6 & Kxb7z6[22])); +assign Vj57x6 = (Jk57x6 & Qk57x6); +assign Qk57x6 = (~(Uuwnv6 & Ccynv6)); +assign Ccynv6 = (~(Xk57x6 & El57x6)); +assign El57x6 = (Ll57x6 & Sl57x6); +assign Sl57x6 = (~(Nqh7z6[22] & Ysyiw6)); +assign Ll57x6 = (Zl57x6 & Gm57x6); +assign Gm57x6 = (~(Wg57x6 & Nm57x6)); +assign Zl57x6 = (~(Kh57x6 & Um57x6)); +assign Xk57x6 = (Bn57x6 & Ftyiw6); +assign Bn57x6 = (In57x6 & Pn57x6); +assign Pn57x6 = (~(Wryiw6 & Lzjnv6)); +assign In57x6 = (~(Fth7z6[22] & Ttyiw6)); +assign Jk57x6 = (~(Ivwnv6 & Fhc7z6[22])); +assign Hj57x6 = (Wn57x6 & Do57x6); +assign Do57x6 = (~(Dwwnv6 & Nqh7z6[22])); +assign Wn57x6 = (~(Kwwnv6 & Fth7z6[22])); +assign Giy7v6 = (~(Ko57x6 & Ro57x6)); +assign Ro57x6 = (Yo57x6 & Fp57x6); +assign Fp57x6 = (~(Ztwnv6 & Kxb7z6[21])); +assign Yo57x6 = (Mp57x6 & Tp57x6); +assign Tp57x6 = (~(Uuwnv6 & Rgynv6)); +assign Rgynv6 = (~(Aq57x6 & Hq57x6)); +assign Hq57x6 = (Oq57x6 & Vq57x6); +assign Vq57x6 = (~(Nqh7z6[21] & Ysyiw6)); +assign Oq57x6 = (Cr57x6 & Jr57x6); +assign Jr57x6 = (~(Wg57x6 & Qr57x6)); +assign Cr57x6 = (~(Kh57x6 & Xr57x6)); +assign Aq57x6 = (Es57x6 & Ftyiw6); +assign Es57x6 = (Ls57x6 & Ss57x6); +assign Ss57x6 = (~(Wryiw6 & B1knv6)); +assign Ls57x6 = (~(Fth7z6[21] & Ttyiw6)); +assign Mp57x6 = (~(Ivwnv6 & Fhc7z6[21])); +assign Ko57x6 = (Zs57x6 & Gt57x6); +assign Gt57x6 = (~(Dwwnv6 & Nqh7z6[21])); +assign Zs57x6 = (~(Kwwnv6 & Fth7z6[21])); +assign Zhy7v6 = (~(Nt57x6 & Ut57x6)); +assign Ut57x6 = (Bu57x6 & Iu57x6); +assign Iu57x6 = (~(Ztwnv6 & Kxb7z6[20])); +assign Bu57x6 = (Pu57x6 & Wu57x6); +assign Wu57x6 = (~(Uuwnv6 & Glynv6)); +assign Glynv6 = (~(Dv57x6 & Kv57x6)); +assign Kv57x6 = (Rv57x6 & Yv57x6); +assign Yv57x6 = (~(Nqh7z6[20] & Ysyiw6)); +assign Rv57x6 = (Fw57x6 & Mw57x6); +assign Mw57x6 = (~(Wg57x6 & Tw57x6)); +assign Fw57x6 = (~(Kh57x6 & Ax57x6)); +assign Dv57x6 = (Hx57x6 & Ftyiw6); +assign Hx57x6 = (Ox57x6 & Vx57x6); +assign Vx57x6 = (~(Wryiw6 & R2knv6)); +assign Ox57x6 = (~(Fth7z6[20] & Ttyiw6)); +assign Pu57x6 = (~(Ivwnv6 & Fhc7z6[20])); +assign Nt57x6 = (Cy57x6 & Jy57x6); +assign Jy57x6 = (~(Dwwnv6 & Nqh7z6[20])); +assign Cy57x6 = (~(Kwwnv6 & Fth7z6[20])); +assign Shy7v6 = (~(Qy57x6 & Xy57x6)); +assign Xy57x6 = (Ez57x6 & Lz57x6); +assign Lz57x6 = (~(Ztwnv6 & Kxb7z6[19])); +assign Ez57x6 = (Sz57x6 & Zz57x6); +assign Zz57x6 = (~(Uuwnv6 & Vpynv6)); +assign Vpynv6 = (~(G067x6 & N067x6)); +assign N067x6 = (U067x6 & B167x6); +assign B167x6 = (~(Nqh7z6[19] & Ysyiw6)); +assign U067x6 = (I167x6 & P167x6); +assign P167x6 = (~(Wg57x6 & Onlov6)); +assign I167x6 = (~(Kh57x6 & Hnlov6)); +assign G067x6 = (W167x6 & Ftyiw6); +assign W167x6 = (D267x6 & K267x6); +assign K267x6 = (~(Wryiw6 & L6knv6)); +assign D267x6 = (~(Fth7z6[19] & Ttyiw6)); +assign Sz57x6 = (~(Ivwnv6 & Fhc7z6[19])); +assign Qy57x6 = (R267x6 & Y267x6); +assign Y267x6 = (~(Dwwnv6 & Nqh7z6[19])); +assign R267x6 = (~(Kwwnv6 & Fth7z6[19])); +assign Lhy7v6 = (~(F367x6 & M367x6)); +assign M367x6 = (T367x6 & A467x6); +assign A467x6 = (~(Ztwnv6 & Kxb7z6[18])); +assign T367x6 = (H467x6 & O467x6); +assign O467x6 = (~(Uuwnv6 & Kuynv6)); +assign Kuynv6 = (~(V467x6 & C567x6)); +assign C567x6 = (J567x6 & Q567x6); +assign Q567x6 = (~(Nqh7z6[18] & Ysyiw6)); +assign J567x6 = (X567x6 & E667x6); +assign E667x6 = (~(Wg57x6 & Kdfov6)); +assign X567x6 = (~(Kh57x6 & Ddfov6)); +assign V467x6 = (L667x6 & Ftyiw6); +assign L667x6 = (S667x6 & Z667x6); +assign Z667x6 = (~(Wryiw6 & B8knv6)); +assign S667x6 = (~(Fth7z6[18] & Ttyiw6)); +assign H467x6 = (~(Ivwnv6 & Fhc7z6[18])); +assign F367x6 = (G767x6 & N767x6); +assign N767x6 = (~(Dwwnv6 & Nqh7z6[18])); +assign G767x6 = (~(Kwwnv6 & Fth7z6[18])); +assign Ehy7v6 = (~(U767x6 & B867x6)); +assign B867x6 = (I867x6 & P867x6); +assign P867x6 = (~(Ztwnv6 & Kxb7z6[17])); +assign I867x6 = (W867x6 & D967x6); +assign D967x6 = (~(Uuwnv6 & Zyynv6)); +assign Zyynv6 = (~(K967x6 & R967x6)); +assign R967x6 = (Y967x6 & Fa67x6); +assign Fa67x6 = (~(Nqh7z6[17] & Ysyiw6)); +assign Y967x6 = (Ma67x6 & Ta67x6); +assign Ta67x6 = (~(Wg57x6 & Ab67x6)); +assign Wg57x6 = (~(Xgmov6 | Hb67x6)); +assign Ma67x6 = (~(Kh57x6 & Ob67x6)); +assign Kh57x6 = (~(Hb67x6 | No7et6)); +assign Hb67x6 = (!Rsyiw6); +assign K967x6 = (Vb67x6 & Ftyiw6); +assign Vb67x6 = (Cc67x6 & Jc67x6); +assign Jc67x6 = (~(Wryiw6 & R9knv6)); +assign Cc67x6 = (~(Fth7z6[17] & Ttyiw6)); +assign W867x6 = (~(Ivwnv6 & Fhc7z6[17])); +assign U767x6 = (Qc67x6 & Xc67x6); +assign Xc67x6 = (~(Dwwnv6 & Nqh7z6[17])); +assign Qc67x6 = (~(Kwwnv6 & Fth7z6[17])); +assign Xgy7v6 = (~(Ed67x6 & Ld67x6)); +assign Ld67x6 = (Sd67x6 & Zd67x6); +assign Zd67x6 = (~(Ztwnv6 & Kxb7z6[16])); +assign Sd67x6 = (Ge67x6 & Ne67x6); +assign Ne67x6 = (~(Uuwnv6 & O3znv6)); +assign O3znv6 = (~(Ue67x6 & Bf67x6)); +assign Bf67x6 = (If67x6 & Pf67x6); +assign Pf67x6 = (~(Wryiw6 & Hbknv6)); +assign If67x6 = (Wf67x6 & Dg67x6); +assign Dg67x6 = (~(Ykfov6 & Rsyiw6)); +assign Wf67x6 = (~(Nqh7z6[16] & Ysyiw6)); +assign Ue67x6 = (Ftyiw6 & Kg67x6); +assign Kg67x6 = (~(Fth7z6[16] & Ttyiw6)); +assign Ge67x6 = (~(Ivwnv6 & Fhc7z6[16])); +assign Ed67x6 = (Rg67x6 & Yg67x6); +assign Yg67x6 = (~(Dwwnv6 & Nqh7z6[16])); +assign Rg67x6 = (~(Kwwnv6 & Fth7z6[16])); +assign Qgy7v6 = (Mh67x6 ? Fh67x6 : Fth7z6[15]); +assign Fh67x6 = (~(Th67x6 & Ai67x6)); +assign Ai67x6 = (Hi67x6 & Oi67x6); +assign Oi67x6 = (Vi67x6 & Cj67x6); +assign Cj67x6 = (~(Jj67x6 & Dh57x6)); +assign Vi67x6 = (Qj67x6 & Xj67x6); +assign Xj67x6 = (~(Ek67x6 & D8znv6)); +assign D8znv6 = (~(Lk67x6 & Sk67x6)); +assign Sk67x6 = (Zk67x6 & Gl67x6); +assign Gl67x6 = (~(Wryiw6 & Xcknv6)); +assign Zk67x6 = (Nl67x6 & Ul67x6); +assign Ul67x6 = (~(Fzmov6 & Rsyiw6)); +assign Nl67x6 = (~(Nqh7z6[15] & Ysyiw6)); +assign Lk67x6 = (Ftyiw6 & Bm67x6); +assign Bm67x6 = (~(Fth7z6[15] & Ttyiw6)); +assign Qj67x6 = (~(Im67x6 & Rh57x6)); +assign Hi67x6 = (Pm67x6 & Wm67x6); +assign Wm67x6 = (~(Dn67x6 & Kn67x6)); +assign Pm67x6 = (~(Rn67x6 & Zwlov6)); +assign Th67x6 = (Yn67x6 & Fo67x6); +assign Fo67x6 = (Mo67x6 & To67x6); +assign To67x6 = (~(Ap67x6 & Hp67x6)); +assign Mo67x6 = (~(Op67x6 & Fhc7z6[15])); +assign Yn67x6 = (Vp67x6 & Cq67x6); +assign Cq67x6 = (~(Kxb7z6[15] & Jq67x6)); +assign Vp67x6 = (~(Qq67x6 & Nqh7z6[15])); +assign Jgy7v6 = (Mh67x6 ? Xq67x6 : Fth7z6[14]); +assign Xq67x6 = (~(Er67x6 & Lr67x6)); +assign Lr67x6 = (Sr67x6 & Zr67x6); +assign Zr67x6 = (Gs67x6 & Ns67x6); +assign Ns67x6 = (~(Jj67x6 & Nm57x6)); +assign Gs67x6 = (Us67x6 & Bt67x6); +assign Bt67x6 = (~(Ek67x6 & Ecznv6)); +assign Ecznv6 = (~(It67x6 & Pt67x6)); +assign Pt67x6 = (Wt67x6 & Du67x6); +assign Du67x6 = (~(Wryiw6 & Neknv6)); +assign Wt67x6 = (Ku67x6 & Ru67x6); +assign Ru67x6 = (~(E2nov6 & Rsyiw6)); +assign Ku67x6 = (~(Nqh7z6[14] & Ysyiw6)); +assign It67x6 = (Ftyiw6 & Yu67x6); +assign Yu67x6 = (~(Fth7z6[14] & Ttyiw6)); +assign Us67x6 = (~(Im67x6 & Um57x6)); +assign Sr67x6 = (Fv67x6 & Mv67x6); +assign Mv67x6 = (~(Dn67x6 & Tv67x6)); +assign Fv67x6 = (~(Rn67x6 & Xs9iw6)); +assign Er67x6 = (Aw67x6 & Hw67x6); +assign Hw67x6 = (Ow67x6 & Vw67x6); +assign Vw67x6 = (~(Ap67x6 & Cx67x6)); +assign Ow67x6 = (~(Op67x6 & Fhc7z6[14])); +assign Aw67x6 = (Jx67x6 & Qx67x6); +assign Qx67x6 = (~(Kxb7z6[14] & Jq67x6)); +assign Jx67x6 = (~(Qq67x6 & Nqh7z6[14])); +assign Cgy7v6 = (Mh67x6 ? Xx67x6 : Fth7z6[13]); +assign Xx67x6 = (~(Ey67x6 & Ly67x6)); +assign Ly67x6 = (Sy67x6 & Zy67x6); +assign Zy67x6 = (Gz67x6 & Nz67x6); +assign Nz67x6 = (~(Jj67x6 & Qr57x6)); +assign Gz67x6 = (Uz67x6 & B077x6); +assign B077x6 = (~(Ek67x6 & Fgznv6)); +assign Fgznv6 = (~(I077x6 & P077x6)); +assign P077x6 = (W077x6 & D177x6); +assign D177x6 = (~(Wryiw6 & Dgknv6)); +assign W077x6 = (K177x6 & R177x6); +assign R177x6 = (~(Ng9iw6 & Rsyiw6)); +assign K177x6 = (~(Nqh7z6[13] & Ysyiw6)); +assign I077x6 = (Ftyiw6 & Y177x6); +assign Y177x6 = (~(Fth7z6[13] & Ttyiw6)); +assign Uz67x6 = (~(Im67x6 & Xr57x6)); +assign Sy67x6 = (F277x6 & M277x6); +assign M277x6 = (~(Dn67x6 & T277x6)); +assign F277x6 = (~(Rn67x6 & Qs9iw6)); +assign Ey67x6 = (A377x6 & H377x6); +assign H377x6 = (O377x6 & V377x6); +assign V377x6 = (~(Ap67x6 & C477x6)); +assign O377x6 = (~(Op67x6 & Fhc7z6[13])); +assign A377x6 = (J477x6 & Q477x6); +assign Q477x6 = (~(Kxb7z6[13] & Jq67x6)); +assign J477x6 = (~(Qq67x6 & Nqh7z6[13])); +assign Vfy7v6 = (Mh67x6 ? X477x6 : Fth7z6[12]); +assign X477x6 = (~(E577x6 & L577x6)); +assign L577x6 = (S577x6 & Z577x6); +assign Z577x6 = (G677x6 & N677x6); +assign N677x6 = (~(Jj67x6 & Tw57x6)); +assign G677x6 = (U677x6 & B777x6); +assign B777x6 = (~(Ek67x6 & Gkznv6)); +assign Gkznv6 = (~(I777x6 & P777x6)); +assign P777x6 = (W777x6 & D877x6); +assign D877x6 = (~(Wryiw6 & Thknv6)); +assign W777x6 = (K877x6 & R877x6); +assign R877x6 = (~(Tj9iw6 & Rsyiw6)); +assign K877x6 = (~(Nqh7z6[12] & Ysyiw6)); +assign I777x6 = (Ftyiw6 & Y877x6); +assign Y877x6 = (~(Fth7z6[12] & Ttyiw6)); +assign U677x6 = (~(Im67x6 & Ax57x6)); +assign S577x6 = (F977x6 & M977x6); +assign M977x6 = (~(Dn67x6 & T977x6)); +assign F977x6 = (~(Rn67x6 & Js9iw6)); +assign E577x6 = (Aa77x6 & Ha77x6); +assign Ha77x6 = (Oa77x6 & Va77x6); +assign Va77x6 = (~(Ap67x6 & Cb77x6)); +assign Oa77x6 = (~(Op67x6 & Fhc7z6[12])); +assign Aa77x6 = (Jb77x6 & Qb77x6); +assign Qb77x6 = (~(Kxb7z6[12] & Jq67x6)); +assign Jb77x6 = (~(Qq67x6 & Nqh7z6[12])); +assign Ofy7v6 = (Mh67x6 ? Xb77x6 : Fth7z6[11]); +assign Xb77x6 = (~(Ec77x6 & Lc77x6)); +assign Lc77x6 = (Sc77x6 & Zc77x6); +assign Zc77x6 = (Gd77x6 & Nd77x6); +assign Nd77x6 = (~(Jj67x6 & Onlov6)); +assign Gd77x6 = (Ud77x6 & Be77x6); +assign Be77x6 = (~(Ek67x6 & Hoznv6)); +assign Hoznv6 = (~(Ie77x6 & Pe77x6)); +assign Pe77x6 = (We77x6 & Df77x6); +assign Df77x6 = (~(Wryiw6 & Jjknv6)); +assign We77x6 = (Kf77x6 & Rf77x6); +assign Rf77x6 = (~(Ph9iw6 & Rsyiw6)); +assign Kf77x6 = (~(Nqh7z6[11] & Ysyiw6)); +assign Ie77x6 = (Ftyiw6 & Yf77x6); +assign Yf77x6 = (~(Fth7z6[11] & Ttyiw6)); +assign Ud77x6 = (~(Im67x6 & Hnlov6)); +assign Sc77x6 = (Fg77x6 & Mg77x6); +assign Mg77x6 = (~(Dn67x6 & Fmlov6)); +assign Fg77x6 = (~(Rn67x6 & Cs9iw6)); +assign Ec77x6 = (Tg77x6 & Ah77x6); +assign Ah77x6 = (Hh77x6 & Oh77x6); +assign Oh77x6 = (~(Ap67x6 & Mmlov6)); +assign Hh77x6 = (~(Op67x6 & Fhc7z6[11])); +assign Tg77x6 = (Vh77x6 & Ci77x6); +assign Ci77x6 = (~(Kxb7z6[11] & Jq67x6)); +assign Vh77x6 = (~(Qq67x6 & Nqh7z6[11])); +assign Hfy7v6 = (Mh67x6 ? Ji77x6 : Fth7z6[10]); +assign Ji77x6 = (~(Qi77x6 & Xi77x6)); +assign Xi77x6 = (Ej77x6 & Lj77x6); +assign Lj77x6 = (Sj77x6 & Zj77x6); +assign Zj77x6 = (~(Jj67x6 & Kdfov6)); +assign Sj77x6 = (Gk77x6 & Nk77x6); +assign Nk77x6 = (~(Ek67x6 & Isznv6)); +assign Isznv6 = (~(Uk77x6 & Bl77x6)); +assign Bl77x6 = (Il77x6 & Pl77x6); +assign Pl77x6 = (~(Wryiw6 & Glknv6)); +assign Il77x6 = (Wl77x6 & Dm77x6); +assign Dm77x6 = (~(Uanov6 & Rsyiw6)); +assign Wl77x6 = (~(Nqh7z6[10] & Ysyiw6)); +assign Uk77x6 = (Ftyiw6 & Km77x6); +assign Km77x6 = (~(Fth7z6[10] & Ttyiw6)); +assign Gk77x6 = (~(Im67x6 & Ddfov6)); +assign Ej77x6 = (Rm77x6 & Ym77x6); +assign Ym77x6 = (~(Dn67x6 & Bcfov6)); +assign Rm77x6 = (~(Rn67x6 & Vr9iw6)); +assign Qi77x6 = (Fn77x6 & Mn77x6); +assign Mn77x6 = (Tn77x6 & Ao77x6); +assign Ao77x6 = (~(Ap67x6 & Icfov6)); +assign Tn77x6 = (~(Op67x6 & Fhc7z6[10])); +assign Fn77x6 = (Ho77x6 & Oo77x6); +assign Oo77x6 = (~(Kxb7z6[10] & Jq67x6)); +assign Ho77x6 = (~(Qq67x6 & Nqh7z6[10])); +assign Afy7v6 = (Mh67x6 ? Vo77x6 : Fth7z6[9]); +assign Vo77x6 = (~(Cp77x6 & Jp77x6)); +assign Jp77x6 = (Qp77x6 & Xp77x6); +assign Xp77x6 = (Eq77x6 & Lq77x6); +assign Lq77x6 = (~(Ek67x6 & Jwznv6)); +assign Jwznv6 = (~(Sq77x6 & Zq77x6)); +assign Zq77x6 = (Gr77x6 & Nr77x6); +assign Nr77x6 = (~(H737x6 & Rsyiw6)); +assign Gr77x6 = (Ur77x6 & Bs77x6); +assign Bs77x6 = (~(Nqh7z6[9] & Ysyiw6)); +assign Ur77x6 = (~(Wryiw6 & L7jnv6)); +assign Sq77x6 = (Ftyiw6 & Is77x6); +assign Is77x6 = (~(Fth7z6[9] & Ttyiw6)); +assign Eq77x6 = (Ps77x6 & Ws77x6); +assign Ws77x6 = (~(Im67x6 & Ob67x6)); +assign Im67x6 = (Nvvnv6 & Dt77x6); +assign Dt77x6 = (~(Kt77x6 & Rt77x6)); +assign Rt77x6 = (~(Di47x6 & Xgmov6)); +assign Ps77x6 = (~(Jj67x6 & Ab67x6)); +assign Jj67x6 = (~(Yt77x6 & Fu77x6)); +assign Fu77x6 = (~(Mu77x6 & Di47x6)); +assign Mu77x6 = (No7et6 & Nvvnv6); +assign Yt77x6 = (~(Tu77x6 & Av77x6)); +assign Qp77x6 = (Hv77x6 & Ov77x6); +assign Ov77x6 = (~(Dn67x6 & Vv77x6)); +assign Hv77x6 = (~(Rn67x6 & Or9iw6)); +assign Cp77x6 = (Cw77x6 & Jw77x6); +assign Jw77x6 = (Qw77x6 & Xw77x6); +assign Xw77x6 = (~(Ap67x6 & Ex77x6)); +assign Qw77x6 = (~(Op67x6 & Fhc7z6[9])); +assign Cw77x6 = (Lx77x6 & Sx77x6); +assign Sx77x6 = (~(Kxb7z6[9] & Jq67x6)); +assign Lx77x6 = (~(Qq67x6 & Nqh7z6[9])); +assign Tey7v6 = (Mh67x6 ? Zx77x6 : Fth7z6[8]); +assign Zx77x6 = (~(Gy77x6 & Ny77x6)); +assign Ny77x6 = (Uy77x6 & Bz77x6); +assign Bz77x6 = (Iz77x6 & Pz77x6); +assign Pz77x6 = (~(Nvvnv6 & Wz77x6)); +assign Wz77x6 = (~(D087x6 & K087x6)); +assign K087x6 = (~(Di47x6 & Ykfov6)); +assign Ykfov6 = (Xgmov6 ? Ve9ov6 : Jf9ov6); +assign D087x6 = (R087x6 & Y087x6); +assign Y087x6 = (~(F187x6 & M187x6)); +assign M187x6 = (Jf9ov6 & Xgmov6); +assign F187x6 = (I0c7z6[0] & Av77x6); +assign R087x6 = (~(T187x6 & A287x6)); +assign T187x6 = (H287x6 & Ve9ov6); +assign Iz77x6 = (~(Dn67x6 & Fd9ov6)); +assign Dn67x6 = (Tu77x6 & H287x6); +assign Tu77x6 = (O287x6 & I0c7z6[0]); +assign O287x6 = (Nvvnv6 & Xgmov6); +assign Uy77x6 = (V287x6 & C387x6); +assign C387x6 = (~(Ek67x6 & K00ov6)); +assign K00ov6 = (~(J387x6 & Q387x6)); +assign Q387x6 = (X387x6 & E487x6); +assign E487x6 = (~(Wryiw6 & P9jnv6)); +assign X387x6 = (L487x6 & S487x6); +assign S487x6 = (~(Et9iw6 & Rsyiw6)); +assign Et9iw6 = (!Pylov6); +assign Pylov6 = (No7et6 ? G587x6 : Z487x6); +assign L487x6 = (~(Nqh7z6[8] & Ysyiw6)); +assign J387x6 = (Ftyiw6 & N587x6); +assign N587x6 = (~(Fth7z6[8] & Ttyiw6)); +assign V287x6 = (~(Rn67x6 & Swlov6)); +assign Swlov6 = (Xgmov6 ? Td9ov6 : Fd9ov6); +assign Rn67x6 = (Wh47x6 & Nvvnv6); +assign Gy77x6 = (U587x6 & B687x6); +assign B687x6 = (I687x6 & P687x6); +assign P687x6 = (~(Ap67x6 & Td9ov6)); +assign Ap67x6 = (W687x6 & A287x6); +assign W687x6 = (Av77x6 & Nvvnv6); +assign I687x6 = (~(Op67x6 & Fhc7z6[8])); +assign U587x6 = (D787x6 & K787x6); +assign K787x6 = (~(Kxb7z6[8] & Jq67x6)); +assign D787x6 = (~(Qq67x6 & Nqh7z6[8])); +assign Mey7v6 = (~(R787x6 & Y787x6)); +assign Y787x6 = (F887x6 & M887x6); +assign M887x6 = (~(Ivwnv6 & Fhc7z6[7])); +assign F887x6 = (T887x6 & A987x6); +assign A987x6 = (~(Lf47x6 & H987x6)); +assign H987x6 = (~(O987x6 & V987x6)); +assign V987x6 = (Ca87x6 & Ja87x6); +assign Ja87x6 = (~(Bh47x6 & Rh57x6)); +assign Ca87x6 = (Qa87x6 & Xa87x6); +assign Xa87x6 = (~(Wh47x6 & Ju1ov6)); +assign Ju1ov6 = (Xgmov6 ? Kn67x6 : Hp67x6); +assign Qa87x6 = (~(Di47x6 & Fzmov6)); +assign Fzmov6 = (No7et6 ? Rh57x6 : Dh57x6); +assign O987x6 = (Eb87x6 & Lb87x6); +assign Lb87x6 = (~(Yi47x6 & Hp67x6)); +assign Eb87x6 = (Sb87x6 & Zb87x6); +assign Zb87x6 = (~(Tj47x6 & Dh57x6)); +assign Sb87x6 = (~(Ak47x6 & Kn67x6)); +assign T887x6 = (~(Uuwnv6 & L40ov6)); +assign L40ov6 = (~(Gc87x6 & Nc87x6)); +assign Nc87x6 = (Uc87x6 & Bd87x6); +assign Bd87x6 = (~(Wryiw6 & Fbjnv6)); +assign Uc87x6 = (Id87x6 & Pd87x6); +assign Pd87x6 = (~(Zwlov6 & Rsyiw6)); +assign Zwlov6 = (No7et6 ? Kn67x6 : Hp67x6); +assign Id87x6 = (~(Nqh7z6[7] & Ysyiw6)); +assign Gc87x6 = (Ftyiw6 & Wd87x6); +assign Wd87x6 = (~(Fth7z6[7] & Ttyiw6)); +assign R787x6 = (De87x6 & Ke87x6); +assign Ke87x6 = (~(Kwwnv6 & Fth7z6[7])); +assign De87x6 = (Re87x6 & Ye87x6); +assign Ye87x6 = (~(Ztwnv6 & Kxb7z6[7])); +assign Re87x6 = (~(Dwwnv6 & Nqh7z6[7])); +assign Fey7v6 = (~(Ff87x6 & Mf87x6)); +assign Mf87x6 = (Tf87x6 & Ag87x6); +assign Ag87x6 = (~(Ivwnv6 & Fhc7z6[6])); +assign Tf87x6 = (Hg87x6 & Og87x6); +assign Og87x6 = (~(Lf47x6 & Vg87x6)); +assign Vg87x6 = (~(Ch87x6 & Jh87x6)); +assign Jh87x6 = (Qh87x6 & Xh87x6); +assign Xh87x6 = (~(Bh47x6 & Um57x6)); +assign Qh87x6 = (Ei87x6 & Li87x6); +assign Li87x6 = (~(Wh47x6 & Tk2ov6)); +assign Tk2ov6 = (Xgmov6 ? Tv67x6 : Cx67x6); +assign Ei87x6 = (~(Di47x6 & E2nov6)); +assign E2nov6 = (No7et6 ? Um57x6 : Nm57x6); +assign Ch87x6 = (Si87x6 & Zi87x6); +assign Zi87x6 = (~(Yi47x6 & Cx67x6)); +assign Si87x6 = (Gj87x6 & Nj87x6); +assign Nj87x6 = (~(Tj47x6 & Nm57x6)); +assign Gj87x6 = (~(Ak47x6 & Tv67x6)); +assign Hg87x6 = (~(Uuwnv6 & M80ov6)); +assign M80ov6 = (~(Uj87x6 & Bk87x6)); +assign Bk87x6 = (Ik87x6 & Pk87x6); +assign Pk87x6 = (~(Wryiw6 & Vcjnv6)); +assign Ik87x6 = (Wk87x6 & Dl87x6); +assign Dl87x6 = (~(Xs9iw6 & Rsyiw6)); +assign Xs9iw6 = (!Nxlov6); +assign Nxlov6 = (No7et6 ? Rl87x6 : Kl87x6); +assign Wk87x6 = (~(Nqh7z6[6] & Ysyiw6)); +assign Uj87x6 = (Ftyiw6 & Yl87x6); +assign Yl87x6 = (~(Fth7z6[6] & Ttyiw6)); +assign Ff87x6 = (Fm87x6 & Mm87x6); +assign Mm87x6 = (~(Kwwnv6 & Fth7z6[6])); +assign Fm87x6 = (Tm87x6 & An87x6); +assign An87x6 = (~(Ztwnv6 & Kxb7z6[6])); +assign Tm87x6 = (~(Dwwnv6 & Nqh7z6[6])); +assign Ydy7v6 = (~(Hn87x6 & On87x6)); +assign On87x6 = (Vn87x6 & Co87x6); +assign Co87x6 = (~(Ivwnv6 & Fhc7z6[5])); +assign Vn87x6 = (Jo87x6 & Qo87x6); +assign Qo87x6 = (~(Lf47x6 & Xo87x6)); +assign Xo87x6 = (~(Ep87x6 & Lp87x6)); +assign Lp87x6 = (Sp87x6 & Zp87x6); +assign Zp87x6 = (~(Bh47x6 & Xr57x6)); +assign Sp87x6 = (Gq87x6 & Nq87x6); +assign Nq87x6 = (~(Wh47x6 & Bnbov6)); +assign Bnbov6 = (Xgmov6 ? T277x6 : C477x6); +assign Gq87x6 = (~(Di47x6 & Ng9iw6)); +assign Ng9iw6 = (No7et6 ? Xr57x6 : Qr57x6); +assign Ep87x6 = (Uq87x6 & Br87x6); +assign Br87x6 = (~(Yi47x6 & C477x6)); +assign Uq87x6 = (Ir87x6 & Pr87x6); +assign Pr87x6 = (~(Tj47x6 & Qr57x6)); +assign Ir87x6 = (~(Ak47x6 & T277x6)); +assign Jo87x6 = (~(Uuwnv6 & Nc0ov6)); +assign Nc0ov6 = (~(Wr87x6 & Ds87x6)); +assign Ds87x6 = (Ks87x6 & Rs87x6); +assign Rs87x6 = (~(Wryiw6 & Lejnv6)); +assign Ks87x6 = (Ys87x6 & Ft87x6); +assign Ft87x6 = (~(Qs9iw6 & Rsyiw6)); +assign Qs9iw6 = (!Gxlov6); +assign Gxlov6 = (No7et6 ? Tt87x6 : Mt87x6); +assign Ys87x6 = (~(Nqh7z6[5] & Ysyiw6)); +assign Wr87x6 = (Ftyiw6 & Au87x6); +assign Au87x6 = (~(Fth7z6[5] & Ttyiw6)); +assign Ftyiw6 = (Je47x6 & Elphw6); +assign Hn87x6 = (Hu87x6 & Ou87x6); +assign Ou87x6 = (~(Kwwnv6 & Fth7z6[5])); +assign Hu87x6 = (Vu87x6 & Cv87x6); +assign Cv87x6 = (~(Ztwnv6 & Kxb7z6[5])); +assign Vu87x6 = (~(Dwwnv6 & Nqh7z6[5])); +assign Rdy7v6 = (~(Jv87x6 & Qv87x6)); +assign Qv87x6 = (Xv87x6 & Ew87x6); +assign Ew87x6 = (~(Ivwnv6 & E3c7z6[4])); +assign Xv87x6 = (Lw87x6 & Sw87x6); +assign Sw87x6 = (~(Lf47x6 & Zw87x6)); +assign Zw87x6 = (~(Gx87x6 & Nx87x6)); +assign Nx87x6 = (Ux87x6 & By87x6); +assign By87x6 = (~(Bh47x6 & Ax57x6)); +assign Ux87x6 = (Iy87x6 & Py87x6); +assign Py87x6 = (~(Wh47x6 & My9ov6)); +assign My9ov6 = (Xgmov6 ? T977x6 : Cb77x6); +assign Iy87x6 = (~(Di47x6 & Tj9iw6)); +assign Tj9iw6 = (No7et6 ? Ax57x6 : Tw57x6); +assign Gx87x6 = (Wy87x6 & Dz87x6); +assign Dz87x6 = (~(Yi47x6 & Cb77x6)); +assign Wy87x6 = (Kz87x6 & Rz87x6); +assign Rz87x6 = (~(Tj47x6 & Tw57x6)); +assign Kz87x6 = (~(Ak47x6 & T977x6)); +assign Lw87x6 = (~(Uuwnv6 & Og0ov6)); +assign Og0ov6 = (~(Yz87x6 & F097x6)); +assign F097x6 = (M097x6 & T097x6); +assign T097x6 = (~(Wryiw6 & Bgjnv6)); +assign M097x6 = (A197x6 & H197x6); +assign H197x6 = (~(Js9iw6 & Rsyiw6)); +assign Js9iw6 = (!Iylov6); +assign Iylov6 = (No7et6 ? V197x6 : O197x6); +assign A197x6 = (~(Nqh7z6[4] & Ysyiw6)); +assign Yz87x6 = (C297x6 & Je47x6); +assign C297x6 = (J297x6 & Q297x6); +assign Q297x6 = (~(Fth7z6[4] & Ttyiw6)); +assign J297x6 = (~(Uyb7z6[4] & Ef47x6)); +assign Jv87x6 = (X297x6 & E397x6); +assign E397x6 = (~(Kwwnv6 & Fth7z6[4])); +assign X297x6 = (L397x6 & S397x6); +assign S397x6 = (~(Ztwnv6 & Kxb7z6[4])); +assign L397x6 = (~(Dwwnv6 & Nqh7z6[4])); +assign Kdy7v6 = (~(Z397x6 & G497x6)); +assign G497x6 = (N497x6 & U497x6); +assign U497x6 = (~(Ivwnv6 & E3c7z6[3])); +assign N497x6 = (B597x6 & I597x6); +assign I597x6 = (~(Lf47x6 & P597x6)); +assign P597x6 = (~(W597x6 & D697x6)); +assign D697x6 = (K697x6 & R697x6); +assign R697x6 = (~(Bh47x6 & Hnlov6)); +assign K697x6 = (Y697x6 & F797x6); +assign F797x6 = (~(Wh47x6 & Htfov6)); +assign Htfov6 = (Xgmov6 ? Fmlov6 : Mmlov6); +assign Y697x6 = (~(Di47x6 & Ph9iw6)); +assign Ph9iw6 = (!Cl9iw6); +assign Cl9iw6 = (No7et6 ? T797x6 : M797x6); +assign W597x6 = (A897x6 & H897x6); +assign H897x6 = (~(Yi47x6 & Mmlov6)); +assign A897x6 = (O897x6 & V897x6); +assign V897x6 = (~(Tj47x6 & Onlov6)); +assign O897x6 = (~(Ak47x6 & Fmlov6)); +assign B597x6 = (~(Uuwnv6 & Pk0ov6)); +assign Pk0ov6 = (~(C997x6 & J997x6)); +assign J997x6 = (Q997x6 & X997x6); +assign X997x6 = (~(Wryiw6 & Rhjnv6)); +assign Q997x6 = (Ea97x6 & La97x6); +assign La97x6 = (~(Cs9iw6 & Rsyiw6)); +assign Cs9iw6 = (!Lwlov6); +assign Lwlov6 = (No7et6 ? Za97x6 : Sa97x6); +assign Ea97x6 = (~(Nqh7z6[3] & Ysyiw6)); +assign C997x6 = (Gb97x6 & Je47x6); +assign Gb97x6 = (Nb97x6 & Ub97x6); +assign Ub97x6 = (~(Fth7z6[3] & Ttyiw6)); +assign Nb97x6 = (~(Uyb7z6[3] & Ef47x6)); +assign Z397x6 = (Bc97x6 & Ic97x6); +assign Ic97x6 = (~(Kwwnv6 & Fth7z6[3])); +assign Bc97x6 = (Pc97x6 & Wc97x6); +assign Wc97x6 = (~(Ztwnv6 & Kxb7z6[3])); +assign Pc97x6 = (~(Dwwnv6 & Nqh7z6[3])); +assign Ddy7v6 = (~(Dd97x6 & Kd97x6)); +assign Kd97x6 = (Rd97x6 & Yd97x6); +assign Yd97x6 = (~(Ivwnv6 & E3c7z6[2])); +assign Rd97x6 = (Fe97x6 & Me97x6); +assign Me97x6 = (~(Lf47x6 & Te97x6)); +assign Te97x6 = (~(Af97x6 & Hf97x6)); +assign Hf97x6 = (Of97x6 & Vf97x6); +assign Vf97x6 = (~(Bh47x6 & Ddfov6)); +assign Of97x6 = (Cg97x6 & Jg97x6); +assign Jg97x6 = (~(Wh47x6 & Q2mov6)); +assign Q2mov6 = (!Xl9iw6); +assign Xl9iw6 = (No7et6 ? Xg97x6 : Qg97x6); +assign Cg97x6 = (~(Di47x6 & Uanov6)); +assign Uanov6 = (!Ql9iw6); +assign Ql9iw6 = (No7et6 ? Lh97x6 : Eh97x6); +assign Af97x6 = (Sh97x6 & Zh97x6); +assign Zh97x6 = (~(Yi47x6 & Icfov6)); +assign Sh97x6 = (Gi97x6 & Ni97x6); +assign Ni97x6 = (~(Tj47x6 & Kdfov6)); +assign Gi97x6 = (~(Ak47x6 & Bcfov6)); +assign Fe97x6 = (~(Uuwnv6 & Qo0ov6)); +assign Qo0ov6 = (~(Ui97x6 & Bj97x6)); +assign Bj97x6 = (Ij97x6 & Pj97x6); +assign Pj97x6 = (~(Wryiw6 & Nmjnv6)); +assign Ij97x6 = (Wj97x6 & Dk97x6); +assign Dk97x6 = (~(Nqh7z6[2] & Kk97x6)); +assign Kk97x6 = (~(Rk97x6 & Yk97x6)); +assign Yk97x6 = (Fl97x6 | Hfliw6); +assign Fl97x6 = (Ml97x6 | Ir7et6); +assign Wj97x6 = (~(Vr9iw6 & Rsyiw6)); +assign Vr9iw6 = (!Wylov6); +assign Wylov6 = (No7et6 ? Qg97x6 : Xg97x6); +assign Ui97x6 = (Tl97x6 & Je47x6); +assign Tl97x6 = (Am97x6 & Hm97x6); +assign Hm97x6 = (~(Fth7z6[2] & Ttyiw6)); +assign Am97x6 = (~(Uyb7z6[2] & Ef47x6)); +assign Dd97x6 = (Om97x6 & Vm97x6); +assign Vm97x6 = (~(Kwwnv6 & Fth7z6[2])); +assign Om97x6 = (Cn97x6 & Jn97x6); +assign Jn97x6 = (~(Ztwnv6 & Kxb7z6[2])); +assign Cn97x6 = (~(Dwwnv6 & Nqh7z6[2])); +assign Wcy7v6 = (~(Qn97x6 & Xn97x6)); +assign Xn97x6 = (Eo97x6 & Lo97x6); +assign Lo97x6 = (~(Ivwnv6 & E3c7z6[1])); +assign Ivwnv6 = (Op67x6 & Mh67x6); +assign Op67x6 = (~(So97x6 | Zo97x6)); +assign So97x6 = (~(Gp97x6 & Np97x6)); +assign Eo97x6 = (Up97x6 & Bq97x6); +assign Bq97x6 = (Z847x6 | Kdmhw6); +assign Kdmhw6 = (Iq97x6 & Pq97x6); +assign Pq97x6 = (Wq97x6 & Dr97x6); +assign Dr97x6 = (~(Or9iw6 & Rsyiw6)); +assign Rsyiw6 = (~(Kr97x6 & Rr97x6)); +assign Rr97x6 = (Yr97x6 & Fs97x6); +assign Fs97x6 = (~(Ms97x6 & Clhhw6)); +assign Yr97x6 = (~(Ts97x6 | Ztaov6)); +assign Kr97x6 = (At97x6 & Ht97x6); +assign Ht97x6 = (~(Ot97x6 & Vt97x6)); +assign Or9iw6 = (!Dzlov6); +assign Dzlov6 = (No7et6 ? Ju97x6 : Cu97x6); +assign Wq97x6 = (Qu97x6 & Xu97x6); +assign Xu97x6 = (~(Nqh7z6[1] & Ysyiw6)); +assign Ysyiw6 = (~(Rk97x6 & Ml97x6)); +assign Ml97x6 = (~(Puphw6 | Lyknv6)); +assign Puphw6 = (!Eminv6); +assign Rk97x6 = (Ev97x6 & Lv97x6); +assign Lv97x6 = (~(Sv97x6 & Vxihw6)); +assign Qu97x6 = (Vd47x6 | J5knv6); +assign Vd47x6 = (!Wryiw6); +assign Wryiw6 = (Zv97x6 & Kb47x6); +assign Zv97x6 = (~(Uebdt6 | R3h7z6[0])); +assign Iq97x6 = (Gw97x6 & Je47x6); +assign Je47x6 = (Nw97x6 & Uw97x6); +assign Nw97x6 = (Bx97x6 & Ix97x6); +assign Bx97x6 = (~(Px97x6 & Dwb7z6[5])); +assign Gw97x6 = (Wx97x6 & Dy97x6); +assign Dy97x6 = (~(Fth7z6[1] & Ttyiw6)); +assign Ttyiw6 = (Ky97x6 | Ry97x6); +assign Ky97x6 = (~(Yy97x6 & Fz97x6)); +assign Fz97x6 = (~(Uebdt6 & Kb47x6)); +assign Kb47x6 = (~(Mz97x6 & Tz97x6)); +assign Tz97x6 = (~(A0a7x6 & Ev97x6)); +assign Ev97x6 = (H0a7x6 & O0a7x6); +assign O0a7x6 = (V0a7x6 & C1a7x6); +assign C1a7x6 = (J1a7x6 & Xxknv6); +assign V0a7x6 = (Q1a7x6 & X1a7x6); +assign H0a7x6 = (E2a7x6 & L2a7x6); +assign L2a7x6 = (~(S2a7x6 & Dwb7z6[3])); +assign E2a7x6 = (Z2a7x6 & G3a7x6); +assign A0a7x6 = (Ywaov6 & Bwvnv6); +assign Mz97x6 = (N3a7x6 & U3a7x6); +assign Yy97x6 = (Twphw6 | Ms97x6); +assign Ms97x6 = (B4a7x6 & I4a7x6); +assign I4a7x6 = (~(P4a7x6 & W4a7x6)); +assign P4a7x6 = (Tnzdt6 & Vxihw6); +assign B4a7x6 = (~(D5a7x6 & K5a7x6)); +assign K5a7x6 = (~(R5a7x6 & Bfo7v6)); +assign R5a7x6 = (~(E9nov6 & Y5a7x6)); +assign Y5a7x6 = (~(F6a7x6 & M6a7x6)); +assign Wx97x6 = (~(Uyb7z6[1] & Ef47x6)); +assign Z847x6 = (~(T6a7x6 & Uuwnv6)); +assign Uuwnv6 = (Ek67x6 & Mh67x6); +assign Ek67x6 = (~(Np97x6 | A7a7x6)); +assign T6a7x6 = (T3cdt6 ? O7a7x6 : H7a7x6); +assign O7a7x6 = (~(V7a7x6 & C8a7x6)); +assign H7a7x6 = (~(J8a7x6 & Pdlhw6)); +assign Up97x6 = (~(Lf47x6 & Q8a7x6)); +assign Q8a7x6 = (~(X8a7x6 & E9a7x6)); +assign E9a7x6 = (L9a7x6 & S9a7x6); +assign S9a7x6 = (~(Ak47x6 & Vv77x6)); +assign Ak47x6 = (~(Z9a7x6 & Kt77x6)); +assign Kt77x6 = (~(A287x6 & H287x6)); +assign Z9a7x6 = (~(Gaa7x6 & Naa7x6)); +assign L9a7x6 = (Uaa7x6 & Bba7x6); +assign Bba7x6 = (~(Bh47x6 & Ob67x6)); +assign Bh47x6 = (~(Iba7x6 | A287x6)); +assign Uaa7x6 = (~(Tj47x6 & Ab67x6)); +assign Tj47x6 = (~(Pba7x6 & Wba7x6)); +assign Wba7x6 = (~(A287x6 & Av77x6)); +assign Pba7x6 = (~(Dca7x6 & Naa7x6)); +assign X8a7x6 = (Kca7x6 & Rca7x6); +assign Rca7x6 = (~(Yi47x6 & Ex77x6)); +assign Yi47x6 = (~(Yca7x6 | A287x6)); +assign A287x6 = (I0c7z6[0] & No7et6); +assign Kca7x6 = (Fda7x6 & Mda7x6); +assign Mda7x6 = (~(Wh47x6 & Od9iw6)); +assign Od9iw6 = (!Jl9iw6); +assign Jl9iw6 = (No7et6 ? Cu97x6 : Ju97x6); +assign Wh47x6 = (~(Naa7x6 | Tda7x6)); +assign Fda7x6 = (~(Di47x6 & H737x6)); +assign H737x6 = (Xgmov6 ? Ab67x6 : Ob67x6); +assign Di47x6 = (~(Naa7x6 | Aea7x6)); +assign Naa7x6 = (!I0c7z6[0]); +assign Lf47x6 = (Nvvnv6 & Mh67x6); +assign Qn97x6 = (Hea7x6 & Oea7x6); +assign Oea7x6 = (~(Kwwnv6 & Fth7z6[1])); +assign Kwwnv6 = (!Mh67x6); +assign Hea7x6 = (Vea7x6 & Cfa7x6); +assign Cfa7x6 = (~(Ztwnv6 & Kxb7z6[1])); +assign Ztwnv6 = (Jq67x6 & Mh67x6); +assign Jq67x6 = (~(Jfa7x6 & Qfa7x6)); +assign Qfa7x6 = (~(Xfa7x6 & Ega7x6)); +assign Jfa7x6 = (Lga7x6 & Sga7x6); +assign Lga7x6 = (~(Zga7x6 & Gp97x6)); +assign Gp97x6 = (!A7a7x6); +assign A7a7x6 = (Gha7x6 & Mulnv6); +assign Zga7x6 = (Zo97x6 & Np97x6); +assign Np97x6 = (~(Nha7x6 & Uha7x6)); +assign Nha7x6 = (Vi7et6 & P2jnv6); +assign Zo97x6 = (~(Bia7x6 & Uha7x6)); +assign Bia7x6 = (T3cdt6 & P2jnv6); +assign Vea7x6 = (~(Dwwnv6 & Nqh7z6[1])); +assign Dwwnv6 = (Qq67x6 & Mh67x6); +assign Mh67x6 = (~(Iia7x6 & Pia7x6)); +assign Pia7x6 = (Wia7x6 & Dja7x6); +assign Dja7x6 = (~(Gr2et6 & Kja7x6)); +assign Kja7x6 = (~(Rja7x6 & Yja7x6)); +assign Yja7x6 = (~(Fka7x6 & Vxihw6)); +assign Fka7x6 = (Mka7x6 & Tka7x6); +assign Mka7x6 = (~(Wbxdt6 & B2jnv6)); +assign Wia7x6 = (~(Ala7x6 & Hla7x6)); +assign Hla7x6 = (Ola7x6 & Tka7x6); +assign Ola7x6 = (~(Vla7x6 & Vi7et6)); +assign Vla7x6 = (Wbxdt6 & Ii9ov6); +assign Ala7x6 = (T3cdt6 & O5a7z6); +assign Iia7x6 = (Cma7x6 & Jma7x6); +assign Jma7x6 = (Qma7x6 | Xma7x6); +assign Qma7x6 = (~(O5a7z6 & Qg2nv6)); +assign Cma7x6 = (~(Ena7x6 & Lna7x6)); +assign Ena7x6 = (Nhonv6 & Sna7x6); +assign Qq67x6 = (~(Ega7x6 | Zna7x6)); +assign Ega7x6 = (~(Goa7x6 & Noa7x6)); +assign Goa7x6 = (Uoa7x6 & Yioov6); +assign Uoa7x6 = (~(Ecc7z6[11] & X4xiw6)); +assign Pcy7v6 = (Bpa7x6 | Ipa7x6); +assign Ipa7x6 = (Ppa7x6 & Wpa7x6); +assign Wpa7x6 = (Dqa7x6 & Lidiw6); +assign Dqa7x6 = (~(O5a7z6 & Kqa7x6)); +assign Kqa7x6 = (~(Fsmov6 & Rqa7x6)); +assign Rqa7x6 = (~(Uha7x6 & Qodiw6)); +assign Uha7x6 = (~(Zzihw6 | Nhonv6)); +assign Ppa7x6 = (X4xiw6 & Vxihw6); +assign Bpa7x6 = (Lidiw6 ? Yqa7x6 : U6i7z6[1]); +assign Lidiw6 = (!Sidiw6); +assign Sidiw6 = (Fra7x6 & Xnmov6); +assign Xnmov6 = (~(Atmov6 & Nhonv6)); +assign Fra7x6 = (~(Gr2et6 & Mra7x6)); +assign Mra7x6 = (~(B3wnv6 & Rja7x6)); +assign B3wnv6 = (!Fsmov6); +assign Yqa7x6 = (Tra7x6 & Asa7x6); +assign Asa7x6 = (~(Hsa7x6 | Ecc7z6[10])); +assign Tra7x6 = (G6xiw6 & X4xiw6); +assign Icy7v6 = (Osa7x6 & Vsa7x6); +assign Vsa7x6 = (~(Cta7x6 | Jta7x6)); +assign Bcy7v6 = (~(Qta7x6 & Xta7x6)); +assign Xta7x6 = (~(Eua7x6 & Zamov6)); +assign Eua7x6 = (Ldo7v6 & Lua7x6); +assign Qta7x6 = (~(Sua7x6 & Xsinv6)); +assign Sua7x6 = (~(Zua7x6 & Gva7x6)); +assign Gva7x6 = (Nva7x6 & Uva7x6); +assign Nva7x6 = (Bwa7x6 & Iwa7x6); +assign Bwa7x6 = (~(Pwa7x6 & Mlmov6)); +assign Pwa7x6 = (~(Wwa7x6 & Dxa7x6)); +assign Dxa7x6 = (Losiw6 | Sfoov6); +assign Zua7x6 = (Kxa7x6 & Wwgov6); +assign Kxa7x6 = (Vmsiw6 & Rxa7x6); +assign Rxa7x6 = (Sfoov6 | Gd77z6); +assign Uby7v6 = (Yxa7x6 & Fya7x6); +assign Fya7x6 = (~(Kihov6 & Mya7x6)); +assign Mya7x6 = (~(Teliw6 & Tya7x6)); +assign Tya7x6 = (~(Aza7x6 & Hza7x6)); +assign Hza7x6 = (~(Oza7x6 & Vza7x6)); +assign Vza7x6 = (~(X0wnv6 & Wqsiw6)); +assign Wqsiw6 = (~(Gpmov6 & C0b7x6)); +assign Oza7x6 = (Qv0ov6 & J0b7x6); +assign Aza7x6 = (~(Q0b7x6 & Tnzdt6)); +assign Q0b7x6 = (X0b7x6 & Lua7x6); +assign Kihov6 = (~(Phhov6 & Mlfov6)); +assign Yxa7x6 = (~(E1b7x6 & Nrsnv6)); +assign Nrsnv6 = (!Ac77z6); +assign Nby7v6 = (Wkb7z6[0] | L1b7x6); +assign L1b7x6 = (Bzi7z6[0] & S1b7x6); +assign S1b7x6 = (~(Z1b7x6 & U42nv6)); +assign Gby7v6 = (~(Jm8iw6 & G2b7x6)); +assign G2b7x6 = (~(Bzi7z6[25] & N2b7x6)); +assign N2b7x6 = (~(U2b7x6 & Iklov6)); +assign Zay7v6 = (Zjb7z6[8] | B3b7x6); +assign B3b7x6 = (Bzi7z6[24] & I3b7x6); +assign I3b7x6 = (~(U2b7x6 & Wf4iw6)); +assign U2b7x6 = (P3b7x6 & Bqi7z6[3]); +assign Say7v6 = (~(W3b7x6 & D4b7x6)); +assign D4b7x6 = (~(Bzi7z6[19] & K4b7x6)); +assign K4b7x6 = (~(R4b7x6 & Mn5iw6)); +assign Lay7v6 = (~(Y4b7x6 & Qc77z6)); +assign Y4b7x6 = (Wwgov6 & F5b7x6); +assign F5b7x6 = (~(Bzi7z6[18] & M5b7x6)); +assign M5b7x6 = (~(R4b7x6 & Jp5iw6)); +assign Eay7v6 = (~(T5b7x6 & A6b7x6)); +assign A6b7x6 = (~(Bzi7z6[17] & H6b7x6)); +assign H6b7x6 = (~(R4b7x6 & Gr5iw6)); +assign X9y7v6 = (~(O6b7x6 & V6b7x6)); +assign V6b7x6 = (~(Bzi7z6[16] & C7b7x6)); +assign C7b7x6 = (~(R4b7x6 & Is5iw6)); +assign R4b7x6 = (P3b7x6 & Bqi7z6[2]); +assign J9y7v6 = (~(Losiw6 & Q7b7x6)); +assign Q7b7x6 = (~(Bzi7z6[12] & X7b7x6)); +assign X7b7x6 = (~(J7b7x6 & Emhov6)); +assign C9y7v6 = (~(Zosiw6 & E8b7x6)); +assign E8b7x6 = (~(Bzi7z6[11] & L8b7x6)); +assign L8b7x6 = (~(J7b7x6 & Dz6iw6)); +assign Zosiw6 = (!Tlb7z6[3]); +assign V8y7v6 = (~(S8b7x6 & Z8b7x6)); +assign Z8b7x6 = (~(Bzi7z6[10] & G9b7x6)); +assign G9b7x6 = (~(J7b7x6 & H17iw6)); +assign O8y7v6 = (~(N9b7x6 & U9b7x6)); +assign U9b7x6 = (~(Bzi7z6[9] & Bab7x6)); +assign Bab7x6 = (~(J7b7x6 & J27iw6)); +assign H8y7v6 = (Tlb7z6[0] | Iab7x6); +assign Iab7x6 = (Bzi7z6[8] & Pab7x6); +assign Pab7x6 = (~(J7b7x6 & U47iw6)); +assign J7b7x6 = (P3b7x6 & Bqi7z6[1]); +assign T7y7v6 = (~(Wab7x6 & Dbb7x6)); +assign Dbb7x6 = (~(Kbb7x6 & R62nv6)); +assign Wab7x6 = (Rbb7x6 & Ybb7x6); +assign Ybb7x6 = (~(Fcb7x6 & Cmm7z6[7])); +assign Rbb7x6 = (~(Mcb7x6 & Wui7z6[7])); +assign M7y7v6 = (~(Tcb7x6 & Adb7x6)); +assign Adb7x6 = (~(Kbb7x6 & B52nv6)); +assign Tcb7x6 = (Hdb7x6 & Odb7x6); +assign Odb7x6 = (~(Fcb7x6 & Cmm7z6[1])); +assign Hdb7x6 = (~(Mcb7x6 & Wui7z6[1])); +assign F7y7v6 = (~(Vdb7x6 & Ceb7x6)); +assign Ceb7x6 = (~(Kbb7x6 & I52nv6)); +assign Vdb7x6 = (Jeb7x6 & Qeb7x6); +assign Qeb7x6 = (~(Fcb7x6 & Yefnv6)); +assign Jeb7x6 = (~(Mcb7x6 & Wui7z6[2])); +assign Y6y7v6 = (~(Xeb7x6 & Efb7x6)); +assign Efb7x6 = (~(Kbb7x6 & P52nv6)); +assign Xeb7x6 = (Lfb7x6 & Sfb7x6); +assign Sfb7x6 = (~(Fcb7x6 & Cmm7z6[3])); +assign Lfb7x6 = (~(Mcb7x6 & Wui7z6[3])); +assign R6y7v6 = (~(Zfb7x6 & Ggb7x6)); +assign Ggb7x6 = (~(Kbb7x6 & W52nv6)); +assign Zfb7x6 = (Ngb7x6 & Ugb7x6); +assign Ugb7x6 = (~(Fcb7x6 & Cmm7z6[4])); +assign Ngb7x6 = (~(Mcb7x6 & Wui7z6[4])); +assign K6y7v6 = (~(Bhb7x6 & Ihb7x6)); +assign Ihb7x6 = (~(Kbb7x6 & D62nv6)); +assign Bhb7x6 = (Phb7x6 & Whb7x6); +assign Whb7x6 = (~(Fcb7x6 & Cmm7z6[5])); +assign Phb7x6 = (~(Mcb7x6 & Wui7z6[5])); +assign D6y7v6 = (~(Dib7x6 & Kib7x6)); +assign Kib7x6 = (~(Kbb7x6 & K62nv6)); +assign Dib7x6 = (Rib7x6 & Yib7x6); +assign Yib7x6 = (~(Fcb7x6 & Cmm7z6[6])); +assign Rib7x6 = (~(Mcb7x6 & Wui7z6[6])); +assign W5y7v6 = (~(Fjb7x6 & Mjb7x6)); +assign Mjb7x6 = (~(Kbb7x6 & U42nv6)); +assign Fjb7x6 = (Tjb7x6 & Akb7x6); +assign Akb7x6 = (~(Fcb7x6 & Cmm7z6[0])); +assign Fcb7x6 = (~(Mcb7x6 | Kbb7x6)); +assign Tjb7x6 = (~(Mcb7x6 & Wui7z6[0])); +assign Mcb7x6 = (~(Kbb7x6 | Hkb7x6)); +assign Kbb7x6 = (~(Okb7x6 | Twaiw6)); +assign P5y7v6 = (~(Vkb7x6 & Clb7x6)); +assign Clb7x6 = (~(Jlb7x6 & Z0iov6)); +assign Vkb7x6 = (Qlb7x6 & Xlb7x6); +assign Xlb7x6 = (~(Emb7x6 & Cmm7z6[15])); +assign Qlb7x6 = (~(Lmb7x6 & Wui7z6[15])); +assign I5y7v6 = (~(Smb7x6 & Zmb7x6)); +assign Zmb7x6 = (~(Jlb7x6 & U47iw6)); +assign Smb7x6 = (Gnb7x6 & Nnb7x6); +assign Nnb7x6 = (~(Emb7x6 & Cmm7z6[8])); +assign Gnb7x6 = (~(Lmb7x6 & Wui7z6[8])); +assign B5y7v6 = (~(Unb7x6 & Bob7x6)); +assign Bob7x6 = (~(Jlb7x6 & J27iw6)); +assign Unb7x6 = (Iob7x6 & Pob7x6); +assign Pob7x6 = (~(Emb7x6 & Cmm7z6[9])); +assign Iob7x6 = (~(Lmb7x6 & Wui7z6[9])); +assign U4y7v6 = (~(Wob7x6 & Dpb7x6)); +assign Dpb7x6 = (~(Jlb7x6 & H17iw6)); +assign Wob7x6 = (Kpb7x6 & Rpb7x6); +assign Rpb7x6 = (~(Emb7x6 & Cmm7z6[10])); +assign Kpb7x6 = (~(Lmb7x6 & Wui7z6[10])); +assign N4y7v6 = (~(Ypb7x6 & Fqb7x6)); +assign Fqb7x6 = (~(Jlb7x6 & Dz6iw6)); +assign Ypb7x6 = (Mqb7x6 & Tqb7x6); +assign Tqb7x6 = (~(Emb7x6 & Cmm7z6[11])); +assign Mqb7x6 = (~(Lmb7x6 & Wui7z6[11])); +assign G4y7v6 = (~(Arb7x6 & Hrb7x6)); +assign Hrb7x6 = (~(Jlb7x6 & Emhov6)); +assign Arb7x6 = (Orb7x6 & Vrb7x6); +assign Vrb7x6 = (~(Emb7x6 & Cmm7z6[12])); +assign Orb7x6 = (~(Lmb7x6 & Wui7z6[12])); +assign Z3y7v6 = (~(Csb7x6 & Jsb7x6)); +assign Jsb7x6 = (~(Jlb7x6 & Guhov6)); +assign Csb7x6 = (Qsb7x6 & Xsb7x6); +assign Xsb7x6 = (~(Emb7x6 & Cmm7z6[13])); +assign Qsb7x6 = (~(Lmb7x6 & Wui7z6[13])); +assign S3y7v6 = (~(Etb7x6 & Ltb7x6)); +assign Ltb7x6 = (~(Jlb7x6 & Bk6iw6)); +assign Etb7x6 = (Stb7x6 & Ztb7x6); +assign Ztb7x6 = (~(Emb7x6 & Cmm7z6[14])); +assign Emb7x6 = (~(Lmb7x6 | Jlb7x6)); +assign Stb7x6 = (~(Lmb7x6 & Wui7z6[14])); +assign Lmb7x6 = (~(Jlb7x6 | Hkb7x6)); +assign Jlb7x6 = (~(Okb7x6 | Nq6iw6)); +assign L3y7v6 = (~(Gub7x6 & Nub7x6)); +assign Nub7x6 = (~(Uub7x6 & Cx4iw6)); +assign Gub7x6 = (Bvb7x6 & Ivb7x6); +assign Ivb7x6 = (~(Pvb7x6 & Cmm7z6[23])); +assign Bvb7x6 = (~(Wvb7x6 & Wui7z6[23])); +assign E3y7v6 = (~(Dwb7x6 & Kwb7x6)); +assign Kwb7x6 = (~(Uub7x6 & Is5iw6)); +assign Dwb7x6 = (Rwb7x6 & Ywb7x6); +assign Ywb7x6 = (~(Pvb7x6 & Cmm7z6[16])); +assign Rwb7x6 = (~(Wvb7x6 & Wui7z6[16])); +assign X2y7v6 = (~(Fxb7x6 & Mxb7x6)); +assign Mxb7x6 = (~(Uub7x6 & Gr5iw6)); +assign Fxb7x6 = (Txb7x6 & Ayb7x6); +assign Ayb7x6 = (~(Pvb7x6 & Cmm7z6[17])); +assign Txb7x6 = (~(Wvb7x6 & Wui7z6[17])); +assign Q2y7v6 = (~(Hyb7x6 & Oyb7x6)); +assign Oyb7x6 = (~(Uub7x6 & Jp5iw6)); +assign Hyb7x6 = (Vyb7x6 & Czb7x6); +assign Czb7x6 = (~(Pvb7x6 & Cmm7z6[18])); +assign Vyb7x6 = (~(Wvb7x6 & Wui7z6[18])); +assign J2y7v6 = (~(Jzb7x6 & Qzb7x6)); +assign Qzb7x6 = (~(Uub7x6 & Mn5iw6)); +assign Jzb7x6 = (Xzb7x6 & E0c7x6); +assign E0c7x6 = (~(Pvb7x6 & Cmm7z6[19])); +assign Xzb7x6 = (~(Wvb7x6 & Wui7z6[19])); +assign C2y7v6 = (~(L0c7x6 & S0c7x6)); +assign S0c7x6 = (~(Uub7x6 & Bl5iw6)); +assign L0c7x6 = (Z0c7x6 & G1c7x6); +assign G1c7x6 = (~(Pvb7x6 & Cmm7z6[20])); +assign Z0c7x6 = (~(Wvb7x6 & Wui7z6[20])); +assign V1y7v6 = (~(N1c7x6 & U1c7x6)); +assign U1c7x6 = (~(Uub7x6 & Ej5iw6)); +assign N1c7x6 = (B2c7x6 & I2c7x6); +assign I2c7x6 = (~(Pvb7x6 & Cmm7z6[21])); +assign B2c7x6 = (~(Wvb7x6 & Wui7z6[21])); +assign O1y7v6 = (~(P2c7x6 & W2c7x6)); +assign W2c7x6 = (~(Uub7x6 & D85iw6)); +assign P2c7x6 = (D3c7x6 & K3c7x6); +assign K3c7x6 = (~(Pvb7x6 & Cmm7z6[22])); +assign Pvb7x6 = (~(Wvb7x6 | Uub7x6)); +assign D3c7x6 = (~(Wvb7x6 & Wui7z6[22])); +assign Wvb7x6 = (~(Uub7x6 | Hkb7x6)); +assign Uub7x6 = (R3c7x6 & Bqi7z6[2]); +assign R3c7x6 = (!Okb7x6); +assign H1y7v6 = (~(Y3c7x6 & F4c7x6)); +assign F4c7x6 = (~(M4c7x6 & X0hov6)); +assign Y3c7x6 = (T4c7x6 & A5c7x6); +assign A5c7x6 = (~(H5c7x6 & Cmm7z6[31])); +assign T4c7x6 = (~(O5c7x6 & Wui7z6[31])); +assign A1y7v6 = (~(V5c7x6 & C6c7x6)); +assign C6c7x6 = (~(M4c7x6 & Wf4iw6)); +assign V5c7x6 = (J6c7x6 & Q6c7x6); +assign Q6c7x6 = (~(H5c7x6 & Cmm7z6[24])); +assign J6c7x6 = (~(O5c7x6 & Wui7z6[24])); +assign T0y7v6 = (~(X6c7x6 & E7c7x6)); +assign E7c7x6 = (~(M4c7x6 & Iklov6)); +assign X6c7x6 = (L7c7x6 & S7c7x6); +assign S7c7x6 = (~(H5c7x6 & Cmm7z6[25])); +assign L7c7x6 = (~(O5c7x6 & Wui7z6[25])); +assign M0y7v6 = (~(Z7c7x6 & G8c7x6)); +assign G8c7x6 = (~(M4c7x6 & E64iw6)); +assign Z7c7x6 = (N8c7x6 & U8c7x6); +assign U8c7x6 = (~(H5c7x6 & Cmm7z6[26])); +assign N8c7x6 = (~(O5c7x6 & Wui7z6[26])); +assign F0y7v6 = (~(B9c7x6 & I9c7x6)); +assign I9c7x6 = (~(M4c7x6 & H44iw6)); +assign B9c7x6 = (P9c7x6 & W9c7x6); +assign W9c7x6 = (~(H5c7x6 & Cmm7z6[27])); +assign P9c7x6 = (~(O5c7x6 & Wui7z6[27])); +assign Yzx7v6 = (~(Dac7x6 & Kac7x6)); +assign Kac7x6 = (~(M4c7x6 & W14iw6)); +assign Dac7x6 = (Rac7x6 & Yac7x6); +assign Yac7x6 = (~(H5c7x6 & Cmm7z6[28])); +assign Rac7x6 = (~(O5c7x6 & Wui7z6[28])); +assign Rzx7v6 = (~(Fbc7x6 & Mbc7x6)); +assign Mbc7x6 = (~(M4c7x6 & Zz3iw6)); +assign Fbc7x6 = (Tbc7x6 & Acc7x6); +assign Acc7x6 = (~(H5c7x6 & Cmm7z6[29])); +assign Tbc7x6 = (~(O5c7x6 & Wui7z6[29])); +assign Kzx7v6 = (~(Hcc7x6 & Occ7x6)); +assign Occ7x6 = (~(M4c7x6 & Ro3iw6)); +assign Hcc7x6 = (Vcc7x6 & Cdc7x6); +assign Cdc7x6 = (~(H5c7x6 & Cmm7z6[30])); +assign H5c7x6 = (~(O5c7x6 | M4c7x6)); +assign Vcc7x6 = (~(O5c7x6 & Wui7z6[30])); +assign O5c7x6 = (~(Hkb7x6 | M4c7x6)); +assign M4c7x6 = (~(Okb7x6 | Dv3iw6)); +assign Okb7x6 = (~(Jdc7x6 & Qdc7x6)); +assign Qdc7x6 = (Xdc7x6 & G92iw6); +assign Xdc7x6 = (~(Toi7z6[3] & Toi7z6[2])); +assign Jdc7x6 = (Eec7x6 & Toi7z6[4]); +assign Hkb7x6 = (Lec7x6 & Sec7x6); +assign Sec7x6 = (~(Zec7x6 | A8y7v6)); +assign A8y7v6 = (~(M697z6 & Gfc7x6)); +assign Gfc7x6 = (~(Bzi7z6[7] & Nfc7x6)); +assign Nfc7x6 = (~(P3b7x6 & O87iw6)); +assign Zec7x6 = (Q9y7v6 | Ihnet6); +assign Q9y7v6 = (~(N9b7x6 & Ufc7x6)); +assign Ufc7x6 = (~(Bzi7z6[15] & Bgc7x6)); +assign Bgc7x6 = (~(P3b7x6 & Hv5iw6)); +assign N9b7x6 = (!Tlb7z6[1]); +assign Lec7x6 = (Vfmov6 & Qvkiw6); +assign Dzx7v6 = (~(Gd77z6 & Igc7x6)); +assign Igc7x6 = (~(Bzi7z6[4] & Pgc7x6)); +assign Pgc7x6 = (~(Z1b7x6 & W52nv6)); +assign Wyx7v6 = (~(Sosiw6 & Wgc7x6)); +assign Wgc7x6 = (~(Bzi7z6[3] & Dhc7x6)); +assign Dhc7x6 = (~(Z1b7x6 & P52nv6)); +assign Pyx7v6 = (~(M697z6 & Khc7x6)); +assign Khc7x6 = (~(Bzi7z6[1] & Rhc7x6)); +assign Rhc7x6 = (~(Z1b7x6 & B52nv6)); +assign Z1b7x6 = (P3b7x6 & Bqi7z6[0]); +assign P3b7x6 = (Yhc7x6 & T68iw6); +assign Iyx7v6 = (~(Fic7x6 & Mic7x6)); +assign Mic7x6 = (~(Tic7x6 & Snvnv6)); +assign Snvnv6 = (B8cdt6 & N3onv6); +assign Tic7x6 = (Ajc7x6 & Hjc7x6); +assign Hjc7x6 = (~(Tltov6 & Ojc7x6)); +assign Ojc7x6 = (~(G5sov6 & Xeinv6)); +assign Tltov6 = (Vjc7x6 & Ckc7x6); +assign Ckc7x6 = (~(Auehw6 & Q8onv6)); +assign Vjc7x6 = (Jkc7x6 & Yvihw6); +assign Yvihw6 = (!Qkc7x6); +assign Ajc7x6 = (~(J2cdt6 & Ga3nv6)); +assign Fic7x6 = (~(Bqbdt6 & Dcnov6)); +assign Byx7v6 = (Pb9ov6 ? D6c7z6[4] : Xkc7x6); +assign Xkc7x6 = (~(Elc7x6 & Llc7x6)); +assign Llc7x6 = (Slc7x6 & Zlc7x6); +assign Zlc7x6 = (~(Yc9ov6 & T977x6)); +assign Slc7x6 = (~(Md9ov6 & Cb77x6)); +assign Elc7x6 = (Gmc7x6 & Nmc7x6); +assign Nmc7x6 = (~(Oe9ov6 & Ax57x6)); +assign Gmc7x6 = (~(Cf9ov6 & Tw57x6)); +assign Uxx7v6 = (Pb9ov6 ? D6c7z6[1] : Umc7x6); +assign Pb9ov6 = (~(J7l8v6 | Cubdt6)); +assign J7l8v6 = (Bnc7x6 & Inc7x6); +assign Inc7x6 = (Pnc7x6 & Wnc7x6); +assign Wnc7x6 = (Doc7x6 & Koc7x6); +assign Koc7x6 = (Hp67x6 & Bfo7v6); +assign Doc7x6 = (Nm57x6 & Dh57x6); +assign Pnc7x6 = (Roc7x6 & C477x6); +assign Roc7x6 = (Qr57x6 & Cx67x6); +assign Bnc7x6 = (Yoc7x6 & Fpc7x6); +assign Fpc7x6 = (Mpc7x6 & Tpc7x6); +assign Tpc7x6 = (~(Aqc7x6 & Hqc7x6)); +assign Hqc7x6 = (~(Oqc7x6 & Vqc7x6)); +assign Vqc7x6 = (Crc7x6 & Hnlov6); +assign Crc7x6 = (Ob67x6 & Ve9ov6); +assign Oqc7x6 = (Jrc7x6 & Ddfov6); +assign Jrc7x6 = (~(Qrc7x6 & Xrc7x6)); +assign Xrc7x6 = (~(Esc7x6 & Lsc7x6)); +assign Lsc7x6 = (Yc9ov6 & Ssc7x6); +assign Esc7x6 = (Zsc7x6 & Gtc7x6); +assign Qrc7x6 = (~(Ntc7x6 & Utc7x6)); +assign Utc7x6 = (~(Buc7x6 & Iuc7x6)); +assign Iuc7x6 = (~(Ssc7x6 & Cf9ov6)); +assign Buc7x6 = (~(Gtc7x6 & Md9ov6)); +assign Aqc7x6 = (~(Puc7x6 & Wuc7x6)); +assign Wuc7x6 = (Oe9ov6 & Ssc7x6); +assign Ssc7x6 = (Dvc7x6 & Kvc7x6); +assign Kvc7x6 = (Td9ov6 & Icfov6); +assign Dvc7x6 = (Mmlov6 & Ex77x6); +assign Puc7x6 = (Ntc7x6 & Gtc7x6); +assign Gtc7x6 = (Rvc7x6 & Yvc7x6); +assign Yvc7x6 = (Ab67x6 & Jf9ov6); +assign Rvc7x6 = (Kdfov6 & Onlov6); +assign Ntc7x6 = (Fwc7x6 & Mwc7x6); +assign Mwc7x6 = (Twc7x6 & Vv77x6); +assign Twc7x6 = (Fd9ov6 & Bcfov6); +assign Fwc7x6 = (Zsc7x6 & Fmlov6); +assign Zsc7x6 = (Axc7x6 & Hxc7x6); +assign Hxc7x6 = (Oxc7x6 & Vxc7x6); +assign Vxc7x6 = (Kn67x6 & Rh57x6); +assign Oxc7x6 = (Um57x6 & Tv67x6); +assign Axc7x6 = (Cyc7x6 & Jyc7x6); +assign Jyc7x6 = (Xr57x6 & T277x6); +assign Cyc7x6 = (Ax57x6 & T977x6); +assign Mpc7x6 = (Cb77x6 & Tw57x6); +assign Yoc7x6 = (Qyc7x6 & Bqbdt6); +assign Qyc7x6 = (O5a7z6 & Xyc7x6); +assign Xyc7x6 = (~(Ezc7x6 & Lzc7x6)); +assign Lzc7x6 = (Szc7x6 | Twphw6); +assign Ezc7x6 = (Zzc7x6 & G0d7x6); +assign G0d7x6 = (~(N0d7x6 & J8a7x6)); +assign N0d7x6 = (Ntg7z6[1] & U0d7x6); +assign U0d7x6 = (~(B1d7x6 & I1d7x6)); +assign B1d7x6 = (~(P1d7x6 & W1d7x6)); +assign W1d7x6 = (~(I0c7z6[0] | Zdxdt6)); +assign P1d7x6 = (I0c7z6[1] & D2d7x6); +assign D2d7x6 = (~(K2d7x6 & I3wnv6)); +assign Zzc7x6 = (~(R2d7x6 & V7a7x6)); +assign V7a7x6 = (Y2d7x6 & Pxg7z6[3]); +assign Y2d7x6 = (Pxg7z6[2] & Pxg7z6[0]); +assign R2d7x6 = (Ot97x6 & Pxg7z6[1]); +assign Umc7x6 = (~(F3d7x6 & M3d7x6)); +assign M3d7x6 = (T3d7x6 & A4d7x6); +assign A4d7x6 = (~(Yc9ov6 & Vv77x6)); +assign T3d7x6 = (~(Md9ov6 & Ex77x6)); +assign F3d7x6 = (H4d7x6 & O4d7x6); +assign O4d7x6 = (~(Oe9ov6 & Ob67x6)); +assign H4d7x6 = (~(Cf9ov6 & Ab67x6)); +assign Nxx7v6 = (V4d7x6 | C5d7x6); +assign V4d7x6 = (J5d7x6 | Q5d7x6); +assign J5d7x6 = (X5d7x6 & Uyb7z6[0]); +assign Gxx7v6 = (~(E6d7x6 & L6d7x6)); +assign L6d7x6 = (~(X5d7x6 & Uyb7z6[1])); +assign Zwx7v6 = (~(S6d7x6 & Ad9iw6)); +assign S6d7x6 = (Z6d7x6 & G7d7x6); +assign G7d7x6 = (~(N7d7x6 & Q5d7x6)); +assign N7d7x6 = (J2cdt6 & Jjbdt6); +assign Z6d7x6 = (~(X5d7x6 & Uyb7z6[2])); +assign Swx7v6 = (~(U7d7x6 & Qolov6)); +assign U7d7x6 = (B8d7x6 & I8d7x6); +assign I8d7x6 = (~(Q5d7x6 & J2cdt6)); +assign B8d7x6 = (~(X5d7x6 & Uyb7z6[3])); +assign Lwx7v6 = (~(P8d7x6 & W8d7x6)); +assign W8d7x6 = (~(Q5d7x6 | D9d7x6)); +assign Q5d7x6 = (~(K9d7x6 | X5d7x6)); +assign P8d7x6 = (R9d7x6 & Y9d7x6); +assign Y9d7x6 = (~(X5d7x6 & Uyb7z6[4])); +assign X5d7x6 = (Q0wnv6 & Kkmhw6); +assign R9d7x6 = (~(D6c7z6[4] & Cubdt6)); +assign Xvx7v6 = (Ad2iw6 & Bu4ov6); +assign Qvx7v6 = (Ut4ov6 ? Fad7x6 : Zas7z6[0]); +assign Jvx7v6 = (Ut4ov6 ? A62iw6 : Zfs7z6[11]); +assign Cvx7v6 = (Ut4ov6 ? O62iw6 : Zfs7z6[10]); +assign Vux7v6 = (Ut4ov6 ? V62iw6 : Zfs7z6[9]); +assign Oux7v6 = (Ut4ov6 ? C72iw6 : Zfs7z6[8]); +assign Hux7v6 = (Ut4ov6 ? J72iw6 : Zfs7z6[7]); +assign Aux7v6 = (Ut4ov6 ? Q72iw6 : Mm27v6); +assign Q72iw6 = (~(Mad7x6 & Tad7x6)); +assign Tad7x6 = (~(Fvb7z6[6] & M52iw6)); +assign Mad7x6 = (~(Se3iw6 & Cmm7z6[6])); +assign Ttx7v6 = (Ut4ov6 ? X72iw6 : Tn27v6); +assign Ut4ov6 = (!Abd7x6); +assign X72iw6 = (~(Hbd7x6 & Obd7x6)); +assign Obd7x6 = (~(Fvb7z6[5] & M52iw6)); +assign Hbd7x6 = (~(Se3iw6 & Cmm7z6[5])); +assign Mtx7v6 = (Abd7x6 ? Ap27v6 : E82iw6); +assign E82iw6 = (~(Vbd7x6 & Ccd7x6)); +assign Ccd7x6 = (~(Fvb7z6[4] & M52iw6)); +assign Vbd7x6 = (~(Se3iw6 & Cmm7z6[4])); +assign Ftx7v6 = (Abd7x6 ? Hq27v6 : L82iw6); +assign L82iw6 = (~(Jcd7x6 & Qcd7x6)); +assign Qcd7x6 = (~(Fvb7z6[3] & M52iw6)); +assign Jcd7x6 = (~(Se3iw6 & Cmm7z6[3])); +assign Ysx7v6 = (Abd7x6 ? Or27v6 : S82iw6); +assign S82iw6 = (~(Xcd7x6 & Edd7x6)); +assign Edd7x6 = (~(Se3iw6 & Yefnv6)); +assign Xcd7x6 = (~(Fvb7z6[2] & M52iw6)); +assign Wrx7v6 = (~(Ldd7x6 & Sdd7x6)); +assign Sdd7x6 = (~(Iqeiw6 & Zdd7x6)); +assign Zdd7x6 = (~(Ged7x6 & Ned7x6)); +assign Ned7x6 = (~(Rsx7v6 | Ewx7v6)); +assign Ewx7v6 = (Ued7x6 & Ujlov6); +assign Ujlov6 = (~(Bfd7x6 & Ifd7x6)); +assign Ifd7x6 = (Pfd7x6 | Wfd7x6); +assign Rsx7v6 = (Ued7x6 & Pa2iw6); +assign Pa2iw6 = (~(Bfd7x6 & Dgd7x6)); +assign Dgd7x6 = (Kgd7x6 | G83iw6); +assign Ged7x6 = (~(Dsx7v6 | Ksx7v6)); +assign Ksx7v6 = (Ued7x6 & Kb2iw6); +assign Kb2iw6 = (~(Bfd7x6 & Rgd7x6)); +assign Rgd7x6 = (Wfd7x6 | G83iw6); +assign G83iw6 = (!Pfd7x6); +assign Wfd7x6 = (Ygd7x6 & Fhd7x6); +assign Fhd7x6 = (~(N83iw6 & Fad7x6)); +assign Dsx7v6 = (Ued7x6 & Fc2iw6); +assign Fc2iw6 = (~(Bfd7x6 & Mhd7x6)); +assign Mhd7x6 = (Pfd7x6 | Kgd7x6); +assign Kgd7x6 = (Ygd7x6 & Thd7x6); +assign Thd7x6 = (Aid7x6 | N83iw6); +assign N83iw6 = (Hid7x6 & Oid7x6); +assign Oid7x6 = (~(M52iw6 & Mbqnv6)); +assign Hid7x6 = (~(Se3iw6 & Cmm7z6[0])); +assign Pfd7x6 = (~(Vid7x6 & Cjd7x6)); +assign Cjd7x6 = (~(M52iw6 & Stpnv6)); +assign Vid7x6 = (~(Se3iw6 & Cmm7z6[1])); +assign Ued7x6 = (~(Jjd7x6 | Ad2iw6)); +assign Ad2iw6 = (!D42iw6); +assign D42iw6 = (~(Qjd7x6 & Xjd7x6)); +assign Xjd7x6 = (~(Se3iw6 & Lhmov6)); +assign Qjd7x6 = (~(L3bdt6 & M52iw6)); +assign Iqeiw6 = (Ekd7x6 & Lkd7x6); +assign Lkd7x6 = (~(Skd7x6 | C72iw6)); +assign C72iw6 = (~(Zkd7x6 & Gld7x6)); +assign Gld7x6 = (~(Fvb7z6[8] & M52iw6)); +assign Zkd7x6 = (~(Se3iw6 & Cmm7z6[8])); +assign Skd7x6 = (J72iw6 | V62iw6); +assign V62iw6 = (~(Nld7x6 & Uld7x6)); +assign Uld7x6 = (~(Fvb7z6[9] & M52iw6)); +assign Nld7x6 = (~(Se3iw6 & Cmm7z6[9])); +assign J72iw6 = (~(Bmd7x6 & Imd7x6)); +assign Imd7x6 = (~(Fvb7z6[7] & M52iw6)); +assign Bmd7x6 = (~(Se3iw6 & Cmm7z6[7])); +assign Ekd7x6 = (~(O62iw6 | A62iw6)); +assign A62iw6 = (~(Pmd7x6 & Wmd7x6)); +assign Wmd7x6 = (~(Fvb7z6[11] & M52iw6)); +assign Pmd7x6 = (~(Se3iw6 & Cmm7z6[11])); +assign O62iw6 = (~(Dnd7x6 & Knd7x6)); +assign Knd7x6 = (~(Fvb7z6[10] & M52iw6)); +assign Dnd7x6 = (~(Se3iw6 & Cmm7z6[10])); +assign Ldd7x6 = (~(Ci27v6 & Abd7x6)); +assign Prx7v6 = (Abd7x6 ? Zas7z6[1] : Rnd7x6); +assign Abd7x6 = (Ynd7x6 & Fod7x6); +assign Fod7x6 = (~(Mod7x6 | Ihs7z6[1])); +assign Mod7x6 = (Ihs7z6[2] | Ihs7z6[3]); +assign Ynd7x6 = (Tod7x6 & Jjd7x6); +assign Jjd7x6 = (!Bu4ov6); +assign Bu4ov6 = (Apd7x6 & Ofeiw6); +assign Ofeiw6 = (Hpd7x6 & Opd7x6); +assign Hpd7x6 = (Rkeiw6 & Oteiw6); +assign Rkeiw6 = (!Jrhiw6); +assign Apd7x6 = (~(C63iw6 | Kygnv6)); +assign Tod7x6 = (Cch7v6 & Vpd7x6); +assign Rnd7x6 = (~(Bfd7x6 & Ygd7x6)); +assign Ygd7x6 = (~(Cqd7x6 & Jqd7x6)); +assign Cqd7x6 = (Qqd7x6 & Aid7x6); +assign Bfd7x6 = (Aid7x6 | Xqd7x6); +assign Xqd7x6 = (Jqd7x6 & Qqd7x6); +assign Qqd7x6 = (~(Se3iw6 & Anehw6)); +assign Jqd7x6 = (~(M52iw6 & Hub7z6[1])); +assign Aid7x6 = (!Fad7x6); +assign Fad7x6 = (Erd7x6 & Lrd7x6); +assign Lrd7x6 = (~(M52iw6 & Hub7z6[0])); +assign Erd7x6 = (~(Se3iw6 & Wbhnv6)); +assign Irx7v6 = (~(Srd7x6 & Zrd7x6)); +assign Zrd7x6 = (~(Dpwnv6 & Itb7z6[1])); +assign Srd7x6 = (Gsd7x6 & Nsd7x6); +assign Nsd7x6 = (~(Usd7x6 & Fqwnv6)); +assign Usd7x6 = (~(Btd7x6 & Itd7x6)); +assign Itd7x6 = (Ptd7x6 & Wtd7x6); +assign Wtd7x6 = (Wawnv6 | Dud7x6); +assign Ptd7x6 = (~(Dtm7z6[3] & Kud7x6)); +assign Btd7x6 = (Rud7x6 & Yud7x6); +assign Yud7x6 = (~(Dtm7z6[0] & HRDATAD[1])); +assign Rud7x6 = (~(Dtm7z6[1] & HRDATAS[1])); +assign Gsd7x6 = (~(Qvzhw6 & Fvd7x6)); +assign Qvzhw6 = (!Jvzhw6); +assign Jvzhw6 = (~(Dbymz6[0] & Cbyhw6)); +assign Cbyhw6 = (JTAGNSW ? Aixmz6[1] : Ulxmz6[1]); +assign Brx7v6 = (~(Mvd7x6 & Tvd7x6)); +assign Tvd7x6 = (~(Dpwnv6 & Itb7z6[2])); +assign Mvd7x6 = (Awd7x6 & Hwd7x6); +assign Hwd7x6 = (~(Owd7x6 & Fqwnv6)); +assign Owd7x6 = (~(Vwd7x6 & Cxd7x6)); +assign Cxd7x6 = (Jxd7x6 & Qxd7x6); +assign Qxd7x6 = (Wawnv6 | Xxd7x6); +assign Jxd7x6 = (~(Dtm7z6[3] & Eyd7x6)); +assign Vwd7x6 = (Lyd7x6 & Syd7x6); +assign Syd7x6 = (~(Dtm7z6[0] & HRDATAD[2])); +assign Lyd7x6 = (~(Dtm7z6[1] & HRDATAS[2])); +assign Awd7x6 = (~(Fcwnv6 & P7yhw6)); +assign P7yhw6 = (Dz1nv6 ? Ulxmz6[2] : Aixmz6[2]); +assign Uqx7v6 = (~(Zyd7x6 & Gzd7x6)); +assign Gzd7x6 = (~(Dpwnv6 & Itb7z6[3])); +assign Zyd7x6 = (Nzd7x6 & Uzd7x6); +assign Uzd7x6 = (~(B0e7x6 & Fqwnv6)); +assign B0e7x6 = (~(I0e7x6 & P0e7x6)); +assign P0e7x6 = (W0e7x6 & D1e7x6); +assign D1e7x6 = (Wawnv6 | K1e7x6); +assign W0e7x6 = (~(Dtm7z6[3] & R1e7x6)); +assign I0e7x6 = (Y1e7x6 & F2e7x6); +assign F2e7x6 = (~(Dtm7z6[0] & HRDATAD[3])); +assign Y1e7x6 = (~(Dtm7z6[1] & HRDATAS[3])); +assign Nzd7x6 = (~(Fcwnv6 & Z5yhw6)); +assign Z5yhw6 = (Dz1nv6 ? Ulxmz6[3] : Aixmz6[3]); +assign Nqx7v6 = (~(M2e7x6 & T2e7x6)); +assign T2e7x6 = (~(Dpwnv6 & Itb7z6[4])); +assign M2e7x6 = (A3e7x6 & H3e7x6); +assign H3e7x6 = (~(O3e7x6 & Fqwnv6)); +assign O3e7x6 = (~(V3e7x6 & C4e7x6)); +assign C4e7x6 = (J4e7x6 & Q4e7x6); +assign Q4e7x6 = (Wawnv6 | X4e7x6); +assign J4e7x6 = (~(Dtm7z6[3] & E5e7x6)); +assign V3e7x6 = (L5e7x6 & S5e7x6); +assign S5e7x6 = (~(Dtm7z6[0] & HRDATAD[4])); +assign L5e7x6 = (~(Dtm7z6[1] & HRDATAS[4])); +assign A3e7x6 = (~(Fcwnv6 & Q20iw6)); +assign Q20iw6 = (JTAGNSW ? Aixmz6[4] : Ulxmz6[4]); +assign Gqx7v6 = (~(Z5e7x6 & G6e7x6)); +assign G6e7x6 = (~(Dpwnv6 & Itb7z6[5])); +assign Z5e7x6 = (N6e7x6 & U6e7x6); +assign U6e7x6 = (~(B7e7x6 & Fqwnv6)); +assign B7e7x6 = (~(I7e7x6 & P7e7x6)); +assign P7e7x6 = (W7e7x6 & D8e7x6); +assign D8e7x6 = (Wawnv6 | K8e7x6); +assign W7e7x6 = (~(Dtm7z6[3] & R8e7x6)); +assign I7e7x6 = (Y8e7x6 & F9e7x6); +assign F9e7x6 = (~(Dtm7z6[0] & HRDATAD[5])); +assign Y8e7x6 = (~(Dtm7z6[1] & HRDATAS[5])); +assign N6e7x6 = (~(Rszhw6 & Fvd7x6)); +assign Rszhw6 = (Dbymz6[0] & L5yhw6); +assign L5yhw6 = (JTAGNSW ? Aixmz6[5] : Ulxmz6[5]); +assign Zpx7v6 = (~(M9e7x6 & T9e7x6)); +assign T9e7x6 = (~(Dpwnv6 & Itb7z6[6])); +assign M9e7x6 = (Aae7x6 & Hae7x6); +assign Hae7x6 = (~(Oae7x6 & Fqwnv6)); +assign Oae7x6 = (~(Vae7x6 & Cbe7x6)); +assign Cbe7x6 = (Jbe7x6 & Qbe7x6); +assign Qbe7x6 = (Wawnv6 | Xbe7x6); +assign Jbe7x6 = (~(Dtm7z6[3] & Ece7x6)); +assign Vae7x6 = (Lce7x6 & Sce7x6); +assign Sce7x6 = (~(Dtm7z6[0] & HRDATAD[6])); +assign Lce7x6 = (~(Dtm7z6[1] & HRDATAS[6])); +assign Aae7x6 = (~(Fcwnv6 & F9yhw6)); +assign F9yhw6 = (Dz1nv6 ? Ulxmz6[6] : Aixmz6[6]); +assign Spx7v6 = (~(Zce7x6 & Gde7x6)); +assign Gde7x6 = (~(Fcwnv6 & B7yhw6)); +assign B7yhw6 = (Dz1nv6 ? Ulxmz6[7] : Aixmz6[7]); +assign Zce7x6 = (Nde7x6 & Ude7x6); +assign Ude7x6 = (~(Bee7x6 & Fqwnv6)); +assign Bee7x6 = (~(Iee7x6 & Pee7x6)); +assign Pee7x6 = (Wee7x6 & Dfe7x6); +assign Dfe7x6 = (Wawnv6 | Kfe7x6); +assign Wee7x6 = (~(Dtm7z6[3] & Rfe7x6)); +assign Iee7x6 = (Yfe7x6 & Fge7x6); +assign Fge7x6 = (~(Dtm7z6[0] & HRDATAD[7])); +assign Yfe7x6 = (~(Dtm7z6[1] & HRDATAS[7])); +assign Nde7x6 = (~(Dpwnv6 & Itb7z6[7])); +assign Dpwnv6 = (~(Fqwnv6 | Fvd7x6)); +assign Fqwnv6 = (~(Mge7x6 & Tge7x6)); +assign Tge7x6 = (~(Ahe7x6 & Hhe7x6)); +assign Hhe7x6 = (~(Ohe7x6 & Vhe7x6)); +assign Vhe7x6 = (~(Cie7x6 & Jie7x6)); +assign Cie7x6 = (Qie7x6 & Xie7x6); +assign Mge7x6 = (Eje7x6 | Xie7x6); +assign Lpx7v6 = (~(Lje7x6 & Sje7x6)); +assign Sje7x6 = (~(Zje7x6 & Itb7z6[9])); +assign Lje7x6 = (Gke7x6 & Nke7x6); +assign Nke7x6 = (~(Uke7x6 & Ble7x6)); +assign Ble7x6 = (~(Ile7x6 & Ple7x6)); +assign Ple7x6 = (Wle7x6 & Dme7x6); +assign Dme7x6 = (Wawnv6 | Kme7x6); +assign Wle7x6 = (~(Dtm7z6[3] & Rme7x6)); +assign Ile7x6 = (Yme7x6 & Fne7x6); +assign Fne7x6 = (~(Dtm7z6[0] & HRDATAD[9])); +assign Yme7x6 = (~(Dtm7z6[1] & HRDATAS[9])); +assign Gke7x6 = (~(Fcwnv6 & R0zhw6)); +assign R0zhw6 = (Dz1nv6 ? Ulxmz6[9] : Aixmz6[9]); +assign Epx7v6 = (~(Mne7x6 & Tne7x6)); +assign Tne7x6 = (~(Zje7x6 & Itb7z6[10])); +assign Mne7x6 = (Aoe7x6 & Hoe7x6); +assign Hoe7x6 = (~(Uke7x6 & Ooe7x6)); +assign Ooe7x6 = (~(Voe7x6 & Cpe7x6)); +assign Cpe7x6 = (Jpe7x6 & Qpe7x6); +assign Qpe7x6 = (Wawnv6 | Xpe7x6); +assign Jpe7x6 = (~(Dtm7z6[3] & Eqe7x6)); +assign Voe7x6 = (Lqe7x6 & Sqe7x6); +assign Sqe7x6 = (~(Dtm7z6[0] & HRDATAD[10])); +assign Lqe7x6 = (~(Dtm7z6[1] & HRDATAS[10])); +assign Aoe7x6 = (~(Fcwnv6 & Lxyhw6)); +assign Lxyhw6 = (Dz1nv6 ? Ulxmz6[10] : Aixmz6[10]); +assign Xox7v6 = (~(Zqe7x6 & Gre7x6)); +assign Gre7x6 = (~(Zje7x6 & Itb7z6[11])); +assign Zqe7x6 = (Nre7x6 & Ure7x6); +assign Ure7x6 = (~(Uke7x6 & Bse7x6)); +assign Bse7x6 = (~(Ise7x6 & Pse7x6)); +assign Pse7x6 = (Wse7x6 & Dte7x6); +assign Dte7x6 = (Wawnv6 | Kte7x6); +assign Wse7x6 = (~(Dtm7z6[3] & Rte7x6)); +assign Ise7x6 = (Yte7x6 & Fue7x6); +assign Fue7x6 = (~(Dtm7z6[0] & HRDATAD[11])); +assign Yte7x6 = (~(Dtm7z6[1] & HRDATAS[11])); +assign Nre7x6 = (~(Fcwnv6 & Vvyhw6)); +assign Vvyhw6 = (Dz1nv6 ? Ulxmz6[11] : Aixmz6[11]); +assign Qox7v6 = (~(Mue7x6 & Tue7x6)); +assign Tue7x6 = (~(Zje7x6 & Itb7z6[12])); +assign Mue7x6 = (Ave7x6 & Hve7x6); +assign Hve7x6 = (~(Uke7x6 & Ove7x6)); +assign Ove7x6 = (~(Vve7x6 & Cwe7x6)); +assign Cwe7x6 = (Jwe7x6 & Qwe7x6); +assign Qwe7x6 = (Wawnv6 | Xwe7x6); +assign Jwe7x6 = (~(Dtm7z6[3] & Exe7x6)); +assign Vve7x6 = (Lxe7x6 & Sxe7x6); +assign Sxe7x6 = (~(Dtm7z6[0] & HRDATAD[12])); +assign Lxe7x6 = (~(Dtm7z6[1] & HRDATAS[12])); +assign Ave7x6 = (~(Fcwnv6 & Bzyhw6)); +assign Bzyhw6 = (JTAGNSW ? Aixmz6[12] : Ulxmz6[12]); +assign Jox7v6 = (~(Zxe7x6 & Gye7x6)); +assign Gye7x6 = (~(Zje7x6 & Itb7z6[13])); +assign Zxe7x6 = (Nye7x6 & Uye7x6); +assign Uye7x6 = (~(Uke7x6 & Bze7x6)); +assign Bze7x6 = (~(Ize7x6 & Pze7x6)); +assign Pze7x6 = (Wze7x6 & D0f7x6); +assign D0f7x6 = (Wawnv6 | K0f7x6); +assign Wze7x6 = (~(Dtm7z6[3] & R0f7x6)); +assign Ize7x6 = (Y0f7x6 & F1f7x6); +assign F1f7x6 = (~(Dtm7z6[0] & HRDATAD[13])); +assign Y0f7x6 = (~(Dtm7z6[1] & HRDATAS[13])); +assign Nye7x6 = (~(Fcwnv6 & Hvyhw6)); +assign Hvyhw6 = (JTAGNSW ? Aixmz6[13] : Ulxmz6[13]); +assign Cox7v6 = (~(M1f7x6 & T1f7x6)); +assign T1f7x6 = (~(Zje7x6 & Itb7z6[14])); +assign M1f7x6 = (A2f7x6 & H2f7x6); +assign H2f7x6 = (~(Uke7x6 & O2f7x6)); +assign O2f7x6 = (~(V2f7x6 & C3f7x6)); +assign C3f7x6 = (J3f7x6 & Q3f7x6); +assign Q3f7x6 = (Wawnv6 | X3f7x6); +assign J3f7x6 = (~(Dtm7z6[3] & E4f7x6)); +assign V2f7x6 = (L4f7x6 & S4f7x6); +assign S4f7x6 = (~(Dtm7z6[0] & HRDATAD[14])); +assign L4f7x6 = (~(Dtm7z6[1] & HRDATAS[14])); +assign A2f7x6 = (~(Fcwnv6 & Pzyhw6)); +assign Pzyhw6 = (JTAGNSW ? Aixmz6[14] : Ulxmz6[14]); +assign Vnx7v6 = (~(Z4f7x6 & G5f7x6)); +assign G5f7x6 = (~(Zje7x6 & Itb7z6[15])); +assign Z4f7x6 = (N5f7x6 & U5f7x6); +assign U5f7x6 = (~(Uke7x6 & B6f7x6)); +assign B6f7x6 = (~(I6f7x6 & P6f7x6)); +assign P6f7x6 = (W6f7x6 & D7f7x6); +assign D7f7x6 = (Wawnv6 | K7f7x6); +assign W6f7x6 = (~(Dtm7z6[3] & R7f7x6)); +assign I6f7x6 = (Y7f7x6 & F8f7x6); +assign F8f7x6 = (~(Dtm7z6[0] & HRDATAD[15])); +assign Y7f7x6 = (~(Dtm7z6[1] & HRDATAS[15])); +assign N5f7x6 = (~(Fcwnv6 & Xwyhw6)); +assign Xwyhw6 = (JTAGNSW ? Aixmz6[15] : Ulxmz6[15]); +assign Onx7v6 = (~(M8f7x6 & T8f7x6)); +assign T8f7x6 = (~(Fcwnv6 & F1zhw6)); +assign F1zhw6 = (Dz1nv6 ? Ulxmz6[8] : Aixmz6[8]); +assign M8f7x6 = (A9f7x6 & H9f7x6); +assign H9f7x6 = (~(Uke7x6 & O9f7x6)); +assign O9f7x6 = (~(V9f7x6 & Caf7x6)); +assign Caf7x6 = (Jaf7x6 & Qaf7x6); +assign Qaf7x6 = (Wawnv6 | Xaf7x6); +assign Jaf7x6 = (~(Dtm7z6[3] & Ebf7x6)); +assign V9f7x6 = (Lbf7x6 & Sbf7x6); +assign Sbf7x6 = (~(Dtm7z6[0] & HRDATAD[8])); +assign Lbf7x6 = (~(Dtm7z6[1] & HRDATAS[8])); +assign A9f7x6 = (~(Zje7x6 & Itb7z6[8])); +assign Zje7x6 = (~(Fvd7x6 | Uke7x6)); +assign Uke7x6 = (Ahe7x6 & Zbf7x6); +assign Zbf7x6 = (~(Ohe7x6 & Gcf7x6)); +assign Gcf7x6 = (~(Ncf7x6 & Xie7x6)); +assign Hnx7v6 = (~(Ucf7x6 & Bdf7x6)); +assign Bdf7x6 = (~(Idf7x6 & Itb7z6[17])); +assign Ucf7x6 = (Pdf7x6 & Wdf7x6); +assign Wdf7x6 = (~(Def7x6 & Kef7x6)); +assign Def7x6 = (~(Ref7x6 & Yef7x6)); +assign Yef7x6 = (Fff7x6 & Mff7x6); +assign Mff7x6 = (Wawnv6 | Tff7x6); +assign Fff7x6 = (~(Dtm7z6[3] & Agf7x6)); +assign Ref7x6 = (Hgf7x6 & Ogf7x6); +assign Ogf7x6 = (~(Dtm7z6[0] & HRDATAD[17])); +assign Hgf7x6 = (~(Dtm7z6[1] & HRDATAS[17])); +assign Pdf7x6 = (~(Fcwnv6 & Ejyhw6)); +assign Ejyhw6 = (JTAGNSW ? Aixmz6[17] : Ulxmz6[17]); +assign Anx7v6 = (~(Vgf7x6 & Chf7x6)); +assign Chf7x6 = (~(Idf7x6 & Itb7z6[18])); +assign Vgf7x6 = (Jhf7x6 & Qhf7x6); +assign Qhf7x6 = (~(Xhf7x6 & Kef7x6)); +assign Xhf7x6 = (~(Eif7x6 & Lif7x6)); +assign Lif7x6 = (Sif7x6 & Zif7x6); +assign Zif7x6 = (Wawnv6 | Gjf7x6); +assign Sif7x6 = (~(Dtm7z6[3] & Njf7x6)); +assign Eif7x6 = (Ujf7x6 & Bkf7x6); +assign Bkf7x6 = (~(Dtm7z6[0] & HRDATAD[18])); +assign Ujf7x6 = (~(Dtm7z6[1] & HRDATAS[18])); +assign Jhf7x6 = (~(Fcwnv6 & Yfyhw6)); +assign Yfyhw6 = (JTAGNSW ? Aixmz6[18] : Ulxmz6[18]); +assign Tmx7v6 = (~(Ikf7x6 & Pkf7x6)); +assign Pkf7x6 = (~(Idf7x6 & Itb7z6[19])); +assign Ikf7x6 = (Wkf7x6 & Dlf7x6); +assign Dlf7x6 = (~(Klf7x6 & Kef7x6)); +assign Klf7x6 = (~(Rlf7x6 & Ylf7x6)); +assign Ylf7x6 = (Fmf7x6 & Mmf7x6); +assign Mmf7x6 = (Wawnv6 | Tmf7x6); +assign Fmf7x6 = (~(Dtm7z6[3] & Anf7x6)); +assign Rlf7x6 = (Hnf7x6 & Onf7x6); +assign Onf7x6 = (~(Dtm7z6[0] & HRDATAD[19])); +assign Hnf7x6 = (~(Dtm7z6[1] & HRDATAS[19])); +assign Wkf7x6 = (~(Fcwnv6 & Ieyhw6)); +assign Ieyhw6 = (JTAGNSW ? Aixmz6[19] : Ulxmz6[19]); +assign Mmx7v6 = (~(Vnf7x6 & Cof7x6)); +assign Cof7x6 = (~(Idf7x6 & Itb7z6[20])); +assign Vnf7x6 = (Jof7x6 & Qof7x6); +assign Qof7x6 = (~(Xof7x6 & Kef7x6)); +assign Xof7x6 = (~(Epf7x6 & Lpf7x6)); +assign Lpf7x6 = (Spf7x6 & Zpf7x6); +assign Zpf7x6 = (Wawnv6 | Gqf7x6); +assign Spf7x6 = (~(Dtm7z6[3] & Nqf7x6)); +assign Epf7x6 = (Uqf7x6 & Brf7x6); +assign Brf7x6 = (~(Dtm7z6[0] & HRDATAD[20])); +assign Uqf7x6 = (~(Dtm7z6[1] & HRDATAS[20])); +assign Jof7x6 = (~(Fcwnv6 & Ciyhw6)); +assign Ciyhw6 = (JTAGNSW ? Aixmz6[20] : Ulxmz6[20]); +assign Fmx7v6 = (~(Irf7x6 & Prf7x6)); +assign Prf7x6 = (~(Idf7x6 & Itb7z6[21])); +assign Irf7x6 = (Wrf7x6 & Dsf7x6); +assign Dsf7x6 = (~(Ksf7x6 & Kef7x6)); +assign Ksf7x6 = (~(Rsf7x6 & Ysf7x6)); +assign Ysf7x6 = (Ftf7x6 & Mtf7x6); +assign Mtf7x6 = (Wawnv6 | Ttf7x6); +assign Ftf7x6 = (~(Dtm7z6[3] & Auf7x6)); +assign Rsf7x6 = (Huf7x6 & Ouf7x6); +assign Ouf7x6 = (~(Dtm7z6[0] & HRDATAD[21])); +assign Huf7x6 = (~(Dtm7z6[1] & HRDATAS[21])); +assign Wrf7x6 = (~(Fcwnv6 & Udyhw6)); +assign Udyhw6 = (JTAGNSW ? Aixmz6[21] : Ulxmz6[21]); +assign Ylx7v6 = (~(Vuf7x6 & Cvf7x6)); +assign Cvf7x6 = (~(Idf7x6 & Itb7z6[22])); +assign Vuf7x6 = (Jvf7x6 & Qvf7x6); +assign Qvf7x6 = (~(Xvf7x6 & Kef7x6)); +assign Xvf7x6 = (~(Ewf7x6 & Lwf7x6)); +assign Lwf7x6 = (Swf7x6 & Zwf7x6); +assign Zwf7x6 = (Wawnv6 | Gxf7x6); +assign Swf7x6 = (~(Dtm7z6[3] & Nxf7x6)); +assign Ewf7x6 = (Uxf7x6 & Byf7x6); +assign Byf7x6 = (~(Dtm7z6[0] & HRDATAD[22])); +assign Uxf7x6 = (~(Dtm7z6[1] & HRDATAS[22])); +assign Jvf7x6 = (~(Fcwnv6 & Ohyhw6)); +assign Ohyhw6 = (JTAGNSW ? Aixmz6[22] : Ulxmz6[22]); +assign Rlx7v6 = (~(Iyf7x6 & Pyf7x6)); +assign Pyf7x6 = (~(Idf7x6 & Itb7z6[23])); +assign Iyf7x6 = (Wyf7x6 & Dzf7x6); +assign Dzf7x6 = (~(Kzf7x6 & Kef7x6)); +assign Kzf7x6 = (~(Rzf7x6 & Yzf7x6)); +assign Yzf7x6 = (F0g7x6 & M0g7x6); +assign M0g7x6 = (Wawnv6 | T0g7x6); +assign F0g7x6 = (~(Dtm7z6[3] & A1g7x6)); +assign Rzf7x6 = (H1g7x6 & O1g7x6); +assign O1g7x6 = (~(Dtm7z6[0] & HRDATAD[23])); +assign H1g7x6 = (~(Dtm7z6[1] & HRDATAS[23])); +assign Wyf7x6 = (~(Fcwnv6 & Kfyhw6)); +assign Kfyhw6 = (JTAGNSW ? Aixmz6[23] : Ulxmz6[23]); +assign Klx7v6 = (~(V1g7x6 & C2g7x6)); +assign C2g7x6 = (~(Fcwnv6 & Sjyhw6)); +assign Sjyhw6 = (JTAGNSW ? Aixmz6[16] : Ulxmz6[16]); +assign V1g7x6 = (J2g7x6 & Q2g7x6); +assign Q2g7x6 = (~(X2g7x6 & Kef7x6)); +assign X2g7x6 = (~(E3g7x6 & L3g7x6)); +assign L3g7x6 = (S3g7x6 & Z3g7x6); +assign Z3g7x6 = (Wawnv6 | G4g7x6); +assign S3g7x6 = (~(Dtm7z6[3] & N4g7x6)); +assign E3g7x6 = (U4g7x6 & B5g7x6); +assign B5g7x6 = (~(Dtm7z6[0] & HRDATAD[16])); +assign U4g7x6 = (~(Dtm7z6[1] & HRDATAS[16])); +assign J2g7x6 = (~(Idf7x6 & Itb7z6[16])); +assign Idf7x6 = (~(Kef7x6 | Fvd7x6)); +assign Kef7x6 = (~(I5g7x6 & P5g7x6)); +assign P5g7x6 = (~(Ahe7x6 & W5g7x6)); +assign W5g7x6 = (~(Ohe7x6 & D6g7x6)); +assign D6g7x6 = (~(K6g7x6 & Ugo7z6[1])); +assign K6g7x6 = (Jie7x6 & Qie7x6); +assign I5g7x6 = (Eje7x6 | Ugo7z6[1]); +assign Eje7x6 = (~(R6g7x6 & Y6g7x6)); +assign Y6g7x6 = (Ugo7z6[0] & Jie7x6); +assign R6g7x6 = (Ahe7x6 & Hub7z6[0]); +assign Dlx7v6 = (~(F7g7x6 & M7g7x6)); +assign M7g7x6 = (~(L8wnv6 & Itb7z6[25])); +assign F7g7x6 = (T7g7x6 & A8g7x6); +assign A8g7x6 = (~(G9wnv6 & H8g7x6)); +assign H8g7x6 = (~(O8g7x6 & V8g7x6)); +assign V8g7x6 = (C9g7x6 & J9g7x6); +assign J9g7x6 = (Wawnv6 | Q9g7x6); +assign C9g7x6 = (~(Dtm7z6[3] & X9g7x6)); +assign O8g7x6 = (Eag7x6 & Lag7x6); +assign Lag7x6 = (~(Dtm7z6[0] & HRDATAD[25])); +assign Eag7x6 = (~(Dtm7z6[1] & HRDATAS[25])); +assign T7g7x6 = (~(Fcwnv6 & Bsyhw6)); +assign Bsyhw6 = (Dz1nv6 ? Ulxmz6[25] : Aixmz6[25]); +assign Wkx7v6 = (~(Sag7x6 & Zag7x6)); +assign Zag7x6 = (~(L8wnv6 & Itb7z6[24])); +assign Sag7x6 = (Gbg7x6 & Nbg7x6); +assign Nbg7x6 = (~(G9wnv6 & Ubg7x6)); +assign Ubg7x6 = (~(Bcg7x6 & Icg7x6)); +assign Icg7x6 = (Pcg7x6 & Wcg7x6); +assign Wcg7x6 = (Wawnv6 | Ddg7x6); +assign Pcg7x6 = (~(Dtm7z6[3] & Kdg7x6)); +assign Bcg7x6 = (Rdg7x6 & Ydg7x6); +assign Ydg7x6 = (~(Dtm7z6[0] & HRDATAD[24])); +assign Rdg7x6 = (~(Dtm7z6[1] & HRDATAS[24])); +assign Gbg7x6 = (~(Fcwnv6 & Psyhw6)); +assign Psyhw6 = (JTAGNSW ? Aixmz6[24] : Ulxmz6[24]); +assign Pkx7v6 = (Mdonv6 ? Veonv6 : U8oet6); +assign Mdonv6 = (Rsdiw6 | Qteet6); +assign Ikx7v6 = (Sblov6 ? Feg7x6 : Wktet6); +assign Sblov6 = (Meg7x6 & Zy1ft6); +assign Meg7x6 = (Y94iw6 & Teg7x6); +assign Teg7x6 = (~(Afg7x6 & Hfg7x6)); +assign Hfg7x6 = (~(Ofg7x6 & Vfg7x6)); +assign Vfg7x6 = (Cgg7x6 & Gr2et6); +assign Cgg7x6 = (Wcmov6 & B2jnv6); +assign Ofg7x6 = (Xc1ft6 & Tk1ft6); +assign Afg7x6 = (~(Jgg7x6 & Qgg7x6)); +assign Qgg7x6 = (~(Cegiw6 | K6adt6)); +assign Cegiw6 = (!Gjdiw6); +assign Jgg7x6 = (Zb1ft6 & Jj1ft6); +assign Feg7x6 = (~(Xc1ft6 & Tk1ft6)); +assign Bkx7v6 = (~(Xgg7x6 & Ehg7x6)); +assign Ehg7x6 = (~(Lhg7x6 & Shg7x6)); +assign Lhg7x6 = (Zhg7x6 & P52nv6); +assign Xgg7x6 = (~(Vveet6 & Gig7x6)); +assign Gig7x6 = (~(Zhg7x6 & Nig7x6)); +assign Nig7x6 = (~(Cwadt6 & Uig7x6)); +assign Uig7x6 = (!Shg7x6); +assign Ujx7v6 = (Eofov6 & Qnfov6); +assign Qnfov6 = (~(Bjg7x6 & Ijg7x6)); +assign Ijg7x6 = (~(Fe2nv6 & Pjg7x6)); +assign Pjg7x6 = (~(Wjg7x6 & Dkg7x6)); +assign Dkg7x6 = (Kkg7x6 & Rkg7x6); +assign Wjg7x6 = (Ykg7x6 & Kd2nv6); +assign Bjg7x6 = (Bcmov6 & Flg7x6); +assign Bcmov6 = (~(Mlg7x6 & Ebdiw6)); +assign Mlg7x6 = (Zhg7x6 & Tlg7x6); +assign Tlg7x6 = (~(Amg7x6 & F52iw6)); +assign Njx7v6 = (~(Hmg7x6 & Omg7x6)); +assign Omg7x6 = (Wi2ov6 | Pcg7z6[31]); +assign Hmg7x6 = (Vmg7x6 & Cng7x6); +assign Cng7x6 = (~(Rj2ov6 & Ykmdt6)); +assign Vmg7x6 = (~(Yj2ov6 & Yxf7z6[1])); +assign Gjx7v6 = (~(Jng7x6 & Qng7x6)); +assign Qng7x6 = (~(Y3bov6 & Yxf7z6[1])); +assign Jng7x6 = (Xng7x6 & Eog7x6); +assign Eog7x6 = (~(Rj2ov6 & Mcmdt6)); +assign Xng7x6 = (~(Yj2ov6 & Yxf7z6[5])); +assign Zix7v6 = (~(Log7x6 & Sog7x6)); +assign Sog7x6 = (~(Y3bov6 & Yxf7z6[5])); +assign Log7x6 = (Zog7x6 & Gpg7x6); +assign Gpg7x6 = (~(Rj2ov6 & A4mdt6)); +assign Zog7x6 = (~(Yj2ov6 & Yxf7z6[9])); +assign Six7v6 = (~(Npg7x6 & Upg7x6)); +assign Upg7x6 = (~(Y3bov6 & Yxf7z6[9])); +assign Npg7x6 = (Bqg7x6 & Iqg7x6); +assign Iqg7x6 = (~(Rj2ov6 & Ovldt6)); +assign Bqg7x6 = (~(Yj2ov6 & Yxf7z6[13])); +assign Lix7v6 = (~(Pqg7x6 & Wqg7x6)); +assign Wqg7x6 = (~(Y3bov6 & Yxf7z6[13])); +assign Pqg7x6 = (Drg7x6 & Krg7x6); +assign Krg7x6 = (~(Rj2ov6 & Cnldt6)); +assign Drg7x6 = (~(Yj2ov6 & Yxf7z6[17])); +assign Eix7v6 = (~(Rrg7x6 & Yrg7x6)); +assign Yrg7x6 = (~(Y3bov6 & Yxf7z6[17])); +assign Rrg7x6 = (Fsg7x6 & Msg7x6); +assign Msg7x6 = (~(Rj2ov6 & Qeldt6)); +assign Fsg7x6 = (~(Yj2ov6 & Yxf7z6[21])); +assign Xhx7v6 = (~(Tsg7x6 & Atg7x6)); +assign Atg7x6 = (~(Y3bov6 & Yxf7z6[21])); +assign Tsg7x6 = (Htg7x6 & Otg7x6); +assign Otg7x6 = (~(Rj2ov6 & E6ldt6)); +assign Htg7x6 = (~(Yj2ov6 & Yxf7z6[25])); +assign Qhx7v6 = (~(Vtg7x6 & Cug7x6)); +assign Cug7x6 = (~(Y3bov6 & Yxf7z6[25])); +assign Vtg7x6 = (Jug7x6 & Qug7x6); +assign Qug7x6 = (~(Rj2ov6 & Sxkdt6)); +assign Jug7x6 = (~(Yj2ov6 & Yxf7z6[29])); +assign Jhx7v6 = (~(Xug7x6 & Evg7x6)); +assign Evg7x6 = (~(Yj2ov6 & Yxf7z6[33])); +assign Xug7x6 = (~(Y3bov6 & Yxf7z6[29])); +assign Chx7v6 = (Z6jhw6 ? D5f7z6[1] : Kknnv6); +assign Kknnv6 = (~(Lvg7x6 & Svg7x6)); +assign Svg7x6 = (Zvg7x6 & Gwg7x6); +assign Gwg7x6 = (~(Ua0jw6 & Nwg7x6)); +assign Nwg7x6 = (~(Xf0jw6 & Uwg7x6)); +assign Uwg7x6 = (~(Bxg7x6 & Rc0jw6)); +assign Bxg7x6 = (Wb0jw6 & Ixg7x6); +assign Ua0jw6 = (~(I40jw6 | Pxg7x6)); +assign Zvg7x6 = (Wxg7x6 & Dyg7x6); +assign Dyg7x6 = (~(P40jw6 & Kyg7x6)); +assign Kyg7x6 = (~(S90jw6 & Ryg7x6)); +assign Ryg7x6 = (~(Yyg7x6 & M60jw6)); +assign Yyg7x6 = (R50jw6 & Fzg7x6); +assign P40jw6 = (Mzg7x6 & Wwi6x6); +assign Mzg7x6 = (Tzg7x6 & Dxi6x6); +assign Dxi6x6 = (A0h7x6 | S90jw6); +assign S90jw6 = (~(H0h7x6 & Uu1jw6)); +assign Uu1jw6 = (~(O0h7x6 | Fzg7x6)); +assign Fzg7x6 = (~(V0h7x6 & C1h7x6)); +assign C1h7x6 = (~(O70jw6 & J1h7x6)); +assign V0h7x6 = (V70jw6 ? J1h7x6 : O70jw6); +assign V70jw6 = (Q1h7x6 & X1h7x6); +assign X1h7x6 = (~(E3c7z6[4] & E2h7x6)); +assign Q1h7x6 = (~(Ijnnv6 & Onf7z6[4])); +assign O70jw6 = (~(L2h7x6 & S2h7x6)); +assign S2h7x6 = (~(Fhc7z6[5] & E2h7x6)); +assign L2h7x6 = (~(Ijnnv6 & Onf7z6[5])); +assign O0h7x6 = (~(M60jw6 & R50jw6)); +assign R50jw6 = (Z2h7x6 ^ J1h7x6); +assign Z2h7x6 = (~(G3h7x6 & N3h7x6)); +assign N3h7x6 = (~(Fhc7z6[7] & E2h7x6)); +assign G3h7x6 = (~(Ijnnv6 & Onf7z6[7])); +assign M60jw6 = (U3h7x6 ^ J1h7x6); +assign U3h7x6 = (~(B4h7x6 & I4h7x6)); +assign I4h7x6 = (~(Fhc7z6[6] & E2h7x6)); +assign B4h7x6 = (~(Ijnnv6 & Onf7z6[6])); +assign H0h7x6 = (P4h7x6 & X80jw6); +assign X80jw6 = (W4h7x6 ^ J1h7x6); +assign W4h7x6 = (~(D5h7x6 & K5h7x6)); +assign K5h7x6 = (~(E3c7z6[3] & E2h7x6)); +assign D5h7x6 = (~(Ijnnv6 & Onf7z6[3])); +assign P4h7x6 = (J1h7x6 ^ J80jw6); +assign J80jw6 = (~(R5h7x6 & Y5h7x6)); +assign Y5h7x6 = (~(E3c7z6[2] & E2h7x6)); +assign R5h7x6 = (~(Ijnnv6 & Onf7z6[2])); +assign A0h7x6 = (F6h7x6 | Z90jw6); +assign Z90jw6 = (M6h7x6 ^ Tzziw6); +assign M6h7x6 = (~(T6h7x6 & A7h7x6)); +assign A7h7x6 = (~(E3c7z6[1] & E2h7x6)); +assign T6h7x6 = (~(Ijnnv6 & Onf7z6[1])); +assign F6h7x6 = (~(Tzziw6 ^ H7h7x6)); +assign H7h7x6 = (O7h7x6 & V7h7x6); +assign V7h7x6 = (~(E3c7z6[0] & E2h7x6)); +assign O7h7x6 = (~(Ijnnv6 & Onf7z6[0])); +assign Tzg7x6 = (!Kxi6x6); +assign Wxg7x6 = (~(Bxziw6 & C8h7x6)); +assign C8h7x6 = (L20jw6 | J8h7x6); +assign J8h7x6 = (Q8h7x6 & Yyziw6); +assign Q8h7x6 = (Dyziw6 & X8h7x6); +assign Bxziw6 = (~(Kxi6x6 | Wwi6x6)); +assign Wwi6x6 = (E9h7x6 & L20jw6); +assign L20jw6 = (L9h7x6 & Pv1jw6); +assign Pv1jw6 = (~(S9h7x6 | X8h7x6)); +assign X8h7x6 = (~(Z9h7x6 & Gah7x6)); +assign Gah7x6 = (~(H00jw6 & J1h7x6)); +assign Z9h7x6 = (O00jw6 ? J1h7x6 : H00jw6); +assign O00jw6 = (Nah7x6 & Uah7x6); +assign Uah7x6 = (~(Fhc7z6[12] & E2h7x6)); +assign Nah7x6 = (~(Ijnnv6 & Onf7z6[12])); +assign H00jw6 = (~(Bbh7x6 & Ibh7x6)); +assign Ibh7x6 = (~(Fhc7z6[13] & E2h7x6)); +assign Bbh7x6 = (~(Ijnnv6 & Onf7z6[13])); +assign S9h7x6 = (~(Yyziw6 & Dyziw6)); +assign Dyziw6 = (Pbh7x6 ^ J1h7x6); +assign Pbh7x6 = (~(Wbh7x6 & Dch7x6)); +assign Dch7x6 = (~(Fhc7z6[15] & E2h7x6)); +assign Wbh7x6 = (~(Ijnnv6 & Onf7z6[15])); +assign Yyziw6 = (Kch7x6 ^ J1h7x6); +assign Kch7x6 = (~(Rch7x6 & Ych7x6)); +assign Ych7x6 = (~(Fhc7z6[14] & E2h7x6)); +assign Rch7x6 = (~(Ijnnv6 & Onf7z6[14])); +assign L9h7x6 = (Fdh7x6 & Q10jw6); +assign Q10jw6 = (Mdh7x6 ^ J1h7x6); +assign Mdh7x6 = (~(Tdh7x6 & Aeh7x6)); +assign Aeh7x6 = (~(Fhc7z6[11] & E2h7x6)); +assign Tdh7x6 = (~(Ijnnv6 & Onf7z6[11])); +assign Fdh7x6 = (J1h7x6 ^ C10jw6); +assign C10jw6 = (~(Heh7x6 & Oeh7x6)); +assign Oeh7x6 = (~(Fhc7z6[10] & E2h7x6)); +assign Heh7x6 = (~(Ijnnv6 & Onf7z6[10])); +assign E9h7x6 = (Veh7x6 & S20jw6); +assign S20jw6 = (Cfh7x6 ^ J1h7x6); +assign Cfh7x6 = (~(Jfh7x6 & Qfh7x6)); +assign Qfh7x6 = (~(Fhc7z6[9] & E2h7x6)); +assign Jfh7x6 = (~(Ijnnv6 & Onf7z6[9])); +assign Veh7x6 = (~(J1h7x6 ^ Xfh7x6)); +assign Xfh7x6 = (Egh7x6 & Lgh7x6); +assign Lgh7x6 = (~(Fhc7z6[8] & E2h7x6)); +assign Egh7x6 = (~(Ijnnv6 & Onf7z6[8])); +assign Kxi6x6 = (~(Sgh7x6 & Pxg7x6)); +assign Pxg7x6 = (~(Zgh7x6 | Xf0jw6)); +assign Xf0jw6 = (~(Ghh7x6 & Wv1jw6)); +assign Wv1jw6 = (~(Nhh7x6 | Ixg7x6)); +assign Ixg7x6 = (~(Uhh7x6 & Bih7x6)); +assign Bih7x6 = (~(Td0jw6 & J1h7x6)); +assign Uhh7x6 = (Ae0jw6 ? J1h7x6 : Td0jw6); +assign Ae0jw6 = (Iih7x6 & Pih7x6); +assign Pih7x6 = (~(Fhc7z6[20] & E2h7x6)); +assign Iih7x6 = (~(Ijnnv6 & Onf7z6[20])); +assign Td0jw6 = (~(Wih7x6 & Djh7x6)); +assign Djh7x6 = (~(Fhc7z6[21] & E2h7x6)); +assign Wih7x6 = (~(Ijnnv6 & Onf7z6[21])); +assign Nhh7x6 = (~(Rc0jw6 & Wb0jw6)); +assign Wb0jw6 = (Kjh7x6 ^ J1h7x6); +assign Kjh7x6 = (~(Rjh7x6 & Yjh7x6)); +assign Yjh7x6 = (~(Fhc7z6[23] & E2h7x6)); +assign Rjh7x6 = (~(Ijnnv6 & Onf7z6[23])); +assign Rc0jw6 = (Fkh7x6 ^ J1h7x6); +assign Fkh7x6 = (~(Mkh7x6 & Tkh7x6)); +assign Tkh7x6 = (~(Fhc7z6[22] & E2h7x6)); +assign Mkh7x6 = (~(Ijnnv6 & Onf7z6[22])); +assign Ghh7x6 = (Alh7x6 & Cf0jw6); +assign Cf0jw6 = (Hlh7x6 ^ J1h7x6); +assign Hlh7x6 = (~(Olh7x6 & Vlh7x6)); +assign Vlh7x6 = (~(Fhc7z6[19] & E2h7x6)); +assign Olh7x6 = (~(Ijnnv6 & Onf7z6[19])); +assign Alh7x6 = (J1h7x6 ^ Oe0jw6); +assign Oe0jw6 = (~(Cmh7x6 & Jmh7x6)); +assign Jmh7x6 = (~(Fhc7z6[18] & E2h7x6)); +assign Cmh7x6 = (~(Ijnnv6 & Onf7z6[18])); +assign Zgh7x6 = (Qmh7x6 | Eg0jw6); +assign Eg0jw6 = (Xmh7x6 ^ Tzziw6); +assign Xmh7x6 = (~(Enh7x6 & Lnh7x6)); +assign Lnh7x6 = (~(Fhc7z6[17] & E2h7x6)); +assign Enh7x6 = (~(Ijnnv6 & Onf7z6[17])); +assign Qmh7x6 = (~(Tzziw6 ^ Snh7x6)); +assign Snh7x6 = (Znh7x6 & Goh7x6); +assign Goh7x6 = (~(Fhc7z6[16] & E2h7x6)); +assign Znh7x6 = (~(Ijnnv6 & Onf7z6[16])); +assign Sgh7x6 = (!I40jw6); +assign Lvg7x6 = (Noh7x6 & Uoh7x6); +assign Uoh7x6 = (~(Gu1jw6 & Bph7x6)); +assign Noh7x6 = (~(U30jw6 & I40jw6)); +assign I40jw6 = (~(Iph7x6 & U30jw6)); +assign Iph7x6 = (Pph7x6 & B40jw6); +assign B40jw6 = (Wph7x6 ^ J1h7x6); +assign Wph7x6 = (~(Dqh7x6 & Kqh7x6)); +assign Kqh7x6 = (~(Fhc7z6[25] & E2h7x6)); +assign Dqh7x6 = (~(Ijnnv6 & Onf7z6[25])); +assign Pph7x6 = (~(J1h7x6 ^ Rqh7x6)); +assign Rqh7x6 = (Yqh7x6 & Frh7x6); +assign Frh7x6 = (~(Fhc7z6[24] & E2h7x6)); +assign Yqh7x6 = (~(Ijnnv6 & Onf7z6[24])); +assign U30jw6 = (Mrh7x6 & Trh7x6); +assign Trh7x6 = (Ash7x6 & Fk0jw6); +assign Fk0jw6 = (!Dj0jw6); +assign Dj0jw6 = (Hsh7x6 ^ Tzziw6); +assign Hsh7x6 = (~(Osh7x6 & Vsh7x6)); +assign Vsh7x6 = (~(Fhc7z6[26] & E2h7x6)); +assign Osh7x6 = (~(Ijnnv6 & Onf7z6[26])); +assign Ash7x6 = (J1h7x6 ^ Kj0jw6); +assign Kj0jw6 = (~(Cth7x6 & Jth7x6)); +assign Jth7x6 = (~(Fhc7z6[27] & E2h7x6)); +assign Cth7x6 = (~(Ijnnv6 & Onf7z6[27])); +assign Mrh7x6 = (Gu1jw6 & Nu1jw6); +assign Nu1jw6 = (!Bph7x6); +assign Bph7x6 = (~(Qth7x6 & Xth7x6)); +assign Xth7x6 = (~(Ii0jw6 & J1h7x6)); +assign Qth7x6 = (Pi0jw6 ? J1h7x6 : Ii0jw6); +assign Pi0jw6 = (Euh7x6 & Luh7x6); +assign Luh7x6 = (~(Fhc7z6[28] & E2h7x6)); +assign Euh7x6 = (~(Ijnnv6 & Onf7z6[28])); +assign Ii0jw6 = (~(Suh7x6 & Zuh7x6)); +assign Zuh7x6 = (~(Fhc7z6[29] & E2h7x6)); +assign Suh7x6 = (~(Ijnnv6 & Onf7z6[29])); +assign Gu1jw6 = (Gh0jw6 & Sg0jw6); +assign Sg0jw6 = (~(J1h7x6 & Gvh7x6)); +assign Gvh7x6 = (~(Nvh7x6 & Uvh7x6)); +assign Uvh7x6 = (~(Fhc7z6[31] & E2h7x6)); +assign Nvh7x6 = (~(Ijnnv6 & Onf7z6[31])); +assign Gh0jw6 = (~(Bwh7x6 ^ Tzziw6)); +assign Tzziw6 = (!J1h7x6); +assign J1h7x6 = (~(Rabov6 & N427x6)); +assign N427x6 = (E327x6 & Fhc7z6[31]); +assign E327x6 = (Uh2ov6 & Mrbdt6); +assign Bwh7x6 = (~(Iwh7x6 & Pwh7x6)); +assign Pwh7x6 = (~(Fhc7z6[30] & E2h7x6)); +assign E2h7x6 = (Svziw6 | Rabov6); +assign Iwh7x6 = (~(Ijnnv6 & Onf7z6[30])); +assign Vgx7v6 = (K7tnv6 ? Yhzmz6[0] : ETMINTNUM[0]); +assign Ogx7v6 = (K7tnv6 ? Yhzmz6[1] : ETMINTNUM[1]); +assign Hgx7v6 = (K7tnv6 ? Yhzmz6[2] : ETMINTNUM[2]); +assign Agx7v6 = (K7tnv6 ? Yhzmz6[3] : ETMINTNUM[3]); +assign Tfx7v6 = (K7tnv6 ? Yhzmz6[4] : ETMINTNUM[4]); +assign Mfx7v6 = (K7tnv6 ? Zxymz6[5] : ETMINTNUM[5]); +assign Ffx7v6 = (K7tnv6 ? Zxymz6[6] : ETMINTNUM[6]); +assign Yex7v6 = (K7tnv6 ? Zxymz6[7] : ETMINTNUM[7]); +assign Rex7v6 = (K7tnv6 ? Zxymz6[8] : ETMINTNUM[8]); +assign K7tnv6 = (~(Wwh7x6 & Glh7v6)); +assign Wwh7x6 = (Zkh7v6 & W3wnv6); +assign Kex7v6 = (~(Dxh7x6 & G1iov6)); +assign G1iov6 = (~(Kxh7x6 & Rxh7x6)); +assign Kxh7x6 = (Vzgov6 & Om2nv6); +assign Om2nv6 = (!Z3j7z6[7]); +assign Dxh7x6 = (Z3j7z6[7] ? Fyh7x6 : Yxh7x6); +assign Fyh7x6 = (~(Myh7x6 & Tyh7x6)); +assign Tyh7x6 = (~(Egfiw6 & Wohov6)); +assign Myh7x6 = (Azh7x6 & U4fov6); +assign Azh7x6 = (~(Kphov6 & Hzh7x6)); +assign Yxh7x6 = (~(Wohov6 & R62nv6)); +assign Dex7v6 = (~(Ozh7x6 & Ayhov6)); +assign Ayhov6 = (~(Vzh7x6 & Vzgov6)); +assign Vzh7x6 = (C0i7x6 & Vm2nv6); +assign Ozh7x6 = (Z3j7z6[8] ? Q0i7x6 : J0i7x6); +assign Q0i7x6 = (~(X0i7x6 & E1i7x6)); +assign E1i7x6 = (~(Kphov6 & L1i7x6)); +assign X0i7x6 = (S1i7x6 & U4fov6); +assign S1i7x6 = (~(Qlhov6 & Nhfiw6)); +assign J0i7x6 = (~(Qlhov6 & U47iw6)); +assign Wdx7v6 = (~(Z1i7x6 & G2i7x6)); +assign Z1i7x6 = (Z3j7z6[10] ? U2i7x6 : N2i7x6); +assign U2i7x6 = (~(B3i7x6 & I3i7x6)); +assign I3i7x6 = (~(Kphov6 & P3i7x6)); +assign B3i7x6 = (W3i7x6 & U4fov6); +assign W3i7x6 = (~(Qlhov6 & Fkfiw6)); +assign N2i7x6 = (~(Qlhov6 & H17iw6)); +assign Pdx7v6 = (G5eov6 ? Oqbet6 : D4i7x6); +assign D4i7x6 = (K4i7x6 & G2i7x6); +assign G2i7x6 = (~(R4i7x6 & Vzgov6)); +assign R4i7x6 = (Y4i7x6 & Qn2nv6); +assign Qn2nv6 = (!Z3j7z6[10]); +assign K4i7x6 = (~(Q0hov6 & H44iw6)); +assign Idx7v6 = (~(F5i7x6 & M5i7x6)); +assign F5i7x6 = (Z3j7z6[11] ? A6i7x6 : T5i7x6); +assign A6i7x6 = (~(H6i7x6 & O6i7x6)); +assign O6i7x6 = (~(Kphov6 & V6i7x6)); +assign H6i7x6 = (C7i7x6 & U4fov6); +assign C7i7x6 = (~(Qlhov6 & Olfiw6)); +assign T5i7x6 = (~(Qlhov6 & Dz6iw6)); +assign Bdx7v6 = (!Z4eov6); +assign Z4eov6 = (Zfcet6 ? Q7i7x6 : J7i7x6); +assign Q7i7x6 = (~(X7i7x6 & M5i7x6)); +assign M5i7x6 = (~(E8i7x6 & K4hov6)); +assign E8i7x6 = (~(Kxgov6 | Z3j7z6[11])); +assign Kxgov6 = (!Vzgov6); +assign X7i7x6 = (~(Q0hov6 & Iklov6)); +assign J7i7x6 = (L8i7x6 & S8i7x6); +assign S8i7x6 = (~(M5bdt6 & Z8i7x6)); +assign Z8i7x6 = (~(Jqj7z6[8] & Z3j7z6[11])); +assign L8i7x6 = (~(Q0hov6 & E64iw6)); +assign Ucx7v6 = (~(G9i7x6 & N9i7x6)); +assign N9i7x6 = (U9i7x6 | Fsliw6); +assign G9i7x6 = (Bai7x6 & Iai7x6); +assign Bai7x6 = (Z3fov6 | Zo2nv6); +assign Ncx7v6 = (!Pai7x6); +assign Pai7x6 = (M6j7z6[8] ? Dbi7x6 : Wai7x6); +assign Dbi7x6 = (~(Kbi7x6 & Iai7x6)); +assign Iai7x6 = (~(Rbi7x6 & H0miw6)); +assign Rbi7x6 = (Ybi7x6 & Zo2nv6); +assign Zo2nv6 = (!G5j7z6[8]); +assign Kbi7x6 = (~(Fci7x6 & U47iw6)); +assign Wai7x6 = (Mci7x6 & Tci7x6); +assign Tci7x6 = (~(Adi7x6 & U47iw6)); +assign Mci7x6 = (~(Qkj7z6[8] | Hdi7x6)); +assign Hdi7x6 = (Odi7x6 & Tib7z6[8]); +assign Odi7x6 = (~(Jqj7z6[17] & G5j7z6[8])); +assign Gcx7v6 = (~(Vdi7x6 & Cei7x6)); +assign Cei7x6 = (~(G5j7z6[9] & Jei7x6)); +assign Jei7x6 = (~(Vtliw6 & Qei7x6)); +assign Zbx7v6 = (!Xei7x6); +assign Xei7x6 = (M6j7z6[9] ? Lfi7x6 : Efi7x6); +assign Lfi7x6 = (~(Vdi7x6 & Sfi7x6)); +assign Sfi7x6 = (~(Fci7x6 & J27iw6)); +assign Vdi7x6 = (~(Zfi7x6 & H0miw6)); +assign Zfi7x6 = (Ggi7x6 & Gp2nv6); +assign Gp2nv6 = (!G5j7z6[9]); +assign Efi7x6 = (Ngi7x6 & Ugi7x6); +assign Ugi7x6 = (~(Adi7x6 & J27iw6)); +assign Ngi7x6 = (~(Qkj7z6[9] | Bhi7x6)); +assign Bhi7x6 = (Ihi7x6 & Tib7z6[9]); +assign Ihi7x6 = (~(Jqj7z6[18] & G5j7z6[9])); +assign Sbx7v6 = (~(Phi7x6 & Whi7x6)); +assign Whi7x6 = (~(Dii7x6 & U4fov6)); +assign Phi7x6 = (Kii7x6 & Rii7x6); +assign Kii7x6 = (Z3fov6 | Lv2nv6); +assign Lbx7v6 = (!Yii7x6); +assign Yii7x6 = (M6j7z6[10] ? Mji7x6 : Fji7x6); +assign Mji7x6 = (~(Tji7x6 & Rii7x6)); +assign Rii7x6 = (~(Aki7x6 & H0miw6)); +assign Aki7x6 = (Hki7x6 & Lv2nv6); +assign Lv2nv6 = (!G5j7z6[10]); +assign Tji7x6 = (~(Fci7x6 & H17iw6)); +assign Fji7x6 = (Oki7x6 & Vki7x6); +assign Vki7x6 = (~(Adi7x6 & H17iw6)); +assign Oki7x6 = (~(Qkj7z6[10] | Cli7x6)); +assign Cli7x6 = (Jli7x6 & Tib7z6[10]); +assign Jli7x6 = (~(Jqj7z6[19] & G5j7z6[10])); +assign Ebx7v6 = (~(Qli7x6 & Xli7x6)); +assign Xli7x6 = (~(Emi7x6 & U4fov6)); +assign Qli7x6 = (Lmi7x6 & Smi7x6); +assign Lmi7x6 = (Z3fov6 | Vt2nv6); +assign Xax7v6 = (!Zmi7x6); +assign Zmi7x6 = (M6j7z6[11] ? Nni7x6 : Gni7x6); +assign Nni7x6 = (~(Uni7x6 & Smi7x6)); +assign Smi7x6 = (~(Boi7x6 & H0miw6)); +assign Boi7x6 = (Rxh7x6 & Vt2nv6); +assign Vt2nv6 = (!G5j7z6[11]); +assign Uni7x6 = (~(Fci7x6 & Dz6iw6)); +assign Gni7x6 = (Ioi7x6 & Poi7x6); +assign Poi7x6 = (~(Adi7x6 & Dz6iw6)); +assign Ioi7x6 = (~(Qkj7z6[11] | Woi7x6)); +assign Woi7x6 = (Dpi7x6 & Tib7z6[11]); +assign Dpi7x6 = (~(Jqj7z6[20] & G5j7z6[11])); +assign Qax7v6 = (~(Kpi7x6 & Rpi7x6)); +assign Rpi7x6 = (~(G5j7z6[12] & Ypi7x6)); +assign Ypi7x6 = (Fqi7x6 | Mqi7x6); +assign Jax7v6 = (!Tqi7x6); +assign Tqi7x6 = (M6j7z6[12] ? Hri7x6 : Ari7x6); +assign Hri7x6 = (~(Ori7x6 & Kpi7x6)); +assign Kpi7x6 = (~(Vri7x6 & H0miw6)); +assign Vri7x6 = (C0i7x6 & Csi7x6); +assign Ori7x6 = (~(Fci7x6 & Emhov6)); +assign Ari7x6 = (Jsi7x6 & Qsi7x6); +assign Qsi7x6 = (~(Adi7x6 & Emhov6)); +assign Jsi7x6 = (~(Qkj7z6[12] | Xsi7x6)); +assign Xsi7x6 = (Eti7x6 & Tib7z6[12]); +assign Eti7x6 = (~(Jqj7z6[21] & G5j7z6[12])); +assign Cax7v6 = (~(Lti7x6 & Sti7x6)); +assign Sti7x6 = (~(G5j7z6[13] & Zti7x6)); +assign Zti7x6 = (Fqi7x6 | Gui7x6); +assign V9x7v6 = (!Nui7x6); +assign Nui7x6 = (M6j7z6[13] ? Bvi7x6 : Uui7x6); +assign Bvi7x6 = (~(Lti7x6 & Ivi7x6)); +assign Ivi7x6 = (~(Fci7x6 & Guhov6)); +assign Lti7x6 = (~(Pvi7x6 & H0miw6)); +assign Pvi7x6 = (Wvi7x6 & Dwi7x6); +assign Uui7x6 = (Kwi7x6 & Rwi7x6); +assign Rwi7x6 = (~(Adi7x6 & Guhov6)); +assign Kwi7x6 = (~(Qkj7z6[13] | Ywi7x6)); +assign Ywi7x6 = (Fxi7x6 & Tib7z6[13]); +assign Fxi7x6 = (~(Jqj7z6[22] & G5j7z6[13])); +assign O9x7v6 = (~(Mxi7x6 & Txi7x6)); +assign Txi7x6 = (~(G5j7z6[14] & Ayi7x6)); +assign Ayi7x6 = (Fqi7x6 | Rwhov6); +assign Fqi7x6 = (!Vtliw6); +assign H9x7v6 = (!Hyi7x6); +assign Hyi7x6 = (M6j7z6[14] ? Vyi7x6 : Oyi7x6); +assign Vyi7x6 = (~(Mxi7x6 & Czi7x6)); +assign Czi7x6 = (~(Fci7x6 & Bk6iw6)); +assign Mxi7x6 = (~(Jzi7x6 & H0miw6)); +assign Jzi7x6 = (Y4i7x6 & Qzi7x6); +assign Oyi7x6 = (Xzi7x6 & E0j7x6); +assign E0j7x6 = (~(Adi7x6 & Bk6iw6)); +assign Xzi7x6 = (~(Qkj7z6[14] | L0j7x6)); +assign L0j7x6 = (S0j7x6 & Tib7z6[14]); +assign S0j7x6 = (~(Jqj7z6[23] & G5j7z6[14])); +assign A9x7v6 = (~(Z0j7x6 & G1j7x6)); +assign G1j7x6 = (~(G5j7z6[15] & N1j7x6)); +assign N1j7x6 = (~(Vtliw6 & N2hov6)); +assign N2hov6 = (V6i7x6 | Fsliw6); +assign Vtliw6 = (U1j7x6 & Z3fov6); +assign U1j7x6 = (~(B2j7x6 & U4fov6)); +assign T8x7v6 = (!I2j7x6); +assign I2j7x6 = (M6j7z6[15] ? W2j7x6 : P2j7x6); +assign W2j7x6 = (~(Z0j7x6 & D3j7x6)); +assign D3j7x6 = (~(Fci7x6 & Z0iov6)); +assign Fci7x6 = (K3j7x6 & Bqi7z6[1]); +assign K3j7x6 = (!Arniw6); +assign Z0j7x6 = (~(R3j7x6 & H0miw6)); +assign H0miw6 = (Y3j7x6 & F4j7x6); +assign Y3j7x6 = (Sa2nv6 & P2j7z6[4]); +assign R3j7x6 = (K4hov6 & M4j7x6); +assign P2j7x6 = (T4j7x6 & A5j7x6); +assign A5j7x6 = (~(Adi7x6 & Z0iov6)); +assign Adi7x6 = (H5j7x6 & Bqi7z6[1]); +assign H5j7x6 = (!Qsniw6); +assign T4j7x6 = (~(Qkj7z6[15] | O5j7x6)); +assign O5j7x6 = (V5j7x6 & Tib7z6[15]); +assign V5j7x6 = (~(Jqj7z6[24] & G5j7z6[15])); +assign M8x7v6 = (~(C6j7x6 & J6j7x6)); +assign J6j7x6 = (~(G5j7z6[24] & Q6j7x6)); +assign Q6j7x6 = (~(Wimiw6 & X6j7x6)); +assign F8x7v6 = (!E7j7x6); +assign E7j7x6 = (M6j7z6[24] ? S7j7x6 : L7j7x6); +assign S7j7x6 = (~(Z7j7x6 & C6j7x6)); +assign C6j7x6 = (~(G8j7x6 & Dcmiw6)); +assign G8j7x6 = (Ybi7x6 & N8j7x6); +assign Z7j7x6 = (~(U8j7x6 & Wf4iw6)); +assign L7j7x6 = (B9j7x6 & I9j7x6); +assign I9j7x6 = (~(P9j7x6 & Wf4iw6)); +assign B9j7x6 = (~(Qkj7z6[24] | W9j7x6)); +assign W9j7x6 = (Daj7x6 & Tib7z6[24]); +assign Daj7x6 = (~(Jqj7z6[33] & G5j7z6[24])); +assign Y7x7v6 = (~(Kaj7x6 & Raj7x6)); +assign Raj7x6 = (~(Yaj7x6 & G5j7z6[25])); +assign Yaj7x6 = (Fbj7x6 & U4fov6); +assign Fbj7x6 = (~(Cfmiw6 & Mbj7x6)); +assign R7x7v6 = (!Tbj7x6); +assign Tbj7x6 = (M6j7z6[25] ? Hcj7x6 : Acj7x6); +assign Hcj7x6 = (~(Kaj7x6 & Ocj7x6)); +assign Ocj7x6 = (~(U8j7x6 & Iklov6)); +assign Kaj7x6 = (~(Vcj7x6 & Dcmiw6)); +assign Vcj7x6 = (Ggi7x6 & Cdj7x6); +assign Acj7x6 = (Jdj7x6 & Qdj7x6); +assign Qdj7x6 = (~(P9j7x6 & Iklov6)); +assign Jdj7x6 = (~(Qkj7z6[25] | Xdj7x6)); +assign Xdj7x6 = (Eej7x6 & Tib7z6[25]); +assign Eej7x6 = (~(Jqj7z6[34] & G5j7z6[25])); +assign K7x7v6 = (~(Lej7x6 & Sej7x6)); +assign Sej7x6 = (~(Zej7x6 & G5j7z6[26])); +assign Zej7x6 = (Gfj7x6 & U4fov6); +assign Gfj7x6 = (~(Cfmiw6 & Nfj7x6)); +assign D7x7v6 = (!Ufj7x6); +assign Ufj7x6 = (M6j7z6[26] ? Igj7x6 : Bgj7x6); +assign Igj7x6 = (~(Lej7x6 & Pgj7x6)); +assign Pgj7x6 = (~(U8j7x6 & E64iw6)); +assign Lej7x6 = (~(Wgj7x6 & Dcmiw6)); +assign Wgj7x6 = (Hki7x6 & Dhj7x6); +assign Bgj7x6 = (Khj7x6 & Rhj7x6); +assign Rhj7x6 = (~(P9j7x6 & E64iw6)); +assign Khj7x6 = (~(Qkj7z6[26] | Yhj7x6)); +assign Yhj7x6 = (Fij7x6 & Tib7z6[26]); +assign Fij7x6 = (~(Jqj7z6[35] & G5j7z6[26])); +assign W6x7v6 = (~(Mij7x6 & Tij7x6)); +assign Tij7x6 = (~(Ajj7x6 & G5j7z6[27])); +assign Ajj7x6 = (Hjj7x6 & U4fov6); +assign Hjj7x6 = (~(Cfmiw6 & Hzh7x6)); +assign P6x7v6 = (!Ojj7x6); +assign Ojj7x6 = (M6j7z6[27] ? Ckj7x6 : Vjj7x6); +assign Ckj7x6 = (~(Mij7x6 & Jkj7x6)); +assign Jkj7x6 = (~(U8j7x6 & H44iw6)); +assign Mij7x6 = (~(Qkj7x6 & Dcmiw6)); +assign Qkj7x6 = (Rxh7x6 & Xkj7x6); +assign Vjj7x6 = (Elj7x6 & Llj7x6); +assign Llj7x6 = (~(P9j7x6 & H44iw6)); +assign Elj7x6 = (~(Qkj7z6[27] | Slj7x6)); +assign Slj7x6 = (Zlj7x6 & Tib7z6[27]); +assign Zlj7x6 = (~(Jqj7z6[36] & G5j7z6[27])); +assign I6x7v6 = (~(Gmj7x6 & Nmj7x6)); +assign Nmj7x6 = (~(G5j7z6[28] & Umj7x6)); +assign Umj7x6 = (S9miw6 | Mqi7x6); +assign S9miw6 = (!Wimiw6); +assign Wimiw6 = (Z3fov6 & Bnj7x6); +assign Bnj7x6 = (~(U4fov6 & Inj7x6)); +assign B6x7v6 = (!Pnj7x6); +assign Pnj7x6 = (M6j7z6[28] ? Doj7x6 : Wnj7x6); +assign Doj7x6 = (~(Koj7x6 & Gmj7x6)); +assign Gmj7x6 = (~(Roj7x6 & Dcmiw6)); +assign Roj7x6 = (C0i7x6 & Yoj7x6); +assign Koj7x6 = (~(U8j7x6 & W14iw6)); +assign Wnj7x6 = (Fpj7x6 & Mpj7x6); +assign Mpj7x6 = (~(P9j7x6 & W14iw6)); +assign Fpj7x6 = (~(Qkj7z6[28] | Tpj7x6)); +assign Tpj7x6 = (Aqj7x6 & Tib7z6[28]); +assign Aqj7x6 = (~(Jqj7z6[37] & G5j7z6[28])); +assign U5x7v6 = (~(Hqj7x6 & Oqj7x6)); +assign Oqj7x6 = (~(Vqj7x6 & G5j7z6[29])); +assign Vqj7x6 = (Crj7x6 & U4fov6); +assign Crj7x6 = (~(Cfmiw6 & Jrj7x6)); +assign N5x7v6 = (!Qrj7x6); +assign Qrj7x6 = (M6j7z6[29] ? Esj7x6 : Xrj7x6); +assign Esj7x6 = (~(Hqj7x6 & Lsj7x6)); +assign Lsj7x6 = (~(U8j7x6 & Zz3iw6)); +assign Hqj7x6 = (~(Ssj7x6 & Dcmiw6)); +assign Ssj7x6 = (Wvi7x6 & Zsj7x6); +assign Xrj7x6 = (Gtj7x6 & Ntj7x6); +assign Ntj7x6 = (~(P9j7x6 & Zz3iw6)); +assign Gtj7x6 = (~(Qkj7z6[29] | Utj7x6)); +assign Utj7x6 = (Buj7x6 & Tib7z6[29]); +assign Buj7x6 = (~(Jqj7z6[38] & G5j7z6[29])); +assign G5x7v6 = (~(Iuj7x6 & Puj7x6)); +assign Puj7x6 = (~(Wuj7x6 & G5j7z6[30])); +assign Wuj7x6 = (Dvj7x6 & U4fov6); +assign Dvj7x6 = (~(Cfmiw6 & P3i7x6)); +assign Z4x7v6 = (!Kvj7x6); +assign Kvj7x6 = (M6j7z6[30] ? Yvj7x6 : Rvj7x6); +assign Yvj7x6 = (~(Iuj7x6 & Fwj7x6)); +assign Fwj7x6 = (~(U8j7x6 & Ro3iw6)); +assign Iuj7x6 = (~(Mwj7x6 & Dcmiw6)); +assign Mwj7x6 = (Y4i7x6 & Twj7x6); +assign Rvj7x6 = (Axj7x6 & Hxj7x6); +assign Hxj7x6 = (~(P9j7x6 & Ro3iw6)); +assign Axj7x6 = (~(Qkj7z6[30] | Oxj7x6)); +assign Oxj7x6 = (Vxj7x6 & Tib7z6[30]); +assign Vxj7x6 = (~(Jqj7z6[39] & G5j7z6[30])); +assign S4x7v6 = (~(Cyj7x6 & Jyj7x6)); +assign Jyj7x6 = (~(Qyj7x6 & G5j7z6[31])); +assign Qyj7x6 = (Xyj7x6 & U4fov6); +assign Xyj7x6 = (~(Cfmiw6 & V6i7x6)); +assign Cfmiw6 = (~(Sh2nv6 | Inj7x6)); +assign L4x7v6 = (!Ezj7x6); +assign Ezj7x6 = (M6j7z6[31] ? Szj7x6 : Lzj7x6); +assign Szj7x6 = (~(Cyj7x6 & Zzj7x6)); +assign Zzj7x6 = (~(U8j7x6 & X0hov6)); +assign U8j7x6 = (~(Arniw6 | Dv3iw6)); +assign Arniw6 = (~(Pceiw6 & G0k7x6)); +assign Pceiw6 = (Toi7z6[7] & Pb8iw6); +assign Cyj7x6 = (~(N0k7x6 & Dcmiw6)); +assign Dcmiw6 = (~(U0k7x6 | P2j7z6[4])); +assign N0k7x6 = (K4hov6 & B1k7x6); +assign K4hov6 = (I1k7x6 & Rc3nv6); +assign I1k7x6 = (P2j7z6[0] & P2j7z6[1]); +assign Lzj7x6 = (P1k7x6 & W1k7x6); +assign W1k7x6 = (~(P9j7x6 & X0hov6)); +assign P9j7x6 = (~(Qsniw6 | Dv3iw6)); +assign Qsniw6 = (~(Ddeiw6 & G0k7x6)); +assign Ddeiw6 = (Pb8iw6 & D2k7x6); +assign P1k7x6 = (~(Qkj7z6[31] | K2k7x6)); +assign K2k7x6 = (R2k7x6 & Tib7z6[31]); +assign R2k7x6 = (~(Jqj7z6[40] & G5j7z6[31])); +assign E4x7v6 = (~(Y2k7x6 & F3k7x6)); +assign F3k7x6 = (~(G5j7z6[40] & M3k7x6)); +assign M3k7x6 = (~(Kqmiw6 & X6j7x6)); +assign X6j7x6 = (~(U4fov6 & T3k7x6)); +assign Kqmiw6 = (!A4k7x6); +assign X3x7v6 = (!H4k7x6); +assign H4k7x6 = (M6j7z6[40] ? V4k7x6 : O4k7x6); +assign V4k7x6 = (~(C5k7x6 & Y2k7x6)); +assign Y2k7x6 = (~(J5k7x6 & A5iov6)); +assign J5k7x6 = (Ybi7x6 & Q5k7x6); +assign C5k7x6 = (~(M4iov6 & U47iw6)); +assign O4k7x6 = (X5k7x6 & E6k7x6); +assign E6k7x6 = (~(C6iov6 & U47iw6)); +assign X5k7x6 = (~(Qkj7z6[40] | L6k7x6)); +assign L6k7x6 = (S6k7x6 & Tib7z6[40]); +assign S6k7x6 = (~(Jqj7z6[49] & G5j7z6[40])); +assign Q3x7v6 = (~(Z6k7x6 & G7k7x6)); +assign G7k7x6 = (~(G5j7z6[41] & N7k7x6)); +assign N7k7x6 = (~(D3iov6 & Qei7x6)); +assign Qei7x6 = (~(U4fov6 & U7k7x6)); +assign J3x7v6 = (!B8k7x6); +assign B8k7x6 = (M6j7z6[41] ? P8k7x6 : I8k7x6); +assign P8k7x6 = (~(Z6k7x6 & W8k7x6)); +assign W8k7x6 = (~(M4iov6 & J27iw6)); +assign Z6k7x6 = (~(D9k7x6 & A5iov6)); +assign D9k7x6 = (Ggi7x6 & K9k7x6); +assign I8k7x6 = (R9k7x6 & Y9k7x6); +assign Y9k7x6 = (~(C6iov6 & J27iw6)); +assign R9k7x6 = (~(Qkj7z6[41] | Fak7x6)); +assign Fak7x6 = (Mak7x6 & Tib7z6[41]); +assign Mak7x6 = (~(Jqj7z6[50] & G5j7z6[41])); +assign C3x7v6 = (~(Tak7x6 & Abk7x6)); +assign Abk7x6 = (~(G5j7z6[42] & Hbk7x6)); +assign Hbk7x6 = (~(D3iov6 & Obk7x6)); +assign V2x7v6 = (!Vbk7x6); +assign Vbk7x6 = (M6j7z6[42] ? Jck7x6 : Cck7x6); +assign Jck7x6 = (~(Tak7x6 & Qck7x6)); +assign Qck7x6 = (~(M4iov6 & H17iw6)); +assign Tak7x6 = (~(Xck7x6 & A5iov6)); +assign Xck7x6 = (Hki7x6 & Edk7x6); +assign Cck7x6 = (Ldk7x6 & Sdk7x6); +assign Sdk7x6 = (~(C6iov6 & H17iw6)); +assign Ldk7x6 = (~(Qkj7z6[42] | Zdk7x6)); +assign Zdk7x6 = (Gek7x6 & Tib7z6[42]); +assign Gek7x6 = (~(Jqj7z6[51] & G5j7z6[42])); +assign O2x7v6 = (~(Nek7x6 & Uek7x6)); +assign Uek7x6 = (~(G5j7z6[43] & Bfk7x6)); +assign Bfk7x6 = (~(D3iov6 & Ifk7x6)); +assign Ifk7x6 = (~(Pfk7x6 & U4fov6)); +assign H2x7v6 = (!Wfk7x6); +assign Wfk7x6 = (M6j7z6[43] ? Kgk7x6 : Dgk7x6); +assign Kgk7x6 = (~(Nek7x6 & Rgk7x6)); +assign Rgk7x6 = (~(M4iov6 & Dz6iw6)); +assign Nek7x6 = (~(Ygk7x6 & A5iov6)); +assign Ygk7x6 = (Rxh7x6 & Fhk7x6); +assign Dgk7x6 = (Mhk7x6 & Thk7x6); +assign Thk7x6 = (~(C6iov6 & Dz6iw6)); +assign Mhk7x6 = (~(Qkj7z6[43] | Aik7x6)); +assign Aik7x6 = (Hik7x6 & Tib7z6[43]); +assign Hik7x6 = (~(Jqj7z6[52] & G5j7z6[43])); +assign A2x7v6 = (~(Oik7x6 & Vik7x6)); +assign Vik7x6 = (~(G5j7z6[44] & Cjk7x6)); +assign Cjk7x6 = (A4k7x6 | Mqi7x6); +assign A4k7x6 = (~(Z3fov6 & Jjk7x6)); +assign Jjk7x6 = (Fsliw6 | Qjk7x6); +assign T1x7v6 = (!Xjk7x6); +assign Xjk7x6 = (M6j7z6[44] ? Lkk7x6 : Ekk7x6); +assign Lkk7x6 = (~(Skk7x6 & Oik7x6)); +assign Oik7x6 = (~(Zkk7x6 & A5iov6)); +assign Zkk7x6 = (C0i7x6 & Glk7x6); +assign Skk7x6 = (~(M4iov6 & Emhov6)); +assign Ekk7x6 = (Nlk7x6 & Ulk7x6); +assign Ulk7x6 = (~(C6iov6 & Emhov6)); +assign Nlk7x6 = (~(Qkj7z6[44] | Bmk7x6)); +assign Bmk7x6 = (Imk7x6 & Tib7z6[44]); +assign Imk7x6 = (~(Jqj7z6[53] & G5j7z6[44])); +assign M1x7v6 = (~(Pmk7x6 & Wmk7x6)); +assign Wmk7x6 = (~(G5j7z6[45] & Dnk7x6)); +assign Dnk7x6 = (Knk7x6 | Gui7x6); +assign F1x7v6 = (!Rnk7x6); +assign Rnk7x6 = (M6j7z6[45] ? Fok7x6 : Ynk7x6); +assign Fok7x6 = (~(Pmk7x6 & Mok7x6)); +assign Mok7x6 = (~(M4iov6 & Guhov6)); +assign Pmk7x6 = (~(Tok7x6 & A5iov6)); +assign Tok7x6 = (Wvi7x6 & Apk7x6); +assign Ynk7x6 = (Hpk7x6 & Opk7x6); +assign Opk7x6 = (~(C6iov6 & Guhov6)); +assign Hpk7x6 = (~(Qkj7z6[45] | Vpk7x6)); +assign Vpk7x6 = (Cqk7x6 & Tib7z6[45]); +assign Cqk7x6 = (~(Jqj7z6[54] & G5j7z6[45])); +assign Y0x7v6 = (~(Jqk7x6 & Qqk7x6)); +assign Qqk7x6 = (~(G5j7z6[46] & Xqk7x6)); +assign Xqk7x6 = (Knk7x6 | Rwhov6); +assign Rwhov6 = (U4fov6 & Erk7x6); +assign Knk7x6 = (!D3iov6); +assign D3iov6 = (~(Lrk7x6 & U4fov6)); +assign Lrk7x6 = (~(Sugov6 & Qjk7x6)); +assign R0x7v6 = (!Srk7x6); +assign Srk7x6 = (M6j7z6[46] ? Gsk7x6 : Zrk7x6); +assign Gsk7x6 = (~(Jqk7x6 & Nsk7x6)); +assign Nsk7x6 = (~(M4iov6 & Bk6iw6)); +assign M4iov6 = (~(Nmoiw6 | Nq6iw6)); +assign Jqk7x6 = (~(Usk7x6 & A5iov6)); +assign A5iov6 = (~(U0k7x6 | E7iov6)); +assign U0k7x6 = (~(Btk7x6 & Sa2nv6)); +assign Btk7x6 = (P2j7z6[5] & Wfjov6); +assign Usk7x6 = (Y4i7x6 & Itk7x6); +assign Zrk7x6 = (Ptk7x6 & Wtk7x6); +assign Wtk7x6 = (~(C6iov6 & Bk6iw6)); +assign C6iov6 = (~(Dooiw6 | Nq6iw6)); +assign Ptk7x6 = (~(Qkj7z6[46] | Duk7x6)); +assign Duk7x6 = (Kuk7x6 & Tib7z6[46]); +assign Kuk7x6 = (~(Jqj7z6[55] & G5j7z6[46])); +assign K0x7v6 = (~(Ruk7x6 & Yuk7x6)); +assign Yuk7x6 = (~(Fvk7x6 & U4fov6)); +assign Ruk7x6 = (Mvk7x6 & Tvk7x6); +assign Mvk7x6 = (Z3fov6 | Up2nv6); +assign D0x7v6 = (!Awk7x6); +assign Awk7x6 = (M6j7z6[56] ? Owk7x6 : Hwk7x6); +assign Owk7x6 = (~(Vwk7x6 & Tvk7x6)); +assign Tvk7x6 = (~(Cxk7x6 & Ybi7x6)); +assign Ybi7x6 = (~(Jxk7x6 | P2j7z6[0])); +assign Cxk7x6 = (R4hov6 & Up2nv6); +assign Up2nv6 = (!G5j7z6[56]); +assign Vwk7x6 = (~(W3hov6 & Wf4iw6)); +assign Hwk7x6 = (Qxk7x6 & Xxk7x6); +assign Xxk7x6 = (~(T5hov6 & Wf4iw6)); +assign Qxk7x6 = (~(Qkj7z6[56] | Eyk7x6)); +assign Eyk7x6 = (Lyk7x6 & Tib7z6[56]); +assign Lyk7x6 = (~(Jqj7z6[65] & G5j7z6[56])); +assign Wzw7v6 = (~(Syk7x6 & Zyk7x6)); +assign Zyk7x6 = (~(Gzk7x6 & U4fov6)); +assign Syk7x6 = (Nzk7x6 & Uzk7x6); +assign Nzk7x6 = (Z3fov6 | Bq2nv6); +assign Pzw7v6 = (!B0l7x6); +assign B0l7x6 = (M6j7z6[57] ? P0l7x6 : I0l7x6); +assign P0l7x6 = (~(W0l7x6 & Uzk7x6)); +assign Uzk7x6 = (~(D1l7x6 & Ggi7x6)); +assign Ggi7x6 = (~(Jxk7x6 | Bgiov6)); +assign Jxk7x6 = (~(K1l7x6 & P2j7z6[3])); +assign K1l7x6 = (Rgjov6 & U1iov6); +assign D1l7x6 = (R4hov6 & Bq2nv6); +assign Bq2nv6 = (!G5j7z6[57]); +assign W0l7x6 = (~(W3hov6 & Iklov6)); +assign I0l7x6 = (R1l7x6 & Y1l7x6); +assign Y1l7x6 = (~(T5hov6 & Iklov6)); +assign R1l7x6 = (~(Qkj7z6[57] | F2l7x6)); +assign F2l7x6 = (M2l7x6 & Tib7z6[57]); +assign M2l7x6 = (~(Jqj7z6[66] & G5j7z6[57])); +assign Izw7v6 = (~(T2l7x6 & A3l7x6)); +assign A3l7x6 = (~(G5j7z6[58] & H3l7x6)); +assign H3l7x6 = (~(G2hov6 & Obk7x6)); +assign Obk7x6 = (~(U4fov6 & O3l7x6)); +assign Bzw7v6 = (!V3l7x6); +assign V3l7x6 = (M6j7z6[58] ? J4l7x6 : C4l7x6); +assign J4l7x6 = (~(T2l7x6 & Q4l7x6)); +assign Q4l7x6 = (~(W3hov6 & E64iw6)); +assign T2l7x6 = (~(X4l7x6 & Hki7x6)); +assign Hki7x6 = (~(E5l7x6 | P2j7z6[0])); +assign X4l7x6 = (R4hov6 & Iq2nv6); +assign C4l7x6 = (L5l7x6 & S5l7x6); +assign S5l7x6 = (~(T5hov6 & E64iw6)); +assign L5l7x6 = (~(Qkj7z6[58] | Z5l7x6)); +assign Z5l7x6 = (G6l7x6 & Tib7z6[58]); +assign G6l7x6 = (~(Jqj7z6[67] & G5j7z6[58])); +assign Uyw7v6 = (~(N6l7x6 & U6l7x6)); +assign U6l7x6 = (B7l7x6 | Fsliw6); +assign N6l7x6 = (I7l7x6 & P7l7x6); +assign I7l7x6 = (~(G5j7z6[59] & Kwhov6)); +assign Nyw7v6 = (!W7l7x6); +assign W7l7x6 = (M6j7z6[59] ? K8l7x6 : D8l7x6); +assign K8l7x6 = (~(P7l7x6 & R8l7x6)); +assign R8l7x6 = (~(W3hov6 & H44iw6)); +assign P7l7x6 = (~(Y8l7x6 & Rxh7x6)); +assign Rxh7x6 = (~(E5l7x6 | Bgiov6)); +assign E5l7x6 = (~(F9l7x6 & P2j7z6[3])); +assign F9l7x6 = (P2j7z6[1] & U1iov6); +assign Y8l7x6 = (R4hov6 & So2nv6); +assign D8l7x6 = (M9l7x6 & T9l7x6); +assign T9l7x6 = (~(T5hov6 & H44iw6)); +assign M9l7x6 = (~(Qkj7z6[59] | Aal7x6)); +assign Aal7x6 = (Hal7x6 & Tib7z6[59]); +assign Hal7x6 = (~(Jqj7z6[68] & G5j7z6[59])); +assign Gyw7v6 = (~(Oal7x6 & Val7x6)); +assign Val7x6 = (~(G5j7z6[52] & Cbl7x6)); +assign Cbl7x6 = (~(G2hov6 & L2miw6)); +assign L2miw6 = (Fsliw6 | Cshov6); +assign Zxw7v6 = (!Jbl7x6); +assign Jbl7x6 = (M6j7z6[52] ? Xbl7x6 : Qbl7x6); +assign Xbl7x6 = (~(Ecl7x6 & Oal7x6)); +assign Oal7x6 = (~(Lcl7x6 & Uuhov6)); +assign Lcl7x6 = (R4hov6 & Scl7x6); +assign Ecl7x6 = (~(X7niw6 & Bl5iw6)); +assign Qbl7x6 = (Zcl7x6 & Gdl7x6); +assign Gdl7x6 = (~(S8niw6 & Bl5iw6)); +assign Zcl7x6 = (~(Qkj7z6[52] | Ndl7x6)); +assign Ndl7x6 = (Udl7x6 & Tib7z6[52]); +assign Udl7x6 = (~(Jqj7z6[61] & G5j7z6[52])); +assign Sxw7v6 = (~(Bel7x6 & Iel7x6)); +assign Iel7x6 = (~(G5j7z6[53] & Pel7x6)); +assign Pel7x6 = (~(G2hov6 & Qlniw6)); +assign Lxw7v6 = (!Wel7x6); +assign Wel7x6 = (M6j7z6[53] ? Kfl7x6 : Dfl7x6); +assign Kfl7x6 = (~(Bel7x6 & Rfl7x6)); +assign Rfl7x6 = (~(X7niw6 & Ej5iw6)); +assign Bel7x6 = (~(Yfl7x6 & Gnniw6)); +assign Yfl7x6 = (R4hov6 & Fgl7x6); +assign Dfl7x6 = (Mgl7x6 & Tgl7x6); +assign Tgl7x6 = (~(S8niw6 & Ej5iw6)); +assign Mgl7x6 = (~(Qkj7z6[53] | Ahl7x6)); +assign Ahl7x6 = (Hhl7x6 & Tib7z6[53]); +assign Hhl7x6 = (~(Jqj7z6[62] & G5j7z6[53])); +assign Exw7v6 = (~(Ohl7x6 & Vhl7x6)); +assign Vhl7x6 = (~(G5j7z6[54] & Cil7x6)); +assign Cil7x6 = (~(G2hov6 & F6miw6)); +assign F6miw6 = (Fsliw6 | Rphov6); +assign Xww7v6 = (!Jil7x6); +assign Jil7x6 = (M6j7z6[54] ? Xil7x6 : Qil7x6); +assign Xil7x6 = (~(Ohl7x6 & Ejl7x6)); +assign Ejl7x6 = (~(X7niw6 & D85iw6)); +assign Ohl7x6 = (~(Ljl7x6 & Gnhov6)); +assign Ljl7x6 = (R4hov6 & Sjl7x6); +assign Qil7x6 = (Zjl7x6 & Gkl7x6); +assign Gkl7x6 = (~(S8niw6 & D85iw6)); +assign Zjl7x6 = (~(Qkj7z6[54] | Nkl7x6)); +assign Nkl7x6 = (Ukl7x6 & Tib7z6[54]); +assign Ukl7x6 = (~(Jqj7z6[63] & G5j7z6[54])); +assign Qww7v6 = (~(Bll7x6 & Ill7x6)); +assign Ill7x6 = (~(G5j7z6[55] & Pll7x6)); +assign Pll7x6 = (~(G2hov6 & Rpniw6)); +assign Rpniw6 = (J6oiw6 | Fsliw6); +assign G2hov6 = (!Kwhov6); +assign Jww7v6 = (!Wll7x6); +assign Wll7x6 = (M6j7z6[55] ? Kml7x6 : Dml7x6); +assign Kml7x6 = (~(Bll7x6 & Rml7x6)); +assign Rml7x6 = (~(X7niw6 & Cx4iw6)); +assign X7niw6 = (~(Nmoiw6 | Ie5iw6)); +assign Bll7x6 = (~(Orniw6 & Yml7x6)); +assign Yml7x6 = (R4hov6 & Fnl7x6); +assign Orniw6 = (Mnl7x6 & P2j7z6[1]); +assign Dml7x6 = (Tnl7x6 & Aol7x6); +assign Aol7x6 = (~(S8niw6 & Cx4iw6)); +assign S8niw6 = (~(Dooiw6 | Ie5iw6)); +assign Tnl7x6 = (~(Qkj7z6[55] | Hol7x6)); +assign Hol7x6 = (Ool7x6 & Tib7z6[55]); +assign Ool7x6 = (~(Jqj7z6[64] & G5j7z6[55])); +assign Cww7v6 = (~(Vol7x6 & Cpl7x6)); +assign Cpl7x6 = (~(G5j7z6[60] & Jpl7x6)); +assign Jpl7x6 = (Kwhov6 | Mqi7x6); +assign Mqi7x6 = (Qpl7x6 & U4fov6); +assign Vvw7v6 = (!Xpl7x6); +assign Xpl7x6 = (M6j7z6[60] ? Lql7x6 : Eql7x6); +assign Lql7x6 = (~(Sql7x6 & Vol7x6)); +assign Vol7x6 = (~(Zql7x6 & R4hov6)); +assign Zql7x6 = (C0i7x6 & Grl7x6); +assign Sql7x6 = (~(W3hov6 & W14iw6)); +assign Eql7x6 = (Nrl7x6 & Url7x6); +assign Url7x6 = (~(T5hov6 & W14iw6)); +assign Nrl7x6 = (~(Qkj7z6[60] | Bsl7x6)); +assign Bsl7x6 = (Isl7x6 & Tib7z6[60]); +assign Isl7x6 = (~(Jqj7z6[69] & G5j7z6[60])); +assign Ovw7v6 = (~(Psl7x6 & Wsl7x6)); +assign Wsl7x6 = (~(G5j7z6[61] & Dtl7x6)); +assign Dtl7x6 = (Kwhov6 | Gui7x6); +assign Gui7x6 = (Ktl7x6 & U4fov6); +assign Kwhov6 = (~(Rtl7x6 & Z3fov6)); +assign Z3fov6 = (~(U4fov6 & Sh2nv6)); +assign Rtl7x6 = (~(Ytl7x6 & U4fov6)); +assign U4fov6 = (!Fsliw6); +assign Hvw7v6 = (!Ful7x6); +assign Ful7x6 = (M6j7z6[61] ? Tul7x6 : Mul7x6); +assign Tul7x6 = (~(Psl7x6 & Avl7x6)); +assign Avl7x6 = (~(W3hov6 & Zz3iw6)); +assign Psl7x6 = (~(Hvl7x6 & Wvi7x6)); +assign Wvi7x6 = (Ovl7x6 & Rc3nv6); +assign Ovl7x6 = (P2j7z6[0] & Rgjov6); +assign Hvl7x6 = (R4hov6 & Vvl7x6); +assign Mul7x6 = (Cwl7x6 & Jwl7x6); +assign Jwl7x6 = (~(T5hov6 & Zz3iw6)); +assign Cwl7x6 = (~(Qkj7z6[61] | Qwl7x6)); +assign Qwl7x6 = (Xwl7x6 & Tib7z6[61]); +assign Xwl7x6 = (~(Jqj7z6[70] & G5j7z6[61])); +assign Avw7v6 = (~(Exl7x6 & Lxl7x6)); +assign Lxl7x6 = (~(Sxl7x6 & Zxl7x6)); +assign Zxl7x6 = (~(Jqj7z6[3] & Z3j7z6[1])); +assign Sxl7x6 = (E6a7z6 & Yfdov6); +assign Exl7x6 = (Qlhov6 ? Nyl7x6 : Gyl7x6); +assign Qlhov6 = (~(Uyl7x6 | Nq6iw6)); +assign Uyl7x6 = (!Bzl7x6); +assign Nyl7x6 = (~(Izl7x6 & Bk6iw6)); +assign Izl7x6 = (Pzl7x6 | Yfdov6); +assign Gyl7x6 = (~(Z3j7z6[14] & Pzl7x6)); +assign Tuw7v6 = (~(Wzl7x6 & Pzl7x6)); +assign Pzl7x6 = (~(D0m7x6 & Vzgov6)); +assign Vzgov6 = (~(Ga3nv6 | K0m7x6)); +assign D0m7x6 = (Gnniw6 & R0m7x6); +assign Wzl7x6 = (Z3j7z6[1] ? F1m7x6 : Y0m7x6); +assign F1m7x6 = (~(M1m7x6 & T1m7x6)); +assign T1m7x6 = (~(Qlniw6 & A2m7x6)); +assign A2m7x6 = (Fsliw6 | Kphov6); +assign Kphov6 = (Sugov6 & H2m7x6); +assign Qlniw6 = (I2oiw6 | Fsliw6); +assign Fsliw6 = (Dtjiw6 & B52nv6); +assign Dtjiw6 = (O2m7x6 & V2m7x6); +assign V2m7x6 = (C3m7x6 & J3m7x6); +assign J3m7x6 = (Q3m7x6 & Bqi7z6[0]); +assign Q3m7x6 = (Bl5iw6 & Gr5iw6); +assign C3m7x6 = (X3m7x6 & Wagiw6); +assign X3m7x6 = (Bqi7z6[3] & Bqi7z6[1]); +assign O2m7x6 = (E4m7x6 & L4m7x6); +assign L4m7x6 = (S4m7x6 & Z4m7x6); +assign S4m7x6 = (Fcgiw6 & Sufiw6); +assign E4m7x6 = (G5m7x6 & T68iw6); +assign G5m7x6 = (Zy4iw6 & N5m7x6); +assign M1m7x6 = (~(L19iw6 & Wohov6)); +assign Y0m7x6 = (~(Wohov6 & B52nv6)); +assign Wohov6 = (Bzl7x6 & Bqi7z6[0]); +assign Muw7v6 = (~(U5m7x6 & B6m7x6)); +assign B6m7x6 = (~(Byi7z6[1] & I6m7x6)); +assign I6m7x6 = (~(P6m7x6 & W6m7x6)); +assign P6m7x6 = (Bqi7z6[0] & B52nv6); +assign Fuw7v6 = (~(D7m7x6 & K7m7x6)); +assign K7m7x6 = (~(R7m7x6 & Y7m7x6)); +assign R7m7x6 = (~(Xsinv6 | F8m7x6)); +assign D7m7x6 = (~(Byi7z6[31] & M8m7x6)); +assign M8m7x6 = (~(W6m7x6 & Gg2iw6)); +assign Ytw7v6 = (~(T8m7x6 & A9m7x6)); +assign A9m7x6 = (~(H9m7x6 & Etinv6)); +assign H9m7x6 = (~(O9m7x6 | Y7m7x6)); +assign Y7m7x6 = (Ffadt6 & V9m7x6); +assign T8m7x6 = (~(Byi7z6[30] & Cam7x6)); +assign Cam7x6 = (~(W6m7x6 & Nf3iw6)); +assign W6m7x6 = (Kgbiw6 & T68iw6); +assign Kgbiw6 = (Eec7x6 & Toi7z6[2]); +assign Rtw7v6 = (!Jam7x6); +assign Jam7x6 = (M6j7z6[62] ? Xam7x6 : Qam7x6); +assign Xam7x6 = (~(Pvhov6 & Ebm7x6)); +assign Ebm7x6 = (~(W3hov6 & Ro3iw6)); +assign W3hov6 = (~(Nmoiw6 | Dv3iw6)); +assign Nmoiw6 = (~(Feeiw6 & G0k7x6)); +assign Feeiw6 = (Toi7z6[2] & Toi7z6[7]); +assign Pvhov6 = (~(Lbm7x6 & Y4i7x6)); +assign Y4i7x6 = (Sbm7x6 & Rc3nv6); +assign Sbm7x6 = (P2j7z6[1] & Bgiov6); +assign Lbm7x6 = (R4hov6 & Zbm7x6); +assign R4hov6 = (Gcm7x6 & Ncm7x6); +assign Ncm7x6 = (E7iov6 & Owjov6); +assign Gcm7x6 = (Sa2nv6 & P2j7z6[6]); +assign Qam7x6 = (Ucm7x6 & Bdm7x6); +assign Bdm7x6 = (~(T5hov6 & Ro3iw6)); +assign T5hov6 = (~(Dooiw6 | Dv3iw6)); +assign Dooiw6 = (~(Meeiw6 & G0k7x6)); +assign G0k7x6 = (Teeiw6 & Idm7x6); +assign Idm7x6 = (Toi7z6[9] & Hfeiw6); +assign Hfeiw6 = (!Toi7z6[8]); +assign Teeiw6 = (~(Pdm7x6 | X88iw6)); +assign X88iw6 = (!Wdm7x6); +assign Meeiw6 = (Toi7z6[2] & D2k7x6); +assign Ucm7x6 = (~(Qkj7z6[62] | Dem7x6)); +assign Dem7x6 = (Kem7x6 & Tib7z6[62]); +assign Kem7x6 = (~(Jqj7z6[71] & G5j7z6[62])); +assign Ktw7v6 = (Rem7x6 ? Gvd7z6[0] : Vjc7z6[1]); +assign Dtw7v6 = (Rem7x6 ? Gvd7z6[6] : Vjc7z6[31]); +assign Wsw7v6 = (Rem7x6 ? Gvd7z6[5] : Vjc7z6[6]); +assign Psw7v6 = (Rem7x6 ? Gvd7z6[4] : Vjc7z6[5]); +assign Isw7v6 = (Rem7x6 ? Gvd7z6[3] : Vjc7z6[4]); +assign Bsw7v6 = (Rem7x6 ? Gvd7z6[2] : Vjc7z6[3]); +assign Urw7v6 = (Rem7x6 ? Gvd7z6[1] : Vjc7z6[2]); +assign Nrw7v6 = (~(Yem7x6 & Ffm7x6)); +assign Ffm7x6 = (~(Ebdiw6 & Zhg7x6)); +assign Yem7x6 = (Mfm7x6 & Tfm7x6); +assign Tfm7x6 = (~(Agm7x6 & Hgm7x6)); +assign Hgm7x6 = (~(Ogm7x6 & Rkg7x6)); +assign Rkg7x6 = (Vgm7x6 | Chm7x6); +assign Vgm7x6 = (~(Eofov6 & Jhm7x6)); +assign Jhm7x6 = (~(Zamov6 & Vs9ov6)); +assign Ogm7x6 = (Qhm7x6 | Rd2nv6); +assign Rd2nv6 = (~(Zgadt6 & Xhm7x6)); +assign Xhm7x6 = (~(Zamov6 & Ga3nv6)); +assign Qhm7x6 = (~(Q7hov6 & Eim7x6)); +assign Eim7x6 = (~(Lim7x6 & Zamov6)); +assign Agm7x6 = (Amg7x6 ? Vm2nv6 : Ldo7v6); +assign Vm2nv6 = (!Z3j7z6[8]); +assign Mfm7x6 = (~(Bxi7z6[0] & Sim7x6)); +assign Sim7x6 = (~(O8fov6 & U42nv6)); +assign Grw7v6 = (~(Zim7x6 & Gjm7x6)); +assign Gjm7x6 = (~(Njm7x6 & Fe2nv6)); +assign Njm7x6 = (~(F02nv6 | Ykg7x6)); +assign Ykg7x6 = (Ujm7x6 & Bkm7x6); +assign Bkm7x6 = (~(Ikm7x6 & Zodet6)); +assign Ikm7x6 = (~(Cr97z6 | Yfadt6)); +assign Ujm7x6 = (~(Sa2nv6 & Jnfov6)); +assign Jnfov6 = (~(Pkm7x6 & Wkm7x6)); +assign Wkm7x6 = (Dlm7x6 & Klm7x6); +assign Klm7x6 = (~(Rlm7x6 & Ylm7x6)); +assign Ylm7x6 = (W2eet6 & Fmm7x6); +assign Fmm7x6 = (Byi7z6[1] | Byi7z6[30]); +assign Rlm7x6 = (Mmm7x6 & Mjniw6); +assign Dlm7x6 = (Tmm7x6 & Anm7x6); +assign Anm7x6 = (~(Hnm7x6 & Onm7x6)); +assign Onm7x6 = (Tnzdt6 & Vnm7x6); +assign Vnm7x6 = (~(Com7x6 & Jom7x6)); +assign Jom7x6 = (~(Qom7x6 & Mjniw6)); +assign Mjniw6 = (~(Qroiw6 | Rgjov6)); +assign Qroiw6 = (~(Xom7x6 & P2j7z6[0])); +assign Qom7x6 = (Byi7z6[1] & Dc3nv6); +assign Com7x6 = (~(Epm7x6 & Dc3nv6)); +assign Epm7x6 = (Lpm7x6 & Rgjov6); +assign Lpm7x6 = (~(Spm7x6 & Zpm7x6)); +assign Zpm7x6 = (~(Mnl7x6 & Gqm7x6)); +assign Gqm7x6 = (Bzi7z6[11] | Bzi7z6[12]); +assign Spm7x6 = (~(Nqm7x6 & Uqm7x6)); +assign Uqm7x6 = (Bzi7z6[3] | Bzi7z6[4]); +assign Hnm7x6 = (Fe2nv6 & X0eet6); +assign Tmm7x6 = (~(Brm7x6 & Irm7x6)); +assign Irm7x6 = (Brdet6 & Prm7x6); +assign Prm7x6 = (Bzi7z6[0] | Bzi7z6[1]); +assign Brm7x6 = (Mmm7x6 & Uuhov6); +assign Uuhov6 = (Nqm7x6 & Rgjov6); +assign Pkm7x6 = (Wrm7x6 & Dsm7x6); +assign Dsm7x6 = (~(Ksm7x6 & Rsm7x6)); +assign Rsm7x6 = (Yydet6 & Ysm7x6); +assign Ysm7x6 = (Ftm7x6 | Bzi7z6[10]); +assign Ftm7x6 = (Bzi7z6[8] | Bzi7z6[9]); +assign Ksm7x6 = (Mmm7x6 & Gnniw6); +assign Gnniw6 = (Mnl7x6 & Rgjov6); +assign Mnl7x6 = (Mtm7x6 & P2j7z6[0]); +assign Mtm7x6 = (P2j7z6[2] & Z7iov6); +assign Wrm7x6 = (~(Ttm7x6 & Mmm7x6)); +assign Mmm7x6 = (Aum7x6 & Fe2nv6); +assign Aum7x6 = (Dc3nv6 & Tnzdt6); +assign Ttm7x6 = (Gnhov6 & Hum7x6); +assign Hum7x6 = (~(Oum7x6 & Vum7x6)); +assign Vum7x6 = (~(Bzi7z6[19] & Zsdet6)); +assign Oum7x6 = (Cvm7x6 & Jvm7x6); +assign Jvm7x6 = (~(Zudet6 & Qvm7x6)); +assign Qvm7x6 = (Bzi7z6[25] | Bzi7z6[24]); +assign Cvm7x6 = (~(Ywdet6 & Xvm7x6)); +assign Xvm7x6 = (Ewm7x6 | Bzi7z6[16]); +assign Ewm7x6 = (Bzi7z6[17] | Bzi7z6[18]); +assign Gnhov6 = (Nqm7x6 & P2j7z6[1]); +assign Nqm7x6 = (Lwm7x6 & P2j7z6[2]); +assign Lwm7x6 = (Bgiov6 & Z7iov6); +assign Zim7x6 = (~(Bxi7z6[3] & Swm7x6)); +assign Swm7x6 = (~(O8fov6 & P52nv6)); +assign Zqw7v6 = (~(Zwm7x6 & Gxm7x6)); +assign Gxm7x6 = (~(Nxm7x6 & Nxeov6)); +assign Zwm7x6 = (Uxm7x6 & Bym7x6); +assign Bym7x6 = (~(Sriiw6 & Iym7x6)); +assign Iym7x6 = (~(Fjadt6 & Pym7x6)); +assign Uxm7x6 = (~(Fjb7z6[1] & Lriiw6)); +assign Sqw7v6 = (~(Wym7x6 & Dzm7x6)); +assign Dzm7x6 = (Kzm7x6 & Rzm7x6); +assign Rzm7x6 = (~(J6bov6 & Alf7z6[1])); +assign J6bov6 = (Yzm7x6 & F0n7x6); +assign F0n7x6 = (!C6bov6); +assign Kzm7x6 = (~(C6bov6 & Se2jw6)); +assign Se2jw6 = (~(M0n7x6 & T0n7x6)); +assign T0n7x6 = (~(A1n7x6 & H1n7x6)); +assign H1n7x6 = (~(O1n7x6 & V1n7x6)); +assign V1n7x6 = (C2n7x6 & J2n7x6); +assign J2n7x6 = (A1v6x6 | J2v6x6); +assign J2v6x6 = (Q2n7x6 & X2n7x6); +assign X2n7x6 = (E3n7x6 & L3n7x6); +assign L3n7x6 = (Mkw6x6 | Vf27x6); +assign Vf27x6 = (Sx07x6 & Kf07x6); +assign Kf07x6 = (S3n7x6 & Z3n7x6); +assign Z3n7x6 = (~(Cve7z6[11] & Sb17x6)); +assign S3n7x6 = (~(Cve7z6[27] & Kbx6x6)); +assign Sx07x6 = (G4n7x6 & N4n7x6); +assign N4n7x6 = (~(Cve7z6[3] & We07x6)); +assign G4n7x6 = (~(Cve7z6[19] & Dbx6x6)); +assign E3n7x6 = (~(Xzx6x6 & U4n7x6)); +assign U4n7x6 = (~(Id17x6 & Yk27x6)); +assign Yk27x6 = (B5n7x6 & I5n7x6); +assign I5n7x6 = (~(Cve7z6[15] & Sb17x6)); +assign B5n7x6 = (~(Kbx6x6 & Neo7v6)); +assign Id17x6 = (P5n7x6 & W5n7x6); +assign W5n7x6 = (~(Cve7z6[7] & We07x6)); +assign P5n7x6 = (~(Cve7z6[23] & Dbx6x6)); +assign Q2n7x6 = (D6n7x6 & K6n7x6); +assign K6n7x6 = (E1x6x6 | Hwz6x6); +assign Hwz6x6 = (R6n7x6 & Vzw6x6); +assign Vzw6x6 = (Y6n7x6 & F7n7x6); +assign F7n7x6 = (~(Cve7z6[22] & Sb17x6)); +assign Y6n7x6 = (~(Cve7z6[6] & Kbx6x6)); +assign R6n7x6 = (Vh07x6 & M7n7x6); +assign M7n7x6 = (~(Cve7z6[30] & We07x6)); +assign Vh07x6 = (~(Cve7z6[14] & Dbx6x6)); +assign D6n7x6 = (Juv6x6 | Lh27x6); +assign Lh27x6 = (T7n7x6 & Svv6x6); +assign Svv6x6 = (A8n7x6 & H8n7x6); +assign H8n7x6 = (~(Cve7z6[18] & Sb17x6)); +assign A8n7x6 = (~(Cve7z6[2] & Kbx6x6)); +assign T7n7x6 = (Hh07x6 & O8n7x6); +assign O8n7x6 = (~(Cve7z6[26] & We07x6)); +assign Hh07x6 = (~(Cve7z6[10] & Dbx6x6)); +assign A1v6x6 = (~(V8n7x6 & C9n7x6)); +assign C2n7x6 = (Q2v6x6 | V8v6x6); +assign V8v6x6 = (J9n7x6 & Q9n7x6); +assign Q9n7x6 = (X9n7x6 & Ean7x6); +assign Ean7x6 = (Juv6x6 | Kk27x6); +assign Kk27x6 = (Lan7x6 & Cxz6x6); +assign Cxz6x6 = (San7x6 & Zan7x6); +assign Zan7x6 = (~(Cve7z6[19] & Sb17x6)); +assign Cve7z6[19] = (Dte7z6[9] & Fhc7z6[19]); +assign San7x6 = (~(Cve7z6[3] & Kbx6x6)); +assign Cve7z6[3] = (Dte7z6[9] & E3c7z6[3]); +assign Lan7x6 = (Y807x6 & Gbn7x6); +assign Gbn7x6 = (~(Cve7z6[27] & We07x6)); +assign Cve7z6[27] = (Dte7z6[9] & Fhc7z6[27]); +assign Y807x6 = (~(Cve7z6[11] & Dbx6x6)); +assign Cve7z6[11] = (Dte7z6[9] & Fhc7z6[11]); +assign X9n7x6 = (E1x6x6 | Ex07x6); +assign Ex07x6 = (Nbn7x6 & J7x6x6); +assign J7x6x6 = (Ubn7x6 & Bcn7x6); +assign Bcn7x6 = (~(Cve7z6[23] & Sb17x6)); +assign Cve7z6[23] = (Dte7z6[9] & Fhc7z6[23]); +assign Ubn7x6 = (~(Cve7z6[7] & Kbx6x6)); +assign Cve7z6[7] = (Dte7z6[9] & Fhc7z6[7]); +assign Nbn7x6 = (Af27x6 & Icn7x6); +assign Icn7x6 = (~(We07x6 & Neo7v6)); +assign Af27x6 = (~(Cve7z6[15] & Dbx6x6)); +assign Cve7z6[15] = (Dte7z6[9] & Fhc7z6[15]); +assign J9n7x6 = (Pcn7x6 & Wcn7x6); +assign Wcn7x6 = (Mkw6x6 | Pj27x6); +assign Pj27x6 = (K017x6 & N607x6); +assign N607x6 = (Ddn7x6 & Kdn7x6); +assign Kdn7x6 = (~(Cve7z6[12] & Sb17x6)); +assign Ddn7x6 = (~(Cve7z6[28] & Kbx6x6)); +assign K017x6 = (Rdn7x6 & Ydn7x6); +assign Ydn7x6 = (~(Cve7z6[4] & We07x6)); +assign Rdn7x6 = (~(Cve7z6[20] & Dbx6x6)); +assign Pcn7x6 = (~(Xzx6x6 & Jw07x6)); +assign Jw07x6 = (~(Zi17x6 & Pq27x6)); +assign Pq27x6 = (Fen7x6 & Men7x6); +assign Men7x6 = (~(Sb17x6 & Cve7z6[16])); +assign Fen7x6 = (~(Cve7z6[0] & Kbx6x6)); +assign Zi17x6 = (Ten7x6 & Afn7x6); +assign Afn7x6 = (~(Cve7z6[8] & We07x6)); +assign Ten7x6 = (~(Cve7z6[24] & Dbx6x6)); +assign Q2v6x6 = (C9n7x6 | V8n7x6); +assign V8n7x6 = (!Hfn7x6); +assign O1n7x6 = (Ofn7x6 & Vfn7x6); +assign Vfn7x6 = (C2v6x6 | C9v6x6); +assign C9v6x6 = (Cgn7x6 & Jgn7x6); +assign Jgn7x6 = (~(Vlw6x6 & Bq27x6)); +assign Bq27x6 = (~(Qgn7x6 & Tkw6x6)); +assign Tkw6x6 = (Xgn7x6 & Ehn7x6); +assign Ehn7x6 = (~(Cve7z6[20] & Sb17x6)); +assign Cve7z6[20] = (Dte7z6[9] & Fhc7z6[20]); +assign Xgn7x6 = (~(Cve7z6[4] & Kbx6x6)); +assign Cve7z6[4] = (Dte7z6[9] & E3c7z6[4]); +assign Qgn7x6 = (Zc07x6 & Lhn7x6); +assign Lhn7x6 = (~(Cve7z6[28] & We07x6)); +assign Cve7z6[28] = (Dte7z6[9] & Fhc7z6[28]); +assign Zc07x6 = (~(Cve7z6[12] & Dbx6x6)); +assign Cve7z6[12] = (Dte7z6[9] & Fhc7z6[12]); +assign Cgn7x6 = (Shn7x6 & Zhn7x6); +assign Zhn7x6 = (Lvv6x6 | Bz07x6); +assign Lvv6x6 = (!Xzx6x6); +assign Shn7x6 = (~(Zvv6x6 & Wz07x6)); +assign Wz07x6 = (~(Ja17x6 & Ui27x6)); +assign Ui27x6 = (Gin7x6 & Nin7x6); +assign Nin7x6 = (~(Cve7z6[0] & We07x6)); +assign Cve7z6[0] = (Dte7z6[9] & E3c7z6[0]); +assign Gin7x6 = (~(Cve7z6[16] & Dbx6x6)); +assign Cve7z6[16] = (Dte7z6[9] & Fhc7z6[16]); +assign Ja17x6 = (Uin7x6 & Bjn7x6); +assign Bjn7x6 = (~(Cve7z6[24] & Sb17x6)); +assign Cve7z6[24] = (Dte7z6[9] & Fhc7z6[24]); +assign Uin7x6 = (~(Cve7z6[8] & Kbx6x6)); +assign Cve7z6[8] = (Dte7z6[9] & Fhc7z6[8]); +assign C2v6x6 = (C9n7x6 | Hfn7x6); +assign Ofn7x6 = (M0v6x6 | X2v6x6); +assign X2v6x6 = (Ijn7x6 & Pjn7x6); +assign Pjn7x6 = (Wjn7x6 & Dkn7x6); +assign Dkn7x6 = (Mkw6x6 | Y2z6x6); +assign Y2z6x6 = (U517x6 & Ha07x6); +assign Ha07x6 = (Kkn7x6 & Rkn7x6); +assign Rkn7x6 = (~(Cve7z6[10] & Sb17x6)); +assign Cve7z6[10] = (Dte7z6[9] & Fhc7z6[10]); +assign Kkn7x6 = (~(Cve7z6[26] & Kbx6x6)); +assign Cve7z6[26] = (Dte7z6[9] & Fhc7z6[26]); +assign U517x6 = (Ykn7x6 & Fln7x6); +assign Fln7x6 = (~(Cve7z6[2] & We07x6)); +assign Cve7z6[2] = (Dte7z6[9] & E3c7z6[2]); +assign Ykn7x6 = (~(Cve7z6[18] & Dbx6x6)); +assign Cve7z6[18] = (Dte7z6[9] & Fhc7z6[18]); +assign Mkw6x6 = (!V307x6); +assign V307x6 = (~(Fwbov6 | Cnv6x6)); +assign Wjn7x6 = (~(Xzx6x6 & Mln7x6)); +assign Mln7x6 = (~(I617x6 & Xg27x6)); +assign Xg27x6 = (Tln7x6 & Amn7x6); +assign Amn7x6 = (~(Cve7z6[14] & Sb17x6)); +assign Cve7z6[14] = (Dte7z6[9] & Fhc7z6[14]); +assign Tln7x6 = (~(Cve7z6[30] & Kbx6x6)); +assign Cve7z6[30] = (Dte7z6[9] & Fhc7z6[30]); +assign I617x6 = (Hmn7x6 & Omn7x6); +assign Omn7x6 = (~(Cve7z6[6] & We07x6)); +assign Cve7z6[6] = (Dte7z6[9] & Fhc7z6[6]); +assign Hmn7x6 = (~(Cve7z6[22] & Dbx6x6)); +assign Cve7z6[22] = (Dte7z6[9] & Fhc7z6[22]); +assign Xzx6x6 = (~(Fwbov6 | Zuw6x6)); +assign Ijn7x6 = (Vmn7x6 & Cnn7x6); +assign Cnn7x6 = (E1x6x6 | Quv6x6); +assign Quv6x6 = (Jnn7x6 & Asw6x6); +assign Asw6x6 = (Qnn7x6 & Xnn7x6); +assign Xnn7x6 = (~(Cve7z6[21] & Sb17x6)); +assign Cve7z6[21] = (Dte7z6[9] & Fhc7z6[21]); +assign Qnn7x6 = (~(Cve7z6[5] & Kbx6x6)); +assign Cve7z6[5] = (Dte7z6[9] & Fhc7z6[5]); +assign Jnn7x6 = (X407x6 & Eon7x6); +assign Eon7x6 = (~(Cve7z6[29] & We07x6)); +assign Cve7z6[29] = (Dte7z6[9] & Fhc7z6[29]); +assign X407x6 = (~(Cve7z6[13] & Dbx6x6)); +assign Cve7z6[13] = (Dte7z6[9] & Fhc7z6[13]); +assign E1x6x6 = (!Zvv6x6); +assign Zvv6x6 = (~(Lon7x6 | Cnv6x6)); +assign Vmn7x6 = (Juv6x6 | A4z6x6); +assign A4z6x6 = (Son7x6 & Bz07x6); +assign Bz07x6 = (Zon7x6 & Gpn7x6); +assign Gpn7x6 = (~(Cve7z6[17] & Sb17x6)); +assign Cve7z6[17] = (Dte7z6[9] & Fhc7z6[17]); +assign Zon7x6 = (~(Cve7z6[1] & Kbx6x6)); +assign Cve7z6[1] = (Dte7z6[9] & E3c7z6[1]); +assign Son7x6 = (J407x6 & Npn7x6); +assign Npn7x6 = (~(Cve7z6[25] & We07x6)); +assign We07x6 = (~(Upn7x6 | Bqn7x6)); +assign Cve7z6[25] = (Dte7z6[9] & Fhc7z6[25]); +assign J407x6 = (~(Cve7z6[9] & Dbx6x6)); +assign Cve7z6[9] = (Dte7z6[9] & Fhc7z6[9]); +assign Juv6x6 = (!Vlw6x6); +assign Vlw6x6 = (~(Zuw6x6 | Lon7x6)); +assign M0v6x6 = (~(C9n7x6 & Hfn7x6)); +assign Hfn7x6 = (~(Vkx6x6 ^ Lon7x6)); +assign C9n7x6 = (Fwbov6 ^ Iqn7x6); +assign A1n7x6 = (~(Dzu6x6 ^ Pqn7x6)); +assign M0n7x6 = (~(Xrbov6 & Wqn7x6)); +assign Wqn7x6 = (Dzu6x6 | Pqn7x6); +assign Pqn7x6 = (Drn7x6 & Eav6x6); +assign Eav6x6 = (~(Krn7x6 | Rbx6x6)); +assign Rbx6x6 = (~(Rrn7x6 & Okx6x6)); +assign Okx6x6 = (~(Dbx6x6 & Zav6x6)); +assign Dbx6x6 = (Upn7x6 & Yrn7x6); +assign Rrn7x6 = (~(Ajy6x6 | Sb17x6)); +assign Sb17x6 = (Bqn7x6 & Fsn7x6); +assign Ajy6x6 = (Kbx6x6 & Zav6x6); +assign Krn7x6 = (~(Vfv6x6 & Py17x6)); +assign Py17x6 = (Zav6x6 | Kbx6x6); +assign Vfv6x6 = (Msn7x6 & Wubov6); +assign Msn7x6 = (Tsn7x6 & Atn7x6); +assign Drn7x6 = (Zav6x6 ? Qgv6x6 : Kuz6x6); +assign Qgv6x6 = (Sav6x6 & Vkx6x6); +assign Sav6x6 = (Zuw6x6 & Iqn7x6); +assign Dzu6x6 = (~(Htn7x6 & Wubov6)); +assign Wubov6 = (Otn7x6 & Vtn7x6); +assign Vtn7x6 = (~(Cun7x6 & Jun7x6)); +assign Jun7x6 = (Tsn7x6 & Fwbov6); +assign Fwbov6 = (!Lon7x6); +assign Cun7x6 = (~(Ntbov6 | Kvbov6)); +assign Otn7x6 = (~(Lsbov6 & Utbov6)); +assign Lsbov6 = (Kvbov6 & Tsn7x6); +assign Tsn7x6 = (~(Dte7z6[6] & Dte7z6[7])); +assign Htn7x6 = (Atn7x6 & Zav6x6); +assign Zav6x6 = (~(Lon7x6 & Ntbov6)); +assign Ntbov6 = (~(Kbx6x6 & Yt07x6)); +assign Yt07x6 = (Kuz6x6 & Jry6x6); +assign Jry6x6 = (!Vkx6x6); +assign Vkx6x6 = (~(Qun7x6 & Xun7x6)); +assign Xun7x6 = (~(Dte7z6[11] & Kxb7z6[0])); +assign Qun7x6 = (~(Ple7z6[0] & Dte7z6[10])); +assign Kuz6x6 = (Evn7x6 & Cnv6x6); +assign Cnv6x6 = (!Zuw6x6); +assign Zuw6x6 = (~(Lvn7x6 & Svn7x6)); +assign Svn7x6 = (~(Dte7z6[11] & Kxb7z6[2])); +assign Lvn7x6 = (~(Ple7z6[2] & Dte7z6[10])); +assign Evn7x6 = (!Iqn7x6); +assign Iqn7x6 = (~(Zvn7x6 & Gwn7x6)); +assign Gwn7x6 = (~(Dte7z6[11] & Kxb7z6[1])); +assign Zvn7x6 = (~(Ple7z6[1] & Dte7z6[10])); +assign Kbx6x6 = (Bqn7x6 & Upn7x6); +assign Upn7x6 = (!Fsn7x6); +assign Fsn7x6 = (~(Nwn7x6 & Uwn7x6)); +assign Uwn7x6 = (~(Dte7z6[11] & Kxb7z6[4])); +assign Nwn7x6 = (~(Ple7z6[4] & Dte7z6[10])); +assign Bqn7x6 = (!Yrn7x6); +assign Yrn7x6 = (~(Bxn7x6 & Ixn7x6)); +assign Ixn7x6 = (~(Dte7z6[11] & Kxb7z6[3])); +assign Bxn7x6 = (~(Ple7z6[3] & Dte7z6[10])); +assign Atn7x6 = (~(Lon7x6 & Utbov6)); +assign Utbov6 = (~(Pxn7x6 & Zsbov6)); +assign Zsbov6 = (Wxn7x6 & Dyn7x6); +assign Dyn7x6 = (~(Dte7z6[11] & Kyn7x6)); +assign Kyn7x6 = (Kxb7z6[6] | Kxb7z6[7]); +assign Wxn7x6 = (~(Dte7z6[10] & Ryn7x6)); +assign Ryn7x6 = (Ple7z6[6] | Ple7z6[7]); +assign Pxn7x6 = (Yyn7x6 & Fzn7x6); +assign Fzn7x6 = (~(Ple7z6[5] & Dte7z6[10])); +assign Yyn7x6 = (~(Dte7z6[11] & Kxb7z6[5])); +assign Lon7x6 = (~(Dte7z6[7] | Dte7z6[6])); +assign Xrbov6 = (!Byu6x6); +assign Byu6x6 = (~(Mzn7x6 & Dte7z6[7])); +assign Mzn7x6 = (Neo7v6 & Tzn7x6); +assign Tzn7x6 = (!Dte7z6[6]); +assign C6bov6 = (M1lhw6 | Qf2ov6); +assign M1lhw6 = (Y3bov6 & Rfkov6); +assign Rfkov6 = (!Mpe7z6[5]); +assign Wym7x6 = (A0o7x6 & H0o7x6); +assign H0o7x6 = (~(L0g7z6[17] & E7bov6)); +assign A0o7x6 = (~(L0g7z6[1] & L7bov6)); +assign Lqw7v6 = (O0o7x6 ? Aw77z6 : Bni7z6[1]); +assign Eqw7v6 = (O0o7x6 ? Um77z6 : Bni7z6[31]); +assign Xpw7v6 = (O0o7x6 ? Cn77z6 : Bni7z6[30]); +assign Qpw7v6 = (O0o7x6 ? Kn77z6 : Bni7z6[29]); +assign Jpw7v6 = (O0o7x6 ? Sn77z6 : Bni7z6[28]); +assign Cpw7v6 = (O0o7x6 ? Ao77z6 : Bni7z6[27]); +assign Vow7v6 = (O0o7x6 ? Io77z6 : Bni7z6[26]); +assign Oow7v6 = (O0o7x6 ? Qo77z6 : Bni7z6[25]); +assign How7v6 = (O0o7x6 ? Yo77z6 : Bni7z6[24]); +assign Aow7v6 = (O0o7x6 ? Gp77z6 : Bni7z6[23]); +assign Tnw7v6 = (O0o7x6 ? Op77z6 : Bni7z6[22]); +assign Mnw7v6 = (O0o7x6 ? Wp77z6 : Bni7z6[21]); +assign Fnw7v6 = (O0o7x6 ? Eq77z6 : Bni7z6[20]); +assign Ymw7v6 = (O0o7x6 ? Mq77z6 : Bni7z6[19]); +assign Rmw7v6 = (O0o7x6 ? Uq77z6 : Bni7z6[18]); +assign Kmw7v6 = (O0o7x6 ? Cr77z6 : Bni7z6[17]); +assign Dmw7v6 = (O0o7x6 ? Kr77z6 : Bni7z6[16]); +assign Wlw7v6 = (O0o7x6 ? Sr77z6 : Bni7z6[15]); +assign Plw7v6 = (O0o7x6 ? As77z6 : Bni7z6[14]); +assign Ilw7v6 = (O0o7x6 ? Is77z6 : Bni7z6[13]); +assign Blw7v6 = (O0o7x6 ? Qs77z6 : Bni7z6[12]); +assign Ukw7v6 = (O0o7x6 ? Ys77z6 : Bni7z6[11]); +assign Nkw7v6 = (O0o7x6 ? Gt77z6 : Bni7z6[10]); +assign Gkw7v6 = (O0o7x6 ? Ot77z6 : Bni7z6[9]); +assign Zjw7v6 = (O0o7x6 ? Wt77z6 : Bni7z6[8]); +assign Sjw7v6 = (O0o7x6 ? Eu77z6 : Bni7z6[7]); +assign Ljw7v6 = (O0o7x6 ? Mu77z6 : Bni7z6[6]); +assign Ejw7v6 = (O0o7x6 ? Uu77z6 : Bni7z6[5]); +assign Xiw7v6 = (O0o7x6 ? Cv77z6 : Bni7z6[4]); +assign Qiw7v6 = (O0o7x6 ? Kv77z6 : Bni7z6[3]); +assign Jiw7v6 = (O0o7x6 ? Sv77z6 : Bni7z6[2]); +assign O0o7x6 = (~(Wpk8v6 | V0o7x6)); +assign V0o7x6 = (C1o7x6 & Jgliw6); +assign C1o7x6 = (~(Kslov6 & J1o7x6)); +assign J1o7x6 = (~(F02nv6 & C0wnv6)); +assign Wpk8v6 = (Q1o7x6 & X1o7x6); +assign Q1o7x6 = (E2o7x6 & Jgliw6); +assign E2o7x6 = (~(L2o7x6 & Xolhw6)); +assign Xolhw6 = (!Z9onv6); +assign Ciw7v6 = (~(S2o7x6 & Z2o7x6)); +assign Z2o7x6 = (~(G3o7x6 & Mq4ft6)); +assign G3o7x6 = (N3o7x6 & Wdtnv6); +assign N3o7x6 = (Po4ft6 | E9hnv6); +assign S2o7x6 = (~(K6fov6 & Po4ft6)); +assign Ohw7v6 = (U3o7x6 ? Zdp7z6[0] : E9hnv6); +assign U3o7x6 = (Kygnv6 & B4o7x6); +assign E9hnv6 = (I4o7x6 & P4o7x6); +assign P4o7x6 = (W4o7x6 & D5o7x6); +assign W4o7x6 = (~(I7p7z6[0] | W22ft6)); +assign I4o7x6 = (~(K5o7x6 | Cx5ov6)); +assign Hhw7v6 = (Ypinv6 ? Sk4ft6 : R5o7x6); +assign R5o7x6 = (Y5o7x6 & F6o7x6); +assign F6o7x6 = (~(M6o7x6 & T6o7x6)); +assign T6o7x6 = (~(I7p7z6[1] & A7o7x6)); +assign M6o7x6 = (D5o7x6 | M12ft6); +assign Ahw7v6 = (K94iw6 ? Um4ft6 : H7o7x6); +assign H7o7x6 = (Y5o7x6 & O7o7x6); +assign Tgw7v6 = (~(V7o7x6 & C8o7x6)); +assign C8o7x6 = (J8o7x6 & Q8o7x6); +assign J8o7x6 = (~(Lafov6 | Vhw7v6)); +assign Vhw7v6 = (X8o7x6 & E9o7x6); +assign E9o7x6 = (HTMDHBURST[0] & L9o7x6); +assign X8o7x6 = (Y5o7x6 & I7p7z6[3]); +assign V7o7x6 = (S9o7x6 & Z9o7x6); +assign S9o7x6 = (~(W94ft6 & Gao7x6)); +assign Gao7x6 = (~(Na9ov6 & Nao7x6)); +assign Mgw7v6 = (~(Uao7x6 & Bbo7x6)); +assign Bbo7x6 = (~(Ibo7x6 & X15ft6)); +assign Ibo7x6 = (Pbo7x6 & Wdtnv6); +assign Pbo7x6 = (A05ft6 | Gpgnv6); +assign Gpgnv6 = (Wbo7x6 & O18ov6); +assign Wbo7x6 = (~(Dco7x6 | Cq2ft6)); +assign Uao7x6 = (~(K6fov6 & A05ft6)); +assign Fgw7v6 = (~(Kco7x6 & Rco7x6)); +assign Rco7x6 = (~(Yco7x6 & Gb5ft6)); +assign Yco7x6 = (Fdo7x6 & Wdtnv6); +assign Fdo7x6 = (J95ft6 | Rdgnv6); +assign Kco7x6 = (~(K6fov6 & J95ft6)); +assign K6fov6 = (~(Fzunv6 | Mdo7x6)); +assign Fzunv6 = (Ac77z6 & Pfo7v6); +assign Rfw7v6 = (Tdo7x6 ? Zdp7z6[2] : Rdgnv6); +assign Tdo7x6 = (Kygnv6 & Aeo7x6); +assign Rdgnv6 = (Heo7x6 & Oeo7x6); +assign Oeo7x6 = (Veo7x6 & B4fiw6); +assign Heo7x6 = (Cfo7x6 & Jfo7x6); +assign Kfw7v6 = (~(Qfo7x6 & Xfo7x6)); +assign Xfo7x6 = (B4o7x6 | Ego7x6); +assign Dfw7v6 = (~(Lgo7x6 & Sgo7x6)); +assign Sgo7x6 = (B1rnv6 | Zgo7x6); +assign Wew7v6 = (~(Gho7x6 & Nho7x6)); +assign Nho7x6 = (Aeo7x6 | Uho7x6); +assign Pew7v6 = (~(Bio7x6 & Iio7x6)); +assign Iio7x6 = (U0rnv6 | Pio7x6); +assign Iew7v6 = (Ypinv6 ? M55ft6 : Wio7x6); +assign Wio7x6 = (Djo7x6 & Kjo7x6); +assign Djo7x6 = (~(Rjo7x6 & Yjo7x6)); +assign Yjo7x6 = (~(Hmp7z6[1] & Fko7x6)); +assign Rjo7x6 = (Mko7x6 | Dm2ft6); +assign Bew7v6 = (Alo7x6 ? Tko7x6 : Wlr7z6[1]); +assign Tko7x6 = (~(Hlo7x6 & Olo7x6)); +assign Olo7x6 = (Vlo7x6 & Cmo7x6); +assign Cmo7x6 = (~(Jmo7x6 & A97ov6)); +assign Vlo7x6 = (~(Qmo7x6 & Ca7ov6)); +assign Hlo7x6 = (Xmo7x6 & Eno7x6); +assign Eno7x6 = (~(Lno7x6 & Ja7ov6)); +assign Xmo7x6 = (~(Sno7x6 & H97ov6)); +assign Udw7v6 = (Alo7x6 ? Zno7x6 : Wlr7z6[2]); +assign Zno7x6 = (~(Goo7x6 & Noo7x6)); +assign Noo7x6 = (Uoo7x6 & Bpo7x6); +assign Bpo7x6 = (~(Jmo7x6 & Iz6ov6)); +assign Uoo7x6 = (~(Qmo7x6 & K07ov6)); +assign Goo7x6 = (Ipo7x6 & Ppo7x6); +assign Ppo7x6 = (~(Lno7x6 & R07ov6)); +assign Ipo7x6 = (~(Sno7x6 & Pz6ov6)); +assign Ndw7v6 = (Alo7x6 ? Wpo7x6 : Wlr7z6[3]); +assign Wpo7x6 = (~(Dqo7x6 & Kqo7x6)); +assign Kqo7x6 = (Rqo7x6 & Yqo7x6); +assign Yqo7x6 = (~(Jmo7x6 & Sb7ov6)); +assign Rqo7x6 = (~(Qmo7x6 & Uc7ov6)); +assign Dqo7x6 = (Fro7x6 & Mro7x6); +assign Mro7x6 = (~(Lno7x6 & Bd7ov6)); +assign Fro7x6 = (~(Sno7x6 & Zb7ov6)); +assign Gdw7v6 = (Alo7x6 ? Tro7x6 : Wlr7z6[4]); +assign Tro7x6 = (~(Aso7x6 & Hso7x6)); +assign Hso7x6 = (Oso7x6 & Vso7x6); +assign Vso7x6 = (~(Jmo7x6 & U57ov6)); +assign Oso7x6 = (~(Qmo7x6 & W67ov6)); +assign Aso7x6 = (Cto7x6 & Jto7x6); +assign Jto7x6 = (~(Lno7x6 & D77ov6)); +assign Cto7x6 = (~(Sno7x6 & B67ov6)); +assign Zcw7v6 = (Alo7x6 ? Qto7x6 : Wlr7z6[5]); +assign Qto7x6 = (~(Xto7x6 & Euo7x6)); +assign Euo7x6 = (Luo7x6 & Suo7x6); +assign Suo7x6 = (~(Jmo7x6 & Og7ov6)); +assign Luo7x6 = (~(Qmo7x6 & Qh7ov6)); +assign Xto7x6 = (Zuo7x6 & Gvo7x6); +assign Gvo7x6 = (~(Lno7x6 & Xh7ov6)); +assign Zuo7x6 = (~(Sno7x6 & Vg7ov6)); +assign Scw7v6 = (Alo7x6 ? Nvo7x6 : Wlr7z6[6]); +assign Nvo7x6 = (~(Uvo7x6 & Bwo7x6)); +assign Bwo7x6 = (Iwo7x6 & Pwo7x6); +assign Pwo7x6 = (~(Jmo7x6 & An7ov6)); +assign Iwo7x6 = (~(Qmo7x6 & Co7ov6)); +assign Uvo7x6 = (Wwo7x6 & Dxo7x6); +assign Dxo7x6 = (~(Lno7x6 & Jo7ov6)); +assign Wwo7x6 = (~(Sno7x6 & Hn7ov6)); +assign Lcw7v6 = (Alo7x6 ? Kxo7x6 : Wlr7z6[7]); +assign Kxo7x6 = (~(Rxo7x6 & Yxo7x6)); +assign Yxo7x6 = (Fyo7x6 & Myo7x6); +assign Myo7x6 = (~(Qmo7x6 & Ax4ov6)); +assign Fyo7x6 = (~(Jmo7x6 & Ox4ov6)); +assign Rxo7x6 = (Tyo7x6 & Azo7x6); +assign Azo7x6 = (~(Sno7x6 & Yv4ov6)); +assign Tyo7x6 = (~(Lno7x6 & Qy4ov6)); +assign Ecw7v6 = (Alo7x6 ? Hzo7x6 : Wlr7z6[8]); +assign Hzo7x6 = (~(Ozo7x6 & Vzo7x6)); +assign Vzo7x6 = (C0p7x6 & J0p7x6); +assign J0p7x6 = (~(Q0p7x6 & C37ov6)); +assign C0p7x6 = (~(X0p7x6 & H27ov6)); +assign Ozo7x6 = (E1p7x6 & L1p7x6); +assign L1p7x6 = (~(S1p7x6 & J37ov6)); +assign E1p7x6 = (~(Z1p7x6 & A27ov6)); +assign Xbw7v6 = (Alo7x6 ? G2p7x6 : Wlr7z6[9]); +assign G2p7x6 = (~(N2p7x6 & U2p7x6)); +assign U2p7x6 = (B3p7x6 & I3p7x6); +assign I3p7x6 = (~(Z1p7x6 & A97ov6)); +assign B3p7x6 = (~(Q0p7x6 & Ca7ov6)); +assign N2p7x6 = (P3p7x6 & W3p7x6); +assign W3p7x6 = (~(S1p7x6 & Ja7ov6)); +assign P3p7x6 = (~(X0p7x6 & H97ov6)); +assign Qbw7v6 = (Alo7x6 ? D4p7x6 : Wlr7z6[10]); +assign D4p7x6 = (~(K4p7x6 & R4p7x6)); +assign R4p7x6 = (Y4p7x6 & F5p7x6); +assign F5p7x6 = (~(Z1p7x6 & Iz6ov6)); +assign Y4p7x6 = (~(Q0p7x6 & K07ov6)); +assign K4p7x6 = (M5p7x6 & T5p7x6); +assign T5p7x6 = (~(S1p7x6 & R07ov6)); +assign M5p7x6 = (~(X0p7x6 & Pz6ov6)); +assign Jbw7v6 = (Alo7x6 ? A6p7x6 : Wlr7z6[11]); +assign A6p7x6 = (~(H6p7x6 & O6p7x6)); +assign O6p7x6 = (V6p7x6 & C7p7x6); +assign C7p7x6 = (~(Z1p7x6 & Sb7ov6)); +assign V6p7x6 = (~(Q0p7x6 & Uc7ov6)); +assign H6p7x6 = (J7p7x6 & Q7p7x6); +assign Q7p7x6 = (~(S1p7x6 & Bd7ov6)); +assign J7p7x6 = (~(X0p7x6 & Zb7ov6)); +assign Cbw7v6 = (Alo7x6 ? X7p7x6 : Wlr7z6[12]); +assign X7p7x6 = (~(E8p7x6 & L8p7x6)); +assign L8p7x6 = (S8p7x6 & Z8p7x6); +assign Z8p7x6 = (~(Z1p7x6 & U57ov6)); +assign S8p7x6 = (~(Q0p7x6 & W67ov6)); +assign E8p7x6 = (G9p7x6 & N9p7x6); +assign N9p7x6 = (~(S1p7x6 & D77ov6)); +assign G9p7x6 = (~(X0p7x6 & B67ov6)); +assign Vaw7v6 = (Alo7x6 ? U9p7x6 : Wlr7z6[13]); +assign U9p7x6 = (~(Bap7x6 & Iap7x6)); +assign Iap7x6 = (Pap7x6 & Wap7x6); +assign Wap7x6 = (~(Z1p7x6 & Og7ov6)); +assign Pap7x6 = (~(Q0p7x6 & Qh7ov6)); +assign Bap7x6 = (Dbp7x6 & Kbp7x6); +assign Kbp7x6 = (~(S1p7x6 & Xh7ov6)); +assign Dbp7x6 = (~(X0p7x6 & Vg7ov6)); +assign Oaw7v6 = (Alo7x6 ? Rbp7x6 : Wlr7z6[14]); +assign Rbp7x6 = (~(Ybp7x6 & Fcp7x6)); +assign Fcp7x6 = (Mcp7x6 & Tcp7x6); +assign Tcp7x6 = (~(Z1p7x6 & An7ov6)); +assign Mcp7x6 = (~(Q0p7x6 & Co7ov6)); +assign Ybp7x6 = (Adp7x6 & Hdp7x6); +assign Hdp7x6 = (~(S1p7x6 & Jo7ov6)); +assign Adp7x6 = (~(X0p7x6 & Hn7ov6)); +assign Haw7v6 = (Alo7x6 ? Odp7x6 : Wlr7z6[15]); +assign Odp7x6 = (~(Vdp7x6 & Cep7x6)); +assign Cep7x6 = (Jep7x6 & Qep7x6); +assign Qep7x6 = (~(Q0p7x6 & Ax4ov6)); +assign Jep7x6 = (~(Z1p7x6 & Ox4ov6)); +assign Vdp7x6 = (Xep7x6 & Efp7x6); +assign Efp7x6 = (~(X0p7x6 & Yv4ov6)); +assign Xep7x6 = (~(S1p7x6 & Qy4ov6)); +assign Aaw7v6 = (~(Lfp7x6 & Sfp7x6)); +assign Sfp7x6 = (Zfp7x6 & Ggp7x6); +assign Ggp7x6 = (~(Jy4ov6 & A27ov6)); +assign Zfp7x6 = (Ngp7x6 & Ugp7x6); +assign Ugp7x6 = (~(Hx4ov6 & H27ov6)); +assign Ngp7x6 = (~(Tw4ov6 & J37ov6)); +assign Lfp7x6 = (Bhp7x6 & Ihp7x6); +assign Ihp7x6 = (~(Rv4ov6 & C37ov6)); +assign Bhp7x6 = (~(Wlr7z6[16] & Xy4ov6)); +assign T9w7v6 = (~(Php7x6 & Whp7x6)); +assign Whp7x6 = (Dip7x6 & Kip7x6); +assign Kip7x6 = (~(Tw4ov6 & Ja7ov6)); +assign Dip7x6 = (Rip7x6 & Yip7x6); +assign Yip7x6 = (~(Jy4ov6 & A97ov6)); +assign Rip7x6 = (~(Rv4ov6 & Ca7ov6)); +assign Php7x6 = (Fjp7x6 & Mjp7x6); +assign Mjp7x6 = (~(Hx4ov6 & H97ov6)); +assign Fjp7x6 = (~(Wlr7z6[17] & Xy4ov6)); +assign M9w7v6 = (~(Tjp7x6 & Akp7x6)); +assign Akp7x6 = (Hkp7x6 & Okp7x6); +assign Okp7x6 = (~(Tw4ov6 & R07ov6)); +assign Hkp7x6 = (Vkp7x6 & Clp7x6); +assign Clp7x6 = (~(Jy4ov6 & Iz6ov6)); +assign Vkp7x6 = (~(Rv4ov6 & K07ov6)); +assign Tjp7x6 = (Jlp7x6 & Qlp7x6); +assign Qlp7x6 = (~(Hx4ov6 & Pz6ov6)); +assign Jlp7x6 = (~(Wlr7z6[18] & Xy4ov6)); +assign F9w7v6 = (~(Xlp7x6 & Emp7x6)); +assign Emp7x6 = (Lmp7x6 & Smp7x6); +assign Smp7x6 = (~(Tw4ov6 & Bd7ov6)); +assign Lmp7x6 = (Zmp7x6 & Gnp7x6); +assign Gnp7x6 = (~(Jy4ov6 & Sb7ov6)); +assign Zmp7x6 = (~(Rv4ov6 & Uc7ov6)); +assign Xlp7x6 = (Nnp7x6 & Unp7x6); +assign Unp7x6 = (~(Hx4ov6 & Zb7ov6)); +assign Nnp7x6 = (~(Wlr7z6[19] & Xy4ov6)); +assign Y8w7v6 = (~(Bop7x6 & Iop7x6)); +assign Iop7x6 = (Pop7x6 & Wop7x6); +assign Wop7x6 = (~(Tw4ov6 & D77ov6)); +assign Pop7x6 = (Dpp7x6 & Kpp7x6); +assign Kpp7x6 = (~(Jy4ov6 & U57ov6)); +assign Dpp7x6 = (~(Rv4ov6 & W67ov6)); +assign Bop7x6 = (Rpp7x6 & Ypp7x6); +assign Ypp7x6 = (~(Hx4ov6 & B67ov6)); +assign Rpp7x6 = (~(Wlr7z6[20] & Xy4ov6)); +assign R8w7v6 = (~(Fqp7x6 & Mqp7x6)); +assign Mqp7x6 = (Tqp7x6 & Arp7x6); +assign Arp7x6 = (~(Tw4ov6 & Xh7ov6)); +assign Tqp7x6 = (Hrp7x6 & Orp7x6); +assign Orp7x6 = (~(Jy4ov6 & Og7ov6)); +assign Hrp7x6 = (~(Rv4ov6 & Qh7ov6)); +assign Fqp7x6 = (Vrp7x6 & Csp7x6); +assign Csp7x6 = (~(Hx4ov6 & Vg7ov6)); +assign Vrp7x6 = (~(Wlr7z6[21] & Xy4ov6)); +assign K8w7v6 = (~(Jsp7x6 & Qsp7x6)); +assign Qsp7x6 = (Xsp7x6 & Etp7x6); +assign Etp7x6 = (~(Rv4ov6 & Co7ov6)); +assign Xsp7x6 = (Ltp7x6 & Stp7x6); +assign Stp7x6 = (~(Jy4ov6 & An7ov6)); +assign Ltp7x6 = (~(Hx4ov6 & Hn7ov6)); +assign Jsp7x6 = (Ztp7x6 & Gup7x6); +assign Gup7x6 = (~(Tw4ov6 & Jo7ov6)); +assign Ztp7x6 = (~(Wlr7z6[22] & Xy4ov6)); +assign D8w7v6 = (~(Nup7x6 & Uup7x6)); +assign Uup7x6 = (Bvp7x6 & Ivp7x6); +assign Ivp7x6 = (~(Hx4ov6 & Yv4ov6)); +assign Yv4ov6 = (~(Pvp7x6 & Wvp7x6)); +assign Wvp7x6 = (~(Dwp7x6 & Kwp7x6)); +assign Pvp7x6 = (~(Rwp7x6 & Hp67x6)); +assign Bvp7x6 = (Ywp7x6 & Fxp7x6); +assign Fxp7x6 = (~(Rv4ov6 & Ax4ov6)); +assign Ax4ov6 = (~(Mxp7x6 & Txp7x6)); +assign Txp7x6 = (~(Dwp7x6 & Ht1ov6)); +assign Mxp7x6 = (~(Rwp7x6 & Kn67x6)); +assign Ywp7x6 = (~(Jy4ov6 & Ox4ov6)); +assign Ox4ov6 = (~(Ayp7x6 & Hyp7x6)); +assign Hyp7x6 = (~(Dwp7x6 & Oyp7x6)); +assign Ayp7x6 = (~(Rwp7x6 & Dh57x6)); +assign Nup7x6 = (Vyp7x6 & Czp7x6); +assign Czp7x6 = (~(Tw4ov6 & Qy4ov6)); +assign Qy4ov6 = (~(Jzp7x6 & Qzp7x6)); +assign Qzp7x6 = (~(Dwp7x6 & Xzp7x6)); +assign Jzp7x6 = (~(Rwp7x6 & Rh57x6)); +assign Vyp7x6 = (~(Wlr7z6[23] & Xy4ov6)); +assign W7w7v6 = (~(E0q7x6 & L0q7x6)); +assign L0q7x6 = (S0q7x6 & Z0q7x6); +assign Z0q7x6 = (~(Jy4ov6 & J37ov6)); +assign S0q7x6 = (G1q7x6 & N1q7x6); +assign N1q7x6 = (~(Hx4ov6 & A27ov6)); +assign G1q7x6 = (~(Tw4ov6 & C37ov6)); +assign E0q7x6 = (U1q7x6 & B2q7x6); +assign B2q7x6 = (~(Rv4ov6 & H27ov6)); +assign U1q7x6 = (~(Wlr7z6[24] & Xy4ov6)); +assign P7w7v6 = (~(I2q7x6 & P2q7x6)); +assign P2q7x6 = (W2q7x6 & D3q7x6); +assign D3q7x6 = (~(Jy4ov6 & Ja7ov6)); +assign Ja7ov6 = (~(K3q7x6 & R3q7x6)); +assign R3q7x6 = (~(Dwp7x6 & Y3q7x6)); +assign K3q7x6 = (~(Rwp7x6 & Ob67x6)); +assign W2q7x6 = (F4q7x6 & M4q7x6); +assign M4q7x6 = (~(Hx4ov6 & A97ov6)); +assign A97ov6 = (~(T4q7x6 & A5q7x6)); +assign A5q7x6 = (~(Dwp7x6 & H5q7x6)); +assign T4q7x6 = (~(Rwp7x6 & Ab67x6)); +assign F4q7x6 = (~(Tw4ov6 & Ca7ov6)); +assign Ca7ov6 = (~(O5q7x6 & V5q7x6)); +assign V5q7x6 = (~(Dwp7x6 & C6q7x6)); +assign O5q7x6 = (~(Rwp7x6 & Vv77x6)); +assign I2q7x6 = (J6q7x6 & Q6q7x6); +assign Q6q7x6 = (~(Rv4ov6 & H97ov6)); +assign H97ov6 = (~(X6q7x6 & E7q7x6)); +assign E7q7x6 = (~(Dwp7x6 & L7q7x6)); +assign X6q7x6 = (~(Rwp7x6 & Ex77x6)); +assign J6q7x6 = (~(Wlr7z6[25] & Xy4ov6)); +assign I7w7v6 = (~(S7q7x6 & Z7q7x6)); +assign Z7q7x6 = (G8q7x6 & N8q7x6); +assign N8q7x6 = (~(Jy4ov6 & R07ov6)); +assign R07ov6 = (~(U8q7x6 & B9q7x6)); +assign B9q7x6 = (~(Dwp7x6 & I9q7x6)); +assign U8q7x6 = (~(Rwp7x6 & Ddfov6)); +assign G8q7x6 = (P9q7x6 & W9q7x6); +assign W9q7x6 = (~(Hx4ov6 & Iz6ov6)); +assign Iz6ov6 = (~(Daq7x6 & Kaq7x6)); +assign Kaq7x6 = (~(Dwp7x6 & Raq7x6)); +assign Daq7x6 = (~(Rwp7x6 & Kdfov6)); +assign P9q7x6 = (~(Tw4ov6 & K07ov6)); +assign K07ov6 = (~(Yaq7x6 & Fbq7x6)); +assign Fbq7x6 = (~(Dwp7x6 & Mbq7x6)); +assign Yaq7x6 = (~(Rwp7x6 & Bcfov6)); +assign S7q7x6 = (Tbq7x6 & Acq7x6); +assign Acq7x6 = (~(Rv4ov6 & Pz6ov6)); +assign Pz6ov6 = (~(Hcq7x6 & Ocq7x6)); +assign Ocq7x6 = (~(Dwp7x6 & Vcq7x6)); +assign Hcq7x6 = (~(Rwp7x6 & Icfov6)); +assign Tbq7x6 = (~(Wlr7z6[26] & Xy4ov6)); +assign B7w7v6 = (~(Cdq7x6 & Jdq7x6)); +assign Jdq7x6 = (Qdq7x6 & Xdq7x6); +assign Xdq7x6 = (~(Jy4ov6 & Bd7ov6)); +assign Bd7ov6 = (~(Eeq7x6 & Leq7x6)); +assign Leq7x6 = (~(Dwp7x6 & Seq7x6)); +assign Eeq7x6 = (~(Rwp7x6 & Hnlov6)); +assign Qdq7x6 = (Zeq7x6 & Gfq7x6); +assign Gfq7x6 = (~(Hx4ov6 & Sb7ov6)); +assign Sb7ov6 = (~(Nfq7x6 & Ufq7x6)); +assign Ufq7x6 = (~(Dwp7x6 & Bgq7x6)); +assign Nfq7x6 = (~(Rwp7x6 & Onlov6)); +assign Zeq7x6 = (~(Tw4ov6 & Uc7ov6)); +assign Uc7ov6 = (~(Igq7x6 & Pgq7x6)); +assign Pgq7x6 = (~(Dwp7x6 & Wgq7x6)); +assign Igq7x6 = (~(Rwp7x6 & Fmlov6)); +assign Cdq7x6 = (Dhq7x6 & Khq7x6); +assign Khq7x6 = (~(Rv4ov6 & Zb7ov6)); +assign Zb7ov6 = (~(Rhq7x6 & Yhq7x6)); +assign Yhq7x6 = (~(Dwp7x6 & Fiq7x6)); +assign Rhq7x6 = (~(Rwp7x6 & Mmlov6)); +assign Dhq7x6 = (~(Wlr7z6[27] & Xy4ov6)); +assign U6w7v6 = (~(Miq7x6 & Tiq7x6)); +assign Tiq7x6 = (Ajq7x6 & Hjq7x6); +assign Hjq7x6 = (~(Jy4ov6 & D77ov6)); +assign D77ov6 = (~(Ojq7x6 & Vjq7x6)); +assign Vjq7x6 = (~(Dwp7x6 & Ckq7x6)); +assign Ojq7x6 = (~(Rwp7x6 & Ax57x6)); +assign Ajq7x6 = (Jkq7x6 & Qkq7x6); +assign Qkq7x6 = (~(Hx4ov6 & U57ov6)); +assign U57ov6 = (~(Xkq7x6 & Elq7x6)); +assign Elq7x6 = (~(Dwp7x6 & Llq7x6)); +assign Xkq7x6 = (~(Rwp7x6 & Tw57x6)); +assign Jkq7x6 = (~(Tw4ov6 & W67ov6)); +assign W67ov6 = (~(Slq7x6 & Zlq7x6)); +assign Zlq7x6 = (~(Dwp7x6 & Gmq7x6)); +assign Slq7x6 = (~(Rwp7x6 & T977x6)); +assign Miq7x6 = (Nmq7x6 & Umq7x6); +assign Umq7x6 = (~(Rv4ov6 & B67ov6)); +assign B67ov6 = (~(Bnq7x6 & Inq7x6)); +assign Inq7x6 = (~(Dwp7x6 & Pnq7x6)); +assign Bnq7x6 = (~(Rwp7x6 & Cb77x6)); +assign Nmq7x6 = (~(Wlr7z6[28] & Xy4ov6)); +assign N6w7v6 = (~(Wnq7x6 & Doq7x6)); +assign Doq7x6 = (Koq7x6 & Roq7x6); +assign Roq7x6 = (~(Jy4ov6 & Xh7ov6)); +assign Xh7ov6 = (~(Yoq7x6 & Fpq7x6)); +assign Fpq7x6 = (~(Dwp7x6 & Mpq7x6)); +assign Yoq7x6 = (~(Rwp7x6 & Xr57x6)); +assign Koq7x6 = (Tpq7x6 & Aqq7x6); +assign Aqq7x6 = (~(Hx4ov6 & Og7ov6)); +assign Og7ov6 = (~(Hqq7x6 & Oqq7x6)); +assign Oqq7x6 = (~(Dwp7x6 & Vqq7x6)); +assign Hqq7x6 = (~(Rwp7x6 & Qr57x6)); +assign Tpq7x6 = (~(Tw4ov6 & Qh7ov6)); +assign Qh7ov6 = (~(Crq7x6 & Jrq7x6)); +assign Jrq7x6 = (~(Dwp7x6 & Qrq7x6)); +assign Crq7x6 = (~(Rwp7x6 & T277x6)); +assign Wnq7x6 = (Xrq7x6 & Esq7x6); +assign Esq7x6 = (~(Rv4ov6 & Vg7ov6)); +assign Vg7ov6 = (~(Lsq7x6 & Ssq7x6)); +assign Ssq7x6 = (~(Dwp7x6 & Zsq7x6)); +assign Lsq7x6 = (~(Rwp7x6 & C477x6)); +assign Xrq7x6 = (~(Wlr7z6[29] & Xy4ov6)); +assign G6w7v6 = (~(Gtq7x6 & Ntq7x6)); +assign Ntq7x6 = (Utq7x6 & Buq7x6); +assign Buq7x6 = (~(Jy4ov6 & Jo7ov6)); +assign Jo7ov6 = (~(Iuq7x6 & Puq7x6)); +assign Puq7x6 = (~(Dwp7x6 & Wuq7x6)); +assign Iuq7x6 = (~(Rwp7x6 & Um57x6)); +assign Jy4ov6 = (Dvq7x6 & Ncp7z6[0]); +assign Dvq7x6 = (Ncp7z6[1] & Kvq7x6); +assign Utq7x6 = (Rvq7x6 & Yvq7x6); +assign Yvq7x6 = (~(Hx4ov6 & An7ov6)); +assign An7ov6 = (~(Fwq7x6 & Mwq7x6)); +assign Mwq7x6 = (~(Dwp7x6 & Twq7x6)); +assign Fwq7x6 = (~(Rwp7x6 & Nm57x6)); +assign Hx4ov6 = (Axq7x6 & Ncp7z6[1]); +assign Axq7x6 = (Kvq7x6 & T69ov6); +assign Rvq7x6 = (~(Tw4ov6 & Co7ov6)); +assign Co7ov6 = (~(Hxq7x6 & Oxq7x6)); +assign Oxq7x6 = (~(Dwp7x6 & Vxq7x6)); +assign Hxq7x6 = (~(Rwp7x6 & Tv67x6)); +assign Tw4ov6 = (Cyq7x6 & Kvq7x6); +assign Gtq7x6 = (Jyq7x6 & Qyq7x6); +assign Qyq7x6 = (~(Rv4ov6 & Hn7ov6)); +assign Hn7ov6 = (~(Xyq7x6 & Ezq7x6)); +assign Ezq7x6 = (~(Dwp7x6 & Lzq7x6)); +assign Xyq7x6 = (~(Rwp7x6 & Cx67x6)); +assign Rv4ov6 = (Szq7x6 & Ncp7z6[0]); +assign Szq7x6 = (Kvq7x6 & M69ov6); +assign Kvq7x6 = (Zzq7x6 & Bbp7z6[1]); +assign Zzq7x6 = (~(Xy4ov6 | Bbp7z6[0])); +assign Jyq7x6 = (~(Wlr7z6[30] & Xy4ov6)); +assign Z5w7v6 = (Alo7x6 ? G0r7x6 : Dfr7z6[0]); +assign G0r7x6 = (N0r7x6 & Z9o7x6); +assign N0r7x6 = (~(M55ft6 & U0r7x6)); +assign S5w7v6 = (Alo7x6 ? B1r7x6 : Dfr7z6[1]); +assign B1r7x6 = (U0r7x6 & Z9o7x6); +assign L5w7v6 = (Alo7x6 ? L42ft6 : Vr5ft6); +assign E5w7v6 = (Alo7x6 ? Bbp7z6[0] : Xcr7z6[0]); +assign X4w7v6 = (Alo7x6 ? Bbp7z6[1] : Xcr7z6[1]); +assign Q4w7v6 = (Alo7x6 ? I1r7x6 : Wlr7z6[0]); +assign I1r7x6 = (~(P1r7x6 & W1r7x6)); +assign W1r7x6 = (D2r7x6 & K2r7x6); +assign K2r7x6 = (~(Qmo7x6 & C37ov6)); +assign C37ov6 = (~(R2r7x6 & Y2r7x6)); +assign Y2r7x6 = (~(Dwp7x6 & Yqonv6)); +assign R2r7x6 = (~(Rwp7x6 & Fd9ov6)); +assign Qmo7x6 = (X0p7x6 | F3r7x6); +assign F3r7x6 = (M3r7x6 & Ncp7z6[0]); +assign M3r7x6 = (~(M69ov6 | Bbp7z6[1])); +assign X0p7x6 = (T3r7x6 & Ncp7z6[0]); +assign T3r7x6 = (Ncp7z6[1] & A4r7x6); +assign D2r7x6 = (~(Lno7x6 & J37ov6)); +assign J37ov6 = (~(H4r7x6 & O4r7x6)); +assign O4r7x6 = (~(Dwp7x6 & V4r7x6)); +assign H4r7x6 = (~(Rwp7x6 & Ve9ov6)); +assign Lno7x6 = (Q0p7x6 | C5r7x6); +assign C5r7x6 = (J5r7x6 & Ncp7z6[1]); +assign J5r7x6 = (~(Ncp7z6[0] | Bbp7z6[1])); +assign Q0p7x6 = (Q5r7x6 & Ncp7z6[1]); +assign Q5r7x6 = (A4r7x6 & T69ov6); +assign P1r7x6 = (X5r7x6 & E6r7x6); +assign E6r7x6 = (~(Jmo7x6 & A27ov6)); +assign A27ov6 = (~(L6r7x6 & S6r7x6)); +assign S6r7x6 = (~(Dwp7x6 & Kqonv6)); +assign L6r7x6 = (~(Rwp7x6 & Jf9ov6)); +assign Jmo7x6 = (S1p7x6 | Z6r7x6); +assign Z6r7x6 = (G7r7x6 & Ncp7z6[0]); +assign S1p7x6 = (N7r7x6 & Ncp7z6[0]); +assign N7r7x6 = (A4r7x6 & M69ov6); +assign X5r7x6 = (~(Sno7x6 & H27ov6)); +assign H27ov6 = (~(U7r7x6 & B8r7x6)); +assign B8r7x6 = (~(Dwp7x6 & I8r7x6)); +assign Dwp7x6 = (~(P8r7x6 | Kygnv6)); +assign P8r7x6 = (!L42ft6); +assign U7r7x6 = (~(Rwp7x6 & Td9ov6)); +assign Rwp7x6 = (~(Kygnv6 | L42ft6)); +assign Sno7x6 = (Z1p7x6 | W8r7x6); +assign W8r7x6 = (G7r7x6 & T69ov6); +assign G7r7x6 = (~(Ncp7z6[1] | Bbp7z6[1])); +assign Z1p7x6 = (Cyq7x6 & A4r7x6); +assign A4r7x6 = (Bbp7z6[0] ^ Bbp7z6[1]); +assign Cyq7x6 = (T69ov6 & M69ov6); +assign M69ov6 = (!Ncp7z6[1]); +assign T69ov6 = (!Ncp7z6[0]); +assign J4w7v6 = (K94iw6 ? O75ft6 : D9r7x6); +assign C4w7v6 = (~(K9r7x6 & Kkg7x6)); +assign Kkg7x6 = (~(Ffadt6 & Jg2nv6)); +assign Jg2nv6 = (~(R9r7x6 & Y9r7x6)); +assign Y9r7x6 = (Far7x6 & Bc2nv6); +assign Bc2nv6 = (~(Mar7x6 & Tar7x6)); +assign Tar7x6 = (~(Etinv6 & Abr7x6)); +assign Abr7x6 = (~(Uxeov6 & Hbr7x6)); +assign Hbr7x6 = (~(Sfoov6 & Obr7x6)); +assign Obr7x6 = (~(Vbr7x6 & Ccr7x6)); +assign Vbr7x6 = (Jcr7x6 & Qcr7x6); +assign Qcr7x6 = (Xcr7x6 | Mbiov6); +assign Xcr7x6 = (Edr7x6 & Ldr7x6); +assign Jcr7x6 = (Ldr7x6 | Edr7x6); +assign Edr7x6 = (Sdr7x6 & Zdr7x6); +assign Zdr7x6 = (~(Ger7x6 & Ociov6)); +assign Sdr7x6 = (~(Ner7x6 & Cdiov6)); +assign Ner7x6 = (Uer7x6 & CURRPRI[5]); +assign Uer7x6 = (~(Qdiov6 & Bfr7x6)); +assign Sfoov6 = (Fvjov6 & W9iov6); +assign W9iov6 = (K0m7x6 | Rxgov6); +assign Rxgov6 = (~(P2j7z6[1] & Q7niw6)); +assign Q7niw6 = (Xom7x6 & Bgiov6); +assign Xom7x6 = (U1iov6 & Z7iov6); +assign K0m7x6 = (!Dc3nv6); +assign Mar7x6 = (Ifr7x6 & Ui2nv6); +assign Ifr7x6 = (~(Pfr7x6 & Ev2nv6)); +assign Pfr7x6 = (~(Xg2nv6 & Nxeov6)); +assign Far7x6 = (Bj2nv6 & Lh2nv6); +assign Lh2nv6 = (~(Nmadt6 & Wfr7x6)); +assign Wfr7x6 = (~(Dgr7x6 & Kgr7x6)); +assign Kgr7x6 = (L7iov6 & Rviov6); +assign L7iov6 = (Rgr7x6 & Ygr7x6); +assign Ygr7x6 = (~(Rviov6 & Itjov6)); +assign Dgr7x6 = (B2iov6 & G8iov6); +assign G8iov6 = (Fhr7x6 & Mhr7x6); +assign Mhr7x6 = (~(Thr7x6 | Lsiov6)); +assign Thr7x6 = (Rviov6 & Air7x6); +assign Air7x6 = (E6jov6 | Hir7x6); +assign Hir7x6 = (Itjov6 & Ptjov6); +assign Fhr7x6 = (Oir7x6 & Vir7x6); +assign Vir7x6 = (Rgr7x6 | Apjov6); +assign Rgr7x6 = (!Tojov6); +assign Oir7x6 = (~(Hsgov6 & D9jov6)); +assign B2iov6 = (Cjr7x6 & Jjr7x6); +assign Jjr7x6 = (Qjr7x6 & Xjr7x6); +assign Xjr7x6 = (~(Hsgov6 & Ekr7x6)); +assign Ekr7x6 = (Sdjov6 | Lkr7x6); +assign Lkr7x6 = (Skr7x6 & Dnjov6); +assign Sdjov6 = (D9jov6 & Zkr7x6); +assign Qjr7x6 = (~(Sliov6 | Bniov6)); +assign Bniov6 = (Glr7x6 & Tojov6); +assign Glr7x6 = (~(Apjov6 | Nlr7x6)); +assign Sliov6 = (Ulr7x6 & Bmr7x6); +assign Bmr7x6 = (Cjjov6 & Jjjov6); +assign Ulr7x6 = (Osgov6 & Imr7x6); +assign Imr7x6 = (!Qjjov6); +assign Cjr7x6 = (Pmr7x6 & Wmr7x6); +assign Wmr7x6 = (~(Lsiov6 & Gtiov6)); +assign Lsiov6 = (Dnr7x6 & Osgov6); +assign Dnr7x6 = (Knr7x6 & Cjjov6); +assign Pmr7x6 = (Rnr7x6 & Ynr7x6); +assign Ynr7x6 = (~(Mpiov6 & Ekjov6)); +assign Mpiov6 = (Tojov6 & Apjov6); +assign Tojov6 = (Osgov6 & For7x6); +assign Osgov6 = (Mor7x6 & Tor7x6); +assign Rnr7x6 = (~(Rviov6 & Apr7x6)); +assign Apr7x6 = (~(Hpr7x6 & Opr7x6)); +assign Opr7x6 = (~(K2jov6 | C5jov6)); +assign C5jov6 = (Vpr7x6 & Itjov6); +assign Vpr7x6 = (Ptjov6 & Cqr7x6); +assign K2jov6 = (Jqr7x6 & Itjov6); +assign Jqr7x6 = (Qqr7x6 & Kujov6); +assign Hpr7x6 = (Xqr7x6 & Zrjov6); +assign Zrjov6 = (~(Cyiov6 & Err7x6)); +assign Cyiov6 = (Lrr7x6 & Srr7x6); +assign Xqr7x6 = (~(E6jov6 & S6jov6)); +assign E6jov6 = (Zrr7x6 & Lrr7x6); +assign Bj2nv6 = (~(Vrinv6 & Gsr7x6)); +assign Gsr7x6 = (~(Nsr7x6 & Usr7x6)); +assign Usr7x6 = (!K73et6); +assign R9r7x6 = (Ub2nv6 & Btr7x6); +assign Btr7x6 = (~(Doadt6 & Itr7x6)); +assign Itr7x6 = (~(Ptr7x6 & Wtr7x6)); +assign Wtr7x6 = (~(Dur7x6 | Cwlnv6)); +assign Ptr7x6 = (Kur7x6 & Rur7x6); +assign Rur7x6 = (~(Yur7x6 & Fvr7x6)); +assign Yur7x6 = (Dcnov6 & Nf4ov6); +assign Dcnov6 = (~(Mvr7x6 & Tvr7x6)); +assign Tvr7x6 = (~(Vs9ov6 & H0tiw6)); +assign H0tiw6 = (!S6cdt6); +assign Mvr7x6 = (~(Awr7x6 & Hwr7x6)); +assign Awr7x6 = (Owr7x6 & Vwr7x6); +assign Vwr7x6 = (~(E1wnv6 & S2onv6)); +assign Owr7x6 = (~(F02nv6 & Sdh7v6)); +assign Ub2nv6 = (Cxr7x6 & V82nv6); +assign V82nv6 = (~(Jxr7x6 & Qxr7x6)); +assign Qxr7x6 = (Xxr7x6 & Eyr7x6); +assign Eyr7x6 = (Lyr7x6 & Syr7x6); +assign Syr7x6 = (Zyr7x6 & Gzr7x6); +assign Gzr7x6 = (~(Nzr7x6 | Uzr7x6)); +assign Nzr7x6 = (~(B0s7x6 & Yseov6)); +assign Zyr7x6 = (I0s7x6 & P0s7x6); +assign Lyr7x6 = (W0s7x6 & D1s7x6); +assign D1s7x6 = (~(K1s7x6 | R1s7x6)); +assign W0s7x6 = (~(Y1s7x6 | F2s7x6)); +assign Xxr7x6 = (M2s7x6 & T2s7x6); +assign T2s7x6 = (A3s7x6 & H3s7x6); +assign H3s7x6 = (O3s7x6 & V3s7x6); +assign O3s7x6 = (~(C4s7x6 | J4s7x6)); +assign A3s7x6 = (~(Q4s7x6 | X4s7x6)); +assign M2s7x6 = (E5s7x6 & L5s7x6); +assign L5s7x6 = (~(S5s7x6 | Z5s7x6)); +assign E5s7x6 = (~(G6s7x6 | N6s7x6)); +assign Jxr7x6 = (U6s7x6 & B7s7x6); +assign B7s7x6 = (I7s7x6 & P7s7x6); +assign P7s7x6 = (W7s7x6 & D8s7x6); +assign D8s7x6 = (~(K8s7x6 | R8s7x6)); +assign K8s7x6 = (Y8s7x6 | F9s7x6); +assign W7s7x6 = (~(M9s7x6 | T9s7x6)); +assign I7s7x6 = (Aas7x6 & Has7x6); +assign Has7x6 = (~(Oas7x6 | Vas7x6)); +assign Aas7x6 = (~(Cbs7x6 | Jbs7x6)); +assign U6s7x6 = (Qbs7x6 & Xbs7x6); +assign Xbs7x6 = (Ecs7x6 & Lcs7x6); +assign Lcs7x6 = (~(Scs7x6 | Zcs7x6)); +assign Scs7x6 = (Gds7x6 | Nds7x6); +assign Ecs7x6 = (Uds7x6 & Bes7x6); +assign Bes7x6 = (~(Ies7x6 & Pes7x6)); +assign Ies7x6 = (~(Wes7x6 & Dfs7x6)); +assign Dfs7x6 = (Kfs7x6 & Rfs7x6); +assign Rfs7x6 = (Yfs7x6 & Fgs7x6); +assign Fgs7x6 = (Mgs7x6 & Tgs7x6); +assign Tgs7x6 = (Ahs7x6 & Vueov6); +assign Ahs7x6 = (~(Fhcet6 | Zfcet6)); +assign Mgs7x6 = (Hhs7x6 & Ohs7x6); +assign Ohs7x6 = (~(M6j7z6[11] & Ohj7z6[11])); +assign Hhs7x6 = (~(M6j7z6[13] & Ohj7z6[13])); +assign Yfs7x6 = (Vhs7x6 & Cis7x6); +assign Cis7x6 = (Jis7x6 & Qis7x6); +assign Qis7x6 = (~(M6j7z6[15] & Ohj7z6[15])); +assign Jis7x6 = (~(M6j7z6[17] & Ohj7z6[17])); +assign Vhs7x6 = (Xis7x6 & Ejs7x6); +assign Ejs7x6 = (~(M6j7z6[19] & Ohj7z6[19])); +assign Xis7x6 = (~(M6j7z6[1] & Ohj7z6[1])); +assign Kfs7x6 = (Ljs7x6 & Sjs7x6); +assign Sjs7x6 = (Zjs7x6 & Gks7x6); +assign Gks7x6 = (Nks7x6 & Uks7x6); +assign Uks7x6 = (~(M6j7z6[25] & Ohj7z6[25])); +assign Nks7x6 = (Bls7x6 & Ils7x6); +assign Ils7x6 = (~(M6j7z6[21] & Ohj7z6[21])); +assign Bls7x6 = (~(M6j7z6[23] & Ohj7z6[23])); +assign Zjs7x6 = (Pls7x6 & Wls7x6); +assign Wls7x6 = (~(M6j7z6[27] & Ohj7z6[27])); +assign Pls7x6 = (~(M6j7z6[29] & Ohj7z6[29])); +assign Ljs7x6 = (Dms7x6 & Kms7x6); +assign Kms7x6 = (Rms7x6 & Yms7x6); +assign Yms7x6 = (~(M6j7z6[31] & Ohj7z6[31])); +assign Rms7x6 = (~(M6j7z6[33] & Ohj7z6[33])); +assign Dms7x6 = (Fns7x6 & Mns7x6); +assign Mns7x6 = (~(M6j7z6[35] & Ohj7z6[35])); +assign Fns7x6 = (~(M6j7z6[37] & Ohj7z6[37])); +assign Wes7x6 = (Tns7x6 & Aos7x6); +assign Aos7x6 = (Hos7x6 & Oos7x6); +assign Oos7x6 = (Vos7x6 & Cps7x6); +assign Cps7x6 = (Jps7x6 & Qps7x6); +assign Qps7x6 = (~(M6j7z6[41] & Ohj7z6[41])); +assign Jps7x6 = (Xps7x6 & Eqs7x6); +assign Eqs7x6 = (~(M6j7z6[39] & Ohj7z6[39])); +assign Xps7x6 = (~(M6j7z6[3] & Ohj7z6[3])); +assign Vos7x6 = (Lqs7x6 & Sqs7x6); +assign Sqs7x6 = (~(M6j7z6[43] & Ohj7z6[43])); +assign Lqs7x6 = (~(M6j7z6[45] & Ohj7z6[45])); +assign Hos7x6 = (Zqs7x6 & Grs7x6); +assign Grs7x6 = (Nrs7x6 & Urs7x6); +assign Urs7x6 = (~(M6j7z6[47] & Ohj7z6[47])); +assign Nrs7x6 = (~(M6j7z6[49] & Ohj7z6[49])); +assign Zqs7x6 = (Bss7x6 & Iss7x6); +assign Iss7x6 = (~(M6j7z6[51] & Ohj7z6[51])); +assign Bss7x6 = (~(M6j7z6[53] & Ohj7z6[53])); +assign Tns7x6 = (Pss7x6 & Wss7x6); +assign Wss7x6 = (Dts7x6 & Kts7x6); +assign Kts7x6 = (Rts7x6 & Yts7x6); +assign Yts7x6 = (~(M6j7z6[55] & Ohj7z6[55])); +assign Rts7x6 = (~(M6j7z6[57] & Ohj7z6[57])); +assign Dts7x6 = (Fus7x6 & Mus7x6); +assign Mus7x6 = (~(M6j7z6[59] & Ohj7z6[59])); +assign Fus7x6 = (~(M6j7z6[5] & Ohj7z6[5])); +assign Pss7x6 = (Tus7x6 & Avs7x6); +assign Avs7x6 = (Hvs7x6 & Ovs7x6); +assign Ovs7x6 = (~(M6j7z6[61] & Ohj7z6[61])); +assign Hvs7x6 = (~(M6j7z6[63] & Ohj7z6[63])); +assign Tus7x6 = (Vvs7x6 & Cws7x6); +assign Cws7x6 = (~(M6j7z6[7] & Ohj7z6[7])); +assign Vvs7x6 = (~(M6j7z6[9] & Ohj7z6[9])); +assign Uds7x6 = (Yfdov6 | Jws7x6); +assign Yfdov6 = (!Z3j7z6[14]); +assign Qbs7x6 = (Qws7x6 & Xws7x6); +assign Xws7x6 = (Exs7x6 & Lxs7x6); +assign Lxs7x6 = (~(Micet6 & Z3j7z6[12])); +assign Qws7x6 = (Fvjov6 & Sxs7x6); +assign Cxr7x6 = (~(Zxs7x6 & Gys7x6)); +assign Gys7x6 = (Nys7x6 & Nxeov6); +assign Nys7x6 = (~(Uys7x6 & Bzs7x6)); +assign Bzs7x6 = (~(C92nv6 & Izs7x6)); +assign Uys7x6 = (Ev2nv6 & Xg2nv6); +assign Zxs7x6 = (Pzs7x6 & Wzs7x6); +assign Wzs7x6 = (~(Dxgov6 & D0t7x6)); +assign D0t7x6 = (~(C92nv6 & Uxeov6)); +assign C92nv6 = (K0t7x6 & R0t7x6); +assign R0t7x6 = (~(Y0t7x6 & F1t7x6)); +assign F1t7x6 = (~(Mbiov6 & M1t7x6)); +assign K0t7x6 = (M1t7x6 | Mbiov6); +assign Mbiov6 = (Mrgov6 & H1m8v6); +assign Mrgov6 = (Hsgov6 ? A2t7x6 : T1t7x6); +assign A2t7x6 = (!H2t7x6); +assign M1t7x6 = (O2t7x6 & V2t7x6); +assign V2t7x6 = (~(C3t7x6 & Cdiov6)); +assign Cdiov6 = (Rwl8v6 & C7hov6); +assign C7hov6 = (~(J3t7x6 & Q3t7x6)); +assign Q3t7x6 = (~(X3t7x6 & E4t7x6)); +assign X3t7x6 = (Rviov6 | L4t7x6); +assign L4t7x6 = (S4t7x6 & Tor7x6); +assign Rviov6 = (Tor7x6 & Z4t7x6); +assign J3t7x6 = (~(Hsgov6 & G5t7x6)); +assign C3t7x6 = (N5t7x6 & U5t7x6); +assign U5t7x6 = (~(Qdiov6 & B6t7x6)); +assign O2t7x6 = (~(I6t7x6 & Ociov6)); +assign Ociov6 = (!Qdiov6); +assign Qdiov6 = (Zyl8v6 & Asgov6); +assign Asgov6 = (Hsgov6 ? W6t7x6 : P6t7x6); +assign Hsgov6 = (!Tor7x6); +assign Tor7x6 = (~(D7t7x6 & K7t7x6)); +assign K7t7x6 = (~(R7t7x6 & Y7t7x6)); +assign R7t7x6 = (~(F8t7x6 | M8t7x6)); +assign D7t7x6 = (~(T8t7x6 & A9t7x6)); +assign A9t7x6 = (~(T1t7x6 & H2t7x6)); +assign T8t7x6 = (H9t7x6 & O9t7x6); +assign O9t7x6 = (~(V9t7x6 & Cat7x6)); +assign Cat7x6 = (H2t7x6 | T1t7x6); +assign T1t7x6 = (!Jat7x6); +assign Jat7x6 = (Mor7x6 ? Xat7x6 : Qat7x6); +assign H2t7x6 = (D9jov6 ? Lbt7x6 : Ebt7x6); +assign V9t7x6 = (Sbt7x6 & Zbt7x6); +assign Zbt7x6 = (~(W6t7x6 & Gct7x6)); +assign Gct7x6 = (~(Nct7x6 & G5t7x6)); +assign Nct7x6 = (P6t7x6 & Uct7x6); +assign Sbt7x6 = (~(Bdt7x6 & Idt7x6)); +assign Idt7x6 = (~(G5t7x6 & Uct7x6)); +assign Uct7x6 = (~(E4t7x6 & Pdt7x6)); +assign Pdt7x6 = (Z4t7x6 | S4t7x6); +assign E4t7x6 = (~(Wdt7x6 & Z4t7x6)); +assign G5t7x6 = (!Det7x6); +assign Det7x6 = (D9jov6 ? Ret7x6 : Ket7x6); +assign D9jov6 = (!Dnjov6); +assign H9t7x6 = (~(Yet7x6 & Fft7x6)); +assign Yet7x6 = (Z4t7x6 & Lrr7x6); +assign W6t7x6 = (Dnjov6 ? Tft7x6 : Mft7x6); +assign Dnjov6 = (~(Agt7x6 & F8t7x6)); +assign F8t7x6 = (Hgt7x6 | Ogt7x6); +assign Agt7x6 = (~(Vgt7x6 & Cht7x6)); +assign Cht7x6 = (Jht7x6 & Qht7x6); +assign Qht7x6 = (~(Xht7x6 & Eit7x6)); +assign Eit7x6 = (~(Lit7x6 | Sit7x6)); +assign Lit7x6 = (Mft7x6 & Zit7x6); +assign Xht7x6 = (Ket7x6 & Gjt7x6); +assign Gjt7x6 = (!Ret7x6); +assign Ret7x6 = (Zkr7x6 ? Ujt7x6 : Njt7x6); +assign Ket7x6 = (Abjov6 ? Ikt7x6 : Bkt7x6); +assign Jht7x6 = (~(Pkt7x6 & Tft7x6)); +assign Pkt7x6 = (~(Mft7x6 | Sit7x6)); +assign Sit7x6 = (~(Wkt7x6 | Lbt7x6)); +assign Vgt7x6 = (Dlt7x6 & Klt7x6); +assign Klt7x6 = (~(Lbt7x6 & Wkt7x6)); +assign Wkt7x6 = (!Ebt7x6); +assign Ebt7x6 = (Skr7x6 ? Ylt7x6 : Rlt7x6); +assign Rlt7x6 = (!Fmt7x6); +assign Lbt7x6 = (Zkr7x6 ? Tmt7x6 : Mmt7x6); +assign Mmt7x6 = (Fajov6 ? Hnt7x6 : Ant7x6); +assign Dlt7x6 = (~(Y7t7x6 & Abjov6)); +assign Tft7x6 = (!Zit7x6); +assign Zit7x6 = (Skr7x6 ? Vnt7x6 : Ont7x6); +assign Skr7x6 = (!Abjov6); +assign Abjov6 = (~(Cot7x6 & M8t7x6)); +assign M8t7x6 = (~(Jot7x6 & Qot7x6)); +assign Jot7x6 = (Xot7x6 & B0s7x6); +assign Cot7x6 = (~(Ept7x6 & Lpt7x6)); +assign Lpt7x6 = (~(Ylt7x6 & Spt7x6)); +assign Ept7x6 = (~(Zpt7x6 | Y7t7x6)); +assign Y7t7x6 = (Gqt7x6 & Exs7x6); +assign Exs7x6 = (Nqt7x6 & Uqt7x6); +assign Uqt7x6 = (~(Brt7x6 & Pes7x6)); +assign Gqt7x6 = (Irt7x6 & Prt7x6); +assign Zpt7x6 = (Fmt7x6 & Wrt7x6); +assign Wrt7x6 = (Spt7x6 | Ylt7x6); +assign Ylt7x6 = (Qcjov6 ? Kst7x6 : Dst7x6); +assign Kst7x6 = (!Rst7x6); +assign Spt7x6 = (~(Yst7x6 & Ftt7x6)); +assign Ftt7x6 = (Mtt7x6 | Bkt7x6); +assign Bkt7x6 = (Qcjov6 ? Aut7x6 : Ttt7x6); +assign Ttt7x6 = (Xot7x6 ? Lgj7z6[156] : Lgj7z6[159]); +assign Mtt7x6 = (~(Ikt7x6 & Hut7x6)); +assign Hut7x6 = (~(Ont7x6 & Out7x6)); +assign Ikt7x6 = (!Vut7x6); +assign Vut7x6 = (Vbjov6 ? Jvt7x6 : Cvt7x6); +assign Cvt7x6 = (Irt7x6 ? Xvt7x6 : Qvt7x6); +assign Yst7x6 = (Out7x6 | Ont7x6); +assign Out7x6 = (!Vnt7x6); +assign Fmt7x6 = (Vbjov6 ? Lwt7x6 : Ewt7x6); +assign Vnt7x6 = (Qcjov6 ? Zwt7x6 : Swt7x6); +assign Qcjov6 = (~(Gxt7x6 | Qot7x6)); +assign Qot7x6 = (~(Zcs7x6 | Jcjov6)); +assign Gxt7x6 = (Nxt7x6 & Uxt7x6); +assign Uxt7x6 = (Byt7x6 & Iyt7x6); +assign Iyt7x6 = (~(Pyt7x6 & Wyt7x6)); +assign Wyt7x6 = (Dzt7x6 & Kzt7x6); +assign Dzt7x6 = (Zwt7x6 | Rzt7x6); +assign Pyt7x6 = (~(Yzt7x6 | Aut7x6)); +assign Aut7x6 = (Jcjov6 ? Lgj7z6[165] : Lgj7z6[162]); +assign Yzt7x6 = (Ccjov6 ? M0u7x6 : F0u7x6); +assign Byt7x6 = (~(T0u7x6 & Rzt7x6)); +assign T0u7x6 = (Zwt7x6 & Kzt7x6); +assign Kzt7x6 = (~(Rst7x6 & Dst7x6)); +assign Nxt7x6 = (A1u7x6 & H1u7x6); +assign H1u7x6 = (Dst7x6 | Rst7x6); +assign Rst7x6 = (Jcjov6 ? Lgj7z6[167] : Lgj7z6[164]); +assign Dst7x6 = (Ccjov6 ? V1u7x6 : O1u7x6); +assign A1u7x6 = (~(Xot7x6 & B0s7x6)); +assign Zwt7x6 = (Jcjov6 ? J2u7x6 : C2u7x6); +assign Jcjov6 = (Q2u7x6 & X2u7x6); +assign X2u7x6 = (E3u7x6 & Pes7x6); +assign E3u7x6 = (~(Zcs7x6 & L3u7x6)); +assign Zcs7x6 = (S3u7x6 & M6j7z6[54]); +assign S3u7x6 = (Ohj7z6[54] & Pes7x6); +assign Q2u7x6 = (M6j7z6[55] & Ohj7z6[55]); +assign Swt7x6 = (!Rzt7x6); +assign Rzt7x6 = (Xot7x6 ? Lgj7z6[157] : Lgj7z6[160]); +assign Xot7x6 = (!Ccjov6); +assign Ccjov6 = (Z3u7x6 & G4u7x6); +assign G4u7x6 = (N4u7x6 & Pes7x6); +assign N4u7x6 = (B0s7x6 | U4u7x6); +assign B0s7x6 = (~(B5u7x6 & M6j7z6[52])); +assign B5u7x6 = (Ohj7z6[52] & Pes7x6); +assign Z3u7x6 = (M6j7z6[53] & Ohj7z6[53]); +assign Ont7x6 = (Vbjov6 ? P5u7x6 : I5u7x6); +assign Vbjov6 = (W5u7x6 & D6u7x6); +assign D6u7x6 = (~(K6u7x6 & R6u7x6)); +assign R6u7x6 = (Y6u7x6 & F7u7x6); +assign F7u7x6 = (~(M7u7x6 & T7u7x6)); +assign T7u7x6 = (A8u7x6 & H8u7x6); +assign A8u7x6 = (O8u7x6 | P5u7x6); +assign M7u7x6 = (V8u7x6 & Jvt7x6); +assign Jvt7x6 = (Prt7x6 ? J9u7x6 : C9u7x6); +assign V8u7x6 = (Irt7x6 ? Lgj7z6[144] : Lgj7z6[147]); +assign Y6u7x6 = (~(Q9u7x6 & P5u7x6)); +assign Q9u7x6 = (O8u7x6 & H8u7x6); +assign H8u7x6 = (X9u7x6 | Ewt7x6); +assign O8u7x6 = (!I5u7x6); +assign K6u7x6 = (Eau7x6 & Lau7x6); +assign Lau7x6 = (Brt7x6 | Hbjov6); +assign Eau7x6 = (~(Ewt7x6 & X9u7x6)); +assign X9u7x6 = (!Lwt7x6); +assign Lwt7x6 = (Objov6 ? Lgj7z6[155] : Lgj7z6[152]); +assign Objov6 = (!Prt7x6); +assign Ewt7x6 = (Irt7x6 ? Lgj7z6[146] : Lgj7z6[149]); +assign W5u7x6 = (~(Nqt7x6 & Prt7x6)); +assign Nqt7x6 = (!Sau7x6); +assign P5u7x6 = (Prt7x6 ? Gbu7x6 : Zau7x6); +assign Prt7x6 = (~(Nbu7x6 & Ubu7x6)); +assign Ubu7x6 = (Bcu7x6 & Pes7x6); +assign Bcu7x6 = (~(Sau7x6 & Icu7x6)); +assign Sau7x6 = (Pcu7x6 & M6j7z6[50]); +assign Pcu7x6 = (Ohj7z6[50] & Pes7x6); +assign Nbu7x6 = (M6j7z6[51] & Ohj7z6[51]); +assign I5u7x6 = (Hbjov6 ? Ddu7x6 : Wcu7x6); +assign Hbjov6 = (!Irt7x6); +assign Irt7x6 = (~(Kdu7x6 & Rdu7x6)); +assign Rdu7x6 = (Ydu7x6 & Pes7x6); +assign Ydu7x6 = (~(Feu7x6 & Brt7x6)); +assign Brt7x6 = (M6j7z6[48] & Ohj7z6[48]); +assign Kdu7x6 = (M6j7z6[49] & Ohj7z6[49]); +assign Mft7x6 = (Zkr7x6 ? Teu7x6 : Meu7x6); +assign Zkr7x6 = (!Y9jov6); +assign Y9jov6 = (~(Afu7x6 & Ogt7x6)); +assign Ogt7x6 = (~(Hfu7x6 & Ofu7x6)); +assign Hfu7x6 = (~(Zdjov6 | R1s7x6)); +assign Afu7x6 = (~(Vfu7x6 & Cgu7x6)); +assign Cgu7x6 = (~(Tmt7x6 & Jgu7x6)); +assign Jgu7x6 = (~(Qgu7x6 & Xgu7x6)); +assign Tmt7x6 = (!Ehu7x6); +assign Vfu7x6 = (Lhu7x6 & Hgt7x6); +assign Hgt7x6 = (~(Shu7x6 & Zhu7x6)); +assign Shu7x6 = (Giu7x6 & P0s7x6); +assign Lhu7x6 = (~(Niu7x6 & Uiu7x6)); +assign Uiu7x6 = (~(Bju7x6 & Ehu7x6)); +assign Ehu7x6 = (Nejov6 ? Pju7x6 : Iju7x6); +assign Bju7x6 = (Xgu7x6 & Qgu7x6); +assign Qgu7x6 = (~(Wju7x6 & Meu7x6)); +assign Wju7x6 = (!Teu7x6); +assign Xgu7x6 = (~(Dku7x6 & Kku7x6)); +assign Kku7x6 = (!Ujt7x6); +assign Ujt7x6 = (Nejov6 ? Yku7x6 : Rku7x6); +assign Yku7x6 = (Flu7x6 ? Lgj7z6[186] : Lgj7z6[189]); +assign Dku7x6 = (Njt7x6 & Mlu7x6); +assign Mlu7x6 = (~(Tlu7x6 & Teu7x6)); +assign Tlu7x6 = (!Meu7x6); +assign Njt7x6 = (!Amu7x6); +assign Amu7x6 = (Pmjov6 ? Omu7x6 : Hmu7x6); +assign Hmu7x6 = (Giu7x6 ? Cnu7x6 : Vmu7x6); +assign Niu7x6 = (Fajov6 ? Qnu7x6 : Jnu7x6); +assign Fajov6 = (!Pmjov6); +assign Teu7x6 = (Nejov6 ? Eou7x6 : Xnu7x6); +assign Nejov6 = (~(Lou7x6 | Ofu7x6)); +assign Ofu7x6 = (I0s7x6 & Flu7x6); +assign Lou7x6 = (Sou7x6 & Zou7x6); +assign Zou7x6 = (Zdjov6 | R1s7x6); +assign Sou7x6 = (Gpu7x6 & Npu7x6); +assign Npu7x6 = (~(Upu7x6 & Bqu7x6)); +assign Bqu7x6 = (Iqu7x6 | Iju7x6); +assign Upu7x6 = (~(Pqu7x6 & Wqu7x6)); +assign Wqu7x6 = (~(Dru7x6 & Kru7x6)); +assign Kru7x6 = (Flu7x6 ? Yru7x6 : Rru7x6); +assign Dru7x6 = (Rku7x6 & Fsu7x6); +assign Fsu7x6 = (Xnu7x6 | Msu7x6); +assign Rku7x6 = (Zdjov6 ? Lgj7z6[183] : Lgj7z6[180]); +assign Pqu7x6 = (~(Msu7x6 & Xnu7x6)); +assign Msu7x6 = (!Eou7x6); +assign Gpu7x6 = (~(Iju7x6 & Iqu7x6)); +assign Iqu7x6 = (!Pju7x6); +assign Pju7x6 = (Gejov6 ? Lgj7z6[191] : Lgj7z6[188]); +assign Iju7x6 = (Zdjov6 ? Lgj7z6[185] : Lgj7z6[182]); +assign Eou7x6 = (Gejov6 ? Lgj7z6[190] : Lgj7z6[187]); +assign Gejov6 = (!Flu7x6); +assign Flu7x6 = (~(Tsu7x6 & Atu7x6)); +assign Atu7x6 = (Htu7x6 & Pes7x6); +assign Htu7x6 = (~(Otu7x6 & Vtu7x6)); +assign Otu7x6 = (!I0s7x6); +assign I0s7x6 = (~(Cuu7x6 & M6j7z6[62])); +assign Cuu7x6 = (Ohj7z6[62] & Pes7x6); +assign Tsu7x6 = (M6j7z6[63] & Ohj7z6[63]); +assign Xnu7x6 = (Zdjov6 ? Lgj7z6[184] : Lgj7z6[181]); +assign Zdjov6 = (Juu7x6 & Quu7x6); +assign Quu7x6 = (Xuu7x6 & Pes7x6); +assign Xuu7x6 = (~(R1s7x6 & Evu7x6)); +assign R1s7x6 = (Lvu7x6 & M6j7z6[60]); +assign Lvu7x6 = (Ohj7z6[60] & Pes7x6); +assign Juu7x6 = (M6j7z6[61] & Ohj7z6[61]); +assign Meu7x6 = (Pmjov6 ? Zvu7x6 : Svu7x6); +assign Pmjov6 = (~(Gwu7x6 | Zhu7x6)); +assign Zhu7x6 = (~(Uzr7x6 | Nwu7x6)); +assign Gwu7x6 = (Uwu7x6 & Bxu7x6); +assign Bxu7x6 = (~(Giu7x6 & P0s7x6)); +assign Uwu7x6 = (Ixu7x6 & Pxu7x6); +assign Pxu7x6 = (~(Wxu7x6 & Dyu7x6)); +assign Dyu7x6 = (~(Jnu7x6 & Hnt7x6)); +assign Jnu7x6 = (!Ant7x6); +assign Wxu7x6 = (~(Kyu7x6 & Ryu7x6)); +assign Ryu7x6 = (~(Yyu7x6 & Fzu7x6)); +assign Fzu7x6 = (Giu7x6 ? Lgj7z6[168] : Lgj7z6[171]); +assign Yyu7x6 = (Omu7x6 & Mzu7x6); +assign Mzu7x6 = (Svu7x6 | Tzu7x6); +assign Omu7x6 = (Nwu7x6 ? H0v7x6 : A0v7x6); +assign Kyu7x6 = (~(Tzu7x6 & Svu7x6)); +assign Tzu7x6 = (!Zvu7x6); +assign Ixu7x6 = (~(Qnu7x6 & Ant7x6)); +assign Ant7x6 = (Bfjov6 ? V0v7x6 : O0v7x6); +assign Bfjov6 = (!Nwu7x6); +assign Qnu7x6 = (!Hnt7x6); +assign Hnt7x6 = (R9jov6 ? J1v7x6 : C1v7x6); +assign Zvu7x6 = (Nwu7x6 ? Lgj7z6[178] : Lgj7z6[175]); +assign Nwu7x6 = (Q1v7x6 & X1v7x6); +assign X1v7x6 = (E2v7x6 & Pes7x6); +assign E2v7x6 = (~(Uzr7x6 & L2v7x6)); +assign Uzr7x6 = (S2v7x6 & M6j7z6[58]); +assign S2v7x6 = (Ohj7z6[58] & Pes7x6); +assign Q1v7x6 = (M6j7z6[59] & Ohj7z6[59]); +assign Svu7x6 = (Giu7x6 ? Lgj7z6[169] : Lgj7z6[172]); +assign Giu7x6 = (!R9jov6); +assign R9jov6 = (Z2v7x6 & G3v7x6); +assign G3v7x6 = (N3v7x6 & Pes7x6); +assign N3v7x6 = (P0s7x6 | U3v7x6); +assign P0s7x6 = (~(B4v7x6 & M6j7z6[56])); +assign B4v7x6 = (Ohj7z6[56] & Pes7x6); +assign Z2v7x6 = (M6j7z6[57] & Ohj7z6[57]); +assign P6t7x6 = (!Bdt7x6); +assign Bdt7x6 = (Mor7x6 ? P4v7x6 : I4v7x6); +assign Mor7x6 = (!Z4t7x6); +assign Z4t7x6 = (~(W4v7x6 & D5v7x6)); +assign D5v7x6 = (~(K5v7x6 & R5v7x6)); +assign R5v7x6 = (Y5v7x6 & F6v7x6); +assign F6v7x6 = (~(M6v7x6 & T6v7x6)); +assign M6v7x6 = (P4v7x6 & A7v7x6); +assign Y5v7x6 = (~(Fft7x6 & Lrr7x6)); +assign K5v7x6 = (H7v7x6 & O7v7x6); +assign O7v7x6 = (~(V7v7x6 & C8v7x6)); +assign C8v7x6 = (J8v7x6 & A7v7x6); +assign A7v7x6 = (~(Qat7x6 & Q8v7x6)); +assign J8v7x6 = (P4v7x6 | T6v7x6); +assign V7v7x6 = (Wdt7x6 & S4t7x6); +assign S4t7x6 = (For7x6 ? E9v7x6 : X8v7x6); +assign Wdt7x6 = (Lrr7x6 ? S9v7x6 : L9v7x6); +assign H7v7x6 = (Q8v7x6 | Qat7x6); +assign Qat7x6 = (Itjov6 ? Gav7x6 : Z9v7x6); +assign Q8v7x6 = (!Xat7x6); +assign Xat7x6 = (For7x6 ? Uav7x6 : Nav7x6); +assign Uav7x6 = (Bbv7x6 & Ibv7x6); +assign W4v7x6 = (Pbv7x6 | Wbv7x6); +assign P4v7x6 = (For7x6 ? Kcv7x6 : Dcv7x6); +assign For7x6 = (!Cjjov6); +assign Cjjov6 = (~(Wbv7x6 & Rcv7x6)); +assign Rcv7x6 = (~(Ycv7x6 & Fdv7x6)); +assign Fdv7x6 = (~(Mdv7x6 & Bbv7x6)); +assign Bbv7x6 = (Apjov6 | Tdv7x6); +assign Mdv7x6 = (Aev7x6 & Ibv7x6); +assign Ibv7x6 = (~(Hev7x6 & Apjov6)); +assign Aev7x6 = (~(Oev7x6 & Nav7x6)); +assign Nav7x6 = (!Vev7x6); +assign Oev7x6 = (Cfv7x6 & Jfv7x6); +assign Jfv7x6 = (Qfv7x6 | Xfv7x6); +assign Ycv7x6 = (Egv7x6 & Pbv7x6); +assign Pbv7x6 = (~(Lgv7x6 & Sgv7x6)); +assign Lgv7x6 = (~(Zgv7x6 | Ghv7x6)); +assign Egv7x6 = (~(Nhv7x6 & Vev7x6)); +assign Vev7x6 = (Knr7x6 ? Biv7x6 : Uhv7x6); +assign Nhv7x6 = (~(Iiv7x6 | Xfv7x6)); +assign Xfv7x6 = (Piv7x6 & Dcv7x6); +assign Piv7x6 = (!Kcv7x6); +assign Iiv7x6 = (Qfv7x6 & Cfv7x6); +assign Cfv7x6 = (~(Wiv7x6 & Kcv7x6)); +assign Qfv7x6 = (~(E9v7x6 & Djv7x6)); +assign Djv7x6 = (!X8v7x6); +assign X8v7x6 = (Knr7x6 ? Rjv7x6 : Kjv7x6); +assign E9v7x6 = (Apjov6 ? Fkv7x6 : Yjv7x6); +assign Wbv7x6 = (~(Mkv7x6 & Tkv7x6)); +assign Mkv7x6 = (~(Alv7x6 | Hlv7x6)); +assign Kcv7x6 = (Apjov6 ? Vlv7x6 : Olv7x6); +assign Apjov6 = (~(Alv7x6 & Cmv7x6)); +assign Cmv7x6 = (~(Jmv7x6 & Qmv7x6)); +assign Qmv7x6 = (Xmv7x6 & Env7x6); +assign Env7x6 = (~(Lnv7x6 & Snv7x6)); +assign Snv7x6 = (Znv7x6 & Gov7x6); +assign Znv7x6 = (Olv7x6 | Nov7x6); +assign Lnv7x6 = (Uov7x6 & Yjv7x6); +assign Yjv7x6 = (Hpjov6 ? Ipv7x6 : Bpv7x6); +assign Uov7x6 = (!Fkv7x6); +assign Fkv7x6 = (Hqiov6 ? Wpv7x6 : Ppv7x6); +assign Xmv7x6 = (~(Dqv7x6 & Nov7x6)); +assign Nov7x6 = (!Vlv7x6); +assign Dqv7x6 = (Olv7x6 & Gov7x6); +assign Gov7x6 = (Hev7x6 | Tdv7x6); +assign Jmv7x6 = (Kqv7x6 & Rqv7x6); +assign Rqv7x6 = (~(Tdv7x6 & Hev7x6)); +assign Hev7x6 = (Hqiov6 ? Frv7x6 : Yqv7x6); +assign Yqv7x6 = (!Mrv7x6); +assign Tdv7x6 = (Nlr7x6 ? Asv7x6 : Trv7x6); +assign Nlr7x6 = (!Hpjov6); +assign Asv7x6 = (!Hsv7x6); +assign Kqv7x6 = (Hlv7x6 | Ekjov6); +assign Alv7x6 = (Osv7x6 | Vsv7x6); +assign Vlv7x6 = (Ekjov6 ? Jtv7x6 : Ctv7x6); +assign Ekjov6 = (!Hqiov6); +assign Hqiov6 = (Qtv7x6 | Tkv7x6); +assign Tkv7x6 = (~(Xtv7x6 | Euv7x6)); +assign Qtv7x6 = (Luv7x6 & Suv7x6); +assign Suv7x6 = (~(Mrv7x6 & Zuv7x6)); +assign Luv7x6 = (Gvv7x6 & Hlv7x6); +assign Hlv7x6 = (~(Nvv7x6 & Uvv7x6)); +assign Uvv7x6 = (~(Vqiov6 | Jbs7x6)); +assign Nvv7x6 = (~(Oqiov6 | Cbs7x6)); +assign Gvv7x6 = (~(Frv7x6 & Bwv7x6)); +assign Bwv7x6 = (Zuv7x6 | Mrv7x6); +assign Mrv7x6 = (Wwv7x6 ? Pwv7x6 : Iwv7x6); +assign Zuv7x6 = (~(Dxv7x6 & Kxv7x6)); +assign Kxv7x6 = (~(Rxv7x6 & Ppv7x6)); +assign Ppv7x6 = (Wwv7x6 ? Fyv7x6 : Yxv7x6); +assign Fyv7x6 = (Tyv7x6 ? Q88iw6 : Myv7x6); +assign Rxv7x6 = (~(Wpv7x6 | Azv7x6)); +assign Azv7x6 = (Ctv7x6 & Hzv7x6); +assign Wpv7x6 = (C0w7x6 ? Vzv7x6 : Ozv7x6); +assign Vzv7x6 = (Oqiov6 ? J0w7x6 : Ua8iw6); +assign Dxv7x6 = (Hzv7x6 | Ctv7x6); +assign Frv7x6 = (C0w7x6 ? X0w7x6 : Q0w7x6); +assign Jtv7x6 = (!Hzv7x6); +assign Hzv7x6 = (Wwv7x6 ? L1w7x6 : E1w7x6); +assign Wwv7x6 = (!Xriov6); +assign Xriov6 = (Xtv7x6 & S1w7x6); +assign S1w7x6 = (~(Z1w7x6 & G2w7x6)); +assign G2w7x6 = (N2w7x6 & Euv7x6); +assign Euv7x6 = (Jriov6 | Nds7x6); +assign Nds7x6 = (U2w7x6 & M6j7z6[36]); +assign U2w7x6 = (Ohj7z6[36] & Pes7x6); +assign N2w7x6 = (~(B3w7x6 & L1w7x6)); +assign B3w7x6 = (I3w7x6 & P3w7x6); +assign Z1w7x6 = (W3w7x6 & D4w7x6); +assign D4w7x6 = (~(K4w7x6 & R4w7x6)); +assign R4w7x6 = (Y4w7x6 & P3w7x6); +assign P3w7x6 = (Iwv7x6 | F5w7x6); +assign Y4w7x6 = (I3w7x6 | L1w7x6); +assign I3w7x6 = (!E1w7x6); +assign K4w7x6 = (M5w7x6 & Yxv7x6); +assign Yxv7x6 = (Qriov6 ? A6w7x6 : T5w7x6); +assign M5w7x6 = (Tyv7x6 ? Lgj7z6[108] : Lgj7z6[111]); +assign W3w7x6 = (~(F5w7x6 & Iwv7x6)); +assign Iwv7x6 = (Qriov6 ? O6w7x6 : H6w7x6); +assign F5w7x6 = (!Pwv7x6); +assign Pwv7x6 = (Jriov6 ? V6w7x6 : Yd7iw6); +assign Jriov6 = (!Tyv7x6); +assign Xtv7x6 = (Qriov6 | Oas7x6); +assign L1w7x6 = (Tyv7x6 ? Lgj7z6[109] : Lgj7z6[112]); +assign Tyv7x6 = (~(C7w7x6 & J7w7x6)); +assign J7w7x6 = (Q7w7x6 & Pes7x6); +assign Q7w7x6 = (~(X7w7x6 & E8w7x6)); +assign X7w7x6 = (M6j7z6[36] & Ohj7z6[36]); +assign C7w7x6 = (M6j7z6[37] & Ohj7z6[37]); +assign E1w7x6 = (Qriov6 ? Lgj7z6[118] : Lgj7z6[115]); +assign Qriov6 = (L8w7x6 & S8w7x6); +assign S8w7x6 = (Z8w7x6 & Pes7x6); +assign Z8w7x6 = (~(Oas7x6 & G9w7x6)); +assign Oas7x6 = (N9w7x6 & M6j7z6[38]); +assign N9w7x6 = (Ohj7z6[38] & Pes7x6); +assign L8w7x6 = (M6j7z6[39] & Ohj7z6[39]); +assign Ctv7x6 = (C0w7x6 ? Baw7x6 : U9w7x6); +assign C0w7x6 = (!Criov6); +assign Criov6 = (Iaw7x6 & Paw7x6); +assign Paw7x6 = (~(Waw7x6 & Dbw7x6)); +assign Dbw7x6 = (Oqiov6 | Cbs7x6); +assign Waw7x6 = (Kbw7x6 & Rbw7x6); +assign Rbw7x6 = (~(Ybw7x6 & Fcw7x6)); +assign Fcw7x6 = (Mcw7x6 | X0w7x6); +assign Ybw7x6 = (~(Tcw7x6 & Adw7x6)); +assign Adw7x6 = (~(Hdw7x6 & Odw7x6)); +assign Odw7x6 = (Oqiov6 ? Lgj7z6[99] : Lgj7z6[96]); +assign Hdw7x6 = (Ozv7x6 & Vdw7x6); +assign Vdw7x6 = (U9w7x6 | Cew7x6); +assign Ozv7x6 = (Xew7x6 ? Qew7x6 : Jew7x6); +assign Tcw7x6 = (~(Cew7x6 & U9w7x6)); +assign Cew7x6 = (!Baw7x6); +assign Kbw7x6 = (~(X0w7x6 & Mcw7x6)); +assign Mcw7x6 = (!Q0w7x6); +assign Q0w7x6 = (Vqiov6 ? Lgj7z6[107] : Lgj7z6[104]); +assign X0w7x6 = (Oqiov6 ? Lgj7z6[101] : Lgj7z6[98]); +assign Iaw7x6 = (Jbs7x6 | Vqiov6); +assign Baw7x6 = (Oqiov6 ? Efw7x6 : Ju7iw6); +assign Oqiov6 = (Lfw7x6 & Sfw7x6); +assign Sfw7x6 = (Zfw7x6 & Pes7x6); +assign Zfw7x6 = (~(Cbs7x6 & Ggw7x6)); +assign Cbs7x6 = (Ngw7x6 & M6j7z6[32]); +assign Ngw7x6 = (Ohj7z6[32] & Pes7x6); +assign Lfw7x6 = (M6j7z6[33] & Ohj7z6[33]); +assign U9w7x6 = (Xew7x6 ? Bhw7x6 : Ugw7x6); +assign Xew7x6 = (!Vqiov6); +assign Vqiov6 = (Ihw7x6 & Phw7x6); +assign Phw7x6 = (Whw7x6 & Pes7x6); +assign Whw7x6 = (~(Jbs7x6 & Diw7x6)); +assign Jbs7x6 = (Kiw7x6 & M6j7z6[34]); +assign Kiw7x6 = (Ohj7z6[34] & Pes7x6); +assign Ihw7x6 = (M6j7z6[35] & Ohj7z6[35]); +assign Olv7x6 = (Hpjov6 ? Yiw7x6 : Riw7x6); +assign Hpjov6 = (Fjw7x6 & Osv7x6); +assign Osv7x6 = (~(Mjw7x6 & Tjw7x6)); +assign Mjw7x6 = (~(Iniov6 | Vas7x6)); +assign Fjw7x6 = (~(Akw7x6 & Hkw7x6)); +assign Hkw7x6 = (~(Trv7x6 & Hsv7x6)); +assign Akw7x6 = (Okw7x6 & Vsv7x6); +assign Vsv7x6 = (~(Vkw7x6 & Clw7x6)); +assign Vkw7x6 = (~(Ckiov6 | T9s7x6)); +assign Okw7x6 = (~(Jlw7x6 & Qlw7x6)); +assign Qlw7x6 = (Hsv7x6 | Trv7x6); +assign Trv7x6 = (Wniov6 ? Emw7x6 : Xlw7x6); +assign Hsv7x6 = (Zmw7x6 ? Smw7x6 : Lmw7x6); +assign Jlw7x6 = (~(Gnw7x6 & Nnw7x6)); +assign Nnw7x6 = (~(Unw7x6 & Yiw7x6)); +assign Gnw7x6 = (~(Bow7x6 & Ipv7x6)); +assign Ipv7x6 = (Wniov6 ? Pow7x6 : Iow7x6); +assign Bow7x6 = (~(Bpv7x6 | Wow7x6)); +assign Wow7x6 = (~(Yiw7x6 | Unw7x6)); +assign Unw7x6 = (!Riw7x6); +assign Bpv7x6 = (Zmw7x6 ? Kpw7x6 : Dpw7x6); +assign Kpw7x6 = (Ckiov6 ? Rpw7x6 : O78iw6); +assign Yiw7x6 = (Wniov6 ? Fqw7x6 : Ypw7x6); +assign Wniov6 = (~(Tjw7x6 | Mqw7x6)); +assign Mqw7x6 = (Tqw7x6 & Arw7x6); +assign Arw7x6 = (Iniov6 | Vas7x6); +assign Tqw7x6 = (Hrw7x6 & Orw7x6); +assign Orw7x6 = (~(Vrw7x6 & Csw7x6)); +assign Csw7x6 = (Emw7x6 | Jsw7x6); +assign Vrw7x6 = (~(Qsw7x6 & Xsw7x6)); +assign Xsw7x6 = (Etw7x6 | Iow7x6); +assign Iow7x6 = (Iniov6 ? Ltw7x6 : M68iw6); +assign Etw7x6 = (~(Pow7x6 & Stw7x6)); +assign Stw7x6 = (Ztw7x6 | Fqw7x6); +assign Pow7x6 = (Pniov6 ? Nuw7x6 : Guw7x6); +assign Qsw7x6 = (~(Fqw7x6 & Ztw7x6)); +assign Ztw7x6 = (!Ypw7x6); +assign Hrw7x6 = (~(Jsw7x6 & Emw7x6)); +assign Emw7x6 = (Ivw7x6 ? Bvw7x6 : Uuw7x6); +assign Jsw7x6 = (!Xlw7x6); +assign Xlw7x6 = (Iniov6 ? Pvw7x6 : Ub7iw6); +assign Tjw7x6 = (~(M9s7x6 | Pniov6)); +assign Fqw7x6 = (Ivw7x6 ? Dww7x6 : Wvw7x6); +assign Ivw7x6 = (!Pniov6); +assign Pniov6 = (Kww7x6 & Rww7x6); +assign Rww7x6 = (Yww7x6 & Pes7x6); +assign Yww7x6 = (~(M9s7x6 & Fxw7x6)); +assign M9s7x6 = (Mxw7x6 & M6j7z6[46]); +assign Mxw7x6 = (Ohj7z6[46] & Pes7x6); +assign Kww7x6 = (M6j7z6[47] & Ohj7z6[47]); +assign Ypw7x6 = (Iniov6 ? Txw7x6 : Yr7iw6); +assign Iniov6 = (Ayw7x6 & Hyw7x6); +assign Hyw7x6 = (Oyw7x6 & Pes7x6); +assign Oyw7x6 = (~(Vas7x6 & Vyw7x6)); +assign Vas7x6 = (Czw7x6 & M6j7z6[44]); +assign Czw7x6 = (Ohj7z6[44] & Pes7x6); +assign Ayw7x6 = (M6j7z6[45] & Ohj7z6[45]); +assign Riw7x6 = (Zmw7x6 ? Qzw7x6 : Jzw7x6); +assign Zmw7x6 = (!Qkiov6); +assign Qkiov6 = (~(Xzw7x6 | Clw7x6)); +assign Clw7x6 = (~(R8s7x6 | Jkiov6)); +assign Xzw7x6 = (E0x7x6 & L0x7x6); +assign L0x7x6 = (Ckiov6 | T9s7x6); +assign E0x7x6 = (S0x7x6 & Z0x7x6); +assign Z0x7x6 = (~(G1x7x6 & N1x7x6)); +assign N1x7x6 = (U1x7x6 | Smw7x6); +assign G1x7x6 = (~(B2x7x6 & I2x7x6)); +assign I2x7x6 = (~(P2x7x6 & W2x7x6)); +assign W2x7x6 = (Ckiov6 ? Lgj7z6[123] : Lgj7z6[120]); +assign P2x7x6 = (Dpw7x6 & D3x7x6); +assign D3x7x6 = (K3x7x6 | Jzw7x6); +assign Dpw7x6 = (F4x7x6 ? Y3x7x6 : R3x7x6); +assign B2x7x6 = (~(Jzw7x6 & K3x7x6)); +assign K3x7x6 = (!Qzw7x6); +assign S0x7x6 = (~(Smw7x6 & U1x7x6)); +assign U1x7x6 = (!Lmw7x6); +assign Lmw7x6 = (Jkiov6 ? Lgj7z6[131] : Lgj7z6[128]); +assign Jkiov6 = (!F4x7x6); +assign Smw7x6 = (Ckiov6 ? Lgj7z6[125] : Lgj7z6[122]); +assign Qzw7x6 = (Ckiov6 ? M4x7x6 : Ts7iw6); +assign Ckiov6 = (T4x7x6 & A5x7x6); +assign A5x7x6 = (H5x7x6 & Pes7x6); +assign H5x7x6 = (~(T9s7x6 & O5x7x6)); +assign T9s7x6 = (V5x7x6 & M6j7z6[40]); +assign V5x7x6 = (Ohj7z6[40] & Pes7x6); +assign T4x7x6 = (M6j7z6[41] & Ohj7z6[41]); +assign Jzw7x6 = (F4x7x6 ? J6x7x6 : C6x7x6); +assign F4x7x6 = (~(Q6x7x6 & X6x7x6)); +assign X6x7x6 = (E7x7x6 & Pes7x6); +assign E7x7x6 = (~(R8s7x6 & L7x7x6)); +assign R8s7x6 = (S7x7x6 & M6j7z6[42]); +assign S7x7x6 = (Ohj7z6[42] & Pes7x6); +assign Q6x7x6 = (M6j7z6[43] & Ohj7z6[43]); +assign Dcv7x6 = (!Wiv7x6); +assign Wiv7x6 = (Knr7x6 ? G8x7x6 : Z7x7x6); +assign Knr7x6 = (!Jjjov6); +assign Jjjov6 = (~(N8x7x6 & Ghv7x6)); +assign Ghv7x6 = (U8x7x6 | B9x7x6); +assign N8x7x6 = (~(I9x7x6 & P9x7x6)); +assign P9x7x6 = (W9x7x6 & Dax7x6); +assign Dax7x6 = (~(Kax7x6 & Rax7x6)); +assign Rax7x6 = (Yax7x6 & Fbx7x6); +assign Yax7x6 = (Mbx7x6 | Z7x7x6); +assign Kax7x6 = (Tbx7x6 & Rjv7x6); +assign Rjv7x6 = (Gtiov6 ? Hcx7x6 : Acx7x6); +assign Tbx7x6 = (!Kjv7x6); +assign Kjv7x6 = (Qjjov6 ? Vcx7x6 : Ocx7x6); +assign W9x7x6 = (~(Cdx7x6 & Z7x7x6)); +assign Cdx7x6 = (Mbx7x6 & Fbx7x6); +assign Fbx7x6 = (Uhv7x6 | Jdx7x6); +assign Mbx7x6 = (!G8x7x6); +assign I9x7x6 = (Qdx7x6 & Xdx7x6); +assign Xdx7x6 = (~(Jdx7x6 & Uhv7x6)); +assign Uhv7x6 = (Qjjov6 ? Lex7x6 : Eex7x6); +assign Eex7x6 = (!Sex7x6); +assign Jdx7x6 = (!Biv7x6); +assign Biv7x6 = (Gtiov6 ? Gfx7x6 : Zex7x6); +assign Qdx7x6 = (~(Sgv7x6 & Qjjov6)); +assign G8x7x6 = (Gtiov6 ? Ufx7x6 : Nfx7x6); +assign Gtiov6 = (Bgx7x6 & B9x7x6); +assign B9x7x6 = (~(Igx7x6 & Pgx7x6)); +assign Igx7x6 = (~(Ntiov6 | G6s7x6)); +assign Bgx7x6 = (~(Wgx7x6 & Dhx7x6)); +assign Dhx7x6 = (Gfx7x6 | Khx7x6); +assign Wgx7x6 = (Rhx7x6 & U8x7x6); +assign U8x7x6 = (~(Yhx7x6 & Fix7x6)); +assign Yhx7x6 = (~(Iuiov6 | S5s7x6)); +assign Rhx7x6 = (~(Mix7x6 & Tix7x6)); +assign Tix7x6 = (~(Khx7x6 & Gfx7x6)); +assign Gfx7x6 = (Ojx7x6 ? Hjx7x6 : Ajx7x6); +assign Khx7x6 = (!Zex7x6); +assign Zex7x6 = (Jkx7x6 ? Ckx7x6 : Vjx7x6); +assign Mix7x6 = (~(Qkx7x6 & Xkx7x6)); +assign Xkx7x6 = (Elx7x6 | Ufx7x6); +assign Qkx7x6 = (~(Llx7x6 & Hcx7x6)); +assign Hcx7x6 = (Ojx7x6 ? Zlx7x6 : Slx7x6); +assign Llx7x6 = (~(Acx7x6 | Gmx7x6)); +assign Gmx7x6 = (Ufx7x6 & Elx7x6); +assign Acx7x6 = (Jkx7x6 ? Umx7x6 : Nmx7x6); +assign Umx7x6 = (Iuiov6 ? Inx7x6 : Bnx7x6); +assign Ufx7x6 = (Ojx7x6 ? Wnx7x6 : Pnx7x6); +assign Ojx7x6 = (!Buiov6); +assign Buiov6 = (~(Dox7x6 | Pgx7x6)); +assign Pgx7x6 = (~(N6s7x6 | Utiov6)); +assign Dox7x6 = (Kox7x6 & Rox7x6); +assign Rox7x6 = (Ntiov6 | G6s7x6); +assign Kox7x6 = (Yox7x6 & Fpx7x6); +assign Fpx7x6 = (~(Mpx7x6 & Tpx7x6)); +assign Tpx7x6 = (Aqx7x6 | Hjx7x6); +assign Mpx7x6 = (~(Hqx7x6 & Oqx7x6)); +assign Oqx7x6 = (Vqx7x6 | Zlx7x6); +assign Zlx7x6 = (Ntiov6 ? Gq6iw6 : Crx7x6); +assign Vqx7x6 = (~(Slx7x6 & Jrx7x6)); +assign Jrx7x6 = (Wnx7x6 | Qrx7x6); +assign Slx7x6 = (Utiov6 ? Esx7x6 : Xrx7x6); +assign Hqx7x6 = (~(Qrx7x6 & Wnx7x6)); +assign Qrx7x6 = (!Pnx7x6); +assign Yox7x6 = (~(Hjx7x6 & Aqx7x6)); +assign Aqx7x6 = (!Ajx7x6); +assign Ajx7x6 = (Utiov6 ? Lgj7z6[95] : Lgj7z6[92]); +assign Hjx7x6 = (Lsx7x6 ? Lgj7z6[86] : Lgj7z6[89]); +assign Wnx7x6 = (Lsx7x6 ? Lgj7z6[85] : Lgj7z6[88]); +assign Lsx7x6 = (!Ntiov6); +assign Ntiov6 = (Ssx7x6 & Zsx7x6); +assign Zsx7x6 = (Gtx7x6 & Pes7x6); +assign Gtx7x6 = (~(G6s7x6 & Ntx7x6)); +assign G6s7x6 = (Utx7x6 & M6j7z6[28]); +assign Utx7x6 = (Ohj7z6[28] & Pes7x6); +assign Ssx7x6 = (M6j7z6[29] & Ohj7z6[29]); +assign Pnx7x6 = (Utiov6 ? Lgj7z6[94] : Lgj7z6[91]); +assign Utiov6 = (Bux7x6 & Iux7x6); +assign Iux7x6 = (Pux7x6 & Pes7x6); +assign Pux7x6 = (~(N6s7x6 & Wux7x6)); +assign N6s7x6 = (Dvx7x6 & M6j7z6[30]); +assign Dvx7x6 = (Ohj7z6[30] & Pes7x6); +assign Bux7x6 = (M6j7z6[31] & Ohj7z6[31]); +assign Nfx7x6 = (!Elx7x6); +assign Elx7x6 = (Jkx7x6 ? Rvx7x6 : Kvx7x6); +assign Jkx7x6 = (!Wuiov6); +assign Wuiov6 = (~(Yvx7x6 | Fix7x6)); +assign Fix7x6 = (~(Z5s7x6 | Puiov6)); +assign Yvx7x6 = (Fwx7x6 & Mwx7x6); +assign Mwx7x6 = (Iuiov6 | S5s7x6); +assign Fwx7x6 = (Twx7x6 & Axx7x6); +assign Axx7x6 = (~(Hxx7x6 & Oxx7x6)); +assign Oxx7x6 = (Vxx7x6 | Ckx7x6); +assign Hxx7x6 = (~(Cyx7x6 & Jyx7x6)); +assign Jyx7x6 = (~(Qyx7x6 & Xyx7x6)); +assign Xyx7x6 = (Iuiov6 ? Lgj7z6[75] : Lgj7z6[72]); +assign Qyx7x6 = (Nmx7x6 & Ezx7x6); +assign Ezx7x6 = (Lzx7x6 | Kvx7x6); +assign Nmx7x6 = (G0y7x6 ? Zzx7x6 : Szx7x6); +assign Cyx7x6 = (~(Kvx7x6 & Lzx7x6)); +assign Lzx7x6 = (!Rvx7x6); +assign Twx7x6 = (~(Ckx7x6 & Vxx7x6)); +assign Vxx7x6 = (!Vjx7x6); +assign Vjx7x6 = (Puiov6 ? Lgj7z6[83] : Lgj7z6[80]); +assign Ckx7x6 = (Iuiov6 ? Lgj7z6[77] : Lgj7z6[74]); +assign Rvx7x6 = (Iuiov6 ? U0y7x6 : N0y7x6); +assign Iuiov6 = (B1y7x6 & I1y7x6); +assign I1y7x6 = (P1y7x6 & Pes7x6); +assign P1y7x6 = (~(S5s7x6 & W1y7x6)); +assign S5s7x6 = (D2y7x6 & M6j7z6[24]); +assign D2y7x6 = (Ohj7z6[24] & Pes7x6); +assign B1y7x6 = (M6j7z6[25] & Ohj7z6[25]); +assign Kvx7x6 = (G0y7x6 ? R2y7x6 : K2y7x6); +assign G0y7x6 = (!Puiov6); +assign Puiov6 = (Y2y7x6 & F3y7x6); +assign F3y7x6 = (M3y7x6 & Pes7x6); +assign M3y7x6 = (~(Z5s7x6 & T3y7x6)); +assign Z5s7x6 = (A4y7x6 & M6j7z6[26]); +assign A4y7x6 = (Ohj7z6[26] & Pes7x6); +assign Y2y7x6 = (M6j7z6[27] & Ohj7z6[27]); +assign Z7x7x6 = (Qjjov6 ? O4y7x6 : H4y7x6); +assign Qjjov6 = (~(V4y7x6 & Zgv7x6)); +assign Zgv7x6 = (~(C5y7x6 & J5y7x6)); +assign C5y7x6 = (~(Zliov6 | Y8s7x6)); +assign V4y7x6 = (~(Q5y7x6 & X5y7x6)); +assign X5y7x6 = (~(Sex7x6 & E6y7x6)); +assign Q5y7x6 = (~(L6y7x6 | Sgv7x6)); +assign Sgv7x6 = (S6y7x6 & Sxs7x6); +assign Sxs7x6 = (Z6y7x6 & G7y7x6); +assign G7y7x6 = (~(N7y7x6 & Pes7x6)); +assign S6y7x6 = (U7y7x6 & B8y7x6); +assign L6y7x6 = (Lex7x6 & I8y7x6); +assign I8y7x6 = (E6y7x6 | Sex7x6); +assign Sex7x6 = (Nmiov6 ? W8y7x6 : P8y7x6); +assign E6y7x6 = (~(D9y7x6 & K9y7x6)); +assign K9y7x6 = (~(R9y7x6 & Ocx7x6)); +assign Ocx7x6 = (Nmiov6 ? Fay7x6 : Y9y7x6); +assign Fay7x6 = (Gmiov6 ? Tay7x6 : May7x6); +assign R9y7x6 = (~(Vcx7x6 | Aby7x6)); +assign Aby7x6 = (Hby7x6 & H4y7x6); +assign Vcx7x6 = (Hjiov6 ? Vby7x6 : Oby7x6); +assign Oby7x6 = (U7y7x6 ? Jcy7x6 : Ccy7x6); +assign D9y7x6 = (H4y7x6 | Hby7x6); +assign Lex7x6 = (Hjiov6 ? Xcy7x6 : Qcy7x6); +assign O4y7x6 = (!Hby7x6); +assign Hby7x6 = (Hjiov6 ? Ldy7x6 : Edy7x6); +assign Hjiov6 = (Sdy7x6 & Zdy7x6); +assign Zdy7x6 = (~(Gey7x6 & Ney7x6)); +assign Ney7x6 = (Uey7x6 & Bfy7x6); +assign Bfy7x6 = (~(Ify7x6 & Pfy7x6)); +assign Pfy7x6 = (Wfy7x6 & Dgy7x6); +assign Wfy7x6 = (Kgy7x6 | Ldy7x6); +assign Ify7x6 = (Rgy7x6 & Vby7x6); +assign Vby7x6 = (B8y7x6 ? Fhy7x6 : Ygy7x6); +assign Rgy7x6 = (U7y7x6 ? Lgj7z6[48] : Lgj7z6[51]); +assign Uey7x6 = (~(Mhy7x6 & Ldy7x6)); +assign Mhy7x6 = (Kgy7x6 & Dgy7x6); +assign Dgy7x6 = (Thy7x6 | Qcy7x6); +assign Kgy7x6 = (!Edy7x6); +assign Gey7x6 = (Aiy7x6 & Hiy7x6); +assign Hiy7x6 = (N7y7x6 | Tiiov6); +assign Aiy7x6 = (~(Qcy7x6 & Thy7x6)); +assign Thy7x6 = (!Xcy7x6); +assign Xcy7x6 = (Ajiov6 ? Lgj7z6[59] : Lgj7z6[56]); +assign Ajiov6 = (!B8y7x6); +assign Qcy7x6 = (U7y7x6 ? Lgj7z6[50] : Lgj7z6[53]); +assign Sdy7x6 = (~(Z6y7x6 & B8y7x6)); +assign Ldy7x6 = (B8y7x6 ? Viy7x6 : Oiy7x6); +assign B8y7x6 = (~(Cjy7x6 & Jjy7x6)); +assign Jjy7x6 = (Qjy7x6 & Pes7x6); +assign Qjy7x6 = (Z6y7x6 | Xjy7x6); +assign Z6y7x6 = (~(Eky7x6 & M6j7z6[18])); +assign Eky7x6 = (Ohj7z6[18] & Pes7x6); +assign Cjy7x6 = (M6j7z6[19] & Ohj7z6[19]); +assign Edy7x6 = (Tiiov6 ? Sky7x6 : Lky7x6); +assign Tiiov6 = (!U7y7x6); +assign U7y7x6 = (~(Zky7x6 & Gly7x6)); +assign Gly7x6 = (Nly7x6 & Pes7x6); +assign Nly7x6 = (~(Uly7x6 & N7y7x6)); +assign N7y7x6 = (M6j7z6[16] & Ohj7z6[16]); +assign Zky7x6 = (M6j7z6[17] & Ohj7z6[17]); +assign H4y7x6 = (Nmiov6 ? Imy7x6 : Bmy7x6); +assign Nmiov6 = (~(Pmy7x6 | J5y7x6)); +assign J5y7x6 = (~(F9s7x6 | Gmiov6)); +assign Pmy7x6 = (Wmy7x6 & Dny7x6); +assign Dny7x6 = (Zliov6 | Y8s7x6); +assign Wmy7x6 = (Kny7x6 & Rny7x6); +assign Rny7x6 = (~(Yny7x6 & Foy7x6)); +assign Foy7x6 = (W8y7x6 | Moy7x6); +assign Yny7x6 = (~(Toy7x6 & Apy7x6)); +assign Apy7x6 = (~(Hpy7x6 & Opy7x6)); +assign Opy7x6 = (Vpy7x6 ? May7x6 : Tay7x6); +assign Hpy7x6 = (~(Y9y7x6 | Cqy7x6)); +assign Cqy7x6 = (~(Bmy7x6 | Jqy7x6)); +assign Y9y7x6 = (Zliov6 ? Qqy7x6 : Ae8iw6); +assign Toy7x6 = (~(Jqy7x6 & Bmy7x6)); +assign Jqy7x6 = (!Imy7x6); +assign Kny7x6 = (~(Moy7x6 & W8y7x6)); +assign W8y7x6 = (Vpy7x6 ? Ery7x6 : Xqy7x6); +assign Vpy7x6 = (!Gmiov6); +assign Moy7x6 = (!P8y7x6); +assign P8y7x6 = (Zliov6 ? Lry7x6 : Sh7iw6); +assign Imy7x6 = (Gmiov6 ? Lgj7z6[70] : Lgj7z6[67]); +assign Gmiov6 = (Sry7x6 & Zry7x6); +assign Zry7x6 = (Gsy7x6 & Pes7x6); +assign Gsy7x6 = (~(F9s7x6 & Nsy7x6)); +assign F9s7x6 = (Usy7x6 & M6j7z6[22]); +assign Usy7x6 = (Ohj7z6[22] & Pes7x6); +assign Sry7x6 = (M6j7z6[23] & Ohj7z6[23]); +assign Bmy7x6 = (Bty7x6 ? Lgj7z6[61] : Lgj7z6[64]); +assign Bty7x6 = (!Zliov6); +assign Zliov6 = (Ity7x6 & Pty7x6); +assign Pty7x6 = (Wty7x6 & Pes7x6); +assign Wty7x6 = (~(Y8s7x6 & Duy7x6)); +assign Y8s7x6 = (Kuy7x6 & M6j7z6[20]); +assign Kuy7x6 = (Ohj7z6[20] & Pes7x6); +assign Ity7x6 = (M6j7z6[21] & Ohj7z6[21]); +assign I4v7x6 = (!T6v7x6); +assign T6v7x6 = (Itjov6 ? Yuy7x6 : Ruy7x6); +assign Itjov6 = (!Lrr7x6); +assign Lrr7x6 = (~(Fvy7x6 & Mvy7x6)); +assign Mvy7x6 = (~(Tvy7x6 & Awy7x6)); +assign Awy7x6 = (~(Hwy7x6 | Owy7x6)); +assign Tvy7x6 = (~(Vwy7x6 | Cxy7x6)); +assign Fvy7x6 = (~(Jxy7x6 & Qxy7x6)); +assign Qxy7x6 = (~(Xxy7x6 | Fft7x6)); +assign Fft7x6 = (Eyy7x6 & Lyy7x6); +assign Lyy7x6 = (Syy7x6 & Gsjov6); +assign Eyy7x6 = (~(Zyy7x6 | A4jov6)); +assign Xxy7x6 = (Gzy7x6 & Nzy7x6); +assign Nzy7x6 = (Uzy7x6 & B0z7x6); +assign B0z7x6 = (I0z7x6 | Ruy7x6); +assign Gzy7x6 = (P0z7x6 & S9v7x6); +assign S9v7x6 = (Zrr7x6 ? D1z7x6 : W0z7x6); +assign P0z7x6 = (!L9v7x6); +assign L9v7x6 = (~(K1z7x6 & R1z7x6)); +assign R1z7x6 = (~(Y1z7x6 & Kujov6)); +assign K1z7x6 = (Cqr7x6 ? M2z7x6 : F2z7x6); +assign M2z7x6 = (~(Ptjov6 & T2z7x6)); +assign F2z7x6 = (Kujov6 | A3z7x6); +assign Jxy7x6 = (H3z7x6 & O3z7x6); +assign O3z7x6 = (~(V3z7x6 & Ruy7x6)); +assign V3z7x6 = (I0z7x6 & Uzy7x6); +assign Uzy7x6 = (C4z7x6 | Gav7x6); +assign H3z7x6 = (~(Gav7x6 & C4z7x6)); +assign C4z7x6 = (!Z9v7x6); +assign Z9v7x6 = (Zrr7x6 ? Q4z7x6 : J4z7x6); +assign Gav7x6 = (Ptjov6 ? E5z7x6 : X4z7x6); +assign Yuy7x6 = (!I0z7x6); +assign I0z7x6 = (Ptjov6 ? S5z7x6 : L5z7x6); +assign Ptjov6 = (!Kujov6); +assign Kujov6 = (~(Z5z7x6 & Cxy7x6)); +assign Cxy7x6 = (~(G6z7x6 & N6z7x6)); +assign N6z7x6 = (U6z7x6 & V3s7x6); +assign G6z7x6 = (~(B7z7x6 | I7z7x6)); +assign Z5z7x6 = (~(P7z7x6 & W7z7x6)); +assign W7z7x6 = (D8z7x6 & K8z7x6); +assign K8z7x6 = (~(R8z7x6 & Y8z7x6)); +assign Y8z7x6 = (F9z7x6 & M9z7x6); +assign F9z7x6 = (~(T9z7x6 & L5z7x6)); +assign R8z7x6 = (Aaz7x6 & Y1z7x6); +assign Y1z7x6 = (Rujov6 ? Oaz7x6 : Haz7x6); +assign Aaz7x6 = (Wtjov6 ? A3z7x6 : Vaz7x6); +assign D8z7x6 = (Cbz7x6 | Vwy7x6); +assign Cbz7x6 = (Owy7x6 | Qqr7x6); +assign P7z7x6 = (Jbz7x6 & Qbz7x6); +assign Qbz7x6 = (Xbz7x6 | L5z7x6); +assign Xbz7x6 = (~(S5z7x6 & M9z7x6)); +assign M9z7x6 = (~(X4z7x6 & Ecz7x6)); +assign Jbz7x6 = (Ecz7x6 | X4z7x6); +assign X4z7x6 = (Qqr7x6 ? Scz7x6 : Lcz7x6); +assign Lcz7x6 = (!Zcz7x6); +assign Ecz7x6 = (!E5z7x6); +assign E5z7x6 = (Cqr7x6 ? Ndz7x6 : Gdz7x6); +assign S5z7x6 = (!T9z7x6); +assign T9z7x6 = (Cqr7x6 ? Bez7x6 : Udz7x6); +assign Cqr7x6 = (!Wtjov6); +assign Wtjov6 = (~(Iez7x6 & B7z7x6)); +assign B7z7x6 = (~(Pez7x6 & Wez7x6)); +assign Pez7x6 = (~(J5jov6 | Q4s7x6)); +assign Iez7x6 = (~(Dfz7x6 & Kfz7x6)); +assign Kfz7x6 = (~(Ndz7x6 & Rfz7x6)); +assign Ndz7x6 = (!Yfz7x6); +assign Dfz7x6 = (Fgz7x6 & Mgz7x6); +assign Mgz7x6 = (Tgz7x6 | I7z7x6); +assign Fgz7x6 = (~(Ahz7x6 & Hhz7x6)); +assign Hhz7x6 = (~(Ohz7x6 & Vhz7x6)); +assign Vhz7x6 = (Bez7x6 | Ciz7x6); +assign Ohz7x6 = (~(Jiz7x6 & Vaz7x6)); +assign Vaz7x6 = (!T2z7x6); +assign T2z7x6 = (X5jov6 ? Xiz7x6 : Qiz7x6); +assign Jiz7x6 = (~(A3z7x6 | Ejz7x6)); +assign Ejz7x6 = (Ciz7x6 & Bez7x6); +assign A3z7x6 = (Zjz7x6 ? Sjz7x6 : Ljz7x6); +assign Sjz7x6 = (U6z7x6 ? Eg8iw6 : Gkz7x6); +assign Ahz7x6 = (~(Gdz7x6 & Yfz7x6)); +assign Yfz7x6 = (X5jov6 ? Ukz7x6 : Nkz7x6); +assign Gdz7x6 = (!Rfz7x6); +assign Rfz7x6 = (Zjz7x6 ? Ilz7x6 : Blz7x6); +assign Bez7x6 = (X5jov6 ? Wlz7x6 : Plz7x6); +assign X5jov6 = (~(Dmz7x6 | Wez7x6)); +assign Wez7x6 = (~(X4s7x6 | Q5jov6)); +assign Dmz7x6 = (Kmz7x6 & Rmz7x6); +assign Rmz7x6 = (J5jov6 | Q4s7x6); +assign Kmz7x6 = (Ymz7x6 & Fnz7x6); +assign Fnz7x6 = (~(Mnz7x6 & Tnz7x6)); +assign Tnz7x6 = (Aoz7x6 | Nkz7x6); +assign Mnz7x6 = (~(Hoz7x6 & Ooz7x6)); +assign Ooz7x6 = (~(Voz7x6 & Qiz7x6)); +assign Qiz7x6 = (J5jov6 ? Lgj7z6[39] : Lgj7z6[36]); +assign Voz7x6 = (~(Xiz7x6 | Cpz7x6)); +assign Cpz7x6 = (~(Plz7x6 | Jpz7x6)); +assign Xiz7x6 = (Q5jov6 ? Lgj7z6[45] : Lgj7z6[42]); +assign Hoz7x6 = (~(Jpz7x6 & Plz7x6)); +assign Ymz7x6 = (~(Nkz7x6 & Aoz7x6)); +assign Aoz7x6 = (!Ukz7x6); +assign Ukz7x6 = (Q5jov6 ? Lgj7z6[47] : Lgj7z6[44]); +assign Nkz7x6 = (J5jov6 ? Lgj7z6[41] : Lgj7z6[38]); +assign Wlz7x6 = (!Jpz7x6); +assign Jpz7x6 = (Eqz7x6 ? Xpz7x6 : Qpz7x6); +assign Eqz7x6 = (!Q5jov6); +assign Q5jov6 = (Lqz7x6 & Sqz7x6); +assign Sqz7x6 = (Zqz7x6 & Pes7x6); +assign Zqz7x6 = (~(X4s7x6 & Grz7x6)); +assign X4s7x6 = (Nrz7x6 & M6j7z6[14]); +assign Nrz7x6 = (Ohj7z6[14] & Pes7x6); +assign Lqz7x6 = (M6j7z6[15] & Ohj7z6[15]); +assign Plz7x6 = (J5jov6 ? Lgj7z6[40] : Lgj7z6[37]); +assign J5jov6 = (Urz7x6 & Bsz7x6); +assign Bsz7x6 = (Isz7x6 & Pes7x6); +assign Isz7x6 = (~(Q4s7x6 & Psz7x6)); +assign Q4s7x6 = (Wsz7x6 & M6j7z6[12]); +assign Wsz7x6 = (Ohj7z6[12] & Pes7x6); +assign Urz7x6 = (M6j7z6[13] & Ohj7z6[13]); +assign Udz7x6 = (!Ciz7x6); +assign Ciz7x6 = (Zjz7x6 ? Ktz7x6 : Dtz7x6); +assign Zjz7x6 = (!Zziov6); +assign Zziov6 = (Rtz7x6 & I7z7x6); +assign I7z7x6 = (C4s7x6 | Sziov6); +assign Rtz7x6 = (~(Ytz7x6 & Tgz7x6)); +assign Tgz7x6 = (~(U6z7x6 & V3s7x6)); +assign Ytz7x6 = (Fuz7x6 & Muz7x6); +assign Muz7x6 = (~(Tuz7x6 & Avz7x6)); +assign Avz7x6 = (Hvz7x6 | Ilz7x6); +assign Tuz7x6 = (~(Ovz7x6 & Vvz7x6)); +assign Vvz7x6 = (~(Cwz7x6 & Jwz7x6)); +assign Jwz7x6 = (U6z7x6 ? Lgj7z6[24] : Lgj7z6[27]); +assign Cwz7x6 = (Ljz7x6 & Qwz7x6); +assign Qwz7x6 = (Xwz7x6 | Dtz7x6); +assign Ljz7x6 = (Sxz7x6 ? Lxz7x6 : Exz7x6); +assign Ovz7x6 = (~(Dtz7x6 & Xwz7x6)); +assign Xwz7x6 = (!Ktz7x6); +assign Fuz7x6 = (~(Ilz7x6 & Hvz7x6)); +assign Hvz7x6 = (!Blz7x6); +assign Blz7x6 = (Sziov6 ? Lgj7z6[35] : Lgj7z6[32]); +assign Ilz7x6 = (U6z7x6 ? Lgj7z6[26] : Lgj7z6[29]); +assign Ktz7x6 = (Lziov6 ? Zxz7x6 : Dy7iw6); +assign Lziov6 = (!U6z7x6); +assign U6z7x6 = (~(Gyz7x6 & Nyz7x6)); +assign Nyz7x6 = (Uyz7x6 & Pes7x6); +assign Uyz7x6 = (V3s7x6 | Bzz7x6); +assign V3s7x6 = (~(Izz7x6 & M6j7z6[8])); +assign Izz7x6 = (Ohj7z6[8] & Pes7x6); +assign Gyz7x6 = (M6j7z6[9] & Ohj7z6[9]); +assign Dtz7x6 = (Sxz7x6 ? Wzz7x6 : Pzz7x6); +assign Sxz7x6 = (!Sziov6); +assign Sziov6 = (D008x6 & K008x6); +assign K008x6 = (R008x6 & Pes7x6); +assign R008x6 = (~(C4s7x6 & Y008x6)); +assign C4s7x6 = (F108x6 & M6j7z6[10]); +assign F108x6 = (Ohj7z6[10] & Pes7x6); +assign D008x6 = (M6j7z6[11] & Ohj7z6[11]); +assign L5z7x6 = (Qqr7x6 ? T108x6 : M108x6); +assign Qqr7x6 = (!Rujov6); +assign Rujov6 = (~(A208x6 & Hwy7x6)); +assign Hwy7x6 = (~(H208x6 & O208x6)); +assign H208x6 = (~(R2jov6 | F2s7x6)); +assign A208x6 = (~(V208x6 & C308x6)); +assign C308x6 = (Vwy7x6 | Owy7x6); +assign V208x6 = (J308x6 & Q308x6); +assign Q308x6 = (~(Zcz7x6 & X308x6)); +assign X308x6 = (E408x6 | Scz7x6); +assign Zcz7x6 = (Z408x6 ? S408x6 : L408x6); +assign S408x6 = (!G508x6); +assign J308x6 = (~(Scz7x6 & E408x6)); +assign E408x6 = (~(N508x6 & U508x6)); +assign U508x6 = (B608x6 | Haz7x6); +assign Haz7x6 = (F3jov6 ? P608x6 : I608x6); +assign I608x6 = (W608x6 ? Lgj7z6[12] : Lgj7z6[15]); +assign B608x6 = (~(Oaz7x6 & D708x6)); +assign D708x6 = (~(M108x6 & K708x6)); +assign Oaz7x6 = (!R708x6); +assign R708x6 = (Z408x6 ? F808x6 : Y708x6); +assign F808x6 = (I1jov6 ? T808x6 : M808x6); +assign N508x6 = (K708x6 | M108x6); +assign Scz7x6 = (F3jov6 ? H908x6 : A908x6); +assign T108x6 = (!K708x6); +assign K708x6 = (F3jov6 ? V908x6 : O908x6); +assign F3jov6 = (~(Ca08x6 | O208x6)); +assign O208x6 = (~(Gds7x6 | Y2jov6)); +assign Ca08x6 = (Ja08x6 & Qa08x6); +assign Qa08x6 = (Xa08x6 & Eb08x6); +assign Eb08x6 = (~(Lb08x6 & Sb08x6)); +assign Sb08x6 = (Zb08x6 & Gc08x6); +assign Zb08x6 = (Nc08x6 | O908x6); +assign Lb08x6 = (~(Uc08x6 | P608x6)); +assign P608x6 = (Y2jov6 ? Lgj7z6[21] : Lgj7z6[18]); +assign Uc08x6 = (R2jov6 ? Bd08x6 : Zg8iw6); +assign Xa08x6 = (~(Id08x6 & O908x6)); +assign Id08x6 = (Nc08x6 & Gc08x6); +assign Gc08x6 = (H908x6 | Pd08x6); +assign Nc08x6 = (!V908x6); +assign Ja08x6 = (Wd08x6 & De08x6); +assign De08x6 = (~(Pd08x6 & H908x6)); +assign H908x6 = (Ye08x6 ? Re08x6 : Ke08x6); +assign Pd08x6 = (!A908x6); +assign A908x6 = (R2jov6 ? Ff08x6 : Ml7iw6); +assign Wd08x6 = (R2jov6 | F2s7x6); +assign V908x6 = (Y2jov6 ? Lgj7z6[22] : Lgj7z6[19]); +assign Y2jov6 = (!Ye08x6); +assign Ye08x6 = (~(Mf08x6 & Tf08x6)); +assign Tf08x6 = (Ag08x6 & Pes7x6); +assign Ag08x6 = (~(Gds7x6 & Hg08x6)); +assign Gds7x6 = (Og08x6 & M6j7z6[6]); +assign Og08x6 = (Ohj7z6[6] & Pes7x6); +assign Mf08x6 = (M6j7z6[7] & Ohj7z6[7]); +assign O908x6 = (W608x6 ? Lgj7z6[13] : Lgj7z6[16]); +assign W608x6 = (!R2jov6); +assign R2jov6 = (Vg08x6 & Ch08x6); +assign Ch08x6 = (Jh08x6 & Pes7x6); +assign Jh08x6 = (~(F2s7x6 & Qh08x6)); +assign F2s7x6 = (Xh08x6 & M6j7z6[4]); +assign Xh08x6 = (Ohj7z6[4] & Pes7x6); +assign Vg08x6 = (M6j7z6[5] & Ohj7z6[5]); +assign M108x6 = (Z408x6 ? Li08x6 : Ei08x6); +assign Z408x6 = (!W1jov6); +assign W1jov6 = (Si08x6 & Owy7x6); +assign Owy7x6 = (J4s7x6 | P1jov6); +assign Si08x6 = (~(Zi08x6 & Gj08x6)); +assign Gj08x6 = (Nj08x6 & Vwy7x6); +assign Vwy7x6 = (Y1s7x6 | I1jov6); +assign Nj08x6 = (~(Uj08x6 & Ei08x6)); +assign Uj08x6 = (Bk08x6 & Ik08x6); +assign Zi08x6 = (Pk08x6 & Wk08x6); +assign Wk08x6 = (~(Dl08x6 & Kl08x6)); +assign Kl08x6 = (Rl08x6 & Ik08x6); +assign Ik08x6 = (~(L408x6 & G508x6)); +assign Rl08x6 = (Bk08x6 | Ei08x6); +assign Bk08x6 = (!Li08x6); +assign Dl08x6 = (Yl08x6 & Y708x6); +assign Y708x6 = (Tm08x6 ? Mm08x6 : Fm08x6); +assign Yl08x6 = (An08x6 ? Lgj7z6[0] : Lgj7z6[3]); +assign An08x6 = (!I1jov6); +assign Pk08x6 = (G508x6 | L408x6); +assign L408x6 = (P1jov6 ? Lgj7z6[11] : Lgj7z6[8]); +assign G508x6 = (I1jov6 ? On08x6 : Hn08x6); +assign Li08x6 = (I1jov6 ? Co08x6 : Vn08x6); +assign I1jov6 = (Jo08x6 & Qo08x6); +assign Qo08x6 = (Xo08x6 & Pes7x6); +assign Xo08x6 = (~(Y1s7x6 & Ep08x6)); +assign Y1s7x6 = (Lp08x6 & M6j7z6[0]); +assign Lp08x6 = (Ohj7z6[0] & Pes7x6); +assign Jo08x6 = (M6j7z6[1] & Ohj7z6[1]); +assign Ei08x6 = (Tm08x6 ? Zp08x6 : Sp08x6); +assign Tm08x6 = (!P1jov6); +assign P1jov6 = (Gq08x6 & Nq08x6); +assign Nq08x6 = (Uq08x6 & Pes7x6); +assign Uq08x6 = (~(J4s7x6 & Br08x6)); +assign J4s7x6 = (Ir08x6 & M6j7z6[2]); +assign Ir08x6 = (Ohj7z6[2] & Pes7x6); +assign Gq08x6 = (M6j7z6[3] & Ohj7z6[3]); +assign Ruy7x6 = (Zrr7x6 ? Wr08x6 : Pr08x6); +assign Zrr7x6 = (!Srr7x6); +assign Srr7x6 = (~(Ds08x6 & Zyy7x6)); +assign Zyy7x6 = (~(Ks08x6 & Rs08x6)); +assign Ks08x6 = (Srjov6 & Yseov6); +assign Yseov6 = (!Z3j7z6[15]); +assign Ds08x6 = (~(Ys08x6 & Ft08x6)); +assign Ft08x6 = (~(Fvjov6 & Mt08x6)); +assign Ys08x6 = (Tt08x6 & Au08x6); +assign Au08x6 = (~(Q4z7x6 & Hu08x6)); +assign Hu08x6 = (Ou08x6 | Vu08x6); +assign Q4z7x6 = (S6jov6 ? Jv08x6 : Cv08x6); +assign Tt08x6 = (~(Vu08x6 & Ou08x6)); +assign Ou08x6 = (!J4z7x6); +assign J4z7x6 = (Qv08x6 & Xv08x6); +assign Xv08x6 = (~(Jyiov6 & Ew08x6)); +assign Qv08x6 = (Err7x6 ? Sw08x6 : Lw08x6); +assign Sw08x6 = (Gsjov6 | Zw08x6); +assign Lw08x6 = (~(Fvjov6 & Gx08x6)); +assign Vu08x6 = (~(Nx08x6 & Ux08x6)); +assign Ux08x6 = (By08x6 | D1z7x6); +assign D1z7x6 = (S6jov6 ? Iy08x6 : Gaj7z6[0]); +assign By08x6 = (~(Py08x6 & W0z7x6)); +assign W0z7x6 = (~(Wy08x6 & Dz08x6)); +assign Dz08x6 = (~(Kz08x6 & Jyiov6)); +assign Jyiov6 = (Err7x6 & Gsjov6); +assign Wy08x6 = (Err7x6 ? Yz08x6 : Rz08x6); +assign Yz08x6 = (Gsjov6 | F018x6); +assign Rz08x6 = (~(Fvjov6 & M018x6)); +assign Py08x6 = (~(T018x6 & Wr08x6)); +assign Nx08x6 = (Wr08x6 | T018x6); +assign Wr08x6 = (S6jov6 ? A118x6 : Gaj7z6[1]); +assign S6jov6 = (H118x6 & O118x6); +assign O118x6 = (~(V118x6 & Z3j7z6[15])); +assign V118x6 = (C218x6 & J218x6); +assign J218x6 = (~(Jv08x6 & Q218x6)); +assign Q218x6 = (~(X218x6 & E318x6)); +assign X218x6 = (L318x6 & Cv08x6); +assign Jv08x6 = (Srjov6 ? Z318x6 : S318x6); +assign C218x6 = (~(Gaj7z6[2] & G418x6)); +assign G418x6 = (~(L318x6 & E318x6)); +assign E318x6 = (A118x6 | N418x6); +assign L318x6 = (U418x6 | Iy08x6); +assign Iy08x6 = (G7jov6 ? B518x6 : Nbj7z6[0]); +assign U418x6 = (~(Gaj7z6[0] & I518x6)); +assign I518x6 = (~(A118x6 & N418x6)); +assign H118x6 = (~(Srjov6 & Rs08x6)); +assign Rs08x6 = (Vueov6 | Oreet6); +assign Vueov6 = (!Oecet6); +assign A118x6 = (G7jov6 ? P518x6 : Nbj7z6[1]); +assign G7jov6 = (!Srjov6); +assign Srjov6 = (~(W518x6 & D618x6)); +assign D618x6 = (~(K618x6 & R618x6)); +assign R618x6 = (Y618x6 & F718x6); +assign F718x6 = (~(M718x6 & T718x6)); +assign T718x6 = (A818x6 & H818x6); +assign A818x6 = (O818x6 | Nbj7z6[1]); +assign M718x6 = (~(B518x6 | Cehov6)); +assign B518x6 = (V818x6 ? Z8j7z6[0] : T7j7z6[0]); +assign Y618x6 = (~(C918x6 & Nbj7z6[1])); +assign C918x6 = (O818x6 & H818x6); +assign H818x6 = (S318x6 | Nbj7z6[2]); +assign O818x6 = (!P518x6); +assign K618x6 = (Oecet6 & J918x6); +assign J918x6 = (~(S318x6 & Nbj7z6[2])); +assign S318x6 = (N7jov6 ? X918x6 : Q918x6); +assign W518x6 = (Ea18x6 & Pes7x6); +assign Pes7x6 = (!Oreet6); +assign Ea18x6 = (~(G5eov6 & V818x6)); +assign G5eov6 = (!Fhcet6); +assign P518x6 = (N7jov6 ? T7j7z6[1] : Z8j7z6[1]); +assign N7jov6 = (!V818x6); +assign V818x6 = (~(Zfcet6 & La18x6)); +assign La18x6 = (~(Fhcet6 & Sa18x6)); +assign Pr08x6 = (!T018x6); +assign T018x6 = (Err7x6 ? Gb18x6 : Za18x6); +assign Err7x6 = (!Mt08x6); +assign Mt08x6 = (~(Fvjov6 & Nb18x6)); +assign Nb18x6 = (~(Syy7x6 & Gsjov6)); +assign Syy7x6 = (~(Qyiov6 | K1s7x6)); +assign Gb18x6 = (Gsjov6 ? Bc18x6 : Ub18x6); +assign Gsjov6 = (~(Ic18x6 & Micet6)); +assign Ic18x6 = (Z3j7z6[12] & Pc18x6); +assign Pc18x6 = (~(Wc18x6 & Dd18x6)); +assign Dd18x6 = (Kd18x6 & Rd18x6); +assign Rd18x6 = (~(Yd18x6 & Fe18x6)); +assign Fe18x6 = (Me18x6 & F018x6); +assign Yd18x6 = (Kz08x6 & Te18x6); +assign Te18x6 = (Af18x6 | Ub18x6); +assign Kz08x6 = (Qyiov6 ? Zdj7z6[0] : Ffj7z6[0]); +assign Kd18x6 = (~(Hf18x6 & Af18x6)); +assign Hf18x6 = (Me18x6 & Ub18x6); +assign Me18x6 = (Ew08x6 | Zw08x6); +assign Wc18x6 = (Of18x6 & Vf18x6); +assign Vf18x6 = (~(Ew08x6 & Zw08x6)); +assign Ew08x6 = (Qyiov6 ? Zdj7z6[2] : Ffj7z6[2]); +assign Of18x6 = (Qyiov6 | K1s7x6); +assign Bc18x6 = (!Af18x6); +assign Af18x6 = (Qyiov6 ? Zdj7z6[1] : Ffj7z6[1]); +assign Qyiov6 = (Cg18x6 & Z3j7z6[14]); +assign Cg18x6 = (Sjcet6 & Jg18x6); +assign Jg18x6 = (~(K1s7x6 & Qg18x6)); +assign K1s7x6 = (Z3j7z6[13] & Ykcet6); +assign Za18x6 = (A4jov6 | Xg18x6); +assign A4jov6 = (!Fvjov6); +assign Fvjov6 = (Nxeov6 & Uxeov6); +assign Uxeov6 = (!V5get6); +assign Nxeov6 = (!Hdcet6); +assign Pzs7x6 = (Izs7x6 | Inadt6); +assign K9r7x6 = (Eh18x6 & Iwa7x6); +assign Iwa7x6 = (!Lh18x6); +assign Eh18x6 = (~(Bxi7z6[1] & Sh18x6)); +assign Sh18x6 = (~(O8fov6 & B52nv6)); +assign O8fov6 = (Yhc7x6 & Zh18x6); +assign Yhc7x6 = (Eec7x6 & Pb8iw6); +assign V3w7v6 = (~(Gi18x6 & Ni18x6)); +assign Ni18x6 = (~(Fjb7z6[2] & Lriiw6)); +assign Gi18x6 = (~(Ui18x6 & Bj18x6)); +assign Bj18x6 = (Ij18x6 & Pj18x6); +assign Pj18x6 = (Wj18x6 | Te2nv6); +assign Wj18x6 = (Dk18x6 & Kk18x6); +assign Ij18x6 = (~(Yd2nv6 | A0fet6)); +assign Ui18x6 = (Rk18x6 & Sriiw6); +assign Rk18x6 = (E1cet6 & Yk18x6); +assign Yk18x6 = (~(Lunov6 & Nmadt6)); +assign O3w7v6 = (~(Fl18x6 & Ml18x6)); +assign Ml18x6 = (~(Nxm7x6 & Tteov6)); +assign Fl18x6 = (Tl18x6 & Am18x6); +assign Am18x6 = (~(Ohj7z6[0] & Hm18x6)); +assign Hm18x6 = (~(Om18x6 & Vm18x6)); +assign Vm18x6 = (Cn18x6 & Jn18x6); +assign Cn18x6 = (~(Qn18x6 & Xn18x6)); +assign Xn18x6 = (Eo18x6 & M808x6); +assign Eo18x6 = (~(Lgj7z6[2] & Lo18x6)); +assign Qn18x6 = (So18x6 & Zo18x6); +assign Zo18x6 = (~(Gp18x6 & Lgj7z6[1])); +assign Om18x6 = (Np18x6 & Up18x6); +assign Up18x6 = (~(Bq18x6 & Vn08x6)); +assign Bq18x6 = (~(Iq18x6 & Pq18x6)); +assign Pq18x6 = (~(Wq18x6 & Hn08x6)); +assign Hn08x6 = (!Lgj7z6[2]); +assign Np18x6 = (Dr18x6 | Lgj7z6[2]); +assign Tl18x6 = (~(Fjb7z6[3] & Lriiw6)); +assign H3w7v6 = (~(Kr18x6 & Rr18x6)); +assign Rr18x6 = (~(Nxm7x6 & Cheov6)); +assign Kr18x6 = (Yr18x6 & Fs18x6); +assign Fs18x6 = (~(Ohj7z6[1] & Ms18x6)); +assign Ms18x6 = (~(Ts18x6 & At18x6)); +assign At18x6 = (Ht18x6 & Jn18x6); +assign Ht18x6 = (~(Ot18x6 & Vt18x6)); +assign Vt18x6 = (Cu18x6 & T808x6); +assign Cu18x6 = (~(Lgj7z6[5] & Lo18x6)); +assign Ot18x6 = (So18x6 & Ju18x6); +assign Ju18x6 = (~(Gp18x6 & Lgj7z6[4])); +assign Ts18x6 = (Qu18x6 & Xu18x6); +assign Xu18x6 = (~(Ev18x6 & On08x6)); +assign Ev18x6 = (~(Dr18x6 & Lv18x6)); +assign Lv18x6 = (~(Wq18x6 & Co08x6)); +assign Qu18x6 = (Iq18x6 | Lgj7z6[4]); +assign Yr18x6 = (~(Fjb7z6[4] & Lriiw6)); +assign A3w7v6 = (~(Sv18x6 & Zv18x6)); +assign Zv18x6 = (~(Nxm7x6 & Breov6)); +assign Sv18x6 = (Gw18x6 & Nw18x6); +assign Nw18x6 = (~(Ohj7z6[2] & Uw18x6)); +assign Uw18x6 = (~(Bx18x6 & Ix18x6)); +assign Ix18x6 = (Px18x6 & Jn18x6); +assign Px18x6 = (~(Wx18x6 & Dy18x6)); +assign Dy18x6 = (Ky18x6 & Mm08x6); +assign Ky18x6 = (~(Lgj7z6[8] & Lo18x6)); +assign Wx18x6 = (So18x6 & Ry18x6); +assign Ry18x6 = (~(Gp18x6 & Lgj7z6[7])); +assign Bx18x6 = (Yy18x6 & Fz18x6); +assign Fz18x6 = (~(Mz18x6 & Zp08x6)); +assign Mz18x6 = (~(Iq18x6 & Tz18x6)); +assign Tz18x6 = (~(Wq18x6 & A028x6)); +assign Yy18x6 = (Dr18x6 | Lgj7z6[8]); +assign Gw18x6 = (~(Fjb7z6[5] & Lriiw6)); +assign T2w7v6 = (~(H028x6 & O028x6)); +assign O028x6 = (~(Nxm7x6 & Vgeov6)); +assign H028x6 = (V028x6 & C128x6); +assign C128x6 = (~(Ohj7z6[3] & J128x6)); +assign J128x6 = (~(Q128x6 & X128x6)); +assign X128x6 = (E228x6 & Jn18x6); +assign E228x6 = (~(L228x6 & S228x6)); +assign S228x6 = (Z228x6 & Fm08x6); +assign Z228x6 = (~(Lgj7z6[11] & Lo18x6)); +assign L228x6 = (So18x6 & G328x6); +assign G328x6 = (~(Gp18x6 & Lgj7z6[10])); +assign Q128x6 = (N328x6 & U328x6); +assign U328x6 = (~(B428x6 & I428x6)); +assign B428x6 = (~(Dr18x6 & P428x6)); +assign P428x6 = (~(Wq18x6 & Sp08x6)); +assign N328x6 = (Iq18x6 | Lgj7z6[10]); +assign V028x6 = (~(Fjb7z6[6] & Lriiw6)); +assign M2w7v6 = (~(W428x6 & D528x6)); +assign D528x6 = (~(Nxm7x6 & Uqeov6)); +assign W428x6 = (K528x6 & R528x6); +assign R528x6 = (~(Ohj7z6[4] & Y528x6)); +assign Y528x6 = (~(F628x6 & M628x6)); +assign M628x6 = (T628x6 & Jn18x6); +assign T628x6 = (~(A728x6 & H728x6)); +assign H728x6 = (O728x6 & Zg8iw6); +assign O728x6 = (~(Lgj7z6[14] & Lo18x6)); +assign A728x6 = (So18x6 & V728x6); +assign V728x6 = (~(Gp18x6 & Lgj7z6[13])); +assign F628x6 = (C828x6 & J828x6); +assign J828x6 = (~(Q828x6 & Yy7iw6)); +assign Q828x6 = (~(Iq18x6 & X828x6)); +assign X828x6 = (~(Wq18x6 & Ml7iw6)); +assign Ml7iw6 = (!Lgj7z6[14]); +assign C828x6 = (Dr18x6 | Lgj7z6[14]); +assign K528x6 = (~(Fjb7z6[7] & Lriiw6)); +assign F2w7v6 = (~(E928x6 & L928x6)); +assign L928x6 = (~(Nxm7x6 & Yeeov6)); +assign E928x6 = (S928x6 & Z928x6); +assign Z928x6 = (~(Ohj7z6[5] & Ga28x6)); +assign Ga28x6 = (~(Na28x6 & Ua28x6)); +assign Ua28x6 = (Bb28x6 & Jn18x6); +assign Bb28x6 = (~(Ib28x6 & Pb28x6)); +assign Pb28x6 = (Wb28x6 & Bd08x6); +assign Wb28x6 = (~(Lgj7z6[17] & Lo18x6)); +assign Ib28x6 = (So18x6 & Dc28x6); +assign Dc28x6 = (~(Gp18x6 & Lgj7z6[16])); +assign Na28x6 = (Kc28x6 & Rc28x6); +assign Rc28x6 = (~(Yc28x6 & Ff08x6)); +assign Yc28x6 = (~(Dr18x6 & Fd28x6)); +assign Fd28x6 = (~(Wq18x6 & Md28x6)); +assign Kc28x6 = (Iq18x6 | Lgj7z6[16]); +assign S928x6 = (~(Fjb7z6[8] & Lriiw6)); +assign Y1w7v6 = (~(Td28x6 & Ae28x6)); +assign Ae28x6 = (~(Nxm7x6 & Zpeov6)); +assign Td28x6 = (He28x6 & Oe28x6); +assign Oe28x6 = (~(Ohj7z6[6] & Ve28x6)); +assign Ve28x6 = (~(Cf28x6 & Jf28x6)); +assign Jf28x6 = (Qf28x6 & Jn18x6); +assign Qf28x6 = (~(Xf28x6 & Eg28x6)); +assign Eg28x6 = (Lg28x6 & Sg28x6); +assign Lg28x6 = (~(Lgj7z6[20] & Lo18x6)); +assign Xf28x6 = (So18x6 & Zg28x6); +assign Zg28x6 = (~(Gp18x6 & Lgj7z6[19])); +assign Cf28x6 = (Gh28x6 & Nh28x6); +assign Nh28x6 = (~(Uh28x6 & Bi28x6)); +assign Uh28x6 = (~(Iq18x6 & Ii28x6)); +assign Ii28x6 = (~(Wq18x6 & Re08x6)); +assign Re08x6 = (!Lgj7z6[20]); +assign Gh28x6 = (Dr18x6 | Lgj7z6[20]); +assign He28x6 = (~(Fjb7z6[9] & Lriiw6)); +assign R1w7v6 = (~(Pi28x6 & Wi28x6)); +assign Wi28x6 = (~(Nxm7x6 & Ageov6)); +assign Pi28x6 = (Dj28x6 & Kj28x6); +assign Kj28x6 = (~(Ohj7z6[7] & Rj28x6)); +assign Rj28x6 = (~(Yj28x6 & Fk28x6)); +assign Fk28x6 = (Mk28x6 & Jn18x6); +assign Mk28x6 = (~(Tk28x6 & Al28x6)); +assign Al28x6 = (Hl28x6 & Ol28x6); +assign Hl28x6 = (~(Lgj7z6[23] & Lo18x6)); +assign Tk28x6 = (So18x6 & Vl28x6); +assign Vl28x6 = (~(Gp18x6 & Lgj7z6[22])); +assign Yj28x6 = (Cm28x6 & Jm28x6); +assign Jm28x6 = (~(Qm28x6 & Ke08x6)); +assign Qm28x6 = (~(Dr18x6 & Xm28x6)); +assign Xm28x6 = (~(Wq18x6 & En28x6)); +assign Cm28x6 = (Iq18x6 | Lgj7z6[22]); +assign Dj28x6 = (~(Fjb7z6[10] & Lriiw6)); +assign K1w7v6 = (~(Ln28x6 & Sn28x6)); +assign Sn28x6 = (~(Nxm7x6 & E4eov6)); +assign Ln28x6 = (Zn28x6 & Go28x6); +assign Go28x6 = (~(Ohj7z6[8] & No28x6)); +assign No28x6 = (~(Uo28x6 & Bp28x6)); +assign Bp28x6 = (Ip28x6 & Jn18x6); +assign Ip28x6 = (~(Pp28x6 & Wp28x6)); +assign Wp28x6 = (Dq28x6 & Eg8iw6); +assign Dq28x6 = (~(Lgj7z6[26] & Lo18x6)); +assign Pp28x6 = (So18x6 & Kq28x6); +assign Kq28x6 = (~(Gp18x6 & Lgj7z6[25])); +assign Uo28x6 = (Rq28x6 & Yq28x6); +assign Yq28x6 = (~(Fr28x6 & Dy7iw6)); +assign Fr28x6 = (~(Iq18x6 & Mr28x6)); +assign Mr28x6 = (~(Wq18x6 & Kk7iw6)); +assign Rq28x6 = (Dr18x6 | Lgj7z6[26]); +assign Zn28x6 = (~(Fjb7z6[11] & Lriiw6)); +assign D1w7v6 = (~(Tr28x6 & As28x6)); +assign As28x6 = (~(Nxm7x6 & X3eov6)); +assign Tr28x6 = (Hs28x6 & Os28x6); +assign Os28x6 = (~(Ohj7z6[9] & Vs28x6)); +assign Vs28x6 = (~(Ct28x6 & Jt28x6)); +assign Jt28x6 = (Qt28x6 & Jn18x6); +assign Qt28x6 = (~(Xt28x6 & Eu28x6)); +assign Eu28x6 = (Lu28x6 & Gkz7x6); +assign Lu28x6 = (~(Lgj7z6[29] & Lo18x6)); +assign Xt28x6 = (So18x6 & Su28x6); +assign Su28x6 = (~(Gp18x6 & Lgj7z6[28])); +assign Ct28x6 = (Zu28x6 & Gv28x6); +assign Gv28x6 = (~(Nv28x6 & Uv28x6)); +assign Nv28x6 = (~(Dr18x6 & Bw28x6)); +assign Bw28x6 = (~(Wq18x6 & Zxz7x6)); +assign Zu28x6 = (Iq18x6 | Lgj7z6[28]); +assign Hs28x6 = (~(Fjb7z6[12] & Lriiw6)); +assign W0w7v6 = (~(Iw28x6 & Pw28x6)); +assign Pw28x6 = (~(Nxm7x6 & O2eov6)); +assign Iw28x6 = (Ww28x6 & Dx28x6); +assign Dx28x6 = (~(Ohj7z6[10] & Kx28x6)); +assign Kx28x6 = (~(Rx28x6 & Yx28x6)); +assign Yx28x6 = (Fy28x6 & Jn18x6); +assign Fy28x6 = (~(My28x6 & Ty28x6)); +assign Ty28x6 = (Az28x6 & Lxz7x6); +assign Az28x6 = (~(Lgj7z6[32] & Lo18x6)); +assign My28x6 = (So18x6 & Hz28x6); +assign Hz28x6 = (~(Gp18x6 & Lgj7z6[31])); +assign Rx28x6 = (Oz28x6 & Vz28x6); +assign Vz28x6 = (~(C038x6 & Wzz7x6)); +assign C038x6 = (~(Iq18x6 & J038x6)); +assign J038x6 = (~(Wq18x6 & Q038x6)); +assign Oz28x6 = (Dr18x6 | Lgj7z6[32]); +assign Ww28x6 = (~(Fjb7z6[13] & Lriiw6)); +assign P0w7v6 = (~(X038x6 & E138x6)); +assign E138x6 = (~(Nxm7x6 & H2eov6)); +assign X038x6 = (L138x6 & S138x6); +assign S138x6 = (~(Ohj7z6[11] & Z138x6)); +assign Z138x6 = (~(G238x6 & N238x6)); +assign N238x6 = (U238x6 & Jn18x6); +assign U238x6 = (~(B338x6 & I338x6)); +assign I338x6 = (P338x6 & Exz7x6); +assign P338x6 = (~(Lgj7z6[35] & Lo18x6)); +assign B338x6 = (So18x6 & W338x6); +assign W338x6 = (~(Gp18x6 & Lgj7z6[34])); +assign G238x6 = (D438x6 & K438x6); +assign K438x6 = (~(R438x6 & Y438x6)); +assign R438x6 = (~(Dr18x6 & F538x6)); +assign F538x6 = (~(Wq18x6 & Pzz7x6)); +assign D438x6 = (Iq18x6 | Lgj7z6[34]); +assign L138x6 = (~(Fjb7z6[14] & Lriiw6)); +assign I0w7v6 = (~(M538x6 & T538x6)); +assign T538x6 = (~(Nxm7x6 & K0eov6)); +assign M538x6 = (A638x6 & H638x6); +assign H638x6 = (~(Ohj7z6[12] & O638x6)); +assign O638x6 = (~(V638x6 & C738x6)); +assign C738x6 = (J738x6 & Jn18x6); +assign J738x6 = (~(Q738x6 & X738x6)); +assign X738x6 = (~(E838x6 | Lgj7z6[36])); +assign E838x6 = (Lgj7z6[38] & Lo18x6); +assign Q738x6 = (So18x6 & L838x6); +assign L838x6 = (~(Gp18x6 & Lgj7z6[37])); +assign V638x6 = (S838x6 & Z838x6); +assign Z838x6 = (~(G938x6 & N938x6)); +assign G938x6 = (~(Iq18x6 & U938x6)); +assign U938x6 = (Ba38x6 | Lgj7z6[38]); +assign S838x6 = (Dr18x6 | Lgj7z6[38]); +assign A638x6 = (~(Fjb7z6[15] & Lriiw6)); +assign B0w7v6 = (~(Ia38x6 & Pa38x6)); +assign Pa38x6 = (~(Nxm7x6 & M1eov6)); +assign Ia38x6 = (Wa38x6 & Db38x6); +assign Db38x6 = (~(Ohj7z6[13] & Kb38x6)); +assign Kb38x6 = (~(Rb38x6 & Yb38x6)); +assign Yb38x6 = (Fc38x6 & Jn18x6); +assign Fc38x6 = (~(Mc38x6 & Tc38x6)); +assign Tc38x6 = (Ad38x6 & Hd38x6); +assign Ad38x6 = (~(Lgj7z6[41] & Lo18x6)); +assign Mc38x6 = (So18x6 & Od38x6); +assign Od38x6 = (~(Gp18x6 & Lgj7z6[40])); +assign Rb38x6 = (Vd38x6 & Ce38x6); +assign Ce38x6 = (~(Je38x6 & Qe38x6)); +assign Je38x6 = (~(Dr18x6 & Xe38x6)); +assign Xe38x6 = (~(Wq18x6 & Ef38x6)); +assign Vd38x6 = (Iq18x6 | Lgj7z6[40]); +assign Wa38x6 = (~(Fjb7z6[16] & Lriiw6)); +assign Uzv7v6 = (~(Lf38x6 & Sf38x6)); +assign Sf38x6 = (~(Nxm7x6 & F1eov6)); +assign Lf38x6 = (Zf38x6 & Gg38x6); +assign Gg38x6 = (~(Ohj7z6[14] & Ng38x6)); +assign Ng38x6 = (~(Ug38x6 & Bh38x6)); +assign Bh38x6 = (Ih38x6 & Jn18x6); +assign Ih38x6 = (~(Ph38x6 & Wh38x6)); +assign Wh38x6 = (Di38x6 & Ki38x6); +assign Di38x6 = (~(Lgj7z6[44] & Lo18x6)); +assign Ph38x6 = (So18x6 & Ri38x6); +assign Ri38x6 = (~(Gp18x6 & Lgj7z6[43])); +assign Ug38x6 = (Yi38x6 & Fj38x6); +assign Fj38x6 = (~(Mj38x6 & Xpz7x6)); +assign Mj38x6 = (~(Iq18x6 & Tj38x6)); +assign Tj38x6 = (~(Wq18x6 & Ak38x6)); +assign Yi38x6 = (Dr18x6 | Lgj7z6[44]); +assign Zf38x6 = (~(Fjb7z6[17] & Lriiw6)); +assign Nzv7v6 = (~(Hk38x6 & Ok38x6)); +assign Ok38x6 = (~(Nxm7x6 & Nydov6)); +assign Hk38x6 = (Vk38x6 & Cl38x6); +assign Cl38x6 = (~(Ohj7z6[15] & Jl38x6)); +assign Jl38x6 = (~(Ql38x6 & Xl38x6)); +assign Xl38x6 = (Em38x6 & Jn18x6); +assign Em38x6 = (~(Lm38x6 & Sm38x6)); +assign Sm38x6 = (Zm38x6 & Gn38x6); +assign Zm38x6 = (~(Lgj7z6[47] & Lo18x6)); +assign Lm38x6 = (So18x6 & Nn38x6); +assign Nn38x6 = (~(Gp18x6 & Lgj7z6[46])); +assign Ql38x6 = (Un38x6 & Bo38x6); +assign Bo38x6 = (~(Io38x6 & Po38x6)); +assign Io38x6 = (~(Dr18x6 & Wo38x6)); +assign Wo38x6 = (~(Wq18x6 & Qpz7x6)); +assign Un38x6 = (Iq18x6 | Lgj7z6[46]); +assign Vk38x6 = (~(Fjb7z6[18] & Lriiw6)); +assign Gzv7v6 = (~(Dp38x6 & Kp38x6)); +assign Kp38x6 = (~(Nxm7x6 & Speov6)); +assign Dp38x6 = (Rp38x6 & Yp38x6); +assign Yp38x6 = (~(Ohj7z6[16] & Fq38x6)); +assign Fq38x6 = (~(Mq38x6 & Tq38x6)); +assign Tq38x6 = (Ar38x6 & Jn18x6); +assign Ar38x6 = (~(Hr38x6 & Or38x6)); +assign Or38x6 = (Vr38x6 & Jcy7x6); +assign Vr38x6 = (~(Lgj7z6[50] & Lo18x6)); +assign Hr38x6 = (So18x6 & Cs38x6); +assign Cs38x6 = (~(Gp18x6 & Lgj7z6[49])); +assign Mq38x6 = (Js38x6 & Qs38x6); +assign Qs38x6 = (~(Xs38x6 & Lky7x6)); +assign Xs38x6 = (~(Iq18x6 & Et38x6)); +assign Et38x6 = (Ba38x6 | Lgj7z6[50]); +assign Js38x6 = (Dr18x6 | Lgj7z6[50]); +assign Rp38x6 = (~(Fjb7z6[19] & Lriiw6)); +assign Zyv7v6 = (~(Lt38x6 & St38x6)); +assign St38x6 = (~(Nxm7x6 & Tfeov6)); +assign Lt38x6 = (Zt38x6 & Gu38x6); +assign Gu38x6 = (~(Ohj7z6[17] & Nu38x6)); +assign Nu38x6 = (~(Uu38x6 & Bv38x6)); +assign Bv38x6 = (Iv38x6 & Jn18x6); +assign Iv38x6 = (~(Pv38x6 & Wv38x6)); +assign Wv38x6 = (Dw38x6 & Ccy7x6); +assign Dw38x6 = (~(Lgj7z6[53] & Lo18x6)); +assign Pv38x6 = (So18x6 & Kw38x6); +assign Kw38x6 = (~(Gp18x6 & Lgj7z6[52])); +assign Uu38x6 = (Rw38x6 & Yw38x6); +assign Yw38x6 = (~(Fx38x6 & Mx38x6)); +assign Fx38x6 = (~(Dr18x6 & Tx38x6)); +assign Tx38x6 = (Ba38x6 | Lgj7z6[52]); +assign Rw38x6 = (Iq18x6 | Lgj7z6[52]); +assign Zt38x6 = (~(Fjb7z6[20] & Lriiw6)); +assign Syv7v6 = (~(Ay38x6 & Hy38x6)); +assign Hy38x6 = (~(Nxm7x6 & Joeov6)); +assign Ay38x6 = (Oy38x6 & Vy38x6); +assign Vy38x6 = (~(Ohj7z6[18] & Cz38x6)); +assign Cz38x6 = (~(Jz38x6 & Qz38x6)); +assign Qz38x6 = (Xz38x6 & Jn18x6); +assign Xz38x6 = (~(E048x6 & L048x6)); +assign L048x6 = (S048x6 & Fhy7x6); +assign S048x6 = (~(Lgj7z6[56] & Lo18x6)); +assign E048x6 = (So18x6 & Z048x6); +assign Z048x6 = (~(Gp18x6 & Lgj7z6[55])); +assign Jz38x6 = (G148x6 & N148x6); +assign N148x6 = (~(U148x6 & Viy7x6)); +assign U148x6 = (~(Iq18x6 & B248x6)); +assign B248x6 = (Ba38x6 | Lgj7z6[56]); +assign G148x6 = (Dr18x6 | Lgj7z6[56]); +assign Oy38x6 = (~(Fjb7z6[21] & Lriiw6)); +assign Lyv7v6 = (~(I248x6 & P248x6)); +assign P248x6 = (~(Nxm7x6 & Bdeov6)); +assign I248x6 = (W248x6 & D348x6); +assign D348x6 = (~(Ohj7z6[19] & K348x6)); +assign K348x6 = (~(R348x6 & Y348x6)); +assign Y348x6 = (F448x6 & Jn18x6); +assign F448x6 = (~(M448x6 & T448x6)); +assign T448x6 = (A548x6 & Ygy7x6); +assign A548x6 = (~(Lgj7z6[59] & Lo18x6)); +assign M448x6 = (So18x6 & H548x6); +assign H548x6 = (~(Gp18x6 & Lgj7z6[58])); +assign R348x6 = (O548x6 & V548x6); +assign V548x6 = (~(C648x6 & J648x6)); +assign C648x6 = (~(Dr18x6 & Q648x6)); +assign Q648x6 = (Ba38x6 | Lgj7z6[58]); +assign O548x6 = (Iq18x6 | Lgj7z6[58]); +assign W248x6 = (~(Fjb7z6[22] & Lriiw6)); +assign Eyv7v6 = (~(X648x6 & E748x6)); +assign E748x6 = (~(Nxm7x6 & Coeov6)); +assign X648x6 = (L748x6 & S748x6); +assign S748x6 = (~(Ohj7z6[20] & Z748x6)); +assign Z748x6 = (~(G848x6 & N848x6)); +assign N848x6 = (U848x6 & Jn18x6); +assign U848x6 = (~(B948x6 & I948x6)); +assign I948x6 = (P948x6 & Ae8iw6); +assign Ae8iw6 = (!Lgj7z6[60]); +assign P948x6 = (~(Lgj7z6[62] & Lo18x6)); +assign B948x6 = (So18x6 & W948x6); +assign W948x6 = (~(Gp18x6 & Lgj7z6[61])); +assign G848x6 = (Da48x6 & Ka48x6); +assign Ka48x6 = (~(Ra48x6 & Gw7iw6)); +assign Ra48x6 = (~(Iq18x6 & Ya48x6)); +assign Ya48x6 = (Ba38x6 | Lgj7z6[62]); +assign Da48x6 = (Dr18x6 | Lgj7z6[62]); +assign L748x6 = (~(Fjb7z6[23] & Lriiw6)); +assign Xxv7v6 = (~(Fb48x6 & Mb48x6)); +assign Mb48x6 = (~(Nxm7x6 & Uceov6)); +assign Fb48x6 = (Tb48x6 & Ac48x6); +assign Ac48x6 = (~(Ohj7z6[21] & Hc48x6)); +assign Hc48x6 = (~(Oc48x6 & Vc48x6)); +assign Vc48x6 = (Cd48x6 & Jn18x6); +assign Cd48x6 = (~(Jd48x6 & Qd48x6)); +assign Qd48x6 = (Xd48x6 & Qqy7x6); +assign Qqy7x6 = (!Lgj7z6[63]); +assign Xd48x6 = (~(Lgj7z6[65] & Lo18x6)); +assign Jd48x6 = (So18x6 & Ee48x6); +assign Ee48x6 = (~(Gp18x6 & Lgj7z6[64])); +assign Oc48x6 = (Le48x6 & Se48x6); +assign Se48x6 = (~(Ze48x6 & Lry7x6)); +assign Ze48x6 = (~(Dr18x6 & Gf48x6)); +assign Gf48x6 = (Ba38x6 | Lgj7z6[64]); +assign Le48x6 = (Iq18x6 | Lgj7z6[64]); +assign Tb48x6 = (~(Fjb7z6[24] & Lriiw6)); +assign Qxv7v6 = (~(Nf48x6 & Uf48x6)); +assign Uf48x6 = (~(Nxm7x6 & Fmeov6)); +assign Nf48x6 = (Bg48x6 & Ig48x6); +assign Ig48x6 = (~(Ohj7z6[22] & Pg48x6)); +assign Pg48x6 = (~(Wg48x6 & Dh48x6)); +assign Dh48x6 = (Kh48x6 & Jn18x6); +assign Kh48x6 = (~(Rh48x6 & Yh48x6)); +assign Yh48x6 = (Fi48x6 & May7x6); +assign Fi48x6 = (~(Lgj7z6[68] & Lo18x6)); +assign Rh48x6 = (So18x6 & Mi48x6); +assign Mi48x6 = (~(Gp18x6 & Lgj7z6[67])); +assign Wg48x6 = (Ti48x6 & Aj48x6); +assign Aj48x6 = (~(Hj48x6 & Oj48x6)); +assign Hj48x6 = (~(Iq18x6 & Vj48x6)); +assign Vj48x6 = (Ba38x6 | Lgj7z6[68]); +assign Ti48x6 = (Dr18x6 | Lgj7z6[68]); +assign Bg48x6 = (~(Fjb7z6[25] & Lriiw6)); +assign Jxv7v6 = (~(Ck48x6 & Jk48x6)); +assign Jk48x6 = (~(Nxm7x6 & Zbeov6)); +assign Ck48x6 = (Qk48x6 & Xk48x6); +assign Xk48x6 = (~(Ohj7z6[23] & El48x6)); +assign El48x6 = (~(Ll48x6 & Sl48x6)); +assign Sl48x6 = (Zl48x6 & Jn18x6); +assign Zl48x6 = (~(Gm48x6 & Nm48x6)); +assign Nm48x6 = (Um48x6 & Tay7x6); +assign Um48x6 = (~(Lgj7z6[71] & Lo18x6)); +assign Gm48x6 = (So18x6 & Bn48x6); +assign Bn48x6 = (~(Gp18x6 & Lgj7z6[70])); +assign Ll48x6 = (In48x6 & Pn48x6); +assign Pn48x6 = (~(Wn48x6 & Xqy7x6)); +assign Wn48x6 = (~(Dr18x6 & Do48x6)); +assign Do48x6 = (Ba38x6 | Lgj7z6[70]); +assign In48x6 = (Iq18x6 | Lgj7z6[70]); +assign Qk48x6 = (~(Fjb7z6[26] & Lriiw6)); +assign Cxv7v6 = (~(Ko48x6 & Ro48x6)); +assign Ro48x6 = (~(Nxm7x6 & Gydov6)); +assign Ko48x6 = (Yo48x6 & Fp48x6); +assign Fp48x6 = (~(Ohj7z6[24] & Mp48x6)); +assign Mp48x6 = (~(Tp48x6 & Aq48x6)); +assign Aq48x6 = (Hq48x6 & Jn18x6); +assign Hq48x6 = (~(Oq48x6 & Vq48x6)); +assign Vq48x6 = (Cr48x6 & Bnx7x6); +assign Cr48x6 = (~(Lgj7z6[74] & Lo18x6)); +assign Oq48x6 = (So18x6 & Jr48x6); +assign Jr48x6 = (~(Gp18x6 & Lgj7z6[73])); +assign Tp48x6 = (Qr48x6 & Xr48x6); +assign Xr48x6 = (~(Es48x6 & N0y7x6)); +assign Es48x6 = (~(Iq18x6 & Ls48x6)); +assign Ls48x6 = (Ba38x6 | Lgj7z6[74]); +assign Qr48x6 = (Dr18x6 | Lgj7z6[74]); +assign Yo48x6 = (~(Fjb7z6[27] & Lriiw6)); +assign Vwv7v6 = (~(Ss48x6 & Zs48x6)); +assign Zs48x6 = (~(Nxm7x6 & Lxdov6)); +assign Ss48x6 = (Gt48x6 & Nt48x6); +assign Nt48x6 = (~(Ohj7z6[25] & Ut48x6)); +assign Ut48x6 = (~(Bu48x6 & Iu48x6)); +assign Iu48x6 = (Pu48x6 & Jn18x6); +assign Pu48x6 = (~(Wu48x6 & Dv48x6)); +assign Dv48x6 = (Kv48x6 & Inx7x6); +assign Kv48x6 = (~(Lgj7z6[77] & Lo18x6)); +assign Wu48x6 = (So18x6 & Rv48x6); +assign Rv48x6 = (~(Gp18x6 & Lgj7z6[76])); +assign Bu48x6 = (Yv48x6 & Fw48x6); +assign Fw48x6 = (~(Mw48x6 & Tw48x6)); +assign Mw48x6 = (~(Dr18x6 & Ax48x6)); +assign Ax48x6 = (Ba38x6 | Lgj7z6[76]); +assign Yv48x6 = (Iq18x6 | Lgj7z6[76]); +assign Gt48x6 = (~(Fjb7z6[28] & Lriiw6)); +assign Owv7v6 = (~(Hx48x6 & Ox48x6)); +assign Ox48x6 = (~(Nxm7x6 & Exdov6)); +assign Hx48x6 = (Vx48x6 & Cy48x6); +assign Cy48x6 = (~(Ohj7z6[26] & Jy48x6)); +assign Jy48x6 = (~(Qy48x6 & Xy48x6)); +assign Xy48x6 = (Ez48x6 & Jn18x6); +assign Ez48x6 = (~(Lz48x6 & Sz48x6)); +assign Sz48x6 = (Zz48x6 & Zzx7x6); +assign Zz48x6 = (~(Lgj7z6[80] & Lo18x6)); +assign Lz48x6 = (So18x6 & G058x6); +assign G058x6 = (~(Gp18x6 & Lgj7z6[79])); +assign Qy48x6 = (N058x6 & U058x6); +assign U058x6 = (~(B158x6 & R2y7x6)); +assign B158x6 = (~(Iq18x6 & I158x6)); +assign I158x6 = (Ba38x6 | Lgj7z6[80]); +assign N058x6 = (Dr18x6 | Lgj7z6[80]); +assign Vx48x6 = (~(Fjb7z6[29] & Lriiw6)); +assign Hwv7v6 = (~(P158x6 & W158x6)); +assign W158x6 = (~(Nxm7x6 & Vvdov6)); +assign P158x6 = (D258x6 & K258x6); +assign K258x6 = (~(Ohj7z6[27] & R258x6)); +assign R258x6 = (~(Y258x6 & F358x6)); +assign F358x6 = (M358x6 & Jn18x6); +assign M358x6 = (~(T358x6 & A458x6)); +assign A458x6 = (H458x6 & Szx7x6); +assign H458x6 = (~(Lgj7z6[83] & Lo18x6)); +assign T358x6 = (So18x6 & O458x6); +assign O458x6 = (~(Gp18x6 & Lgj7z6[82])); +assign Y258x6 = (V458x6 & C558x6); +assign C558x6 = (~(J558x6 & Q558x6)); +assign J558x6 = (~(Dr18x6 & X558x6)); +assign X558x6 = (Ba38x6 | Lgj7z6[82]); +assign V458x6 = (Iq18x6 | Lgj7z6[82]); +assign D258x6 = (~(Fjb7z6[30] & Lriiw6)); +assign Awv7v6 = (~(E658x6 & L658x6)); +assign L658x6 = (~(Nxm7x6 & Ovdov6)); +assign E658x6 = (S658x6 & Z658x6); +assign Z658x6 = (~(Ohj7z6[28] & G758x6)); +assign G758x6 = (~(N758x6 & U758x6)); +assign U758x6 = (B858x6 & Jn18x6); +assign B858x6 = (~(I858x6 & P858x6)); +assign P858x6 = (W858x6 & Crx7x6); +assign Crx7x6 = (!Lgj7z6[84]); +assign W858x6 = (~(Lgj7z6[86] & Lo18x6)); +assign I858x6 = (So18x6 & D958x6); +assign D958x6 = (~(Gp18x6 & Lgj7z6[85])); +assign N758x6 = (K958x6 & R958x6); +assign R958x6 = (~(Y958x6 & Fa58x6)); +assign Y958x6 = (~(Iq18x6 & Ma58x6)); +assign Ma58x6 = (Ba38x6 | Lgj7z6[86]); +assign K958x6 = (Dr18x6 | Lgj7z6[86]); +assign S658x6 = (~(Fjb7z6[31] & Lriiw6)); +assign Tvv7v6 = (~(Ta58x6 & Ab58x6)); +assign Ab58x6 = (~(Nxm7x6 & Rtdov6)); +assign Ta58x6 = (Hb58x6 & Ob58x6); +assign Ob58x6 = (~(Ohj7z6[29] & Vb58x6)); +assign Vb58x6 = (~(Cc58x6 & Jc58x6)); +assign Jc58x6 = (Qc58x6 & Jn18x6); +assign Qc58x6 = (~(Xc58x6 & Ed58x6)); +assign Ed58x6 = (Ld58x6 & Gq6iw6); +assign Ld58x6 = (~(Lgj7z6[89] & Lo18x6)); +assign Xc58x6 = (So18x6 & Sd58x6); +assign Sd58x6 = (~(Gp18x6 & Lgj7z6[88])); +assign Cc58x6 = (Zd58x6 & Ge58x6); +assign Ge58x6 = (~(Ne58x6 & T16iw6)); +assign Ne58x6 = (~(Dr18x6 & Ue58x6)); +assign Ue58x6 = (Ba38x6 | Lgj7z6[88]); +assign Zd58x6 = (Iq18x6 | Lgj7z6[88]); +assign Hb58x6 = (~(Fjb7z6[32] & Lriiw6)); +assign Mvv7v6 = (~(Bf58x6 & If58x6)); +assign If58x6 = (~(Nxm7x6 & Tudov6)); +assign Bf58x6 = (Pf58x6 & Wf58x6); +assign Wf58x6 = (~(Ohj7z6[30] & Dg58x6)); +assign Dg58x6 = (~(Kg58x6 & Rg58x6)); +assign Rg58x6 = (Yg58x6 & Jn18x6); +assign Yg58x6 = (~(Fh58x6 & Mh58x6)); +assign Mh58x6 = (Th58x6 & Xrx7x6); +assign Th58x6 = (~(Lgj7z6[92] & Lo18x6)); +assign Fh58x6 = (So18x6 & Ai58x6); +assign Ai58x6 = (~(Gp18x6 & Lgj7z6[91])); +assign Kg58x6 = (Hi58x6 & Oi58x6); +assign Oi58x6 = (~(Vi58x6 & Cj58x6)); +assign Vi58x6 = (~(Iq18x6 & Jj58x6)); +assign Jj58x6 = (Ba38x6 | Lgj7z6[92]); +assign Hi58x6 = (Dr18x6 | Lgj7z6[92]); +assign Pf58x6 = (~(Fjb7z6[33] & Lriiw6)); +assign Fvv7v6 = (~(Qj58x6 & Xj58x6)); +assign Xj58x6 = (~(Nxm7x6 & Mudov6)); +assign Qj58x6 = (Ek58x6 & Lk58x6); +assign Lk58x6 = (~(Ohj7z6[31] & Sk58x6)); +assign Sk58x6 = (~(Zk58x6 & Gl58x6)); +assign Gl58x6 = (Nl58x6 & Jn18x6); +assign Nl58x6 = (~(Ul58x6 & Bm58x6)); +assign Bm58x6 = (Im58x6 & Esx7x6); +assign Im58x6 = (~(Lgj7z6[95] & Lo18x6)); +assign Ul58x6 = (So18x6 & Pm58x6); +assign Pm58x6 = (~(Gp18x6 & Lgj7z6[94])); +assign Zk58x6 = (Wm58x6 & Dn58x6); +assign Dn58x6 = (~(Kn58x6 & Rn58x6)); +assign Kn58x6 = (~(Dr18x6 & Yn58x6)); +assign Yn58x6 = (Ba38x6 | Lgj7z6[94]); +assign Wm58x6 = (Iq18x6 | Lgj7z6[94]); +assign Ek58x6 = (~(Fjb7z6[34] & Lriiw6)); +assign Yuv7v6 = (~(Fo58x6 & Mo58x6)); +assign Mo58x6 = (~(Nxm7x6 & Hneov6)); +assign Fo58x6 = (To58x6 & Ap58x6); +assign Ap58x6 = (~(Ohj7z6[32] & Hp58x6)); +assign Hp58x6 = (~(Op58x6 & Vp58x6)); +assign Vp58x6 = (Cq58x6 & Jn18x6); +assign Cq58x6 = (~(Jq58x6 & Qq58x6)); +assign Qq58x6 = (Xq58x6 & Ua8iw6); +assign Xq58x6 = (~(Lgj7z6[98] & Lo18x6)); +assign Jq58x6 = (So18x6 & Er58x6); +assign Er58x6 = (~(Gp18x6 & Lgj7z6[97])); +assign Op58x6 = (Lr58x6 & Sr58x6); +assign Sr58x6 = (~(Zr58x6 & Ju7iw6)); +assign Zr58x6 = (~(Iq18x6 & Gs58x6)); +assign Gs58x6 = (Ba38x6 | Lgj7z6[98]); +assign Lr58x6 = (Dr18x6 | Lgj7z6[98]); +assign To58x6 = (~(Fjb7z6[35] & Lriiw6)); +assign Ruv7v6 = (~(Ns58x6 & Us58x6)); +assign Us58x6 = (~(Nxm7x6 & Sbeov6)); +assign Ns58x6 = (Bt58x6 & It58x6); +assign It58x6 = (~(Ohj7z6[33] & Pt58x6)); +assign Pt58x6 = (~(Wt58x6 & Du58x6)); +assign Du58x6 = (Ku58x6 & Jn18x6); +assign Ku58x6 = (~(Ru58x6 & Yu58x6)); +assign Yu58x6 = (Fv58x6 & J0w7x6); +assign Fv58x6 = (~(Lgj7z6[101] & Lo18x6)); +assign Ru58x6 = (So18x6 & Mv58x6); +assign Mv58x6 = (~(Gp18x6 & Lgj7z6[100])); +assign Wt58x6 = (Tv58x6 & Aw58x6); +assign Aw58x6 = (~(Hw58x6 & Ow58x6)); +assign Hw58x6 = (~(Dr18x6 & Vw58x6)); +assign Vw58x6 = (Ba38x6 | Lgj7z6[100]); +assign Tv58x6 = (Iq18x6 | Lgj7z6[100]); +assign Bt58x6 = (~(Fjb7z6[36] & Lriiw6)); +assign Kuv7v6 = (~(Cx58x6 & Jx58x6)); +assign Jx58x6 = (~(Nxm7x6 & Aneov6)); +assign Cx58x6 = (Qx58x6 & Xx58x6); +assign Xx58x6 = (~(Ohj7z6[34] & Ey58x6)); +assign Ey58x6 = (~(Ly58x6 & Sy58x6)); +assign Sy58x6 = (Zy58x6 & Jn18x6); +assign Zy58x6 = (~(Gz58x6 & Nz58x6)); +assign Nz58x6 = (Uz58x6 & Qew7x6); +assign Uz58x6 = (~(Lgj7z6[104] & Lo18x6)); +assign Gz58x6 = (So18x6 & B068x6); +assign B068x6 = (~(Gp18x6 & Lgj7z6[103])); +assign Ly58x6 = (I068x6 & P068x6); +assign P068x6 = (~(W068x6 & Bhw7x6)); +assign W068x6 = (~(Iq18x6 & D168x6)); +assign D168x6 = (Ba38x6 | Lgj7z6[104]); +assign I068x6 = (Dr18x6 | Lgj7z6[104]); +assign Qx58x6 = (~(Fjb7z6[37] & Lriiw6)); +assign Duv7v6 = (~(K168x6 & R168x6)); +assign R168x6 = (~(Nxm7x6 & Jaeov6)); +assign K168x6 = (Y168x6 & F268x6); +assign F268x6 = (~(Ohj7z6[35] & M268x6)); +assign M268x6 = (~(T268x6 & A368x6)); +assign A368x6 = (H368x6 & Jn18x6); +assign H368x6 = (~(O368x6 & V368x6)); +assign V368x6 = (C468x6 & Jew7x6); +assign C468x6 = (~(Lgj7z6[107] & Lo18x6)); +assign O368x6 = (So18x6 & J468x6); +assign J468x6 = (~(Gp18x6 & Lgj7z6[106])); +assign T268x6 = (Q468x6 & X468x6); +assign X468x6 = (~(E568x6 & L568x6)); +assign E568x6 = (~(Dr18x6 & S568x6)); +assign S568x6 = (Ba38x6 | Lgj7z6[106]); +assign Q468x6 = (Iq18x6 | Lgj7z6[106]); +assign Y168x6 = (~(Fjb7z6[38] & Lriiw6)); +assign Wtv7v6 = (~(Z568x6 & G668x6)); +assign G668x6 = (~(Nxm7x6 & Ujeov6)); +assign Z568x6 = (N668x6 & U668x6); +assign U668x6 = (~(Ohj7z6[36] & B768x6)); +assign B768x6 = (~(I768x6 & P768x6)); +assign P768x6 = (W768x6 & Jn18x6); +assign W768x6 = (~(D868x6 & K868x6)); +assign K868x6 = (R868x6 & Q88iw6); +assign R868x6 = (~(Lgj7z6[110] & Lo18x6)); +assign D868x6 = (So18x6 & Y868x6); +assign Y868x6 = (~(Gp18x6 & Lgj7z6[109])); +assign I768x6 = (F968x6 & M968x6); +assign M968x6 = (~(T968x6 & Ot7iw6)); +assign T968x6 = (~(Iq18x6 & Aa68x6)); +assign Aa68x6 = (Ba38x6 | Lgj7z6[110]); +assign F968x6 = (Dr18x6 | Lgj7z6[110]); +assign N668x6 = (~(Fjb7z6[39] & Lriiw6)); +assign Ptv7v6 = (~(Ha68x6 & Oa68x6)); +assign Oa68x6 = (~(Nxm7x6 & Caeov6)); +assign Ha68x6 = (Va68x6 & Cb68x6); +assign Cb68x6 = (~(Ohj7z6[37] & Jb68x6)); +assign Jb68x6 = (~(Qb68x6 & Xb68x6)); +assign Xb68x6 = (Ec68x6 & Jn18x6); +assign Ec68x6 = (~(Lc68x6 & Sc68x6)); +assign Sc68x6 = (Zc68x6 & Myv7x6); +assign Zc68x6 = (~(Lgj7z6[113] & Lo18x6)); +assign Lc68x6 = (So18x6 & Gd68x6); +assign Gd68x6 = (~(Gp18x6 & Lgj7z6[112])); +assign Qb68x6 = (Nd68x6 & Ud68x6); +assign Ud68x6 = (~(Be68x6 & V6w7x6)); +assign Be68x6 = (~(Dr18x6 & Ie68x6)); +assign Ie68x6 = (Ba38x6 | Lgj7z6[112]); +assign Nd68x6 = (Iq18x6 | Lgj7z6[112]); +assign Va68x6 = (~(Fjb7z6[40] & Lriiw6)); +assign Itv7v6 = (~(Pe68x6 & We68x6)); +assign We68x6 = (~(Nxm7x6 & Njeov6)); +assign Pe68x6 = (Df68x6 & Kf68x6); +assign Kf68x6 = (~(Ohj7z6[38] & Rf68x6)); +assign Rf68x6 = (~(Yf68x6 & Fg68x6)); +assign Fg68x6 = (Mg68x6 & Jn18x6); +assign Mg68x6 = (~(Tg68x6 & Ah68x6)); +assign Ah68x6 = (Hh68x6 & T5w7x6); +assign Hh68x6 = (~(Lgj7z6[116] & Lo18x6)); +assign Tg68x6 = (So18x6 & Oh68x6); +assign Oh68x6 = (~(Gp18x6 & Lgj7z6[115])); +assign Yf68x6 = (Vh68x6 & Ci68x6); +assign Ci68x6 = (~(Ji68x6 & Qi68x6)); +assign Ji68x6 = (~(Iq18x6 & Xi68x6)); +assign Xi68x6 = (Ba38x6 | Lgj7z6[116]); +assign Vh68x6 = (Dr18x6 | Lgj7z6[116]); +assign Df68x6 = (~(Fjb7z6[41] & Lriiw6)); +assign Btv7v6 = (~(Ej68x6 & Lj68x6)); +assign Lj68x6 = (~(Nxm7x6 & F8eov6)); +assign Ej68x6 = (Sj68x6 & Zj68x6); +assign Zj68x6 = (~(Ohj7z6[39] & Gk68x6)); +assign Gk68x6 = (~(Nk68x6 & Uk68x6)); +assign Uk68x6 = (Bl68x6 & Jn18x6); +assign Bl68x6 = (~(Il68x6 & Pl68x6)); +assign Pl68x6 = (Wl68x6 & A6w7x6); +assign Wl68x6 = (~(Lgj7z6[119] & Lo18x6)); +assign Il68x6 = (So18x6 & Dm68x6); +assign Dm68x6 = (~(Gp18x6 & Lgj7z6[118])); +assign Nk68x6 = (Km68x6 & Rm68x6); +assign Rm68x6 = (~(Ym68x6 & O6w7x6)); +assign Ym68x6 = (~(Dr18x6 & Fn68x6)); +assign Fn68x6 = (Ba38x6 | Lgj7z6[118]); +assign Km68x6 = (Iq18x6 | Lgj7z6[118]); +assign Sj68x6 = (~(Fjb7z6[42] & Lriiw6)); +assign Usv7v6 = (~(Mn68x6 & Tn68x6)); +assign Tn68x6 = (~(Nxm7x6 & Grdov6)); +assign Mn68x6 = (Ao68x6 & Ho68x6); +assign Ho68x6 = (~(Ohj7z6[40] & Oo68x6)); +assign Oo68x6 = (~(Vo68x6 & Cp68x6)); +assign Cp68x6 = (Jp68x6 & Jn18x6); +assign Jp68x6 = (~(Qp68x6 & Xp68x6)); +assign Xp68x6 = (Eq68x6 & O78iw6); +assign Eq68x6 = (~(Lgj7z6[122] & Lo18x6)); +assign Qp68x6 = (So18x6 & Lq68x6); +assign Lq68x6 = (~(Gp18x6 & Lgj7z6[121])); +assign Vo68x6 = (Sq68x6 & Zq68x6); +assign Zq68x6 = (~(Gr68x6 & Ts7iw6)); +assign Gr68x6 = (~(Iq18x6 & Nr68x6)); +assign Nr68x6 = (Ba38x6 | Lgj7z6[122]); +assign Sq68x6 = (Dr18x6 | Lgj7z6[122]); +assign Ao68x6 = (~(Fjb7z6[43] & Lriiw6)); +assign Nsv7v6 = (~(Ur68x6 & Bs68x6)); +assign Bs68x6 = (~(Nxm7x6 & Zqdov6)); +assign Ur68x6 = (Is68x6 & Ps68x6); +assign Ps68x6 = (~(Ohj7z6[41] & Ws68x6)); +assign Ws68x6 = (~(Dt68x6 & Kt68x6)); +assign Kt68x6 = (Rt68x6 & Jn18x6); +assign Rt68x6 = (~(Yt68x6 & Fu68x6)); +assign Fu68x6 = (Mu68x6 & Rpw7x6); +assign Mu68x6 = (~(Lgj7z6[125] & Lo18x6)); +assign Yt68x6 = (So18x6 & Tu68x6); +assign Tu68x6 = (~(Gp18x6 & Lgj7z6[124])); +assign Dt68x6 = (Av68x6 & Hv68x6); +assign Hv68x6 = (~(Ov68x6 & Vv68x6)); +assign Ov68x6 = (~(Dr18x6 & Cw68x6)); +assign Cw68x6 = (Ba38x6 | Lgj7z6[124]); +assign Av68x6 = (Iq18x6 | Lgj7z6[124]); +assign Is68x6 = (~(Fjb7z6[44] & Lriiw6)); +assign Gsv7v6 = (~(Jw68x6 & Qw68x6)); +assign Qw68x6 = (~(Nxm7x6 & Eqdov6)); +assign Jw68x6 = (Xw68x6 & Ex68x6); +assign Ex68x6 = (~(Ohj7z6[42] & Lx68x6)); +assign Lx68x6 = (~(Sx68x6 & Zx68x6)); +assign Zx68x6 = (Gy68x6 & Jn18x6); +assign Gy68x6 = (~(Ny68x6 & Uy68x6)); +assign Uy68x6 = (Bz68x6 & Y3x7x6); +assign Bz68x6 = (~(Lgj7z6[128] & Lo18x6)); +assign Ny68x6 = (So18x6 & Iz68x6); +assign Iz68x6 = (~(Gp18x6 & Lgj7z6[127])); +assign Sx68x6 = (Pz68x6 & Wz68x6); +assign Wz68x6 = (~(D078x6 & J6x7x6)); +assign D078x6 = (~(Iq18x6 & K078x6)); +assign K078x6 = (Ba38x6 | Lgj7z6[128]); +assign Pz68x6 = (Dr18x6 | Lgj7z6[128]); +assign Xw68x6 = (~(Fjb7z6[45] & Lriiw6)); +assign Zrv7v6 = (~(R078x6 & Y078x6)); +assign Y078x6 = (~(Nxm7x6 & Xpdov6)); +assign R078x6 = (F178x6 & M178x6); +assign M178x6 = (~(Ohj7z6[43] & T178x6)); +assign T178x6 = (~(A278x6 & H278x6)); +assign H278x6 = (O278x6 & Jn18x6); +assign O278x6 = (~(V278x6 & C378x6)); +assign C378x6 = (J378x6 & R3x7x6); +assign J378x6 = (~(Lgj7z6[131] & Lo18x6)); +assign V278x6 = (So18x6 & Q378x6); +assign Q378x6 = (~(Gp18x6 & Lgj7z6[130])); +assign A278x6 = (X378x6 & E478x6); +assign E478x6 = (~(L478x6 & S478x6)); +assign L478x6 = (~(Dr18x6 & Z478x6)); +assign Z478x6 = (Ba38x6 | Lgj7z6[130]); +assign X378x6 = (Iq18x6 | Lgj7z6[130]); +assign F178x6 = (~(Fjb7z6[46] & Lriiw6)); +assign Srv7v6 = (~(G578x6 & N578x6)); +assign N578x6 = (~(Nxm7x6 & Oodov6)); +assign G578x6 = (U578x6 & B678x6); +assign B678x6 = (~(Ohj7z6[44] & I678x6)); +assign I678x6 = (~(P678x6 & W678x6)); +assign W678x6 = (D778x6 & Jn18x6); +assign D778x6 = (~(K778x6 & R778x6)); +assign R778x6 = (Y778x6 & M68iw6); +assign M68iw6 = (!Lgj7z6[132]); +assign Y778x6 = (~(Lgj7z6[134] & Lo18x6)); +assign K778x6 = (So18x6 & F878x6); +assign F878x6 = (~(Gp18x6 & Lgj7z6[133])); +assign P678x6 = (M878x6 & T878x6); +assign T878x6 = (~(A978x6 & Yr7iw6)); +assign A978x6 = (~(Iq18x6 & H978x6)); +assign H978x6 = (Ba38x6 | Lgj7z6[134]); +assign M878x6 = (Dr18x6 | Lgj7z6[134]); +assign U578x6 = (~(Fjb7z6[47] & Lriiw6)); +assign Lrv7v6 = (~(O978x6 & V978x6)); +assign V978x6 = (~(Nxm7x6 & Hodov6)); +assign O978x6 = (Ca78x6 & Ja78x6); +assign Ja78x6 = (~(Ohj7z6[45] & Qa78x6)); +assign Qa78x6 = (~(Xa78x6 & Eb78x6)); +assign Eb78x6 = (Lb78x6 & Jn18x6); +assign Lb78x6 = (~(Sb78x6 & Zb78x6)); +assign Zb78x6 = (Gc78x6 & Ltw7x6); +assign Gc78x6 = (~(Lgj7z6[137] & Lo18x6)); +assign Sb78x6 = (So18x6 & Nc78x6); +assign Nc78x6 = (~(Gp18x6 & Lgj7z6[136])); +assign Xa78x6 = (Uc78x6 & Bd78x6); +assign Bd78x6 = (~(Id78x6 & Pvw7x6)); +assign Id78x6 = (~(Dr18x6 & Pd78x6)); +assign Pd78x6 = (Ba38x6 | Lgj7z6[136]); +assign Uc78x6 = (Iq18x6 | Lgj7z6[136]); +assign Ca78x6 = (~(Fjb7z6[48] & Lriiw6)); +assign Erv7v6 = (~(Wd78x6 & De78x6)); +assign De78x6 = (~(Nxm7x6 & Kmdov6)); +assign Wd78x6 = (Ke78x6 & Re78x6); +assign Re78x6 = (~(Ohj7z6[46] & Ye78x6)); +assign Ye78x6 = (~(Ff78x6 & Mf78x6)); +assign Mf78x6 = (Tf78x6 & Jn18x6); +assign Tf78x6 = (~(Ag78x6 & Hg78x6)); +assign Hg78x6 = (Og78x6 & Guw7x6); +assign Og78x6 = (~(Lgj7z6[140] & Lo18x6)); +assign Ag78x6 = (So18x6 & Vg78x6); +assign Vg78x6 = (~(Gp18x6 & Lgj7z6[139])); +assign Ff78x6 = (Ch78x6 & Jh78x6); +assign Jh78x6 = (~(Qh78x6 & Dww7x6)); +assign Qh78x6 = (~(Iq18x6 & Xh78x6)); +assign Xh78x6 = (Ba38x6 | Lgj7z6[140]); +assign Ch78x6 = (Dr18x6 | Lgj7z6[140]); +assign Ke78x6 = (~(Fjb7z6[49] & Lriiw6)); +assign Xqv7v6 = (~(Ei78x6 & Li78x6)); +assign Li78x6 = (~(Nxm7x6 & Aueov6)); +assign Ei78x6 = (Si78x6 & Zi78x6); +assign Zi78x6 = (~(Ohj7z6[47] & Gj78x6)); +assign Gj78x6 = (~(Nj78x6 & Uj78x6)); +assign Uj78x6 = (Bk78x6 & Jn18x6); +assign Bk78x6 = (~(Ik78x6 & Pk78x6)); +assign Pk78x6 = (Wk78x6 & Nuw7x6); +assign Wk78x6 = (~(Lgj7z6[143] & Lo18x6)); +assign Ik78x6 = (So18x6 & Dl78x6); +assign Dl78x6 = (~(Gp18x6 & Lgj7z6[142])); +assign Nj78x6 = (Kl78x6 & Rl78x6); +assign Rl78x6 = (~(Yl78x6 & Uuw7x6)); +assign Yl78x6 = (~(Dr18x6 & Fm78x6)); +assign Fm78x6 = (Ba38x6 | Lgj7z6[142]); +assign Kl78x6 = (Iq18x6 | Lgj7z6[142]); +assign Si78x6 = (~(Fjb7z6[50] & Lriiw6)); +assign Qqv7v6 = (~(Mm78x6 & Tm78x6)); +assign Tm78x6 = (~(Nxm7x6 & Sieov6)); +assign Mm78x6 = (An78x6 & Hn78x6); +assign Hn78x6 = (~(Ohj7z6[48] & On78x6)); +assign On78x6 = (~(Vn78x6 & Co78x6)); +assign Co78x6 = (Jo78x6 & Jn18x6); +assign Jo78x6 = (~(Qo78x6 & Xo78x6)); +assign Xo78x6 = (Ep78x6 & Xvt7x6); +assign Ep78x6 = (~(Lgj7z6[146] & Lo18x6)); +assign Qo78x6 = (So18x6 & Lp78x6); +assign Lp78x6 = (~(Gp18x6 & Lgj7z6[145])); +assign Vn78x6 = (Sp78x6 & Zp78x6); +assign Zp78x6 = (~(Gq78x6 & Wcu7x6)); +assign Gq78x6 = (~(Iq18x6 & Nq78x6)); +assign Nq78x6 = (Ba38x6 | Lgj7z6[146]); +assign Sp78x6 = (Dr18x6 | Lgj7z6[146]); +assign An78x6 = (~(Fjb7z6[51] & Lriiw6)); +assign Jqv7v6 = (~(Uq78x6 & Br78x6)); +assign Br78x6 = (~(Nxm7x6 & H9eov6)); +assign Uq78x6 = (Ir78x6 & Pr78x6); +assign Pr78x6 = (~(Ohj7z6[49] & Wr78x6)); +assign Wr78x6 = (~(Ds78x6 & Ks78x6)); +assign Ks78x6 = (Rs78x6 & Jn18x6); +assign Rs78x6 = (~(Ys78x6 & Ft78x6)); +assign Ft78x6 = (Mt78x6 & Qvt7x6); +assign Mt78x6 = (~(Lgj7z6[149] & Lo18x6)); +assign Ys78x6 = (So18x6 & Tt78x6); +assign Tt78x6 = (~(Gp18x6 & Lgj7z6[148])); +assign Ds78x6 = (Au78x6 & Hu78x6); +assign Hu78x6 = (~(Ou78x6 & Vu78x6)); +assign Ou78x6 = (~(Dr18x6 & Cv78x6)); +assign Cv78x6 = (Ba38x6 | Lgj7z6[148]); +assign Au78x6 = (Iq18x6 | Lgj7z6[148]); +assign Ir78x6 = (~(Fjb7z6[52] & Lriiw6)); +assign Cqv7v6 = (~(Jv78x6 & Qv78x6)); +assign Qv78x6 = (~(Nxm7x6 & Lieov6)); +assign Jv78x6 = (Xv78x6 & Ew78x6); +assign Ew78x6 = (~(Ohj7z6[50] & Lw78x6)); +assign Lw78x6 = (~(Sw78x6 & Zw78x6)); +assign Zw78x6 = (Gx78x6 & Jn18x6); +assign Gx78x6 = (~(Nx78x6 & Ux78x6)); +assign Ux78x6 = (By78x6 & J9u7x6); +assign By78x6 = (~(Lgj7z6[152] & Lo18x6)); +assign Nx78x6 = (So18x6 & Iy78x6); +assign Iy78x6 = (~(Gp18x6 & Lgj7z6[151])); +assign Sw78x6 = (Py78x6 & Wy78x6); +assign Wy78x6 = (~(Dz78x6 & Gbu7x6)); +assign Dz78x6 = (~(Iq18x6 & Kz78x6)); +assign Kz78x6 = (Ba38x6 | Lgj7z6[152]); +assign Py78x6 = (Dr18x6 | Lgj7z6[152]); +assign Xv78x6 = (~(Fjb7z6[53] & Lriiw6)); +assign Vpv7v6 = (~(Rz78x6 & Yz78x6)); +assign Yz78x6 = (~(Nxm7x6 & A9eov6)); +assign Rz78x6 = (F088x6 & M088x6); +assign M088x6 = (~(Ohj7z6[51] & T088x6)); +assign T088x6 = (~(A188x6 & H188x6)); +assign H188x6 = (O188x6 & Jn18x6); +assign O188x6 = (~(V188x6 & C288x6)); +assign C288x6 = (J288x6 & C9u7x6); +assign J288x6 = (~(Lgj7z6[155] & Lo18x6)); +assign V188x6 = (So18x6 & Q288x6); +assign Q288x6 = (~(Gp18x6 & Lgj7z6[154])); +assign A188x6 = (X288x6 & E388x6); +assign E388x6 = (~(L388x6 & S388x6)); +assign L388x6 = (~(Dr18x6 & Z388x6)); +assign Z388x6 = (Ba38x6 | Lgj7z6[154]); +assign X288x6 = (Iq18x6 | Lgj7z6[154]); +assign F088x6 = (~(Fjb7z6[54] & Lriiw6)); +assign Opv7v6 = (~(G488x6 & N488x6)); +assign N488x6 = (~(Nxm7x6 & Jidov6)); +assign G488x6 = (U488x6 & B588x6); +assign B588x6 = (~(Ohj7z6[52] & I588x6)); +assign I588x6 = (~(P588x6 & W588x6)); +assign W588x6 = (D688x6 & Jn18x6); +assign D688x6 = (~(K688x6 & R688x6)); +assign R688x6 = (Y688x6 & F0u7x6); +assign Y688x6 = (~(Lgj7z6[158] & Lo18x6)); +assign K688x6 = (So18x6 & F788x6); +assign F788x6 = (~(Gp18x6 & Lgj7z6[157])); +assign P588x6 = (M788x6 & T788x6); +assign T788x6 = (~(A888x6 & H888x6)); +assign A888x6 = (~(Iq18x6 & O888x6)); +assign O888x6 = (Ba38x6 | Lgj7z6[158]); +assign M788x6 = (Dr18x6 | Lgj7z6[158]); +assign U488x6 = (~(Fjb7z6[55] & Lriiw6)); +assign Hpv7v6 = (~(V888x6 & C988x6)); +assign C988x6 = (~(Nxm7x6 & Ljdov6)); +assign V888x6 = (J988x6 & Q988x6); +assign Q988x6 = (~(Ohj7z6[53] & X988x6)); +assign X988x6 = (~(Ea88x6 & La88x6)); +assign La88x6 = (Sa88x6 & Jn18x6); +assign Sa88x6 = (~(Za88x6 & Gb88x6)); +assign Gb88x6 = (Nb88x6 & M0u7x6); +assign Nb88x6 = (~(Lgj7z6[161] & Lo18x6)); +assign Za88x6 = (So18x6 & Ub88x6); +assign Ub88x6 = (~(Gp18x6 & Lgj7z6[160])); +assign Ea88x6 = (Bc88x6 & Ic88x6); +assign Ic88x6 = (~(Pc88x6 & V1u7x6)); +assign Pc88x6 = (~(Dr18x6 & Wc88x6)); +assign Wc88x6 = (Ba38x6 | Lgj7z6[160]); +assign Bc88x6 = (Iq18x6 | Lgj7z6[160]); +assign J988x6 = (~(Fjb7z6[56] & Lriiw6)); +assign Apv7v6 = (~(Dd88x6 & Kd88x6)); +assign Kd88x6 = (~(Nxm7x6 & Ejdov6)); +assign Dd88x6 = (Rd88x6 & Yd88x6); +assign Yd88x6 = (~(Ohj7z6[54] & Fe88x6)); +assign Fe88x6 = (~(Me88x6 & Te88x6)); +assign Te88x6 = (Af88x6 & Jn18x6); +assign Af88x6 = (~(Hf88x6 & Of88x6)); +assign Of88x6 = (Vf88x6 & Cg88x6); +assign Vf88x6 = (~(Lgj7z6[164] & Lo18x6)); +assign Hf88x6 = (So18x6 & Jg88x6); +assign Jg88x6 = (~(Gp18x6 & Lgj7z6[163])); +assign Me88x6 = (Qg88x6 & Xg88x6); +assign Xg88x6 = (~(Eh88x6 & C2u7x6)); +assign Eh88x6 = (~(Iq18x6 & Lh88x6)); +assign Lh88x6 = (Ba38x6 | Lgj7z6[164]); +assign Qg88x6 = (Dr18x6 | Lgj7z6[164]); +assign Rd88x6 = (~(Fjb7z6[57] & Lriiw6)); +assign Tov7v6 = (~(Sh88x6 & Zh88x6)); +assign Zh88x6 = (~(Nxm7x6 & Ahdov6)); +assign Sh88x6 = (Gi88x6 & Ni88x6); +assign Ni88x6 = (~(Ohj7z6[55] & Ui88x6)); +assign Ui88x6 = (~(Bj88x6 & Ij88x6)); +assign Ij88x6 = (Pj88x6 & Jn18x6); +assign Pj88x6 = (~(Wj88x6 & Dk88x6)); +assign Dk88x6 = (Kk88x6 & Rk88x6); +assign Kk88x6 = (~(Lgj7z6[167] & Lo18x6)); +assign Wj88x6 = (So18x6 & Yk88x6); +assign Yk88x6 = (~(Gp18x6 & Lgj7z6[166])); +assign Bj88x6 = (Fl88x6 & Ml88x6); +assign Ml88x6 = (~(Tl88x6 & Am88x6)); +assign Tl88x6 = (~(Dr18x6 & Hm88x6)); +assign Hm88x6 = (Ba38x6 | Lgj7z6[166]); +assign Fl88x6 = (Iq18x6 | Lgj7z6[166]); +assign Gi88x6 = (~(Fjb7z6[58] & Lriiw6)); +assign Mov7v6 = (~(Om88x6 & Vm88x6)); +assign Vm88x6 = (~(Nxm7x6 & Mndov6)); +assign Om88x6 = (Cn88x6 & Jn88x6); +assign Jn88x6 = (~(Ohj7z6[56] & Qn88x6)); +assign Qn88x6 = (~(Xn88x6 & Eo88x6)); +assign Eo88x6 = (Lo88x6 & Jn18x6); +assign Lo88x6 = (~(So88x6 & Zo88x6)); +assign Zo88x6 = (Gp88x6 & Cnu7x6); +assign Gp88x6 = (~(Lgj7z6[170] & Lo18x6)); +assign So88x6 = (So18x6 & Np88x6); +assign Np88x6 = (~(Gp18x6 & Lgj7z6[169])); +assign Xn88x6 = (Up88x6 & Bq88x6); +assign Bq88x6 = (~(Iq88x6 & Pq88x6)); +assign Iq88x6 = (~(Iq18x6 & Wq88x6)); +assign Wq88x6 = (Ba38x6 | Lgj7z6[170]); +assign Up88x6 = (Dr18x6 | Lgj7z6[170]); +assign Cn88x6 = (~(Fjb7z6[59] & Lriiw6)); +assign Fov7v6 = (~(Dr88x6 & Kr88x6)); +assign Kr88x6 = (~(Nxm7x6 & Fndov6)); +assign Dr88x6 = (Rr88x6 & Yr88x6); +assign Yr88x6 = (~(Ohj7z6[57] & Fs88x6)); +assign Fs88x6 = (~(Ms88x6 & Ts88x6)); +assign Ts88x6 = (At88x6 & Jn18x6); +assign At88x6 = (~(Ht88x6 & Ot88x6)); +assign Ot88x6 = (Vt88x6 & Vmu7x6); +assign Vt88x6 = (~(Lgj7z6[173] & Lo18x6)); +assign Ht88x6 = (So18x6 & Cu88x6); +assign Cu88x6 = (~(Gp18x6 & Lgj7z6[172])); +assign Ms88x6 = (Ju88x6 & Qu88x6); +assign Qu88x6 = (~(Xu88x6 & J1v7x6)); +assign Xu88x6 = (~(Dr18x6 & Ev88x6)); +assign Ev88x6 = (Ba38x6 | Lgj7z6[172]); +assign Ju88x6 = (Iq18x6 | Lgj7z6[172]); +assign Rr88x6 = (~(Fjb7z6[60] & Lriiw6)); +assign Ynv7v6 = (~(Lv88x6 & Sv88x6)); +assign Sv88x6 = (~(Nxm7x6 & Nkdov6)); +assign Lv88x6 = (Zv88x6 & Gw88x6); +assign Gw88x6 = (~(Ohj7z6[58] & Nw88x6)); +assign Nw88x6 = (~(Uw88x6 & Bx88x6)); +assign Bx88x6 = (Ix88x6 & Jn18x6); +assign Ix88x6 = (~(Px88x6 & Wx88x6)); +assign Wx88x6 = (Dy88x6 & A0v7x6); +assign Dy88x6 = (~(Lgj7z6[176] & Lo18x6)); +assign Px88x6 = (So18x6 & Ky88x6); +assign Ky88x6 = (~(Gp18x6 & Lgj7z6[175])); +assign Uw88x6 = (Ry88x6 & Yy88x6); +assign Yy88x6 = (~(Fz88x6 & Mz88x6)); +assign Fz88x6 = (~(Iq18x6 & Tz88x6)); +assign Tz88x6 = (Ba38x6 | Lgj7z6[176]); +assign Ry88x6 = (Dr18x6 | Lgj7z6[176]); +assign Zv88x6 = (~(Fjb7z6[61] & Lriiw6)); +assign Rnv7v6 = (~(A098x6 & H098x6)); +assign H098x6 = (~(Nxm7x6 & Gkdov6)); +assign A098x6 = (O098x6 & V098x6); +assign V098x6 = (~(Ohj7z6[59] & C198x6)); +assign C198x6 = (~(J198x6 & Q198x6)); +assign Q198x6 = (X198x6 & Jn18x6); +assign X198x6 = (~(E298x6 & L298x6)); +assign L298x6 = (S298x6 & H0v7x6); +assign S298x6 = (~(Lgj7z6[179] & Lo18x6)); +assign E298x6 = (So18x6 & Z298x6); +assign Z298x6 = (~(Gp18x6 & Lgj7z6[178])); +assign J198x6 = (G398x6 & N398x6); +assign N398x6 = (~(U398x6 & O0v7x6)); +assign U398x6 = (~(Dr18x6 & B498x6)); +assign B498x6 = (Ba38x6 | Lgj7z6[178]); +assign G398x6 = (Iq18x6 | Lgj7z6[178]); +assign O098x6 = (~(Fjb7z6[62] & Lriiw6)); +assign Knv7v6 = (~(I498x6 & P498x6)); +assign P498x6 = (~(Nxm7x6 & Tgdov6)); +assign I498x6 = (W498x6 & D598x6); +assign D598x6 = (~(Ohj7z6[60] & K598x6)); +assign K598x6 = (~(R598x6 & Y598x6)); +assign Y598x6 = (F698x6 & Jn18x6); +assign F698x6 = (~(M698x6 & T698x6)); +assign T698x6 = (A798x6 & H798x6); +assign A798x6 = (~(Lgj7z6[182] & Lo18x6)); +assign M698x6 = (So18x6 & O798x6); +assign O798x6 = (~(Gp18x6 & Lgj7z6[181])); +assign R598x6 = (V798x6 & C898x6); +assign C898x6 = (~(J898x6 & Q898x6)); +assign J898x6 = (~(Iq18x6 & X898x6)); +assign X898x6 = (Ba38x6 | Lgj7z6[182]); +assign V798x6 = (Dr18x6 | Lgj7z6[182]); +assign W498x6 = (~(Fjb7z6[63] & Lriiw6)); +assign Dnv7v6 = (~(E998x6 & L998x6)); +assign L998x6 = (~(Nxm7x6 & Wedov6)); +assign E998x6 = (S998x6 & Z998x6); +assign Z998x6 = (~(Ohj7z6[61] & Ga98x6)); +assign Ga98x6 = (~(Na98x6 & Ua98x6)); +assign Ua98x6 = (Bb98x6 & Jn18x6); +assign Bb98x6 = (~(Ib98x6 & Pb98x6)); +assign Pb98x6 = (Wb98x6 & Dc98x6); +assign Wb98x6 = (~(Lgj7z6[185] & Lo18x6)); +assign Ib98x6 = (So18x6 & Kc98x6); +assign Kc98x6 = (~(Gp18x6 & Lgj7z6[184])); +assign So18x6 = (Rc98x6 & Yc98x6); +assign Na98x6 = (Fd98x6 & Md98x6); +assign Md98x6 = (~(Td98x6 & Ae98x6)); +assign Td98x6 = (~(Dr18x6 & He98x6)); +assign He98x6 = (Ba38x6 | Lgj7z6[184]); +assign Fd98x6 = (Iq18x6 | Lgj7z6[184]); +assign S998x6 = (~(Fjb7z6[64] & Lriiw6)); +assign Wmv7v6 = (~(Oe98x6 & Ve98x6)); +assign Ve98x6 = (~(Nxm7x6 & Rfdov6)); +assign Oe98x6 = (Cf98x6 & Jf98x6); +assign Jf98x6 = (~(Ohj7z6[62] & Qf98x6)); +assign Qf98x6 = (~(Xf98x6 & Eg98x6)); +assign Eg98x6 = (Lg98x6 & Jn18x6); +assign Lg98x6 = (~(Sg98x6 & Zg98x6)); +assign Sg98x6 = (~(Iq18x6 & Gh98x6)); +assign Gh98x6 = (Ba38x6 | Lgj7z6[188]); +assign Xf98x6 = (Nh98x6 & Uh98x6); +assign Uh98x6 = (Dr18x6 | Lgj7z6[188]); +assign Nh98x6 = (~(Bi98x6 & Ii98x6)); +assign Ii98x6 = (Pi98x6 & Yru7x6); +assign Pi98x6 = (~(Wi98x6 & Lo18x6)); +assign Wi98x6 = (~(Rc98x6 & Dj98x6)); +assign Bi98x6 = (Yc98x6 & Kj98x6); +assign Kj98x6 = (~(Gp18x6 & Lgj7z6[187])); +assign Cf98x6 = (~(Fjb7z6[65] & Lriiw6)); +assign Pmv7v6 = (~(Rj98x6 & Yj98x6)); +assign Yj98x6 = (~(Nxm7x6 & Sweov6)); +assign Nxm7x6 = (Fk98x6 & Sriiw6); +assign Fk98x6 = (Zriiw6 & L2cet6); +assign Rj98x6 = (Mk98x6 & Tk98x6); +assign Tk98x6 = (~(Ohj7z6[63] & Al98x6)); +assign Al98x6 = (~(Hl98x6 & Ol98x6)); +assign Ol98x6 = (Vl98x6 & Jn18x6); +assign Jn18x6 = (~(Cm98x6 & Yc98x6)); +assign Cm98x6 = (Jm98x6 & Qm98x6); +assign Qm98x6 = (~(Za2nv6 & Pym7x6)); +assign Vl98x6 = (~(Xm98x6 & En98x6)); +assign Xm98x6 = (~(Dr18x6 & Ln98x6)); +assign Ln98x6 = (Ba38x6 | Lgj7z6[190]); +assign Ba38x6 = (!Wq18x6); +assign Dr18x6 = (Sn98x6 | Zn98x6); +assign Hl98x6 = (Go98x6 & No98x6); +assign No98x6 = (Iq18x6 | Lgj7z6[190]); +assign Iq18x6 = (~(Wq18x6 & Uo98x6)); +assign Wq18x6 = (~(Zn98x6 | Bp98x6)); +assign Zn98x6 = (!Yc98x6); +assign Go98x6 = (~(Ip98x6 & Pp98x6)); +assign Pp98x6 = (Wp98x6 & Rru7x6); +assign Wp98x6 = (~(Dq98x6 & Lo18x6)); +assign Lo18x6 = (~(Rc98x6 & Uo98x6)); +assign Uo98x6 = (~(H1m8v6 & Sn98x6)); +assign Sn98x6 = (~(Kq98x6 & H1m8v6)); +assign Kq98x6 = (Pym7x6 ? CURRPRI[7] : Ppb7z6[7]); +assign Dq98x6 = (~(Rc98x6 & En98x6)); +assign Rc98x6 = (Rq98x6 & Rwl8v6); +assign Rq98x6 = (Pym7x6 ? CURRPRI[5] : Ppb7z6[5]); +assign Pym7x6 = (!Dk18x6); +assign Ip98x6 = (Yc98x6 & Yq98x6); +assign Yq98x6 = (~(Gp18x6 & Lgj7z6[190])); +assign Gp18x6 = (Bp98x6 & Zyl8v6); +assign Bp98x6 = (Dk18x6 ? Fr98x6 : Bfr7x6); +assign Dk18x6 = (Sugov6 & Ea2nv6); +assign Fr98x6 = (~(Zyl8v6 & Ppb7z6[6])); +assign Yc98x6 = (Mr98x6 & Sriiw6); +assign Sriiw6 = (!Gsiiw6); +assign Mr98x6 = (Kk18x6 & Tr98x6); +assign Tr98x6 = (~(As98x6 & Zriiw6)); +assign As98x6 = (~(Hs98x6 | L2cet6)); +assign Kk18x6 = (~(Inadt6 & Offov6)); +assign Offov6 = (~(Os98x6 & Sugov6)); +assign Os98x6 = (Inadt6 & Vs98x6); +assign Mk98x6 = (~(Fjb7z6[66] & Lriiw6)); +assign Lriiw6 = (Gsiiw6 & Usiiw6); +assign Usiiw6 = (!M6bdt6); +assign Gsiiw6 = (~(Ct98x6 & Dzeov6)); +assign Dzeov6 = (Hcget6 & U3cet6); +assign Ct98x6 = (Jd47v6 & Jt98x6); +assign Jt98x6 = (!Byeov6); +assign Byeov6 = (~(Qt98x6 & Pyeov6)); +assign Qt98x6 = (~(Lunov6 & Sunov6)); +assign Lunov6 = (Xt98x6 & Eu98x6); +assign Imv7v6 = (~(Lu98x6 & Su98x6)); +assign Su98x6 = (~(L8wnv6 & Itb7z6[26])); +assign Lu98x6 = (Zu98x6 & Gv98x6); +assign Gv98x6 = (~(G9wnv6 & Nv98x6)); +assign Nv98x6 = (~(Uv98x6 & Bw98x6)); +assign Bw98x6 = (Iw98x6 & Pw98x6); +assign Pw98x6 = (Wawnv6 | Ww98x6); +assign Iw98x6 = (~(Dtm7z6[3] & Dx98x6)); +assign Uv98x6 = (Kx98x6 & Rx98x6); +assign Rx98x6 = (~(Dtm7z6[0] & HRDATAD[26])); +assign Kx98x6 = (~(Dtm7z6[1] & HRDATAS[26])); +assign Zu98x6 = (~(Fcwnv6 & Voyhw6)); +assign Voyhw6 = (JTAGNSW ? Aixmz6[26] : Ulxmz6[26]); +assign Bmv7v6 = (K94iw6 ? Mi5ft6 : Yx98x6); +assign Ulv7v6 = (~(Fy98x6 & My98x6)); +assign My98x6 = (Ty98x6 & Az98x6); +assign Ty98x6 = (~(X9fov6 | Xle8v6)); +assign Xle8v6 = (Hz98x6 & Oz98x6); +assign Oz98x6 = (V0fiw6 & Vz98x6); +assign Hz98x6 = (Hyp7z6[3] & HTMDHBURST[0]); +assign Fy98x6 = (C0a8x6 & U0r7x6); +assign C0a8x6 = (~(Eo2ft6 & J0a8x6)); +assign J0a8x6 = (~(Na9ov6 & Q0a8x6)); +assign Nlv7v6 = (~(X0a8x6 & E1a8x6)); +assign E1a8x6 = (L1a8x6 & S1a8x6); +assign L1a8x6 = (~(Eafov6 | Yfw7v6)); +assign Yfw7v6 = (Z1a8x6 & G2a8x6); +assign G2a8x6 = (~(N2a8x6 | Hmp7z6[2])); +assign Z1a8x6 = (Hmp7z6[3] & HTMDHBURST[0]); +assign X0a8x6 = (U2a8x6 & B3a8x6); +assign B3a8x6 = (~(Fk2ft6 & I3a8x6)); +assign I3a8x6 = (~(Na9ov6 & P3a8x6)); +assign Na9ov6 = (Aj4ft6 & M297z6); +assign U2a8x6 = (~(M55ft6 & Bb9ov6)); +assign Glv7v6 = (~(W3a8x6 & D4a8x6)); +assign D4a8x6 = (~(K4a8x6 & Xy5ft6)); +assign Zkv7v6 = (~(R4a8x6 & Y4a8x6)); +assign Y4a8x6 = (~(F5a8x6 & Q8o7x6)); +assign F5a8x6 = (~(Az98x6 & M5a8x6)); +assign M5a8x6 = (~(T5a8x6 & S1a8x6)); +assign R4a8x6 = (~(Jhr7z6[0] & K4a8x6)); +assign Skv7v6 = (T5a8x6 ? A6a8x6 : Jhr7z6[1]); +assign A6a8x6 = (Q8o7x6 & Az98x6); +assign Lkv7v6 = (~(H6a8x6 & O6a8x6)); +assign O6a8x6 = (~(V6a8x6 & U42nv6)); +assign H6a8x6 = (Pdq7z6[0] ? J7a8x6 : C7a8x6); +assign Ekv7v6 = (~(Q7a8x6 & X7a8x6)); +assign X7a8x6 = (~(V6a8x6 & B52nv6)); +assign Q7a8x6 = (Pdq7z6[1] ? L8a8x6 : E8a8x6); +assign E8a8x6 = (~(S8a8x6 & Pdq7z6[0])); +assign Xjv7v6 = (~(Z8a8x6 & G9a8x6)); +assign G9a8x6 = (~(V6a8x6 & I52nv6)); +assign Z8a8x6 = (Pdq7z6[2] ? U9a8x6 : N9a8x6); +assign U9a8x6 = (L8a8x6 & Baa8x6); +assign Baa8x6 = (C7a8x6 | Pdq7z6[1]); +assign L8a8x6 = (J7a8x6 & Iaa8x6); +assign Iaa8x6 = (C7a8x6 | Pdq7z6[0]); +assign N9a8x6 = (~(Paa8x6 & S8a8x6)); +assign Qjv7v6 = (~(Waa8x6 & Dba8x6)); +assign Dba8x6 = (~(V6a8x6 & P52nv6)); +assign Waa8x6 = (Pdq7z6[3] ? Rba8x6 : Kba8x6); +assign Kba8x6 = (~(Yba8x6 & S8a8x6)); +assign Jjv7v6 = (~(Fca8x6 & Mca8x6)); +assign Mca8x6 = (~(V6a8x6 & W52nv6)); +assign Fca8x6 = (Pdq7z6[4] ? Ada8x6 : Tca8x6); +assign Ada8x6 = (Rba8x6 & Hda8x6); +assign Hda8x6 = (C7a8x6 | Pdq7z6[3]); +assign Rba8x6 = (J7a8x6 & Oda8x6); +assign Oda8x6 = (C7a8x6 | Yba8x6); +assign Tca8x6 = (~(Vda8x6 & Yba8x6)); +assign Vda8x6 = (S8a8x6 & Pdq7z6[3]); +assign Cjv7v6 = (~(Cea8x6 & Jea8x6)); +assign Jea8x6 = (~(V6a8x6 & D62nv6)); +assign Cea8x6 = (Pdq7z6[5] ? Xea8x6 : Qea8x6); +assign Qea8x6 = (~(Efa8x6 & S8a8x6)); +assign Viv7v6 = (~(Lfa8x6 & Sfa8x6)); +assign Sfa8x6 = (~(V6a8x6 & K62nv6)); +assign Lfa8x6 = (Pdq7z6[6] ? Gga8x6 : Zfa8x6); +assign Oiv7v6 = (~(Nga8x6 & Uga8x6)); +assign Uga8x6 = (~(V6a8x6 & R62nv6)); +assign Nga8x6 = (Pdq7z6[7] ? Iha8x6 : Bha8x6); +assign Iha8x6 = (Gga8x6 & Pha8x6); +assign Pha8x6 = (~(S8a8x6 & Wha8x6)); +assign Gga8x6 = (Xea8x6 & Dia8x6); +assign Dia8x6 = (C7a8x6 | Pdq7z6[5]); +assign Xea8x6 = (J7a8x6 & Kia8x6); +assign Kia8x6 = (C7a8x6 | Efa8x6); +assign J7a8x6 = (!Ria8x6); +assign Bha8x6 = (Zfa8x6 | Wha8x6); +assign Wha8x6 = (!Pdq7z6[6]); +assign Zfa8x6 = (~(Yia8x6 & Efa8x6)); +assign Yia8x6 = (S8a8x6 & Pdq7z6[5]); +assign S8a8x6 = (!C7a8x6); +assign C7a8x6 = (Fja8x6 | Ria8x6); +assign Ria8x6 = (~(Fja8x6 | Mja8x6)); +assign Fja8x6 = (V6a8x6 | Tja8x6); +assign Tja8x6 = (Aka8x6 & Etgiw6); +assign Aka8x6 = (~(Hka8x6 | Kxfiw6)); +assign V6a8x6 = (Jsgiw6 & Oka8x6); +assign Hiv7v6 = (~(Vka8x6 & Cla8x6)); +assign Cla8x6 = (~(Jla8x6 & U42nv6)); +assign Vka8x6 = (Cjq7z6[0] ? Xla8x6 : Qla8x6); +assign Aiv7v6 = (~(Ema8x6 & Lma8x6)); +assign Lma8x6 = (~(Jla8x6 & B52nv6)); +assign Ema8x6 = (Cjq7z6[1] ? Zma8x6 : Sma8x6); +assign Sma8x6 = (~(Gna8x6 & Cjq7z6[0])); +assign Thv7v6 = (~(Nna8x6 & Una8x6)); +assign Una8x6 = (~(Jla8x6 & I52nv6)); +assign Nna8x6 = (Cjq7z6[2] ? Ioa8x6 : Boa8x6); +assign Ioa8x6 = (Zma8x6 & Poa8x6); +assign Poa8x6 = (Qla8x6 | Cjq7z6[1]); +assign Zma8x6 = (Xla8x6 & Woa8x6); +assign Woa8x6 = (Qla8x6 | Cjq7z6[0]); +assign Boa8x6 = (~(Dpa8x6 & Gna8x6)); +assign Mhv7v6 = (~(Kpa8x6 & Rpa8x6)); +assign Rpa8x6 = (~(Jla8x6 & P52nv6)); +assign Kpa8x6 = (Cjq7z6[3] ? Fqa8x6 : Ypa8x6); +assign Ypa8x6 = (~(Mqa8x6 & Gna8x6)); +assign Fhv7v6 = (~(Tqa8x6 & Ara8x6)); +assign Ara8x6 = (~(Jla8x6 & W52nv6)); +assign Tqa8x6 = (Cjq7z6[4] ? Ora8x6 : Hra8x6); +assign Ora8x6 = (Fqa8x6 & Vra8x6); +assign Vra8x6 = (Qla8x6 | Cjq7z6[3]); +assign Fqa8x6 = (Xla8x6 & Csa8x6); +assign Csa8x6 = (Qla8x6 | Mqa8x6); +assign Hra8x6 = (~(Jsa8x6 & Mqa8x6)); +assign Jsa8x6 = (Gna8x6 & Cjq7z6[3]); +assign Ygv7v6 = (~(Qsa8x6 & Xsa8x6)); +assign Xsa8x6 = (~(Jla8x6 & D62nv6)); +assign Qsa8x6 = (Cjq7z6[5] ? Lta8x6 : Eta8x6); +assign Eta8x6 = (~(Sta8x6 & Gna8x6)); +assign Rgv7v6 = (~(Zta8x6 & Gua8x6)); +assign Gua8x6 = (~(Jla8x6 & K62nv6)); +assign Zta8x6 = (Cjq7z6[6] ? Uua8x6 : Nua8x6); +assign Kgv7v6 = (~(Bva8x6 & Iva8x6)); +assign Iva8x6 = (~(Jla8x6 & R62nv6)); +assign Bva8x6 = (Cjq7z6[7] ? Wva8x6 : Pva8x6); +assign Wva8x6 = (Uua8x6 & Dwa8x6); +assign Dwa8x6 = (~(Gna8x6 & Kwa8x6)); +assign Uua8x6 = (Lta8x6 & Rwa8x6); +assign Rwa8x6 = (Qla8x6 | Cjq7z6[5]); +assign Lta8x6 = (Xla8x6 & Ywa8x6); +assign Ywa8x6 = (Qla8x6 | Sta8x6); +assign Xla8x6 = (!Fxa8x6); +assign Pva8x6 = (Nua8x6 | Kwa8x6); +assign Kwa8x6 = (!Cjq7z6[6]); +assign Nua8x6 = (~(Mxa8x6 & Sta8x6)); +assign Mxa8x6 = (Gna8x6 & Cjq7z6[5]); +assign Gna8x6 = (!Qla8x6); +assign Qla8x6 = (Txa8x6 | Fxa8x6); +assign Fxa8x6 = (~(Txa8x6 | Aya8x6)); +assign Txa8x6 = (Jla8x6 | Hya8x6); +assign Hya8x6 = (Oya8x6 & Etgiw6); +assign Oya8x6 = (~(Vya8x6 | Oyhov6)); +assign Jla8x6 = (Jsgiw6 & Cza8x6); +assign Dgv7v6 = (~(Jza8x6 & Qza8x6)); +assign Qza8x6 = (~(Gqr7z6[1] & Inhiw6)); +assign Jza8x6 = (Xza8x6 & E0b8x6); +assign E0b8x6 = (~(L0b8x6 & Aw77z6)); +assign Xza8x6 = (~(Rzr7z6[1] & S0b8x6)); +assign Wfv7v6 = (~(Z0b8x6 & G1b8x6)); +assign G1b8x6 = (~(Gqr7z6[2] & Inhiw6)); +assign Z0b8x6 = (N1b8x6 & U1b8x6); +assign U1b8x6 = (~(L0b8x6 & Sv77z6)); +assign N1b8x6 = (~(Rzr7z6[2] & S0b8x6)); +assign Pfv7v6 = (~(B2b8x6 & I2b8x6)); +assign I2b8x6 = (~(Gqr7z6[3] & Inhiw6)); +assign B2b8x6 = (P2b8x6 & W2b8x6); +assign W2b8x6 = (~(L0b8x6 & Kv77z6)); +assign P2b8x6 = (~(Rzr7z6[3] & S0b8x6)); +assign Ifv7v6 = (~(D3b8x6 & K3b8x6)); +assign K3b8x6 = (~(Gqr7z6[4] & Inhiw6)); +assign D3b8x6 = (R3b8x6 & Y3b8x6); +assign Y3b8x6 = (~(L0b8x6 & Cv77z6)); +assign R3b8x6 = (~(Rzr7z6[4] & S0b8x6)); +assign Bfv7v6 = (~(F4b8x6 & M4b8x6)); +assign M4b8x6 = (~(Gqr7z6[5] & Inhiw6)); +assign F4b8x6 = (T4b8x6 & A5b8x6); +assign A5b8x6 = (~(L0b8x6 & Uu77z6)); +assign T4b8x6 = (~(Rzr7z6[5] & S0b8x6)); +assign Uev7v6 = (~(H5b8x6 & O5b8x6)); +assign O5b8x6 = (~(Gqr7z6[6] & Inhiw6)); +assign H5b8x6 = (V5b8x6 & C6b8x6); +assign C6b8x6 = (~(L0b8x6 & Mu77z6)); +assign V5b8x6 = (~(Rzr7z6[6] & S0b8x6)); +assign Nev7v6 = (~(J6b8x6 & Q6b8x6)); +assign Q6b8x6 = (~(Gqr7z6[7] & Inhiw6)); +assign J6b8x6 = (X6b8x6 & E7b8x6); +assign E7b8x6 = (~(L0b8x6 & Eu77z6)); +assign X6b8x6 = (~(Rzr7z6[7] & S0b8x6)); +assign Gev7v6 = (~(L7b8x6 & S7b8x6)); +assign S7b8x6 = (~(Gqr7z6[8] & Inhiw6)); +assign L7b8x6 = (Z7b8x6 & G8b8x6); +assign G8b8x6 = (~(L0b8x6 & Wt77z6)); +assign Z7b8x6 = (~(Rzr7z6[8] & S0b8x6)); +assign Zdv7v6 = (~(N8b8x6 & U8b8x6)); +assign U8b8x6 = (~(Gqr7z6[9] & Inhiw6)); +assign N8b8x6 = (B9b8x6 & I9b8x6); +assign I9b8x6 = (~(L0b8x6 & Ot77z6)); +assign B9b8x6 = (~(Rzr7z6[9] & S0b8x6)); +assign Sdv7v6 = (~(P9b8x6 & W9b8x6)); +assign W9b8x6 = (~(Gqr7z6[10] & Inhiw6)); +assign P9b8x6 = (Dab8x6 & Kab8x6); +assign Kab8x6 = (~(L0b8x6 & Gt77z6)); +assign Dab8x6 = (~(Rzr7z6[10] & S0b8x6)); +assign Ldv7v6 = (~(Rab8x6 & Yab8x6)); +assign Yab8x6 = (~(Gqr7z6[11] & Inhiw6)); +assign Rab8x6 = (Fbb8x6 & Mbb8x6); +assign Mbb8x6 = (~(L0b8x6 & Ys77z6)); +assign Fbb8x6 = (~(Rzr7z6[11] & S0b8x6)); +assign Edv7v6 = (~(Tbb8x6 & Acb8x6)); +assign Acb8x6 = (~(Gqr7z6[12] & Inhiw6)); +assign Tbb8x6 = (Hcb8x6 & Ocb8x6); +assign Ocb8x6 = (~(L0b8x6 & Qs77z6)); +assign Hcb8x6 = (~(Rzr7z6[12] & S0b8x6)); +assign Xcv7v6 = (~(Vcb8x6 & Cdb8x6)); +assign Cdb8x6 = (~(Gqr7z6[13] & Inhiw6)); +assign Vcb8x6 = (Jdb8x6 & Qdb8x6); +assign Qdb8x6 = (~(L0b8x6 & Is77z6)); +assign Jdb8x6 = (~(Rzr7z6[13] & S0b8x6)); +assign Qcv7v6 = (~(Xdb8x6 & Eeb8x6)); +assign Eeb8x6 = (~(Gqr7z6[14] & Inhiw6)); +assign Xdb8x6 = (Leb8x6 & Seb8x6); +assign Seb8x6 = (~(L0b8x6 & As77z6)); +assign Leb8x6 = (~(Rzr7z6[14] & S0b8x6)); +assign Jcv7v6 = (~(Zeb8x6 & Gfb8x6)); +assign Gfb8x6 = (~(Gqr7z6[15] & Inhiw6)); +assign Zeb8x6 = (Nfb8x6 & Ufb8x6); +assign Ufb8x6 = (~(L0b8x6 & Sr77z6)); +assign Nfb8x6 = (~(Rzr7z6[15] & S0b8x6)); +assign Ccv7v6 = (~(Bgb8x6 & Igb8x6)); +assign Igb8x6 = (~(Gqr7z6[16] & Inhiw6)); +assign Bgb8x6 = (Pgb8x6 & Wgb8x6); +assign Wgb8x6 = (~(L0b8x6 & Kr77z6)); +assign Pgb8x6 = (~(Rzr7z6[16] & S0b8x6)); +assign Vbv7v6 = (~(Dhb8x6 & Khb8x6)); +assign Khb8x6 = (~(Gqr7z6[17] & Inhiw6)); +assign Dhb8x6 = (Rhb8x6 & Yhb8x6); +assign Yhb8x6 = (~(L0b8x6 & Cr77z6)); +assign Rhb8x6 = (~(Rzr7z6[17] & S0b8x6)); +assign Obv7v6 = (~(Fib8x6 & Mib8x6)); +assign Mib8x6 = (~(Gqr7z6[18] & Inhiw6)); +assign Fib8x6 = (Tib8x6 & Ajb8x6); +assign Ajb8x6 = (~(L0b8x6 & Uq77z6)); +assign Tib8x6 = (~(Rzr7z6[18] & S0b8x6)); +assign Hbv7v6 = (~(Hjb8x6 & Ojb8x6)); +assign Ojb8x6 = (~(Gqr7z6[19] & Inhiw6)); +assign Hjb8x6 = (Vjb8x6 & Ckb8x6); +assign Ckb8x6 = (~(L0b8x6 & Mq77z6)); +assign Vjb8x6 = (~(Rzr7z6[19] & S0b8x6)); +assign Abv7v6 = (~(Jkb8x6 & Qkb8x6)); +assign Qkb8x6 = (~(Gqr7z6[20] & Inhiw6)); +assign Jkb8x6 = (Xkb8x6 & Elb8x6); +assign Elb8x6 = (~(L0b8x6 & Eq77z6)); +assign Xkb8x6 = (~(Rzr7z6[20] & S0b8x6)); +assign Tav7v6 = (~(Llb8x6 & Slb8x6)); +assign Slb8x6 = (~(Gqr7z6[21] & Inhiw6)); +assign Llb8x6 = (Zlb8x6 & Gmb8x6); +assign Gmb8x6 = (~(L0b8x6 & Wp77z6)); +assign Zlb8x6 = (~(Rzr7z6[21] & S0b8x6)); +assign Mav7v6 = (~(Nmb8x6 & Umb8x6)); +assign Umb8x6 = (~(Gqr7z6[22] & Inhiw6)); +assign Nmb8x6 = (Bnb8x6 & Inb8x6); +assign Inb8x6 = (~(L0b8x6 & Op77z6)); +assign Bnb8x6 = (~(Rzr7z6[22] & S0b8x6)); +assign Fav7v6 = (~(Pnb8x6 & Wnb8x6)); +assign Wnb8x6 = (~(Gqr7z6[23] & Inhiw6)); +assign Pnb8x6 = (Dob8x6 & Kob8x6); +assign Kob8x6 = (~(L0b8x6 & Gp77z6)); +assign Dob8x6 = (~(Rzr7z6[23] & S0b8x6)); +assign Y9v7v6 = (~(Rob8x6 & Yob8x6)); +assign Yob8x6 = (~(Gqr7z6[24] & Inhiw6)); +assign Rob8x6 = (Fpb8x6 & Mpb8x6); +assign Mpb8x6 = (~(L0b8x6 & Yo77z6)); +assign Fpb8x6 = (~(Rzr7z6[24] & S0b8x6)); +assign R9v7v6 = (~(Tpb8x6 & Aqb8x6)); +assign Aqb8x6 = (~(Gqr7z6[25] & Inhiw6)); +assign Tpb8x6 = (Hqb8x6 & Oqb8x6); +assign Oqb8x6 = (~(L0b8x6 & Qo77z6)); +assign Hqb8x6 = (~(Rzr7z6[25] & S0b8x6)); +assign K9v7v6 = (~(Vqb8x6 & Crb8x6)); +assign Crb8x6 = (~(Gqr7z6[26] & Inhiw6)); +assign Vqb8x6 = (Jrb8x6 & Qrb8x6); +assign Qrb8x6 = (~(L0b8x6 & Io77z6)); +assign Jrb8x6 = (~(Rzr7z6[26] & S0b8x6)); +assign D9v7v6 = (~(Xrb8x6 & Esb8x6)); +assign Esb8x6 = (~(Gqr7z6[27] & Inhiw6)); +assign Xrb8x6 = (Lsb8x6 & Ssb8x6); +assign Ssb8x6 = (~(L0b8x6 & Ao77z6)); +assign Lsb8x6 = (~(Rzr7z6[27] & S0b8x6)); +assign W8v7v6 = (~(Zsb8x6 & Gtb8x6)); +assign Gtb8x6 = (~(Gqr7z6[28] & Inhiw6)); +assign Zsb8x6 = (Ntb8x6 & Utb8x6); +assign Utb8x6 = (~(L0b8x6 & Sn77z6)); +assign Ntb8x6 = (~(Rzr7z6[28] & S0b8x6)); +assign P8v7v6 = (~(Bub8x6 & Iub8x6)); +assign Iub8x6 = (~(Gqr7z6[29] & Inhiw6)); +assign Bub8x6 = (Pub8x6 & Wub8x6); +assign Wub8x6 = (~(L0b8x6 & Kn77z6)); +assign Pub8x6 = (~(Rzr7z6[29] & S0b8x6)); +assign I8v7v6 = (~(Dvb8x6 & Kvb8x6)); +assign Kvb8x6 = (~(Gqr7z6[30] & Inhiw6)); +assign Dvb8x6 = (Rvb8x6 & Yvb8x6); +assign Yvb8x6 = (~(L0b8x6 & Cn77z6)); +assign Rvb8x6 = (~(Rzr7z6[30] & S0b8x6)); +assign B8v7v6 = (~(Fwb8x6 & Mwb8x6)); +assign Mwb8x6 = (~(Gqr7z6[31] & Inhiw6)); +assign Fwb8x6 = (Twb8x6 & Axb8x6); +assign Axb8x6 = (~(L0b8x6 & Um77z6)); +assign L0b8x6 = (~(Inhiw6 | Wfo7v6)); +assign Twb8x6 = (~(Rzr7z6[31] & S0b8x6)); +assign S0b8x6 = (~(Inhiw6 | Wdtnv6)); +assign U7v7v6 = (~(Hxb8x6 & Oxb8x6)); +assign Oxb8x6 = (~(Z3gnv6 & Vxb8x6)); +assign Z3gnv6 = (HTMDHBURST[0] & Cmm7z6[0]); +assign Hxb8x6 = (~(Cor7z6[0] & K4a8x6)); +assign N7v7v6 = (~(Cyb8x6 & Jyb8x6)); +assign Jyb8x6 = (Qyb8x6 & Xyb8x6); +assign Xyb8x6 = (~(Gxfnv6 & Vxb8x6)); +assign Gxfnv6 = (HTMDHBURST[0] & Cmm7z6[1]); +assign Qyb8x6 = (~(Ezb8x6 & Aw77z6)); +assign Cyb8x6 = (Lzb8x6 & Szb8x6); +assign Szb8x6 = (~(Zzb8x6 & Rzr7z6[1])); +assign Lzb8x6 = (~(Cor7z6[1] & K4a8x6)); +assign G7v7v6 = (~(G0c8x6 & N0c8x6)); +assign N0c8x6 = (U0c8x6 & B1c8x6); +assign B1c8x6 = (~(Qvfnv6 & Vxb8x6)); +assign Qvfnv6 = (~(I1c8x6 | Kygnv6)); +assign U0c8x6 = (~(Ezb8x6 & Sv77z6)); +assign G0c8x6 = (P1c8x6 & W1c8x6); +assign W1c8x6 = (~(Zzb8x6 & Rzr7z6[2])); +assign P1c8x6 = (~(Cor7z6[2] & K4a8x6)); +assign Z6v7v6 = (~(D2c8x6 & K2c8x6)); +assign K2c8x6 = (R2c8x6 & Y2c8x6); +assign Y2c8x6 = (~(Jvfnv6 & Vxb8x6)); +assign Jvfnv6 = (~(F3c8x6 | Kygnv6)); +assign F3c8x6 = (!Cmm7z6[3]); +assign R2c8x6 = (~(Ezb8x6 & Kv77z6)); +assign D2c8x6 = (M3c8x6 & T3c8x6); +assign T3c8x6 = (~(Zzb8x6 & Rzr7z6[3])); +assign M3c8x6 = (~(Cor7z6[3] & K4a8x6)); +assign S6v7v6 = (~(A4c8x6 & H4c8x6)); +assign H4c8x6 = (O4c8x6 & V4c8x6); +assign V4c8x6 = (~(Hufnv6 & Vxb8x6)); +assign Hufnv6 = (~(C5c8x6 | Kygnv6)); +assign C5c8x6 = (!Cmm7z6[4]); +assign O4c8x6 = (~(Ezb8x6 & Cv77z6)); +assign A4c8x6 = (J5c8x6 & Q5c8x6); +assign Q5c8x6 = (~(Zzb8x6 & Rzr7z6[4])); +assign J5c8x6 = (~(Cor7z6[4] & K4a8x6)); +assign L6v7v6 = (~(X5c8x6 & E6c8x6)); +assign E6c8x6 = (L6c8x6 & S6c8x6); +assign S6c8x6 = (~(Ttfnv6 & Vxb8x6)); +assign Ttfnv6 = (~(Z6c8x6 | Kygnv6)); +assign Z6c8x6 = (!Cmm7z6[5]); +assign L6c8x6 = (~(Ezb8x6 & Uu77z6)); +assign X5c8x6 = (G7c8x6 & N7c8x6); +assign N7c8x6 = (~(Zzb8x6 & Rzr7z6[5])); +assign G7c8x6 = (~(Cor7z6[5] & K4a8x6)); +assign E6v7v6 = (~(U7c8x6 & B8c8x6)); +assign B8c8x6 = (I8c8x6 & P8c8x6); +assign P8c8x6 = (~(Ysfnv6 & Vxb8x6)); +assign Ysfnv6 = (~(Kygnv6 | W8c8x6)); +assign W8c8x6 = (!Cmm7z6[6]); +assign I8c8x6 = (~(Ezb8x6 & Mu77z6)); +assign U7c8x6 = (D9c8x6 & K9c8x6); +assign K9c8x6 = (~(Zzb8x6 & Rzr7z6[6])); +assign D9c8x6 = (~(Cor7z6[6] & K4a8x6)); +assign X5v7v6 = (~(R9c8x6 & Y9c8x6)); +assign Y9c8x6 = (Fac8x6 & Mac8x6); +assign Mac8x6 = (~(Rsfnv6 & Vxb8x6)); +assign Rsfnv6 = (~(Kygnv6 | Tac8x6)); +assign Tac8x6 = (!Cmm7z6[7]); +assign Fac8x6 = (~(Ezb8x6 & Eu77z6)); +assign R9c8x6 = (Abc8x6 & Hbc8x6); +assign Hbc8x6 = (~(Zzb8x6 & Rzr7z6[7])); +assign Abc8x6 = (~(K4a8x6 & Cor7z6[7])); +assign Q5v7v6 = (~(Obc8x6 & Vbc8x6)); +assign Vbc8x6 = (Ccc8x6 & Jcc8x6); +assign Jcc8x6 = (~(Ksfnv6 & Vxb8x6)); +assign Ksfnv6 = (~(Kygnv6 | Qcc8x6)); +assign Qcc8x6 = (!Cmm7z6[8]); +assign Ccc8x6 = (~(Ezb8x6 & Wt77z6)); +assign Obc8x6 = (Xcc8x6 & Edc8x6); +assign Edc8x6 = (~(Zzb8x6 & Rzr7z6[8])); +assign Xcc8x6 = (~(Cor7z6[8] & K4a8x6)); +assign J5v7v6 = (~(Ldc8x6 & Sdc8x6)); +assign Sdc8x6 = (Zdc8x6 & Gec8x6); +assign Gec8x6 = (~(Dsfnv6 & Vxb8x6)); +assign Dsfnv6 = (~(Kygnv6 | Nec8x6)); +assign Nec8x6 = (!Cmm7z6[9]); +assign Zdc8x6 = (~(Ezb8x6 & Ot77z6)); +assign Ldc8x6 = (Uec8x6 & Bfc8x6); +assign Bfc8x6 = (~(Zzb8x6 & Rzr7z6[9])); +assign Uec8x6 = (~(Cor7z6[9] & K4a8x6)); +assign C5v7v6 = (~(Ifc8x6 & Pfc8x6)); +assign Pfc8x6 = (Wfc8x6 & Dgc8x6); +assign Dgc8x6 = (~(Wyfnv6 & Vxb8x6)); +assign Wyfnv6 = (~(Kygnv6 | Kgc8x6)); +assign Kgc8x6 = (!Cmm7z6[10]); +assign Wfc8x6 = (~(Ezb8x6 & Gt77z6)); +assign Ifc8x6 = (Rgc8x6 & Ygc8x6); +assign Ygc8x6 = (~(Zzb8x6 & Rzr7z6[10])); +assign Rgc8x6 = (~(Cor7z6[10] & K4a8x6)); +assign V4v7v6 = (~(Fhc8x6 & Mhc8x6)); +assign Mhc8x6 = (Thc8x6 & Aic8x6); +assign Aic8x6 = (~(Pyfnv6 & Vxb8x6)); +assign Pyfnv6 = (~(Kygnv6 | Hic8x6)); +assign Hic8x6 = (!Cmm7z6[11]); +assign Thc8x6 = (~(Ezb8x6 & Ys77z6)); +assign Fhc8x6 = (Oic8x6 & Vic8x6); +assign Vic8x6 = (~(Zzb8x6 & Rzr7z6[11])); +assign Oic8x6 = (~(Cor7z6[11] & K4a8x6)); +assign O4v7v6 = (~(Cjc8x6 & Jjc8x6)); +assign Jjc8x6 = (Qjc8x6 & Xjc8x6); +assign Xjc8x6 = (~(Byfnv6 & Vxb8x6)); +assign Byfnv6 = (~(Kygnv6 | Ekc8x6)); +assign Ekc8x6 = (!Cmm7z6[12]); +assign Qjc8x6 = (~(Ezb8x6 & Qs77z6)); +assign Cjc8x6 = (Lkc8x6 & Skc8x6); +assign Skc8x6 = (~(Zzb8x6 & Rzr7z6[12])); +assign Lkc8x6 = (~(Cor7z6[12] & K4a8x6)); +assign H4v7v6 = (~(Zkc8x6 & Glc8x6)); +assign Glc8x6 = (Nlc8x6 & Ulc8x6); +assign Ulc8x6 = (~(Uxfnv6 & Vxb8x6)); +assign Uxfnv6 = (~(Kygnv6 | Bmc8x6)); +assign Bmc8x6 = (!Cmm7z6[13]); +assign Nlc8x6 = (~(Ezb8x6 & Is77z6)); +assign Zkc8x6 = (Imc8x6 & Pmc8x6); +assign Pmc8x6 = (~(Zzb8x6 & Rzr7z6[13])); +assign Imc8x6 = (~(Cor7z6[13] & K4a8x6)); +assign A4v7v6 = (~(Wmc8x6 & Dnc8x6)); +assign Dnc8x6 = (Knc8x6 & Rnc8x6); +assign Rnc8x6 = (~(Nxfnv6 & Vxb8x6)); +assign Nxfnv6 = (~(Kygnv6 | Ync8x6)); +assign Ync8x6 = (!Cmm7z6[14]); +assign Knc8x6 = (~(Ezb8x6 & As77z6)); +assign Wmc8x6 = (Foc8x6 & Moc8x6); +assign Moc8x6 = (~(Zzb8x6 & Rzr7z6[14])); +assign Foc8x6 = (~(Cor7z6[14] & K4a8x6)); +assign T3v7v6 = (~(Toc8x6 & Apc8x6)); +assign Apc8x6 = (Hpc8x6 & Opc8x6); +assign Opc8x6 = (~(Ezb8x6 & Sr77z6)); +assign Hpc8x6 = (~(Zzb8x6 & Rzr7z6[15])); +assign Toc8x6 = (Vpc8x6 & Cqc8x6); +assign Cqc8x6 = (~(Tp5ft6 & Vxb8x6)); +assign Tp5ft6 = (~(Kygnv6 | Jqc8x6)); +assign Jqc8x6 = (!Cmm7z6[15]); +assign Vpc8x6 = (~(K4a8x6 & Cor7z6[15])); +assign M3v7v6 = (~(Qqc8x6 & Xqc8x6)); +assign Xqc8x6 = (~(Cor7z6[16] & K4a8x6)); +assign Qqc8x6 = (Erc8x6 & Lrc8x6); +assign Lrc8x6 = (~(Ezb8x6 & Kr77z6)); +assign Erc8x6 = (~(Zzb8x6 & Rzr7z6[16])); +assign F3v7v6 = (~(Src8x6 & Zrc8x6)); +assign Zrc8x6 = (~(Cor7z6[17] & K4a8x6)); +assign Src8x6 = (Gsc8x6 & Nsc8x6); +assign Nsc8x6 = (~(Ezb8x6 & Cr77z6)); +assign Gsc8x6 = (~(Zzb8x6 & Rzr7z6[17])); +assign Y2v7v6 = (~(Usc8x6 & Btc8x6)); +assign Btc8x6 = (~(Cor7z6[18] & K4a8x6)); +assign Usc8x6 = (Itc8x6 & Ptc8x6); +assign Ptc8x6 = (~(Ezb8x6 & Uq77z6)); +assign Itc8x6 = (~(Zzb8x6 & Rzr7z6[18])); +assign R2v7v6 = (~(Wtc8x6 & Duc8x6)); +assign Duc8x6 = (~(Cor7z6[19] & K4a8x6)); +assign Wtc8x6 = (Kuc8x6 & Ruc8x6); +assign Ruc8x6 = (~(Ezb8x6 & Mq77z6)); +assign Kuc8x6 = (~(Zzb8x6 & Rzr7z6[19])); +assign K2v7v6 = (~(Yuc8x6 & Fvc8x6)); +assign Fvc8x6 = (~(Cor7z6[20] & K4a8x6)); +assign Yuc8x6 = (Mvc8x6 & Tvc8x6); +assign Tvc8x6 = (~(Ezb8x6 & Eq77z6)); +assign Mvc8x6 = (~(Zzb8x6 & Rzr7z6[20])); +assign D2v7v6 = (~(Awc8x6 & Hwc8x6)); +assign Hwc8x6 = (~(Cor7z6[21] & K4a8x6)); +assign Awc8x6 = (Owc8x6 & Vwc8x6); +assign Vwc8x6 = (~(Ezb8x6 & Wp77z6)); +assign Owc8x6 = (~(Zzb8x6 & Rzr7z6[21])); +assign W1v7v6 = (~(Cxc8x6 & Jxc8x6)); +assign Jxc8x6 = (~(Cor7z6[22] & K4a8x6)); +assign Cxc8x6 = (Qxc8x6 & Xxc8x6); +assign Xxc8x6 = (~(Ezb8x6 & Op77z6)); +assign Qxc8x6 = (~(Zzb8x6 & Rzr7z6[22])); +assign P1v7v6 = (~(Eyc8x6 & Lyc8x6)); +assign Lyc8x6 = (~(K4a8x6 & Cor7z6[23])); +assign Eyc8x6 = (Syc8x6 & Zyc8x6); +assign Zyc8x6 = (~(Ezb8x6 & Gp77z6)); +assign Syc8x6 = (~(Zzb8x6 & Rzr7z6[23])); +assign I1v7v6 = (~(Gzc8x6 & Nzc8x6)); +assign Nzc8x6 = (~(Cor7z6[24] & K4a8x6)); +assign Gzc8x6 = (Uzc8x6 & B0d8x6); +assign B0d8x6 = (~(Ezb8x6 & Yo77z6)); +assign Uzc8x6 = (~(Zzb8x6 & Rzr7z6[24])); +assign B1v7v6 = (~(I0d8x6 & P0d8x6)); +assign P0d8x6 = (~(Cor7z6[25] & K4a8x6)); +assign I0d8x6 = (W0d8x6 & D1d8x6); +assign D1d8x6 = (~(Ezb8x6 & Qo77z6)); +assign W0d8x6 = (~(Zzb8x6 & Rzr7z6[25])); +assign U0v7v6 = (~(K1d8x6 & R1d8x6)); +assign R1d8x6 = (~(Cor7z6[26] & K4a8x6)); +assign K1d8x6 = (Y1d8x6 & F2d8x6); +assign F2d8x6 = (~(Ezb8x6 & Io77z6)); +assign Y1d8x6 = (~(Zzb8x6 & Rzr7z6[26])); +assign N0v7v6 = (~(M2d8x6 & T2d8x6)); +assign T2d8x6 = (~(Cor7z6[27] & K4a8x6)); +assign M2d8x6 = (A3d8x6 & H3d8x6); +assign H3d8x6 = (~(Ezb8x6 & Ao77z6)); +assign A3d8x6 = (~(Zzb8x6 & Rzr7z6[27])); +assign G0v7v6 = (~(O3d8x6 & V3d8x6)); +assign V3d8x6 = (~(Cor7z6[28] & K4a8x6)); +assign O3d8x6 = (C4d8x6 & J4d8x6); +assign J4d8x6 = (~(Ezb8x6 & Sn77z6)); +assign C4d8x6 = (~(Zzb8x6 & Rzr7z6[28])); +assign Zzu7v6 = (~(Q4d8x6 & X4d8x6)); +assign X4d8x6 = (~(Cor7z6[29] & K4a8x6)); +assign Q4d8x6 = (E5d8x6 & L5d8x6); +assign L5d8x6 = (~(Ezb8x6 & Kn77z6)); +assign E5d8x6 = (~(Zzb8x6 & Rzr7z6[29])); +assign Szu7v6 = (~(S5d8x6 & Z5d8x6)); +assign Z5d8x6 = (~(Cor7z6[30] & K4a8x6)); +assign S5d8x6 = (G6d8x6 & N6d8x6); +assign N6d8x6 = (~(Ezb8x6 & Cn77z6)); +assign G6d8x6 = (~(Zzb8x6 & Rzr7z6[30])); +assign Lzu7v6 = (~(U6d8x6 & B7d8x6)); +assign B7d8x6 = (~(K4a8x6 & Cor7z6[31])); +assign U6d8x6 = (I7d8x6 & P7d8x6); +assign P7d8x6 = (~(Ezb8x6 & Um77z6)); +assign Ezb8x6 = (W7d8x6 & W3a8x6); +assign W7d8x6 = (T5a8x6 & Wdtnv6); +assign I7d8x6 = (~(Zzb8x6 & Rzr7z6[31])); +assign Zzb8x6 = (D8d8x6 & W3a8x6); +assign W3a8x6 = (!Vxb8x6); +assign Vxb8x6 = (Q8o7x6 ? K8d8x6 : M12ft6); +assign K8d8x6 = (Az98x6 ? R8d8x6 : Gs2ft6); +assign R8d8x6 = (S1a8x6 ? Y8d8x6 : Dm2ft6); +assign Y8d8x6 = (~(E99ov6 | A0fiw6)); +assign A0fiw6 = (!Ei2ft6); +assign D8d8x6 = (Wfo7v6 & T5a8x6); +assign Ezu7v6 = (!F9d8x6); +assign F9d8x6 = (E1b7x6 ? M9d8x6 : I1wiw6); +assign E1b7x6 = (!Jgliw6); +assign M9d8x6 = (~(Qmbet6 & Wfo7v6)); +assign Xyu7v6 = (T9d8x6 & Jgliw6); +assign T9d8x6 = (Had8x6 ? Aad8x6 : A0vnv6); +assign Aad8x6 = (~(Oad8x6 & Vad8x6)); +assign Oad8x6 = (Cbd8x6 & Qv0ov6); +assign Cbd8x6 = (~(Jbd8x6 & Kvbov6)); +assign A0vnv6 = (!O197z6); +assign Qyu7v6 = (Had8x6 ? Qbd8x6 : Qobet6); +assign Had8x6 = (Xbd8x6 | Ecd8x6); +assign Ecd8x6 = (Phhov6 ? Tlmov6 : Lcd8x6); +assign Lcd8x6 = (Rihov6 & Wdtnv6); +assign Xbd8x6 = (T7mov6 | Teliw6); +assign T7mov6 = (Tlmov6 & Ierov6); +assign Qbd8x6 = (Scd8x6 & Jgliw6); +assign Scd8x6 = (~(Vad8x6 & Rihov6)); +assign Vad8x6 = (~(Phhov6 | Teliw6)); +assign Jyu7v6 = (Ie77v6 & Zcd8x6); +assign Zcd8x6 = (!Wy67v6); +assign Cyu7v6 = (!Gdd8x6); +assign Gdd8x6 = (At67v6 ? Ndd8x6 : Jjrnv6); +assign Ndd8x6 = (Udd8x6 ? Orhov6 : Y097z6); +assign Udd8x6 = (Bed8x6 & Ied8x6); +assign Vxu7v6 = (Ped8x6 & Y9rnv6); +assign Ped8x6 = (Bj77v6 | Nernv6); +assign Oxu7v6 = (~(Wed8x6 & Dfd8x6)); +assign Dfd8x6 = (~(Jdymz6[1] & Kfd8x6)); +assign Kfd8x6 = (Rfd8x6 | L19iw6); +assign Wed8x6 = (~(Yfd8x6 & B52nv6)); +assign Hxu7v6 = (~(Fgd8x6 & Mgd8x6)); +assign Mgd8x6 = (~(Jdymz6[0] & Tgd8x6)); +assign Tgd8x6 = (Rfd8x6 | Orhov6); +assign Fgd8x6 = (~(Yfd8x6 & U42nv6)); +assign Axu7v6 = (~(Ahd8x6 & Hhd8x6)); +assign Hhd8x6 = (~(Jdymz6[2] & Ohd8x6)); +assign Ohd8x6 = (Rfd8x6 | Fhrnv6); +assign Fhrnv6 = (!I52nv6); +assign Ahd8x6 = (~(Yfd8x6 & I52nv6)); +assign Twu7v6 = (~(Vhd8x6 & Cid8x6)); +assign Cid8x6 = (~(Jdymz6[3] & Jid8x6)); +assign Jid8x6 = (Rfd8x6 | Pohov6); +assign Vhd8x6 = (~(Yfd8x6 & P52nv6)); +assign Yfd8x6 = (~(Qid8x6 | Rfd8x6)); +assign Rfd8x6 = (~(Xid8x6 & Ejd8x6)); +assign Ejd8x6 = (Ljd8x6 | Sjd8x6); +assign Mwu7v6 = (Mi77z6 & Jgliw6); +assign Fwu7v6 = (Pyeov6 ? Zriiw6 : Zjd8x6); +assign Pyeov6 = (~(Gkd8x6 & Nkd8x6)); +assign Nkd8x6 = (Ukd8x6 & Bld8x6); +assign Bld8x6 = (~(Zjd8x6 & Ild8x6)); +assign Ukd8x6 = (~(R7fet6 & Qubet6)); +assign Gkd8x6 = (Pld8x6 & Eu98x6); +assign Eu98x6 = (Wld8x6 | Sh2nv6); +assign Wld8x6 = (!Aiadt6); +assign Pld8x6 = (Wyeov6 ? Kmd8x6 : Dmd8x6); +assign Wyeov6 = (!Y3fet6); +assign Kmd8x6 = (Rmd8x6 & Ymd8x6); +assign Ymd8x6 = (~(Fnd8x6 & Zriiw6)); +assign Fnd8x6 = (~(Ild8x6 | T5fet6)); +assign Rmd8x6 = (Xt98x6 | Qubet6); +assign Xt98x6 = (~(Qyddt6 & Mnd8x6)); +assign Dmd8x6 = (Ldh7v6 & Flg7x6); +assign Zriiw6 = (!Sunov6); +assign Zjd8x6 = (!Ic77z6); +assign Yvu7v6 = (Tnd8x6 ? T5fet6 : Sunov6); +assign Tnd8x6 = (Aod8x6 & Sunov6); +assign Aod8x6 = (~(Ic77z6 & Hod8x6)); +assign Hod8x6 = (~(Ood8x6 & Vod8x6)); +assign Vod8x6 = (Ga3nv6 & Flg7x6); +assign Flg7x6 = (!Opeet6); +assign Ood8x6 = (~(Ild8x6 | Sugov6)); +assign Sugov6 = (!Sh2nv6); +assign Sh2nv6 = (~(Cpd8x6 & Eyknv6)); +assign Cpd8x6 = (O5a7z6 & M6a7x6); +assign Ild8x6 = (~(Jpd8x6 & Qpd8x6)); +assign Qpd8x6 = (~(TXEV | Ei77z6)); +assign Jpd8x6 = (Xpd8x6 & Eqd8x6); +assign Eqd8x6 = (~(RXEV & Lqd8x6)); +assign Lqd8x6 = (!Fjb7z6[0]); +assign Xpd8x6 = (~(Itbet6 & L2cet6)); +assign Sunov6 = (~(M0edt6 & Mnd8x6)); +assign Mnd8x6 = (~(Sqd8x6 | Bklhw6)); +assign Sqd8x6 = (~(Mrnov6 & C0wnv6)); +assign Rvu7v6 = (~(Zqd8x6 & Grd8x6)); +assign Grd8x6 = (~(Ruymz6[15] & Nrd8x6)); +assign Zqd8x6 = (Urd8x6 & Bsd8x6); +assign Bsd8x6 = (~(Isd8x6 & Biymz6[15])); +assign Urd8x6 = (~(Ctymz6[15] & Psd8x6)); +assign Kvu7v6 = (~(Wsd8x6 & Dtd8x6)); +assign Dtd8x6 = (~(Ruymz6[0] & Nrd8x6)); +assign Wsd8x6 = (Ktd8x6 & Rtd8x6); +assign Rtd8x6 = (~(Isd8x6 & Biymz6[0])); +assign Ktd8x6 = (~(Ctymz6[0] & Psd8x6)); +assign Dvu7v6 = (~(Ytd8x6 & Fud8x6)); +assign Fud8x6 = (~(Ruymz6[1] & Nrd8x6)); +assign Ytd8x6 = (Mud8x6 & Tud8x6); +assign Tud8x6 = (~(Isd8x6 & Biymz6[1])); +assign Mud8x6 = (~(Ctymz6[1] & Psd8x6)); +assign Wuu7v6 = (~(Avd8x6 & Hvd8x6)); +assign Hvd8x6 = (~(Ruymz6[2] & Nrd8x6)); +assign Avd8x6 = (Ovd8x6 & Vvd8x6); +assign Vvd8x6 = (~(Isd8x6 & Biymz6[2])); +assign Ovd8x6 = (~(Ctymz6[2] & Psd8x6)); +assign Puu7v6 = (~(Cwd8x6 & Jwd8x6)); +assign Jwd8x6 = (~(Ruymz6[3] & Nrd8x6)); +assign Cwd8x6 = (Qwd8x6 & Xwd8x6); +assign Xwd8x6 = (~(Isd8x6 & Biymz6[3])); +assign Qwd8x6 = (~(Ctymz6[3] & Psd8x6)); +assign Iuu7v6 = (~(Exd8x6 & Lxd8x6)); +assign Lxd8x6 = (~(Ruymz6[4] & Nrd8x6)); +assign Exd8x6 = (Sxd8x6 & Zxd8x6); +assign Zxd8x6 = (~(Isd8x6 & Biymz6[4])); +assign Sxd8x6 = (~(Ctymz6[4] & Psd8x6)); +assign Buu7v6 = (~(Gyd8x6 & Nyd8x6)); +assign Nyd8x6 = (~(Ruymz6[5] & Nrd8x6)); +assign Gyd8x6 = (Uyd8x6 & Bzd8x6); +assign Bzd8x6 = (~(Isd8x6 & Biymz6[5])); +assign Uyd8x6 = (~(Ctymz6[5] & Psd8x6)); +assign Utu7v6 = (~(Izd8x6 & Pzd8x6)); +assign Pzd8x6 = (~(Ruymz6[6] & Nrd8x6)); +assign Izd8x6 = (Wzd8x6 & D0e8x6); +assign D0e8x6 = (~(Isd8x6 & Biymz6[6])); +assign Wzd8x6 = (~(Ctymz6[6] & Psd8x6)); +assign Ntu7v6 = (~(K0e8x6 & R0e8x6)); +assign R0e8x6 = (~(Ruymz6[7] & Nrd8x6)); +assign K0e8x6 = (Y0e8x6 & F1e8x6); +assign F1e8x6 = (~(Isd8x6 & Biymz6[7])); +assign Y0e8x6 = (~(Ctymz6[7] & Psd8x6)); +assign Gtu7v6 = (~(M1e8x6 & T1e8x6)); +assign T1e8x6 = (~(Ruymz6[8] & Nrd8x6)); +assign M1e8x6 = (A2e8x6 & H2e8x6); +assign H2e8x6 = (~(Isd8x6 & Biymz6[8])); +assign A2e8x6 = (~(Ctymz6[8] & Psd8x6)); +assign Zsu7v6 = (~(O2e8x6 & V2e8x6)); +assign V2e8x6 = (~(Ruymz6[9] & Nrd8x6)); +assign O2e8x6 = (C3e8x6 & J3e8x6); +assign J3e8x6 = (~(Isd8x6 & Biymz6[9])); +assign C3e8x6 = (~(Ctymz6[9] & Psd8x6)); +assign Ssu7v6 = (~(Q3e8x6 & X3e8x6)); +assign X3e8x6 = (~(Ruymz6[10] & Nrd8x6)); +assign Q3e8x6 = (E4e8x6 & L4e8x6); +assign L4e8x6 = (~(Isd8x6 & Biymz6[10])); +assign E4e8x6 = (~(Ctymz6[10] & Psd8x6)); +assign Lsu7v6 = (~(S4e8x6 & Z4e8x6)); +assign Z4e8x6 = (~(Ruymz6[11] & Nrd8x6)); +assign S4e8x6 = (G5e8x6 & N5e8x6); +assign N5e8x6 = (~(Isd8x6 & Biymz6[11])); +assign G5e8x6 = (~(Ctymz6[11] & Psd8x6)); +assign Esu7v6 = (~(U5e8x6 & B6e8x6)); +assign B6e8x6 = (~(Ruymz6[12] & Nrd8x6)); +assign U5e8x6 = (I6e8x6 & P6e8x6); +assign P6e8x6 = (~(Isd8x6 & Biymz6[12])); +assign I6e8x6 = (~(Ctymz6[12] & Psd8x6)); +assign Xru7v6 = (~(W6e8x6 & D7e8x6)); +assign D7e8x6 = (~(Ruymz6[13] & Nrd8x6)); +assign W6e8x6 = (K7e8x6 & R7e8x6); +assign R7e8x6 = (~(Isd8x6 & Biymz6[13])); +assign K7e8x6 = (~(Ctymz6[13] & Psd8x6)); +assign Qru7v6 = (~(Y7e8x6 & F8e8x6)); +assign F8e8x6 = (~(Ruymz6[14] & Nrd8x6)); +assign Y7e8x6 = (M8e8x6 & T8e8x6); +assign T8e8x6 = (~(Isd8x6 & Biymz6[14])); +assign Isd8x6 = (A9e8x6 & I7dov6); +assign A9e8x6 = (Uh77v6 | Gernv6); +assign M8e8x6 = (~(Ctymz6[14] & Psd8x6)); +assign Psd8x6 = (H9e8x6 & I7dov6); +assign I7dov6 = (!Nrd8x6); +assign Nrd8x6 = (~(P7snv6 | Gernv6)); +assign H9e8x6 = (~(Gernv6 | Uh77v6)); +assign Jru7v6 = (Gecov6 ? O9e8x6 : Ka87v6); +assign Cru7v6 = (Gecov6 ? V9e8x6 : Gnzmz6[39]); +assign Vqu7v6 = (Gecov6 ? Cae8x6 : Gnzmz6[31]); +assign Oqu7v6 = (Gecov6 ? Jae8x6 : Gnzmz6[23]); +assign Hqu7v6 = (Gecov6 ? Wfcov6 : Gnzmz6[15]); +assign Gecov6 = (~(I0snv6 & R1snv6)); +assign Wfcov6 = (~(Qae8x6 & Xae8x6)); +assign Xae8x6 = (Ebe8x6 & Lbe8x6); +assign Lbe8x6 = (Sbe8x6 & Zbe8x6); +assign Zbe8x6 = (~(TSVALUEB[19] ^ Gnzmz6[21])); +assign Sbe8x6 = (~(Jae8x6 | Gce8x6)); +assign Gce8x6 = (Gnzmz6[15] & I0snv6); +assign Jae8x6 = (~(Nce8x6 & Uce8x6)); +assign Uce8x6 = (Bde8x6 & Ide8x6); +assign Ide8x6 = (Pde8x6 & Wde8x6); +assign Wde8x6 = (~(TSVALUEB[26] ^ Gnzmz6[29])); +assign Pde8x6 = (~(Cae8x6 | Dee8x6)); +assign Dee8x6 = (Gnzmz6[23] & I0snv6); +assign Cae8x6 = (~(Kee8x6 & Ree8x6)); +assign Ree8x6 = (Yee8x6 & Ffe8x6); +assign Ffe8x6 = (Mfe8x6 & Tfe8x6); +assign Tfe8x6 = (~(TSVALUEB[33] ^ Gnzmz6[37])); +assign Mfe8x6 = (~(V9e8x6 | Age8x6)); +assign Age8x6 = (Gnzmz6[31] & I0snv6); +assign V9e8x6 = (~(Hge8x6 & Oge8x6)); +assign Oge8x6 = (Vge8x6 & Che8x6); +assign Che8x6 = (Jhe8x6 & Qhe8x6); +assign Qhe8x6 = (~(TSVALUEB[40] ^ Gnzmz6[45])); +assign Jhe8x6 = (~(O9e8x6 | Xhe8x6)); +assign Xhe8x6 = (Gnzmz6[39] & I0snv6); +assign O9e8x6 = (~(Eie8x6 & Lie8x6)); +assign Lie8x6 = (Sie8x6 & Zie8x6); +assign Zie8x6 = (~(Gje8x6 | Jc87v6)); +assign Jc87v6 = (Xz67v6 & Nje8x6); +assign Nje8x6 = (~(Uje8x6 & F2snv6)); +assign F2snv6 = (Uzrnv6 & Bke8x6); +assign Uje8x6 = (Ike8x6 & Y9rnv6); +assign Ike8x6 = (~(L587v6 & I0snv6)); +assign Gje8x6 = (Ka87v6 & I0snv6); +assign Sie8x6 = (Pke8x6 & Qg3xx6); +assign Qg3xx6 = (~(TSVALUEB[46] ^ Emc7v6)); +assign Pke8x6 = (~(TSVALUEB[44] ^ Qic7v6)); +assign Eie8x6 = (Xg3xx6 & Eh3xx6); +assign Eh3xx6 = (Lh3xx6 & Sh3xx6); +assign Sh3xx6 = (~(TSVALUEB[42] ^ Cfc7v6)); +assign Lh3xx6 = (~(TSVALUEB[43] ^ Wgc7v6)); +assign Xg3xx6 = (Zh3xx6 & Gi3xx6); +assign Gi3xx6 = (~(TSVALUEB[47] ^ Ync7v6)); +assign Zh3xx6 = (~(TSVALUEB[45] ^ Kkc7v6)); +assign Vge8x6 = (Ni3xx6 & Ui3xx6); +assign Ui3xx6 = (~(TSVALUEB[39] ^ Gnzmz6[44])); +assign Ni3xx6 = (~(TSVALUEB[35] ^ Gnzmz6[40])); +assign Hge8x6 = (Bj3xx6 & Ij3xx6); +assign Ij3xx6 = (Pj3xx6 & Wj3xx6); +assign Wj3xx6 = (~(TSVALUEB[38] ^ Gnzmz6[43])); +assign Pj3xx6 = (~(TSVALUEB[36] ^ Gnzmz6[41])); +assign Bj3xx6 = (Dk3xx6 & Kk3xx6); +assign Kk3xx6 = (~(TSVALUEB[41] ^ Gnzmz6[46])); +assign Dk3xx6 = (~(TSVALUEB[37] ^ Gnzmz6[42])); +assign Yee8x6 = (Rk3xx6 & Yk3xx6); +assign Yk3xx6 = (~(TSVALUEB[31] ^ Gnzmz6[35])); +assign Rk3xx6 = (~(TSVALUEB[28] ^ Gnzmz6[32])); +assign Kee8x6 = (Fl3xx6 & Ml3xx6); +assign Ml3xx6 = (Tl3xx6 & Am3xx6); +assign Am3xx6 = (~(TSVALUEB[30] ^ Gnzmz6[34])); +assign Tl3xx6 = (~(TSVALUEB[29] ^ Gnzmz6[33])); +assign Fl3xx6 = (Hm3xx6 & Om3xx6); +assign Om3xx6 = (~(TSVALUEB[34] ^ Gnzmz6[38])); +assign Hm3xx6 = (~(TSVALUEB[32] ^ Gnzmz6[36])); +assign Bde8x6 = (Vm3xx6 & Cn3xx6); +assign Cn3xx6 = (~(TSVALUEB[24] ^ Gnzmz6[27])); +assign Vm3xx6 = (~(TSVALUEB[21] ^ Gnzmz6[24])); +assign Nce8x6 = (Jn3xx6 & Qn3xx6); +assign Qn3xx6 = (Xn3xx6 & Eo3xx6); +assign Eo3xx6 = (~(TSVALUEB[23] ^ Gnzmz6[26])); +assign Xn3xx6 = (~(TSVALUEB[22] ^ Gnzmz6[25])); +assign Jn3xx6 = (Lo3xx6 & So3xx6); +assign So3xx6 = (~(TSVALUEB[27] ^ Gnzmz6[30])); +assign Lo3xx6 = (~(TSVALUEB[25] ^ Gnzmz6[28])); +assign Ebe8x6 = (Zo3xx6 & Gp3xx6); +assign Gp3xx6 = (~(TSVALUEB[18] ^ Gnzmz6[20])); +assign Zo3xx6 = (~(TSVALUEB[14] ^ Gnzmz6[16])); +assign Qae8x6 = (Np3xx6 & Up3xx6); +assign Up3xx6 = (Bq3xx6 & Iq3xx6); +assign Iq3xx6 = (~(TSVALUEB[17] ^ Gnzmz6[19])); +assign Bq3xx6 = (~(TSVALUEB[15] ^ Gnzmz6[17])); +assign Np3xx6 = (Pq3xx6 & Wq3xx6); +assign Wq3xx6 = (~(TSVALUEB[20] ^ Gnzmz6[22])); +assign Pq3xx6 = (~(TSVALUEB[16] ^ Gnzmz6[18])); +assign Aqu7v6 = (Dr3xx6 ? L5zmz6[8] : P3zmz6[8]); +assign L5zmz6[8] = (Ursnv6 ? Kr3xx6 : Rjzmz6[8]); +assign Kr3xx6 = (!Kr67z6); +assign Tpu7v6 = (Dr3xx6 ? L5zmz6[9] : P3zmz6[9]); +assign L5zmz6[9] = (Ursnv6 ? Rr3xx6 : Rjzmz6[9]); +assign Rr3xx6 = (!Cr67z6); +assign Mpu7v6 = (Dr3xx6 ? L5zmz6[10] : P3zmz6[10]); +assign L5zmz6[10] = (Fs3xx6 ? Rjzmz6[10] : Yr3xx6); +assign Yr3xx6 = (!Uq67z6); +assign Fpu7v6 = (Dr3xx6 ? L5zmz6[11] : P3zmz6[11]); +assign L5zmz6[11] = (Fs3xx6 ? Rjzmz6[11] : Ms3xx6); +assign Ms3xx6 = (!Mq67z6); +assign You7v6 = (Dr3xx6 ? L5zmz6[12] : P3zmz6[12]); +assign L5zmz6[12] = (Fs3xx6 ? Rjzmz6[12] : Ts3xx6); +assign Ts3xx6 = (!Eq67z6); +assign Rou7v6 = (Dr3xx6 ? L5zmz6[13] : P3zmz6[13]); +assign L5zmz6[13] = (Ursnv6 ? At3xx6 : Rjzmz6[13]); +assign At3xx6 = (!Wp67z6); +assign Kou7v6 = (Dr3xx6 ? L5zmz6[14] : P3zmz6[14]); +assign L5zmz6[14] = (Ursnv6 ? Ht3xx6 : Rjzmz6[14]); +assign Ht3xx6 = (!Op67z6); +assign Dou7v6 = (Dr3xx6 ? L5zmz6[15] : P3zmz6[15]); +assign L5zmz6[15] = (Ursnv6 ? Ot3xx6 : Rjzmz6[15]); +assign Ot3xx6 = (!Gp67z6); +assign Wnu7v6 = (Dr3xx6 ? L5zmz6[16] : P3zmz6[16]); +assign L5zmz6[16] = (Ursnv6 ? Vt3xx6 : Rjzmz6[16]); +assign Vt3xx6 = (!Yo67z6); +assign Pnu7v6 = (Dr3xx6 ? L5zmz6[17] : P3zmz6[17]); +assign L5zmz6[17] = (Ursnv6 ? Cu3xx6 : Rjzmz6[17]); +assign Cu3xx6 = (!Qo67z6); +assign Inu7v6 = (Dr3xx6 ? L5zmz6[18] : P3zmz6[18]); +assign L5zmz6[18] = (Ursnv6 ? Ju3xx6 : Rjzmz6[18]); +assign Ju3xx6 = (!Io67z6); +assign Bnu7v6 = (Dr3xx6 ? L5zmz6[19] : P3zmz6[19]); +assign L5zmz6[19] = (Ursnv6 ? Qu3xx6 : Rjzmz6[19]); +assign Qu3xx6 = (!Ao67z6); +assign Umu7v6 = (Dr3xx6 ? Tct8v6 : P3zmz6[20]); +assign Tct8v6 = (Ursnv6 ? Slzmz6[20] : Rjzmz6[20]); +assign Nmu7v6 = (Dr3xx6 ? L5zmz6[21] : P3zmz6[21]); +assign L5zmz6[21] = (Ursnv6 ? Xu3xx6 : Rjzmz6[21]); +assign Xu3xx6 = (!Sn67z6); +assign Gmu7v6 = (Dr3xx6 ? L5zmz6[22] : P3zmz6[22]); +assign L5zmz6[22] = (Ursnv6 ? Ev3xx6 : Rjzmz6[22]); +assign Ev3xx6 = (!Kn67z6); +assign Zlu7v6 = (Dr3xx6 ? L5zmz6[23] : P3zmz6[23]); +assign L5zmz6[23] = (Ursnv6 ? Lv3xx6 : Rjzmz6[23]); +assign Lv3xx6 = (!Cn67z6); +assign Slu7v6 = (Dr3xx6 ? L5zmz6[24] : P3zmz6[24]); +assign L5zmz6[24] = (Ursnv6 ? Sv3xx6 : Rjzmz6[24]); +assign Sv3xx6 = (!Um67z6); +assign Llu7v6 = (Dr3xx6 ? L5zmz6[25] : P3zmz6[25]); +assign L5zmz6[25] = (Ursnv6 ? Zv3xx6 : Rjzmz6[25]); +assign Zv3xx6 = (!Mm67z6); +assign Elu7v6 = (Dr3xx6 ? L5zmz6[26] : P3zmz6[26]); +assign L5zmz6[26] = (Ursnv6 ? Gw3xx6 : Rjzmz6[26]); +assign Gw3xx6 = (!Em67z6); +assign Xku7v6 = (Dr3xx6 ? L5zmz6[27] : P3zmz6[27]); +assign L5zmz6[27] = (!L9vnv6); +assign L9vnv6 = (Fs3xx6 ? Nw3xx6 : Wl67z6); +assign Nw3xx6 = (!Rjzmz6[27]); +assign Qku7v6 = (Dr3xx6 ? L5zmz6[28] : P3zmz6[28]); +assign Dr3xx6 = (!Uw3xx6); +assign L5zmz6[28] = (Ursnv6 ? Bx3xx6 : Rjzmz6[28]); +assign Bx3xx6 = (!Ol67z6); +assign Jku7v6 = (Uw3xx6 ? P3zmz6[29] : L5zmz6[29]); +assign L5zmz6[29] = (Ursnv6 ? Ix3xx6 : Rjzmz6[29]); +assign Ix3xx6 = (!Gl67z6); +assign Cku7v6 = (Uw3xx6 ? P3zmz6[30] : L5zmz6[30]); +assign L5zmz6[30] = (!X8vnv6); +assign X8vnv6 = (Fs3xx6 ? Px3xx6 : Yk67z6); +assign Px3xx6 = (!Rjzmz6[30]); +assign Vju7v6 = (Uw3xx6 ? P3zmz6[31] : L5zmz6[31]); +assign L5zmz6[31] = (Ursnv6 ? Wx3xx6 : Rjzmz6[31]); +assign Wx3xx6 = (!Qk67z6); +assign Oju7v6 = (Uw3xx6 ? P3zmz6[7] : L5zmz6[7]); +assign Uw3xx6 = (~(H0vnv6 | Edo7v6)); +assign H0vnv6 = (Oosnv6 | Qatnv6); +assign Qatnv6 = (Dy3xx6 & Ky3xx6); +assign Ky3xx6 = (Ry3xx6 & Yy3xx6); +assign Yy3xx6 = (~(Tkb7v6 | I9b7v6)); +assign Ry3xx6 = (~(Bba7v6 | Mbc7v6)); +assign Dy3xx6 = (Fz3xx6 & Mz3xx6); +assign Mz3xx6 = (Tz3xx6 & A04xx6); +assign Fz3xx6 = (~(H04xx6 | O04xx6)); +assign H04xx6 = (Ro87v6 ? V04xx6 : Sqsnv6); +assign V04xx6 = (Lczmz6[1] | Gdc7v6); +assign Oosnv6 = (X4snv6 & W8zmz6[0]); +assign W8zmz6[0] = (~(C14xx6 & J14xx6)); +assign J14xx6 = (~(Q14xx6 & Ymsnv6)); +assign Ymsnv6 = (Wha7z6 & X14xx6); +assign Wha7z6 = (!Sqsnv6); +assign Q14xx6 = (Fnsnv6 & Kmsnv6); +assign Kmsnv6 = (E24xx6 & T8tnv6); +assign T8tnv6 = (E6rnv6 & X4snv6); +assign E6rnv6 = (!X477v6); +assign E24xx6 = (Fgzmz6[1] & L24xx6); +assign L24xx6 = (~(S24xx6 & I1c7v6)); +assign S24xx6 = (X14xx6 & R0tnv6); +assign C14xx6 = (~(Z24xx6 & G34xx6)); +assign G34xx6 = (Fgzmz6[0] ? U34xx6 : N34xx6); +assign U34xx6 = (B44xx6 & I44xx6); +assign I44xx6 = (~(M1tnv6 | X477v6)); +assign M1tnv6 = (~(R0tnv6 | I1c7v6)); +assign B44xx6 = (P7snv6 & P44xx6); +assign P44xx6 = (Sqsnv6 | Fnsnv6); +assign N34xx6 = (Fnsnv6 & Uia7v6); +assign Uia7v6 = (~(Sqsnv6 & W44xx6)); +assign W44xx6 = (~(D54xx6 & Lzb7v6)); +assign D54xx6 = (Xw67v6 & R0tnv6); +assign R0tnv6 = (!Z2c7v6); +assign Fnsnv6 = (K54xx6 & P7snv6); +assign P7snv6 = (Jrqnv6 & Ox67v6); +assign Ox67v6 = (~(R54xx6 & Y54xx6)); +assign Y54xx6 = (~(F64xx6 & Xw67v6)); +assign F64xx6 = (~(Wdtnv6 | O777v6)); +assign R54xx6 = (~(Gg77v6 & M64xx6)); +assign M64xx6 = (~(T64xx6 & A74xx6)); +assign A74xx6 = (~(H74xx6 & O74xx6)); +assign O74xx6 = (W577v6 | S677v6); +assign H74xx6 = (~(Pfo7v6 | Kwl8v6)); +assign T64xx6 = (~(O777v6 | Xw67v6)); +assign K54xx6 = (V74xx6 & C84xx6); +assign C84xx6 = (~(J84xx6 & Q84xx6)); +assign Q84xx6 = (~(X84xx6 & Ojymz6[10])); +assign X84xx6 = (S94xx6 ? L94xx6 : E94xx6); +assign L94xx6 = (~(Z94xx6 & Ga4xx6)); +assign Z94xx6 = (~(Na4xx6 & Ua4xx6)); +assign Ua4xx6 = (!Ojymz6[8]); +assign E94xx6 = (Ojymz6[8] & Bb4xx6); +assign Bb4xx6 = (Ga4xx6 | Na4xx6); +assign Ga4xx6 = (!Ojymz6[9]); +assign J84xx6 = (Ojymz6[8] ? Pb4xx6 : Ib4xx6); +assign Pb4xx6 = (~(S94xx6 & Wb4xx6)); +assign Wb4xx6 = (~(Na4xx6 & Dc4xx6)); +assign Dc4xx6 = (Ojymz6[10] | Ojymz6[9]); +assign Ib4xx6 = (Kc4xx6 | S94xx6); +assign S94xx6 = (Rc4xx6 & Yc4xx6); +assign Yc4xx6 = (Ojymz6[0] ? Md4xx6 : Fd4xx6); +assign Md4xx6 = (~(Td4xx6 & Ae4xx6)); +assign Ae4xx6 = (~(Ojymz6[1] | Ojymz6[3])); +assign Td4xx6 = (Ojymz6[2] & Oasnv6); +assign Fd4xx6 = (~(He4xx6 & Oe4xx6)); +assign He4xx6 = (Ojymz6[3] ? Cf4xx6 : Ve4xx6); +assign Cf4xx6 = (Uh77v6 & Jf4xx6); +assign Ve4xx6 = (Ojymz6[2] & Ecsnv6); +assign Rc4xx6 = (Qf4xx6 & Xf4xx6); +assign Xf4xx6 = (~(Tn77v6 & Eg4xx6)); +assign Qf4xx6 = (~(Ojymz6[2] & Lg4xx6)); +assign Lg4xx6 = (Sg4xx6 | Eg4xx6); +assign Sg4xx6 = (~(Zg4xx6 | Oe4xx6)); +assign Oe4xx6 = (!Ojymz6[1]); +assign Zg4xx6 = (Ojymz6[0] ? Iesnv6 : Gh4xx6); +assign Gh4xx6 = (Ojymz6[3] | Pesnv6); +assign Kc4xx6 = (Ojymz6[9] ? Na4xx6 : Ojymz6[10]); +assign Na4xx6 = (Nh4xx6 & Uh4xx6); +assign Uh4xx6 = (Ojymz6[4] ? Ii4xx6 : Bi4xx6); +assign Ii4xx6 = (~(Pi4xx6 & Oasnv6)); +assign Oasnv6 = (!Hhsnv6); +assign Hhsnv6 = (B1rnv6 & Lgo7x6); +assign Lgo7x6 = (~(Iwymz6[1] & Zgo7x6)); +assign Zgo7x6 = (Zdp7z6[1] ? Wi4xx6 : Sr67z6); +assign B1rnv6 = (!Lfp7z6[1]); +assign Bi4xx6 = (Dj4xx6 & Kj4xx6); +assign Kj4xx6 = (~(Rj4xx6 & Yj4xx6)); +assign Yj4xx6 = (~(Ojymz6[5] | Ojymz6[6])); +assign Rj4xx6 = (Uh77v6 & Ojymz6[7]); +assign Dj4xx6 = (~(Pi4xx6 & Ecsnv6)); +assign Ecsnv6 = (!Qisnv6); +assign Qisnv6 = (B4o7x6 & Qfo7x6); +assign Qfo7x6 = (~(Iwymz6[0] & Ego7x6)); +assign Ego7x6 = (Zdp7z6[0] ? Wi4xx6 : Sr67z6); +assign B4o7x6 = (!Lfp7z6[0]); +assign Pi4xx6 = (Fk4xx6 & Ojymz6[6]); +assign Fk4xx6 = (~(Ojymz6[5] | Ojymz6[7])); +assign Nh4xx6 = (Mk4xx6 & Tk4xx6); +assign Tk4xx6 = (~(Ojymz6[6] & Al4xx6)); +assign Al4xx6 = (Hl4xx6 | Ol4xx6); +assign Ol4xx6 = (Vl4xx6 & Ojymz6[5]); +assign Vl4xx6 = (Ojymz6[4] ? Uksnv6 : Cm4xx6); +assign Uksnv6 = (!Iesnv6); +assign Iesnv6 = (U0rnv6 & Bio7x6); +assign Bio7x6 = (~(Iwymz6[3] & Pio7x6)); +assign Pio7x6 = (Zdp7z6[3] ? Wi4xx6 : Sr67z6); +assign U0rnv6 = (!Lfp7z6[3]); +assign Cm4xx6 = (~(Pesnv6 | Ojymz6[7])); +assign Pesnv6 = (Aeo7x6 & Gho7x6); +assign Gho7x6 = (~(Iwymz6[2] & Uho7x6)); +assign Uho7x6 = (Zdp7z6[2] ? Wi4xx6 : Sr67z6); +assign Wi4xx6 = (!Q087v6); +assign Aeo7x6 = (!Lfp7z6[2]); +assign Mk4xx6 = (~(Tn77v6 & Hl4xx6)); +assign V74xx6 = (~(Ok77v6 & Jm4xx6)); +assign Jm4xx6 = (~(Qm4xx6 & Tn77v6)); +assign Qm4xx6 = (~(Nernv6 | Gernv6)); +assign Nernv6 = (~(X5rnv6 | Xu67v6)); +assign X5rnv6 = (~(L877v6 & Xm4xx6)); +assign X4snv6 = (!Fgzmz6[0]); +assign L5zmz6[7] = (!G3vnv6); +assign G3vnv6 = (Fs3xx6 ? En4xx6 : Ik67z6); +assign En4xx6 = (!Rjzmz6[7]); +assign Hju7v6 = (Xfd7v6 ^ Ln4xx6); +assign Ln4xx6 = (Sn4xx6 & Mz0nz6[4]); +assign Sn4xx6 = (Mz0nz6[3] & Fftnv6); +assign Aju7v6 = (Fftnv6 ? Ux0nz6[0] : E11nz6[0]); +assign Tiu7v6 = (Fftnv6 ? Ux0nz6[1] : E11nz6[1]); +assign Miu7v6 = (Fftnv6 ? Ux0nz6[2] : E11nz6[2]); +assign Fiu7v6 = (!Zn4xx6); +assign Zn4xx6 = (Vicov6 ? No4xx6 : Go4xx6); +assign Go4xx6 = (~(Mz0nz6[3] & Uo4xx6)); +assign Yhu7v6 = (!Bp4xx6); +assign Bp4xx6 = (Vicov6 ? Pp4xx6 : Ip4xx6); +assign Ip4xx6 = (Uo4xx6 | Mz0nz6[3]); +assign Uo4xx6 = (!Mz0nz6[4]); +assign Rhu7v6 = (~(Wp4xx6 & Dq4xx6)); +assign Dq4xx6 = (~(Uu0nz6[4] & Kq4xx6)); +assign Kq4xx6 = (~(Rq4xx6 & Yq4xx6)); +assign Yq4xx6 = (!Uu0nz6[3]); +assign Wp4xx6 = (~(Fr4xx6 & Mr4xx6)); +assign Mr4xx6 = (~(Tr4xx6 ^ Tvrnv6)); +assign Tvrnv6 = (!Zkrnv6); +assign Tr4xx6 = (~(As4xx6 & Hs4xx6)); +assign Hs4xx6 = (Imrnv6 | Os4xx6); +assign As4xx6 = (Vs4xx6 | Ct4xx6); +assign Khu7v6 = (Jt4xx6 | Qt4xx6); +assign Qt4xx6 = (Xt4xx6 & Fr4xx6); +assign Xt4xx6 = (Durnv6 ^ Eu4xx6); +assign Jt4xx6 = (Uu0nz6[1] ? Su4xx6 : Lu4xx6); +assign Lu4xx6 = (Zu4xx6 & Gv4xx6); +assign Dhu7v6 = (~(Nv4xx6 & Uv4xx6)); +assign Nv4xx6 = (Bw4xx6 & Iw4xx6); +assign Iw4xx6 = (~(Pw4xx6 & Fr4xx6)); +assign Pw4xx6 = (Ww4xx6 ^ Dx4xx6); +assign Dx4xx6 = (Eu4xx6 & Durnv6); +assign Bw4xx6 = (~(Uu0nz6[2] & Kx4xx6)); +assign Kx4xx6 = (Su4xx6 | Uu0nz6[1]); +assign Su4xx6 = (~(Rx4xx6 & Gv4xx6)); +assign Gv4xx6 = (!Uu0nz6[0]); +assign Wgu7v6 = (~(Yx4xx6 & Fy4xx6)); +assign Fy4xx6 = (~(My4xx6 & Fr4xx6)); +assign My4xx6 = (Ct4xx6 ^ Vs4xx6); +assign Vs4xx6 = (~(Eu4xx6 & Os4xx6)); +assign Eu4xx6 = (Errnv6 & A3dov6); +assign A3dov6 = (!Sr5ov6); +assign Ct4xx6 = (~(Imrnv6 ^ Os4xx6)); +assign Os4xx6 = (Ww4xx6 & Durnv6); +assign Ww4xx6 = (~(Qqrnv6 ^ Durnv6)); +assign Yx4xx6 = (Uu0nz6[3] ? Rq4xx6 : Uv4xx6); +assign Rq4xx6 = (Ty4xx6 & Rx4xx6); +assign Uv4xx6 = (~(Zu4xx6 & Ty4xx6)); +assign Ty4xx6 = (~(Az4xx6 | Uu0nz6[0])); +assign Zu4xx6 = (!Hz4xx6); +assign Pgu7v6 = (~(Oz4xx6 & Vz4xx6)); +assign Vz4xx6 = (~(C05xx6 & Fr4xx6)); +assign C05xx6 = (~(Errnv6 ^ Sr5ov6)); +assign Oz4xx6 = (Uu0nz6[0] ? Rx4xx6 : Hz4xx6); +assign Hz4xx6 = (~(J05xx6 & Rx4xx6)); +assign Rx4xx6 = (Fr4xx6 | Sr5ov6); +assign Fr4xx6 = (Q05xx6 & X05xx6); +assign X05xx6 = (~(E15xx6 | Kkd7v6)); +assign Q05xx6 = (L15xx6 & N6dov6); +assign J05xx6 = (~(L15xx6 & S15xx6)); +assign Igu7v6 = (Fftnv6 ? Oha7z6 : T51nz6[0]); +assign Bgu7v6 = (Fftnv6 ? Gha7z6 : T51nz6[1]); +assign Ufu7v6 = (~(Z15xx6 & G25xx6)); +assign G25xx6 = (~(T51nz6[2] & Vicov6)); +assign Vicov6 = (!Fftnv6); +assign Nfu7v6 = (~(N25xx6 & U25xx6)); +assign U25xx6 = (~(B41nz6[1] & B35xx6)); +assign Gfu7v6 = (~(I35xx6 & P35xx6)); +assign P35xx6 = (~(B41nz6[0] & B35xx6)); +assign Zeu7v6 = (D45xx6 ? W35xx6 : Bq0nz6[0]); +assign Seu7v6 = (K45xx6 ? W35xx6 : Lo0nz6[0]); +assign Leu7v6 = (R45xx6 ? W35xx6 : Vm0nz6[0]); +assign W35xx6 = (R21nz6[2] ? F55xx6 : Y45xx6); +assign Eeu7v6 = (D45xx6 ? M55xx6 : Bq0nz6[1]); +assign Xdu7v6 = (K45xx6 ? M55xx6 : Lo0nz6[1]); +assign Qdu7v6 = (R45xx6 ? M55xx6 : Vm0nz6[1]); +assign M55xx6 = (R21nz6[2] ? A65xx6 : T55xx6); +assign Jdu7v6 = (D45xx6 ? H65xx6 : Bq0nz6[2]); +assign Cdu7v6 = (K45xx6 ? H65xx6 : Lo0nz6[2]); +assign Vcu7v6 = (R45xx6 ? H65xx6 : Vm0nz6[2]); +assign H65xx6 = (R21nz6[2] ? V65xx6 : O65xx6); +assign Ocu7v6 = (D45xx6 ? C75xx6 : Bq0nz6[3]); +assign Hcu7v6 = (K45xx6 ? C75xx6 : Lo0nz6[3]); +assign Acu7v6 = (R45xx6 ? C75xx6 : Vm0nz6[3]); +assign C75xx6 = (R21nz6[2] ? Q75xx6 : J75xx6); +assign Tbu7v6 = (D45xx6 ? X75xx6 : Bq0nz6[4]); +assign Mbu7v6 = (K45xx6 ? X75xx6 : Lo0nz6[4]); +assign Fbu7v6 = (R45xx6 ? X75xx6 : Vm0nz6[4]); +assign X75xx6 = (R21nz6[2] ? L85xx6 : E85xx6); +assign Yau7v6 = (D45xx6 ? S85xx6 : Bq0nz6[5]); +assign Rau7v6 = (K45xx6 ? S85xx6 : Lo0nz6[5]); +assign Kau7v6 = (R45xx6 ? S85xx6 : Vm0nz6[5]); +assign S85xx6 = (R21nz6[2] ? G95xx6 : Z85xx6); +assign Dau7v6 = (D45xx6 ? N95xx6 : Bq0nz6[6]); +assign W9u7v6 = (K45xx6 ? N95xx6 : Lo0nz6[6]); +assign P9u7v6 = (R45xx6 ? N95xx6 : Vm0nz6[6]); +assign N95xx6 = (R21nz6[2] ? Ba5xx6 : U95xx6); +assign I9u7v6 = (D45xx6 ? Ia5xx6 : Bq0nz6[7]); +assign D45xx6 = (~(Pa5xx6 | Wa5xx6)); +assign Pa5xx6 = (Db5xx6 | Kb5xx6); +assign B9u7v6 = (K45xx6 ? Ia5xx6 : Lo0nz6[7]); +assign K45xx6 = (Rb5xx6 & Wa5xx6); +assign Rb5xx6 = (~(Db5xx6 | Kb5xx6)); +assign U8u7v6 = (R45xx6 ? Ia5xx6 : Vm0nz6[7]); +assign R45xx6 = (Yb5xx6 & Db5xx6); +assign Db5xx6 = (Mc5xx6 ? B41nz6[1] : Fc5xx6); +assign Yb5xx6 = (~(Wa5xx6 | Kb5xx6)); +assign Kb5xx6 = (Tc5xx6 & Ad5xx6); +assign Ad5xx6 = (~(Mc5xx6 & Hd5xx6)); +assign Hd5xx6 = (~(Od5xx6 & Vd5xx6)); +assign Vd5xx6 = (~(Oha7z6 & Fftnv6)); +assign Tc5xx6 = (~(Ce5xx6 & Je5xx6)); +assign Je5xx6 = (~(Qe5xx6 & Xe5xx6)); +assign Wa5xx6 = (Mc5xx6 ? B41nz6[0] : Ef5xx6); +assign Mc5xx6 = (~(Lf5xx6 | T51nz6[0])); +assign Ia5xx6 = (R21nz6[2] ? Zf5xx6 : Sf5xx6); +assign N8u7v6 = (Ng5xx6 ? Gg5xx6 : Fl0nz6[0]); +assign G8u7v6 = (Ug5xx6 ? Gg5xx6 : Pj0nz6[0]); +assign Z7u7v6 = (Bh5xx6 ? Gg5xx6 : Zh0nz6[0]); +assign Gg5xx6 = (R21nz6[2] ? Ph5xx6 : Ih5xx6); +assign S7u7v6 = (Ng5xx6 ? Wh5xx6 : Fl0nz6[1]); +assign L7u7v6 = (Ug5xx6 ? Wh5xx6 : Pj0nz6[1]); +assign E7u7v6 = (Bh5xx6 ? Wh5xx6 : Zh0nz6[1]); +assign Wh5xx6 = (R21nz6[2] ? Ki5xx6 : Di5xx6); +assign X6u7v6 = (Ng5xx6 ? Ri5xx6 : Fl0nz6[2]); +assign Q6u7v6 = (Ug5xx6 ? Ri5xx6 : Pj0nz6[2]); +assign J6u7v6 = (Bh5xx6 ? Ri5xx6 : Zh0nz6[2]); +assign Ri5xx6 = (R21nz6[2] ? Fj5xx6 : Yi5xx6); +assign C6u7v6 = (Ng5xx6 ? Mj5xx6 : Fl0nz6[3]); +assign V5u7v6 = (Ug5xx6 ? Mj5xx6 : Pj0nz6[3]); +assign O5u7v6 = (Bh5xx6 ? Mj5xx6 : Zh0nz6[3]); +assign Mj5xx6 = (R21nz6[2] ? Ak5xx6 : Tj5xx6); +assign H5u7v6 = (Ng5xx6 ? Hk5xx6 : Fl0nz6[4]); +assign A5u7v6 = (Ug5xx6 ? Hk5xx6 : Pj0nz6[4]); +assign T4u7v6 = (Bh5xx6 ? Hk5xx6 : Zh0nz6[4]); +assign Hk5xx6 = (R21nz6[2] ? Vk5xx6 : Ok5xx6); +assign M4u7v6 = (Ng5xx6 ? Cl5xx6 : Fl0nz6[5]); +assign F4u7v6 = (Ug5xx6 ? Cl5xx6 : Pj0nz6[5]); +assign Y3u7v6 = (Bh5xx6 ? Cl5xx6 : Zh0nz6[5]); +assign Cl5xx6 = (R21nz6[2] ? Ql5xx6 : Jl5xx6); +assign R3u7v6 = (Ng5xx6 ? Xl5xx6 : Fl0nz6[6]); +assign K3u7v6 = (Ug5xx6 ? Xl5xx6 : Pj0nz6[6]); +assign D3u7v6 = (Bh5xx6 ? Xl5xx6 : Zh0nz6[6]); +assign Xl5xx6 = (R21nz6[2] ? Lm5xx6 : Em5xx6); +assign W2u7v6 = (Ng5xx6 ? Sm5xx6 : Fl0nz6[7]); +assign Ng5xx6 = (Zm5xx6 & Gn5xx6); +assign P2u7v6 = (Ug5xx6 ? Sm5xx6 : Pj0nz6[7]); +assign Ug5xx6 = (Zm5xx6 & Nn5xx6); +assign Zm5xx6 = (Un5xx6 & Bo5xx6); +assign Un5xx6 = (!Io5xx6); +assign I2u7v6 = (Bh5xx6 ? Sm5xx6 : Zh0nz6[7]); +assign Bh5xx6 = (Po5xx6 & Io5xx6); +assign Io5xx6 = (Wo5xx6 ? B41nz6[1] : Fc5xx6); +assign Po5xx6 = (Gn5xx6 & Bo5xx6); +assign Bo5xx6 = (~(Dp5xx6 & Kp5xx6)); +assign Kp5xx6 = (B35xx6 | Qe5xx6); +assign Qe5xx6 = (Rp5xx6 & Yp5xx6); +assign Dp5xx6 = (Lf5xx6 | Od5xx6); +assign Od5xx6 = (Fq5xx6 & Mq5xx6); +assign Mq5xx6 = (~(Gha7z6 & Fftnv6)); +assign Gn5xx6 = (!Nn5xx6); +assign Nn5xx6 = (Wo5xx6 ? B41nz6[0] : Ef5xx6); +assign Sm5xx6 = (R21nz6[2] ? Ar5xx6 : Tq5xx6); +assign B2u7v6 = (Or5xx6 ? Hr5xx6 : Jg0nz6[0]); +assign U1u7v6 = (Vr5xx6 ? Hr5xx6 : Te0nz6[0]); +assign N1u7v6 = (Cs5xx6 ? Hr5xx6 : Dd0nz6[0]); +assign Hr5xx6 = (R21nz6[2] ? Qs5xx6 : Js5xx6); +assign G1u7v6 = (Or5xx6 ? Xs5xx6 : Jg0nz6[1]); +assign Z0u7v6 = (Vr5xx6 ? Xs5xx6 : Te0nz6[1]); +assign S0u7v6 = (Cs5xx6 ? Xs5xx6 : Dd0nz6[1]); +assign Xs5xx6 = (R21nz6[2] ? Lt5xx6 : Et5xx6); +assign L0u7v6 = (Or5xx6 ? St5xx6 : Jg0nz6[2]); +assign E0u7v6 = (Vr5xx6 ? St5xx6 : Te0nz6[2]); +assign Xzt7v6 = (Cs5xx6 ? St5xx6 : Dd0nz6[2]); +assign St5xx6 = (R21nz6[2] ? Gu5xx6 : Zt5xx6); +assign Qzt7v6 = (Or5xx6 ? Nu5xx6 : Jg0nz6[3]); +assign Jzt7v6 = (Vr5xx6 ? Nu5xx6 : Te0nz6[3]); +assign Czt7v6 = (Cs5xx6 ? Nu5xx6 : Dd0nz6[3]); +assign Nu5xx6 = (R21nz6[2] ? Bv5xx6 : Uu5xx6); +assign Vyt7v6 = (Or5xx6 ? Iv5xx6 : Jg0nz6[4]); +assign Oyt7v6 = (Vr5xx6 ? Iv5xx6 : Te0nz6[4]); +assign Hyt7v6 = (Cs5xx6 ? Iv5xx6 : Dd0nz6[4]); +assign Iv5xx6 = (R21nz6[2] ? Wv5xx6 : Pv5xx6); +assign Ayt7v6 = (Or5xx6 ? Dw5xx6 : Jg0nz6[5]); +assign Txt7v6 = (Vr5xx6 ? Dw5xx6 : Te0nz6[5]); +assign Mxt7v6 = (Cs5xx6 ? Dw5xx6 : Dd0nz6[5]); +assign Dw5xx6 = (R21nz6[2] ? Rw5xx6 : Kw5xx6); +assign Fxt7v6 = (Or5xx6 ? Yw5xx6 : Jg0nz6[6]); +assign Ywt7v6 = (Vr5xx6 ? Yw5xx6 : Te0nz6[6]); +assign Rwt7v6 = (Cs5xx6 ? Yw5xx6 : Dd0nz6[6]); +assign Yw5xx6 = (R21nz6[2] ? Mx5xx6 : Fx5xx6); +assign Kwt7v6 = (Or5xx6 ? Tx5xx6 : Jg0nz6[7]); +assign Or5xx6 = (Ay5xx6 & Hy5xx6); +assign Dwt7v6 = (Vr5xx6 ? Tx5xx6 : Te0nz6[7]); +assign Vr5xx6 = (Ay5xx6 & Oy5xx6); +assign Ay5xx6 = (Vy5xx6 & Cz5xx6); +assign Vy5xx6 = (!Jz5xx6); +assign Wvt7v6 = (Cs5xx6 ? Tx5xx6 : Dd0nz6[7]); +assign Cs5xx6 = (Qz5xx6 & Jz5xx6); +assign Jz5xx6 = (Xz5xx6 ? Fc5xx6 : B41nz6[1]); +assign Qz5xx6 = (Hy5xx6 & Cz5xx6); +assign Cz5xx6 = (~(E06xx6 & L06xx6)); +assign E06xx6 = (S06xx6 & Z06xx6); +assign Z06xx6 = (~(G16xx6 & Gha7z6)); +assign G16xx6 = (Oha7z6 & N16xx6); +assign N16xx6 = (~(B35xx6 & U16xx6)); +assign U16xx6 = (~(Fftnv6 & B26xx6)); +assign S06xx6 = (Xz5xx6 | Fq5xx6); +assign Hy5xx6 = (!Oy5xx6); +assign Oy5xx6 = (Xz5xx6 ? Ef5xx6 : B41nz6[0]); +assign Xz5xx6 = (!B26xx6); +assign B26xx6 = (~(I26xx6 & Lf5xx6)); +assign Lf5xx6 = (!Wo5xx6); +assign Wo5xx6 = (P26xx6 & W26xx6); +assign I26xx6 = (~(W26xx6 & D36xx6)); +assign D36xx6 = (!T51nz6[0]); +assign Tx5xx6 = (R21nz6[2] ? R36xx6 : K36xx6); +assign Pvt7v6 = (F46xx6 ? Y36xx6 : Nb0nz6[0]); +assign Ivt7v6 = (M46xx6 ? Y36xx6 : X90nz6[0]); +assign Bvt7v6 = (T46xx6 ? Y36xx6 : H80nz6[0]); +assign Y36xx6 = (R21nz6[2] ? H56xx6 : A56xx6); +assign Uut7v6 = (F46xx6 ? O56xx6 : Nb0nz6[1]); +assign Nut7v6 = (M46xx6 ? O56xx6 : X90nz6[1]); +assign Gut7v6 = (T46xx6 ? O56xx6 : H80nz6[1]); +assign O56xx6 = (R21nz6[2] ? C66xx6 : V56xx6); +assign Ztt7v6 = (F46xx6 ? J66xx6 : Nb0nz6[2]); +assign Stt7v6 = (M46xx6 ? J66xx6 : X90nz6[2]); +assign Ltt7v6 = (T46xx6 ? J66xx6 : H80nz6[2]); +assign J66xx6 = (R21nz6[2] ? X66xx6 : Q66xx6); +assign Ett7v6 = (F46xx6 ? E76xx6 : Nb0nz6[3]); +assign Xst7v6 = (M46xx6 ? E76xx6 : X90nz6[3]); +assign Qst7v6 = (T46xx6 ? E76xx6 : H80nz6[3]); +assign E76xx6 = (R21nz6[2] ? S76xx6 : L76xx6); +assign Jst7v6 = (F46xx6 ? Z76xx6 : Nb0nz6[4]); +assign Cst7v6 = (M46xx6 ? Z76xx6 : X90nz6[4]); +assign Vrt7v6 = (T46xx6 ? Z76xx6 : H80nz6[4]); +assign Z76xx6 = (R21nz6[2] ? N86xx6 : G86xx6); +assign Ort7v6 = (F46xx6 ? U86xx6 : Nb0nz6[5]); +assign Hrt7v6 = (M46xx6 ? U86xx6 : X90nz6[5]); +assign Art7v6 = (T46xx6 ? U86xx6 : H80nz6[5]); +assign U86xx6 = (R21nz6[2] ? I96xx6 : B96xx6); +assign Tqt7v6 = (F46xx6 ? P96xx6 : Nb0nz6[6]); +assign Mqt7v6 = (M46xx6 ? P96xx6 : X90nz6[6]); +assign Fqt7v6 = (T46xx6 ? P96xx6 : H80nz6[6]); +assign P96xx6 = (R21nz6[2] ? Da6xx6 : W96xx6); +assign Ypt7v6 = (F46xx6 ? Ka6xx6 : Nb0nz6[7]); +assign F46xx6 = (Ra6xx6 & Ya6xx6); +assign Rpt7v6 = (M46xx6 ? Ka6xx6 : X90nz6[7]); +assign M46xx6 = (Ra6xx6 & Fb6xx6); +assign Ra6xx6 = (Mb6xx6 & Tb6xx6); +assign Mb6xx6 = (!Ac6xx6); +assign Kpt7v6 = (T46xx6 ? Ka6xx6 : H80nz6[7]); +assign T46xx6 = (Hc6xx6 & Ac6xx6); +assign Ac6xx6 = (T51nz6[2] ? Fc5xx6 : B41nz6[1]); +assign Hc6xx6 = (Ya6xx6 & Tb6xx6); +assign Tb6xx6 = (~(L06xx6 & Oc6xx6)); +assign Oc6xx6 = (Fq5xx6 | T51nz6[2]); +assign Fq5xx6 = (Z15xx6 & B35xx6); +assign Z15xx6 = (!Vc6xx6); +assign L06xx6 = (~(Ce5xx6 & Mho7v6)); +assign Ya6xx6 = (!Fb6xx6); +assign Fb6xx6 = (T51nz6[2] ? Ef5xx6 : B41nz6[0]); +assign Ka6xx6 = (R21nz6[2] ? Jd6xx6 : Cd6xx6); +assign Dpt7v6 = (Xd6xx6 ? Qd6xx6 : R60nz6[0]); +assign Wot7v6 = (Ee6xx6 ? Qd6xx6 : B50nz6[0]); +assign Pot7v6 = (Le6xx6 ? Qd6xx6 : L30nz6[0]); +assign Qd6xx6 = (R21nz6[2] ? Y45xx6 : F55xx6); +assign Y45xx6 = (~(Se6xx6 & Ze6xx6)); +assign Ze6xx6 = (Gf6xx6 | Nf6xx6); +assign Se6xx6 = (Uf6xx6 & Bg6xx6); +assign Bg6xx6 = (Ig6xx6 | R21nz6[1]); +assign Uf6xx6 = (Pg6xx6 | Wg6xx6); +assign F55xx6 = (~(Dh6xx6 & Kh6xx6)); +assign Kh6xx6 = (Rh6xx6 & Yh6xx6); +assign Yh6xx6 = (Pg6xx6 | Fi6xx6); +assign Rh6xx6 = (Gf6xx6 | Mi6xx6); +assign Dh6xx6 = (Ti6xx6 & Aj6xx6); +assign Aj6xx6 = (Hj6xx6 | Oj6xx6); +assign Ti6xx6 = (Vj6xx6 | Ck6xx6); +assign Iot7v6 = (Xd6xx6 ? Jk6xx6 : R60nz6[1]); +assign Bot7v6 = (Ee6xx6 ? Jk6xx6 : B50nz6[1]); +assign Unt7v6 = (Le6xx6 ? Jk6xx6 : L30nz6[1]); +assign Jk6xx6 = (R21nz6[2] ? T55xx6 : A65xx6); +assign T55xx6 = (~(Qk6xx6 & Xk6xx6)); +assign Xk6xx6 = (El6xx6 & Ll6xx6); +assign Ll6xx6 = (Sl6xx6 | Vj6xx6); +assign El6xx6 = (Gf6xx6 | Zl6xx6); +assign Qk6xx6 = (Gm6xx6 & Nm6xx6); +assign Nm6xx6 = (Pg6xx6 | Um6xx6); +assign Gm6xx6 = (Hj6xx6 | Bn6xx6); +assign A65xx6 = (~(In6xx6 & Pn6xx6)); +assign Pn6xx6 = (Wn6xx6 & Do6xx6); +assign Do6xx6 = (Gf6xx6 | Ko6xx6); +assign Wn6xx6 = (Pg6xx6 | Ro6xx6); +assign In6xx6 = (Yo6xx6 & Fp6xx6); +assign Fp6xx6 = (Hj6xx6 | Mp6xx6); +assign Yo6xx6 = (Vj6xx6 | Tp6xx6); +assign Nnt7v6 = (Xd6xx6 ? Aq6xx6 : R60nz6[2]); +assign Gnt7v6 = (Ee6xx6 ? Aq6xx6 : B50nz6[2]); +assign Zmt7v6 = (Le6xx6 ? Aq6xx6 : L30nz6[2]); +assign Aq6xx6 = (R21nz6[2] ? O65xx6 : V65xx6); +assign O65xx6 = (~(Hq6xx6 & Oq6xx6)); +assign Oq6xx6 = (Vq6xx6 & Cr6xx6); +assign Cr6xx6 = (Vj6xx6 | Jr6xx6); +assign Vq6xx6 = (Gf6xx6 | Qr6xx6); +assign Hq6xx6 = (Xr6xx6 & Es6xx6); +assign Es6xx6 = (Pg6xx6 | Ls6xx6); +assign Xr6xx6 = (Hj6xx6 | Ss6xx6); +assign V65xx6 = (~(Zs6xx6 & Gt6xx6)); +assign Gt6xx6 = (Nt6xx6 & Ut6xx6); +assign Ut6xx6 = (Gf6xx6 | Bu6xx6); +assign Nt6xx6 = (Pg6xx6 | Iu6xx6); +assign Zs6xx6 = (Pu6xx6 & Wu6xx6); +assign Wu6xx6 = (Hj6xx6 | Dv6xx6); +assign Pu6xx6 = (Vj6xx6 | Kv6xx6); +assign Smt7v6 = (Xd6xx6 ? Rv6xx6 : R60nz6[3]); +assign Lmt7v6 = (Ee6xx6 ? Rv6xx6 : B50nz6[3]); +assign Emt7v6 = (Le6xx6 ? Rv6xx6 : L30nz6[3]); +assign Rv6xx6 = (R21nz6[2] ? J75xx6 : Q75xx6); +assign J75xx6 = (~(Yv6xx6 & Fw6xx6)); +assign Fw6xx6 = (Mw6xx6 & Tw6xx6); +assign Tw6xx6 = (Vj6xx6 | Ax6xx6); +assign Mw6xx6 = (Hj6xx6 | Hx6xx6); +assign Yv6xx6 = (Ox6xx6 & Vx6xx6); +assign Vx6xx6 = (Gf6xx6 | Cy6xx6); +assign Ox6xx6 = (Pg6xx6 | Jy6xx6); +assign Q75xx6 = (~(Qy6xx6 & Xy6xx6)); +assign Xy6xx6 = (Ez6xx6 & Lz6xx6); +assign Lz6xx6 = (Gf6xx6 | Sz6xx6); +assign Ez6xx6 = (Pg6xx6 | Zz6xx6); +assign Qy6xx6 = (G07xx6 & N07xx6); +assign N07xx6 = (Hj6xx6 | U07xx6); +assign G07xx6 = (Vj6xx6 | B17xx6); +assign Xlt7v6 = (Xd6xx6 ? I17xx6 : R60nz6[4]); +assign Qlt7v6 = (Ee6xx6 ? I17xx6 : B50nz6[4]); +assign Jlt7v6 = (Le6xx6 ? I17xx6 : L30nz6[4]); +assign I17xx6 = (R21nz6[2] ? E85xx6 : L85xx6); +assign E85xx6 = (~(P17xx6 & W17xx6)); +assign W17xx6 = (D27xx6 & K27xx6); +assign K27xx6 = (Vj6xx6 | R27xx6); +assign D27xx6 = (Hj6xx6 | Y27xx6); +assign P17xx6 = (F37xx6 & M37xx6); +assign M37xx6 = (Gf6xx6 | T37xx6); +assign F37xx6 = (Pg6xx6 | A47xx6); +assign L85xx6 = (~(H47xx6 & O47xx6)); +assign O47xx6 = (V47xx6 & C57xx6); +assign C57xx6 = (Gf6xx6 | J57xx6); +assign V47xx6 = (Pg6xx6 | Q57xx6); +assign H47xx6 = (X57xx6 & E67xx6); +assign E67xx6 = (Hj6xx6 | L67xx6); +assign X57xx6 = (Vj6xx6 | S67xx6); +assign Clt7v6 = (Xd6xx6 ? Z67xx6 : R60nz6[5]); +assign Vkt7v6 = (Ee6xx6 ? Z67xx6 : B50nz6[5]); +assign Okt7v6 = (Le6xx6 ? Z67xx6 : L30nz6[5]); +assign Z67xx6 = (R21nz6[2] ? Z85xx6 : G95xx6); +assign Z85xx6 = (~(G77xx6 & N77xx6)); +assign N77xx6 = (U77xx6 & B87xx6); +assign B87xx6 = (Vj6xx6 | I87xx6); +assign U77xx6 = (Hj6xx6 | P87xx6); +assign G77xx6 = (W87xx6 & D97xx6); +assign D97xx6 = (Gf6xx6 | K97xx6); +assign W87xx6 = (Pg6xx6 | R97xx6); +assign G95xx6 = (~(Y97xx6 & Fa7xx6)); +assign Fa7xx6 = (Ma7xx6 & Ta7xx6); +assign Ta7xx6 = (Gf6xx6 | Ab7xx6); +assign Ma7xx6 = (Pg6xx6 | Hb7xx6); +assign Y97xx6 = (Ob7xx6 & Vb7xx6); +assign Vb7xx6 = (Hj6xx6 | Cc7xx6); +assign Ob7xx6 = (Vj6xx6 | Jc7xx6); +assign Hkt7v6 = (Xd6xx6 ? Qc7xx6 : R60nz6[6]); +assign Akt7v6 = (Ee6xx6 ? Qc7xx6 : B50nz6[6]); +assign Tjt7v6 = (Le6xx6 ? Qc7xx6 : L30nz6[6]); +assign Qc7xx6 = (R21nz6[2] ? U95xx6 : Ba5xx6); +assign U95xx6 = (~(Xc7xx6 & Ed7xx6)); +assign Ed7xx6 = (Ld7xx6 & Sd7xx6); +assign Sd7xx6 = (~(Zd7xx6 & Ge7xx6)); +assign Ld7xx6 = (Ne7xx6 | Vj6xx6); +assign Xc7xx6 = (Ue7xx6 & Bf7xx6); +assign Bf7xx6 = (Gf6xx6 | If7xx6); +assign Ue7xx6 = (Pg6xx6 | Pf7xx6); +assign Ba5xx6 = (~(Wf7xx6 & Dg7xx6)); +assign Dg7xx6 = (Kg7xx6 & Rg7xx6); +assign Rg7xx6 = (Gf6xx6 | Yg7xx6); +assign Kg7xx6 = (Pg6xx6 | Fh7xx6); +assign Wf7xx6 = (Mh7xx6 & Th7xx6); +assign Th7xx6 = (Hj6xx6 | Ai7xx6); +assign Mh7xx6 = (Vj6xx6 | Hi7xx6); +assign Mjt7v6 = (Xd6xx6 ? Oi7xx6 : R60nz6[7]); +assign Xd6xx6 = (Vi7xx6 & Cj7xx6); +assign Fjt7v6 = (Ee6xx6 ? Oi7xx6 : B50nz6[7]); +assign Ee6xx6 = (Vi7xx6 & Jj7xx6); +assign Vi7xx6 = (Qj7xx6 & Xj7xx6); +assign Qj7xx6 = (!Ek7xx6); +assign Yit7v6 = (Le6xx6 ? Oi7xx6 : L30nz6[7]); +assign Le6xx6 = (Lk7xx6 & Ek7xx6); +assign Ek7xx6 = (Sk7xx6 ? B41nz6[1] : Fc5xx6); +assign Lk7xx6 = (Cj7xx6 & Xj7xx6); +assign Xj7xx6 = (~(Zk7xx6 & Gl7xx6)); +assign Gl7xx6 = (~(Sk7xx6 & Ce5xx6)); +assign Zk7xx6 = (~(Nl7xx6 & Vc6xx6)); +assign Nl7xx6 = (Ul7xx6 & Bm7xx6); +assign Bm7xx6 = (~(Im7xx6 & B35xx6)); +assign Ul7xx6 = (~(Rp5xx6 & Xe5xx6)); +assign Xe5xx6 = (!Oha7z6); +assign Rp5xx6 = (!Gha7z6); +assign Cj7xx6 = (!Jj7xx6); +assign Jj7xx6 = (Sk7xx6 ? B41nz6[0] : Ef5xx6); +assign Sk7xx6 = (!Im7xx6); +assign Im7xx6 = (~(Pm7xx6 & Wm7xx6)); +assign Wm7xx6 = (~(T51nz6[2] & T51nz6[0])); +assign Oi7xx6 = (R21nz6[2] ? Sf5xx6 : Zf5xx6); +assign Sf5xx6 = (~(Dn7xx6 & Kn7xx6)); +assign Kn7xx6 = (Pg6xx6 | Rn7xx6); +assign Dn7xx6 = (Yn7xx6 & Fo7xx6); +assign Fo7xx6 = (Mo7xx6 | R21nz6[1]); +assign Yn7xx6 = (Gf6xx6 | To7xx6); +assign Zf5xx6 = (~(Ap7xx6 & Hp7xx6)); +assign Hp7xx6 = (Op7xx6 & Vp7xx6); +assign Vp7xx6 = (Gf6xx6 | Cq7xx6); +assign Op7xx6 = (Pg6xx6 | Jq7xx6); +assign Ap7xx6 = (Qq7xx6 & Xq7xx6); +assign Xq7xx6 = (Hj6xx6 | Er7xx6); +assign Qq7xx6 = (Vj6xx6 | Lr7xx6); +assign Rit7v6 = (Zr7xx6 ? Sr7xx6 : V10nz6[0]); +assign Kit7v6 = (Gs7xx6 ? Sr7xx6 : F00nz6[0]); +assign Dit7v6 = (Ns7xx6 ? Sr7xx6 : Pyzmz6[0]); +assign Sr7xx6 = (R21nz6[2] ? Ih5xx6 : Ph5xx6); +assign Ih5xx6 = (~(Us7xx6 & Bt7xx6)); +assign Bt7xx6 = (~(Ge7xx6 & It7xx6)); +assign Us7xx6 = (Pt7xx6 & Wt7xx6); +assign Wt7xx6 = (Vj6xx6 | Mi6xx6); +assign Pt7xx6 = (Du7xx6 | Ku7xx6); +assign Ph5xx6 = (~(Ru7xx6 & Yu7xx6)); +assign Yu7xx6 = (Fv7xx6 & Mv7xx6); +assign Mv7xx6 = (Gf6xx6 | Fi6xx6); +assign Fv7xx6 = (Pg6xx6 | Oj6xx6); +assign Ru7xx6 = (Tv7xx6 & Aw7xx6); +assign Aw7xx6 = (Hj6xx6 | Ck6xx6); +assign Tv7xx6 = (Vj6xx6 | Nf6xx6); +assign Wht7v6 = (Zr7xx6 ? Hw7xx6 : V10nz6[1]); +assign Pht7v6 = (Gs7xx6 ? Hw7xx6 : F00nz6[1]); +assign Iht7v6 = (Ns7xx6 ? Hw7xx6 : Pyzmz6[1]); +assign Hw7xx6 = (R21nz6[2] ? Di5xx6 : Ki5xx6); +assign Di5xx6 = (~(Ow7xx6 & Vw7xx6)); +assign Vw7xx6 = (Cx7xx6 & Jx7xx6); +assign Jx7xx6 = (Sl6xx6 | Hj6xx6); +assign Cx7xx6 = (Vj6xx6 | Ko6xx6); +assign Ow7xx6 = (Qx7xx6 & Xx7xx6); +assign Xx7xx6 = (Gf6xx6 | Um6xx6); +assign Qx7xx6 = (Pg6xx6 | Bn6xx6); +assign Ki5xx6 = (~(Ey7xx6 & Ly7xx6)); +assign Ly7xx6 = (Sy7xx6 & Zy7xx6); +assign Zy7xx6 = (Gf6xx6 | Ro6xx6); +assign Sy7xx6 = (Pg6xx6 | Mp6xx6); +assign Ey7xx6 = (Gz7xx6 & Nz7xx6); +assign Nz7xx6 = (Vj6xx6 | Zl6xx6); +assign Gz7xx6 = (Hj6xx6 | Tp6xx6); +assign Bht7v6 = (Zr7xx6 ? Uz7xx6 : V10nz6[2]); +assign Ugt7v6 = (Gs7xx6 ? Uz7xx6 : F00nz6[2]); +assign Ngt7v6 = (Ns7xx6 ? Uz7xx6 : Pyzmz6[2]); +assign Uz7xx6 = (R21nz6[2] ? Yi5xx6 : Fj5xx6); +assign Yi5xx6 = (~(B08xx6 & I08xx6)); +assign I08xx6 = (P08xx6 & W08xx6); +assign W08xx6 = (Hj6xx6 | Jr6xx6); +assign P08xx6 = (Vj6xx6 | Bu6xx6); +assign B08xx6 = (D18xx6 & K18xx6); +assign K18xx6 = (Gf6xx6 | Ls6xx6); +assign D18xx6 = (Pg6xx6 | Ss6xx6); +assign Fj5xx6 = (~(R18xx6 & Y18xx6)); +assign Y18xx6 = (F28xx6 & M28xx6); +assign M28xx6 = (Gf6xx6 | Iu6xx6); +assign F28xx6 = (Pg6xx6 | Dv6xx6); +assign R18xx6 = (T28xx6 & A38xx6); +assign A38xx6 = (Vj6xx6 | Qr6xx6); +assign T28xx6 = (Hj6xx6 | Kv6xx6); +assign Ggt7v6 = (Zr7xx6 ? H38xx6 : V10nz6[3]); +assign Zft7v6 = (Gs7xx6 ? H38xx6 : F00nz6[3]); +assign Sft7v6 = (Ns7xx6 ? H38xx6 : Pyzmz6[3]); +assign H38xx6 = (R21nz6[2] ? Tj5xx6 : Ak5xx6); +assign Tj5xx6 = (~(O38xx6 & V38xx6)); +assign V38xx6 = (C48xx6 & J48xx6); +assign J48xx6 = (Hj6xx6 | Ax6xx6); +assign C48xx6 = (Vj6xx6 | Sz6xx6); +assign O38xx6 = (Q48xx6 & X48xx6); +assign X48xx6 = (Pg6xx6 | Hx6xx6); +assign Q48xx6 = (Gf6xx6 | Jy6xx6); +assign Ak5xx6 = (~(E58xx6 & L58xx6)); +assign L58xx6 = (S58xx6 & Z58xx6); +assign Z58xx6 = (Gf6xx6 | Zz6xx6); +assign S58xx6 = (Pg6xx6 | U07xx6); +assign E58xx6 = (G68xx6 & N68xx6); +assign N68xx6 = (Vj6xx6 | Cy6xx6); +assign G68xx6 = (Hj6xx6 | B17xx6); +assign Lft7v6 = (Zr7xx6 ? U68xx6 : V10nz6[4]); +assign Eft7v6 = (Gs7xx6 ? U68xx6 : F00nz6[4]); +assign Xet7v6 = (Ns7xx6 ? U68xx6 : Pyzmz6[4]); +assign U68xx6 = (R21nz6[2] ? Ok5xx6 : Vk5xx6); +assign Ok5xx6 = (~(B78xx6 & I78xx6)); +assign I78xx6 = (P78xx6 & W78xx6); +assign W78xx6 = (Hj6xx6 | R27xx6); +assign P78xx6 = (Vj6xx6 | J57xx6); +assign B78xx6 = (D88xx6 & K88xx6); +assign K88xx6 = (Pg6xx6 | Y27xx6); +assign D88xx6 = (Gf6xx6 | A47xx6); +assign Vk5xx6 = (~(R88xx6 & Y88xx6)); +assign Y88xx6 = (F98xx6 & M98xx6); +assign M98xx6 = (Gf6xx6 | Q57xx6); +assign F98xx6 = (Pg6xx6 | L67xx6); +assign R88xx6 = (T98xx6 & Aa8xx6); +assign Aa8xx6 = (Vj6xx6 | T37xx6); +assign T98xx6 = (Hj6xx6 | S67xx6); +assign Qet7v6 = (Zr7xx6 ? Ha8xx6 : V10nz6[5]); +assign Jet7v6 = (Gs7xx6 ? Ha8xx6 : F00nz6[5]); +assign Cet7v6 = (Ns7xx6 ? Ha8xx6 : Pyzmz6[5]); +assign Ha8xx6 = (R21nz6[2] ? Jl5xx6 : Ql5xx6); +assign Jl5xx6 = (~(Oa8xx6 & Va8xx6)); +assign Va8xx6 = (Cb8xx6 & Jb8xx6); +assign Jb8xx6 = (Hj6xx6 | I87xx6); +assign Cb8xx6 = (Vj6xx6 | Ab7xx6); +assign Oa8xx6 = (Qb8xx6 & Xb8xx6); +assign Xb8xx6 = (Pg6xx6 | P87xx6); +assign Qb8xx6 = (Gf6xx6 | R97xx6); +assign Ql5xx6 = (~(Ec8xx6 & Lc8xx6)); +assign Lc8xx6 = (Sc8xx6 & Zc8xx6); +assign Zc8xx6 = (Gf6xx6 | Hb7xx6); +assign Sc8xx6 = (Pg6xx6 | Cc7xx6); +assign Ec8xx6 = (Gd8xx6 & Nd8xx6); +assign Nd8xx6 = (Vj6xx6 | K97xx6); +assign Gd8xx6 = (Hj6xx6 | Jc7xx6); +assign Vdt7v6 = (Zr7xx6 ? Ud8xx6 : V10nz6[6]); +assign Odt7v6 = (Gs7xx6 ? Ud8xx6 : F00nz6[6]); +assign Hdt7v6 = (Ns7xx6 ? Ud8xx6 : Pyzmz6[6]); +assign Ud8xx6 = (R21nz6[2] ? Em5xx6 : Lm5xx6); +assign Em5xx6 = (~(Be8xx6 & Ie8xx6)); +assign Ie8xx6 = (Pe8xx6 & We8xx6); +assign We8xx6 = (~(Zd7xx6 & Df8xx6)); +assign Pe8xx6 = (Ne7xx6 | Hj6xx6); +assign Be8xx6 = (Kf8xx6 & Rf8xx6); +assign Rf8xx6 = (Vj6xx6 | Yg7xx6); +assign Kf8xx6 = (Gf6xx6 | Pf7xx6); +assign Lm5xx6 = (~(Yf8xx6 & Fg8xx6)); +assign Fg8xx6 = (Mg8xx6 & Tg8xx6); +assign Tg8xx6 = (Gf6xx6 | Fh7xx6); +assign Mg8xx6 = (Pg6xx6 | Ai7xx6); +assign Yf8xx6 = (Ah8xx6 & Hh8xx6); +assign Hh8xx6 = (Vj6xx6 | If7xx6); +assign Ah8xx6 = (Hj6xx6 | Hi7xx6); +assign Adt7v6 = (Zr7xx6 ? Oh8xx6 : V10nz6[7]); +assign Zr7xx6 = (Vh8xx6 & Ci8xx6); +assign Tct7v6 = (Gs7xx6 ? Oh8xx6 : F00nz6[7]); +assign Gs7xx6 = (Vh8xx6 & Ji8xx6); +assign Vh8xx6 = (Qi8xx6 & Xi8xx6); +assign Qi8xx6 = (!Ej8xx6); +assign Mct7v6 = (Ns7xx6 ? Oh8xx6 : Pyzmz6[7]); +assign Ns7xx6 = (Lj8xx6 & Ej8xx6); +assign Ej8xx6 = (Sj8xx6 ? Fc5xx6 : B41nz6[1]); +assign Lj8xx6 = (Ci8xx6 & Xi8xx6); +assign Xi8xx6 = (~(Zj8xx6 & Gk8xx6)); +assign Gk8xx6 = (~(Nk8xx6 & Vc6xx6)); +assign Nk8xx6 = (Gha7z6 & Uk8xx6); +assign Uk8xx6 = (~(Sj8xx6 & B35xx6)); +assign Zj8xx6 = (~(Ce5xx6 & Pm7xx6)); +assign Pm7xx6 = (!Sj8xx6); +assign Ci8xx6 = (!Ji8xx6); +assign Ji8xx6 = (Sj8xx6 ? Ef5xx6 : B41nz6[0]); +assign Oh8xx6 = (R21nz6[2] ? Tq5xx6 : Ar5xx6); +assign Tq5xx6 = (~(Bl8xx6 & Il8xx6)); +assign Il8xx6 = (Pl8xx6 & Wl8xx6); +assign Wl8xx6 = (~(Dm8xx6 & Ge7xx6)); +assign Pl8xx6 = (Vj6xx6 | Cq7xx6); +assign Bl8xx6 = (Km8xx6 & Rm8xx6); +assign Rm8xx6 = (~(Df8xx6 & Ym8xx6)); +assign Km8xx6 = (Gf6xx6 | Rn7xx6); +assign Ar5xx6 = (~(Fn8xx6 & Mn8xx6)); +assign Mn8xx6 = (Tn8xx6 & Ao8xx6); +assign Ao8xx6 = (Gf6xx6 | Jq7xx6); +assign Tn8xx6 = (Pg6xx6 | Er7xx6); +assign Fn8xx6 = (Ho8xx6 & Oo8xx6); +assign Oo8xx6 = (Vj6xx6 | To7xx6); +assign Ho8xx6 = (Hj6xx6 | Lr7xx6); +assign Fct7v6 = (Cp8xx6 ? Vo8xx6 : Zwzmz6[0]); +assign Ybt7v6 = (Jp8xx6 ? Vo8xx6 : Jvzmz6[0]); +assign Rbt7v6 = (Qp8xx6 ? Vo8xx6 : Ttzmz6[0]); +assign Vo8xx6 = (R21nz6[2] ? Js5xx6 : Qs5xx6); +assign Js5xx6 = (~(Xp8xx6 & Eq8xx6)); +assign Eq8xx6 = (Hj6xx6 | Mi6xx6); +assign Xp8xx6 = (Lq8xx6 & Sq8xx6); +assign Sq8xx6 = (Du7xx6 | Ig6xx6); +assign Ig6xx6 = (R21nz6[0] ? Gr8xx6 : Zq8xx6); +assign Zq8xx6 = (!It7xx6); +assign Lq8xx6 = (Vj6xx6 | Fi6xx6); +assign Qs5xx6 = (~(Nr8xx6 & Ur8xx6)); +assign Ur8xx6 = (Bs8xx6 & Is8xx6); +assign Is8xx6 = (Gf6xx6 | Oj6xx6); +assign Bs8xx6 = (Pg6xx6 | Ck6xx6); +assign Nr8xx6 = (Ps8xx6 & Ws8xx6); +assign Ws8xx6 = (Vj6xx6 | Wg6xx6); +assign Ps8xx6 = (Hj6xx6 | Nf6xx6); +assign Kbt7v6 = (Cp8xx6 ? Dt8xx6 : Zwzmz6[1]); +assign Dbt7v6 = (Jp8xx6 ? Dt8xx6 : Jvzmz6[1]); +assign Wat7v6 = (Qp8xx6 ? Dt8xx6 : Ttzmz6[1]); +assign Dt8xx6 = (R21nz6[2] ? Et5xx6 : Lt5xx6); +assign Et5xx6 = (~(Kt8xx6 & Rt8xx6)); +assign Rt8xx6 = (Yt8xx6 & Fu8xx6); +assign Fu8xx6 = (Sl6xx6 | Pg6xx6); +assign Yt8xx6 = (Hj6xx6 | Ko6xx6); +assign Kt8xx6 = (Mu8xx6 & Tu8xx6); +assign Tu8xx6 = (Vj6xx6 | Ro6xx6); +assign Mu8xx6 = (Gf6xx6 | Bn6xx6); +assign Lt5xx6 = (~(Av8xx6 & Hv8xx6)); +assign Hv8xx6 = (Ov8xx6 & Vv8xx6); +assign Vv8xx6 = (Gf6xx6 | Mp6xx6); +assign Ov8xx6 = (Hj6xx6 | Zl6xx6); +assign Av8xx6 = (Cw8xx6 & Jw8xx6); +assign Jw8xx6 = (Vj6xx6 | Um6xx6); +assign Cw8xx6 = (Pg6xx6 | Tp6xx6); +assign Pat7v6 = (Cp8xx6 ? Qw8xx6 : Zwzmz6[2]); +assign Iat7v6 = (Jp8xx6 ? Qw8xx6 : Jvzmz6[2]); +assign Bat7v6 = (Qp8xx6 ? Qw8xx6 : Ttzmz6[2]); +assign Qw8xx6 = (R21nz6[2] ? Zt5xx6 : Gu5xx6); +assign Zt5xx6 = (~(Xw8xx6 & Ex8xx6)); +assign Ex8xx6 = (Lx8xx6 & Sx8xx6); +assign Sx8xx6 = (Pg6xx6 | Jr6xx6); +assign Lx8xx6 = (Hj6xx6 | Bu6xx6); +assign Xw8xx6 = (Zx8xx6 & Gy8xx6); +assign Gy8xx6 = (Vj6xx6 | Iu6xx6); +assign Zx8xx6 = (Gf6xx6 | Ss6xx6); +assign Gu5xx6 = (~(Ny8xx6 & Uy8xx6)); +assign Uy8xx6 = (Bz8xx6 & Iz8xx6); +assign Iz8xx6 = (Gf6xx6 | Dv6xx6); +assign Bz8xx6 = (Hj6xx6 | Qr6xx6); +assign Ny8xx6 = (Pz8xx6 & Wz8xx6); +assign Wz8xx6 = (Vj6xx6 | Ls6xx6); +assign Pz8xx6 = (Pg6xx6 | Kv6xx6); +assign U9t7v6 = (Cp8xx6 ? D09xx6 : Zwzmz6[3]); +assign N9t7v6 = (Jp8xx6 ? D09xx6 : Jvzmz6[3]); +assign G9t7v6 = (Qp8xx6 ? D09xx6 : Ttzmz6[3]); +assign D09xx6 = (R21nz6[2] ? Uu5xx6 : Bv5xx6); +assign Uu5xx6 = (~(K09xx6 & R09xx6)); +assign R09xx6 = (Y09xx6 & F19xx6); +assign F19xx6 = (Pg6xx6 | Ax6xx6); +assign Y09xx6 = (Hj6xx6 | Sz6xx6); +assign K09xx6 = (M19xx6 & T19xx6); +assign T19xx6 = (Vj6xx6 | Zz6xx6); +assign M19xx6 = (Gf6xx6 | Hx6xx6); +assign Bv5xx6 = (~(A29xx6 & H29xx6)); +assign H29xx6 = (O29xx6 & V29xx6); +assign V29xx6 = (Gf6xx6 | U07xx6); +assign O29xx6 = (Hj6xx6 | Cy6xx6); +assign A29xx6 = (C39xx6 & J39xx6); +assign J39xx6 = (Vj6xx6 | Jy6xx6); +assign C39xx6 = (Pg6xx6 | B17xx6); +assign Z8t7v6 = (Cp8xx6 ? Q39xx6 : Zwzmz6[4]); +assign S8t7v6 = (Jp8xx6 ? Q39xx6 : Jvzmz6[4]); +assign L8t7v6 = (Qp8xx6 ? Q39xx6 : Ttzmz6[4]); +assign Q39xx6 = (R21nz6[2] ? Pv5xx6 : Wv5xx6); +assign Pv5xx6 = (~(X39xx6 & E49xx6)); +assign E49xx6 = (L49xx6 & S49xx6); +assign S49xx6 = (Pg6xx6 | R27xx6); +assign L49xx6 = (Hj6xx6 | J57xx6); +assign X39xx6 = (Z49xx6 & G59xx6); +assign G59xx6 = (Vj6xx6 | Q57xx6); +assign Z49xx6 = (Gf6xx6 | Y27xx6); +assign Wv5xx6 = (~(N59xx6 & U59xx6)); +assign U59xx6 = (B69xx6 & I69xx6); +assign I69xx6 = (Gf6xx6 | L67xx6); +assign B69xx6 = (Hj6xx6 | T37xx6); +assign N59xx6 = (P69xx6 & W69xx6); +assign W69xx6 = (Vj6xx6 | A47xx6); +assign P69xx6 = (Pg6xx6 | S67xx6); +assign E8t7v6 = (Cp8xx6 ? D79xx6 : Zwzmz6[5]); +assign X7t7v6 = (Jp8xx6 ? D79xx6 : Jvzmz6[5]); +assign Q7t7v6 = (Qp8xx6 ? D79xx6 : Ttzmz6[5]); +assign D79xx6 = (R21nz6[2] ? Kw5xx6 : Rw5xx6); +assign Kw5xx6 = (~(K79xx6 & R79xx6)); +assign R79xx6 = (Y79xx6 & F89xx6); +assign F89xx6 = (Pg6xx6 | I87xx6); +assign Y79xx6 = (Hj6xx6 | Ab7xx6); +assign K79xx6 = (M89xx6 & T89xx6); +assign T89xx6 = (Vj6xx6 | Hb7xx6); +assign M89xx6 = (Gf6xx6 | P87xx6); +assign Rw5xx6 = (~(A99xx6 & H99xx6)); +assign H99xx6 = (O99xx6 & V99xx6); +assign V99xx6 = (Gf6xx6 | Cc7xx6); +assign O99xx6 = (Hj6xx6 | K97xx6); +assign A99xx6 = (Ca9xx6 & Ja9xx6); +assign Ja9xx6 = (Vj6xx6 | R97xx6); +assign Ca9xx6 = (Pg6xx6 | Jc7xx6); +assign J7t7v6 = (Cp8xx6 ? Qa9xx6 : Zwzmz6[6]); +assign C7t7v6 = (Jp8xx6 ? Qa9xx6 : Jvzmz6[6]); +assign V6t7v6 = (Qp8xx6 ? Qa9xx6 : Ttzmz6[6]); +assign Qa9xx6 = (R21nz6[2] ? Fx5xx6 : Mx5xx6); +assign Fx5xx6 = (~(Xa9xx6 & Eb9xx6)); +assign Eb9xx6 = (Lb9xx6 & Sb9xx6); +assign Sb9xx6 = (~(Zd7xx6 & Zb9xx6)); +assign Lb9xx6 = (Ne7xx6 | Pg6xx6); +assign Xa9xx6 = (Gc9xx6 & Nc9xx6); +assign Nc9xx6 = (Hj6xx6 | Yg7xx6); +assign Gc9xx6 = (Vj6xx6 | Fh7xx6); +assign Mx5xx6 = (~(Uc9xx6 & Bd9xx6)); +assign Bd9xx6 = (Id9xx6 & Pd9xx6); +assign Pd9xx6 = (Gf6xx6 | Ai7xx6); +assign Id9xx6 = (Hj6xx6 | If7xx6); +assign Uc9xx6 = (Wd9xx6 & De9xx6); +assign De9xx6 = (Vj6xx6 | Pf7xx6); +assign Wd9xx6 = (Pg6xx6 | Hi7xx6); +assign O6t7v6 = (Cp8xx6 ? Ke9xx6 : Zwzmz6[7]); +assign Cp8xx6 = (Re9xx6 & Ye9xx6); +assign H6t7v6 = (Jp8xx6 ? Ke9xx6 : Jvzmz6[7]); +assign Jp8xx6 = (Re9xx6 & Ff9xx6); +assign Re9xx6 = (Mf9xx6 & Tf9xx6); +assign Mf9xx6 = (!Ag9xx6); +assign A6t7v6 = (Qp8xx6 ? Ke9xx6 : Ttzmz6[7]); +assign Qp8xx6 = (Hg9xx6 & Ag9xx6); +assign Ag9xx6 = (Og9xx6 ? Fc5xx6 : B41nz6[1]); +assign Hg9xx6 = (Ye9xx6 & Tf9xx6); +assign Tf9xx6 = (~(Vg9xx6 & Ch9xx6)); +assign Ch9xx6 = (~(Jh9xx6 & Qh9xx6)); +assign Qh9xx6 = (Oha7z6 & Xh9xx6); +assign Xh9xx6 = (~(Og9xx6 & B35xx6)); +assign Oha7z6 = (~(Ei9xx6 | Li9xx6)); +assign Li9xx6 = (~(Wsc7v6 | T51nz6[0])); +assign Jh9xx6 = (Gha7z6 & Vc6xx6); +assign Vc6xx6 = (Mho7v6 & Fftnv6); +assign Gha7z6 = (Si9xx6 ^ Ei9xx6); +assign Si9xx6 = (Zi9xx6 ^ P26xx6); +assign Vg9xx6 = (~(Ce5xx6 & Gj9xx6)); +assign Gj9xx6 = (!Og9xx6); +assign Ye9xx6 = (!Ff9xx6); +assign Ff9xx6 = (Og9xx6 ? Ef5xx6 : B41nz6[0]); +assign Og9xx6 = (Sj8xx6 & T51nz6[0]); +assign Sj8xx6 = (T51nz6[2] & T51nz6[1]); +assign Ke9xx6 = (R21nz6[2] ? K36xx6 : R36xx6); +assign K36xx6 = (~(Nj9xx6 & Uj9xx6)); +assign Uj9xx6 = (Vj6xx6 | Jq7xx6); +assign Nj9xx6 = (Bk9xx6 & Ik9xx6); +assign Ik9xx6 = (Du7xx6 | Mo7xx6); +assign Mo7xx6 = (Pk9xx6 & Wk9xx6); +assign Wk9xx6 = (~(Dl9xx6 & Kl9xx6)); +assign Pk9xx6 = (~(R21nz6[0] & Ym8xx6)); +assign Bk9xx6 = (Hj6xx6 | Cq7xx6); +assign R36xx6 = (~(Rl9xx6 & Yl9xx6)); +assign Yl9xx6 = (Fm9xx6 & Mm9xx6); +assign Mm9xx6 = (Gf6xx6 | Er7xx6); +assign Fm9xx6 = (Hj6xx6 | To7xx6); +assign Rl9xx6 = (Tm9xx6 & An9xx6); +assign An9xx6 = (Pg6xx6 | Lr7xx6); +assign Tm9xx6 = (Vj6xx6 | Rn7xx6); +assign T5t7v6 = (I35xx6 ? Dszmz6[0] : Hn9xx6); +assign M5t7v6 = (N25xx6 ? Nqzmz6[0] : Hn9xx6); +assign F5t7v6 = (On9xx6 ? Hn9xx6 : Xozmz6[0]); +assign Hn9xx6 = (R21nz6[2] ? A56xx6 : H56xx6); +assign A56xx6 = (~(Vn9xx6 & Co9xx6)); +assign Co9xx6 = (Jo9xx6 & Qo9xx6); +assign Qo9xx6 = (Hj6xx6 | Fi6xx6); +assign Fi6xx6 = (Xo9xx6 & Ep9xx6); +assign Ep9xx6 = (~(Gnzmz6[8] & Lp9xx6)); +assign Xo9xx6 = (Sp9xx6 & Zp9xx6); +assign Sp9xx6 = (~(Gq9xx6 & Jezmz6[16])); +assign Gq9xx6 = (Dl9xx6 & Nq9xx6); +assign Jo9xx6 = (Pg6xx6 | Mi6xx6); +assign Mi6xx6 = (Uq9xx6 & Br9xx6); +assign Br9xx6 = (~(Gnzmz6[0] & Lp9xx6)); +assign Uq9xx6 = (Ir9xx6 & Zp9xx6); +assign Ir9xx6 = (~(Jezmz6[8] & Pr9xx6)); +assign Vn9xx6 = (Wr9xx6 & Ds9xx6); +assign Ds9xx6 = (Vj6xx6 | Oj6xx6); +assign Oj6xx6 = (Ks9xx6 & Rs9xx6); +assign Rs9xx6 = (Ys9xx6 & Ft9xx6); +assign Ft9xx6 = (~(Jezmz6[8] & Mt9xx6)); +assign Ys9xx6 = (~(Tt9xx6 & Jezmz6[24])); +assign Tt9xx6 = (Dl9xx6 & Au9xx6); +assign Ks9xx6 = (Hu9xx6 & Ou9xx6); +assign Ou9xx6 = (~(Vu9xx6 & Cv9xx6)); +assign Hu9xx6 = (~(Gnzmz6[16] & Lp9xx6)); +assign Wr9xx6 = (~(Zb9xx6 & It7xx6)); +assign H56xx6 = (~(Jv9xx6 & Qv9xx6)); +assign Qv9xx6 = (Pg6xx6 | Nf6xx6); +assign Nf6xx6 = (Xv9xx6 & Ew9xx6); +assign Ew9xx6 = (~(Jezmz6[24] & Mt9xx6)); +assign Xv9xx6 = (Lw9xx6 & Sw9xx6); +assign Sw9xx6 = (~(Zw9xx6 & Cv9xx6)); +assign Lw9xx6 = (~(Gnzmz6[32] & Lp9xx6)); +assign Jv9xx6 = (Gx9xx6 & Nx9xx6); +assign Nx9xx6 = (Gf6xx6 | Ck6xx6); +assign Ck6xx6 = (Ux9xx6 & By9xx6); +assign By9xx6 = (Iy9xx6 & Py9xx6); +assign Py9xx6 = (~(Jezmz6[16] & Mt9xx6)); +assign Iy9xx6 = (~(Wy9xx6 & Jezmz6[32])); +assign Wy9xx6 = (Dl9xx6 & Dz9xx6); +assign Ux9xx6 = (Kz9xx6 & Rz9xx6); +assign Rz9xx6 = (~(Yz9xx6 & Cv9xx6)); +assign Kz9xx6 = (~(Gnzmz6[24] & Lp9xx6)); +assign Gx9xx6 = (Ku7xx6 | R21nz6[1]); +assign Ku7xx6 = (R21nz6[0] ? Wg6xx6 : Gr8xx6); +assign Wg6xx6 = (F0axx6 & M0axx6); +assign M0axx6 = (~(T0axx6 & Cv9xx6)); +assign Cv9xx6 = (Pazmz6[4] & Dl9xx6); +assign F0axx6 = (~(Gnzmz6[40] & Lp9xx6)); +assign Gr8xx6 = (~(Cfc7v6 & Lp9xx6)); +assign Y4t7v6 = (I35xx6 ? Dszmz6[1] : A1axx6); +assign R4t7v6 = (N25xx6 ? Nqzmz6[1] : A1axx6); +assign K4t7v6 = (On9xx6 ? A1axx6 : Xozmz6[1]); +assign A1axx6 = (R21nz6[2] ? V56xx6 : C66xx6); +assign V56xx6 = (~(H1axx6 & O1axx6)); +assign O1axx6 = (V1axx6 & C2axx6); +assign C2axx6 = (Sl6xx6 | Gf6xx6); +assign Sl6xx6 = (~(J2axx6 & Q2axx6)); +assign Q2axx6 = (~(X2axx6 & E3axx6)); +assign E3axx6 = (~(Dl9xx6 & L3axx6)); +assign L3axx6 = (S3axx6 | Jezmz6[1]); +assign S3axx6 = (~(Ro87v6 | Z3axx6)); +assign J2axx6 = (G4axx6 | N4axx6); +assign V1axx6 = (Pg6xx6 | Ko6xx6); +assign Ko6xx6 = (U4axx6 & B5axx6); +assign B5axx6 = (~(Gnzmz6[1] & Lp9xx6)); +assign U4axx6 = (~(I5axx6 | P5axx6)); +assign I5axx6 = (W5axx6 & Dl9xx6); +assign W5axx6 = (D6axx6 & K6axx6); +assign K6axx6 = (R6axx6 | Jezmz6[9]); +assign R6axx6 = (~(Y6axx6 | Z3axx6)); +assign D6axx6 = (~(Z3axx6 & F7axx6)); +assign H1axx6 = (M7axx6 & T7axx6); +assign T7axx6 = (Hj6xx6 | Ro6xx6); +assign Ro6xx6 = (A8axx6 & H8axx6); +assign H8axx6 = (~(Dl9xx6 & O8axx6)); +assign O8axx6 = (~(V8axx6 & C9axx6)); +assign C9axx6 = (~(Pazmz6[0] & J9axx6)); +assign V8axx6 = (Q9axx6 & X9axx6); +assign X9axx6 = (Z3axx6 | Eaaxx6); +assign Q9axx6 = (~(Jezmz6[17] & Nq9xx6)); +assign A8axx6 = (Laaxx6 & Saaxx6); +assign Saaxx6 = (~(Zaaxx6 & Gbaxx6)); +assign Gbaxx6 = (P5axx6 | Gnzmz6[9]); +assign Laaxx6 = (~(Jezmz6[1] & Mt9xx6)); +assign M7axx6 = (Vj6xx6 | Mp6xx6); +assign Mp6xx6 = (Nbaxx6 & Ubaxx6); +assign Ubaxx6 = (~(Dl9xx6 & Bcaxx6)); +assign Bcaxx6 = (~(Icaxx6 & Pcaxx6)); +assign Pcaxx6 = (Wcaxx6 & Ddaxx6); +assign Ddaxx6 = (Kdaxx6 | Z3axx6); +assign Wcaxx6 = (~(Jezmz6[25] & Au9xx6)); +assign Icaxx6 = (Rdaxx6 & Ydaxx6); +assign Ydaxx6 = (~(Pazmz6[0] & Feaxx6)); +assign Rdaxx6 = (~(Pazmz6[5] & Vu9xx6)); +assign Nbaxx6 = (Meaxx6 & Teaxx6); +assign Teaxx6 = (~(Zaaxx6 & Afaxx6)); +assign Afaxx6 = (P5axx6 | Gnzmz6[17]); +assign Meaxx6 = (~(Jezmz6[9] & Mt9xx6)); +assign C66xx6 = (~(Hfaxx6 & Ofaxx6)); +assign Ofaxx6 = (Vfaxx6 & Cgaxx6); +assign Cgaxx6 = (Pg6xx6 | Zl6xx6); +assign Zl6xx6 = (Jgaxx6 & Qgaxx6); +assign Qgaxx6 = (~(Dl9xx6 & Xgaxx6)); +assign Xgaxx6 = (~(Ehaxx6 & Lhaxx6)); +assign Lhaxx6 = (~(Pazmz6[5] & Zw9xx6)); +assign Ehaxx6 = (Shaxx6 & Zhaxx6); +assign Zhaxx6 = (Z3axx6 | Giaxx6); +assign Shaxx6 = (~(Pazmz6[0] & Niaxx6)); +assign Jgaxx6 = (Uiaxx6 & Bjaxx6); +assign Bjaxx6 = (~(Zaaxx6 & Ijaxx6)); +assign Ijaxx6 = (P5axx6 | Gnzmz6[33]); +assign Uiaxx6 = (~(Jezmz6[25] & Mt9xx6)); +assign Vfaxx6 = (Hj6xx6 | Um6xx6); +assign Um6xx6 = (Pjaxx6 & Wjaxx6); +assign Wjaxx6 = (Dkaxx6 & Kkaxx6); +assign Dkaxx6 = (~(Gnzmz6[41] & Lp9xx6)); +assign Pjaxx6 = (Rkaxx6 & Ykaxx6); +assign Ykaxx6 = (Flaxx6 | Z3axx6); +assign Rkaxx6 = (~(Mlaxx6 & Dl9xx6)); +assign Mlaxx6 = (Tlaxx6 & Amaxx6); +assign Amaxx6 = (~(Hmaxx6 & Omaxx6)); +assign Omaxx6 = (!Pazmz6[5]); +assign Hmaxx6 = (Vmaxx6 | Z3axx6); +assign Tlaxx6 = (~(Z3axx6 & Cnaxx6)); +assign Hfaxx6 = (Jnaxx6 & Qnaxx6); +assign Qnaxx6 = (Vj6xx6 | Bn6xx6); +assign Bn6xx6 = (Xnaxx6 & Eoaxx6); +assign Eoaxx6 = (~(Ym8xx6 & G4axx6)); +assign Xnaxx6 = (~(Wgc7v6 & Lp9xx6)); +assign Jnaxx6 = (Gf6xx6 | Tp6xx6); +assign Tp6xx6 = (Loaxx6 & Soaxx6); +assign Soaxx6 = (~(Dl9xx6 & Zoaxx6)); +assign Zoaxx6 = (~(Gpaxx6 & Npaxx6)); +assign Npaxx6 = (Upaxx6 & Bqaxx6); +assign Bqaxx6 = (~(G4axx6 & Iqaxx6)); +assign Upaxx6 = (~(Pazmz6[5] & Yz9xx6)); +assign Gpaxx6 = (Pqaxx6 & Wqaxx6); +assign Wqaxx6 = (~(Pazmz6[0] & Draxx6)); +assign Pqaxx6 = (~(Jezmz6[33] & Dz9xx6)); +assign Loaxx6 = (Kraxx6 & Rraxx6); +assign Rraxx6 = (~(Zaaxx6 & Yraxx6)); +assign Yraxx6 = (P5axx6 | Gnzmz6[25]); +assign Zaaxx6 = (P5axx6 | Lp9xx6); +assign P5axx6 = (Fsaxx6 & G4axx6); +assign G4axx6 = (!Z3axx6); +assign Kraxx6 = (~(Jezmz6[17] & Mt9xx6)); +assign D4t7v6 = (I35xx6 ? Dszmz6[2] : Msaxx6); +assign W3t7v6 = (N25xx6 ? Nqzmz6[2] : Msaxx6); +assign P3t7v6 = (On9xx6 ? Msaxx6 : Xozmz6[2]); +assign Msaxx6 = (R21nz6[2] ? Q66xx6 : X66xx6); +assign Q66xx6 = (~(Tsaxx6 & Ataxx6)); +assign Ataxx6 = (Htaxx6 & Otaxx6); +assign Otaxx6 = (Gf6xx6 | Jr6xx6); +assign Jr6xx6 = (Vtaxx6 & Cuaxx6); +assign Vtaxx6 = (~(Juaxx6 & Dl9xx6)); +assign Juaxx6 = (Quaxx6 & Xuaxx6); +assign Xuaxx6 = (~(Evaxx6 & Lvaxx6)); +assign Lvaxx6 = (~(Jezmz6[2] & Svaxx6)); +assign Svaxx6 = (~(F7axx6 & Zvaxx6)); +assign Quaxx6 = (Zvaxx6 | Jezmz6[2]); +assign Htaxx6 = (Pg6xx6 | Bu6xx6); +assign Bu6xx6 = (Gwaxx6 & Nwaxx6); +assign Nwaxx6 = (~(Gnzmz6[2] & Lp9xx6)); +assign Gwaxx6 = (~(Uwaxx6 | Bxaxx6)); +assign Uwaxx6 = (Ixaxx6 & Dl9xx6); +assign Ixaxx6 = (Pxaxx6 & Wxaxx6); +assign Wxaxx6 = (Dyaxx6 | Jezmz6[10]); +assign Dyaxx6 = (~(Y6axx6 | Evaxx6)); +assign Pxaxx6 = (~(Evaxx6 & F7axx6)); +assign Tsaxx6 = (Kyaxx6 & Ryaxx6); +assign Ryaxx6 = (Hj6xx6 | Iu6xx6); +assign Iu6xx6 = (Yyaxx6 & Fzaxx6); +assign Fzaxx6 = (~(Dl9xx6 & Mzaxx6)); +assign Mzaxx6 = (~(Tzaxx6 & A0bxx6)); +assign A0bxx6 = (~(Pazmz6[1] & J9axx6)); +assign Tzaxx6 = (H0bxx6 & O0bxx6); +assign O0bxx6 = (Evaxx6 | Eaaxx6); +assign H0bxx6 = (~(Jezmz6[18] & Nq9xx6)); +assign Yyaxx6 = (V0bxx6 & C1bxx6); +assign C1bxx6 = (~(J1bxx6 & Q1bxx6)); +assign Q1bxx6 = (Bxaxx6 | Gnzmz6[10]); +assign V0bxx6 = (~(Jezmz6[2] & Mt9xx6)); +assign Kyaxx6 = (Vj6xx6 | Dv6xx6); +assign Dv6xx6 = (X1bxx6 & E2bxx6); +assign E2bxx6 = (~(Dl9xx6 & L2bxx6)); +assign L2bxx6 = (~(S2bxx6 & Z2bxx6)); +assign Z2bxx6 = (G3bxx6 & N3bxx6); +assign N3bxx6 = (Kdaxx6 | Evaxx6); +assign G3bxx6 = (~(Jezmz6[26] & Au9xx6)); +assign S2bxx6 = (U3bxx6 & B4bxx6); +assign B4bxx6 = (~(Pazmz6[1] & Feaxx6)); +assign U3bxx6 = (~(Pazmz6[6] & Vu9xx6)); +assign X1bxx6 = (I4bxx6 & P4bxx6); +assign P4bxx6 = (~(J1bxx6 & W4bxx6)); +assign W4bxx6 = (Bxaxx6 | Gnzmz6[18]); +assign I4bxx6 = (~(Jezmz6[10] & Mt9xx6)); +assign X66xx6 = (~(D5bxx6 & K5bxx6)); +assign K5bxx6 = (R5bxx6 & Y5bxx6); +assign Y5bxx6 = (Pg6xx6 | Qr6xx6); +assign Qr6xx6 = (F6bxx6 & M6bxx6); +assign M6bxx6 = (~(Dl9xx6 & T6bxx6)); +assign T6bxx6 = (~(A7bxx6 & H7bxx6)); +assign H7bxx6 = (~(Pazmz6[6] & Zw9xx6)); +assign A7bxx6 = (O7bxx6 & V7bxx6); +assign V7bxx6 = (Evaxx6 | Giaxx6); +assign O7bxx6 = (~(Pazmz6[1] & Niaxx6)); +assign F6bxx6 = (C8bxx6 & J8bxx6); +assign J8bxx6 = (~(J1bxx6 & Q8bxx6)); +assign Q8bxx6 = (Bxaxx6 | Gnzmz6[34]); +assign C8bxx6 = (~(Jezmz6[26] & Mt9xx6)); +assign R5bxx6 = (Hj6xx6 | Ls6xx6); +assign Ls6xx6 = (X8bxx6 & E9bxx6); +assign E9bxx6 = (L9bxx6 & Kkaxx6); +assign L9bxx6 = (~(Gnzmz6[42] & Lp9xx6)); +assign X8bxx6 = (S9bxx6 & Z9bxx6); +assign Z9bxx6 = (Flaxx6 | Evaxx6); +assign S9bxx6 = (~(Gabxx6 & Dl9xx6)); +assign Gabxx6 = (Nabxx6 & Uabxx6); +assign Uabxx6 = (~(Bbbxx6 & Ibbxx6)); +assign Bbbxx6 = (Vmaxx6 | Evaxx6); +assign Nabxx6 = (~(Evaxx6 & Cnaxx6)); +assign Evaxx6 = (!Pbbxx6); +assign D5bxx6 = (Wbbxx6 & Dcbxx6); +assign Dcbxx6 = (Vj6xx6 | Ss6xx6); +assign Ss6xx6 = (Kcbxx6 & Rcbxx6); +assign Rcbxx6 = (~(Ym8xx6 & Pbbxx6)); +assign Kcbxx6 = (~(Qic7v6 & Lp9xx6)); +assign Wbbxx6 = (Gf6xx6 | Kv6xx6); +assign Kv6xx6 = (Ycbxx6 & Fdbxx6); +assign Fdbxx6 = (~(Dl9xx6 & Mdbxx6)); +assign Mdbxx6 = (~(Tdbxx6 & Aebxx6)); +assign Aebxx6 = (Hebxx6 & Oebxx6); +assign Oebxx6 = (~(Pbbxx6 & Iqaxx6)); +assign Hebxx6 = (~(Pazmz6[6] & Yz9xx6)); +assign Tdbxx6 = (Vebxx6 & Cfbxx6); +assign Cfbxx6 = (~(Pazmz6[1] & Draxx6)); +assign Vebxx6 = (~(Jezmz6[34] & Dz9xx6)); +assign Ycbxx6 = (Jfbxx6 & Qfbxx6); +assign Qfbxx6 = (~(J1bxx6 & Xfbxx6)); +assign Xfbxx6 = (Bxaxx6 | Gnzmz6[26]); +assign J1bxx6 = (Bxaxx6 | Lp9xx6); +assign Bxaxx6 = (Fsaxx6 & Pbbxx6); +assign Pbbxx6 = (~(Egbxx6 & Lgbxx6)); +assign Egbxx6 = (~(Lczmz6[0] & Sgbxx6)); +assign Jfbxx6 = (~(Jezmz6[18] & Mt9xx6)); +assign I3t7v6 = (I35xx6 ? Dszmz6[3] : Zgbxx6); +assign B3t7v6 = (N25xx6 ? Nqzmz6[3] : Zgbxx6); +assign U2t7v6 = (On9xx6 ? Zgbxx6 : Xozmz6[3]); +assign Zgbxx6 = (R21nz6[2] ? L76xx6 : S76xx6); +assign L76xx6 = (~(Ghbxx6 & Nhbxx6)); +assign Nhbxx6 = (Uhbxx6 & Bibxx6); +assign Bibxx6 = (Gf6xx6 | Ax6xx6); +assign Ax6xx6 = (Iibxx6 & Pibxx6); +assign Pibxx6 = (~(Wibxx6 & Djbxx6)); +assign Iibxx6 = (Kjbxx6 & Zp9xx6); +assign Kjbxx6 = (~(Jezmz6[3] & It7xx6)); +assign Uhbxx6 = (Pg6xx6 | Sz6xx6); +assign Sz6xx6 = (Rjbxx6 & Yjbxx6); +assign Yjbxx6 = (~(Fkbxx6 | Mkbxx6)); +assign Fkbxx6 = (Jezmz6[11] & Pr9xx6); +assign Rjbxx6 = (Tkbxx6 & Albxx6); +assign Albxx6 = (~(Gnzmz6[3] & Lp9xx6)); +assign Tkbxx6 = (~(Hlbxx6 & Djbxx6)); +assign Ghbxx6 = (Olbxx6 & Vlbxx6); +assign Vlbxx6 = (Hj6xx6 | Zz6xx6); +assign Zz6xx6 = (Cmbxx6 & Jmbxx6); +assign Jmbxx6 = (~(Dl9xx6 & Qmbxx6)); +assign Qmbxx6 = (~(Xmbxx6 & Enbxx6)); +assign Enbxx6 = (~(Pazmz6[2] & J9axx6)); +assign Xmbxx6 = (Lnbxx6 & Snbxx6); +assign Snbxx6 = (Znbxx6 | Eaaxx6); +assign Lnbxx6 = (~(Jezmz6[19] & Nq9xx6)); +assign Cmbxx6 = (Gobxx6 & Nobxx6); +assign Nobxx6 = (~(Uobxx6 & Bpbxx6)); +assign Bpbxx6 = (Mkbxx6 | Gnzmz6[11]); +assign Gobxx6 = (~(Jezmz6[3] & Mt9xx6)); +assign Olbxx6 = (Vj6xx6 | U07xx6); +assign U07xx6 = (Ipbxx6 & Ppbxx6); +assign Ppbxx6 = (~(Dl9xx6 & Wpbxx6)); +assign Wpbxx6 = (~(Dqbxx6 & Kqbxx6)); +assign Kqbxx6 = (Rqbxx6 & Yqbxx6); +assign Yqbxx6 = (Kdaxx6 | Znbxx6); +assign Rqbxx6 = (~(Jezmz6[27] & Au9xx6)); +assign Dqbxx6 = (Frbxx6 & Mrbxx6); +assign Mrbxx6 = (~(Pazmz6[2] & Feaxx6)); +assign Frbxx6 = (~(Pazmz6[7] & Vu9xx6)); +assign Ipbxx6 = (Trbxx6 & Asbxx6); +assign Asbxx6 = (~(Uobxx6 & Hsbxx6)); +assign Hsbxx6 = (Mkbxx6 | Gnzmz6[19]); +assign Trbxx6 = (~(Jezmz6[11] & Mt9xx6)); +assign S76xx6 = (~(Osbxx6 & Vsbxx6)); +assign Vsbxx6 = (Ctbxx6 & Jtbxx6); +assign Jtbxx6 = (Vj6xx6 | Hx6xx6); +assign Hx6xx6 = (Qtbxx6 & Xtbxx6); +assign Xtbxx6 = (~(Ym8xx6 & Djbxx6)); +assign Qtbxx6 = (~(Kkc7v6 & Lp9xx6)); +assign Ctbxx6 = (Pg6xx6 | Cy6xx6); +assign Cy6xx6 = (Eubxx6 & Lubxx6); +assign Lubxx6 = (~(Dl9xx6 & Subxx6)); +assign Subxx6 = (~(Zubxx6 & Gvbxx6)); +assign Gvbxx6 = (~(Pazmz6[7] & Zw9xx6)); +assign Zubxx6 = (Nvbxx6 & Uvbxx6); +assign Uvbxx6 = (Znbxx6 | Giaxx6); +assign Nvbxx6 = (~(Pazmz6[2] & Niaxx6)); +assign Eubxx6 = (Bwbxx6 & Iwbxx6); +assign Iwbxx6 = (~(Uobxx6 & Pwbxx6)); +assign Pwbxx6 = (Mkbxx6 | Gnzmz6[35]); +assign Bwbxx6 = (~(Jezmz6[27] & Mt9xx6)); +assign Osbxx6 = (Wwbxx6 & Dxbxx6); +assign Dxbxx6 = (Hj6xx6 | Jy6xx6); +assign Jy6xx6 = (Kxbxx6 & Rxbxx6); +assign Rxbxx6 = (~(Gnzmz6[43] & Lp9xx6)); +assign Kxbxx6 = (Yxbxx6 & Fybxx6); +assign Fybxx6 = (~(Mybxx6 & Dl9xx6)); +assign Mybxx6 = (Tybxx6 & Azbxx6); +assign Azbxx6 = (~(Hzbxx6 & Ozbxx6)); +assign Ozbxx6 = (!Pazmz6[7]); +assign Hzbxx6 = (Vmaxx6 | Znbxx6); +assign Tybxx6 = (~(Znbxx6 & Cnaxx6)); +assign Yxbxx6 = (~(Vzbxx6 & Djbxx6)); +assign Wwbxx6 = (Gf6xx6 | B17xx6); +assign B17xx6 = (C0cxx6 & J0cxx6); +assign J0cxx6 = (~(Dl9xx6 & Q0cxx6)); +assign Q0cxx6 = (~(X0cxx6 & E1cxx6)); +assign E1cxx6 = (L1cxx6 & S1cxx6); +assign S1cxx6 = (~(Djbxx6 & Iqaxx6)); +assign L1cxx6 = (~(Pazmz6[7] & Yz9xx6)); +assign X0cxx6 = (Z1cxx6 & G2cxx6); +assign G2cxx6 = (~(Pazmz6[2] & Draxx6)); +assign Z1cxx6 = (~(Jezmz6[35] & Dz9xx6)); +assign C0cxx6 = (N2cxx6 & U2cxx6); +assign U2cxx6 = (~(Uobxx6 & B3cxx6)); +assign B3cxx6 = (Mkbxx6 | Gnzmz6[27]); +assign Uobxx6 = (Mkbxx6 | Lp9xx6); +assign Mkbxx6 = (Fsaxx6 & Djbxx6); +assign Djbxx6 = (!Znbxx6); +assign Znbxx6 = (Z3axx6 & Tusnv6); +assign Z3axx6 = (Lgbxx6 & Sgbxx6); +assign Lgbxx6 = (~(Ifb7v6 & Fgzmz6[0])); +assign N2cxx6 = (~(Jezmz6[19] & Mt9xx6)); +assign N2t7v6 = (I35xx6 ? Dszmz6[4] : I3cxx6); +assign G2t7v6 = (N25xx6 ? Nqzmz6[4] : I3cxx6); +assign Z1t7v6 = (On9xx6 ? I3cxx6 : Xozmz6[4]); +assign I3cxx6 = (R21nz6[2] ? G86xx6 : N86xx6); +assign G86xx6 = (~(P3cxx6 & W3cxx6)); +assign W3cxx6 = (D4cxx6 & K4cxx6); +assign K4cxx6 = (Gf6xx6 | R27xx6); +assign R27xx6 = (R4cxx6 & Y4cxx6); +assign Y4cxx6 = (~(Wibxx6 & Lczmz6[2])); +assign R4cxx6 = (F5cxx6 & Cuaxx6); +assign F5cxx6 = (~(Jezmz6[4] & It7xx6)); +assign D4cxx6 = (Pg6xx6 | J57xx6); +assign J57xx6 = (M5cxx6 & T5cxx6); +assign T5cxx6 = (~(A6cxx6 | H6cxx6)); +assign A6cxx6 = (Jezmz6[12] & Pr9xx6); +assign M5cxx6 = (O6cxx6 & V6cxx6); +assign V6cxx6 = (~(Gnzmz6[4] & Lp9xx6)); +assign O6cxx6 = (~(Hlbxx6 & Lczmz6[2])); +assign P3cxx6 = (C7cxx6 & J7cxx6); +assign J7cxx6 = (Hj6xx6 | Q57xx6); +assign Q57xx6 = (Q7cxx6 & X7cxx6); +assign X7cxx6 = (~(Dl9xx6 & E8cxx6)); +assign E8cxx6 = (~(L8cxx6 & S8cxx6)); +assign S8cxx6 = (Z8cxx6 | Eaaxx6); +assign L8cxx6 = (G9cxx6 & N9cxx6); +assign N9cxx6 = (~(Jezmz6[20] & Nq9xx6)); +assign G9cxx6 = (~(Pazmz6[3] & J9axx6)); +assign Q7cxx6 = (U9cxx6 & Bacxx6); +assign Bacxx6 = (~(Iacxx6 & Pacxx6)); +assign Pacxx6 = (H6cxx6 | Gnzmz6[12]); +assign U9cxx6 = (~(Jezmz6[4] & Mt9xx6)); +assign C7cxx6 = (Vj6xx6 | L67xx6); +assign L67xx6 = (Wacxx6 & Dbcxx6); +assign Dbcxx6 = (~(Dl9xx6 & Kbcxx6)); +assign Kbcxx6 = (~(Rbcxx6 & Ybcxx6)); +assign Ybcxx6 = (Fccxx6 & Mccxx6); +assign Mccxx6 = (~(Jezmz6[28] & Au9xx6)); +assign Fccxx6 = (~(Pazmz6[3] & Feaxx6)); +assign Rbcxx6 = (Tccxx6 & Adcxx6); +assign Adcxx6 = (~(Pazmz6[8] & Vu9xx6)); +assign Tccxx6 = (Z8cxx6 | Kdaxx6); +assign Wacxx6 = (Hdcxx6 & Odcxx6); +assign Odcxx6 = (~(Iacxx6 & Vdcxx6)); +assign Vdcxx6 = (H6cxx6 | Gnzmz6[20]); +assign Hdcxx6 = (~(Jezmz6[12] & Mt9xx6)); +assign N86xx6 = (~(Cecxx6 & Jecxx6)); +assign Jecxx6 = (Qecxx6 & Xecxx6); +assign Xecxx6 = (Vj6xx6 | Y27xx6); +assign Y27xx6 = (Efcxx6 & Z8cxx6); +assign Efcxx6 = (~(Emc7v6 & Lp9xx6)); +assign Qecxx6 = (Pg6xx6 | T37xx6); +assign T37xx6 = (Lfcxx6 & Sfcxx6); +assign Sfcxx6 = (~(Dl9xx6 & Zfcxx6)); +assign Zfcxx6 = (~(Ggcxx6 & Ngcxx6)); +assign Ngcxx6 = (~(Pazmz6[8] & Zw9xx6)); +assign Zw9xx6 = (!Ugcxx6); +assign Ggcxx6 = (Bhcxx6 & Ihcxx6); +assign Ihcxx6 = (~(Pazmz6[3] & Niaxx6)); +assign Bhcxx6 = (Z8cxx6 | Giaxx6); +assign Lfcxx6 = (Phcxx6 & Whcxx6); +assign Whcxx6 = (~(Iacxx6 & Dicxx6)); +assign Dicxx6 = (H6cxx6 | Gnzmz6[36]); +assign Phcxx6 = (~(Jezmz6[28] & Mt9xx6)); +assign Cecxx6 = (Kicxx6 & Ricxx6); +assign Ricxx6 = (Hj6xx6 | A47xx6); +assign A47xx6 = (Yicxx6 & Fjcxx6); +assign Fjcxx6 = (Mjcxx6 & Kkaxx6); +assign Mjcxx6 = (~(Gnzmz6[44] & Lp9xx6)); +assign Yicxx6 = (Tjcxx6 & Akcxx6); +assign Akcxx6 = (~(Lczmz6[2] & Hkcxx6)); +assign Tjcxx6 = (~(Okcxx6 & Pazmz6[8])); +assign Okcxx6 = (T0axx6 & Dl9xx6); +assign Kicxx6 = (Gf6xx6 | S67xx6); +assign S67xx6 = (Vkcxx6 & Clcxx6); +assign Clcxx6 = (~(Dl9xx6 & Jlcxx6)); +assign Jlcxx6 = (~(Qlcxx6 & Xlcxx6)); +assign Xlcxx6 = (Emcxx6 & Lmcxx6); +assign Emcxx6 = (~(Pazmz6[8] & Yz9xx6)); +assign Qlcxx6 = (Smcxx6 & Zmcxx6); +assign Zmcxx6 = (~(Pazmz6[3] & Draxx6)); +assign Smcxx6 = (~(Lczmz6[2] & Iqaxx6)); +assign Vkcxx6 = (Gncxx6 & Nncxx6); +assign Nncxx6 = (~(Iacxx6 & Uncxx6)); +assign Uncxx6 = (H6cxx6 | Gnzmz6[28]); +assign Iacxx6 = (H6cxx6 | Lp9xx6); +assign H6cxx6 = (Fsaxx6 & Lczmz6[2]); +assign Gncxx6 = (~(Jezmz6[20] & Mt9xx6)); +assign S1t7v6 = (I35xx6 ? Dszmz6[5] : Bocxx6); +assign L1t7v6 = (N25xx6 ? Nqzmz6[5] : Bocxx6); +assign E1t7v6 = (On9xx6 ? Bocxx6 : Xozmz6[5]); +assign Bocxx6 = (R21nz6[2] ? B96xx6 : I96xx6); +assign B96xx6 = (~(Iocxx6 & Pocxx6)); +assign Pocxx6 = (Wocxx6 & Dpcxx6); +assign Dpcxx6 = (Gf6xx6 | I87xx6); +assign I87xx6 = (Kpcxx6 & Rpcxx6); +assign Rpcxx6 = (~(Wibxx6 & Lczmz6[3])); +assign Wibxx6 = (~(Ypcxx6 | Ro87v6)); +assign Kpcxx6 = (Fqcxx6 & Cuaxx6); +assign Fqcxx6 = (~(Jezmz6[5] & It7xx6)); +assign It7xx6 = (Pr9xx6 | Mqcxx6); +assign Mqcxx6 = (Dl9xx6 & Ro87v6); +assign Wocxx6 = (Pg6xx6 | Ab7xx6); +assign Ab7xx6 = (Tqcxx6 & Arcxx6); +assign Arcxx6 = (Hrcxx6 & Orcxx6); +assign Orcxx6 = (~(Gnzmz6[5] & Lp9xx6)); +assign Hrcxx6 = (Vrcxx6 & Cscxx6); +assign Vrcxx6 = (~(Jezmz6[13] & Pr9xx6)); +assign Pr9xx6 = (Dl9xx6 & Jscxx6); +assign Jscxx6 = (!F7axx6); +assign Tqcxx6 = (Qscxx6 & Xscxx6); +assign Xscxx6 = (~(Jezmz6[32] & Mt9xx6)); +assign Qscxx6 = (~(Hlbxx6 & Lczmz6[3])); +assign Iocxx6 = (Etcxx6 & Ltcxx6); +assign Ltcxx6 = (Hj6xx6 | Hb7xx6); +assign Hb7xx6 = (Stcxx6 & Ztcxx6); +assign Ztcxx6 = (Gucxx6 & Cscxx6); +assign Gucxx6 = (~(Jezmz6[5] & Mt9xx6)); +assign Stcxx6 = (Nucxx6 & Uucxx6); +assign Uucxx6 = (~(Dl9xx6 & Bvcxx6)); +assign Bvcxx6 = (~(Ivcxx6 & Pvcxx6)); +assign Pvcxx6 = (Wvcxx6 | Eaaxx6); +assign Ivcxx6 = (Dwcxx6 & Kwcxx6); +assign Kwcxx6 = (~(Jezmz6[21] & Nq9xx6)); +assign Dwcxx6 = (~(W1a7v6 & J9axx6)); +assign Nucxx6 = (~(Gnzmz6[13] & Lp9xx6)); +assign Etcxx6 = (Vj6xx6 | Cc7xx6); +assign Cc7xx6 = (Rwcxx6 & Ywcxx6); +assign Ywcxx6 = (Fxcxx6 & Cscxx6); +assign Cscxx6 = (~(Fsaxx6 & Lczmz6[3])); +assign Fxcxx6 = (~(Jezmz6[13] & Mt9xx6)); +assign Rwcxx6 = (Mxcxx6 & Txcxx6); +assign Txcxx6 = (~(Dl9xx6 & Aycxx6)); +assign Aycxx6 = (~(Hycxx6 & Oycxx6)); +assign Oycxx6 = (Wvcxx6 | Kdaxx6); +assign Hycxx6 = (Vycxx6 & Czcxx6); +assign Czcxx6 = (~(Jezmz6[29] & Au9xx6)); +assign Vycxx6 = (~(W1a7v6 & Feaxx6)); +assign Mxcxx6 = (~(Gnzmz6[21] & Lp9xx6)); +assign I96xx6 = (~(Jzcxx6 & Qzcxx6)); +assign Qzcxx6 = (Xzcxx6 & E0dxx6); +assign E0dxx6 = (Vj6xx6 | P87xx6); +assign P87xx6 = (L0dxx6 & Wvcxx6); +assign L0dxx6 = (~(Ync7v6 & Lp9xx6)); +assign Xzcxx6 = (Pg6xx6 | K97xx6); +assign K97xx6 = (S0dxx6 & Z0dxx6); +assign Z0dxx6 = (G1dxx6 & N1dxx6); +assign N1dxx6 = (~(Jezmz6[29] & Mt9xx6)); +assign G1dxx6 = (~(U1dxx6 & W1a7v6)); +assign U1dxx6 = (Dl9xx6 & Niaxx6); +assign S0dxx6 = (B2dxx6 & I2dxx6); +assign I2dxx6 = (~(Lczmz6[3] & P2dxx6)); +assign B2dxx6 = (~(Gnzmz6[37] & Lp9xx6)); +assign Jzcxx6 = (W2dxx6 & D3dxx6); +assign D3dxx6 = (Hj6xx6 | R97xx6); +assign R97xx6 = (K3dxx6 & R3dxx6); +assign R3dxx6 = (~(Gnzmz6[45] & Lp9xx6)); +assign K3dxx6 = (Y3dxx6 & Kkaxx6); +assign Y3dxx6 = (~(Lczmz6[3] & Hkcxx6)); +assign W2dxx6 = (Gf6xx6 | Jc7xx6); +assign Jc7xx6 = (F4dxx6 & M4dxx6); +assign M4dxx6 = (T4dxx6 & A5dxx6); +assign A5dxx6 = (~(Jezmz6[21] & Mt9xx6)); +assign T4dxx6 = (~(H5dxx6 & W1a7v6)); +assign H5dxx6 = (Dl9xx6 & Draxx6); +assign F4dxx6 = (O5dxx6 & V5dxx6); +assign V5dxx6 = (~(Lczmz6[3] & C6dxx6)); +assign C6dxx6 = (~(J6dxx6 & Cuaxx6)); +assign J6dxx6 = (~(Dl9xx6 & Iqaxx6)); +assign O5dxx6 = (~(Gnzmz6[29] & Lp9xx6)); +assign X0t7v6 = (I35xx6 ? Dszmz6[6] : Q6dxx6); +assign Q0t7v6 = (N25xx6 ? Nqzmz6[6] : Q6dxx6); +assign J0t7v6 = (On9xx6 ? Q6dxx6 : Xozmz6[6]); +assign Q6dxx6 = (R21nz6[2] ? W96xx6 : Da6xx6); +assign W96xx6 = (~(X6dxx6 & E7dxx6)); +assign E7dxx6 = (L7dxx6 & S7dxx6); +assign S7dxx6 = (Ne7xx6 | Gf6xx6); +assign Ne7xx6 = (~(Z7dxx6 & G8dxx6)); +assign G8dxx6 = (~(X2axx6 & N8dxx6)); +assign N8dxx6 = (~(Dl9xx6 & U8dxx6)); +assign U8dxx6 = (B9dxx6 | Jezmz6[6]); +assign B9dxx6 = (~(I9dxx6 | Ro87v6)); +assign Z7dxx6 = (P9dxx6 | N4axx6); +assign N4axx6 = (~(W9dxx6 & F7axx6)); +assign W9dxx6 = (X2axx6 & Zvaxx6); +assign L7dxx6 = (Pg6xx6 | Yg7xx6); +assign Yg7xx6 = (Dadxx6 & Kadxx6); +assign Kadxx6 = (~(Radxx6 & Dl9xx6)); +assign Radxx6 = (Yadxx6 & Fbdxx6); +assign Fbdxx6 = (Mbdxx6 | Jezmz6[14]); +assign Mbdxx6 = (~(I9dxx6 | Y6axx6)); +assign Yadxx6 = (~(I9dxx6 & F7axx6)); +assign F7axx6 = (~(Tbdxx6 | J9axx6)); +assign Tbdxx6 = (Nq9xx6 | Y6axx6); +assign Dadxx6 = (Acdxx6 & Hcdxx6); +assign Hcdxx6 = (~(Jezmz6[33] & Mt9xx6)); +assign Acdxx6 = (~(Ocdxx6 & Vcdxx6)); +assign Vcdxx6 = (Cddxx6 | Gnzmz6[6]); +assign X6dxx6 = (Jddxx6 & Qddxx6); +assign Qddxx6 = (Hj6xx6 | Fh7xx6); +assign Fh7xx6 = (Xddxx6 & Eedxx6); +assign Eedxx6 = (~(Dl9xx6 & Ledxx6)); +assign Ledxx6 = (~(Sedxx6 & Zedxx6)); +assign Zedxx6 = (I9dxx6 | Eaaxx6); +assign Sedxx6 = (~(Jezmz6[22] & Nq9xx6)); +assign Nq9xx6 = (Gfdxx6 | Au9xx6); +assign Gfdxx6 = (Feaxx6 | Nfdxx6); +assign Xddxx6 = (Ufdxx6 & Bgdxx6); +assign Bgdxx6 = (~(Jezmz6[6] & Mt9xx6)); +assign Ufdxx6 = (~(Ocdxx6 & Igdxx6)); +assign Igdxx6 = (Cddxx6 | Gnzmz6[14]); +assign Jddxx6 = (Vj6xx6 | Ai7xx6); +assign Ai7xx6 = (Pgdxx6 & Wgdxx6); +assign Wgdxx6 = (~(Dl9xx6 & Dhdxx6)); +assign Dhdxx6 = (~(Khdxx6 & Rhdxx6)); +assign Rhdxx6 = (I9dxx6 | Kdaxx6); +assign Khdxx6 = (~(Jezmz6[30] & Au9xx6)); +assign Au9xx6 = (Yhdxx6 | Draxx6); +assign Yhdxx6 = (~(Fidxx6 & Lmcxx6)); +assign Pgdxx6 = (Midxx6 & Tidxx6); +assign Tidxx6 = (~(Jezmz6[14] & Mt9xx6)); +assign Midxx6 = (~(Ocdxx6 & Ajdxx6)); +assign Ajdxx6 = (Cddxx6 | Gnzmz6[22]); +assign Da6xx6 = (~(Hjdxx6 & Ojdxx6)); +assign Ojdxx6 = (Vjdxx6 & Ckdxx6); +assign Ckdxx6 = (~(Zd7xx6 & Jkdxx6)); +assign Zd7xx6 = (P9dxx6 & Ym8xx6); +assign Vjdxx6 = (Pg6xx6 | If7xx6); +assign If7xx6 = (Qkdxx6 & Xkdxx6); +assign Xkdxx6 = (~(Jezmz6[30] & Mt9xx6)); +assign Qkdxx6 = (Eldxx6 & Lldxx6); +assign Lldxx6 = (~(P9dxx6 & P2dxx6)); +assign P2dxx6 = (~(Sldxx6 & Cuaxx6)); +assign Sldxx6 = (Ypcxx6 | Giaxx6); +assign Eldxx6 = (~(Gnzmz6[38] & Lp9xx6)); +assign Hjdxx6 = (Zldxx6 & Gmdxx6); +assign Gmdxx6 = (Hj6xx6 | Pf7xx6); +assign Pf7xx6 = (Nmdxx6 & Umdxx6); +assign Umdxx6 = (~(Gnzmz6[46] & Lp9xx6)); +assign Nmdxx6 = (Bndxx6 & Kkaxx6); +assign Bndxx6 = (~(Indxx6 & P9dxx6)); +assign Indxx6 = (Hkcxx6 & Ym8xx6); +assign Hkcxx6 = (~(Vmaxx6 & Flaxx6)); +assign Zldxx6 = (Gf6xx6 | Hi7xx6); +assign Hi7xx6 = (Pndxx6 & Wndxx6); +assign Wndxx6 = (~(Dl9xx6 & Dodxx6)); +assign Dodxx6 = (~(Kodxx6 & Rodxx6)); +assign Rodxx6 = (~(P9dxx6 & Iqaxx6)); +assign P9dxx6 = (!I9dxx6); +assign Kodxx6 = (~(Dz9xx6 & Yodxx6)); +assign Pndxx6 = (Fpdxx6 & Mpdxx6); +assign Mpdxx6 = (~(Jezmz6[22] & Mt9xx6)); +assign Fpdxx6 = (~(Ocdxx6 & Tpdxx6)); +assign Tpdxx6 = (Cddxx6 | Gnzmz6[30]); +assign Ocdxx6 = (Cddxx6 | Lp9xx6); +assign Cddxx6 = (~(Cuaxx6 | I9dxx6)); +assign I9dxx6 = (Ifb7v6 ? Fgzmz6[0] : Aqdxx6); +assign Aqdxx6 = (~(Pdtnv6 & Sgbxx6)); +assign C0t7v6 = (I35xx6 ? Dszmz6[7] : Hqdxx6); +assign I35xx6 = (~(Ef5xx6 & Ce5xx6)); +assign Ef5xx6 = (Oqdxx6 & Vqdxx6); +assign Oqdxx6 = (!B41nz6[1]); +assign Vzs7v6 = (N25xx6 ? Nqzmz6[7] : Hqdxx6); +assign N25xx6 = (~(Ce5xx6 & Fc5xx6)); +assign Fc5xx6 = (~(Vqdxx6 | B41nz6[1])); +assign Ozs7v6 = (On9xx6 ? Hqdxx6 : Xozmz6[7]); +assign On9xx6 = (Crdxx6 & Ce5xx6); +assign Ce5xx6 = (!B35xx6); +assign B35xx6 = (~(Jrdxx6 & Fftnv6)); +assign Fftnv6 = (~(Qrdxx6 & Zkrnv6)); +assign Zkrnv6 = (Xrdxx6 ? K6d7v6 : Cuc7v6); +assign Qrdxx6 = (Esdxx6 & Lsdxx6); +assign Lsdxx6 = (~(Ssdxx6 & Zsdxx6)); +assign Zsdxx6 = (Bgt8v6 ? Ntdxx6 : Gtdxx6); +assign Ntdxx6 = (Qqrnv6 | Skcov6); +assign Qqrnv6 = (!Zrrnv6); +assign Gtdxx6 = (~(Skcov6 & Utdxx6)); +assign Utdxx6 = (Budxx6 | Zrrnv6); +assign Ssdxx6 = (Iudxx6 & Pudxx6); +assign Pudxx6 = (~(Wudxx6 & Budxx6)); +assign Budxx6 = (~(Durnv6 & Dvdxx6)); +assign Dvdxx6 = (~(Skcov6 & Errnv6)); +assign Durnv6 = (!Kvdxx6); +assign Kvdxx6 = (Xrdxx6 ? Cad7v6 : Uxc7v6); +assign Wudxx6 = (~(Rvdxx6 & Yvdxx6)); +assign Yvdxx6 = (~(Fwdxx6 & Mwdxx6)); +assign Mwdxx6 = (~(Gsrnv6 & Twdxx6)); +assign Gsrnv6 = (!Errnv6); +assign Errnv6 = (Xrdxx6 ? Ibd7v6 : Azc7v6); +assign Fwdxx6 = (Axdxx6 & Let8v6); +assign Axdxx6 = (Zrrnv6 | Bgt8v6); +assign Rvdxx6 = (~(Skcov6 & Zrrnv6)); +assign Zrrnv6 = (Xrdxx6 ? W8d7v6 : Owc7v6); +assign Iudxx6 = (~(Fvrnv6 & Hxdxx6)); +assign Esdxx6 = (~(Oxdxx6 & Imrnv6)); +assign Imrnv6 = (!Fvrnv6); +assign Fvrnv6 = (Xrdxx6 ? Q7d7v6 : Ivc7v6); +assign Xrdxx6 = (~(Vxdxx6 & Cydxx6)); +assign Cydxx6 = (~(E11nz6[4] & Owrnv6)); +assign Vxdxx6 = (Jydxx6 & Nlcov6); +assign Jydxx6 = (~(Qydxx6 & Xydxx6)); +assign Xydxx6 = (~(Rr0nz6[1] & Pp4xx6)); +assign Pp4xx6 = (!E11nz6[4]); +assign Qydxx6 = (Ezdxx6 & Lzdxx6); +assign Lzdxx6 = (~(Szdxx6 & Zzdxx6)); +assign Zzdxx6 = (~(E11nz6[3] & Cxrnv6)); +assign Szdxx6 = (G0exx6 & N0exx6); +assign N0exx6 = (~(U0exx6 & B1exx6)); +assign B1exx6 = (E11nz6[1] | I1exx6); +assign I1exx6 = (P1exx6 & E11nz6[0]); +assign P1exx6 = (Lyrnv6 & Qqcov6); +assign U0exx6 = (~(W1exx6 & D2exx6)); +assign D2exx6 = (~(E11nz6[2] & Qqcov6)); +assign W1exx6 = (K2exx6 & Jxrnv6); +assign K2exx6 = (~(R2exx6 & E11nz6[0])); +assign R2exx6 = (Y2exx6 & Lyrnv6); +assign Y2exx6 = (~(Hw0nz6[2] & Mocov6)); +assign Mocov6 = (!E11nz6[2]); +assign G0exx6 = (~(E11nz6[2] & Ercov6)); +assign Ezdxx6 = (~(Rr0nz6[0] & No4xx6)); +assign No4xx6 = (!E11nz6[3]); +assign Oxdxx6 = (!Hxdxx6); +assign Hxdxx6 = (~(Qjcov6 & Skcov6)); +assign Skcov6 = (Twdxx6 & Zi9xx6); +assign Twdxx6 = (!Wsc7v6); +assign Qjcov6 = (~(Bgt8v6 | Rht8v6)); +assign Jrdxx6 = (~(F3exx6 & M3exx6)); +assign M3exx6 = (~(T51nz6[2] & T3exx6)); +assign F3exx6 = (~(A4exx6 | Rht8v6)); +assign Rht8v6 = (H4exx6 | O4exx6); +assign H4exx6 = (V4exx6 & C5exx6); +assign A4exx6 = (~(J5exx6 | Q5exx6)); +assign Q5exx6 = (!Bgt8v6); +assign Crdxx6 = (B41nz6[1] & Vqdxx6); +assign Vqdxx6 = (!B41nz6[0]); +assign Hqdxx6 = (R21nz6[2] ? Cd6xx6 : Jd6xx6); +assign Cd6xx6 = (~(X5exx6 & E6exx6)); +assign E6exx6 = (L6exx6 & S6exx6); +assign S6exx6 = (~(Dm8xx6 & Zb9xx6)); +assign Dm8xx6 = (Dl9xx6 & Kl9xx6); +assign Kl9xx6 = (Zvaxx6 | Jezmz6[7]); +assign L6exx6 = (Pg6xx6 | Cq7xx6); +assign Cq7xx6 = (Z6exx6 & G7exx6); +assign G7exx6 = (~(Hlbxx6 | Fsaxx6)); +assign Hlbxx6 = (~(Ypcxx6 | Y6axx6)); +assign Z6exx6 = (N7exx6 & U7exx6); +assign U7exx6 = (~(Dl9xx6 & Jezmz6[15])); +assign N7exx6 = (~(B987v6 & Lp9xx6)); +assign X5exx6 = (B8exx6 & I8exx6); +assign I8exx6 = (Hj6xx6 | Jq7xx6); +assign Jq7xx6 = (P8exx6 & W8exx6); +assign W8exx6 = (~(Dl9xx6 & D9exx6)); +assign D9exx6 = (~(K9exx6 & Eaaxx6)); +assign K9exx6 = (~(R9exx6 | Jezmz6[23])); +assign R9exx6 = (Y9exx6 & J9axx6); +assign J9axx6 = (Vu9xx6 | Faexx6); +assign Faexx6 = (Maexx6 & Taexx6); +assign P8exx6 = (Abexx6 & Hbexx6); +assign Hbexx6 = (~(Mt9xx6 & Jezmz6[7])); +assign Abexx6 = (~(Obexx6 & Vbexx6)); +assign Vbexx6 = (Fsaxx6 | Gnzmz6[15]); +assign B8exx6 = (Vj6xx6 | Er7xx6); +assign Er7xx6 = (Ccexx6 & Jcexx6); +assign Jcexx6 = (~(Dl9xx6 & Qcexx6)); +assign Qcexx6 = (~(Xcexx6 & Kdaxx6)); +assign Xcexx6 = (Edexx6 & Ldexx6); +assign Ldexx6 = (!Jezmz6[31]); +assign Edexx6 = (~(Y9exx6 & Feaxx6)); +assign Feaxx6 = (Yz9xx6 | Sdexx6); +assign Ccexx6 = (Zdexx6 & Geexx6); +assign Geexx6 = (~(Mt9xx6 & Jezmz6[15])); +assign Zdexx6 = (~(Obexx6 & Neexx6)); +assign Neexx6 = (~(Cuaxx6 & Ueexx6)); +assign Vj6xx6 = (!Jkdxx6); +assign Jd6xx6 = (~(Bfexx6 & Ifexx6)); +assign Ifexx6 = (Pfexx6 & Wfexx6); +assign Wfexx6 = (Pg6xx6 | To7xx6); +assign To7xx6 = (Dgexx6 & Kgexx6); +assign Kgexx6 = (~(Dl9xx6 & Rgexx6)); +assign Rgexx6 = (~(Giaxx6 & Ygexx6)); +assign Ygexx6 = (~(Y9exx6 & Niaxx6)); +assign Niaxx6 = (~(Cnaxx6 & Fhexx6)); +assign Fhexx6 = (~(Maexx6 & Dz9xx6)); +assign Cnaxx6 = (!T0axx6); +assign T0axx6 = (Mhexx6 & Dz9xx6); +assign Dgexx6 = (Thexx6 & Aiexx6); +assign Aiexx6 = (~(Mt9xx6 & Jezmz6[31])); +assign Thexx6 = (~(Obexx6 & Hiexx6)); +assign Hiexx6 = (~(Cuaxx6 & Oiexx6)); +assign Pg6xx6 = (!Df8xx6); +assign Df8xx6 = (~(Du7xx6 | R21nz6[0])); +assign Pfexx6 = (Hj6xx6 | Rn7xx6); +assign Rn7xx6 = (Viexx6 & Cjexx6); +assign Cjexx6 = (Ypcxx6 | Vmaxx6); +assign Vmaxx6 = (Jjexx6 & Giaxx6); +assign Giaxx6 = (Qjexx6 & Xjexx6); +assign Xjexx6 = (Ekexx6 & Lkexx6); +assign Lkexx6 = (!Yz9xx6); +assign Yz9xx6 = (Mhexx6 & Skexx6); +assign Qjexx6 = (Zkexx6 & Yodxx6); +assign Jjexx6 = (Ugcxx6 & Glexx6); +assign Viexx6 = (~(Vzbxx6 | O4exx6)); +assign O4exx6 = (Ka87v6 & Lp9xx6); +assign Vzbxx6 = (~(Flaxx6 | Nlexx6)); +assign Nlexx6 = (Ztb7v6 & Cuaxx6); +assign Hj6xx6 = (!Ge7xx6); +assign Ge7xx6 = (~(Ulexx6 | R21nz6[1])); +assign Bfexx6 = (Bmexx6 & Imexx6); +assign Imexx6 = (Gf6xx6 | Lr7xx6); +assign Lr7xx6 = (Pmexx6 & Wmexx6); +assign Wmexx6 = (~(Dl9xx6 & Dnexx6)); +assign Dnexx6 = (~(Zkexx6 & Knexx6)); +assign Knexx6 = (~(Y9exx6 & Draxx6)); +assign Draxx6 = (~(Ugcxx6 & Ekexx6)); +assign Ekexx6 = (~(Rnexx6 & Maexx6)); +assign Ugcxx6 = (~(Rnexx6 & Mhexx6)); +assign Rnexx6 = (Ynexx6 & Lmcxx6); +assign Zkexx6 = (!Iqaxx6); +assign Iqaxx6 = (~(Foexx6 & Moexx6)); +assign Moexx6 = (~(Sdexx6 | Vu9xx6)); +assign Vu9xx6 = (Mhexx6 & Taexx6); +assign Sdexx6 = (~(Glexx6 | Toexx6)); +assign Foexx6 = (Kdaxx6 & Apexx6); +assign Apexx6 = (Fidxx6 | Dz9xx6); +assign Fidxx6 = (~(Ynexx6 & Hpexx6)); +assign Kdaxx6 = (Opexx6 & Eaaxx6); +assign Eaaxx6 = (Y6axx6 & Vpexx6); +assign Vpexx6 = (~(Hpexx6 & Taexx6)); +assign Opexx6 = (Cqexx6 & Jqexx6); +assign Cqexx6 = (~(Maexx6 & Taexx6)); +assign Pmexx6 = (Qqexx6 & Xqexx6); +assign Xqexx6 = (~(Mt9xx6 & Jezmz6[23])); +assign Qqexx6 = (~(Obexx6 & Erexx6)); +assign Erexx6 = (~(Cuaxx6 & Lrexx6)); +assign Obexx6 = (!X2axx6); +assign X2axx6 = (Cuaxx6 & I0snv6); +assign Gf6xx6 = (!Zb9xx6); +assign Zb9xx6 = (~(Du7xx6 | Ulexx6)); +assign Ulexx6 = (!R21nz6[0]); +assign Du7xx6 = (!R21nz6[1]); +assign Bmexx6 = (~(Jkdxx6 & Ym8xx6)); +assign Ym8xx6 = (~(Flaxx6 & Ypcxx6)); +assign Ypcxx6 = (!Dl9xx6); +assign Flaxx6 = (Zp9xx6 & Cuaxx6); +assign Jkdxx6 = (~(R21nz6[0] | R21nz6[1])); +assign Hzs7v6 = (~(Srexx6 & Zrexx6)); +assign Zrexx6 = (~(Gsexx6 & Nsexx6)); +assign Nsexx6 = (~(Usexx6 & Btexx6)); +assign Btexx6 = (Itexx6 & Ptexx6); +assign Ptexx6 = (Wtexx6 & Duexx6); +assign Duexx6 = (Kuexx6 & Ruexx6); +assign Ruexx6 = (~(Yuexx6 & Bq0nz6[0])); +assign Kuexx6 = (Fvexx6 & Mvexx6); +assign Mvexx6 = (~(Tvexx6 & Fl0nz6[0])); +assign Fvexx6 = (~(Awexx6 & Jg0nz6[0])); +assign Wtexx6 = (Hwexx6 & Owexx6); +assign Owexx6 = (~(Vwexx6 & Nb0nz6[0])); +assign Hwexx6 = (Cxexx6 & Jxexx6); +assign Jxexx6 = (~(Qxexx6 & R60nz6[0])); +assign Cxexx6 = (~(Xxexx6 & V10nz6[0])); +assign Itexx6 = (Eyexx6 & Lyexx6); +assign Lyexx6 = (Syexx6 & Zyexx6); +assign Zyexx6 = (~(Gzexx6 & Zwzmz6[0])); +assign Syexx6 = (Nzexx6 & Uzexx6); +assign Uzexx6 = (~(B0fxx6 & Dszmz6[0])); +assign Nzexx6 = (~(I0fxx6 & Lo0nz6[0])); +assign Eyexx6 = (P0fxx6 & W0fxx6); +assign W0fxx6 = (~(D1fxx6 & Pj0nz6[0])); +assign P0fxx6 = (K1fxx6 & R1fxx6); +assign R1fxx6 = (~(Y1fxx6 & Te0nz6[0])); +assign K1fxx6 = (~(F2fxx6 & X90nz6[0])); +assign Usexx6 = (M2fxx6 & T2fxx6); +assign T2fxx6 = (A3fxx6 & H3fxx6); +assign H3fxx6 = (O3fxx6 & V3fxx6); +assign V3fxx6 = (~(C4fxx6 & B50nz6[0])); +assign O3fxx6 = (J4fxx6 & Q4fxx6); +assign Q4fxx6 = (~(X4fxx6 & F00nz6[0])); +assign J4fxx6 = (~(E5fxx6 & Jvzmz6[0])); +assign A3fxx6 = (L5fxx6 & S5fxx6); +assign S5fxx6 = (~(Z5fxx6 & Nqzmz6[0])); +assign L5fxx6 = (G6fxx6 & N6fxx6); +assign N6fxx6 = (~(U6fxx6 & Vm0nz6[0])); +assign G6fxx6 = (~(B7fxx6 & Zh0nz6[0])); +assign M2fxx6 = (I7fxx6 & P7fxx6); +assign P7fxx6 = (W7fxx6 & D8fxx6); +assign D8fxx6 = (~(K8fxx6 & Dd0nz6[0])); +assign W7fxx6 = (R8fxx6 & Y8fxx6); +assign Y8fxx6 = (~(F9fxx6 & H80nz6[0])); +assign R8fxx6 = (~(M9fxx6 & L30nz6[0])); +assign I7fxx6 = (T9fxx6 & Aafxx6); +assign Aafxx6 = (~(Xozmz6[0] & Hafxx6)); +assign T9fxx6 = (Oafxx6 & Vafxx6); +assign Vafxx6 = (~(Cbfxx6 & Ttzmz6[0])); +assign Oafxx6 = (~(Jbfxx6 & Pyzmz6[0])); +assign Srexx6 = (~(Ak67z6 & Lr5ov6)); +assign Azs7v6 = (Cmtiw6 ? D7hdt6 : L0g7z6[32]); +assign Tys7v6 = (~(Qbfxx6 & Xbfxx6)); +assign Xbfxx6 = (~(Yj2ov6 & Yxf7z6[0])); +assign Qbfxx6 = (Ecfxx6 & Lcfxx6); +assign Lcfxx6 = (Scfxx6 | Wi2ov6); +assign Scfxx6 = (T1lhw6 ? Ubpdt6 : Epmdt6); +assign T1lhw6 = (Pcg7z6[31] ^ Elgdt6); +assign Pcg7z6[31] = (Qamnv6 ? Wiudt6 : Ixrdt6); +assign Qamnv6 = (~(D4wnv6 ^ Zfg7z6[32])); +assign D4wnv6 = (!Elgdt6); +assign Ecfxx6 = (~(Bnmdt6 & Rj2ov6)); +assign Mys7v6 = (~(Zcfxx6 & Gdfxx6)); +assign Gdfxx6 = (~(Y3bov6 & Yxf7z6[0])); +assign Zcfxx6 = (Ndfxx6 & Udfxx6); +assign Udfxx6 = (~(Rj2ov6 & Pemdt6)); +assign Ndfxx6 = (~(Yj2ov6 & Yxf7z6[4])); +assign Fys7v6 = (~(Befxx6 & Iefxx6)); +assign Iefxx6 = (~(Y3bov6 & Yxf7z6[4])); +assign Befxx6 = (Pefxx6 & Wefxx6); +assign Wefxx6 = (~(Rj2ov6 & D6mdt6)); +assign Pefxx6 = (~(Yj2ov6 & Yxf7z6[8])); +assign Yxs7v6 = (~(Dffxx6 & Kffxx6)); +assign Kffxx6 = (~(Y3bov6 & Yxf7z6[8])); +assign Dffxx6 = (Rffxx6 & Yffxx6); +assign Yffxx6 = (~(Rj2ov6 & Rxldt6)); +assign Rffxx6 = (~(Yj2ov6 & Yxf7z6[12])); +assign Rxs7v6 = (~(Fgfxx6 & Mgfxx6)); +assign Mgfxx6 = (~(Y3bov6 & Yxf7z6[12])); +assign Fgfxx6 = (Tgfxx6 & Ahfxx6); +assign Ahfxx6 = (~(Rj2ov6 & Fpldt6)); +assign Tgfxx6 = (~(Yj2ov6 & Yxf7z6[16])); +assign Kxs7v6 = (~(Hhfxx6 & Ohfxx6)); +assign Ohfxx6 = (~(Y3bov6 & Yxf7z6[16])); +assign Hhfxx6 = (Vhfxx6 & Cifxx6); +assign Cifxx6 = (~(Rj2ov6 & Tgldt6)); +assign Vhfxx6 = (~(Yj2ov6 & Yxf7z6[20])); +assign Dxs7v6 = (~(Jifxx6 & Qifxx6)); +assign Qifxx6 = (~(Y3bov6 & Yxf7z6[20])); +assign Jifxx6 = (Xifxx6 & Ejfxx6); +assign Ejfxx6 = (~(Rj2ov6 & H8ldt6)); +assign Xifxx6 = (~(Yj2ov6 & Yxf7z6[24])); +assign Wws7v6 = (~(Ljfxx6 & Sjfxx6)); +assign Sjfxx6 = (~(Y3bov6 & Yxf7z6[24])); +assign Ljfxx6 = (Zjfxx6 & Gkfxx6); +assign Gkfxx6 = (~(Rj2ov6 & Vzkdt6)); +assign Rj2ov6 = (Nkfxx6 & Ukfxx6); +assign Ukfxx6 = (~(Blfxx6 | Yj2ov6)); +assign Blfxx6 = (Ijnnv6 | Rabov6); +assign Ijnnv6 = (!Kxtiw6); +assign Nkfxx6 = (Dfkov6 & Ilfxx6); +assign Zjfxx6 = (~(Yj2ov6 & Yxf7z6[28])); +assign Pws7v6 = (~(Plfxx6 & Wlfxx6)); +assign Wlfxx6 = (~(Yj2ov6 & Yxf7z6[32])); +assign Yj2ov6 = (Yzm7x6 & Dmfxx6); +assign Dmfxx6 = (Kmfxx6 & Yqtiw6); +assign Yqtiw6 = (~(Rabov6 & Rmfxx6)); +assign Rmfxx6 = (~(Ymfxx6 & Fnfxx6)); +assign Ymfxx6 = (~(Go37x6 & Mnfxx6)); +assign Rabov6 = (!Z6jhw6); +assign Kmfxx6 = (Wi2ov6 & Kxtiw6); +assign Yzm7x6 = (~(L7bov6 | E7bov6)); +assign E7bov6 = (~(Tnfxx6 & Ts27x6)); +assign Tnfxx6 = (Aofxx6 & Qariw6); +assign Qariw6 = (~(Dqtiw6 & Ehgdt6)); +assign L7bov6 = (~(Ilfxx6 & A127x6)); +assign Plfxx6 = (~(Y3bov6 & Yxf7z6[28])); +assign Iws7v6 = (Diaov6 ? Hofxx6 : Pmc7z6[2]); +assign Diaov6 = (!Riaov6); +assign Riaov6 = (Oofxx6 & Phaov6); +assign Phaov6 = (Pooov6 & Vofxx6); +assign Vofxx6 = (Cpfxx6 & Jpfxx6); +assign Jpfxx6 = (D61ov6 | Qpfxx6); +assign Qpfxx6 = (Xpfxx6 & Eqfxx6); +assign Xpfxx6 = (Hkoov6 & Lqfxx6); +assign D61ov6 = (Sqfxx6 & Qv0ov6); +assign Sqfxx6 = (!G8xnv6); +assign G8xnv6 = (~(Zqfxx6 & Grfxx6)); +assign Zqfxx6 = (~(Jamnv6 & A9mnv6)); +assign Cpfxx6 = (Jsoov6 & Pj1ov6); +assign Pooov6 = (Q0wnv6 & O4piw6); +assign Oofxx6 = (Femhw6 & Ij1ov6); +assign Ij1ov6 = (!Cg1ov6); +assign Femhw6 = (~(Nrfxx6 & N3onv6)); +assign Nrfxx6 = (Urfxx6 & Fetov6); +assign Urfxx6 = (~(Bsfxx6 & Isfxx6)); +assign Bsfxx6 = (Tao7v6 & J9tov6); +assign Bws7v6 = (~(Psfxx6 & Wsfxx6)); +assign Wsfxx6 = (~(Dtfxx6 & Ktfxx6)); +assign Dtfxx6 = (Osd7z6[2] & Vs9ov6); +assign Psfxx6 = (~(Rtfxx6 & Rem7x6)); +assign Rtfxx6 = (Zec7z6[11] & Fetov6); +assign Uvs7v6 = (~(Ytfxx6 & Fufxx6)); +assign Fufxx6 = (~(Mufxx6 & Ktfxx6)); +assign Mufxx6 = (Osd7z6[1] & Vs9ov6); +assign Ytfxx6 = (~(Tufxx6 & Rem7x6)); +assign Rem7x6 = (~(Bsrov6 | Jbd8x6)); +assign Bsrov6 = (!Yxd7z6[0]); +assign Yxd7z6[0] = (Btpiw6 & N3onv6); +assign Tufxx6 = (Gginv6 & Fetov6); +assign Nvs7v6 = (Pkkiw6 ? N6znv6 : Avfxx6); +assign Avfxx6 = (!W977z6); +assign Gvs7v6 = (!Hvfxx6); +assign Hvfxx6 = (Tqoov6 ? Gt67z6 : Ovfxx6); +assign Zus7v6 = (!Vvfxx6); +assign Vvfxx6 = (As9ov6 ? Wt67z6 : Ovfxx6); +assign Ovfxx6 = (!Y1znv6); +assign Sus7v6 = (Tqoov6 ? Cwfxx6 : Jxynv6); +assign Cwfxx6 = (!Mu67z6); +assign Lus7v6 = (As9ov6 ? Jwfxx6 : Jxynv6); +assign Jwfxx6 = (!Cv67z6); +assign Eus7v6 = (Pkkiw6 ? Usynv6 : Qwfxx6); +assign Qwfxx6 = (!Sv67z6); +assign Xts7v6 = (Klkiw6 ? Usynv6 : Xwfxx6); +assign Xwfxx6 = (!Iw67z6); +assign Qts7v6 = (Pkkiw6 ? Foynv6 : Exfxx6); +assign Exfxx6 = (!Yw67z6); +assign Jts7v6 = (Klkiw6 ? Foynv6 : Lxfxx6); +assign Lxfxx6 = (!Ox67z6); +assign Cts7v6 = (Pkkiw6 ? Qjynv6 : Sxfxx6); +assign Sxfxx6 = (!Ey67z6); +assign Vss7v6 = (Klkiw6 ? Qjynv6 : Zxfxx6); +assign Zxfxx6 = (!Uy67z6); +assign Oss7v6 = (Pkkiw6 ? Bfynv6 : Gyfxx6); +assign Gyfxx6 = (!Kz67z6); +assign Hss7v6 = (Klkiw6 ? Bfynv6 : Nyfxx6); +assign Nyfxx6 = (!A077z6); +assign Ass7v6 = (Pkkiw6 ? Maynv6 : Uyfxx6); +assign Uyfxx6 = (!Q077z6); +assign Trs7v6 = (Klkiw6 ? Maynv6 : Bzfxx6); +assign Bzfxx6 = (!G177z6); +assign Mrs7v6 = (Pkkiw6 ? P9xnv6 : Izfxx6); +assign Izfxx6 = (!W177z6); +assign Frs7v6 = (Klkiw6 ? P9xnv6 : Pzfxx6); +assign Pzfxx6 = (!M277z6); +assign Yqs7v6 = (!Wzfxx6); +assign Wzfxx6 = (Pkkiw6 ? D0gxx6 : C377z6); +assign Rqs7v6 = (!K0gxx6); +assign K0gxx6 = (Klkiw6 ? D0gxx6 : S377z6); +assign D0gxx6 = (!W1ynv6); +assign Kqs7v6 = (!R0gxx6); +assign R0gxx6 = (Pkkiw6 ? Y0gxx6 : I477z6); +assign Dqs7v6 = (!F1gxx6); +assign F1gxx6 = (Klkiw6 ? Y0gxx6 : Y477z6); +assign Y0gxx6 = (!Hxxnv6); +assign Wps7v6 = (Pkkiw6 ? Ssxnv6 : M1gxx6); +assign M1gxx6 = (!O577z6); +assign Pps7v6 = (Klkiw6 ? Ssxnv6 : T1gxx6); +assign T1gxx6 = (!E677z6); +assign Ips7v6 = (Pkkiw6 ? Doxnv6 : A2gxx6); +assign A2gxx6 = (!U677z6); +assign Bps7v6 = (Klkiw6 ? Doxnv6 : H2gxx6); +assign H2gxx6 = (!K777z6); +assign Uos7v6 = (Pkkiw6 ? Ojxnv6 : O2gxx6); +assign O2gxx6 = (!A877z6); +assign Nos7v6 = (Klkiw6 ? Ojxnv6 : V2gxx6); +assign V2gxx6 = (!Q877z6); +assign Gos7v6 = (Pkkiw6 ? Zexnv6 : C3gxx6); +assign C3gxx6 = (!G977z6); +assign Zns7v6 = (Mr9ov6 ? Bvtet6 : J3gxx6); +assign J3gxx6 = (Q3gxx6 | Rekiw6); +assign Rekiw6 = (X3gxx6 & Nh1ft6); +assign X3gxx6 = (Rr1ft6 & E4gxx6); +assign Q3gxx6 = (Pdkiw6 | Ogkiw6); +assign Sns7v6 = (Mr9ov6 ? Attet6 : L4gxx6); +assign L4gxx6 = (Pdkiw6 | Kekiw6); +assign Kekiw6 = (S4gxx6 & Z4gxx6); +assign Pdkiw6 = (G5gxx6 & N5gxx6); +assign N5gxx6 = (Xo1ft6 & U5gxx6); +assign G5gxx6 = (Z4gxx6 & Rf1ft6); +assign Lns7v6 = (Mr9ov6 ? Zqtet6 : B6gxx6); +assign B6gxx6 = (Ogkiw6 | Hgkiw6); +assign Hgkiw6 = (I6gxx6 & P6gxx6); +assign P6gxx6 = (W6gxx6 & U5gxx6); +assign I6gxx6 = (D7gxx6 & Z4gxx6); +assign Ens7v6 = (S3eiw6 ? T52iw6 : K6uet6); +assign S3eiw6 = (K7gxx6 & R7gxx6); +assign R7gxx6 = (~(Y7gxx6 & F8gxx6)); +assign F8gxx6 = (Pp9ov6 & Wp9ov6); +assign Pp9ov6 = (~(Hryet6 | Woyet6)); +assign Y7gxx6 = (M8gxx6 & T8gxx6); +assign M8gxx6 = (A9gxx6 & Qakiw6); +assign K7gxx6 = (Yjonv6 & O1eiw6); +assign Xms7v6 = (~(H9gxx6 & O9gxx6)); +assign O9gxx6 = (~(Wzxet6 & B32iw6)); +assign Qms7v6 = (V9gxx6 | Cagxx6); +assign Cagxx6 = (Jagxx6 & Qagxx6); +assign Qagxx6 = (Xagxx6 | Wlvet6); +assign Xagxx6 = (~(Cfxet6 | Ebgxx6)); +assign Ebgxx6 = (!Yca7z6); +assign V9gxx6 = (Sbgxx6 ? Tim7z6[7] : Lbgxx6); +assign Lbgxx6 = (~(Zbgxx6 & Gcgxx6)); +assign Gcgxx6 = (~(Fs1ov6 & Itb7z6[7])); +assign Zbgxx6 = (Ncgxx6 & Ucgxx6); +assign Ucgxx6 = (~(At1ov6 & Yca7z6)); +assign Ncgxx6 = (~(Kwp7x6 & Ot1ov6)); +assign Jms7v6 = (Bdgxx6 | Idgxx6); +assign Idgxx6 = (Jagxx6 & Pdgxx6); +assign Pdgxx6 = (Wdgxx6 | Xnvet6); +assign Wdgxx6 = (~(Dhxet6 | Degxx6)); +assign Degxx6 = (!Gda7z6); +assign Bdgxx6 = (Sbgxx6 ? Tim7z6[6] : Kegxx6); +assign Kegxx6 = (~(Regxx6 & Yegxx6)); +assign Yegxx6 = (~(Fs1ov6 & Itb7z6[6])); +assign Regxx6 = (Ffgxx6 & Mfgxx6); +assign Mfgxx6 = (~(At1ov6 & Gda7z6)); +assign Ffgxx6 = (~(Lzq7x6 & Ot1ov6)); +assign Cms7v6 = (Tfgxx6 | Aggxx6); +assign Aggxx6 = (Jagxx6 & Hggxx6); +assign Hggxx6 = (Oggxx6 | Ypvet6); +assign Oggxx6 = (~(Ejxet6 | Vggxx6)); +assign Vggxx6 = (!Oda7z6); +assign Tfgxx6 = (Sbgxx6 ? Tim7z6[5] : Chgxx6); +assign Chgxx6 = (~(Jhgxx6 & Qhgxx6)); +assign Qhgxx6 = (~(Fs1ov6 & Itb7z6[5])); +assign Jhgxx6 = (Xhgxx6 & Eigxx6); +assign Eigxx6 = (~(At1ov6 & Oda7z6)); +assign Xhgxx6 = (~(Zsq7x6 & Ot1ov6)); +assign Vls7v6 = (Ligxx6 | Sigxx6); +assign Sigxx6 = (Jagxx6 & Zigxx6); +assign Zigxx6 = (Gjgxx6 | Zrvet6); +assign Gjgxx6 = (~(Flxet6 | Njgxx6)); +assign Njgxx6 = (!Qco7v6); +assign Ligxx6 = (Sbgxx6 ? Tim7z6[4] : Ujgxx6); +assign Ujgxx6 = (~(Bkgxx6 & Ikgxx6)); +assign Ikgxx6 = (~(Fs1ov6 & Itb7z6[4])); +assign Bkgxx6 = (Pkgxx6 & Wkgxx6); +assign Wkgxx6 = (~(At1ov6 & Qco7v6)); +assign Pkgxx6 = (~(Pnq7x6 & Ot1ov6)); +assign Ols7v6 = (Dlgxx6 | Klgxx6); +assign Klgxx6 = (Jagxx6 & Rlgxx6); +assign Rlgxx6 = (Ylgxx6 | Auvet6); +assign Ylgxx6 = (Fmgxx6 & Wda7z6); +assign Fmgxx6 = (!Gnxet6); +assign Dlgxx6 = (Sbgxx6 ? Tim7z6[3] : Mmgxx6); +assign Mmgxx6 = (~(Tmgxx6 & Angxx6)); +assign Angxx6 = (~(Fs1ov6 & Itb7z6[3])); +assign Tmgxx6 = (Hngxx6 & Ongxx6); +assign Ongxx6 = (~(At1ov6 & Wda7z6)); +assign Hngxx6 = (~(Fiq7x6 & Ot1ov6)); +assign Hls7v6 = (~(Vngxx6 & Cogxx6)); +assign Cogxx6 = (~(Jagxx6 & Jogxx6)); +assign Jogxx6 = (Qogxx6 | Bwvet6); +assign Qogxx6 = (Xogxx6 & Eea7z6); +assign Xogxx6 = (!Hpxet6); +assign Vngxx6 = (Sbgxx6 ? Lpgxx6 : Epgxx6); +assign Lpgxx6 = (!Tim7z6[2]); +assign Epgxx6 = (Spgxx6 & Zpgxx6); +assign Zpgxx6 = (~(Fs1ov6 & Itb7z6[2])); +assign Spgxx6 = (Gqgxx6 & Nqgxx6); +assign Nqgxx6 = (~(At1ov6 & Eea7z6)); +assign Gqgxx6 = (~(Vcq7x6 & Ot1ov6)); +assign Als7v6 = (Uqgxx6 | Brgxx6); +assign Brgxx6 = (Jagxx6 & Irgxx6); +assign Irgxx6 = (Prgxx6 | Cyvet6); +assign Prgxx6 = (~(Irxet6 | Wrgxx6)); +assign Wrgxx6 = (!Mea7z6); +assign Uqgxx6 = (Sbgxx6 ? Tim7z6[1] : Dsgxx6); +assign Dsgxx6 = (~(Ksgxx6 & Rsgxx6)); +assign Rsgxx6 = (~(Fs1ov6 & Itb7z6[1])); +assign Ksgxx6 = (Ysgxx6 & Ftgxx6); +assign Ftgxx6 = (~(At1ov6 & Mea7z6)); +assign Ysgxx6 = (~(L7q7x6 & Ot1ov6)); +assign Tks7v6 = (Mtgxx6 | Ttgxx6); +assign Ttgxx6 = (Jagxx6 & Augxx6); +assign Augxx6 = (Hugxx6 | D0wet6); +assign Hugxx6 = (~(Jtxet6 | Ougxx6)); +assign Ougxx6 = (!Uea7z6); +assign Jagxx6 = (~(Vugxx6 | Sbgxx6)); +assign Mtgxx6 = (Sbgxx6 ? Tim7z6[0] : Cvgxx6); +assign Cvgxx6 = (~(Jvgxx6 & Qvgxx6)); +assign Qvgxx6 = (~(I8r7x6 & Xvgxx6)); +assign Jvgxx6 = (Ewgxx6 & Lwgxx6); +assign Lwgxx6 = (~(Znn7z6[1] & Asonv6)); +assign Asonv6 = (~(Swgxx6 & Zwgxx6)); +assign Zwgxx6 = (~(Styet6 & I8r7x6)); +assign Swgxx6 = (~(Ewyet6 & Itb7z6[0])); +assign Ewgxx6 = (~(At1ov6 & Uea7z6)); +assign Mks7v6 = (Gxgxx6 | Nxgxx6); +assign Nxgxx6 = (Uxgxx6 & Bygxx6); +assign Bygxx6 = (Iygxx6 | O5vet6); +assign Iygxx6 = (~(Uywet6 | Pygxx6)); +assign Pygxx6 = (!Uaa7z6); +assign Gxgxx6 = (Dzgxx6 ? Wygxx6 : Tim7z6[15]); +assign Wygxx6 = (~(Kzgxx6 & Rzgxx6)); +assign Rzgxx6 = (~(Fs1ov6 & Itb7z6[15])); +assign Kzgxx6 = (Yzgxx6 & F0hxx6); +assign F0hxx6 = (~(At1ov6 & Uaa7z6)); +assign Yzgxx6 = (~(Oyp7x6 & Ot1ov6)); +assign Fks7v6 = (M0hxx6 | T0hxx6); +assign T0hxx6 = (Uxgxx6 & A1hxx6); +assign A1hxx6 = (H1hxx6 | P7vet6); +assign H1hxx6 = (~(V0xet6 | O1hxx6)); +assign O1hxx6 = (!Cba7z6); +assign M0hxx6 = (Dzgxx6 ? V1hxx6 : Tim7z6[14]); +assign V1hxx6 = (~(C2hxx6 & J2hxx6)); +assign J2hxx6 = (~(Fs1ov6 & Itb7z6[14])); +assign C2hxx6 = (Q2hxx6 & X2hxx6); +assign X2hxx6 = (~(At1ov6 & Cba7z6)); +assign Q2hxx6 = (~(Twq7x6 & Ot1ov6)); +assign Yjs7v6 = (E3hxx6 | L3hxx6); +assign L3hxx6 = (Uxgxx6 & S3hxx6); +assign S3hxx6 = (Z3hxx6 | Q9vet6); +assign Z3hxx6 = (~(W2xet6 | G4hxx6)); +assign G4hxx6 = (!Kba7z6); +assign E3hxx6 = (Dzgxx6 ? N4hxx6 : Tim7z6[13]); +assign N4hxx6 = (~(U4hxx6 & B5hxx6)); +assign B5hxx6 = (~(Fs1ov6 & Itb7z6[13])); +assign U4hxx6 = (I5hxx6 & P5hxx6); +assign P5hxx6 = (~(At1ov6 & Kba7z6)); +assign I5hxx6 = (~(Vqq7x6 & Ot1ov6)); +assign Rjs7v6 = (W5hxx6 | D6hxx6); +assign D6hxx6 = (Uxgxx6 & K6hxx6); +assign K6hxx6 = (R6hxx6 | Rbvet6); +assign R6hxx6 = (~(X4xet6 | Y6hxx6)); +assign Y6hxx6 = (!Jco7v6); +assign W5hxx6 = (Dzgxx6 ? F7hxx6 : Tim7z6[12]); +assign F7hxx6 = (~(M7hxx6 & T7hxx6)); +assign T7hxx6 = (~(Fs1ov6 & Itb7z6[12])); +assign M7hxx6 = (A8hxx6 & H8hxx6); +assign H8hxx6 = (~(At1ov6 & Jco7v6)); +assign A8hxx6 = (~(Llq7x6 & Ot1ov6)); +assign Kjs7v6 = (O8hxx6 | V8hxx6); +assign V8hxx6 = (Uxgxx6 & C9hxx6); +assign C9hxx6 = (J9hxx6 | Sdvet6); +assign J9hxx6 = (Q9hxx6 & Sba7z6); +assign Q9hxx6 = (!Y6xet6); +assign O8hxx6 = (Dzgxx6 ? X9hxx6 : Tim7z6[11]); +assign X9hxx6 = (~(Eahxx6 & Lahxx6)); +assign Lahxx6 = (~(Fs1ov6 & Itb7z6[11])); +assign Eahxx6 = (Sahxx6 & Zahxx6); +assign Zahxx6 = (~(At1ov6 & Sba7z6)); +assign Sahxx6 = (~(Bgq7x6 & Ot1ov6)); +assign Djs7v6 = (~(Gbhxx6 & Nbhxx6)); +assign Nbhxx6 = (~(Uxgxx6 & Ubhxx6)); +assign Ubhxx6 = (Bchxx6 | Tfvet6); +assign Bchxx6 = (Ichxx6 & Aca7z6); +assign Ichxx6 = (!Z8xet6); +assign Gbhxx6 = (Dzgxx6 ? Wchxx6 : Pchxx6); +assign Wchxx6 = (Ddhxx6 & Kdhxx6); +assign Kdhxx6 = (~(Fs1ov6 & Itb7z6[10])); +assign Ddhxx6 = (Rdhxx6 & Ydhxx6); +assign Ydhxx6 = (~(At1ov6 & Aca7z6)); +assign Rdhxx6 = (~(Raq7x6 & Ot1ov6)); +assign Pchxx6 = (!Tim7z6[10]); +assign Wis7v6 = (Fehxx6 | Mehxx6); +assign Mehxx6 = (Uxgxx6 & Tehxx6); +assign Tehxx6 = (Afhxx6 | Uhvet6); +assign Afhxx6 = (~(Abxet6 | Hfhxx6)); +assign Hfhxx6 = (!Ica7z6); +assign Fehxx6 = (Dzgxx6 ? Ofhxx6 : Tim7z6[9]); +assign Ofhxx6 = (~(Vfhxx6 & Cghxx6)); +assign Cghxx6 = (~(Fs1ov6 & Itb7z6[9])); +assign Vfhxx6 = (Jghxx6 & Qghxx6); +assign Qghxx6 = (~(At1ov6 & Ica7z6)); +assign Jghxx6 = (~(H5q7x6 & Ot1ov6)); +assign Pis7v6 = (Xghxx6 | Ehhxx6); +assign Ehhxx6 = (Uxgxx6 & Lhhxx6); +assign Lhhxx6 = (Shhxx6 | Vjvet6); +assign Shhxx6 = (~(Bdxet6 | Zhhxx6)); +assign Zhhxx6 = (!Qca7z6); +assign Uxgxx6 = (Znn7z6[2] & Dzgxx6); +assign Xghxx6 = (Dzgxx6 ? Gihxx6 : Tim7z6[8]); +assign Dzgxx6 = (~(Sbgxx6 & Nihxx6)); +assign Nihxx6 = (~(Uihxx6 & Eia7z6)); +assign Uihxx6 = (Bjhxx6 & Ijhxx6); +assign Sbgxx6 = (Pjhxx6 & Wjhxx6); +assign Pjhxx6 = (Dkhxx6 & Kkhxx6); +assign Dkhxx6 = (~(Rkhxx6 & Ykhxx6)); +assign Rkhxx6 = (Djonv6 & Mia7z6); +assign Gihxx6 = (~(Flhxx6 & Mlhxx6)); +assign Mlhxx6 = (~(Fs1ov6 & Itb7z6[8])); +assign Flhxx6 = (Tlhxx6 & Amhxx6); +assign Amhxx6 = (~(At1ov6 & Qca7z6)); +assign Tlhxx6 = (~(Kqonv6 & Ot1ov6)); +assign Iis7v6 = (Hmhxx6 | Omhxx6); +assign Omhxx6 = (Vmhxx6 & Cnhxx6); +assign Cnhxx6 = (Jnhxx6 | Gpuet6); +assign Jnhxx6 = (~(Miwet6 | Qnhxx6)); +assign Qnhxx6 = (!Q8a7z6); +assign Hmhxx6 = (Eohxx6 ? Xnhxx6 : Tim7z6[23]); +assign Xnhxx6 = (~(Lohxx6 & Sohxx6)); +assign Sohxx6 = (~(Fs1ov6 & Itb7z6[23])); +assign Lohxx6 = (Zohxx6 & Gphxx6); +assign Gphxx6 = (~(At1ov6 & Q8a7z6)); +assign Zohxx6 = (~(Xzp7x6 & Ot1ov6)); +assign Bis7v6 = (Nphxx6 | Uphxx6); +assign Uphxx6 = (Vmhxx6 & Bqhxx6); +assign Bqhxx6 = (Iqhxx6 | Hruet6); +assign Iqhxx6 = (~(Nkwet6 | Pqhxx6)); +assign Pqhxx6 = (!Y8a7z6); +assign Nphxx6 = (Eohxx6 ? Wqhxx6 : Tim7z6[22]); +assign Wqhxx6 = (~(Drhxx6 & Krhxx6)); +assign Krhxx6 = (~(Fs1ov6 & Itb7z6[22])); +assign Drhxx6 = (Rrhxx6 & Yrhxx6); +assign Yrhxx6 = (~(At1ov6 & Y8a7z6)); +assign Rrhxx6 = (~(Wuq7x6 & Ot1ov6)); +assign Uhs7v6 = (Fshxx6 | Mshxx6); +assign Mshxx6 = (Vmhxx6 & Tshxx6); +assign Tshxx6 = (Athxx6 | Ituet6); +assign Athxx6 = (~(Omwet6 | Hthxx6)); +assign Hthxx6 = (!G9a7z6); +assign Fshxx6 = (Eohxx6 ? Othxx6 : Tim7z6[21]); +assign Othxx6 = (~(Vthxx6 & Cuhxx6)); +assign Cuhxx6 = (~(Fs1ov6 & Itb7z6[21])); +assign Vthxx6 = (Juhxx6 & Quhxx6); +assign Quhxx6 = (~(At1ov6 & G9a7z6)); +assign Juhxx6 = (~(Mpq7x6 & Ot1ov6)); +assign Nhs7v6 = (Xuhxx6 | Evhxx6); +assign Evhxx6 = (Vmhxx6 & Lvhxx6); +assign Lvhxx6 = (Svhxx6 | Jvuet6); +assign Svhxx6 = (~(Powet6 | Zvhxx6)); +assign Zvhxx6 = (!Cco7v6); +assign Xuhxx6 = (Eohxx6 ? Gwhxx6 : Tim7z6[20]); +assign Gwhxx6 = (~(Nwhxx6 & Uwhxx6)); +assign Uwhxx6 = (~(Fs1ov6 & Itb7z6[20])); +assign Nwhxx6 = (Bxhxx6 & Ixhxx6); +assign Ixhxx6 = (~(At1ov6 & Cco7v6)); +assign Bxhxx6 = (~(Ckq7x6 & Ot1ov6)); +assign Ghs7v6 = (Pxhxx6 | Wxhxx6); +assign Wxhxx6 = (Vmhxx6 & Dyhxx6); +assign Dyhxx6 = (Kyhxx6 | Kxuet6); +assign Kyhxx6 = (Ryhxx6 & O9a7z6); +assign Ryhxx6 = (!Qqwet6); +assign Pxhxx6 = (Eohxx6 ? Yyhxx6 : Tim7z6[19]); +assign Yyhxx6 = (~(Fzhxx6 & Mzhxx6)); +assign Mzhxx6 = (~(Fs1ov6 & Itb7z6[19])); +assign Fzhxx6 = (Tzhxx6 & A0ixx6); +assign A0ixx6 = (~(At1ov6 & O9a7z6)); +assign Tzhxx6 = (~(Seq7x6 & Ot1ov6)); +assign Zgs7v6 = (~(H0ixx6 & O0ixx6)); +assign O0ixx6 = (~(Vmhxx6 & V0ixx6)); +assign V0ixx6 = (C1ixx6 | Lzuet6); +assign C1ixx6 = (J1ixx6 & W9a7z6); +assign J1ixx6 = (!Rswet6); +assign H0ixx6 = (Eohxx6 ? X1ixx6 : Q1ixx6); +assign X1ixx6 = (E2ixx6 & L2ixx6); +assign L2ixx6 = (~(Fs1ov6 & Itb7z6[18])); +assign E2ixx6 = (S2ixx6 & Z2ixx6); +assign Z2ixx6 = (~(At1ov6 & W9a7z6)); +assign S2ixx6 = (~(I9q7x6 & Ot1ov6)); +assign Q1ixx6 = (!Tim7z6[18]); +assign Sgs7v6 = (G3ixx6 | N3ixx6); +assign N3ixx6 = (Vmhxx6 & U3ixx6); +assign U3ixx6 = (B4ixx6 | M1vet6); +assign B4ixx6 = (~(Suwet6 | I4ixx6)); +assign I4ixx6 = (!Eaa7z6); +assign G3ixx6 = (Eohxx6 ? P4ixx6 : Tim7z6[17]); +assign P4ixx6 = (~(W4ixx6 & D5ixx6)); +assign D5ixx6 = (~(Fs1ov6 & Itb7z6[17])); +assign W4ixx6 = (K5ixx6 & R5ixx6); +assign R5ixx6 = (~(At1ov6 & Eaa7z6)); +assign K5ixx6 = (~(Y3q7x6 & Ot1ov6)); +assign Lgs7v6 = (Y5ixx6 | F6ixx6); +assign F6ixx6 = (Vmhxx6 & M6ixx6); +assign M6ixx6 = (T6ixx6 | N3vet6); +assign T6ixx6 = (~(Twwet6 | A7ixx6)); +assign A7ixx6 = (!Maa7z6); +assign Vmhxx6 = (Znn7z6[2] & Eohxx6); +assign Y5ixx6 = (Eohxx6 ? H7ixx6 : Tim7z6[16]); +assign Eohxx6 = (~(O7ixx6 & V7ixx6)); +assign V7ixx6 = (~(C8ixx6 & J8ixx6)); +assign J8ixx6 = (Q8ixx6 & Ijhxx6); +assign C8ixx6 = (Bjhxx6 & Ven7z6[0]); +assign H7ixx6 = (~(X8ixx6 & E9ixx6)); +assign E9ixx6 = (~(Fs1ov6 & Itb7z6[16])); +assign X8ixx6 = (L9ixx6 & S9ixx6); +assign S9ixx6 = (~(At1ov6 & Maa7z6)); +assign L9ixx6 = (~(V4r7x6 & Ot1ov6)); +assign Egs7v6 = (Z9ixx6 | Gaixx6); +assign Gaixx6 = (Bq1ov6 & Naixx6); +assign Naixx6 = (Uaixx6 | Zauet6); +assign Uaixx6 = (~(F4wet6 | Bbixx6)); +assign Bbixx6 = (!M6a7z6); +assign Z9ixx6 = (Kr1ov6 ? Ibixx6 : Tim7z6[30]); +assign Ibixx6 = (~(Pbixx6 & Wbixx6)); +assign Wbixx6 = (~(Fs1ov6 & Itb7z6[30])); +assign Pbixx6 = (Dcixx6 & Kcixx6); +assign Kcixx6 = (~(At1ov6 & M6a7z6)); +assign Dcixx6 = (~(Vxq7x6 & Ot1ov6)); +assign Xfs7v6 = (Rcixx6 | Ycixx6); +assign Ycixx6 = (Bq1ov6 & Fdixx6); +assign Fdixx6 = (Mdixx6 | Aduet6); +assign Mdixx6 = (~(G6wet6 | Tdixx6)); +assign Tdixx6 = (!U6a7z6); +assign Rcixx6 = (Kr1ov6 ? Aeixx6 : Tim7z6[29]); +assign Aeixx6 = (~(Heixx6 & Oeixx6)); +assign Oeixx6 = (~(Fs1ov6 & Itb7z6[29])); +assign Heixx6 = (Veixx6 & Cfixx6); +assign Cfixx6 = (~(At1ov6 & U6a7z6)); +assign Veixx6 = (~(Qrq7x6 & Ot1ov6)); +assign Qfs7v6 = (Jfixx6 | Qfixx6); +assign Qfixx6 = (Bq1ov6 & Xfixx6); +assign Xfixx6 = (Egixx6 | Bfuet6); +assign Egixx6 = (~(H8wet6 | Lgixx6)); +assign Lgixx6 = (!C7a7z6); +assign Jfixx6 = (Kr1ov6 ? Sgixx6 : Tim7z6[28]); +assign Sgixx6 = (~(Zgixx6 & Ghixx6)); +assign Ghixx6 = (~(Fs1ov6 & Itb7z6[28])); +assign Zgixx6 = (Nhixx6 & Uhixx6); +assign Uhixx6 = (~(At1ov6 & C7a7z6)); +assign Nhixx6 = (~(Gmq7x6 & Ot1ov6)); +assign Jfs7v6 = (Biixx6 | Iiixx6); +assign Iiixx6 = (Bq1ov6 & Piixx6); +assign Piixx6 = (Wiixx6 | Chuet6); +assign Wiixx6 = (~(Iawet6 | Djixx6)); +assign Djixx6 = (!K7a7z6); +assign Biixx6 = (Kr1ov6 ? Kjixx6 : Tim7z6[27]); +assign Kjixx6 = (~(Rjixx6 & Yjixx6)); +assign Yjixx6 = (~(Fs1ov6 & Itb7z6[27])); +assign Rjixx6 = (Fkixx6 & Mkixx6); +assign Mkixx6 = (~(At1ov6 & K7a7z6)); +assign Fkixx6 = (~(Wgq7x6 & Ot1ov6)); +assign Cfs7v6 = (~(Tkixx6 & Alixx6)); +assign Alixx6 = (~(Bq1ov6 & Hlixx6)); +assign Hlixx6 = (Olixx6 | Djuet6); +assign Olixx6 = (Vlixx6 & S7a7z6); +assign Vlixx6 = (!Jcwet6); +assign Tkixx6 = (Kr1ov6 ? Jmixx6 : Cmixx6); +assign Jmixx6 = (Qmixx6 & Xmixx6); +assign Xmixx6 = (~(Fs1ov6 & Itb7z6[26])); +assign Qmixx6 = (Enixx6 & Lnixx6); +assign Lnixx6 = (~(At1ov6 & S7a7z6)); +assign Enixx6 = (~(Mbq7x6 & Ot1ov6)); +assign Cmixx6 = (!Tim7z6[26]); +assign Ves7v6 = (Snixx6 | Znixx6); +assign Znixx6 = (Bq1ov6 & Goixx6); +assign Goixx6 = (Noixx6 | Eluet6); +assign Noixx6 = (~(Kewet6 | Uoixx6)); +assign Uoixx6 = (!A8a7z6); +assign Snixx6 = (Kr1ov6 ? Bpixx6 : Tim7z6[25]); +assign Bpixx6 = (~(Ipixx6 & Ppixx6)); +assign Ppixx6 = (~(Fs1ov6 & Itb7z6[25])); +assign Ipixx6 = (Wpixx6 & Dqixx6); +assign Dqixx6 = (~(At1ov6 & A8a7z6)); +assign Wpixx6 = (~(C6q7x6 & Ot1ov6)); +assign Oes7v6 = (Kqixx6 | Rqixx6); +assign Rqixx6 = (Bq1ov6 & Yqixx6); +assign Yqixx6 = (Frixx6 | Fnuet6); +assign Frixx6 = (~(Lgwet6 | Mrixx6)); +assign Mrixx6 = (!I8a7z6); +assign Bq1ov6 = (Znn7z6[2] & Kr1ov6); +assign Kqixx6 = (Kr1ov6 ? Trixx6 : Tim7z6[24]); +assign Kr1ov6 = (~(O7ixx6 & Asixx6)); +assign Asixx6 = (~(Hsixx6 & Bjhxx6)); +assign Hsixx6 = (~(Eia7z6 | Wzxet6)); +assign Eia7z6 = (Osixx6 & Vsixx6); +assign Vsixx6 = (~(Ven7z6[2] & Ven7z6[1])); +assign O7ixx6 = (Ctixx6 & Wjhxx6); +assign Wjhxx6 = (Jtixx6 & H9gxx6); +assign H9gxx6 = (~(B32iw6 & Qtixx6)); +assign B32iw6 = (!O1eiw6); +assign Jtixx6 = (~(Ijhxx6 & Xtixx6)); +assign Xtixx6 = (~(Euixx6 & Luixx6)); +assign Euixx6 = (~(Suixx6 & Cmonv6)); +assign Cmonv6 = (Bp9ov6 ? Zuixx6 : Goonv6); +assign Bp9ov6 = (!L3eiw6); +assign L3eiw6 = (~(Gvixx6 & Nvixx6)); +assign Gvixx6 = (Uvixx6 & Bwixx6); +assign Ctixx6 = (Iwixx6 & Kkhxx6); +assign Kkhxx6 = (~(Pwixx6 & Bjhxx6)); +assign Pwixx6 = (I2yet6 & Ijhxx6); +assign Iwixx6 = (~(Wwixx6 & Ykhxx6)); +assign Ykhxx6 = (Dxixx6 & Kxixx6); +assign Dxixx6 = (Rxixx6 & Ijhxx6); +assign Ijhxx6 = (!Wzxet6); +assign Wwixx6 = (Djonv6 & Kjonv6); +assign Kjonv6 = (!Mia7z6); +assign Mia7z6 = (Yxixx6 | Ven7z6[0]); +assign Trixx6 = (~(Fyixx6 & Myixx6)); +assign Myixx6 = (~(Fs1ov6 & Itb7z6[24])); +assign Fs1ov6 = (Tyixx6 & I2yet6); +assign Tyixx6 = (Ewyet6 & Znn7z6[1]); +assign Fyixx6 = (Azixx6 & Hzixx6); +assign Hzixx6 = (~(At1ov6 & I8a7z6)); +assign At1ov6 = (Rxixx6 ? Ozixx6 : Kxixx6); +assign Azixx6 = (~(Yqonv6 & Ot1ov6)); +assign Ot1ov6 = (~(Znn7z6[3] & Vzixx6)); +assign Vzixx6 = (~(C0jxx6 & I2yet6)); +assign C0jxx6 = (Styet6 & Znn7z6[1]); +assign Hes7v6 = (Mk9ov6 ? Kyn7z6[2] : J0jxx6); +assign Mk9ov6 = (~(H6l8v6 | Gazet6)); +assign H6l8v6 = (HTRANSS[1] & Zuixx6); +assign Aes7v6 = (~(Q0jxx6 & X0jxx6)); +assign X0jxx6 = (~(E1jxx6 & L1jxx6)); +assign E1jxx6 = (~(Cfonv6 | S1jxx6)); +assign Q0jxx6 = (~(Z1jxx6 & Svn7z6[0])); +assign Tds7v6 = (~(G2jxx6 & N2jxx6)); +assign N2jxx6 = (~(U2jxx6 & L1jxx6)); +assign U2jxx6 = (~(Zn9ov6 | S1jxx6)); +assign G2jxx6 = (~(Svn7z6[1] & Z1jxx6)); +assign Mds7v6 = (~(B3jxx6 & I3jxx6)); +assign I3jxx6 = (P3jxx6 | W3jxx6); +assign B3jxx6 = (D4jxx6 & K4jxx6); +assign K4jxx6 = (~(L1jxx6 & J0jxx6)); +assign L1jxx6 = (HWRITES & W3jxx6); +assign W3jxx6 = (!Z1jxx6); +assign Z1jxx6 = (~(R4jxx6 | HREADYS)); +assign R4jxx6 = (!Y4jxx6); +assign D4jxx6 = (~(S1jxx6 & HWRITES)); +assign S1jxx6 = (~(Y4jxx6 | HREADYS)); +assign Y4jxx6 = (~(Svn7z6[0] & Qtixx6)); +assign Fds7v6 = (U0jhw6 ? R3h7z6[1] : F5jxx6); +assign U0jhw6 = (G0jhw6 & M5jxx6); +assign M5jxx6 = (~(T5jxx6 & R3h7z6[0])); +assign T5jxx6 = (~(Ypinv6 | Bqmov6)); +assign Bqmov6 = (A6jxx6 & K2d7x6); +assign A6jxx6 = (I3wnv6 & U3a7x6); +assign G0jhw6 = (~(H6jxx6 & Zpdiw6)); +assign Zpdiw6 = (Ii9ov6 & Fsmov6); +assign Fsmov6 = (~(O6jxx6 & V6jxx6)); +assign V6jxx6 = (~(Sv97x6 & C7jxx6)); +assign O6jxx6 = (Iqmov6 & U3a7x6); +assign H6jxx6 = (Msmov6 & Bi9ov6); +assign Ycs7v6 = (~(J7jxx6 & Q7jxx6)); +assign Q7jxx6 = (Hbpiw6 | X7jxx6); +assign X7jxx6 = (E8jxx6 & L8jxx6); +assign L8jxx6 = (~(S8jxx6 & Cmm7z6[0])); +assign E8jxx6 = (Z8jxx6 & G9jxx6); +assign G9jxx6 = (~(N9jxx6 & U9jxx6)); +assign N9jxx6 = (~(Bajxx6 | R3ihw6)); +assign R3ihw6 = (Iajxx6 & Pajxx6); +assign Pajxx6 = (Wajxx6 & Dbjxx6); +assign Dbjxx6 = (~(Kbjxx6 & Td9ov6)); +assign Wajxx6 = (~(Rbjxx6 & Jf9ov6)); +assign Iajxx6 = (Ybjxx6 & Fcjxx6); +assign Fcjxx6 = (~(Mcjxx6 & Ve9ov6)); +assign Ybjxx6 = (~(Tcjxx6 & Fd9ov6)); +assign Z8jxx6 = (Adjxx6 | I2bov6); +assign I2bov6 = (Hdjxx6 & Odjxx6); +assign Odjxx6 = (Vdjxx6 & Cejxx6); +assign Cejxx6 = (Jejxx6 & Qejxx6); +assign Qejxx6 = (Xejxx6 & Efjxx6); +assign Efjxx6 = (~(Lfjxx6 & Pic7z6[0])); +assign Xejxx6 = (~(Sfjxx6 & vis_r12_o[0])); +assign Jejxx6 = (Zfjxx6 & Ggjxx6); +assign Ggjxx6 = (~(Ngjxx6 & vis_r11_o[0])); +assign Zfjxx6 = (~(Ugjxx6 & vis_r10_o[0])); +assign Vdjxx6 = (Bhjxx6 & Ihjxx6); +assign Ihjxx6 = (~(Phjxx6 & vis_r8_o[0])); +assign Bhjxx6 = (Whjxx6 & Dijxx6); +assign Dijxx6 = (~(Kijxx6 & vis_r7_o[0])); +assign Whjxx6 = (~(Rijxx6 & vis_r9_o[0])); +assign Hdjxx6 = (Yijxx6 & Fjjxx6); +assign Fjjxx6 = (Mjjxx6 & Tjjxx6); +assign Tjjxx6 = (Akjxx6 & Hkjxx6); +assign Hkjxx6 = (~(Okjxx6 & vis_r6_o[0])); +assign Akjxx6 = (~(Vkjxx6 & vis_r5_o[0])); +assign Mjjxx6 = (Cljxx6 & Jljxx6); +assign Jljxx6 = (~(Qljxx6 & vis_r4_o[0])); +assign Cljxx6 = (~(Xljxx6 & vis_r3_o[0])); +assign Yijxx6 = (Emjxx6 & Lmjxx6); +assign Lmjxx6 = (~(Smjxx6 & vis_r1_o[0])); +assign Emjxx6 = (Zmjxx6 & Gnjxx6); +assign Gnjxx6 = (~(Nnjxx6 & vis_r0_o[0])); +assign Zmjxx6 = (~(Unjxx6 & vis_r2_o[0])); +assign J7jxx6 = (~(K1i7z6[0] & Zs4ov6)); +assign Rcs7v6 = (~(Bojxx6 & Iojxx6)); +assign Iojxx6 = (Hbpiw6 | Pojxx6); +assign Pojxx6 = (Wojxx6 & Dpjxx6); +assign Dpjxx6 = (Kpjxx6 & Rpjxx6); +assign Rpjxx6 = (~(Ypjxx6 & U9jxx6)); +assign Ypjxx6 = (~(Bajxx6 | J5knv6)); +assign J5knv6 = (Fqjxx6 & Mqjxx6); +assign Mqjxx6 = (Tqjxx6 & Arjxx6); +assign Arjxx6 = (~(Ex77x6 & Kbjxx6)); +assign Tqjxx6 = (~(Ab67x6 & Rbjxx6)); +assign Fqjxx6 = (Hrjxx6 & Orjxx6); +assign Orjxx6 = (~(Ob67x6 & Mcjxx6)); +assign Hrjxx6 = (~(Vv77x6 & Tcjxx6)); +assign Bajxx6 = (Vrjxx6 & Csjxx6); +assign Kpjxx6 = (Adjxx6 | Lu9ov6); +assign Lu9ov6 = (Jsjxx6 & Qsjxx6); +assign Qsjxx6 = (Xsjxx6 & Etjxx6); +assign Etjxx6 = (Ltjxx6 & Stjxx6); +assign Stjxx6 = (Ztjxx6 & Gujxx6); +assign Gujxx6 = (~(Lfjxx6 & Pic7z6[1])); +assign Ztjxx6 = (~(Sfjxx6 & vis_r12_o[1])); +assign Ltjxx6 = (Nujxx6 & Uujxx6); +assign Uujxx6 = (~(Ngjxx6 & vis_r11_o[1])); +assign Nujxx6 = (~(Ugjxx6 & vis_r10_o[1])); +assign Xsjxx6 = (Bvjxx6 & Ivjxx6); +assign Ivjxx6 = (~(Phjxx6 & vis_r8_o[1])); +assign Bvjxx6 = (Pvjxx6 & Wvjxx6); +assign Wvjxx6 = (~(Kijxx6 & vis_r7_o[1])); +assign Pvjxx6 = (~(Rijxx6 & vis_r9_o[1])); +assign Jsjxx6 = (Dwjxx6 & Kwjxx6); +assign Kwjxx6 = (Rwjxx6 & Ywjxx6); +assign Ywjxx6 = (Fxjxx6 & Mxjxx6); +assign Mxjxx6 = (~(Okjxx6 & vis_r6_o[1])); +assign Fxjxx6 = (~(Vkjxx6 & vis_r5_o[1])); +assign Rwjxx6 = (Txjxx6 & Ayjxx6); +assign Ayjxx6 = (~(Qljxx6 & vis_r4_o[1])); +assign Txjxx6 = (~(Xljxx6 & vis_r3_o[1])); +assign Dwjxx6 = (Hyjxx6 & Oyjxx6); +assign Oyjxx6 = (~(Smjxx6 & vis_r1_o[1])); +assign Hyjxx6 = (Vyjxx6 & Czjxx6); +assign Czjxx6 = (~(Nnjxx6 & vis_r0_o[1])); +assign Vyjxx6 = (~(Unjxx6 & vis_r2_o[1])); +assign Wojxx6 = (Jzjxx6 & Qzjxx6); +assign Qzjxx6 = (~(Xzjxx6 & vis_pc_o[1])); +assign Jzjxx6 = (~(S8jxx6 & Cmm7z6[1])); +assign Hbpiw6 = (~(E0kxx6 & L0kxx6)); +assign L0kxx6 = (~(K0riw6 & S0kxx6)); +assign S0kxx6 = (~(Prsov6 & T1riw6)); +assign E0kxx6 = (Z0kxx6 & G1kxx6); +assign Bojxx6 = (~(K1i7z6[1] & Zs4ov6)); +assign Kcs7v6 = (~(N1kxx6 & U1kxx6)); +assign U1kxx6 = (B2kxx6 & I2kxx6); +assign I2kxx6 = (~(Xzjxx6 & vis_pc_o[2])); +assign B2kxx6 = (P2kxx6 & W2kxx6); +assign W2kxx6 = (~(U9jxx6 & Nmjnv6)); +assign Nmjnv6 = (~(D3kxx6 & K3kxx6)); +assign K3kxx6 = (R3kxx6 & Y3kxx6); +assign Y3kxx6 = (~(Kbjxx6 & Icfov6)); +assign R3kxx6 = (~(Kdfov6 & Rbjxx6)); +assign D3kxx6 = (F4kxx6 & M4kxx6); +assign M4kxx6 = (~(Ddfov6 & Mcjxx6)); +assign F4kxx6 = (~(Tcjxx6 & Bcfov6)); +assign P2kxx6 = (Adjxx6 | N5yiw6); +assign N5yiw6 = (T4kxx6 & A5kxx6); +assign A5kxx6 = (H5kxx6 & O5kxx6); +assign O5kxx6 = (V5kxx6 & C6kxx6); +assign C6kxx6 = (J6kxx6 & Q6kxx6); +assign Q6kxx6 = (~(X6kxx6 & vis_psp_o[2])); +assign J6kxx6 = (~(E7kxx6 & vis_msp_o[2])); +assign V5kxx6 = (L7kxx6 & S7kxx6); +assign S7kxx6 = (~(Lfjxx6 & Pic7z6[2])); +assign L7kxx6 = (~(Sfjxx6 & vis_r12_o[2])); +assign H5kxx6 = (Z7kxx6 & G8kxx6); +assign G8kxx6 = (N8kxx6 & U8kxx6); +assign U8kxx6 = (~(Ngjxx6 & vis_r11_o[2])); +assign N8kxx6 = (~(Ugjxx6 & vis_r10_o[2])); +assign Z7kxx6 = (B9kxx6 & I9kxx6); +assign I9kxx6 = (~(Kijxx6 & vis_r7_o[2])); +assign B9kxx6 = (~(Rijxx6 & vis_r9_o[2])); +assign T4kxx6 = (P9kxx6 & W9kxx6); +assign W9kxx6 = (Dakxx6 & Kakxx6); +assign Kakxx6 = (Rakxx6 & Yakxx6); +assign Yakxx6 = (~(Phjxx6 & vis_r8_o[2])); +assign Rakxx6 = (~(Okjxx6 & vis_r6_o[2])); +assign Dakxx6 = (Fbkxx6 & Mbkxx6); +assign Mbkxx6 = (~(Vkjxx6 & vis_r5_o[2])); +assign Fbkxx6 = (~(Qljxx6 & vis_r4_o[2])); +assign P9kxx6 = (Tbkxx6 & Ackxx6); +assign Ackxx6 = (Hckxx6 & Ockxx6); +assign Ockxx6 = (~(Xljxx6 & vis_r3_o[2])); +assign Hckxx6 = (~(Nnjxx6 & vis_r0_o[2])); +assign Tbkxx6 = (Vckxx6 & Cdkxx6); +assign Cdkxx6 = (~(Unjxx6 & vis_r2_o[2])); +assign Vckxx6 = (~(Smjxx6 & vis_r1_o[2])); +assign N1kxx6 = (Jdkxx6 & Qdkxx6); +assign Qdkxx6 = (~(S8jxx6 & Yefnv6)); +assign Jdkxx6 = (~(K1i7z6[2] & Zs4ov6)); +assign Dcs7v6 = (~(Xdkxx6 & Eekxx6)); +assign Eekxx6 = (Lekxx6 & Sekxx6); +assign Sekxx6 = (~(U9jxx6 & Rhjnv6)); +assign Rhjnv6 = (~(Zekxx6 & Gfkxx6)); +assign Gfkxx6 = (Nfkxx6 & Ufkxx6); +assign Ufkxx6 = (~(Mmlov6 & Kbjxx6)); +assign Nfkxx6 = (~(Onlov6 & Rbjxx6)); +assign Zekxx6 = (Bgkxx6 & Igkxx6); +assign Igkxx6 = (~(Hnlov6 & Mcjxx6)); +assign Bgkxx6 = (~(Fmlov6 & Tcjxx6)); +assign Lekxx6 = (Pgkxx6 & Wgkxx6); +assign Pgkxx6 = (Adjxx6 | Zhh6x6); +assign Zhh6x6 = (Dhkxx6 & Khkxx6); +assign Khkxx6 = (Rhkxx6 & Yhkxx6); +assign Yhkxx6 = (Fikxx6 & Mikxx6); +assign Mikxx6 = (Tikxx6 & Ajkxx6); +assign Ajkxx6 = (~(X6kxx6 & vis_psp_o[3])); +assign Tikxx6 = (~(E7kxx6 & vis_msp_o[3])); +assign Fikxx6 = (Hjkxx6 & Ojkxx6); +assign Ojkxx6 = (~(Lfjxx6 & Pic7z6[3])); +assign Hjkxx6 = (~(Sfjxx6 & vis_r12_o[3])); +assign Rhkxx6 = (Vjkxx6 & Ckkxx6); +assign Ckkxx6 = (Jkkxx6 & Qkkxx6); +assign Qkkxx6 = (~(Ngjxx6 & vis_r11_o[3])); +assign Jkkxx6 = (~(Ugjxx6 & vis_r10_o[3])); +assign Vjkxx6 = (Xkkxx6 & Elkxx6); +assign Elkxx6 = (~(Kijxx6 & vis_r7_o[3])); +assign Xkkxx6 = (~(Rijxx6 & vis_r9_o[3])); +assign Dhkxx6 = (Llkxx6 & Slkxx6); +assign Slkxx6 = (Zlkxx6 & Gmkxx6); +assign Gmkxx6 = (Nmkxx6 & Umkxx6); +assign Umkxx6 = (~(Phjxx6 & vis_r8_o[3])); +assign Nmkxx6 = (~(Okjxx6 & vis_r6_o[3])); +assign Zlkxx6 = (Bnkxx6 & Inkxx6); +assign Inkxx6 = (~(Vkjxx6 & vis_r5_o[3])); +assign Bnkxx6 = (~(Qljxx6 & vis_r4_o[3])); +assign Llkxx6 = (Pnkxx6 & Wnkxx6); +assign Wnkxx6 = (Dokxx6 & Kokxx6); +assign Kokxx6 = (~(Xljxx6 & vis_r3_o[3])); +assign Dokxx6 = (~(Nnjxx6 & vis_r0_o[3])); +assign Pnkxx6 = (Rokxx6 & Yokxx6); +assign Yokxx6 = (~(Unjxx6 & vis_r2_o[3])); +assign Rokxx6 = (~(Smjxx6 & vis_r1_o[3])); +assign Xdkxx6 = (Fpkxx6 & Mpkxx6); +assign Mpkxx6 = (~(K1i7z6[3] & Zs4ov6)); +assign Fpkxx6 = (Tpkxx6 & Aqkxx6); +assign Aqkxx6 = (~(Xzjxx6 & vis_pc_o[3])); +assign Tpkxx6 = (~(S8jxx6 & Cmm7z6[3])); +assign Wbs7v6 = (~(Hqkxx6 & Oqkxx6)); +assign Oqkxx6 = (Vqkxx6 & Crkxx6); +assign Crkxx6 = (~(U9jxx6 & Bgjnv6)); +assign Bgjnv6 = (~(Jrkxx6 & Qrkxx6)); +assign Qrkxx6 = (Xrkxx6 & Eskxx6); +assign Eskxx6 = (~(Cb77x6 & Kbjxx6)); +assign Xrkxx6 = (~(Tw57x6 & Rbjxx6)); +assign Jrkxx6 = (Lskxx6 & Sskxx6); +assign Sskxx6 = (~(Ax57x6 & Mcjxx6)); +assign Lskxx6 = (~(T977x6 & Tcjxx6)); +assign Vqkxx6 = (Zskxx6 & Wgkxx6); +assign Zskxx6 = (Adjxx6 | Jy2jw6); +assign Jy2jw6 = (Gtkxx6 & Ntkxx6); +assign Ntkxx6 = (Utkxx6 & Bukxx6); +assign Bukxx6 = (Iukxx6 & Pukxx6); +assign Pukxx6 = (Wukxx6 & Dvkxx6); +assign Dvkxx6 = (~(X6kxx6 & vis_psp_o[4])); +assign Wukxx6 = (~(E7kxx6 & vis_msp_o[4])); +assign Iukxx6 = (Kvkxx6 & Rvkxx6); +assign Rvkxx6 = (~(Lfjxx6 & Pic7z6[4])); +assign Kvkxx6 = (~(Sfjxx6 & vis_r12_o[4])); +assign Utkxx6 = (Yvkxx6 & Fwkxx6); +assign Fwkxx6 = (Mwkxx6 & Twkxx6); +assign Twkxx6 = (~(Ngjxx6 & vis_r11_o[4])); +assign Mwkxx6 = (~(Ugjxx6 & vis_r10_o[4])); +assign Yvkxx6 = (Axkxx6 & Hxkxx6); +assign Hxkxx6 = (~(Kijxx6 & vis_r7_o[4])); +assign Axkxx6 = (~(Rijxx6 & vis_r9_o[4])); +assign Gtkxx6 = (Oxkxx6 & Vxkxx6); +assign Vxkxx6 = (Cykxx6 & Jykxx6); +assign Jykxx6 = (Qykxx6 & Xykxx6); +assign Xykxx6 = (~(Phjxx6 & vis_r8_o[4])); +assign Qykxx6 = (~(Okjxx6 & vis_r6_o[4])); +assign Cykxx6 = (Ezkxx6 & Lzkxx6); +assign Lzkxx6 = (~(Vkjxx6 & vis_r5_o[4])); +assign Ezkxx6 = (~(Qljxx6 & vis_r4_o[4])); +assign Oxkxx6 = (Szkxx6 & Zzkxx6); +assign Zzkxx6 = (G0lxx6 & N0lxx6); +assign N0lxx6 = (~(Xljxx6 & vis_r3_o[4])); +assign G0lxx6 = (~(Nnjxx6 & vis_r0_o[4])); +assign Szkxx6 = (U0lxx6 & B1lxx6); +assign B1lxx6 = (~(Unjxx6 & vis_r2_o[4])); +assign U0lxx6 = (~(Smjxx6 & vis_r1_o[4])); +assign Hqkxx6 = (I1lxx6 & P1lxx6); +assign P1lxx6 = (~(K1i7z6[4] & Zs4ov6)); +assign I1lxx6 = (W1lxx6 & D2lxx6); +assign D2lxx6 = (~(Xzjxx6 & vis_pc_o[4])); +assign W1lxx6 = (~(S8jxx6 & Cmm7z6[4])); +assign Pbs7v6 = (~(K2lxx6 & R2lxx6)); +assign R2lxx6 = (Y2lxx6 & F3lxx6); +assign F3lxx6 = (~(U9jxx6 & Lejnv6)); +assign Lejnv6 = (~(M3lxx6 & T3lxx6)); +assign T3lxx6 = (A4lxx6 & H4lxx6); +assign H4lxx6 = (~(C477x6 & Kbjxx6)); +assign A4lxx6 = (~(Qr57x6 & Rbjxx6)); +assign M3lxx6 = (O4lxx6 & V4lxx6); +assign V4lxx6 = (~(Xr57x6 & Mcjxx6)); +assign O4lxx6 = (~(T277x6 & Tcjxx6)); +assign Y2lxx6 = (C5lxx6 & Wgkxx6); +assign C5lxx6 = (Adjxx6 | Hei6x6); +assign Hei6x6 = (J5lxx6 & Q5lxx6); +assign Q5lxx6 = (X5lxx6 & E6lxx6); +assign E6lxx6 = (L6lxx6 & S6lxx6); +assign S6lxx6 = (Z6lxx6 & G7lxx6); +assign G7lxx6 = (~(X6kxx6 & vis_psp_o[5])); +assign Z6lxx6 = (~(E7kxx6 & vis_msp_o[5])); +assign L6lxx6 = (N7lxx6 & U7lxx6); +assign U7lxx6 = (~(Lfjxx6 & Pic7z6[5])); +assign N7lxx6 = (~(Sfjxx6 & vis_r12_o[5])); +assign X5lxx6 = (B8lxx6 & I8lxx6); +assign I8lxx6 = (P8lxx6 & W8lxx6); +assign W8lxx6 = (~(Ngjxx6 & vis_r11_o[5])); +assign P8lxx6 = (~(Ugjxx6 & vis_r10_o[5])); +assign B8lxx6 = (D9lxx6 & K9lxx6); +assign K9lxx6 = (~(Kijxx6 & vis_r7_o[5])); +assign D9lxx6 = (~(Rijxx6 & vis_r9_o[5])); +assign J5lxx6 = (R9lxx6 & Y9lxx6); +assign Y9lxx6 = (Falxx6 & Malxx6); +assign Malxx6 = (Talxx6 & Ablxx6); +assign Ablxx6 = (~(Phjxx6 & vis_r8_o[5])); +assign Talxx6 = (~(Okjxx6 & vis_r6_o[5])); +assign Falxx6 = (Hblxx6 & Oblxx6); +assign Oblxx6 = (~(Vkjxx6 & vis_r5_o[5])); +assign Hblxx6 = (~(Qljxx6 & vis_r4_o[5])); +assign R9lxx6 = (Vblxx6 & Cclxx6); +assign Cclxx6 = (Jclxx6 & Qclxx6); +assign Qclxx6 = (~(Xljxx6 & vis_r3_o[5])); +assign Jclxx6 = (~(Nnjxx6 & vis_r0_o[5])); +assign Vblxx6 = (Xclxx6 & Edlxx6); +assign Edlxx6 = (~(Unjxx6 & vis_r2_o[5])); +assign Xclxx6 = (~(Smjxx6 & vis_r1_o[5])); +assign K2lxx6 = (Ldlxx6 & Sdlxx6); +assign Sdlxx6 = (~(K1i7z6[5] & Zs4ov6)); +assign Ldlxx6 = (Zdlxx6 & Gelxx6); +assign Gelxx6 = (~(Xzjxx6 & vis_pc_o[5])); +assign Zdlxx6 = (~(S8jxx6 & Cmm7z6[5])); +assign Ibs7v6 = (~(Nelxx6 & Uelxx6)); +assign Uelxx6 = (Bflxx6 & Iflxx6); +assign Iflxx6 = (~(U9jxx6 & Vcjnv6)); +assign Vcjnv6 = (~(Pflxx6 & Wflxx6)); +assign Wflxx6 = (Dglxx6 & Kglxx6); +assign Kglxx6 = (~(Cx67x6 & Kbjxx6)); +assign Dglxx6 = (~(Nm57x6 & Rbjxx6)); +assign Pflxx6 = (Rglxx6 & Yglxx6); +assign Yglxx6 = (~(Um57x6 & Mcjxx6)); +assign Rglxx6 = (~(Tv67x6 & Tcjxx6)); +assign Bflxx6 = (Fhlxx6 & Wgkxx6); +assign Fhlxx6 = (Adjxx6 | F3l6x6); +assign F3l6x6 = (Mhlxx6 & Thlxx6); +assign Thlxx6 = (Ailxx6 & Hilxx6); +assign Hilxx6 = (Oilxx6 & Vilxx6); +assign Vilxx6 = (Cjlxx6 & Jjlxx6); +assign Jjlxx6 = (~(X6kxx6 & vis_psp_o[6])); +assign Cjlxx6 = (~(E7kxx6 & vis_msp_o[6])); +assign Oilxx6 = (Qjlxx6 & Xjlxx6); +assign Xjlxx6 = (~(Lfjxx6 & Pic7z6[6])); +assign Qjlxx6 = (~(Sfjxx6 & vis_r12_o[6])); +assign Ailxx6 = (Eklxx6 & Lklxx6); +assign Lklxx6 = (Sklxx6 & Zklxx6); +assign Zklxx6 = (~(Ngjxx6 & vis_r11_o[6])); +assign Sklxx6 = (~(Ugjxx6 & vis_r10_o[6])); +assign Eklxx6 = (Gllxx6 & Nllxx6); +assign Nllxx6 = (~(Kijxx6 & vis_r7_o[6])); +assign Gllxx6 = (~(Rijxx6 & vis_r9_o[6])); +assign Mhlxx6 = (Ullxx6 & Bmlxx6); +assign Bmlxx6 = (Imlxx6 & Pmlxx6); +assign Pmlxx6 = (Wmlxx6 & Dnlxx6); +assign Dnlxx6 = (~(Phjxx6 & vis_r8_o[6])); +assign Wmlxx6 = (~(Okjxx6 & vis_r6_o[6])); +assign Imlxx6 = (Knlxx6 & Rnlxx6); +assign Rnlxx6 = (~(Vkjxx6 & vis_r5_o[6])); +assign Knlxx6 = (~(Qljxx6 & vis_r4_o[6])); +assign Ullxx6 = (Ynlxx6 & Folxx6); +assign Folxx6 = (Molxx6 & Tolxx6); +assign Tolxx6 = (~(Xljxx6 & vis_r3_o[6])); +assign Molxx6 = (~(Nnjxx6 & vis_r0_o[6])); +assign Ynlxx6 = (Aplxx6 & Hplxx6); +assign Hplxx6 = (~(Unjxx6 & vis_r2_o[6])); +assign Aplxx6 = (~(Smjxx6 & vis_r1_o[6])); +assign Nelxx6 = (Oplxx6 & Vplxx6); +assign Vplxx6 = (~(K1i7z6[6] & Zs4ov6)); +assign Oplxx6 = (Cqlxx6 & Jqlxx6); +assign Jqlxx6 = (~(Xzjxx6 & vis_pc_o[6])); +assign Cqlxx6 = (~(S8jxx6 & Cmm7z6[6])); +assign Bbs7v6 = (~(Qqlxx6 & Xqlxx6)); +assign Xqlxx6 = (Erlxx6 & Lrlxx6); +assign Lrlxx6 = (~(U9jxx6 & Fbjnv6)); +assign Fbjnv6 = (~(Srlxx6 & Zrlxx6)); +assign Zrlxx6 = (Gslxx6 & Nslxx6); +assign Nslxx6 = (~(Hp67x6 & Kbjxx6)); +assign Kbjxx6 = (~(Uslxx6 & Btlxx6)); +assign Btlxx6 = (~(Itlxx6 & Gaa7x6)); +assign Uslxx6 = (Ptlxx6 & Wtlxx6); +assign Ptlxx6 = (~(Av77x6 & Dulxx6)); +assign Gslxx6 = (~(Dh57x6 & Rbjxx6)); +assign Rbjxx6 = (~(Kulxx6 & Rulxx6)); +assign Rulxx6 = (~(Itlxx6 & Av77x6)); +assign Kulxx6 = (Yulxx6 & Fvlxx6); +assign Yulxx6 = (~(Dca7x6 & Dulxx6)); +assign Srlxx6 = (Mvlxx6 & Tvlxx6); +assign Tvlxx6 = (~(Mcjxx6 & Rh57x6)); +assign Mcjxx6 = (~(Awlxx6 & Hwlxx6)); +assign Hwlxx6 = (~(Itlxx6 & Dca7x6)); +assign Awlxx6 = (Owlxx6 & Vwlxx6); +assign Owlxx6 = (~(H287x6 & Dulxx6)); +assign Mvlxx6 = (~(Kn67x6 & Tcjxx6)); +assign Tcjxx6 = (~(Cxlxx6 & Jxlxx6)); +assign Jxlxx6 = (~(Itlxx6 & H287x6)); +assign Cxlxx6 = (Qxlxx6 & Xxlxx6); +assign Qxlxx6 = (~(Gaa7x6 & Dulxx6)); +assign Dulxx6 = (Xgmov6 | Eylxx6); +assign Erlxx6 = (Lylxx6 & Wgkxx6); +assign Lylxx6 = (Adjxx6 | Brn6x6); +assign Brn6x6 = (Sylxx6 & Zylxx6); +assign Zylxx6 = (Gzlxx6 & Nzlxx6); +assign Nzlxx6 = (Uzlxx6 & B0mxx6); +assign B0mxx6 = (I0mxx6 & P0mxx6); +assign P0mxx6 = (~(X6kxx6 & vis_psp_o[7])); +assign I0mxx6 = (~(E7kxx6 & vis_msp_o[7])); +assign Uzlxx6 = (W0mxx6 & D1mxx6); +assign D1mxx6 = (~(Lfjxx6 & Pic7z6[7])); +assign W0mxx6 = (~(Sfjxx6 & vis_r12_o[7])); +assign Gzlxx6 = (K1mxx6 & R1mxx6); +assign R1mxx6 = (Y1mxx6 & F2mxx6); +assign F2mxx6 = (~(Ngjxx6 & vis_r11_o[7])); +assign Y1mxx6 = (~(Ugjxx6 & vis_r10_o[7])); +assign K1mxx6 = (M2mxx6 & T2mxx6); +assign T2mxx6 = (~(Kijxx6 & vis_r7_o[7])); +assign M2mxx6 = (~(Rijxx6 & vis_r9_o[7])); +assign Sylxx6 = (A3mxx6 & H3mxx6); +assign H3mxx6 = (O3mxx6 & V3mxx6); +assign V3mxx6 = (C4mxx6 & J4mxx6); +assign J4mxx6 = (~(Phjxx6 & vis_r8_o[7])); +assign C4mxx6 = (~(Okjxx6 & vis_r6_o[7])); +assign O3mxx6 = (Q4mxx6 & X4mxx6); +assign X4mxx6 = (~(Vkjxx6 & vis_r5_o[7])); +assign Q4mxx6 = (~(Qljxx6 & vis_r4_o[7])); +assign A3mxx6 = (E5mxx6 & L5mxx6); +assign L5mxx6 = (S5mxx6 & Z5mxx6); +assign Z5mxx6 = (~(Xljxx6 & vis_r3_o[7])); +assign S5mxx6 = (~(Nnjxx6 & vis_r0_o[7])); +assign E5mxx6 = (G6mxx6 & N6mxx6); +assign N6mxx6 = (~(Unjxx6 & vis_r2_o[7])); +assign G6mxx6 = (~(Smjxx6 & vis_r1_o[7])); +assign Qqlxx6 = (U6mxx6 & B7mxx6); +assign B7mxx6 = (~(K1i7z6[7] & Zs4ov6)); +assign U6mxx6 = (I7mxx6 & P7mxx6); +assign P7mxx6 = (~(Xzjxx6 & vis_pc_o[7])); +assign I7mxx6 = (~(S8jxx6 & Cmm7z6[7])); +assign Uas7v6 = (~(W7mxx6 & D8mxx6)); +assign D8mxx6 = (K8mxx6 & R8mxx6); +assign R8mxx6 = (~(U9jxx6 & P9jnv6)); +assign P9jnv6 = (~(Y8mxx6 & F9mxx6)); +assign F9mxx6 = (M9mxx6 & T9mxx6); +assign T9mxx6 = (~(Aamxx6 & Td9ov6)); +assign M9mxx6 = (Hamxx6 & Oamxx6); +assign Oamxx6 = (~(Vamxx6 & Jf9ov6)); +assign Hamxx6 = (~(Cbmxx6 & Ve9ov6)); +assign Y8mxx6 = (Jbmxx6 & Qbmxx6); +assign Qbmxx6 = (~(Xbmxx6 & Fd9ov6)); +assign K8mxx6 = (Ecmxx6 & Wgkxx6); +assign Ecmxx6 = (Adjxx6 | Mo3jw6); +assign Mo3jw6 = (Lcmxx6 & Scmxx6); +assign Scmxx6 = (Zcmxx6 & Gdmxx6); +assign Gdmxx6 = (Ndmxx6 & Udmxx6); +assign Udmxx6 = (Bemxx6 & Iemxx6); +assign Iemxx6 = (~(X6kxx6 & vis_psp_o[8])); +assign Bemxx6 = (~(E7kxx6 & vis_msp_o[8])); +assign Ndmxx6 = (Pemxx6 & Wemxx6); +assign Wemxx6 = (~(Lfjxx6 & Pic7z6[8])); +assign Pemxx6 = (~(Sfjxx6 & vis_r12_o[8])); +assign Zcmxx6 = (Dfmxx6 & Kfmxx6); +assign Kfmxx6 = (Rfmxx6 & Yfmxx6); +assign Yfmxx6 = (~(Ngjxx6 & vis_r11_o[8])); +assign Rfmxx6 = (~(Ugjxx6 & vis_r10_o[8])); +assign Dfmxx6 = (Fgmxx6 & Mgmxx6); +assign Mgmxx6 = (~(Kijxx6 & vis_r7_o[8])); +assign Fgmxx6 = (~(Rijxx6 & vis_r9_o[8])); +assign Lcmxx6 = (Tgmxx6 & Ahmxx6); +assign Ahmxx6 = (Hhmxx6 & Ohmxx6); +assign Ohmxx6 = (Vhmxx6 & Cimxx6); +assign Cimxx6 = (~(Phjxx6 & vis_r8_o[8])); +assign Vhmxx6 = (~(Okjxx6 & vis_r6_o[8])); +assign Hhmxx6 = (Jimxx6 & Qimxx6); +assign Qimxx6 = (~(Vkjxx6 & vis_r5_o[8])); +assign Jimxx6 = (~(Qljxx6 & vis_r4_o[8])); +assign Tgmxx6 = (Ximxx6 & Ejmxx6); +assign Ejmxx6 = (Ljmxx6 & Sjmxx6); +assign Sjmxx6 = (~(Xljxx6 & vis_r3_o[8])); +assign Ljmxx6 = (~(Nnjxx6 & vis_r0_o[8])); +assign Ximxx6 = (Zjmxx6 & Gkmxx6); +assign Gkmxx6 = (~(Unjxx6 & vis_r2_o[8])); +assign Zjmxx6 = (~(Smjxx6 & vis_r1_o[8])); +assign W7mxx6 = (Nkmxx6 & Ukmxx6); +assign Ukmxx6 = (~(K1i7z6[8] & Zs4ov6)); +assign Nkmxx6 = (Blmxx6 & Ilmxx6); +assign Ilmxx6 = (~(Xzjxx6 & vis_pc_o[8])); +assign Blmxx6 = (~(S8jxx6 & Cmm7z6[8])); +assign Nas7v6 = (~(Plmxx6 & Wlmxx6)); +assign Wlmxx6 = (Dmmxx6 & Kmmxx6); +assign Kmmxx6 = (~(Xzjxx6 & vis_pc_o[9])); +assign Dmmxx6 = (Rmmxx6 & Ymmxx6); +assign Ymmxx6 = (~(U9jxx6 & L7jnv6)); +assign L7jnv6 = (~(Fnmxx6 & Mnmxx6)); +assign Mnmxx6 = (Tnmxx6 & Aomxx6); +assign Aomxx6 = (~(Aamxx6 & Ex77x6)); +assign Tnmxx6 = (Homxx6 & Oomxx6); +assign Oomxx6 = (~(Vamxx6 & Ab67x6)); +assign Homxx6 = (~(Cbmxx6 & Ob67x6)); +assign Fnmxx6 = (Jbmxx6 & Vomxx6); +assign Vomxx6 = (~(Xbmxx6 & Vv77x6)); +assign Rmmxx6 = (Adjxx6 | L79jw6); +assign L79jw6 = (Cpmxx6 & Jpmxx6); +assign Jpmxx6 = (Qpmxx6 & Xpmxx6); +assign Xpmxx6 = (Eqmxx6 & Lqmxx6); +assign Lqmxx6 = (Sqmxx6 & Zqmxx6); +assign Zqmxx6 = (~(X6kxx6 & vis_psp_o[9])); +assign Sqmxx6 = (~(E7kxx6 & vis_msp_o[9])); +assign Eqmxx6 = (Grmxx6 & Nrmxx6); +assign Nrmxx6 = (~(Lfjxx6 & Pic7z6[9])); +assign Grmxx6 = (~(Sfjxx6 & vis_r12_o[9])); +assign Qpmxx6 = (Urmxx6 & Bsmxx6); +assign Bsmxx6 = (Ismxx6 & Psmxx6); +assign Psmxx6 = (~(Ngjxx6 & vis_r11_o[9])); +assign Ismxx6 = (~(Ugjxx6 & vis_r10_o[9])); +assign Urmxx6 = (Wsmxx6 & Dtmxx6); +assign Dtmxx6 = (~(Kijxx6 & vis_r7_o[9])); +assign Wsmxx6 = (~(Rijxx6 & vis_r9_o[9])); +assign Cpmxx6 = (Ktmxx6 & Rtmxx6); +assign Rtmxx6 = (Ytmxx6 & Fumxx6); +assign Fumxx6 = (Mumxx6 & Tumxx6); +assign Tumxx6 = (~(Phjxx6 & vis_r8_o[9])); +assign Mumxx6 = (~(Okjxx6 & vis_r6_o[9])); +assign Ytmxx6 = (Avmxx6 & Hvmxx6); +assign Hvmxx6 = (~(Vkjxx6 & vis_r5_o[9])); +assign Avmxx6 = (~(Qljxx6 & vis_r4_o[9])); +assign Ktmxx6 = (Ovmxx6 & Vvmxx6); +assign Vvmxx6 = (Cwmxx6 & Jwmxx6); +assign Jwmxx6 = (~(Xljxx6 & vis_r3_o[9])); +assign Cwmxx6 = (~(Nnjxx6 & vis_r0_o[9])); +assign Ovmxx6 = (Qwmxx6 & Xwmxx6); +assign Xwmxx6 = (~(Unjxx6 & vis_r2_o[9])); +assign Qwmxx6 = (~(Smjxx6 & vis_r1_o[9])); +assign Plmxx6 = (Exmxx6 & Lxmxx6); +assign Lxmxx6 = (~(S8jxx6 & Cmm7z6[9])); +assign Exmxx6 = (~(K1i7z6[9] & Zs4ov6)); +assign Gas7v6 = (~(Sxmxx6 & Zxmxx6)); +assign Zxmxx6 = (Gymxx6 & Nymxx6); +assign Nymxx6 = (~(U9jxx6 & Glknv6)); +assign Glknv6 = (~(Uymxx6 & Bzmxx6)); +assign Bzmxx6 = (Izmxx6 & Pzmxx6); +assign Pzmxx6 = (~(Aamxx6 & Icfov6)); +assign Izmxx6 = (Wzmxx6 & D0nxx6); +assign D0nxx6 = (~(Kdfov6 & Vamxx6)); +assign Wzmxx6 = (~(Ddfov6 & Cbmxx6)); +assign Uymxx6 = (Jbmxx6 & K0nxx6); +assign K0nxx6 = (~(Xbmxx6 & Bcfov6)); +assign Gymxx6 = (R0nxx6 & Wgkxx6); +assign R0nxx6 = (Adjxx6 | Sc4jw6); +assign Sc4jw6 = (Y0nxx6 & F1nxx6); +assign F1nxx6 = (M1nxx6 & T1nxx6); +assign T1nxx6 = (A2nxx6 & H2nxx6); +assign H2nxx6 = (O2nxx6 & V2nxx6); +assign V2nxx6 = (~(X6kxx6 & vis_psp_o[10])); +assign O2nxx6 = (~(E7kxx6 & vis_msp_o[10])); +assign A2nxx6 = (C3nxx6 & J3nxx6); +assign J3nxx6 = (~(Lfjxx6 & Pic7z6[10])); +assign C3nxx6 = (~(Sfjxx6 & vis_r12_o[10])); +assign M1nxx6 = (Q3nxx6 & X3nxx6); +assign X3nxx6 = (E4nxx6 & L4nxx6); +assign L4nxx6 = (~(Ngjxx6 & vis_r11_o[10])); +assign E4nxx6 = (~(Ugjxx6 & vis_r10_o[10])); +assign Q3nxx6 = (S4nxx6 & Z4nxx6); +assign Z4nxx6 = (~(Kijxx6 & vis_r7_o[10])); +assign S4nxx6 = (~(Rijxx6 & vis_r9_o[10])); +assign Y0nxx6 = (G5nxx6 & N5nxx6); +assign N5nxx6 = (U5nxx6 & B6nxx6); +assign B6nxx6 = (I6nxx6 & P6nxx6); +assign P6nxx6 = (~(Phjxx6 & vis_r8_o[10])); +assign I6nxx6 = (~(Okjxx6 & vis_r6_o[10])); +assign U5nxx6 = (W6nxx6 & D7nxx6); +assign D7nxx6 = (~(Vkjxx6 & vis_r5_o[10])); +assign W6nxx6 = (~(Qljxx6 & vis_r4_o[10])); +assign G5nxx6 = (K7nxx6 & R7nxx6); +assign R7nxx6 = (Y7nxx6 & F8nxx6); +assign F8nxx6 = (~(Xljxx6 & vis_r3_o[10])); +assign Y7nxx6 = (~(Nnjxx6 & vis_r0_o[10])); +assign K7nxx6 = (M8nxx6 & T8nxx6); +assign T8nxx6 = (~(Unjxx6 & vis_r2_o[10])); +assign M8nxx6 = (~(Smjxx6 & vis_r1_o[10])); +assign Sxmxx6 = (A9nxx6 & H9nxx6); +assign H9nxx6 = (~(K1i7z6[10] & Zs4ov6)); +assign A9nxx6 = (O9nxx6 & V9nxx6); +assign V9nxx6 = (~(Xzjxx6 & vis_pc_o[10])); +assign O9nxx6 = (~(S8jxx6 & Cmm7z6[10])); +assign Z9s7v6 = (~(Canxx6 & Janxx6)); +assign Janxx6 = (Qanxx6 & Xanxx6); +assign Xanxx6 = (~(U9jxx6 & Jjknv6)); +assign Jjknv6 = (~(Ebnxx6 & Lbnxx6)); +assign Lbnxx6 = (Sbnxx6 & Zbnxx6); +assign Zbnxx6 = (~(Mmlov6 & Aamxx6)); +assign Sbnxx6 = (Gcnxx6 & Ncnxx6); +assign Ncnxx6 = (~(Onlov6 & Vamxx6)); +assign Gcnxx6 = (~(Hnlov6 & Cbmxx6)); +assign Ebnxx6 = (Jbmxx6 & Ucnxx6); +assign Ucnxx6 = (~(Fmlov6 & Xbmxx6)); +assign Qanxx6 = (Bdnxx6 & Wgkxx6); +assign Bdnxx6 = (Adjxx6 | Lyajw6); +assign Lyajw6 = (Idnxx6 & Pdnxx6); +assign Pdnxx6 = (Wdnxx6 & Denxx6); +assign Denxx6 = (Kenxx6 & Renxx6); +assign Renxx6 = (Yenxx6 & Ffnxx6); +assign Ffnxx6 = (~(X6kxx6 & vis_psp_o[11])); +assign Yenxx6 = (~(E7kxx6 & vis_msp_o[11])); +assign Kenxx6 = (Mfnxx6 & Tfnxx6); +assign Tfnxx6 = (~(Lfjxx6 & Pic7z6[11])); +assign Mfnxx6 = (~(Sfjxx6 & vis_r12_o[11])); +assign Wdnxx6 = (Agnxx6 & Hgnxx6); +assign Hgnxx6 = (Ognxx6 & Vgnxx6); +assign Vgnxx6 = (~(Ngjxx6 & vis_r11_o[11])); +assign Ognxx6 = (~(Ugjxx6 & vis_r10_o[11])); +assign Agnxx6 = (Chnxx6 & Jhnxx6); +assign Jhnxx6 = (~(Kijxx6 & vis_r7_o[11])); +assign Chnxx6 = (~(Rijxx6 & vis_r9_o[11])); +assign Idnxx6 = (Qhnxx6 & Xhnxx6); +assign Xhnxx6 = (Einxx6 & Linxx6); +assign Linxx6 = (Sinxx6 & Zinxx6); +assign Zinxx6 = (~(Phjxx6 & vis_r8_o[11])); +assign Sinxx6 = (~(Okjxx6 & vis_r6_o[11])); +assign Einxx6 = (Gjnxx6 & Njnxx6); +assign Njnxx6 = (~(Vkjxx6 & vis_r5_o[11])); +assign Gjnxx6 = (~(Qljxx6 & vis_r4_o[11])); +assign Qhnxx6 = (Ujnxx6 & Bknxx6); +assign Bknxx6 = (Iknxx6 & Pknxx6); +assign Pknxx6 = (~(Xljxx6 & vis_r3_o[11])); +assign Iknxx6 = (~(Nnjxx6 & vis_r0_o[11])); +assign Ujnxx6 = (Wknxx6 & Dlnxx6); +assign Dlnxx6 = (~(Unjxx6 & vis_r2_o[11])); +assign Wknxx6 = (~(Smjxx6 & vis_r1_o[11])); +assign Canxx6 = (Klnxx6 & Rlnxx6); +assign Rlnxx6 = (~(K1i7z6[11] & Zs4ov6)); +assign Klnxx6 = (Ylnxx6 & Fmnxx6); +assign Fmnxx6 = (~(Xzjxx6 & vis_pc_o[11])); +assign Ylnxx6 = (~(S8jxx6 & Cmm7z6[11])); +assign S9s7v6 = (~(Mmnxx6 & Tmnxx6)); +assign Tmnxx6 = (Annxx6 & Hnnxx6); +assign Hnnxx6 = (~(Xzjxx6 & vis_pc_o[12])); +assign Annxx6 = (Onnxx6 & Vnnxx6); +assign Vnnxx6 = (~(U9jxx6 & Thknv6)); +assign Thknv6 = (~(Conxx6 & Jonxx6)); +assign Jonxx6 = (Qonxx6 & Xonxx6); +assign Xonxx6 = (~(Cb77x6 & Aamxx6)); +assign Qonxx6 = (Epnxx6 & Lpnxx6); +assign Lpnxx6 = (~(Tw57x6 & Vamxx6)); +assign Epnxx6 = (~(Ax57x6 & Cbmxx6)); +assign Conxx6 = (Jbmxx6 & Spnxx6); +assign Spnxx6 = (~(T977x6 & Xbmxx6)); +assign Onnxx6 = (Adjxx6 | Tmg6x6); +assign Tmg6x6 = (Zpnxx6 & Gqnxx6); +assign Gqnxx6 = (Nqnxx6 & Uqnxx6); +assign Uqnxx6 = (Brnxx6 & Irnxx6); +assign Irnxx6 = (Prnxx6 & Wrnxx6); +assign Wrnxx6 = (~(X6kxx6 & vis_psp_o[12])); +assign Prnxx6 = (~(E7kxx6 & vis_msp_o[12])); +assign Brnxx6 = (Dsnxx6 & Ksnxx6); +assign Ksnxx6 = (~(Lfjxx6 & Pic7z6[12])); +assign Dsnxx6 = (~(Sfjxx6 & vis_r12_o[12])); +assign Nqnxx6 = (Rsnxx6 & Ysnxx6); +assign Ysnxx6 = (Ftnxx6 & Mtnxx6); +assign Mtnxx6 = (~(Ngjxx6 & vis_r11_o[12])); +assign Ftnxx6 = (~(Ugjxx6 & vis_r10_o[12])); +assign Rsnxx6 = (Ttnxx6 & Aunxx6); +assign Aunxx6 = (~(Kijxx6 & vis_r7_o[12])); +assign Ttnxx6 = (~(Rijxx6 & vis_r9_o[12])); +assign Zpnxx6 = (Hunxx6 & Ounxx6); +assign Ounxx6 = (Vunxx6 & Cvnxx6); +assign Cvnxx6 = (Jvnxx6 & Qvnxx6); +assign Qvnxx6 = (~(Phjxx6 & vis_r8_o[12])); +assign Jvnxx6 = (~(Okjxx6 & vis_r6_o[12])); +assign Vunxx6 = (Xvnxx6 & Ewnxx6); +assign Ewnxx6 = (~(Vkjxx6 & vis_r5_o[12])); +assign Xvnxx6 = (~(Qljxx6 & vis_r4_o[12])); +assign Hunxx6 = (Lwnxx6 & Swnxx6); +assign Swnxx6 = (Zwnxx6 & Gxnxx6); +assign Gxnxx6 = (~(Xljxx6 & vis_r3_o[12])); +assign Zwnxx6 = (~(Nnjxx6 & vis_r0_o[12])); +assign Lwnxx6 = (Nxnxx6 & Uxnxx6); +assign Uxnxx6 = (~(Unjxx6 & vis_r2_o[12])); +assign Nxnxx6 = (~(Smjxx6 & vis_r1_o[12])); +assign Mmnxx6 = (Bynxx6 & Iynxx6); +assign Iynxx6 = (~(S8jxx6 & Cmm7z6[12])); +assign Bynxx6 = (~(K1i7z6[12] & Zs4ov6)); +assign L9s7v6 = (~(Pynxx6 & Wynxx6)); +assign Wynxx6 = (Dznxx6 & Kznxx6); +assign Kznxx6 = (~(U9jxx6 & Dgknv6)); +assign Dgknv6 = (~(Rznxx6 & Yznxx6)); +assign Yznxx6 = (F0oxx6 & M0oxx6); +assign M0oxx6 = (~(C477x6 & Aamxx6)); +assign F0oxx6 = (T0oxx6 & A1oxx6); +assign A1oxx6 = (~(Qr57x6 & Vamxx6)); +assign T0oxx6 = (~(Xr57x6 & Cbmxx6)); +assign Rznxx6 = (Jbmxx6 & H1oxx6); +assign H1oxx6 = (~(T277x6 & Xbmxx6)); +assign Dznxx6 = (O1oxx6 & Wgkxx6); +assign O1oxx6 = (Adjxx6 | Z7k6x6); +assign Z7k6x6 = (V1oxx6 & C2oxx6); +assign C2oxx6 = (J2oxx6 & Q2oxx6); +assign Q2oxx6 = (X2oxx6 & E3oxx6); +assign E3oxx6 = (L3oxx6 & S3oxx6); +assign S3oxx6 = (~(X6kxx6 & vis_psp_o[13])); +assign L3oxx6 = (~(E7kxx6 & vis_msp_o[13])); +assign X2oxx6 = (Z3oxx6 & G4oxx6); +assign G4oxx6 = (~(Lfjxx6 & Pic7z6[13])); +assign Z3oxx6 = (~(Sfjxx6 & vis_r12_o[13])); +assign J2oxx6 = (N4oxx6 & U4oxx6); +assign U4oxx6 = (B5oxx6 & I5oxx6); +assign I5oxx6 = (~(Ngjxx6 & vis_r11_o[13])); +assign B5oxx6 = (~(Ugjxx6 & vis_r10_o[13])); +assign N4oxx6 = (P5oxx6 & W5oxx6); +assign W5oxx6 = (~(Kijxx6 & vis_r7_o[13])); +assign P5oxx6 = (~(Rijxx6 & vis_r9_o[13])); +assign V1oxx6 = (D6oxx6 & K6oxx6); +assign K6oxx6 = (R6oxx6 & Y6oxx6); +assign Y6oxx6 = (F7oxx6 & M7oxx6); +assign M7oxx6 = (~(Phjxx6 & vis_r8_o[13])); +assign F7oxx6 = (~(Okjxx6 & vis_r6_o[13])); +assign R6oxx6 = (T7oxx6 & A8oxx6); +assign A8oxx6 = (~(Vkjxx6 & vis_r5_o[13])); +assign T7oxx6 = (~(Qljxx6 & vis_r4_o[13])); +assign D6oxx6 = (H8oxx6 & O8oxx6); +assign O8oxx6 = (V8oxx6 & C9oxx6); +assign C9oxx6 = (~(Xljxx6 & vis_r3_o[13])); +assign V8oxx6 = (~(Nnjxx6 & vis_r0_o[13])); +assign H8oxx6 = (J9oxx6 & Q9oxx6); +assign Q9oxx6 = (~(Unjxx6 & vis_r2_o[13])); +assign J9oxx6 = (~(Smjxx6 & vis_r1_o[13])); +assign Pynxx6 = (X9oxx6 & Eaoxx6); +assign Eaoxx6 = (~(K1i7z6[13] & Zs4ov6)); +assign X9oxx6 = (Laoxx6 & Saoxx6); +assign Saoxx6 = (~(Xzjxx6 & vis_pc_o[13])); +assign Laoxx6 = (~(S8jxx6 & Cmm7z6[13])); +assign E9s7v6 = (~(Zaoxx6 & Gboxx6)); +assign Gboxx6 = (Nboxx6 & Uboxx6); +assign Uboxx6 = (~(U9jxx6 & Neknv6)); +assign Neknv6 = (~(Bcoxx6 & Icoxx6)); +assign Icoxx6 = (Pcoxx6 & Wcoxx6); +assign Wcoxx6 = (~(Cx67x6 & Aamxx6)); +assign Pcoxx6 = (Ddoxx6 & Kdoxx6); +assign Kdoxx6 = (~(Nm57x6 & Vamxx6)); +assign Ddoxx6 = (~(Um57x6 & Cbmxx6)); +assign Bcoxx6 = (Jbmxx6 & Rdoxx6); +assign Rdoxx6 = (~(Tv67x6 & Xbmxx6)); +assign Nboxx6 = (Ydoxx6 & Wgkxx6); +assign Ydoxx6 = (Adjxx6 | Vvm6x6); +assign Vvm6x6 = (Feoxx6 & Meoxx6); +assign Meoxx6 = (Teoxx6 & Afoxx6); +assign Afoxx6 = (Hfoxx6 & Ofoxx6); +assign Ofoxx6 = (Vfoxx6 & Cgoxx6); +assign Cgoxx6 = (~(X6kxx6 & vis_psp_o[14])); +assign Vfoxx6 = (~(E7kxx6 & vis_msp_o[14])); +assign Hfoxx6 = (Jgoxx6 & Qgoxx6); +assign Qgoxx6 = (~(Lfjxx6 & Pic7z6[14])); +assign Jgoxx6 = (~(Sfjxx6 & vis_r12_o[14])); +assign Teoxx6 = (Xgoxx6 & Ehoxx6); +assign Ehoxx6 = (Lhoxx6 & Shoxx6); +assign Shoxx6 = (~(Ngjxx6 & vis_r11_o[14])); +assign Lhoxx6 = (~(Ugjxx6 & vis_r10_o[14])); +assign Xgoxx6 = (Zhoxx6 & Gioxx6); +assign Gioxx6 = (~(Kijxx6 & vis_r7_o[14])); +assign Zhoxx6 = (~(Rijxx6 & vis_r9_o[14])); +assign Feoxx6 = (Nioxx6 & Uioxx6); +assign Uioxx6 = (Bjoxx6 & Ijoxx6); +assign Ijoxx6 = (Pjoxx6 & Wjoxx6); +assign Wjoxx6 = (~(Phjxx6 & vis_r8_o[14])); +assign Pjoxx6 = (~(Okjxx6 & vis_r6_o[14])); +assign Bjoxx6 = (Dkoxx6 & Kkoxx6); +assign Kkoxx6 = (~(Vkjxx6 & vis_r5_o[14])); +assign Dkoxx6 = (~(Qljxx6 & vis_r4_o[14])); +assign Nioxx6 = (Rkoxx6 & Ykoxx6); +assign Ykoxx6 = (Floxx6 & Mloxx6); +assign Mloxx6 = (~(Xljxx6 & vis_r3_o[14])); +assign Floxx6 = (~(Nnjxx6 & vis_r0_o[14])); +assign Rkoxx6 = (Tloxx6 & Amoxx6); +assign Amoxx6 = (~(Unjxx6 & vis_r2_o[14])); +assign Tloxx6 = (~(Smjxx6 & vis_r1_o[14])); +assign Zaoxx6 = (Hmoxx6 & Omoxx6); +assign Omoxx6 = (~(K1i7z6[14] & Zs4ov6)); +assign Hmoxx6 = (Vmoxx6 & Cnoxx6); +assign Cnoxx6 = (~(Xzjxx6 & vis_pc_o[14])); +assign Vmoxx6 = (~(S8jxx6 & Cmm7z6[14])); +assign X8s7v6 = (~(Jnoxx6 & Qnoxx6)); +assign Qnoxx6 = (Xnoxx6 & Eooxx6); +assign Eooxx6 = (~(U9jxx6 & Xcknv6)); +assign Xcknv6 = (~(Looxx6 & Sooxx6)); +assign Sooxx6 = (Zooxx6 & Gpoxx6); +assign Gpoxx6 = (~(Aamxx6 & Hp67x6)); +assign Aamxx6 = (~(Npoxx6 & Upoxx6)); +assign Upoxx6 = (~(Yc9ov6 & Bqoxx6)); +assign Zooxx6 = (Iqoxx6 & Pqoxx6); +assign Pqoxx6 = (~(Vamxx6 & Dh57x6)); +assign Vamxx6 = (~(Wqoxx6 & Droxx6)); +assign Droxx6 = (~(Md9ov6 & Bqoxx6)); +assign Iqoxx6 = (~(Cbmxx6 & Rh57x6)); +assign Cbmxx6 = (~(Kroxx6 & Rroxx6)); +assign Rroxx6 = (~(Cf9ov6 & Bqoxx6)); +assign Looxx6 = (Jbmxx6 & Yroxx6); +assign Yroxx6 = (~(Xbmxx6 & Kn67x6)); +assign Xbmxx6 = (~(Fsoxx6 & Msoxx6)); +assign Msoxx6 = (~(Oe9ov6 & Bqoxx6)); +assign Xnoxx6 = (Tsoxx6 & Wgkxx6); +assign Tsoxx6 = (Adjxx6 | C35jw6); +assign C35jw6 = (Atoxx6 & Htoxx6); +assign Htoxx6 = (Otoxx6 & Vtoxx6); +assign Vtoxx6 = (Cuoxx6 & Juoxx6); +assign Juoxx6 = (Quoxx6 & Xuoxx6); +assign Xuoxx6 = (~(X6kxx6 & vis_psp_o[15])); +assign Quoxx6 = (~(E7kxx6 & vis_msp_o[15])); +assign Cuoxx6 = (Evoxx6 & Lvoxx6); +assign Lvoxx6 = (~(Lfjxx6 & Pic7z6[15])); +assign Evoxx6 = (~(Sfjxx6 & vis_r12_o[15])); +assign Otoxx6 = (Svoxx6 & Zvoxx6); +assign Zvoxx6 = (Gwoxx6 & Nwoxx6); +assign Nwoxx6 = (~(Ngjxx6 & vis_r11_o[15])); +assign Gwoxx6 = (~(Ugjxx6 & vis_r10_o[15])); +assign Svoxx6 = (Uwoxx6 & Bxoxx6); +assign Bxoxx6 = (~(Kijxx6 & vis_r7_o[15])); +assign Uwoxx6 = (~(Rijxx6 & vis_r9_o[15])); +assign Atoxx6 = (Ixoxx6 & Pxoxx6); +assign Pxoxx6 = (Wxoxx6 & Dyoxx6); +assign Dyoxx6 = (Kyoxx6 & Ryoxx6); +assign Ryoxx6 = (~(Phjxx6 & vis_r8_o[15])); +assign Kyoxx6 = (~(Okjxx6 & vis_r6_o[15])); +assign Wxoxx6 = (Yyoxx6 & Fzoxx6); +assign Fzoxx6 = (~(Vkjxx6 & vis_r5_o[15])); +assign Yyoxx6 = (~(Qljxx6 & vis_r4_o[15])); +assign Ixoxx6 = (Mzoxx6 & Tzoxx6); +assign Tzoxx6 = (A0pxx6 & H0pxx6); +assign H0pxx6 = (~(Xljxx6 & vis_r3_o[15])); +assign A0pxx6 = (~(Nnjxx6 & vis_r0_o[15])); +assign Mzoxx6 = (O0pxx6 & V0pxx6); +assign V0pxx6 = (~(Unjxx6 & vis_r2_o[15])); +assign O0pxx6 = (~(Smjxx6 & vis_r1_o[15])); +assign Jnoxx6 = (C1pxx6 & J1pxx6); +assign J1pxx6 = (~(K1i7z6[15] & Zs4ov6)); +assign C1pxx6 = (Q1pxx6 & X1pxx6); +assign X1pxx6 = (~(Xzjxx6 & vis_pc_o[15])); +assign Q1pxx6 = (~(S8jxx6 & Cmm7z6[15])); +assign Q8s7v6 = (~(E2pxx6 & L2pxx6)); +assign L2pxx6 = (S2pxx6 & Z2pxx6); +assign Z2pxx6 = (~(Xzjxx6 & vis_pc_o[16])); +assign S2pxx6 = (G3pxx6 & N3pxx6); +assign N3pxx6 = (~(U9jxx6 & Hbknv6)); +assign Hbknv6 = (~(U3pxx6 & B4pxx6)); +assign B4pxx6 = (I4pxx6 & P4pxx6); +assign P4pxx6 = (Vwlxx6 | W4pxx6); +assign I4pxx6 = (D5pxx6 & K5pxx6); +assign K5pxx6 = (Xxlxx6 | Z487x6); +assign D5pxx6 = (Wtlxx6 | G587x6); +assign U3pxx6 = (R5pxx6 & Y5pxx6); +assign Y5pxx6 = (Fvlxx6 | F6pxx6); +assign G3pxx6 = (Adjxx6 | Kb8jw6); +assign Kb8jw6 = (M6pxx6 & T6pxx6); +assign T6pxx6 = (A7pxx6 & H7pxx6); +assign H7pxx6 = (O7pxx6 & V7pxx6); +assign V7pxx6 = (C8pxx6 & J8pxx6); +assign J8pxx6 = (~(X6kxx6 & vis_psp_o[16])); +assign C8pxx6 = (~(E7kxx6 & vis_msp_o[16])); +assign O7pxx6 = (Q8pxx6 & X8pxx6); +assign X8pxx6 = (~(Lfjxx6 & Pic7z6[16])); +assign Q8pxx6 = (~(Sfjxx6 & vis_r12_o[16])); +assign A7pxx6 = (E9pxx6 & L9pxx6); +assign L9pxx6 = (S9pxx6 & Z9pxx6); +assign Z9pxx6 = (~(Ngjxx6 & vis_r11_o[16])); +assign S9pxx6 = (~(Ugjxx6 & vis_r10_o[16])); +assign E9pxx6 = (Gapxx6 & Napxx6); +assign Napxx6 = (~(Kijxx6 & vis_r7_o[16])); +assign Gapxx6 = (~(Rijxx6 & vis_r9_o[16])); +assign M6pxx6 = (Uapxx6 & Bbpxx6); +assign Bbpxx6 = (Ibpxx6 & Pbpxx6); +assign Pbpxx6 = (Wbpxx6 & Dcpxx6); +assign Dcpxx6 = (~(Phjxx6 & vis_r8_o[16])); +assign Wbpxx6 = (~(Okjxx6 & vis_r6_o[16])); +assign Ibpxx6 = (Kcpxx6 & Rcpxx6); +assign Rcpxx6 = (~(Vkjxx6 & vis_r5_o[16])); +assign Kcpxx6 = (~(Qljxx6 & vis_r4_o[16])); +assign Uapxx6 = (Ycpxx6 & Fdpxx6); +assign Fdpxx6 = (Mdpxx6 & Tdpxx6); +assign Tdpxx6 = (~(Xljxx6 & vis_r3_o[16])); +assign Mdpxx6 = (~(Nnjxx6 & vis_r0_o[16])); +assign Ycpxx6 = (Aepxx6 & Hepxx6); +assign Hepxx6 = (~(Unjxx6 & vis_r2_o[16])); +assign Aepxx6 = (~(Smjxx6 & vis_r1_o[16])); +assign E2pxx6 = (Oepxx6 & Vepxx6); +assign Vepxx6 = (~(S8jxx6 & Cmm7z6[16])); +assign Oepxx6 = (~(K1i7z6[16] & Zs4ov6)); +assign J8s7v6 = (~(Cfpxx6 & Jfpxx6)); +assign Jfpxx6 = (Qfpxx6 & Xfpxx6); +assign Xfpxx6 = (~(Xzjxx6 & vis_pc_o[17])); +assign Qfpxx6 = (Egpxx6 & Lgpxx6); +assign Lgpxx6 = (~(U9jxx6 & R9knv6)); +assign R9knv6 = (~(Sgpxx6 & Zgpxx6)); +assign Zgpxx6 = (Ghpxx6 & Nhpxx6); +assign Nhpxx6 = (Vwlxx6 | Cu97x6); +assign Ghpxx6 = (Uhpxx6 & Bipxx6); +assign Bipxx6 = (Xxlxx6 | Iipxx6); +assign Uhpxx6 = (Wtlxx6 | Pipxx6); +assign Sgpxx6 = (R5pxx6 & Wipxx6); +assign Wipxx6 = (Fvlxx6 | Ju97x6); +assign Egpxx6 = (Adjxx6 | R2ajw6); +assign R2ajw6 = (Djpxx6 & Kjpxx6); +assign Kjpxx6 = (Rjpxx6 & Yjpxx6); +assign Yjpxx6 = (Fkpxx6 & Mkpxx6); +assign Mkpxx6 = (Tkpxx6 & Alpxx6); +assign Alpxx6 = (~(X6kxx6 & vis_psp_o[17])); +assign Tkpxx6 = (~(E7kxx6 & vis_msp_o[17])); +assign Fkpxx6 = (Hlpxx6 & Olpxx6); +assign Olpxx6 = (~(Lfjxx6 & Pic7z6[17])); +assign Hlpxx6 = (~(Sfjxx6 & vis_r12_o[17])); +assign Rjpxx6 = (Vlpxx6 & Cmpxx6); +assign Cmpxx6 = (Jmpxx6 & Qmpxx6); +assign Qmpxx6 = (~(Ngjxx6 & vis_r11_o[17])); +assign Jmpxx6 = (~(Ugjxx6 & vis_r10_o[17])); +assign Vlpxx6 = (Xmpxx6 & Enpxx6); +assign Enpxx6 = (~(Kijxx6 & vis_r7_o[17])); +assign Xmpxx6 = (~(Rijxx6 & vis_r9_o[17])); +assign Djpxx6 = (Lnpxx6 & Snpxx6); +assign Snpxx6 = (Znpxx6 & Gopxx6); +assign Gopxx6 = (Nopxx6 & Uopxx6); +assign Uopxx6 = (~(Phjxx6 & vis_r8_o[17])); +assign Nopxx6 = (~(Okjxx6 & vis_r6_o[17])); +assign Znpxx6 = (Bppxx6 & Ippxx6); +assign Ippxx6 = (~(Vkjxx6 & vis_r5_o[17])); +assign Bppxx6 = (~(Qljxx6 & vis_r4_o[17])); +assign Lnpxx6 = (Pppxx6 & Wppxx6); +assign Wppxx6 = (Dqpxx6 & Kqpxx6); +assign Kqpxx6 = (~(Xljxx6 & vis_r3_o[17])); +assign Dqpxx6 = (~(Nnjxx6 & vis_r0_o[17])); +assign Pppxx6 = (Rqpxx6 & Yqpxx6); +assign Yqpxx6 = (~(Unjxx6 & vis_r2_o[17])); +assign Rqpxx6 = (~(Smjxx6 & vis_r1_o[17])); +assign Cfpxx6 = (Frpxx6 & Mrpxx6); +assign Mrpxx6 = (~(S8jxx6 & Cmm7z6[17])); +assign Frpxx6 = (~(K1i7z6[17] & Zs4ov6)); +assign C8s7v6 = (~(Trpxx6 & Aspxx6)); +assign Aspxx6 = (Hspxx6 & Ospxx6); +assign Ospxx6 = (~(Xzjxx6 & vis_pc_o[18])); +assign Hspxx6 = (Vspxx6 & Ctpxx6); +assign Ctpxx6 = (~(U9jxx6 & B8knv6)); +assign B8knv6 = (~(Jtpxx6 & Qtpxx6)); +assign Qtpxx6 = (Xtpxx6 & Eupxx6); +assign Eupxx6 = (Vwlxx6 | Xg97x6); +assign Xtpxx6 = (Lupxx6 & Supxx6); +assign Supxx6 = (Xxlxx6 | Eh97x6); +assign Lupxx6 = (Wtlxx6 | Lh97x6); +assign Jtpxx6 = (R5pxx6 & Zupxx6); +assign Zupxx6 = (Fvlxx6 | Qg97x6); +assign Vspxx6 = (Adjxx6 | Br5jw6); +assign Br5jw6 = (Gvpxx6 & Nvpxx6); +assign Nvpxx6 = (Uvpxx6 & Bwpxx6); +assign Bwpxx6 = (Iwpxx6 & Pwpxx6); +assign Pwpxx6 = (Wwpxx6 & Dxpxx6); +assign Dxpxx6 = (~(X6kxx6 & vis_psp_o[18])); +assign Wwpxx6 = (~(E7kxx6 & vis_msp_o[18])); +assign Iwpxx6 = (Kxpxx6 & Rxpxx6); +assign Rxpxx6 = (~(Lfjxx6 & Pic7z6[18])); +assign Kxpxx6 = (~(Sfjxx6 & vis_r12_o[18])); +assign Uvpxx6 = (Yxpxx6 & Fypxx6); +assign Fypxx6 = (Mypxx6 & Typxx6); +assign Typxx6 = (~(Ngjxx6 & vis_r11_o[18])); +assign Mypxx6 = (~(Ugjxx6 & vis_r10_o[18])); +assign Yxpxx6 = (Azpxx6 & Hzpxx6); +assign Hzpxx6 = (~(Kijxx6 & vis_r7_o[18])); +assign Azpxx6 = (~(Rijxx6 & vis_r9_o[18])); +assign Gvpxx6 = (Ozpxx6 & Vzpxx6); +assign Vzpxx6 = (C0qxx6 & J0qxx6); +assign J0qxx6 = (Q0qxx6 & X0qxx6); +assign X0qxx6 = (~(Phjxx6 & vis_r8_o[18])); +assign Q0qxx6 = (~(Okjxx6 & vis_r6_o[18])); +assign C0qxx6 = (E1qxx6 & L1qxx6); +assign L1qxx6 = (~(Vkjxx6 & vis_r5_o[18])); +assign E1qxx6 = (~(Qljxx6 & vis_r4_o[18])); +assign Ozpxx6 = (S1qxx6 & Z1qxx6); +assign Z1qxx6 = (G2qxx6 & N2qxx6); +assign N2qxx6 = (~(Xljxx6 & vis_r3_o[18])); +assign G2qxx6 = (~(Nnjxx6 & vis_r0_o[18])); +assign S1qxx6 = (U2qxx6 & B3qxx6); +assign B3qxx6 = (~(Unjxx6 & vis_r2_o[18])); +assign U2qxx6 = (~(Smjxx6 & vis_r1_o[18])); +assign Trpxx6 = (I3qxx6 & P3qxx6); +assign P3qxx6 = (~(S8jxx6 & Cmm7z6[18])); +assign I3qxx6 = (~(K1i7z6[18] & Zs4ov6)); +assign V7s7v6 = (~(W3qxx6 & D4qxx6)); +assign D4qxx6 = (K4qxx6 & R4qxx6); +assign R4qxx6 = (~(Xzjxx6 & vis_pc_o[19])); +assign K4qxx6 = (Y4qxx6 & F5qxx6); +assign F5qxx6 = (~(U9jxx6 & L6knv6)); +assign L6knv6 = (~(M5qxx6 & T5qxx6)); +assign T5qxx6 = (A6qxx6 & H6qxx6); +assign H6qxx6 = (Vwlxx6 | Sa97x6); +assign A6qxx6 = (O6qxx6 & V6qxx6); +assign V6qxx6 = (Xxlxx6 | M797x6); +assign O6qxx6 = (Wtlxx6 | T797x6); +assign M5qxx6 = (R5pxx6 & C7qxx6); +assign C7qxx6 = (Fvlxx6 | Za97x6); +assign Y4qxx6 = (Adjxx6 | Rtbjw6); +assign Rtbjw6 = (J7qxx6 & Q7qxx6); +assign Q7qxx6 = (X7qxx6 & E8qxx6); +assign E8qxx6 = (L8qxx6 & S8qxx6); +assign S8qxx6 = (Z8qxx6 & G9qxx6); +assign G9qxx6 = (~(X6kxx6 & vis_psp_o[19])); +assign Z8qxx6 = (~(E7kxx6 & vis_msp_o[19])); +assign L8qxx6 = (N9qxx6 & U9qxx6); +assign U9qxx6 = (~(Lfjxx6 & Pic7z6[19])); +assign N9qxx6 = (~(Sfjxx6 & vis_r12_o[19])); +assign X7qxx6 = (Baqxx6 & Iaqxx6); +assign Iaqxx6 = (Paqxx6 & Waqxx6); +assign Waqxx6 = (~(Ngjxx6 & vis_r11_o[19])); +assign Paqxx6 = (~(Ugjxx6 & vis_r10_o[19])); +assign Baqxx6 = (Dbqxx6 & Kbqxx6); +assign Kbqxx6 = (~(Kijxx6 & vis_r7_o[19])); +assign Dbqxx6 = (~(Rijxx6 & vis_r9_o[19])); +assign J7qxx6 = (Rbqxx6 & Ybqxx6); +assign Ybqxx6 = (Fcqxx6 & Mcqxx6); +assign Mcqxx6 = (Tcqxx6 & Adqxx6); +assign Adqxx6 = (~(Phjxx6 & vis_r8_o[19])); +assign Tcqxx6 = (~(Okjxx6 & vis_r6_o[19])); +assign Fcqxx6 = (Hdqxx6 & Odqxx6); +assign Odqxx6 = (~(Vkjxx6 & vis_r5_o[19])); +assign Hdqxx6 = (~(Qljxx6 & vis_r4_o[19])); +assign Rbqxx6 = (Vdqxx6 & Ceqxx6); +assign Ceqxx6 = (Jeqxx6 & Qeqxx6); +assign Qeqxx6 = (~(Xljxx6 & vis_r3_o[19])); +assign Jeqxx6 = (~(Nnjxx6 & vis_r0_o[19])); +assign Vdqxx6 = (Xeqxx6 & Efqxx6); +assign Efqxx6 = (~(Unjxx6 & vis_r2_o[19])); +assign Xeqxx6 = (~(Smjxx6 & vis_r1_o[19])); +assign W3qxx6 = (Lfqxx6 & Sfqxx6); +assign Sfqxx6 = (~(S8jxx6 & Cmm7z6[19])); +assign Lfqxx6 = (~(K1i7z6[19] & Zs4ov6)); +assign O7s7v6 = (~(Zfqxx6 & Ggqxx6)); +assign Ggqxx6 = (Ngqxx6 & Ugqxx6); +assign Ugqxx6 = (~(Xzjxx6 & vis_pc_o[20])); +assign Ngqxx6 = (Bhqxx6 & Ihqxx6); +assign Ihqxx6 = (~(U9jxx6 & R2knv6)); +assign R2knv6 = (~(Phqxx6 & Whqxx6)); +assign Whqxx6 = (Diqxx6 & Kiqxx6); +assign Kiqxx6 = (Vwlxx6 | O197x6); +assign Diqxx6 = (Riqxx6 & Yiqxx6); +assign Yiqxx6 = (Xxlxx6 | Fjqxx6); +assign Riqxx6 = (Wtlxx6 | Mjqxx6); +assign Phqxx6 = (R5pxx6 & Tjqxx6); +assign Tjqxx6 = (Fvlxx6 | V197x6); +assign Bhqxx6 = (Adjxx6 | Dqp6x6); +assign Dqp6x6 = (Akqxx6 & Hkqxx6); +assign Hkqxx6 = (Okqxx6 & Vkqxx6); +assign Vkqxx6 = (Clqxx6 & Jlqxx6); +assign Jlqxx6 = (Qlqxx6 & Xlqxx6); +assign Xlqxx6 = (~(X6kxx6 & vis_psp_o[20])); +assign Qlqxx6 = (~(E7kxx6 & vis_msp_o[20])); +assign Clqxx6 = (Emqxx6 & Lmqxx6); +assign Lmqxx6 = (~(Lfjxx6 & Pic7z6[20])); +assign Emqxx6 = (~(Sfjxx6 & vis_r12_o[20])); +assign Okqxx6 = (Smqxx6 & Zmqxx6); +assign Zmqxx6 = (Gnqxx6 & Nnqxx6); +assign Nnqxx6 = (~(Ngjxx6 & vis_r11_o[20])); +assign Gnqxx6 = (~(Ugjxx6 & vis_r10_o[20])); +assign Smqxx6 = (Unqxx6 & Boqxx6); +assign Boqxx6 = (~(Kijxx6 & vis_r7_o[20])); +assign Unqxx6 = (~(Rijxx6 & vis_r9_o[20])); +assign Akqxx6 = (Ioqxx6 & Poqxx6); +assign Poqxx6 = (Woqxx6 & Dpqxx6); +assign Dpqxx6 = (Kpqxx6 & Rpqxx6); +assign Rpqxx6 = (~(Phjxx6 & vis_r8_o[20])); +assign Kpqxx6 = (~(Okjxx6 & vis_r6_o[20])); +assign Woqxx6 = (Ypqxx6 & Fqqxx6); +assign Fqqxx6 = (~(Vkjxx6 & vis_r5_o[20])); +assign Ypqxx6 = (~(Qljxx6 & vis_r4_o[20])); +assign Ioqxx6 = (Mqqxx6 & Tqqxx6); +assign Tqqxx6 = (Arqxx6 & Hrqxx6); +assign Hrqxx6 = (~(Xljxx6 & vis_r3_o[20])); +assign Arqxx6 = (~(Nnjxx6 & vis_r0_o[20])); +assign Mqqxx6 = (Orqxx6 & Vrqxx6); +assign Vrqxx6 = (~(Unjxx6 & vis_r2_o[20])); +assign Orqxx6 = (~(Smjxx6 & vis_r1_o[20])); +assign Zfqxx6 = (Csqxx6 & Jsqxx6); +assign Jsqxx6 = (~(S8jxx6 & Cmm7z6[20])); +assign Csqxx6 = (~(K1i7z6[20] & Zs4ov6)); +assign H7s7v6 = (~(Qsqxx6 & Xsqxx6)); +assign Xsqxx6 = (Etqxx6 & Ltqxx6); +assign Ltqxx6 = (~(Xzjxx6 & vis_pc_o[21])); +assign Etqxx6 = (Stqxx6 & Ztqxx6); +assign Ztqxx6 = (~(U9jxx6 & B1knv6)); +assign B1knv6 = (~(Guqxx6 & Nuqxx6)); +assign Nuqxx6 = (Uuqxx6 & Bvqxx6); +assign Bvqxx6 = (Vwlxx6 | Mt87x6); +assign Uuqxx6 = (Ivqxx6 & Pvqxx6); +assign Pvqxx6 = (Xxlxx6 | Wvqxx6); +assign Ivqxx6 = (Wtlxx6 | Dwqxx6); +assign Guqxx6 = (R5pxx6 & Kwqxx6); +assign Kwqxx6 = (Fvlxx6 | Tt87x6); +assign Stqxx6 = (Adjxx6 | Fcj6x6); +assign Fcj6x6 = (Rwqxx6 & Ywqxx6); +assign Ywqxx6 = (Fxqxx6 & Mxqxx6); +assign Mxqxx6 = (Txqxx6 & Ayqxx6); +assign Ayqxx6 = (Hyqxx6 & Oyqxx6); +assign Oyqxx6 = (~(X6kxx6 & vis_psp_o[21])); +assign Hyqxx6 = (~(E7kxx6 & vis_msp_o[21])); +assign Txqxx6 = (Vyqxx6 & Czqxx6); +assign Czqxx6 = (~(Lfjxx6 & Pic7z6[21])); +assign Vyqxx6 = (~(Sfjxx6 & vis_r12_o[21])); +assign Fxqxx6 = (Jzqxx6 & Qzqxx6); +assign Qzqxx6 = (Xzqxx6 & E0rxx6); +assign E0rxx6 = (~(Ngjxx6 & vis_r11_o[21])); +assign Xzqxx6 = (~(Ugjxx6 & vis_r10_o[21])); +assign Jzqxx6 = (L0rxx6 & S0rxx6); +assign S0rxx6 = (~(Kijxx6 & vis_r7_o[21])); +assign L0rxx6 = (~(Rijxx6 & vis_r9_o[21])); +assign Rwqxx6 = (Z0rxx6 & G1rxx6); +assign G1rxx6 = (N1rxx6 & U1rxx6); +assign U1rxx6 = (B2rxx6 & I2rxx6); +assign I2rxx6 = (~(Phjxx6 & vis_r8_o[21])); +assign B2rxx6 = (~(Okjxx6 & vis_r6_o[21])); +assign N1rxx6 = (P2rxx6 & W2rxx6); +assign W2rxx6 = (~(Vkjxx6 & vis_r5_o[21])); +assign P2rxx6 = (~(Qljxx6 & vis_r4_o[21])); +assign Z0rxx6 = (D3rxx6 & K3rxx6); +assign K3rxx6 = (R3rxx6 & Y3rxx6); +assign Y3rxx6 = (~(Xljxx6 & vis_r3_o[21])); +assign R3rxx6 = (~(Nnjxx6 & vis_r0_o[21])); +assign D3rxx6 = (F4rxx6 & M4rxx6); +assign M4rxx6 = (~(Unjxx6 & vis_r2_o[21])); +assign F4rxx6 = (~(Smjxx6 & vis_r1_o[21])); +assign Qsqxx6 = (T4rxx6 & A5rxx6); +assign A5rxx6 = (~(S8jxx6 & Cmm7z6[21])); +assign T4rxx6 = (~(K1i7z6[21] & Zs4ov6)); +assign A7s7v6 = (~(H5rxx6 & O5rxx6)); +assign O5rxx6 = (V5rxx6 & C6rxx6); +assign C6rxx6 = (~(Xzjxx6 & vis_pc_o[22])); +assign V5rxx6 = (J6rxx6 & Q6rxx6); +assign Q6rxx6 = (~(U9jxx6 & Lzjnv6)); +assign Lzjnv6 = (~(X6rxx6 & E7rxx6)); +assign E7rxx6 = (L7rxx6 & S7rxx6); +assign S7rxx6 = (Vwlxx6 | Kl87x6); +assign L7rxx6 = (Z7rxx6 & G8rxx6); +assign G8rxx6 = (Xxlxx6 | N8rxx6); +assign Z7rxx6 = (Wtlxx6 | U8rxx6); +assign X6rxx6 = (R5pxx6 & B9rxx6); +assign B9rxx6 = (Fvlxx6 | Rl87x6); +assign J6rxx6 = (Adjxx6 | B0m6x6); +assign B0m6x6 = (I9rxx6 & P9rxx6); +assign P9rxx6 = (W9rxx6 & Darxx6); +assign Darxx6 = (Karxx6 & Rarxx6); +assign Rarxx6 = (Yarxx6 & Fbrxx6); +assign Fbrxx6 = (~(X6kxx6 & vis_psp_o[22])); +assign Yarxx6 = (~(E7kxx6 & vis_msp_o[22])); +assign Karxx6 = (Mbrxx6 & Tbrxx6); +assign Tbrxx6 = (~(Lfjxx6 & Pic7z6[22])); +assign Mbrxx6 = (~(Sfjxx6 & vis_r12_o[22])); +assign W9rxx6 = (Acrxx6 & Hcrxx6); +assign Hcrxx6 = (Ocrxx6 & Vcrxx6); +assign Vcrxx6 = (~(Ngjxx6 & vis_r11_o[22])); +assign Ocrxx6 = (~(Ugjxx6 & vis_r10_o[22])); +assign Acrxx6 = (Cdrxx6 & Jdrxx6); +assign Jdrxx6 = (~(Kijxx6 & vis_r7_o[22])); +assign Cdrxx6 = (~(Rijxx6 & vis_r9_o[22])); +assign I9rxx6 = (Qdrxx6 & Xdrxx6); +assign Xdrxx6 = (Eerxx6 & Lerxx6); +assign Lerxx6 = (Serxx6 & Zerxx6); +assign Zerxx6 = (~(Phjxx6 & vis_r8_o[22])); +assign Serxx6 = (~(Okjxx6 & vis_r6_o[22])); +assign Eerxx6 = (Gfrxx6 & Nfrxx6); +assign Nfrxx6 = (~(Vkjxx6 & vis_r5_o[22])); +assign Gfrxx6 = (~(Qljxx6 & vis_r4_o[22])); +assign Qdrxx6 = (Ufrxx6 & Bgrxx6); +assign Bgrxx6 = (Igrxx6 & Pgrxx6); +assign Pgrxx6 = (~(Xljxx6 & vis_r3_o[22])); +assign Igrxx6 = (~(Nnjxx6 & vis_r0_o[22])); +assign Ufrxx6 = (Wgrxx6 & Dhrxx6); +assign Dhrxx6 = (~(Unjxx6 & vis_r2_o[22])); +assign Wgrxx6 = (~(Smjxx6 & vis_r1_o[22])); +assign H5rxx6 = (Khrxx6 & Rhrxx6); +assign Rhrxx6 = (~(S8jxx6 & Cmm7z6[22])); +assign Khrxx6 = (~(K1i7z6[22] & Zs4ov6)); +assign T6s7v6 = (~(Yhrxx6 & Firxx6)); +assign Firxx6 = (Mirxx6 & Tirxx6); +assign Tirxx6 = (~(Xzjxx6 & vis_pc_o[23])); +assign Mirxx6 = (Ajrxx6 & Hjrxx6); +assign Hjrxx6 = (~(U9jxx6 & Vxjnv6)); +assign Vxjnv6 = (~(Ojrxx6 & Vjrxx6)); +assign Vjrxx6 = (Ckrxx6 & Jkrxx6); +assign Jkrxx6 = (Vwlxx6 | Qkrxx6); +assign Vwlxx6 = (~(Oe9ov6 & Edh7z6[1])); +assign Oe9ov6 = (Xgmov6 ? H287x6 : Gaa7x6); +assign Ckrxx6 = (Xkrxx6 & Elrxx6); +assign Elrxx6 = (Xxlxx6 | Llrxx6); +assign Xxlxx6 = (~(Yc9ov6 & Edh7z6[1])); +assign Yc9ov6 = (Xgmov6 ? Gaa7x6 : Av77x6); +assign Xkrxx6 = (Wtlxx6 | Slrxx6); +assign Wtlxx6 = (~(Md9ov6 & Edh7z6[1])); +assign Md9ov6 = (Xgmov6 ? Av77x6 : Dca7x6); +assign Ojrxx6 = (R5pxx6 & Zlrxx6); +assign Zlrxx6 = (Fvlxx6 | Gmrxx6); +assign Fvlxx6 = (~(Cf9ov6 & Edh7z6[1])); +assign Cf9ov6 = (Xgmov6 ? Dca7x6 : H287x6); +assign Ajrxx6 = (Adjxx6 | Quo6x6); +assign Quo6x6 = (Nmrxx6 & Umrxx6); +assign Umrxx6 = (Bnrxx6 & Inrxx6); +assign Inrxx6 = (Pnrxx6 & Wnrxx6); +assign Wnrxx6 = (Dorxx6 & Korxx6); +assign Korxx6 = (~(X6kxx6 & vis_psp_o[23])); +assign Dorxx6 = (~(E7kxx6 & vis_msp_o[23])); +assign Pnrxx6 = (Rorxx6 & Yorxx6); +assign Yorxx6 = (~(Lfjxx6 & Pic7z6[23])); +assign Rorxx6 = (~(Sfjxx6 & vis_r12_o[23])); +assign Bnrxx6 = (Fprxx6 & Mprxx6); +assign Mprxx6 = (Tprxx6 & Aqrxx6); +assign Aqrxx6 = (~(Ngjxx6 & vis_r11_o[23])); +assign Tprxx6 = (~(Ugjxx6 & vis_r10_o[23])); +assign Fprxx6 = (Hqrxx6 & Oqrxx6); +assign Oqrxx6 = (~(Kijxx6 & vis_r7_o[23])); +assign Hqrxx6 = (~(Rijxx6 & vis_r9_o[23])); +assign Nmrxx6 = (Vqrxx6 & Crrxx6); +assign Crrxx6 = (Jrrxx6 & Qrrxx6); +assign Qrrxx6 = (Xrrxx6 & Esrxx6); +assign Esrxx6 = (~(Phjxx6 & vis_r8_o[23])); +assign Xrrxx6 = (~(Okjxx6 & vis_r6_o[23])); +assign Jrrxx6 = (Lsrxx6 & Ssrxx6); +assign Ssrxx6 = (~(Vkjxx6 & vis_r5_o[23])); +assign Lsrxx6 = (~(Qljxx6 & vis_r4_o[23])); +assign Vqrxx6 = (Zsrxx6 & Gtrxx6); +assign Gtrxx6 = (Ntrxx6 & Utrxx6); +assign Utrxx6 = (~(Xljxx6 & vis_r3_o[23])); +assign Ntrxx6 = (~(Nnjxx6 & vis_r0_o[23])); +assign Zsrxx6 = (Burxx6 & Iurxx6); +assign Iurxx6 = (~(Unjxx6 & vis_r2_o[23])); +assign Burxx6 = (~(Smjxx6 & vis_r1_o[23])); +assign Yhrxx6 = (Purxx6 & Wurxx6); +assign Wurxx6 = (~(S8jxx6 & Cmm7z6[23])); +assign Purxx6 = (~(K1i7z6[23] & Zs4ov6)); +assign M6s7v6 = (~(Dvrxx6 & Kvrxx6)); +assign Kvrxx6 = (Rvrxx6 & Yvrxx6); +assign Yvrxx6 = (~(Xzjxx6 & vis_pc_o[24])); +assign Rvrxx6 = (Fwrxx6 & Mwrxx6); +assign Mwrxx6 = (~(U9jxx6 & Fwjnv6)); +assign Fwjnv6 = (~(Twrxx6 & Axrxx6)); +assign Axrxx6 = (Hxrxx6 & Oxrxx6); +assign Oxrxx6 = (Kroxx6 | W4pxx6); +assign W4pxx6 = (!Td9ov6); +assign Hxrxx6 = (Vxrxx6 & Cyrxx6); +assign Cyrxx6 = (Fsoxx6 | Z487x6); +assign Z487x6 = (!Jf9ov6); +assign Vxrxx6 = (Npoxx6 | G587x6); +assign G587x6 = (!Ve9ov6); +assign Twrxx6 = (R5pxx6 & Jyrxx6); +assign Jyrxx6 = (Wqoxx6 | F6pxx6); +assign F6pxx6 = (!Fd9ov6); +assign Fwrxx6 = (Adjxx6 | Xf7jw6); +assign Xf7jw6 = (Qyrxx6 & Xyrxx6); +assign Xyrxx6 = (Ezrxx6 & Lzrxx6); +assign Lzrxx6 = (Szrxx6 & Zzrxx6); +assign Zzrxx6 = (G0sxx6 & N0sxx6); +assign N0sxx6 = (~(X6kxx6 & vis_psp_o[24])); +assign G0sxx6 = (~(E7kxx6 & vis_msp_o[24])); +assign Szrxx6 = (U0sxx6 & B1sxx6); +assign B1sxx6 = (~(Lfjxx6 & Pic7z6[24])); +assign U0sxx6 = (~(Sfjxx6 & vis_r12_o[24])); +assign Ezrxx6 = (I1sxx6 & P1sxx6); +assign P1sxx6 = (W1sxx6 & D2sxx6); +assign D2sxx6 = (~(Ngjxx6 & vis_r11_o[24])); +assign W1sxx6 = (~(Ugjxx6 & vis_r10_o[24])); +assign I1sxx6 = (K2sxx6 & R2sxx6); +assign R2sxx6 = (~(Kijxx6 & vis_r7_o[24])); +assign K2sxx6 = (~(Rijxx6 & vis_r9_o[24])); +assign Qyrxx6 = (Y2sxx6 & F3sxx6); +assign F3sxx6 = (M3sxx6 & T3sxx6); +assign T3sxx6 = (A4sxx6 & H4sxx6); +assign H4sxx6 = (~(Phjxx6 & vis_r8_o[24])); +assign A4sxx6 = (~(Okjxx6 & vis_r6_o[24])); +assign M3sxx6 = (O4sxx6 & V4sxx6); +assign V4sxx6 = (~(Vkjxx6 & vis_r5_o[24])); +assign O4sxx6 = (~(Qljxx6 & vis_r4_o[24])); +assign Y2sxx6 = (C5sxx6 & J5sxx6); +assign J5sxx6 = (Q5sxx6 & X5sxx6); +assign X5sxx6 = (~(Xljxx6 & vis_r3_o[24])); +assign Q5sxx6 = (~(Nnjxx6 & vis_r0_o[24])); +assign C5sxx6 = (E6sxx6 & L6sxx6); +assign L6sxx6 = (~(Unjxx6 & vis_r2_o[24])); +assign E6sxx6 = (~(Smjxx6 & vis_r1_o[24])); +assign Dvrxx6 = (S6sxx6 & Z6sxx6); +assign Z6sxx6 = (~(S8jxx6 & Cmm7z6[24])); +assign S6sxx6 = (~(K1i7z6[24] & Zs4ov6)); +assign F6s7v6 = (~(G7sxx6 & N7sxx6)); +assign N7sxx6 = (U7sxx6 & B8sxx6); +assign B8sxx6 = (~(Xzjxx6 & vis_pc_o[25])); +assign U7sxx6 = (I8sxx6 & P8sxx6); +assign P8sxx6 = (~(U9jxx6 & Pujnv6)); +assign Pujnv6 = (~(W8sxx6 & D9sxx6)); +assign D9sxx6 = (K9sxx6 & R9sxx6); +assign R9sxx6 = (Kroxx6 | Cu97x6); +assign Cu97x6 = (!Ex77x6); +assign K9sxx6 = (Y9sxx6 & Fasxx6); +assign Fasxx6 = (Fsoxx6 | Iipxx6); +assign Iipxx6 = (!Ab67x6); +assign Y9sxx6 = (Npoxx6 | Pipxx6); +assign Pipxx6 = (!Ob67x6); +assign W8sxx6 = (R5pxx6 & Masxx6); +assign Masxx6 = (Wqoxx6 | Ju97x6); +assign Ju97x6 = (!Vv77x6); +assign I8sxx6 = (Adjxx6 | Dk6jw6); +assign Dk6jw6 = (Tasxx6 & Absxx6); +assign Absxx6 = (Hbsxx6 & Obsxx6); +assign Obsxx6 = (Vbsxx6 & Ccsxx6); +assign Ccsxx6 = (Jcsxx6 & Qcsxx6); +assign Qcsxx6 = (~(X6kxx6 & vis_psp_o[25])); +assign Jcsxx6 = (~(E7kxx6 & vis_msp_o[25])); +assign Vbsxx6 = (Xcsxx6 & Edsxx6); +assign Edsxx6 = (~(Lfjxx6 & Pic7z6[25])); +assign Xcsxx6 = (~(Sfjxx6 & vis_r12_o[25])); +assign Hbsxx6 = (Ldsxx6 & Sdsxx6); +assign Sdsxx6 = (Zdsxx6 & Gesxx6); +assign Gesxx6 = (~(Ngjxx6 & vis_r11_o[25])); +assign Zdsxx6 = (~(Ugjxx6 & vis_r10_o[25])); +assign Ldsxx6 = (Nesxx6 & Uesxx6); +assign Uesxx6 = (~(Kijxx6 & vis_r7_o[25])); +assign Nesxx6 = (~(Rijxx6 & vis_r9_o[25])); +assign Tasxx6 = (Bfsxx6 & Ifsxx6); +assign Ifsxx6 = (Pfsxx6 & Wfsxx6); +assign Wfsxx6 = (Dgsxx6 & Kgsxx6); +assign Kgsxx6 = (~(Phjxx6 & vis_r8_o[25])); +assign Dgsxx6 = (~(Okjxx6 & vis_r6_o[25])); +assign Pfsxx6 = (Rgsxx6 & Ygsxx6); +assign Ygsxx6 = (~(Vkjxx6 & vis_r5_o[25])); +assign Rgsxx6 = (~(Qljxx6 & vis_r4_o[25])); +assign Bfsxx6 = (Fhsxx6 & Mhsxx6); +assign Mhsxx6 = (Thsxx6 & Aisxx6); +assign Aisxx6 = (~(Xljxx6 & vis_r3_o[25])); +assign Thsxx6 = (~(Nnjxx6 & vis_r0_o[25])); +assign Fhsxx6 = (Hisxx6 & Oisxx6); +assign Oisxx6 = (~(Unjxx6 & vis_r2_o[25])); +assign Hisxx6 = (~(Smjxx6 & vis_r1_o[25])); +assign G7sxx6 = (Visxx6 & Cjsxx6); +assign Cjsxx6 = (~(S8jxx6 & Cmm7z6[25])); +assign Visxx6 = (~(K1i7z6[25] & Zs4ov6)); +assign Y5s7v6 = (~(Jjsxx6 & Qjsxx6)); +assign Qjsxx6 = (Xjsxx6 & Eksxx6); +assign Eksxx6 = (~(Xzjxx6 & vis_pc_o[26])); +assign Xjsxx6 = (Lksxx6 & Sksxx6); +assign Sksxx6 = (~(U9jxx6 & Zsjnv6)); +assign Zsjnv6 = (~(Zksxx6 & Glsxx6)); +assign Glsxx6 = (Nlsxx6 & Ulsxx6); +assign Ulsxx6 = (Kroxx6 | Xg97x6); +assign Xg97x6 = (!Icfov6); +assign Nlsxx6 = (Bmsxx6 & Imsxx6); +assign Imsxx6 = (Eh97x6 | Fsoxx6); +assign Eh97x6 = (!Kdfov6); +assign Bmsxx6 = (Lh97x6 | Npoxx6); +assign Lh97x6 = (!Ddfov6); +assign Zksxx6 = (R5pxx6 & Pmsxx6); +assign Pmsxx6 = (Wqoxx6 | Qg97x6); +assign Qg97x6 = (!Bcfov6); +assign Lksxx6 = (Adjxx6 | U0s6x6); +assign U0s6x6 = (Wmsxx6 & Dnsxx6); +assign Dnsxx6 = (Knsxx6 & Rnsxx6); +assign Rnsxx6 = (Ynsxx6 & Fosxx6); +assign Fosxx6 = (Mosxx6 & Tosxx6); +assign Tosxx6 = (~(X6kxx6 & vis_psp_o[26])); +assign Mosxx6 = (~(E7kxx6 & vis_msp_o[26])); +assign Ynsxx6 = (Apsxx6 & Hpsxx6); +assign Hpsxx6 = (~(Lfjxx6 & Pic7z6[26])); +assign Apsxx6 = (~(Sfjxx6 & vis_r12_o[26])); +assign Knsxx6 = (Opsxx6 & Vpsxx6); +assign Vpsxx6 = (Cqsxx6 & Jqsxx6); +assign Jqsxx6 = (~(Ngjxx6 & vis_r11_o[26])); +assign Cqsxx6 = (~(Ugjxx6 & vis_r10_o[26])); +assign Opsxx6 = (Qqsxx6 & Xqsxx6); +assign Xqsxx6 = (~(Kijxx6 & vis_r7_o[26])); +assign Qqsxx6 = (~(Rijxx6 & vis_r9_o[26])); +assign Wmsxx6 = (Ersxx6 & Lrsxx6); +assign Lrsxx6 = (Srsxx6 & Zrsxx6); +assign Zrsxx6 = (Gssxx6 & Nssxx6); +assign Nssxx6 = (~(Phjxx6 & vis_r8_o[26])); +assign Gssxx6 = (~(Okjxx6 & vis_r6_o[26])); +assign Srsxx6 = (Vssxx6 & Dtsxx6); +assign Dtsxx6 = (~(Vkjxx6 & vis_r5_o[26])); +assign Vssxx6 = (~(Qljxx6 & vis_r4_o[26])); +assign Ersxx6 = (Ltsxx6 & Ttsxx6); +assign Ttsxx6 = (Busxx6 & Jusxx6); +assign Jusxx6 = (~(Xljxx6 & vis_r3_o[26])); +assign Busxx6 = (~(Nnjxx6 & vis_r0_o[26])); +assign Ltsxx6 = (Rusxx6 & Zusxx6); +assign Zusxx6 = (~(Unjxx6 & vis_r2_o[26])); +assign Rusxx6 = (~(Smjxx6 & vis_r1_o[26])); +assign Jjsxx6 = (Hvsxx6 & Pvsxx6); +assign Pvsxx6 = (~(S8jxx6 & Cmm7z6[26])); +assign Hvsxx6 = (~(K1i7z6[26] & Zs4ov6)); +assign R5s7v6 = (~(Xvsxx6 & Fwsxx6)); +assign Fwsxx6 = (Nwsxx6 & Vwsxx6); +assign Vwsxx6 = (~(Xzjxx6 & vis_pc_o[27])); +assign Nwsxx6 = (Dxsxx6 & Lxsxx6); +assign Lxsxx6 = (~(U9jxx6 & Jrjnv6)); +assign Jrjnv6 = (~(Txsxx6 & Bysxx6)); +assign Bysxx6 = (Jysxx6 & Rysxx6); +assign Rysxx6 = (Sa97x6 | Kroxx6); +assign Sa97x6 = (!Mmlov6); +assign Jysxx6 = (Zysxx6 & Hzsxx6); +assign Hzsxx6 = (M797x6 | Fsoxx6); +assign M797x6 = (!Onlov6); +assign Zysxx6 = (T797x6 | Npoxx6); +assign T797x6 = (!Hnlov6); +assign Txsxx6 = (R5pxx6 & Pzsxx6); +assign Pzsxx6 = (Za97x6 | Wqoxx6); +assign Za97x6 = (!Fmlov6); +assign Dxsxx6 = (Adjxx6 | Ers6x6); +assign Ers6x6 = (Xzsxx6 & F0txx6); +assign F0txx6 = (N0txx6 & V0txx6); +assign V0txx6 = (D1txx6 & L1txx6); +assign L1txx6 = (T1txx6 & B2txx6); +assign B2txx6 = (~(X6kxx6 & vis_psp_o[27])); +assign T1txx6 = (~(E7kxx6 & vis_msp_o[27])); +assign D1txx6 = (J2txx6 & R2txx6); +assign R2txx6 = (~(Lfjxx6 & Pic7z6[27])); +assign J2txx6 = (~(Sfjxx6 & vis_r12_o[27])); +assign N0txx6 = (Z2txx6 & H3txx6); +assign H3txx6 = (P3txx6 & X3txx6); +assign X3txx6 = (~(Ngjxx6 & vis_r11_o[27])); +assign P3txx6 = (~(Ugjxx6 & vis_r10_o[27])); +assign Z2txx6 = (F4txx6 & N4txx6); +assign N4txx6 = (~(Kijxx6 & vis_r7_o[27])); +assign F4txx6 = (~(Rijxx6 & vis_r9_o[27])); +assign Xzsxx6 = (V4txx6 & D5txx6); +assign D5txx6 = (L5txx6 & T5txx6); +assign T5txx6 = (B6txx6 & J6txx6); +assign J6txx6 = (~(Phjxx6 & vis_r8_o[27])); +assign B6txx6 = (~(Okjxx6 & vis_r6_o[27])); +assign L5txx6 = (R6txx6 & Z6txx6); +assign Z6txx6 = (~(Vkjxx6 & vis_r5_o[27])); +assign R6txx6 = (~(Qljxx6 & vis_r4_o[27])); +assign V4txx6 = (H7txx6 & P7txx6); +assign P7txx6 = (X7txx6 & F8txx6); +assign F8txx6 = (~(Xljxx6 & vis_r3_o[27])); +assign X7txx6 = (~(Nnjxx6 & vis_r0_o[27])); +assign H7txx6 = (N8txx6 & V8txx6); +assign V8txx6 = (~(Unjxx6 & vis_r2_o[27])); +assign N8txx6 = (~(Smjxx6 & vis_r1_o[27])); +assign Xvsxx6 = (D9txx6 & L9txx6); +assign L9txx6 = (~(S8jxx6 & Cmm7z6[27])); +assign D9txx6 = (~(K1i7z6[27] & Zs4ov6)); +assign K5s7v6 = (~(T9txx6 & Batxx6)); +assign Batxx6 = (Jatxx6 & Ratxx6); +assign Ratxx6 = (~(Xzjxx6 & vis_pc_o[28])); +assign Jatxx6 = (Zatxx6 & Hbtxx6); +assign Hbtxx6 = (~(U9jxx6 & Tpjnv6)); +assign Tpjnv6 = (~(Pbtxx6 & Xbtxx6)); +assign Xbtxx6 = (Fctxx6 & Nctxx6); +assign Nctxx6 = (O197x6 | Kroxx6); +assign O197x6 = (!Cb77x6); +assign Fctxx6 = (Vctxx6 & Ddtxx6); +assign Ddtxx6 = (Fjqxx6 | Fsoxx6); +assign Fjqxx6 = (!Tw57x6); +assign Vctxx6 = (Mjqxx6 | Npoxx6); +assign Mjqxx6 = (!Ax57x6); +assign Pbtxx6 = (R5pxx6 & Ldtxx6); +assign Ldtxx6 = (V197x6 | Wqoxx6); +assign V197x6 = (!T977x6); +assign Zatxx6 = (Adjxx6 | Zct6x6); +assign Zct6x6 = (Tdtxx6 & Betxx6); +assign Betxx6 = (Jetxx6 & Retxx6); +assign Retxx6 = (Zetxx6 & Hftxx6); +assign Hftxx6 = (Pftxx6 & Xftxx6); +assign Xftxx6 = (~(X6kxx6 & vis_psp_o[28])); +assign Pftxx6 = (~(E7kxx6 & vis_msp_o[28])); +assign Zetxx6 = (Fgtxx6 & Ngtxx6); +assign Ngtxx6 = (~(Lfjxx6 & Pic7z6[28])); +assign Fgtxx6 = (~(Sfjxx6 & vis_r12_o[28])); +assign Jetxx6 = (Vgtxx6 & Dhtxx6); +assign Dhtxx6 = (Lhtxx6 & Thtxx6); +assign Thtxx6 = (~(Ngjxx6 & vis_r11_o[28])); +assign Lhtxx6 = (~(Ugjxx6 & vis_r10_o[28])); +assign Vgtxx6 = (Bitxx6 & Jitxx6); +assign Jitxx6 = (~(Kijxx6 & vis_r7_o[28])); +assign Bitxx6 = (~(Rijxx6 & vis_r9_o[28])); +assign Tdtxx6 = (Ritxx6 & Zitxx6); +assign Zitxx6 = (Hjtxx6 & Pjtxx6); +assign Pjtxx6 = (Xjtxx6 & Fktxx6); +assign Fktxx6 = (~(Phjxx6 & vis_r8_o[28])); +assign Xjtxx6 = (~(Okjxx6 & vis_r6_o[28])); +assign Hjtxx6 = (Nktxx6 & Vktxx6); +assign Vktxx6 = (~(Vkjxx6 & vis_r5_o[28])); +assign Nktxx6 = (~(Qljxx6 & vis_r4_o[28])); +assign Ritxx6 = (Dltxx6 & Lltxx6); +assign Lltxx6 = (Tltxx6 & Bmtxx6); +assign Bmtxx6 = (~(Xljxx6 & vis_r3_o[28])); +assign Tltxx6 = (~(Nnjxx6 & vis_r0_o[28])); +assign Dltxx6 = (Jmtxx6 & Rmtxx6); +assign Rmtxx6 = (~(Unjxx6 & vis_r2_o[28])); +assign Jmtxx6 = (~(Smjxx6 & vis_r1_o[28])); +assign T9txx6 = (Zmtxx6 & Hntxx6); +assign Hntxx6 = (~(S8jxx6 & Cmm7z6[28])); +assign Zmtxx6 = (~(K1i7z6[28] & Zs4ov6)); +assign D5s7v6 = (~(Pntxx6 & Xntxx6)); +assign Xntxx6 = (Fotxx6 & Notxx6); +assign Notxx6 = (~(U9jxx6 & Dojnv6)); +assign Dojnv6 = (~(Votxx6 & Dptxx6)); +assign Dptxx6 = (Lptxx6 & Tptxx6); +assign Tptxx6 = (Mt87x6 | Kroxx6); +assign Mt87x6 = (!C477x6); +assign Lptxx6 = (Bqtxx6 & Jqtxx6); +assign Jqtxx6 = (Wvqxx6 | Fsoxx6); +assign Wvqxx6 = (!Qr57x6); +assign Bqtxx6 = (Dwqxx6 | Npoxx6); +assign Dwqxx6 = (!Xr57x6); +assign Votxx6 = (R5pxx6 & Rqtxx6); +assign Rqtxx6 = (Tt87x6 | Wqoxx6); +assign Tt87x6 = (!T277x6); +assign Fotxx6 = (Zqtxx6 & Wgkxx6); +assign Zqtxx6 = (Adjxx6 | Cybov6); +assign Cybov6 = (Hrtxx6 & Prtxx6); +assign Prtxx6 = (Xrtxx6 & Fstxx6); +assign Fstxx6 = (Nstxx6 & Vstxx6); +assign Vstxx6 = (Dttxx6 & Lttxx6); +assign Lttxx6 = (~(X6kxx6 & vis_psp_o[29])); +assign Dttxx6 = (~(E7kxx6 & vis_msp_o[29])); +assign Nstxx6 = (Tttxx6 & Butxx6); +assign Butxx6 = (~(Lfjxx6 & Pic7z6[29])); +assign Tttxx6 = (~(Sfjxx6 & vis_r12_o[29])); +assign Xrtxx6 = (Jutxx6 & Rutxx6); +assign Rutxx6 = (Zutxx6 & Hvtxx6); +assign Hvtxx6 = (~(Ngjxx6 & vis_r11_o[29])); +assign Zutxx6 = (~(Ugjxx6 & vis_r10_o[29])); +assign Jutxx6 = (Pvtxx6 & Xvtxx6); +assign Xvtxx6 = (~(Kijxx6 & vis_r7_o[29])); +assign Pvtxx6 = (~(Rijxx6 & vis_r9_o[29])); +assign Hrtxx6 = (Fwtxx6 & Nwtxx6); +assign Nwtxx6 = (Vwtxx6 & Dxtxx6); +assign Dxtxx6 = (Lxtxx6 & Txtxx6); +assign Txtxx6 = (~(Phjxx6 & vis_r8_o[29])); +assign Lxtxx6 = (~(Okjxx6 & vis_r6_o[29])); +assign Vwtxx6 = (Bytxx6 & Jytxx6); +assign Jytxx6 = (~(Vkjxx6 & vis_r5_o[29])); +assign Bytxx6 = (~(Qljxx6 & vis_r4_o[29])); +assign Fwtxx6 = (Rytxx6 & Zytxx6); +assign Zytxx6 = (Hztxx6 & Pztxx6); +assign Pztxx6 = (~(Xljxx6 & vis_r3_o[29])); +assign Hztxx6 = (~(Nnjxx6 & vis_r0_o[29])); +assign Rytxx6 = (Xztxx6 & F0uxx6); +assign F0uxx6 = (~(Unjxx6 & vis_r2_o[29])); +assign Xztxx6 = (~(Smjxx6 & vis_r1_o[29])); +assign Pntxx6 = (N0uxx6 & V0uxx6); +assign V0uxx6 = (~(K1i7z6[29] & Zs4ov6)); +assign N0uxx6 = (D1uxx6 & L1uxx6); +assign L1uxx6 = (~(Xzjxx6 & vis_pc_o[29])); +assign D1uxx6 = (~(S8jxx6 & Cmm7z6[29])); +assign W4s7v6 = (~(T1uxx6 & B2uxx6)); +assign B2uxx6 = (J2uxx6 & R2uxx6); +assign R2uxx6 = (~(U9jxx6 & Xkjnv6)); +assign Xkjnv6 = (~(Z2uxx6 & H3uxx6)); +assign H3uxx6 = (P3uxx6 & X3uxx6); +assign X3uxx6 = (Kl87x6 | Kroxx6); +assign Kl87x6 = (!Cx67x6); +assign P3uxx6 = (F4uxx6 & N4uxx6); +assign N4uxx6 = (N8rxx6 | Fsoxx6); +assign N8rxx6 = (!Nm57x6); +assign F4uxx6 = (U8rxx6 | Npoxx6); +assign U8rxx6 = (!Um57x6); +assign Z2uxx6 = (R5pxx6 & V4uxx6); +assign V4uxx6 = (Rl87x6 | Wqoxx6); +assign Rl87x6 = (!Tv67x6); +assign J2uxx6 = (D5uxx6 & Wgkxx6); +assign D5uxx6 = (Adjxx6 | F1u6x6); +assign F1u6x6 = (L5uxx6 & T5uxx6); +assign T5uxx6 = (B6uxx6 & J6uxx6); +assign J6uxx6 = (R6uxx6 & Z6uxx6); +assign Z6uxx6 = (H7uxx6 & P7uxx6); +assign P7uxx6 = (~(X6kxx6 & vis_psp_o[30])); +assign H7uxx6 = (~(E7kxx6 & vis_msp_o[30])); +assign R6uxx6 = (X7uxx6 & F8uxx6); +assign F8uxx6 = (~(Lfjxx6 & Pic7z6[30])); +assign X7uxx6 = (~(Sfjxx6 & vis_r12_o[30])); +assign B6uxx6 = (N8uxx6 & V8uxx6); +assign V8uxx6 = (D9uxx6 & L9uxx6); +assign L9uxx6 = (~(Ngjxx6 & vis_r11_o[30])); +assign D9uxx6 = (~(Ugjxx6 & vis_r10_o[30])); +assign N8uxx6 = (T9uxx6 & Bauxx6); +assign Bauxx6 = (~(Kijxx6 & vis_r7_o[30])); +assign T9uxx6 = (~(Rijxx6 & vis_r9_o[30])); +assign L5uxx6 = (Jauxx6 & Rauxx6); +assign Rauxx6 = (Zauxx6 & Hbuxx6); +assign Hbuxx6 = (Pbuxx6 & Xbuxx6); +assign Xbuxx6 = (~(Phjxx6 & vis_r8_o[30])); +assign Pbuxx6 = (~(Okjxx6 & vis_r6_o[30])); +assign Zauxx6 = (Fcuxx6 & Ncuxx6); +assign Ncuxx6 = (~(Vkjxx6 & vis_r5_o[30])); +assign Fcuxx6 = (~(Qljxx6 & vis_r4_o[30])); +assign Jauxx6 = (Vcuxx6 & Dduxx6); +assign Dduxx6 = (Lduxx6 & Tduxx6); +assign Tduxx6 = (~(Xljxx6 & vis_r3_o[30])); +assign Lduxx6 = (~(Nnjxx6 & vis_r0_o[30])); +assign Vcuxx6 = (Beuxx6 & Jeuxx6); +assign Jeuxx6 = (~(Unjxx6 & vis_r2_o[30])); +assign Beuxx6 = (~(Smjxx6 & vis_r1_o[30])); +assign T1uxx6 = (Reuxx6 & Zeuxx6); +assign Zeuxx6 = (~(K1i7z6[30] & Zs4ov6)); +assign Reuxx6 = (Hfuxx6 & Pfuxx6); +assign Pfuxx6 = (~(Xzjxx6 & vis_pc_o[30])); +assign Hfuxx6 = (~(S8jxx6 & Cmm7z6[30])); +assign P4s7v6 = (~(Xfuxx6 & Fguxx6)); +assign Fguxx6 = (Nguxx6 & Vguxx6); +assign Vguxx6 = (~(Xzjxx6 & vis_pc_o[31])); +assign Xzjxx6 = (Dhuxx6 & Lhuxx6); +assign Dhuxx6 = (~(A2u6x6 | Thuxx6)); +assign A2u6x6 = (!R0u6x6); +assign Nguxx6 = (Biuxx6 & Wgkxx6); +assign Wgkxx6 = (~(Jiuxx6 & Hyhhw6)); +assign Jiuxx6 = (Riuxx6 & Vqihw6); +assign Biuxx6 = (Adjxx6 | B1cov6); +assign B1cov6 = (Ziuxx6 & Hjuxx6); +assign Hjuxx6 = (Pjuxx6 & Xjuxx6); +assign Xjuxx6 = (Fkuxx6 & Nkuxx6); +assign Nkuxx6 = (Vkuxx6 & Dluxx6); +assign Dluxx6 = (~(X6kxx6 & vis_psp_o[31])); +assign X6kxx6 = (~(Lluxx6 | Ix27x6)); +assign Vkuxx6 = (~(E7kxx6 & vis_msp_o[31])); +assign E7kxx6 = (~(Tluxx6 | Lluxx6)); +assign Fkuxx6 = (Bmuxx6 & Jmuxx6); +assign Jmuxx6 = (~(Lfjxx6 & Pic7z6[31])); +assign Lfjxx6 = (Rmuxx6 & Zmuxx6); +assign Bmuxx6 = (~(Sfjxx6 & vis_r12_o[31])); +assign Sfjxx6 = (Hnuxx6 & Zmuxx6); +assign Pjuxx6 = (Pnuxx6 & Xnuxx6); +assign Xnuxx6 = (Fouxx6 & Nouxx6); +assign Nouxx6 = (~(Ngjxx6 & vis_r11_o[31])); +assign Ngjxx6 = (Vouxx6 & Dpuxx6); +assign Fouxx6 = (~(Ugjxx6 & vis_r10_o[31])); +assign Ugjxx6 = (Vouxx6 & Zmuxx6); +assign Pnuxx6 = (Lpuxx6 & Tpuxx6); +assign Tpuxx6 = (~(Kijxx6 & vis_r7_o[31])); +assign Kijxx6 = (Rmuxx6 & Bquxx6); +assign Lpuxx6 = (~(Rijxx6 & vis_r9_o[31])); +assign Rijxx6 = (Dpuxx6 & Jquxx6); +assign Ziuxx6 = (Rquxx6 & Zquxx6); +assign Zquxx6 = (Hruxx6 & Pruxx6); +assign Pruxx6 = (Xruxx6 & Fsuxx6); +assign Fsuxx6 = (~(Phjxx6 & vis_r8_o[31])); +assign Phjxx6 = (Jquxx6 & Zmuxx6); +assign Zmuxx6 = (~(Xgfhw6 | Nsuxx6)); +assign Xruxx6 = (~(Okjxx6 & vis_r6_o[31])); +assign Okjxx6 = (Rmuxx6 & Vsuxx6); +assign Rmuxx6 = (Tluxx6 & Bjfhw6); +assign Hruxx6 = (Dtuxx6 & Ltuxx6); +assign Ltuxx6 = (~(Vkjxx6 & vis_r5_o[31])); +assign Vkjxx6 = (Hnuxx6 & Bquxx6); +assign Dtuxx6 = (~(Qljxx6 & vis_r4_o[31])); +assign Qljxx6 = (Hnuxx6 & Vsuxx6); +assign Hnuxx6 = (Ix27x6 & Bjfhw6); +assign Ix27x6 = (!Tluxx6); +assign Rquxx6 = (Ttuxx6 & Buuxx6); +assign Buuxx6 = (Juuxx6 & Ruuxx6); +assign Ruuxx6 = (~(Xljxx6 & vis_r3_o[31])); +assign Xljxx6 = (Vouxx6 & Bquxx6); +assign Juuxx6 = (~(Nnjxx6 & vis_r0_o[31])); +assign Nnjxx6 = (Vsuxx6 & Jquxx6); +assign Ttuxx6 = (Zuuxx6 & Hvuxx6); +assign Hvuxx6 = (~(Unjxx6 & vis_r2_o[31])); +assign Unjxx6 = (Vouxx6 & Vsuxx6); +assign Vsuxx6 = (~(Uifhw6 | Xgfhw6)); +assign Vouxx6 = (Pvuxx6 & Tluxx6); +assign Zuuxx6 = (~(Smjxx6 & vis_r1_o[31])); +assign Smjxx6 = (Jquxx6 & Bquxx6); +assign Bquxx6 = (~(Uifhw6 | Xvuxx6)); +assign Jquxx6 = (~(Bjfhw6 | Tluxx6)); +assign Tluxx6 = (~(Vrjxx6 & Fwuxx6)); +assign Fwuxx6 = (~(Csjxx6 & Tqq6x6)); +assign Tqq6x6 = (~(Nwuxx6 & Vwuxx6)); +assign Vwuxx6 = (~(Dxuxx6 & Lxuxx6)); +assign Dxuxx6 = (F02nv6 ? Qij7z6[1] : Ovbdt6); +assign Nwuxx6 = (Lxuxx6 | Mz27x6); +assign Mz27x6 = (~(Txuxx6 & Byuxx6)); +assign Byuxx6 = (~(Jyuxx6 & Ad9iw6)); +assign Jyuxx6 = (~(Hd9iw6 | Q0wnv6)); +assign Txuxx6 = (Ryuxx6 | Jjbdt6); +assign Ryuxx6 = (~(Ad9iw6 | Hd9iw6)); +assign Hd9iw6 = (Zyuxx6 & Hzuxx6); +assign Hzuxx6 = (Pzuxx6 & Xzuxx6); +assign Xzuxx6 = (~(Tx1jw6 | Qm0jw6)); +assign Pzuxx6 = (~(Jti6x6 | Ddo6x6)); +assign Zyuxx6 = (F0vxx6 & N0vxx6); +assign N0vxx6 = (~(Nob7z6[1] & Rslov6)); +assign F0vxx6 = (V0vxx6 & D1vxx6); +assign D1vxx6 = (~(Rslov6 & L1vxx6)); +assign L1vxx6 = (~(T1vxx6 & Flliw6)); +assign T1vxx6 = (Gpliw6 & Xxjov6); +assign V0vxx6 = (~(Nob7z6[4] & Rslov6)); +assign Lxuxx6 = (~(B2vxx6 & Yy27x6)); +assign Yy27x6 = (~(J2vxx6 & Qij7z6[4])); +assign J2vxx6 = (R2vxx6 & F02nv6); +assign B2vxx6 = (~(Z2vxx6 & H3vxx6)); +assign H3vxx6 = (P3vxx6 & W6u6x6); +assign Z2vxx6 = (X3vxx6 & Ansov6); +assign Ansov6 = (F4vxx6 & Jgtov6); +assign Adjxx6 = (~(N4vxx6 & Lhuxx6)); +assign N4vxx6 = (~(Thuxx6 | R0u6x6)); +assign R0u6x6 = (~(Lluxx6 | Vrjxx6)); +assign Lluxx6 = (!Csjxx6); +assign Csjxx6 = (Dpuxx6 & Bjfhw6); +assign Dpuxx6 = (Uifhw6 & Xgfhw6); +assign Xfuxx6 = (V4vxx6 & D5vxx6); +assign D5vxx6 = (~(K1i7z6[31] & Zs4ov6)); +assign V4vxx6 = (L5vxx6 & T5vxx6); +assign T5vxx6 = (~(U9jxx6 & Hjjnv6)); +assign Hjjnv6 = (~(B6vxx6 & J6vxx6)); +assign J6vxx6 = (R6vxx6 & Z6vxx6); +assign Z6vxx6 = (Kroxx6 | Qkrxx6); +assign Qkrxx6 = (!Hp67x6); +assign Kroxx6 = (H7vxx6 & P7vxx6); +assign H7vxx6 = (X7vxx6 | Xgmov6); +assign R6vxx6 = (F8vxx6 & N8vxx6); +assign N8vxx6 = (Fsoxx6 | Llrxx6); +assign Llrxx6 = (!Dh57x6); +assign Fsoxx6 = (V8vxx6 & D9vxx6); +assign V8vxx6 = (~(L9vxx6 & Xgmov6)); +assign F8vxx6 = (Npoxx6 | Slrxx6); +assign Slrxx6 = (!Rh57x6); +assign Npoxx6 = (T9vxx6 & Bavxx6); +assign T9vxx6 = (~(L9vxx6 & No7et6)); +assign B6vxx6 = (R5pxx6 & Javxx6); +assign Javxx6 = (Wqoxx6 | Gmrxx6); +assign Gmrxx6 = (!Kn67x6); +assign Wqoxx6 = (Ravxx6 & Zavxx6); +assign Ravxx6 = (X7vxx6 | No7et6); +assign R5pxx6 = (Hbvxx6 & Pbvxx6); +assign Pbvxx6 = (Xbvxx6 & Fcvxx6); +assign Fcvxx6 = (~(Rh57x6 & Ncvxx6)); +assign Ncvxx6 = (~(Vcvxx6 & Ddvxx6)); +assign Ddvxx6 = (~(Ldvxx6 & Vt2et6)); +assign Ldvxx6 = (Itlxx6 & H287x6); +assign Vcvxx6 = (Tdvxx6 | Aea7x6); +assign Aea7x6 = (!Dca7x6); +assign Xbvxx6 = (Bevxx6 & Jevxx6); +assign Jevxx6 = (~(Dh57x6 & Revxx6)); +assign Revxx6 = (~(Zevxx6 & Hfvxx6)); +assign Hfvxx6 = (~(Pfvxx6 & Vt2et6)); +assign Pfvxx6 = (Itlxx6 & Dca7x6); +assign Zevxx6 = (Tdvxx6 | Yca7x6); +assign Yca7x6 = (!Av77x6); +assign Bevxx6 = (~(Kn67x6 & Xfvxx6)); +assign Xfvxx6 = (~(Fgvxx6 & Ngvxx6)); +assign Ngvxx6 = (~(Vgvxx6 & Vt2et6)); +assign Vgvxx6 = (Itlxx6 & Gaa7x6); +assign Fgvxx6 = (Tdvxx6 | Iba7x6); +assign Iba7x6 = (!H287x6); +assign Hbvxx6 = (Jbmxx6 & Dhvxx6); +assign Dhvxx6 = (~(Hp67x6 & Lhvxx6)); +assign Lhvxx6 = (~(Thvxx6 & Bivxx6)); +assign Bivxx6 = (~(Jivxx6 & Vt2et6)); +assign Jivxx6 = (Itlxx6 & Av77x6); +assign Itlxx6 = (Bqoxx6 & No7et6); +assign Thvxx6 = (Tdvxx6 | Tda7x6); +assign Tda7x6 = (!Gaa7x6); +assign Tdvxx6 = (~(Rivxx6 & Vt2et6)); +assign Rivxx6 = (Bqoxx6 & Xgmov6); +assign Jbmxx6 = (Zivxx6 & Hjvxx6); +assign Hjvxx6 = (Pjvxx6 & Xjvxx6); +assign Xjvxx6 = (~(Fkvxx6 & Nkvxx6)); +assign Fkvxx6 = (Av77x6 & Hp67x6); +assign Pjvxx6 = (~(Vkvxx6 & Nkvxx6)); +assign Vkvxx6 = (Dca7x6 & Dh57x6); +assign Zivxx6 = (Dlvxx6 & Llvxx6); +assign Llvxx6 = (~(Tlvxx6 & Nkvxx6)); +assign Tlvxx6 = (H287x6 & Rh57x6); +assign Dlvxx6 = (~(Bmvxx6 & Nkvxx6)); +assign Nkvxx6 = (Vt2et6 & Eylxx6); +assign Bmvxx6 = (Gaa7x6 & Kn67x6); +assign U9jxx6 = (Thuxx6 & Lhuxx6); +assign Lhuxx6 = (Hyhhw6 & Jmvxx6); +assign Jmvxx6 = (~(Rmvxx6 & Zmvxx6)); +assign Zmvxx6 = (Hnvxx6 & Pnvxx6); +assign Pnvxx6 = (Fiihw6 & Vkhhw6); +assign Hnvxx6 = (B3hhw6 & Vjihw6); +assign Vjihw6 = (~(Ggoov6 & Mpihw6)); +assign B3hhw6 = (~(Xnvxx6 & Dioov6)); +assign Xnvxx6 = (Dwb7z6[5] & Aqihw6); +assign Rmvxx6 = (Lmhhw6 & Fovxx6); +assign Fovxx6 = (Hkhhw6 & Novxx6); +assign Novxx6 = (~(Clhhw6 & Vovxx6)); +assign Hkhhw6 = (Dpvxx6 & Lpvxx6); +assign Lpvxx6 = (I1d7x6 & U3a7x6); +assign Dpvxx6 = (K2d7x6 & Iqmov6); +assign K2d7x6 = (Tpvxx6 | Bqvxx6); +assign Lmhhw6 = (~(Jqvxx6 | Jkihw6)); +assign Jkihw6 = (!G9hhw6); +assign G9hhw6 = (Rqvxx6 & Zqvxx6); +assign Zqvxx6 = (Hrvxx6 & Prvxx6); +assign Prvxx6 = (Kb9iw6 & I3wnv6); +assign I3wnv6 = (!Atmov6); +assign Hrvxx6 = (Xrvxx6 & Mq9iw6); +assign Xrvxx6 = (~(Rb9iw6 & Dwb7z6[1])); +assign Rqvxx6 = (Fsvxx6 & Nsvxx6); +assign Fsvxx6 = (Vsvxx6 & Dtvxx6); +assign Dtvxx6 = (~(Ltvxx6 & Luvnv6)); +assign Vsvxx6 = (~(Ttvxx6 & Bhoov6)); +assign Ttvxx6 = (Nvvnv6 & Buvxx6); +assign Jqvxx6 = (~(Juvxx6 & Ruvxx6)); +assign Juvxx6 = (~(Tnzdt6 & Zuvxx6)); +assign Zuvxx6 = (~(Hvvxx6 & Pvvxx6)); +assign Pvvxx6 = (~(S0bov6 | Q0hhw6)); +assign S0bov6 = (!Rhphw6); +assign Hvvxx6 = (Xvvxx6 & Fwvxx6); +assign Thuxx6 = (Nwvxx6 & Vwvxx6); +assign Vwvxx6 = (Hcihw6 & Dxvxx6); +assign Dxvxx6 = (Pvuxx6 ^ Qdihw6); +assign Pvuxx6 = (!Bjfhw6); +assign Bjfhw6 = (~(Lxvxx6 & Txvxx6)); +assign Txvxx6 = (Byvxx6 & Jyvxx6); +assign Jyvxx6 = (~(Ryvxx6 & Oac7z6[2])); +assign Byvxx6 = (~(X3vxx6 & Rrfhw6)); +assign Lxvxx6 = (Zyvxx6 & Hzvxx6); +assign Hzvxx6 = (~(Pzvxx6 & Xzvxx6)); +assign Xzvxx6 = (~(F0wxx6 & N0wxx6)); +assign N0wxx6 = (V0wxx6 & D1wxx6); +assign D1wxx6 = (~(G3nov6 & L1wxx6)); +assign G3nov6 = (~(T1wxx6 & B2wxx6)); +assign T1wxx6 = (J2wxx6 & R2wxx6); +assign R2wxx6 = (~(Z2wxx6 & H3wxx6)); +assign H3wxx6 = (~(P3wxx6 | X3wxx6)); +assign Z2wxx6 = (F4wxx6 & N4wxx6); +assign V0wxx6 = (V4wxx6 & D5wxx6); +assign D5wxx6 = (~(L5wxx6 & Kpaov6)); +assign V4wxx6 = (~(Ntg7z6[2] & T5wxx6)); +assign F0wxx6 = (B6wxx6 & J6wxx6); +assign B6wxx6 = (R6wxx6 & Z6wxx6); +assign Z6wxx6 = (~(H7wxx6 & Qij7z6[2])); +assign R6wxx6 = (~(U2wnv6 & Pxg7z6[2])); +assign Zyvxx6 = (~(P7wxx6 & Xwe7z6[2])); +assign Hcihw6 = (X7wxx6 & Qg2nv6); +assign Nwvxx6 = (F8wxx6 & N8wxx6); +assign N8wxx6 = (~(Ijfhw6 ^ Vcihw6)); +assign Ijfhw6 = (!Vrjxx6); +assign Vrjxx6 = (V8wxx6 & D9wxx6); +assign D9wxx6 = (L9wxx6 & T9wxx6); +assign T9wxx6 = (~(Pzvxx6 & Bawxx6)); +assign Bawxx6 = (~(Jawxx6 & Rawxx6)); +assign Rawxx6 = (Zawxx6 & Hbwxx6); +assign Hbwxx6 = (Pbwxx6 & Eminv6); +assign Pbwxx6 = (~(Xbwxx6 & Ckihw6)); +assign Xbwxx6 = (Cwlnv6 & Fcwxx6); +assign Fcwxx6 = (~(Xkr8v6 & Ncwxx6)); +assign Ncwxx6 = (~(Xdphw6 & H7nov6)); +assign Zawxx6 = (Vcwxx6 & Ddwxx6); +assign Ddwxx6 = (~(Ldwxx6 & H7wxx6)); +assign Ldwxx6 = (Qij7z6[1] & Tdwxx6); +assign Vcwxx6 = (~(Bewxx6 & Lxydt6)); +assign Bewxx6 = (~(Jewxx6 & Rewxx6)); +assign Rewxx6 = (~(Zewxx6 & Q0wnv6)); +assign Zewxx6 = (Clhhw6 & H7nov6); +assign H7nov6 = (~(Hfwxx6 & Pfwxx6)); +assign Pfwxx6 = (Xfwxx6 & Fgwxx6); +assign Fgwxx6 = (~(Ngwxx6 & Vgwxx6)); +assign Ngwxx6 = (~(Dhwxx6 | Lhwxx6)); +assign Xfwxx6 = (Thwxx6 & Biwxx6); +assign Thwxx6 = (~(Jiwxx6 & Riwxx6)); +assign Riwxx6 = (Ziwxx6 & Hjwxx6); +assign Jiwxx6 = (Pjwxx6 & Xjwxx6); +assign Hfwxx6 = (B2wxx6 & Fkwxx6); +assign Fkwxx6 = (~(F4wxx6 & Nkwxx6)); +assign Nkwxx6 = (~(Vkwxx6 & N4wxx6)); +assign B2wxx6 = (Dlwxx6 & Llwxx6); +assign Llwxx6 = (~(Xjwxx6 & Tlwxx6)); +assign Jewxx6 = (~(Ntg7z6[1] & Ot97x6)); +assign Jawxx6 = (Bmwxx6 & Jmwxx6); +assign Jmwxx6 = (~(Rmwxx6 & Dwb7z6[5])); +assign Bmwxx6 = (Zmwxx6 & Hnwxx6); +assign Hnwxx6 = (~(Pnwxx6 & Qg2nv6)); +assign Pnwxx6 = (~(Xnwxx6 & Fowxx6)); +assign Fowxx6 = (Nowxx6 & Vowxx6); +assign Vowxx6 = (~(Ntg7z6[1] & Tka7x6)); +assign Nowxx6 = (Xma7x6 & Rhphw6); +assign Rhphw6 = (~(Dpwxx6 & Dioov6)); +assign Dpwxx6 = (Lpwxx6 & Luvnv6); +assign Xnwxx6 = (Tpwxx6 & Bqwxx6); +assign Bqwxx6 = (~(Ywaov6 & Vqihw6)); +assign Tpwxx6 = (~(U2wnv6 & Pxg7z6[1])); +assign Zmwxx6 = (~(Rioov6 & Xumov6)); +assign L9wxx6 = (~(P7wxx6 & Xwe7z6[1])); +assign V8wxx6 = (Jqwxx6 & Rqwxx6); +assign Rqwxx6 = (~(X3vxx6 & Sofhw6)); +assign Jqwxx6 = (~(Ryvxx6 & Oac7z6[1])); +assign F8wxx6 = (Zqwxx6 & Hrwxx6); +assign Hrwxx6 = (Xvuxx6 ^ Seihw6); +assign Xvuxx6 = (!Xgfhw6); +assign Xgfhw6 = (~(Prwxx6 & Xrwxx6)); +assign Xrwxx6 = (Fswxx6 & Nswxx6); +assign Nswxx6 = (~(Pzvxx6 & Vswxx6)); +assign Vswxx6 = (~(Dtwxx6 & Ltwxx6)); +assign Ltwxx6 = (Ttwxx6 & Buwxx6); +assign Buwxx6 = (~(L1wxx6 & Ixmov6)); +assign Ixmov6 = (~(Juwxx6 & Ruwxx6)); +assign Juwxx6 = (Zuwxx6 & Hvwxx6); +assign Hvwxx6 = (~(Pvwxx6 & Xjwxx6)); +assign Pvwxx6 = (Xvwxx6 & Fwwxx6); +assign Xvwxx6 = (~(Nwwxx6 & Vwwxx6)); +assign Vwwxx6 = (~(Dxwxx6 & Ziwxx6)); +assign Zuwxx6 = (~(Lxwxx6 & Txwxx6)); +assign Lxwxx6 = (~(Bywxx6 & Jywxx6)); +assign Jywxx6 = (~(Rywxx6 & N4wxx6)); +assign Rywxx6 = (~(Vkwxx6 & Zywxx6)); +assign Zywxx6 = (Hzwxx6 | Pzwxx6); +assign Ttwxx6 = (Xzwxx6 & F0xxx6); +assign F0xxx6 = (~(L5wxx6 & Pxmov6)); +assign Xzwxx6 = (~(Ntg7z6[0] & T5wxx6)); +assign Dtwxx6 = (N0xxx6 & J6wxx6); +assign N0xxx6 = (V0xxx6 & D1xxx6); +assign D1xxx6 = (~(H7wxx6 & Qij7z6[0])); +assign V0xxx6 = (~(U2wnv6 & Pxg7z6[0])); +assign Fswxx6 = (~(Xwe7z6[0] & P7wxx6)); +assign Prwxx6 = (L1xxx6 & T1xxx6); +assign T1xxx6 = (~(X3vxx6 & B2xxx6)); +assign L1xxx6 = (~(Ryvxx6 & Oac7z6[0])); +assign Zqwxx6 = (Nsuxx6 ^ Gfihw6); +assign Nsuxx6 = (!Uifhw6); +assign Uifhw6 = (~(J2xxx6 & R2xxx6)); +assign R2xxx6 = (Z2xxx6 & H3xxx6); +assign H3xxx6 = (~(Pzvxx6 & P3xxx6)); +assign P3xxx6 = (~(X3xxx6 & F4xxx6)); +assign F4xxx6 = (N4xxx6 & V4xxx6); +assign V4xxx6 = (~(H0nov6 & L1wxx6)); +assign L1wxx6 = (Clhhw6 | Fpphw6); +assign H0nov6 = (~(D5xxx6 & Ruwxx6)); +assign Ruwxx6 = (Dlwxx6 & Biwxx6); +assign Biwxx6 = (~(L5xxx6 & T5xxx6)); +assign T5xxx6 = (!B6xxx6); +assign Dlwxx6 = (~(J6xxx6 & R6xxx6)); +assign J6xxx6 = (~(Z6xxx6 | Dhwxx6)); +assign D5xxx6 = (J2wxx6 & H7xxx6); +assign H7xxx6 = (~(P7xxx6 & Xjwxx6)); +assign P7xxx6 = (~(Tlwxx6 | X7xxx6)); +assign J2wxx6 = (~(F8xxx6 & Z6xxx6)); +assign N4xxx6 = (N8xxx6 & V8xxx6); +assign V8xxx6 = (~(L5wxx6 & Xlaov6)); +assign L5wxx6 = (Cwlnv6 | Rioov6); +assign N8xxx6 = (~(Ntg7z6[3] & T5wxx6)); +assign X3xxx6 = (D9xxx6 & J6wxx6); +assign J6wxx6 = (L9xxx6 & T9xxx6); +assign T9xxx6 = (Baxxx6 & Jaxxx6); +assign Jaxxx6 = (~(Cwlnv6 & Raxxx6)); +assign Baxxx6 = (Zaxxx6 & Hbxxx6); +assign Hbxxx6 = (~(Vxphw6 & Aga7z6)); +assign Vxphw6 = (~(Vkhhw6 & Twphw6)); +assign Zaxxx6 = (~(Tnzdt6 & Pbxxx6)); +assign Pbxxx6 = (Tka7x6 | U2wnv6); +assign L9xxx6 = (~(Xbxxx6 | Fcxxx6)); +assign Fcxxx6 = (Clhhw6 & K9d7x6); +assign Xbxxx6 = (H7wxx6 ? Qij7z6[4] : Ncxxx6); +assign Ncxxx6 = (Vcxxx6 & Ddxxx6); +assign Ddxxx6 = (Yihhw6 & L5xiw6); +assign L5xiw6 = (!U2wnv6); +assign Vcxxx6 = (Ldxxx6 & Tdxxx6); +assign Ldxxx6 = (!T5wxx6); +assign T5wxx6 = (Tka7x6 | Ot97x6); +assign D9xxx6 = (Bexxx6 & Jexxx6); +assign Jexxx6 = (~(H7wxx6 & Qij7z6[3])); +assign Bexxx6 = (~(U2wnv6 & Pxg7z6[3])); +assign Z2xxx6 = (~(P7wxx6 & Xwe7z6[3])); +assign P7wxx6 = (~(Rexxx6 | Pzvxx6)); +assign Rexxx6 = (~(Zexxx6 & Hfxxx6)); +assign J2xxx6 = (Pfxxx6 & Xfxxx6); +assign Xfxxx6 = (~(X3vxx6 & Omfhw6)); +assign X3vxx6 = (~(Hfxxx6 | Pzvxx6)); +assign Pfxxx6 = (~(Ryvxx6 & Oac7z6[3])); +assign Ryvxx6 = (~(Fgxxx6 | Zexxx6)); +assign Zexxx6 = (K4aov6 | Ngxxx6); +assign Fgxxx6 = (Pzvxx6 | Bi37x6); +assign Bi37x6 = (!Hfxxx6); +assign Hfxxx6 = (~(Vgxxx6 & Dhxxx6)); +assign Dhxxx6 = (~(Qg2nv6 & Lhxxx6)); +assign Lhxxx6 = (~(Thxxx6 & Bitiw6)); +assign Thxxx6 = (Dxtiw6 & Bixxx6); +assign Bixxx6 = (~(Jixxx6 & Rixxx6)); +assign Rixxx6 = (Bdf7z6[0] ? Hjxxx6 : Zixxx6); +assign Hjxxx6 = (Pjxxx6 & Pxfov6); +assign Pjxxx6 = (~(Ghtiw6 | Bdf7z6[3])); +assign Zixxx6 = (M5aov6 & Egtiw6); +assign Egtiw6 = (!Xjxxx6); +assign Jixxx6 = (~(Zgtiw6 | G427x6)); +assign Dxtiw6 = (~(Tdtiw6 & Ehgdt6)); +assign Vgxxx6 = (~(Yxtiw6 & Mrnov6)); +assign Pzvxx6 = (~(Fkxxx6 & Nkxxx6)); +assign Nkxxx6 = (Wi37x6 & Wb37x6); +assign Wb37x6 = (~(Raxxx6 & Vkxxx6)); +assign Vkxxx6 = (~(Dlxxx6 & Llxxx6)); +assign Llxxx6 = (Tlxxx6 & Bmxxx6); +assign Bmxxx6 = (C7jxx6 | Jmxxx6); +assign Tlxxx6 = (Rmxxx6 & Zmxxx6); +assign Zmxxx6 = (~(Nvvnv6 & Hnxxx6)); +assign Hnxxx6 = (~(Pnxxx6 & Xnxxx6)); +assign Xnxxx6 = (~(Dwb7z6[0] & Sna7x6)); +assign Rmxxx6 = (~(Xfa7x6 & Foxxx6)); +assign Foxxx6 = (~(Noxxx6 & Voxxx6)); +assign Voxxx6 = (~(Doihw6 & Aqihw6)); +assign Noxxx6 = (~(Bhoov6 & Bqvxx6)); +assign Dlxxx6 = (Dpxxx6 & Lpxxx6); +assign Lpxxx6 = (Dwb7z6[1] ? Bqxxx6 : Tpxxx6); +assign Bqxxx6 = (~(Lpwxx6 & Dwb7z6[3])); +assign Dpxxx6 = (Jqxxx6 & Rqxxx6); +assign Rqxxx6 = (~(Rb9iw6 & Aqihw6)); +assign Wi37x6 = (Zqxxx6 & Hrxxx6); +assign Hrxxx6 = (~(Prxxx6 & Xrxxx6)); +assign Xrxxx6 = (~(Qij7z6[6] | X4eet6)); +assign Prxxx6 = (~(Fsxxx6 | Qij7z6[5])); +assign Zqxxx6 = (~(Rmwxx6 & Lpwxx6)); +assign Fkxxx6 = (Dj37x6 & Ib37x6); +assign Ib37x6 = (Nsxxx6 & Vsxxx6); +assign Vsxxx6 = (Dtxxx6 & Ltxxx6); +assign Ltxxx6 = (~(Ttxxx6 & Vglhw6)); +assign Ttxxx6 = (~(Qg2nv6 & Buxxx6)); +assign Dtxxx6 = (Juxxx6 & Xma7x6); +assign Xma7x6 = (~(Ruxxx6 & Fxaov6)); +assign Juxxx6 = (~(Zuxxx6 & Dioov6)); +assign Zuxxx6 = (Fxaov6 & Lpwxx6); +assign Nsxxx6 = (Hvxxx6 & Qlinv6); +assign Qlinv6 = (Pvxxx6 & C0b7x6); +assign C0b7x6 = (Gha7x6 | Xvxxx6); +assign Pvxxx6 = (~(Rmwxx6 & Bhoov6)); +assign Hvxxx6 = (Fwxxx6 & Nwxxx6); +assign Nwxxx6 = (~(Vwxxx6 & Aga7z6)); +assign Vwxxx6 = (~(Dxxxx6 & Tdxxx6)); +assign Dxxxx6 = (I1d7x6 & Tpvxx6); +assign Fwxxx6 = (~(L9nov6 & K9d7x6)); +assign Dj37x6 = (Lxxxx6 & Txxxx6); +assign Txxxx6 = (~(Ii9ov6 & Byxxx6)); +assign Byxxx6 = (Jyxxx6 | Dur7x6); +assign Jyxxx6 = (Hjihw6 & L9nov6); +assign L9nov6 = (!Tdxxx6); +assign Lxxxx6 = (~(Ryxxx6 | Eyknv6)); +assign Ryxxx6 = (!Zyxxx6); +assign L5vxx6 = (~(S8jxx6 & Cmm7z6[31])); +assign S8jxx6 = (Hyhhw6 & Hzxxx6); +assign Hzxxx6 = (~(Pzxxx6 & Xzxxx6)); +assign Xzxxx6 = (F0yxx6 & N0yxx6); +assign N0yxx6 = (~(Lsphw6 & Clhhw6)); +assign F0yxx6 = (V0yxx6 & Qsaov6); +assign V0yxx6 = (~(D1yxx6 & Qg2nv6)); +assign D1yxx6 = (Q0hhw6 | D4hhw6); +assign D4hhw6 = (!Fwvxx6); +assign Pzxxx6 = (Wvhhw6 & C8nov6); +assign C8nov6 = (L1yxx6 & T1yxx6); +assign L1yxx6 = (~(Dihhw6 | B2yxx6)); +assign Wvhhw6 = (J2yxx6 & R2yxx6); +assign R2yxx6 = (Qxknv6 & Z2yxx6); +assign J2yxx6 = (H3yxx6 & G3a7x6); +assign H3yxx6 = (Xvvxx6 | Tnzdt6); +assign Xvvxx6 = (P3yxx6 & X3yxx6); +assign Hyhhw6 = (!Zs4ov6); +assign Zs4ov6 = (~(Yfadt6 & F4yxx6)); +assign F4yxx6 = (~(N4yxx6 & V4yxx6)); +assign V4yxx6 = (D5yxx6 & L5yxx6); +assign L5yxx6 = (T5yxx6 & Fwvxx6); +assign Fwvxx6 = (~(B6yxx6 & Xfa7x6)); +assign B6yxx6 = (Doihw6 & Fxaov6); +assign T5yxx6 = (~(J6yxx6 & Bhoov6)); +assign J6yxx6 = (Vqihw6 & R6yxx6); +assign R6yxx6 = (~(Zna7x6 & Z6yxx6)); +assign Z6yxx6 = (~(Tnzdt6 & Dwb7z6[3])); +assign D5yxx6 = (H7yxx6 & P7yxx6); +assign P7yxx6 = (~(D3jnv6 & X7yxx6)); +assign D3jnv6 = (O5a7z6 & Aga7z6); +assign H7yxx6 = (~(Tnzdt6 & F8yxx6)); +assign F8yxx6 = (~(Mq9iw6 & N8yxx6)); +assign N8yxx6 = (~(Rb9iw6 & Fxaov6)); +assign Mq9iw6 = (~(V8yxx6 & Fulnv6)); +assign V8yxx6 = (Lpwxx6 & Nvvnv6); +assign N4yxx6 = (D9yxx6 & L9yxx6); +assign L9yxx6 = (T9yxx6 & Bayxx6); +assign Bayxx6 = (~(Q0hhw6 & Jayxx6)); +assign Jayxx6 = (~(Qg2nv6 & Rayxx6)); +assign Rayxx6 = (~(Noa7x6 & Zayxx6)); +assign T9yxx6 = (~(Gr2et6 & Hbyxx6)); +assign Hbyxx6 = (~(Pbyxx6 & Xbyxx6)); +assign Xbyxx6 = (Fcyxx6 & Ncyxx6); +assign Ncyxx6 = (Vcyxx6 & Srknv6); +assign Fcyxx6 = (Ddyxx6 & Ldyxx6); +assign Ldyxx6 = (~(Lpwxx6 & Tdyxx6)); +assign Tdyxx6 = (~(Bwvnv6 & Zna7x6)); +assign Ddyxx6 = (~(Beyxx6 & Mpihw6)); +assign Pbyxx6 = (Jeyxx6 & Reyxx6); +assign Reyxx6 = (P3yxx6 | Olzdt6); +assign Olzdt6 = (Iga7z6 & Qg2nv6); +assign Jeyxx6 = (Kur7x6 & Zeyxx6); +assign Zeyxx6 = (G3a7x6 | Aiadt6); +assign Kur7x6 = (~(Clhhw6 & Hjihw6)); +assign D9yxx6 = (Zwehw6 & Hfyxx6); +assign Hfyxx6 = (~(Pfyxx6 & Raxxx6)); +assign Raxxx6 = (!Ckihw6); +assign Pfyxx6 = (~(Xfyxx6 & Fgyxx6)); +assign Fgyxx6 = (Ngyxx6 & Nsvxx6); +assign Nsvxx6 = (Vgyxx6 & Jqxxx6); +assign Jqxxx6 = (Dhyxx6 & Gpmov6); +assign Vgyxx6 = (Lhyxx6 & Thyxx6); +assign Thyxx6 = (~(Biyxx6 & Bhoov6)); +assign Biyxx6 = (Xfa7x6 & Xvxxx6); +assign Lhyxx6 = (~(Ruxxx6 & Mpihw6)); +assign Ngyxx6 = (Jiyxx6 & N3a7x6); +assign Jiyxx6 = (Sga7x6 | Jmxxx6); +assign Jmxxx6 = (Riyxx6 & Ziyxx6); +assign Ziyxx6 = (~(Lpwxx6 & Kioov6)); +assign Riyxx6 = (~(Bhoov6 & Mpihw6)); +assign Xfyxx6 = (~(Hjyxx6 | Pjyxx6)); +assign Pjyxx6 = (Fkyxx6 ? Rb9iw6 : Xjyxx6); +assign Xjyxx6 = (Bhoov6 & Nvvnv6); +assign Hjyxx6 = (Kioov6 ? Ggoov6 : Ltvxx6); +assign Zwehw6 = (Esihw6 & U1ihw6); +assign U1ihw6 = (!Kxvnv6); +assign Kxvnv6 = (N3onv6 & Nkyxx6); +assign Esihw6 = (!Irriw6); +assign Irriw6 = (S0ihw6 | Mqhhw6); +assign Mqhhw6 = (N3onv6 & Vkyxx6); +assign S0ihw6 = (Yqvnv6 | Wwvnv6); +assign Wwvnv6 = (Dlyxx6 & N3onv6); +assign Dlyxx6 = (Ryfhw6 & Llyxx6); +assign Yqvnv6 = (N3onv6 & Tlyxx6); +assign I4s7v6 = (~(Bmyxx6 & Jmyxx6)); +assign Jmyxx6 = (~(L8wnv6 & Itb7z6[27])); +assign Bmyxx6 = (Rmyxx6 & Zmyxx6); +assign Zmyxx6 = (~(G9wnv6 & Hnyxx6)); +assign Hnyxx6 = (~(Pnyxx6 & Xnyxx6)); +assign Xnyxx6 = (Foyxx6 & Noyxx6); +assign Noyxx6 = (Wawnv6 | Voyxx6); +assign Foyxx6 = (~(Dtm7z6[3] & Dpyxx6)); +assign Pnyxx6 = (Lpyxx6 & Tpyxx6); +assign Tpyxx6 = (~(Dtm7z6[0] & HRDATAD[27])); +assign Lpyxx6 = (~(Dtm7z6[1] & HRDATAS[27])); +assign Rmyxx6 = (~(Fcwnv6 & Mnyhw6)); +assign Mnyhw6 = (JTAGNSW ? Aixmz6[27] : Ulxmz6[27]); +assign B4s7v6 = (~(Bqyxx6 & Jqyxx6)); +assign Jqyxx6 = (~(L8wnv6 & Itb7z6[28])); +assign Bqyxx6 = (Rqyxx6 & Zqyxx6); +assign Zqyxx6 = (~(G9wnv6 & Hryxx6)); +assign Hryxx6 = (~(Pryxx6 & Xryxx6)); +assign Xryxx6 = (Fsyxx6 & Nsyxx6); +assign Nsyxx6 = (Wawnv6 | Vsyxx6); +assign Fsyxx6 = (~(Dtm7z6[3] & Dtyxx6)); +assign Pryxx6 = (Ltyxx6 & Ttyxx6); +assign Ttyxx6 = (~(Dtm7z6[0] & HRDATAD[28])); +assign Ltyxx6 = (~(Dtm7z6[1] & HRDATAS[28])); +assign Rqyxx6 = (~(Fcwnv6 & Lqyhw6)); +assign Lqyhw6 = (JTAGNSW ? Aixmz6[28] : Ulxmz6[28]); +assign U3s7v6 = (~(Buyxx6 & Juyxx6)); +assign Juyxx6 = (~(Gsexx6 & Ruyxx6)); +assign Ruyxx6 = (~(Zuyxx6 & Hvyxx6)); +assign Hvyxx6 = (Pvyxx6 & Xvyxx6); +assign Xvyxx6 = (Fwyxx6 & Nwyxx6); +assign Nwyxx6 = (Vwyxx6 & Dxyxx6); +assign Dxyxx6 = (~(Yuexx6 & Bq0nz6[7])); +assign Vwyxx6 = (Lxyxx6 & Txyxx6); +assign Txyxx6 = (~(Tvexx6 & Fl0nz6[7])); +assign Lxyxx6 = (~(Awexx6 & Jg0nz6[7])); +assign Fwyxx6 = (Byyxx6 & Jyyxx6); +assign Jyyxx6 = (~(Vwexx6 & Nb0nz6[7])); +assign Byyxx6 = (Ryyxx6 & Zyyxx6); +assign Zyyxx6 = (~(Qxexx6 & R60nz6[7])); +assign Ryyxx6 = (~(Xxexx6 & V10nz6[7])); +assign Pvyxx6 = (Hzyxx6 & Pzyxx6); +assign Pzyxx6 = (Xzyxx6 & F0zxx6); +assign F0zxx6 = (~(Gzexx6 & Zwzmz6[7])); +assign Xzyxx6 = (N0zxx6 & V0zxx6); +assign V0zxx6 = (~(B0fxx6 & Dszmz6[7])); +assign N0zxx6 = (~(I0fxx6 & Lo0nz6[7])); +assign Hzyxx6 = (D1zxx6 & L1zxx6); +assign L1zxx6 = (~(D1fxx6 & Pj0nz6[7])); +assign D1zxx6 = (T1zxx6 & B2zxx6); +assign B2zxx6 = (~(Y1fxx6 & Te0nz6[7])); +assign T1zxx6 = (~(F2fxx6 & X90nz6[7])); +assign Zuyxx6 = (J2zxx6 & R2zxx6); +assign R2zxx6 = (Z2zxx6 & H3zxx6); +assign H3zxx6 = (P3zxx6 & X3zxx6); +assign X3zxx6 = (~(C4fxx6 & B50nz6[7])); +assign P3zxx6 = (F4zxx6 & N4zxx6); +assign N4zxx6 = (~(X4fxx6 & F00nz6[7])); +assign F4zxx6 = (~(E5fxx6 & Jvzmz6[7])); +assign Z2zxx6 = (V4zxx6 & D5zxx6); +assign D5zxx6 = (~(Z5fxx6 & Nqzmz6[7])); +assign V4zxx6 = (L5zxx6 & T5zxx6); +assign T5zxx6 = (~(U6fxx6 & Vm0nz6[7])); +assign L5zxx6 = (~(B7fxx6 & Zh0nz6[7])); +assign J2zxx6 = (B6zxx6 & J6zxx6); +assign J6zxx6 = (R6zxx6 & Z6zxx6); +assign Z6zxx6 = (~(K8fxx6 & Dd0nz6[7])); +assign R6zxx6 = (H7zxx6 & P7zxx6); +assign P7zxx6 = (~(F9fxx6 & H80nz6[7])); +assign H7zxx6 = (~(M9fxx6 & L30nz6[7])); +assign B6zxx6 = (X7zxx6 & F8zxx6); +assign F8zxx6 = (~(Xozmz6[7] & Hafxx6)); +assign X7zxx6 = (N8zxx6 & V8zxx6); +assign V8zxx6 = (~(Cbfxx6 & Ttzmz6[7])); +assign N8zxx6 = (~(Jbfxx6 & Pyzmz6[7])); +assign Buyxx6 = (Gs5ov6 ? L9zxx6 : D9zxx6); +assign L9zxx6 = (~(T9zxx6 & Bazxx6)); +assign Bazxx6 = (~(Uu0nz6[0] | Uu0nz6[2])); +assign T9zxx6 = (~(Jazxx6 | At67v6)); +assign D9zxx6 = (!Sj67z6); +assign N3s7v6 = (~(Razxx6 & Zazxx6)); +assign Zazxx6 = (~(Gsexx6 & Hbzxx6)); +assign Hbzxx6 = (~(Pbzxx6 & Xbzxx6)); +assign Xbzxx6 = (Fczxx6 & Nczxx6); +assign Nczxx6 = (Vczxx6 & Ddzxx6); +assign Ddzxx6 = (Ldzxx6 & Tdzxx6); +assign Tdzxx6 = (~(Yuexx6 & Bq0nz6[6])); +assign Ldzxx6 = (Bezxx6 & Jezxx6); +assign Jezxx6 = (~(Tvexx6 & Fl0nz6[6])); +assign Bezxx6 = (~(Awexx6 & Jg0nz6[6])); +assign Vczxx6 = (Rezxx6 & Zezxx6); +assign Zezxx6 = (~(Vwexx6 & Nb0nz6[6])); +assign Rezxx6 = (Hfzxx6 & Pfzxx6); +assign Pfzxx6 = (~(Qxexx6 & R60nz6[6])); +assign Hfzxx6 = (~(Xxexx6 & V10nz6[6])); +assign Fczxx6 = (Xfzxx6 & Fgzxx6); +assign Fgzxx6 = (Ngzxx6 & Vgzxx6); +assign Vgzxx6 = (~(Gzexx6 & Zwzmz6[6])); +assign Ngzxx6 = (Dhzxx6 & Lhzxx6); +assign Lhzxx6 = (~(B0fxx6 & Dszmz6[6])); +assign Dhzxx6 = (~(I0fxx6 & Lo0nz6[6])); +assign Xfzxx6 = (Thzxx6 & Bizxx6); +assign Bizxx6 = (~(D1fxx6 & Pj0nz6[6])); +assign Thzxx6 = (Jizxx6 & Rizxx6); +assign Rizxx6 = (~(Y1fxx6 & Te0nz6[6])); +assign Jizxx6 = (~(F2fxx6 & X90nz6[6])); +assign Pbzxx6 = (Zizxx6 & Hjzxx6); +assign Hjzxx6 = (Pjzxx6 & Xjzxx6); +assign Xjzxx6 = (Fkzxx6 & Nkzxx6); +assign Nkzxx6 = (~(C4fxx6 & B50nz6[6])); +assign Fkzxx6 = (Vkzxx6 & Dlzxx6); +assign Dlzxx6 = (~(X4fxx6 & F00nz6[6])); +assign Vkzxx6 = (~(E5fxx6 & Jvzmz6[6])); +assign Pjzxx6 = (Llzxx6 & Tlzxx6); +assign Tlzxx6 = (~(Z5fxx6 & Nqzmz6[6])); +assign Llzxx6 = (Bmzxx6 & Jmzxx6); +assign Jmzxx6 = (~(U6fxx6 & Vm0nz6[6])); +assign Bmzxx6 = (~(B7fxx6 & Zh0nz6[6])); +assign Zizxx6 = (Rmzxx6 & Zmzxx6); +assign Zmzxx6 = (Hnzxx6 & Pnzxx6); +assign Pnzxx6 = (~(K8fxx6 & Dd0nz6[6])); +assign Hnzxx6 = (Xnzxx6 & Fozxx6); +assign Fozxx6 = (~(F9fxx6 & H80nz6[6])); +assign Xnzxx6 = (~(M9fxx6 & L30nz6[6])); +assign Rmzxx6 = (Nozxx6 & Vozxx6); +assign Vozxx6 = (~(Xozmz6[6] & Hafxx6)); +assign Nozxx6 = (Dpzxx6 & Lpzxx6); +assign Lpzxx6 = (~(Cbfxx6 & Ttzmz6[6])); +assign Dpzxx6 = (~(Jbfxx6 & Pyzmz6[6])); +assign Razxx6 = (~(Kj67z6 & Lr5ov6)); +assign G3s7v6 = (~(Tpzxx6 & Bqzxx6)); +assign Bqzxx6 = (~(Gsexx6 & Jqzxx6)); +assign Jqzxx6 = (~(Rqzxx6 & Zqzxx6)); +assign Zqzxx6 = (Hrzxx6 & Przxx6); +assign Przxx6 = (Xrzxx6 & Fszxx6); +assign Fszxx6 = (Nszxx6 & Vszxx6); +assign Vszxx6 = (~(Yuexx6 & Bq0nz6[5])); +assign Nszxx6 = (Dtzxx6 & Ltzxx6); +assign Ltzxx6 = (~(Tvexx6 & Fl0nz6[5])); +assign Dtzxx6 = (~(Awexx6 & Jg0nz6[5])); +assign Xrzxx6 = (Ttzxx6 & Buzxx6); +assign Buzxx6 = (~(Vwexx6 & Nb0nz6[5])); +assign Ttzxx6 = (Juzxx6 & Ruzxx6); +assign Ruzxx6 = (~(Qxexx6 & R60nz6[5])); +assign Juzxx6 = (~(Xxexx6 & V10nz6[5])); +assign Hrzxx6 = (Zuzxx6 & Hvzxx6); +assign Hvzxx6 = (Pvzxx6 & Xvzxx6); +assign Xvzxx6 = (~(Gzexx6 & Zwzmz6[5])); +assign Pvzxx6 = (Fwzxx6 & Nwzxx6); +assign Nwzxx6 = (~(B0fxx6 & Dszmz6[5])); +assign Fwzxx6 = (~(I0fxx6 & Lo0nz6[5])); +assign Zuzxx6 = (Vwzxx6 & Dxzxx6); +assign Dxzxx6 = (~(D1fxx6 & Pj0nz6[5])); +assign Vwzxx6 = (Lxzxx6 & Txzxx6); +assign Txzxx6 = (~(Y1fxx6 & Te0nz6[5])); +assign Lxzxx6 = (~(F2fxx6 & X90nz6[5])); +assign Rqzxx6 = (Byzxx6 & Jyzxx6); +assign Jyzxx6 = (Ryzxx6 & Zyzxx6); +assign Zyzxx6 = (Hzzxx6 & Pzzxx6); +assign Pzzxx6 = (~(C4fxx6 & B50nz6[5])); +assign Hzzxx6 = (Xzzxx6 & F00yx6); +assign F00yx6 = (~(X4fxx6 & F00nz6[5])); +assign Xzzxx6 = (~(E5fxx6 & Jvzmz6[5])); +assign Ryzxx6 = (N00yx6 & V00yx6); +assign V00yx6 = (~(Z5fxx6 & Nqzmz6[5])); +assign N00yx6 = (D10yx6 & L10yx6); +assign L10yx6 = (~(U6fxx6 & Vm0nz6[5])); +assign D10yx6 = (~(B7fxx6 & Zh0nz6[5])); +assign Byzxx6 = (T10yx6 & B20yx6); +assign B20yx6 = (J20yx6 & R20yx6); +assign R20yx6 = (~(K8fxx6 & Dd0nz6[5])); +assign J20yx6 = (Z20yx6 & H30yx6); +assign H30yx6 = (~(F9fxx6 & H80nz6[5])); +assign Z20yx6 = (~(M9fxx6 & L30nz6[5])); +assign T10yx6 = (P30yx6 & X30yx6); +assign X30yx6 = (~(Xozmz6[5] & Hafxx6)); +assign P30yx6 = (F40yx6 & N40yx6); +assign N40yx6 = (~(Cbfxx6 & Ttzmz6[5])); +assign F40yx6 = (~(Jbfxx6 & Pyzmz6[5])); +assign Tpzxx6 = (~(Cj67z6 & Lr5ov6)); +assign Z2s7v6 = (~(V40yx6 & D50yx6)); +assign D50yx6 = (~(Gsexx6 & L50yx6)); +assign L50yx6 = (~(T50yx6 & B60yx6)); +assign B60yx6 = (J60yx6 & R60yx6); +assign R60yx6 = (Z60yx6 & H70yx6); +assign H70yx6 = (P70yx6 & X70yx6); +assign X70yx6 = (~(Yuexx6 & Bq0nz6[4])); +assign P70yx6 = (F80yx6 & N80yx6); +assign N80yx6 = (~(Tvexx6 & Fl0nz6[4])); +assign F80yx6 = (~(Awexx6 & Jg0nz6[4])); +assign Z60yx6 = (V80yx6 & D90yx6); +assign D90yx6 = (~(Vwexx6 & Nb0nz6[4])); +assign V80yx6 = (L90yx6 & T90yx6); +assign T90yx6 = (~(Qxexx6 & R60nz6[4])); +assign L90yx6 = (~(Xxexx6 & V10nz6[4])); +assign J60yx6 = (Ba0yx6 & Ja0yx6); +assign Ja0yx6 = (Ra0yx6 & Za0yx6); +assign Za0yx6 = (~(Gzexx6 & Zwzmz6[4])); +assign Ra0yx6 = (Hb0yx6 & Pb0yx6); +assign Pb0yx6 = (~(B0fxx6 & Dszmz6[4])); +assign Hb0yx6 = (~(I0fxx6 & Lo0nz6[4])); +assign Ba0yx6 = (Xb0yx6 & Fc0yx6); +assign Fc0yx6 = (~(D1fxx6 & Pj0nz6[4])); +assign Xb0yx6 = (Nc0yx6 & Vc0yx6); +assign Vc0yx6 = (~(Y1fxx6 & Te0nz6[4])); +assign Nc0yx6 = (~(F2fxx6 & X90nz6[4])); +assign T50yx6 = (Dd0yx6 & Ld0yx6); +assign Ld0yx6 = (Td0yx6 & Be0yx6); +assign Be0yx6 = (Je0yx6 & Re0yx6); +assign Re0yx6 = (~(C4fxx6 & B50nz6[4])); +assign Je0yx6 = (Ze0yx6 & Hf0yx6); +assign Hf0yx6 = (~(X4fxx6 & F00nz6[4])); +assign Ze0yx6 = (~(E5fxx6 & Jvzmz6[4])); +assign Td0yx6 = (Pf0yx6 & Xf0yx6); +assign Xf0yx6 = (~(Z5fxx6 & Nqzmz6[4])); +assign Pf0yx6 = (Fg0yx6 & Ng0yx6); +assign Ng0yx6 = (~(U6fxx6 & Vm0nz6[4])); +assign Fg0yx6 = (~(B7fxx6 & Zh0nz6[4])); +assign Dd0yx6 = (Vg0yx6 & Dh0yx6); +assign Dh0yx6 = (Lh0yx6 & Th0yx6); +assign Th0yx6 = (~(K8fxx6 & Dd0nz6[4])); +assign Lh0yx6 = (Bi0yx6 & Ji0yx6); +assign Ji0yx6 = (~(F9fxx6 & H80nz6[4])); +assign Bi0yx6 = (~(M9fxx6 & L30nz6[4])); +assign Vg0yx6 = (Ri0yx6 & Zi0yx6); +assign Zi0yx6 = (~(Xozmz6[4] & Hafxx6)); +assign Ri0yx6 = (Hj0yx6 & Pj0yx6); +assign Pj0yx6 = (~(Cbfxx6 & Ttzmz6[4])); +assign Hj0yx6 = (~(Jbfxx6 & Pyzmz6[4])); +assign V40yx6 = (~(Ui67z6 & Lr5ov6)); +assign S2s7v6 = (~(Xj0yx6 & Fk0yx6)); +assign Fk0yx6 = (~(Mi67z6 & Lr5ov6)); +assign Xj0yx6 = (Nk0yx6 & Vk0yx6); +assign Nk0yx6 = (~(Gsexx6 & Dl0yx6)); +assign Dl0yx6 = (~(Ll0yx6 & Tl0yx6)); +assign Tl0yx6 = (Bm0yx6 & Jm0yx6); +assign Jm0yx6 = (Rm0yx6 & Zm0yx6); +assign Zm0yx6 = (Hn0yx6 & Pn0yx6); +assign Pn0yx6 = (~(Yuexx6 & Bq0nz6[3])); +assign Hn0yx6 = (Xn0yx6 & Fo0yx6); +assign Fo0yx6 = (~(Tvexx6 & Fl0nz6[3])); +assign Xn0yx6 = (~(Awexx6 & Jg0nz6[3])); +assign Rm0yx6 = (No0yx6 & Vo0yx6); +assign Vo0yx6 = (~(Vwexx6 & Nb0nz6[3])); +assign No0yx6 = (Dp0yx6 & Lp0yx6); +assign Lp0yx6 = (~(Qxexx6 & R60nz6[3])); +assign Dp0yx6 = (~(Xxexx6 & V10nz6[3])); +assign Bm0yx6 = (Tp0yx6 & Bq0yx6); +assign Bq0yx6 = (Jq0yx6 & Rq0yx6); +assign Rq0yx6 = (~(Gzexx6 & Zwzmz6[3])); +assign Jq0yx6 = (Zq0yx6 & Hr0yx6); +assign Hr0yx6 = (~(B0fxx6 & Dszmz6[3])); +assign Zq0yx6 = (~(I0fxx6 & Lo0nz6[3])); +assign Tp0yx6 = (Pr0yx6 & Xr0yx6); +assign Xr0yx6 = (~(D1fxx6 & Pj0nz6[3])); +assign Pr0yx6 = (Fs0yx6 & Ns0yx6); +assign Ns0yx6 = (~(Y1fxx6 & Te0nz6[3])); +assign Fs0yx6 = (~(F2fxx6 & X90nz6[3])); +assign Ll0yx6 = (Vs0yx6 & Dt0yx6); +assign Dt0yx6 = (Lt0yx6 & Tt0yx6); +assign Tt0yx6 = (Bu0yx6 & Ju0yx6); +assign Ju0yx6 = (~(C4fxx6 & B50nz6[3])); +assign Bu0yx6 = (Ru0yx6 & Zu0yx6); +assign Zu0yx6 = (~(X4fxx6 & F00nz6[3])); +assign Ru0yx6 = (~(E5fxx6 & Jvzmz6[3])); +assign Lt0yx6 = (Hv0yx6 & Pv0yx6); +assign Pv0yx6 = (~(Z5fxx6 & Nqzmz6[3])); +assign Hv0yx6 = (Xv0yx6 & Fw0yx6); +assign Fw0yx6 = (~(U6fxx6 & Vm0nz6[3])); +assign Xv0yx6 = (~(B7fxx6 & Zh0nz6[3])); +assign Vs0yx6 = (Nw0yx6 & Vw0yx6); +assign Vw0yx6 = (Dx0yx6 & Lx0yx6); +assign Lx0yx6 = (~(K8fxx6 & Dd0nz6[3])); +assign Dx0yx6 = (Tx0yx6 & By0yx6); +assign By0yx6 = (~(F9fxx6 & H80nz6[3])); +assign Tx0yx6 = (~(M9fxx6 & L30nz6[3])); +assign Nw0yx6 = (Jy0yx6 & Ry0yx6); +assign Ry0yx6 = (~(Xozmz6[3] & Hafxx6)); +assign Jy0yx6 = (Zy0yx6 & Hz0yx6); +assign Hz0yx6 = (~(Cbfxx6 & Ttzmz6[3])); +assign Zy0yx6 = (~(Jbfxx6 & Pyzmz6[3])); +assign L2s7v6 = (~(Pz0yx6 & Xz0yx6)); +assign Xz0yx6 = (~(Ei67z6 & Lr5ov6)); +assign Pz0yx6 = (F01yx6 & Vk0yx6); +assign Vk0yx6 = (~(N01yx6 & V01yx6)); +assign N01yx6 = (!D11yx6); +assign F01yx6 = (~(Gsexx6 & L11yx6)); +assign L11yx6 = (~(T11yx6 & B21yx6)); +assign B21yx6 = (J21yx6 & R21yx6); +assign R21yx6 = (Z21yx6 & H31yx6); +assign H31yx6 = (P31yx6 & X31yx6); +assign X31yx6 = (~(Yuexx6 & Bq0nz6[2])); +assign P31yx6 = (F41yx6 & N41yx6); +assign N41yx6 = (~(Tvexx6 & Fl0nz6[2])); +assign F41yx6 = (~(Awexx6 & Jg0nz6[2])); +assign Z21yx6 = (V41yx6 & D51yx6); +assign D51yx6 = (~(Vwexx6 & Nb0nz6[2])); +assign V41yx6 = (L51yx6 & T51yx6); +assign T51yx6 = (~(Qxexx6 & R60nz6[2])); +assign L51yx6 = (~(Xxexx6 & V10nz6[2])); +assign J21yx6 = (B61yx6 & J61yx6); +assign J61yx6 = (R61yx6 & Z61yx6); +assign Z61yx6 = (~(Gzexx6 & Zwzmz6[2])); +assign R61yx6 = (H71yx6 & P71yx6); +assign P71yx6 = (~(B0fxx6 & Dszmz6[2])); +assign H71yx6 = (~(I0fxx6 & Lo0nz6[2])); +assign B61yx6 = (X71yx6 & F81yx6); +assign F81yx6 = (~(D1fxx6 & Pj0nz6[2])); +assign X71yx6 = (N81yx6 & V81yx6); +assign V81yx6 = (~(Y1fxx6 & Te0nz6[2])); +assign N81yx6 = (~(F2fxx6 & X90nz6[2])); +assign T11yx6 = (D91yx6 & L91yx6); +assign L91yx6 = (T91yx6 & Ba1yx6); +assign Ba1yx6 = (Ja1yx6 & Ra1yx6); +assign Ra1yx6 = (~(C4fxx6 & B50nz6[2])); +assign Ja1yx6 = (Za1yx6 & Hb1yx6); +assign Hb1yx6 = (~(X4fxx6 & F00nz6[2])); +assign Za1yx6 = (~(E5fxx6 & Jvzmz6[2])); +assign T91yx6 = (Pb1yx6 & Xb1yx6); +assign Xb1yx6 = (~(Z5fxx6 & Nqzmz6[2])); +assign Pb1yx6 = (Fc1yx6 & Nc1yx6); +assign Nc1yx6 = (~(U6fxx6 & Vm0nz6[2])); +assign Fc1yx6 = (~(B7fxx6 & Zh0nz6[2])); +assign D91yx6 = (Vc1yx6 & Dd1yx6); +assign Dd1yx6 = (Ld1yx6 & Td1yx6); +assign Td1yx6 = (~(K8fxx6 & Dd0nz6[2])); +assign Ld1yx6 = (Be1yx6 & Je1yx6); +assign Je1yx6 = (~(F9fxx6 & H80nz6[2])); +assign Be1yx6 = (~(M9fxx6 & L30nz6[2])); +assign Vc1yx6 = (Re1yx6 & Ze1yx6); +assign Ze1yx6 = (~(Xozmz6[2] & Hafxx6)); +assign Re1yx6 = (Hf1yx6 & Pf1yx6); +assign Pf1yx6 = (~(Cbfxx6 & Ttzmz6[2])); +assign Hf1yx6 = (~(Jbfxx6 & Pyzmz6[2])); +assign E2s7v6 = (~(Xf1yx6 & Fg1yx6)); +assign Fg1yx6 = (~(Gsexx6 & Ng1yx6)); +assign Ng1yx6 = (~(Vg1yx6 & Dh1yx6)); +assign Dh1yx6 = (Lh1yx6 & Th1yx6); +assign Th1yx6 = (Bi1yx6 & Ji1yx6); +assign Ji1yx6 = (Ri1yx6 & Zi1yx6); +assign Zi1yx6 = (~(Yuexx6 & Bq0nz6[1])); +assign Yuexx6 = (~(Hj1yx6 | Jxrnv6)); +assign Ri1yx6 = (Pj1yx6 & Xj1yx6); +assign Xj1yx6 = (~(Tvexx6 & Fl0nz6[1])); +assign Tvexx6 = (~(Fk1yx6 | Jxrnv6)); +assign Pj1yx6 = (~(Awexx6 & Jg0nz6[1])); +assign Awexx6 = (~(Hj1yx6 | Xxrnv6)); +assign Bi1yx6 = (Nk1yx6 & Vk1yx6); +assign Vk1yx6 = (~(Vwexx6 & Nb0nz6[1])); +assign Vwexx6 = (~(Fk1yx6 | Xxrnv6)); +assign Nk1yx6 = (Dl1yx6 & Ll1yx6); +assign Ll1yx6 = (~(Qxexx6 & R60nz6[1])); +assign Qxexx6 = (~(Hj1yx6 | Eyrnv6)); +assign Dl1yx6 = (~(Xxexx6 & V10nz6[1])); +assign Xxexx6 = (~(Fk1yx6 | Eyrnv6)); +assign Lh1yx6 = (Tl1yx6 & Bm1yx6); +assign Bm1yx6 = (Jm1yx6 & Rm1yx6); +assign Rm1yx6 = (~(Gzexx6 & Zwzmz6[1])); +assign Gzexx6 = (~(Hj1yx6 | Srcov6)); +assign Hj1yx6 = (~(Zm1yx6 & Lyrnv6)); +assign Jm1yx6 = (Hn1yx6 & Pn1yx6); +assign Pn1yx6 = (~(B0fxx6 & Dszmz6[1])); +assign B0fxx6 = (~(Fk1yx6 | Srcov6)); +assign Fk1yx6 = (~(Zm1yx6 & E5d7v6)); +assign Zm1yx6 = (Cxrnv6 & Owrnv6); +assign Hn1yx6 = (~(I0fxx6 & Lo0nz6[1])); +assign I0fxx6 = (~(Xn1yx6 | Jxrnv6)); +assign Tl1yx6 = (Fo1yx6 & No1yx6); +assign No1yx6 = (~(D1fxx6 & Pj0nz6[1])); +assign D1fxx6 = (~(Vo1yx6 | Jxrnv6)); +assign Fo1yx6 = (Dp1yx6 & Lp1yx6); +assign Lp1yx6 = (~(Y1fxx6 & Te0nz6[1])); +assign Y1fxx6 = (~(Xn1yx6 | Xxrnv6)); +assign Dp1yx6 = (~(F2fxx6 & X90nz6[1])); +assign F2fxx6 = (~(Vo1yx6 | Xxrnv6)); +assign Vg1yx6 = (Tp1yx6 & Bq1yx6); +assign Bq1yx6 = (Jq1yx6 & Rq1yx6); +assign Rq1yx6 = (Zq1yx6 & Hr1yx6); +assign Hr1yx6 = (~(C4fxx6 & B50nz6[1])); +assign C4fxx6 = (~(Xn1yx6 | Eyrnv6)); +assign Zq1yx6 = (Pr1yx6 & Xr1yx6); +assign Xr1yx6 = (~(X4fxx6 & F00nz6[1])); +assign X4fxx6 = (~(Vo1yx6 | Eyrnv6)); +assign Pr1yx6 = (~(E5fxx6 & Jvzmz6[1])); +assign E5fxx6 = (~(Xn1yx6 | Srcov6)); +assign Xn1yx6 = (~(Fs1yx6 & Rr0nz6[0])); +assign Fs1yx6 = (Lyrnv6 & Owrnv6); +assign Jq1yx6 = (Ns1yx6 & Vs1yx6); +assign Vs1yx6 = (~(Z5fxx6 & Nqzmz6[1])); +assign Z5fxx6 = (~(Vo1yx6 | Srcov6)); +assign Vo1yx6 = (~(Dt1yx6 & E5d7v6)); +assign Dt1yx6 = (Rr0nz6[0] & Owrnv6); +assign Owrnv6 = (!Rr0nz6[1]); +assign Ns1yx6 = (Lt1yx6 & Tt1yx6); +assign Tt1yx6 = (~(U6fxx6 & Vm0nz6[1])); +assign U6fxx6 = (~(Bu1yx6 | Jxrnv6)); +assign Lt1yx6 = (~(B7fxx6 & Zh0nz6[1])); +assign B7fxx6 = (~(Ju1yx6 | Jxrnv6)); +assign Jxrnv6 = (~(Ercov6 & Qqcov6)); +assign Tp1yx6 = (Ru1yx6 & Zu1yx6); +assign Zu1yx6 = (Hv1yx6 & Pv1yx6); +assign Pv1yx6 = (~(K8fxx6 & Dd0nz6[1])); +assign K8fxx6 = (~(Bu1yx6 | Xxrnv6)); +assign Hv1yx6 = (Xv1yx6 & Fw1yx6); +assign Fw1yx6 = (~(F9fxx6 & H80nz6[1])); +assign F9fxx6 = (~(Xxrnv6 | Ju1yx6)); +assign Xxrnv6 = (~(Hw0nz6[1] & Ercov6)); +assign Xv1yx6 = (~(M9fxx6 & L30nz6[1])); +assign M9fxx6 = (~(Bu1yx6 | Eyrnv6)); +assign Ru1yx6 = (Nw1yx6 & Vw1yx6); +assign Vw1yx6 = (~(Xozmz6[1] & Hafxx6)); +assign Nw1yx6 = (Dx1yx6 & Lx1yx6); +assign Lx1yx6 = (~(Cbfxx6 & Ttzmz6[1])); +assign Cbfxx6 = (~(Bu1yx6 | Srcov6)); +assign Bu1yx6 = (~(Tx1yx6 & Rr0nz6[1])); +assign Tx1yx6 = (Lyrnv6 & Cxrnv6); +assign Lyrnv6 = (!E5d7v6); +assign Dx1yx6 = (~(Jbfxx6 & Pyzmz6[1])); +assign Jbfxx6 = (~(Ju1yx6 | Eyrnv6)); +assign Eyrnv6 = (Ercov6 | Hw0nz6[1]); +assign Gsexx6 = (V01yx6 & D11yx6); +assign V01yx6 = (By1yx6 & Gs5ov6); +assign By1yx6 = (~(H3dov6 | At67v6)); +assign Xf1yx6 = (~(Wh67z6 & Lr5ov6)); +assign X1s7v6 = (Ry1yx6 ? Jy1yx6 : Bv1nz6[1]); +assign Jy1yx6 = (~(Zy1yx6 & Hz1yx6)); +assign Hz1yx6 = (~(Wh67z6 & Cc5ov6)); +assign Q1s7v6 = (Pz1yx6 ? Ak67z6 : Au1nz6[0]); +assign J1s7v6 = (Pz1yx6 ? Sj67z6 : Au1nz6[7]); +assign C1s7v6 = (Pz1yx6 ? Kj67z6 : Au1nz6[6]); +assign V0s7v6 = (Pz1yx6 ? Cj67z6 : Au1nz6[5]); +assign O0s7v6 = (Pz1yx6 ? Ui67z6 : Au1nz6[4]); +assign H0s7v6 = (Pz1yx6 ? Mi67z6 : Au1nz6[3]); +assign A0s7v6 = (Pz1yx6 ? Ei67z6 : Au1nz6[2]); +assign Tzr7v6 = (Pz1yx6 ? Wh67z6 : Au1nz6[1]); +assign Pz1yx6 = (Xz1yx6 & F02yx6); +assign Xz1yx6 = (~(N02yx6 | V02yx6)); +assign Mzr7v6 = (D12yx6 ? Ak67z6 : Zs1nz6[0]); +assign Fzr7v6 = (D12yx6 ? Sj67z6 : Zs1nz6[7]); +assign Yyr7v6 = (D12yx6 ? Kj67z6 : Zs1nz6[6]); +assign Ryr7v6 = (D12yx6 ? Cj67z6 : Zs1nz6[5]); +assign Kyr7v6 = (D12yx6 ? Ui67z6 : Zs1nz6[4]); +assign Dyr7v6 = (D12yx6 ? Mi67z6 : Zs1nz6[3]); +assign Wxr7v6 = (D12yx6 ? Ei67z6 : Zs1nz6[2]); +assign Pxr7v6 = (D12yx6 ? Wh67z6 : Zs1nz6[1]); +assign D12yx6 = (L12yx6 & V02yx6); +assign L12yx6 = (~(T12yx6 | N02yx6)); +assign Ixr7v6 = (B22yx6 ? Ak67z6 : Yr1nz6[0]); +assign Bxr7v6 = (B22yx6 ? Sj67z6 : Yr1nz6[7]); +assign Uwr7v6 = (B22yx6 ? Kj67z6 : Yr1nz6[6]); +assign Nwr7v6 = (B22yx6 ? Cj67z6 : Yr1nz6[5]); +assign Gwr7v6 = (B22yx6 ? Ui67z6 : Yr1nz6[4]); +assign Zvr7v6 = (B22yx6 ? Mi67z6 : Yr1nz6[3]); +assign Svr7v6 = (B22yx6 ? Ei67z6 : Yr1nz6[2]); +assign Lvr7v6 = (B22yx6 ? Wh67z6 : Yr1nz6[1]); +assign B22yx6 = (J22yx6 & N02yx6); +assign J22yx6 = (F02yx6 & R22yx6); +assign R22yx6 = (!V02yx6); +assign Evr7v6 = (~(Z22yx6 & H32yx6)); +assign H32yx6 = (P32yx6 | X32yx6); +assign P32yx6 = (!F42yx6); +assign Z22yx6 = (~(Ja1nz6[2] & T12yx6)); +assign Xur7v6 = (~(N42yx6 & V42yx6)); +assign V42yx6 = (~(F42yx6 & D52yx6)); +assign D52yx6 = (Zy1yx6 ^ X32yx6); +assign X32yx6 = (Ja1nz6[2] ? T52yx6 : L52yx6); +assign T52yx6 = (N02yx6 & B62yx6); +assign L52yx6 = (~(N02yx6 & V02yx6)); +assign N42yx6 = (~(Ja1nz6[1] & T12yx6)); +assign Qur7v6 = (~(J62yx6 & R62yx6)); +assign R62yx6 = (~(F42yx6 & Z62yx6)); +assign Z62yx6 = (Zy1yx6 ^ B62yx6); +assign Zy1yx6 = (~(H72yx6 & P72yx6)); +assign H72yx6 = (V02yx6 ^ N02yx6); +assign F42yx6 = (~(T12yx6 | Hae7v6)); +assign J62yx6 = (~(Ja1nz6[0] & T12yx6)); +assign Jur7v6 = (Ry1yx6 ? X72yx6 : Bv1nz6[0]); +assign X72yx6 = (~(B62yx6 & F82yx6)); +assign F82yx6 = (~(Ak67z6 & Cc5ov6)); +assign B62yx6 = (V02yx6 | N82yx6); +assign Cur7v6 = (Ry1yx6 ? Sj67z6 : Xq1nz6[7]); +assign Vtr7v6 = (Ry1yx6 ? Kj67z6 : Xq1nz6[6]); +assign Otr7v6 = (Ry1yx6 ? Cj67z6 : Xq1nz6[5]); +assign Htr7v6 = (Ry1yx6 ? Ui67z6 : Xq1nz6[4]); +assign Atr7v6 = (Ry1yx6 ? Mi67z6 : Xq1nz6[3]); +assign Tsr7v6 = (Ry1yx6 ? Ei67z6 : Xq1nz6[2]); +assign Ry1yx6 = (F02yx6 & V82yx6); +assign V82yx6 = (~(Cc5ov6 & D92yx6)); +assign D92yx6 = (~(L92yx6 & T92yx6)); +assign F02yx6 = (!T12yx6); +assign T12yx6 = (~(Dniiw6 & Ba2yx6)); +assign Ba2yx6 = (~(P72yx6 & Ja2yx6)); +assign Ja2yx6 = (~(Ra2yx6 & W197z6)); +assign Ra2yx6 = (~(Za2yx6 | Eee7v6)); +assign Msr7v6 = (Xb2yx6 ? Pb2yx6 : Hb2yx6); +assign Fsr7v6 = (Ah2nz6[2] ? Nc2yx6 : Fc2yx6); +assign Nc2yx6 = (Vc2yx6 | Dd2yx6); +assign Dd2yx6 = (~(Ld2yx6 | Ah2nz6[1])); +assign Fc2yx6 = (Td2yx6 & Ah2nz6[1]); +assign Yrr7v6 = (Xb2yx6 ? Mwf7v6 : Be2yx6); +assign Rrr7v6 = (Nl1nz6[0] & Je2yx6); +assign Je2yx6 = (~(Re2yx6 & Ze2yx6)); +assign Ze2yx6 = (~(Ctf7v6 & Hf2yx6)); +assign Hf2yx6 = (!Vuf7v6); +assign Re2yx6 = (~(Pf2yx6 | Xf2yx6)); +assign Pf2yx6 = (~(Pb2yx6 | Mwf7v6)); +assign Krr7v6 = (!Fg2yx6); +assign Fg2yx6 = (Ah2nz6[0] ? Vg2yx6 : Ng2yx6); +assign Ng2yx6 = (~(Dh2yx6 & Vg2yx6)); +assign Drr7v6 = (Ah2nz6[1] ? Vc2yx6 : Td2yx6); +assign Vc2yx6 = (~(Vg2yx6 & Lh2yx6)); +assign Lh2yx6 = (Ld2yx6 | Ah2nz6[0]); +assign Td2yx6 = (Th2yx6 & Ah2nz6[0]); +assign Th2yx6 = (Dh2yx6 & Vg2yx6); +assign Vg2yx6 = (~(Bi2yx6 & Ji2yx6)); +assign Ji2yx6 = (Ri2yx6 | Pb2yx6); +assign Bi2yx6 = (~(Nl1nz6[0] & V91nv6)); +assign Dh2yx6 = (!Ld2yx6); +assign Wqr7v6 = (Xb2yx6 ? M2e7v6 : Zi2yx6); +assign Xb2yx6 = (Hj2yx6 & Pj2yx6); +assign Pj2yx6 = (~(Xj2yx6 & Fk2yx6)); +assign Fk2yx6 = (~(Nk2yx6 & Twhiw6)); +assign Nk2yx6 = (~(Vuf7v6 & Vk2yx6)); +assign Vk2yx6 = (~(Qk77z6 & Dl2yx6)); +assign Xj2yx6 = (Ll2yx6 & Tl2yx6); +assign Ll2yx6 = (~(Bm2yx6 & Pb2yx6)); +assign Bm2yx6 = (~(Jm2yx6 & Nl1nz6[1])); +assign Jm2yx6 = (~(Rm2yx6 | Nl1nz6[0])); +assign Hj2yx6 = (Zm2yx6 & Ri2yx6); +assign Ri2yx6 = (~(Mwf7v6 & Xf2yx6)); +assign Zm2yx6 = (Nl1nz6[1] | Hn2yx6); +assign Hn2yx6 = (Pn2yx6 & Xn2yx6); +assign Xn2yx6 = (~(Fo2yx6 & No2yx6)); +assign No2yx6 = (Vo2yx6 & Dp2yx6); +assign Vo2yx6 = (~(Kf2nz6[1] | Kf2nz6[2])); +assign Fo2yx6 = (Lp2yx6 & Dl2yx6); +assign Lp2yx6 = (~(Ld2yx6 | Xf2yx6)); +assign Pn2yx6 = (~(Tp2yx6 & Bq2yx6)); +assign Bq2yx6 = (Jq2yx6 & Ah2nz6[0]); +assign Jq2yx6 = (Nl1nz6[0] & V91nv6); +assign Tp2yx6 = (Ah2nz6[2] & Ah2nz6[1]); +assign Zi2yx6 = (~(Hb2yx6 | Be2yx6)); +assign Be2yx6 = (~(Rq2yx6 & Zq2yx6)); +assign Zq2yx6 = (Qk77z6 | Dl2yx6); +assign Rq2yx6 = (~(Tl2yx6 & Twhiw6)); +assign Hb2yx6 = (~(Hr2yx6 & Pr2yx6)); +assign Pr2yx6 = (~(Tl2yx6 & Xr2yx6)); +assign Xr2yx6 = (~(Qk77z6 & Twhiw6)); +assign Hr2yx6 = (!Fs2yx6); +assign Pqr7v6 = (Ns2yx6 ^ Vs2yx6); +assign Iqr7v6 = (Eb1nv6 ^ Dt2yx6); +assign Bqr7v6 = (Ec2nz6[2] ^ Lt2yx6); +assign Upr7v6 = (Ec2nz6[3] ^ Tt2yx6); +assign Tt2yx6 = (Lt2yx6 & Ec2nz6[2]); +assign Lt2yx6 = (~(Dt2yx6 | Eb1nv6)); +assign Npr7v6 = (Vs2yx6 ? Dxe7v6 : Bu2yx6); +assign Gpr7v6 = (~(Ju2yx6 & Ru2yx6)); +assign Ru2yx6 = (~(B5e7v6 & M8e7v6)); +assign Zor7v6 = (~(Zu2yx6 & Hv2yx6)); +assign Hv2yx6 = (~(Pv2yx6 & Xv2yx6)); +assign Sor7v6 = (Pv2yx6 ? R0f7v6 : Xv2yx6); +assign Lor7v6 = (~(Fw2yx6 & Nw2yx6)); +assign Nw2yx6 = (Vw2yx6 | Dxe7v6); +assign Vw2yx6 = (~(Kve7v6 | Dx2yx6)); +assign Dx2yx6 = (~(Lx2yx6 | Vs2yx6)); +assign Fw2yx6 = (~(Kve7v6 & Vs2yx6)); +assign Eor7v6 = (T32nz6[0] ? By2yx6 : Tx2yx6); +assign Xnr7v6 = (T32nz6[1] ? Ry2yx6 : Jy2yx6); +assign Qnr7v6 = (!Zy2yx6); +assign Zy2yx6 = (T32nz6[2] ? Pz2yx6 : Hz2yx6); +assign Hz2yx6 = (~(Jy2yx6 & T32nz6[1])); +assign Jnr7v6 = (T32nz6[3] ? F03yx6 : Xz2yx6); +assign F03yx6 = (~(Pz2yx6 & N03yx6)); +assign N03yx6 = (T32nz6[2] | Kve7v6); +assign Pz2yx6 = (~(Ry2yx6 | V03yx6)); +assign V03yx6 = (~(T32nz6[1] | Kve7v6)); +assign Ry2yx6 = (By2yx6 | D13yx6); +assign D13yx6 = (~(T32nz6[0] | Kve7v6)); +assign By2yx6 = (Vs2yx6 | L13yx6); +assign L13yx6 = (~(Bu2yx6 | Kve7v6)); +assign Xz2yx6 = (T13yx6 & Jy2yx6); +assign Jy2yx6 = (Tx2yx6 & T32nz6[0]); +assign Tx2yx6 = (B23yx6 & Bu2yx6); +assign Bu2yx6 = (!J23yx6); +assign B23yx6 = (~(Vs2yx6 | Kve7v6)); +assign Cnr7v6 = (Z23yx6 ? R23yx6 : Yb1nz6[0]); +assign R23yx6 = (~(H33yx6 ^ P33yx6)); +assign Vmr7v6 = (Z23yx6 ? X33yx6 : Yb1nz6[1]); +assign X33yx6 = (F43yx6 ^ H33yx6); +assign H33yx6 = (~(N43yx6 ^ P33yx6)); +assign Omr7v6 = (Z23yx6 ? F43yx6 : Yb1nz6[2]); +assign Z23yx6 = (V43yx6 & D53yx6); +assign V43yx6 = (~(L53yx6 & T53yx6)); +assign T53yx6 = (~(B63yx6 & V91nv6)); +assign F43yx6 = (~(J63yx6 ^ Yb1nz6[2])); +assign J63yx6 = (~(R63yx6 & P33yx6)); +assign P33yx6 = (Z63yx6 | H73yx6); +assign Hmr7v6 = (P73yx6 & Ci6ft6); +assign P73yx6 = (X73yx6 & F83yx6); +assign F83yx6 = (Ak6ft6 | Og6ft6); +assign X73yx6 = (~(N83yx6 & V83yx6)); +assign V83yx6 = (D93yx6 & L93yx6); +assign L93yx6 = (T93yx6 & Ba3yx6); +assign Ba3yx6 = (N02yx6 ^ Ja3yx6); +assign N02yx6 = (Hae7v6 ? Bv1nz6[1] : T92yx6); +assign T93yx6 = (~(V02yx6 ^ Ra3yx6)); +assign V02yx6 = (Hae7v6 ? Bv1nz6[0] : L92yx6); +assign D93yx6 = (Za3yx6 & Hb3yx6); +assign Hb3yx6 = (~(Ul5ov6 ^ Pb3yx6)); +assign Za3yx6 = (Nl5ov6 ^ Xb3yx6); +assign N83yx6 = (Fc3yx6 & Nc3yx6); +assign Nc3yx6 = (~(Lj1nz6[2] ^ Ja1nz6[2])); +assign Fc3yx6 = (Vc3yx6 & Hbe7v6); +assign Vc3yx6 = (~(Hi1nz6[2] ^ U81nz6[2])); +assign Amr7v6 = (Ab5ov6 ? Dd3yx6 : Pp1nz6[0]); +assign Dd3yx6 = (~(Ld5ov6 & Ld3yx6)); +assign Ld3yx6 = (~(Zd5ov6 & Cc5ov6)); +assign Zd5ov6 = (~(Td3yx6 & Be3yx6)); +assign Be3yx6 = (~(V7xmz6[0] & Pf5ov6)); +assign Td3yx6 = (I347v6 ? Re3yx6 : Je3yx6); +assign Re3yx6 = (Ze3yx6 & Hf3yx6); +assign Hf3yx6 = (Pf3yx6 & Xf3yx6); +assign Xf3yx6 = (~(Mh5ov6 & Vcxmz6[21])); +assign Pf3yx6 = (~(Vcxmz6[0] & Gjfnv6)); +assign Ze3yx6 = (Fg3yx6 & Ng3yx6); +assign Ng3yx6 = (~(Hi5ov6 & Vcxmz6[14])); +assign Fg3yx6 = (~(Oi5ov6 & Vcxmz6[7])); +assign Je3yx6 = (Vg3yx6 & Dh3yx6); +assign Dh3yx6 = (Lh3yx6 & Th3yx6); +assign Th3yx6 = (~(Mh5ov6 & Vcxmz6[47])); +assign Lh3yx6 = (~(Gjfnv6 & Vcxmz6[26])); +assign Vg3yx6 = (Bi3yx6 & Ji3yx6); +assign Ji3yx6 = (~(Hi5ov6 & Vcxmz6[40])); +assign Bi3yx6 = (~(Oi5ov6 & Vcxmz6[33])); +assign Ld5ov6 = (Ul5ov6 | Ri3yx6); +assign Tlr7v6 = (~(Zi3yx6 & Hj3yx6)); +assign Hj3yx6 = (~(Kwvmz6[1] & Pj3yx6)); +assign Mlr7v6 = (~(Xj3yx6 & Fk3yx6)); +assign Fk3yx6 = (~(Kwvmz6[2] & Pj3yx6)); +assign Flr7v6 = (~(Nk3yx6 & Vk3yx6)); +assign Vk3yx6 = (~(Kwvmz6[3] & Pj3yx6)); +assign Ykr7v6 = (~(Dl3yx6 & Ll3yx6)); +assign Ll3yx6 = (~(Kwvmz6[4] & Pj3yx6)); +assign Rkr7v6 = (~(Tl3yx6 & Bm3yx6)); +assign Bm3yx6 = (~(Kwvmz6[0] & Pj3yx6)); +assign Kkr7v6 = (Jm3yx6 ^ Rm3yx6); +assign Dkr7v6 = (~(Zm3yx6 ^ Hn3yx6)); +assign Hn3yx6 = (~(Rm3yx6 | Jm3yx6)); +assign Jm3yx6 = (Pn3yx6 & Xn3yx6); +assign Xn3yx6 = (Zi3yx6 | Fo3yx6); +assign Wjr7v6 = (No3yx6 ? Jt37v6 : Fo3yx6); +assign Pjr7v6 = (Ci6ft6 & Vo3yx6); +assign Vo3yx6 = (~(Og6ft6 & Dp3yx6)); +assign Dp3yx6 = (Lp3yx6 | Ak6ft6); +assign Lp3yx6 = (~(Tp3yx6 | Id6ft6)); +assign Ijr7v6 = (~(Bq3yx6 & Jq3yx6)); +assign Jq3yx6 = (Rq3yx6 | Zq3yx6); +assign Bq3yx6 = (~(Hr3yx6 & Vis7z6[5])); +assign Bjr7v6 = (Vis7z6[4] ? Xr3yx6 : Pr3yx6); +assign Xr3yx6 = (~(Fs3yx6 & Ns3yx6)); +assign Ns3yx6 = (~(Vs3yx6 & Dt3yx6)); +assign Pr3yx6 = (Vs3yx6 & Lt3yx6); +assign Uir7v6 = (Tt3yx6 ? Vs3yx6 : Hr3yx6); +assign Nir7v6 = (Ru3yx6 ? Ju3yx6 : Bu3yx6); +assign Ru3yx6 = (!Vis7z6[1]); +assign Ju3yx6 = (Vs3yx6 & Vis7z6[0]); +assign Bu3yx6 = (~(Zu3yx6 & Hv3yx6)); +assign Hv3yx6 = (~(Vs3yx6 & Tt3yx6)); +assign Tt3yx6 = (!Vis7z6[0]); +assign Gir7v6 = (~(Pv3yx6 & Xv3yx6)); +assign Xv3yx6 = (~(Vs3yx6 & Fw3yx6)); +assign Fw3yx6 = (Vis7z6[2] ^ Nw3yx6); +assign Nw3yx6 = (Vis7z6[1] & Vis7z6[0]); +assign Pv3yx6 = (~(Hr3yx6 & Vis7z6[2])); +assign Zhr7v6 = (!Vw3yx6); +assign Vw3yx6 = (Vis7z6[3] ? Fs3yx6 : Dx3yx6); +assign Fs3yx6 = (Zu3yx6 & Lx3yx6); +assign Lx3yx6 = (~(Vs3yx6 & Tx3yx6)); +assign Dx3yx6 = (Rq3yx6 | Tx3yx6); +assign Rq3yx6 = (!Vs3yx6); +assign Vs3yx6 = (By3yx6 & Jy3yx6); +assign Jy3yx6 = (~(Ry3yx6 | Zy3yx6)); +assign By3yx6 = (~(Hz3yx6 | Hr3yx6)); +assign Hr3yx6 = (!Zu3yx6); +assign Zu3yx6 = (~(Pz3yx6 & Xz3yx6)); +assign Pz3yx6 = (~(Hz3yx6 | Zy3yx6)); +assign Shr7v6 = (~(F04yx6 & N04yx6)); +assign N04yx6 = (~(Sl37v6 & V04yx6)); +assign F04yx6 = (~(D14yx6 & P7s7z6[8])); +assign Lhr7v6 = (~(L14yx6 & T14yx6)); +assign T14yx6 = (~(Iw27v6 & V04yx6)); +assign L14yx6 = (~(P7s7z6[30] & D14yx6)); +assign Ehr7v6 = (E46ft6 ? J24yx6 : B24yx6); +assign B24yx6 = (R24yx6 & Z24yx6); +assign R24yx6 = (~(H34yx6 & P34yx6)); +assign P34yx6 = (~(X34yx6 & F44yx6)); +assign F44yx6 = (N44yx6 & V44yx6); +assign V44yx6 = (D54yx6 & L54yx6); +assign D54yx6 = (~(P7s7z6[26] | P7s7z6[8])); +assign X34yx6 = (T54yx6 & B64yx6); +assign B64yx6 = (~(J64yx6 | P7s7z6[17])); +assign J64yx6 = (P7s7z6[18] | P7s7z6[20]); +assign T54yx6 = (R64yx6 & Z64yx6); +assign H34yx6 = (~(Fho7v6 & H74yx6)); +assign H74yx6 = (~(P74yx6 & X74yx6)); +assign X74yx6 = (F84yx6 & N84yx6); +assign N84yx6 = (~(P7s7z6[8] | P7s7z6[9])); +assign P74yx6 = (V84yx6 & D94yx6); +assign V84yx6 = (~(L94yx6 | P7s7z6[10])); +assign Xgr7v6 = (~(T94yx6 & Ba4yx6)); +assign Ba4yx6 = (~(Lk37v6 & V04yx6)); +assign T94yx6 = (~(D14yx6 & P7s7z6[9])); +assign Qgr7v6 = (~(Ja4yx6 & Ra4yx6)); +assign Ra4yx6 = (~(Ej37v6 & V04yx6)); +assign Ja4yx6 = (~(D14yx6 & P7s7z6[10])); +assign Jgr7v6 = (~(Za4yx6 & Hb4yx6)); +assign Hb4yx6 = (~(Xh37v6 & V04yx6)); +assign Za4yx6 = (~(P7s7z6[11] & D14yx6)); +assign Cgr7v6 = (~(Pb4yx6 & Xb4yx6)); +assign Xb4yx6 = (~(Qg37v6 & V04yx6)); +assign Pb4yx6 = (~(P7s7z6[12] & D14yx6)); +assign Vfr7v6 = (~(Fc4yx6 & Nc4yx6)); +assign Nc4yx6 = (~(Jf37v6 & V04yx6)); +assign Fc4yx6 = (~(P7s7z6[13] & D14yx6)); +assign Ofr7v6 = (~(Vc4yx6 & Dd4yx6)); +assign Dd4yx6 = (~(Ce37v6 & V04yx6)); +assign Vc4yx6 = (~(P7s7z6[14] & D14yx6)); +assign Hfr7v6 = (~(Ld4yx6 & Td4yx6)); +assign Td4yx6 = (~(Vc37v6 & V04yx6)); +assign Ld4yx6 = (~(P7s7z6[16] & D14yx6)); +assign Afr7v6 = (~(Be4yx6 & Je4yx6)); +assign Je4yx6 = (~(Ob37v6 & V04yx6)); +assign Be4yx6 = (~(P7s7z6[17] & D14yx6)); +assign Ter7v6 = (~(Re4yx6 & Ze4yx6)); +assign Ze4yx6 = (~(Ha37v6 & V04yx6)); +assign Re4yx6 = (~(P7s7z6[18] & D14yx6)); +assign Mer7v6 = (~(Hf4yx6 & Pf4yx6)); +assign Pf4yx6 = (~(A937v6 & V04yx6)); +assign Hf4yx6 = (~(P7s7z6[19] & D14yx6)); +assign Fer7v6 = (~(Xf4yx6 & Fg4yx6)); +assign Fg4yx6 = (~(T737v6 & V04yx6)); +assign Xf4yx6 = (~(P7s7z6[20] & D14yx6)); +assign Ydr7v6 = (~(Ng4yx6 & Vg4yx6)); +assign Vg4yx6 = (~(M637v6 & V04yx6)); +assign Ng4yx6 = (~(P7s7z6[21] & D14yx6)); +assign Rdr7v6 = (~(Dh4yx6 & Lh4yx6)); +assign Lh4yx6 = (~(F537v6 & V04yx6)); +assign Dh4yx6 = (~(P7s7z6[22] & D14yx6)); +assign Kdr7v6 = (~(Th4yx6 & Bi4yx6)); +assign Bi4yx6 = (~(Y337v6 & V04yx6)); +assign Th4yx6 = (~(P7s7z6[24] & D14yx6)); +assign Ddr7v6 = (~(Ji4yx6 & Ri4yx6)); +assign Ri4yx6 = (~(R237v6 & V04yx6)); +assign Ji4yx6 = (~(P7s7z6[25] & D14yx6)); +assign Wcr7v6 = (~(Zi4yx6 & Hj4yx6)); +assign Hj4yx6 = (~(K137v6 & V04yx6)); +assign Zi4yx6 = (~(P7s7z6[26] & D14yx6)); +assign Pcr7v6 = (~(Pj4yx6 & Xj4yx6)); +assign Xj4yx6 = (~(D037v6 & V04yx6)); +assign Pj4yx6 = (~(P7s7z6[27] & D14yx6)); +assign Icr7v6 = (~(Fk4yx6 & Nk4yx6)); +assign Nk4yx6 = (~(Wy27v6 & V04yx6)); +assign Fk4yx6 = (~(P7s7z6[28] & D14yx6)); +assign Bcr7v6 = (~(Vk4yx6 & Dl4yx6)); +assign Dl4yx6 = (~(Px27v6 & V04yx6)); +assign V04yx6 = (J24yx6 & Ll4yx6); +assign Ll4yx6 = (!D14yx6); +assign Vk4yx6 = (~(P7s7z6[29] & D14yx6)); +assign D14yx6 = (J24yx6 & Tl4yx6); +assign Tl4yx6 = (~(Bm4yx6 & Ldo7v6)); +assign Ubr7v6 = (~(Jm4yx6 & Rm4yx6)); +assign Rm4yx6 = (~(Zm4yx6 & E46ft6)); +assign Zm4yx6 = (Hn4yx6 & Eifnv6); +assign Jm4yx6 = (~(Nu27v6 & J24yx6)); +assign Nbr7v6 = (~(Pn4yx6 & Xn4yx6)); +assign Xn4yx6 = (~(Ur37v6 & Fo4yx6)); +assign Pn4yx6 = (~(Txadt6 & X66ft6)); +assign Gbr7v6 = (~(No4yx6 ^ Vo4yx6)); +assign Vo4yx6 = (Lp4yx6 ? No4yx6 : Dp4yx6); +assign Zar7v6 = (Tp4yx6 ? X9s7z6[1] : Zas7z6[1]); +assign Sar7v6 = (Tp4yx6 ? X9s7z6[3] : Or27v6); +assign Lar7v6 = (Tp4yx6 ? X9s7z6[4] : Hq27v6); +assign Ear7v6 = (Tp4yx6 ? X9s7z6[5] : Ap27v6); +assign X9r7v6 = (Tp4yx6 ? X9s7z6[6] : Tn27v6); +assign Q9r7v6 = (Tp4yx6 ? X9s7z6[7] : Mm27v6); +assign J9r7v6 = (Tp4yx6 ? X9s7z6[8] : U42nv6); +assign C9r7v6 = (Tp4yx6 ? X9s7z6[9] : B52nv6); +assign V8r7v6 = (Tp4yx6 ? X9s7z6[10] : I52nv6); +assign O8r7v6 = (Tp4yx6 ? X9s7z6[11] : P52nv6); +assign H8r7v6 = (Tp4yx6 ? X9s7z6[12] : W52nv6); +assign A8r7v6 = (Tp4yx6 ? X9s7z6[13] : D62nv6); +assign T7r7v6 = (Tp4yx6 ? X9s7z6[14] : K62nv6); +assign M7r7v6 = (Tp4yx6 ? X9s7z6[15] : R62nv6); +assign F7r7v6 = (Tp4yx6 ? X9s7z6[16] : U47iw6); +assign Y6r7v6 = (Tp4yx6 ? X9s7z6[17] : J27iw6); +assign R6r7v6 = (Tp4yx6 ? X9s7z6[18] : H17iw6); +assign K6r7v6 = (Tp4yx6 ? X9s7z6[19] : Dz6iw6); +assign D6r7v6 = (Tp4yx6 ? X9s7z6[20] : Emhov6); +assign W5r7v6 = (Tp4yx6 ? X9s7z6[21] : Guhov6); +assign P5r7v6 = (Tp4yx6 ? X9s7z6[22] : Bk6iw6); +assign I5r7v6 = (Tp4yx6 ? X9s7z6[23] : Z0iov6); +assign B5r7v6 = (Tp4yx6 ? X9s7z6[24] : Is5iw6); +assign U4r7v6 = (Tp4yx6 ? X9s7z6[25] : Gr5iw6); +assign N4r7v6 = (Tp4yx6 ? X9s7z6[26] : Jp5iw6); +assign G4r7v6 = (Tp4yx6 ? X9s7z6[27] : Mn5iw6); +assign Z3r7v6 = (Tp4yx6 ? X9s7z6[28] : Bl5iw6); +assign S3r7v6 = (Tp4yx6 ? X9s7z6[29] : Ej5iw6); +assign L3r7v6 = (Tp4yx6 ? X9s7z6[30] : D85iw6); +assign E3r7v6 = (Tp4yx6 ? X9s7z6[31] : Cx4iw6); +assign X2r7v6 = (Tp4yx6 ? X9s7z6[32] : Wf4iw6); +assign Q2r7v6 = (Tp4yx6 ? X9s7z6[33] : Iklov6); +assign J2r7v6 = (Tp4yx6 ? X9s7z6[34] : E64iw6); +assign Tp4yx6 = (!Bq4yx6); +assign C2r7v6 = (Bq4yx6 ? H44iw6 : X9s7z6[35]); +assign V1r7v6 = (Bq4yx6 ? W14iw6 : X9s7z6[36]); +assign O1r7v6 = (Bq4yx6 ? Zz3iw6 : X9s7z6[37]); +assign H1r7v6 = (Bq4yx6 ? Ro3iw6 : X9s7z6[38]); +assign A1r7v6 = (Bq4yx6 ? X0hov6 : X9s7z6[39]); +assign T0r7v6 = (Bq4yx6 ? Zas7z6[0] : X9s7z6[0]); +assign M0r7v6 = (Lp4yx6 ? Rq4yx6 : Jq4yx6); +assign Rq4yx6 = (~(No4yx6 | Dp4yx6)); +assign Jq4yx6 = (Zas7z6[2] & Zq4yx6); +assign Zq4yx6 = (~(Orhov6 & Hr4yx6)); +assign Orhov6 = (!U42nv6); +assign F0r7v6 = (Bq4yx6 ? Zas7z6[2] : Tl6ft6); +assign Bq4yx6 = (Lp4yx6 & Pr4yx6); +assign Lp4yx6 = (Xr4yx6 & Fs4yx6); +assign Fs4yx6 = (Ci27v6 & Ns4yx6); +assign Ns4yx6 = (~(Vs4yx6 & C397z6)); +assign Vs4yx6 = (Mm27v6 ? Lt4yx6 : Dt4yx6); +assign Lt4yx6 = (Tt4yx6 ? Scs7z6[2] : Scs7z6[3]); +assign Dt4yx6 = (Tt4yx6 ? Scs7z6[0] : Scs7z6[1]); +assign Xr4yx6 = (Rj27v6 & Fl27v6); +assign Yzq7v6 = (~(Bu4yx6 & Ju4yx6)); +assign Ju4yx6 = (~(Xwadt6 & Ru4yx6)); +assign Ru4yx6 = (~(Zu4yx6 & K4a8x6)); +assign Bu4yx6 = (K4a8x6 | Nw5ft6); +assign K4a8x6 = (!T5a8x6); +assign Rzq7v6 = (Hv4yx6 & Xwadt6); +assign Hv4yx6 = (Pv4yx6 & Xv4yx6); +assign Pv4yx6 = (T5a8x6 | Nw5ft6); +assign T5a8x6 = (~(Fw4yx6 & Nw4yx6)); +assign Nw4yx6 = (Az98x6 & S1a8x6); +assign S1a8x6 = (~(D9r7x6 & Vw4yx6)); +assign Vw4yx6 = (~(O75ft6 & Jc4iw6)); +assign D9r7x6 = (Dx4yx6 & Kjo7x6); +assign Kjo7x6 = (!N2a8x6); +assign Dx4yx6 = (~(Lx4yx6 & Tx4yx6)); +assign Tx4yx6 = (~(Hmp7z6[1] & By4yx6)); +assign Lx4yx6 = (Jy4yx6 & Ry4yx6); +assign Ry4yx6 = (~(Dm2ft6 & Fko7x6)); +assign Fko7x6 = (~(Mko7x6 & Veo7x6)); +assign Jy4yx6 = (Veo7x6 | Zy4yx6); +assign Az98x6 = (~(S2fiw6 & Hz4yx6)); +assign Hz4yx6 = (~(Fy4ft6 & Jc4iw6)); +assign S2fiw6 = (Pz4yx6 & V0fiw6); +assign Pz4yx6 = (~(Xz4yx6 & F05yx6)); +assign F05yx6 = (~(Hyp7z6[1] & E2fiw6)); +assign Xz4yx6 = (N05yx6 & V05yx6); +assign V05yx6 = (L2fiw6 | X1fiw6); +assign L2fiw6 = (!Gs2ft6); +assign N05yx6 = (~(D15yx6 & Hyp7z6[0])); +assign Fw4yx6 = (E99ov6 & Q8o7x6); +assign Q8o7x6 = (~(L15yx6 & Y5o7x6)); +assign L15yx6 = (T15yx6 & O7o7x6); +assign O7o7x6 = (~(B25yx6 & J25yx6)); +assign J25yx6 = (~(I7p7z6[1] & R25yx6)); +assign B25yx6 = (Z25yx6 & H35yx6); +assign H35yx6 = (~(M12ft6 & A7o7x6)); +assign A7o7x6 = (R25yx6 | P35yx6); +assign Z25yx6 = (~(P35yx6 & I7p7z6[0])); +assign T15yx6 = (~(Um4ft6 & Jc4iw6)); +assign E99ov6 = (~(Yx98x6 & X35yx6)); +assign X35yx6 = (~(Mi5ft6 & Jc4iw6)); +assign Yx98x6 = (F45yx6 & Ryeiw6); +assign Ryeiw6 = (!Wxeiw6); +assign F45yx6 = (~(N45yx6 & V45yx6)); +assign V45yx6 = (~(Sgp7z6[1] & Tzeiw6)); +assign N45yx6 = (D55yx6 & L55yx6); +assign L55yx6 = (~(Ei2ft6 & Mzeiw6)); +assign Mzeiw6 = (Tzeiw6 | T55yx6); +assign D55yx6 = (~(T55yx6 & Sgp7z6[0])); +assign T55yx6 = (!F6fiw6); +assign Kzq7v6 = (~(B65yx6 & J65yx6)); +assign J65yx6 = (~(Uur7z6[1] & R65yx6)); +assign R65yx6 = (Z65yx6 | H75yx6); +assign B65yx6 = (Lhliw6 | Uur7z6[0]); +assign Dzq7v6 = (P75yx6 & Uur7z6[1]); +assign P75yx6 = (X75yx6 & Z65yx6); +assign Z65yx6 = (~(Zu4yx6 & F85yx6)); +assign X75yx6 = (Uur7z6[0] | H75yx6); +assign H75yx6 = (!Lhliw6); +assign Wyq7v6 = (~(N85yx6 & V85yx6)); +assign V85yx6 = (~(Hsr7z6[1] & D95yx6)); +assign D95yx6 = (L95yx6 | T95yx6); +assign N85yx6 = (Inhiw6 | Hsr7z6[0]); +assign Pyq7v6 = (Ba5yx6 & Hsr7z6[1]); +assign Ba5yx6 = (Ja5yx6 & L95yx6); +assign L95yx6 = (~(Zu4yx6 & Ra5yx6)); +assign Ja5yx6 = (Hsr7z6[0] | T95yx6); +assign T95yx6 = (!Inhiw6); +assign Inhiw6 = (~(Za5yx6 & Xkhiw6)); +assign Za5yx6 = (Khhiw6 & Xkq7z6[12]); +assign Iyq7v6 = (~(Hb5yx6 & Pb5yx6)); +assign Pb5yx6 = (~(Xb5yx6 & Fc5yx6)); +assign Xb5yx6 = (~(C4s7z6[0] & Nc5yx6)); +assign Byq7v6 = (Vc5yx6 & Dd5yx6); +assign Dd5yx6 = (~(Ld5yx6 & Td5yx6)); +assign Td5yx6 = (!C4s7z6[0]); +assign Ld5yx6 = (!Fc5yx6); +assign Vc5yx6 = (!Hb5yx6); +assign Uxq7v6 = (~(Be5yx6 & Je5yx6)); +assign Je5yx6 = (~(V1s7z6[0] & Re5yx6)); +assign Nxq7v6 = (~(Ze5yx6 & Hf5yx6)); +assign Hf5yx6 = (~(V1s7z6[1] & Re5yx6)); +assign Gxq7v6 = (~(Pf5yx6 & Xf5yx6)); +assign Xf5yx6 = (~(V1s7z6[2] & Re5yx6)); +assign Zwq7v6 = (~(Fg5yx6 & Ng5yx6)); +assign Ng5yx6 = (~(V1s7z6[3] & Re5yx6)); +assign Swq7v6 = (~(Vg5yx6 & Dh5yx6)); +assign Dh5yx6 = (~(V1s7z6[4] & Re5yx6)); +assign Lwq7v6 = (~(Lh5yx6 & Th5yx6)); +assign Th5yx6 = (~(V1s7z6[5] & Re5yx6)); +assign Re5yx6 = (~(Bi5yx6 & Ji5yx6)); +assign Ji5yx6 = (~(C4s7z6[0] & Ri5yx6)); +assign Bi5yx6 = (Hb5yx6 & Fc5yx6); +assign Fc5yx6 = (~(Zi5yx6 & Hj5yx6)); +assign Hj5yx6 = (Pj5yx6 & Lh5yx6); +assign Pj5yx6 = (Vg5yx6 & Fg5yx6); +assign Fg5yx6 = (~(Xj5yx6 & Fk5yx6)); +assign Fk5yx6 = (Nk5yx6 & Pdq7z6[5]); +assign Nk5yx6 = (Pdq7z6[6] & Pdq7z6[7]); +assign Xj5yx6 = (Mja8x6 & Efa8x6); +assign Efa8x6 = (Vk5yx6 & Yba8x6); +assign Yba8x6 = (Paa8x6 & Pdq7z6[2]); +assign Paa8x6 = (Pdq7z6[1] & Pdq7z6[0]); +assign Vk5yx6 = (Pdq7z6[3] & Pdq7z6[4]); +assign Mja8x6 = (~(Dl5yx6 | Ll5yx6)); +assign Dl5yx6 = (~(Hka8x6 & Pbadt6)); +assign Hka8x6 = (Xkq7z6[20] & HTMDHBURST[0]); +assign Vg5yx6 = (~(Tl5yx6 & Bm5yx6)); +assign Bm5yx6 = (Jm5yx6 & Tbq7z6[5]); +assign Jm5yx6 = (Tbq7z6[6] & Tbq7z6[7]); +assign Tl5yx6 = (Csgiw6 & Nngiw6); +assign Nngiw6 = (Rm5yx6 & Hkgiw6); +assign Hkgiw6 = (Yigiw6 & Tbq7z6[2]); +assign Yigiw6 = (Tbq7z6[1] & Tbq7z6[0]); +assign Rm5yx6 = (Tbq7z6[3] & Tbq7z6[4]); +assign Csgiw6 = (Zm5yx6 & Hn5yx6); +assign Zm5yx6 = (Xkq7z6[21] & Knbdt6); +assign Zi5yx6 = (Pn5yx6 & Be5yx6); +assign Be5yx6 = (~(Xn5yx6 & Fo5yx6)); +assign Fo5yx6 = (No5yx6 & Cjq7z6[5]); +assign No5yx6 = (Cjq7z6[6] & Cjq7z6[7]); +assign Xn5yx6 = (Aya8x6 & Sta8x6); +assign Sta8x6 = (Vo5yx6 & Mqa8x6); +assign Mqa8x6 = (Dpa8x6 & Cjq7z6[2]); +assign Dpa8x6 = (Cjq7z6[1] & Cjq7z6[0]); +assign Vo5yx6 = (Cjq7z6[3] & Cjq7z6[4]); +assign Aya8x6 = (Dp5yx6 & Vya8x6); +assign Vya8x6 = (Xkq7z6[17] & HTMDHBURST[0]); +assign Dp5yx6 = (~(Ll5yx6 | Pbadt6)); +assign Ll5yx6 = (~(Lp5yx6 & Tp5yx6)); +assign Tp5yx6 = (Wfo7v6 & Tlmov6); +assign Lp5yx6 = (Oaadt6 & Bq5yx6); +assign Pn5yx6 = (Ze5yx6 & Pf5yx6); +assign Pf5yx6 = (~(Jq5yx6 & Rq5yx6)); +assign Rq5yx6 = (Zq5yx6 & Kfq7z6[5]); +assign Zq5yx6 = (Kfq7z6[6] & Kfq7z6[7]); +assign Jq5yx6 = (L7hiw6 & W2hiw6); +assign W2hiw6 = (Hr5yx6 & Qzgiw6); +assign Qzgiw6 = (Hygiw6 & Kfq7z6[2]); +assign Hygiw6 = (Kfq7z6[1] & Kfq7z6[0]); +assign Hr5yx6 = (Kfq7z6[3] & Kfq7z6[4]); +assign L7hiw6 = (Pr5yx6 & Xkq7z6[19]); +assign Pr5yx6 = (HTMDHBURST[0] & Bnhiw6); +assign Ze5yx6 = (~(Xr5yx6 & Fs5yx6)); +assign Fs5yx6 = (Ns5yx6 & Hhq7z6[5]); +assign Ns5yx6 = (Hhq7z6[6] & Hhq7z6[7]); +assign Xr5yx6 = (~(Rdliw6 | O8liw6)); +assign O8liw6 = (~(Vs5yx6 & I5liw6)); +assign I5liw6 = (S3liw6 & Hhq7z6[2]); +assign S3liw6 = (Hhq7z6[1] & Hhq7z6[0]); +assign Vs5yx6 = (Hhq7z6[3] & Hhq7z6[4]); +assign Rdliw6 = (~(Dt5yx6 & Lt5yx6)); +assign Lt5yx6 = (Tt5yx6 & HTMDHBURST[0]); +assign Tt5yx6 = (~(Tlmov6 | Oaadt6)); +assign Dt5yx6 = (Xkq7z6[18] & Bq5yx6); +assign Hb5yx6 = (~(C4s7z6[1] & Bu5yx6)); +assign Bu5yx6 = (~(Zu4yx6 & Ju5yx6)); +assign Lh5yx6 = (~(Ru5yx6 & Xkhiw6)); +assign Xkhiw6 = (Zu5yx6 & Hv5yx6); +assign Hv5yx6 = (Pv5yx6 & Xv5yx6); +assign Xv5yx6 = (Xkq7z6[12] | Xkq7z6[22]); +assign Pv5yx6 = (Gy2ft6 ^ Fw5yx6); +assign Zu5yx6 = (~(Nw5yx6 | Vw5yx6)); +assign Ru5yx6 = (Khhiw6 & Gmhiw6); +assign Gmhiw6 = (!Xkq7z6[12]); +assign Khhiw6 = (Dx5yx6 & Lx5yx6); +assign Lx5yx6 = (~(W3q7z6[2] | W3q7z6[3])); +assign Dx5yx6 = (~(W3q7z6[0] | W3q7z6[1])); +assign Ewq7v6 = (~(Tx5yx6 & By5yx6)); +assign By5yx6 = (~(Ixr7z6[1] & Jy5yx6)); +assign Jy5yx6 = (Ry5yx6 | Alo7x6); +assign Tx5yx6 = (Xy4ov6 | Ixr7z6[0]); +assign Xy4ov6 = (!Alo7x6); +assign Xvq7v6 = (~(Lz4ov6 & Zy5yx6)); +assign Zy5yx6 = (~(Y4wmz6[0] & Hz5yx6)); +assign Qvq7v6 = (Pz5yx6 ? Ez4ov6 : Gyvmz6[7]); +assign Ez4ov6 = (~(Xz5yx6 & F06yx6)); +assign F06yx6 = (N06yx6 & V06yx6); +assign V06yx6 = (~(Iuvmz6[8] & D16yx6)); +assign N06yx6 = (L16yx6 & T16yx6); +assign T16yx6 = (~(Iuvmz6[7] & B26yx6)); +assign L16yx6 = (~(Iuvmz6[6] & J26yx6)); +assign Xz5yx6 = (R26yx6 & Z26yx6); +assign Z26yx6 = (~(Iuvmz6[5] & H36yx6)); +assign R26yx6 = (~(Iuvmz6[4] & P36yx6)); +assign Jvq7v6 = (Y4wmz6[1] ^ Pz5yx6); +assign Cvq7v6 = (F46yx6 ? X36yx6 : D047v6); +assign X36yx6 = (!N46yx6); +assign Vuq7v6 = (V46yx6 ^ D56yx6); +assign Ouq7v6 = (~(L56yx6 ^ T56yx6)); +assign T56yx6 = (~(D56yx6 | V46yx6)); +assign D56yx6 = (~(B66yx6 & N46yx6)); +assign B66yx6 = (D047v6 | J66yx6); +assign Huq7v6 = (~(R66yx6 & Z66yx6)); +assign Z66yx6 = (H76yx6 | P76yx6); +assign Auq7v6 = (~(K5xmz6[1] ^ X76yx6)); +assign Ttq7v6 = (~(F86yx6 & N86yx6)); +assign N86yx6 = (V86yx6 | D96yx6); +assign Mtq7v6 = (Hwwmz6[1] ^ L96yx6); +assign Ftq7v6 = (Ba6yx6 ? Bv37v6 : T96yx6); +assign Ysq7v6 = (Ja6yx6 ^ Ra6yx6); +assign Rsq7v6 = (~(Za6yx6 ^ Hb6yx6)); +assign Hb6yx6 = (~(Ra6yx6 | Ja6yx6)); +assign Ja6yx6 = (Pb6yx6 & Xb6yx6); +assign Xb6yx6 = (Tl3yx6 | T96yx6); +assign Ksq7v6 = (~(Fc6yx6 & Nc6yx6)); +assign Nc6yx6 = (Vc6yx6 | Dd6yx6); +assign Dsq7v6 = (Enwmz6[1] ^ Ld6yx6); +assign Wrq7v6 = (Be6yx6 ? Tw37v6 : Td6yx6); +assign Prq7v6 = (Je6yx6 ^ Re6yx6); +assign Irq7v6 = (~(Ze6yx6 ^ Hf6yx6)); +assign Hf6yx6 = (~(Re6yx6 | Je6yx6)); +assign Je6yx6 = (Pf6yx6 & Xf6yx6); +assign Xf6yx6 = (Dl3yx6 | Td6yx6); +assign Brq7v6 = (~(Fg6yx6 & Ng6yx6)); +assign Ng6yx6 = (Vg6yx6 | Dh6yx6); +assign Uqq7v6 = (Bewmz6[1] ^ Lh6yx6); +assign Nqq7v6 = (Bi6yx6 ? Ly37v6 : Th6yx6); +assign Th6yx6 = (!Ji6yx6); +assign Gqq7v6 = (Ri6yx6 ^ Zi6yx6); +assign Zpq7v6 = (~(Hj6yx6 ^ Pj6yx6)); +assign Pj6yx6 = (~(Zi6yx6 | Ri6yx6)); +assign Ri6yx6 = (Xj6yx6 & Fk6yx6); +assign Fk6yx6 = (~(Nk6yx6 & Ji6yx6)); +assign Spq7v6 = (Lh6yx6 ? Vk6yx6 : J7wmz6[7]); +assign Lpq7v6 = (Fg6yx6 ? N9wmz6[7] : Vk6yx6); +assign Vk6yx6 = (~(Dl6yx6 & Ll6yx6)); +assign Ll6yx6 = (Tl6yx6 & Bm6yx6); +assign Bm6yx6 = (~(Iuvmz6[4] & D16yx6)); +assign Tl6yx6 = (Jm6yx6 & Rm6yx6); +assign Rm6yx6 = (~(Iuvmz6[8] & B26yx6)); +assign Jm6yx6 = (~(Iuvmz6[7] & J26yx6)); +assign Dl6yx6 = (Zm6yx6 & Hn6yx6); +assign Hn6yx6 = (~(Iuvmz6[6] & H36yx6)); +assign Zm6yx6 = (~(Iuvmz6[5] & P36yx6)); +assign Epq7v6 = (~(Pn6yx6 & Xn6yx6)); +assign Xn6yx6 = (~(Bi6yx6 & Sqvmz6[7])); +assign Pn6yx6 = (Fo6yx6 & No6yx6); +assign No6yx6 = (~(Vo6yx6 & J7wmz6[7])); +assign Fo6yx6 = (~(Dp6yx6 & N9wmz6[7])); +assign Xoq7v6 = (Ld6yx6 ? Lp6yx6 : Mgwmz6[7]); +assign Qoq7v6 = (Fc6yx6 ? Qiwmz6[7] : Lp6yx6); +assign Lp6yx6 = (~(Tp6yx6 & Bq6yx6)); +assign Bq6yx6 = (Jq6yx6 & Rq6yx6); +assign Rq6yx6 = (~(Iuvmz6[5] & D16yx6)); +assign Jq6yx6 = (Zq6yx6 & Hr6yx6); +assign Hr6yx6 = (~(Iuvmz6[4] & B26yx6)); +assign Zq6yx6 = (~(Iuvmz6[8] & J26yx6)); +assign Tp6yx6 = (Pr6yx6 & Xr6yx6); +assign Xr6yx6 = (~(Iuvmz6[7] & H36yx6)); +assign Pr6yx6 = (~(Iuvmz6[6] & P36yx6)); +assign Joq7v6 = (~(Fs6yx6 & Ns6yx6)); +assign Ns6yx6 = (~(Be6yx6 & Xovmz6[7])); +assign Fs6yx6 = (Vs6yx6 & Dt6yx6); +assign Dt6yx6 = (~(Lt6yx6 & Mgwmz6[7])); +assign Vs6yx6 = (~(Tt6yx6 & Qiwmz6[7])); +assign Coq7v6 = (L96yx6 ? Bu6yx6 : Ppwmz6[7]); +assign Vnq7v6 = (F86yx6 ? Trwmz6[7] : Bu6yx6); +assign Bu6yx6 = (~(Ju6yx6 & Ru6yx6)); +assign Ru6yx6 = (Zu6yx6 & Hv6yx6); +assign Hv6yx6 = (~(Iuvmz6[6] & D16yx6)); +assign Zu6yx6 = (Pv6yx6 & Xv6yx6); +assign Xv6yx6 = (~(Iuvmz6[5] & B26yx6)); +assign Pv6yx6 = (~(Iuvmz6[4] & J26yx6)); +assign Ju6yx6 = (Fw6yx6 & Nw6yx6); +assign Nw6yx6 = (~(Iuvmz6[8] & H36yx6)); +assign Fw6yx6 = (~(Iuvmz6[7] & P36yx6)); +assign Onq7v6 = (~(Vw6yx6 & Dx6yx6)); +assign Dx6yx6 = (~(Ba6yx6 & Cnvmz6[7])); +assign Vw6yx6 = (Lx6yx6 & Tx6yx6); +assign Tx6yx6 = (~(By6yx6 & Ppwmz6[7])); +assign Lx6yx6 = (~(Jy6yx6 & Trwmz6[7])); +assign Hnq7v6 = (X76yx6 ? Sywmz6[7] : Ry6yx6); +assign Anq7v6 = (R66yx6 ? W0xmz6[7] : Ry6yx6); +assign Ry6yx6 = (~(Zy6yx6 & Hz6yx6)); +assign Hz6yx6 = (Pz6yx6 & Xz6yx6); +assign Xz6yx6 = (~(Iuvmz6[7] & D16yx6)); +assign D16yx6 = (~(F07yx6 & N07yx6)); +assign N07yx6 = (V07yx6 & D17yx6); +assign D17yx6 = (~(X9s7z6[15] & L17yx6)); +assign V07yx6 = (T17yx6 & B27yx6); +assign B27yx6 = (~(J27yx6 & L94yx6)); +assign T17yx6 = (~(Gqr7z6[7] & R27yx6)); +assign F07yx6 = (Z27yx6 & H37yx6); +assign H37yx6 = (~(Wlr7z6[7] & P37yx6)); +assign Z27yx6 = (X37yx6 & F47yx6); +assign F47yx6 = (~(Cor7z6[7] & N47yx6)); +assign X37yx6 = (~(Tjr7z6[9] & V47yx6)); +assign Pz6yx6 = (D57yx6 & L57yx6); +assign L57yx6 = (~(Iuvmz6[6] & B26yx6)); +assign B26yx6 = (~(T57yx6 & B67yx6)); +assign B67yx6 = (J67yx6 & R67yx6); +assign R67yx6 = (~(Cor7z6[15] & N47yx6)); +assign J67yx6 = (~(Z67yx6 | H77yx6)); +assign Z67yx6 = (Gqr7z6[15] & R27yx6); +assign T57yx6 = (P77yx6 & X77yx6); +assign X77yx6 = (~(X9s7z6[23] & L17yx6)); +assign P77yx6 = (~(Wlr7z6[15] & P37yx6)); +assign D57yx6 = (~(Iuvmz6[5] & J26yx6)); +assign J26yx6 = (~(F87yx6 & N87yx6)); +assign N87yx6 = (V87yx6 & D97yx6); +assign D97yx6 = (~(Cor7z6[23] & N47yx6)); +assign V87yx6 = (~(Gqr7z6[23] & R27yx6)); +assign F87yx6 = (L97yx6 & T97yx6); +assign T97yx6 = (~(Wlr7z6[23] & P37yx6)); +assign L97yx6 = (~(X9s7z6[31] & L17yx6)); +assign Zy6yx6 = (Ba7yx6 & Ja7yx6); +assign Ja7yx6 = (~(Iuvmz6[4] & H36yx6)); +assign H36yx6 = (~(Ra7yx6 & Za7yx6)); +assign Za7yx6 = (Hb7yx6 & Pb7yx6); +assign Pb7yx6 = (~(Cor7z6[31] & N47yx6)); +assign Hb7yx6 = (~(Gqr7z6[31] & R27yx6)); +assign Ra7yx6 = (Xb7yx6 & Fc7yx6); +assign Fc7yx6 = (~(Wlr7z6[31] & P37yx6)); +assign Xb7yx6 = (~(X9s7z6[39] & L17yx6)); +assign Ba7yx6 = (~(Iuvmz6[8] & P36yx6)); +assign P36yx6 = (~(Nc7yx6 & Vc7yx6)); +assign Vc7yx6 = (Dd7yx6 & Ld7yx6); +assign Nc7yx6 = (~(Td7yx6 | Be7yx6)); +assign Td7yx6 = (X9s7z6[7] & L17yx6); +assign Tmq7v6 = (X76yx6 ? Sywmz6[3] : Je7yx6); +assign Mmq7v6 = (R66yx6 ? W0xmz6[3] : Je7yx6); +assign Je7yx6 = (~(Re7yx6 & Ze7yx6)); +assign Ze7yx6 = (Hf7yx6 & Pf7yx6); +assign Pf7yx6 = (~(Iuvmz6[8] & Xf7yx6)); +assign Hf7yx6 = (Fg7yx6 & Ng7yx6); +assign Ng7yx6 = (~(Iuvmz6[7] & Vg7yx6)); +assign Fg7yx6 = (~(Iuvmz6[6] & Dh7yx6)); +assign Re7yx6 = (Lh7yx6 & Th7yx6); +assign Th7yx6 = (~(Iuvmz6[5] & Bi7yx6)); +assign Lh7yx6 = (~(Iuvmz6[4] & Ji7yx6)); +assign Fmq7v6 = (L96yx6 ? Ri7yx6 : Ppwmz6[3]); +assign Ylq7v6 = (F86yx6 ? Trwmz6[3] : Ri7yx6); +assign Ri7yx6 = (~(Zi7yx6 & Hj7yx6)); +assign Hj7yx6 = (Pj7yx6 & Xj7yx6); +assign Xj7yx6 = (~(Iuvmz6[7] & Xf7yx6)); +assign Pj7yx6 = (Fk7yx6 & Nk7yx6); +assign Nk7yx6 = (~(Iuvmz6[6] & Vg7yx6)); +assign Fk7yx6 = (~(Iuvmz6[5] & Dh7yx6)); +assign Zi7yx6 = (Vk7yx6 & Dl7yx6); +assign Dl7yx6 = (~(Iuvmz6[4] & Bi7yx6)); +assign Vk7yx6 = (~(Iuvmz6[8] & Ji7yx6)); +assign Rlq7v6 = (~(Ll7yx6 & Tl7yx6)); +assign Tl7yx6 = (~(Ba6yx6 & Cnvmz6[3])); +assign Ll7yx6 = (Bm7yx6 & Jm7yx6); +assign Jm7yx6 = (~(Ppwmz6[3] & By6yx6)); +assign Bm7yx6 = (~(Trwmz6[3] & Jy6yx6)); +assign Klq7v6 = (Ld6yx6 ? Rm7yx6 : Mgwmz6[3]); +assign Dlq7v6 = (Fc6yx6 ? Qiwmz6[3] : Rm7yx6); +assign Rm7yx6 = (~(Zm7yx6 & Hn7yx6)); +assign Hn7yx6 = (Pn7yx6 & Xn7yx6); +assign Xn7yx6 = (~(Iuvmz6[6] & Xf7yx6)); +assign Pn7yx6 = (Fo7yx6 & No7yx6); +assign No7yx6 = (~(Iuvmz6[5] & Vg7yx6)); +assign Fo7yx6 = (~(Iuvmz6[4] & Dh7yx6)); +assign Zm7yx6 = (Vo7yx6 & Dp7yx6); +assign Dp7yx6 = (~(Iuvmz6[8] & Bi7yx6)); +assign Vo7yx6 = (~(Iuvmz6[7] & Ji7yx6)); +assign Wkq7v6 = (~(Lp7yx6 & Tp7yx6)); +assign Tp7yx6 = (~(Be6yx6 & Xovmz6[3])); +assign Lp7yx6 = (Bq7yx6 & Jq7yx6); +assign Jq7yx6 = (~(Mgwmz6[3] & Lt6yx6)); +assign Bq7yx6 = (~(Qiwmz6[3] & Tt6yx6)); +assign Pkq7v6 = (Lh6yx6 ? Rq7yx6 : J7wmz6[3]); +assign Ikq7v6 = (Fg6yx6 ? N9wmz6[3] : Rq7yx6); +assign Rq7yx6 = (~(Zq7yx6 & Hr7yx6)); +assign Hr7yx6 = (Pr7yx6 & Xr7yx6); +assign Xr7yx6 = (~(Iuvmz6[5] & Xf7yx6)); +assign Pr7yx6 = (Fs7yx6 & Ns7yx6); +assign Ns7yx6 = (~(Iuvmz6[4] & Vg7yx6)); +assign Fs7yx6 = (~(Iuvmz6[8] & Dh7yx6)); +assign Zq7yx6 = (Vs7yx6 & Dt7yx6); +assign Dt7yx6 = (~(Iuvmz6[7] & Bi7yx6)); +assign Vs7yx6 = (~(Iuvmz6[6] & Ji7yx6)); +assign Bkq7v6 = (~(Lt7yx6 & Tt7yx6)); +assign Tt7yx6 = (~(Bi6yx6 & Sqvmz6[3])); +assign Lt7yx6 = (Bu7yx6 & Ju7yx6); +assign Ju7yx6 = (~(J7wmz6[3] & Vo6yx6)); +assign Bu7yx6 = (~(N9wmz6[3] & Dp6yx6)); +assign Ujq7v6 = (Pz5yx6 ? Ru7yx6 : Gyvmz6[3]); +assign Njq7v6 = (Lz4ov6 ? K0wmz6[3] : Ru7yx6); +assign Ru7yx6 = (~(Zu7yx6 & Hv7yx6)); +assign Hv7yx6 = (Pv7yx6 & Xv7yx6); +assign Xv7yx6 = (~(Iuvmz6[4] & Xf7yx6)); +assign Xf7yx6 = (~(Fw7yx6 & Nw7yx6)); +assign Fw7yx6 = (Vw7yx6 & Dx7yx6); +assign Dx7yx6 = (~(Vr5ft6 & P37yx6)); +assign Vw7yx6 = (~(X9s7z6[3] & L17yx6)); +assign Pv7yx6 = (Lx7yx6 & Tx7yx6); +assign Tx7yx6 = (~(Iuvmz6[8] & Vg7yx6)); +assign Vg7yx6 = (~(By7yx6 & Jy7yx6)); +assign Jy7yx6 = (Ry7yx6 & Zy7yx6); +assign Zy7yx6 = (Hz7yx6 & Pz7yx6); +assign Pz7yx6 = (~(Tjr7z6[5] & V47yx6)); +assign Hz7yx6 = (~(Xz7yx6 & V1s7z6[3])); +assign Ry7yx6 = (F08yx6 & N08yx6); +assign N08yx6 = (~(Gqr7z6[3] & R27yx6)); +assign F08yx6 = (~(Cor7z6[3] & N47yx6)); +assign By7yx6 = (V08yx6 & D18yx6); +assign D18yx6 = (~(X9s7z6[11] & L17yx6)); +assign V08yx6 = (L18yx6 & T18yx6); +assign T18yx6 = (~(P7s7z6[11] & J27yx6)); +assign L18yx6 = (~(Wlr7z6[3] & P37yx6)); +assign Lx7yx6 = (~(Iuvmz6[7] & Dh7yx6)); +assign Dh7yx6 = (~(B28yx6 & J28yx6)); +assign J28yx6 = (R28yx6 & Z28yx6); +assign Z28yx6 = (~(Wlr7z6[11] & P37yx6)); +assign R28yx6 = (H38yx6 & P38yx6); +assign P38yx6 = (~(Cor7z6[11] & N47yx6)); +assign H38yx6 = (~(Gqr7z6[11] & R27yx6)); +assign B28yx6 = (X38yx6 & F48yx6); +assign F48yx6 = (~(P7s7z6[19] & J27yx6)); +assign X38yx6 = (~(X9s7z6[19] & L17yx6)); +assign Zu7yx6 = (N48yx6 & V48yx6); +assign V48yx6 = (~(Iuvmz6[6] & Bi7yx6)); +assign Bi7yx6 = (~(D58yx6 & L58yx6)); +assign L58yx6 = (T58yx6 & B68yx6); +assign B68yx6 = (~(Wlr7z6[19] & P37yx6)); +assign T58yx6 = (J68yx6 & R68yx6); +assign R68yx6 = (~(Cor7z6[19] & N47yx6)); +assign J68yx6 = (~(Gqr7z6[19] & R27yx6)); +assign D58yx6 = (Z68yx6 & H78yx6); +assign H78yx6 = (~(P7s7z6[27] & J27yx6)); +assign Z68yx6 = (~(X9s7z6[27] & L17yx6)); +assign N48yx6 = (~(Iuvmz6[5] & Ji7yx6)); +assign Ji7yx6 = (~(P78yx6 & X78yx6)); +assign X78yx6 = (F88yx6 & N88yx6); +assign N88yx6 = (~(Cor7z6[27] & N47yx6)); +assign F88yx6 = (~(Gqr7z6[27] & R27yx6)); +assign P78yx6 = (V88yx6 & D98yx6); +assign D98yx6 = (~(Wlr7z6[27] & P37yx6)); +assign V88yx6 = (~(X9s7z6[35] & L17yx6)); +assign Gjq7v6 = (~(L98yx6 & T98yx6)); +assign T98yx6 = (~(Nsvmz6[3] & G05ov6)); +assign L98yx6 = (Ba8yx6 & Ja8yx6); +assign Ja8yx6 = (~(Gyvmz6[3] & B15ov6)); +assign Ba8yx6 = (~(K0wmz6[3] & I15ov6)); +assign Ziq7v6 = (X76yx6 ? Sywmz6[2] : Ra8yx6); +assign Siq7v6 = (R66yx6 ? W0xmz6[2] : Ra8yx6); +assign Ra8yx6 = (~(Za8yx6 & Hb8yx6)); +assign Hb8yx6 = (Pb8yx6 & Xb8yx6); +assign Xb8yx6 = (~(Iuvmz6[8] & Fc8yx6)); +assign Pb8yx6 = (Nc8yx6 & Vc8yx6); +assign Vc8yx6 = (~(Iuvmz6[7] & Dd8yx6)); +assign Nc8yx6 = (~(Iuvmz6[6] & Ld8yx6)); +assign Za8yx6 = (Td8yx6 & Be8yx6); +assign Be8yx6 = (~(Iuvmz6[5] & Je8yx6)); +assign Td8yx6 = (~(Iuvmz6[4] & Re8yx6)); +assign Liq7v6 = (L96yx6 ? Ze8yx6 : Ppwmz6[2]); +assign Eiq7v6 = (F86yx6 ? Trwmz6[2] : Ze8yx6); +assign Ze8yx6 = (~(Hf8yx6 & Pf8yx6)); +assign Pf8yx6 = (Xf8yx6 & Fg8yx6); +assign Fg8yx6 = (~(Iuvmz6[7] & Fc8yx6)); +assign Xf8yx6 = (Ng8yx6 & Vg8yx6); +assign Vg8yx6 = (~(Iuvmz6[6] & Dd8yx6)); +assign Ng8yx6 = (~(Iuvmz6[5] & Ld8yx6)); +assign Hf8yx6 = (Dh8yx6 & Lh8yx6); +assign Lh8yx6 = (~(Iuvmz6[4] & Je8yx6)); +assign Dh8yx6 = (~(Iuvmz6[8] & Re8yx6)); +assign Xhq7v6 = (~(Th8yx6 & Bi8yx6)); +assign Bi8yx6 = (~(Ba6yx6 & Cnvmz6[2])); +assign Th8yx6 = (Ji8yx6 & Ri8yx6); +assign Ri8yx6 = (~(Ppwmz6[2] & By6yx6)); +assign Ji8yx6 = (~(Trwmz6[2] & Jy6yx6)); +assign Qhq7v6 = (Ld6yx6 ? Zi8yx6 : Mgwmz6[2]); +assign Jhq7v6 = (Fc6yx6 ? Qiwmz6[2] : Zi8yx6); +assign Zi8yx6 = (~(Hj8yx6 & Pj8yx6)); +assign Pj8yx6 = (Xj8yx6 & Fk8yx6); +assign Fk8yx6 = (~(Iuvmz6[6] & Fc8yx6)); +assign Xj8yx6 = (Nk8yx6 & Vk8yx6); +assign Vk8yx6 = (~(Iuvmz6[5] & Dd8yx6)); +assign Nk8yx6 = (~(Iuvmz6[4] & Ld8yx6)); +assign Hj8yx6 = (Dl8yx6 & Ll8yx6); +assign Ll8yx6 = (~(Iuvmz6[8] & Je8yx6)); +assign Dl8yx6 = (~(Iuvmz6[7] & Re8yx6)); +assign Chq7v6 = (~(Tl8yx6 & Bm8yx6)); +assign Bm8yx6 = (~(Be6yx6 & Xovmz6[2])); +assign Tl8yx6 = (Jm8yx6 & Rm8yx6); +assign Rm8yx6 = (~(Mgwmz6[2] & Lt6yx6)); +assign Jm8yx6 = (~(Qiwmz6[2] & Tt6yx6)); +assign Vgq7v6 = (Lh6yx6 ? Zm8yx6 : J7wmz6[2]); +assign Ogq7v6 = (Fg6yx6 ? N9wmz6[2] : Zm8yx6); +assign Zm8yx6 = (~(Hn8yx6 & Pn8yx6)); +assign Pn8yx6 = (Xn8yx6 & Fo8yx6); +assign Fo8yx6 = (~(Iuvmz6[5] & Fc8yx6)); +assign Xn8yx6 = (No8yx6 & Vo8yx6); +assign Vo8yx6 = (~(Iuvmz6[4] & Dd8yx6)); +assign No8yx6 = (~(Iuvmz6[8] & Ld8yx6)); +assign Hn8yx6 = (Dp8yx6 & Lp8yx6); +assign Lp8yx6 = (~(Iuvmz6[7] & Je8yx6)); +assign Dp8yx6 = (~(Iuvmz6[6] & Re8yx6)); +assign Hgq7v6 = (~(Tp8yx6 & Bq8yx6)); +assign Bq8yx6 = (~(Bi6yx6 & Sqvmz6[2])); +assign Tp8yx6 = (Jq8yx6 & Rq8yx6); +assign Rq8yx6 = (~(J7wmz6[2] & Vo6yx6)); +assign Jq8yx6 = (~(N9wmz6[2] & Dp6yx6)); +assign Agq7v6 = (Pz5yx6 ? Zq8yx6 : Gyvmz6[2]); +assign Tfq7v6 = (Lz4ov6 ? K0wmz6[2] : Zq8yx6); +assign Zq8yx6 = (~(Hr8yx6 & Pr8yx6)); +assign Pr8yx6 = (Xr8yx6 & Fs8yx6); +assign Fs8yx6 = (~(Iuvmz6[4] & Fc8yx6)); +assign Fc8yx6 = (~(Ns8yx6 & Vs8yx6)); +assign Vs8yx6 = (Dt8yx6 & Dd7yx6); +assign Ns8yx6 = (Lt8yx6 & Tt8yx6); +assign Xr8yx6 = (Bu8yx6 & Ju8yx6); +assign Ju8yx6 = (~(Iuvmz6[8] & Dd8yx6)); +assign Dd8yx6 = (~(Ru8yx6 & Zu8yx6)); +assign Zu8yx6 = (Hv8yx6 & Pv8yx6); +assign Pv8yx6 = (Xv8yx6 & Fw8yx6); +assign Xv8yx6 = (~(Tjr7z6[4] & V47yx6)); +assign Hv8yx6 = (Nw8yx6 & Vw8yx6); +assign Vw8yx6 = (~(Gqr7z6[2] & R27yx6)); +assign Nw8yx6 = (~(Cor7z6[2] & N47yx6)); +assign Ru8yx6 = (Dx8yx6 & Lx8yx6); +assign Lx8yx6 = (~(Xz7yx6 & V1s7z6[2])); +assign Dx8yx6 = (Tx8yx6 & By8yx6); +assign By8yx6 = (~(X9s7z6[10] & L17yx6)); +assign Tx8yx6 = (~(Wlr7z6[2] & P37yx6)); +assign Bu8yx6 = (~(Iuvmz6[7] & Ld8yx6)); +assign Ld8yx6 = (~(Jy8yx6 & Ry8yx6)); +assign Ry8yx6 = (Zy8yx6 & Hz8yx6); +assign Hz8yx6 = (~(Wlr7z6[10] & P37yx6)); +assign Zy8yx6 = (Pz8yx6 & Xz8yx6); +assign Xz8yx6 = (~(Cor7z6[10] & N47yx6)); +assign Pz8yx6 = (~(Gqr7z6[10] & R27yx6)); +assign Jy8yx6 = (F09yx6 & N09yx6); +assign N09yx6 = (~(P7s7z6[18] & J27yx6)); +assign F09yx6 = (~(X9s7z6[18] & L17yx6)); +assign Hr8yx6 = (V09yx6 & D19yx6); +assign D19yx6 = (~(Iuvmz6[6] & Je8yx6)); +assign Je8yx6 = (~(L19yx6 & T19yx6)); +assign T19yx6 = (B29yx6 & J29yx6); +assign J29yx6 = (~(Wlr7z6[18] & P37yx6)); +assign B29yx6 = (R29yx6 & Z29yx6); +assign Z29yx6 = (~(Cor7z6[18] & N47yx6)); +assign R29yx6 = (~(Gqr7z6[18] & R27yx6)); +assign L19yx6 = (H39yx6 & P39yx6); +assign P39yx6 = (~(P7s7z6[26] & J27yx6)); +assign H39yx6 = (~(X9s7z6[26] & L17yx6)); +assign V09yx6 = (~(Iuvmz6[5] & Re8yx6)); +assign Re8yx6 = (~(X39yx6 & F49yx6)); +assign F49yx6 = (N49yx6 & V49yx6); +assign V49yx6 = (~(Cor7z6[26] & N47yx6)); +assign N49yx6 = (~(Gqr7z6[26] & R27yx6)); +assign X39yx6 = (D59yx6 & L59yx6); +assign L59yx6 = (~(Wlr7z6[26] & P37yx6)); +assign D59yx6 = (~(X9s7z6[34] & L17yx6)); +assign Mfq7v6 = (~(T59yx6 & B69yx6)); +assign B69yx6 = (~(Nsvmz6[2] & G05ov6)); +assign T59yx6 = (J69yx6 & R69yx6); +assign R69yx6 = (~(Gyvmz6[2] & B15ov6)); +assign J69yx6 = (~(K0wmz6[2] & I15ov6)); +assign Ffq7v6 = (X76yx6 ? Sywmz6[1] : Z69yx6); +assign Yeq7v6 = (R66yx6 ? W0xmz6[1] : Z69yx6); +assign Z69yx6 = (~(H79yx6 & P79yx6)); +assign P79yx6 = (X79yx6 & F89yx6); +assign F89yx6 = (~(Iuvmz6[8] & N89yx6)); +assign X79yx6 = (V89yx6 & D99yx6); +assign D99yx6 = (~(Iuvmz6[7] & L99yx6)); +assign V89yx6 = (~(Iuvmz6[6] & T99yx6)); +assign H79yx6 = (Ba9yx6 & Ja9yx6); +assign Ja9yx6 = (~(Iuvmz6[5] & Ra9yx6)); +assign Ba9yx6 = (~(Iuvmz6[4] & Za9yx6)); +assign Req7v6 = (L96yx6 ? Hb9yx6 : Ppwmz6[1]); +assign Keq7v6 = (F86yx6 ? Trwmz6[1] : Hb9yx6); +assign Hb9yx6 = (~(Pb9yx6 & Xb9yx6)); +assign Xb9yx6 = (Fc9yx6 & Nc9yx6); +assign Nc9yx6 = (~(Iuvmz6[7] & N89yx6)); +assign Fc9yx6 = (Vc9yx6 & Dd9yx6); +assign Dd9yx6 = (~(Iuvmz6[6] & L99yx6)); +assign Vc9yx6 = (~(Iuvmz6[5] & T99yx6)); +assign Pb9yx6 = (Ld9yx6 & Td9yx6); +assign Td9yx6 = (~(Iuvmz6[4] & Ra9yx6)); +assign Ld9yx6 = (~(Iuvmz6[8] & Za9yx6)); +assign Deq7v6 = (~(Be9yx6 & Je9yx6)); +assign Je9yx6 = (~(Ba6yx6 & Cnvmz6[1])); +assign Be9yx6 = (Re9yx6 & Ze9yx6); +assign Ze9yx6 = (~(Ppwmz6[1] & By6yx6)); +assign Re9yx6 = (~(Trwmz6[1] & Jy6yx6)); +assign Wdq7v6 = (Ld6yx6 ? Hf9yx6 : Mgwmz6[1]); +assign Pdq7v6 = (Fc6yx6 ? Qiwmz6[1] : Hf9yx6); +assign Hf9yx6 = (~(Pf9yx6 & Xf9yx6)); +assign Xf9yx6 = (Fg9yx6 & Ng9yx6); +assign Ng9yx6 = (~(Iuvmz6[6] & N89yx6)); +assign Fg9yx6 = (Vg9yx6 & Dh9yx6); +assign Dh9yx6 = (~(Iuvmz6[5] & L99yx6)); +assign Vg9yx6 = (~(Iuvmz6[4] & T99yx6)); +assign Pf9yx6 = (Lh9yx6 & Th9yx6); +assign Th9yx6 = (~(Iuvmz6[8] & Ra9yx6)); +assign Lh9yx6 = (~(Iuvmz6[7] & Za9yx6)); +assign Idq7v6 = (~(Bi9yx6 & Ji9yx6)); +assign Ji9yx6 = (~(Be6yx6 & Xovmz6[1])); +assign Bi9yx6 = (Ri9yx6 & Zi9yx6); +assign Zi9yx6 = (~(Mgwmz6[1] & Lt6yx6)); +assign Ri9yx6 = (~(Qiwmz6[1] & Tt6yx6)); +assign Bdq7v6 = (Lh6yx6 ? Hj9yx6 : J7wmz6[1]); +assign Ucq7v6 = (Fg6yx6 ? N9wmz6[1] : Hj9yx6); +assign Hj9yx6 = (~(Pj9yx6 & Xj9yx6)); +assign Xj9yx6 = (Fk9yx6 & Nk9yx6); +assign Nk9yx6 = (~(Iuvmz6[5] & N89yx6)); +assign Fk9yx6 = (Vk9yx6 & Dl9yx6); +assign Dl9yx6 = (~(Iuvmz6[4] & L99yx6)); +assign Vk9yx6 = (~(Iuvmz6[8] & T99yx6)); +assign Pj9yx6 = (Ll9yx6 & Tl9yx6); +assign Tl9yx6 = (~(Iuvmz6[7] & Ra9yx6)); +assign Ll9yx6 = (~(Iuvmz6[6] & Za9yx6)); +assign Ncq7v6 = (~(Bm9yx6 & Jm9yx6)); +assign Jm9yx6 = (~(Bi6yx6 & Sqvmz6[1])); +assign Bm9yx6 = (Rm9yx6 & Zm9yx6); +assign Zm9yx6 = (~(J7wmz6[1] & Vo6yx6)); +assign Rm9yx6 = (~(N9wmz6[1] & Dp6yx6)); +assign Gcq7v6 = (Pz5yx6 ? Hn9yx6 : Gyvmz6[1]); +assign Zbq7v6 = (Lz4ov6 ? K0wmz6[1] : Hn9yx6); +assign Hn9yx6 = (~(Pn9yx6 & Xn9yx6)); +assign Xn9yx6 = (Fo9yx6 & No9yx6); +assign No9yx6 = (~(Iuvmz6[4] & N89yx6)); +assign N89yx6 = (~(Vo9yx6 & Dp9yx6)); +assign Dp9yx6 = (Lp9yx6 & Dt8yx6); +assign Lp9yx6 = (~(Tp9yx6 | R27yx6)); +assign Vo9yx6 = (Bq9yx6 & Tt8yx6); +assign Bq9yx6 = (~(P37yx6 & Jq9yx6)); +assign Jq9yx6 = (~(Rq9yx6 ^ Xcr7z6[0])); +assign Fo9yx6 = (Zq9yx6 & Hr9yx6); +assign Hr9yx6 = (~(Iuvmz6[8] & L99yx6)); +assign L99yx6 = (~(Pr9yx6 & Xr9yx6)); +assign Xr9yx6 = (Fs9yx6 & Ns9yx6); +assign Ns9yx6 = (Vs9yx6 & Dt9yx6); +assign Dt9yx6 = (~(Tjr7z6[3] & V47yx6)); +assign Fs9yx6 = (Lt9yx6 & Tt9yx6); +assign Tt9yx6 = (~(Gqr7z6[1] & R27yx6)); +assign Lt9yx6 = (~(Xz7yx6 & V1s7z6[1])); +assign Pr9yx6 = (Bu9yx6 & Ju9yx6); +assign Ju9yx6 = (~(X9s7z6[9] & L17yx6)); +assign Bu9yx6 = (Ru9yx6 & Zu9yx6); +assign Zu9yx6 = (~(Cor7z6[1] & N47yx6)); +assign Ru9yx6 = (~(Wlr7z6[1] & P37yx6)); +assign Zq9yx6 = (~(Iuvmz6[7] & T99yx6)); +assign T99yx6 = (~(Hv9yx6 & Pv9yx6)); +assign Pv9yx6 = (Xv9yx6 & Fw9yx6); +assign Fw9yx6 = (~(Wlr7z6[9] & P37yx6)); +assign Xv9yx6 = (Nw9yx6 & Vw9yx6); +assign Vw9yx6 = (~(Cor7z6[9] & N47yx6)); +assign Nw9yx6 = (~(Gqr7z6[9] & R27yx6)); +assign Hv9yx6 = (Dx9yx6 & Lx9yx6); +assign Lx9yx6 = (~(P7s7z6[17] & J27yx6)); +assign Dx9yx6 = (~(X9s7z6[17] & L17yx6)); +assign Pn9yx6 = (Tx9yx6 & By9yx6); +assign By9yx6 = (~(Iuvmz6[6] & Ra9yx6)); +assign Ra9yx6 = (~(Jy9yx6 & Ry9yx6)); +assign Ry9yx6 = (Zy9yx6 & Hz9yx6); +assign Hz9yx6 = (~(Wlr7z6[17] & P37yx6)); +assign Zy9yx6 = (Pz9yx6 & Xz9yx6); +assign Xz9yx6 = (~(Cor7z6[17] & N47yx6)); +assign Pz9yx6 = (~(Gqr7z6[17] & R27yx6)); +assign Jy9yx6 = (F0ayx6 & N0ayx6); +assign N0ayx6 = (~(P7s7z6[25] & J27yx6)); +assign F0ayx6 = (~(X9s7z6[25] & L17yx6)); +assign Tx9yx6 = (~(Iuvmz6[5] & Za9yx6)); +assign Za9yx6 = (~(V0ayx6 & D1ayx6)); +assign D1ayx6 = (L1ayx6 & T1ayx6); +assign T1ayx6 = (~(Cor7z6[25] & N47yx6)); +assign L1ayx6 = (~(Gqr7z6[25] & R27yx6)); +assign V0ayx6 = (B2ayx6 & J2ayx6); +assign J2ayx6 = (~(Wlr7z6[25] & P37yx6)); +assign B2ayx6 = (~(X9s7z6[33] & L17yx6)); +assign Sbq7v6 = (~(R2ayx6 & Z2ayx6)); +assign Z2ayx6 = (~(Nsvmz6[1] & G05ov6)); +assign R2ayx6 = (H3ayx6 & P3ayx6); +assign P3ayx6 = (~(Gyvmz6[1] & B15ov6)); +assign H3ayx6 = (~(K0wmz6[1] & I15ov6)); +assign Lbq7v6 = (X76yx6 ? Sywmz6[0] : X3ayx6); +assign Ebq7v6 = (R66yx6 ? W0xmz6[0] : X3ayx6); +assign X3ayx6 = (~(F4ayx6 & N4ayx6)); +assign N4ayx6 = (V4ayx6 & D5ayx6); +assign D5ayx6 = (~(Iuvmz6[8] & L5ayx6)); +assign V4ayx6 = (T5ayx6 & B6ayx6); +assign B6ayx6 = (~(Iuvmz6[7] & J6ayx6)); +assign T5ayx6 = (~(Iuvmz6[6] & R6ayx6)); +assign F4ayx6 = (Z6ayx6 & H7ayx6); +assign H7ayx6 = (~(Iuvmz6[5] & P7ayx6)); +assign Z6ayx6 = (~(Iuvmz6[4] & X7ayx6)); +assign Xaq7v6 = (L96yx6 ? F8ayx6 : Ppwmz6[0]); +assign Qaq7v6 = (F86yx6 ? Trwmz6[0] : F8ayx6); +assign F8ayx6 = (~(N8ayx6 & V8ayx6)); +assign V8ayx6 = (D9ayx6 & L9ayx6); +assign L9ayx6 = (~(Iuvmz6[7] & L5ayx6)); +assign D9ayx6 = (T9ayx6 & Baayx6); +assign Baayx6 = (~(Iuvmz6[6] & J6ayx6)); +assign T9ayx6 = (~(Iuvmz6[5] & R6ayx6)); +assign N8ayx6 = (Jaayx6 & Raayx6); +assign Raayx6 = (~(Iuvmz6[4] & P7ayx6)); +assign Jaayx6 = (~(Iuvmz6[8] & X7ayx6)); +assign Jaq7v6 = (~(Zaayx6 & Hbayx6)); +assign Hbayx6 = (~(Ba6yx6 & Cnvmz6[0])); +assign Zaayx6 = (Pbayx6 & Xbayx6); +assign Xbayx6 = (~(Ppwmz6[0] & By6yx6)); +assign Pbayx6 = (~(Trwmz6[0] & Jy6yx6)); +assign Caq7v6 = (Ld6yx6 ? Fcayx6 : Mgwmz6[0]); +assign V9q7v6 = (Fc6yx6 ? Qiwmz6[0] : Fcayx6); +assign Fcayx6 = (~(Ncayx6 & Vcayx6)); +assign Vcayx6 = (Ddayx6 & Ldayx6); +assign Ldayx6 = (~(Iuvmz6[6] & L5ayx6)); +assign Ddayx6 = (Tdayx6 & Beayx6); +assign Beayx6 = (~(Iuvmz6[5] & J6ayx6)); +assign Tdayx6 = (~(Iuvmz6[4] & R6ayx6)); +assign Ncayx6 = (Jeayx6 & Reayx6); +assign Reayx6 = (~(Iuvmz6[8] & P7ayx6)); +assign Jeayx6 = (~(Iuvmz6[7] & X7ayx6)); +assign O9q7v6 = (~(Zeayx6 & Hfayx6)); +assign Hfayx6 = (~(Be6yx6 & Xovmz6[0])); +assign Zeayx6 = (Pfayx6 & Xfayx6); +assign Xfayx6 = (~(Mgwmz6[0] & Lt6yx6)); +assign Pfayx6 = (~(Qiwmz6[0] & Tt6yx6)); +assign H9q7v6 = (Lh6yx6 ? Fgayx6 : J7wmz6[0]); +assign A9q7v6 = (Fg6yx6 ? N9wmz6[0] : Fgayx6); +assign Fgayx6 = (~(Ngayx6 & Vgayx6)); +assign Vgayx6 = (Dhayx6 & Lhayx6); +assign Lhayx6 = (~(Iuvmz6[5] & L5ayx6)); +assign Dhayx6 = (Thayx6 & Biayx6); +assign Biayx6 = (~(Iuvmz6[4] & J6ayx6)); +assign Thayx6 = (~(Iuvmz6[8] & R6ayx6)); +assign Ngayx6 = (Jiayx6 & Riayx6); +assign Riayx6 = (~(Iuvmz6[7] & P7ayx6)); +assign Jiayx6 = (~(Iuvmz6[6] & X7ayx6)); +assign T8q7v6 = (~(Ziayx6 & Hjayx6)); +assign Hjayx6 = (~(Bi6yx6 & Sqvmz6[0])); +assign Ziayx6 = (Pjayx6 & Xjayx6); +assign Xjayx6 = (~(J7wmz6[0] & Vo6yx6)); +assign Pjayx6 = (~(N9wmz6[0] & Dp6yx6)); +assign M8q7v6 = (Pz5yx6 ? Fkayx6 : Gyvmz6[0]); +assign F8q7v6 = (Lz4ov6 ? K0wmz6[0] : Fkayx6); +assign Fkayx6 = (~(Nkayx6 & Vkayx6)); +assign Vkayx6 = (Dlayx6 & Llayx6); +assign Llayx6 = (~(Iuvmz6[4] & L5ayx6)); +assign L5ayx6 = (~(Tlayx6 & Bmayx6)); +assign Bmayx6 = (~(Jmayx6 | Rmayx6)); +assign Tlayx6 = (Zmayx6 & Lt8yx6); +assign Lt8yx6 = (~(Hnayx6 & Pnayx6)); +assign Pnayx6 = (~(Xnayx6 & Ri5yx6)); +assign Zmayx6 = (~(X9s7z6[0] & L17yx6)); +assign Dlayx6 = (Foayx6 & Noayx6); +assign Noayx6 = (~(Iuvmz6[8] & J6ayx6)); +assign J6ayx6 = (~(Voayx6 & Dpayx6)); +assign Dpayx6 = (Lpayx6 & Tpayx6); +assign Lpayx6 = (Bqayx6 & Jqayx6); +assign Jqayx6 = (~(Wlr7z6[0] & P37yx6)); +assign Bqayx6 = (~(Xz7yx6 & V1s7z6[0])); +assign Voayx6 = (Rqayx6 & Zqayx6); +assign Zqayx6 = (~(Tjr7z6[2] & V47yx6)); +assign Rqayx6 = (Hrayx6 & Prayx6); +assign Prayx6 = (~(X9s7z6[8] & L17yx6)); +assign Hrayx6 = (~(Cor7z6[0] & N47yx6)); +assign Foayx6 = (~(Iuvmz6[7] & R6ayx6)); +assign R6ayx6 = (~(Xrayx6 & Fsayx6)); +assign Fsayx6 = (Nsayx6 & Vsayx6); +assign Vsayx6 = (~(X9s7z6[16] & L17yx6)); +assign Nsayx6 = (Dtayx6 & Ltayx6); +assign Ltayx6 = (~(Wlr7z6[8] & P37yx6)); +assign Dtayx6 = (~(Gqr7z6[8] & R27yx6)); +assign Xrayx6 = (Ttayx6 & Buayx6); +assign Buayx6 = (~(Tjr7z6[10] & V47yx6)); +assign Ttayx6 = (Juayx6 & Ruayx6); +assign Ruayx6 = (~(Cor7z6[8] & N47yx6)); +assign Juayx6 = (~(P7s7z6[16] & J27yx6)); +assign Nkayx6 = (Zuayx6 & Hvayx6); +assign Hvayx6 = (~(Iuvmz6[6] & P7ayx6)); +assign P7ayx6 = (~(Pvayx6 & Xvayx6)); +assign Xvayx6 = (Fwayx6 & Nwayx6); +assign Nwayx6 = (~(Wlr7z6[16] & P37yx6)); +assign Fwayx6 = (Vwayx6 & Dxayx6); +assign Dxayx6 = (~(Cor7z6[16] & N47yx6)); +assign Vwayx6 = (~(Gqr7z6[16] & R27yx6)); +assign Pvayx6 = (Lxayx6 & Txayx6); +assign Txayx6 = (~(P7s7z6[24] & J27yx6)); +assign Lxayx6 = (~(X9s7z6[24] & L17yx6)); +assign Zuayx6 = (~(Iuvmz6[5] & X7ayx6)); +assign X7ayx6 = (~(Byayx6 & Jyayx6)); +assign Jyayx6 = (Ryayx6 & Zyayx6); +assign Zyayx6 = (~(Cor7z6[24] & N47yx6)); +assign Ryayx6 = (~(Gqr7z6[24] & R27yx6)); +assign Byayx6 = (Hzayx6 & Pzayx6); +assign Pzayx6 = (~(Wlr7z6[24] & P37yx6)); +assign Hzayx6 = (~(X9s7z6[32] & L17yx6)); +assign Y7q7v6 = (~(Xzayx6 & F0byx6)); +assign F0byx6 = (~(Nsvmz6[0] & G05ov6)); +assign Xzayx6 = (N0byx6 & V0byx6); +assign V0byx6 = (~(Gyvmz6[0] & B15ov6)); +assign N0byx6 = (~(K0wmz6[0] & I15ov6)); +assign R7q7v6 = (D1byx6 & Ixr7z6[1]); +assign D1byx6 = (L1byx6 & Ry5yx6); +assign Ry5yx6 = (~(Zu4yx6 & T1byx6)); +assign Zu4yx6 = (!Xv4yx6); +assign L1byx6 = (Alo7x6 | Ixr7z6[0]); +assign Alo7x6 = (~(B2byx6 & U0r7x6)); +assign U0r7x6 = (~(Dw4ft6 & Bb9ov6)); +assign B2byx6 = (J2byx6 & Z9o7x6); +assign Z9o7x6 = (~(Sk4ft6 & Bb9ov6)); +assign J2byx6 = (~(Bb9ov6 & R2byx6)); +assign R2byx6 = (M55ft6 | Kg5ft6); +assign Bb9ov6 = (Z2byx6 & O5a7z6); +assign Z2byx6 = (~(A0onv6 | Euget6)); +assign K7q7v6 = (~(H3byx6 & P3byx6)); +assign P3byx6 = (X3byx6 | Zy3yx6); +assign Zy3yx6 = (!Z24yx6); +assign H3byx6 = (~(Vs27v6 & J24yx6)); +assign D7q7v6 = (~(X3byx6 & F4byx6)); +assign F4byx6 = (~(Gq37v6 & Fo4yx6)); +assign X3byx6 = (N4byx6 & Pr4yx6); +assign Pr4yx6 = (No4yx6 | Dp4yx6); +assign Dp4yx6 = (V4byx6 & L17yx6); +assign N4byx6 = (~(D5byx6 & Xv4yx6)); +assign Xv4yx6 = (~(V4byx6 & Hnayx6)); +assign W6q7v6 = (!L5byx6); +assign L5byx6 = (Fa5ov6 ? B6byx6 : T5byx6); +assign T5byx6 = (~(J6byx6 & R6byx6)); +assign J6byx6 = (~(Ur37v6 | Gq37v6)); +assign P6q7v6 = (~(Z6byx6 & H7byx6)); +assign H7byx6 = (~(O9xmz6[2] & Ma5ov6)); +assign Z6byx6 = (P7byx6 | Fa5ov6); +assign I6q7v6 = (F8byx6 ? X7byx6 : O9xmz6[0]); +assign X7byx6 = (~(N8byx6 & V8byx6)); +assign V8byx6 = (~(Vgfnv6 | D9byx6)); +assign D9byx6 = (O9xmz6[0] & R6byx6); +assign Vgfnv6 = (~(L9byx6 & T9byx6)); +assign T9byx6 = (Babyx6 & Jabyx6); +assign Jabyx6 = (~(TSVALUEB[11] ^ Vcxmz6[11])); +assign Babyx6 = (Rabyx6 & Zabyx6); +assign Zabyx6 = (~(TSVALUEB[12] ^ Vcxmz6[12])); +assign Rabyx6 = (~(TSVALUEB[10] ^ Vcxmz6[10])); +assign L9byx6 = (Hbbyx6 & Pbbyx6); +assign Pbbyx6 = (~(TSVALUEB[8] ^ Vcxmz6[8])); +assign Hbbyx6 = (Xbbyx6 & Fcbyx6); +assign Fcbyx6 = (~(TSVALUEB[9] ^ Vcxmz6[9])); +assign Xbbyx6 = (~(TSVALUEB[7] ^ Vcxmz6[7])); +assign N8byx6 = (Qhfnv6 & Y95ov6); +assign Y95ov6 = (P7byx6 & Xhfnv6); +assign Xhfnv6 = (Ncbyx6 & Vcbyx6); +assign Vcbyx6 = (Ddbyx6 & Ldbyx6); +assign Ldbyx6 = (Tdbyx6 & Bebyx6); +assign Bebyx6 = (~(TSVALUEB[14] ^ Vcxmz6[14])); +assign Tdbyx6 = (~(TSVALUEB[15] ^ Vcxmz6[15])); +assign Ddbyx6 = (Jebyx6 & Rebyx6); +assign Rebyx6 = (~(TSVALUEB[16] ^ Vcxmz6[16])); +assign Jebyx6 = (~(TSVALUEB[17] ^ Vcxmz6[17])); +assign Ncbyx6 = (Zebyx6 & Hfbyx6); +assign Hfbyx6 = (~(TSVALUEB[19] ^ Vcxmz6[19])); +assign Zebyx6 = (Pfbyx6 & Xfbyx6); +assign Xfbyx6 = (~(TSVALUEB[20] ^ Vcxmz6[20])); +assign Pfbyx6 = (~(TSVALUEB[18] ^ Vcxmz6[18])); +assign P7byx6 = (~(Fgbyx6 | X447v6)); +assign X447v6 = (~(Sifnv6 & Ngbyx6)); +assign Ngbyx6 = (~(P647v6 & Vgbyx6)); +assign Vgbyx6 = (~(Ak77z6 & Dhbyx6)); +assign Sifnv6 = (Lifnv6 ? Thbyx6 : Lhbyx6); +assign Lifnv6 = (~(R8s7z6[1] | R8s7z6[0])); +assign Thbyx6 = (~(Hr4yx6 & Bibyx6)); +assign Bibyx6 = (~(Olfiw6 & Fkfiw6)); +assign Lhbyx6 = (Zb1nv6 & Jibyx6); +assign Jibyx6 = (~(Ribyx6 & Fho7v6)); +assign Ribyx6 = (Zibyx6 | Fgbyx6); +assign Zb1nv6 = (!Txadt6); +assign Fgbyx6 = (~(Hjbyx6 & Pjbyx6)); +assign Pjbyx6 = (Xjbyx6 & Fkbyx6); +assign Fkbyx6 = (~(TSVALUEB[22] ^ Vcxmz6[22])); +assign Xjbyx6 = (Nkbyx6 & Vkbyx6); +assign Vkbyx6 = (~(TSVALUEB[23] ^ Vcxmz6[23])); +assign Nkbyx6 = (~(TSVALUEB[21] ^ Vcxmz6[21])); +assign Hjbyx6 = (Dlbyx6 & Llbyx6); +assign Llbyx6 = (~(TSVALUEB[24] ^ Vcxmz6[24])); +assign Dlbyx6 = (~(TSVALUEB[25] ^ Vcxmz6[25])); +assign Qhfnv6 = (~(TSVALUEB[13] ^ Vcxmz6[13])); +assign B6q7v6 = (~(Tlbyx6 & Bmbyx6)); +assign Bmbyx6 = (~(V147v6 & Jmbyx6)); +assign Jmbyx6 = (Ma5ov6 | I347v6); +assign Ma5ov6 = (~(Mh5ov6 & F8byx6)); +assign Tlbyx6 = (~(Zibyx6 & F8byx6)); +assign F8byx6 = (!Fa5ov6); +assign Fa5ov6 = (Rmbyx6 & Zmbyx6); +assign Rmbyx6 = (~(Mh5ov6 & W85ov6)); +assign W85ov6 = (~(Hnbyx6 & Pnbyx6)); +assign Pnbyx6 = (Xnbyx6 & Fobyx6); +assign Fobyx6 = (~(Sqvmz6[8] & Nk6yx6)); +assign Xnbyx6 = (~(Nobyx6 & Vobyx6)); +assign Vobyx6 = (~(Dpbyx6 & Lpbyx6)); +assign Lpbyx6 = (~(Kms7z6[8] & Kwvmz6[0])); +assign Dpbyx6 = (Tpbyx6 & Bqbyx6); +assign Bqbyx6 = (~(Xovmz6[8] & Kwvmz6[3])); +assign Tpbyx6 = (~(Cnvmz6[8] & Kwvmz6[4])); +assign Hnbyx6 = (Jqbyx6 & Rqbyx6); +assign Rqbyx6 = (Zqbyx6 | Pf5ov6); +assign Jqbyx6 = (~(Nsvmz6[8] & J66yx6)); +assign Zibyx6 = (~(Hrbyx6 & Prbyx6)); +assign Prbyx6 = (Xrbyx6 & Fsbyx6); +assign Fsbyx6 = (Nsbyx6 & Vsbyx6); +assign Vsbyx6 = (Dtbyx6 & Ltbyx6); +assign Ltbyx6 = (~(TSVALUEB[47] ^ Vcxmz6[47])); +assign Dtbyx6 = (Ttbyx6 & Bubyx6); +assign Bubyx6 = (~(TSVALUEB[43] ^ Vcxmz6[43])); +assign Ttbyx6 = (~(TSVALUEB[45] ^ Vcxmz6[45])); +assign Nsbyx6 = (Jubyx6 & Rubyx6); +assign Rubyx6 = (~(TSVALUEB[40] ^ Vcxmz6[40])); +assign Jubyx6 = (Zubyx6 & Hvbyx6); +assign Hvbyx6 = (~(TSVALUEB[41] ^ Vcxmz6[41])); +assign Zubyx6 = (~(TSVALUEB[44] ^ Vcxmz6[44])); +assign Xrbyx6 = (Pvbyx6 & Xvbyx6); +assign Xvbyx6 = (Fwbyx6 & Nwbyx6); +assign Nwbyx6 = (~(TSVALUEB[34] ^ Vcxmz6[34])); +assign Fwbyx6 = (Vwbyx6 & Dxbyx6); +assign Dxbyx6 = (~(TSVALUEB[36] ^ Vcxmz6[36])); +assign Vwbyx6 = (~(TSVALUEB[38] ^ Vcxmz6[38])); +assign Pvbyx6 = (Lxbyx6 & Txbyx6); +assign Txbyx6 = (~(TSVALUEB[32] ^ Vcxmz6[32])); +assign Lxbyx6 = (~(TSVALUEB[33] ^ Vcxmz6[33])); +assign Hrbyx6 = (Bybyx6 & Jybyx6); +assign Jybyx6 = (Rybyx6 & Zybyx6); +assign Zybyx6 = (Hzbyx6 & Pzbyx6); +assign Pzbyx6 = (~(TSVALUEB[30] ^ Vcxmz6[30])); +assign Hzbyx6 = (Xzbyx6 & F0cyx6); +assign F0cyx6 = (~(TSVALUEB[27] ^ Vcxmz6[27])); +assign Xzbyx6 = (~(TSVALUEB[29] ^ Vcxmz6[29])); +assign Rybyx6 = (N0cyx6 & V0cyx6); +assign V0cyx6 = (~(TSVALUEB[37] ^ Vcxmz6[37])); +assign N0cyx6 = (D1cyx6 & L1cyx6); +assign L1cyx6 = (~(TSVALUEB[39] ^ Vcxmz6[39])); +assign D1cyx6 = (~(TSVALUEB[42] ^ Vcxmz6[42])); +assign Bybyx6 = (T1cyx6 & B2cyx6); +assign B2cyx6 = (J2cyx6 & R2cyx6); +assign R2cyx6 = (~(TSVALUEB[26] ^ Vcxmz6[26])); +assign J2cyx6 = (Z2cyx6 & H3cyx6); +assign H3cyx6 = (~(TSVALUEB[28] ^ Vcxmz6[28])); +assign Z2cyx6 = (~(TSVALUEB[31] ^ Vcxmz6[31])); +assign T1cyx6 = (P3cyx6 & X3cyx6); +assign X3cyx6 = (~(TSVALUEB[35] ^ Vcxmz6[35])); +assign P3cyx6 = (~(TSVALUEB[46] ^ Vcxmz6[46])); +assign U5q7v6 = (Pz5yx6 ? F4cyx6 : Gyvmz6[4]); +assign N5q7v6 = (Lz4ov6 ? K0wmz6[4] : F4cyx6); +assign F4cyx6 = (~(N4cyx6 & V4cyx6)); +assign V4cyx6 = (D5cyx6 & L5cyx6); +assign L5cyx6 = (~(Iuvmz6[8] & T5cyx6)); +assign D5cyx6 = (B6cyx6 & J6cyx6); +assign J6cyx6 = (~(Iuvmz6[7] & R6cyx6)); +assign B6cyx6 = (~(Iuvmz6[6] & Z6cyx6)); +assign N4cyx6 = (H7cyx6 & P7cyx6); +assign P7cyx6 = (~(Iuvmz6[5] & X7cyx6)); +assign H7cyx6 = (~(Iuvmz6[4] & F8cyx6)); +assign G5q7v6 = (~(N8cyx6 & V8cyx6)); +assign V8cyx6 = (~(Nsvmz6[4] & G05ov6)); +assign N8cyx6 = (D9cyx6 & L9cyx6); +assign L9cyx6 = (~(Gyvmz6[4] & B15ov6)); +assign D9cyx6 = (~(K0wmz6[4] & I15ov6)); +assign Z4q7v6 = (Lh6yx6 ? T9cyx6 : J7wmz6[4]); +assign S4q7v6 = (Fg6yx6 ? N9wmz6[4] : T9cyx6); +assign T9cyx6 = (~(Bacyx6 & Jacyx6)); +assign Jacyx6 = (Racyx6 & Zacyx6); +assign Zacyx6 = (~(Iuvmz6[4] & T5cyx6)); +assign Racyx6 = (Hbcyx6 & Pbcyx6); +assign Pbcyx6 = (~(Iuvmz6[8] & R6cyx6)); +assign Hbcyx6 = (~(Iuvmz6[7] & Z6cyx6)); +assign Bacyx6 = (Xbcyx6 & Fccyx6); +assign Fccyx6 = (~(Iuvmz6[6] & X7cyx6)); +assign Xbcyx6 = (~(Iuvmz6[5] & F8cyx6)); +assign L4q7v6 = (~(Nccyx6 & Vccyx6)); +assign Vccyx6 = (~(Bi6yx6 & Sqvmz6[4])); +assign Nccyx6 = (Ddcyx6 & Ldcyx6); +assign Ldcyx6 = (~(J7wmz6[4] & Vo6yx6)); +assign Ddcyx6 = (~(N9wmz6[4] & Dp6yx6)); +assign E4q7v6 = (Ld6yx6 ? Tdcyx6 : Mgwmz6[4]); +assign X3q7v6 = (Fc6yx6 ? Qiwmz6[4] : Tdcyx6); +assign Tdcyx6 = (~(Becyx6 & Jecyx6)); +assign Jecyx6 = (Recyx6 & Zecyx6); +assign Zecyx6 = (~(Iuvmz6[5] & T5cyx6)); +assign Recyx6 = (Hfcyx6 & Pfcyx6); +assign Pfcyx6 = (~(Iuvmz6[4] & R6cyx6)); +assign Hfcyx6 = (~(Iuvmz6[8] & Z6cyx6)); +assign Becyx6 = (Xfcyx6 & Fgcyx6); +assign Fgcyx6 = (~(Iuvmz6[7] & X7cyx6)); +assign Xfcyx6 = (~(Iuvmz6[6] & F8cyx6)); +assign Q3q7v6 = (~(Ngcyx6 & Vgcyx6)); +assign Vgcyx6 = (~(Be6yx6 & Xovmz6[4])); +assign Ngcyx6 = (Dhcyx6 & Lhcyx6); +assign Lhcyx6 = (~(Mgwmz6[4] & Lt6yx6)); +assign Dhcyx6 = (~(Qiwmz6[4] & Tt6yx6)); +assign J3q7v6 = (L96yx6 ? Thcyx6 : Ppwmz6[4]); +assign C3q7v6 = (F86yx6 ? Trwmz6[4] : Thcyx6); +assign Thcyx6 = (~(Bicyx6 & Jicyx6)); +assign Jicyx6 = (Ricyx6 & Zicyx6); +assign Zicyx6 = (~(Iuvmz6[6] & T5cyx6)); +assign Ricyx6 = (Hjcyx6 & Pjcyx6); +assign Pjcyx6 = (~(Iuvmz6[5] & R6cyx6)); +assign Hjcyx6 = (~(Iuvmz6[4] & Z6cyx6)); +assign Bicyx6 = (Xjcyx6 & Fkcyx6); +assign Fkcyx6 = (~(Iuvmz6[8] & X7cyx6)); +assign Xjcyx6 = (~(Iuvmz6[7] & F8cyx6)); +assign V2q7v6 = (~(Nkcyx6 & Vkcyx6)); +assign Vkcyx6 = (~(Ba6yx6 & Cnvmz6[4])); +assign Nkcyx6 = (Dlcyx6 & Llcyx6); +assign Llcyx6 = (~(Ppwmz6[4] & By6yx6)); +assign Dlcyx6 = (~(Trwmz6[4] & Jy6yx6)); +assign O2q7v6 = (X76yx6 ? Sywmz6[4] : Tlcyx6); +assign H2q7v6 = (R66yx6 ? W0xmz6[4] : Tlcyx6); +assign Tlcyx6 = (~(Bmcyx6 & Jmcyx6)); +assign Jmcyx6 = (Rmcyx6 & Zmcyx6); +assign Zmcyx6 = (~(Iuvmz6[7] & T5cyx6)); +assign T5cyx6 = (~(Hncyx6 & Pncyx6)); +assign Pncyx6 = (Xncyx6 & Focyx6); +assign Focyx6 = (Nocyx6 & Vocyx6); +assign Vocyx6 = (~(Tjr7z6[6] & V47yx6)); +assign Nocyx6 = (~(Xz7yx6 & V1s7z6[4])); +assign Xncyx6 = (Dpcyx6 & Lpcyx6); +assign Lpcyx6 = (~(Gqr7z6[4] & R27yx6)); +assign Dpcyx6 = (~(Cor7z6[4] & N47yx6)); +assign Hncyx6 = (Tpcyx6 & Bqcyx6); +assign Bqcyx6 = (~(X9s7z6[12] & L17yx6)); +assign Tpcyx6 = (Jqcyx6 & Rqcyx6); +assign Rqcyx6 = (~(P7s7z6[12] & J27yx6)); +assign Jqcyx6 = (~(Wlr7z6[4] & P37yx6)); +assign Rmcyx6 = (Zqcyx6 & Hrcyx6); +assign Hrcyx6 = (~(Iuvmz6[6] & R6cyx6)); +assign R6cyx6 = (~(Prcyx6 & Xrcyx6)); +assign Xrcyx6 = (Fscyx6 & Nscyx6); +assign Nscyx6 = (~(X9s7z6[20] & L17yx6)); +assign Fscyx6 = (Vscyx6 & Dtcyx6); +assign Dtcyx6 = (~(Wlr7z6[12] & P37yx6)); +assign Vscyx6 = (~(Gqr7z6[12] & R27yx6)); +assign Prcyx6 = (Ltcyx6 & Ttcyx6); +assign Ttcyx6 = (~(Tjr7z6[0] & V47yx6)); +assign Ltcyx6 = (Bucyx6 & Jucyx6); +assign Jucyx6 = (~(Cor7z6[12] & N47yx6)); +assign Bucyx6 = (~(P7s7z6[20] & J27yx6)); +assign Zqcyx6 = (~(Iuvmz6[5] & Z6cyx6)); +assign Z6cyx6 = (~(Rucyx6 & Zucyx6)); +assign Zucyx6 = (Hvcyx6 & Pvcyx6); +assign Pvcyx6 = (~(Wlr7z6[20] & P37yx6)); +assign Hvcyx6 = (Xvcyx6 & Fwcyx6); +assign Fwcyx6 = (~(Cor7z6[20] & N47yx6)); +assign Xvcyx6 = (~(Gqr7z6[20] & R27yx6)); +assign Rucyx6 = (Nwcyx6 & Vwcyx6); +assign Vwcyx6 = (~(P7s7z6[28] & J27yx6)); +assign Nwcyx6 = (~(X9s7z6[28] & L17yx6)); +assign Bmcyx6 = (Dxcyx6 & Lxcyx6); +assign Lxcyx6 = (~(Iuvmz6[4] & X7cyx6)); +assign X7cyx6 = (~(Txcyx6 & Bycyx6)); +assign Bycyx6 = (Jycyx6 & Rycyx6); +assign Rycyx6 = (~(Cor7z6[28] & N47yx6)); +assign Jycyx6 = (~(Gqr7z6[28] & R27yx6)); +assign Txcyx6 = (Zycyx6 & Hzcyx6); +assign Hzcyx6 = (~(Wlr7z6[28] & P37yx6)); +assign Zycyx6 = (~(X9s7z6[36] & L17yx6)); +assign Dxcyx6 = (~(Iuvmz6[8] & F8cyx6)); +assign F8cyx6 = (~(Pzcyx6 & Xzcyx6)); +assign Xzcyx6 = (F0dyx6 & N0dyx6); +assign N0dyx6 = (V0dyx6 | Tpayx6); +assign Tpayx6 = (~(J27yx6 & P7s7z6[8])); +assign F0dyx6 = (D1dyx6 & L1dyx6); +assign D1dyx6 = (~(Dfr7z6[0] & P37yx6)); +assign Pzcyx6 = (T1dyx6 & B2dyx6); +assign B2dyx6 = (~(Jhr7z6[0] & N47yx6)); +assign T1dyx6 = (J2dyx6 & R2dyx6); +assign R2dyx6 = (~(X9s7z6[4] & L17yx6)); +assign J2dyx6 = (~(Nu27v6 & Be7yx6)); +assign A2q7v6 = (Pz5yx6 ? Z2dyx6 : Gyvmz6[5]); +assign T1q7v6 = (Lz4ov6 ? K0wmz6[5] : Z2dyx6); +assign Z2dyx6 = (~(H3dyx6 & P3dyx6)); +assign P3dyx6 = (X3dyx6 & F4dyx6); +assign F4dyx6 = (~(Iuvmz6[8] & N4dyx6)); +assign X3dyx6 = (V4dyx6 & D5dyx6); +assign D5dyx6 = (~(Iuvmz6[7] & L5dyx6)); +assign V4dyx6 = (~(Iuvmz6[6] & T5dyx6)); +assign H3dyx6 = (B6dyx6 & J6dyx6); +assign J6dyx6 = (~(Iuvmz6[5] & R6dyx6)); +assign B6dyx6 = (~(Iuvmz6[4] & Z6dyx6)); +assign M1q7v6 = (~(H7dyx6 & P7dyx6)); +assign P7dyx6 = (~(Nsvmz6[5] & G05ov6)); +assign H7dyx6 = (X7dyx6 & F8dyx6); +assign F8dyx6 = (~(Gyvmz6[5] & B15ov6)); +assign X7dyx6 = (~(K0wmz6[5] & I15ov6)); +assign F1q7v6 = (Lh6yx6 ? N8dyx6 : J7wmz6[5]); +assign Y0q7v6 = (Fg6yx6 ? N9wmz6[5] : N8dyx6); +assign N8dyx6 = (~(V8dyx6 & D9dyx6)); +assign D9dyx6 = (L9dyx6 & T9dyx6); +assign T9dyx6 = (~(Iuvmz6[4] & N4dyx6)); +assign L9dyx6 = (Badyx6 & Jadyx6); +assign Jadyx6 = (~(Iuvmz6[8] & L5dyx6)); +assign Badyx6 = (~(Iuvmz6[7] & T5dyx6)); +assign V8dyx6 = (Radyx6 & Zadyx6); +assign Zadyx6 = (~(Iuvmz6[6] & R6dyx6)); +assign Radyx6 = (~(Iuvmz6[5] & Z6dyx6)); +assign R0q7v6 = (~(Hbdyx6 & Pbdyx6)); +assign Pbdyx6 = (~(Bi6yx6 & Sqvmz6[5])); +assign Hbdyx6 = (Xbdyx6 & Fcdyx6); +assign Fcdyx6 = (~(J7wmz6[5] & Vo6yx6)); +assign Xbdyx6 = (~(N9wmz6[5] & Dp6yx6)); +assign K0q7v6 = (Ld6yx6 ? Ncdyx6 : Mgwmz6[5]); +assign D0q7v6 = (Fc6yx6 ? Qiwmz6[5] : Ncdyx6); +assign Ncdyx6 = (~(Vcdyx6 & Dddyx6)); +assign Dddyx6 = (Lddyx6 & Tddyx6); +assign Tddyx6 = (~(Iuvmz6[5] & N4dyx6)); +assign Lddyx6 = (Bedyx6 & Jedyx6); +assign Jedyx6 = (~(Iuvmz6[4] & L5dyx6)); +assign Bedyx6 = (~(Iuvmz6[8] & T5dyx6)); +assign Vcdyx6 = (Redyx6 & Zedyx6); +assign Zedyx6 = (~(Iuvmz6[7] & R6dyx6)); +assign Redyx6 = (~(Iuvmz6[6] & Z6dyx6)); +assign Wzp7v6 = (~(Hfdyx6 & Pfdyx6)); +assign Pfdyx6 = (~(Be6yx6 & Xovmz6[5])); +assign Hfdyx6 = (Xfdyx6 & Fgdyx6); +assign Fgdyx6 = (~(Mgwmz6[5] & Lt6yx6)); +assign Xfdyx6 = (~(Qiwmz6[5] & Tt6yx6)); +assign Pzp7v6 = (L96yx6 ? Ngdyx6 : Ppwmz6[5]); +assign Izp7v6 = (F86yx6 ? Trwmz6[5] : Ngdyx6); +assign Ngdyx6 = (~(Vgdyx6 & Dhdyx6)); +assign Dhdyx6 = (Lhdyx6 & Thdyx6); +assign Thdyx6 = (~(Iuvmz6[6] & N4dyx6)); +assign Lhdyx6 = (Bidyx6 & Jidyx6); +assign Jidyx6 = (~(Iuvmz6[5] & L5dyx6)); +assign Bidyx6 = (~(Iuvmz6[4] & T5dyx6)); +assign Vgdyx6 = (Ridyx6 & Zidyx6); +assign Zidyx6 = (~(Iuvmz6[8] & R6dyx6)); +assign Ridyx6 = (~(Iuvmz6[7] & Z6dyx6)); +assign Bzp7v6 = (~(Hjdyx6 & Pjdyx6)); +assign Pjdyx6 = (~(Ba6yx6 & Cnvmz6[5])); +assign Hjdyx6 = (Xjdyx6 & Fkdyx6); +assign Fkdyx6 = (~(Ppwmz6[5] & By6yx6)); +assign Xjdyx6 = (~(Trwmz6[5] & Jy6yx6)); +assign Uyp7v6 = (X76yx6 ? Sywmz6[5] : Nkdyx6); +assign Nyp7v6 = (R66yx6 ? W0xmz6[5] : Nkdyx6); +assign Nkdyx6 = (~(Vkdyx6 & Dldyx6)); +assign Dldyx6 = (Lldyx6 & Tldyx6); +assign Tldyx6 = (~(Iuvmz6[7] & N4dyx6)); +assign N4dyx6 = (~(Bmdyx6 & Jmdyx6)); +assign Jmdyx6 = (Rmdyx6 & Zmdyx6); +assign Zmdyx6 = (Hndyx6 & Pndyx6); +assign Pndyx6 = (~(Tjr7z6[7] & V47yx6)); +assign Hndyx6 = (~(Xz7yx6 & V1s7z6[5])); +assign Rmdyx6 = (Xndyx6 & Fodyx6); +assign Fodyx6 = (~(Gqr7z6[5] & R27yx6)); +assign Xndyx6 = (~(Cor7z6[5] & N47yx6)); +assign Bmdyx6 = (Nodyx6 & Vodyx6); +assign Vodyx6 = (~(X9s7z6[13] & L17yx6)); +assign Nodyx6 = (Dpdyx6 & Lpdyx6); +assign Lpdyx6 = (~(P7s7z6[13] & J27yx6)); +assign Dpdyx6 = (~(Wlr7z6[5] & P37yx6)); +assign Lldyx6 = (Tpdyx6 & Bqdyx6); +assign Bqdyx6 = (~(Iuvmz6[6] & L5dyx6)); +assign L5dyx6 = (~(Jqdyx6 & Rqdyx6)); +assign Rqdyx6 = (Zqdyx6 & Hrdyx6); +assign Hrdyx6 = (~(X9s7z6[21] & L17yx6)); +assign Zqdyx6 = (Prdyx6 & Xrdyx6); +assign Xrdyx6 = (~(Wlr7z6[13] & P37yx6)); +assign Prdyx6 = (~(Gqr7z6[13] & R27yx6)); +assign Jqdyx6 = (Fsdyx6 & Nsdyx6); +assign Nsdyx6 = (~(Tjr7z6[1] & V47yx6)); +assign Fsdyx6 = (Vsdyx6 & Dtdyx6); +assign Dtdyx6 = (~(Cor7z6[13] & N47yx6)); +assign Vsdyx6 = (~(P7s7z6[21] & J27yx6)); +assign Tpdyx6 = (~(Iuvmz6[5] & T5dyx6)); +assign T5dyx6 = (~(Ltdyx6 & Ttdyx6)); +assign Ttdyx6 = (Budyx6 & Judyx6); +assign Judyx6 = (~(Wlr7z6[21] & P37yx6)); +assign Budyx6 = (Rudyx6 & Zudyx6); +assign Zudyx6 = (~(Cor7z6[21] & N47yx6)); +assign Rudyx6 = (~(Gqr7z6[21] & R27yx6)); +assign Ltdyx6 = (Hvdyx6 & Pvdyx6); +assign Pvdyx6 = (~(P7s7z6[29] & J27yx6)); +assign Hvdyx6 = (~(X9s7z6[29] & L17yx6)); +assign Vkdyx6 = (Xvdyx6 & Fwdyx6); +assign Fwdyx6 = (~(Iuvmz6[4] & R6dyx6)); +assign R6dyx6 = (~(Nwdyx6 & Vwdyx6)); +assign Vwdyx6 = (Dxdyx6 & Lxdyx6); +assign Lxdyx6 = (~(Cor7z6[29] & N47yx6)); +assign Dxdyx6 = (~(Gqr7z6[29] & R27yx6)); +assign Nwdyx6 = (Txdyx6 & Bydyx6); +assign Bydyx6 = (~(Wlr7z6[29] & P37yx6)); +assign Txdyx6 = (~(X9s7z6[37] & L17yx6)); +assign Xvdyx6 = (~(Iuvmz6[8] & Z6dyx6)); +assign Z6dyx6 = (~(Jydyx6 & Rydyx6)); +assign Rydyx6 = (Zydyx6 & Hzdyx6); +assign Hzdyx6 = (~(Jhr7z6[1] & N47yx6)); +assign Zydyx6 = (Pzdyx6 & Xzdyx6); +assign Xzdyx6 = (Vs9yx6 | V0dyx6); +assign Vs9yx6 = (~(J27yx6 & P7s7z6[9])); +assign Pzdyx6 = (~(Vs27v6 & Be7yx6)); +assign Jydyx6 = (F0eyx6 & N0eyx6); +assign N0eyx6 = (~(X9s7z6[5] & L17yx6)); +assign F0eyx6 = (~(Dfr7z6[1] & P37yx6)); +assign Gyp7v6 = (Pz5yx6 ? V0eyx6 : Gyvmz6[6]); +assign Zxp7v6 = (Lz4ov6 ? K0wmz6[6] : V0eyx6); +assign V0eyx6 = (~(D1eyx6 & L1eyx6)); +assign L1eyx6 = (T1eyx6 & B2eyx6); +assign B2eyx6 = (~(Iuvmz6[8] & J2eyx6)); +assign T1eyx6 = (R2eyx6 & Z2eyx6); +assign Z2eyx6 = (~(Iuvmz6[7] & H3eyx6)); +assign R2eyx6 = (~(Iuvmz6[6] & P3eyx6)); +assign D1eyx6 = (X3eyx6 & F4eyx6); +assign F4eyx6 = (~(Iuvmz6[5] & N4eyx6)); +assign X3eyx6 = (~(Iuvmz6[4] & V4eyx6)); +assign Sxp7v6 = (~(D5eyx6 & L5eyx6)); +assign L5eyx6 = (~(Nsvmz6[6] & G05ov6)); +assign D5eyx6 = (T5eyx6 & B6eyx6); +assign B6eyx6 = (~(Gyvmz6[6] & B15ov6)); +assign T5eyx6 = (~(K0wmz6[6] & I15ov6)); +assign Lxp7v6 = (Lh6yx6 ? J6eyx6 : J7wmz6[6]); +assign Exp7v6 = (Fg6yx6 ? N9wmz6[6] : J6eyx6); +assign J6eyx6 = (~(R6eyx6 & Z6eyx6)); +assign Z6eyx6 = (H7eyx6 & P7eyx6); +assign P7eyx6 = (~(Iuvmz6[4] & J2eyx6)); +assign H7eyx6 = (X7eyx6 & F8eyx6); +assign F8eyx6 = (~(Iuvmz6[8] & H3eyx6)); +assign X7eyx6 = (~(Iuvmz6[7] & P3eyx6)); +assign R6eyx6 = (N8eyx6 & V8eyx6); +assign V8eyx6 = (~(Iuvmz6[6] & N4eyx6)); +assign N8eyx6 = (~(Iuvmz6[5] & V4eyx6)); +assign Xwp7v6 = (~(D9eyx6 & L9eyx6)); +assign L9eyx6 = (~(Bi6yx6 & Sqvmz6[6])); +assign D9eyx6 = (T9eyx6 & Baeyx6); +assign Baeyx6 = (~(J7wmz6[6] & Vo6yx6)); +assign T9eyx6 = (~(N9wmz6[6] & Dp6yx6)); +assign Qwp7v6 = (Ld6yx6 ? Jaeyx6 : Mgwmz6[6]); +assign Jwp7v6 = (Fc6yx6 ? Qiwmz6[6] : Jaeyx6); +assign Jaeyx6 = (~(Raeyx6 & Zaeyx6)); +assign Zaeyx6 = (Hbeyx6 & Pbeyx6); +assign Pbeyx6 = (~(Iuvmz6[5] & J2eyx6)); +assign Hbeyx6 = (Xbeyx6 & Fceyx6); +assign Fceyx6 = (~(Iuvmz6[4] & H3eyx6)); +assign Xbeyx6 = (~(Iuvmz6[8] & P3eyx6)); +assign Raeyx6 = (Nceyx6 & Vceyx6); +assign Vceyx6 = (~(Iuvmz6[7] & N4eyx6)); +assign Nceyx6 = (~(Iuvmz6[6] & V4eyx6)); +assign Cwp7v6 = (~(Ddeyx6 & Ldeyx6)); +assign Ldeyx6 = (~(Be6yx6 & Xovmz6[6])); +assign Ddeyx6 = (Tdeyx6 & Beeyx6); +assign Beeyx6 = (~(Mgwmz6[6] & Lt6yx6)); +assign Tdeyx6 = (~(Qiwmz6[6] & Tt6yx6)); +assign Vvp7v6 = (L96yx6 ? Jeeyx6 : Ppwmz6[6]); +assign Ovp7v6 = (F86yx6 ? Trwmz6[6] : Jeeyx6); +assign Jeeyx6 = (~(Reeyx6 & Zeeyx6)); +assign Zeeyx6 = (Hfeyx6 & Pfeyx6); +assign Pfeyx6 = (~(Iuvmz6[6] & J2eyx6)); +assign Hfeyx6 = (Xfeyx6 & Fgeyx6); +assign Fgeyx6 = (~(Iuvmz6[5] & H3eyx6)); +assign Xfeyx6 = (~(Iuvmz6[4] & P3eyx6)); +assign Reeyx6 = (Ngeyx6 & Vgeyx6); +assign Vgeyx6 = (~(Iuvmz6[8] & N4eyx6)); +assign Ngeyx6 = (~(Iuvmz6[7] & V4eyx6)); +assign Hvp7v6 = (~(Dheyx6 & Lheyx6)); +assign Lheyx6 = (~(Ba6yx6 & Cnvmz6[6])); +assign Dheyx6 = (Theyx6 & Bieyx6); +assign Bieyx6 = (~(Ppwmz6[6] & By6yx6)); +assign Theyx6 = (~(Trwmz6[6] & Jy6yx6)); +assign Avp7v6 = (X76yx6 ? Sywmz6[6] : Jieyx6); +assign Tup7v6 = (R66yx6 ? W0xmz6[6] : Jieyx6); +assign Jieyx6 = (~(Rieyx6 & Zieyx6)); +assign Zieyx6 = (Hjeyx6 & Pjeyx6); +assign Pjeyx6 = (~(Iuvmz6[7] & J2eyx6)); +assign J2eyx6 = (~(Xjeyx6 & Fkeyx6)); +assign Fkeyx6 = (Nkeyx6 & Vkeyx6); +assign Vkeyx6 = (~(X9s7z6[14] & L17yx6)); +assign Nkeyx6 = (Dleyx6 & Lleyx6); +assign Lleyx6 = (~(Wlr7z6[6] & P37yx6)); +assign Dleyx6 = (~(Gqr7z6[6] & R27yx6)); +assign Xjeyx6 = (Tleyx6 & Bmeyx6); +assign Bmeyx6 = (~(Tjr7z6[8] & V47yx6)); +assign Tleyx6 = (Jmeyx6 & Rmeyx6); +assign Rmeyx6 = (~(Cor7z6[6] & N47yx6)); +assign Jmeyx6 = (~(P7s7z6[14] & J27yx6)); +assign Hjeyx6 = (Zmeyx6 & Hneyx6); +assign Hneyx6 = (~(Iuvmz6[6] & H3eyx6)); +assign H3eyx6 = (~(Pneyx6 & Xneyx6)); +assign Xneyx6 = (Foeyx6 & Noeyx6); +assign Noeyx6 = (~(Wlr7z6[14] & P37yx6)); +assign Foeyx6 = (Voeyx6 & Dpeyx6); +assign Dpeyx6 = (~(Cor7z6[14] & N47yx6)); +assign Voeyx6 = (~(Gqr7z6[14] & R27yx6)); +assign Pneyx6 = (Lpeyx6 & Tpeyx6); +assign Tpeyx6 = (~(P7s7z6[22] & J27yx6)); +assign Lpeyx6 = (~(X9s7z6[22] & L17yx6)); +assign Zmeyx6 = (~(Iuvmz6[5] & P3eyx6)); +assign P3eyx6 = (~(Bqeyx6 & Jqeyx6)); +assign Jqeyx6 = (Rqeyx6 & Zqeyx6); +assign Zqeyx6 = (~(Wlr7z6[22] & P37yx6)); +assign Rqeyx6 = (Hreyx6 & Preyx6); +assign Preyx6 = (~(Cor7z6[22] & N47yx6)); +assign Hreyx6 = (~(Gqr7z6[22] & R27yx6)); +assign Bqeyx6 = (Xreyx6 & Fseyx6); +assign Fseyx6 = (~(P7s7z6[30] & J27yx6)); +assign Xreyx6 = (~(X9s7z6[30] & L17yx6)); +assign Rieyx6 = (Nseyx6 & Vseyx6); +assign Vseyx6 = (~(Iuvmz6[4] & N4eyx6)); +assign N4eyx6 = (~(Dteyx6 & Lteyx6)); +assign Lteyx6 = (Tteyx6 & Bueyx6); +assign Bueyx6 = (~(Cor7z6[30] & N47yx6)); +assign Tteyx6 = (~(Gqr7z6[30] & R27yx6)); +assign Dteyx6 = (Jueyx6 & Rueyx6); +assign Rueyx6 = (~(Wlr7z6[30] & P37yx6)); +assign Jueyx6 = (~(X9s7z6[38] & L17yx6)); +assign Nseyx6 = (~(Iuvmz6[8] & V4eyx6)); +assign V4eyx6 = (~(Zueyx6 & Hveyx6)); +assign Hveyx6 = (~(Be7yx6 | N47yx6)); +assign Zueyx6 = (Pveyx6 & Fw8yx6); +assign Fw8yx6 = (~(J27yx6 & P7s7z6[10])); +assign Pveyx6 = (~(X9s7z6[6] & L17yx6)); +assign Mup7v6 = (J24yx6 & Xveyx6); +assign Xveyx6 = (Y26ft6 | Fweyx6); +assign Fweyx6 = (Nweyx6 & Vweyx6); +assign Vweyx6 = (Dxeyx6 & Lxeyx6); +assign Lxeyx6 = (Txeyx6 & P7s7z6[16]); +assign Txeyx6 = (R64yx6 & P7s7z6[8]); +assign R64yx6 = (Byeyx6 & Jyeyx6); +assign Jyeyx6 = (Ryeyx6 & Zyeyx6); +assign Zyeyx6 = (Hzeyx6 & Pzeyx6); +assign Pzeyx6 = (P7s7z6[9] & P7s7z6[10]); +assign Hzeyx6 = (P7s7z6[30] & Bm4yx6); +assign Bm4yx6 = (~(Xz3yx6 | Xzeyx6)); +assign Xzeyx6 = (F0fyx6 & N0fyx6); +assign N0fyx6 = (~(V0fyx6 & Zq3yx6)); +assign Zq3yx6 = (D1fyx6 ^ Vis7z6[5]); +assign D1fyx6 = (~(Vis7z6[4] & Lt3yx6)); +assign V0fyx6 = (Vis7z6[4] & Lt3yx6); +assign Lt3yx6 = (~(Tx3yx6 | Dt3yx6)); +assign Dt3yx6 = (!Vis7z6[3]); +assign Tx3yx6 = (~(L1fyx6 & Vis7z6[1])); +assign L1fyx6 = (Vis7z6[0] & Vis7z6[2]); +assign F0fyx6 = (~(Hz3yx6 | Ry3yx6)); +assign Ry3yx6 = (T1fyx6 & B2fyx6); +assign B2fyx6 = (J2fyx6 & R2fyx6); +assign R2fyx6 = (~(Zm37v6 & Z2fyx6)); +assign Z2fyx6 = (~(Vis7z6[3] & Vis7z6[2])); +assign J2fyx6 = (~(Vis7z6[4] | Vis7z6[5])); +assign T1fyx6 = (~(H3fyx6 | P3fyx6)); +assign P3fyx6 = (Zm37v6 ? H56ft6 : X3fyx6); +assign X3fyx6 = (Vis7z6[2] | Vis7z6[3]); +assign H3fyx6 = (~(Vis7z6[1] & Vis7z6[0])); +assign Hz3yx6 = (~(Zm37v6 | H56ft6)); +assign Xz3yx6 = (~(We6ft6 ^ Qb6ft6)); +assign Ryeyx6 = (F4fyx6 & P7s7z6[13]); +assign F4fyx6 = (P7s7z6[12] & P7s7z6[11]); +assign Byeyx6 = (N4fyx6 & V4fyx6); +assign V4fyx6 = (D5fyx6 & P7s7z6[25]); +assign D5fyx6 = (P7s7z6[19] & P7s7z6[14]); +assign N4fyx6 = (L5fyx6 & P7s7z6[29]); +assign L5fyx6 = (P7s7z6[28] & P7s7z6[27]); +assign Dxeyx6 = (P7s7z6[18] & P7s7z6[17]); +assign Nweyx6 = (T5fyx6 & B6fyx6); +assign B6fyx6 = (J6fyx6 & P7s7z6[22]); +assign J6fyx6 = (P7s7z6[21] & P7s7z6[20]); +assign T5fyx6 = (P7s7z6[26] & P7s7z6[24]); +assign J24yx6 = (Hn4yx6 & Z24yx6); +assign Z24yx6 = (Id6ft6 | Ak6ft6); +assign Hn4yx6 = (~(V4byx6 & J27yx6)); +assign Fup7v6 = (Pz5yx6 ? R6fyx6 : Gyvmz6[8]); +assign Pz5yx6 = (~(Hz5yx6 | Z6fyx6)); +assign Ytp7v6 = (Lz4ov6 ? K0wmz6[8] : R6fyx6); +assign Lz4ov6 = (~(H7fyx6 & Z6fyx6)); +assign H7fyx6 = (!Hz5yx6); +assign Hz5yx6 = (~(P7fyx6 & X7fyx6)); +assign R6fyx6 = (Iuvmz6[4] & F8fyx6); +assign Rtp7v6 = (~(N8fyx6 & V8fyx6)); +assign V8fyx6 = (~(Nsvmz6[8] & G05ov6)); +assign N8fyx6 = (D9fyx6 & L9fyx6); +assign L9fyx6 = (~(Gyvmz6[8] & B15ov6)); +assign B15ov6 = (~(V46yx6 | G05ov6)); +assign V46yx6 = (!O2wmz6[0]); +assign D9fyx6 = (~(K0wmz6[8] & I15ov6)); +assign I15ov6 = (~(G05ov6 | O2wmz6[0])); +assign G05ov6 = (!F46yx6); +assign F46yx6 = (~(T9fyx6 & Xj3yx6)); +assign Xj3yx6 = (!J66yx6); +assign J66yx6 = (Kwvmz6[1] & Nobyx6); +assign T9fyx6 = (~(D047v6 & N46yx6)); +assign N46yx6 = (~(Bafyx6 & Jafyx6)); +assign Bafyx6 = (~(O2wmz6[1] ^ Y4wmz6[1])); +assign Ktp7v6 = (Lh6yx6 ? Rafyx6 : J7wmz6[8]); +assign Lh6yx6 = (Dh6yx6 & Bewmz6[0]); +assign Dtp7v6 = (Fg6yx6 ? N9wmz6[8] : Rafyx6); +assign Fg6yx6 = (~(Dh6yx6 & Vg6yx6)); +assign Dh6yx6 = (P7fyx6 & Zafyx6); +assign Rafyx6 = (Iuvmz6[5] & F8fyx6); +assign Wsp7v6 = (~(Hbfyx6 & Pbfyx6)); +assign Pbfyx6 = (~(Bi6yx6 & Sqvmz6[8])); +assign Hbfyx6 = (Xbfyx6 & Fcfyx6); +assign Fcfyx6 = (~(J7wmz6[8] & Vo6yx6)); +assign Vo6yx6 = (~(Zi6yx6 | Bi6yx6)); +assign Zi6yx6 = (!Rbwmz6[0]); +assign Xbfyx6 = (~(N9wmz6[8] & Dp6yx6)); +assign Dp6yx6 = (~(Bi6yx6 | Rbwmz6[0])); +assign Bi6yx6 = (Xj6yx6 & Nk3yx6); +assign Nk3yx6 = (!Nk6yx6); +assign Nk6yx6 = (Kwvmz6[2] & Nobyx6); +assign Xj6yx6 = (~(Ly37v6 & Ji6yx6)); +assign Ji6yx6 = (~(Ncfyx6 & Vcfyx6)); +assign Ncfyx6 = (~(Rbwmz6[1] ^ Bewmz6[1])); +assign Psp7v6 = (Ld6yx6 ? Ddfyx6 : Mgwmz6[8]); +assign Ld6yx6 = (Dd6yx6 & Enwmz6[0]); +assign Isp7v6 = (Fc6yx6 ? Qiwmz6[8] : Ddfyx6); +assign Fc6yx6 = (~(Dd6yx6 & Vc6yx6)); +assign Dd6yx6 = (P7fyx6 & Ldfyx6); +assign Ddfyx6 = (Iuvmz6[6] & F8fyx6); +assign Bsp7v6 = (~(Tdfyx6 & Befyx6)); +assign Befyx6 = (~(Be6yx6 & Xovmz6[8])); +assign Tdfyx6 = (Jefyx6 & Refyx6); +assign Refyx6 = (~(Mgwmz6[8] & Lt6yx6)); +assign Lt6yx6 = (~(Re6yx6 | Be6yx6)); +assign Re6yx6 = (!Ukwmz6[0]); +assign Jefyx6 = (~(Qiwmz6[8] & Tt6yx6)); +assign Tt6yx6 = (~(Be6yx6 | Ukwmz6[0])); +assign Be6yx6 = (Pf6yx6 & Dl3yx6); +assign Dl3yx6 = (~(Kwvmz6[3] & Nobyx6)); +assign Pf6yx6 = (Zefyx6 | Td6yx6); +assign Td6yx6 = (Hffyx6 & Pffyx6); +assign Hffyx6 = (~(Ukwmz6[1] ^ Enwmz6[1])); +assign Zefyx6 = (!Tw37v6); +assign Urp7v6 = (L96yx6 ? Xffyx6 : Ppwmz6[8]); +assign L96yx6 = (D96yx6 & Hwwmz6[0]); +assign Nrp7v6 = (F86yx6 ? Trwmz6[8] : Xffyx6); +assign F86yx6 = (~(D96yx6 & V86yx6)); +assign D96yx6 = (P7fyx6 & Fgfyx6); +assign Xffyx6 = (Iuvmz6[7] & F8fyx6); +assign Grp7v6 = (~(Ngfyx6 & Vgfyx6)); +assign Vgfyx6 = (~(Ba6yx6 & Cnvmz6[8])); +assign Ngfyx6 = (Dhfyx6 & Lhfyx6); +assign Lhfyx6 = (~(Ppwmz6[8] & By6yx6)); +assign By6yx6 = (~(Ra6yx6 | Ba6yx6)); +assign Ra6yx6 = (!Xtwmz6[0]); +assign Dhfyx6 = (~(Trwmz6[8] & Jy6yx6)); +assign Jy6yx6 = (~(Ba6yx6 | Xtwmz6[0])); +assign Ba6yx6 = (Pb6yx6 & Tl3yx6); +assign Tl3yx6 = (~(Kwvmz6[4] & Nobyx6)); +assign Pb6yx6 = (Thfyx6 | T96yx6); +assign T96yx6 = (Bifyx6 & Jifyx6); +assign Bifyx6 = (~(Xtwmz6[1] ^ Hwwmz6[1])); +assign Zqp7v6 = (X76yx6 ? Sywmz6[8] : Rifyx6); +assign X76yx6 = (~(P76yx6 & K5xmz6[0])); +assign Sqp7v6 = (R66yx6 ? W0xmz6[8] : Rifyx6); +assign R66yx6 = (~(P76yx6 & H76yx6)); +assign P76yx6 = (P7fyx6 & Zifyx6); +assign Rifyx6 = (Iuvmz6[8] & F8fyx6); +assign F8fyx6 = (~(Hjfyx6 & Pjfyx6)); +assign Pjfyx6 = (Xjfyx6 & Fkfyx6); +assign Fkfyx6 = (Nkfyx6 & Ld7yx6); +assign Nkfyx6 = (~(Hsr7z6[0] & Vkfyx6)); +assign Xjfyx6 = (Dlfyx6 & Llfyx6); +assign Llfyx6 = (~(Xz7yx6 & C4s7z6[0])); +assign Dlfyx6 = (~(Uur7z6[0] & V47yx6)); +assign Hjfyx6 = (Tlfyx6 & Bmfyx6); +assign Bmfyx6 = (Jmfyx6 & Rmfyx6); +assign Rmfyx6 = (~(Y26ft6 & J27yx6)); +assign Jmfyx6 = (~(Ixr7z6[0] & P37yx6)); +assign Tlfyx6 = (Zmfyx6 & Hnfyx6); +assign Hnfyx6 = (~(Tl6ft6 & L17yx6)); +assign Zmfyx6 = (~(Nw5ft6 & N47yx6)); +assign Lqp7v6 = (~(Pnfyx6 & Xnfyx6)); +assign Xnfyx6 = (~(No3yx6 & Kms7z6[0])); +assign Pnfyx6 = (Fofyx6 & Nofyx6); +assign Nofyx6 = (~(Vofyx6 & Sywmz6[0])); +assign Fofyx6 = (~(Dpfyx6 & W0xmz6[0])); +assign Eqp7v6 = (D25ov6 ? V7xmz6[0] : Lpfyx6); +assign Xpp7v6 = (~(Tpfyx6 & Bqfyx6)); +assign Bqfyx6 = (~(No3yx6 & Kms7z6[8])); +assign Tpfyx6 = (Jqfyx6 & Rqfyx6); +assign Rqfyx6 = (~(Vofyx6 & Sywmz6[8])); +assign Jqfyx6 = (~(Dpfyx6 & W0xmz6[8])); +assign Qpp7v6 = (~(Zqfyx6 & Hrfyx6)); +assign Hrfyx6 = (~(No3yx6 & Kms7z6[7])); +assign Zqfyx6 = (Prfyx6 & Xrfyx6); +assign Xrfyx6 = (~(Vofyx6 & Sywmz6[7])); +assign Prfyx6 = (~(Dpfyx6 & W0xmz6[7])); +assign Jpp7v6 = (~(Fsfyx6 & Nsfyx6)); +assign Nsfyx6 = (~(No3yx6 & Kms7z6[6])); +assign Fsfyx6 = (Vsfyx6 & Dtfyx6); +assign Dtfyx6 = (~(Vofyx6 & Sywmz6[6])); +assign Vsfyx6 = (~(Dpfyx6 & W0xmz6[6])); +assign Cpp7v6 = (D25ov6 ? V7xmz6[6] : Ltfyx6); +assign Vop7v6 = (~(Ttfyx6 & Bufyx6)); +assign Bufyx6 = (~(No3yx6 & Kms7z6[5])); +assign Ttfyx6 = (Jufyx6 & Rufyx6); +assign Rufyx6 = (~(Vofyx6 & Sywmz6[5])); +assign Jufyx6 = (~(Dpfyx6 & W0xmz6[5])); +assign Oop7v6 = (D25ov6 ? V7xmz6[5] : Zufyx6); +assign Hop7v6 = (~(Hvfyx6 & Pvfyx6)); +assign Pvfyx6 = (~(No3yx6 & Kms7z6[4])); +assign Hvfyx6 = (Xvfyx6 & Fwfyx6); +assign Fwfyx6 = (~(Vofyx6 & Sywmz6[4])); +assign Xvfyx6 = (~(Dpfyx6 & W0xmz6[4])); +assign Aop7v6 = (D25ov6 ? V7xmz6[4] : Nwfyx6); +assign Tnp7v6 = (~(Vwfyx6 & Dxfyx6)); +assign Dxfyx6 = (~(No3yx6 & Kms7z6[3])); +assign Vwfyx6 = (Lxfyx6 & Txfyx6); +assign Txfyx6 = (~(Vofyx6 & Sywmz6[3])); +assign Lxfyx6 = (~(Dpfyx6 & W0xmz6[3])); +assign Mnp7v6 = (D25ov6 ? V7xmz6[3] : Byfyx6); +assign Fnp7v6 = (~(Jyfyx6 & Ryfyx6)); +assign Ryfyx6 = (~(No3yx6 & Kms7z6[2])); +assign Jyfyx6 = (Zyfyx6 & Hzfyx6); +assign Hzfyx6 = (~(Vofyx6 & Sywmz6[2])); +assign Zyfyx6 = (~(Dpfyx6 & W0xmz6[2])); +assign Ymp7v6 = (D25ov6 ? V7xmz6[2] : Pzfyx6); +assign Rmp7v6 = (~(Xzfyx6 & F0gyx6)); +assign F0gyx6 = (~(No3yx6 & Kms7z6[1])); +assign Xzfyx6 = (N0gyx6 & V0gyx6); +assign V0gyx6 = (~(Vofyx6 & Sywmz6[1])); +assign Vofyx6 = (~(Rm3yx6 | No3yx6)); +assign Rm3yx6 = (!A3xmz6[0]); +assign N0gyx6 = (~(Dpfyx6 & W0xmz6[1])); +assign Dpfyx6 = (~(No3yx6 | A3xmz6[0])); +assign No3yx6 = (Pn3yx6 & Zi3yx6); +assign Zi3yx6 = (~(Kwvmz6[0] & Nobyx6)); +assign Nobyx6 = (!Pj3yx6); +assign Pn3yx6 = (D1gyx6 | Fo3yx6); +assign Fo3yx6 = (L1gyx6 & T1gyx6); +assign L1gyx6 = (~(A3xmz6[1] ^ K5xmz6[1])); +assign Kmp7v6 = (D25ov6 ? V7xmz6[1] : B2gyx6); +assign D25ov6 = (K25ov6 & J2gyx6); +assign J2gyx6 = (~(R2gyx6 & La6ft6)); +assign R2gyx6 = (~(Zqbyx6 | Z2gyx6)); +assign Z2gyx6 = (H3gyx6 & P3gyx6); +assign P3gyx6 = (R6byx6 & X3gyx6); +assign H3gyx6 = (~(F4gyx6 | N4gyx6)); +assign K25ov6 = (V4gyx6 & D5gyx6); +assign D5gyx6 = (~(N4gyx6 & L5gyx6)); +assign L5gyx6 = (B6byx6 | O9xmz6[2]); +assign N4gyx6 = (T5gyx6 & F35ov6); +assign F35ov6 = (B6gyx6 & J6gyx6); +assign J6gyx6 = (R6gyx6 & S65ov6); +assign S65ov6 = (~(Fbxmz6[2] & Z6gyx6)); +assign R6gyx6 = (~(B85ov6 & H7gyx6)); +assign B6gyx6 = (P7gyx6 & X7gyx6); +assign X7gyx6 = (~(F8gyx6 & N8gyx6)); +assign N8gyx6 = (~(V8gyx6 | D9gyx6)); +assign V8gyx6 = (Byfyx6 | X3gyx6); +assign F8gyx6 = (~(L9gyx6 | Lpfyx6)); +assign L9gyx6 = (Pzfyx6 | B2gyx6); +assign T5gyx6 = (~(D95ov6 | I85ov6)); +assign I85ov6 = (T9gyx6 & Bagyx6); +assign Bagyx6 = (Jagyx6 & Ragyx6); +assign Jagyx6 = (!B85ov6); +assign T9gyx6 = (Zagyx6 & Hbgyx6); +assign Zagyx6 = (~(Fbxmz6[1] & Fbxmz6[3])); +assign D95ov6 = (~(Pbgyx6 & Xbgyx6)); +assign Xbgyx6 = (N75ov6 & Ragyx6); +assign N75ov6 = (~(Fcgyx6 & Fbxmz6[2])); +assign Fcgyx6 = (Ncgyx6 & Vcgyx6); +assign Pbgyx6 = (P7gyx6 & Ddgyx6); +assign Ddgyx6 = (~(Pf5ov6 & Ldgyx6)); +assign Ldgyx6 = (~(Tdgyx6 & Begyx6)); +assign Begyx6 = (~(Jegyx6 | B2gyx6)); +assign Jegyx6 = (D9gyx6 | Byfyx6); +assign Byfyx6 = (~(Regyx6 & Zegyx6)); +assign Zegyx6 = (Hfgyx6 & Pfgyx6); +assign Pfgyx6 = (~(Sqvmz6[3] & Kwvmz6[2])); +assign Hfgyx6 = (Xfgyx6 & Fggyx6); +assign Fggyx6 = (~(Nsvmz6[3] & Kwvmz6[1])); +assign Xfgyx6 = (~(Xovmz6[3] & Kwvmz6[3])); +assign Regyx6 = (Nggyx6 & Vggyx6); +assign Vggyx6 = (~(Cnvmz6[3] & Kwvmz6[4])); +assign Nggyx6 = (~(Kms7z6[3] & Kwvmz6[0])); +assign D9gyx6 = (~(Dhgyx6 & Lhgyx6)); +assign Lhgyx6 = (Thgyx6 & P15ov6); +assign P15ov6 = (~(Bigyx6 & Jigyx6)); +assign Jigyx6 = (Rigyx6 & Zigyx6); +assign Zigyx6 = (~(Xovmz6[7] & Kwvmz6[3])); +assign Rigyx6 = (Hjgyx6 & Pjgyx6); +assign Pjgyx6 = (~(Nsvmz6[7] & Kwvmz6[1])); +assign Hjgyx6 = (~(Sqvmz6[7] & Kwvmz6[2])); +assign Bigyx6 = (Xjgyx6 & Fkgyx6); +assign Fkgyx6 = (~(Cnvmz6[7] & Kwvmz6[4])); +assign Xjgyx6 = (~(Kms7z6[7] & Kwvmz6[0])); +assign Thgyx6 = (!Ltfyx6); +assign Ltfyx6 = (~(Nkgyx6 & Vkgyx6)); +assign Vkgyx6 = (Dlgyx6 & Llgyx6); +assign Llgyx6 = (~(Xovmz6[6] & Kwvmz6[3])); +assign Dlgyx6 = (Tlgyx6 & Bmgyx6); +assign Bmgyx6 = (~(Nsvmz6[6] & Kwvmz6[1])); +assign Tlgyx6 = (~(Sqvmz6[6] & Kwvmz6[2])); +assign Nkgyx6 = (Jmgyx6 & Rmgyx6); +assign Rmgyx6 = (~(Cnvmz6[6] & Kwvmz6[4])); +assign Jmgyx6 = (~(Kms7z6[6] & Kwvmz6[0])); +assign Dhgyx6 = (~(Nwfyx6 | Zufyx6)); +assign Zufyx6 = (~(Zmgyx6 & Hngyx6)); +assign Hngyx6 = (Pngyx6 & Xngyx6); +assign Xngyx6 = (~(Sqvmz6[5] & Kwvmz6[2])); +assign Pngyx6 = (Fogyx6 & Nogyx6); +assign Nogyx6 = (~(Nsvmz6[5] & Kwvmz6[1])); +assign Fogyx6 = (~(Xovmz6[5] & Kwvmz6[3])); +assign Zmgyx6 = (Vogyx6 & Dpgyx6); +assign Dpgyx6 = (~(Cnvmz6[5] & Kwvmz6[4])); +assign Vogyx6 = (~(Kms7z6[5] & Kwvmz6[0])); +assign Nwfyx6 = (~(Lpgyx6 & Tpgyx6)); +assign Tpgyx6 = (Bqgyx6 & Jqgyx6); +assign Jqgyx6 = (~(Sqvmz6[4] & Kwvmz6[2])); +assign Bqgyx6 = (Rqgyx6 & Zqgyx6); +assign Zqgyx6 = (~(Nsvmz6[4] & Kwvmz6[1])); +assign Rqgyx6 = (~(Xovmz6[4] & Kwvmz6[3])); +assign Lpgyx6 = (Hrgyx6 & Prgyx6); +assign Prgyx6 = (~(Cnvmz6[4] & Kwvmz6[4])); +assign Hrgyx6 = (~(Kms7z6[4] & Kwvmz6[0])); +assign Tdgyx6 = (~(Lpfyx6 | Pzfyx6)); +assign Pzfyx6 = (~(Xrgyx6 & Fsgyx6)); +assign Fsgyx6 = (Nsgyx6 & Vsgyx6); +assign Vsgyx6 = (~(Sqvmz6[2] & Kwvmz6[2])); +assign Nsgyx6 = (Dtgyx6 & Ltgyx6); +assign Ltgyx6 = (~(Nsvmz6[2] & Kwvmz6[1])); +assign Dtgyx6 = (~(Xovmz6[2] & Kwvmz6[3])); +assign Xrgyx6 = (Ttgyx6 & Bugyx6); +assign Bugyx6 = (~(Cnvmz6[2] & Kwvmz6[4])); +assign Ttgyx6 = (~(Kms7z6[2] & Kwvmz6[0])); +assign Lpfyx6 = (~(Jugyx6 & Rugyx6)); +assign Rugyx6 = (Zugyx6 & Hvgyx6); +assign Hvgyx6 = (~(Kwvmz6[2] & Sqvmz6[0])); +assign Zugyx6 = (Pvgyx6 & Xvgyx6); +assign Xvgyx6 = (~(Nsvmz6[0] & Kwvmz6[1])); +assign Pvgyx6 = (~(Kwvmz6[3] & Xovmz6[0])); +assign Jugyx6 = (Fwgyx6 & Nwgyx6); +assign Nwgyx6 = (~(Kwvmz6[4] & Cnvmz6[0])); +assign Fwgyx6 = (~(Kwvmz6[0] & Kms7z6[0])); +assign P7gyx6 = (Vwgyx6 & Dxgyx6); +assign Dxgyx6 = (~(Lxgyx6 & Txgyx6)); +assign Txgyx6 = (~(Fbxmz6[3] & C55ov6)); +assign Vwgyx6 = (~(Lxgyx6 & Bygyx6)); +assign Bygyx6 = (B6byx6 | O9xmz6[1]); +assign V4gyx6 = (Hbgyx6 & Pj3yx6); +assign Pj3yx6 = (~(Jygyx6 & Pf5ov6)); +assign Jygyx6 = (Rygyx6 & Zygyx6); +assign Hbgyx6 = (~(Hzgyx6 & Pzgyx6)); +assign Pzgyx6 = (Xzgyx6 & Rygyx6); +assign Rygyx6 = (~(Zqbyx6 & La6ft6)); +assign Xzgyx6 = (Eifnv6 & Jch7v6); +assign Hzgyx6 = (F0hyx6 & Pf5ov6); +assign F0hyx6 = (N0hyx6 & V0hyx6); +assign V0hyx6 = (~(D1hyx6 & B6byx6)); +assign D1hyx6 = (~(P647v6 & Ak77z6)); +assign B2gyx6 = (~(L1hyx6 & T1hyx6)); +assign T1hyx6 = (B2hyx6 & J2hyx6); +assign J2hyx6 = (~(Sqvmz6[1] & Kwvmz6[2])); +assign B2hyx6 = (R2hyx6 & Z2hyx6); +assign Z2hyx6 = (~(Nsvmz6[1] & Kwvmz6[1])); +assign R2hyx6 = (~(Xovmz6[1] & Kwvmz6[3])); +assign L1hyx6 = (H3hyx6 & P3hyx6); +assign P3hyx6 = (~(Cnvmz6[1] & Kwvmz6[4])); +assign H3hyx6 = (~(Kms7z6[1] & Kwvmz6[0])); +assign Dmp7v6 = (Ab5ov6 ? X3hyx6 : Kh1nz6[2]); +assign Wlp7v6 = (Ue5ov6 ? X3hyx6 : Mm1nz6[2]); +assign Plp7v6 = (Ne5ov6 ? X3hyx6 : Nn1nz6[2]); +assign Ilp7v6 = (Ge5ov6 ? X3hyx6 : Oo1nz6[2]); +assign X3hyx6 = (~(F4hyx6 & N4hyx6)); +assign N4hyx6 = (I347v6 ? D5hyx6 : V4hyx6); +assign D5hyx6 = (L5hyx6 & T5hyx6); +assign T5hyx6 = (B6hyx6 & J6hyx6); +assign J6hyx6 = (~(Mh5ov6 & Vcxmz6[23])); +assign B6hyx6 = (~(Vcxmz6[2] & Gjfnv6)); +assign L5hyx6 = (R6hyx6 & Z6hyx6); +assign Z6hyx6 = (~(Hi5ov6 & Vcxmz6[16])); +assign R6hyx6 = (~(Oi5ov6 & Vcxmz6[9])); +assign V4hyx6 = (H7hyx6 & P7hyx6); +assign P7hyx6 = (~(Oi5ov6 & Vcxmz6[35])); +assign H7hyx6 = (X7hyx6 & F8hyx6); +assign F8hyx6 = (~(Gjfnv6 & Vcxmz6[28])); +assign X7hyx6 = (~(Hi5ov6 & Vcxmz6[42])); +assign F4hyx6 = (N8hyx6 & Ragyx6); +assign N8hyx6 = (~(V7xmz6[2] & Pf5ov6)); +assign Blp7v6 = (Ab5ov6 ? V8hyx6 : Kh1nz6[3]); +assign Ukp7v6 = (Ue5ov6 ? V8hyx6 : Mm1nz6[3]); +assign Nkp7v6 = (Ne5ov6 ? V8hyx6 : Nn1nz6[3]); +assign Gkp7v6 = (Ge5ov6 ? V8hyx6 : Oo1nz6[3]); +assign V8hyx6 = (~(D9hyx6 & L9hyx6)); +assign L9hyx6 = (~(V7xmz6[3] & Pf5ov6)); +assign D9hyx6 = (I347v6 ? Bahyx6 : T9hyx6); +assign Bahyx6 = (Jahyx6 & Rahyx6); +assign Rahyx6 = (Zahyx6 & Hbhyx6); +assign Hbhyx6 = (~(Mh5ov6 & Vcxmz6[24])); +assign Zahyx6 = (~(Vcxmz6[3] & Gjfnv6)); +assign Jahyx6 = (Pbhyx6 & Xbhyx6); +assign Xbhyx6 = (~(Hi5ov6 & Vcxmz6[17])); +assign Pbhyx6 = (~(Oi5ov6 & Vcxmz6[10])); +assign T9hyx6 = (Fchyx6 & Nchyx6); +assign Nchyx6 = (~(Oi5ov6 & Vcxmz6[36])); +assign Fchyx6 = (Vchyx6 & Ddhyx6); +assign Ddhyx6 = (~(Gjfnv6 & Vcxmz6[29])); +assign Vchyx6 = (~(Hi5ov6 & Vcxmz6[43])); +assign Zjp7v6 = (Ab5ov6 ? Ldhyx6 : Kh1nz6[4]); +assign Sjp7v6 = (Ue5ov6 ? Ldhyx6 : Mm1nz6[4]); +assign Ljp7v6 = (Ne5ov6 ? Ldhyx6 : Nn1nz6[4]); +assign Ejp7v6 = (Ge5ov6 ? Ldhyx6 : Oo1nz6[4]); +assign Ldhyx6 = (~(Tdhyx6 & Behyx6)); +assign Behyx6 = (Jehyx6 & Ragyx6); +assign Tdhyx6 = (Rehyx6 & Zehyx6); +assign Zehyx6 = (~(V7xmz6[4] & Pf5ov6)); +assign Rehyx6 = (I347v6 ? Pfhyx6 : Hfhyx6); +assign Pfhyx6 = (Xfhyx6 & Fghyx6); +assign Fghyx6 = (Nghyx6 & Vghyx6); +assign Vghyx6 = (~(Mh5ov6 & Vcxmz6[25])); +assign Nghyx6 = (~(Vcxmz6[4] & Gjfnv6)); +assign Xfhyx6 = (Dhhyx6 & Lhhyx6); +assign Lhhyx6 = (~(Hi5ov6 & Vcxmz6[18])); +assign Dhhyx6 = (~(Oi5ov6 & Vcxmz6[11])); +assign Hfhyx6 = (Thhyx6 & Bihyx6); +assign Bihyx6 = (~(Oi5ov6 & Vcxmz6[37])); +assign Thhyx6 = (Jihyx6 & Rihyx6); +assign Rihyx6 = (~(Gjfnv6 & Vcxmz6[30])); +assign Jihyx6 = (~(Hi5ov6 & Vcxmz6[44])); +assign Xip7v6 = (Ab5ov6 ? Zihyx6 : Kh1nz6[5]); +assign Qip7v6 = (Ue5ov6 ? Zihyx6 : Mm1nz6[5]); +assign Jip7v6 = (Ne5ov6 ? Zihyx6 : Nn1nz6[5]); +assign Cip7v6 = (Ge5ov6 ? Zihyx6 : Oo1nz6[5]); +assign Zihyx6 = (~(Hjhyx6 & Pjhyx6)); +assign Pjhyx6 = (I347v6 ? Fkhyx6 : Xjhyx6); +assign Fkhyx6 = (Nkhyx6 & Vkhyx6); +assign Vkhyx6 = (~(Oi5ov6 & Vcxmz6[12])); +assign Nkhyx6 = (Dlhyx6 & Llhyx6); +assign Llhyx6 = (~(Vcxmz6[5] & Gjfnv6)); +assign Dlhyx6 = (~(Hi5ov6 & Vcxmz6[19])); +assign Xjhyx6 = (Tlhyx6 & Bmhyx6); +assign Bmhyx6 = (Jmhyx6 & Ragyx6); +assign Jmhyx6 = (~(Gjfnv6 & Vcxmz6[31])); +assign Tlhyx6 = (Rmhyx6 & Zmhyx6); +assign Zmhyx6 = (~(Hi5ov6 & Vcxmz6[45])); +assign Rmhyx6 = (~(Oi5ov6 & Vcxmz6[38])); +assign Hjhyx6 = (Hnhyx6 & Jehyx6); +assign Hnhyx6 = (~(V7xmz6[5] & Pf5ov6)); +assign Vhp7v6 = (Ab5ov6 ? Pnhyx6 : Kh1nz6[6]); +assign Ohp7v6 = (Ue5ov6 ? Pnhyx6 : Mm1nz6[6]); +assign Hhp7v6 = (Ne5ov6 ? Pnhyx6 : Nn1nz6[6]); +assign Ahp7v6 = (Ge5ov6 ? Pnhyx6 : Oo1nz6[6]); +assign Pnhyx6 = (~(Xnhyx6 & Fohyx6)); +assign Fohyx6 = (I347v6 ? Vohyx6 : Nohyx6); +assign Vohyx6 = (Dphyx6 & Lphyx6); +assign Lphyx6 = (Tphyx6 & Bqhyx6); +assign Bqhyx6 = (~(V147v6 & Mh5ov6)); +assign Mh5ov6 = (!R6byx6); +assign R6byx6 = (~(Jqhyx6 & Rqhyx6)); +assign Jqhyx6 = (Fbxmz6[2] & Fbxmz6[3]); +assign Tphyx6 = (~(Vcxmz6[6] & Gjfnv6)); +assign Dphyx6 = (Zqhyx6 & Hrhyx6); +assign Hrhyx6 = (~(Hi5ov6 & Vcxmz6[20])); +assign Zqhyx6 = (~(Oi5ov6 & Vcxmz6[13])); +assign Nohyx6 = (Prhyx6 & Xrhyx6); +assign Xrhyx6 = (~(Oi5ov6 & Vcxmz6[39])); +assign Prhyx6 = (Fshyx6 & Nshyx6); +assign Nshyx6 = (~(Gjfnv6 & Vcxmz6[32])); +assign Fshyx6 = (~(Hi5ov6 & Vcxmz6[46])); +assign Xnhyx6 = (Vshyx6 & Jehyx6); +assign Jehyx6 = (~(Dthyx6 & Z6gyx6)); +assign Vshyx6 = (~(V7xmz6[6] & Pf5ov6)); +assign Tgp7v6 = (Ab5ov6 ? Lthyx6 : Kh1nz6[7]); +assign Ab5ov6 = (Apiiw6 & Tthyx6); +assign Tthyx6 = (~(Cc5ov6 & Buhyx6)); +assign Buhyx6 = (~(Juhyx6 & Ruhyx6)); +assign Cc5ov6 = (!Hae7v6); +assign Mgp7v6 = (Ue5ov6 ? Lthyx6 : Mm1nz6[7]); +assign Ue5ov6 = (Zuhyx6 & Nl5ov6); +assign Zuhyx6 = (Apiiw6 & Hvhyx6); +assign Fgp7v6 = (Ne5ov6 ? Lthyx6 : Nn1nz6[7]); +assign Ne5ov6 = (Pvhyx6 & Ul5ov6); +assign Pvhyx6 = (Apiiw6 & Xvhyx6); +assign Yfp7v6 = (Ge5ov6 ? Lthyx6 : Oo1nz6[7]); +assign Ge5ov6 = (Fwhyx6 & Apiiw6); +assign Apiiw6 = (Dniiw6 & Nwhyx6); +assign Nwhyx6 = (~(Vwhyx6 & Gl5ov6)); +assign Vwhyx6 = (Dxhyx6 | Lxhyx6); +assign Dxhyx6 = (~(Txhyx6 & Byhyx6)); +assign Dniiw6 = (~(Jyhyx6 | GATEHCLK)); +assign Jyhyx6 = (~(HTMDHBURST[0] | Ue77z6)); +assign Fwhyx6 = (Hvhyx6 & Xvhyx6); +assign Xvhyx6 = (!Nl5ov6); +assign Nl5ov6 = (Hae7v6 ? Pp1nz6[1] : Ruhyx6); +assign Hvhyx6 = (!Ul5ov6); +assign Ul5ov6 = (Hae7v6 ? Pp1nz6[0] : Juhyx6); +assign Lthyx6 = (~(Ryhyx6 & Zyhyx6)); +assign Zyhyx6 = (Hzhyx6 & Pzhyx6); +assign Pzhyx6 = (~(H7gyx6 & Xzhyx6)); +assign Xzhyx6 = (F0iyx6 | Gjfnv6); +assign Gjfnv6 = (B85ov6 & C55ov6); +assign B85ov6 = (Z6gyx6 & Fbxmz6[3]); +assign Z6gyx6 = (~(Ncgyx6 | Fbxmz6[1])); +assign F0iyx6 = (B6byx6 & N0iyx6); +assign N0iyx6 = (Hi5ov6 | Oi5ov6); +assign H7gyx6 = (!U75ov6); +assign U75ov6 = (~(B6byx6 | O9xmz6[0])); +assign B6byx6 = (!I347v6); +assign Hzhyx6 = (~(F4gyx6 | Dhbyx6)); +assign Dhbyx6 = (!Ragyx6); +assign Ragyx6 = (~(V0iyx6 & D1iyx6)); +assign D1iyx6 = (M35ov6 & C55ov6); +assign V0iyx6 = (Fbxmz6[3] & Ncgyx6); +assign F4gyx6 = (L1iyx6 & T1iyx6); +assign T1iyx6 = (Fbxmz6[0] & Vcgyx6); +assign L1iyx6 = (Fbxmz6[2] & Fbxmz6[1]); +assign Ryhyx6 = (B2iyx6 & J2iyx6); +assign J2iyx6 = (~(V7xmz6[7] & Pf5ov6)); +assign B2iyx6 = (R2iyx6 & Z2iyx6); +assign Z2iyx6 = (~(O9xmz6[2] & Hi5ov6)); +assign Hi5ov6 = (~(Z65ov6 | Vcgyx6)); +assign Z65ov6 = (~(H3iyx6 & Fbxmz6[1])); +assign H3iyx6 = (Fbxmz6[0] & C55ov6); +assign R2iyx6 = (~(Oi5ov6 & O9xmz6[1])); +assign Oi5ov6 = (P3iyx6 & Lxgyx6); +assign Lxgyx6 = (Fbxmz6[1] & Ncgyx6); +assign P3iyx6 = (Fbxmz6[3] & C55ov6); +assign Rfp7v6 = (Dt2yx6 ? N52nz6[6] : X3iyx6); +assign X3iyx6 = (~(F4iyx6 & N4iyx6)); +assign N4iyx6 = (~(V4iyx6 & D5iyx6)); +assign D5iyx6 = (~(L5iyx6 | T5iyx6)); +assign V4iyx6 = (F2f7v6 & B6iyx6); +assign B6iyx6 = (~(J6iyx6 & R6iyx6)); +assign R6iyx6 = (~(Z6iyx6 & H7iyx6)); +assign Z6iyx6 = (P7iyx6 & X7iyx6); +assign P7iyx6 = (F8iyx6 | R0f7v6); +assign J6iyx6 = (Xv2yx6 | Ik77z6); +assign Xv2yx6 = (!Od77z6); +assign F4iyx6 = (~(J72nz6[0] & Lx2yx6)); +assign Kfp7v6 = (~(N8iyx6 & V8iyx6)); +assign V8iyx6 = (D9iyx6 & Zu2yx6); +assign Zu2yx6 = (!L9iyx6); +assign D9iyx6 = (~(T9iyx6 & Baiyx6)); +assign T9iyx6 = (J72nz6[0] & Ns2yx6); +assign N8iyx6 = (Jaiyx6 & Raiyx6); +assign Raiyx6 = (~(Wye7v6 & Zaiyx6)); +assign Jaiyx6 = (~(Z12nz6[0] & Pv2yx6)); +assign Dfp7v6 = (~(Hbiyx6 & Pbiyx6)); +assign Pbiyx6 = (Xbiyx6 & Fciyx6); +assign Fciyx6 = (~(Nciyx6 & Mqb7z6[0])); +assign Xbiyx6 = (Vciyx6 & Ddiyx6); +assign Vciyx6 = (~(Ldiyx6 & Gh77z6)); +assign Hbiyx6 = (Tdiyx6 & Beiyx6); +assign Beiyx6 = (~(Z12nz6[1] & Pv2yx6)); +assign Tdiyx6 = (Jeiyx6 & Reiyx6); +assign Reiyx6 = (~(J72nz6[1] & Baiyx6)); +assign Jeiyx6 = (~(N52nz6[0] & Zaiyx6)); +assign Wep7v6 = (~(Zeiyx6 & Hfiyx6)); +assign Hfiyx6 = (Pfiyx6 & Xfiyx6); +assign Xfiyx6 = (~(J72nz6[2] & Baiyx6)); +assign Pfiyx6 = (Fgiyx6 & Ngiyx6); +assign Ngiyx6 = (~(Ldiyx6 & Wd77z6)); +assign Fgiyx6 = (~(Nciyx6 & Mqb7z6[1])); +assign Zeiyx6 = (Vgiyx6 & Dhiyx6); +assign Dhiyx6 = (~(N52nz6[1] & Zaiyx6)); +assign Vgiyx6 = (~(Z12nz6[2] & Pv2yx6)); +assign Pep7v6 = (~(Lhiyx6 & Thiyx6)); +assign Thiyx6 = (Biiyx6 & Jiiyx6); +assign Jiiyx6 = (~(Nciyx6 & Mqb7z6[2])); +assign Biiyx6 = (Riiyx6 & Ddiyx6); +assign Riiyx6 = (~(Ldiyx6 & Ee77z6)); +assign Lhiyx6 = (Ziiyx6 & Hjiyx6); +assign Hjiyx6 = (~(Z12nz6[3] & Pv2yx6)); +assign Ziiyx6 = (Pjiyx6 & Xjiyx6); +assign Xjiyx6 = (~(J72nz6[3] & Baiyx6)); +assign Pjiyx6 = (~(N52nz6[2] & Zaiyx6)); +assign Iep7v6 = (~(Fkiyx6 & Nkiyx6)); +assign Nkiyx6 = (Vkiyx6 & Dliyx6); +assign Dliyx6 = (~(Nciyx6 & Mqb7z6[3])); +assign Vkiyx6 = (Lliyx6 & Ddiyx6); +assign Lliyx6 = (~(Ldiyx6 & Cf77z6)); +assign Fkiyx6 = (Tliyx6 & Bmiyx6); +assign Bmiyx6 = (~(Z12nz6[4] & Pv2yx6)); +assign Tliyx6 = (Jmiyx6 & Rmiyx6); +assign Rmiyx6 = (~(J72nz6[4] & Baiyx6)); +assign Jmiyx6 = (~(N52nz6[3] & Zaiyx6)); +assign Bep7v6 = (~(Zmiyx6 & Hniyx6)); +assign Hniyx6 = (Pniyx6 & Xniyx6); +assign Xniyx6 = (~(Nciyx6 & Mqb7z6[4])); +assign Pniyx6 = (Foiyx6 & Ddiyx6); +assign Foiyx6 = (~(Ldiyx6 & Kf77z6)); +assign Zmiyx6 = (Noiyx6 & Voiyx6); +assign Voiyx6 = (~(Z12nz6[5] & Pv2yx6)); +assign Noiyx6 = (Dpiyx6 & Lpiyx6); +assign Lpiyx6 = (~(J72nz6[5] & Baiyx6)); +assign Dpiyx6 = (~(N52nz6[4] & Zaiyx6)); +assign Udp7v6 = (~(Tpiyx6 & Bqiyx6)); +assign Bqiyx6 = (Jqiyx6 & Rqiyx6); +assign Rqiyx6 = (~(Nciyx6 & Mqb7z6[5])); +assign Jqiyx6 = (Zqiyx6 & Ddiyx6); +assign Zqiyx6 = (~(Ldiyx6 & Sf77z6)); +assign Tpiyx6 = (Hriyx6 & Priyx6); +assign Priyx6 = (~(Z12nz6[6] & Pv2yx6)); +assign Hriyx6 = (Xriyx6 & Fsiyx6); +assign Fsiyx6 = (~(J72nz6[6] & Baiyx6)); +assign Xriyx6 = (~(N52nz6[5] & Zaiyx6)); +assign Ndp7v6 = (~(Nsiyx6 & Vsiyx6)); +assign Vsiyx6 = (Dtiyx6 & Ltiyx6); +assign Ltiyx6 = (~(Nciyx6 & Mqb7z6[6])); +assign Nciyx6 = (Ttiyx6 & L9iyx6); +assign Ttiyx6 = (~(Buiyx6 | Juiyx6)); +assign Dtiyx6 = (Ruiyx6 & Ddiyx6); +assign Ddiyx6 = (~(Zuiyx6 & L9iyx6)); +assign Zuiyx6 = (Juiyx6 & Hviyx6); +assign Hviyx6 = (!Buiyx6); +assign Ruiyx6 = (~(Ldiyx6 & Ag77z6)); +assign Ldiyx6 = (Pviyx6 & L9iyx6); +assign L9iyx6 = (Xviyx6 & Fwiyx6); +assign Xviyx6 = (!Lx2yx6); +assign Pviyx6 = (Juiyx6 & Buiyx6); +assign Buiyx6 = (Vwiyx6 ? Nwiyx6 : Hp5ov6); +assign Juiyx6 = (Vwiyx6 ? Qa2nz6[0] : Dxiyx6); +assign Nsiyx6 = (Lxiyx6 & Txiyx6); +assign Txiyx6 = (~(Z12nz6[7] & Pv2yx6)); +assign Lxiyx6 = (Byiyx6 & Jyiyx6); +assign Jyiyx6 = (~(J72nz6[7] & Baiyx6)); +assign Baiyx6 = (Ryiyx6 & Fwiyx6); +assign Byiyx6 = (~(Zaiyx6 & N52nz6[6])); +assign Zaiyx6 = (~(Pv2yx6 | J23yx6)); +assign Pv2yx6 = (!Fwiyx6); +assign Fwiyx6 = (Zyiyx6 & Mo5ov6); +assign Gdp7v6 = (Hziyx6 | Pziyx6); +assign Pziyx6 = (~(Xziyx6 | F0jyx6)); +assign F0jyx6 = (D1jyx6 ? V0jyx6 : N0jyx6); +assign N0jyx6 = (Nl1nz6[1] | Ctf7v6); +assign Xziyx6 = (Ld2yx6 | Dl2yx6); +assign Dl2yx6 = (~(L1jyx6 | T1jyx6)); +assign L1jyx6 = (B63yx6 ? D53yx6 : J7f7v6); +assign Ld2yx6 = (~(B2jyx6 & Nl1nz6[0])); +assign Hziyx6 = (Nl1nz6[1] ? R2jyx6 : J2jyx6); +assign R2jyx6 = (Mwf7v6 ? Pb2yx6 : Z2jyx6); +assign Z2jyx6 = (D1jyx6 | Qk77z6); +assign J2jyx6 = (H3jyx6 & Fs2yx6); +assign Fs2yx6 = (Qk77z6 & Mwf7v6); +assign H3jyx6 = (Ctf7v6 & Nl1nz6[0]); +assign Zcp7v6 = (P3jyx6 & X3jyx6); +assign Scp7v6 = (~(F4jyx6 & N4jyx6)); +assign N4jyx6 = (~(P3jyx6 & V4jyx6)); +assign V4jyx6 = (~(D5jyx6 & L5jyx6)); +assign L5jyx6 = (~(T5jyx6 & B6jyx6)); +assign D5jyx6 = (~(J6jyx6 & R6jyx6)); +assign F4jyx6 = (~(Z6jyx6 & H7jyx6)); +assign Lcp7v6 = (~(P7jyx6 | X7jyx6)); +assign Ecp7v6 = (F8jyx6 & D1jyx6); +assign D1jyx6 = (~(N8jyx6 & V8jyx6)); +assign V8jyx6 = (D9jyx6 & L9jyx6); +assign L9jyx6 = (~(P3jyx6 & T9jyx6)); +assign T9jyx6 = (~(Bajyx6 & Jajyx6)); +assign Jajyx6 = (~(T5jyx6 & Rajyx6)); +assign Bajyx6 = (~(J6jyx6 & Zajyx6)); +assign D9jyx6 = (~(H7jyx6 & Hbjyx6)); +assign Hbjyx6 = (Twhiw6 | Iy1nz6[0]); +assign H7jyx6 = (X3jyx6 | Pbjyx6); +assign Pbjyx6 = (Xbjyx6 & Fcjyx6); +assign Fcjyx6 = (Kf2nz6[2] ? R6jyx6 : B6jyx6); +assign R6jyx6 = (~(Ncjyx6 & Vcjyx6)); +assign Vcjyx6 = (Mo5ov6 | Ddjyx6); +assign Ncjyx6 = (Ldjyx6 & Tdjyx6); +assign Ldjyx6 = (~(Z12nz6[5] & Bejyx6)); +assign B6jyx6 = (~(Jejyx6 & Rejyx6)); +assign Rejyx6 = (~(B63yx6 & Zejyx6)); +assign Jejyx6 = (Hfjyx6 & Tdjyx6); +assign Hfjyx6 = (~(Z12nz6[1] & Bejyx6)); +assign Xbjyx6 = (Kf2nz6[0] & Pfjyx6); +assign X3jyx6 = (~(Xfjyx6 & Fgjyx6)); +assign Fgjyx6 = (~(T5jyx6 & Ngjyx6)); +assign Ngjyx6 = (~(Vgjyx6 & Dhjyx6)); +assign Dhjyx6 = (Mo5ov6 | Lhjyx6); +assign Vgjyx6 = (Thjyx6 & Tdjyx6); +assign Thjyx6 = (~(Z12nz6[3] & Bejyx6)); +assign Xfjyx6 = (~(Bijyx6 & J6jyx6)); +assign Bijyx6 = (Bejyx6 ? Z12nz6[7] : Jijyx6); +assign Jijyx6 = (!Rijyx6); +assign Rijyx6 = (Mo5ov6 ? Ca1nv6 : Zijyx6); +assign N8jyx6 = (Hjjyx6 & Pjjyx6); +assign Pjjyx6 = (Xjjyx6 | X7jyx6); +assign X7jyx6 = (Fkjyx6 & Nkjyx6); +assign Nkjyx6 = (~(J6jyx6 & Vkjyx6)); +assign Fkjyx6 = (~(T5jyx6 & Dljyx6)); +assign Hjjyx6 = (Kf2nz6[1] ? Tljyx6 : Lljyx6); +assign Tljyx6 = (~(Bmjyx6 & Dp2yx6)); +assign Bmjyx6 = (Kf2nz6[2] ? Vkjyx6 : Dljyx6); +assign Vkjyx6 = (~(Jmjyx6 & Rmjyx6)); +assign Rmjyx6 = (~(B63yx6 & Zmjyx6)); +assign Jmjyx6 = (Hnjyx6 & Tdjyx6); +assign Hnjyx6 = (~(Z12nz6[6] & Bejyx6)); +assign Dljyx6 = (~(Pnjyx6 & Xnjyx6)); +assign Xnjyx6 = (Mo5ov6 | Fojyx6); +assign Pnjyx6 = (Nojyx6 & Tdjyx6); +assign Nojyx6 = (~(Z12nz6[2] & Bejyx6)); +assign Lljyx6 = (~(Vojyx6 & Dpjyx6)); +assign Dpjyx6 = (~(Kf2nz6[0] & Xjjyx6)); +assign Vojyx6 = (Kf2nz6[2] ? Zajyx6 : Rajyx6); +assign Zajyx6 = (~(Lpjyx6 & Tpjyx6)); +assign Tpjyx6 = (Mo5ov6 | Bqjyx6); +assign Lpjyx6 = (Jqjyx6 & Tdjyx6); +assign Jqjyx6 = (~(Z12nz6[4] & Bejyx6)); +assign Rajyx6 = (~(Rqjyx6 & Zqjyx6)); +assign Zqjyx6 = (Mo5ov6 | Hrjyx6); +assign Rqjyx6 = (Prjyx6 & Tdjyx6); +assign Tdjyx6 = (!T1jyx6); +assign T1jyx6 = (Xrjyx6 & Mo5ov6); +assign Prjyx6 = (~(Z12nz6[0] & Bejyx6)); +assign F8jyx6 = (~(Fsjyx6 & Nsjyx6)); +assign Nsjyx6 = (Vsjyx6 & Hih7v6); +assign Vsjyx6 = (Aih7v6 & Twhiw6); +assign Fsjyx6 = (Vih7v6 & Oih7v6); +assign Xbp7v6 = (~(Dtjyx6 & Ltjyx6)); +assign Ltjyx6 = (~(L8wnv6 & Itb7z6[29])); +assign Dtjyx6 = (Ttjyx6 & Bujyx6); +assign Bujyx6 = (~(G9wnv6 & Jujyx6)); +assign Jujyx6 = (~(Rujyx6 & Zujyx6)); +assign Zujyx6 = (Hvjyx6 & Pvjyx6); +assign Pvjyx6 = (Wawnv6 | Xvjyx6); +assign Wawnv6 = (!Dtm7z6[2]); +assign Hvjyx6 = (~(Dtm7z6[3] & Fwjyx6)); +assign Rujyx6 = (Nwjyx6 & Vwjyx6); +assign Vwjyx6 = (~(Dtm7z6[0] & HRDATAD[29])); +assign Nwjyx6 = (~(Dtm7z6[1] & HRDATAS[29])); +assign Ttjyx6 = (~(Fcwnv6 & Ymyhw6)); +assign Ymyhw6 = (Dz1nv6 ? Ulxmz6[29] : Aixmz6[29]); +assign Qbp7v6 = (~(Dxjyx6 & Lxjyx6)); +assign Lxjyx6 = (~(Txjyx6 & Zec7z6[0])); +assign Dxjyx6 = (Byjyx6 & Jyjyx6); +assign Jyjyx6 = (~(H5xnv6 & Kaxnv6)); +assign Kaxnv6 = (~(Ryjyx6 & Zyjyx6)); +assign Zyjyx6 = (~(G7piw6 & HRDATAS[0])); +assign Ryjyx6 = (Hzjyx6 & Pzjyx6); +assign Pzjyx6 = (~(K9piw6 & Orwnv6)); +assign Hzjyx6 = (~(HRDATAI[0] & Xzjyx6)); +assign Byjyx6 = (~(Byc7z6[0] & O5xnv6)); +assign Jbp7v6 = (~(F0kyx6 & N0kyx6)); +assign N0kyx6 = (~(Txjyx6 & Zec7z6[1])); +assign F0kyx6 = (V0kyx6 & D1kyx6); +assign D1kyx6 = (~(H5xnv6 & B1ynv6)); +assign B1ynv6 = (~(L1kyx6 & T1kyx6)); +assign T1kyx6 = (~(G7piw6 & HRDATAS[1])); +assign L1kyx6 = (B2kyx6 & J2kyx6); +assign J2kyx6 = (~(K9piw6 & Kud7x6)); +assign B2kyx6 = (~(HRDATAI[1] & Xzjyx6)); +assign V0kyx6 = (~(Byc7z6[1] & O5xnv6)); +assign Cbp7v6 = (~(R2kyx6 & Z2kyx6)); +assign Z2kyx6 = (~(Txjyx6 & Zec7z6[2])); +assign R2kyx6 = (H3kyx6 & P3kyx6); +assign P3kyx6 = (~(H5xnv6 & Mwxnv6)); +assign Mwxnv6 = (~(X3kyx6 & F4kyx6)); +assign F4kyx6 = (~(G7piw6 & HRDATAS[2])); +assign X3kyx6 = (N4kyx6 & V4kyx6); +assign V4kyx6 = (~(K9piw6 & Eyd7x6)); +assign N4kyx6 = (~(HRDATAI[2] & Xzjyx6)); +assign H3kyx6 = (~(Byc7z6[2] & O5xnv6)); +assign Vap7v6 = (~(D5kyx6 & L5kyx6)); +assign L5kyx6 = (~(Txjyx6 & Zec7z6[3])); +assign D5kyx6 = (T5kyx6 & B6kyx6); +assign B6kyx6 = (~(H5xnv6 & Xrxnv6)); +assign Xrxnv6 = (~(J6kyx6 & R6kyx6)); +assign R6kyx6 = (~(G7piw6 & HRDATAS[3])); +assign J6kyx6 = (Z6kyx6 & H7kyx6); +assign H7kyx6 = (~(K9piw6 & R1e7x6)); +assign Z6kyx6 = (~(HRDATAI[3] & Xzjyx6)); +assign T5kyx6 = (~(Byc7z6[3] & O5xnv6)); +assign Oap7v6 = (~(P7kyx6 & X7kyx6)); +assign X7kyx6 = (~(Txjyx6 & Zec7z6[4])); +assign P7kyx6 = (F8kyx6 & N8kyx6); +assign N8kyx6 = (~(H5xnv6 & Inxnv6)); +assign Inxnv6 = (~(V8kyx6 & D9kyx6)); +assign D9kyx6 = (~(G7piw6 & HRDATAS[4])); +assign V8kyx6 = (L9kyx6 & T9kyx6); +assign T9kyx6 = (~(K9piw6 & E5e7x6)); +assign L9kyx6 = (~(HRDATAI[4] & Xzjyx6)); +assign F8kyx6 = (~(Byc7z6[4] & O5xnv6)); +assign Hap7v6 = (~(Bakyx6 & Jakyx6)); +assign Jakyx6 = (~(Txjyx6 & Zec7z6[5])); +assign Bakyx6 = (Rakyx6 & Zakyx6); +assign Zakyx6 = (~(H5xnv6 & Tixnv6)); +assign Tixnv6 = (~(Hbkyx6 & Pbkyx6)); +assign Pbkyx6 = (~(G7piw6 & HRDATAS[5])); +assign Hbkyx6 = (Xbkyx6 & Fckyx6); +assign Fckyx6 = (~(K9piw6 & R8e7x6)); +assign Xbkyx6 = (~(HRDATAI[5] & Xzjyx6)); +assign Rakyx6 = (~(Byc7z6[5] & O5xnv6)); +assign Aap7v6 = (~(Nckyx6 & Vckyx6)); +assign Vckyx6 = (~(Txjyx6 & Zec7z6[6])); +assign Nckyx6 = (Ddkyx6 & Ldkyx6); +assign Ldkyx6 = (~(H5xnv6 & Eexnv6)); +assign Eexnv6 = (~(Tdkyx6 & Bekyx6)); +assign Bekyx6 = (~(G7piw6 & HRDATAS[6])); +assign Tdkyx6 = (Jekyx6 & Rekyx6); +assign Rekyx6 = (~(K9piw6 & Ece7x6)); +assign Jekyx6 = (~(HRDATAI[6] & Xzjyx6)); +assign Ddkyx6 = (~(Byc7z6[6] & O5xnv6)); +assign T9p7v6 = (~(Zekyx6 & Hfkyx6)); +assign Hfkyx6 = (~(Txjyx6 & Zec7z6[7])); +assign Zekyx6 = (Pfkyx6 & Xfkyx6); +assign Xfkyx6 = (~(H5xnv6 & N1xnv6)); +assign N1xnv6 = (~(Fgkyx6 & Ngkyx6)); +assign Ngkyx6 = (~(G7piw6 & HRDATAS[7])); +assign Fgkyx6 = (Vgkyx6 & Dhkyx6); +assign Dhkyx6 = (~(K9piw6 & Rfe7x6)); +assign Vgkyx6 = (~(HRDATAI[7] & Xzjyx6)); +assign Pfkyx6 = (~(Byc7z6[7] & O5xnv6)); +assign M9p7v6 = (~(Lhkyx6 & Thkyx6)); +assign Thkyx6 = (~(Txjyx6 & Zec7z6[8])); +assign Lhkyx6 = (Bikyx6 & Jikyx6); +assign Jikyx6 = (~(H5xnv6 & S5znv6)); +assign S5znv6 = (~(Rikyx6 & Zikyx6)); +assign Zikyx6 = (~(G7piw6 & HRDATAS[8])); +assign Rikyx6 = (Hjkyx6 & Pjkyx6); +assign Pjkyx6 = (~(K9piw6 & Ebf7x6)); +assign Hjkyx6 = (~(HRDATAI[8] & Xzjyx6)); +assign Bikyx6 = (~(Byc7z6[8] & O5xnv6)); +assign F9p7v6 = (~(Xjkyx6 & Fkkyx6)); +assign Fkkyx6 = (~(Txjyx6 & Zec7z6[9])); +assign Xjkyx6 = (Nkkyx6 & Vkkyx6); +assign Vkkyx6 = (~(H5xnv6 & D1znv6)); +assign D1znv6 = (~(Dlkyx6 & Llkyx6)); +assign Llkyx6 = (Tlkyx6 & Bmkyx6); +assign Tlkyx6 = (~(K9piw6 & Rme7x6)); +assign Dlkyx6 = (Jmkyx6 & Rmkyx6); +assign Rmkyx6 = (~(HRDATAI[9] & D9piw6)); +assign Jmkyx6 = (~(G7piw6 & HRDATAS[9])); +assign Nkkyx6 = (~(Byc7z6[9] & O5xnv6)); +assign Y8p7v6 = (~(Zmkyx6 & Hnkyx6)); +assign Hnkyx6 = (~(Txjyx6 & Zec7z6[10])); +assign Zmkyx6 = (Pnkyx6 & Xnkyx6); +assign Xnkyx6 = (~(H5xnv6 & Owynv6)); +assign Owynv6 = (~(Fokyx6 & Nokyx6)); +assign Nokyx6 = (Vokyx6 & Bmkyx6); +assign Vokyx6 = (~(K9piw6 & Eqe7x6)); +assign Fokyx6 = (Dpkyx6 & Lpkyx6); +assign Lpkyx6 = (~(HRDATAI[10] & D9piw6)); +assign Dpkyx6 = (~(G7piw6 & HRDATAS[10])); +assign Pnkyx6 = (~(Byc7z6[10] & O5xnv6)); +assign R8p7v6 = (~(Tpkyx6 & Bqkyx6)); +assign Bqkyx6 = (~(Txjyx6 & Zec7z6[11])); +assign Tpkyx6 = (Jqkyx6 & Rqkyx6); +assign Rqkyx6 = (~(H5xnv6 & Zrynv6)); +assign Zrynv6 = (~(Zqkyx6 & Hrkyx6)); +assign Hrkyx6 = (Prkyx6 & Bmkyx6); +assign Prkyx6 = (~(K9piw6 & Rte7x6)); +assign Zqkyx6 = (Xrkyx6 & Fskyx6); +assign Fskyx6 = (~(HRDATAI[11] & D9piw6)); +assign Xrkyx6 = (~(G7piw6 & HRDATAS[11])); +assign Jqkyx6 = (~(Byc7z6[11] & O5xnv6)); +assign K8p7v6 = (~(Nskyx6 & Vskyx6)); +assign Vskyx6 = (~(Txjyx6 & Zec7z6[12])); +assign Nskyx6 = (Dtkyx6 & Ltkyx6); +assign Ltkyx6 = (~(H5xnv6 & Knynv6)); +assign Knynv6 = (~(Ttkyx6 & Bukyx6)); +assign Bukyx6 = (Jukyx6 & Bmkyx6); +assign Jukyx6 = (~(K9piw6 & Exe7x6)); +assign Ttkyx6 = (Rukyx6 & Zukyx6); +assign Zukyx6 = (~(HRDATAI[12] & D9piw6)); +assign Rukyx6 = (~(G7piw6 & HRDATAS[12])); +assign Dtkyx6 = (~(Byc7z6[12] & O5xnv6)); +assign D8p7v6 = (~(Hvkyx6 & Pvkyx6)); +assign Pvkyx6 = (~(Txjyx6 & Zec7z6[13])); +assign Hvkyx6 = (Xvkyx6 & Fwkyx6); +assign Fwkyx6 = (~(H5xnv6 & Viynv6)); +assign Viynv6 = (~(Nwkyx6 & Vwkyx6)); +assign Vwkyx6 = (Dxkyx6 & Bmkyx6); +assign Dxkyx6 = (~(K9piw6 & R0f7x6)); +assign Nwkyx6 = (Lxkyx6 & Txkyx6); +assign Txkyx6 = (~(HRDATAI[13] & D9piw6)); +assign Lxkyx6 = (~(G7piw6 & HRDATAS[13])); +assign Xvkyx6 = (~(Byc7z6[13] & O5xnv6)); +assign W7p7v6 = (~(Bykyx6 & Jykyx6)); +assign Jykyx6 = (~(Byc7z6[14] & O5xnv6)); +assign Bykyx6 = (Rykyx6 & Rdtov6); +assign Rykyx6 = (~(H5xnv6 & Geynv6)); +assign P7p7v6 = (~(Zykyx6 & Hzkyx6)); +assign Hzkyx6 = (~(Txjyx6 & Zec7z6[15])); +assign Zykyx6 = (Pzkyx6 & Xzkyx6); +assign Xzkyx6 = (~(H5xnv6 & R9ynv6)); +assign Pzkyx6 = (~(Byc7z6[15] & O5xnv6)); +assign I7p7v6 = (~(F0lyx6 & N0lyx6)); +assign N0lyx6 = (~(Txjyx6 & Zec7z6[16])); +assign F0lyx6 = (V0lyx6 & D1lyx6); +assign D1lyx6 = (~(H5xnv6 & N6znv6)); +assign V0lyx6 = (~(Byc7z6[16] & O5xnv6)); +assign B7p7v6 = (~(L1lyx6 & T1lyx6)); +assign T1lyx6 = (~(Txjyx6 & Zec7z6[17])); +assign L1lyx6 = (B2lyx6 & J2lyx6); +assign J2lyx6 = (~(H5xnv6 & Y1znv6)); +assign Y1znv6 = (~(R2lyx6 & Z2lyx6)); +assign Z2lyx6 = (~(G7piw6 & HRDATAS[17])); +assign R2lyx6 = (H3lyx6 & P3lyx6); +assign P3lyx6 = (~(K9piw6 & Agf7x6)); +assign H3lyx6 = (~(HRDATAI[17] & X3lyx6)); +assign B2lyx6 = (~(Byc7z6[17] & O5xnv6)); +assign U6p7v6 = (~(F4lyx6 & N4lyx6)); +assign N4lyx6 = (~(Txjyx6 & Zec7z6[18])); +assign F4lyx6 = (V4lyx6 & D5lyx6); +assign D5lyx6 = (~(H5xnv6 & Jxynv6)); +assign Jxynv6 = (~(L5lyx6 & T5lyx6)); +assign T5lyx6 = (~(G7piw6 & HRDATAS[18])); +assign L5lyx6 = (B6lyx6 & J6lyx6); +assign J6lyx6 = (~(K9piw6 & Njf7x6)); +assign B6lyx6 = (~(HRDATAI[18] & X3lyx6)); +assign V4lyx6 = (~(Byc7z6[18] & O5xnv6)); +assign N6p7v6 = (~(R6lyx6 & Z6lyx6)); +assign Z6lyx6 = (~(Txjyx6 & Zec7z6[19])); +assign R6lyx6 = (H7lyx6 & P7lyx6); +assign P7lyx6 = (~(H5xnv6 & Usynv6)); +assign Usynv6 = (~(X7lyx6 & F8lyx6)); +assign F8lyx6 = (~(G7piw6 & HRDATAS[19])); +assign X7lyx6 = (N8lyx6 & V8lyx6); +assign V8lyx6 = (~(K9piw6 & Anf7x6)); +assign N8lyx6 = (~(HRDATAI[19] & X3lyx6)); +assign H7lyx6 = (~(Byc7z6[19] & O5xnv6)); +assign G6p7v6 = (~(D9lyx6 & L9lyx6)); +assign L9lyx6 = (~(Txjyx6 & Zec7z6[20])); +assign D9lyx6 = (T9lyx6 & Balyx6); +assign Balyx6 = (~(H5xnv6 & Foynv6)); +assign Foynv6 = (~(Jalyx6 & Ralyx6)); +assign Ralyx6 = (~(G7piw6 & HRDATAS[20])); +assign Jalyx6 = (Zalyx6 & Hblyx6); +assign Hblyx6 = (~(K9piw6 & Nqf7x6)); +assign Zalyx6 = (~(HRDATAI[20] & X3lyx6)); +assign T9lyx6 = (~(Byc7z6[20] & O5xnv6)); +assign Z5p7v6 = (~(Pblyx6 & Xblyx6)); +assign Xblyx6 = (~(Txjyx6 & Zec7z6[21])); +assign Pblyx6 = (Fclyx6 & Nclyx6); +assign Nclyx6 = (~(H5xnv6 & Qjynv6)); +assign Qjynv6 = (~(Vclyx6 & Ddlyx6)); +assign Ddlyx6 = (~(G7piw6 & HRDATAS[21])); +assign Vclyx6 = (Ldlyx6 & Tdlyx6); +assign Tdlyx6 = (~(K9piw6 & Auf7x6)); +assign Ldlyx6 = (~(HRDATAI[21] & X3lyx6)); +assign Fclyx6 = (~(Byc7z6[21] & O5xnv6)); +assign S5p7v6 = (~(Belyx6 & Jelyx6)); +assign Jelyx6 = (~(Txjyx6 & Zec7z6[22])); +assign Belyx6 = (Relyx6 & Zelyx6); +assign Zelyx6 = (~(H5xnv6 & Bfynv6)); +assign Bfynv6 = (~(Hflyx6 & Pflyx6)); +assign Pflyx6 = (~(G7piw6 & HRDATAS[22])); +assign Hflyx6 = (Xflyx6 & Fglyx6); +assign Fglyx6 = (~(K9piw6 & Nxf7x6)); +assign Xflyx6 = (~(HRDATAI[22] & X3lyx6)); +assign Relyx6 = (~(Byc7z6[22] & O5xnv6)); +assign L5p7v6 = (~(Nglyx6 & Vglyx6)); +assign Vglyx6 = (~(Txjyx6 & Zec7z6[23])); +assign Nglyx6 = (Dhlyx6 & Lhlyx6); +assign Lhlyx6 = (~(H5xnv6 & Maynv6)); +assign Maynv6 = (~(Thlyx6 & Bilyx6)); +assign Bilyx6 = (~(G7piw6 & HRDATAS[23])); +assign Thlyx6 = (Jilyx6 & Rilyx6); +assign Rilyx6 = (~(K9piw6 & A1g7x6)); +assign Jilyx6 = (~(HRDATAI[23] & X3lyx6)); +assign Dhlyx6 = (~(Byc7z6[23] & O5xnv6)); +assign E5p7v6 = (~(Zilyx6 & Hjlyx6)); +assign Hjlyx6 = (~(Txjyx6 & Zec7z6[24])); +assign Zilyx6 = (Pjlyx6 & Xjlyx6); +assign Xjlyx6 = (~(H5xnv6 & P9xnv6)); +assign P9xnv6 = (~(Fklyx6 & Nklyx6)); +assign Nklyx6 = (~(G7piw6 & HRDATAS[24])); +assign Fklyx6 = (Vklyx6 & Dllyx6); +assign Dllyx6 = (~(K9piw6 & Kdg7x6)); +assign Vklyx6 = (~(HRDATAI[24] & X3lyx6)); +assign Pjlyx6 = (~(Byc7z6[24] & O5xnv6)); +assign X4p7v6 = (~(Lllyx6 & Tllyx6)); +assign Tllyx6 = (~(Txjyx6 & Zec7z6[25])); +assign Lllyx6 = (Bmlyx6 & Jmlyx6); +assign Jmlyx6 = (~(H5xnv6 & W1ynv6)); +assign W1ynv6 = (~(Rmlyx6 & Zmlyx6)); +assign Zmlyx6 = (Hnlyx6 & Pnlyx6); +assign Hnlyx6 = (~(K9piw6 & X9g7x6)); +assign Rmlyx6 = (Xnlyx6 & Folyx6); +assign Folyx6 = (~(HRDATAI[25] & D9piw6)); +assign Xnlyx6 = (~(G7piw6 & HRDATAS[25])); +assign Bmlyx6 = (~(Byc7z6[25] & O5xnv6)); +assign Q4p7v6 = (~(Nolyx6 & Volyx6)); +assign Volyx6 = (~(Txjyx6 & Zec7z6[26])); +assign Nolyx6 = (Dplyx6 & Lplyx6); +assign Lplyx6 = (~(H5xnv6 & Hxxnv6)); +assign Hxxnv6 = (~(Tplyx6 & Bqlyx6)); +assign Bqlyx6 = (Jqlyx6 & Pnlyx6); +assign Jqlyx6 = (~(K9piw6 & Dx98x6)); +assign Tplyx6 = (Rqlyx6 & Zqlyx6); +assign Zqlyx6 = (~(HRDATAI[26] & D9piw6)); +assign Rqlyx6 = (~(G7piw6 & HRDATAS[26])); +assign Dplyx6 = (~(Byc7z6[26] & O5xnv6)); +assign J4p7v6 = (~(Hrlyx6 & Prlyx6)); +assign Prlyx6 = (~(Txjyx6 & Zec7z6[27])); +assign Hrlyx6 = (Xrlyx6 & Fslyx6); +assign Fslyx6 = (~(H5xnv6 & Ssxnv6)); +assign Ssxnv6 = (~(Nslyx6 & Vslyx6)); +assign Vslyx6 = (Dtlyx6 & Pnlyx6); +assign Dtlyx6 = (~(K9piw6 & Dpyxx6)); +assign Nslyx6 = (Ltlyx6 & Ttlyx6); +assign Ttlyx6 = (~(HRDATAI[27] & D9piw6)); +assign Ltlyx6 = (~(G7piw6 & HRDATAS[27])); +assign Xrlyx6 = (~(Byc7z6[27] & O5xnv6)); +assign C4p7v6 = (~(Bulyx6 & Julyx6)); +assign Julyx6 = (~(Txjyx6 & Zec7z6[28])); +assign Bulyx6 = (Rulyx6 & Zulyx6); +assign Zulyx6 = (~(H5xnv6 & Doxnv6)); +assign Doxnv6 = (~(Hvlyx6 & Pvlyx6)); +assign Pvlyx6 = (Xvlyx6 & Pnlyx6); +assign Xvlyx6 = (~(K9piw6 & Dtyxx6)); +assign Hvlyx6 = (Fwlyx6 & Nwlyx6); +assign Nwlyx6 = (~(HRDATAI[28] & D9piw6)); +assign Fwlyx6 = (~(G7piw6 & HRDATAS[28])); +assign Rulyx6 = (~(Byc7z6[28] & O5xnv6)); +assign V3p7v6 = (~(Vwlyx6 & Dxlyx6)); +assign Dxlyx6 = (~(Txjyx6 & Zec7z6[29])); +assign Vwlyx6 = (Lxlyx6 & Txlyx6); +assign Txlyx6 = (~(H5xnv6 & Ojxnv6)); +assign Ojxnv6 = (~(Bylyx6 & Jylyx6)); +assign Jylyx6 = (Rylyx6 & Pnlyx6); +assign Rylyx6 = (~(K9piw6 & Fwjyx6)); +assign Bylyx6 = (Zylyx6 & Hzlyx6); +assign Hzlyx6 = (~(HRDATAI[29] & D9piw6)); +assign Zylyx6 = (~(G7piw6 & HRDATAS[29])); +assign Lxlyx6 = (~(Byc7z6[29] & O5xnv6)); +assign O3p7v6 = (~(Pzlyx6 & Xzlyx6)); +assign Xzlyx6 = (~(Txjyx6 & Zec7z6[30])); +assign Pzlyx6 = (F0myx6 & N0myx6); +assign N0myx6 = (~(H5xnv6 & Zexnv6)); +assign F0myx6 = (~(Byc7z6[30] & O5xnv6)); +assign H3p7v6 = (~(V0myx6 & D1myx6)); +assign D1myx6 = (~(Txjyx6 & Zec7z6[31])); +assign V0myx6 = (L1myx6 & T1myx6); +assign T1myx6 = (~(H5xnv6 & P2xnv6)); +assign H5xnv6 = (~(O5xnv6 | Txjyx6)); +assign Txjyx6 = (!Rdtov6); +assign L1myx6 = (~(Byc7z6[31] & O5xnv6)); +assign O5xnv6 = (Opqov6 & Rdtov6); +assign Opqov6 = (!Hpqov6); +assign Hpqov6 = (P6d7z6[2] & Cg1ov6); +assign A3p7v6 = (~(B2myx6 & J2myx6)); +assign J2myx6 = (~(R2myx6 & Z2myx6)); +assign R2myx6 = (~(Jfonv6 | H3myx6)); +assign B2myx6 = (~(P3myx6 & Eqn7z6[0])); +assign T2p7v6 = (~(X3myx6 & F4myx6)); +assign F4myx6 = (~(N4myx6 & Z2myx6)); +assign N4myx6 = (~(V4myx6 | H3myx6)); +assign X3myx6 = (~(Eqn7z6[1] & P3myx6)); +assign M2p7v6 = (~(D5myx6 & L5myx6)); +assign L5myx6 = (~(Eqn7z6[2] & P3myx6)); +assign D5myx6 = (T5myx6 & B6myx6); +assign B6myx6 = (~(Z2myx6 & Jn1ov6)); +assign Z2myx6 = (~(P3myx6 | J6myx6)); +assign J6myx6 = (!HWRITED); +assign P3myx6 = (R6myx6 & Goonv6); +assign T5myx6 = (~(H3myx6 & HWRITED)); +assign HWRITED = (~(Z6myx6 & H7myx6)); +assign H7myx6 = (~(Hm1ov6 & Lhmov6)); +assign Z6myx6 = (P7myx6 & X7myx6); +assign X7myx6 = (~(I2yet6 & Jn1ov6)); +assign P7myx6 = (~(L3bdt6 & Vm1ov6)); +assign H3myx6 = (~(R6myx6 | HREADYD)); +assign R6myx6 = (~(Eqn7z6[0] & Qtixx6)); +assign Qtixx6 = (F8myx6 & I2yet6); +assign F8myx6 = (Qmonv6 & N8myx6); +assign N8myx6 = (~(V8myx6 & Y497z6)); +assign V8myx6 = (~(U8oet6 | Qboet6)); +assign F2p7v6 = (Wj1ov6 ? X0d7z6[31] : Dvc7z6[31]); +assign Y1p7v6 = (Wj1ov6 ? X0d7z6[30] : Dvc7z6[30]); +assign R1p7v6 = (~(D9myx6 & L9myx6)); +assign L9myx6 = (~(Gonov6 & K9d7x6)); +assign D9myx6 = (T9myx6 & Bamyx6); +assign Bamyx6 = (~(Jamyx6 & Ramyx6)); +assign Ramyx6 = (Zamyx6 & Hbmyx6); +assign Hbmyx6 = (~(D2piw6 & Bpnov6)); +assign D2piw6 = (!Qv0ov6); +assign Zamyx6 = (Pbmyx6 & Vs9ov6); +assign Pbmyx6 = (~(Xbmyx6 & Qu1ov6)); +assign Qu1ov6 = (Zo1ov6 | Yrc8v6); +assign Yrc8v6 = (~(Ufphw6 | Dwb7z6[4])); +assign Ufphw6 = (~(Ce9iw6 & Fcmyx6)); +assign Ce9iw6 = (Ncmyx6 & Vcmyx6); +assign Vcmyx6 = (Ddmyx6 & Ldmyx6); +assign Ddmyx6 = (Tdmyx6 & Bemyx6); +assign Bemyx6 = (!Qij7z6[3]); +assign Ncmyx6 = (X4eet6 & O5a7z6); +assign Zo1ov6 = (Jemyx6 & Remyx6); +assign Jemyx6 = (O5a7z6 & Hulov6); +assign Jamyx6 = (~(Zemyx6 | Hfmyx6)); +assign Hfmyx6 = (Jsoov6 ? Pfmyx6 : Kkadt6); +assign Jsoov6 = (~(Kboov6 & A4jhw6)); +assign Kboov6 = (!Hu0ov6); +assign Hu0ov6 = (~(Xfmyx6 & Cgc7z6[3])); +assign Xfmyx6 = (Cgc7z6[0] & Cgc7z6[1]); +assign Pfmyx6 = (IFLUSH & Iooov6); +assign Zemyx6 = (~(Vjddt6 & O4piw6)); +assign T9myx6 = (~(Fgmyx6 & Ngmyx6)); +assign Ngmyx6 = (Vgmyx6 & Jamnv6); +assign Vgmyx6 = (Vs9ov6 & Pj1ov6); +assign Fgmyx6 = (~(A9mnv6 | Ierov6)); +assign Ierov6 = (!Rihov6); +assign K1p7v6 = (Wj1ov6 ? X0d7z6[2] : Dvc7z6[2]); +assign D1p7v6 = (Wj1ov6 ? X0d7z6[3] : Dvc7z6[3]); +assign W0p7v6 = (Wj1ov6 ? X0d7z6[4] : Dvc7z6[4]); +assign P0p7v6 = (Wj1ov6 ? X0d7z6[5] : Dvc7z6[5]); +assign I0p7v6 = (Wj1ov6 ? X0d7z6[6] : Dvc7z6[6]); +assign B0p7v6 = (Wj1ov6 ? X0d7z6[7] : Dvc7z6[7]); +assign Uzo7v6 = (Wj1ov6 ? X0d7z6[8] : Dvc7z6[8]); +assign Nzo7v6 = (Wj1ov6 ? X0d7z6[9] : Dvc7z6[9]); +assign Gzo7v6 = (Wj1ov6 ? X0d7z6[10] : Dvc7z6[10]); +assign Zyo7v6 = (Wj1ov6 ? X0d7z6[11] : Dvc7z6[11]); +assign Syo7v6 = (Wj1ov6 ? X0d7z6[12] : Dvc7z6[12]); +assign Lyo7v6 = (Wj1ov6 ? X0d7z6[13] : Dvc7z6[13]); +assign Eyo7v6 = (Wj1ov6 ? X0d7z6[14] : Dvc7z6[14]); +assign Xxo7v6 = (Wj1ov6 ? X0d7z6[15] : Dvc7z6[15]); +assign Qxo7v6 = (Wj1ov6 ? X0d7z6[16] : Dvc7z6[16]); +assign Jxo7v6 = (Wj1ov6 ? X0d7z6[17] : Dvc7z6[17]); +assign Cxo7v6 = (Wj1ov6 ? X0d7z6[18] : Dvc7z6[18]); +assign Vwo7v6 = (Wj1ov6 ? X0d7z6[19] : Dvc7z6[19]); +assign Owo7v6 = (Wj1ov6 ? X0d7z6[20] : Dvc7z6[20]); +assign Hwo7v6 = (Wj1ov6 ? X0d7z6[21] : Dvc7z6[21]); +assign Awo7v6 = (Wj1ov6 ? X0d7z6[22] : Dvc7z6[22]); +assign Tvo7v6 = (Wj1ov6 ? X0d7z6[23] : Dvc7z6[23]); +assign Mvo7v6 = (Wj1ov6 ? X0d7z6[24] : Dvc7z6[24]); +assign Fvo7v6 = (Wj1ov6 ? X0d7z6[25] : Dvc7z6[25]); +assign Yuo7v6 = (Wj1ov6 ? X0d7z6[26] : Dvc7z6[26]); +assign Ruo7v6 = (Wj1ov6 ? X0d7z6[27] : Dvc7z6[27]); +assign Kuo7v6 = (Wj1ov6 ? X0d7z6[28] : Dvc7z6[28]); +assign Duo7v6 = (Wj1ov6 ? X0d7z6[29] : Dvc7z6[29]); +assign Wj1ov6 = (Dhmyx6 & F4xnv6); +assign Dhmyx6 = (Lh1ov6 & Lhmyx6); +assign Wto7v6 = (Thmyx6 | Bimyx6); +assign Bimyx6 = (Jimyx6 ? HPROTI[0] : J5n7z6[0]); +assign Thmyx6 = (R2qhw6 | Fe0iw6); +assign Pto7v6 = (Mr9ov6 ? Fopet6 : HPROTI[0]); +assign Ito7v6 = (~(Rimyx6 & Zimyx6)); +assign Zimyx6 = (Hjmyx6 & Pjmyx6); +assign Pjmyx6 = (~(Fe0iw6 & K2bdt6)); +assign Fe0iw6 = (Jimyx6 & Uclov6); +assign Hjmyx6 = (~(Xjmyx6 & HPROTI[1])); +assign Rimyx6 = (Fkmyx6 & Nkmyx6); +assign Nkmyx6 = (~(R2qhw6 & Hjqnv6)); +assign Fkmyx6 = (~(J5n7z6[1] & Y2qhw6)); +assign Bto7v6 = (Mr9ov6 ? Empet6 : HPROTI[1]); +assign Uso7v6 = (~(Vkmyx6 & Dlmyx6)); +assign Dlmyx6 = (~(J5n7z6[2] & Y2qhw6)); +assign Vkmyx6 = (Llmyx6 & Tlmyx6); +assign Tlmyx6 = (~(Xjmyx6 & Bmmyx6)); +assign Llmyx6 = (~(R2qhw6 & Yhqnv6)); +assign Nso7v6 = (Mr9ov6 ? Dkpet6 : Bmmyx6); +assign Bmmyx6 = (~(Jmmyx6 & Rmmyx6)); +assign Rmmyx6 = (~(Zmmyx6 & Hnmyx6)); +assign Zmmyx6 = (Pnmyx6 & Xnmyx6); +assign Pnmyx6 = (~(Fomyx6 & Nomyx6)); +assign Nomyx6 = (Vomyx6 & Dpmyx6); +assign Dpmyx6 = (Lpmyx6 & Tpmyx6); +assign Lpmyx6 = (Bqmyx6 & Jqmyx6); +assign Vomyx6 = (Rqmyx6 & Zqmyx6); +assign Fomyx6 = (Hrmyx6 & Prmyx6); +assign Prmyx6 = (Xrmyx6 & Fsmyx6); +assign Xrmyx6 = (Nsmyx6 & Vsmyx6); +assign Hrmyx6 = (Bkkiw6 & Dtmyx6); +assign Jmmyx6 = (~(Ltmyx6 & Ttmyx6)); +assign Ttmyx6 = (~(Bumyx6 & Jumyx6)); +assign Jumyx6 = (~(Rumyx6 & Zumyx6)); +assign Bumyx6 = (Xvmyx6 ? Pvmyx6 : Hvmyx6); +assign Gso7v6 = (~(Fwmyx6 & Nwmyx6)); +assign Nwmyx6 = (~(J5n7z6[3] & Y2qhw6)); +assign Fwmyx6 = (Vwmyx6 & Dxmyx6); +assign Dxmyx6 = (~(Xjmyx6 & Lxmyx6)); +assign Vwmyx6 = (~(R2qhw6 & Pgqnv6)); +assign Zro7v6 = (Mr9ov6 ? Cipet6 : Lxmyx6); +assign Lxmyx6 = (~(Txmyx6 & Bymyx6)); +assign Bymyx6 = (~(Ltmyx6 & Jymyx6)); +assign Jymyx6 = (~(Rymyx6 & Zymyx6)); +assign Rymyx6 = (Xvmyx6 & Hzmyx6); +assign Hzmyx6 = (~(Pzmyx6 & Xzmyx6)); +assign Pzmyx6 = (Pvmyx6 & F0nyx6); +assign Txmyx6 = (~(Hnmyx6 & N0nyx6)); +assign Sro7v6 = (~(V0nyx6 & D1nyx6)); +assign D1nyx6 = (~(W2n7z6[0] & Y2qhw6)); +assign V0nyx6 = (L1nyx6 & T1nyx6); +assign T1nyx6 = (~(Xjmyx6 & B2nyx6)); +assign L1nyx6 = (~(R2qhw6 & Gfqnv6)); +assign Lro7v6 = (Mr9ov6 ? Bgpet6 : B2nyx6); +assign B2nyx6 = (~(J2nyx6 & R2nyx6)); +assign R2nyx6 = (~(Z2nyx6 & Ltmyx6)); +assign Z2nyx6 = (Xvmyx6 ? H3nyx6 : Zumyx6); +assign H3nyx6 = (P3nyx6 & Xzmyx6); +assign P3nyx6 = (~(F0nyx6 | Zymyx6)); +assign J2nyx6 = (X3nyx6 | Xnmyx6); +assign Ero7v6 = (~(F4nyx6 & N4nyx6)); +assign N4nyx6 = (~(W2n7z6[1] & Y2qhw6)); +assign F4nyx6 = (V4nyx6 & D5nyx6); +assign D5nyx6 = (~(Xjmyx6 & L5nyx6)); +assign Xjmyx6 = (Jimyx6 & Yq9ov6); +assign V4nyx6 = (~(R2qhw6 & Qdqnv6)); +assign R2qhw6 = (Jimyx6 & Fbqnv6); +assign Fbqnv6 = (~(T5nyx6 & B6nyx6)); +assign Jimyx6 = (!Y2qhw6); +assign Y2qhw6 = (~(J6nyx6 & X02iw6)); +assign X02iw6 = (~(R6nyx6 & Z6nyx6)); +assign Z6nyx6 = (~(H7nyx6 | Wwonv6)); +assign R6nyx6 = (P7nyx6 & X7nyx6); +assign X7nyx6 = (~(F8nyx6 & Bjhxx6)); +assign F8nyx6 = (Ven7z6[2] & Osixx6); +assign P7nyx6 = (~(N8nyx6 & Yjonv6)); +assign N8nyx6 = (~(V8nyx6 & D9nyx6)); +assign D9nyx6 = (B6nyx6 & L9nyx6); +assign V8nyx6 = (T9nyx6 & Banyx6); +assign J6nyx6 = (~(N0qhw6 & Janyx6)); +assign Janyx6 = (~(Ranyx6 & V1eiw6)); +assign V1eiw6 = (S12iw6 ^ N22iw6); +assign Ranyx6 = (A4qhw6 & O1eiw6); +assign N0qhw6 = (~(Zanyx6 & Hbnyx6)); +assign Hbnyx6 = (S12iw6 & O1eiw6); +assign S12iw6 = (~(Pbnyx6 & Xbnyx6)); +assign Xbnyx6 = (~(Fcnyx6 | Wwonv6)); +assign Wwonv6 = (Yjonv6 & Yq9ov6); +assign Yq9ov6 = (~(Ncnyx6 & Vcnyx6)); +assign Vcnyx6 = (~(Woyet6 & T8gxx6)); +assign Fcnyx6 = (~(En9ov6 | Ddnyx6)); +assign Pbnyx6 = (Ldnyx6 & Tdnyx6); +assign Tdnyx6 = (Cakiw6 | Benyx6); +assign Zanyx6 = (J2eiw6 & N22iw6); +assign N22iw6 = (~(Jenyx6 & Renyx6)); +assign Renyx6 = (Zenyx6 & Ddnyx6); +assign Zenyx6 = (~(Bjhxx6 | Djonv6)); +assign Jenyx6 = (Ldnyx6 & Hfnyx6); +assign Hfnyx6 = (~(Enonv6 & Yjonv6)); +assign Ldnyx6 = (Pfnyx6 & Xfnyx6); +assign Xfnyx6 = (~(Fgnyx6 & Ngnyx6)); +assign Fgnyx6 = (Vgnyx6 & Yjonv6); +assign Pfnyx6 = (Luixx6 & Dhnyx6); +assign J2eiw6 = (!A4qhw6); +assign A4qhw6 = (~(Lhnyx6 & Thnyx6)); +assign Thnyx6 = (Binyx6 & Luixx6); +assign Binyx6 = (Dhnyx6 & Jinyx6); +assign Lhnyx6 = (Rinyx6 & Zinyx6); +assign Zinyx6 = (~(Yjonv6 & Hjnyx6)); +assign Hjnyx6 = (~(Pjnyx6 & Ncnyx6)); +assign Ncnyx6 = (~(Xjnyx6 & T5nyx6)); +assign Pjnyx6 = (B6nyx6 & Fknyx6); +assign B6nyx6 = (~(Nknyx6 & Vknyx6)); +assign Vknyx6 = (~(Xjnyx6 | Woyet6)); +assign Xjnyx6 = (!Wp9ov6); +assign Nknyx6 = (Hryet6 & T8gxx6); +assign T8gxx6 = (Dlnyx6 & T5nyx6); +assign Dlnyx6 = (L9nyx6 & En9ov6); +assign Rinyx6 = (~(Rxonv6 & Vudiw6)); +assign Vudiw6 = (!L9nyx6); +assign Rxonv6 = (!Ddnyx6); +assign Ddnyx6 = (~(Uclov6 & Yjonv6)); +assign Yjonv6 = (~(Llnyx6 & Tlnyx6)); +assign Tlnyx6 = (Bjhxx6 | Znn7z6[0]); +assign Bjhxx6 = (Znn7z6[1] & Ozixx6); +assign Llnyx6 = (~(Qakiw6 & Rxixx6)); +assign Uclov6 = (T5nyx6 & Bmnyx6); +assign Bmnyx6 = (~(En9ov6 & L9nyx6)); +assign L9nyx6 = (~(Jmnyx6 & Rmnyx6)); +assign Rmnyx6 = (~(V4myx6 & Zn9ov6)); +assign Jmnyx6 = (~(Zmnyx6 | Go9ov6)); +assign T5nyx6 = (Banyx6 & Xm9ov6); +assign Banyx6 = (Vgnyx6 & Fknyx6); +assign Fknyx6 = (!Enonv6); +assign Enonv6 = (Hnnyx6 & Vgnyx6); +assign Hnnyx6 = (Pnnyx6 & Xm9ov6); +assign Xm9ov6 = (!Ngnyx6); +assign Pnnyx6 = (~(Uvixx6 & Qm9ov6)); +assign Qm9ov6 = (~(Xnnyx6 & Rj9ov6)); +assign Vgnyx6 = (Nvixx6 & No9ov6); +assign No9ov6 = (~(Noonv6 & P6u6x6)); +assign Noonv6 = (Dkm7z6[1] & Zuixx6); +assign Nvixx6 = (~(Fonyx6 & Dkm7z6[0])); +assign Fonyx6 = (P6u6x6 & Goonv6); +assign Xqo7v6 = (Mr9ov6 ? Aepet6 : L5nyx6); +assign L5nyx6 = (~(Nonyx6 & Vonyx6)); +assign Vonyx6 = (~(Dpnyx6 & Lpnyx6)); +assign Lpnyx6 = (Bkfnv6 & Zn3nv6); +assign Dpnyx6 = (Njfnv6 & Hnmyx6); +assign Nonyx6 = (~(Tpnyx6 & Ltmyx6)); +assign Tpnyx6 = (Bqnyx6 & Jqnyx6); +assign Jqnyx6 = (~(Rqnyx6 & Zqnyx6)); +assign Zqnyx6 = (Hrnyx6 & Prnyx6); +assign Prnyx6 = (Xrnyx6 & Fsnyx6); +assign Fsnyx6 = (~(Nsnyx6 & Hwk7z6[16])); +assign Xrnyx6 = (Vsnyx6 & Dtnyx6); +assign Dtnyx6 = (~(Xzmyx6 & Rumyx6)); +assign Vsnyx6 = (~(Ltnyx6 & Zlk7z6[16])); +assign Hrnyx6 = (Ttnyx6 & Bunyx6); +assign Bunyx6 = (~(Junyx6 & P6l7z6[16])); +assign Ttnyx6 = (~(Runyx6 & Xgl7z6[16])); +assign Rqnyx6 = (Zunyx6 & Hvnyx6); +assign Hvnyx6 = (Pvnyx6 & Xvnyx6); +assign Xvnyx6 = (~(Fwnyx6 & Frl7z6[16])); +assign Pvnyx6 = (~(Nwnyx6 & N1m7z6[16])); +assign Zunyx6 = (Vwnyx6 & Dxnyx6); +assign Dxnyx6 = (~(Lxnyx6 & Rbk7z6[16])); +assign Vwnyx6 = (~(Txnyx6 & Vbm7z6[16])); +assign Bqnyx6 = (~(Bynyx6 & Pvmyx6)); +assign Pvmyx6 = (Jynyx6 & Rynyx6); +assign Rynyx6 = (Zynyx6 & Hznyx6); +assign Hznyx6 = (Pznyx6 & Xznyx6); +assign Xznyx6 = (~(Nwnyx6 & N1m7z6[14])); +assign Pznyx6 = (~(Lxnyx6 & Rbk7z6[14])); +assign Zynyx6 = (F0oyx6 & N0oyx6); +assign N0oyx6 = (~(Junyx6 & P6l7z6[14])); +assign F0oyx6 = (~(Nsnyx6 & Hwk7z6[14])); +assign Jynyx6 = (V0oyx6 & D1oyx6); +assign D1oyx6 = (L1oyx6 & T1oyx6); +assign T1oyx6 = (~(Fwnyx6 & Frl7z6[14])); +assign L1oyx6 = (~(Ltnyx6 & Zlk7z6[14])); +assign V0oyx6 = (B2oyx6 & J2oyx6); +assign J2oyx6 = (~(Txnyx6 & Vbm7z6[14])); +assign B2oyx6 = (~(Runyx6 & Xgl7z6[14])); +assign Bynyx6 = (Rumyx6 & Zumyx6); +assign Zumyx6 = (!Xzmyx6); +assign Xzmyx6 = (R2oyx6 & Z2oyx6); +assign Z2oyx6 = (H3oyx6 & P3oyx6); +assign P3oyx6 = (X3oyx6 & F4oyx6); +assign F4oyx6 = (~(Runyx6 & Xgl7z6[18])); +assign X3oyx6 = (~(Lxnyx6 & Rbk7z6[18])); +assign H3oyx6 = (N4oyx6 & V4oyx6); +assign V4oyx6 = (~(Junyx6 & P6l7z6[18])); +assign N4oyx6 = (~(Nsnyx6 & Hwk7z6[18])); +assign R2oyx6 = (D5oyx6 & L5oyx6); +assign L5oyx6 = (T5oyx6 & B6oyx6); +assign B6oyx6 = (~(Txnyx6 & Vbm7z6[18])); +assign T5oyx6 = (~(Nwnyx6 & N1m7z6[18])); +assign D5oyx6 = (J6oyx6 & R6oyx6); +assign R6oyx6 = (~(Fwnyx6 & Frl7z6[18])); +assign J6oyx6 = (~(Ltnyx6 & Zlk7z6[18])); +assign Rumyx6 = (Z6oyx6 & Zymyx6); +assign Zymyx6 = (H7oyx6 & P7oyx6); +assign P7oyx6 = (X7oyx6 & F8oyx6); +assign F8oyx6 = (N8oyx6 & V8oyx6); +assign V8oyx6 = (~(Nwnyx6 & N1m7z6[15])); +assign N8oyx6 = (~(Lxnyx6 & Rbk7z6[15])); +assign X7oyx6 = (D9oyx6 & L9oyx6); +assign L9oyx6 = (~(Junyx6 & P6l7z6[15])); +assign D9oyx6 = (~(Nsnyx6 & Hwk7z6[15])); +assign H7oyx6 = (T9oyx6 & Baoyx6); +assign Baoyx6 = (Jaoyx6 & Raoyx6); +assign Raoyx6 = (~(Fwnyx6 & Frl7z6[15])); +assign Jaoyx6 = (~(Ltnyx6 & Zlk7z6[15])); +assign T9oyx6 = (Zaoyx6 & Hboyx6); +assign Hboyx6 = (~(Txnyx6 & Vbm7z6[15])); +assign Zaoyx6 = (~(Runyx6 & Xgl7z6[15])); +assign Z6oyx6 = (Xvmyx6 & Hvmyx6); +assign Hvmyx6 = (!F0nyx6); +assign F0nyx6 = (~(Pboyx6 & Xboyx6)); +assign Xboyx6 = (Fcoyx6 & Ncoyx6); +assign Ncoyx6 = (Vcoyx6 & Ddoyx6); +assign Ddoyx6 = (~(Nwnyx6 & N1m7z6[17])); +assign Vcoyx6 = (~(Lxnyx6 & Rbk7z6[17])); +assign Fcoyx6 = (Ldoyx6 & Tdoyx6); +assign Tdoyx6 = (~(Junyx6 & P6l7z6[17])); +assign Ldoyx6 = (~(Nsnyx6 & Hwk7z6[17])); +assign Pboyx6 = (Beoyx6 & Jeoyx6); +assign Jeoyx6 = (Reoyx6 & Zeoyx6); +assign Zeoyx6 = (~(Fwnyx6 & Frl7z6[17])); +assign Reoyx6 = (~(Ltnyx6 & Zlk7z6[17])); +assign Beoyx6 = (Hfoyx6 & Pfoyx6); +assign Pfoyx6 = (~(Txnyx6 & Vbm7z6[17])); +assign Hfoyx6 = (~(Runyx6 & Xgl7z6[17])); +assign Xvmyx6 = (Xfoyx6 & Fgoyx6); +assign Fgoyx6 = (Ngoyx6 & Vgoyx6); +assign Vgoyx6 = (Dhoyx6 & Lhoyx6); +assign Lhoyx6 = (~(Runyx6 & Xgl7z6[19])); +assign Dhoyx6 = (~(Lxnyx6 & Rbk7z6[19])); +assign Ngoyx6 = (Thoyx6 & Bioyx6); +assign Bioyx6 = (~(Junyx6 & P6l7z6[19])); +assign Thoyx6 = (~(Nsnyx6 & Hwk7z6[19])); +assign Xfoyx6 = (Jioyx6 & Rioyx6); +assign Rioyx6 = (Zioyx6 & Hjoyx6); +assign Hjoyx6 = (~(Txnyx6 & Vbm7z6[19])); +assign Zioyx6 = (~(Nwnyx6 & N1m7z6[19])); +assign Jioyx6 = (Pjoyx6 & Xjoyx6); +assign Xjoyx6 = (~(Fwnyx6 & Frl7z6[19])); +assign Pjoyx6 = (~(Ltnyx6 & Zlk7z6[19])); +assign Qqo7v6 = (~(Fkoyx6 & Nkoyx6)); +assign Nkoyx6 = (~(Jexmz6[0] & K94iw6)); +assign Fkoyx6 = (Vkoyx6 & Dloyx6); +assign Dloyx6 = (~(Lloyx6 & Td9ov6)); +assign Td9ov6 = (~(Tloyx6 & Bmoyx6)); +assign Bmoyx6 = (Jmoyx6 & Rmoyx6); +assign Rmoyx6 = (~(Zmoyx6 & Orwnv6)); +assign Orwnv6 = (~(Hnoyx6 & Pnoyx6)); +assign Pnoyx6 = (~(Xnoyx6 & Uea7z6)); +assign Uea7z6 = (~(Fooyx6 & Nooyx6)); +assign Nooyx6 = (~(HRDATAD[0] & Qln7z6[0])); +assign Fooyx6 = (~(HRDATAS[0] & Qln7z6[1])); +assign Hnoyx6 = (Vooyx6 & Dpoyx6); +assign Dpoyx6 = (~(Lpoyx6 & Tronv6)); +assign Tronv6 = (Euonv6 | Zuonv6); +assign Zuonv6 = (~(S7n7z6[1] | S7n7z6[0])); +assign Euonv6 = (!Evadt6); +assign Vooyx6 = (~(Tim7z6[0] & Tpoyx6)); +assign Jmoyx6 = (Bqoyx6 | Vrwnv6); +assign Vrwnv6 = (Jqoyx6 & Rqoyx6); +assign Rqoyx6 = (Zqoyx6 & Hroyx6); +assign Hroyx6 = (Proyx6 & Xroyx6); +assign Xroyx6 = (~(Fsoyx6 & Nsoyx6)); +assign Fsoyx6 = (Klo7z6[5] & Vsoyx6); +assign Vsoyx6 = (~(Dtoyx6 & Ltoyx6)); +assign Ltoyx6 = (Ttoyx6 & Buoyx6); +assign Buoyx6 = (Juoyx6 & Ruoyx6); +assign Ruoyx6 = (~(Hyj7z6[0] & Rbk7z6[0])); +assign Juoyx6 = (~(Hyj7z6[1] & Zlk7z6[0])); +assign Ttoyx6 = (Zuoyx6 & Hvoyx6); +assign Hvoyx6 = (~(Hyj7z6[2] & Hwk7z6[0])); +assign Zuoyx6 = (~(Hyj7z6[3] & P6l7z6[0])); +assign Dtoyx6 = (Pvoyx6 & Xvoyx6); +assign Xvoyx6 = (Fwoyx6 & Nwoyx6); +assign Nwoyx6 = (~(Hyj7z6[4] & Xgl7z6[0])); +assign Fwoyx6 = (~(Hyj7z6[5] & Frl7z6[0])); +assign Pvoyx6 = (Vwoyx6 & Dxoyx6); +assign Dxoyx6 = (~(Hyj7z6[6] & N1m7z6[0])); +assign Vwoyx6 = (~(Hyj7z6[7] & Vbm7z6[0])); +assign Proyx6 = (Lxoyx6 & Txoyx6); +assign Lxoyx6 = (Byoyx6 | Jyoyx6); +assign Jyoyx6 = (Ti2nz6[2] ? Zyoyx6 : Ryoyx6); +assign Ryoyx6 = (~(Hzoyx6 & Ti2nz6[0])); +assign Hzoyx6 = (~(Pzoyx6 | Ti2nz6[3])); +assign Pzoyx6 = (!Xzoyx6); +assign Byoyx6 = (~(Ti2nz6[1] & F0pyx6)); +assign Zqoyx6 = (N0pyx6 & V0pyx6); +assign V0pyx6 = (~(D1pyx6 & L1pyx6)); +assign L1pyx6 = (~(T1pyx6 & B2pyx6)); +assign B2pyx6 = (J2pyx6 & R2pyx6); +assign R2pyx6 = (Z2pyx6 & H3pyx6); +assign H3pyx6 = (P3pyx6 & X3pyx6); +assign X3pyx6 = (F4pyx6 | N4pyx6); +assign F4pyx6 = (~(V4pyx6 & Gthiw6)); +assign P3pyx6 = (D5pyx6 & L5pyx6); +assign D5pyx6 = (~(T5pyx6 & B6pyx6)); +assign T5pyx6 = (J6pyx6 & R6pyx6); +assign J6pyx6 = (~(Z6pyx6 & H7pyx6)); +assign H7pyx6 = (~(P7pyx6 & X7pyx6)); +assign X7pyx6 = (F8pyx6 & Xfymz6[9]); +assign F8pyx6 = (~(Xfymz6[10] | Xfymz6[11])); +assign P7pyx6 = (N8pyx6 & Xfymz6[8]); +assign Z6pyx6 = (~(V8pyx6 & At67v6)); +assign V8pyx6 = (D9pyx6 & L9pyx6); +assign Z2pyx6 = (T9pyx6 & Bapyx6); +assign Bapyx6 = (~(Jdymz6[0] & Sjd8x6)); +assign T9pyx6 = (~(Zt67v6 & Xm4xx6)); +assign J2pyx6 = (Japyx6 & Rapyx6); +assign Rapyx6 = (Zapyx6 & Hbpyx6); +assign Hbpyx6 = (~(Zshiw6 & N8pyx6)); +assign Zapyx6 = (~(Pbpyx6 & Xbpyx6)); +assign Japyx6 = (Fcpyx6 & Ncpyx6); +assign Ncpyx6 = (~(Gh77z6 & Vcpyx6)); +assign Fcpyx6 = (~(Biymz6[0] & Ddpyx6)); +assign T1pyx6 = (Ldpyx6 & Tdpyx6); +assign Tdpyx6 = (Bepyx6 & Jepyx6); +assign Jepyx6 = (Repyx6 & Zepyx6); +assign Zepyx6 = (~(Ojymz6[0] & Hfpyx6)); +assign Repyx6 = (Pfpyx6 & Xfpyx6); +assign Xfpyx6 = (~(Fgpyx6 & Wy67v6)); +assign Pfpyx6 = (~(Sgymz6[0] & Ngpyx6)); +assign Bepyx6 = (Vgpyx6 & Dhpyx6); +assign Dhpyx6 = (~(Kmymz6[0] & Lhpyx6)); +assign Vgpyx6 = (~(Unymz6[0] & Thpyx6)); +assign Ldpyx6 = (Bipyx6 & Jipyx6); +assign Jipyx6 = (Ripyx6 & Zipyx6); +assign Zipyx6 = (~(Fjd7v6 & Hjpyx6)); +assign Bipyx6 = (Pjpyx6 & Xjpyx6); +assign N0pyx6 = (Fkpyx6 & Nkpyx6); +assign Nkpyx6 = (~(Vkpyx6 & Dlpyx6)); +assign Vkpyx6 = (~(Llpyx6 & Tlpyx6)); +assign Fkpyx6 = (~(Bmpyx6 & Jmpyx6)); +assign Jmpyx6 = (~(Rmpyx6 & Zmpyx6)); +assign Zmpyx6 = (Hnpyx6 & Pnpyx6); +assign Pnpyx6 = (Xnpyx6 & Fopyx6); +assign Xnpyx6 = (Nopyx6 & Vopyx6); +assign Hnpyx6 = (Dppyx6 & Lppyx6); +assign Lppyx6 = (~(Tppyx6 & Bqpyx6)); +assign Bqpyx6 = (~(Jqpyx6 & Rqpyx6)); +assign Rqpyx6 = (~(Yvhiw6 & Zqpyx6)); +assign Zqpyx6 = (Txhyx6 | W197z6); +assign Jqpyx6 = (~(Hrpyx6 & Prpyx6)); +assign Prpyx6 = (!Y097z6); +assign Dppyx6 = (Xrpyx6 & Fspyx6); +assign Fspyx6 = (~(Nspyx6 & Iy1nz6[0])); +assign Xrpyx6 = (~(Jke7v6 & Vspyx6)); +assign Vspyx6 = (~(Dtpyx6 & Ltpyx6)); +assign Ltpyx6 = (~(Nl1nz6[0] & Mwhiw6)); +assign Dtpyx6 = (~(Eee7v6 & Hiiiw6)); +assign Rmpyx6 = (Ttpyx6 & Bupyx6); +assign Bupyx6 = (Jupyx6 & Rupyx6); +assign Rupyx6 = (~(Oo1nz6[0] & Ri3yx6)); +assign Jupyx6 = (Zupyx6 & Hvpyx6); +assign Hvpyx6 = (~(Jw1nz6[0] & Pvpyx6)); +assign Zupyx6 = (~(Pk1nz6[0] & Xvpyx6)); +assign Ttpyx6 = (Fwpyx6 & Nwpyx6); +assign Fwpyx6 = (Vwpyx6 & Dxpyx6); +assign Dxpyx6 = (~(Au1nz6[0] & N82yx6)); +assign Jqoyx6 = (Lxpyx6 & Txpyx6); +assign Txpyx6 = (Bypyx6 & Jypyx6); +assign Jypyx6 = (~(Klo7z6[1] & Rypyx6)); +assign Rypyx6 = (~(Zypyx6 & Hzpyx6)); +assign Hzpyx6 = (Pzpyx6 & Xzpyx6); +assign Xzpyx6 = (F0qyx6 & N0qyx6); +assign N0qyx6 = (V0qyx6 & D1qyx6); +assign D1qyx6 = (~(Kfq7z6[0] & S7hiw6)); +assign V0qyx6 = (L1qyx6 & T1qyx6); +assign L1qyx6 = (~(B2qyx6 & J2qyx6)); +assign F0qyx6 = (R2qyx6 & Z2qyx6); +assign Z2qyx6 = (~(Hhq7z6[0] & Ydliw6)); +assign R2qyx6 = (H3qyx6 & P3qyx6); +assign P3qyx6 = (~(Tbq7z6[0] & Qsgiw6)); +assign H3qyx6 = (~(Pdq7z6[0] & Oka8x6)); +assign Pzpyx6 = (X3qyx6 & F4qyx6); +assign F4qyx6 = (N4qyx6 & V4qyx6); +assign V4qyx6 = (~(D5qyx6 & Bqp7z6[0])); +assign N4qyx6 = (L5qyx6 & T5qyx6); +assign T5qyx6 = (~(Cjq7z6[0] & Cza8x6)); +assign L5qyx6 = (~(Qb4ft6 & B6qyx6)); +assign X3qyx6 = (J6qyx6 & R6qyx6); +assign R6qyx6 = (~(Z6qyx6 & Gop7z6[0])); +assign J6qyx6 = (~(H7qyx6 & Rip7z6[0])); +assign Zypyx6 = (P7qyx6 & X7qyx6); +assign X7qyx6 = (F8qyx6 & N8qyx6); +assign N8qyx6 = (V8qyx6 & D9qyx6); +assign D9qyx6 = (~(L9qyx6 & E6p7z6[0])); +assign V8qyx6 = (T9qyx6 & Baqyx6); +assign Baqyx6 = (~(P3a8x6 & Hmp7z6[0])); +assign T9qyx6 = (~(Ua9ov6 & Sgp7z6[0])); +assign F8qyx6 = (Jaqyx6 & Raqyx6); +assign Raqyx6 = (~(Zaqyx6 & G0q7z6[0])); +assign Jaqyx6 = (Hbqyx6 & Pbqyx6); +assign Pbqyx6 = (~(Xbqyx6 & Q8p7z6[0])); +assign Hbqyx6 = (~(Fcqyx6 & B2q7z6[0])); +assign P7qyx6 = (Ncqyx6 & Vcqyx6); +assign Vcqyx6 = (Ddqyx6 & Ldqyx6); +assign Ldqyx6 = (~(Tdqyx6 & Mkp7z6[0])); +assign Ddqyx6 = (Beqyx6 & Jeqyx6); +assign Jeqyx6 = (~(Nao7x6 & I7p7z6[0])); +assign Beqyx6 = (~(Q0a8x6 & Hyp7z6[0])); +assign Ncqyx6 = (Reqyx6 & Zeqyx6); +assign Zeqyx6 = (~(U9p7z6[0] & Hfqyx6)); +assign Bypyx6 = (Pfqyx6 & Xfqyx6); +assign Xfqyx6 = (~(Fgqyx6 & Ngqyx6)); +assign Fgqyx6 = (~(Vgqyx6 & Dhqyx6)); +assign Dhqyx6 = (Lhqyx6 & Thqyx6); +assign Thqyx6 = (Biqyx6 & Jiqyx6); +assign Jiqyx6 = (Riqyx6 & Ziqyx6); +assign Ziqyx6 = (Hjqyx6 & Pjqyx6); +assign Riqyx6 = (Xjqyx6 & Fkqyx6); +assign Xjqyx6 = (~(Nkqyx6 & Vkqyx6)); +assign Nkqyx6 = (Dlqyx6 & Llqyx6); +assign Llqyx6 = (~(Tlqyx6 & Bmqyx6)); +assign Bmqyx6 = (~(Jmqyx6 & Doadt6)); +assign Biqyx6 = (Rmqyx6 & Zmqyx6); +assign Zmqyx6 = (~(Aqadt6 & Hnqyx6)); +assign Rmqyx6 = (Pnqyx6 & Xnqyx6); +assign Xnqyx6 = (~(Foqyx6 & A8cet6)); +assign Foqyx6 = (Noqyx6 & Voqyx6); +assign Pnqyx6 = (~(Bxi7z6[0] & Dpqyx6)); +assign Lhqyx6 = (Lpqyx6 & Tpqyx6); +assign Tpqyx6 = (Bqqyx6 & Jqqyx6); +assign Jqqyx6 = (~(H1j7z6[0] & Rqqyx6)); +assign Bqqyx6 = (Zqqyx6 & Hrqyx6); +assign Hrqyx6 = (~(Prqyx6 & Z3j7z6[0])); +assign Zqqyx6 = (~(A0j7z6[0] & Xrqyx6)); +assign Lpqyx6 = (Fsqyx6 & Nsqyx6); +assign Nsqyx6 = (~(Bzi7z6[0] & Vsqyx6)); +assign Fsqyx6 = (Dtqyx6 & Ltqyx6); +assign Ltqyx6 = (~(Zodet6 & Ttqyx6)); +assign Dtqyx6 = (~(Buqyx6 & A0fet6)); +assign Vgqyx6 = (Juqyx6 & Ruqyx6); +assign Ruqyx6 = (Zuqyx6 & Hvqyx6); +assign Hvqyx6 = (Pvqyx6 & Xvqyx6); +assign Xvqyx6 = (~(Dri7z6[0] & Fwqyx6)); +assign Pvqyx6 = (Nwqyx6 & Vwqyx6); +assign Vwqyx6 = (~(Dxqyx6 & Nob7z6[0])); +assign Nwqyx6 = (~(Wui7z6[0] & Lxqyx6)); +assign Zuqyx6 = (Txqyx6 & Byqyx6); +assign Byqyx6 = (~(Jyqyx6 & G5j7z6[0])); +assign Txqyx6 = (Ryqyx6 & Zyqyx6); +assign Zyqyx6 = (~(Bwi7z6[0] & Hzqyx6)); +assign Ryqyx6 = (~(Pzqyx6 & G5j7z6[32])); +assign Juqyx6 = (Xzqyx6 & F0ryx6); +assign F0ryx6 = (N0ryx6 & V0ryx6); +assign V0ryx6 = (~(D1ryx6 & Ohj7z6[32])); +assign N0ryx6 = (L1ryx6 & T1ryx6); +assign T1ryx6 = (~(B2ryx6 & M6j7z6[32])); +assign L1ryx6 = (~(J2ryx6 & M6j7z6[0])); +assign Xzqyx6 = (R2ryx6 & Z2ryx6); +assign R2ryx6 = (H3ryx6 & P3ryx6); +assign P3ryx6 = (~(X3ryx6 & Ohj7z6[0])); +assign H3ryx6 = (~(STCALIB[0] & F4ryx6)); +assign Pfqyx6 = (~(Klo7z6[2] & N4ryx6)); +assign N4ryx6 = (~(V4ryx6 & D5ryx6)); +assign D5ryx6 = (L5ryx6 & T5ryx6); +assign T5ryx6 = (B6ryx6 & J6ryx6); +assign J6ryx6 = (~(Q3kiw6 & Zy1ft6)); +assign B6ryx6 = (~(R6ryx6 | Z6ryx6)); +assign L5ryx6 = (H7ryx6 & P7ryx6); +assign P7ryx6 = (~(Nn1ft6 & K7kiw6)); +assign H7ryx6 = (X7ryx6 & F8ryx6); +assign F8ryx6 = (~(Tk1ft6 & M8kiw6)); +assign X7ryx6 = (~(Jj1ft6 & H9kiw6)); +assign V4ryx6 = (N8ryx6 & V8ryx6); +assign V8ryx6 = (D9ryx6 & L9ryx6); +assign L9ryx6 = (~(Rr1ft6 & U5kiw6)); +assign D9ryx6 = (T9ryx6 & Baryx6); +assign Baryx6 = (~(Xo1ft6 & W6kiw6)); +assign T9ryx6 = (~(Dm1ft6 & Y7kiw6)); +assign N8ryx6 = (Jaryx6 & Raryx6); +assign Raryx6 = (~(Iv1ft6 & G5kiw6)); +assign Jaryx6 = (~(Hq1ft6 & I6kiw6)); +assign Lxpyx6 = (Zaryx6 & Hbryx6); +assign Zaryx6 = (Pbryx6 & Xbryx6); +assign Xbryx6 = (~(Klo7z6[0] & Fcryx6)); +assign Fcryx6 = (~(Ncryx6 & Vcryx6)); +assign Vcryx6 = (Ddryx6 & Ldryx6); +assign Ldryx6 = (~(Tdryx6 | Beryx6)); +assign Ddryx6 = (Jeryx6 & Reryx6); +assign Reryx6 = (~(Zeryx6 & Hfryx6)); +assign Zeryx6 = (Pfryx6 ? Ies7z6[0] : Rj27v6); +assign Jeryx6 = (~(Xfryx6 & Fgryx6)); +assign Xfryx6 = (~(Ngryx6 & Vgryx6)); +assign Vgryx6 = (~(Dhryx6 & Lhryx6)); +assign Lhryx6 = (~(Thryx6 | Zfs7z6[11])); +assign Thryx6 = (Zfs7z6[7] | Zfs7z6[9]); +assign Dhryx6 = (~(I96ft6 | Zfs7z6[10])); +assign Ngryx6 = (~(Biryx6 & Jiryx6)); +assign Jiryx6 = (~(Riryx6 | Zqbyx6)); +assign Zqbyx6 = (Eee7v6 ? Ziryx6 : Lxhyx6); +assign Lxhyx6 = (Hae7v6 ? Pjryx6 : Hjryx6); +assign Pjryx6 = (~(Xjryx6 & Gl5ov6)); +assign Xjryx6 = (~(Pp1nz6[1] & Pp1nz6[0])); +assign Hjryx6 = (Fkryx6 & Nkryx6); +assign Nkryx6 = (~(Juhyx6 ^ Pb3yx6)); +assign Pb3yx6 = (~(Xb3yx6 ^ Hi1nz6[0])); +assign Juhyx6 = (Ruhyx6 ^ U81nz6[0]); +assign Fkryx6 = (Vkryx6 & Dlryx6); +assign Dlryx6 = (U81nz6[2] ^ Hi1nz6[2]); +assign Vkryx6 = (Ruhyx6 ^ Xb3yx6); +assign Xb3yx6 = (Y9h7v6 ^ Hi1nz6[2]); +assign Ruhyx6 = (U81nz6[1] ^ U81nz6[2]); +assign Biryx6 = (Llryx6 & Mm27v6); +assign Ncryx6 = (Tlryx6 & Bmryx6); +assign Bmryx6 = (Jmryx6 & Rmryx6); +assign Rmryx6 = (~(Scs7z6[0] & Zmryx6)); +assign Jmryx6 = (Hnryx6 | Riryx6); +assign Tlryx6 = (Pnryx6 & Xnryx6); +assign Xnryx6 = (~(Foryx6 & Ig27v6)); +assign Pbryx6 = (~(Noryx6 & Phget6)); +assign Tloyx6 = (Voryx6 & Dpryx6); +assign Dpryx6 = (~(HRDATAS[0] & Ad47x6)); +assign Voryx6 = (~(HRDATAD[0] & Mc47x6)); +assign Vkoyx6 = (~(Lpryx6 & I8r7x6)); +assign Jqo7v6 = (~(Tpryx6 & Bqryx6)); +assign Bqryx6 = (~(Jexmz6[1] & K94iw6)); +assign Tpryx6 = (Jqryx6 & Rqryx6); +assign Rqryx6 = (~(Lloyx6 & Ex77x6)); +assign Ex77x6 = (~(Zqryx6 & Hrryx6)); +assign Hrryx6 = (Prryx6 & Xrryx6); +assign Xrryx6 = (Bqoyx6 | Dud7x6); +assign Dud7x6 = (Fsryx6 & Nsryx6); +assign Nsryx6 = (Vsryx6 & Dtryx6); +assign Dtryx6 = (Ltryx6 & Ttryx6); +assign Ttryx6 = (Buryx6 & Juryx6); +assign Juryx6 = (~(Ruryx6 & Nsoyx6)); +assign Ruryx6 = (Klo7z6[5] & Zuryx6); +assign Zuryx6 = (~(Hvryx6 & Pvryx6)); +assign Pvryx6 = (Xvryx6 & Fwryx6); +assign Fwryx6 = (Nwryx6 & Vwryx6); +assign Vwryx6 = (~(Hyj7z6[0] & Rbk7z6[1])); +assign Nwryx6 = (~(Hyj7z6[1] & Zlk7z6[1])); +assign Xvryx6 = (Dxryx6 & Lxryx6); +assign Lxryx6 = (~(Hyj7z6[2] & Hwk7z6[1])); +assign Dxryx6 = (~(Hyj7z6[3] & P6l7z6[1])); +assign Hvryx6 = (Txryx6 & Byryx6); +assign Byryx6 = (Jyryx6 & Ryryx6); +assign Ryryx6 = (~(Hyj7z6[4] & Xgl7z6[1])); +assign Jyryx6 = (~(Hyj7z6[5] & Frl7z6[1])); +assign Txryx6 = (Zyryx6 & Hzryx6); +assign Hzryx6 = (~(Hyj7z6[6] & N1m7z6[1])); +assign Zyryx6 = (~(Hyj7z6[7] & Vbm7z6[1])); +assign Buryx6 = (~(Pzryx6 & Tdryx6)); +assign Tdryx6 = (Xzryx6 & F0syx6); +assign F0syx6 = (N0syx6 & Zfs7z6[8]); +assign N0syx6 = (V0syx6 & D1syx6); +assign Xzryx6 = (Or27v6 & Llryx6); +assign Pzryx6 = (Klo7z6[0] & L1syx6); +assign Ltryx6 = (T1syx6 & B2syx6); +assign B2syx6 = (~(J2syx6 & R6ryx6)); +assign J2syx6 = (Klo7z6[2] & R2syx6); +assign T1syx6 = (~(Bmpyx6 & Z2syx6)); +assign Z2syx6 = (~(H3syx6 & P3syx6)); +assign P3syx6 = (X3syx6 & F4syx6); +assign F4syx6 = (N4syx6 & V4syx6); +assign N4syx6 = (~(Nspyx6 & Iy1nz6[1])); +assign X3syx6 = (D5syx6 & L5syx6); +assign L5syx6 = (~(Jke7v6 & T5syx6)); +assign T5syx6 = (~(B6syx6 & J6syx6)); +assign J6syx6 = (~(Nl1nz6[1] & Mwhiw6)); +assign Mwhiw6 = (R6syx6 & Z6syx6); +assign Z6syx6 = (~(J02nz6[11] | J02nz6[9])); +assign R6syx6 = (Mhiiw6 & H7syx6); +assign Mhiiw6 = (P7syx6 & X7syx6); +assign X7syx6 = (F8syx6 & J02nz6[6]); +assign F8syx6 = (~(J02nz6[3] | J02nz6[8])); +assign P7syx6 = (N8syx6 & Yvhiw6); +assign B6syx6 = (~(Hae7v6 & Hiiiw6)); +assign Hiiiw6 = (V8syx6 & D9syx6); +assign D9syx6 = (L9syx6 & T9syx6); +assign T9syx6 = (!J02nz6[7]); +assign V8syx6 = (Basyx6 & Imiiw6); +assign D5syx6 = (Jasyx6 | B63yx6); +assign H3syx6 = (Rasyx6 & Nwpyx6); +assign Rasyx6 = (Zasyx6 & Hbsyx6); +assign Hbsyx6 = (~(Jw1nz6[1] & Pvpyx6)); +assign Zasyx6 = (~(Pk1nz6[1] & Xvpyx6)); +assign Vsryx6 = (Pbsyx6 & Xbsyx6); +assign Xbsyx6 = (Fcsyx6 & Ncsyx6); +assign Ncsyx6 = (~(Vcsyx6 & Dlpyx6)); +assign Vcsyx6 = (~(Ddsyx6 & Ldsyx6)); +assign Fcsyx6 = (~(Tdsyx6 & Ngqyx6)); +assign Tdsyx6 = (~(Besyx6 & Jesyx6)); +assign Jesyx6 = (Resyx6 & Zesyx6); +assign Zesyx6 = (Hfsyx6 & Pfsyx6); +assign Pfsyx6 = (Xfsyx6 & Fgsyx6); +assign Fgsyx6 = (~(Ngsyx6 & Vgsyx6)); +assign Vgsyx6 = (Jmqyx6 & O7adt6); +assign Ngsyx6 = (Vkqyx6 & Dlqyx6); +assign Xfsyx6 = (Dhsyx6 & Pjqyx6); +assign Hfsyx6 = (Lhsyx6 & Thsyx6); +assign Thsyx6 = (~(Bxi7z6[1] & Dpqyx6)); +assign Lhsyx6 = (Bisyx6 & Jisyx6); +assign Jisyx6 = (~(Risyx6 & Byi7z6[1])); +assign Risyx6 = (Zisyx6 & Hjsyx6); +assign Bisyx6 = (~(Voqyx6 & Pjsyx6)); +assign Pjsyx6 = (~(Xjsyx6 & Fksyx6)); +assign Fksyx6 = (~(Nksyx6 & D5cet6)); +assign Xjsyx6 = (~(E9cet6 & Noqyx6)); +assign Resyx6 = (Vksyx6 & Dlsyx6); +assign Dlsyx6 = (Llsyx6 & Tlsyx6); +assign Tlsyx6 = (~(A0j7z6[1] & Xrqyx6)); +assign Llsyx6 = (Bmsyx6 & Jmsyx6); +assign Jmsyx6 = (~(O6cet6 & Hnqyx6)); +assign Bmsyx6 = (~(Prqyx6 & Z3j7z6[1])); +assign Vksyx6 = (Rmsyx6 & Zmsyx6); +assign Zmsyx6 = (~(Bzi7z6[1] & Vsqyx6)); +assign Rmsyx6 = (Hnsyx6 & Pnsyx6); +assign Pnsyx6 = (~(H1j7z6[1] & Rqqyx6)); +assign Hnsyx6 = (~(Buqyx6 & Opeet6)); +assign Besyx6 = (Xnsyx6 & Fosyx6); +assign Fosyx6 = (Nosyx6 & Vosyx6); +assign Vosyx6 = (Dpsyx6 & Lpsyx6); +assign Lpsyx6 = (~(Dri7z6[1] & Fwqyx6)); +assign Dpsyx6 = (Tpsyx6 & Bqsyx6); +assign Bqsyx6 = (~(Dxqyx6 & Nob7z6[1])); +assign Tpsyx6 = (~(Wui7z6[1] & Lxqyx6)); +assign Nosyx6 = (Jqsyx6 & Rqsyx6); +assign Rqsyx6 = (~(Jyqyx6 & G5j7z6[1])); +assign Jqsyx6 = (Zqsyx6 & Hrsyx6); +assign Hrsyx6 = (~(Bwi7z6[1] & Hzqyx6)); +assign Zqsyx6 = (~(Pzqyx6 & G5j7z6[33])); +assign Xnsyx6 = (Prsyx6 & Xrsyx6); +assign Xrsyx6 = (Fssyx6 & Nssyx6); +assign Nssyx6 = (~(D1ryx6 & Ohj7z6[33])); +assign Fssyx6 = (Vssyx6 & Dtsyx6); +assign Dtsyx6 = (~(B2ryx6 & M6j7z6[33])); +assign Vssyx6 = (~(J2ryx6 & M6j7z6[1])); +assign Prsyx6 = (Ltsyx6 & Ttsyx6); +assign Ttsyx6 = (~(X3ryx6 & Ohj7z6[1])); +assign Ltsyx6 = (~(STCALIB[1] & F4ryx6)); +assign Pbsyx6 = (Busyx6 & Jusyx6); +assign Jusyx6 = (~(D1pyx6 & Rusyx6)); +assign Rusyx6 = (~(Zusyx6 & Hvsyx6)); +assign Hvsyx6 = (Pvsyx6 & Xvsyx6); +assign Xvsyx6 = (Fwsyx6 & Nwsyx6); +assign Nwsyx6 = (~(Vwsyx6 & Xu67v6)); +assign Vwsyx6 = (Zshiw6 & N8pyx6); +assign Fwsyx6 = (Dxsyx6 & Qid8x6); +assign Dxsyx6 = (~(Lxsyx6 & Txsyx6)); +assign Txsyx6 = (Xm4xx6 & Bysyx6); +assign Bysyx6 = (!W197z6); +assign Lxsyx6 = (C477v6 & X14xx6); +assign X14xx6 = (!Jysyx6); +assign Pvsyx6 = (Rysyx6 & Zysyx6); +assign Zysyx6 = (~(Biymz6[1] & Ddpyx6)); +assign Rysyx6 = (Hzsyx6 & Pzsyx6); +assign Pzsyx6 = (~(Jdymz6[1] & Sjd8x6)); +assign Hzsyx6 = (~(Wd77z6 & Vcpyx6)); +assign Zusyx6 = (Xzsyx6 & F0tyx6); +assign F0tyx6 = (N0tyx6 & V0tyx6); +assign V0tyx6 = (~(Kmymz6[1] & Lhpyx6)); +assign N0tyx6 = (D1tyx6 & L1tyx6); +assign L1tyx6 = (~(Sgymz6[1] & Ngpyx6)); +assign D1tyx6 = (~(Ojymz6[1] & Hfpyx6)); +assign Xzsyx6 = (T1tyx6 & Xjpyx6); +assign T1tyx6 = (B2tyx6 & J2tyx6); +assign J2tyx6 = (~(Unymz6[1] & Thpyx6)); +assign B2tyx6 = (~(Hcymz6[1] & Hjpyx6)); +assign Busyx6 = (~(Klo7z6[1] & R2tyx6)); +assign R2tyx6 = (~(Z2tyx6 & H3tyx6)); +assign H3tyx6 = (P3tyx6 & X3tyx6); +assign X3tyx6 = (F4tyx6 & N4tyx6); +assign N4tyx6 = (V4tyx6 & D5tyx6); +assign D5tyx6 = (~(Pdq7z6[1] & Oka8x6)); +assign V4tyx6 = (L5tyx6 & T5tyx6); +assign T5tyx6 = (~(Kfq7z6[1] & S7hiw6)); +assign L5tyx6 = (~(Tbq7z6[1] & Qsgiw6)); +assign F4tyx6 = (B6tyx6 & J6tyx6); +assign J6tyx6 = (~(R6tyx6 & Z6tyx6)); +assign B6tyx6 = (H7tyx6 & P7tyx6); +assign P7tyx6 = (~(Hhq7z6[1] & Ydliw6)); +assign H7tyx6 = (~(Cjq7z6[1] & Cza8x6)); +assign P3tyx6 = (X7tyx6 & F8tyx6); +assign F8tyx6 = (N8tyx6 & V8tyx6); +assign V8tyx6 = (~(D5qyx6 & Bqp7z6[1])); +assign N8tyx6 = (D9tyx6 & L9tyx6); +assign L9tyx6 = (~(T9tyx6 & Aw77z6)); +assign D9tyx6 = (~(Y7q7z6[0] & B6qyx6)); +assign X7tyx6 = (Batyx6 & Jatyx6); +assign Jatyx6 = (~(Z6qyx6 & Gop7z6[1])); +assign Batyx6 = (~(H7qyx6 & Rip7z6[1])); +assign Z2tyx6 = (Ratyx6 & Zatyx6); +assign Zatyx6 = (Hbtyx6 & Pbtyx6); +assign Pbtyx6 = (Xbtyx6 & Fctyx6); +assign Fctyx6 = (~(L9qyx6 & E6p7z6[1])); +assign Xbtyx6 = (Nctyx6 & Vctyx6); +assign Vctyx6 = (~(Hmp7z6[1] & P3a8x6)); +assign Nctyx6 = (~(Sgp7z6[1] & Ua9ov6)); +assign Hbtyx6 = (Ddtyx6 & Ldtyx6); +assign Ldtyx6 = (~(Zaqyx6 & G0q7z6[1])); +assign Ddtyx6 = (Tdtyx6 & Betyx6); +assign Betyx6 = (~(Xbqyx6 & Q8p7z6[1])); +assign Tdtyx6 = (~(Fcqyx6 & B2q7z6[1])); +assign Ratyx6 = (Jetyx6 & Retyx6); +assign Retyx6 = (Zetyx6 & Hftyx6); +assign Hftyx6 = (~(Tdqyx6 & Mkp7z6[1])); +assign Zetyx6 = (Pftyx6 & Xftyx6); +assign Xftyx6 = (~(I7p7z6[1] & Nao7x6)); +assign Pftyx6 = (~(Hyp7z6[1] & Q0a8x6)); +assign Jetyx6 = (Fgtyx6 & Ngtyx6); +assign Ngtyx6 = (~(U9p7z6[1] & Hfqyx6)); +assign Fsryx6 = (Vgtyx6 & Dhtyx6); +assign Dhtyx6 = (Lhtyx6 & Thtyx6); +assign Thtyx6 = (Bityx6 & Jityx6); +assign Jityx6 = (~(Weget6 & Noryx6)); +assign Bityx6 = (~(Scs7z6[1] & Rityx6)); +assign Lhtyx6 = (Zityx6 & Hjtyx6); +assign Hjtyx6 = (~(Oo1nz6[1] & Pjtyx6)); +assign Zityx6 = (~(Au1nz6[1] & Xjtyx6)); +assign Vgtyx6 = (Fktyx6 & Nktyx6); +assign Nktyx6 = (Vktyx6 & Dltyx6); +assign Dltyx6 = (~(Ci6ft6 & Lltyx6)); +assign Vktyx6 = (~(Ies7z6[1] & Tltyx6)); +assign Fktyx6 = (Bmtyx6 & Hbryx6); +assign Hbryx6 = (Jmtyx6 & Rmtyx6); +assign Rmtyx6 = (~(F0pyx6 & Zmtyx6)); +assign Zmtyx6 = (~(Hntyx6 & Pntyx6)); +assign Hntyx6 = (Xntyx6 & Fotyx6); +assign Jmtyx6 = (Notyx6 & Votyx6); +assign Notyx6 = (~(Hyj7z6[3] & Dlpyx6)); +assign Prryx6 = (~(Zmoyx6 & Kud7x6)); +assign Kud7x6 = (~(Dptyx6 & Lptyx6)); +assign Lptyx6 = (~(Xnoyx6 & Mea7z6)); +assign Mea7z6 = (~(Tptyx6 & Bqtyx6)); +assign Bqtyx6 = (~(HRDATAD[1] & Qln7z6[0])); +assign Tptyx6 = (~(HRDATAS[1] & Qln7z6[1])); +assign Dptyx6 = (~(Tim7z6[1] & Tpoyx6)); +assign Zqryx6 = (Jqtyx6 & Rqtyx6); +assign Rqtyx6 = (~(HRDATAS[1] & Ad47x6)); +assign Jqtyx6 = (~(HRDATAD[1] & Mc47x6)); +assign Jqryx6 = (~(Lpryx6 & L7q7x6)); +assign Cqo7v6 = (~(Zqtyx6 & Hrtyx6)); +assign Hrtyx6 = (~(Jexmz6[2] & K94iw6)); +assign Zqtyx6 = (Prtyx6 & Xrtyx6); +assign Xrtyx6 = (~(Lloyx6 & Icfov6)); +assign Icfov6 = (~(Fstyx6 & Nstyx6)); +assign Nstyx6 = (Vstyx6 & Dttyx6); +assign Dttyx6 = (Bqoyx6 | Xxd7x6); +assign Xxd7x6 = (Lttyx6 & Tttyx6); +assign Tttyx6 = (Butyx6 & Jutyx6); +assign Jutyx6 = (Rutyx6 & Zutyx6); +assign Zutyx6 = (Hvtyx6 & Pvtyx6); +assign Pvtyx6 = (~(Xvtyx6 & Nsoyx6)); +assign Xvtyx6 = (Klo7z6[5] & Fwtyx6); +assign Fwtyx6 = (~(Nwtyx6 & Vwtyx6)); +assign Vwtyx6 = (Dxtyx6 & Lxtyx6); +assign Lxtyx6 = (Txtyx6 & Bytyx6); +assign Bytyx6 = (~(Hyj7z6[0] & Rbk7z6[2])); +assign Txtyx6 = (~(Hyj7z6[1] & Zlk7z6[2])); +assign Dxtyx6 = (Jytyx6 & Rytyx6); +assign Rytyx6 = (~(Hyj7z6[2] & Hwk7z6[2])); +assign Jytyx6 = (~(Hyj7z6[3] & P6l7z6[2])); +assign Nwtyx6 = (Zytyx6 & Hztyx6); +assign Hztyx6 = (Pztyx6 & Xztyx6); +assign Xztyx6 = (~(Hyj7z6[4] & Xgl7z6[2])); +assign Pztyx6 = (~(Hyj7z6[5] & Frl7z6[2])); +assign Zytyx6 = (F0uyx6 & N0uyx6); +assign N0uyx6 = (~(Hyj7z6[6] & N1m7z6[2])); +assign F0uyx6 = (~(Hyj7z6[7] & Vbm7z6[2])); +assign Hvtyx6 = (V0uyx6 & Votyx6); +assign Votyx6 = (~(Hyj7z6[7] & Dlpyx6)); +assign V0uyx6 = (D1uyx6 | L1uyx6); +assign L1uyx6 = (Ti2nz6[2] ? T1uyx6 : Zyoyx6); +assign T1uyx6 = (~(Xzoyx6 & B2uyx6)); +assign Zyoyx6 = (!J2uyx6); +assign D1uyx6 = (~(F0pyx6 & R2uyx6)); +assign Rutyx6 = (Z2uyx6 & H3uyx6); +assign H3uyx6 = (~(P3uyx6 & Pk1nz6[2])); +assign Z2uyx6 = (~(Bmpyx6 & X3uyx6)); +assign X3uyx6 = (~(F4uyx6 & N4uyx6)); +assign N4uyx6 = (~(Jw1nz6[2] & Pvpyx6)); +assign F4uyx6 = (V4uyx6 & D5uyx6); +assign V4uyx6 = (~(L5uyx6 & Imiiw6)); +assign L5uyx6 = (~(Fopyx6 & T5uyx6)); +assign Butyx6 = (B6uyx6 & J6uyx6); +assign J6uyx6 = (R6uyx6 & Z6uyx6); +assign Z6uyx6 = (~(Noryx6 & Apget6)); +assign Noryx6 = (H7uyx6 & P7uyx6); +assign P7uyx6 = (Dtj7z6[4] & M59iw6); +assign M59iw6 = (!Dtj7z6[3]); +assign H7uyx6 = (Dtj7z6[2] & X7uyx6); +assign R6uyx6 = (F8uyx6 & N8uyx6); +assign N8uyx6 = (~(V8uyx6 & Dlpyx6)); +assign Dlpyx6 = (~(D9uyx6 & L9uyx6)); +assign L9uyx6 = (~(Q9eiw6 & X7uyx6)); +assign D9uyx6 = (~(T9uyx6 & Klo7z6[5])); +assign V8uyx6 = (~(Bauyx6 & Jauyx6)); +assign Jauyx6 = (!Hyj7z6[4]); +assign Bauyx6 = (Llpyx6 & Ddsyx6); +assign F8uyx6 = (Rauyx6 | Zauyx6); +assign B6uyx6 = (Hbuyx6 & Pbuyx6); +assign Pbuyx6 = (~(Klo7z6[2] & Xbuyx6)); +assign Xbuyx6 = (~(Fcuyx6 & Ncuyx6)); +assign Ncuyx6 = (Vcuyx6 & Dduyx6); +assign Dduyx6 = (Lduyx6 & Tduyx6); +assign Tduyx6 = (~(Nqo7z6[0] & M8kiw6)); +assign Lduyx6 = (Beuyx6 & Jeuyx6); +assign Jeuyx6 = (~(Reuyx6 & Zeuyx6)); +assign Zeuyx6 = (Hfuyx6 & Upeiw6); +assign Reuyx6 = (Pfuyx6 & Z4p7z6[5]); +assign Beuyx6 = (~(R6ryx6 & Z4p7z6[2])); +assign Vcuyx6 = (Xfuyx6 & Fguyx6); +assign Fguyx6 = (~(Fpo7z6[0] & H9kiw6)); +assign Xfuyx6 = (~(Ouo7z6[0] & K7kiw6)); +assign Fcuyx6 = (Nguyx6 & Vguyx6); +assign Vguyx6 = (Dhuyx6 & Lhuyx6); +assign Lhuyx6 = (~(T2p7z6[2] & U5kiw6)); +assign Dhuyx6 = (Thuyx6 & Biuyx6); +assign Biuyx6 = (~(Hxo7z6[0] & W6kiw6)); +assign Thuyx6 = (~(Vro7z6[0] & Y7kiw6)); +assign Nguyx6 = (Jiuyx6 & Riuyx6); +assign Riuyx6 = (~(W3p7z6[2] & G5kiw6)); +assign Jiuyx6 = (~(A0p7z6[0] & I6kiw6)); +assign Hbuyx6 = (~(D1pyx6 & Ziuyx6)); +assign Ziuyx6 = (~(Hjuyx6 & Pjuyx6)); +assign Pjuyx6 = (Xjuyx6 & Fkuyx6); +assign Fkuyx6 = (Nkuyx6 & Vkuyx6); +assign Vkuyx6 = (~(Jdymz6[2] & Sjd8x6)); +assign Nkuyx6 = (Dluyx6 & Lluyx6); +assign Lluyx6 = (~(Tluyx6 & Bmuyx6)); +assign Tluyx6 = (Gthiw6 & L9pyx6); +assign Dluyx6 = (~(Xbpyx6 & Jmuyx6)); +assign Jmuyx6 = (D9pyx6 | Pbpyx6); +assign Xjuyx6 = (Rmuyx6 & Zmuyx6); +assign Zmuyx6 = (~(Tn77v6 & Xm4xx6)); +assign Rmuyx6 = (~(Ee77z6 & Vcpyx6)); +assign Hjuyx6 = (Hnuyx6 & Pnuyx6); +assign Pnuyx6 = (Xnuyx6 & Fouyx6); +assign Fouyx6 = (~(Biymz6[2] & Ddpyx6)); +assign Xnuyx6 = (~(Kmymz6[2] & Lhpyx6)); +assign Hnuyx6 = (Nouyx6 & Vouyx6); +assign Vouyx6 = (~(Hcymz6[2] & Hjpyx6)); +assign Lttyx6 = (Dpuyx6 & Lpuyx6); +assign Lpuyx6 = (Tpuyx6 & Bquyx6); +assign Bquyx6 = (Jquyx6 & Rquyx6); +assign Rquyx6 = (~(Beryx6 & Klo7z6[0])); +assign Beryx6 = (Zquyx6 & Hruyx6); +assign Hruyx6 = (~(Pruyx6 | Or27v6)); +assign Zquyx6 = (~(Xruyx6 | Hnryx6)); +assign Jquyx6 = (Fsuyx6 & Nsuyx6); +assign Nsuyx6 = (~(Vsuyx6 & Ngqyx6)); +assign Vsuyx6 = (~(Dtuyx6 & Ltuyx6)); +assign Ltuyx6 = (Ttuyx6 & Buuyx6); +assign Buuyx6 = (Juuyx6 & Ruuyx6); +assign Ruuyx6 = (Zuuyx6 & Hvuyx6); +assign Hvuyx6 = (~(Voqyx6 & Pvuyx6)); +assign Pvuyx6 = (~(Xvuyx6 & Fwuyx6)); +assign Fwuyx6 = (~(U3cet6 & Nksyx6)); +assign Xvuyx6 = (Nwuyx6 & Vwuyx6); +assign Vwuyx6 = (~(Koaiw6 & Dxuyx6)); +assign Nwuyx6 = (Lxuyx6 | Axaiw6); +assign Zuuyx6 = (Txuyx6 & Fkqyx6); +assign Fkqyx6 = (~(Byuyx6 & Koaiw6)); +assign Byuyx6 = (Jyuyx6 & Ryuyx6); +assign Ryuyx6 = (~(Zyuyx6 & Hzuyx6)); +assign Txuyx6 = (~(Pzuyx6 & Xzuyx6)); +assign Pzuyx6 = (Dpadt6 & Vkqyx6); +assign Juuyx6 = (F0vyx6 & N0vyx6); +assign N0vyx6 = (~(Bxi7z6[2] & Dpqyx6)); +assign F0vyx6 = (~(A0j7z6[2] & Xrqyx6)); +assign Ttuyx6 = (V0vyx6 & D1vyx6); +assign D1vyx6 = (L1vyx6 & T1vyx6); +assign T1vyx6 = (~(H1j7z6[2] & Rqqyx6)); +assign L1vyx6 = (~(Ayeet6 & Buqyx6)); +assign V0vyx6 = (B2vyx6 & J2vyx6); +assign J2vyx6 = (~(Dxqyx6 & Nob7z6[2])); +assign B2vyx6 = (~(Wui7z6[2] & Lxqyx6)); +assign Dtuyx6 = (R2vyx6 & Z2vyx6); +assign Z2vyx6 = (H3vyx6 & P3vyx6); +assign P3vyx6 = (X3vyx6 & F4vyx6); +assign F4vyx6 = (~(Pzqyx6 & G5j7z6[34])); +assign X3vyx6 = (N4vyx6 & V4vyx6); +assign V4vyx6 = (~(Dri7z6[2] & Fwqyx6)); +assign N4vyx6 = (~(Bwi7z6[2] & Hzqyx6)); +assign H3vyx6 = (D5vyx6 & L5vyx6); +assign L5vyx6 = (~(Jyqyx6 & G5j7z6[2])); +assign D5vyx6 = (~(B2ryx6 & M6j7z6[34])); +assign R2vyx6 = (T5vyx6 & B6vyx6); +assign B6vyx6 = (J6vyx6 & R6vyx6); +assign R6vyx6 = (~(J2ryx6 & M6j7z6[2])); +assign J6vyx6 = (~(D1ryx6 & Ohj7z6[34])); +assign T5vyx6 = (Z6vyx6 & H7vyx6); +assign H7vyx6 = (~(X3ryx6 & Ohj7z6[2])); +assign Z6vyx6 = (~(STCALIB[2] & F4ryx6)); +assign Fsuyx6 = (~(Klo7z6[1] & P7vyx6)); +assign P7vyx6 = (~(X7vyx6 & F8vyx6)); +assign F8vyx6 = (N8vyx6 & V8vyx6); +assign V8vyx6 = (D9vyx6 & L9vyx6); +assign L9vyx6 = (T9vyx6 & Bavyx6); +assign Bavyx6 = (~(Kfq7z6[2] & S7hiw6)); +assign T9vyx6 = (Javyx6 & Ravyx6); +assign Javyx6 = (~(Zavyx6 & B2qyx6)); +assign Zavyx6 = (~(Zveiw6 | Hbvyx6)); +assign D9vyx6 = (Pbvyx6 & Xbvyx6); +assign Xbvyx6 = (~(Hhq7z6[2] & Ydliw6)); +assign Pbvyx6 = (Fcvyx6 & Ncvyx6); +assign Ncvyx6 = (~(Tbq7z6[2] & Qsgiw6)); +assign Fcvyx6 = (~(Pdq7z6[2] & Oka8x6)); +assign N8vyx6 = (Vcvyx6 & Ddvyx6); +assign Ddvyx6 = (Ldvyx6 & Tdvyx6); +assign Tdvyx6 = (~(Y7q7z6[1] & B6qyx6)); +assign Ldvyx6 = (Bevyx6 & Jevyx6); +assign Jevyx6 = (~(Cjq7z6[2] & Cza8x6)); +assign Bevyx6 = (~(T9tyx6 & Sv77z6)); +assign Vcvyx6 = (Revyx6 & Zevyx6); +assign Zevyx6 = (~(D5qyx6 & Bqp7z6[2])); +assign Revyx6 = (~(Z6qyx6 & Gop7z6[2])); +assign X7vyx6 = (Hfvyx6 & Pfvyx6); +assign Pfvyx6 = (Xfvyx6 & Fgvyx6); +assign Fgvyx6 = (Ngvyx6 & Vgvyx6); +assign Vgvyx6 = (~(Ua9ov6 & Sgp7z6[2])); +assign Ngvyx6 = (Dhvyx6 & Lhvyx6); +assign Lhvyx6 = (~(H7qyx6 & Rip7z6[2])); +assign Dhvyx6 = (~(P3a8x6 & Hmp7z6[2])); +assign Xfvyx6 = (Thvyx6 & Bivyx6); +assign Bivyx6 = (~(Fcqyx6 & B2q7z6[2])); +assign Thvyx6 = (Jivyx6 & Rivyx6); +assign Rivyx6 = (~(L9qyx6 & E6p7z6[2])); +assign Jivyx6 = (~(Xbqyx6 & Q8p7z6[2])); +assign Hfvyx6 = (Zivyx6 & Hjvyx6); +assign Hjvyx6 = (Pjvyx6 & Xjvyx6); +assign Xjvyx6 = (~(Q0a8x6 & Hyp7z6[2])); +assign Pjvyx6 = (Fkvyx6 & Nkvyx6); +assign Nkvyx6 = (~(Zaqyx6 & G0q7z6[2])); +assign Fkvyx6 = (~(Nao7x6 & I7p7z6[2])); +assign Zivyx6 = (Vkvyx6 & Dlvyx6); +assign Dlvyx6 = (~(Tdqyx6 & Mkp7z6[2])); +assign Vkvyx6 = (~(U9p7z6[2] & Hfqyx6)); +assign Tpuyx6 = (Llvyx6 & Tlvyx6); +assign Tlvyx6 = (~(Scs7z6[2] & Rityx6)); +assign Llvyx6 = (Txoyx6 | Bmvyx6); +assign Dpuyx6 = (Jmvyx6 & Rmvyx6); +assign Rmvyx6 = (Zmvyx6 & Hnvyx6); +assign Hnvyx6 = (~(Oo1nz6[2] & Pjtyx6)); +assign Zmvyx6 = (~(Au1nz6[2] & Xjtyx6)); +assign Jmvyx6 = (Pnvyx6 & Xnvyx6); +assign Xnvyx6 = (~(X66ft6 & Lltyx6)); +assign Pnvyx6 = (~(Ies7z6[2] & Tltyx6)); +assign Vstyx6 = (~(HRDATAS[2] & Ad47x6)); +assign Fstyx6 = (Fovyx6 & Novyx6); +assign Novyx6 = (~(HRDATAD[2] & Mc47x6)); +assign Fovyx6 = (~(Zmoyx6 & Eyd7x6)); +assign Eyd7x6 = (~(Vovyx6 & Dpvyx6)); +assign Dpvyx6 = (~(Xnoyx6 & Eea7z6)); +assign Eea7z6 = (~(Lpvyx6 & Tpvyx6)); +assign Tpvyx6 = (~(HRDATAD[2] & Qln7z6[0])); +assign Lpvyx6 = (~(HRDATAS[2] & Qln7z6[1])); +assign Vovyx6 = (~(Tim7z6[2] & Tpoyx6)); +assign Prtyx6 = (~(Lpryx6 & Vcq7x6)); +assign Vpo7v6 = (~(Bqvyx6 & Jqvyx6)); +assign Jqvyx6 = (~(Jexmz6[3] & K94iw6)); +assign Bqvyx6 = (Rqvyx6 & Zqvyx6); +assign Zqvyx6 = (~(Lloyx6 & Mmlov6)); +assign Mmlov6 = (~(Hrvyx6 & Prvyx6)); +assign Prvyx6 = (Xrvyx6 & Fsvyx6); +assign Fsvyx6 = (Bqoyx6 | K1e7x6); +assign K1e7x6 = (Nsvyx6 & Vsvyx6); +assign Vsvyx6 = (Dtvyx6 & Ltvyx6); +assign Ltvyx6 = (Ttvyx6 & Buvyx6); +assign Buvyx6 = (Juvyx6 & Ruvyx6); +assign Ruvyx6 = (~(Zuvyx6 & Nsoyx6)); +assign Zuvyx6 = (Klo7z6[5] & Hvvyx6); +assign Hvvyx6 = (~(Pvvyx6 & Xvvyx6)); +assign Xvvyx6 = (Fwvyx6 & Nwvyx6); +assign Nwvyx6 = (Vwvyx6 & Dxvyx6); +assign Dxvyx6 = (~(Hyj7z6[0] & Rbk7z6[3])); +assign Vwvyx6 = (~(Hyj7z6[1] & Zlk7z6[3])); +assign Fwvyx6 = (Lxvyx6 & Txvyx6); +assign Txvyx6 = (~(Hyj7z6[2] & Hwk7z6[3])); +assign Lxvyx6 = (~(Hyj7z6[3] & P6l7z6[3])); +assign Pvvyx6 = (Byvyx6 & Jyvyx6); +assign Jyvyx6 = (Ryvyx6 & Zyvyx6); +assign Zyvyx6 = (~(Hyj7z6[4] & Xgl7z6[3])); +assign Ryvyx6 = (~(Hyj7z6[5] & Frl7z6[3])); +assign Byvyx6 = (Hzvyx6 & Pzvyx6); +assign Pzvyx6 = (~(Hyj7z6[6] & N1m7z6[3])); +assign Hzvyx6 = (~(Hyj7z6[7] & Vbm7z6[3])); +assign Juvyx6 = (~(Bmpyx6 & Xzvyx6)); +assign Xzvyx6 = (~(F0wyx6 & N0wyx6)); +assign N0wyx6 = (V0wyx6 & D1wyx6); +assign D1wyx6 = (L1wyx6 & Nopyx6); +assign Nopyx6 = (~(T1wyx6 & J02nz6[5])); +assign T1wyx6 = (B2wyx6 & Imiiw6); +assign V0wyx6 = (J2wyx6 & R2wyx6); +assign R2wyx6 = (~(Nspyx6 & Gie7v6)); +assign Nspyx6 = (Z2wyx6 & Puhiw6); +assign J2wyx6 = (~(H3wyx6 & Rgiiw6)); +assign H3wyx6 = (Jke7v6 & Imiiw6); +assign F0wyx6 = (P3wyx6 & Nwpyx6); +assign Nwpyx6 = (X3wyx6 & F4wyx6); +assign F4wyx6 = (~(Z2wyx6 & Hrpyx6)); +assign X3wyx6 = (D5uyx6 & N4wyx6); +assign D5uyx6 = (~(Pvpyx6 & Imiiw6)); +assign Imiiw6 = (!J02nz6[2]); +assign P3wyx6 = (V4wyx6 & D5wyx6); +assign D5wyx6 = (~(Jw1nz6[3] & Pvpyx6)); +assign Pvpyx6 = (Pmiiw6 & Jke7v6); +assign Pmiiw6 = (N8syx6 & Basyx6); +assign Basyx6 = (L5wyx6 & T5wyx6); +assign T5wyx6 = (~(J02nz6[3] | J02nz6[6])); +assign L5wyx6 = (B6wyx6 & Thiiw6); +assign N8syx6 = (J02nz6[5] & J02nz6[7]); +assign V4wyx6 = (~(Pk1nz6[3] & Xvpyx6)); +assign Ttvyx6 = (J6wyx6 & R6wyx6); +assign R6wyx6 = (Txoyx6 | Z6wyx6); +assign J6wyx6 = (Rauyx6 | Hnryx6); +assign Rauyx6 = (~(H7wyx6 & Klo7z6[0])); +assign H7wyx6 = (~(Xruyx6 | Riryx6)); +assign Riryx6 = (!P7wyx6); +assign Dtvyx6 = (X7wyx6 & F8wyx6); +assign F8wyx6 = (~(Klo7z6[1] & N8wyx6)); +assign N8wyx6 = (~(V8wyx6 & D9wyx6)); +assign D9wyx6 = (L9wyx6 & T9wyx6); +assign T9wyx6 = (Bawyx6 & Jawyx6); +assign Jawyx6 = (Rawyx6 & Zawyx6); +assign Zawyx6 = (~(Pdq7z6[3] & Oka8x6)); +assign Rawyx6 = (Hbwyx6 & Pbwyx6); +assign Pbwyx6 = (~(Kfq7z6[3] & S7hiw6)); +assign Hbwyx6 = (~(Tbq7z6[3] & Qsgiw6)); +assign Bawyx6 = (Xbwyx6 & Fcwyx6); +assign Fcwyx6 = (~(T9tyx6 & Kv77z6)); +assign Xbwyx6 = (Ncwyx6 & Vcwyx6); +assign Vcwyx6 = (~(Hhq7z6[3] & Ydliw6)); +assign Ncwyx6 = (~(Cjq7z6[3] & Cza8x6)); +assign L9wyx6 = (Ddwyx6 & Ldwyx6); +assign Ldwyx6 = (Tdwyx6 & Bewyx6); +assign Bewyx6 = (~(Z6qyx6 & Gop7z6[3])); +assign Tdwyx6 = (Jewyx6 & Rewyx6); +assign Rewyx6 = (~(Y7q7z6[2] & B6qyx6)); +assign Jewyx6 = (~(D5qyx6 & Bqp7z6[3])); +assign Ddwyx6 = (Zewyx6 & Hfwyx6); +assign Hfwyx6 = (~(H7qyx6 & Rip7z6[3])); +assign Zewyx6 = (~(P3a8x6 & Hmp7z6[3])); +assign V8wyx6 = (Pfwyx6 & Xfwyx6); +assign Xfwyx6 = (Fgwyx6 & Ngwyx6); +assign Ngwyx6 = (Vgwyx6 & Dhwyx6); +assign Dhwyx6 = (~(Xbqyx6 & Q8p7z6[3])); +assign Vgwyx6 = (Lhwyx6 & Thwyx6); +assign Thwyx6 = (~(Ua9ov6 & Sgp7z6[3])); +assign Lhwyx6 = (~(L9qyx6 & E6p7z6[3])); +assign Fgwyx6 = (Biwyx6 & Jiwyx6); +assign Jiwyx6 = (~(Fcqyx6 & B2q7z6[3])); +assign Biwyx6 = (~(Zaqyx6 & G0q7z6[3])); +assign Pfwyx6 = (Riwyx6 & Ziwyx6); +assign Ziwyx6 = (Hjwyx6 & Pjwyx6); +assign Pjwyx6 = (~(Tdqyx6 & Mkp7z6[3])); +assign Hjwyx6 = (Xjwyx6 & Fkwyx6); +assign Fkwyx6 = (~(Nao7x6 & I7p7z6[3])); +assign Xjwyx6 = (~(Q0a8x6 & Hyp7z6[3])); +assign Riwyx6 = (Reqyx6 & Nkwyx6); +assign Nkwyx6 = (~(U9p7z6[3] & Hfqyx6)); +assign Reqyx6 = (Fgtyx6 & Vkwyx6); +assign Vkwyx6 = (~(B2qyx6 & R6tyx6)); +assign X7wyx6 = (Dlwyx6 & Llwyx6); +assign Llwyx6 = (~(Scs7z6[3] & Rityx6)); +assign Rityx6 = (Klo7z6[0] & Zmryx6); +assign Dlwyx6 = (~(Tlwyx6 & Ngqyx6)); +assign Tlwyx6 = (~(Bmwyx6 & Jmwyx6)); +assign Jmwyx6 = (Rmwyx6 & Zmwyx6); +assign Zmwyx6 = (Hnwyx6 & Pnwyx6); +assign Pnwyx6 = (Xnwyx6 & Fowyx6); +assign Fowyx6 = (~(Nowyx6 & Vveet6)); +assign Nowyx6 = (Buqyx6 & Cwadt6); +assign Xnwyx6 = (Vowyx6 & Pjqyx6); +assign Pjqyx6 = (~(Dpwyx6 & Jyuyx6)); +assign Vowyx6 = (~(Lpwyx6 & Koaiw6)); +assign Lpwyx6 = (Voqyx6 & Jyuyx6); +assign Hnwyx6 = (Tpwyx6 & Bqwyx6); +assign Bqwyx6 = (~(Bxi7z6[3] & Dpqyx6)); +assign Tpwyx6 = (~(Dradt6 & Hnqyx6)); +assign Rmwyx6 = (Jqwyx6 & Rqwyx6); +assign Rqwyx6 = (Zqwyx6 & Hrwyx6); +assign Hrwyx6 = (~(H1j7z6[3] & Rqqyx6)); +assign Zqwyx6 = (Prwyx6 & Xrwyx6); +assign Xrwyx6 = (~(Prqyx6 & Z3j7z6[3])); +assign Prwyx6 = (~(A0j7z6[3] & Xrqyx6)); +assign Jqwyx6 = (Fswyx6 & Nswyx6); +assign Nswyx6 = (~(Bzi7z6[3] & Vsqyx6)); +assign Fswyx6 = (~(Dxqyx6 & Nob7z6[3])); +assign Bmwyx6 = (Vswyx6 & Dtwyx6); +assign Dtwyx6 = (Ltwyx6 & Ttwyx6); +assign Ttwyx6 = (Buwyx6 & Juwyx6); +assign Juwyx6 = (~(Bwi7z6[3] & Hzqyx6)); +assign Buwyx6 = (Ruwyx6 & Zuwyx6); +assign Zuwyx6 = (~(Wui7z6[3] & Lxqyx6)); +assign Ruwyx6 = (~(Dri7z6[3] & Fwqyx6)); +assign Ltwyx6 = (Hvwyx6 & Pvwyx6); +assign Pvwyx6 = (~(Pzqyx6 & G5j7z6[35])); +assign Hvwyx6 = (~(Jyqyx6 & G5j7z6[3])); +assign Vswyx6 = (Xvwyx6 & Fwwyx6); +assign Fwwyx6 = (Nwwyx6 & Vwwyx6); +assign Vwwyx6 = (~(D1ryx6 & Ohj7z6[35])); +assign Nwwyx6 = (Dxwyx6 & Lxwyx6); +assign Lxwyx6 = (~(B2ryx6 & M6j7z6[35])); +assign Dxwyx6 = (~(J2ryx6 & M6j7z6[3])); +assign Xvwyx6 = (Txwyx6 & Bywyx6); +assign Bywyx6 = (~(X3ryx6 & Ohj7z6[3])); +assign Txwyx6 = (~(STCALIB[3] & F4ryx6)); +assign Nsvyx6 = (Jywyx6 & Rywyx6); +assign Rywyx6 = (Zywyx6 & Hzwyx6); +assign Hzwyx6 = (Pzwyx6 & Xzwyx6); +assign Xzwyx6 = (~(D1pyx6 & F0xyx6)); +assign F0xyx6 = (~(N0xyx6 & V0xyx6)); +assign V0xyx6 = (D1xyx6 & L1xyx6); +assign L1xyx6 = (T1xyx6 & B2xyx6); +assign B2xyx6 = (~(Jdymz6[3] & Sjd8x6)); +assign Sjd8x6 = (Zshiw6 & J2xyx6); +assign T1xyx6 = (R2xyx6 & L5pyx6); +assign D1xyx6 = (Z2xyx6 & H3xyx6); +assign H3xyx6 = (~(Gm77v6 & Xm4xx6)); +assign Xm4xx6 = (Gthiw6 & P3xyx6); +assign N0xyx6 = (X3xyx6 & F4xyx6); +assign F4xyx6 = (N4xyx6 & V4xyx6); +assign V4xyx6 = (~(Kmymz6[3] & Lhpyx6)); +assign N4xyx6 = (D5xyx6 & L5xyx6); +assign L5xyx6 = (~(Cf77z6 & Vcpyx6)); +assign D5xyx6 = (~(Biymz6[3] & Ddpyx6)); +assign X3xyx6 = (Nouyx6 & T5xyx6); +assign T5xyx6 = (~(Hcymz6[3] & Hjpyx6)); +assign Nouyx6 = (B6xyx6 & J6xyx6); +assign J6xyx6 = (R6xyx6 & Z6xyx6); +assign Z6xyx6 = (~(Lzqnv6 & Thpyx6)); +assign R6xyx6 = (~(Zcsnv6 & Ngpyx6)); +assign B6xyx6 = (Ripyx6 & H7xyx6); +assign H7xyx6 = (~(Eg4xx6 & Hfpyx6)); +assign Ripyx6 = (Qid8x6 & P7xyx6); +assign P7xyx6 = (~(Gthiw6 & Xbpyx6)); +assign Qid8x6 = (!Ljd8x6); +assign Ljd8x6 = (D9pyx6 & Zshiw6); +assign Pzwyx6 = (~(Klo7z6[2] & X7xyx6)); +assign X7xyx6 = (~(F8xyx6 & N8xyx6)); +assign N8xyx6 = (V8xyx6 & D9xyx6); +assign D9xyx6 = (L9xyx6 & T9xyx6); +assign T9xyx6 = (~(Nqo7z6[1] & M8kiw6)); +assign L9xyx6 = (Baxyx6 & Jaxyx6); +assign Baxyx6 = (~(R6ryx6 & Pfuyx6)); +assign V8xyx6 = (Raxyx6 & Zaxyx6); +assign Zaxyx6 = (~(Fpo7z6[1] & H9kiw6)); +assign Raxyx6 = (~(Ouo7z6[1] & K7kiw6)); +assign F8xyx6 = (Hbxyx6 & Pbxyx6); +assign Pbxyx6 = (Xbxyx6 & Fcxyx6); +assign Fcxyx6 = (~(T2p7z6[3] & U5kiw6)); +assign Xbxyx6 = (Ncxyx6 & Vcxyx6); +assign Vcxyx6 = (~(Hxo7z6[1] & W6kiw6)); +assign Ncxyx6 = (~(Vro7z6[1] & Y7kiw6)); +assign Hbxyx6 = (Ddxyx6 & Ldxyx6); +assign Ldxyx6 = (~(W3p7z6[3] & G5kiw6)); +assign Ddxyx6 = (~(A0p7z6[1] & I6kiw6)); +assign Zywyx6 = (Tdxyx6 & Bexyx6); +assign Bexyx6 = (~(Oo1nz6[3] & Pjtyx6)); +assign Tdxyx6 = (~(Au1nz6[3] & Xjtyx6)); +assign Jywyx6 = (Jexyx6 & Bmtyx6); +assign Bmtyx6 = (Rexyx6 & Zexyx6); +assign Zexyx6 = (Hfxyx6 | Txoyx6); +assign Txoyx6 = (~(Pfxyx6 & F0pyx6)); +assign Hfxyx6 = (R2uyx6 | Ti2nz6[2]); +assign Rexyx6 = (~(Xfxyx6 & Klo7z6[0])); +assign Jexyx6 = (Fgxyx6 & Ngxyx6); +assign Ngxyx6 = (~(Lltyx6 & D86ft6)); +assign Fgxyx6 = (~(Ies7z6[3] & Tltyx6)); +assign Xrvyx6 = (~(Zmoyx6 & R1e7x6)); +assign R1e7x6 = (~(Vgxyx6 & Dhxyx6)); +assign Dhxyx6 = (~(Xnoyx6 & Wda7z6)); +assign Wda7z6 = (~(Lhxyx6 & Thxyx6)); +assign Thxyx6 = (~(HRDATAD[3] & Qln7z6[0])); +assign Lhxyx6 = (~(HRDATAS[3] & Qln7z6[1])); +assign Vgxyx6 = (~(Tim7z6[3] & Tpoyx6)); +assign Hrvyx6 = (Bixyx6 & Jixyx6); +assign Jixyx6 = (~(HRDATAS[3] & Ad47x6)); +assign Bixyx6 = (~(HRDATAD[3] & Mc47x6)); +assign Rqvyx6 = (~(Lpryx6 & Fiq7x6)); +assign Opo7v6 = (~(Rixyx6 & Zixyx6)); +assign Zixyx6 = (~(Jexmz6[4] & K94iw6)); +assign Rixyx6 = (Hjxyx6 & Pjxyx6); +assign Pjxyx6 = (~(Lloyx6 & Cb77x6)); +assign Cb77x6 = (~(Xjxyx6 & Fkxyx6)); +assign Fkxyx6 = (Nkxyx6 & Vkxyx6); +assign Vkxyx6 = (Bqoyx6 | X4e7x6); +assign X4e7x6 = (Dlxyx6 & Llxyx6); +assign Llxyx6 = (Tlxyx6 & Bmxyx6); +assign Bmxyx6 = (Jmxyx6 & Rmxyx6); +assign Rmxyx6 = (Zmxyx6 & Hnxyx6); +assign Hnxyx6 = (~(Pnxyx6 & Nsoyx6)); +assign Pnxyx6 = (Klo7z6[5] & Xnxyx6); +assign Xnxyx6 = (~(Foxyx6 & Noxyx6)); +assign Noxyx6 = (Voxyx6 & Dpxyx6); +assign Dpxyx6 = (Lpxyx6 & Tpxyx6); +assign Tpxyx6 = (~(Hyj7z6[0] & Rbk7z6[4])); +assign Lpxyx6 = (~(Hyj7z6[1] & Zlk7z6[4])); +assign Voxyx6 = (Bqxyx6 & Jqxyx6); +assign Jqxyx6 = (~(Hyj7z6[2] & Hwk7z6[4])); +assign Bqxyx6 = (~(Hyj7z6[3] & P6l7z6[4])); +assign Foxyx6 = (Rqxyx6 & Zqxyx6); +assign Zqxyx6 = (Hrxyx6 & Prxyx6); +assign Prxyx6 = (~(Hyj7z6[4] & Xgl7z6[4])); +assign Hrxyx6 = (~(Hyj7z6[5] & Frl7z6[4])); +assign Rqxyx6 = (Xrxyx6 & Fsxyx6); +assign Fsxyx6 = (~(Hyj7z6[6] & N1m7z6[4])); +assign Xrxyx6 = (~(Hyj7z6[7] & Vbm7z6[4])); +assign Zmxyx6 = (~(Nsxyx6 & J2uyx6)); +assign Nsxyx6 = (F0pyx6 & R2uyx6); +assign Jmxyx6 = (Vsxyx6 & Dtxyx6); +assign Dtxyx6 = (~(Bmpyx6 & Ltxyx6)); +assign Ltxyx6 = (~(Ttxyx6 & Buxyx6)); +assign Buxyx6 = (Juxyx6 & N4wyx6); +assign Juxyx6 = (Ruxyx6 & Vopyx6); +assign Vopyx6 = (~(Zuxyx6 & Hvxyx6)); +assign Hvxyx6 = (Pvxyx6 & B6wyx6); +assign Pvxyx6 = (Xvxyx6 & L9syx6); +assign Zuxyx6 = (J02nz6[3] & J02nz6[2]); +assign Ttxyx6 = (Fwxyx6 & Nwxyx6); +assign Nwxyx6 = (~(Pk1nz6[4] & Xvpyx6)); +assign Fwxyx6 = (Vwxyx6 & L1wyx6); +assign Vsxyx6 = (~(D1pyx6 & Dxxyx6)); +assign Dxxyx6 = (~(Lxxyx6 & Txxyx6)); +assign Txxyx6 = (Byxyx6 & Jyxyx6); +assign Jyxyx6 = (Ryxyx6 & Zyxyx6); +assign Zyxyx6 = (~(Hzxyx6 & Eg4xx6)); +assign Eg4xx6 = (Pzxyx6 & Ojymz6[3]); +assign Pzxyx6 = (Ojymz6[1] & Ojymz6[0]); +assign Hzxyx6 = (Hfpyx6 & Jf4xx6); +assign Jf4xx6 = (!Ojymz6[2]); +assign Ryxyx6 = (Xzxyx6 & F0yyx6); +assign F0yyx6 = (~(N0yyx6 & Lzqnv6)); +assign Lzqnv6 = (V0yyx6 & Unymz6[3]); +assign V0yyx6 = (Unymz6[1] & Unymz6[0]); +assign N0yyx6 = (Thpyx6 & Qyqnv6); +assign Qyqnv6 = (!Unymz6[2]); +assign Xzxyx6 = (~(D1yyx6 & Zcsnv6)); +assign Zcsnv6 = (L1yyx6 & Sgymz6[3]); +assign L1yyx6 = (Sgymz6[1] & Sgymz6[0]); +assign D1yyx6 = (Ngpyx6 & Xbsnv6); +assign Xbsnv6 = (!Sgymz6[2]); +assign Byxyx6 = (T1yyx6 & B2yyx6); +assign B2yyx6 = (~(J2yyx6 & V4pyx6)); +assign J2yyx6 = (D9pyx6 & F02nv6); +assign T1yyx6 = (~(Kf77z6 & Vcpyx6)); +assign Lxxyx6 = (R2yyx6 & Z2yyx6); +assign Z2yyx6 = (H3yyx6 & P3yyx6); +assign P3yyx6 = (~(Hcymz6[4] & Hjpyx6)); +assign H3yyx6 = (X3yyx6 & F4yyx6); +assign F4yyx6 = (~(Biymz6[4] & Ddpyx6)); +assign X3yyx6 = (~(Feymz6[0] & Fgpyx6)); +assign R2yyx6 = (N4yyx6 & Xjpyx6); +assign Xjpyx6 = (V4yyx6 & D5yyx6); +assign D5yyx6 = (~(L5yyx6 & T5yyx6)); +assign T5yyx6 = (Bmuyx6 & B6yyx6); +assign B6yyx6 = (J6yyx6 & R6pyx6); +assign Bmuyx6 = (Xfymz6[7] & Xfymz6[6]); +assign L5yyx6 = (R6yyx6 & Xfymz6[3]); +assign R6yyx6 = (Xfymz6[2] & L9pyx6); +assign V4yyx6 = (R2xyx6 & Z6yyx6); +assign Tlxyx6 = (H7yyx6 & P7yyx6); +assign P7yyx6 = (~(Klo7z6[1] & X7yyx6)); +assign X7yyx6 = (~(F8yyx6 & N8yyx6)); +assign N8yyx6 = (V8yyx6 & D9yyx6); +assign D9yyx6 = (L9yyx6 & T9yyx6); +assign T9yyx6 = (Bayyx6 & T1qyx6); +assign Bayyx6 = (~(Kfq7z6[4] & S7hiw6)); +assign L9yyx6 = (Jayyx6 & Rayyx6); +assign Rayyx6 = (~(Tbq7z6[4] & Qsgiw6)); +assign Jayyx6 = (~(Pdq7z6[4] & Oka8x6)); +assign V8yyx6 = (Zayyx6 & Hbyyx6); +assign Hbyyx6 = (Pbyyx6 & Xbyyx6); +assign Xbyyx6 = (~(Hhq7z6[4] & Ydliw6)); +assign Pbyyx6 = (~(Cjq7z6[4] & Cza8x6)); +assign Zayyx6 = (Fcyyx6 & Ncyyx6); +assign Ncyyx6 = (~(Vcyyx6 & R6tyx6)); +assign Fcyyx6 = (~(T9tyx6 & Cv77z6)); +assign F8yyx6 = (Ddyyx6 & Ldyyx6); +assign Ldyyx6 = (Tdyyx6 & Beyyx6); +assign Beyyx6 = (Jeyyx6 & Reyyx6); +assign Reyyx6 = (~(Y7q7z6[3] & B6qyx6)); +assign Jeyyx6 = (~(D5qyx6 & Bqp7z6[4])); +assign Tdyyx6 = (Zeyyx6 & Hfyyx6); +assign Hfyyx6 = (~(L9qyx6 & E6p7z6[4])); +assign Zeyyx6 = (~(Fcqyx6 & B2q7z6[4])); +assign Ddyyx6 = (Pfyyx6 & Fgtyx6); +assign Pfyyx6 = (Xfyyx6 & Fgyyx6); +assign Fgyyx6 = (~(Tdqyx6 & Mkp7z6[4])); +assign Xfyyx6 = (~(U9p7z6[4] & Hfqyx6)); +assign H7yyx6 = (Ngyyx6 & Vgyyx6); +assign Vgyyx6 = (~(Klo7z6[2] & Dhyyx6)); +assign Dhyyx6 = (~(Lhyyx6 & Thyyx6)); +assign Thyyx6 = (Biyyx6 & Jiyyx6); +assign Jiyyx6 = (Riyyx6 & Ziyyx6); +assign Ziyyx6 = (~(Ouo7z6[2] & K7kiw6)); +assign Riyyx6 = (Hjyyx6 & Pjyyx6); +assign Pjyyx6 = (~(Nqo7z6[2] & M8kiw6)); +assign Hjyyx6 = (~(Fpo7z6[2] & H9kiw6)); +assign Biyyx6 = (Xjyyx6 & Fkyyx6); +assign Fkyyx6 = (~(Hxo7z6[2] & W6kiw6)); +assign Xjyyx6 = (~(Vro7z6[2] & Y7kiw6)); +assign Lhyyx6 = (Nkyyx6 & Vkyyx6); +assign Vkyyx6 = (Dlyyx6 & Llyyx6); +assign Llyyx6 = (~(T2p7z6[4] & U5kiw6)); +assign Dlyyx6 = (~(W3p7z6[4] & G5kiw6)); +assign Nkyyx6 = (Tlyyx6 & Bmyyx6); +assign Bmyyx6 = (~(A0p7z6[2] & I6kiw6)); +assign Ngyyx6 = (~(Jmyyx6 & Ngqyx6)); +assign Jmyyx6 = (~(Rmyyx6 & Zmyyx6)); +assign Zmyyx6 = (Hnyyx6 & Pnyyx6); +assign Pnyyx6 = (Xnyyx6 & Foyyx6); +assign Foyyx6 = (Noyyx6 & Voyyx6); +assign Voyyx6 = (~(Dpyyx6 & Lpyyx6)); +assign Dpyyx6 = (Jyuyx6 & Tpyyx6); +assign Noyyx6 = (Hjqyx6 & Bqyyx6); +assign Xnyyx6 = (Jqyyx6 & Rqyyx6); +assign Rqyyx6 = (~(Esadt6 & Hnqyx6)); +assign Jqyyx6 = (Zqyyx6 & Hryyx6); +assign Hryyx6 = (~(Pryyx6 & L2cet6)); +assign Pryyx6 = (Nksyx6 & Voqyx6); +assign Zqyyx6 = (~(Bxi7z6[4] & Dpqyx6)); +assign Dpqyx6 = (Xryyx6 & Voqyx6); +assign Hnyyx6 = (Fsyyx6 & Nsyyx6); +assign Nsyyx6 = (Vsyyx6 & Dtyyx6); +assign Dtyyx6 = (~(Brdet6 & Ttqyx6)); +assign Vsyyx6 = (Ltyyx6 & Ttyyx6); +assign Ttyyx6 = (~(A0j7z6[4] & Xrqyx6)); +assign Ltyyx6 = (~(H1j7z6[4] & Rqqyx6)); +assign Fsyyx6 = (Buyyx6 & Juyyx6); +assign Juyyx6 = (~(Bzi7z6[4] & Vsqyx6)); +assign Buyyx6 = (~(Dxqyx6 & Nob7z6[4])); +assign Rmyyx6 = (Ruyyx6 & Zuyyx6); +assign Zuyyx6 = (Hvyyx6 & Pvyyx6); +assign Pvyyx6 = (Xvyyx6 & Fwyyx6); +assign Fwyyx6 = (~(Bwi7z6[4] & Hzqyx6)); +assign Xvyyx6 = (Nwyyx6 & Vwyyx6); +assign Vwyyx6 = (~(Wui7z6[4] & Lxqyx6)); +assign Nwyyx6 = (~(Dri7z6[4] & Fwqyx6)); +assign Hvyyx6 = (Dxyyx6 & Lxyyx6); +assign Lxyyx6 = (~(B2ryx6 & M6j7z6[36])); +assign Dxyyx6 = (Txyyx6 & Byyyx6); +assign Byyyx6 = (~(Pzqyx6 & G5j7z6[36])); +assign Txyyx6 = (~(Jyqyx6 & G5j7z6[4])); +assign Ruyyx6 = (Jyyyx6 & Ryyyx6); +assign Ryyyx6 = (Zyyyx6 & Hzyyx6); +assign Hzyyx6 = (~(X3ryx6 & Ohj7z6[4])); +assign Zyyyx6 = (Pzyyx6 & Xzyyx6); +assign Xzyyx6 = (~(J2ryx6 & M6j7z6[4])); +assign Pzyyx6 = (~(D1ryx6 & Ohj7z6[36])); +assign Jyyyx6 = (F0zyx6 & N0zyx6); +assign N0zyx6 = (~(STCALIB[4] & F4ryx6)); +assign Dlxyx6 = (V0zyx6 & D1zyx6); +assign D1zyx6 = (L1zyx6 & T1zyx6); +assign T1zyx6 = (~(Au1nz6[4] & Xjtyx6)); +assign L1zyx6 = (B2zyx6 & J2zyx6); +assign J2zyx6 = (R2zyx6 | Ap27v6); +assign B2zyx6 = (~(Oo1nz6[4] & Pjtyx6)); +assign V0zyx6 = (Z2zyx6 & H3zyx6); +assign Z2zyx6 = (P3zyx6 & X3zyx6); +assign X3zyx6 = (~(Og6ft6 & Lltyx6)); +assign P3zyx6 = (~(Ies7z6[4] & Tltyx6)); +assign Nkxyx6 = (~(Zmoyx6 & E5e7x6)); +assign E5e7x6 = (~(F4zyx6 & N4zyx6)); +assign N4zyx6 = (~(Qco7v6 & Xnoyx6)); +assign F4zyx6 = (~(Tim7z6[4] & Tpoyx6)); +assign Xjxyx6 = (V4zyx6 & D5zyx6); +assign D5zyx6 = (~(HRDATAS[4] & Ad47x6)); +assign V4zyx6 = (~(HRDATAD[4] & Mc47x6)); +assign Hjxyx6 = (~(Lpryx6 & Pnq7x6)); +assign Hpo7v6 = (~(L5zyx6 & T5zyx6)); +assign T5zyx6 = (~(Jexmz6[5] & K94iw6)); +assign L5zyx6 = (B6zyx6 & J6zyx6); +assign J6zyx6 = (~(Lloyx6 & C477x6)); +assign C477x6 = (~(R6zyx6 & Z6zyx6)); +assign Z6zyx6 = (H7zyx6 & P7zyx6); +assign P7zyx6 = (Bqoyx6 | K8e7x6); +assign K8e7x6 = (X7zyx6 & F8zyx6); +assign F8zyx6 = (N8zyx6 & V8zyx6); +assign V8zyx6 = (D9zyx6 & L9zyx6); +assign L9zyx6 = (T9zyx6 & R2zyx6); +assign T9zyx6 = (~(P3uyx6 & Pk1nz6[5])); +assign D9zyx6 = (Bazyx6 & Jazyx6); +assign Jazyx6 = (~(Bmpyx6 & Razyx6)); +assign Razyx6 = (~(Vwpyx6 & N4wyx6)); +assign N4wyx6 = (~(Zazyx6 & Hrpyx6)); +assign Zazyx6 = (Tppyx6 & J02nz6[8]); +assign Vwpyx6 = (Hbzyx6 & V4syx6); +assign V4syx6 = (~(Pbzyx6 & Hrpyx6)); +assign Bmpyx6 = (Kniiw6 & Klo7z6[3]); +assign Bazyx6 = (~(Xbzyx6 & Fczyx6)); +assign Fczyx6 = (~(Nczyx6 & Vczyx6)); +assign Vczyx6 = (Ddzyx6 & Ldzyx6); +assign Ldzyx6 = (Tdzyx6 & Bezyx6); +assign Bezyx6 = (~(Hyj7z6[0] & Rbk7z6[5])); +assign Tdzyx6 = (~(Hyj7z6[1] & Zlk7z6[5])); +assign Ddzyx6 = (Jezyx6 & Rezyx6); +assign Rezyx6 = (~(Hyj7z6[2] & Hwk7z6[5])); +assign Jezyx6 = (~(Hyj7z6[3] & P6l7z6[5])); +assign Nczyx6 = (Zezyx6 & Hfzyx6); +assign Hfzyx6 = (Pfzyx6 & Xfzyx6); +assign Xfzyx6 = (~(Hyj7z6[4] & Xgl7z6[5])); +assign Pfzyx6 = (~(Hyj7z6[5] & Frl7z6[5])); +assign Zezyx6 = (Fgzyx6 & Ngzyx6); +assign Ngzyx6 = (~(Hyj7z6[6] & N1m7z6[5])); +assign Fgzyx6 = (~(Hyj7z6[7] & Vbm7z6[5])); +assign N8zyx6 = (Vgzyx6 & Dhzyx6); +assign Dhzyx6 = (~(D1pyx6 & Lhzyx6)); +assign Lhzyx6 = (~(Thzyx6 & Bizyx6)); +assign Bizyx6 = (Jizyx6 & Rizyx6); +assign Rizyx6 = (Zizyx6 & Hjzyx6); +assign Hjzyx6 = (~(Sf77z6 & Vcpyx6)); +assign Zizyx6 = (Pjzyx6 & R2xyx6); +assign R2xyx6 = (~(Ied8x6 & Xbpyx6)); +assign Pjzyx6 = (~(D9pyx6 & Xbpyx6)); +assign Jizyx6 = (Xjzyx6 & Fkzyx6); +assign Fkzyx6 = (~(Biymz6[5] & Ddpyx6)); +assign Xjzyx6 = (~(Feymz6[1] & Fgpyx6)); +assign Thzyx6 = (Nkzyx6 & Vkzyx6); +assign Vkzyx6 = (Dlzyx6 & Llzyx6); +assign Llzyx6 = (~(Sgymz6[2] & Ngpyx6)); +assign Dlzyx6 = (~(Ojymz6[2] & Hfpyx6)); +assign Nkzyx6 = (Pjpyx6 & Tlzyx6); +assign Tlzyx6 = (~(Unymz6[2] & Thpyx6)); +assign Vgzyx6 = (Bmzyx6 & Jmzyx6); +assign Jmzyx6 = (~(Rmzyx6 & Zmzyx6)); +assign Zmzyx6 = (~(Hnzyx6 & Pnzyx6)); +assign Pnzyx6 = (Xnzyx6 & Fozyx6); +assign Fozyx6 = (Nozyx6 & Vozyx6); +assign Vozyx6 = (~(Hyj7z6[0] & Dfk7z6[5])); +assign Nozyx6 = (~(Hyj7z6[1] & Lpk7z6[5])); +assign Xnzyx6 = (Dpzyx6 & Lpzyx6); +assign Lpzyx6 = (~(Hyj7z6[2] & Tzk7z6[5])); +assign Dpzyx6 = (~(Hyj7z6[3] & Bal7z6[5])); +assign Hnzyx6 = (Tpzyx6 & Bqzyx6); +assign Bqzyx6 = (Jqzyx6 & Rqzyx6); +assign Rqzyx6 = (~(Hyj7z6[4] & Jkl7z6[5])); +assign Jqzyx6 = (~(Hyj7z6[5] & Rul7z6[5])); +assign Tpzyx6 = (Zqzyx6 & Hrzyx6); +assign Hrzyx6 = (~(Hyj7z6[6] & Z4m7z6[5])); +assign Zqzyx6 = (~(Hyj7z6[7] & Hfm7z6[5])); +assign Bmzyx6 = (~(Klo7z6[2] & Przyx6)); +assign Przyx6 = (~(Xrzyx6 & Fszyx6)); +assign Fszyx6 = (Nszyx6 & Vszyx6); +assign Vszyx6 = (Dtzyx6 & Ltzyx6); +assign Ltzyx6 = (~(Fpo7z6[3] & H9kiw6)); +assign Dtzyx6 = (Ttzyx6 & Jaxyx6); +assign Jaxyx6 = (~(Buzyx6 & R6ryx6)); +assign R6ryx6 = (Juzyx6 & Hfuyx6); +assign Juzyx6 = (!Ruzyx6); +assign Buzyx6 = (Z4p7z6[1] & R2syx6); +assign Ttzyx6 = (~(Nqo7z6[3] & M8kiw6)); +assign Nszyx6 = (Zuzyx6 & Hvzyx6); +assign Hvzyx6 = (~(Hxo7z6[3] & W6kiw6)); +assign Zuzyx6 = (Pvzyx6 & Xvzyx6); +assign Xvzyx6 = (~(Vitet6 & S4kiw6)); +assign Pvzyx6 = (~(Ouo7z6[3] & K7kiw6)); +assign Xrzyx6 = (Fwzyx6 & Nwzyx6); +assign Nwzyx6 = (Vwzyx6 & Dxzyx6); +assign Dxzyx6 = (~(W3p7z6[5] & G5kiw6)); +assign Vwzyx6 = (Lxzyx6 & Txzyx6); +assign Txzyx6 = (~(Vro7z6[3] & Y7kiw6)); +assign Lxzyx6 = (~(T2p7z6[5] & U5kiw6)); +assign Fwzyx6 = (Byzyx6 & Jyzyx6); +assign Byzyx6 = (Tlyyx6 & Ryzyx6); +assign Ryzyx6 = (~(A0p7z6[3] & I6kiw6)); +assign X7zyx6 = (Zyzyx6 & Hzzyx6); +assign Hzzyx6 = (Pzzyx6 & Xzzyx6); +assign Xzzyx6 = (~(Oo1nz6[5] & Pjtyx6)); +assign Pzzyx6 = (F00zx6 & N00zx6); +assign N00zx6 = (~(V00zx6 & Ngqyx6)); +assign V00zx6 = (~(D10zx6 & L10zx6)); +assign L10zx6 = (T10zx6 & B20zx6); +assign B20zx6 = (J20zx6 & R20zx6); +assign R20zx6 = (Z20zx6 & H30zx6); +assign H30zx6 = (P30zx6 & X30zx6); +assign X30zx6 = (~(H1j7z6[5] & Rqqyx6)); +assign P30zx6 = (F40zx6 & N40zx6); +assign N40zx6 = (~(V40zx6 & Ffj7z6[0])); +assign F40zx6 = (~(A0j7z6[5] & Xrqyx6)); +assign Z20zx6 = (D50zx6 & L50zx6); +assign L50zx6 = (~(Zsdet6 & Ttqyx6)); +assign D50zx6 = (~(Qteet6 & Buqyx6)); +assign J20zx6 = (T50zx6 & B60zx6); +assign B60zx6 = (J60zx6 & 1'b1); +assign J60zx6 = (~(Dxqyx6 & Nob7z6[5])); +assign T50zx6 = (R60zx6 & Z60zx6); +assign Z60zx6 = (~(Wui7z6[5] & Lxqyx6)); +assign R60zx6 = (~(Dri7z6[5] & Fwqyx6)); +assign T10zx6 = (H70zx6 & P70zx6); +assign P70zx6 = (X70zx6 & F80zx6); +assign F80zx6 = (N80zx6 & V80zx6); +assign V80zx6 = (~(D90zx6 & Lgj7z6[180])); +assign N80zx6 = (L90zx6 & T90zx6); +assign T90zx6 = (~(Bwi7z6[5] & Hzqyx6)); +assign L90zx6 = (~(Ba0zx6 & Nbj7z6[0])); +assign X70zx6 = (Ja0zx6 & Ra0zx6); +assign Ra0zx6 = (~(Za0zx6 & Lgj7z6[168])); +assign Ja0zx6 = (~(Hb0zx6 & Lgj7z6[156])); +assign H70zx6 = (Pb0zx6 & Xb0zx6); +assign Xb0zx6 = (Fc0zx6 & Nc0zx6); +assign Nc0zx6 = (~(Vc0zx6 & Lgj7z6[144])); +assign Fc0zx6 = (~(Dd0zx6 & Lgj7z6[132])); +assign Pb0zx6 = (Ld0zx6 & Td0zx6); +assign Td0zx6 = (~(Be0zx6 & Lgj7z6[120])); +assign Ld0zx6 = (~(Je0zx6 & Lgj7z6[108])); +assign D10zx6 = (Re0zx6 & Ze0zx6); +assign Ze0zx6 = (Hf0zx6 & Pf0zx6); +assign Pf0zx6 = (Xf0zx6 & Fg0zx6); +assign Fg0zx6 = (Ng0zx6 & Vg0zx6); +assign Vg0zx6 = (~(Dh0zx6 & Lgj7z6[72])); +assign Ng0zx6 = (Lh0zx6 & Th0zx6); +assign Th0zx6 = (~(Bi0zx6 & Lgj7z6[96])); +assign Lh0zx6 = (~(Ji0zx6 & Lgj7z6[84])); +assign Xf0zx6 = (Ri0zx6 & Zi0zx6); +assign Zi0zx6 = (~(Hj0zx6 & Lgj7z6[60])); +assign Ri0zx6 = (~(Pj0zx6 & Lgj7z6[48])); +assign Hf0zx6 = (Xj0zx6 & Fk0zx6); +assign Fk0zx6 = (Nk0zx6 & Vk0zx6); +assign Vk0zx6 = (~(Dl0zx6 & Lgj7z6[36])); +assign Nk0zx6 = (~(Ll0zx6 & Lgj7z6[24])); +assign Xj0zx6 = (Tl0zx6 & Bm0zx6); +assign Bm0zx6 = (~(Jm0zx6 & Lgj7z6[12])); +assign Tl0zx6 = (~(Rm0zx6 & Lgj7z6[0])); +assign Re0zx6 = (Zm0zx6 & Hn0zx6); +assign Hn0zx6 = (Pn0zx6 & Xn0zx6); +assign Xn0zx6 = (Fo0zx6 & No0zx6); +assign No0zx6 = (~(B2ryx6 & M6j7z6[37])); +assign Fo0zx6 = (Vo0zx6 & Dp0zx6); +assign Dp0zx6 = (~(Pzqyx6 & G5j7z6[37])); +assign Vo0zx6 = (~(Jyqyx6 & G5j7z6[5])); +assign Pn0zx6 = (Lp0zx6 & Tp0zx6); +assign Tp0zx6 = (~(J2ryx6 & M6j7z6[5])); +assign Lp0zx6 = (~(D1ryx6 & Ohj7z6[37])); +assign Zm0zx6 = (Bq0zx6 & Jq0zx6); +assign Jq0zx6 = (Rq0zx6 & Zq0zx6); +assign Zq0zx6 = (~(X3ryx6 & Ohj7z6[5])); +assign Rq0zx6 = (~(STCALIB[5] & F4ryx6)); +assign Bq0zx6 = (F0zyx6 & Hr0zx6); +assign F0zyx6 = (Pr0zx6 & Xr0zx6); +assign Xr0zx6 = (~(Fs0zx6 & Voqyx6)); +assign F00zx6 = (~(Klo7z6[1] & Ns0zx6)); +assign Ns0zx6 = (~(Vs0zx6 & Dt0zx6)); +assign Dt0zx6 = (Lt0zx6 & Tt0zx6); +assign Tt0zx6 = (Bu0zx6 & Ju0zx6); +assign Ju0zx6 = (Ru0zx6 & Zu0zx6); +assign Zu0zx6 = (~(Pdq7z6[5] & Oka8x6)); +assign Ru0zx6 = (Hv0zx6 & Pv0zx6); +assign Pv0zx6 = (~(Kfq7z6[5] & S7hiw6)); +assign Hv0zx6 = (~(Tbq7z6[5] & Qsgiw6)); +assign Bu0zx6 = (Xv0zx6 & Fw0zx6); +assign Fw0zx6 = (~(Hhq7z6[5] & Ydliw6)); +assign Xv0zx6 = (~(Cjq7z6[5] & Cza8x6)); +assign Lt0zx6 = (Nw0zx6 & Vw0zx6); +assign Vw0zx6 = (Dx0zx6 & Lx0zx6); +assign Lx0zx6 = (~(T9tyx6 & Uu77z6)); +assign Dx0zx6 = (~(X9q7z6[0] & B6qyx6)); +assign Nw0zx6 = (Tx0zx6 & By0zx6); +assign By0zx6 = (~(D5qyx6 & Bqp7z6[5])); +assign Tx0zx6 = (~(Dm2ft6 & P3a8x6)); +assign Vs0zx6 = (Jy0zx6 & Ry0zx6); +assign Ry0zx6 = (Zy0zx6 & Hz0zx6); +assign Hz0zx6 = (Pz0zx6 & Xz0zx6); +assign Xz0zx6 = (~(Fcqyx6 & B2q7z6[5])); +assign Pz0zx6 = (F01zx6 & N01zx6); +assign N01zx6 = (~(Ei2ft6 & Ua9ov6)); +assign F01zx6 = (~(L9qyx6 & E6p7z6[5])); +assign Zy0zx6 = (V01zx6 & D11zx6); +assign D11zx6 = (~(M12ft6 & Nao7x6)); +assign V01zx6 = (~(Gs2ft6 & Q0a8x6)); +assign Jy0zx6 = (L11zx6 & T11zx6); +assign T11zx6 = (B21zx6 & J21zx6); +assign J21zx6 = (~(Tdqyx6 & Mkp7z6[5])); +assign B21zx6 = (~(U9p7z6[5] & Hfqyx6)); +assign L11zx6 = (R21zx6 & Fgtyx6); +assign Fgtyx6 = (Ravyx6 & Z21zx6); +assign Z21zx6 = (~(Z6tyx6 & J2qyx6)); +assign Zyzyx6 = (H31zx6 & H3zyx6); +assign H3zyx6 = (P31zx6 & X31zx6); +assign X31zx6 = (F41zx6 | Pnryx6); +assign Pnryx6 = (~(N41zx6 | Xfxyx6)); +assign Xfxyx6 = (V41zx6 & D51zx6); +assign D51zx6 = (L51zx6 & Xruyx6); +assign P31zx6 = (~(T51zx6 & B61zx6)); +assign B61zx6 = (J61zx6 & Z6wyx6); +assign J61zx6 = (~(Ti2nz6[1] & Bmvyx6)); +assign T51zx6 = (J2uyx6 & F0pyx6); +assign H31zx6 = (R61zx6 & Z61zx6); +assign Z61zx6 = (~(Au1nz6[5] & Xjtyx6)); +assign R61zx6 = (~(Ies7z6[5] & Tltyx6)); +assign H7zyx6 = (~(Zmoyx6 & R8e7x6)); +assign R8e7x6 = (~(H71zx6 & P71zx6)); +assign P71zx6 = (~(Xnoyx6 & Oda7z6)); +assign Oda7z6 = (~(X71zx6 & F81zx6)); +assign F81zx6 = (~(HRDATAD[5] & Qln7z6[0])); +assign X71zx6 = (~(HRDATAS[5] & Qln7z6[1])); +assign H71zx6 = (~(Tim7z6[5] & Tpoyx6)); +assign R6zyx6 = (N81zx6 & V81zx6); +assign V81zx6 = (~(HRDATAS[5] & Ad47x6)); +assign N81zx6 = (~(HRDATAD[5] & Mc47x6)); +assign B6zyx6 = (~(Lpryx6 & Zsq7x6)); +assign Apo7v6 = (~(D91zx6 & L91zx6)); +assign L91zx6 = (~(Jexmz6[6] & K94iw6)); +assign D91zx6 = (T91zx6 & Ba1zx6); +assign Ba1zx6 = (~(Lloyx6 & Cx67x6)); +assign Cx67x6 = (~(Ja1zx6 & Ra1zx6)); +assign Ra1zx6 = (Za1zx6 & Hb1zx6); +assign Hb1zx6 = (Bqoyx6 | Xbe7x6); +assign Xbe7x6 = (Pb1zx6 & Xb1zx6); +assign Xb1zx6 = (Fc1zx6 & Nc1zx6); +assign Nc1zx6 = (Vc1zx6 & Dd1zx6); +assign Dd1zx6 = (~(D1pyx6 & Ld1zx6)); +assign Ld1zx6 = (~(Td1zx6 & Be1zx6)); +assign Be1zx6 = (Je1zx6 & Re1zx6); +assign Re1zx6 = (Ze1zx6 & Z6yyx6); +assign Ze1zx6 = (~(Hf1zx6 & Fy67v6)); +assign Hf1zx6 = (Pbpyx6 & Zshiw6); +assign Je1zx6 = (Pf1zx6 & Xf1zx6); +assign Xf1zx6 = (~(Ag77z6 & Vcpyx6)); +assign Pf1zx6 = (~(Biymz6[6] & Ddpyx6)); +assign Td1zx6 = (Fg1zx6 & Ng1zx6); +assign Ng1zx6 = (Vg1zx6 & Y0jhy6); +assign Y0jhy6 = (~(Feymz6[2] & Fgpyx6)); +assign Vg1zx6 = (~(Sgymz6[3] & Ngpyx6)); +assign Fg1zx6 = (G1jhy6 & O1jhy6); +assign O1jhy6 = (~(Ojymz6[3] & Hfpyx6)); +assign G1jhy6 = (~(Unymz6[3] & Thpyx6)); +assign Vc1zx6 = (W1jhy6 & E2jhy6); +assign E2jhy6 = (~(M2jhy6 & U2jhy6)); +assign M2jhy6 = (C3jhy6 & K3jhy6); +assign C3jhy6 = (~(S3jhy6 & A4jhy6)); +assign A4jhy6 = (I4jhy6 & Q4jhy6); +assign Q4jhy6 = (Y4jhy6 & G5jhy6); +assign G5jhy6 = (~(Hyj7z6[3] & Tobiw6)); +assign Y4jhy6 = (~(Hyj7z6[2] & Mobiw6)); +assign I4jhy6 = (O5jhy6 & W5jhy6); +assign W5jhy6 = (~(Hyj7z6[1] & Fobiw6)); +assign O5jhy6 = (~(Hyj7z6[5] & Apbiw6)); +assign S3jhy6 = (E6jhy6 & M6jhy6); +assign M6jhy6 = (U6jhy6 & C7jhy6); +assign C7jhy6 = (~(Hyj7z6[6] & Hpbiw6)); +assign U6jhy6 = (~(Hyj7z6[7] & Opbiw6)); +assign E6jhy6 = (K7jhy6 & S7jhy6); +assign S7jhy6 = (~(Hyj7z6[0] & Dfk7z6[6])); +assign K7jhy6 = (~(Hyj7z6[4] & Jkl7z6[6])); +assign W1jhy6 = (~(P3uyx6 & Pk1nz6[6])); +assign P3uyx6 = (A8jhy6 & Klo7z6[3]); +assign Fc1zx6 = (I8jhy6 & Q8jhy6); +assign Q8jhy6 = (~(Klo7z6[1] & Y8jhy6)); +assign Y8jhy6 = (~(G9jhy6 & O9jhy6)); +assign O9jhy6 = (W9jhy6 & Eajhy6); +assign Eajhy6 = (Majhy6 & Uajhy6); +assign Uajhy6 = (Cbjhy6 & Ravyx6); +assign Cbjhy6 = (~(Kfq7z6[6] & S7hiw6)); +assign Majhy6 = (Kbjhy6 & Sbjhy6); +assign Sbjhy6 = (~(Tbq7z6[6] & Qsgiw6)); +assign Kbjhy6 = (~(Pdq7z6[6] & Oka8x6)); +assign W9jhy6 = (Acjhy6 & Icjhy6); +assign Icjhy6 = (~(R6tyx6 & Qcjhy6)); +assign Acjhy6 = (Ycjhy6 & Gdjhy6); +assign Gdjhy6 = (~(Hhq7z6[6] & Ydliw6)); +assign Ycjhy6 = (~(Cjq7z6[6] & Cza8x6)); +assign G9jhy6 = (Odjhy6 & Wdjhy6); +assign Wdjhy6 = (Eejhy6 & Mejhy6); +assign Mejhy6 = (Uejhy6 & Cfjhy6); +assign Cfjhy6 = (~(T9tyx6 & Mu77z6)); +assign Uejhy6 = (~(X9q7z6[1] & B6qyx6)); +assign Eejhy6 = (Kfjhy6 & Sfjhy6); +assign Sfjhy6 = (~(D5qyx6 & Bqp7z6[6])); +assign Kfjhy6 = (~(L9qyx6 & E6p7z6[6])); +assign Odjhy6 = (Agjhy6 & Igjhy6); +assign Igjhy6 = (~(U9p7z6[6] & Hfqyx6)); +assign Agjhy6 = (Qgjhy6 & Ygjhy6); +assign Ygjhy6 = (~(Fcqyx6 & B2q7z6[6])); +assign Qgjhy6 = (~(Tdqyx6 & Mkp7z6[6])); +assign I8jhy6 = (Ghjhy6 & Ohjhy6); +assign Ohjhy6 = (~(Whjhy6 & Ngqyx6)); +assign Whjhy6 = (~(Eijhy6 & Mijhy6)); +assign Mijhy6 = (Uijhy6 & Cjjhy6); +assign Cjjhy6 = (Kjjhy6 & Sjjhy6); +assign Sjjhy6 = (Akjhy6 & Ikjhy6); +assign Ikjhy6 = (Qkjhy6 & Ykjhy6); +assign Ykjhy6 = (~(A0j7z6[6] & Xrqyx6)); +assign Qkjhy6 = (Gljhy6 & Oljhy6); +assign Oljhy6 = (~(Wljhy6 & Lpyyx6)); +assign Wljhy6 = (Koaiw6 & Jyuyx6); +assign Gljhy6 = (~(V40zx6 & Ffj7z6[1])); +assign Akjhy6 = (Emjhy6 & Mmjhy6); +assign Mmjhy6 = (~(H1j7z6[6] & Rqqyx6)); +assign Emjhy6 = (~(Zudet6 & Ttqyx6)); +assign Kjjhy6 = (Umjhy6 & Cnjhy6); +assign Cnjhy6 = (Knjhy6 & Snjhy6); +assign Snjhy6 = (~(Dxqyx6 & Nob7z6[6])); +assign Knjhy6 = (~(Wui7z6[6] & Lxqyx6)); +assign Umjhy6 = (Aojhy6 & Iojhy6); +assign Iojhy6 = (~(Dri7z6[6] & Fwqyx6)); +assign Aojhy6 = (~(Bwi7z6[6] & Hzqyx6)); +assign Uijhy6 = (Qojhy6 & Yojhy6); +assign Yojhy6 = (Gpjhy6 & Opjhy6); +assign Opjhy6 = (Wpjhy6 & Eqjhy6); +assign Eqjhy6 = (~(Ba0zx6 & Nbj7z6[1])); +assign Wpjhy6 = (~(D90zx6 & Lgj7z6[181])); +assign Gpjhy6 = (Mqjhy6 & Uqjhy6); +assign Uqjhy6 = (~(Za0zx6 & Lgj7z6[169])); +assign Mqjhy6 = (~(Hb0zx6 & Lgj7z6[157])); +assign Qojhy6 = (Crjhy6 & Krjhy6); +assign Krjhy6 = (Srjhy6 & Asjhy6); +assign Asjhy6 = (~(Vc0zx6 & Lgj7z6[145])); +assign Srjhy6 = (~(Dd0zx6 & Lgj7z6[133])); +assign Crjhy6 = (Isjhy6 & Qsjhy6); +assign Qsjhy6 = (~(Be0zx6 & Lgj7z6[121])); +assign Isjhy6 = (~(Je0zx6 & Lgj7z6[109])); +assign Eijhy6 = (Ysjhy6 & Gtjhy6); +assign Gtjhy6 = (Otjhy6 & Wtjhy6); +assign Wtjhy6 = (Eujhy6 & Mujhy6); +assign Mujhy6 = (Uujhy6 & Cvjhy6); +assign Cvjhy6 = (~(Bi0zx6 & Lgj7z6[97])); +assign Uujhy6 = (~(Ji0zx6 & Lgj7z6[85])); +assign Eujhy6 = (Kvjhy6 & Svjhy6); +assign Svjhy6 = (~(Dh0zx6 & Lgj7z6[73])); +assign Kvjhy6 = (~(Hj0zx6 & Lgj7z6[61])); +assign Otjhy6 = (Awjhy6 & Iwjhy6); +assign Iwjhy6 = (Qwjhy6 & Ywjhy6); +assign Ywjhy6 = (~(Pj0zx6 & Lgj7z6[49])); +assign Qwjhy6 = (~(Dl0zx6 & Lgj7z6[37])); +assign Awjhy6 = (Gxjhy6 & Oxjhy6); +assign Oxjhy6 = (~(Ll0zx6 & Lgj7z6[25])); +assign Gxjhy6 = (~(Jm0zx6 & Lgj7z6[13])); +assign Ysjhy6 = (Wxjhy6 & Eyjhy6); +assign Eyjhy6 = (Myjhy6 & Uyjhy6); +assign Uyjhy6 = (Czjhy6 & Kzjhy6); +assign Kzjhy6 = (~(Rm0zx6 & Lgj7z6[1])); +assign Czjhy6 = (~(Pzqyx6 & G5j7z6[38])); +assign Myjhy6 = (Szjhy6 & A0khy6); +assign A0khy6 = (~(Jyqyx6 & G5j7z6[6])); +assign Szjhy6 = (~(B2ryx6 & M6j7z6[38])); +assign Wxjhy6 = (I0khy6 & Q0khy6); +assign Q0khy6 = (Y0khy6 & G1khy6); +assign G1khy6 = (~(J2ryx6 & M6j7z6[6])); +assign Y0khy6 = (~(D1ryx6 & Ohj7z6[38])); +assign I0khy6 = (O1khy6 & W1khy6); +assign W1khy6 = (~(X3ryx6 & Ohj7z6[6])); +assign O1khy6 = (~(STCALIB[6] & F4ryx6)); +assign Ghjhy6 = (~(Klo7z6[2] & E2khy6)); +assign E2khy6 = (~(M2khy6 & U2khy6)); +assign U2khy6 = (C3khy6 & K3khy6); +assign K3khy6 = (S3khy6 & A4khy6); +assign A4khy6 = (~(Ugtet6 & S4kiw6)); +assign S3khy6 = (I4khy6 & Q4khy6); +assign Q4khy6 = (~(Nqo7z6[4] & M8kiw6)); +assign I4khy6 = (~(Fpo7z6[4] & H9kiw6)); +assign C3khy6 = (Y4khy6 & G5khy6); +assign G5khy6 = (~(Ouo7z6[4] & K7kiw6)); +assign Y4khy6 = (~(Hxo7z6[4] & W6kiw6)); +assign M2khy6 = (O5khy6 & W5khy6); +assign W5khy6 = (E6khy6 & M6khy6); +assign M6khy6 = (~(W3p7z6[6] & G5kiw6)); +assign E6khy6 = (U6khy6 & C7khy6); +assign C7khy6 = (~(Vro7z6[4] & Y7kiw6)); +assign U6khy6 = (~(T2p7z6[6] & U5kiw6)); +assign O5khy6 = (Jyzyx6 & K7khy6); +assign K7khy6 = (~(A0p7z6[4] & I6kiw6)); +assign Jyzyx6 = (S7khy6 & A8khy6); +assign Pb1zx6 = (I8khy6 & Q8khy6); +assign Q8khy6 = (Y8khy6 & G9khy6); +assign G9khy6 = (~(Oo1nz6[6] & Pjtyx6)); +assign Y8khy6 = (O9khy6 & W9khy6); +assign W9khy6 = (Fotyx6 | Eakhy6); +assign Eakhy6 = (!F0pyx6); +assign O9khy6 = (R2zyx6 | Xruyx6); +assign I8khy6 = (Makhy6 & Uakhy6); +assign Uakhy6 = (~(Au1nz6[6] & Xjtyx6)); +assign Makhy6 = (~(Ies7z6[6] & Tltyx6)); +assign Za1zx6 = (~(Zmoyx6 & Ece7x6)); +assign Ece7x6 = (~(Cbkhy6 & Kbkhy6)); +assign Kbkhy6 = (~(Xnoyx6 & Gda7z6)); +assign Gda7z6 = (~(Sbkhy6 & Ackhy6)); +assign Ackhy6 = (~(HRDATAD[6] & Qln7z6[0])); +assign Sbkhy6 = (~(HRDATAS[6] & Qln7z6[1])); +assign Cbkhy6 = (~(Tim7z6[6] & Tpoyx6)); +assign Ja1zx6 = (Ickhy6 & Qckhy6); +assign Qckhy6 = (~(HRDATAS[6] & Ad47x6)); +assign Ickhy6 = (~(HRDATAD[6] & Mc47x6)); +assign T91zx6 = (~(Lpryx6 & Lzq7x6)); +assign Too7v6 = (~(Yckhy6 & Gdkhy6)); +assign Gdkhy6 = (~(Jexmz6[7] & K94iw6)); +assign Yckhy6 = (Odkhy6 & Wdkhy6); +assign Wdkhy6 = (~(Lloyx6 & Hp67x6)); +assign Hp67x6 = (~(Eekhy6 & Mekhy6)); +assign Mekhy6 = (Uekhy6 & Cfkhy6); +assign Cfkhy6 = (Bqoyx6 | Kfe7x6); +assign Kfe7x6 = (Kfkhy6 & Sfkhy6); +assign Sfkhy6 = (Agkhy6 & Igkhy6); +assign Igkhy6 = (Qgkhy6 & R2zyx6); +assign R2zyx6 = (~(Ygkhy6 & Ghkhy6)); +assign Ghkhy6 = (~(Hnryx6 | Ohkhy6)); +assign Ygkhy6 = (Klo7z6[0] & Or27v6); +assign Qgkhy6 = (~(Whkhy6 & U2jhy6)); +assign Whkhy6 = (Eikhy6 & K3jhy6); +assign Eikhy6 = (~(Mikhy6 & Uikhy6)); +assign Uikhy6 = (Cjkhy6 & Kjkhy6); +assign Kjkhy6 = (Sjkhy6 & Akkhy6); +assign Akkhy6 = (~(Hyj7z6[3] & Lrbiw6)); +assign Sjkhy6 = (~(Hyj7z6[2] & Xqbiw6)); +assign Cjkhy6 = (Ikkhy6 & Qkkhy6); +assign Qkkhy6 = (~(Hyj7z6[1] & Jqbiw6)); +assign Ikkhy6 = (~(Hyj7z6[5] & Gsbiw6)); +assign Mikhy6 = (Ykkhy6 & Glkhy6); +assign Glkhy6 = (Olkhy6 & Wlkhy6); +assign Wlkhy6 = (~(Hyj7z6[6] & Usbiw6)); +assign Olkhy6 = (~(Hyj7z6[7] & Btbiw6)); +assign Ykkhy6 = (Emkhy6 & Mmkhy6); +assign Mmkhy6 = (~(Hyj7z6[0] & Dfk7z6[7])); +assign Emkhy6 = (~(Hyj7z6[4] & Jkl7z6[7])); +assign Agkhy6 = (Umkhy6 & Cnkhy6); +assign Cnkhy6 = (~(Knkhy6 & Ngqyx6)); +assign Knkhy6 = (~(Snkhy6 & Aokhy6)); +assign Aokhy6 = (Iokhy6 & Qokhy6); +assign Qokhy6 = (Yokhy6 & Gpkhy6); +assign Gpkhy6 = (Opkhy6 & Wpkhy6); +assign Wpkhy6 = (Eqkhy6 & Mqkhy6); +assign Mqkhy6 = (~(A0j7z6[7] & Xrqyx6)); +assign Eqkhy6 = (Uqkhy6 & Crkhy6); +assign Crkhy6 = (~(Prqyx6 & Z3j7z6[7])); +assign Uqkhy6 = (~(V40zx6 & Ffj7z6[2])); +assign Opkhy6 = (Krkhy6 & Srkhy6); +assign Srkhy6 = (~(H1j7z6[7] & Rqqyx6)); +assign Krkhy6 = (~(Ywdet6 & Ttqyx6)); +assign Yokhy6 = (Askhy6 & Iskhy6); +assign Iskhy6 = (Qskhy6 & Yskhy6); +assign Yskhy6 = (~(Bzi7z6[7] & Vsqyx6)); +assign Qskhy6 = (~(Dxqyx6 & Nob7z6[7])); +assign Askhy6 = (Gtkhy6 & Otkhy6); +assign Otkhy6 = (~(Wui7z6[7] & Lxqyx6)); +assign Gtkhy6 = (~(Dri7z6[7] & Fwqyx6)); +assign Iokhy6 = (Wtkhy6 & Eukhy6); +assign Eukhy6 = (Mukhy6 & Uukhy6); +assign Uukhy6 = (Cvkhy6 & Kvkhy6); +assign Kvkhy6 = (~(Qti7z6[7] & Svkhy6)); +assign Cvkhy6 = (Awkhy6 & Iwkhy6); +assign Iwkhy6 = (~(Bwi7z6[7] & Hzqyx6)); +assign Awkhy6 = (~(Ba0zx6 & Nbj7z6[2])); +assign Mukhy6 = (Qwkhy6 & Ywkhy6); +assign Ywkhy6 = (~(D90zx6 & Lgj7z6[182])); +assign Qwkhy6 = (~(Za0zx6 & Lgj7z6[170])); +assign Wtkhy6 = (Gxkhy6 & Oxkhy6); +assign Oxkhy6 = (Wxkhy6 & Eykhy6); +assign Eykhy6 = (~(Hb0zx6 & Lgj7z6[158])); +assign Wxkhy6 = (~(Vc0zx6 & Lgj7z6[146])); +assign Gxkhy6 = (Mykhy6 & Uykhy6); +assign Uykhy6 = (~(Dd0zx6 & Lgj7z6[134])); +assign Mykhy6 = (~(Be0zx6 & Lgj7z6[122])); +assign Snkhy6 = (Czkhy6 & Kzkhy6); +assign Kzkhy6 = (Szkhy6 & A0lhy6); +assign A0lhy6 = (I0lhy6 & Q0lhy6); +assign Q0lhy6 = (Y0lhy6 & G1lhy6); +assign G1lhy6 = (~(Ji0zx6 & Lgj7z6[86])); +assign Y0lhy6 = (O1lhy6 & W1lhy6); +assign W1lhy6 = (~(Je0zx6 & Lgj7z6[110])); +assign O1lhy6 = (~(Bi0zx6 & Lgj7z6[98])); +assign I0lhy6 = (E2lhy6 & M2lhy6); +assign M2lhy6 = (~(Dh0zx6 & Lgj7z6[74])); +assign E2lhy6 = (~(Hj0zx6 & Lgj7z6[62])); +assign Szkhy6 = (U2lhy6 & C3lhy6); +assign C3lhy6 = (K3lhy6 & S3lhy6); +assign S3lhy6 = (~(Pj0zx6 & Lgj7z6[50])); +assign K3lhy6 = (~(Dl0zx6 & Lgj7z6[38])); +assign U2lhy6 = (A4lhy6 & I4lhy6); +assign I4lhy6 = (~(Ll0zx6 & Lgj7z6[26])); +assign A4lhy6 = (~(Jm0zx6 & Lgj7z6[14])); +assign Czkhy6 = (Q4lhy6 & Y4lhy6); +assign Y4lhy6 = (G5lhy6 & O5lhy6); +assign O5lhy6 = (W5lhy6 & E6lhy6); +assign E6lhy6 = (~(Jyqyx6 & G5j7z6[7])); +assign W5lhy6 = (M6lhy6 & U6lhy6); +assign U6lhy6 = (~(Rm0zx6 & Lgj7z6[2])); +assign M6lhy6 = (~(Pzqyx6 & G5j7z6[39])); +assign G5lhy6 = (C7lhy6 & K7lhy6); +assign K7lhy6 = (~(B2ryx6 & M6j7z6[39])); +assign C7lhy6 = (~(J2ryx6 & M6j7z6[7])); +assign Q4lhy6 = (S7lhy6 & A8lhy6); +assign A8lhy6 = (I8lhy6 & Q8lhy6); +assign Q8lhy6 = (~(D1ryx6 & Ohj7z6[39])); +assign I8lhy6 = (~(X3ryx6 & Ohj7z6[7])); +assign S7lhy6 = (Hr0zx6 & Y8lhy6); +assign Y8lhy6 = (~(STCALIB[7] & F4ryx6)); +assign Hr0zx6 = (Hjqyx6 & G9lhy6); +assign G9lhy6 = (~(Lpyyx6 & Jyuyx6)); +assign Hjqyx6 = (~(O9lhy6 & Koaiw6)); +assign O9lhy6 = (Hjsyx6 & Jyuyx6); +assign Jyuyx6 = (Dxuyx6 & Toi7z6[5]); +assign Dxuyx6 = (W9lhy6 & Ealhy6); +assign W9lhy6 = (~(Malhy6 | Ualhy6)); +assign Umkhy6 = (~(Klo7z6[1] & Cblhy6)); +assign Cblhy6 = (~(Kblhy6 & Sblhy6)); +assign Sblhy6 = (Aclhy6 & Iclhy6); +assign Iclhy6 = (Qclhy6 & Yclhy6); +assign Yclhy6 = (Gdlhy6 & Ravyx6); +assign Gdlhy6 = (~(Kfq7z6[7] & S7hiw6)); +assign S7hiw6 = (~(Odlhy6 | Wdlhy6)); +assign Qclhy6 = (Eelhy6 & Melhy6); +assign Melhy6 = (~(Tbq7z6[7] & Qsgiw6)); +assign Qsgiw6 = (B2qyx6 & Uelhy6); +assign Uelhy6 = (!Cflhy6); +assign Eelhy6 = (~(Pdq7z6[7] & Oka8x6)); +assign Oka8x6 = (~(Odlhy6 | Kflhy6)); +assign Aclhy6 = (Sflhy6 & Aglhy6); +assign Aglhy6 = (Iglhy6 & Qglhy6); +assign Qglhy6 = (~(Hhq7z6[7] & Ydliw6)); +assign Ydliw6 = (~(Yglhy6 | Cflhy6)); +assign Iglhy6 = (~(Cjq7z6[7] & Cza8x6)); +assign Cza8x6 = (~(Cflhy6 | Ghlhy6)); +assign Sflhy6 = (Ohlhy6 & Whlhy6); +assign Whlhy6 = (~(T9tyx6 & Eu77z6)); +assign Ohlhy6 = (~(X9q7z6[2] & B6qyx6)); +assign Kblhy6 = (Eilhy6 & Milhy6); +assign Milhy6 = (Uilhy6 & Cjlhy6); +assign Cjlhy6 = (Kjlhy6 & Sjlhy6); +assign Sjlhy6 = (~(D5qyx6 & Bqp7z6[7])); +assign Kjlhy6 = (~(L9qyx6 & E6p7z6[7])); +assign Uilhy6 = (Aklhy6 & Iklhy6); +assign Iklhy6 = (~(Fcqyx6 & B2q7z6[7])); +assign Aklhy6 = (~(Nao7x6 & W22ft6)); +assign Eilhy6 = (Qklhy6 & R21zx6); +assign R21zx6 = (T1qyx6 & Yklhy6); +assign Yklhy6 = (~(R6tyx6 & Bxeiw6)); +assign R6tyx6 = (Gllhy6 & Af4ft6); +assign T1qyx6 = (~(Qcjhy6 & J2qyx6)); +assign J2qyx6 = (~(Ollhy6 | Zveiw6)); +assign Zveiw6 = (!Af4ft6); +assign Ollhy6 = (~(Nmq7z6[5] & Nmq7z6[3])); +assign Qklhy6 = (Wllhy6 & Emlhy6); +assign Emlhy6 = (~(Tdqyx6 & Mkp7z6[7])); +assign Wllhy6 = (~(U9p7z6[7] & Hfqyx6)); +assign Kfkhy6 = (Mmlhy6 & Umlhy6); +assign Umlhy6 = (Cnlhy6 & Knlhy6); +assign Knlhy6 = (~(Klo7z6[3] & Snlhy6)); +assign Snlhy6 = (~(Aolhy6 & Iolhy6)); +assign Iolhy6 = (Qolhy6 & Yolhy6); +assign Yolhy6 = (~(Mphiw6 & Gplhy6)); +assign Gplhy6 = (~(Oplhy6 & Wplhy6)); +assign Wplhy6 = (Eqlhy6 & Mqlhy6); +assign Mqlhy6 = (Uqlhy6 & Crlhy6); +assign Crlhy6 = (~(Pbpyx6 & Zshiw6)); +assign Zshiw6 = (Krlhy6 & Srlhy6); +assign Srlhy6 = (Xfymz6[5] & Aslhy6); +assign Krlhy6 = (L9pyx6 & Xfymz6[7]); +assign Uqlhy6 = (~(Biymz6[7] & Ddpyx6)); +assign Eqlhy6 = (Islhy6 & Qslhy6); +assign Qslhy6 = (~(Vv67v6 & Fgpyx6)); +assign Islhy6 = (~(Sgymz6[4] & Ngpyx6)); +assign Oplhy6 = (Yslhy6 & N4yyx6); +assign N4yyx6 = (Pjpyx6 & Gtlhy6); +assign Gtlhy6 = (~(N8pyx6 & Xbpyx6)); +assign Pjpyx6 = (Z2xyx6 & Otlhy6); +assign Otlhy6 = (~(Wtlhy6 & Eulhy6)); +assign Eulhy6 = (Xfymz6[2] & Xbpyx6); +assign Wtlhy6 = (Xfymz6[4] & Xfymz6[3]); +assign Z2xyx6 = (~(J2xyx6 & Xbpyx6)); +assign Xbpyx6 = (L9pyx6 & Mulhy6); +assign Yslhy6 = (Uulhy6 & Cvlhy6); +assign Cvlhy6 = (~(Ojymz6[4] & Hfpyx6)); +assign Uulhy6 = (~(Unymz6[4] & Thpyx6)); +assign Qolhy6 = (Kvlhy6 & Svlhy6); +assign Svlhy6 = (~(Kniiw6 & Awlhy6)); +assign Awlhy6 = (~(Hbzyx6 & Ruxyx6)); +assign Ruxyx6 = (~(Iwlhy6 & J02nz6[5])); +assign Iwlhy6 = (B2wyx6 & J02nz6[2]); +assign B2wyx6 = (!T5uyx6); +assign T5uyx6 = (~(Qwlhy6 & Ywlhy6)); +assign Qwlhy6 = (J02nz6[4] & Xvxyx6); +assign Hbzyx6 = (Gxlhy6 & Vwxyx6); +assign Vwxyx6 = (~(Oxlhy6 & J02nz6[2])); +assign Oxlhy6 = (!Fopyx6); +assign Fopyx6 = (~(Wxlhy6 & Tppyx6)); +assign Wxlhy6 = (J02nz6[4] & J02nz6[8]); +assign Gxlhy6 = (L1wyx6 & Eylhy6); +assign L1wyx6 = (~(Mylhy6 & Pbzyx6)); +assign Pbzyx6 = (Uylhy6 & Ywlhy6); +assign Ywlhy6 = (~(Czlhy6 | J02nz6[3])); +assign Uylhy6 = (J02nz6[5] & Xvxyx6); +assign Mylhy6 = (J02nz6[2] & Puhiw6); +assign Kvlhy6 = (~(Kzlhy6 & Szlhy6)); +assign Szlhy6 = (~(Fotyx6 & A0mhy6)); +assign A0mhy6 = (~(J2uyx6 & I0mhy6)); +assign I0mhy6 = (~(Q0mhy6 & Y0mhy6)); +assign Y0mhy6 = (~(Ti2nz6[1] & Ti2nz6[2])); +assign J2uyx6 = (~(B2uyx6 | G1mhy6)); +assign Fotyx6 = (~(Pfxyx6 & O1mhy6)); +assign Pfxyx6 = (~(G1mhy6 | Ti2nz6[0])); +assign G1mhy6 = (~(Ti2nz6[3] & Xzoyx6)); +assign Xzoyx6 = (~(W1mhy6 | Ti2nz6[4])); +assign Aolhy6 = (E2mhy6 & M2mhy6); +assign M2mhy6 = (~(Oo1nz6[7] & U2mhy6)); +assign E2mhy6 = (C3mhy6 & K3mhy6); +assign K3mhy6 = (~(Pk1nz6[7] & A8jhy6)); +assign C3mhy6 = (~(Au1nz6[7] & S3mhy6)); +assign Cnlhy6 = (~(Klo7z6[2] & A4mhy6)); +assign A4mhy6 = (~(I4mhy6 & Q4mhy6)); +assign Q4mhy6 = (Y4mhy6 & G5mhy6); +assign G5mhy6 = (O5mhy6 & W5mhy6); +assign W5mhy6 = (~(Fpo7z6[5] & H9kiw6)); +assign O5mhy6 = (E6mhy6 & A8khy6); +assign A8khy6 = (~(Pfuyx6 & M6mhy6)); +assign E6mhy6 = (~(Nqo7z6[5] & M8kiw6)); +assign Y4mhy6 = (U6mhy6 & C7mhy6); +assign C7mhy6 = (~(Hxo7z6[5] & W6kiw6)); +assign U6mhy6 = (K7mhy6 & S7mhy6); +assign S7mhy6 = (~(Tetet6 & S4kiw6)); +assign K7mhy6 = (~(Ouo7z6[5] & K7kiw6)); +assign I4mhy6 = (A8mhy6 & I8mhy6); +assign I8mhy6 = (Q8mhy6 & Y8mhy6); +assign Y8mhy6 = (~(W3p7z6[7] & G5kiw6)); +assign Q8mhy6 = (G9mhy6 & O9mhy6); +assign O9mhy6 = (~(Vro7z6[5] & Y7kiw6)); +assign G9mhy6 = (~(T2p7z6[7] & U5kiw6)); +assign A8mhy6 = (Tlyyx6 & W9mhy6); +assign W9mhy6 = (~(A0p7z6[5] & I6kiw6)); +assign Tlyyx6 = (~(Z6ryx6 | Eamhy6)); +assign Eamhy6 = (Mamhy6 & M6mhy6); +assign Mamhy6 = (Uamhy6 & R2syx6); +assign Z6ryx6 = (Cbmhy6 & Z4p7z6[2]); +assign Cbmhy6 = (Z4p7z6[1] & M6mhy6); +assign M6mhy6 = (~(Hfuyx6 | Ruzyx6)); +assign Ruzyx6 = (~(Kbmhy6 & Z4p7z6[5])); +assign Kbmhy6 = (Z4p7z6[3] & Upeiw6); +assign Upeiw6 = (!Z4p7z6[4]); +assign Mmlhy6 = (Sbmhy6 & Acmhy6); +assign Acmhy6 = (~(N41zx6 & Klo7z6[0])); +assign N41zx6 = (Icmhy6 & V41zx6); +assign V41zx6 = (~(Hnryx6 | Pruyx6)); +assign Hnryx6 = (Tt4yx6 | Zauyx6); +assign Zauyx6 = (~(Qcmhy6 & Zfs7z6[8])); +assign Qcmhy6 = (Mm27v6 & Zfs7z6[7]); +assign Icmhy6 = (Or27v6 & Ap27v6); +assign Sbmhy6 = (~(Ies7z6[7] & Tltyx6)); +assign Uekhy6 = (~(Zmoyx6 & Rfe7x6)); +assign Rfe7x6 = (~(Ycmhy6 & Gdmhy6)); +assign Gdmhy6 = (~(Yca7z6 & Xnoyx6)); +assign Xnoyx6 = (~(Odmhy6 & Wdmhy6)); +assign Odmhy6 = (~(Eemhy6 & Memhy6)); +assign Yca7z6 = (~(Uemhy6 & Cfmhy6)); +assign Cfmhy6 = (~(HRDATAD[7] & Qln7z6[0])); +assign Uemhy6 = (~(HRDATAS[7] & Qln7z6[1])); +assign Ycmhy6 = (~(Tim7z6[7] & Tpoyx6)); +assign Tpoyx6 = (~(Memhy6 | Kfmhy6)); +assign Memhy6 = (~(Sfmhy6 & Yxixx6)); +assign Sfmhy6 = (~(Jkqnv6 | Ven7z6[0])); +assign Eekhy6 = (Agmhy6 & Igmhy6); +assign Igmhy6 = (~(HRDATAS[7] & Ad47x6)); +assign Agmhy6 = (~(HRDATAD[7] & Mc47x6)); +assign Odkhy6 = (~(Lpryx6 & Kwp7x6)); +assign Moo7v6 = (~(Qgmhy6 & Ygmhy6)); +assign Ygmhy6 = (~(Jexmz6[8] & K94iw6)); +assign Qgmhy6 = (Ghmhy6 & Ohmhy6); +assign Ohmhy6 = (~(Lloyx6 & Jf9ov6)); +assign Jf9ov6 = (~(Whmhy6 & Eimhy6)); +assign Eimhy6 = (Mimhy6 & Uimhy6); +assign Uimhy6 = (Bqoyx6 | Xaf7x6); +assign Xaf7x6 = (Cjmhy6 & Kjmhy6); +assign Kjmhy6 = (Sjmhy6 & Akmhy6); +assign Akmhy6 = (Ikmhy6 & Qkmhy6); +assign Qkmhy6 = (~(Rmzyx6 & Ykmhy6)); +assign Ykmhy6 = (~(Glmhy6 & Olmhy6)); +assign Olmhy6 = (Wlmhy6 & Emmhy6); +assign Emmhy6 = (Mmmhy6 & Ummhy6); +assign Ummhy6 = (~(Hyj7z6[0] & Dfk7z6[8])); +assign Mmmhy6 = (~(Hyj7z6[1] & Lpk7z6[8])); +assign Wlmhy6 = (Cnmhy6 & Knmhy6); +assign Knmhy6 = (~(Hyj7z6[2] & Tzk7z6[8])); +assign Cnmhy6 = (~(Hyj7z6[3] & Bal7z6[8])); +assign Glmhy6 = (Snmhy6 & Aomhy6); +assign Aomhy6 = (Iomhy6 & Qomhy6); +assign Qomhy6 = (~(Hyj7z6[4] & Jkl7z6[8])); +assign Iomhy6 = (~(Hyj7z6[5] & Rul7z6[8])); +assign Snmhy6 = (Yomhy6 & Gpmhy6); +assign Gpmhy6 = (~(Hyj7z6[6] & Z4m7z6[8])); +assign Yomhy6 = (~(Hyj7z6[7] & Hfm7z6[8])); +assign Ikmhy6 = (~(Xbzyx6 & Opmhy6)); +assign Opmhy6 = (~(Wpmhy6 & Eqmhy6)); +assign Eqmhy6 = (Mqmhy6 & Uqmhy6); +assign Uqmhy6 = (Crmhy6 & Krmhy6); +assign Krmhy6 = (~(Hyj7z6[0] & Rbk7z6[6])); +assign Crmhy6 = (~(Hyj7z6[1] & Zlk7z6[6])); +assign Mqmhy6 = (Srmhy6 & Asmhy6); +assign Asmhy6 = (~(Hyj7z6[2] & Hwk7z6[6])); +assign Srmhy6 = (~(Hyj7z6[3] & P6l7z6[6])); +assign Wpmhy6 = (Ismhy6 & Qsmhy6); +assign Qsmhy6 = (Ysmhy6 & Gtmhy6); +assign Gtmhy6 = (~(Hyj7z6[4] & Xgl7z6[6])); +assign Ysmhy6 = (~(Hyj7z6[5] & Frl7z6[6])); +assign Ismhy6 = (Otmhy6 & Wtmhy6); +assign Wtmhy6 = (~(Hyj7z6[6] & N1m7z6[6])); +assign Otmhy6 = (~(Hyj7z6[7] & Vbm7z6[6])); +assign Sjmhy6 = (Eumhy6 & Mumhy6); +assign Mumhy6 = (~(Uumhy6 & Ngqyx6)); +assign Uumhy6 = (~(Cvmhy6 & Kvmhy6)); +assign Kvmhy6 = (Svmhy6 & Awmhy6); +assign Awmhy6 = (Iwmhy6 & Qwmhy6); +assign Qwmhy6 = (Ywmhy6 & Gxmhy6); +assign Gxmhy6 = (~(Hnqyx6 & Fuadt6)); +assign Ywmhy6 = (Dhsyx6 & Bqyyx6); +assign Iwmhy6 = (Oxmhy6 & Wxmhy6); +assign Wxmhy6 = (~(H1j7z6[8] & Rqqyx6)); +assign Oxmhy6 = (Eymhy6 & Mymhy6); +assign Mymhy6 = (~(Prqyx6 & Z3j7z6[8])); +assign Eymhy6 = (~(A0j7z6[8] & Xrqyx6)); +assign Svmhy6 = (Uymhy6 & Czmhy6); +assign Czmhy6 = (Kzmhy6 & Szmhy6); +assign Szmhy6 = (~(Dxqyx6 & Nob7z6[8])); +assign Kzmhy6 = (A0nhy6 & I0nhy6); +assign I0nhy6 = (~(Yydet6 & Ttqyx6)); +assign A0nhy6 = (~(Bzi7z6[8] & Vsqyx6)); +assign Uymhy6 = (Q0nhy6 & Y0nhy6); +assign Y0nhy6 = (~(Wui7z6[8] & Lxqyx6)); +assign Q0nhy6 = (~(Dri7z6[8] & Fwqyx6)); +assign Cvmhy6 = (G1nhy6 & O1nhy6); +assign O1nhy6 = (W1nhy6 & E2nhy6); +assign E2nhy6 = (M2nhy6 & U2nhy6); +assign U2nhy6 = (~(Pzqyx6 & G5j7z6[40])); +assign M2nhy6 = (C3nhy6 & K3nhy6); +assign K3nhy6 = (~(Bwi7z6[8] & Hzqyx6)); +assign C3nhy6 = (~(Qti7z6[8] & Svkhy6)); +assign W1nhy6 = (S3nhy6 & A4nhy6); +assign A4nhy6 = (~(Jyqyx6 & G5j7z6[8])); +assign S3nhy6 = (~(B2ryx6 & M6j7z6[40])); +assign G1nhy6 = (I4nhy6 & Q4nhy6); +assign Q4nhy6 = (Y4nhy6 & G5nhy6); +assign G5nhy6 = (~(O5nhy6 & Hsi7z6[0])); +assign Y4nhy6 = (W5nhy6 & E6nhy6); +assign E6nhy6 = (~(J2ryx6 & M6j7z6[8])); +assign W5nhy6 = (~(D1ryx6 & Ohj7z6[40])); +assign I4nhy6 = (M6nhy6 & U6nhy6); +assign U6nhy6 = (~(X3ryx6 & Ohj7z6[8])); +assign M6nhy6 = (~(STCALIB[8] & F4ryx6)); +assign Eumhy6 = (~(Klo7z6[1] & C7nhy6)); +assign C7nhy6 = (~(K7nhy6 & S7nhy6)); +assign S7nhy6 = (A8nhy6 & I8nhy6); +assign I8nhy6 = (Q8nhy6 & Y8nhy6); +assign Y8nhy6 = (~(X9q7z6[3] & B6qyx6)); +assign Q8nhy6 = (G9nhy6 & Ravyx6); +assign G9nhy6 = (~(T9tyx6 & Wt77z6)); +assign A8nhy6 = (O9nhy6 & W9nhy6); +assign W9nhy6 = (~(D5qyx6 & Bqp7z6[8])); +assign O9nhy6 = (~(L9qyx6 & E6p7z6[8])); +assign K7nhy6 = (Eanhy6 & Manhy6); +assign Manhy6 = (Uanhy6 & Cbnhy6); +assign Cbnhy6 = (~(Fcqyx6 & B2q7z6[8])); +assign Uanhy6 = (~(Q0a8x6 & Cq2ft6)); +assign Eanhy6 = (Kbnhy6 & Sbnhy6); +assign Sbnhy6 = (~(Tdqyx6 & Mkp7z6[8])); +assign Kbnhy6 = (~(U9p7z6[8] & Hfqyx6)); +assign Cjmhy6 = (Acnhy6 & Icnhy6); +assign Icnhy6 = (Qcnhy6 & Ycnhy6); +assign Ycnhy6 = (~(Klo7z6[3] & Gdnhy6)); +assign Gdnhy6 = (~(Odnhy6 & Wdnhy6)); +assign Wdnhy6 = (Eenhy6 & Menhy6); +assign Menhy6 = (Uenhy6 & Cfnhy6); +assign Cfnhy6 = (~(Pk1nz6[8] & A8jhy6)); +assign Uenhy6 = (Kfnhy6 & Sfnhy6); +assign Sfnhy6 = (~(Agnhy6 & Ignhy6)); +assign Agnhy6 = (Mphiw6 & Tah7v6); +assign Kfnhy6 = (Jasyx6 | Qgnhy6); +assign Jasyx6 = (~(Ygnhy6 & Rgiiw6)); +assign Rgiiw6 = (Ghnhy6 & Ohnhy6); +assign Ghnhy6 = (B6wyx6 & J02nz6[9]); +assign B6wyx6 = (~(Czlhy6 | J02nz6[4])); +assign Ygnhy6 = (J02nz6[2] & Jke7v6); +assign Eenhy6 = (Whnhy6 & Einhy6); +assign Einhy6 = (~(Ojymz6[5] & Minhy6)); +assign Whnhy6 = (~(Unymz6[5] & Uinhy6)); +assign Odnhy6 = (Cjnhy6 & Kjnhy6); +assign Kjnhy6 = (Sjnhy6 & Aknhy6); +assign Aknhy6 = (~(T077v6 & Iknhy6)); +assign Sjnhy6 = (Qknhy6 & Yknhy6); +assign Yknhy6 = (~(Sgymz6[5] & Glnhy6)); +assign Qknhy6 = (~(Biymz6[8] & Olnhy6)); +assign Cjnhy6 = (Wlnhy6 & Emnhy6); +assign Emnhy6 = (~(Zs1nz6[0] & S3mhy6)); +assign Wlnhy6 = (~(Nn1nz6[0] & U2mhy6)); +assign Qcnhy6 = (~(Klo7z6[2] & Mmnhy6)); +assign Mmnhy6 = (~(Umnhy6 & Cnnhy6)); +assign Cnnhy6 = (Knnhy6 & Snnhy6); +assign Snnhy6 = (Aonhy6 & Ionhy6); +assign Ionhy6 = (~(Sctet6 & S4kiw6)); +assign Aonhy6 = (Qonhy6 & Yonhy6); +assign Yonhy6 = (~(Nqo7z6[6] & M8kiw6)); +assign Qonhy6 = (~(Fpo7z6[6] & H9kiw6)); +assign Knnhy6 = (Gpnhy6 & Opnhy6); +assign Opnhy6 = (~(Ouo7z6[6] & K7kiw6)); +assign Gpnhy6 = (~(Hxo7z6[6] & W6kiw6)); +assign Umnhy6 = (Wpnhy6 & Eqnhy6); +assign Eqnhy6 = (Mqnhy6 & Uqnhy6); +assign Uqnhy6 = (~(Vro7z6[6] & Y7kiw6)); +assign Mqnhy6 = (~(T2p7z6[8] & U5kiw6)); +assign Wpnhy6 = (Crnhy6 & Krnhy6); +assign Krnhy6 = (~(W3p7z6[8] & G5kiw6)); +assign Crnhy6 = (~(A0p7z6[6] & I6kiw6)); +assign Acnhy6 = (Srnhy6 & Asnhy6); +assign Asnhy6 = (~(H56ft6 & Lltyx6)); +assign Srnhy6 = (~(Ies7z6[8] & Tltyx6)); +assign Mimhy6 = (~(Zmoyx6 & Ebf7x6)); +assign Ebf7x6 = (~(Isnhy6 & Qsnhy6)); +assign Qsnhy6 = (~(Ysnhy6 & Qca7z6)); +assign Qca7z6 = (~(Gtnhy6 & Otnhy6)); +assign Otnhy6 = (~(HRDATAD[8] & Qln7z6[0])); +assign Gtnhy6 = (~(HRDATAS[8] & Qln7z6[1])); +assign Isnhy6 = (Wtnhy6 & Eunhy6); +assign Eunhy6 = (~(Munhy6 & S7n7z6[0])); +assign Wtnhy6 = (~(Tim7z6[8] & Uunhy6)); +assign Whmhy6 = (Cvnhy6 & Kvnhy6); +assign Kvnhy6 = (~(HRDATAS[8] & Ad47x6)); +assign Cvnhy6 = (~(HRDATAD[8] & Mc47x6)); +assign Ghmhy6 = (~(Lpryx6 & Kqonv6)); +assign Foo7v6 = (~(Svnhy6 & Awnhy6)); +assign Awnhy6 = (~(Jexmz6[9] & K94iw6)); +assign Svnhy6 = (Iwnhy6 & Qwnhy6); +assign Qwnhy6 = (~(Lloyx6 & Ab67x6)); +assign Ab67x6 = (~(Ywnhy6 & Gxnhy6)); +assign Gxnhy6 = (Oxnhy6 & Wxnhy6); +assign Wxnhy6 = (Bqoyx6 | Kme7x6); +assign Kme7x6 = (Eynhy6 & Mynhy6); +assign Mynhy6 = (Uynhy6 & Cznhy6); +assign Cznhy6 = (Kznhy6 & Sznhy6); +assign Sznhy6 = (~(Rmzyx6 & A0ohy6)); +assign A0ohy6 = (~(I0ohy6 & Q0ohy6)); +assign Q0ohy6 = (Y0ohy6 & G1ohy6); +assign G1ohy6 = (O1ohy6 & W1ohy6); +assign W1ohy6 = (~(Hyj7z6[3] & Sybiw6)); +assign O1ohy6 = (~(Hyj7z6[2] & Lybiw6)); +assign Y0ohy6 = (E2ohy6 & M2ohy6); +assign M2ohy6 = (~(Hyj7z6[1] & Eybiw6)); +assign E2ohy6 = (~(Hyj7z6[5] & Zybiw6)); +assign I0ohy6 = (U2ohy6 & C3ohy6); +assign C3ohy6 = (K3ohy6 & S3ohy6); +assign S3ohy6 = (~(Hyj7z6[6] & Gzbiw6)); +assign K3ohy6 = (~(Hyj7z6[7] & Nzbiw6)); +assign U2ohy6 = (A4ohy6 & I4ohy6); +assign I4ohy6 = (~(Hyj7z6[0] & Dfk7z6[9])); +assign A4ohy6 = (~(Hyj7z6[4] & Jkl7z6[9])); +assign Kznhy6 = (Q4ohy6 & Y4ohy6); +assign Y4ohy6 = (~(D1pyx6 & G5ohy6)); +assign G5ohy6 = (~(O5ohy6 & W5ohy6)); +assign W5ohy6 = (E6ohy6 & Z6yyx6); +assign E6ohy6 = (~(M6ohy6 & C5rnv6)); +assign M6ohy6 = (Unymz6[4] & Thpyx6); +assign O5ohy6 = (U6ohy6 & C7ohy6); +assign C7ohy6 = (~(Blsnv6 & Ngpyx6)); +assign U6ohy6 = (~(Hl4xx6 & Hfpyx6)); +assign Q4ohy6 = (~(Klo7z6[3] & K7ohy6)); +assign K7ohy6 = (~(S7ohy6 & A8ohy6)); +assign A8ohy6 = (~(W177v6 & Iknhy6)); +assign S7ohy6 = (I8ohy6 & Q8ohy6); +assign Q8ohy6 = (~(Pk1nz6[9] & A8jhy6)); +assign I8ohy6 = (~(Biymz6[9] & Olnhy6)); +assign Uynhy6 = (Y8ohy6 & G9ohy6); +assign G9ohy6 = (~(Klo7z6[1] & O9ohy6)); +assign O9ohy6 = (~(W9ohy6 & Eaohy6)); +assign Eaohy6 = (Maohy6 & Uaohy6); +assign Uaohy6 = (Cbohy6 & Kbohy6); +assign Kbohy6 = (~(T9tyx6 & Ot77z6)); +assign Cbohy6 = (Ravyx6 & Sbohy6); +assign Sbohy6 = (!Q0a8x6); +assign Maohy6 = (Acohy6 & Icohy6); +assign Icohy6 = (~(Id4ft6 & B6qyx6)); +assign Acohy6 = (~(D5qyx6 & Bqp7z6[9])); +assign W9ohy6 = (Qcohy6 & Ycohy6); +assign Ycohy6 = (Gdohy6 & Odohy6); +assign Odohy6 = (~(L9qyx6 & E6p7z6[9])); +assign Gdohy6 = (~(Fcqyx6 & B2q7z6[9])); +assign Qcohy6 = (Wdohy6 & Eeohy6); +assign Eeohy6 = (~(Tdqyx6 & Mkp7z6[9])); +assign Wdohy6 = (~(U9p7z6[9] & Hfqyx6)); +assign Y8ohy6 = (Meohy6 & Ueohy6); +assign Ueohy6 = (~(Xbzyx6 & Cfohy6)); +assign Cfohy6 = (~(Kfohy6 & Sfohy6)); +assign Sfohy6 = (Agohy6 & Igohy6); +assign Igohy6 = (Qgohy6 & Ygohy6); +assign Ygohy6 = (~(Hyj7z6[0] & Rbk7z6[7])); +assign Qgohy6 = (~(Hyj7z6[1] & Zlk7z6[7])); +assign Agohy6 = (Ghohy6 & Ohohy6); +assign Ohohy6 = (~(Hyj7z6[2] & Hwk7z6[7])); +assign Ghohy6 = (~(Hyj7z6[3] & P6l7z6[7])); +assign Kfohy6 = (Whohy6 & Eiohy6); +assign Eiohy6 = (Miohy6 & Uiohy6); +assign Uiohy6 = (~(Hyj7z6[4] & Xgl7z6[7])); +assign Miohy6 = (~(Hyj7z6[5] & Frl7z6[7])); +assign Whohy6 = (Cjohy6 & Kjohy6); +assign Kjohy6 = (~(Hyj7z6[6] & N1m7z6[7])); +assign Cjohy6 = (~(Hyj7z6[7] & Vbm7z6[7])); +assign Meohy6 = (~(Sjohy6 & Ngqyx6)); +assign Sjohy6 = (~(Akohy6 & Ikohy6)); +assign Ikohy6 = (Qkohy6 & Ykohy6); +assign Ykohy6 = (Glohy6 & Olohy6); +assign Olohy6 = (Wlohy6 & Emohy6); +assign Emohy6 = (~(A0j7z6[9] & Xrqyx6)); +assign Wlohy6 = (Mmohy6 & Umohy6); +assign Umohy6 = (~(Cnohy6 & Fs0zx6)); +assign Cnohy6 = (Lpyyx6 & Tpyyx6); +assign Mmohy6 = (~(Dtadt6 & Hnqyx6)); +assign Hnqyx6 = (~(Tlqyx6 | Knohy6)); +assign Glohy6 = (Snohy6 & Aoohy6); +assign Aoohy6 = (~(H1j7z6[9] & Rqqyx6)); +assign Snohy6 = (~(X0eet6 & Ttqyx6)); +assign Qkohy6 = (Ioohy6 & Qoohy6); +assign Qoohy6 = (Yoohy6 & Gpohy6); +assign Gpohy6 = (~(Dri7z6[9] & Fwqyx6)); +assign Yoohy6 = (Opohy6 & Wpohy6); +assign Wpohy6 = (~(Bzi7z6[9] & Vsqyx6)); +assign Opohy6 = (~(Wui7z6[9] & Lxqyx6)); +assign Ioohy6 = (Eqohy6 & Mqohy6); +assign Mqohy6 = (~(Bwi7z6[9] & Hzqyx6)); +assign Eqohy6 = (~(Svkhy6 & Qti7z6[9])); +assign Akohy6 = (Uqohy6 & Crohy6); +assign Crohy6 = (Krohy6 & Srohy6); +assign Srohy6 = (Asohy6 & Isohy6); +assign Isohy6 = (~(B2ryx6 & M6j7z6[41])); +assign Asohy6 = (Qsohy6 & Ysohy6); +assign Ysohy6 = (~(Pzqyx6 & G5j7z6[41])); +assign Qsohy6 = (~(Jyqyx6 & G5j7z6[9])); +assign Krohy6 = (Gtohy6 & Otohy6); +assign Otohy6 = (~(J2ryx6 & M6j7z6[9])); +assign Gtohy6 = (~(D1ryx6 & Ohj7z6[41])); +assign Uqohy6 = (Wtohy6 & Euohy6); +assign Euohy6 = (Muohy6 & Uuohy6); +assign Uuohy6 = (~(O5nhy6 & Hsi7z6[1])); +assign Muohy6 = (~(X3ryx6 & Ohj7z6[9])); +assign Wtohy6 = (Z2ryx6 & Cvohy6); +assign Cvohy6 = (~(STCALIB[9] & F4ryx6)); +assign Eynhy6 = (Kvohy6 & Svohy6); +assign Svohy6 = (Awohy6 & Iwohy6); +assign Iwohy6 = (~(Zs1nz6[1] & Xjtyx6)); +assign Awohy6 = (Qwohy6 & Ywohy6); +assign Ywohy6 = (~(Klo7z6[2] & Gxohy6)); +assign Gxohy6 = (~(Oxohy6 & Wxohy6)); +assign Wxohy6 = (Eyohy6 & Myohy6); +assign Myohy6 = (Uyohy6 & Czohy6); +assign Czohy6 = (~(Fpo7z6[7] & H9kiw6)); +assign Uyohy6 = (Kzohy6 & S7khy6); +assign S7khy6 = (!Q3kiw6); +assign Q3kiw6 = (Szohy6 & A0phy6); +assign Szohy6 = (Hfuyx6 & Uamhy6); +assign Kzohy6 = (~(Nqo7z6[7] & M8kiw6)); +assign Eyohy6 = (I0phy6 & Q0phy6); +assign Q0phy6 = (~(Ratet6 & S4kiw6)); +assign I0phy6 = (~(Ouo7z6[7] & K7kiw6)); +assign Oxohy6 = (Y0phy6 & G1phy6); +assign G1phy6 = (O1phy6 & W1phy6); +assign W1phy6 = (~(T2p7z6[9] & U5kiw6)); +assign O1phy6 = (E2phy6 & M2phy6); +assign M2phy6 = (~(Hxo7z6[7] & W6kiw6)); +assign E2phy6 = (~(Vro7z6[7] & Y7kiw6)); +assign Y0phy6 = (U2phy6 & C3phy6); +assign C3phy6 = (~(W3p7z6[9] & G5kiw6)); +assign U2phy6 = (~(A0p7z6[7] & I6kiw6)); +assign Qwohy6 = (~(Nn1nz6[1] & Pjtyx6)); +assign Kvohy6 = (K3phy6 & S3phy6); +assign S3phy6 = (~(Zm37v6 & Lltyx6)); +assign K3phy6 = (~(Ies7z6[9] & Tltyx6)); +assign Oxnhy6 = (~(Zmoyx6 & Rme7x6)); +assign Rme7x6 = (~(A4phy6 & I4phy6)); +assign I4phy6 = (~(Ysnhy6 & Ica7z6)); +assign Ica7z6 = (~(Q4phy6 & Y4phy6)); +assign Y4phy6 = (~(HRDATAD[9] & Qln7z6[0])); +assign Q4phy6 = (~(HRDATAS[9] & Qln7z6[1])); +assign A4phy6 = (~(Tim7z6[9] & Uunhy6)); +assign Ywnhy6 = (G5phy6 & O5phy6); +assign O5phy6 = (~(HRDATAS[9] & Ad47x6)); +assign G5phy6 = (~(HRDATAD[9] & Mc47x6)); +assign Iwnhy6 = (~(Lpryx6 & H5q7x6)); +assign Yno7v6 = (~(W5phy6 & E6phy6)); +assign E6phy6 = (~(Jexmz6[10] & K94iw6)); +assign W5phy6 = (M6phy6 & U6phy6); +assign U6phy6 = (~(Lloyx6 & Kdfov6)); +assign Kdfov6 = (~(C7phy6 & K7phy6)); +assign K7phy6 = (S7phy6 & A8phy6); +assign A8phy6 = (Bqoyx6 | Xpe7x6); +assign Xpe7x6 = (I8phy6 & Q8phy6); +assign Q8phy6 = (Y8phy6 & G9phy6); +assign G9phy6 = (O9phy6 & W9phy6); +assign W9phy6 = (~(Rmzyx6 & Eaphy6)); +assign Eaphy6 = (~(Maphy6 & Uaphy6)); +assign Uaphy6 = (Cbphy6 & Kbphy6); +assign Kbphy6 = (Sbphy6 & Acphy6); +assign Acphy6 = (~(Hyj7z6[3] & I0ciw6)); +assign Sbphy6 = (~(Hyj7z6[2] & B0ciw6)); +assign Cbphy6 = (Icphy6 & Qcphy6); +assign Qcphy6 = (~(Hyj7z6[1] & Uzbiw6)); +assign Icphy6 = (~(Hyj7z6[5] & P0ciw6)); +assign Maphy6 = (Ycphy6 & Gdphy6); +assign Gdphy6 = (Odphy6 & Wdphy6); +assign Wdphy6 = (~(Hyj7z6[6] & W0ciw6)); +assign Odphy6 = (~(Hyj7z6[7] & D1ciw6)); +assign Ycphy6 = (Eephy6 & Mephy6); +assign Mephy6 = (~(Hyj7z6[0] & Dfk7z6[10])); +assign Eephy6 = (~(Hyj7z6[4] & Jkl7z6[10])); +assign O9phy6 = (~(Xbzyx6 & Uephy6)); +assign Uephy6 = (~(Cfphy6 & Kfphy6)); +assign Kfphy6 = (Sfphy6 & Agphy6); +assign Agphy6 = (Igphy6 & Qgphy6); +assign Qgphy6 = (~(Hyj7z6[0] & Rbk7z6[8])); +assign Igphy6 = (~(Hyj7z6[1] & Zlk7z6[8])); +assign Sfphy6 = (Ygphy6 & Ghphy6); +assign Ghphy6 = (~(Hyj7z6[2] & Hwk7z6[8])); +assign Ygphy6 = (~(Hyj7z6[3] & P6l7z6[8])); +assign Cfphy6 = (Ohphy6 & Whphy6); +assign Whphy6 = (Eiphy6 & Miphy6); +assign Miphy6 = (~(Hyj7z6[4] & Xgl7z6[8])); +assign Eiphy6 = (~(Hyj7z6[5] & Frl7z6[8])); +assign Ohphy6 = (Uiphy6 & Cjphy6); +assign Cjphy6 = (~(Hyj7z6[6] & N1m7z6[8])); +assign Uiphy6 = (~(Hyj7z6[7] & Vbm7z6[8])); +assign Y8phy6 = (Kjphy6 & Sjphy6); +assign Sjphy6 = (~(Akphy6 & Ngqyx6)); +assign Akphy6 = (~(Ikphy6 & Qkphy6)); +assign Qkphy6 = (Ykphy6 & Glphy6); +assign Glphy6 = (Olphy6 & Wlphy6); +assign Wlphy6 = (Emphy6 & Mmphy6); +assign Mmphy6 = (~(H1j7z6[10] & Rqqyx6)); +assign Emphy6 = (Umphy6 & Cnphy6); +assign Cnphy6 = (~(Prqyx6 & Z3j7z6[10])); +assign Umphy6 = (~(A0j7z6[10] & Xrqyx6)); +assign Olphy6 = (Knphy6 & Snphy6); +assign Snphy6 = (~(W2eet6 & Ttqyx6)); +assign Knphy6 = (~(Bzi7z6[10] & Vsqyx6)); +assign Ykphy6 = (Aophy6 & Iophy6); +assign Iophy6 = (Qophy6 & Yophy6); +assign Yophy6 = (~(Wui7z6[10] & Lxqyx6)); +assign Qophy6 = (~(Dri7z6[10] & Fwqyx6)); +assign Aophy6 = (Gpphy6 & Opphy6); +assign Opphy6 = (~(Bwi7z6[10] & Hzqyx6)); +assign Gpphy6 = (~(Svkhy6 & Pnb7z6[10])); +assign Ikphy6 = (Wpphy6 & Eqphy6); +assign Eqphy6 = (Mqphy6 & Uqphy6); +assign Uqphy6 = (Crphy6 & Krphy6); +assign Krphy6 = (~(Pzqyx6 & G5j7z6[42])); +assign Crphy6 = (~(Jyqyx6 & G5j7z6[10])); +assign Mqphy6 = (Srphy6 & Asphy6); +assign Asphy6 = (~(B2ryx6 & M6j7z6[42])); +assign Srphy6 = (~(J2ryx6 & M6j7z6[10])); +assign Wpphy6 = (Isphy6 & Qsphy6); +assign Qsphy6 = (Ysphy6 & Gtphy6); +assign Gtphy6 = (~(D1ryx6 & Ohj7z6[42])); +assign Ysphy6 = (~(Hsi7z6[2] & O5nhy6)); +assign Isphy6 = (Otphy6 & Wtphy6); +assign Wtphy6 = (~(X3ryx6 & Ohj7z6[10])); +assign Otphy6 = (~(STCALIB[10] & F4ryx6)); +assign Kjphy6 = (~(Klo7z6[1] & Euphy6)); +assign Euphy6 = (~(Muphy6 & Uuphy6)); +assign Uuphy6 = (Cvphy6 & Kvphy6); +assign Kvphy6 = (Svphy6 & Awphy6); +assign Awphy6 = (~(W5q7z6[0] & B6qyx6)); +assign Svphy6 = (Iwphy6 & Ravyx6); +assign Iwphy6 = (~(T9tyx6 & Gt77z6)); +assign Cvphy6 = (Qwphy6 & Ywphy6); +assign Ywphy6 = (~(D5qyx6 & Bqp7z6[10])); +assign Qwphy6 = (~(L9qyx6 & E6p7z6[10])); +assign Muphy6 = (Gxphy6 & Oxphy6); +assign Oxphy6 = (Wxphy6 & Eyphy6); +assign Eyphy6 = (~(Fcqyx6 & B2q7z6[10])); +assign Wxphy6 = (~(Gwp7z6[0] & Q0a8x6)); +assign Gxphy6 = (Myphy6 & Uyphy6); +assign Uyphy6 = (~(Tdqyx6 & Mkp7z6[10])); +assign Myphy6 = (~(U9p7z6[10] & Hfqyx6)); +assign I8phy6 = (Czphy6 & Kzphy6); +assign Kzphy6 = (Szphy6 & A0qhy6); +assign A0qhy6 = (~(Klo7z6[3] & I0qhy6)); +assign I0qhy6 = (~(Q0qhy6 & Y0qhy6)); +assign Y0qhy6 = (G1qhy6 & O1qhy6); +assign O1qhy6 = (W1qhy6 & E2qhy6); +assign E2qhy6 = (~(Blsnv6 & Glnhy6)); +assign W1qhy6 = (M2qhy6 & U2qhy6); +assign M2qhy6 = (~(Mphiw6 & C3qhy6)); +assign C3qhy6 = (~(K3qhy6 & S3qhy6)); +assign S3qhy6 = (~(A4qhy6 & I4qhy6)); +assign I4qhy6 = (Q4qhy6 & Y4qhy6); +assign Y4qhy6 = (~(Feymz6[2] | Feymz6[3])); +assign Q4qhy6 = (~(Bfymz6[2] | Feymz6[1])); +assign A4qhy6 = (G5qhy6 & O5qhy6); +assign O5qhy6 = (~(Bfymz6[0] | Bfymz6[1])); +assign G5qhy6 = (Feymz6[0] & Ignhy6); +assign Ignhy6 = (!L5pyx6); +assign K3qhy6 = (~(D9pyx6 & W5qhy6)); +assign G1qhy6 = (E6qhy6 & M6qhy6); +assign M6qhy6 = (~(Hl4xx6 & Minhy6)); +assign Q0qhy6 = (U6qhy6 & C7qhy6); +assign C7qhy6 = (K7qhy6 & S7qhy6); +assign S7qhy6 = (~(C477v6 & Iknhy6)); +assign K7qhy6 = (A8qhy6 & I8qhy6); +assign I8qhy6 = (~(Pk1nz6[10] & A8jhy6)); +assign A8qhy6 = (~(Biymz6[10] & Olnhy6)); +assign U6qhy6 = (Q8qhy6 & Y8qhy6); +assign Y8qhy6 = (~(Zs1nz6[2] & S3mhy6)); +assign Q8qhy6 = (~(Nn1nz6[2] & U2mhy6)); +assign Szphy6 = (~(Klo7z6[2] & G9qhy6)); +assign G9qhy6 = (~(O9qhy6 & W9qhy6)); +assign W9qhy6 = (Eaqhy6 & Maqhy6); +assign Maqhy6 = (Uaqhy6 & Cbqhy6); +assign Cbqhy6 = (~(Q8tet6 & S4kiw6)); +assign Uaqhy6 = (Kbqhy6 & Sbqhy6); +assign Sbqhy6 = (~(Nqo7z6[8] & M8kiw6)); +assign Kbqhy6 = (~(Fpo7z6[8] & H9kiw6)); +assign Eaqhy6 = (Acqhy6 & Icqhy6); +assign Icqhy6 = (~(Ouo7z6[8] & K7kiw6)); +assign Acqhy6 = (~(Hxo7z6[8] & W6kiw6)); +assign O9qhy6 = (Qcqhy6 & Ycqhy6); +assign Ycqhy6 = (Gdqhy6 & Odqhy6); +assign Odqhy6 = (~(Vro7z6[8] & Y7kiw6)); +assign Gdqhy6 = (~(T2p7z6[10] & U5kiw6)); +assign Qcqhy6 = (Wdqhy6 & Eeqhy6); +assign Eeqhy6 = (~(W3p7z6[10] & G5kiw6)); +assign Wdqhy6 = (~(A0p7z6[8] & I6kiw6)); +assign Czphy6 = (Meqhy6 & Ueqhy6); +assign Ueqhy6 = (~(Lltyx6 & R8s7z6[0])); +assign Meqhy6 = (~(Ies7z6[10] & Tltyx6)); +assign S7phy6 = (~(Zmoyx6 & Eqe7x6)); +assign Eqe7x6 = (~(Cfqhy6 & Kfqhy6)); +assign Kfqhy6 = (~(Ysnhy6 & Aca7z6)); +assign Aca7z6 = (~(Sfqhy6 & Agqhy6)); +assign Agqhy6 = (~(HRDATAD[10] & Qln7z6[0])); +assign Sfqhy6 = (~(HRDATAS[10] & Qln7z6[1])); +assign Cfqhy6 = (~(Tim7z6[10] & Uunhy6)); +assign C7phy6 = (Igqhy6 & Qgqhy6); +assign Qgqhy6 = (~(HRDATAS[10] & Ad47x6)); +assign Igqhy6 = (~(HRDATAD[10] & Mc47x6)); +assign M6phy6 = (~(Lpryx6 & Raq7x6)); +assign Rno7v6 = (~(Ygqhy6 & Ghqhy6)); +assign Ghqhy6 = (~(Jexmz6[11] & K94iw6)); +assign Ygqhy6 = (Ohqhy6 & Whqhy6); +assign Whqhy6 = (~(Lloyx6 & Onlov6)); +assign Onlov6 = (~(Eiqhy6 & Miqhy6)); +assign Miqhy6 = (Uiqhy6 & Cjqhy6); +assign Cjqhy6 = (Bqoyx6 | Kte7x6); +assign Kte7x6 = (Kjqhy6 & Sjqhy6); +assign Sjqhy6 = (Akqhy6 & Ikqhy6); +assign Ikqhy6 = (Qkqhy6 & Ykqhy6); +assign Ykqhy6 = (~(Rmzyx6 & Glqhy6)); +assign Glqhy6 = (~(Olqhy6 & Wlqhy6)); +assign Wlqhy6 = (Emqhy6 & Mmqhy6); +assign Mmqhy6 = (Umqhy6 & Cnqhy6); +assign Cnqhy6 = (~(Hyj7z6[3] & A3ciw6)); +assign Umqhy6 = (~(Hyj7z6[2] & M2ciw6)); +assign Emqhy6 = (Knqhy6 & Snqhy6); +assign Snqhy6 = (~(Hyj7z6[1] & Y1ciw6)); +assign Knqhy6 = (~(Hyj7z6[5] & V3ciw6)); +assign Olqhy6 = (Aoqhy6 & Ioqhy6); +assign Ioqhy6 = (Qoqhy6 & Yoqhy6); +assign Yoqhy6 = (~(Hyj7z6[6] & Q4ciw6)); +assign Qoqhy6 = (~(Hyj7z6[7] & X4ciw6)); +assign Aoqhy6 = (Gpqhy6 & Opqhy6); +assign Opqhy6 = (~(Hyj7z6[0] & Dfk7z6[11])); +assign Gpqhy6 = (~(Hyj7z6[4] & Jkl7z6[11])); +assign Qkqhy6 = (Wpqhy6 & Eqqhy6); +assign Eqqhy6 = (~(Mqqhy6 & Uqqhy6)); +assign Uqqhy6 = (~(Dtj7z6[2] | Dtj7z6[3])); +assign Mqqhy6 = (X7uyx6 & Dtj7z6[4]); +assign X7uyx6 = (Crqhy6 & Rmget6); +assign Crqhy6 = (Klo7z6[5] & T59iw6); +assign Wpqhy6 = (~(Xbzyx6 & Krqhy6)); +assign Krqhy6 = (~(Srqhy6 & Asqhy6)); +assign Asqhy6 = (Isqhy6 & Qsqhy6); +assign Qsqhy6 = (Ysqhy6 & Gtqhy6); +assign Gtqhy6 = (~(Hyj7z6[0] & Rbk7z6[9])); +assign Ysqhy6 = (~(Hyj7z6[1] & Zlk7z6[9])); +assign Isqhy6 = (Otqhy6 & Wtqhy6); +assign Wtqhy6 = (~(Hyj7z6[2] & Hwk7z6[9])); +assign Otqhy6 = (~(Hyj7z6[3] & P6l7z6[9])); +assign Srqhy6 = (Euqhy6 & Muqhy6); +assign Muqhy6 = (Uuqhy6 & Cvqhy6); +assign Cvqhy6 = (~(Hyj7z6[4] & Xgl7z6[9])); +assign Uuqhy6 = (~(Hyj7z6[5] & Frl7z6[9])); +assign Euqhy6 = (Kvqhy6 & Svqhy6); +assign Svqhy6 = (~(Hyj7z6[6] & N1m7z6[9])); +assign Kvqhy6 = (~(Hyj7z6[7] & Vbm7z6[9])); +assign Akqhy6 = (Awqhy6 & Iwqhy6); +assign Iwqhy6 = (~(Qwqhy6 & Ngqyx6)); +assign Qwqhy6 = (~(Ywqhy6 & Gxqhy6)); +assign Gxqhy6 = (Oxqhy6 & Wxqhy6); +assign Wxqhy6 = (Eyqhy6 & Myqhy6); +assign Myqhy6 = (Uyqhy6 & Czqhy6); +assign Czqhy6 = (~(Prqyx6 & Z3j7z6[11])); +assign Uyqhy6 = (~(A0j7z6[11] & Xrqyx6)); +assign Eyqhy6 = (Kzqhy6 & Szqhy6); +assign Szqhy6 = (~(H1j7z6[11] & Rqqyx6)); +assign Kzqhy6 = (~(Bzi7z6[11] & Vsqyx6)); +assign Oxqhy6 = (A0rhy6 & I0rhy6); +assign I0rhy6 = (Q0rhy6 & Y0rhy6); +assign Y0rhy6 = (~(Wbcet6 & Dxqyx6)); +assign Q0rhy6 = (~(Wui7z6[11] & Lxqyx6)); +assign A0rhy6 = (G1rhy6 & O1rhy6); +assign O1rhy6 = (~(Dri7z6[11] & Fwqyx6)); +assign G1rhy6 = (~(Bwi7z6[11] & Hzqyx6)); +assign Ywqhy6 = (W1rhy6 & E2rhy6); +assign E2rhy6 = (M2rhy6 & U2rhy6); +assign U2rhy6 = (C3rhy6 & K3rhy6); +assign K3rhy6 = (~(Svkhy6 & Pnb7z6[11])); +assign C3rhy6 = (~(Pzqyx6 & G5j7z6[43])); +assign M2rhy6 = (S3rhy6 & A4rhy6); +assign A4rhy6 = (~(Jyqyx6 & G5j7z6[11])); +assign S3rhy6 = (~(B2ryx6 & M6j7z6[43])); +assign W1rhy6 = (I4rhy6 & Q4rhy6); +assign Q4rhy6 = (Y4rhy6 & G5rhy6); +assign G5rhy6 = (~(J2ryx6 & M6j7z6[11])); +assign Y4rhy6 = (~(D1ryx6 & Ohj7z6[43])); +assign I4rhy6 = (O5rhy6 & W5rhy6); +assign W5rhy6 = (~(X3ryx6 & Ohj7z6[11])); +assign O5rhy6 = (~(STCALIB[11] & F4ryx6)); +assign Awqhy6 = (~(Klo7z6[3] & E6rhy6)); +assign E6rhy6 = (~(M6rhy6 & U6rhy6)); +assign U6rhy6 = (C7rhy6 & K7rhy6); +assign K7rhy6 = (S7rhy6 & A8rhy6); +assign A8rhy6 = (~(Mphiw6 & I8rhy6)); +assign I8rhy6 = (~(Q8rhy6 & Y8rhy6)); +assign Y8rhy6 = (~(G9rhy6 & O9rhy6)); +assign O9rhy6 = (~(Bfymz6[1] | Bfymz6[2])); +assign G9rhy6 = (~(L5pyx6 | Bfymz6[0])); +assign S7rhy6 = (W9rhy6 & Earhy6); +assign Earhy6 = (~(Marhy6 & Blsnv6)); +assign Blsnv6 = (Uarhy6 & Sgymz6[7]); +assign Uarhy6 = (Sgymz6[4] & Sgymz6[5]); +assign Marhy6 = (~(Cbrhy6 | Sgymz6[6])); +assign W9rhy6 = (~(Kbrhy6 & Hl4xx6)); +assign Hl4xx6 = (Sbrhy6 & Ojymz6[7]); +assign Sbrhy6 = (Ojymz6[4] & Ojymz6[5]); +assign Kbrhy6 = (~(Acrhy6 | Ojymz6[6])); +assign C7rhy6 = (E6qhy6 & Icrhy6); +assign Icrhy6 = (U2qhy6 | Unymz6[6]); +assign U2qhy6 = (~(Qcrhy6 & C5rnv6)); +assign C5rnv6 = (Unymz6[7] & Unymz6[5]); +assign Qcrhy6 = (Unymz6[4] & Uinhy6); +assign E6qhy6 = (Eylhy6 | Qgnhy6); +assign Eylhy6 = (~(Ycrhy6 & Gdrhy6)); +assign Gdrhy6 = (Odrhy6 & Xvxyx6); +assign Odrhy6 = (J02nz6[8] & L9syx6); +assign Ycrhy6 = (Hrpyx6 & J02nz6[3]); +assign Hrpyx6 = (~(J02nz6[2] | J02nz6[4])); +assign M6rhy6 = (Wdrhy6 & Eerhy6); +assign Eerhy6 = (Merhy6 & Uerhy6); +assign Uerhy6 = (~(Ue77z6 & Iknhy6)); +assign Merhy6 = (Cfrhy6 & Kfrhy6); +assign Kfrhy6 = (~(Pk1nz6[11] & A8jhy6)); +assign Cfrhy6 = (~(Biymz6[11] & Olnhy6)); +assign Wdrhy6 = (Sfrhy6 & Agrhy6); +assign Agrhy6 = (~(Zs1nz6[3] & S3mhy6)); +assign Sfrhy6 = (~(Nn1nz6[3] & U2mhy6)); +assign Kjqhy6 = (Igrhy6 & Qgrhy6); +assign Qgrhy6 = (Ygrhy6 & Ghrhy6); +assign Ghrhy6 = (~(Klo7z6[1] & Ohrhy6)); +assign Ohrhy6 = (~(Whrhy6 & Eirhy6)); +assign Eirhy6 = (Mirhy6 & Uirhy6); +assign Uirhy6 = (Cjrhy6 & Kjrhy6); +assign Kjrhy6 = (~(W5q7z6[1] & B6qyx6)); +assign Cjrhy6 = (Sjrhy6 & Ravyx6); +assign Sjrhy6 = (~(T9tyx6 & Ys77z6)); +assign Mirhy6 = (Akrhy6 & Ikrhy6); +assign Ikrhy6 = (~(D5qyx6 & Bqp7z6[11])); +assign Akrhy6 = (~(L9qyx6 & E6p7z6[11])); +assign Whrhy6 = (Qkrhy6 & Ykrhy6); +assign Ykrhy6 = (Glrhy6 & Olrhy6); +assign Olrhy6 = (~(Fcqyx6 & B2q7z6[11])); +assign Glrhy6 = (~(Gwp7z6[1] & Q0a8x6)); +assign Qkrhy6 = (Wlrhy6 & Emrhy6); +assign Emrhy6 = (~(Tdqyx6 & Mkp7z6[11])); +assign Wlrhy6 = (~(U9p7z6[11] & Hfqyx6)); +assign Ygrhy6 = (~(Klo7z6[2] & Mmrhy6)); +assign Mmrhy6 = (~(Umrhy6 & Cnrhy6)); +assign Cnrhy6 = (Knrhy6 & Snrhy6); +assign Snrhy6 = (Aorhy6 & Iorhy6); +assign Iorhy6 = (~(P6tet6 & S4kiw6)); +assign Aorhy6 = (Qorhy6 & Yorhy6); +assign Yorhy6 = (~(Nqo7z6[9] & M8kiw6)); +assign Qorhy6 = (~(Fpo7z6[9] & H9kiw6)); +assign Knrhy6 = (Gprhy6 & Oprhy6); +assign Oprhy6 = (~(Ouo7z6[9] & K7kiw6)); +assign Gprhy6 = (~(Hxo7z6[9] & W6kiw6)); +assign Umrhy6 = (Wprhy6 & Eqrhy6); +assign Eqrhy6 = (Mqrhy6 & Uqrhy6); +assign Uqrhy6 = (~(Vro7z6[9] & Y7kiw6)); +assign Mqrhy6 = (~(T2p7z6[11] & U5kiw6)); +assign Wprhy6 = (Crrhy6 & Krrhy6); +assign Krrhy6 = (~(W3p7z6[11] & G5kiw6)); +assign Crrhy6 = (~(A0p7z6[9] & I6kiw6)); +assign Igrhy6 = (Srrhy6 & Asrhy6); +assign Asrhy6 = (~(R8s7z6[1] & Lltyx6)); +assign Srrhy6 = (~(Ies7z6[11] & Tltyx6)); +assign Uiqhy6 = (~(Zmoyx6 & Rte7x6)); +assign Rte7x6 = (~(Isrhy6 & Qsrhy6)); +assign Qsrhy6 = (~(Ysnhy6 & Sba7z6)); +assign Sba7z6 = (~(Ysrhy6 & Gtrhy6)); +assign Gtrhy6 = (~(HRDATAD[11] & Qln7z6[0])); +assign Ysrhy6 = (~(HRDATAS[11] & Qln7z6[1])); +assign Isrhy6 = (~(Tim7z6[11] & Uunhy6)); +assign Eiqhy6 = (Otrhy6 & Wtrhy6); +assign Wtrhy6 = (~(HRDATAS[11] & Ad47x6)); +assign Otrhy6 = (~(HRDATAD[11] & Mc47x6)); +assign Ohqhy6 = (~(Lpryx6 & Bgq7x6)); +assign Kno7v6 = (~(Eurhy6 & Murhy6)); +assign Murhy6 = (~(Jexmz6[12] & K94iw6)); +assign Eurhy6 = (Uurhy6 & Cvrhy6); +assign Cvrhy6 = (~(Lloyx6 & Tw57x6)); +assign Tw57x6 = (~(Kvrhy6 & Svrhy6)); +assign Svrhy6 = (Awrhy6 & Iwrhy6); +assign Iwrhy6 = (Bqoyx6 | Xwe7x6); +assign Xwe7x6 = (Qwrhy6 & Ywrhy6); +assign Ywrhy6 = (Gxrhy6 & Oxrhy6); +assign Oxrhy6 = (Wxrhy6 & Eyrhy6); +assign Eyrhy6 = (~(Rmzyx6 & Myrhy6)); +assign Myrhy6 = (~(Uyrhy6 & Czrhy6)); +assign Czrhy6 = (Kzrhy6 & Szrhy6); +assign Szrhy6 = (A0shy6 & I0shy6); +assign I0shy6 = (~(Hyj7z6[3] & N6ciw6)); +assign A0shy6 = (~(Hyj7z6[2] & Z5ciw6)); +assign Kzrhy6 = (Q0shy6 & Y0shy6); +assign Y0shy6 = (~(Hyj7z6[1] & L5ciw6)); +assign Q0shy6 = (~(Hyj7z6[5] & I7ciw6)); +assign Uyrhy6 = (G1shy6 & O1shy6); +assign O1shy6 = (W1shy6 & E2shy6); +assign E2shy6 = (~(Hyj7z6[6] & P7ciw6)); +assign W1shy6 = (~(Hyj7z6[7] & D8ciw6)); +assign G1shy6 = (M2shy6 & U2shy6); +assign U2shy6 = (~(Hyj7z6[0] & Dfk7z6[12])); +assign M2shy6 = (~(Hyj7z6[4] & Jkl7z6[12])); +assign Wxrhy6 = (~(Xbzyx6 & C3shy6)); +assign C3shy6 = (~(K3shy6 & S3shy6)); +assign S3shy6 = (A4shy6 & I4shy6); +assign I4shy6 = (Q4shy6 & Y4shy6); +assign Y4shy6 = (~(Hyj7z6[0] & Rbk7z6[10])); +assign Q4shy6 = (~(Hyj7z6[1] & Zlk7z6[10])); +assign A4shy6 = (G5shy6 & O5shy6); +assign O5shy6 = (~(Hyj7z6[2] & Hwk7z6[10])); +assign G5shy6 = (~(Hyj7z6[3] & P6l7z6[10])); +assign K3shy6 = (W5shy6 & E6shy6); +assign E6shy6 = (M6shy6 & U6shy6); +assign U6shy6 = (~(Hyj7z6[4] & Xgl7z6[10])); +assign M6shy6 = (~(Hyj7z6[5] & Frl7z6[10])); +assign W5shy6 = (C7shy6 & K7shy6); +assign K7shy6 = (~(Hyj7z6[6] & N1m7z6[10])); +assign C7shy6 = (~(Hyj7z6[7] & Vbm7z6[10])); +assign Gxrhy6 = (S7shy6 & A8shy6); +assign A8shy6 = (~(I8shy6 & Ngqyx6)); +assign I8shy6 = (~(Q8shy6 & Y8shy6)); +assign Y8shy6 = (G9shy6 & O9shy6); +assign O9shy6 = (W9shy6 & Eashy6); +assign Eashy6 = (Mashy6 & Uashy6); +assign Uashy6 = (~(H1j7z6[12] & Rqqyx6)); +assign Mashy6 = (Cbshy6 & Kbshy6); +assign Kbshy6 = (~(Prqyx6 & Z3j7z6[12])); +assign Cbshy6 = (~(A0j7z6[12] & Xrqyx6)); +assign W9shy6 = (Sbshy6 & Acshy6); +assign Acshy6 = (~(Bzi7z6[12] & Vsqyx6)); +assign Sbshy6 = (~(Dxqyx6 & P2j7z6[0])); +assign G9shy6 = (Icshy6 & Qcshy6); +assign Qcshy6 = (Ycshy6 & Gdshy6); +assign Gdshy6 = (~(Wui7z6[12] & Lxqyx6)); +assign Ycshy6 = (~(Dri7z6[12] & Fwqyx6)); +assign Icshy6 = (Odshy6 & Wdshy6); +assign Wdshy6 = (~(Bwi7z6[12] & Hzqyx6)); +assign Odshy6 = (~(Svkhy6 & Pnb7z6[12])); +assign Q8shy6 = (Eeshy6 & Meshy6); +assign Meshy6 = (Ueshy6 & Cfshy6); +assign Cfshy6 = (Kfshy6 & Sfshy6); +assign Sfshy6 = (~(Pzqyx6 & G5j7z6[44])); +assign Kfshy6 = (~(Jyqyx6 & G5j7z6[12])); +assign Ueshy6 = (Agshy6 & Igshy6); +assign Igshy6 = (~(B2ryx6 & M6j7z6[44])); +assign Agshy6 = (~(J2ryx6 & M6j7z6[12])); +assign Eeshy6 = (Qgshy6 & Ygshy6); +assign Ygshy6 = (Ghshy6 & Ohshy6); +assign Ohshy6 = (~(D1ryx6 & Ohj7z6[44])); +assign Ghshy6 = (~(X3ryx6 & Ohj7z6[12])); +assign Qgshy6 = (Whshy6 & Eishy6); +assign Eishy6 = (~(STCALIB[12] & F4ryx6)); +assign S7shy6 = (~(Klo7z6[1] & Mishy6)); +assign Mishy6 = (~(Uishy6 & Cjshy6)); +assign Cjshy6 = (Kjshy6 & Sjshy6); +assign Sjshy6 = (Akshy6 & Ikshy6); +assign Ikshy6 = (~(Xkq7z6[12] & B6qyx6)); +assign Akshy6 = (Qkshy6 & Ravyx6); +assign Qkshy6 = (~(T9tyx6 & Qs77z6)); +assign Kjshy6 = (Ykshy6 & Glshy6); +assign Glshy6 = (~(D5qyx6 & Bqp7z6[12])); +assign Ykshy6 = (~(L9qyx6 & E6p7z6[12])); +assign Uishy6 = (Olshy6 & Wlshy6); +assign Wlshy6 = (Emshy6 & Mmshy6); +assign Mmshy6 = (~(Fcqyx6 & B2q7z6[12])); +assign Emshy6 = (~(Q0a8x6 & Bup7z6[0])); +assign Olshy6 = (Umshy6 & Cnshy6); +assign Cnshy6 = (~(Tdqyx6 & Mkp7z6[12])); +assign Umshy6 = (~(U9p7z6[12] & Hfqyx6)); +assign Qwrhy6 = (Knshy6 & Snshy6); +assign Snshy6 = (~(Ies7z6[12] & Tltyx6)); +assign Knshy6 = (Aoshy6 & Ioshy6); +assign Ioshy6 = (~(Klo7z6[3] & Qoshy6)); +assign Qoshy6 = (~(Yoshy6 & Gpshy6)); +assign Gpshy6 = (Opshy6 & Wpshy6); +assign Wpshy6 = (Eqshy6 & Mqshy6); +assign Mqshy6 = (~(Pk1nz6[12] & A8jhy6)); +assign A8jhy6 = (Xvpyx6 & Kniiw6); +assign Xvpyx6 = (Yvhiw6 & Z2wyx6); +assign Z2wyx6 = (Iuhiw6 & Jke7v6); +assign Iuhiw6 = (Uqshy6 & Ohnhy6); +assign Ohnhy6 = (Crshy6 & Krshy6); +assign Krshy6 = (Srshy6 & L9syx6); +assign L9syx6 = (!J02nz6[5]); +assign Srshy6 = (~(J02nz6[6] | J02nz6[7])); +assign Crshy6 = (Asshy6 & H7syx6); +assign H7syx6 = (!J02nz6[10]); +assign Asshy6 = (~(J02nz6[11] | J02nz6[3])); +assign Uqshy6 = (~(J02nz6[8] | J02nz6[9])); +assign Yvhiw6 = (~(Puhiw6 | J02nz6[2])); +assign Eqshy6 = (Isshy6 & Qsshy6); +assign Qsshy6 = (~(Kzlhy6 & Ysshy6)); +assign Ysshy6 = (~(Xntyx6 & Gtshy6)); +assign Isshy6 = (Otshy6 | Wtshy6); +assign Opshy6 = (Eushy6 & Mushy6); +assign Mushy6 = (~(Ojymz6[6] & Minhy6)); +assign Eushy6 = (~(Unymz6[6] & Uinhy6)); +assign Yoshy6 = (Uushy6 & Cvshy6); +assign Cvshy6 = (Kvshy6 & Svshy6); +assign Svshy6 = (~(Sgymz6[6] & Glnhy6)); +assign Kvshy6 = (~(Biymz6[12] & Olnhy6)); +assign Uushy6 = (Awshy6 & Iwshy6); +assign Iwshy6 = (~(Zs1nz6[4] & S3mhy6)); +assign Awshy6 = (~(Nn1nz6[4] & U2mhy6)); +assign Aoshy6 = (~(Klo7z6[2] & Qwshy6)); +assign Qwshy6 = (~(Ywshy6 & Gxshy6)); +assign Gxshy6 = (Oxshy6 & Wxshy6); +assign Wxshy6 = (Eyshy6 & Myshy6); +assign Myshy6 = (~(O4tet6 & S4kiw6)); +assign Eyshy6 = (Uyshy6 & Czshy6); +assign Czshy6 = (~(Nqo7z6[10] & M8kiw6)); +assign Uyshy6 = (~(Fpo7z6[10] & H9kiw6)); +assign Oxshy6 = (Kzshy6 & Szshy6); +assign Szshy6 = (~(Ouo7z6[10] & K7kiw6)); +assign Kzshy6 = (~(Hxo7z6[10] & W6kiw6)); +assign Ywshy6 = (A0thy6 & I0thy6); +assign I0thy6 = (Q0thy6 & Y0thy6); +assign Y0thy6 = (~(Vro7z6[10] & Y7kiw6)); +assign Q0thy6 = (~(T2p7z6[12] & U5kiw6)); +assign A0thy6 = (G1thy6 & O1thy6); +assign O1thy6 = (~(W3p7z6[12] & G5kiw6)); +assign G1thy6 = (~(A0p7z6[10] & I6kiw6)); +assign Awrhy6 = (~(Zmoyx6 & Exe7x6)); +assign Exe7x6 = (~(W1thy6 & E2thy6)); +assign E2thy6 = (~(Jco7v6 & Ysnhy6)); +assign W1thy6 = (~(Tim7z6[12] & Uunhy6)); +assign Kvrhy6 = (M2thy6 & U2thy6); +assign U2thy6 = (~(HRDATAS[12] & Ad47x6)); +assign M2thy6 = (~(HRDATAD[12] & Mc47x6)); +assign Uurhy6 = (~(Lpryx6 & Llq7x6)); +assign Dno7v6 = (~(C3thy6 & K3thy6)); +assign K3thy6 = (~(Jexmz6[13] & K94iw6)); +assign C3thy6 = (S3thy6 & A4thy6); +assign A4thy6 = (~(Lloyx6 & Qr57x6)); +assign Qr57x6 = (~(I4thy6 & Q4thy6)); +assign Q4thy6 = (Y4thy6 & G5thy6); +assign G5thy6 = (Bqoyx6 | K0f7x6); +assign K0f7x6 = (O5thy6 & W5thy6); +assign W5thy6 = (E6thy6 & M6thy6); +assign M6thy6 = (U6thy6 & C7thy6); +assign C7thy6 = (~(Rmzyx6 & K7thy6)); +assign K7thy6 = (~(S7thy6 & A8thy6)); +assign A8thy6 = (I8thy6 & Q8thy6); +assign Q8thy6 = (Y8thy6 & G9thy6); +assign G9thy6 = (~(Hyj7z6[3] & Y8ciw6)); +assign Y8thy6 = (~(Hyj7z6[2] & R8ciw6)); +assign I8thy6 = (O9thy6 & W9thy6); +assign W9thy6 = (~(Hyj7z6[1] & K8ciw6)); +assign O9thy6 = (~(Hyj7z6[5] & F9ciw6)); +assign S7thy6 = (Eathy6 & Mathy6); +assign Mathy6 = (Uathy6 & Cbthy6); +assign Cbthy6 = (~(Hyj7z6[6] & M9ciw6)); +assign Uathy6 = (~(Hyj7z6[7] & T9ciw6)); +assign Eathy6 = (Kbthy6 & Sbthy6); +assign Sbthy6 = (~(Hyj7z6[0] & Dfk7z6[13])); +assign Kbthy6 = (~(Hyj7z6[4] & Jkl7z6[13])); +assign U6thy6 = (~(Xbzyx6 & Acthy6)); +assign Acthy6 = (~(Icthy6 & Qcthy6)); +assign Qcthy6 = (Ycthy6 & Gdthy6); +assign Gdthy6 = (Odthy6 & Wdthy6); +assign Wdthy6 = (~(Hyj7z6[0] & Rbk7z6[11])); +assign Odthy6 = (~(Hyj7z6[1] & Zlk7z6[11])); +assign Ycthy6 = (Eethy6 & Methy6); +assign Methy6 = (~(Hyj7z6[2] & Hwk7z6[11])); +assign Eethy6 = (~(Hyj7z6[3] & P6l7z6[11])); +assign Icthy6 = (Uethy6 & Cfthy6); +assign Cfthy6 = (Kfthy6 & Sfthy6); +assign Sfthy6 = (~(Hyj7z6[4] & Xgl7z6[11])); +assign Kfthy6 = (~(Hyj7z6[5] & Frl7z6[11])); +assign Uethy6 = (Agthy6 & Igthy6); +assign Igthy6 = (~(Hyj7z6[6] & N1m7z6[11])); +assign Agthy6 = (~(Hyj7z6[7] & Vbm7z6[11])); +assign E6thy6 = (Qgthy6 & Ygthy6); +assign Ygthy6 = (~(Ghthy6 & Ngqyx6)); +assign Ghthy6 = (~(Ohthy6 & Whthy6)); +assign Whthy6 = (Eithy6 & Mithy6); +assign Mithy6 = (Uithy6 & Cjthy6); +assign Cjthy6 = (Kjthy6 & Sjthy6); +assign Sjthy6 = (Akthy6 & Ikthy6); +assign Ikthy6 = (~(V40zx6 & Zdj7z6[0])); +assign Akthy6 = (Qkthy6 & Ykthy6); +assign Qkthy6 = (~(Prqyx6 & Z3j7z6[13])); +assign Kjthy6 = (Glthy6 & Olthy6); +assign Olthy6 = (~(A0j7z6[13] & Xrqyx6)); +assign Glthy6 = (~(H1j7z6[13] & Rqqyx6)); +assign Uithy6 = (Wlthy6 & Emthy6); +assign Emthy6 = (Mmthy6 & 1'b1); +assign Mmthy6 = (~(Dxqyx6 & P2j7z6[1])); +assign Wlthy6 = (Umthy6 & Cnthy6); +assign Cnthy6 = (~(Wui7z6[13] & Lxqyx6)); +assign Umthy6 = (~(Dri7z6[13] & Fwqyx6)); +assign Eithy6 = (Knthy6 & Snthy6); +assign Snthy6 = (Aothy6 & Iothy6); +assign Iothy6 = (Qothy6 & Yothy6); +assign Yothy6 = (~(Bwi7z6[13] & Hzqyx6)); +assign Qothy6 = (~(Svkhy6 & Pnb7z6[13])); +assign Aothy6 = (Gpthy6 & Opthy6); +assign Opthy6 = (~(D90zx6 & Lgj7z6[183])); +assign Gpthy6 = (~(Za0zx6 & Lgj7z6[171])); +assign Knthy6 = (Wpthy6 & Eqthy6); +assign Eqthy6 = (Mqthy6 & Uqthy6); +assign Uqthy6 = (~(Hb0zx6 & Lgj7z6[159])); +assign Mqthy6 = (~(Vc0zx6 & Lgj7z6[147])); +assign Wpthy6 = (Crthy6 & Krthy6); +assign Krthy6 = (~(Dd0zx6 & Lgj7z6[135])); +assign Crthy6 = (~(Be0zx6 & Lgj7z6[123])); +assign Ohthy6 = (Srthy6 & Asthy6); +assign Asthy6 = (Isthy6 & Qsthy6); +assign Qsthy6 = (Ysthy6 & Gtthy6); +assign Gtthy6 = (Otthy6 & Wtthy6); +assign Wtthy6 = (~(Ji0zx6 & Lgj7z6[87])); +assign Otthy6 = (Euthy6 & Muthy6); +assign Muthy6 = (~(Je0zx6 & Lgj7z6[111])); +assign Euthy6 = (~(Bi0zx6 & Lgj7z6[99])); +assign Ysthy6 = (Uuthy6 & Cvthy6); +assign Cvthy6 = (~(Dh0zx6 & Lgj7z6[75])); +assign Uuthy6 = (~(Hj0zx6 & Lgj7z6[63])); +assign Isthy6 = (Kvthy6 & Svthy6); +assign Svthy6 = (Awthy6 & Iwthy6); +assign Iwthy6 = (~(Pj0zx6 & Lgj7z6[51])); +assign Awthy6 = (~(Dl0zx6 & Lgj7z6[39])); +assign Kvthy6 = (Qwthy6 & Ywthy6); +assign Ywthy6 = (~(Ll0zx6 & Lgj7z6[27])); +assign Qwthy6 = (~(Jm0zx6 & Lgj7z6[15])); +assign Srthy6 = (Gxthy6 & Oxthy6); +assign Oxthy6 = (Wxthy6 & Eythy6); +assign Eythy6 = (Mythy6 & Uythy6); +assign Uythy6 = (~(Rm0zx6 & Lgj7z6[3])); +assign Mythy6 = (~(Pzqyx6 & G5j7z6[45])); +assign Wxthy6 = (Czthy6 & Kzthy6); +assign Kzthy6 = (~(Jyqyx6 & G5j7z6[13])); +assign Czthy6 = (~(B2ryx6 & M6j7z6[45])); +assign Gxthy6 = (Szthy6 & A0uhy6); +assign A0uhy6 = (I0uhy6 & Q0uhy6); +assign Q0uhy6 = (~(J2ryx6 & M6j7z6[13])); +assign I0uhy6 = (~(D1ryx6 & Ohj7z6[45])); +assign Szthy6 = (Y0uhy6 & G1uhy6); +assign G1uhy6 = (~(X3ryx6 & Ohj7z6[13])); +assign Y0uhy6 = (~(STCALIB[13] & F4ryx6)); +assign Qgthy6 = (~(Klo7z6[1] & O1uhy6)); +assign O1uhy6 = (~(W1uhy6 & E2uhy6)); +assign E2uhy6 = (M2uhy6 & U2uhy6); +assign U2uhy6 = (C3uhy6 & K3uhy6); +assign K3uhy6 = (~(Xkq7z6[13] & B6qyx6)); +assign C3uhy6 = (S3uhy6 & Ravyx6); +assign S3uhy6 = (~(T9tyx6 & Is77z6)); +assign M2uhy6 = (A4uhy6 & I4uhy6); +assign I4uhy6 = (~(D5qyx6 & Bqp7z6[13])); +assign A4uhy6 = (~(L9qyx6 & E6p7z6[13])); +assign W1uhy6 = (Q4uhy6 & Y4uhy6); +assign Y4uhy6 = (G5uhy6 & O5uhy6); +assign O5uhy6 = (~(Fcqyx6 & B2q7z6[13])); +assign G5uhy6 = (~(Q0a8x6 & Bup7z6[1])); +assign Q4uhy6 = (W5uhy6 & E6uhy6); +assign E6uhy6 = (~(Tdqyx6 & Mkp7z6[13])); +assign W5uhy6 = (~(U9p7z6[13] & Hfqyx6)); +assign O5thy6 = (M6uhy6 & U6uhy6); +assign U6uhy6 = (~(Ies7z6[13] & Tltyx6)); +assign M6uhy6 = (C7uhy6 & K7uhy6); +assign K7uhy6 = (~(Klo7z6[3] & S7uhy6)); +assign S7uhy6 = (~(A8uhy6 & I8uhy6)); +assign I8uhy6 = (Q8uhy6 & Y8uhy6); +assign Y8uhy6 = (G9uhy6 & O9uhy6); +assign O9uhy6 = (~(Unymz6[7] & Uinhy6)); +assign G9uhy6 = (W9uhy6 & Eauhy6); +assign Eauhy6 = (~(Mphiw6 & Mauhy6)); +assign Mauhy6 = (~(Z6yyx6 & Uauhy6)); +assign Uauhy6 = (~(P3xyx6 & J2xyx6)); +assign W9uhy6 = (~(Ojymz6[7] & Minhy6)); +assign Q8uhy6 = (Cbuhy6 & Kbuhy6); +assign Kbuhy6 = (~(Sgymz6[7] & Glnhy6)); +assign Cbuhy6 = (~(Biymz6[13] & Olnhy6)); +assign A8uhy6 = (Sbuhy6 & Acuhy6); +assign Acuhy6 = (Icuhy6 & Qcuhy6); +assign Qcuhy6 = (~(Bfymz6[2] & Iknhy6)); +assign Icuhy6 = (~(Zs1nz6[5] & S3mhy6)); +assign Sbuhy6 = (Ycuhy6 & Gduhy6); +assign Gduhy6 = (~(Nn1nz6[5] & U2mhy6)); +assign Ycuhy6 = (Oduhy6 | Pntyx6); +assign C7uhy6 = (~(Klo7z6[2] & Wduhy6)); +assign Wduhy6 = (~(Eeuhy6 & Meuhy6)); +assign Meuhy6 = (Ueuhy6 & Cfuhy6); +assign Cfuhy6 = (Kfuhy6 & Sfuhy6); +assign Sfuhy6 = (~(N2tet6 & S4kiw6)); +assign Kfuhy6 = (Aguhy6 & Iguhy6); +assign Iguhy6 = (~(Nqo7z6[11] & M8kiw6)); +assign Aguhy6 = (~(Fpo7z6[11] & H9kiw6)); +assign Ueuhy6 = (Qguhy6 & Yguhy6); +assign Yguhy6 = (~(Ouo7z6[11] & K7kiw6)); +assign Qguhy6 = (~(Hxo7z6[11] & W6kiw6)); +assign Eeuhy6 = (Ghuhy6 & Ohuhy6); +assign Ohuhy6 = (Whuhy6 & Eiuhy6); +assign Eiuhy6 = (~(Vro7z6[11] & Y7kiw6)); +assign Whuhy6 = (~(T2p7z6[13] & U5kiw6)); +assign Ghuhy6 = (Miuhy6 & Uiuhy6); +assign Uiuhy6 = (~(W3p7z6[13] & G5kiw6)); +assign Miuhy6 = (~(A0p7z6[11] & I6kiw6)); +assign Y4thy6 = (~(Zmoyx6 & R0f7x6)); +assign R0f7x6 = (~(Cjuhy6 & Kjuhy6)); +assign Kjuhy6 = (~(Ysnhy6 & Kba7z6)); +assign Kba7z6 = (~(Sjuhy6 & Akuhy6)); +assign Akuhy6 = (~(HRDATAD[13] & Qln7z6[0])); +assign Sjuhy6 = (~(HRDATAS[13] & Qln7z6[1])); +assign Cjuhy6 = (~(Tim7z6[13] & Uunhy6)); +assign I4thy6 = (Ikuhy6 & Qkuhy6); +assign Qkuhy6 = (~(HRDATAS[13] & Ad47x6)); +assign Ikuhy6 = (~(HRDATAD[13] & Mc47x6)); +assign S3thy6 = (~(Lpryx6 & Vqq7x6)); +assign Wmo7v6 = (~(Ykuhy6 & Gluhy6)); +assign Gluhy6 = (~(Jexmz6[14] & K94iw6)); +assign Ykuhy6 = (Oluhy6 & Wluhy6); +assign Wluhy6 = (~(Lloyx6 & Nm57x6)); +assign Nm57x6 = (~(Emuhy6 & Mmuhy6)); +assign Mmuhy6 = (Umuhy6 & Cnuhy6); +assign Cnuhy6 = (Bqoyx6 | X3f7x6); +assign X3f7x6 = (Knuhy6 & Snuhy6); +assign Snuhy6 = (Aouhy6 & Iouhy6); +assign Iouhy6 = (Qouhy6 & Youhy6); +assign Youhy6 = (~(Rmzyx6 & Gpuhy6)); +assign Gpuhy6 = (~(Opuhy6 & Wpuhy6)); +assign Wpuhy6 = (Equhy6 & Mquhy6); +assign Mquhy6 = (Uquhy6 & Cruhy6); +assign Cruhy6 = (~(Hyj7z6[3] & Oaciw6)); +assign Uquhy6 = (~(Hyj7z6[2] & Haciw6)); +assign Equhy6 = (Kruhy6 & Sruhy6); +assign Sruhy6 = (~(Hyj7z6[1] & Aaciw6)); +assign Kruhy6 = (~(Hyj7z6[5] & Vaciw6)); +assign Opuhy6 = (Asuhy6 & Isuhy6); +assign Isuhy6 = (Qsuhy6 & Ysuhy6); +assign Ysuhy6 = (~(Hyj7z6[6] & Cbciw6)); +assign Qsuhy6 = (~(Hyj7z6[7] & Jbciw6)); +assign Asuhy6 = (Gtuhy6 & Otuhy6); +assign Otuhy6 = (~(Hyj7z6[0] & Dfk7z6[14])); +assign Gtuhy6 = (~(Hyj7z6[4] & Jkl7z6[14])); +assign Qouhy6 = (~(Xbzyx6 & Wtuhy6)); +assign Wtuhy6 = (~(Euuhy6 & Muuhy6)); +assign Muuhy6 = (Uuuhy6 & Cvuhy6); +assign Cvuhy6 = (Kvuhy6 & Svuhy6); +assign Svuhy6 = (~(Hyj7z6[0] & Rbk7z6[12])); +assign Kvuhy6 = (~(Hyj7z6[1] & Zlk7z6[12])); +assign Uuuhy6 = (Awuhy6 & Iwuhy6); +assign Iwuhy6 = (~(Hyj7z6[2] & Hwk7z6[12])); +assign Awuhy6 = (~(Hyj7z6[3] & P6l7z6[12])); +assign Euuhy6 = (Qwuhy6 & Ywuhy6); +assign Ywuhy6 = (Gxuhy6 & Oxuhy6); +assign Oxuhy6 = (~(Hyj7z6[4] & Xgl7z6[12])); +assign Gxuhy6 = (~(Hyj7z6[5] & Frl7z6[12])); +assign Qwuhy6 = (Wxuhy6 & Eyuhy6); +assign Eyuhy6 = (~(Hyj7z6[6] & N1m7z6[12])); +assign Wxuhy6 = (~(Hyj7z6[7] & Vbm7z6[12])); +assign Aouhy6 = (Myuhy6 & Uyuhy6); +assign Uyuhy6 = (~(Czuhy6 & Ngqyx6)); +assign Czuhy6 = (~(Kzuhy6 & Szuhy6)); +assign Szuhy6 = (A0vhy6 & I0vhy6); +assign I0vhy6 = (Q0vhy6 & Y0vhy6); +assign Y0vhy6 = (G1vhy6 & O1vhy6); +assign O1vhy6 = (W1vhy6 & E2vhy6); +assign E2vhy6 = (~(V40zx6 & Zdj7z6[1])); +assign W1vhy6 = (M2vhy6 & U2vhy6); +assign M2vhy6 = (~(Prqyx6 & Z3j7z6[14])); +assign G1vhy6 = (C3vhy6 & K3vhy6); +assign K3vhy6 = (~(A0j7z6[14] & Xrqyx6)); +assign C3vhy6 = (~(H1j7z6[14] & Rqqyx6)); +assign Q0vhy6 = (S3vhy6 & A4vhy6); +assign A4vhy6 = (I4vhy6 & Q4vhy6); +assign Q4vhy6 = (~(Dxqyx6 & P2j7z6[2])); +assign I4vhy6 = (~(Wui7z6[14] & Lxqyx6)); +assign S3vhy6 = (Y4vhy6 & G5vhy6); +assign G5vhy6 = (~(Dri7z6[14] & Fwqyx6)); +assign Y4vhy6 = (~(Bwi7z6[14] & Hzqyx6)); +assign A0vhy6 = (O5vhy6 & W5vhy6); +assign W5vhy6 = (E6vhy6 & M6vhy6); +assign M6vhy6 = (U6vhy6 & C7vhy6); +assign C7vhy6 = (~(Svkhy6 & Pnb7z6[14])); +assign U6vhy6 = (~(D90zx6 & Lgj7z6[184])); +assign E6vhy6 = (K7vhy6 & S7vhy6); +assign S7vhy6 = (~(Za0zx6 & Lgj7z6[172])); +assign K7vhy6 = (~(Hb0zx6 & Lgj7z6[160])); +assign O5vhy6 = (A8vhy6 & I8vhy6); +assign I8vhy6 = (Q8vhy6 & Y8vhy6); +assign Y8vhy6 = (~(Vc0zx6 & Lgj7z6[148])); +assign Q8vhy6 = (~(Dd0zx6 & Lgj7z6[136])); +assign A8vhy6 = (G9vhy6 & O9vhy6); +assign O9vhy6 = (~(Be0zx6 & Lgj7z6[124])); +assign G9vhy6 = (~(Je0zx6 & Lgj7z6[112])); +assign Kzuhy6 = (W9vhy6 & Eavhy6); +assign Eavhy6 = (Mavhy6 & Uavhy6); +assign Uavhy6 = (Cbvhy6 & Kbvhy6); +assign Kbvhy6 = (Sbvhy6 & Acvhy6); +assign Acvhy6 = (~(Bi0zx6 & Lgj7z6[100])); +assign Sbvhy6 = (~(Ji0zx6 & Lgj7z6[88])); +assign Cbvhy6 = (Icvhy6 & Qcvhy6); +assign Qcvhy6 = (~(Dh0zx6 & Lgj7z6[76])); +assign Icvhy6 = (~(Hj0zx6 & Lgj7z6[64])); +assign Mavhy6 = (Ycvhy6 & Gdvhy6); +assign Gdvhy6 = (Odvhy6 & Wdvhy6); +assign Wdvhy6 = (~(Pj0zx6 & Lgj7z6[52])); +assign Odvhy6 = (~(Dl0zx6 & Lgj7z6[40])); +assign Ycvhy6 = (Eevhy6 & Mevhy6); +assign Mevhy6 = (~(Ll0zx6 & Lgj7z6[28])); +assign Eevhy6 = (~(Jm0zx6 & Lgj7z6[16])); +assign W9vhy6 = (Uevhy6 & Cfvhy6); +assign Cfvhy6 = (Kfvhy6 & Sfvhy6); +assign Sfvhy6 = (Agvhy6 & Igvhy6); +assign Igvhy6 = (~(Rm0zx6 & Lgj7z6[4])); +assign Agvhy6 = (~(Pzqyx6 & G5j7z6[46])); +assign Kfvhy6 = (Qgvhy6 & Ygvhy6); +assign Ygvhy6 = (~(Jyqyx6 & G5j7z6[14])); +assign Qgvhy6 = (~(B2ryx6 & M6j7z6[46])); +assign Uevhy6 = (Ghvhy6 & Ohvhy6); +assign Ohvhy6 = (Whvhy6 & Eivhy6); +assign Eivhy6 = (~(J2ryx6 & M6j7z6[14])); +assign Whvhy6 = (~(D1ryx6 & Ohj7z6[46])); +assign Ghvhy6 = (Mivhy6 & Uivhy6); +assign Uivhy6 = (~(X3ryx6 & Ohj7z6[14])); +assign Mivhy6 = (~(STCALIB[14] & F4ryx6)); +assign Myuhy6 = (~(Klo7z6[1] & Cjvhy6)); +assign Cjvhy6 = (~(Kjvhy6 & Sjvhy6)); +assign Sjvhy6 = (Akvhy6 & Ikvhy6); +assign Ikvhy6 = (Qkvhy6 & Ravyx6); +assign Qkvhy6 = (~(T9tyx6 & As77z6)); +assign Akvhy6 = (Ykvhy6 & Glvhy6); +assign Glvhy6 = (~(Xkq7z6[14] & B6qyx6)); +assign Ykvhy6 = (~(D5qyx6 & Bqp7z6[14])); +assign Kjvhy6 = (Olvhy6 & Wlvhy6); +assign Wlvhy6 = (Emvhy6 & Mmvhy6); +assign Mmvhy6 = (~(L9qyx6 & E6p7z6[14])); +assign Emvhy6 = (~(Fcqyx6 & B2q7z6[14])); +assign Olvhy6 = (Umvhy6 & Cnvhy6); +assign Cnvhy6 = (~(Tdqyx6 & Mkp7z6[14])); +assign Umvhy6 = (~(U9p7z6[14] & Hfqyx6)); +assign Knuhy6 = (Knvhy6 & Snvhy6); +assign Snvhy6 = (~(Ies7z6[14] & Tltyx6)); +assign Knvhy6 = (Aovhy6 & Iovhy6); +assign Iovhy6 = (~(Klo7z6[3] & Qovhy6)); +assign Qovhy6 = (~(Yovhy6 & Gpvhy6)); +assign Gpvhy6 = (Opvhy6 & Wpvhy6); +assign Wpvhy6 = (Eqvhy6 & Mqvhy6); +assign Mqvhy6 = (~(Ojymz6[8] & Minhy6)); +assign Eqvhy6 = (~(Unymz6[8] & Uinhy6)); +assign Opvhy6 = (Uqvhy6 & Crvhy6); +assign Crvhy6 = (Kfsnv6 | Cbrhy6); +assign Kfsnv6 = (!Sgymz6[8]); +assign Uqvhy6 = (~(Biymz6[14] & Olnhy6)); +assign Yovhy6 = (Krvhy6 & Srvhy6); +assign Krvhy6 = (Asvhy6 & Isvhy6); +assign Isvhy6 = (~(Zs1nz6[6] & S3mhy6)); +assign Asvhy6 = (~(Nn1nz6[6] & U2mhy6)); +assign Aovhy6 = (~(Klo7z6[2] & Qsvhy6)); +assign Qsvhy6 = (~(Ysvhy6 & Gtvhy6)); +assign Gtvhy6 = (Otvhy6 & Wtvhy6); +assign Wtvhy6 = (Euvhy6 & Muvhy6); +assign Muvhy6 = (~(M0tet6 & S4kiw6)); +assign Euvhy6 = (Uuvhy6 & Cvvhy6); +assign Cvvhy6 = (~(Nqo7z6[12] & M8kiw6)); +assign Uuvhy6 = (~(Fpo7z6[12] & H9kiw6)); +assign Otvhy6 = (Kvvhy6 & Svvhy6); +assign Svvhy6 = (~(Ouo7z6[12] & K7kiw6)); +assign Kvvhy6 = (~(Hxo7z6[12] & W6kiw6)); +assign Ysvhy6 = (Awvhy6 & Iwvhy6); +assign Iwvhy6 = (Qwvhy6 & Ywvhy6); +assign Ywvhy6 = (~(Vro7z6[12] & Y7kiw6)); +assign Qwvhy6 = (~(T2p7z6[14] & U5kiw6)); +assign Awvhy6 = (Gxvhy6 & Oxvhy6); +assign Oxvhy6 = (~(W3p7z6[14] & G5kiw6)); +assign Gxvhy6 = (~(A0p7z6[12] & I6kiw6)); +assign Umuhy6 = (~(Zmoyx6 & E4f7x6)); +assign Emuhy6 = (Wxvhy6 & Eyvhy6); +assign Eyvhy6 = (~(HRDATAS[14] & Ad47x6)); +assign Wxvhy6 = (~(HRDATAD[14] & Mc47x6)); +assign Oluhy6 = (~(Lpryx6 & Twq7x6)); +assign Pmo7v6 = (~(Myvhy6 & Uyvhy6)); +assign Uyvhy6 = (~(Jexmz6[15] & K94iw6)); +assign Myvhy6 = (Czvhy6 & Kzvhy6); +assign Kzvhy6 = (~(Lloyx6 & Dh57x6)); +assign Dh57x6 = (~(Szvhy6 & A0why6)); +assign A0why6 = (I0why6 & Q0why6); +assign Q0why6 = (Bqoyx6 | K7f7x6); +assign K7f7x6 = (Y0why6 & G1why6); +assign G1why6 = (O1why6 & W1why6); +assign W1why6 = (E2why6 & M2why6); +assign M2why6 = (~(Rmzyx6 & U2why6)); +assign U2why6 = (~(C3why6 & K3why6)); +assign K3why6 = (S3why6 & A4why6); +assign A4why6 = (I4why6 & Q4why6); +assign Q4why6 = (~(Hyj7z6[3] & Lcciw6)); +assign I4why6 = (~(Hyj7z6[2] & Ecciw6)); +assign S3why6 = (Y4why6 & G5why6); +assign G5why6 = (~(Hyj7z6[1] & Xbciw6)); +assign Y4why6 = (~(Hyj7z6[5] & Zcciw6)); +assign C3why6 = (O5why6 & W5why6); +assign W5why6 = (E6why6 & M6why6); +assign M6why6 = (~(Hyj7z6[6] & Ndciw6)); +assign E6why6 = (~(Hyj7z6[7] & Udciw6)); +assign O5why6 = (U6why6 & C7why6); +assign C7why6 = (~(Hyj7z6[0] & Dfk7z6[15])); +assign U6why6 = (~(Hyj7z6[4] & Jkl7z6[15])); +assign E2why6 = (~(Xbzyx6 & K7why6)); +assign K7why6 = (~(S7why6 & A8why6)); +assign A8why6 = (I8why6 & Q8why6); +assign Q8why6 = (Y8why6 & G9why6); +assign G9why6 = (~(Hyj7z6[0] & Rbk7z6[13])); +assign Y8why6 = (~(Hyj7z6[1] & Zlk7z6[13])); +assign I8why6 = (O9why6 & W9why6); +assign W9why6 = (~(Hyj7z6[2] & Hwk7z6[13])); +assign O9why6 = (~(Hyj7z6[3] & P6l7z6[13])); +assign S7why6 = (Eawhy6 & Mawhy6); +assign Mawhy6 = (Uawhy6 & Cbwhy6); +assign Cbwhy6 = (~(Hyj7z6[4] & Xgl7z6[13])); +assign Uawhy6 = (~(Hyj7z6[5] & Frl7z6[13])); +assign Eawhy6 = (Kbwhy6 & Sbwhy6); +assign Sbwhy6 = (~(Hyj7z6[6] & N1m7z6[13])); +assign Kbwhy6 = (~(Hyj7z6[7] & Vbm7z6[13])); +assign O1why6 = (Acwhy6 & Icwhy6); +assign Icwhy6 = (~(Qcwhy6 & Ngqyx6)); +assign Qcwhy6 = (~(Ycwhy6 & Gdwhy6)); +assign Gdwhy6 = (Odwhy6 & Wdwhy6); +assign Wdwhy6 = (Eewhy6 & Mewhy6); +assign Mewhy6 = (Uewhy6 & Cfwhy6); +assign Cfwhy6 = (Kfwhy6 & Sfwhy6); +assign Sfwhy6 = (~(V40zx6 & Zdj7z6[2])); +assign Kfwhy6 = (Agwhy6 & U2vhy6); +assign Agwhy6 = (~(Prqyx6 & Z3j7z6[15])); +assign Uewhy6 = (Igwhy6 & Qgwhy6); +assign Qgwhy6 = (~(A0j7z6[15] & Xrqyx6)); +assign Igwhy6 = (~(H1j7z6[15] & Rqqyx6)); +assign Eewhy6 = (Ygwhy6 & Ghwhy6); +assign Ghwhy6 = (Ohwhy6 & Whwhy6); +assign Whwhy6 = (~(Bzi7z6[15] & Vsqyx6)); +assign Ohwhy6 = (~(Dxqyx6 & P2j7z6[3])); +assign Ygwhy6 = (Eiwhy6 & Miwhy6); +assign Miwhy6 = (~(Wui7z6[15] & Lxqyx6)); +assign Eiwhy6 = (~(Dri7z6[15] & Fwqyx6)); +assign Odwhy6 = (Uiwhy6 & Cjwhy6); +assign Cjwhy6 = (Kjwhy6 & Sjwhy6); +assign Sjwhy6 = (Akwhy6 & Ikwhy6); +assign Ikwhy6 = (~(D90zx6 & Lgj7z6[185])); +assign Akwhy6 = (Qkwhy6 & Ykwhy6); +assign Ykwhy6 = (~(Bwi7z6[15] & Hzqyx6)); +assign Qkwhy6 = (~(Svkhy6 & Pnb7z6[15])); +assign Kjwhy6 = (Glwhy6 & Olwhy6); +assign Olwhy6 = (~(Za0zx6 & Lgj7z6[173])); +assign Glwhy6 = (~(Hb0zx6 & Lgj7z6[161])); +assign Uiwhy6 = (Wlwhy6 & Emwhy6); +assign Emwhy6 = (Mmwhy6 & Umwhy6); +assign Umwhy6 = (~(Vc0zx6 & Lgj7z6[149])); +assign Mmwhy6 = (~(Dd0zx6 & Lgj7z6[137])); +assign Wlwhy6 = (Cnwhy6 & Knwhy6); +assign Knwhy6 = (~(Be0zx6 & Lgj7z6[125])); +assign Cnwhy6 = (~(Je0zx6 & Lgj7z6[113])); +assign Ycwhy6 = (Snwhy6 & Aowhy6); +assign Aowhy6 = (Iowhy6 & Qowhy6); +assign Qowhy6 = (Yowhy6 & Gpwhy6); +assign Gpwhy6 = (Opwhy6 & Wpwhy6); +assign Wpwhy6 = (~(Dh0zx6 & Lgj7z6[77])); +assign Opwhy6 = (Eqwhy6 & Mqwhy6); +assign Mqwhy6 = (~(Bi0zx6 & Lgj7z6[101])); +assign Eqwhy6 = (~(Ji0zx6 & Lgj7z6[89])); +assign Yowhy6 = (Uqwhy6 & Crwhy6); +assign Crwhy6 = (~(Hj0zx6 & Lgj7z6[65])); +assign Uqwhy6 = (~(Pj0zx6 & Lgj7z6[53])); +assign Iowhy6 = (Krwhy6 & Srwhy6); +assign Srwhy6 = (Aswhy6 & Iswhy6); +assign Iswhy6 = (~(Dl0zx6 & Lgj7z6[41])); +assign Aswhy6 = (~(Ll0zx6 & Lgj7z6[29])); +assign Krwhy6 = (Qswhy6 & Yswhy6); +assign Yswhy6 = (~(Jm0zx6 & Lgj7z6[17])); +assign Qswhy6 = (~(Rm0zx6 & Lgj7z6[5])); +assign Snwhy6 = (Gtwhy6 & Otwhy6); +assign Otwhy6 = (Wtwhy6 & Euwhy6); +assign Euwhy6 = (Muwhy6 & Uuwhy6); +assign Uuwhy6 = (~(Pzqyx6 & G5j7z6[47])); +assign Muwhy6 = (~(Jyqyx6 & G5j7z6[15])); +assign Wtwhy6 = (Cvwhy6 & Kvwhy6); +assign Kvwhy6 = (~(B2ryx6 & M6j7z6[47])); +assign Cvwhy6 = (~(J2ryx6 & M6j7z6[15])); +assign Gtwhy6 = (Svwhy6 & Awwhy6); +assign Awwhy6 = (Iwwhy6 & Qwwhy6); +assign Qwwhy6 = (~(D1ryx6 & Ohj7z6[47])); +assign Iwwhy6 = (~(O5nhy6 & Evadt6)); +assign O5nhy6 = (!Ywwhy6); +assign Svwhy6 = (Gxwhy6 & Oxwhy6); +assign Oxwhy6 = (~(X3ryx6 & Ohj7z6[15])); +assign Gxwhy6 = (~(STCALIB[15] & F4ryx6)); +assign Acwhy6 = (~(Klo7z6[1] & Wxwhy6)); +assign Wxwhy6 = (~(Eywhy6 & Mywhy6)); +assign Mywhy6 = (Uywhy6 & Czwhy6); +assign Czwhy6 = (Kzwhy6 & Ravyx6); +assign Kzwhy6 = (~(T9tyx6 & Sr77z6)); +assign Uywhy6 = (Szwhy6 & A0xhy6); +assign A0xhy6 = (~(Xkq7z6[15] & B6qyx6)); +assign Szwhy6 = (~(Bqp7z6[15] & D5qyx6)); +assign Eywhy6 = (I0xhy6 & Q0xhy6); +assign Q0xhy6 = (Y0xhy6 & G1xhy6); +assign G1xhy6 = (~(E6p7z6[15] & L9qyx6)); +assign Y0xhy6 = (~(B2q7z6[15] & Fcqyx6)); +assign I0xhy6 = (O1xhy6 & W1xhy6); +assign W1xhy6 = (~(Mkp7z6[15] & Tdqyx6)); +assign O1xhy6 = (~(Hfqyx6 & U9p7z6[15])); +assign Y0why6 = (E2xhy6 & M2xhy6); +assign M2xhy6 = (~(Ies7z6[15] & Tltyx6)); +assign E2xhy6 = (U2xhy6 & C3xhy6); +assign C3xhy6 = (~(Klo7z6[3] & K3xhy6)); +assign K3xhy6 = (~(S3xhy6 & A4xhy6)); +assign A4xhy6 = (I4xhy6 & Q4xhy6); +assign Q4xhy6 = (Y4xhy6 & G5xhy6); +assign G5xhy6 = (~(Ojymz6[9] & Minhy6)); +assign Minhy6 = (!Acrhy6); +assign Acrhy6 = (~(Hfpyx6 & Mphiw6)); +assign Y4xhy6 = (~(Unymz6[9] & Uinhy6)); +assign Uinhy6 = (Thpyx6 & Mphiw6); +assign I4xhy6 = (O5xhy6 & W5xhy6); +assign W5xhy6 = (~(Sgymz6[9] & Glnhy6)); +assign Glnhy6 = (!Cbrhy6); +assign Cbrhy6 = (~(Ngpyx6 & Mphiw6)); +assign O5xhy6 = (~(Biymz6[15] & Olnhy6)); +assign Olnhy6 = (Ddpyx6 & Mphiw6); +assign S3xhy6 = (E6xhy6 & Srvhy6); +assign Srvhy6 = (M6xhy6 & U6xhy6); +assign U6xhy6 = (~(C7xhy6 & Mphiw6)); +assign M6xhy6 = (~(K7xhy6 & O1mhy6)); +assign K7xhy6 = (~(S7xhy6 | Oduhy6)); +assign E6xhy6 = (A8xhy6 & I8xhy6); +assign I8xhy6 = (~(Zs1nz6[7] & S3mhy6)); +assign A8xhy6 = (~(Nn1nz6[7] & U2mhy6)); +assign U2xhy6 = (~(Klo7z6[2] & Q8xhy6)); +assign Q8xhy6 = (~(Y8xhy6 & G9xhy6)); +assign G9xhy6 = (O9xhy6 & W9xhy6); +assign W9xhy6 = (Eaxhy6 & Maxhy6); +assign Maxhy6 = (~(Lyset6 & S4kiw6)); +assign Eaxhy6 = (Uaxhy6 & Cbxhy6); +assign Cbxhy6 = (~(Nqo7z6[13] & M8kiw6)); +assign Uaxhy6 = (~(Fpo7z6[13] & H9kiw6)); +assign O9xhy6 = (Kbxhy6 & Sbxhy6); +assign Sbxhy6 = (~(Ouo7z6[13] & K7kiw6)); +assign Kbxhy6 = (~(Hxo7z6[13] & W6kiw6)); +assign Y8xhy6 = (Acxhy6 & Icxhy6); +assign Icxhy6 = (Qcxhy6 & Ycxhy6); +assign Ycxhy6 = (~(Vro7z6[13] & Y7kiw6)); +assign Qcxhy6 = (~(T2p7z6[15] & U5kiw6)); +assign Acxhy6 = (Gdxhy6 & Odxhy6); +assign Odxhy6 = (~(W3p7z6[15] & G5kiw6)); +assign Gdxhy6 = (~(A0p7z6[13] & I6kiw6)); +assign I0why6 = (~(Zmoyx6 & R7f7x6)); +assign Szvhy6 = (Wdxhy6 & Eexhy6); +assign Eexhy6 = (~(HRDATAS[15] & Ad47x6)); +assign Wdxhy6 = (~(HRDATAD[15] & Mc47x6)); +assign Czvhy6 = (~(Lpryx6 & Oyp7x6)); +assign Imo7v6 = (~(Mexhy6 & Uexhy6)); +assign Uexhy6 = (~(Jexmz6[16] & K94iw6)); +assign Mexhy6 = (Cfxhy6 & Kfxhy6); +assign Kfxhy6 = (~(Lloyx6 & Ve9ov6)); +assign Ve9ov6 = (~(Sfxhy6 & Agxhy6)); +assign Agxhy6 = (Igxhy6 & Qgxhy6); +assign Qgxhy6 = (Bqoyx6 | G4g7x6); +assign G4g7x6 = (Ygxhy6 & Ghxhy6); +assign Ghxhy6 = (Ohxhy6 & Whxhy6); +assign Whxhy6 = (Eixhy6 & Mixhy6); +assign Mixhy6 = (~(Xbzyx6 & Uixhy6)); +assign Uixhy6 = (~(Cjxhy6 & Kjxhy6)); +assign Kjxhy6 = (Sjxhy6 & Akxhy6); +assign Akxhy6 = (Ikxhy6 & Qkxhy6); +assign Qkxhy6 = (~(Hyj7z6[0] & Rbk7z6[14])); +assign Ikxhy6 = (~(Hyj7z6[1] & Zlk7z6[14])); +assign Sjxhy6 = (Ykxhy6 & Glxhy6); +assign Glxhy6 = (~(Hyj7z6[2] & Hwk7z6[14])); +assign Ykxhy6 = (~(Hyj7z6[3] & P6l7z6[14])); +assign Cjxhy6 = (Olxhy6 & Wlxhy6); +assign Wlxhy6 = (Emxhy6 & Mmxhy6); +assign Mmxhy6 = (~(Hyj7z6[4] & Xgl7z6[14])); +assign Emxhy6 = (~(Hyj7z6[5] & Frl7z6[14])); +assign Olxhy6 = (Umxhy6 & Cnxhy6); +assign Cnxhy6 = (~(Hyj7z6[6] & N1m7z6[14])); +assign Umxhy6 = (~(Hyj7z6[7] & Vbm7z6[14])); +assign Eixhy6 = (Knxhy6 & Snxhy6); +assign Snxhy6 = (~(D1pyx6 & Aoxhy6)); +assign Aoxhy6 = (~(Ioxhy6 & Qoxhy6)); +assign Qoxhy6 = (Yoxhy6 & Gpxhy6); +assign Gpxhy6 = (~(Ojymz6[10] & Hfpyx6)); +assign Yoxhy6 = (Opxhy6 & Wpxhy6); +assign Wpxhy6 = (~(Bfymz6[0] & Fgpyx6)); +assign Opxhy6 = (~(Sgymz6[10] & Ngpyx6)); +assign Ioxhy6 = (Eqxhy6 & Mqxhy6); +assign Mqxhy6 = (~(Blymz6[0] & Lhpyx6)); +assign Eqxhy6 = (~(Unymz6[10] & Thpyx6)); +assign Knxhy6 = (~(Rmzyx6 & Uqxhy6)); +assign Uqxhy6 = (~(Crxhy6 & Krxhy6)); +assign Krxhy6 = (Srxhy6 & Asxhy6); +assign Asxhy6 = (Isxhy6 & Qsxhy6); +assign Qsxhy6 = (~(Hyj7z6[0] & Dfk7z6[16])); +assign Isxhy6 = (~(Hyj7z6[1] & Lpk7z6[16])); +assign Srxhy6 = (Ysxhy6 & Gtxhy6); +assign Gtxhy6 = (~(Hyj7z6[2] & Tzk7z6[16])); +assign Ysxhy6 = (~(Hyj7z6[3] & Bal7z6[16])); +assign Crxhy6 = (Otxhy6 & Wtxhy6); +assign Wtxhy6 = (Euxhy6 & Muxhy6); +assign Muxhy6 = (~(Hyj7z6[4] & Jkl7z6[16])); +assign Euxhy6 = (~(Hyj7z6[5] & Rul7z6[16])); +assign Otxhy6 = (Uuxhy6 & Cvxhy6); +assign Cvxhy6 = (~(Hyj7z6[6] & Z4m7z6[16])); +assign Uuxhy6 = (~(Hyj7z6[7] & Hfm7z6[16])); +assign Ohxhy6 = (Kvxhy6 & Svxhy6); +assign Svxhy6 = (~(Klo7z6[1] & Awxhy6)); +assign Awxhy6 = (~(Iwxhy6 & Qwxhy6)); +assign Qwxhy6 = (Ywxhy6 & Gxxhy6); +assign Gxxhy6 = (Oxxhy6 & Wxxhy6); +assign Wxxhy6 = (~(Xkq7z6[16] & B6qyx6)); +assign Oxxhy6 = (Eyxhy6 & Ravyx6); +assign Eyxhy6 = (~(T9tyx6 & Kr77z6)); +assign Ywxhy6 = (Myxhy6 & Uyxhy6); +assign Uyxhy6 = (~(Bqp7z6[16] & D5qyx6)); +assign Myxhy6 = (~(E6p7z6[16] & L9qyx6)); +assign Iwxhy6 = (Czxhy6 & Kzxhy6); +assign Kzxhy6 = (Szxhy6 & A0yhy6); +assign A0yhy6 = (~(B2q7z6[16] & Fcqyx6)); +assign Szxhy6 = (~(Q0a8x6 & Wrp7z6[0])); +assign Czxhy6 = (I0yhy6 & Q0yhy6); +assign Q0yhy6 = (~(Mkp7z6[16] & Tdqyx6)); +assign I0yhy6 = (~(Hfqyx6 & U9p7z6[16])); +assign Kvxhy6 = (~(Y0yhy6 & Ngqyx6)); +assign Y0yhy6 = (~(G1yhy6 & O1yhy6)); +assign O1yhy6 = (W1yhy6 & E2yhy6); +assign E2yhy6 = (M2yhy6 & U2yhy6); +assign U2yhy6 = (C3yhy6 & K3yhy6); +assign K3yhy6 = (~(Prqyx6 & Ykcet6)); +assign C3yhy6 = (S3yhy6 & A4yhy6); +assign A4yhy6 = (~(I4yhy6 & Buqyx6)); +assign I4yhy6 = (Kdadt6 & V9lov6); +assign V9lov6 = (~(Cwadt6 & X6eet6)); +assign S3yhy6 = (~(Q4yhy6 & Macet6)); +assign Q4yhy6 = (~(Lxuyx6 | Hzuyx6)); +assign M2yhy6 = (Y4yhy6 & G5yhy6); +assign G5yhy6 = (~(Ttqyx6 & E1cet6)); +assign Y4yhy6 = (O5yhy6 & W5yhy6); +assign W5yhy6 = (~(A0j7z6[16] & Xrqyx6)); +assign O5yhy6 = (~(H1j7z6[16] & Rqqyx6)); +assign W1yhy6 = (E6yhy6 & M6yhy6); +assign M6yhy6 = (U6yhy6 & C7yhy6); +assign C7yhy6 = (~(Dxqyx6 & P2j7z6[4])); +assign U6yhy6 = (K7yhy6 & S7yhy6); +assign S7yhy6 = (~(Bzi7z6[16] & Vsqyx6)); +assign K7yhy6 = (~(Hjsyx6 & A8yhy6)); +assign E6yhy6 = (I8yhy6 & Q8yhy6); +assign Q8yhy6 = (~(Wui7z6[16] & Lxqyx6)); +assign I8yhy6 = (~(Dri7z6[16] & Fwqyx6)); +assign G1yhy6 = (Y8yhy6 & G9yhy6); +assign G9yhy6 = (O9yhy6 & W9yhy6); +assign W9yhy6 = (Eayhy6 & Mayhy6); +assign Mayhy6 = (~(Pzqyx6 & G5j7z6[48])); +assign Eayhy6 = (Uayhy6 & Cbyhy6); +assign Cbyhy6 = (~(Bwi7z6[16] & Hzqyx6)); +assign Uayhy6 = (~(Svkhy6 & Pnb7z6[16])); +assign O9yhy6 = (Kbyhy6 & Sbyhy6); +assign Sbyhy6 = (~(J2ryx6 & M6j7z6[16])); +assign Kbyhy6 = (Acyhy6 & Icyhy6); +assign Icyhy6 = (~(Jyqyx6 & G5j7z6[16])); +assign Acyhy6 = (~(B2ryx6 & M6j7z6[48])); +assign Y8yhy6 = (Qcyhy6 & Ycyhy6); +assign Ycyhy6 = (Gdyhy6 & Odyhy6); +assign Odyhy6 = (~(STCALIB[16] & F4ryx6)); +assign Gdyhy6 = (Wdyhy6 & Eeyhy6); +assign Eeyhy6 = (~(D1ryx6 & Ohj7z6[48])); +assign Wdyhy6 = (~(X3ryx6 & Ohj7z6[16])); +assign Qcyhy6 = (Pr0zx6 & Meyhy6); +assign Ygxhy6 = (Ueyhy6 & Cfyhy6); +assign Cfyhy6 = (Kfyhy6 & Sfyhy6); +assign Sfyhy6 = (~(Yr1nz6[0] & Xjtyx6)); +assign Kfyhy6 = (Agyhy6 & Igyhy6); +assign Igyhy6 = (~(Klo7z6[2] & Qgyhy6)); +assign Qgyhy6 = (~(Ygyhy6 & Ghyhy6)); +assign Ghyhy6 = (Ohyhy6 & Whyhy6); +assign Whyhy6 = (Eiyhy6 & Miyhy6); +assign Miyhy6 = (~(Kwset6 & S4kiw6)); +assign Eiyhy6 = (Uiyhy6 & Cjyhy6); +assign Cjyhy6 = (~(Nqo7z6[14] & M8kiw6)); +assign Uiyhy6 = (~(Fpo7z6[14] & H9kiw6)); +assign Ohyhy6 = (Kjyhy6 & Sjyhy6); +assign Sjyhy6 = (~(Ouo7z6[14] & K7kiw6)); +assign Kjyhy6 = (~(Hxo7z6[14] & W6kiw6)); +assign Ygyhy6 = (Akyhy6 & Ikyhy6); +assign Ikyhy6 = (Qkyhy6 & Ykyhy6); +assign Ykyhy6 = (~(Vro7z6[14] & Y7kiw6)); +assign Qkyhy6 = (~(T2p7z6[16] & U5kiw6)); +assign Akyhy6 = (Glyhy6 & Olyhy6); +assign Olyhy6 = (~(W3p7z6[16] & G5kiw6)); +assign Glyhy6 = (~(A0p7z6[14] & I6kiw6)); +assign Agyhy6 = (~(Mm1nz6[0] & Pjtyx6)); +assign Ueyhy6 = (Wlyhy6 & Emyhy6); +assign Emyhy6 = (~(Mqb7z6[0] & Lltyx6)); +assign Wlyhy6 = (~(Ies7z6[16] & Tltyx6)); +assign Igxhy6 = (~(HRDATAS[16] & Ad47x6)); +assign Sfxhy6 = (Mmyhy6 & Umyhy6); +assign Umyhy6 = (~(HRDATAD[16] & Mc47x6)); +assign Mmyhy6 = (~(Zmoyx6 & N4g7x6)); +assign Cfxhy6 = (~(Lpryx6 & V4r7x6)); +assign Bmo7v6 = (~(Cnyhy6 & Knyhy6)); +assign Knyhy6 = (~(Jexmz6[17] & K94iw6)); +assign Cnyhy6 = (Snyhy6 & Aoyhy6); +assign Aoyhy6 = (~(Lloyx6 & Ob67x6)); +assign Ob67x6 = (~(Ioyhy6 & Qoyhy6)); +assign Qoyhy6 = (Yoyhy6 & Gpyhy6); +assign Gpyhy6 = (Bqoyx6 | Tff7x6); +assign Tff7x6 = (Opyhy6 & Wpyhy6); +assign Wpyhy6 = (Eqyhy6 & Mqyhy6); +assign Mqyhy6 = (Uqyhy6 & Cryhy6); +assign Cryhy6 = (~(Xbzyx6 & Kryhy6)); +assign Kryhy6 = (~(Sryhy6 & Asyhy6)); +assign Asyhy6 = (Isyhy6 & Qsyhy6); +assign Qsyhy6 = (Ysyhy6 & Gtyhy6); +assign Gtyhy6 = (~(Hyj7z6[0] & Rbk7z6[15])); +assign Ysyhy6 = (~(Hyj7z6[1] & Zlk7z6[15])); +assign Isyhy6 = (Otyhy6 & Wtyhy6); +assign Wtyhy6 = (~(Hyj7z6[2] & Hwk7z6[15])); +assign Otyhy6 = (~(Hyj7z6[3] & P6l7z6[15])); +assign Sryhy6 = (Euyhy6 & Muyhy6); +assign Muyhy6 = (Uuyhy6 & Cvyhy6); +assign Cvyhy6 = (~(Hyj7z6[4] & Xgl7z6[15])); +assign Uuyhy6 = (~(Hyj7z6[5] & Frl7z6[15])); +assign Euyhy6 = (Kvyhy6 & Svyhy6); +assign Svyhy6 = (~(Hyj7z6[6] & N1m7z6[15])); +assign Kvyhy6 = (~(Hyj7z6[7] & Vbm7z6[15])); +assign Uqyhy6 = (Awyhy6 & Iwyhy6); +assign Iwyhy6 = (~(D1pyx6 & Qwyhy6)); +assign Qwyhy6 = (~(Ywyhy6 & Gxyhy6)); +assign Gxyhy6 = (~(Blymz6[1] & Lhpyx6)); +assign Ywyhy6 = (Oxyhy6 & L5pyx6); +assign L5pyx6 = (~(P3xyx6 & N8pyx6)); +assign N8pyx6 = (Wxyhy6 & Xfymz6[4]); +assign Wxyhy6 = (Xfymz6[2] & Eyyhy6); +assign Oxyhy6 = (~(Bfymz6[1] & Fgpyx6)); +assign Awyhy6 = (~(Rmzyx6 & Myyhy6)); +assign Myyhy6 = (~(Uyyhy6 & Czyhy6)); +assign Czyhy6 = (Kzyhy6 & Szyhy6); +assign Szyhy6 = (A0zhy6 & I0zhy6); +assign I0zhy6 = (~(Hyj7z6[3] & Ahciw6)); +assign A0zhy6 = (~(Hyj7z6[2] & Tgciw6)); +assign Kzyhy6 = (Q0zhy6 & Y0zhy6); +assign Y0zhy6 = (~(Hyj7z6[1] & Mgciw6)); +assign Q0zhy6 = (~(Hyj7z6[5] & Hhciw6)); +assign Uyyhy6 = (G1zhy6 & O1zhy6); +assign O1zhy6 = (W1zhy6 & E2zhy6); +assign E2zhy6 = (~(Hyj7z6[6] & Ohciw6)); +assign W1zhy6 = (~(Hyj7z6[7] & Vhciw6)); +assign G1zhy6 = (M2zhy6 & U2zhy6); +assign U2zhy6 = (~(Hyj7z6[0] & Dfk7z6[17])); +assign M2zhy6 = (~(Hyj7z6[4] & Jkl7z6[17])); +assign Eqyhy6 = (C3zhy6 & K3zhy6); +assign K3zhy6 = (~(Klo7z6[1] & S3zhy6)); +assign S3zhy6 = (~(A4zhy6 & I4zhy6)); +assign I4zhy6 = (Q4zhy6 & Y4zhy6); +assign Y4zhy6 = (G5zhy6 & O5zhy6); +assign O5zhy6 = (~(Xkq7z6[17] & B6qyx6)); +assign G5zhy6 = (W5zhy6 & Ravyx6); +assign W5zhy6 = (~(T9tyx6 & Cr77z6)); +assign Q4zhy6 = (E6zhy6 & M6zhy6); +assign M6zhy6 = (~(Bqp7z6[17] & D5qyx6)); +assign E6zhy6 = (~(E6p7z6[17] & L9qyx6)); +assign A4zhy6 = (U6zhy6 & C7zhy6); +assign C7zhy6 = (K7zhy6 & S7zhy6); +assign S7zhy6 = (~(B2q7z6[17] & Fcqyx6)); +assign K7zhy6 = (~(Q0a8x6 & Wrp7z6[1])); +assign U6zhy6 = (A8zhy6 & I8zhy6); +assign I8zhy6 = (~(Mkp7z6[17] & Tdqyx6)); +assign A8zhy6 = (~(Hfqyx6 & U9p7z6[17])); +assign C3zhy6 = (~(Q8zhy6 & Ngqyx6)); +assign Q8zhy6 = (~(Y8zhy6 & G9zhy6)); +assign G9zhy6 = (O9zhy6 & W9zhy6); +assign W9zhy6 = (Eazhy6 & Mazhy6); +assign Mazhy6 = (Uazhy6 & Cbzhy6); +assign Cbzhy6 = (~(A0j7z6[17] & Xrqyx6)); +assign Uazhy6 = (Kbzhy6 & U2vhy6); +assign Kbzhy6 = (~(Prqyx6 & Sjcet6)); +assign Eazhy6 = (Sbzhy6 & Aczhy6); +assign Aczhy6 = (~(H1j7z6[17] & Rqqyx6)); +assign Sbzhy6 = (~(Ttqyx6 & Oecet6)); +assign O9zhy6 = (Iczhy6 & Qczhy6); +assign Qczhy6 = (Yczhy6 & Gdzhy6); +assign Gdzhy6 = (~(Dxqyx6 & P2j7z6[5])); +assign Yczhy6 = (Odzhy6 & Wdzhy6); +assign Wdzhy6 = (~(Buqyx6 & F02nv6)); +assign Odzhy6 = (~(Bzi7z6[17] & Vsqyx6)); +assign Iczhy6 = (Eezhy6 & Mezhy6); +assign Mezhy6 = (~(Wui7z6[17] & Lxqyx6)); +assign Eezhy6 = (~(Dri7z6[17] & Fwqyx6)); +assign Y8zhy6 = (Uezhy6 & Cfzhy6); +assign Cfzhy6 = (Kfzhy6 & Sfzhy6); +assign Sfzhy6 = (Agzhy6 & Igzhy6); +assign Igzhy6 = (~(Pzqyx6 & G5j7z6[49])); +assign Agzhy6 = (Qgzhy6 & Ygzhy6); +assign Ygzhy6 = (~(Bwi7z6[17] & Hzqyx6)); +assign Qgzhy6 = (~(Svkhy6 & Pnb7z6[17])); +assign Kfzhy6 = (Ghzhy6 & Ohzhy6); +assign Ohzhy6 = (~(Jyqyx6 & G5j7z6[17])); +assign Ghzhy6 = (~(B2ryx6 & M6j7z6[49])); +assign Uezhy6 = (Whzhy6 & Eizhy6); +assign Eizhy6 = (Mizhy6 & Uizhy6); +assign Uizhy6 = (~(J2ryx6 & M6j7z6[17])); +assign Mizhy6 = (~(D1ryx6 & Ohj7z6[49])); +assign Whzhy6 = (Cjzhy6 & Kjzhy6); +assign Kjzhy6 = (~(X3ryx6 & Ohj7z6[17])); +assign Cjzhy6 = (~(STCALIB[17] & F4ryx6)); +assign Opyhy6 = (Sjzhy6 & Akzhy6); +assign Akzhy6 = (Ikzhy6 & Qkzhy6); +assign Qkzhy6 = (~(Yr1nz6[1] & Xjtyx6)); +assign Ikzhy6 = (Ykzhy6 & Glzhy6); +assign Glzhy6 = (~(Klo7z6[2] & Olzhy6)); +assign Olzhy6 = (~(Wlzhy6 & Emzhy6)); +assign Emzhy6 = (Mmzhy6 & Umzhy6); +assign Umzhy6 = (Cnzhy6 & Knzhy6); +assign Knzhy6 = (~(Juset6 & S4kiw6)); +assign Cnzhy6 = (Snzhy6 & Aozhy6); +assign Aozhy6 = (~(Nqo7z6[15] & M8kiw6)); +assign Snzhy6 = (~(Fpo7z6[15] & H9kiw6)); +assign Mmzhy6 = (Iozhy6 & Qozhy6); +assign Qozhy6 = (~(Ouo7z6[15] & K7kiw6)); +assign Iozhy6 = (~(Hxo7z6[15] & W6kiw6)); +assign Wlzhy6 = (Yozhy6 & Gpzhy6); +assign Gpzhy6 = (Opzhy6 & Wpzhy6); +assign Wpzhy6 = (~(Vro7z6[15] & Y7kiw6)); +assign Opzhy6 = (~(T2p7z6[17] & U5kiw6)); +assign Yozhy6 = (Eqzhy6 & Mqzhy6); +assign Mqzhy6 = (~(W3p7z6[17] & G5kiw6)); +assign Eqzhy6 = (~(A0p7z6[15] & I6kiw6)); +assign Ykzhy6 = (~(Mm1nz6[1] & Pjtyx6)); +assign Sjzhy6 = (Uqzhy6 & Crzhy6); +assign Crzhy6 = (~(Mqb7z6[1] & Lltyx6)); +assign Uqzhy6 = (~(Ies7z6[17] & Tltyx6)); +assign Yoyhy6 = (~(Zmoyx6 & Agf7x6)); +assign Agf7x6 = (~(Krzhy6 & Srzhy6)); +assign Srzhy6 = (~(Aszhy6 & Eaa7z6)); +assign Eaa7z6 = (~(Iszhy6 & Qszhy6)); +assign Qszhy6 = (~(HRDATAD[17] & Qln7z6[0])); +assign Iszhy6 = (~(HRDATAS[17] & Qln7z6[1])); +assign Krzhy6 = (~(Tim7z6[17] & Yszhy6)); +assign Ioyhy6 = (Gtzhy6 & Otzhy6); +assign Otzhy6 = (~(HRDATAS[17] & Ad47x6)); +assign Gtzhy6 = (~(HRDATAD[17] & Mc47x6)); +assign Snyhy6 = (~(Lpryx6 & Y3q7x6)); +assign Ulo7v6 = (~(Wtzhy6 & Euzhy6)); +assign Euzhy6 = (~(Jexmz6[18] & K94iw6)); +assign Wtzhy6 = (Muzhy6 & Uuzhy6); +assign Uuzhy6 = (~(Lloyx6 & Ddfov6)); +assign Ddfov6 = (~(Cvzhy6 & Kvzhy6)); +assign Kvzhy6 = (Svzhy6 & Awzhy6); +assign Awzhy6 = (Bqoyx6 | Gjf7x6); +assign Gjf7x6 = (Iwzhy6 & Qwzhy6); +assign Qwzhy6 = (Ywzhy6 & Gxzhy6); +assign Gxzhy6 = (Oxzhy6 & Wxzhy6); +assign Wxzhy6 = (~(Rmzyx6 & Eyzhy6)); +assign Eyzhy6 = (~(Myzhy6 & Uyzhy6)); +assign Uyzhy6 = (Czzhy6 & Kzzhy6); +assign Kzzhy6 = (Szzhy6 & A00iy6); +assign A00iy6 = (~(Hyj7z6[7] & Ljciw6)); +assign Szzhy6 = (~(Hyj7z6[3] & Qiciw6)); +assign Czzhy6 = (I00iy6 & Q00iy6); +assign Q00iy6 = (~(Hyj7z6[2] & Jiciw6)); +assign I00iy6 = (~(Hyj7z6[1] & Ciciw6)); +assign Myzhy6 = (Y00iy6 & G10iy6); +assign G10iy6 = (O10iy6 & W10iy6); +assign W10iy6 = (~(Hyj7z6[5] & Xiciw6)); +assign O10iy6 = (~(Hyj7z6[6] & Ejciw6)); +assign Y00iy6 = (E20iy6 & M20iy6); +assign M20iy6 = (~(Hyj7z6[0] & Dfk7z6[18])); +assign E20iy6 = (~(Hyj7z6[4] & Jkl7z6[18])); +assign Oxzhy6 = (~(Xbzyx6 & U20iy6)); +assign U20iy6 = (~(C30iy6 & K30iy6)); +assign K30iy6 = (S30iy6 & A40iy6); +assign A40iy6 = (I40iy6 & Q40iy6); +assign Q40iy6 = (~(Rbk7z6[16] & Hyj7z6[0])); +assign I40iy6 = (~(Zlk7z6[16] & Hyj7z6[1])); +assign S30iy6 = (Y40iy6 & G50iy6); +assign G50iy6 = (~(Hwk7z6[16] & Hyj7z6[2])); +assign Y40iy6 = (~(P6l7z6[16] & Hyj7z6[3])); +assign C30iy6 = (O50iy6 & W50iy6); +assign W50iy6 = (E60iy6 & M60iy6); +assign M60iy6 = (~(Xgl7z6[16] & Hyj7z6[4])); +assign E60iy6 = (~(Frl7z6[16] & Hyj7z6[5])); +assign O50iy6 = (U60iy6 & C70iy6); +assign C70iy6 = (~(N1m7z6[16] & Hyj7z6[6])); +assign U60iy6 = (~(Vbm7z6[16] & Hyj7z6[7])); +assign Ywzhy6 = (K70iy6 & S70iy6); +assign S70iy6 = (~(A80iy6 & Ngqyx6)); +assign A80iy6 = (~(I80iy6 & Q80iy6)); +assign Q80iy6 = (Y80iy6 & G90iy6); +assign G90iy6 = (O90iy6 & W90iy6); +assign W90iy6 = (Ea0iy6 & Ma0iy6); +assign Ma0iy6 = (~(Prqyx6 & Micet6)); +assign Prqyx6 = (~(Ua0iy6 | Tlqyx6)); +assign O90iy6 = (Cb0iy6 & Kb0iy6); +assign Kb0iy6 = (~(A0j7z6[18] & Xrqyx6)); +assign Cb0iy6 = (~(H1j7z6[18] & Rqqyx6)); +assign Y80iy6 = (Sb0iy6 & Ac0iy6); +assign Ac0iy6 = (Ic0iy6 & Qc0iy6); +assign Qc0iy6 = (~(Bzi7z6[18] & Vsqyx6)); +assign Ic0iy6 = (Yc0iy6 & Gd0iy6); +assign Gd0iy6 = (~(Vzbet6 & Ttqyx6)); +assign Yc0iy6 = (~(Buqyx6 & Cqiiw6)); +assign Cqiiw6 = (!K3jnv6); +assign Sb0iy6 = (Od0iy6 & Wd0iy6); +assign Wd0iy6 = (~(Dxqyx6 & P2j7z6[6])); +assign Od0iy6 = (~(Wui7z6[18] & Lxqyx6)); +assign I80iy6 = (Ee0iy6 & Me0iy6); +assign Me0iy6 = (Ue0iy6 & Cf0iy6); +assign Cf0iy6 = (Kf0iy6 & Sf0iy6); +assign Sf0iy6 = (~(Svkhy6 & Pnb7z6[18])); +assign Kf0iy6 = (Ag0iy6 & Ig0iy6); +assign Ig0iy6 = (~(Dri7z6[18] & Fwqyx6)); +assign Ag0iy6 = (~(Bwi7z6[18] & Hzqyx6)); +assign Ue0iy6 = (Qg0iy6 & Yg0iy6); +assign Yg0iy6 = (~(Pzqyx6 & G5j7z6[50])); +assign Qg0iy6 = (~(Jyqyx6 & G5j7z6[18])); +assign Ee0iy6 = (Gh0iy6 & Oh0iy6); +assign Oh0iy6 = (Wh0iy6 & Ei0iy6); +assign Ei0iy6 = (~(D1ryx6 & Ohj7z6[50])); +assign Wh0iy6 = (Mi0iy6 & Ui0iy6); +assign Ui0iy6 = (~(B2ryx6 & M6j7z6[50])); +assign Mi0iy6 = (~(J2ryx6 & M6j7z6[18])); +assign Gh0iy6 = (Cj0iy6 & Kj0iy6); +assign Kj0iy6 = (~(X3ryx6 & Ohj7z6[18])); +assign Cj0iy6 = (~(STCALIB[18] & F4ryx6)); +assign K70iy6 = (~(Klo7z6[1] & Sj0iy6)); +assign Sj0iy6 = (~(Ak0iy6 & Ik0iy6)); +assign Ik0iy6 = (Qk0iy6 & Yk0iy6); +assign Yk0iy6 = (Gl0iy6 & Ravyx6); +assign Gl0iy6 = (~(T9tyx6 & Uq77z6)); +assign Qk0iy6 = (Ol0iy6 & Wl0iy6); +assign Wl0iy6 = (~(Xkq7z6[18] & B6qyx6)); +assign Ol0iy6 = (~(Bqp7z6[18] & D5qyx6)); +assign Ak0iy6 = (Em0iy6 & Mm0iy6); +assign Mm0iy6 = (Um0iy6 & Cn0iy6); +assign Cn0iy6 = (~(E6p7z6[18] & L9qyx6)); +assign Um0iy6 = (~(B2q7z6[18] & Fcqyx6)); +assign Em0iy6 = (Kn0iy6 & Sn0iy6); +assign Sn0iy6 = (~(Mkp7z6[18] & Tdqyx6)); +assign Kn0iy6 = (~(Hfqyx6 & U9p7z6[18])); +assign Iwzhy6 = (Ao0iy6 & Io0iy6); +assign Io0iy6 = (Qo0iy6 & Yo0iy6); +assign Yo0iy6 = (~(Klo7z6[3] & Gp0iy6)); +assign Gp0iy6 = (~(Op0iy6 & Wp0iy6)); +assign Wp0iy6 = (Eq0iy6 & Mq0iy6); +assign Mq0iy6 = (~(Kzlhy6 & Uq0iy6)); +assign Uq0iy6 = (~(Cr0iy6 & Kr0iy6)); +assign Kzlhy6 = (!Oduhy6); +assign Eq0iy6 = (~(Mphiw6 & Sr0iy6)); +assign Sr0iy6 = (~(As0iy6 & Wtshy6)); +assign Wtshy6 = (Z6yyx6 & Q8rhy6); +assign Q8rhy6 = (~(Ied8x6 & W5qhy6)); +assign Z6yyx6 = (!C7xhy6); +assign As0iy6 = (Is0iy6 & Qs0iy6); +assign Qs0iy6 = (~(Ys0iy6 & Dp77v6)); +assign Is0iy6 = (~(Blymz6[2] & Lhpyx6)); +assign Op0iy6 = (Gt0iy6 & Ot0iy6); +assign Ot0iy6 = (~(Yr1nz6[2] & S3mhy6)); +assign Gt0iy6 = (~(Mm1nz6[2] & U2mhy6)); +assign Qo0iy6 = (~(Klo7z6[2] & Wt0iy6)); +assign Wt0iy6 = (~(Eu0iy6 & Mu0iy6)); +assign Mu0iy6 = (Uu0iy6 & Cv0iy6); +assign Cv0iy6 = (Kv0iy6 & Sv0iy6); +assign Sv0iy6 = (~(Isset6 & S4kiw6)); +assign Kv0iy6 = (Aw0iy6 & Iw0iy6); +assign Iw0iy6 = (~(Nqo7z6[16] & M8kiw6)); +assign Aw0iy6 = (~(Fpo7z6[16] & H9kiw6)); +assign Uu0iy6 = (Qw0iy6 & Yw0iy6); +assign Yw0iy6 = (~(Ouo7z6[16] & K7kiw6)); +assign Qw0iy6 = (~(Hxo7z6[16] & W6kiw6)); +assign Eu0iy6 = (Gx0iy6 & Ox0iy6); +assign Ox0iy6 = (Wx0iy6 & Ey0iy6); +assign Ey0iy6 = (~(Vro7z6[16] & Y7kiw6)); +assign Wx0iy6 = (~(T2p7z6[18] & U5kiw6)); +assign Gx0iy6 = (My0iy6 & Uy0iy6); +assign Uy0iy6 = (~(W3p7z6[18] & G5kiw6)); +assign My0iy6 = (~(A0p7z6[16] & I6kiw6)); +assign Ao0iy6 = (Cz0iy6 & Kz0iy6); +assign Kz0iy6 = (~(Mqb7z6[2] & Lltyx6)); +assign Cz0iy6 = (~(Ies7z6[18] & Tltyx6)); +assign Svzhy6 = (~(Zmoyx6 & Njf7x6)); +assign Njf7x6 = (~(Sz0iy6 & A01iy6)); +assign A01iy6 = (~(Aszhy6 & W9a7z6)); +assign W9a7z6 = (~(I01iy6 & Q01iy6)); +assign Q01iy6 = (~(HRDATAD[18] & Qln7z6[0])); +assign I01iy6 = (~(HRDATAS[18] & Qln7z6[1])); +assign Sz0iy6 = (~(Tim7z6[18] & Yszhy6)); +assign Cvzhy6 = (Y01iy6 & G11iy6); +assign G11iy6 = (~(HRDATAS[18] & Ad47x6)); +assign Y01iy6 = (~(HRDATAD[18] & Mc47x6)); +assign Muzhy6 = (~(Lpryx6 & I9q7x6)); +assign Nlo7v6 = (~(O11iy6 & W11iy6)); +assign W11iy6 = (~(Jexmz6[19] & K94iw6)); +assign O11iy6 = (E21iy6 & M21iy6); +assign M21iy6 = (~(Lloyx6 & Hnlov6)); +assign Hnlov6 = (~(U21iy6 & C31iy6)); +assign C31iy6 = (K31iy6 & S31iy6); +assign S31iy6 = (Bqoyx6 | Tmf7x6); +assign Tmf7x6 = (A41iy6 & I41iy6); +assign I41iy6 = (Q41iy6 & Y41iy6); +assign Y41iy6 = (G51iy6 & O51iy6); +assign O51iy6 = (~(Xbzyx6 & W51iy6)); +assign W51iy6 = (~(E61iy6 & M61iy6)); +assign M61iy6 = (U61iy6 & C71iy6); +assign C71iy6 = (K71iy6 & S71iy6); +assign S71iy6 = (~(Hyj7z6[0] & Rbk7z6[17])); +assign K71iy6 = (~(Hyj7z6[1] & Zlk7z6[17])); +assign U61iy6 = (A81iy6 & I81iy6); +assign I81iy6 = (~(Hyj7z6[2] & Hwk7z6[17])); +assign A81iy6 = (~(Hyj7z6[3] & P6l7z6[17])); +assign E61iy6 = (Q81iy6 & Y81iy6); +assign Y81iy6 = (G91iy6 & O91iy6); +assign O91iy6 = (~(Hyj7z6[4] & Xgl7z6[17])); +assign G91iy6 = (~(Hyj7z6[5] & Frl7z6[17])); +assign Q81iy6 = (W91iy6 & Ea1iy6); +assign Ea1iy6 = (~(Hyj7z6[6] & N1m7z6[17])); +assign W91iy6 = (~(Hyj7z6[7] & Vbm7z6[17])); +assign G51iy6 = (Ma1iy6 & Ua1iy6); +assign Ua1iy6 = (~(Cb1iy6 & Blymz6[3])); +assign Cb1iy6 = (D1pyx6 & Lhpyx6); +assign Ma1iy6 = (~(Rmzyx6 & Kb1iy6)); +assign Kb1iy6 = (~(Sb1iy6 & Ac1iy6)); +assign Ac1iy6 = (Ic1iy6 & Qc1iy6); +assign Qc1iy6 = (Yc1iy6 & Gd1iy6); +assign Gd1iy6 = (~(Hyj7z6[3] & Gkciw6)); +assign Yc1iy6 = (~(Hyj7z6[2] & Zjciw6)); +assign Ic1iy6 = (Od1iy6 & Wd1iy6); +assign Wd1iy6 = (~(Hyj7z6[1] & Sjciw6)); +assign Od1iy6 = (~(Hyj7z6[5] & Nkciw6)); +assign Sb1iy6 = (Ee1iy6 & Me1iy6); +assign Me1iy6 = (Ue1iy6 & Cf1iy6); +assign Cf1iy6 = (~(Hyj7z6[6] & Ukciw6)); +assign Ue1iy6 = (~(Hyj7z6[7] & Blciw6)); +assign Ee1iy6 = (Kf1iy6 & Sf1iy6); +assign Sf1iy6 = (~(Hyj7z6[0] & Dfk7z6[19])); +assign Kf1iy6 = (~(Hyj7z6[4] & Jkl7z6[19])); +assign Q41iy6 = (Ag1iy6 & Ig1iy6); +assign Ig1iy6 = (~(Klo7z6[1] & Qg1iy6)); +assign Qg1iy6 = (~(Yg1iy6 & Gh1iy6)); +assign Gh1iy6 = (Oh1iy6 & Wh1iy6); +assign Wh1iy6 = (Ei1iy6 & Ravyx6); +assign Ei1iy6 = (~(T9tyx6 & Mq77z6)); +assign Oh1iy6 = (Mi1iy6 & Ui1iy6); +assign Ui1iy6 = (~(Xkq7z6[19] & B6qyx6)); +assign Mi1iy6 = (~(Bqp7z6[19] & D5qyx6)); +assign Yg1iy6 = (Cj1iy6 & Kj1iy6); +assign Kj1iy6 = (Sj1iy6 & Ak1iy6); +assign Ak1iy6 = (~(E6p7z6[19] & L9qyx6)); +assign Sj1iy6 = (~(B2q7z6[19] & Fcqyx6)); +assign Cj1iy6 = (Ik1iy6 & Qk1iy6); +assign Qk1iy6 = (~(Mkp7z6[19] & Tdqyx6)); +assign Ik1iy6 = (~(Hfqyx6 & U9p7z6[19])); +assign Ag1iy6 = (~(Yk1iy6 & Ngqyx6)); +assign Yk1iy6 = (~(Gl1iy6 & Ol1iy6)); +assign Ol1iy6 = (Wl1iy6 & Em1iy6); +assign Em1iy6 = (Mm1iy6 & Um1iy6); +assign Um1iy6 = (Cn1iy6 & Kn1iy6); +assign Kn1iy6 = (~(H1j7z6[19] & Rqqyx6)); +assign Cn1iy6 = (Sn1iy6 & U2vhy6); +assign Sn1iy6 = (~(A0j7z6[19] & Xrqyx6)); +assign Mm1iy6 = (Ao1iy6 & Io1iy6); +assign Io1iy6 = (~(Nybet6 & Ttqyx6)); +assign Ao1iy6 = (~(Buqyx6 & Lua7x6)); +assign Lua7x6 = (!Mhh7v6); +assign Wl1iy6 = (Qo1iy6 & Yo1iy6); +assign Yo1iy6 = (Gp1iy6 & Op1iy6); +assign Op1iy6 = (~(Bzi7z6[19] & Vsqyx6)); +assign Gp1iy6 = (~(Wui7z6[19] & Lxqyx6)); +assign Qo1iy6 = (Wp1iy6 & Eq1iy6); +assign Eq1iy6 = (~(Dri7z6[19] & Fwqyx6)); +assign Wp1iy6 = (~(Bwi7z6[19] & Hzqyx6)); +assign Gl1iy6 = (Mq1iy6 & Uq1iy6); +assign Uq1iy6 = (Cr1iy6 & Kr1iy6); +assign Kr1iy6 = (Sr1iy6 & As1iy6); +assign As1iy6 = (~(Svkhy6 & Pnb7z6[19])); +assign Sr1iy6 = (~(Pzqyx6 & G5j7z6[51])); +assign Cr1iy6 = (Is1iy6 & Qs1iy6); +assign Qs1iy6 = (~(Jyqyx6 & G5j7z6[19])); +assign Is1iy6 = (~(B2ryx6 & M6j7z6[51])); +assign Mq1iy6 = (Ys1iy6 & Gt1iy6); +assign Gt1iy6 = (Ot1iy6 & Wt1iy6); +assign Wt1iy6 = (~(J2ryx6 & M6j7z6[19])); +assign Ot1iy6 = (~(D1ryx6 & Ohj7z6[51])); +assign Ys1iy6 = (Eu1iy6 & Mu1iy6); +assign Mu1iy6 = (~(X3ryx6 & Ohj7z6[19])); +assign Eu1iy6 = (~(STCALIB[19] & F4ryx6)); +assign A41iy6 = (Uu1iy6 & Cv1iy6); +assign Cv1iy6 = (Kv1iy6 & Sv1iy6); +assign Sv1iy6 = (~(Yr1nz6[3] & Xjtyx6)); +assign Kv1iy6 = (Aw1iy6 & Iw1iy6); +assign Iw1iy6 = (~(Klo7z6[2] & Qw1iy6)); +assign Qw1iy6 = (~(Yw1iy6 & Gx1iy6)); +assign Gx1iy6 = (Ox1iy6 & Wx1iy6); +assign Wx1iy6 = (Ey1iy6 & My1iy6); +assign My1iy6 = (~(Hqset6 & S4kiw6)); +assign Ey1iy6 = (Uy1iy6 & Cz1iy6); +assign Cz1iy6 = (~(Nqo7z6[17] & M8kiw6)); +assign Uy1iy6 = (~(Fpo7z6[17] & H9kiw6)); +assign Ox1iy6 = (Kz1iy6 & Sz1iy6); +assign Sz1iy6 = (~(Ouo7z6[17] & K7kiw6)); +assign Kz1iy6 = (~(Hxo7z6[17] & W6kiw6)); +assign Yw1iy6 = (A02iy6 & I02iy6); +assign I02iy6 = (Q02iy6 & Y02iy6); +assign Y02iy6 = (~(Vro7z6[17] & Y7kiw6)); +assign Q02iy6 = (~(T2p7z6[19] & U5kiw6)); +assign A02iy6 = (G12iy6 & O12iy6); +assign O12iy6 = (~(W3p7z6[19] & G5kiw6)); +assign G12iy6 = (~(A0p7z6[17] & I6kiw6)); +assign Aw1iy6 = (~(Mm1nz6[3] & Pjtyx6)); +assign Uu1iy6 = (W12iy6 & E22iy6); +assign E22iy6 = (~(Mqb7z6[3] & Lltyx6)); +assign W12iy6 = (~(Ies7z6[19] & Tltyx6)); +assign K31iy6 = (~(Zmoyx6 & Anf7x6)); +assign Anf7x6 = (~(M22iy6 & U22iy6)); +assign U22iy6 = (~(Aszhy6 & O9a7z6)); +assign O9a7z6 = (~(C32iy6 & K32iy6)); +assign K32iy6 = (~(HRDATAD[19] & Qln7z6[0])); +assign C32iy6 = (~(HRDATAS[19] & Qln7z6[1])); +assign M22iy6 = (~(Tim7z6[19] & Yszhy6)); +assign U21iy6 = (S32iy6 & A42iy6); +assign A42iy6 = (~(HRDATAS[19] & Ad47x6)); +assign S32iy6 = (~(HRDATAD[19] & Mc47x6)); +assign E21iy6 = (~(Lpryx6 & Seq7x6)); +assign Glo7v6 = (~(I42iy6 & Q42iy6)); +assign Q42iy6 = (~(Jexmz6[20] & K94iw6)); +assign I42iy6 = (Y42iy6 & G52iy6); +assign G52iy6 = (~(Lloyx6 & Ax57x6)); +assign Ax57x6 = (~(O52iy6 & W52iy6)); +assign W52iy6 = (E62iy6 & M62iy6); +assign M62iy6 = (Bqoyx6 | Gqf7x6); +assign Gqf7x6 = (U62iy6 & C72iy6); +assign C72iy6 = (K72iy6 & S72iy6); +assign S72iy6 = (A82iy6 & I82iy6); +assign I82iy6 = (~(Klo7z6[1] & Q82iy6)); +assign Q82iy6 = (~(Y82iy6 & G92iy6)); +assign G92iy6 = (O92iy6 & W92iy6); +assign W92iy6 = (Ea2iy6 & Ravyx6); +assign Ea2iy6 = (~(T9tyx6 & Eq77z6)); +assign O92iy6 = (Ma2iy6 & Ua2iy6); +assign Ua2iy6 = (~(Xkq7z6[20] & B6qyx6)); +assign Ma2iy6 = (~(Bqp7z6[20] & D5qyx6)); +assign Y82iy6 = (Cb2iy6 & Kb2iy6); +assign Kb2iy6 = (Sb2iy6 & Ac2iy6); +assign Ac2iy6 = (~(E6p7z6[20] & L9qyx6)); +assign Sb2iy6 = (~(B2q7z6[20] & Fcqyx6)); +assign Cb2iy6 = (Ic2iy6 & Qc2iy6); +assign Qc2iy6 = (~(Mkp7z6[20] & Tdqyx6)); +assign Ic2iy6 = (~(Hfqyx6 & U9p7z6[20])); +assign A82iy6 = (Yc2iy6 & Gd2iy6); +assign Yc2iy6 = (~(Rmzyx6 & Od2iy6)); +assign Od2iy6 = (~(Wd2iy6 & Ee2iy6)); +assign Ee2iy6 = (Me2iy6 & Ue2iy6); +assign Ue2iy6 = (Cf2iy6 & Kf2iy6); +assign Kf2iy6 = (~(Hyj7z6[3] & Wlciw6)); +assign Cf2iy6 = (~(Hyj7z6[2] & Plciw6)); +assign Me2iy6 = (Sf2iy6 & Ag2iy6); +assign Ag2iy6 = (~(Hyj7z6[1] & Ilciw6)); +assign Sf2iy6 = (~(Hyj7z6[5] & Dmciw6)); +assign Wd2iy6 = (Ig2iy6 & Qg2iy6); +assign Qg2iy6 = (Yg2iy6 & Gh2iy6); +assign Gh2iy6 = (~(Hyj7z6[6] & Kmciw6)); +assign Yg2iy6 = (~(Hyj7z6[7] & Rmciw6)); +assign Ig2iy6 = (Oh2iy6 & Wh2iy6); +assign Wh2iy6 = (~(Hyj7z6[0] & Dfk7z6[20])); +assign Oh2iy6 = (~(Hyj7z6[4] & Jkl7z6[20])); +assign K72iy6 = (Ei2iy6 & Mi2iy6); +assign Mi2iy6 = (~(Klo7z6[2] & Ui2iy6)); +assign Ui2iy6 = (~(Cj2iy6 & Kj2iy6)); +assign Kj2iy6 = (Sj2iy6 & Ak2iy6); +assign Ak2iy6 = (Ik2iy6 & Qk2iy6); +assign Qk2iy6 = (~(Goset6 & S4kiw6)); +assign Ik2iy6 = (Yk2iy6 & Gl2iy6); +assign Gl2iy6 = (~(Nqo7z6[18] & M8kiw6)); +assign Yk2iy6 = (~(Fpo7z6[18] & H9kiw6)); +assign Sj2iy6 = (Ol2iy6 & Wl2iy6); +assign Wl2iy6 = (~(Ouo7z6[18] & K7kiw6)); +assign Ol2iy6 = (~(Hxo7z6[18] & W6kiw6)); +assign Cj2iy6 = (Em2iy6 & Mm2iy6); +assign Mm2iy6 = (Um2iy6 & Cn2iy6); +assign Cn2iy6 = (~(Vro7z6[18] & Y7kiw6)); +assign Um2iy6 = (~(T2p7z6[20] & U5kiw6)); +assign Em2iy6 = (Kn2iy6 & Sn2iy6); +assign Sn2iy6 = (~(W3p7z6[20] & G5kiw6)); +assign Kn2iy6 = (~(A0p7z6[18] & I6kiw6)); +assign Ei2iy6 = (Ao2iy6 & Io2iy6); +assign Io2iy6 = (~(Xbzyx6 & Qo2iy6)); +assign Qo2iy6 = (~(Yo2iy6 & Gp2iy6)); +assign Gp2iy6 = (Op2iy6 & Wp2iy6); +assign Wp2iy6 = (Eq2iy6 & Mq2iy6); +assign Mq2iy6 = (~(Hyj7z6[0] & Rbk7z6[18])); +assign Eq2iy6 = (~(Hyj7z6[1] & Zlk7z6[18])); +assign Op2iy6 = (Uq2iy6 & Cr2iy6); +assign Cr2iy6 = (~(Hyj7z6[2] & Hwk7z6[18])); +assign Uq2iy6 = (~(Hyj7z6[3] & P6l7z6[18])); +assign Yo2iy6 = (Kr2iy6 & Sr2iy6); +assign Sr2iy6 = (As2iy6 & Is2iy6); +assign Is2iy6 = (~(Hyj7z6[4] & Xgl7z6[18])); +assign As2iy6 = (~(Hyj7z6[5] & Frl7z6[18])); +assign Kr2iy6 = (Qs2iy6 & Ys2iy6); +assign Ys2iy6 = (~(Hyj7z6[6] & N1m7z6[18])); +assign Qs2iy6 = (~(Hyj7z6[7] & Vbm7z6[18])); +assign Ao2iy6 = (~(Gt2iy6 & Ngqyx6)); +assign Gt2iy6 = (~(Ot2iy6 & Wt2iy6)); +assign Wt2iy6 = (Eu2iy6 & Mu2iy6); +assign Mu2iy6 = (Uu2iy6 & Cv2iy6); +assign Cv2iy6 = (Kv2iy6 & Sv2iy6); +assign Sv2iy6 = (~(Dpwyx6 & Fs0zx6)); +assign Dpwyx6 = (Jmqyx6 & Tpyyx6); +assign Kv2iy6 = (Aw2iy6 & Ykthy6); +assign Aw2iy6 = (~(Iw2iy6 & Qw2iy6)); +assign Iw2iy6 = (Voqyx6 & D2k7x6); +assign Uu2iy6 = (Yw2iy6 & Gx2iy6); +assign Gx2iy6 = (~(A0j7z6[20] & Xrqyx6)); +assign Yw2iy6 = (~(H1j7z6[20] & Rqqyx6)); +assign Eu2iy6 = (Ox2iy6 & Wx2iy6); +assign Wx2iy6 = (Ey2iy6 & My2iy6); +assign My2iy6 = (~(Wui7z6[20] & Lxqyx6)); +assign Ey2iy6 = (~(Dri7z6[20] & Fwqyx6)); +assign Ox2iy6 = (Uy2iy6 & Cz2iy6); +assign Cz2iy6 = (~(Bwi7z6[20] & Hzqyx6)); +assign Uy2iy6 = (~(Svkhy6 & Pnb7z6[20])); +assign Ot2iy6 = (Kz2iy6 & Sz2iy6); +assign Sz2iy6 = (A03iy6 & I03iy6); +assign I03iy6 = (Q03iy6 & Y03iy6); +assign Y03iy6 = (~(Pzqyx6 & G5j7z6[52])); +assign Q03iy6 = (~(Jyqyx6 & G5j7z6[20])); +assign A03iy6 = (G13iy6 & O13iy6); +assign O13iy6 = (~(B2ryx6 & M6j7z6[52])); +assign G13iy6 = (~(J2ryx6 & M6j7z6[20])); +assign Kz2iy6 = (W13iy6 & E23iy6); +assign E23iy6 = (M23iy6 & U23iy6); +assign U23iy6 = (~(D1ryx6 & Ohj7z6[52])); +assign M23iy6 = (~(X3ryx6 & Ohj7z6[20])); +assign W13iy6 = (Whshy6 & C33iy6); +assign C33iy6 = (~(STCALIB[20] & F4ryx6)); +assign Whshy6 = (Bqyyx6 & K33iy6); +assign U62iy6 = (S33iy6 & A43iy6); +assign A43iy6 = (I43iy6 & Q43iy6); +assign Q43iy6 = (~(Mqb7z6[4] & Lltyx6)); +assign I43iy6 = (Y43iy6 & G53iy6); +assign G53iy6 = (~(Mm1nz6[4] & Pjtyx6)); +assign Y43iy6 = (~(Yr1nz6[4] & Xjtyx6)); +assign S33iy6 = (O53iy6 & W53iy6); +assign W53iy6 = (~(Ies7z6[20] & Tltyx6)); +assign E62iy6 = (~(Zmoyx6 & Nqf7x6)); +assign Nqf7x6 = (~(E63iy6 & M63iy6)); +assign M63iy6 = (~(Cco7v6 & Aszhy6)); +assign E63iy6 = (~(Tim7z6[20] & Yszhy6)); +assign O52iy6 = (U63iy6 & C73iy6); +assign C73iy6 = (~(HRDATAS[20] & Ad47x6)); +assign U63iy6 = (~(HRDATAD[20] & Mc47x6)); +assign Y42iy6 = (~(Lpryx6 & Ckq7x6)); +assign Zko7v6 = (~(K73iy6 & S73iy6)); +assign S73iy6 = (~(Jexmz6[21] & K94iw6)); +assign K73iy6 = (A83iy6 & I83iy6); +assign I83iy6 = (~(Lloyx6 & Xr57x6)); +assign Xr57x6 = (~(Q83iy6 & Y83iy6)); +assign Y83iy6 = (G93iy6 & O93iy6); +assign O93iy6 = (Bqoyx6 | Ttf7x6); +assign Ttf7x6 = (W93iy6 & Ea3iy6); +assign Ea3iy6 = (Ma3iy6 & Ua3iy6); +assign Ua3iy6 = (Cb3iy6 & Kb3iy6); +assign Kb3iy6 = (~(Xbzyx6 & Sb3iy6)); +assign Sb3iy6 = (~(Ac3iy6 & Ic3iy6)); +assign Ic3iy6 = (Qc3iy6 & Yc3iy6); +assign Yc3iy6 = (Gd3iy6 & Od3iy6); +assign Od3iy6 = (~(Hyj7z6[0] & Rbk7z6[19])); +assign Gd3iy6 = (~(Hyj7z6[1] & Zlk7z6[19])); +assign Qc3iy6 = (Wd3iy6 & Ee3iy6); +assign Ee3iy6 = (~(Hyj7z6[2] & Hwk7z6[19])); +assign Wd3iy6 = (~(Hyj7z6[3] & P6l7z6[19])); +assign Ac3iy6 = (Me3iy6 & Ue3iy6); +assign Ue3iy6 = (Cf3iy6 & Kf3iy6); +assign Kf3iy6 = (~(Hyj7z6[4] & Xgl7z6[19])); +assign Cf3iy6 = (~(Hyj7z6[5] & Frl7z6[19])); +assign Me3iy6 = (Sf3iy6 & Ag3iy6); +assign Ag3iy6 = (~(Hyj7z6[6] & N1m7z6[19])); +assign Sf3iy6 = (~(Hyj7z6[7] & Vbm7z6[19])); +assign Cb3iy6 = (Ig3iy6 & Qg3iy6); +assign Ig3iy6 = (~(Yg3iy6 & Feymz6[3])); +assign Ma3iy6 = (Gh3iy6 & Oh3iy6); +assign Oh3iy6 = (~(Wh3iy6 & Ngqyx6)); +assign Wh3iy6 = (~(Ei3iy6 & Mi3iy6)); +assign Mi3iy6 = (Ui3iy6 & Cj3iy6); +assign Cj3iy6 = (Kj3iy6 & Sj3iy6); +assign Sj3iy6 = (Ak3iy6 & Ik3iy6); +assign Ik3iy6 = (Qk3iy6 & Yk3iy6); +assign Yk3iy6 = (~(V40zx6 & Tcj7z6[0])); +assign Qk3iy6 = (U2vhy6 & Dhsyx6); +assign Ak3iy6 = (Gl3iy6 & Ol3iy6); +assign Ol3iy6 = (~(A0j7z6[21] & Xrqyx6)); +assign Gl3iy6 = (~(H1j7z6[21] & Rqqyx6)); +assign Kj3iy6 = (Wl3iy6 & Em3iy6); +assign Em3iy6 = (Mm3iy6 & Um3iy6); +assign Um3iy6 = (~(Wui7z6[21] & Lxqyx6)); +assign Mm3iy6 = (~(Dri7z6[21] & Fwqyx6)); +assign Wl3iy6 = (Cn3iy6 & Kn3iy6); +assign Kn3iy6 = (~(Bwi7z6[21] & Hzqyx6)); +assign Cn3iy6 = (~(Ba0zx6 & Z8j7z6[0])); +assign Ui3iy6 = (Sn3iy6 & Ao3iy6); +assign Ao3iy6 = (Io3iy6 & Qo3iy6); +assign Qo3iy6 = (Yo3iy6 & Gp3iy6); +assign Gp3iy6 = (~(Svkhy6 & Pnb7z6[21])); +assign Yo3iy6 = (~(D90zx6 & Lgj7z6[186])); +assign Io3iy6 = (Op3iy6 & Wp3iy6); +assign Wp3iy6 = (~(Za0zx6 & Lgj7z6[174])); +assign Op3iy6 = (~(Hb0zx6 & Lgj7z6[162])); +assign Sn3iy6 = (Eq3iy6 & Mq3iy6); +assign Mq3iy6 = (Uq3iy6 & Cr3iy6); +assign Cr3iy6 = (~(Vc0zx6 & Lgj7z6[150])); +assign Uq3iy6 = (~(Dd0zx6 & Lgj7z6[138])); +assign Eq3iy6 = (Kr3iy6 & Sr3iy6); +assign Sr3iy6 = (~(Be0zx6 & Lgj7z6[126])); +assign Kr3iy6 = (~(Je0zx6 & Lgj7z6[114])); +assign Ei3iy6 = (As3iy6 & Is3iy6); +assign Is3iy6 = (Qs3iy6 & Ys3iy6); +assign Ys3iy6 = (Gt3iy6 & Ot3iy6); +assign Ot3iy6 = (Wt3iy6 & Eu3iy6); +assign Eu3iy6 = (~(Bi0zx6 & Lgj7z6[102])); +assign Wt3iy6 = (~(Ji0zx6 & Lgj7z6[90])); +assign Gt3iy6 = (Mu3iy6 & Uu3iy6); +assign Uu3iy6 = (~(Dh0zx6 & Lgj7z6[78])); +assign Mu3iy6 = (~(Hj0zx6 & Lgj7z6[66])); +assign Qs3iy6 = (Cv3iy6 & Kv3iy6); +assign Kv3iy6 = (Sv3iy6 & Aw3iy6); +assign Aw3iy6 = (~(Pj0zx6 & Lgj7z6[54])); +assign Sv3iy6 = (~(Dl0zx6 & Lgj7z6[42])); +assign Cv3iy6 = (Iw3iy6 & Qw3iy6); +assign Qw3iy6 = (~(Ll0zx6 & Lgj7z6[30])); +assign Iw3iy6 = (~(Jm0zx6 & Lgj7z6[18])); +assign As3iy6 = (Yw3iy6 & Gx3iy6); +assign Gx3iy6 = (Ox3iy6 & Wx3iy6); +assign Wx3iy6 = (Ey3iy6 & My3iy6); +assign My3iy6 = (~(Rm0zx6 & Lgj7z6[6])); +assign Ey3iy6 = (~(Pzqyx6 & G5j7z6[53])); +assign Ox3iy6 = (Uy3iy6 & Cz3iy6); +assign Cz3iy6 = (~(Jyqyx6 & G5j7z6[21])); +assign Uy3iy6 = (~(B2ryx6 & M6j7z6[53])); +assign Yw3iy6 = (Kz3iy6 & Sz3iy6); +assign Sz3iy6 = (A04iy6 & I04iy6); +assign I04iy6 = (~(J2ryx6 & M6j7z6[21])); +assign A04iy6 = (~(D1ryx6 & Ohj7z6[53])); +assign Kz3iy6 = (Q04iy6 & Y04iy6); +assign Y04iy6 = (~(X3ryx6 & Ohj7z6[21])); +assign Q04iy6 = (~(STCALIB[21] & F4ryx6)); +assign Gh3iy6 = (G14iy6 & O14iy6); +assign O14iy6 = (~(Rmzyx6 & W14iy6)); +assign W14iy6 = (~(E24iy6 & M24iy6)); +assign M24iy6 = (U24iy6 & C34iy6); +assign C34iy6 = (K34iy6 & S34iy6); +assign S34iy6 = (~(Hyj7z6[3] & Tnciw6)); +assign K34iy6 = (~(Hyj7z6[2] & Mnciw6)); +assign U24iy6 = (A44iy6 & I44iy6); +assign I44iy6 = (~(Hyj7z6[1] & Fnciw6)); +assign A44iy6 = (~(Hyj7z6[5] & Aociw6)); +assign E24iy6 = (Q44iy6 & Y44iy6); +assign Y44iy6 = (G54iy6 & O54iy6); +assign O54iy6 = (~(Hyj7z6[6] & Oociw6)); +assign G54iy6 = (~(Hyj7z6[7] & Cpciw6)); +assign Q44iy6 = (W54iy6 & E64iy6); +assign E64iy6 = (~(Hyj7z6[0] & Dfk7z6[21])); +assign W54iy6 = (~(Hyj7z6[4] & Jkl7z6[21])); +assign G14iy6 = (~(Klo7z6[2] & M64iy6)); +assign M64iy6 = (~(U64iy6 & C74iy6)); +assign C74iy6 = (K74iy6 & S74iy6); +assign S74iy6 = (A84iy6 & I84iy6); +assign I84iy6 = (~(Fmset6 & S4kiw6)); +assign A84iy6 = (Q84iy6 & Y84iy6); +assign Y84iy6 = (~(Nqo7z6[19] & M8kiw6)); +assign Q84iy6 = (~(Fpo7z6[19] & H9kiw6)); +assign K74iy6 = (G94iy6 & O94iy6); +assign O94iy6 = (~(Ouo7z6[19] & K7kiw6)); +assign G94iy6 = (~(Hxo7z6[19] & W6kiw6)); +assign U64iy6 = (W94iy6 & Ea4iy6); +assign Ea4iy6 = (Ma4iy6 & Ua4iy6); +assign Ua4iy6 = (~(Vro7z6[19] & Y7kiw6)); +assign Ma4iy6 = (~(T2p7z6[21] & U5kiw6)); +assign W94iy6 = (Cb4iy6 & Kb4iy6); +assign Kb4iy6 = (~(W3p7z6[21] & G5kiw6)); +assign Cb4iy6 = (~(A0p7z6[19] & I6kiw6)); +assign W93iy6 = (Sb4iy6 & Ac4iy6); +assign Ac4iy6 = (Ic4iy6 & Qc4iy6); +assign Qc4iy6 = (~(Yr1nz6[5] & Xjtyx6)); +assign Ic4iy6 = (Yc4iy6 & Gd4iy6); +assign Gd4iy6 = (~(Klo7z6[1] & Od4iy6)); +assign Od4iy6 = (~(Wd4iy6 & Ee4iy6)); +assign Ee4iy6 = (Me4iy6 & Ue4iy6); +assign Ue4iy6 = (Cf4iy6 & Ravyx6); +assign Cf4iy6 = (~(T9tyx6 & Wp77z6)); +assign Me4iy6 = (Kf4iy6 & Sf4iy6); +assign Sf4iy6 = (~(Xkq7z6[21] & B6qyx6)); +assign Kf4iy6 = (~(Bqp7z6[21] & D5qyx6)); +assign Wd4iy6 = (Ag4iy6 & Ig4iy6); +assign Ig4iy6 = (Qg4iy6 & Yg4iy6); +assign Yg4iy6 = (~(E6p7z6[21] & L9qyx6)); +assign Qg4iy6 = (~(B2q7z6[21] & Fcqyx6)); +assign Ag4iy6 = (Gh4iy6 & Oh4iy6); +assign Oh4iy6 = (~(Mkp7z6[21] & Tdqyx6)); +assign Gh4iy6 = (~(Hfqyx6 & U9p7z6[21])); +assign Yc4iy6 = (~(Mm1nz6[5] & Pjtyx6)); +assign Sb4iy6 = (Wh4iy6 & Ei4iy6); +assign Ei4iy6 = (~(Mqb7z6[5] & Lltyx6)); +assign Wh4iy6 = (~(Ies7z6[21] & Tltyx6)); +assign G93iy6 = (~(Zmoyx6 & Auf7x6)); +assign Auf7x6 = (~(Mi4iy6 & Ui4iy6)); +assign Ui4iy6 = (~(Aszhy6 & G9a7z6)); +assign G9a7z6 = (~(Cj4iy6 & Kj4iy6)); +assign Kj4iy6 = (~(HRDATAD[21] & Qln7z6[0])); +assign Cj4iy6 = (~(HRDATAS[21] & Qln7z6[1])); +assign Mi4iy6 = (~(Tim7z6[21] & Yszhy6)); +assign Q83iy6 = (Sj4iy6 & Ak4iy6); +assign Ak4iy6 = (~(HRDATAS[21] & Ad47x6)); +assign Sj4iy6 = (~(HRDATAD[21] & Mc47x6)); +assign A83iy6 = (~(Lpryx6 & Mpq7x6)); +assign Sko7v6 = (~(Ik4iy6 & Qk4iy6)); +assign Qk4iy6 = (~(Jexmz6[22] & K94iw6)); +assign Ik4iy6 = (Yk4iy6 & Gl4iy6); +assign Gl4iy6 = (~(Lloyx6 & Um57x6)); +assign Um57x6 = (~(Ol4iy6 & Wl4iy6)); +assign Wl4iy6 = (Em4iy6 & Mm4iy6); +assign Mm4iy6 = (Bqoyx6 | Gxf7x6); +assign Gxf7x6 = (Um4iy6 & Cn4iy6); +assign Cn4iy6 = (Kn4iy6 & Sn4iy6); +assign Sn4iy6 = (Ao4iy6 & Io4iy6); +assign Io4iy6 = (~(Qo4iy6 & U2jhy6)); +assign Qo4iy6 = (Yo4iy6 & K3jhy6); +assign Yo4iy6 = (~(Gp4iy6 & Op4iy6)); +assign Op4iy6 = (Wp4iy6 & Eq4iy6); +assign Eq4iy6 = (Mq4iy6 & Uq4iy6); +assign Uq4iy6 = (~(Hyj7z6[3] & Xpciw6)); +assign Mq4iy6 = (~(Hyj7z6[2] & Qpciw6)); +assign Wp4iy6 = (Cr4iy6 & Kr4iy6); +assign Kr4iy6 = (~(Hyj7z6[1] & Jpciw6)); +assign Cr4iy6 = (~(Hyj7z6[5] & Eqciw6)); +assign Gp4iy6 = (Sr4iy6 & As4iy6); +assign As4iy6 = (Is4iy6 & Qs4iy6); +assign Qs4iy6 = (~(Hyj7z6[6] & Lqciw6)); +assign Is4iy6 = (~(Hyj7z6[7] & Sqciw6)); +assign Sr4iy6 = (Ys4iy6 & Gt4iy6); +assign Gt4iy6 = (~(Hyj7z6[0] & Dfk7z6[22])); +assign Ys4iy6 = (~(Hyj7z6[4] & Jkl7z6[22])); +assign Ao4iy6 = (Gd2iy6 & Qg3iy6); +assign Kn4iy6 = (Ot4iy6 & Wt4iy6); +assign Wt4iy6 = (~(Eu4iy6 & Ngqyx6)); +assign Eu4iy6 = (~(Mu4iy6 & Uu4iy6)); +assign Uu4iy6 = (Cv4iy6 & Kv4iy6); +assign Kv4iy6 = (Sv4iy6 & Aw4iy6); +assign Aw4iy6 = (Iw4iy6 & Qw4iy6); +assign Qw4iy6 = (Yw4iy6 & Gx4iy6); +assign Gx4iy6 = (~(Dxqyx6 & Ox4iy6)); +assign Ox4iy6 = (~(Wx4iy6 & Ey4iy6)); +assign Ey4iy6 = (My4iy6 & Uy4iy6); +assign Uy4iy6 = (Cz4iy6 & Kz4iy6); +assign Kz4iy6 = (Sz4iy6 & A05iy6); +assign A05iy6 = (I05iy6 & Q05iy6); +assign Q05iy6 = (E4eov6 & X3eov6); +assign X3eov6 = (!M6j7z6[9]); +assign E4eov6 = (!M6j7z6[8]); +assign I05iy6 = (Zpeov6 & Ageov6); +assign Ageov6 = (!M6j7z6[7]); +assign Zpeov6 = (!M6j7z6[6]); +assign Sz4iy6 = (Y05iy6 & G15iy6); +assign G15iy6 = (Rfdov6 & Sweov6); +assign Sweov6 = (!M6j7z6[63]); +assign Rfdov6 = (!M6j7z6[62]); +assign Y05iy6 = (Tgdov6 & Wedov6); +assign Wedov6 = (!M6j7z6[61]); +assign Tgdov6 = (!M6j7z6[60]); +assign Cz4iy6 = (O15iy6 & W15iy6); +assign W15iy6 = (E25iy6 & M25iy6); +assign M25iy6 = (Gkdov6 & Yeeov6); +assign Yeeov6 = (!M6j7z6[5]); +assign Gkdov6 = (!M6j7z6[59]); +assign E25iy6 = (Fndov6 & Nkdov6); +assign Nkdov6 = (!M6j7z6[58]); +assign Fndov6 = (!M6j7z6[57]); +assign O15iy6 = (U25iy6 & C35iy6); +assign C35iy6 = (Ahdov6 & Mndov6); +assign Mndov6 = (!M6j7z6[56]); +assign Ahdov6 = (!M6j7z6[55]); +assign U25iy6 = (Ljdov6 & Ejdov6); +assign Ejdov6 = (!M6j7z6[54]); +assign Ljdov6 = (!M6j7z6[53]); +assign My4iy6 = (K35iy6 & S35iy6); +assign S35iy6 = (A45iy6 & I45iy6); +assign I45iy6 = (Q45iy6 & Y45iy6); +assign Y45iy6 = (A9eov6 & Jidov6); +assign Jidov6 = (!M6j7z6[52]); +assign A9eov6 = (!M6j7z6[51]); +assign Q45iy6 = (Uqeov6 & Lieov6); +assign Lieov6 = (!M6j7z6[50]); +assign Uqeov6 = (!M6j7z6[4]); +assign A45iy6 = (G55iy6 & O55iy6); +assign O55iy6 = (Sieov6 & H9eov6); +assign H9eov6 = (!M6j7z6[49]); +assign Sieov6 = (!M6j7z6[48]); +assign G55iy6 = (Kmdov6 & Aueov6); +assign Aueov6 = (!M6j7z6[47]); +assign Kmdov6 = (!M6j7z6[46]); +assign K35iy6 = (W55iy6 & E65iy6); +assign E65iy6 = (M65iy6 & U65iy6); +assign U65iy6 = (Oodov6 & Hodov6); +assign Hodov6 = (!M6j7z6[45]); +assign Oodov6 = (!M6j7z6[44]); +assign M65iy6 = (Eqdov6 & Xpdov6); +assign Xpdov6 = (!M6j7z6[43]); +assign Eqdov6 = (!M6j7z6[42]); +assign W55iy6 = (C75iy6 & K75iy6); +assign K75iy6 = (Grdov6 & Zqdov6); +assign Zqdov6 = (!M6j7z6[41]); +assign Grdov6 = (!M6j7z6[40]); +assign C75iy6 = (F8eov6 & Vgeov6); +assign Vgeov6 = (!M6j7z6[3]); +assign F8eov6 = (!M6j7z6[39]); +assign Wx4iy6 = (S75iy6 & A85iy6); +assign A85iy6 = (I85iy6 & Q85iy6); +assign Q85iy6 = (Y85iy6 & G95iy6); +assign G95iy6 = (O95iy6 & W95iy6); +assign W95iy6 = (Caeov6 & Njeov6); +assign Njeov6 = (!M6j7z6[38]); +assign Caeov6 = (!M6j7z6[37]); +assign O95iy6 = (Jaeov6 & Ujeov6); +assign Ujeov6 = (!M6j7z6[36]); +assign Jaeov6 = (!M6j7z6[35]); +assign Y85iy6 = (Ea5iy6 & Ma5iy6); +assign Ma5iy6 = (Sbeov6 & Aneov6); +assign Aneov6 = (!M6j7z6[34]); +assign Sbeov6 = (!M6j7z6[33]); +assign Ea5iy6 = (Mudov6 & Hneov6); +assign Hneov6 = (!M6j7z6[32]); +assign Mudov6 = (!M6j7z6[31]); +assign I85iy6 = (Ua5iy6 & Cb5iy6); +assign Cb5iy6 = (Kb5iy6 & Sb5iy6); +assign Sb5iy6 = (Breov6 & Tudov6); +assign Tudov6 = (!M6j7z6[30]); +assign Breov6 = (!M6j7z6[2]); +assign Kb5iy6 = (Ovdov6 & Rtdov6); +assign Rtdov6 = (!M6j7z6[29]); +assign Ovdov6 = (!M6j7z6[28]); +assign Ua5iy6 = (Ac5iy6 & Ic5iy6); +assign Ic5iy6 = (Exdov6 & Vvdov6); +assign Vvdov6 = (!M6j7z6[27]); +assign Exdov6 = (!M6j7z6[26]); +assign Ac5iy6 = (Gydov6 & Lxdov6); +assign Lxdov6 = (!M6j7z6[25]); +assign Gydov6 = (!M6j7z6[24]); +assign S75iy6 = (Qc5iy6 & Yc5iy6); +assign Yc5iy6 = (Gd5iy6 & Od5iy6); +assign Od5iy6 = (Wd5iy6 & Ee5iy6); +assign Ee5iy6 = (Fmeov6 & Zbeov6); +assign Zbeov6 = (!M6j7z6[23]); +assign Fmeov6 = (!M6j7z6[22]); +assign Wd5iy6 = (Coeov6 & Uceov6); +assign Uceov6 = (!M6j7z6[21]); +assign Coeov6 = (!M6j7z6[20]); +assign Gd5iy6 = (Me5iy6 & Ue5iy6); +assign Ue5iy6 = (Bdeov6 & Cheov6); +assign Cheov6 = (!M6j7z6[1]); +assign Bdeov6 = (!M6j7z6[19]); +assign Me5iy6 = (Tfeov6 & Joeov6); +assign Joeov6 = (!M6j7z6[18]); +assign Tfeov6 = (!M6j7z6[17]); +assign Qc5iy6 = (Cf5iy6 & Kf5iy6); +assign Kf5iy6 = (Sf5iy6 & Ag5iy6); +assign Ag5iy6 = (Nydov6 & Speov6); +assign Speov6 = (!M6j7z6[16]); +assign Nydov6 = (!M6j7z6[15]); +assign Sf5iy6 = (M1eov6 & F1eov6); +assign F1eov6 = (!M6j7z6[14]); +assign M1eov6 = (!M6j7z6[13]); +assign Cf5iy6 = (Ig5iy6 & Qg5iy6); +assign Qg5iy6 = (H2eov6 & K0eov6); +assign K0eov6 = (!M6j7z6[12]); +assign H2eov6 = (!M6j7z6[11]); +assign Ig5iy6 = (Tteov6 & O2eov6); +assign O2eov6 = (!M6j7z6[10]); +assign Tteov6 = (!M6j7z6[0]); +assign Yw4iy6 = (~(V40zx6 & Tcj7z6[1])); +assign Iw4iy6 = (Yg5iy6 & Gh5iy6); +assign Gh5iy6 = (~(A0j7z6[22] & Xrqyx6)); +assign Yg5iy6 = (~(H1j7z6[22] & Rqqyx6)); +assign Sv4iy6 = (Oh5iy6 & Wh5iy6); +assign Wh5iy6 = (Ei5iy6 & Mi5iy6); +assign Mi5iy6 = (~(Wui7z6[22] & Lxqyx6)); +assign Ei5iy6 = (~(Dri7z6[22] & Fwqyx6)); +assign Oh5iy6 = (Ui5iy6 & Cj5iy6); +assign Cj5iy6 = (~(Bwi7z6[22] & Hzqyx6)); +assign Ui5iy6 = (~(Ba0zx6 & Z8j7z6[1])); +assign Cv4iy6 = (Kj5iy6 & Sj5iy6); +assign Sj5iy6 = (Ak5iy6 & Ik5iy6); +assign Ik5iy6 = (Qk5iy6 & Yk5iy6); +assign Yk5iy6 = (~(Svkhy6 & Pnb7z6[22])); +assign Qk5iy6 = (~(D90zx6 & Lgj7z6[187])); +assign Ak5iy6 = (Gl5iy6 & Ol5iy6); +assign Ol5iy6 = (~(Za0zx6 & Lgj7z6[175])); +assign Gl5iy6 = (~(Hb0zx6 & Lgj7z6[163])); +assign Kj5iy6 = (Wl5iy6 & Em5iy6); +assign Em5iy6 = (Mm5iy6 & Um5iy6); +assign Um5iy6 = (~(Vc0zx6 & Lgj7z6[151])); +assign Mm5iy6 = (~(Dd0zx6 & Lgj7z6[139])); +assign Wl5iy6 = (Cn5iy6 & Kn5iy6); +assign Kn5iy6 = (~(Be0zx6 & Lgj7z6[127])); +assign Cn5iy6 = (~(Je0zx6 & Lgj7z6[115])); +assign Mu4iy6 = (Sn5iy6 & Ao5iy6); +assign Ao5iy6 = (Io5iy6 & Qo5iy6); +assign Qo5iy6 = (Yo5iy6 & Gp5iy6); +assign Gp5iy6 = (Op5iy6 & Wp5iy6); +assign Wp5iy6 = (~(Bi0zx6 & Lgj7z6[103])); +assign Op5iy6 = (~(Ji0zx6 & Lgj7z6[91])); +assign Yo5iy6 = (Eq5iy6 & Mq5iy6); +assign Mq5iy6 = (~(Dh0zx6 & Lgj7z6[79])); +assign Eq5iy6 = (~(Hj0zx6 & Lgj7z6[67])); +assign Io5iy6 = (Uq5iy6 & Cr5iy6); +assign Cr5iy6 = (Kr5iy6 & Sr5iy6); +assign Sr5iy6 = (~(Pj0zx6 & Lgj7z6[55])); +assign Kr5iy6 = (~(Dl0zx6 & Lgj7z6[43])); +assign Uq5iy6 = (As5iy6 & Is5iy6); +assign Is5iy6 = (~(Ll0zx6 & Lgj7z6[31])); +assign As5iy6 = (~(Jm0zx6 & Lgj7z6[19])); +assign Sn5iy6 = (Qs5iy6 & Ys5iy6); +assign Ys5iy6 = (Gt5iy6 & Ot5iy6); +assign Ot5iy6 = (Wt5iy6 & Eu5iy6); +assign Eu5iy6 = (~(Rm0zx6 & Lgj7z6[7])); +assign Wt5iy6 = (~(Pzqyx6 & G5j7z6[54])); +assign Gt5iy6 = (Mu5iy6 & Uu5iy6); +assign Uu5iy6 = (~(Jyqyx6 & G5j7z6[22])); +assign Mu5iy6 = (~(B2ryx6 & M6j7z6[54])); +assign Qs5iy6 = (Cv5iy6 & Kv5iy6); +assign Kv5iy6 = (Sv5iy6 & Aw5iy6); +assign Aw5iy6 = (~(J2ryx6 & M6j7z6[22])); +assign Sv5iy6 = (~(D1ryx6 & Ohj7z6[54])); +assign Cv5iy6 = (Iw5iy6 & Qw5iy6); +assign Qw5iy6 = (~(X3ryx6 & Ohj7z6[22])); +assign Iw5iy6 = (~(STCALIB[22] & F4ryx6)); +assign Ot4iy6 = (~(Klo7z6[2] & Yw5iy6)); +assign Yw5iy6 = (~(Gx5iy6 & Ox5iy6)); +assign Ox5iy6 = (Wx5iy6 & Ey5iy6); +assign Ey5iy6 = (My5iy6 & Uy5iy6); +assign Uy5iy6 = (~(Ekset6 & S4kiw6)); +assign My5iy6 = (Cz5iy6 & Kz5iy6); +assign Kz5iy6 = (~(Nqo7z6[20] & M8kiw6)); +assign Cz5iy6 = (~(Fpo7z6[20] & H9kiw6)); +assign Wx5iy6 = (Sz5iy6 & A06iy6); +assign A06iy6 = (~(Ouo7z6[20] & K7kiw6)); +assign Sz5iy6 = (~(Hxo7z6[20] & W6kiw6)); +assign Gx5iy6 = (I06iy6 & Q06iy6); +assign Q06iy6 = (Y06iy6 & G16iy6); +assign G16iy6 = (~(Vro7z6[20] & Y7kiw6)); +assign Y06iy6 = (~(T2p7z6[22] & U5kiw6)); +assign I06iy6 = (O16iy6 & W16iy6); +assign W16iy6 = (~(W3p7z6[22] & G5kiw6)); +assign O16iy6 = (~(A0p7z6[20] & I6kiw6)); +assign Um4iy6 = (E26iy6 & M26iy6); +assign M26iy6 = (U26iy6 & C36iy6); +assign C36iy6 = (~(Yr1nz6[6] & Xjtyx6)); +assign U26iy6 = (K36iy6 & S36iy6); +assign S36iy6 = (~(Klo7z6[1] & A46iy6)); +assign A46iy6 = (~(I46iy6 & Q46iy6)); +assign Q46iy6 = (Y46iy6 & G56iy6); +assign G56iy6 = (O56iy6 & Ravyx6); +assign O56iy6 = (~(T9tyx6 & Op77z6)); +assign Y46iy6 = (W56iy6 & E66iy6); +assign E66iy6 = (~(Xkq7z6[22] & B6qyx6)); +assign W56iy6 = (~(Bqp7z6[22] & D5qyx6)); +assign I46iy6 = (M66iy6 & U66iy6); +assign U66iy6 = (C76iy6 & K76iy6); +assign K76iy6 = (~(E6p7z6[22] & L9qyx6)); +assign C76iy6 = (~(B2q7z6[22] & Fcqyx6)); +assign M66iy6 = (S76iy6 & A86iy6); +assign A86iy6 = (~(Mkp7z6[22] & Tdqyx6)); +assign S76iy6 = (~(Hfqyx6 & U9p7z6[22])); +assign K36iy6 = (~(Mm1nz6[6] & Pjtyx6)); +assign E26iy6 = (I86iy6 & Q86iy6); +assign Q86iy6 = (~(Mqb7z6[6] & Lltyx6)); +assign I86iy6 = (~(Ies7z6[22] & Tltyx6)); +assign Em4iy6 = (~(Zmoyx6 & Nxf7x6)); +assign Nxf7x6 = (~(Y86iy6 & G96iy6)); +assign G96iy6 = (~(Aszhy6 & Y8a7z6)); +assign Y8a7z6 = (~(O96iy6 & W96iy6)); +assign W96iy6 = (~(HRDATAD[22] & Qln7z6[0])); +assign O96iy6 = (~(HRDATAS[22] & Qln7z6[1])); +assign Y86iy6 = (~(Tim7z6[22] & Yszhy6)); +assign Ol4iy6 = (Ea6iy6 & Ma6iy6); +assign Ma6iy6 = (~(HRDATAS[22] & Ad47x6)); +assign Ea6iy6 = (~(HRDATAD[22] & Mc47x6)); +assign Yk4iy6 = (~(Lpryx6 & Wuq7x6)); +assign Lko7v6 = (~(Ua6iy6 & Cb6iy6)); +assign Cb6iy6 = (~(Jexmz6[23] & K94iw6)); +assign Ua6iy6 = (Kb6iy6 & Sb6iy6); +assign Sb6iy6 = (~(Lloyx6 & Rh57x6)); +assign Rh57x6 = (~(Ac6iy6 & Ic6iy6)); +assign Ic6iy6 = (Qc6iy6 & Yc6iy6); +assign Yc6iy6 = (Bqoyx6 | T0g7x6); +assign T0g7x6 = (Gd6iy6 & Od6iy6); +assign Od6iy6 = (Wd6iy6 & Ee6iy6); +assign Ee6iy6 = (Me6iy6 & Ue6iy6); +assign Ue6iy6 = (~(Lltyx6 & Tp3yx6)); +assign Tp3yx6 = (~(Cf6iy6 & Kf6iy6)); +assign Kf6iy6 = (~(La6ft6 | I96ft6)); +assign Cf6iy6 = (Pf5ov6 & N0hyx6); +assign N0hyx6 = (!Zygyx6); +assign Zygyx6 = (~(Sf6iy6 & Ag6iy6)); +assign Ag6iy6 = (Ig6iy6 & Tw37v6); +assign Ig6iy6 = (Ly37v6 & D047v6); +assign Sf6iy6 = (~(D1gyx6 | Thfyx6)); +assign Thfyx6 = (!Bv37v6); +assign D1gyx6 = (!Jt37v6); +assign Pf5ov6 = (!X3gyx6); +assign X3gyx6 = (~(Rqhyx6 & Dthyx6)); +assign Dthyx6 = (C55ov6 & Vcgyx6); +assign Vcgyx6 = (!Fbxmz6[3]); +assign C55ov6 = (!Fbxmz6[2]); +assign Rqhyx6 = (Ncgyx6 & M35ov6); +assign M35ov6 = (!Fbxmz6[1]); +assign Ncgyx6 = (!Fbxmz6[0]); +assign Lltyx6 = (Qg6iy6 & Klo7z6[0]); +assign Qg6iy6 = (Zfs7z6[7] & Hfryx6); +assign Me6iy6 = (Yg6iy6 & Gh6iy6); +assign Gh6iy6 = (~(Oh6iy6 & U2jhy6)); +assign Oh6iy6 = (Wh6iy6 & K3jhy6); +assign Wh6iy6 = (~(Ei6iy6 & Mi6iy6)); +assign Mi6iy6 = (Ui6iy6 & Cj6iy6); +assign Cj6iy6 = (Kj6iy6 & Sj6iy6); +assign Sj6iy6 = (~(Hyj7z6[1] & Grciw6)); +assign Kj6iy6 = (~(Hyj7z6[2] & Nrciw6)); +assign Ui6iy6 = (Ak6iy6 & Ik6iy6); +assign Ik6iy6 = (~(Hyj7z6[3] & Urciw6)); +assign Ak6iy6 = (~(Hyj7z6[5] & Bsciw6)); +assign Ei6iy6 = (Qk6iy6 & Yk6iy6); +assign Yk6iy6 = (Gl6iy6 & Ol6iy6); +assign Ol6iy6 = (~(Hyj7z6[6] & Isciw6)); +assign Gl6iy6 = (~(Hyj7z6[7] & Psciw6)); +assign Qk6iy6 = (Wl6iy6 & Em6iy6); +assign Em6iy6 = (~(Hyj7z6[0] & Dfk7z6[23])); +assign Wl6iy6 = (~(Hyj7z6[4] & Jkl7z6[23])); +assign Yg6iy6 = (~(Klo7z6[1] & Mm6iy6)); +assign Mm6iy6 = (~(Um6iy6 & Cn6iy6)); +assign Cn6iy6 = (Kn6iy6 & Sn6iy6); +assign Sn6iy6 = (~(B2q7z6[23] & Fcqyx6)); +assign Kn6iy6 = (Ao6iy6 & Io6iy6); +assign Io6iy6 = (~(Bqp7z6[23] & D5qyx6)); +assign Ao6iy6 = (~(E6p7z6[23] & L9qyx6)); +assign Um6iy6 = (Qo6iy6 & Yo6iy6); +assign Yo6iy6 = (~(Mkp7z6[23] & Tdqyx6)); +assign Qo6iy6 = (~(Hfqyx6 & U9p7z6[23])); +assign Wd6iy6 = (Gp6iy6 & Op6iy6); +assign Op6iy6 = (~(Mm1nz6[7] & Pjtyx6)); +assign Gp6iy6 = (~(Yr1nz6[7] & Xjtyx6)); +assign Gd6iy6 = (Wp6iy6 & Eq6iy6); +assign Eq6iy6 = (Mq6iy6 & Uq6iy6); +assign Uq6iy6 = (~(Cr6iy6 & Gp77z6)); +assign Mq6iy6 = (Kr6iy6 & Sr6iy6); +assign Sr6iy6 = (~(As6iy6 & Ngqyx6)); +assign As6iy6 = (~(Is6iy6 & Qs6iy6)); +assign Qs6iy6 = (Ys6iy6 & Gt6iy6); +assign Gt6iy6 = (Ot6iy6 & Wt6iy6); +assign Wt6iy6 = (Eu6iy6 & Mu6iy6); +assign Mu6iy6 = (Uu6iy6 & Cv6iy6); +assign Cv6iy6 = (~(Kv6iy6 & Dxqyx6)); +assign Kv6iy6 = (Tnzdt6 & F02nv6); +assign Uu6iy6 = (~(V40zx6 & Tcj7z6[2])); +assign V40zx6 = (~(Knohy6 | Zyuyx6)); +assign Eu6iy6 = (Sv6iy6 & Aw6iy6); +assign Aw6iy6 = (~(A0j7z6[23] & Xrqyx6)); +assign Xrqyx6 = (~(Lxuyx6 | Zyuyx6)); +assign Sv6iy6 = (~(H1j7z6[23] & Rqqyx6)); +assign Rqqyx6 = (~(Tlqyx6 | Lxuyx6)); +assign Ot6iy6 = (Iw6iy6 & Qw6iy6); +assign Qw6iy6 = (Yw6iy6 & Gx6iy6); +assign Gx6iy6 = (~(Wui7z6[23] & Lxqyx6)); +assign Yw6iy6 = (~(Dri7z6[23] & Fwqyx6)); +assign Iw6iy6 = (Ox6iy6 & Wx6iy6); +assign Wx6iy6 = (~(Bwi7z6[23] & Hzqyx6)); +assign Ox6iy6 = (~(Ba0zx6 & Z8j7z6[2])); +assign Ys6iy6 = (Ey6iy6 & My6iy6); +assign My6iy6 = (Uy6iy6 & Cz6iy6); +assign Cz6iy6 = (Kz6iy6 & Sz6iy6); +assign Sz6iy6 = (~(Svkhy6 & Pnb7z6[23])); +assign Kz6iy6 = (~(D90zx6 & Lgj7z6[188])); +assign Uy6iy6 = (A07iy6 & I07iy6); +assign I07iy6 = (~(Za0zx6 & Lgj7z6[176])); +assign A07iy6 = (~(Hb0zx6 & Lgj7z6[164])); +assign Ey6iy6 = (Q07iy6 & Y07iy6); +assign Y07iy6 = (G17iy6 & O17iy6); +assign O17iy6 = (~(Vc0zx6 & Lgj7z6[152])); +assign G17iy6 = (~(Dd0zx6 & Lgj7z6[140])); +assign Q07iy6 = (W17iy6 & E27iy6); +assign E27iy6 = (~(Be0zx6 & Lgj7z6[128])); +assign W17iy6 = (~(Je0zx6 & Lgj7z6[116])); +assign Is6iy6 = (M27iy6 & U27iy6); +assign U27iy6 = (C37iy6 & K37iy6); +assign K37iy6 = (S37iy6 & A47iy6); +assign A47iy6 = (I47iy6 & Q47iy6); +assign Q47iy6 = (~(Bi0zx6 & Lgj7z6[104])); +assign I47iy6 = (~(Ji0zx6 & Lgj7z6[92])); +assign S37iy6 = (Y47iy6 & G57iy6); +assign G57iy6 = (~(Dh0zx6 & Lgj7z6[80])); +assign Y47iy6 = (~(Hj0zx6 & Lgj7z6[68])); +assign C37iy6 = (O57iy6 & W57iy6); +assign W57iy6 = (E67iy6 & M67iy6); +assign M67iy6 = (~(Pj0zx6 & Lgj7z6[56])); +assign E67iy6 = (~(Dl0zx6 & Lgj7z6[44])); +assign O57iy6 = (U67iy6 & C77iy6); +assign C77iy6 = (~(Ll0zx6 & Lgj7z6[32])); +assign U67iy6 = (~(Jm0zx6 & Lgj7z6[20])); +assign M27iy6 = (K77iy6 & S77iy6); +assign S77iy6 = (A87iy6 & I87iy6); +assign I87iy6 = (Q87iy6 & Y87iy6); +assign Y87iy6 = (~(Rm0zx6 & Lgj7z6[8])); +assign Q87iy6 = (~(Pzqyx6 & G5j7z6[55])); +assign A87iy6 = (G97iy6 & O97iy6); +assign O97iy6 = (~(Jyqyx6 & G5j7z6[23])); +assign G97iy6 = (~(B2ryx6 & M6j7z6[55])); +assign K77iy6 = (W97iy6 & Ea7iy6); +assign Ea7iy6 = (Ma7iy6 & Ua7iy6); +assign Ua7iy6 = (~(J2ryx6 & M6j7z6[23])); +assign Ma7iy6 = (~(D1ryx6 & Ohj7z6[55])); +assign W97iy6 = (Cb7iy6 & Kb7iy6); +assign Kb7iy6 = (~(X3ryx6 & Ohj7z6[23])); +assign Cb7iy6 = (~(STCALIB[23] & F4ryx6)); +assign Kr6iy6 = (~(Klo7z6[2] & Sb7iy6)); +assign Sb7iy6 = (~(Ac7iy6 & Ic7iy6)); +assign Ic7iy6 = (Qc7iy6 & Yc7iy6); +assign Yc7iy6 = (Gd7iy6 & Od7iy6); +assign Od7iy6 = (~(Diset6 & S4kiw6)); +assign Gd7iy6 = (Wd7iy6 & Ee7iy6); +assign Ee7iy6 = (~(Nqo7z6[21] & M8kiw6)); +assign Wd7iy6 = (~(Fpo7z6[21] & H9kiw6)); +assign Qc7iy6 = (Me7iy6 & Ue7iy6); +assign Ue7iy6 = (~(Ouo7z6[21] & K7kiw6)); +assign Me7iy6 = (~(Hxo7z6[21] & W6kiw6)); +assign Ac7iy6 = (Cf7iy6 & Kf7iy6); +assign Kf7iy6 = (Sf7iy6 & Ag7iy6); +assign Ag7iy6 = (~(Vro7z6[21] & Y7kiw6)); +assign Sf7iy6 = (~(T2p7z6[23] & U5kiw6)); +assign Cf7iy6 = (Ig7iy6 & Qg7iy6); +assign Qg7iy6 = (~(W3p7z6[23] & G5kiw6)); +assign Ig7iy6 = (~(A0p7z6[21] & I6kiw6)); +assign Wp6iy6 = (Yg7iy6 & Gh7iy6); +assign Gh7iy6 = (~(Ies7z6[23] & Tltyx6)); +assign Qc6iy6 = (~(HRDATAS[23] & Ad47x6)); +assign Ac6iy6 = (Oh7iy6 & Wh7iy6); +assign Wh7iy6 = (~(HRDATAD[23] & Mc47x6)); +assign Oh7iy6 = (~(Zmoyx6 & A1g7x6)); +assign A1g7x6 = (~(Ei7iy6 & Mi7iy6)); +assign Mi7iy6 = (~(Aszhy6 & Q8a7z6)); +assign Q8a7z6 = (~(Ui7iy6 & Cj7iy6)); +assign Cj7iy6 = (~(HRDATAD[23] & Qln7z6[0])); +assign Ui7iy6 = (~(HRDATAS[23] & Qln7z6[1])); +assign Ei7iy6 = (~(Tim7z6[23] & Yszhy6)); +assign Kb6iy6 = (~(Lpryx6 & Xzp7x6)); +assign Eko7v6 = (~(Kj7iy6 & Sj7iy6)); +assign Sj7iy6 = (~(Jexmz6[24] & K94iw6)); +assign Kj7iy6 = (Ak7iy6 & Ik7iy6); +assign Ik7iy6 = (~(Lloyx6 & Fd9ov6)); +assign Fd9ov6 = (~(Qk7iy6 & Yk7iy6)); +assign Yk7iy6 = (Gl7iy6 & Ol7iy6); +assign Ol7iy6 = (Bqoyx6 | Ddg7x6); +assign Ddg7x6 = (Wl7iy6 & Em7iy6); +assign Em7iy6 = (Mm7iy6 & Um7iy6); +assign Um7iy6 = (Cn7iy6 & Kn7iy6); +assign Kn7iy6 = (~(Rmzyx6 & Sn7iy6)); +assign Sn7iy6 = (~(Ao7iy6 & Io7iy6)); +assign Io7iy6 = (Qo7iy6 & Yo7iy6); +assign Yo7iy6 = (Gp7iy6 & Op7iy6); +assign Op7iy6 = (~(Hyj7z6[7] & Xwciw6)); +assign Gp7iy6 = (~(Hyj7z6[0] & Dfk7z6[24])); +assign Qo7iy6 = (Wp7iy6 & Eq7iy6); +assign Eq7iy6 = (~(Hyj7z6[1] & Lpk7z6[24])); +assign Wp7iy6 = (~(Hyj7z6[2] & Tzk7z6[24])); +assign Ao7iy6 = (Mq7iy6 & Uq7iy6); +assign Uq7iy6 = (Cr7iy6 & Kr7iy6); +assign Kr7iy6 = (~(Hyj7z6[3] & Bal7z6[24])); +assign Cr7iy6 = (~(Hyj7z6[4] & Jkl7z6[24])); +assign Mq7iy6 = (Sr7iy6 & As7iy6); +assign As7iy6 = (~(Hyj7z6[5] & Rul7z6[24])); +assign Sr7iy6 = (~(Hyj7z6[6] & Z4m7z6[24])); +assign Cn7iy6 = (~(Xbzyx6 & Is7iy6)); +assign Is7iy6 = (~(Qs7iy6 & Ys7iy6)); +assign Ys7iy6 = (Gt7iy6 & Ot7iy6); +assign Ot7iy6 = (Wt7iy6 & Eu7iy6); +assign Eu7iy6 = (~(Hyj7z6[0] & Rbk7z6[20])); +assign Wt7iy6 = (~(Hyj7z6[1] & Zlk7z6[20])); +assign Gt7iy6 = (Mu7iy6 & Uu7iy6); +assign Uu7iy6 = (~(Hyj7z6[2] & Hwk7z6[20])); +assign Mu7iy6 = (~(Hyj7z6[3] & P6l7z6[20])); +assign Qs7iy6 = (Cv7iy6 & Kv7iy6); +assign Kv7iy6 = (Sv7iy6 & Aw7iy6); +assign Aw7iy6 = (~(Hyj7z6[4] & Xgl7z6[20])); +assign Sv7iy6 = (~(Hyj7z6[5] & Frl7z6[20])); +assign Cv7iy6 = (Iw7iy6 & Qw7iy6); +assign Qw7iy6 = (~(Hyj7z6[6] & N1m7z6[20])); +assign Iw7iy6 = (~(Hyj7z6[7] & Vbm7z6[20])); +assign Mm7iy6 = (Yw7iy6 & Gx7iy6); +assign Gx7iy6 = (~(Ox7iy6 & Ngqyx6)); +assign Ox7iy6 = (~(Wx7iy6 & Ey7iy6)); +assign Ey7iy6 = (My7iy6 & Uy7iy6); +assign Uy7iy6 = (Cz7iy6 & Kz7iy6); +assign Kz7iy6 = (Sz7iy6 & Bqyyx6); +assign Bqyyx6 = (~(A8yhy6 & A08iy6)); +assign A08iy6 = (~(Hzuyx6 & I08iy6)); +assign Sz7iy6 = (~(Q08iy6 & Fs0zx6)); +assign Fs0zx6 = (Y08iy6 & G18iy6); +assign G18iy6 = (E32nv6 & D2k7x6); +assign Q08iy6 = (Koaiw6 & Jmqyx6); +assign Cz7iy6 = (O18iy6 & W18iy6); +assign W18iy6 = (~(Ttqyx6 & HTMDHBURST[0])); +assign Ttqyx6 = (~(E28iy6 | I08iy6)); +assign O18iy6 = (~(Dheet6 & Buqyx6)); +assign My7iy6 = (M28iy6 & U28iy6); +assign U28iy6 = (C38iy6 & K38iy6); +assign K38iy6 = (~(Bzi7z6[24] & Vsqyx6)); +assign C38iy6 = (~(Wui7z6[24] & Lxqyx6)); +assign M28iy6 = (S38iy6 & A48iy6); +assign A48iy6 = (~(Dri7z6[24] & Fwqyx6)); +assign S38iy6 = (~(Bwi7z6[24] & Hzqyx6)); +assign Wx7iy6 = (I48iy6 & Q48iy6); +assign Q48iy6 = (Y48iy6 & G58iy6); +assign G58iy6 = (O58iy6 & W58iy6); +assign W58iy6 = (~(Svkhy6 & Pnb7z6[24])); +assign O58iy6 = (~(Pzqyx6 & G5j7z6[56])); +assign Y48iy6 = (E68iy6 & M68iy6); +assign M68iy6 = (~(Jyqyx6 & G5j7z6[24])); +assign E68iy6 = (~(B2ryx6 & M6j7z6[56])); +assign I48iy6 = (U68iy6 & C78iy6); +assign C78iy6 = (K78iy6 & S78iy6); +assign S78iy6 = (~(J2ryx6 & M6j7z6[24])); +assign K78iy6 = (~(D1ryx6 & Ohj7z6[56])); +assign U68iy6 = (Pr0zx6 & A88iy6); +assign A88iy6 = (~(X3ryx6 & Ohj7z6[24])); +assign Pr0zx6 = (Z2ryx6 & Dhsyx6); +assign Dhsyx6 = (~(I88iy6 & Koaiw6)); +assign I88iy6 = (Voqyx6 & Q88iy6); +assign Z2ryx6 = (U2vhy6 & Ykthy6); +assign Yw7iy6 = (~(Klo7z6[1] & Y88iy6)); +assign Y88iy6 = (~(G98iy6 & O98iy6)); +assign O98iy6 = (W98iy6 & Ea8iy6); +assign Ea8iy6 = (Ma8iy6 & Ua8iy6); +assign Ua8iy6 = (~(Bqp7z6[24] & D5qyx6)); +assign Ma8iy6 = (Cb8iy6 & Ravyx6); +assign Cb8iy6 = (~(T9tyx6 & Yo77z6)); +assign W98iy6 = (Kb8iy6 & Sb8iy6); +assign Sb8iy6 = (~(E6p7z6[24] & L9qyx6)); +assign Kb8iy6 = (Ac8iy6 & Ic8iy6); +assign Ic8iy6 = (~(Fk2ft6 & P3a8x6)); +assign Ac8iy6 = (~(Gg2ft6 & Ua9ov6)); +assign G98iy6 = (Qc8iy6 & Yc8iy6); +assign Yc8iy6 = (Gd8iy6 & Od8iy6); +assign Od8iy6 = (~(Eo2ft6 & Q0a8x6)); +assign Gd8iy6 = (Wd8iy6 & Ee8iy6); +assign Ee8iy6 = (~(B2q7z6[24] & Fcqyx6)); +assign Wd8iy6 = (~(W94ft6 & Nao7x6)); +assign Qc8iy6 = (Me8iy6 & Ue8iy6); +assign Ue8iy6 = (~(Mkp7z6[24] & Tdqyx6)); +assign Me8iy6 = (~(Hfqyx6 & U9p7z6[24])); +assign Wl7iy6 = (Cf8iy6 & Kf8iy6); +assign Kf8iy6 = (Sf8iy6 & Ag8iy6); +assign Ag8iy6 = (~(Klo7z6[2] & Ig8iy6)); +assign Ig8iy6 = (~(Qg8iy6 & Yg8iy6)); +assign Yg8iy6 = (Gh8iy6 & Oh8iy6); +assign Oh8iy6 = (Wh8iy6 & Ei8iy6); +assign Ei8iy6 = (~(Cgset6 & S4kiw6)); +assign Wh8iy6 = (Mi8iy6 & Ui8iy6); +assign Ui8iy6 = (~(Nqo7z6[22] & M8kiw6)); +assign Mi8iy6 = (~(Fpo7z6[22] & H9kiw6)); +assign Gh8iy6 = (Cj8iy6 & Kj8iy6); +assign Kj8iy6 = (~(Ouo7z6[22] & K7kiw6)); +assign Cj8iy6 = (~(Hxo7z6[22] & W6kiw6)); +assign Qg8iy6 = (Sj8iy6 & Ak8iy6); +assign Ak8iy6 = (Ik8iy6 & Qk8iy6); +assign Qk8iy6 = (~(Vro7z6[22] & Y7kiw6)); +assign Ik8iy6 = (~(T2p7z6[24] & U5kiw6)); +assign Sj8iy6 = (Yk8iy6 & Gl8iy6); +assign Gl8iy6 = (~(W3p7z6[24] & G5kiw6)); +assign Yk8iy6 = (~(A0p7z6[22] & I6kiw6)); +assign Sf8iy6 = (~(Bv1nz6[0] & Ol8iy6)); +assign Cf8iy6 = (O53iy6 & Wl8iy6); +assign Wl8iy6 = (~(Ies7z6[24] & Tltyx6)); +assign Gl7iy6 = (~(Zmoyx6 & Kdg7x6)); +assign Kdg7x6 = (~(Em8iy6 & Mm8iy6)); +assign Mm8iy6 = (~(Um8iy6 & I8a7z6)); +assign I8a7z6 = (~(Cn8iy6 & Kn8iy6)); +assign Kn8iy6 = (~(HRDATAD[24] & Qln7z6[0])); +assign Cn8iy6 = (~(HRDATAS[24] & Qln7z6[1])); +assign Em8iy6 = (Sn8iy6 & Ao8iy6); +assign Ao8iy6 = (~(Munhy6 & S7n7z6[1])); +assign Munhy6 = (Lpoyx6 & Evadt6); +assign Lpoyx6 = (Io8iy6 & Qxxet6); +assign Io8iy6 = (Qo8iy6 & A9gxx6); +assign Sn8iy6 = (~(Tim7z6[24] & Yo8iy6)); +assign Qk7iy6 = (Gp8iy6 & Op8iy6); +assign Op8iy6 = (~(HRDATAS[24] & Ad47x6)); +assign Gp8iy6 = (~(HRDATAD[24] & Mc47x6)); +assign Ak7iy6 = (~(Lpryx6 & Yqonv6)); +assign Xjo7v6 = (~(Wp8iy6 & Eq8iy6)); +assign Eq8iy6 = (~(Jexmz6[25] & K94iw6)); +assign Wp8iy6 = (Mq8iy6 & Uq8iy6); +assign Uq8iy6 = (~(Lloyx6 & Vv77x6)); +assign Vv77x6 = (~(Cr8iy6 & Kr8iy6)); +assign Kr8iy6 = (Sr8iy6 & As8iy6); +assign As8iy6 = (Bqoyx6 | Q9g7x6); +assign Q9g7x6 = (Is8iy6 & Qs8iy6); +assign Qs8iy6 = (Ys8iy6 & Gt8iy6); +assign Gt8iy6 = (Ot8iy6 & Wt8iy6); +assign Wt8iy6 = (~(Rmzyx6 & Eu8iy6)); +assign Eu8iy6 = (~(Mu8iy6 & Uu8iy6)); +assign Uu8iy6 = (Cv8iy6 & Kv8iy6); +assign Kv8iy6 = (Sv8iy6 & Aw8iy6); +assign Aw8iy6 = (~(Hyj7z6[3] & Sxciw6)); +assign Sv8iy6 = (~(Hyj7z6[2] & Lxciw6)); +assign Cv8iy6 = (Iw8iy6 & Qw8iy6); +assign Qw8iy6 = (~(Hyj7z6[1] & Exciw6)); +assign Iw8iy6 = (~(Hyj7z6[5] & Zxciw6)); +assign Mu8iy6 = (Yw8iy6 & Gx8iy6); +assign Gx8iy6 = (Ox8iy6 & Wx8iy6); +assign Wx8iy6 = (~(Hyj7z6[6] & Gyciw6)); +assign Ox8iy6 = (~(Hyj7z6[0] & Dfk7z6[25])); +assign Yw8iy6 = (Ey8iy6 & My8iy6); +assign My8iy6 = (~(Hyj7z6[4] & Jkl7z6[25])); +assign Ey8iy6 = (~(Hyj7z6[7] & Hfm7z6[25])); +assign Ot8iy6 = (Uy8iy6 & Cz8iy6); +assign Cz8iy6 = (~(Kz8iy6 & Sz8iy6)); +assign Kz8iy6 = (Ok77v6 & D1pyx6); +assign Uy8iy6 = (~(Klo7z6[1] & A09iy6)); +assign A09iy6 = (~(I09iy6 & Q09iy6)); +assign Q09iy6 = (Y09iy6 & G19iy6); +assign G19iy6 = (~(B2q7z6[25] & Fcqyx6)); +assign Y09iy6 = (O19iy6 & W19iy6); +assign W19iy6 = (~(Bqp7z6[25] & D5qyx6)); +assign O19iy6 = (~(E6p7z6[25] & L9qyx6)); +assign I09iy6 = (E29iy6 & M29iy6); +assign M29iy6 = (~(Mkp7z6[25] & Tdqyx6)); +assign E29iy6 = (~(Hfqyx6 & U9p7z6[25])); +assign Ys8iy6 = (U29iy6 & C39iy6); +assign C39iy6 = (~(Xbzyx6 & K39iy6)); +assign K39iy6 = (~(S39iy6 & A49iy6)); +assign A49iy6 = (I49iy6 & Q49iy6); +assign Q49iy6 = (Y49iy6 & G59iy6); +assign G59iy6 = (~(Hyj7z6[0] & Rbk7z6[21])); +assign Y49iy6 = (~(Hyj7z6[1] & Zlk7z6[21])); +assign I49iy6 = (O59iy6 & W59iy6); +assign W59iy6 = (~(Hyj7z6[2] & Hwk7z6[21])); +assign O59iy6 = (~(Hyj7z6[3] & P6l7z6[21])); +assign S39iy6 = (E69iy6 & M69iy6); +assign M69iy6 = (U69iy6 & C79iy6); +assign C79iy6 = (~(Hyj7z6[4] & Xgl7z6[21])); +assign U69iy6 = (~(Hyj7z6[5] & Frl7z6[21])); +assign E69iy6 = (K79iy6 & S79iy6); +assign S79iy6 = (~(Hyj7z6[6] & N1m7z6[21])); +assign K79iy6 = (~(Hyj7z6[7] & Vbm7z6[21])); +assign U29iy6 = (~(A89iy6 & Ngqyx6)); +assign A89iy6 = (~(I89iy6 & Q89iy6)); +assign Q89iy6 = (Y89iy6 & G99iy6); +assign G99iy6 = (O99iy6 & W99iy6); +assign W99iy6 = (Ea9iy6 & Ma9iy6); +assign Ma9iy6 = (~(Ijeet6 & Buqyx6)); +assign Buqyx6 = (Ua9iy6 & Voqyx6); +assign Ua9iy6 = (!E28iy6); +assign Ea9iy6 = (~(Bzi7z6[25] & Vsqyx6)); +assign Vsqyx6 = (~(Ua0iy6 | Zyuyx6)); +assign O99iy6 = (Cb9iy6 & Kb9iy6); +assign Kb9iy6 = (~(Wui7z6[25] & Lxqyx6)); +assign Cb9iy6 = (~(Dri7z6[25] & Fwqyx6)); +assign Y89iy6 = (Sb9iy6 & Ac9iy6); +assign Ac9iy6 = (~(Pzqyx6 & G5j7z6[57])); +assign Sb9iy6 = (Ic9iy6 & Qc9iy6); +assign Qc9iy6 = (~(Bwi7z6[25] & Hzqyx6)); +assign Ic9iy6 = (~(Svkhy6 & Pnb7z6[25])); +assign I89iy6 = (Yc9iy6 & Gd9iy6); +assign Gd9iy6 = (Od9iy6 & Wd9iy6); +assign Wd9iy6 = (~(J2ryx6 & M6j7z6[25])); +assign Od9iy6 = (Ee9iy6 & Me9iy6); +assign Me9iy6 = (~(Jyqyx6 & G5j7z6[25])); +assign Ee9iy6 = (~(B2ryx6 & M6j7z6[57])); +assign Yc9iy6 = (Ue9iy6 & Meyhy6); +assign Meyhy6 = (Ywwhy6 & K33iy6); +assign K33iy6 = (~(Lpyyx6 & A8yhy6)); +assign Ue9iy6 = (Cf9iy6 & Kf9iy6); +assign Kf9iy6 = (~(D1ryx6 & Ohj7z6[57])); +assign Cf9iy6 = (~(X3ryx6 & Ohj7z6[25])); +assign Is8iy6 = (Sf9iy6 & Ag9iy6); +assign Ag9iy6 = (Ig9iy6 & Qg9iy6); +assign Qg9iy6 = (~(Cr6iy6 & Qo77z6)); +assign Ig9iy6 = (Yg9iy6 & Gh9iy6); +assign Gh9iy6 = (~(Klo7z6[2] & Oh9iy6)); +assign Oh9iy6 = (~(Wh9iy6 & Ei9iy6)); +assign Ei9iy6 = (Mi9iy6 & Ui9iy6); +assign Ui9iy6 = (Cj9iy6 & Kj9iy6); +assign Kj9iy6 = (~(Beset6 & S4kiw6)); +assign Cj9iy6 = (Sj9iy6 & Ak9iy6); +assign Ak9iy6 = (~(Nqo7z6[23] & M8kiw6)); +assign Sj9iy6 = (~(Fpo7z6[23] & H9kiw6)); +assign Mi9iy6 = (Ik9iy6 & Qk9iy6); +assign Qk9iy6 = (~(Ouo7z6[23] & K7kiw6)); +assign Ik9iy6 = (~(Hxo7z6[23] & W6kiw6)); +assign Wh9iy6 = (Yk9iy6 & Gl9iy6); +assign Gl9iy6 = (Ol9iy6 & Wl9iy6); +assign Wl9iy6 = (~(Vro7z6[23] & Y7kiw6)); +assign Ol9iy6 = (~(T2p7z6[25] & U5kiw6)); +assign Yk9iy6 = (Em9iy6 & Mm9iy6); +assign Mm9iy6 = (~(W3p7z6[25] & G5kiw6)); +assign Em9iy6 = (~(A0p7z6[23] & I6kiw6)); +assign Yg9iy6 = (~(Bv1nz6[1] & Ol8iy6)); +assign Sf9iy6 = (Um9iy6 & Cn9iy6); +assign Cn9iy6 = (~(Ies7z6[25] & Tltyx6)); +assign Sr8iy6 = (~(Zmoyx6 & X9g7x6)); +assign X9g7x6 = (~(Kn9iy6 & Sn9iy6)); +assign Sn9iy6 = (~(Um8iy6 & A8a7z6)); +assign A8a7z6 = (~(Ao9iy6 & Io9iy6)); +assign Io9iy6 = (~(HRDATAD[25] & Qln7z6[0])); +assign Ao9iy6 = (~(HRDATAS[25] & Qln7z6[1])); +assign Kn9iy6 = (~(Tim7z6[25] & Yo8iy6)); +assign Cr8iy6 = (Qo9iy6 & Yo9iy6); +assign Yo9iy6 = (~(HRDATAS[25] & Ad47x6)); +assign Qo9iy6 = (~(HRDATAD[25] & Mc47x6)); +assign Mq8iy6 = (~(Lpryx6 & C6q7x6)); +assign Qjo7v6 = (~(Gp9iy6 & Op9iy6)); +assign Op9iy6 = (~(Jexmz6[26] & K94iw6)); +assign Gp9iy6 = (Wp9iy6 & Eq9iy6); +assign Eq9iy6 = (~(Lloyx6 & Bcfov6)); +assign Bcfov6 = (~(Mq9iy6 & Uq9iy6)); +assign Uq9iy6 = (Cr9iy6 & Kr9iy6); +assign Kr9iy6 = (Bqoyx6 | Ww98x6); +assign Ww98x6 = (Sr9iy6 & As9iy6); +assign As9iy6 = (Is9iy6 & Qs9iy6); +assign Qs9iy6 = (Ys9iy6 & Gt9iy6); +assign Gt9iy6 = (~(Xbzyx6 & Ot9iy6)); +assign Ot9iy6 = (~(Wt9iy6 & Eu9iy6)); +assign Eu9iy6 = (Mu9iy6 & Uu9iy6); +assign Uu9iy6 = (Cv9iy6 & Kv9iy6); +assign Kv9iy6 = (~(Hyj7z6[0] & Rbk7z6[22])); +assign Cv9iy6 = (~(Hyj7z6[1] & Zlk7z6[22])); +assign Mu9iy6 = (Sv9iy6 & Aw9iy6); +assign Aw9iy6 = (~(Hyj7z6[2] & Hwk7z6[22])); +assign Sv9iy6 = (~(Hyj7z6[3] & P6l7z6[22])); +assign Wt9iy6 = (Iw9iy6 & Qw9iy6); +assign Qw9iy6 = (Yw9iy6 & Gx9iy6); +assign Gx9iy6 = (~(Hyj7z6[4] & Xgl7z6[22])); +assign Yw9iy6 = (~(Hyj7z6[5] & Frl7z6[22])); +assign Iw9iy6 = (Ox9iy6 & Wx9iy6); +assign Wx9iy6 = (~(Hyj7z6[6] & N1m7z6[22])); +assign Ox9iy6 = (~(Hyj7z6[7] & Vbm7z6[22])); +assign Ys9iy6 = (Ey9iy6 & My9iy6); +assign My9iy6 = (~(Klo7z6[1] & Uy9iy6)); +assign Uy9iy6 = (~(Cz9iy6 & Kz9iy6)); +assign Kz9iy6 = (Sz9iy6 & A0aiy6); +assign A0aiy6 = (~(B2q7z6[26] & Fcqyx6)); +assign Sz9iy6 = (I0aiy6 & Q0aiy6); +assign Q0aiy6 = (~(Bqp7z6[26] & D5qyx6)); +assign I0aiy6 = (~(E6p7z6[26] & L9qyx6)); +assign Cz9iy6 = (Y0aiy6 & G1aiy6); +assign G1aiy6 = (~(Mkp7z6[26] & Tdqyx6)); +assign Y0aiy6 = (~(Hfqyx6 & U9p7z6[26])); +assign Ey9iy6 = (~(Rmzyx6 & O1aiy6)); +assign O1aiy6 = (~(W1aiy6 & E2aiy6)); +assign E2aiy6 = (M2aiy6 & U2aiy6); +assign U2aiy6 = (C3aiy6 & K3aiy6); +assign K3aiy6 = (~(Hyj7z6[3] & Bzciw6)); +assign C3aiy6 = (~(Hyj7z6[2] & Uyciw6)); +assign M2aiy6 = (S3aiy6 & A4aiy6); +assign A4aiy6 = (~(Hyj7z6[1] & Nyciw6)); +assign S3aiy6 = (~(Hyj7z6[5] & Izciw6)); +assign W1aiy6 = (I4aiy6 & Q4aiy6); +assign Q4aiy6 = (Y4aiy6 & G5aiy6); +assign G5aiy6 = (~(Hyj7z6[6] & Pzciw6)); +assign Y4aiy6 = (~(Hyj7z6[7] & Wzciw6)); +assign I4aiy6 = (O5aiy6 & W5aiy6); +assign W5aiy6 = (~(Hyj7z6[0] & Dfk7z6[26])); +assign O5aiy6 = (~(Hyj7z6[4] & Jkl7z6[26])); +assign Is9iy6 = (E6aiy6 & M6aiy6); +assign M6aiy6 = (~(U6aiy6 & Ngqyx6)); +assign U6aiy6 = (~(C7aiy6 & K7aiy6)); +assign K7aiy6 = (S7aiy6 & A8aiy6); +assign A8aiy6 = (I8aiy6 & Q8aiy6); +assign Q8aiy6 = (~(Dri7z6[26] & Fwqyx6)); +assign I8aiy6 = (Y8aiy6 & G9aiy6); +assign G9aiy6 = (~(Dxqyx6 & Zfcet6)); +assign Y8aiy6 = (~(Wui7z6[26] & Lxqyx6)); +assign S7aiy6 = (O9aiy6 & W9aiy6); +assign W9aiy6 = (~(Pzqyx6 & G5j7z6[58])); +assign O9aiy6 = (Eaaiy6 & Maaiy6); +assign Maaiy6 = (~(Bwi7z6[26] & Hzqyx6)); +assign Eaaiy6 = (~(Svkhy6 & Pnb7z6[26])); +assign C7aiy6 = (Uaaiy6 & Cbaiy6); +assign Cbaiy6 = (Kbaiy6 & Sbaiy6); +assign Sbaiy6 = (~(J2ryx6 & M6j7z6[26])); +assign Kbaiy6 = (Acaiy6 & Icaiy6); +assign Icaiy6 = (~(Jyqyx6 & G5j7z6[26])); +assign Acaiy6 = (~(B2ryx6 & M6j7z6[58])); +assign Uaaiy6 = (Qcaiy6 & Ycaiy6); +assign Ycaiy6 = (~(D1ryx6 & Ohj7z6[58])); +assign Qcaiy6 = (~(X3ryx6 & Ohj7z6[26])); +assign E6aiy6 = (~(Klo7z6[2] & Gdaiy6)); +assign Gdaiy6 = (~(Odaiy6 & Wdaiy6)); +assign Wdaiy6 = (Eeaiy6 & Meaiy6); +assign Meaiy6 = (Ueaiy6 & Cfaiy6); +assign Cfaiy6 = (~(Acset6 & S4kiw6)); +assign Ueaiy6 = (Kfaiy6 & Sfaiy6); +assign Sfaiy6 = (~(Nqo7z6[24] & M8kiw6)); +assign Kfaiy6 = (~(Fpo7z6[24] & H9kiw6)); +assign Eeaiy6 = (Agaiy6 & Igaiy6); +assign Igaiy6 = (~(Ouo7z6[24] & K7kiw6)); +assign Agaiy6 = (~(Hxo7z6[24] & W6kiw6)); +assign Odaiy6 = (Qgaiy6 & Ygaiy6); +assign Ygaiy6 = (Ghaiy6 & Ohaiy6); +assign Ohaiy6 = (~(Vro7z6[24] & Y7kiw6)); +assign Ghaiy6 = (~(T2p7z6[26] & U5kiw6)); +assign Qgaiy6 = (Whaiy6 & Eiaiy6); +assign Eiaiy6 = (~(W3p7z6[26] & G5kiw6)); +assign Whaiy6 = (~(A0p7z6[24] & I6kiw6)); +assign Sr9iy6 = (Miaiy6 & Uiaiy6); +assign Uiaiy6 = (Cjaiy6 & Kjaiy6); +assign Kjaiy6 = (~(W197z6 & Ol8iy6)); +assign Cjaiy6 = (~(Cr6iy6 & Io77z6)); +assign Miaiy6 = (Yg7iy6 & Sjaiy6); +assign Sjaiy6 = (~(Ies7z6[26] & Tltyx6)); +assign Cr9iy6 = (~(HRDATAS[26] & Ad47x6)); +assign Mq9iy6 = (Akaiy6 & Ikaiy6); +assign Ikaiy6 = (~(HRDATAD[26] & Mc47x6)); +assign Akaiy6 = (~(Zmoyx6 & Dx98x6)); +assign Dx98x6 = (~(Qkaiy6 & Ykaiy6)); +assign Ykaiy6 = (~(Um8iy6 & S7a7z6)); +assign S7a7z6 = (~(Glaiy6 & Olaiy6)); +assign Olaiy6 = (~(HRDATAD[26] & Qln7z6[0])); +assign Glaiy6 = (~(HRDATAS[26] & Qln7z6[1])); +assign Qkaiy6 = (~(Tim7z6[26] & Yo8iy6)); +assign Wp9iy6 = (~(Lpryx6 & Mbq7x6)); +assign Jjo7v6 = (~(Wlaiy6 & Emaiy6)); +assign Emaiy6 = (~(Jexmz6[27] & K94iw6)); +assign Wlaiy6 = (Mmaiy6 & Umaiy6); +assign Umaiy6 = (~(Lloyx6 & Fmlov6)); +assign Fmlov6 = (~(Cnaiy6 & Knaiy6)); +assign Knaiy6 = (Snaiy6 & Aoaiy6); +assign Aoaiy6 = (Bqoyx6 | Voyxx6); +assign Voyxx6 = (Ioaiy6 & Qoaiy6); +assign Qoaiy6 = (Yoaiy6 & Gpaiy6); +assign Gpaiy6 = (Opaiy6 & Wpaiy6); +assign Wpaiy6 = (~(Klo7z6[1] & Eqaiy6)); +assign Eqaiy6 = (~(Mqaiy6 & Uqaiy6)); +assign Uqaiy6 = (Craiy6 & Kraiy6); +assign Kraiy6 = (~(B2q7z6[27] & Fcqyx6)); +assign Craiy6 = (Sraiy6 & Asaiy6); +assign Asaiy6 = (~(Bqp7z6[27] & D5qyx6)); +assign Sraiy6 = (~(E6p7z6[27] & L9qyx6)); +assign Mqaiy6 = (Isaiy6 & Qsaiy6); +assign Qsaiy6 = (~(Mkp7z6[27] & Tdqyx6)); +assign Isaiy6 = (~(Hfqyx6 & U9p7z6[27])); +assign Opaiy6 = (Ysaiy6 & Gd2iy6); +assign Ysaiy6 = (~(Gtaiy6 & U2jhy6)); +assign Gtaiy6 = (Otaiy6 & K3jhy6); +assign Otaiy6 = (~(Wtaiy6 & Euaiy6)); +assign Euaiy6 = (Muaiy6 & Uuaiy6); +assign Uuaiy6 = (Cvaiy6 & Kvaiy6); +assign Kvaiy6 = (~(Hyj7z6[3] & R0diw6)); +assign Cvaiy6 = (~(Hyj7z6[2] & K0diw6)); +assign Muaiy6 = (Svaiy6 & Awaiy6); +assign Awaiy6 = (~(Hyj7z6[1] & D0diw6)); +assign Svaiy6 = (~(Hyj7z6[5] & Y0diw6)); +assign Wtaiy6 = (Iwaiy6 & Qwaiy6); +assign Qwaiy6 = (Ywaiy6 & Gxaiy6); +assign Gxaiy6 = (~(Hyj7z6[6] & F1diw6)); +assign Ywaiy6 = (~(Hyj7z6[7] & M1diw6)); +assign Iwaiy6 = (Oxaiy6 & Wxaiy6); +assign Wxaiy6 = (~(Hyj7z6[0] & Dfk7z6[27])); +assign Oxaiy6 = (~(Hyj7z6[4] & Jkl7z6[27])); +assign Yoaiy6 = (Eyaiy6 & Myaiy6); +assign Myaiy6 = (~(Uyaiy6 & Ngqyx6)); +assign Uyaiy6 = (~(Czaiy6 & Kzaiy6)); +assign Kzaiy6 = (Szaiy6 & A0biy6); +assign A0biy6 = (I0biy6 & Q0biy6); +assign Q0biy6 = (~(Dri7z6[27] & Fwqyx6)); +assign I0biy6 = (Y0biy6 & Ywwhy6); +assign Y0biy6 = (~(Wui7z6[27] & Lxqyx6)); +assign Szaiy6 = (G1biy6 & O1biy6); +assign O1biy6 = (~(Pzqyx6 & G5j7z6[59])); +assign G1biy6 = (W1biy6 & E2biy6); +assign E2biy6 = (~(Bwi7z6[27] & Hzqyx6)); +assign W1biy6 = (~(Svkhy6 & Pnb7z6[27])); +assign Czaiy6 = (M2biy6 & U2biy6); +assign U2biy6 = (C3biy6 & K3biy6); +assign K3biy6 = (~(J2ryx6 & M6j7z6[27])); +assign C3biy6 = (S3biy6 & A4biy6); +assign A4biy6 = (~(Jyqyx6 & G5j7z6[27])); +assign S3biy6 = (~(B2ryx6 & M6j7z6[59])); +assign M2biy6 = (I4biy6 & Q4biy6); +assign Q4biy6 = (~(D1ryx6 & Ohj7z6[59])); +assign I4biy6 = (~(X3ryx6 & Ohj7z6[27])); +assign Eyaiy6 = (~(Klo7z6[2] & Y4biy6)); +assign Y4biy6 = (~(G5biy6 & O5biy6)); +assign O5biy6 = (W5biy6 & E6biy6); +assign E6biy6 = (M6biy6 & U6biy6); +assign U6biy6 = (~(Z9set6 & S4kiw6)); +assign M6biy6 = (C7biy6 & K7biy6); +assign K7biy6 = (~(Nqo7z6[25] & M8kiw6)); +assign C7biy6 = (~(Fpo7z6[25] & H9kiw6)); +assign W5biy6 = (S7biy6 & A8biy6); +assign A8biy6 = (~(Ouo7z6[25] & K7kiw6)); +assign S7biy6 = (~(Hxo7z6[25] & W6kiw6)); +assign G5biy6 = (I8biy6 & Q8biy6); +assign Q8biy6 = (Y8biy6 & G9biy6); +assign G9biy6 = (~(Vro7z6[25] & Y7kiw6)); +assign Y8biy6 = (~(T2p7z6[27] & U5kiw6)); +assign I8biy6 = (O9biy6 & W9biy6); +assign W9biy6 = (~(W3p7z6[27] & G5kiw6)); +assign O9biy6 = (~(A0p7z6[25] & I6kiw6)); +assign Ioaiy6 = (Eabiy6 & Mabiy6); +assign Mabiy6 = (Uabiy6 & Cbbiy6); +assign Cbbiy6 = (~(Pp1nz6[0] & Ol8iy6)); +assign Uabiy6 = (~(Cr6iy6 & Ao77z6)); +assign Eabiy6 = (Yg7iy6 & Kbbiy6); +assign Kbbiy6 = (~(Ies7z6[27] & Tltyx6)); +assign Snaiy6 = (~(Zmoyx6 & Dpyxx6)); +assign Dpyxx6 = (~(Sbbiy6 & Acbiy6)); +assign Acbiy6 = (~(Um8iy6 & K7a7z6)); +assign K7a7z6 = (~(Icbiy6 & Qcbiy6)); +assign Qcbiy6 = (~(HRDATAD[27] & Qln7z6[0])); +assign Icbiy6 = (~(HRDATAS[27] & Qln7z6[1])); +assign Sbbiy6 = (~(Tim7z6[27] & Yo8iy6)); +assign Cnaiy6 = (Ycbiy6 & Gdbiy6); +assign Gdbiy6 = (~(HRDATAS[27] & Ad47x6)); +assign Ycbiy6 = (~(HRDATAD[27] & Mc47x6)); +assign Mmaiy6 = (~(Lpryx6 & Wgq7x6)); +assign Cjo7v6 = (~(Odbiy6 & Wdbiy6)); +assign Wdbiy6 = (~(Jexmz6[28] & K94iw6)); +assign Odbiy6 = (Eebiy6 & Mebiy6); +assign Mebiy6 = (~(Lloyx6 & T977x6)); +assign T977x6 = (~(Uebiy6 & Cfbiy6)); +assign Cfbiy6 = (Kfbiy6 & Sfbiy6); +assign Sfbiy6 = (Bqoyx6 | Vsyxx6); +assign Vsyxx6 = (Agbiy6 & Igbiy6); +assign Igbiy6 = (Qgbiy6 & Ygbiy6); +assign Ygbiy6 = (Ghbiy6 & Ohbiy6); +assign Ohbiy6 = (~(Klo7z6[1] & Whbiy6)); +assign Whbiy6 = (~(Eibiy6 & Mibiy6)); +assign Mibiy6 = (Uibiy6 & Cjbiy6); +assign Cjbiy6 = (~(B2q7z6[28] & Fcqyx6)); +assign Uibiy6 = (Kjbiy6 & Sjbiy6); +assign Sjbiy6 = (~(Bqp7z6[28] & D5qyx6)); +assign Kjbiy6 = (~(E6p7z6[28] & L9qyx6)); +assign Eibiy6 = (Akbiy6 & Ikbiy6); +assign Ikbiy6 = (~(Mkp7z6[28] & Tdqyx6)); +assign Akbiy6 = (~(Hfqyx6 & U9p7z6[28])); +assign Ghbiy6 = (Qkbiy6 & Gd2iy6); +assign Gd2iy6 = (~(Ykbiy6 & D1pyx6)); +assign Ykbiy6 = (Ied8x6 & W5qhy6); +assign Qkbiy6 = (~(Yg3iy6 & Xz67v6)); +assign Yg3iy6 = (Iknhy6 & Klo7z6[3]); +assign Iknhy6 = (Fgpyx6 & Mphiw6); +assign Qgbiy6 = (Glbiy6 & Olbiy6); +assign Olbiy6 = (~(Xbzyx6 & Wlbiy6)); +assign Wlbiy6 = (~(Embiy6 & Mmbiy6)); +assign Mmbiy6 = (Umbiy6 & Cnbiy6); +assign Cnbiy6 = (Knbiy6 & Snbiy6); +assign Snbiy6 = (~(Rbk7z6[23] & Hyj7z6[0])); +assign Knbiy6 = (~(Zlk7z6[23] & Hyj7z6[1])); +assign Umbiy6 = (Aobiy6 & Iobiy6); +assign Iobiy6 = (~(Hwk7z6[23] & Hyj7z6[2])); +assign Aobiy6 = (~(P6l7z6[23] & Hyj7z6[3])); +assign Embiy6 = (Qobiy6 & Yobiy6); +assign Yobiy6 = (Gpbiy6 & Opbiy6); +assign Opbiy6 = (~(Xgl7z6[23] & Hyj7z6[4])); +assign Gpbiy6 = (~(Frl7z6[23] & Hyj7z6[5])); +assign Qobiy6 = (Wpbiy6 & Eqbiy6); +assign Eqbiy6 = (~(N1m7z6[23] & Hyj7z6[6])); +assign Wpbiy6 = (~(Vbm7z6[23] & Hyj7z6[7])); +assign Xbzyx6 = (Mqbiy6 & Klo7z6[5]); +assign Mqbiy6 = (K3jhy6 & Rediw6); +assign Glbiy6 = (Uqbiy6 & Crbiy6); +assign Crbiy6 = (~(Krbiy6 & Ngqyx6)); +assign Krbiy6 = (~(Srbiy6 & Asbiy6)); +assign Asbiy6 = (Isbiy6 & Qsbiy6); +assign Qsbiy6 = (Ysbiy6 & Gtbiy6); +assign Gtbiy6 = (~(Wui7z6[28] & Lxqyx6)); +assign Ysbiy6 = (Otbiy6 & Ywwhy6); +assign Otbiy6 = (~(Dxqyx6 & Fhcet6)); +assign Isbiy6 = (Wtbiy6 & Eubiy6); +assign Eubiy6 = (~(Svkhy6 & Pnb7z6[28])); +assign Wtbiy6 = (Mubiy6 & Uubiy6); +assign Uubiy6 = (~(Dri7z6[28] & Fwqyx6)); +assign Mubiy6 = (~(Bwi7z6[28] & Hzqyx6)); +assign Srbiy6 = (Cvbiy6 & Kvbiy6); +assign Kvbiy6 = (Svbiy6 & Awbiy6); +assign Awbiy6 = (~(B2ryx6 & M6j7z6[60])); +assign Svbiy6 = (Iwbiy6 & Qwbiy6); +assign Qwbiy6 = (~(Pzqyx6 & G5j7z6[60])); +assign Iwbiy6 = (~(Jyqyx6 & G5j7z6[28])); +assign Cvbiy6 = (Ywbiy6 & Gxbiy6); +assign Gxbiy6 = (~(X3ryx6 & Ohj7z6[28])); +assign Ywbiy6 = (Oxbiy6 & Wxbiy6); +assign Wxbiy6 = (~(J2ryx6 & M6j7z6[28])); +assign Oxbiy6 = (~(D1ryx6 & Ohj7z6[60])); +assign Uqbiy6 = (~(Rmzyx6 & Eybiy6)); +assign Eybiy6 = (~(Mybiy6 & Uybiy6)); +assign Uybiy6 = (Czbiy6 & Kzbiy6); +assign Kzbiy6 = (Szbiy6 & A0ciy6); +assign A0ciy6 = (~(Hyj7z6[3] & O2diw6)); +assign Szbiy6 = (~(Hyj7z6[2] & H2diw6)); +assign Czbiy6 = (I0ciy6 & Q0ciy6); +assign Q0ciy6 = (~(Hyj7z6[1] & A2diw6)); +assign I0ciy6 = (~(Hyj7z6[5] & V2diw6)); +assign Mybiy6 = (Y0ciy6 & G1ciy6); +assign G1ciy6 = (O1ciy6 & W1ciy6); +assign W1ciy6 = (~(Hyj7z6[6] & J3diw6)); +assign O1ciy6 = (~(Hyj7z6[7] & Q3diw6)); +assign Y0ciy6 = (E2ciy6 & M2ciy6); +assign M2ciy6 = (~(Hyj7z6[0] & Dfk7z6[28])); +assign E2ciy6 = (~(Hyj7z6[4] & Jkl7z6[28])); +assign Rmzyx6 = (U2jhy6 & K3jhy6); +assign Agbiy6 = (U2ciy6 & C3ciy6); +assign C3ciy6 = (K3ciy6 & S3ciy6); +assign S3ciy6 = (~(Cr6iy6 & Sn77z6)); +assign K3ciy6 = (A4ciy6 & I4ciy6); +assign I4ciy6 = (~(Klo7z6[2] & Q4ciy6)); +assign Q4ciy6 = (~(Y4ciy6 & G5ciy6)); +assign G5ciy6 = (O5ciy6 & W5ciy6); +assign W5ciy6 = (E6ciy6 & M6ciy6); +assign M6ciy6 = (~(Y7set6 & S4kiw6)); +assign E6ciy6 = (U6ciy6 & C7ciy6); +assign C7ciy6 = (~(Nqo7z6[26] & M8kiw6)); +assign M8kiw6 = (~(K7ciy6 | Z4p7z6[0])); +assign U6ciy6 = (~(Fpo7z6[26] & H9kiw6)); +assign H9kiw6 = (S7ciy6 & Z4p7z6[0]); +assign S7ciy6 = (!K7ciy6); +assign K7ciy6 = (~(A8ciy6 & I8ciy6)); +assign I8ciy6 = (Q8ciy6 & Uamhy6); +assign Q8ciy6 = (~(Z4p7z6[2] | Z4p7z6[5])); +assign A8ciy6 = (Z4p7z6[4] & Z4p7z6[3]); +assign O5ciy6 = (Y8ciy6 & G9ciy6); +assign G9ciy6 = (~(Ouo7z6[26] & K7kiw6)); +assign Y8ciy6 = (~(Hxo7z6[26] & W6kiw6)); +assign Y4ciy6 = (O9ciy6 & W9ciy6); +assign W9ciy6 = (Eaciy6 & Maciy6); +assign Maciy6 = (~(Vro7z6[26] & Y7kiw6)); +assign Eaciy6 = (~(T2p7z6[28] & U5kiw6)); +assign O9ciy6 = (Uaciy6 & Cbciy6); +assign Cbciy6 = (~(W3p7z6[28] & G5kiw6)); +assign Uaciy6 = (~(A0p7z6[26] & I6kiw6)); +assign A4ciy6 = (~(Pp1nz6[1] & Ol8iy6)); +assign U2ciy6 = (Um9iy6 & Kbciy6); +assign Kbciy6 = (~(Ies7z6[28] & Tltyx6)); +assign Kfbiy6 = (~(Zmoyx6 & Dtyxx6)); +assign Dtyxx6 = (~(Sbciy6 & Acciy6)); +assign Acciy6 = (~(Um8iy6 & C7a7z6)); +assign C7a7z6 = (~(Icciy6 & Qcciy6)); +assign Qcciy6 = (~(HRDATAD[28] & Qln7z6[0])); +assign Icciy6 = (~(HRDATAS[28] & Qln7z6[1])); +assign Sbciy6 = (~(Tim7z6[28] & Yo8iy6)); +assign Uebiy6 = (Ycciy6 & Gdciy6); +assign Gdciy6 = (~(HRDATAS[28] & Ad47x6)); +assign Ycciy6 = (~(HRDATAD[28] & Mc47x6)); +assign Eebiy6 = (~(Lpryx6 & Gmq7x6)); +assign Vio7v6 = (~(Odciy6 & Wdciy6)); +assign Wdciy6 = (~(Jexmz6[29] & K94iw6)); +assign Odciy6 = (Eeciy6 & Meciy6); +assign Meciy6 = (~(Lloyx6 & T277x6)); +assign T277x6 = (~(Ueciy6 & Cfciy6)); +assign Cfciy6 = (Kfciy6 & Sfciy6); +assign Sfciy6 = (Bqoyx6 | Xvjyx6); +assign Xvjyx6 = (Agciy6 & Igciy6); +assign Igciy6 = (Qgciy6 & Ygciy6); +assign Ygciy6 = (Ghciy6 & Ohciy6); +assign Ohciy6 = (~(Whciy6 & U2jhy6)); +assign Whciy6 = (Eiciy6 & K3jhy6); +assign Eiciy6 = (~(Miciy6 & Uiciy6)); +assign Uiciy6 = (Cjciy6 & Kjciy6); +assign Kjciy6 = (Sjciy6 & Akciy6); +assign Akciy6 = (~(Hyj7z6[3] & L4diw6)); +assign Sjciy6 = (~(Hyj7z6[2] & E4diw6)); +assign Cjciy6 = (Ikciy6 & Qkciy6); +assign Qkciy6 = (~(Hyj7z6[1] & X3diw6)); +assign Ikciy6 = (~(Hyj7z6[5] & S4diw6)); +assign Miciy6 = (Ykciy6 & Glciy6); +assign Glciy6 = (Olciy6 & Wlciy6); +assign Wlciy6 = (~(Hyj7z6[6] & Z4diw6)); +assign Olciy6 = (~(Hyj7z6[7] & G5diw6)); +assign Ykciy6 = (Emciy6 & Mmciy6); +assign Mmciy6 = (~(Hyj7z6[0] & Dfk7z6[29])); +assign Emciy6 = (~(Hyj7z6[4] & Jkl7z6[29])); +assign Ghciy6 = (~(Klo7z6[1] & Umciy6)); +assign Umciy6 = (~(Cnciy6 & Knciy6)); +assign Knciy6 = (Snciy6 & Aociy6); +assign Aociy6 = (~(B2q7z6[29] & Fcqyx6)); +assign Snciy6 = (Iociy6 & Qociy6); +assign Qociy6 = (~(Bqp7z6[29] & D5qyx6)); +assign Iociy6 = (~(E6p7z6[29] & L9qyx6)); +assign Cnciy6 = (Yociy6 & Gpciy6); +assign Gpciy6 = (~(Mkp7z6[29] & Tdqyx6)); +assign Yociy6 = (~(Hfqyx6 & U9p7z6[29])); +assign Qgciy6 = (Opciy6 & Wpciy6); +assign Wpciy6 = (~(Txhyx6 & Ol8iy6)); +assign Ol8iy6 = (Xjtyx6 | Pjtyx6); +assign Pjtyx6 = (U2mhy6 & Klo7z6[3]); +assign U2mhy6 = (~(Gl5ov6 | Qgnhy6)); +assign Gl5ov6 = (!Ri3yx6); +assign Ri3yx6 = (~(Eqciy6 | Puhiw6)); +assign Xjtyx6 = (S3mhy6 & Klo7z6[3]); +assign S3mhy6 = (~(P72yx6 | Qgnhy6)); +assign Txhyx6 = (Ig27v6 ? Ln6ft6 : La6ft6); +assign Opciy6 = (~(Mqciy6 & Ngqyx6)); +assign Mqciy6 = (~(Uqciy6 & Crciy6)); +assign Crciy6 = (Krciy6 & Srciy6); +assign Srciy6 = (Asciy6 & Isciy6); +assign Isciy6 = (Qsciy6 & Ysciy6); +assign Ysciy6 = (Ykthy6 & Ywwhy6); +assign Ykthy6 = (~(A8yhy6 & Jmqyx6)); +assign A8yhy6 = (Q88iy6 & Tpyyx6); +assign Q88iy6 = (Gtciy6 & Otciy6); +assign Otciy6 = (Toi7z6[6] & D2k7x6); +assign D2k7x6 = (!Toi7z6[7]); +assign Gtciy6 = (Wtciy6 & Toi7z6[5]); +assign Qsciy6 = (Euciy6 & Muciy6); +assign Muciy6 = (~(Uuciy6 & Nksyx6)); +assign Uuciy6 = (Hjsyx6 & Gaj7z6[0]); +assign Euciy6 = (~(Wui7z6[29] & Lxqyx6)); +assign Asciy6 = (Cvciy6 & Kvciy6); +assign Kvciy6 = (Svciy6 & Awciy6); +assign Awciy6 = (~(Dri7z6[29] & Fwqyx6)); +assign Svciy6 = (~(Bwi7z6[29] & Hzqyx6)); +assign Cvciy6 = (Iwciy6 & Qwciy6); +assign Qwciy6 = (~(Ba0zx6 & T7j7z6[0])); +assign Iwciy6 = (~(Svkhy6 & Pnb7z6[29])); +assign Krciy6 = (Ywciy6 & Gxciy6); +assign Gxciy6 = (Oxciy6 & Wxciy6); +assign Wxciy6 = (Eyciy6 & Myciy6); +assign Myciy6 = (~(D90zx6 & Lgj7z6[189])); +assign Eyciy6 = (~(Za0zx6 & Lgj7z6[177])); +assign Oxciy6 = (Uyciy6 & Czciy6); +assign Czciy6 = (~(Hb0zx6 & Lgj7z6[165])); +assign Uyciy6 = (~(Vc0zx6 & Lgj7z6[153])); +assign Ywciy6 = (Kzciy6 & Szciy6); +assign Szciy6 = (~(Je0zx6 & Lgj7z6[117])); +assign Kzciy6 = (A0diy6 & I0diy6); +assign I0diy6 = (~(Dd0zx6 & Lgj7z6[141])); +assign A0diy6 = (~(Be0zx6 & Lgj7z6[129])); +assign Uqciy6 = (Q0diy6 & Y0diy6); +assign Y0diy6 = (G1diy6 & O1diy6); +assign O1diy6 = (W1diy6 & E2diy6); +assign E2diy6 = (M2diy6 & U2diy6); +assign U2diy6 = (~(Bi0zx6 & Lgj7z6[105])); +assign M2diy6 = (~(Ji0zx6 & Lgj7z6[93])); +assign W1diy6 = (C3diy6 & K3diy6); +assign K3diy6 = (~(Dh0zx6 & Lgj7z6[81])); +assign C3diy6 = (~(Hj0zx6 & Lgj7z6[69])); +assign G1diy6 = (S3diy6 & A4diy6); +assign A4diy6 = (I4diy6 & Q4diy6); +assign Q4diy6 = (~(Pj0zx6 & Lgj7z6[57])); +assign I4diy6 = (~(Dl0zx6 & Lgj7z6[45])); +assign S3diy6 = (Y4diy6 & G5diy6); +assign G5diy6 = (~(Ll0zx6 & Lgj7z6[33])); +assign Y4diy6 = (~(Jm0zx6 & Lgj7z6[21])); +assign Q0diy6 = (O5diy6 & W5diy6); +assign W5diy6 = (E6diy6 & M6diy6); +assign M6diy6 = (U6diy6 & C7diy6); +assign C7diy6 = (~(Rm0zx6 & Lgj7z6[9])); +assign U6diy6 = (~(Pzqyx6 & G5j7z6[61])); +assign E6diy6 = (K7diy6 & S7diy6); +assign S7diy6 = (~(Jyqyx6 & G5j7z6[29])); +assign K7diy6 = (~(B2ryx6 & M6j7z6[61])); +assign O5diy6 = (A8diy6 & I8diy6); +assign I8diy6 = (~(X3ryx6 & Ohj7z6[29])); +assign A8diy6 = (Q8diy6 & Y8diy6); +assign Y8diy6 = (~(J2ryx6 & M6j7z6[29])); +assign Q8diy6 = (~(D1ryx6 & Ohj7z6[61])); +assign Agciy6 = (G9diy6 & O9diy6); +assign O9diy6 = (W9diy6 & Eadiy6); +assign Eadiy6 = (~(S4kiw6 & Klo7z6[2])); +assign S4kiw6 = (Madiy6 & A0phy6); +assign Madiy6 = (Z4p7z6[0] & Uamhy6); +assign Uamhy6 = (!Z4p7z6[1]); +assign W9diy6 = (~(Cr6iy6 & Kn77z6)); +assign G9diy6 = (Um9iy6 & Uadiy6); +assign Uadiy6 = (~(Ies7z6[29] & Tltyx6)); +assign Kfciy6 = (~(Zmoyx6 & Fwjyx6)); +assign Fwjyx6 = (~(Cbdiy6 & Kbdiy6)); +assign Kbdiy6 = (~(Um8iy6 & U6a7z6)); +assign U6a7z6 = (~(Sbdiy6 & Acdiy6)); +assign Acdiy6 = (~(HRDATAD[29] & Qln7z6[0])); +assign Sbdiy6 = (~(HRDATAS[29] & Qln7z6[1])); +assign Cbdiy6 = (~(Tim7z6[29] & Yo8iy6)); +assign Ueciy6 = (Icdiy6 & Qcdiy6); +assign Qcdiy6 = (~(HRDATAS[29] & Ad47x6)); +assign Icdiy6 = (~(HRDATAD[29] & Mc47x6)); +assign Eeciy6 = (~(Lpryx6 & Qrq7x6)); +assign Oio7v6 = (~(Ycdiy6 & Gddiy6)); +assign Gddiy6 = (~(Jexmz6[30] & K94iw6)); +assign Ycdiy6 = (Oddiy6 & Wddiy6); +assign Wddiy6 = (~(Lloyx6 & Tv67x6)); +assign Tv67x6 = (~(Eediy6 & Mediy6)); +assign Mediy6 = (Uediy6 & Cfdiy6); +assign Cfdiy6 = (~(Kfdiy6 & Sfdiy6)); +assign Uediy6 = (~(Zmoyx6 & Agdiy6)); +assign Eediy6 = (Igdiy6 & Qgdiy6); +assign Qgdiy6 = (~(HRDATAS[30] & Ad47x6)); +assign Igdiy6 = (~(HRDATAD[30] & Mc47x6)); +assign Oddiy6 = (~(Lpryx6 & Vxq7x6)); +assign Hio7v6 = (~(Ygdiy6 & Ghdiy6)); +assign Ghdiy6 = (~(Jexmz6[31] & K94iw6)); +assign Ygdiy6 = (Ohdiy6 & Whdiy6); +assign Whdiy6 = (~(Lpryx6 & Ht1ov6)); +assign Lpryx6 = (~(K94iw6 | Cjh7v6)); +assign Ohdiy6 = (~(Lloyx6 & Kn67x6)); +assign Kn67x6 = (~(Eidiy6 & Midiy6)); +assign Midiy6 = (Uidiy6 & Cjdiy6); +assign Cjdiy6 = (Bqoyx6 | Dbwnv6); +assign Dbwnv6 = (Kjdiy6 & Sjdiy6); +assign Sjdiy6 = (Akdiy6 & Ikdiy6); +assign Ikdiy6 = (Qkdiy6 & Ykdiy6); +assign Ykdiy6 = (~(Gldiy6 & U2jhy6)); +assign Gldiy6 = (Oldiy6 & K3jhy6); +assign Oldiy6 = (~(Wldiy6 & Emdiy6)); +assign Emdiy6 = (Mmdiy6 & Umdiy6); +assign Umdiy6 = (Cndiy6 & Kndiy6); +assign Kndiy6 = (~(Hyj7z6[3] & Jadiw6)); +assign Cndiy6 = (Ldsyx6 | Sr87z6); +assign Ldsyx6 = (!Hyj7z6[2]); +assign Mmdiy6 = (Sndiy6 & Aodiy6); +assign Aodiy6 = (Tlpyx6 | Yk87z6); +assign Tlpyx6 = (!Hyj7z6[1]); +assign Sndiy6 = (Llpyx6 | Ee87z6); +assign Llpyx6 = (!Hyj7z6[5]); +assign Wldiy6 = (Iodiy6 & Qodiy6); +assign Qodiy6 = (Yodiy6 & Gpdiy6); +assign Gpdiy6 = (Ddsyx6 | K787z6); +assign Ddsyx6 = (!Hyj7z6[6]); +assign Yodiy6 = (C09iw6 | Iw77z6); +assign C09iw6 = (!Hyj7z6[7]); +assign Iodiy6 = (Opdiy6 & Wpdiy6); +assign Wpdiy6 = (~(Hyj7z6[0] & Dfk7z6[31])); +assign Opdiy6 = (~(Hyj7z6[4] & Jkl7z6[31])); +assign Qkdiy6 = (~(Klo7z6[1] & Eqdiy6)); +assign Eqdiy6 = (~(Mqdiy6 & Uqdiy6)); +assign Uqdiy6 = (Crdiy6 & Krdiy6); +assign Krdiy6 = (~(B2q7z6[31] & Fcqyx6)); +assign Crdiy6 = (Srdiy6 & Asdiy6); +assign Asdiy6 = (~(Bqp7z6[31] & D5qyx6)); +assign Srdiy6 = (~(E6p7z6[31] & L9qyx6)); +assign Mqdiy6 = (Isdiy6 & Qsdiy6); +assign Qsdiy6 = (~(Mkp7z6[31] & Tdqyx6)); +assign Isdiy6 = (~(Hfqyx6 & U9p7z6[31])); +assign Akdiy6 = (Ysdiy6 & Gtdiy6); +assign Gtdiy6 = (~(Klo7z6[2] & Otdiy6)); +assign Otdiy6 = (~(Wtdiy6 & Eudiy6)); +assign Eudiy6 = (Mudiy6 & Uudiy6); +assign Uudiy6 = (~(Dto7z6[1] & Y7kiw6)); +assign Mudiy6 = (Cvdiy6 & Kvdiy6); +assign Kvdiy6 = (~(Wvo7z6[1] & K7kiw6)); +assign Cvdiy6 = (~(Pyo7z6[1] & W6kiw6)); +assign Wtdiy6 = (Svdiy6 & Awdiy6); +assign Awdiy6 = (~(I1p7z6[1] & I6kiw6)); +assign Svdiy6 = (Iwdiy6 & Qwdiy6); +assign Qwdiy6 = (~(Cu1ft6 & U5kiw6)); +assign Iwdiy6 = (~(Tx1ft6 & G5kiw6)); +assign Ysdiy6 = (~(Cr6iy6 & Um77z6)); +assign Kjdiy6 = (Ywdiy6 & Yg7iy6); +assign Yg7iy6 = (Um9iy6 & Gxdiy6); +assign Gxdiy6 = (~(Ys0iy6 & D1pyx6)); +assign Ys0iy6 = (P3xyx6 & J2xyx6); +assign Um9iy6 = (Oxdiy6 & Qg3iy6); +assign Oxdiy6 = (~(Cr6iy6 & A9i8v6)); +assign Cr6iy6 = (Klo7z6[1] & T9tyx6); +assign Ywdiy6 = (Wxdiy6 & Eydiy6); +assign Eydiy6 = (~(Mydiy6 & Ngqyx6)); +assign Mydiy6 = (~(Uydiy6 & Czdiy6)); +assign Czdiy6 = (Kzdiy6 & Szdiy6); +assign Szdiy6 = (A0eiy6 & I0eiy6); +assign I0eiy6 = (Q0eiy6 & Y0eiy6); +assign Y0eiy6 = (G1eiy6 & Ywwhy6); +assign G1eiy6 = (~(Hjsyx6 & O1eiy6)); +assign O1eiy6 = (~(W1eiy6 & E2eiy6)); +assign E2eiy6 = (~(Nksyx6 & Gaj7z6[2])); +assign W1eiy6 = (~(Byi7z6[31] & Zisyx6)); +assign Q0eiy6 = (M2eiy6 & U2eiy6); +assign U2eiy6 = (~(Hdcet6 & Dxqyx6)); +assign Dxqyx6 = (C3eiy6 & Lpyyx6); +assign M2eiy6 = (~(Wui7z6[31] & Lxqyx6)); +assign A0eiy6 = (K3eiy6 & S3eiy6); +assign S3eiy6 = (A4eiy6 & I4eiy6); +assign I4eiy6 = (~(Dri7z6[31] & Fwqyx6)); +assign A4eiy6 = (~(Bwi7z6[31] & Hzqyx6)); +assign K3eiy6 = (Q4eiy6 & Y4eiy6); +assign Y4eiy6 = (~(Ba0zx6 & T7j7z6[2])); +assign Q4eiy6 = (~(Svkhy6 & Pnb7z6[31])); +assign Kzdiy6 = (G5eiy6 & O5eiy6); +assign O5eiy6 = (W5eiy6 & E6eiy6); +assign E6eiy6 = (M6eiy6 & U6eiy6); +assign U6eiy6 = (~(D90zx6 & Lgj7z6[191])); +assign M6eiy6 = (~(Za0zx6 & Lgj7z6[179])); +assign W5eiy6 = (C7eiy6 & K7eiy6); +assign K7eiy6 = (~(Hb0zx6 & Lgj7z6[167])); +assign C7eiy6 = (~(Vc0zx6 & Lgj7z6[155])); +assign G5eiy6 = (S7eiy6 & A8eiy6); +assign A8eiy6 = (I8eiy6 & Q8eiy6); +assign Q8eiy6 = (~(Dd0zx6 & Lgj7z6[143])); +assign I8eiy6 = (~(Be0zx6 & Lgj7z6[131])); +assign S7eiy6 = (Y8eiy6 & G9eiy6); +assign G9eiy6 = (~(Je0zx6 & Lgj7z6[119])); +assign Y8eiy6 = (~(Bi0zx6 & Lgj7z6[107])); +assign Uydiy6 = (O9eiy6 & W9eiy6); +assign W9eiy6 = (Eaeiy6 & Maeiy6); +assign Maeiy6 = (Uaeiy6 & Cbeiy6); +assign Cbeiy6 = (Kbeiy6 & Sbeiy6); +assign Sbeiy6 = (~(Ji0zx6 & Lgj7z6[95])); +assign Kbeiy6 = (~(Dh0zx6 & Lgj7z6[83])); +assign Uaeiy6 = (Aceiy6 & Iceiy6); +assign Iceiy6 = (~(Hj0zx6 & Lgj7z6[71])); +assign Aceiy6 = (~(Pj0zx6 & Lgj7z6[59])); +assign Eaeiy6 = (Qceiy6 & Yceiy6); +assign Yceiy6 = (Gdeiy6 & Odeiy6); +assign Odeiy6 = (~(Dl0zx6 & Lgj7z6[47])); +assign Gdeiy6 = (~(Ll0zx6 & Lgj7z6[35])); +assign Qceiy6 = (Wdeiy6 & Eeeiy6); +assign Eeeiy6 = (~(Jm0zx6 & Lgj7z6[23])); +assign Wdeiy6 = (~(Rm0zx6 & Lgj7z6[11])); +assign O9eiy6 = (Meeiy6 & Ueeiy6); +assign Ueeiy6 = (Cfeiy6 & Kfeiy6); +assign Kfeiy6 = (Sfeiy6 & Ageiy6); +assign Ageiy6 = (~(Pzqyx6 & G5j7z6[63])); +assign Sfeiy6 = (~(Jyqyx6 & G5j7z6[31])); +assign Cfeiy6 = (Igeiy6 & Qgeiy6); +assign Qgeiy6 = (~(B2ryx6 & M6j7z6[63])); +assign Igeiy6 = (~(J2ryx6 & M6j7z6[31])); +assign Meeiy6 = (Ygeiy6 & Gheiy6); +assign Gheiy6 = (~(STCALIB[25] & F4ryx6)); +assign Ygeiy6 = (Oheiy6 & Wheiy6); +assign Wheiy6 = (~(D1ryx6 & Ohj7z6[63])); +assign Oheiy6 = (~(X3ryx6 & Ohj7z6[31])); +assign Wxdiy6 = (~(Ies7z6[31] & Tltyx6)); +assign Bqoyx6 = (!Kfdiy6); +assign Uidiy6 = (~(Zmoyx6 & Kbwnv6)); +assign Eidiy6 = (Eieiy6 & Mieiy6); +assign Mieiy6 = (~(HRDATAS[31] & Ad47x6)); +assign Eieiy6 = (~(HRDATAD[31] & Mc47x6)); +assign Lloyx6 = (Cjh7v6 & Ob4iw6); +assign Aio7v6 = (~(Uieiy6 & Cjeiy6)); +assign Cjeiy6 = (~(Fcwnv6 & Zqyhw6)); +assign Zqyhw6 = (JTAGNSW ? Aixmz6[30] : Ulxmz6[30]); +assign Fcwnv6 = (Dbymz6[0] & Fvd7x6); +assign Uieiy6 = (Kjeiy6 & Sjeiy6); +assign Sjeiy6 = (~(G9wnv6 & Akeiy6)); +assign Akeiy6 = (~(Ikeiy6 & Qkeiy6)); +assign Qkeiy6 = (Ykeiy6 & Gleiy6); +assign Gleiy6 = (~(Dtm7z6[2] & Sfdiy6)); +assign Sfdiy6 = (~(Oleiy6 & Wleiy6)); +assign Wleiy6 = (Emeiy6 & Mmeiy6); +assign Mmeiy6 = (~(Klo7z6[1] & Umeiy6)); +assign Umeiy6 = (~(Cneiy6 & Kneiy6)); +assign Kneiy6 = (Sneiy6 & Aoeiy6); +assign Aoeiy6 = (Ravyx6 & Ioeiy6); +assign Ioeiy6 = (!B6qyx6); +assign Ravyx6 = (~(A9i8v6 & T9tyx6)); +assign Sneiy6 = (Qoeiy6 & Yoeiy6); +assign Yoeiy6 = (~(T9tyx6 & Cn77z6)); +assign T9tyx6 = (~(Cflhy6 | Kflhy6)); +assign Cflhy6 = (~(Gpeiy6 & Hbvyx6)); +assign Qoeiy6 = (~(Bqp7z6[30] & D5qyx6)); +assign Cneiy6 = (Opeiy6 & Wpeiy6); +assign Wpeiy6 = (Eqeiy6 & Mqeiy6); +assign Mqeiy6 = (~(E6p7z6[30] & L9qyx6)); +assign Eqeiy6 = (~(B2q7z6[30] & Fcqyx6)); +assign Opeiy6 = (Uqeiy6 & Creiy6); +assign Creiy6 = (~(Mkp7z6[30] & Tdqyx6)); +assign Uqeiy6 = (~(Hfqyx6 & U9p7z6[30])); +assign Emeiy6 = (Kreiy6 & Sreiy6); +assign Sreiy6 = (~(Aseiy6 & U2jhy6)); +assign U2jhy6 = (Ptbiw6 & Klo7z6[5]); +assign Aseiy6 = (Iseiy6 & K3jhy6); +assign K3jhy6 = (T9uyx6 | Nsoyx6); +assign Nsoyx6 = (~(Vociw6 | Qseiy6)); +assign Qseiy6 = (!Rmget6); +assign Vociw6 = (T59iw6 | Dtj7z6[2]); +assign T9uyx6 = (Ptbiw6 & Rmget6); +assign Ptbiw6 = (!Rediw6); +assign Rediw6 = (~(Dtj7z6[2] & Yseiy6)); +assign Yseiy6 = (~(T59iw6 ^ Q9eiw6)); +assign Q9eiw6 = (Dtj7z6[4] & Dtj7z6[3]); +assign T59iw6 = (!Dtj7z6[5]); +assign Iseiy6 = (~(Gteiy6 & Oteiy6)); +assign Oteiy6 = (Wteiy6 & Eueiy6); +assign Eueiy6 = (Mueiy6 & Uueiy6); +assign Uueiy6 = (~(Hyj7z6[3] & B6diw6)); +assign Mueiy6 = (~(Hyj7z6[2] & U5diw6)); +assign Wteiy6 = (Cveiy6 & Kveiy6); +assign Kveiy6 = (~(Hyj7z6[1] & N5diw6)); +assign Cveiy6 = (~(Hyj7z6[5] & I6diw6)); +assign Gteiy6 = (Sveiy6 & Aweiy6); +assign Aweiy6 = (Iweiy6 & Qweiy6); +assign Qweiy6 = (~(Hyj7z6[6] & P6diw6)); +assign Iweiy6 = (~(Hyj7z6[7] & W6diw6)); +assign Sveiy6 = (Yweiy6 & Gxeiy6); +assign Gxeiy6 = (~(Hyj7z6[0] & Dfk7z6[30])); +assign Yweiy6 = (~(Hyj7z6[4] & Jkl7z6[30])); +assign Kreiy6 = (~(Klo7z6[2] & Oxeiy6)); +assign Oxeiy6 = (~(Wxeiy6 & Eyeiy6)); +assign Eyeiy6 = (Myeiy6 & Uyeiy6); +assign Uyeiy6 = (~(Dto7z6[0] & Y7kiw6)); +assign Y7kiw6 = (Czeiy6 & Z4p7z6[0]); +assign Czeiy6 = (!Kzeiy6); +assign Myeiy6 = (Szeiy6 & A0fiy6); +assign A0fiy6 = (~(Wvo7z6[0] & K7kiw6)); +assign K7kiw6 = (~(Kzeiy6 | Z4p7z6[0])); +assign Kzeiy6 = (~(I0fiy6 & Q0fiy6)); +assign I0fiy6 = (Z4p7z6[2] & Z4p7z6[1]); +assign Szeiy6 = (~(Pyo7z6[0] & W6kiw6)); +assign W6kiw6 = (Y0fiy6 & Pfuyx6); +assign Y0fiy6 = (Q0fiy6 & Z4p7z6[0]); +assign Wxeiy6 = (G1fiy6 & O1fiy6); +assign O1fiy6 = (~(I1p7z6[0] & I6kiw6)); +assign I6kiw6 = (W1fiy6 & Pfuyx6); +assign Pfuyx6 = (~(R2syx6 | Z4p7z6[1])); +assign W1fiy6 = (Q0fiy6 & Hfuyx6); +assign G1fiy6 = (E2fiy6 & M2fiy6); +assign M2fiy6 = (~(Ws1ft6 & U5kiw6)); +assign U5kiw6 = (U2fiy6 & A0phy6); +assign U2fiy6 = (Z4p7z6[1] & Z4p7z6[0]); +assign E2fiy6 = (~(Nw1ft6 & G5kiw6)); +assign G5kiw6 = (C3fiy6 & A0phy6); +assign A0phy6 = (Q0fiy6 & R2syx6); +assign R2syx6 = (!Z4p7z6[2]); +assign Q0fiy6 = (K3fiy6 & Z4p7z6[4]); +assign K3fiy6 = (~(Z4p7z6[3] | Z4p7z6[5])); +assign C3fiy6 = (Z4p7z6[1] & Hfuyx6); +assign Hfuyx6 = (!Z4p7z6[0]); +assign Oleiy6 = (S3fiy6 & O53iy6); +assign O53iy6 = (Qg3iy6 & A4fiy6); +assign A4fiy6 = (~(C7xhy6 & D1pyx6)); +assign D1pyx6 = (~(Otshy6 | I4fiy6)); +assign C7xhy6 = (W5qhy6 & J2xyx6); +assign Qg3iy6 = (~(F0pyx6 & Q4fiy6)); +assign Q4fiy6 = (~(Pntyx6 & Xntyx6)); +assign Xntyx6 = (Kr0iy6 & Y4fiy6); +assign Y4fiy6 = (~(G5fiy6 & Ti2nz6[1])); +assign G5fiy6 = (~(O5fiy6 | Ti2nz6[2])); +assign Kr0iy6 = (S7xhy6 | Z6wyx6); +assign Pntyx6 = (W5fiy6 & E6fiy6); +assign E6fiy6 = (Q0mhy6 | O5fiy6); +assign Q0mhy6 = (!O1mhy6); +assign O1mhy6 = (R2uyx6 & Bmvyx6); +assign Bmvyx6 = (!Ti2nz6[2]); +assign W5fiy6 = (Gtshy6 & Cr0iy6); +assign Cr0iy6 = (O5fiy6 | Z6wyx6); +assign Z6wyx6 = (~(Ti2nz6[2] & R2uyx6)); +assign R2uyx6 = (!Ti2nz6[1]); +assign O5fiy6 = (~(M6fiy6 & U6fiy6)); +assign M6fiy6 = (Ti2nz6[4] & Ti2nz6[0]); +assign Gtshy6 = (S7xhy6 | Ti2nz6[2]); +assign S7xhy6 = (~(C7fiy6 & U6fiy6)); +assign U6fiy6 = (~(Ti2nz6[3] | Ti2nz6[5])); +assign C7fiy6 = (Ti2nz6[4] & B2uyx6); +assign B2uyx6 = (!Ti2nz6[0]); +assign F0pyx6 = (~(Oduhy6 | I4fiy6)); +assign S3fiy6 = (K7fiy6 & S7fiy6); +assign S7fiy6 = (~(A8fiy6 & Ngqyx6)); +assign A8fiy6 = (~(I8fiy6 & Q8fiy6)); +assign Q8fiy6 = (Y8fiy6 & G9fiy6); +assign G9fiy6 = (O9fiy6 & W9fiy6); +assign W9fiy6 = (Eafiy6 & Ea0iy6); +assign Ea0iy6 = (U2vhy6 & Ywwhy6); +assign Ywwhy6 = (~(C3eiy6 & Hjsyx6)); +assign U2vhy6 = (~(C3eiy6 & Voqyx6)); +assign C3eiy6 = (Dlqyx6 & Wtciy6); +assign Eafiy6 = (Mafiy6 & Uafiy6); +assign Uafiy6 = (~(Hjsyx6 & Cbfiy6)); +assign Cbfiy6 = (~(Kbfiy6 & Sbfiy6)); +assign Sbfiy6 = (~(Nksyx6 & Gaj7z6[1])); +assign Nksyx6 = (!Knohy6); +assign Knohy6 = (~(Acfiy6 & Wtciy6)); +assign Kbfiy6 = (~(Byi7z6[30] & Zisyx6)); +assign Mafiy6 = (~(Wui7z6[30] & Lxqyx6)); +assign Lxqyx6 = (Xryyx6 & Icfiy6); +assign Icfiy6 = (~(Tlqyx6 & Zyuyx6)); +assign O9fiy6 = (Qcfiy6 & Ycfiy6); +assign Ycfiy6 = (Gdfiy6 & Odfiy6); +assign Odfiy6 = (~(Dri7z6[30] & Fwqyx6)); +assign Fwqyx6 = (~(E28iy6 | Zyuyx6)); +assign E28iy6 = (~(Wdfiy6 & Qw2iy6)); +assign Qw2iy6 = (Y08iy6 & Koaiw6); +assign Y08iy6 = (Wtciy6 & Toi7z6[6]); +assign Wdfiy6 = (Toi7z6[5] & Toi7z6[7]); +assign Gdfiy6 = (~(Bwi7z6[30] & Hzqyx6)); +assign Hzqyx6 = (Xryyx6 & Hjsyx6); +assign Xryyx6 = (Eefiy6 & Mefiy6); +assign Eefiy6 = (Koaiw6 & Wtciy6); +assign Qcfiy6 = (Uefiy6 & Cffiy6); +assign Cffiy6 = (~(Ba0zx6 & T7j7z6[1])); +assign Ba0zx6 = (~(Ua0iy6 | Hzuyx6)); +assign Ua0iy6 = (!Zisyx6); +assign Zisyx6 = (Kffiy6 & Wtciy6); +assign Uefiy6 = (~(Svkhy6 & Pnb7z6[30])); +assign Svkhy6 = (Sffiy6 & Dlqyx6); +assign Sffiy6 = (Wtciy6 & Jmqyx6); +assign Wtciy6 = (Agfiy6 & Igfiy6); +assign Agfiy6 = (Qgfiy6 & Ygfiy6); +assign Y8fiy6 = (Ghfiy6 & Ohfiy6); +assign Ohfiy6 = (Whfiy6 & Eifiy6); +assign Eifiy6 = (Mifiy6 & Uifiy6); +assign Uifiy6 = (~(D90zx6 & Lgj7z6[190])); +assign D90zx6 = (~(Cjfiy6 | I08iy6)); +assign Mifiy6 = (~(Za0zx6 & Lgj7z6[178])); +assign Za0zx6 = (Kjfiy6 & Jmqyx6); +assign Kjfiy6 = (!Cjfiy6); +assign Whfiy6 = (Sjfiy6 & Akfiy6); +assign Akfiy6 = (~(Hb0zx6 & Lgj7z6[166])); +assign Hb0zx6 = (~(Cjfiy6 | Tlqyx6)); +assign Sjfiy6 = (~(Vc0zx6 & Lgj7z6[154])); +assign Vc0zx6 = (~(Cjfiy6 | Hzuyx6)); +assign Cjfiy6 = (~(Ikfiy6 & Mefiy6)); +assign Mefiy6 = (Qkfiy6 & Toi7z6[5]); +assign Ikfiy6 = (Ykfiy6 & Koaiw6); +assign Ghfiy6 = (Glfiy6 & Olfiy6); +assign Olfiy6 = (Wlfiy6 & Emfiy6); +assign Emfiy6 = (~(Dd0zx6 & Lgj7z6[142])); +assign Dd0zx6 = (~(Mmfiy6 | I08iy6)); +assign Wlfiy6 = (~(Be0zx6 & Lgj7z6[130])); +assign Be0zx6 = (~(Mmfiy6 | Zyuyx6)); +assign Zyuyx6 = (!Jmqyx6); +assign Glfiy6 = (Umfiy6 & Cnfiy6); +assign Cnfiy6 = (~(Je0zx6 & Lgj7z6[118])); +assign Je0zx6 = (~(Mmfiy6 | Tlqyx6)); +assign Umfiy6 = (~(Bi0zx6 & Lgj7z6[106])); +assign Bi0zx6 = (~(Mmfiy6 | Hzuyx6)); +assign Mmfiy6 = (~(Ykfiy6 & Kffiy6)); +assign Kffiy6 = (Knfiy6 & Qkfiy6); +assign Knfiy6 = (Toi7z6[5] & Tpyyx6); +assign I8fiy6 = (Snfiy6 & Aofiy6); +assign Aofiy6 = (Iofiy6 & Qofiy6); +assign Qofiy6 = (Yofiy6 & Gpfiy6); +assign Gpfiy6 = (Opfiy6 & Wpfiy6); +assign Wpfiy6 = (~(Ji0zx6 & Lgj7z6[94])); +assign Ji0zx6 = (~(Eqfiy6 | I08iy6)); +assign Opfiy6 = (~(Dh0zx6 & Lgj7z6[82])); +assign Dh0zx6 = (Mqfiy6 & Jmqyx6); +assign Yofiy6 = (Uqfiy6 & Crfiy6); +assign Crfiy6 = (~(Hj0zx6 & Lgj7z6[70])); +assign Hj0zx6 = (~(Eqfiy6 | Tlqyx6)); +assign Uqfiy6 = (~(Pj0zx6 & Lgj7z6[58])); +assign Pj0zx6 = (~(Eqfiy6 | Hzuyx6)); +assign Hzuyx6 = (!Voqyx6); +assign Eqfiy6 = (!Mqfiy6); +assign Mqfiy6 = (Ykfiy6 & Acfiy6); +assign Iofiy6 = (Krfiy6 & Srfiy6); +assign Srfiy6 = (Asfiy6 & Isfiy6); +assign Isfiy6 = (~(Dl0zx6 & Lgj7z6[46])); +assign Dl0zx6 = (Qsfiy6 & Ykfiy6); +assign Qsfiy6 = (Hjsyx6 & Dlqyx6); +assign Asfiy6 = (~(Ll0zx6 & Lgj7z6[34])); +assign Ll0zx6 = (Xzuyx6 & Ykfiy6); +assign Xzuyx6 = (Dlqyx6 & Jmqyx6); +assign Jmqyx6 = (Ysfiy6 & Pb8iw6); +assign Krfiy6 = (Gtfiy6 & Otfiy6); +assign Otfiy6 = (~(Jm0zx6 & Lgj7z6[22])); +assign Jm0zx6 = (Wtfiy6 & Ykfiy6); +assign Wtfiy6 = (Lpyyx6 & Dlqyx6); +assign Lpyyx6 = (!Tlqyx6); +assign Gtfiy6 = (~(Rm0zx6 & Lgj7z6[10])); +assign Rm0zx6 = (Eufiy6 & Ykfiy6); +assign Ykfiy6 = (~(Mufiy6 | Uufiy6)); +assign Mufiy6 = (Je2iw6 | Cvfiy6); +assign Je2iw6 = (!Lxbet6); +assign Eufiy6 = (Voqyx6 & Dlqyx6); +assign Snfiy6 = (Kvfiy6 & Svfiy6); +assign Svfiy6 = (Awfiy6 & Iwfiy6); +assign Iwfiy6 = (Qwfiy6 & Ywfiy6); +assign Ywfiy6 = (~(Pzqyx6 & G5j7z6[62])); +assign Pzqyx6 = (~(Gxfiy6 | Tlqyx6)); +assign Qwfiy6 = (~(Jyqyx6 & G5j7z6[30])); +assign Jyqyx6 = (Oxfiy6 & Voqyx6); +assign Oxfiy6 = (!Gxfiy6); +assign Gxfiy6 = (~(Wxfiy6 & Eyfiy6)); +assign Eyfiy6 = (Myfiy6 & Igfiy6); +assign Wxfiy6 = (Dlqyx6 & Ealhy6); +assign Dlqyx6 = (Uyfiy6 & Qkfiy6); +assign Uyfiy6 = (Tpyyx6 & E32nv6); +assign Awfiy6 = (Czfiy6 & Kzfiy6); +assign Kzfiy6 = (~(B2ryx6 & M6j7z6[62])); +assign B2ryx6 = (~(Szfiy6 | Tlqyx6)); +assign Czfiy6 = (~(J2ryx6 & M6j7z6[30])); +assign J2ryx6 = (A0giy6 & Voqyx6); +assign A0giy6 = (!Szfiy6); +assign Szfiy6 = (~(I0giy6 & Q0giy6)); +assign Q0giy6 = (Tpyyx6 & Malhy6); +assign I0giy6 = (~(Pdm7x6 | Ygfiy6)); +assign Kvfiy6 = (Y0giy6 & G1giy6); +assign G1giy6 = (~(STCALIB[24] & F4ryx6)); +assign F4ryx6 = (~(Lxuyx6 | I08iy6)); +assign I08iy6 = (!Hjsyx6); +assign Hjsyx6 = (Ysfiy6 & Toi7z6[2]); +assign Lxuyx6 = (!Noqyx6); +assign Noqyx6 = (Acfiy6 & Vkqyx6); +assign Vkqyx6 = (~(Uufiy6 | Toi7z6[10])); +assign Uufiy6 = (~(O1giy6 & Malhy6)); +assign O1giy6 = (~(Ealhy6 | Toi7z6[11])); +assign Acfiy6 = (W1giy6 & Koaiw6); +assign W1giy6 = (Qkfiy6 & E32nv6); +assign Y0giy6 = (E2giy6 & M2giy6); +assign M2giy6 = (~(D1ryx6 & Ohj7z6[62])); +assign D1ryx6 = (~(U2giy6 | Tlqyx6)); +assign Tlqyx6 = (~(C3giy6 & Lxbet6)); +assign C3giy6 = (Toi7z6[2] & K3giy6); +assign E2giy6 = (~(X3ryx6 & Ohj7z6[30])); +assign X3ryx6 = (S3giy6 & Voqyx6); +assign Voqyx6 = (K3giy6 & Pb8iw6); +assign K3giy6 = (!Ysfiy6); +assign Ysfiy6 = (Lxbet6 & Toi7z6[3]); +assign S3giy6 = (!U2giy6); +assign U2giy6 = (~(A4giy6 & I4giy6)); +assign I4giy6 = (Tpyyx6 & Ygfiy6); +assign Ygfiy6 = (!Ealhy6); +assign Ealhy6 = (Lxbet6 & Toi7z6[9]); +assign Tpyyx6 = (!Koaiw6); +assign Koaiw6 = (Lxbet6 & Toi7z6[4]); +assign A4giy6 = (~(Pdm7x6 | Malhy6)); +assign Malhy6 = (!Igfiy6); +assign Igfiy6 = (Lxbet6 & Toi7z6[8]); +assign Pdm7x6 = (~(Myfiy6 & Q4giy6)); +assign Q4giy6 = (~(Toi7z6[5] | Toi7z6[6])); +assign Myfiy6 = (~(Toi7z6[10] | Toi7z6[11])); +assign K7fiy6 = (~(Ies7z6[30] & Tltyx6)); +assign Tltyx6 = (Y4giy6 & Klo7z6[0]); +assign Y4giy6 = (Hfryx6 & Pfryx6); +assign Ykeiy6 = (~(Dtm7z6[3] & Agdiy6)); +assign Ikeiy6 = (G5giy6 & O5giy6); +assign O5giy6 = (~(Dtm7z6[0] & HRDATAD[30])); +assign G5giy6 = (~(Dtm7z6[1] & HRDATAS[30])); +assign Kjeiy6 = (~(L8wnv6 & Itb7z6[30])); +assign L8wnv6 = (~(Fvd7x6 | G9wnv6)); +assign G9wnv6 = (Ahe7x6 & W5giy6); +assign W5giy6 = (~(Ohe7x6 & E6giy6)); +assign E6giy6 = (~(Ugo7z6[1] & Ncf7x6)); +assign Ncf7x6 = (M6giy6 ? Ugo7z6[0] : Jie7x6); +assign Ahe7x6 = (~(Aglov6 | L3bdt6)); +assign Fvd7x6 = (U6giy6 & L3bdt6); +assign U6giy6 = (~(T5wnv6 | A6wnv6)); +assign T5wnv6 = (~(C7giy6 & Q7wnv6)); +assign C7giy6 = (Dx1iw6 | K7giy6); +assign Dx1iw6 = (~(S7giy6 & A8giy6)); +assign A8giy6 = (~(HREADYD & Vm1ov6)); +assign S7giy6 = (I8giy6 & Q8giy6); +assign Q8giy6 = (~(Y8giy6 & Ee3iw6)); +assign Y8giy6 = (M52iw6 & Vd2iw6); +assign I8giy6 = (~(Fk9ov6 & HREADYS)); +assign Mho7v6 = (!Yp5xx6); +assign Yp5xx6 = (G9giy6 & O9giy6); +assign O9giy6 = (~(J5exx6 & Bgt8v6)); +assign J5exx6 = (W9giy6 & W26xx6); +assign W26xx6 = (!T51nz6[2]); +assign G9giy6 = (T51nz6[2] ? Magiy6 : Eagiy6); +assign Magiy6 = (~(Bgt8v6 ^ W9giy6)); +assign Eagiy6 = (Bgt8v6 | W9giy6); +assign W9giy6 = (!T3exx6); +assign T3exx6 = (~(Uagiy6 & Cbgiy6)); +assign Cbgiy6 = (~(Ei9xx6 & Kbgiy6)); +assign Kbgiy6 = (~(Zi9xx6 & P26xx6)); +assign P26xx6 = (!T51nz6[1]); +assign Zi9xx6 = (!Let8v6); +assign Ei9xx6 = (T51nz6[0] & Wsc7v6); +assign Wsc7v6 = (~(Sbgiy6 & Acgiy6)); +assign Acgiy6 = (Icgiy6 & Kkaxx6); +assign Kkaxx6 = (~(Mt9xx6 & Ztb7v6)); +assign Mt9xx6 = (!Zp9xx6); +assign Icgiy6 = (~(Qcgiy6 & Ycgiy6)); +assign Ycgiy6 = (~(Gdgiy6 & Oiexx6)); +assign Oiexx6 = (!Gnzmz6[39]); +assign Gdgiy6 = (Odgiy6 | Wdgiy6); +assign Wdgiy6 = (Eegiy6 & Lrexx6); +assign Sbgiy6 = (Megiy6 & Uegiy6); +assign Uegiy6 = (~(Cfgiy6 & Dl9xx6)); +assign Cfgiy6 = (~(Kfgiy6 | Sfgiy6)); +assign Kfgiy6 = (Pssnv6 & Aggiy6); +assign Pssnv6 = (!B0snv6); +assign Megiy6 = (B0snv6 ? Zp9xx6 : Cuaxx6); +assign Uagiy6 = (~(T51nz6[1] & Let8v6)); +assign Let8v6 = (~(Iggiy6 & Qggiy6)); +assign Qggiy6 = (Yggiy6 & Ghgiy6); +assign Ghgiy6 = (~(Ohgiy6 & Whgiy6)); +assign Whgiy6 = (Eigiy6 | Sfgiy6); +assign Yggiy6 = (~(Fsaxx6 & B0snv6)); +assign Fsaxx6 = (!Cuaxx6); +assign Cuaxx6 = (J4snv6 | Migiy6); +assign Iggiy6 = (Uigiy6 & Cjgiy6); +assign Cjgiy6 = (~(Qcgiy6 & Kjgiy6)); +assign Kjgiy6 = (~(Sjgiy6 ^ Odgiy6)); +assign Bgt8v6 = (Akgiy6 | Ikgiy6); +assign Ikgiy6 = (C5exx6 ? Ohgiy6 : V4exx6); +assign C5exx6 = (~(Qkgiy6 & Ykgiy6)); +assign Ykgiy6 = (~(Glgiy6 & Yodxx6)); +assign Qkgiy6 = (Olgiy6 & Wlgiy6); +assign Ohgiy6 = (Dl9xx6 & Emgiy6); +assign Emgiy6 = (~(Sfgiy6 & Eigiy6)); +assign V4exx6 = (Mmgiy6 & Dl9xx6); +assign Dl9xx6 = (~(Migiy6 | H2tnv6)); +assign H2tnv6 = (!J4snv6); +assign J4snv6 = (~(Ztb7v6 & Fgzmz6[0])); +assign Migiy6 = (~(Umgiy6 & Cngiy6)); +assign Cngiy6 = (Kngiy6 & Uzrnv6); +assign Uzrnv6 = (!Fgzmz6[1]); +assign Umgiy6 = (~(Lp9xx6 | Hbb7v6)); +assign Lp9xx6 = (!I0snv6); +assign Mmgiy6 = (Sfgiy6 & Eigiy6); +assign Eigiy6 = (~(Sngiy6 & Aogiy6)); +assign Aogiy6 = (~(Iogiy6 & Y6axx6)); +assign Iogiy6 = (Taexx6 & Wlgiy6); +assign Sngiy6 = (Qogiy6 & Jqexx6); +assign Jqexx6 = (!Nfdxx6); +assign Nfdxx6 = (~(Toexx6 | Yodxx6)); +assign Qogiy6 = (~(Yogiy6 & Ynexx6)); +assign Yogiy6 = (Yodxx6 & Gpgiy6); +assign Gpgiy6 = (~(Wlgiy6 & Lmcxx6)); +assign Wlgiy6 = (!Mhexx6); +assign Sfgiy6 = (Opgiy6 & B0snv6); +assign B0snv6 = (~(Wpgiy6 & Eqgiy6)); +assign Eqgiy6 = (~(Mqgiy6 & Uqgiy6)); +assign Uqgiy6 = (~(Crgiy6 & Uctnv6)); +assign Crgiy6 = (Sgbxx6 & Idtnv6); +assign Mqgiy6 = (~(Krgiy6 & Srgiy6)); +assign Srgiy6 = (Asgiy6 & Isgiy6); +assign Isgiy6 = (Qsgiy6 & Izsnv6); +assign Izsnv6 = (!Bba7v6); +assign Qsgiy6 = (~(Mbc7v6 | I9b7v6)); +assign Asgiy6 = (Jjrnv6 & A04xx6); +assign Jjrnv6 = (~(A377v6 & Wnqnv6)); +assign Wnqnv6 = (Ipymz6[0] & Fpqnv6); +assign Fpqnv6 = (!Ipymz6[1]); +assign Krgiy6 = (Ysgiy6 & Gtgiy6); +assign Gtgiy6 = (Otgiy6 & Fgzmz6[0]); +assign Otgiy6 = (Wtgiy6 & Eugiy6); +assign Eugiy6 = (~(Mugiy6 & Uugiy6)); +assign Uugiy6 = (Lczmz6[1] & Cvgiy6); +assign Cvgiy6 = (~(Idtnv6 & Detnv6)); +assign Mugiy6 = (Lczmz6[3] & Lczmz6[2]); +assign Wtgiy6 = (~(W9c7v6 & H8c7v6)); +assign Ysgiy6 = (Kvgiy6 & Tz3xx6); +assign Kvgiy6 = (Qxb7v6 ? Awgiy6 : Svgiy6); +assign Awgiy6 = (~(Iwgiy6 & Qwgiy6)); +assign Iwgiy6 = (Zvaxx6 & Kngiy6); +assign Zvaxx6 = (!Ro87v6); +assign Svgiy6 = (~(Tf87v6 & K1snv6)); +assign K1snv6 = (!De87v6); +assign Wpgiy6 = (~(Pdtnv6 | Ifb7v6)); +assign Pdtnv6 = (Tkb7v6 & Bdtnv6); +assign Bdtnv6 = (!Bhb7v6); +assign Opgiy6 = (!Aggiy6); +assign Aggiy6 = (Ywgiy6 ^ Gxgiy6); +assign Gxgiy6 = (Lmcxx6 ^ Glexx6); +assign Glexx6 = (!Maexx6); +assign Maexx6 = (~(Hpexx6 | Mhexx6)); +assign Mhexx6 = (Yodxx6 & Y9exx6); +assign Y9exx6 = (~(Oxgiy6 & Wxgiy6)); +assign Wxgiy6 = (Eygiy6 & Ibbxx6); +assign Ibbxx6 = (!Pazmz6[6]); +assign Eygiy6 = (~(Pazmz6[7] | Pazmz6[8])); +assign Oxgiy6 = (~(Pazmz6[4] | Pazmz6[5])); +assign Hpexx6 = (!Yodxx6); +assign Yodxx6 = (Cdb7v6 & Rmb7v6); +assign Lmcxx6 = (!Dz9xx6); +assign Dz9xx6 = (Jezmz6[31] & Ro87v6); +assign Ywgiy6 = (Mygiy6 ^ Y6axx6); +assign Y6axx6 = (Jezmz6[7] & Ro87v6); +assign Mygiy6 = (~(Uygiy6 & Toexx6)); +assign Toexx6 = (!Skexx6); +assign Skexx6 = (~(Taexx6 | Ynexx6)); +assign Uygiy6 = (~(Czgiy6 & Taexx6)); +assign Taexx6 = (!Glgiy6); +assign Glgiy6 = (Jezmz6[15] & Ro87v6); +assign Czgiy6 = (~(Ro87v6 & Olgiy6)); +assign Olgiy6 = (!Ynexx6); +assign Ynexx6 = (Jezmz6[23] & Ro87v6); +assign Akgiy6 = (~(Uigiy6 & Kzgiy6)); +assign Kzgiy6 = (~(Qcgiy6 & Szgiy6)); +assign Szgiy6 = (Sjgiy6 | Odgiy6); +assign Odgiy6 = (~(Lrexx6 | Eegiy6)); +assign Eegiy6 = (A0hiy6 ^ Ueexx6); +assign Ueexx6 = (!Gnzmz6[23]); +assign Lrexx6 = (!Gnzmz6[31]); +assign Sjgiy6 = (~(I0hiy6 & Q0hiy6)); +assign Q0hiy6 = (~(Gnzmz6[23] & A0hiy6)); +assign A0hiy6 = (B987v6 ^ Gnzmz6[15]); +assign I0hiy6 = (~(B987v6 & Gnzmz6[15])); +assign Uigiy6 = (Y0hiy6 & Zp9xx6); +assign Zp9xx6 = (~(G1hiy6 & Z24xx6)); +assign Z24xx6 = (~(Hbb7v6 | Fgzmz6[1])); +assign G1hiy6 = (Oob7v6 & I0snv6); +assign Y0hiy6 = (~(Gnzmz6[39] & Qcgiy6)); +assign Qcgiy6 = (~(I0snv6 | Ka87v6)); +assign I0snv6 = (~(O1hiy6 & W1hiy6)); +assign W1hiy6 = (E2hiy6 & Uctnv6); +assign E2hiy6 = (X3tnv6 & Qch7v6); +assign X3tnv6 = (Bke8x6 & O04xx6); +assign O04xx6 = (!Tftnv6); +assign Tftnv6 = (M2hiy6 & Fgzmz6[0]); +assign M2hiy6 = (Qxb7v6 & Kngiy6); +assign Kngiy6 = (!Oob7v6); +assign Bke8x6 = (!Mftnv6); +assign Mftnv6 = (Kkd7v6 & N6dov6); +assign N6dov6 = (C4dov6 & Jrqnv6); +assign C4dov6 = (~(Y9rnv6 & U2hiy6)); +assign U2hiy6 = (~(C3hiy6 & K3hiy6)); +assign K3hiy6 = (S3hiy6 & A4hiy6); +assign A4hiy6 = (~(I4hiy6 | H71nz6[6])); +assign I4hiy6 = (H71nz6[7] | H71nz6[8]); +assign S3hiy6 = (~(H71nz6[4] | H71nz6[5])); +assign C3hiy6 = (Q4hiy6 & Y4hiy6); +assign Y4hiy6 = (~(H71nz6[2] | H71nz6[3])); +assign Q4hiy6 = (~(H71nz6[0] | H71nz6[1])); +assign Y9rnv6 = (!Gernv6); +assign Gernv6 = (Qc77v6 & Jrqnv6); +assign Jrqnv6 = (!C477v6); +assign O1hiy6 = (De87v6 & Tf87v6); +assign Kgo7v6 = (~(Aiadt6 | Gonov6)); +assign Pfo7v6 = (!Cpsnv6); +assign Ueo7v6 = (!Eqlnv6); +assign Eqlnv6 = (G5hiy6 & O5hiy6); +assign O5hiy6 = (W5hiy6 & E6hiy6); +assign E6hiy6 = (Jsaov6 & Kb9iw6); +assign Kb9iw6 = (!Dysiw6); +assign Dysiw6 = (Lyknv6 & Gvvnv6); +assign Jsaov6 = (M6hiy6 | Dwb7z6[5]); +assign W5hiy6 = (Zyxxx6 & L0bov6); +assign Zyxxx6 = (~(U6hiy6 & Aqihw6)); +assign G5hiy6 = (C7hiy6 & K7hiy6); +assign K7hiy6 = (S7hiy6 & Gpmov6); +assign Gpmov6 = (~(Lna7x6 & Ywaov6)); +assign S7hiy6 = (~(A8hiy6 & Bhoov6)); +assign A8hiy6 = (Xfa7x6 & Fxaov6); +assign C7hiy6 = (I8hiy6 & Q8hiy6); +assign Q8hiy6 = (~(G6xiw6 & Y8hiy6)); +assign G6xiw6 = (~(T4jnv6 | Ecc7z6[11])); +assign I8hiy6 = (Ecc7z6[11] ? O9hiy6 : G9hiy6); +assign O9hiy6 = (Y8hiy6 | T4jnv6); +assign Y8hiy6 = (~(Yioov6 & Zayxx6)); +assign Zayxx6 = (!Mwphw6); +assign G9hiy6 = (W9hiy6 & Eahiy6); +assign Eahiy6 = (~(Mahiy6 & Fxaov6)); +assign W9hiy6 = (~(Wnihw6 | Pi9ov6)); +assign Wnihw6 = (Uahiy6 & Ywaov6); +assign Uahiy6 = (Fulnv6 & Uvvnv6); +assign Neo7v6 = (Dte7z6[9] & Fhc7z6[31]); +assign Geo7v6 = (~(Cbhiy6 | Fre7z6[1])); +assign Cbhiy6 = (~(Kbhiy6 | Fre7z6[0])); +assign Kbhiy6 = (~(Onf7z6[31] ^ Elgdt6)); +assign Zdo7v6 = (Sbhiy6 & Fflov6); +assign Fflov6 = (Achiy6 & Opd7x6); +assign Opd7x6 = (!Dkeiw6); +assign Dkeiw6 = (~(Ichiy6 & Qchiy6)); +assign Qchiy6 = (~(Fvb7z6[13] & M52iw6)); +assign Ichiy6 = (~(Se3iw6 & Cmm7z6[13])); +assign Achiy6 = (Oteiw6 & Jrhiw6); +assign Jrhiw6 = (~(Ychiy6 & Gdhiy6)); +assign Gdhiy6 = (~(Fvb7z6[12] & M52iw6)); +assign Ychiy6 = (~(Se3iw6 & Cmm7z6[12])); +assign Oteiw6 = (Odhiy6 & Kkeiw6); +assign Kkeiw6 = (Wdhiy6 & Vqhiw6); +assign Vqhiw6 = (Eehiy6 & Mehiy6); +assign Mehiy6 = (~(Fvb7z6[16] & M52iw6)); +assign Eehiy6 = (~(Se3iw6 & Cmm7z6[16])); +assign Wdhiy6 = (~(Hqhiw6 | Jneiw6)); +assign Hqhiw6 = (~(Uehiy6 & Cfhiy6)); +assign Cfhiy6 = (~(Fvb7z6[17] & M52iw6)); +assign Uehiy6 = (~(Se3iw6 & Cmm7z6[17])); +assign Odhiy6 = (~(Wjeiw6 | Pjeiw6)); +assign Pjeiw6 = (~(Kfhiy6 & Sfhiy6)); +assign Sfhiy6 = (~(Fvb7z6[14] & M52iw6)); +assign Kfhiy6 = (~(Se3iw6 & Cmm7z6[14])); +assign Wjeiw6 = (~(Aghiy6 & Ighiy6)); +assign Ighiy6 = (~(Fvb7z6[15] & M52iw6)); +assign Aghiy6 = (~(Se3iw6 & Cmm7z6[15])); +assign Sbhiy6 = (~(Da3iw6 | Kygnv6)); +assign Sdo7v6 = (~(Da3iw6 | Relov6)); +assign Relov6 = (!Jneiw6); +assign Jneiw6 = (P5fov6 | Aqhiw6); +assign Aqhiw6 = (~(Qghiy6 & Yghiy6)); +assign Yghiy6 = (~(Fvb7z6[18] & M52iw6)); +assign Qghiy6 = (~(Se3iw6 & Cmm7z6[18])); +assign P5fov6 = (~(Ghhiy6 & Ohhiy6)); +assign Ohhiy6 = (~(Fvb7z6[19] & M52iw6)); +assign Ghhiy6 = (~(Se3iw6 & Cmm7z6[19])); +assign Da3iw6 = (C63iw6 | B23iw6); +assign B23iw6 = (!Iu4ov6); +assign Iu4ov6 = (~(Whhiy6 & Eihiy6)); +assign Eihiy6 = (~(Se3iw6 & Hjqnv6)); +assign Whhiy6 = (~(K2bdt6 & M52iw6)); +assign C63iw6 = (U13iw6 | Pdlov6); +assign Pdlov6 = (!Vd2iw6); +assign U13iw6 = (Mihiy6 & Uihiy6); +assign Uihiy6 = (~(Veonv6 & B2jnv6)); +assign Veonv6 = (Ee3iw6 & Se3iw6); +assign Mihiy6 = (~(Ee3iw6 & M52iw6)); +assign Edo7v6 = (Fgzmz6[0] & Cjhiy6); +assign Cjhiy6 = (~(Z2vnv6 & A04xx6)); +assign A04xx6 = (!Q4c7v6); +assign Z2vnv6 = (!Zz97v6); +assign Zz97v6 = (~(Kjhiy6 & Lqsnv6)); +assign Lqsnv6 = (Thh7v6 & Sjhiy6); +assign Sjhiy6 = (~(I9b7v6 & F02nv6)); +assign Kjhiy6 = (Akhiy6 & Ikhiy6); +assign Ikhiy6 = (~(Mbc7v6 & Qkhiy6)); +assign Qkhiy6 = (~(Ykhiy6 & Glhiy6)); +assign Glhiy6 = (Olhiy6 & Idtnv6); +assign Idtnv6 = (!Lczmz6[0]); +assign Olhiy6 = (~(Ztb7v6 | Cdb7v6)); +assign Ykhiy6 = (Uctnv6 & Sgbxx6); +assign Sgbxx6 = (!Uib7v6); +assign Uctnv6 = (Wlhiy6 & Tusnv6); +assign Tusnv6 = (!Lczmz6[1]); +assign Wlhiy6 = (Z8cxx6 & Wvcxx6); +assign Wvcxx6 = (!Lczmz6[3]); +assign Z8cxx6 = (!Lczmz6[2]); +assign Akhiy6 = (Sqsnv6 | Tz3xx6); +assign Tz3xx6 = (Emhiy6 & Yc77z6); +assign Sqsnv6 = (~(Qwgiy6 & Mmhiy6)); +assign Mmhiy6 = (Ursnv6 | O777v6); +assign Ursnv6 = (!Fs3xx6); +assign Fs3xx6 = (~(Cpsnv6 | W9c7v6)); +assign Qwgiy6 = (Gdc7v6 | O777v6); +assign Xco7v6 = (~(Umhiy6 & Cnhiy6)); +assign Cnhiy6 = (~(Knhiy6 & Soa7v6)); +assign Knhiy6 = (~(Pxunv6 | W1a7v6)); +assign Pxunv6 = (I1c7v6 ? Z2c7v6 : Snhiy6); +assign Snhiy6 = (~(Aohiy6 & F8tnv6)); +assign Aohiy6 = (~(G197z6 | Gdc7v6)); +assign Umhiy6 = (~(Mya7v6 | J2b7v6)); +assign J2b7v6 = (!F8tnv6); +assign F8tnv6 = (~(Iohiy6 & A9tnv6)); +assign A9tnv6 = (Wfo7v6 & Ldo7v6); +assign Iohiy6 = (I9b7v6 & Kwl8v6); +assign Mya7v6 = (~(Qohiy6 | Emhiy6)); +assign Emhiy6 = (!D4b7v6); +assign Qohiy6 = (O9tnv6 | W1a7v6); +assign O9tnv6 = (!Kwl8v6); +assign Kwl8v6 = (~(Yohiy6 | Glh7v6)); +assign Qco7v6 = (~(Gphiy6 & Ophiy6)); +assign Ophiy6 = (~(HRDATAD[4] & Qln7z6[0])); +assign Gphiy6 = (~(HRDATAS[4] & Qln7z6[1])); +assign Jco7v6 = (~(Wphiy6 & Eqhiy6)); +assign Eqhiy6 = (~(HRDATAD[12] & Qln7z6[0])); +assign Wphiy6 = (~(HRDATAS[12] & Qln7z6[1])); +assign Cco7v6 = (~(Mqhiy6 & Uqhiy6)); +assign Uqhiy6 = (~(HRDATAD[20] & Qln7z6[0])); +assign Mqhiy6 = (~(HRDATAS[20] & Qln7z6[1])); +assign Obo7v6 = (Crhiy6 & Gjdiw6); +assign Crhiy6 = (Krhiy6 & Lgonv6); +assign Krhiy6 = (~(Srhiy6 & Ashiy6)); +assign Ashiy6 = (~(Ishiy6 & Wbhnv6)); +assign Ishiy6 = (Cmm7z6[1] & Cmm7z6[0]); +assign Abo7v6 = (!Vstiw6); +assign Vstiw6 = (~(S9tiw6 & Qshiy6)); +assign Qshiy6 = (~(Yshiy6 & Gthiy6)); +assign Gthiy6 = (Othiy6 & Wthiy6); +assign Wthiy6 = (Kxtiw6 & Z6jhw6); +assign Kxtiw6 = (~(Euhiy6 & Bdf7z6[2])); +assign Euhiy6 = (Muhiy6 & R4aov6); +assign Othiy6 = (Uuhiy6 & Cvhiy6); +assign Cvhiy6 = (~(Hetiw6 & Kvhiy6)); +assign Kvhiy6 = (~(Ghtiw6 & Svhiy6)); +assign Svhiy6 = (~(Awhiy6 & Go37x6)); +assign Awhiy6 = (Iwhiy6 & Xftiw6); +assign Xftiw6 = (~(Qwhiy6 & Mrbdt6)); +assign Qwhiy6 = (Ywhiy6 & Cu27x6); +assign Ywhiy6 = (~(Nh2ov6 & Zn37x6)); +assign Zn37x6 = (!Kxb7z6[31]); +assign Nh2ov6 = (!Fhc7z6[31]); +assign Ghtiw6 = (Gxhiy6 & Fnfxx6); +assign Fnfxx6 = (!Tk8iw6); +assign Gxhiy6 = (~(Mnfxx6 & Lgtiw6)); +assign Lgtiw6 = (~(Entiw6 & Lntiw6)); +assign Uuhiy6 = (~(Frtiw6 & Trtiw6)); +assign Trtiw6 = (~(Oxhiy6 & Wxhiy6)); +assign Wxhiy6 = (~(Eyhiy6 & Myhiy6)); +assign Eyhiy6 = (!Qftiw6); +assign Qftiw6 = (Iwhiy6 | Mnfxx6); +assign Oxhiy6 = (~(Xjxxx6 & Go37x6)); +assign Go37x6 = (!Entiw6); +assign Entiw6 = (~(Uyhiy6 & Czhiy6)); +assign Czhiy6 = (Kzhiy6 & Szhiy6); +assign Szhiy6 = (A0iiy6 & I0iiy6); +assign I0iiy6 = (~(Kxb7z6[8] | Kxb7z6[9])); +assign A0iiy6 = (~(Kxb7z6[6] | Kxb7z6[7])); +assign Kzhiy6 = (Q0iiy6 & Y0iiy6); +assign Y0iiy6 = (~(Kxb7z6[4] | Kxb7z6[5])); +assign Q0iiy6 = (~(Kxb7z6[2] | Kxb7z6[3])); +assign Uyhiy6 = (G1iiy6 & O1iiy6); +assign O1iiy6 = (W1iiy6 & E2iiy6); +assign E2iiy6 = (~(Kxb7z6[15] | Kxb7z6[1])); +assign W1iiy6 = (~(Kxb7z6[13] | Kxb7z6[14])); +assign G1iiy6 = (M2iiy6 & U2iiy6); +assign U2iiy6 = (~(Kxb7z6[11] | Kxb7z6[12])); +assign M2iiy6 = (~(Kxb7z6[0] | Kxb7z6[10])); +assign Xjxxx6 = (~(Mnfxx6 | Myhiy6)); +assign Mnfxx6 = (C3iiy6 & K3iiy6); +assign K3iiy6 = (S3iiy6 & A4iiy6); +assign A4iiy6 = (I4iiy6 & Q4iiy6); +assign Q4iiy6 = (~(Kxb7z6[30] | Kxb7z6[31])); +assign I4iiy6 = (~(Kxb7z6[28] | Kxb7z6[29])); +assign S3iiy6 = (Vl37x6 & Tk37x6); +assign Tk37x6 = (~(Kxb7z6[26] | Kxb7z6[27])); +assign Vl37x6 = (~(Kxb7z6[24] | Kxb7z6[25])); +assign C3iiy6 = (Y4iiy6 & G5iiy6); +assign G5iiy6 = (O5iiy6 & Ol37x6); +assign Ol37x6 = (~(Kxb7z6[22] | Kxb7z6[23])); +assign O5iiy6 = (~(Kxb7z6[20] | Kxb7z6[21])); +assign Y4iiy6 = (W5iiy6 & E6iiy6); +assign E6iiy6 = (~(Kxb7z6[18] | Kxb7z6[19])); +assign W5iiy6 = (~(Kxb7z6[16] | Kxb7z6[17])); +assign Frtiw6 = (!A127x6); +assign A127x6 = (~(M6iiy6 & Ngxxx6)); +assign M6iiy6 = (Bdf7z6[1] & Ju27x6); +assign Yshiy6 = (U6iiy6 & Dfkov6); +assign Dfkov6 = (~(Y3bov6 | Qf2ov6)); +assign Qf2ov6 = (C7iiy6 & Bdf7z6[2]); +assign C7iiy6 = (Bdf7z6[0] & Muhiy6); +assign Y3bov6 = (!Wi2ov6); +assign Wi2ov6 = (~(K7iiy6 & S7iiy6)); +assign S7iiy6 = (Bdf7z6[3] & R4aov6); +assign K7iiy6 = (Bdf7z6[2] & Bdf7z6[1]); +assign U6iiy6 = (Bitiw6 & Ts27x6); +assign Ts27x6 = (!Gcmnv6); +assign Gcmnv6 = (~(X927x6 & A8iiy6)); +assign A8iiy6 = (~(Notiw6 & R4aov6)); +assign X927x6 = (~(I8iiy6 & G427x6)); +assign Bitiw6 = (Aofxx6 & Cmtiw6); +assign Cmtiw6 = (Q8iiy6 | K4aov6); +assign Aofxx6 = (~(Uotiw6 & Dqtiw6)); +assign Dqtiw6 = (Notiw6 & Bdf7z6[0]); +assign Uotiw6 = (!Zgtiw6); +assign S9tiw6 = (Ozvnv6 & Y8iiy6); +assign Y8iiy6 = (~(Ketnv6 & G9iiy6)); +assign G9iiy6 = (~(X3lhw6 & Z6jhw6)); +assign Z6jhw6 = (~(O9iiy6 & G427x6)); +assign O9iiy6 = (Bdf7z6[3] & D4aov6); +assign X3lhw6 = (~(Yxtiw6 | Hetiw6)); +assign Hetiw6 = (!Ilfxx6); +assign Ilfxx6 = (~(W9iiy6 & I8iiy6)); +assign I8iiy6 = (D4aov6 & Ju27x6); +assign W9iiy6 = (Bdf7z6[0] & K4aov6); +assign Yxtiw6 = (Ngxxx6 & Muhiy6); +assign Ozvnv6 = (!Dj9ov6); +assign Dj9ov6 = (Tnzdt6 & Ga3nv6); +assign Tao7v6 = (!A4a7z6); +assign A4a7z6 = (~(Eaiiy6 & G4mov6)); +assign G4mov6 = (~(Maiiy6 & Uaiiy6)); +assign Uaiiy6 = (Cbiiy6 & Kbiiy6); +assign Kbiiy6 = (Sbiiy6 & Aciiy6); +assign Sbiiy6 = (~(L9onv6 | Dpadt6)); +assign L9onv6 = (Iciiy6 & Qciiy6); +assign Qciiy6 = (Yciiy6 & Gdiiy6); +assign Gdiiy6 = (Odiiy6 & B5siw6); +assign Odiiy6 = (Zplhw6 & Hcviw6); +assign Yciiy6 = (Wdiiy6 & Rlriw6); +assign Wdiiy6 = (!Mtehw6); +assign Iciiy6 = (Eeiiy6 & Meiiy6); +assign Meiiy6 = (Ueiiy6 & Anriw6); +assign Ueiiy6 = (Cfiiy6 & Kfiiy6); +assign Kfiiy6 = (Q9fhw6 | Sfiiy6); +assign Eeiiy6 = (Siriw6 & K4uiw6); +assign Cbiiy6 = (Chm7x6 & Agiiy6); +assign Agiiy6 = (~(Igiiy6 & Qgiiy6)); +assign Qgiiy6 = (~(Ygiiy6 & Ghiiy6)); +assign Ygiiy6 = (Ohiiy6 & Fjaov6); +assign Chm7x6 = (~(Fe2nv6 & Ayeet6)); +assign Maiiy6 = (Whiiy6 & Eiiiy6); +assign Eiiiy6 = (Miiiy6 & Uiiiy6); +assign Miiiy6 = (Cjiiy6 & Kjiiy6); +assign Kjiiy6 = (~(Sjiiy6 & Vzbet6)); +assign Sjiiy6 = (E1cet6 & Amg7x6); +assign Cjiiy6 = (~(Akiiy6 & Ikiiy6)); +assign Ikiiy6 = (~(Z147x6 | My37x6)); +assign My37x6 = (Qkiiy6 & Ykiiy6); +assign Ykiiy6 = (Gliiy6 & Oliiy6); +assign Oliiy6 = (~(Zec7z6[2] & Wliiy6)); +assign Wliiy6 = (~(Siriw6 & Emiiy6)); +assign Gliiy6 = (Mmiiy6 & Umiiy6); +assign Umiiy6 = (~(Zec7z6[2] & Cniiy6)); +assign Mmiiy6 = (Painv6 | Cfiiy6); +assign Qkiiy6 = (Kniiy6 & Sniiy6); +assign Kniiy6 = (Wcsiw6 & Aoiiy6); +assign Aoiiy6 = (~(Zec7z6[10] & Ioiiy6)); +assign Z147x6 = (M547x6 & Qoiiy6); +assign Qoiiy6 = (Yoiiy6 & Gpiiy6); +assign Gpiiy6 = (~(Zec7z6[8] & Opiiy6)); +assign Yoiiy6 = (~(Zec7z6[0] & Wpiiy6)); +assign Wpiiy6 = (~(Eqiiy6 & Siriw6)); +assign Eqiiy6 = (Emiiy6 & I4ghw6); +assign M547x6 = (Sniiy6 & Wcsiw6); +assign Sniiy6 = (~(G5sov6 | Mqiiy6)); +assign Akiiy6 = (C047x6 & Uqiiy6); +assign Uqiiy6 = (~(Wcsiw6 & R447x6)); +assign C047x6 = (Criiy6 & Kriiy6); +assign Kriiy6 = (Sriiy6 & Amtov6); +assign Sriiy6 = (~(Zec7z6[9] & Opiiy6)); +assign Opiiy6 = (~(Cfiiy6 & G3ghw6)); +assign Criiy6 = (Asiiy6 & Isiiy6); +assign Isiiy6 = (~(Zec7z6[1] & Qsiiy6)); +assign Qsiiy6 = (~(Siriw6 & I4ghw6)); +assign Siriw6 = (~(Nxlhw6 | Ysiiy6)); +assign Ysiiy6 = (!C3riw6); +assign Whiiy6 = (N3onv6 & Gtiiy6); +assign N3onv6 = (!Vs9ov6); +assign Eaiiy6 = (~(W6u6x6 & Otiiy6)); +assign Mao7v6 = (!H2mnv6); +assign H2mnv6 = (~(Wtiiy6 & Euiiy6)); +assign Euiiy6 = (Muiiy6 & Pj1ov6); +assign Muiiy6 = (~(Fetov6 & Rdtov6)); +assign Rdtov6 = (~(Uuiiy6 & Jamnv6)); +assign Uuiiy6 = (Vs9ov6 & A9mnv6); +assign A9mnv6 = (~(Grfxx6 & Cviiy6)); +assign Cviiy6 = (~(B8cdt6 & Kviiy6)); +assign Kviiy6 = (Sviiy6 | Vmnnv6); +assign Sviiy6 = (Amnnv6 | Awiiy6); +assign Grfxx6 = (Ihaov6 | Ktfxx6); +assign Vs9ov6 = (~(L2o7x6 & X1o7x6)); +assign X1o7x6 = (Osa7x6 & Iwiiy6); +assign Iwiiy6 = (Qwiiy6 & S2onv6); +assign Qwiiy6 = (~(Kslov6 & Ywiiy6)); +assign Ywiiy6 = (~(Rihov6 & Qg2nv6)); +assign Kslov6 = (Vsgov6 & Ga3nv6); +assign Vsgov6 = (Gxiiy6 & Oxiiy6); +assign Oxiiy6 = (~(Wxiiy6 & Eyiiy6)); +assign Eyiiy6 = (Kioov6 & Qg2nv6); +assign Wxiiy6 = (Hbo7v6 & Ggoov6); +assign Gxiiy6 = (~(Myiiy6 & Tqinv6)); +assign Tqinv6 = (Uyiiy6 & Hbo7v6); +assign Uyiiy6 = (Cziiy6 & Lxydt6); +assign Myiiy6 = (Wxsiw6 & O5a7z6); +assign Wxsiw6 = (!Fiihw6); +assign Osa7x6 = (G3onv6 & W6u6x6); +assign G3onv6 = (Kziiy6 & Sziiy6); +assign Sziiy6 = (A0jiy6 & I0jiy6); +assign I0jiy6 = (~(Tuddt6 | Nneet6)); +assign A0jiy6 = (Jnsiw6 & Vzvnv6); +assign Kziiy6 = (Q0jiy6 & Y0jiy6); +assign Y0jiy6 = (Ldo7v6 & D7u6x6); +assign Q0jiy6 = (E1wnv6 & Y7u6x6); +assign Y7u6x6 = (G1jiy6 & O1jiy6); +assign O1jiy6 = (Nneet6 ? E2jiy6 : W1jiy6); +assign E2jiy6 = (~(Ypinv6 | M2jiy6)); +assign W1jiy6 = (~(U2jiy6 & W6u6x6)); +assign U2jiy6 = (C3jiy6 & Vzvnv6); +assign C3jiy6 = (~(K3jiy6 & S3jiy6)); +assign S3jiy6 = (~(A4jiy6 & I4jiy6)); +assign I4jiy6 = (Q4jiy6 & Y4jiy6); +assign Y4jiy6 = (~(G5jiy6 & O5jiy6)); +assign Q4jiy6 = (W5jiy6 & Qg2nv6); +assign W5jiy6 = (~(E6jiy6 & M6jiy6)); +assign A4jiy6 = (S6cdt6 & Rihov6); +assign K3jiy6 = (~(U6jiy6 & I5cdt6)); +assign U6jiy6 = (C7jiy6 & K7jiy6); +assign K7jiy6 = (~(H2sov6 & T1sov6)); +assign H2sov6 = (!Wpnhw6); +assign C7jiy6 = (~(S6cdt6 & Tnzdt6)); +assign G1jiy6 = (I5fov6 ? O5a7z6 : S7jiy6); +assign I5fov6 = (~(Whhov6 | Qg2nv6)); +assign S7jiy6 = (~(Zgadt6 & C0wnv6)); +assign L2o7x6 = (Jta7x6 & A8jiy6); +assign Jta7x6 = (I8jiy6 & Q8jiy6); +assign Q8jiy6 = (~(Y8jiy6 & G9jiy6)); +assign G9jiy6 = (~(O9jiy6 | W9jiy6)); +assign Y8jiy6 = (Eajiy6 & Majiy6); +assign Majiy6 = (~(Uajiy6 & Cbjiy6)); +assign Uajiy6 = (Kbjiy6 ? Pxfhw6 : Dyfhw6); +assign Eajiy6 = (~(Sbjiy6 & Ixfhw6)); +assign Ixfhw6 = (Zofhw6 & Z9nhw6); +assign I8jiy6 = (~(Acjiy6 & Icjiy6)); +assign Icjiy6 = (~(Qcjiy6 & W9jiy6)); +assign Qcjiy6 = (O9jiy6 & Sbjiy6); +assign Acjiy6 = (W9jiy6 ? Gdjiy6 : Ycjiy6); +assign W9jiy6 = (Odjiy6 & Wdjiy6); +assign Wdjiy6 = (~(Eejiy6 & Xlaov6)); +assign Odjiy6 = (~(Mejiy6 & Mzmov6)); +assign Gdjiy6 = (Uejiy6 & Cfjiy6); +assign Cfjiy6 = (~(Sbjiy6 & Lcqiw6)); +assign Uejiy6 = (Kbjiy6 ? Sfjiy6 : Kfjiy6); +assign Sfjiy6 = (Qgjiy6 ? Igjiy6 : Agjiy6); +assign Igjiy6 = (O9jiy6 ? I6riw6 : P0qiw6); +assign I6riw6 = (!Otfhw6); +assign P0qiw6 = (!Svfhw6); +assign Agjiy6 = (O9jiy6 ? Dmqiw6 : Dnpiw6); +assign Dmqiw6 = (!Vtfhw6); +assign Dnpiw6 = (!Zvfhw6); +assign Kfjiy6 = (Ygjiy6 | Qgjiy6); +assign Qgjiy6 = (!Cbjiy6); +assign Ygjiy6 = (O9jiy6 ? Msfhw6 : Qufhw6); +assign Ycjiy6 = (Ghjiy6 & O9jiy6); +assign O9jiy6 = (Ohjiy6 & Whjiy6); +assign Whjiy6 = (~(Eejiy6 & Kpaov6)); +assign Ohjiy6 = (~(Mejiy6 & L2nov6)); +assign Ghjiy6 = (Eijiy6 & Mijiy6); +assign Mijiy6 = (~(Uijiy6 & Bqfhw6)); +assign Uijiy6 = (Cjjiy6 & Cbjiy6); +assign Eijiy6 = (~(Zofhw6 & Kjjiy6)); +assign Kjjiy6 = (~(Sjjiy6 & Akjiy6)); +assign Akjiy6 = (~(Ikjiy6 & Kbjiy6)); +assign Ikjiy6 = (Cbjiy6 ? Zec7z6[27] : Zec7z6[25]); +assign Sjjiy6 = (~(Sbjiy6 & Zec7z6[24])); +assign Sbjiy6 = (~(Cbjiy6 | Kbjiy6)); +assign Kbjiy6 = (!Cjjiy6); +assign Cjjiy6 = (Qkjiy6 & Ykjiy6); +assign Ykjiy6 = (~(Eejiy6 & Pxmov6)); +assign Qkjiy6 = (~(Mejiy6 & Gwmov6)); +assign Cbjiy6 = (~(Gljiy6 & Oljiy6)); +assign Oljiy6 = (~(Eejiy6 & Xumov6)); +assign Eejiy6 = (Yl2et6 & Wljiy6); +assign Wljiy6 = (~(Emjiy6 & Mmjiy6)); +assign Mmjiy6 = (~(Ltvxx6 & Fulnv6)); +assign Gljiy6 = (~(Mejiy6 & Y5nov6)); +assign Mejiy6 = (Otsiw6 & Umjiy6); +assign Umjiy6 = (~(Emjiy6 & Tq9iw6)); +assign Tq9iw6 = (!Qusiw6); +assign Qusiw6 = (~(Ruvxx6 | Luvnv6)); +assign Emjiy6 = (Fiihw6 & Cnjiy6); +assign Cnjiy6 = (~(Ggoov6 & Kioov6)); +assign Fiihw6 = (Ayaov6 | Dwb7z6[5]); +assign Wtiiy6 = (O4piw6 & Rihov6); +assign Rihov6 = (Ihaov6 & Qv0ov6); +assign Qv0ov6 = (~(Knjiy6 & Snjiy6)); +assign Snjiy6 = (Aojiy6 & Gfihw6); +assign Aojiy6 = (Qdihw6 & Vcihw6); +assign Knjiy6 = (M637x6 & Seihw6); +assign M637x6 = (Iojiy6 & Qojiy6); +assign Qojiy6 = (~(Ypinv6 & Yojiy6)); +assign Yojiy6 = (~(Gpjiy6 & Opjiy6)); +assign Opjiy6 = (Wpjiy6 & Eqjiy6); +assign Eqjiy6 = (Mqjiy6 & Ajihw6); +assign Mqjiy6 = (Uqjiy6 & Tulnv6); +assign Uqjiy6 = (!Ztaov6); +assign Wpjiy6 = (X1a7x6 & N3a7x6); +assign Gpjiy6 = (Crjiy6 & Krjiy6); +assign Krjiy6 = (Srjiy6 & Asjiy6); +assign Asjiy6 = (~(S2a7x6 & Isjiy6)); +assign Srjiy6 = (Qsjiy6 & Qxknv6); +assign Qsjiy6 = (~(Ysjiy6 & Fulnv6)); +assign Ysjiy6 = (Dwb7z6[5] & Uvvnv6); +assign Crjiy6 = (At97x6 & Tpxxx6); +assign Tpxxx6 = (~(Ytlnv6 & Gvvnv6)); +assign Iojiy6 = (Gtjiy6 & Otjiy6); +assign Otjiy6 = (~(Wtjiy6 & Eujiy6)); +assign Eujiy6 = (Mujiy6 & Uujiy6); +assign Uujiy6 = (Cvjiy6 & Kvjiy6); +assign Kvjiy6 = (Svjiy6 & Vcyxx6); +assign Svjiy6 = (Awjiy6 & X1a7x6); +assign Awjiy6 = (!Vpknv6); +assign Vpknv6 = (S2a7x6 & Nvvnv6); +assign Cvjiy6 = (Z2a7x6 & Iwjiy6); +assign Z2a7x6 = (Qwjiy6 | Buvxx6); +assign Qwjiy6 = (!Riuxx6); +assign Mujiy6 = (Ywjiy6 & Gxjiy6); +assign Gxjiy6 = (Oxjiy6 & Wxjiy6); +assign Wxjiy6 = (~(Eyjiy6 & Myjiy6)); +assign Myjiy6 = (Uyjiy6 & Czjiy6); +assign Uyjiy6 = (~(Kzjiy6 & Szjiy6)); +assign Szjiy6 = (U3a7x6 & A0kiy6); +assign Kzjiy6 = (~(I0kiy6 | Qg2nv6)); +assign Eyjiy6 = (Aulov6 & Q0kiy6); +assign Q0kiy6 = (~(Y0kiy6 & G1kiy6)); +assign G1kiy6 = (~(Bh2et6 & O1kiy6)); +assign O1kiy6 = (~(W1kiy6 & Zdxdt6)); +assign W1kiy6 = (~(I0kiy6 | A0kiy6)); +assign A0kiy6 = (!O5h7z6[1]); +assign I0kiy6 = (~(E2kiy6 & O5h7z6[2])); +assign E2kiy6 = (O5h7z6[3] & O5h7z6[0]); +assign Y0kiy6 = (~(M2kiy6 & R3h7z6[0])); +assign Aulov6 = (M6a7x6 & Ijmov6); +assign Oxjiy6 = (~(U2kiy6 & X4eet6)); +assign U2kiy6 = (Ldmyx6 & C3kiy6); +assign C3kiy6 = (~(K3kiy6 & Qij7z6[4])); +assign K3kiy6 = (~(Qij7z6[0] ^ Qij7z6[1])); +assign Ywjiy6 = (S3kiy6 & A4kiy6); +assign A4kiy6 = (~(I4kiy6 & Whxdt6)); +assign I4kiy6 = (Uebdt6 & Czjiy6); +assign Czjiy6 = (Q4kiy6 | M2kiy6); +assign S3kiy6 = (~(Y4kiy6 & Xsinv6)); +assign Y4kiy6 = (~(Ix97x6 & Uw97x6)); +assign Uw97x6 = (~(Vqihw6 & G5kiy6)); +assign Wtjiy6 = (O5kiy6 & W5kiy6); +assign W5kiy6 = (E6kiy6 & M6kiy6); +assign M6kiy6 = (U6kiy6 & C7kiy6); +assign C7kiy6 = (~(K7kiy6 & Lxydt6)); +assign K7kiy6 = (~(S7kiy6 & A8kiy6)); +assign A8kiy6 = (~(Noa7x6 & Fpphw6)); +assign Fpphw6 = (Cwlnv6 & Xdphw6); +assign S7kiy6 = (~(Vxihw6 & I8kiy6)); +assign I8kiy6 = (~(Tulnv6 & Q8kiy6)); +assign Q8kiy6 = (~(Mwphw6 & Cwlnv6)); +assign Mwphw6 = (X4xiw6 & Ecc7z6[10]); +assign X4xiw6 = (Y8kiy6 & G9kiy6); +assign G9kiy6 = (P4c7z6[0] & O9kiy6); +assign Y8kiy6 = (P4c7z6[3] & P4c7z6[2]); +assign U6kiy6 = (~(Remyx6 & W9kiy6)); +assign W9kiy6 = (~(Eakiy6 & At97x6)); +assign At97x6 = (Makiy6 & Ayaov6); +assign Makiy6 = (~(Uakiy6 & Aqihw6)); +assign Aqihw6 = (!Fkyxx6); +assign Fkyxx6 = (Buvxx6 & Bqvxx6); +assign Eakiy6 = (Cbkiy6 & Srknv6); +assign Cbkiy6 = (~(Zzihw6 & Ot97x6)); +assign Remyx6 = (Lxydt6 & M6a7x6); +assign E6kiy6 = (Kbkiy6 & Sbkiy6); +assign Sbkiy6 = (~(Ackiy6 & Bfo7v6)); +assign Ackiy6 = (~(Ickiy6 & Qckiy6)); +assign Qckiy6 = (~(Zzihw6 & Yckiy6)); +assign Ickiy6 = (Gdkiy6 & Odkiy6); +assign Odkiy6 = (~(Wdkiy6 & Ef47x6)); +assign Wdkiy6 = (Hbo7v6 & Tnzdt6); +assign Gdkiy6 = (~(R3h7z6[0] & Q4kiy6)); +assign Q4kiy6 = (~(Iqmov6 & N3a7x6)); +assign Kbkiy6 = (~(Eyknv6 & Rgo7v6)); +assign Eyknv6 = (Eekiy6 & Dioov6); +assign O5kiy6 = (Mekiy6 & Uekiy6); +assign Uekiy6 = (Dhyxx6 & Cfkiy6); +assign Cfkiy6 = (~(Clhhw6 & Kfkiy6)); +assign Kfkiy6 = (Sfkiy6 | Agkiy6); +assign Agkiy6 = (Qgkiy6 ? Igkiy6 : Noa7x6); +assign Qgkiy6 = (Ygkiy6 & Bfo7v6); +assign Ygkiy6 = (~(W4a7x6 & Tnzdt6)); +assign W4a7x6 = (Ghkiy6 & Hjihw6); +assign Igkiy6 = (Ohkiy6 & Zzihw6); +assign Ohkiy6 = (Whkiy6 & M6a7x6); +assign Whkiy6 = (~(Q9xdt6 & Eikiy6)); +assign Noa7x6 = (~(Hsa7x6 | Mikiy6)); +assign Sfkiy6 = (~(Uikiy6 & Cjkiy6)); +assign Cjkiy6 = (~(Kjkiy6 & E9nov6)); +assign E9nov6 = (~(F6a7x6 & Sjkiy6)); +assign Sjkiy6 = (~(Mikiy6 & Eikiy6)); +assign Kjkiy6 = (~(Akkiy6 & Ikkiy6)); +assign Ikkiy6 = (~(Qkkiy6 & Ykkiy6)); +assign Ykkiy6 = (~(M6a7x6 & Glkiy6)); +assign Qkkiy6 = (Aga7z6 & Hjihw6); +assign Akkiy6 = (~(Olkiy6 & M6a7x6)); +assign Olkiy6 = (~(Vovxx6 & Pvhhw6)); +assign Pvhhw6 = (!Emhhw6); +assign Uikiy6 = (~(Wlkiy6 & Iga7z6)); +assign Wlkiy6 = (!F6a7x6); +assign Dhyxx6 = (~(U6hiy6 & Fulnv6)); +assign Mekiy6 = (~(Emkiy6 | Ry97x6)); +assign Ry97x6 = (~(Mmkiy6 & Umkiy6)); +assign Umkiy6 = (~(Cnkiy6 & Ot97x6)); +assign Emkiy6 = (Tnzdt6 ? Lyknv6 : Knkiy6); +assign Lyknv6 = (!Snkiy6); +assign Knkiy6 = (Px97x6 & Dwb7z6[5]); +assign Gtjiy6 = (~(Qsinv6 & Aokiy6)); +assign Aokiy6 = (~(Iokiy6 & Qokiy6)); +assign Qokiy6 = (Yokiy6 & T4jnv6); +assign Yokiy6 = (Tulnv6 & Xxknv6); +assign Iokiy6 = (~(Gpkiy6 | Lna7x6)); +assign Lna7x6 = (Fulnv6 & Dioov6); +assign Gpkiy6 = (~(Qxknv6 & X1a7x6)); +assign Qsinv6 = (!Aeonv6); +assign Ihaov6 = (!Jbd8x6); +assign Jbd8x6 = (Vuyiw6 & Opkiy6); +assign Vuyiw6 = (~(Wpkiy6 | Eqkiy6)); +assign Eqkiy6 = (Xhlhw6 ? Uqkiy6 : Mqkiy6); +assign Xhlhw6 = (Crkiy6 & Krkiy6); +assign Krkiy6 = (~(Dte7z6[3] | Dte7z6[4])); +assign Crkiy6 = (Xu27x6 & J1gov6); +assign Xu27x6 = (Gsz6x6 & Sao6x6); +assign Sao6x6 = (!Dte7z6[15]); +assign Gsz6x6 = (~(Dte7z6[16] | Dte7z6[17])); +assign Mqkiy6 = (~(Srkiy6 & Askiy6)); +assign Askiy6 = (~(Iskiy6 & Qskiy6)); +assign Qskiy6 = (Yskiy6 & Aetiw6); +assign Iskiy6 = (~(Cu27x6 | Ixfov6)); +assign Cu27x6 = (!Gtkiy6); +assign Srkiy6 = (Otkiy6 & Jm8iw6); +assign Otkiy6 = (~(Wtkiy6 & Eukiy6)); +assign Eukiy6 = (Mukiy6 & Uukiy6); +assign Uukiy6 = (~(Cvkiy6 & Xariw6)); +assign Xariw6 = (Kvkiy6 & Notiw6); +assign Kvkiy6 = (R4aov6 & Qg2nv6); +assign Cvkiy6 = (Svkiy6 & Oo07x6); +assign Svkiy6 = (!Opkiy6); +assign Opkiy6 = (~(Awkiy6 | Iwkiy6)); +assign Iwkiy6 = (!B437x6); +assign Mukiy6 = (~(Qwkiy6 | A827x6)); +assign Wtkiy6 = (Ywkiy6 & Gxkiy6); +assign Gxkiy6 = (~(Oxkiy6 & M5aov6)); +assign Oxkiy6 = (Bdf7z6[1] & Qg2nv6); +assign Ywkiy6 = (~(Gtkiy6 & Yskiy6)); +assign Yskiy6 = (!Uh2ov6); +assign Gtkiy6 = (Vo07x6 & Zgtiw6); +assign Zgtiw6 = (~(Zrz6x6 & Wxkiy6)); +assign Zrz6x6 = (Dte7z6[13] & Nzz6x6); +assign Wpkiy6 = (~(Ubhdt6 & Pxfov6)); +assign Fao7v6 = (Pkkiw6 ? P2xnv6 : Eykiy6); +assign Eykiy6 = (!Vbh7v6); +assign Y9o7v6 = (Pkkiw6 ? R9ynv6 : Mykiy6); +assign Pkkiw6 = (!Tqoov6); +assign Tqoov6 = (~(P6d7z6[0] & Cg1ov6)); +assign Mykiy6 = (!Obh7v6); +assign R9o7v6 = (Klkiw6 ? Geynv6 : Uykiy6); +assign Geynv6 = (~(Czkiy6 & Kzkiy6)); +assign Kzkiy6 = (~(G7piw6 & HRDATAS[14])); +assign Czkiy6 = (Szkiy6 & A0liy6); +assign A0liy6 = (~(K9piw6 & E4f7x6)); +assign E4f7x6 = (~(I0liy6 & Q0liy6)); +assign Q0liy6 = (~(Ysnhy6 & Cba7z6)); +assign Cba7z6 = (~(Y0liy6 & G1liy6)); +assign G1liy6 = (~(HRDATAD[14] & Qln7z6[0])); +assign Y0liy6 = (~(HRDATAS[14] & Qln7z6[1])); +assign I0liy6 = (~(Tim7z6[14] & Uunhy6)); +assign Szkiy6 = (~(HRDATAI[14] & Xzjyx6)); +assign Xzjyx6 = (~(O1liy6 & W1liy6)); +assign W1liy6 = (~(R9piw6 & E2liy6)); +assign Uykiy6 = (!Bfh7v6); +assign K9o7v6 = (Klkiw6 ? Zexnv6 : M2liy6); +assign Zexnv6 = (~(U2liy6 & C3liy6)); +assign C3liy6 = (~(G7piw6 & HRDATAS[30])); +assign U2liy6 = (K3liy6 & S3liy6); +assign S3liy6 = (~(K9piw6 & Agdiy6)); +assign Agdiy6 = (~(A4liy6 & I4liy6)); +assign I4liy6 = (~(Um8iy6 & M6a7z6)); +assign M6a7z6 = (~(Q4liy6 & Y4liy6)); +assign Y4liy6 = (~(HRDATAD[30] & Qln7z6[0])); +assign Q4liy6 = (~(HRDATAS[30] & Qln7z6[1])); +assign A4liy6 = (~(Tim7z6[30] & Yo8iy6)); +assign K3liy6 = (~(HRDATAI[30] & X3lyx6)); +assign M2liy6 = (!Ueh7v6); +assign D9o7v6 = (Klkiw6 ? N6znv6 : G5liy6); +assign N6znv6 = (~(O5liy6 & W5liy6)); +assign W5liy6 = (~(G7piw6 & HRDATAS[16])); +assign O5liy6 = (E6liy6 & M6liy6); +assign M6liy6 = (~(K9piw6 & N4g7x6)); +assign N4g7x6 = (~(U6liy6 & C7liy6)); +assign C7liy6 = (~(Maa7z6 & Aszhy6)); +assign Aszhy6 = (~(K7liy6 & Wdmhy6)); +assign K7liy6 = (~(Eemhy6 & S7liy6)); +assign S7liy6 = (~(A8liy6 & Q8ixx6)); +assign A8liy6 = (~(Ven7z6[0] & I8liy6)); +assign Maa7z6 = (~(Q8liy6 & Y8liy6)); +assign Y8liy6 = (~(HRDATAD[16] & Qln7z6[0])); +assign Q8liy6 = (~(HRDATAS[16] & Qln7z6[1])); +assign U6liy6 = (~(Tim7z6[16] & Yszhy6)); +assign Yszhy6 = (~(G9liy6 & O9liy6)); +assign O9liy6 = (Yxixx6 | Kfmhy6); +assign Yxixx6 = (~(Ven7z6[2] & Q8ixx6)); +assign G9liy6 = (~(Uunhy6 & Q8ixx6)); +assign Q8ixx6 = (!Ven7z6[1]); +assign E6liy6 = (~(HRDATAI[16] & X3lyx6)); +assign X3lyx6 = (~(O1liy6 & W9liy6)); +assign W9liy6 = (Ealiy6 | Fapiw6); +assign G5liy6 = (!Neh7v6); +assign W8o7v6 = (Klkiw6 ? R9ynv6 : Maliy6); +assign R9ynv6 = (~(Ualiy6 & Cbliy6)); +assign Cbliy6 = (Kbliy6 & Bmkyx6); +assign Bmkyx6 = (E2liy6 | Ealiy6); +assign E2liy6 = (~(Hrb7z6[0] & Ryadt6)); +assign Kbliy6 = (~(K9piw6 & R7f7x6)); +assign R7f7x6 = (~(Sbliy6 & Acliy6)); +assign Acliy6 = (~(Uaa7z6 & Ysnhy6)); +assign Ysnhy6 = (~(Icliy6 & Wdmhy6)); +assign Icliy6 = (~(Ven7z6[0] & Eemhy6)); +assign Uaa7z6 = (~(Qcliy6 & Ycliy6)); +assign Ycliy6 = (~(HRDATAD[15] & Qln7z6[0])); +assign Qcliy6 = (~(HRDATAS[15] & Qln7z6[1])); +assign Sbliy6 = (~(Tim7z6[15] & Uunhy6)); +assign Uunhy6 = (~(Kfmhy6 | Ven7z6[0])); +assign Ualiy6 = (Gdliy6 & Odliy6); +assign Odliy6 = (~(HRDATAI[15] & D9piw6)); +assign Gdliy6 = (~(G7piw6 & HRDATAS[15])); +assign Maliy6 = (!Hbh7v6); +assign P8o7v6 = (Klkiw6 ? P2xnv6 : Wdliy6); +assign Klkiw6 = (!As9ov6); +assign As9ov6 = (~(P6d7z6[1] & Cg1ov6)); +assign Cg1ov6 = (H11ov6 & Wzcdt6); +assign P2xnv6 = (~(Eeliy6 & Meliy6)); +assign Meliy6 = (Ueliy6 & Pnlyx6); +assign Pnlyx6 = (~(Fapiw6 & R9piw6)); +assign Fapiw6 = (Hrb7z6[1] & Ryadt6); +assign Ueliy6 = (~(HRDATAI[31] & D9piw6)); +assign D9piw6 = (~(O1liy6 & Ealiy6)); +assign O1liy6 = (Cfliy6 & Kfliy6); +assign Eeliy6 = (Sfliy6 & Agliy6); +assign Agliy6 = (~(K9piw6 & Kbwnv6)); +assign Kbwnv6 = (~(Igliy6 & Qgliy6)); +assign Qgliy6 = (~(Vbo7v6 & Um8iy6)); +assign Um8iy6 = (~(Ygliy6 & Wdmhy6)); +assign Wdmhy6 = (~(Kfmhy6 & Ghliy6)); +assign Ghliy6 = (~(Qo8iy6 & A9gxx6)); +assign Ygliy6 = (~(Jkqnv6 & Eemhy6)); +assign Vbo7v6 = (~(Ohliy6 & Whliy6)); +assign Whliy6 = (~(HRDATAD[31] & Qln7z6[0])); +assign Ohliy6 = (~(HRDATAS[31] & Qln7z6[1])); +assign Igliy6 = (~(Tim7z6[31] & Yo8iy6)); +assign Yo8iy6 = (~(Kfmhy6 | Jkqnv6)); +assign Jkqnv6 = (Eiliy6 & Osixx6); +assign Osixx6 = (!Ven7z6[0]); +assign Kfmhy6 = (!Eemhy6); +assign Eemhy6 = (Ozixx6 & Benyx6); +assign Sfliy6 = (~(G7piw6 & HRDATAS[31])); +assign Wdliy6 = (!Abh7v6); +assign I8o7v6 = (Q52et6 ? Uah7z6[0] : Dwb7z6[0]); +assign B8o7v6 = (Q52et6 ? Uah7z6[1] : Dwb7z6[1]); +assign U7o7v6 = (Q52et6 ? Uah7z6[2] : Dwb7z6[2]); +assign N7o7v6 = (Q52et6 ? Uah7z6[3] : Dwb7z6[3]); +assign G7o7v6 = (Q52et6 ? Uah7z6[4] : Dwb7z6[4]); +assign Z6o7v6 = (Q52et6 ? Uah7z6[5] : Dwb7z6[5]); +assign S6o7v6 = (Cr97z6 ? BIGEND : Evadt6); +assign L6o7v6 = (!Miliy6); +assign Miliy6 = (Cjliy6 ? Uiliy6 : W1mhy6); +assign Uiliy6 = (~(Kjliy6 & Sjliy6)); +assign Sjliy6 = (Akliy6 & Pjb7z6[9]); +assign Akliy6 = (Pjb7z6[10] & Pjb7z6[11]); +assign Kjliy6 = (Ikliy6 & Pjb7z6[6]); +assign Ikliy6 = (Pjb7z6[7] & Pjb7z6[8]); +assign W1mhy6 = (!Ti2nz6[5]); +assign E6o7v6 = (P9get6 ? S3a7z6 : Jqj7z6[0]); +assign S3a7z6 = (Uq97z6 | INTNMI); +assign X5o7v6 = (P9get6 ? Tib7z6[63] : Jqj7z6[72]); +assign Q5o7v6 = (P9get6 ? Tib7z6[62] : Jqj7z6[71]); +assign J5o7v6 = (P9get6 ? Tib7z6[61] : Jqj7z6[70]); +assign C5o7v6 = (P9get6 ? Tib7z6[60] : Jqj7z6[69]); +assign V4o7v6 = (P9get6 ? Tib7z6[59] : Jqj7z6[68]); +assign O4o7v6 = (P9get6 ? Tib7z6[58] : Jqj7z6[67]); +assign H4o7v6 = (P9get6 ? Tib7z6[57] : Jqj7z6[66]); +assign A4o7v6 = (P9get6 ? Tib7z6[56] : Jqj7z6[65]); +assign T3o7v6 = (P9get6 ? Tib7z6[55] : Jqj7z6[64]); +assign M3o7v6 = (P9get6 ? Tib7z6[54] : Jqj7z6[63]); +assign F3o7v6 = (P9get6 ? Tib7z6[53] : Jqj7z6[62]); +assign Y2o7v6 = (P9get6 ? Tib7z6[52] : Jqj7z6[61]); +assign R2o7v6 = (P9get6 ? Tib7z6[51] : Jqj7z6[60]); +assign K2o7v6 = (P9get6 ? Tib7z6[50] : Jqj7z6[59]); +assign D2o7v6 = (P9get6 ? Tib7z6[49] : Jqj7z6[58]); +assign W1o7v6 = (P9get6 ? Tib7z6[48] : Jqj7z6[57]); +assign P1o7v6 = (P9get6 ? Tib7z6[47] : Jqj7z6[56]); +assign I1o7v6 = (P9get6 ? Tib7z6[46] : Jqj7z6[55]); +assign B1o7v6 = (P9get6 ? Tib7z6[45] : Jqj7z6[54]); +assign U0o7v6 = (P9get6 ? Tib7z6[44] : Jqj7z6[53]); +assign N0o7v6 = (P9get6 ? Tib7z6[43] : Jqj7z6[52]); +assign G0o7v6 = (P9get6 ? Tib7z6[42] : Jqj7z6[51]); +assign Zzn7v6 = (P9get6 ? Tib7z6[41] : Jqj7z6[50]); +assign Szn7v6 = (P9get6 ? Tib7z6[40] : Jqj7z6[49]); +assign Lzn7v6 = (P9get6 ? Tib7z6[39] : Jqj7z6[48]); +assign Ezn7v6 = (P9get6 ? Tib7z6[38] : Jqj7z6[47]); +assign Xyn7v6 = (P9get6 ? Tib7z6[37] : Jqj7z6[46]); +assign Qyn7v6 = (P9get6 ? Tib7z6[36] : Jqj7z6[45]); +assign Jyn7v6 = (P9get6 ? Tib7z6[35] : Jqj7z6[44]); +assign Cyn7v6 = (P9get6 ? Tib7z6[34] : Jqj7z6[43]); +assign Vxn7v6 = (P9get6 ? Tib7z6[33] : Jqj7z6[42]); +assign Oxn7v6 = (P9get6 ? Tib7z6[32] : Jqj7z6[41]); +assign Hxn7v6 = (P9get6 ? Tib7z6[31] : Jqj7z6[40]); +assign Axn7v6 = (P9get6 ? Tib7z6[30] : Jqj7z6[39]); +assign Twn7v6 = (P9get6 ? Tib7z6[29] : Jqj7z6[38]); +assign Mwn7v6 = (P9get6 ? Tib7z6[28] : Jqj7z6[37]); +assign Fwn7v6 = (P9get6 ? Tib7z6[27] : Jqj7z6[36]); +assign Yvn7v6 = (P9get6 ? Tib7z6[26] : Jqj7z6[35]); +assign Rvn7v6 = (P9get6 ? Tib7z6[25] : Jqj7z6[34]); +assign Kvn7v6 = (P9get6 ? Tib7z6[24] : Jqj7z6[33]); +assign Dvn7v6 = (P9get6 ? Tib7z6[23] : Jqj7z6[32]); +assign Wun7v6 = (P9get6 ? Tib7z6[22] : Jqj7z6[31]); +assign Pun7v6 = (P9get6 ? Tib7z6[21] : Jqj7z6[30]); +assign Iun7v6 = (P9get6 ? Tib7z6[20] : Jqj7z6[29]); +assign Bun7v6 = (P9get6 ? Tib7z6[19] : Jqj7z6[28]); +assign Utn7v6 = (P9get6 ? Tib7z6[18] : Jqj7z6[27]); +assign Ntn7v6 = (P9get6 ? Tib7z6[17] : Jqj7z6[26]); +assign Gtn7v6 = (P9get6 ? Tib7z6[16] : Jqj7z6[25]); +assign Zsn7v6 = (P9get6 ? Tib7z6[15] : Jqj7z6[24]); +assign Ssn7v6 = (P9get6 ? Tib7z6[14] : Jqj7z6[23]); +assign Lsn7v6 = (P9get6 ? Tib7z6[13] : Jqj7z6[22]); +assign Esn7v6 = (P9get6 ? Tib7z6[12] : Jqj7z6[21]); +assign Xrn7v6 = (P9get6 ? Tib7z6[11] : Jqj7z6[20]); +assign Qrn7v6 = (P9get6 ? Tib7z6[10] : Jqj7z6[19]); +assign Jrn7v6 = (P9get6 ? Tib7z6[9] : Jqj7z6[18]); +assign Crn7v6 = (P9get6 ? Tib7z6[8] : Jqj7z6[17]); +assign Vqn7v6 = (P9get6 ? Tib7z6[7] : Jqj7z6[16]); +assign Oqn7v6 = (P9get6 ? Tib7z6[6] : Jqj7z6[15]); +assign Hqn7v6 = (P9get6 ? Tib7z6[5] : Jqj7z6[14]); +assign Aqn7v6 = (P9get6 ? Tib7z6[4] : Jqj7z6[13]); +assign Tpn7v6 = (P9get6 ? Tib7z6[3] : Jqj7z6[12]); +assign Mpn7v6 = (P9get6 ? Tib7z6[2] : Jqj7z6[11]); +assign Fpn7v6 = (P9get6 ? Tib7z6[1] : Jqj7z6[10]); +assign Yon7v6 = (P9get6 ? Tib7z6[0] : Jqj7z6[9]); +assign Ron7v6 = (P9get6 ? Qmj7z6[1] : Jqj7z6[1]); +assign Qmj7z6[1] = (!Mapiw6); +assign Mapiw6 = (Pmh7v6 & Qkliy6); +assign Qkliy6 = (Xsinv6 | F8m7x6); +assign F8m7x6 = (O9m7x6 & U5m7x6); +assign U5m7x6 = (!Ieadt6); +assign O9m7x6 = (Ykliy6 & Glliy6); +assign Glliy6 = (S8b7x6 | Sjcet6); +assign Kon7v6 = (Q0hhw6 ? Rphhw6 : Nzg7z6[0]); +assign Rphhw6 = (Olliy6 ^ Wlliy6); +assign Don7v6 = (Q0hhw6 ? Cehhw6 : Nzg7z6[1]); +assign Cehhw6 = (Emliy6 ^ Mmliy6); +assign Wnn7v6 = (Q0hhw6 ? Rbhhw6 : Nzg7z6[2]); +assign Rbhhw6 = (Umliy6 ^ Cnliy6); +assign Pnn7v6 = (Q0hhw6 ? A6hhw6 : Nzg7z6[3]); +assign A6hhw6 = (~(Knliy6 & Snliy6)); +assign Snliy6 = (Aoliy6 & Ioliy6); +assign Ioliy6 = (Qoliy6 & Yoliy6); +assign Yoliy6 = (Gpliy6 | Opliy6); +assign Qoliy6 = (Wpliy6 & Eqliy6); +assign Eqliy6 = (Mqliy6 | Uqliy6); +assign Wpliy6 = (Crliy6 | Krliy6); +assign Aoliy6 = (Srliy6 & Asliy6); +assign Asliy6 = (Isliy6 | Qsliy6); +assign Srliy6 = (Ysliy6 | Gtliy6); +assign Knliy6 = (Otliy6 & Wtliy6); +assign Wtliy6 = (Euliy6 & Muliy6); +assign Muliy6 = (Uuliy6 | Cvliy6); +assign Euliy6 = (Kvliy6 | Svliy6); +assign Otliy6 = (Awliy6 & Iwliy6); +assign Iwliy6 = (Qwliy6 | Ywliy6); +assign Awliy6 = (~(Cnliy6 & Umliy6)); +assign Umliy6 = (Ywliy6 ^ Qwliy6); +assign Qwliy6 = (Gxliy6 | Oxliy6); +assign Ywliy6 = (~(Svliy6 ^ Kvliy6)); +assign Kvliy6 = (Wxliy6 | Eyliy6); +assign Svliy6 = (~(Cvliy6 ^ Uuliy6)); +assign Uuliy6 = (Myliy6 | Uyliy6); +assign Cvliy6 = (~(Gtliy6 ^ Ysliy6)); +assign Ysliy6 = (Czliy6 | Kzliy6); +assign Gtliy6 = (~(Qsliy6 ^ Isliy6)); +assign Isliy6 = (Szliy6 | A0miy6); +assign Qsliy6 = (~(Opliy6 ^ Gpliy6)); +assign Gpliy6 = (I0miy6 | Q0miy6); +assign Opliy6 = (~(Krliy6 ^ Crliy6)); +assign Crliy6 = (Y0miy6 | G1miy6); +assign Krliy6 = (~(Uqliy6 ^ Mqliy6)); +assign Mqliy6 = (O1miy6 | W1miy6); +assign Uqliy6 = (E2miy6 & M2miy6); +assign M2miy6 = (U2miy6 & C3miy6); +assign C3miy6 = (~(K3miy6 & S3miy6)); +assign K3miy6 = (A4miy6 & I4miy6); +assign U2miy6 = (~(Q4miy6 & Y4miy6)); +assign E2miy6 = (G5miy6 & O5miy6); +assign O5miy6 = (~(W5miy6 & E6miy6)); +assign G5miy6 = (M6miy6 | U6miy6); +assign Cnliy6 = (Mmliy6 & Emliy6); +assign Emliy6 = (Oxliy6 ^ Gxliy6); +assign Gxliy6 = (C7miy6 | K7miy6); +assign Oxliy6 = (~(Eyliy6 ^ Wxliy6)); +assign Wxliy6 = (~(S7miy6 & A8miy6)); +assign Eyliy6 = (~(Uyliy6 ^ Myliy6)); +assign Myliy6 = (I8miy6 | Q8miy6); +assign Uyliy6 = (~(Kzliy6 ^ Czliy6)); +assign Czliy6 = (Y8miy6 | G9miy6); +assign Kzliy6 = (~(A0miy6 ^ Szliy6)); +assign Szliy6 = (O9miy6 | W9miy6); +assign A0miy6 = (~(Q0miy6 ^ I0miy6)); +assign I0miy6 = (~(Eamiy6 & Mamiy6)); +assign Q0miy6 = (~(G1miy6 ^ Y0miy6)); +assign Y0miy6 = (Uamiy6 | Cbmiy6); +assign G1miy6 = (~(W1miy6 ^ O1miy6)); +assign O1miy6 = (Kbmiy6 | Sbmiy6); +assign W1miy6 = (~(U6miy6 ^ M6miy6)); +assign M6miy6 = (Acmiy6 | Icmiy6); +assign U6miy6 = (~(Y4miy6 ^ Q4miy6)); +assign Q4miy6 = (Qcmiy6 & Ycmiy6); +assign Y4miy6 = (E6miy6 ^ W5miy6); +assign W5miy6 = (~(Gdmiy6 | Odmiy6)); +assign E6miy6 = (Wdmiy6 ^ Eemiy6); +assign Eemiy6 = (!A4miy6); +assign A4miy6 = (Memiy6 | Uemiy6); +assign Wdmiy6 = (~(S3miy6 & I4miy6)); +assign Mmliy6 = (~(Olliy6 | Wlliy6)); +assign Wlliy6 = (Cfmiy6 & Kfmiy6); +assign Kfmiy6 = (~(Sfmiy6 & Pxfhw6)); +assign Pxfhw6 = (!L1ohw6); +assign L1ohw6 = (~(Agmiy6 | Igmiy6)); +assign Cfmiy6 = (~(Qgmiy6 & R6xxx6)); +assign Olliy6 = (~(C7miy6 ^ K7miy6)); +assign K7miy6 = (Ygmiy6 & Ghmiy6); +assign Ghmiy6 = (~(Qgmiy6 & Vgwxx6)); +assign Ygmiy6 = (Ohmiy6 & Whmiy6); +assign Whmiy6 = (~(Eimiy6 & Mimiy6)); +assign Eimiy6 = (V1c7z6[14] & Pxmov6); +assign Ohmiy6 = (~(Sfmiy6 & Dyfhw6)); +assign Dyfhw6 = (~(Uimiy6 & Cjmiy6)); +assign Cjmiy6 = (Kjmiy6 | Zec7z6[11]); +assign Uimiy6 = (~(Zofhw6 & Zec7z6[30])); +assign C7miy6 = (~(A8miy6 ^ S7miy6)); +assign S7miy6 = (Mimiy6 & V1c7z6[13]); +assign Mimiy6 = (Sjmiy6 & Akmiy6); +assign Sjmiy6 = (Q0hhw6 & Ikmiy6); +assign A8miy6 = (I8miy6 ^ Q8miy6); +assign Q8miy6 = (Qkmiy6 & Ykmiy6); +assign Ykmiy6 = (~(Lhwxx6 & Qgmiy6)); +assign Qkmiy6 = (Glmiy6 & Olmiy6); +assign Olmiy6 = (~(Wlmiy6 & Q0hhw6)); +assign Wlmiy6 = (V1c7z6[12] & Emmiy6); +assign Emmiy6 = (~(Rihhw6 & Mmmiy6)); +assign Mmmiy6 = (Kihhw6 | Hir8v6); +assign Glmiy6 = (~(Ummiy6 & Z9nhw6)); +assign I8miy6 = (~(Y8miy6 ^ G9miy6)); +assign G9miy6 = (Cnmiy6 & Knmiy6); +assign Knmiy6 = (~(Qgmiy6 & L5xxx6)); +assign Cnmiy6 = (Snmiy6 & Aomiy6); +assign Aomiy6 = (~(Iomiy6 & Q0hhw6)); +assign Iomiy6 = (~(Ceohw6 | Kihhw6)); +assign Ceohw6 = (!V1c7z6[11]); +assign Snmiy6 = (~(Ummiy6 & Zec7z6[27])); +assign Y8miy6 = (~(O9miy6 ^ W9miy6)); +assign W9miy6 = (Qomiy6 & Yomiy6); +assign Yomiy6 = (~(Qgmiy6 & Pjwxx6)); +assign Qomiy6 = (Gpmiy6 & Opmiy6); +assign Opmiy6 = (~(Wpmiy6 & Q0hhw6)); +assign Wpmiy6 = (V1c7z6[10] & Eqmiy6); +assign Eqmiy6 = (~(Kihhw6 & Mqmiy6)); +assign Mqmiy6 = (~(Uqmiy6 & Pxmov6)); +assign Uqmiy6 = (Xumov6 & Xlaov6); +assign Gpmiy6 = (~(Sfmiy6 & Bqfhw6)); +assign Bqfhw6 = (Zofhw6 & Zec7z6[26]); +assign O9miy6 = (~(Eamiy6 ^ Mamiy6)); +assign Mamiy6 = (~(Crmiy6 & Krmiy6)); +assign Krmiy6 = (~(Qgmiy6 & Dxwxx6)); +assign Crmiy6 = (Srmiy6 & Asmiy6); +assign Asmiy6 = (~(Ismiy6 & Q0hhw6)); +assign Ismiy6 = (V1c7z6[9] & Ikmiy6); +assign Srmiy6 = (~(Ummiy6 & Zec7z6[25])); +assign Eamiy6 = (Uamiy6 ^ Cbmiy6); +assign Cbmiy6 = (Qsmiy6 & Ysmiy6); +assign Ysmiy6 = (~(Gtmiy6 & Qgmiy6)); +assign Qsmiy6 = (Otmiy6 & Wtmiy6); +assign Wtmiy6 = (~(Eumiy6 & Q0hhw6)); +assign Eumiy6 = (~(E0phw6 | Mumiy6)); +assign E0phw6 = (!V1c7z6[8]); +assign Otmiy6 = (~(Ummiy6 & Zec7z6[24])); +assign Ummiy6 = (~(Uumiy6 | Cvmiy6)); +assign Uamiy6 = (~(Kbmiy6 ^ Sbmiy6)); +assign Sbmiy6 = (Kvmiy6 & Svmiy6); +assign Svmiy6 = (Nwwxx6 | Awmiy6); +assign Kvmiy6 = (Iwmiy6 & Qwmiy6); +assign Qwmiy6 = (~(Ywmiy6 & Q0hhw6)); +assign Ywmiy6 = (V1c7z6[7] & Xlaov6); +assign Iwmiy6 = (~(Sfmiy6 & Zvfhw6)); +assign Zvfhw6 = (~(Gxmiy6 & Oxmiy6)); +assign Oxmiy6 = (~(Zofhw6 & Oenhw6)); +assign Gxmiy6 = (Xeinv6 | Bylhw6); +assign Kbmiy6 = (~(Acmiy6 ^ Icmiy6)); +assign Icmiy6 = (Wxmiy6 & Eymiy6); +assign Eymiy6 = (Fwwxx6 | Awmiy6); +assign Wxmiy6 = (Mymiy6 & Uymiy6); +assign Uymiy6 = (~(Czmiy6 & Q0hhw6)); +assign Czmiy6 = (V1c7z6[6] & Kzmiy6); +assign Kzmiy6 = (~(Dqr8v6 & Szmiy6)); +assign Szmiy6 = (~(Akmiy6 & Pxmov6)); +assign Akmiy6 = (Xumov6 & Kpaov6); +assign Mymiy6 = (Uumiy6 | Qufhw6); +assign Qufhw6 = (A0niy6 & I0niy6); +assign I0niy6 = (~(Zofhw6 & Uqd7z6[22])); +assign A0niy6 = (Fcinv6 | Bylhw6); +assign Acmiy6 = (~(Qcmiy6 ^ Ycmiy6)); +assign Ycmiy6 = (~(Q0niy6 & Y0niy6)); +assign Y0niy6 = (~(Qgmiy6 & G1niy6)); +assign Q0niy6 = (O1niy6 & W1niy6); +assign W1niy6 = (~(E2niy6 & Q0hhw6)); +assign E2niy6 = (~(S7phw6 | M2niy6)); +assign S7phw6 = (!V1c7z6[5]); +assign O1niy6 = (~(Sfmiy6 & Svfhw6)); +assign Svfhw6 = (~(U2niy6 & C3niy6)); +assign C3niy6 = (~(Uqd7z6[21] & Zofhw6)); +assign U2niy6 = (Zpehw6 | Bylhw6); +assign Qcmiy6 = (Gdmiy6 ^ Odmiy6); +assign Odmiy6 = (K3niy6 & S3niy6); +assign S3niy6 = (~(Sfmiy6 & Lcqiw6)); +assign Lcqiw6 = (~(A4niy6 & I4niy6)); +assign I4niy6 = (~(Uqd7z6[20] & Zofhw6)); +assign A4niy6 = (Qtnov6 | Bylhw6); +assign K3niy6 = (Q4niy6 & Y4niy6); +assign Y4niy6 = (~(G5niy6 & Q0hhw6)); +assign G5niy6 = (V1c7z6[4] & O5niy6); +assign O5niy6 = (~(M2niy6 & W5niy6)); +assign W5niy6 = (~(Pxmov6 & Kpaov6)); +assign M2niy6 = (Dqr8v6 & E6niy6); +assign E6niy6 = (~(Xumov6 & Kpaov6)); +assign Q4niy6 = (~(Pzwxx6 & Qgmiy6)); +assign Gdmiy6 = (S3miy6 ^ M6niy6); +assign M6niy6 = (!I4miy6); +assign I4miy6 = (~(U6niy6 & C7niy6)); +assign C7niy6 = (~(Sfmiy6 & Vtfhw6)); +assign Vtfhw6 = (~(K7niy6 & S7niy6)); +assign S7niy6 = (~(Zofhw6 & Uqd7z6[19])); +assign K7niy6 = (U2ohw6 | Bylhw6); +assign U6niy6 = (A8niy6 & I8niy6); +assign I8niy6 = (~(Q8niy6 & Q0hhw6)); +assign Q8niy6 = (V1c7z6[3] & Y8niy6); +assign A8niy6 = (Vkwxx6 | Awmiy6); +assign S3miy6 = (~(Memiy6 | G9niy6)); +assign G9niy6 = (O9niy6 & W9niy6); +assign Memiy6 = (~(W9niy6 | O9niy6)); +assign O9niy6 = (Eaniy6 & Maniy6); +assign Maniy6 = (Uumiy6 | Msfhw6); +assign Msfhw6 = (Uaniy6 & Cbniy6); +assign Cbniy6 = (~(Zofhw6 & Uqd7z6[18])); +assign Uaniy6 = (T5ohw6 | Bylhw6); +assign Uumiy6 = (!Sfmiy6); +assign Eaniy6 = (Kbniy6 & Sbniy6); +assign Sbniy6 = (~(Acniy6 & Icniy6)); +assign Acniy6 = (V1c7z6[2] & Qcniy6); +assign Qcniy6 = (~(Hir8v6 & Ycniy6)); +assign Kbniy6 = (N4wxx6 | Awmiy6); +assign Awmiy6 = (!Qgmiy6); +assign W9niy6 = (Uemiy6 | Gdniy6); +assign Gdniy6 = (Odniy6 & Wdniy6); +assign Uemiy6 = (~(Odniy6 | Wdniy6)); +assign Wdniy6 = (Eeniy6 & Meniy6); +assign Meniy6 = (~(Sfmiy6 & Mhpiw6)); +assign Mhpiw6 = (~(Ueniy6 & Cfniy6)); +assign Cfniy6 = (~(Zofhw6 & Ovbdt6)); +assign Ueniy6 = (Baohw6 | Bylhw6); +assign Eeniy6 = (Kfniy6 & Sfniy6); +assign Sfniy6 = (~(Agniy6 & Q0hhw6)); +assign Agniy6 = (V1c7z6[0] & Igniy6); +assign Kfniy6 = (~(Qgniy6 & Qgmiy6)); +assign Odniy6 = (Ygniy6 & Ghniy6); +assign Ghniy6 = (~(Ohniy6 & Qgmiy6)); +assign Ygniy6 = (Whniy6 & Einiy6); +assign Einiy6 = (~(Icniy6 & V1c7z6[1])); +assign Icniy6 = (Q0hhw6 & Miniy6); +assign Miniy6 = (~(Xkr8v6 & Ycniy6)); +assign Whniy6 = (~(Sfmiy6 & Otfhw6)); +assign Otfhw6 = (~(Uiniy6 & Cjniy6)); +assign Cjniy6 = (~(Zofhw6 & Uqd7z6[17])); +assign Uiniy6 = (S8ohw6 | Bylhw6); +assign Sfmiy6 = (~(Qgmiy6 | Q0hhw6)); +assign Q0hhw6 = (Rmwxx6 & Doihw6); +assign Qgmiy6 = (Hjihw6 & Kjniy6); +assign Kjniy6 = (~(Tdxxx6 & Ajphw6)); +assign Inn7v6 = (Zhg7x6 ? Sjniy6 : Oreet6); +assign Sjniy6 = (Akniy6 & Ikniy6); +assign Ikniy6 = (!Qkniy6); +assign Qkniy6 = (Shg7x6 ? Pohov6 : Ykniy6); +assign Shg7x6 = (Eofov6 & F02nv6); +assign Eofov6 = (A12nv6 & Glniy6); +assign Glniy6 = (~(Zhg7x6 & Olniy6)); +assign Olniy6 = (!Ebdiw6); +assign Ebdiw6 = (U42nv6 & B52nv6); +assign A12nv6 = (~(Wlniy6 & Emniy6)); +assign Emniy6 = (Mmniy6 & Umniy6); +assign Umniy6 = (~(X6eet6 & Cnniy6)); +assign Cnniy6 = (Kdadt6 | Ldo7v6); +assign Mmniy6 = (~(Knniy6 | Ffeet6)); +assign Wlniy6 = (Snniy6 & Opeet6); +assign Snniy6 = (Cbeet6 & Dgo7v6); +assign Ykniy6 = (~(Vveet6 & Cwadt6)); +assign Akniy6 = (F52iw6 ? A0fet6 : U42nv6); +assign F52iw6 = (!Awbet6); +assign Bnn7v6 = (Iownv6 ? Khoet6 : Vm1ov6); +assign Umn7v6 = (Iownv6 ? Wmoet6 : Fk9ov6); +assign Nmn7v6 = (~(Ocd7v6 ^ Lkcov6)); +assign Lkcov6 = (~(Wmcov6 & Hafxx6)); +assign Hafxx6 = (~(Srcov6 | Ju1yx6)); +assign Ju1yx6 = (~(Aoniy6 & E5d7v6)); +assign Aoniy6 = (Rr0nz6[1] & Cxrnv6); +assign Cxrnv6 = (!Rr0nz6[0]); +assign Srcov6 = (Qqcov6 | Ercov6); +assign Ercov6 = (!Hw0nz6[2]); +assign Qqcov6 = (!Hw0nz6[1]); +assign Wmcov6 = (Ioniy6 & Uzcov6); +assign Uzcov6 = (Sr5ov6 & Nlcov6); +assign Nlcov6 = (!Fed7v6); +assign Sr5ov6 = (Gs5ov6 & Jysyx6); +assign Jysyx6 = (~(Ioniy6 & Fed7v6)); +assign Gs5ov6 = (!Lr5ov6); +assign Lr5ov6 = (At67v6 ? Yoniy6 : Qoniy6); +assign Yoniy6 = (~(Bed8x6 & Pbpyx6)); +assign Bed8x6 = (Xid8x6 & V4pyx6); +assign V4pyx6 = (Gpniy6 & Mulhy6); +assign Gpniy6 = (~(Opniy6 | Xfymz6[8])); +assign Qoniy6 = (N4pyx6 & W197z6); +assign N4pyx6 = (Byhyx6 ? Za2yx6 : Ziryx6); +assign Byhyx6 = (!Eee7v6); +assign Za2yx6 = (Hae7v6 ? Eqniy6 : Wpniy6); +assign Eqniy6 = (~(Mqniy6 & P72yx6)); +assign P72yx6 = (!N82yx6); +assign N82yx6 = (Uqniy6 & Puhiw6); +assign Puhiw6 = (!J02nz6[4]); +assign Uqniy6 = (!Eqciy6); +assign Eqciy6 = (~(Crniy6 & Krniy6)); +assign Krniy6 = (J02nz6[2] & Czlhy6); +assign Czlhy6 = (!J02nz6[8]); +assign Crniy6 = (Hae7v6 & Tppyx6); +assign Tppyx6 = (Srniy6 & J02nz6[5]); +assign Srniy6 = (J02nz6[3] & Xvxyx6); +assign Xvxyx6 = (Asniy6 & Isniy6); +assign Isniy6 = (J02nz6[6] & Thiiw6); +assign Thiiw6 = (Qsniy6 & J02nz6[9]); +assign Qsniy6 = (J02nz6[11] & J02nz6[10]); +assign Asniy6 = (Jke7v6 & J02nz6[7]); +assign Mqniy6 = (~(Bv1nz6[1] & Bv1nz6[0])); +assign Wpniy6 = (Ysniy6 & Gtniy6); +assign Gtniy6 = (~(L92yx6 ^ Ra3yx6)); +assign Ra3yx6 = (~(Ja3yx6 ^ Lj1nz6[0])); +assign L92yx6 = (T92yx6 ^ Ja1nz6[0]); +assign Ysniy6 = (Otniy6 & Wtniy6); +assign Wtniy6 = (Ja1nz6[2] ^ Lj1nz6[2]); +assign Otniy6 = (T92yx6 ^ Ja3yx6); +assign Ja3yx6 = (Fah7v6 ^ Lj1nz6[2]); +assign T92yx6 = (Ja1nz6[1] ^ Ja1nz6[2]); +assign Ziryx6 = (!Hce7v6); +assign Ioniy6 = (Jazxx6 & D11yx6); +assign D11yx6 = (~(Euniy6 & Muniy6)); +assign Muniy6 = (~(Uuniy6 | Ft0nz6[2])); +assign Uuniy6 = (Ft0nz6[3] | Ft0nz6[4]); +assign Euniy6 = (~(K1dov6 | Ft0nz6[1])); +assign K1dov6 = (!Ft0nz6[0]); +assign Jazxx6 = (!H3dov6); +assign H3dov6 = (~(E15xx6 | L15xx6)); +assign L15xx6 = (!Az4xx6); +assign Az4xx6 = (Uu0nz6[2] | Uu0nz6[1]); +assign E15xx6 = (!S15xx6); +assign S15xx6 = (~(Uu0nz6[4] | Uu0nz6[3])); +assign Gmn7v6 = (P9get6 ? Qmj7z6[4] : Jqj7z6[4]); +assign Qmj7z6[4] = (Ykliy6 & Cvniy6); +assign Zln7v6 = (P9get6 ? Zrbet6 : Jqj7z6[6]); +assign Zrbet6 = (~(Kvniy6 & Svniy6)); +assign Svniy6 = (~(Hyhov6 & Gr5iw6)); +assign Kvniy6 = (Awniy6 & Iwniy6); +assign Iwniy6 = (~(Q7hov6 & Qwniy6)); +assign Qwniy6 = (~(Kd2nv6 & Ywniy6)); +assign Ywniy6 = (~(Zgadt6 & Gxniy6)); +assign Gxniy6 = (~(Zamov6 & Oxniy6)); +assign Oxniy6 = (~(Sa2nv6 & Iahov6)); +assign Iahov6 = (!Lim7x6); +assign Lim7x6 = (C0i7x6 & Dc3nv6); +assign Dc3nv6 = (F4j7x6 & E7iov6); +assign E7iov6 = (!P2j7z6[4]); +assign F4j7x6 = (Owjov6 & Wfjov6); +assign Wfjov6 = (!P2j7z6[6]); +assign Owjov6 = (!P2j7z6[5]); +assign C0i7x6 = (Wxniy6 & Rc3nv6); +assign Rc3nv6 = (~(Z7iov6 | U1iov6)); +assign U1iov6 = (!P2j7z6[2]); +assign Z7iov6 = (!P2j7z6[3]); +assign Wxniy6 = (Bgiov6 & Rgjov6); +assign Rgjov6 = (!P2j7z6[1]); +assign Bgiov6 = (!P2j7z6[0]); +assign Sa2nv6 = (!Ga3nv6); +assign Ga3nv6 = (~(Eyniy6 & Hbo7v6)); +assign Eyniy6 = (Ggoov6 & Myniy6); +assign Myniy6 = (~(Xvxxx6 & Uyniy6)); +assign Uyniy6 = (~(Czniy6 & Uuinv6)); +assign Czniy6 = (O5a7z6 & Dwb7z6[1]); +assign Zamov6 = (Hwr7x6 & X0b7x6); +assign X0b7x6 = (~(Kzniy6 & E1wnv6)); +assign E1wnv6 = (!J0b7x6); +assign J0b7x6 = (~(Szniy6 & A0oiy6)); +assign A0oiy6 = (~(I0oiy6 | Jai8v6)); +assign Jai8v6 = (Q0oiy6 & Qg2nv6); +assign I0oiy6 = (Loddt6 | Pqddt6); +assign Szniy6 = (Y0oiy6 & Drsiw6); +assign Drsiw6 = (G1oiy6 & O1oiy6); +assign O1oiy6 = (W1oiy6 & E2oiy6); +assign E2oiy6 = (~(M2oiy6 & Mrnov6)); +assign Mrnov6 = (~(Ketnv6 | Tnzdt6)); +assign M2oiy6 = (U2oiy6 & C0wnv6); +assign U2oiy6 = (M0edt6 | Qyddt6); +assign W1oiy6 = (Xfnov6 & C3oiy6); +assign C3oiy6 = (~(M3e7z6[1] & M2jiy6)); +assign M2jiy6 = (~(Tnzdt6 | P6u6x6)); +assign Xfnov6 = (~(Shfov6 & K3oiy6)); +assign K3oiy6 = (~(Henov6 & S3oiy6)); +assign Henov6 = (A4oiy6 & I4oiy6); +assign I4oiy6 = (~(Frgov6 & Ipgov6)); +assign Ipgov6 = (Ibe7z6[2] | Ibe7z6[1]); +assign Frgov6 = (Q4oiy6 & Y4oiy6); +assign Y4oiy6 = (~(G5oiy6 & O5oiy6)); +assign O5oiy6 = (~(Ppb7z6[7] & W5oiy6)); +assign G5oiy6 = (E6oiy6 & J92nv6); +assign E6oiy6 = (~(M6oiy6 & U6oiy6)); +assign U6oiy6 = (W5oiy6 | Ppb7z6[7]); +assign W5oiy6 = (!Fhc7z6[7]); +assign M6oiy6 = (C7oiy6 & K7oiy6); +assign K7oiy6 = (~(Fhc7z6[6] & S7oiy6)); +assign S7oiy6 = (A8oiy6 | I8oiy6); +assign C7oiy6 = (~(A8oiy6 & I8oiy6)); +assign A8oiy6 = (Q8oiy6 | Fhc7z6[5]); +assign A4oiy6 = (Y8oiy6 & G9oiy6); +assign G9oiy6 = (Jfnov6 | Nmadt6); +assign Jfnov6 = (O9oiy6 & W9oiy6); +assign W9oiy6 = (~(Ibe7z6[0] & E3c7z6[0])); +assign O9oiy6 = (~(I9e7z6[2] & I9e7z6[0])); +assign Y8oiy6 = (~(Etinv6 & Eaoiy6)); +assign Eaoiy6 = (~(Flfov6 & Kkfov6)); +assign Kkfov6 = (~(I9e7z6[1] & I9e7z6[0])); +assign Flfov6 = (~(Ibe7z6[3] & E3c7z6[0])); +assign Shfov6 = (~(Gbo6x6 | Z7edt6)); +assign G1oiy6 = (Maoiy6 & Uaoiy6); +assign Uaoiy6 = (Tnzdt6 ? Kboiy6 : Cboiy6); +assign Kboiy6 = (~(Z7edt6 & S3oiy6)); +assign S3oiy6 = (!Ibe7z6[4]); +assign Cboiy6 = (~(M3e7z6[0] & Bklhw6)); +assign Bklhw6 = (~(Sboiy6 & Acoiy6)); +assign Acoiy6 = (Fulnv6 & Spdiw6); +assign Sboiy6 = (P6u6x6 & Ltvxx6); +assign Maoiy6 = (M8lov6 & Ixfov6); +assign M8lov6 = (Icoiy6 & Qcoiy6); +assign Qcoiy6 = (Ycoiy6 & Gdoiy6); +assign Gdoiy6 = (Odoiy6 & Wdoiy6); +assign Wdoiy6 = (~(Dwb7z6[2] & Eeoiy6)); +assign Eeoiy6 = (~(Meoiy6 & Ueoiy6)); +assign Ueoiy6 = (~(Ypinv6 & Cfoiy6)); +assign Cfoiy6 = (Htmov6 | Dwb7z6[0]); +assign Meoiy6 = (Buvxx6 & Sna7x6); +assign Buvxx6 = (!Fxaov6); +assign Odoiy6 = (Kfoiy6 & Sfoiy6); +assign Sfoiy6 = (!Eekiy6); +assign Ycoiy6 = (Agoiy6 & Igoiy6); +assign Igoiy6 = (~(Dwb7z6[3] & Ypinv6)); +assign Ypinv6 = (!O5a7z6); +assign Agoiy6 = (Qgoiy6 & Ygoiy6); +assign Ygoiy6 = (~(Tka7x6 & Ghoiy6)); +assign Ghoiy6 = (~(Ohoiy6 & Msmov6)); +assign Msmov6 = (~(Vrinv6 | Aga7z6)); +assign Vrinv6 = (!Gr2et6); +assign Ohoiy6 = (Whoiy6 & U1jnv6); +assign Whoiy6 = (~(Htmov6 & N1jnv6)); +assign N1jnv6 = (~(Eioiy6 & Mioiy6)); +assign Mioiy6 = (Ii9ov6 & Xodiw6); +assign Eioiy6 = (Qodiw6 & T3cdt6); +assign Htmov6 = (~(Cgsiw6 | Wp37x6)); +assign Wp37x6 = (S0jnv6 & P2jnv6); +assign P2jnv6 = (~(Uioiy6 & T3cdt6)); +assign Uioiy6 = (Kldiw6 & Ii9ov6); +assign Kldiw6 = (~(Hsa7x6 | Qodiw6)); +assign Qodiw6 = (Cjoiy6 & Kjoiy6); +assign Kjoiy6 = (~(Sjoiy6 & Akoiy6)); +assign Akoiy6 = (!Pgqnv6); +assign Sjoiy6 = (!Yhqnv6); +assign Cjoiy6 = (~(O7adt6 & Ikoiy6)); +assign S0jnv6 = (Qkoiy6 & Ykoiy6); +assign Ykoiy6 = (Gloiy6 & Oloiy6); +assign Oloiy6 = (Dsriw6 & Tlyxx6); +assign Dsriw6 = (~(Wloiy6 & Axihw6)); +assign Wloiy6 = (~(Hxihw6 | Lofhw6)); +assign Gloiy6 = (Emoiy6 & O5jiy6); +assign O5jiy6 = (~(Mmoiy6 & Umoiy6)); +assign Mmoiy6 = (Cnoiy6 & X7wxx6); +assign Cnoiy6 = (Knoiy6 | Ozbdt6); +assign Knoiy6 = (Pxfov6 & Snoiy6); +assign Snoiy6 = (~(Hsa7x6 & Xodiw6)); +assign Xodiw6 = (!Bi9ov6); +assign Emoiy6 = (~(Aooiy6 & Bi9ov6)); +assign Aooiy6 = (~(Ketnv6 | Iooiy6)); +assign Qkoiy6 = (~(Qooiy6 | Yooiy6)); +assign Yooiy6 = (Zzihw6 ? Gpoiy6 : Kvbov6); +assign Gpoiy6 = (~(Iooiy6 & Opoiy6)); +assign Opoiy6 = (~(Wpoiy6 & Eqoiy6)); +assign Eqoiy6 = (~(Ketnv6 & Mqoiy6)); +assign Iooiy6 = (Uqoiy6 & Croiy6); +assign Croiy6 = (~(Kroiy6 & Sroiy6)); +assign Sroiy6 = (Asoiy6 & Isoiy6); +assign Isoiy6 = (Z8c7z6[0] ^ Qsoiy6); +assign Asoiy6 = (Ysoiy6 & Gtoiy6); +assign Gtoiy6 = (Z8c7z6[2] ^ Otoiy6); +assign Ysoiy6 = (~(Wtoiy6 ^ Euoiy6)); +assign Kroiy6 = (Xvehw6 & Muoiy6); +assign Muoiy6 = (~(Mqoiy6 ^ Uuoiy6)); +assign Uqoiy6 = (~(Cvoiy6 & Kvoiy6)); +assign Kvoiy6 = (Svoiy6 & Awoiy6); +assign Awoiy6 = (Mqoiy6 ^ Iwoiy6); +assign Svoiy6 = (Qwoiy6 ^ Ywoiy6); +assign Cvoiy6 = (Gxoiy6 & Oxoiy6); +assign Oxoiy6 = (Wtoiy6 ^ Wxoiy6); +assign Gxoiy6 = (Eyoiy6 ^ Myoiy6); +assign Qooiy6 = (~(Uyoiy6 & G5jiy6)); +assign G5jiy6 = (~(Umoiy6 & Czoiy6)); +assign Umoiy6 = (Qalhw6 & Kzoiy6); +assign Kzoiy6 = (~(Szoiy6 & A0piy6)); +assign A0piy6 = (~(I0piy6 & Q0piy6)); +assign Q0piy6 = (Y0piy6 & G1piy6); +assign G1piy6 = (O1piy6 ^ Ywoiy6); +assign Y0piy6 = (W1piy6 ^ Wxoiy6); +assign I0piy6 = (E2piy6 & M2piy6); +assign M2piy6 = (U2piy6 ^ Myoiy6); +assign E2piy6 = (C3piy6 ^ Iwoiy6); +assign Szoiy6 = (~(K3piy6 & S3piy6)); +assign S3piy6 = (A4piy6 & I4piy6); +assign I4piy6 = (~(O1piy6 ^ Qsoiy6)); +assign O1piy6 = (Q4piy6 & Y4piy6); +assign Y4piy6 = (~(Seihw6 & X7wxx6)); +assign Seihw6 = (!P437x6); +assign P437x6 = (G5piy6 & O5piy6); +assign O5piy6 = (W5piy6 & E6piy6); +assign E6piy6 = (M6piy6 & U6piy6); +assign U6piy6 = (C7piy6 | K7piy6); +assign M6piy6 = (S7piy6 | A8piy6); +assign W5piy6 = (I8piy6 & Q8piy6); +assign Q8piy6 = (Hir8v6 | Y8piy6); +assign I8piy6 = (~(O5h7z6[0] & G9piy6)); +assign G5piy6 = (O9piy6 & W9piy6); +assign W9piy6 = (Eapiy6 & Mapiy6); +assign Mapiy6 = (~(Qij7z6[0] & Ztaov6)); +assign Eapiy6 = (~(Ts97x6 & Ntg7z6[0])); +assign O9piy6 = (Uapiy6 & Cbpiy6); +assign Cbpiy6 = (~(E8h7z6[0] & Kbpiy6)); +assign Q4piy6 = (~(Oac7z6[0] & Czoiy6)); +assign A4piy6 = (Sbpiy6 & Xvehw6); +assign Xvehw6 = (Acpiy6 & Icpiy6); +assign Icpiy6 = (Qcpiy6 & Ycpiy6); +assign Ycpiy6 = (~(Gdpiy6 | Odpiy6)); +assign Qcpiy6 = (Fefhw6 & Wdpiy6); +assign Acpiy6 = (Eepiy6 & Mepiy6); +assign Mepiy6 = (C3riw6 & Cfiiy6); +assign Cfiiy6 = (Ddsiw6 & Aulhw6); +assign Eepiy6 = (Wcsiw6 & V2riw6); +assign Sbpiy6 = (~(W1piy6 ^ Euoiy6)); +assign W1piy6 = (Uepiy6 & Cfpiy6); +assign Cfpiy6 = (~(Gfihw6 & X7wxx6)); +assign Gfihw6 = (~(Kfpiy6 & Sfpiy6)); +assign Sfpiy6 = (Agpiy6 & Igpiy6); +assign Igpiy6 = (Qgpiy6 & Ygpiy6); +assign Ygpiy6 = (~(Ts97x6 & Ntg7z6[3])); +assign Agpiy6 = (Ghpiy6 & Ohpiy6); +assign Ohpiy6 = (Dqr8v6 | Y8piy6); +assign Ghpiy6 = (Whpiy6 | K7piy6); +assign Kfpiy6 = (Eipiy6 & Mipiy6); +assign Mipiy6 = (Uipiy6 & Cjpiy6); +assign Cjpiy6 = (~(Qij7z6[3] & Ztaov6)); +assign Uipiy6 = (Kjpiy6 & Sjpiy6); +assign Sjpiy6 = (~(O5h7z6[3] & G9piy6)); +assign Kjpiy6 = (S7piy6 | Akpiy6); +assign Eipiy6 = (Uapiy6 & Ikpiy6); +assign Ikpiy6 = (~(E8h7z6[3] & Kbpiy6)); +assign Uepiy6 = (~(Czoiy6 & Oac7z6[3])); +assign K3piy6 = (Qkpiy6 & Ykpiy6); +assign Ykpiy6 = (~(U2piy6 ^ Otoiy6)); +assign U2piy6 = (Glpiy6 & Olpiy6); +assign Olpiy6 = (~(Qdihw6 & X7wxx6)); +assign Qdihw6 = (!L937x6); +assign L937x6 = (Wlpiy6 & Empiy6); +assign Empiy6 = (Mmpiy6 & Umpiy6); +assign Umpiy6 = (Qgpiy6 & Cnpiy6); +assign Cnpiy6 = (Nnr8v6 | Y8piy6); +assign Qgpiy6 = (Ayaov6 & Elphw6); +assign Mmpiy6 = (Knpiy6 & Snpiy6); +assign Snpiy6 = (~(O5h7z6[2] & G9piy6)); +assign Knpiy6 = (S7piy6 | Aopiy6); +assign Wlpiy6 = (Iopiy6 & Qopiy6); +assign Qopiy6 = (Yopiy6 & Gppiy6); +assign Gppiy6 = (Oppiy6 | K7piy6); +assign Yopiy6 = (Wppiy6 & Eqpiy6); +assign Eqpiy6 = (~(E8h7z6[2] & Kbpiy6)); +assign Wppiy6 = (~(Ts97x6 & Ntg7z6[2])); +assign Iopiy6 = (Uapiy6 & Mqpiy6); +assign Mqpiy6 = (~(Qij7z6[2] & Ztaov6)); +assign Uapiy6 = (Uqpiy6 & Crpiy6); +assign Crpiy6 = (Krpiy6 & G3a7x6); +assign G3a7x6 = (~(Eekiy6 & Uvvnv6)); +assign Krpiy6 = (Snkiy6 & Qxknv6); +assign Qxknv6 = (~(Kophw6 & Ytlnv6)); +assign Kophw6 = (Dwb7z6[4] & Kioov6); +assign Snkiy6 = (~(Srpiy6 & Vqihw6)); +assign Srpiy6 = (Dioov6 & Dwb7z6[5]); +assign Uqpiy6 = (Aspiy6 & Ispiy6); +assign Ispiy6 = (~(Qij7z6[4] & Ztaov6)); +assign Glpiy6 = (~(Czoiy6 & Oac7z6[2])); +assign Qkpiy6 = (~(C3piy6 ^ Uuoiy6)); +assign C3piy6 = (Qspiy6 & Yspiy6); +assign Yspiy6 = (~(Vcihw6 & X7wxx6)); +assign X7wxx6 = (~(Gtpiy6 & Otpiy6)); +assign Otpiy6 = (Wtpiy6 & Elphw6); +assign Wtpiy6 = (~(R3h7z6[0] & Eupiy6)); +assign Eupiy6 = (~(N3a7x6 & U3a7x6)); +assign Gtpiy6 = (Mupiy6 & Uupiy6); +assign Uupiy6 = (~(Pi9ov6 & Vxihw6)); +assign Mupiy6 = (~(M6a7x6 & Cvpiy6)); +assign Cvpiy6 = (~(Kvpiy6 & Svpiy6)); +assign Svpiy6 = (~(Zzihw6 & Awpiy6)); +assign Awpiy6 = (~(I1d7x6 & Hjihw6)); +assign I1d7x6 = (!Yckiy6); +assign Kvpiy6 = (~(Bh2et6 & Iwpiy6)); +assign Iwpiy6 = (~(Qwpiy6 & Ywpiy6)); +assign Ywpiy6 = (~(S2a7x6 & Ytlnv6)); +assign Qwpiy6 = (Gxpiy6 & N3a7x6); +assign Gxpiy6 = (Oxpiy6 | Dwb7z6[3]); +assign M6a7x6 = (!Wbxdt6); +assign Vcihw6 = (!G337x6); +assign G337x6 = (Wxpiy6 & Eypiy6); +assign Eypiy6 = (Mypiy6 & Uypiy6); +assign Uypiy6 = (Czpiy6 & Ayaov6); +assign Ayaov6 = (~(Dophw6 & Vqihw6)); +assign Czpiy6 = (Kzpiy6 & Elphw6); +assign Kzpiy6 = (~(Szpiy6 & Qij7z6[1])); +assign Szpiy6 = (Ztaov6 & Tdwxx6); +assign Mypiy6 = (A0qiy6 & I0qiy6); +assign I0qiy6 = (~(O5h7z6[1] & G9piy6)); +assign G9piy6 = (~(Q0qiy6 | Y0qiy6)); +assign Q0qiy6 = (Whxdt6 & Uebdt6); +assign A0qiy6 = (~(Ts97x6 & Ntg7z6[1])); +assign Ts97x6 = (Yckiy6 & G1qiy6); +assign Wxpiy6 = (O1qiy6 & W1qiy6); +assign W1qiy6 = (E2qiy6 & M2qiy6); +assign M2qiy6 = (Xkr8v6 | Y8piy6); +assign Y8piy6 = (~(U2qiy6 | Dihhw6)); +assign U2qiy6 = (C3qiy6 & K3qiy6); +assign K3qiy6 = (S3qiy6 | A4qiy6); +assign E2qiy6 = (I4qiy6 & Q4qiy6); +assign Q4qiy6 = (S7piy6 | C8a7x6); +assign S7piy6 = (~(Y4qiy6 & G5qiy6)); +assign G5qiy6 = (Vt97x6 & Uvvnv6); +assign Y4qiy6 = (Y0qiy6 & S2a7x6); +assign I4qiy6 = (O9kiy6 | K7piy6); +assign K7piy6 = (O5qiy6 & W5qiy6); +assign W5qiy6 = (E6qiy6 & M6qiy6); +assign M6qiy6 = (~(U6qiy6 & C3qiy6)); +assign C3qiy6 = (Ruxxx6 & Luvnv6); +assign U6qiy6 = (~(S3qiy6 | A4qiy6)); +assign A4qiy6 = (F6a7x6 & C7qiy6); +assign C7qiy6 = (~(Vxihw6 & K7qiy6)); +assign K7qiy6 = (~(N6xiw6 & Bfo7v6)); +assign F6a7x6 = (Glkiy6 | S7qiy6); +assign S7qiy6 = (!Mikiy6); +assign Mikiy6 = (Q9xdt6 & Zzihw6); +assign S3qiy6 = (!D5a7x6); +assign D5a7x6 = (~(Lxydt6 | Emhhw6)); +assign Emhhw6 = (Wfxdt6 & Bfo7v6); +assign E6qiy6 = (T4jnv6 & Tulnv6); +assign O5qiy6 = (A8qiy6 & Mmkiy6); +assign Mmkiy6 = (~(I8qiy6 & Yckiy6)); +assign I8qiy6 = (!G1qiy6); +assign G1qiy6 = (~(Iga7z6 & Q8qiy6)); +assign A8qiy6 = (~(Y8qiy6 & Y0qiy6)); +assign Y8qiy6 = (Cnkiy6 & S2a7x6); +assign Cnkiy6 = (!Vt97x6); +assign Vt97x6 = (~(Aga7z6 & Q8qiy6)); +assign Q8qiy6 = (~(Hsa7x6 & Wjfhw6)); +assign Wjfhw6 = (!Q9xdt6); +assign Hsa7x6 = (!Vxihw6); +assign O1qiy6 = (Aspiy6 & G9qiy6); +assign G9qiy6 = (~(E8h7z6[1] & Kbpiy6)); +assign Kbpiy6 = (O9qiy6 & Whxdt6); +assign O9qiy6 = (~(Ijmov6 | Y0qiy6)); +assign Y0qiy6 = (W9qiy6 & N3a7x6); +assign N3a7x6 = (Tpvxx6 | Dwb7z6[1]); +assign W9qiy6 = (U3a7x6 & Oxpiy6); +assign U3a7x6 = (!M2kiy6); +assign M2kiy6 = (Ltvxx6 & Vqihw6); +assign Aspiy6 = (Eaqiy6 & Maqiy6); +assign Maqiy6 = (Uaqiy6 & Cbqiy6); +assign Cbqiy6 = (~(Riuxx6 & Luvnv6)); +assign Riuxx6 = (~(Zna7x6 | Sna7x6)); +assign Uaqiy6 = (Kbqiy6 & X1a7x6); +assign X1a7x6 = (~(Ywaov6 & Dwb7z6[2])); +assign Kbqiy6 = (~(Tiphw6 & Kioov6)); +assign Eaqiy6 = (Sbqiy6 & Acqiy6); +assign Acqiy6 = (~(Icqiy6 & Vqihw6)); +assign Icqiy6 = (Nvvnv6 & Gvvnv6); +assign Sbqiy6 = (Q1a7x6 & Ix97x6); +assign Ix97x6 = (~(Qcqiy6 & Dioov6)); +assign Qcqiy6 = (Fxaov6 & Dwb7z6[5]); +assign Q1a7x6 = (~(Ckphw6 & Fulnv6)); +assign Ckphw6 = (Lpwxx6 & Uvvnv6); +assign Qspiy6 = (~(Czoiy6 & Oac7z6[1])); +assign Czoiy6 = (Ycqiy6 & Ixfov6); +assign Ixfov6 = (Gdqiy6 & Jm8iw6); +assign Jm8iw6 = (!Zjb7z6[9]); +assign Gdqiy6 = (~(Pxfov6 & Odqiy6)); +assign Odqiy6 = (~(Wdqiy6 & Eeqiy6)); +assign Eeqiy6 = (~(Meqiy6 & Ueqiy6)); +assign Ueqiy6 = (Cfqiy6 & Kfqiy6); +assign Kfqiy6 = (~(Sfqiy6 & Notiw6)); +assign Sfqiy6 = (V9riw6 & Oo07x6); +assign V9riw6 = (Agqiy6 & Igqiy6); +assign Igqiy6 = (Qgqiy6 & Ygqiy6); +assign Ygqiy6 = (Ghqiy6 & Ohqiy6); +assign Ohqiy6 = (~(Uh2ov6 | M6jiy6)); +assign Uh2ov6 = (J1gov6 & Wxkiy6); +assign Ghqiy6 = (Whqiy6 & D7u6x6); +assign D7u6x6 = (~(Doadt6 & Eiqiy6)); +assign Eiqiy6 = (~(Miqiy6 & Tdxxx6)); +assign Tdxxx6 = (Twphw6 & T4jnv6); +assign T4jnv6 = (!Cwlnv6); +assign Miqiy6 = (~(Dur7x6 | Fvr7x6)); +assign Fvr7x6 = (Uiqiy6 & Ydziw6); +assign Uiqiy6 = (~(Ketnv6 | Cngdt6)); +assign Ketnv6 = (!Pxfov6); +assign Dur7x6 = (~(Tpvxx6 | Bwvnv6)); +assign Tpvxx6 = (!Mahiy6); +assign Whqiy6 = (~(Cjqiy6 & Kjqiy6)); +assign Kjqiy6 = (Sjqiy6 & Akqiy6); +assign Akqiy6 = (Ovbdt6 ^ Qwoiy6); +assign Sjqiy6 = (Uqd7z6[17] ^ Mqoiy6); +assign Cjqiy6 = (Ikqiy6 & Qkqiy6); +assign Qkqiy6 = (Uqd7z6[18] ^ Eyoiy6); +assign Ikqiy6 = (Uqd7z6[19] ^ Wtoiy6); +assign Qgqiy6 = (Ykqiy6 & Ydziw6); +assign Ykqiy6 = (Pxfov6 & Glqiy6); +assign Glqiy6 = (~(Olqiy6 & Wlqiy6)); +assign Wlqiy6 = (Emqiy6 & Mmqiy6); +assign Mmqiy6 = (Zec7z6[0] ^ Qwoiy6); +assign Emqiy6 = (Zec7z6[1] ^ Mqoiy6); +assign Olqiy6 = (Umqiy6 & Cnqiy6); +assign Cnqiy6 = (Zec7z6[2] ^ Eyoiy6); +assign Umqiy6 = (Zec7z6[3] ^ Wtoiy6); +assign Agqiy6 = (Knqiy6 & Snqiy6); +assign Snqiy6 = (Aoqiy6 & Ioqiy6); +assign Ioqiy6 = (Z9nhw6 ^ Qwoiy6); +assign Qwoiy6 = (!Z8c7z6[0]); +assign Aoqiy6 = (Uyoiy6 & Oqviw6); +assign Oqviw6 = (Qoqiy6 & Q1ghw6); +assign Q1ghw6 = (!Q8onv6); +assign Qoqiy6 = (!Mhwiw6); +assign Mhwiw6 = (~(Yoqiy6 & X8onv6)); +assign Yoqiy6 = (P8wiw6 & E9onv6); +assign Knqiy6 = (Gpqiy6 & Opqiy6); +assign Opqiy6 = (Zec7z6[30] ^ Eyoiy6); +assign Eyoiy6 = (!Z8c7z6[2]); +assign Gpqiy6 = (Wpqiy6 & Eqqiy6); +assign Eqqiy6 = (Zec7z6[31] ^ Wtoiy6); +assign Wpqiy6 = (M6nhw6 ^ Mqoiy6); +assign Mqoiy6 = (!Z8c7z6[1]); +assign Cfqiy6 = (~(A827x6 | Nvtiw6)); +assign Nvtiw6 = (!Ot27x6); +assign Ot27x6 = (~(Mqqiy6 & Bdf7z6[0])); +assign Mqqiy6 = (Muhiy6 & D4aov6); +assign Muhiy6 = (~(Ju27x6 | Bdf7z6[1])); +assign A827x6 = (~(D4aov6 | Y4aov6)); +assign Y4aov6 = (!G427x6); +assign G427x6 = (Bdf7z6[1] & Bdf7z6[0]); +assign Meqiy6 = (Uqqiy6 & Crqiy6); +assign Crqiy6 = (Ol8iw6 | Krqiy6); +assign Krqiy6 = (Ydziw6 & Nf4ov6); +assign Nf4ov6 = (!Oztiw6); +assign Oztiw6 = (Wxkiy6 & Xp07x6); +assign Ydziw6 = (!H827x6); +assign H827x6 = (J227x6 | Svziw6); +assign Svziw6 = (Srqiy6 & Dte7z6[15]); +assign Srqiy6 = (~(Zao6x6 | J227x6)); +assign Zao6x6 = (!Xp07x6); +assign Xp07x6 = (Dte7z6[14] & Dte7z6[13]); +assign Ol8iw6 = (~(Asqiy6 & Ngxxx6)); +assign Asqiy6 = (K4aov6 & Ju27x6); +assign Uqqiy6 = (~(Isqiy6 & Aetiw6)); +assign Aetiw6 = (!Ehgdt6); +assign Isqiy6 = (Tdtiw6 | Qwkiy6); +assign Qwkiy6 = (Qsqiy6 & M5aov6); +assign Qsqiy6 = (Bdf7z6[0] & Oo07x6); +assign Oo07x6 = (!Vo07x6); +assign Vo07x6 = (~(Ysqiy6 | Djgdt6)); +assign Ysqiy6 = (Bqziw6 & Wxkiy6); +assign Wxkiy6 = (~(J227x6 | Dte7z6[15])); +assign J227x6 = (~(Dte7z6[17] & Dte7z6[16])); +assign Bqziw6 = (!Kz17x6); +assign Kz17x6 = (Nzz6x6 | Dte7z6[13]); +assign Nzz6x6 = (!Dte7z6[14]); +assign Tdtiw6 = (!E4lhw6); +assign Wdqiy6 = (~(Ubhdt6 & Uqkiy6)); +assign Uqkiy6 = (~(Gtqiy6 | Awkiy6)); +assign Awkiy6 = (~(Otqiy6 & K537x6)); +assign K537x6 = (Wtqiy6 ? Xwe7z6[0] : Oac7z6[0]); +assign Otqiy6 = (Z937x6 & X837x6); +assign X837x6 = (Wtqiy6 ? Xwe7z6[3] : Oac7z6[3]); +assign Z937x6 = (Euqiy6 ? Oac7z6[2] : Xwe7z6[2]); +assign Gtqiy6 = (B437x6 | Qg2nv6); +assign B437x6 = (Euqiy6 ? Oac7z6[1] : Xwe7z6[1]); +assign Euqiy6 = (!Wtqiy6); +assign Wtqiy6 = (~(Muqiy6 & Q8iiy6)); +assign Q8iiy6 = (~(M5aov6 & R4aov6)); +assign Muqiy6 = (~(Ehgdt6 & Uuqiy6)); +assign Uuqiy6 = (~(Pbtiw6 & E4lhw6)); +assign E4lhw6 = (~(Cvqiy6 & Ngxxx6)); +assign Ngxxx6 = (R4aov6 & D4aov6); +assign D4aov6 = (!Bdf7z6[2]); +assign R4aov6 = (!Bdf7z6[0]); +assign Cvqiy6 = (Bdf7z6[1] & Bdf7z6[3]); +assign Pbtiw6 = (!Notiw6); +assign Notiw6 = (M5aov6 & K4aov6); +assign K4aov6 = (!Bdf7z6[1]); +assign M5aov6 = (Bdf7z6[2] & Ju27x6); +assign Ju27x6 = (!Bdf7z6[3]); +assign Ycqiy6 = (Ubhdt6 & Pxfov6); +assign Cgsiw6 = (Kvqiy6 & Svqiy6); +assign Svqiy6 = (~(Awqiy6 | Wpoiy6)); +assign Wpoiy6 = (~(Iwqiy6 | Wtoiy6)); +assign Wtoiy6 = (!Z8c7z6[3]); +assign Iwqiy6 = (~(Z8c7z6[2] & Z8c7z6[0])); +assign Awqiy6 = (Qwqiy6 & Xvlhw6); +assign Xvlhw6 = (Ywqiy6 & C8onv6); +assign C8onv6 = (~(Vulhw6 & Gxqiy6)); +assign Vulhw6 = (~(Zilhw6 | Vsnov6)); +assign Vsnov6 = (Oxqiy6 & Gxqiy6); +assign Oxqiy6 = (Kssov6 & Uqd7z6[17]); +assign Zilhw6 = (Wxqiy6 & Ijtov6); +assign Ijtov6 = (Eyqiy6 & Hftov6); +assign Eyqiy6 = (Uqd7z6[18] & Fjohw6); +assign Wxqiy6 = (Gxqiy6 & Qjwiw6); +assign Gxqiy6 = (Myqiy6 & Uyqiy6); +assign Uyqiy6 = (Buihw6 & Qtnov6); +assign Myqiy6 = (Czqiy6 & Kzqiy6); +assign Ywqiy6 = (~(Szqiy6 & A0riy6)); +assign A0riy6 = (~(I0riy6 | Q0riy6)); +assign Szqiy6 = (~(Y0riy6 | G1riy6)); +assign Qwqiy6 = (O1riy6 & Zplhw6); +assign Zplhw6 = (~(Oulhw6 & W1riy6)); +assign Oulhw6 = (~(Silhw6 | Jtnov6)); +assign Jtnov6 = (E2riy6 & W1riy6); +assign E2riy6 = (E3fhw6 & Xeinv6); +assign Silhw6 = (M2riy6 & U2riy6); +assign U2riy6 = (Qtnov6 & Zpehw6); +assign M2riy6 = (Ttehw6 & W1riy6); +assign W1riy6 = (~(C3riy6 | K3riy6)); +assign C3riy6 = (~(Z3fhw6 & S3riy6)); +assign O1riy6 = (~(A4riy6 & I4riy6)); +assign I4riy6 = (Q4riy6 & E6jiy6); +assign E6jiy6 = (~(Dte7z6[18] | Dte7z6[19])); +assign Q4riy6 = (W4onv6 & A2sov6); +assign W4onv6 = (~(Y4riy6 & Z3fhw6)); +assign Y4riy6 = (S3riy6 & K3riy6); +assign A4riy6 = (G5riy6 & M6jiy6); +assign M6jiy6 = (O5riy6 & W5riy6); +assign W5riy6 = (Wqfov6 & Drfov6); +assign O5riy6 = (E6riy6 & M6riy6); +assign M6riy6 = (~(U6riy6 & Ohe7z6[6])); +assign U6riy6 = (Ohe7z6[5] & Ohe7z6[7]); +assign E6riy6 = (~(C7riy6 ^ K7riy6)); +assign K7riy6 = (N0gdt6 ^ Ohe7z6[4]); +assign G5riy6 = (Buxxx6 & Z9onv6); +assign Z9onv6 = (~(S7riy6 & Z3fhw6)); +assign S7riy6 = (I5fhw6 & Bainv6); +assign Buxxx6 = (~(Ii9ov6 & Kvbov6)); +assign Kvbov6 = (!T3cdt6); +assign Kvqiy6 = (Uyoiy6 & A8riy6); +assign A8riy6 = (~(I8riy6 & Gtiiy6)); +assign Gtiiy6 = (Q8riy6 & Y8riy6); +assign Y8riy6 = (G9riy6 & Adohw6); +assign G9riy6 = (~(O9riy6 & W9riy6)); +assign W9riy6 = (Eariy6 & Mariy6); +assign Mariy6 = (!Zec7z6[19]); +assign Eariy6 = (!Zec7z6[18]); +assign O9riy6 = (Uariy6 & Cbriy6); +assign Cbriy6 = (!Zec7z6[17]); +assign Uariy6 = (!Zec7z6[16]); +assign I8riy6 = (Uiiiy6 & Kbriy6); +assign Uiiiy6 = (Sbriy6 & Zec7z6[25]); +assign Sbriy6 = (Ubsiw6 & Zec7z6[31]); +assign Uyoiy6 = (Acriy6 & Icriy6); +assign Icriy6 = (Qcriy6 & Vzvnv6); +assign Vzvnv6 = (!Zgadt6); +assign Qcriy6 = (Qg2nv6 & C0wnv6); +assign C0wnv6 = (!Nneet6); +assign Acriy6 = (W6u6x6 & Mjhov6); +assign Tka7x6 = (~(Mulnv6 & Oxpiy6)); +assign Qgoiy6 = (~(Tiphw6 & Ycriy6)); +assign Ycriy6 = (~(Hbo7v6 & Cziiy6)); +assign Hbo7v6 = (!Y3jnv6); +assign Icoiy6 = (Gdriy6 & Odriy6); +assign Odriy6 = (Wdriy6 & Eeriy6); +assign Eeriy6 = (~(Meriy6 & Kioov6)); +assign Meriy6 = (Ueriy6 & Cfriy6); +assign Cfriy6 = (~(Kfriy6 & Dwb7z6[5])); +assign Kfriy6 = (Lxydt6 & Uvvnv6); +assign Ueriy6 = (~(Dioov6 & Bfo7v6)); +assign Wdriy6 = (Sfriy6 & Agriy6); +assign Agriy6 = (~(Bhoov6 & Y3jnv6)); +assign Y3jnv6 = (~(Igriy6 & Qgriy6)); +assign Qgriy6 = (Ygriy6 & G2oov6); +assign G2oov6 = (!Iladt6); +assign Ygriy6 = (~(U5u6x6 & M7mov6)); +assign Igriy6 = (P6u6x6 & Ghriy6); +assign Ghriy6 = (~(Lqfxx6 & Eqfxx6)); +assign Eqfxx6 = (~(Z1oov6 & V4jhw6)); +assign Sfriy6 = (~(Dwb7z6[1] & Ohriy6)); +assign Ohriy6 = (~(Sga7x6 & Zna7x6)); +assign Sga7x6 = (!Dioov6); +assign Gdriy6 = (Whriy6 & Eiriy6); +assign Eiriy6 = (Dwb7z6[4] ? Uiriy6 : Miriy6); +assign Uiriy6 = (~(Dwb7z6[0] & Cjriy6)); +assign Cjriy6 = (~(Dwb7z6[2] & Lxydt6)); +assign Miriy6 = (~(Kjriy6 & Sjriy6)); +assign Sjriy6 = (Dioov6 & Akriy6); +assign Akriy6 = (~(Pdlhw6 & Qg2nv6)); +assign Kjriy6 = (J8a7x6 & Bh2et6); +assign J8a7x6 = (Ikriy6 & Ntg7z6[3]); +assign Ikriy6 = (Ntg7z6[2] & Ntg7z6[0]); +assign Whriy6 = (Qkriy6 & Ykriy6); +assign Ykriy6 = (~(Glriy6 & Luvnv6)); +assign Glriy6 = (~(Olriy6 & Wlriy6)); +assign Wlriy6 = (~(Emriy6 & Mmriy6)); +assign Emriy6 = (~(Bfo7v6 & Gvvnv6)); +assign Olriy6 = (Umriy6 & Cnriy6); +assign Cnriy6 = (~(Bhoov6 & Knriy6)); +assign Knriy6 = (~(Uuinv6 & O5a7z6)); +assign Uuinv6 = (~(Dwinv6 | Iga7z6)); +assign Dwinv6 = (!Cziiy6); +assign Cziiy6 = (~(Snriy6 & Aoriy6)); +assign Aoriy6 = (Ioriy6 & Qoriy6); +assign Qoriy6 = (Brriw6 | Yoriy6); +assign Yoriy6 = (Gpriy6 & Yzriw6); +assign Yzriw6 = (Opriy6 & Mjq6x6); +assign Mjq6x6 = (!Zeihw6); +assign Zeihw6 = (~(Wpriy6 & Eqriy6)); +assign Eqriy6 = (Mqriy6 & Uqriy6); +assign Uqriy6 = (Crriy6 & Krriy6); +assign Krriy6 = (~(Zec7z6[0] & Srriy6)); +assign Mqriy6 = (Asriy6 & Isriy6); +assign Isriy6 = (Wkriw6 | Fcinv6); +assign Asriy6 = (~(Ovbdt6 & Qsriy6)); +assign Wpriy6 = (Ysriy6 & Gtriy6); +assign Gtriy6 = (Otriy6 & Wtriy6); +assign Wtriy6 = (~(Mynhw6 & Zec7z6[24])); +assign Otriy6 = (U2ohw6 | Qvlhw6); +assign Ysriy6 = (Qsoiy6 & E7phw6); +assign Qsoiy6 = (Euriy6 & Muriy6); +assign Muriy6 = (Uuriy6 & Cvriy6); +assign Cvriy6 = (~(Kvriy6 & Zec7z6[8])); +assign Uuriy6 = (Svriy6 & G1kxx6); +assign Svriy6 = (~(Zec7z6[0] & Gdpiy6)); +assign Euriy6 = (Awriy6 & Iwriy6); +assign Iwriy6 = (Ctnov6 | Y447x6); +assign Awriy6 = (Qwriy6 & Ywriy6); +assign Ywriy6 = (Gxriy6 | Kfa7z6); +assign Qwriy6 = (~(Vuehw6 & Zec7z6[6])); +assign Opriy6 = (Nfihw6 & Xdihw6); +assign Xdihw6 = (~(Oxriy6 & Wxriy6)); +assign Wxriy6 = (Eyriy6 & Myriy6); +assign Myriy6 = (Crriy6 & Uyriy6); +assign Uyriy6 = (~(Zec7z6[2] & Srriy6)); +assign Eyriy6 = (Czriy6 & Kzriy6); +assign Kzriy6 = (Wkriw6 | Bainv6); +assign Czriy6 = (~(Uqd7z6[18] & Qsriy6)); +assign Oxriy6 = (Szriy6 & A0siy6); +assign A0siy6 = (I0siy6 & Q0siy6); +assign Q0siy6 = (~(Mynhw6 & Zec7z6[26])); +assign I0siy6 = (Zpehw6 | Qvlhw6); +assign Szriy6 = (Otoiy6 & E7phw6); +assign Otoiy6 = (Y0siy6 & G1siy6); +assign G1siy6 = (O1siy6 & W1siy6); +assign W1siy6 = (Adohw6 | Gxriy6); +assign O1siy6 = (E2siy6 & G1kxx6); +assign E2siy6 = (~(Zec7z6[2] & Gdpiy6)); +assign Y0siy6 = (M2siy6 & U2siy6); +assign U2siy6 = (Jbqiw6 | Y447x6); +assign M2siy6 = (C3siy6 & K3siy6); +assign K3siy6 = (~(Kvriy6 & Zec7z6[10])); +assign C3siy6 = (~(Vuehw6 & Zec7z6[8])); +assign Nfihw6 = (~(S3siy6 & A4siy6)); +assign A4siy6 = (I4siy6 & Q4siy6); +assign Q4siy6 = (Crriy6 & G1kxx6); +assign Crriy6 = (Onlhw6 & I1wiw6); +assign I4siy6 = (Y4siy6 & G5siy6); +assign G5siy6 = (~(Zec7z6[3] & O5siy6)); +assign O5siy6 = (~(Mquiw6 & Hffhw6)); +assign Mquiw6 = (~(Bvuiw6 | V0nhw6)); +assign Y4siy6 = (~(Uqd7z6[19] & Qsriy6)); +assign S3siy6 = (W5siy6 & E6siy6); +assign E6siy6 = (M6siy6 & U6siy6); +assign U6siy6 = (~(Mynhw6 & Zec7z6[27])); +assign M6siy6 = (~(Zec7z6[6] & C7siy6)); +assign C7siy6 = (K7siy6 | G5sov6); +assign G5sov6 = (!Amtov6); +assign W5siy6 = (Euoiy6 & E7phw6); +assign Euoiy6 = (S7siy6 & A8siy6); +assign A8siy6 = (Fjohw6 | Y447x6); +assign S7siy6 = (Elviw6 | Gxriy6); +assign Gpriy6 = (Ltq6x6 & F4ihw6); +assign F4ihw6 = (~(I8siy6 & Q8siy6)); +assign Q8siy6 = (Y8siy6 & G9siy6); +assign G9siy6 = (O9siy6 & I1wiw6); +assign O9siy6 = (Qtnov6 | Qvlhw6); +assign Y8siy6 = (W9siy6 & Easiy6); +assign Easiy6 = (~(Uqd7z6[17] & Qsriy6)); +assign W9siy6 = (Wkriw6 | Xeinv6); +assign I8siy6 = (Masiy6 & Uasiy6); +assign Uasiy6 = (Cbsiy6 & Kbsiy6); +assign Kbsiy6 = (~(Mynhw6 & Zec7z6[25])); +assign Cbsiy6 = (~(Zec7z6[1] & Srriy6)); +assign Srriy6 = (~(Sbsiy6 & A7onv6)); +assign Masiy6 = (Uuoiy6 & E7phw6); +assign Uuoiy6 = (Acsiy6 & Icsiy6); +assign Icsiy6 = (Qcsiy6 & Ycsiy6); +assign Ycsiy6 = (~(Kvriy6 & Zec7z6[9])); +assign Qcsiy6 = (Gdsiy6 & G1kxx6); +assign Gdsiy6 = (~(Zec7z6[1] & Gdpiy6)); +assign Acsiy6 = (Odsiy6 & Wdsiy6); +assign Wdsiy6 = (Jgtov6 | Y447x6); +assign Odsiy6 = (Eesiy6 & Mesiy6); +assign Mesiy6 = (Gxriy6 | Bat8v6); +assign Bat8v6 = (!M6nhw6); +assign Eesiy6 = (~(Vuehw6 & Zec7z6[7])); +assign Ltq6x6 = (~(Uesiy6 & Cfsiy6)); +assign Cfsiy6 = (Kfsiy6 & Sfsiy6); +assign Sfsiy6 = (Agsiy6 & Igsiy6); +assign Igsiy6 = (Wkriw6 & Irsov6); +assign Agsiy6 = (~(Gxriw6 | Bmwiw6)); +assign Bmwiw6 = (!M6onv6); +assign Gxriw6 = (Vuehw6 & Qgsiy6); +assign Qgsiy6 = (~(Gginv6 & Ygsiy6)); +assign Ygsiy6 = (!Cvehw6); +assign Kfsiy6 = (Ghsiy6 & Ohsiy6); +assign Ohsiy6 = (~(Rzriw6 & Gginv6)); +assign Rzriw6 = (~(Nrqiw6 & Whsiy6)); +assign Ghsiy6 = (Eisiy6 & F0fhw6); +assign Eisiy6 = (~(V0nhw6 & Misiy6)); +assign Misiy6 = (~(Hwpiw6 & E3fhw6)); +assign Hwpiw6 = (!Mxuiw6); +assign Mxuiw6 = (~(Uisiy6 & D4ohw6)); +assign D4ohw6 = (~(M6nhw6 | Z9nhw6)); +assign Uisiy6 = (Nqlhw6 & Adohw6); +assign Uesiy6 = (Cjsiy6 & Kjsiy6); +assign Kjsiy6 = (Sjsiy6 & Aksiy6); +assign Aksiy6 = (Iksiy6 & Qksiy6); +assign Qksiy6 = (~(Yksiy6 & Kzriw6)); +assign Iksiy6 = (~(Auehw6 & Rktov6)); +assign Sjsiy6 = (Bouiw6 & Sbsiy6); +assign Sbsiy6 = (Glsiy6 & Smuiw6); +assign Smuiw6 = (Buviw6 & Dssov6); +assign Glsiy6 = (Hffhw6 & A2sov6); +assign Hffhw6 = (~(Olsiy6 & Wlsiy6)); +assign Wlsiy6 = (Lofhw6 & Buihw6); +assign Olsiy6 = (Emsiy6 & Hxviw6); +assign Bouiw6 = (Mmsiy6 & Nqehw6); +assign Mmsiy6 = (T6onv6 & D0riw6); +assign Cjsiy6 = (Umsiy6 & Jvriw6); +assign Umsiy6 = (Qvlhw6 & Cgfhw6); +assign Cgfhw6 = (Cnsiy6 & Knsiy6); +assign Knsiy6 = (Snsiy6 & Onlhw6); +assign Onlhw6 = (!P3vxx6); +assign Snsiy6 = (I1wiw6 & Vnlhw6); +assign Cnsiy6 = (Gqehw6 & Aosiy6); +assign Aosiy6 = (~(Rdfhw6 & Yksiy6)); +assign Rdfhw6 = (!Nrqiw6); +assign Qvlhw6 = (Iosiy6 & Emiiy6); +assign Iosiy6 = (C3riw6 & Amtov6); +assign C3riw6 = (Qosiy6 & Yosiy6); +assign Yosiy6 = (~(Gpsiy6 & Yksiy6)); +assign Qosiy6 = (Ayuiw6 & Stuiw6); +assign Stuiw6 = (~(Opsiy6 & Wpsiy6)); +assign Opsiy6 = (Gginv6 & Eqsiy6); +assign Ayuiw6 = (~(Gpsiy6 & Ydfhw6)); +assign Gpsiy6 = (Mqsiy6 & Uqsiy6); +assign Brriw6 = (Crsiy6 & Npfhw6); +assign Npfhw6 = (~(B2xxx6 | Eofhw6)); +assign Eofhw6 = (!Sofhw6); +assign Sofhw6 = (~(Krsiy6 & Srsiy6)); +assign Srsiy6 = (Assiy6 & Issiy6); +assign Issiy6 = (Qssiy6 & Yssiy6); +assign Yssiy6 = (~(Zec7z6[4] & Nxlhw6)); +assign Qssiy6 = (Gtsiy6 & Z0kxx6); +assign Gtsiy6 = (~(Zec7z6[9] & Oipiw6)); +assign Assiy6 = (Otsiy6 & Wtsiy6); +assign Wtsiy6 = (S8ohw6 | D447x6); +assign Otsiy6 = (~(Bvuiw6 & Uqd7z6[17])); +assign Krsiy6 = (Eusiy6 & Musiy6); +assign Musiy6 = (~(Iwoiy6 | Uusiy6)); +assign Uusiy6 = (~(A7onv6 | Buihw6)); +assign Iwoiy6 = (~(Cvsiy6 & Kvsiy6)); +assign Kvsiy6 = (Svsiy6 & G1kxx6); +assign Svsiy6 = (~(Zec7z6[4] & Cniiy6)); +assign Cvsiy6 = (Awsiy6 & Iwsiy6); +assign Iwsiy6 = (~(Zec7z6[1] & Qwsiy6)); +assign Awsiy6 = (~(Odpiy6 & Zec7z6[9])); +assign Eusiy6 = (Asiiy6 & Jvlhw6); +assign Asiiy6 = (Hulhw6 & Ywsiy6); +assign Ywsiy6 = (S8ohw6 | Emiiy6); +assign B2xxx6 = (!Xnfhw6); +assign Xnfhw6 = (Gxsiy6 & Oxsiy6); +assign Oxsiy6 = (Wxsiy6 & Eysiy6); +assign Eysiy6 = (Mysiy6 & Uysiy6); +assign Uysiy6 = (~(Zec7z6[0] & Czsiy6)); +assign Mysiy6 = (~(Zec7z6[8] & Oipiw6)); +assign Wxsiy6 = (Kzsiy6 & Szsiy6); +assign Szsiy6 = (~(Bvuiw6 & Ovbdt6)); +assign Kzsiy6 = (~(V0nhw6 & Zec7z6[24])); +assign Gxsiy6 = (A0tiy6 & I0tiy6); +assign A0tiy6 = (~(Ywoiy6 | Q0tiy6)); +assign Q0tiy6 = (Zec7z6[3] & Nxlhw6); +assign Ywoiy6 = (~(Y0tiy6 & G1tiy6)); +assign G1tiy6 = (O1tiy6 & W1tiy6); +assign W1tiy6 = (~(Zec7z6[3] & Cniiy6)); +assign O1tiy6 = (~(Zec7z6[0] & Qwsiy6)); +assign Y0tiy6 = (Fefhw6 & E2tiy6); +assign E2tiy6 = (~(Odpiy6 & Zec7z6[8])); +assign Crsiy6 = (Omfhw6 & Rrfhw6); +assign Rrfhw6 = (~(M2tiy6 & U2tiy6)); +assign U2tiy6 = (C3tiy6 & K3tiy6); +assign K3tiy6 = (S3tiy6 & A4tiy6); +assign A4tiy6 = (~(Zec7z6[2] & Czsiy6)); +assign Czsiy6 = (~(D447x6 & Emiiy6)); +assign Emiiy6 = (I4tiy6 & Q4tiy6); +assign Q4tiy6 = (~(K7siy6 | Mtehw6)); +assign Mtehw6 = (Zrwiw6 & V1fhw6); +assign I4tiy6 = (K4uiw6 & Anriw6); +assign Anriw6 = (Y4tiy6 & G5tiy6); +assign G5tiy6 = (O5tiy6 & Uh37x6); +assign Uh37x6 = (~(W5tiy6 & Obwiw6)); +assign O5tiy6 = (Lpsov6 & Xhriw6); +assign Xhriw6 = (~(E6tiy6 & M6tiy6)); +assign Lpsov6 = (!Gh37x6); +assign Gh37x6 = (M6tiy6 & Oyuiw6); +assign Y4tiy6 = (U6tiy6 & Ydsiw6); +assign Ydsiw6 = (C7tiy6 & K7tiy6); +assign K7tiy6 = (S7tiy6 & A4wiw6); +assign A4wiw6 = (~(Hyuiw6 & P5fhw6)); +assign S7tiy6 = (Ldwiw6 & H4wiw6); +assign H4wiw6 = (~(E6tiy6 & Hyuiw6)); +assign Ldwiw6 = (~(W5tiy6 & Sywiw6)); +assign C7tiy6 = (Ekwiw6 & Wdriw6); +assign Wdriw6 = (~(A8tiy6 | Q6viw6)); +assign Q6viw6 = (I8tiy6 & Hyuiw6); +assign I8tiy6 = (Sywiw6 & Fcinv6); +assign A8tiy6 = (Hyuiw6 & Q8tiy6); +assign Ekwiw6 = (Y8tiy6 & G2uiw6); +assign G2uiw6 = (!Zbsov6); +assign Zbsov6 = (Q8tiy6 & M6tiy6); +assign Q8tiy6 = (~(G9tiy6 | Bainv6)); +assign G9tiy6 = (!Ttehw6); +assign Y8tiy6 = (~(W5tiy6 & B0xiw6)); +assign W5tiy6 = (M6tiy6 & Fcinv6); +assign U6tiy6 = (X9fhw6 & Epsov6); +assign Epsov6 = (~(M6tiy6 & P5fhw6)); +assign X9fhw6 = (~(O9tiy6 & M6tiy6)); +assign M6tiy6 = (W9tiy6 & V1fhw6); +assign K4uiw6 = (Eatiy6 & Matiy6); +assign Matiy6 = (~(P5fhw6 & Uatiy6)); +assign P5fhw6 = (~(M2xiw6 | Zec7z6[6])); +assign M2xiw6 = (!Zdwiw6); +assign Eatiy6 = (Pyehw6 & N4fhw6); +assign N4fhw6 = (~(Uatiy6 & Oyuiw6)); +assign Oyuiw6 = (Obwiw6 & Zec7z6[6]); +assign Pyehw6 = (~(E6tiy6 & Uatiy6)); +assign Uatiy6 = (Cbtiy6 & V1fhw6); +assign Cbtiy6 = (I5fhw6 & Zec7z6[11]); +assign E6tiy6 = (Ttehw6 & Bainv6); +assign Ttehw6 = (~(Fcinv6 | Zec7z6[7])); +assign S3tiy6 = (~(Zec7z6[10] & Oipiw6)); +assign Oipiw6 = (!Aulhw6); +assign Aulhw6 = (~(Nh37x6 | V8fhw6)); +assign V8fhw6 = (~(W5siw6 | Kbtiy6)); +assign Nh37x6 = (~(W5siw6 | Yksiy6)); +assign W5siw6 = (~(Mqsiy6 & Zec7z6[13])); +assign Mqsiy6 = (Sbtiy6 & Eqsiy6); +assign C3tiy6 = (Actiy6 & Ictiy6); +assign Ictiy6 = (~(Bvuiw6 & Uqd7z6[18])); +assign Actiy6 = (~(V0nhw6 & Zec7z6[26])); +assign M2tiy6 = (Qctiy6 & I0tiy6); +assign Qctiy6 = (~(Myoiy6 | Yctiy6)); +assign Yctiy6 = (Zec7z6[5] & Nxlhw6); +assign Nxlhw6 = (~(Gdtiy6 & Buviw6)); +assign Buviw6 = (Odtiy6 & Wdtiy6); +assign Wdtiy6 = (~(Hyuiw6 & Obwiw6)); +assign Odtiy6 = (Xzuiw6 & Ltuiw6); +assign Ltuiw6 = (~(Eetiy6 & Hyuiw6)); +assign Eetiy6 = (B0xiw6 & Fcinv6); +assign Xzuiw6 = (~(O9tiy6 & Hyuiw6)); +assign Hyuiw6 = (W9tiy6 & Kdfhw6); +assign O9tiy6 = (Sywiw6 & Zec7z6[6]); +assign Gdtiy6 = (V2riw6 & Wkriw6); +assign Wkriw6 = (~(Zafhw6 & Metiy6)); +assign Metiy6 = (Kdfhw6 | V1fhw6); +assign V2riw6 = (Uetiy6 & C6viw6); +assign C6viw6 = (~(Cftiy6 & Z3fhw6)); +assign Cftiy6 = (Wpsiy6 & Eqsiy6); +assign Uetiy6 = (~(Zafhw6 & Gbfhw6)); +assign Zafhw6 = (Kftiy6 & Wpsiy6); +assign Kftiy6 = (Zec7z6[11] & Eqsiy6); +assign Myoiy6 = (~(Sftiy6 & Agtiy6)); +assign Agtiy6 = (Igtiy6 & Qgtiy6); +assign Qgtiy6 = (~(Odpiy6 & Zec7z6[10])); +assign Odpiy6 = (!O8fhw6); +assign Igtiy6 = (~(Zec7z6[5] & Cniiy6)); +assign Cniiy6 = (!I4ghw6); +assign Sftiy6 = (Fefhw6 & Ygtiy6); +assign Ygtiy6 = (~(Zec7z6[2] & Qwsiy6)); +assign Omfhw6 = (!Wqfhw6); +assign Wqfhw6 = (Ghtiy6 & Ohtiy6); +assign Ohtiy6 = (Whtiy6 & Eitiy6); +assign Eitiy6 = (~(V0nhw6 & Zec7z6[27])); +assign V0nhw6 = (!A7onv6); +assign Whtiy6 = (Mitiy6 & R447x6); +assign R447x6 = (~(Zec7z6[7] & K7siy6)); +assign K7siy6 = (~(Uitiy6 & Cjtiy6)); +assign Cjtiy6 = (Q9fhw6 & Kjtiy6); +assign Uitiy6 = (Rlriw6 & B5siw6); +assign B5siw6 = (~(Sjtiy6 & Aktiy6)); +assign Rlriw6 = (~(Iktiy6 & W9tiy6)); +assign Iktiy6 = (Gbfhw6 & Zec7z6[8]); +assign Mitiy6 = (~(Bvuiw6 & Uqd7z6[19])); +assign Bvuiw6 = (!Dssov6); +assign Dssov6 = (~(Qktiy6 & Yktiy6)); +assign Qktiy6 = (Qjwiw6 & Xeinv6); +assign Ghtiy6 = (Gltiy6 & I0tiy6); +assign I0tiy6 = (Oltiy6 & Jvlhw6); +assign Jvlhw6 = (S9nhw6 & I1wiw6); +assign I1wiw6 = (~(Wltiy6 & Gqlhw6)); +assign Gqlhw6 = (Emtiy6 & Uqd7z6[21]); +assign Emtiy6 = (Jolhw6 & E9onv6); +assign Jolhw6 = (Czqiy6 & Zec7z6[4]); +assign Czqiy6 = (Mmtiy6 & Erwiw6); +assign Erwiw6 = (E3fhw6 & Sywiw6); +assign Mmtiy6 = (Umtiy6 & V1fhw6); +assign Wltiy6 = (Uqd7z6[22] & Sfa7z6); +assign Oltiy6 = (Wcsiw6 & Ddsiw6); +assign Ddsiw6 = (Cntiy6 & Z0kxx6); +assign Z0kxx6 = (Kbtiy6 | Kntiy6); +assign Cntiy6 = (~(Sntiy6 & Ydfhw6)); +assign Wcsiw6 = (Hulhw6 & Hcviw6); +assign Hcviw6 = (~(Zrwiw6 & Kdfhw6)); +assign Zrwiw6 = (Aotiy6 & I5fhw6); +assign Aotiy6 = (Gginv6 & Bainv6); +assign Hulhw6 = (E7phw6 & A2sov6); +assign E7phw6 = (Sfohw6 & T1sov6); +assign Gltiy6 = (~(Wxoiy6 | Iotiy6)); +assign Iotiy6 = (~(U2ohw6 | D447x6)); +assign D447x6 = (Qotiy6 & Irsov6); +assign Qotiy6 = (!Qsriy6); +assign Qsriy6 = (~(Yotiy6 & Gptiy6)); +assign Gptiy6 = (~(Kvviw6 | X8onv6)); +assign X8onv6 = (!Vnlhw6); +assign Vnlhw6 = (~(Optiy6 & Wptiy6)); +assign Wptiy6 = (Eqtiy6 & Kktov6); +assign Eqtiy6 = (Hxviw6 & Qtnov6); +assign Optiy6 = (Mqtiy6 & Zec7z6[9]); +assign Mqtiy6 = (~(Y1xiw6 | I0riy6)); +assign Y1xiw6 = (!B0xiw6); +assign Yotiy6 = (Inviw6 & M6onv6); +assign M6onv6 = (~(Uqtiy6 & Crtiy6)); +assign Crtiy6 = (Krtiy6 & Oenhw6); +assign Krtiy6 = (Glpiw6 & Fcinv6); +assign Uqtiy6 = (Yktiy6 & Zec7z6[7]); +assign Inviw6 = (Srtiy6 & Astiy6); +assign Astiy6 = (Istiy6 & T6onv6); +assign T6onv6 = (~(Qstiy6 & Ystiy6)); +assign Ystiy6 = (Oenhw6 & Xeinv6); +assign Qstiy6 = (Yktiy6 & K0riw6); +assign Yktiy6 = (Gttiy6 & Ottiy6); +assign Ottiy6 = (~(I0riy6 | Zec7z6[8])); +assign Gttiy6 = (Q8onv6 & Zec7z6[9]); +assign Istiy6 = (Prsov6 & L4riw6); +assign Srtiy6 = (Wttiy6 & Gqehw6); +assign Gqehw6 = (~(Xjwiw6 | S6wiw6)); +assign S6wiw6 = (Eutiy6 & Mutiy6); +assign Mutiy6 = (Uutiy6 & Zec7z6[6]); +assign Uutiy6 = (~(I0riy6 | Zec7z6[4])); +assign Eutiy6 = (Qjwiw6 & Cvtiy6); +assign Xjwiw6 = (Kvtiy6 & Svtiy6); +assign Kvtiy6 = (Qjwiw6 & Qtnov6); +assign Wttiy6 = (Awtiy6 & Nqehw6); +assign Nqehw6 = (~(Iwtiy6 & Qwtiy6)); +assign Qwtiy6 = (Ywtiy6 & Svtiy6); +assign Svtiy6 = (Gxtiy6 & Cvtiy6); +assign Gxtiy6 = (~(I0riy6 | Zec7z6[6])); +assign Ywtiy6 = (Zec7z6[4] & Uqd7z6[22]); +assign Iwtiy6 = (Uqd7z6[20] & Fqohw6); +assign Fqohw6 = (Uqd7z6[21] & Oenhw6); +assign Awtiy6 = (D0riw6 | Kvviw6); +assign D0riw6 = (!Owpiw6); +assign Wxoiy6 = (~(Fefhw6 & Oxtiy6)); +assign Oxtiy6 = (~(Zec7z6[3] & Qwsiy6)); +assign Qwsiy6 = (~(Y447x6 & Gxriy6)); +assign Gxriy6 = (F547x6 & W347x6); +assign W347x6 = (!Igviw6); +assign Igviw6 = (~(Rsriw6 & Wxtiy6)); +assign Wxtiy6 = (~(Eytiy6 & Qtnov6)); +assign Rsriw6 = (Cvmiy6 & Mytiy6); +assign F547x6 = (!Pgviw6); +assign Pgviw6 = (~(Uytiy6 & Cztiy6)); +assign Cztiy6 = (~(Eytiy6 & Zec7z6[4])); +assign Uytiy6 = (Kztiy6 & Sztiy6); +assign Kztiy6 = (~(Auehw6 & A0uiy6)); +assign Y447x6 = (F0fhw6 & I0uiy6); +assign I0uiy6 = (~(Wdpiy6 & Auehw6)); +assign Wdpiy6 = (!A0uiy6); +assign A0uiy6 = (~(Q0uiy6 & Y0uiy6)); +assign Y0uiy6 = (G1uiy6 & O1uiy6); +assign O1uiy6 = (W1uiy6 & L4riw6); +assign L4riw6 = (~(E2uiy6 & M2uiy6)); +assign E2uiy6 = (Elviw6 & Qeinv6); +assign W1uiy6 = (~(I2phw6 | Eytiy6)); +assign Eytiy6 = (!Yzehw6); +assign I2phw6 = (~(T1riw6 | U2uiy6)); +assign G1uiy6 = (~(Mynhw6 | Kvviw6)); +assign Kvviw6 = (C3uiy6 & Lzviw6); +assign Lzviw6 = (Zdwiw6 & Nbfhw6); +assign C3uiy6 = (Owpiw6 & K0riw6); +assign Owpiw6 = (V1fhw6 & Zhmhw6); +assign V1fhw6 = (Zec7z6[9] & Painv6); +assign Mynhw6 = (!Irsov6); +assign Irsov6 = (~(K3uiy6 & S3uiy6)); +assign K3uiy6 = (Zec7z6[6] & Bainv6); +assign Q0uiy6 = (A4uiy6 & I4uiy6); +assign I4uiy6 = (~(Q4uiy6 | Axihw6)); +assign Axihw6 = (Auehw6 & Zec7z6[27]); +assign Q4uiy6 = (P3vxx6 & Y4uiy6); +assign Y4uiy6 = (~(M7siw6 & G5uiy6)); +assign G5uiy6 = (~(Ehtov6 & F4vxx6)); +assign F4vxx6 = (O5uiy6 & Qjwiw6); +assign O5uiy6 = (Uqd7z6[19] & Jbqiw6); +assign Ehtov6 = (Uqd7z6[17] & Ctnov6); +assign M7siw6 = (N99iw6 | Tnzdt6); +assign P3vxx6 = (Qzuiw6 & Emsiy6); +assign Emsiy6 = (!Fquiw6); +assign Fquiw6 = (~(W5uiy6 & E6uiy6)); +assign E6uiy6 = (M6uiy6 & U6uiy6); +assign M6uiy6 = (Kfa7z6 & Qtnov6); +assign W5uiy6 = (H2riw6 & Cvtiy6); +assign A4uiy6 = (Oe37x6 & Mefhw6); +assign Mefhw6 = (B2phw6 & Cvmiy6); +assign B2phw6 = (Mytiy6 & Sztiy6); +assign Oe37x6 = (C7uiy6 & S9nhw6); +assign S9nhw6 = (~(L4sov6 | Wpnhw6)); +assign Wpnhw6 = (Umtiy6 & K7uiy6); +assign Umtiy6 = (S7uiy6 & U6uiy6); +assign S7uiy6 = (Kfa7z6 & Adohw6); +assign L4sov6 = (U6uiy6 & Z9nhw6); +assign C7uiy6 = (Prsov6 & A7onv6); +assign A7onv6 = (~(A8uiy6 & S3uiy6)); +assign A8uiy6 = (Zec7z6[8] & Qtnov6); +assign Prsov6 = (~(I8uiy6 & S3uiy6)); +assign S3uiy6 = (Q8uiy6 & M2uiy6); +assign Q8uiy6 = (Zec7z6[9] & Elviw6); +assign I8uiy6 = (Fcinv6 & Bainv6); +assign Fefhw6 = (~(Ioiiy6 | Mqiiy6)); +assign Ioriy6 = (Qalhw6 & Whhov6); +assign Qalhw6 = (~(Y8uiy6 & G9uiy6)); +assign G9uiy6 = (Md37x6 & O9uiy6); +assign O9uiy6 = (~(Ryfhw6 & Llyxx6)); +assign Llyxx6 = (Qtnov6 | L6wiw6); +assign L6wiw6 = (P8wiw6 & W9uiy6); +assign Ryfhw6 = (!Mytiy6); +assign Mytiy6 = (~(Eauiy6 & Mauiy6)); +assign Mauiy6 = (Qzuiw6 | Uauiy6); +assign Uauiy6 = (Zec7z6[6] & Zec7z6[8]); +assign Md37x6 = (F0fhw6 & Kjtiy6); +assign Kjtiy6 = (!Znvnv6); +assign F0fhw6 = (!Nkyxx6); +assign Nkyxx6 = (Cbuiy6 & Kktov6); +assign Y8uiy6 = (Kbuiy6 & Sbuiy6); +assign Sbuiy6 = (!Tlyxx6); +assign Tlyxx6 = (~(Acuiy6 & I4ghw6)); +assign I4ghw6 = (~(Gdpiy6 | Vuehw6)); +assign Vuehw6 = (~(Icuiy6 | D6siw6)); +assign Gdpiy6 = (~(Wyehw6 & Nrqiw6)); +assign Nrqiw6 = (~(Qcuiy6 & Zec7z6[14])); +assign Qcuiy6 = (Zec7z6[13] & Eqsiy6); +assign Wyehw6 = (!K1qiw6); +assign K1qiw6 = (Kzriw6 & Ycuiy6); +assign Kzriw6 = (Gduiy6 & Zec7z6[15]); +assign Acuiy6 = (~(Ioiiy6 | Lsihw6)); +assign Lsihw6 = (~(Oduiy6 & Wduiy6)); +assign Wduiy6 = (Eeuiy6 | Jvriw6); +assign Jvriw6 = (Sztiy6 & Yzehw6); +assign Eeuiy6 = (Zec7z6[4] ? Ueuiy6 : Meuiy6); +assign Meuiy6 = (~(Cfuiy6 & Kfuiy6)); +assign Kfuiy6 = (~(Sfuiy6 & Aguiy6)); +assign Aguiy6 = (Ovbdt6 & Sztiy6); +assign Sztiy6 = (~(Iguiy6 & Zdwiw6)); +assign Zdwiw6 = (Xeinv6 & Bainv6); +assign Iguiy6 = (Eauiy6 & Nbfhw6); +assign Sfuiy6 = (Uqd7z6[19] & Uqd7z6[18]); +assign Cfuiy6 = (~(Ubsiw6 & Yzehw6)); +assign Yzehw6 = (~(Qguiy6 & Yguiy6)); +assign Yguiy6 = (Nbfhw6 & Qolhw6); +assign Qolhw6 = (Ghuiy6 & Uqd7z6[22]); +assign Ghuiy6 = (Sfa7z6 & Dsehw6); +assign Dsehw6 = (!Uqd7z6[21]); +assign Qguiy6 = (Eauiy6 & Obwiw6); +assign Ubsiw6 = (!P8wiw6); +assign P8wiw6 = (~(Ohuiy6 & Zec7z6[27])); +assign Ohuiy6 = (Zec7z6[26] & Zec7z6[24]); +assign Oduiy6 = (~(Auehw6 & Whuiy6)); +assign Whuiy6 = (~(Eiuiy6 & J1ghw6)); +assign Eiuiy6 = (~(Yyfhw6 | Lofhw6)); +assign Yyfhw6 = (~(Miuiy6 & Uiuiy6)); +assign Uiuiy6 = (Cjuiy6 & Kjuiy6); +assign Kjuiy6 = (Z9nhw6 ^ Baohw6); +assign Cjuiy6 = (M6nhw6 ^ S8ohw6); +assign Miuiy6 = (Sjuiy6 & Akuiy6); +assign Akuiy6 = (Zec7z6[2] ^ Adohw6); +assign Sjuiy6 = (Zec7z6[31] ^ U2ohw6); +assign Auehw6 = (!T1riw6); +assign T1riw6 = (~(Ikuiy6 & Qkuiy6)); +assign Qkuiy6 = (~(Q0riy6 | Ykuiy6)); +assign Ykuiy6 = (!Y0riy6); +assign Y0riy6 = (~(Q8onv6 & Gluiy6)); +assign Gluiy6 = (~(Oluiy6 & Zec7z6[4])); +assign Oluiy6 = (~(Hxviw6 | E3fhw6)); +assign Q8onv6 = (Ueuiy6 & M6nhw6); +assign M6nhw6 = (Zec7z6[29] & Otiiy6); +assign Ueuiy6 = (!W9uiy6); +assign W9uiy6 = (~(Wluiy6 & Zec7z6[31])); +assign Wluiy6 = (Zec7z6[30] & Z9nhw6); +assign Q0riy6 = (Zec7z6[8] & Emuiy6); +assign Emuiy6 = (Qtnov6 | Nbfhw6); +assign Ikuiy6 = (~(G1riy6 | I0riy6)); +assign I0riy6 = (~(Shmhw6 & Painv6)); +assign Shmhw6 = (Mmuiy6 & Zec7z6[12]); +assign Mmuiy6 = (Zec7z6[11] & Otiiy6); +assign G1riy6 = (~(Umuiy6 & Cnuiy6)); +assign Cnuiy6 = (J1ghw6 | Knuiy6); +assign Knuiy6 = (Snuiy6 & Aouiy6); +assign Aouiy6 = (~(K0riw6 & Qtnov6)); +assign Snuiy6 = (Hxihw6 | P2ihw6); +assign P2ihw6 = (Iouiy6 & Qouiy6); +assign Iouiy6 = (Nqlhw6 & Xeinv6); +assign J1ghw6 = (Youiy6 & U2uiy6); +assign Youiy6 = (Zec7z6[27] & Utihw6); +assign Umuiy6 = (~(Qzuiw6 | Zec7z6[9])); +assign Ioiiy6 = (!G3ghw6); +assign G3ghw6 = (Whsiy6 & G1kxx6); +assign G1kxx6 = (!Zwriw6); +assign Zwriw6 = (Ydfhw6 & Gpuiy6); +assign Whsiy6 = (!Kvriy6); +assign Kvriy6 = (Wpsiy6 & Zec7z6[15]); +assign Wpsiy6 = (Gduiy6 & Zec7z6[12]); +assign Gduiy6 = (Uqsiy6 & Sbtiy6); +assign Kbuiy6 = (!Vkyxx6); +assign Vkyxx6 = (~(Opuiy6 & Wpuiy6)); +assign Wpuiy6 = (Bylhw6 | Equiy6); +assign Equiy6 = (Mquiy6 & Uquiy6); +assign Uquiy6 = (Qtnov6 & Xeinv6); +assign Qtnov6 = (!Zec7z6[4]); +assign Mquiy6 = (~(K3riy6 | Q2fhw6)); +assign Q2fhw6 = (!Hxviw6); +assign Hxviw6 = (Zpehw6 & Fcinv6); +assign K3riy6 = (~(Cruiy6 & Kruiy6)); +assign Kruiy6 = (T5ohw6 & U2ohw6); +assign U2ohw6 = (!Zec7z6[3]); +assign T5ohw6 = (!Zec7z6[2]); +assign Cruiy6 = (Baohw6 & S8ohw6); +assign S8ohw6 = (!Zec7z6[1]); +assign Baohw6 = (!Zec7z6[0]); +assign Bylhw6 = (O8fhw6 & Sruiy6); +assign Sruiy6 = (!Mqiiy6); +assign O8fhw6 = (~(Xgmhw6 & Ycuiy6)); +assign Ycuiy6 = (~(Jdviw6 & Kbtiy6)); +assign Jdviw6 = (!Ydfhw6); +assign Opuiy6 = (Kjmiy6 & Asuiy6); +assign Asuiy6 = (~(Zofhw6 & Isuiy6)); +assign Isuiy6 = (~(Qsuiy6 & Ysuiy6)); +assign Ysuiy6 = (Gtuiy6 & Kfa7z6); +assign Kfa7z6 = (!Z9nhw6); +assign Z9nhw6 = (Zec7z6[28] & Otiiy6); +assign Gtuiy6 = (Adohw6 & Elviw6); +assign Qsuiy6 = (Otuiy6 & Kssov6); +assign Kssov6 = (Gitov6 & Qjwiw6); +assign Qjwiw6 = (Kktov6 & E9onv6); +assign E9onv6 = (!Uqd7z6[20]); +assign Uqd7z6[20] = (Zec7z6[20] & Otiiy6); +assign Kktov6 = (~(K4ohw6 | Uqd7z6[21])); +assign Uqd7z6[21] = (Zec7z6[21] & Otiiy6); +assign K4ohw6 = (!Nqlhw6); +assign Nqlhw6 = (Glpiw6 & Sfa7z6); +assign Sfa7z6 = (!Oenhw6); +assign Oenhw6 = (Zec7z6[23] & Otiiy6); +assign Glpiw6 = (!Uqd7z6[22]); +assign Uqd7z6[22] = (Zec7z6[22] & Otiiy6); +assign Gitov6 = (Jbqiw6 & Fjohw6); +assign Fjohw6 = (!Uqd7z6[19]); +assign Uqd7z6[19] = (Zec7z6[19] & Otiiy6); +assign Jbqiw6 = (!Uqd7z6[18]); +assign Uqd7z6[18] = (Zec7z6[18] & Otiiy6); +assign Otuiy6 = (Hftov6 & Qouiy6); +assign Qouiy6 = (Wtuiy6 & Kzqiy6); +assign Wtuiy6 = (Buihw6 & Offhw6); +assign Offhw6 = (!Zec7z6[27]); +assign Hftov6 = (Jgtov6 & Ctnov6); +assign Ctnov6 = (!Ovbdt6); +assign Ovbdt6 = (Zec7z6[16] & Otiiy6); +assign Jgtov6 = (!Uqd7z6[17]); +assign Uqd7z6[17] = (Zec7z6[17] & Otiiy6); +assign Zofhw6 = (!Cvmiy6); +assign Kjmiy6 = (~(Mqiiy6 & Zec7z6[8])); +assign Snriy6 = (A8jiy6 & W6u6x6); +assign W6u6x6 = (!M7mov6); +assign M7mov6 = (~(Euuiy6 & Muuiy6)); +assign Muuiy6 = (~(Uuuiy6 | L9cdt6)); +assign Uuuiy6 = (Cvuiy6 & Kvuiy6); +assign Kvuiy6 = (~(A3ddt6 & Svuiy6)); +assign Svuiy6 = (~(Awuiy6 & Iwuiy6)); +assign Iwuiy6 = (~(Yiaov6 & Qwuiy6)); +assign Qwuiy6 = (Ywuiy6 | Gxuiy6); +assign Awuiy6 = (~(Fjaov6 & Oxuiy6)); +assign Oxuiy6 = (~(Wxuiy6 & Eyuiy6)); +assign Eyuiy6 = (Kbriy6 | Ghiiy6); +assign Cvuiy6 = (Myuiy6 | IFLUSH); +assign Euuiy6 = (K3jnv6 & Ldo7v6); +assign A8jiy6 = (~(Cta7x6 | Tjhov6)); +assign Tjhov6 = (!Lybdt6); +assign Cta7x6 = (!Mjhov6); +assign Mjhov6 = (D6mov6 & Y6mov6); +assign Y6mov6 = (~(Gxuiy6 | Uyuiy6)); +assign Uyuiy6 = (~(Wxuiy6 | Ywuiy6)); +assign Wxuiy6 = (Kbriy6 | Ohiiy6); +assign Ohiiy6 = (Czuiy6 & Kzuiy6); +assign Kzuiy6 = (~(Gcd7z6[3] & L9d7z6[4])); +assign Czuiy6 = (Szuiy6 & A0viy6); +assign A0viy6 = (~(Gcd7z6[5] & L9d7z6[0])); +assign Szuiy6 = (~(Gcd7z6[1] & L9d7z6[2])); +assign D6mov6 = (~(Ywuiy6 | I0viy6)); +assign I0viy6 = (Q0viy6 & Otiiy6); +assign Q0viy6 = (~(Gxuiy6 | Ghiiy6)); +assign Ghiiy6 = (Y0viy6 & G1viy6); +assign G1viy6 = (~(Gcd7z6[1] & L9d7z6[3])); +assign Y0viy6 = (O1viy6 & W1viy6); +assign W1viy6 = (~(Gcd7z6[3] & L9d7z6[5])); +assign O1viy6 = (~(Gcd7z6[5] & L9d7z6[1])); +assign Gxuiy6 = (~(E2viy6 & M2viy6)); +assign M2viy6 = (~(L9d7z6[2] & U2viy6)); +assign E2viy6 = (C3viy6 & K3viy6); +assign K3viy6 = (~(L9d7z6[0] & S3viy6)); +assign C3viy6 = (~(L9d7z6[4] & A4viy6)); +assign Ywuiy6 = (~(I4viy6 & Q4viy6)); +assign Q4viy6 = (~(L9d7z6[3] & U2viy6)); +assign U2viy6 = (Gcd7z6[2] | Gcd7z6[3]); +assign I4viy6 = (Y4viy6 & G5viy6); +assign G5viy6 = (~(L9d7z6[1] & S3viy6)); +assign S3viy6 = (Gcd7z6[0] | Gcd7z6[1]); +assign Y4viy6 = (~(L9d7z6[5] & A4viy6)); +assign A4viy6 = (Gcd7z6[4] | Gcd7z6[5]); +assign Umriy6 = (~(Nvvnv6 & O5viy6)); +assign O5viy6 = (~(Txinv6 & W5viy6)); +assign W5viy6 = (~(E6viy6 & Yl2et6)); +assign E6viy6 = (~(Szc7x6 | Ii9ov6)); +assign Txinv6 = (~(M6viy6 | Z6xxx6)); +assign Z6xxx6 = (Vgwxx6 | Lhwxx6); +assign Lhwxx6 = (Kihhw6 & U6viy6); +assign U6viy6 = (~(Ajphw6 & J0q6x6)); +assign J0q6x6 = (!V1c7z6[12]); +assign Vgwxx6 = (C7viy6 & Rihhw6); +assign C7viy6 = (~(Yihhw6 & K7viy6)); +assign K7viy6 = (~(V1c7z6[14] & Ajphw6)); +assign M6viy6 = (~(F8xxx6 & S7viy6)); +assign S7viy6 = (!R6xxx6); +assign R6xxx6 = (A8viy6 & V1c7z6[15]); +assign A8viy6 = (Szc7x6 & Ajphw6); +assign Szc7x6 = (Rihhw6 | Hir8v6); +assign F8xxx6 = (!Dhwxx6); +assign Dhwxx6 = (B6xxx6 | L5xxx6); +assign L5xxx6 = (I8viy6 & V1c7z6[11]); +assign I8viy6 = (Q8viy6 & Ajphw6); +assign Q8viy6 = (~(Ikmiy6 & Y8viy6)); +assign Y8viy6 = (~(Hir8v6 & Nnr8v6)); +assign B6xxx6 = (~(G9viy6 & Xjwxx6)); +assign Xjwxx6 = (O9viy6 & W9viy6); +assign W9viy6 = (N4wxx6 & Vkwxx6); +assign Vkwxx6 = (!P3wxx6); +assign P3wxx6 = (Eaviy6 & Ycniy6); +assign Eaviy6 = (Maviy6 & Uaviy6); +assign Uaviy6 = (~(Ajphw6 & G8phw6)); +assign G8phw6 = (!V1c7z6[3]); +assign Maviy6 = (~(Pxmov6 & Xumov6)); +assign N4wxx6 = (~(Cbviy6 & Xkr8v6)); +assign Cbviy6 = (Ycniy6 & Kbviy6); +assign Kbviy6 = (~(Ajphw6 & N7s6x6)); +assign N7s6x6 = (!V1c7z6[2]); +assign O9viy6 = (F4wxx6 & X3wxx6); +assign X3wxx6 = (~(G1niy6 | Pzwxx6)); +assign Pzwxx6 = (Sbviy6 & V1c7z6[4]); +assign Sbviy6 = (Ycniy6 & Ajphw6); +assign G1niy6 = (!Hzwxx6); +assign Hzwxx6 = (~(Acviy6 & V1c7z6[5])); +assign Acviy6 = (Icviy6 & Qcviy6); +assign Qcviy6 = (~(Y8niy6 & Pxmov6)); +assign F4wxx6 = (Bywxx6 & Txwxx6); +assign Txwxx6 = (!Qgniy6); +assign Qgniy6 = (Ycviy6 & Qtvnv6); +assign Qtvnv6 = (!Yl2et6); +assign Ycviy6 = (~(J6jnv6 & Ajphw6)); +assign J6jnv6 = (!V1c7z6[0]); +assign Bywxx6 = (!Ohniy6); +assign Ohniy6 = (Gdviy6 & Odviy6); +assign Odviy6 = (~(Ajphw6 & C6jnv6)); +assign C6jnv6 = (!V1c7z6[1]); +assign G9viy6 = (X7xxx6 & Wdviy6); +assign Wdviy6 = (!Tlwxx6); +assign Tlwxx6 = (~(Fwwxx6 & Nwwxx6)); +assign Nwwxx6 = (~(Eeviy6 & V1c7z6[7])); +assign Eeviy6 = (Meviy6 & Ueviy6); +assign Ueviy6 = (~(Cfviy6 & Y8niy6)); +assign Cfviy6 = (Pxmov6 & Xumov6); +assign Fwwxx6 = (~(V1c7z6[6] & Icviy6)); +assign Icviy6 = (Meviy6 & Kfviy6); +assign Kfviy6 = (~(Y8niy6 & Xumov6)); +assign X7xxx6 = (Sfviy6 & Ziwxx6); +assign Ziwxx6 = (!Gtmiy6); +assign Gtmiy6 = (Meviy6 & V1c7z6[8]); +assign Meviy6 = (Dqr8v6 & Ajphw6); +assign Sfviy6 = (Hjwxx6 & Agviy6); +assign Agviy6 = (!Pjwxx6); +assign Pjwxx6 = (Igviy6 & V1c7z6[10]); +assign Igviy6 = (Qgviy6 & Ajphw6); +assign Hjwxx6 = (!Dxwxx6); +assign Dxwxx6 = (Ygviy6 & V1c7z6[9]); +assign Ygviy6 = (Mumiy6 & Ajphw6); +assign Mumiy6 = (Qgviy6 & Ghviy6); +assign Ghviy6 = (~(Pxmov6 & Xlaov6)); +assign Qgviy6 = (!Ikmiy6); +assign Ikmiy6 = (~(Kihhw6 & Ohviy6)); +assign Ohviy6 = (~(Xumov6 & Xlaov6)); +assign Qkriy6 = (~(Whviy6 & Eiviy6)); +assign Eiviy6 = (Mlfov6 & Gvvnv6); +assign Mlfov6 = (!Yfadt6); +assign Whviy6 = (Ytlnv6 & Fulnv6); +assign Y0oiy6 = (~(Miviy6 | A8mov6)); +assign A8mov6 = (Tlmov6 & Uiviy6); +assign Uiviy6 = (~(Cjviy6 & Sosiw6)); +assign Sosiw6 = (!Wkb7z6[2]); +assign Miviy6 = (Xsddt6 & Qg2nv6); +assign Kzniy6 = (S6cdt6 & S2onv6); +assign S2onv6 = (~(Nhonv6 & Kjviy6)); +assign Kjviy6 = (Vglhw6 | Atmov6); +assign Atmov6 = (Fulnv6 & Mahiy6); +assign Hwr7x6 = (~(Teliw6 | S1wnv6)); +assign Teliw6 = (!Kkmhw6); +assign Kkmhw6 = (~(Tlmov6 & Sjviy6)); +assign Sjviy6 = (Dqnov6 | Y2piw6); +assign Y2piw6 = (!Dxvnv6); +assign Dxvnv6 = (S1wnv6 | Q0wnv6); +assign S1wnv6 = (Akviy6 & Tlmov6); +assign Akviy6 = (Ikviy6 & Xsinv6); +assign Ikviy6 = (~(Qkviy6 & Cjviy6)); +assign Cjviy6 = (K6mov6 & Vmsiw6); +assign Vmsiw6 = (Ykviy6 & Glviy6); +assign Ykviy6 = (Olviy6 & Wlviy6); +assign Olviy6 = (M697z6 & Emviy6); +assign K6mov6 = (~(Tlb7z6[0] | Wkb7z6[0])); +assign Qkviy6 = (Mmviy6 & Jnsiw6); +assign Jnsiw6 = (!Ffadt6); +assign Mmviy6 = (~(Umviy6 & V6l8v6)); +assign V6l8v6 = (Cnviy6 & K9d7x6); +assign Cnviy6 = (~(Knviy6 & Snviy6)); +assign Snviy6 = (Qolov6 ? Ioviy6 : Aoviy6); +assign Qolov6 = (Qoviy6 & Yoviy6); +assign Yoviy6 = (~(D9d7x6 & E3c7z6[3])); +assign Qoviy6 = (~(D6c7z6[3] & Cubdt6)); +assign Ioviy6 = (Ad9iw6 & Gpviy6); +assign Gpviy6 = (~(Umviy6 & Ea2nv6)); +assign Ad9iw6 = (Opviy6 & Wpviy6); +assign Wpviy6 = (~(D9d7x6 & E3c7z6[2])); +assign Opviy6 = (~(D6c7z6[2] & Cubdt6)); +assign Aoviy6 = (Ea2nv6 | Aqadt6); +assign Knviy6 = (E6d7x6 & C5d7x6); +assign C5d7x6 = (~(Eqviy6 & Mqviy6)); +assign Mqviy6 = (~(D9d7x6 & E3c7z6[0])); +assign Eqviy6 = (~(Cubdt6 & D6c7z6[0])); +assign E6d7x6 = (Uqviy6 & Crviy6); +assign Crviy6 = (~(D9d7x6 & E3c7z6[1])); +assign Uqviy6 = (~(D6c7z6[1] & Cubdt6)); +assign Umviy6 = (~(Ev2nv6 | Dxgov6)); +assign Dqnov6 = (Krviy6 & Yfadt6); +assign Krviy6 = (Srviy6 & O5a7z6); +assign Kd2nv6 = (Asviy6 & Isviy6); +assign Isviy6 = (~(Qsviy6 | Lafov6)); +assign Lafov6 = (Ysviy6 & Y5o7x6); +assign Y5o7x6 = (Gtviy6 & Otviy6); +assign Otviy6 = (~(Wtviy6 & Euviy6)); +assign Euviy6 = (~(Y94iw6 | W22ft6)); +assign Y94iw6 = (!Lhmov6); +assign Wtviy6 = (~(Muviy6 | Uuviy6)); +assign Uuviy6 = (Po4ft6 & Mdo7x6); +assign Muviy6 = (R25yx6 ? I7p7z6[0] : K5o7x6); +assign R25yx6 = (!D5o7x6); +assign K5o7x6 = (I7p7z6[1] | P35yx6); +assign Gtviy6 = (~(Cvviy6 | Cx5ov6)); +assign Cx5ov6 = (Cq2ft6 & Kvviy6); +assign Kvviy6 = (~(Svviy6 & Awviy6)); +assign Awviy6 = (~(Iwviy6 & Tv5ov6)); +assign Tv5ov6 = (!Bup7z6[1]); +assign Svviy6 = (~(Qwviy6 & Aw5ov6)); +assign Aw5ov6 = (!Wrp7z6[1]); +assign Cvviy6 = (Ywviy6 & Gxviy6); +assign Gxviy6 = (~(Po4ft6 & Mdo7x6)); +assign Ywviy6 = (~(Oxviy6 & Fs4ft6)); +assign Oxviy6 = (Wxviy6 & Eyviy6); +assign Eyviy6 = (~(Myviy6 & Uyviy6)); +assign Myviy6 = (~(I7p7z6[0] | I7p7z6[1])); +assign Wxviy6 = (Czviy6 | W22ft6); +assign Czviy6 = (Gjdiw6 & Kzviy6); +assign Kzviy6 = (~(Szviy6 & A0wiy6)); +assign A0wiy6 = (D5o7x6 ^ I7p7z6[0]); +assign D5o7x6 = (~(I0wiy6 & I7p7z6[3])); +assign I0wiy6 = (I7p7z6[2] & HTMDHBURST[0]); +assign Szviy6 = (~(Lhmov6 | P35yx6)); +assign P35yx6 = (Uyviy6 & HTMDHBURST[0]); +assign Uyviy6 = (~(I7p7z6[2] | I7p7z6[3])); +assign Ysviy6 = (~(L9o7x6 | I7p7z6[3])); +assign L9o7x6 = (!I7p7z6[2]); +assign Qsviy6 = (X9fov6 | Eafov6); +assign Eafov6 = (Q0wiy6 & Hmp7z6[2]); +assign Q0wiy6 = (~(N2a8x6 | Hmp7z6[3])); +assign N2a8x6 = (Y0wiy6 & G1wiy6); +assign G1wiy6 = (~(O1wiy6 & J95ft6)); +assign O1wiy6 = (Mdo7x6 & B4fiw6); +assign Y0wiy6 = (~(W1wiy6 & E2wiy6)); +assign E2wiy6 = (M2wiy6 & U2wiy6); +assign U2wiy6 = (~(C3wiy6 & Veo7x6)); +assign Veo7x6 = (~(K3wiy6 & HTMDHBURST[0])); +assign K3wiy6 = (~(Hmp7z6[2] | Hmp7z6[3])); +assign C3wiy6 = (Lhmov6 ? Jfo7x6 : Cfo7x6); +assign Jfo7x6 = (!S3wiy6); +assign S3wiy6 = (By4yx6 ? Hmp7z6[0] : Hmp7z6[1]); +assign Cfo7x6 = (~(By4yx6 ^ Hmp7z6[0])); +assign By4yx6 = (!Mko7x6); +assign Mko7x6 = (~(A4wiy6 & Hmp7z6[3])); +assign A4wiy6 = (Hmp7z6[2] & HTMDHBURST[0]); +assign M2wiy6 = (I4wiy6 & B4fiw6); +assign B4fiw6 = (~(Cq2ft6 & Q4wiy6)); +assign Q4wiy6 = (~(Y4wiy6 & G5wiy6)); +assign G5wiy6 = (~(Bup7z6[1] & Iwviy6)); +assign Iwviy6 = (!Bup7z6[0]); +assign Y4wiy6 = (~(Wrp7z6[1] & Qwviy6)); +assign Qwviy6 = (!Wrp7z6[0]); +assign I4wiy6 = (~(O5wiy6 & Zy4yx6)); +assign Zy4yx6 = (!Hmp7z6[0]); +assign O5wiy6 = (~(Hmp7z6[1] | Hmp7z6[2])); +assign W1wiy6 = (Zc5ft6 & Gjdiw6); +assign X9fov6 = (W5wiy6 & Hyp7z6[2]); +assign W5wiy6 = (V0fiw6 & E6wiy6); +assign V0fiw6 = (~(M6wiy6 & U6wiy6)); +assign U6wiy6 = (~(C7wiy6 & K7wiy6)); +assign K7wiy6 = (S7wiy6 & Gjdiw6); +assign S7wiy6 = (~(Lx6ov6 | Cq2ft6)); +assign Lx6ov6 = (A8wiy6 & I8wiy6); +assign A8wiy6 = (Q1fiw6 & Vz98x6); +assign C7wiy6 = (Q8wiy6 & Q35ft6); +assign Q8wiy6 = (!Y8wiy6); +assign Y8wiy6 = (Lhmov6 ? V18ov6 : O18ov6); +assign V18ov6 = (!Dco7x6); +assign Dco7x6 = (G9wiy6 & O9wiy6); +assign O9wiy6 = (~(E2fiw6 & I8wiy6)); +assign I8wiy6 = (!Hyp7z6[0]); +assign G9wiy6 = (~(X1fiw6 & Q1fiw6)); +assign Q1fiw6 = (!Hyp7z6[1]); +assign O18ov6 = (Hyp7z6[0] ? E2fiw6 : X1fiw6); +assign X1fiw6 = (~(E2fiw6 | D15yx6)); +assign D15yx6 = (W9wiy6 & HTMDHBURST[0]); +assign W9wiy6 = (Vz98x6 & E6wiy6); +assign E6wiy6 = (!Hyp7z6[3]); +assign Vz98x6 = (!Hyp7z6[2]); +assign E2fiw6 = (Eawiy6 & Hyp7z6[3]); +assign Eawiy6 = (Hyp7z6[2] & HTMDHBURST[0]); +assign M6wiy6 = (Mawiy6 & Xch7v6); +assign Mawiy6 = (~(A05ft6 & Mdo7x6)); +assign Asviy6 = (~(Sn8iw6 | L99ov6)); +assign L99ov6 = (Uawiy6 & Sgp7z6[2]); +assign Uawiy6 = (~(Wxeiw6 | Sgp7z6[3])); +assign Wxeiw6 = (Cbwiy6 & Kbwiy6); +assign Kbwiy6 = (~(Sbwiy6 & Hk5ft6)); +assign Sbwiy6 = (Mdo7x6 & D5fiw6); +assign Mdo7x6 = (Ke2ft6 & Cpsnv6); +assign Cbwiy6 = (~(Acwiy6 & Icwiy6)); +assign Icwiy6 = (Qcwiy6 & Ycwiy6); +assign Ycwiy6 = (~(Gdwiy6 & F6fiw6)); +assign F6fiw6 = (~(Odwiy6 & HTMDHBURST[0])); +assign Odwiy6 = (~(Sgp7z6[2] | Sgp7z6[3])); +assign Gdwiy6 = (Lhmov6 ? T6fiw6 : M6fiw6); +assign T6fiw6 = (!Wdwiy6); +assign Wdwiy6 = (Tzeiw6 ? Sgp7z6[0] : Sgp7z6[1]); +assign M6fiw6 = (~(Tzeiw6 ^ Sgp7z6[0])); +assign Tzeiw6 = (Eewiy6 & Sgp7z6[3]); +assign Eewiy6 = (Sgp7z6[2] & HTMDHBURST[0]); +assign Qcwiy6 = (Mewiy6 & D5fiw6); +assign D5fiw6 = (~(Cq2ft6 & Uewiy6)); +assign Uewiy6 = (~(Cfwiy6 & Kfwiy6)); +assign Kfwiy6 = (~(Bup7z6[0] & Bup7z6[1])); +assign Cfwiy6 = (~(Wrp7z6[0] & Wrp7z6[1])); +assign Mewiy6 = (Sfwiy6 | Sgp7z6[0]); +assign Sfwiy6 = (Sgp7z6[1] | Sgp7z6[2]); +assign Acwiy6 = (Xn5ft6 & Gjdiw6); +assign Gjdiw6 = (~(Shmov6 | Nhonv6)); +assign Shmov6 = (!Vfmov6); +assign Vfmov6 = (Gr2et6 & Vb4iw6); +assign Gr2et6 = (O5a7z6 & Aeonv6); +assign Aeonv6 = (~(Wcmov6 & Agwiy6)); +assign Agwiy6 = (~(Igwiy6 & Qgwiy6)); +assign Igwiy6 = (~(Ygwiy6 & Ghwiy6)); +assign Ghwiy6 = (~(Ohwiy6 & HREADYD)); +assign Ohwiy6 = (Whwiy6 & Ibonv6); +assign Ygwiy6 = (Eiwiy6 & Miwiy6); +assign Miwiy6 = (~(Uiwiy6 & Gyjiw6)); +assign Uiwiy6 = (Cjwiy6 & Vd2iw6); +assign Eiwiy6 = (~(Kjwiy6 & Sjwiy6)); +assign Kjwiy6 = (HREADYS & Uaonv6); +assign Sn8iw6 = (Akwiy6 | EDBGRQ); +assign Akwiy6 = (~(Ikwiy6 & Edh7v6)); +assign Ikwiy6 = (!Mq97z6); +assign Q7hov6 = (!V9m7x6); +assign V9m7x6 = (~(Qkwiy6 & Ykwiy6)); +assign Ykwiy6 = (~(Glwiy6 | Yd2nv6)); +assign Yd2nv6 = (Olwiy6 & Wlwiy6); +assign Wlwiy6 = (~(Emwiy6 & Mmwiy6)); +assign Mmwiy6 = (~(Umwiy6 & Cnwiy6)); +assign Olwiy6 = (Knwiy6 & Izs7x6); +assign Izs7x6 = (~(Ea2nv6 & Jm98x6)); +assign Ea2nv6 = (!Snwiy6); +assign Knwiy6 = (~(Y0t7x6 & Aowiy6)); +assign Aowiy6 = (~(Iowiy6 & Pahov6)); +assign Iowiy6 = (Umwiy6 & Cnwiy6); +assign Cnwiy6 = (~(Qowiy6 & Yowiy6)); +assign Yowiy6 = (Gpwiy6 & Cehov6); +assign Gpwiy6 = (~(Jehov6 & B6t7x6)); +assign Qowiy6 = (Rwl8v6 & N5t7x6); +assign Umwiy6 = (B6t7x6 | Jehov6); +assign Glwiy6 = (Fe2nv6 | Nmadt6); +assign Fe2nv6 = (!Amg7x6); +assign Qkwiy6 = (E1cet6 & Te2nv6); +assign Te2nv6 = (Etinv6 & Opwiy6); +assign Opwiy6 = (~(Wpwiy6 & Eqwiy6)); +assign Wpwiy6 = (Mqwiy6 & Uqwiy6); +assign Uqwiy6 = (~(Crwiy6 & Emwiy6)); +assign Emwiy6 = (!Pahov6); +assign Crwiy6 = (~(Krwiy6 & Ldr7x6)); +assign Mqwiy6 = (Ldr7x6 | Krwiy6); +assign Krwiy6 = (Srwiy6 & Aswiy6); +assign Aswiy6 = (~(Iswiy6 & Qswiy6)); +assign Qswiy6 = (CURRPRI[5] & Cehov6); +assign Cehov6 = (!Nbj7z6[0]); +assign Iswiy6 = (Rwl8v6 & Yswiy6); +assign Yswiy6 = (~(Jehov6 & Bfr7x6)); +assign Srwiy6 = (~(Ger7x6 & Adhov6)); +assign Adhov6 = (!Jehov6); +assign Awniy6 = (~(Lh18x6 & Ykliy6)); +assign Sln7v6 = (W3e7v6 ^ Gtwiy6); +assign Gtwiy6 = (Vuf7v6 & Twhiw6); +assign Lln7v6 = (Kygnv6 ? Otwiy6 : Imh7v6); +assign Otwiy6 = (!W597z6); +assign Eln7v6 = (Kygnv6 ? We6ft6 : Wtwiy6); +assign Wtwiy6 = (Ci6ft6 & Euwiy6); +assign Euwiy6 = (~(W597z6 & Og6ft6)); +assign Xkn7v6 = (Kygnv6 ? Qb6ft6 : Muwiy6); +assign Muwiy6 = (Uuwiy6 & We6ft6); +assign Uuwiy6 = (Og6ft6 & Ci6ft6); +assign Qkn7v6 = (P7fyx6 ? Nks7z6[1] : Iuvmz6[5]); +assign Jkn7v6 = (P7fyx6 ? Nks7z6[2] : Iuvmz6[6]); +assign Ckn7v6 = (P7fyx6 ? Nks7z6[3] : Iuvmz6[7]); +assign Vjn7v6 = (P7fyx6 ? Nks7z6[4] : Iuvmz6[8]); +assign Ojn7v6 = (P7fyx6 ? Nks7z6[0] : Iuvmz6[4]); +assign P7fyx6 = (V4byx6 & Cvwiy6); +assign Cvwiy6 = (~(Kvwiy6 & Eifnv6)); +assign Kvwiy6 = (~(E46ft6 | Ur37v6)); +assign V4byx6 = (!Fo4yx6); +assign Fo4yx6 = (~(Svwiy6 & Awwiy6)); +assign Awwiy6 = (Iwwiy6 & Qwwiy6); +assign Qwwiy6 = (~(Ywwiy6 & Jafyx6)); +assign Jafyx6 = (O2wmz6[0] ^ Z6fyx6); +assign Z6fyx6 = (!Y4wmz6[0]); +assign Ywwiy6 = (Gxwiy6 & X7fyx6); +assign X7fyx6 = (Oxwiy6 | Wxwiy6); +assign Wxwiy6 = (~(Eywiy6 & Mywiy6)); +assign Mywiy6 = (~(Iuvmz6[5] & Yo37v6)); +assign Eywiy6 = (~(Iuvmz6[7] & Uywiy6)); +assign Oxwiy6 = (~(Czwiy6 & Kzwiy6)); +assign Kzwiy6 = (~(Iuvmz6[6] & Szwiy6)); +assign Czwiy6 = (~(A0xiy6 | Iuvmz6[4])); +assign A0xiy6 = (Iuvmz6[8] & I0xiy6); +assign Gxwiy6 = (~(Y4wmz6[1] ^ L56yx6)); +assign L56yx6 = (!O2wmz6[1]); +assign Iwwiy6 = (Q0xiy6 & Y0xiy6); +assign Y0xiy6 = (~(G1xiy6 & T1gyx6)); +assign T1gyx6 = (A3xmz6[0] ^ H76yx6); +assign H76yx6 = (!K5xmz6[0]); +assign G1xiy6 = (O1xiy6 & Zifyx6); +assign Zifyx6 = (~(W1xiy6 & E2xiy6)); +assign E2xiy6 = (M2xiy6 & U2xiy6); +assign U2xiy6 = (~(Iuvmz6[5] & Szwiy6)); +assign M2xiy6 = (~(C3xiy6 | Iuvmz6[8])); +assign C3xiy6 = (Iuvmz6[7] & I0xiy6); +assign W1xiy6 = (K3xiy6 & S3xiy6); +assign S3xiy6 = (~(Iuvmz6[6] & Uywiy6)); +assign K3xiy6 = (~(Iuvmz6[4] & Yo37v6)); +assign O1xiy6 = (~(K5xmz6[1] ^ Zm3yx6)); +assign Zm3yx6 = (!A3xmz6[1]); +assign Q0xiy6 = (~(A4xiy6 & Pffyx6)); +assign Pffyx6 = (Ukwmz6[0] ^ Vc6yx6); +assign Vc6yx6 = (!Enwmz6[0]); +assign A4xiy6 = (I4xiy6 & Ldfyx6); +assign Ldfyx6 = (~(Q4xiy6 & Y4xiy6)); +assign Y4xiy6 = (G5xiy6 & O5xiy6); +assign O5xiy6 = (~(Iuvmz6[5] & I0xiy6)); +assign G5xiy6 = (~(W5xiy6 | Iuvmz6[6])); +assign W5xiy6 = (Iuvmz6[8] & Szwiy6); +assign Q4xiy6 = (E6xiy6 & M6xiy6); +assign M6xiy6 = (~(Iuvmz6[7] & Yo37v6)); +assign E6xiy6 = (~(Iuvmz6[4] & Uywiy6)); +assign I4xiy6 = (~(Enwmz6[1] ^ Ze6yx6)); +assign Ze6yx6 = (!Ukwmz6[1]); +assign Svwiy6 = (U6xiy6 & C7xiy6); +assign C7xiy6 = (~(K7xiy6 & Vcfyx6)); +assign Vcfyx6 = (Rbwmz6[0] ^ Vg6yx6); +assign Vg6yx6 = (!Bewmz6[0]); +assign K7xiy6 = (S7xiy6 & Zafyx6); +assign Zafyx6 = (~(A8xiy6 & I8xiy6)); +assign I8xiy6 = (Q8xiy6 & Y8xiy6); +assign Y8xiy6 = (~(Iuvmz6[4] & I0xiy6)); +assign Q8xiy6 = (~(G9xiy6 | Iuvmz6[5])); +assign G9xiy6 = (Szwiy6 & Iuvmz6[7]); +assign A8xiy6 = (O9xiy6 & W9xiy6); +assign W9xiy6 = (~(Iuvmz6[8] & Uywiy6)); +assign O9xiy6 = (~(Iuvmz6[6] & Yo37v6)); +assign S7xiy6 = (~(Bewmz6[1] ^ Hj6yx6)); +assign Hj6yx6 = (!Rbwmz6[1]); +assign U6xiy6 = (~(Eaxiy6 & Jifyx6)); +assign Jifyx6 = (Xtwmz6[0] ^ V86yx6); +assign V86yx6 = (!Hwwmz6[0]); +assign Eaxiy6 = (Maxiy6 & Fgfyx6); +assign Fgfyx6 = (~(Uaxiy6 & Cbxiy6)); +assign Cbxiy6 = (Kbxiy6 & Sbxiy6); +assign Sbxiy6 = (~(Iuvmz6[4] & Szwiy6)); +assign Szwiy6 = (Uywiy6 & Acxiy6); +assign Acxiy6 = (M6s7z6[0] | Yo37v6); +assign Kbxiy6 = (~(Icxiy6 | Iuvmz6[7])); +assign Icxiy6 = (Iuvmz6[6] & I0xiy6); +assign I0xiy6 = (Uywiy6 | M6s7z6[0]); +assign M6s7z6[0] = (~(Qcxiy6 & Ycxiy6)); +assign Ycxiy6 = (Gdxiy6 & Odxiy6); +assign Odxiy6 = (~(Wdxiy6 & X9s7z6[0])); +assign Wdxiy6 = (L17yx6 & Eexiy6); +assign Eexiy6 = (!X9s7z6[1]); +assign Gdxiy6 = (~(H77yx6 | Xz7yx6)); +assign Xz7yx6 = (Ju5yx6 & Hnayx6); +assign H77yx6 = (~(Mexiy6 | Uexiy6)); +assign Mexiy6 = (!J27yx6); +assign Qcxiy6 = (Cfxiy6 & Kfxiy6); +assign Kfxiy6 = (~(Rmayx6 & Rq9yx6)); +assign Cfxiy6 = (Sfxiy6 & Agxiy6); +assign Agxiy6 = (~(Cu5ft6 & Vkfyx6)); +assign Vkfyx6 = (!L1dyx6); +assign Sfxiy6 = (~(Be7yx6 & Igxiy6)); +assign Uaxiy6 = (Qgxiy6 & Ygxiy6); +assign Ygxiy6 = (~(Iuvmz6[8] & Yo37v6)); +assign Qgxiy6 = (~(Iuvmz6[5] & Uywiy6)); +assign Uywiy6 = (M6s7z6[1] | Yo37v6); +assign Yo37v6 = (~(Ghxiy6 & Ohxiy6)); +assign Ohxiy6 = (~(Jmayx6 | R27yx6)); +assign R27yx6 = (~(L1dyx6 | Cu5ft6)); +assign L1dyx6 = (~(Ra5yx6 & Hnayx6)); +assign Ra5yx6 = (!Xnayx6); +assign Xnayx6 = (~(Whxiy6 & Eixiy6)); +assign Whxiy6 = (~(F85yx6 | Ju5yx6)); +assign Jmayx6 = (~(Dt8yx6 | Xy5ft6)); +assign Dt8yx6 = (!N47yx6); +assign Ghxiy6 = (Mixiy6 & Uixiy6); +assign Uixiy6 = (~(X9s7z6[0] & Tp9yx6)); +assign Mixiy6 = (~(Xcr7z6[1] & Rmayx6)); +assign Rmayx6 = (~(Dd7yx6 | Xcr7z6[0])); +assign M6s7z6[1] = (~(Cjxiy6 & Kjxiy6)); +assign Kjxiy6 = (Nw7yx6 & Sjxiy6); +assign Sjxiy6 = (~(Akxiy6 & Xcr7z6[0])); +assign Akxiy6 = (P37yx6 & Rq9yx6); +assign Rq9yx6 = (!Xcr7z6[1]); +assign P37yx6 = (!Dd7yx6); +assign Dd7yx6 = (~(Ikxiy6 & Ixr7z6[1])); +assign Ikxiy6 = (Hnayx6 & T1byx6); +assign T1byx6 = (!Xwadt6); +assign Nw7yx6 = (Qkxiy6 & Tt8yx6); +assign Tt8yx6 = (!V47yx6); +assign V47yx6 = (F85yx6 & Hnayx6); +assign F85yx6 = (Ykxiy6 & Uur7z6[1]); +assign Ykxiy6 = (Eixiy6 & Ri5yx6); +assign Ri5yx6 = (!Ju5yx6); +assign Ju5yx6 = (C4s7z6[1] & Eixiy6); +assign Qkxiy6 = (~(Xy5ft6 & N47yx6)); +assign N47yx6 = (Xwadt6 & Hnayx6); +assign Hnayx6 = (Glxiy6 & D5byx6); +assign Glxiy6 = (No4yx6 & Ld7yx6); +assign Cjxiy6 = (Olxiy6 & Wlxiy6); +assign Wlxiy6 = (~(Tp9yx6 & Emxiy6)); +assign Emxiy6 = (!X9s7z6[0]); +assign Tp9yx6 = (X9s7z6[1] & L17yx6); +assign L17yx6 = (~(No4yx6 | Ur37v6)); +assign No4yx6 = (!I96ft6); +assign Olxiy6 = (~(Be7yx6 & L94yx6)); +assign Be7yx6 = (J27yx6 & V0dyx6); +assign V0dyx6 = (~(Mmxiy6 & Umxiy6)); +assign Umxiy6 = (F84yx6 & Cnxiy6); +assign Cnxiy6 = (~(Vs27v6 | Nu27v6)); +assign F84yx6 = (~(P7s7z6[13] | P7s7z6[14])); +assign Mmxiy6 = (Knxiy6 & D94yx6); +assign D94yx6 = (~(P7s7z6[11] | P7s7z6[12])); +assign Knxiy6 = (Igxiy6 & Snxiy6); +assign Snxiy6 = (~(Aoxiy6 & P7s7z6[9])); +assign Aoxiy6 = (P7s7z6[8] & P7s7z6[10]); +assign Igxiy6 = (!L94yx6); +assign L94yx6 = (~(Ioxiy6 & Qoxiy6)); +assign Qoxiy6 = (Yoxiy6 & N44yx6); +assign N44yx6 = (~(P7s7z6[21] | P7s7z6[22])); +assign Yoxiy6 = (~(P7s7z6[19] | P7s7z6[20])); +assign Ioxiy6 = (Gpxiy6 & Opxiy6); +assign Opxiy6 = (~(P7s7z6[17] | P7s7z6[18])); +assign Gpxiy6 = (Uexiy6 & Z64yx6); +assign Z64yx6 = (!P7s7z6[16]); +assign Uexiy6 = (Wpxiy6 & Eqxiy6); +assign Eqxiy6 = (Mqxiy6 & Uqxiy6); +assign Uqxiy6 = (~(P7s7z6[29] | P7s7z6[30])); +assign Mqxiy6 = (~(P7s7z6[27] | P7s7z6[28])); +assign Wpxiy6 = (Crxiy6 & L54yx6); +assign L54yx6 = (!P7s7z6[24]); +assign Crxiy6 = (~(P7s7z6[25] | P7s7z6[26])); +assign J27yx6 = (Krxiy6 & E46ft6); +assign Krxiy6 = (Eifnv6 & Ld7yx6); +assign Ld7yx6 = (!Ur37v6); +assign Eifnv6 = (!Fho7v6); +assign Maxiy6 = (~(Hwwmz6[1] ^ Za6yx6)); +assign Za6yx6 = (!Xtwmz6[1]); +assign Hjn7v6 = (Yfadt6 | Phhov6); +assign Phhov6 = (L8oov6 & Ouyiw6); +assign Ouyiw6 = (~(Srxiy6 & Asxiy6)); +assign Asxiy6 = (~(Pj1ov6 & Isxiy6)); +assign Isxiy6 = (Qsxiy6 | Szoiw6); +assign Szoiw6 = (!P51ov6); +assign P51ov6 = (~(X9mhw6 & Cgc7z6[2])); +assign X9mhw6 = (Ydmhw6 & V4jhw6); +assign Ydmhw6 = (~(Cgc7z6[1] | Cgc7z6[0])); +assign Qsxiy6 = (Gtxiy6 ? Ipnov6 : Ysxiy6); +assign Ysxiy6 = (C21ov6 & R537x6); +assign C21ov6 = (B51ov6 & V4jhw6); +assign Pj1ov6 = (!IFLUSH); +assign Srxiy6 = (~(Z1oov6 & Gtxiy6)); +assign Gtxiy6 = (!Uicdt6); +assign Z1oov6 = (Otxiy6 & Cgc7z6[2]); +assign Otxiy6 = (Cgc7z6[1] & O4jhw6); +assign L8oov6 = (R537x6 & X0oov6); +assign X0oov6 = (!Rxnov6); +assign Rxnov6 = (B51ov6 & T3jhw6); +assign Ajn7v6 = (Euxiy6 ? Wtxiy6 : Ab57v6); +assign Euxiy6 = (Quthw6 & Npthw6); +assign Quthw6 = (Muxiy6 & Hixhw6); +assign Hixhw6 = (Oqwhw6 & Uzxmz6[2]); +assign Muxiy6 = (Uzxmz6[0] & Uzxmz6[1]); +assign Wtxiy6 = (~(Uuxiy6 & Cvxiy6)); +assign Cvxiy6 = (~(Dnxhw6 & Ds57v6)); +assign Uuxiy6 = (~(Kvxiy6 | Eothw6)); +assign Eothw6 = (Dnxhw6 & Zhthw6); +assign Zhthw6 = (!Yn57v6); +assign Dnxhw6 = (~(Kp57v6 | Cl57v6)); +assign Kvxiy6 = (Svxiy6 & Qazhw6); +assign Qazhw6 = (!Lc57v6); +assign Svxiy6 = (Dfrhw6 | Awxiy6); +assign Awxiy6 = (Iwxiy6 & Qwxiy6); +assign Qwxiy6 = (Ywxiy6 & Gxxiy6); +assign Gxxiy6 = (Oxxiy6 & Wxxiy6); +assign Wxxiy6 = (~(Njxmz6[9] | Ds57v6)); +assign Oxxiy6 = (~(Njxmz6[7] | Njxmz6[8])); +assign Ywxiy6 = (~(Eyxiy6 | Njxmz6[4])); +assign Eyxiy6 = (Njxmz6[5] | Njxmz6[6]); +assign Iwxiy6 = (Myxiy6 & Uyxiy6); +assign Uyxiy6 = (Czxiy6 & Kzxiy6); +assign Kzxiy6 = (~(Njxmz6[2] | Njxmz6[3])); +assign Czxiy6 = (~(Njxmz6[11] | Njxmz6[1])); +assign Myxiy6 = (Szxiy6 & Kp57v6); +assign Szxiy6 = (~(Njxmz6[0] | Njxmz6[10])); +assign Dfrhw6 = (Hnzhw6 & Onzhw6); +assign Onzhw6 = (!R957v6); +assign Hnzhw6 = (!Ek47v6); +assign Tin7v6 = (A0yiy6 ? Aixmz6[4] : L5ymz6[7]); +assign Min7v6 = (A0yiy6 ? Aixmz6[5] : L5ymz6[8]); +assign Fin7v6 = (A0yiy6 ? Aixmz6[6] : L5ymz6[9]); +assign Yhn7v6 = (A0yiy6 ? Aixmz6[7] : L5ymz6[10]); +assign Rhn7v6 = (A0yiy6 ? Aixmz6[8] : L5ymz6[11]); +assign Khn7v6 = (A0yiy6 ? Aixmz6[9] : L5ymz6[12]); +assign Dhn7v6 = (A0yiy6 ? Aixmz6[10] : L5ymz6[13]); +assign Wgn7v6 = (A0yiy6 ? Aixmz6[11] : L5ymz6[14]); +assign Pgn7v6 = (A0yiy6 ? Aixmz6[22] : L5ymz6[25]); +assign Ign7v6 = (A0yiy6 ? Aixmz6[23] : L5ymz6[26]); +assign Bgn7v6 = (A0yiy6 ? Aixmz6[24] : L5ymz6[27]); +assign Ufn7v6 = (A0yiy6 ? Aixmz6[25] : L5ymz6[28]); +assign Nfn7v6 = (A0yiy6 ? Aixmz6[26] : L5ymz6[29]); +assign Gfn7v6 = (A0yiy6 ? Aixmz6[27] : L5ymz6[30]); +assign Zen7v6 = (A0yiy6 ? Aixmz6[28] : L5ymz6[31]); +assign Sen7v6 = (A0yiy6 ? Aixmz6[29] : L5ymz6[32]); +assign Len7v6 = (A0yiy6 ? Aixmz6[30] : L5ymz6[33]); +assign Een7v6 = (~(Sg1iw6 ^ Qs67z6)); +assign Sg1iw6 = (I0yiy6 & Kh47v6); +assign I0yiy6 = (Gj47v6 & Q0yiy6); +assign Xdn7v6 = (T1zhw6 ? Y0yiy6 : Bmh7v6); +assign Qdn7v6 = (T1zhw6 ? Ye47v6 : Y0yiy6); +assign Y0yiy6 = (!Oh67z6); +assign Jdn7v6 = (T1zhw6 ? Up47v6 : G1yiy6); +assign G1yiy6 = (O1yiy6 & Ye47v6); +assign O1yiy6 = (Dbymz6[1] & E6qhw6); +assign Cdn7v6 = (~(W8qhw6 ^ Is67z6)); +assign Vcn7v6 = (Xzvhw6 ? Fduhw6 : W1yiy6); +assign Xzvhw6 = (~(Ft1nv6 | Gq1nv6)); +assign Ft1nv6 = (~(E2yiy6 & R9ymz6[2])); +assign E2yiy6 = (Nq1nv6 & K3whw6); +assign Nq1nv6 = (!R9ymz6[0]); +assign Fduhw6 = (~(P2whw6 & M2yiy6)); +assign M2yiy6 = (R9qhw6 & U2yiy6); +assign U2yiy6 = (~(W8qhw6 & W6ymz6[0])); +assign W8qhw6 = (S367v6 & Ek47v6); +assign R9qhw6 = (Qs67z6 ^ Is67z6); +assign P2whw6 = (W6ymz6[1] & Co1nv6); +assign Ocn7v6 = (~(C3yiy6 | K9qhw6)); +assign C3yiy6 = (~(Uu57v6 | K3yiy6)); +assign K3yiy6 = (By1nv6 & W1yiy6); +assign Hcn7v6 = (T1zhw6 ? S3yiy6 : Ulh7v6); +assign Acn7v6 = (T1zhw6 ? Ee47v6 : S3yiy6); +assign S3yiy6 = (!Gh67z6); +assign Tbn7v6 = (I4yiy6 ? Fvzet6 : A4yiy6); +assign Mbn7v6 = (A0yiy6 ? Aixmz6[31] : L5ymz6[34]); +assign Fbn7v6 = (Q4yiy6 ? U3o7z6[31] : Fvb7z6[31]); +assign Yan7v6 = (Y4yiy6 ? U42nv6 : A0fet6); +assign Y4yiy6 = (Awbet6 & Zhg7x6); +assign Ran7v6 = (T8lov6 ? X4eet6 : Is5iw6); +assign Kan7v6 = (X27iw6 ? Fuadt6 : U47iw6); +assign X27iw6 = (~(G5yiy6 & R58iw6)); +assign G5yiy6 = (Z4m7x6 & Bqi7z6[1]); +assign Dan7v6 = (O5yiy6 ? U42nv6 : Aqadt6); +assign W9n7v6 = (O5yiy6 ? W52nv6 : Esadt6); +assign P9n7v6 = (O5yiy6 ? P52nv6 : Dradt6); +assign O5yiy6 = (!W5yiy6); +assign I9n7v6 = (W5yiy6 ? O6cet6 : B52nv6); +assign W5yiy6 = (~(Zh18x6 & Z4m7x6)); +assign B9n7v6 = (!E6yiy6); +assign E6yiy6 = (Wc0iw6 ? M6yiy6 : Ygqhw6); +assign U8n7v6 = (I4yiy6 ? R0bdt6 : U6yiy6); +assign U6yiy6 = (C7yiy6 | K7yiy6); +assign C7yiy6 = (S7yiy6 | A4yiy6); +assign A4yiy6 = (A8yiy6 & Ee47v6); +assign A8yiy6 = (Dbymz6[1] & Dbymz6[0]); +assign N8n7v6 = (~(I8yiy6 & Q8yiy6)); +assign Q8yiy6 = (~(Y8yiy6 & Y9o7z6[1])); +assign I8yiy6 = (~(G9yiy6 & Ugo7z6[1])); +assign G8n7v6 = (O9yiy6 | W9yiy6); +assign O9yiy6 = (Wc0iw6 ? Eayiy6 : Oeo7z6[0]); +assign Eayiy6 = (~(Mayiy6 & Uayiy6)); +assign Uayiy6 = (~(Oeo7z6[2] & Cbyiy6)); +assign Cbyiy6 = (~(Kbyiy6 & Aiqhw6)); +assign Mayiy6 = (~(Sbyiy6 & Acyiy6)); +assign Z7n7v6 = (Icyiy6 ? L3bdt6 : F61iw6); +assign F61iw6 = (~(R1yhw6 | Qcyiy6)); +assign Qcyiy6 = (Ycyiy6 & Gdyiy6); +assign Gdyiy6 = (Odyiy6 | Oh77z6); +assign Ycyiy6 = (~(On47v6 & Wdyiy6)); +assign R1yhw6 = (~(Qjqhw6 ^ Xjqhw6)); +assign Xjqhw6 = (JTAGNSW ? Hhxmz6[0] : Blxmz6[0]); +assign Qjqhw6 = (!Jjqhw6); +assign Jjqhw6 = (JTAGNSW ? Hhxmz6[1] : Blxmz6[1]); +assign S7n7v6 = (Q4yiy6 ? U3o7z6[11] : Fvb7z6[11]); +assign L7n7v6 = (~(Eeyiy6 & Meyiy6)); +assign Meyiy6 = (~(Y8yiy6 & Y9o7z6[0])); +assign Eeyiy6 = (~(G9yiy6 & Ugo7z6[0])); +assign E7n7v6 = (Ueyiy6 ? Cxxmz6[1] : Ulxmz6[1]); +assign X6n7v6 = (!Cfyiy6); +assign Cfyiy6 = (V6wnv6 ? Kfyiy6 : M6giy6); +assign Kfyiy6 = (~(Pl0ft6 & Sfyiy6)); +assign Q6n7v6 = (Q4yiy6 ? U3o7z6[10] : Fvb7z6[10]); +assign J6n7v6 = (Agyiy6 ? S2uhw6 : Ds57v6); +assign Agyiy6 = (~(Nwthw6 | J1uhw6)); +assign Nwthw6 = (~(Rgxhw6 & Ccxhw6)); +assign Ccxhw6 = (!Uzxmz6[3]); +assign Rgxhw6 = (Igyiy6 & Tbwhw6); +assign Igyiy6 = (Uzxmz6[1] & Axwhw6); +assign C6n7v6 = (Atthw6 ? Kp57v6 : S2uhw6); +assign Atthw6 = (Uwthw6 | J1uhw6); +assign Uwthw6 = (~(L4zhw6 & Oqwhw6)); +assign Oqwhw6 = (~(Uzxmz6[3] | Uzxmz6[4])); +assign L4zhw6 = (Crwhw6 & L6xhw6); +assign Crwhw6 = (Uzxmz6[1] & Twwhw6); +assign Twwhw6 = (!Uzxmz6[0]); +assign S2uhw6 = (!Sdqhw6); +assign Sdqhw6 = (Dz1nv6 & K3a7z6); +assign K3a7z6 = (!SWDITMS); +assign V5n7v6 = (~(Qgyiy6 & Ygyiy6)); +assign Ygyiy6 = (Ghyiy6 | Yg67z6); +assign O5n7v6 = (Ueyiy6 ? Cxxmz6[4] : Ulxmz6[4]); +assign H5n7v6 = (Ueyiy6 ? Cxxmz6[6] : Ulxmz6[6]); +assign A5n7v6 = (Ueyiy6 ? Cxxmz6[7] : Ulxmz6[7]); +assign T4n7v6 = (Ueyiy6 ? Cxxmz6[9] : Ulxmz6[9]); +assign M4n7v6 = (Ueyiy6 ? Cxxmz6[10] : Ulxmz6[10]); +assign F4n7v6 = (Ueyiy6 ? Cxxmz6[11] : Ulxmz6[11]); +assign Y3n7v6 = (Ueyiy6 ? Cxxmz6[12] : Ulxmz6[12]); +assign R3n7v6 = (Ueyiy6 ? Cxxmz6[28] : Ulxmz6[28]); +assign K3n7v6 = (Q4yiy6 ? U3o7z6[28] : Fvb7z6[28]); +assign D3n7v6 = (Ueyiy6 ? Cxxmz6[29] : Ulxmz6[29]); +assign W2n7v6 = (Q4yiy6 ? U3o7z6[29] : Fvb7z6[29]); +assign P2n7v6 = (Ueyiy6 ? Cxxmz6[30] : Ulxmz6[30]); +assign I2n7v6 = (Q4yiy6 ? U3o7z6[30] : Fvb7z6[30]); +assign B2n7v6 = (Ueyiy6 ? Cxxmz6[31] : Ulxmz6[31]); +assign U1n7v6 = (Ueyiy6 ? Cxxmz6[0] : Ulxmz6[0]); +assign N1n7v6 = (Qgyiy6 ? Usxmz6[0] : Yn57v6); +assign G1n7v6 = (Qgyiy6 ? Usxmz6[1] : Cl57v6); +assign Z0n7v6 = (Qgyiy6 ? E157v6 : Lothw6); +assign Qgyiy6 = (~(Ghyiy6 & Kp57v6)); +assign Ghyiy6 = (Ekxhw6 & Bqthw6); +assign Bqthw6 = (Xh1nv6 & Npthw6); +assign Npthw6 = (!J1uhw6); +assign J1uhw6 = (B1ymz6[0] & Uc1nv6); +assign Uc1nv6 = (!Uia7z6); +assign Uia7z6 = (~(Ohyiy6 & Whyiy6)); +assign Whyiy6 = (~(Eiyiy6 | Tzthw6)); +assign Tzthw6 = (!B1ymz6[1]); +assign Eiyiy6 = (B1ymz6[2] | B1ymz6[3]); +assign Ohyiy6 = (B1ymz6[5] & B1ymz6[4]); +assign Xh1nv6 = (Tbwhw6 & Iuwhw6); +assign Iuwhw6 = (Uj1nv6 & Vbxhw6); +assign Vbxhw6 = (!Uzxmz6[1]); +assign Uj1nv6 = (~(Axwhw6 | Uzxmz6[3])); +assign Axwhw6 = (!Uzxmz6[4]); +assign Tbwhw6 = (Uzxmz6[0] & L6xhw6); +assign L6xhw6 = (!Uzxmz6[2]); +assign Ekxhw6 = (R7zhw6 & Qh1nv6); +assign Qh1nv6 = (!D857v6); +assign R7zhw6 = (Hf57v6 & Wd1nv6); +assign Wd1nv6 = (!Tq57v6); +assign Lothw6 = (!Ds57v6); +assign S0n7v6 = (Ueyiy6 ? Cxxmz6[2] : Ulxmz6[2]); +assign L0n7v6 = (Ueyiy6 ? Cxxmz6[23] : Ulxmz6[23]); +assign E0n7v6 = (Q4yiy6 ? U3o7z6[23] : Fvb7z6[23]); +assign Xzm7v6 = (Ueyiy6 ? Cxxmz6[22] : Ulxmz6[22]); +assign Qzm7v6 = (Q4yiy6 ? U3o7z6[22] : Fvb7z6[22]); +assign Jzm7v6 = (Ueyiy6 ? Cxxmz6[21] : Ulxmz6[21]); +assign Czm7v6 = (A0yiy6 ? Aixmz6[21] : L5ymz6[24]); +assign Vym7v6 = (Q4yiy6 ? U3o7z6[21] : Fvb7z6[21]); +assign Oym7v6 = (A0yiy6 ? Aixmz6[20] : L5ymz6[23]); +assign Hym7v6 = (Ueyiy6 ? Cxxmz6[20] : Ulxmz6[20]); +assign Aym7v6 = (Q4yiy6 ? U3o7z6[20] : Fvb7z6[20]); +assign Txm7v6 = (Ueyiy6 ? Cxxmz6[19] : Ulxmz6[19]); +assign Mxm7v6 = (A0yiy6 ? Aixmz6[19] : L5ymz6[22]); +assign Fxm7v6 = (Q4yiy6 ? U3o7z6[19] : Fvb7z6[19]); +assign Ywm7v6 = (A0yiy6 ? Aixmz6[18] : L5ymz6[21]); +assign Rwm7v6 = (Ueyiy6 ? Cxxmz6[18] : Ulxmz6[18]); +assign Kwm7v6 = (Q4yiy6 ? U3o7z6[18] : Fvb7z6[18]); +assign Dwm7v6 = (Ueyiy6 ? Cxxmz6[17] : Ulxmz6[17]); +assign Wvm7v6 = (A0yiy6 ? Aixmz6[17] : L5ymz6[20]); +assign Pvm7v6 = (Q4yiy6 ? U3o7z6[17] : Fvb7z6[17]); +assign Ivm7v6 = (A0yiy6 ? Aixmz6[16] : L5ymz6[19]); +assign Bvm7v6 = (Ueyiy6 ? Cxxmz6[16] : Ulxmz6[16]); +assign Uum7v6 = (Q4yiy6 ? U3o7z6[16] : Fvb7z6[16]); +assign Num7v6 = (Ueyiy6 ? Cxxmz6[15] : Ulxmz6[15]); +assign Gum7v6 = (A0yiy6 ? Aixmz6[15] : L5ymz6[18]); +assign Ztm7v6 = (Q4yiy6 ? U3o7z6[15] : Fvb7z6[15]); +assign Stm7v6 = (A0yiy6 ? Aixmz6[14] : L5ymz6[17]); +assign Ltm7v6 = (Ueyiy6 ? Cxxmz6[14] : Ulxmz6[14]); +assign Etm7v6 = (Q4yiy6 ? U3o7z6[14] : Fvb7z6[14]); +assign Xsm7v6 = (Ueyiy6 ? Cxxmz6[13] : Ulxmz6[13]); +assign Qsm7v6 = (A0yiy6 ? Aixmz6[13] : L5ymz6[16]); +assign Jsm7v6 = (Q4yiy6 ? U3o7z6[13] : Fvb7z6[13]); +assign Csm7v6 = (A0yiy6 ? Aixmz6[12] : L5ymz6[15]); +assign Vrm7v6 = (Q4yiy6 ? U3o7z6[12] : Fvb7z6[12]); +assign Orm7v6 = (~(Xczet6 ^ Aglov6)); +assign Aglov6 = (~(Miyiy6 & Ejo7z6[0])); +assign Miyiy6 = (Ejo7z6[1] & Q7wnv6); +assign Hrm7v6 = (!Uiyiy6); +assign Uiyiy6 = (Kr97z6 ? Ua77z6 : Ma77z6); +assign Arm7v6 = (Zuixx6 ? O3uet6 : Cjyiy6); +assign Cjyiy6 = (~(Wp9ov6 | Dconv6)); +assign Wp9ov6 = (~(Kjyiy6 & Sjyiy6)); +assign Sjyiy6 = (Akyiy6 & Ikyiy6); +assign Akyiy6 = (~(Njkiw6 | Meoet6)); +assign Kjyiy6 = (Qkyiy6 & Lbkiw6); +assign Qkyiy6 = (Ykyiy6 & Cfliy6); +assign Tqm7v6 = (Ueyiy6 ? Cxxmz6[3] : Ulxmz6[3]); +assign Mqm7v6 = (A0yiy6 ? Aixmz6[3] : L5ymz6[6]); +assign Fqm7v6 = (A0yiy6 ? Aixmz6[2] : L5ymz6[5]); +assign Ypm7v6 = (A0yiy6 ? Aixmz6[1] : L5ymz6[4]); +assign Rpm7v6 = (A0yiy6 ? Aixmz6[0] : L5ymz6[3]); +assign Kpm7v6 = (A0yiy6 ? Uixmz6[3] : L5ymz6[2]); +assign Dpm7v6 = (A0yiy6 ? Uixmz6[2] : L5ymz6[1]); +assign A0yiy6 = (!Q0yiy6); +assign Wom7v6 = (Icyiy6 ? Zn0ft6 : Cozet6); +assign Pom7v6 = (!Glyiy6); +assign Glyiy6 = (Wc0iw6 ? Olyiy6 : Rgqhw6); +assign Rgqhw6 = (!Oeo7z6[1]); +assign Iom7v6 = (Iownv6 ? Ekoet6 : Wlyiy6); +assign Wlyiy6 = (Ee3iw6 & M52iw6); +assign Ee3iw6 = (Emyiy6 & Mmyiy6); +assign Mmyiy6 = (~(M52iw6 & Umyiy6)); +assign Umyiy6 = (~(Cnyiy6 & Knyiy6)); +assign Knyiy6 = (~(Khoet6 | Wmoet6)); +assign Cnyiy6 = (~(Snyiy6 | Aoyiy6)); +assign Snyiy6 = (Ewyet6 & Ioyiy6); +assign Ioyiy6 = (Qln7z6[0] | Qln7z6[1]); +assign M52iw6 = (Qoyiy6 & Yoyiy6); +assign Qoyiy6 = (Hz1iw6 & Gpyiy6); +assign Gpyiy6 = (!Se3iw6); +assign Emyiy6 = (Se3iw6 ? Cjwiy6 : Opyiy6); +assign Se3iw6 = (Gyjiw6 & Wcmov6); +assign Gyjiw6 = (!Lgonv6); +assign Cjwiy6 = (Wpyiy6 & Eqyiy6); +assign Eqyiy6 = (Mqyiy6 & Uqyiy6); +assign Mqyiy6 = (~(Bzjiw6 | Qboet6)); +assign Wpyiy6 = (Cryiy6 & Kryiy6); +assign Opyiy6 = (Yoyiy6 & Hz1iw6); +assign Bom7v6 = (~(Sryiy6 & Asyiy6)); +assign Asyiy6 = (~(Isyiy6 & Ppzet6)); +assign Isyiy6 = (O4qhw6 & Kr97z6); +assign Sryiy6 = (~(Tszet6 & Qsyiy6)); +assign Qsyiy6 = (T1zhw6 | O4qhw6); +assign O4qhw6 = (~(Ysyiy6 | Silov6)); +assign Silov6 = (Gtyiy6 & Wc0iw6); +assign Gtyiy6 = (~(K7yiy6 | S7yiy6)); +assign S7yiy6 = (Olyiy6 & M6yiy6); +assign K7yiy6 = (M6yiy6 & Otyiy6); +assign M6yiy6 = (Wtyiy6 & Euyiy6); +assign Wtyiy6 = (Oeo7z6[2] ? Uuyiy6 : Muyiy6); +assign Uuyiy6 = (~(Cvyiy6 & Kvyiy6)); +assign Kvyiy6 = (Svyiy6 & Naonv6); +assign Naonv6 = (!O7o7z6[2]); +assign Svyiy6 = (Ic0iw6 & Awyiy6); +assign Awyiy6 = (!Oeo7z6[0]); +assign Ic0iw6 = (!Gco7z6[4]); +assign Cvyiy6 = (Gco7z6[5] & Aiqhw6); +assign Aiqhw6 = (!Frzet6); +assign Muyiy6 = (Otyiy6 | Acyiy6); +assign Acyiy6 = (~(Cb77z6 & Sfyiy6)); +assign Unm7v6 = (!Iwyiy6); +assign Iwyiy6 = (V6wnv6 ? Qwyiy6 : Jie7x6); +assign Qwyiy6 = (~(O7o7z6[2] | Ywyiy6)); +assign Nnm7v6 = (He1iw6 ? Hhxmz6[0] : L5ymz6[5]); +assign Gnm7v6 = (He1iw6 ? Hhxmz6[1] : L5ymz6[6]); +assign Zmm7v6 = (He1iw6 ? Ogxmz6[0] : L5ymz6[11]); +assign Smm7v6 = (He1iw6 ? Ogxmz6[1] : L5ymz6[12]); +assign Lmm7v6 = (He1iw6 ? Ogxmz6[2] : L5ymz6[13]); +assign Emm7v6 = (He1iw6 ? Ogxmz6[3] : L5ymz6[14]); +assign Xlm7v6 = (He1iw6 ? Qf47v6 : L5ymz6[29]); +assign Qlm7v6 = (He1iw6 ? Mg47v6 : L5ymz6[33]); +assign Jlm7v6 = (He1iw6 ? Kh47v6 : L5ymz6[31]); +assign Clm7v6 = (He1iw6 ? Ez57v6 : L5ymz6[3]); +assign He1iw6 = (~(Gxyiy6 & Oxyiy6)); +assign Oxyiy6 = (Qo1nv6 & Wxyiy6); +assign Gxyiy6 = (L5ymz6[1] & Su1iw6); +assign Vkm7v6 = (Eyyiy6 ? Uixmz6[25] : L5ymz6[28]); +assign Okm7v6 = (Eyyiy6 ? Uixmz6[26] : L5ymz6[29]); +assign Hkm7v6 = (Eyyiy6 ? Uixmz6[27] : L5ymz6[30]); +assign Akm7v6 = (Eyyiy6 ? Uixmz6[28] : L5ymz6[31]); +assign Tjm7v6 = (Eyyiy6 ? Uixmz6[29] : L5ymz6[32]); +assign Eyyiy6 = (!Myyiy6); +assign Mjm7v6 = (Myyiy6 ? L5ymz6[33] : Uixmz6[30]); +assign Fjm7v6 = (Myyiy6 ? L5ymz6[34] : Uixmz6[31]); +assign Yim7v6 = (Myyiy6 ? L5ymz6[7] : Uixmz6[4]); +assign Rim7v6 = (Myyiy6 ? L5ymz6[8] : Uixmz6[5]); +assign Kim7v6 = (Ueyiy6 ? Cxxmz6[25] : Ulxmz6[25]); +assign Dim7v6 = (Q4yiy6 ? U3o7z6[25] : Fvb7z6[25]); +assign Whm7v6 = (Vjqnv6 ? Aym7z6[1] : Hjqnv6); +assign Phm7v6 = (Vjqnv6 ? Aym7z6[2] : Yhqnv6); +assign Ihm7v6 = (Vjqnv6 ? Aym7z6[3] : Pgqnv6); +assign Bhm7v6 = (Iownv6 ? Dtm7z6[3] : Az1iw6); +assign Iownv6 = (~(Q7wnv6 | L1bdt6)); +assign Q7wnv6 = (~(Uyyiy6 & Czyiy6)); +assign Czyiy6 = (Kzyiy6 & Szyiy6); +assign Szyiy6 = (~(Dtm7z6[2] & Vd2iw6)); +assign Kzyiy6 = (A0ziy6 & I0ziy6); +assign I0ziy6 = (~(Dtm7z6[0] & HREADYD)); +assign A0ziy6 = (~(Dtm7z6[3] & Q0ziy6)); +assign Uyyiy6 = (I6oet6 & Y0ziy6); +assign Y0ziy6 = (~(Dtm7z6[1] & HREADYS)); +assign Az1iw6 = (~(G1ziy6 & O1ziy6)); +assign O1ziy6 = (Bownv6 | Go9ov6); +assign Bownv6 = (K7giy6 | Yoyiy6); +assign Yoyiy6 = (!Oz1iw6); +assign G1ziy6 = (W1ziy6 & E2ziy6); +assign W1ziy6 = (~(Aoyiy6 & I2yet6)); +assign Ugm7v6 = (Ueyiy6 ? Cxxmz6[27] : Ulxmz6[27]); +assign Ngm7v6 = (Q4yiy6 ? U3o7z6[27] : Fvb7z6[27]); +assign Ggm7v6 = (Ueyiy6 ? Cxxmz6[26] : Ulxmz6[26]); +assign Zfm7v6 = (Q4yiy6 ? U3o7z6[26] : Fvb7z6[26]); +assign Sfm7v6 = (Ueyiy6 ? Cxxmz6[5] : Ulxmz6[5]); +assign Lfm7v6 = (Q4yiy6 ? U3o7z6[9] : Fvb7z6[9]); +assign Efm7v6 = (Q4yiy6 ? U3o7z6[8] : Fvb7z6[8]); +assign Xem7v6 = (Ueyiy6 ? Cxxmz6[8] : Ulxmz6[8]); +assign Qem7v6 = (Q4yiy6 ? U3o7z6[7] : Fvb7z6[7]); +assign Jem7v6 = (Q4yiy6 ? U3o7z6[6] : Fvb7z6[6]); +assign Cem7v6 = (Q4yiy6 ? U3o7z6[5] : Fvb7z6[5]); +assign Vdm7v6 = (Q4yiy6 ? U3o7z6[4] : Fvb7z6[4]); +assign Odm7v6 = (M2ziy6 | U2ziy6); +assign U2ziy6 = (Y8yiy6 & Y9o7z6[3]); +assign M2ziy6 = (G9yiy6 ? Fvb7z6[3] : C3ziy6); +assign C3ziy6 = (Ib1iw6 & F5o7z6[3]); +assign Hdm7v6 = (K3ziy6 | S3ziy6); +assign S3ziy6 = (Y8yiy6 & Y9o7z6[2]); +assign Y8yiy6 = (~(Ib1iw6 | G9yiy6)); +assign Ib1iw6 = (!A4ziy6); +assign K3ziy6 = (G9yiy6 ? Fvb7z6[2] : I4ziy6); +assign I4ziy6 = (~(A4ziy6 | X11iw6)); +assign X11iw6 = (!F5o7z6[2]); +assign A4ziy6 = (~(F5o7z6[4] & Pb1iw6)); +assign Pb1iw6 = (~(Q4ziy6 | F5o7z6[5])); +assign Q4ziy6 = (F5o7z6[6] | F5o7z6[7]); +assign Adm7v6 = (Icyiy6 ? K2bdt6 : Qmzet6); +assign Tcm7v6 = (Ueyiy6 ? Cxxmz6[24] : Ulxmz6[24]); +assign Ueyiy6 = (~(Werhw6 | Yg67z6)); +assign Werhw6 = (!M257v6); +assign Mcm7v6 = (Q4yiy6 ? U3o7z6[24] : Fvb7z6[24]); +assign Q4yiy6 = (!G9yiy6); +assign G9yiy6 = (Y4ziy6 & Icyiy6); +assign Icyiy6 = (!V6wnv6); +assign V6wnv6 = (~(Dnh7v6 ^ Hgzet6)); +assign Y4ziy6 = (Wmh7v6 ^ Mezet6); +assign Fcm7v6 = (Myyiy6 ? L5ymz6[9] : Uixmz6[6]); +assign Ybm7v6 = (Myyiy6 ? L5ymz6[10] : Uixmz6[7]); +assign Rbm7v6 = (Myyiy6 ? L5ymz6[27] : Uixmz6[24]); +assign Myyiy6 = (G5ziy6 & O5ziy6); +assign O5ziy6 = (Qo1nv6 & W5ziy6); +assign Qo1nv6 = (!L5ymz6[0]); +assign G5ziy6 = (L5ymz6[2] & Su1iw6); +assign Kbm7v6 = (!E6ziy6); +assign E6ziy6 = (Q0yiy6 ? L5ymz6[0] : Oh77z6); +assign Q0yiy6 = (M6ziy6 & Xf1iw6); +assign Xf1iw6 = (~(F267v6 | S067v6)); +assign M6ziy6 = (K9qhw6 & Eg1iw6); +assign Eg1iw6 = (~(Sx57v6 & Ez57v6)); +assign K9qhw6 = (U6ziy6 & C7ziy6); +assign U6ziy6 = (W6ymz6[0] & W6ymz6[1]); +assign Dbm7v6 = (Dc1iw6 ? Q2ymz6[1] : K7ziy6); +assign K7ziy6 = (~(L5ymz6[1] & Wxyiy6)); +assign Wxyiy6 = (!L5ymz6[2]); +assign Wam7v6 = (Dc1iw6 ? Q2ymz6[0] : S7ziy6); +assign Dc1iw6 = (!Su1iw6); +assign Su1iw6 = (Tm1nv6 & C7ziy6); +assign C7ziy6 = (A8ziy6 & By1nv6); +assign By1nv6 = (I8ziy6 & Lw1nv6); +assign Lw1nv6 = (R9ymz6[0] & Gq1nv6); +assign Gq1nv6 = (!R9ymz6[1]); +assign I8ziy6 = (R9ymz6[2] & K3whw6); +assign K3whw6 = (!R9ymz6[3]); +assign A8ziy6 = (Co1nv6 & W1yiy6); +assign W1yiy6 = (!Wh77z6); +assign Co1nv6 = (W6ymz6[3] & Mm1nv6); +assign Mm1nv6 = (!W6ymz6[2]); +assign Tm1nv6 = (W6ymz6[1] & Jo1nv6); +assign Jo1nv6 = (!W6ymz6[0]); +assign S7ziy6 = (~(L5ymz6[2] & W5ziy6)); +assign W5ziy6 = (!L5ymz6[1]); +assign Pam7v6 = (P9get6 ? Qmj7z6[5] : Jqj7z6[5]); +assign Qmj7z6[5] = (~(Q8ziy6 | Y8ziy6)); +assign Iam7v6 = (Cpsnv6 ? G9ziy6 : N6c7v6); +assign Cpsnv6 = (~(O9ziy6 & Wfo7v6)); +assign O9ziy6 = (Kgbdt6 & Jgliw6); +assign G9ziy6 = (H8c7v6 & Detnv6); +assign Detnv6 = (!W9c7v6); +assign Bam7v6 = (P9get6 ? Pnfet6 : Jqj7z6[2]); +assign Pnfet6 = (~(Y8ziy6 | W9ziy6)); +assign Y8ziy6 = (!Ykliy6); +assign U9m7v6 = (Otshy6 ? Xfymz6[11] : Pjb7z6[11]); +assign N9m7v6 = (Otshy6 ? Xfymz6[10] : Pjb7z6[10]); +assign G9m7v6 = (Otshy6 ? Xfymz6[9] : Pjb7z6[9]); +assign Z8m7v6 = (Otshy6 ? Xfymz6[8] : Pjb7z6[8]); +assign S8m7v6 = (Otshy6 ? Xfymz6[7] : Pjb7z6[7]); +assign L8m7v6 = (Otshy6 ? Xfymz6[6] : Pjb7z6[6]); +assign E8m7v6 = (Otshy6 ? Xfymz6[5] : Pjb7z6[5]); +assign X7m7v6 = (Otshy6 ? Xfymz6[4] : Pjb7z6[4]); +assign Q7m7v6 = (Otshy6 ? Xfymz6[3] : Pjb7z6[3]); +assign J7m7v6 = (Maziy6 ? Ti2nz6[4] : Eaziy6); +assign Eaziy6 = (Uaziy6 & Cbziy6); +assign Cbziy6 = (~(Kbziy6 | Pjb7z6[7])); +assign Kbziy6 = (Pjb7z6[8] | Pjb7z6[9]); +assign Uaziy6 = (~(Sbziy6 | Pjb7z6[10])); +assign Sbziy6 = (Pjb7z6[11] | Pjb7z6[6]); +assign C7m7v6 = (Maziy6 ? Ti2nz6[3] : Pjb7z6[5]); +assign V6m7v6 = (Cjliy6 ? Pjb7z6[4] : Ti2nz6[2]); +assign O6m7v6 = (Cjliy6 ? Pjb7z6[3] : Ti2nz6[1]); +assign H6m7v6 = (Qgnhy6 ? J02nz6[3] : Pjb7z6[3]); +assign A6m7v6 = (Qgnhy6 ? J02nz6[4] : Pjb7z6[4]); +assign T5m7v6 = (Qgnhy6 ? J02nz6[5] : Pjb7z6[5]); +assign M5m7v6 = (Qgnhy6 ? J02nz6[6] : Pjb7z6[6]); +assign F5m7v6 = (Qgnhy6 ? J02nz6[7] : Pjb7z6[7]); +assign Y4m7v6 = (Qgnhy6 ? J02nz6[8] : Pjb7z6[8]); +assign R4m7v6 = (Qgnhy6 ? J02nz6[9] : Pjb7z6[9]); +assign K4m7v6 = (Qgnhy6 ? J02nz6[10] : Pjb7z6[10]); +assign D4m7v6 = (Qgnhy6 ? J02nz6[11] : Pjb7z6[11]); +assign W3m7v6 = (Kr97z6 ? Acziy6 : Rjzet6); +assign Acziy6 = (L6qhw6 & Icziy6); +assign Icziy6 = (~(Wc0iw6 & Qcziy6)); +assign Qcziy6 = (~(Olyiy6 & Otyiy6)); +assign Otyiy6 = (!Sbyiy6); +assign Sbyiy6 = (Pc0iw6 & Ycziy6); +assign Olyiy6 = (Euyiy6 & Gdziy6); +assign Gdziy6 = (~(Odziy6 & Pc0iw6)); +assign Odziy6 = (Wdziy6 & Ygqhw6); +assign Ygqhw6 = (!Oeo7z6[2]); +assign Wdziy6 = (~(Ycziy6 & Eeziy6)); +assign Eeziy6 = (~(Cb77z6 & Ywyiy6)); +assign Euyiy6 = (~(Meziy6 & Ueziy6)); +assign Ueziy6 = (~(W9yiy6 | Frzet6)); +assign Meziy6 = (Oeo7z6[2] & Cfziy6); +assign Cfziy6 = (Kbyiy6 | Oeo7z6[1]); +assign Kbyiy6 = (O7o7z6[0] & Oeo7z6[0]); +assign O7o7z6[0] = (~(O7o7z6[2] | Pl0ft6)); +assign Wc0iw6 = (!I4yiy6); +assign I4yiy6 = (L6qhw6 ? Sfziy6 : Kfziy6); +assign Sfziy6 = (~(Kr97z6 & Agziy6)); +assign Agziy6 = (~(Pc0iw6 & Igziy6)); +assign Igziy6 = (~(Qgziy6 & Kgqhw6)); +assign Kgqhw6 = (~(Ygziy6 & Ghziy6)); +assign Ghziy6 = (~(Ohziy6 & Whziy6)); +assign Whziy6 = (Eiziy6 & Miziy6); +assign Miziy6 = (~(Uiziy6 | Omxmz6[29])); +assign Uiziy6 = (Omxmz6[30] | Omxmz6[31]); +assign Eiziy6 = (~(Omxmz6[27] | Omxmz6[28])); +assign Ohziy6 = (Cjziy6 & Kjziy6); +assign Kjziy6 = (~(Omxmz6[25] | Omxmz6[26])); +assign Cjziy6 = (S397z6 & Wdyiy6); +assign Ygziy6 = (~(Sjziy6 & Akziy6)); +assign Akziy6 = (Ikziy6 & Qkziy6); +assign Qkziy6 = (~(Ykziy6 | Uixmz6[29])); +assign Ykziy6 = (Uixmz6[30] | Uixmz6[31]); +assign Ikziy6 = (~(Uixmz6[27] | Uixmz6[28])); +assign Sjziy6 = (Glziy6 & Olziy6); +assign Olziy6 = (~(Uixmz6[25] | Uixmz6[26])); +assign Glziy6 = (~(Odyiy6 | Uixmz6[24])); +assign Odyiy6 = (!Wlziy6); +assign Qgziy6 = (~(Emziy6 & Ycziy6)); +assign Ycziy6 = (Swzhw6 & Mmziy6); +assign Mmziy6 = (~(Umziy6 & Cnziy6)); +assign Cnziy6 = (Knziy6 & Wmqhw6); +assign Knziy6 = (Knqhw6 & Pmqhw6); +assign Umziy6 = (Imqhw6 & Dnqhw6); +assign Swzhw6 = (~(Snziy6 & Aoziy6)); +assign Aoziy6 = (!Pmqhw6); +assign Snziy6 = (~(Ioziy6 | Imqhw6)); +assign Imqhw6 = (~(Qoziy6 & Yoziy6)); +assign Yoziy6 = (~(Uixmz6[3] & Wlziy6)); +assign Qoziy6 = (~(Omxmz6[3] & Wdyiy6)); +assign Emziy6 = (Gpziy6 & Sfyiy6); +assign Sfyiy6 = (!Ywyiy6); +assign Ywyiy6 = (Opziy6 & Pmqhw6); +assign Pmqhw6 = (~(Wpziy6 & Eqziy6)); +assign Eqziy6 = (~(Uixmz6[4] & Wlziy6)); +assign Wpziy6 = (~(Omxmz6[4] & Wdyiy6)); +assign Gpziy6 = (~(Opziy6 & Ulqhw6)); +assign Ulqhw6 = (~(Mqziy6 & Uqziy6)); +assign Uqziy6 = (~(Uixmz6[2] & Wlziy6)); +assign Mqziy6 = (~(Omxmz6[2] & Wdyiy6)); +assign Opziy6 = (!Ioziy6); +assign Ioziy6 = (~(Crziy6 & Krziy6)); +assign Krziy6 = (!Knqhw6); +assign Knqhw6 = (~(Srziy6 & Asziy6)); +assign Asziy6 = (~(Uixmz6[7] & Wlziy6)); +assign Srziy6 = (~(Omxmz6[7] & Wdyiy6)); +assign Crziy6 = (~(Wmqhw6 | Dnqhw6)); +assign Dnqhw6 = (~(Isziy6 & Qsziy6)); +assign Qsziy6 = (~(Uixmz6[6] & Wlziy6)); +assign Isziy6 = (~(Omxmz6[6] & Wdyiy6)); +assign Wmqhw6 = (~(Ysziy6 & Gtziy6)); +assign Gtziy6 = (~(Uixmz6[5] & Wlziy6)); +assign Wlziy6 = (~(E6qhw6 | Dz1nv6)); +assign Ysziy6 = (~(Omxmz6[5] & Wdyiy6)); +assign Wdyiy6 = (~(E6qhw6 | JTAGNSW)); +assign E6qhw6 = (!Dbymz6[0]); +assign Pc0iw6 = (~(Oeo7z6[1] | Oeo7z6[0])); +assign Kfziy6 = (~(Kr97z6 & Otziy6)); +assign Otziy6 = (Ysyiy6 | Tszet6); +assign Ysyiy6 = (Ua77z6 ^ Ma77z6); +assign L6qhw6 = (~(Oeo7z6[2] | W9yiy6)); +assign W9yiy6 = (Oeo7z6[1] & Oeo7z6[0]); +assign P3m7v6 = (Wtziy6 ? Cx4iw6 : H1j7z6[23]); +assign I3m7v6 = (Wtziy6 ? D85iw6 : H1j7z6[22]); +assign B3m7v6 = (Wtziy6 ? Ej5iw6 : H1j7z6[21]); +assign U2m7v6 = (Wtziy6 ? Bl5iw6 : H1j7z6[20]); +assign N2m7v6 = (Wtziy6 ? Mn5iw6 : H1j7z6[19]); +assign G2m7v6 = (Wtziy6 ? Jp5iw6 : H1j7z6[18]); +assign Z1m7v6 = (Wtziy6 ? Gr5iw6 : H1j7z6[17]); +assign S1m7v6 = (Euziy6 ? Z0iov6 : H1j7z6[15]); +assign L1m7v6 = (Euziy6 ? Bk6iw6 : H1j7z6[14]); +assign E1m7v6 = (Euziy6 ? Guhov6 : H1j7z6[13]); +assign X0m7v6 = (Euziy6 ? Emhov6 : H1j7z6[12]); +assign Q0m7v6 = (Euziy6 ? Dz6iw6 : H1j7z6[11]); +assign J0m7v6 = (Euziy6 ? H17iw6 : H1j7z6[10]); +assign C0m7v6 = (Euziy6 ? J27iw6 : H1j7z6[9]); +assign Vzl7v6 = (Muziy6 ? U42nv6 : H1j7z6[0]); +assign Ozl7v6 = (Muziy6 ? R62nv6 : H1j7z6[7]); +assign Hzl7v6 = (Muziy6 ? K62nv6 : H1j7z6[6]); +assign Azl7v6 = (Muziy6 ? D62nv6 : H1j7z6[5]); +assign Tyl7v6 = (Muziy6 ? W52nv6 : H1j7z6[4]); +assign Myl7v6 = (Muziy6 ? P52nv6 : H1j7z6[3]); +assign Fyl7v6 = (Muziy6 ? B52nv6 : H1j7z6[1]); +assign Yxl7v6 = (~(Uuziy6 & Cvziy6)); +assign Cvziy6 = (~(T7j7z6[0] & Kvziy6)); +assign Uuziy6 = (~(Svziy6 & Hq3iw6)); +assign Rxl7v6 = (~(Awziy6 & Iwziy6)); +assign Iwziy6 = (~(T7j7z6[2] & Kvziy6)); +assign Awziy6 = (~(Svziy6 & Gg2iw6)); +assign Kxl7v6 = (~(Qwziy6 & Ywziy6)); +assign Ywziy6 = (~(T7j7z6[1] & Kvziy6)); +assign Kvziy6 = (~(Svziy6 & Bqi7z6[3])); +assign Qwziy6 = (~(Svziy6 & Nf3iw6)); +assign Dxl7v6 = (~(Gxziy6 & Oxziy6)); +assign Oxziy6 = (~(Z8j7z6[0] & Wxziy6)); +assign Gxziy6 = (~(Svziy6 & T95iw6)); +assign Wwl7v6 = (~(Eyziy6 & Myziy6)); +assign Myziy6 = (~(Z8j7z6[2] & Wxziy6)); +assign Eyziy6 = (~(Svziy6 & Qj4iw6)); +assign Pwl7v6 = (~(Uyziy6 & Czziy6)); +assign Czziy6 = (~(Z8j7z6[1] & Wxziy6)); +assign Wxziy6 = (~(Svziy6 & Bqi7z6[2])); +assign Uyziy6 = (~(Svziy6 & Zy4iw6)); +assign Iwl7v6 = (~(Kzziy6 & Szziy6)); +assign Szziy6 = (~(Nbj7z6[0] & A00jy6)); +assign Kzziy6 = (~(Svziy6 & X18iw6)); +assign Bwl7v6 = (~(I00jy6 & Q00jy6)); +assign Q00jy6 = (~(Nbj7z6[2] & A00jy6)); +assign I00jy6 = (~(Svziy6 & O87iw6)); +assign Uvl7v6 = (~(Y00jy6 & G10jy6)); +assign G10jy6 = (~(Nbj7z6[1] & A00jy6)); +assign A00jy6 = (~(Svziy6 & Bqi7z6[0])); +assign Y00jy6 = (~(Svziy6 & Np7iw6)); +assign Svziy6 = (O10jy6 & Eec7x6); +assign O10jy6 = (Wdm7x6 & Pb8iw6); +assign Nvl7v6 = (W10jy6 ? Micet6 : Jp5iw6); +assign Gvl7v6 = (W10jy6 ? Sjcet6 : Gr5iw6); +assign Zul7v6 = (P9get6 ? Oqbet6 : Jqj7z6[7]); +assign Oqbet6 = (Q0hov6 & W14iw6); +assign Q0hov6 = (E20jy6 & Wdm7x6); +assign E20jy6 = (Z4m7x6 & Bqi7z6[3]); +assign Sul7v6 = (M20jy6 ? D5cet6 : B52nv6); +assign Lul7v6 = (M20jy6 ? L2cet6 : W52nv6); +assign Eul7v6 = (U20jy6 ? A8cet6 : U42nv6); +assign Xtl7v6 = (U20jy6 ? E9cet6 : B52nv6); +assign Qtl7v6 = (Ijeet6 & Nbmov6); +assign Nbmov6 = (!Mleet6); +assign Jtl7v6 = (T8lov6 ? Qij7z6[6] : K62nv6); +assign Ctl7v6 = (T8lov6 ? Qij7z6[5] : D62nv6); +assign Vsl7v6 = (T8lov6 ? Qij7z6[4] : W52nv6); +assign Osl7v6 = (T8lov6 ? Qij7z6[3] : P52nv6); +assign Hsl7v6 = (T8lov6 ? Qij7z6[1] : B52nv6); +assign T8lov6 = (!Knniy6); +assign Asl7v6 = (Knniy6 ? U42nv6 : Qij7z6[0]); +assign Trl7v6 = (~(C30jy6 & K30jy6)); +assign K30jy6 = (~(S30jy6 & Hq3iw6)); +assign C30jy6 = (~(Gaj7z6[0] & A40jy6)); +assign Mrl7v6 = (~(I40jy6 & Q40jy6)); +assign Q40jy6 = (~(S30jy6 & Gg2iw6)); +assign Gg2iw6 = (~(Dv3iw6 | Fcgiw6)); +assign I40jy6 = (~(Gaj7z6[2] & A40jy6)); +assign Frl7v6 = (~(Y40jy6 & G50jy6)); +assign G50jy6 = (~(S30jy6 & Nf3iw6)); +assign Nf3iw6 = (~(Dv3iw6 | Wagiw6)); +assign Y40jy6 = (~(Gaj7z6[1] & A40jy6)); +assign A40jy6 = (~(S30jy6 & Bqi7z6[3])); +assign S30jy6 = (L28iw6 & Z4m7x6); +assign Z4m7x6 = (O50jy6 & Pi8iw6); +assign O50jy6 = (G42nv6 & Toi7z6[2]); +assign Yql7v6 = (W50jy6 ? Wf4iw6 : HTMDHBURST[0]); +assign W50jy6 = (E60jy6 & Bqi7z6[3]); +assign Rql7v6 = (~(K94iw6 & M60jy6)); +assign M60jy6 = (~(HTMDHREADY & Kygnv6)); +assign Kql7v6 = (Kygnv6 ? HTMDHRESP[1] : U60jy6); +assign U60jy6 = (C70jy6 & K70jy6); +assign K70jy6 = (~(S70jy6 & A80jy6)); +assign A80jy6 = (~(HRESPS[1] & Ad47x6)); +assign S70jy6 = (~(HRESPD[1] & Mc47x6)); +assign Dql7v6 = (Kygnv6 ? HTMDHRESP[0] : I80jy6); +assign I80jy6 = (Ihnet6 | A0onv6); +assign A0onv6 = (!Qvkiw6); +assign Qvkiw6 = (~(C70jy6 & Q80jy6)); +assign Q80jy6 = (~(Y80jy6 & G90jy6)); +assign G90jy6 = (O90jy6 & W90jy6); +assign W90jy6 = (~(Zmoyx6 & Qhlov6)); +assign Qhlov6 = (~(Ea0jy6 & Ma0jy6)); +assign Ma0jy6 = (~(Ua0jy6 & Cb0jy6)); +assign Cb0jy6 = (~(Kb0jy6 | Sb0jy6)); +assign Ua0jy6 = (Ac0jy6 & Ic0jy6); +assign Ic0jy6 = (!Ozixx6); +assign Ea0jy6 = (Qc0jy6 | W5eiw6); +assign W5eiw6 = (~(Yc0jy6 & Gd0jy6)); +assign Gd0jy6 = (Ac0jy6 | Teyet6); +assign Yc0jy6 = (~(Qmonv6 | Sjyet6)); +assign Qc0jy6 = (~(Znn7z6[3] & Od0jy6)); +assign Od0jy6 = (Vugxx6 | Znn7z6[0]); +assign O90jy6 = (~(Kfdiy6 & Xhlov6)); +assign Xhlov6 = (~(Wd0jy6 & Ee0jy6)); +assign Ee0jy6 = (~(Euget6 & Klo7z6[5])); +assign Wd0jy6 = (Me0jy6 & Ue0jy6); +assign Ue0jy6 = (~(Ja1ft6 & Cf0jy6)); +assign Me0jy6 = (~(P8adt6 & Ngqyx6)); +assign Y80jy6 = (Kf0jy6 & Sf0jy6); +assign Sf0jy6 = (~(HRESPS[0] & Ad47x6)); +assign Kf0jy6 = (~(HRESPD[0] & Mc47x6)); +assign C70jy6 = (~(Suixx6 | Yg77z6)); +assign Wpl7v6 = (~(Nlh7v6 & K94iw6)); +assign K94iw6 = (!Ob4iw6); +assign Ob4iw6 = (HTMDHBURST[0] & O5a7z6); +assign O5a7z6 = (Senet6 & Rsdiw6); +assign Rsdiw6 = (Qgwiy6 | Suixx6); +assign Suixx6 = (!Ag0jy6); +assign Qgwiy6 = (~(Ig0jy6 & Qg0jy6)); +assign Qg0jy6 = (Yg0jy6 & Gh0jy6); +assign Gh0jy6 = (~(HREADYS & Ad47x6)); +assign Ad47x6 = (Rnm7z6[1] & Oh0jy6); +assign Yg0jy6 = (~(Wh0jy6 | Yg77z6)); +assign Wh0jy6 = (Ei0jy6 & Mi0jy6); +assign Mi0jy6 = (Ui0jy6 & Cj0jy6); +assign Cj0jy6 = (~(Kj0jy6 & Zuixx6)); +assign Kj0jy6 = (~(HREADYD & Sj0jy6)); +assign Sj0jy6 = (~(Ak0jy6 & Ik0jy6)); +assign Ak0jy6 = (Qk0jy6 & Ag0jy6); +assign Ui0jy6 = (~(Yk0jy6 & Gl0jy6)); +assign Ei0jy6 = (D6eiw6 & Zmoyx6); +assign Zmoyx6 = (Kryiy6 & Ol0jy6); +assign Ol0jy6 = (~(I497z6 & Wl0jy6)); +assign Ig0jy6 = (Em0jy6 & Mm0jy6); +assign Mm0jy6 = (~(Kfdiy6 & Vd2iw6)); +assign Vd2iw6 = (~(Um0jy6 & Cn0jy6)); +assign Cn0jy6 = (Kn0jy6 & Xneiw6); +assign Xneiw6 = (Sn0jy6 | Ngqyx6); +assign Sn0jy6 = (Cf0jy6 | Klo7z6[5]); +assign Cf0jy6 = (~(Ao0jy6 & I4fiy6)); +assign Kn0jy6 = (~(Klo7z6[5] & Orget6)); +assign Um0jy6 = (Io0jy6 & Qo0jy6); +assign Qo0jy6 = (~(O9adt6 & Ngqyx6)); +assign Ngqyx6 = (Klo7z6[4] | Klo7z6[6]); +assign Io0jy6 = (A497z6 | Yo0jy6); +assign Yo0jy6 = (Ao0jy6 & Gp0jy6); +assign Gp0jy6 = (I4fiy6 | D16ft6); +assign I4fiy6 = (!Klo7z6[3]); +assign Ao0jy6 = (Op0jy6 & F41zx6); +assign F41zx6 = (!Klo7z6[0]); +assign Op0jy6 = (~(Klo7z6[1] | Klo7z6[2])); +assign Kfdiy6 = (Rnm7z6[2] & Oh0jy6); +assign Em0jy6 = (~(Mc47x6 & HREADYD)); +assign Mc47x6 = (Rnm7z6[0] & Oh0jy6); +assign Oh0jy6 = (Kryiy6 & Wl0jy6); +assign Wl0jy6 = (~(Wp0jy6 & Styet6)); +assign Wp0jy6 = (~(Eq0jy6 | A9gxx6)); +assign Ppl7v6 = (Mq0jy6 ? J27iw6 : X0eet6); +assign Ipl7v6 = (Mq0jy6 ? H17iw6 : W2eet6); +assign Bpl7v6 = (Mq0jy6 ? U47iw6 : Yydet6); +assign Mq0jy6 = (~(Uq0jy6 | Nq6iw6)); +assign Uol7v6 = (Cr0jy6 ? Brdet6 : W52nv6); +assign Nol7v6 = (~(Kr0jy6 & Sr0jy6)); +assign Sr0jy6 = (~(Zsdet6 & Cr0jy6)); +assign Kr0jy6 = (~(X18iw6 & E60jy6)); +assign Gol7v6 = (~(As0jy6 & Is0jy6)); +assign Is0jy6 = (~(Zudet6 & Cr0jy6)); +assign As0jy6 = (~(Np7iw6 & E60jy6)); +assign Znl7v6 = (~(Qs0jy6 & Ys0jy6)); +assign Ys0jy6 = (~(Ywdet6 & Cr0jy6)); +assign Qs0jy6 = (~(O87iw6 & E60jy6)); +assign Snl7v6 = (Cr0jy6 ? Zodet6 : U42nv6); +assign Cr0jy6 = (Uq0jy6 | Twaiw6); +assign Lnl7v6 = (Hyhov6 ? Mn5iw6 : Nybet6); +assign Enl7v6 = (Hyhov6 ? Jp5iw6 : Vzbet6); +assign Xml7v6 = (~(Gt0jy6 & Ot0jy6)); +assign Ot0jy6 = (~(Tcj7z6[0] & Wt0jy6)); +assign Gt0jy6 = (~(Eu0jy6 & T95iw6)); +assign T95iw6 = (~(Ie5iw6 | Tyfiw6)); +assign Qml7v6 = (~(Mu0jy6 & Uu0jy6)); +assign Uu0jy6 = (~(Tcj7z6[2] & Wt0jy6)); +assign Mu0jy6 = (~(Eu0jy6 & Qj4iw6)); +assign Qj4iw6 = (~(Ie5iw6 | L1giw6)); +assign Jml7v6 = (~(Cv0jy6 & Kv0jy6)); +assign Kv0jy6 = (~(Tcj7z6[1] & Wt0jy6)); +assign Wt0jy6 = (~(Eu0jy6 & Bqi7z6[2])); +assign Cv0jy6 = (~(Eu0jy6 & Zy4iw6)); +assign Cml7v6 = (~(Sv0jy6 & Aw0jy6)); +assign Aw0jy6 = (~(Ffj7z6[0] & Iw0jy6)); +assign Sv0jy6 = (~(Eu0jy6 & X18iw6)); +assign X18iw6 = (~(Twaiw6 | Tdfiw6)); +assign Vll7v6 = (~(Qw0jy6 & Yw0jy6)); +assign Yw0jy6 = (~(Ffj7z6[2] & Iw0jy6)); +assign Qw0jy6 = (~(Eu0jy6 & O87iw6)); +assign O87iw6 = (~(Twaiw6 | Egfiw6)); +assign Oll7v6 = (~(Gx0jy6 & Ox0jy6)); +assign Ox0jy6 = (~(Ffj7z6[1] & Iw0jy6)); +assign Iw0jy6 = (~(Eu0jy6 & Bqi7z6[0])); +assign Gx0jy6 = (~(Eu0jy6 & Np7iw6)); +assign Np7iw6 = (~(Twaiw6 | Gbeiw6)); +assign Hll7v6 = (~(Wx0jy6 & Ey0jy6)); +assign Ey0jy6 = (~(Zdj7z6[0] & My0jy6)); +assign Wx0jy6 = (~(Eu0jy6 & Rl6iw6)); +assign Rl6iw6 = (~(Nq6iw6 | Gofiw6)); +assign All7v6 = (~(Uy0jy6 & Cz0jy6)); +assign Cz0jy6 = (~(Zdj7z6[2] & My0jy6)); +assign Uy0jy6 = (~(Eu0jy6 & Hv5iw6)); +assign Hv5iw6 = (~(Nq6iw6 | Yqfiw6)); +assign Tkl7v6 = (~(Kz0jy6 & Sz0jy6)); +assign Sz0jy6 = (~(Zdj7z6[1] & My0jy6)); +assign My0jy6 = (~(Eu0jy6 & Bqi7z6[1])); +assign Kz0jy6 = (~(Eu0jy6 & Qa6iw6)); +assign Qa6iw6 = (~(Nq6iw6 | Ppfiw6)); +assign Nq6iw6 = (!Bqi7z6[1]); +assign Eu0jy6 = (Hvjiw6 & L28iw6); +assign L28iw6 = (~(Wnaiw6 | X22nv6)); +assign Mkl7v6 = (A01jy6 ? Doadt6 : U42nv6); +assign Fkl7v6 = (A01jy6 ? O7adt6 : B52nv6); +assign A01jy6 = (!I01jy6); +assign Yjl7v6 = (Q01jy6 ? U42nv6 : Rip7z6[0]); +assign Rjl7v6 = (Q01jy6 ? P52nv6 : Rip7z6[3]); +assign Kjl7v6 = (Q01jy6 ? B52nv6 : Rip7z6[1]); +assign Q01jy6 = (!Y01jy6); +assign Djl7v6 = (G11jy6 ? U42nv6 : G0q7z6[0]); +assign Wil7v6 = (G11jy6 ? P52nv6 : G0q7z6[3]); +assign Pil7v6 = (G11jy6 ? B52nv6 : G0q7z6[1]); +assign Iil7v6 = (O11jy6 ? R62nv6 : W22ft6); +assign Bil7v6 = (O11jy6 ? P52nv6 : I7p7z6[3]); +assign Uhl7v6 = (O11jy6 ? B52nv6 : I7p7z6[1]); +assign Nhl7v6 = (O11jy6 ? U42nv6 : I7p7z6[0]); +assign Ghl7v6 = (O11jy6 ? D62nv6 : M12ft6); +assign Zgl7v6 = (W11jy6 ? U42nv6 : E6p7z6[0]); +assign Sgl7v6 = (W11jy6 ? X0hov6 : E6p7z6[31]); +assign Lgl7v6 = (W11jy6 ? Ro3iw6 : E6p7z6[30]); +assign Egl7v6 = (W11jy6 ? Zz3iw6 : E6p7z6[29]); +assign Xfl7v6 = (W11jy6 ? W14iw6 : E6p7z6[28]); +assign Qfl7v6 = (W11jy6 ? H44iw6 : E6p7z6[27]); +assign Jfl7v6 = (W11jy6 ? E64iw6 : E6p7z6[26]); +assign Cfl7v6 = (W11jy6 ? Iklov6 : E6p7z6[25]); +assign Vel7v6 = (W11jy6 ? Wf4iw6 : E6p7z6[24]); +assign Oel7v6 = (W11jy6 ? Cx4iw6 : E6p7z6[23]); +assign Hel7v6 = (W11jy6 ? D85iw6 : E6p7z6[22]); +assign Ael7v6 = (W11jy6 ? Ej5iw6 : E6p7z6[21]); +assign Tdl7v6 = (W11jy6 ? Bl5iw6 : E6p7z6[20]); +assign Mdl7v6 = (W11jy6 ? Mn5iw6 : E6p7z6[19]); +assign Fdl7v6 = (W11jy6 ? Jp5iw6 : E6p7z6[18]); +assign Ycl7v6 = (W11jy6 ? Gr5iw6 : E6p7z6[17]); +assign Rcl7v6 = (W11jy6 ? Is5iw6 : E6p7z6[16]); +assign Kcl7v6 = (W11jy6 ? Z0iov6 : E6p7z6[15]); +assign Dcl7v6 = (W11jy6 ? Bk6iw6 : E6p7z6[14]); +assign Wbl7v6 = (W11jy6 ? Guhov6 : E6p7z6[13]); +assign Pbl7v6 = (W11jy6 ? Emhov6 : E6p7z6[12]); +assign Ibl7v6 = (W11jy6 ? Dz6iw6 : E6p7z6[11]); +assign Bbl7v6 = (W11jy6 ? H17iw6 : E6p7z6[10]); +assign Ual7v6 = (W11jy6 ? J27iw6 : E6p7z6[9]); +assign Nal7v6 = (W11jy6 ? U47iw6 : E6p7z6[8]); +assign Gal7v6 = (W11jy6 ? R62nv6 : E6p7z6[7]); +assign Z9l7v6 = (W11jy6 ? K62nv6 : E6p7z6[6]); +assign S9l7v6 = (W11jy6 ? D62nv6 : E6p7z6[5]); +assign L9l7v6 = (W11jy6 ? W52nv6 : E6p7z6[4]); +assign E9l7v6 = (W11jy6 ? P52nv6 : E6p7z6[3]); +assign X8l7v6 = (W11jy6 ? B52nv6 : E6p7z6[1]); +assign Q8l7v6 = (E21jy6 ? U42nv6 : Bqp7z6[0]); +assign J8l7v6 = (E21jy6 ? X0hov6 : Bqp7z6[31]); +assign C8l7v6 = (E21jy6 ? Ro3iw6 : Bqp7z6[30]); +assign V7l7v6 = (E21jy6 ? Zz3iw6 : Bqp7z6[29]); +assign O7l7v6 = (E21jy6 ? W14iw6 : Bqp7z6[28]); +assign H7l7v6 = (E21jy6 ? H44iw6 : Bqp7z6[27]); +assign A7l7v6 = (E21jy6 ? E64iw6 : Bqp7z6[26]); +assign T6l7v6 = (E21jy6 ? Iklov6 : Bqp7z6[25]); +assign M6l7v6 = (E21jy6 ? Wf4iw6 : Bqp7z6[24]); +assign F6l7v6 = (E21jy6 ? Cx4iw6 : Bqp7z6[23]); +assign Y5l7v6 = (E21jy6 ? D85iw6 : Bqp7z6[22]); +assign R5l7v6 = (E21jy6 ? Ej5iw6 : Bqp7z6[21]); +assign K5l7v6 = (E21jy6 ? Bl5iw6 : Bqp7z6[20]); +assign D5l7v6 = (E21jy6 ? Mn5iw6 : Bqp7z6[19]); +assign W4l7v6 = (E21jy6 ? Jp5iw6 : Bqp7z6[18]); +assign P4l7v6 = (E21jy6 ? Gr5iw6 : Bqp7z6[17]); +assign I4l7v6 = (E21jy6 ? Is5iw6 : Bqp7z6[16]); +assign B4l7v6 = (E21jy6 ? Z0iov6 : Bqp7z6[15]); +assign U3l7v6 = (E21jy6 ? Bk6iw6 : Bqp7z6[14]); +assign N3l7v6 = (E21jy6 ? Guhov6 : Bqp7z6[13]); +assign G3l7v6 = (E21jy6 ? Emhov6 : Bqp7z6[12]); +assign Z2l7v6 = (E21jy6 ? Dz6iw6 : Bqp7z6[11]); +assign S2l7v6 = (E21jy6 ? H17iw6 : Bqp7z6[10]); +assign L2l7v6 = (E21jy6 ? J27iw6 : Bqp7z6[9]); +assign E2l7v6 = (E21jy6 ? U47iw6 : Bqp7z6[8]); +assign X1l7v6 = (E21jy6 ? R62nv6 : Bqp7z6[7]); +assign Q1l7v6 = (E21jy6 ? K62nv6 : Bqp7z6[6]); +assign J1l7v6 = (E21jy6 ? D62nv6 : Bqp7z6[5]); +assign C1l7v6 = (E21jy6 ? W52nv6 : Bqp7z6[4]); +assign V0l7v6 = (E21jy6 ? P52nv6 : Bqp7z6[3]); +assign O0l7v6 = (E21jy6 ? B52nv6 : Bqp7z6[1]); +assign H0l7v6 = (Etgiw6 ? U42nv6 : Qb4ft6); +assign A0l7v6 = (Etgiw6 ? D85iw6 : Xkq7z6[22]); +assign Tzk7v6 = (Etgiw6 ? Ej5iw6 : Xkq7z6[21]); +assign Mzk7v6 = (Etgiw6 ? Bl5iw6 : Xkq7z6[20]); +assign Fzk7v6 = (Etgiw6 ? Mn5iw6 : Xkq7z6[19]); +assign Yyk7v6 = (Etgiw6 ? Jp5iw6 : Xkq7z6[18]); +assign Ryk7v6 = (Etgiw6 ? Gr5iw6 : Xkq7z6[17]); +assign Kyk7v6 = (Etgiw6 ? Is5iw6 : Xkq7z6[16]); +assign Dyk7v6 = (Etgiw6 ? Z0iov6 : Xkq7z6[15]); +assign Wxk7v6 = (Etgiw6 ? Bk6iw6 : Xkq7z6[14]); +assign Pxk7v6 = (Etgiw6 ? Guhov6 : Xkq7z6[13]); +assign Ixk7v6 = (Etgiw6 ? Emhov6 : Xkq7z6[12]); +assign Bxk7v6 = (Etgiw6 ? Dz6iw6 : W5q7z6[1]); +assign Uwk7v6 = (Etgiw6 ? H17iw6 : W5q7z6[0]); +assign Nwk7v6 = (Etgiw6 ? J27iw6 : Id4ft6); +assign Gwk7v6 = (Etgiw6 ? U47iw6 : X9q7z6[3]); +assign Zvk7v6 = (Etgiw6 ? R62nv6 : X9q7z6[2]); +assign Svk7v6 = (Etgiw6 ? K62nv6 : X9q7z6[1]); +assign Lvk7v6 = (Etgiw6 ? D62nv6 : X9q7z6[0]); +assign Evk7v6 = (Etgiw6 ? W52nv6 : Y7q7z6[3]); +assign Xuk7v6 = (Etgiw6 ? P52nv6 : Y7q7z6[2]); +assign Quk7v6 = (Etgiw6 ? B52nv6 : Y7q7z6[0]); +assign Juk7v6 = (M21jy6 ? D62nv6 : Dm2ft6); +assign Cuk7v6 = (M21jy6 ? P52nv6 : Hmp7z6[3]); +assign Vtk7v6 = (M21jy6 ? B52nv6 : Hmp7z6[1]); +assign Otk7v6 = (M21jy6 ? U42nv6 : Hmp7z6[0]); +assign Htk7v6 = (U21jy6 ? U42nv6 : Q8p7z6[0]); +assign Atk7v6 = (U21jy6 ? P52nv6 : Q8p7z6[3]); +assign Tsk7v6 = (U21jy6 ? B52nv6 : Q8p7z6[1]); +assign U21jy6 = (!C31jy6); +assign Msk7v6 = (K31jy6 ? U42nv6 : Gop7z6[0]); +assign Fsk7v6 = (K31jy6 ? P52nv6 : Gop7z6[3]); +assign Yrk7v6 = (K31jy6 ? B52nv6 : Gop7z6[1]); +assign Rrk7v6 = (S31jy6 ? D62nv6 : Ei2ft6); +assign Krk7v6 = (S31jy6 ? P52nv6 : Sgp7z6[3]); +assign Drk7v6 = (S31jy6 ? B52nv6 : Sgp7z6[1]); +assign Wqk7v6 = (S31jy6 ? U42nv6 : Sgp7z6[0]); +assign Pqk7v6 = (A41jy6 ? U42nv6 : B2q7z6[0]); +assign Iqk7v6 = (A41jy6 ? X0hov6 : B2q7z6[31]); +assign Bqk7v6 = (A41jy6 ? Ro3iw6 : B2q7z6[30]); +assign Upk7v6 = (A41jy6 ? Zz3iw6 : B2q7z6[29]); +assign Npk7v6 = (A41jy6 ? W14iw6 : B2q7z6[28]); +assign Gpk7v6 = (A41jy6 ? H44iw6 : B2q7z6[27]); +assign Zok7v6 = (A41jy6 ? E64iw6 : B2q7z6[26]); +assign Sok7v6 = (A41jy6 ? Iklov6 : B2q7z6[25]); +assign Lok7v6 = (A41jy6 ? Wf4iw6 : B2q7z6[24]); +assign Eok7v6 = (A41jy6 ? Cx4iw6 : B2q7z6[23]); +assign Xnk7v6 = (A41jy6 ? D85iw6 : B2q7z6[22]); +assign Qnk7v6 = (A41jy6 ? Ej5iw6 : B2q7z6[21]); +assign Jnk7v6 = (A41jy6 ? Bl5iw6 : B2q7z6[20]); +assign Cnk7v6 = (A41jy6 ? Mn5iw6 : B2q7z6[19]); +assign Vmk7v6 = (A41jy6 ? Jp5iw6 : B2q7z6[18]); +assign Omk7v6 = (A41jy6 ? Gr5iw6 : B2q7z6[17]); +assign Hmk7v6 = (A41jy6 ? Is5iw6 : B2q7z6[16]); +assign Amk7v6 = (A41jy6 ? Z0iov6 : B2q7z6[15]); +assign Tlk7v6 = (A41jy6 ? Bk6iw6 : B2q7z6[14]); +assign Mlk7v6 = (A41jy6 ? Guhov6 : B2q7z6[13]); +assign Flk7v6 = (A41jy6 ? Emhov6 : B2q7z6[12]); +assign Ykk7v6 = (A41jy6 ? Dz6iw6 : B2q7z6[11]); +assign Rkk7v6 = (A41jy6 ? H17iw6 : B2q7z6[10]); +assign Kkk7v6 = (A41jy6 ? J27iw6 : B2q7z6[9]); +assign Dkk7v6 = (A41jy6 ? U47iw6 : B2q7z6[8]); +assign Wjk7v6 = (A41jy6 ? R62nv6 : B2q7z6[7]); +assign Pjk7v6 = (A41jy6 ? K62nv6 : B2q7z6[6]); +assign Ijk7v6 = (A41jy6 ? D62nv6 : B2q7z6[5]); +assign Bjk7v6 = (A41jy6 ? W52nv6 : B2q7z6[4]); +assign Uik7v6 = (A41jy6 ? P52nv6 : B2q7z6[3]); +assign Nik7v6 = (A41jy6 ? B52nv6 : B2q7z6[1]); +assign Gik7v6 = (I41jy6 ? B52nv6 : Mkp7z6[1]); +assign Zhk7v6 = (I41jy6 ? P52nv6 : Mkp7z6[3]); +assign Shk7v6 = (I41jy6 ? W52nv6 : Mkp7z6[4]); +assign Lhk7v6 = (I41jy6 ? D62nv6 : Mkp7z6[5]); +assign Ehk7v6 = (I41jy6 ? K62nv6 : Mkp7z6[6]); +assign Xgk7v6 = (I41jy6 ? R62nv6 : Mkp7z6[7]); +assign Qgk7v6 = (I41jy6 ? U47iw6 : Mkp7z6[8]); +assign Jgk7v6 = (I41jy6 ? J27iw6 : Mkp7z6[9]); +assign Cgk7v6 = (I41jy6 ? H17iw6 : Mkp7z6[10]); +assign Vfk7v6 = (I41jy6 ? Dz6iw6 : Mkp7z6[11]); +assign Ofk7v6 = (I41jy6 ? Emhov6 : Mkp7z6[12]); +assign Hfk7v6 = (I41jy6 ? Guhov6 : Mkp7z6[13]); +assign Afk7v6 = (I41jy6 ? Bk6iw6 : Mkp7z6[14]); +assign Tek7v6 = (I41jy6 ? Z0iov6 : Mkp7z6[15]); +assign Mek7v6 = (I41jy6 ? Is5iw6 : Mkp7z6[16]); +assign Fek7v6 = (I41jy6 ? Gr5iw6 : Mkp7z6[17]); +assign Ydk7v6 = (I41jy6 ? Jp5iw6 : Mkp7z6[18]); +assign Rdk7v6 = (I41jy6 ? Mn5iw6 : Mkp7z6[19]); +assign Kdk7v6 = (I41jy6 ? Bl5iw6 : Mkp7z6[20]); +assign Ddk7v6 = (I41jy6 ? Ej5iw6 : Mkp7z6[21]); +assign Wck7v6 = (I41jy6 ? D85iw6 : Mkp7z6[22]); +assign Pck7v6 = (I41jy6 ? Cx4iw6 : Mkp7z6[23]); +assign Ick7v6 = (I41jy6 ? Wf4iw6 : Mkp7z6[24]); +assign Bck7v6 = (I41jy6 ? Iklov6 : Mkp7z6[25]); +assign Ubk7v6 = (I41jy6 ? E64iw6 : Mkp7z6[26]); +assign Nbk7v6 = (I41jy6 ? H44iw6 : Mkp7z6[27]); +assign Gbk7v6 = (I41jy6 ? W14iw6 : Mkp7z6[28]); +assign Zak7v6 = (I41jy6 ? Zz3iw6 : Mkp7z6[29]); +assign Sak7v6 = (I41jy6 ? Ro3iw6 : Mkp7z6[30]); +assign Lak7v6 = (I41jy6 ? X0hov6 : Mkp7z6[31]); +assign Eak7v6 = (I41jy6 ? U42nv6 : Mkp7z6[0]); +assign X9k7v6 = (Q41jy6 ? D62nv6 : Gs2ft6); +assign Q9k7v6 = (Q41jy6 ? P52nv6 : Hyp7z6[3]); +assign J9k7v6 = (Q41jy6 ? B52nv6 : Hyp7z6[1]); +assign C9k7v6 = (Q41jy6 ? U42nv6 : Hyp7z6[0]); +assign V8k7v6 = (Q41jy6 ? Dz6iw6 : Gwp7z6[1]); +assign O8k7v6 = (Q41jy6 ? Emhov6 : Bup7z6[0]); +assign H8k7v6 = (Q41jy6 ? Guhov6 : Bup7z6[1]); +assign A8k7v6 = (Q41jy6 ? Is5iw6 : Wrp7z6[0]); +assign T7k7v6 = (Q41jy6 ? Gr5iw6 : Wrp7z6[1]); +assign M7k7v6 = (Q41jy6 ? U47iw6 : Cq2ft6); +assign F7k7v6 = (Q41jy6 ? H17iw6 : Gwp7z6[0]); +assign Y6k7v6 = (Otshy6 ? Xfymz6[2] : Pjb7z6[2]); +assign Otshy6 = (!Mphiw6); +assign Mphiw6 = (Y41jy6 & G51jy6); +assign Y41jy6 = (O51jy6 & W51jy6); +assign W51jy6 = (~(E61jy6 | Pjb7z6[13])); +assign O51jy6 = (Pjb7z6[18] & Pjb7z6[12]); +assign R6k7v6 = (M61jy6 ? Z0iov6 : Unymz6[9]); +assign K6k7v6 = (M61jy6 ? R62nv6 : Unymz6[4]); +assign D6k7v6 = (M61jy6 ? Emhov6 : Unymz6[6]); +assign W5k7v6 = (M61jy6 ? Guhov6 : Unymz6[7]); +assign P5k7v6 = (M61jy6 ? U42nv6 : Unymz6[0]); +assign I5k7v6 = (M61jy6 ? B52nv6 : Unymz6[1]); +assign B5k7v6 = (M61jy6 ? D62nv6 : Unymz6[2]); +assign U4k7v6 = (M61jy6 ? K62nv6 : Unymz6[3]); +assign N4k7v6 = (M61jy6 ? Bk6iw6 : Unymz6[8]); +assign G4k7v6 = (U61jy6 ? Z0iov6 : Ojymz6[9]); +assign Z3k7v6 = (U61jy6 ? R62nv6 : Ojymz6[4]); +assign S3k7v6 = (U61jy6 ? Emhov6 : Ojymz6[6]); +assign L3k7v6 = (U61jy6 ? Guhov6 : Ojymz6[7]); +assign E3k7v6 = (U61jy6 ? U42nv6 : Ojymz6[0]); +assign X2k7v6 = (U61jy6 ? B52nv6 : Ojymz6[1]); +assign Q2k7v6 = (U61jy6 ? D62nv6 : Ojymz6[2]); +assign J2k7v6 = (U61jy6 ? K62nv6 : Ojymz6[3]); +assign C2k7v6 = (U61jy6 ? Bk6iw6 : Ojymz6[8]); +assign V1k7v6 = (C71jy6 ? B52nv6 : Kmymz6[1]); +assign O1k7v6 = (C71jy6 ? P52nv6 : Kmymz6[3]); +assign H1k7v6 = (C71jy6 ? Gr5iw6 : Blymz6[1]); +assign A1k7v6 = (C71jy6 ? Jp5iw6 : Blymz6[2]); +assign T0k7v6 = (C71jy6 ? Mn5iw6 : Blymz6[3]); +assign M0k7v6 = (C71jy6 ? U42nv6 : Kmymz6[0]); +assign F0k7v6 = (K71jy6 ? U42nv6 : At67v6); +assign K71jy6 = (S71jy6 & Xid8x6); +assign S71jy6 = (A81jy6 & L9pyx6); +assign L9pyx6 = (~(I81jy6 | Opniy6)); +assign Opniy6 = (~(Q81jy6 & Xfymz6[9])); +assign Q81jy6 = (Xfymz6[11] & Xfymz6[10]); +assign Yzj7v6 = (Y81jy6 ? B52nv6 : Wd77z6); +assign Rzj7v6 = (Y81jy6 ? P52nv6 : Cf77z6); +assign Kzj7v6 = (Y81jy6 ? W52nv6 : Kf77z6); +assign Dzj7v6 = (Y81jy6 ? D62nv6 : Sf77z6); +assign Wyj7v6 = (Y81jy6 ? K62nv6 : Ag77z6); +assign Pyj7v6 = (Y81jy6 ? U42nv6 : Gh77z6); +assign Iyj7v6 = (G91jy6 ? B52nv6 : Biymz6[1]); +assign Byj7v6 = (G91jy6 ? P52nv6 : Biymz6[3]); +assign Uxj7v6 = (G91jy6 ? W52nv6 : Biymz6[4]); +assign Nxj7v6 = (G91jy6 ? D62nv6 : Biymz6[5]); +assign Gxj7v6 = (G91jy6 ? K62nv6 : Biymz6[6]); +assign Zwj7v6 = (G91jy6 ? R62nv6 : Biymz6[7]); +assign Swj7v6 = (G91jy6 ? J27iw6 : Biymz6[9]); +assign Lwj7v6 = (G91jy6 ? H17iw6 : Biymz6[10]); +assign Ewj7v6 = (G91jy6 ? Dz6iw6 : Biymz6[11]); +assign Xvj7v6 = (G91jy6 ? Emhov6 : Biymz6[12]); +assign Qvj7v6 = (G91jy6 ? Guhov6 : Biymz6[13]); +assign Jvj7v6 = (G91jy6 ? Bk6iw6 : Biymz6[14]); +assign Cvj7v6 = (G91jy6 ? Z0iov6 : Biymz6[15]); +assign Vuj7v6 = (G91jy6 ? U42nv6 : Biymz6[0]); +assign Ouj7v6 = (O91jy6 ? W52nv6 : Feymz6[0]); +assign Huj7v6 = (O91jy6 ? D62nv6 : Feymz6[1]); +assign Auj7v6 = (O91jy6 ? K62nv6 : Feymz6[2]); +assign Ttj7v6 = (O91jy6 ? Ej5iw6 : Feymz6[3]); +assign Mtj7v6 = (O91jy6 ? Gr5iw6 : Bfymz6[1]); +assign Ftj7v6 = (O91jy6 ? Guhov6 : Bfymz6[2]); +assign Ysj7v6 = (O91jy6 ? Dz6iw6 : Ue77z6); +assign Rsj7v6 = (O91jy6 ? H17iw6 : C477v6); +assign Ksj7v6 = (O91jy6 ? J27iw6 : W177v6); +assign Dsj7v6 = (O91jy6 ? R62nv6 : Vv67v6); +assign Wrj7v6 = (O91jy6 ? U42nv6 : Wy67v6); +assign Prj7v6 = (Lhliw6 ? Tjr7z6[6] : ETMINTNUM[4]); +assign Irj7v6 = (Lhliw6 ? Tjr7z6[10] : ETMINTNUM[8]); +assign Brj7v6 = (O91jy6 ? W14iw6 : Xz67v6); +assign Uqj7v6 = (R1snv6 ? Gnzmz6[0] : TSVALUEB[0]); +assign Nqj7v6 = (R1snv6 ? Ync7v6 : TSVALUEB[47]); +assign Gqj7v6 = (R1snv6 ? Emc7v6 : TSVALUEB[46]); +assign Zpj7v6 = (R1snv6 ? Kkc7v6 : TSVALUEB[45]); +assign Spj7v6 = (R1snv6 ? Qic7v6 : TSVALUEB[44]); +assign Lpj7v6 = (R1snv6 ? Wgc7v6 : TSVALUEB[43]); +assign Epj7v6 = (R1snv6 ? Cfc7v6 : TSVALUEB[42]); +assign Xoj7v6 = (R1snv6 ? Gnzmz6[46] : TSVALUEB[41]); +assign Qoj7v6 = (R1snv6 ? Gnzmz6[45] : TSVALUEB[40]); +assign Joj7v6 = (R1snv6 ? Gnzmz6[44] : TSVALUEB[39]); +assign Coj7v6 = (R1snv6 ? Gnzmz6[43] : TSVALUEB[38]); +assign Vnj7v6 = (R1snv6 ? Gnzmz6[42] : TSVALUEB[37]); +assign Onj7v6 = (R1snv6 ? Gnzmz6[41] : TSVALUEB[36]); +assign Hnj7v6 = (R1snv6 ? Gnzmz6[40] : TSVALUEB[35]); +assign Anj7v6 = (R1snv6 ? Gnzmz6[38] : TSVALUEB[34]); +assign Tmj7v6 = (R1snv6 ? Gnzmz6[37] : TSVALUEB[33]); +assign Mmj7v6 = (R1snv6 ? Gnzmz6[36] : TSVALUEB[32]); +assign Fmj7v6 = (R1snv6 ? Gnzmz6[35] : TSVALUEB[31]); +assign Ylj7v6 = (R1snv6 ? Gnzmz6[34] : TSVALUEB[30]); +assign Rlj7v6 = (R1snv6 ? Gnzmz6[33] : TSVALUEB[29]); +assign Klj7v6 = (R1snv6 ? Gnzmz6[32] : TSVALUEB[28]); +assign Dlj7v6 = (R1snv6 ? Gnzmz6[30] : TSVALUEB[27]); +assign Wkj7v6 = (R1snv6 ? Gnzmz6[29] : TSVALUEB[26]); +assign Pkj7v6 = (R1snv6 ? Gnzmz6[28] : TSVALUEB[25]); +assign Ikj7v6 = (R1snv6 ? Gnzmz6[27] : TSVALUEB[24]); +assign Bkj7v6 = (R1snv6 ? Gnzmz6[26] : TSVALUEB[23]); +assign Ujj7v6 = (R1snv6 ? Gnzmz6[25] : TSVALUEB[22]); +assign Njj7v6 = (R1snv6 ? Gnzmz6[24] : TSVALUEB[21]); +assign Gjj7v6 = (R1snv6 ? Gnzmz6[22] : TSVALUEB[20]); +assign Zij7v6 = (R1snv6 ? Gnzmz6[21] : TSVALUEB[19]); +assign Sij7v6 = (R1snv6 ? Gnzmz6[20] : TSVALUEB[18]); +assign Lij7v6 = (R1snv6 ? Gnzmz6[19] : TSVALUEB[17]); +assign Eij7v6 = (R1snv6 ? Gnzmz6[18] : TSVALUEB[16]); +assign Xhj7v6 = (R1snv6 ? Gnzmz6[17] : TSVALUEB[15]); +assign Qhj7v6 = (R1snv6 ? Gnzmz6[16] : TSVALUEB[14]); +assign Jhj7v6 = (R1snv6 ? Gnzmz6[14] : TSVALUEB[13]); +assign Chj7v6 = (R1snv6 ? Gnzmz6[13] : TSVALUEB[12]); +assign Vgj7v6 = (R1snv6 ? Gnzmz6[12] : TSVALUEB[11]); +assign Ogj7v6 = (R1snv6 ? Gnzmz6[11] : TSVALUEB[10]); +assign Hgj7v6 = (R1snv6 ? Gnzmz6[10] : TSVALUEB[9]); +assign Agj7v6 = (R1snv6 ? Gnzmz6[9] : TSVALUEB[8]); +assign Tfj7v6 = (R1snv6 ? Gnzmz6[8] : TSVALUEB[7]); +assign Mfj7v6 = (R1snv6 ? Gnzmz6[6] : TSVALUEB[6]); +assign Ffj7v6 = (R1snv6 ? Gnzmz6[5] : TSVALUEB[5]); +assign Yej7v6 = (R1snv6 ? Gnzmz6[4] : TSVALUEB[4]); +assign Rej7v6 = (R1snv6 ? Gnzmz6[3] : TSVALUEB[3]); +assign Kej7v6 = (R1snv6 ? Gnzmz6[2] : TSVALUEB[2]); +assign R1snv6 = (!W91jy6); +assign Dej7v6 = (W91jy6 ? TSVALUEB[1] : Gnzmz6[1]); +assign W91jy6 = (Ea1jy6 & Ma1jy6); +assign Ma1jy6 = (Fgzmz6[0] & Xz67v6); +assign Ea1jy6 = (Hqb7v6 & G197z6); +assign Wdj7v6 = (Ua1jy6 ? Z0iov6 : Sgymz6[9]); +assign Pdj7v6 = (Ua1jy6 ? R62nv6 : Sgymz6[4]); +assign Idj7v6 = (Ua1jy6 ? Emhov6 : Sgymz6[6]); +assign Bdj7v6 = (Ua1jy6 ? Guhov6 : Sgymz6[7]); +assign Ucj7v6 = (Ua1jy6 ? U42nv6 : Sgymz6[0]); +assign Ncj7v6 = (Ua1jy6 ? B52nv6 : Sgymz6[1]); +assign Gcj7v6 = (Ua1jy6 ? D62nv6 : Sgymz6[2]); +assign Zbj7v6 = (Ua1jy6 ? K62nv6 : Sgymz6[3]); +assign Sbj7v6 = (Ua1jy6 ? Bk6iw6 : Sgymz6[8]); +assign Lbj7v6 = (Cb1jy6 ? Iklov6 : Ok77v6); +assign Cb1jy6 = (Sz8iy6 & Xid8x6); +assign Sz8iy6 = (Kb1jy6 & J2xyx6); +assign J2xyx6 = (Sb1jy6 & Xfymz6[2]); +assign Sb1jy6 = (Eyyhy6 & J6yyx6); +assign Ebj7v6 = (Qgnhy6 ? J02nz6[2] : Pjb7z6[2]); +assign Qgnhy6 = (!Kniiw6); +assign Kniiw6 = (Ac1jy6 & G51jy6); +assign G51jy6 = (Ic1jy6 & Qc1jy6); +assign Qc1jy6 = (Yc1jy6 & Crhiw6); +assign Crhiw6 = (!Pjb7z6[16]); +assign Yc1jy6 = (~(Pjb7z6[17] | Pjb7z6[19])); +assign Ic1jy6 = (~(Pjb7z6[14] | Pjb7z6[15])); +assign Ac1jy6 = (Gd1jy6 & Od1jy6); +assign Od1jy6 = (~(Pjb7z6[12] | Pjb7z6[13])); +assign Gd1jy6 = (Pjb7z6[18] & Wd1jy6); +assign Xaj7v6 = (Cjliy6 ? Pjb7z6[2] : Ti2nz6[0]); +assign Cjliy6 = (!Maziy6); +assign Maziy6 = (Oduhy6 | W2adt6); +assign Oduhy6 = (~(Ee1jy6 & Me1jy6)); +assign Me1jy6 = (Ue1jy6 & Cf1jy6); +assign Cf1jy6 = (Kf1jy6 & Pjb7z6[13]); +assign Kf1jy6 = (Pjb7z6[12] & Wd1jy6); +assign Wd1jy6 = (!E61jy6); +assign E61jy6 = (~(D16ft6 | K2adt6)); +assign Ue1jy6 = (Pjb7z6[15] & Pjb7z6[14]); +assign Ee1jy6 = (Sf1jy6 & Ag1jy6); +assign Ag1jy6 = (Pjb7z6[17] & Pjb7z6[16]); +assign Sf1jy6 = (Pjb7z6[19] & Pjb7z6[18]); +assign Qaj7v6 = (Ig1jy6 ? Eshiw6 : L1syx6); +assign Ig1jy6 = (Qg1jy6 & Yg1jy6); +assign Yg1jy6 = (Gh1jy6 & Oh1jy6); +assign Oh1jy6 = (~(Vpd7x6 | C397z6)); +assign Vpd7x6 = (!Ihs7z6[0]); +assign Gh1jy6 = (Ihs7z6[2] & Ihs7z6[1]); +assign Qg1jy6 = (Wh1jy6 & Ei1jy6); +assign Wh1jy6 = (Llryx6 & Ihs7z6[3]); +assign Eshiw6 = (~(Mi1jy6 & Ui1jy6)); +assign Ui1jy6 = (Cj1jy6 & Kj1jy6); +assign Kj1jy6 = (Sj1jy6 & Ak1jy6); +assign Ak1jy6 = (Ik1jy6 & W52nv6); +assign Ik1jy6 = (H17iw6 & Dz6iw6); +assign Sj1jy6 = (X0hov6 & Jp5iw6); +assign Cj1jy6 = (Qk1jy6 & Yk1jy6); +assign Yk1jy6 = (J27iw6 & K62nv6); +assign Qk1jy6 = (Z0iov6 & Ro3iw6); +assign Mi1jy6 = (Gl1jy6 & Ol1jy6); +assign Ol1jy6 = (Wl1jy6 & Em1jy6); +assign Em1jy6 = (Mm1jy6 & Kxfiw6); +assign Mm1jy6 = (Gofiw6 & Bk6iw6); +assign Wl1jy6 = (Nhfiw6 & Oyhov6); +assign Gl1jy6 = (Um1jy6 & Cn1jy6); +assign Cn1jy6 = (N5m7x6 & Umhiw6); +assign N5m7x6 = (Kn1jy6 & Sn1jy6); +assign Sn1jy6 = (Ao1jy6 & Io1jy6); +assign Io1jy6 = (Qo1jy6 & Wf4iw6); +assign Qo1jy6 = (Cx4iw6 & Ej5iw6); +assign Ao1jy6 = (Mn5iw6 & E64iw6); +assign Kn1jy6 = (Yo1jy6 & Gp1jy6); +assign Yo1jy6 = (N9giw6 & Hsfiw6); +assign Um1jy6 = (Ucdiw6 & Nbeiw6); +assign Nbeiw6 = (Op1jy6 & Tdfiw6); +assign Op1jy6 = (Egfiw6 & Pohov6); +assign Ucdiw6 = (Wp1jy6 & L19iw6); +assign L19iw6 = (!B52nv6); +assign Wp1jy6 = (U42nv6 & I52nv6); +assign Jaj7v6 = (Eq1jy6 ? U42nv6 : Ig27v6); +assign Eq1jy6 = (Foryx6 & Mq1jy6); +assign Foryx6 = (Uq1jy6 & Cr1jy6); +assign Cr1jy6 = (Tt4yx6 & Pfryx6); +assign Uq1jy6 = (Ei1jy6 & Xruyx6); +assign Ei1jy6 = (Kr1jy6 & Zfs7z6[8]); +assign Kr1jy6 = (P7wyx6 & D1syx6); +assign Caj7v6 = (Sr1jy6 ? U42nv6 : Ln6ft6); +assign Sr1jy6 = (As1jy6 & Is1jy6); +assign Is1jy6 = (Qs1jy6 & Mq1jy6); +assign Qs1jy6 = (L51zx6 & Fgryx6); +assign L51zx6 = (!Or27v6); +assign As1jy6 = (Ys1jy6 & Llryx6); +assign Llryx6 = (Gt1jy6 & Ap27v6); +assign Gt1jy6 = (Tn27v6 & Zfs7z6[7]); +assign Ys1jy6 = (~(Pruyx6 | D1syx6)); +assign D1syx6 = (!Mm27v6); +assign Pruyx6 = (~(Ot1jy6 & Wt1jy6)); +assign Wt1jy6 = (Zfs7z6[11] & Zfs7z6[10]); +assign Ot1jy6 = (Hq27v6 & Zfs7z6[9]); +assign V9j7v6 = (Hr4yx6 ? Gr5iw6 : Mqb7z6[1]); +assign O9j7v6 = (Hr4yx6 ? Jp5iw6 : Mqb7z6[2]); +assign H9j7v6 = (Hr4yx6 ? Mn5iw6 : Mqb7z6[3]); +assign A9j7v6 = (Hr4yx6 ? Bl5iw6 : Mqb7z6[4]); +assign T8j7v6 = (Hr4yx6 ? Ej5iw6 : Mqb7z6[5]); +assign M8j7v6 = (Hr4yx6 ? D85iw6 : Mqb7z6[6]); +assign F8j7v6 = (Hr4yx6 ? U42nv6 : Rj27v6); +assign Y7j7v6 = (Hr4yx6 ? B52nv6 : Ci6ft6); +assign R7j7v6 = (Hr4yx6 ? P52nv6 : D86ft6); +assign K7j7v6 = (Hr4yx6 ? W52nv6 : Og6ft6); +assign D7j7v6 = (Hr4yx6 ? J27iw6 : Zm37v6); +assign W6j7v6 = (Hr4yx6 ? H17iw6 : R8s7z6[0]); +assign P6j7v6 = (Hr4yx6 ? Dz6iw6 : R8s7z6[1]); +assign I6j7v6 = (Eu1jy6 ? B52nv6 : Scs7z6[1]); +assign B6j7v6 = (Eu1jy6 ? P52nv6 : Scs7z6[3]); +assign U5j7v6 = (Eu1jy6 ? U42nv6 : Scs7z6[0]); +assign N5j7v6 = (Mu1jy6 ? Wf4iw6 : Ies7z6[24]); +assign G5j7v6 = (Mu1jy6 ? X0hov6 : Ies7z6[31]); +assign Z4j7v6 = (Mu1jy6 ? Ro3iw6 : Ies7z6[30]); +assign S4j7v6 = (Mu1jy6 ? Zz3iw6 : Ies7z6[29]); +assign L4j7v6 = (Mu1jy6 ? W14iw6 : Ies7z6[28]); +assign E4j7v6 = (Mu1jy6 ? H44iw6 : Ies7z6[27]); +assign X3j7v6 = (Mu1jy6 ? E64iw6 : Ies7z6[26]); +assign Q3j7v6 = (Mu1jy6 ? Iklov6 : Ies7z6[25]); +assign Mu1jy6 = (Uu1jy6 & Cv1jy6); +assign Uu1jy6 = (Ihs7z6[3] & Kv1jy6); +assign Kv1jy6 = (~(C397z6 & Scs7z6[3])); +assign J3j7v6 = (Sv1jy6 ? Z0iov6 : Ies7z6[15]); +assign C3j7v6 = (Sv1jy6 ? Bk6iw6 : Ies7z6[14]); +assign V2j7v6 = (Sv1jy6 ? Guhov6 : Ies7z6[13]); +assign O2j7v6 = (Sv1jy6 ? Emhov6 : Ies7z6[12]); +assign H2j7v6 = (Sv1jy6 ? Dz6iw6 : Ies7z6[11]); +assign A2j7v6 = (Sv1jy6 ? H17iw6 : Ies7z6[10]); +assign T1j7v6 = (Sv1jy6 ? J27iw6 : Ies7z6[9]); +assign M1j7v6 = (Aw1jy6 ? U42nv6 : Ies7z6[0]); +assign F1j7v6 = (Aw1jy6 ? R62nv6 : Ies7z6[7]); +assign Y0j7v6 = (Aw1jy6 ? K62nv6 : Ies7z6[6]); +assign R0j7v6 = (Aw1jy6 ? D62nv6 : Ies7z6[5]); +assign K0j7v6 = (Aw1jy6 ? W52nv6 : Ies7z6[4]); +assign D0j7v6 = (Aw1jy6 ? P52nv6 : Ies7z6[3]); +assign Wzi7v6 = (Aw1jy6 ? B52nv6 : Ies7z6[1]); +assign Pzi7v6 = (Etgiw6 ? I52nv6 : Y7q7z6[1]); +assign Etgiw6 = (Jsgiw6 & B6qyx6); +assign B6qyx6 = (Iw1jy6 & Z6tyx6); +assign Izi7v6 = (E21jy6 ? I52nv6 : Bqp7z6[2]); +assign E21jy6 = (Jsgiw6 & D5qyx6); +assign D5qyx6 = (~(Qw1jy6 | Ghlhy6)); +assign Bzi7v6 = (K31jy6 ? I52nv6 : Gop7z6[2]); +assign K31jy6 = (Jsgiw6 & Z6qyx6); +assign Z6qyx6 = (~(Qw1jy6 | Yglhy6)); +assign Uyi7v6 = (Y01jy6 ? Rip7z6[2] : I52nv6); +assign Y01jy6 = (~(Jsgiw6 & H7qyx6)); +assign H7qyx6 = (Yw1jy6 & Qcjhy6); +assign Yw1jy6 = (!Qw1jy6); +assign Nyi7v6 = (M21jy6 ? I52nv6 : Hmp7z6[2]); +assign M21jy6 = (Jsgiw6 & P3a8x6); +assign P3a8x6 = (Gx1jy6 & Ox1jy6); +assign Ox1jy6 = (Z6tyx6 & Xueiw6); +assign Gx1jy6 = (Nmq7z6[6] & Hbvyx6); +assign Gyi7v6 = (S31jy6 ? I52nv6 : Sgp7z6[2]); +assign S31jy6 = (Jsgiw6 & Ua9ov6); +assign Ua9ov6 = (Wx1jy6 & Ey1jy6); +assign Ey1jy6 = (Hbvyx6 & Xueiw6); +assign Hbvyx6 = (Nmq7z6[3] & My1jy6); +assign Wx1jy6 = (Nmq7z6[6] & B2qyx6); +assign Zxi7v6 = (W11jy6 ? I52nv6 : E6p7z6[2]); +assign W11jy6 = (Jsgiw6 & L9qyx6); +assign L9qyx6 = (~(Uy1jy6 | Ghlhy6)); +assign Ghlhy6 = (!Z6tyx6); +assign Sxi7v6 = (C31jy6 ? Q8p7z6[2] : I52nv6); +assign C31jy6 = (~(Jsgiw6 & Xbqyx6)); +assign Xbqyx6 = (Cz1jy6 & Vcyyx6); +assign Cz1jy6 = (!Uy1jy6); +assign Lxi7v6 = (A41jy6 ? I52nv6 : B2q7z6[2]); +assign A41jy6 = (Jsgiw6 & Fcqyx6); +assign Fcqyx6 = (~(Uy1jy6 | Wdlhy6)); +assign Exi7v6 = (G11jy6 ? I52nv6 : G0q7z6[2]); +assign G11jy6 = (Jsgiw6 & Zaqyx6); +assign Zaqyx6 = (~(Uy1jy6 | Kflhy6)); +assign Kflhy6 = (!Qcjhy6); +assign Qcjhy6 = (~(Kz1jy6 | E297z6)); +assign Uy1jy6 = (~(Gllhy6 & Gpeiy6)); +assign Gllhy6 = (Nmq7z6[5] & Sz1jy6); +assign Xwi7v6 = (O11jy6 ? I52nv6 : I7p7z6[2]); +assign O11jy6 = (Jsgiw6 & Nao7x6); +assign Nao7x6 = (A02jy6 & Z6tyx6); +assign Z6tyx6 = (~(Bxeiw6 | Nmq7z6[4])); +assign A02jy6 = (!I02jy6); +assign Qwi7v6 = (Q41jy6 ? I52nv6 : Hyp7z6[2]); +assign Q41jy6 = (Jsgiw6 & Q0a8x6); +assign Q0a8x6 = (~(I02jy6 | Wdlhy6)); +assign I02jy6 = (~(Q02jy6 & Gpeiy6)); +assign Q02jy6 = (Nmq7z6[5] & Nmq7z6[3]); +assign Jwi7v6 = (I41jy6 ? I52nv6 : Mkp7z6[2]); +assign I41jy6 = (Jsgiw6 & Tdqyx6); +assign Tdqyx6 = (~(Qw1jy6 | Wdlhy6)); +assign Wdlhy6 = (!B2qyx6); +assign B2qyx6 = (~(Bxeiw6 | Kz1jy6)); +assign Kz1jy6 = (!Nmq7z6[4]); +assign Bxeiw6 = (!E297z6); +assign Qw1jy6 = (~(Y02jy6 & G12jy6)); +assign G12jy6 = (My1jy6 & Xueiw6); +assign Y02jy6 = (Nmq7z6[6] & Sz1jy6); +assign Cwi7v6 = (Zhg7x6 ? I52nv6 : Ayeet6); +assign Zhg7x6 = (O12jy6 & W12jy6); +assign W12jy6 = (E22jy6 & M22jy6); +assign M22jy6 = (U22jy6 & Gr5iw6); +assign U22jy6 = (Jp5iw6 & Is5iw6); +assign E22jy6 = (X0hov6 & Bl5iw6); +assign O12jy6 = (C32jy6 & K32jy6); +assign K32jy6 = (S32jy6 & N42nv6); +assign N42nv6 = (A42jy6 & I42jy6); +assign A42jy6 = (~(G92iw6 | Ej5iw6)); +assign G92iw6 = (~(Pb8iw6 & Wnaiw6)); +assign S32jy6 = (Q42jy6 & Mn5iw6); +assign C32jy6 = (Hq3iw6 & Zy4iw6); +assign Zy4iw6 = (~(Ie5iw6 | C0giw6)); +assign Hq3iw6 = (~(Dv3iw6 | N9giw6)); +assign Dv3iw6 = (!Bqi7z6[3]); +assign Vvi7v6 = (Knniy6 ? I52nv6 : Qij7z6[2]); +assign Knniy6 = (Y42jy6 & G52jy6); +assign G52jy6 = (O52jy6 & W52jy6); +assign W52jy6 = (F02nv6 & Wnaiw6); +assign F02nv6 = (!Ldo7v6); +assign O52jy6 = (Kdadt6 & Q42jy6); +assign Q42jy6 = (E62jy6 & Bqi7z6[1]); +assign E62jy6 = (~(Twaiw6 | N92iw6)); +assign Y42jy6 = (M62jy6 & Bqi7z6[3]); +assign M62jy6 = (Bqi7z6[2] & Toi7z6[2]); +assign Ovi7v6 = (M20jy6 ? U3cet6 : I52nv6); +assign M20jy6 = (~(Hvjiw6 & Zh18x6)); +assign Hvjiw6 = (U62jy6 & Pi8iw6); +assign U62jy6 = (G42nv6 & Pb8iw6); +assign Hvi7v6 = (I01jy6 ? I52nv6 : Dpadt6); +assign I01jy6 = (C72jy6 & Doaiw6); +assign C72jy6 = (T68iw6 & Bqi7z6[0]); +assign T68iw6 = (~(Wnaiw6 | Toi7z6[4])); +assign Wnaiw6 = (!Toi7z6[3]); +assign Avi7v6 = (U20jy6 ? K72jy6 : I52nv6); +assign U20jy6 = (~(Doaiw6 & Zh18x6)); +assign Doaiw6 = (~(S72jy6 | Toi7z6[2])); +assign Tui7v6 = (I82jy6 ? A82jy6 : STCLK); +assign Mui7v6 = (I82jy6 ? Q82jy6 : A82jy6); +assign A82jy6 = (!Qg67z6); +assign Fui7v6 = (I82jy6 ? Cndet6 : Q82jy6); +assign I82jy6 = (~(Axaiw6 & A8cet6)); +assign Axaiw6 = (~(K72jy6 | STCALIB[25])); +assign K72jy6 = (!Me77z6); +assign Q82jy6 = (!As67z6); +assign Yti7v6 = (Muziy6 ? I52nv6 : H1j7z6[2]); +assign Muziy6 = (Y82jy6 & Zh18x6); +assign Zh18x6 = (~(P48iw6 | Twaiw6)); +assign Twaiw6 = (!Bqi7z6[0]); +assign P48iw6 = (!R58iw6); +assign Rti7v6 = (Hr4yx6 ? I52nv6 : X66ft6); +assign Kti7v6 = (Eu1jy6 ? I52nv6 : Scs7z6[2]); +assign Eu1jy6 = (Zmryx6 & Mq1jy6); +assign Zmryx6 = (G92jy6 & Mm27v6); +assign G92jy6 = (~(O92jy6 | Zfs7z6[7])); +assign Dti7v6 = (W92jy6 ? Cx4iw6 : Ies7z6[23]); +assign Wsi7v6 = (W92jy6 ? D85iw6 : Ies7z6[22]); +assign Psi7v6 = (W92jy6 ? Ej5iw6 : Ies7z6[21]); +assign Isi7v6 = (W92jy6 ? Bl5iw6 : Ies7z6[20]); +assign Bsi7v6 = (W92jy6 ? Mn5iw6 : Ies7z6[19]); +assign Uri7v6 = (W92jy6 ? Jp5iw6 : Ies7z6[18]); +assign Nri7v6 = (W92jy6 ? Gr5iw6 : Ies7z6[17]); +assign Gri7v6 = (Aw1jy6 ? I52nv6 : Ies7z6[2]); +assign Aw1jy6 = (Ea2jy6 & Cv1jy6); +assign Ea2jy6 = (Ihs7z6[0] & Ma2jy6); +assign Ma2jy6 = (~(C397z6 & Scs7z6[0])); +assign Zqi7v6 = (Y81jy6 ? I52nv6 : Ee77z6); +assign Y81jy6 = (Xid8x6 & Vcpyx6); +assign Vcpyx6 = (Ua2jy6 & Cb2jy6); +assign Cb2jy6 = (Kb2jy6 & Sb2jy6); +assign Kb2jy6 = (~(Xfymz6[11] | Xfymz6[8])); +assign Ua2jy6 = (A81jy6 & Xfymz6[9]); +assign A81jy6 = (Ac2jy6 & B6pyx6); +assign B6pyx6 = (Aslhy6 & Ic2jy6); +assign Ac2jy6 = (D9pyx6 & R6pyx6); +assign Sqi7v6 = (C71jy6 ? I52nv6 : Kmymz6[2]); +assign Lqi7v6 = (G91jy6 ? I52nv6 : Biymz6[2]); +assign Eqi7v6 = (Hn5yx6 ? Aw77z6 : Rzr7z6[1]); +assign Xpi7v6 = (Hn5yx6 ? Sv77z6 : Rzr7z6[2]); +assign Qpi7v6 = (Hn5yx6 ? Kv77z6 : Rzr7z6[3]); +assign Jpi7v6 = (Hn5yx6 ? Cv77z6 : Rzr7z6[4]); +assign Cpi7v6 = (Hn5yx6 ? Uu77z6 : Rzr7z6[5]); +assign Voi7v6 = (Hn5yx6 ? Mu77z6 : Rzr7z6[6]); +assign Ooi7v6 = (Hn5yx6 ? Eu77z6 : Rzr7z6[7]); +assign Hoi7v6 = (Hn5yx6 ? Wt77z6 : Rzr7z6[8]); +assign Aoi7v6 = (Hn5yx6 ? Ot77z6 : Rzr7z6[9]); +assign Tni7v6 = (Hn5yx6 ? Gt77z6 : Rzr7z6[10]); +assign Mni7v6 = (Hn5yx6 ? Ys77z6 : Rzr7z6[11]); +assign Fni7v6 = (Hn5yx6 ? Qs77z6 : Rzr7z6[12]); +assign Ymi7v6 = (Hn5yx6 ? Is77z6 : Rzr7z6[13]); +assign Rmi7v6 = (Hn5yx6 ? As77z6 : Rzr7z6[14]); +assign Kmi7v6 = (Hn5yx6 ? Sr77z6 : Rzr7z6[15]); +assign Dmi7v6 = (Hn5yx6 ? Kr77z6 : Rzr7z6[16]); +assign Wli7v6 = (Hn5yx6 ? Cr77z6 : Rzr7z6[17]); +assign Pli7v6 = (Hn5yx6 ? Uq77z6 : Rzr7z6[18]); +assign Ili7v6 = (Hn5yx6 ? Mq77z6 : Rzr7z6[19]); +assign Bli7v6 = (Hn5yx6 ? Eq77z6 : Rzr7z6[20]); +assign Uki7v6 = (Hn5yx6 ? Wp77z6 : Rzr7z6[21]); +assign Nki7v6 = (Hn5yx6 ? Op77z6 : Rzr7z6[22]); +assign Gki7v6 = (Hn5yx6 ? Gp77z6 : Rzr7z6[23]); +assign Zji7v6 = (Hn5yx6 ? Yo77z6 : Rzr7z6[24]); +assign Sji7v6 = (Hn5yx6 ? Qo77z6 : Rzr7z6[25]); +assign Lji7v6 = (Hn5yx6 ? Io77z6 : Rzr7z6[26]); +assign Eji7v6 = (Hn5yx6 ? Ao77z6 : Rzr7z6[27]); +assign Xii7v6 = (Hn5yx6 ? Sn77z6 : Rzr7z6[28]); +assign Qii7v6 = (Hn5yx6 ? Kn77z6 : Rzr7z6[29]); +assign Jii7v6 = (Hn5yx6 ? Cn77z6 : Rzr7z6[30]); +assign Cii7v6 = (Hn5yx6 ? Um77z6 : Rzr7z6[31]); +assign Hn5yx6 = (~(Kygnv6 | Wfo7v6)); +assign Vhi7v6 = (P9get6 ? E6a7z6 : Jqj7z6[3]); +assign E6a7z6 = (~(Qc2jy6 & Yc2jy6)); +assign Yc2jy6 = (~(Gd2jy6 & Ykliy6)); +assign Ykliy6 = (~(Od2jy6 & Wd2jy6)); +assign Wd2jy6 = (~(Ee2jy6 & Me2jy6)); +assign Me2jy6 = (~(Ue2jy6 | Cvniy6)); +assign Ue2jy6 = (Lh18x6 | Q0oiy6); +assign Ee2jy6 = (Cf2jy6 & W9ziy6); +assign Cf2jy6 = (!Gd2jy6); +assign Od2jy6 = (~(Kf2jy6 & Sf2jy6)); +assign Sf2jy6 = (Ag2jy6 & Ig2jy6); +assign Ig2jy6 = (~(Qg2jy6 & Eqwiy6)); +assign Eqwiy6 = (Yg2jy6 & Ccr7x6); +assign Ccr7x6 = (~(Gh2jy6 & Jm98x6)); +assign Yg2jy6 = (Ui2nv6 & Xg2nv6); +assign Xg2nv6 = (!X7get6); +assign Ui2nv6 = (Xsinv6 | Rdmov6); +assign Rdmov6 = (~(Oh2jy6 & Za2nv6)); +assign Oh2jy6 = (~(Xxjov6 & Wh2jy6)); +assign Wh2jy6 = (~(Ei2jy6 & Mi2jy6)); +assign Mi2jy6 = (~(Ui2jy6 & Cj2jy6)); +assign Cj2jy6 = (Kj2jy6 & Pqliw6); +assign Kj2jy6 = (~(Sj2jy6 & Ak2jy6)); +assign Ak2jy6 = (Xnliw6 ? Qk2jy6 : Ik2jy6); +assign Qk2jy6 = (~(Nob7z6[4] & Yk2jy6)); +assign Yk2jy6 = (~(Gl2jy6 & Ol2jy6)); +assign Ol2jy6 = (Wl2jy6 & Em2jy6); +assign Em2jy6 = (Mm2jy6 & Um2jy6); +assign Um2jy6 = (~(Cn2jy6 & G5j7z6[3])); +assign Mm2jy6 = (Kn2jy6 & Sn2jy6); +assign Sn2jy6 = (~(Ao2jy6 & G5j7z6[0])); +assign Kn2jy6 = (~(Jfmiw6 & G5j7z6[2])); +assign Wl2jy6 = (Io2jy6 & Qo2jy6); +assign Qo2jy6 = (~(Cshov6 & G5j7z6[4])); +assign Io2jy6 = (~(I2oiw6 & G5j7z6[5])); +assign Gl2jy6 = (Yo2jy6 & Gp2jy6); +assign Gp2jy6 = (Op2jy6 & Wp2jy6); +assign Wp2jy6 = (~(G5j7z6[12] & L1i7x6)); +assign Op2jy6 = (Eq2jy6 & Mq2jy6); +assign Mq2jy6 = (~(G5j7z6[6] & Rphov6)); +assign Eq2jy6 = (~(G5j7z6[11] & Hzh7x6)); +assign Yo2jy6 = (Uq2jy6 & Cr2jy6); +assign Cr2jy6 = (~(G5j7z6[14] & P3i7x6)); +assign Uq2jy6 = (~(G5j7z6[15] & V6i7x6)); +assign Ik2jy6 = (Nob7z6[4] ? Sr2jy6 : Kr2jy6); +assign Sr2jy6 = (As2jy6 & Is2jy6); +assign Is2jy6 = (Qs2jy6 & Ys2jy6); +assign Ys2jy6 = (Gt2jy6 & Ot2jy6); +assign Ot2jy6 = (Wt2jy6 & Eu2jy6); +assign Eu2jy6 = (~(G5j7z6[32] & Ao2jy6)); +assign Wt2jy6 = (~(G5j7z6[33] & Nuniw6)); +assign Gt2jy6 = (Mu2jy6 & Uu2jy6); +assign Uu2jy6 = (~(G5j7z6[34] & Jfmiw6)); +assign Mu2jy6 = (~(G5j7z6[35] & Cn2jy6)); +assign Qs2jy6 = (Cv2jy6 & Kv2jy6); +assign Kv2jy6 = (Sv2jy6 & Aw2jy6); +assign Aw2jy6 = (~(Cshov6 & G5j7z6[36])); +assign Sv2jy6 = (~(I2oiw6 & G5j7z6[37])); +assign Cv2jy6 = (Iw2jy6 & Qw2jy6); +assign Qw2jy6 = (~(G5j7z6[38] & Rphov6)); +assign Iw2jy6 = (~(J6oiw6 & G5j7z6[39])); +assign As2jy6 = (Yw2jy6 & Gx2jy6); +assign Gx2jy6 = (Ox2jy6 & Wx2jy6); +assign Wx2jy6 = (Ey2jy6 & My2jy6); +assign My2jy6 = (~(Uy2jy6 & G5j7z6[40])); +assign Ey2jy6 = (~(Mbj7x6 & G5j7z6[41])); +assign Ox2jy6 = (Cz2jy6 & Kz2jy6); +assign Kz2jy6 = (~(Nfj7x6 & G5j7z6[42])); +assign Cz2jy6 = (~(G5j7z6[43] & Hzh7x6)); +assign Yw2jy6 = (Sz2jy6 & A03jy6); +assign A03jy6 = (I03jy6 & Q03jy6); +assign Q03jy6 = (~(G5j7z6[44] & L1i7x6)); +assign I03jy6 = (~(Jrj7x6 & G5j7z6[45])); +assign Sz2jy6 = (Y03jy6 & G13jy6); +assign G13jy6 = (~(G5j7z6[46] & P3i7x6)); +assign Y03jy6 = (~(G5j7z6[47] & V6i7x6)); +assign Kr2jy6 = (O13jy6 & W13jy6); +assign W13jy6 = (E23jy6 & M23jy6); +assign M23jy6 = (U23jy6 & C33jy6); +assign C33jy6 = (~(G5j7z6[19] & Cn2jy6)); +assign U23jy6 = (K33jy6 & S33jy6); +assign S33jy6 = (~(Ao2jy6 & G5j7z6[16])); +assign K33jy6 = (~(G5j7z6[18] & Jfmiw6)); +assign E23jy6 = (A43jy6 & I43jy6); +assign I43jy6 = (~(Cshov6 & G5j7z6[20])); +assign A43jy6 = (~(I2oiw6 & G5j7z6[21])); +assign O13jy6 = (Q43jy6 & Y43jy6); +assign Y43jy6 = (G53jy6 & O53jy6); +assign O53jy6 = (~(G5j7z6[28] & L1i7x6)); +assign G53jy6 = (W53jy6 & E63jy6); +assign E63jy6 = (~(G5j7z6[22] & Rphov6)); +assign W53jy6 = (~(G5j7z6[27] & Hzh7x6)); +assign Q43jy6 = (M63jy6 & U63jy6); +assign U63jy6 = (~(G5j7z6[30] & P3i7x6)); +assign M63jy6 = (~(G5j7z6[31] & V6i7x6)); +assign Sj2jy6 = (C73jy6 & K73jy6); +assign K73jy6 = (~(S73jy6 & A83jy6)); +assign A83jy6 = (~(I83jy6 & Q83jy6)); +assign Q83jy6 = (Y83jy6 & G93jy6); +assign G93jy6 = (O93jy6 & W93jy6); +assign W93jy6 = (~(Ea3jy6 & Omliw6)); +assign Ea3jy6 = (~(Ma3jy6 & Ua3jy6)); +assign Ua3jy6 = (Cb3jy6 & Kb3jy6); +assign Kb3jy6 = (~(Nob7z6[0] & Sb3jy6)); +assign Sb3jy6 = (~(Ac3jy6 & Ic3jy6)); +assign Ic3jy6 = (~(Qc3jy6 & X3get6)); +assign Ac3jy6 = (~(Z3j7z6[11] & Yc3jy6)); +assign Cb3jy6 = (~(Nob7z6[1] & Gd3jy6)); +assign Gd3jy6 = (~(Od3jy6 & Wd3jy6)); +assign Wd3jy6 = (~(Z3j7z6[3] & Ee3jy6)); +assign Od3jy6 = (~(Fjadt6 & Me3jy6)); +assign Ma3jy6 = (Ue3jy6 & Cf3jy6); +assign Cf3jy6 = (~(Z3j7z6[1] & Kf3jy6)); +assign Ue3jy6 = (~(Nob7z6[3] & Sf3jy6)); +assign Sf3jy6 = (~(Ag3jy6 & Ig3jy6)); +assign Ig3jy6 = (~(Z3j7z6[7] & Wjliw6)); +assign Ag3jy6 = (Qg3jy6 & Yg3jy6); +assign Yg3jy6 = (~(Z3j7z6[10] & Gh3jy6)); +assign Qg3jy6 = (~(Z3j7z6[8] & Giliw6)); +assign O93jy6 = (~(Nuniw6 & G5j7z6[1])); +assign Y83jy6 = (Oh3jy6 & Wh3jy6); +assign Wh3jy6 = (~(J6oiw6 & G5j7z6[7])); +assign Oh3jy6 = (~(G5j7z6[8] & Uy2jy6)); +assign I83jy6 = (Ei3jy6 & Mi3jy6); +assign Mi3jy6 = (~(Jrj7x6 & G5j7z6[13])); +assign Ei3jy6 = (Ui3jy6 & Cj3jy6); +assign Cj3jy6 = (~(G5j7z6[9] & Mbj7x6)); +assign Ui3jy6 = (~(G5j7z6[10] & Nfj7x6)); +assign C73jy6 = (Nob7z6[6] ? Sj3jy6 : Kj3jy6); +assign Sj3jy6 = (Ak3jy6 & Ik3jy6); +assign Ik3jy6 = (Qk3jy6 & Yk3jy6); +assign Yk3jy6 = (Gl3jy6 & Ol3jy6); +assign Ol3jy6 = (Wl3jy6 & Em3jy6); +assign Em3jy6 = (~(G5j7z6[48] & Ao2jy6)); +assign Wl3jy6 = (~(G5j7z6[49] & Nuniw6)); +assign Gl3jy6 = (Mm3jy6 & Um3jy6); +assign Um3jy6 = (~(G5j7z6[50] & Jfmiw6)); +assign Mm3jy6 = (~(G5j7z6[51] & Cn2jy6)); +assign Qk3jy6 = (Cn3jy6 & Kn3jy6); +assign Kn3jy6 = (Sn3jy6 & Ao3jy6); +assign Ao3jy6 = (~(Cshov6 & G5j7z6[52])); +assign Sn3jy6 = (~(I2oiw6 & G5j7z6[53])); +assign Cn3jy6 = (Io3jy6 & Qo3jy6); +assign Qo3jy6 = (~(G5j7z6[54] & Rphov6)); +assign Io3jy6 = (~(J6oiw6 & G5j7z6[55])); +assign Ak3jy6 = (Yo3jy6 & Gp3jy6); +assign Gp3jy6 = (Op3jy6 & Wp3jy6); +assign Wp3jy6 = (Eq3jy6 & Mq3jy6); +assign Mq3jy6 = (~(G5j7z6[56] & Uy2jy6)); +assign Eq3jy6 = (~(G5j7z6[57] & Mbj7x6)); +assign Op3jy6 = (Uq3jy6 & Cr3jy6); +assign Cr3jy6 = (~(G5j7z6[58] & Nfj7x6)); +assign Uq3jy6 = (~(G5j7z6[59] & Hzh7x6)); +assign Yo3jy6 = (Kr3jy6 & Sr3jy6); +assign Sr3jy6 = (As3jy6 & Is3jy6); +assign Is3jy6 = (~(G5j7z6[60] & L1i7x6)); +assign As3jy6 = (~(Jrj7x6 & G5j7z6[61])); +assign Kr3jy6 = (Qs3jy6 & Ys3jy6); +assign Ys3jy6 = (~(G5j7z6[62] & P3i7x6)); +assign Qs3jy6 = (~(G5j7z6[63] & V6i7x6)); +assign Kj3jy6 = (~(Gt3jy6 & Omliw6)); +assign Gt3jy6 = (~(Ot3jy6 & Wt3jy6)); +assign Wt3jy6 = (Eu3jy6 & Mu3jy6); +assign Mu3jy6 = (~(Uy2jy6 & G5j7z6[24])); +assign Eu3jy6 = (Uu3jy6 & Cv3jy6); +assign Cv3jy6 = (~(G5j7z6[17] & Nuniw6)); +assign Uu3jy6 = (~(J6oiw6 & G5j7z6[23])); +assign Ot3jy6 = (Kv3jy6 & Sv3jy6); +assign Sv3jy6 = (~(Jrj7x6 & G5j7z6[29])); +assign Kv3jy6 = (Aw3jy6 & Iw3jy6); +assign Iw3jy6 = (~(Mbj7x6 & G5j7z6[25])); +assign Aw3jy6 = (~(Nfj7x6 & G5j7z6[26])); +assign Ui2jy6 = (Qw3jy6 & Yw3jy6); +assign Yw3jy6 = (~(Nob7z6[6] & Gx3jy6)); +assign Gx3jy6 = (~(Xnliw6 & Omliw6)); +assign Qw3jy6 = (~(Ox3jy6 & Wx3jy6)); +assign Wx3jy6 = (~(Ey3jy6 & My3jy6)); +assign My3jy6 = (~(Kf3jy6 & Uy3jy6)); +assign Uy3jy6 = (!Ee3jy6); +assign Ey3jy6 = (~(J6oiw6 | Cz3jy6)); +assign Ei2jy6 = (~(Kz3jy6 & Cshov6)); +assign Kz3jy6 = (Z3j7z6[0] & Sz3jy6); +assign Qg2jy6 = (A04jy6 & I04jy6); +assign I04jy6 = (~(Q04jy6 & Y04jy6)); +assign Y04jy6 = (~(G14jy6 & Ldr7x6)); +assign A04jy6 = (Ldr7x6 | G14jy6); +assign G14jy6 = (O14jy6 & W14jy6); +assign W14jy6 = (~(E24jy6 & Ger7x6)); +assign O14jy6 = (~(M24jy6 & U24jy6)); +assign M24jy6 = (C34jy6 & CURRPRI[5]); +assign C34jy6 = (~(K34jy6 & Bfr7x6)); +assign Bfr7x6 = (!Ger7x6); +assign Ger7x6 = (Zyl8v6 & CURRPRI[6]); +assign Ldr7x6 = (~(H1m8v6 & CURRPRI[7])); +assign Ag2jy6 = (S34jy6 & Hs98x6); +assign Hs98x6 = (!Nmadt6); +assign Kf2jy6 = (A44jy6 & I44jy6); +assign I44jy6 = (~(Q44jy6 & Snwiy6)); +assign Snwiy6 = (~(Y44jy6 & G54jy6)); +assign G54jy6 = (O54jy6 & W54jy6); +assign O54jy6 = (~(E64jy6 | M64jy6)); +assign Y44jy6 = (U64jy6 & C74jy6); +assign U64jy6 = (~(K74jy6 | S74jy6)); +assign Q44jy6 = (~(A84jy6 & I84jy6)); +assign I84jy6 = (~(Q84jy6 & Y84jy6)); +assign Q84jy6 = (G94jy6 | O94jy6); +assign A84jy6 = (~(O94jy6 & G94jy6)); +assign G94jy6 = (!Y0t7x6); +assign Y0t7x6 = (W94jy6 & H1m8v6); +assign W94jy6 = (Ua4jy6 ? Ma4jy6 : Ea4jy6); +assign Ea4jy6 = (!Cb4jy6); +assign O94jy6 = (Kb4jy6 & Sb4jy6); +assign Sb4jy6 = (~(E24jy6 & I6t7x6)); +assign I6t7x6 = (!B6t7x6); +assign Kb4jy6 = (~(Ac4jy6 & U24jy6)); +assign Ac4jy6 = (N5t7x6 & Ic4jy6); +assign Ic4jy6 = (~(K34jy6 & B6t7x6)); +assign B6t7x6 = (Qc4jy6 | Yc4jy6); +assign Yc4jy6 = (!Zyl8v6); +assign Qc4jy6 = (Ua4jy6 ? Od4jy6 : Gd4jy6); +assign Ua4jy6 = (!Wd4jy6); +assign N5t7x6 = (!Ee4jy6); +assign Ee4jy6 = (Wd4jy6 ? Ue4jy6 : Me4jy6); +assign Wd4jy6 = (Cf4jy6 & E64jy6); +assign E64jy6 = (Kf4jy6 | Sf4jy6); +assign Kf4jy6 = (Ag4jy6 | Ig4jy6); +assign Cf4jy6 = (~(Qg4jy6 & Yg4jy6)); +assign Yg4jy6 = (~(Cb4jy6 & Gh4jy6)); +assign Gh4jy6 = (~(Oh4jy6 & Wh4jy6)); +assign Oh4jy6 = (Ei4jy6 & Mi4jy6); +assign Mi4jy6 = (Me4jy6 | Ui4jy6); +assign Ui4jy6 = (Cj4jy6 & Od4jy6); +assign Ei4jy6 = (~(Kj4jy6 & Sj4jy6)); +assign Cb4jy6 = (Qk4jy6 ? Ik4jy6 : Ak4jy6); +assign Qg4jy6 = (Yk4jy6 & Gl4jy6); +assign Gl4jy6 = (~(Ol4jy6 & Ma4jy6)); +assign Ma4jy6 = (Kj4jy6 & Sj4jy6); +assign Sj4jy6 = (Wl4jy6 | Em4jy6); +assign Kj4jy6 = (~(Mm4jy6 & Wl4jy6)); +assign Ol4jy6 = (Um4jy6 & Cn4jy6); +assign Cn4jy6 = (~(Me4jy6 & Wh4jy6)); +assign Wh4jy6 = (~(Kn4jy6 & Gd4jy6)); +assign Kn4jy6 = (!Od4jy6); +assign Um4jy6 = (~(Cj4jy6 & Od4jy6)); +assign Od4jy6 = (Io4jy6 ? Ao4jy6 : Sn4jy6); +assign Cj4jy6 = (!Gd4jy6); +assign Gd4jy6 = (Qk4jy6 ? Yo4jy6 : Qo4jy6); +assign Yk4jy6 = (~(Gp4jy6 & Op4jy6)); +assign Gp4jy6 = (Wl4jy6 & Wp4jy6); +assign Wl4jy6 = (!Io4jy6); +assign Ue4jy6 = (Qk4jy6 ? Mq4jy6 : Eq4jy6); +assign Qk4jy6 = (~(Uq4jy6 & Cr4jy6)); +assign Cr4jy6 = (~(Kr4jy6 & Ig4jy6)); +assign Ig4jy6 = (~(Sr4jy6 & As4jy6)); +assign As4jy6 = (Is4jy6 & Mpoiw6); +assign Is4jy6 = (~(Baniw6 | Ntoiw6)); +assign Sr4jy6 = (Qs4jy6 & Ys4jy6); +assign Qs4jy6 = (Gt4jy6 & Ot4jy6); +assign Kr4jy6 = (~(Wt4jy6 & Eu4jy6)); +assign Eu4jy6 = (~(Ik4jy6 & Mu4jy6)); +assign Mu4jy6 = (~(Ak4jy6 & Uu4jy6)); +assign Ik4jy6 = (Sv4jy6 ? Kv4jy6 : Cv4jy6); +assign Wt4jy6 = (Uu4jy6 | Ak4jy6); +assign Ak4jy6 = (Qw4jy6 ? Iw4jy6 : Aw4jy6); +assign Uu4jy6 = (~(Yw4jy6 & Gx4jy6)); +assign Gx4jy6 = (~(Eq4jy6 & Ox4jy6)); +assign Ox4jy6 = (~(Yo4jy6 & Wx4jy6)); +assign Yw4jy6 = (Wx4jy6 | Yo4jy6); +assign Yo4jy6 = (Sv4jy6 ? My4jy6 : Ey4jy6); +assign Wx4jy6 = (!Qo4jy6); +assign Qo4jy6 = (Qw4jy6 ? Cz4jy6 : Uy4jy6); +assign Uq4jy6 = (Sf4jy6 | Ag4jy6); +assign Sf4jy6 = (~(Kz4jy6 & Sz4jy6)); +assign Kz4jy6 = (~(A05jy6 | I05jy6)); +assign Mq4jy6 = (Sv4jy6 ? Y05jy6 : Q05jy6); +assign Sv4jy6 = (G15jy6 & O15jy6); +assign O15jy6 = (~(W15jy6 & E25jy6)); +assign E25jy6 = (~(Kv4jy6 & M25jy6)); +assign W15jy6 = (U25jy6 & C35jy6); +assign C35jy6 = (~(K35jy6 & S35jy6)); +assign S35jy6 = (M25jy6 | Kv4jy6); +assign Kv4jy6 = (Q45jy6 ? I45jy6 : A45jy6); +assign M25jy6 = (!Cv4jy6); +assign Cv4jy6 = (O55jy6 ? G55jy6 : Y45jy6); +assign K35jy6 = (W55jy6 & E65jy6); +assign E65jy6 = (My4jy6 | M65jy6); +assign M65jy6 = (~(Q05jy6 | Ey4jy6)); +assign My4jy6 = (Q45jy6 ? C75jy6 : U65jy6); +assign C75jy6 = (!K75jy6); +assign W55jy6 = (~(Ey4jy6 & Q05jy6)); +assign Ey4jy6 = (O55jy6 ? A85jy6 : S75jy6); +assign A85jy6 = (!I85jy6); +assign U25jy6 = (~(Q85jy6 & O55jy6)); +assign Q85jy6 = (Ot4jy6 & Mpoiw6); +assign G15jy6 = (~(Ys4jy6 & Gt4jy6)); +assign Gt4jy6 = (!Y85jy6); +assign Y05jy6 = (Q45jy6 ? O95jy6 : G95jy6); +assign Q45jy6 = (W95jy6 | Ys4jy6); +assign Ys4jy6 = (Ea5jy6 & Ma5jy6); +assign Ma5jy6 = (~(G5j7z6[55] & Ua5jy6)); +assign Ea5jy6 = (Cb5jy6 & Kb5jy6); +assign Kb5jy6 = (Px2nv6 | Sb5jy6); +assign Px2nv6 = (Fnl7x6 & Sjl7x6); +assign Sjl7x6 = (!G5j7z6[54]); +assign Fnl7x6 = (!G5j7z6[55]); +assign Cb5jy6 = (~(G5j7z6[54] & Ac5jy6)); +assign W95jy6 = (Ic5jy6 & Qc5jy6); +assign Qc5jy6 = (Yc5jy6 & Y85jy6); +assign Y85jy6 = (~(Gd5jy6 & Od5jy6)); +assign Od5jy6 = (~(G5j7z6[53] & Wd5jy6)); +assign Gd5jy6 = (Ee5jy6 & Me5jy6); +assign Me5jy6 = (~(Wx2nv6 & Ytl7x6)); +assign Wx2nv6 = (~(Fgl7x6 & Scl7x6)); +assign Scl7x6 = (!G5j7z6[52]); +assign Fgl7x6 = (!G5j7z6[53]); +assign Ee5jy6 = (~(G5j7z6[52] & Ue5jy6)); +assign Yc5jy6 = (~(Cf5jy6 & G95jy6)); +assign Cf5jy6 = (Kf5jy6 & Sf5jy6); +assign Sf5jy6 = (U65jy6 | K75jy6); +assign Ic5jy6 = (Ag5jy6 & Ig5jy6); +assign Ig5jy6 = (~(Qg5jy6 & K75jy6)); +assign K75jy6 = (Yg5jy6 ? Lgj7z6[160] : Lgj7z6[157]); +assign Qg5jy6 = (U65jy6 & Kf5jy6); +assign Kf5jy6 = (A45jy6 | Gh5jy6); +assign U65jy6 = (Oh5jy6 ? C2u7x6 : J2u7x6); +assign Ag5jy6 = (~(Gh5jy6 & A45jy6)); +assign A45jy6 = (Oh5jy6 ? Wh5jy6 : Am88x6); +assign Wh5jy6 = (!Lgj7z6[164]); +assign Gh5jy6 = (!I45jy6); +assign I45jy6 = (Yg5jy6 ? V1u7x6 : O1u7x6); +assign O95jy6 = (Yg5jy6 ? M0u7x6 : F0u7x6); +assign Yg5jy6 = (Ei5jy6 & G5j7z6[53]); +assign Ei5jy6 = (Mi5jy6 & Ui5jy6); +assign Ui5jy6 = (Cj5jy6 | U4u7x6); +assign U4u7x6 = (~(Kj5jy6 & Sj5jy6)); +assign Sj5jy6 = (~(Lgj7z6[158] & V1u7x6)); +assign V1u7x6 = (!Lgj7z6[161]); +assign Kj5jy6 = (Ak5jy6 & Ik5jy6); +assign Ik5jy6 = (~(Qk5jy6 & Yk5jy6)); +assign Yk5jy6 = (Gl5jy6 & M0u7x6); +assign Gl5jy6 = (~(Lgj7z6[160] & H888x6)); +assign H888x6 = (!Lgj7z6[157]); +assign Qk5jy6 = (Lgj7z6[156] & Ol5jy6); +assign Ol5jy6 = (~(Lgj7z6[161] & O1u7x6)); +assign Ak5jy6 = (~(Wl5jy6 & Lgj7z6[157])); +assign Wl5jy6 = (~(Em5jy6 | Lgj7z6[160])); +assign Em5jy6 = (Lgj7z6[161] & O1u7x6); +assign O1u7x6 = (!Lgj7z6[158]); +assign Cj5jy6 = (~(G5j7z6[52] & Mm5jy6)); +assign Mm5jy6 = (~(Cshov6 & Sb5jy6)); +assign Mi5jy6 = (~(I2oiw6 & Sb5jy6)); +assign M0u7x6 = (!Lgj7z6[159]); +assign F0u7x6 = (!Lgj7z6[156]); +assign G95jy6 = (Oh5jy6 ? Cg88x6 : Rk88x6); +assign Oh5jy6 = (~(Um5jy6 & G5j7z6[55])); +assign Um5jy6 = (Cn5jy6 & Kn5jy6); +assign Kn5jy6 = (~(Sn5jy6 & L3u7x6)); +assign L3u7x6 = (Ao5jy6 & Io5jy6); +assign Io5jy6 = (~(Lgj7z6[164] & Am88x6)); +assign Ao5jy6 = (Qo5jy6 & Yo5jy6); +assign Yo5jy6 = (~(Gp5jy6 & Op5jy6)); +assign Op5jy6 = (Wp5jy6 & Rk88x6); +assign Gp5jy6 = (Lgj7z6[162] & Eq5jy6); +assign Eq5jy6 = (~(Lgj7z6[166] & C2u7x6)); +assign C2u7x6 = (!Lgj7z6[163]); +assign Qo5jy6 = (~(Mq5jy6 & Lgj7z6[163])); +assign Mq5jy6 = (Wp5jy6 & J2u7x6); +assign J2u7x6 = (!Lgj7z6[166]); +assign Wp5jy6 = (Am88x6 | Lgj7z6[164]); +assign Am88x6 = (!Lgj7z6[167]); +assign Sn5jy6 = (G5j7z6[54] & Uq5jy6); +assign Uq5jy6 = (~(Sb5jy6 & Rphov6)); +assign Cn5jy6 = (~(J6oiw6 & Sb5jy6)); +assign Cg88x6 = (!Lgj7z6[162]); +assign Rk88x6 = (!Lgj7z6[165]); +assign Q05jy6 = (O55jy6 ? Kr5jy6 : Cr5jy6); +assign O55jy6 = (~(Sr5jy6 & As5jy6)); +assign As5jy6 = (Baniw6 | Ntoiw6); +assign Sr5jy6 = (~(Is5jy6 & Qs5jy6)); +assign Qs5jy6 = (Ys5jy6 & Gt5jy6); +assign Gt5jy6 = (~(Ot5jy6 & Cr5jy6)); +assign Ot5jy6 = (Wt5jy6 & Eu5jy6); +assign Wt5jy6 = (S75jy6 | I85jy6); +assign Ys5jy6 = (~(Mu5jy6 & I85jy6)); +assign I85jy6 = (Uu5jy6 ? Lgj7z6[148] : Lgj7z6[145]); +assign Mu5jy6 = (S75jy6 & Eu5jy6); +assign Eu5jy6 = (Y45jy6 | Cv5jy6); +assign S75jy6 = (Kv5jy6 ? Gbu7x6 : Zau7x6); +assign Kv5jy6 = (!Sv5jy6); +assign Is5jy6 = (Aw5jy6 & Iw5jy6); +assign Iw5jy6 = (~(Cv5jy6 & Y45jy6)); +assign Y45jy6 = (Sv5jy6 ? S388x6 : Qw5jy6); +assign Cv5jy6 = (!G55jy6); +assign G55jy6 = (Uu5jy6 ? Vu78x6 : Yw5jy6); +assign Aw5jy6 = (~(Ot4jy6 & Mpoiw6)); +assign Ot4jy6 = (!F5niw6); +assign Kr5jy6 = (Uu5jy6 ? Qvt7x6 : Xvt7x6); +assign Uu5jy6 = (~(Mpoiw6 | Gx5jy6)); +assign Gx5jy6 = (Feu7x6 & F5niw6); +assign F5niw6 = (G5j7z6[48] & Ox5jy6); +assign Ox5jy6 = (~(Sb5jy6 & Ao2jy6)); +assign Feu7x6 = (Wx5jy6 & Ey5jy6); +assign Ey5jy6 = (~(My5jy6 & Lgj7z6[145])); +assign My5jy6 = (Uy5jy6 & Ddu7x6); +assign Ddu7x6 = (!Lgj7z6[148]); +assign Wx5jy6 = (Cz5jy6 & Kz5jy6); +assign Kz5jy6 = (~(Sz5jy6 & A06jy6)); +assign A06jy6 = (I06jy6 & Qvt7x6); +assign I06jy6 = (~(Lgj7z6[148] & Wcu7x6)); +assign Wcu7x6 = (!Lgj7z6[145]); +assign Sz5jy6 = (Lgj7z6[144] & Uy5jy6); +assign Uy5jy6 = (~(Lgj7z6[149] & Yw5jy6)); +assign Yw5jy6 = (!Lgj7z6[146]); +assign Cz5jy6 = (~(Lgj7z6[146] & Vu78x6)); +assign Vu78x6 = (!Lgj7z6[149]); +assign Mpoiw6 = (~(G5j7z6[49] & Q06jy6)); +assign Q06jy6 = (~(Sb5jy6 & Nuniw6)); +assign Qvt7x6 = (!Lgj7z6[147]); +assign Xvt7x6 = (!Lgj7z6[144]); +assign Cr5jy6 = (Sv5jy6 ? C9u7x6 : J9u7x6); +assign Sv5jy6 = (Ntoiw6 & Y06jy6); +assign Y06jy6 = (~(Baniw6 & Icu7x6)); +assign Icu7x6 = (G16jy6 & O16jy6); +assign O16jy6 = (~(Lgj7z6[152] & S388x6)); +assign S388x6 = (!Lgj7z6[155]); +assign G16jy6 = (W16jy6 & E26jy6); +assign E26jy6 = (~(M26jy6 & U26jy6)); +assign U26jy6 = (C36jy6 & C9u7x6); +assign C36jy6 = (~(Lgj7z6[154] & Gbu7x6)); +assign Gbu7x6 = (!Lgj7z6[151]); +assign M26jy6 = (Lgj7z6[150] & K36jy6); +assign W16jy6 = (~(S36jy6 & Lgj7z6[151])); +assign S36jy6 = (K36jy6 & Zau7x6); +assign Zau7x6 = (!Lgj7z6[154]); +assign K36jy6 = (~(Lgj7z6[155] & Qw5jy6)); +assign Qw5jy6 = (!Lgj7z6[152]); +assign Baniw6 = (G5j7z6[50] & A46jy6); +assign A46jy6 = (~(Sb5jy6 & Jfmiw6)); +assign Ntoiw6 = (G5j7z6[51] & I46jy6); +assign I46jy6 = (~(Sb5jy6 & Cn2jy6)); +assign C9u7x6 = (!Lgj7z6[153]); +assign J9u7x6 = (!Lgj7z6[150]); +assign Eq4jy6 = (Qw4jy6 ? Y46jy6 : Q46jy6); +assign Qw4jy6 = (G56jy6 & O56jy6); +assign O56jy6 = (~(W56jy6 & E66jy6)); +assign E66jy6 = (~(Sz4jy6 & M66jy6)); +assign Sz4jy6 = (U66jy6 & C76jy6); +assign W56jy6 = (K76jy6 & S76jy6); +assign S76jy6 = (~(Iw4jy6 & A86jy6)); +assign A86jy6 = (~(Aw4jy6 & I86jy6)); +assign Iw4jy6 = (G96jy6 ? Y86jy6 : Q86jy6); +assign Y86jy6 = (!O96jy6); +assign K76jy6 = (I86jy6 | Aw4jy6); +assign Aw4jy6 = (M66jy6 ? Ea6jy6 : W96jy6); +assign I86jy6 = (Ma6jy6 | Ua6jy6); +assign Ua6jy6 = (Uy4jy6 & Q46jy6); +assign Ma6jy6 = (~(Cz4jy6 | Cb6jy6)); +assign Cb6jy6 = (~(Q46jy6 | Uy4jy6)); +assign Uy4jy6 = (M66jy6 ? Sb6jy6 : Kb6jy6); +assign Sb6jy6 = (!Ac6jy6); +assign Cz4jy6 = (G96jy6 ? Qc6jy6 : Ic6jy6); +assign Qc6jy6 = (!Yc6jy6); +assign G56jy6 = (A05jy6 | I05jy6); +assign Y46jy6 = (G96jy6 ? Od6jy6 : Gd6jy6); +assign G96jy6 = (~(Wd6jy6 & A05jy6)); +assign A05jy6 = (~(Ee6jy6 & Me6jy6)); +assign Me6jy6 = (~(G5j7z6[63] & Ue6jy6)); +assign Ee6jy6 = (Cf6jy6 & Kf6jy6); +assign Kf6jy6 = (~(Yy2nv6 & Ytl7x6)); +assign Yy2nv6 = (~(Y4hov6 & Zbm7x6)); +assign Zbm7x6 = (!G5j7z6[62]); +assign Y4hov6 = (!G5j7z6[63]); +assign Cf6jy6 = (~(G5j7z6[62] & Erk7x6)); +assign Wd6jy6 = (~(Sf6jy6 & Ag6jy6)); +assign Ag6jy6 = (Ig6jy6 & I05jy6); +assign I05jy6 = (~(Qg6jy6 & Yg6jy6)); +assign Yg6jy6 = (~(G5j7z6[61] & Ktl7x6)); +assign Qg6jy6 = (Gh6jy6 & Oh6jy6); +assign Oh6jy6 = (~(Fz2nv6 & Ytl7x6)); +assign Ytl7x6 = (!Sb5jy6); +assign Fz2nv6 = (~(Vvl7x6 & Grl7x6)); +assign Grl7x6 = (!G5j7z6[60]); +assign Vvl7x6 = (!G5j7z6[61]); +assign Gh6jy6 = (~(G5j7z6[60] & Qpl7x6)); +assign Ig6jy6 = (~(Wh6jy6 & Gd6jy6)); +assign Wh6jy6 = (Ei6jy6 & Mi6jy6); +assign Mi6jy6 = (Ic6jy6 | Yc6jy6); +assign Sf6jy6 = (Ui6jy6 & Cj6jy6); +assign Cj6jy6 = (~(Kj6jy6 & Yc6jy6)); +assign Yc6jy6 = (Sj6jy6 ? Lgj7z6[181] : Lgj7z6[184]); +assign Sj6jy6 = (!Ak6jy6); +assign Kj6jy6 = (Ic6jy6 & Ei6jy6); +assign Ei6jy6 = (Q86jy6 | O96jy6); +assign Ic6jy6 = (Qk6jy6 ? Ik6jy6 : Zg98x6); +assign Ui6jy6 = (~(O96jy6 & Q86jy6)); +assign Q86jy6 = (Qk6jy6 ? En98x6 : Dj98x6); +assign O96jy6 = (Ak6jy6 ? Lgj7z6[185] : Lgj7z6[182]); +assign Od6jy6 = (Ak6jy6 ? Dc98x6 : H798x6); +assign Ak6jy6 = (Yk6jy6 & G5j7z6[61]); +assign Yk6jy6 = (Gl6jy6 & Ol6jy6); +assign Ol6jy6 = (~(Wl6jy6 & Evu7x6)); +assign Evu7x6 = (Em6jy6 & Mm6jy6); +assign Mm6jy6 = (~(Lgj7z6[182] & Ae98x6)); +assign Em6jy6 = (Um6jy6 & Cn6jy6); +assign Cn6jy6 = (~(Kn6jy6 & Sn6jy6)); +assign Sn6jy6 = (~(Ao6jy6 | Lgj7z6[183])); +assign Kn6jy6 = (Lgj7z6[180] & Io6jy6); +assign Io6jy6 = (~(Lgj7z6[184] & Q898x6)); +assign Q898x6 = (!Lgj7z6[181]); +assign Um6jy6 = (~(Qo6jy6 & Lgj7z6[181])); +assign Qo6jy6 = (~(Ao6jy6 | Lgj7z6[184])); +assign Ao6jy6 = (~(Ae98x6 | Lgj7z6[182])); +assign Ae98x6 = (!Lgj7z6[185]); +assign Wl6jy6 = (G5j7z6[60] & Yo6jy6); +assign Yo6jy6 = (~(Sb5jy6 & L1i7x6)); +assign Gl6jy6 = (~(Jrj7x6 & Sb5jy6)); +assign Dc98x6 = (!Lgj7z6[183]); +assign H798x6 = (!Lgj7z6[180]); +assign Gd6jy6 = (Qk6jy6 ? Rru7x6 : Yru7x6); +assign Qk6jy6 = (Gp6jy6 & G5j7z6[63]); +assign Gp6jy6 = (Op6jy6 & Wp6jy6); +assign Wp6jy6 = (~(Eq6jy6 & Vtu7x6)); +assign Vtu7x6 = (Mq6jy6 & Uq6jy6); +assign Uq6jy6 = (~(Lgj7z6[188] & En98x6)); +assign En98x6 = (!Lgj7z6[191]); +assign Mq6jy6 = (Cr6jy6 & Kr6jy6); +assign Kr6jy6 = (~(Sr6jy6 & As6jy6)); +assign As6jy6 = (Is6jy6 & Rru7x6); +assign Is6jy6 = (~(Lgj7z6[190] & Zg98x6)); +assign Zg98x6 = (!Lgj7z6[187]); +assign Sr6jy6 = (Lgj7z6[186] & Qs6jy6); +assign Cr6jy6 = (~(Ys6jy6 & Lgj7z6[187])); +assign Ys6jy6 = (Qs6jy6 & Ik6jy6); +assign Ik6jy6 = (!Lgj7z6[190]); +assign Qs6jy6 = (~(Lgj7z6[191] & Dj98x6)); +assign Dj98x6 = (!Lgj7z6[188]); +assign Eq6jy6 = (G5j7z6[62] & Gt6jy6); +assign Gt6jy6 = (~(Sb5jy6 & P3i7x6)); +assign Op6jy6 = (~(Sb5jy6 & V6i7x6)); +assign Rru7x6 = (!Lgj7z6[189]); +assign Yru7x6 = (!Lgj7z6[186]); +assign Q46jy6 = (M66jy6 ? Wt6jy6 : Ot6jy6); +assign M66jy6 = (~(Ag4jy6 & Eu6jy6)); +assign Eu6jy6 = (~(Mu6jy6 & Uu6jy6)); +assign Uu6jy6 = (Cv6jy6 & Kv6jy6); +assign Kv6jy6 = (~(Sv6jy6 & Ot6jy6)); +assign Sv6jy6 = (Aw6jy6 & Iw6jy6); +assign Iw6jy6 = (Kb6jy6 | Ac6jy6); +assign Cv6jy6 = (~(Qw6jy6 & W96jy6)); +assign Qw6jy6 = (!Ea6jy6); +assign Mu6jy6 = (Yw6jy6 & Gx6jy6); +assign Gx6jy6 = (~(Ox6jy6 & Ac6jy6)); +assign Ac6jy6 = (Wx6jy6 ? Lgj7z6[169] : Lgj7z6[172]); +assign Wx6jy6 = (!Ey6jy6); +assign Ox6jy6 = (Kb6jy6 & Aw6jy6); +assign Aw6jy6 = (~(My6jy6 & Ea6jy6)); +assign Ea6jy6 = (Ey6jy6 ? J1v7x6 : C1v7x6); +assign My6jy6 = (!W96jy6); +assign W96jy6 = (Uy6jy6 ? V0v7x6 : O0v7x6); +assign Kb6jy6 = (Uy6jy6 ? Mz88x6 : Cz6jy6); +assign Yw6jy6 = (~(C76jy6 & U66jy6)); +assign U66jy6 = (!Gzk7x6); +assign Ag4jy6 = (~(Kz6jy6 & B7l7x6)); +assign Kz6jy6 = (~(Sz6jy6 & A07jy6)); +assign A07jy6 = (~(I07jy6 & Iq2nv6)); +assign Iq2nv6 = (!G5j7z6[58]); +assign Wt6jy6 = (Ey6jy6 ? Vmu7x6 : Cnu7x6); +assign Ey6jy6 = (Gzk7x6 & Q07jy6); +assign Q07jy6 = (C76jy6 | U3v7x6); +assign U3v7x6 = (~(Y07jy6 & G17jy6)); +assign G17jy6 = (~(Lgj7z6[170] & J1v7x6)); +assign J1v7x6 = (!Lgj7z6[173]); +assign Y07jy6 = (O17jy6 & W17jy6); +assign W17jy6 = (~(E27jy6 & M27jy6)); +assign M27jy6 = (~(U27jy6 | Lgj7z6[171])); +assign E27jy6 = (Lgj7z6[168] & C37jy6); +assign C37jy6 = (~(Lgj7z6[172] & Pq88x6)); +assign Pq88x6 = (!Lgj7z6[169]); +assign O17jy6 = (~(K37jy6 & Lgj7z6[169])); +assign K37jy6 = (~(U27jy6 | Lgj7z6[172])); +assign U27jy6 = (Lgj7z6[173] & C1v7x6); +assign C1v7x6 = (!Lgj7z6[170]); +assign C76jy6 = (!Fvk7x6); +assign Fvk7x6 = (G5j7z6[56] & S37jy6); +assign S37jy6 = (~(Uy2jy6 & Sb5jy6)); +assign Gzk7x6 = (G5j7z6[57] & A47jy6); +assign A47jy6 = (~(Mbj7x6 & Sb5jy6)); +assign Vmu7x6 = (!Lgj7z6[171]); +assign Cnu7x6 = (!Lgj7z6[168]); +assign Ot6jy6 = (Uy6jy6 ? A0v7x6 : H0v7x6); +assign Uy6jy6 = (~(I47jy6 & Q47jy6)); +assign Q47jy6 = (~(Y47jy6 & G5j7z6[58])); +assign Y47jy6 = (L2v7x6 & Sz6jy6); +assign Sz6jy6 = (~(Nfj7x6 & Sb5jy6)); +assign L2v7x6 = (G57jy6 & O57jy6); +assign O57jy6 = (~(W57jy6 & Lgj7z6[175])); +assign W57jy6 = (E67jy6 & Cz6jy6); +assign Cz6jy6 = (!Lgj7z6[178]); +assign G57jy6 = (M67jy6 & U67jy6); +assign U67jy6 = (~(C77jy6 & K77jy6)); +assign K77jy6 = (S77jy6 & H0v7x6); +assign S77jy6 = (~(Lgj7z6[178] & Mz88x6)); +assign Mz88x6 = (!Lgj7z6[175]); +assign C77jy6 = (Lgj7z6[174] & E67jy6); +assign E67jy6 = (~(Lgj7z6[179] & V0v7x6)); +assign V0v7x6 = (!Lgj7z6[176]); +assign M67jy6 = (~(Lgj7z6[176] & O0v7x6)); +assign O0v7x6 = (!Lgj7z6[179]); +assign I47jy6 = (~(B7l7x6 & I07jy6)); +assign I07jy6 = (So2nv6 | Sb5jy6); +assign Sb5jy6 = (A87jy6 & Xxjov6); +assign So2nv6 = (!G5j7z6[59]); +assign B7l7x6 = (~(G5j7z6[59] & Pfk7x6)); +assign A0v7x6 = (!Lgj7z6[174]); +assign H0v7x6 = (!Lgj7z6[177]); +assign Me4jy6 = (Io4jy6 ? Q87jy6 : I87jy6); +assign Io4jy6 = (~(Y87jy6 | W54jy6)); +assign W54jy6 = (~(G97jy6 | O97jy6)); +assign G97jy6 = (W97jy6 | Ea7jy6); +assign Y87jy6 = (Ma7jy6 & Ua7jy6); +assign Ua7jy6 = (Cb7jy6 & Kb7jy6); +assign Kb7jy6 = (~(Sb7jy6 & Q87jy6)); +assign Sb7jy6 = (Ac7jy6 & Ic7jy6); +assign Ac7jy6 = (Ao4jy6 | Qc7jy6); +assign Qc7jy6 = (!Sn4jy6); +assign Cb7jy6 = (Yc7jy6 | Sn4jy6); +assign Sn4jy6 = (Wd7jy6 ? Od7jy6 : Gd7jy6); +assign Yc7jy6 = (~(Ao4jy6 & Ic7jy6)); +assign Ic7jy6 = (~(Mm4jy6 & Em4jy6)); +assign Ao4jy6 = (Ue7jy6 ? Me7jy6 : Ee7jy6); +assign Ma7jy6 = (Cf7jy6 & Kf7jy6); +assign Kf7jy6 = (~(Op4jy6 & Wp4jy6)); +assign Cf7jy6 = (Em4jy6 | Mm4jy6); +assign Mm4jy6 = (Wd7jy6 ? Ag7jy6 : Sf7jy6); +assign Wd7jy6 = (!Wp4jy6); +assign Em4jy6 = (!Ig7jy6); +assign Ig7jy6 = (Ue7jy6 ? Yg7jy6 : Qg7jy6); +assign Q87jy6 = (Ue7jy6 ? Oh7jy6 : Gh7jy6); +assign Ue7jy6 = (W97jy6 & Wh7jy6); +assign Wh7jy6 = (~(Ei7jy6 & Mi7jy6)); +assign Mi7jy6 = (Ui7jy6 | Qg7jy6); +assign Ei7jy6 = (Cj7jy6 & Kj7jy6); +assign Kj7jy6 = (~(Yg7jy6 & Sj7jy6)); +assign Sj7jy6 = (~(Qg7jy6 & Ui7jy6)); +assign Ui7jy6 = (~(Ak7jy6 & Ik7jy6)); +assign Ik7jy6 = (~(Ee7jy6 & Qk7jy6)); +assign Qk7jy6 = (Yk7jy6 | Gh7jy6); +assign Ee7jy6 = (Wl7jy6 ? Ol7jy6 : Gl7jy6); +assign Ak7jy6 = (~(Gh7jy6 & Yk7jy6)); +assign Yk7jy6 = (!Me7jy6); +assign Me7jy6 = (Um7jy6 ? Mm7jy6 : Em7jy6); +assign Qg7jy6 = (Wl7jy6 ? Kn7jy6 : Cn7jy6); +assign Cn7jy6 = (!Sn7jy6); +assign Yg7jy6 = (Um7jy6 ? Io7jy6 : Ao7jy6); +assign Cj7jy6 = (O97jy6 | Wl7jy6); +assign W97jy6 = (~(Qo7jy6 & Yo7jy6)); +assign Yo7jy6 = (Gp7jy6 & Op7jy6); +assign Gp7jy6 = (~(Wp7jy6 | Eq7jy6)); +assign Oh7jy6 = (Mq7jy6 | Uq7jy6); +assign Uq7jy6 = (Cr7jy6 & Kr7jy6); +assign Kr7jy6 = (Is7jy6 ? As7jy6 : Sr7jy6); +assign As7jy6 = (Qs7jy6 ? Myv7x6 : Q88iw6); +assign Myv7x6 = (!Lgj7z6[111]); +assign Q88iw6 = (!Lgj7z6[108]); +assign Cr7jy6 = (~(Ys7jy6 | Um7jy6)); +assign Mq7jy6 = (Um7jy6 ? Ot7jy6 : Gt7jy6); +assign Um7jy6 = (Wt7jy6 & Eq7jy6); +assign Eq7jy6 = (~(Eu7jy6 & Mu7jy6)); +assign Eu7jy6 = (~(Uu7jy6 | Cv7jy6)); +assign Wt7jy6 = (~(Kv7jy6 & Sv7jy6)); +assign Sv7jy6 = (~(Io7jy6 & Aw7jy6)); +assign Kv7jy6 = (Iw7jy6 & Qw7jy6); +assign Qw7jy6 = (~(Qo7jy6 & Yw7jy6)); +assign Yw7jy6 = (Op7jy6 & Gx7jy6); +assign Qo7jy6 = (~(Ox7jy6 | Wx7jy6)); +assign Iw7jy6 = (Ao7jy6 | Ey7jy6); +assign Ey7jy6 = (~(Aw7jy6 | Io7jy6)); +assign Io7jy6 = (Cz7jy6 ? Uy7jy6 : My7jy6); +assign Uy7jy6 = (!Kz7jy6); +assign Aw7jy6 = (~(Sz7jy6 & A08jy6)); +assign A08jy6 = (~(Mm7jy6 & I08jy6)); +assign I08jy6 = (Ot7jy6 | Q08jy6); +assign Mm7jy6 = (Cz7jy6 ? G18jy6 : Y08jy6); +assign Sz7jy6 = (~(Q08jy6 & Ot7jy6)); +assign Q08jy6 = (!Em7jy6); +assign Em7jy6 = (Ys7jy6 ? W18jy6 : O18jy6); +assign Ao7jy6 = (Ys7jy6 ? M28jy6 : E28jy6); +assign M28jy6 = (!U28jy6); +assign Ot7jy6 = (Cz7jy6 ? K38jy6 : C38jy6); +assign Cz7jy6 = (S38jy6 & Cv7jy6); +assign Cv7jy6 = (A48jy6 | I48jy6); +assign S38jy6 = (~(Q48jy6 & Y48jy6)); +assign Y48jy6 = (~(Mu7jy6 & G58jy6)); +assign Q48jy6 = (O58jy6 & W58jy6); +assign W58jy6 = (~(E68jy6 & M68jy6)); +assign M68jy6 = (~(My7jy6 & Kz7jy6)); +assign E68jy6 = (U68jy6 & C78jy6); +assign C78jy6 = (G18jy6 | K78jy6); +assign K78jy6 = (~(Y08jy6 | C38jy6)); +assign G18jy6 = (I88jy6 ? A88jy6 : S78jy6); +assign A88jy6 = (!Q88jy6); +assign U68jy6 = (~(C38jy6 & Y08jy6)); +assign Y08jy6 = (G58jy6 ? G98jy6 : Y88jy6); +assign O58jy6 = (Kz7jy6 | My7jy6); +assign My7jy6 = (G58jy6 ? W98jy6 : O98jy6); +assign Kz7jy6 = (Ua8jy6 ? Ma8jy6 : Ea8jy6); +assign Ea8jy6 = (!Cb8jy6); +assign K38jy6 = (!Kb8jy6); +assign Kb8jy6 = (I88jy6 ? Ac8jy6 : Sb8jy6); +assign I88jy6 = (!Ua8jy6); +assign Ua8jy6 = (Ic8jy6 & I48jy6); +assign I48jy6 = (~(Qc8jy6 & Yc8jy6)); +assign Yc8jy6 = (~(G5j7z6[47] & Ue6jy6)); +assign Qc8jy6 = (Gd8jy6 & Od8jy6); +assign Od8jy6 = (X13nv6 | Qjk7x6); +assign X13nv6 = (H5iov6 & Itk7x6); +assign Itk7x6 = (!G5j7z6[46]); +assign H5iov6 = (!G5j7z6[47]); +assign Gd8jy6 = (~(G5j7z6[46] & Erk7x6)); +assign Ic8jy6 = (~(Wd8jy6 & Ee8jy6)); +assign Ee8jy6 = (Me8jy6 & A48jy6); +assign A48jy6 = (~(Ue8jy6 & Cf8jy6)); +assign Cf8jy6 = (~(G5j7z6[45] & Ktl7x6)); +assign Ue8jy6 = (Kf8jy6 & Sf8jy6); +assign Sf8jy6 = (Q13nv6 | Qjk7x6); +assign Q13nv6 = (Apk7x6 & Glk7x6); +assign Glk7x6 = (!G5j7z6[44]); +assign Apk7x6 = (!G5j7z6[45]); +assign Kf8jy6 = (~(G5j7z6[44] & Qpl7x6)); +assign Me8jy6 = (~(Ag8jy6 & Ig8jy6)); +assign Ig8jy6 = (Qg8jy6 ? Guw7x6 : Nuw7x6); +assign Guw7x6 = (!Lgj7z6[138]); +assign Ag8jy6 = (Yg8jy6 & Gh8jy6); +assign Gh8jy6 = (S78jy6 | Q88jy6); +assign Wd8jy6 = (Oh8jy6 & Wh8jy6); +assign Wh8jy6 = (~(Ei8jy6 & Q88jy6)); +assign Q88jy6 = (Mi8jy6 ? Lgj7z6[136] : Lgj7z6[133]); +assign Ei8jy6 = (S78jy6 & Yg8jy6); +assign Yg8jy6 = (~(Ma8jy6 & Cb8jy6)); +assign S78jy6 = (Qg8jy6 ? Dww7x6 : Wvw7x6); +assign Oh8jy6 = (Cb8jy6 | Ma8jy6); +assign Ma8jy6 = (Qg8jy6 ? Lgj7z6[140] : Lgj7z6[143]); +assign Cb8jy6 = (Mi8jy6 ? Pvw7x6 : Ub7iw6); +assign Ub7iw6 = (!Lgj7z6[134]); +assign Ac8jy6 = (Mi8jy6 ? Lgj7z6[135] : Lgj7z6[132]); +assign Mi8jy6 = (Ui8jy6 & G5j7z6[45]); +assign Ui8jy6 = (Cj8jy6 & Kj8jy6); +assign Kj8jy6 = (~(Sj8jy6 & Vyw7x6)); +assign Vyw7x6 = (Ak8jy6 & Ik8jy6); +assign Ik8jy6 = (~(Lgj7z6[134] & Pvw7x6)); +assign Ak8jy6 = (Qk8jy6 & Yk8jy6); +assign Yk8jy6 = (~(Gl8jy6 & Ol8jy6)); +assign Ol8jy6 = (Wl8jy6 & Ltw7x6); +assign Ltw7x6 = (!Lgj7z6[135]); +assign Gl8jy6 = (Lgj7z6[132] & Em8jy6); +assign Em8jy6 = (~(Lgj7z6[136] & Yr7iw6)); +assign Yr7iw6 = (!Lgj7z6[133]); +assign Qk8jy6 = (~(Mm8jy6 & Lgj7z6[133])); +assign Mm8jy6 = (Wl8jy6 & Txw7x6); +assign Txw7x6 = (!Lgj7z6[136]); +assign Wl8jy6 = (Pvw7x6 | Lgj7z6[134]); +assign Pvw7x6 = (!Lgj7z6[137]); +assign Sj8jy6 = (G5j7z6[44] & Um8jy6); +assign Um8jy6 = (~(Qjk7x6 & L1i7x6)); +assign Cj8jy6 = (~(Qjk7x6 & Jrj7x6)); +assign Sb8jy6 = (Qg8jy6 ? Lgj7z6[138] : Lgj7z6[141]); +assign Qg8jy6 = (~(Cn8jy6 & G5j7z6[47])); +assign Cn8jy6 = (Kn8jy6 & Sn8jy6); +assign Sn8jy6 = (~(Ao8jy6 & Fxw7x6)); +assign Fxw7x6 = (Io8jy6 & Qo8jy6); +assign Qo8jy6 = (~(Lgj7z6[140] & Uuw7x6)); +assign Uuw7x6 = (!Lgj7z6[143]); +assign Io8jy6 = (Yo8jy6 & Gp8jy6); +assign Gp8jy6 = (~(Op8jy6 & Wp8jy6)); +assign Wp8jy6 = (Eq8jy6 & Nuw7x6); +assign Nuw7x6 = (!Lgj7z6[141]); +assign Eq8jy6 = (~(Lgj7z6[142] & Dww7x6)); +assign Dww7x6 = (!Lgj7z6[139]); +assign Op8jy6 = (Lgj7z6[138] & Mq8jy6); +assign Yo8jy6 = (~(Uq8jy6 & Lgj7z6[139])); +assign Uq8jy6 = (Mq8jy6 & Wvw7x6); +assign Wvw7x6 = (!Lgj7z6[142]); +assign Mq8jy6 = (~(Lgj7z6[143] & Bvw7x6)); +assign Bvw7x6 = (!Lgj7z6[140]); +assign Ao8jy6 = (G5j7z6[46] & Cr8jy6); +assign Cr8jy6 = (~(Qjk7x6 & P3i7x6)); +assign Kn8jy6 = (~(Qjk7x6 & V6i7x6)); +assign C38jy6 = (G58jy6 ? Sr8jy6 : Kr8jy6); +assign G58jy6 = (~(As8jy6 & Uu7jy6)); +assign Uu7jy6 = (~(Is8jy6 & Qs8jy6)); +assign Qs8jy6 = (~(G5j7z6[43] & Pfk7x6)); +assign Is8jy6 = (Ys8jy6 & Gt8jy6); +assign Gt8jy6 = (J13nv6 | Qjk7x6); +assign J13nv6 = (Fhk7x6 & Edk7x6); +assign Edk7x6 = (!G5j7z6[42]); +assign Fhk7x6 = (!G5j7z6[43]); +assign Ys8jy6 = (~(G5j7z6[42] & O3l7x6)); +assign As8jy6 = (~(Ot8jy6 & Wt8jy6)); +assign Wt8jy6 = (~(Eu8jy6 | Mu7jy6)); +assign Mu7jy6 = (Mu8jy6 & Uu8jy6); +assign Uu8jy6 = (~(G5j7z6[41] & U7k7x6)); +assign Mu8jy6 = (Cv8jy6 & Kv8jy6); +assign Kv8jy6 = (B43nv6 | Qjk7x6); +assign B43nv6 = (K9k7x6 & Q5k7x6); +assign Q5k7x6 = (!G5j7z6[40]); +assign K9k7x6 = (!G5j7z6[41]); +assign Cv8jy6 = (~(G5j7z6[40] & T3k7x6)); +assign Eu8jy6 = (Sv8jy6 & Kr8jy6); +assign Sv8jy6 = (Aw8jy6 & Iw8jy6); +assign Iw8jy6 = (~(Qw8jy6 & G98jy6)); +assign Ot8jy6 = (Yw8jy6 & Gx8jy6); +assign Gx8jy6 = (Ox8jy6 | G98jy6); +assign G98jy6 = (Wx8jy6 ? M4x7x6 : Ts7iw6); +assign Ox8jy6 = (~(Y88jy6 & Aw8jy6)); +assign Aw8jy6 = (O98jy6 | Ey8jy6); +assign Y88jy6 = (!Qw8jy6); +assign Qw8jy6 = (My8jy6 ? Lgj7z6[127] : Lgj7z6[130]); +assign Yw8jy6 = (~(Ey8jy6 & O98jy6)); +assign O98jy6 = (My8jy6 ? Uy8jy6 : S478x6); +assign Ey8jy6 = (!W98jy6); +assign W98jy6 = (Wx8jy6 ? Vv68x6 : Wc7iw6); +assign Wc7iw6 = (!Lgj7z6[122]); +assign Sr8jy6 = (Wx8jy6 ? Rpw7x6 : O78iw6); +assign Wx8jy6 = (Cz8jy6 & G5j7z6[41]); +assign Cz8jy6 = (Kz8jy6 & Sz8jy6); +assign Sz8jy6 = (~(A09jy6 & O5x7x6)); +assign O5x7x6 = (I09jy6 & Q09jy6); +assign Q09jy6 = (~(Lgj7z6[122] & Vv68x6)); +assign I09jy6 = (Y09jy6 & G19jy6); +assign G19jy6 = (~(O19jy6 & W19jy6)); +assign W19jy6 = (E29jy6 & Rpw7x6); +assign O19jy6 = (Lgj7z6[120] & M29jy6); +assign M29jy6 = (~(Lgj7z6[124] & Ts7iw6)); +assign Ts7iw6 = (!Lgj7z6[121]); +assign Y09jy6 = (~(U29jy6 & Lgj7z6[121])); +assign U29jy6 = (E29jy6 & M4x7x6); +assign M4x7x6 = (!Lgj7z6[124]); +assign E29jy6 = (Vv68x6 | Lgj7z6[122]); +assign Vv68x6 = (!Lgj7z6[125]); +assign A09jy6 = (G5j7z6[40] & C39jy6); +assign C39jy6 = (~(Qjk7x6 & Uy2jy6)); +assign Kz8jy6 = (~(Qjk7x6 & Mbj7x6)); +assign Rpw7x6 = (!Lgj7z6[123]); +assign O78iw6 = (!Lgj7z6[120]); +assign Kr8jy6 = (My8jy6 ? Y3x7x6 : R3x7x6); +assign My8jy6 = (~(K39jy6 & G5j7z6[43])); +assign K39jy6 = (S39jy6 & A49jy6); +assign A49jy6 = (~(I49jy6 & L7x7x6)); +assign L7x7x6 = (Q49jy6 & Y49jy6); +assign Y49jy6 = (~(G59jy6 & Lgj7z6[127])); +assign G59jy6 = (O59jy6 & C6x7x6); +assign C6x7x6 = (!Lgj7z6[130]); +assign Q49jy6 = (W59jy6 & E69jy6); +assign E69jy6 = (~(M69jy6 & U69jy6)); +assign U69jy6 = (C79jy6 & R3x7x6); +assign C79jy6 = (~(Lgj7z6[130] & J6x7x6)); +assign J6x7x6 = (!Lgj7z6[127]); +assign M69jy6 = (Lgj7z6[126] & O59jy6); +assign O59jy6 = (~(Lgj7z6[131] & Uy8jy6)); +assign Uy8jy6 = (!Lgj7z6[128]); +assign W59jy6 = (~(Lgj7z6[128] & S478x6)); +assign S478x6 = (!Lgj7z6[131]); +assign I49jy6 = (G5j7z6[42] & K79jy6); +assign K79jy6 = (~(Qjk7x6 & Nfj7x6)); +assign S39jy6 = (~(Qjk7x6 & Hzh7x6)); +assign Y3x7x6 = (!Lgj7z6[126]); +assign R3x7x6 = (!Lgj7z6[129]); +assign Gt7jy6 = (S79jy6 & Ys7jy6); +assign Ys7jy6 = (~(A89jy6 & I89jy6)); +assign I89jy6 = (~(Q89jy6 & Y89jy6)); +assign Y89jy6 = (Wx7jy6 | G99jy6); +assign Q89jy6 = (O99jy6 & W99jy6); +assign W99jy6 = (~(Ea9jy6 & Ma9jy6)); +assign Ma9jy6 = (U28jy6 | E28jy6); +assign Ea9jy6 = (Ua9jy6 & Cb9jy6); +assign Cb9jy6 = (O18jy6 | Kb9jy6); +assign Kb9jy6 = (!Sb9jy6); +assign Sb9jy6 = (S79jy6 | W18jy6); +assign O18jy6 = (Is7jy6 ? Ic9jy6 : Ac9jy6); +assign Ic9jy6 = (!Qc9jy6); +assign Ua9jy6 = (~(W18jy6 & S79jy6)); +assign W18jy6 = (G99jy6 ? Gd9jy6 : Yc9jy6); +assign O99jy6 = (~(E28jy6 & U28jy6)); +assign U28jy6 = (G99jy6 ? Wd9jy6 : Od9jy6); +assign E28jy6 = (Is7jy6 ? Me9jy6 : Ee9jy6); +assign Is7jy6 = (~(Ue9jy6 & Wp7jy6)); +assign Wp7jy6 = (!Gx7jy6); +assign Ue9jy6 = (~(Cf9jy6 & Kf9jy6)); +assign Kf9jy6 = (~(Sf9jy6 | Op7jy6)); +assign Sf9jy6 = (Ag9jy6 & Sr7jy6); +assign Sr7jy6 = (Ig9jy6 ? A6w7x6 : T5w7x6); +assign T5w7x6 = (!Lgj7z6[114]); +assign Ag9jy6 = (Qg9jy6 & Yg9jy6); +assign Yg9jy6 = (Ac9jy6 | Qc9jy6); +assign Cf9jy6 = (Gh9jy6 & Oh9jy6); +assign Oh9jy6 = (~(Wh9jy6 & Qc9jy6)); +assign Qc9jy6 = (Qs7jy6 ? Lgj7z6[112] : Lgj7z6[109]); +assign Wh9jy6 = (Ac9jy6 & Qg9jy6); +assign Qg9jy6 = (~(Ei9jy6 & Me9jy6)); +assign Ac9jy6 = (Ig9jy6 ? Mi9jy6 : Qi68x6); +assign Gh9jy6 = (Me9jy6 | Ei9jy6); +assign Ei9jy6 = (!Ee9jy6); +assign Me9jy6 = (Qs7jy6 ? V6w7x6 : Yd7iw6); +assign Qs7jy6 = (Ui9jy6 & G5j7z6[37]); +assign Ui9jy6 = (Cj9jy6 & Kj9jy6); +assign Kj9jy6 = (~(Sj9jy6 & E8w7x6)); +assign E8w7x6 = (Ak9jy6 & Ik9jy6); +assign Ik9jy6 = (~(Lgj7z6[110] & V6w7x6)); +assign Ak9jy6 = (Qk9jy6 & Yk9jy6); +assign Yk9jy6 = (~(Gl9jy6 & Ol9jy6)); +assign Ol9jy6 = (~(Wl9jy6 | Lgj7z6[111])); +assign Gl9jy6 = (Lgj7z6[108] & Em9jy6); +assign Em9jy6 = (~(Lgj7z6[112] & Ot7iw6)); +assign Ot7iw6 = (!Lgj7z6[109]); +assign Qk9jy6 = (~(Mm9jy6 & Lgj7z6[109])); +assign Mm9jy6 = (~(Wl9jy6 | Lgj7z6[112])); +assign Wl9jy6 = (Lgj7z6[113] & Yd7iw6); +assign Sj9jy6 = (G5j7z6[36] & Um9jy6); +assign Um9jy6 = (~(Qjk7x6 & Cshov6)); +assign Cj9jy6 = (~(Qjk7x6 & I2oiw6)); +assign V6w7x6 = (!Lgj7z6[113]); +assign Yd7iw6 = (!Lgj7z6[110]); +assign Ee9jy6 = (Ig9jy6 ? O6w7x6 : H6w7x6); +assign Ig9jy6 = (Cn9jy6 & G5j7z6[39]); +assign Cn9jy6 = (Kn9jy6 & Sn9jy6); +assign Sn9jy6 = (~(Ao9jy6 & G9w7x6)); +assign G9w7x6 = (Io9jy6 & Qo9jy6); +assign Qo9jy6 = (~(Yo9jy6 & Lgj7z6[115])); +assign Yo9jy6 = (Gp9jy6 & Mi9jy6); +assign Mi9jy6 = (!Lgj7z6[118]); +assign Io9jy6 = (Op9jy6 & Wp9jy6); +assign Wp9jy6 = (~(Eq9jy6 & Mq9jy6)); +assign Mq9jy6 = (Uq9jy6 & A6w7x6); +assign A6w7x6 = (!Lgj7z6[117]); +assign Uq9jy6 = (~(Lgj7z6[118] & Qi68x6)); +assign Qi68x6 = (!Lgj7z6[115]); +assign Eq9jy6 = (Lgj7z6[114] & Gp9jy6); +assign Gp9jy6 = (~(Lgj7z6[119] & H6w7x6)); +assign Op9jy6 = (~(Lgj7z6[116] & O6w7x6)); +assign Ao9jy6 = (G5j7z6[38] & Cr9jy6); +assign Cr9jy6 = (~(Qjk7x6 & Rphov6)); +assign Kn9jy6 = (~(Qjk7x6 & J6oiw6)); +assign O6w7x6 = (!Lgj7z6[119]); +assign H6w7x6 = (!Lgj7z6[116]); +assign A89jy6 = (~(Op7jy6 & Gx7jy6)); +assign Gx7jy6 = (Kr9jy6 & Sr9jy6); +assign Sr9jy6 = (~(G5j7z6[39] & Ua5jy6)); +assign Kr9jy6 = (As9jy6 & Is9jy6); +assign Is9jy6 = (U33nv6 | Qjk7x6); +assign U33nv6 = (Bnoiw6 & I3niw6); +assign I3niw6 = (!G5j7z6[38]); +assign Bnoiw6 = (!G5j7z6[39]); +assign As9jy6 = (~(G5j7z6[38] & Ac5jy6)); +assign Op7jy6 = (Qs9jy6 & Ys9jy6); +assign Ys9jy6 = (~(G5j7z6[37] & Wd5jy6)); +assign Qs9jy6 = (Gt9jy6 & Ot9jy6); +assign Ot9jy6 = (N33nv6 | Qjk7x6); +assign N33nv6 = (Ajoiw6 & Vzmiw6); +assign Vzmiw6 = (!G5j7z6[36]); +assign Ajoiw6 = (!G5j7z6[37]); +assign Gt9jy6 = (~(G5j7z6[36] & Ue5jy6)); +assign S79jy6 = (G99jy6 ? Eu9jy6 : Wt9jy6); +assign G99jy6 = (Mu9jy6 & Ox7jy6); +assign Ox7jy6 = (~(Uu9jy6 & Cv9jy6)); +assign Cv9jy6 = (~(G5j7z6[35] & Xdoiw6)); +assign Uu9jy6 = (Kv9jy6 & Sv9jy6); +assign Sv9jy6 = (W43nv6 | Qjk7x6); +assign W43nv6 = (Nfoiw6 & Aw9jy6); +assign Aw9jy6 = (!G5j7z6[34]); +assign Nfoiw6 = (!G5j7z6[35]); +assign Kv9jy6 = (~(G5j7z6[34] & Zumiw6)); +assign Mu9jy6 = (~(Iw9jy6 & Qw9jy6)); +assign Qw9jy6 = (Yw9jy6 & Wx7jy6); +assign Wx7jy6 = (~(Gx9jy6 & Ox9jy6)); +assign Ox9jy6 = (~(G5j7z6[33] & Daoiw6)); +assign Gx9jy6 = (Wx9jy6 & Ey9jy6); +assign Ey9jy6 = (D53nv6 | Qjk7x6); +assign D53nv6 = (Tboiw6 & Hsmiw6); +assign Hsmiw6 = (!G5j7z6[32]); +assign Tboiw6 = (!G5j7z6[33]); +assign Wx9jy6 = (~(G5j7z6[32] & Rqmiw6)); +assign Yw9jy6 = (~(My9jy6 & Eu9jy6)); +assign My9jy6 = (Uy9jy6 & Cz9jy6); +assign Cz9jy6 = (~(Kz9jy6 & Yc9jy6)); +assign Iw9jy6 = (Sz9jy6 & A0ajy6); +assign A0ajy6 = (I0ajy6 | Yc9jy6); +assign Yc9jy6 = (Q0ajy6 ? Efw7x6 : Ju7iw6); +assign I0ajy6 = (~(Gd9jy6 & Uy9jy6)); +assign Uy9jy6 = (Y0ajy6 | Od9jy6); +assign Gd9jy6 = (!Kz9jy6); +assign Kz9jy6 = (G1ajy6 ? Lgj7z6[103] : Lgj7z6[106]); +assign Sz9jy6 = (~(Od9jy6 & Y0ajy6)); +assign Y0ajy6 = (!Wd9jy6); +assign Wd9jy6 = (G1ajy6 ? Lgj7z6[104] : Lgj7z6[107]); +assign Od9jy6 = (Q0ajy6 ? Lgj7z6[101] : Lgj7z6[98]); +assign Eu9jy6 = (G1ajy6 ? Qew7x6 : Jew7x6); +assign G1ajy6 = (~(O1ajy6 & G5j7z6[35])); +assign O1ajy6 = (W1ajy6 & E2ajy6); +assign E2ajy6 = (~(M2ajy6 & Diw7x6)); +assign Diw7x6 = (U2ajy6 & C3ajy6); +assign C3ajy6 = (~(K3ajy6 & Lgj7z6[103])); +assign K3ajy6 = (S3ajy6 & Ugw7x6); +assign Ugw7x6 = (!Lgj7z6[106]); +assign U2ajy6 = (A4ajy6 & I4ajy6); +assign I4ajy6 = (~(Q4ajy6 & Y4ajy6)); +assign Y4ajy6 = (G5ajy6 & Jew7x6); +assign G5ajy6 = (~(Lgj7z6[106] & Bhw7x6)); +assign Bhw7x6 = (!Lgj7z6[103]); +assign Q4ajy6 = (Lgj7z6[102] & S3ajy6); +assign S3ajy6 = (~(Lgj7z6[107] & O5ajy6)); +assign O5ajy6 = (!Lgj7z6[104]); +assign A4ajy6 = (~(Lgj7z6[104] & L568x6)); +assign L568x6 = (!Lgj7z6[107]); +assign M2ajy6 = (G5j7z6[34] & W5ajy6); +assign W5ajy6 = (~(Qjk7x6 & Jfmiw6)); +assign W1ajy6 = (~(Qjk7x6 & Cn2jy6)); +assign Qew7x6 = (!Lgj7z6[102]); +assign Jew7x6 = (!Lgj7z6[105]); +assign Wt9jy6 = (Q0ajy6 ? J0w7x6 : Ua8iw6); +assign Q0ajy6 = (E6ajy6 & G5j7z6[33]); +assign E6ajy6 = (M6ajy6 & U6ajy6); +assign U6ajy6 = (~(C7ajy6 & Ggw7x6)); +assign Ggw7x6 = (K7ajy6 & S7ajy6); +assign S7ajy6 = (~(Lgj7z6[98] & Ow58x6)); +assign K7ajy6 = (A8ajy6 & I8ajy6); +assign I8ajy6 = (~(Q8ajy6 & Y8ajy6)); +assign Y8ajy6 = (G9ajy6 & J0w7x6); +assign Q8ajy6 = (Lgj7z6[96] & O9ajy6); +assign O9ajy6 = (~(Lgj7z6[100] & Ju7iw6)); +assign Ju7iw6 = (!Lgj7z6[97]); +assign A8ajy6 = (~(W9ajy6 & Lgj7z6[97])); +assign W9ajy6 = (G9ajy6 & Efw7x6); +assign Efw7x6 = (!Lgj7z6[100]); +assign G9ajy6 = (Ow58x6 | Lgj7z6[98]); +assign Ow58x6 = (!Lgj7z6[101]); +assign C7ajy6 = (G5j7z6[32] & Eaajy6); +assign Eaajy6 = (~(Qjk7x6 & Ao2jy6)); +assign M6ajy6 = (~(Qjk7x6 & Nuniw6)); +assign Qjk7x6 = (Maajy6 & Xxjov6); +assign J0w7x6 = (!Lgj7z6[99]); +assign Ua8iw6 = (!Lgj7z6[96]); +assign Gh7jy6 = (~(Uaajy6 | Cbajy6)); +assign Cbajy6 = (~(Kbajy6 | Wl7jy6)); +assign Kbajy6 = (Icajy6 ? Acajy6 : Sbajy6); +assign Acajy6 = (~(Qcajy6 & Ycajy6)); +assign Ycajy6 = (Gdajy6 ? Lgj7z6[66] : Lgj7z6[69]); +assign Uaajy6 = (Wl7jy6 ? Wdajy6 : Odajy6); +assign Wl7jy6 = (Eeajy6 & Ea7jy6); +assign Ea7jy6 = (~(Meajy6 & Ueajy6)); +assign Ueajy6 = (~(Cfajy6 | Kfajy6)); +assign Meajy6 = (~(Sfajy6 | Agajy6)); +assign Eeajy6 = (~(Igajy6 & Qgajy6)); +assign Qgajy6 = (Ygajy6 & O97jy6); +assign O97jy6 = (~(Ghajy6 & Ohajy6)); +assign Ohajy6 = (Whajy6 & Eiajy6); +assign Whajy6 = (Miajy6 & Uiajy6); +assign Ghajy6 = (~(Cjajy6 | Kjajy6)); +assign Ygajy6 = (~(Ol7jy6 & Sjajy6)); +assign Sjajy6 = (~(Akajy6 & Ikajy6)); +assign Ikajy6 = (Wdajy6 | Qkajy6); +assign Ol7jy6 = (Olajy6 ? Glajy6 : Ykajy6); +assign Ykajy6 = (!Wlajy6); +assign Igajy6 = (Emajy6 & Mmajy6); +assign Mmajy6 = (Akajy6 | Wdajy6); +assign Akajy6 = (Gl7jy6 | Qkajy6); +assign Qkajy6 = (~(Sn7jy6 | Kn7jy6)); +assign Gl7jy6 = (Icajy6 ? Cnajy6 : Umajy6); +assign Emajy6 = (~(Kn7jy6 & Sn7jy6)); +assign Sn7jy6 = (Icajy6 ? Snajy6 : Knajy6); +assign Kn7jy6 = (Olajy6 ? Ioajy6 : Aoajy6); +assign Wdajy6 = (Olajy6 ? Yoajy6 : Qoajy6); +assign Olajy6 = (Gpajy6 & Opajy6); +assign Opajy6 = (~(Wpajy6 & Eqajy6)); +assign Eqajy6 = (Sfajy6 | Mqajy6); +assign Wpajy6 = (Uqajy6 & Crajy6); +assign Crajy6 = (~(Ioajy6 & Krajy6)); +assign Krajy6 = (Srajy6 | Asajy6); +assign Ioajy6 = (Ysajy6 ? Qsajy6 : Isajy6); +assign Uqajy6 = (~(Asajy6 & Srajy6)); +assign Srajy6 = (!Aoajy6); +assign Aoajy6 = (Mqajy6 ? Otajy6 : Gtajy6); +assign Asajy6 = (Wtajy6 & Euajy6); +assign Euajy6 = (~(Muajy6 & Uuajy6)); +assign Uuajy6 = (~(Wlajy6 & Glajy6)); +assign Wtajy6 = (Glajy6 | Wlajy6); +assign Wlajy6 = (Mqajy6 ? Kvajy6 : Cvajy6); +assign Kvajy6 = (!Svajy6); +assign Glajy6 = (Ysajy6 ? Iwajy6 : Awajy6); +assign Awajy6 = (!Qwajy6); +assign Gpajy6 = (Cfajy6 | Kfajy6); +assign Yoajy6 = (Ysajy6 ? Gxajy6 : Ywajy6); +assign Ysajy6 = (Oxajy6 & Kfajy6); +assign Kfajy6 = (~(Wxajy6 & Eyajy6)); +assign Eyajy6 = (~(G5j7z6[31] & Ue6jy6)); +assign Wxajy6 = (Myajy6 & Uyajy6); +assign Uyajy6 = (Ry2nv6 | Czajy6); +assign Ry2nv6 = (B1k7x6 & Twj7x6); +assign Twj7x6 = (!G5j7z6[30]); +assign B1k7x6 = (!G5j7z6[31]); +assign Myajy6 = (~(G5j7z6[30] & Erk7x6)); +assign Oxajy6 = (~(Kzajy6 & Szajy6)); +assign Szajy6 = (A0bjy6 & Cfajy6); +assign Cfajy6 = (~(I0bjy6 & Q0bjy6)); +assign Q0bjy6 = (~(G5j7z6[29] & Ktl7x6)); +assign I0bjy6 = (Y0bjy6 & G1bjy6); +assign G1bjy6 = (~(V03nv6 & Inj7x6)); +assign V03nv6 = (~(Zsj7x6 & Yoj7x6)); +assign Yoj7x6 = (!G5j7z6[28]); +assign Zsj7x6 = (!G5j7z6[29]); +assign Y0bjy6 = (~(G5j7z6[28] & Qpl7x6)); +assign A0bjy6 = (~(O1bjy6 & W1bjy6)); +assign W1bjy6 = (E2bjy6 ? Xrx7x6 : Esx7x6); +assign Xrx7x6 = (!Lgj7z6[90]); +assign O1bjy6 = (M2bjy6 & U2bjy6); +assign U2bjy6 = (Iwajy6 | Qwajy6); +assign Kzajy6 = (C3bjy6 & K3bjy6); +assign K3bjy6 = (~(S3bjy6 & Qwajy6)); +assign Qwajy6 = (A4bjy6 ? Lgj7z6[88] : Lgj7z6[85]); +assign S3bjy6 = (Iwajy6 & M2bjy6); +assign M2bjy6 = (~(I4bjy6 & Isajy6)); +assign Iwajy6 = (E2bjy6 ? Cj58x6 : Q4bjy6); +assign C3bjy6 = (Isajy6 | I4bjy6); +assign I4bjy6 = (!Qsajy6); +assign Qsajy6 = (E2bjy6 ? Y4bjy6 : Rn58x6); +assign Isajy6 = (A4bjy6 ? T16iw6 : G5bjy6); +assign G5bjy6 = (!Lgj7z6[86]); +assign Gxajy6 = (E2bjy6 ? Lgj7z6[90] : Lgj7z6[93]); +assign E2bjy6 = (~(O5bjy6 & G5j7z6[31])); +assign O5bjy6 = (W5bjy6 & E6bjy6); +assign E6bjy6 = (~(M6bjy6 & Wux7x6)); +assign Wux7x6 = (U6bjy6 & C7bjy6); +assign C7bjy6 = (~(K7bjy6 & Lgj7z6[91])); +assign K7bjy6 = (S7bjy6 & Q4bjy6); +assign Q4bjy6 = (!Lgj7z6[94]); +assign U6bjy6 = (A8bjy6 & I8bjy6); +assign I8bjy6 = (~(Q8bjy6 & Y8bjy6)); +assign Y8bjy6 = (G9bjy6 & Esx7x6); +assign Esx7x6 = (!Lgj7z6[93]); +assign G9bjy6 = (~(Lgj7z6[94] & Cj58x6)); +assign Cj58x6 = (!Lgj7z6[91]); +assign Q8bjy6 = (Lgj7z6[90] & S7bjy6); +assign S7bjy6 = (~(Lgj7z6[95] & Y4bjy6)); +assign Y4bjy6 = (!Lgj7z6[92]); +assign A8bjy6 = (~(Lgj7z6[92] & Rn58x6)); +assign Rn58x6 = (!Lgj7z6[95]); +assign M6bjy6 = (G5j7z6[30] & O9bjy6); +assign O9bjy6 = (~(Czajy6 & P3i7x6)); +assign W5bjy6 = (~(Czajy6 & V6i7x6)); +assign Ywajy6 = (A4bjy6 ? Lgj7z6[87] : Lgj7z6[84]); +assign A4bjy6 = (W9bjy6 & G5j7z6[29]); +assign W9bjy6 = (Eabjy6 & Mabjy6); +assign Mabjy6 = (~(Uabjy6 & Ntx7x6)); +assign Ntx7x6 = (Cbbjy6 & Kbbjy6); +assign Kbbjy6 = (~(Lgj7z6[86] & T16iw6)); +assign Cbbjy6 = (Sbbjy6 & Acbjy6); +assign Acbjy6 = (~(Icbjy6 & Qcbjy6)); +assign Qcbjy6 = (Ycbjy6 & Gq6iw6); +assign Gq6iw6 = (!Lgj7z6[87]); +assign Icbjy6 = (Lgj7z6[84] & Gdbjy6); +assign Gdbjy6 = (~(Lgj7z6[88] & Fa58x6)); +assign Fa58x6 = (!Lgj7z6[85]); +assign Sbbjy6 = (~(Odbjy6 & Lgj7z6[85])); +assign Odbjy6 = (Ycbjy6 & Ff6iw6); +assign Ff6iw6 = (!Lgj7z6[88]); +assign Ycbjy6 = (T16iw6 | Lgj7z6[86]); +assign T16iw6 = (!Lgj7z6[89]); +assign Uabjy6 = (G5j7z6[28] & Wdbjy6); +assign Wdbjy6 = (~(Czajy6 & L1i7x6)); +assign Eabjy6 = (~(Jrj7x6 & Czajy6)); +assign Qoajy6 = (!Muajy6); +assign Muajy6 = (Mqajy6 ? Mebjy6 : Eebjy6); +assign Mqajy6 = (Uebjy6 & Agajy6); +assign Agajy6 = (~(Cfbjy6 & Kfbjy6)); +assign Kfbjy6 = (~(G5j7z6[27] & Pfk7x6)); +assign Cfbjy6 = (Sfbjy6 & Agbjy6); +assign Agbjy6 = (~(O03nv6 & Inj7x6)); +assign O03nv6 = (~(Xkj7x6 & Dhj7x6)); +assign Dhj7x6 = (!G5j7z6[26]); +assign Xkj7x6 = (!G5j7z6[27]); +assign Sfbjy6 = (~(G5j7z6[26] & O3l7x6)); +assign O3l7x6 = (!Nfj7x6); +assign Uebjy6 = (~(Igbjy6 & Qgbjy6)); +assign Qgbjy6 = (Ygbjy6 & Sfajy6); +assign Sfajy6 = (~(Ghbjy6 & Ohbjy6)); +assign Ohbjy6 = (~(G5j7z6[25] & U7k7x6)); +assign Ghbjy6 = (Whbjy6 & Eibjy6); +assign Eibjy6 = (H03nv6 | Czajy6); +assign H03nv6 = (Cdj7x6 & N8j7x6); +assign N8j7x6 = (!G5j7z6[24]); +assign Cdj7x6 = (!G5j7z6[25]); +assign Whbjy6 = (~(G5j7z6[24] & T3k7x6)); +assign T3k7x6 = (!Uy2jy6); +assign Ygbjy6 = (~(Mibjy6 & Mebjy6)); +assign Mibjy6 = (Uibjy6 & Cjbjy6); +assign Cjbjy6 = (Svajy6 | Cvajy6); +assign Igbjy6 = (Kjbjy6 & Sjbjy6); +assign Sjbjy6 = (~(Akbjy6 & Cvajy6)); +assign Cvajy6 = (Ikbjy6 ? Lgj7z6[73] : Lgj7z6[76]); +assign Ikbjy6 = (!Qkbjy6); +assign Akbjy6 = (Svajy6 & Uibjy6); +assign Uibjy6 = (Otajy6 | Ykbjy6); +assign Svajy6 = (Glbjy6 ? R2y7x6 : K2y7x6); +assign Kjbjy6 = (~(Ykbjy6 & Otajy6)); +assign Otajy6 = (Glbjy6 ? Olbjy6 : Q558x6); +assign Ykbjy6 = (!Gtajy6); +assign Gtajy6 = (Qkbjy6 ? Tw48x6 : Wlbjy6); +assign Wlbjy6 = (!Lgj7z6[74]); +assign Mebjy6 = (Glbjy6 ? Zzx7x6 : Szx7x6); +assign Glbjy6 = (~(Embjy6 & G5j7z6[27])); +assign Embjy6 = (Mmbjy6 & Umbjy6); +assign Umbjy6 = (~(Cnbjy6 & T3y7x6)); +assign T3y7x6 = (Knbjy6 & Snbjy6); +assign Snbjy6 = (~(Lgj7z6[80] & Q558x6)); +assign Q558x6 = (!Lgj7z6[83]); +assign Knbjy6 = (Aobjy6 & Iobjy6); +assign Iobjy6 = (~(Qobjy6 & Yobjy6)); +assign Yobjy6 = (Gpbjy6 & Szx7x6); +assign Gpbjy6 = (~(Lgj7z6[82] & R2y7x6)); +assign R2y7x6 = (!Lgj7z6[79]); +assign Qobjy6 = (Lgj7z6[78] & Opbjy6); +assign Aobjy6 = (~(Wpbjy6 & Lgj7z6[79])); +assign Wpbjy6 = (Opbjy6 & K2y7x6); +assign K2y7x6 = (!Lgj7z6[82]); +assign Opbjy6 = (~(Lgj7z6[83] & Olbjy6)); +assign Olbjy6 = (!Lgj7z6[80]); +assign Cnbjy6 = (G5j7z6[26] & Eqbjy6); +assign Eqbjy6 = (~(Nfj7x6 & Czajy6)); +assign Mmbjy6 = (~(Czajy6 & Hzh7x6)); +assign Zzx7x6 = (!Lgj7z6[78]); +assign Szx7x6 = (!Lgj7z6[81]); +assign Eebjy6 = (Qkbjy6 ? Inx7x6 : Bnx7x6); +assign Qkbjy6 = (Mqbjy6 & G5j7z6[25]); +assign Mqbjy6 = (Uqbjy6 & Crbjy6); +assign Crbjy6 = (~(Krbjy6 & W1y7x6)); +assign W1y7x6 = (Srbjy6 & Asbjy6); +assign Asbjy6 = (~(Lgj7z6[74] & Tw48x6)); +assign Srbjy6 = (Isbjy6 & Qsbjy6); +assign Qsbjy6 = (~(Ysbjy6 & Gtbjy6)); +assign Gtbjy6 = (Otbjy6 & Inx7x6); +assign Ysbjy6 = (Lgj7z6[72] & Wtbjy6); +assign Wtbjy6 = (~(Lgj7z6[76] & N0y7x6)); +assign N0y7x6 = (!Lgj7z6[73]); +assign Isbjy6 = (~(Eubjy6 & Lgj7z6[73])); +assign Eubjy6 = (Otbjy6 & U0y7x6); +assign U0y7x6 = (!Lgj7z6[76]); +assign Otbjy6 = (Tw48x6 | Lgj7z6[74]); +assign Tw48x6 = (!Lgj7z6[77]); +assign Krbjy6 = (G5j7z6[24] & Mubjy6); +assign Mubjy6 = (~(Uy2jy6 & Czajy6)); +assign Uqbjy6 = (~(Mbj7x6 & Czajy6)); +assign Inx7x6 = (!Lgj7z6[75]); +assign Bnx7x6 = (!Lgj7z6[72]); +assign Odajy6 = (Uubjy6 & Icajy6); +assign Icajy6 = (Cvbjy6 & Kvbjy6); +assign Kvbjy6 = (~(Svbjy6 & Awbjy6)); +assign Awbjy6 = (~(Miajy6 & Iwbjy6)); +assign Miajy6 = (!Qwbjy6); +assign Svbjy6 = (Ywbjy6 & Gxbjy6); +assign Gxbjy6 = (Snajy6 | Oxbjy6); +assign Oxbjy6 = (~(Knajy6 | Wxbjy6)); +assign Snajy6 = (Qcajy6 ? Mybjy6 : Eybjy6); +assign Qcajy6 = (!Uybjy6); +assign Mybjy6 = (!Czbjy6); +assign Ywbjy6 = (~(Wxbjy6 & Knajy6)); +assign Knajy6 = (Iwbjy6 ? Szbjy6 : Kzbjy6); +assign Wxbjy6 = (~(A0cjy6 | I0cjy6)); +assign I0cjy6 = (Umajy6 & Sbajy6); +assign A0cjy6 = (~(Cnajy6 | Q0cjy6)); +assign Q0cjy6 = (~(Sbajy6 | Umajy6)); +assign Umajy6 = (Iwbjy6 ? G1cjy6 : Y0cjy6); +assign G1cjy6 = (!O1cjy6); +assign Sbajy6 = (Iwbjy6 ? E2cjy6 : W1cjy6); +assign Iwbjy6 = (~(M2cjy6 & U2cjy6)); +assign U2cjy6 = (~(C3cjy6 & K3cjy6)); +assign K3cjy6 = (S3cjy6 & A4cjy6); +assign A4cjy6 = (~(I4cjy6 & W1cjy6)); +assign I4cjy6 = (Q4cjy6 & Y4cjy6); +assign Q4cjy6 = (Y0cjy6 | O1cjy6); +assign S3cjy6 = (~(G5cjy6 & O1cjy6)); +assign O1cjy6 = (O5cjy6 ? Lgj7z6[49] : Lgj7z6[52]); +assign O5cjy6 = (!W5cjy6); +assign G5cjy6 = (Y0cjy6 & Y4cjy6); +assign Y4cjy6 = (~(Kzbjy6 & E6cjy6)); +assign Y0cjy6 = (M6cjy6 ? Oiy7x6 : Viy7x6); +assign C3cjy6 = (Qwbjy6 & U6cjy6); +assign U6cjy6 = (E6cjy6 | Kzbjy6); +assign Kzbjy6 = (M6cjy6 ? Lgj7z6[59] : Lgj7z6[56]); +assign E6cjy6 = (!Szbjy6); +assign Szbjy6 = (W5cjy6 ? Lgj7z6[53] : Lgj7z6[50]); +assign Qwbjy6 = (C7cjy6 & K7cjy6); +assign K7cjy6 = (~(S7cjy6 & Namiw6)); +assign Namiw6 = (~(G5j7z6[16] & Rqmiw6)); +assign C7cjy6 = (A8cjy6 | G5j7z6[17]); +assign M2cjy6 = (~(Uiajy6 & Eiajy6)); +assign Uiajy6 = (!Txniw6); +assign E2cjy6 = (W5cjy6 ? Ccy7x6 : Jcy7x6); +assign W5cjy6 = (I8cjy6 & G5j7z6[17]); +assign I8cjy6 = (~(Q8cjy6 | S7cjy6)); +assign S7cjy6 = (Nuniw6 & Czajy6); +assign Q8cjy6 = (Uly7x6 & A8cjy6); +assign A8cjy6 = (G5j7z6[16] & Y8cjy6); +assign Y8cjy6 = (~(Ao2jy6 & Czajy6)); +assign Uly7x6 = (G9cjy6 & O9cjy6); +assign O9cjy6 = (~(Lgj7z6[50] & Mx38x6)); +assign G9cjy6 = (W9cjy6 & Eacjy6); +assign Eacjy6 = (~(Macjy6 & Uacjy6)); +assign Uacjy6 = (Cbcjy6 & Ccy7x6); +assign Macjy6 = (Lgj7z6[48] & Kbcjy6); +assign Kbcjy6 = (~(Lgj7z6[52] & Lky7x6)); +assign Lky7x6 = (!Lgj7z6[49]); +assign W9cjy6 = (~(Sbcjy6 & Lgj7z6[49])); +assign Sbcjy6 = (Cbcjy6 & Sky7x6); +assign Sky7x6 = (!Lgj7z6[52]); +assign Cbcjy6 = (Mx38x6 | Lgj7z6[50]); +assign Mx38x6 = (!Lgj7z6[53]); +assign Ccy7x6 = (!Lgj7z6[51]); +assign Jcy7x6 = (!Lgj7z6[48]); +assign W1cjy6 = (M6cjy6 ? Ygy7x6 : Fhy7x6); +assign M6cjy6 = (Txniw6 & Accjy6); +assign Accjy6 = (Xjy7x6 | Eiajy6); +assign Eiajy6 = (~(G5j7z6[18] & Iccjy6)); +assign Iccjy6 = (~(Jfmiw6 & Czajy6)); +assign Xjy7x6 = (~(Qccjy6 & Yccjy6)); +assign Yccjy6 = (~(Lgj7z6[56] & J648x6)); +assign Qccjy6 = (Gdcjy6 & Odcjy6); +assign Odcjy6 = (~(Wdcjy6 & Eecjy6)); +assign Eecjy6 = (Mecjy6 & Ygy7x6); +assign Wdcjy6 = (Lgj7z6[54] & Uecjy6); +assign Uecjy6 = (~(Lgj7z6[58] & Viy7x6)); +assign Viy7x6 = (!Lgj7z6[55]); +assign Gdcjy6 = (~(Cfcjy6 & Lgj7z6[55])); +assign Cfcjy6 = (Mecjy6 & Oiy7x6); +assign Oiy7x6 = (!Lgj7z6[58]); +assign Mecjy6 = (J648x6 | Lgj7z6[56]); +assign J648x6 = (!Lgj7z6[59]); +assign Txniw6 = (G5j7z6[19] & Kfcjy6); +assign Kfcjy6 = (~(Czajy6 & Cn2jy6)); +assign Ygy7x6 = (!Lgj7z6[57]); +assign Fhy7x6 = (!Lgj7z6[54]); +assign Cnajy6 = (Uybjy6 ? Agcjy6 : Sfcjy6); +assign Agcjy6 = (!Igcjy6); +assign Cvbjy6 = (Cjajy6 | Kjajy6); +assign Uubjy6 = (Qgcjy6 & Uybjy6); +assign Uybjy6 = (~(Ygcjy6 & Kjajy6)); +assign Kjajy6 = (~(Ghcjy6 & Ohcjy6)); +assign Ohcjy6 = (~(G5j7z6[23] & Ua5jy6)); +assign Ghcjy6 = (Whcjy6 & Eicjy6); +assign Eicjy6 = (P43nv6 | Czajy6); +assign P43nv6 = (Z7oiw6 & Gomiw6); +assign Gomiw6 = (!G5j7z6[22]); +assign Z7oiw6 = (!G5j7z6[23]); +assign Whcjy6 = (~(G5j7z6[22] & Ac5jy6)); +assign Ygcjy6 = (~(Micjy6 & Uicjy6)); +assign Uicjy6 = (Cjcjy6 & Cjajy6); +assign Cjajy6 = (~(Kjcjy6 & Sjcjy6)); +assign Sjcjy6 = (~(G5j7z6[21] & Wd5jy6)); +assign Kjcjy6 = (Akcjy6 & Ikcjy6); +assign Ikcjy6 = (~(T63nv6 & Inj7x6)); +assign Inj7x6 = (!Czajy6); +assign T63nv6 = (~(Y3oiw6 & Mkmiw6)); +assign Mkmiw6 = (!G5j7z6[20]); +assign Y3oiw6 = (!G5j7z6[21]); +assign Akcjy6 = (~(G5j7z6[20] & Ue5jy6)); +assign Cjcjy6 = (~(Qkcjy6 & Ykcjy6)); +assign Ykcjy6 = (Gdajy6 ? May7x6 : Tay7x6); +assign May7x6 = (!Lgj7z6[66]); +assign Qkcjy6 = (Glcjy6 & Olcjy6); +assign Olcjy6 = (Sfcjy6 | Igcjy6); +assign Micjy6 = (Wlcjy6 & Emcjy6); +assign Emcjy6 = (~(Mmcjy6 & Igcjy6)); +assign Igcjy6 = (Umcjy6 ? Lgj7z6[64] : Lgj7z6[61]); +assign Mmcjy6 = (Sfcjy6 & Glcjy6); +assign Glcjy6 = (Czbjy6 | Eybjy6); +assign Sfcjy6 = (Gdajy6 ? Oj48x6 : Cncjy6); +assign Wlcjy6 = (~(Eybjy6 & Czbjy6)); +assign Czbjy6 = (Gdajy6 ? Ery7x6 : Xqy7x6); +assign Gdajy6 = (~(Kncjy6 & G5j7z6[23])); +assign Kncjy6 = (Sncjy6 & Aocjy6); +assign Aocjy6 = (~(Iocjy6 & Nsy7x6)); +assign Nsy7x6 = (Qocjy6 & Yocjy6); +assign Yocjy6 = (~(Lgj7z6[68] & Xqy7x6)); +assign Qocjy6 = (Gpcjy6 & Opcjy6); +assign Opcjy6 = (~(Wpcjy6 & Eqcjy6)); +assign Eqcjy6 = (Mqcjy6 & Tay7x6); +assign Tay7x6 = (!Lgj7z6[69]); +assign Mqcjy6 = (~(Lgj7z6[70] & Oj48x6)); +assign Oj48x6 = (!Lgj7z6[67]); +assign Wpcjy6 = (Lgj7z6[66] & Uqcjy6); +assign Gpcjy6 = (~(Crcjy6 & Lgj7z6[67])); +assign Crcjy6 = (Uqcjy6 & Cncjy6); +assign Cncjy6 = (!Lgj7z6[70]); +assign Uqcjy6 = (~(Lgj7z6[71] & Ery7x6)); +assign Iocjy6 = (G5j7z6[22] & Krcjy6); +assign Krcjy6 = (~(Czajy6 & Rphov6)); +assign Sncjy6 = (~(J6oiw6 & Czajy6)); +assign Ery7x6 = (!Lgj7z6[68]); +assign Xqy7x6 = (!Lgj7z6[71]); +assign Eybjy6 = (Umcjy6 ? Lgj7z6[65] : Lgj7z6[62]); +assign Qgcjy6 = (Umcjy6 ? Lgj7z6[63] : Lgj7z6[60]); +assign Umcjy6 = (Srcjy6 & G5j7z6[21]); +assign Srcjy6 = (Ascjy6 & Iscjy6); +assign Iscjy6 = (~(Qscjy6 & Duy7x6)); +assign Duy7x6 = (Yscjy6 & Gtcjy6); +assign Gtcjy6 = (~(Lgj7z6[62] & Lry7x6)); +assign Lry7x6 = (!Lgj7z6[65]); +assign Yscjy6 = (Otcjy6 & Wtcjy6); +assign Wtcjy6 = (~(Eucjy6 & Mucjy6)); +assign Mucjy6 = (~(Uucjy6 | Lgj7z6[63])); +assign Eucjy6 = (Lgj7z6[60] & Cvcjy6); +assign Cvcjy6 = (~(Lgj7z6[64] & Gw7iw6)); +assign Gw7iw6 = (!Lgj7z6[61]); +assign Otcjy6 = (~(Kvcjy6 & Lgj7z6[61])); +assign Kvcjy6 = (~(Uucjy6 | Lgj7z6[64])); +assign Uucjy6 = (Lgj7z6[65] & Sh7iw6); +assign Sh7iw6 = (!Lgj7z6[62]); +assign Qscjy6 = (G5j7z6[20] & Svcjy6); +assign Svcjy6 = (~(Cshov6 & Czajy6)); +assign Ascjy6 = (~(I2oiw6 & Czajy6)); +assign Czajy6 = (Awcjy6 & Xxjov6); +assign I87jy6 = (Wp4jy6 ? Qwcjy6 : Iwcjy6); +assign Wp4jy6 = (~(Ywcjy6 & Gxcjy6)); +assign Gxcjy6 = (~(Oxcjy6 & Wxcjy6)); +assign Wxcjy6 = (~(Eycjy6 | Op4jy6)); +assign Op4jy6 = (Mycjy6 & Gh2jy6); +assign Mycjy6 = (C74jy6 & Uycjy6); +assign C74jy6 = (Czcjy6 & Kzcjy6); +assign Kzcjy6 = (~(Szcjy6 | A0djy6)); +assign Czcjy6 = (~(I0djy6 | Q0djy6)); +assign Eycjy6 = (Od7jy6 & Y0djy6); +assign Y0djy6 = (~(G1djy6 & O1djy6)); +assign O1djy6 = (Qwcjy6 | W1djy6); +assign Od7jy6 = (U2djy6 ? M2djy6 : E2djy6); +assign M2djy6 = (!C3djy6); +assign Oxcjy6 = (K3djy6 & S3djy6); +assign S3djy6 = (G1djy6 | Qwcjy6); +assign G1djy6 = (Gd7jy6 | W1djy6); +assign W1djy6 = (~(A4djy6 | Ag7jy6)); +assign Gd7jy6 = (Y4djy6 ? Q4djy6 : I4djy6); +assign I4djy6 = (!G5djy6); +assign K3djy6 = (~(Ag7jy6 & A4djy6)); +assign A4djy6 = (!Sf7jy6); +assign Sf7jy6 = (E6djy6 ? W5djy6 : O5djy6); +assign W5djy6 = (M6djy6 & U6djy6); +assign Ag7jy6 = (U2djy6 ? K7djy6 : C7djy6); +assign C7djy6 = (!S7djy6); +assign Ywcjy6 = (K74jy6 | M64jy6); +assign Qwcjy6 = (Y4djy6 ? I8djy6 : A8djy6); +assign Y4djy6 = (!E6djy6); +assign E6djy6 = (Q8djy6 & Y8djy6); +assign Y8djy6 = (~(G9djy6 & O9djy6)); +assign O9djy6 = (O5djy6 | W9djy6); +assign G9djy6 = (Eadjy6 & Madjy6); +assign Madjy6 = (~(Uadjy6 & M6djy6)); +assign M6djy6 = (Cbdjy6 | Kbdjy6); +assign Uadjy6 = (Sbdjy6 & U6djy6); +assign U6djy6 = (~(Gaj7z6[2] & Cbdjy6)); +assign Sbdjy6 = (~(W9djy6 & O5djy6)); +assign O5djy6 = (Qcdjy6 ? Icdjy6 : Acdjy6); +assign Acdjy6 = (~(Uycjy6 & Gx08x6)); +assign W9djy6 = (~(Ycdjy6 | Gddjy6)); +assign Gddjy6 = (~(G5djy6 | Q4djy6)); +assign Ycdjy6 = (~(I8djy6 | Oddjy6)); +assign Oddjy6 = (Q4djy6 & G5djy6); +assign G5djy6 = (Eedjy6 ? Wddjy6 : Gaj7z6[1]); +assign Q4djy6 = (Qcdjy6 ? Uedjy6 : Medjy6); +assign Uedjy6 = (!Cfdjy6); +assign Eadjy6 = (~(Kfdjy6 & Gh2jy6)); +assign Kfdjy6 = (Uycjy6 & Sfdjy6); +assign Q8djy6 = (Q0djy6 | Szcjy6); +assign I8djy6 = (Qcdjy6 ? Igdjy6 : Agdjy6); +assign Qcdjy6 = (!Sfdjy6); +assign Sfdjy6 = (~(Qgdjy6 & Ygdjy6)); +assign Ygdjy6 = (~(Ghdjy6 & Ohdjy6)); +assign Ohdjy6 = (~(Uycjy6 & Whdjy6)); +assign Whdjy6 = (~(Za2nv6 & Eidjy6)); +assign Eidjy6 = (~(Midjy6 & Gx08x6)); +assign Midjy6 = (~(Uidjy6 & Cjdjy6)); +assign Cjdjy6 = (Cfdjy6 | Xg18x6); +assign Za2nv6 = (!Gh2jy6); +assign Gh2jy6 = (Kjdjy6 & Giliw6); +assign Kjdjy6 = (!Vs98x6); +assign Ghdjy6 = (~(Icdjy6 & Sjdjy6)); +assign Sjdjy6 = (~(Akdjy6 & Uidjy6)); +assign Uidjy6 = (~(Igdjy6 & Ikdjy6)); +assign Ikdjy6 = (~(Cfdjy6 & Medjy6)); +assign Medjy6 = (S74jy6 | Xg18x6); +assign S74jy6 = (!Uycjy6); +assign Akdjy6 = (~(Uycjy6 & Qkdjy6)); +assign Qkdjy6 = (~(Ykdjy6 & Cfdjy6)); +assign Cfdjy6 = (Oldjy6 ? Tcj7z6[1] : Gldjy6); +assign Ykdjy6 = (!Gx08x6); +assign Icdjy6 = (Oldjy6 ? Zw08x6 : Wldjy6); +assign Zw08x6 = (!Tcj7z6[2]); +assign Qgdjy6 = (I0djy6 | A0djy6); +assign Igdjy6 = (Oldjy6 ? F018x6 : Emdjy6); +assign Oldjy6 = (A0djy6 & Mmdjy6); +assign Mmdjy6 = (~(I0djy6 & Umdjy6)); +assign Umdjy6 = (~(Cndjy6 & Kndjy6)); +assign Kndjy6 = (~(Tcj7z6[2] & Wldjy6)); +assign Cndjy6 = (~(Sndjy6 & Aodjy6)); +assign Aodjy6 = (~(Gldjy6 & Ub18x6)); +assign Sndjy6 = (Iodjy6 & Qodjy6); +assign Qodjy6 = (~(Yodjy6 & Gpdjy6)); +assign Gpdjy6 = (Ub18x6 | Gldjy6); +assign Gldjy6 = (Opdjy6 ? Ffj7z6[1] : Zdj7z6[1]); +assign Ub18x6 = (!Tcj7z6[1]); +assign Iodjy6 = (Wldjy6 | Tcj7z6[2]); +assign Wldjy6 = (Opdjy6 ? Eqdjy6 : Wpdjy6); +assign I0djy6 = (~(Mqdjy6 & Uqdjy6)); +assign Uqdjy6 = (~(Z3j7z6[1] & Wd5jy6)); +assign Mqdjy6 = (Crdjy6 & Krdjy6); +assign Krdjy6 = (H73nv6 | H2m7x6); +assign H73nv6 = (R0m7x6 & Bvhov6); +assign Bvhov6 = (!Z3j7z6[0]); +assign R0m7x6 = (!Z3j7z6[1]); +assign Crdjy6 = (~(Z3j7z6[0] & Ue5jy6)); +assign A0djy6 = (Z3j7z6[3] & Srdjy6); +assign Srdjy6 = (Ac5jy6 | Asdjy6); +assign F018x6 = (!Tcj7z6[0]); +assign Emdjy6 = (!Yodjy6); +assign Yodjy6 = (Opdjy6 ? Ffj7z6[0] : Zdj7z6[0]); +assign Opdjy6 = (~(Isdjy6 & Z3j7z6[1])); +assign Isdjy6 = (Qsdjy6 & Ysdjy6); +assign Ysdjy6 = (~(Gtdjy6 & Qg18x6)); +assign Qg18x6 = (Otdjy6 & Wtdjy6); +assign Wtdjy6 = (~(Ffj7z6[2] & Wpdjy6)); +assign Wpdjy6 = (!Zdj7z6[2]); +assign Otdjy6 = (Eudjy6 & Mudjy6); +assign Mudjy6 = (~(Uudjy6 & Cvdjy6)); +assign Cvdjy6 = (~(Kvdjy6 | Zdj7z6[0])); +assign Kvdjy6 = (~(Svdjy6 | Ffj7z6[1])); +assign Uudjy6 = (Ffj7z6[0] & Awdjy6); +assign Eudjy6 = (~(Iwdjy6 & Ffj7z6[1])); +assign Iwdjy6 = (Awdjy6 & Svdjy6); +assign Svdjy6 = (!Zdj7z6[1]); +assign Awdjy6 = (~(Zdj7z6[2] & Eqdjy6)); +assign Eqdjy6 = (!Ffj7z6[2]); +assign Gtdjy6 = (Z3j7z6[0] & Qwdjy6); +assign Qwdjy6 = (Ue5jy6 | Asdjy6); +assign Qsdjy6 = (Wd5jy6 | Asdjy6); +assign Agdjy6 = (~(Uycjy6 & M018x6)); +assign Uycjy6 = (Ywdjy6 & Gxdjy6); +assign Gxdjy6 = (~(Fjadt6 & Uvgov6)); +assign Uvgov6 = (Vs98x6 | Giliw6); +assign Vs98x6 = (~(Oxdjy6 & Me3jy6)); +assign Oxdjy6 = (H2m7x6 & Flliw6); +assign Ywdjy6 = (~(X3get6 & N4fov6)); +assign N4fov6 = (~(Cn2jy6 & H2m7x6)); +assign A8djy6 = (!Wxdjy6); +assign Wxdjy6 = (Eedjy6 ? Eydjy6 : Gaj7z6[0]); +assign Eedjy6 = (!Cbdjy6); +assign Cbdjy6 = (~(Q0djy6 & Mydjy6)); +assign Mydjy6 = (~(Uydjy6 & Szcjy6)); +assign Szcjy6 = (Z3j7z6[7] & Czdjy6); +assign Czdjy6 = (Pfk7x6 | Asdjy6); +assign Uydjy6 = (Kzdjy6 & Szdjy6); +assign Szdjy6 = (~(Kbdjy6 & A0ejy6)); +assign A0ejy6 = (~(I0ejy6 & Q0ejy6)); +assign I0ejy6 = (Y0ejy6 & Cv08x6); +assign Cv08x6 = (!Gaj7z6[2]); +assign Kbdjy6 = (O1ejy6 ? G1ejy6 : Z318x6); +assign Z318x6 = (!Nbj7z6[2]); +assign Kzdjy6 = (~(Gaj7z6[2] & W1ejy6)); +assign W1ejy6 = (~(Q0ejy6 & Y0ejy6)); +assign Y0ejy6 = (Eydjy6 | E2ejy6); +assign E2ejy6 = (Wddjy6 & N418x6); +assign Q0ejy6 = (N418x6 | Wddjy6); +assign Wddjy6 = (O1ejy6 ? M2ejy6 : Nbj7z6[1]); +assign N418x6 = (!Gaj7z6[1]); +assign Q0djy6 = (~(U2ejy6 & C3ejy6)); +assign C3ejy6 = (~(Z3j7z6[8] & K3ejy6)); +assign Eydjy6 = (O1ejy6 ? S3ejy6 : Nbj7z6[0]); +assign O1ejy6 = (~(A4ejy6 | U2ejy6)); +assign U2ejy6 = (~(I4ejy6 | Q4ejy6)); +assign A4ejy6 = (Y4ejy6 & G5ejy6); +assign G5ejy6 = (O5ejy6 & W5ejy6); +assign W5ejy6 = (~(Nbj7z6[2] & G1ejy6)); +assign O5ejy6 = (E6ejy6 & M6ejy6); +assign M6ejy6 = (U6ejy6 | S3ejy6); +assign U6ejy6 = (~(C7ejy6 & K7ejy6)); +assign C7ejy6 = (S7ejy6 | Nbj7z6[1]); +assign E6ejy6 = (~(A8ejy6 & Nbj7z6[1])); +assign A8ejy6 = (S7ejy6 & K7ejy6); +assign K7ejy6 = (G1ejy6 | Nbj7z6[2]); +assign G1ejy6 = (I8ejy6 ? Q918x6 : X918x6); +assign S7ejy6 = (!M2ejy6); +assign M2ejy6 = (I8ejy6 ? Z8j7z6[1] : T7j7z6[1]); +assign Y4ejy6 = (Z3j7z6[8] & K3ejy6); +assign K3ejy6 = (Qpl7x6 | Asdjy6); +assign S3ejy6 = (I8ejy6 ? Z8j7z6[0] : T7j7z6[0]); +assign I8ejy6 = (~(Q4ejy6 & Q8ejy6)); +assign Q8ejy6 = (~(Sa18x6 & I4ejy6)); +assign I4ejy6 = (Z3j7z6[10] & Y8ejy6); +assign Y8ejy6 = (Erk7x6 | Asdjy6); +assign Sa18x6 = (G9ejy6 & O9ejy6); +assign O9ejy6 = (~(Z8j7z6[2] & X918x6)); +assign X918x6 = (!T7j7z6[2]); +assign G9ejy6 = (W9ejy6 & Eaejy6); +assign Eaejy6 = (~(Maejy6 & Z8j7z6[1])); +assign Maejy6 = (Uaejy6 & Cbejy6); +assign W9ejy6 = (~(Kbejy6 & Sbejy6)); +assign Sbejy6 = (~(Acejy6 | T7j7z6[0])); +assign Acejy6 = (~(Cbejy6 | Z8j7z6[1])); +assign Cbejy6 = (!T7j7z6[1]); +assign Kbejy6 = (Z8j7z6[0] & Uaejy6); +assign Uaejy6 = (~(T7j7z6[2] & Q918x6)); +assign Q918x6 = (!Z8j7z6[2]); +assign Q4ejy6 = (Z3j7z6[11] & Icejy6); +assign Icejy6 = (Ue6jy6 | Asdjy6); +assign Asdjy6 = (!H2m7x6); +assign H2m7x6 = (Sz3jy6 & Xxjov6); +assign Iwcjy6 = (~(Qcejy6 & Ycejy6)); +assign Ycejy6 = (~(Gdejy6 & Odejy6)); +assign Odejy6 = (Meejy6 ? Eeejy6 : Wdejy6); +assign Eeejy6 = (Ueejy6 ? Bd08x6 : Zg8iw6); +assign Zg8iw6 = (!Lgj7z6[12]); +assign Gdejy6 = (~(Cfejy6 | U2djy6)); +assign Qcejy6 = (U2djy6 ? Sfejy6 : Kfejy6); +assign U2djy6 = (Agejy6 & M64jy6); +assign M64jy6 = (~(Igejy6 & Qgejy6)); +assign Qgejy6 = (Ygejy6 & Ghejy6); +assign Ygejy6 = (~(Dii7x6 | Emi7x6)); +assign Igejy6 = (~(Ohejy6 | Whejy6)); +assign Agejy6 = (~(Eiejy6 & Miejy6)); +assign Miejy6 = (Uiejy6 & K74jy6); +assign K74jy6 = (~(Cjejy6 & Kjejy6)); +assign Kjejy6 = (~(Sjejy6 | Akejy6)); +assign Cjejy6 = (~(Ikejy6 | Qkejy6)); +assign Uiejy6 = (E2djy6 | Ykejy6); +assign Ykejy6 = (Glejy6 & Olejy6); +assign Olejy6 = (Sfejy6 | Wlejy6); +assign E2djy6 = (Cfejy6 ? Mmejy6 : Emejy6); +assign Emejy6 = (Meejy6 ? Cnejy6 : Umejy6); +assign Eiejy6 = (Knejy6 & Snejy6); +assign Snejy6 = (Glejy6 | Sfejy6); +assign Glejy6 = (C3djy6 | Wlejy6); +assign Wlejy6 = (~(S7djy6 | K7djy6)); +assign C3djy6 = (Qoejy6 ? Ioejy6 : Aoejy6); +assign Knejy6 = (~(K7djy6 & S7djy6)); +assign S7djy6 = (Cfejy6 ? Gpejy6 : Yoejy6); +assign K7djy6 = (Qoejy6 ? Wpejy6 : Opejy6); +assign Sfejy6 = (Qoejy6 ? Mqejy6 : Eqejy6); +assign Qoejy6 = (Uqejy6 & Crejy6); +assign Crejy6 = (~(Krejy6 & Srejy6)); +assign Srejy6 = (Ohejy6 | Asejy6); +assign Krejy6 = (Isejy6 & Qsejy6); +assign Qsejy6 = (~(Wpejy6 & Ysejy6)); +assign Ysejy6 = (~(Opejy6 & Gtejy6)); +assign Wpejy6 = (Euejy6 ? Wtejy6 : Otejy6); +assign Wtejy6 = (!Muejy6); +assign Isejy6 = (Gtejy6 | Opejy6); +assign Opejy6 = (Asejy6 ? Cvejy6 : Uuejy6); +assign Uuejy6 = (!Kvejy6); +assign Gtejy6 = (Svejy6 | Awejy6); +assign Awejy6 = (~(Aoejy6 | Eqejy6)); +assign Svejy6 = (Ioejy6 & Iwejy6); +assign Iwejy6 = (~(Eqejy6 & Aoejy6)); +assign Aoejy6 = (Asejy6 ? Ywejy6 : Qwejy6); +assign Ywejy6 = (!Gxejy6); +assign Ioejy6 = (Euejy6 ? Wxejy6 : Oxejy6); +assign Uqejy6 = (~(Eyejy6 & Ghejy6)); +assign Eyejy6 = (!Whejy6); +assign Mqejy6 = (Euejy6 ? Uyejy6 : Myejy6); +assign Euejy6 = (Czejy6 | Ghejy6); +assign Ghejy6 = (Kzejy6 & Szejy6); +assign Szejy6 = (~(G5j7z6[15] & Ue6jy6)); +assign Ue6jy6 = (!V6i7x6); +assign Kzejy6 = (A0fjy6 & I0fjy6); +assign I0fjy6 = (Xu2nv6 | Q0fjy6); +assign Xu2nv6 = (M4j7x6 & Qzi7x6); +assign Qzi7x6 = (!G5j7z6[14]); +assign M4j7x6 = (!G5j7z6[15]); +assign A0fjy6 = (~(G5j7z6[14] & Erk7x6)); +assign Erk7x6 = (!P3i7x6); +assign Czejy6 = (Y0fjy6 & G1fjy6); +assign G1fjy6 = (O1fjy6 & Whejy6); +assign Whejy6 = (~(W1fjy6 & E2fjy6)); +assign E2fjy6 = (~(G5j7z6[13] & Ktl7x6)); +assign Ktl7x6 = (!Jrj7x6); +assign W1fjy6 = (M2fjy6 & U2fjy6); +assign U2fjy6 = (~(Dy2nv6 & B2j7x6)); +assign Dy2nv6 = (~(Dwi7x6 & Csi7x6)); +assign Csi7x6 = (!G5j7z6[12]); +assign Dwi7x6 = (!G5j7z6[13]); +assign M2fjy6 = (~(G5j7z6[12] & Qpl7x6)); +assign O1fjy6 = (~(C3fjy6 & K3fjy6)); +assign K3fjy6 = (S3fjy6 ? Ki38x6 : Gn38x6); +assign Ki38x6 = (!Lgj7z6[42]); +assign C3fjy6 = (A4fjy6 & I4fjy6); +assign I4fjy6 = (Q4fjy6 | Wxejy6); +assign Y0fjy6 = (Y4fjy6 & G5fjy6); +assign G5fjy6 = (~(O5fjy6 & Wxejy6)); +assign Wxejy6 = (W5fjy6 ? Lgj7z6[40] : Lgj7z6[37]); +assign O5fjy6 = (Q4fjy6 & A4fjy6); +assign A4fjy6 = (Otejy6 | Muejy6); +assign Q4fjy6 = (!Oxejy6); +assign Oxejy6 = (S3fjy6 ? Lgj7z6[43] : Lgj7z6[46]); +assign Y4fjy6 = (~(Muejy6 & Otejy6)); +assign Otejy6 = (S3fjy6 ? Ak38x6 : Po38x6); +assign Muejy6 = (W5fjy6 ? Lgj7z6[41] : Lgj7z6[38]); +assign Uyejy6 = (W5fjy6 ? Lgj7z6[39] : Lgj7z6[36]); +assign W5fjy6 = (E6fjy6 & G5j7z6[13]); +assign E6fjy6 = (M6fjy6 & U6fjy6); +assign U6fjy6 = (~(C7fjy6 & Psz7x6)); +assign Psz7x6 = (K7fjy6 & S7fjy6); +assign S7fjy6 = (~(Lgj7z6[38] & Qe38x6)); +assign K7fjy6 = (A8fjy6 & I8fjy6); +assign I8fjy6 = (~(Q8fjy6 & Y8fjy6)); +assign Y8fjy6 = (G9fjy6 & Hd38x6); +assign Hd38x6 = (!Lgj7z6[39]); +assign Q8fjy6 = (Lgj7z6[36] & O9fjy6); +assign O9fjy6 = (~(Lgj7z6[40] & N938x6)); +assign N938x6 = (!Lgj7z6[37]); +assign A8fjy6 = (~(W9fjy6 & Lgj7z6[37])); +assign W9fjy6 = (G9fjy6 & Ef38x6); +assign Ef38x6 = (!Lgj7z6[40]); +assign G9fjy6 = (Qe38x6 | Lgj7z6[38]); +assign Qe38x6 = (!Lgj7z6[41]); +assign C7fjy6 = (G5j7z6[12] & Eafjy6); +assign Eafjy6 = (~(Q0fjy6 & L1i7x6)); +assign M6fjy6 = (~(Jrj7x6 & Q0fjy6)); +assign Myejy6 = (S3fjy6 ? Lgj7z6[42] : Lgj7z6[45]); +assign S3fjy6 = (~(Mafjy6 & G5j7z6[15])); +assign Mafjy6 = (Uafjy6 & Cbfjy6); +assign Cbfjy6 = (~(Kbfjy6 & Grz7x6)); +assign Grz7x6 = (Sbfjy6 & Acfjy6); +assign Acfjy6 = (~(Icfjy6 & Lgj7z6[43])); +assign Icfjy6 = (Qcfjy6 & Qpz7x6); +assign Qpz7x6 = (!Lgj7z6[46]); +assign Sbfjy6 = (Ycfjy6 & Gdfjy6); +assign Gdfjy6 = (~(Odfjy6 & Wdfjy6)); +assign Wdfjy6 = (Eefjy6 & Gn38x6); +assign Gn38x6 = (!Lgj7z6[45]); +assign Eefjy6 = (~(Lgj7z6[46] & Xpz7x6)); +assign Xpz7x6 = (!Lgj7z6[43]); +assign Odfjy6 = (Lgj7z6[42] & Qcfjy6); +assign Qcfjy6 = (~(Lgj7z6[47] & Ak38x6)); +assign Ak38x6 = (!Lgj7z6[44]); +assign Ycfjy6 = (~(Lgj7z6[44] & Po38x6)); +assign Po38x6 = (!Lgj7z6[47]); +assign Kbfjy6 = (G5j7z6[14] & Mefjy6); +assign Mefjy6 = (~(Q0fjy6 & P3i7x6)); +assign Uafjy6 = (~(Q0fjy6 & V6i7x6)); +assign Eqejy6 = (!Uefjy6); +assign Uefjy6 = (Asejy6 ? Kffjy6 : Cffjy6); +assign Asejy6 = (Sffjy6 & Agfjy6); +assign Agfjy6 = (~(Igfjy6 & Qgfjy6)); +assign Qgfjy6 = (Ygfjy6 & Ohejy6); +assign Ohejy6 = (~(Ghfjy6 & U9i7x6)); +assign Ghfjy6 = (~(G5j7z6[9] & Ohfjy6)); +assign Ygfjy6 = (~(Whfjy6 & Kffjy6)); +assign Whfjy6 = (Eifjy6 & Mifjy6); +assign Eifjy6 = (Gxejy6 | Qwejy6); +assign Igfjy6 = (Uifjy6 & Cjfjy6); +assign Cjfjy6 = (~(Kjfjy6 & Qwejy6)); +assign Qwejy6 = (Sjfjy6 ? Lgj7z6[28] : Lgj7z6[25]); +assign Kjfjy6 = (Gxejy6 & Mifjy6); +assign Mifjy6 = (Cvejy6 | Kvejy6); +assign Gxejy6 = (Akfjy6 ? Wzz7x6 : Pzz7x6); +assign Uifjy6 = (~(Kvejy6 & Cvejy6)); +assign Cvejy6 = (Akfjy6 ? Q038x6 : Y438x6); +assign Kvejy6 = (Sjfjy6 ? Lgj7z6[29] : Lgj7z6[26]); +assign Sffjy6 = (Emi7x6 | Dii7x6); +assign Kffjy6 = (Akfjy6 ? Lxz7x6 : Exz7x6); +assign Akfjy6 = (~(Emi7x6 & Ikfjy6)); +assign Ikfjy6 = (~(Dii7x6 & Y008x6)); +assign Y008x6 = (Qkfjy6 & Ykfjy6); +assign Ykfjy6 = (~(Lgj7z6[32] & Y438x6)); +assign Y438x6 = (!Lgj7z6[35]); +assign Qkfjy6 = (Glfjy6 & Olfjy6); +assign Olfjy6 = (~(Wlfjy6 & Emfjy6)); +assign Emfjy6 = (Mmfjy6 & Exz7x6); +assign Mmfjy6 = (~(Lgj7z6[34] & Wzz7x6)); +assign Wzz7x6 = (!Lgj7z6[31]); +assign Wlfjy6 = (Lgj7z6[30] & Umfjy6); +assign Glfjy6 = (~(Cnfjy6 & Lgj7z6[31])); +assign Cnfjy6 = (Umfjy6 & Pzz7x6); +assign Pzz7x6 = (!Lgj7z6[34]); +assign Umfjy6 = (~(Lgj7z6[35] & Q038x6)); +assign Q038x6 = (!Lgj7z6[32]); +assign Dii7x6 = (G5j7z6[10] & Knfjy6); +assign Knfjy6 = (~(Q0fjy6 & Nfj7x6)); +assign Emi7x6 = (G5j7z6[11] & Snfjy6); +assign Snfjy6 = (~(Q0fjy6 & Hzh7x6)); +assign Lxz7x6 = (!Lgj7z6[30]); +assign Exz7x6 = (!Lgj7z6[33]); +assign Cffjy6 = (Sjfjy6 ? Gkz7x6 : Eg8iw6); +assign Sjfjy6 = (Aofjy6 & G5j7z6[9]); +assign Aofjy6 = (Iofjy6 & Ohfjy6); +assign Ohfjy6 = (B2j7x6 | U7k7x6); +assign Iofjy6 = (U9i7x6 | Bzz7x6); +assign Bzz7x6 = (~(Qofjy6 & Yofjy6)); +assign Yofjy6 = (~(Lgj7z6[26] & Uv28x6)); +assign Uv28x6 = (!Lgj7z6[29]); +assign Qofjy6 = (Gpfjy6 & Opfjy6); +assign Opfjy6 = (~(Wpfjy6 & Eqfjy6)); +assign Eqfjy6 = (Mqfjy6 & Gkz7x6); +assign Mqfjy6 = (~(Lgj7z6[28] & Dy7iw6)); +assign Dy7iw6 = (!Lgj7z6[25]); +assign Wpfjy6 = (Lgj7z6[24] & Uqfjy6); +assign Gpfjy6 = (~(Crfjy6 & Lgj7z6[25])); +assign Crfjy6 = (Uqfjy6 & Zxz7x6); +assign Zxz7x6 = (!Lgj7z6[28]); +assign Uqfjy6 = (~(Lgj7z6[29] & Kk7iw6)); +assign Kk7iw6 = (!Lgj7z6[26]); +assign U9i7x6 = (~(G5j7z6[8] & Krfjy6)); +assign Krfjy6 = (~(Q0fjy6 & Uy2jy6)); +assign Gkz7x6 = (!Lgj7z6[27]); +assign Eg8iw6 = (!Lgj7z6[24]); +assign Kfejy6 = (~(Srfjy6 & Cfejy6)); +assign Cfejy6 = (~(Asfjy6 & Isfjy6)); +assign Isfjy6 = (~(Qsfjy6 & Ysfjy6)); +assign Ysfjy6 = (Qkejy6 | Gtfjy6); +assign Qsfjy6 = (Otfjy6 & Wtfjy6); +assign Wtfjy6 = (~(Eufjy6 & Mufjy6)); +assign Mufjy6 = (Gpejy6 | Uufjy6); +assign Eufjy6 = (Cvfjy6 & Kvfjy6); +assign Kvfjy6 = (~(Svfjy6 & Awfjy6)); +assign Awfjy6 = (Srfjy6 | Mmejy6); +assign Svfjy6 = (Meejy6 ? Qwfjy6 : Iwfjy6); +assign Cvfjy6 = (~(Mmejy6 & Srfjy6)); +assign Mmejy6 = (Gtfjy6 ? Gxfjy6 : Ywfjy6); +assign Otfjy6 = (~(Uufjy6 & Gpejy6)); +assign Gpejy6 = (Gtfjy6 ? Wxfjy6 : Oxfjy6); +assign Wxfjy6 = (!Eyfjy6); +assign Uufjy6 = (!Yoejy6); +assign Yoejy6 = (Meejy6 ? Uyfjy6 : Myfjy6); +assign Meejy6 = (~(Czfjy6 & Akejy6)); +assign Czfjy6 = (~(Kzfjy6 & Szfjy6)); +assign Szfjy6 = (A0gjy6 & Sjejy6); +assign A0gjy6 = (~(I0gjy6 & Wdejy6)); +assign Wdejy6 = (Q0gjy6 ? Ol28x6 : Sg28x6); +assign Sg28x6 = (!Lgj7z6[18]); +assign I0gjy6 = (Y0gjy6 & G1gjy6); +assign G1gjy6 = (~(Iwfjy6 & Cnejy6)); +assign Cnejy6 = (!Qwfjy6); +assign Iwfjy6 = (!Umejy6); +assign Kzfjy6 = (O1gjy6 & W1gjy6); +assign W1gjy6 = (~(E2gjy6 & Qwfjy6)); +assign Qwfjy6 = (Ueejy6 ? Lgj7z6[16] : Lgj7z6[13]); +assign E2gjy6 = (Umejy6 & Y0gjy6); +assign Y0gjy6 = (~(Myfjy6 & M2gjy6)); +assign Umejy6 = (Q0gjy6 ? En28x6 : Bi28x6); +assign O1gjy6 = (M2gjy6 | Myfjy6); +assign M2gjy6 = (!Uyfjy6); +assign Uyfjy6 = (Ueejy6 ? Lgj7z6[17] : Lgj7z6[14]); +assign Ueejy6 = (U2gjy6 & G5j7z6[5]); +assign U2gjy6 = (C3gjy6 & K3gjy6); +assign K3gjy6 = (~(S3gjy6 & Qh08x6)); +assign Qh08x6 = (A4gjy6 & I4gjy6); +assign I4gjy6 = (~(Lgj7z6[14] & Ff08x6)); +assign A4gjy6 = (Q4gjy6 & Y4gjy6); +assign Y4gjy6 = (~(G5gjy6 & O5gjy6)); +assign O5gjy6 = (W5gjy6 & Bd08x6); +assign Bd08x6 = (!Lgj7z6[15]); +assign G5gjy6 = (Lgj7z6[12] & E6gjy6); +assign E6gjy6 = (~(Lgj7z6[16] & Yy7iw6)); +assign Yy7iw6 = (!Lgj7z6[13]); +assign Q4gjy6 = (~(M6gjy6 & Lgj7z6[13])); +assign M6gjy6 = (W5gjy6 & Md28x6); +assign Md28x6 = (!Lgj7z6[16]); +assign W5gjy6 = (Ff08x6 | Lgj7z6[14]); +assign Ff08x6 = (!Lgj7z6[17]); +assign S3gjy6 = (G5j7z6[4] & U6gjy6); +assign U6gjy6 = (~(Cshov6 & Q0fjy6)); +assign C3gjy6 = (~(I2oiw6 & Q0fjy6)); +assign Myfjy6 = (Q0gjy6 ? Lgj7z6[23] : Lgj7z6[20]); +assign Q0gjy6 = (C7gjy6 & G5j7z6[7]); +assign C7gjy6 = (K7gjy6 & S7gjy6); +assign S7gjy6 = (~(A8gjy6 & Hg08x6)); +assign Hg08x6 = (I8gjy6 & Q8gjy6); +assign Q8gjy6 = (~(Lgj7z6[20] & Ke08x6)); +assign I8gjy6 = (Y8gjy6 & G9gjy6); +assign G9gjy6 = (~(O9gjy6 & W9gjy6)); +assign W9gjy6 = (Eagjy6 & Ol28x6); +assign Ol28x6 = (!Lgj7z6[21]); +assign O9gjy6 = (Lgj7z6[18] & Magjy6); +assign Magjy6 = (~(Lgj7z6[22] & Bi28x6)); +assign Bi28x6 = (!Lgj7z6[19]); +assign Y8gjy6 = (~(Uagjy6 & Lgj7z6[19])); +assign Uagjy6 = (Eagjy6 & En28x6); +assign En28x6 = (!Lgj7z6[22]); +assign Eagjy6 = (Ke08x6 | Lgj7z6[20]); +assign Ke08x6 = (!Lgj7z6[23]); +assign A8gjy6 = (G5j7z6[6] & Cbgjy6); +assign Cbgjy6 = (~(Q0fjy6 & Rphov6)); +assign K7gjy6 = (~(J6oiw6 & Q0fjy6)); +assign Asfjy6 = (Sjejy6 | Akejy6); +assign Akejy6 = (~(Kbgjy6 & Sbgjy6)); +assign Sbgjy6 = (~(G5j7z6[7] & Ua5jy6)); +assign Ua5jy6 = (!J6oiw6); +assign Kbgjy6 = (Acgjy6 & Icgjy6); +assign Icgjy6 = (~(M63nv6 & B2j7x6)); +assign B2j7x6 = (!Q0fjy6); +assign M63nv6 = (~(Vrniw6 & V7miw6)); +assign V7miw6 = (!G5j7z6[6]); +assign Vrniw6 = (!G5j7z6[7]); +assign Acgjy6 = (~(G5j7z6[6] & Ac5jy6)); +assign Ac5jy6 = (!Rphov6); +assign Sjejy6 = (~(Qcgjy6 & Ycgjy6)); +assign Ycgjy6 = (~(G5j7z6[5] & Wd5jy6)); +assign Wd5jy6 = (!I2oiw6); +assign Qcgjy6 = (Gdgjy6 & Odgjy6); +assign Odgjy6 = (F63nv6 | Q0fjy6); +assign F63nv6 = (Nnniw6 & B4miw6); +assign B4miw6 = (!G5j7z6[4]); +assign Nnniw6 = (!G5j7z6[5]); +assign Gdgjy6 = (~(G5j7z6[4] & Ue5jy6)); +assign Srfjy6 = (Gtfjy6 ? Eegjy6 : Wdgjy6); +assign Gtfjy6 = (Megjy6 & Ikejy6); +assign Ikejy6 = (~(Uegjy6 & Cfgjy6)); +assign Cfgjy6 = (~(G5j7z6[3] & Xdoiw6)); +assign Uegjy6 = (Kfgjy6 & Sfgjy6); +assign Sfgjy6 = (O73nv6 | Q0fjy6); +assign O73nv6 = (~(G5j7z6[3] | G5j7z6[2])); +assign Kfgjy6 = (~(G5j7z6[2] & Zumiw6)); +assign Megjy6 = (~(Aggjy6 & Iggjy6)); +assign Iggjy6 = (Qggjy6 & Qkejy6); +assign Qkejy6 = (~(Yggjy6 & Ghgjy6)); +assign Ghgjy6 = (~(G5j7z6[1] & Daoiw6)); +assign Yggjy6 = (Ohgjy6 & Whgjy6); +assign Whgjy6 = (V73nv6 | Q0fjy6); +assign V73nv6 = (~(G5j7z6[1] | G5j7z6[0])); +assign Ohgjy6 = (~(G5j7z6[0] & Rqmiw6)); +assign Qggjy6 = (~(Eigjy6 & Eegjy6)); +assign Eigjy6 = (Migjy6 & Uigjy6); +assign Uigjy6 = (Gxfjy6 | Cjgjy6); +assign Aggjy6 = (Kjgjy6 & Sjgjy6); +assign Sjgjy6 = (~(Akgjy6 & Cjgjy6)); +assign Cjgjy6 = (!Ywfjy6); +assign Ywfjy6 = (Ikgjy6 ? Co08x6 : Vn08x6); +assign Akgjy6 = (Gxfjy6 & Migjy6); +assign Migjy6 = (Eyfjy6 | Oxfjy6); +assign Gxfjy6 = (Qkgjy6 ? Zp08x6 : Sp08x6); +assign Qkgjy6 = (!Ykgjy6); +assign Kjgjy6 = (~(Oxfjy6 & Eyfjy6)); +assign Eyfjy6 = (Ykgjy6 ? I428x6 : A028x6); +assign Oxfjy6 = (Ikgjy6 ? Lgj7z6[5] : Lgj7z6[2]); +assign Eegjy6 = (Ykgjy6 ? Fm08x6 : Mm08x6); +assign Ykgjy6 = (Glgjy6 & G5j7z6[3]); +assign Glgjy6 = (Olgjy6 & Wlgjy6); +assign Wlgjy6 = (~(Emgjy6 & Br08x6)); +assign Br08x6 = (Mmgjy6 & Umgjy6); +assign Umgjy6 = (~(Lgj7z6[8] & I428x6)); +assign I428x6 = (!Lgj7z6[11]); +assign Mmgjy6 = (Cngjy6 & Kngjy6); +assign Kngjy6 = (~(Sngjy6 & Aogjy6)); +assign Aogjy6 = (Iogjy6 & Fm08x6); +assign Iogjy6 = (~(Lgj7z6[10] & Zp08x6)); +assign Zp08x6 = (!Lgj7z6[7]); +assign Sngjy6 = (Lgj7z6[6] & Qogjy6); +assign Cngjy6 = (~(Yogjy6 & Lgj7z6[7])); +assign Yogjy6 = (Qogjy6 & Sp08x6); +assign Sp08x6 = (!Lgj7z6[10]); +assign Qogjy6 = (~(Lgj7z6[11] & A028x6)); +assign A028x6 = (!Lgj7z6[8]); +assign Emgjy6 = (G5j7z6[2] & Gpgjy6); +assign Gpgjy6 = (~(Q0fjy6 & Jfmiw6)); +assign Olgjy6 = (~(Q0fjy6 & Cn2jy6)); +assign Fm08x6 = (!Lgj7z6[9]); +assign Mm08x6 = (!Lgj7z6[6]); +assign Wdgjy6 = (Ikgjy6 ? T808x6 : M808x6); +assign Ikgjy6 = (Opgjy6 & G5j7z6[1]); +assign Opgjy6 = (Wpgjy6 & Eqgjy6); +assign Eqgjy6 = (~(Mqgjy6 & Ep08x6)); +assign Ep08x6 = (Uqgjy6 & Crgjy6); +assign Crgjy6 = (~(Lgj7z6[2] & On08x6)); +assign Uqgjy6 = (Krgjy6 & Srgjy6); +assign Srgjy6 = (~(Asgjy6 & Isgjy6)); +assign Isgjy6 = (Qsgjy6 & T808x6); +assign Asgjy6 = (Lgj7z6[0] & Ysgjy6); +assign Ysgjy6 = (~(Lgj7z6[4] & Vn08x6)); +assign Vn08x6 = (!Lgj7z6[1]); +assign Krgjy6 = (~(Gtgjy6 & Lgj7z6[1])); +assign Gtgjy6 = (Qsgjy6 & Co08x6); +assign Co08x6 = (!Lgj7z6[4]); +assign Qsgjy6 = (On08x6 | Lgj7z6[2]); +assign On08x6 = (!Lgj7z6[5]); +assign Mqgjy6 = (G5j7z6[0] & Otgjy6); +assign Otgjy6 = (~(Q0fjy6 & Ao2jy6)); +assign Wpgjy6 = (~(Q0fjy6 & Nuniw6)); +assign Q0fjy6 = (Wtgjy6 & Xxjov6); +assign Xxjov6 = (!Nob7z6[8]); +assign T808x6 = (!Lgj7z6[3]); +assign M808x6 = (!Lgj7z6[0]); +assign A44jy6 = (Eugjy6 & Mugjy6); +assign Mugjy6 = (~(Uugjy6 & Cvgjy6)); +assign Cvgjy6 = (~(Q04jy6 & Kvgjy6)); +assign Q04jy6 = (!Y84jy6); +assign Uugjy6 = (Svgjy6 & J92nv6); +assign Svgjy6 = (~(Awgjy6 & H1m8v6)); +assign Awgjy6 = (Ppb7z6[7] & Iwgjy6); +assign Iwgjy6 = (~(Qwgjy6 & Y84jy6)); +assign Y84jy6 = (~(Ywgjy6 & Gxgjy6)); +assign Gxgjy6 = (~(H1m8v6 & Oxgjy6)); +assign Oxgjy6 = (~(Wxgjy6 & Eygjy6)); +assign Eygjy6 = (Mygjy6 & Uygjy6); +assign Uygjy6 = (~(Q0oiy6 & Gaj7z6[2])); +assign Mygjy6 = (~(Tcj7z6[2] & Cvniy6)); +assign Wxgjy6 = (Czgjy6 & Kzgjy6); +assign Kzgjy6 = (~(Ffj7z6[2] & Szgjy6)); +assign Czgjy6 = (~(Zdj7z6[2] & Gd2jy6)); +assign Ywgjy6 = (~(Lh18x6 & Pahov6)); +assign Pahov6 = (H1m8v6 & Nbj7z6[2]); +assign Qwgjy6 = (!Kvgjy6); +assign Kvgjy6 = (~(A0hjy6 & I0hjy6)); +assign I0hjy6 = (~(Q0hjy6 & E24jy6)); +assign E24jy6 = (!K34jy6); +assign Q0hjy6 = (Zyl8v6 & Ppb7z6[6]); +assign A0hjy6 = (~(Y0hjy6 & U24jy6)); +assign U24jy6 = (Gpu5z6 & Opu5z6); +assign Opu5z6 = (Wpu5z6 & Equ5z6); +assign Equ5z6 = (~(Tcj7z6[0] & Cvniy6)); +assign Wpu5z6 = (Mqu5z6 & Uqu5z6); +assign Uqu5z6 = (~(Lh18x6 & Nbj7z6[0])); +assign Mqu5z6 = (~(Q0oiy6 & Gaj7z6[0])); +assign Gpu5z6 = (Cru5z6 & Rwl8v6); +assign Cru5z6 = (Kru5z6 & Sru5z6); +assign Sru5z6 = (~(Ffj7z6[0] & Szgjy6)); +assign Kru5z6 = (~(Zdj7z6[0] & Gd2jy6)); +assign Y0hjy6 = (Ppb7z6[5] & Asu5z6); +assign Asu5z6 = (~(K34jy6 & I8oiy6)); +assign K34jy6 = (~(Isu5z6 & Qsu5z6)); +assign Qsu5z6 = (~(Zyl8v6 & Ysu5z6)); +assign Ysu5z6 = (~(Gtu5z6 & Otu5z6)); +assign Otu5z6 = (Wtu5z6 & Euu5z6); +assign Euu5z6 = (~(Q0oiy6 & Gaj7z6[1])); +assign Q0oiy6 = (!Q8ziy6); +assign Wtu5z6 = (~(Tcj7z6[1] & Cvniy6)); +assign Gtu5z6 = (Muu5z6 & Uuu5z6); +assign Uuu5z6 = (~(Ffj7z6[1] & Szgjy6)); +assign Muu5z6 = (~(Zdj7z6[1] & Gd2jy6)); +assign Isu5z6 = (~(Lh18x6 & Jehov6)); +assign Jehov6 = (Zyl8v6 & Nbj7z6[1]); +assign Eugjy6 = (~(Cvu5z6 & Kvu5z6)); +assign Kvu5z6 = (Svu5z6 & Awu5z6); +assign Awu5z6 = (~(Micet6 & Cvniy6)); +assign Cvniy6 = (~(Iwu5z6 & Glviy6)); +assign Glviy6 = (T5b7x6 & Qwu5z6); +assign Qwu5z6 = (~(Zjb7z6[8] | Zjb7z6[9])); +assign T5b7x6 = (~(Qg77z6 | Ig77z6)); +assign Iwu5z6 = (Ywu5z6 & Wlviy6); +assign Wlviy6 = (W3b7x6 & O6b7x6); +assign O6b7x6 = (~(Pxfov6 & Gxu5z6)); +assign Gxu5z6 = (~(Oxu5z6 & Mah7v6)); +assign Oxu5z6 = (~(F4edt6 & Xsinv6)); +assign W3b7x6 = (~(B6edt6 & Pxfov6)); +assign Ywu5z6 = (Qc77z6 & Wwgov6); +assign Wwgov6 = (E697z6 & Wxu5z6); +assign Wxu5z6 = (Ftlov6 | Tlmov6); +assign Svu5z6 = (Eyu5z6 & Q8ziy6); +assign Q8ziy6 = (~(Myu5z6 & F4edt6)); +assign Myu5z6 = (Etinv6 & Pxfov6); +assign Eyu5z6 = (~(Lh18x6 & E1cet6)); +assign Lh18x6 = (Ffadt6 & Amg7x6); +assign Amg7x6 = (~(A0fet6 & Uyu5z6)); +assign Uyu5z6 = (Nneet6 | Cwadt6); +assign Cvu5z6 = (Czu5z6 & Kzu5z6); +assign Kzu5z6 = (~(Ykcet6 & Szgjy6)); +assign Szgjy6 = (!W9ziy6); +assign W9ziy6 = (Szu5z6 & Uva7x6); +assign Uva7x6 = (~(Wkb7z6[0] | Wkb7z6[2])); +assign Szu5z6 = (Gd77z6 & M697z6); +assign Czu5z6 = (~(Sjcet6 & Gd2jy6)); +assign Gd2jy6 = (~(Emviy6 & A0v5z6)); +assign A0v5z6 = (~(I0v5z6 & Mlmov6)); +assign I0v5z6 = (~(Wwa7x6 & Losiw6)); +assign Losiw6 = (!Tlb7z6[4]); +assign Wwa7x6 = (~(Tlb7z6[3] | Tlb7z6[0])); +assign Emviy6 = (~(Tlb7z6[1] & Mlmov6)); +assign Mlmov6 = (~(Fuadt6 & Xsinv6)); +assign Xsinv6 = (!Etinv6); +assign Qc2jy6 = (Jws7x6 | S8b7x6); +assign S8b7x6 = (Q0v5z6 & Ifo7v6); +assign Q0v5z6 = (~(Y0v5z6 & Sb0jy6)); +assign Y0v5z6 = (Ac0jy6 & O1eiw6); +assign O1eiw6 = (G1v5z6 | O1v5z6); +assign O1v5z6 = (Qln7z6[1] ? E2v5z6 : W1v5z6); +assign E2v5z6 = (HREADYS & Y0kiw6); +assign Y0kiw6 = (~(M2v5z6 & U2v5z6)); +assign M2v5z6 = (Gazet6 & C3v5z6); +assign C3v5z6 = (Kyn7z6[0] | Kyn7z6[1]); +assign W1v5z6 = (Uvixx6 ? K3v5z6 : HREADYD); +assign Uvixx6 = (~(Xnnyx6 & Hm1ov6)); +assign Xnnyx6 = (B2jnv6 & Zgonv6); +assign Zgonv6 = (!Zblov6); +assign K3v5z6 = (S3v5z6 & HREADYS); +assign G1v5z6 = (~(A4v5z6 & Ag0jy6)); +assign Ac0jy6 = (~(I4v5z6 & Q4v5z6)); +assign Q4v5z6 = (~(HRESPD[0] & Qln7z6[0])); +assign I4v5z6 = (~(HRESPS[0] & Qln7z6[1])); +assign Jws7x6 = (!Sjcet6); +assign Ohi7v6 = (Euziy6 ? U47iw6 : H1j7z6[8]); +assign Euziy6 = (Y4v5z6 & Y82jy6); +assign Y4v5z6 = (R58iw6 & Bqi7z6[1]); +assign Hhi7v6 = (Hr4yx6 ? U47iw6 : H56ft6); +assign Ahi7v6 = (Sv1jy6 ? U47iw6 : Ies7z6[8]); +assign Sv1jy6 = (G5v5z6 & Cv1jy6); +assign G5v5z6 = (Ihs7z6[1] & O5v5z6); +assign O5v5z6 = (~(C397z6 & Scs7z6[1])); +assign Tgi7v6 = (O91jy6 ? U47iw6 : T077v6); +assign Mgi7v6 = (Ua1jy6 ? U47iw6 : Sgymz6[5]); +assign Fgi7v6 = (U61jy6 ? U47iw6 : Ojymz6[5]); +assign Yfi7v6 = (G91jy6 ? U47iw6 : Biymz6[8]); +assign G91jy6 = (Xid8x6 & Ddpyx6); +assign Ddpyx6 = (W5v5z6 & E6v5z6); +assign E6v5z6 = (M6v5z6 & Xfymz6[6]); +assign M6v5z6 = (Xfymz6[8] & R6pyx6); +assign W5v5z6 = (D9pyx6 & U6v5z6); +assign Rfi7v6 = (M61jy6 ? U47iw6 : Unymz6[5]); +assign Kfi7v6 = (W10jy6 ? Ykcet6 : Is5iw6); +assign W10jy6 = (~(Bzl7x6 & Bqi7z6[2])); +assign Bzl7x6 = (C7v5z6 & Eec7x6); +assign Eec7x6 = (~(K7v5z6 | S7v5z6)); +assign K7v5z6 = (!G42nv6); +assign G42nv6 = (A8v5z6 & Qkfiy6); +assign A8v5z6 = (Toi7z6[8] & Qgfiy6); +assign C7v5z6 = (Wdm7x6 & Toi7z6[2]); +assign Wdm7x6 = (~(Toi7z6[3] | Toi7z6[4])); +assign Dfi7v6 = (Hyhov6 ? Is5iw6 : E1cet6); +assign Hyhov6 = (~(Uq0jy6 | Ie5iw6)); +assign Ie5iw6 = (!Bqi7z6[2]); +assign Uq0jy6 = (!E60jy6); +assign E60jy6 = (I8v5z6 & Toi7z6[3]); +assign I8v5z6 = (~(Pb8iw6 | N92iw6)); +assign N92iw6 = (~(Q8v5z6 & Y8v5z6)); +assign Y8v5z6 = (~(Ualhy6 | S7v5z6)); +assign S7v5z6 = (!S98iw6); +assign S98iw6 = (~(E32nv6 | Toi7z6[9])); +assign E32nv6 = (!Toi7z6[5]); +assign Ualhy6 = (~(G9v5z6 & Toi7z6[7])); +assign G9v5z6 = (Toi7z6[6] & Qgfiy6); +assign Qgfiy6 = (Toi7z6[11] & Toi7z6[10]); +assign Q8v5z6 = (Toi7z6[8] & Toi7z6[4]); +assign Wei7v6 = (Wtziy6 ? Is5iw6 : H1j7z6[16]); +assign Wtziy6 = (O9v5z6 & Y82jy6); +assign Y82jy6 = (~(S72jy6 | Pb8iw6)); +assign Pb8iw6 = (!Toi7z6[2]); +assign S72jy6 = (~(W9v5z6 & Z98iw6)); +assign Z98iw6 = (Eav5z6 & Qkfiy6); +assign Qkfiy6 = (~(Toi7z6[6] | Toi7z6[7])); +assign Eav5z6 = (~(Toi7z6[11] | Toi7z6[8])); +assign W9v5z6 = (Pi8iw6 & Cvfiy6); +assign Cvfiy6 = (!Toi7z6[10]); +assign Pi8iw6 = (~(Toi7z6[5] | Toi7z6[9])); +assign O9v5z6 = (R58iw6 & Bqi7z6[2]); +assign R58iw6 = (~(X22nv6 | Toi7z6[3])); +assign X22nv6 = (!Toi7z6[4]); +assign Pei7v6 = (P9get6 ? M5bdt6 : Jqj7z6[8]); +assign Iei7v6 = (Hr4yx6 ? Is5iw6 : Mqb7z6[0]); +assign Hr4yx6 = (Mav5z6 & Uav5z6); +assign Uav5z6 = (Cbv5z6 & Ihs7z6[1]); +assign Cbv5z6 = (Mq1jy6 & Hfryx6); +assign Mq1jy6 = (Kbv5z6 & Ihs7z6[0]); +assign Kbv5z6 = (~(L1syx6 | C397z6)); +assign L1syx6 = (!Q097z6); +assign Mav5z6 = (Sbv5z6 & Zfs7z6[7]); +assign Sbv5z6 = (Ihs7z6[3] & Ihs7z6[2]); +assign Bei7v6 = (W92jy6 ? Is5iw6 : Ies7z6[16]); +assign W92jy6 = (Acv5z6 & Cv1jy6); +assign Cv1jy6 = (Icv5z6 & Hfryx6); +assign Hfryx6 = (~(O92jy6 | Mm27v6)); +assign O92jy6 = (~(Qcv5z6 & Ycv5z6)); +assign Ycv5z6 = (Tt4yx6 & Fgryx6); +assign Fgryx6 = (!Zfs7z6[8]); +assign Tt4yx6 = (!Tn27v6); +assign Qcv5z6 = (P7wyx6 & Xruyx6); +assign Xruyx6 = (!Ap27v6); +assign P7wyx6 = (~(Ohkhy6 | Or27v6)); +assign Ohkhy6 = (!V0syx6); +assign V0syx6 = (Gdv5z6 & Odv5z6); +assign Odv5z6 = (~(Wdv5z6 | Hq27v6)); +assign Wdv5z6 = (!Zfs7z6[10]); +assign Gdv5z6 = (Zfs7z6[9] & Zfs7z6[11]); +assign Icv5z6 = (Q097z6 & Pfryx6); +assign Pfryx6 = (!Zfs7z6[7]); +assign Acv5z6 = (Ihs7z6[2] & Eev5z6); +assign Eev5z6 = (~(C397z6 & Scs7z6[2])); +assign Udi7v6 = (O91jy6 ? Is5iw6 : Bfymz6[0]); +assign O91jy6 = (Xid8x6 & Fgpyx6); +assign Fgpyx6 = (D9pyx6 & P3xyx6); +assign Ndi7v6 = (Ua1jy6 ? Is5iw6 : Sgymz6[10]); +assign Ua1jy6 = (Xid8x6 & Ngpyx6); +assign Ngpyx6 = (Pbpyx6 & W5qhy6); +assign Pbpyx6 = (Mev5z6 & Xfymz6[4]); +assign Mev5z6 = (~(Eyyhy6 | Xfymz6[2])); +assign Gdi7v6 = (U61jy6 ? Is5iw6 : Ojymz6[10]); +assign U61jy6 = (Xid8x6 & Hfpyx6); +assign Hfpyx6 = (Kb1jy6 & D9pyx6); +assign D9pyx6 = (~(Uev5z6 | Xfymz6[2])); +assign Uev5z6 = (~(Eyyhy6 & J6yyx6)); +assign Eyyhy6 = (!Xfymz6[3]); +assign Zci7v6 = (C71jy6 ? Is5iw6 : Blymz6[0]); +assign C71jy6 = (Xid8x6 & Lhpyx6); +assign Lhpyx6 = (Gthiw6 & W5qhy6); +assign W5qhy6 = (Cfv5z6 & Kfv5z6); +assign Cfv5z6 = (Mulhy6 & Xfymz6[8]); +assign Mulhy6 = (Sfv5z6 & Xfymz6[7]); +assign Sfv5z6 = (Xfymz6[6] & Xfymz6[5]); +assign Gthiw6 = (Agv5z6 & Xfymz6[4]); +assign Agv5z6 = (~(Xfymz6[2] | Xfymz6[3])); +assign Sci7v6 = (M61jy6 ? Is5iw6 : Unymz6[10]); +assign M61jy6 = (Xid8x6 & Thpyx6); +assign Thpyx6 = (Ied8x6 & P3xyx6); +assign P3xyx6 = (Igv5z6 & R6pyx6); +assign Igv5z6 = (!Qgv5z6); +assign Ied8x6 = (Ygv5z6 & Xfymz6[3]); +assign Ygv5z6 = (~(Xfymz6[2] | Xfymz6[4])); +assign Lci7v6 = (~(Ghv5z6 & Ohv5z6)); +assign Ohv5z6 = (~(Whv5z6 & U42nv6)); +assign U42nv6 = (~(Eiv5z6 & Miv5z6)); +assign Miv5z6 = (~(Uiv5z6 & I8r7x6)); +assign Eiv5z6 = (~(Itb7z6[0] & Cjv5z6)); +assign Ghv5z6 = (~(Fjd7v6 & Kjv5z6)); +assign Eci7v6 = (~(Sjv5z6 & Akv5z6)); +assign Akv5z6 = (~(Whv5z6 & B52nv6)); +assign B52nv6 = (~(Ikv5z6 & Qkv5z6)); +assign Qkv5z6 = (~(Uiv5z6 & L7q7x6)); +assign Ikv5z6 = (~(Itb7z6[1] & Cjv5z6)); +assign Sjv5z6 = (~(Hcymz6[1] & Kjv5z6)); +assign Xbi7v6 = (~(Ykv5z6 & Glv5z6)); +assign Glv5z6 = (~(Whv5z6 & I52nv6)); +assign I52nv6 = (~(Olv5z6 & Wlv5z6)); +assign Wlv5z6 = (~(Uiv5z6 & Vcq7x6)); +assign Olv5z6 = (~(Itb7z6[2] & Cjv5z6)); +assign Whv5z6 = (Emv5z6 & Mmv5z6); +assign Emv5z6 = (!Kjv5z6); +assign Ykv5z6 = (~(Hcymz6[2] & Kjv5z6)); +assign Qbi7v6 = (Kjv5z6 ? Hcymz6[3] : Umv5z6); +assign Umv5z6 = (~(Mmv5z6 & Pohov6)); +assign Pohov6 = (!P52nv6); +assign Jbi7v6 = (Lhliw6 ? Tjr7z6[2] : ETMINTNUM[0]); +assign Cbi7v6 = (Lhliw6 ? Tjr7z6[9] : ETMINTNUM[7]); +assign Vai7v6 = (Lhliw6 ? Tjr7z6[8] : ETMINTNUM[6]); +assign Oai7v6 = (Lhliw6 ? Tjr7z6[7] : ETMINTNUM[5]); +assign Hai7v6 = (Lhliw6 ? Tjr7z6[5] : ETMINTNUM[3]); +assign Aai7v6 = (Lhliw6 ? Tjr7z6[3] : ETMINTNUM[1]); +assign T9i7v6 = (Nw5yx6 ? Gy2ft6 : Fw5yx6); +assign Fw5yx6 = (Id4ft6 ? U9p7z6[10] : U9p7z6[6]); +assign M9i7v6 = (O7fiw6 ? Hu2ft6 : Mbhiw6); +assign O7fiw6 = (Cnv5z6 & Q8fiw6); +assign Q8fiw6 = (~(Jsgiw6 & Hfqyx6)); +assign Hfqyx6 = (~(Yglhy6 | Odlhy6)); +assign Odlhy6 = (!Iw1jy6); +assign Iw1jy6 = (Knv5z6 & Gpeiy6); +assign Gpeiy6 = (Snv5z6 & Xueiw6); +assign Xueiw6 = (!Ah4ft6); +assign Snv5z6 = (!Nmq7z6[6]); +assign Knv5z6 = (Sz1jy6 & My1jy6); +assign My1jy6 = (!Nmq7z6[5]); +assign Sz1jy6 = (!Nmq7z6[3]); +assign Yglhy6 = (!Vcyyx6); +assign Vcyyx6 = (~(Nmq7z6[4] | E297z6)); +assign Jsgiw6 = (Aj4ft6 & Cueiw6); +assign Cueiw6 = (!M297z6); +assign Cnv5z6 = (Nw5yx6 | Vw5yx6); +assign Vw5yx6 = (!Qb4ft6); +assign Nw5yx6 = (Kygnv6 | A9i8v6); +assign A9i8v6 = (Aov5z6 & Bq5yx6); +assign Aov5z6 = (~(Whhov6 | Oaadt6)); +assign Whhov6 = (!Tlmov6); +assign Mbhiw6 = (W5q7z6[1] ? Qov5z6 : Iov5z6); +assign Qov5z6 = (W5q7z6[0] ? U9p7z6[28] : U9p7z6[26]); +assign Iov5z6 = (W5q7z6[0] & U9p7z6[24]); +assign F9i7v6 = (Yov5z6 | Op5ov6); +assign Yov5z6 = (B63yx6 ? F2f7v6 : Gpv5z6); +assign Gpv5z6 = (~(Opv5z6 & Wpv5z6)); +assign Wpv5z6 = (~(Eqv5z6 & Mqv5z6)); +assign Mqv5z6 = (Dxiyx6 | D53yx6); +assign Opv5z6 = (~(Dxiyx6 & Fo5ov6)); +assign Y8i7v6 = (~(Uqv5z6 & Crv5z6)); +assign Crv5z6 = (Zyiyx6 & Krv5z6); +assign Uqv5z6 = (Srv5z6 & Asv5z6); +assign Asv5z6 = (~(J7f7v6 & Isv5z6)); +assign Isv5z6 = (~(Qsv5z6 & Ysv5z6)); +assign Ysv5z6 = (Gtv5z6 | Otv5z6); +assign Gtv5z6 = (~(M8e7v6 | I6e7v6)); +assign Srv5z6 = (~(Wtv5z6 & Mo5ov6)); +assign Wtv5z6 = (~(Euv5z6 & Muv5z6)); +assign Muv5z6 = (Uuv5z6 & Cvv5z6); +assign Cvv5z6 = (~(Kvv5z6 & L9e7v6)); +assign Kvv5z6 = (I6e7v6 & Svv5z6); +assign Uuv5z6 = (Ju2yx6 & Awv5z6); +assign Awv5z6 = (!F2f7v6); +assign Euv5z6 = (~(D53yx6 | Fo5ov6)); +assign R8i7v6 = (!Iwv5z6); +assign Iwv5z6 = (B63yx6 ? F8iyx6 : T5iyx6); +assign K8i7v6 = (Mo5ov6 ? Eqv5z6 : Qa2nz6[1]); +assign Eqv5z6 = (!Hp5ov6); +assign D8i7v6 = (!Qwv5z6); +assign Qwv5z6 = (Kf2nz6[0] ? Gxv5z6 : Ywv5z6); +assign Gxv5z6 = (Oxv5z6 & Wxv5z6); +assign Oxv5z6 = (Xjjyx6 & P7jyx6); +assign P7jyx6 = (!P3jyx6); +assign Xjjyx6 = (!Z6jyx6); +assign Z6jyx6 = (Iy1nz6[1] & M81nv6); +assign W7i7v6 = (~(Eyv5z6 & Myv5z6)); +assign Myv5z6 = (~(P3jyx6 & Wxv5z6)); +assign P3jyx6 = (Gie7v6 & M81nv6); +assign Eyv5z6 = (~(Uyv5z6 ^ Pfjyx6)); +assign P7i7v6 = (~(Czv5z6 & Kzv5z6)); +assign Kzv5z6 = (~(Kf2nz6[2] & Szv5z6)); +assign Szv5z6 = (Uyv5z6 | Pfjyx6); +assign Pfjyx6 = (!Kf2nz6[1]); +assign Uyv5z6 = (~(Wxv5z6 & Kf2nz6[0])); +assign Czv5z6 = (~(T5jyx6 & Wxv5z6)); +assign T5jyx6 = (A0w5z6 & Kf2nz6[1]); +assign A0w5z6 = (~(Dp2yx6 | Kf2nz6[2])); +assign Dp2yx6 = (!Kf2nz6[0]); +assign I7i7v6 = (D92nz6[0] ^ I0w5z6); +assign B7i7v6 = (~(Q0w5z6 & Y0w5z6)); +assign Y0w5z6 = (~(I0w5z6 & Svv5z6)); +assign Svv5z6 = (!Lb1nv6); +assign Lb1nv6 = (Ec2nz6[1] ? O1w5z6 : G1w5z6); +assign O1w5z6 = (Ec2nz6[0] & Otv5z6); +assign G1w5z6 = (W1w5z6 & Ns2yx6); +assign W1w5z6 = (~(Ec2nz6[2] | Ec2nz6[3])); +assign Q0w5z6 = (E2w5z6 ^ D92nz6[1]); +assign E2w5z6 = (~(I0w5z6 & D92nz6[0])); +assign I0w5z6 = (V91nv6 & Xrjyx6); +assign U6i7v6 = (Mo5ov6 ? Dxiyx6 : Qa2nz6[0]); +assign N6i7v6 = (Mo5ov6 ? M2w5z6 : A4f7v6); +assign Mo5ov6 = (!B63yx6); +assign M2w5z6 = (Vwiyx6 ? C3w5z6 : U2w5z6); +assign Vwiyx6 = (K3w5z6 & T5f7v6); +assign K3w5z6 = (Ec2nz6[0] & X7iyx6); +assign C3w5z6 = (S3w5z6 & Nwiyx6); +assign U2w5z6 = (Vp5ov6 & Hp5ov6); +assign G6i7v6 = (~(A4w5z6 & I4w5z6)); +assign I4w5z6 = (Q4w5z6 | Ik77z6); +assign Q4w5z6 = (~(Vs2yx6 | Od77z6)); +assign A4w5z6 = (~(Y4w5z6 & G5w5z6)); +assign G5w5z6 = (O5w5z6 & W5w5z6); +assign W5w5z6 = (~(E6w5z6 & J23yx6)); +assign E6w5z6 = (~(M6w5z6 & Ec2nz6[0])); +assign M6w5z6 = (R0f7v6 ? Op5ov6 : F8iyx6); +assign O5w5z6 = (U6w5z6 & X7iyx6); +assign U6w5z6 = (~(Qa2nz6[0] & Ns2yx6)); +assign Y4w5z6 = (Qsv5z6 & H7iyx6); +assign Qsv5z6 = (~(B63yx6 | L5iyx6)); +assign Z5i7v6 = (Lhliw6 ? Tjr7z6[4] : ETMINTNUM[2]); +assign Lhliw6 = (~(C7w5z6 & Xkq7z6[16])); +assign C7w5z6 = (HTMDHBURST[0] & Yohiy6); +assign Yohiy6 = (Ehliw6 | W3wnv6); +assign W3wnv6 = (!Skh7v6); +assign Ehliw6 = (!Zkh7v6); +assign S5i7v6 = (Kjv5z6 ? Hcymz6[4] : K7w5z6); +assign Kjv5z6 = (~(Xid8x6 & Hjpyx6)); +assign Hjpyx6 = (S7w5z6 & A8w5z6); +assign A8w5z6 = (Xfymz6[2] & J6yyx6); +assign J6yyx6 = (!Xfymz6[4]); +assign S7w5z6 = (Kb1jy6 & Xfymz6[3]); +assign Kb1jy6 = (~(Qgv5z6 | R6pyx6)); +assign R6pyx6 = (!Xfymz6[5]); +assign Qgv5z6 = (~(I8w5z6 & U6v5z6)); +assign U6v5z6 = (Kfv5z6 & Ic2jy6); +assign Ic2jy6 = (!Xfymz6[7]); +assign Kfv5z6 = (Q8w5z6 & Sb2jy6); +assign Sb2jy6 = (!Xfymz6[10]); +assign Q8w5z6 = (~(Xfymz6[11] | Xfymz6[9])); +assign I8w5z6 = (Aslhy6 & I81jy6); +assign I81jy6 = (!Xfymz6[8]); +assign Aslhy6 = (!Xfymz6[6]); +assign Xid8x6 = (~(Yohiw6 | Xu67v6)); +assign Yohiw6 = (!L877v6); +assign K7w5z6 = (~(Mmv5z6 & Zaeiw6)); +assign Zaeiw6 = (!W52nv6); +assign Mmv5z6 = (Y8w5z6 & G9w5z6); +assign G9w5z6 = (V12nv6 & O9w5z6); +assign O9w5z6 = (W9w5z6 & I42jy6); +assign I42jy6 = (Gp1jy6 & Eaw5z6); +assign Eaw5z6 = (Maw5z6 & Uaw5z6); +assign Uaw5z6 = (M5giw6 & Wagiw6); +assign Wagiw6 = (!Ro3iw6); +assign Ro3iw6 = (~(Cbw5z6 & Kbw5z6)); +assign Kbw5z6 = (~(Uiv5z6 & Vxq7x6)); +assign Cbw5z6 = (~(Itb7z6[30] & Cjv5z6)); +assign M5giw6 = (!E64iw6); +assign E64iw6 = (~(Sbw5z6 & Acw5z6)); +assign Acw5z6 = (~(Uiv5z6 & Mbq7x6)); +assign Sbw5z6 = (~(Itb7z6[26] & Cjv5z6)); +assign Maw5z6 = (L1giw6 & U2giw6); +assign U2giw6 = (!Wf4iw6); +assign Wf4iw6 = (~(Icw5z6 & Qcw5z6)); +assign Qcw5z6 = (~(Uiv5z6 & Yqonv6)); +assign Icw5z6 = (~(Itb7z6[24] & Cjv5z6)); +assign L1giw6 = (!Cx4iw6); +assign Cx4iw6 = (~(Ycw5z6 & Gdw5z6)); +assign Gdw5z6 = (~(Uiv5z6 & Xzp7x6)); +assign Ycw5z6 = (~(Itb7z6[23] & Cjv5z6)); +assign Gp1jy6 = (Odw5z6 & D4giw6); +assign D4giw6 = (!Iklov6); +assign Iklov6 = (~(Wdw5z6 & Eew5z6)); +assign Eew5z6 = (~(Uiv5z6 & C6q7x6)); +assign Wdw5z6 = (~(Itb7z6[25] & Cjv5z6)); +assign Odw5z6 = (V6giw6 & E8giw6); +assign E8giw6 = (!W14iw6); +assign W14iw6 = (~(Mew5z6 & Uew5z6)); +assign Uew5z6 = (~(Uiv5z6 & Gmq7x6)); +assign Mew5z6 = (~(Itb7z6[28] & Cjv5z6)); +assign V6giw6 = (!H44iw6); +assign H44iw6 = (~(Cfw5z6 & Kfw5z6)); +assign Kfw5z6 = (~(Uiv5z6 & Wgq7x6)); +assign Cfw5z6 = (~(Itb7z6[27] & Cjv5z6)); +assign W9w5z6 = (Tyfiw6 & Sfw5z6); +assign Sfw5z6 = (~(W52nv6 & P52nv6)); +assign P52nv6 = (~(Agw5z6 & Igw5z6)); +assign Igw5z6 = (~(Uiv5z6 & Fiq7x6)); +assign Agw5z6 = (~(Itb7z6[3] & Cjv5z6)); +assign W52nv6 = (~(Qgw5z6 & Ygw5z6)); +assign Ygw5z6 = (~(Uiv5z6 & Pnq7x6)); +assign Qgw5z6 = (~(Itb7z6[4] & Cjv5z6)); +assign Tyfiw6 = (!Ej5iw6); +assign Ej5iw6 = (~(Ghw5z6 & Ohw5z6)); +assign Ohw5z6 = (~(Uiv5z6 & Mpq7x6)); +assign Ghw5z6 = (~(Itb7z6[21] & Cjv5z6)); +assign V12nv6 = (Umhiw6 & Whw5z6); +assign Whw5z6 = (Eiw5z6 & Miw5z6); +assign Miw5z6 = (Wifiw6 & Nhfiw6); +assign Nhfiw6 = (!U47iw6); +assign U47iw6 = (~(Uiw5z6 & Cjw5z6)); +assign Cjw5z6 = (~(Uiv5z6 & Kqonv6)); +assign Uiw5z6 = (~(Itb7z6[8] & Cjv5z6)); +assign Wifiw6 = (!J27iw6); +assign J27iw6 = (~(Kjw5z6 & Sjw5z6)); +assign Sjw5z6 = (~(Uiv5z6 & H5q7x6)); +assign Kjw5z6 = (~(Itb7z6[9] & Cjv5z6)); +assign Eiw5z6 = (N9giw6 & Fcgiw6); +assign Fcgiw6 = (!X0hov6); +assign X0hov6 = (~(Akw5z6 & Ikw5z6)); +assign Ikw5z6 = (~(Uiv5z6 & Ht1ov6)); +assign Akw5z6 = (~(Itb7z6[31] & Cjv5z6)); +assign N9giw6 = (!Zz3iw6); +assign Zz3iw6 = (~(Qkw5z6 & Ykw5z6)); +assign Ykw5z6 = (~(Uiv5z6 & Qrq7x6)); +assign Qkw5z6 = (~(Itb7z6[29] & Cjv5z6)); +assign Umhiw6 = (Xmfiw6 & C0giw6); +assign C0giw6 = (!D85iw6); +assign D85iw6 = (~(Glw5z6 & Olw5z6)); +assign Olw5z6 = (~(Uiv5z6 & Wuq7x6)); +assign Glw5z6 = (~(Itb7z6[22] & Cjv5z6)); +assign Xmfiw6 = (!Emhov6); +assign Emhov6 = (~(Wlw5z6 & Emw5z6)); +assign Emw5z6 = (~(Uiv5z6 & Llq7x6)); +assign Wlw5z6 = (~(Itb7z6[12] & Cjv5z6)); +assign Y8w5z6 = (Mmw5z6 & Umw5z6); +assign Umw5z6 = (Z32nv6 & Egfiw6); +assign Egfiw6 = (!R62nv6); +assign R62nv6 = (~(Cnw5z6 & Knw5z6)); +assign Knw5z6 = (~(Uiv5z6 & Kwp7x6)); +assign Cnw5z6 = (~(Itb7z6[7] & Cjv5z6)); +assign Z32nv6 = (~(Snw5z6 | Aow5z6)); +assign Aow5z6 = (~(Iow5z6 & Qow5z6)); +assign Qow5z6 = (Yow5z6 & Oyhov6); +assign Oyhov6 = (!Gr5iw6); +assign Gr5iw6 = (~(Gpw5z6 & Opw5z6)); +assign Opw5z6 = (~(Uiv5z6 & Y3q7x6)); +assign Gpw5z6 = (~(Itb7z6[17] & Cjv5z6)); +assign Yow5z6 = (Kxfiw6 & Bwfiw6); +assign Bwfiw6 = (!Mn5iw6); +assign Mn5iw6 = (~(Wpw5z6 & Eqw5z6)); +assign Eqw5z6 = (~(Uiv5z6 & Seq7x6)); +assign Wpw5z6 = (~(Itb7z6[19] & Cjv5z6)); +assign Kxfiw6 = (!Bl5iw6); +assign Bl5iw6 = (~(Mqw5z6 & Uqw5z6)); +assign Uqw5z6 = (~(Uiv5z6 & Ckq7x6)); +assign Mqw5z6 = (~(Itb7z6[20] & Cjv5z6)); +assign Iow5z6 = (Hsfiw6 & Sufiw6); +assign Sufiw6 = (!Jp5iw6); +assign Jp5iw6 = (~(Crw5z6 & Krw5z6)); +assign Krw5z6 = (~(Uiv5z6 & I9q7x6)); +assign Crw5z6 = (~(Itb7z6[18] & Cjv5z6)); +assign Hsfiw6 = (!Is5iw6); +assign Is5iw6 = (~(Srw5z6 & Asw5z6)); +assign Asw5z6 = (~(Uiv5z6 & V4r7x6)); +assign Srw5z6 = (~(Itb7z6[16] & Cjv5z6)); +assign Snw5z6 = (~(Isw5z6 & Qsw5z6)); +assign Qsw5z6 = (Ysw5z6 & Gofiw6); +assign Gofiw6 = (!Guhov6); +assign Guhov6 = (~(Gtw5z6 & Otw5z6)); +assign Otw5z6 = (~(Uiv5z6 & Vqq7x6)); +assign Gtw5z6 = (~(Itb7z6[13] & Cjv5z6)); +assign Ysw5z6 = (Yqfiw6 & Ppfiw6); +assign Ppfiw6 = (!Bk6iw6); +assign Bk6iw6 = (~(Wtw5z6 & Euw5z6)); +assign Euw5z6 = (~(Uiv5z6 & Twq7x6)); +assign Wtw5z6 = (~(Itb7z6[14] & Cjv5z6)); +assign Yqfiw6 = (!Z0iov6); +assign Z0iov6 = (~(Muw5z6 & Uuw5z6)); +assign Uuw5z6 = (~(Uiv5z6 & Oyp7x6)); +assign Muw5z6 = (~(Itb7z6[15] & Cjv5z6)); +assign Isw5z6 = (Olfiw6 & Fkfiw6); +assign Fkfiw6 = (!H17iw6); +assign H17iw6 = (~(Cvw5z6 & Kvw5z6)); +assign Kvw5z6 = (~(Uiv5z6 & Raq7x6)); +assign Cvw5z6 = (~(Itb7z6[10] & Cjv5z6)); +assign Olfiw6 = (!Dz6iw6); +assign Dz6iw6 = (~(Svw5z6 & Aww5z6)); +assign Aww5z6 = (~(Uiv5z6 & Bgq7x6)); +assign Svw5z6 = (~(Itb7z6[11] & Cjv5z6)); +assign Mmw5z6 = (Gbeiw6 & Tdfiw6); +assign Tdfiw6 = (!D62nv6); +assign D62nv6 = (~(Iww5z6 & Qww5z6)); +assign Qww5z6 = (~(Uiv5z6 & Zsq7x6)); +assign Iww5z6 = (~(Itb7z6[5] & Cjv5z6)); +assign Gbeiw6 = (!K62nv6); +assign K62nv6 = (~(Yww5z6 & Gxw5z6)); +assign Gxw5z6 = (~(Uiv5z6 & Lzq7x6)); +assign Uiv5z6 = (C1o7z6[0] & Q497z6); +assign Yww5z6 = (~(Itb7z6[6] & Cjv5z6)); +assign Cjv5z6 = (C1o7z6[1] & Q497z6); +assign L5i7v6 = (Zmbyx6 ? Vcxmz6[0] : TSVALUEB[0]); +assign E5i7v6 = (Zmbyx6 ? Vcxmz6[47] : TSVALUEB[47]); +assign X4i7v6 = (Zmbyx6 ? Vcxmz6[46] : TSVALUEB[46]); +assign Q4i7v6 = (Zmbyx6 ? Vcxmz6[45] : TSVALUEB[45]); +assign J4i7v6 = (Zmbyx6 ? Vcxmz6[44] : TSVALUEB[44]); +assign C4i7v6 = (Zmbyx6 ? Vcxmz6[43] : TSVALUEB[43]); +assign V3i7v6 = (Zmbyx6 ? Vcxmz6[42] : TSVALUEB[42]); +assign O3i7v6 = (Zmbyx6 ? Vcxmz6[41] : TSVALUEB[41]); +assign H3i7v6 = (Zmbyx6 ? Vcxmz6[40] : TSVALUEB[40]); +assign A3i7v6 = (Zmbyx6 ? Vcxmz6[39] : TSVALUEB[39]); +assign T2i7v6 = (Zmbyx6 ? Vcxmz6[38] : TSVALUEB[38]); +assign M2i7v6 = (Zmbyx6 ? Vcxmz6[37] : TSVALUEB[37]); +assign F2i7v6 = (Zmbyx6 ? Vcxmz6[36] : TSVALUEB[36]); +assign Y1i7v6 = (Zmbyx6 ? Vcxmz6[35] : TSVALUEB[35]); +assign R1i7v6 = (Zmbyx6 ? Vcxmz6[34] : TSVALUEB[34]); +assign K1i7v6 = (Zmbyx6 ? Vcxmz6[33] : TSVALUEB[33]); +assign D1i7v6 = (Zmbyx6 ? Vcxmz6[32] : TSVALUEB[32]); +assign W0i7v6 = (Zmbyx6 ? Vcxmz6[31] : TSVALUEB[31]); +assign P0i7v6 = (Zmbyx6 ? Vcxmz6[30] : TSVALUEB[30]); +assign I0i7v6 = (Zmbyx6 ? Vcxmz6[29] : TSVALUEB[29]); +assign B0i7v6 = (Zmbyx6 ? Vcxmz6[28] : TSVALUEB[28]); +assign Uzh7v6 = (Zmbyx6 ? Vcxmz6[27] : TSVALUEB[27]); +assign Nzh7v6 = (Zmbyx6 ? Vcxmz6[26] : TSVALUEB[26]); +assign Gzh7v6 = (Zmbyx6 ? Vcxmz6[25] : TSVALUEB[25]); +assign Zyh7v6 = (Zmbyx6 ? Vcxmz6[24] : TSVALUEB[24]); +assign Syh7v6 = (Zmbyx6 ? Vcxmz6[23] : TSVALUEB[23]); +assign Lyh7v6 = (Zmbyx6 ? Vcxmz6[22] : TSVALUEB[22]); +assign Eyh7v6 = (Zmbyx6 ? Vcxmz6[21] : TSVALUEB[21]); +assign Xxh7v6 = (Zmbyx6 ? Vcxmz6[20] : TSVALUEB[20]); +assign Qxh7v6 = (Zmbyx6 ? Vcxmz6[19] : TSVALUEB[19]); +assign Jxh7v6 = (Zmbyx6 ? Vcxmz6[18] : TSVALUEB[18]); +assign Cxh7v6 = (Zmbyx6 ? Vcxmz6[17] : TSVALUEB[17]); +assign Vwh7v6 = (Zmbyx6 ? Vcxmz6[16] : TSVALUEB[16]); +assign Owh7v6 = (Zmbyx6 ? Vcxmz6[15] : TSVALUEB[15]); +assign Hwh7v6 = (Zmbyx6 ? Vcxmz6[14] : TSVALUEB[14]); +assign Awh7v6 = (Zmbyx6 ? Vcxmz6[13] : TSVALUEB[13]); +assign Tvh7v6 = (Zmbyx6 ? Vcxmz6[12] : TSVALUEB[12]); +assign Mvh7v6 = (Zmbyx6 ? Vcxmz6[11] : TSVALUEB[11]); +assign Fvh7v6 = (Zmbyx6 ? Vcxmz6[10] : TSVALUEB[10]); +assign Yuh7v6 = (Zmbyx6 ? Vcxmz6[9] : TSVALUEB[9]); +assign Ruh7v6 = (Zmbyx6 ? Vcxmz6[8] : TSVALUEB[8]); +assign Kuh7v6 = (Zmbyx6 ? Vcxmz6[7] : TSVALUEB[7]); +assign Duh7v6 = (Zmbyx6 ? Vcxmz6[6] : TSVALUEB[6]); +assign Wth7v6 = (Zmbyx6 ? Vcxmz6[5] : TSVALUEB[5]); +assign Pth7v6 = (Zmbyx6 ? Vcxmz6[4] : TSVALUEB[4]); +assign Zmbyx6 = (!Oxw5z6); +assign Ith7v6 = (Oxw5z6 ? TSVALUEB[3] : Vcxmz6[3]); +assign Bth7v6 = (Oxw5z6 ? TSVALUEB[2] : Vcxmz6[2]); +assign Ush7v6 = (Oxw5z6 ? TSVALUEB[1] : Vcxmz6[1]); +assign Oxw5z6 = (Wxw5z6 & Fho7v6); +assign Fho7v6 = (I96ft6 | D5byx6); +assign D5byx6 = (D86ft6 & Eyw5z6); +assign Eyw5z6 = (~(Myw5z6 & Uyw5z6)); +assign Uyw5z6 = (~(Uur7z6[1] | Hsr7z6[1])); +assign Myw5z6 = (Eixiy6 & Nc5yx6); +assign Nc5yx6 = (!C4s7z6[1]); +assign Eixiy6 = (~(Ixr7z6[1] | Xwadt6)); +assign Wxw5z6 = (~(Ak77z6 | Fbxmz6[3])); +assign Nsh7v6 = (Vjqnv6 ? J0n7z6[0] : Gfqnv6); +assign Gsh7v6 = (~(Czw5z6 & Kzw5z6)); +assign Kzw5z6 = (~(J72nz6[7] & Szw5z6)); +assign Czw5z6 = (A0x5z6 & I0x5z6); +assign I0x5z6 = (~(Q0x5z6 & Y0x5z6)); +assign Q0x5z6 = (G1x5z6 & O1x5z6); +assign O1x5z6 = (W1x5z6 | E2x5z6); +assign G1x5z6 = (W1x5z6 | Au1nz6[7]); +assign W1x5z6 = (~(M2x5z6 & U2x5z6)); +assign U2x5z6 = (~(Qq5ov6 & Zs1nz6[7])); +assign M2x5z6 = (C3x5z6 & K3x5z6); +assign K3x5z6 = (~(S3x5z6 & Yr1nz6[7])); +assign C3x5z6 = (~(Jq5ov6 & Xq1nz6[7])); +assign A0x5z6 = (L53yx6 | Zijyx6); +assign Zijyx6 = (A4x5z6 & I4x5z6); +assign I4x5z6 = (Q4x5z6 & Y4x5z6); +assign Y4x5z6 = (~(G5x5z6 & Mm1nz6[7])); +assign Q4x5z6 = (~(O5x5z6 & Oo1nz6[7])); +assign A4x5z6 = (W5x5z6 & E6x5z6); +assign E6x5z6 = (~(Z63yx6 & Kh1nz6[7])); +assign W5x5z6 = (~(H73yx6 & Nn1nz6[7])); +assign Zrh7v6 = (~(M6x5z6 & U6x5z6)); +assign U6x5z6 = (~(J72nz6[2] & Szw5z6)); +assign M6x5z6 = (C7x5z6 & K7x5z6); +assign K7x5z6 = (~(Y0x5z6 & S7x5z6)); +assign S7x5z6 = (~(A8x5z6 & I8x5z6)); +assign I8x5z6 = (Q8x5z6 & Y8x5z6); +assign Y8x5z6 = (~(S3x5z6 & Yr1nz6[2])); +assign Q8x5z6 = (~(E2x5z6 & Au1nz6[2])); +assign A8x5z6 = (G9x5z6 & O9x5z6); +assign O9x5z6 = (~(Jq5ov6 & Xq1nz6[2])); +assign G9x5z6 = (~(Qq5ov6 & Zs1nz6[2])); +assign C7x5z6 = (L53yx6 | Fojyx6); +assign Fojyx6 = (W9x5z6 & Eax5z6); +assign Eax5z6 = (Max5z6 & Uax5z6); +assign Uax5z6 = (~(G5x5z6 & Mm1nz6[2])); +assign Max5z6 = (~(O5x5z6 & Oo1nz6[2])); +assign W9x5z6 = (Cbx5z6 & Kbx5z6); +assign Kbx5z6 = (~(Z63yx6 & Kh1nz6[2])); +assign Cbx5z6 = (~(H73yx6 & Nn1nz6[2])); +assign Srh7v6 = (~(Sbx5z6 & Acx5z6)); +assign Acx5z6 = (~(J72nz6[3] & Szw5z6)); +assign Sbx5z6 = (Icx5z6 & Qcx5z6); +assign Qcx5z6 = (~(Y0x5z6 & Ycx5z6)); +assign Ycx5z6 = (~(Gdx5z6 & Odx5z6)); +assign Odx5z6 = (Wdx5z6 & Eex5z6); +assign Eex5z6 = (~(S3x5z6 & Yr1nz6[3])); +assign Wdx5z6 = (~(E2x5z6 & Au1nz6[3])); +assign Gdx5z6 = (Mex5z6 & Uex5z6); +assign Uex5z6 = (~(Jq5ov6 & Xq1nz6[3])); +assign Mex5z6 = (~(Qq5ov6 & Zs1nz6[3])); +assign Icx5z6 = (L53yx6 | Lhjyx6); +assign Lhjyx6 = (Cfx5z6 & Kfx5z6); +assign Kfx5z6 = (Sfx5z6 & Agx5z6); +assign Agx5z6 = (~(G5x5z6 & Mm1nz6[3])); +assign Sfx5z6 = (~(O5x5z6 & Oo1nz6[3])); +assign Cfx5z6 = (Igx5z6 & Qgx5z6); +assign Qgx5z6 = (~(Z63yx6 & Kh1nz6[3])); +assign Igx5z6 = (~(H73yx6 & Nn1nz6[3])); +assign Lrh7v6 = (~(Ygx5z6 & Ghx5z6)); +assign Ghx5z6 = (~(J72nz6[5] & Szw5z6)); +assign Ygx5z6 = (Ohx5z6 & Whx5z6); +assign Whx5z6 = (~(Y0x5z6 & Eix5z6)); +assign Eix5z6 = (~(Mix5z6 & Uix5z6)); +assign Uix5z6 = (Cjx5z6 & Kjx5z6); +assign Kjx5z6 = (~(S3x5z6 & Yr1nz6[5])); +assign Cjx5z6 = (~(E2x5z6 & Au1nz6[5])); +assign Mix5z6 = (Sjx5z6 & Akx5z6); +assign Akx5z6 = (~(Jq5ov6 & Xq1nz6[5])); +assign Sjx5z6 = (~(Qq5ov6 & Zs1nz6[5])); +assign Ohx5z6 = (L53yx6 | Ddjyx6); +assign Ddjyx6 = (Ikx5z6 & Qkx5z6); +assign Qkx5z6 = (Ykx5z6 & Glx5z6); +assign Glx5z6 = (~(G5x5z6 & Mm1nz6[5])); +assign Ykx5z6 = (~(O5x5z6 & Oo1nz6[5])); +assign Ikx5z6 = (Olx5z6 & Wlx5z6); +assign Wlx5z6 = (~(Z63yx6 & Kh1nz6[5])); +assign Olx5z6 = (~(H73yx6 & Nn1nz6[5])); +assign Erh7v6 = (~(Emx5z6 & Mmx5z6)); +assign Mmx5z6 = (~(J72nz6[0] & Szw5z6)); +assign Emx5z6 = (Umx5z6 & Cnx5z6); +assign Cnx5z6 = (~(Y0x5z6 & Knx5z6)); +assign Knx5z6 = (~(Snx5z6 & Aox5z6)); +assign Aox5z6 = (Iox5z6 & Qox5z6); +assign Qox5z6 = (~(S3x5z6 & Yr1nz6[0])); +assign Iox5z6 = (~(E2x5z6 & Au1nz6[0])); +assign Snx5z6 = (Yox5z6 & Gpx5z6); +assign Gpx5z6 = (~(Jq5ov6 & Bv1nz6[0])); +assign Yox5z6 = (~(Qq5ov6 & Zs1nz6[0])); +assign Umx5z6 = (L53yx6 | Hrjyx6); +assign Hrjyx6 = (Opx5z6 & Wpx5z6); +assign Wpx5z6 = (Eqx5z6 & Mqx5z6); +assign Mqx5z6 = (~(G5x5z6 & Mm1nz6[0])); +assign Eqx5z6 = (~(O5x5z6 & Oo1nz6[0])); +assign Opx5z6 = (Uqx5z6 & Crx5z6); +assign Crx5z6 = (~(Z63yx6 & Pp1nz6[0])); +assign Uqx5z6 = (~(H73yx6 & Nn1nz6[0])); +assign Xqh7v6 = (Dt2yx6 ? N52nz6[5] : N52nz6[6]); +assign Qqh7v6 = (Dt2yx6 ? N52nz6[4] : N52nz6[5]); +assign Jqh7v6 = (Dt2yx6 ? N52nz6[3] : N52nz6[4]); +assign Cqh7v6 = (Dt2yx6 ? N52nz6[2] : N52nz6[3]); +assign Vph7v6 = (Dt2yx6 ? N52nz6[1] : N52nz6[2]); +assign Oph7v6 = (Dt2yx6 ? N52nz6[0] : N52nz6[1]); +assign Dt2yx6 = (!Krx5z6); +assign Hph7v6 = (Krx5z6 ? N52nz6[0] : Wye7v6); +assign Krx5z6 = (~(Vs2yx6 | Ns2yx6)); +assign Vs2yx6 = (~(Srx5z6 & Bejyx6)); +assign Bejyx6 = (~(Xrjyx6 | B63yx6)); +assign Srx5z6 = (V91nv6 & J7f7v6); +assign Aph7v6 = (Vjqnv6 ? J0n7z6[1] : Qdqnv6); +assign Vjqnv6 = (!Gmnet6); +assign Toh7v6 = (~(Asx5z6 & Isx5z6)); +assign Isx5z6 = (~(J72nz6[4] & Szw5z6)); +assign Asx5z6 = (Qsx5z6 & Ysx5z6); +assign Ysx5z6 = (~(Y0x5z6 & Gtx5z6)); +assign Gtx5z6 = (~(Otx5z6 & Wtx5z6)); +assign Wtx5z6 = (Eux5z6 & Mux5z6); +assign Mux5z6 = (~(S3x5z6 & Yr1nz6[4])); +assign Eux5z6 = (~(E2x5z6 & Au1nz6[4])); +assign Otx5z6 = (Uux5z6 & Cvx5z6); +assign Cvx5z6 = (~(Jq5ov6 & Xq1nz6[4])); +assign Uux5z6 = (~(Qq5ov6 & Zs1nz6[4])); +assign Qsx5z6 = (L53yx6 | Bqjyx6); +assign Bqjyx6 = (Kvx5z6 & Svx5z6); +assign Svx5z6 = (Awx5z6 & Iwx5z6); +assign Iwx5z6 = (~(G5x5z6 & Mm1nz6[4])); +assign Awx5z6 = (~(O5x5z6 & Oo1nz6[4])); +assign Kvx5z6 = (Qwx5z6 & Ywx5z6); +assign Ywx5z6 = (~(Z63yx6 & Kh1nz6[4])); +assign Qwx5z6 = (~(H73yx6 & Nn1nz6[4])); +assign Moh7v6 = (~(Gxx5z6 & Oxx5z6)); +assign Oxx5z6 = (~(J72nz6[6] & Szw5z6)); +assign Gxx5z6 = (Wxx5z6 & Eyx5z6); +assign Eyx5z6 = (~(Y0x5z6 & Myx5z6)); +assign Myx5z6 = (~(Uyx5z6 & Czx5z6)); +assign Czx5z6 = (Kzx5z6 & Szx5z6); +assign Szx5z6 = (~(S3x5z6 & Yr1nz6[6])); +assign Kzx5z6 = (~(E2x5z6 & Au1nz6[6])); +assign Uyx5z6 = (A0y5z6 & I0y5z6); +assign I0y5z6 = (~(Jq5ov6 & Xq1nz6[6])); +assign A0y5z6 = (~(Qq5ov6 & Zs1nz6[6])); +assign Wxx5z6 = (~(Q0y5z6 & Zmjyx6)); +assign Zmjyx6 = (~(Y0y5z6 & G1y5z6)); +assign G1y5z6 = (O1y5z6 & W1y5z6); +assign W1y5z6 = (~(G5x5z6 & Mm1nz6[6])); +assign O1y5z6 = (~(O5x5z6 & Oo1nz6[6])); +assign Y0y5z6 = (E2y5z6 & M2y5z6); +assign M2y5z6 = (~(Z63yx6 & Kh1nz6[6])); +assign E2y5z6 = (~(H73yx6 & Nn1nz6[6])); +assign Foh7v6 = (Cxtet6 & Mr9ov6); +assign Ynh7v6 = (Dztet6 & Mr9ov6); +assign Mr9ov6 = (H2kiw6 | F4xnv6); +assign F4xnv6 = (~(H11ov6 & Kconv6)); +assign H11ov6 = (Ccnet6 & Rconv6); +assign Rconv6 = (~(U2y5z6 & C3y5z6)); +assign C3y5z6 = (K3y5z6 & S3y5z6); +assign S3y5z6 = (~(G7piw6 & HREADYS)); +assign K3y5z6 = (A4y5z6 & Kfliy6); +assign Kfliy6 = (~(Kqm7z6[2] & I4y5z6)); +assign A4y5z6 = (~(HREADYI & Q4y5z6)); +assign Q4y5z6 = (~(Y4y5z6 & Ealiy6)); +assign Ealiy6 = (!R9piw6); +assign R9piw6 = (Kqm7z6[0] & I4y5z6); +assign Y4y5z6 = (~(G5y5z6 & Cfliy6)); +assign G5y5z6 = (~(G7piw6 | K9piw6)); +assign G7piw6 = (Kqm7z6[1] & I4y5z6); +assign I4y5z6 = (Cfliy6 & O5y5z6); +assign U2y5z6 = (X0oet6 & W5y5z6); +assign W5y5z6 = (~(K9piw6 & Q0ziy6)); +assign Q0ziy6 = (!E6y5z6); +assign K9piw6 = (M6y5z6 & Cfliy6); +assign M6y5z6 = (!O5y5z6); +assign O5y5z6 = (Cakiw6 | U6y5z6); +assign H2kiw6 = (~(C7y5z6 & K7y5z6)); +assign K7y5z6 = (~(Ogkiw6 & S7y5z6)); +assign S7y5z6 = (~(A8y5z6 & Vd1ft6)); +assign A8y5z6 = (I8y5z6 & Dm1ft6); +assign Ogkiw6 = (Q8y5z6 & Y8y5z6); +assign Y8y5z6 = (~(D7gxx6 | S4gxx6)); +assign S4gxx6 = (!U5gxx6); +assign U5gxx6 = (~(G9y5z6 & Pg1ft6)); +assign G9y5z6 = (I8y5z6 & Hq1ft6); +assign D7gxx6 = (O9y5z6 & Te1ft6); +assign O9y5z6 = (I8y5z6 & Nn1ft6); +assign Q8y5z6 = (Z4gxx6 & W6gxx6); +assign W6gxx6 = (~(W9y5z6 & Rf1ft6)); +assign W9y5z6 = (I8y5z6 & Xo1ft6); +assign Z4gxx6 = (Eay5z6 & E4gxx6); +assign E4gxx6 = (!Mfkiw6); +assign Mfkiw6 = (May5z6 & Li1ft6); +assign May5z6 = (I8y5z6 & Iv1ft6); +assign Eay5z6 = (~(Uay5z6 & Nh1ft6)); +assign Uay5z6 = (I8y5z6 & Rr1ft6); +assign I8y5z6 = (Lbkiw6 & Zy1ft6); +assign C7y5z6 = (Kconv6 & Cby5z6); +assign Cby5z6 = (!Dconv6); +assign Dconv6 = (Ccnet6 & Y3xnv6); +assign Y3xnv6 = (~(Kby5z6 & Sby5z6)); +assign Sby5z6 = (~(Acy5z6 & Icy5z6)); +assign Acy5z6 = (Am1ov6 & Qcy5z6); +assign Qcy5z6 = (~(Ycy5z6 & Ikyiy6)); +assign Ycy5z6 = (Ody5z6 ? Gdy5z6 : N0nyx6); +assign Gdy5z6 = (Wdy5z6 & Eey5z6); +assign Eey5z6 = (Mey5z6 & Uey5z6); +assign Uey5z6 = (Cfy5z6 & Kfy5z6); +assign Kfy5z6 = (~(Ltnyx6 & Zlk7z6[23])); +assign Cfy5z6 = (~(Nsnyx6 & Hwk7z6[23])); +assign Mey5z6 = (Sfy5z6 & Agy5z6); +assign Agy5z6 = (~(Junyx6 & P6l7z6[23])); +assign Sfy5z6 = (~(Runyx6 & Xgl7z6[23])); +assign Wdy5z6 = (Igy5z6 & Qgy5z6); +assign Qgy5z6 = (Ygy5z6 & Ghy5z6); +assign Ghy5z6 = (~(Fwnyx6 & Frl7z6[23])); +assign Ygy5z6 = (~(Nwnyx6 & N1m7z6[23])); +assign Igy5z6 = (Ohy5z6 & Why5z6); +assign Why5z6 = (~(Lxnyx6 & Rbk7z6[23])); +assign Ohy5z6 = (~(Txnyx6 & Vbm7z6[23])); +assign N0nyx6 = (~(Xnmyx6 & Eiy5z6)); +assign Eiy5z6 = (~(Bkfnv6 & Eg3nv6)); +assign Kby5z6 = (~(Miy5z6 & Am1ov6)); +assign Miy5z6 = (Uiy5z6 & X3nyx6); +assign X3nyx6 = (!Hnmyx6); +assign Hnmyx6 = (~(Cjy5z6 | Ltmyx6)); +assign Ltmyx6 = (Icy5z6 & Ody5z6); +assign Cjy5z6 = (Kjy5z6 & Sjy5z6); +assign Kjy5z6 = (Icy5z6 & Aky5z6); +assign Aky5z6 = (~(Apget6 & HPROTI[1])); +assign Icy5z6 = (!HPROTI[0]); +assign HPROTI[0] = (Crcdt6 ? Fsc7z6[0] : Emoov6); +assign Uiy5z6 = (~(Iky5z6 & Ody5z6)); +assign Ody5z6 = (~(Lxnyx6 & Qky5z6)); +assign Qky5z6 = (~(Yky5z6 & Gly5z6)); +assign Gly5z6 = (Oly5z6 & Wly5z6); +assign Wly5z6 = (Emy5z6 & Mmy5z6); +assign Mmy5z6 = (Umy5z6 & Cny5z6); +assign Cny5z6 = (~(C4het6 | Kny5z6)); +assign Kny5z6 = (Sny5z6 & Jienv6); +assign Sny5z6 = (Az3nv6 ^ Aoy5z6); +assign Umy5z6 = (Ioy5z6 & Qoy5z6); +assign Qoy5z6 = (~(Yoy5z6 & O3env6)); +assign Yoy5z6 = (HADDRI[7] ^ Dfk7z6[7]); +assign Ioy5z6 = (~(Gpy5z6 & Cbenv6)); +assign Gpy5z6 = (HADDRI[6] ^ Dfk7z6[6]); +assign Emy5z6 = (Opy5z6 & Wpy5z6); +assign Wpy5z6 = (Eqy5z6 & Mqy5z6); +assign Mqy5z6 = (~(Uqy5z6 & Nrenv6)); +assign Uqy5z6 = (HADDRI[15] ^ Dfk7z6[15]); +assign Eqy5z6 = (~(Cry5z6 & Qwenv6)); +assign Cry5z6 = (HADDRI[14] ^ Dfk7z6[14]); +assign Opy5z6 = (Kry5z6 & Sry5z6); +assign Sry5z6 = (~(Asy5z6 & H3env6)); +assign Asy5z6 = (HADDRI[13] ^ Dfk7z6[13]); +assign Kry5z6 = (~(Isy5z6 & Vaenv6)); +assign Isy5z6 = (HADDRI[12] ^ Dfk7z6[12]); +assign Oly5z6 = (Qsy5z6 & Ysy5z6); +assign Ysy5z6 = (Gty5z6 & Oty5z6); +assign Oty5z6 = (Wty5z6 & Euy5z6); +assign Euy5z6 = (~(Muy5z6 & Qienv6)); +assign Muy5z6 = (HADDRI[11] ^ Dfk7z6[11]); +assign Wty5z6 = (~(Uuy5z6 & Fnenv6)); +assign Uuy5z6 = (HADDRI[10] ^ Dfk7z6[10]); +assign Gty5z6 = (Cvy5z6 & Kvy5z6); +assign Kvy5z6 = (~(Svy5z6 & Awy5z6)); +assign Svy5z6 = (HADDRI[9] ^ Dfk7z6[9]); +assign Cvy5z6 = (~(Iwy5z6 & Cienv6)); +assign Iwy5z6 = (HADDRI[8] ^ Dfk7z6[8]); +assign Qsy5z6 = (Qwy5z6 & Ywy5z6); +assign Ywy5z6 = (~(Gxy5z6 & Peenv6)); +assign Gxy5z6 = (Dfk7z6[29] ^ Bkfnv6); +assign Qwy5z6 = (Oxy5z6 & Wxy5z6); +assign Wxy5z6 = (~(Eyy5z6 & Nzdnv6)); +assign Eyy5z6 = (Njfnv6 ^ Dfk7z6[31]); +assign Oxy5z6 = (~(Myy5z6 & B7env6)); +assign Myy5z6 = (Ujfnv6 ^ Dfk7z6[30]); +assign Yky5z6 = (Uyy5z6 & Czy5z6); +assign Czy5z6 = (Kzy5z6 & Szy5z6); +assign Szy5z6 = (A0z5z6 & I0z5z6); +assign I0z5z6 = (Q0z5z6 & Y0z5z6); +assign Y0z5z6 = (~(G1z5z6 & O1z5z6)); +assign G1z5z6 = (HADDRI[28] ^ Dfk7z6[28]); +assign Q0z5z6 = (~(W1z5z6 & Dtenv6)); +assign W1z5z6 = (HADDRI[27] ^ Dfk7z6[27]); +assign A0z5z6 = (E2z5z6 & M2z5z6); +assign M2z5z6 = (~(U2z5z6 & K0fnv6)); +assign U2z5z6 = (HADDRI[26] ^ Dfk7z6[26]); +assign E2z5z6 = (~(C3z5z6 & K1env6)); +assign C3z5z6 = (HADDRI[25] ^ Dfk7z6[25]); +assign Kzy5z6 = (K3z5z6 & S3z5z6); +assign S3z5z6 = (~(A4z5z6 & Wlenv6)); +assign A4z5z6 = (HADDRI[22] ^ Dfk7z6[22]); +assign K3z5z6 = (I4z5z6 & Q4z5z6); +assign Q4z5z6 = (~(Y4z5z6 & Y8env6)); +assign Y4z5z6 = (HADDRI[24] ^ Dfk7z6[24]); +assign I4z5z6 = (~(G5z5z6 & Mgenv6)); +assign G5z5z6 = (HADDRI[23] ^ Dfk7z6[23]); +assign Uyy5z6 = (O5z5z6 & W5z5z6); +assign W5z5z6 = (E6z5z6 & M6z5z6); +assign M6z5z6 = (U6z5z6 & C7z5z6); +assign C7z5z6 = (~(K7z5z6 & Grenv6)); +assign K7z5z6 = (HADDRI[21] ^ Dfk7z6[21]); +assign U6z5z6 = (~(S7z5z6 & Gyenv6)); +assign S7z5z6 = (HADDRI[20] ^ Dfk7z6[20]); +assign E6z5z6 = (A8z5z6 & I8z5z6); +assign I8z5z6 = (~(Q8z5z6 & Q4env6)); +assign Q8z5z6 = (HADDRI[19] ^ Dfk7z6[19]); +assign A8z5z6 = (~(Y8z5z6 & Ecenv6)); +assign Y8z5z6 = (HADDRI[18] ^ Dfk7z6[18]); +assign O5z5z6 = (G9z5z6 & O9z5z6); +assign G9z5z6 = (W9z5z6 & Eaz5z6); +assign Eaz5z6 = (~(Maz5z6 & Sjenv6)); +assign Maz5z6 = (HADDRI[17] ^ Dfk7z6[17]); +assign W9z5z6 = (~(Uaz5z6 & Dmenv6)); +assign Uaz5z6 = (HADDRI[16] ^ Dfk7z6[16]); +assign Iky5z6 = (~(Cbz5z6 & Kbz5z6)); +assign Kbz5z6 = (Sbz5z6 & Acz5z6); +assign Acz5z6 = (Icz5z6 & Qcz5z6); +assign Qcz5z6 = (~(Junyx6 & P6l7z6[21])); +assign Icz5z6 = (Ycz5z6 & Gdz5z6); +assign Gdz5z6 = (~(Ltnyx6 & Zlk7z6[21])); +assign Ycz5z6 = (~(Nsnyx6 & Hwk7z6[21])); +assign Sbz5z6 = (Odz5z6 & Wdz5z6); +assign Wdz5z6 = (~(Runyx6 & Xgl7z6[21])); +assign Odz5z6 = (~(Fwnyx6 & Frl7z6[21])); +assign Cbz5z6 = (Eez5z6 & Mez5z6); +assign Mez5z6 = (Uez5z6 & Cfz5z6); +assign Cfz5z6 = (~(Nwnyx6 & N1m7z6[21])); +assign Uez5z6 = (~(Lxnyx6 & Rbk7z6[21])); +assign Eez5z6 = (Kfz5z6 & Sfz5z6); +assign Sfz5z6 = (~(Txnyx6 & Vbm7z6[21])); +assign Kfz5z6 = (Qgz5z6 ? Igz5z6 : Agz5z6); +assign Qgz5z6 = (Ygz5z6 & Ghz5z6); +assign Ghz5z6 = (Ohz5z6 & Whz5z6); +assign Whz5z6 = (Eiz5z6 & Miz5z6); +assign Miz5z6 = (~(Nwnyx6 & N1m7z6[20])); +assign Eiz5z6 = (~(Lxnyx6 & Rbk7z6[20])); +assign Ohz5z6 = (Uiz5z6 & Cjz5z6); +assign Cjz5z6 = (~(Junyx6 & P6l7z6[20])); +assign Uiz5z6 = (~(Nsnyx6 & Hwk7z6[20])); +assign Ygz5z6 = (Kjz5z6 & Sjz5z6); +assign Sjz5z6 = (Akz5z6 & Ikz5z6); +assign Ikz5z6 = (~(Fwnyx6 & Frl7z6[20])); +assign Akz5z6 = (~(Ltnyx6 & Zlk7z6[20])); +assign Kjz5z6 = (Qkz5z6 & Ykz5z6); +assign Ykz5z6 = (~(Txnyx6 & Vbm7z6[20])); +assign Qkz5z6 = (~(Runyx6 & Xgl7z6[20])); +assign Igz5z6 = (Glz5z6 & Olz5z6); +assign Olz5z6 = (Wlz5z6 & Emz5z6); +assign Emz5z6 = (Mmz5z6 & Umz5z6); +assign Umz5z6 = (~(Ltnyx6 & Zlk7z6[22])); +assign Ltnyx6 = (Cnz5z6 & Knz5z6); +assign Cnz5z6 = (Snz5z6 & Aoz5z6); +assign Mmz5z6 = (~(Nsnyx6 & Hwk7z6[22])); +assign Nsnyx6 = (~(Ioz5z6 | Qoz5z6)); +assign Wlz5z6 = (Yoz5z6 & Gpz5z6); +assign Gpz5z6 = (~(Junyx6 & P6l7z6[22])); +assign Junyx6 = (~(Opz5z6 | Ioz5z6)); +assign Ioz5z6 = (~(Snz5z6 & Wpz5z6)); +assign Yoz5z6 = (~(Runyx6 & Xgl7z6[22])); +assign Runyx6 = (Eqz5z6 & Mqz5z6); +assign Eqz5z6 = (~(Uqz5z6 | Crz5z6)); +assign Glz5z6 = (Krz5z6 & Srz5z6); +assign Srz5z6 = (Asz5z6 & Isz5z6); +assign Isz5z6 = (~(Fwnyx6 & Frl7z6[22])); +assign Fwnyx6 = (Crz5z6 & Qsz5z6); +assign Asz5z6 = (~(Nwnyx6 & N1m7z6[22])); +assign Nwnyx6 = (~(Txnyx6 | Qsz5z6)); +assign Krz5z6 = (Ysz5z6 & Gtz5z6); +assign Gtz5z6 = (~(Lxnyx6 & Rbk7z6[22])); +assign Lxnyx6 = (Otz5z6 & Snz5z6); +assign Snz5z6 = (Wtz5z6 & Qsz5z6); +assign Qsz5z6 = (!Uqz5z6); +assign Uqz5z6 = (~(Euz5z6 & Muz5z6)); +assign Muz5z6 = (!Txnyx6); +assign Euz5z6 = (~(Uuz5z6 & Cvz5z6)); +assign Cvz5z6 = (Kvz5z6 & Svz5z6); +assign Svz5z6 = (Awz5z6 & Iwz5z6); +assign Iwz5z6 = (Qwz5z6 & Ywz5z6); +assign Ywz5z6 = (~(Cslet6 | Gxz5z6)); +assign Gxz5z6 = (Oxz5z6 & Xk5nv6); +assign Oxz5z6 = (Az3nv6 ^ Wxz5z6); +assign Qwz5z6 = (Eyz5z6 & Myz5z6); +assign Myz5z6 = (~(Uyz5z6 & C65nv6)); +assign Uyz5z6 = (Usbiw6 ^ HADDRI[7]); +assign Eyz5z6 = (~(Qd5nv6 & Czz5z6)); +assign Czz5z6 = (Hpbiw6 ^ HADDRI[6]); +assign Awz5z6 = (Kzz5z6 & Szz5z6); +assign Szz5z6 = (A006z6 & I006z6); +assign I006z6 = (~(Q006z6 & Iu5nv6)); +assign Q006z6 = (Ndciw6 ^ HADDRI[15]); +assign A006z6 = (~(Y006z6 & Sz5nv6)); +assign Y006z6 = (Cbciw6 ^ HADDRI[14]); +assign Kzz5z6 = (G106z6 & O106z6); +assign O106z6 = (~(W106z6 & V55nv6)); +assign W106z6 = (M9ciw6 ^ HADDRI[13]); +assign G106z6 = (~(E206z6 & Jd5nv6)); +assign E206z6 = (P7ciw6 ^ HADDRI[12]); +assign Kvz5z6 = (M206z6 & U206z6); +assign U206z6 = (C306z6 & K306z6); +assign K306z6 = (S306z6 & A406z6); +assign A406z6 = (~(I406z6 & El5nv6)); +assign I406z6 = (Q4ciw6 ^ HADDRI[11]); +assign S306z6 = (~(Q406z6 & Aq5nv6)); +assign Q406z6 = (W0ciw6 ^ HADDRI[10]); +assign C306z6 = (Y406z6 & G506z6); +assign G506z6 = (~(O506z6 & W506z6)); +assign O506z6 = (Gzbiw6 ^ HADDRI[9]); +assign Y406z6 = (~(E606z6 & Qk5nv6)); +assign E606z6 = (M606z6 ^ U606z6); +assign M206z6 = (C706z6 & K706z6); +assign K706z6 = (~(S706z6 & Dh5nv6)); +assign S706z6 = (Bkfnv6 ^ Z4diw6); +assign C706z6 = (A806z6 & I806z6); +assign I806z6 = (~(Q806z6 & B25nv6)); +assign Q806z6 = (K787z6 ^ Eg3nv6); +assign A806z6 = (~(Y806z6 & P95nv6)); +assign Y806z6 = (P6diw6 ^ Ujfnv6); +assign P6diw6 = (!G987z6); +assign Uuz5z6 = (G906z6 & O906z6); +assign O906z6 = (W906z6 & Ea06z6); +assign Ea06z6 = (Ma06z6 & Ua06z6); +assign Ua06z6 = (Cb06z6 & Kb06z6); +assign Kb06z6 = (~(Sb06z6 & Ac06z6)); +assign Sb06z6 = (J3diw6 ^ HADDRI[28]); +assign Cb06z6 = (~(Ic06z6 & Fw5nv6)); +assign Ic06z6 = (F1diw6 ^ HADDRI[27]); +assign Ma06z6 = (Qc06z6 & Yc06z6); +assign Yc06z6 = (~(Gd06z6 & M36nv6)); +assign Gd06z6 = (Pzciw6 ^ HADDRI[26]); +assign Pzciw6 = (!A887z6); +assign Qc06z6 = (~(Od06z6 & Y35nv6)); +assign Od06z6 = (Gyciw6 ^ HADDRI[25]); +assign Gyciw6 = (!S787z6); +assign W906z6 = (Wd06z6 & Ee06z6); +assign Ee06z6 = (~(Me06z6 & Ko5nv6)); +assign Me06z6 = (Lqciw6 ^ HADDRI[22]); +assign Wd06z6 = (Ue06z6 & Cf06z6); +assign Cf06z6 = (~(Kf06z6 & Mb5nv6)); +assign Kf06z6 = (Rqmyx6 ^ Sf06z6); +assign Ue06z6 = (~(Ag06z6 & Aj5nv6)); +assign Ag06z6 = (Isciw6 ^ HADDRI[23]); +assign Isciw6 = (!Gl77z6); +assign G906z6 = (Ig06z6 & Qg06z6); +assign Qg06z6 = (Yg06z6 & Gh06z6); +assign Gh06z6 = (Oh06z6 & Wh06z6); +assign Wh06z6 = (~(Ei06z6 & Bu5nv6)); +assign Ei06z6 = (Oociw6 ^ HADDRI[21]); +assign Oociw6 = (!U687z6); +assign Oh06z6 = (~(Mi06z6 & I16nv6)); +assign Mi06z6 = (Kmciw6 ^ HADDRI[20]); +assign Kmciw6 = (!O587z6); +assign Yg06z6 = (Ui06z6 & Cj06z6); +assign Cj06z6 = (~(Kj06z6 & E75nv6)); +assign Kj06z6 = (Ukciw6 ^ HADDRI[19]); +assign Ui06z6 = (~(Sj06z6 & Se5nv6)); +assign Sj06z6 = (Ejciw6 ^ HADDRI[18]); +assign Ig06z6 = (Ak06z6 & Ik06z6); +assign Ak06z6 = (Qk06z6 & Yk06z6); +assign Yk06z6 = (~(Gl06z6 & Gm5nv6)); +assign Gl06z6 = (Ohciw6 ^ HADDRI[17]); +assign Ohciw6 = (!M687z6); +assign Qk06z6 = (~(Ol06z6 & Ro5nv6)); +assign Ol06z6 = (Wl06z6 ^ Em06z6); +assign Wtz5z6 = (~(Crz5z6 | Mqz5z6)); +assign Mqz5z6 = (Mm06z6 & Um06z6); +assign Um06z6 = (Cn06z6 & Kn06z6); +assign Kn06z6 = (Sn06z6 & Ao06z6); +assign Ao06z6 = (Io06z6 & Qo06z6); +assign Qo06z6 = (~(C8ket6 | Yo06z6)); +assign Yo06z6 = (Gp06z6 & Pk8nv6); +assign Gp06z6 = (Az3nv6 ^ Op06z6); +assign Io06z6 = (Wp06z6 & Eq06z6); +assign Eq06z6 = (~(Mq06z6 & U58nv6)); +assign Mq06z6 = (Kj3nv6 ^ Uq06z6); +assign Kj3nv6 = (!HADDRI[7]); +assign Wp06z6 = (~(Cr06z6 & Id8nv6)); +assign Cr06z6 = (Yq3nv6 ^ Kr06z6); +assign Yq3nv6 = (!HADDRI[6]); +assign Sn06z6 = (Sr06z6 & As06z6); +assign As06z6 = (Is06z6 & Qs06z6); +assign Qs06z6 = (~(Ys06z6 & Tt8nv6)); +assign Ys06z6 = (Gt06z6 ^ Ot06z6); +assign Gt06z6 = (!HADDRI[15]); +assign Is06z6 = (~(Wt06z6 & Wy8nv6)); +assign Wt06z6 = (Eu06z6 ^ Mu06z6); +assign Eu06z6 = (!HADDRI[14]); +assign Sr06z6 = (Uu06z6 & Cv06z6); +assign Cv06z6 = (~(Kv06z6 & N58nv6)); +assign Kv06z6 = (Sv06z6 ^ Aw06z6); +assign Sv06z6 = (!HADDRI[13]); +assign Uu06z6 = (~(Iw06z6 & Bd8nv6)); +assign Iw06z6 = (Qw06z6 ^ Yw06z6); +assign Qw06z6 = (!HADDRI[12]); +assign Cn06z6 = (Gx06z6 & Ox06z6); +assign Ox06z6 = (Wx06z6 & Ey06z6); +assign Ey06z6 = (My06z6 & Uy06z6); +assign Uy06z6 = (~(Cz06z6 & Wk8nv6)); +assign Cz06z6 = (Kz06z6 ^ Sz06z6); +assign Kz06z6 = (!HADDRI[11]); +assign My06z6 = (~(A016z6 & Lp8nv6)); +assign A016z6 = (I016z6 ^ Q016z6); +assign I016z6 = (!HADDRI[10]); +assign Wx06z6 = (Y016z6 & G116z6); +assign G116z6 = (~(O116z6 & W116z6)); +assign O116z6 = (E216z6 ^ M216z6); +assign E216z6 = (!HADDRI[9]); +assign Y016z6 = (~(U216z6 & Ik8nv6)); +assign U216z6 = (M606z6 ^ C316z6); +assign Gx06z6 = (K316z6 & S316z6); +assign S316z6 = (~(A416z6 & Vg8nv6)); +assign A416z6 = (I416z6 ^ Bw3nv6); +assign K316z6 = (Q416z6 & Y416z6); +assign Y416z6 = (~(G516z6 & T18nv6)); +assign G516z6 = (Eg3nv6 ^ O516z6); +assign Q416z6 = (~(W516z6 & H98nv6)); +assign W516z6 = (Zn3nv6 ^ E616z6); +assign Mm06z6 = (M616z6 & U616z6); +assign U616z6 = (C716z6 & K716z6); +assign K716z6 = (S716z6 & A816z6); +assign A816z6 = (I816z6 & Q816z6); +assign Q816z6 = (~(Y816z6 & G916z6)); +assign Y816z6 = (Tpmyx6 ^ O916z6); +assign Tpmyx6 = (!HADDRI[28]); +assign I816z6 = (~(W916z6 & Jv8nv6)); +assign W916z6 = (Vsmyx6 ^ Ea16z6); +assign Vsmyx6 = (!HADDRI[27]); +assign S716z6 = (Ma16z6 & Ua16z6); +assign Ua16z6 = (~(Cb16z6 & Q29nv6)); +assign Cb16z6 = (Dtmyx6 ^ Kb16z6); +assign Dtmyx6 = (!HADDRI[26]); +assign Ma16z6 = (~(Sb16z6 & Q38nv6)); +assign Sb16z6 = (Bqmyx6 ^ Ac16z6); +assign C716z6 = (Ic16z6 & Qc16z6); +assign Qc16z6 = (~(Yc16z6 & Co8nv6)); +assign Yc16z6 = (Jqmyx6 ^ Gd16z6); +assign Jqmyx6 = (!HADDRI[22]); +assign Ic16z6 = (Od16z6 & Wd16z6); +assign Wd16z6 = (~(Ee16z6 & Eb8nv6)); +assign Ee16z6 = (Rqmyx6 ^ Me16z6); +assign Od16z6 = (~(Ue16z6 & Si8nv6)); +assign Ue16z6 = (Fsmyx6 ^ Cf16z6); +assign Fsmyx6 = (!HADDRI[23]); +assign M616z6 = (Kf16z6 & Sf16z6); +assign Sf16z6 = (Ag16z6 & Ig16z6); +assign Ig16z6 = (Qg16z6 & Yg16z6); +assign Yg16z6 = (~(Gh16z6 & Mt8nv6)); +assign Gh16z6 = (Zqmyx6 ^ Oh16z6); +assign Zqmyx6 = (!HADDRI[21]); +assign Qg16z6 = (~(Wh16z6 & M09nv6)); +assign Wh16z6 = (Nsmyx6 ^ Ei16z6); +assign Nsmyx6 = (!HADDRI[20]); +assign Ag16z6 = (Mi16z6 & Ui16z6); +assign Ui16z6 = (~(Cj16z6 & W68nv6)); +assign Cj16z6 = (Kj16z6 ^ Sj16z6); +assign Kj16z6 = (!HADDRI[19]); +assign Mi16z6 = (~(Ak16z6 & Ke8nv6)); +assign Ak16z6 = (Ik16z6 ^ Qk16z6); +assign Ik16z6 = (!HADDRI[18]); +assign Kf16z6 = (Yk16z6 & Gl16z6); +assign Yk16z6 = (Ol16z6 & Wl16z6); +assign Wl16z6 = (~(Em16z6 & Yl8nv6)); +assign Em16z6 = (Mm16z6 ^ Um16z6); +assign Mm16z6 = (!HADDRI[17]); +assign Ol16z6 = (~(Cn16z6 & Jo8nv6)); +assign Cn16z6 = (Wl06z6 ^ Kn16z6); +assign Crz5z6 = (Sn16z6 & Ao16z6); +assign Ao16z6 = (Io16z6 & Qo16z6); +assign Qo16z6 = (Yo16z6 & Gp16z6); +assign Gp16z6 = (Op16z6 & Wp16z6); +assign Wp16z6 = (~(C0let6 | Eq16z6)); +assign Eq16z6 = (Mq16z6 & T27nv6); +assign Mq16z6 = (Az3nv6 ^ Uq16z6); +assign Op16z6 = (Cr16z6 & Kr16z6); +assign Kr16z6 = (~(Sr16z6 & Yn6nv6)); +assign Sr16z6 = (Gsbiw6 ^ HADDRI[7]); +assign Cr16z6 = (~(Mv6nv6 & As16z6)); +assign As16z6 = (Apbiw6 ^ HADDRI[6]); +assign Yo16z6 = (Is16z6 & Qs16z6); +assign Qs16z6 = (Ys16z6 & Gt16z6); +assign Gt16z6 = (~(Ot16z6 & Xb7nv6)); +assign Ot16z6 = (Zcciw6 ^ HADDRI[15]); +assign Ys16z6 = (~(Wt16z6 & Ah7nv6)); +assign Wt16z6 = (Vaciw6 ^ HADDRI[14]); +assign Is16z6 = (Eu16z6 & Mu16z6); +assign Mu16z6 = (~(Uu16z6 & Rn6nv6)); +assign Uu16z6 = (F9ciw6 ^ HADDRI[13]); +assign Eu16z6 = (~(Cv16z6 & Fv6nv6)); +assign Cv16z6 = (I7ciw6 ^ HADDRI[12]); +assign Io16z6 = (Kv16z6 & Sv16z6); +assign Sv16z6 = (Aw16z6 & Iw16z6); +assign Iw16z6 = (Qw16z6 & Yw16z6); +assign Yw16z6 = (~(Gx16z6 & A37nv6)); +assign Gx16z6 = (V3ciw6 ^ HADDRI[11]); +assign Qw16z6 = (~(Ox16z6 & P77nv6)); +assign Ox16z6 = (P0ciw6 ^ HADDRI[10]); +assign Aw16z6 = (Wx16z6 & Ey16z6); +assign Ey16z6 = (~(My16z6 & Uy16z6)); +assign My16z6 = (Zybiw6 ^ HADDRI[9]); +assign Wx16z6 = (~(Cz16z6 & M27nv6)); +assign Cz16z6 = (M606z6 ^ Kz16z6); +assign Kv16z6 = (Sz16z6 & A026z6); +assign A026z6 = (~(I026z6 & Zy6nv6)); +assign I026z6 = (Bkfnv6 ^ S4diw6); +assign Sz16z6 = (Q026z6 & Y026z6); +assign Y026z6 = (~(G126z6 & Xj6nv6)); +assign G126z6 = (Ee87z6 ^ Eg3nv6); +assign Q026z6 = (~(O126z6 & Lr6nv6)); +assign O126z6 = (I6diw6 ^ Ujfnv6); +assign I6diw6 = (!Ag87z6); +assign Sn16z6 = (W126z6 & E226z6); +assign E226z6 = (M226z6 & U226z6); +assign U226z6 = (C326z6 & K326z6); +assign K326z6 = (S326z6 & A426z6); +assign A426z6 = (~(I426z6 & Q426z6)); +assign I426z6 = (V2diw6 ^ HADDRI[28]); +assign S326z6 = (~(Y426z6 & Nd7nv6)); +assign Y426z6 = (Y0diw6 ^ HADDRI[27]); +assign C326z6 = (G526z6 & O526z6); +assign O526z6 = (~(W526z6 & Bl7nv6)); +assign W526z6 = (Izciw6 ^ HADDRI[26]); +assign Izciw6 = (!Ue87z6); +assign G526z6 = (~(E626z6 & Ul6nv6)); +assign E626z6 = (Zxciw6 ^ HADDRI[25]); +assign Zxciw6 = (!Me87z6); +assign M226z6 = (M626z6 & U626z6); +assign U626z6 = (~(C726z6 & G67nv6)); +assign C726z6 = (Eqciw6 ^ HADDRI[22]); +assign M626z6 = (K726z6 & S726z6); +assign S726z6 = (~(A826z6 & It6nv6)); +assign A826z6 = (Rqmyx6 ^ I826z6); +assign K726z6 = (~(Q826z6 & W07nv6)); +assign Q826z6 = (Bsciw6 ^ HADDRI[23]); +assign Bsciw6 = (!Ol77z6); +assign W126z6 = (Y826z6 & G926z6); +assign G926z6 = (O926z6 & W926z6); +assign W926z6 = (Ea26z6 & Ma26z6); +assign Ma26z6 = (~(Ua26z6 & Qb7nv6)); +assign Ua26z6 = (Aociw6 ^ HADDRI[21]); +assign Aociw6 = (!Od87z6); +assign Ea26z6 = (~(Cb26z6 & Ej7nv6)); +assign Cb26z6 = (Dmciw6 ^ HADDRI[20]); +assign Dmciw6 = (!Ic87z6); +assign O926z6 = (Kb26z6 & Sb26z6); +assign Sb26z6 = (~(Ac26z6 & Ap6nv6)); +assign Ac26z6 = (Nkciw6 ^ HADDRI[19]); +assign Kb26z6 = (~(Ic26z6 & Ow6nv6)); +assign Ic26z6 = (Xiciw6 ^ HADDRI[18]); +assign Y826z6 = (Qc26z6 & Yc26z6); +assign Qc26z6 = (Gd26z6 & Od26z6); +assign Od26z6 = (~(Wd26z6 & C47nv6)); +assign Wd26z6 = (Hhciw6 ^ HADDRI[17]); +assign Hhciw6 = (!Gd87z6); +assign Gd26z6 = (~(Ee26z6 & N67nv6)); +assign Ee26z6 = (Wl06z6 ^ Me26z6); +assign Otz5z6 = (~(Wpz5z6 | Knz5z6)); +assign Knz5z6 = (Ue26z6 & Cf26z6); +assign Cf26z6 = (Kf26z6 & Sf26z6); +assign Sf26z6 = (Ag26z6 & Ig26z6); +assign Ig26z6 = (Qg26z6 & Yg26z6); +assign Yg26z6 = (~(Cwhet6 | Gh26z6)); +assign Gh26z6 = (Oh26z6 & U0dnv6); +assign Oh26z6 = (Az3nv6 ^ Wh26z6); +assign Qg26z6 = (Ei26z6 & Mi26z6); +assign Mi26z6 = (~(Ui26z6 & Zlcnv6)); +assign Ui26z6 = (Jqbiw6 ^ HADDRI[7]); +assign Ei26z6 = (~(Ntcnv6 & Cj26z6)); +assign Cj26z6 = (Fobiw6 ^ HADDRI[6]); +assign Ag26z6 = (Kj26z6 & Sj26z6); +assign Sj26z6 = (Ak26z6 & Ik26z6); +assign Ik26z6 = (~(Qk26z6 & Y9dnv6)); +assign Qk26z6 = (Xbciw6 ^ HADDRI[15]); +assign Ak26z6 = (~(Yk26z6 & Bfdnv6)); +assign Yk26z6 = (Aaciw6 ^ HADDRI[14]); +assign Kj26z6 = (Gl26z6 & Ol26z6); +assign Ol26z6 = (~(Wl26z6 & Slcnv6)); +assign Wl26z6 = (K8ciw6 ^ HADDRI[13]); +assign Gl26z6 = (~(Em26z6 & Gtcnv6)); +assign Em26z6 = (L5ciw6 ^ HADDRI[12]); +assign Kf26z6 = (Mm26z6 & Um26z6); +assign Um26z6 = (Cn26z6 & Kn26z6); +assign Kn26z6 = (Sn26z6 & Ao26z6); +assign Ao26z6 = (~(Io26z6 & B1dnv6)); +assign Io26z6 = (Y1ciw6 ^ HADDRI[11]); +assign Sn26z6 = (~(Qo26z6 & Q5dnv6)); +assign Qo26z6 = (Uzbiw6 ^ HADDRI[10]); +assign Cn26z6 = (Yo26z6 & Gp26z6); +assign Gp26z6 = (~(Op26z6 & Wp26z6)); +assign Op26z6 = (Eybiw6 ^ HADDRI[9]); +assign Yo26z6 = (~(Eq26z6 & N0dnv6)); +assign Eq26z6 = (M606z6 ^ Mq26z6); +assign Mm26z6 = (Uq26z6 & Cr26z6); +assign Cr26z6 = (~(Kr26z6 & Axcnv6)); +assign Kr26z6 = (Bkfnv6 ^ X3diw6); +assign Uq26z6 = (Sr26z6 & As26z6); +assign As26z6 = (~(Is26z6 & Yhcnv6)); +assign Is26z6 = (Yk87z6 ^ Eg3nv6); +assign Sr26z6 = (~(Qs26z6 & Mpcnv6)); +assign Qs26z6 = (N5diw6 ^ Ujfnv6); +assign N5diw6 = (!Um87z6); +assign Ue26z6 = (Ys26z6 & Gt26z6); +assign Gt26z6 = (Ot26z6 & Wt26z6); +assign Wt26z6 = (Eu26z6 & Mu26z6); +assign Mu26z6 = (Uu26z6 & Cv26z6); +assign Cv26z6 = (~(Kv26z6 & Sv26z6)); +assign Kv26z6 = (A2diw6 ^ HADDRI[28]); +assign Uu26z6 = (~(Aw26z6 & Obdnv6)); +assign Aw26z6 = (D0diw6 ^ HADDRI[27]); +assign Eu26z6 = (Iw26z6 & Qw26z6); +assign Qw26z6 = (~(Yw26z6 & Vidnv6)); +assign Yw26z6 = (Nyciw6 ^ HADDRI[26]); +assign Nyciw6 = (!Ol87z6); +assign Iw26z6 = (~(Gx26z6 & Vjcnv6)); +assign Gx26z6 = (Exciw6 ^ HADDRI[25]); +assign Exciw6 = (!Gl87z6); +assign Ot26z6 = (Ox26z6 & Wx26z6); +assign Wx26z6 = (~(Ey26z6 & H4dnv6)); +assign Ey26z6 = (Jpciw6 ^ HADDRI[22]); +assign Ox26z6 = (My26z6 & Uy26z6); +assign Uy26z6 = (~(Cz26z6 & Jrcnv6)); +assign Cz26z6 = (Rqmyx6 ^ Kz26z6); +assign My26z6 = (~(Sz26z6 & Xycnv6)); +assign Sz26z6 = (Grciw6 ^ HADDRI[23]); +assign Grciw6 = (!Mm77z6); +assign Ys26z6 = (A036z6 & I036z6); +assign I036z6 = (Q036z6 & Y036z6); +assign Y036z6 = (G136z6 & O136z6); +assign O136z6 = (~(W136z6 & R9dnv6)); +assign W136z6 = (Fnciw6 ^ HADDRI[21]); +assign Fnciw6 = (!Ik87z6); +assign G136z6 = (~(E236z6 & Rgdnv6)); +assign E236z6 = (Ilciw6 ^ HADDRI[20]); +assign Ilciw6 = (!Cj87z6); +assign Q036z6 = (M236z6 & U236z6); +assign U236z6 = (~(C336z6 & Bncnv6)); +assign C336z6 = (Sjciw6 ^ HADDRI[19]); +assign M236z6 = (~(K336z6 & Pucnv6)); +assign K336z6 = (Ciciw6 ^ HADDRI[18]); +assign A036z6 = (S336z6 & A436z6); +assign S336z6 = (I436z6 & Q436z6); +assign Q436z6 = (~(Y436z6 & D2dnv6)); +assign Y436z6 = (Mgciw6 ^ HADDRI[17]); +assign Mgciw6 = (!Ak87z6); +assign I436z6 = (~(G536z6 & O4dnv6)); +assign G536z6 = (Wl06z6 ^ O536z6); +assign Wpz5z6 = (!Aoz5z6); +assign Aoz5z6 = (~(W536z6 | Qoz5z6)); +assign Qoz5z6 = (!Opz5z6); +assign Opz5z6 = (~(E636z6 & M636z6)); +assign M636z6 = (U636z6 & C736z6); +assign C736z6 = (K736z6 & S736z6); +assign S736z6 = (A836z6 & I836z6); +assign I836z6 = (~(Cgjet6 | Q836z6)); +assign Q836z6 = (Y836z6 & X1anv6); +assign Y836z6 = (Az3nv6 ^ G936z6); +assign A836z6 = (O936z6 & W936z6); +assign W936z6 = (~(Ea36z6 & Cn9nv6)); +assign Ea36z6 = (Lrbiw6 ^ HADDRI[7]); +assign O936z6 = (~(Qu9nv6 & Ma36z6)); +assign Ma36z6 = (Tobiw6 ^ HADDRI[6]); +assign K736z6 = (Ua36z6 & Cb36z6); +assign Cb36z6 = (Kb36z6 & Sb36z6); +assign Sb36z6 = (~(Ac36z6 & Bbanv6)); +assign Ac36z6 = (Lcciw6 ^ HADDRI[15]); +assign Kb36z6 = (~(Ic36z6 & Eganv6)); +assign Ic36z6 = (Oaciw6 ^ HADDRI[14]); +assign Ua36z6 = (Qc36z6 & Yc36z6); +assign Yc36z6 = (~(Gd36z6 & Vm9nv6)); +assign Gd36z6 = (Y8ciw6 ^ HADDRI[13]); +assign Qc36z6 = (~(Od36z6 & Ju9nv6)); +assign Od36z6 = (N6ciw6 ^ HADDRI[12]); +assign U636z6 = (Wd36z6 & Ee36z6); +assign Ee36z6 = (Me36z6 & Ue36z6); +assign Ue36z6 = (Cf36z6 & Kf36z6); +assign Kf36z6 = (~(Sf36z6 & E2anv6)); +assign Sf36z6 = (A3ciw6 ^ HADDRI[11]); +assign Cf36z6 = (~(Ag36z6 & T6anv6)); +assign Ag36z6 = (I0ciw6 ^ HADDRI[10]); +assign Me36z6 = (Ig36z6 & Qg36z6); +assign Qg36z6 = (~(Yg36z6 & Gh36z6)); +assign Yg36z6 = (Sybiw6 ^ HADDRI[9]); +assign Ig36z6 = (~(Oh36z6 & Q1anv6)); +assign Oh36z6 = (HADDRI[8] ^ Bal7z6[8]); +assign Wd36z6 = (Wh36z6 & Ei36z6); +assign Ei36z6 = (~(Mi36z6 & Dy9nv6)); +assign Mi36z6 = (Bkfnv6 ^ L4diw6); +assign Wh36z6 = (Ui36z6 & Cj36z6); +assign Cj36z6 = (~(Kj36z6 & Bj9nv6)); +assign Kj36z6 = (Jadiw6 ^ Njfnv6); +assign Jadiw6 = (!My87z6); +assign Ui36z6 = (~(Sj36z6 & Pq9nv6)); +assign Sj36z6 = (B6diw6 ^ Ujfnv6); +assign B6diw6 = (!I097z6); +assign E636z6 = (Ak36z6 & Ik36z6); +assign Ik36z6 = (Qk36z6 & Yk36z6); +assign Yk36z6 = (Gl36z6 & Ol36z6); +assign Ol36z6 = (Wl36z6 & Em36z6); +assign Em36z6 = (~(Mm36z6 & Um36z6)); +assign Mm36z6 = (O2diw6 ^ HADDRI[28]); +assign Wl36z6 = (~(Cn36z6 & Rcanv6)); +assign Cn36z6 = (R0diw6 ^ HADDRI[27]); +assign Gl36z6 = (Kn36z6 & Sn36z6); +assign Sn36z6 = (~(Ao36z6 & Yjanv6)); +assign Ao36z6 = (Bzciw6 ^ HADDRI[26]); +assign Bzciw6 = (!Cz87z6); +assign Kn36z6 = (~(Io36z6 & Yk9nv6)); +assign Io36z6 = (Sxciw6 ^ HADDRI[25]); +assign Sxciw6 = (!Uy87z6); +assign Qk36z6 = (Qo36z6 & Yo36z6); +assign Yo36z6 = (~(Gp36z6 & K5anv6)); +assign Gp36z6 = (Xpciw6 ^ HADDRI[22]); +assign Qo36z6 = (Op36z6 & Wp36z6); +assign Wp36z6 = (~(Eq36z6 & Ms9nv6)); +assign Eq36z6 = (HADDRI[24] ^ Bal7z6[24]); +assign Op36z6 = (~(Mq36z6 & A0anv6)); +assign Mq36z6 = (Urciw6 ^ HADDRI[23]); +assign Urciw6 = (!Wl77z6); +assign Ak36z6 = (Uq36z6 & Cr36z6); +assign Cr36z6 = (Kr36z6 & Sr36z6); +assign Sr36z6 = (As36z6 & Is36z6); +assign Is36z6 = (~(Qs36z6 & Uaanv6)); +assign Qs36z6 = (Tnciw6 ^ HADDRI[21]); +assign Tnciw6 = (!Wx87z6); +assign As36z6 = (~(Ys36z6 & Uhanv6)); +assign Ys36z6 = (Wlciw6 ^ HADDRI[20]); +assign Wlciw6 = (!Qw87z6); +assign Kr36z6 = (Gt36z6 & Ot36z6); +assign Ot36z6 = (~(Wt36z6 & Eo9nv6)); +assign Wt36z6 = (Gkciw6 ^ HADDRI[19]); +assign Gt36z6 = (~(Eu36z6 & Sv9nv6)); +assign Eu36z6 = (Qiciw6 ^ HADDRI[18]); +assign Uq36z6 = (Mu36z6 & Uu36z6); +assign Mu36z6 = (Cv36z6 & Kv36z6); +assign Kv36z6 = (~(Sv36z6 & G3anv6)); +assign Sv36z6 = (Ahciw6 ^ HADDRI[17]); +assign Ahciw6 = (!Ox87z6); +assign Cv36z6 = (~(Aw36z6 & R5anv6)); +assign Aw36z6 = (HADDRI[16] ^ Bal7z6[16]); +assign W536z6 = (Iw36z6 & Qw36z6); +assign Qw36z6 = (Yw36z6 & Gx36z6); +assign Gx36z6 = (Ox36z6 & Wx36z6); +assign Wx36z6 = (Ey36z6 & My36z6); +assign My36z6 = (~(Coiet6 | Uy36z6)); +assign Uy36z6 = (Cz36z6 & Mjbnv6); +assign Cz36z6 = (Az3nv6 ^ Kz36z6); +assign Ey36z6 = (Sz36z6 & A046z6); +assign A046z6 = (~(I046z6 & R4bnv6)); +assign I046z6 = (Xqbiw6 ^ HADDRI[7]); +assign Sz36z6 = (~(Fcbnv6 & Q046z6)); +assign Q046z6 = (Mobiw6 ^ HADDRI[6]); +assign Ox36z6 = (Y046z6 & G146z6); +assign G146z6 = (O146z6 & W146z6); +assign W146z6 = (~(E246z6 & Qsbnv6)); +assign E246z6 = (Ecciw6 ^ HADDRI[15]); +assign O146z6 = (~(M246z6 & Txbnv6)); +assign M246z6 = (Haciw6 ^ HADDRI[14]); +assign Y046z6 = (U246z6 & C346z6); +assign C346z6 = (~(K346z6 & K4bnv6)); +assign K346z6 = (R8ciw6 ^ HADDRI[13]); +assign U246z6 = (~(S346z6 & Ybbnv6)); +assign S346z6 = (Z5ciw6 ^ HADDRI[12]); +assign Yw36z6 = (A446z6 & I446z6); +assign I446z6 = (Q446z6 & Y446z6); +assign Y446z6 = (G546z6 & O546z6); +assign O546z6 = (~(W546z6 & Tjbnv6)); +assign W546z6 = (M2ciw6 ^ HADDRI[11]); +assign G546z6 = (~(E646z6 & Iobnv6)); +assign E646z6 = (B0ciw6 ^ HADDRI[10]); +assign Q446z6 = (M646z6 & U646z6); +assign U646z6 = (~(C746z6 & K746z6)); +assign C746z6 = (Lybiw6 ^ HADDRI[9]); +assign M646z6 = (~(S746z6 & Fjbnv6)); +assign S746z6 = (M606z6 ^ A846z6); +assign A446z6 = (I846z6 & Q846z6); +assign Q846z6 = (~(Y846z6 & Sfbnv6)); +assign Y846z6 = (Bkfnv6 ^ E4diw6); +assign I846z6 = (G946z6 & O946z6); +assign O946z6 = (~(W946z6 & Q0bnv6)); +assign W946z6 = (Sr87z6 ^ Eg3nv6); +assign G946z6 = (~(Ea46z6 & E8bnv6)); +assign Ea46z6 = (U5diw6 ^ Ujfnv6); +assign U5diw6 = (!Ot87z6); +assign Iw36z6 = (Ma46z6 & Ua46z6); +assign Ua46z6 = (Cb46z6 & Kb46z6); +assign Kb46z6 = (Sb46z6 & Ac46z6); +assign Ac46z6 = (Ic46z6 & Qc46z6); +assign Qc46z6 = (~(Yc46z6 & Gd46z6)); +assign Yc46z6 = (H2diw6 ^ HADDRI[28]); +assign Ic46z6 = (~(Od46z6 & Gubnv6)); +assign Od46z6 = (K0diw6 ^ HADDRI[27]); +assign Sb46z6 = (Wd46z6 & Ee46z6); +assign Ee46z6 = (~(Me46z6 & N1cnv6)); +assign Me46z6 = (Uyciw6 ^ HADDRI[26]); +assign Uyciw6 = (!Is87z6); +assign Wd46z6 = (~(Ue46z6 & N2bnv6)); +assign Ue46z6 = (Lxciw6 ^ HADDRI[25]); +assign Lxciw6 = (!As87z6); +assign Cb46z6 = (Cf46z6 & Kf46z6); +assign Kf46z6 = (~(Sf46z6 & Zmbnv6)); +assign Sf46z6 = (Qpciw6 ^ HADDRI[22]); +assign Cf46z6 = (Ag46z6 & Ig46z6); +assign Ig46z6 = (~(Qg46z6 & Babnv6)); +assign Qg46z6 = (Rqmyx6 ^ Yg46z6); +assign Rqmyx6 = (!HADDRI[24]); +assign Ag46z6 = (~(Gh46z6 & Phbnv6)); +assign Gh46z6 = (Nrciw6 ^ HADDRI[23]); +assign Nrciw6 = (!Em77z6); +assign Ma46z6 = (Oh46z6 & Wh46z6); +assign Wh46z6 = (Ei46z6 & Mi46z6); +assign Mi46z6 = (Ui46z6 & Cj46z6); +assign Cj46z6 = (~(Kj46z6 & Jsbnv6)); +assign Kj46z6 = (Mnciw6 ^ HADDRI[21]); +assign Mnciw6 = (!Cr87z6); +assign Ui46z6 = (~(Sj46z6 & Jzbnv6)); +assign Sj46z6 = (Plciw6 ^ HADDRI[20]); +assign Plciw6 = (!Wp87z6); +assign Ei46z6 = (Ak46z6 & Ik46z6); +assign Ik46z6 = (~(Qk46z6 & T5bnv6)); +assign Qk46z6 = (Zjciw6 ^ HADDRI[19]); +assign Ak46z6 = (~(Yk46z6 & Hdbnv6)); +assign Yk46z6 = (Jiciw6 ^ HADDRI[18]); +assign Oh46z6 = (Gl46z6 & Ol46z6); +assign Gl46z6 = (Wl46z6 & Em46z6); +assign Em46z6 = (~(Mm46z6 & Vkbnv6)); +assign Mm46z6 = (Tgciw6 ^ HADDRI[17]); +assign Tgciw6 = (!Uq87z6); +assign Wl46z6 = (~(Um46z6 & Gnbnv6)); +assign Um46z6 = (Wl06z6 ^ Cn46z6); +assign Ysz5z6 = (~(Txnyx6 & Vbm7z6[22])); +assign Txnyx6 = (Kn46z6 & Sn46z6); +assign Sn46z6 = (Ao46z6 & Io46z6); +assign Io46z6 = (Qo46z6 & Yo46z6); +assign Yo46z6 = (Gp46z6 & Op46z6); +assign Op46z6 = (~(Ckmet6 | Wp46z6)); +assign Wp46z6 = (Eq46z6 & Hz3nv6); +assign Eq46z6 = (Az3nv6 ^ Mq46z6); +assign Az3nv6 = (!HADDRI[5]); +assign HADDRI[5] = (Crcdt6 ? Dvc7z6[5] : X0d7z6[5]); +assign X0d7z6[5] = (~(Uq46z6 & Cr46z6)); +assign Cr46z6 = (Kr46z6 & Sr46z6); +assign Sr46z6 = (~(Pic7z6[5] & Ir0ov6)); +assign Kr46z6 = (As46z6 & Is46z6); +assign Is46z6 = (Qs46z6 | Ke0ov6); +assign Ke0ov6 = (Ys46z6 & Gt46z6); +assign Gt46z6 = (~(Wkd7z6[5] & Ddmhw6)); +assign Ys46z6 = (Ot46z6 & Wt46z6); +assign Wt46z6 = (~(Xhd7z6[5] & Eu46z6)); +assign Ot46z6 = (~(Vnd7z6[5] & Jamnv6)); +assign As46z6 = (~(Pdc7z6[5] & Mu46z6)); +assign Uq46z6 = (Uu46z6 & Cv46z6); +assign Cv46z6 = (~(Znnov6 & P2j7z6[3])); +assign Uu46z6 = (~(Qdcdt6 & Fhc7z6[5])); +assign Gp46z6 = (Kv46z6 & Sv46z6); +assign Sv46z6 = (~(Aw46z6 & Dj3nv6)); +assign Aw46z6 = (Btbiw6 ^ HADDRI[7]); +assign HADDRI[7] = (Crcdt6 ? Dvc7z6[7] : X0d7z6[7]); +assign X0d7z6[7] = (~(Iw46z6 & Qw46z6)); +assign Qw46z6 = (Yw46z6 & Gx46z6); +assign Gx46z6 = (~(Pdc7z6[7] & Mu46z6)); +assign Yw46z6 = (Ox46z6 & Wx46z6); +assign Wx46z6 = (~(Znnov6 & Ey46z6)); +assign Ey46z6 = (Qti7z6[7] | P2j7z6[5]); +assign Ox46z6 = (Qs46z6 | I60ov6); +assign I60ov6 = (My46z6 & Uy46z6); +assign Uy46z6 = (~(Wkd7z6[7] & Ddmhw6)); +assign My46z6 = (Cz46z6 & Kz46z6); +assign Kz46z6 = (~(Xhd7z6[7] & Eu46z6)); +assign Cz46z6 = (~(Vnd7z6[7] & Jamnv6)); +assign Iw46z6 = (Sz46z6 & A056z6); +assign A056z6 = (~(Pic7z6[7] & Ir0ov6)); +assign Sz46z6 = (~(Qdcdt6 & Fhc7z6[7])); +assign Kv46z6 = (~(Fr3nv6 & I056z6)); +assign I056z6 = (Opbiw6 ^ HADDRI[6]); +assign HADDRI[6] = (Crcdt6 ? Dvc7z6[6] : X0d7z6[6]); +assign X0d7z6[6] = (~(Q056z6 & Y056z6)); +assign Y056z6 = (G156z6 & O156z6); +assign O156z6 = (~(Pic7z6[6] & Ir0ov6)); +assign G156z6 = (W156z6 & E256z6); +assign E256z6 = (Qs46z6 | Ja0ov6); +assign Ja0ov6 = (M256z6 & U256z6); +assign U256z6 = (~(Wkd7z6[6] & Ddmhw6)); +assign M256z6 = (C356z6 & K356z6); +assign K356z6 = (~(Xhd7z6[6] & Eu46z6)); +assign C356z6 = (~(Vnd7z6[6] & Jamnv6)); +assign W156z6 = (~(Pdc7z6[6] & Mu46z6)); +assign Q056z6 = (S356z6 & A456z6); +assign A456z6 = (~(Znnov6 & P2j7z6[4])); +assign S356z6 = (~(Qdcdt6 & Fhc7z6[6])); +assign Qo46z6 = (I456z6 & Q456z6); +assign Q456z6 = (Y456z6 & G556z6); +assign G556z6 = (~(O556z6 & Hs3nv6)); +assign O556z6 = (Udciw6 ^ HADDRI[15]); +assign HADDRI[15] = (Crcdt6 ? Dvc7z6[15] : X0d7z6[15]); +assign X0d7z6[15] = (~(W556z6 & E656z6)); +assign E656z6 = (M656z6 & U656z6); +assign U656z6 = (~(Pic7z6[15] & Ir0ov6)); +assign M656z6 = (C756z6 & K756z6); +assign K756z6 = (Qs46z6 | Aaznv6); +assign Aaznv6 = (S756z6 & A856z6); +assign A856z6 = (~(Wkd7z6[15] & Ddmhw6)); +assign S756z6 = (I856z6 & Q856z6); +assign Q856z6 = (~(Xhd7z6[15] & Eu46z6)); +assign I856z6 = (~(Vnd7z6[15] & Jamnv6)); +assign C756z6 = (~(Pdc7z6[15] & Mu46z6)); +assign W556z6 = (Y856z6 & G956z6); +assign G956z6 = (~(Pnb7z6[15] & Znnov6)); +assign Y856z6 = (~(Qdcdt6 & Fhc7z6[15])); +assign Y456z6 = (~(O956z6 & J04nv6)); +assign O956z6 = (Jbciw6 ^ HADDRI[14]); +assign HADDRI[14] = (Crcdt6 ? Dvc7z6[14] : X0d7z6[14]); +assign X0d7z6[14] = (~(W956z6 & Ea56z6)); +assign Ea56z6 = (Ma56z6 & Ua56z6); +assign Ua56z6 = (~(Pic7z6[14] & Ir0ov6)); +assign Ma56z6 = (Cb56z6 & Kb56z6); +assign Kb56z6 = (Qs46z6 | Beznv6); +assign Beznv6 = (Sb56z6 & Ac56z6); +assign Ac56z6 = (~(Wkd7z6[14] & Ddmhw6)); +assign Sb56z6 = (Ic56z6 & Qc56z6); +assign Qc56z6 = (~(Xhd7z6[14] & Eu46z6)); +assign Ic56z6 = (~(Vnd7z6[14] & Jamnv6)); +assign Cb56z6 = (~(Pdc7z6[14] & Mu46z6)); +assign W956z6 = (Yc56z6 & Gd56z6); +assign Gd56z6 = (~(Pnb7z6[14] & Znnov6)); +assign Yc56z6 = (~(Qdcdt6 & Fhc7z6[14])); +assign I456z6 = (Od56z6 & Wd56z6); +assign Wd56z6 = (~(Ee56z6 & Wi3nv6)); +assign Ee56z6 = (T9ciw6 ^ HADDRI[13]); +assign HADDRI[13] = (Crcdt6 ? Dvc7z6[13] : X0d7z6[13]); +assign X0d7z6[13] = (~(Me56z6 & Ue56z6)); +assign Ue56z6 = (Cf56z6 & Kf56z6); +assign Kf56z6 = (~(Pic7z6[13] & Ir0ov6)); +assign Cf56z6 = (Sf56z6 & Ag56z6); +assign Ag56z6 = (Qs46z6 | Ciznv6); +assign Ciznv6 = (Ig56z6 & Qg56z6); +assign Qg56z6 = (~(Wkd7z6[13] & Ddmhw6)); +assign Ig56z6 = (Yg56z6 & Gh56z6); +assign Gh56z6 = (~(Xhd7z6[13] & Eu46z6)); +assign Yg56z6 = (~(Vnd7z6[13] & Jamnv6)); +assign Sf56z6 = (~(Pdc7z6[13] & Mu46z6)); +assign Me56z6 = (Oh56z6 & Wh56z6); +assign Wh56z6 = (~(Pnb7z6[13] & Znnov6)); +assign Oh56z6 = (~(Qdcdt6 & Fhc7z6[13])); +assign Od56z6 = (~(Ei56z6 & Mr3nv6)); +assign Ei56z6 = (D8ciw6 ^ HADDRI[12]); +assign HADDRI[12] = (Crcdt6 ? Dvc7z6[12] : X0d7z6[12]); +assign X0d7z6[12] = (~(Mi56z6 & Ui56z6)); +assign Ui56z6 = (Cj56z6 & Kj56z6); +assign Kj56z6 = (~(Pic7z6[12] & Ir0ov6)); +assign Cj56z6 = (Sj56z6 & Ak56z6); +assign Ak56z6 = (Qs46z6 | Dmznv6); +assign Dmznv6 = (Ik56z6 & Qk56z6); +assign Qk56z6 = (~(Wkd7z6[12] & Ddmhw6)); +assign Ik56z6 = (Yk56z6 & Gl56z6); +assign Gl56z6 = (~(Xhd7z6[12] & Eu46z6)); +assign Yk56z6 = (~(Vnd7z6[12] & Jamnv6)); +assign Sj56z6 = (~(Pdc7z6[12] & Mu46z6)); +assign Mi56z6 = (Ol56z6 & Wl56z6); +assign Wl56z6 = (~(Pnb7z6[12] & Znnov6)); +assign Ol56z6 = (~(Qdcdt6 & Fhc7z6[12])); +assign Ao46z6 = (Em56z6 & Mm56z6); +assign Mm56z6 = (Um56z6 & Cn56z6); +assign Cn56z6 = (Kn56z6 & Sn56z6); +assign Sn56z6 = (~(Ao56z6 & Oz3nv6)); +assign Ao56z6 = (X4ciw6 ^ HADDRI[11]); +assign HADDRI[11] = (Crcdt6 ? Dvc7z6[11] : X0d7z6[11]); +assign X0d7z6[11] = (~(Io56z6 & Qo56z6)); +assign Qo56z6 = (Yo56z6 & Gp56z6); +assign Gp56z6 = (~(Pic7z6[11] & Ir0ov6)); +assign Yo56z6 = (Op56z6 & Wp56z6); +assign Wp56z6 = (Qs46z6 | Eqznv6); +assign Eqznv6 = (Eq56z6 & Mq56z6); +assign Mq56z6 = (~(Wkd7z6[11] & Ddmhw6)); +assign Eq56z6 = (Uq56z6 & Cr56z6); +assign Cr56z6 = (~(Xhd7z6[11] & Eu46z6)); +assign Uq56z6 = (~(Vnd7z6[11] & Jamnv6)); +assign Op56z6 = (~(Pdc7z6[11] & Mu46z6)); +assign Io56z6 = (Kr56z6 & Sr56z6); +assign Sr56z6 = (~(Pnb7z6[11] & Znnov6)); +assign Kr56z6 = (~(Qdcdt6 & Fhc7z6[11])); +assign Kn56z6 = (~(As56z6 & Is56z6)); +assign As56z6 = (D1ciw6 ^ HADDRI[10]); +assign HADDRI[10] = (Crcdt6 ? Dvc7z6[10] : X0d7z6[10]); +assign X0d7z6[10] = (~(Qs56z6 & Ys56z6)); +assign Ys56z6 = (Gt56z6 & Ot56z6); +assign Ot56z6 = (~(Pic7z6[10] & Ir0ov6)); +assign Gt56z6 = (Wt56z6 & Eu56z6); +assign Eu56z6 = (Qs46z6 | Fuznv6); +assign Fuznv6 = (Mu56z6 & Uu56z6); +assign Uu56z6 = (~(Wkd7z6[10] & Ddmhw6)); +assign Mu56z6 = (Cv56z6 & Kv56z6); +assign Kv56z6 = (~(Xhd7z6[10] & Eu46z6)); +assign Cv56z6 = (~(Vnd7z6[10] & Jamnv6)); +assign Wt56z6 = (~(Pdc7z6[10] & Mu46z6)); +assign Qs56z6 = (Sv56z6 & Aw56z6); +assign Aw56z6 = (~(Pnb7z6[10] & Znnov6)); +assign Sv56z6 = (~(Qdcdt6 & Fhc7z6[10])); +assign Um56z6 = (Iw56z6 & Qw56z6); +assign Qw56z6 = (~(Yw56z6 & Rq3nv6)); +assign Yw56z6 = (Nzbiw6 ^ HADDRI[9]); +assign HADDRI[9] = (Crcdt6 ? Dvc7z6[9] : X0d7z6[9]); +assign X0d7z6[9] = (~(Gx56z6 & Ox56z6)); +assign Ox56z6 = (Wx56z6 & Ey56z6); +assign Ey56z6 = (~(Pic7z6[9] & Ir0ov6)); +assign Wx56z6 = (My56z6 & Uy56z6); +assign Uy56z6 = (Qs46z6 | Gyznv6); +assign Gyznv6 = (Cz56z6 & Kz56z6); +assign Kz56z6 = (~(Wkd7z6[9] & Ddmhw6)); +assign Cz56z6 = (Sz56z6 & A066z6); +assign A066z6 = (~(Xhd7z6[9] & Eu46z6)); +assign Sz56z6 = (~(Vnd7z6[9] & Jamnv6)); +assign My56z6 = (~(Pdc7z6[9] & Mu46z6)); +assign Gx56z6 = (I066z6 & Q066z6); +assign Q066z6 = (~(Qti7z6[9] & Znnov6)); +assign I066z6 = (~(Qdcdt6 & Fhc7z6[9])); +assign Iw56z6 = (~(Y066z6 & Ty3nv6)); +assign Y066z6 = (M606z6 ^ G166z6); +assign M606z6 = (!HADDRI[8]); +assign HADDRI[8] = (Crcdt6 ? Dvc7z6[8] : X0d7z6[8]); +assign X0d7z6[8] = (~(O166z6 & W166z6)); +assign W166z6 = (E266z6 & M266z6); +assign M266z6 = (~(Pdc7z6[8] & Mu46z6)); +assign E266z6 = (U266z6 & C366z6); +assign C366z6 = (~(Znnov6 & K366z6)); +assign K366z6 = (Qti7z6[8] | P2j7z6[6]); +assign U266z6 = (Qs46z6 | H20ov6); +assign H20ov6 = (S366z6 & A466z6); +assign A466z6 = (~(Wkd7z6[8] & Ddmhw6)); +assign S366z6 = (I466z6 & Q466z6); +assign Q466z6 = (~(Xhd7z6[8] & Eu46z6)); +assign I466z6 = (~(Vnd7z6[8] & Jamnv6)); +assign O166z6 = (Y466z6 & G566z6); +assign G566z6 = (~(Pic7z6[8] & Ir0ov6)); +assign Y466z6 = (~(Qdcdt6 & Fhc7z6[8])); +assign Em56z6 = (O566z6 & W566z6); +assign W566z6 = (~(E666z6 & Gv3nv6)); +assign E666z6 = (Bkfnv6 ^ G5diw6); +assign O566z6 = (M666z6 & U666z6); +assign U666z6 = (~(C766z6 & Ve3nv6)); +assign C766z6 = (Iw77z6 ^ Eg3nv6); +assign Eg3nv6 = (!Njfnv6); +assign M666z6 = (~(K766z6 & En3nv6)); +assign K766z6 = (W6diw6 ^ Ujfnv6); +assign W6diw6 = (!Ey77z6); +assign Kn46z6 = (S766z6 & A866z6); +assign A866z6 = (I866z6 & Q866z6); +assign Q866z6 = (Y866z6 & G966z6); +assign G966z6 = (O966z6 & W966z6); +assign W966z6 = (~(Ea66z6 & Ma66z6)); +assign Ea66z6 = (Q3diw6 ^ HADDRI[28]); +assign HADDRI[28] = (Crcdt6 ? Dvc7z6[28] : X0d7z6[28]); +assign X0d7z6[28] = (~(Ua66z6 & Cb66z6)); +assign Cb66z6 = (Kb66z6 & Sb66z6); +assign Sb66z6 = (~(Pic7z6[28] & Ir0ov6)); +assign Kb66z6 = (Ac66z6 & Ic66z6); +assign Ic66z6 = (Qs46z6 | Bnxnv6); +assign Bnxnv6 = (Qc66z6 & Yc66z6); +assign Yc66z6 = (~(Wkd7z6[28] & Ddmhw6)); +assign Qc66z6 = (Gd66z6 & Od66z6); +assign Od66z6 = (~(Xhd7z6[28] & Eu46z6)); +assign Gd66z6 = (~(Vnd7z6[28] & Jamnv6)); +assign Ac66z6 = (~(Pdc7z6[28] & Mu46z6)); +assign Ua66z6 = (Wd66z6 & Ee66z6); +assign Ee66z6 = (~(Pnb7z6[28] & Znnov6)); +assign Wd66z6 = (~(Qdcdt6 & Fhc7z6[28])); +assign O966z6 = (~(Me66z6 & Qm3nv6)); +assign Me66z6 = (M1diw6 ^ HADDRI[27]); +assign HADDRI[27] = (Crcdt6 ? Dvc7z6[27] : X0d7z6[27]); +assign X0d7z6[27] = (~(Ue66z6 & Cf66z6)); +assign Cf66z6 = (Kf66z6 & Sf66z6); +assign Sf66z6 = (~(Pic7z6[27] & Ir0ov6)); +assign Kf66z6 = (Ag66z6 & Ig66z6); +assign Ig66z6 = (Qs46z6 | Qrxnv6); +assign Qrxnv6 = (Qg66z6 & Yg66z6); +assign Yg66z6 = (~(Wkd7z6[27] & Ddmhw6)); +assign Qg66z6 = (Gh66z6 & Oh66z6); +assign Oh66z6 = (~(Xhd7z6[27] & Eu46z6)); +assign Gh66z6 = (~(Vnd7z6[27] & Jamnv6)); +assign Ag66z6 = (~(Pdc7z6[27] & Mu46z6)); +assign Ue66z6 = (Wh66z6 & Ei66z6); +assign Ei66z6 = (~(Pnb7z6[27] & Znnov6)); +assign Wh66z6 = (~(Qdcdt6 & Fhc7z6[27])); +assign Y866z6 = (Mi66z6 & Ui66z6); +assign Ui66z6 = (~(Cj66z6 & Su3nv6)); +assign Cj66z6 = (Wzciw6 ^ HADDRI[26]); +assign HADDRI[26] = (Crcdt6 ? Dvc7z6[26] : X0d7z6[26]); +assign X0d7z6[26] = (~(Kj66z6 & Sj66z6)); +assign Sj66z6 = (Ak66z6 & Ik66z6); +assign Ik66z6 = (~(Pic7z6[26] & Ir0ov6)); +assign Ak66z6 = (Qk66z6 & Yk66z6); +assign Yk66z6 = (Qs46z6 | Fwxnv6); +assign Fwxnv6 = (Gl66z6 & Ol66z6); +assign Ol66z6 = (~(Wkd7z6[26] & Ddmhw6)); +assign Gl66z6 = (Wl66z6 & Em66z6); +assign Em66z6 = (~(Xhd7z6[26] & Eu46z6)); +assign Wl66z6 = (~(Vnd7z6[26] & Jamnv6)); +assign Qk66z6 = (~(Pdc7z6[26] & Mu46z6)); +assign Kj66z6 = (Mm66z6 & Um66z6); +assign Um66z6 = (~(Pnb7z6[26] & Znnov6)); +assign Mm66z6 = (~(Qdcdt6 & Fhc7z6[26])); +assign Wzciw6 = (!Yw77z6); +assign Mi66z6 = (~(Cn66z6 & Jf3nv6)); +assign Cn66z6 = (Bqmyx6 ^ Kn66z6); +assign Bqmyx6 = (!HADDRI[25]); +assign HADDRI[25] = (Crcdt6 ? Dvc7z6[25] : X0d7z6[25]); +assign X0d7z6[25] = (~(Sn66z6 & Ao66z6)); +assign Ao66z6 = (Io66z6 & Qo66z6); +assign Qo66z6 = (~(Pic7z6[25] & Ir0ov6)); +assign Io66z6 = (Yo66z6 & Gp66z6); +assign Gp66z6 = (Qs46z6 | U0ynv6); +assign U0ynv6 = (Op66z6 & Wp66z6); +assign Wp66z6 = (~(Wkd7z6[25] & Ddmhw6)); +assign Op66z6 = (Eq66z6 & Mq66z6); +assign Mq66z6 = (~(Xhd7z6[25] & Eu46z6)); +assign Eq66z6 = (~(Vnd7z6[25] & Jamnv6)); +assign Yo66z6 = (~(Pdc7z6[25] & Mu46z6)); +assign Sn66z6 = (Uq66z6 & Cr66z6); +assign Cr66z6 = (~(Pnb7z6[25] & Znnov6)); +assign Uq66z6 = (~(Qdcdt6 & Fhc7z6[25])); +assign I866z6 = (Kr66z6 & Sr66z6); +assign Sr66z6 = (~(As66z6 & Zg3nv6)); +assign As66z6 = (Sqciw6 ^ HADDRI[22]); +assign HADDRI[22] = (Crcdt6 ? Dvc7z6[22] : X0d7z6[22]); +assign X0d7z6[22] = (~(Is66z6 & Qs66z6)); +assign Qs66z6 = (Ys66z6 & Gt66z6); +assign Gt66z6 = (~(Pic7z6[22] & Ir0ov6)); +assign Ys66z6 = (Ot66z6 & Wt66z6); +assign Wt66z6 = (Qs46z6 | Zdynv6); +assign Zdynv6 = (Eu66z6 & Mu66z6); +assign Mu66z6 = (~(Wkd7z6[22] & Ddmhw6)); +assign Eu66z6 = (Uu66z6 & Cv66z6); +assign Cv66z6 = (~(Xhd7z6[22] & Eu46z6)); +assign Uu66z6 = (~(Vnd7z6[22] & Jamnv6)); +assign Ot66z6 = (~(Pdc7z6[22] & Mu46z6)); +assign Is66z6 = (Kv66z6 & Sv66z6); +assign Sv66z6 = (~(Pnb7z6[22] & Znnov6)); +assign Kv66z6 = (~(Qdcdt6 & Fhc7z6[22])); +assign Kr66z6 = (Aw66z6 & Iw66z6); +assign Iw66z6 = (~(Qw66z6 & Bp3nv6)); +assign Qw66z6 = (Xwciw6 ^ HADDRI[24]); +assign HADDRI[24] = (Crcdt6 ? Dvc7z6[24] : X0d7z6[24]); +assign X0d7z6[24] = (~(Yw66z6 & Gx66z6)); +assign Gx66z6 = (Ox66z6 & Wx66z6); +assign Wx66z6 = (~(Pic7z6[24] & Ir0ov6)); +assign Ox66z6 = (Ey66z6 & My66z6); +assign My66z6 = (Qs46z6 | J5ynv6); +assign J5ynv6 = (Uy66z6 & Cz66z6); +assign Cz66z6 = (~(Wkd7z6[24] & Ddmhw6)); +assign Uy66z6 = (Kz66z6 & Sz66z6); +assign Sz66z6 = (~(Xhd7z6[24] & Eu46z6)); +assign Kz66z6 = (~(Vnd7z6[24] & Jamnv6)); +assign Ey66z6 = (~(Pdc7z6[24] & Mu46z6)); +assign Yw66z6 = (A076z6 & I076z6); +assign I076z6 = (~(Pnb7z6[24] & Znnov6)); +assign A076z6 = (~(Qdcdt6 & Fhc7z6[24])); +assign Xwciw6 = (!Qw77z6); +assign Aw66z6 = (~(Q076z6 & Kx3nv6)); +assign Q076z6 = (Psciw6 ^ HADDRI[23]); +assign HADDRI[23] = (Crcdt6 ? Dvc7z6[23] : X0d7z6[23]); +assign X0d7z6[23] = (~(Y076z6 & G176z6)); +assign G176z6 = (O176z6 & W176z6); +assign W176z6 = (~(Pic7z6[23] & Ir0ov6)); +assign O176z6 = (E276z6 & M276z6); +assign M276z6 = (Qs46z6 | K9ynv6); +assign K9ynv6 = (U276z6 & C376z6); +assign C376z6 = (~(Wkd7z6[23] & Ddmhw6)); +assign U276z6 = (K376z6 & S376z6); +assign S376z6 = (~(Xhd7z6[23] & Eu46z6)); +assign K376z6 = (~(Vnd7z6[23] & Jamnv6)); +assign E276z6 = (~(Pdc7z6[23] & Mu46z6)); +assign Y076z6 = (A476z6 & I476z6); +assign I476z6 = (~(Pnb7z6[23] & Znnov6)); +assign A476z6 = (~(Qdcdt6 & Fhc7z6[23])); +assign Psciw6 = (!Yk77z6); +assign S766z6 = (Q476z6 & Y476z6); +assign Y476z6 = (G576z6 & O576z6); +assign O576z6 = (W576z6 & E676z6); +assign E676z6 = (~(M676z6 & U676z6)); +assign M676z6 = (Cpciw6 ^ HADDRI[21]); +assign HADDRI[21] = (Crcdt6 ? Dvc7z6[21] : X0d7z6[21]); +assign X0d7z6[21] = (~(C776z6 & K776z6)); +assign K776z6 = (S776z6 & A876z6); +assign A876z6 = (~(Pic7z6[21] & Ir0ov6)); +assign S776z6 = (I876z6 & Q876z6); +assign Q876z6 = (Qs46z6 | Oiynv6); +assign Oiynv6 = (Y876z6 & G976z6); +assign G976z6 = (~(Wkd7z6[21] & Ddmhw6)); +assign Y876z6 = (O976z6 & W976z6); +assign W976z6 = (~(Xhd7z6[21] & Eu46z6)); +assign O976z6 = (~(Vnd7z6[21] & Jamnv6)); +assign I876z6 = (~(Pdc7z6[21] & Mu46z6)); +assign C776z6 = (Ea76z6 & Ma76z6); +assign Ma76z6 = (~(Pnb7z6[21] & Znnov6)); +assign Ea76z6 = (~(Qdcdt6 & Fhc7z6[21])); +assign Cpciw6 = (!E287z6); +assign W576z6 = (~(Ua76z6 & Ww3nv6)); +assign Ua76z6 = (Rmciw6 ^ HADDRI[20]); +assign HADDRI[20] = (Crcdt6 ? Dvc7z6[20] : X0d7z6[20]); +assign X0d7z6[20] = (~(Cb76z6 & Kb76z6)); +assign Kb76z6 = (Sb76z6 & Ac76z6); +assign Ac76z6 = (~(Pic7z6[20] & Ir0ov6)); +assign Sb76z6 = (Ic76z6 & Qc76z6); +assign Qc76z6 = (Qs46z6 | Dnynv6); +assign Dnynv6 = (Yc76z6 & Gd76z6); +assign Gd76z6 = (~(Wkd7z6[20] & Ddmhw6)); +assign Yc76z6 = (Od76z6 & Wd76z6); +assign Wd76z6 = (~(Xhd7z6[20] & Eu46z6)); +assign Od76z6 = (~(Vnd7z6[20] & Jamnv6)); +assign Ic76z6 = (~(Pdc7z6[20] & Mu46z6)); +assign Cb76z6 = (Ee76z6 & Me76z6); +assign Me76z6 = (~(Pnb7z6[20] & Znnov6)); +assign Ee76z6 = (~(Qdcdt6 & Fhc7z6[20])); +assign Rmciw6 = (!G187z6); +assign G576z6 = (Ue76z6 & Cf76z6); +assign Cf76z6 = (~(Kf76z6 & Mk3nv6)); +assign Kf76z6 = (Blciw6 ^ HADDRI[19]); +assign HADDRI[19] = (Crcdt6 ? Dvc7z6[19] : X0d7z6[19]); +assign X0d7z6[19] = (~(Sf76z6 & Ag76z6)); +assign Ag76z6 = (Ig76z6 & Qg76z6); +assign Qg76z6 = (~(Pic7z6[19] & Ir0ov6)); +assign Ig76z6 = (Yg76z6 & Gh76z6); +assign Gh76z6 = (Qs46z6 | Srynv6); +assign Srynv6 = (Oh76z6 & Wh76z6); +assign Wh76z6 = (~(Wkd7z6[19] & Ddmhw6)); +assign Oh76z6 = (Ei76z6 & Mi76z6); +assign Mi76z6 = (~(Xhd7z6[19] & Eu46z6)); +assign Ei76z6 = (~(Vnd7z6[19] & Jamnv6)); +assign Yg76z6 = (~(Pdc7z6[19] & Mu46z6)); +assign Sf76z6 = (Ui76z6 & Cj76z6); +assign Cj76z6 = (~(Pnb7z6[19] & Znnov6)); +assign Ui76z6 = (~(Qdcdt6 & Fhc7z6[19])); +assign Ue76z6 = (~(Kj76z6 & Vs3nv6)); +assign Kj76z6 = (Ljciw6 ^ HADDRI[18]); +assign HADDRI[18] = (Crcdt6 ? Dvc7z6[18] : X0d7z6[18]); +assign X0d7z6[18] = (~(Sj76z6 & Ak76z6)); +assign Ak76z6 = (Ik76z6 & Qk76z6); +assign Qk76z6 = (~(Pic7z6[18] & Ir0ov6)); +assign Ik76z6 = (Yk76z6 & Gl76z6); +assign Gl76z6 = (Qs46z6 | Hwynv6); +assign Hwynv6 = (Ol76z6 & Wl76z6); +assign Wl76z6 = (~(Wkd7z6[18] & Ddmhw6)); +assign Ol76z6 = (Em76z6 & Mm76z6); +assign Mm76z6 = (~(Xhd7z6[18] & Eu46z6)); +assign Em76z6 = (~(Vnd7z6[18] & Jamnv6)); +assign Yk76z6 = (~(Pdc7z6[18] & Mu46z6)); +assign Sj76z6 = (Um76z6 & Cn76z6); +assign Cn76z6 = (~(Pnb7z6[18] & Znnov6)); +assign Um76z6 = (~(Qdcdt6 & Fhc7z6[18])); +assign Q476z6 = (Kn76z6 & Sn76z6); +assign Kn76z6 = (Ao76z6 & Io76z6); +assign Io76z6 = (~(Qo76z6 & X04nv6)); +assign Qo76z6 = (Vhciw6 ^ HADDRI[17]); +assign HADDRI[17] = (Crcdt6 ? Dvc7z6[17] : X0d7z6[17]); +assign X0d7z6[17] = (~(Yo76z6 & Gp76z6)); +assign Gp76z6 = (Op76z6 & Wp76z6); +assign Wp76z6 = (~(Pic7z6[17] & Ir0ov6)); +assign Op76z6 = (Eq76z6 & Mq76z6); +assign Mq76z6 = (Qs46z6 | W0znv6); +assign W0znv6 = (Uq76z6 & Cr76z6); +assign Cr76z6 = (~(Wkd7z6[17] & Ddmhw6)); +assign Uq76z6 = (Kr76z6 & Sr76z6); +assign Sr76z6 = (~(Xhd7z6[17] & Eu46z6)); +assign Kr76z6 = (~(Vnd7z6[17] & Jamnv6)); +assign Eq76z6 = (~(Pdc7z6[17] & Mu46z6)); +assign Yo76z6 = (As76z6 & Is76z6); +assign Is76z6 = (~(Pnb7z6[17] & Znnov6)); +assign As76z6 = (~(Qdcdt6 & Fhc7z6[17])); +assign Vhciw6 = (!W187z6); +assign Ao76z6 = (~(Qs76z6 & Ys76z6)); +assign Qs76z6 = (Wl06z6 ^ Gt76z6); +assign Wl06z6 = (!HADDRI[16]); +assign HADDRI[16] = (Crcdt6 ? Dvc7z6[16] : X0d7z6[16]); +assign X0d7z6[16] = (~(Ot76z6 & Wt76z6)); +assign Wt76z6 = (Eu76z6 & Mu76z6); +assign Mu76z6 = (~(Pic7z6[16] & Ir0ov6)); +assign Eu76z6 = (Uu76z6 & Cv76z6); +assign Cv76z6 = (Qs46z6 | L5znv6); +assign L5znv6 = (Kv76z6 & Sv76z6); +assign Sv76z6 = (~(Wkd7z6[16] & Ddmhw6)); +assign Kv76z6 = (Aw76z6 & Iw76z6); +assign Iw76z6 = (~(Xhd7z6[16] & Eu46z6)); +assign Aw76z6 = (~(Vnd7z6[16] & Jamnv6)); +assign Uu76z6 = (~(Pdc7z6[16] & Mu46z6)); +assign Ot76z6 = (Qw76z6 & Yw76z6); +assign Yw76z6 = (~(Pnb7z6[16] & Znnov6)); +assign Qw76z6 = (~(Qdcdt6 & Fhc7z6[16])); +assign Agz5z6 = (!HPROTI[1]); +assign Kconv6 = (~(Gx76z6 & Ox76z6)); +assign Ox76z6 = (Njkiw6 ? Ey76z6 : Wx76z6); +assign Ey76z6 = (~(My76z6 & Uy76z6)); +assign My76z6 = (HREADYI & Cfliy6); +assign Wx76z6 = (~(Cz76z6 & Ykyiy6)); +assign Ykyiy6 = (Kz76z6 & Sz76z6); +assign Sz76z6 = (Pbonv6 & Ag0jy6); +assign Pbonv6 = (~(Ewyet6 | Styet6)); +assign Kz76z6 = (A086z6 & I086z6); +assign A086z6 = (~(K4bdt6 & Q086z6)); +assign Cz76z6 = (~(E6y5z6 | Meoet6)); +assign E6y5z6 = (~(D6eiw6 & Y086z6)); +assign Y086z6 = (~(Yk0jy6 & G186z6)); +assign G186z6 = (Gl0jy6 | Zuixx6); +assign Zuixx6 = (!HREADYS); +assign Gl0jy6 = (~(Qk0jy6 & O186z6)); +assign O186z6 = (S3v5z6 | Qln7z6[1]); +assign S3v5z6 = (W186z6 & Bwixx6); +assign Yk0jy6 = (E286z6 & M286z6); +assign M286z6 = (~(U286z6 & HREADYD)); +assign U286z6 = (!Qk0jy6); +assign Qk0jy6 = (~(C386z6 & Hm1ov6)); +assign C386z6 = (~(Zblov6 | Qln7z6[1])); +assign E286z6 = (A4v5z6 & Ag0jy6); +assign A4v5z6 = (Goonv6 | Ik0jy6); +assign Ik0jy6 = (W186z6 & K386z6); +assign K386z6 = (Bwixx6 | Qln7z6[1]); +assign Bwixx6 = (V4myx6 | Go9ov6); +assign Goonv6 = (!HREADYD); +assign D6eiw6 = (~(Djonv6 | S386z6)); +assign S386z6 = (Kb0jy6 & Rxixx6); +assign Gx76z6 = (Lbkiw6 & Ikyiy6); +assign Ikyiy6 = (!Bkkiw6); +assign Bkkiw6 = (A486z6 & Ujfnv6); +assign A486z6 = (Njfnv6 & Bkfnv6); +assign Rnh7v6 = (~(I486z6 & Q486z6)); +assign Q486z6 = (~(J72nz6[1] & Szw5z6)); +assign I486z6 = (Y486z6 & G586z6); +assign G586z6 = (~(Y0x5z6 & O586z6)); +assign O586z6 = (~(W586z6 & E686z6)); +assign E686z6 = (M686z6 & U686z6); +assign U686z6 = (~(S3x5z6 & Yr1nz6[1])); +assign S3x5z6 = (Md1nz6[0] & Rn5ov6); +assign M686z6 = (~(E2x5z6 & Au1nz6[1])); +assign E2x5z6 = (~(Rn5ov6 | Md1nz6[0])); +assign W586z6 = (C786z6 & K786z6); +assign K786z6 = (~(Jq5ov6 & Bv1nz6[1])); +assign Jq5ov6 = (Rn5ov6 & S786z6); +assign C786z6 = (~(Qq5ov6 & Zs1nz6[1])); +assign Qq5ov6 = (~(Rn5ov6 | S786z6)); +assign S786z6 = (!Md1nz6[0]); +assign Rn5ov6 = (Md1nz6[1] ^ Md1nz6[2]); +assign Y0x5z6 = (~(A886z6 | Szw5z6)); +assign A886z6 = (~(Hp5ov6 & Dxiyx6)); +assign Dxiyx6 = (!Vp5ov6); +assign Y486z6 = (~(Q0y5z6 & Zejyx6)); +assign Zejyx6 = (~(I886z6 & Q886z6)); +assign Q886z6 = (Y886z6 & G986z6); +assign G986z6 = (~(G5x5z6 & Mm1nz6[1])); +assign G5x5z6 = (~(O986z6 | N43yx6)); +assign Y886z6 = (~(O5x5z6 & Oo1nz6[1])); +assign O5x5z6 = (~(R63yx6 | Yb1nz6[0])); +assign I886z6 = (W986z6 & Ea86z6); +assign Ea86z6 = (~(Z63yx6 & Pp1nz6[1])); +assign Z63yx6 = (R63yx6 & O986z6); +assign O986z6 = (!Yb1nz6[0]); +assign W986z6 = (~(H73yx6 & Nn1nz6[1])); +assign H73yx6 = (N43yx6 & Yb1nz6[0]); +assign N43yx6 = (!R63yx6); +assign R63yx6 = (Yb1nz6[1] ^ Yb1nz6[2]); +assign Q0y5z6 = (!L53yx6); +assign L53yx6 = (~(Ma86z6 & Vp5ov6)); +assign Vp5ov6 = (Ua86z6 & Cb86z6); +assign Cb86z6 = (~(Kb86z6 & Qa2nz6[0])); +assign Kb86z6 = (Sb86z6 & Ac86z6); +assign Sb86z6 = (~(Qa2nz6[1] & Ic86z6)); +assign Ua86z6 = (Qa2nz6[1] ? Yc86z6 : Qc86z6); +assign Yc86z6 = (Gd86z6 & Od86z6); +assign Gd86z6 = (Wd86z6 | Qc86z6); +assign Wd86z6 = (Qa2nz6[0] ? Me86z6 : Ee86z6); +assign Ee86z6 = (~(X7iyx6 & Ue86z6)); +assign Ue86z6 = (~(Ju2yx6 & D53yx6)); +assign Qc86z6 = (~(Ic86z6 & Cf86z6)); +assign Cf86z6 = (~(Me86z6 & Ju2yx6)); +assign Ma86z6 = (~(Szw5z6 | Hp5ov6)); +assign Hp5ov6 = (Qa2nz6[1] ? Sf86z6 : Kf86z6); +assign Sf86z6 = (Ag86z6 & Od86z6); +assign Od86z6 = (~(Qa2nz6[0] & Ig86z6)); +assign Ig86z6 = (~(X7iyx6 & Ns2yx6)); +assign Ag86z6 = (~(Qg86z6 & Yg86z6)); +assign Yg86z6 = (~(Gh86z6 & Qa2nz6[0])); +assign Gh86z6 = (Oh86z6 & Ic86z6); +assign Qg86z6 = (D53yx6 | Ac86z6); +assign Ac86z6 = (~(Wh86z6 & Ju2yx6)); +assign Wh86z6 = (Ic86z6 & X7iyx6); +assign Kf86z6 = (~(Ei86z6 & Mi86z6)); +assign Mi86z6 = (~(Ui86z6 & Qa2nz6[0])); +assign Ei86z6 = (Cj86z6 & Ic86z6); +assign Cj86z6 = (~(Oh86z6 & Ju2yx6)); +assign Oh86z6 = (~(Me86z6 & D53yx6)); +assign Szw5z6 = (Op5ov6 | B63yx6); +assign B63yx6 = (~(M81nv6 | Lge7v6)); +assign M81nv6 = (!Twhiw6); +assign Op5ov6 = (F2f7v6 & Kj86z6); +assign Kj86z6 = (~(Sj86z6 & Ryiyx6)); +assign Ryiyx6 = (Lx2yx6 & J23yx6); +assign Lx2yx6 = (~(Ak86z6 & Ik86z6)); +assign Ik86z6 = (~(Qk86z6 & L5iyx6)); +assign L5iyx6 = (Otv5z6 & Eb1nv6); +assign Eb1nv6 = (!Ec2nz6[1]); +assign Qk86z6 = (J7f7v6 & F8iyx6); +assign F8iyx6 = (!T5f7v6); +assign Ak86z6 = (Yk86z6 & Krv5z6); +assign Yk86z6 = (~(T5iyx6 & J7f7v6)); +assign T5iyx6 = (Gl86z6 & Ol86z6); +assign Ol86z6 = (~(Wl86z6 & Em86z6)); +assign Em86z6 = (Mm86z6 & Um86z6); +assign Um86z6 = (Otv5z6 & Ec2nz6[1]); +assign Mm86z6 = (T32nz6[0] & Ec2nz6[0]); +assign Wl86z6 = (T13yx6 & T32nz6[3]); +assign T13yx6 = (T32nz6[2] & T32nz6[1]); +assign Gl86z6 = (~(Ui86z6 | H7iyx6)); +assign H7iyx6 = (Cn86z6 & Ic86z6); +assign Ic86z6 = (~(Kn86z6 & J7f7v6)); +assign Kn86z6 = (Sn86z6 & X7iyx6); +assign X7iyx6 = (!Ui86z6); +assign Sn86z6 = (~(Ao86z6 & Io86z6)); +assign Ao86z6 = (V91nv6 & J23yx6); +assign J23yx6 = (~(Qo86z6 & Otv5z6)); +assign Qo86z6 = (Ec2nz6[1] & Ns2yx6); +assign Cn86z6 = (~(Yo86z6 & Gp86z6)); +assign Gp86z6 = (Me86z6 ? Wp86z6 : Op86z6); +assign Me86z6 = (!Fo5ov6); +assign Fo5ov6 = (~(Eq86z6 & Mq86z6)); +assign Mq86z6 = (~(Md1nz6[2] ^ Fg1nz6[2])); +assign Eq86z6 = (Uq86z6 & Cr86z6); +assign Cr86z6 = (~(Md1nz6[1] ^ Fg1nz6[1])); +assign Uq86z6 = (~(Md1nz6[0] ^ Fg1nz6[0])); +assign Wp86z6 = (S3w5z6 & Kr86z6); +assign Kr86z6 = (~(D53yx6 & Nwiyx6)); +assign Op86z6 = (~(S3w5z6 & Nwiyx6)); +assign Nwiyx6 = (!Qa2nz6[1]); +assign Yo86z6 = (Sr86z6 & Ju2yx6); +assign Ju2yx6 = (~(As86z6 & Is86z6)); +assign Is86z6 = (Qs86z6 & Ys86z6); +assign Ys86z6 = (~(Gt86z6 & Ot86z6)); +assign Ot86z6 = (~(Ca1nv6 & T81nv6)); +assign T81nv6 = (!J7f7v6); +assign Ca1nv6 = (D92nz6[1] & D92nz6[0]); +assign Gt86z6 = (Krv5z6 | Xrjyx6); +assign Xrjyx6 = (!Io86z6); +assign Krv5z6 = (~(J7f7v6 & Ns2yx6)); +assign Ns2yx6 = (!Ec2nz6[0]); +assign Qs86z6 = (~(Otv5z6 | B5e7v6)); +assign Otv5z6 = (Ec2nz6[3] & Ec2nz6[2]); +assign As86z6 = (M8e7v6 & V91nv6); +assign Sr86z6 = (~(Qa2nz6[1] & Wt86z6)); +assign Wt86z6 = (~(S3w5z6 & D53yx6)); +assign D53yx6 = (~(Eu86z6 & Mu86z6)); +assign Mu86z6 = (~(Yb1nz6[2] ^ Af1nz6[2])); +assign Eu86z6 = (Uu86z6 & Cv86z6); +assign Cv86z6 = (~(Yb1nz6[1] ^ Af1nz6[1])); +assign Uu86z6 = (~(Yb1nz6[0] ^ Af1nz6[0])); +assign S3w5z6 = (!Qa2nz6[0]); +assign Ui86z6 = (T5f7v6 & Od77z6); +assign Sj86z6 = (Kv86z6 & Zyiyx6); +assign Zyiyx6 = (~(J7f7v6 & Sv86z6)); +assign Sv86z6 = (~(Io86z6 & V91nv6)); +assign V91nv6 = (~(Rm2yx6 | Ywv5z6)); +assign Ywv5z6 = (!Wxv5z6); +assign Wxv5z6 = (B2jyx6 & Xf2yx6); +assign Xf2yx6 = (Vuf7v6 & V0jyx6); +assign V0jyx6 = (!Ctf7v6); +assign B2jyx6 = (Pb2yx6 & Tl2yx6); +assign Tl2yx6 = (!Mwf7v6); +assign Pb2yx6 = (!Qk77z6); +assign Rm2yx6 = (!J6jyx6); +assign J6jyx6 = (Aw86z6 & Kf2nz6[2]); +assign Aw86z6 = (Kf2nz6[1] & Kf2nz6[0]); +assign Io86z6 = (~(Xre7v6 | Iw86z6)); +assign Iw86z6 = (~(Twhiw6 | J7f7v6)); +assign Twhiw6 = (Nl1nz6[0] | Nl1nz6[1]); +assign Kv86z6 = (~(A4f7v6 & Ik77z6)); +assign Py9dt6 = (~(Olvnv6 & Qw86z6)); +assign Qw86z6 = (~(Ez9dt6 & Xkqnv6)); +assign Ox9dt6 = (~(Olvnv6 & Yw86z6)); +assign Yw86z6 = (~(Cy9dt6 & Xkqnv6)); +assign Sz9dt6 = (~(Olvnv6 & Gx86z6)); +assign Gx86z6 = (~(G0adt6 & Xkqnv6)); +assign Xkqnv6 = (!RSTBYPASS); +assign Olvnv6 = (~(RSTBYPASS & PORESETn)); +assign Tib7z6[9] = (Kn97z6 | INTISR[9]); +assign Tib7z6[8] = (Sn97z6 | INTISR[8]); +assign Tib7z6[7] = (Ao97z6 | INTISR[7]); +assign Tib7z6[6] = (Io97z6 | INTISR[6]); +assign Tib7z6[63] = (U697z6 | INTISR[63]); +assign Tib7z6[62] = (C797z6 | INTISR[62]); +assign Tib7z6[61] = (K797z6 | INTISR[61]); +assign Tib7z6[60] = (S797z6 | INTISR[60]); +assign Tib7z6[5] = (Qo97z6 | INTISR[5]); +assign Tib7z6[59] = (A897z6 | INTISR[59]); +assign Tib7z6[58] = (I897z6 | INTISR[58]); +assign Tib7z6[57] = (Q897z6 | INTISR[57]); +assign Tib7z6[56] = (Y897z6 | INTISR[56]); +assign Tib7z6[55] = (G997z6 | INTISR[55]); +assign Tib7z6[54] = (O997z6 | INTISR[54]); +assign Tib7z6[53] = (W997z6 | INTISR[53]); +assign Tib7z6[52] = (Ea97z6 | INTISR[52]); +assign Tib7z6[51] = (Ma97z6 | INTISR[51]); +assign Tib7z6[50] = (Ua97z6 | INTISR[50]); +assign Tib7z6[4] = (Yo97z6 | INTISR[4]); +assign Tib7z6[49] = (Cb97z6 | INTISR[49]); +assign Tib7z6[48] = (Kb97z6 | INTISR[48]); +assign Tib7z6[47] = (Sb97z6 | INTISR[47]); +assign Tib7z6[46] = (Ac97z6 | INTISR[46]); +assign Tib7z6[45] = (Ic97z6 | INTISR[45]); +assign Tib7z6[44] = (Qc97z6 | INTISR[44]); +assign Tib7z6[43] = (Yc97z6 | INTISR[43]); +assign Tib7z6[42] = (Gd97z6 | INTISR[42]); +assign Tib7z6[41] = (Od97z6 | INTISR[41]); +assign Tib7z6[40] = (Wd97z6 | INTISR[40]); +assign Tib7z6[3] = (Gp97z6 | INTISR[3]); +assign Tib7z6[39] = (Ee97z6 | INTISR[39]); +assign Tib7z6[38] = (Me97z6 | INTISR[38]); +assign Tib7z6[37] = (Ue97z6 | INTISR[37]); +assign Tib7z6[36] = (Cf97z6 | INTISR[36]); +assign Tib7z6[35] = (Kf97z6 | INTISR[35]); +assign Tib7z6[34] = (Sf97z6 | INTISR[34]); +assign Tib7z6[33] = (Ag97z6 | INTISR[33]); +assign Tib7z6[32] = (Ig97z6 | INTISR[32]); +assign Tib7z6[31] = (Qg97z6 | INTISR[31]); +assign Tib7z6[30] = (Yg97z6 | INTISR[30]); +assign Tib7z6[2] = (Op97z6 | INTISR[2]); +assign Tib7z6[29] = (Gh97z6 | INTISR[29]); +assign Tib7z6[28] = (Oh97z6 | INTISR[28]); +assign Tib7z6[27] = (Wh97z6 | INTISR[27]); +assign Tib7z6[26] = (Ei97z6 | INTISR[26]); +assign Tib7z6[25] = (Mi97z6 | INTISR[25]); +assign Tib7z6[24] = (Ui97z6 | INTISR[24]); +assign Tib7z6[23] = (Cj97z6 | INTISR[23]); +assign Tib7z6[22] = (Kj97z6 | INTISR[22]); +assign Tib7z6[21] = (Sj97z6 | INTISR[21]); +assign Tib7z6[20] = (Ak97z6 | INTISR[20]); +assign Tib7z6[1] = (Wp97z6 | INTISR[1]); +assign Tib7z6[19] = (Ik97z6 | INTISR[19]); +assign Tib7z6[18] = (Qk97z6 | INTISR[18]); +assign Tib7z6[17] = (Yk97z6 | INTISR[17]); +assign Tib7z6[16] = (Gl97z6 | INTISR[16]); +assign Tib7z6[15] = (Ol97z6 | INTISR[15]); +assign Tib7z6[14] = (Wl97z6 | INTISR[14]); +assign Tib7z6[13] = (Em97z6 | INTISR[13]); +assign Tib7z6[12] = (Mm97z6 | INTISR[12]); +assign Tib7z6[11] = (Um97z6 | INTISR[11]); +assign Tib7z6[10] = (Cn97z6 | INTISR[10]); +assign Tib7z6[0] = (Eq97z6 | INTISR[0]); +assign D4adt6 = (Knbdt6 & Wdtnv6); +assign Wdtnv6 = (!Wfo7v6); +assign S3adt6 = (Jgliw6 & Vb4iw6); +assign Jgliw6 = (~(Wy67v6 & Kygnv6)); +assign Kygnv6 = (!HTMDHBURST[0]); +assign WAKEUP = (~(Ox86z6 & Wx86z6)); +assign Wx86z6 = (Ey86z6 & My86z6); +assign My86z6 = (Uy86z6 & Cz86z6); +assign Cz86z6 = (Kz86z6 & Sz86z6); +assign Sz86z6 = (A096z6 & I096z6); +assign I096z6 = (Q096z6 & Y096z6); +assign Y096z6 = (~(Fjb7z6[3] & Eq97z6)); +assign Q096z6 = (G196z6 & O196z6); +assign O196z6 = (~(Fjb7z6[1] & Uq97z6)); +assign G196z6 = (~(Fjb7z6[2] & Mq97z6)); +assign A096z6 = (W196z6 & E296z6); +assign E296z6 = (~(Fjb7z6[4] & Wp97z6)); +assign W196z6 = (~(Fjb7z6[5] & Op97z6)); +assign Kz86z6 = (M296z6 & U296z6); +assign U296z6 = (C396z6 & K396z6); +assign K396z6 = (~(Fjb7z6[6] & Gp97z6)); +assign C396z6 = (~(Fjb7z6[7] & Yo97z6)); +assign M296z6 = (S396z6 & A496z6); +assign A496z6 = (~(Fjb7z6[8] & Qo97z6)); +assign S396z6 = (~(Fjb7z6[9] & Io97z6)); +assign Uy86z6 = (I496z6 & Q496z6); +assign Q496z6 = (Y496z6 & G596z6); +assign G596z6 = (O596z6 & W596z6); +assign W596z6 = (~(Fjb7z6[10] & Ao97z6)); +assign O596z6 = (~(Fjb7z6[11] & Sn97z6)); +assign Y496z6 = (E696z6 & M696z6); +assign M696z6 = (~(Fjb7z6[12] & Kn97z6)); +assign E696z6 = (~(Fjb7z6[13] & Cn97z6)); +assign I496z6 = (U696z6 & C796z6); +assign C796z6 = (K796z6 & S796z6); +assign S796z6 = (~(Fjb7z6[14] & Um97z6)); +assign K796z6 = (~(Fjb7z6[15] & Mm97z6)); +assign U696z6 = (A896z6 & I896z6); +assign I896z6 = (~(Fjb7z6[16] & Em97z6)); +assign A896z6 = (~(Fjb7z6[17] & Wl97z6)); +assign Ey86z6 = (Q896z6 & Y896z6); +assign Y896z6 = (G996z6 & O996z6); +assign O996z6 = (W996z6 & Ea96z6); +assign Ea96z6 = (Ma96z6 & Ua96z6); +assign Ua96z6 = (~(Fjb7z6[20] & Yk97z6)); +assign Ma96z6 = (Cb96z6 & Kb96z6); +assign Kb96z6 = (~(Fjb7z6[18] & Ol97z6)); +assign Cb96z6 = (~(Fjb7z6[19] & Gl97z6)); +assign W996z6 = (Sb96z6 & Ac96z6); +assign Ac96z6 = (~(Fjb7z6[21] & Qk97z6)); +assign Sb96z6 = (~(Fjb7z6[22] & Ik97z6)); +assign G996z6 = (Ic96z6 & Qc96z6); +assign Qc96z6 = (Yc96z6 & Gd96z6); +assign Gd96z6 = (~(Fjb7z6[23] & Ak97z6)); +assign Yc96z6 = (~(Fjb7z6[24] & Sj97z6)); +assign Ic96z6 = (Od96z6 & Wd96z6); +assign Wd96z6 = (~(Fjb7z6[25] & Kj97z6)); +assign Od96z6 = (~(Fjb7z6[26] & Cj97z6)); +assign Q896z6 = (Ee96z6 & Me96z6); +assign Me96z6 = (Ue96z6 & Cf96z6); +assign Cf96z6 = (Kf96z6 & Sf96z6); +assign Sf96z6 = (~(Fjb7z6[27] & Ui97z6)); +assign Kf96z6 = (~(Fjb7z6[28] & Mi97z6)); +assign Ue96z6 = (Ag96z6 & Ig96z6); +assign Ig96z6 = (~(Fjb7z6[29] & Ei97z6)); +assign Ag96z6 = (~(Fjb7z6[30] & Wh97z6)); +assign Ee96z6 = (Qg96z6 & Yg96z6); +assign Yg96z6 = (Gh96z6 & Oh96z6); +assign Oh96z6 = (~(Fjb7z6[31] & Oh97z6)); +assign Gh96z6 = (~(Fjb7z6[32] & Gh97z6)); +assign Qg96z6 = (Wh96z6 & Ei96z6); +assign Ei96z6 = (~(Fjb7z6[33] & Yg97z6)); +assign Wh96z6 = (~(Fjb7z6[34] & Qg97z6)); +assign Ox86z6 = (Mi96z6 & Ui96z6); +assign Ui96z6 = (Cj96z6 & Kj96z6); +assign Kj96z6 = (Sj96z6 & Ak96z6); +assign Ak96z6 = (Ik96z6 & Qk96z6); +assign Qk96z6 = (Yk96z6 & Gl96z6); +assign Gl96z6 = (~(Fjb7z6[37] & Sf97z6)); +assign Yk96z6 = (Ol96z6 & Wl96z6); +assign Wl96z6 = (~(Fjb7z6[35] & Ig97z6)); +assign Ol96z6 = (~(Fjb7z6[36] & Ag97z6)); +assign Ik96z6 = (Em96z6 & Mm96z6); +assign Mm96z6 = (~(Fjb7z6[38] & Kf97z6)); +assign Em96z6 = (~(Fjb7z6[39] & Cf97z6)); +assign Sj96z6 = (Um96z6 & Cn96z6); +assign Cn96z6 = (Kn96z6 & Sn96z6); +assign Sn96z6 = (~(Fjb7z6[40] & Ue97z6)); +assign Kn96z6 = (~(Fjb7z6[41] & Me97z6)); +assign Um96z6 = (Ao96z6 & Io96z6); +assign Io96z6 = (~(Fjb7z6[42] & Ee97z6)); +assign Ao96z6 = (~(Fjb7z6[43] & Wd97z6)); +assign Cj96z6 = (Qo96z6 & Yo96z6); +assign Yo96z6 = (Gp96z6 & Op96z6); +assign Op96z6 = (Wp96z6 & Eq96z6); +assign Eq96z6 = (~(Fjb7z6[44] & Od97z6)); +assign Wp96z6 = (~(Fjb7z6[45] & Gd97z6)); +assign Gp96z6 = (Mq96z6 & Uq96z6); +assign Uq96z6 = (~(Fjb7z6[46] & Yc97z6)); +assign Mq96z6 = (~(Fjb7z6[47] & Qc97z6)); +assign Qo96z6 = (Cr96z6 & Kr96z6); +assign Kr96z6 = (Sr96z6 & As96z6); +assign As96z6 = (~(Fjb7z6[48] & Ic97z6)); +assign Sr96z6 = (~(Fjb7z6[49] & Ac97z6)); +assign Cr96z6 = (Is96z6 & Qs96z6); +assign Qs96z6 = (~(Fjb7z6[50] & Sb97z6)); +assign Is96z6 = (~(Fjb7z6[51] & Kb97z6)); +assign Mi96z6 = (Ys96z6 & Gt96z6); +assign Gt96z6 = (Ot96z6 & Wt96z6); +assign Wt96z6 = (Eu96z6 & Mu96z6); +assign Mu96z6 = (Uu96z6 & Cv96z6); +assign Cv96z6 = (~(Fjb7z6[52] & Cb97z6)); +assign Uu96z6 = (~(Fjb7z6[53] & Ua97z6)); +assign Eu96z6 = (Kv96z6 & Sv96z6); +assign Sv96z6 = (~(Fjb7z6[54] & Ma97z6)); +assign Kv96z6 = (~(Fjb7z6[55] & Ea97z6)); +assign Ot96z6 = (Aw96z6 & Iw96z6); +assign Iw96z6 = (Qw96z6 & Yw96z6); +assign Yw96z6 = (~(Fjb7z6[56] & W997z6)); +assign Qw96z6 = (~(Fjb7z6[57] & O997z6)); +assign Aw96z6 = (Gx96z6 & Ox96z6); +assign Ox96z6 = (~(Fjb7z6[58] & G997z6)); +assign Gx96z6 = (~(Fjb7z6[59] & Y897z6)); +assign Ys96z6 = (Wx96z6 & Ey96z6); +assign Ey96z6 = (My96z6 & Uy96z6); +assign Uy96z6 = (Cz96z6 & Kz96z6); +assign Kz96z6 = (~(Fjb7z6[60] & Q897z6)); +assign Cz96z6 = (~(Fjb7z6[61] & I897z6)); +assign My96z6 = (Sz96z6 & A0a6z6); +assign A0a6z6 = (~(Fjb7z6[62] & A897z6)); +assign Sz96z6 = (~(Fjb7z6[63] & S797z6)); +assign Wx96z6 = (I0a6z6 & Q0a6z6); +assign Q0a6z6 = (Y0a6z6 & G1a6z6); +assign G1a6z6 = (~(Fjb7z6[64] & K797z6)); +assign Y0a6z6 = (~(Fjb7z6[65] & C797z6)); +assign I0a6z6 = (O1a6z6 & W1a6z6); +assign W1a6z6 = (~(Fjb7z6[66] & U697z6)); +assign O1a6z6 = (~(Ei77z6 & Fjb7z6[0])); +assign TXEV = (I2edt6 & Pxfov6); +assign SLEEPDEEP = (SLEEPING & U3cet6); +assign MEMATTRS[1] = (~(E2a6z6 & M2a6z6)); +assign M2a6z6 = (~(Rj9ov6 & Qdqnv6)); +assign Qdqnv6 = (~(U2a6z6 & C3a6z6)); +assign C3a6z6 = (~(K3a6z6 & S3a6z6)); +assign S3a6z6 = (A4a6z6 & Cmm7z6[29]); +assign A4a6z6 = (Yygnv6 & I4a6z6); +assign K3a6z6 = (Q4a6z6 & Cmm7z6[31]); +assign U2a6z6 = (Y4a6z6 & G5a6z6); +assign G5a6z6 = (~(O5a6z6 & W5a6z6)); +assign W5a6z6 = (V5k7z6[31] & E6a6z6); +assign O5a6z6 = (~(M6a6z6 | U6a6z6)); +assign Y4a6z6 = (~(C7a6z6 & K7a6z6)); +assign C7a6z6 = (S7a6z6 & A8a6z6); +assign A8a6z6 = (~(I8a6z6 & Q8a6z6)); +assign Q8a6z6 = (Y8a6z6 & G9a6z6); +assign G9a6z6 = (O9a6z6 & W9a6z6); +assign W9a6z6 = (~(P6l7z6[16] & Eaa6z6)); +assign O9a6z6 = (Maa6z6 & Uaa6z6); +assign Uaa6z6 = (~(Cba6z6 & Kba6z6)); +assign Maa6z6 = (~(Hwk7z6[16] & Sba6z6)); +assign Y8a6z6 = (Aca6z6 & Ica6z6); +assign Ica6z6 = (~(Xgl7z6[16] & Qca6z6)); +assign Aca6z6 = (~(Frl7z6[16] & Yca6z6)); +assign I8a6z6 = (Gda6z6 & Oda6z6); +assign Oda6z6 = (Wda6z6 & Eea6z6); +assign Eea6z6 = (~(N1m7z6[16] & Mea6z6)); +assign Wda6z6 = (~(Zlk7z6[16] & Uea6z6)); +assign Gda6z6 = (Cfa6z6 & Kfa6z6); +assign Kfa6z6 = (~(Rbk7z6[16] & Sfa6z6)); +assign Cfa6z6 = (~(Vbm7z6[16] & Aga6z6)); +assign S7a6z6 = (~(Iga6z6 & Qga6z6)); +assign Iga6z6 = (Kba6z6 & Yga6z6); +assign E2a6z6 = (~(Opoet6 & J0jxx6)); +assign MEMATTRS[0] = (~(Gha6z6 & Oha6z6)); +assign Oha6z6 = (~(Rj9ov6 & Gfqnv6)); +assign Gfqnv6 = (~(Wha6z6 & Eia6z6)); +assign Wha6z6 = (Mia6z6 | Uia6z6); +assign Mia6z6 = (Kja6z6 ? Cja6z6 : Cba6z6); +assign Cja6z6 = (~(Sja6z6 & Cba6z6)); +assign Sja6z6 = (Aka6z6 & Ika6z6); +assign Gha6z6 = (~(Proet6 & J0jxx6)); +assign JTAGNSW = (!Dz1nv6); +assign Dz1nv6 = (Qka6z6 | Fqxmz6[5]); +assign Qka6z6 = (Fqxmz6[4] & Yka6z6); +assign Yka6z6 = (~(Gla6z6 & Ola6z6)); +assign Ola6z6 = (~(Fqxmz6[2] | Fqxmz6[3])); +assign Gla6z6 = (~(Fqxmz6[0] | Fqxmz6[1])); +assign HWRITES = (~(Wla6z6 & Ema6z6)); +assign Ema6z6 = (~(Mma6z6 & L3bdt6)); +assign Wla6z6 = (Uma6z6 & Cna6z6); +assign Cna6z6 = (~(J0jxx6 & Kna6z6)); +assign Kna6z6 = (Qo8iy6 | Sna6z6); +assign Sna6z6 = (~(Kxixx6 | Xvgxx6)); +assign Kxixx6 = (!I2yet6); +assign Uma6z6 = (~(Aoa6z6 & Lhmov6)); +assign HWDATAS[9] = (~(Ioa6z6 & Qoa6z6)); +assign Qoa6z6 = (~(Yoa6z6 & H5q7x6)); +assign Ioa6z6 = (Gpa6z6 & Opa6z6); +assign Opa6z6 = (~(Wpa6z6 & Itb7z6[9])); +assign Gpa6z6 = (~(Tim7z6[9] & Eqa6z6)); +assign HWDATAS[8] = (~(Mqa6z6 & Uqa6z6)); +assign Uqa6z6 = (~(Yoa6z6 & Kqonv6)); +assign Mqa6z6 = (Cra6z6 & Kra6z6); +assign Kra6z6 = (~(Wpa6z6 & Itb7z6[8])); +assign Cra6z6 = (~(Tim7z6[8] & Eqa6z6)); +assign HWDATAS[7] = (~(Sra6z6 & Asa6z6)); +assign Asa6z6 = (~(Yoa6z6 & Kwp7x6)); +assign Sra6z6 = (Isa6z6 & Qsa6z6); +assign Qsa6z6 = (~(Wpa6z6 & Itb7z6[7])); +assign Isa6z6 = (~(Tim7z6[7] & Eqa6z6)); +assign HWDATAS[6] = (~(Ysa6z6 & Gta6z6)); +assign Gta6z6 = (~(Yoa6z6 & Lzq7x6)); +assign Ysa6z6 = (Ota6z6 & Wta6z6); +assign Wta6z6 = (~(Wpa6z6 & Itb7z6[6])); +assign Ota6z6 = (~(Tim7z6[6] & Eqa6z6)); +assign HWDATAS[5] = (~(Eua6z6 & Mua6z6)); +assign Mua6z6 = (~(Yoa6z6 & Zsq7x6)); +assign Eua6z6 = (Uua6z6 & Cva6z6); +assign Cva6z6 = (~(Wpa6z6 & Itb7z6[5])); +assign Uua6z6 = (~(Tim7z6[5] & Eqa6z6)); +assign HWDATAS[4] = (~(Kva6z6 & Sva6z6)); +assign Sva6z6 = (~(Yoa6z6 & Pnq7x6)); +assign Kva6z6 = (Awa6z6 & Iwa6z6); +assign Iwa6z6 = (~(Wpa6z6 & Itb7z6[4])); +assign Awa6z6 = (~(Tim7z6[4] & Eqa6z6)); +assign HWDATAS[3] = (~(Qwa6z6 & Ywa6z6)); +assign Ywa6z6 = (~(Yoa6z6 & Fiq7x6)); +assign Qwa6z6 = (Gxa6z6 & Oxa6z6); +assign Oxa6z6 = (~(Wpa6z6 & Itb7z6[3])); +assign Gxa6z6 = (~(Tim7z6[3] & Eqa6z6)); +assign HWDATAS[31] = (~(Wxa6z6 & Eya6z6)); +assign Eya6z6 = (~(Yoa6z6 & Ht1ov6)); +assign Wxa6z6 = (Mya6z6 & Uya6z6); +assign Uya6z6 = (~(Wpa6z6 & Itb7z6[31])); +assign Mya6z6 = (~(Tim7z6[31] & Eqa6z6)); +assign HWDATAS[30] = (~(Cza6z6 & Kza6z6)); +assign Kza6z6 = (~(Yoa6z6 & Vxq7x6)); +assign Cza6z6 = (Sza6z6 & A0b6z6); +assign A0b6z6 = (~(Wpa6z6 & Itb7z6[30])); +assign Sza6z6 = (~(Tim7z6[30] & Eqa6z6)); +assign HWDATAS[2] = (~(I0b6z6 & Q0b6z6)); +assign Q0b6z6 = (~(Yoa6z6 & Vcq7x6)); +assign I0b6z6 = (Y0b6z6 & G1b6z6); +assign G1b6z6 = (~(Wpa6z6 & Itb7z6[2])); +assign Y0b6z6 = (~(Tim7z6[2] & Eqa6z6)); +assign HWDATAS[29] = (~(O1b6z6 & W1b6z6)); +assign W1b6z6 = (~(Yoa6z6 & Qrq7x6)); +assign O1b6z6 = (E2b6z6 & M2b6z6); +assign M2b6z6 = (~(Wpa6z6 & Itb7z6[29])); +assign E2b6z6 = (~(Tim7z6[29] & Eqa6z6)); +assign HWDATAS[28] = (~(U2b6z6 & C3b6z6)); +assign C3b6z6 = (~(Yoa6z6 & Gmq7x6)); +assign U2b6z6 = (K3b6z6 & S3b6z6); +assign S3b6z6 = (~(Wpa6z6 & Itb7z6[28])); +assign K3b6z6 = (~(Tim7z6[28] & Eqa6z6)); +assign HWDATAS[27] = (~(A4b6z6 & I4b6z6)); +assign I4b6z6 = (~(Yoa6z6 & Wgq7x6)); +assign A4b6z6 = (Q4b6z6 & Y4b6z6); +assign Y4b6z6 = (~(Wpa6z6 & Itb7z6[27])); +assign Q4b6z6 = (~(Tim7z6[27] & Eqa6z6)); +assign HWDATAS[26] = (~(G5b6z6 & O5b6z6)); +assign O5b6z6 = (~(Yoa6z6 & Mbq7x6)); +assign G5b6z6 = (W5b6z6 & E6b6z6); +assign E6b6z6 = (~(Wpa6z6 & Itb7z6[26])); +assign W5b6z6 = (~(Tim7z6[26] & Eqa6z6)); +assign HWDATAS[25] = (~(M6b6z6 & U6b6z6)); +assign U6b6z6 = (~(Yoa6z6 & C6q7x6)); +assign M6b6z6 = (C7b6z6 & K7b6z6); +assign K7b6z6 = (~(Wpa6z6 & Itb7z6[25])); +assign C7b6z6 = (~(Tim7z6[25] & Eqa6z6)); +assign HWDATAS[24] = (~(S7b6z6 & A8b6z6)); +assign A8b6z6 = (~(Yoa6z6 & Yqonv6)); +assign S7b6z6 = (I8b6z6 & Q8b6z6); +assign Q8b6z6 = (~(Wpa6z6 & Itb7z6[24])); +assign I8b6z6 = (~(Tim7z6[24] & Eqa6z6)); +assign HWDATAS[23] = (~(Y8b6z6 & G9b6z6)); +assign G9b6z6 = (~(Yoa6z6 & Xzp7x6)); +assign Y8b6z6 = (O9b6z6 & W9b6z6); +assign W9b6z6 = (~(Wpa6z6 & Itb7z6[23])); +assign O9b6z6 = (~(Tim7z6[23] & Eqa6z6)); +assign HWDATAS[22] = (~(Eab6z6 & Mab6z6)); +assign Mab6z6 = (~(Yoa6z6 & Wuq7x6)); +assign Eab6z6 = (Uab6z6 & Cbb6z6); +assign Cbb6z6 = (~(Wpa6z6 & Itb7z6[22])); +assign Uab6z6 = (~(Tim7z6[22] & Eqa6z6)); +assign HWDATAS[21] = (~(Kbb6z6 & Sbb6z6)); +assign Sbb6z6 = (~(Yoa6z6 & Mpq7x6)); +assign Kbb6z6 = (Acb6z6 & Icb6z6); +assign Icb6z6 = (~(Wpa6z6 & Itb7z6[21])); +assign Acb6z6 = (~(Tim7z6[21] & Eqa6z6)); +assign HWDATAS[20] = (~(Qcb6z6 & Ycb6z6)); +assign Ycb6z6 = (~(Yoa6z6 & Ckq7x6)); +assign Qcb6z6 = (Gdb6z6 & Odb6z6); +assign Odb6z6 = (~(Wpa6z6 & Itb7z6[20])); +assign Gdb6z6 = (~(Tim7z6[20] & Eqa6z6)); +assign HWDATAS[1] = (~(Wdb6z6 & Eeb6z6)); +assign Eeb6z6 = (~(Yoa6z6 & L7q7x6)); +assign Wdb6z6 = (Meb6z6 & Ueb6z6); +assign Ueb6z6 = (~(Wpa6z6 & Itb7z6[1])); +assign Meb6z6 = (~(Tim7z6[1] & Eqa6z6)); +assign HWDATAS[19] = (~(Cfb6z6 & Kfb6z6)); +assign Kfb6z6 = (~(Yoa6z6 & Seq7x6)); +assign Cfb6z6 = (Sfb6z6 & Agb6z6); +assign Agb6z6 = (~(Wpa6z6 & Itb7z6[19])); +assign Sfb6z6 = (~(Tim7z6[19] & Eqa6z6)); +assign HWDATAS[18] = (~(Igb6z6 & Qgb6z6)); +assign Qgb6z6 = (~(Yoa6z6 & I9q7x6)); +assign Igb6z6 = (Ygb6z6 & Ghb6z6); +assign Ghb6z6 = (~(Wpa6z6 & Itb7z6[18])); +assign Ygb6z6 = (~(Tim7z6[18] & Eqa6z6)); +assign HWDATAS[17] = (~(Ohb6z6 & Whb6z6)); +assign Whb6z6 = (~(Yoa6z6 & Y3q7x6)); +assign Ohb6z6 = (Eib6z6 & Mib6z6); +assign Mib6z6 = (~(Wpa6z6 & Itb7z6[17])); +assign Eib6z6 = (~(Tim7z6[17] & Eqa6z6)); +assign HWDATAS[16] = (~(Uib6z6 & Cjb6z6)); +assign Cjb6z6 = (~(Yoa6z6 & V4r7x6)); +assign Uib6z6 = (Kjb6z6 & Sjb6z6); +assign Sjb6z6 = (~(Wpa6z6 & Itb7z6[16])); +assign Kjb6z6 = (~(Tim7z6[16] & Eqa6z6)); +assign HWDATAS[15] = (~(Akb6z6 & Ikb6z6)); +assign Ikb6z6 = (~(Yoa6z6 & Oyp7x6)); +assign Akb6z6 = (Qkb6z6 & Ykb6z6); +assign Ykb6z6 = (~(Wpa6z6 & Itb7z6[15])); +assign Qkb6z6 = (~(Tim7z6[15] & Eqa6z6)); +assign HWDATAS[14] = (~(Glb6z6 & Olb6z6)); +assign Olb6z6 = (~(Yoa6z6 & Twq7x6)); +assign Glb6z6 = (Wlb6z6 & Emb6z6); +assign Emb6z6 = (~(Wpa6z6 & Itb7z6[14])); +assign Wlb6z6 = (~(Tim7z6[14] & Eqa6z6)); +assign HWDATAS[13] = (~(Mmb6z6 & Umb6z6)); +assign Umb6z6 = (~(Yoa6z6 & Vqq7x6)); +assign Mmb6z6 = (Cnb6z6 & Knb6z6); +assign Knb6z6 = (~(Wpa6z6 & Itb7z6[13])); +assign Cnb6z6 = (~(Tim7z6[13] & Eqa6z6)); +assign HWDATAS[12] = (~(Snb6z6 & Aob6z6)); +assign Aob6z6 = (~(Yoa6z6 & Llq7x6)); +assign Snb6z6 = (Iob6z6 & Qob6z6); +assign Qob6z6 = (~(Wpa6z6 & Itb7z6[12])); +assign Iob6z6 = (~(Tim7z6[12] & Eqa6z6)); +assign HWDATAS[11] = (~(Yob6z6 & Gpb6z6)); +assign Gpb6z6 = (~(Yoa6z6 & Bgq7x6)); +assign Yob6z6 = (Opb6z6 & Wpb6z6); +assign Wpb6z6 = (~(Wpa6z6 & Itb7z6[11])); +assign Opb6z6 = (~(Tim7z6[11] & Eqa6z6)); +assign HWDATAS[10] = (~(Eqb6z6 & Mqb6z6)); +assign Mqb6z6 = (~(Yoa6z6 & Raq7x6)); +assign Eqb6z6 = (Uqb6z6 & Crb6z6); +assign Crb6z6 = (~(Wpa6z6 & Itb7z6[10])); +assign Uqb6z6 = (~(Tim7z6[10] & Eqa6z6)); +assign HWDATAS[0] = (~(Krb6z6 & Srb6z6)); +assign Srb6z6 = (~(Yoa6z6 & I8r7x6)); +assign Yoa6z6 = (Svn7z6[0] & Asb6z6); +assign Krb6z6 = (Isb6z6 & Qsb6z6); +assign Qsb6z6 = (~(Wpa6z6 & Itb7z6[0])); +assign Wpa6z6 = (Svn7z6[1] & Asb6z6); +assign Isb6z6 = (~(Tim7z6[0] & Eqa6z6)); +assign Eqa6z6 = (~(P3jxx6 & Asb6z6)); +assign Asb6z6 = (~(Sb0jy6 & Qln7z6[1])); +assign P3jxx6 = (!Svn7z6[2]); +assign HWDATAD[9] = (~(Ysb6z6 & Gtb6z6)); +assign Gtb6z6 = (~(Tim7z6[9] & Otb6z6)); +assign Ysb6z6 = (Wtb6z6 & Eub6z6); +assign Eub6z6 = (~(Mub6z6 & H5q7x6)); +assign H5q7x6 = (!Uub6z6); +assign Uub6z6 = (No7et6 ? Kvb6z6 : Cvb6z6); +assign Wtb6z6 = (~(Svb6z6 & Itb7z6[9])); +assign HWDATAD[8] = (~(Awb6z6 & Iwb6z6)); +assign Iwb6z6 = (~(Tim7z6[8] & Otb6z6)); +assign Awb6z6 = (Qwb6z6 & Ywb6z6); +assign Ywb6z6 = (~(Mub6z6 & Kqonv6)); +assign Kqonv6 = (!Gxb6z6); +assign Gxb6z6 = (No7et6 ? Wxb6z6 : Oxb6z6); +assign Qwb6z6 = (~(Svb6z6 & Itb7z6[8])); +assign HWDATAD[7] = (~(Eyb6z6 & Myb6z6)); +assign Myb6z6 = (~(Tim7z6[7] & Otb6z6)); +assign Eyb6z6 = (Uyb6z6 & Czb6z6); +assign Czb6z6 = (~(Mub6z6 & Kwp7x6)); +assign Kwp7x6 = (!Kzb6z6); +assign Kzb6z6 = (No7et6 ? A0c6z6 : Szb6z6); +assign Uyb6z6 = (~(Svb6z6 & Itb7z6[7])); +assign HWDATAD[6] = (~(I0c6z6 & Q0c6z6)); +assign Q0c6z6 = (~(Tim7z6[6] & Otb6z6)); +assign I0c6z6 = (Y0c6z6 & G1c6z6); +assign G1c6z6 = (~(Mub6z6 & Lzq7x6)); +assign Lzq7x6 = (!O1c6z6); +assign O1c6z6 = (No7et6 ? E2c6z6 : W1c6z6); +assign Y0c6z6 = (~(Svb6z6 & Itb7z6[6])); +assign HWDATAD[5] = (~(M2c6z6 & U2c6z6)); +assign U2c6z6 = (~(Tim7z6[5] & Otb6z6)); +assign M2c6z6 = (C3c6z6 & K3c6z6); +assign K3c6z6 = (~(Mub6z6 & Zsq7x6)); +assign Zsq7x6 = (!S3c6z6); +assign S3c6z6 = (No7et6 ? I4c6z6 : A4c6z6); +assign C3c6z6 = (~(Svb6z6 & Itb7z6[5])); +assign HWDATAD[4] = (~(Q4c6z6 & Y4c6z6)); +assign Y4c6z6 = (~(Tim7z6[4] & Otb6z6)); +assign Q4c6z6 = (G5c6z6 & O5c6z6); +assign O5c6z6 = (~(Mub6z6 & Pnq7x6)); +assign Pnq7x6 = (!W5c6z6); +assign W5c6z6 = (No7et6 ? M6c6z6 : E6c6z6); +assign G5c6z6 = (~(Svb6z6 & Itb7z6[4])); +assign HWDATAD[3] = (~(U6c6z6 & C7c6z6)); +assign C7c6z6 = (~(Tim7z6[3] & Otb6z6)); +assign U6c6z6 = (K7c6z6 & S7c6z6); +assign S7c6z6 = (~(Mub6z6 & Fiq7x6)); +assign Fiq7x6 = (!A8c6z6); +assign A8c6z6 = (No7et6 ? Q8c6z6 : I8c6z6); +assign K7c6z6 = (~(Svb6z6 & Itb7z6[3])); +assign HWDATAD[31] = (~(Y8c6z6 & G9c6z6)); +assign G9c6z6 = (~(Tim7z6[31] & Otb6z6)); +assign Y8c6z6 = (O9c6z6 & W9c6z6); +assign W9c6z6 = (~(Mub6z6 & Ht1ov6)); +assign Ht1ov6 = (!Eac6z6); +assign Eac6z6 = (No7et6 ? Szb6z6 : A0c6z6); +assign Szb6z6 = (Mac6z6 & Uac6z6); +assign Uac6z6 = (Cbc6z6 & Kbc6z6); +assign Kbc6z6 = (~(Sbc6z6 & Acc6z6)); +assign Cbc6z6 = (Icc6z6 & Qcc6z6); +assign Qcc6z6 = (~(Ddo6x6 & Ycc6z6)); +assign Ddo6x6 = (Nob7z6[7] & Rslov6); +assign Icc6z6 = (~(Gdc6z6 & Odc6z6)); +assign Mac6z6 = (Wdc6z6 & Eec6z6); +assign Eec6z6 = (~(Kxb7z6[7] & Mec6z6)); +assign Wdc6z6 = (Uec6z6 & Cfc6z6); +assign Cfc6z6 = (~(Kfc6z6 & Sfc6z6)); +assign Uec6z6 = (~(Agc6z6 & Igc6z6)); +assign A0c6z6 = (Qgc6z6 & Ygc6z6); +assign Ygc6z6 = (Ghc6z6 & Ohc6z6); +assign Ohc6z6 = (~(Whc6z6 & Sfc6z6)); +assign Ghc6z6 = (Eic6z6 & Mic6z6); +assign Mic6z6 = (~(Uic6z6 & Odc6z6)); +assign Eic6z6 = (~(Cjc6z6 & Acc6z6)); +assign Qgc6z6 = (Kjc6z6 & Sjc6z6); +assign Sjc6z6 = (~(O4gdt6 & Ycc6z6)); +assign Kjc6z6 = (Akc6z6 & Ikc6z6); +assign Ikc6z6 = (~(Gdc6z6 & Igc6z6)); +assign Akc6z6 = (~(Kxb7z6[31] & Mec6z6)); +assign O9c6z6 = (~(Svb6z6 & Itb7z6[31])); +assign HWDATAD[30] = (~(Qkc6z6 & Ykc6z6)); +assign Ykc6z6 = (~(Tim7z6[30] & Otb6z6)); +assign Qkc6z6 = (Glc6z6 & Olc6z6); +assign Olc6z6 = (~(Mub6z6 & Vxq7x6)); +assign Vxq7x6 = (!Wlc6z6); +assign Wlc6z6 = (No7et6 ? W1c6z6 : E2c6z6); +assign W1c6z6 = (Emc6z6 & Mmc6z6); +assign Mmc6z6 = (Umc6z6 & Cnc6z6); +assign Cnc6z6 = (~(Sbc6z6 & Knc6z6)); +assign Umc6z6 = (Snc6z6 & Aoc6z6); +assign Aoc6z6 = (~(Nob7z6[6] & Ioc6z6)); +assign Snc6z6 = (~(Gdc6z6 & Qoc6z6)); +assign Emc6z6 = (Yoc6z6 & Gpc6z6); +assign Gpc6z6 = (~(Kxb7z6[6] & Mec6z6)); +assign Yoc6z6 = (Opc6z6 & Wpc6z6); +assign Wpc6z6 = (~(Kfc6z6 & Eqc6z6)); +assign Opc6z6 = (~(Agc6z6 & Mqc6z6)); +assign E2c6z6 = (Uqc6z6 & Crc6z6); +assign Crc6z6 = (Krc6z6 & Src6z6); +assign Src6z6 = (~(Whc6z6 & Eqc6z6)); +assign Krc6z6 = (Asc6z6 & Isc6z6); +assign Isc6z6 = (~(Uic6z6 & Qoc6z6)); +assign Asc6z6 = (~(Cjc6z6 & Knc6z6)); +assign Uqc6z6 = (Qsc6z6 & Ysc6z6); +assign Ysc6z6 = (~(D6gdt6 & Ycc6z6)); +assign Qsc6z6 = (Gtc6z6 & Otc6z6); +assign Otc6z6 = (~(Gdc6z6 & Mqc6z6)); +assign Gtc6z6 = (~(Kxb7z6[30] & Mec6z6)); +assign Glc6z6 = (~(Svb6z6 & Itb7z6[30])); +assign HWDATAD[2] = (~(Wtc6z6 & Euc6z6)); +assign Euc6z6 = (~(Tim7z6[2] & Otb6z6)); +assign Wtc6z6 = (Muc6z6 & Uuc6z6); +assign Uuc6z6 = (~(Mub6z6 & Vcq7x6)); +assign Vcq7x6 = (!Cvc6z6); +assign Cvc6z6 = (No7et6 ? Svc6z6 : Kvc6z6); +assign Muc6z6 = (~(Svb6z6 & Itb7z6[2])); +assign HWDATAD[29] = (~(Awc6z6 & Iwc6z6)); +assign Iwc6z6 = (~(Tim7z6[29] & Otb6z6)); +assign Awc6z6 = (Qwc6z6 & Ywc6z6); +assign Ywc6z6 = (~(Mub6z6 & Qrq7x6)); +assign Qrq7x6 = (!Gxc6z6); +assign Gxc6z6 = (No7et6 ? A4c6z6 : I4c6z6); +assign A4c6z6 = (Oxc6z6 & Wxc6z6); +assign Wxc6z6 = (Eyc6z6 & Myc6z6); +assign Myc6z6 = (~(Sbc6z6 & Uyc6z6)); +assign Eyc6z6 = (Czc6z6 & Kzc6z6); +assign Kzc6z6 = (~(Jti6x6 & Ycc6z6)); +assign Jti6x6 = (Nob7z6[5] & Rslov6); +assign Czc6z6 = (~(Gdc6z6 & Szc6z6)); +assign Oxc6z6 = (A0d6z6 & I0d6z6); +assign I0d6z6 = (~(Kxb7z6[5] & Mec6z6)); +assign A0d6z6 = (Q0d6z6 & Y0d6z6); +assign Y0d6z6 = (~(Kfc6z6 & G1d6z6)); +assign Q0d6z6 = (~(Agc6z6 & O1d6z6)); +assign I4c6z6 = (W1d6z6 & E2d6z6); +assign E2d6z6 = (M2d6z6 & U2d6z6); +assign U2d6z6 = (~(Whc6z6 & G1d6z6)); +assign M2d6z6 = (C3d6z6 & K3d6z6); +assign K3d6z6 = (~(Uic6z6 & Szc6z6)); +assign C3d6z6 = (~(Cjc6z6 & Uyc6z6)); +assign W1d6z6 = (S3d6z6 & A4d6z6); +assign A4d6z6 = (~(S7gdt6 & Ycc6z6)); +assign S3d6z6 = (I4d6z6 & Q4d6z6); +assign Q4d6z6 = (~(Gdc6z6 & O1d6z6)); +assign I4d6z6 = (~(Kxb7z6[29] & Mec6z6)); +assign Qwc6z6 = (~(Svb6z6 & Itb7z6[29])); +assign HWDATAD[28] = (~(Y4d6z6 & G5d6z6)); +assign G5d6z6 = (~(Tim7z6[28] & Otb6z6)); +assign Y4d6z6 = (O5d6z6 & W5d6z6); +assign W5d6z6 = (~(Mub6z6 & Gmq7x6)); +assign Gmq7x6 = (!E6d6z6); +assign E6d6z6 = (No7et6 ? E6c6z6 : M6c6z6); +assign E6c6z6 = (M6d6z6 & U6d6z6); +assign U6d6z6 = (C7d6z6 & K7d6z6); +assign K7d6z6 = (~(Sbc6z6 & S7d6z6)); +assign C7d6z6 = (A8d6z6 & I8d6z6); +assign I8d6z6 = (~(Nob7z6[4] & Ioc6z6)); +assign A8d6z6 = (~(Gdc6z6 & Q8d6z6)); +assign M6d6z6 = (Y8d6z6 & G9d6z6); +assign G9d6z6 = (~(Kxb7z6[4] & Mec6z6)); +assign Y8d6z6 = (O9d6z6 & W9d6z6); +assign W9d6z6 = (~(Kfc6z6 & Ead6z6)); +assign O9d6z6 = (~(Agc6z6 & Mad6z6)); +assign M6c6z6 = (Uad6z6 & Cbd6z6); +assign Cbd6z6 = (Kbd6z6 & Sbd6z6); +assign Sbd6z6 = (~(Whc6z6 & Ead6z6)); +assign Kbd6z6 = (Acd6z6 & Icd6z6); +assign Icd6z6 = (~(Uic6z6 & Q8d6z6)); +assign Acd6z6 = (~(Cjc6z6 & S7d6z6)); +assign Uad6z6 = (Qcd6z6 & Ycd6z6); +assign Ycd6z6 = (~(H9gdt6 & Ycc6z6)); +assign Qcd6z6 = (Gdd6z6 & Odd6z6); +assign Odd6z6 = (~(Gdc6z6 & Mad6z6)); +assign Gdd6z6 = (~(Kxb7z6[28] & Mec6z6)); +assign O5d6z6 = (~(Svb6z6 & Itb7z6[28])); +assign HWDATAD[27] = (~(Wdd6z6 & Eed6z6)); +assign Eed6z6 = (~(Tim7z6[27] & Otb6z6)); +assign Wdd6z6 = (Med6z6 & Ued6z6); +assign Ued6z6 = (~(Mub6z6 & Wgq7x6)); +assign Wgq7x6 = (!Cfd6z6); +assign Cfd6z6 = (No7et6 ? I8c6z6 : Q8c6z6); +assign I8c6z6 = (Kfd6z6 & Sfd6z6); +assign Sfd6z6 = (Agd6z6 & Igd6z6); +assign Igd6z6 = (~(Sbc6z6 & Qgd6z6)); +assign Agd6z6 = (Ygd6z6 & Ghd6z6); +assign Ghd6z6 = (~(Nob7z6[3] & Ioc6z6)); +assign Ygd6z6 = (~(Gdc6z6 & Ohd6z6)); +assign Kfd6z6 = (Whd6z6 & Eid6z6); +assign Eid6z6 = (~(Kxb7z6[3] & Mec6z6)); +assign Whd6z6 = (Mid6z6 & Uid6z6); +assign Uid6z6 = (~(Kfc6z6 & Cjd6z6)); +assign Mid6z6 = (~(Agc6z6 & Kjd6z6)); +assign Q8c6z6 = (Sjd6z6 & Akd6z6); +assign Akd6z6 = (Ikd6z6 & Qkd6z6); +assign Qkd6z6 = (~(Whc6z6 & Cjd6z6)); +assign Ikd6z6 = (Ykd6z6 & Gld6z6); +assign Gld6z6 = (~(Uic6z6 & Ohd6z6)); +assign Ykd6z6 = (~(Cjc6z6 & Qgd6z6)); +assign Sjd6z6 = (Old6z6 & Wld6z6); +assign Wld6z6 = (~(Lsfdt6 & Ycc6z6)); +assign Old6z6 = (Emd6z6 & Mmd6z6); +assign Mmd6z6 = (~(Gdc6z6 & Kjd6z6)); +assign Emd6z6 = (~(Kxb7z6[27] & Mec6z6)); +assign Med6z6 = (~(Svb6z6 & Itb7z6[27])); +assign HWDATAD[26] = (~(Umd6z6 & Cnd6z6)); +assign Cnd6z6 = (~(Tim7z6[26] & Otb6z6)); +assign Umd6z6 = (Knd6z6 & Snd6z6); +assign Snd6z6 = (~(Mub6z6 & Mbq7x6)); +assign Mbq7x6 = (!Aod6z6); +assign Aod6z6 = (No7et6 ? Kvc6z6 : Svc6z6); +assign Kvc6z6 = (Iod6z6 & Qod6z6); +assign Qod6z6 = (Yod6z6 & Gpd6z6); +assign Gpd6z6 = (~(Sbc6z6 & Opd6z6)); +assign Yod6z6 = (Wpd6z6 & Eqd6z6); +assign Eqd6z6 = (~(Tx1jw6 & Ycc6z6)); +assign Tx1jw6 = (Nob7z6[2] & Rslov6); +assign Wpd6z6 = (~(Gdc6z6 & Mqd6z6)); +assign Iod6z6 = (Uqd6z6 & Crd6z6); +assign Crd6z6 = (~(Kxb7z6[2] & Mec6z6)); +assign Uqd6z6 = (Krd6z6 & Srd6z6); +assign Srd6z6 = (~(Kfc6z6 & Asd6z6)); +assign Krd6z6 = (~(Agc6z6 & Isd6z6)); +assign Svc6z6 = (Qsd6z6 & Ysd6z6); +assign Ysd6z6 = (Gtd6z6 & Otd6z6); +assign Otd6z6 = (~(Cjc6z6 & Opd6z6)); +assign Gtd6z6 = (Wtd6z6 & Eud6z6); +assign Eud6z6 = (Mud6z6 | Uud6z6); +assign Wtd6z6 = (~(Uic6z6 & Mqd6z6)); +assign Qsd6z6 = (Cvd6z6 & Kvd6z6); +assign Kvd6z6 = (~(Kxb7z6[26] & Mec6z6)); +assign Cvd6z6 = (Svd6z6 & Awd6z6); +assign Awd6z6 = (~(Whc6z6 & Asd6z6)); +assign Svd6z6 = (~(Gdc6z6 & Isd6z6)); +assign Knd6z6 = (~(Svb6z6 & Itb7z6[26])); +assign HWDATAD[25] = (~(Iwd6z6 & Qwd6z6)); +assign Qwd6z6 = (~(Tim7z6[25] & Otb6z6)); +assign Iwd6z6 = (Ywd6z6 & Gxd6z6); +assign Gxd6z6 = (~(Mub6z6 & C6q7x6)); +assign C6q7x6 = (!Oxd6z6); +assign Oxd6z6 = (No7et6 ? Eyd6z6 : Wxd6z6); +assign Ywd6z6 = (~(Svb6z6 & Itb7z6[25])); +assign HWDATAD[24] = (~(Myd6z6 & Uyd6z6)); +assign Uyd6z6 = (~(Tim7z6[24] & Otb6z6)); +assign Myd6z6 = (Czd6z6 & Kzd6z6); +assign Kzd6z6 = (~(Mub6z6 & Yqonv6)); +assign Yqonv6 = (!Szd6z6); +assign Szd6z6 = (No7et6 ? I0e6z6 : A0e6z6); +assign Czd6z6 = (~(Svb6z6 & Itb7z6[24])); +assign HWDATAD[23] = (~(Q0e6z6 & Y0e6z6)); +assign Y0e6z6 = (~(Tim7z6[23] & Otb6z6)); +assign Q0e6z6 = (G1e6z6 & O1e6z6); +assign O1e6z6 = (~(Mub6z6 & Xzp7x6)); +assign Xzp7x6 = (!W1e6z6); +assign W1e6z6 = (No7et6 ? M2e6z6 : E2e6z6); +assign G1e6z6 = (~(Svb6z6 & Itb7z6[23])); +assign HWDATAD[22] = (~(U2e6z6 & C3e6z6)); +assign C3e6z6 = (~(Tim7z6[22] & Otb6z6)); +assign U2e6z6 = (K3e6z6 & S3e6z6); +assign S3e6z6 = (~(Mub6z6 & Wuq7x6)); +assign Wuq7x6 = (!A4e6z6); +assign A4e6z6 = (No7et6 ? Q4e6z6 : I4e6z6); +assign K3e6z6 = (~(Svb6z6 & Itb7z6[22])); +assign HWDATAD[21] = (~(Y4e6z6 & G5e6z6)); +assign G5e6z6 = (~(Tim7z6[21] & Otb6z6)); +assign Y4e6z6 = (O5e6z6 & W5e6z6); +assign W5e6z6 = (~(Mub6z6 & Mpq7x6)); +assign Mpq7x6 = (!E6e6z6); +assign E6e6z6 = (No7et6 ? U6e6z6 : M6e6z6); +assign O5e6z6 = (~(Svb6z6 & Itb7z6[21])); +assign HWDATAD[20] = (~(C7e6z6 & K7e6z6)); +assign K7e6z6 = (~(Tim7z6[20] & Otb6z6)); +assign C7e6z6 = (S7e6z6 & A8e6z6); +assign A8e6z6 = (~(Mub6z6 & Ckq7x6)); +assign Ckq7x6 = (!I8e6z6); +assign I8e6z6 = (No7et6 ? Y8e6z6 : Q8e6z6); +assign S7e6z6 = (~(Svb6z6 & Itb7z6[20])); +assign HWDATAD[1] = (~(G9e6z6 & O9e6z6)); +assign O9e6z6 = (~(Tim7z6[1] & Otb6z6)); +assign G9e6z6 = (W9e6z6 & Eae6z6); +assign Eae6z6 = (~(Mub6z6 & L7q7x6)); +assign L7q7x6 = (!Mae6z6); +assign Mae6z6 = (No7et6 ? Wxd6z6 : Eyd6z6); +assign Wxd6z6 = (Uae6z6 & Cbe6z6); +assign Cbe6z6 = (Kbe6z6 & Sbe6z6); +assign Sbe6z6 = (Ace6z6 & Ice6z6); +assign Ice6z6 = (~(Qce6z6 & Ycc6z6)); +assign Qce6z6 = (~(Yce6z6 & Gde6z6)); +assign Gde6z6 = (~(Ohe7z6[2] & Ode6z6)); +assign Ace6z6 = (~(Uic6z6 & Wde6z6)); +assign Kbe6z6 = (Eee6z6 & Mee6z6); +assign Mee6z6 = (~(Cjc6z6 & Uee6z6)); +assign Eee6z6 = (~(Whc6z6 & Cfe6z6)); +assign Uae6z6 = (Kfe6z6 & Sfe6z6); +assign Sfe6z6 = (~(Jjbdt6 & Age6z6)); +assign Kfe6z6 = (Ige6z6 & Qge6z6); +assign Qge6z6 = (~(Gdc6z6 & Yge6z6)); +assign Ige6z6 = (~(Kxb7z6[25] & Mec6z6)); +assign Eyd6z6 = (Ghe6z6 & Ohe6z6); +assign Ohe6z6 = (Whe6z6 & Eie6z6); +assign Eie6z6 = (~(Sbc6z6 & Uee6z6)); +assign Whe6z6 = (Mie6z6 & Uie6z6); +assign Uie6z6 = (~(Nob7z6[1] & Ioc6z6)); +assign Mie6z6 = (~(Gdc6z6 & Wde6z6)); +assign Ghe6z6 = (Cje6z6 & Kje6z6); +assign Kje6z6 = (~(Kxb7z6[1] & Mec6z6)); +assign Cje6z6 = (Sje6z6 & Ake6z6); +assign Ake6z6 = (~(Kfc6z6 & Cfe6z6)); +assign Sje6z6 = (~(Agc6z6 & Yge6z6)); +assign W9e6z6 = (~(Svb6z6 & Itb7z6[1])); +assign HWDATAD[19] = (~(Ike6z6 & Qke6z6)); +assign Qke6z6 = (~(Tim7z6[19] & Otb6z6)); +assign Ike6z6 = (Yke6z6 & Gle6z6); +assign Gle6z6 = (~(Mub6z6 & Seq7x6)); +assign Seq7x6 = (!Ole6z6); +assign Ole6z6 = (No7et6 ? Eme6z6 : Wle6z6); +assign Yke6z6 = (~(Svb6z6 & Itb7z6[19])); +assign HWDATAD[18] = (~(Mme6z6 & Ume6z6)); +assign Ume6z6 = (~(Tim7z6[18] & Otb6z6)); +assign Mme6z6 = (Cne6z6 & Kne6z6); +assign Kne6z6 = (~(Mub6z6 & I9q7x6)); +assign I9q7x6 = (!Sne6z6); +assign Sne6z6 = (No7et6 ? Ioe6z6 : Aoe6z6); +assign Cne6z6 = (~(Svb6z6 & Itb7z6[18])); +assign HWDATAD[17] = (~(Qoe6z6 & Yoe6z6)); +assign Yoe6z6 = (~(Tim7z6[17] & Otb6z6)); +assign Qoe6z6 = (Gpe6z6 & Ope6z6); +assign Ope6z6 = (~(Mub6z6 & Y3q7x6)); +assign Y3q7x6 = (!Wpe6z6); +assign Wpe6z6 = (No7et6 ? Cvb6z6 : Kvb6z6); +assign Cvb6z6 = (Eqe6z6 & Mqe6z6); +assign Mqe6z6 = (Uqe6z6 & Cre6z6); +assign Cre6z6 = (~(Kre6z6 & Uee6z6)); +assign Uqe6z6 = (Sre6z6 & Ase6z6); +assign Ase6z6 = (~(Ise6z6 & Ycc6z6)); +assign Ise6z6 = (Hfliw6 | Ir7et6); +assign Hfliw6 = (~(R9h7v6 & Qse6z6)); +assign Qse6z6 = (~(Ku7et6 & U28et6)); +assign Sre6z6 = (~(Agc6z6 & Wde6z6)); +assign Eqe6z6 = (Yse6z6 & Gte6z6); +assign Gte6z6 = (~(Kxb7z6[9] & Mec6z6)); +assign Yse6z6 = (Ote6z6 & Wte6z6); +assign Wte6z6 = (~(Eue6z6 & Cfe6z6)); +assign Ote6z6 = (~(Mue6z6 & Yge6z6)); +assign Kvb6z6 = (Uue6z6 & Cve6z6); +assign Cve6z6 = (Kve6z6 & Sve6z6); +assign Sve6z6 = (~(Awe6z6 & Cfe6z6)); +assign Cfe6z6 = (~(Iwe6z6 & Qwe6z6)); +assign Qwe6z6 = (~(Fhc7z6[9] & Ywe6z6)); +assign Iwe6z6 = (Gxe6z6 & Oxe6z6); +assign Oxe6z6 = (~(Kxb7z6[9] & Wxe6z6)); +assign Gxe6z6 = (~(Fth7z6[9] & Eye6z6)); +assign Kve6z6 = (Mye6z6 & Uye6z6); +assign Uye6z6 = (~(Mue6z6 & Wde6z6)); +assign Wde6z6 = (~(Cze6z6 & Kze6z6)); +assign Kze6z6 = (~(Fhc7z6[25] & Ywe6z6)); +assign Cze6z6 = (Sze6z6 & A0f6z6); +assign A0f6z6 = (~(Kxb7z6[25] & Wxe6z6)); +assign Sze6z6 = (~(Fth7z6[25] & Eye6z6)); +assign Mye6z6 = (~(I0f6z6 & Uee6z6)); +assign Uee6z6 = (~(Q0f6z6 & Y0f6z6)); +assign Y0f6z6 = (~(Kxb7z6[1] & Wxe6z6)); +assign Q0f6z6 = (G1f6z6 & O1f6z6); +assign O1f6z6 = (~(E3c7z6[1] & Ywe6z6)); +assign G1f6z6 = (~(Fth7z6[1] & Eye6z6)); +assign Uue6z6 = (W1f6z6 & E2f6z6); +assign E2f6z6 = (~(Uic6z6 & Yge6z6)); +assign Yge6z6 = (~(M2f6z6 & U2f6z6)); +assign U2f6z6 = (~(Fhc7z6[17] & Ywe6z6)); +assign M2f6z6 = (C3f6z6 & K3f6z6); +assign K3f6z6 = (~(Kxb7z6[17] & Wxe6z6)); +assign C3f6z6 = (~(Fth7z6[17] & Eye6z6)); +assign W1f6z6 = (~(Kxb7z6[17] & Mec6z6)); +assign Gpe6z6 = (~(Svb6z6 & Itb7z6[17])); +assign HWDATAD[16] = (~(S3f6z6 & A4f6z6)); +assign A4f6z6 = (~(Tim7z6[16] & Otb6z6)); +assign S3f6z6 = (I4f6z6 & Q4f6z6); +assign Q4f6z6 = (~(Mub6z6 & V4r7x6)); +assign V4r7x6 = (!Y4f6z6); +assign Y4f6z6 = (No7et6 ? Oxb6z6 : Wxb6z6); +assign Oxb6z6 = (G5f6z6 & O5f6z6); +assign O5f6z6 = (W5f6z6 & E6f6z6); +assign E6f6z6 = (~(Eue6z6 & M6f6z6)); +assign W5f6z6 = (U6f6z6 & C7f6z6); +assign C7f6z6 = (~(Nob7z6[8] & Ioc6z6)); +assign Ioc6z6 = (~(Uud6z6 | J2cdt6)); +assign U6f6z6 = (~(Kre6z6 & K7f6z6)); +assign G5f6z6 = (S7f6z6 & A8f6z6); +assign A8f6z6 = (~(Kxb7z6[8] & Mec6z6)); +assign S7f6z6 = (I8f6z6 & Q8f6z6); +assign Q8f6z6 = (~(Mue6z6 & Y8f6z6)); +assign I8f6z6 = (~(Agc6z6 & G9f6z6)); +assign Wxb6z6 = (O9f6z6 & W9f6z6); +assign W9f6z6 = (Eaf6z6 & Maf6z6); +assign Maf6z6 = (~(Awe6z6 & M6f6z6)); +assign Eaf6z6 = (Uaf6z6 & Cbf6z6); +assign Cbf6z6 = (~(Mue6z6 & G9f6z6)); +assign Uaf6z6 = (~(I0f6z6 & K7f6z6)); +assign O9f6z6 = (Kbf6z6 & Sbf6z6); +assign Sbf6z6 = (~(Inadt6 & Age6z6)); +assign Kbf6z6 = (Acf6z6 & Icf6z6); +assign Icf6z6 = (~(Uic6z6 & Y8f6z6)); +assign Acf6z6 = (~(Kxb7z6[16] & Mec6z6)); +assign I4f6z6 = (~(Svb6z6 & Itb7z6[16])); +assign HWDATAD[15] = (~(Qcf6z6 & Ycf6z6)); +assign Ycf6z6 = (~(Tim7z6[15] & Otb6z6)); +assign Qcf6z6 = (Gdf6z6 & Odf6z6); +assign Odf6z6 = (~(Mub6z6 & Oyp7x6)); +assign Oyp7x6 = (!Wdf6z6); +assign Wdf6z6 = (No7et6 ? E2e6z6 : M2e6z6); +assign E2e6z6 = (Eef6z6 & Mef6z6); +assign Mef6z6 = (Uef6z6 & Cff6z6); +assign Cff6z6 = (~(Awe6z6 & Sfc6z6)); +assign Uef6z6 = (Kff6z6 & Sff6z6); +assign Sff6z6 = (~(Mue6z6 & Odc6z6)); +assign Kff6z6 = (~(I0f6z6 & Acc6z6)); +assign Eef6z6 = (Agf6z6 & Igf6z6); +assign Igf6z6 = (~(Uic6z6 & Igc6z6)); +assign Agf6z6 = (~(Kxb7z6[23] & Mec6z6)); +assign M2e6z6 = (Qgf6z6 & Ygf6z6); +assign Ygf6z6 = (Ghf6z6 & Ohf6z6); +assign Ohf6z6 = (Whf6z6 & Eif6z6); +assign Eif6z6 = (~(Mif6z6 & Mzmov6)); +assign Mzmov6 = (~(Uif6z6 & Cjf6z6)); +assign Cjf6z6 = (~(Ohe7z6[7] & Kjf6z6)); +assign Uif6z6 = (~(Mfe7z6[7] & Ode6z6)); +assign Whf6z6 = (~(Agc6z6 & Odc6z6)); +assign Odc6z6 = (~(Sjf6z6 & Akf6z6)); +assign Akf6z6 = (~(Fhc7z6[31] & Ywe6z6)); +assign Sjf6z6 = (Ikf6z6 & Qkf6z6); +assign Qkf6z6 = (~(Kxb7z6[31] & Wxe6z6)); +assign Ikf6z6 = (~(Fth7z6[31] & Eye6z6)); +assign Ghf6z6 = (Ykf6z6 & Glf6z6); +assign Glf6z6 = (~(Kre6z6 & Acc6z6)); +assign Acc6z6 = (~(Olf6z6 & Wlf6z6)); +assign Wlf6z6 = (~(Fhc7z6[7] & Ywe6z6)); +assign Olf6z6 = (Emf6z6 & Mmf6z6); +assign Mmf6z6 = (~(Kxb7z6[7] & Wxe6z6)); +assign Emf6z6 = (~(Fth7z6[7] & Eye6z6)); +assign Ykf6z6 = (~(Eue6z6 & Sfc6z6)); +assign Sfc6z6 = (~(Umf6z6 & Cnf6z6)); +assign Cnf6z6 = (~(Kxb7z6[15] & Wxe6z6)); +assign Umf6z6 = (Knf6z6 & Snf6z6); +assign Snf6z6 = (~(Fth7z6[15] & Eye6z6)); +assign Knf6z6 = (~(Fhc7z6[15] & Ywe6z6)); +assign Qgf6z6 = (Aof6z6 & Iof6z6); +assign Iof6z6 = (Qof6z6 & Yof6z6); +assign Yof6z6 = (~(Mue6z6 & Igc6z6)); +assign Igc6z6 = (~(Gpf6z6 & Opf6z6)); +assign Opf6z6 = (~(Fhc7z6[23] & Ywe6z6)); +assign Gpf6z6 = (Wpf6z6 & Eqf6z6); +assign Eqf6z6 = (~(Kxb7z6[23] & Wxe6z6)); +assign Wpf6z6 = (~(Fth7z6[23] & Eye6z6)); +assign Qof6z6 = (Mqf6z6 | Dqr8v6); +assign Aof6z6 = (Uqf6z6 & Crf6z6); +assign Crf6z6 = (~(Kxb7z6[15] & Mec6z6)); +assign Uqf6z6 = (~(Ppb7z6[7] & Age6z6)); +assign Gdf6z6 = (~(Svb6z6 & Itb7z6[15])); +assign HWDATAD[14] = (~(Krf6z6 & Srf6z6)); +assign Srf6z6 = (~(Tim7z6[14] & Otb6z6)); +assign Krf6z6 = (Asf6z6 & Isf6z6); +assign Isf6z6 = (~(Mub6z6 & Twq7x6)); +assign Twq7x6 = (!Qsf6z6); +assign Qsf6z6 = (No7et6 ? I4e6z6 : Q4e6z6); +assign I4e6z6 = (Ysf6z6 & Gtf6z6); +assign Gtf6z6 = (Otf6z6 & Wtf6z6); +assign Wtf6z6 = (~(Awe6z6 & Eqc6z6)); +assign Otf6z6 = (Euf6z6 & Muf6z6); +assign Muf6z6 = (~(Mue6z6 & Qoc6z6)); +assign Euf6z6 = (~(I0f6z6 & Knc6z6)); +assign Ysf6z6 = (Uuf6z6 & Cvf6z6); +assign Cvf6z6 = (~(Uic6z6 & Mqc6z6)); +assign Uuf6z6 = (~(Kxb7z6[22] & Mec6z6)); +assign Q4e6z6 = (Kvf6z6 & Svf6z6); +assign Svf6z6 = (Awf6z6 & Iwf6z6); +assign Iwf6z6 = (Qwf6z6 & Ywf6z6); +assign Ywf6z6 = (~(Mif6z6 & L2nov6)); +assign L2nov6 = (~(Gxf6z6 & Oxf6z6)); +assign Oxf6z6 = (~(Ohe7z6[6] & Kjf6z6)); +assign Gxf6z6 = (~(Mfe7z6[6] & Ode6z6)); +assign Qwf6z6 = (~(Agc6z6 & Qoc6z6)); +assign Qoc6z6 = (~(Wxf6z6 & Eyf6z6)); +assign Eyf6z6 = (~(Kxb7z6[30] & Wxe6z6)); +assign Wxf6z6 = (Myf6z6 & Uyf6z6); +assign Uyf6z6 = (~(Fth7z6[30] & Eye6z6)); +assign Myf6z6 = (~(Fhc7z6[30] & Ywe6z6)); +assign Awf6z6 = (Czf6z6 & Kzf6z6); +assign Kzf6z6 = (~(Kre6z6 & Knc6z6)); +assign Knc6z6 = (~(Szf6z6 & A0g6z6)); +assign A0g6z6 = (~(Fhc7z6[6] & Ywe6z6)); +assign Szf6z6 = (I0g6z6 & Q0g6z6); +assign Q0g6z6 = (~(Kxb7z6[6] & Wxe6z6)); +assign I0g6z6 = (~(Fth7z6[6] & Eye6z6)); +assign Czf6z6 = (~(Eue6z6 & Eqc6z6)); +assign Eqc6z6 = (~(Y0g6z6 & G1g6z6)); +assign G1g6z6 = (~(Kxb7z6[14] & Wxe6z6)); +assign Y0g6z6 = (O1g6z6 & W1g6z6); +assign W1g6z6 = (~(Fth7z6[14] & Eye6z6)); +assign O1g6z6 = (~(Fhc7z6[14] & Ywe6z6)); +assign Kvf6z6 = (E2g6z6 & M2g6z6); +assign M2g6z6 = (U2g6z6 & C3g6z6); +assign C3g6z6 = (~(Mue6z6 & Mqc6z6)); +assign Mqc6z6 = (~(K3g6z6 & S3g6z6)); +assign S3g6z6 = (~(Fhc7z6[22] & Ywe6z6)); +assign K3g6z6 = (A4g6z6 & I4g6z6); +assign I4g6z6 = (~(Kxb7z6[22] & Wxe6z6)); +assign A4g6z6 = (~(Fth7z6[22] & Eye6z6)); +assign U2g6z6 = (Mqf6z6 | Nnr8v6); +assign E2g6z6 = (Q4g6z6 & Y4g6z6); +assign Y4g6z6 = (~(Kxb7z6[14] & Mec6z6)); +assign Q4g6z6 = (~(Ppb7z6[6] & Age6z6)); +assign Asf6z6 = (~(Svb6z6 & Itb7z6[14])); +assign HWDATAD[13] = (~(G5g6z6 & O5g6z6)); +assign O5g6z6 = (~(Tim7z6[13] & Otb6z6)); +assign G5g6z6 = (W5g6z6 & E6g6z6); +assign E6g6z6 = (~(Mub6z6 & Vqq7x6)); +assign Vqq7x6 = (!M6g6z6); +assign M6g6z6 = (No7et6 ? M6e6z6 : U6e6z6); +assign M6e6z6 = (U6g6z6 & C7g6z6); +assign C7g6z6 = (K7g6z6 & S7g6z6); +assign S7g6z6 = (~(Awe6z6 & G1d6z6)); +assign K7g6z6 = (A8g6z6 & I8g6z6); +assign I8g6z6 = (~(Mue6z6 & Szc6z6)); +assign A8g6z6 = (~(I0f6z6 & Uyc6z6)); +assign U6g6z6 = (Q8g6z6 & Y8g6z6); +assign Y8g6z6 = (~(Uic6z6 & O1d6z6)); +assign Q8g6z6 = (~(Kxb7z6[21] & Mec6z6)); +assign U6e6z6 = (G9g6z6 & O9g6z6); +assign O9g6z6 = (W9g6z6 & Eag6z6); +assign Eag6z6 = (Mag6z6 & Uag6z6); +assign Uag6z6 = (~(Mif6z6 & Y5nov6)); +assign Y5nov6 = (~(Cbg6z6 & Kbg6z6)); +assign Kbg6z6 = (~(Ohe7z6[5] & Kjf6z6)); +assign Kjf6z6 = (Sbg6z6 | Acg6z6); +assign Cbg6z6 = (~(Mfe7z6[5] & Ode6z6)); +assign Mag6z6 = (~(Agc6z6 & Szc6z6)); +assign Szc6z6 = (~(Icg6z6 & Qcg6z6)); +assign Qcg6z6 = (~(Fhc7z6[29] & Ywe6z6)); +assign Icg6z6 = (Ycg6z6 & Gdg6z6); +assign Gdg6z6 = (~(Kxb7z6[29] & Wxe6z6)); +assign Ycg6z6 = (~(Fth7z6[29] & Eye6z6)); +assign W9g6z6 = (Odg6z6 & Wdg6z6); +assign Wdg6z6 = (~(Kre6z6 & Uyc6z6)); +assign Uyc6z6 = (~(Eeg6z6 & Meg6z6)); +assign Meg6z6 = (~(Fhc7z6[5] & Ywe6z6)); +assign Eeg6z6 = (Ueg6z6 & Cfg6z6); +assign Cfg6z6 = (~(Kxb7z6[5] & Wxe6z6)); +assign Ueg6z6 = (~(Fth7z6[5] & Eye6z6)); +assign Odg6z6 = (~(Eue6z6 & G1d6z6)); +assign G1d6z6 = (~(Kfg6z6 & Sfg6z6)); +assign Sfg6z6 = (~(Fhc7z6[13] & Ywe6z6)); +assign Kfg6z6 = (Agg6z6 & Igg6z6); +assign Igg6z6 = (~(Kxb7z6[13] & Wxe6z6)); +assign Agg6z6 = (~(Fth7z6[13] & Eye6z6)); +assign G9g6z6 = (Qgg6z6 & Ygg6z6); +assign Ygg6z6 = (Ghg6z6 & Ohg6z6); +assign Ohg6z6 = (~(Mue6z6 & O1d6z6)); +assign O1d6z6 = (~(Whg6z6 & Eig6z6)); +assign Eig6z6 = (~(Fhc7z6[21] & Ywe6z6)); +assign Whg6z6 = (Mig6z6 & Uig6z6); +assign Uig6z6 = (~(Kxb7z6[21] & Wxe6z6)); +assign Mig6z6 = (~(Fth7z6[21] & Eye6z6)); +assign Ghg6z6 = (Mqf6z6 | Xkr8v6); +assign Qgg6z6 = (Cjg6z6 & Kjg6z6); +assign Kjg6z6 = (~(Kxb7z6[13] & Mec6z6)); +assign Cjg6z6 = (~(Ppb7z6[5] & Age6z6)); +assign W5g6z6 = (~(Svb6z6 & Itb7z6[13])); +assign HWDATAD[12] = (~(Sjg6z6 & Akg6z6)); +assign Akg6z6 = (~(Tim7z6[12] & Otb6z6)); +assign Sjg6z6 = (Ikg6z6 & Qkg6z6); +assign Qkg6z6 = (~(Mub6z6 & Llq7x6)); +assign Llq7x6 = (!Ykg6z6); +assign Ykg6z6 = (No7et6 ? Q8e6z6 : Y8e6z6); +assign Q8e6z6 = (Glg6z6 & Olg6z6); +assign Olg6z6 = (Wlg6z6 & Emg6z6); +assign Emg6z6 = (~(Awe6z6 & Ead6z6)); +assign Wlg6z6 = (Mmg6z6 & Umg6z6); +assign Umg6z6 = (~(Mue6z6 & Q8d6z6)); +assign Mmg6z6 = (~(I0f6z6 & S7d6z6)); +assign Glg6z6 = (Cng6z6 & Kng6z6); +assign Kng6z6 = (~(Uic6z6 & Mad6z6)); +assign Cng6z6 = (~(Kxb7z6[20] & Mec6z6)); +assign Y8e6z6 = (Sng6z6 & Aog6z6); +assign Aog6z6 = (Iog6z6 & Qog6z6); +assign Qog6z6 = (Yog6z6 & Gpg6z6); +assign Gpg6z6 = (~(Mif6z6 & Gwmov6)); +assign Gwmov6 = (~(Opg6z6 & Wpg6z6)); +assign Wpg6z6 = (~(Acg6z6 & Ohe7z6[4])); +assign Opg6z6 = (Eqg6z6 & Mqg6z6); +assign Mqg6z6 = (~(Mfe7z6[4] & Ode6z6)); +assign Eqg6z6 = (~(N0gdt6 & Sbg6z6)); +assign Mif6z6 = (Ycc6z6 & Uqg6z6); +assign Uqg6z6 = (Rysiw6 | Srviy6); +assign Rysiw6 = (!Otsiw6); +assign Yog6z6 = (Mqf6z6 | Hir8v6); +assign Mqf6z6 = (~(Crg6z6 & Otsiw6)); +assign Otsiw6 = (Krg6z6 & Srg6z6); +assign Srg6z6 = (~(Asg6z6 | Isg6z6)); +assign Asg6z6 = (Qsg6z6 | Ohe7z6[2]); +assign Krg6z6 = (Ysg6z6 & Gtg6z6); +assign Ysg6z6 = (Mud6z6 & Yce6z6); +assign Yce6z6 = (~(Ohe7z6[1] & Sbg6z6)); +assign Mud6z6 = (Otg6z6 & Wtg6z6); +assign Wtg6z6 = (~(Acg6z6 & Ohe7z6[1])); +assign Otg6z6 = (Eug6z6 & Mug6z6); +assign Mug6z6 = (~(Ohe7z6[3] & Ode6z6)); +assign Eug6z6 = (~(Sbg6z6 & Ohe7z6[2])); +assign Crg6z6 = (~(Srviy6 | Uud6z6)); +assign Srviy6 = (Ldo7v6 & Tnzdt6); +assign Iog6z6 = (Uug6z6 & Cvg6z6); +assign Cvg6z6 = (~(Agc6z6 & Q8d6z6)); +assign Q8d6z6 = (~(Kvg6z6 & Svg6z6)); +assign Svg6z6 = (~(Kxb7z6[28] & Wxe6z6)); +assign Kvg6z6 = (Awg6z6 & Iwg6z6); +assign Iwg6z6 = (~(Fth7z6[28] & Eye6z6)); +assign Awg6z6 = (~(Fhc7z6[28] & Ywe6z6)); +assign Uug6z6 = (~(Kre6z6 & S7d6z6)); +assign S7d6z6 = (~(Qwg6z6 & Ywg6z6)); +assign Ywg6z6 = (~(Kxb7z6[4] & Wxe6z6)); +assign Qwg6z6 = (Gxg6z6 & Oxg6z6); +assign Oxg6z6 = (~(E3c7z6[4] & Ywe6z6)); +assign Gxg6z6 = (~(Fth7z6[4] & Eye6z6)); +assign Sng6z6 = (Wxg6z6 & Eyg6z6); +assign Eyg6z6 = (~(Kxb7z6[12] & Mec6z6)); +assign Wxg6z6 = (Myg6z6 & Uyg6z6); +assign Uyg6z6 = (~(Eue6z6 & Ead6z6)); +assign Ead6z6 = (~(Czg6z6 & Kzg6z6)); +assign Kzg6z6 = (~(Fhc7z6[12] & Ywe6z6)); +assign Czg6z6 = (Szg6z6 & A0h6z6); +assign A0h6z6 = (~(Kxb7z6[12] & Wxe6z6)); +assign Szg6z6 = (~(Fth7z6[12] & Eye6z6)); +assign Myg6z6 = (~(Mue6z6 & Mad6z6)); +assign Mad6z6 = (~(I0h6z6 & Q0h6z6)); +assign Q0h6z6 = (~(Fhc7z6[20] & Ywe6z6)); +assign I0h6z6 = (Y0h6z6 & G1h6z6); +assign G1h6z6 = (~(Kxb7z6[20] & Wxe6z6)); +assign Y0h6z6 = (~(Fth7z6[20] & Eye6z6)); +assign Ikg6z6 = (~(Svb6z6 & Itb7z6[12])); +assign HWDATAD[11] = (~(O1h6z6 & W1h6z6)); +assign W1h6z6 = (~(Tim7z6[11] & Otb6z6)); +assign O1h6z6 = (E2h6z6 & M2h6z6); +assign M2h6z6 = (~(Mub6z6 & Bgq7x6)); +assign Bgq7x6 = (!U2h6z6); +assign U2h6z6 = (No7et6 ? Wle6z6 : Eme6z6); +assign Wle6z6 = (C3h6z6 & K3h6z6); +assign K3h6z6 = (S3h6z6 & A4h6z6); +assign A4h6z6 = (~(Awe6z6 & Cjd6z6)); +assign S3h6z6 = (I4h6z6 & Q4h6z6); +assign Q4h6z6 = (~(Mue6z6 & Ohd6z6)); +assign I4h6z6 = (~(I0f6z6 & Qgd6z6)); +assign C3h6z6 = (Y4h6z6 & G5h6z6); +assign G5h6z6 = (~(Uic6z6 & Kjd6z6)); +assign Y4h6z6 = (~(Kxb7z6[19] & Mec6z6)); +assign Eme6z6 = (O5h6z6 & W5h6z6); +assign W5h6z6 = (E6h6z6 & M6h6z6); +assign M6h6z6 = (~(Kre6z6 & Qgd6z6)); +assign Qgd6z6 = (~(U6h6z6 & C7h6z6)); +assign C7h6z6 = (~(Kxb7z6[3] & Wxe6z6)); +assign U6h6z6 = (K7h6z6 & S7h6z6); +assign S7h6z6 = (~(E3c7z6[3] & Ywe6z6)); +assign K7h6z6 = (~(Fth7z6[3] & Eye6z6)); +assign E6h6z6 = (A8h6z6 & I8h6z6); +assign I8h6z6 = (Gtg6z6 | Uud6z6); +assign Uud6z6 = (!Ycc6z6); +assign Gtg6z6 = (Q8h6z6 & Y8h6z6); +assign Y8h6z6 = (~(Ohe7z6[3] & Acg6z6)); +assign Q8h6z6 = (G9h6z6 & O9h6z6); +assign O9h6z6 = (~(Mfe7z6[3] & Ode6z6)); +assign G9h6z6 = (~(Ohe7z6[4] & Sbg6z6)); +assign A8h6z6 = (~(Agc6z6 & Ohd6z6)); +assign Ohd6z6 = (~(W9h6z6 & Eah6z6)); +assign Eah6z6 = (~(Fhc7z6[27] & Ywe6z6)); +assign W9h6z6 = (Mah6z6 & Uah6z6); +assign Uah6z6 = (~(Kxb7z6[27] & Wxe6z6)); +assign Mah6z6 = (~(Fth7z6[27] & Eye6z6)); +assign O5h6z6 = (Cbh6z6 & Kbh6z6); +assign Kbh6z6 = (~(Kxb7z6[11] & Mec6z6)); +assign Cbh6z6 = (Sbh6z6 & Ach6z6); +assign Ach6z6 = (~(Eue6z6 & Cjd6z6)); +assign Cjd6z6 = (~(Ich6z6 & Qch6z6)); +assign Qch6z6 = (~(Fhc7z6[11] & Ywe6z6)); +assign Ich6z6 = (Ych6z6 & Gdh6z6); +assign Gdh6z6 = (~(Kxb7z6[11] & Wxe6z6)); +assign Ych6z6 = (~(Fth7z6[11] & Eye6z6)); +assign Sbh6z6 = (~(Mue6z6 & Kjd6z6)); +assign Kjd6z6 = (~(Odh6z6 & Wdh6z6)); +assign Wdh6z6 = (~(Fhc7z6[19] & Ywe6z6)); +assign Odh6z6 = (Eeh6z6 & Meh6z6); +assign Meh6z6 = (~(Kxb7z6[19] & Wxe6z6)); +assign Eeh6z6 = (~(Fth7z6[19] & Eye6z6)); +assign E2h6z6 = (~(Svb6z6 & Itb7z6[11])); +assign HWDATAD[10] = (~(Ueh6z6 & Cfh6z6)); +assign Cfh6z6 = (~(Tim7z6[10] & Otb6z6)); +assign Ueh6z6 = (Kfh6z6 & Sfh6z6); +assign Sfh6z6 = (~(Mub6z6 & Raq7x6)); +assign Raq7x6 = (!Agh6z6); +assign Agh6z6 = (No7et6 ? Aoe6z6 : Ioe6z6); +assign Aoe6z6 = (Igh6z6 & Qgh6z6); +assign Qgh6z6 = (Ygh6z6 & Ghh6z6); +assign Ghh6z6 = (~(Awe6z6 & Asd6z6)); +assign Awe6z6 = (Ohh6z6 & Whh6z6); +assign Whh6z6 = (~(Eih6z6 & Mih6z6)); +assign Ygh6z6 = (Uih6z6 & Cjh6z6); +assign Cjh6z6 = (~(Mue6z6 & Mqd6z6)); +assign Uih6z6 = (~(I0f6z6 & Opd6z6)); +assign I0f6z6 = (Ohh6z6 & Kjh6z6); +assign Kjh6z6 = (~(Sjh6z6 & Akh6z6)); +assign Sjh6z6 = (Ikh6z6 & Qkh6z6); +assign Igh6z6 = (Ykh6z6 & Glh6z6); +assign Glh6z6 = (~(Uic6z6 & Isd6z6)); +assign Ykh6z6 = (~(Kxb7z6[18] & Mec6z6)); +assign Ioe6z6 = (Olh6z6 & Wlh6z6); +assign Wlh6z6 = (Emh6z6 & Mmh6z6); +assign Mmh6z6 = (~(Eue6z6 & Asd6z6)); +assign Asd6z6 = (~(Umh6z6 & Cnh6z6)); +assign Cnh6z6 = (~(Fhc7z6[10] & Ywe6z6)); +assign Umh6z6 = (Knh6z6 & Snh6z6); +assign Snh6z6 = (~(Kxb7z6[10] & Wxe6z6)); +assign Knh6z6 = (~(Fth7z6[10] & Eye6z6)); +assign Eue6z6 = (Aoh6z6 & Ioh6z6); +assign Emh6z6 = (Qoh6z6 & Yoh6z6); +assign Yoh6z6 = (~(Gph6z6 & Ycc6z6)); +assign Gph6z6 = (~(Oph6z6 & Wph6z6)); +assign Wph6z6 = (~(Acg6z6 & Ohe7z6[2])); +assign Oph6z6 = (~(Isg6z6 | Qsg6z6)); +assign Qsg6z6 = (Ohe7z6[4] & Ode6z6); +assign Isg6z6 = (Ohe7z6[3] & Sbg6z6); +assign Sbg6z6 = (~(Acg6z6 | Ode6z6)); +assign Ode6z6 = (Eqh6z6 & Oyfdt6); +assign Eqh6z6 = (Tnzdt6 & Kgbdt6); +assign Acg6z6 = (~(Gpsiw6 | Ldo7v6)); +assign Qoh6z6 = (~(Kre6z6 & Opd6z6)); +assign Opd6z6 = (~(Mqh6z6 & Uqh6z6)); +assign Uqh6z6 = (~(Kxb7z6[2] & Wxe6z6)); +assign Mqh6z6 = (Crh6z6 & Krh6z6); +assign Krh6z6 = (~(E3c7z6[2] & Ywe6z6)); +assign Crh6z6 = (~(Fth7z6[2] & Eye6z6)); +assign Kre6z6 = (Ohh6z6 & Srh6z6); +assign Srh6z6 = (~(Ash6z6 & Eih6z6)); +assign Olh6z6 = (Ish6z6 & Qsh6z6); +assign Qsh6z6 = (~(Kxb7z6[10] & Mec6z6)); +assign Ish6z6 = (Ysh6z6 & Gth6z6); +assign Gth6z6 = (~(Agc6z6 & Mqd6z6)); +assign Mqd6z6 = (~(Oth6z6 & Wth6z6)); +assign Wth6z6 = (~(Fhc7z6[26] & Ywe6z6)); +assign Oth6z6 = (Euh6z6 & Muh6z6); +assign Muh6z6 = (~(Kxb7z6[26] & Wxe6z6)); +assign Euh6z6 = (~(Fth7z6[26] & Eye6z6)); +assign Ysh6z6 = (~(Mue6z6 & Isd6z6)); +assign Isd6z6 = (~(Uuh6z6 & Cvh6z6)); +assign Cvh6z6 = (~(Fhc7z6[18] & Ywe6z6)); +assign Uuh6z6 = (Kvh6z6 & Svh6z6); +assign Svh6z6 = (~(Kxb7z6[18] & Wxe6z6)); +assign Kvh6z6 = (~(Fth7z6[18] & Eye6z6)); +assign Mue6z6 = (~(Awh6z6 | Iwh6z6)); +assign Kfh6z6 = (~(Svb6z6 & Itb7z6[10])); +assign HWDATAD[0] = (~(Qwh6z6 & Ywh6z6)); +assign Ywh6z6 = (~(Mub6z6 & I8r7x6)); +assign I8r7x6 = (!Gxh6z6); +assign Gxh6z6 = (No7et6 ? A0e6z6 : I0e6z6); +assign A0e6z6 = (Oxh6z6 & Wxh6z6); +assign Wxh6z6 = (Eyh6z6 & Myh6z6); +assign Myh6z6 = (Uyh6z6 & Czh6z6); +assign Czh6z6 = (~(Cjc6z6 & K7f6z6)); +assign Cjc6z6 = (Ohh6z6 & Kzh6z6); +assign Kzh6z6 = (~(Ash6z6 & Iwh6z6)); +assign Ash6z6 = (Mih6z6 & Qkh6z6); +assign Qkh6z6 = (!Eylxx6); +assign Uyh6z6 = (~(Whc6z6 & M6f6z6)); +assign Whc6z6 = (Ohh6z6 & Szh6z6); +assign Szh6z6 = (~(Akh6z6 & Ikh6z6)); +assign Eyh6z6 = (A0i6z6 & I0i6z6); +assign I0i6z6 = (~(Gdc6z6 & Y8f6z6)); +assign A0i6z6 = (~(Uic6z6 & G9f6z6)); +assign Uic6z6 = (Ioh6z6 & Q0i6z6); +assign Q0i6z6 = (~(Y0i6z6 & X7vxx6)); +assign Oxh6z6 = (G1i6z6 & O1i6z6); +assign O1i6z6 = (~(Lybdt6 & Ycc6z6)); +assign G1i6z6 = (W1i6z6 & E2i6z6); +assign E2i6z6 = (~(Kxb7z6[24] & Mec6z6)); +assign W1i6z6 = (~(Tkbdt6 & Age6z6)); +assign I0e6z6 = (M2i6z6 & U2i6z6); +assign U2i6z6 = (C3i6z6 & K3i6z6); +assign K3i6z6 = (S3i6z6 & A4i6z6); +assign A4i6z6 = (~(Kfc6z6 & M6f6z6)); +assign M6f6z6 = (~(I4i6z6 & Q4i6z6)); +assign Q4i6z6 = (~(Fhc7z6[8] & Ywe6z6)); +assign I4i6z6 = (Y4i6z6 & G5i6z6); +assign G5i6z6 = (~(Kxb7z6[8] & Wxe6z6)); +assign Y4i6z6 = (~(Fth7z6[8] & Eye6z6)); +assign Kfc6z6 = (Ohh6z6 & O5i6z6); +assign O5i6z6 = (~(Iwh6z6 & Mih6z6)); +assign Mih6z6 = (~(Bqoxx6 & Kih7z6[0])); +assign Iwh6z6 = (Bavxx6 & D9vxx6); +assign D9vxx6 = (~(Dca7x6 & W5i6z6)); +assign Bavxx6 = (~(E6i6z6 & Gaa7x6)); +assign S3i6z6 = (~(Qm0jw6 & Ycc6z6)); +assign Ycc6z6 = (~(M6i6z6 & U6i6z6)); +assign U6i6z6 = (~(C7i6z6 & K7i6z6)); +assign K7i6z6 = (Fcmyx6 & S7i6z6); +assign Fcmyx6 = (!Qij7z6[2]); +assign C7i6z6 = (Ldmyx6 & Tdmyx6); +assign M6i6z6 = (~(Rioov6 & Gdviy6)); +assign Gdviy6 = (!Igniy6); +assign Qm0jw6 = (Nob7z6[0] & Rslov6); +assign Rslov6 = (!J2cdt6); +assign C3i6z6 = (A8i6z6 & I8i6z6); +assign I8i6z6 = (~(Agc6z6 & Y8f6z6)); +assign Y8f6z6 = (~(Q8i6z6 & Y8i6z6)); +assign Y8i6z6 = (~(Fhc7z6[16] & Ywe6z6)); +assign Q8i6z6 = (G9i6z6 & O9i6z6); +assign O9i6z6 = (~(Kxb7z6[16] & Wxe6z6)); +assign G9i6z6 = (~(Fth7z6[16] & Eye6z6)); +assign Agc6z6 = (~(Akh6z6 | Awh6z6)); +assign Akh6z6 = (!L9vxx6); +assign L9vxx6 = (H287x6 & Edh7z6[1]); +assign H287x6 = (~(W9i6z6 | Kih7z6[0])); +assign A8i6z6 = (~(Sbc6z6 & K7f6z6)); +assign K7f6z6 = (~(Eai6z6 & Mai6z6)); +assign Mai6z6 = (~(Kxb7z6[0] & Wxe6z6)); +assign Eai6z6 = (Uai6z6 & Cbi6z6); +assign Cbi6z6 = (~(E3c7z6[0] & Ywe6z6)); +assign Uai6z6 = (~(Fth7z6[0] & Eye6z6)); +assign Sbc6z6 = (Ioh6z6 & Kbi6z6); +assign Kbi6z6 = (Aoh6z6 | Eylxx6); +assign Eylxx6 = (~(Edh7z6[0] | Edh7z6[1])); +assign Aoh6z6 = (~(Sbi6z6 & Ikh6z6)); +assign Ikh6z6 = (~(Bqoxx6 & Aci6z6)); +assign Bqoxx6 = (Edh7z6[0] & Ici6z6); +assign Sbi6z6 = (Y0i6z6 & X7vxx6); +assign X7vxx6 = (~(Av77x6 & Edh7z6[1])); +assign Av77x6 = (~(Kih7z6[1] | Kih7z6[0])); +assign Ioh6z6 = (~(Awh6z6 & Y0i6z6)); +assign Y0i6z6 = (~(Ow2et6 & X7yxx6)); +assign M2i6z6 = (Qci6z6 & Yci6z6); +assign Yci6z6 = (~(Nmadt6 & Age6z6)); +assign Age6z6 = (Gdi6z6 & Odi6z6); +assign Odi6z6 = (Tdmyx6 & S7i6z6); +assign Gdi6z6 = (Qij7z6[2] & Ldmyx6); +assign Qci6z6 = (Wdi6z6 & Eei6z6); +assign Eei6z6 = (~(Gdc6z6 & G9f6z6)); +assign G9f6z6 = (~(Mei6z6 & Uei6z6)); +assign Uei6z6 = (~(Fhc7z6[24] & Ywe6z6)); +assign Ywe6z6 = (~(Cfi6z6 | Eye6z6)); +assign Cfi6z6 = (!Xnh7z6[0]); +assign Mei6z6 = (Kfi6z6 & Sfi6z6); +assign Sfi6z6 = (~(Kxb7z6[24] & Wxe6z6)); +assign Wxe6z6 = (~(Eye6z6 | Xnh7z6[0])); +assign Kfi6z6 = (~(Fth7z6[24] & Eye6z6)); +assign Eye6z6 = (~(Agi6z6 & Igi6z6)); +assign Igi6z6 = (~(Clhhw6 & Eikiy6)); +assign Eikiy6 = (Qgi6z6 & Ygi6z6); +assign Ygi6z6 = (Ghi6z6 & Ohi6z6); +assign Ghi6z6 = (Whi6z6 & Eii6z6); +assign Eii6z6 = (~(P4c7z6[0] & Hir8v6)); +assign Qgi6z6 = (Mii6z6 & Glkiy6); +assign Glkiy6 = (~(Mii6z6 & Uii6z6)); +assign Uii6z6 = (~(Cji6z6 & Kji6z6)); +assign Kji6z6 = (~(Sji6z6 & Aki6z6)); +assign Aki6z6 = (~(Iki6z6 & Qki6z6)); +assign Qki6z6 = (~(Pxmov6 & C7piy6)); +assign C7piy6 = (!P4c7z6[0]); +assign Iki6z6 = (~(Xumov6 & O9kiy6)); +assign Sji6z6 = (Ohi6z6 & Whi6z6); +assign Whi6z6 = (Oppiy6 | Kpaov6); +assign Ohi6z6 = (O9kiy6 | Xumov6); +assign Xumov6 = (!Xkr8v6); +assign O9kiy6 = (!P4c7z6[1]); +assign Cji6z6 = (~(Yki6z6 & Gli6z6)); +assign Gli6z6 = (~(P4c7z6[3] & Nnr8v6)); +assign Yki6z6 = (Oli6z6 & Y8niy6); +assign Y8niy6 = (!Ycniy6); +assign Oli6z6 = (~(P4c7z6[2] & Wli6z6)); +assign Wli6z6 = (~(Xlaov6 & Whpiy6)); +assign Whpiy6 = (!P4c7z6[3]); +assign Mii6z6 = (~(P4c7z6[3] & Dqr8v6)); +assign Agi6z6 = (~(Dzkiw6 | Emi6z6)); +assign Emi6z6 = (Mmi6z6 & Ecc7z6[10]); +assign Mmi6z6 = (Vxihw6 & Umi6z6); +assign Umi6z6 = (~(Cni6z6 & Kni6z6)); +assign Kni6z6 = (~(Sni6z6 & Aoi6z6)); +assign Aoi6z6 = (Ioi6z6 & Qoi6z6); +assign Qoi6z6 = (P4c7z6[0] ^ A8piy6); +assign A8piy6 = (!Pxg7z6[0]); +assign Ioi6z6 = (Yoi6z6 & Ot97x6); +assign Yoi6z6 = (P4c7z6[1] ^ C8a7x6); +assign C8a7x6 = (!Pxg7z6[1]); +assign Sni6z6 = (Gpi6z6 & Opi6z6); +assign Opi6z6 = (~(Oppiy6 ^ Aopiy6)); +assign Aopiy6 = (!Pxg7z6[2]); +assign Oppiy6 = (!P4c7z6[2]); +assign Gpi6z6 = (P4c7z6[3] ^ Akpiy6); +assign Akpiy6 = (!Pxg7z6[3]); +assign Cni6z6 = (~(Wpi6z6 & Eqi6z6)); +assign Eqi6z6 = (Mqi6z6 & Uqi6z6); +assign Uqi6z6 = (P4c7z6[0] ^ Gclhw6); +assign Gclhw6 = (!Ntg7z6[0]); +assign Mqi6z6 = (Cri6z6 & Yckiy6); +assign Yckiy6 = (Px97x6 & Doihw6); +assign Px97x6 = (~(Zna7x6 | Mpihw6)); +assign Cri6z6 = (P4c7z6[1] ^ Pdlhw6); +assign Pdlhw6 = (!Ntg7z6[1]); +assign Wpi6z6 = (Kri6z6 & Sri6z6); +assign Sri6z6 = (P4c7z6[2] ^ Yelhw6); +assign Yelhw6 = (!Ntg7z6[2]); +assign Kri6z6 = (P4c7z6[3] ^ Oglhw6); +assign Oglhw6 = (!Ntg7z6[3]); +assign Vxihw6 = (Ecc7z6[9] & Pbadt6); +assign Dzkiw6 = (Thbet6 & Xnh7z6[1]); +assign Gdc6z6 = (~(Awh6z6 | Eih6z6)); +assign Eih6z6 = (P7vxx6 & Zavxx6); +assign Zavxx6 = (~(W5i6z6 & Gaa7x6)); +assign Gaa7x6 = (~(W9i6z6 | Aci6z6)); +assign W9i6z6 = (!Kih7z6[1]); +assign W5i6z6 = (~(Xgmov6 | Ici6z6)); +assign Xgmov6 = (!No7et6); +assign P7vxx6 = (~(E6i6z6 & Dca7x6)); +assign Dca7x6 = (~(Aci6z6 | Kih7z6[1])); +assign Aci6z6 = (!Kih7z6[0]); +assign E6i6z6 = (~(Ici6z6 | No7et6)); +assign Ici6z6 = (!Edh7z6[1]); +assign Awh6z6 = (!Ohh6z6); +assign Ohh6z6 = (~(Asi6z6 | Spdiw6)); +assign Spdiw6 = (!Thbet6); +assign Asi6z6 = (Ztaov6 ? S7i6z6 : Isi6z6); +assign Isi6z6 = (~(Qsi6z6 & Ysi6z6)); +assign Ysi6z6 = (Gti6z6 & Oti6z6); +assign Oti6z6 = (X3yxx6 & Qsaov6); +assign Gti6z6 = (T1yxx6 & Ruvxx6); +assign Ruvxx6 = (!Rhihw6); +assign Rhihw6 = (Wti6z6 & Dioov6); +assign Wti6z6 = (Lpwxx6 & Bwvnv6); +assign Qsi6z6 = (Eui6z6 & Mui6z6); +assign Eui6z6 = (~(Uui6z6 | X7yxx6)); +assign X7yxx6 = (~(Vkhhw6 & Ajihw6)); +assign Ajihw6 = (~(Cvi6z6 & Fulnv6)); +assign Cvi6z6 = (Doihw6 & Dwb7z6[3]); +assign Vkhhw6 = (!Ot97x6); +assign Wdi6z6 = (~(Kxb7z6[0] & Mec6z6)); +assign Mec6z6 = (~(Kvi6z6 & Svi6z6)); +assign Svi6z6 = (Awi6z6 & Iwi6z6); +assign Iwi6z6 = (~(Qwi6z6 & Ldmyx6)); +assign Ldmyx6 = (Ywi6z6 & Ztaov6); +assign Ztaov6 = (Kioov6 & G5kiy6); +assign Ywi6z6 = (~(Qij7z6[5] | Qij7z6[6])); +assign Qwi6z6 = (Gxi6z6 & S7i6z6); +assign S7i6z6 = (!X4eet6); +assign Gxi6z6 = (!Tdmyx6); +assign Tdmyx6 = (~(Tdwxx6 | R2vxx6)); +assign R2vxx6 = (Qij7z6[1] | Qij7z6[0]); +assign Tdwxx6 = (!Qij7z6[4]); +assign Awi6z6 = (~(Xdphw6 & Oxi6z6)); +assign Oxi6z6 = (Uui6z6 | Wxi6z6); +assign Uui6z6 = (~(J1a7x6 & Eyi6z6)); +assign Xdphw6 = (!Yioov6); +assign Yioov6 = (Igniy6 | 1'b0); +assign Kvi6z6 = (Mui6z6 & Myi6z6); +assign Myi6z6 = (~(Rioov6 & Igniy6)); +assign Mui6z6 = (Uyi6z6 & Czi6z6); +assign Czi6z6 = (~(Ggoov6 & Vqihw6)); +assign Uyi6z6 = (Gwsiw6 & Elphw6); +assign Elphw6 = (!Ef47x6); +assign Ef47x6 = (Ggoov6 & Fxaov6); +assign Mub6z6 = (Eqn7z6[0] & Kzi6z6); +assign Qwh6z6 = (Szi6z6 & A0j6z6); +assign A0j6z6 = (~(Svb6z6 & Itb7z6[0])); +assign Svb6z6 = (Eqn7z6[1] & Kzi6z6); +assign Szi6z6 = (~(Tim7z6[0] & Otb6z6)); +assign Otb6z6 = (Eqn7z6[2] | I0j6z6); +assign I0j6z6 = (!Kzi6z6); +assign Kzi6z6 = (~(Sb0jy6 & Qln7z6[0])); +assign Sb0jy6 = (Q0j6z6 & Qakiw6); +assign HTRANSS[1] = (Y0j6z6 & G1j6z6); +assign G1j6z6 = (~(O1j6z6 & W1j6z6)); +assign W1j6z6 = (Uaonv6 | E2j6z6); +assign HTRANSS[0] = (M2j6z6 & U2j6z6); +assign M2j6z6 = (Aoa6z6 & Y0j6z6); +assign Y0j6z6 = (C3j6z6 & K3j6z6); +assign K3j6z6 = (~(Rj9ov6 & Nhonv6)); +assign C3j6z6 = (~(Qmonv6 & J0jxx6)); +assign HTRANSI[1] = (Yk1ov6 | S3j6z6); +assign S3j6z6 = (U4zet6 & Am1ov6); +assign Yk1ov6 = (A4j6z6 & I4j6z6); +assign I4j6z6 = (Uy76z6 & Cfliy6); +assign Cfliy6 = (~(Q4j6z6 | Woyet6)); +assign Q4j6z6 = (~(Cakiw6 | Benyx6)); +assign Uy76z6 = (Y4j6z6 & U6y5z6); +assign Y4j6z6 = (~(DNOTITRANS & HTRANSD[1])); +assign A4j6z6 = (Lbkiw6 & Njkiw6); +assign Njkiw6 = (~(Xnmyx6 | Njfnv6)); +assign Njfnv6 = (Crcdt6 ? Dvc7z6[31] : X0d7z6[31]); +assign X0d7z6[31] = (~(G5j6z6 & O5j6z6)); +assign O5j6z6 = (W5j6z6 & E6j6z6); +assign E6j6z6 = (~(Pic7z6[31] & Ir0ov6)); +assign W5j6z6 = (M6j6z6 & U6j6z6); +assign U6j6z6 = (Qs46z6 | Z0xnv6); +assign Z0xnv6 = (C7j6z6 & K7j6z6); +assign K7j6z6 = (~(Wkd7z6[31] & Ddmhw6)); +assign C7j6z6 = (S7j6z6 & A8j6z6); +assign A8j6z6 = (~(Xhd7z6[31] & Eu46z6)); +assign S7j6z6 = (~(Vnd7z6[31] & Jamnv6)); +assign M6j6z6 = (~(Pdc7z6[31] & Mu46z6)); +assign G5j6z6 = (I8j6z6 & Q8j6z6); +assign Q8j6z6 = (~(Pnb7z6[31] & Znnov6)); +assign I8j6z6 = (~(Qdcdt6 & Fhc7z6[31])); +assign Xnmyx6 = (~(Bw3nv6 & Zn3nv6)); +assign Zn3nv6 = (!Ujfnv6); +assign Ujfnv6 = (Crcdt6 ? Dvc7z6[30] : X0d7z6[30]); +assign X0d7z6[30] = (~(Y8j6z6 & G9j6z6)); +assign G9j6z6 = (O9j6z6 & W9j6z6); +assign W9j6z6 = (~(Pic7z6[30] & Ir0ov6)); +assign O9j6z6 = (Eaj6z6 & Maj6z6); +assign Maj6z6 = (Qs46z6 | Xdxnv6); +assign Xdxnv6 = (Uaj6z6 & Cbj6z6); +assign Cbj6z6 = (~(Wkd7z6[30] & Ddmhw6)); +assign Uaj6z6 = (Kbj6z6 & Sbj6z6); +assign Sbj6z6 = (~(Xhd7z6[30] & Eu46z6)); +assign Kbj6z6 = (~(Vnd7z6[30] & Jamnv6)); +assign Eaj6z6 = (~(Pdc7z6[30] & Mu46z6)); +assign Y8j6z6 = (Acj6z6 & Icj6z6); +assign Icj6z6 = (~(Pnb7z6[30] & Znnov6)); +assign Acj6z6 = (~(Qdcdt6 & Fhc7z6[30])); +assign Bw3nv6 = (!Bkfnv6); +assign Bkfnv6 = (Crcdt6 ? Dvc7z6[29] : X0d7z6[29]); +assign X0d7z6[29] = (~(Qcj6z6 & Ycj6z6)); +assign Ycj6z6 = (Gdj6z6 & Odj6z6); +assign Odj6z6 = (~(Pic7z6[29] & Ir0ov6)); +assign Gdj6z6 = (Wdj6z6 & Eej6z6); +assign Eej6z6 = (Qs46z6 | Mixnv6); +assign Mixnv6 = (Mej6z6 & Uej6z6); +assign Uej6z6 = (~(Wkd7z6[29] & Ddmhw6)); +assign Mej6z6 = (Cfj6z6 & Kfj6z6); +assign Kfj6z6 = (~(Xhd7z6[29] & Eu46z6)); +assign Cfj6z6 = (~(Vnd7z6[29] & Jamnv6)); +assign Wdj6z6 = (~(Pdc7z6[29] & Mu46z6)); +assign Qcj6z6 = (Sfj6z6 & Agj6z6); +assign Agj6z6 = (~(Pnb7z6[29] & Znnov6)); +assign Sfj6z6 = (~(Qdcdt6 & Fhc7z6[29])); +assign Lbkiw6 = (Am1ov6 & Ygo7v6); +assign Am1ov6 = (Crcdt6 ? Aocdt6 : Lh1ov6); +assign Lh1ov6 = (~(Igj6z6 & Qgj6z6)); +assign Qgj6z6 = (Ygj6z6 & Ghj6z6); +assign Ghj6z6 = (~(Ohj6z6 & Cgc7z6[2])); +assign Ohj6z6 = (Whj6z6 & Eij6z6); +assign Eij6z6 = (~(Mij6z6 & P1piw6)); +assign Mij6z6 = (~(Uij6z6 & Ckihw6)); +assign Ckihw6 = (Q0wnv6 & Qg2nv6); +assign Q0wnv6 = (!K9d7x6); +assign K9d7x6 = (D9d7x6 | Cubdt6); +assign D9d7x6 = (Cjj6z6 & Kjj6z6); +assign Kjj6z6 = (Sjj6z6 & Akj6z6); +assign Akj6z6 = (Ikj6z6 & Qkj6z6); +assign Qkj6z6 = (Ykj6z6 & Glj6z6); +assign Glj6z6 = (Olj6z6 & Fhc7z6[9]); +assign Olj6z6 = (Fhc7z6[25] & Pxfov6); +assign Pxfov6 = (Uobdt6 ? Wlj6z6 : C7riy6); +assign Wlj6z6 = (Tk8iw6 ^ Ide7z6[0]); +assign C7riy6 = (Knbdt6 ? W9edt6 : Acedt6); +assign Ykj6z6 = (Fhc7z6[27] & Fhc7z6[17]); +assign Ikj6z6 = (Emj6z6 & Mmj6z6); +assign Mmj6z6 = (Fhc7z6[19] & Fhc7z6[11]); +assign Emj6z6 = (E3c7z6[4] & Fhc7z6[28]); +assign Sjj6z6 = (Umj6z6 & Cnj6z6); +assign Cnj6z6 = (Knj6z6 & Snj6z6); +assign Snj6z6 = (Aoj6z6 & Fhc7z6[31]); +assign Aoj6z6 = (Fhc7z6[20] & Fhc7z6[12]); +assign Knj6z6 = (Fhc7z6[15] & Fhc7z6[7]); +assign Umj6z6 = (Ioj6z6 & Qoj6z6); +assign Qoj6z6 = (Fhc7z6[8] & Fhc7z6[23]); +assign Ioj6z6 = (Fhc7z6[24] & Fhc7z6[16]); +assign Cjj6z6 = (Yoj6z6 & Gpj6z6); +assign Gpj6z6 = (Opj6z6 & Wpj6z6); +assign Wpj6z6 = (Eqj6z6 & Mqj6z6); +assign Mqj6z6 = (Uqj6z6 & Fhc7z6[18]); +assign Uqj6z6 = (Fhc7z6[10] & Fhc7z6[26]); +assign Eqj6z6 = (Fhc7z6[6] & Fhc7z6[30]); +assign Opj6z6 = (Crj6z6 & Krj6z6); +assign Krj6z6 = (Fhc7z6[22] & Fhc7z6[14]); +assign Crj6z6 = (Fhc7z6[5] & Fhc7z6[29]); +assign Yoj6z6 = (Srj6z6 & Asj6z6); +assign Asj6z6 = (Isj6z6 & Qsj6z6); +assign Qsj6z6 = (Ysj6z6 & J1gov6); +assign J1gov6 = (!Bdu6x6); +assign Bdu6x6 = (Dte7z6[13] | Dte7z6[14]); +assign Ysj6z6 = (Fhc7z6[21] & Fhc7z6[13]); +assign Isj6z6 = (Oac7z6[2] & Oac7z6[3]); +assign Srj6z6 = (Gtj6z6 & Otj6z6); +assign Otj6z6 = (Oac7z6[0] & Oac7z6[1]); +assign Gtj6z6 = (Bqbdt6 & Qp07x6); +assign Qp07x6 = (Wtj6z6 & Dte7z6[15]); +assign Wtj6z6 = (~(Msziw6 | Dte7z6[16])); +assign Msziw6 = (!Dte7z6[17]); +assign Uij6z6 = (T3jhw6 & Ldo7v6); +assign Whj6z6 = (~(Jv0ov6 & Euj6z6)); +assign Euj6z6 = (~(Muj6z6 & Uuj6z6)); +assign Uuj6z6 = (Cvj6z6 & Kvj6z6); +assign Kvj6z6 = (~(Efcdt6 | A3ddt6)); +assign Cvj6z6 = (Svj6z6 & U5u6x6); +assign U5u6x6 = (!X0wnv6); +assign X0wnv6 = (V5ddt6 & K3jnv6); +assign Svj6z6 = (~(Awj6z6 & Wzcdt6)); +assign Awj6z6 = (Pacdt6 & Yiaov6); +assign Muj6z6 = (Iwj6z6 & K3jnv6); +assign Iwj6z6 = (Qwj6z6 & Ywj6z6); +assign Ywj6z6 = (~(Fjaov6 & Gxj6z6)); +assign Gxj6z6 = (~(Oxj6z6 & Yiaov6)); +assign Oxj6z6 = (Wxj6z6 & Fetov6); +assign Wxj6z6 = (~(Wzcdt6 & Eyj6z6)); +assign Qwj6z6 = (~(Hofxx6 & Eyj6z6)); +assign Eyj6z6 = (~(Myj6z6 & Uyj6z6)); +assign Uyj6z6 = (Czj6z6 & Kzj6z6); +assign Kzj6z6 = (~(Szj6z6 & Isfxx6)); +assign Isfxx6 = (D6tov6 & T7tov6); +assign T7tov6 = (!Bfd7z6[5]); +assign Szj6z6 = (Kbriy6 & J9tov6); +assign J9tov6 = (!Bfd7z6[1]); +assign Czj6z6 = (~(Mi77z6 | Zgadt6)); +assign Myj6z6 = (Fccdt6 & A0k6z6); +assign A0k6z6 = (~(Hofxx6 & I0k6z6)); +assign I0k6z6 = (~(Fjaov6 & Kd1ov6)); +assign Kd1ov6 = (!Wzcdt6); +assign Hofxx6 = (G597z6 & Q0k6z6); +assign Q0k6z6 = (~(Y0k6z6 & G1k6z6)); +assign G1k6z6 = (~(Pmc7z6[1] & O1k6z6)); +assign Y0k6z6 = (~(W1k6z6 & Pmc7z6[2])); +assign Jv0ov6 = (!Af1ov6); +assign Af1ov6 = (~(Eu46z6 & E2k6z6)); +assign Ygj6z6 = (~(Qmnov6 | Oznov6)); +assign Igj6z6 = (M2k6z6 & U2k6z6); +assign U2k6z6 = (~(Znnov6 & Venov6)); +assign M2k6z6 = (Sgcdt6 | C3k6z6); +assign C3k6z6 = (~(K3k6z6 | N9oov6)); +assign HTRANSD[1] = (S3k6z6 & A4k6z6); +assign A4k6z6 = (~(I4k6z6 & Q4k6z6)); +assign Q4k6z6 = (Ibonv6 | E2j6z6); +assign E2j6z6 = (~(Y4k6z6 | G5k6z6)); +assign G5k6z6 = (Znn7z6[1] ? O5k6z6 : Xvgxx6); +assign O5k6z6 = (O3uet6 & Znn7z6[2]); +assign Y4k6z6 = (~(W5k6z6 & Eq0jy6)); +assign W5k6z6 = (Xvgxx6 | Sjyet6); +assign HTRANSD[0] = (E6k6z6 & U2j6z6); +assign U2j6z6 = (Jc4iw6 & M6k6z6); +assign M6k6z6 = (!Iynet6); +assign Jc4iw6 = (~(U6k6z6 & C7k6z6)); +assign C7k6z6 = (~(K7k6z6 & W13et6)); +assign K7k6z6 = (~(S7k6z6 | Ex7et6)); +assign S7k6z6 = (A8k6z6 & I8k6z6); +assign I8k6z6 = (~(Q8k6z6 & Igniy6)); +assign Igniy6 = (~(Y8k6z6 & Xkr8v6)); +assign Y8k6z6 = (Hir8v6 & Ycniy6); +assign Ycniy6 = (Dqr8v6 & Nnr8v6); +assign Q8k6z6 = (~(J8nov6 & G9k6z6)); +assign J8nov6 = (Ojphw6 | Aga7z6); +assign U6k6z6 = (~(O9k6z6 & W9k6z6)); +assign W9k6z6 = (Eak6z6 & Mak6z6); +assign Mak6z6 = (Rihhw6 | Pxmov6); +assign Pxmov6 = (!Hir8v6); +assign Rihhw6 = (Kihhw6 | Xkr8v6); +assign Kihhw6 = (~(Kpaov6 & Xlaov6)); +assign Xlaov6 = (!Dqr8v6); +assign Kpaov6 = (!Nnr8v6); +assign Eak6z6 = (~(Aga7z6 | Ex7et6)); +assign Aga7z6 = (!Lxydt6); +assign O9k6z6 = (Dihhw6 & W13et6); +assign E6k6z6 = (S3k6z6 & Hm1ov6); +assign S3k6z6 = (Uak6z6 & Cbk6z6); +assign Cbk6z6 = (~(Nhonv6 & Hm1ov6)); +assign Uak6z6 = (~(Qmonv6 & Jn1ov6)); +assign Qmonv6 = (Gmnet6 & Nhonv6); +assign Nhonv6 = (!B2jnv6); +assign HTMDHWDATA[9] = (~(Kbk6z6 & Sbk6z6)); +assign Sbk6z6 = (Ack6z6 & Ick6z6); +assign Ick6z6 = (~(Qck6z6 & Jexmz6[1])); +assign Ack6z6 = (~(Yck6z6 & Jexmz6[25])); +assign Kbk6z6 = (Gdk6z6 & Odk6z6); +assign Odk6z6 = (~(Wdk6z6 & Jexmz6[17])); +assign Gdk6z6 = (~(Eek6z6 & Jexmz6[9])); +assign HTMDHWDATA[8] = (~(Mek6z6 & Uek6z6)); +assign Uek6z6 = (Cfk6z6 & Kfk6z6); +assign Kfk6z6 = (~(Qck6z6 & Jexmz6[0])); +assign Cfk6z6 = (~(Yck6z6 & Jexmz6[24])); +assign Mek6z6 = (Sfk6z6 & Agk6z6); +assign Agk6z6 = (~(Wdk6z6 & Jexmz6[16])); +assign Sfk6z6 = (~(Eek6z6 & Jexmz6[8])); +assign HTMDHWDATA[7] = (~(Igk6z6 & Qgk6z6)); +assign Qgk6z6 = (Ygk6z6 & Ghk6z6); +assign Ghk6z6 = (~(Qck6z6 & Jexmz6[31])); +assign Ygk6z6 = (~(Yck6z6 & Jexmz6[23])); +assign Igk6z6 = (Ohk6z6 & Whk6z6); +assign Whk6z6 = (~(Wdk6z6 & Jexmz6[15])); +assign Ohk6z6 = (~(Eek6z6 & Jexmz6[7])); +assign HTMDHWDATA[6] = (~(Eik6z6 & Mik6z6)); +assign Mik6z6 = (Uik6z6 & Cjk6z6); +assign Cjk6z6 = (~(Qck6z6 & Jexmz6[30])); +assign Uik6z6 = (~(Yck6z6 & Jexmz6[22])); +assign Eik6z6 = (Kjk6z6 & Sjk6z6); +assign Sjk6z6 = (~(Wdk6z6 & Jexmz6[14])); +assign Kjk6z6 = (~(Eek6z6 & Jexmz6[6])); +assign HTMDHWDATA[5] = (~(Akk6z6 & Ikk6z6)); +assign Ikk6z6 = (Qkk6z6 & Ykk6z6); +assign Ykk6z6 = (~(Qck6z6 & Jexmz6[29])); +assign Qkk6z6 = (~(Yck6z6 & Jexmz6[21])); +assign Akk6z6 = (Glk6z6 & Olk6z6); +assign Olk6z6 = (~(Wdk6z6 & Jexmz6[13])); +assign Glk6z6 = (~(Eek6z6 & Jexmz6[5])); +assign HTMDHWDATA[4] = (~(Wlk6z6 & Emk6z6)); +assign Emk6z6 = (Mmk6z6 & Umk6z6); +assign Umk6z6 = (~(Qck6z6 & Jexmz6[28])); +assign Mmk6z6 = (~(Yck6z6 & Jexmz6[20])); +assign Wlk6z6 = (Cnk6z6 & Knk6z6); +assign Knk6z6 = (~(Wdk6z6 & Jexmz6[12])); +assign Cnk6z6 = (~(Eek6z6 & Jexmz6[4])); +assign HTMDHWDATA[3] = (~(Snk6z6 & Aok6z6)); +assign Aok6z6 = (Iok6z6 & Qok6z6); +assign Qok6z6 = (~(Qck6z6 & Jexmz6[27])); +assign Iok6z6 = (~(Yck6z6 & Jexmz6[19])); +assign Snk6z6 = (Yok6z6 & Gpk6z6); +assign Gpk6z6 = (~(Wdk6z6 & Jexmz6[11])); +assign Yok6z6 = (~(Eek6z6 & Jexmz6[3])); +assign HTMDHWDATA[31] = (~(Opk6z6 & Wpk6z6)); +assign Wpk6z6 = (Eqk6z6 & Mqk6z6); +assign Mqk6z6 = (~(Qck6z6 & Jexmz6[23])); +assign Eqk6z6 = (~(Yck6z6 & Jexmz6[15])); +assign Opk6z6 = (Uqk6z6 & Crk6z6); +assign Crk6z6 = (~(Wdk6z6 & Jexmz6[7])); +assign Uqk6z6 = (~(Eek6z6 & Jexmz6[31])); +assign HTMDHWDATA[30] = (~(Krk6z6 & Srk6z6)); +assign Srk6z6 = (Ask6z6 & Isk6z6); +assign Isk6z6 = (~(Qck6z6 & Jexmz6[22])); +assign Ask6z6 = (~(Yck6z6 & Jexmz6[14])); +assign Krk6z6 = (Qsk6z6 & Ysk6z6); +assign Ysk6z6 = (~(Wdk6z6 & Jexmz6[6])); +assign Qsk6z6 = (~(Eek6z6 & Jexmz6[30])); +assign HTMDHWDATA[2] = (~(Gtk6z6 & Otk6z6)); +assign Otk6z6 = (Wtk6z6 & Euk6z6); +assign Euk6z6 = (~(Qck6z6 & Jexmz6[26])); +assign Wtk6z6 = (~(Yck6z6 & Jexmz6[18])); +assign Gtk6z6 = (Muk6z6 & Uuk6z6); +assign Uuk6z6 = (~(Wdk6z6 & Jexmz6[10])); +assign Muk6z6 = (~(Eek6z6 & Jexmz6[2])); +assign HTMDHWDATA[29] = (~(Cvk6z6 & Kvk6z6)); +assign Kvk6z6 = (Svk6z6 & Awk6z6); +assign Awk6z6 = (~(Qck6z6 & Jexmz6[21])); +assign Svk6z6 = (~(Yck6z6 & Jexmz6[13])); +assign Cvk6z6 = (Iwk6z6 & Qwk6z6); +assign Qwk6z6 = (~(Wdk6z6 & Jexmz6[5])); +assign Iwk6z6 = (~(Eek6z6 & Jexmz6[29])); +assign HTMDHWDATA[28] = (~(Ywk6z6 & Gxk6z6)); +assign Gxk6z6 = (Oxk6z6 & Wxk6z6); +assign Wxk6z6 = (~(Qck6z6 & Jexmz6[20])); +assign Oxk6z6 = (~(Yck6z6 & Jexmz6[12])); +assign Ywk6z6 = (Eyk6z6 & Myk6z6); +assign Myk6z6 = (~(Wdk6z6 & Jexmz6[4])); +assign Eyk6z6 = (~(Eek6z6 & Jexmz6[28])); +assign HTMDHWDATA[27] = (~(Uyk6z6 & Czk6z6)); +assign Czk6z6 = (Kzk6z6 & Szk6z6); +assign Szk6z6 = (~(Qck6z6 & Jexmz6[19])); +assign Kzk6z6 = (~(Yck6z6 & Jexmz6[11])); +assign Uyk6z6 = (A0l6z6 & I0l6z6); +assign I0l6z6 = (~(Wdk6z6 & Jexmz6[3])); +assign A0l6z6 = (~(Eek6z6 & Jexmz6[27])); +assign HTMDHWDATA[26] = (~(Q0l6z6 & Y0l6z6)); +assign Y0l6z6 = (G1l6z6 & O1l6z6); +assign O1l6z6 = (~(Qck6z6 & Jexmz6[18])); +assign G1l6z6 = (~(Yck6z6 & Jexmz6[10])); +assign Q0l6z6 = (W1l6z6 & E2l6z6); +assign E2l6z6 = (~(Wdk6z6 & Jexmz6[2])); +assign W1l6z6 = (~(Eek6z6 & Jexmz6[26])); +assign HTMDHWDATA[25] = (~(M2l6z6 & U2l6z6)); +assign U2l6z6 = (C3l6z6 & K3l6z6); +assign K3l6z6 = (~(Qck6z6 & Jexmz6[17])); +assign C3l6z6 = (~(Yck6z6 & Jexmz6[9])); +assign M2l6z6 = (S3l6z6 & A4l6z6); +assign A4l6z6 = (~(Wdk6z6 & Jexmz6[1])); +assign S3l6z6 = (~(Eek6z6 & Jexmz6[25])); +assign HTMDHWDATA[24] = (~(I4l6z6 & Q4l6z6)); +assign Q4l6z6 = (Y4l6z6 & G5l6z6); +assign G5l6z6 = (~(Qck6z6 & Jexmz6[16])); +assign Y4l6z6 = (~(Yck6z6 & Jexmz6[8])); +assign I4l6z6 = (O5l6z6 & W5l6z6); +assign W5l6z6 = (~(Wdk6z6 & Jexmz6[0])); +assign O5l6z6 = (~(Eek6z6 & Jexmz6[24])); +assign HTMDHWDATA[23] = (~(E6l6z6 & M6l6z6)); +assign M6l6z6 = (U6l6z6 & C7l6z6); +assign C7l6z6 = (~(Qck6z6 & Jexmz6[15])); +assign U6l6z6 = (~(Yck6z6 & Jexmz6[7])); +assign E6l6z6 = (K7l6z6 & S7l6z6); +assign S7l6z6 = (~(Wdk6z6 & Jexmz6[31])); +assign K7l6z6 = (~(Eek6z6 & Jexmz6[23])); +assign HTMDHWDATA[22] = (~(A8l6z6 & I8l6z6)); +assign I8l6z6 = (Q8l6z6 & Y8l6z6); +assign Y8l6z6 = (~(Qck6z6 & Jexmz6[14])); +assign Q8l6z6 = (~(Yck6z6 & Jexmz6[6])); +assign A8l6z6 = (G9l6z6 & O9l6z6); +assign O9l6z6 = (~(Wdk6z6 & Jexmz6[30])); +assign G9l6z6 = (~(Eek6z6 & Jexmz6[22])); +assign HTMDHWDATA[21] = (~(W9l6z6 & Eal6z6)); +assign Eal6z6 = (Mal6z6 & Ual6z6); +assign Ual6z6 = (~(Qck6z6 & Jexmz6[13])); +assign Mal6z6 = (~(Yck6z6 & Jexmz6[5])); +assign W9l6z6 = (Cbl6z6 & Kbl6z6); +assign Kbl6z6 = (~(Wdk6z6 & Jexmz6[29])); +assign Cbl6z6 = (~(Eek6z6 & Jexmz6[21])); +assign HTMDHWDATA[20] = (~(Sbl6z6 & Acl6z6)); +assign Acl6z6 = (Icl6z6 & Qcl6z6); +assign Qcl6z6 = (~(Qck6z6 & Jexmz6[12])); +assign Icl6z6 = (~(Yck6z6 & Jexmz6[4])); +assign Sbl6z6 = (Ycl6z6 & Gdl6z6); +assign Gdl6z6 = (~(Wdk6z6 & Jexmz6[28])); +assign Ycl6z6 = (~(Eek6z6 & Jexmz6[20])); +assign HTMDHWDATA[1] = (~(Odl6z6 & Wdl6z6)); +assign Wdl6z6 = (Eel6z6 & Mel6z6); +assign Mel6z6 = (~(Qck6z6 & Jexmz6[25])); +assign Eel6z6 = (~(Yck6z6 & Jexmz6[17])); +assign Odl6z6 = (Uel6z6 & Cfl6z6); +assign Cfl6z6 = (~(Wdk6z6 & Jexmz6[9])); +assign Uel6z6 = (~(Eek6z6 & Jexmz6[1])); +assign HTMDHWDATA[19] = (~(Kfl6z6 & Sfl6z6)); +assign Sfl6z6 = (Agl6z6 & Igl6z6); +assign Igl6z6 = (~(Qck6z6 & Jexmz6[11])); +assign Agl6z6 = (~(Yck6z6 & Jexmz6[3])); +assign Kfl6z6 = (Qgl6z6 & Ygl6z6); +assign Ygl6z6 = (~(Wdk6z6 & Jexmz6[27])); +assign Qgl6z6 = (~(Eek6z6 & Jexmz6[19])); +assign HTMDHWDATA[18] = (~(Ghl6z6 & Ohl6z6)); +assign Ohl6z6 = (Whl6z6 & Eil6z6); +assign Eil6z6 = (~(Qck6z6 & Jexmz6[10])); +assign Whl6z6 = (~(Yck6z6 & Jexmz6[2])); +assign Ghl6z6 = (Mil6z6 & Uil6z6); +assign Uil6z6 = (~(Wdk6z6 & Jexmz6[26])); +assign Mil6z6 = (~(Eek6z6 & Jexmz6[18])); +assign HTMDHWDATA[17] = (~(Cjl6z6 & Kjl6z6)); +assign Kjl6z6 = (Sjl6z6 & Akl6z6); +assign Akl6z6 = (~(Qck6z6 & Jexmz6[9])); +assign Sjl6z6 = (~(Yck6z6 & Jexmz6[1])); +assign Cjl6z6 = (Ikl6z6 & Qkl6z6); +assign Qkl6z6 = (~(Wdk6z6 & Jexmz6[25])); +assign Ikl6z6 = (~(Eek6z6 & Jexmz6[17])); +assign HTMDHWDATA[16] = (~(Ykl6z6 & Gll6z6)); +assign Gll6z6 = (Oll6z6 & Wll6z6); +assign Wll6z6 = (~(Qck6z6 & Jexmz6[8])); +assign Oll6z6 = (~(Yck6z6 & Jexmz6[0])); +assign Ykl6z6 = (Eml6z6 & Mml6z6); +assign Mml6z6 = (~(Wdk6z6 & Jexmz6[24])); +assign Eml6z6 = (~(Eek6z6 & Jexmz6[16])); +assign HTMDHWDATA[15] = (~(Uml6z6 & Cnl6z6)); +assign Cnl6z6 = (Knl6z6 & Snl6z6); +assign Snl6z6 = (~(Qck6z6 & Jexmz6[7])); +assign Knl6z6 = (~(Yck6z6 & Jexmz6[31])); +assign Uml6z6 = (Aol6z6 & Iol6z6); +assign Iol6z6 = (~(Wdk6z6 & Jexmz6[23])); +assign Aol6z6 = (~(Eek6z6 & Jexmz6[15])); +assign HTMDHWDATA[14] = (~(Qol6z6 & Yol6z6)); +assign Yol6z6 = (Gpl6z6 & Opl6z6); +assign Opl6z6 = (~(Qck6z6 & Jexmz6[6])); +assign Gpl6z6 = (~(Yck6z6 & Jexmz6[30])); +assign Qol6z6 = (Wpl6z6 & Eql6z6); +assign Eql6z6 = (~(Wdk6z6 & Jexmz6[22])); +assign Wpl6z6 = (~(Eek6z6 & Jexmz6[14])); +assign HTMDHWDATA[13] = (~(Mql6z6 & Uql6z6)); +assign Uql6z6 = (Crl6z6 & Krl6z6); +assign Krl6z6 = (~(Qck6z6 & Jexmz6[5])); +assign Crl6z6 = (~(Yck6z6 & Jexmz6[29])); +assign Mql6z6 = (Srl6z6 & Asl6z6); +assign Asl6z6 = (~(Wdk6z6 & Jexmz6[21])); +assign Srl6z6 = (~(Eek6z6 & Jexmz6[13])); +assign HTMDHWDATA[12] = (~(Isl6z6 & Qsl6z6)); +assign Qsl6z6 = (Ysl6z6 & Gtl6z6); +assign Gtl6z6 = (~(Qck6z6 & Jexmz6[4])); +assign Ysl6z6 = (~(Yck6z6 & Jexmz6[28])); +assign Isl6z6 = (Otl6z6 & Wtl6z6); +assign Wtl6z6 = (~(Wdk6z6 & Jexmz6[20])); +assign Otl6z6 = (~(Eek6z6 & Jexmz6[12])); +assign HTMDHWDATA[11] = (~(Eul6z6 & Mul6z6)); +assign Mul6z6 = (Uul6z6 & Cvl6z6); +assign Cvl6z6 = (~(Qck6z6 & Jexmz6[3])); +assign Uul6z6 = (~(Yck6z6 & Jexmz6[27])); +assign Eul6z6 = (Kvl6z6 & Svl6z6); +assign Svl6z6 = (~(Wdk6z6 & Jexmz6[19])); +assign Kvl6z6 = (~(Eek6z6 & Jexmz6[11])); +assign HTMDHWDATA[10] = (~(Awl6z6 & Iwl6z6)); +assign Iwl6z6 = (Qwl6z6 & Ywl6z6); +assign Ywl6z6 = (~(Qck6z6 & Jexmz6[2])); +assign Qwl6z6 = (~(Yck6z6 & Jexmz6[26])); +assign Awl6z6 = (Gxl6z6 & Oxl6z6); +assign Oxl6z6 = (~(Wdk6z6 & Jexmz6[18])); +assign Gxl6z6 = (~(Eek6z6 & Jexmz6[10])); +assign HTMDHWDATA[0] = (~(Wxl6z6 & Eyl6z6)); +assign Eyl6z6 = (Myl6z6 & Uyl6z6); +assign Uyl6z6 = (~(Qck6z6 & Jexmz6[24])); +assign Qck6z6 = (~(Ue4iw6 | Ld4iw6)); +assign Myl6z6 = (~(Yck6z6 & Jexmz6[16])); +assign Yck6z6 = (~(Ue4iw6 | Fb47v6)); +assign Ue4iw6 = (!V947v6); +assign Wxl6z6 = (Czl6z6 & Kzl6z6); +assign Kzl6z6 = (~(Wdk6z6 & Jexmz6[8])); +assign Wdk6z6 = (~(Ld4iw6 | V947v6)); +assign Ld4iw6 = (!Fb47v6); +assign Czl6z6 = (~(Eek6z6 & Jexmz6[0])); +assign Eek6z6 = (~(V947v6 | Fb47v6)); +assign HSIZES[1] = (~(Szl6z6 & A0m6z6)); +assign A0m6z6 = (~(J0jxx6 & I0m6z6)); +assign I0m6z6 = (~(Q0m6z6 & Y0m6z6)); +assign Q0m6z6 = (G1m6z6 & O1m6z6); +assign O1m6z6 = (~(Gsb7z6[1] & Xvgxx6)); +assign G1m6z6 = (Jtonv6 | Vugxx6); +assign Jtonv6 = (!S7n7z6[1]); +assign Szl6z6 = (W1m6z6 & E2m6z6); +assign E2m6z6 = (~(M2m6z6 & Anehw6)); +assign M2m6z6 = (~(U2m6z6 & C3m6z6)); +assign C3m6z6 = (~(Rj9ov6 & Srhiy6)); +assign W1m6z6 = (~(Hub7z6[1] & K3m6z6)); +assign K3m6z6 = (~(En9ov6 & S3m6z6)); +assign S3m6z6 = (~(Fk9ov6 & Jvdiw6)); +assign HSIZES[0] = (~(A4m6z6 & I4m6z6)); +assign I4m6z6 = (Q4m6z6 & Y4m6z6); +assign Y4m6z6 = (G5m6z6 | O5m6z6); +assign Q4m6z6 = (W5m6z6 & E6m6z6); +assign E6m6z6 = (~(Mma6z6 & M6m6z6)); +assign W5m6z6 = (Uaonv6 | U6m6z6); +assign A4m6z6 = (C7m6z6 & K7m6z6); +assign K7m6z6 = (~(Zmnyx6 & Hub7z6[0])); +assign C7m6z6 = (~(S7m6z6 & Wbhnv6)); +assign HSIZED[1] = (~(A8m6z6 & I8m6z6)); +assign I8m6z6 = (~(Q8m6z6 & Vm1ov6)); +assign Q8m6z6 = (Jvdiw6 & Hub7z6[1]); +assign A8m6z6 = (~(Y8m6z6 & Hm1ov6)); +assign Y8m6z6 = (Srhiy6 & Anehw6); +assign HSIZED[0] = (~(G9m6z6 & O9m6z6)); +assign O9m6z6 = (Jfonv6 | O5m6z6); +assign O5m6z6 = (W9m6z6 & Eam6z6); +assign Eam6z6 = (~(Mam6z6 & D94iw6)); +assign W9m6z6 = (~(Wbhnv6 & Nxdiw6)); +assign Wbhnv6 = (!Ta4iw6); +assign G9m6z6 = (Uam6z6 & Cbm6z6); +assign Cbm6z6 = (~(Vm1ov6 & M6m6z6)); +assign M6m6z6 = (~(Rzdiw6 & Kbm6z6)); +assign Kbm6z6 = (~(Sbm6z6 & Hub7z6[0])); +assign Uam6z6 = (Ibonv6 | U6m6z6); +assign U6m6z6 = (Acm6z6 & Icm6z6); +assign Icm6z6 = (~(S7n7z6[0] & Qo8iy6)); +assign Acm6z6 = (Qcm6z6 & Ycm6z6); +assign Ycm6z6 = (~(Gdm6z6 & Znn7z6[1])); +assign Gdm6z6 = (~(Xvgxx6 | Eiliy6)); +assign Eiliy6 = (Ven7z6[1] & I8liy6); +assign I8liy6 = (!Ven7z6[2]); +assign Qcm6z6 = (~(Gsb7z6[0] & Qakiw6)); +assign HPROTS[3] = (~(Odm6z6 & Wdm6z6)); +assign Wdm6z6 = (~(Rj9ov6 & Pgqnv6)); +assign Pgqnv6 = (~(Eem6z6 & Mem6z6)); +assign Mem6z6 = (~(K7a6z6 & Uem6z6)); +assign Uem6z6 = (~(Cfm6z6 & Kja6z6)); +assign Cfm6z6 = (Kfm6z6 & Sfm6z6); +assign Sfm6z6 = (~(Agm6z6 & Qga6z6)); +assign Agm6z6 = (Cba6z6 & Igm6z6); +assign Eem6z6 = (Qgm6z6 & Eia6z6); +assign Eia6z6 = (~(Ygm6z6 & Ghm6z6)); +assign Ghm6z6 = (I4a6z6 ? Ohm6z6 : E6a6z6); +assign Ygm6z6 = (Q4a6z6 & M6a6z6); +assign Qgm6z6 = (~(Q4a6z6 & Whm6z6)); +assign Whm6z6 = (~(Eim6z6 & Mim6z6)); +assign Mim6z6 = (~(Uim6z6 & Cmm7z6[29])); +assign Uim6z6 = (Rygnv6 & I4a6z6); +assign Eim6z6 = (M6a6z6 | V5k7z6[31]); +assign Odm6z6 = (~(Qtoet6 & J0jxx6)); +assign HPROTS[2] = (~(Cjm6z6 & Kjm6z6)); +assign Kjm6z6 = (~(Rj9ov6 & Yhqnv6)); +assign Yhqnv6 = (~(Sjm6z6 & Akm6z6)); +assign Akm6z6 = (~(Ikm6z6 & Q4a6z6)); +assign Q4a6z6 = (!U6a6z6); +assign U6a6z6 = (~(Qkm6z6 & Uia6z6)); +assign Qkm6z6 = (~(Sjy5z6 & Ykm6z6)); +assign Ykm6z6 = (~(Apget6 & Glm6z6)); +assign Ikm6z6 = (P1het6 ? Wlm6z6 : Olm6z6); +assign Wlm6z6 = (Emm6z6 & Mmm6z6); +assign Mmm6z6 = (~(Umm6z6 & Cnm6z6)); +assign Cnm6z6 = (Knm6z6 & Snm6z6); +assign Knm6z6 = (~(V5k7z6[18] | V5k7z6[19])); +assign Umm6z6 = (~(Jhdiw6 | Aom6z6)); +assign Jhdiw6 = (!Ui77z6); +assign Emm6z6 = (V5k7z6[29] | V5k7z6[30]); +assign Olm6z6 = (Lgonv6 & Iom6z6); +assign Sjm6z6 = (~(K7a6z6 & Qom6z6)); +assign Qom6z6 = (~(Yom6z6 & Gpm6z6)); +assign Gpm6z6 = (~(Kba6z6 & Yga6z6)); +assign Yga6z6 = (!Cba6z6); +assign Cba6z6 = (Opm6z6 & Wpm6z6); +assign Wpm6z6 = (Eqm6z6 & Mqm6z6); +assign Mqm6z6 = (Uqm6z6 & Crm6z6); +assign Crm6z6 = (~(Zlk7z6[18] & Uea6z6)); +assign Uqm6z6 = (~(Hwk7z6[18] & Sba6z6)); +assign Eqm6z6 = (Krm6z6 & Srm6z6); +assign Srm6z6 = (~(Frl7z6[18] & Yca6z6)); +assign Krm6z6 = (~(Xgl7z6[18] & Qca6z6)); +assign Opm6z6 = (Asm6z6 & Ism6z6); +assign Ism6z6 = (Qsm6z6 & Ysm6z6); +assign Ysm6z6 = (~(Vbm7z6[18] & Aga6z6)); +assign Qsm6z6 = (~(Rbk7z6[18] & Sfa6z6)); +assign Asm6z6 = (Gtm6z6 & Otm6z6); +assign Otm6z6 = (~(N1m7z6[18] & Mea6z6)); +assign Gtm6z6 = (~(P6l7z6[18] & Eaa6z6)); +assign Kba6z6 = (Wtm6z6 & Kja6z6); +assign Wtm6z6 = (Kfm6z6 & Aka6z6); +assign Kfm6z6 = (!Ika6z6); +assign Ika6z6 = (~(Eum6z6 & Mum6z6)); +assign Mum6z6 = (Uum6z6 & Cvm6z6); +assign Cvm6z6 = (Kvm6z6 & Svm6z6); +assign Svm6z6 = (~(Rbk7z6[15] & Sfa6z6)); +assign Kvm6z6 = (~(Hwk7z6[15] & Sba6z6)); +assign Uum6z6 = (Awm6z6 & Iwm6z6); +assign Iwm6z6 = (~(Frl7z6[15] & Yca6z6)); +assign Awm6z6 = (~(Xgl7z6[15] & Qca6z6)); +assign Eum6z6 = (Qwm6z6 & Ywm6z6); +assign Ywm6z6 = (Gxm6z6 & Oxm6z6); +assign Oxm6z6 = (~(Vbm7z6[15] & Aga6z6)); +assign Gxm6z6 = (~(P6l7z6[15] & Eaa6z6)); +assign Qwm6z6 = (Wxm6z6 & Eym6z6); +assign Eym6z6 = (~(Zlk7z6[15] & Uea6z6)); +assign Wxm6z6 = (~(N1m7z6[15] & Mea6z6)); +assign Yom6z6 = (Kja6z6 ? Qga6z6 : Aka6z6); +assign Kja6z6 = (Mym6z6 & Uym6z6); +assign Uym6z6 = (Czm6z6 & Kzm6z6); +assign Kzm6z6 = (Szm6z6 & A0n6z6); +assign A0n6z6 = (~(Zlk7z6[19] & Uea6z6)); +assign Szm6z6 = (~(Hwk7z6[19] & Sba6z6)); +assign Czm6z6 = (I0n6z6 & Q0n6z6); +assign Q0n6z6 = (~(Frl7z6[19] & Yca6z6)); +assign I0n6z6 = (~(Xgl7z6[19] & Qca6z6)); +assign Mym6z6 = (Y0n6z6 & G1n6z6); +assign G1n6z6 = (O1n6z6 & W1n6z6); +assign W1n6z6 = (~(Vbm7z6[19] & Aga6z6)); +assign O1n6z6 = (~(Rbk7z6[19] & Sfa6z6)); +assign Y0n6z6 = (E2n6z6 & M2n6z6); +assign M2n6z6 = (~(N1m7z6[19] & Mea6z6)); +assign E2n6z6 = (~(P6l7z6[19] & Eaa6z6)); +assign Qga6z6 = (U2n6z6 & C3n6z6); +assign C3n6z6 = (K3n6z6 & S3n6z6); +assign S3n6z6 = (A4n6z6 & I4n6z6); +assign I4n6z6 = (~(Rbk7z6[14] & Sfa6z6)); +assign A4n6z6 = (~(Hwk7z6[14] & Sba6z6)); +assign K3n6z6 = (Q4n6z6 & Y4n6z6); +assign Y4n6z6 = (~(Frl7z6[14] & Yca6z6)); +assign Q4n6z6 = (~(Xgl7z6[14] & Qca6z6)); +assign U2n6z6 = (G5n6z6 & O5n6z6); +assign O5n6z6 = (W5n6z6 & E6n6z6); +assign E6n6z6 = (~(Vbm7z6[14] & Aga6z6)); +assign W5n6z6 = (~(P6l7z6[14] & Eaa6z6)); +assign G5n6z6 = (M6n6z6 & U6n6z6); +assign U6n6z6 = (~(Zlk7z6[14] & Uea6z6)); +assign M6n6z6 = (~(N1m7z6[14] & Mea6z6)); +assign Aka6z6 = (!Igm6z6); +assign Igm6z6 = (~(C7n6z6 & K7n6z6)); +assign K7n6z6 = (S7n6z6 & A8n6z6); +assign A8n6z6 = (I8n6z6 & Q8n6z6); +assign Q8n6z6 = (~(Hwk7z6[17] & Sba6z6)); +assign I8n6z6 = (~(P6l7z6[17] & Eaa6z6)); +assign S7n6z6 = (Y8n6z6 & G9n6z6); +assign G9n6z6 = (~(Xgl7z6[17] & Qca6z6)); +assign Qca6z6 = (O9n6z6 & W9n6z6); +assign O9n6z6 = (Ean6z6 & Man6z6); +assign Y8n6z6 = (~(Frl7z6[17] & Yca6z6)); +assign Yca6z6 = (~(Man6z6 | Uan6z6)); +assign Uan6z6 = (!W9n6z6); +assign C7n6z6 = (Cbn6z6 & Kbn6z6); +assign Kbn6z6 = (Sbn6z6 & Acn6z6); +assign Acn6z6 = (~(N1m7z6[17] & Mea6z6)); +assign Sbn6z6 = (~(Zlk7z6[17] & Uea6z6)); +assign Uea6z6 = (Icn6z6 & Qcn6z6); +assign Icn6z6 = (~(Ean6z6 | Ycn6z6)); +assign Cbn6z6 = (Gdn6z6 & Odn6z6); +assign Odn6z6 = (~(Rbk7z6[17] & Sfa6z6)); +assign Gdn6z6 = (~(Vbm7z6[17] & Aga6z6)); +assign K7a6z6 = (!Uia6z6); +assign Uia6z6 = (~(Wdn6z6 & Een6z6)); +assign Wdn6z6 = (I4a6z6 ? Lgonv6 : Aom6z6); +assign Cjm6z6 = (~(Rvoet6 & J0jxx6)); +assign HPROTS[1] = (~(Men6z6 & Uen6z6)); +assign Uen6z6 = (~(Sxoet6 & J0jxx6)); +assign Men6z6 = (Cfn6z6 & Kfn6z6); +assign Kfn6z6 = (~(Rj9ov6 & Hjqnv6)); +assign Cfn6z6 = (~(K2bdt6 & Fk9ov6)); +assign HPROTS[0] = (~(O1j6z6 & Sfn6z6)); +assign Sfn6z6 = (~(Tzoet6 & J0jxx6)); +assign O1j6z6 = (Cfonv6 & Zn9ov6); +assign HPROTI[1] = (Crcdt6 ? Fsc7z6[1] : Ghnov6); +assign Ghnov6 = (~(Gbo6x6 & Agn6z6)); +assign Agn6z6 = (Xbmyx6 | Bpnov6); +assign Bpnov6 = (!Hkoov6); +assign Hkoov6 = (~(Ign6z6 & T3jhw6)); +assign Ign6z6 = (Cgc7z6[2] & P1piw6); +assign Xbmyx6 = (~(Iooov6 & Lqfxx6)); +assign Lqfxx6 = (~(Qloov6 & T3jhw6)); +assign T3jhw6 = (~(O4jhw6 | Cgc7z6[3])); +assign Qloov6 = (Cgc7z6[2] & Cgc7z6[1]); +assign HPROTD[1] = (~(Qgn6z6 & Ygn6z6)); +assign Ygn6z6 = (~(Sxoet6 & Jn1ov6)); +assign Qgn6z6 = (Ghn6z6 & Ohn6z6); +assign Ohn6z6 = (~(Hm1ov6 & Hjqnv6)); +assign Ghn6z6 = (~(K2bdt6 & Vm1ov6)); +assign HPROTD[0] = (~(I4k6z6 & Whn6z6)); +assign Whn6z6 = (~(Tzoet6 & Jn1ov6)); +assign I4k6z6 = (Jfonv6 & V4myx6); +assign HMASTLOCKS = (~(T9nyx6 & Luixx6)); +assign T9nyx6 = (Ein6z6 & Min6z6); +assign Min6z6 = (~(Ngnyx6 & Lhmov6)); +assign Ngnyx6 = (S7m6z6 & B2jnv6); +assign B2jnv6 = (~(Uin6z6 & Senet6)); +assign Uin6z6 = (Mfdiw6 & K9h7v6); +assign Mfdiw6 = (Tfdiw6 | Bkdiw6); +assign Bkdiw6 = (Cjn6z6 & Kjn6z6); +assign Kjn6z6 = (Sjn6z6 & Lgonv6); +assign Sjn6z6 = (Vb4iw6 & I4a6z6); +assign Cjn6z6 = (Akn6z6 & Ikn6z6); +assign Ikn6z6 = (~(Qkn6z6 & Ikoiy6)); +assign Qkn6z6 = (Apget6 & Hjqnv6); +assign Tfdiw6 = (Ykn6z6 & Gln6z6); +assign Gln6z6 = (Oln6z6 & Aom6z6); +assign Aom6z6 = (~(Wln6z6 & Emn6z6)); +assign Emn6z6 = (Mmn6z6 & Umn6z6); +assign Umn6z6 = (Cnn6z6 & Knn6z6); +assign Cnn6z6 = (~(V5k7z6[27] | V5k7z6[28])); +assign Mmn6z6 = (Snn6z6 & Aon6z6); +assign Snn6z6 = (~(V5k7z6[22] | V5k7z6[24])); +assign Wln6z6 = (Ion6z6 & Qon6z6); +assign Qon6z6 = (Yon6z6 & V5k7z6[31]); +assign Yon6z6 = (V5k7z6[29] & V5k7z6[30]); +assign Ion6z6 = (Gpn6z6 & Cj77z6); +assign Gpn6z6 = (Kj77z6 & U297z6); +assign Oln6z6 = (~(Opn6z6 & Dzget6)); +assign Opn6z6 = (Ikoiy6 & Apget6); +assign Ikoiy6 = (!Een6z6); +assign Ykn6z6 = (Akn6z6 & P1het6); +assign Akn6z6 = (Sjy5z6 & Wpn6z6); +assign Wpn6z6 = (~(Eqn6z6 & Mqn6z6)); +assign Mqn6z6 = (Uqn6z6 & Crn6z6); +assign Crn6z6 = (~(Eaa6z6 & Krn6z6)); +assign Krn6z6 = (~(Srn6z6 & Asn6z6)); +assign Asn6z6 = (P6l7z6[22] ? Qsn6z6 : Isn6z6); +assign Qsn6z6 = (~(Ysn6z6 & Isn6z6)); +assign Isn6z6 = (P6l7z6[21] | P6l7z6[20]); +assign Srn6z6 = (P6l7z6[21] ? Otn6z6 : Gtn6z6); +assign Otn6z6 = (Wtn6z6 | P6l7z6[20]); +assign Gtn6z6 = (~(P6l7z6[20] & Eun6z6)); +assign Eaa6z6 = (~(Mun6z6 | Uun6z6)); +assign Mun6z6 = (!Cvn6z6); +assign Uqn6z6 = (Kvn6z6 & Een6z6); +assign Een6z6 = (~(Sfa6z6 & Svn6z6)); +assign Svn6z6 = (~(Awn6z6 & Iwn6z6)); +assign Iwn6z6 = (Qwn6z6 & Ywn6z6); +assign Ywn6z6 = (Gxn6z6 & Oxn6z6); +assign Oxn6z6 = (Wxn6z6 & Eyn6z6); +assign Eyn6z6 = (~(Cihet6 | Myn6z6)); +assign Myn6z6 = (Uyn6z6 & Jienv6); +assign Jienv6 = (Czn6z6 & Kzn6z6); +assign Czn6z6 = (Szn6z6 & A0o6z6); +assign Uyn6z6 = (Ak4nv6 ^ Aoy5z6); +assign Aoy5z6 = (!Dfk7z6[5]); +assign Wxn6z6 = (I0o6z6 & Q0o6z6); +assign Q0o6z6 = (~(Y0o6z6 & O3env6)); +assign O3env6 = (G1o6z6 | Cbenv6); +assign G1o6z6 = (Kzn6z6 & A0o6z6); +assign Y0o6z6 = (Dfk7z6[7] ^ Tp5nv6); +assign I0o6z6 = (~(Cbenv6 & O1o6z6)); +assign O1o6z6 = (Dfk7z6[6] ^ Kv5nv6); +assign Cbenv6 = (Cienv6 & Szn6z6); +assign Gxn6z6 = (W1o6z6 & E2o6z6); +assign E2o6z6 = (M2o6z6 & U2o6z6); +assign U2o6z6 = (~(C3o6z6 & Nrenv6)); +assign Nrenv6 = (Qwenv6 | Kzn6z6); +assign C3o6z6 = (Dfk7z6[15] ^ Je4nv6); +assign M2o6z6 = (~(K3o6z6 & Qwenv6)); +assign Qwenv6 = (~(X4env6 & S3o6z6)); +assign S3o6z6 = (~(Szn6z6 & Dmenv6)); +assign X4env6 = (!H3env6); +assign K3o6z6 = (Dfk7z6[14] ^ Jl4nv6); +assign W1o6z6 = (A4o6z6 & I4o6z6); +assign I4o6z6 = (~(Q4o6z6 & H3env6)); +assign H3env6 = (~(Lcenv6 & Y4o6z6)); +assign Y4o6z6 = (~(Kzn6z6 & Szn6z6)); +assign Lcenv6 = (!Vaenv6); +assign Q4o6z6 = (Dfk7z6[13] ^ Q74nv6); +assign A4o6z6 = (~(G5o6z6 & Vaenv6)); +assign Vaenv6 = (~(Zjenv6 & O5o6z6)); +assign O5o6z6 = (~(W5o6z6 & Dmenv6)); +assign Zjenv6 = (!Qienv6); +assign G5o6z6 = (Dfk7z6[12] ^ Ce4nv6); +assign Qwn6z6 = (E6o6z6 & M6o6z6); +assign M6o6z6 = (U6o6z6 & C7o6z6); +assign C7o6z6 = (K7o6z6 & S7o6z6); +assign S7o6z6 = (~(A8o6z6 & Qienv6)); +assign Qienv6 = (~(A3env6 & I8o6z6)); +assign I8o6z6 = (~(Kzn6z6 & W5o6z6)); +assign A3env6 = (!Fnenv6); +assign A8o6z6 = (Dfk7z6[11] ^ Cl4nv6); +assign K7o6z6 = (~(Q8o6z6 & Fnenv6)); +assign Fnenv6 = (~(Oaenv6 & Y8o6z6)); +assign Y8o6z6 = (~(G9o6z6 & Dmenv6)); +assign Oaenv6 = (!Awy5z6); +assign Q8o6z6 = (Dfk7z6[10] ^ H64nv6); +assign U6o6z6 = (O9o6z6 & W9o6z6); +assign W9o6z6 = (~(Eao6z6 & Awy5z6)); +assign Awy5z6 = (~(Mao6z6 & Pzenv6)); +assign Pzenv6 = (!Cienv6); +assign Mao6z6 = (~(G9o6z6 & Kzn6z6)); +assign Kzn6z6 = (Uao6z6 & Dmenv6); +assign Eao6z6 = (Dfk7z6[9] ^ Hd4nv6); +assign O9o6z6 = (~(Cienv6 & Cbo6z6)); +assign Cbo6z6 = (Dfk7z6[8] ^ Hk4nv6); +assign Cienv6 = (A0o6z6 & Dmenv6); +assign E6o6z6 = (Kbo6z6 & Sbo6z6); +assign Sbo6z6 = (~(Aco6z6 & Peenv6)); +assign Aco6z6 = (Ico6z6 ^ Dfk7z6[29]); +assign Kbo6z6 = (Qco6z6 & Yco6z6); +assign Yco6z6 = (~(Gdo6z6 & Nzdnv6)); +assign Nzdnv6 = (!Jpenv6); +assign Jpenv6 = (Tuenv6 & Odo6z6); +assign Gdo6z6 = (~(Dfk7z6[31] ^ W34nv6)); +assign Qco6z6 = (~(Wdo6z6 & B7env6)); +assign B7env6 = (!Tuenv6); +assign Tuenv6 = (D0fnv6 & Eeo6z6); +assign D0fnv6 = (!Peenv6); +assign Peenv6 = (~(Gzdnv6 & Meo6z6)); +assign Meo6z6 = (~(Szn6z6 & Uao6z6)); +assign Wdo6z6 = (~(Dfk7z6[30] ^ Pa4nv6)); +assign Awn6z6 = (Ueo6z6 & Cfo6z6); +assign Cfo6z6 = (Kfo6z6 & Sfo6z6); +assign Sfo6z6 = (Ago6z6 & Igo6z6); +assign Igo6z6 = (Qgo6z6 & Ygo6z6); +assign Ygo6z6 = (~(Gho6z6 & O1z5z6)); +assign O1z5z6 = (!Gzdnv6); +assign Gzdnv6 = (Rbk7z6[3] & U6env6); +assign U6env6 = (!Dtenv6); +assign Gho6z6 = (Dfk7z6[28] ^ U24nv6); +assign Qgo6z6 = (~(Oho6z6 & Dtenv6)); +assign Dtenv6 = (~(Ieenv6 & Who6z6)); +assign Who6z6 = (~(W5o6z6 & Uao6z6)); +assign Oho6z6 = (Dfk7z6[27] ^ U94nv6); +assign Ago6z6 = (Eio6z6 & Mio6z6); +assign Mio6z6 = (~(Uio6z6 & K0fnv6)); +assign K0fnv6 = (!Ieenv6); +assign Ieenv6 = (Uzdnv6 & Cjo6z6); +assign Cjo6z6 = (!G9o6z6); +assign Uzdnv6 = (!K1env6); +assign Uio6z6 = (~(Dfk7z6[26] ^ Ng4nv6)); +assign Eio6z6 = (~(Kjo6z6 & K1env6)); +assign K1env6 = (~(I7env6 & Sjo6z6)); +assign Sjo6z6 = (~(G9o6z6 & Uao6z6)); +assign Kjo6z6 = (~(Dfk7z6[25] ^ B34nv6)); +assign Kfo6z6 = (Ako6z6 & Iko6z6); +assign Iko6z6 = (~(Qko6z6 & Wlenv6)); +assign Qko6z6 = (Dfk7z6[22] ^ Y44nv6); +assign Ako6z6 = (Yko6z6 & Glo6z6); +assign Glo6z6 = (~(Olo6z6 & Y8env6)); +assign Y8env6 = (!I7env6); +assign I7env6 = (Weenv6 & Wlo6z6); +assign Olo6z6 = (Dfk7z6[24] ^ N94nv6); +assign Yko6z6 = (~(Emo6z6 & Mgenv6)); +assign Mgenv6 = (!Weenv6); +assign Weenv6 = (~(Wlenv6 | Mmo6z6)); +assign Wlenv6 = (~(R8env6 & Umo6z6)); +assign Umo6z6 = (~(Szn6z6 & A0o6z6)); +assign R8env6 = (!Grenv6); +assign Emo6z6 = (~(Dfk7z6[23] ^ Gg4nv6)); +assign Ueo6z6 = (Cno6z6 & Kno6z6); +assign Kno6z6 = (Sno6z6 & Aoo6z6); +assign Aoo6z6 = (Ioo6z6 & Qoo6z6); +assign Qoo6z6 = (~(Yoo6z6 & Grenv6)); +assign Grenv6 = (~(Fgenv6 & Gpo6z6)); +assign Gpo6z6 = (~(Mmo6z6 & Szn6z6)); +assign Fgenv6 = (!Gyenv6); +assign Yoo6z6 = (~(Dfk7z6[21] ^ Kb4nv6)); +assign Ioo6z6 = (~(Opo6z6 & Gyenv6)); +assign Gyenv6 = (~(R1env6 & Wpo6z6)); +assign Wpo6z6 = (~(W5o6z6 & A0o6z6)); +assign R1env6 = (!Q4env6); +assign Opo6z6 = (~(Dfk7z6[20] ^ Ri4nv6)); +assign Sno6z6 = (Eqo6z6 & Mqo6z6); +assign Mqo6z6 = (~(Uqo6z6 & Q4env6)); +assign Q4env6 = (~(F9env6 & Cro6z6)); +assign Cro6z6 = (~(Mmo6z6 & W5o6z6)); +assign F9env6 = (!Ecenv6); +assign Uqo6z6 = (Dfk7z6[19] ^ R44nv6); +assign Eqo6z6 = (~(Kro6z6 & Ecenv6)); +assign Ecenv6 = (~(Tgenv6 & Sro6z6)); +assign Sro6z6 = (~(G9o6z6 & A0o6z6)); +assign Tgenv6 = (!Sjenv6); +assign Kro6z6 = (Dfk7z6[18] ^ Rb4nv6); +assign Cno6z6 = (Aso6z6 & O9z5z6); +assign Aso6z6 = (Iso6z6 & Qso6z6); +assign Qso6z6 = (~(Yso6z6 & Sjenv6)); +assign Sjenv6 = (~(J4env6 & Gto6z6)); +assign Gto6z6 = (~(Mmo6z6 & G9o6z6)); +assign G9o6z6 = (Szn6z6 & W5o6z6); +assign Szn6z6 = (!Eeo6z6); +assign Eeo6z6 = (Rbk7z6[2] & O9z5z6); +assign Mmo6z6 = (Uao6z6 & A0o6z6); +assign A0o6z6 = (!Wlo6z6); +assign Wlo6z6 = (Rbk7z6[4] & O9z5z6); +assign Uao6z6 = (!Odo6z6); +assign Odo6z6 = (Rbk7z6[1] & O9z5z6); +assign Yso6z6 = (~(Dfk7z6[17] ^ Ki4nv6)); +assign Iso6z6 = (~(Oto6z6 & Dmenv6)); +assign Dmenv6 = (!J4env6); +assign J4env6 = (Rbk7z6[5] & O9z5z6); +assign O9z5z6 = (Wto6z6 & Rbk7z6[0]); +assign Wto6z6 = (Sjy5z6 & Euo6z6); +assign Euo6z6 = (~(Xafnv6 & W5o6z6)); +assign W5o6z6 = (!Rbk7z6[3]); +assign Xafnv6 = (Muo6z6 & Uuo6z6); +assign Uuo6z6 = (!Rbk7z6[5]); +assign Muo6z6 = (!Rbk7z6[4]); +assign Oto6z6 = (~(Dfk7z6[16] ^ J74nv6)); +assign Sfa6z6 = (~(Cvo6z6 | Ean6z6)); +assign Cvo6z6 = (Ycn6z6 | Qcn6z6); +assign Ycn6z6 = (!Kvo6z6); +assign Kvn6z6 = (~(Sba6z6 & Svo6z6)); +assign Svo6z6 = (~(Awo6z6 & Iwo6z6)); +assign Iwo6z6 = (Hwk7z6[22] ? Ywo6z6 : Qwo6z6); +assign Ywo6z6 = (~(Ysn6z6 & Qwo6z6)); +assign Qwo6z6 = (Hwk7z6[21] | Hwk7z6[20]); +assign Awo6z6 = (Hwk7z6[21] ? Oxo6z6 : Gxo6z6); +assign Oxo6z6 = (Wtn6z6 | Hwk7z6[20]); +assign Gxo6z6 = (~(Hwk7z6[20] & Eun6z6)); +assign Sba6z6 = (~(Uun6z6 | Cvn6z6)); +assign Uun6z6 = (Ean6z6 | Kvo6z6); +assign Eqn6z6 = (Wxo6z6 & Eyo6z6); +assign Eyo6z6 = (Ean6z6 ? Uyo6z6 : Myo6z6); +assign Ean6z6 = (~(Czo6z6 & W9n6z6)); +assign Czo6z6 = (Kzo6z6 & Man6z6); +assign Kzo6z6 = (~(Szo6z6 & A0p6z6)); +assign A0p6z6 = (I0p6z6 & Q0p6z6); +assign Q0p6z6 = (Y0p6z6 & G1p6z6); +assign G1p6z6 = (O1p6z6 & W1p6z6); +assign W1p6z6 = (~(Cmket6 | E2p6z6)); +assign E2p6z6 = (M2p6z6 & Pk8nv6); +assign Pk8nv6 = (U2p6z6 & C3p6z6); +assign U2p6z6 = (K3p6z6 & S3p6z6); +assign M2p6z6 = (Ak4nv6 ^ Op06z6); +assign Op06z6 = (!Jkl7z6[5]); +assign O1p6z6 = (A4p6z6 & I4p6z6); +assign I4p6z6 = (~(Q4p6z6 & U58nv6)); +assign U58nv6 = (Y4p6z6 | Id8nv6); +assign Y4p6z6 = (C3p6z6 & S3p6z6); +assign Q4p6z6 = (Uq06z6 ^ O64nv6); +assign O64nv6 = (!Tp5nv6); +assign Uq06z6 = (!Jkl7z6[7]); +assign A4p6z6 = (~(Id8nv6 & G5p6z6)); +assign G5p6z6 = (Kr06z6 ^ Ad4nv6); +assign Ad4nv6 = (!Kv5nv6); +assign Kr06z6 = (!Jkl7z6[6]); +assign Id8nv6 = (Ik8nv6 & K3p6z6); +assign Y0p6z6 = (O5p6z6 & W5p6z6); +assign W5p6z6 = (E6p6z6 & M6p6z6); +assign M6p6z6 = (~(U6p6z6 & Tt8nv6)); +assign Tt8nv6 = (Wy8nv6 | C3p6z6); +assign U6p6z6 = (Ot06z6 ^ C7p6z6); +assign C7p6z6 = (!Je4nv6); +assign Ot06z6 = (!Jkl7z6[15]); +assign E6p6z6 = (~(K7p6z6 & Wy8nv6)); +assign Wy8nv6 = (~(D78nv6 & S7p6z6)); +assign S7p6z6 = (~(K3p6z6 & Jo8nv6)); +assign D78nv6 = (!N58nv6); +assign K7p6z6 = (Mu06z6 ^ A8p6z6); +assign A8p6z6 = (!Jl4nv6); +assign Mu06z6 = (!Jkl7z6[14]); +assign O5p6z6 = (I8p6z6 & Q8p6z6); +assign Q8p6z6 = (~(Y8p6z6 & N58nv6)); +assign N58nv6 = (~(Re8nv6 & G9p6z6)); +assign G9p6z6 = (~(C3p6z6 & K3p6z6)); +assign Re8nv6 = (!Bd8nv6); +assign Y8p6z6 = (Aw06z6 ^ O9p6z6); +assign O9p6z6 = (!Q74nv6); +assign Aw06z6 = (!Jkl7z6[13]); +assign I8p6z6 = (~(W9p6z6 & Bd8nv6)); +assign Bd8nv6 = (~(Fm8nv6 & Eap6z6)); +assign Eap6z6 = (~(Map6z6 & Jo8nv6)); +assign Fm8nv6 = (!Wk8nv6); +assign W9p6z6 = (Yw06z6 ^ Uap6z6); +assign Uap6z6 = (!Ce4nv6); +assign Yw06z6 = (!Jkl7z6[12]); +assign I0p6z6 = (Cbp6z6 & Kbp6z6); +assign Kbp6z6 = (Sbp6z6 & Acp6z6); +assign Acp6z6 = (Icp6z6 & Qcp6z6); +assign Qcp6z6 = (~(Ycp6z6 & Wk8nv6)); +assign Wk8nv6 = (~(G58nv6 & Gdp6z6)); +assign Gdp6z6 = (~(C3p6z6 & Map6z6)); +assign G58nv6 = (!Lp8nv6); +assign Ycp6z6 = (Sz06z6 ^ Odp6z6); +assign Odp6z6 = (!Cl4nv6); +assign Sz06z6 = (!Jkl7z6[11]); +assign Icp6z6 = (~(Wdp6z6 & Lp8nv6)); +assign Lp8nv6 = (~(Uc8nv6 & Eep6z6)); +assign Eep6z6 = (~(Mep6z6 & Jo8nv6)); +assign Uc8nv6 = (!W116z6); +assign Wdp6z6 = (Q016z6 ^ Uep6z6); +assign Uep6z6 = (!H64nv6); +assign Q016z6 = (!Jkl7z6[10]); +assign Sbp6z6 = (Cfp6z6 & Kfp6z6); +assign Kfp6z6 = (~(Sfp6z6 & W116z6)); +assign W116z6 = (~(Agp6z6 & V19nv6)); +assign V19nv6 = (!Ik8nv6); +assign Agp6z6 = (~(Mep6z6 & C3p6z6)); +assign C3p6z6 = (Igp6z6 & Jo8nv6); +assign Sfp6z6 = (M216z6 ^ Qgp6z6); +assign Qgp6z6 = (!Hd4nv6); +assign M216z6 = (!Jkl7z6[9]); +assign Cfp6z6 = (~(Ik8nv6 & Ygp6z6)); +assign Ygp6z6 = (C316z6 ^ Ghp6z6); +assign C316z6 = (!Jkl7z6[8]); +assign Ik8nv6 = (S3p6z6 & Jo8nv6); +assign Cbp6z6 = (Ohp6z6 & Whp6z6); +assign Whp6z6 = (~(Eip6z6 & Vg8nv6)); +assign Eip6z6 = (Ph4nv6 ^ I416z6); +assign I416z6 = (!Jkl7z6[29]); +assign Ph4nv6 = (!Ico6z6); +assign Ohp6z6 = (Mip6z6 & Uip6z6); +assign Uip6z6 = (~(Cjp6z6 & T18nv6)); +assign T18nv6 = (!Pr8nv6); +assign Pr8nv6 = (Zw8nv6 & Kjp6z6); +assign Cjp6z6 = (O516z6 ^ W34nv6); +assign O516z6 = (!Jkl7z6[31]); +assign Mip6z6 = (~(Sjp6z6 & H98nv6)); +assign H98nv6 = (!Zw8nv6); +assign Zw8nv6 = (J29nv6 & Akp6z6); +assign J29nv6 = (!Vg8nv6); +assign Vg8nv6 = (~(M18nv6 & Ikp6z6)); +assign Ikp6z6 = (~(K3p6z6 & Igp6z6)); +assign Sjp6z6 = (E616z6 ^ Pa4nv6); +assign E616z6 = (!Jkl7z6[30]); +assign Szo6z6 = (Qkp6z6 & Ykp6z6); +assign Ykp6z6 = (Glp6z6 & Olp6z6); +assign Olp6z6 = (Wlp6z6 & Emp6z6); +assign Emp6z6 = (Mmp6z6 & Ump6z6); +assign Ump6z6 = (~(Cnp6z6 & G916z6)); +assign G916z6 = (!M18nv6); +assign M18nv6 = (Xgl7z6[3] & A98nv6); +assign A98nv6 = (!Jv8nv6); +assign Cnp6z6 = (O916z6 ^ Knp6z6); +assign Knp6z6 = (!U24nv6); +assign O916z6 = (!Jkl7z6[28]); +assign Mmp6z6 = (~(Snp6z6 & Jv8nv6)); +assign Jv8nv6 = (~(Og8nv6 & Aop6z6)); +assign Aop6z6 = (~(Map6z6 & Igp6z6)); +assign Snp6z6 = (Ea16z6 ^ Iop6z6); +assign Iop6z6 = (!U94nv6); +assign Ea16z6 = (!Jkl7z6[27]); +assign Wlp6z6 = (Qop6z6 & Yop6z6); +assign Yop6z6 = (~(Gpp6z6 & Q29nv6)); +assign Q29nv6 = (!Og8nv6); +assign Og8nv6 = (A28nv6 & Opp6z6); +assign Opp6z6 = (!Mep6z6); +assign A28nv6 = (!Q38nv6); +assign Gpp6z6 = (Kb16z6 ^ Ng4nv6); +assign Kb16z6 = (!Jkl7z6[26]); +assign Qop6z6 = (~(Wpp6z6 & Q38nv6)); +assign Q38nv6 = (~(O98nv6 & Eqp6z6)); +assign Eqp6z6 = (~(Mep6z6 & Igp6z6)); +assign Wpp6z6 = (Ac16z6 ^ B34nv6); +assign Ac16z6 = (!Jkl7z6[25]); +assign Glp6z6 = (Mqp6z6 & Uqp6z6); +assign Uqp6z6 = (~(Crp6z6 & Co8nv6)); +assign Crp6z6 = (Gd16z6 ^ Krp6z6); +assign Krp6z6 = (!Y44nv6); +assign Gd16z6 = (!Jkl7z6[22]); +assign Mqp6z6 = (Srp6z6 & Asp6z6); +assign Asp6z6 = (~(Isp6z6 & Eb8nv6)); +assign Eb8nv6 = (!O98nv6); +assign O98nv6 = (Ch8nv6 & Qsp6z6); +assign Isp6z6 = (Me16z6 ^ Ysp6z6); +assign Me16z6 = (!Jkl7z6[24]); +assign Srp6z6 = (~(Gtp6z6 & Si8nv6)); +assign Si8nv6 = (!Ch8nv6); +assign Ch8nv6 = (~(Co8nv6 | Otp6z6)); +assign Co8nv6 = (~(Xa8nv6 & Wtp6z6)); +assign Wtp6z6 = (~(K3p6z6 & S3p6z6)); +assign Xa8nv6 = (!Mt8nv6); +assign Gtp6z6 = (Cf16z6 ^ Gg4nv6); +assign Cf16z6 = (!Jkl7z6[23]); +assign Qkp6z6 = (Eup6z6 & Mup6z6); +assign Mup6z6 = (Uup6z6 & Cvp6z6); +assign Cvp6z6 = (Kvp6z6 & Svp6z6); +assign Svp6z6 = (~(Awp6z6 & Mt8nv6)); +assign Mt8nv6 = (~(Li8nv6 & Iwp6z6)); +assign Iwp6z6 = (~(Otp6z6 & K3p6z6)); +assign Li8nv6 = (!M09nv6); +assign Awp6z6 = (Oh16z6 ^ Kb4nv6); +assign Oh16z6 = (!Jkl7z6[21]); +assign Kvp6z6 = (~(Qwp6z6 & M09nv6)); +assign M09nv6 = (~(X38nv6 & Ywp6z6)); +assign Ywp6z6 = (~(Map6z6 & S3p6z6)); +assign X38nv6 = (!W68nv6); +assign Qwp6z6 = (Ei16z6 ^ Ri4nv6); +assign Ei16z6 = (!Jkl7z6[20]); +assign Uup6z6 = (Gxp6z6 & Oxp6z6); +assign Oxp6z6 = (~(Wxp6z6 & W68nv6)); +assign W68nv6 = (~(Lb8nv6 & Eyp6z6)); +assign Eyp6z6 = (~(Otp6z6 & Map6z6)); +assign Lb8nv6 = (!Ke8nv6); +assign Wxp6z6 = (Sj16z6 ^ Myp6z6); +assign Myp6z6 = (!R44nv6); +assign Sj16z6 = (!Jkl7z6[19]); +assign Gxp6z6 = (~(Uyp6z6 & Ke8nv6)); +assign Ke8nv6 = (~(Zi8nv6 & Czp6z6)); +assign Czp6z6 = (~(Mep6z6 & S3p6z6)); +assign Zi8nv6 = (!Yl8nv6); +assign Uyp6z6 = (Qk16z6 ^ Kzp6z6); +assign Kzp6z6 = (!Rb4nv6); +assign Qk16z6 = (!Jkl7z6[18]); +assign Eup6z6 = (Szp6z6 & Gl16z6); +assign Szp6z6 = (A0q6z6 & I0q6z6); +assign I0q6z6 = (~(Q0q6z6 & Yl8nv6)); +assign Yl8nv6 = (~(P68nv6 & Y0q6z6)); +assign Y0q6z6 = (~(Otp6z6 & Mep6z6)); +assign Mep6z6 = (K3p6z6 & Map6z6); +assign K3p6z6 = (!Akp6z6); +assign Akp6z6 = (Xgl7z6[2] & Gl16z6); +assign Otp6z6 = (Igp6z6 & S3p6z6); +assign S3p6z6 = (!Qsp6z6); +assign Qsp6z6 = (Xgl7z6[4] & Gl16z6); +assign Igp6z6 = (!Kjp6z6); +assign Kjp6z6 = (Xgl7z6[1] & Gl16z6); +assign Q0q6z6 = (Um16z6 ^ Ki4nv6); +assign Um16z6 = (!Jkl7z6[17]); +assign A0q6z6 = (~(G1q6z6 & Jo8nv6)); +assign Jo8nv6 = (!P68nv6); +assign P68nv6 = (Xgl7z6[5] & Gl16z6); +assign Gl16z6 = (O1q6z6 & Xgl7z6[0]); +assign O1q6z6 = (Sjy5z6 & W1q6z6); +assign W1q6z6 = (~(Dd9nv6 & Map6z6)); +assign Map6z6 = (!Xgl7z6[3]); +assign Dd9nv6 = (E2q6z6 & M2q6z6); +assign M2q6z6 = (!Xgl7z6[5]); +assign E2q6z6 = (!Xgl7z6[4]); +assign G1q6z6 = (Kn16z6 ^ J74nv6); +assign Kn16z6 = (!Jkl7z6[16]); +assign Uyo6z6 = (~(W9n6z6 & U2q6z6)); +assign U2q6z6 = (Man6z6 ? K3q6z6 : C3q6z6); +assign Man6z6 = (~(S3q6z6 & A4q6z6)); +assign A4q6z6 = (I4q6z6 & Q4q6z6); +assign Q4q6z6 = (Y4q6z6 & G5q6z6); +assign G5q6z6 = (O5q6z6 & W5q6z6); +assign W5q6z6 = (~(Celet6 | E6q6z6)); +assign E6q6z6 = (M6q6z6 & Lr6nv6); +assign Lr6nv6 = (!Df7nv6); +assign M6q6z6 = (Pa4nv6 ^ Ag87z6); +assign O5q6z6 = (U6q6z6 & C7q6z6); +assign C7q6z6 = (~(K7q6z6 & Q426z6)); +assign Q426z6 = (!Qj6nv6); +assign K7q6z6 = (U24nv6 ^ V2diw6); +assign V2diw6 = (!Kf87z6); +assign U6q6z6 = (~(S7q6z6 & Bl7nv6)); +assign Bl7nv6 = (!Sy6nv6); +assign S7q6z6 = (Ng4nv6 ^ Ue87z6); +assign Y4q6z6 = (A8q6z6 & I8q6z6); +assign I8q6z6 = (Q8q6z6 & Y8q6z6); +assign Y8q6z6 = (~(G9q6z6 & Ul6nv6)); +assign G9q6z6 = (B34nv6 ^ Me87z6); +assign Q8q6z6 = (~(O9q6z6 & It6nv6)); +assign It6nv6 = (!Sr6nv6); +assign O9q6z6 = (I826z6 ^ Ysp6z6); +assign I826z6 = (!Rul7z6[24]); +assign A8q6z6 = (W9q6z6 & Eaq6z6); +assign Eaq6z6 = (~(Maq6z6 & Qb7nv6)); +assign Maq6z6 = (Kb4nv6 ^ Od87z6); +assign W9q6z6 = (~(Uaq6z6 & Ap6nv6)); +assign Uaq6z6 = (R44nv6 ^ Nkciw6); +assign Nkciw6 = (!Qc87z6); +assign I4q6z6 = (Cbq6z6 & Kbq6z6); +assign Kbq6z6 = (Sbq6z6 & Acq6z6); +assign Acq6z6 = (Icq6z6 & Qcq6z6); +assign Qcq6z6 = (~(Ycq6z6 & Ow6nv6)); +assign Ycq6z6 = (Rb4nv6 ^ Xiciw6); +assign Xiciw6 = (!Yc87z6); +assign Icq6z6 = (~(Gdq6z6 & C47nv6)); +assign Gdq6z6 = (Ki4nv6 ^ Gd87z6); +assign Sbq6z6 = (Odq6z6 & Wdq6z6); +assign Wdq6z6 = (~(Eeq6z6 & Ah7nv6)); +assign Eeq6z6 = (Jl4nv6 ^ Vaciw6); +assign Vaciw6 = (!Sb87z6); +assign Odq6z6 = (~(Meq6z6 & Fv6nv6)); +assign Meq6z6 = (Ce4nv6 ^ I7ciw6); +assign I7ciw6 = (!Ea87z6); +assign Cbq6z6 = (Ueq6z6 & Cfq6z6); +assign Cfq6z6 = (~(Kfq6z6 & Mv6nv6)); +assign Kfq6z6 = (Kv5nv6 ^ Apbiw6); +assign Apbiw6 = (!W987z6); +assign Ueq6z6 = (Sfq6z6 & Agq6z6); +assign Agq6z6 = (~(Igq6z6 & P77nv6)); +assign Igq6z6 = (H64nv6 ^ P0ciw6); +assign P0ciw6 = (!Ua87z6); +assign Sfq6z6 = (~(M27nv6 & Qgq6z6)); +assign Qgq6z6 = (Kz16z6 ^ Ghp6z6); +assign Kz16z6 = (!Rul7z6[8]); +assign S3q6z6 = (Ygq6z6 & Ghq6z6); +assign Ghq6z6 = (Ohq6z6 & Whq6z6); +assign Whq6z6 = (Eiq6z6 & Miq6z6); +assign Miq6z6 = (Uiq6z6 & Cjq6z6); +assign Cjq6z6 = (~(Kjq6z6 & Nd7nv6)); +assign Kjq6z6 = (U94nv6 ^ Y0diw6); +assign Y0diw6 = (!Cf87z6); +assign Uiq6z6 = (~(Sjq6z6 & Zy6nv6)); +assign Sjq6z6 = (S4diw6 ^ Ico6z6); +assign S4diw6 = (!Sf87z6); +assign Eiq6z6 = (Akq6z6 & Ikq6z6); +assign Ikq6z6 = (~(Qkq6z6 & Ej7nv6)); +assign Qkq6z6 = (Ri4nv6 ^ Ic87z6); +assign Akq6z6 = (~(Ykq6z6 & G67nv6)); +assign Ykq6z6 = (Y44nv6 ^ Eqciw6); +assign Eqciw6 = (!Wd87z6); +assign Ohq6z6 = (Glq6z6 & Olq6z6); +assign Olq6z6 = (~(Wlq6z6 & Xb7nv6)); +assign Xb7nv6 = (Ah7nv6 | Emq6z6); +assign Ah7nv6 = (~(Hp6nv6 & Mmq6z6)); +assign Mmq6z6 = (~(Umq6z6 & N67nv6)); +assign Hp6nv6 = (!Rn6nv6); +assign Wlq6z6 = (Je4nv6 ^ Zcciw6); +assign Zcciw6 = (!Ac87z6); +assign Glq6z6 = (Cnq6z6 & Knq6z6); +assign Knq6z6 = (~(Snq6z6 & W07nv6)); +assign W07nv6 = (!Gz6nv6); +assign Snq6z6 = (Gg4nv6 ^ Ol77z6); +assign Cnq6z6 = (~(Aoq6z6 & Rn6nv6)); +assign Rn6nv6 = (~(Vw6nv6 & Ioq6z6)); +assign Ioq6z6 = (~(Emq6z6 & Umq6z6)); +assign Vw6nv6 = (!Fv6nv6); +assign Fv6nv6 = (~(J47nv6 & Qoq6z6)); +assign Qoq6z6 = (~(Yoq6z6 & N67nv6)); +assign J47nv6 = (!A37nv6); +assign Aoq6z6 = (Q74nv6 ^ F9ciw6); +assign F9ciw6 = (!Kb87z6); +assign Ygq6z6 = (Gpq6z6 & Opq6z6); +assign Opq6z6 = (Wpq6z6 & Eqq6z6); +assign Eqq6z6 = (Mqq6z6 & Uqq6z6); +assign Uqq6z6 = (~(Crq6z6 & Uy16z6)); +assign Crq6z6 = (Hd4nv6 ^ Zybiw6); +assign Zybiw6 = (!Cb87z6); +assign Mqq6z6 = (~(Krq6z6 & T27nv6)); +assign T27nv6 = (Srq6z6 & Emq6z6); +assign Srq6z6 = (Asq6z6 & Umq6z6); +assign Krq6z6 = (Ak4nv6 ^ Uq16z6); +assign Uq16z6 = (!Rul7z6[5]); +assign Wpq6z6 = (Isq6z6 & Qsq6z6); +assign Qsq6z6 = (~(Ysq6z6 & Yn6nv6)); +assign Yn6nv6 = (Gtq6z6 | Mv6nv6); +assign Mv6nv6 = (M27nv6 & Umq6z6); +assign Gtq6z6 = (Emq6z6 & Asq6z6); +assign Ysq6z6 = (Tp5nv6 ^ Gsbiw6); +assign Gsbiw6 = (!O987z6); +assign Isq6z6 = (~(Otq6z6 & A37nv6)); +assign A37nv6 = (~(Kn6nv6 & Wtq6z6)); +assign Wtq6z6 = (~(Emq6z6 & Yoq6z6)); +assign Kn6nv6 = (!P77nv6); +assign P77nv6 = (~(Yu6nv6 & Euq6z6)); +assign Euq6z6 = (~(Muq6z6 & N67nv6)); +assign Yu6nv6 = (!Uy16z6); +assign Uy16z6 = (~(Uuq6z6 & Ji7nv6)); +assign Ji7nv6 = (!M27nv6); +assign M27nv6 = (N67nv6 & Asq6z6); +assign Uuq6z6 = (~(Emq6z6 & Muq6z6)); +assign Emq6z6 = (N67nv6 & Cvq6z6); +assign Otq6z6 = (Cl4nv6 ^ V3ciw6); +assign V3ciw6 = (!Ma87z6); +assign Gpq6z6 = (Kvq6z6 & Yc26z6); +assign Kvq6z6 = (Svq6z6 & Awq6z6); +assign Awq6z6 = (~(Iwq6z6 & Xj6nv6)); +assign Xj6nv6 = (!T97nv6); +assign T97nv6 = (Df7nv6 & Qwq6z6); +assign Df7nv6 = (Uk7nv6 & Ywq6z6); +assign Uk7nv6 = (!Zy6nv6); +assign Zy6nv6 = (~(Qj6nv6 & Gxq6z6)); +assign Gxq6z6 = (~(Umq6z6 & Cvq6z6)); +assign Qj6nv6 = (Frl7z6[3] & Er6nv6); +assign Er6nv6 = (!Nd7nv6); +assign Nd7nv6 = (~(Sy6nv6 & Oxq6z6)); +assign Oxq6z6 = (~(Yoq6z6 & Cvq6z6)); +assign Sy6nv6 = (Ek6nv6 & Wxq6z6); +assign Wxq6z6 = (!Muq6z6); +assign Ek6nv6 = (!Ul6nv6); +assign Ul6nv6 = (~(Sr6nv6 & Eyq6z6)); +assign Eyq6z6 = (~(Muq6z6 & Cvq6z6)); +assign Sr6nv6 = (Gz6nv6 & Myq6z6); +assign Gz6nv6 = (~(G67nv6 | Uyq6z6)); +assign G67nv6 = (~(Bt6nv6 & Czq6z6)); +assign Czq6z6 = (~(Umq6z6 & Asq6z6)); +assign Bt6nv6 = (!Qb7nv6); +assign Qb7nv6 = (~(P07nv6 & Kzq6z6)); +assign Kzq6z6 = (~(Uyq6z6 & Umq6z6)); +assign P07nv6 = (!Ej7nv6); +assign Ej7nv6 = (~(Bm6nv6 & Szq6z6)); +assign Szq6z6 = (~(Yoq6z6 & Asq6z6)); +assign Bm6nv6 = (!Ap6nv6); +assign Ap6nv6 = (~(Pt6nv6 & A0r6z6)); +assign A0r6z6 = (~(Uyq6z6 & Yoq6z6)); +assign Pt6nv6 = (!Ow6nv6); +assign Ow6nv6 = (~(D17nv6 & I0r6z6)); +assign I0r6z6 = (~(Muq6z6 & Asq6z6)); +assign D17nv6 = (!C47nv6); +assign C47nv6 = (~(To6nv6 & Q0r6z6)); +assign Q0r6z6 = (~(Uyq6z6 & Muq6z6)); +assign Muq6z6 = (Umq6z6 & Yoq6z6); +assign Umq6z6 = (!Ywq6z6); +assign Ywq6z6 = (Frl7z6[2] & Yc26z6); +assign Uyq6z6 = (Cvq6z6 & Asq6z6); +assign Asq6z6 = (!Myq6z6); +assign Myq6z6 = (Frl7z6[4] & Yc26z6); +assign Cvq6z6 = (!Qwq6z6); +assign Qwq6z6 = (Frl7z6[1] & Yc26z6); +assign Iwq6z6 = (W34nv6 ^ Ee87z6); +assign Svq6z6 = (~(Y0r6z6 & N67nv6)); +assign N67nv6 = (!To6nv6); +assign To6nv6 = (Frl7z6[5] & Yc26z6); +assign Yc26z6 = (G1r6z6 & Frl7z6[0]); +assign G1r6z6 = (Sjy5z6 & O1r6z6); +assign O1r6z6 = (~(Ov7nv6 & Yoq6z6)); +assign Yoq6z6 = (!Frl7z6[3]); +assign Ov7nv6 = (W1r6z6 & E2r6z6); +assign E2r6z6 = (!Frl7z6[5]); +assign W1r6z6 = (!Frl7z6[4]); +assign Y0r6z6 = (Me26z6 ^ J74nv6); +assign Me26z6 = (!Rul7z6[16]); +assign K3q6z6 = (M2r6z6 | U2r6z6); +assign U2r6z6 = (C3r6z6 & Xgl7z6[22]); +assign C3r6z6 = (Ysn6z6 & K3r6z6); +assign K3r6z6 = (Xgl7z6[20] | Xgl7z6[21]); +assign M2r6z6 = (Xgl7z6[20] ? A4r6z6 : S3r6z6); +assign A4r6z6 = (~(Glm6z6 | Xgl7z6[21])); +assign S3r6z6 = (!I4r6z6); +assign I4r6z6 = (Xgl7z6[21] ? Wtn6z6 : Xgl7z6[22]); +assign C3q6z6 = (Q4r6z6 | Y4r6z6); +assign Y4r6z6 = (G5r6z6 & Frl7z6[22]); +assign G5r6z6 = (Ysn6z6 & O5r6z6); +assign O5r6z6 = (Frl7z6[20] | Frl7z6[21]); +assign Q4r6z6 = (Frl7z6[20] ? E6r6z6 : W5r6z6); +assign E6r6z6 = (~(Glm6z6 | Frl7z6[21])); +assign W5r6z6 = (!M6r6z6); +assign M6r6z6 = (Frl7z6[21] ? Wtn6z6 : Frl7z6[22]); +assign W9n6z6 = (~(U6r6z6 | Aga6z6)); +assign Myo6z6 = (~(Kvo6z6 & C7r6z6)); +assign C7r6z6 = (Qcn6z6 ? S7r6z6 : K7r6z6); +assign Qcn6z6 = (A8r6z6 & I8r6z6); +assign I8r6z6 = (Q8r6z6 & Y8r6z6); +assign Y8r6z6 = (G9r6z6 & O9r6z6); +assign O9r6z6 = (W9r6z6 & Ear6z6); +assign Ear6z6 = (~(Caiet6 | Mar6z6)); +assign Mar6z6 = (Uar6z6 & Mpcnv6); +assign Mpcnv6 = (!Eddnv6); +assign Uar6z6 = (Pa4nv6 ^ Um87z6); +assign W9r6z6 = (Cbr6z6 & Kbr6z6); +assign Kbr6z6 = (~(Sbr6z6 & Sv26z6)); +assign Sv26z6 = (!Rhcnv6); +assign Sbr6z6 = (U24nv6 ^ A2diw6); +assign A2diw6 = (!Em87z6); +assign Cbr6z6 = (~(Acr6z6 & Vidnv6)); +assign Vidnv6 = (!Twcnv6); +assign Acr6z6 = (Ng4nv6 ^ Ol87z6); +assign G9r6z6 = (Icr6z6 & Qcr6z6); +assign Qcr6z6 = (Ycr6z6 & Gdr6z6); +assign Gdr6z6 = (~(Odr6z6 & Vjcnv6)); +assign Odr6z6 = (B34nv6 ^ Gl87z6); +assign Ycr6z6 = (~(Wdr6z6 & Jrcnv6)); +assign Jrcnv6 = (!Tpcnv6); +assign Wdr6z6 = (Kz26z6 ^ Ysp6z6); +assign Kz26z6 = (!Lpk7z6[24]); +assign Icr6z6 = (Eer6z6 & Mer6z6); +assign Mer6z6 = (~(Uer6z6 & R9dnv6)); +assign Uer6z6 = (Kb4nv6 ^ Ik87z6); +assign Eer6z6 = (~(Cfr6z6 & Bncnv6)); +assign Cfr6z6 = (R44nv6 ^ Sjciw6); +assign Sjciw6 = (!Kj87z6); +assign Q8r6z6 = (Kfr6z6 & Sfr6z6); +assign Sfr6z6 = (Agr6z6 & Igr6z6); +assign Igr6z6 = (Qgr6z6 & Ygr6z6); +assign Ygr6z6 = (~(Ghr6z6 & Pucnv6)); +assign Ghr6z6 = (Rb4nv6 ^ Ciciw6); +assign Ciciw6 = (!Sj87z6); +assign Qgr6z6 = (~(Ohr6z6 & D2dnv6)); +assign Ohr6z6 = (Ki4nv6 ^ Ak87z6); +assign Agr6z6 = (Whr6z6 & Eir6z6); +assign Eir6z6 = (~(Mir6z6 & Bfdnv6)); +assign Mir6z6 = (Jl4nv6 ^ Aaciw6); +assign Aaciw6 = (!Mi87z6); +assign Whr6z6 = (~(Uir6z6 & Gtcnv6)); +assign Uir6z6 = (Ce4nv6 ^ L5ciw6); +assign L5ciw6 = (!Yg87z6); +assign Kfr6z6 = (Cjr6z6 & Kjr6z6); +assign Kjr6z6 = (~(Sjr6z6 & Ntcnv6)); +assign Sjr6z6 = (Kv5nv6 ^ Fobiw6); +assign Fobiw6 = (!Qg87z6); +assign Cjr6z6 = (Akr6z6 & Ikr6z6); +assign Ikr6z6 = (~(Qkr6z6 & Q5dnv6)); +assign Qkr6z6 = (H64nv6 ^ Uzbiw6); +assign Uzbiw6 = (!Oh87z6); +assign Akr6z6 = (~(N0dnv6 & Ykr6z6)); +assign Ykr6z6 = (Mq26z6 ^ Ghp6z6); +assign Mq26z6 = (!Lpk7z6[8]); +assign A8r6z6 = (Glr6z6 & Olr6z6); +assign Olr6z6 = (Wlr6z6 & Emr6z6); +assign Emr6z6 = (Mmr6z6 & Umr6z6); +assign Umr6z6 = (Cnr6z6 & Knr6z6); +assign Knr6z6 = (~(Snr6z6 & Obdnv6)); +assign Snr6z6 = (U94nv6 ^ D0diw6); +assign D0diw6 = (!Wl87z6); +assign Cnr6z6 = (~(Aor6z6 & Axcnv6)); +assign Aor6z6 = (X3diw6 ^ Ico6z6); +assign X3diw6 = (!Mm87z6); +assign Mmr6z6 = (Ior6z6 & Qor6z6); +assign Qor6z6 = (~(Yor6z6 & Rgdnv6)); +assign Yor6z6 = (Ri4nv6 ^ Cj87z6); +assign Ior6z6 = (~(Gpr6z6 & H4dnv6)); +assign Gpr6z6 = (Y44nv6 ^ Jpciw6); +assign Jpciw6 = (!Qk87z6); +assign Wlr6z6 = (Opr6z6 & Wpr6z6); +assign Wpr6z6 = (~(Eqr6z6 & Y9dnv6)); +assign Y9dnv6 = (Bfdnv6 | Mqr6z6); +assign Bfdnv6 = (~(Incnv6 & Uqr6z6)); +assign Uqr6z6 = (~(Crr6z6 & O4dnv6)); +assign Incnv6 = (!Slcnv6); +assign Eqr6z6 = (Je4nv6 ^ Xbciw6); +assign Xbciw6 = (!Ui87z6); +assign Opr6z6 = (Krr6z6 & Srr6z6); +assign Srr6z6 = (~(Asr6z6 & Xycnv6)); +assign Xycnv6 = (!Hxcnv6); +assign Asr6z6 = (Gg4nv6 ^ Mm77z6); +assign Krr6z6 = (~(Isr6z6 & Slcnv6)); +assign Slcnv6 = (~(Wucnv6 & Qsr6z6)); +assign Qsr6z6 = (~(Mqr6z6 & Crr6z6)); +assign Wucnv6 = (!Gtcnv6); +assign Gtcnv6 = (~(K2dnv6 & Ysr6z6)); +assign Ysr6z6 = (~(Gtr6z6 & O4dnv6)); +assign K2dnv6 = (!B1dnv6); +assign Isr6z6 = (Q74nv6 ^ K8ciw6); +assign K8ciw6 = (!Ei87z6); +assign Glr6z6 = (Otr6z6 & Wtr6z6); +assign Wtr6z6 = (Eur6z6 & Mur6z6); +assign Mur6z6 = (Uur6z6 & Cvr6z6); +assign Cvr6z6 = (~(Kvr6z6 & Wp26z6)); +assign Kvr6z6 = (Hd4nv6 ^ Eybiw6); +assign Eybiw6 = (!Wh87z6); +assign Uur6z6 = (~(Svr6z6 & U0dnv6)); +assign U0dnv6 = (Awr6z6 & Mqr6z6); +assign Awr6z6 = (Iwr6z6 & Crr6z6); +assign Svr6z6 = (Ak4nv6 ^ Wh26z6); +assign Wh26z6 = (!Lpk7z6[5]); +assign Eur6z6 = (Qwr6z6 & Ywr6z6); +assign Ywr6z6 = (~(Gxr6z6 & Zlcnv6)); +assign Zlcnv6 = (Oxr6z6 | Ntcnv6); +assign Ntcnv6 = (N0dnv6 & Crr6z6); +assign Oxr6z6 = (Mqr6z6 & Iwr6z6); +assign Gxr6z6 = (Tp5nv6 ^ Jqbiw6); +assign Jqbiw6 = (!Ig87z6); +assign Qwr6z6 = (~(Wxr6z6 & B1dnv6)); +assign B1dnv6 = (~(Llcnv6 & Eyr6z6)); +assign Eyr6z6 = (~(Mqr6z6 & Gtr6z6)); +assign Llcnv6 = (!Q5dnv6); +assign Q5dnv6 = (~(Zscnv6 & Myr6z6)); +assign Myr6z6 = (~(Uyr6z6 & O4dnv6)); +assign Zscnv6 = (!Wp26z6); +assign Wp26z6 = (~(Czr6z6 & Aidnv6)); +assign Aidnv6 = (!N0dnv6); +assign N0dnv6 = (O4dnv6 & Iwr6z6); +assign Czr6z6 = (~(Mqr6z6 & Uyr6z6)); +assign Mqr6z6 = (O4dnv6 & Kzr6z6); +assign Wxr6z6 = (Cl4nv6 ^ Y1ciw6); +assign Y1ciw6 = (!Gh87z6); +assign Otr6z6 = (Szr6z6 & A436z6); +assign Szr6z6 = (A0s6z6 & I0s6z6); +assign I0s6z6 = (~(Q0s6z6 & Yhcnv6)); +assign Yhcnv6 = (!U7dnv6); +assign U7dnv6 = (Eddnv6 & Y0s6z6); +assign Eddnv6 = (Oidnv6 & G1s6z6); +assign Oidnv6 = (!Axcnv6); +assign Axcnv6 = (~(Rhcnv6 & O1s6z6)); +assign O1s6z6 = (~(Crr6z6 & Kzr6z6)); +assign Rhcnv6 = (Zlk7z6[3] & Fpcnv6); +assign Fpcnv6 = (!Obdnv6); +assign Obdnv6 = (~(Twcnv6 & W1s6z6)); +assign W1s6z6 = (~(Gtr6z6 & Kzr6z6)); +assign Twcnv6 = (Ficnv6 & E2s6z6); +assign E2s6z6 = (!Uyr6z6); +assign Ficnv6 = (!Vjcnv6); +assign Vjcnv6 = (~(Tpcnv6 & M2s6z6)); +assign M2s6z6 = (~(Uyr6z6 & Kzr6z6)); +assign Tpcnv6 = (Hxcnv6 & U2s6z6); +assign Hxcnv6 = (~(H4dnv6 | C3s6z6)); +assign H4dnv6 = (~(Crcnv6 & K3s6z6)); +assign K3s6z6 = (~(Crr6z6 & Iwr6z6)); +assign Crcnv6 = (!R9dnv6); +assign R9dnv6 = (~(Qycnv6 & S3s6z6)); +assign S3s6z6 = (~(C3s6z6 & Crr6z6)); +assign Qycnv6 = (!Rgdnv6); +assign Rgdnv6 = (~(Ckcnv6 & A4s6z6)); +assign A4s6z6 = (~(Gtr6z6 & Iwr6z6)); +assign Ckcnv6 = (!Bncnv6); +assign Bncnv6 = (~(Qrcnv6 & I4s6z6)); +assign I4s6z6 = (~(C3s6z6 & Gtr6z6)); +assign Qrcnv6 = (!Pucnv6); +assign Pucnv6 = (~(Ezcnv6 & Q4s6z6)); +assign Q4s6z6 = (~(Uyr6z6 & Iwr6z6)); +assign Ezcnv6 = (!D2dnv6); +assign D2dnv6 = (~(Umcnv6 & Y4s6z6)); +assign Y4s6z6 = (~(C3s6z6 & Uyr6z6)); +assign Uyr6z6 = (Crr6z6 & Gtr6z6); +assign Crr6z6 = (!G1s6z6); +assign G1s6z6 = (Zlk7z6[2] & A436z6); +assign C3s6z6 = (Kzr6z6 & Iwr6z6); +assign Iwr6z6 = (!U2s6z6); +assign U2s6z6 = (Zlk7z6[4] & A436z6); +assign Kzr6z6 = (!Y0s6z6); +assign Y0s6z6 = (Zlk7z6[1] & A436z6); +assign Q0s6z6 = (W34nv6 ^ Yk87z6); +assign A0s6z6 = (~(G5s6z6 & O4dnv6)); +assign O4dnv6 = (!Umcnv6); +assign Umcnv6 = (Zlk7z6[5] & A436z6); +assign A436z6 = (O5s6z6 & Zlk7z6[0]); +assign O5s6z6 = (Sjy5z6 & W5s6z6); +assign W5s6z6 = (~(Itdnv6 & Gtr6z6)); +assign Gtr6z6 = (!Zlk7z6[3]); +assign Itdnv6 = (E6s6z6 & M6s6z6); +assign M6s6z6 = (!Zlk7z6[5]); +assign E6s6z6 = (!Zlk7z6[4]); +assign G5s6z6 = (O536z6 ^ J74nv6); +assign O536z6 = (!Lpk7z6[16]); +assign S7r6z6 = (U6s6z6 | C7s6z6); +assign C7s6z6 = (K7s6z6 & Zlk7z6[22]); +assign K7s6z6 = (Ysn6z6 & S7s6z6); +assign S7s6z6 = (Zlk7z6[20] | Zlk7z6[21]); +assign U6s6z6 = (Zlk7z6[20] ? I8s6z6 : A8s6z6); +assign I8s6z6 = (~(Glm6z6 | Zlk7z6[21])); +assign A8s6z6 = (!Q8s6z6); +assign Q8s6z6 = (Zlk7z6[21] ? Wtn6z6 : Zlk7z6[22]); +assign K7r6z6 = (Y8s6z6 | G9s6z6); +assign G9s6z6 = (O9s6z6 & Rbk7z6[22]); +assign O9s6z6 = (Ysn6z6 & W9s6z6); +assign W9s6z6 = (Rbk7z6[20] | Rbk7z6[21]); +assign Y8s6z6 = (Rbk7z6[20] ? Mas6z6 : Eas6z6); +assign Mas6z6 = (~(Glm6z6 | Rbk7z6[21])); +assign Eas6z6 = (!Uas6z6); +assign Uas6z6 = (Rbk7z6[21] ? Wtn6z6 : Rbk7z6[22]); +assign Kvo6z6 = (~(Cvn6z6 | Cbs6z6)); +assign Cbs6z6 = (Kbs6z6 & Sbs6z6); +assign Sbs6z6 = (Acs6z6 & Ics6z6); +assign Ics6z6 = (Qcs6z6 & Ycs6z6); +assign Ycs6z6 = (Gds6z6 & Ods6z6); +assign Ods6z6 = (~(C2jet6 | Wds6z6)); +assign Wds6z6 = (Ees6z6 & Mjbnv6); +assign Mjbnv6 = (Mes6z6 & Ues6z6); +assign Mes6z6 = (Cfs6z6 & Kfs6z6); +assign Ees6z6 = (Ak4nv6 ^ Kz36z6); +assign Kz36z6 = (!Tzk7z6[5]); +assign Gds6z6 = (Sfs6z6 & Ags6z6); +assign Ags6z6 = (~(Igs6z6 & R4bnv6)); +assign R4bnv6 = (Qgs6z6 | Fcbnv6); +assign Qgs6z6 = (Ues6z6 & Kfs6z6); +assign Igs6z6 = (Tp5nv6 ^ Xqbiw6); +assign Xqbiw6 = (!Cn87z6); +assign Sfs6z6 = (~(Ygs6z6 & Fcbnv6)); +assign Fcbnv6 = (Fjbnv6 & Cfs6z6); +assign Ygs6z6 = (Kv5nv6 ^ Mobiw6); +assign Mobiw6 = (!Kn87z6); +assign Qcs6z6 = (Ghs6z6 & Ohs6z6); +assign Ohs6z6 = (Whs6z6 & Eis6z6); +assign Eis6z6 = (~(Mis6z6 & Qsbnv6)); +assign Qsbnv6 = (Txbnv6 | Ues6z6); +assign Mis6z6 = (Je4nv6 ^ Ecciw6); +assign Ecciw6 = (!Op87z6); +assign Whs6z6 = (~(Uis6z6 & Txbnv6)); +assign Txbnv6 = (~(A6bnv6 & Cjs6z6)); +assign Cjs6z6 = (~(Cfs6z6 & Gnbnv6)); +assign A6bnv6 = (!K4bnv6); +assign Uis6z6 = (Jl4nv6 ^ Haciw6); +assign Haciw6 = (!Gp87z6); +assign Ghs6z6 = (Kjs6z6 & Sjs6z6); +assign Sjs6z6 = (~(Aks6z6 & K4bnv6)); +assign K4bnv6 = (~(Odbnv6 & Iks6z6)); +assign Iks6z6 = (~(Ues6z6 & Cfs6z6)); +assign Odbnv6 = (!Ybbnv6); +assign Aks6z6 = (Q74nv6 ^ R8ciw6); +assign R8ciw6 = (!Yo87z6); +assign Kjs6z6 = (~(Qks6z6 & Ybbnv6)); +assign Ybbnv6 = (~(Clbnv6 & Yks6z6)); +assign Yks6z6 = (~(Gls6z6 & Gnbnv6)); +assign Clbnv6 = (!Tjbnv6); +assign Qks6z6 = (Ce4nv6 ^ Z5ciw6); +assign Z5ciw6 = (!Sn87z6); +assign Acs6z6 = (Ols6z6 & Wls6z6); +assign Wls6z6 = (Ems6z6 & Mms6z6); +assign Mms6z6 = (Ums6z6 & Cns6z6); +assign Cns6z6 = (~(Kns6z6 & Tjbnv6)); +assign Tjbnv6 = (~(D4bnv6 & Sns6z6)); +assign Sns6z6 = (~(Ues6z6 & Gls6z6)); +assign D4bnv6 = (!Iobnv6); +assign Kns6z6 = (Cl4nv6 ^ M2ciw6); +assign M2ciw6 = (!Ao87z6); +assign Ums6z6 = (~(Aos6z6 & Iobnv6)); +assign Iobnv6 = (~(Rbbnv6 & Ios6z6)); +assign Ios6z6 = (~(Qos6z6 & Gnbnv6)); +assign Rbbnv6 = (!K746z6); +assign Aos6z6 = (H64nv6 ^ B0ciw6); +assign B0ciw6 = (!Io87z6); +assign Ems6z6 = (Yos6z6 & Gps6z6); +assign Gps6z6 = (~(Ops6z6 & K746z6)); +assign K746z6 = (~(Wps6z6 & S0cnv6)); +assign S0cnv6 = (!Fjbnv6); +assign Wps6z6 = (~(Qos6z6 & Ues6z6)); +assign Ues6z6 = (Eqs6z6 & Gnbnv6); +assign Ops6z6 = (Hd4nv6 ^ Lybiw6); +assign Lybiw6 = (!Qo87z6); +assign Yos6z6 = (~(Fjbnv6 & Mqs6z6)); +assign Mqs6z6 = (A846z6 ^ Ghp6z6); +assign A846z6 = (!Tzk7z6[8]); +assign Fjbnv6 = (Kfs6z6 & Gnbnv6); +assign Ols6z6 = (Uqs6z6 & Crs6z6); +assign Crs6z6 = (~(Krs6z6 & Sfbnv6)); +assign Krs6z6 = (E4diw6 ^ Ico6z6); +assign E4diw6 = (!Gt87z6); +assign Uqs6z6 = (Srs6z6 & Ass6z6); +assign Ass6z6 = (~(Iss6z6 & Q0bnv6)); +assign Q0bnv6 = (!Mqbnv6); +assign Mqbnv6 = (Wvbnv6 & Qss6z6); +assign Iss6z6 = (W34nv6 ^ Sr87z6); +assign Srs6z6 = (~(Yss6z6 & E8bnv6)); +assign E8bnv6 = (!Wvbnv6); +assign Wvbnv6 = (G1cnv6 & Gts6z6); +assign G1cnv6 = (!Sfbnv6); +assign Sfbnv6 = (~(J0bnv6 & Ots6z6)); +assign Ots6z6 = (~(Cfs6z6 & Eqs6z6)); +assign Yss6z6 = (Pa4nv6 ^ Ot87z6); +assign Kbs6z6 = (Wts6z6 & Eus6z6); +assign Eus6z6 = (Mus6z6 & Uus6z6); +assign Uus6z6 = (Cvs6z6 & Kvs6z6); +assign Kvs6z6 = (Svs6z6 & Aws6z6); +assign Aws6z6 = (~(Iws6z6 & Gd46z6)); +assign Gd46z6 = (!J0bnv6); +assign J0bnv6 = (Hwk7z6[3] & X7bnv6); +assign X7bnv6 = (!Gubnv6); +assign Iws6z6 = (U24nv6 ^ H2diw6); +assign H2diw6 = (!Ys87z6); +assign Svs6z6 = (~(Qws6z6 & Gubnv6)); +assign Gubnv6 = (~(Lfbnv6 & Yws6z6)); +assign Yws6z6 = (~(Gls6z6 & Eqs6z6)); +assign Qws6z6 = (U94nv6 ^ K0diw6); +assign K0diw6 = (!Qs87z6); +assign Cvs6z6 = (Gxs6z6 & Oxs6z6); +assign Oxs6z6 = (~(Wxs6z6 & N1cnv6)); +assign N1cnv6 = (!Lfbnv6); +assign Lfbnv6 = (X0bnv6 & Eys6z6); +assign Eys6z6 = (!Qos6z6); +assign X0bnv6 = (!N2bnv6); +assign Wxs6z6 = (Ng4nv6 ^ Is87z6); +assign Gxs6z6 = (~(Mys6z6 & N2bnv6)); +assign N2bnv6 = (~(L8bnv6 & Uys6z6)); +assign Uys6z6 = (~(Qos6z6 & Eqs6z6)); +assign Mys6z6 = (B34nv6 ^ As87z6); +assign Mus6z6 = (Czs6z6 & Kzs6z6); +assign Kzs6z6 = (~(Szs6z6 & Zmbnv6)); +assign Szs6z6 = (Y44nv6 ^ Qpciw6); +assign Qpciw6 = (!Kr87z6); +assign Czs6z6 = (A0t6z6 & I0t6z6); +assign I0t6z6 = (~(Q0t6z6 & Babnv6)); +assign Babnv6 = (!L8bnv6); +assign L8bnv6 = (Zfbnv6 & Y0t6z6); +assign Q0t6z6 = (Yg46z6 ^ Ysp6z6); +assign Yg46z6 = (!Tzk7z6[24]); +assign A0t6z6 = (~(G1t6z6 & Phbnv6)); +assign Phbnv6 = (!Zfbnv6); +assign Zfbnv6 = (~(Zmbnv6 | O1t6z6)); +assign Zmbnv6 = (~(U9bnv6 & W1t6z6)); +assign W1t6z6 = (~(Cfs6z6 & Kfs6z6)); +assign U9bnv6 = (!Jsbnv6); +assign G1t6z6 = (Gg4nv6 ^ Em77z6); +assign Wts6z6 = (E2t6z6 & M2t6z6); +assign M2t6z6 = (U2t6z6 & C3t6z6); +assign C3t6z6 = (K3t6z6 & S3t6z6); +assign S3t6z6 = (~(A4t6z6 & Jsbnv6)); +assign Jsbnv6 = (~(Ihbnv6 & I4t6z6)); +assign I4t6z6 = (~(O1t6z6 & Cfs6z6)); +assign Ihbnv6 = (!Jzbnv6); +assign A4t6z6 = (Kb4nv6 ^ Cr87z6); +assign K3t6z6 = (~(Q4t6z6 & Jzbnv6)); +assign Jzbnv6 = (~(U2bnv6 & Y4t6z6)); +assign Y4t6z6 = (~(Gls6z6 & Kfs6z6)); +assign U2bnv6 = (!T5bnv6); +assign Q4t6z6 = (Ri4nv6 ^ Wp87z6); +assign U2t6z6 = (G5t6z6 & O5t6z6); +assign O5t6z6 = (~(W5t6z6 & T5bnv6)); +assign T5bnv6 = (~(Iabnv6 & E6t6z6)); +assign E6t6z6 = (~(O1t6z6 & Gls6z6)); +assign Iabnv6 = (!Hdbnv6); +assign W5t6z6 = (R44nv6 ^ Zjciw6); +assign Zjciw6 = (!Eq87z6); +assign G5t6z6 = (~(M6t6z6 & Hdbnv6)); +assign Hdbnv6 = (~(Whbnv6 & U6t6z6)); +assign U6t6z6 = (~(Qos6z6 & Kfs6z6)); +assign Whbnv6 = (!Vkbnv6); +assign M6t6z6 = (Rb4nv6 ^ Jiciw6); +assign Jiciw6 = (!Mq87z6); +assign E2t6z6 = (C7t6z6 & Ol46z6); +assign C7t6z6 = (K7t6z6 & S7t6z6); +assign S7t6z6 = (~(A8t6z6 & Vkbnv6)); +assign Vkbnv6 = (~(M5bnv6 & I8t6z6)); +assign I8t6z6 = (~(O1t6z6 & Qos6z6)); +assign Qos6z6 = (Cfs6z6 & Gls6z6); +assign Cfs6z6 = (!Gts6z6); +assign Gts6z6 = (Hwk7z6[2] & Ol46z6); +assign O1t6z6 = (Eqs6z6 & Kfs6z6); +assign Kfs6z6 = (!Y0t6z6); +assign Y0t6z6 = (Hwk7z6[4] & Ol46z6); +assign Eqs6z6 = (!Qss6z6); +assign Qss6z6 = (Hwk7z6[1] & Ol46z6); +assign A8t6z6 = (Ki4nv6 ^ Uq87z6); +assign K7t6z6 = (~(Q8t6z6 & Gnbnv6)); +assign Gnbnv6 = (!M5bnv6); +assign M5bnv6 = (Hwk7z6[5] & Ol46z6); +assign Ol46z6 = (Y8t6z6 & Hwk7z6[0]); +assign Y8t6z6 = (Sjy5z6 & G9t6z6); +assign G9t6z6 = (~(Accnv6 & Gls6z6)); +assign Gls6z6 = (!Hwk7z6[3]); +assign Accnv6 = (O9t6z6 & W9t6z6); +assign W9t6z6 = (!Hwk7z6[5]); +assign O9t6z6 = (!Hwk7z6[4]); +assign Q8t6z6 = (Cn46z6 ^ J74nv6); +assign Cn46z6 = (!Tzk7z6[16]); +assign Cvn6z6 = (Eat6z6 & Mat6z6); +assign Mat6z6 = (Uat6z6 & Cbt6z6); +assign Cbt6z6 = (Kbt6z6 & Sbt6z6); +assign Sbt6z6 = (Act6z6 & Ict6z6); +assign Ict6z6 = (~(Cujet6 | Qct6z6)); +assign Qct6z6 = (Yct6z6 & Pq9nv6); +assign Pq9nv6 = (!Heanv6); +assign Yct6z6 = (Pa4nv6 ^ I097z6); +assign Act6z6 = (Gdt6z6 & Odt6z6); +assign Odt6z6 = (~(Wdt6z6 & Um36z6)); +assign Um36z6 = (!Ui9nv6); +assign Wdt6z6 = (U24nv6 ^ O2diw6); +assign O2diw6 = (!Sz87z6); +assign Gdt6z6 = (~(Eet6z6 & Yjanv6)); +assign Yjanv6 = (!Wx9nv6); +assign Eet6z6 = (Ng4nv6 ^ Cz87z6); +assign Kbt6z6 = (Met6z6 & Uet6z6); +assign Uet6z6 = (Cft6z6 & Kft6z6); +assign Kft6z6 = (~(Sft6z6 & Yk9nv6)); +assign Sft6z6 = (B34nv6 ^ Uy87z6); +assign Cft6z6 = (~(Agt6z6 & Ms9nv6)); +assign Ms9nv6 = (!Wq9nv6); +assign Agt6z6 = (Bal7z6[24] ^ N94nv6); +assign Met6z6 = (Igt6z6 & Qgt6z6); +assign Qgt6z6 = (~(Ygt6z6 & Uaanv6)); +assign Ygt6z6 = (Kb4nv6 ^ Wx87z6); +assign Igt6z6 = (~(Ght6z6 & Eo9nv6)); +assign Ght6z6 = (R44nv6 ^ Gkciw6); +assign Gkciw6 = (!Yw87z6); +assign Uat6z6 = (Oht6z6 & Wht6z6); +assign Wht6z6 = (Eit6z6 & Mit6z6); +assign Mit6z6 = (Uit6z6 & Cjt6z6); +assign Cjt6z6 = (~(Kjt6z6 & Sv9nv6)); +assign Kjt6z6 = (Rb4nv6 ^ Qiciw6); +assign Qiciw6 = (!Gx87z6); +assign Uit6z6 = (~(Sjt6z6 & G3anv6)); +assign Sjt6z6 = (Ki4nv6 ^ Ox87z6); +assign Eit6z6 = (Akt6z6 & Ikt6z6); +assign Ikt6z6 = (~(Qkt6z6 & Eganv6)); +assign Qkt6z6 = (Jl4nv6 ^ Oaciw6); +assign Oaciw6 = (!Aw87z6); +assign Akt6z6 = (~(Ykt6z6 & Ju9nv6)); +assign Ykt6z6 = (Ce4nv6 ^ N6ciw6); +assign N6ciw6 = (!Mu87z6); +assign Oht6z6 = (Glt6z6 & Olt6z6); +assign Olt6z6 = (~(Wlt6z6 & Qu9nv6)); +assign Wlt6z6 = (Kv5nv6 ^ Tobiw6); +assign Tobiw6 = (!Eu87z6); +assign Glt6z6 = (Emt6z6 & Mmt6z6); +assign Mmt6z6 = (~(Umt6z6 & T6anv6)); +assign Umt6z6 = (H64nv6 ^ I0ciw6); +assign I0ciw6 = (!Cv87z6); +assign Emt6z6 = (~(Q1anv6 & Cnt6z6)); +assign Cnt6z6 = (Bal7z6[8] ^ Hk4nv6); +assign Eat6z6 = (Knt6z6 & Snt6z6); +assign Snt6z6 = (Aot6z6 & Iot6z6); +assign Iot6z6 = (Qot6z6 & Yot6z6); +assign Yot6z6 = (Gpt6z6 & Opt6z6); +assign Opt6z6 = (~(Wpt6z6 & Rcanv6)); +assign Wpt6z6 = (U94nv6 ^ R0diw6); +assign R0diw6 = (!Kz87z6); +assign Gpt6z6 = (~(Eqt6z6 & Dy9nv6)); +assign Eqt6z6 = (L4diw6 ^ Ico6z6); +assign L4diw6 = (!A097z6); +assign Qot6z6 = (Mqt6z6 & Uqt6z6); +assign Uqt6z6 = (~(Crt6z6 & Uhanv6)); +assign Crt6z6 = (Ri4nv6 ^ Qw87z6); +assign Mqt6z6 = (~(Krt6z6 & K5anv6)); +assign Krt6z6 = (Y44nv6 ^ Xpciw6); +assign Xpciw6 = (!Ey87z6); +assign Aot6z6 = (Srt6z6 & Ast6z6); +assign Ast6z6 = (~(Ist6z6 & Bbanv6)); +assign Bbanv6 = (Eganv6 | Qst6z6); +assign Eganv6 = (~(Lo9nv6 & Yst6z6)); +assign Yst6z6 = (~(Gtt6z6 & R5anv6)); +assign Lo9nv6 = (!Vm9nv6); +assign Ist6z6 = (Je4nv6 ^ Lcciw6); +assign Lcciw6 = (!Iw87z6); +assign Srt6z6 = (Ott6z6 & Wtt6z6); +assign Wtt6z6 = (~(Eut6z6 & A0anv6)); +assign A0anv6 = (!Ky9nv6); +assign Eut6z6 = (Gg4nv6 ^ Wl77z6); +assign Ott6z6 = (~(Mut6z6 & Vm9nv6)); +assign Vm9nv6 = (~(Zv9nv6 & Uut6z6)); +assign Uut6z6 = (~(Qst6z6 & Gtt6z6)); +assign Zv9nv6 = (!Ju9nv6); +assign Ju9nv6 = (~(N3anv6 & Cvt6z6)); +assign Cvt6z6 = (~(Kvt6z6 & R5anv6)); +assign N3anv6 = (!E2anv6); +assign Mut6z6 = (Q74nv6 ^ Y8ciw6); +assign Y8ciw6 = (!Sv87z6); +assign Knt6z6 = (Svt6z6 & Awt6z6); +assign Awt6z6 = (Iwt6z6 & Qwt6z6); +assign Qwt6z6 = (Ywt6z6 & Gxt6z6); +assign Gxt6z6 = (~(Oxt6z6 & Gh36z6)); +assign Oxt6z6 = (Hd4nv6 ^ Sybiw6); +assign Sybiw6 = (!Kv87z6); +assign Ywt6z6 = (~(Wxt6z6 & X1anv6)); +assign X1anv6 = (Eyt6z6 & Qst6z6); +assign Eyt6z6 = (Myt6z6 & Gtt6z6); +assign Wxt6z6 = (Ak4nv6 ^ G936z6); +assign G936z6 = (!Bal7z6[5]); +assign Iwt6z6 = (Uyt6z6 & Czt6z6); +assign Czt6z6 = (~(Kzt6z6 & Cn9nv6)); +assign Cn9nv6 = (Szt6z6 | Qu9nv6); +assign Qu9nv6 = (Q1anv6 & Gtt6z6); +assign Szt6z6 = (Qst6z6 & Myt6z6); +assign Kzt6z6 = (Tp5nv6 ^ Lrbiw6); +assign Lrbiw6 = (!Wt87z6); +assign Uyt6z6 = (~(A0u6z6 & E2anv6)); +assign E2anv6 = (~(Om9nv6 & I0u6z6)); +assign I0u6z6 = (~(Qst6z6 & Kvt6z6)); +assign Om9nv6 = (!T6anv6); +assign T6anv6 = (~(Cu9nv6 & Q0u6z6)); +assign Q0u6z6 = (~(Y0u6z6 & R5anv6)); +assign Cu9nv6 = (!Gh36z6); +assign Gh36z6 = (~(G1u6z6 & Djanv6)); +assign Djanv6 = (!Q1anv6); +assign Q1anv6 = (R5anv6 & Myt6z6); +assign G1u6z6 = (~(Qst6z6 & Y0u6z6)); +assign Qst6z6 = (R5anv6 & O1u6z6); +assign A0u6z6 = (Cl4nv6 ^ A3ciw6); +assign A3ciw6 = (!Uu87z6); +assign Svt6z6 = (W1u6z6 & Uu36z6); +assign W1u6z6 = (E2u6z6 & M2u6z6); +assign M2u6z6 = (~(U2u6z6 & Bj9nv6)); +assign Bj9nv6 = (!X8anv6); +assign X8anv6 = (Heanv6 & C3u6z6); +assign Heanv6 = (Rjanv6 & K3u6z6); +assign Rjanv6 = (!Dy9nv6); +assign Dy9nv6 = (~(Ui9nv6 & S3u6z6)); +assign S3u6z6 = (~(Gtt6z6 & O1u6z6)); +assign Ui9nv6 = (P6l7z6[3] & Iq9nv6); +assign Iq9nv6 = (!Rcanv6); +assign Rcanv6 = (~(Wx9nv6 & A4u6z6)); +assign A4u6z6 = (~(Kvt6z6 & O1u6z6)); +assign Wx9nv6 = (Ij9nv6 & I4u6z6); +assign I4u6z6 = (!Y0u6z6); +assign Ij9nv6 = (!Yk9nv6); +assign Yk9nv6 = (~(Wq9nv6 & Q4u6z6)); +assign Q4u6z6 = (~(Y0u6z6 & O1u6z6)); +assign Wq9nv6 = (Ky9nv6 & Y4u6z6); +assign Ky9nv6 = (~(K5anv6 | G5u6z6)); +assign K5anv6 = (~(Fs9nv6 & O5u6z6)); +assign O5u6z6 = (~(Gtt6z6 & Myt6z6)); +assign Fs9nv6 = (!Uaanv6); +assign Uaanv6 = (~(Tz9nv6 & W5u6z6)); +assign W5u6z6 = (~(G5u6z6 & Gtt6z6)); +assign Tz9nv6 = (!Uhanv6); +assign Uhanv6 = (~(Fl9nv6 & E6u6z6)); +assign E6u6z6 = (~(Kvt6z6 & Myt6z6)); +assign Fl9nv6 = (!Eo9nv6); +assign Eo9nv6 = (~(Ts9nv6 & M6u6z6)); +assign M6u6z6 = (~(G5u6z6 & Kvt6z6)); +assign Ts9nv6 = (!Sv9nv6); +assign Sv9nv6 = (~(H0anv6 & U6u6z6)); +assign U6u6z6 = (~(Y0u6z6 & Myt6z6)); +assign H0anv6 = (!G3anv6); +assign G3anv6 = (~(Xn9nv6 & C7u6z6)); +assign C7u6z6 = (~(G5u6z6 & Y0u6z6)); +assign Y0u6z6 = (Gtt6z6 & Kvt6z6); +assign Gtt6z6 = (!K3u6z6); +assign K3u6z6 = (P6l7z6[2] & Uu36z6); +assign G5u6z6 = (O1u6z6 & Myt6z6); +assign Myt6z6 = (!Y4u6z6); +assign Y4u6z6 = (P6l7z6[4] & Uu36z6); +assign O1u6z6 = (!C3u6z6); +assign C3u6z6 = (P6l7z6[1] & Uu36z6); +assign U2u6z6 = (W34nv6 ^ My87z6); +assign E2u6z6 = (~(K7u6z6 & R5anv6)); +assign R5anv6 = (!Xn9nv6); +assign Xn9nv6 = (P6l7z6[5] & Uu36z6); +assign Uu36z6 = (S7u6z6 & P6l7z6[0]); +assign S7u6z6 = (Sjy5z6 & A8u6z6); +assign A8u6z6 = (~(Luanv6 & Kvt6z6)); +assign Kvt6z6 = (!P6l7z6[3]); +assign Luanv6 = (I8u6z6 & Q8u6z6); +assign Q8u6z6 = (!P6l7z6[5]); +assign I8u6z6 = (!P6l7z6[4]); +assign K7u6z6 = (~(Bal7z6[16] ^ J74nv6)); +assign Wxo6z6 = (Y8u6z6 & G9u6z6); +assign G9u6z6 = (~(Mea6z6 & O9u6z6)); +assign O9u6z6 = (~(W9u6z6 & Eau6z6)); +assign Eau6z6 = (N1m7z6[22] ? Uau6z6 : Mau6z6); +assign Uau6z6 = (~(Ysn6z6 & Mau6z6)); +assign Mau6z6 = (N1m7z6[21] | N1m7z6[20]); +assign W9u6z6 = (N1m7z6[21] ? Kbu6z6 : Cbu6z6); +assign Kbu6z6 = (Wtn6z6 | N1m7z6[20]); +assign Cbu6z6 = (~(N1m7z6[20] & Eun6z6)); +assign Mea6z6 = (U6r6z6 & Sbu6z6); +assign U6r6z6 = (Acu6z6 & Icu6z6); +assign Icu6z6 = (Qcu6z6 & Ycu6z6); +assign Ycu6z6 = (Gdu6z6 & Odu6z6); +assign Odu6z6 = (Wdu6z6 & Eeu6z6); +assign Eeu6z6 = (~(C6met6 | Meu6z6)); +assign Meu6z6 = (Ueu6z6 & Xk5nv6); +assign Xk5nv6 = (Cfu6z6 & Kfu6z6); +assign Cfu6z6 = (Sfu6z6 & Agu6z6); +assign Ueu6z6 = (Ak4nv6 ^ Wxz5z6); +assign Wxz5z6 = (!Z4m7z6[5]); +assign Wdu6z6 = (Igu6z6 & Qgu6z6); +assign Qgu6z6 = (~(Ygu6z6 & C65nv6)); +assign C65nv6 = (Ghu6z6 | Qd5nv6); +assign Ghu6z6 = (Kfu6z6 & Agu6z6); +assign Ygu6z6 = (Tp5nv6 ^ Usbiw6); +assign Usbiw6 = (!U287z6); +assign Igu6z6 = (~(Ohu6z6 & Qd5nv6)); +assign Qd5nv6 = (Qk5nv6 & Sfu6z6); +assign Ohu6z6 = (Kv5nv6 ^ Hpbiw6); +assign Hpbiw6 = (!C387z6); +assign Gdu6z6 = (Whu6z6 & Eiu6z6); +assign Eiu6z6 = (Miu6z6 & Uiu6z6); +assign Uiu6z6 = (~(Cju6z6 & Iu5nv6)); +assign Iu5nv6 = (Sz5nv6 | Kfu6z6); +assign Cju6z6 = (Je4nv6 ^ Ndciw6); +assign Ndciw6 = (!G587z6); +assign Miu6z6 = (~(Kju6z6 & Sz5nv6)); +assign Sz5nv6 = (~(L75nv6 & Sju6z6)); +assign Sju6z6 = (~(Sfu6z6 & Ro5nv6)); +assign L75nv6 = (!V55nv6); +assign Kju6z6 = (Jl4nv6 ^ Cbciw6); +assign Cbciw6 = (!Y487z6); +assign Whu6z6 = (Aku6z6 & Iku6z6); +assign Iku6z6 = (~(Qku6z6 & V55nv6)); +assign V55nv6 = (~(Ze5nv6 & Yku6z6)); +assign Yku6z6 = (~(Kfu6z6 & Sfu6z6)); +assign Ze5nv6 = (!Jd5nv6); +assign Qku6z6 = (Q74nv6 ^ M9ciw6); +assign M9ciw6 = (!Q487z6); +assign Aku6z6 = (~(Glu6z6 & Jd5nv6)); +assign Jd5nv6 = (~(Nm5nv6 & Olu6z6)); +assign Olu6z6 = (~(Wlu6z6 & Ro5nv6)); +assign Nm5nv6 = (!El5nv6); +assign Glu6z6 = (Ce4nv6 ^ P7ciw6); +assign P7ciw6 = (!K387z6); +assign Qcu6z6 = (Emu6z6 & Mmu6z6); +assign Mmu6z6 = (Umu6z6 & Cnu6z6); +assign Cnu6z6 = (Knu6z6 & Snu6z6); +assign Snu6z6 = (~(Aou6z6 & El5nv6)); +assign El5nv6 = (~(O55nv6 & Iou6z6)); +assign Iou6z6 = (~(Kfu6z6 & Wlu6z6)); +assign O55nv6 = (!Aq5nv6); +assign Aou6z6 = (Cl4nv6 ^ Q4ciw6); +assign Q4ciw6 = (!S387z6); +assign Knu6z6 = (~(Qou6z6 & Aq5nv6)); +assign Aq5nv6 = (~(Cd5nv6 & You6z6)); +assign You6z6 = (~(Gpu6z6 & Ro5nv6)); +assign Cd5nv6 = (!W506z6); +assign Qou6z6 = (H64nv6 ^ W0ciw6); +assign W0ciw6 = (!A487z6); +assign Umu6z6 = (Opu6z6 & Wpu6z6); +assign Wpu6z6 = (~(Equ6z6 & W506z6)); +assign W506z6 = (~(Mqu6z6 & R26nv6)); +assign R26nv6 = (!Qk5nv6); +assign Mqu6z6 = (~(Gpu6z6 & Kfu6z6)); +assign Kfu6z6 = (Uqu6z6 & Ro5nv6); +assign Equ6z6 = (Hd4nv6 ^ Gzbiw6); +assign Gzbiw6 = (!I487z6); +assign Opu6z6 = (~(Qk5nv6 & Cru6z6)); +assign Cru6z6 = (U606z6 ^ Ghp6z6); +assign U606z6 = (!Z4m7z6[8]); +assign Qk5nv6 = (Agu6z6 & Ro5nv6); +assign Emu6z6 = (Kru6z6 & Sru6z6); +assign Sru6z6 = (~(Asu6z6 & Dh5nv6)); +assign Asu6z6 = (Z4diw6 ^ Ico6z6); +assign Z4diw6 = (!Y887z6); +assign Kru6z6 = (Isu6z6 & Qsu6z6); +assign Qsu6z6 = (~(Ysu6z6 & B25nv6)); +assign B25nv6 = (!Es5nv6); +assign Es5nv6 = (Vx5nv6 & Gtu6z6); +assign Ysu6z6 = (W34nv6 ^ K787z6); +assign Isu6z6 = (~(Otu6z6 & P95nv6)); +assign P95nv6 = (!Vx5nv6); +assign Vx5nv6 = (F36nv6 & Wtu6z6); +assign F36nv6 = (!Dh5nv6); +assign Dh5nv6 = (~(U15nv6 & Euu6z6)); +assign Euu6z6 = (~(Sfu6z6 & Uqu6z6)); +assign Otu6z6 = (Pa4nv6 ^ G987z6); +assign Acu6z6 = (Muu6z6 & Uuu6z6); +assign Uuu6z6 = (Cvu6z6 & Kvu6z6); +assign Kvu6z6 = (Svu6z6 & Awu6z6); +assign Awu6z6 = (Iwu6z6 & Qwu6z6); +assign Qwu6z6 = (~(Ywu6z6 & Ac06z6)); +assign Ac06z6 = (!U15nv6); +assign U15nv6 = (N1m7z6[3] & I95nv6); +assign I95nv6 = (!Fw5nv6); +assign Ywu6z6 = (U24nv6 ^ J3diw6); +assign J3diw6 = (!Q887z6); +assign Iwu6z6 = (~(Gxu6z6 & Fw5nv6)); +assign Fw5nv6 = (~(Wg5nv6 & Oxu6z6)); +assign Oxu6z6 = (~(Wlu6z6 & Uqu6z6)); +assign Gxu6z6 = (U94nv6 ^ F1diw6); +assign F1diw6 = (!I887z6); +assign Svu6z6 = (Wxu6z6 & Eyu6z6); +assign Eyu6z6 = (~(Myu6z6 & M36nv6)); +assign M36nv6 = (!Wg5nv6); +assign Wg5nv6 = (I25nv6 & Uyu6z6); +assign Uyu6z6 = (!Gpu6z6); +assign I25nv6 = (!Y35nv6); +assign Myu6z6 = (Ng4nv6 ^ A887z6); +assign Wxu6z6 = (~(Czu6z6 & Y35nv6)); +assign Y35nv6 = (~(W95nv6 & Kzu6z6)); +assign Kzu6z6 = (~(Gpu6z6 & Uqu6z6)); +assign Czu6z6 = (B34nv6 ^ S787z6); +assign Cvu6z6 = (Szu6z6 & A0v6z6); +assign A0v6z6 = (~(I0v6z6 & Ko5nv6)); +assign I0v6z6 = (Y44nv6 ^ Lqciw6); +assign Lqciw6 = (!C787z6); +assign Szu6z6 = (Q0v6z6 & Y0v6z6); +assign Y0v6z6 = (~(G1v6z6 & Mb5nv6)); +assign Mb5nv6 = (!W95nv6); +assign W95nv6 = (Kh5nv6 & O1v6z6); +assign G1v6z6 = (Sf06z6 ^ Ysp6z6); +assign Ysp6z6 = (!N94nv6); +assign Sf06z6 = (!Z4m7z6[24]); +assign Q0v6z6 = (~(W1v6z6 & Aj5nv6)); +assign Aj5nv6 = (!Kh5nv6); +assign Kh5nv6 = (~(Ko5nv6 | E2v6z6)); +assign Ko5nv6 = (~(Fb5nv6 & M2v6z6)); +assign M2v6z6 = (~(Sfu6z6 & Agu6z6)); +assign Fb5nv6 = (!Bu5nv6); +assign W1v6z6 = (Gg4nv6 ^ Gl77z6); +assign Muu6z6 = (U2v6z6 & C3v6z6); +assign C3v6z6 = (K3v6z6 & S3v6z6); +assign S3v6z6 = (A4v6z6 & I4v6z6); +assign I4v6z6 = (~(Q4v6z6 & Bu5nv6)); +assign Bu5nv6 = (~(Ti5nv6 & Y4v6z6)); +assign Y4v6z6 = (~(E2v6z6 & Sfu6z6)); +assign Ti5nv6 = (!I16nv6); +assign Q4v6z6 = (Kb4nv6 ^ U687z6); +assign A4v6z6 = (~(G5v6z6 & I16nv6)); +assign I16nv6 = (~(F45nv6 & O5v6z6)); +assign O5v6z6 = (~(Wlu6z6 & Agu6z6)); +assign F45nv6 = (!E75nv6); +assign G5v6z6 = (Ri4nv6 ^ O587z6); +assign K3v6z6 = (W5v6z6 & E6v6z6); +assign E6v6z6 = (~(M6v6z6 & E75nv6)); +assign E75nv6 = (~(Tb5nv6 & U6v6z6)); +assign U6v6z6 = (~(E2v6z6 & Wlu6z6)); +assign Tb5nv6 = (!Se5nv6); +assign M6v6z6 = (R44nv6 ^ Ukciw6); +assign Ukciw6 = (!W587z6); +assign W5v6z6 = (~(C7v6z6 & Se5nv6)); +assign Se5nv6 = (~(Hj5nv6 & K7v6z6)); +assign K7v6z6 = (~(Gpu6z6 & Agu6z6)); +assign Hj5nv6 = (!Gm5nv6); +assign C7v6z6 = (Rb4nv6 ^ Ejciw6); +assign Ejciw6 = (!E687z6); +assign U2v6z6 = (S7v6z6 & Ik06z6); +assign S7v6z6 = (A8v6z6 & I8v6z6); +assign I8v6z6 = (~(Q8v6z6 & Gm5nv6)); +assign Gm5nv6 = (~(X65nv6 & Y8v6z6)); +assign Y8v6z6 = (~(E2v6z6 & Gpu6z6)); +assign Gpu6z6 = (Sfu6z6 & Wlu6z6); +assign Sfu6z6 = (!Wtu6z6); +assign Wtu6z6 = (N1m7z6[2] & Ik06z6); +assign E2v6z6 = (Uqu6z6 & Agu6z6); +assign Agu6z6 = (!O1v6z6); +assign O1v6z6 = (N1m7z6[4] & Ik06z6); +assign Uqu6z6 = (!Gtu6z6); +assign Gtu6z6 = (N1m7z6[1] & Ik06z6); +assign Q8v6z6 = (Ki4nv6 ^ M687z6); +assign A8v6z6 = (~(G9v6z6 & Ro5nv6)); +assign Ro5nv6 = (!X65nv6); +assign X65nv6 = (N1m7z6[5] & Ik06z6); +assign Ik06z6 = (O9v6z6 & N1m7z6[0]); +assign O9v6z6 = (Sjy5z6 & W9v6z6); +assign W9v6z6 = (~(Zd6nv6 & Wlu6z6)); +assign Wlu6z6 = (!N1m7z6[3]); +assign Zd6nv6 = (Eav6z6 & Mav6z6); +assign Mav6z6 = (!N1m7z6[5]); +assign Eav6z6 = (!N1m7z6[4]); +assign G9v6z6 = (Em06z6 ^ J74nv6); +assign Em06z6 = (!Z4m7z6[16]); +assign Y8u6z6 = (~(Aga6z6 & Uav6z6)); +assign Uav6z6 = (~(Cbv6z6 & Kbv6z6)); +assign Kbv6z6 = (Vbm7z6[22] ? Acv6z6 : Sbv6z6); +assign Acv6z6 = (~(Ysn6z6 & Sbv6z6)); +assign Sbv6z6 = (Vbm7z6[21] | Vbm7z6[20]); +assign Cbv6z6 = (Vbm7z6[21] ? Qcv6z6 : Icv6z6); +assign Qcv6z6 = (Wtn6z6 | Vbm7z6[20]); +assign Wtn6z6 = (~(Eun6z6 & Ysn6z6)); +assign Ysn6z6 = (I4a6z6 ? Lhmov6 : Qwget6); +assign Lhmov6 = (~(Ycv6z6 & Gdv6z6)); +assign Gdv6z6 = (Odv6z6 & Wdv6z6); +assign Wdv6z6 = (Hjphw6 & J1a7x6); +assign Hjphw6 = (!Wxi6z6); +assign Odv6z6 = (X3yxx6 & Gwsiw6); +assign Gwsiw6 = (L8hhw6 | Dwb7z6[0]); +assign L8hhw6 = (~(Uakiy6 & Bwvnv6)); +assign Ycv6z6 = (Eev6z6 & Mev6z6); +assign Mev6z6 = (Uev6z6 & Cfv6z6); +assign Uev6z6 = (Kfv6z6 | X4eet6); +assign Eev6z6 = (Sfv6z6 & Agv6z6); +assign Agv6z6 = (~(U6hiy6 & Dwb7z6[1])); +assign Sfv6z6 = (~(Ii9ov6 & Igv6z6)); +assign Igv6z6 = (~(Qgv6z6 & Ygv6z6)); +assign Qgv6z6 = (Ghv6z6 & Twphw6); +assign Ghv6z6 = (~(Ohv6z6 & Doihw6)); +assign Ohv6z6 = (Dwb7z6[1] & Uvvnv6); +assign Icv6z6 = (~(Vbm7z6[20] & Eun6z6)); +assign Eun6z6 = (!Glm6z6); +assign Glm6z6 = (P1het6 ? Dzget6 : Hjqnv6); +assign Hjqnv6 = (~(Whv6z6 & Eiv6z6)); +assign Eiv6z6 = (~(N99iw6 & Miv6z6)); +assign Miv6z6 = (Uiv6z6 | A0ghw6); +assign A0ghw6 = (!Ecc7z6[12]); +assign Uiv6z6 = (~(Tlmov6 & Pbadt6)); +assign N99iw6 = (!Gbo6x6); +assign Gbo6x6 = (J2cdt6 & Tkbdt6); +assign Whv6z6 = (~(H7wxx6 & Gvvnv6)); +assign Aga6z6 = (!Sbu6z6); +assign Sbu6z6 = (~(Cjv6z6 & Kjv6z6)); +assign Kjv6z6 = (Sjv6z6 & Akv6z6); +assign Akv6z6 = (Ikv6z6 & Qkv6z6); +assign Qkv6z6 = (Ykv6z6 & Glv6z6); +assign Glv6z6 = (~(Cymet6 | Olv6z6)); +assign Olv6z6 = (Wlv6z6 & En3nv6); +assign Wlv6z6 = (Pa4nv6 ^ Ey77z6); +assign Pa4nv6 = (P1het6 ? E6a6z6 : Yygnv6); +assign E6a6z6 = (!V5k7z6[30]); +assign Ykv6z6 = (Emv6z6 & Mmv6z6); +assign Mmv6z6 = (~(Umv6z6 & Ma66z6)); +assign Ma66z6 = (!Oe3nv6); +assign Umv6z6 = (U24nv6 ^ Q3diw6); +assign Q3diw6 = (!Ox77z6); +assign U24nv6 = (P1het6 ? V5k7z6[28] : Cmm7z6[28]); +assign Emv6z6 = (~(Cnv6z6 & Su3nv6)); +assign Cnv6z6 = (Ng4nv6 ^ Yw77z6); +assign Ng4nv6 = (P1het6 ? U297z6 : V0hnv6); +assign Ikv6z6 = (Knv6z6 & Snv6z6); +assign Snv6z6 = (Aov6z6 & Iov6z6); +assign Iov6z6 = (~(Qov6z6 & Jf3nv6)); +assign Qov6z6 = (Kn66z6 ^ B34nv6); +assign B34nv6 = (P1het6 ? Knn6z6 : C1hnv6); +assign Knn6z6 = (!V5k7z6[25]); +assign Kn66z6 = (!Hfm7z6[25]); +assign Aov6z6 = (~(Yov6z6 & Bp3nv6)); +assign Bp3nv6 = (!Xm3nv6); +assign Yov6z6 = (~(N94nv6 ^ Qw77z6)); +assign N94nv6 = (P1het6 ? V5k7z6[24] : Cmm7z6[24]); +assign Knv6z6 = (Gpv6z6 & Opv6z6); +assign Opv6z6 = (~(Wpv6z6 & U676z6)); +assign U676z6 = (!Uo3nv6); +assign Wpv6z6 = (Kb4nv6 ^ E287z6); +assign Kb4nv6 = (P1het6 ? Aon6z6 : E2hnv6); +assign Aon6z6 = (!V5k7z6[21]); +assign Gpv6z6 = (~(Eqv6z6 & Mk3nv6)); +assign Eqv6z6 = (R44nv6 ^ Blciw6); +assign Blciw6 = (!O187z6); +assign R44nv6 = (P1het6 ? V5k7z6[19] : Cmm7z6[19]); +assign Sjv6z6 = (Mqv6z6 & Uqv6z6); +assign Uqv6z6 = (Crv6z6 & Krv6z6); +assign Krv6z6 = (Srv6z6 & Asv6z6); +assign Asv6z6 = (~(Isv6z6 & Vs3nv6)); +assign Isv6z6 = (Rb4nv6 ^ Ljciw6); +assign Ljciw6 = (!O597z6); +assign Rb4nv6 = (P1het6 ? V5k7z6[18] : Cmm7z6[18]); +assign Srv6z6 = (~(Qsv6z6 & X04nv6)); +assign Qsv6z6 = (Ki4nv6 ^ W187z6); +assign Ki4nv6 = (P1het6 ? Ui77z6 : I4hnv6); +assign I4hnv6 = (!Cmm7z6[17]); +assign Crv6z6 = (Ysv6z6 & Gtv6z6); +assign Gtv6z6 = (~(Otv6z6 & J04nv6)); +assign Otv6z6 = (Jl4nv6 ^ Jbciw6); +assign Jbciw6 = (!Q087z6); +assign Jl4nv6 = (P1het6 ? V5k7z6[14] : Cmm7z6[14]); +assign Ysv6z6 = (~(Wtv6z6 & Mr3nv6)); +assign Wtv6z6 = (Ce4nv6 ^ D8ciw6); +assign D8ciw6 = (!Cz77z6); +assign Ce4nv6 = (P1het6 ? V5k7z6[12] : Cmm7z6[12]); +assign Mqv6z6 = (Euv6z6 & Muv6z6); +assign Muv6z6 = (~(Uuv6z6 & Fr3nv6)); +assign Uuv6z6 = (Kv5nv6 ^ Opbiw6); +assign Opbiw6 = (!Uy77z6); +assign Kv5nv6 = (P1het6 ? V5k7z6[6] : Cmm7z6[6]); +assign Euv6z6 = (Cvv6z6 & Kvv6z6); +assign Kvv6z6 = (~(Svv6z6 & Is56z6)); +assign Is56z6 = (!Pi3nv6); +assign Svv6z6 = (H64nv6 ^ D1ciw6); +assign D1ciw6 = (!Sz77z6); +assign H64nv6 = (P1het6 ? V5k7z6[10] : Cmm7z6[10]); +assign Cvv6z6 = (~(Ty3nv6 & Awv6z6)); +assign Awv6z6 = (G166z6 ^ Ghp6z6); +assign Ghp6z6 = (!Hk4nv6); +assign Hk4nv6 = (P1het6 ? V5k7z6[8] : Cmm7z6[8]); +assign G166z6 = (!Hfm7z6[8]); +assign Cjv6z6 = (Iwv6z6 & Qwv6z6); +assign Qwv6z6 = (Ywv6z6 & Gxv6z6); +assign Gxv6z6 = (Oxv6z6 & Wxv6z6); +assign Wxv6z6 = (Eyv6z6 & Myv6z6); +assign Myv6z6 = (~(Uyv6z6 & Qm3nv6)); +assign Uyv6z6 = (U94nv6 ^ M1diw6); +assign M1diw6 = (!Gx77z6); +assign U94nv6 = (P1het6 ? V5k7z6[27] : Cmm7z6[27]); +assign Eyv6z6 = (~(Czv6z6 & Gv3nv6)); +assign Czv6z6 = (G5diw6 ^ Ico6z6); +assign Ico6z6 = (~(M6a6z6 & Kzv6z6)); +assign Kzv6z6 = (~(Cmm7z6[29] & I4a6z6)); +assign I4a6z6 = (!P1het6); +assign M6a6z6 = (~(V5k7z6[29] & P1het6)); +assign G5diw6 = (!Wx77z6); +assign Oxv6z6 = (Szv6z6 & A0w6z6); +assign A0w6z6 = (~(I0w6z6 & Ww3nv6)); +assign I0w6z6 = (Ri4nv6 ^ G187z6); +assign Ri4nv6 = (P1het6 ? Cj77z6 : L2hnv6); +assign Szv6z6 = (~(Q0w6z6 & Zg3nv6)); +assign Q0w6z6 = (Y44nv6 ^ Sqciw6); +assign Sqciw6 = (!M287z6); +assign Y44nv6 = (P1het6 ? V5k7z6[22] : Cmm7z6[22]); +assign Ywv6z6 = (Y0w6z6 & G1w6z6); +assign G1w6z6 = (~(O1w6z6 & Hs3nv6)); +assign Hs3nv6 = (J04nv6 | W1w6z6); +assign J04nv6 = (~(Tk3nv6 & E2w6z6)); +assign E2w6z6 = (~(M2w6z6 & Ys76z6)); +assign Tk3nv6 = (!Wi3nv6); +assign O1w6z6 = (Je4nv6 ^ Udciw6); +assign Udciw6 = (!Y087z6); +assign Je4nv6 = (P1het6 ? V5k7z6[15] : Cmm7z6[15]); +assign Y0w6z6 = (U2w6z6 & C3w6z6); +assign C3w6z6 = (~(K3w6z6 & Kx3nv6)); +assign Kx3nv6 = (!Zu3nv6); +assign K3w6z6 = (Gg4nv6 ^ Yk77z6); +assign Gg4nv6 = (P1het6 ? Kj77z6 : Q1hnv6); +assign U2w6z6 = (~(S3w6z6 & Wi3nv6)); +assign Wi3nv6 = (~(Os3nv6 & A4w6z6)); +assign A4w6z6 = (~(W1w6z6 & M2w6z6)); +assign Os3nv6 = (!Mr3nv6); +assign Mr3nv6 = (~(Q04nv6 & I4w6z6)); +assign I4w6z6 = (~(Q4w6z6 & Ys76z6)); +assign Q04nv6 = (!Oz3nv6); +assign S3w6z6 = (Q74nv6 ^ T9ciw6); +assign T9ciw6 = (!I087z6); +assign Q74nv6 = (P1het6 ? V5k7z6[13] : Cmm7z6[13]); +assign Iwv6z6 = (Y4w6z6 & G5w6z6); +assign G5w6z6 = (O5w6z6 & W5w6z6); +assign W5w6z6 = (E6w6z6 & M6w6z6); +assign M6w6z6 = (~(U6w6z6 & Rq3nv6)); +assign U6w6z6 = (Hd4nv6 ^ Nzbiw6); +assign Nzbiw6 = (!A087z6); +assign Hd4nv6 = (P1het6 ? V5k7z6[9] : Cmm7z6[9]); +assign E6w6z6 = (~(C7w6z6 & Hz3nv6)); +assign Hz3nv6 = (K7w6z6 & W1w6z6); +assign K7w6z6 = (S7w6z6 & M2w6z6); +assign C7w6z6 = (Ak4nv6 ^ Mq46z6); +assign Mq46z6 = (!Hfm7z6[5]); +assign Ak4nv6 = (!Ci7nv6); +assign Ci7nv6 = (P1het6 ? V5k7z6[5] : Cmm7z6[5]); +assign O5w6z6 = (A8w6z6 & I8w6z6); +assign I8w6z6 = (~(Q8w6z6 & Dj3nv6)); +assign Dj3nv6 = (Y8w6z6 | Fr3nv6); +assign Fr3nv6 = (Ty3nv6 & M2w6z6); +assign Y8w6z6 = (W1w6z6 & S7w6z6); +assign Q8w6z6 = (Tp5nv6 ^ Btbiw6); +assign Btbiw6 = (!My77z6); +assign Tp5nv6 = (P1het6 ? V5k7z6[7] : Cmm7z6[7]); +assign A8w6z6 = (~(G9w6z6 & Oz3nv6)); +assign Oz3nv6 = (~(Pi3nv6 & O9w6z6)); +assign O9w6z6 = (~(W1w6z6 & Q4w6z6)); +assign Pi3nv6 = (~(Rq3nv6 | W9w6z6)); +assign W9w6z6 = (Eaw6z6 & Ys76z6); +assign Rq3nv6 = (Maw6z6 | Ty3nv6); +assign Ty3nv6 = (Ys76z6 & S7w6z6); +assign Maw6z6 = (W1w6z6 & Eaw6z6); +assign W1w6z6 = (Ys76z6 & Uaw6z6); +assign G9w6z6 = (Cl4nv6 ^ X4ciw6); +assign X4ciw6 = (!Kz77z6); +assign Cl4nv6 = (P1het6 ? V5k7z6[11] : Cmm7z6[11]); +assign Y4w6z6 = (Cbw6z6 & Sn76z6); +assign Cbw6z6 = (Kbw6z6 & Sbw6z6); +assign Sbw6z6 = (~(Acw6z6 & Ve3nv6)); +assign Ve3nv6 = (En3nv6 | Uaw6z6); +assign En3nv6 = (Gv3nv6 | M2w6z6); +assign Gv3nv6 = (~(Oe3nv6 & Icw6z6)); +assign Icw6z6 = (~(M2w6z6 & Uaw6z6)); +assign Oe3nv6 = (~(Q4w6z6 | Qm3nv6)); +assign Qm3nv6 = (Su3nv6 | Qcw6z6); +assign Qcw6z6 = (~(Vbm7z6[3] | Ycw6z6)); +assign Su3nv6 = (Jf3nv6 | Eaw6z6); +assign Jf3nv6 = (~(Xm3nv6 & Gdw6z6)); +assign Gdw6z6 = (~(Eaw6z6 & Uaw6z6)); +assign Xm3nv6 = (Zu3nv6 & Odw6z6); +assign Zu3nv6 = (~(Zg3nv6 | Wdw6z6)); +assign Zg3nv6 = (~(Uo3nv6 & Eew6z6)); +assign Eew6z6 = (~(M2w6z6 & S7w6z6)); +assign Uo3nv6 = (~(Ww3nv6 | Mew6z6)); +assign Mew6z6 = (Wdw6z6 & M2w6z6); +assign Ww3nv6 = (~(Gh3nv6 & Uew6z6)); +assign Uew6z6 = (~(Q4w6z6 & S7w6z6)); +assign Gh3nv6 = (!Mk3nv6); +assign Mk3nv6 = (~(Ip3nv6 & Cfw6z6)); +assign Cfw6z6 = (~(Wdw6z6 & Q4w6z6)); +assign Ip3nv6 = (!Vs3nv6); +assign Vs3nv6 = (~(Dx3nv6 & Kfw6z6)); +assign Kfw6z6 = (~(Eaw6z6 & S7w6z6)); +assign Dx3nv6 = (!X04nv6); +assign X04nv6 = (~(Fk3nv6 & Sfw6z6)); +assign Sfw6z6 = (~(Wdw6z6 & Eaw6z6)); +assign Eaw6z6 = (M2w6z6 & Q4w6z6); +assign M2w6z6 = (~(Vbm7z6[2] & Sn76z6)); +assign Wdw6z6 = (Uaw6z6 & S7w6z6); +assign S7w6z6 = (!Odw6z6); +assign Odw6z6 = (Vbm7z6[4] & Sn76z6); +assign Uaw6z6 = (!Ycw6z6); +assign Ycw6z6 = (Vbm7z6[1] & Sn76z6); +assign Acw6z6 = (W34nv6 ^ Iw77z6); +assign W34nv6 = (!Agw6z6); +assign Agw6z6 = (P1het6 ? V5k7z6[31] : Cmm7z6[31]); +assign Kbw6z6 = (~(Igw6z6 & Ys76z6)); +assign Ys76z6 = (!Fk3nv6); +assign Fk3nv6 = (Vbm7z6[5] & Sn76z6); +assign Sn76z6 = (Qgw6z6 & Vbm7z6[0]); +assign Qgw6z6 = (Sjy5z6 & Ygw6z6); +assign Ygw6z6 = (~(Wv4nv6 & Q4w6z6)); +assign Q4w6z6 = (!Vbm7z6[3]); +assign Wv4nv6 = (Ghw6z6 & Ohw6z6); +assign Ohw6z6 = (!Vbm7z6[5]); +assign Ghw6z6 = (!Vbm7z6[4]); +assign Igw6z6 = (Gt76z6 ^ J74nv6); +assign J74nv6 = (P1het6 ? Snm6z6 : P4hnv6); +assign Snm6z6 = (!V5k7z6[16]); +assign P4hnv6 = (!Cmm7z6[16]); +assign Gt76z6 = (!Hfm7z6[16]); +assign Sjy5z6 = (Phget6 & Whw6z6); +assign Whw6z6 = (Weget6 | Etinv6); +assign Etinv6 = (Dxgov6 & Ev2nv6); +assign Ev2nv6 = (!Fjadt6); +assign Dxgov6 = (S34jy6 & Cn2nv6); +assign Cn2nv6 = (!X3get6); +assign S34jy6 = (!Inadt6); +assign Ein6z6 = (~(Zmnyx6 & L3bdt6)); +assign HMASTERS[0] = (~(Eiw6z6 & Miw6z6)); +assign Miw6z6 = (~(Uiw6z6 & Cjw6z6)); +assign Uiw6z6 = (K6uet6 & J0jxx6); +assign Eiw6z6 = (~(Fk9ov6 & T52iw6)); +assign HMASTERD[0] = (~(Kjw6z6 & Sjw6z6)); +assign Sjw6z6 = (~(Akw6z6 & Cjw6z6)); +assign Cjw6z6 = (Ikw6z6 & Ewyet6); +assign Akw6z6 = (K6uet6 & Jn1ov6); +assign Kjw6z6 = (~(Vm1ov6 & T52iw6)); +assign T52iw6 = (Zn0ft6 | Lq0ft6); +assign HBURSTS[0] = (~(Qkw6z6 & Ykw6z6)); +assign Ykw6z6 = (~(J0jxx6 & Glw6z6)); +assign Glw6z6 = (Vugxx6 | Jinyx6); +assign Qkw6z6 = (En9ov6 & Cfonv6); +assign HBURSTD[0] = (~(Ibonv6 & Jfonv6)); +assign HADDRS[9] = (~(Olw6z6 & Wlw6z6)); +assign Wlw6z6 = (Emw6z6 & Mmw6z6); +assign Mmw6z6 = (~(S7m6z6 & Cmm7z6[14])); +assign Emw6z6 = (Umw6z6 & Cnw6z6); +assign Cnw6z6 = (~(Mma6z6 & Fvb7z6[9])); +assign Umw6z6 = (~(Zmnyx6 & Fvb7z6[14])); +assign Olw6z6 = (Knw6z6 & Snw6z6); +assign Snw6z6 = (~(Aoa6z6 & Cmm7z6[9])); +assign Knw6z6 = (~(Onret6 & J0jxx6)); +assign HADDRS[8] = (~(Aow6z6 & Iow6z6)); +assign Iow6z6 = (Qow6z6 & Yow6z6); +assign Yow6z6 = (~(S7m6z6 & Cmm7z6[13])); +assign Qow6z6 = (Gpw6z6 & Opw6z6); +assign Opw6z6 = (~(Mma6z6 & Fvb7z6[8])); +assign Gpw6z6 = (~(Zmnyx6 & Fvb7z6[13])); +assign Aow6z6 = (Wpw6z6 & Eqw6z6); +assign Eqw6z6 = (~(Aoa6z6 & Cmm7z6[8])); +assign Wpw6z6 = (~(Ppret6 & J0jxx6)); +assign HADDRS[7] = (~(Mqw6z6 & Uqw6z6)); +assign Uqw6z6 = (Crw6z6 & Krw6z6); +assign Krw6z6 = (~(S7m6z6 & Cmm7z6[12])); +assign Crw6z6 = (Srw6z6 & Asw6z6); +assign Asw6z6 = (~(Mma6z6 & Fvb7z6[7])); +assign Srw6z6 = (~(Zmnyx6 & Fvb7z6[12])); +assign Mqw6z6 = (Isw6z6 & Qsw6z6); +assign Qsw6z6 = (~(Aoa6z6 & Cmm7z6[7])); +assign Isw6z6 = (~(Qrret6 & J0jxx6)); +assign HADDRS[6] = (~(Ysw6z6 & Gtw6z6)); +assign Gtw6z6 = (Otw6z6 & Wtw6z6); +assign Wtw6z6 = (~(S7m6z6 & Cmm7z6[11])); +assign Otw6z6 = (Euw6z6 & Muw6z6); +assign Muw6z6 = (~(Mma6z6 & Fvb7z6[6])); +assign Euw6z6 = (~(Zmnyx6 & Fvb7z6[11])); +assign Ysw6z6 = (Uuw6z6 & Cvw6z6); +assign Cvw6z6 = (~(Aoa6z6 & Cmm7z6[6])); +assign Uuw6z6 = (~(Rtret6 & J0jxx6)); +assign HADDRS[5] = (~(Kvw6z6 & Svw6z6)); +assign Svw6z6 = (Aww6z6 & Iww6z6); +assign Iww6z6 = (~(S7m6z6 & Cmm7z6[10])); +assign Aww6z6 = (Qww6z6 & Yww6z6); +assign Yww6z6 = (~(Mma6z6 & Fvb7z6[5])); +assign Qww6z6 = (~(Zmnyx6 & Fvb7z6[10])); +assign Kvw6z6 = (Gxw6z6 & Oxw6z6); +assign Oxw6z6 = (~(Aoa6z6 & Cmm7z6[5])); +assign Gxw6z6 = (~(Svret6 & J0jxx6)); +assign HADDRS[4] = (~(Wxw6z6 & Eyw6z6)); +assign Eyw6z6 = (Myw6z6 & Uyw6z6); +assign Uyw6z6 = (~(S7m6z6 & Cmm7z6[9])); +assign Myw6z6 = (Czw6z6 & Kzw6z6); +assign Kzw6z6 = (~(Mma6z6 & Fvb7z6[4])); +assign Czw6z6 = (~(Zmnyx6 & Fvb7z6[9])); +assign Wxw6z6 = (Szw6z6 & A0x6z6); +assign A0x6z6 = (~(Aoa6z6 & Cmm7z6[4])); +assign Szw6z6 = (~(Txret6 & J0jxx6)); +assign HADDRS[3] = (~(I0x6z6 & Q0x6z6)); +assign Q0x6z6 = (Y0x6z6 & G1x6z6); +assign G1x6z6 = (~(S7m6z6 & Cmm7z6[8])); +assign Y0x6z6 = (O1x6z6 & W1x6z6); +assign W1x6z6 = (~(Mma6z6 & Fvb7z6[3])); +assign O1x6z6 = (~(Zmnyx6 & Fvb7z6[8])); +assign I0x6z6 = (E2x6z6 & M2x6z6); +assign M2x6z6 = (~(Aoa6z6 & Cmm7z6[3])); +assign E2x6z6 = (~(Uzret6 & J0jxx6)); +assign HADDRS[31] = (~(U2x6z6 & C3x6z6)); +assign C3x6z6 = (~(Seqet6 & J0jxx6)); +assign U2x6z6 = (K3x6z6 & S3x6z6); +assign S3x6z6 = (~(Fk9ov6 & Fvb7z6[31])); +assign K3x6z6 = (~(Rj9ov6 & Cmm7z6[31])); +assign HADDRS[30] = (~(A4x6z6 & I4x6z6)); +assign I4x6z6 = (~(Tgqet6 & J0jxx6)); +assign A4x6z6 = (Q4x6z6 & Y4x6z6); +assign Y4x6z6 = (~(Fk9ov6 & Fvb7z6[30])); +assign Q4x6z6 = (~(Rj9ov6 & Cmm7z6[30])); +assign HADDRS[2] = (~(G5x6z6 & O5x6z6)); +assign O5x6z6 = (W5x6z6 & E6x6z6); +assign E6x6z6 = (~(S7m6z6 & Cmm7z6[7])); +assign W5x6z6 = (M6x6z6 & U6x6z6); +assign U6x6z6 = (~(Mma6z6 & Fvb7z6[2])); +assign M6x6z6 = (~(Zmnyx6 & Fvb7z6[7])); +assign G5x6z6 = (C7x6z6 & K7x6z6); +assign K7x6z6 = (~(Aoa6z6 & Yefnv6)); +assign C7x6z6 = (~(V1set6 & J0jxx6)); +assign HADDRS[29] = (~(S7x6z6 & A8x6z6)); +assign A8x6z6 = (~(Uiqet6 & J0jxx6)); +assign S7x6z6 = (I8x6z6 & Q8x6z6); +assign Q8x6z6 = (~(Fk9ov6 & Fvb7z6[29])); +assign I8x6z6 = (~(Rj9ov6 & Cmm7z6[29])); +assign HADDRS[28] = (~(Y8x6z6 & G9x6z6)); +assign G9x6z6 = (~(Vkqet6 & J0jxx6)); +assign Y8x6z6 = (O9x6z6 & W9x6z6); +assign W9x6z6 = (~(Fvb7z6[28] & Fk9ov6)); +assign O9x6z6 = (~(Rj9ov6 & Cmm7z6[28])); +assign HADDRS[27] = (~(Eax6z6 & Max6z6)); +assign Max6z6 = (~(Wmqet6 & J0jxx6)); +assign Eax6z6 = (Uax6z6 & Cbx6z6); +assign Cbx6z6 = (~(Mma6z6 & Fvb7z6[27])); +assign Uax6z6 = (~(Aoa6z6 & Cmm7z6[27])); +assign HADDRS[26] = (~(Kbx6z6 & Sbx6z6)); +assign Sbx6z6 = (~(Xoqet6 & J0jxx6)); +assign Kbx6z6 = (Acx6z6 & Icx6z6); +assign Icx6z6 = (~(Mma6z6 & Fvb7z6[26])); +assign Acx6z6 = (~(Aoa6z6 & Cmm7z6[26])); +assign HADDRS[25] = (~(Qcx6z6 & Ycx6z6)); +assign Ycx6z6 = (~(Yqqet6 & J0jxx6)); +assign Qcx6z6 = (Gdx6z6 & Odx6z6); +assign Odx6z6 = (~(Mma6z6 & Fvb7z6[25])); +assign Gdx6z6 = (~(Aoa6z6 & Cmm7z6[25])); +assign HADDRS[24] = (~(Wdx6z6 & Eex6z6)); +assign Eex6z6 = (~(Zsqet6 & J0jxx6)); +assign Wdx6z6 = (Mex6z6 & Uex6z6); +assign Uex6z6 = (~(Mma6z6 & Fvb7z6[24])); +assign Mex6z6 = (~(Aoa6z6 & Cmm7z6[24])); +assign HADDRS[23] = (~(Cfx6z6 & Kfx6z6)); +assign Kfx6z6 = (~(Avqet6 & J0jxx6)); +assign Cfx6z6 = (Sfx6z6 & Agx6z6); +assign Agx6z6 = (~(Mma6z6 & Fvb7z6[23])); +assign Sfx6z6 = (~(Aoa6z6 & Cmm7z6[23])); +assign HADDRS[22] = (~(Igx6z6 & Qgx6z6)); +assign Qgx6z6 = (~(Bxqet6 & J0jxx6)); +assign Igx6z6 = (Ygx6z6 & Ghx6z6); +assign Ghx6z6 = (~(Mma6z6 & Fvb7z6[22])); +assign Ygx6z6 = (~(Aoa6z6 & Cmm7z6[22])); +assign HADDRS[21] = (~(Ohx6z6 & Whx6z6)); +assign Whx6z6 = (~(Czqet6 & J0jxx6)); +assign Ohx6z6 = (Eix6z6 & Mix6z6); +assign Mix6z6 = (~(Mma6z6 & Fvb7z6[21])); +assign Eix6z6 = (~(Aoa6z6 & Cmm7z6[21])); +assign HADDRS[20] = (~(Uix6z6 & Cjx6z6)); +assign Cjx6z6 = (~(D1ret6 & J0jxx6)); +assign Uix6z6 = (Kjx6z6 & Sjx6z6); +assign Sjx6z6 = (~(Mma6z6 & Fvb7z6[20])); +assign Kjx6z6 = (~(Aoa6z6 & Cmm7z6[20])); +assign HADDRS[1] = (~(Akx6z6 & Ikx6z6)); +assign Ikx6z6 = (Qkx6z6 & Ykx6z6); +assign Ykx6z6 = (~(Mma6z6 & Stpnv6)); +assign Qkx6z6 = (Glx6z6 & Olx6z6); +assign Olx6z6 = (~(Wlx6z6 & S7m6z6)); +assign Wlx6z6 = (Cmm7z6[6] & Emx6z6); +assign Emx6z6 = (~(Anehw6 & Ta4iw6)); +assign Glx6z6 = (~(Mmx6z6 & Zmnyx6)); +assign Mmx6z6 = (Fvb7z6[6] & Ohe7x6); +assign Ohe7x6 = (Jie7x6 | Hub7z6[0]); +assign Akx6z6 = (Umx6z6 & Cnx6z6); +assign Cnx6z6 = (~(Aoa6z6 & Cmm7z6[1])); +assign Umx6z6 = (~(W3set6 & J0jxx6)); +assign HADDRS[19] = (~(Knx6z6 & Snx6z6)); +assign Snx6z6 = (Aox6z6 & Iox6z6); +assign Iox6z6 = (~(S7m6z6 & Cmm7z6[24])); +assign Aox6z6 = (Qox6z6 & Yox6z6); +assign Yox6z6 = (~(Mma6z6 & Fvb7z6[19])); +assign Qox6z6 = (~(Zmnyx6 & Fvb7z6[24])); +assign Knx6z6 = (Gpx6z6 & Opx6z6); +assign Opx6z6 = (~(Aoa6z6 & Cmm7z6[19])); +assign Gpx6z6 = (~(E3ret6 & J0jxx6)); +assign HADDRS[18] = (~(Wpx6z6 & Eqx6z6)); +assign Eqx6z6 = (Mqx6z6 & Uqx6z6); +assign Uqx6z6 = (~(S7m6z6 & Cmm7z6[23])); +assign Mqx6z6 = (Crx6z6 & Krx6z6); +assign Krx6z6 = (~(Mma6z6 & Fvb7z6[18])); +assign Crx6z6 = (~(Zmnyx6 & Fvb7z6[23])); +assign Wpx6z6 = (Srx6z6 & Asx6z6); +assign Asx6z6 = (~(Aoa6z6 & Cmm7z6[18])); +assign Srx6z6 = (~(F5ret6 & J0jxx6)); +assign HADDRS[17] = (~(Isx6z6 & Qsx6z6)); +assign Qsx6z6 = (Ysx6z6 & Gtx6z6); +assign Gtx6z6 = (~(S7m6z6 & Cmm7z6[22])); +assign Ysx6z6 = (Otx6z6 & Wtx6z6); +assign Wtx6z6 = (~(Mma6z6 & Fvb7z6[17])); +assign Otx6z6 = (~(Zmnyx6 & Fvb7z6[22])); +assign Isx6z6 = (Eux6z6 & Mux6z6); +assign Mux6z6 = (~(Aoa6z6 & Cmm7z6[17])); +assign Eux6z6 = (~(G7ret6 & J0jxx6)); +assign HADDRS[16] = (~(Uux6z6 & Cvx6z6)); +assign Cvx6z6 = (Kvx6z6 & Svx6z6); +assign Svx6z6 = (~(S7m6z6 & Cmm7z6[21])); +assign Kvx6z6 = (Awx6z6 & Iwx6z6); +assign Iwx6z6 = (~(Mma6z6 & Fvb7z6[16])); +assign Awx6z6 = (~(Zmnyx6 & Fvb7z6[21])); +assign Uux6z6 = (Qwx6z6 & Ywx6z6); +assign Ywx6z6 = (~(Aoa6z6 & Cmm7z6[16])); +assign Qwx6z6 = (~(H9ret6 & J0jxx6)); +assign HADDRS[15] = (~(Gxx6z6 & Oxx6z6)); +assign Oxx6z6 = (Wxx6z6 & Eyx6z6); +assign Eyx6z6 = (~(S7m6z6 & Cmm7z6[20])); +assign Wxx6z6 = (Myx6z6 & Uyx6z6); +assign Uyx6z6 = (~(Mma6z6 & Fvb7z6[15])); +assign Myx6z6 = (~(Zmnyx6 & Fvb7z6[20])); +assign Gxx6z6 = (Czx6z6 & Kzx6z6); +assign Kzx6z6 = (~(Aoa6z6 & Cmm7z6[15])); +assign Czx6z6 = (~(Ibret6 & J0jxx6)); +assign HADDRS[14] = (~(Szx6z6 & A0y6z6)); +assign A0y6z6 = (I0y6z6 & Q0y6z6); +assign Q0y6z6 = (~(S7m6z6 & Cmm7z6[19])); +assign I0y6z6 = (Y0y6z6 & G1y6z6); +assign G1y6z6 = (~(Mma6z6 & Fvb7z6[14])); +assign Y0y6z6 = (~(Zmnyx6 & Fvb7z6[19])); +assign Szx6z6 = (O1y6z6 & W1y6z6); +assign W1y6z6 = (~(Aoa6z6 & Cmm7z6[14])); +assign O1y6z6 = (~(Jdret6 & J0jxx6)); +assign HADDRS[13] = (~(E2y6z6 & M2y6z6)); +assign M2y6z6 = (U2y6z6 & C3y6z6); +assign C3y6z6 = (~(S7m6z6 & Cmm7z6[18])); +assign U2y6z6 = (K3y6z6 & S3y6z6); +assign S3y6z6 = (~(Mma6z6 & Fvb7z6[13])); +assign K3y6z6 = (~(Zmnyx6 & Fvb7z6[18])); +assign E2y6z6 = (A4y6z6 & I4y6z6); +assign I4y6z6 = (~(Aoa6z6 & Cmm7z6[13])); +assign A4y6z6 = (~(Kfret6 & J0jxx6)); +assign HADDRS[12] = (~(Q4y6z6 & Y4y6z6)); +assign Y4y6z6 = (G5y6z6 & O5y6z6); +assign O5y6z6 = (~(S7m6z6 & Cmm7z6[17])); +assign G5y6z6 = (W5y6z6 & E6y6z6); +assign E6y6z6 = (~(Mma6z6 & Fvb7z6[12])); +assign W5y6z6 = (~(Zmnyx6 & Fvb7z6[17])); +assign Q4y6z6 = (M6y6z6 & U6y6z6); +assign U6y6z6 = (~(Aoa6z6 & Cmm7z6[12])); +assign M6y6z6 = (~(Lhret6 & J0jxx6)); +assign HADDRS[11] = (~(C7y6z6 & K7y6z6)); +assign K7y6z6 = (S7y6z6 & A8y6z6); +assign A8y6z6 = (~(S7m6z6 & Cmm7z6[16])); +assign S7y6z6 = (I8y6z6 & Q8y6z6); +assign Q8y6z6 = (~(Mma6z6 & Fvb7z6[11])); +assign I8y6z6 = (~(Zmnyx6 & Fvb7z6[16])); +assign C7y6z6 = (Y8y6z6 & G9y6z6); +assign G9y6z6 = (~(Aoa6z6 & Cmm7z6[11])); +assign Y8y6z6 = (~(Mjret6 & J0jxx6)); +assign HADDRS[10] = (~(O9y6z6 & W9y6z6)); +assign W9y6z6 = (Eay6z6 & May6z6); +assign May6z6 = (~(S7m6z6 & Cmm7z6[15])); +assign Eay6z6 = (Uay6z6 & Cby6z6); +assign Cby6z6 = (~(Mma6z6 & Fvb7z6[10])); +assign Uay6z6 = (~(Zmnyx6 & Fvb7z6[15])); +assign O9y6z6 = (Kby6z6 & Sby6z6); +assign Sby6z6 = (~(Aoa6z6 & Cmm7z6[10])); +assign Kby6z6 = (~(Nlret6 & J0jxx6)); +assign HADDRS[0] = (~(Acy6z6 & Icy6z6)); +assign Icy6z6 = (Qcy6z6 & Ycy6z6); +assign Ycy6z6 = (~(Mma6z6 & Mbqnv6)); +assign Mma6z6 = (Fk9ov6 & E2ziy6); +assign Fk9ov6 = (!Zn9ov6); +assign Qcy6z6 = (Gdy6z6 & Ody6z6); +assign Ody6z6 = (~(Wdy6z6 & Eey6z6)); +assign Eey6z6 = (M6giy6 & Jie7x6); +assign Jie7x6 = (!Hub7z6[1]); +assign M6giy6 = (!Hub7z6[0]); +assign Wdy6z6 = (Zmnyx6 & Fvb7z6[5]); +assign Zmnyx6 = (!En9ov6); +assign En9ov6 = (Zn9ov6 | E2ziy6); +assign Zn9ov6 = (~(Mey6z6 & Uey6z6)); +assign Uey6z6 = (Cfy6z6 & Kfy6z6); +assign Cfy6z6 = (Oz1iw6 & Uaonv6); +assign Oz1iw6 = (~(Sfy6z6 & Agy6z6)); +assign Agy6z6 = (Igy6z6 & Qgy6z6); +assign Qgy6z6 = (Ygy6z6 & Ghy6z6); +assign Ygy6z6 = (~(Fvb7z6[27] | Fvb7z6[28])); +assign Igy6z6 = (~(Ohy6z6 | Fvb7z6[23])); +assign Ohy6z6 = (Fvb7z6[24] | Fvb7z6[25]); +assign Sfy6z6 = (Why6z6 & Eiy6z6); +assign Eiy6z6 = (~(Miy6z6 | Fvb7z6[20])); +assign Miy6z6 = (Fvb7z6[21] | Fvb7z6[22]); +assign Why6z6 = (Uiy6z6 & Fvb7z6[31]); +assign Uiy6z6 = (Fvb7z6[29] & Fvb7z6[30]); +assign Mey6z6 = (Cjy6z6 & Hz1iw6); +assign Hz1iw6 = (K4bdt6 & Kjy6z6); +assign Cjy6z6 = (Sjy6z6 & Aky6z6); +assign Aky6z6 = (~(Gazet6 & Iky6z6)); +assign Iky6z6 = (Kyn7z6[0] | Kyn7z6[2]); +assign Sjy6z6 = (~(Qky6z6 & Yky6z6)); +assign Yky6z6 = (~(Gly6z6 & Oly6z6)); +assign Oly6z6 = (Wly6z6 & Dhnyx6); +assign Wly6z6 = (~(Aoyiy6 | Khoet6)); +assign Gly6z6 = (Emy6z6 & Mmy6z6); +assign Mmy6z6 = (~(Ewyet6 & Qln7z6[0])); +assign Gdy6z6 = (~(Umy6z6 & Cny6z6)); +assign Cny6z6 = (Cmm7z6[5] & Ta4iw6); +assign Umy6z6 = (S7m6z6 & Pbhnv6); +assign Pbhnv6 = (!Anehw6); +assign S7m6z6 = (!U2m6z6); +assign U2m6z6 = (Sgonv6 | Cfonv6); +assign Cfonv6 = (!Rj9ov6); +assign Acy6z6 = (Kny6z6 & Sny6z6); +assign Sny6z6 = (~(Aoa6z6 & Cmm7z6[0])); +assign Aoa6z6 = (!G5m6z6); +assign G5m6z6 = (~(Rj9ov6 & Sgonv6)); +assign Kny6z6 = (~(X5set6 & J0jxx6)); +assign HADDRI[4] = (Lhmyx6 ? X0d7z6[4] : Dvc7z6[4]); +assign X0d7z6[4] = (~(Aoy6z6 & Ioy6z6)); +assign Ioy6z6 = (Qoy6z6 & Yoy6z6); +assign Yoy6z6 = (~(Pic7z6[4] & Ir0ov6)); +assign Qoy6z6 = (Gpy6z6 & Opy6z6); +assign Opy6z6 = (Qs46z6 | Li0ov6); +assign Li0ov6 = (Wpy6z6 & Eqy6z6); +assign Eqy6z6 = (~(Wkd7z6[4] & Ddmhw6)); +assign Wpy6z6 = (Mqy6z6 & Uqy6z6); +assign Uqy6z6 = (~(Xhd7z6[4] & Eu46z6)); +assign Mqy6z6 = (~(Vnd7z6[4] & Jamnv6)); +assign Gpy6z6 = (~(Pdc7z6[4] & Mu46z6)); +assign Aoy6z6 = (Cry6z6 & Kry6z6); +assign Kry6z6 = (~(Znnov6 & P2j7z6[2])); +assign Cry6z6 = (~(Qdcdt6 & E3c7z6[4])); +assign HADDRI[3] = (Lhmyx6 ? X0d7z6[3] : Dvc7z6[3]); +assign X0d7z6[3] = (~(Sry6z6 & Asy6z6)); +assign Asy6z6 = (Isy6z6 & Qsy6z6); +assign Qsy6z6 = (~(Pic7z6[3] & Ir0ov6)); +assign Isy6z6 = (Ysy6z6 & Gty6z6); +assign Gty6z6 = (Qs46z6 | Mm0ov6); +assign Mm0ov6 = (Oty6z6 & Wty6z6); +assign Wty6z6 = (~(Wkd7z6[3] & Ddmhw6)); +assign Oty6z6 = (Euy6z6 & Muy6z6); +assign Muy6z6 = (~(Xhd7z6[3] & Eu46z6)); +assign Euy6z6 = (~(Vnd7z6[3] & Jamnv6)); +assign Ysy6z6 = (~(Pdc7z6[3] & Mu46z6)); +assign Sry6z6 = (Uuy6z6 & Cvy6z6); +assign Cvy6z6 = (~(Znnov6 & P2j7z6[1])); +assign Uuy6z6 = (~(Qdcdt6 & E3c7z6[3])); +assign HADDRI[2] = (Lhmyx6 ? X0d7z6[2] : Dvc7z6[2]); +assign Lhmyx6 = (!Crcdt6); +assign X0d7z6[2] = (~(Kvy6z6 & Svy6z6)); +assign Svy6z6 = (Awy6z6 & Iwy6z6); +assign Iwy6z6 = (~(Pdc7z6[2] & Mu46z6)); +assign Awy6z6 = (Qwy6z6 & R537x6); +assign Qwy6z6 = (Qs46z6 | Rs0ov6); +assign Rs0ov6 = (Ywy6z6 & Gxy6z6); +assign Gxy6z6 = (~(Wkd7z6[2] & Ddmhw6)); +assign Ywy6z6 = (Oxy6z6 & Wxy6z6); +assign Wxy6z6 = (~(Xhd7z6[2] & Eu46z6)); +assign Eu46z6 = (~(Jamnv6 | Ddmhw6)); +assign Oxy6z6 = (~(Vnd7z6[2] & Jamnv6)); +assign Qs46z6 = (~(Eyy6z6 & Au0ov6)); +assign Au0ov6 = (Pcmhw6 & E2k6z6); +assign E2k6z6 = (!Qdcdt6); +assign Eyy6z6 = (~(Emoov6 | Mu46z6)); +assign Mu46z6 = (~(Myy6z6 & Uyy6z6)); +assign Uyy6z6 = (E31ov6 | Znnov6); +assign E31ov6 = (~(Czy6z6 | Geddt6)); +assign Czy6z6 = (T8ddt6 | Nbddt6); +assign Myy6z6 = (Iooov6 & Qsoov6); +assign Qsoov6 = (Z8oov6 | Cgc7z6[2]); +assign Z8oov6 = (!Oznov6); +assign Oznov6 = (I51ov6 & Cgc7z6[1]); +assign Iooov6 = (~(Qmnov6 & P1piw6)); +assign Qmnov6 = (I51ov6 & Cgc7z6[2]); +assign Emoov6 = (~(Bwnov6 & Nx0ov6)); +assign Nx0ov6 = (!N9oov6); +assign N9oov6 = (E6piw6 & V4jhw6); +assign E6piw6 = (!W51ov6); +assign W51ov6 = (~(Kzy6z6 & Cgc7z6[0])); +assign Bwnov6 = (R537x6 & X6xnv6); +assign R537x6 = (!Ipnov6); +assign Ipnov6 = (K3k6z6 & V4jhw6); +assign V4jhw6 = (!Cgc7z6[3]); +assign K3k6z6 = (B51ov6 & O4jhw6); +assign B51ov6 = (Cgc7z6[1] & A4jhw6); +assign Kvy6z6 = (Szy6z6 & A0z6z6); +assign A0z6z6 = (~(Qdcdt6 & E3c7z6[2])); +assign Szy6z6 = (I0z6z6 & Q0z6z6); +assign Q0z6z6 = (~(Pic7z6[2] & Ir0ov6)); +assign I0z6z6 = (~(Znnov6 & P2j7z6[0])); +assign Znnov6 = (!X6xnv6); +assign HADDRD[9] = (~(Y0z6z6 & G1z6z6)); +assign G1z6z6 = (~(Onret6 & Jn1ov6)); +assign Y0z6z6 = (O1z6z6 & W1z6z6); +assign W1z6z6 = (~(Fvb7z6[9] & Vm1ov6)); +assign O1z6z6 = (~(Cmm7z6[9] & Hm1ov6)); +assign HADDRD[8] = (~(E2z6z6 & M2z6z6)); +assign M2z6z6 = (~(Ppret6 & Jn1ov6)); +assign E2z6z6 = (U2z6z6 & C3z6z6); +assign C3z6z6 = (~(Fvb7z6[8] & Vm1ov6)); +assign U2z6z6 = (~(Cmm7z6[8] & Hm1ov6)); +assign HADDRD[7] = (~(K3z6z6 & S3z6z6)); +assign S3z6z6 = (~(Qrret6 & Jn1ov6)); +assign K3z6z6 = (A4z6z6 & I4z6z6); +assign I4z6z6 = (~(Fvb7z6[7] & Vm1ov6)); +assign A4z6z6 = (~(Cmm7z6[7] & Hm1ov6)); +assign HADDRD[6] = (~(Q4z6z6 & Y4z6z6)); +assign Y4z6z6 = (~(Rtret6 & Jn1ov6)); +assign Q4z6z6 = (G5z6z6 & O5z6z6); +assign O5z6z6 = (~(Fvb7z6[6] & Vm1ov6)); +assign G5z6z6 = (~(Cmm7z6[6] & Hm1ov6)); +assign HADDRD[5] = (~(W5z6z6 & E6z6z6)); +assign E6z6z6 = (~(Svret6 & Jn1ov6)); +assign W5z6z6 = (M6z6z6 & U6z6z6); +assign U6z6z6 = (~(Fvb7z6[5] & Vm1ov6)); +assign M6z6z6 = (~(Cmm7z6[5] & Hm1ov6)); +assign HADDRD[4] = (~(C7z6z6 & K7z6z6)); +assign K7z6z6 = (~(Txret6 & Jn1ov6)); +assign C7z6z6 = (S7z6z6 & A8z6z6); +assign A8z6z6 = (~(Fvb7z6[4] & Vm1ov6)); +assign S7z6z6 = (~(Cmm7z6[4] & Hm1ov6)); +assign HADDRD[3] = (~(I8z6z6 & Q8z6z6)); +assign Q8z6z6 = (~(Uzret6 & Jn1ov6)); +assign I8z6z6 = (Y8z6z6 & G9z6z6); +assign G9z6z6 = (~(Fvb7z6[3] & Vm1ov6)); +assign Y8z6z6 = (~(Cmm7z6[3] & Hm1ov6)); +assign HADDRD[2] = (~(O9z6z6 & W9z6z6)); +assign W9z6z6 = (~(V1set6 & Jn1ov6)); +assign O9z6z6 = (Eaz6z6 & Maz6z6); +assign Maz6z6 = (~(Yefnv6 & Hm1ov6)); +assign Yefnv6 = (!I1c8x6); +assign I1c8x6 = (~(Xz7et6 & U28et6)); +assign Eaz6z6 = (~(Fvb7z6[2] & Vm1ov6)); +assign HADDRD[28] = (~(Uaz6z6 & Cbz6z6)); +assign Cbz6z6 = (~(Vkqet6 & Jn1ov6)); +assign Uaz6z6 = (Kbz6z6 & Sbz6z6); +assign Sbz6z6 = (~(Fvb7z6[28] & Vm1ov6)); +assign Kbz6z6 = (~(Cmm7z6[28] & Hm1ov6)); +assign HADDRD[27] = (~(Acz6z6 & Icz6z6)); +assign Icz6z6 = (~(Wmqet6 & Jn1ov6)); +assign Acz6z6 = (Qcz6z6 & Ycz6z6); +assign Ycz6z6 = (~(Fvb7z6[27] & Vm1ov6)); +assign Qcz6z6 = (~(Cmm7z6[27] & Hm1ov6)); +assign HADDRD[26] = (~(Gdz6z6 & Odz6z6)); +assign Odz6z6 = (~(Xoqet6 & Jn1ov6)); +assign Gdz6z6 = (Wdz6z6 & Eez6z6); +assign Eez6z6 = (~(Fvb7z6[26] & Vm1ov6)); +assign Wdz6z6 = (~(Cmm7z6[26] & Hm1ov6)); +assign HADDRD[25] = (~(Mez6z6 & Uez6z6)); +assign Uez6z6 = (~(Yqqet6 & Jn1ov6)); +assign Mez6z6 = (Cfz6z6 & Kfz6z6); +assign Kfz6z6 = (~(Vm1ov6 & Fvb7z6[25])); +assign Cfz6z6 = (~(Hm1ov6 & Cmm7z6[25])); +assign HADDRD[24] = (~(Sfz6z6 & Agz6z6)); +assign Agz6z6 = (~(Zsqet6 & Jn1ov6)); +assign Sfz6z6 = (Igz6z6 & Qgz6z6); +assign Qgz6z6 = (~(Fvb7z6[24] & Vm1ov6)); +assign Igz6z6 = (~(Cmm7z6[24] & Hm1ov6)); +assign HADDRD[23] = (~(Ygz6z6 & Ghz6z6)); +assign Ghz6z6 = (~(Avqet6 & Jn1ov6)); +assign Ygz6z6 = (Ohz6z6 & Whz6z6); +assign Whz6z6 = (~(Fvb7z6[23] & Vm1ov6)); +assign Ohz6z6 = (~(Cmm7z6[23] & Hm1ov6)); +assign HADDRD[22] = (~(Eiz6z6 & Miz6z6)); +assign Miz6z6 = (~(Bxqet6 & Jn1ov6)); +assign Eiz6z6 = (Uiz6z6 & Cjz6z6); +assign Cjz6z6 = (~(Fvb7z6[22] & Vm1ov6)); +assign Uiz6z6 = (~(Cmm7z6[22] & Hm1ov6)); +assign HADDRD[21] = (~(Kjz6z6 & Sjz6z6)); +assign Sjz6z6 = (~(Czqet6 & Jn1ov6)); +assign Kjz6z6 = (Akz6z6 & Ikz6z6); +assign Ikz6z6 = (~(Fvb7z6[21] & Vm1ov6)); +assign Akz6z6 = (~(Cmm7z6[21] & Hm1ov6)); +assign HADDRD[20] = (~(Qkz6z6 & Ykz6z6)); +assign Ykz6z6 = (~(D1ret6 & Jn1ov6)); +assign Qkz6z6 = (Glz6z6 & Olz6z6); +assign Olz6z6 = (~(Fvb7z6[20] & Vm1ov6)); +assign Glz6z6 = (~(Cmm7z6[20] & Hm1ov6)); +assign HADDRD[1] = (~(Wlz6z6 & Emz6z6)); +assign Emz6z6 = (~(W3set6 & Jn1ov6)); +assign Wlz6z6 = (Mmz6z6 & Umz6z6); +assign Umz6z6 = (~(Vm1ov6 & Stpnv6)); +assign Mmz6z6 = (~(Hm1ov6 & Cmm7z6[1])); +assign HADDRD[19] = (~(Cnz6z6 & Knz6z6)); +assign Knz6z6 = (~(E3ret6 & Jn1ov6)); +assign Cnz6z6 = (Snz6z6 & Aoz6z6); +assign Aoz6z6 = (~(Fvb7z6[19] & Vm1ov6)); +assign Snz6z6 = (~(Cmm7z6[19] & Hm1ov6)); +assign HADDRD[18] = (~(Ioz6z6 & Qoz6z6)); +assign Qoz6z6 = (~(F5ret6 & Jn1ov6)); +assign Ioz6z6 = (Yoz6z6 & Gpz6z6); +assign Gpz6z6 = (~(Fvb7z6[18] & Vm1ov6)); +assign Yoz6z6 = (~(Cmm7z6[18] & Hm1ov6)); +assign HADDRD[17] = (~(Opz6z6 & Wpz6z6)); +assign Wpz6z6 = (~(G7ret6 & Jn1ov6)); +assign Opz6z6 = (Eqz6z6 & Mqz6z6); +assign Mqz6z6 = (~(Fvb7z6[17] & Vm1ov6)); +assign Eqz6z6 = (~(Cmm7z6[17] & Hm1ov6)); +assign HADDRD[16] = (~(Uqz6z6 & Crz6z6)); +assign Crz6z6 = (~(H9ret6 & Jn1ov6)); +assign Uqz6z6 = (Krz6z6 & Srz6z6); +assign Srz6z6 = (~(Fvb7z6[16] & Vm1ov6)); +assign Krz6z6 = (~(Cmm7z6[16] & Hm1ov6)); +assign HADDRD[15] = (~(Asz6z6 & Isz6z6)); +assign Isz6z6 = (~(Ibret6 & Jn1ov6)); +assign Asz6z6 = (Qsz6z6 & Ysz6z6); +assign Ysz6z6 = (~(Fvb7z6[15] & Vm1ov6)); +assign Qsz6z6 = (~(Cmm7z6[15] & Hm1ov6)); +assign HADDRD[14] = (~(Gtz6z6 & Otz6z6)); +assign Otz6z6 = (~(Jdret6 & Jn1ov6)); +assign Gtz6z6 = (Wtz6z6 & Euz6z6); +assign Euz6z6 = (~(Fvb7z6[14] & Vm1ov6)); +assign Wtz6z6 = (~(Cmm7z6[14] & Hm1ov6)); +assign HADDRD[13] = (~(Muz6z6 & Uuz6z6)); +assign Uuz6z6 = (~(Kfret6 & Jn1ov6)); +assign Muz6z6 = (Cvz6z6 & Kvz6z6); +assign Kvz6z6 = (~(Fvb7z6[13] & Vm1ov6)); +assign Cvz6z6 = (~(Cmm7z6[13] & Hm1ov6)); +assign HADDRD[12] = (~(Svz6z6 & Awz6z6)); +assign Awz6z6 = (~(Lhret6 & Jn1ov6)); +assign Svz6z6 = (Iwz6z6 & Qwz6z6); +assign Qwz6z6 = (~(Fvb7z6[12] & Vm1ov6)); +assign Iwz6z6 = (~(Cmm7z6[12] & Hm1ov6)); +assign HADDRD[11] = (~(Ywz6z6 & Gxz6z6)); +assign Gxz6z6 = (~(Mjret6 & Jn1ov6)); +assign Ywz6z6 = (Oxz6z6 & Wxz6z6); +assign Wxz6z6 = (~(Fvb7z6[11] & Vm1ov6)); +assign Oxz6z6 = (~(Cmm7z6[11] & Hm1ov6)); +assign HADDRD[10] = (~(Eyz6z6 & Myz6z6)); +assign Myz6z6 = (~(Nlret6 & Jn1ov6)); +assign Eyz6z6 = (Uyz6z6 & Czz6z6); +assign Czz6z6 = (~(Fvb7z6[10] & Vm1ov6)); +assign Uyz6z6 = (~(Cmm7z6[10] & Hm1ov6)); +assign HADDRD[0] = (~(Kzz6z6 & Szz6z6)); +assign Szz6z6 = (~(X5set6 & Jn1ov6)); +assign Kzz6z6 = (A007z6 & I007z6); +assign I007z6 = (~(Vm1ov6 & Mbqnv6)); +assign Vm1ov6 = (!V4myx6); +assign V4myx6 = (~(Q007z6 & Y007z6)); +assign Y007z6 = (G107z6 & O107z6); +assign O107z6 = (~(Jn1ov6 | U4zet6)); +assign G107z6 = (W107z6 & E207z6); +assign Q007z6 = (Yx1iw6 & M207z6); +assign M207z6 = (U207z6 & C307z6); +assign U207z6 = (~(K307z6 & S307z6)); +assign S307z6 = (~(A407z6 & I407z6)); +assign I407z6 = (~(Aoyiy6 | Wmoet6)); +assign Aoyiy6 = (Ewyet6 & Kb0jy6); +assign Kb0jy6 = (~(Xvgxx6 | Benyx6)); +assign A407z6 = (Emy6z6 & Q407z6); +assign Q407z6 = (~(Ewyet6 & Qln7z6[1])); +assign Emy6z6 = (~(Ekoet6 | Y407z6)); +assign Y407z6 = (Q086z6 & G507z6); +assign G507z6 = (~(O507z6 & Ikw6z6)); +assign Ikw6z6 = (U6y5z6 & Tbqnv6); +assign U6y5z6 = (!Xnnet6); +assign O507z6 = (W507z6 & Ag0jy6); +assign Ag0jy6 = (~(E607z6 & P6u6x6)); +assign P6u6x6 = (M607z6 & A9gxx6); +assign A9gxx6 = (Benyx6 & Rxixx6); +assign Benyx6 = (!Znn7z6[0]); +assign M607z6 = (~(Eq0jy6 | U607z6)); +assign Eq0jy6 = (!Qakiw6); +assign Qakiw6 = (Vugxx6 & Xvgxx6); +assign E607z6 = (C707z6 & Knh7v6); +assign C707z6 = (Dkm7z6[0] | Dkm7z6[1]); +assign W507z6 = (I086z6 | U607z6); +assign I086z6 = (~(Wcmov6 & K707z6)); +assign Yx1iw6 = (~(K7giy6 | Kjy6z6)); +assign Kjy6z6 = (S707z6 | Fvb7z6[29]); +assign S707z6 = (Fvb7z6[30] | Fvb7z6[31]); +assign K7giy6 = (!K4bdt6); +assign A007z6 = (~(Hm1ov6 & Cmm7z6[0])); +assign GATEHCLK = (A807z6 & I807z6); +assign I807z6 = (~(ISOLATEn & Bq5yx6)); +assign Bq5yx6 = (!Bnhiw6); +assign Bnhiw6 = (SLEEPING | Gwj8v6); +assign SLEEPING = (Q807z6 & Y807z6); +assign Q807z6 = (~(Crcdt6 | Ztcdt6)); +assign A807z6 = (T1zhw6 & D9h7v6); +assign T1zhw6 = (!Kr97z6); +assign EXREQS = (~(G907z6 & O907z6)); +assign O907z6 = (~(J0jxx6 & W907z6)); +assign W907z6 = (~(Ea07z6 & Ma07z6)); +assign Ma07z6 = (~(Ua07z6 & Ozadt6)); +assign Ea07z6 = (~(H7nyx6 & E1uet6)); +assign H7nyx6 = (!Luixx6); +assign Luixx6 = (~(Q0j6z6 & Qo8iy6)); +assign Q0j6z6 = (Znn7z6[0] & Rxixx6); +assign G907z6 = (~(Cyphw6 & Rj9ov6)); +assign Rj9ov6 = (~(Kfy6z6 | J0jxx6)); +assign J0jxx6 = (!Uaonv6); +assign Uaonv6 = (~(Cb07z6 & U2v5z6)); +assign U2v5z6 = (Kb07z6 & Qln7z6[1]); +assign Kb07z6 = (Znn7z6[0] & Sb07z6); +assign Sb07z6 = (~(Ac07z6 & Cakiw6)); +assign Ac07z6 = (Rxixx6 ? Xvgxx6 : Znn7z6[2]); +assign Cb07z6 = (Ic07z6 & Qky6z6); +assign Ic07z6 = (~(Kyn7z6[0] & Gazet6)); +assign Kfy6z6 = (~(Sjwiy6 & Wcmov6)); +assign Sjwiy6 = (Qc07z6 & Yc07z6); +assign Yc07z6 = (Gd07z6 & Lxjiw6); +assign Lxjiw6 = (Lgonv6 & Szphw6); +assign Szphw6 = (!Ysdiw6); +assign Lgonv6 = (~(Od07z6 & Wd07z6)); +assign Wd07z6 = (Ee07z6 & Me07z6); +assign Me07z6 = (Ue07z6 & V0hnv6); +assign Ue07z6 = (O0hnv6 & H0hnv6); +assign Ee07z6 = (Cf07z6 & Q1hnv6); +assign Q1hnv6 = (!Cmm7z6[23]); +assign Cf07z6 = (J1hnv6 & C1hnv6); +assign C1hnv6 = (!Cmm7z6[25]); +assign J1hnv6 = (!Cmm7z6[24]); +assign Od07z6 = (Kf07z6 & Sf07z6); +assign Sf07z6 = (Ag07z6 & L2hnv6); +assign L2hnv6 = (!Cmm7z6[20]); +assign Ag07z6 = (E2hnv6 & X1hnv6); +assign X1hnv6 = (!Cmm7z6[22]); +assign E2hnv6 = (!Cmm7z6[21]); +assign Kf07z6 = (~(Rygnv6 | Ig07z6)); +assign Gd07z6 = (Dhnyx6 & Qky6z6); +assign Dhnyx6 = (~(Qg07z6 & Qo8iy6)); +assign Qo8iy6 = (~(Vugxx6 | Xvgxx6)); +assign Qg07z6 = (Znn7z6[1] & Znn7z6[0]); +assign Qc07z6 = (Yg07z6 & Cryiy6); +assign Cryiy6 = (Y497z6 & Gh07z6); +assign Gh07z6 = (W186z6 | Tbqnv6); +assign Tbqnv6 = (!Styet6); +assign W186z6 = (!Qln7z6[0]); +assign Yg07z6 = (Oh07z6 & Wh07z6); +assign Wh07z6 = (~(Kyn7z6[2] & Gazet6)); +assign EXREQD = (Cyphw6 & Hm1ov6); +assign Hm1ov6 = (!Jfonv6); +assign Jfonv6 = (C307z6 | Jn1ov6); +assign Jn1ov6 = (!Ibonv6); +assign Ibonv6 = (~(Ei07z6 & Mi07z6)); +assign Mi07z6 = (E207z6 & K307z6); +assign E207z6 = (~(Ysn7z6[0] & N7zet6)); +assign Ei07z6 = (Qln7z6[0] & Djonv6); +assign Djonv6 = (Ozixx6 & Znn7z6[0]); +assign Ozixx6 = (~(Xvgxx6 | Znn7z6[2])); +assign C307z6 = (~(Wcmov6 & Whwiy6)); +assign Whwiy6 = (Ui07z6 & Cj07z6); +assign Cj07z6 = (Kj07z6 & Sj07z6); +assign Sj07z6 = (~(Qboet6 | U4zet6)); +assign Kj07z6 = (Uqyiy6 & K307z6); +assign Uqyiy6 = (~(Qln7z6[1] & Styet6)); +assign Ui07z6 = (Ak07z6 & Ysdiw6); +assign Ysdiw6 = (Ohm6z6 & Rygnv6); +assign Ak07z6 = (Oh07z6 & W107z6); +assign W107z6 = (~(Ysn7z6[2] & N7zet6)); +assign Oh07z6 = (Ik07z6 & Qk07z6); +assign Qk07z6 = (~(Bzjiw6 | U8oet6)); +assign Bzjiw6 = (Yk07z6 & Y0m6z6); +assign Y0m6z6 = (Cakiw6 & Gl07z6); +assign Gl07z6 = (~(Rxixx6 & Xvgxx6)); +assign Rxixx6 = (!Znn7z6[1]); +assign Cakiw6 = (Vugxx6 | Znn7z6[3]); +assign Vugxx6 = (!Znn7z6[2]); +assign Yk07z6 = (Styet6 & Znn7z6[0]); +assign Ik07z6 = (Kryiy6 & Ol07z6); +assign Ol07z6 = (~(K707z6 & Wl07z6)); +assign Wl07z6 = (Em07z6 | U607z6); +assign U607z6 = (Mm07z6 & Q086z6); +assign Q086z6 = (~(Go9ov6 & E2ziy6)); +assign E2ziy6 = (~(Um07z6 & Cn07z6)); +assign Cn07z6 = (~(Kn07z6 | Fvb7z6[27])); +assign Kn07z6 = (Fvb7z6[28] | Fvb7z6[31]); +assign Um07z6 = (Sn07z6 & Fvb7z6[25]); +assign Sn07z6 = (Ao07z6 & Ghy6z6); +assign Ghy6z6 = (!Fvb7z6[26]); +assign Ao07z6 = (Fvb7z6[30] ^ Fvb7z6[29]); +assign Go9ov6 = (Jvdiw6 & Sbm6z6); +assign Sbm6z6 = (!Zwdiw6); +assign Zwdiw6 = (~(Io07z6 & Qo07z6)); +assign Qo07z6 = (~(Hub7z6[0] & Mbqnv6)); +assign Io07z6 = (~(Yo07z6 & Stpnv6)); +assign Jvdiw6 = (~(Yo07z6 | Gp07z6)); +assign Gp07z6 = (!Rzdiw6); +assign Rzdiw6 = (~(Op07z6 & Hub7z6[1])); +assign Op07z6 = (Stpnv6 & Wp07z6); +assign Stpnv6 = (~(Xie7x6 | A6wnv6)); +assign Xie7x6 = (!Ugo7z6[1]); +assign Yo07z6 = (Mbqnv6 & Hub7z6[1]); +assign Mbqnv6 = (!Wp07z6); +assign Wp07z6 = (Qie7x6 | A6wnv6); +assign A6wnv6 = (~(Ejo7z6[1] & C7wnv6)); +assign C7wnv6 = (!Ejo7z6[0]); +assign Qie7x6 = (!Ugo7z6[0]); +assign Mm07z6 = (~(Qky6z6 & K307z6)); +assign K307z6 = (~(N7zet6 & Ysn7z6[1])); +assign Qky6z6 = (~(Gazet6 & Kyn7z6[1])); +assign Em07z6 = (Xnnet6 | Ewyet6); +assign K707z6 = (~(Zblov6 & Sgonv6)); +assign Sgonv6 = (~(Eq07z6 & Mq07z6)); +assign Mq07z6 = (Uq07z6 & Cr07z6); +assign Cr07z6 = (H0hnv6 & Rygnv6); +assign Rygnv6 = (!Cmm7z6[31]); +assign H0hnv6 = (!Cmm7z6[28]); +assign Uq07z6 = (V0hnv6 & O0hnv6); +assign O0hnv6 = (!Cmm7z6[27]); +assign V0hnv6 = (!Cmm7z6[26]); +assign Eq07z6 = (Kr07z6 & Cmm7z6[25]); +assign Kr07z6 = (Ig07z6 & Iom6z6); +assign Iom6z6 = (!Ohm6z6); +assign Ohm6z6 = (A0hnv6 & Yygnv6); +assign Yygnv6 = (!Cmm7z6[30]); +assign A0hnv6 = (!Cmm7z6[29]); +assign Ig07z6 = (~(Cmm7z6[30] & Cmm7z6[29])); +assign Zblov6 = (Srhiy6 & Nxdiw6); +assign Nxdiw6 = (~(Cmm7z6[0] & Sr07z6)); +assign Sr07z6 = (~(Ta4iw6 & As07z6)); +assign Ta4iw6 = (~(I0c7z6[0] & Is07z6)); +assign Srhiy6 = (!Qvdiw6); +assign Qvdiw6 = (~(As07z6 & Qs07z6)); +assign Qs07z6 = (~(Cmm7z6[0] & Anehw6)); +assign As07z6 = (!Mam6z6); +assign Mam6z6 = (Cmm7z6[1] & Anehw6); +assign Anehw6 = (~(Ys07z6 & Gt07z6)); +assign Gt07z6 = (Ot07z6 & Wt07z6); +assign Wt07z6 = (Eu07z6 & Kfoiy6); +assign Kfoiy6 = (~(Beyxx6 & Dwb7z6[1])); +assign Eu07z6 = (Srknv6 & Z2yxx6); +assign Z2yxx6 = (!Uakiy6); +assign Srknv6 = (!Hulov6); +assign Ot07z6 = (Cfv6z6 & Vcyxx6); +assign Cfv6z6 = (~(Mu07z6 & Ytlnv6)); +assign Mu07z6 = (Kioov6 & Sna7x6); +assign Ys07z6 = (Uu07z6 & Cv07z6); +assign Cv07z6 = (Kv07z6 & Inphw6); +assign Inphw6 = (~(Sv07z6 & Vqihw6)); +assign Sv07z6 = (Dwb7z6[4] & Dwb7z6[2]); +assign Kv07z6 = (Aw07z6 & Iw07z6); +assign Iw07z6 = (~(Qw07z6 & Eekiy6)); +assign Qw07z6 = (Gonov6 & Dwb7z6[2]); +assign Aw07z6 = (~(I0c7z6[1] & Is07z6)); +assign Is07z6 = (~(Ygv6z6 & Yw07z6)); +assign Yw07z6 = (~(Gx07z6 & Doihw6)); +assign Gx07z6 = (Ox07z6 & Zna7x6); +assign Ox07z6 = (Uvvnv6 ^ Bwvnv6); +assign Ygv6z6 = (Oxpiy6 & Wx07z6); +assign Wx07z6 = (~(S2a7x6 & C7jxx6)); +assign Oxpiy6 = (~(Ey07z6 & Ywaov6)); +assign Ey07z6 = (Fulnv6 & C7jxx6); +assign Uu07z6 = (My07z6 & Kfv6z6); +assign Kfv6z6 = (~(G5kiy6 & Luvnv6)); +assign My07z6 = (~(Tiphw6 & Mpihw6)); +assign Tiphw6 = (~(Gvvnv6 | Uvvnv6)); +assign Kryiy6 = (~(Ua07z6 | Hryet6)); +assign Ua07z6 = (!Lblov6); +assign Lblov6 = (Jinyx6 | Znn7z6[2]); +assign Jinyx6 = (~(Uy07z6 & Znn7z6[1])); +assign Uy07z6 = (Znn7z6[0] & Xvgxx6); +assign Xvgxx6 = (!Znn7z6[3]); +assign Wcmov6 = (~(Nsr7x6 | K6adt6)); +assign Nsr7x6 = (!Vb4iw6); +assign Vb4iw6 = (~(Cz07z6 & Kz07z6)); +assign Kz07z6 = (Sz07z6 & A017z6); +assign A017z6 = (Vcyxx6 & Fsxxx6); +assign Fsxxx6 = (!H7wxx6); +assign H7wxx6 = (Fulnv6 & G5kiy6); +assign Vcyxx6 = (~(I017z6 & K3jnv6)); +assign I017z6 = (~(Xxknv6 | Tnzdt6)); +assign Xxknv6 = (~(Ywaov6 & Kioov6)); +assign Sz07z6 = (Iwjiy6 & Q017z6); +assign Q017z6 = (~(Y017z6 & Eekiy6)); +assign Eekiy6 = (Bhoov6 & Fulnv6); +assign Y017z6 = (Dwb7z6[2] & Rgo7v6); +assign Rgo7v6 = (~(Venov6 | Aiadt6)); +assign Venov6 = (!Gonov6); +assign Gonov6 = (~(Tnzdt6 | Kkadt6)); +assign Iwjiy6 = (Eminv6 | Cubdt6); +assign Eminv6 = (~(U6hiy6 & Kioov6)); +assign Cz07z6 = (G117z6 & O117z6); +assign O117z6 = (W117z6 & E217z6); +assign E217z6 = (~(M217z6 & Lxydt6)); +assign M217z6 = (~(U217z6 & C317z6)); +assign C317z6 = (K317z6 & S317z6); +assign S317z6 = (~(A417z6 & Vglhw6)); +assign Vglhw6 = (~(Iqmov6 & Mulnv6)); +assign Mulnv6 = (!Pi9ov6); +assign Pi9ov6 = (Ltvxx6 & Dwb7z6[1]); +assign Iqmov6 = (Gha7x6 | Mpihw6); +assign Mpihw6 = (!Fulnv6); +assign Gha7x6 = (!Rb9iw6); +assign Rb9iw6 = (Ywaov6 & Ytlnv6); +assign Ywaov6 = (~(Gvvnv6 | Sna7x6)); +assign A417z6 = (~(I417z6 & Bi9ov6)); +assign I417z6 = (Ii9ov6 & F5jxx6); +assign F5jxx6 = (!S7xdt6); +assign Ii9ov6 = (!Zzihw6); +assign Zzihw6 = (Ecc7z6[6] & Pbadt6); +assign K317z6 = (~(Dihhw6 | Hulov6)); +assign Dihhw6 = (Uakiy6 & Fxaov6); +assign U217z6 = (P3yxx6 & Q417z6); +assign Q417z6 = (~(Ruxxx6 & Kioov6)); +assign P3yxx6 = (Ojphw6 & Rja7x6); +assign Rja7x6 = (~(Cwlnv6 | U2wnv6)); +assign U2wnv6 = (Sv97x6 & Dwb7z6[2]); +assign Sv97x6 = (!Tulnv6); +assign Tulnv6 = (~(Y417z6 & Doihw6)); +assign Y417z6 = (Fxaov6 & Uvvnv6); +assign Cwlnv6 = (S2a7x6 & Xfa7x6); +assign S2a7x6 = (~(Xvxxx6 | Euvnv6)); +assign Xvxxx6 = (!Vqihw6); +assign Ojphw6 = (L0bov6 & Eyi6z6); +assign Eyi6z6 = (~(Ltvxx6 & Kioov6)); +assign Ltvxx6 = (Ytlnv6 & Doihw6); +assign L0bov6 = (J1a7x6 | Dwb7z6[5]); +assign J1a7x6 = (~(G517z6 & Dwb7z6[4])); +assign G517z6 = (Kioov6 & Nvvnv6); +assign W117z6 = (~(O517z6 & M43et6)); +assign O517z6 = (K73et6 & Hulov6); +assign Hulov6 = (Ggoov6 & Fulnv6); +assign Ggoov6 = (Bhoov6 & Ytlnv6); +assign Bhoov6 = (~(Sna7x6 | Dwb7z6[4])); +assign G117z6 = (A8k6z6 & G9k6z6); +assign G9k6z6 = (T1yxx6 | Iga7z6); +assign T1yxx6 = (~(Wxi6z6 | Rioov6)); +assign Rioov6 = (!Yihhw6); +assign Yihhw6 = (Ajphw6 | Dwb7z6[3]); +assign Ajphw6 = (~(Fxaov6 & Beyxx6)); +assign Beyxx6 = (~(Pnxxx6 | Dwb7z6[2])); +assign Wxi6z6 = (W517z6 & Vqihw6); +assign W517z6 = (Dioov6 & Dwb7z6[4]); +assign A8k6z6 = (E617z6 & M617z6); +assign M617z6 = (~(U617z6 & Bfo7v6)); +assign U617z6 = (~(M6hiy6 & Qsaov6)); +assign Qsaov6 = (~(U6hiy6 & Vqihw6)); +assign U6hiy6 = (~(Mmriy6 | Pnxxx6)); +assign Pnxxx6 = (!Lpwxx6); +assign Lpwxx6 = (Dwb7z6[4] & Sna7x6); +assign Mmriy6 = (!Ytlnv6); +assign Ytlnv6 = (C7jxx6 & Uvvnv6); +assign M6hiy6 = (~(Uakiy6 & Fulnv6)); +assign E617z6 = (C717z6 & K717z6); +assign K717z6 = (~(S717z6 & Sj77z6)); +assign S717z6 = (~(Vovxx6 | Twphw6)); +assign Twphw6 = (!Clhhw6); +assign Clhhw6 = (Ruxxx6 & Fulnv6); +assign Fulnv6 = (Luvnv6 & Bwvnv6); +assign Ruxxx6 = (~(Euvnv6 | Isjiy6)); +assign Euvnv6 = (!Doihw6); +assign Vovxx6 = (!Lsphw6); +assign Lsphw6 = (Lxydt6 & Hjihw6); +assign Hjihw6 = (!Wfxdt6); +assign C717z6 = (~(A817z6 & Lxydt6)); +assign Lxydt6 = (Bfo7v6 & Qg2nv6); +assign Bfo7v6 = (!Iga7z6); +assign Iga7z6 = (~(I817z6 & Tr8iw6)); +assign Tr8iw6 = (~(Ez2et6 & I2jnv6)); +assign I2jnv6 = (!U1jnv6); +assign U1jnv6 = (~(Q817z6 & Y817z6)); +assign Y817z6 = (G917z6 | Tfh7z6[1]); +assign G917z6 = (Tfh7z6[0] & Cmm7z6[0]); +assign Q817z6 = (~(D94iw6 & Xc4iw6)); +assign Xc4iw6 = (!Cmm7z6[1]); +assign D94iw6 = (!Cmm7z6[0]); +assign I817z6 = (Ijmov6 & Ftlov6); +assign Ftlov6 = (!M43et6); +assign Ijmov6 = (!Uebdt6); +assign A817z6 = (~(O917z6 & W917z6)); +assign W917z6 = (Ea17z6 & X3yxx6); +assign X3yxx6 = (~(Fxaov6 & G5kiy6)); +assign G5kiy6 = (~(Sna7x6 | Isjiy6)); +assign Isjiy6 = (!Nvvnv6); +assign Ea17z6 = (~(B2yxx6 | Ot97x6)); +assign Ot97x6 = (Vqihw6 & Mahiy6); +assign Mahiy6 = (Doihw6 & Dioov6); +assign Dioov6 = (Dwb7z6[2] & Uvvnv6); +assign Uvvnv6 = (!Dwb7z6[3]); +assign Doihw6 = (Gvvnv6 & Sna7x6); +assign Sna7x6 = (!Dwb7z6[5]); +assign Gvvnv6 = (!Dwb7z6[4]); +assign B2yxx6 = (Dophw6 & Fxaov6); +assign Fxaov6 = (Dwb7z6[1] & Luvnv6); +assign Luvnv6 = (!Dwb7z6[0]); +assign Dophw6 = (Dwb7z6[4] & Nvvnv6); +assign Nvvnv6 = (Dwb7z6[3] & Dwb7z6[2]); +assign O917z6 = (Ma17z6 & Ua17z6); +assign Ua17z6 = (~(Rmwxx6 & Dwb7z6[4])); +assign Rmwxx6 = (~(Zna7x6 | Bqvxx6)); +assign Bqvxx6 = (!Kioov6); +assign Kioov6 = (Dwb7z6[0] & Bwvnv6); +assign Bwvnv6 = (!Dwb7z6[1]); +assign Zna7x6 = (!Xfa7x6); +assign Ma17z6 = (~(Uakiy6 & Vqihw6)); +assign Vqihw6 = (Dwb7z6[1] & Dwb7z6[0]); +assign Uakiy6 = (Xfa7x6 & Dwb7z6[4]); +assign Xfa7x6 = (Dwb7z6[3] & C7jxx6); +assign C7jxx6 = (!Dwb7z6[2]); +assign Cyphw6 = (Cb17z6 & Tlmov6); +assign Tlmov6 = (~(Oe2et6 | Ldbdt6)); +assign Cb17z6 = (Bi9ov6 & Ldo7v6); +assign Bi9ov6 = (Ecc7z6[13] & Pbadt6); +assign ETMINTNUM[8] = (Glh7v6 & Nob7z6[8]); +assign ETMINTNUM[7] = (Glh7v6 & Nob7z6[7]); +assign ETMINTNUM[6] = (Glh7v6 ? Nob7z6[6] : P2j7z6[6]); +assign ETMINTNUM[5] = (Glh7v6 ? Nob7z6[5] : P2j7z6[5]); +assign ETMINTNUM[4] = (Glh7v6 ? Nob7z6[4] : P2j7z6[4]); +assign ETMINTNUM[3] = (Glh7v6 ? Nob7z6[3] : P2j7z6[3]); +assign ETMINTNUM[2] = (Glh7v6 ? Nob7z6[2] : P2j7z6[2]); +assign ETMINTNUM[1] = (Glh7v6 ? Nob7z6[1] : P2j7z6[1]); +assign ETMINTNUM[0] = (Glh7v6 ? Nob7z6[0] : P2j7z6[0]); +assign CURRPRI[7] = (~(Kb17z6 & Sb17z6)); +assign Sb17z6 = (Ac17z6 & Ic17z6); +assign Ic17z6 = (~(Sz3jy6 & Qc17z6)); +assign Qc17z6 = (~(Yc17z6 & Gd17z6)); +assign Gd17z6 = (Od17z6 & Wd17z6); +assign Wd17z6 = (Ee17z6 & Me17z6); +assign Me17z6 = (~(Ao2jy6 & Gx08x6)); +assign Gx08x6 = (Ppb7z6[7] | Jm98x6); +assign Jm98x6 = (!J92nv6); +assign Ee17z6 = (~(Ffj7z6[2] & Cshov6)); +assign Od17z6 = (Ue17z6 & Cf17z6); +assign Cf17z6 = (~(Zdj7z6[2] & I2oiw6)); +assign Ue17z6 = (~(Tcj7z6[2] & Rphov6)); +assign Yc17z6 = (Kf17z6 & Sf17z6); +assign Sf17z6 = (Ag17z6 & Ig17z6); +assign Ig17z6 = (~(Gaj7z6[2] & Hzh7x6)); +assign Ag17z6 = (~(Nbj7z6[2] & L1i7x6)); +assign Kf17z6 = (Qg17z6 & Yg17z6); +assign Yg17z6 = (~(Z8j7z6[2] & P3i7x6)); +assign Qg17z6 = (~(T7j7z6[2] & V6i7x6)); +assign Ac17z6 = (Gh17z6 & Oh17z6); +assign Oh17z6 = (~(Wtgjy6 & Wh17z6)); +assign Wh17z6 = (~(Ei17z6 & Mi17z6)); +assign Mi17z6 = (Ui17z6 & Cj17z6); +assign Cj17z6 = (Kj17z6 & Sj17z6); +assign Sj17z6 = (Ak17z6 & Ik17z6); +assign Ik17z6 = (~(Lgj7z6[2] & Ao2jy6)); +assign Ak17z6 = (~(Lgj7z6[5] & Nuniw6)); +assign Kj17z6 = (Qk17z6 & Yk17z6); +assign Yk17z6 = (~(Lgj7z6[8] & Jfmiw6)); +assign Qk17z6 = (~(Lgj7z6[11] & Cn2jy6)); +assign Ui17z6 = (Gl17z6 & Ol17z6); +assign Ol17z6 = (Wl17z6 & Em17z6); +assign Em17z6 = (~(Lgj7z6[14] & Cshov6)); +assign Wl17z6 = (~(Lgj7z6[17] & I2oiw6)); +assign Gl17z6 = (Mm17z6 & Um17z6); +assign Um17z6 = (~(Lgj7z6[20] & Rphov6)); +assign Mm17z6 = (~(Lgj7z6[23] & J6oiw6)); +assign Ei17z6 = (Cn17z6 & Kn17z6); +assign Kn17z6 = (Sn17z6 & Ao17z6); +assign Ao17z6 = (Io17z6 & Qo17z6); +assign Qo17z6 = (~(Lgj7z6[26] & Uy2jy6)); +assign Io17z6 = (~(Lgj7z6[29] & Mbj7x6)); +assign Sn17z6 = (Yo17z6 & Gp17z6); +assign Gp17z6 = (~(Lgj7z6[32] & Nfj7x6)); +assign Yo17z6 = (~(Lgj7z6[35] & Hzh7x6)); +assign Cn17z6 = (Op17z6 & Wp17z6); +assign Wp17z6 = (Eq17z6 & Mq17z6); +assign Mq17z6 = (~(Lgj7z6[38] & L1i7x6)); +assign Eq17z6 = (~(Lgj7z6[41] & Jrj7x6)); +assign Op17z6 = (Uq17z6 & Cr17z6); +assign Cr17z6 = (~(Lgj7z6[44] & P3i7x6)); +assign Uq17z6 = (~(Lgj7z6[47] & V6i7x6)); +assign Gh17z6 = (~(Awcjy6 & Kr17z6)); +assign Kr17z6 = (~(Sr17z6 & As17z6)); +assign As17z6 = (Is17z6 & Qs17z6); +assign Qs17z6 = (Ys17z6 & Gt17z6); +assign Gt17z6 = (Ot17z6 & Wt17z6); +assign Wt17z6 = (~(Lgj7z6[50] & Ao2jy6)); +assign Ot17z6 = (~(Lgj7z6[53] & Nuniw6)); +assign Ys17z6 = (Eu17z6 & Mu17z6); +assign Mu17z6 = (~(Lgj7z6[56] & Jfmiw6)); +assign Eu17z6 = (~(Lgj7z6[59] & Cn2jy6)); +assign Is17z6 = (Uu17z6 & Cv17z6); +assign Cv17z6 = (Kv17z6 & Sv17z6); +assign Sv17z6 = (~(Cshov6 & Lgj7z6[62])); +assign Kv17z6 = (~(I2oiw6 & Lgj7z6[65])); +assign Uu17z6 = (Aw17z6 & Iw17z6); +assign Iw17z6 = (~(Lgj7z6[68] & Rphov6)); +assign Aw17z6 = (~(J6oiw6 & Lgj7z6[71])); +assign Sr17z6 = (Qw17z6 & Yw17z6); +assign Yw17z6 = (Gx17z6 & Ox17z6); +assign Ox17z6 = (Wx17z6 & Ey17z6); +assign Ey17z6 = (~(Lgj7z6[74] & Uy2jy6)); +assign Wx17z6 = (~(Lgj7z6[77] & Mbj7x6)); +assign Gx17z6 = (My17z6 & Uy17z6); +assign Uy17z6 = (~(Lgj7z6[80] & Nfj7x6)); +assign My17z6 = (~(Lgj7z6[83] & Hzh7x6)); +assign Qw17z6 = (Cz17z6 & Kz17z6); +assign Kz17z6 = (Sz17z6 & A027z6); +assign A027z6 = (~(Lgj7z6[86] & L1i7x6)); +assign Sz17z6 = (~(Jrj7x6 & Lgj7z6[89])); +assign Cz17z6 = (I027z6 & Q027z6); +assign Q027z6 = (~(Lgj7z6[92] & P3i7x6)); +assign I027z6 = (~(Lgj7z6[95] & V6i7x6)); +assign Kb17z6 = (Y027z6 & G127z6); +assign G127z6 = (~(Maajy6 & O127z6)); +assign O127z6 = (~(W127z6 & E227z6)); +assign E227z6 = (M227z6 & U227z6); +assign U227z6 = (C327z6 & K327z6); +assign K327z6 = (S327z6 & A427z6); +assign A427z6 = (~(Lgj7z6[98] & Ao2jy6)); +assign S327z6 = (~(Lgj7z6[101] & Nuniw6)); +assign C327z6 = (I427z6 & Q427z6); +assign Q427z6 = (~(Lgj7z6[104] & Jfmiw6)); +assign I427z6 = (~(Lgj7z6[107] & Cn2jy6)); +assign M227z6 = (Y427z6 & G527z6); +assign G527z6 = (O527z6 & W527z6); +assign W527z6 = (~(Lgj7z6[110] & Cshov6)); +assign O527z6 = (~(Lgj7z6[113] & I2oiw6)); +assign Y427z6 = (E627z6 & M627z6); +assign M627z6 = (~(Lgj7z6[116] & Rphov6)); +assign E627z6 = (~(Lgj7z6[119] & J6oiw6)); +assign W127z6 = (U627z6 & C727z6); +assign C727z6 = (K727z6 & S727z6); +assign S727z6 = (A827z6 & I827z6); +assign I827z6 = (~(Lgj7z6[122] & Uy2jy6)); +assign A827z6 = (~(Lgj7z6[125] & Mbj7x6)); +assign K727z6 = (Q827z6 & Y827z6); +assign Y827z6 = (~(Lgj7z6[128] & Nfj7x6)); +assign Q827z6 = (~(Lgj7z6[131] & Hzh7x6)); +assign U627z6 = (G927z6 & O927z6); +assign O927z6 = (W927z6 & Ea27z6); +assign Ea27z6 = (~(Lgj7z6[134] & L1i7x6)); +assign W927z6 = (~(Lgj7z6[137] & Jrj7x6)); +assign G927z6 = (Ma27z6 & Ua27z6); +assign Ua27z6 = (~(Lgj7z6[140] & P3i7x6)); +assign Ma27z6 = (~(Lgj7z6[143] & V6i7x6)); +assign Y027z6 = (~(A87jy6 & Cb27z6)); +assign Cb27z6 = (~(Kb27z6 & Sb27z6)); +assign Sb27z6 = (Ac27z6 & Ic27z6); +assign Ic27z6 = (Qc27z6 & Yc27z6); +assign Yc27z6 = (Gd27z6 & Od27z6); +assign Od27z6 = (~(Lgj7z6[146] & Ao2jy6)); +assign Gd27z6 = (~(Lgj7z6[149] & Nuniw6)); +assign Qc27z6 = (Wd27z6 & Ee27z6); +assign Ee27z6 = (~(Lgj7z6[152] & Jfmiw6)); +assign Wd27z6 = (~(Lgj7z6[155] & Cn2jy6)); +assign Ac27z6 = (Me27z6 & Ue27z6); +assign Ue27z6 = (Cf27z6 & Kf27z6); +assign Kf27z6 = (~(Lgj7z6[158] & Cshov6)); +assign Cf27z6 = (~(Lgj7z6[161] & I2oiw6)); +assign Me27z6 = (Sf27z6 & Ag27z6); +assign Ag27z6 = (~(Lgj7z6[164] & Rphov6)); +assign Sf27z6 = (~(Lgj7z6[167] & J6oiw6)); +assign Kb27z6 = (Ig27z6 & Qg27z6); +assign Qg27z6 = (Yg27z6 & Gh27z6); +assign Gh27z6 = (Oh27z6 & Wh27z6); +assign Wh27z6 = (~(Lgj7z6[170] & Uy2jy6)); +assign Oh27z6 = (~(Lgj7z6[173] & Mbj7x6)); +assign Yg27z6 = (Ei27z6 & Mi27z6); +assign Mi27z6 = (~(Lgj7z6[176] & Nfj7x6)); +assign Ei27z6 = (~(Lgj7z6[179] & Hzh7x6)); +assign Ig27z6 = (Ui27z6 & Cj27z6); +assign Cj27z6 = (Kj27z6 & Sj27z6); +assign Sj27z6 = (~(Lgj7z6[182] & L1i7x6)); +assign Kj27z6 = (~(Lgj7z6[185] & Jrj7x6)); +assign Ui27z6 = (Ak27z6 & Ik27z6); +assign Ik27z6 = (~(Lgj7z6[188] & P3i7x6)); +assign Ak27z6 = (~(Lgj7z6[191] & V6i7x6)); +assign CURRPRI[6] = (~(Qk27z6 & Yk27z6)); +assign Yk27z6 = (Gl27z6 & Ol27z6); +assign Ol27z6 = (~(Sz3jy6 & Wl27z6)); +assign Wl27z6 = (~(Em27z6 & Mm27z6)); +assign Mm27z6 = (Um27z6 & Cn27z6); +assign Cn27z6 = (Kn27z6 & Sn27z6); +assign Sn27z6 = (Rqmiw6 | Xg18x6); +assign Xg18x6 = (I8oiy6 & J92nv6); +assign I8oiy6 = (!Ppb7z6[6]); +assign Kn27z6 = (~(Ffj7z6[1] & Cshov6)); +assign Um27z6 = (Ao27z6 & Io27z6); +assign Io27z6 = (~(Zdj7z6[1] & I2oiw6)); +assign Ao27z6 = (~(Tcj7z6[1] & Rphov6)); +assign Em27z6 = (Qo27z6 & Yo27z6); +assign Yo27z6 = (Gp27z6 & Op27z6); +assign Op27z6 = (~(Gaj7z6[1] & Hzh7x6)); +assign Gp27z6 = (~(Nbj7z6[1] & L1i7x6)); +assign Qo27z6 = (Wp27z6 & Eq27z6); +assign Eq27z6 = (~(Z8j7z6[1] & P3i7x6)); +assign Wp27z6 = (~(T7j7z6[1] & V6i7x6)); +assign Gl27z6 = (Mq27z6 & Uq27z6); +assign Uq27z6 = (~(Wtgjy6 & Cr27z6)); +assign Cr27z6 = (~(Kr27z6 & Sr27z6)); +assign Sr27z6 = (As27z6 & Is27z6); +assign Is27z6 = (Qs27z6 & Ys27z6); +assign Ys27z6 = (Gt27z6 & Ot27z6); +assign Ot27z6 = (~(Lgj7z6[1] & Ao2jy6)); +assign Gt27z6 = (~(Lgj7z6[4] & Nuniw6)); +assign Qs27z6 = (Wt27z6 & Eu27z6); +assign Eu27z6 = (~(Lgj7z6[7] & Jfmiw6)); +assign Wt27z6 = (~(Lgj7z6[10] & Cn2jy6)); +assign As27z6 = (Mu27z6 & Uu27z6); +assign Uu27z6 = (Cv27z6 & Kv27z6); +assign Kv27z6 = (~(Lgj7z6[13] & Cshov6)); +assign Cv27z6 = (~(Lgj7z6[16] & I2oiw6)); +assign Mu27z6 = (Sv27z6 & Aw27z6); +assign Aw27z6 = (~(Lgj7z6[19] & Rphov6)); +assign Sv27z6 = (~(Lgj7z6[22] & J6oiw6)); +assign Kr27z6 = (Iw27z6 & Qw27z6); +assign Qw27z6 = (Yw27z6 & Gx27z6); +assign Gx27z6 = (Ox27z6 & Wx27z6); +assign Wx27z6 = (~(Lgj7z6[25] & Uy2jy6)); +assign Ox27z6 = (~(Lgj7z6[28] & Mbj7x6)); +assign Yw27z6 = (Ey27z6 & My27z6); +assign My27z6 = (~(Lgj7z6[31] & Nfj7x6)); +assign Ey27z6 = (~(Lgj7z6[34] & Hzh7x6)); +assign Iw27z6 = (Uy27z6 & Cz27z6); +assign Cz27z6 = (Kz27z6 & Sz27z6); +assign Sz27z6 = (~(Lgj7z6[37] & L1i7x6)); +assign Kz27z6 = (~(Lgj7z6[40] & Jrj7x6)); +assign Uy27z6 = (A037z6 & I037z6); +assign I037z6 = (~(Lgj7z6[43] & P3i7x6)); +assign A037z6 = (~(Lgj7z6[46] & V6i7x6)); +assign Mq27z6 = (~(Awcjy6 & Q037z6)); +assign Q037z6 = (~(Y037z6 & G137z6)); +assign G137z6 = (O137z6 & W137z6); +assign W137z6 = (E237z6 & M237z6); +assign M237z6 = (U237z6 & C337z6); +assign C337z6 = (~(Lgj7z6[49] & Ao2jy6)); +assign U237z6 = (~(Lgj7z6[52] & Nuniw6)); +assign E237z6 = (K337z6 & S337z6); +assign S337z6 = (~(Lgj7z6[55] & Jfmiw6)); +assign K337z6 = (~(Lgj7z6[58] & Cn2jy6)); +assign O137z6 = (A437z6 & I437z6); +assign I437z6 = (Q437z6 & Y437z6); +assign Y437z6 = (~(Cshov6 & Lgj7z6[61])); +assign Q437z6 = (~(I2oiw6 & Lgj7z6[64])); +assign A437z6 = (G537z6 & O537z6); +assign O537z6 = (~(Lgj7z6[67] & Rphov6)); +assign G537z6 = (~(J6oiw6 & Lgj7z6[70])); +assign Y037z6 = (W537z6 & E637z6); +assign E637z6 = (M637z6 & U637z6); +assign U637z6 = (C737z6 & K737z6); +assign K737z6 = (~(Lgj7z6[73] & Uy2jy6)); +assign C737z6 = (~(Lgj7z6[76] & Mbj7x6)); +assign M637z6 = (S737z6 & A837z6); +assign A837z6 = (~(Lgj7z6[79] & Nfj7x6)); +assign S737z6 = (~(Lgj7z6[82] & Hzh7x6)); +assign W537z6 = (I837z6 & Q837z6); +assign Q837z6 = (Y837z6 & G937z6); +assign G937z6 = (~(Lgj7z6[85] & L1i7x6)); +assign Y837z6 = (~(Jrj7x6 & Lgj7z6[88])); +assign I837z6 = (O937z6 & W937z6); +assign W937z6 = (~(Lgj7z6[91] & P3i7x6)); +assign O937z6 = (~(Lgj7z6[94] & V6i7x6)); +assign Qk27z6 = (Ea37z6 & Ma37z6); +assign Ma37z6 = (~(Maajy6 & Ua37z6)); +assign Ua37z6 = (~(Cb37z6 & Kb37z6)); +assign Kb37z6 = (Sb37z6 & Ac37z6); +assign Ac37z6 = (Ic37z6 & Qc37z6); +assign Qc37z6 = (Yc37z6 & Gd37z6); +assign Gd37z6 = (~(Lgj7z6[97] & Ao2jy6)); +assign Yc37z6 = (~(Lgj7z6[100] & Nuniw6)); +assign Ic37z6 = (Od37z6 & Wd37z6); +assign Wd37z6 = (~(Lgj7z6[103] & Jfmiw6)); +assign Od37z6 = (~(Lgj7z6[106] & Cn2jy6)); +assign Sb37z6 = (Ee37z6 & Me37z6); +assign Me37z6 = (Ue37z6 & Cf37z6); +assign Cf37z6 = (~(Lgj7z6[109] & Cshov6)); +assign Ue37z6 = (~(Lgj7z6[112] & I2oiw6)); +assign Ee37z6 = (Kf37z6 & Sf37z6); +assign Sf37z6 = (~(Lgj7z6[115] & Rphov6)); +assign Kf37z6 = (~(Lgj7z6[118] & J6oiw6)); +assign Cb37z6 = (Ag37z6 & Ig37z6); +assign Ig37z6 = (Qg37z6 & Yg37z6); +assign Yg37z6 = (Gh37z6 & Oh37z6); +assign Oh37z6 = (~(Lgj7z6[121] & Uy2jy6)); +assign Gh37z6 = (~(Lgj7z6[124] & Mbj7x6)); +assign Qg37z6 = (Wh37z6 & Ei37z6); +assign Ei37z6 = (~(Lgj7z6[127] & Nfj7x6)); +assign Wh37z6 = (~(Lgj7z6[130] & Hzh7x6)); +assign Ag37z6 = (Mi37z6 & Ui37z6); +assign Ui37z6 = (Cj37z6 & Kj37z6); +assign Kj37z6 = (~(Lgj7z6[133] & L1i7x6)); +assign Cj37z6 = (~(Lgj7z6[136] & Jrj7x6)); +assign Mi37z6 = (Sj37z6 & Ak37z6); +assign Ak37z6 = (~(Lgj7z6[139] & P3i7x6)); +assign Sj37z6 = (~(Lgj7z6[142] & V6i7x6)); +assign Ea37z6 = (~(A87jy6 & Ik37z6)); +assign Ik37z6 = (~(Qk37z6 & Yk37z6)); +assign Yk37z6 = (Gl37z6 & Ol37z6); +assign Ol37z6 = (Wl37z6 & Em37z6); +assign Em37z6 = (Mm37z6 & Um37z6); +assign Um37z6 = (~(Lgj7z6[145] & Ao2jy6)); +assign Mm37z6 = (~(Lgj7z6[148] & Nuniw6)); +assign Wl37z6 = (Cn37z6 & Kn37z6); +assign Kn37z6 = (~(Lgj7z6[151] & Jfmiw6)); +assign Cn37z6 = (~(Lgj7z6[154] & Cn2jy6)); +assign Gl37z6 = (Sn37z6 & Ao37z6); +assign Ao37z6 = (Io37z6 & Qo37z6); +assign Qo37z6 = (~(Lgj7z6[157] & Cshov6)); +assign Io37z6 = (~(Lgj7z6[160] & I2oiw6)); +assign Sn37z6 = (Yo37z6 & Gp37z6); +assign Gp37z6 = (~(Lgj7z6[163] & Rphov6)); +assign Yo37z6 = (~(Lgj7z6[166] & J6oiw6)); +assign Qk37z6 = (Op37z6 & Wp37z6); +assign Wp37z6 = (Eq37z6 & Mq37z6); +assign Mq37z6 = (Uq37z6 & Cr37z6); +assign Cr37z6 = (~(Lgj7z6[169] & Uy2jy6)); +assign Uq37z6 = (~(Lgj7z6[172] & Mbj7x6)); +assign Eq37z6 = (Kr37z6 & Sr37z6); +assign Sr37z6 = (~(Lgj7z6[175] & Nfj7x6)); +assign Kr37z6 = (~(Lgj7z6[178] & Hzh7x6)); +assign Op37z6 = (As37z6 & Is37z6); +assign Is37z6 = (Qs37z6 & Ys37z6); +assign Ys37z6 = (~(Lgj7z6[181] & L1i7x6)); +assign Qs37z6 = (~(Lgj7z6[184] & Jrj7x6)); +assign As37z6 = (Gt37z6 & Ot37z6); +assign Ot37z6 = (~(Lgj7z6[187] & P3i7x6)); +assign Gt37z6 = (~(Lgj7z6[190] & V6i7x6)); +assign CURRPRI[5] = (~(Wt37z6 & Eu37z6)); +assign Eu37z6 = (Mu37z6 & Uu37z6); +assign Uu37z6 = (~(Sz3jy6 & Cv37z6)); +assign Cv37z6 = (~(Kv37z6 & Sv37z6)); +assign Sv37z6 = (Aw37z6 & Iw37z6); +assign Iw37z6 = (Qw37z6 & Yw37z6); +assign Yw37z6 = (~(Ao2jy6 & M018x6)); +assign M018x6 = (~(Q8oiy6 & J92nv6)); +assign J92nv6 = (Gx37z6 | Ppb7z6[5]); +assign Gx37z6 = (Ppb7z6[6] | Ppb7z6[7]); +assign Q8oiy6 = (!Ppb7z6[5]); +assign Qw37z6 = (~(Ffj7z6[0] & Cshov6)); +assign Aw37z6 = (Ox37z6 & Wx37z6); +assign Wx37z6 = (~(Zdj7z6[0] & I2oiw6)); +assign Ox37z6 = (~(Tcj7z6[0] & Rphov6)); +assign Kv37z6 = (Ey37z6 & My37z6); +assign My37z6 = (Uy37z6 & Cz37z6); +assign Cz37z6 = (~(Gaj7z6[0] & Hzh7x6)); +assign Uy37z6 = (~(Nbj7z6[0] & L1i7x6)); +assign Ey37z6 = (Kz37z6 & Sz37z6); +assign Sz37z6 = (~(Z8j7z6[0] & P3i7x6)); +assign Kz37z6 = (~(T7j7z6[0] & V6i7x6)); +assign Sz3jy6 = (Ox3jy6 & Pqliw6); +assign Ox3jy6 = (S73jy6 & Omliw6); +assign Mu37z6 = (A047z6 & I047z6); +assign I047z6 = (~(Wtgjy6 & Q047z6)); +assign Q047z6 = (~(Y047z6 & G147z6)); +assign G147z6 = (O147z6 & W147z6); +assign W147z6 = (E247z6 & M247z6); +assign M247z6 = (U247z6 & C347z6); +assign C347z6 = (~(Lgj7z6[0] & Ao2jy6)); +assign U247z6 = (~(Lgj7z6[3] & Nuniw6)); +assign E247z6 = (K347z6 & S347z6); +assign S347z6 = (~(Lgj7z6[6] & Jfmiw6)); +assign K347z6 = (~(Lgj7z6[9] & Cn2jy6)); +assign O147z6 = (A447z6 & I447z6); +assign I447z6 = (Q447z6 & Y447z6); +assign Y447z6 = (~(Lgj7z6[12] & Cshov6)); +assign Q447z6 = (~(Lgj7z6[15] & I2oiw6)); +assign A447z6 = (G547z6 & O547z6); +assign O547z6 = (~(Lgj7z6[18] & Rphov6)); +assign G547z6 = (~(Lgj7z6[21] & J6oiw6)); +assign Y047z6 = (W547z6 & E647z6); +assign E647z6 = (M647z6 & U647z6); +assign U647z6 = (C747z6 & K747z6); +assign K747z6 = (~(Lgj7z6[24] & Uy2jy6)); +assign C747z6 = (~(Lgj7z6[27] & Mbj7x6)); +assign M647z6 = (S747z6 & A847z6); +assign A847z6 = (~(Lgj7z6[30] & Nfj7x6)); +assign S747z6 = (~(Lgj7z6[33] & Hzh7x6)); +assign W547z6 = (I847z6 & Q847z6); +assign Q847z6 = (Y847z6 & G947z6); +assign G947z6 = (~(Lgj7z6[36] & L1i7x6)); +assign Y847z6 = (~(Lgj7z6[39] & Jrj7x6)); +assign I847z6 = (O947z6 & W947z6); +assign W947z6 = (~(Lgj7z6[42] & P3i7x6)); +assign O947z6 = (~(Lgj7z6[45] & V6i7x6)); +assign Wtgjy6 = (Ea47z6 & S73jy6); +assign S73jy6 = (~(Nob7z6[5] | Nob7z6[6])); +assign Ea47z6 = (Nob7z6[4] & Pqliw6); +assign A047z6 = (~(Awcjy6 & Ma47z6)); +assign Ma47z6 = (~(Ua47z6 & Cb47z6)); +assign Cb47z6 = (Kb47z6 & Sb47z6); +assign Sb47z6 = (Ac47z6 & Ic47z6); +assign Ic47z6 = (Qc47z6 & Yc47z6); +assign Yc47z6 = (~(Lgj7z6[48] & Ao2jy6)); +assign Qc47z6 = (~(Lgj7z6[51] & Nuniw6)); +assign Ac47z6 = (Gd47z6 & Od47z6); +assign Od47z6 = (~(Lgj7z6[54] & Jfmiw6)); +assign Gd47z6 = (~(Lgj7z6[57] & Cn2jy6)); +assign Kb47z6 = (Wd47z6 & Ee47z6); +assign Ee47z6 = (Me47z6 & Ue47z6); +assign Ue47z6 = (~(Cshov6 & Lgj7z6[60])); +assign Me47z6 = (~(Lgj7z6[63] & I2oiw6)); +assign Wd47z6 = (Cf47z6 & Kf47z6); +assign Kf47z6 = (~(Lgj7z6[66] & Rphov6)); +assign Cf47z6 = (~(Lgj7z6[69] & J6oiw6)); +assign Ua47z6 = (Sf47z6 & Ag47z6); +assign Ag47z6 = (Ig47z6 & Qg47z6); +assign Qg47z6 = (Yg47z6 & Gh47z6); +assign Gh47z6 = (~(Lgj7z6[72] & Uy2jy6)); +assign Yg47z6 = (~(Lgj7z6[75] & Mbj7x6)); +assign Ig47z6 = (Oh47z6 & Wh47z6); +assign Wh47z6 = (~(Lgj7z6[78] & Nfj7x6)); +assign Oh47z6 = (~(Lgj7z6[81] & Hzh7x6)); +assign Sf47z6 = (Ei47z6 & Mi47z6); +assign Mi47z6 = (Ui47z6 & Cj47z6); +assign Cj47z6 = (~(Lgj7z6[84] & L1i7x6)); +assign Ui47z6 = (~(Lgj7z6[87] & Jrj7x6)); +assign Ei47z6 = (Kj47z6 & Sj47z6); +assign Sj47z6 = (~(Lgj7z6[90] & P3i7x6)); +assign Kj47z6 = (~(Lgj7z6[93] & V6i7x6)); +assign Awcjy6 = (~(Ak47z6 | Nob7z6[4])); +assign Wt37z6 = (Ik47z6 & Qk47z6); +assign Qk47z6 = (~(Maajy6 & Yk47z6)); +assign Yk47z6 = (~(Gl47z6 & Ol47z6)); +assign Ol47z6 = (Wl47z6 & Em47z6); +assign Em47z6 = (Mm47z6 & Um47z6); +assign Um47z6 = (Cn47z6 & Kn47z6); +assign Kn47z6 = (~(Lgj7z6[96] & Ao2jy6)); +assign Cn47z6 = (~(Lgj7z6[99] & Nuniw6)); +assign Mm47z6 = (Sn47z6 & Ao47z6); +assign Ao47z6 = (~(Lgj7z6[102] & Jfmiw6)); +assign Sn47z6 = (~(Lgj7z6[105] & Cn2jy6)); +assign Wl47z6 = (Io47z6 & Qo47z6); +assign Qo47z6 = (Yo47z6 & Gp47z6); +assign Gp47z6 = (~(Lgj7z6[108] & Cshov6)); +assign Yo47z6 = (~(Lgj7z6[111] & I2oiw6)); +assign Io47z6 = (Op47z6 & Wp47z6); +assign Wp47z6 = (~(Lgj7z6[114] & Rphov6)); +assign Op47z6 = (~(Lgj7z6[117] & J6oiw6)); +assign Gl47z6 = (Eq47z6 & Mq47z6); +assign Mq47z6 = (Uq47z6 & Cr47z6); +assign Cr47z6 = (Kr47z6 & Sr47z6); +assign Sr47z6 = (~(Lgj7z6[120] & Uy2jy6)); +assign Kr47z6 = (~(Lgj7z6[123] & Mbj7x6)); +assign Uq47z6 = (As47z6 & Is47z6); +assign Is47z6 = (~(Lgj7z6[126] & Nfj7x6)); +assign As47z6 = (~(Lgj7z6[129] & Hzh7x6)); +assign Eq47z6 = (Qs47z6 & Ys47z6); +assign Ys47z6 = (Gt47z6 & Ot47z6); +assign Ot47z6 = (~(Lgj7z6[132] & L1i7x6)); +assign Gt47z6 = (~(Lgj7z6[135] & Jrj7x6)); +assign Qs47z6 = (Wt47z6 & Eu47z6); +assign Eu47z6 = (~(Lgj7z6[138] & P3i7x6)); +assign Wt47z6 = (~(Lgj7z6[141] & V6i7x6)); +assign Maajy6 = (~(Ak47z6 | Omliw6)); +assign Ak47z6 = (~(Mu47z6 & Nob7z6[5])); +assign Mu47z6 = (Gpliw6 & Pqliw6); +assign Gpliw6 = (!Nob7z6[6]); +assign Ik47z6 = (~(A87jy6 & Uu47z6)); +assign Uu47z6 = (~(Cv47z6 & Kv47z6)); +assign Kv47z6 = (Sv47z6 & Aw47z6); +assign Aw47z6 = (Iw47z6 & Qw47z6); +assign Qw47z6 = (Yw47z6 & Gx47z6); +assign Gx47z6 = (~(Lgj7z6[144] & Ao2jy6)); +assign Ao2jy6 = (!Rqmiw6); +assign Rqmiw6 = (~(Ox47z6 & Me3jy6)); +assign Ox47z6 = (Giliw6 & Flliw6); +assign Yw47z6 = (~(Lgj7z6[147] & Nuniw6)); +assign Nuniw6 = (!Daoiw6); +assign Daoiw6 = (~(Qc3jy6 & Kf3jy6)); +assign Iw47z6 = (Wx47z6 & Ey47z6); +assign Ey47z6 = (~(Lgj7z6[150] & Jfmiw6)); +assign Jfmiw6 = (!Zumiw6); +assign Zumiw6 = (~(My47z6 & Me3jy6)); +assign My47z6 = (Nob7z6[1] & Flliw6); +assign Wx47z6 = (~(Lgj7z6[153] & Cn2jy6)); +assign Cn2jy6 = (!Xdoiw6); +assign Xdoiw6 = (~(Qc3jy6 & Uy47z6)); +assign Qc3jy6 = (Wjliw6 & Flliw6); +assign Sv47z6 = (Cz47z6 & Kz47z6); +assign Kz47z6 = (Sz47z6 & A057z6); +assign A057z6 = (~(Lgj7z6[156] & Cshov6)); +assign Cshov6 = (!Ue5jy6); +assign Ue5jy6 = (~(I057z6 & Ee3jy6)); +assign Sz47z6 = (~(Lgj7z6[159] & I2oiw6)); +assign I2oiw6 = (Kf3jy6 & Ee3jy6); +assign Cz47z6 = (Q057z6 & Y057z6); +assign Y057z6 = (~(Lgj7z6[162] & Rphov6)); +assign Rphov6 = (Ee3jy6 & Gh3jy6); +assign Q057z6 = (~(Lgj7z6[165] & J6oiw6)); +assign J6oiw6 = (Uy47z6 & Ee3jy6); +assign Ee3jy6 = (Nob7z6[2] & Flliw6); +assign Cv47z6 = (G157z6 & O157z6); +assign O157z6 = (W157z6 & E257z6); +assign E257z6 = (M257z6 & U257z6); +assign U257z6 = (~(Lgj7z6[168] & Uy2jy6)); +assign Uy2jy6 = (Cz3jy6 & Giliw6); +assign M257z6 = (~(Lgj7z6[171] & Mbj7x6)); +assign Mbj7x6 = (!U7k7x6); +assign U7k7x6 = (~(C357z6 & Kf3jy6)); +assign W157z6 = (K357z6 & S357z6); +assign S357z6 = (~(Lgj7z6[174] & Nfj7x6)); +assign Nfj7x6 = (Cz3jy6 & Nob7z6[1]); +assign Cz3jy6 = (Me3jy6 & Nob7z6[3]); +assign Me3jy6 = (~(Nob7z6[0] | Nob7z6[2])); +assign K357z6 = (~(Lgj7z6[177] & Hzh7x6)); +assign Hzh7x6 = (!Pfk7x6); +assign Pfk7x6 = (~(C357z6 & Uy47z6)); +assign C357z6 = (Nob7z6[3] & Wjliw6); +assign G157z6 = (A457z6 & I457z6); +assign I457z6 = (Q457z6 & Y457z6); +assign Y457z6 = (~(Lgj7z6[180] & L1i7x6)); +assign L1i7x6 = (!Qpl7x6); +assign Qpl7x6 = (~(I057z6 & Yc3jy6)); +assign I057z6 = (Krliw6 & Giliw6); +assign Q457z6 = (~(Lgj7z6[183] & Jrj7x6)); +assign Jrj7x6 = (Yc3jy6 & Kf3jy6); +assign Kf3jy6 = (~(Krliw6 | Nob7z6[1])); +assign A457z6 = (G557z6 & O557z6); +assign O557z6 = (~(Lgj7z6[186] & P3i7x6)); +assign P3i7x6 = (Yc3jy6 & Gh3jy6); +assign Gh3jy6 = (~(Giliw6 | Nob7z6[0])); +assign G557z6 = (~(Lgj7z6[189] & V6i7x6)); +assign V6i7x6 = (Yc3jy6 & Uy47z6); +assign Uy47z6 = (~(Krliw6 | Giliw6)); +assign Giliw6 = (!Nob7z6[1]); +assign Krliw6 = (!Nob7z6[0]); +assign Yc3jy6 = (~(Wjliw6 | Flliw6)); +assign Flliw6 = (!Nob7z6[3]); +assign Wjliw6 = (!Nob7z6[2]); +assign A87jy6 = (W557z6 & E657z6); +assign E657z6 = (Xnliw6 & Pqliw6); +assign Pqliw6 = (!Nob7z6[7]); +assign Xnliw6 = (!Nob7z6[5]); +assign W557z6 = (Nob7z6[6] & Omliw6); +assign Omliw6 = (!Nob7z6[4]); +assign BRCHSTAT[2] = (M657z6 & Aciiy6); +assign M657z6 = (~(U657z6 & C757z6)); +assign C757z6 = (~(V9mnv6 & K757z6)); +assign K757z6 = (Csohw6 | Rrnnv6); +assign U657z6 = (~(S757z6 | Ir0ov6)); +assign BRCHSTAT[1] = (~(A857z6 & I857z6)); +assign I857z6 = (~(Camnv6 & Q857z6)); +assign Q857z6 = (Jamnv6 | S757z6); +assign Jamnv6 = (~(Pcmhw6 & Y857z6)); +assign Y857z6 = (~(V9mnv6 & G957z6)); +assign G957z6 = (Vmnnv6 | Amnnv6); +assign Amnnv6 = (Nginv6 | Rrnnv6); +assign Rrnnv6 = (U6uiy6 & Zec7z6[28]); +assign Vmnnv6 = (~(Sfohw6 & U9inv6)); +assign Sfohw6 = (!Csohw6); +assign Csohw6 = (Yksiy6 & O957z6); +assign Pcmhw6 = (!Ir0ov6); +assign Ir0ov6 = (V9mnv6 & Awiiy6); +assign Awiiy6 = (W957z6 & Ea57z6); +assign Ea57z6 = (Ma57z6 & Ua57z6); +assign Camnv6 = (!Aciiy6); +assign A857z6 = (~(V9mnv6 & Cb57z6)); +assign Cb57z6 = (~(Kb57z6 & Sb57z6)); +assign Sb57z6 = (U9inv6 | Zec7z6[7]); +assign Kb57z6 = (Ac57z6 & A2sov6); +assign Ac57z6 = (~(Nginv6 & Painv6)); +assign BRCHSTAT[0] = (S757z6 | Ic57z6); +assign Ic57z6 = (V9mnv6 & Qc57z6); +assign Qc57z6 = (~(A2sov6 & Yc57z6)); +assign Yc57z6 = (~(Gd57z6 & Aciiy6)); +assign Aciiy6 = (~(Od57z6 & Wd57z6)); +assign Wd57z6 = (Wqfov6 | Gpsiw6); +assign Gpsiw6 = (Cmbdt6 | L2gdt6); +assign Od57z6 = (~(N6xiw6 & Drfov6)); +assign Drfov6 = (!L2gdt6); +assign N6xiw6 = (!Ghkiy6); +assign Ghkiy6 = (~(Ee57z6 & Ashnv6)); +assign Ashnv6 = (Yrfov6 | L2gdt6); +assign Ee57z6 = (S6cdt6 | Yrfov6); +assign Yrfov6 = (~(Wqfov6 | Ohe7z6[4])); +assign Wqfov6 = (Me57z6 | Ohe7z6[1]); +assign Me57z6 = (Ohe7z6[2] | Ohe7z6[3]); +assign Gd57z6 = (~(Flnnv6 & Htnnv6)); +assign Htnnv6 = (~(Nginv6 & Zec7z6[10])); +assign Nginv6 = (Ue57z6 & Cf57z6); +assign Cf57z6 = (~(Kf57z6 | I5cdt6)); +assign Kf57z6 = (~(Sf57z6 & Adohw6)); +assign Ue57z6 = (U6uiy6 & K7uiy6); +assign K7uiy6 = (!Cvtiy6); +assign Flnnv6 = (U9inv6 | Xeinv6); +assign U9inv6 = (T1sov6 | I5cdt6); +assign T1sov6 = (~(Ag57z6 & Xgmhw6)); +assign Xgmhw6 = (Ig57z6 & Zec7z6[15]); +assign Ig57z6 = (Zec7z6[14] & Uqsiy6); +assign Ag57z6 = (~(D6siw6 | Z3fhw6)); +assign Z3fhw6 = (Cvehw6 & Zec7z6[11]); +assign A2sov6 = (!Btpiw6); +assign Btpiw6 = (S3riy6 & Painv6); +assign S3riy6 = (I5fhw6 & Zec7z6[8]); +assign S757z6 = (V9mnv6 & Qg57z6); +assign Qg57z6 = (~(Bhaov6 & Ofmhw6)); +assign Ofmhw6 = (Yg57z6 & Gh57z6); +assign Gh57z6 = (Oh57z6 & Jkc7x6); +assign Jkc7x6 = (~(Agmiy6 & Zec7z6[4])); +assign Agmiy6 = (~(Cvmiy6 | Elviw6)); +assign Elviw6 = (!Zec7z6[31]); +assign Cvmiy6 = (~(Wh57z6 & Eauiy6)); +assign Wh57z6 = (Xqwiw6 & Fcinv6); +assign Xqwiw6 = (B0xiw6 | Obwiw6); +assign B0xiw6 = (Zec7z6[8] & Xeinv6); +assign Oh57z6 = (~(Igmiy6 | Znvnv6)); +assign Znvnv6 = (Sfiiy6 & Sjtiy6); +assign Sjtiy6 = (Ei57z6 & W9tiy6); +assign Ei57z6 = (Gbfhw6 & Bainv6); +assign Igmiy6 = (Qkc7x6 & Zec7z6[8]); +assign Qkc7x6 = (Mqiiy6 & Zec7z6[11]); +assign Mqiiy6 = (I5fhw6 & Gbfhw6); +assign Gbfhw6 = (Zec7z6[10] & Qeinv6); +assign I5fhw6 = (~(Kntiy6 | D6siw6)); +assign Kntiy6 = (!Sntiy6); +assign Sntiy6 = (Mi57z6 & Zec7z6[15]); +assign Mi57z6 = (Zec7z6[13] & Sbtiy6); +assign Sbtiy6 = (!Zec7z6[14]); +assign Yg57z6 = (Ui57z6 & Cj57z6); +assign Cj57z6 = (~(Kj57z6 & Sj57z6)); +assign Sj57z6 = (Ak57z6 & Ik57z6); +assign Ik57z6 = (Qk57z6 & O957z6); +assign Qk57z6 = (Yk57z6 & Bainv6); +assign Yk57z6 = (Gl57z6 | Hxihw6); +assign Hxihw6 = (!U2uiy6); +assign U2uiy6 = (Xeinv6 & Rktov6); +assign Rktov6 = (!K0riw6); +assign K0riw6 = (Ol57z6 & Zec7z6[3]); +assign Ol57z6 = (!Wl57z6); +assign Gl57z6 = (Zec7z6[27] ? Utihw6 : Em57z6); +assign Utihw6 = (!Kzqiy6); +assign Em57z6 = (Mm57z6 & Um57z6); +assign Um57z6 = (Cn57z6 & Buihw6); +assign Buihw6 = (!Zec7z6[25]); +assign Mm57z6 = (Kzqiy6 & Kn57z6); +assign Kzqiy6 = (Lofhw6 & Jlohw6); +assign Jlohw6 = (!Zec7z6[26]); +assign Lofhw6 = (!Zec7z6[24]); +assign Ak57z6 = (Q8riy6 & Zec7z6[30]); +assign Q8riy6 = (Zec7z6[28] & Zec7z6[29]); +assign Kj57z6 = (Sn57z6 & Ao57z6); +assign Ao57z6 = (Io57z6 & Zec7z6[12]); +assign Io57z6 = (Zec7z6[11] & Zec7z6[31]); +assign Sn57z6 = (Qo57z6 & Zec7z6[4]); +assign Qo57z6 = (Nbfhw6 & Kdfhw6); +assign Ui57z6 = (~(Yo57z6 & Gp57z6)); +assign Gp57z6 = (Kn57z6 & Cn57z6); +assign Kn57z6 = (!Zec7z6[22]); +assign Yo57z6 = (Cbuiy6 & Op57z6); +assign Op57z6 = (!Zec7z6[21]); +assign Cbuiy6 = (Wp57z6 & Eq57z6); +assign Eq57z6 = (Obwiw6 & Nbfhw6); +assign Nbfhw6 = (Zec7z6[6] & Zpehw6); +assign Zpehw6 = (!Zec7z6[5]); +assign Obwiw6 = (Zec7z6[7] & Bainv6); +assign Wp57z6 = (Zec7z6[4] & Eauiy6); +assign Eauiy6 = (Kdfhw6 & Zhmhw6); +assign Zhmhw6 = (Ydfhw6 & O957z6); +assign Ydfhw6 = (Zec7z6[11] & D6siw6); +assign Kdfhw6 = (Painv6 & Qeinv6); +assign Qeinv6 = (!Zec7z6[9]); +assign Bhaov6 = (Mq57z6 & Uq57z6); +assign Uq57z6 = (~(Cr57z6 & Kr57z6)); +assign Kr57z6 = (Sr57z6 & As57z6); +assign As57z6 = (Is57z6 & Qs57z6); +assign Qs57z6 = (!Zec7z6[20]); +assign Is57z6 = (Cn57z6 & Sf57z6); +assign Sf57z6 = (!Zec7z6[28]); +assign Cn57z6 = (!Zec7z6[23]); +assign Sr57z6 = (Zec7z6[22] & Zec7z6[21]); +assign Cr57z6 = (Ys57z6 & Gt57z6); +assign Gt57z6 = (Ot57z6 & Cvtiy6); +assign Cvtiy6 = (Sywiw6 & Zec7z6[9]); +assign Sywiw6 = (~(Xeinv6 | Bainv6)); +assign Ot57z6 = (U6uiy6 & Zec7z6[4]); +assign U6uiy6 = (M2uiy6 & Zec7z6[31]); +assign M2uiy6 = (Wt57z6 & Zec7z6[12]); +assign Wt57z6 = (O957z6 & Gginv6); +assign Ys57z6 = (E3fhw6 & H2riw6); +assign H2riw6 = (Painv6 & Adohw6); +assign Adohw6 = (!Zec7z6[30]); +assign Painv6 = (!Zec7z6[10]); +assign E3fhw6 = (Zec7z6[5] & Fcinv6); +assign Fcinv6 = (!Zec7z6[6]); +assign Mq57z6 = (~(Ua57z6 & Eu57z6)); +assign Eu57z6 = (~(W957z6 & Ma57z6)); +assign Ma57z6 = (~(Zec7z6[3] | X0cdt6)); +assign W957z6 = (Qzuiw6 & Zec7z6[4]); +assign Qzuiw6 = (Zec7z6[5] & Zec7z6[6]); +assign Ua57z6 = (~(Mu57z6 & Amtov6)); +assign Amtov6 = (~(Uu57z6 & W9tiy6)); +assign Uu57z6 = (Cvehw6 & Zec7z6[8]); +assign Mu57z6 = (Q9fhw6 | Aktiy6); +assign Aktiy6 = (!Sfiiy6); +assign Sfiiy6 = (~(Wl57z6 | Xeinv6)); +assign Xeinv6 = (!Zec7z6[7]); +assign Wl57z6 = (~(Cv57z6 & Zec7z6[2])); +assign Cv57z6 = (Zec7z6[1] & Zec7z6[0]); +assign Q9fhw6 = (~(Kv57z6 & W9tiy6)); +assign W9tiy6 = (Yksiy6 & Gpuiy6); +assign Gpuiy6 = (!Icuiy6); +assign Icuiy6 = (~(Sv57z6 & Zec7z6[14])); +assign Sv57z6 = (Uqsiy6 & Eqsiy6); +assign Eqsiy6 = (!Zec7z6[15]); +assign Uqsiy6 = (!Zec7z6[13]); +assign Kv57z6 = (Cvehw6 & Bainv6); +assign Bainv6 = (!Zec7z6[8]); +assign Cvehw6 = (Zec7z6[10] & Zec7z6[9]); +assign V9mnv6 = (Aw57z6 & Iw57z6); +assign Iw57z6 = (Qw57z6 & Yw57z6); +assign Yw57z6 = (Gx57z6 & Fetov6); +assign Fetov6 = (!Pacdt6); +assign Gx57z6 = (~(Efcdt6 | Vjddt6)); +assign Qw57z6 = (Ox57z6 & Wx57z6); +assign Wx57z6 = (~(Ey57z6 & My57z6)); +assign My57z6 = (~(Uy57z6 & Cz57z6)); +assign Cz57z6 = (~(Bfd7z6[1] & Otiiy6)); +assign Uy57z6 = (Nbtov6 & D6tov6); +assign D6tov6 = (!Bfd7z6[3]); +assign Nbtov6 = (!Bfd7z6[2]); +assign Ey57z6 = (L9d7z6[3] | L9d7z6[2]); +assign Ox57z6 = (~(Myuiy6 | L9cdt6)); +assign Myuiy6 = (Kz57z6 & Sz57z6); +assign Sz57z6 = (~(Fjaov6 | Pacdt6)); +assign Fjaov6 = (G597z6 & A067z6); +assign A067z6 = (~(I067z6 & Q067z6)); +assign Q067z6 = (~(Pmc7z6[1] & W1k6z6)); +assign W1k6z6 = (Y067z6 ^ Lpc7z6[1]); +assign I067z6 = (G167z6 & O167z6); +assign O167z6 = (~(Pmc7z6[2] & W167z6)); +assign G167z6 = (~(Pmc7z6[0] & O1k6z6)); +assign Kz57z6 = (E267z6 & Igiiy6); +assign Igiiy6 = (~(Yiaov6 & M267z6)); +assign M267z6 = (U267z6 | Bfd7z6[0]); +assign U267z6 = (Bfd7z6[2] | Bfd7z6[4]); +assign E267z6 = (~(Yiaov6 & Kbriy6)); +assign Kbriy6 = (!Otiiy6); +assign Yiaov6 = (C367z6 & G597z6); +assign C367z6 = (W167z6 ? Pmc7z6[1] : K367z6); +assign W167z6 = (~(Y067z6 | Lpc7z6[1])); +assign K367z6 = (O1k6z6 | Pmc7z6[0]); +assign O1k6z6 = (Lpc7z6[1] & Y067z6); +assign Y067z6 = (!Lpc7z6[0]); +assign Aw57z6 = (S367z6 & A467z6); +assign A467z6 = (I467z6 & K3jnv6); +assign K3jnv6 = (~(Q467z6 | Y807z6)); +assign Y807z6 = (Y3fet6 & Qg2nv6); +assign Q467z6 = (~(SLEEPHOLDACKn & W8h7v6)); +assign SLEEPHOLDACKn = (!Gwj8v6); +assign Gwj8v6 = (D2fet6 & Qg2nv6); +assign Qg2nv6 = (!Tnzdt6); +assign I467z6 = (Y467z6 & G567z6); +assign G567z6 = (~(O567z6 & W567z6)); +assign W567z6 = (L9d7z6[1] | L9d7z6[0]); +assign O567z6 = (~(E667z6 & M667z6)); +assign M667z6 = (~(Bfd7z6[5] & Otiiy6)); +assign E667z6 = (~(Bfd7z6[0] | Bfd7z6[1])); +assign Y467z6 = (~(U667z6 & C767z6)); +assign C767z6 = (L9d7z6[5] | L9d7z6[4]); +assign U667z6 = (~(K767z6 & S767z6)); +assign S767z6 = (~(Bfd7z6[3] & Otiiy6)); +assign Otiiy6 = (O957z6 & Kbtiy6); +assign Kbtiy6 = (!Yksiy6); +assign Yksiy6 = (Gginv6 & D6siw6); +assign D6siw6 = (!Zec7z6[12]); +assign Gginv6 = (!Zec7z6[11]); +assign O957z6 = (A867z6 & Zec7z6[15]); +assign A867z6 = (Zec7z6[14] & Zec7z6[13]); +assign K767z6 = (~(Bfd7z6[4] | Bfd7z6[5])); +assign S367z6 = (O4piw6 & Ktfxx6); +assign Ktfxx6 = (~(Ddmhw6 | Qdcdt6)); +assign Ddmhw6 = (Tk8iw6 ? Osd7z6[1] : Osd7z6[2]); +assign Tk8iw6 = (Myhiy6 & Iwhiy6); +assign Iwhiy6 = (I867z6 & Q867z6); +assign Q867z6 = (Y867z6 & G967z6); +assign G967z6 = (~(O967z6 | Fhc7z6[15])); +assign O967z6 = (Fhc7z6[8] | Fhc7z6[9]); +assign Y867z6 = (~(Fhc7z6[13] | Fhc7z6[14])); +assign I867z6 = (W967z6 & Ea67z6); +assign Ea67z6 = (~(Fhc7z6[11] | Fhc7z6[12])); +assign W967z6 = (~(Q4oiy6 | Fhc7z6[10])); +assign Q4oiy6 = (~(Ma67z6 & Ua67z6)); +assign Ua67z6 = (Cb67z6 & Kb67z6); +assign Kb67z6 = (~(Fhc7z6[6] | Fhc7z6[7])); +assign Cb67z6 = (~(E3c7z6[4] | Fhc7z6[5])); +assign Ma67z6 = (Sb67z6 & Ac67z6); +assign Ac67z6 = (~(E3c7z6[2] | E3c7z6[3])); +assign Sb67z6 = (~(E3c7z6[0] | E3c7z6[1])); +assign Myhiy6 = (!Lntiw6); +assign Lntiw6 = (~(Ic67z6 & Qc67z6)); +assign Qc67z6 = (Yc67z6 & Gd67z6); +assign Gd67z6 = (Od67z6 & Wd67z6); +assign Wd67z6 = (~(Fhc7z6[30] | Fhc7z6[31])); +assign Od67z6 = (~(Fhc7z6[28] | Fhc7z6[29])); +assign Yc67z6 = (Ee67z6 & Me67z6); +assign Me67z6 = (~(Fhc7z6[26] | Fhc7z6[27])); +assign Ee67z6 = (~(Fhc7z6[24] | Fhc7z6[25])); +assign Ic67z6 = (Ue67z6 & Cf67z6); +assign Cf67z6 = (Kf67z6 & Sf67z6); +assign Sf67z6 = (~(Fhc7z6[22] | Fhc7z6[23])); +assign Kf67z6 = (~(Fhc7z6[20] | Fhc7z6[21])); +assign Ue67z6 = (Ag67z6 & Ig67z6); +assign Ig67z6 = (~(Fhc7z6[18] | Fhc7z6[19])); +assign Ag67z6 = (~(Fhc7z6[16] | Fhc7z6[17])); +assign O4piw6 = (Ldo7v6 & X6xnv6); +assign X6xnv6 = (~(Kzy6z6 & I51ov6)); +assign I51ov6 = (Cgc7z6[3] & O4jhw6); +assign O4jhw6 = (!Cgc7z6[0]); +assign Kzy6z6 = (P1piw6 & A4jhw6); +assign A4jhw6 = (!Cgc7z6[2]); +assign P1piw6 = (!Cgc7z6[1]); + +always @(posedge FCLK or negedge PORESETn) + if(~PORESETn) + Sj2nz6 <= 1'b0; + else + Sj2nz6 <= 1'b1; + +always @(posedge FCLK or negedge PORESETn) + if(~PORESETn) + Ik2nz6 <= 1'b0; + else + Ik2nz6 <= M4adt6; + +always @(posedge FCLK or negedge SYSRESETn) + if(~SYSRESETn) + Zk2nz6 <= 1'b0; + else + Zk2nz6 <= 1'b1; + +always @(posedge FCLK or negedge SYSRESETn) + if(~SYSRESETn) + Ql2nz6 <= 1'b0; + else + Ql2nz6 <= Y4adt6; + +always @(posedge SWCLKTCK or negedge PORESETn) + if(~PORESETn) + Im2nz6 <= 1'b0; + else + Im2nz6 <= 1'b1; + +always @(posedge SWCLKTCK or negedge PORESETn) + if(~PORESETn) + Ym2nz6 <= 1'b0; + else + Ym2nz6 <= L5adt6; + +always @(posedge TRACECLKIN or negedge Ox9dt6) + if(~Ox9dt6) + Pn2nz6 <= 1'b0; + else + Pn2nz6 <= Ox9dt6; + +always @(posedge TRACECLKIN or negedge Ox9dt6) + if(~Ox9dt6) + Go2nz6 <= 1'b0; + else + Go2nz6 <= X5adt6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Yo2nz6 <= 1'b0; + else + Yo2nz6 <= CDBGPWRUPACK; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Eq2nz6 <= 1'b0; + else + Eq2nz6 <= Aabdt6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Er2nz6 <= 1'b0; + else + Er2nz6 <= DBGEN; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Hs2nz6 <= 1'b0; + else + Hs2nz6 <= Cbbdt6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Et2nz6 <= 1'b0; + else + Et2nz6 <= DBGEN; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Su2nz6 <= 1'b0; + else + Su2nz6 <= Bcbdt6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Aw2nz6 <= 1'b0; + else + Aw2nz6 <= I8o7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ny2nz6 <= 1'b0; + else + Ny2nz6 <= B8o7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + A13nz6 <= 1'b0; + else + A13nz6 <= U7o7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + N33nz6 <= 1'b0; + else + N33nz6 <= N7o7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + A63nz6 <= 1'b0; + else + A63nz6 <= G7o7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + N83nz6 <= 1'b0; + else + N83nz6 <= Z6o7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ab3nz6 <= 1'b0; + else + Ab3nz6 <= DBGRESTART; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Cd3nz6 <= 1'b0; + else + Cd3nz6 <= 1'b1; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Bf3nz6 <= 1'b0; + else + Bf3nz6 <= S6o7v6; + +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + Yg3nz6 <= 1'b0; + else + Yg3nz6 <= WICENREQ; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Xh3nz6 <= 1'b0; + else + Xh3nz6 <= CDBGPWRUPACK; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Vj3nz6 <= 1'b0; + else + Vj3nz6 <= Mp67v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Ul3nz6 <= 1'b0; + else + Ul3nz6 <= 1'b1; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Un3nz6 <= 1'b0; + else + Un3nz6 <= NIDEN; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Ip3nz6 <= 1'b0; + else + Ip3nz6 <= I977v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Vq3nz6 <= 1'b0; + else + Vq3nz6 <= Fy67v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Ms3nz6 <= 1'b0; + else + Ms3nz6 <= 1'b1; + +always @(posedge TRACECLKIN or negedge T0adt6) + if(~T0adt6) + Su3nz6 <= 1'b0; + else + Su3nz6 <= Tho7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Mw3nz6 <= 1'b0; + else + Mw3nz6 <= L6o7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Sx3nz6 <= 1'b0; + else + Sx3nz6 <= Fql8v6; + +always @(posedge HCLK) T04nz6 <= Qny7v6; +always @(posedge HCLK) D34nz6 <= Etl8v6; +always @(posedge FCLK) B64nz6 <= Cel8v6; +always @(posedge FCLK) P84nz6 <= Vdl8v6; +always @(posedge FCLK) Ab4nz6 <= Odl8v6; +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Pd4nz6 <= 1'b0; + else + Pd4nz6 <= Adl8v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Jf4nz6 <= 1'b0; + else + Jf4nz6 <= Hdl8v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Jh4nz6 <= 1'b0; + else + Jh4nz6 <= Kmp7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Jj4nz6 <= 1'b0; + else + Jj4nz6 <= Kbl8v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Hl4nz6 <= 1'b0; + else + Hl4nz6 <= G9l8v6; + +always @(posedge TRACECLKIN or negedge T0adt6) + if(~T0adt6) + Un4nz6 <= 1'b0; + else + Un4nz6 <= U81nz6[1]; + +always @(posedge TRACECLKIN or negedge T0adt6) + if(~T0adt6) + Nq4nz6 <= 1'b0; + else + Nq4nz6 <= J1h7v6; + +always @(posedge HCLK) Gt4nz6 <= Ltl8v6; +always @(posedge HCLK) Yv4nz6 <= Tks7v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + My4nz6 <= 1'b0; + else + My4nz6 <= Loj8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + L15nz6 <= 1'b0; + else + L15nz6 <= F2p7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + R45nz6 <= 1'b0; + else + R45nz6 <= Tm48v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + H65nz6 <= 1'b0; + else + H65nz6 <= Eoj8v6; + +always @(posedge HCLK) G95nz6 <= P7p7v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Kc5nz6 <= 1'b0; + else + Kc5nz6 <= Fjl8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Jf5nz6 <= 1'b0; + else + Jf5nz6 <= Eaj8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Mi5nz6 <= 1'b0; + else + Mi5nz6 <= Fly7v6; + +always @(posedge HCLK) Kl5nz6 <= Yky7v6; +always @(posedge HCLK) Ho5nz6 <= X0l8v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Qq5nz6 <= 1'b0; + else + Qq5nz6 <= Efl8v6; + +always @(posedge FCLK) Rs5nz6 <= H1r7v6; +always @(posedge FCLK) Ou5nz6 <= Gyp7v6; +always @(posedge FCLK) Zw5nz6 <= Sxp7v6; +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Oz5nz6 <= 1'b0; + else + Oz5nz6 <= Cpp7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + O16nz6 <= 1'b0; + else + O16nz6 <= Ohp7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + M36nz6 <= 1'b0; + else + M36nz6 <= Hrl8v6; + +always @(posedge HCLK) N66nz6 <= Amy7v6; +always @(posedge HCLK) X86nz6 <= C0l8v6; +always @(posedge HCLK) Vb6nz6 <= Tys7v6; +always @(posedge HCLK) Pe6nz6 <= Mys7v6; +always @(posedge HCLK) Jh6nz6 <= Fys7v6; +always @(posedge HCLK) Dk6nz6 <= Yxs7v6; +always @(posedge HCLK) Ym6nz6 <= Rxs7v6; +always @(posedge HCLK) Tp6nz6 <= Kxs7v6; +always @(posedge HCLK) Os6nz6 <= Dxs7v6; +always @(posedge HCLK) Jv6nz6 <= Wws7v6; +always @(posedge HCLK) Ey6nz6 <= Pws7v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Z07nz6 <= 1'b0; + else + Z07nz6 <= Ggl8v6; + +always @(posedge HCLK) A37nz6 <= Ngl8v6; +always @(posedge HCLK) P57nz6 <= Ivl8v6; +always @(posedge HCLK) H87nz6 <= E358v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Z97nz6 <= 1'b0; + else + Z97nz6 <= Vl68v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Oc7nz6 <= 1'b0; + else + Oc7nz6 <= Jwh8v6; + +always @(posedge HCLK) Af7nz6 <= Jr88v6; +always @(posedge HCLK) Qh7nz6 <= Egs7v6; +always @(posedge HCLK) Fk7nz6 <= Fey7v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Cn7nz6 <= 1'b0; + else + Cn7nz6 <= Vkl8v6; + +always @(posedge HCLK) Cq7nz6 <= Mzy7v6; +always @(posedge HCLK) Ls7nz6 <= Vzk8v6; +always @(posedge HCLK) Jv7nz6 <= Be38v6; +always @(posedge HCLK) Dy7nz6 <= Ud38v6; +always @(posedge HCLK) X08nz6 <= Nd38v6; +always @(posedge HCLK) S38nz6 <= Gd38v6; +always @(posedge HCLK) N68nz6 <= Zc38v6; +always @(posedge HCLK) I98nz6 <= Sc38v6; +always @(posedge HCLK) Dc8nz6 <= Lc38v6; +always @(posedge HCLK) Ye8nz6 <= J0l8v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Th8nz6 <= 1'b0; + else + Th8nz6 <= P3l8v6; + +always @(posedge FCLK) Uj8nz6 <= V1r7v6; +always @(posedge FCLK) Rl8nz6 <= U5q7v6; +always @(posedge FCLK) Co8nz6 <= G5q7v6; +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Rq8nz6 <= 1'b0; + else + Rq8nz6 <= Aop7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Rs8nz6 <= 1'b0; + else + Rs8nz6 <= Sjp7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Pu8nz6 <= 1'b0; + else + Pu8nz6 <= Tql8v6; + +always @(posedge HCLK) Qx8nz6 <= Hmy7v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + A09nz6 <= 1'b0; + else + A09nz6 <= Sfl8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + X29nz6 <= 1'b0; + else + X29nz6 <= Mly7v6; + +always @(posedge HCLK) R59nz6 <= Fdk8v6; +always @(posedge HCLK) P89nz6 <= Zpi8v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Lb9nz6 <= 1'b0; + else + Lb9nz6 <= Q4a7z6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Le9nz6 <= 1'b0; + else + Le9nz6 <= Ycs7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Oh9nz6 <= 1'b0; + else + Oh9nz6 <= N098v6; + +always @(posedge HCLK) Ik9nz6 <= Rky7v6; +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Gn9nz6 <= 1'b0; + else + Gn9nz6 <= Djk8v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Fq9nz6 <= 1'b0; + else + Fq9nz6 <= Ask8v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Ct9nz6 <= 1'b0; + else + Ct9nz6 <= Mrk8v6; + +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + Av9nz6 <= 1'b0; + else + Av9nz6 <= Ad78v6; + +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + Zv9nz6 <= 1'b0; + else + Zv9nz6 <= Gv68v6; + +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + Zw9nz6 <= 1'b0; + else + Zw9nz6 <= Nv68v6; + +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + Zx9nz6 <= 1'b0; + else + Zx9nz6 <= Uv68v6; + +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + Zy9nz6 <= 1'b0; + else + Zy9nz6 <= Bw68v6; + +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + Zz9nz6 <= 1'b0; + else + Zz9nz6 <= Iw68v6; + +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + Z0anz6 <= 1'b0; + else + Z0anz6 <= Pw68v6; + +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + Z1anz6 <= 1'b0; + else + Z1anz6 <= Ww68v6; + +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + Z2anz6 <= 1'b0; + else + Z2anz6 <= Dx68v6; + +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + Z3anz6 <= 1'b0; + else + Z3anz6 <= Kx68v6; + +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + Z4anz6 <= 1'b0; + else + Z4anz6 <= Rx68v6; + +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + A6anz6 <= 1'b0; + else + A6anz6 <= Yx68v6; + +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + B7anz6 <= 1'b0; + else + B7anz6 <= Fy68v6; + +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + C8anz6 <= 1'b0; + else + C8anz6 <= My68v6; + +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + D9anz6 <= 1'b0; + else + D9anz6 <= Ty68v6; + +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + Eaanz6 <= 1'b0; + else + Eaanz6 <= Az68v6; + +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + Fbanz6 <= 1'b0; + else + Fbanz6 <= Hz68v6; + +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + Gcanz6 <= 1'b0; + else + Gcanz6 <= Oz68v6; + +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + Hdanz6 <= 1'b0; + else + Hdanz6 <= Vz68v6; + +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + Ieanz6 <= 1'b0; + else + Ieanz6 <= C078v6; + +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + Jfanz6 <= 1'b0; + else + Jfanz6 <= J078v6; + +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + Kganz6 <= 1'b0; + else + Kganz6 <= Q078v6; + +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + Lhanz6 <= 1'b0; + else + Lhanz6 <= X078v6; + +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + Mianz6 <= 1'b0; + else + Mianz6 <= E178v6; + +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + Njanz6 <= 1'b0; + else + Njanz6 <= L178v6; + +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + Okanz6 <= 1'b0; + else + Okanz6 <= S178v6; + +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + Planz6 <= 1'b0; + else + Planz6 <= Z178v6; + +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + Qmanz6 <= 1'b0; + else + Qmanz6 <= G278v6; + +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + Rnanz6 <= 1'b0; + else + Rnanz6 <= N278v6; + +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + Soanz6 <= 1'b0; + else + Soanz6 <= U278v6; + +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + Tpanz6 <= 1'b0; + else + Tpanz6 <= B378v6; + +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + Uqanz6 <= 1'b0; + else + Uqanz6 <= I378v6; + +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + Vranz6 <= 1'b0; + else + Vranz6 <= P378v6; + +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + Wsanz6 <= 1'b0; + else + Wsanz6 <= W378v6; + +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + Xtanz6 <= 1'b0; + else + Xtanz6 <= D478v6; + +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + Yuanz6 <= 1'b0; + else + Yuanz6 <= K478v6; + +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + Zvanz6 <= 1'b0; + else + Zvanz6 <= R478v6; + +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + Axanz6 <= 1'b0; + else + Axanz6 <= Y478v6; + +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + Byanz6 <= 1'b0; + else + Byanz6 <= F578v6; + +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + Czanz6 <= 1'b0; + else + Czanz6 <= M578v6; + +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + D0bnz6 <= 1'b0; + else + D0bnz6 <= T578v6; + +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + E1bnz6 <= 1'b0; + else + E1bnz6 <= A678v6; + +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + F2bnz6 <= 1'b0; + else + F2bnz6 <= H678v6; + +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + G3bnz6 <= 1'b0; + else + G3bnz6 <= O678v6; + +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + H4bnz6 <= 1'b0; + else + H4bnz6 <= V678v6; + +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + I5bnz6 <= 1'b0; + else + I5bnz6 <= C778v6; + +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + J6bnz6 <= 1'b0; + else + J6bnz6 <= J778v6; + +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + K7bnz6 <= 1'b0; + else + K7bnz6 <= Q778v6; + +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + L8bnz6 <= 1'b0; + else + L8bnz6 <= X778v6; + +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + M9bnz6 <= 1'b0; + else + M9bnz6 <= E878v6; + +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + Nabnz6 <= 1'b0; + else + Nabnz6 <= L878v6; + +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + Obbnz6 <= 1'b0; + else + Obbnz6 <= S878v6; + +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + Pcbnz6 <= 1'b0; + else + Pcbnz6 <= Z878v6; + +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + Qdbnz6 <= 1'b0; + else + Qdbnz6 <= G978v6; + +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + Rebnz6 <= 1'b0; + else + Rebnz6 <= N978v6; + +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + Sfbnz6 <= 1'b0; + else + Sfbnz6 <= U978v6; + +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + Tgbnz6 <= 1'b0; + else + Tgbnz6 <= Ba78v6; + +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + Uhbnz6 <= 1'b0; + else + Uhbnz6 <= Ia78v6; + +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + Vibnz6 <= 1'b0; + else + Vibnz6 <= Pa78v6; + +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + Wjbnz6 <= 1'b0; + else + Wjbnz6 <= Wa78v6; + +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + Xkbnz6 <= 1'b0; + else + Xkbnz6 <= Db78v6; + +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + Ylbnz6 <= 1'b0; + else + Ylbnz6 <= Kb78v6; + +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + Zmbnz6 <= 1'b0; + else + Zmbnz6 <= Rb78v6; + +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + Aobnz6 <= 1'b0; + else + Aobnz6 <= Yb78v6; + +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + Bpbnz6 <= 1'b0; + else + Bpbnz6 <= Fc78v6; + +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + Cqbnz6 <= 1'b0; + else + Cqbnz6 <= Mc78v6; + +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + Drbnz6 <= 1'b0; + else + Drbnz6 <= Tc78v6; + +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + Dsbnz6 <= 1'b0; + else + Dsbnz6 <= Frk8v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Etbnz6 <= 1'b0; + else + Etbnz6 <= E6o7v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Fwbnz6 <= 1'b0; + else + Fwbnz6 <= X5o7v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Hzbnz6 <= 1'b0; + else + Hzbnz6 <= Q5o7v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + J2cnz6 <= 1'b0; + else + J2cnz6 <= J5o7v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + L5cnz6 <= 1'b0; + else + L5cnz6 <= C5o7v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + N8cnz6 <= 1'b0; + else + N8cnz6 <= V4o7v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Pbcnz6 <= 1'b0; + else + Pbcnz6 <= O4o7v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Recnz6 <= 1'b0; + else + Recnz6 <= H4o7v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Thcnz6 <= 1'b0; + else + Thcnz6 <= A4o7v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Vkcnz6 <= 1'b0; + else + Vkcnz6 <= T3o7v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Xncnz6 <= 1'b0; + else + Xncnz6 <= M3o7v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Zqcnz6 <= 1'b0; + else + Zqcnz6 <= F3o7v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Bucnz6 <= 1'b0; + else + Bucnz6 <= Y2o7v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Dxcnz6 <= 1'b0; + else + Dxcnz6 <= R2o7v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + F0dnz6 <= 1'b0; + else + F0dnz6 <= K2o7v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + H3dnz6 <= 1'b0; + else + H3dnz6 <= D2o7v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + J6dnz6 <= 1'b0; + else + J6dnz6 <= W1o7v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + L9dnz6 <= 1'b0; + else + L9dnz6 <= P1o7v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Ncdnz6 <= 1'b0; + else + Ncdnz6 <= I1o7v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Pfdnz6 <= 1'b0; + else + Pfdnz6 <= B1o7v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Ridnz6 <= 1'b0; + else + Ridnz6 <= U0o7v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Tldnz6 <= 1'b0; + else + Tldnz6 <= N0o7v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Vodnz6 <= 1'b0; + else + Vodnz6 <= G0o7v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Xrdnz6 <= 1'b0; + else + Xrdnz6 <= Zzn7v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Zudnz6 <= 1'b0; + else + Zudnz6 <= Szn7v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Bydnz6 <= 1'b0; + else + Bydnz6 <= Lzn7v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + D1enz6 <= 1'b0; + else + D1enz6 <= Ezn7v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + F4enz6 <= 1'b0; + else + F4enz6 <= Xyn7v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + H7enz6 <= 1'b0; + else + H7enz6 <= Qyn7v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Jaenz6 <= 1'b0; + else + Jaenz6 <= Jyn7v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Ldenz6 <= 1'b0; + else + Ldenz6 <= Cyn7v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Ngenz6 <= 1'b0; + else + Ngenz6 <= Vxn7v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Pjenz6 <= 1'b0; + else + Pjenz6 <= Oxn7v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Rmenz6 <= 1'b0; + else + Rmenz6 <= Hxn7v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Tpenz6 <= 1'b0; + else + Tpenz6 <= Axn7v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Vsenz6 <= 1'b0; + else + Vsenz6 <= Twn7v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Xvenz6 <= 1'b0; + else + Xvenz6 <= Mwn7v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Zyenz6 <= 1'b0; + else + Zyenz6 <= Fwn7v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + B2fnz6 <= 1'b0; + else + B2fnz6 <= Yvn7v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + D5fnz6 <= 1'b0; + else + D5fnz6 <= Rvn7v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + F8fnz6 <= 1'b0; + else + F8fnz6 <= Kvn7v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Hbfnz6 <= 1'b0; + else + Hbfnz6 <= Dvn7v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Jefnz6 <= 1'b0; + else + Jefnz6 <= Wun7v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Lhfnz6 <= 1'b0; + else + Lhfnz6 <= Pun7v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Nkfnz6 <= 1'b0; + else + Nkfnz6 <= Iun7v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Pnfnz6 <= 1'b0; + else + Pnfnz6 <= Bun7v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Rqfnz6 <= 1'b0; + else + Rqfnz6 <= Utn7v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Ttfnz6 <= 1'b0; + else + Ttfnz6 <= Ntn7v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Vwfnz6 <= 1'b0; + else + Vwfnz6 <= Gtn7v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Xzfnz6 <= 1'b0; + else + Xzfnz6 <= Zsn7v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Z2gnz6 <= 1'b0; + else + Z2gnz6 <= Ssn7v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + B6gnz6 <= 1'b0; + else + B6gnz6 <= Lsn7v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + D9gnz6 <= 1'b0; + else + D9gnz6 <= Esn7v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Fcgnz6 <= 1'b0; + else + Fcgnz6 <= Xrn7v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Hfgnz6 <= 1'b0; + else + Hfgnz6 <= Qrn7v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Jignz6 <= 1'b0; + else + Jignz6 <= Jrn7v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Llgnz6 <= 1'b0; + else + Llgnz6 <= Crn7v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Nognz6 <= 1'b0; + else + Nognz6 <= Vqn7v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Prgnz6 <= 1'b0; + else + Prgnz6 <= Oqn7v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Rugnz6 <= 1'b0; + else + Rugnz6 <= Hqn7v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Txgnz6 <= 1'b0; + else + Txgnz6 <= Aqn7v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + V0hnz6 <= 1'b0; + else + V0hnz6 <= Tpn7v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + X3hnz6 <= 1'b0; + else + X3hnz6 <= Mpn7v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Z6hnz6 <= 1'b0; + else + Z6hnz6 <= Fpn7v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Bahnz6 <= 1'b0; + else + Bahnz6 <= Yon7v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Cdhnz6 <= 1'b0; + else + Cdhnz6 <= Ron7v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Dghnz6 <= 1'b0; + else + Dghnz6 <= Yqk8v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Bjhnz6 <= 1'b0; + else + Bjhnz6 <= Oxfet6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Elhnz6 <= 1'b0; + else + Elhnz6 <= Qtfet6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Cnhnz6 <= 1'b0; + else + Cnhnz6 <= Gpfet6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Hphnz6 <= 1'b0; + else + Hphnz6 <= Svj8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Yrhnz6 <= 1'b0; + else + Yrhnz6 <= R1p7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Tuhnz6 <= 1'b0; + else + Tuhnz6 <= Gzo7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Zxhnz6 <= 1'b0; + else + Zxhnz6 <= R4l8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Pzhnz6 <= 1'b0; + else + Pzhnz6 <= Iqj8v6; + +always @(posedge HCLK) O2inz6 <= L5p7v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + S5inz6 <= 1'b0; + else + S5inz6 <= Ykj8v6; + +always @(posedge HCLK) Q8inz6 <= M1i8v6; +always @(posedge HCLK) Vainz6 <= Kon7v6; +always @(posedge HCLK) Xdinz6 <= Don7v6; +always @(posedge HCLK) Zginz6 <= Wnn7v6; +always @(posedge HCLK) Bkinz6 <= Pnn7v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Dninz6 <= 1'b0; + else + Dninz6 <= D0i8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Tpinz6 <= 1'b0; + else + Tpinz6 <= Wzh8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Osinz6 <= 1'b0; + else + Osinz6 <= W5a7z6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Kvinz6 <= 1'b0; + else + Kvinz6 <= Z2k8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Myinz6 <= 1'b0; + else + Myinz6 <= Id48v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + O1jnz6 <= 1'b0; + else + O1jnz6 <= Pyx7v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + N3jnz6 <= 1'b0; + else + N3jnz6 <= Znk8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + S5jnz6 <= 1'b0; + else + S5jnz6 <= Ibk8v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Q7jnz6 <= 1'b0; + else + Q7jnz6 <= HALTED; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + P9jnz6 <= 1'b0; + else + P9jnz6 <= Z2c7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Objnz6 <= 1'b0; + else + Objnz6 <= HALTED; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Qdjnz6 <= 1'b1; + else + Qdjnz6 <= Ddeet6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Wfjnz6 <= 1'b0; + else + Wfjnz6 <= X8eet6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Bijnz6 <= 1'b0; + else + Bijnz6 <= Ujx7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Fkjnz6 <= 1'b0; + else + Fkjnz6 <= Svc8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Gmjnz6 <= 1'b0; + else + Gmjnz6 <= Zwx7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Qojnz6 <= 1'b0; + else + Qojnz6 <= Tjl8v6; + +always @(posedge HCLK) Qrjnz6 <= U638v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ztjnz6 <= 1'b0; + else + Ztjnz6 <= Ugl8v6; + +always @(posedge FCLK) Fxjnz6 <= Hiv7v6; +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Lzjnz6 <= 1'b0; + else + Lzjnz6 <= Iyq7v6; + +always @(posedge FCLK) P2knz6 <= Uxq7v6; +always @(posedge FCLK) D5knz6 <= Lbq7v6; +always @(posedge FCLK) O7knz6 <= Lqp7v6; +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Daknz6 <= 1'b0; + else + Daknz6 <= Eqp7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Dcknz6 <= 1'b0; + else + Dcknz6 <= Ial8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Beknz6 <= 1'b0; + else + Beknz6 <= Rpl8v6; + +always @(posedge HCLK) Chknz6 <= K5z7v6; +always @(posedge HCLK) Mjknz6 <= Bjy7v6; +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Kmknz6 <= 1'b0; + else + Kmknz6 <= Inn7v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Qoknz6 <= 1'b0; + else + Qoknz6 <= Lrfet6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Vqknz6 <= 1'b0; + else + Vqknz6 <= Ixj8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Mtknz6 <= 1'b0; + else + Mtknz6 <= Xp38v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Jwknz6 <= 1'b0; + else + Jwknz6 <= Zyo7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Pzknz6 <= 1'b1; + else + Pzknz6 <= Qsl8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + J2lnz6 <= 1'b0; + else + J2lnz6 <= Xuj8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + L5lnz6 <= 1'b0; + else + L5lnz6 <= Mjl8v6; + +always @(posedge HCLK) L8lnz6 <= W3l8v6; +always @(posedge HCLK) Ualnz6 <= Wcy7v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Rdlnz6 <= 1'b0; + else + Rdlnz6 <= Msj8v6; + +always @(posedge HCLK) Pglnz6 <= T8i8v6; +always @(posedge HCLK) Uilnz6 <= Pbz7v6; +always @(posedge HCLK) Dllnz6 <= Tey7v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Aolnz6 <= 1'b0; + else + Aolnz6 <= Jll8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Arlnz6 <= 1'b0; + else + Arlnz6 <= Uzo7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Fulnz6 <= 1'b0; + else + Fulnz6 <= Eq38v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Exlnz6 <= 1'b0; + else + Exlnz6 <= Mkk8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Azlnz6 <= 1'b0; + else + Azlnz6 <= Fuw7v6; + +always @(posedge HCLK) A1mnz6 <= Mey7v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + X3mnz6 <= 1'b0; + else + X3mnz6 <= Cll8v6; + +always @(posedge HCLK) X6mnz6 <= Wxy7v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + G9mnz6 <= 1'b0; + else + G9mnz6 <= Zfl8v6; + +always @(posedge HCLK) Qbmnz6 <= Ycz7v6; +always @(posedge HCLK) Zdmnz6 <= Rdy7v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Wgmnz6 <= 1'b0; + else + Wgmnz6 <= Hkl8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Wjmnz6 <= 1'b0; + else + Wjmnz6 <= Y1p7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Cnmnz6 <= 1'b0; + else + Cnmnz6 <= Kil8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Zpmnz6 <= 1'b0; + else + Zpmnz6 <= Ihl8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Wsmnz6 <= 1'b0; + else + Wsmnz6 <= Dil8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Xvmnz6 <= 1'b0; + else + Xvmnz6 <= Phl8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Yymnz6 <= 1'b0; + else + Yymnz6 <= Whl8v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Z1nnz6 <= 1'b0; + else + Z1nnz6 <= Bnn7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + X4nnz6 <= 1'b0; + else + X4nnz6 <= Umn7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + T7nnz6 <= 1'b0; + else + T7nnz6 <= Dsx7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + N9nnz6 <= 1'b1; + else + N9nnz6 <= Wrx7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Gbnnz6 <= 1'b0; + else + Gbnnz6 <= M0r7v6; + +always @(posedge FCLK) Wcnnz6 <= F0r7v6; +always @(posedge FCLK) Sennz6 <= Fup7v6; +always @(posedge FCLK) Dhnnz6 <= Rtp7v6; +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Sjnnz6 <= 1'b0; + else + Sjnnz6 <= Tcl8v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Plnnz6 <= 1'b0; + else + Plnnz6 <= Ybl8v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Mnnnz6 <= 1'b0; + else + Mnnnz6 <= Qip7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Kpnnz6 <= 1'b0; + else + Kpnnz6 <= Arl8v6; + +always @(posedge HCLK) Lsnnz6 <= Tyk8v6; +always @(posedge HCLK) Vunnz6 <= Kky7v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Txnnz6 <= 1'b0; + else + Txnnz6 <= Z3y7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Vznnz6 <= 1'b0; + else + Vznnz6 <= Wol8v6; + +always @(posedge HCLK) W2onz6 <= O0z7v6; +always @(posedge HCLK) G5onz6 <= Giy7v6; +always @(posedge HCLK) E8onz6 <= Zp48v6; +always @(posedge HCLK) U9onz6 <= Pu88v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Nbonz6 <= 1'b0; + else + Nbonz6 <= Nak8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ceonz6 <= 1'b0; + else + Ceonz6 <= Jk88v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Sgonz6 <= 1'b0; + else + Sgonz6 <= Xms7v6; + +always @(posedge HCLK) Ijonz6 <= Oes7v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Xlonz6 <= 1'b0; + else + Xlonz6 <= Mlj8v6; + +always @(posedge HCLK) Voonz6 <= M9p7v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Yronz6 <= 1'b0; + else + Yronz6 <= Pqj8v6; + +always @(posedge HCLK) Xuonz6 <= H2i8v6; +always @(posedge HCLK) Cxonz6 <= Myk8v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Mzonz6 <= 1'b0; + else + Mzonz6 <= I4a7z6; + +always @(posedge HCLK) M2pnz6 <= Q1z7v6; +always @(posedge HCLK) V4pnz6 <= Kdy7v6; +always @(posedge FCLK) S7pnz6 <= K6r7v6; +always @(posedge FCLK) P9pnz6 <= Tmq7v6; +always @(posedge FCLK) Acpnz6 <= Tnp7v6; +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Pepnz6 <= 1'b0; + else + Pepnz6 <= Mnp7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Pgpnz6 <= 1'b0; + else + Pgpnz6 <= Ukp7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Nipnz6 <= 1'b0; + else + Nipnz6 <= Mql8v6; + +always @(posedge HCLK) Olpnz6 <= Omy7v6; +always @(posedge HCLK) Ynpnz6 <= Wjy7v6; +always @(posedge FCLK) Wqpnz6 <= Hy78v6; +always @(posedge FCLK) Etpnz6 <= Gxq7v6; +always @(posedge FCLK) Svpnz6 <= Ziq7v6; +always @(posedge FCLK) Dypnz6 <= Fnp7v6; +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + S0qnz6 <= 1'b0; + else + S0qnz6 <= Ymp7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + S2qnz6 <= 1'b0; + else + S2qnz6 <= Wlp7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Q4qnz6 <= 1'b0; + else + Q4qnz6 <= Bol8v6; + +always @(posedge HCLK) R7qnz6 <= C8z7v6; +always @(posedge HCLK) Baqnz6 <= Lhy7v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Zcqnz6 <= 1'b0; + else + Zcqnz6 <= Wdx7v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Xfqnz6 <= 1'b0; + else + Xfqnz6 <= Pdx7v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Viqnz6 <= 1'b0; + else + Viqnz6 <= Lgk8v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Zkqnz6 <= 1'b0; + else + Zkqnz6 <= Jw38v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Ynqnz6 <= 1'b0; + else + Ynqnz6 <= Rjk8v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Cqqnz6 <= 1'b0; + else + Cqqnz6 <= Sgk8v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Atqnz6 <= 1'b0; + else + Atqnz6 <= Oek8v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Evqnz6 <= 1'b0; + else + Evqnz6 <= T8x7v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Dyqnz6 <= 1'b0; + else + Dyqnz6 <= Jfk8v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + H0rnz6 <= 1'b0; + else + H0rnz6 <= Jww7v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + G3rnz6 <= 1'b0; + else + G3rnz6 <= Hek8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + K5rnz6 <= 1'b0; + else + K5rnz6 <= Pxj8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + O8rnz6 <= 1'b0; + else + O8rnz6 <= Ypl8v6; + +always @(posedge HCLK) Pbrnz6 <= Y5z7v6; +always @(posedge HCLK) Zdrnz6 <= Ijy7v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Xgrnz6 <= 1'b0; + else + Xgrnz6 <= B5y7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Yirnz6 <= 1'b0; + else + Yirnz6 <= Unl8v6; + +always @(posedge HCLK) Zlrnz6 <= U3z7v6; +always @(posedge HCLK) Jornz6 <= Ehy7v6; +always @(posedge FCLK) Hrrnz6 <= Aiv7v6; +always @(posedge FCLK) Ntrnz6 <= Kgv7v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Tvrnz6 <= 1'b0; + else + Tvrnz6 <= Kpl8v6; + +always @(posedge HCLK) Uyrnz6 <= Nwy7v6; +always @(posedge HCLK) E1snz6 <= Uiy7v6; +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + C4snz6 <= 1'b0; + else + C4snz6 <= X7l8v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + F6snz6 <= 1'b0; + else + F6snz6 <= Xle8v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + F8snz6 <= 1'b0; + else + F8snz6 <= Ulv7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Hasnz6 <= 1'b1; + else + Hasnz6 <= Bik8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Fcsnz6 <= 1'b0; + else + Fcsnz6 <= Axbdt6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Jesnz6 <= 1'b0; + else + Jesnz6 <= Wxj8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Hhsnz6 <= 1'b0; + else + Hhsnz6 <= Kyj8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Kksnz6 <= 1'b0; + else + Kksnz6 <= Jsl8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Xmsnz6 <= 1'b0; + else + Xmsnz6 <= Dyj8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ypsnz6 <= 1'b0; + else + Ypsnz6 <= Ril8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Etsnz6 <= 1'b0; + else + Etsnz6 <= Yl48v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ewsnz6 <= 1'b0; + else + Ewsnz6 <= Qnj8v6; + +always @(posedge HCLK) Dzsnz6 <= D8p7v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + H2tnz6 <= 1'b0; + else + H2tnz6 <= Yrj8v6; + +always @(posedge HCLK) G5tnz6 <= E4i8v6; +always @(posedge HCLK) M7tnz6 <= Yyy7v6; +always @(posedge HCLK) W9tnz6 <= Niy7v6; +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Uctnz6 <= 1'b1; + else + Uctnz6 <= Dp78v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Oetnz6 <= 1'b0; + else + Oetnz6 <= Rhu7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Mgtnz6 <= 1'b0; + else + Mgtnz6 <= Iwk8v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Kitnz6 <= 1'b0; + else + Kitnz6 <= Nmn7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Jktnz6 <= 1'b0; + else + Jktnz6 <= Pwk8v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Hmtnz6 <= 1'b0; + else + Hmtnz6 <= Kxk8v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Fotnz6 <= 1'b0; + else + Fotnz6 <= Wwk8v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Dqtnz6 <= 1'b0; + else + Dqtnz6 <= Dxk8v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Bstnz6 <= 1'b0; + else + Bstnz6 <= Hzs7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Wttnz6 <= 1'b0; + else + Wttnz6 <= Jur7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Uvtnz6 <= 1'b0; + else + Uvtnz6 <= Evr7v6; + +always @(posedge TRACECLKIN or negedge T0adt6) + if(~T0adt6) + Hytnz6 <= 1'b0; + else + Hytnz6 <= Ja1nz6[2]; + +always @(posedge TRACECLKIN or negedge T0adt6) + if(~T0adt6) + A1unz6 <= 1'b0; + else + A1unz6 <= Fwg7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + T3unz6 <= 1'b0; + else + T3unz6 <= Xur7v6; + +always @(posedge TRACECLKIN or negedge T0adt6) + if(~T0adt6) + G6unz6 <= 1'b0; + else + G6unz6 <= Ja1nz6[1]; + +always @(posedge TRACECLKIN or negedge T0adt6) + if(~T0adt6) + Z8unz6 <= 1'b0; + else + Z8unz6 <= Qtg7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Sbunz6 <= 1'b0; + else + Sbunz6 <= Mzr7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Qdunz6 <= 1'b0; + else + Qdunz6 <= Q1s7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Ofunz6 <= 1'b0; + else + Ofunz6 <= Ixr7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Mhunz6 <= 1'b0; + else + Mhunz6 <= Lvr7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Kjunz6 <= 1'b0; + else + Kjunz6 <= Qll8v6; + +always @(posedge HCLK) Kmunz6 <= I4z7v6; +always @(posedge HCLK) Tounz6 <= Afy7v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Qrunz6 <= 1'b0; + else + Qrunz6 <= T0y7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Stunz6 <= 1'b0; + else + Stunz6 <= V7k8v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Uwunz6 <= 1'b0; + else + Uwunz6 <= Gmn7v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Vzunz6 <= 1'b0; + else + Vzunz6 <= Zln7v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + W2vnz6 <= 1'b0; + else + W2vnz6 <= Xfk8v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + U5vnz6 <= 1'b0; + else + U5vnz6 <= Alk8v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Y7vnz6 <= 1'b0; + else + Y7vnz6 <= Tkk8v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Cavnz6 <= 1'b0; + else + Cavnz6 <= Ovfet6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ccvnz6 <= 1'b0; + else + Ccvnz6 <= Zvj8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Tevnz6 <= 1'b0; + else + Tevnz6 <= Lvj8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Khvnz6 <= 1'b0; + else + Khvnz6 <= Evj8v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Pkvnz6 <= 1'b0; + else + Pkvnz6 <= Gwj8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Smvnz6 <= 1'b0; + else + Smvnz6 <= Gok8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Rovnz6 <= 1'b0; + else + Rovnz6 <= Fkk8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Prvnz6 <= 1'b0; + else + Prvnz6 <= V6l8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Stvnz6 <= 1'b0; + else + Stvnz6 <= Mmddt6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Wvvnz6 <= 1'b0; + else + Wvvnz6 <= Quj8v6; + +always @(posedge HCLK) Yyvnz6 <= Aez7v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + D1wnz6 <= 1'b0; + else + D1wnz6 <= Xel8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + N3wnz6 <= 1'b0; + else + N3wnz6 <= Enk8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + O5wnz6 <= 1'b0; + else + O5wnz6 <= F0y7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Q7wnz6 <= 1'b0; + else + Q7wnz6 <= Iol8v6; + +always @(posedge HCLK) Rawnz6 <= S2z7v6; +always @(posedge HCLK) Bdwnz6 <= Shy7v6; +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Zfwnz6 <= 1'b0; + else + Zfwnz6 <= Drymz6[0]; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Fiwnz6 <= 1'b0; + else + Fiwnz6 <= Us77v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Lkwnz6 <= 1'b0; + else + Lkwnz6 <= Eml8v6; + +always @(posedge HCLK) Mnwnz6 <= W038v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Eqwnz6 <= 1'b0; + else + Eqwnz6 <= Z2z7v6; + +always @(posedge HCLK) Oswnz6 <= Zvy7v6; +always @(posedge HCLK) Yuwnz6 <= Zhy7v6; +always @(posedge HCLK) Wxwnz6 <= Ks48v6; +always @(posedge HCLK) Mzwnz6 <= Vfy7v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + K2xnz6 <= 1'b0; + else + K2xnz6 <= Lml8v6; + +always @(posedge HCLK) L5xnz6 <= E2z7v6; +always @(posedge FCLK) V7xnz6 <= Lkv7v6; +always @(posedge FCLK) Baxnz6 <= Viv7v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Hcxnz6 <= 1'b0; + else + Hcxnz6 <= Zml8v6; + +always @(posedge HCLK) Ifxnz6 <= Kyy7v6; +always @(posedge HCLK) Shxnz6 <= Jgy7v6; +always @(posedge FCLK) Qkxnz6 <= V948v6; +always @(posedge FCLK) Wmxnz6 <= Ca48v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Cpxnz6 <= 1'b0; + else + Cpxnz6 <= Azk8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Drxnz6 <= 1'b0; + else + Drxnz6 <= Rzx7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ftxnz6 <= 1'b0; + else + Ftxnz6 <= Sml8v6; + +always @(posedge HCLK) Gwxnz6 <= A0z7v6; +always @(posedge HCLK) Qyxnz6 <= Cgy7v6; +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + O1ynz6 <= 1'b0; + else + O1ynz6 <= Ql78v6; + +always @(posedge TRACECLKIN or negedge T0adt6) + if(~T0adt6) + L3ynz6 <= 1'b0; + else + L3ynz6 <= Mj78v6; + +always @(posedge TRACECLKIN or negedge T0adt6) + if(~T0adt6) + J5ynz6 <= 1'b0; + else + J5ynz6 <= Tj78v6; + +always @(posedge TRACECLKIN or negedge T0adt6) + if(~T0adt6) + E7ynz6 <= 1'b0; + else + E7ynz6 <= Sln7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Y8ynz6 <= 1'b0; + else + Y8ynz6 <= W3e7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Ebynz6 <= 1'b0; + else + Ebynz6 <= Thg7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Kdynz6 <= 1'b0; + else + Kdynz6 <= Lln7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Gfynz6 <= 1'b0; + else + Gfynz6 <= Eln7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Chynz6 <= 1'b0; + else + Chynz6 <= Xkn7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Yiynz6 <= 1'b1; + else + Yiynz6 <= Ijr7v6; + +always @(posedge FCLK) Xkynz6 <= Bcr7v6; +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Rmynz6 <= 1'b0; + else + Rmynz6 <= Ehr7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Hoynz6 <= 1'b1; + else + Hoynz6 <= Ubr7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Gqynz6 <= 1'b0; + else + Gqynz6 <= Qkn7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Gsynz6 <= 1'b0; + else + Gsynz6 <= Jkn7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Guynz6 <= 1'b0; + else + Guynz6 <= Ckn7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Gwynz6 <= 1'b0; + else + Gwynz6 <= Vjn7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Gyynz6 <= 1'b1; + else + Gyynz6 <= Ojn7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + G0znz6 <= 1'b0; + else + G0znz6 <= Xvq7v6; + +always @(posedge FCLK) Y2znz6 <= Qvq7v6; +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + J5znz6 <= 1'b0; + else + J5znz6 <= Jvq7v6; + +always @(posedge FCLK) B8znz6 <= N5q7v6; +always @(posedge FCLK) Maznz6 <= Zxp7v6; +always @(posedge FCLK) Xcznz6 <= Ytp7v6; +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Ifznz6 <= 1'b0; + else + Ifznz6 <= Brq7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Aiznz6 <= 1'b0; + else + Aiznz6 <= Uqq7v6; + +always @(posedge FCLK) Skznz6 <= Ktp7v6; +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Dnznz6 <= 1'b1; + else + Dnznz6 <= Nqq7v6; + +always @(posedge HCLK) Kpznz6 <= Qgy7v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Isznz6 <= 1'b0; + else + Isznz6 <= Gnl8v6; + +always @(posedge HCLK) Jvznz6 <= E9z7v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Txznz6 <= 1'b0; + else + Txznz6 <= Kex7v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + R00oz6 <= 1'b0; + else + R00oz6 <= Qfk8v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + P30oz6 <= 1'b0; + else + P30oz6 <= Olk8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + T50oz6 <= 1'b0; + else + T50oz6 <= Pik8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + T70oz6 <= 1'b0; + else + T70oz6 <= D4l8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ba0oz6 <= 1'b0; + else + Ba0oz6 <= Ej38v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ec0oz6 <= 1'b0; + else + Ec0oz6 <= S1l8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ge0oz6 <= 1'b0; + else + Ge0oz6 <= Gk38v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Jg0oz6 <= 1'b0; + else + Jg0oz6 <= Wpk8v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Ki0oz6 <= 1'b0; + else + Ki0oz6 <= H3adt6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Ek0oz6 <= 1'b0; + else + Ek0oz6 <= H3adt6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Em0oz6 <= 1'b0; + else + Em0oz6 <= T5b7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Io0oz6 <= 1'b0; + else + Io0oz6 <= Wha7z6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Sq0oz6 <= 1'b0; + else + Sq0oz6 <= U7a7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Qs0oz6 <= 1'b0; + else + Qs0oz6 <= Xm87v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Wu0oz6 <= 1'b0; + else + Wu0oz6 <= Fj87v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Xw0oz6 <= 1'b0; + else + Xw0oz6 <= Ih87v6; + +always @(posedge HCLK) Yy0oz6 <= Dau7v6; +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + V01oz6 <= 1'b0; + else + V01oz6 <= N3s7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Q21oz6 <= 1'b0; + else + Q21oz6 <= C1s7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + O41oz6 <= 1'b0; + else + O41oz6 <= Yyr7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + M61oz6 <= 1'b0; + else + M61oz6 <= L1l8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + O81oz6 <= 1'b0; + else + O81oz6 <= Zj38v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ra1oz6 <= 1'b0; + else + Ra1oz6 <= E1l8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Md1oz6 <= 1'b0; + else + Md1oz6 <= J1k8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Eg1oz6 <= 1'b1; + else + Eg1oz6 <= H9i8v6; + +always @(posedge FCLK) Ji1oz6 <= Ja48v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Pk1oz6 <= 1'b0; + else + Pk1oz6 <= Otc8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ln1oz6 <= 1'b0; + else + Ln1oz6 <= P648v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Qp1oz6 <= 1'b0; + else + Qp1oz6 <= P0b7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Or1oz6 <= 1'b0; + else + Or1oz6 <= Mya7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Zt1oz6 <= 1'b0; + else + Zt1oz6 <= Xco7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Wv1oz6 <= 1'b0; + else + Wv1oz6 <= Ox67v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Jx1oz6 <= 1'b0; + else + Jx1oz6 <= Uia7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Oz1oz6 <= 1'b0; + else + Oz1oz6 <= W387v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + H12oz6 <= 1'b0; + else + H12oz6 <= Nfu7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + H32oz6 <= 1'b0; + else + H32oz6 <= Gfu7v6; + +always @(posedge HCLK) H52oz6 <= O6t7v6; +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + E72oz6 <= 1'b0; + else + E72oz6 <= U3s7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Z82oz6 <= 1'b0; + else + Z82oz6 <= J1s7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Xa2oz6 <= 1'b0; + else + Xa2oz6 <= Fzr7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Vc2oz6 <= 1'b0; + else + Vc2oz6 <= Jmk8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Df2oz6 <= 1'b0; + else + Df2oz6 <= Fzj8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Eh2oz6 <= 1'b0; + else + Eh2oz6 <= Yyj8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Gj2oz6 <= 1'b0; + else + Gj2oz6 <= Ryj8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Lm2oz6 <= 1'b0; + else + Lm2oz6 <= Mti8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ip2oz6 <= 1'b0; + else + Ip2oz6 <= Saj8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Fs2oz6 <= 1'b0; + else + Fs2oz6 <= Laj8v6; + +always @(posedge HCLK) Cv2oz6 <= Fc08v6; +always @(posedge HCLK) Sx2oz6 <= Rb08v6; +always @(posedge HCLK) J03oz6 <= O608v6; +always @(posedge HCLK) A33oz6 <= W308v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Q53oz6 <= 1'b0; + else + Q53oz6 <= Qmk8v6; + +always @(posedge HCLK) Z73oz6 <= Uaz7v6; +always @(posedge HCLK) Ja3oz6 <= Hfy7v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Hd3oz6 <= 1'b0; + else + Hd3oz6 <= Kfa8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Tg3oz6 <= 1'b0; + else + Tg3oz6 <= Lxh8v6; + +always @(posedge HCLK) Sj3oz6 <= Exh8v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Lm3oz6 <= 1'b0; + else + Lm3oz6 <= Nnl8v6; + +always @(posedge HCLK) Mp3oz6 <= W4z7v6; +always @(posedge HCLK) Wr3oz6 <= Xgy7v6; +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Uu3oz6 <= 1'b0; + else + Uu3oz6 <= W288v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Ww3oz6 <= 1'b0; + else + Ww3oz6 <= Vhw7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Wy3oz6 <= 1'b0; + else + Wy3oz6 <= W8zmz6[0]; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + A14oz6 <= 1'b0; + else + A14oz6 <= Vzymz6[0]; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + J34oz6 <= 1'b0; + else + J34oz6 <= Vzymz6[1]; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + S54oz6 <= 1'b0; + else + S54oz6 <= Vzymz6[2]; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + B84oz6 <= 1'b0; + else + B84oz6 <= Vzymz6[3]; + +always @(posedge HCLK) Ka4oz6 <= Ocu7v6; +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Hc4oz6 <= 1'b0; + else + Hc4oz6 <= S2s7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Ce4oz6 <= 1'b0; + else + Ce4oz6 <= H0s7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Ag4oz6 <= 1'b0; + else + Ag4oz6 <= Dyr7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Yh4oz6 <= 1'b0; + else + Yh4oz6 <= Lvc8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ak4oz6 <= 1'b0; + else + Ak4oz6 <= Sj38v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Dm4oz6 <= 1'b0; + else + Dm4oz6 <= V0k8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Vo4oz6 <= 1'b0; + else + Vo4oz6 <= Yil8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ds4oz6 <= 1'b0; + else + Ds4oz6 <= Vtj8v6; + +always @(posedge HCLK) Gv4oz6 <= Fao7v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ky4oz6 <= 1'b0; + else + Ky4oz6 <= Htj8v6; + +always @(posedge HCLK) O15oz6 <= Ke48v6; +always @(posedge HCLK) R45oz6 <= Uos7v6; +always @(posedge HCLK) V75oz6 <= Mrs7v6; +always @(posedge HCLK) Za5oz6 <= Ei48v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ce5oz6 <= 1'b0; + else + Ce5oz6 <= Juj8v6; + +always @(posedge HCLK) Fh5oz6 <= P8o7v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Jk5oz6 <= 1'b0; + else + Jk5oz6 <= Cuj8v6; + +always @(posedge HCLK) Nn5oz6 <= De48v6; +always @(posedge HCLK) Qq5oz6 <= Nos7v6; +always @(posedge HCLK) Ut5oz6 <= Frs7v6; +always @(posedge HCLK) Yw5oz6 <= Xh48v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + B06oz6 <= 1'b0; + else + B06oz6 <= Atj8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + E36oz6 <= 1'b0; + else + E36oz6 <= Xnj8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + D66oz6 <= 1'b0; + else + D66oz6 <= Fti8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + A96oz6 <= 1'b0; + else + A96oz6 <= Hjn7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Db6oz6 <= 1'b0; + else + Db6oz6 <= Iyx7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Hd6oz6 <= 1'b0; + else + Hd6oz6 <= N2l8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ig6oz6 <= 1'b0; + else + Ig6oz6 <= U2l8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Jj6oz6 <= 1'b0; + else + Jj6oz6 <= Iws7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Mm6oz6 <= 1'b0; + else + Mm6oz6 <= Z1l8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Pp6oz6 <= 1'b0; + else + Pp6oz6 <= Quc8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Rr6oz6 <= 1'b0; + else + Rr6oz6 <= O7k8v6; + +always @(posedge HCLK) Yt6oz6 <= Y408v6; +always @(posedge HCLK) Ow6oz6 <= Gz28v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Fz6oz6 <= 1'b0; + else + Fz6oz6 <= V0z7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + O17oz6 <= 1'b0; + else + O17oz6 <= Rsi8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + O47oz6 <= 1'b0; + else + O47oz6 <= Abo7v6; + +always @(posedge HCLK) O77oz6 <= Lvy7v6; +always @(posedge HCLK) Ka7oz6 <= Gqi8v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Gd7oz6 <= 1'b0; + else + Gd7oz6 <= O0k8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Hf7oz6 <= 1'b0; + else + Hf7oz6 <= Csl8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Li7oz6 <= 1'b0; + else + Li7oz6 <= Mao7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Kl7oz6 <= 1'b0; + else + Kl7oz6 <= Lbi8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + No7oz6 <= 1'b0; + else + No7oz6 <= U3d7z6[1]; + +always @(posedge HCLK) Pr7oz6 <= N6p7v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Tu7oz6 <= 1'b0; + else + Tu7oz6 <= Jgj8v6; + +always @(posedge HCLK) Rx7oz6 <= Vap7v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + U08oz6 <= 1'b0; + else + U08oz6 <= Gpj8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + T38oz6 <= 1'b0; + else + T38oz6 <= Evc8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + V58oz6 <= 1'b0; + else + V58oz6 <= Xuc8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + X78oz6 <= 1'b0; + else + X78oz6 <= Lj38v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Aa8oz6 <= 1'b0; + else + Aa8oz6 <= Q1k8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Sc8oz6 <= 1'b0; + else + Sc8oz6 <= J7l8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Sf8oz6 <= 1'b0; + else + Sf8oz6 <= J8k8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ui8oz6 <= 1'b1; + else + Ui8oz6 <= C8k8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Xk8oz6 <= 1'b0; + else + Xk8oz6 <= Rzb8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ko8oz6 <= 1'b0; + else + Ko8oz6 <= Ssnet6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Hr8oz6 <= 1'b0; + else + Hr8oz6 <= Nt88v6; + +always @(posedge HCLK) Vt8oz6 <= Wis7v6; +always @(posedge HCLK) Jw8oz6 <= Zi48v6; +always @(posedge HCLK) Mz8oz6 <= Gj48v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + P29oz6 <= 1'b0; + else + P29oz6 <= Wqj8v6; + +always @(posedge HCLK) O59oz6 <= X4p7v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + S89oz6 <= 1'b0; + else + S89oz6 <= Tlj8v6; + +always @(posedge HCLK) Qb9oz6 <= Y0i8v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Vd9oz6 <= 1'b0; + else + Vd9oz6 <= C1k8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ng9oz6 <= 1'b0; + else + Ng9oz6 <= X1k8v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Qj9oz6 <= 1'b0; + else + Qj9oz6 <= Ppk8v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Ql9oz6 <= 1'b0; + else + Ql9oz6 <= Nw97v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Nn9oz6 <= 1'b0; + else + Nn9oz6 <= Yk87v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Up9oz6 <= 1'b0; + else + Up9oz6 <= Zz97v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Zr9oz6 <= 1'b0; + else + Zr9oz6 <= T1zmz6[7]; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Gu9oz6 <= 1'b1; + else + Gu9oz6 <= Rxk8v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Gw9oz6 <= 1'b0; + else + Gw9oz6 <= Bwk8v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Gy9oz6 <= 1'b0; + else + Gy9oz6 <= Uvk8v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + G0aoz6 <= 1'b0; + else + G0aoz6 <= Zuk8v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + G2aoz6 <= 1'b0; + else + G2aoz6 <= L2s7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + B4aoz6 <= 1'b0; + else + B4aoz6 <= A0s7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Z5aoz6 <= 1'b0; + else + Z5aoz6 <= Wxr7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + X7aoz6 <= 1'b0; + else + X7aoz6 <= H0k8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Z9aoz6 <= 1'b0; + else + Z9aoz6 <= M0y7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Bcaoz6 <= 1'b0; + else + Bcaoz6 <= Cuc8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Xeaoz6 <= 1'b0; + else + Xeaoz6 <= D748v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Chaoz6 <= 1'b0; + else + Chaoz6 <= Uy38v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Bkaoz6 <= 1'b0; + else + Bkaoz6 <= Ny38v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Anaoz6 <= 1'b0; + else + Anaoz6 <= Msc8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Wpaoz6 <= 1'b0; + else + Wpaoz6 <= Aek8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Bsaoz6 <= 1'b0; + else + Bsaoz6 <= Cww7v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Avaoz6 <= 1'b0; + else + Avaoz6 <= Vvw7v6; + +always @(posedge HCLK) Zxaoz6 <= B4s7v6; +always @(posedge HCLK) R0boz6 <= Qfs7v6; +always @(posedge HCLK) G3boz6 <= Bps7v6; +always @(posedge HCLK) K6boz6 <= Ips7v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + O9boz6 <= 1'b0; + else + O9boz6 <= Jnj8v6; + +always @(posedge HCLK) Ncboz6 <= K8p7v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Rfboz6 <= 1'b0; + else + Rfboz6 <= Rrj8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Qiboz6 <= 1'b0; + else + Qiboz6 <= K6j8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Plboz6 <= 1'b0; + else + Plboz6 <= U798v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Foboz6 <= 1'b1; + else + Foboz6 <= I898v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Zqboz6 <= 1'b0; + else + Zqboz6 <= Ysi8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Qtboz6 <= 1'b0; + else + Qtboz6 <= Bxj8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Jwboz6 <= 1'b0; + else + Jwboz6 <= Rv88v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Wyboz6 <= 1'b0; + else + Wyboz6 <= Sb48v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Y1coz6 <= 1'b0; + else + Y1coz6 <= Ytw7v6; + +always @(posedge HCLK) Y3coz6 <= Aio7v6; +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Q6coz6 <= 1'b0; + else + Q6coz6 <= Buf8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + L8coz6 <= 1'b0; + else + L8coz6 <= F9h8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Eacoz6 <= 1'b0; + else + Eacoz6 <= Y8h8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Xbcoz6 <= 1'b0; + else + Xbcoz6 <= R8h8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Qdcoz6 <= 1'b0; + else + Qdcoz6 <= K8h8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Jfcoz6 <= 1'b0; + else + Jfcoz6 <= D8h8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Chcoz6 <= 1'b0; + else + Chcoz6 <= W7h8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Vicoz6 <= 1'b0; + else + Vicoz6 <= P7h8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Okcoz6 <= 1'b0; + else + Okcoz6 <= I7h8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Hmcoz6 <= 1'b0; + else + Hmcoz6 <= B7h8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Aocoz6 <= 1'b0; + else + Aocoz6 <= Fpf8v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Cqcoz6 <= 1'b0; + else + Cqcoz6 <= Eqh8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Xrcoz6 <= 1'b0; + else + Xrcoz6 <= Jqg8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Aucoz6 <= 1'b0; + else + Aucoz6 <= Ajn7v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Pvcoz6 <= 1'b0; + else + Pvcoz6 <= Rfh8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Fxcoz6 <= 1'b0; + else + Fxcoz6 <= Kfh8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Vycoz6 <= 1'b0; + else + Vycoz6 <= Dfh8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + J0doz6 <= 1'b0; + else + J0doz6 <= Jv47v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + X1doz6 <= 1'b0; + else + X1doz6 <= Weh8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + T3doz6 <= 1'b0; + else + T3doz6 <= Peh8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + P5doz6 <= 1'b0; + else + P5doz6 <= Ieh8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + L7doz6 <= 1'b0; + else + L7doz6 <= Beh8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + H9doz6 <= 1'b0; + else + H9doz6 <= Udh8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Dbdoz6 <= 1'b0; + else + Dbdoz6 <= Ndh8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Zcdoz6 <= 1'b0; + else + Zcdoz6 <= Ech8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Vedoz6 <= 1'b0; + else + Vedoz6 <= Sch8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Rgdoz6 <= 1'b0; + else + Rgdoz6 <= Zch8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Nidoz6 <= 1'b0; + else + Nidoz6 <= Gdh8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Jkdoz6 <= 1'b0; + else + Jkdoz6 <= Lch8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Fmdoz6 <= 1'b0; + else + Fmdoz6 <= Xbh8v6; + +always @(posedge SWCLKTCK or negedge nTRST) + if(~nTRST) + Bodoz6 <= 1'b1; + else + Bodoz6 <= Z3ymz6[2]; + +always @(posedge SWCLKTCK or negedge nTRST) + if(~nTRST) + Updoz6 <= 1'b1; + else + Updoz6 <= Z3ymz6[0]; + +always @(posedge SWCLKTCK or negedge nTRST) + if(~nTRST) + Nrdoz6 <= 1'b1; + else + Nrdoz6 <= Z3ymz6[3]; + +always @(posedge SWCLKTCK or negedge nTRST) + if(~nTRST) + Gtdoz6 <= 1'b1; + else + Gtdoz6 <= Z3ymz6[1]; + +always @(posedge C3a7z6 or negedge Sz9dt6) + if(~Sz9dt6) + Zudoz6 <= 1'b0; + else + Zudoz6 <= D567v6; + +always @(posedge SWCLKTCK or negedge nTRST) + if(~nTRST) + Nwdoz6 <= 1'b0; + else + Nwdoz6 <= Vah8v6; + +always @(posedge SWCLKTCK or negedge nTRST) + if(~nTRST) + Fydoz6 <= 1'b0; + else + Fydoz6 <= Cbh8v6; + +always @(posedge SWCLKTCK or negedge nTRST) + if(~nTRST) + Xzdoz6 <= 1'b0; + else + Xzdoz6 <= Qbh8v6; + +always @(posedge SWCLKTCK or negedge nTRST) + if(~nTRST) + P1eoz6 <= 1'b0; + else + P1eoz6 <= Jbh8v6; + +always @(posedge SWCLKTCK or negedge nTRST) + if(~nTRST) + H3eoz6 <= 1'b0; + else + H3eoz6 <= Oah8v6; + +always @(posedge SWCLKTCK or negedge nTRST) + if(~nTRST) + Y4eoz6 <= 1'b1; + else + Y4eoz6 <= Hah8v6; + +always @(posedge SWCLKTCK or negedge nTRST) + if(~nTRST) + P6eoz6 <= 1'b1; + else + P6eoz6 <= Aah8v6; + +always @(posedge SWCLKTCK or negedge nTRST) + if(~nTRST) + G8eoz6 <= 1'b1; + else + G8eoz6 <= T9h8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + X9eoz6 <= 1'b0; + else + X9eoz6 <= Pmg8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Nbeoz6 <= 1'b0; + else + Nbeoz6 <= Img8v6; + +always @(posedge SWCLKTCK) Edeoz6 <= Ymh8v6; +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Veeoz6 <= 1'b0; + else + Veeoz6 <= Itg8v6; + +always @(posedge FCLK) Ngeoz6 <= Fag8v6; +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Djeoz6 <= 1'b0; + else + Djeoz6 <= H4g8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Ykeoz6 <= 1'b0; + else + Ykeoz6 <= C4h8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Rmeoz6 <= 1'b0; + else + Rmeoz6 <= V3h8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Koeoz6 <= 1'b0; + else + Koeoz6 <= O3h8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Dqeoz6 <= 1'b0; + else + Dqeoz6 <= H3h8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Wreoz6 <= 1'b0; + else + Wreoz6 <= A3h8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Pteoz6 <= 1'b0; + else + Pteoz6 <= T2h8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Hveoz6 <= 1'b0; + else + Hveoz6 <= M2h8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Zweoz6 <= 1'b0; + else + Zweoz6 <= F2h8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Ryeoz6 <= 1'b0; + else + Ryeoz6 <= Rof8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + I0foz6 <= 1'b0; + else + I0foz6 <= Tin7v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + M2foz6 <= 1'b0; + else + M2foz6 <= Min7v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Q4foz6 <= 1'b0; + else + Q4foz6 <= Fin7v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + U6foz6 <= 1'b0; + else + U6foz6 <= Yhn7v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Y8foz6 <= 1'b0; + else + Y8foz6 <= Rhn7v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Cbfoz6 <= 1'b0; + else + Cbfoz6 <= Khn7v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Gdfoz6 <= 1'b0; + else + Gdfoz6 <= Dhn7v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Lffoz6 <= 1'b0; + else + Lffoz6 <= Wgn7v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Qhfoz6 <= 1'b0; + else + Qhfoz6 <= Pgn7v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Vjfoz6 <= 1'b0; + else + Vjfoz6 <= Ign7v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Amfoz6 <= 1'b0; + else + Amfoz6 <= Bgn7v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Fofoz6 <= 1'b0; + else + Fofoz6 <= Ufn7v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Kqfoz6 <= 1'b0; + else + Kqfoz6 <= Nfn7v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Psfoz6 <= 1'b0; + else + Psfoz6 <= Gfn7v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Uufoz6 <= 1'b0; + else + Uufoz6 <= Zen7v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Zwfoz6 <= 1'b0; + else + Zwfoz6 <= Sen7v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Ezfoz6 <= 1'b0; + else + Ezfoz6 <= Len7v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + J1goz6 <= 1'b0; + else + J1goz6 <= Een7v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + V2goz6 <= 1'b0; + else + V2goz6 <= Esf8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + K4goz6 <= 1'b0; + else + K4goz6 <= Oa67v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + A6goz6 <= 1'b0; + else + A6goz6 <= Xdn7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + X7goz6 <= 1'b0; + else + X7goz6 <= Qdn7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + V9goz6 <= 1'b0; + else + V9goz6 <= Jdn7v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Nbgoz6 <= 1'b0; + else + Nbgoz6 <= Up47v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Jdgoz6 <= 1'b0; + else + Jdgoz6 <= Un67v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Gfgoz6 <= 1'b0; + else + Gfgoz6 <= Cdn7v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Sggoz6 <= 1'b0; + else + Sggoz6 <= Vcn7v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Ligoz6 <= 1'b0; + else + Ligoz6 <= Ocn7v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Ckgoz6 <= 1'b0; + else + Ckgoz6 <= Xrf8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Rlgoz6 <= 1'b0; + else + Rlgoz6 <= G967v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Jngoz6 <= 1'b0; + else + Jngoz6 <= Hcn7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Ipgoz6 <= 1'b0; + else + Ipgoz6 <= Acn7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Irgoz6 <= 1'b0; + else + Irgoz6 <= Xph8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Ctgoz6 <= 1'b0; + else + Ctgoz6 <= Cqg8v6; + +always @(posedge SWCLKTCK) Evgoz6 <= Plh8v6; +always @(posedge SWCLKTCK) Wwgoz6 <= Wlh8v6; +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Oygoz6 <= 1'b0; + else + Oygoz6 <= Fog8v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + P0hoz6 <= 1'b0; + else + P0hoz6 <= Bvl8v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + A2hoz6 <= 1'b0; + else + A2hoz6 <= Tuh8v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + L3hoz6 <= 1'b0; + else + L3hoz6 <= Tbn7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Z5hoz6 <= 1'b0; + else + Z5hoz6 <= Dth8v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + P8hoz6 <= 1'b0; + else + P8hoz6 <= Wsh8v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Abhoz6 <= 1'b0; + else + Abhoz6 <= Vvh8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Uchoz6 <= 1'b0; + else + Uchoz6 <= Voh8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Jehoz6 <= 1'b0; + else + Jehoz6 <= Btg8v6; + +always @(posedge SWCLKTCK) Wfhoz6 <= Hvh8v6; +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Ohhoz6 <= 1'b0; + else + Ohhoz6 <= Avh8v6; + +always @(posedge SWCLKTCK) Cjhoz6 <= Tgh8v6; +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Ukhoz6 <= 1'b0; + else + Ukhoz6 <= Kug8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Imhoz6 <= 1'b0; + else + Imhoz6 <= Kng8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Dohoz6 <= 1'b0; + else + Dohoz6 <= O667v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Sphoz6 <= 1'b0; + else + Sphoz6 <= R1adt6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Wqhoz6 <= 1'b0; + else + Wqhoz6 <= A9bdt6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Urhoz6 <= 1'b0; + else + Urhoz6 <= R1adt6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Sthoz6 <= 1'b0; + else + Sthoz6 <= Gr67v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Rvhoz6 <= 1'b0; + else + Rvhoz6 <= Gul8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Kxhoz6 <= 1'b0; + else + Kxhoz6 <= Mbn7v6; + +always @(posedge FCLK) Pzhoz6 <= Ztl8v6; +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + F2ioz6 <= 1'b0; + else + F2ioz6 <= Fbn7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + X4ioz6 <= 1'b0; + else + X4ioz6 <= I9f8v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + W7ioz6 <= 1'b0; + else + W7ioz6 <= Bkx7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Faioz6 <= 1'b0; + else + Faioz6 <= Yan7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Mcioz6 <= 1'b0; + else + Mcioz6 <= Y5k8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Veioz6 <= 1'b0; + else + Veioz6 <= K5k8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Xhioz6 <= 1'b0; + else + Xhioz6 <= D5k8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Xkioz6 <= 1'b0; + else + Xkioz6 <= Pkx7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Xnioz6 <= 1'b0; + else + Xnioz6 <= Bhl8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Arioz6 <= 1'b0; + else + Arioz6 <= B4k8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Utioz6 <= 1'b0; + else + Utioz6 <= I4k8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Twioz6 <= 1'b0; + else + Twioz6 <= N3k8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Pzioz6 <= 1'b0; + else + Pzioz6 <= G3k8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + L2joz6 <= 1'b0; + else + L2joz6 <= Uok8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + N5joz6 <= 1'b0; + else + N5joz6 <= R5k8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + F8joz6 <= 1'b0; + else + F8joz6 <= Jvi8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Fbjoz6 <= 1'b0; + else + Fbjoz6 <= Ran7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Jdjoz6 <= 1'b0; + else + Jdjoz6 <= Yrc8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Cgjoz6 <= 1'b0; + else + Cgjoz6 <= Snk8v6; + +always @(posedge HCLK) Eijoz6 <= Z538v6; +always @(posedge HCLK) Wkjoz6 <= B038v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Nnjoz6 <= 1'b0; + else + Nnjoz6 <= Tdk8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Wpjoz6 <= 1'b0; + else + Wpjoz6 <= Kan7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Yrjoz6 <= 1'b0; + else + Yrjoz6 <= E2k8v6; + +always @(posedge HCLK) Yujoz6 <= Xny7v6; +always @(posedge HCLK) Fxjoz6 <= Tdz7v6; +always @(posedge HCLK) Lzjoz6 <= B738v6; +always @(posedge HCLK) R1koz6 <= Mdz7v6; +always @(posedge HCLK) X3koz6 <= Fdz7v6; +always @(posedge HCLK) D6koz6 <= Rcz7v6; +always @(posedge HCLK) J8koz6 <= Kcz7v6; +always @(posedge HCLK) Pakoz6 <= Dcz7v6; +always @(posedge HCLK) Vckoz6 <= Wbz7v6; +always @(posedge HCLK) Bfkoz6 <= Ibz7v6; +always @(posedge HCLK) Hhkoz6 <= Bbz7v6; +always @(posedge HCLK) Ojkoz6 <= Naz7v6; +always @(posedge HCLK) Vlkoz6 <= Gaz7v6; +always @(posedge HCLK) Cokoz6 <= Z9z7v6; +always @(posedge HCLK) Jqkoz6 <= S9z7v6; +always @(posedge HCLK) Qskoz6 <= L9z7v6; +always @(posedge HCLK) Xukoz6 <= X8z7v6; +always @(posedge HCLK) Exkoz6 <= Q8z7v6; +always @(posedge HCLK) Lzkoz6 <= J8z7v6; +always @(posedge HCLK) S1loz6 <= V7z7v6; +always @(posedge HCLK) Z3loz6 <= O7z7v6; +always @(posedge HCLK) G6loz6 <= H7z7v6; +always @(posedge HCLK) N8loz6 <= A7z7v6; +always @(posedge HCLK) Ualoz6 <= T6z7v6; +always @(posedge HCLK) Bdloz6 <= M6z7v6; +always @(posedge HCLK) Ifloz6 <= F6z7v6; +always @(posedge HCLK) Phloz6 <= Gpy7v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Wjloz6 <= 1'b0; + else + Wjloz6 <= W738v6; + +always @(posedge HCLK) Gmloz6 <= Pjy7v6; +always @(posedge HCLK) Eploz6 <= Hls7v6; +always @(posedge HCLK) Srloz6 <= Ff48v6; +always @(posedge HCLK) Vuloz6 <= Mf48v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Yxloz6 <= 1'b0; + else + Yxloz6 <= Zoj8v6; + +always @(posedge HCLK) X0moz6 <= U6p7v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + B4moz6 <= 1'b0; + else + B4moz6 <= Cgj8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Z6moz6 <= 1'b0; + else + Z6moz6 <= Tti8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + W9moz6 <= 1'b0; + else + W9moz6 <= A8j8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Tcmoz6 <= 1'b0; + else + Tcmoz6 <= Kqk8v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Ufmoz6 <= 1'b0; + else + Ufmoz6 <= Hjf8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Dimoz6 <= 1'b0; + else + Dimoz6 <= Dan7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Kkmoz6 <= 1'b0; + else + Kkmoz6 <= W9n7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Mmmoz6 <= 1'b0; + else + Mmmoz6 <= V0d8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Gpmoz6 <= 1'b0; + else + Gpmoz6 <= P9n7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Krmoz6 <= 1'b0; + else + Krmoz6 <= I9n7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Ptmoz6 <= 1'b1; + else + Ptmoz6 <= Vcf8v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Tvmoz6 <= 1'b0; + else + Tvmoz6 <= Ocf8v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Wxmoz6 <= 1'b0; + else + Wxmoz6 <= L9k8v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + J0noz6 <= 1'b0; + else + J0noz6 <= B9n7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + W2noz6 <= 1'b1; + else + W2noz6 <= U8n7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + G5noz6 <= 1'b0; + else + G5noz6 <= Hpg8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Y6noz6 <= 1'b0; + else + Y6noz6 <= Wmg8v6; + +always @(posedge SWCLKTCK) N8noz6 <= Tnh8v6; +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Eanoz6 <= 1'b0; + else + Eanoz6 <= Dug8v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Wbnoz6 <= 1'b0; + else + Wbnoz6 <= Yth8v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Menoz6 <= 1'b0; + else + Menoz6 <= N8n7v6; + +always @(posedge HCLK) Dhnoz6 <= Hnx7v6; +always @(posedge HCLK) Vjnoz6 <= Sgs7v6; +always @(posedge HCLK) Kmnoz6 <= Zus7v6; +always @(posedge HCLK) Opnoz6 <= Gvs7v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ssnoz6 <= 1'b0; + else + Ssnoz6 <= Vfj8v6; + +always @(posedge HCLK) Qvnoz6 <= Jbp7v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Tynoz6 <= 1'b0; + else + Tynoz6 <= Soj8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + S1ooz6 <= 1'b0; + else + S1ooz6 <= Pdi8v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + S3ooz6 <= 1'b0; + else + S3ooz6 <= Trk8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + R5ooz6 <= 1'b0; + else + R5ooz6 <= Vrl8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + O8ooz6 <= 1'b0; + else + O8ooz6 <= Wcj8v6; + +always @(posedge HCLK) Kbooz6 <= Xwh8v6; +always @(posedge HCLK) Deooz6 <= Xfs7v6; +always @(posedge HCLK) Sgooz6 <= Xbp7v6; +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Kjooz6 <= 1'b0; + else + Kjooz6 <= Puf8v6; + +always @(posedge SWCLKTCK) Flooz6 <= Ahh8v6; +always @(posedge SWCLKTCK) Xmooz6 <= Hhh8v6; +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Poooz6 <= 1'b0; + else + Poooz6 <= Yug8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Dqooz6 <= 1'b0; + else + Dqooz6 <= Rng8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Yrooz6 <= 1'b0; + else + Yrooz6 <= Bmg8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Ltooz6 <= 1'b0; + else + Ltooz6 <= Jph8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Yuooz6 <= 1'b0; + else + Yuooz6 <= Zkg8v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Twooz6 <= 1'b0; + else + Twooz6 <= Zsf8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Nyooz6 <= 1'b0; + else + Nyooz6 <= Ssf8v6; + +always @(posedge SWCLKTCK) E0poz6 <= Mgh8v6; +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + V1poz6 <= 1'b0; + else + V1poz6 <= Dng8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + O3poz6 <= 1'b0; + else + O3poz6 <= Uzg8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + C5poz6 <= 1'b0; + else + C5poz6 <= Hwg8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + U6poz6 <= 1'b0; + else + U6poz6 <= Iuf8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + M8poz6 <= 1'b0; + else + M8poz6 <= A4g8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Eapoz6 <= 1'b0; + else + Eapoz6 <= Utf8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Wbpoz6 <= 1'b0; + else + Wbpoz6 <= S6g8v6; + +always @(posedge SWCLKTCK) Ndpoz6 <= Fnh8v6; +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Efpoz6 <= 1'b0; + else + Efpoz6 <= Ptg8v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Wgpoz6 <= 1'b0; + else + Wgpoz6 <= Kth8v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Mjpoz6 <= 1'b0; + else + Mjpoz6 <= G8n7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Zlpoz6 <= 1'b0; + else + Zlpoz6 <= E9k8v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Nopoz6 <= 1'b0; + else + Nopoz6 <= Blzet6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Drpoz6 <= 1'b0; + else + Drpoz6 <= T21ft6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Ntpoz6 <= 1'b0; + else + Ntpoz6 <= Hgzet6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Fwpoz6 <= 1'b0; + else + Fwpoz6 <= Hgzet6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Yypoz6 <= 1'b0; + else + Yypoz6 <= F51ft6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + L1qoz6 <= 1'b0; + else + L1qoz6 <= Z7n7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + A4qoz6 <= 1'b0; + else + A4qoz6 <= S7n7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + S6qoz6 <= 1'b0; + else + S6qoz6 <= L7n7v6; + +always @(posedge HCLK) J9qoz6 <= Irx7v6; +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Bcqoz6 <= 1'b0; + else + Bcqoz6 <= R9g8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Vdqoz6 <= 1'b0; + else + Vdqoz6 <= K9g8v6; + +always @(posedge SWCLKTCK) Mfqoz6 <= Ooh8v6; +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Dhqoz6 <= 1'b0; + else + Dhqoz6 <= E7n7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Fjqoz6 <= 1'b0; + else + Fjqoz6 <= Sdg8v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Zlqoz6 <= 1'b0; + else + Zlqoz6 <= X6n7v6; + +always @(posedge FCLK) Qoqoz6 <= Mag8v6; +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Grqoz6 <= 1'b0; + else + Grqoz6 <= Q6n7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Ytqoz6 <= 1'b0; + else + Ytqoz6 <= V4g8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Tvqoz6 <= 1'b0; + else + Tvqoz6 <= O4g8v6; + +always @(posedge SWCLKTCK) Lxqoz6 <= Dmh8v6; +always @(posedge SWCLKTCK) Dzqoz6 <= Kmh8v6; +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + U0roz6 <= 1'b0; + else + U0roz6 <= Yfh8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + K2roz6 <= 1'b0; + else + K2roz6 <= Gzg8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Y3roz6 <= 1'b0; + else + Y3roz6 <= Nzg8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + M5roz6 <= 1'b0; + else + M5roz6 <= Zyg8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + A7roz6 <= 1'b0; + else + A7roz6 <= B0h8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + O8roz6 <= 1'b0; + else + O8roz6 <= Jxg8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Earoz6 <= 1'b0; + else + Earoz6 <= Cxg8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Ubroz6 <= 1'b1; + else + Ubroz6 <= Nlg8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Pdroz6 <= 1'b0; + else + Pdroz6 <= J6n7v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Bfroz6 <= 1'b0; + else + Bfroz6 <= C6n7v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Ogroz6 <= 1'b1; + else + Ogroz6 <= Owg8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Hiroz6 <= 1'b0; + else + Hiroz6 <= V5n7v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Ujroz6 <= 1'b0; + else + Ujroz6 <= O5n7v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Wlroz6 <= 1'b0; + else + Wlroz6 <= H5n7v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Ynroz6 <= 1'b0; + else + Ynroz6 <= A5n7v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Aqroz6 <= 1'b0; + else + Aqroz6 <= T4n7v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Csroz6 <= 1'b0; + else + Csroz6 <= M4n7v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Furoz6 <= 1'b0; + else + Furoz6 <= F4n7v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Iwroz6 <= 1'b0; + else + Iwroz6 <= Y3n7v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Lyroz6 <= 1'b0; + else + Lyroz6 <= R3n7v6; + +always @(posedge FCLK) O0soz6 <= Neg8v6; +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + E3soz6 <= 1'b0; + else + E3soz6 <= K3n7v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + W5soz6 <= 1'b0; + else + W5soz6 <= D3n7v6; + +always @(posedge FCLK) Z7soz6 <= Geg8v6; +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Pasoz6 <= 1'b0; + else + Pasoz6 <= W2n7v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Hdsoz6 <= 1'b0; + else + Hdsoz6 <= P2n7v6; + +always @(posedge FCLK) Kfsoz6 <= Zdg8v6; +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Aisoz6 <= 1'b0; + else + Aisoz6 <= I2n7v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Sksoz6 <= 1'b0; + else + Sksoz6 <= B2n7v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Vmsoz6 <= 1'b0; + else + Vmsoz6 <= U1n7v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Xosoz6 <= 1'b0; + else + Xosoz6 <= N1n7v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Pqsoz6 <= 1'b0; + else + Pqsoz6 <= G1n7v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Hssoz6 <= 1'b0; + else + Hssoz6 <= Z0n7v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Ttsoz6 <= 1'b0; + else + Ttsoz6 <= Awg8v6; + +always @(posedge SWCLKTCK) Ivsoz6 <= Hoh8v6; +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Zwsoz6 <= 1'b0; + else + Zwsoz6 <= S0n7v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Bzsoz6 <= 1'b0; + else + Bzsoz6 <= Vpg8v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + E1toz6 <= 1'b0; + else + E1toz6 <= Uul8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Z2toz6 <= 1'b0; + else + Z2toz6 <= Qph8v6; + +always @(posedge SWCLKTCK) C5toz6 <= Qih8v6; +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + U6toz6 <= 1'b0; + else + U6toz6 <= L0n7v6; + +always @(posedge FCLK) X8toz6 <= Wfg8v6; +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Nbtoz6 <= 1'b0; + else + Nbtoz6 <= E0n7v6; + +always @(posedge SWCLKTCK) Fetoz6 <= Xih8v6; +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Xftoz6 <= 1'b0; + else + Xftoz6 <= Xzm7v6; + +always @(posedge FCLK) Aitoz6 <= Dgg8v6; +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Qktoz6 <= 1'b0; + else + Qktoz6 <= Qzm7v6; + +always @(posedge SWCLKTCK) Odazz6 <= Ejh8v6; +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Gfazz6 <= 1'b0; + else + Gfazz6 <= Jzm7v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Jhazz6 <= 1'b0; + else + Jhazz6 <= Qqg8v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Ljazz6 <= 1'b0; + else + Ljazz6 <= Lqh8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Flazz6 <= 1'b0; + else + Flazz6 <= Mpf8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Gnazz6 <= 1'b0; + else + Gnazz6 <= U6h8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Zoazz6 <= 1'b0; + else + Zoazz6 <= Czm7v6; + +always @(posedge FCLK) Erazz6 <= Kgg8v6; +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Utazz6 <= 1'b0; + else + Utazz6 <= Vym7v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Mwazz6 <= 1'b0; + else + Mwazz6 <= N6h8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Fyazz6 <= 1'b0; + else + Fyazz6 <= Oym7v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + K0bzz6 <= 1'b0; + else + K0bzz6 <= Tpf8v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + L2bzz6 <= 1'b0; + else + L2bzz6 <= Sqh8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + F4bzz6 <= 1'b0; + else + F4bzz6 <= Xqg8v6; + +always @(posedge SWCLKTCK) H6bzz6 <= Ljh8v6; +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Z7bzz6 <= 1'b0; + else + Z7bzz6 <= Hym7v6; + +always @(posedge FCLK) Cabzz6 <= Rgg8v6; +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Scbzz6 <= 1'b0; + else + Scbzz6 <= Aym7v6; + +always @(posedge SWCLKTCK) Kfbzz6 <= Sjh8v6; +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Chbzz6 <= 1'b0; + else + Chbzz6 <= Txm7v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Fjbzz6 <= 1'b0; + else + Fjbzz6 <= Erg8v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Hlbzz6 <= 1'b0; + else + Hlbzz6 <= Zqh8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Bnbzz6 <= 1'b0; + else + Bnbzz6 <= Aqf8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Cpbzz6 <= 1'b0; + else + Cpbzz6 <= G6h8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Vqbzz6 <= 1'b0; + else + Vqbzz6 <= Mxm7v6; + +always @(posedge FCLK) Atbzz6 <= Ygg8v6; +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Qvbzz6 <= 1'b0; + else + Qvbzz6 <= Fxm7v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Iybzz6 <= 1'b0; + else + Iybzz6 <= Z5h8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + B0czz6 <= 1'b0; + else + B0czz6 <= Ywm7v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + G2czz6 <= 1'b0; + else + G2czz6 <= Hqf8v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + H4czz6 <= 1'b0; + else + H4czz6 <= Grh8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + B6czz6 <= 1'b0; + else + B6czz6 <= Lrg8v6; + +always @(posedge SWCLKTCK) D8czz6 <= Zjh8v6; +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + V9czz6 <= 1'b0; + else + V9czz6 <= Rwm7v6; + +always @(posedge FCLK) Ybczz6 <= Fhg8v6; +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Oeczz6 <= 1'b0; + else + Oeczz6 <= Kwm7v6; + +always @(posedge SWCLKTCK) Ghczz6 <= Gkh8v6; +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Yiczz6 <= 1'b0; + else + Yiczz6 <= Dwm7v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Blczz6 <= 1'b0; + else + Blczz6 <= Srg8v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Dnczz6 <= 1'b0; + else + Dnczz6 <= Nrh8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Xoczz6 <= 1'b0; + else + Xoczz6 <= Oqf8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Yqczz6 <= 1'b0; + else + Yqczz6 <= S5h8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Rsczz6 <= 1'b0; + else + Rsczz6 <= Wvm7v6; + +always @(posedge FCLK) Wuczz6 <= Mhg8v6; +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Mxczz6 <= 1'b0; + else + Mxczz6 <= Pvm7v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + E0dzz6 <= 1'b0; + else + E0dzz6 <= L5h8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + X1dzz6 <= 1'b0; + else + X1dzz6 <= Ivm7v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + C4dzz6 <= 1'b0; + else + C4dzz6 <= Vqf8v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + D6dzz6 <= 1'b0; + else + D6dzz6 <= Urh8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + X7dzz6 <= 1'b0; + else + X7dzz6 <= Zrg8v6; + +always @(posedge SWCLKTCK) Z9dzz6 <= Nkh8v6; +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Rbdzz6 <= 1'b0; + else + Rbdzz6 <= Bvm7v6; + +always @(posedge FCLK) Uddzz6 <= Thg8v6; +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Kgdzz6 <= 1'b0; + else + Kgdzz6 <= Uum7v6; + +always @(posedge SWCLKTCK) Cjdzz6 <= Ukh8v6; +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Ukdzz6 <= 1'b0; + else + Ukdzz6 <= Num7v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Xmdzz6 <= 1'b0; + else + Xmdzz6 <= Gsg8v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Zodzz6 <= 1'b0; + else + Zodzz6 <= Bsh8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Tqdzz6 <= 1'b0; + else + Tqdzz6 <= Crf8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Usdzz6 <= 1'b0; + else + Usdzz6 <= E5h8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Nudzz6 <= 1'b0; + else + Nudzz6 <= Gum7v6; + +always @(posedge FCLK) Swdzz6 <= Aig8v6; +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Izdzz6 <= 1'b0; + else + Izdzz6 <= Ztm7v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + A2ezz6 <= 1'b0; + else + A2ezz6 <= X4h8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + T3ezz6 <= 1'b0; + else + T3ezz6 <= Stm7v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Y5ezz6 <= 1'b0; + else + Y5ezz6 <= Jrf8v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Z7ezz6 <= 1'b0; + else + Z7ezz6 <= Ish8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + T9ezz6 <= 1'b0; + else + T9ezz6 <= Nsg8v6; + +always @(posedge SWCLKTCK) Vbezz6 <= Blh8v6; +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Ndezz6 <= 1'b0; + else + Ndezz6 <= Ltm7v6; + +always @(posedge FCLK) Qfezz6 <= Hig8v6; +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Giezz6 <= 1'b0; + else + Giezz6 <= Etm7v6; + +always @(posedge SWCLKTCK) Ykezz6 <= Ilh8v6; +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Qmezz6 <= 1'b0; + else + Qmezz6 <= Xsm7v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Toezz6 <= 1'b0; + else + Toezz6 <= Usg8v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Vqezz6 <= 1'b0; + else + Vqezz6 <= Psh8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Psezz6 <= 1'b0; + else + Psezz6 <= Qrf8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Quezz6 <= 1'b0; + else + Quezz6 <= Q4h8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Jwezz6 <= 1'b0; + else + Jwezz6 <= Qsm7v6; + +always @(posedge FCLK) Oyezz6 <= Oig8v6; +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + E1fzz6 <= 1'b0; + else + E1fzz6 <= Jsm7v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + W3fzz6 <= 1'b0; + else + W3fzz6 <= J4h8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + P5fzz6 <= 1'b0; + else + P5fzz6 <= Csm7v6; + +always @(posedge FCLK) U7fzz6 <= Vig8v6; +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Kafzz6 <= 1'b0; + else + Kafzz6 <= Vrm7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Cdfzz6 <= 1'b0; + else + Cdfzz6 <= Kh88v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Yefzz6 <= 1'b1; + else + Yefzz6 <= B9f8v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Vhfzz6 <= 1'b0; + else + Vhfzz6 <= Nmf8v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Pkfzz6 <= 1'b0; + else + Pkfzz6 <= G5a7z6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Cnfzz6 <= 1'b0; + else + Cnfzz6 <= Bt0ft6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Ppfzz6 <= 1'b0; + else + Ppfzz6 <= Orm7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Dsfzz6 <= 1'b0; + else + Dsfzz6 <= Xczet6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Wufzz6 <= 1'b0; + else + Wufzz6 <= U71ft6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Jxfzz6 <= 1'b0; + else + Jxfzz6 <= Hrm7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Xzfzz6 <= 1'b0; + else + Xzfzz6 <= Pvl8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + P2gzz6 <= 1'b0; + else + P2gzz6 <= Arm7v6; + +always @(posedge HCLK) P5gzz6 <= Y9g8v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + D8gzz6 <= 1'b0; + else + D8gzz6 <= Cm68v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Dbgzz6 <= 1'b0; + else + Dbgzz6 <= Jm68v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Degzz6 <= 1'b0; + else + Degzz6 <= Qm68v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Dhgzz6 <= 1'b0; + else + Dhgzz6 <= Xm68v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Dkgzz6 <= 1'b0; + else + Dkgzz6 <= Bu88v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Cngzz6 <= 1'b0; + else + Cngzz6 <= S4yet6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Wpgzz6 <= 1'b0; + else + Wpgzz6 <= M5l8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Msgzz6 <= 1'b0; + else + Msgzz6 <= L3oet6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Jvgzz6 <= 1'b0; + else + Jvgzz6 <= Hn48v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Bygzz6 <= 1'b0; + else + Bygzz6 <= Y4l8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + D1hzz6 <= 1'b0; + else + D1hzz6 <= Mm48v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + D4hzz6 <= 1'b0; + else + D4hzz6 <= Fm48v6; + +always @(posedge HCLK) D7hzz6 <= Jh48v6; +always @(posedge HCLK) Gahzz6 <= Qh48v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Jdhzz6 <= 1'b0; + else + Jdhzz6 <= Bqj8v6; + +always @(posedge HCLK) Ighzz6 <= S5p7v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Mjhzz6 <= 1'b0; + else + Mjhzz6 <= Ijj8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Kmhzz6 <= 1'b0; + else + Kmhzz6 <= Rdj8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Tohzz6 <= 1'b0; + else + Tohzz6 <= Kdj8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Prhzz6 <= 1'b0; + else + Prhzz6 <= Gt88v6; + +always @(posedge HCLK) Duhzz6 <= Ols7v6; +always @(posedge HCLK) Rwhzz6 <= Uqx7v6; +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Jzhzz6 <= 1'b0; + else + Jzhzz6 <= P8g8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + D1izz6 <= 1'b0; + else + D1izz6 <= I8g8v6; + +always @(posedge SWCLKTCK) U2izz6 <= Aoh8v6; +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + L4izz6 <= 1'b0; + else + L4izz6 <= Tqm7v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + N6izz6 <= 1'b0; + else + N6izz6 <= Opg8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Q8izz6 <= 1'b0; + else + Q8izz6 <= Lkg8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Haizz6 <= 1'b0; + else + Haizz6 <= Skg8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Ybizz6 <= 1'b0; + else + Ybizz6 <= Cph8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Ldizz6 <= 1'b0; + else + Ldizz6 <= Y1h8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Dfizz6 <= 1'b0; + else + Dfizz6 <= Mqm7v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Hhizz6 <= 1'b0; + else + Hhizz6 <= R1h8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Ziizz6 <= 1'b0; + else + Ziizz6 <= Fqm7v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Dlizz6 <= 1'b0; + else + Dlizz6 <= K1h8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Vmizz6 <= 1'b0; + else + Vmizz6 <= Ypm7v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Zoizz6 <= 1'b0; + else + Zoizz6 <= D1h8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Rqizz6 <= 1'b0; + else + Rqizz6 <= Rpm7v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Vsizz6 <= 1'b0; + else + Vsizz6 <= W0h8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Nuizz6 <= 1'b0; + else + Nuizz6 <= Kpm7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Ewizz6 <= 1'b0; + else + Ewizz6 <= Fuh8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Uyizz6 <= 1'b0; + else + Uyizz6 <= P0h8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + M0jzz6 <= 1'b0; + else + M0jzz6 <= Dpm7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + D2jzz6 <= 1'b1; + else + D2jzz6 <= Ekg8v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + X4jzz6 <= 1'b0; + else + X4jzz6 <= Wom7v6; + +always @(posedge HCLK) N7jzz6 <= Ens7v6; +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Fajzz6 <= 1'b0; + else + Fajzz6 <= Ldg8v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Zcjzz6 <= 1'b0; + else + Zcjzz6 <= Pom7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Mfjzz6 <= 1'b0; + else + Mfjzz6 <= Cwh8v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Bijzz6 <= 1'b0; + else + Bijzz6 <= Ppzet6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Rkjzz6 <= 1'b0; + else + Rkjzz6 <= Ov0ft6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Bnjzz6 <= 1'b0; + else + Bnjzz6 <= Iom7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Xpjzz6 <= 1'b0; + else + Xpjzz6 <= F5l8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Osjzz6 <= 1'b0; + else + Osjzz6 <= Pnf8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Fvjzz6 <= 1'b0; + else + Fvjzz6 <= Inf8v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Rxjzz6 <= 1'b0; + else + Rxjzz6 <= Bom7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + H0kzz6 <= 1'b0; + else + H0kzz6 <= Unm7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Y2kzz6 <= 1'b0; + else + Y2kzz6 <= Muh8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + O5kzz6 <= 1'b0; + else + O5kzz6 <= M9h8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + G7kzz6 <= 1'b0; + else + G7kzz6 <= Nnm7v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + I9kzz6 <= 1'b0; + else + I9kzz6 <= Gnm7v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Kbkzz6 <= 1'b0; + else + Kbkzz6 <= Zmm7v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Ndkzz6 <= 1'b0; + else + Ndkzz6 <= Smm7v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Qfkzz6 <= 1'b0; + else + Qfkzz6 <= Lmm7v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Thkzz6 <= 1'b0; + else + Thkzz6 <= Emm7v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Wjkzz6 <= 1'b0; + else + Wjkzz6 <= Xlm7v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Plkzz6 <= 1'b0; + else + Plkzz6 <= Qlm7v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Knkzz6 <= 1'b0; + else + Knkzz6 <= Jlm7v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Fpkzz6 <= 1'b0; + else + Fpkzz6 <= Clm7v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Xqkzz6 <= 1'b0; + else + Xqkzz6 <= Nul8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Zskzz6 <= 1'b0; + else + Zskzz6 <= Ovh8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Qukzz6 <= 1'b0; + else + Qukzz6 <= Vkm7v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Gwkzz6 <= 1'b0; + else + Gwkzz6 <= Okm7v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Wxkzz6 <= 1'b0; + else + Wxkzz6 <= Hkm7v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Mzkzz6 <= 1'b0; + else + Mzkzz6 <= Akm7v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + C1lzz6 <= 1'b0; + else + C1lzz6 <= Tjm7v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + S2lzz6 <= 1'b0; + else + S2lzz6 <= Mjm7v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + I4lzz6 <= 1'b0; + else + I4lzz6 <= Fjm7v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Y5lzz6 <= 1'b0; + else + Y5lzz6 <= Yim7v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + S7lzz6 <= 1'b0; + else + S7lzz6 <= Rim7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + M9lzz6 <= 1'b0; + else + M9lzz6 <= Rth8v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Cclzz6 <= 1'b0; + else + Cclzz6 <= B1g8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Xdlzz6 <= 1'b0; + else + Xdlzz6 <= U0g8v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Pflzz6 <= 1'b0; + else + Pflzz6 <= Dvf8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Khlzz6 <= 1'b0; + else + Khlzz6 <= Wuf8v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Cjlzz6 <= 1'b0; + else + Cjlzz6 <= Twf8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Xklzz6 <= 1'b0; + else + Xklzz6 <= Mwf8v6; + +always @(posedge SWCLKTCK) Pmlzz6 <= Cih8v6; +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Holzz6 <= 1'b0; + else + Holzz6 <= Kim7v6; + +always @(posedge FCLK) Kqlzz6 <= Ifg8v6; +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Atlzz6 <= 1'b0; + else + Atlzz6 <= Dim7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Svlzz6 <= 1'b0; + else + Svlzz6 <= Ut88v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Gylzz6 <= 1'b0; + else + Gylzz6 <= Bnf8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + S0mzz6 <= 1'b0; + else + S0mzz6 <= Dmyet6; + +always @(posedge HCLK) L3mzz6 <= Whm7v6; +always @(posedge HCLK) B6mzz6 <= Phm7v6; +always @(posedge HCLK) R8mzz6 <= Ihm7v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Hbmzz6 <= 1'b0; + else + Hbmzz6 <= Dhyet6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Wdmzz6 <= 1'b0; + else + Wdmzz6 <= Umf8v6; + +always @(posedge HCLK) Igmzz6 <= K9o7v6; +always @(posedge HCLK) Mjmzz6 <= Gos7v6; +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Qmmzz6 <= 1'b0; + else + Qmmzz6 <= H6l8v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Lpmzz6 <= 1'b0; + else + Lpmzz6 <= T5l8v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Ksmzz6 <= 1'b0; + else + Ksmzz6 <= A6l8v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Jvmzz6 <= 1'b0; + else + Jvmzz6 <= Hes7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Iymzz6 <= 1'b0; + else + Iymzz6 <= C7l8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + K1nzz6 <= 1'b0; + else + K1nzz6 <= Gak8v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + B4nzz6 <= 1'b0; + else + B4nzz6 <= Bhm7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + V6nzz6 <= 1'b0; + else + V6nzz6 <= Wnf8v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + P9nzz6 <= 1'b0; + else + P9nzz6 <= Dof8v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Jcnzz6 <= 1'b0; + else + Jcnzz6 <= Stl8v6; + +always @(posedge HCLK) Dfnzz6 <= Brx7v6; +always @(posedge HCLK) Vhnzz6 <= Lpx7v6; +always @(posedge HCLK) Nknzz6 <= Ves7v6; +always @(posedge HCLK) Cnnzz6 <= Dlx7v6; +always @(posedge HCLK) Upnzz6 <= Rqs7v6; +always @(posedge HCLK) Ysnzz6 <= Yqs7v6; +always @(posedge HCLK) Cwnzz6 <= Jfs7v6; +always @(posedge HCLK) Rynzz6 <= I4s7v6; +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + J1ozz6 <= 1'b0; + else + J1ozz6 <= Rvf8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + E3ozz6 <= 1'b0; + else + E3ozz6 <= Kvf8v6; + +always @(posedge SWCLKTCK) W4ozz6 <= Ohh8v6; +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + O6ozz6 <= 1'b0; + else + O6ozz6 <= Ugm7v6; + +always @(posedge FCLK) R8ozz6 <= Ueg8v6; +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Hbozz6 <= 1'b0; + else + Hbozz6 <= Ngm7v6; + +always @(posedge SWCLKTCK) Zdozz6 <= Vhh8v6; +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Rfozz6 <= 1'b0; + else + Rfozz6 <= Ggm7v6; + +always @(posedge HCLK) Uhozz6 <= Imv7v6; +always @(posedge HCLK) Mkozz6 <= Cfs7v6; +always @(posedge HCLK) Bnozz6 <= Dqs7v6; +always @(posedge HCLK) Fqozz6 <= Kqs7v6; +always @(posedge FCLK) Jtozz6 <= Bfg8v6; +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Zvozz6 <= 1'b0; + else + Zvozz6 <= Zfm7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Ryozz6 <= 1'b0; + else + Ryozz6 <= Fwf8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + M0pzz6 <= 1'b0; + else + M0pzz6 <= Yvf8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + E2pzz6 <= 1'b0; + else + E2pzz6 <= Mvg8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + S3pzz6 <= 1'b0; + else + S3pzz6 <= Yng8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + L5pzz6 <= 1'b0; + else + L5pzz6 <= Fvg8v6; + +always @(posedge HCLK) Z6pzz6 <= Pps7v6; +always @(posedge HCLK) Dapzz6 <= Wps7v6; +always @(posedge HCLK) Hdpzz6 <= Vls7v6; +always @(posedge HCLK) Vfpzz6 <= Nqx7v6; +always @(posedge HCLK) Nipzz6 <= Hg48v6; +always @(posedge HCLK) Qlpzz6 <= Og48v6; +always @(posedge HCLK) Topzz6 <= Cms7v6; +always @(posedge HCLK) Hrpzz6 <= Gqx7v6; +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Ztpzz6 <= 1'b0; + else + Ztpzz6 <= N7g8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Tvpzz6 <= 1'b0; + else + Tvpzz6 <= G7g8v6; + +always @(posedge SWCLKTCK) Kxpzz6 <= Mnh8v6; +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Bzpzz6 <= 1'b0; + else + Bzpzz6 <= Sfm7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + D1qzz6 <= 1'b0; + else + D1qzz6 <= Jjg8v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + A4qzz6 <= 1'b0; + else + A4qzz6 <= Qjg8v6; + +always @(posedge FCLK) X6qzz6 <= Tag8v6; +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + M9qzz6 <= 1'b0; + else + M9qzz6 <= Lfm7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Dcqzz6 <= 1'b0; + else + Dcqzz6 <= J5g8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Xdqzz6 <= 1'b0; + else + Xdqzz6 <= C5g8v6; + +always @(posedge FCLK) Ofqzz6 <= Abg8v6; +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Diqzz6 <= 1'b0; + else + Diqzz6 <= Efm7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Ukqzz6 <= 1'b0; + else + Ukqzz6 <= X5g8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Omqzz6 <= 1'b0; + else + Omqzz6 <= Q5g8v6; + +always @(posedge SWCLKTCK) Foqzz6 <= Rmh8v6; +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Wpqzz6 <= 1'b0; + else + Wpqzz6 <= Xem7v6; + +always @(posedge HCLK) Yrqzz6 <= Onx7v6; +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Quqzz6 <= 1'b0; + else + Quqzz6 <= I0h8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Gwqzz6 <= 1'b0; + else + Gwqzz6 <= Apg8v6; + +always @(posedge FCLK) Hyqzz6 <= Hbg8v6; +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + W0rzz6 <= 1'b0; + else + W0rzz6 <= Qem7v6; + +always @(posedge FCLK) N3rzz6 <= Obg8v6; +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + C6rzz6 <= 1'b0; + else + C6rzz6 <= Jem7v6; + +always @(posedge FCLK) T8rzz6 <= Vbg8v6; +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Ibrzz6 <= 1'b0; + else + Ibrzz6 <= Cem7v6; + +always @(posedge FCLK) Zdrzz6 <= Ccg8v6; +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Ogrzz6 <= 1'b0; + else + Ogrzz6 <= Vdm7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Fjrzz6 <= 1'b0; + else + Fjrzz6 <= Dh88v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Blrzz6 <= 1'b0; + else + Blrzz6 <= Pg88v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Xmrzz6 <= 1'b0; + else + Xmrzz6 <= Wg88v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Torzz6 <= 1'b0; + else + Torzz6 <= Ig88v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Pqrzz6 <= 1'b0; + else + Pqrzz6 <= Bg88v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Lsrzz6 <= 1'b0; + else + Lsrzz6 <= Uf88v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Hurzz6 <= 1'b0; + else + Hurzz6 <= B8g8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Bwrzz6 <= 1'b0; + else + Bwrzz6 <= U7g8v6; + +always @(posedge FCLK) Sxrzz6 <= Jcg8v6; +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + H0szz6 <= 1'b0; + else + H0szz6 <= Odm7v6; + +always @(posedge FCLK) Y2szz6 <= Qcg8v6; +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + N5szz6 <= 1'b0; + else + N5szz6 <= D9g8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + H7szz6 <= 1'b0; + else + H7szz6 <= W8g8v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Y8szz6 <= 1'b0; + else + Y8szz6 <= Hdm7v6; + +always @(posedge FCLK) Pbszz6 <= Xcg8v6; +always @(posedge FCLK) Eeszz6 <= Edg8v6; +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Tgszz6 <= 1'b0; + else + Tgszz6 <= Cjg8v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Ijszz6 <= 1'b0; + else + Ijszz6 <= Bizet6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Vlszz6 <= 1'b0; + else + Vlszz6 <= K01ft6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Coszz6 <= 1'b0; + else + Coszz6 <= Mezet6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Vqszz6 <= 1'b0; + else + Vqszz6 <= Wtg8v6; + +always @(posedge HCLK) Nsszz6 <= Vg48v6; +always @(posedge HCLK) Qvszz6 <= Ch48v6; +always @(posedge HCLK) Tyszz6 <= Jms7v6; +always @(posedge HCLK) H1tzz6 <= Zpx7v6; +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Z3tzz6 <= 1'b0; + else + Z3tzz6 <= Z6g8v6; + +always @(posedge HCLK) T5tzz6 <= Qms7v6; +always @(posedge HCLK) H8tzz6 <= Spx7v6; +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Zatzz6 <= 1'b0; + else + Zatzz6 <= L6g8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Tctzz6 <= 1'b0; + else + Tctzz6 <= E6g8v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Ketzz6 <= 1'b1; + else + Ketzz6 <= Xjg8v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Dhtzz6 <= 1'b0; + else + Dhtzz6 <= Adm7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Sjtzz6 <= 1'b0; + else + Sjtzz6 <= Kp78v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Oltzz6 <= 1'b0; + else + Oltzz6 <= Rp78v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Kntzz6 <= 1'b0; + else + Kntzz6 <= Fq78v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Gptzz6 <= 1'b0; + else + Gptzz6 <= Mq78v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Crtzz6 <= 1'b0; + else + Crtzz6 <= Ar78v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Ystzz6 <= 1'b0; + else + Ystzz6 <= Js78v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Vutzz6 <= 1'b0; + else + Vutzz6 <= Qs78v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Swtzz6 <= 1'b0; + else + Swtzz6 <= Xs78v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Pytzz6 <= 1'b0; + else + Pytzz6 <= Et78v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + M0uzz6 <= 1'b0; + else + M0uzz6 <= Lt78v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + J2uzz6 <= 1'b0; + else + J2uzz6 <= Yp78v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + F4uzz6 <= 1'b0; + else + F4uzz6 <= Tq78v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + B6uzz6 <= 1'b0; + else + B6uzz6 <= Hr78v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Y7uzz6 <= 1'b0; + else + Y7uzz6 <= Or78v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + V9uzz6 <= 1'b0; + else + V9uzz6 <= St78v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Sbuzz6 <= 1'b0; + else + Sbuzz6 <= Dqk8v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Pduzz6 <= 1'b0; + else + Pduzz6 <= Sdo7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Ofuzz6 <= 1'b0; + else + Ofuzz6 <= D16ft6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Jhuzz6 <= 1'b1; + else + Jhuzz6 <= Z9k8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Hjuzz6 <= 1'b0; + else + Hjuzz6 <= Tvg8v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Vkuzz6 <= 1'b0; + else + Vkuzz6 <= Hxf8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Qmuzz6 <= 1'b0; + else + Qmuzz6 <= Axf8v6; + +always @(posedge SWCLKTCK) Iouzz6 <= Jih8v6; +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Aquzz6 <= 1'b0; + else + Aquzz6 <= Tcm7v6; + +always @(posedge HCLK) Dsuzz6 <= Wkx7v6; +always @(posedge FCLK) Vuuzz6 <= Pfg8v6; +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Lxuzz6 <= 1'b0; + else + Lxuzz6 <= Mcm7v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + D0vzz6 <= 1'b0; + else + D0vzz6 <= Ulg8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + R1vzz6 <= 1'b0; + else + R1vzz6 <= Fcm7v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + L3vzz6 <= 1'b0; + else + L3vzz6 <= Ybm7v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + F5vzz6 <= 1'b0; + else + F5vzz6 <= Rbm7v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + V6vzz6 <= 1'b0; + else + V6vzz6 <= Kbm7v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + S8vzz6 <= 1'b1; + else + S8vzz6 <= Dbm7v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Iavzz6 <= 1'b1; + else + Iavzz6 <= Wam7v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Ybvzz6 <= 1'b0; + else + Ybvzz6 <= Lsf8v6; + +always @(posedge HCLK) Odvzz6 <= Tf48v6; +always @(posedge HCLK) Rgvzz6 <= Ag48v6; +always @(posedge HCLK) Ujvzz6 <= Epx7v6; +always @(posedge HCLK) Mmvzz6 <= Djs7v6; +always @(posedge HCLK) Bpvzz6 <= Nj48v6; +always @(posedge HCLK) Fsvzz6 <= Uj48v6; +always @(posedge HCLK) Jvvzz6 <= Xox7v6; +always @(posedge HCLK) Byvzz6 <= Kjs7v6; +always @(posedge HCLK) Q0wzz6 <= Bk48v6; +always @(posedge HCLK) U3wzz6 <= Ik48v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Y6wzz6 <= 1'b0; + else + Y6wzz6 <= Krj8v6; + +always @(posedge HCLK) X9wzz6 <= J4p7v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Bdwzz6 <= 1'b0; + else + Bdwzz6 <= Cnj8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Agwzz6 <= 1'b0; + else + Agwzz6 <= Vmj8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Eiwzz6 <= 1'b0; + else + Eiwzz6 <= Omj8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ikwzz6 <= 1'b0; + else + Ikwzz6 <= Ebi8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Jnwzz6 <= 1'b0; + else + Jnwzz6 <= Zbi8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Mqwzz6 <= 1'b0; + else + Mqwzz6 <= U3d7z6[3]; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Otwzz6 <= 1'b0; + else + Otwzz6 <= Nci8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Rwwzz6 <= 1'b0; + else + Rwwzz6 <= U3d7z6[5]; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Tzwzz6 <= 1'b0; + else + Tzwzz6 <= Uci8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + W2xzz6 <= 1'b0; + else + W2xzz6 <= U3d7z6[0]; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Y5xzz6 <= 1'b0; + else + Y5xzz6 <= Sbi8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + B9xzz6 <= 1'b0; + else + B9xzz6 <= Gci8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ecxzz6 <= 1'b0; + else + Ecxzz6 <= U3d7z6[4]; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Gfxzz6 <= 1'b0; + else + Gfxzz6 <= U3d7z6[2]; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Iixzz6 <= 1'b0; + else + Iixzz6 <= Drj8v6; + +always @(posedge HCLK) Hlxzz6 <= Q4p7v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Loxzz6 <= 1'b0; + else + Loxzz6 <= Amj8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Krxzz6 <= 1'b0; + else + Krxzz6 <= Qai8v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Ktxzz6 <= 1'b0; + else + Ktxzz6 <= Pam7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Lwxzz6 <= 1'b0; + else + Lwxzz6 <= Jai8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Lyxzz6 <= 1'b0; + else + Lyxzz6 <= Xsddt6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + M0yzz6 <= 1'b0; + else + M0yzz6 <= V9i8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + N2yzz6 <= 1'b0; + else + N2yzz6 <= O9i8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + O4yzz6 <= 1'b0; + else + O4yzz6 <= Cp38v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Q6yzz6 <= 1'b0; + else + Q6yzz6 <= Flj8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Q8yzz6 <= 1'b0; + else + Q8yzz6 <= Hmj8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Vayzz6 <= 1'b0; + else + Vayzz6 <= A0k8v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Ycyzz6 <= 1'b0; + else + Ycyzz6 <= D4adt6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Weyzz6 <= 1'b0; + else + Weyzz6 <= Iam7v6; + +always @(posedge HCLK) Ygyzz6 <= Y8p7v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ckyzz6 <= 1'b0; + else + Ckyzz6 <= G2l8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Fnyzz6 <= 1'b0; + else + Fnyzz6 <= Uij8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ipyzz6 <= 1'b0; + else + Ipyzz6 <= Pjj8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Nryzz6 <= 1'b0; + else + Nryzz6 <= Cai8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ptyzz6 <= 1'b0; + else + Ptyzz6 <= Ubj8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Xvyzz6 <= 1'b0; + else + Xvyzz6 <= Dv88v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Uyyzz6 <= 1'b0; + else + Uyyzz6 <= Kv88v6; + +always @(posedge HCLK) R1zzz6 <= R8p7v6; +always @(posedge HCLK) V4zzz6 <= Qox7v6; +always @(posedge HCLK) N7zzz6 <= Rjs7v6; +always @(posedge HCLK) Cazzz6 <= Pk48v6; +always @(posedge HCLK) Gdzzz6 <= Wk48v6; +always @(posedge HCLK) Kgzzz6 <= Jox7v6; +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Cjzzz6 <= 1'b0; + else + Cjzzz6 <= F3g8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Xkzzz6 <= 1'b0; + else + Xkzzz6 <= Y2g8v6; + +always @(posedge HCLK) Pmzzz6 <= Yjs7v6; +always @(posedge HCLK) Epzzz6 <= Dl48v6; +always @(posedge HCLK) Iszzz6 <= Kl48v6; +always @(posedge HCLK) Mvzzz6 <= Cox7v6; +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Eyzzz6 <= 1'b0; + else + Eyzzz6 <= R2g8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Zzzzz6 <= 1'b0; + else + Zzzzz6 <= K2g8v6; + +always @(posedge HCLK) R10007 <= Fks7v6; +always @(posedge HCLK) G40007 <= W7p7v6; +always @(posedge HCLK) K70007 <= R9o7v6; +always @(posedge HCLK) Oa0007 <= Rl48v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Sd0007 <= 1'b0; + else + Sd0007 <= Fsj8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Rg0007 <= 1'b0; + else + Rg0007 <= Bjj8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Cj0007 <= 1'b0; + else + Cj0007 <= Dkj8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Nl0007 <= 1'b0; + else + Nl0007 <= Kkj8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Yn0007 <= 1'b0; + else + Yn0007 <= Rkj8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Jq0007 <= 1'b0; + else + Jq0007 <= Wjj8v6; + +always @(posedge HCLK) Os0007 <= K408v6; +always @(posedge HCLK) Ev0007 <= F508v6; +always @(posedge HCLK) Ux0007 <= M508v6; +always @(posedge HCLK) K01007 <= A608v6; +always @(posedge HCLK) A31007 <= I038v6; +always @(posedge HCLK) R51007 <= V608v6; +always @(posedge HCLK) I81007 <= D138v6; +always @(posedge HCLK) Ab1007 <= C708v6; +always @(posedge HCLK) Rd1007 <= K138v6; +always @(posedge HCLK) Jg1007 <= J708v6; +always @(posedge HCLK) Aj1007 <= R138v6; +always @(posedge HCLK) Sl1007 <= X708v6; +always @(posedge HCLK) Jo1007 <= F238v6; +always @(posedge HCLK) Br1007 <= E808v6; +always @(posedge HCLK) St1007 <= M238v6; +always @(posedge HCLK) Kw1007 <= S808v6; +always @(posedge HCLK) Bz1007 <= A338v6; +always @(posedge HCLK) T12007 <= Z808v6; +always @(posedge HCLK) K42007 <= H338v6; +always @(posedge HCLK) C72007 <= G908v6; +always @(posedge HCLK) T92007 <= O338v6; +always @(posedge HCLK) Lc2007 <= N908v6; +always @(posedge HCLK) Cf2007 <= V338v6; +always @(posedge HCLK) Uh2007 <= U908v6; +always @(posedge HCLK) Lk2007 <= C438v6; +always @(posedge HCLK) Dn2007 <= Ba08v6; +always @(posedge HCLK) Up2007 <= J438v6; +always @(posedge HCLK) Ms2007 <= Ia08v6; +always @(posedge HCLK) Dv2007 <= Q438v6; +always @(posedge HCLK) Vx2007 <= H608v6; +always @(posedge HCLK) M03007 <= P038v6; +always @(posedge HCLK) E33007 <= L808v6; +always @(posedge HCLK) V53007 <= T238v6; +always @(posedge HCLK) N83007 <= Pa08v6; +always @(posedge HCLK) Eb3007 <= X438v6; +always @(posedge HCLK) Wd3007 <= R408v6; +always @(posedge HCLK) Mg3007 <= D408v6; +always @(posedge HCLK) Cj3007 <= N638v6; +always @(posedge HCLK) Tl3007 <= T508v6; +always @(posedge HCLK) Jo3007 <= Wa08v6; +always @(posedge HCLK) Ar3007 <= E538v6; +always @(posedge HCLK) St3007 <= Q708v6; +always @(posedge HCLK) Jw3007 <= Y138v6; +always @(posedge HCLK) Bz3007 <= Kb08v6; +always @(posedge HCLK) S14007 <= S538v6; +always @(posedge HCLK) K44007 <= Db08v6; +always @(posedge HCLK) B74007 <= L538v6; +always @(posedge HCLK) T94007 <= Zuz7v6; +always @(posedge HCLK) Jc4007 <= Luz7v6; +always @(posedge HCLK) Af4007 <= Euz7v6; +always @(posedge HCLK) Rh4007 <= Xtz7v6; +always @(posedge HCLK) Ik4007 <= Qtz7v6; +always @(posedge HCLK) Zm4007 <= Jtz7v6; +always @(posedge HCLK) Qp4007 <= Ctz7v6; +always @(posedge HCLK) Hs4007 <= Vsz7v6; +always @(posedge HCLK) Yu4007 <= Osz7v6; +always @(posedge HCLK) Px4007 <= Hsz7v6; +always @(posedge HCLK) G05007 <= Asz7v6; +always @(posedge HCLK) X25007 <= Trz7v6; +always @(posedge HCLK) O55007 <= Mrz7v6; +always @(posedge HCLK) F85007 <= Frz7v6; +always @(posedge HCLK) Wa5007 <= Yqz7v6; +always @(posedge HCLK) Nd5007 <= Rqz7v6; +always @(posedge HCLK) Eg5007 <= Kqz7v6; +always @(posedge HCLK) Vi5007 <= Dqz7v6; +always @(posedge HCLK) Ml5007 <= Wpz7v6; +always @(posedge HCLK) Do5007 <= Ppz7v6; +always @(posedge HCLK) Uq5007 <= Ipz7v6; +always @(posedge HCLK) Lt5007 <= Bpz7v6; +always @(posedge HCLK) Cw5007 <= Uoz7v6; +always @(posedge HCLK) Sy5007 <= Noz7v6; +always @(posedge HCLK) I16007 <= Goz7v6; +always @(posedge HCLK) Y36007 <= Znz7v6; +always @(posedge HCLK) O66007 <= Snz7v6; +always @(posedge HCLK) E96007 <= Lnz7v6; +always @(posedge HCLK) Ub6007 <= Enz7v6; +always @(posedge HCLK) Ke6007 <= Xmz7v6; +always @(posedge HCLK) Ah6007 <= Qmz7v6; +always @(posedge HCLK) Qj6007 <= Lt08v6; +always @(posedge HCLK) Gm6007 <= Xs08v6; +always @(posedge HCLK) Xo6007 <= Qs08v6; +always @(posedge HCLK) Or6007 <= Js08v6; +always @(posedge HCLK) Fu6007 <= Cs08v6; +always @(posedge HCLK) Ww6007 <= Vr08v6; +always @(posedge HCLK) Nz6007 <= Or08v6; +always @(posedge HCLK) E27007 <= Hr08v6; +always @(posedge HCLK) V47007 <= Ar08v6; +always @(posedge HCLK) M77007 <= Tq08v6; +always @(posedge HCLK) Da7007 <= Mq08v6; +always @(posedge HCLK) Uc7007 <= Fq08v6; +always @(posedge HCLK) Lf7007 <= Yp08v6; +always @(posedge HCLK) Ci7007 <= Rp08v6; +always @(posedge HCLK) Tk7007 <= Kp08v6; +always @(posedge HCLK) Kn7007 <= Dp08v6; +always @(posedge HCLK) Bq7007 <= Wo08v6; +always @(posedge HCLK) Ss7007 <= Po08v6; +always @(posedge HCLK) Jv7007 <= Io08v6; +always @(posedge HCLK) Ay7007 <= Bo08v6; +always @(posedge HCLK) R08007 <= Un08v6; +always @(posedge HCLK) I38007 <= Nn08v6; +always @(posedge HCLK) Z58007 <= Gn08v6; +always @(posedge HCLK) P88007 <= Zm08v6; +always @(posedge HCLK) Fb8007 <= Sm08v6; +always @(posedge HCLK) Vd8007 <= Lm08v6; +always @(posedge HCLK) Lg8007 <= Em08v6; +always @(posedge HCLK) Bj8007 <= Xl08v6; +always @(posedge HCLK) Rl8007 <= Ql08v6; +always @(posedge HCLK) Ho8007 <= Jl08v6; +always @(posedge HCLK) Xq8007 <= Cl08v6; +always @(posedge HCLK) Nt8007 <= Ra18v6; +always @(posedge HCLK) Dw8007 <= Da18v6; +always @(posedge HCLK) Uy8007 <= W918v6; +always @(posedge HCLK) L19007 <= P918v6; +always @(posedge HCLK) C49007 <= I918v6; +always @(posedge HCLK) T69007 <= B918v6; +always @(posedge HCLK) K99007 <= U818v6; +always @(posedge HCLK) Bc9007 <= N818v6; +always @(posedge HCLK) Se9007 <= G818v6; +always @(posedge HCLK) Jh9007 <= Z718v6; +always @(posedge HCLK) Ak9007 <= S718v6; +always @(posedge HCLK) Rm9007 <= L718v6; +always @(posedge HCLK) Ip9007 <= E718v6; +always @(posedge HCLK) Zr9007 <= X618v6; +always @(posedge HCLK) Qu9007 <= Q618v6; +always @(posedge HCLK) Hx9007 <= J618v6; +always @(posedge HCLK) Yz9007 <= C618v6; +always @(posedge HCLK) P2a007 <= V518v6; +always @(posedge HCLK) G5a007 <= O518v6; +always @(posedge HCLK) X7a007 <= H518v6; +always @(posedge HCLK) Oaa007 <= A518v6; +always @(posedge HCLK) Fda007 <= T418v6; +always @(posedge HCLK) Wfa007 <= M418v6; +always @(posedge HCLK) Mia007 <= F418v6; +always @(posedge HCLK) Cla007 <= Y318v6; +always @(posedge HCLK) Sna007 <= R318v6; +always @(posedge HCLK) Iqa007 <= K318v6; +always @(posedge HCLK) Ysa007 <= D318v6; +always @(posedge HCLK) Ova007 <= W218v6; +always @(posedge HCLK) Eya007 <= P218v6; +always @(posedge HCLK) U0b007 <= I218v6; +always @(posedge HCLK) K3b007 <= Hj18v6; +always @(posedge HCLK) A6b007 <= Ti18v6; +always @(posedge HCLK) R8b007 <= Mi18v6; +always @(posedge HCLK) Ibb007 <= Fi18v6; +always @(posedge HCLK) Zdb007 <= Yh18v6; +always @(posedge HCLK) Qgb007 <= Rh18v6; +always @(posedge HCLK) Hjb007 <= Kh18v6; +always @(posedge HCLK) Ylb007 <= Dh18v6; +always @(posedge HCLK) Pob007 <= Wg18v6; +always @(posedge HCLK) Grb007 <= Pg18v6; +always @(posedge HCLK) Xtb007 <= Ig18v6; +always @(posedge HCLK) Owb007 <= Bg18v6; +always @(posedge HCLK) Fzb007 <= Uf18v6; +always @(posedge HCLK) W1c007 <= Nf18v6; +always @(posedge HCLK) N4c007 <= Gf18v6; +always @(posedge HCLK) E7c007 <= Ze18v6; +always @(posedge HCLK) V9c007 <= Se18v6; +always @(posedge HCLK) Mcc007 <= Le18v6; +always @(posedge HCLK) Dfc007 <= Ee18v6; +always @(posedge HCLK) Uhc007 <= Xd18v6; +always @(posedge HCLK) Lkc007 <= Qd18v6; +always @(posedge HCLK) Cnc007 <= Jd18v6; +always @(posedge HCLK) Tpc007 <= Cd18v6; +always @(posedge HCLK) Jsc007 <= Vc18v6; +always @(posedge HCLK) Zuc007 <= Oc18v6; +always @(posedge HCLK) Pxc007 <= Hc18v6; +always @(posedge HCLK) F0d007 <= Ac18v6; +always @(posedge HCLK) V2d007 <= Tb18v6; +always @(posedge HCLK) L5d007 <= Mb18v6; +always @(posedge HCLK) B8d007 <= Fb18v6; +always @(posedge HCLK) Rad007 <= Ya18v6; +always @(posedge HCLK) Hdd007 <= Xr18v6; +always @(posedge HCLK) Xfd007 <= Jr18v6; +always @(posedge HCLK) Oid007 <= Cr18v6; +always @(posedge HCLK) Fld007 <= Vq18v6; +always @(posedge HCLK) Wnd007 <= Oq18v6; +always @(posedge HCLK) Nqd007 <= Hq18v6; +always @(posedge HCLK) Etd007 <= Aq18v6; +always @(posedge HCLK) Vvd007 <= Tp18v6; +always @(posedge HCLK) Myd007 <= Mp18v6; +always @(posedge HCLK) D1e007 <= Fp18v6; +always @(posedge HCLK) U3e007 <= Yo18v6; +always @(posedge HCLK) L6e007 <= Ro18v6; +always @(posedge HCLK) C9e007 <= Ko18v6; +always @(posedge HCLK) Tbe007 <= Do18v6; +always @(posedge HCLK) Kee007 <= Wn18v6; +always @(posedge HCLK) Bhe007 <= Pn18v6; +always @(posedge HCLK) Sje007 <= In18v6; +always @(posedge HCLK) Jme007 <= Bn18v6; +always @(posedge HCLK) Ape007 <= Um18v6; +always @(posedge HCLK) Rre007 <= Nm18v6; +always @(posedge HCLK) Iue007 <= Gm18v6; +always @(posedge HCLK) Zwe007 <= Zl18v6; +always @(posedge HCLK) Qze007 <= Sl18v6; +always @(posedge HCLK) G2f007 <= Ll18v6; +always @(posedge HCLK) W4f007 <= El18v6; +always @(posedge HCLK) M7f007 <= Xk18v6; +always @(posedge HCLK) Caf007 <= Qk18v6; +always @(posedge HCLK) Scf007 <= Jk18v6; +always @(posedge HCLK) Iff007 <= Ck18v6; +always @(posedge HCLK) Yhf007 <= Vj18v6; +always @(posedge HCLK) Okf007 <= Oj18v6; +always @(posedge HCLK) Enf007 <= N028v6; +always @(posedge HCLK) Vpf007 <= Zz18v6; +always @(posedge HCLK) Nsf007 <= Sz18v6; +always @(posedge HCLK) Fvf007 <= Lz18v6; +always @(posedge HCLK) Xxf007 <= Ez18v6; +always @(posedge HCLK) P0g007 <= Xy18v6; +always @(posedge HCLK) H3g007 <= Qy18v6; +always @(posedge HCLK) Z5g007 <= Jy18v6; +always @(posedge HCLK) R8g007 <= Cy18v6; +always @(posedge HCLK) Jbg007 <= Vx18v6; +always @(posedge HCLK) Beg007 <= Ox18v6; +always @(posedge HCLK) Tgg007 <= Hx18v6; +always @(posedge HCLK) Ljg007 <= Ax18v6; +always @(posedge HCLK) Dmg007 <= Tw18v6; +always @(posedge HCLK) Vog007 <= Mw18v6; +always @(posedge HCLK) Nrg007 <= Fw18v6; +always @(posedge HCLK) Fug007 <= Yv18v6; +always @(posedge HCLK) Xwg007 <= Rv18v6; +always @(posedge HCLK) Pzg007 <= Kv18v6; +always @(posedge HCLK) H2h007 <= Dv18v6; +always @(posedge HCLK) Z4h007 <= Wu18v6; +always @(posedge HCLK) R7h007 <= Pu18v6; +always @(posedge HCLK) Jah007 <= Iu18v6; +always @(posedge HCLK) Adh007 <= Bu18v6; +always @(posedge HCLK) Rfh007 <= Ut18v6; +always @(posedge HCLK) Iih007 <= Nt18v6; +always @(posedge HCLK) Zkh007 <= Gt18v6; +always @(posedge HCLK) Qnh007 <= Zs18v6; +always @(posedge HCLK) Hqh007 <= Ss18v6; +always @(posedge HCLK) Ysh007 <= Ls18v6; +always @(posedge HCLK) Pvh007 <= Es18v6; +always @(posedge HCLK) Gyh007 <= D928v6; +always @(posedge HCLK) X0i007 <= P828v6; +always @(posedge HCLK) P3i007 <= I828v6; +always @(posedge HCLK) H6i007 <= B828v6; +always @(posedge HCLK) Z8i007 <= U728v6; +always @(posedge HCLK) Rbi007 <= N728v6; +always @(posedge HCLK) Jei007 <= G728v6; +always @(posedge HCLK) Bhi007 <= Z628v6; +always @(posedge HCLK) Tji007 <= S628v6; +always @(posedge HCLK) Lmi007 <= L628v6; +always @(posedge HCLK) Dpi007 <= E628v6; +always @(posedge HCLK) Vri007 <= X528v6; +always @(posedge HCLK) Nui007 <= Q528v6; +always @(posedge HCLK) Fxi007 <= J528v6; +always @(posedge HCLK) Xzi007 <= C528v6; +always @(posedge HCLK) P2j007 <= V428v6; +always @(posedge HCLK) H5j007 <= O428v6; +always @(posedge HCLK) Z7j007 <= H428v6; +always @(posedge HCLK) Raj007 <= A428v6; +always @(posedge HCLK) Jdj007 <= T328v6; +always @(posedge HCLK) Bgj007 <= M328v6; +always @(posedge HCLK) Tij007 <= F328v6; +always @(posedge HCLK) Llj007 <= Y228v6; +always @(posedge HCLK) Coj007 <= R228v6; +always @(posedge HCLK) Tqj007 <= K228v6; +always @(posedge HCLK) Ktj007 <= D228v6; +always @(posedge HCLK) Bwj007 <= W128v6; +always @(posedge HCLK) Syj007 <= P128v6; +always @(posedge HCLK) J1k007 <= I128v6; +always @(posedge HCLK) A4k007 <= B128v6; +always @(posedge HCLK) R6k007 <= U028v6; +always @(posedge HCLK) I9k007 <= Th28v6; +always @(posedge HCLK) Zbk007 <= Fh28v6; +always @(posedge HCLK) Rek007 <= Yg28v6; +always @(posedge HCLK) Jhk007 <= Rg28v6; +always @(posedge HCLK) Bkk007 <= Kg28v6; +always @(posedge HCLK) Tmk007 <= Dg28v6; +always @(posedge HCLK) Lpk007 <= Wf28v6; +always @(posedge HCLK) Dsk007 <= Pf28v6; +always @(posedge HCLK) Vuk007 <= If28v6; +always @(posedge HCLK) Nxk007 <= Bf28v6; +always @(posedge HCLK) F0l007 <= Ue28v6; +always @(posedge HCLK) X2l007 <= Ne28v6; +always @(posedge HCLK) P5l007 <= Ge28v6; +always @(posedge HCLK) H8l007 <= Zd28v6; +always @(posedge HCLK) Zal007 <= Sd28v6; +always @(posedge HCLK) Rdl007 <= Ld28v6; +always @(posedge HCLK) Jgl007 <= Ed28v6; +always @(posedge HCLK) Bjl007 <= Xc28v6; +always @(posedge HCLK) Tll007 <= Qc28v6; +always @(posedge HCLK) Lol007 <= Jc28v6; +always @(posedge HCLK) Drl007 <= Cc28v6; +always @(posedge HCLK) Vtl007 <= Vb28v6; +always @(posedge HCLK) Nwl007 <= Ob28v6; +always @(posedge HCLK) Ezl007 <= Hb28v6; +always @(posedge HCLK) V1m007 <= Ab28v6; +always @(posedge HCLK) M4m007 <= Ta28v6; +always @(posedge HCLK) D7m007 <= Ma28v6; +always @(posedge HCLK) U9m007 <= Fa28v6; +always @(posedge HCLK) Lcm007 <= Y928v6; +always @(posedge HCLK) Cfm007 <= R928v6; +always @(posedge HCLK) Thm007 <= K928v6; +always @(posedge HCLK) Kkm007 <= Vp28v6; +always @(posedge HCLK) Bnm007 <= Hp28v6; +always @(posedge HCLK) Tpm007 <= Ap28v6; +always @(posedge HCLK) Lsm007 <= To28v6; +always @(posedge HCLK) Dvm007 <= Mo28v6; +always @(posedge HCLK) Vxm007 <= Fo28v6; +always @(posedge HCLK) N0n007 <= Yn28v6; +always @(posedge HCLK) F3n007 <= Rn28v6; +always @(posedge HCLK) X5n007 <= Kn28v6; +always @(posedge HCLK) P8n007 <= Dn28v6; +always @(posedge HCLK) Hbn007 <= Wm28v6; +always @(posedge HCLK) Zdn007 <= Pm28v6; +always @(posedge HCLK) Rgn007 <= Im28v6; +always @(posedge HCLK) Jjn007 <= Bm28v6; +always @(posedge HCLK) Bmn007 <= Ul28v6; +always @(posedge HCLK) Ton007 <= Nl28v6; +always @(posedge HCLK) Lrn007 <= Gl28v6; +always @(posedge HCLK) Dun007 <= Zk28v6; +always @(posedge HCLK) Vwn007 <= Sk28v6; +always @(posedge HCLK) Nzn007 <= Lk28v6; +always @(posedge HCLK) F2o007 <= Ek28v6; +always @(posedge HCLK) X4o007 <= Xj28v6; +always @(posedge HCLK) P7o007 <= Qj28v6; +always @(posedge HCLK) Gao007 <= Jj28v6; +always @(posedge HCLK) Xco007 <= Cj28v6; +always @(posedge HCLK) Ofo007 <= Vi28v6; +always @(posedge HCLK) Fio007 <= Oi28v6; +always @(posedge HCLK) Wko007 <= Hi28v6; +always @(posedge HCLK) Nno007 <= Ai28v6; +always @(posedge HCLK) Eqo007 <= Ly28v6; +always @(posedge HCLK) Vso007 <= Xx28v6; +always @(posedge HCLK) Nvo007 <= Qx28v6; +always @(posedge HCLK) Fyo007 <= Jx28v6; +always @(posedge HCLK) X0p007 <= Cx28v6; +always @(posedge HCLK) P3p007 <= Vw28v6; +always @(posedge HCLK) H6p007 <= Ow28v6; +always @(posedge HCLK) Z8p007 <= Hw28v6; +always @(posedge HCLK) Rbp007 <= Aw28v6; +always @(posedge HCLK) Jep007 <= Tv28v6; +always @(posedge HCLK) Bhp007 <= Mv28v6; +always @(posedge HCLK) Tjp007 <= Fv28v6; +always @(posedge HCLK) Lmp007 <= Yu28v6; +always @(posedge HCLK) Dpp007 <= Ru28v6; +always @(posedge HCLK) Vrp007 <= Ku28v6; +always @(posedge HCLK) Nup007 <= Du28v6; +always @(posedge HCLK) Fxp007 <= Wt28v6; +always @(posedge HCLK) Xzp007 <= Pt28v6; +always @(posedge HCLK) P2q007 <= It28v6; +always @(posedge HCLK) H5q007 <= Bt28v6; +always @(posedge HCLK) Z7q007 <= Us28v6; +always @(posedge HCLK) Raq007 <= Ns28v6; +always @(posedge HCLK) Jdq007 <= Gs28v6; +always @(posedge HCLK) Agq007 <= Zr28v6; +always @(posedge HCLK) Riq007 <= Sr28v6; +always @(posedge HCLK) Ilq007 <= Lr28v6; +always @(posedge HCLK) Znq007 <= Er28v6; +always @(posedge HCLK) Qqq007 <= Xq28v6; +always @(posedge HCLK) Htq007 <= Qq28v6; +always @(posedge HCLK) Yvq007 <= Jq28v6; +always @(posedge HCLK) Pyq007 <= Cq28v6; +always @(posedge HCLK) G1r007 <= P308v6; +always @(posedge HCLK) W3r007 <= B308v6; +always @(posedge HCLK) N6r007 <= U208v6; +always @(posedge HCLK) E9r007 <= N208v6; +always @(posedge HCLK) Vbr007 <= G208v6; +always @(posedge HCLK) Mer007 <= Z108v6; +always @(posedge HCLK) Dhr007 <= S108v6; +always @(posedge HCLK) Ujr007 <= L108v6; +always @(posedge HCLK) Lmr007 <= E108v6; +always @(posedge HCLK) Cpr007 <= X008v6; +always @(posedge HCLK) Trr007 <= Q008v6; +always @(posedge HCLK) Kur007 <= J008v6; +always @(posedge HCLK) Bxr007 <= C008v6; +always @(posedge HCLK) Szr007 <= Vzz7v6; +always @(posedge HCLK) J2s007 <= Ozz7v6; +always @(posedge HCLK) A5s007 <= Hzz7v6; +always @(posedge HCLK) R7s007 <= Azz7v6; +always @(posedge HCLK) Ias007 <= Tyz7v6; +always @(posedge HCLK) Zcs007 <= Myz7v6; +always @(posedge HCLK) Qfs007 <= Fyz7v6; +always @(posedge HCLK) His007 <= Yxz7v6; +always @(posedge HCLK) Yks007 <= Rxz7v6; +always @(posedge HCLK) Pns007 <= Kxz7v6; +always @(posedge HCLK) Fqs007 <= Dxz7v6; +always @(posedge HCLK) Vss007 <= Wwz7v6; +always @(posedge HCLK) Lvs007 <= Pwz7v6; +always @(posedge HCLK) Bys007 <= Iwz7v6; +always @(posedge HCLK) R0t007 <= Bwz7v6; +always @(posedge HCLK) H3t007 <= Uvz7v6; +always @(posedge HCLK) X5t007 <= Nvz7v6; +always @(posedge HCLK) N8t007 <= Gvz7v6; +always @(posedge HCLK) Dbt007 <= Vk08v6; +always @(posedge HCLK) Tdt007 <= Hk08v6; +always @(posedge HCLK) Kgt007 <= Ak08v6; +always @(posedge HCLK) Bjt007 <= Tj08v6; +always @(posedge HCLK) Slt007 <= Mj08v6; +always @(posedge HCLK) Jot007 <= Fj08v6; +always @(posedge HCLK) Art007 <= Yi08v6; +always @(posedge HCLK) Rtt007 <= Ri08v6; +always @(posedge HCLK) Iwt007 <= Ki08v6; +always @(posedge HCLK) Zyt007 <= Di08v6; +always @(posedge HCLK) Q1u007 <= Wh08v6; +always @(posedge HCLK) H4u007 <= Ph08v6; +always @(posedge HCLK) Y6u007 <= Ih08v6; +always @(posedge HCLK) P9u007 <= Bh08v6; +always @(posedge HCLK) Gcu007 <= Ug08v6; +always @(posedge HCLK) Xeu007 <= Ng08v6; +always @(posedge HCLK) Ohu007 <= Gg08v6; +always @(posedge HCLK) Fku007 <= Zf08v6; +always @(posedge HCLK) Wmu007 <= Sf08v6; +always @(posedge HCLK) Npu007 <= Lf08v6; +always @(posedge HCLK) Esu007 <= Ef08v6; +always @(posedge HCLK) Vuu007 <= Xe08v6; +always @(posedge HCLK) Mxu007 <= Qe08v6; +always @(posedge HCLK) C0v007 <= Je08v6; +always @(posedge HCLK) S2v007 <= Ce08v6; +always @(posedge HCLK) I5v007 <= Vd08v6; +always @(posedge HCLK) Y7v007 <= Od08v6; +always @(posedge HCLK) Oav007 <= Hd08v6; +always @(posedge HCLK) Edv007 <= Ad08v6; +always @(posedge HCLK) Ufv007 <= Tc08v6; +always @(posedge HCLK) Kiv007 <= Mc08v6; +always @(posedge HCLK) Alv007 <= B218v6; +always @(posedge HCLK) Qnv007 <= N118v6; +always @(posedge HCLK) Hqv007 <= G118v6; +always @(posedge HCLK) Ysv007 <= Z018v6; +always @(posedge HCLK) Pvv007 <= S018v6; +always @(posedge HCLK) Gyv007 <= L018v6; +always @(posedge HCLK) X0w007 <= E018v6; +always @(posedge HCLK) O3w007 <= Xz08v6; +always @(posedge HCLK) F6w007 <= Qz08v6; +always @(posedge HCLK) W8w007 <= Jz08v6; +always @(posedge HCLK) Nbw007 <= Cz08v6; +always @(posedge HCLK) Eew007 <= Vy08v6; +always @(posedge HCLK) Vgw007 <= Oy08v6; +always @(posedge HCLK) Mjw007 <= Hy08v6; +always @(posedge HCLK) Dmw007 <= Ay08v6; +always @(posedge HCLK) Uow007 <= Tx08v6; +always @(posedge HCLK) Lrw007 <= Mx08v6; +always @(posedge HCLK) Cuw007 <= Fx08v6; +always @(posedge HCLK) Tww007 <= Yw08v6; +always @(posedge HCLK) Kzw007 <= Rw08v6; +always @(posedge HCLK) B2x007 <= Kw08v6; +always @(posedge HCLK) S4x007 <= Dw08v6; +always @(posedge HCLK) J7x007 <= Wv08v6; +always @(posedge HCLK) Z9x007 <= Pv08v6; +always @(posedge HCLK) Pcx007 <= Iv08v6; +always @(posedge HCLK) Ffx007 <= Bv08v6; +always @(posedge HCLK) Vhx007 <= Uu08v6; +always @(posedge HCLK) Lkx007 <= Nu08v6; +always @(posedge HCLK) Bnx007 <= Gu08v6; +always @(posedge HCLK) Rpx007 <= Zt08v6; +always @(posedge HCLK) Hsx007 <= St08v6; +always @(posedge HCLK) Xux007 <= Jmz7v6; +always @(posedge HCLK) Nxx007 <= Cmz7v6; +always @(posedge HCLK) E0y007 <= Vlz7v6; +always @(posedge HCLK) V2y007 <= Olz7v6; +always @(posedge HCLK) M5y007 <= Hlz7v6; +always @(posedge HCLK) D8y007 <= Alz7v6; +always @(posedge HCLK) Uay007 <= Tkz7v6; +always @(posedge HCLK) Ldy007 <= Mkz7v6; +always @(posedge HCLK) Cgy007 <= Fkz7v6; +always @(posedge HCLK) Tiy007 <= Yjz7v6; +always @(posedge HCLK) Kly007 <= Rjz7v6; +always @(posedge HCLK) Boy007 <= Kjz7v6; +always @(posedge HCLK) Sqy007 <= Djz7v6; +always @(posedge HCLK) Jty007 <= Wiz7v6; +always @(posedge HCLK) Awy007 <= Piz7v6; +always @(posedge HCLK) Ryy007 <= Iiz7v6; +always @(posedge HCLK) I1z007 <= Biz7v6; +always @(posedge HCLK) Z3z007 <= Uhz7v6; +always @(posedge HCLK) Q6z007 <= Nhz7v6; +always @(posedge HCLK) H9z007 <= Ghz7v6; +always @(posedge HCLK) Ybz007 <= Zgz7v6; +always @(posedge HCLK) Pez007 <= Sgz7v6; +always @(posedge HCLK) Ghz007 <= Lgz7v6; +always @(posedge HCLK) Wjz007 <= Egz7v6; +always @(posedge HCLK) Mmz007 <= Xfz7v6; +always @(posedge HCLK) Cpz007 <= Qfz7v6; +always @(posedge HCLK) Srz007 <= Jfz7v6; +always @(posedge HCLK) Iuz007 <= Cfz7v6; +always @(posedge HCLK) Ywz007 <= Vez7v6; +always @(posedge HCLK) Ozz007 <= Oez7v6; +always @(posedge HCLK) E20107 <= Hez7v6; +always @(posedge HCLK) U40107 <= O3p7v6; +always @(posedge HCLK) Y70107 <= Vnx7v6; +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Qa0107 <= 1'b0; + else + Qa0107 <= D2g8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Lc0107 <= 1'b0; + else + Lc0107 <= W1g8v6; + +always @(posedge HCLK) De0107 <= Mks7v6; +always @(posedge HCLK) Sg0107 <= W8o7v6; +always @(posedge HCLK) Wj0107 <= Y9o7v6; +always @(posedge HCLK) An0107 <= Iis7v6; +always @(posedge HCLK) Pp0107 <= Rlx7v6; +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Hs0107 <= 1'b0; + else + Hs0107 <= Vxf8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Cu0107 <= 1'b0; + else + Cu0107 <= Oxf8v6; + +always @(posedge HCLK) Uv0107 <= Trs7v6; +always @(posedge HCLK) Yy0107 <= Ass7v6; +always @(posedge HCLK) C21107 <= Bis7v6; +always @(posedge HCLK) R41107 <= Ylx7v6; +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + J71107 <= 1'b0; + else + J71107 <= Jyf8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + E91107 <= 1'b0; + else + E91107 <= Cyf8v6; + +always @(posedge HCLK) Wa1107 <= Hss7v6; +always @(posedge HCLK) Ae1107 <= Oss7v6; +always @(posedge HCLK) Eh1107 <= Uhs7v6; +always @(posedge HCLK) Tj1107 <= Fmx7v6; +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Lm1107 <= 1'b0; + else + Lm1107 <= Xyf8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Go1107 <= 1'b0; + else + Go1107 <= Qyf8v6; + +always @(posedge HCLK) Yp1107 <= Vss7v6; +always @(posedge HCLK) Ct1107 <= Cts7v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Gw1107 <= 1'b0; + else + Gw1107 <= Nij8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ez1107 <= 1'b0; + else + Ez1107 <= Gij8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + L12107 <= 1'b0; + else + L12107 <= Tzj8v6; + +always @(posedge HCLK) S32107 <= Hap7v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + V62107 <= 1'b0; + else + V62107 <= Upj8v6; + +always @(posedge HCLK) U92107 <= Z5p7v6; +always @(posedge HCLK) Yc2107 <= Nhs7v6; +always @(posedge HCLK) Nf2107 <= Mmx7v6; +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Fi2107 <= 1'b0; + else + Fi2107 <= Lzf8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Ak2107 <= 1'b0; + else + Ak2107 <= Ezf8v6; + +always @(posedge HCLK) Sl2107 <= Jts7v6; +always @(posedge HCLK) Wo2107 <= Qts7v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + As2107 <= 1'b0; + else + As2107 <= Zhj8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Yu2107 <= 1'b0; + else + Yu2107 <= Ktw7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Xx2107 <= 1'b0; + else + Xx2107 <= Urw7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + W03107 <= 1'b0; + else + W03107 <= Bsw7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + V33107 <= 1'b0; + else + V33107 <= Isw7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + U63107 <= 1'b0; + else + U63107 <= Psw7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + T93107 <= 1'b0; + else + T93107 <= Wsw7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Sc3107 <= 1'b0; + else + Sc3107 <= Dtw7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Rf3107 <= 1'b0; + else + Rf3107 <= Vo38v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Sh3107 <= 1'b0; + else + Sh3107 <= Uwj8v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Sj3107 <= 1'b0; + else + Sj3107 <= Fwu7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Yl3107 <= 1'b0; + else + Yl3107 <= Qgj8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Fo3107 <= 1'b0; + else + Fo3107 <= Fej8v6; + +always @(posedge HCLK) Oq3107 <= Oap7v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Rt3107 <= 1'b0; + else + Rt3107 <= Npj8v6; + +always @(posedge HCLK) Qw3107 <= P6i8v6; +always @(posedge HCLK) Wy3107 <= L4i8v6; +always @(posedge HCLK) C14107 <= O2i8v6; +always @(posedge HCLK) H34107 <= W6i8v6; +always @(posedge HCLK) N54107 <= S4i8v6; +always @(posedge HCLK) T74107 <= V2i8v6; +always @(posedge HCLK) Z94107 <= D7i8v6; +always @(posedge HCLK) Fc4107 <= Z4i8v6; +always @(posedge HCLK) Le4107 <= C3i8v6; +always @(posedge HCLK) Rg4107 <= G5i8v6; +always @(posedge HCLK) Xi4107 <= U5i8v6; +always @(posedge HCLK) Dl4107 <= Q3i8v6; +always @(posedge HCLK) Jn4107 <= B6i8v6; +always @(posedge HCLK) Pp4107 <= X3i8v6; +always @(posedge HCLK) Vr4107 <= I6i8v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Bu4107 <= 1'b0; + else + Bu4107 <= Y6j8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ax4107 <= 1'b0; + else + Ax4107 <= O8j8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Xz4107 <= 1'b0; + else + Xz4107 <= H8j8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + U25107 <= 1'b0; + else + U25107 <= Zaj8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + L55107 <= 1'b0; + else + L55107 <= Wu88v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + I85107 <= 1'b0; + else + I85107 <= R6j8v6; + +always @(posedge HCLK) Ka5107 <= Qwh8v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Yc5107 <= 1'b0; + else + Yc5107 <= Vui8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Wf5107 <= 1'b0; + else + Wf5107 <= Lwi8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ui5107 <= 1'b0; + else + Ui5107 <= Ewi8v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Kl5107 <= 1'b0; + else + Kl5107 <= Ksx7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + En5107 <= 1'b0; + else + En5107 <= Rsx7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Yo5107 <= 1'b1; + else + Yo5107 <= Xvx7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Oq5107 <= 1'b0; + else + Oq5107 <= Ewx7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Is5107 <= 1'b1; + else + Is5107 <= Ttx7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Yt5107 <= 1'b1; + else + Yt5107 <= Oux7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Ov5107 <= 1'b0; + else + Ov5107 <= Jel8v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Bx5107 <= 1'b1; + else + Bx5107 <= Qvx7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Ry5107 <= 1'b1; + else + Ry5107 <= Jvx7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + I06107 <= 1'b1; + else + I06107 <= Cvx7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Z16107 <= 1'b1; + else + Z16107 <= Vux7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + P36107 <= 1'b1; + else + P36107 <= Hux7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + F56107 <= 1'b1; + else + F56107 <= Aux7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + V66107 <= 1'b1; + else + V66107 <= Mtx7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + L86107 <= 1'b1; + else + L86107 <= Ftx7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Ba6107 <= 1'b1; + else + Ba6107 <= Prx7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Rb6107 <= 1'b0; + else + Rb6107 <= Gf88v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Gd6107 <= 1'b0; + else + Gd6107 <= Ze88v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Ve6107 <= 1'b0; + else + Ve6107 <= Se88v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Kg6107 <= 1'b0; + else + Kg6107 <= Le88v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Yh6107 <= 1'b0; + else + Yh6107 <= Ee88v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Lj6107 <= 1'b0; + else + Lj6107 <= Nu78v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Fl6107 <= 1'b0; + else + Fl6107 <= U3k8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Zn6107 <= 1'b0; + else + Zn6107 <= Uc48v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Br6107 <= 1'b0; + else + Br6107 <= Bd48v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Du6107 <= 1'b0; + else + Du6107 <= Zwi8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Bx6107 <= 1'b0; + else + Bx6107 <= Swi8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Vz6107 <= 1'b0; + else + Vz6107 <= Gxi8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + U27107 <= 1'b0; + else + U27107 <= D6j8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + T57107 <= 1'b0; + else + T57107 <= Pcy7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + V87107 <= 1'b0; + else + V87107 <= D838v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Xb7107 <= 1'b0; + else + Xb7107 <= F7j8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + We7107 <= 1'b0; + else + We7107 <= Mej8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Dh7107 <= 1'b0; + else + Dh7107 <= Hfj8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Kj7107 <= 1'b0; + else + Kj7107 <= Ofj8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Rl7107 <= 1'b0; + else + Rl7107 <= Ehj8v6; + +always @(posedge HCLK) Yn7107 <= J3i8v6; +always @(posedge HCLK) Eq7107 <= N5i8v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ks7107 <= 1'b0; + else + Ks7107 <= Wdi8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Lu7107 <= 1'b0; + else + Lu7107 <= Shj8v6; + +always @(posedge HCLK) Qw7107 <= Pzh8v6; +always @(posedge HCLK) Qz7107 <= Izh8v6; +always @(posedge HCLK) Q28107 <= Bzh8v6; +always @(posedge HCLK) Q58107 <= Uyh8v6; +always @(posedge HCLK) Q88107 <= Nyh8v6; +always @(posedge HCLK) Gttf07 <= Gyh8v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Gwtf07 <= 1'b0; + else + Gwtf07 <= Cvi8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Eztf07 <= 1'b0; + else + Eztf07 <= M7j8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + G2uf07 <= 1'b0; + else + G2uf07 <= W5j8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + G5uf07 <= 1'b0; + else + G5uf07 <= J9j8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + J8uf07 <= 1'b0; + else + J8uf07 <= Q9j8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Mbuf07 <= 1'b0; + else + Mbuf07 <= X9j8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Peuf07 <= 1'b0; + else + Peuf07 <= Ogi8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ahuf07 <= 1'b0; + else + Ahuf07 <= Mfi8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Xjuf07 <= 1'b0; + else + Xjuf07 <= Ffi8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Umuf07 <= 1'b0; + else + Umuf07 <= Tfi8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Fpuf07 <= 1'b0; + else + Fpuf07 <= Xhi8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Csuf07 <= 1'b0; + else + Csuf07 <= Kei8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Zuuf07 <= 1'b0; + else + Zuuf07 <= Hgi8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Kxuf07 <= 1'b0; + else + Kxuf07 <= Vgi8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + H0vf07 <= 1'b0; + else + H0vf07 <= Yei8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + E3vf07 <= 1'b0; + else + E3vf07 <= Hui8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + B6vf07 <= 1'b0; + else + B6vf07 <= Xgj8v6; + +always @(posedge HCLK) I8vf07 <= G6p7v6; +always @(posedge HCLK) Mbvf07 <= Ghs7v6; +always @(posedge HCLK) Bevf07 <= Tmx7v6; +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Tgvf07 <= 1'b0; + else + Tgvf07 <= Zzf8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Oivf07 <= 1'b0; + else + Oivf07 <= Szf8v6; + +always @(posedge HCLK) Gkvf07 <= Xts7v6; +always @(posedge HCLK) Knvf07 <= Eus7v6; +always @(posedge HCLK) Oqvf07 <= Zgs7v6; +always @(posedge HCLK) Dtvf07 <= Anx7v6; +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Vvvf07 <= 1'b0; + else + Vvvf07 <= N0g8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Qxvf07 <= 1'b0; + else + Qxvf07 <= G0g8v6; + +always @(posedge HCLK) Izvf07 <= Lus7v6; +always @(posedge HCLK) M2wf07 <= Sus7v6; +always @(posedge HCLK) Q5wf07 <= Lgs7v6; +always @(posedge HCLK) F8wf07 <= Klx7v6; +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Xawf07 <= 1'b0; + else + Xawf07 <= P1g8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Scwf07 <= 1'b0; + else + Scwf07 <= I1g8v6; + +always @(posedge HCLK) Kewf07 <= I7p7v6; +always @(posedge HCLK) Ohwf07 <= Nvs7v6; +always @(posedge HCLK) Skwf07 <= D9o7v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Wnwf07 <= 1'b0; + else + Wnwf07 <= B898v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Lqwf07 <= 1'b0; + else + Lqwf07 <= Spnet6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ltwf07 <= 1'b0; + else + Ltwf07 <= Gbj8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Jwwf07 <= 1'b0; + else + Jwwf07 <= Nbj8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Hzwf07 <= 1'b0; + else + Hzwf07 <= Tzc8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + D2xf07 <= 1'b0; + else + D2xf07 <= Qvi8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + D5xf07 <= 1'b0; + else + D5xf07 <= Xvi8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + A8xf07 <= 1'b0; + else + A8xf07 <= O6l8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Uaxf07 <= 1'b0; + else + Uaxf07 <= Fds7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Udxf07 <= 1'b0; + else + Udxf07 <= Zxh8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ngxf07 <= 1'b0; + else + Ngxf07 <= Ydj8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Wixf07 <= 1'b0; + else + Wixf07 <= Icj8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Xkxf07 <= 1'b0; + else + Xkxf07 <= Bcj8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Unxf07 <= 1'b0; + else + Unxf07 <= Lhj8v6; + +always @(posedge HCLK) Bqxf07 <= K7i8v6; +always @(posedge HCLK) Hsxf07 <= R7i8v6; +always @(posedge HCLK) Nuxf07 <= Y7i8v6; +always @(posedge HCLK) Twxf07 <= F8i8v6; +always @(posedge HCLK) Zyxf07 <= M8i8v6; +always @(posedge HCLK) F1yf07 <= K0i8v6; +always @(posedge HCLK) K3yf07 <= A2i8v6; +always @(posedge HCLK) P5yf07 <= T1i8v6; +always @(posedge HCLK) U7yf07 <= Aap7v6; +always @(posedge HCLK) Xayf07 <= Wto7v6; +always @(posedge HCLK) Ndyf07 <= Zs88v6; +always @(posedge HCLK) Dgyf07 <= Ss88v6; +always @(posedge HCLK) Tiyf07 <= Ls88v6; +always @(posedge HCLK) Jlyf07 <= Es88v6; +always @(posedge HCLK) Znyf07 <= Xr88v6; +always @(posedge HCLK) Pqyf07 <= Qr88v6; +always @(posedge HCLK) Ftyf07 <= Ck88v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Tvyf07 <= 1'b0; + else + Tvyf07 <= Tsj8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Xyyf07 <= 1'b0; + else + Xyyf07 <= Otj8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + B2zf07 <= 1'b0; + else + B2zf07 <= Qp38v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + E5zf07 <= 1'b0; + else + E5zf07 <= K4l8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + I8zf07 <= 1'b0; + else + I8zf07 <= A7k8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Nazf07 <= 1'b0; + else + Nazf07 <= H7k8v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Sczf07 <= 1'b0; + else + Sczf07 <= Bam7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Tfzf07 <= 1'b0; + else + Tfzf07 <= Icy7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Thzf07 <= 1'b0; + else + Thzf07 <= Uhk8v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Vjzf07 <= 1'b0; + else + Vjzf07 <= Kof8v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Lmzf07 <= 1'b0; + else + Lmzf07 <= S9k8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Fozf07 <= 1'b1; + else + Fozf07 <= Hcf8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Zqzf07 <= 1'b0; + else + Zqzf07 <= Acf8v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Ptzf07 <= 1'b0; + else + Ptzf07 <= U8f8v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Owzf07 <= 1'b0; + else + Owzf07 <= Nf88v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Byzf07 <= 1'b0; + else + Byzf07 <= Cs78v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Yzzf07 <= 1'b0; + else + Yzzf07 <= Gu78v6; + +always @(posedge HCLK) M10g07 <= U9m7v6; +always @(posedge HCLK) C30g07 <= N9m7v6; +always @(posedge HCLK) S40g07 <= G9m7v6; +always @(posedge HCLK) H60g07 <= Z8m7v6; +always @(posedge HCLK) W70g07 <= S8m7v6; +always @(posedge HCLK) L90g07 <= L8m7v6; +always @(posedge HCLK) Ab0g07 <= E8m7v6; +always @(posedge HCLK) Pc0g07 <= X7m7v6; +always @(posedge HCLK) Ee0g07 <= Q7m7v6; +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Tf0g07 <= 1'b0; + else + Tf0g07 <= J7m7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Zg0g07 <= 1'b0; + else + Zg0g07 <= C7m7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Fi0g07 <= 1'b0; + else + Fi0g07 <= V6m7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Lj0g07 <= 1'b0; + else + Lj0g07 <= O6m7v6; + +always @(posedge HCLK) Rk0g07 <= H6m7v6; +always @(posedge HCLK) Om0g07 <= A6m7v6; +always @(posedge HCLK) Lo0g07 <= T5m7v6; +always @(posedge HCLK) Iq0g07 <= M5m7v6; +always @(posedge HCLK) Fs0g07 <= F5m7v6; +always @(posedge HCLK) Cu0g07 <= Y4m7v6; +always @(posedge HCLK) Zv0g07 <= R4m7v6; +always @(posedge HCLK) Wx0g07 <= K4m7v6; +always @(posedge HCLK) Uz0g07 <= D4m7v6; +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + S11g07 <= 1'b0; + else + S11g07 <= T3g8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + N31g07 <= 1'b0; + else + N31g07 <= M3g8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + F51g07 <= 1'b0; + else + F51g07 <= Yof8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + G71g07 <= 1'b0; + else + G71g07 <= Syg8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + V81g07 <= 1'b0; + else + V81g07 <= Lyg8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Ka1g07 <= 1'b0; + else + Ka1g07 <= Eyg8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Zb1g07 <= 1'b0; + else + Zb1g07 <= Xxg8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Od1g07 <= 1'b0; + else + Od1g07 <= Qxg8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Df1g07 <= 1'b0; + else + Df1g07 <= Vwg8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Pg1g07 <= 1'b0; + else + Pg1g07 <= Tog8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Qi1g07 <= 1'b0; + else + Qi1g07 <= Mog8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Rk1g07 <= 1'b1; + else + Rk1g07 <= Fgh8v6; + +always @(posedge HCLK) Mm1g07 <= Als7v6; +always @(posedge HCLK) Ap1g07 <= Re48v6; +always @(posedge HCLK) Ds1g07 <= Ye48v6; +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Gv1g07 <= 1'b0; + else + Gv1g07 <= Vw47v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Uw1g07 <= 1'b0; + else + Uw1g07 <= Glg8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Iy1g07 <= 1'b0; + else + Iy1g07 <= X767v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Xz1g07 <= 1'b0; + else + Xz1g07 <= Rug8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + L12g07 <= 1'b0; + else + L12g07 <= N798v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + C42g07 <= 1'b0; + else + C42g07 <= Obo7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + T62g07 <= 1'b0; + else + T62g07 <= G798v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + M92g07 <= 1'b0; + else + M92g07 <= Z698v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Fc2g07 <= 1'b0; + else + Fc2g07 <= S698v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ye2g07 <= 1'b0; + else + Ye2g07 <= L698v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Rh2g07 <= 1'b0; + else + Rh2g07 <= E698v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Lk2g07 <= 1'b0; + else + Lk2g07 <= X598v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Fn2g07 <= 1'b0; + else + Fn2g07 <= Q598v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Zp2g07 <= 1'b0; + else + Zp2g07 <= J598v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ts2g07 <= 1'b0; + else + Ts2g07 <= C598v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Nv2g07 <= 1'b0; + else + Nv2g07 <= V498v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Hy2g07 <= 1'b0; + else + Hy2g07 <= O498v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + B13g07 <= 1'b0; + else + B13g07 <= H498v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + V33g07 <= 1'b0; + else + V33g07 <= A498v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + P63g07 <= 1'b0; + else + P63g07 <= T398v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + J93g07 <= 1'b0; + else + J93g07 <= M398v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Dc3g07 <= 1'b0; + else + Dc3g07 <= F398v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Xe3g07 <= 1'b0; + else + Xe3g07 <= Y298v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Rh3g07 <= 1'b0; + else + Rh3g07 <= R298v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Lk3g07 <= 1'b0; + else + Lk3g07 <= K298v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Fn3g07 <= 1'b0; + else + Fn3g07 <= D298v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Zp3g07 <= 1'b0; + else + Zp3g07 <= W198v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ts3g07 <= 1'b0; + else + Ts3g07 <= P198v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Nv3g07 <= 1'b0; + else + Nv3g07 <= I198v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Hy3g07 <= 1'b0; + else + Hy3g07 <= B198v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + B14g07 <= 1'b0; + else + B14g07 <= U098v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + V34g07 <= 1'b0; + else + V34g07 <= G098v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + O64g07 <= 1'b0; + else + O64g07 <= A9i8v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + S84g07 <= 1'b0; + else + S84g07 <= Nwj8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ra4g07 <= 1'b0; + else + Ra4g07 <= Bdi8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Tc4g07 <= 1'b0; + else + Tc4g07 <= Tej8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Af4g07 <= 1'b0; + else + Af4g07 <= Aa38v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Yh4g07 <= 1'b0; + else + Yh4g07 <= Qi38v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Xk4g07 <= 1'b0; + else + Xk4g07 <= Ha38v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Vn4g07 <= 1'b0; + else + Vn4g07 <= Oa38v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Tq4g07 <= 1'b0; + else + Tq4g07 <= Va38v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Rt4g07 <= 1'b0; + else + Rt4g07 <= Jb38v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Pw4g07 <= 1'b0; + else + Pw4g07 <= Qb38v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Oz4g07 <= 1'b0; + else + Oz4g07 <= Xb38v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + N25g07 <= 1'b0; + else + N25g07 <= Ec38v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + M55g07 <= 1'b0; + else + M55g07 <= Bl38v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + L85g07 <= 1'b0; + else + L85g07 <= Pl38v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Kb5g07 <= 1'b0; + else + Kb5g07 <= T938v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ie5g07 <= 1'b0; + else + Ie5g07 <= Wl38v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Gh5g07 <= 1'b0; + else + Gh5g07 <= Dm38v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Bk5g07 <= 1'b0; + else + Bk5g07 <= Km38v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ym5g07 <= 1'b0; + else + Ym5g07 <= Il38v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Xp5g07 <= 1'b0; + else + Xp5g07 <= Xi38v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ws5g07 <= 1'b0; + else + Ws5g07 <= Ji38v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Vv5g07 <= 1'b0; + else + Vv5g07 <= Ci38v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Uy5g07 <= 1'b0; + else + Uy5g07 <= Vh38v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + T16g07 <= 1'b0; + else + T16g07 <= Qhi8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + W46g07 <= 1'b0; + else + W46g07 <= Iik8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Z76g07 <= 1'b0; + else + Z76g07 <= Oui8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Xa6g07 <= 1'b0; + else + Xa6g07 <= Dei8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ae6g07 <= 1'b0; + else + Ae6g07 <= Cb38v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Yg6g07 <= 1'b0; + else + Yg6g07 <= M938v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Wj6g07 <= 1'b0; + else + Wj6g07 <= K838v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Xm6g07 <= 1'b0; + else + Xm6g07 <= R838v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Yp6g07 <= 1'b0; + else + Yp6g07 <= F938v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Zs6g07 <= 1'b0; + else + Zs6g07 <= Afj8v6; + +always @(posedge HCLK) Gv6g07 <= B7p7v6; +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Ky6g07 <= 1'b1; + else + Ky6g07 <= W3m7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + T07g07 <= 1'b0; + else + T07g07 <= Rjzet6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + H37g07 <= 1'b0; + else + H37g07 <= Ay0ft6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + P57g07 <= 1'b0; + else + P57g07 <= Pd48v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + R87g07 <= 1'b0; + else + R87g07 <= Gc48v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Tb7g07 <= 1'b0; + else + Tb7g07 <= Nc48v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ve7g07 <= 1'b0; + else + Ve7g07 <= Wd48v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Xh7g07 <= 1'b0; + else + Xh7g07 <= Yhf8v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Ak7g07 <= 1'b0; + else + Ak7g07 <= Fif8v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Dm7g07 <= 1'b0; + else + Dm7g07 <= Mif8v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Go7g07 <= 1'b0; + else + Go7g07 <= Tif8v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Jq7g07 <= 1'b0; + else + Jq7g07 <= Ckf8v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Ss7g07 <= 1'b0; + else + Ss7g07 <= Xkf8v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Bv7g07 <= 1'b0; + else + Bv7g07 <= Llf8v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Lx7g07 <= 1'b0; + else + Lx7g07 <= Slf8v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Vz7g07 <= 1'b0; + else + Vz7g07 <= Gmf8v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + V18g07 <= 1'b0; + else + V18g07 <= Zlf8v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + E48g07 <= 1'b0; + else + E48g07 <= Elf8v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + N68g07 <= 1'b0; + else + N68g07 <= Qkf8v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + W88g07 <= 1'b0; + else + W88g07 <= Jkf8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Fb8g07 <= 1'b0; + else + Fb8g07 <= P3m7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Kd8g07 <= 1'b0; + else + Kd8g07 <= I3m7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Pf8g07 <= 1'b0; + else + Pf8g07 <= B3m7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Uh8g07 <= 1'b0; + else + Uh8g07 <= U2m7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Zj8g07 <= 1'b0; + else + Zj8g07 <= N2m7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Em8g07 <= 1'b0; + else + Em8g07 <= G2m7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Jo8g07 <= 1'b0; + else + Jo8g07 <= Z1m7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Oq8g07 <= 1'b0; + else + Oq8g07 <= S1m7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ts8g07 <= 1'b0; + else + Ts8g07 <= L1m7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Yu8g07 <= 1'b0; + else + Yu8g07 <= E1m7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Dx8g07 <= 1'b0; + else + Dx8g07 <= X0m7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Iz8g07 <= 1'b0; + else + Iz8g07 <= Q0m7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + N19g07 <= 1'b0; + else + N19g07 <= J0m7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + S39g07 <= 1'b0; + else + S39g07 <= C0m7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + W59g07 <= 1'b0; + else + W59g07 <= Vzl7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + A89g07 <= 1'b0; + else + A89g07 <= Ozl7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ea9g07 <= 1'b0; + else + Ea9g07 <= Hzl7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ic9g07 <= 1'b0; + else + Ic9g07 <= Azl7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Me9g07 <= 1'b0; + else + Me9g07 <= Tyl7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Qg9g07 <= 1'b0; + else + Qg9g07 <= Myl7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ui9g07 <= 1'b0; + else + Ui9g07 <= Fyl7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Yk9g07 <= 1'b0; + else + Yk9g07 <= Vjf8v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Hn9g07 <= 1'b0; + else + Hn9g07 <= Ojf8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Qp9g07 <= 1'b0; + else + Qp9g07 <= Yxl7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Sr9g07 <= 1'b0; + else + Sr9g07 <= Rxl7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ut9g07 <= 1'b0; + else + Ut9g07 <= Kxl7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Wv9g07 <= 1'b0; + else + Wv9g07 <= Dxl7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Zx9g07 <= 1'b0; + else + Zx9g07 <= Wwl7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + C0ag07 <= 1'b0; + else + C0ag07 <= Pwl7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + F2ag07 <= 1'b0; + else + F2ag07 <= Iwl7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + H4ag07 <= 1'b0; + else + H4ag07 <= Bwl7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + J6ag07 <= 1'b0; + else + J6ag07 <= Uvl7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + L8ag07 <= 1'b0; + else + L8ag07 <= B4d8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Paag07 <= 1'b0; + else + Paag07 <= X8d8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Tcag07 <= 1'b0; + else + Tcag07 <= Tdd8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Xeag07 <= 1'b0; + else + Xeag07 <= Znd8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Bhag07 <= 1'b0; + else + Bhag07 <= Vsd8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Gjag07 <= 1'b0; + else + Gjag07 <= Rxd8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Llag07 <= 1'b0; + else + Llag07 <= J7e8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Qnag07 <= 1'b0; + else + Qnag07 <= Fce8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Vpag07 <= 1'b0; + else + Vpag07 <= U1f8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Asag07 <= 1'b0; + else + Asag07 <= Q6f8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Fuag07 <= 1'b0; + else + Fuag07 <= Nff8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Kwag07 <= 1'b0; + else + Kwag07 <= X1d8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Nyag07 <= 1'b0; + else + Nyag07 <= T6d8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Q0bg07 <= 1'b0; + else + Q0bg07 <= Pbd8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + T2bg07 <= 1'b0; + else + T2bg07 <= Vld8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + W4bg07 <= 1'b0; + else + W4bg07 <= Rqd8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Z6bg07 <= 1'b0; + else + Z6bg07 <= Nvd8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + C9bg07 <= 1'b0; + else + C9bg07 <= F5e8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Fbbg07 <= 1'b0; + else + Fbbg07 <= Bae8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Idbg07 <= 1'b0; + else + Idbg07 <= Qze8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Lfbg07 <= 1'b0; + else + Lfbg07 <= M4f8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Phbg07 <= 1'b0; + else + Phbg07 <= Rhf8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Tjbg07 <= 1'b0; + else + Tjbg07 <= I4d8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ylbg07 <= 1'b0; + else + Ylbg07 <= E9d8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Dobg07 <= 1'b0; + else + Dobg07 <= Aed8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Iqbg07 <= 1'b0; + else + Iqbg07 <= God8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Nsbg07 <= 1'b0; + else + Nsbg07 <= Ctd8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Subg07 <= 1'b0; + else + Subg07 <= Yxd8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Xwbg07 <= 1'b0; + else + Xwbg07 <= Q7e8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Czbg07 <= 1'b0; + else + Czbg07 <= Mce8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + H1cg07 <= 1'b0; + else + H1cg07 <= B2f8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + M3cg07 <= 1'b0; + else + M3cg07 <= X6f8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + R5cg07 <= 1'b0; + else + R5cg07 <= Gff8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + W7cg07 <= 1'b0; + else + W7cg07 <= E2d8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Aacg07 <= 1'b0; + else + Aacg07 <= A7d8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Eccg07 <= 1'b0; + else + Eccg07 <= Wbd8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Iecg07 <= 1'b0; + else + Iecg07 <= Cmd8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Mgcg07 <= 1'b0; + else + Mgcg07 <= Yqd8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Qicg07 <= 1'b0; + else + Qicg07 <= Uvd8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ukcg07 <= 1'b0; + else + Ukcg07 <= M5e8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ymcg07 <= 1'b0; + else + Ymcg07 <= Iae8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Cpcg07 <= 1'b0; + else + Cpcg07 <= Xze8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Grcg07 <= 1'b0; + else + Grcg07 <= T4f8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ktcg07 <= 1'b0; + else + Ktcg07 <= Khf8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ovcg07 <= 1'b0; + else + Ovcg07 <= Nvl7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Nxcg07 <= 1'b0; + else + Nxcg07 <= Gvl7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Mzcg07 <= 1'b0; + else + Mzcg07 <= Rh88v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + P1dg07 <= 1'b0; + else + P1dg07 <= Pxc8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + S3dg07 <= 1'b0; + else + S3dg07 <= Fzc8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + V5dg07 <= 1'b0; + else + V5dg07 <= A0d8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Y7dg07 <= 1'b0; + else + Y7dg07 <= J1d8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Badg07 <= 1'b0; + else + Badg07 <= F6d8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ecdg07 <= 1'b0; + else + Ecdg07 <= Bbd8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Hedg07 <= 1'b0; + else + Hedg07 <= Pid8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Kgdg07 <= 1'b0; + else + Kgdg07 <= Kjd8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Nidg07 <= 1'b0; + else + Nidg07 <= Fkd8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Qkdg07 <= 1'b0; + else + Qkdg07 <= Tkd8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Tmdg07 <= 1'b0; + else + Tmdg07 <= Hld8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Wodg07 <= 1'b0; + else + Wodg07 <= Dqd8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Zqdg07 <= 1'b0; + else + Zqdg07 <= Zud8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ctdg07 <= 1'b0; + else + Ctdg07 <= Fje8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Fvdg07 <= 1'b0; + else + Fvdg07 <= Ywe8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ixdg07 <= 1'b0; + else + Ixdg07 <= Mxe8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Lzdg07 <= 1'b0; + else + Lzdg07 <= Aye8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + O1eg07 <= 1'b0; + else + O1eg07 <= Oye8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + R3eg07 <= 1'b0; + else + R3eg07 <= Cze8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + U5eg07 <= 1'b0; + else + U5eg07 <= Y3f8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + X7eg07 <= 1'b0; + else + X7eg07 <= Jdf8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Aaeg07 <= 1'b0; + else + Aaeg07 <= N2e8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Dceg07 <= 1'b0; + else + Dceg07 <= B3e8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Geeg07 <= 1'b0; + else + Geeg07 <= P3e8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Jgeg07 <= 1'b0; + else + Jgeg07 <= D4e8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Mieg07 <= 1'b0; + else + Mieg07 <= R4e8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Pkeg07 <= 1'b0; + else + Pkeg07 <= N9e8v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Smeg07 <= 1'b0; + else + Smeg07 <= Yjk8v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Qpeg07 <= 1'b0; + else + Qpeg07 <= Zul7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Rseg07 <= 1'b0; + else + Rseg07 <= Sul7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Vueg07 <= 1'b0; + else + Vueg07 <= Lul7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Xweg07 <= 1'b0; + else + Xweg07 <= Lef8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Czeg07 <= 1'b0; + else + Czeg07 <= S7f8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + H1fg07 <= 1'b0; + else + H1fg07 <= W2f8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + M3fg07 <= 1'b0; + else + M3fg07 <= Hde8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + R5fg07 <= 1'b0; + else + R5fg07 <= L8e8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + W7fg07 <= 1'b0; + else + W7fg07 <= Tyd8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Bafg07 <= 1'b0; + else + Bafg07 <= Xtd8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Gcfg07 <= 1'b0; + else + Gcfg07 <= Bpd8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Lefg07 <= 1'b0; + else + Lefg07 <= Ved8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Qgfg07 <= 1'b0; + else + Qgfg07 <= Z9d8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Vifg07 <= 1'b0; + else + Vifg07 <= D5d8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Alfg07 <= 1'b0; + else + Alfg07 <= Pgf8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Enfg07 <= 1'b0; + else + Enfg07 <= O5f8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ipfg07 <= 1'b0; + else + Ipfg07 <= S0f8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Mrfg07 <= 1'b0; + else + Mrfg07 <= Dbe8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Qtfg07 <= 1'b0; + else + Qtfg07 <= H6e8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Uvfg07 <= 1'b0; + else + Uvfg07 <= Pwd8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Yxfg07 <= 1'b0; + else + Yxfg07 <= Trd8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + C0gg07 <= 1'b0; + else + C0gg07 <= Xmd8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + G2gg07 <= 1'b0; + else + G2gg07 <= Rcd8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + K4gg07 <= 1'b0; + else + K4gg07 <= V7d8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + O6gg07 <= 1'b0; + else + O6gg07 <= Z2d8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + S8gg07 <= 1'b0; + else + S8gg07 <= Eul7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Pagg07 <= 1'b0; + else + Pagg07 <= Xtl7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Qcgg07 <= 1'b0; + else + Qcgg07 <= C4w7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Oegg07 <= 1'b0; + else + Oegg07 <= Ajf8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Tggg07 <= 1'b1; + else + Tggg07 <= Qtl7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Bjgg07 <= 1'b0; + else + Bjgg07 <= F6k8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Klgg07 <= 1'b0; + else + Klgg07 <= Bbk8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ongg07 <= 1'b1; + else + Ongg07 <= Uak8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Cqgg07 <= 1'b0; + else + Cqgg07 <= Jtl7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Jsgg07 <= 1'b0; + else + Jsgg07 <= Ctl7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Qugg07 <= 1'b0; + else + Qugg07 <= Vsl7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Xwgg07 <= 1'b0; + else + Xwgg07 <= Osl7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ezgg07 <= 1'b0; + else + Ezgg07 <= C9j8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + B2hg07 <= 1'b0; + else + B2hg07 <= V8j8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Y4hg07 <= 1'b0; + else + Y4hg07 <= Hsl7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + F7hg07 <= 1'b0; + else + F7hg07 <= Asl7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + M9hg07 <= 1'b0; + else + M9hg07 <= Trl7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Pbhg07 <= 1'b0; + else + Pbhg07 <= Mrl7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Sdhg07 <= 1'b0; + else + Sdhg07 <= Frl7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Vfhg07 <= 1'b0; + else + Vfhg07 <= Icc8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Rhhg07 <= 1'b0; + else + Rhhg07 <= Pcc8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Njhg07 <= 1'b0; + else + Njhg07 <= Ddc8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Jlhg07 <= 1'b0; + else + Jlhg07 <= Kdc8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Fnhg07 <= 1'b0; + else + Fnhg07 <= Rdc8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Bphg07 <= 1'b0; + else + Bphg07 <= Ydc8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Xqhg07 <= 1'b0; + else + Xqhg07 <= Fec8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Tshg07 <= 1'b0; + else + Tshg07 <= Tec8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Puhg07 <= 1'b0; + else + Puhg07 <= Afc8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Mwhg07 <= 1'b0; + else + Mwhg07 <= Hfc8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Jyhg07 <= 1'b0; + else + Jyhg07 <= Ofc8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + G0ig07 <= 1'b0; + else + G0ig07 <= Vfc8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + D2ig07 <= 1'b0; + else + D2ig07 <= Cgc8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + A4ig07 <= 1'b0; + else + A4ig07 <= Jgc8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + X5ig07 <= 1'b0; + else + X5ig07 <= Xgc8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + U7ig07 <= 1'b0; + else + U7ig07 <= Ehc8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + R9ig07 <= 1'b0; + else + R9ig07 <= Lhc8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Obig07 <= 1'b0; + else + Obig07 <= Shc8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ldig07 <= 1'b0; + else + Ldig07 <= Zhc8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ifig07 <= 1'b0; + else + Ifig07 <= Gic8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Fhig07 <= 1'b0; + else + Fhig07 <= Uic8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Cjig07 <= 1'b0; + else + Cjig07 <= Bjc8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Zkig07 <= 1'b0; + else + Zkig07 <= Ijc8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Wmig07 <= 1'b0; + else + Wmig07 <= Pjc8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Toig07 <= 1'b0; + else + Toig07 <= Wjc8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Qqig07 <= 1'b0; + else + Qqig07 <= Dkc8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Nsig07 <= 1'b0; + else + Nsig07 <= Kkc8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Kuig07 <= 1'b0; + else + Kuig07 <= Rkc8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Hwig07 <= 1'b0; + else + Hwig07 <= Y5d8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Myig07 <= 1'b0; + else + Myig07 <= Uad8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + R0jg07 <= 1'b0; + else + R0jg07 <= Qfd8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + W2jg07 <= 1'b0; + else + W2jg07 <= Wpd8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + B5jg07 <= 1'b0; + else + B5jg07 <= Sud8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + G7jg07 <= 1'b0; + else + G7jg07 <= Ozd8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + L9jg07 <= 1'b0; + else + L9jg07 <= G9e8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Qbjg07 <= 1'b0; + else + Qbjg07 <= Cee8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Vdjg07 <= 1'b0; + else + Vdjg07 <= R3f8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Agjg07 <= 1'b0; + else + Agjg07 <= N8f8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Fijg07 <= 1'b0; + else + Fijg07 <= Qdf8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Kkjg07 <= 1'b0; + else + Kkjg07 <= U3d8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Omjg07 <= 1'b0; + else + Omjg07 <= Q8d8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Sojg07 <= 1'b0; + else + Sojg07 <= Mdd8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Wqjg07 <= 1'b0; + else + Wqjg07 <= Snd8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Atjg07 <= 1'b0; + else + Atjg07 <= Osd8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Evjg07 <= 1'b0; + else + Evjg07 <= Kxd8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ixjg07 <= 1'b0; + else + Ixjg07 <= C7e8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Mzjg07 <= 1'b0; + else + Mzjg07 <= Ybe8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Q1kg07 <= 1'b0; + else + Q1kg07 <= N1f8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + U3kg07 <= 1'b0; + else + U3kg07 <= J6f8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Y5kg07 <= 1'b0; + else + Y5kg07 <= Uff8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + C8kg07 <= 1'b0; + else + C8kg07 <= Muw7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Cakg07 <= 1'b0; + else + Cakg07 <= W4d8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Hckg07 <= 1'b0; + else + Hckg07 <= S9d8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Mekg07 <= 1'b0; + else + Mekg07 <= Oed8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Rgkg07 <= 1'b0; + else + Rgkg07 <= Uod8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Wikg07 <= 1'b0; + else + Wikg07 <= Qtd8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Blkg07 <= 1'b0; + else + Blkg07 <= Myd8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Gnkg07 <= 1'b0; + else + Gnkg07 <= E8e8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Lpkg07 <= 1'b0; + else + Lpkg07 <= Ade8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Qrkg07 <= 1'b0; + else + Qrkg07 <= P2f8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Vtkg07 <= 1'b0; + else + Vtkg07 <= L7f8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Awkg07 <= 1'b0; + else + Awkg07 <= Sef8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Fykg07 <= 1'b0; + else + Fykg07 <= S2d8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + J0lg07 <= 1'b0; + else + J0lg07 <= O7d8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + N2lg07 <= 1'b0; + else + N2lg07 <= Kcd8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + R4lg07 <= 1'b0; + else + R4lg07 <= Qmd8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + V6lg07 <= 1'b0; + else + V6lg07 <= Mrd8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Z8lg07 <= 1'b0; + else + Z8lg07 <= Iwd8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Dblg07 <= 1'b0; + else + Dblg07 <= A6e8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Hdlg07 <= 1'b0; + else + Hdlg07 <= Wae8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Lflg07 <= 1'b0; + else + Lflg07 <= L0f8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Phlg07 <= 1'b0; + else + Phlg07 <= H5f8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Tjlg07 <= 1'b0; + else + Tjlg07 <= Wgf8v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Xllg07 <= 1'b0; + else + Xllg07 <= Yql7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Bolg07 <= 1'b0; + else + Bolg07 <= Rql7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Qplg07 <= 1'b0; + else + Qplg07 <= Kql7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Hrlg07 <= 1'b0; + else + Hrlg07 <= Dql7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Yslg07 <= 1'b0; + else + Yslg07 <= Vc88v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Zulg07 <= 1'b0; + else + Zulg07 <= Jd88v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Axlg07 <= 1'b0; + else + Axlg07 <= Ac88v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Ezlg07 <= 1'b0; + else + Ezlg07 <= Hc88v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + I1mg07 <= 1'b0; + else + I1mg07 <= Oc88v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + H3mg07 <= 1'b0; + else + H3mg07 <= Cd88v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + I5mg07 <= 1'b0; + else + I5mg07 <= Qd88v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + J7mg07 <= 1'b0; + else + J7mg07 <= Zdo7v6; + +always @(posedge FCLK) F9mg07 <= Hx88v6; +always @(posedge FCLK) Lbmg07 <= Ax88v6; +always @(posedge FCLK) Rdmg07 <= Tw88v6; +always @(posedge FCLK) Xfmg07 <= Mw88v6; +always @(posedge FCLK) Dimg07 <= Fw88v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Hkmg07 <= 1'b0; + else + Hkmg07 <= Wpl7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ylmg07 <= 1'b0; + else + Ylmg07 <= Rwe8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Pnmg07 <= 1'b0; + else + Pnmg07 <= Kwe8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Epmg07 <= 1'b0; + else + Epmg07 <= Dwe8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Vqmg07 <= 1'b0; + else + Vqmg07 <= Wve8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Msmg07 <= 1'b0; + else + Msmg07 <= Pve8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Dumg07 <= 1'b0; + else + Dumg07 <= Uue8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Vvmg07 <= 1'b0; + else + Vvmg07 <= Nue8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Nxmg07 <= 1'b0; + else + Nxmg07 <= Gue8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Fzmg07 <= 1'b0; + else + Fzmg07 <= Zte8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + X0ng07 <= 1'b0; + else + X0ng07 <= Ste8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + P2ng07 <= 1'b0; + else + P2ng07 <= Lte8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + H4ng07 <= 1'b0; + else + H4ng07 <= Ete8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Z5ng07 <= 1'b0; + else + Z5ng07 <= Xse8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + R7ng07 <= 1'b0; + else + R7ng07 <= Qse8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + J9ng07 <= 1'b0; + else + J9ng07 <= Jse8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Bbng07 <= 1'b0; + else + Bbng07 <= Cse8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Tcng07 <= 1'b0; + else + Tcng07 <= Vre8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Leng07 <= 1'b0; + else + Leng07 <= Ore8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Dgng07 <= 1'b0; + else + Dgng07 <= Hre8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Vhng07 <= 1'b0; + else + Vhng07 <= Are8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Njng07 <= 1'b0; + else + Njng07 <= Tqe8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Flng07 <= 1'b0; + else + Flng07 <= Mqe8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Xmng07 <= 1'b0; + else + Xmng07 <= Fqe8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Pong07 <= 1'b0; + else + Pong07 <= Ype8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Hqng07 <= 1'b0; + else + Hqng07 <= Rpe8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Zrng07 <= 1'b0; + else + Zrng07 <= Kpe8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Rtng07 <= 1'b0; + else + Rtng07 <= Dpe8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Jvng07 <= 1'b0; + else + Jvng07 <= Woe8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Axng07 <= 1'b0; + else + Axng07 <= Poe8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ryng07 <= 1'b0; + else + Ryng07 <= Ioe8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + I0og07 <= 1'b0; + else + I0og07 <= Boe8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Z1og07 <= 1'b0; + else + Z1og07 <= Une8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Q3og07 <= 1'b0; + else + Q3og07 <= Nne8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + H5og07 <= 1'b0; + else + H5og07 <= Gne8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Y6og07 <= 1'b0; + else + Y6og07 <= Zme8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + P8og07 <= 1'b0; + else + P8og07 <= Sme8v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Gaog07 <= 1'b0; + else + Gaog07 <= Yv88v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ncog07 <= 1'b0; + else + Ncog07 <= Qqo7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Eeog07 <= 1'b0; + else + Eeog07 <= Jqo7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Vfog07 <= 1'b0; + else + Vfog07 <= Cqo7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Mhog07 <= 1'b0; + else + Mhog07 <= Vpo7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Djog07 <= 1'b0; + else + Djog07 <= Opo7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ukog07 <= 1'b0; + else + Ukog07 <= Hpo7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Lmog07 <= 1'b0; + else + Lmog07 <= Apo7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Coog07 <= 1'b0; + else + Coog07 <= Too7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Tpog07 <= 1'b0; + else + Tpog07 <= Moo7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Krog07 <= 1'b0; + else + Krog07 <= Foo7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Btog07 <= 1'b0; + else + Btog07 <= Yno7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Tuog07 <= 1'b0; + else + Tuog07 <= Rno7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Lwog07 <= 1'b0; + else + Lwog07 <= Kno7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Dyog07 <= 1'b0; + else + Dyog07 <= Dno7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Vzog07 <= 1'b0; + else + Vzog07 <= Wmo7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + N1pg07 <= 1'b0; + else + N1pg07 <= Pmo7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + F3pg07 <= 1'b0; + else + F3pg07 <= Imo7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + X4pg07 <= 1'b0; + else + X4pg07 <= Bmo7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + P6pg07 <= 1'b0; + else + P6pg07 <= Ulo7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + H8pg07 <= 1'b0; + else + H8pg07 <= Nlo7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Z9pg07 <= 1'b0; + else + Z9pg07 <= Glo7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Rbpg07 <= 1'b0; + else + Rbpg07 <= Zko7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Jdpg07 <= 1'b0; + else + Jdpg07 <= Sko7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Bfpg07 <= 1'b0; + else + Bfpg07 <= Lko7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Tgpg07 <= 1'b0; + else + Tgpg07 <= Eko7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Lipg07 <= 1'b0; + else + Lipg07 <= Xjo7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Dkpg07 <= 1'b0; + else + Dkpg07 <= Qjo7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Vlpg07 <= 1'b0; + else + Vlpg07 <= Jjo7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Nnpg07 <= 1'b0; + else + Nnpg07 <= Vio7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Fppg07 <= 1'b0; + else + Fppg07 <= Oio7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Xqpg07 <= 1'b0; + else + Xqpg07 <= Hio7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Pspg07 <= 1'b0; + else + Pspg07 <= Ppl7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Supg07 <= 1'b0; + else + Supg07 <= Ipl7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Xwpg07 <= 1'b0; + else + Xwpg07 <= Bpl7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Azpg07 <= 1'b0; + else + Azpg07 <= Uol7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + C1qg07 <= 1'b0; + else + C1qg07 <= Nol7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + G3qg07 <= 1'b0; + else + G3qg07 <= Gol7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + J5qg07 <= 1'b0; + else + J5qg07 <= Znl7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + N7qg07 <= 1'b0; + else + N7qg07 <= Snl7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + T9qg07 <= 1'b0; + else + T9qg07 <= Lnl7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ubqg07 <= 1'b0; + else + Ubqg07 <= Enl7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Wdqg07 <= 1'b0; + else + Wdqg07 <= En68v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Yfqg07 <= 1'b0; + else + Yfqg07 <= Qt68v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Biqg07 <= 1'b0; + else + Biqg07 <= Ct68v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Dkqg07 <= 1'b0; + else + Dkqg07 <= Vs68v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Gmqg07 <= 1'b0; + else + Gmqg07 <= Os68v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Joqg07 <= 1'b0; + else + Joqg07 <= Hs68v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Mqqg07 <= 1'b0; + else + Mqqg07 <= As68v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Psqg07 <= 1'b0; + else + Psqg07 <= Tr68v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Suqg07 <= 1'b0; + else + Suqg07 <= Yq68v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Vwqg07 <= 1'b0; + else + Vwqg07 <= Dq68v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Yyqg07 <= 1'b0; + else + Yyqg07 <= Wp68v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + B1rg07 <= 1'b0; + else + B1rg07 <= Ip68v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + E3rg07 <= 1'b0; + else + E3rg07 <= Uo68v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + H5rg07 <= 1'b0; + else + H5rg07 <= No68v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + K7rg07 <= 1'b0; + else + K7rg07 <= Go68v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + N9rg07 <= 1'b0; + else + N9rg07 <= Zn68v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Qbrg07 <= 1'b0; + else + Qbrg07 <= Sn68v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Tdrg07 <= 1'b0; + else + Tdrg07 <= Ln68v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Wfrg07 <= 1'b0; + else + Wfrg07 <= Xml7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Yhrg07 <= 1'b0; + else + Yhrg07 <= Qml7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Akrg07 <= 1'b0; + else + Akrg07 <= Jml7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Cmrg07 <= 1'b0; + else + Cmrg07 <= Cml7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Eorg07 <= 1'b0; + else + Eorg07 <= Vll7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Gqrg07 <= 1'b0; + else + Gqrg07 <= Oll7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Isrg07 <= 1'b0; + else + Isrg07 <= Hll7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Kurg07 <= 1'b0; + else + Kurg07 <= All7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Mwrg07 <= 1'b0; + else + Mwrg07 <= Tkl7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Oyrg07 <= 1'b0; + else + Oyrg07 <= R5d8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + T0sg07 <= 1'b0; + else + T0sg07 <= Nad8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Y2sg07 <= 1'b0; + else + Y2sg07 <= Jfd8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + D5sg07 <= 1'b0; + else + D5sg07 <= Ppd8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + I7sg07 <= 1'b0; + else + I7sg07 <= Lud8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + N9sg07 <= 1'b0; + else + N9sg07 <= Hzd8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Sbsg07 <= 1'b0; + else + Sbsg07 <= Z8e8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Xdsg07 <= 1'b0; + else + Xdsg07 <= Vde8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Cgsg07 <= 1'b0; + else + Cgsg07 <= K3f8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Hisg07 <= 1'b0; + else + Hisg07 <= G8f8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Mksg07 <= 1'b0; + else + Mksg07 <= Xdf8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Rmsg07 <= 1'b0; + else + Rmsg07 <= N3d8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Vosg07 <= 1'b0; + else + Vosg07 <= J8d8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Zqsg07 <= 1'b0; + else + Zqsg07 <= Fdd8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Dtsg07 <= 1'b0; + else + Dtsg07 <= Lnd8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Hvsg07 <= 1'b0; + else + Hvsg07 <= Hsd8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Lxsg07 <= 1'b0; + else + Lxsg07 <= Dxd8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Pzsg07 <= 1'b0; + else + Pzsg07 <= V6e8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + T1tg07 <= 1'b0; + else + T1tg07 <= Rbe8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + X3tg07 <= 1'b0; + else + X3tg07 <= G1f8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + B6tg07 <= 1'b0; + else + B6tg07 <= C6f8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + F8tg07 <= 1'b0; + else + F8tg07 <= Bgf8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Jatg07 <= 1'b0; + else + Jatg07 <= Mkl7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Kctg07 <= 1'b0; + else + Kctg07 <= Fkl7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Letg07 <= 1'b0; + else + Letg07 <= A8y7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Kgtg07 <= 1'b0; + else + Kgtg07 <= O8y7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Jitg07 <= 1'b0; + else + Jitg07 <= V8y7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Iktg07 <= 1'b0; + else + Iktg07 <= C9y7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Hmtg07 <= 1'b0; + else + Hmtg07 <= J9y7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Hotg07 <= 1'b0; + else + Hotg07 <= Q9y7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Hqtg07 <= 1'b0; + else + Hqtg07 <= Eay7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Hstg07 <= 1'b0; + else + Hstg07 <= Lay7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Hutg07 <= 1'b0; + else + Hutg07 <= Say7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Hwtg07 <= 1'b0; + else + Hwtg07 <= Gby7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Hytg07 <= 1'b0; + else + Hytg07 <= Wyx7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + G0ug07 <= 1'b0; + else + G0ug07 <= Dzx7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + F2ug07 <= 1'b0; + else + F2ug07 <= Nby7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + E4ug07 <= 1'b0; + else + E4ug07 <= P4d8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + J6ug07 <= 1'b0; + else + J6ug07 <= L9d8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + O8ug07 <= 1'b0; + else + O8ug07 <= Hed8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Taug07 <= 1'b0; + else + Taug07 <= Nod8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ycug07 <= 1'b0; + else + Ycug07 <= Jtd8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Dfug07 <= 1'b0; + else + Dfug07 <= Fyd8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ihug07 <= 1'b0; + else + Ihug07 <= X7e8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Njug07 <= 1'b0; + else + Njug07 <= Tce8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Slug07 <= 1'b0; + else + Slug07 <= I2f8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Xnug07 <= 1'b0; + else + Xnug07 <= E7f8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Cqug07 <= 1'b0; + else + Cqug07 <= Zef8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Hsug07 <= 1'b0; + else + Hsug07 <= Dhf8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Luug07 <= 1'b0; + else + Luug07 <= A5f8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Pwug07 <= 1'b0; + else + Pwug07 <= E0f8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Tyug07 <= 1'b0; + else + Tyug07 <= Pae8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + X0vg07 <= 1'b0; + else + X0vg07 <= T5e8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + B3vg07 <= 1'b0; + else + B3vg07 <= Bwd8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + F5vg07 <= 1'b0; + else + F5vg07 <= Frd8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + J7vg07 <= 1'b0; + else + J7vg07 <= Jmd8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + N9vg07 <= 1'b0; + else + N9vg07 <= Dcd8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Rbvg07 <= 1'b0; + else + Rbvg07 <= H7d8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Vdvg07 <= 1'b0; + else + Vdvg07 <= L2d8v6; + +always @(posedge HCLK) Zfvg07 <= Z1e8v6; +always @(posedge HCLK) Aivg07 <= S1e8v6; +always @(posedge HCLK) Bkvg07 <= L1e8v6; +always @(posedge HCLK) Cmvg07 <= E1e8v6; +always @(posedge HCLK) Dovg07 <= X0e8v6; +always @(posedge HCLK) Eqvg07 <= Q0e8v6; +always @(posedge HCLK) Fsvg07 <= Qle8v6; +always @(posedge HCLK) Guvg07 <= Jle8v6; +always @(posedge HCLK) Hwvg07 <= Cle8v6; +always @(posedge HCLK) Iyvg07 <= Vke8v6; +always @(posedge HCLK) J0wg07 <= Oke8v6; +always @(posedge HCLK) K2wg07 <= Hke8v6; +always @(posedge HCLK) L4wg07 <= Ake8v6; +always @(posedge HCLK) M6wg07 <= Tje8v6; +always @(posedge HCLK) N8wg07 <= Bid8v6; +always @(posedge HCLK) Nawg07 <= Uhd8v6; +always @(posedge HCLK) Ocwg07 <= Nhd8v6; +always @(posedge HCLK) Pewg07 <= Ghd8v6; +always @(posedge HCLK) Qgwg07 <= Zgd8v6; +always @(posedge HCLK) Riwg07 <= Sgd8v6; +always @(posedge HCLK) Skwg07 <= Lgd8v6; +always @(posedge HCLK) Tmwg07 <= Eac8v6; +always @(posedge HCLK) Towg07 <= Lac8v6; +always @(posedge HCLK) Tqwg07 <= Sac8v6; +always @(posedge HCLK) Tswg07 <= Zac8v6; +always @(posedge HCLK) Tuwg07 <= Gbc8v6; +always @(posedge HCLK) Twwg07 <= Ubc8v6; +always @(posedge HCLK) Tywg07 <= Bcc8v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + T0xg07 <= 1'b1; + else + T0xg07 <= Djd8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + U2xg07 <= 1'b0; + else + U2xg07 <= H948v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + S5xg07 <= 1'b0; + else + S5xg07 <= A948v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Q8xg07 <= 1'b0; + else + Q8xg07 <= K5d8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Vaxg07 <= 1'b0; + else + Vaxg07 <= Gad8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Adxg07 <= 1'b0; + else + Adxg07 <= Cfd8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ffxg07 <= 1'b0; + else + Ffxg07 <= Ipd8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Khxg07 <= 1'b0; + else + Khxg07 <= Eud8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Pjxg07 <= 1'b0; + else + Pjxg07 <= Azd8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ulxg07 <= 1'b0; + else + Ulxg07 <= S8e8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Znxg07 <= 1'b0; + else + Znxg07 <= Ode8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Eqxg07 <= 1'b0; + else + Eqxg07 <= D3f8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Jsxg07 <= 1'b0; + else + Jsxg07 <= Z7f8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ouxg07 <= 1'b0; + else + Ouxg07 <= Eef8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Twxg07 <= 1'b0; + else + Twxg07 <= Igf8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Xyxg07 <= 1'b0; + else + Xyxg07 <= V5f8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + B1yg07 <= 1'b0; + else + B1yg07 <= Z0f8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + F3yg07 <= 1'b0; + else + F3yg07 <= Kbe8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + J5yg07 <= 1'b0; + else + J5yg07 <= O6e8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + N7yg07 <= 1'b0; + else + N7yg07 <= Wwd8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + R9yg07 <= 1'b0; + else + R9yg07 <= Asd8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Vbyg07 <= 1'b0; + else + Vbyg07 <= End8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Zdyg07 <= 1'b0; + else + Zdyg07 <= Ycd8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Dgyg07 <= 1'b0; + else + Dgyg07 <= C8d8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Hiyg07 <= 1'b0; + else + Hiyg07 <= G3d8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Lkyg07 <= 1'b0; + else + Lkyg07 <= Yh88v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Nmyg07 <= 1'b0; + else + Nmyg07 <= Wxc8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Poyg07 <= 1'b0; + else + Poyg07 <= Mzc8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Rqyg07 <= 1'b0; + else + Rqyg07 <= H0d8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Tsyg07 <= 1'b0; + else + Tsyg07 <= Q1d8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Vuyg07 <= 1'b0; + else + Vuyg07 <= M6d8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Xwyg07 <= 1'b0; + else + Xwyg07 <= Ibd8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Zyyg07 <= 1'b0; + else + Zyyg07 <= Wid8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + B1zg07 <= 1'b0; + else + B1zg07 <= Rjd8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + E3zg07 <= 1'b0; + else + E3zg07 <= Mkd8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + H5zg07 <= 1'b0; + else + H5zg07 <= Ald8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + K7zg07 <= 1'b0; + else + K7zg07 <= Old8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + N9zg07 <= 1'b0; + else + N9zg07 <= Kqd8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Qbzg07 <= 1'b0; + else + Qbzg07 <= Gvd8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Tdzg07 <= 1'b0; + else + Tdzg07 <= U2e8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Wfzg07 <= 1'b0; + else + Wfzg07 <= I3e8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Zhzg07 <= 1'b0; + else + Zhzg07 <= W3e8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ckzg07 <= 1'b0; + else + Ckzg07 <= K4e8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Fmzg07 <= 1'b0; + else + Fmzg07 <= Y4e8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Iozg07 <= 1'b0; + else + Iozg07 <= U9e8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Lqzg07 <= 1'b0; + else + Lqzg07 <= Mje8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Oszg07 <= 1'b0; + else + Oszg07 <= Fxe8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ruzg07 <= 1'b0; + else + Ruzg07 <= Txe8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Uwzg07 <= 1'b0; + else + Uwzg07 <= Hye8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Xyzg07 <= 1'b0; + else + Xyzg07 <= Vye8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + A10h07 <= 1'b0; + else + A10h07 <= Jze8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + D30h07 <= 1'b0; + else + D30h07 <= F4f8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + G50h07 <= 1'b0; + else + G50h07 <= Cdf8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + J70h07 <= 1'b0; + else + J70h07 <= Kzx7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + L90h07 <= 1'b0; + else + L90h07 <= Yzx7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Nb0h07 <= 1'b0; + else + Nb0h07 <= H1y7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Pd0h07 <= 1'b0; + else + Pd0h07 <= C2y7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Rf0h07 <= 1'b0; + else + Rf0h07 <= J2y7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Th0h07 <= 1'b0; + else + Th0h07 <= Q2y7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Vj0h07 <= 1'b0; + else + Vj0h07 <= X2y7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Xl0h07 <= 1'b0; + else + Xl0h07 <= S3y7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Zn0h07 <= 1'b0; + else + Zn0h07 <= G4y7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Bq0h07 <= 1'b0; + else + Bq0h07 <= N4y7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ds0h07 <= 1'b0; + else + Ds0h07 <= U4y7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Fu0h07 <= 1'b0; + else + Fu0h07 <= P5y7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Hw0h07 <= 1'b0; + else + Hw0h07 <= W5y7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Iy0h07 <= 1'b0; + else + Iy0h07 <= D6y7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + J01h07 <= 1'b0; + else + J01h07 <= K6y7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + K21h07 <= 1'b0; + else + K21h07 <= R6y7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + L41h07 <= 1'b0; + else + L41h07 <= Y6y7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + M61h07 <= 1'b0; + else + M61h07 <= M7y7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + N81h07 <= 1'b0; + else + N81h07 <= T7y7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Oa1h07 <= 1'b0; + else + Oa1h07 <= Daf8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Hd1h07 <= 1'b0; + else + Hd1h07 <= Yaf8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ag1h07 <= 1'b0; + else + Ag1h07 <= Mbf8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ni1h07 <= 1'b0; + else + Ni1h07 <= X8k8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ml1h07 <= 1'b0; + else + Ml1h07 <= Tbf8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Lo1h07 <= 1'b0; + else + Lo1h07 <= Fbf8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Zq1h07 <= 1'b0; + else + Zq1h07 <= Raf8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + St1h07 <= 1'b0; + else + St1h07 <= Kaf8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Lw1h07 <= 1'b0; + else + Lw1h07 <= W9f8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Kz1h07 <= 1'b0; + else + Kz1h07 <= P9f8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + J22h07 <= 1'b0; + else + J22h07 <= Zvc8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + F52h07 <= 1'b0; + else + F52h07 <= Dyc8v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + C82h07 <= 1'b0; + else + C82h07 <= Xd88v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + R92h07 <= 1'b0; + else + R92h07 <= Wq58v6; + +always @(posedge HCLK) Fb2h07 <= Kr58v6; +always @(posedge HCLK) Xc2h07 <= Cu58v6; +always @(posedge HCLK) Ne2h07 <= Xu58v6; +always @(posedge HCLK) Dg2h07 <= Gw58v6; +always @(posedge HCLK) Th2h07 <= Nw58v6; +always @(posedge HCLK) Ij2h07 <= Uw58v6; +always @(posedge HCLK) Xk2h07 <= Px58v6; +always @(posedge HCLK) Mm2h07 <= Wx58v6; +always @(posedge HCLK) Bo2h07 <= Ry58v6; +always @(posedge HCLK) Qp2h07 <= Bx58v6; +always @(posedge HCLK) Fr2h07 <= Zv58v6; +always @(posedge HCLK) Vs2h07 <= Sv58v6; +always @(posedge HCLK) Lu2h07 <= Lv58v6; +always @(posedge HCLK) Bw2h07 <= Vt58v6; +always @(posedge HCLK) Rx2h07 <= Ts58v6; +always @(posedge HCLK) Hz2h07 <= Ms58v6; +always @(posedge HCLK) X03h07 <= Fs58v6; +always @(posedge HCLK) N23h07 <= Yr58v6; +always @(posedge HCLK) D43h07 <= Rr58v6; +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + V53h07 <= 1'b0; + else + V53h07 <= A768v6; + +always @(posedge HCLK) J73h07 <= O768v6; +always @(posedge HCLK) B93h07 <= Ga68v6; +always @(posedge HCLK) Ra3h07 <= Bb68v6; +always @(posedge HCLK) Hc3h07 <= Kc68v6; +always @(posedge HCLK) Xd3h07 <= Rc68v6; +always @(posedge HCLK) Mf3h07 <= Yc68v6; +always @(posedge HCLK) Bh3h07 <= Td68v6; +always @(posedge HCLK) Qi3h07 <= Ae68v6; +always @(posedge HCLK) Fk3h07 <= Ve68v6; +always @(posedge HCLK) Ul3h07 <= Fd68v6; +always @(posedge HCLK) Jn3h07 <= Dc68v6; +always @(posedge HCLK) Zo3h07 <= Wb68v6; +always @(posedge HCLK) Pq3h07 <= Pb68v6; +always @(posedge HCLK) Fs3h07 <= Z968v6; +always @(posedge HCLK) Vt3h07 <= X868v6; +always @(posedge HCLK) Lv3h07 <= Q868v6; +always @(posedge HCLK) Bx3h07 <= J868v6; +always @(posedge HCLK) Ry3h07 <= C868v6; +always @(posedge HCLK) H04h07 <= V768v6; +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Z14h07 <= 1'b0; + else + Z14h07 <= Ol68v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + M34h07 <= 1'b0; + else + M34h07 <= Cv48v6; + +always @(posedge HCLK) A54h07 <= Ux48v6; +always @(posedge HCLK) Q64h07 <= Py48v6; +always @(posedge HCLK) G84h07 <= Yz48v6; +always @(posedge HCLK) W94h07 <= F058v6; +always @(posedge HCLK) Lb4h07 <= M058v6; +always @(posedge HCLK) Ad4h07 <= H158v6; +always @(posedge HCLK) Pe4h07 <= O158v6; +always @(posedge HCLK) Eg4h07 <= J258v6; +always @(posedge HCLK) Th4h07 <= T058v6; +always @(posedge HCLK) Ij4h07 <= Rz48v6; +always @(posedge HCLK) Yk4h07 <= Kz48v6; +always @(posedge HCLK) Om4h07 <= Dz48v6; +always @(posedge HCLK) Eo4h07 <= Nx48v6; +always @(posedge HCLK) Up4h07 <= Lw48v6; +always @(posedge HCLK) Kr4h07 <= Ew48v6; +always @(posedge HCLK) At4h07 <= Xv48v6; +always @(posedge HCLK) Qu4h07 <= Qv48v6; +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Gw4h07 <= 1'b0; + else + Gw4h07 <= On48v6; + +always @(posedge HCLK) Ux4h07 <= Gq48v6; +always @(posedge HCLK) Kz4h07 <= Br48v6; +always @(posedge HCLK) A15h07 <= Rs48v6; +always @(posedge HCLK) P25h07 <= Ys48v6; +always @(posedge HCLK) E45h07 <= Tt48v6; +always @(posedge HCLK) T55h07 <= Au48v6; +always @(posedge HCLK) I75h07 <= Vu48v6; +always @(posedge HCLK) X85h07 <= Ft48v6; +always @(posedge HCLK) Ma5h07 <= Ds48v6; +always @(posedge HCLK) Cc5h07 <= Wr48v6; +always @(posedge HCLK) Sd5h07 <= Pr48v6; +always @(posedge HCLK) If5h07 <= Xo48v6; +always @(posedge HCLK) Yg5h07 <= Qo48v6; +always @(posedge HCLK) Oi5h07 <= Jo48v6; +always @(posedge HCLK) Ek5h07 <= Co48v6; +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Ul5h07 <= 1'b0; + else + Ul5h07 <= Yy58v6; + +always @(posedge HCLK) In5h07 <= Mz58v6; +always @(posedge HCLK) Ap5h07 <= E268v6; +always @(posedge HCLK) Qq5h07 <= Z268v6; +always @(posedge HCLK) Gs5h07 <= I468v6; +always @(posedge HCLK) Wt5h07 <= P468v6; +always @(posedge HCLK) Lv5h07 <= W468v6; +always @(posedge HCLK) Ax5h07 <= R568v6; +always @(posedge HCLK) Py5h07 <= Y568v6; +always @(posedge HCLK) E06h07 <= T668v6; +always @(posedge HCLK) T16h07 <= D568v6; +always @(posedge HCLK) I36h07 <= B468v6; +always @(posedge HCLK) Y46h07 <= U368v6; +always @(posedge HCLK) O66h07 <= N368v6; +always @(posedge HCLK) E86h07 <= X168v6; +always @(posedge HCLK) U96h07 <= V068v6; +always @(posedge HCLK) Kb6h07 <= O068v6; +always @(posedge HCLK) Ad6h07 <= H068v6; +always @(posedge HCLK) Qe6h07 <= A068v6; +always @(posedge HCLK) Gg6h07 <= Tz58v6; +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Yh6h07 <= 1'b0; + else + Yh6h07 <= Sa58v6; + +always @(posedge HCLK) Mj6h07 <= Gb58v6; +always @(posedge HCLK) El6h07 <= Yd58v6; +always @(posedge HCLK) Um6h07 <= Te58v6; +always @(posedge HCLK) Ko6h07 <= Cg58v6; +always @(posedge HCLK) Aq6h07 <= Jg58v6; +always @(posedge HCLK) Pr6h07 <= Qg58v6; +always @(posedge HCLK) Et6h07 <= Lh58v6; +always @(posedge HCLK) Tu6h07 <= Sh58v6; +always @(posedge HCLK) Iw6h07 <= Ni58v6; +always @(posedge HCLK) Xx6h07 <= Xg58v6; +always @(posedge HCLK) Mz6h07 <= Vf58v6; +always @(posedge HCLK) C17h07 <= Of58v6; +always @(posedge HCLK) S27h07 <= Hf58v6; +always @(posedge HCLK) I47h07 <= Rd58v6; +always @(posedge HCLK) Y57h07 <= Pc58v6; +always @(posedge HCLK) O77h07 <= Ic58v6; +always @(posedge HCLK) E97h07 <= Bc58v6; +always @(posedge HCLK) Ua7h07 <= Ub58v6; +always @(posedge HCLK) Kc7h07 <= Nb58v6; +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Ce7h07 <= 1'b0; + else + Ce7h07 <= Q258v6; + +always @(posedge HCLK) Qf7h07 <= W558v6; +always @(posedge HCLK) Gh7h07 <= R658v6; +always @(posedge HCLK) Wi7h07 <= A858v6; +always @(posedge HCLK) Mk7h07 <= H858v6; +always @(posedge HCLK) Bm7h07 <= O858v6; +always @(posedge HCLK) Qn7h07 <= J958v6; +always @(posedge HCLK) Fp7h07 <= Q958v6; +always @(posedge HCLK) Uq7h07 <= La58v6; +always @(posedge HCLK) Js7h07 <= V858v6; +always @(posedge HCLK) Yt7h07 <= T758v6; +always @(posedge HCLK) Ov7h07 <= M758v6; +always @(posedge HCLK) Ex7h07 <= F758v6; +always @(posedge HCLK) Uy7h07 <= P558v6; +always @(posedge HCLK) K08h07 <= N458v6; +always @(posedge HCLK) A28h07 <= G458v6; +always @(posedge HCLK) Q38h07 <= Z358v6; +always @(posedge HCLK) G58h07 <= S358v6; +always @(posedge HCLK) W68h07 <= L358v6; +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + O88h07 <= 1'b0; + else + O88h07 <= Ui58v6; + +always @(posedge HCLK) Ca8h07 <= Ij58v6; +always @(posedge HCLK) Ub8h07 <= Am58v6; +always @(posedge HCLK) Kd8h07 <= Vm58v6; +always @(posedge HCLK) Af8h07 <= Eo58v6; +always @(posedge HCLK) Qg8h07 <= Lo58v6; +always @(posedge HCLK) Fi8h07 <= So58v6; +always @(posedge HCLK) Uj8h07 <= Np58v6; +always @(posedge HCLK) Jl8h07 <= Up58v6; +always @(posedge HCLK) Ym8h07 <= Pq58v6; +always @(posedge HCLK) No8h07 <= Zo58v6; +always @(posedge HCLK) Cq8h07 <= Xn58v6; +always @(posedge HCLK) Sr8h07 <= Qn58v6; +always @(posedge HCLK) It8h07 <= Jn58v6; +always @(posedge HCLK) Yu8h07 <= Tl58v6; +always @(posedge HCLK) Ow8h07 <= Rk58v6; +always @(posedge HCLK) Ey8h07 <= Kk58v6; +always @(posedge HCLK) Uz8h07 <= Dk58v6; +always @(posedge HCLK) K19h07 <= Wj58v6; +always @(posedge HCLK) A39h07 <= Pj58v6; +always @(posedge HCLK) S49h07 <= Nh68v6; +always @(posedge HCLK) J69h07 <= Ii68v6; +always @(posedge HCLK) A89h07 <= Rj68v6; +always @(posedge HCLK) Q99h07 <= Yj68v6; +always @(posedge HCLK) Gb9h07 <= Fk68v6; +always @(posedge HCLK) Wc9h07 <= Al68v6; +always @(posedge HCLK) Me9h07 <= Hl68v6; +always @(posedge HCLK) Cg9h07 <= Mk68v6; +always @(posedge HCLK) Sh9h07 <= Kj68v6; +always @(posedge HCLK) Ij9h07 <= Dj68v6; +always @(posedge HCLK) Yk9h07 <= Wi68v6; +always @(posedge HCLK) Pm9h07 <= Gh68v6; +always @(posedge HCLK) Go9h07 <= Eg68v6; +always @(posedge HCLK) Xp9h07 <= Xf68v6; +always @(posedge HCLK) Or9h07 <= Qf68v6; +always @(posedge HCLK) Ft9h07 <= Jf68v6; +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Wu9h07 <= 1'b0; + else + Wu9h07 <= Tb88v6; + +always @(posedge FCLK) Xw9h07 <= Yjl7v6; +always @(posedge FCLK) Zy9h07 <= Rjl7v6; +always @(posedge FCLK) B1ah07 <= Kjl7v6; +always @(posedge FCLK) D3ah07 <= Qjv7v6; +always @(posedge FCLK) J5ah07 <= Ekv7v6; +always @(posedge FCLK) P7ah07 <= Djl7v6; +always @(posedge FCLK) R9ah07 <= Wil7v6; +always @(posedge FCLK) Tbah07 <= Pil7v6; +always @(posedge FCLK) Vdah07 <= Mhv7v6; +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Bgah07 <= 1'b0; + else + Bgah07 <= Iil7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Hiah07 <= 1'b0; + else + Hiah07 <= Bil7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Jkah07 <= 1'b0; + else + Jkah07 <= Uhl7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Lmah07 <= 1'b0; + else + Lmah07 <= Nhl7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Noah07 <= 1'b0; + else + Noah07 <= Ghl7v6; + +always @(posedge FCLK) Oqah07 <= Zgl7v6; +always @(posedge FCLK) Msah07 <= Sgl7v6; +always @(posedge FCLK) Luah07 <= Lgl7v6; +always @(posedge FCLK) Kwah07 <= Egl7v6; +always @(posedge FCLK) Jyah07 <= Xfl7v6; +always @(posedge FCLK) I0bh07 <= Qfl7v6; +always @(posedge FCLK) H2bh07 <= Jfl7v6; +always @(posedge FCLK) G4bh07 <= Cfl7v6; +always @(posedge FCLK) F6bh07 <= Vel7v6; +always @(posedge FCLK) E8bh07 <= Oel7v6; +always @(posedge FCLK) Dabh07 <= Hel7v6; +always @(posedge FCLK) Ccbh07 <= Ael7v6; +always @(posedge FCLK) Bebh07 <= Tdl7v6; +always @(posedge FCLK) Agbh07 <= Mdl7v6; +always @(posedge FCLK) Zhbh07 <= Fdl7v6; +always @(posedge FCLK) Yjbh07 <= Ycl7v6; +always @(posedge FCLK) Xlbh07 <= Rcl7v6; +always @(posedge FCLK) Wnbh07 <= Kcl7v6; +always @(posedge FCLK) Vpbh07 <= Dcl7v6; +always @(posedge FCLK) Urbh07 <= Wbl7v6; +always @(posedge FCLK) Ttbh07 <= Pbl7v6; +always @(posedge FCLK) Svbh07 <= Ibl7v6; +always @(posedge FCLK) Rxbh07 <= Bbl7v6; +always @(posedge FCLK) Qzbh07 <= Ual7v6; +always @(posedge FCLK) O1ch07 <= Nal7v6; +always @(posedge FCLK) M3ch07 <= Gal7v6; +always @(posedge FCLK) K5ch07 <= Z9l7v6; +always @(posedge FCLK) I7ch07 <= S9l7v6; +always @(posedge FCLK) G9ch07 <= L9l7v6; +always @(posedge FCLK) Ebch07 <= E9l7v6; +always @(posedge FCLK) Cdch07 <= X8l7v6; +always @(posedge FCLK) Afch07 <= Q8l7v6; +always @(posedge FCLK) Chch07 <= J8l7v6; +always @(posedge FCLK) Fjch07 <= C8l7v6; +always @(posedge FCLK) Ilch07 <= V7l7v6; +always @(posedge FCLK) Lnch07 <= O7l7v6; +always @(posedge FCLK) Opch07 <= H7l7v6; +always @(posedge FCLK) Rrch07 <= A7l7v6; +always @(posedge FCLK) Utch07 <= T6l7v6; +always @(posedge FCLK) Xvch07 <= M6l7v6; +always @(posedge FCLK) Aych07 <= F6l7v6; +always @(posedge FCLK) D0dh07 <= Y5l7v6; +always @(posedge FCLK) G2dh07 <= R5l7v6; +always @(posedge FCLK) J4dh07 <= K5l7v6; +always @(posedge FCLK) M6dh07 <= D5l7v6; +always @(posedge FCLK) P8dh07 <= W4l7v6; +always @(posedge FCLK) Sadh07 <= P4l7v6; +always @(posedge FCLK) Vcdh07 <= I4l7v6; +always @(posedge FCLK) Yedh07 <= B4l7v6; +always @(posedge FCLK) Bhdh07 <= U3l7v6; +always @(posedge FCLK) Ejdh07 <= N3l7v6; +always @(posedge FCLK) Hldh07 <= G3l7v6; +always @(posedge FCLK) Kndh07 <= Z2l7v6; +always @(posedge FCLK) Npdh07 <= S2l7v6; +always @(posedge FCLK) Qrdh07 <= L2l7v6; +always @(posedge FCLK) Stdh07 <= E2l7v6; +always @(posedge FCLK) Uvdh07 <= X1l7v6; +always @(posedge FCLK) Wxdh07 <= Q1l7v6; +always @(posedge FCLK) Yzdh07 <= J1l7v6; +always @(posedge FCLK) A2eh07 <= C1l7v6; +always @(posedge FCLK) C4eh07 <= V0l7v6; +always @(posedge FCLK) E6eh07 <= O0l7v6; +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + G8eh07 <= 1'b0; + else + G8eh07 <= H0l7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Daeh07 <= 1'b0; + else + Daeh07 <= A0l7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Bceh07 <= 1'b0; + else + Bceh07 <= Tzk7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Zdeh07 <= 1'b0; + else + Zdeh07 <= Mzk7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Xfeh07 <= 1'b0; + else + Xfeh07 <= Fzk7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Vheh07 <= 1'b0; + else + Vheh07 <= Yyk7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Tjeh07 <= 1'b0; + else + Tjeh07 <= Ryk7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Rleh07 <= 1'b0; + else + Rleh07 <= Kyk7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Pneh07 <= 1'b0; + else + Pneh07 <= Dyk7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Npeh07 <= 1'b0; + else + Npeh07 <= Wxk7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Lreh07 <= 1'b0; + else + Lreh07 <= Pxk7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Jteh07 <= 1'b0; + else + Jteh07 <= Ixk7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Hveh07 <= 1'b0; + else + Hveh07 <= Bxk7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Fxeh07 <= 1'b0; + else + Fxeh07 <= Uwk7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Dzeh07 <= 1'b0; + else + Dzeh07 <= Nwk7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + A1fh07 <= 1'b0; + else + A1fh07 <= Gwk7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + X2fh07 <= 1'b0; + else + X2fh07 <= Zvk7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + U4fh07 <= 1'b0; + else + U4fh07 <= Svk7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + R6fh07 <= 1'b0; + else + R6fh07 <= Lvk7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + O8fh07 <= 1'b0; + else + O8fh07 <= Evk7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Lafh07 <= 1'b0; + else + Lafh07 <= Xuk7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Icfh07 <= 1'b0; + else + Icfh07 <= Quk7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Fefh07 <= 1'b0; + else + Fefh07 <= Juk7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Kgfh07 <= 1'b0; + else + Kgfh07 <= Cuk7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Qifh07 <= 1'b0; + else + Qifh07 <= Vtk7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Wkfh07 <= 1'b0; + else + Wkfh07 <= Otk7v6; + +always @(posedge FCLK) Cnfh07 <= Htk7v6; +always @(posedge FCLK) Apfh07 <= Atk7v6; +always @(posedge FCLK) Yqfh07 <= Tsk7v6; +always @(posedge FCLK) Wsfh07 <= Msk7v6; +always @(posedge FCLK) Yufh07 <= Fsk7v6; +always @(posedge FCLK) Axfh07 <= Yrk7v6; +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Czfh07 <= 1'b0; + else + Czfh07 <= Rrk7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + H1gh07 <= 1'b0; + else + H1gh07 <= Krk7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + N3gh07 <= 1'b0; + else + N3gh07 <= Drk7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + T5gh07 <= 1'b0; + else + T5gh07 <= Wqk7v6; + +always @(posedge FCLK) Z7gh07 <= Pqk7v6; +always @(posedge FCLK) Bagh07 <= Iqk7v6; +always @(posedge FCLK) Ecgh07 <= Bqk7v6; +always @(posedge FCLK) Hegh07 <= Upk7v6; +always @(posedge FCLK) Kggh07 <= Npk7v6; +always @(posedge FCLK) Nigh07 <= Gpk7v6; +always @(posedge FCLK) Qkgh07 <= Zok7v6; +always @(posedge FCLK) Tmgh07 <= Sok7v6; +always @(posedge FCLK) Wogh07 <= Lok7v6; +always @(posedge FCLK) Zqgh07 <= Eok7v6; +always @(posedge FCLK) Ctgh07 <= Xnk7v6; +always @(posedge FCLK) Fvgh07 <= Qnk7v6; +always @(posedge FCLK) Ixgh07 <= Jnk7v6; +always @(posedge FCLK) Lzgh07 <= Cnk7v6; +always @(posedge FCLK) O1hh07 <= Vmk7v6; +always @(posedge FCLK) R3hh07 <= Omk7v6; +always @(posedge FCLK) U5hh07 <= Hmk7v6; +always @(posedge FCLK) X7hh07 <= Amk7v6; +always @(posedge FCLK) Aahh07 <= Tlk7v6; +always @(posedge FCLK) Dchh07 <= Mlk7v6; +always @(posedge FCLK) Gehh07 <= Flk7v6; +always @(posedge FCLK) Jghh07 <= Ykk7v6; +always @(posedge FCLK) Mihh07 <= Rkk7v6; +always @(posedge FCLK) Pkhh07 <= Kkk7v6; +always @(posedge FCLK) Rmhh07 <= Dkk7v6; +always @(posedge FCLK) Tohh07 <= Wjk7v6; +always @(posedge FCLK) Vqhh07 <= Pjk7v6; +always @(posedge FCLK) Xshh07 <= Ijk7v6; +always @(posedge FCLK) Zuhh07 <= Bjk7v6; +always @(posedge FCLK) Bxhh07 <= Uik7v6; +always @(posedge FCLK) Dzhh07 <= Nik7v6; +always @(posedge FCLK) F1ih07 <= Gik7v6; +always @(posedge FCLK) H3ih07 <= Zhk7v6; +always @(posedge FCLK) J5ih07 <= Shk7v6; +always @(posedge FCLK) L7ih07 <= Lhk7v6; +always @(posedge FCLK) N9ih07 <= Ehk7v6; +always @(posedge FCLK) Pbih07 <= Xgk7v6; +always @(posedge FCLK) Rdih07 <= Qgk7v6; +always @(posedge FCLK) Tfih07 <= Jgk7v6; +always @(posedge FCLK) Vhih07 <= Cgk7v6; +always @(posedge FCLK) Yjih07 <= Vfk7v6; +always @(posedge FCLK) Bmih07 <= Ofk7v6; +always @(posedge FCLK) Eoih07 <= Hfk7v6; +always @(posedge FCLK) Hqih07 <= Afk7v6; +always @(posedge FCLK) Ksih07 <= Tek7v6; +always @(posedge FCLK) Nuih07 <= Mek7v6; +always @(posedge FCLK) Qwih07 <= Fek7v6; +always @(posedge FCLK) Tyih07 <= Ydk7v6; +always @(posedge FCLK) W0jh07 <= Rdk7v6; +always @(posedge FCLK) Z2jh07 <= Kdk7v6; +always @(posedge FCLK) C5jh07 <= Ddk7v6; +always @(posedge FCLK) F7jh07 <= Wck7v6; +always @(posedge FCLK) I9jh07 <= Pck7v6; +always @(posedge FCLK) Lbjh07 <= Ick7v6; +always @(posedge FCLK) Odjh07 <= Bck7v6; +always @(posedge FCLK) Rfjh07 <= Ubk7v6; +always @(posedge FCLK) Uhjh07 <= Nbk7v6; +always @(posedge FCLK) Xjjh07 <= Gbk7v6; +always @(posedge FCLK) Amjh07 <= Zak7v6; +always @(posedge FCLK) Dojh07 <= Sak7v6; +always @(posedge FCLK) Gqjh07 <= Lak7v6; +always @(posedge FCLK) Jsjh07 <= Eak7v6; +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Lujh07 <= 1'b0; + else + Lujh07 <= X9k7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Qwjh07 <= 1'b0; + else + Qwjh07 <= Q9k7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Wyjh07 <= 1'b0; + else + Wyjh07 <= J9k7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + C1kh07 <= 1'b0; + else + C1kh07 <= C9k7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + I3kh07 <= 1'b0; + else + I3kh07 <= V8k7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Q5kh07 <= 1'b0; + else + Q5kh07 <= O8k7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + C8kh07 <= 1'b0; + else + C8kh07 <= H8k7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Oakh07 <= 1'b0; + else + Oakh07 <= A8k7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Adkh07 <= 1'b0; + else + Adkh07 <= T7k7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Mfkh07 <= 1'b0; + else + Mfkh07 <= M7k7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Uhkh07 <= 1'b0; + else + Uhkh07 <= F7k7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Ckkh07 <= 1'b0; + else + Ckkh07 <= Zt78v6; + +always @(posedge HCLK) Ylkh07 <= Y6k7v6; +always @(posedge HCLK) Nnkh07 <= R6k7v6; +always @(posedge HCLK) Fqkh07 <= K6k7v6; +always @(posedge HCLK) Xskh07 <= D6k7v6; +always @(posedge HCLK) Pvkh07 <= W5k7v6; +always @(posedge HCLK) Hykh07 <= P5k7v6; +always @(posedge HCLK) Z0lh07 <= I5k7v6; +always @(posedge HCLK) R3lh07 <= B5k7v6; +always @(posedge HCLK) J6lh07 <= U4k7v6; +always @(posedge HCLK) B9lh07 <= N4k7v6; +always @(posedge HCLK) Tblh07 <= G4k7v6; +always @(posedge HCLK) Kelh07 <= Z3k7v6; +always @(posedge HCLK) Bhlh07 <= S3k7v6; +always @(posedge HCLK) Sjlh07 <= L3k7v6; +always @(posedge HCLK) Jmlh07 <= E3k7v6; +always @(posedge HCLK) Aplh07 <= X2k7v6; +always @(posedge HCLK) Rrlh07 <= Q2k7v6; +always @(posedge HCLK) Iulh07 <= J2k7v6; +always @(posedge HCLK) Zwlh07 <= C2k7v6; +always @(posedge HCLK) Qzlh07 <= V1k7v6; +always @(posedge HCLK) Z1mh07 <= O1k7v6; +always @(posedge HCLK) I4mh07 <= H1k7v6; +always @(posedge HCLK) Q6mh07 <= A1k7v6; +always @(posedge HCLK) Y8mh07 <= T0k7v6; +always @(posedge HCLK) Gbmh07 <= M0k7v6; +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Pdmh07 <= 1'b0; + else + Pdmh07 <= F0k7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Yfmh07 <= 1'b0; + else + Yfmh07 <= E8l8v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Rhmh07 <= 1'b0; + else + Rhmh07 <= Yzj7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Wjmh07 <= 1'b0; + else + Wjmh07 <= Rzj7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Bmmh07 <= 1'b0; + else + Bmmh07 <= Kzj7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Gomh07 <= 1'b0; + else + Gomh07 <= Dzj7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Lqmh07 <= 1'b0; + else + Lqmh07 <= Wyj7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Qsmh07 <= 1'b0; + else + Qsmh07 <= Pyj7v6; + +always @(posedge HCLK) Vumh07 <= Iyj7v6; +always @(posedge HCLK) Dxmh07 <= Byj7v6; +always @(posedge HCLK) Lzmh07 <= Uxj7v6; +always @(posedge HCLK) T1nh07 <= Nxj7v6; +always @(posedge HCLK) B4nh07 <= Gxj7v6; +always @(posedge HCLK) J6nh07 <= Zwj7v6; +always @(posedge HCLK) R8nh07 <= Swj7v6; +always @(posedge HCLK) Zanh07 <= Lwj7v6; +always @(posedge HCLK) Idnh07 <= Ewj7v6; +always @(posedge HCLK) Rfnh07 <= Xvj7v6; +always @(posedge HCLK) Ainh07 <= Qvj7v6; +always @(posedge HCLK) Jknh07 <= Jvj7v6; +always @(posedge HCLK) Smnh07 <= Cvj7v6; +always @(posedge HCLK) Bpnh07 <= Vuj7v6; +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Jrnh07 <= 1'b1; + else + Jrnh07 <= Ouj7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Etnh07 <= 1'b0; + else + Etnh07 <= Huj7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Zunh07 <= 1'b0; + else + Zunh07 <= Auj7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Uwnh07 <= 1'b0; + else + Uwnh07 <= Ttj7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Pynh07 <= 1'b0; + else + Pynh07 <= Mtj7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + K0oh07 <= 1'b0; + else + K0oh07 <= Ftj7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + F2oh07 <= 1'b0; + else + F2oh07 <= Ysj7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + U3oh07 <= 1'b0; + else + U3oh07 <= Vr78v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + P5oh07 <= 1'b1; + else + P5oh07 <= Rsj7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + G7oh07 <= 1'b0; + else + G7oh07 <= C477v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + B9oh07 <= 1'b0; + else + B9oh07 <= Vxu7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Kboh07 <= 1'b1; + else + Kboh07 <= Osk8v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Idoh07 <= 1'b1; + else + Idoh07 <= Suk8v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Gfoh07 <= 1'b1; + else + Gfoh07 <= Vsk8v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Ehoh07 <= 1'b1; + else + Ehoh07 <= Ctk8v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Cjoh07 <= 1'b1; + else + Cjoh07 <= Jtk8v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Aloh07 <= 1'b1; + else + Aloh07 <= Qtk8v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Ymoh07 <= 1'b1; + else + Ymoh07 <= Xtk8v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Wooh07 <= 1'b1; + else + Wooh07 <= Euk8v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Uqoh07 <= 1'b1; + else + Uqoh07 <= Luk8v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Ssoh07 <= 1'b0; + else + Ssoh07 <= Yjd8v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Ruoh07 <= 1'b0; + else + Ruoh07 <= Sa77v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Pwoh07 <= 1'b0; + else + Pwoh07 <= Ru77v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Wyoh07 <= 1'b0; + else + Wyoh07 <= Ksj7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + W0ph07 <= 1'b0; + else + W0ph07 <= Dsj7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + U2ph07 <= 1'b1; + else + U2ph07 <= Wrj7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + R4ph07 <= 1'b0; + else + R4ph07 <= Qyu7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + T6ph07 <= 1'b0; + else + T6ph07 <= Xyu7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + W8ph07 <= 1'b0; + else + W8ph07 <= F848v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Bbph07 <= 1'b0; + else + Bbph07 <= M848v6; + +always @(posedge FCLK) Gdph07 <= Prj7v6; +always @(posedge FCLK) Qfph07 <= Y748v6; +always @(posedge FCLK) Aiph07 <= R748v6; +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Kkph07 <= 1'b0; + else + Kkph07 <= S3adt6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Emph07 <= 1'b0; + else + Emph07 <= T848v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Joph07 <= 1'b0; + else + Joph07 <= Kwl8v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Hqph07 <= 1'b0; + else + Hqph07 <= Tfx7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Lsph07 <= 1'b0; + else + Lsph07 <= Lua7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Vuph07 <= 1'b0; + else + Vuph07 <= Gsa7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Ixph07 <= 1'b0; + else + Ixph07 <= Pma7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Pzph07 <= 1'b0; + else + Pzph07 <= J2b7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + R1qh07 <= 1'b0; + else + R1qh07 <= Y5a7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Z3qh07 <= 1'b0; + else + Z3qh07 <= Mqa7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + F6qh07 <= 1'b0; + else + F6qh07 <= Dwl8v6; + +always @(posedge FCLK) D8qh07 <= Irj7v6; +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Oaqh07 <= 1'b0; + else + Oaqh07 <= Rex7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Scqh07 <= 1'b0; + else + Scqh07 <= Zxymz6[8]; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Zeqh07 <= 1'b0; + else + Zeqh07 <= Ezu7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Dhqh07 <= 1'b1; + else + Dhqh07 <= Wy67v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Ejqh07 <= 1'b0; + else + Ejqh07 <= Jyu7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Zkqh07 <= 1'b0; + else + Zkqh07 <= Drymz6[1]; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Fnqh07 <= 1'b0; + else + Fnqh07 <= Frc7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Woqh07 <= 1'b0; + else + Woqh07 <= Cyu7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Uqqh07 <= 1'b0; + else + Uqqh07 <= Br77v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Vsqh07 <= 1'b0; + else + Vsqh07 <= Brj7v6; + +always @(posedge HCLK) Nuqh07 <= Uqj7v6; +always @(posedge HCLK) Lwqh07 <= Nqj7v6; +always @(posedge HCLK) Kyqh07 <= Gqj7v6; +always @(posedge HCLK) J0rh07 <= Zpj7v6; +always @(posedge HCLK) I2rh07 <= Spj7v6; +always @(posedge HCLK) H4rh07 <= Lpj7v6; +always @(posedge HCLK) G6rh07 <= Epj7v6; +always @(posedge HCLK) F8rh07 <= Xoj7v6; +always @(posedge HCLK) Earh07 <= Qoj7v6; +always @(posedge HCLK) Dcrh07 <= Joj7v6; +always @(posedge HCLK) Cerh07 <= Coj7v6; +always @(posedge HCLK) Bgrh07 <= Vnj7v6; +always @(posedge HCLK) Airh07 <= Onj7v6; +always @(posedge HCLK) Zjrh07 <= Hnj7v6; +always @(posedge HCLK) Ylrh07 <= Anj7v6; +always @(posedge HCLK) Xnrh07 <= Tmj7v6; +always @(posedge HCLK) Wprh07 <= Mmj7v6; +always @(posedge HCLK) Vrrh07 <= Fmj7v6; +always @(posedge HCLK) Gxps07 <= Ylj7v6; +always @(posedge HCLK) Fzps07 <= Rlj7v6; +always @(posedge HCLK) E1qs07 <= Klj7v6; +always @(posedge HCLK) D3qs07 <= Dlj7v6; +always @(posedge HCLK) C5qs07 <= Wkj7v6; +always @(posedge HCLK) B7qs07 <= Pkj7v6; +always @(posedge HCLK) A9qs07 <= Ikj7v6; +always @(posedge HCLK) Zaqs07 <= Bkj7v6; +always @(posedge HCLK) Ycqs07 <= Ujj7v6; +always @(posedge HCLK) Xeqs07 <= Njj7v6; +always @(posedge HCLK) Wgqs07 <= Gjj7v6; +always @(posedge HCLK) Viqs07 <= Zij7v6; +always @(posedge HCLK) Ukqs07 <= Sij7v6; +always @(posedge HCLK) Tmqs07 <= Lij7v6; +always @(posedge HCLK) Soqs07 <= Eij7v6; +always @(posedge HCLK) Rqqs07 <= Xhj7v6; +always @(posedge HCLK) Qsqs07 <= Qhj7v6; +always @(posedge HCLK) Puqs07 <= Jhj7v6; +always @(posedge HCLK) Owqs07 <= Chj7v6; +always @(posedge HCLK) Nyqs07 <= Vgj7v6; +always @(posedge HCLK) M0rs07 <= Ogj7v6; +always @(posedge HCLK) L2rs07 <= Hgj7v6; +always @(posedge HCLK) K4rs07 <= Agj7v6; +always @(posedge HCLK) I6rs07 <= Tfj7v6; +always @(posedge HCLK) G8rs07 <= Mfj7v6; +always @(posedge HCLK) Ears07 <= Ffj7v6; +always @(posedge HCLK) Ccrs07 <= Yej7v6; +always @(posedge HCLK) Aers07 <= Rej7v6; +always @(posedge HCLK) Yfrs07 <= Kej7v6; +always @(posedge HCLK) Whrs07 <= Dej7v6; +always @(posedge HCLK) Ujrs07 <= Wdj7v6; +always @(posedge HCLK) Dmrs07 <= Pdj7v6; +always @(posedge HCLK) Mors07 <= Idj7v6; +always @(posedge HCLK) Vqrs07 <= Bdj7v6; +always @(posedge HCLK) Etrs07 <= Ucj7v6; +always @(posedge HCLK) Nvrs07 <= Ncj7v6; +always @(posedge HCLK) Wxrs07 <= Gcj7v6; +always @(posedge HCLK) F0ss07 <= Zbj7v6; +always @(posedge HCLK) O2ss07 <= Sbj7v6; +always @(posedge HCLK) X4ss07 <= Lbj7v6; +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + L7ss07 <= 1'b0; + else + L7ss07 <= Twu7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + G9ss07 <= 1'b0; + else + G9ss07 <= Hxu7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Bbss07 <= 1'b0; + else + Bbss07 <= Oxu7v6; + +always @(posedge HCLK) Wcss07 <= Ebj7v6; +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Tess07 <= 1'b0; + else + Tess07 <= Ce78v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Ngss07 <= 1'b0; + else + Ngss07 <= Qe78v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Hiss07 <= 1'b0; + else + Hiss07 <= Xe78v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Bkss07 <= 1'b0; + else + Bkss07 <= Sf78v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Cmss07 <= 1'b1; + else + Cmss07 <= Hk78v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Aoss07 <= 1'b0; + else + Aoss07 <= Ak78v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Ypss07 <= 1'b0; + else + Ypss07 <= Ok78v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Vrss07 <= 1'b0; + else + Vrss07 <= Cl78v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Stss07 <= 1'b0; + else + Stss07 <= Xl78v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Pvss07 <= 1'b0; + else + Pvss07 <= Em78v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Mxss07 <= 1'b0; + else + Mxss07 <= Zm78v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Kzss07 <= 1'b0; + else + Kzss07 <= Gn78v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + I1ts07 <= 1'b0; + else + I1ts07 <= Nn78v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + G3ts07 <= 1'b0; + else + G3ts07 <= Un78v6; + +always @(posedge TRACECLKIN or negedge T0adt6) + if(~T0adt6) + C5ts07 <= 1'b0; + else + C5ts07 <= Nyd7v6; + +always @(posedge TRACECLKIN or negedge T0adt6) + if(~T0adt6) + P7ts07 <= 1'b0; + else + P7ts07 <= N6h7v6; + +always @(posedge TRACECLKIN or negedge T0adt6) + if(~T0adt6) + Cats07 <= 1'b0; + else + Cats07 <= M7e7v6; + +always @(posedge TRACECLKIN or negedge T0adt6) + if(~T0adt6) + Fcts07 <= 1'b0; + else + Fcts07 <= Fj78v6; + +always @(posedge TRACECLKIN or negedge T0adt6) + if(~T0adt6) + Dets07 <= 1'b0; + else + Dets07 <= Yi78v6; + +always @(posedge TRACECLKIN or negedge T0adt6) + if(~T0adt6) + Bgts07 <= 1'b0; + else + Bgts07 <= Ri78v6; + +always @(posedge TRACECLKIN or negedge T0adt6) + if(~T0adt6) + Zhts07 <= 1'b0; + else + Zhts07 <= Ki78v6; + +always @(posedge TRACECLKIN or negedge T0adt6) + if(~T0adt6) + Xjts07 <= 1'b0; + else + Xjts07 <= Di78v6; + +always @(posedge TRACECLKIN or negedge T0adt6) + if(~T0adt6) + Vlts07 <= 1'b0; + else + Vlts07 <= Wh78v6; + +always @(posedge TRACECLKIN or negedge T0adt6) + if(~T0adt6) + Tnts07 <= 1'b0; + else + Tnts07 <= Ph78v6; + +always @(posedge TRACECLKIN or negedge T0adt6) + if(~T0adt6) + Rpts07 <= 1'b0; + else + Rpts07 <= Ih78v6; + +always @(posedge TRACECLKIN or negedge T0adt6) + if(~T0adt6) + Prts07 <= 1'b0; + else + Prts07 <= Bh78v6; + +always @(posedge TRACECLKIN or negedge T0adt6) + if(~T0adt6) + Ntts07 <= 1'b0; + else + Ntts07 <= Ug78v6; + +always @(posedge TRACECLKIN or negedge T0adt6) + if(~T0adt6) + Mvts07 <= 1'b0; + else + Mvts07 <= Ng78v6; + +always @(posedge TRACECLKIN or negedge T0adt6) + if(~T0adt6) + Lxts07 <= 1'b0; + else + Lxts07 <= Gg78v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Kzts07 <= 1'b0; + else + Kzts07 <= Bo78v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + H1us07 <= 1'b0; + else + H1us07 <= Sm78v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + E3us07 <= 1'b1; + else + E3us07 <= Zf78v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + D5us07 <= 1'b0; + else + D5us07 <= Io78v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + F7us07 <= 1'b0; + else + F7us07 <= Po78v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + C9us07 <= 1'b1; + else + C9us07 <= Wo78v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Ebus07 <= 1'b0; + else + Ebus07 <= Lf78v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Fdus07 <= 1'b0; + else + Fdus07 <= Ef78v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Gfus07 <= 1'b0; + else + Gfus07 <= Qur7v6; + +always @(posedge TRACECLKIN or negedge T0adt6) + if(~T0adt6) + Thus07 <= 1'b0; + else + Thus07 <= Ja1nz6[0]; + +always @(posedge TRACECLKIN or negedge T0adt6) + if(~T0adt6) + Mkus07 <= 1'b0; + else + Mkus07 <= Brg7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Fnus07 <= 1'b0; + else + Fnus07 <= Xaj7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Lous07 <= 1'b1; + else + Lous07 <= Ysx7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Bqus07 <= 1'b1; + else + Bqus07 <= Qaj7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Prus07 <= 1'b0; + else + Prus07 <= Jaj7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Ntus07 <= 1'b0; + else + Ntus07 <= Caj7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Mvus07 <= 1'b0; + else + Mvus07 <= Amr7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Kxus07 <= 1'b0; + else + Kxus07 <= Dbl8v6; + +always @(posedge TRACECLKIN or negedge T0adt6) + if(~T0adt6) + Xzus07 <= 1'b0; + else + Xzus07 <= U81nz6[0]; + +always @(posedge TRACECLKIN or negedge T0adt6) + if(~T0adt6) + Q2vs07 <= 1'b0; + else + Q2vs07 <= Uyg7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + J5vs07 <= 1'b0; + else + J5vs07 <= Ahp7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + H7vs07 <= 1'b0; + else + H7vs07 <= Cip7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + F9vs07 <= 1'b0; + else + F9vs07 <= Ejp7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Dbvs07 <= 1'b0; + else + Dbvs07 <= Gkp7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Bdvs07 <= 1'b0; + else + Bdvs07 <= Ilp7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Zevs07 <= 1'b0; + else + Zevs07 <= Pal8v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Xgvs07 <= 1'b0; + else + Xgvs07 <= Hhp7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Vivs07 <= 1'b0; + else + Vivs07 <= Jip7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Tkvs07 <= 1'b0; + else + Tkvs07 <= Ljp7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Rmvs07 <= 1'b0; + else + Rmvs07 <= Nkp7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Povs07 <= 1'b0; + else + Povs07 <= Plp7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Nqvs07 <= 1'b0; + else + Nqvs07 <= Bal8v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Lsvs07 <= 1'b0; + else + Lsvs07 <= N9l8v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Juvs07 <= 1'b0; + else + Juvs07 <= U9l8v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Hwvs07 <= 1'b0; + else + Hwvs07 <= Vd78v6; + +always @(posedge TRACECLKIN or negedge T0adt6) + if(~T0adt6) + Uyvs07 <= 1'b0; + else + Uyvs07 <= U81nz6[2]; + +always @(posedge TRACECLKIN or negedge T0adt6) + if(~T0adt6) + N1ws07 <= 1'b0; + else + N1ws07 <= Y3h7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + G4ws07 <= 1'b0; + else + G4ws07 <= V9j7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + X5ws07 <= 1'b0; + else + X5ws07 <= O9j7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + O7ws07 <= 1'b0; + else + O7ws07 <= H9j7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + F9ws07 <= 1'b0; + else + F9ws07 <= A9j7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Waws07 <= 1'b0; + else + Waws07 <= T8j7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Ncws07 <= 1'b0; + else + Ncws07 <= M8j7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Eews07 <= 1'b0; + else + Eews07 <= F8j7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Wfws07 <= 1'b0; + else + Wfws07 <= Y7j7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Yhws07 <= 1'b0; + else + Yhws07 <= R7j7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Qjws07 <= 1'b0; + else + Qjws07 <= K7j7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Ilws07 <= 1'b0; + else + Ilws07 <= D7j7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Lnws07 <= 1'b0; + else + Lnws07 <= W6j7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Hpws07 <= 1'b0; + else + Hpws07 <= P6j7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Drws07 <= 1'b0; + else + Drws07 <= I6j7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Atws07 <= 1'b0; + else + Atws07 <= B6j7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Xuws07 <= 1'b0; + else + Xuws07 <= U5j7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Uwws07 <= 1'b0; + else + Uwws07 <= N5j7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Tyws07 <= 1'b0; + else + Tyws07 <= G5j7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + S0xs07 <= 1'b0; + else + S0xs07 <= Z4j7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + R2xs07 <= 1'b0; + else + R2xs07 <= S4j7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Q4xs07 <= 1'b0; + else + Q4xs07 <= L4j7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + P6xs07 <= 1'b0; + else + P6xs07 <= E4j7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + O8xs07 <= 1'b0; + else + O8xs07 <= X3j7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Naxs07 <= 1'b0; + else + Naxs07 <= Q3j7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Mcxs07 <= 1'b0; + else + Mcxs07 <= J3j7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Lexs07 <= 1'b0; + else + Lexs07 <= C3j7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Kgxs07 <= 1'b0; + else + Kgxs07 <= V2j7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Jixs07 <= 1'b0; + else + Jixs07 <= O2j7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Ikxs07 <= 1'b0; + else + Ikxs07 <= H2j7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Hmxs07 <= 1'b0; + else + Hmxs07 <= A2j7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Goxs07 <= 1'b0; + else + Goxs07 <= T1j7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Fqxs07 <= 1'b0; + else + Fqxs07 <= M1j7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Esxs07 <= 1'b0; + else + Esxs07 <= F1j7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Duxs07 <= 1'b0; + else + Duxs07 <= Y0j7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Cwxs07 <= 1'b0; + else + Cwxs07 <= R0j7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Byxs07 <= 1'b0; + else + Byxs07 <= K0j7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + A0ys07 <= 1'b0; + else + A0ys07 <= D0j7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Z1ys07 <= 1'b0; + else + Z1ys07 <= Wzi7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Y3ys07 <= 1'b0; + else + Y3ys07 <= P4k8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + V6ys07 <= 1'b0; + else + V6ys07 <= Rcs7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Y9ys07 <= 1'b0; + else + Y9ys07 <= Kcs7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Bdys07 <= 1'b0; + else + Bdys07 <= Pbs7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Egys07 <= 1'b0; + else + Egys07 <= Z9s7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ijys07 <= 1'b0; + else + Ijys07 <= L9s7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Mmys07 <= 1'b0; + else + Mmys07 <= E9s7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Qpys07 <= 1'b0; + else + Qpys07 <= X8s7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Usys07 <= 1'b0; + else + Usys07 <= V7s7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Yvys07 <= 1'b0; + else + Yvys07 <= T6s7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Czys07 <= 1'b0; + else + Czys07 <= M6s7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + G2zs07 <= 1'b0; + else + G2zs07 <= T7j8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + D5zs07 <= 1'b0; + else + D5zs07 <= Nok8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + M7zs07 <= 1'b0; + else + M7zs07 <= Svy7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + W9zs07 <= 1'b0; + else + W9zs07 <= Gwy7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Gczs07 <= 1'b0; + else + Gczs07 <= Dyy7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Qezs07 <= 1'b0; + else + Qezs07 <= Ryy7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ahzs07 <= 1'b0; + else + Ahzs07 <= Tzy7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Kjzs07 <= 1'b0; + else + Kjzs07 <= H0z7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ulzs07 <= 1'b0; + else + Ulzs07 <= X1z7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Eozs07 <= 1'b0; + else + Eozs07 <= L2z7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Oqzs07 <= 1'b0; + else + Oqzs07 <= N3z7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Yszs07 <= 1'b0; + else + Yszs07 <= B4z7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Hvzs07 <= 1'b0; + else + Hvzs07 <= P4z7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Rxzs07 <= 1'b0; + else + Rxzs07 <= D5z7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + B00t07 <= 1'b0; + else + B00t07 <= R5z7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + L20t07 <= 1'b0; + else + L20t07 <= I738v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + V40t07 <= 1'b0; + else + V40t07 <= P738v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + F70t07 <= 1'b0; + else + F70t07 <= Kck8v6; + +always @(posedge HCLK) O90t07 <= Ddy7v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Lc0t07 <= 1'b0; + else + Lc0t07 <= Fyk8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ve0t07 <= 1'b0; + else + Ve0t07 <= Aui8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Sh0t07 <= 1'b0; + else + Sh0t07 <= Agi8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Dk0t07 <= 1'b0; + else + Dk0t07 <= Nk38v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Gm0t07 <= 1'b0; + else + Gm0t07 <= Uk38v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Lo0t07 <= 1'b0; + else + Lo0t07 <= B3l8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Kr0t07 <= 1'b0; + else + Kr0t07 <= Uvs7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ju0t07 <= 1'b0; + else + Ju0t07 <= Bws7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ix0t07 <= 1'b0; + else + Ix0t07 <= Chi8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + L01t07 <= 1'b0; + else + L01t07 <= Y838v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + M31t07 <= 1'b0; + else + M31t07 <= Jhi8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + J61t07 <= 1'b0; + else + J61t07 <= Rei8v6; + +always @(posedge HCLK) G91t07 <= F1i8v6; +always @(posedge HCLK) Lb1t07 <= R0i8v6; +always @(posedge HCLK) Qd1t07 <= Cbp7v6; +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Tg1t07 <= 1'b0; + else + Tg1t07 <= Pzi7v6; + +always @(posedge FCLK) Qi1t07 <= Izi7v6; +always @(posedge FCLK) Sk1t07 <= Bzi7v6; +always @(posedge FCLK) Um1t07 <= Uyi7v6; +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Wo1t07 <= 1'b0; + else + Wo1t07 <= Nyi7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Cr1t07 <= 1'b0; + else + Cr1t07 <= Da88v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Jt1t07 <= 1'b0; + else + Jt1t07 <= Gyi7v6; + +always @(posedge FCLK) Pv1t07 <= Zxi7v6; +always @(posedge FCLK) Nx1t07 <= Sxi7v6; +always @(posedge FCLK) Lz1t07 <= Lxi7v6; +always @(posedge FCLK) N12t07 <= Exi7v6; +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + P32t07 <= 1'b0; + else + P32t07 <= Xwi7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + R52t07 <= 1'b0; + else + R52t07 <= Ohw7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Z72t07 <= 1'b0; + else + Z72t07 <= Kfw7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Ba2t07 <= 1'b0; + else + Ba2t07 <= Ahw7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Ac2t07 <= 1'b0; + else + Ac2t07 <= Qwi7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Ge2t07 <= 1'b0; + else + Ge2t07 <= Ra88v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Fg2t07 <= 1'b0; + else + Fg2t07 <= Ya88v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Li2t07 <= 1'b0; + else + Li2t07 <= Ka88v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Tk2t07 <= 1'b0; + else + Tk2t07 <= Dfw7v6; + +always @(posedge FCLK) Vm2t07 <= Jwi7v6; +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Xo2t07 <= 1'b0; + else + Xo2t07 <= W988v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Er2t07 <= 1'b0; + else + Er2t07 <= Cwi7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + It2t07 <= 1'b0; + else + It2t07 <= Vvi7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Pv2t07 <= 1'b0; + else + Pv2t07 <= Mzj8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ox2t07 <= 1'b0; + else + Ox2t07 <= Ovi7v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Qz2t07 <= 1'b0; + else + Qz2t07 <= Od78v6; + +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + J23t07 <= 1'b0; + else + J23t07 <= Hd78v6; + +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + K33t07 <= 1'b0; + else + K33t07 <= Hcget6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + J43t07 <= 1'b0; + else + J43t07 <= Hvi7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + K63t07 <= 1'b0; + else + K63t07 <= Avi7v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Q83t07 <= 1'b0; + else + Q83t07 <= Tui7v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Pa3t07 <= 1'b0; + else + Pa3t07 <= Mui7v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Pc3t07 <= 1'b0; + else + Pc3t07 <= Fui7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Qe3t07 <= 1'b0; + else + Qe3t07 <= Yti7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Ug3t07 <= 1'b0; + else + Ug3t07 <= Rti7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Ni3t07 <= 1'b0; + else + Ni3t07 <= Kti7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Kk3t07 <= 1'b0; + else + Kk3t07 <= Dti7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Jm3t07 <= 1'b0; + else + Jm3t07 <= Wsi7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Io3t07 <= 1'b0; + else + Io3t07 <= Psi7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Hq3t07 <= 1'b0; + else + Hq3t07 <= Isi7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Gs3t07 <= 1'b0; + else + Gs3t07 <= Bsi7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Fu3t07 <= 1'b0; + else + Fu3t07 <= Uri7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Ew3t07 <= 1'b0; + else + Ew3t07 <= Nri7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Dy3t07 <= 1'b0; + else + Dy3t07 <= Gri7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + C04t07 <= 1'b0; + else + C04t07 <= Zqi7v6; + +always @(posedge HCLK) H24t07 <= Sqi7v6; +always @(posedge HCLK) Q44t07 <= Lqi7v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Y64t07 <= 1'b0; + else + Y64t07 <= Mi88v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + V94t07 <= 1'b0; + else + V94t07 <= Ti88v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Sc4t07 <= 1'b1; + else + Sc4t07 <= Gwc8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Pf4t07 <= 1'b0; + else + Pf4t07 <= Nwc8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Mi4t07 <= 1'b0; + else + Mi4t07 <= Wcc8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ik4t07 <= 1'b0; + else + Ik4t07 <= Hw98v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Zn4t07 <= 1'b0; + else + Zn4t07 <= Zr98v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Qr4t07 <= 1'b0; + else + Qr4t07 <= Yn98v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Hv4t07 <= 1'b0; + else + Hv4t07 <= Mh98v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Vy4t07 <= 1'b0; + else + Vy4t07 <= F9a8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + N25t07 <= 1'b0; + else + N25t07 <= Nda8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + F65t07 <= 1'b0; + else + F65t07 <= Vha8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + X95t07 <= 1'b0; + else + X95t07 <= Dma8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Pd5t07 <= 1'b0; + else + Pd5t07 <= X4a8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Hh5t07 <= 1'b0; + else + Hh5t07 <= R7b8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Tk5t07 <= 1'b0; + else + Tk5t07 <= Zbb8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Fo5t07 <= 1'b0; + else + Fo5t07 <= Hgb8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Rr5t07 <= 1'b0; + else + Rr5t07 <= Pkb8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Dv5t07 <= 1'b0; + else + Dv5t07 <= J3b8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Py5t07 <= 1'b0; + else + Py5t07 <= Bza8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + B26t07 <= 1'b0; + else + B26t07 <= Tua8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + N56t07 <= 1'b0; + else + N56t07 <= Vb98v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Z86t07 <= 1'b0; + else + Z86t07 <= Zd98v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Lc6t07 <= 1'b0; + else + Lc6t07 <= Fh98v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Xf6t07 <= 1'b0; + else + Xf6t07 <= Lk98v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Jj6t07 <= 1'b0; + else + Jj6t07 <= Rn98v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Vm6t07 <= 1'b0; + else + Vm6t07 <= Sr98v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Hq6t07 <= 1'b0; + else + Hq6t07 <= Aw98v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Tt6t07 <= 1'b0; + else + Tt6t07 <= R998v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Fx6t07 <= 1'b0; + else + Fx6t07 <= K1a8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + R07t07 <= 1'b0; + else + R07t07 <= Q4a8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + D47t07 <= 1'b0; + else + D47t07 <= Wla8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + P77t07 <= 1'b0; + else + P77t07 <= Oha8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Bb7t07 <= 1'b0; + else + Bb7t07 <= Gda8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ne7t07 <= 1'b0; + else + Ne7t07 <= Y8a8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Zh7t07 <= 1'b0; + else + Zh7t07 <= Mua8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ll7t07 <= 1'b0; + else + Ll7t07 <= Uya8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Xo7t07 <= 1'b0; + else + Xo7t07 <= C3b8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Js7t07 <= 1'b0; + else + Js7t07 <= Ikb8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Uv7t07 <= 1'b0; + else + Uv7t07 <= Agb8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Gz7t07 <= 1'b0; + else + Gz7t07 <= Sbb8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + S28t07 <= 1'b0; + else + S28t07 <= K7b8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + E68t07 <= 1'b0; + else + E68t07 <= Gxb8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + P98t07 <= 1'b0; + else + P98t07 <= Aub8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ad8t07 <= 1'b0; + else + Ad8t07 <= Wrb8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Lg8t07 <= 1'b0; + else + Lg8t07 <= C9c8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Tj8t07 <= 1'b0; + else + Tj8t07 <= Y6c8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Gn8t07 <= 1'b0; + else + Gn8t07 <= Q2c8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Tq8t07 <= 1'b0; + else + Tq8t07 <= M0c8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Gu8t07 <= 1'b0; + else + Gu8t07 <= Nxb8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Tx8t07 <= 1'b0; + else + Tx8t07 <= Vw98v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + K19t07 <= 1'b0; + else + K19t07 <= Ns98v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + B59t07 <= 1'b0; + else + B59t07 <= Mo98v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + S89t07 <= 1'b0; + else + S89t07 <= Ai98v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Gc9t07 <= 1'b0; + else + Gc9t07 <= T9a8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Yf9t07 <= 1'b0; + else + Yf9t07 <= Bea8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Qj9t07 <= 1'b0; + else + Qj9t07 <= Jia8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + In9t07 <= 1'b0; + else + In9t07 <= Rma8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ar9t07 <= 1'b0; + else + Ar9t07 <= L5a8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Su9t07 <= 1'b0; + else + Su9t07 <= F8b8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ey9t07 <= 1'b0; + else + Ey9t07 <= Ncb8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Q1at07 <= 1'b0; + else + Q1at07 <= Vgb8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + C5at07 <= 1'b0; + else + C5at07 <= Dlb8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + O8at07 <= 1'b0; + else + O8at07 <= X3b8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Acat07 <= 1'b0; + else + Acat07 <= Pza8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Mfat07 <= 1'b0; + else + Mfat07 <= Hva8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Yiat07 <= 1'b0; + else + Yiat07 <= Cc98v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Kmat07 <= 1'b0; + else + Kmat07 <= Ge98v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Wpat07 <= 1'b0; + else + Wpat07 <= Th98v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Itat07 <= 1'b0; + else + Itat07 <= Sk98v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Uwat07 <= 1'b0; + else + Uwat07 <= Fo98v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + G0bt07 <= 1'b0; + else + G0bt07 <= Gs98v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + S3bt07 <= 1'b0; + else + S3bt07 <= Ow98v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + E7bt07 <= 1'b0; + else + E7bt07 <= Y998v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Qabt07 <= 1'b0; + else + Qabt07 <= R1a8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Cebt07 <= 1'b0; + else + Cebt07 <= E5a8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ohbt07 <= 1'b0; + else + Ohbt07 <= Kma8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Albt07 <= 1'b0; + else + Albt07 <= Cia8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Mobt07 <= 1'b0; + else + Mobt07 <= Uda8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Yrbt07 <= 1'b0; + else + Yrbt07 <= M9a8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Kvbt07 <= 1'b0; + else + Kvbt07 <= Ava8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Wybt07 <= 1'b0; + else + Wybt07 <= Iza8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + I2ct07 <= 1'b0; + else + I2ct07 <= Q3b8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + U5ct07 <= 1'b0; + else + U5ct07 <= Wkb8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + F9ct07 <= 1'b0; + else + F9ct07 <= Ogb8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Rcct07 <= 1'b0; + else + Rcct07 <= Gcb8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Dgct07 <= 1'b0; + else + Dgct07 <= Y7b8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Pjct07 <= 1'b0; + else + Pjct07 <= Uxb8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Anct07 <= 1'b0; + else + Anct07 <= Hub8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Lqct07 <= 1'b0; + else + Lqct07 <= Dsb8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Wtct07 <= 1'b0; + else + Wtct07 <= J9c8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Exct07 <= 1'b0; + else + Exct07 <= F7c8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + R0dt07 <= 1'b0; + else + R0dt07 <= X2c8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + E4dt07 <= 1'b0; + else + E4dt07 <= T0c8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + R7dt07 <= 1'b0; + else + R7dt07 <= Byb8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ebdt07 <= 1'b0; + else + Ebdt07 <= Jx98v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Vedt07 <= 1'b0; + else + Vedt07 <= Bt98v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Midt07 <= 1'b0; + else + Midt07 <= Ap98v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Dmdt07 <= 1'b0; + else + Dmdt07 <= Oi98v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Rpdt07 <= 1'b0; + else + Rpdt07 <= Haa8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Jtdt07 <= 1'b0; + else + Jtdt07 <= Pea8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Bxdt07 <= 1'b0; + else + Bxdt07 <= Xia8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + T0et07 <= 1'b0; + else + T0et07 <= Fna8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + L4et07 <= 1'b0; + else + L4et07 <= Z5a8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + D8et07 <= 1'b0; + else + D8et07 <= T8b8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Pbet07 <= 1'b0; + else + Pbet07 <= Bdb8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Bfet07 <= 1'b0; + else + Bfet07 <= Jhb8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Niet07 <= 1'b0; + else + Niet07 <= Rlb8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Zlet07 <= 1'b0; + else + Zlet07 <= L4b8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Lpet07 <= 1'b0; + else + Lpet07 <= D0b8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Xset07 <= 1'b0; + else + Xset07 <= Vva8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Jwet07 <= 1'b0; + else + Jwet07 <= Jc98v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Vzet07 <= 1'b0; + else + Vzet07 <= Ne98v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + H3ft07 <= 1'b0; + else + H3ft07 <= Hi98v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + T6ft07 <= 1'b0; + else + T6ft07 <= Zk98v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Faft07 <= 1'b0; + else + Faft07 <= To98v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Rdft07 <= 1'b0; + else + Rdft07 <= Us98v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Dhft07 <= 1'b0; + else + Dhft07 <= Cx98v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Pkft07 <= 1'b0; + else + Pkft07 <= Fa98v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Boft07 <= 1'b0; + else + Boft07 <= Y1a8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Nrft07 <= 1'b0; + else + Nrft07 <= S5a8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Zuft07 <= 1'b0; + else + Zuft07 <= Yma8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Lyft07 <= 1'b0; + else + Lyft07 <= Qia8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + X1gt07 <= 1'b0; + else + X1gt07 <= Iea8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + J5gt07 <= 1'b0; + else + J5gt07 <= Aaa8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + V8gt07 <= 1'b0; + else + V8gt07 <= Ova8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Hcgt07 <= 1'b0; + else + Hcgt07 <= Wza8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Tfgt07 <= 1'b0; + else + Tfgt07 <= E4b8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Fjgt07 <= 1'b0; + else + Fjgt07 <= Klb8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Qmgt07 <= 1'b0; + else + Qmgt07 <= Chb8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Cqgt07 <= 1'b0; + else + Cqgt07 <= Ucb8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Otgt07 <= 1'b0; + else + Otgt07 <= M8b8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Axgt07 <= 1'b0; + else + Axgt07 <= Iyb8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + L0ht07 <= 1'b0; + else + L0ht07 <= Oub8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + W3ht07 <= 1'b0; + else + W3ht07 <= Ksb8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + H7ht07 <= 1'b0; + else + H7ht07 <= Q9c8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Paht07 <= 1'b0; + else + Paht07 <= M7c8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ceht07 <= 1'b0; + else + Ceht07 <= E3c8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Phht07 <= 1'b0; + else + Phht07 <= A1c8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Clht07 <= 1'b0; + else + Clht07 <= Pyb8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Poht07 <= 1'b0; + else + Poht07 <= Xx98v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Gsht07 <= 1'b0; + else + Gsht07 <= Pt98v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Xvht07 <= 1'b0; + else + Xvht07 <= Op98v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ozht07 <= 1'b0; + else + Ozht07 <= Cj98v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + C3it07 <= 1'b0; + else + C3it07 <= Vaa8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + U6it07 <= 1'b0; + else + U6it07 <= Dfa8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Mait07 <= 1'b0; + else + Mait07 <= Lja8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Eeit07 <= 1'b0; + else + Eeit07 <= Tna8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Whit07 <= 1'b0; + else + Whit07 <= N6a8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Olit07 <= 1'b0; + else + Olit07 <= H9b8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Apit07 <= 1'b0; + else + Apit07 <= Pdb8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Msit07 <= 1'b0; + else + Msit07 <= Xhb8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Yvit07 <= 1'b0; + else + Yvit07 <= Fmb8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Kzit07 <= 1'b0; + else + Kzit07 <= Z4b8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + W2jt07 <= 1'b0; + else + W2jt07 <= R0b8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + I6jt07 <= 1'b0; + else + I6jt07 <= Jwa8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + U9jt07 <= 1'b0; + else + U9jt07 <= Qc98v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Gdjt07 <= 1'b0; + else + Gdjt07 <= Ue98v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Sgjt07 <= 1'b0; + else + Sgjt07 <= Vi98v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ekjt07 <= 1'b0; + else + Ekjt07 <= Gl98v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Qnjt07 <= 1'b0; + else + Qnjt07 <= Hp98v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Crjt07 <= 1'b0; + else + Crjt07 <= It98v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Oujt07 <= 1'b0; + else + Oujt07 <= Qx98v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ayjt07 <= 1'b0; + else + Ayjt07 <= Ma98v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + M1kt07 <= 1'b0; + else + M1kt07 <= F2a8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Y4kt07 <= 1'b0; + else + Y4kt07 <= G6a8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + K8kt07 <= 1'b0; + else + K8kt07 <= Mna8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Wbkt07 <= 1'b0; + else + Wbkt07 <= Eja8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ifkt07 <= 1'b0; + else + Ifkt07 <= Wea8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Uikt07 <= 1'b0; + else + Uikt07 <= Oaa8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Gmkt07 <= 1'b0; + else + Gmkt07 <= Cwa8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Spkt07 <= 1'b0; + else + Spkt07 <= K0b8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Etkt07 <= 1'b0; + else + Etkt07 <= S4b8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Qwkt07 <= 1'b0; + else + Qwkt07 <= Ylb8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + B0lt07 <= 1'b0; + else + B0lt07 <= Qhb8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + N3lt07 <= 1'b0; + else + N3lt07 <= Idb8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Z6lt07 <= 1'b0; + else + Z6lt07 <= A9b8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Lalt07 <= 1'b0; + else + Lalt07 <= Wyb8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Wdlt07 <= 1'b0; + else + Wdlt07 <= Vub8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Hhlt07 <= 1'b0; + else + Hhlt07 <= Rsb8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Sklt07 <= 1'b0; + else + Sklt07 <= X9c8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Aolt07 <= 1'b0; + else + Aolt07 <= T7c8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Nrlt07 <= 1'b0; + else + Nrlt07 <= L3c8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Avlt07 <= 1'b0; + else + Avlt07 <= H1c8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Nylt07 <= 1'b0; + else + Nylt07 <= Dzb8v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + A2mt07 <= 1'b0; + else + A2mt07 <= Je78v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + U3mt07 <= 1'b0; + else + U3mt07 <= F7y7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + V5mt07 <= 1'b0; + else + V5mt07 <= Axu7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Q7mt07 <= 1'b0; + else + Q7mt07 <= Yyc8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Pamt07 <= 1'b0; + else + Pamt07 <= Kyc8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Scmt07 <= 1'b0; + else + Scmt07 <= Ryc8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Uemt07 <= 1'b0; + else + Uemt07 <= Fi88v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Rhmt07 <= 1'b0; + else + Rhmt07 <= Fv98v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ilmt07 <= 1'b0; + else + Ilmt07 <= Xq98v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Zomt07 <= 1'b0; + else + Zomt07 <= Wm98v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Qsmt07 <= 1'b0; + else + Qsmt07 <= Kg98v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ewmt07 <= 1'b0; + else + Ewmt07 <= D8a8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Wzmt07 <= 1'b0; + else + Wzmt07 <= Lca8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + O3nt07 <= 1'b0; + else + O3nt07 <= Tga8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + G7nt07 <= 1'b0; + else + G7nt07 <= Bla8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Yant07 <= 1'b0; + else + Yant07 <= V3a8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Qent07 <= 1'b0; + else + Qent07 <= P6b8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Cint07 <= 1'b0; + else + Cint07 <= Xab8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Olnt07 <= 1'b0; + else + Olnt07 <= Ffb8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Apnt07 <= 1'b0; + else + Apnt07 <= Njb8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Msnt07 <= 1'b0; + else + Msnt07 <= H2b8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Yvnt07 <= 1'b0; + else + Yvnt07 <= Zxa8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Kznt07 <= 1'b0; + else + Kznt07 <= Rta8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + W2ot07 <= 1'b0; + else + W2ot07 <= Hb98v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + I6ot07 <= 1'b0; + else + I6ot07 <= Ld98v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + U9ot07 <= 1'b0; + else + U9ot07 <= Dg98v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Gdot07 <= 1'b0; + else + Gdot07 <= Xj98v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Sgot07 <= 1'b0; + else + Sgot07 <= Pm98v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ekot07 <= 1'b0; + else + Ekot07 <= Qq98v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Qnot07 <= 1'b0; + else + Qnot07 <= Yu98v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Crot07 <= 1'b0; + else + Crot07 <= D998v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ouot07 <= 1'b0; + else + Ouot07 <= W0a8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ayot07 <= 1'b0; + else + Ayot07 <= O3a8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + M1pt07 <= 1'b0; + else + M1pt07 <= Uka8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Y4pt07 <= 1'b0; + else + Y4pt07 <= Mga8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + K8pt07 <= 1'b0; + else + K8pt07 <= Eca8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Wbpt07 <= 1'b0; + else + Wbpt07 <= W7a8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ifpt07 <= 1'b0; + else + Ifpt07 <= Kta8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Uipt07 <= 1'b0; + else + Uipt07 <= Sxa8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Gmpt07 <= 1'b0; + else + Gmpt07 <= A2b8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Sppt07 <= 1'b0; + else + Sppt07 <= Gjb8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Dtpt07 <= 1'b0; + else + Dtpt07 <= Yeb8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Pwpt07 <= 1'b0; + else + Pwpt07 <= Qab8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + B0qt07 <= 1'b0; + else + B0qt07 <= I6b8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + N3qt07 <= 1'b0; + else + N3qt07 <= Ewb8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Y6qt07 <= 1'b0; + else + Y6qt07 <= Mtb8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Jaqt07 <= 1'b0; + else + Jaqt07 <= Irb8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Udqt07 <= 1'b0; + else + Udqt07 <= O8c8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Chqt07 <= 1'b0; + else + Chqt07 <= K6c8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Pkqt07 <= 1'b0; + else + Pkqt07 <= C2c8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Coqt07 <= 1'b0; + else + Coqt07 <= Yzb8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Prqt07 <= 1'b0; + else + Prqt07 <= Lwb8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Cvqt07 <= 1'b0; + else + Cvqt07 <= Uwc8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Zxqt07 <= 1'b0; + else + Zxqt07 <= Tv98v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Q1rt07 <= 1'b0; + else + Q1rt07 <= Lr98v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + H5rt07 <= 1'b0; + else + H5rt07 <= Kn98v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Y8rt07 <= 1'b0; + else + Y8rt07 <= Yg98v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Mcrt07 <= 1'b0; + else + Mcrt07 <= R8a8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Egrt07 <= 1'b0; + else + Egrt07 <= Zca8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Wjrt07 <= 1'b0; + else + Wjrt07 <= Hha8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Onrt07 <= 1'b0; + else + Onrt07 <= Pla8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Grrt07 <= 1'b0; + else + Grrt07 <= J4a8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Yurt07 <= 1'b0; + else + Yurt07 <= D7b8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Kyrt07 <= 1'b0; + else + Kyrt07 <= Lbb8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + W1st07 <= 1'b0; + else + W1st07 <= Tfb8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + I5st07 <= 1'b0; + else + I5st07 <= Bkb8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + U8st07 <= 1'b0; + else + U8st07 <= V2b8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Gcst07 <= 1'b0; + else + Gcst07 <= Nya8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Sfst07 <= 1'b0; + else + Sfst07 <= Fua8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ejst07 <= 1'b0; + else + Ejst07 <= Ob98v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Qmst07 <= 1'b0; + else + Qmst07 <= Sd98v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Cqst07 <= 1'b0; + else + Cqst07 <= Rg98v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Otst07 <= 1'b0; + else + Otst07 <= Ek98v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Axst07 <= 1'b0; + else + Axst07 <= Dn98v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + M0tt07 <= 1'b0; + else + M0tt07 <= Er98v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Y3tt07 <= 1'b0; + else + Y3tt07 <= Mv98v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + K7tt07 <= 1'b0; + else + K7tt07 <= K998v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Watt07 <= 1'b0; + else + Watt07 <= D1a8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Iett07 <= 1'b0; + else + Iett07 <= C4a8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Uhtt07 <= 1'b0; + else + Uhtt07 <= Ila8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Gltt07 <= 1'b0; + else + Gltt07 <= Aha8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Sott07 <= 1'b0; + else + Sott07 <= Sca8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Estt07 <= 1'b0; + else + Estt07 <= K8a8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Qvtt07 <= 1'b0; + else + Qvtt07 <= Yta8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Cztt07 <= 1'b0; + else + Cztt07 <= Gya8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + O2ut07 <= 1'b0; + else + O2ut07 <= O2b8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + A6ut07 <= 1'b0; + else + A6ut07 <= Ujb8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + L9ut07 <= 1'b0; + else + L9ut07 <= Mfb8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Xcut07 <= 1'b0; + else + Xcut07 <= Ebb8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Jgut07 <= 1'b0; + else + Jgut07 <= W6b8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Vjut07 <= 1'b0; + else + Vjut07 <= Swb8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Gnut07 <= 1'b0; + else + Gnut07 <= Ttb8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Rqut07 <= 1'b0; + else + Rqut07 <= Prb8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Cuut07 <= 1'b0; + else + Cuut07 <= V8c8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Kxut07 <= 1'b0; + else + Kxut07 <= R6c8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + X0vt07 <= 1'b0; + else + X0vt07 <= J2c8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + K4vt07 <= 1'b0; + else + K4vt07 <= F0c8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + X7vt07 <= 1'b0; + else + X7vt07 <= Zwb8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Kbvt07 <= 1'b0; + else + Kbvt07 <= Bxc8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Hevt07 <= 1'b0; + else + Hevt07 <= Ru98v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Yhvt07 <= 1'b0; + else + Yhvt07 <= Jq98v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Plvt07 <= 1'b0; + else + Plvt07 <= Im98v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Gpvt07 <= 1'b0; + else + Gpvt07 <= Wf98v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Usvt07 <= 1'b0; + else + Usvt07 <= P7a8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Mwvt07 <= 1'b0; + else + Mwvt07 <= Xba8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + E0wt07 <= 1'b0; + else + E0wt07 <= Fga8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + W3wt07 <= 1'b0; + else + W3wt07 <= Nka8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + O7wt07 <= 1'b0; + else + O7wt07 <= H3a8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Gbwt07 <= 1'b0; + else + Gbwt07 <= B6b8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Sewt07 <= 1'b0; + else + Sewt07 <= Jab8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Eiwt07 <= 1'b0; + else + Eiwt07 <= Reb8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Qlwt07 <= 1'b0; + else + Qlwt07 <= Zib8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Cpwt07 <= 1'b0; + else + Cpwt07 <= T1b8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Oswt07 <= 1'b0; + else + Oswt07 <= Lxa8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Awwt07 <= 1'b0; + else + Awwt07 <= Dta8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Mzwt07 <= 1'b0; + else + Mzwt07 <= Ab98v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Y2xt07 <= 1'b0; + else + Y2xt07 <= Ed98v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + K6xt07 <= 1'b0; + else + K6xt07 <= Pf98v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + W9xt07 <= 1'b0; + else + W9xt07 <= Qj98v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Idxt07 <= 1'b0; + else + Idxt07 <= Bm98v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ugxt07 <= 1'b0; + else + Ugxt07 <= Cq98v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Gkxt07 <= 1'b0; + else + Gkxt07 <= Ku98v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Snxt07 <= 1'b0; + else + Snxt07 <= W898v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Erxt07 <= 1'b0; + else + Erxt07 <= P0a8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Quxt07 <= 1'b0; + else + Quxt07 <= A3a8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Cyxt07 <= 1'b0; + else + Cyxt07 <= Gka8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + O1yt07 <= 1'b0; + else + O1yt07 <= Yfa8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + A5yt07 <= 1'b0; + else + A5yt07 <= Qba8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + M8yt07 <= 1'b0; + else + M8yt07 <= I7a8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ybyt07 <= 1'b0; + else + Ybyt07 <= Wsa8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Kfyt07 <= 1'b0; + else + Kfyt07 <= Exa8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Wiyt07 <= 1'b0; + else + Wiyt07 <= M1b8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Imyt07 <= 1'b0; + else + Imyt07 <= Sib8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Tpyt07 <= 1'b0; + else + Tpyt07 <= Keb8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ftyt07 <= 1'b0; + else + Ftyt07 <= Cab8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Rwyt07 <= 1'b0; + else + Rwyt07 <= U5b8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + D0zt07 <= 1'b0; + else + D0zt07 <= Qvb8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + O3zt07 <= 1'b0; + else + O3zt07 <= Ftb8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Z6zt07 <= 1'b0; + else + Z6zt07 <= Brb8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Kazt07 <= 1'b0; + else + Kazt07 <= H8c8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Sdzt07 <= 1'b0; + else + Sdzt07 <= D6c8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Fhzt07 <= 1'b0; + else + Fhzt07 <= V1c8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Skzt07 <= 1'b0; + else + Skzt07 <= Xvb8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Fozt07 <= 1'b0; + else + Fozt07 <= Ixc8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Crzt07 <= 1'b0; + else + Crzt07 <= Du98v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Tuzt07 <= 1'b0; + else + Tuzt07 <= Vp98v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Kyzt07 <= 1'b0; + else + Kyzt07 <= Ul98v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + B20u07 <= 1'b0; + else + B20u07 <= If98v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + P50u07 <= 1'b0; + else + P50u07 <= Zja8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + H90u07 <= 1'b0; + else + H90u07 <= Rfa8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Zc0u07 <= 1'b0; + else + Zc0u07 <= Jba8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Rg0u07 <= 1'b0; + else + Rg0u07 <= B7a8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Jk0u07 <= 1'b0; + else + Jk0u07 <= T2a8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Bo0u07 <= 1'b0; + else + Bo0u07 <= N5b8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Nr0u07 <= 1'b0; + else + Nr0u07 <= V9b8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Zu0u07 <= 1'b0; + else + Zu0u07 <= Deb8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ly0u07 <= 1'b0; + else + Ly0u07 <= Lib8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + X11u07 <= 1'b0; + else + X11u07 <= F1b8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + J51u07 <= 1'b0; + else + J51u07 <= Xwa8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + V81u07 <= 1'b0; + else + V81u07 <= Psa8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Hc1u07 <= 1'b0; + else + Hc1u07 <= A8c8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Pf1u07 <= 1'b0; + else + Pf1u07 <= W5c8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Cj1u07 <= 1'b0; + else + Cj1u07 <= O1c8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Pm1u07 <= 1'b0; + else + Pm1u07 <= Jvb8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Cq1u07 <= 1'b0; + else + Cq1u07 <= I0a8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ot1u07 <= 1'b0; + else + Ot1u07 <= M2a8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ax1u07 <= 1'b0; + else + Ax1u07 <= Sja8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + M02u07 <= 1'b0; + else + M02u07 <= Cba8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Y32u07 <= 1'b0; + else + Y32u07 <= U6a8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + K72u07 <= 1'b0; + else + K72u07 <= Isa8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Wa2u07 <= 1'b0; + else + Wa2u07 <= Qwa8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ie2u07 <= 1'b0; + else + Ie2u07 <= Y0b8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Uh2u07 <= 1'b0; + else + Uh2u07 <= Eib8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Fl2u07 <= 1'b0; + else + Fl2u07 <= Wdb8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ro2u07 <= 1'b0; + else + Ro2u07 <= O9b8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ds2u07 <= 1'b0; + else + Ds2u07 <= G5b8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Pv2u07 <= 1'b0; + else + Pv2u07 <= Cvb8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Az2u07 <= 1'b0; + else + Az2u07 <= Ysb8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + L23u07 <= 1'b0; + else + L23u07 <= Uqb8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + W53u07 <= 1'b0; + else + W53u07 <= Ta98v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + I93u07 <= 1'b0; + else + I93u07 <= Xc98v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Uc3u07 <= 1'b0; + else + Uc3u07 <= Bf98v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Gg3u07 <= 1'b0; + else + Gg3u07 <= Jj98v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Sj3u07 <= 1'b0; + else + Sj3u07 <= Nl98v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + En3u07 <= 1'b0; + else + En3u07 <= Wt98v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Qq3u07 <= 1'b0; + else + Qq3u07 <= Q8k8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Cu3u07 <= 1'b0; + else + Cu3u07 <= P898v6; + +always @(posedge HCLK) Ox3u07 <= Nbc8v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Oz3u07 <= 1'b0; + else + Oz3u07 <= P5c8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + B34u07 <= 1'b0; + else + B34u07 <= I5c8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + O64u07 <= 1'b0; + else + O64u07 <= B5c8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ba4u07 <= 1'b0; + else + Ba4u07 <= U4c8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Od4u07 <= 1'b0; + else + Od4u07 <= N4c8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Bh4u07 <= 1'b0; + else + Bh4u07 <= G4c8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ok4u07 <= 1'b0; + else + Ok4u07 <= Z3c8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Bo4u07 <= 1'b0; + else + Bo4u07 <= S3c8v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Or4u07 <= 1'b0; + else + Or4u07 <= Vk78v6; + +always @(posedge HCLK) Lt4u07 <= H768v6; +always @(posedge HCLK) Av4u07 <= Fz58v6; +always @(posedge HCLK) Pw4u07 <= Dr58v6; +always @(posedge HCLK) Ey4u07 <= Bj58v6; +always @(posedge HCLK) Tz4u07 <= Za58v6; +always @(posedge HCLK) I15u07 <= X258v6; +always @(posedge HCLK) X25u07 <= Jv48v6; +always @(posedge HCLK) M45u07 <= Vn48v6; +always @(posedge FCLK) B65u07 <= Xjv7v6; +always @(posedge FCLK) H85u07 <= Thv7v6; +always @(posedge HCLK) Na5u07 <= Zoy7v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Uc5u07 <= 1'b0; + else + Uc5u07 <= Xmk8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ef5u07 <= 1'b0; + else + Ef5u07 <= R5s7v6; + +always @(posedge HCLK) Ii5u07 <= Soy7v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Pk5u07 <= 1'b0; + else + Pk5u07 <= I3l8v6; + +always @(posedge HCLK) Zm5u07 <= Dky7v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Xp5u07 <= 1'b0; + else + Xp5u07 <= K5s7v6; + +always @(posedge HCLK) Bt5u07 <= Loy7v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Iv5u07 <= 1'b0; + else + Iv5u07 <= Hzk8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Sx5u07 <= 1'b0; + else + Sx5u07 <= D5s7v6; + +always @(posedge HCLK) W06u07 <= Eoy7v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + D36u07 <= 1'b0; + else + D36u07 <= K1p7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + I66u07 <= 1'b0; + else + I66u07 <= Nzo7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + N96u07 <= 1'b0; + else + N96u07 <= Syo7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Tc6u07 <= 1'b0; + else + Tc6u07 <= Lyo7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Zf6u07 <= 1'b0; + else + Zf6u07 <= Eyo7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Fj6u07 <= 1'b0; + else + Fj6u07 <= Xxo7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Lm6u07 <= 1'b0; + else + Lm6u07 <= Jxo7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Rp6u07 <= 1'b0; + else + Rp6u07 <= Hwo7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Xs6u07 <= 1'b0; + else + Xs6u07 <= Fvo7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Dw6u07 <= 1'b0; + else + Dw6u07 <= Yuo7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Jz6u07 <= 1'b0; + else + Jz6u07 <= Ruo7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + P27u07 <= 1'b0; + else + P27u07 <= Kuo7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + V57u07 <= 1'b0; + else + V57u07 <= Duo7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + B97u07 <= 1'b0; + else + B97u07 <= W4s7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Fc7u07 <= 1'b0; + else + Fc7u07 <= Lqw7v6; + +always @(posedge FCLK) Fe7u07 <= Eqi7v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Qg7u07 <= 1'b0; + else + Qg7u07 <= Jiw7v6; + +always @(posedge FCLK) Qi7u07 <= Xpi7v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Bl7u07 <= 1'b0; + else + Bl7u07 <= Qiw7v6; + +always @(posedge FCLK) Bn7u07 <= Qpi7v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Mp7u07 <= 1'b0; + else + Mp7u07 <= Xiw7v6; + +always @(posedge FCLK) Mr7u07 <= Jpi7v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Xt7u07 <= 1'b0; + else + Xt7u07 <= Ejw7v6; + +always @(posedge FCLK) Xv7u07 <= Cpi7v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Iy7u07 <= 1'b0; + else + Iy7u07 <= Ljw7v6; + +always @(posedge FCLK) I08u07 <= Voi7v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + T28u07 <= 1'b0; + else + T28u07 <= Sjw7v6; + +always @(posedge FCLK) T48u07 <= Ooi7v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + E78u07 <= 1'b0; + else + E78u07 <= Zjw7v6; + +always @(posedge FCLK) E98u07 <= Hoi7v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Pb8u07 <= 1'b0; + else + Pb8u07 <= Gkw7v6; + +always @(posedge FCLK) Pd8u07 <= Aoi7v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ag8u07 <= 1'b0; + else + Ag8u07 <= Nkw7v6; + +always @(posedge FCLK) Bi8u07 <= Tni7v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Nk8u07 <= 1'b0; + else + Nk8u07 <= Ukw7v6; + +always @(posedge FCLK) Om8u07 <= Mni7v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ap8u07 <= 1'b0; + else + Ap8u07 <= Blw7v6; + +always @(posedge FCLK) Br8u07 <= Fni7v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Nt8u07 <= 1'b0; + else + Nt8u07 <= Ilw7v6; + +always @(posedge FCLK) Ov8u07 <= Ymi7v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ay8u07 <= 1'b0; + else + Ay8u07 <= Plw7v6; + +always @(posedge FCLK) B09u07 <= Rmi7v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + N29u07 <= 1'b0; + else + N29u07 <= Wlw7v6; + +always @(posedge FCLK) O49u07 <= Kmi7v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + A79u07 <= 1'b0; + else + A79u07 <= Dmw7v6; + +always @(posedge FCLK) B99u07 <= Dmi7v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Nb9u07 <= 1'b0; + else + Nb9u07 <= Kmw7v6; + +always @(posedge FCLK) Od9u07 <= Wli7v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ag9u07 <= 1'b0; + else + Ag9u07 <= Rmw7v6; + +always @(posedge FCLK) Bi9u07 <= Pli7v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Nk9u07 <= 1'b0; + else + Nk9u07 <= Ymw7v6; + +always @(posedge FCLK) Om9u07 <= Ili7v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ap9u07 <= 1'b0; + else + Ap9u07 <= Fnw7v6; + +always @(posedge FCLK) Br9u07 <= Bli7v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Nt9u07 <= 1'b0; + else + Nt9u07 <= Mnw7v6; + +always @(posedge FCLK) Ov9u07 <= Uki7v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ay9u07 <= 1'b0; + else + Ay9u07 <= Tnw7v6; + +always @(posedge FCLK) B0au07 <= Nki7v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + N2au07 <= 1'b0; + else + N2au07 <= Aow7v6; + +always @(posedge FCLK) O4au07 <= Gki7v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + A7au07 <= 1'b0; + else + A7au07 <= How7v6; + +always @(posedge FCLK) B9au07 <= Zji7v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Nbau07 <= 1'b0; + else + Nbau07 <= Oow7v6; + +always @(posedge FCLK) Odau07 <= Sji7v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Agau07 <= 1'b0; + else + Agau07 <= Vow7v6; + +always @(posedge FCLK) Biau07 <= Lji7v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Nkau07 <= 1'b0; + else + Nkau07 <= Cpw7v6; + +always @(posedge FCLK) Omau07 <= Eji7v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Apau07 <= 1'b0; + else + Apau07 <= Jpw7v6; + +always @(posedge FCLK) Brau07 <= Xii7v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ntau07 <= 1'b0; + else + Ntau07 <= Qpw7v6; + +always @(posedge FCLK) Ovau07 <= Qii7v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ayau07 <= 1'b0; + else + Ayau07 <= Xpw7v6; + +always @(posedge FCLK) B0bu07 <= Jii7v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + N2bu07 <= 1'b0; + else + N2bu07 <= Eqw7v6; + +always @(posedge FCLK) O4bu07 <= Cii7v6; +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + A7bu07 <= 1'b0; + else + A7bu07 <= I7zmz6[31]; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + A9bu07 <= 1'b0; + else + A9bu07 <= I7zmz6[1]; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Zabu07 <= 1'b0; + else + Zabu07 <= L5zmz6[1]; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Ldbu07 <= 1'b0; + else + Ldbu07 <= L5zmz6[1]; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Sfbu07 <= 1'b0; + else + Sfbu07 <= I7zmz6[2]; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Rhbu07 <= 1'b0; + else + Rhbu07 <= L5zmz6[2]; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Dkbu07 <= 1'b0; + else + Dkbu07 <= L5zmz6[2]; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Kmbu07 <= 1'b0; + else + Kmbu07 <= I7zmz6[3]; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Jobu07 <= 1'b0; + else + Jobu07 <= L5zmz6[3]; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Vqbu07 <= 1'b0; + else + Vqbu07 <= L5zmz6[3]; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Ctbu07 <= 1'b0; + else + Ctbu07 <= I7zmz6[4]; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Bvbu07 <= 1'b0; + else + Bvbu07 <= L5zmz6[4]; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Nxbu07 <= 1'b0; + else + Nxbu07 <= L5zmz6[4]; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Uzbu07 <= 1'b0; + else + Uzbu07 <= I7zmz6[5]; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + T1cu07 <= 1'b0; + else + T1cu07 <= L5zmz6[5]; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + F4cu07 <= 1'b0; + else + F4cu07 <= L5zmz6[5]; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + M6cu07 <= 1'b0; + else + M6cu07 <= I7zmz6[6]; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + L8cu07 <= 1'b0; + else + L8cu07 <= L5zmz6[6]; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Xacu07 <= 1'b0; + else + Xacu07 <= L5zmz6[6]; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Edcu07 <= 1'b0; + else + Edcu07 <= I7zmz6[7]; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Dfcu07 <= 1'b0; + else + Dfcu07 <= L5zmz6[7]; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Phcu07 <= 1'b0; + else + Phcu07 <= I7zmz6[8]; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Ojcu07 <= 1'b0; + else + Ojcu07 <= L5zmz6[8]; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Amcu07 <= 1'b0; + else + Amcu07 <= I7zmz6[9]; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Zncu07 <= 1'b0; + else + Zncu07 <= L5zmz6[9]; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Lqcu07 <= 1'b0; + else + Lqcu07 <= I7zmz6[10]; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Lscu07 <= 1'b0; + else + Lscu07 <= L5zmz6[10]; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Yucu07 <= 1'b0; + else + Yucu07 <= I7zmz6[11]; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Ywcu07 <= 1'b0; + else + Ywcu07 <= L5zmz6[11]; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Lzcu07 <= 1'b0; + else + Lzcu07 <= I7zmz6[12]; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + L1du07 <= 1'b0; + else + L1du07 <= L5zmz6[12]; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Y3du07 <= 1'b0; + else + Y3du07 <= I7zmz6[13]; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Y5du07 <= 1'b0; + else + Y5du07 <= L5zmz6[13]; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + L8du07 <= 1'b0; + else + L8du07 <= I7zmz6[14]; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Ladu07 <= 1'b0; + else + Ladu07 <= L5zmz6[14]; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Ycdu07 <= 1'b0; + else + Ycdu07 <= I7zmz6[15]; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Yedu07 <= 1'b0; + else + Yedu07 <= L5zmz6[15]; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Lhdu07 <= 1'b0; + else + Lhdu07 <= I7zmz6[16]; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Ljdu07 <= 1'b0; + else + Ljdu07 <= L5zmz6[16]; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Yldu07 <= 1'b0; + else + Yldu07 <= I7zmz6[17]; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Yndu07 <= 1'b0; + else + Yndu07 <= L5zmz6[17]; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Lqdu07 <= 1'b0; + else + Lqdu07 <= I7zmz6[18]; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Lsdu07 <= 1'b0; + else + Lsdu07 <= L5zmz6[18]; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Yudu07 <= 1'b0; + else + Yudu07 <= I7zmz6[19]; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Ywdu07 <= 1'b0; + else + Ywdu07 <= L5zmz6[19]; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Lzdu07 <= 1'b0; + else + Lzdu07 <= I7zmz6[20]; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + L1eu07 <= 1'b0; + else + L1eu07 <= Tct8v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Y3eu07 <= 1'b0; + else + Y3eu07 <= I7zmz6[21]; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Y5eu07 <= 1'b0; + else + Y5eu07 <= L5zmz6[21]; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + L8eu07 <= 1'b0; + else + L8eu07 <= I7zmz6[22]; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Laeu07 <= 1'b0; + else + Laeu07 <= L5zmz6[22]; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Yceu07 <= 1'b0; + else + Yceu07 <= I7zmz6[23]; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Yeeu07 <= 1'b0; + else + Yeeu07 <= L5zmz6[23]; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Lheu07 <= 1'b0; + else + Lheu07 <= I7zmz6[24]; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Ljeu07 <= 1'b0; + else + Ljeu07 <= L5zmz6[24]; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Yleu07 <= 1'b0; + else + Yleu07 <= I7zmz6[25]; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Yneu07 <= 1'b0; + else + Yneu07 <= L5zmz6[25]; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Lqeu07 <= 1'b0; + else + Lqeu07 <= I7zmz6[26]; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Lseu07 <= 1'b0; + else + Lseu07 <= L5zmz6[26]; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Yueu07 <= 1'b0; + else + Yueu07 <= I7zmz6[27]; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Yweu07 <= 1'b0; + else + Yweu07 <= L5zmz6[27]; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Lzeu07 <= 1'b0; + else + Lzeu07 <= I7zmz6[28]; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + L1fu07 <= 1'b0; + else + L1fu07 <= L5zmz6[28]; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Y3fu07 <= 1'b0; + else + Y3fu07 <= I7zmz6[29]; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Y5fu07 <= 1'b0; + else + Y5fu07 <= L5zmz6[29]; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + L8fu07 <= 1'b0; + else + L8fu07 <= I7zmz6[30]; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Lafu07 <= 1'b0; + else + Lafu07 <= L5zmz6[30]; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Ycfu07 <= 1'b0; + else + Ycfu07 <= L5zmz6[31]; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Lffu07 <= 1'b0; + else + Lffu07 <= Ipk8v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Mhfu07 <= 1'b0; + else + Mhfu07 <= Bmv7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Ljfu07 <= 1'b0; + else + Ljfu07 <= Fb88v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Rlfu07 <= 1'b0; + else + Rlfu07 <= Mb88v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Rnfu07 <= 1'b0; + else + Rnfu07 <= P988v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Zpfu07 <= 1'b0; + else + Zpfu07 <= Pew7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Bsfu07 <= 1'b0; + else + Bsfu07 <= Mgw7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Cufu07 <= 1'b0; + else + Cufu07 <= Ciw7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Dwfu07 <= 1'b0; + else + Dwfu07 <= Fgw7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Eyfu07 <= 1'b0; + else + Eyfu07 <= J4w7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + D0gu07 <= 1'b0; + else + D0gu07 <= Yfw7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + D2gu07 <= 1'b0; + else + D2gu07 <= Rfw7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + L4gu07 <= 1'b0; + else + L4gu07 <= Wew7v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + N6gu07 <= 1'b0; + else + N6gu07 <= Vhi7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + O9gu07 <= 1'b0; + else + O9gu07 <= Zb48v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Pbgu07 <= 1'b0; + else + Pbgu07 <= Bcy7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ndgu07 <= 1'b0; + else + Ndgu07 <= Uby7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Ofgu07 <= 1'b0; + else + Ofgu07 <= Rka7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Uhgu07 <= 1'b0; + else + Uhgu07 <= W3a7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Akgu07 <= 1'b0; + else + Akgu07 <= T6k8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Imgu07 <= 1'b0; + else + Imgu07 <= M6k8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Qogu07 <= 1'b0; + else + Qogu07 <= Ohi7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Uqgu07 <= 1'b0; + else + Uqgu07 <= Hhi7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Xsgu07 <= 1'b0; + else + Xsgu07 <= Ahi7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Wugu07 <= 1'b0; + else + Wugu07 <= Tgi7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Vwgu07 <= 1'b0; + else + Vwgu07 <= Cy97v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Azgu07 <= 1'b0; + else + Azgu07 <= Edo7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + D1hu07 <= 1'b0; + else + D1hu07 <= P7b7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + E3hu07 <= 1'b0; + else + E3hu07 <= Vca7v6; + +always @(posedge HCLK) H5hu07 <= Aqu7v6; +always @(posedge HCLK) K7hu07 <= Tpu7v6; +always @(posedge HCLK) N9hu07 <= Mpu7v6; +always @(posedge HCLK) Rbhu07 <= Fpu7v6; +always @(posedge HCLK) Vdhu07 <= You7v6; +always @(posedge HCLK) Zfhu07 <= Rou7v6; +always @(posedge HCLK) Dihu07 <= Kou7v6; +always @(posedge HCLK) Hkhu07 <= Dou7v6; +always @(posedge HCLK) Lmhu07 <= Wnu7v6; +always @(posedge HCLK) Pohu07 <= Pnu7v6; +always @(posedge HCLK) Tqhu07 <= Inu7v6; +always @(posedge HCLK) Xshu07 <= Bnu7v6; +always @(posedge HCLK) Bvhu07 <= Umu7v6; +always @(posedge HCLK) Fxhu07 <= Nmu7v6; +always @(posedge HCLK) Jzhu07 <= Gmu7v6; +always @(posedge HCLK) N1iu07 <= Zlu7v6; +always @(posedge HCLK) R3iu07 <= Slu7v6; +always @(posedge HCLK) V5iu07 <= Llu7v6; +always @(posedge HCLK) Z7iu07 <= Elu7v6; +always @(posedge HCLK) Daiu07 <= Xku7v6; +always @(posedge HCLK) Hciu07 <= Qku7v6; +always @(posedge HCLK) Leiu07 <= Jku7v6; +always @(posedge HCLK) Pgiu07 <= Cku7v6; +always @(posedge HCLK) Tiiu07 <= Vju7v6; +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Xkiu07 <= 1'b0; + else + Xkiu07 <= T1zmz6[15]; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Fniu07 <= 1'b0; + else + Fniu07 <= T1zmz6[23]; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Npiu07 <= 1'b0; + else + Npiu07 <= T1zmz6[31]; + +always @(posedge HCLK) Vriu07 <= Oju7v6; +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Ytiu07 <= 1'b0; + else + Ytiu07 <= T1zmz6[10]; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Gwiu07 <= 1'b0; + else + Gwiu07 <= T1zmz6[11]; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Oyiu07 <= 1'b0; + else + Oyiu07 <= T1zmz6[12]; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + W0ju07 <= 1'b0; + else + W0ju07 <= T1zmz6[13]; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + E3ju07 <= 1'b0; + else + E3ju07 <= T1zmz6[16]; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + M5ju07 <= 1'b0; + else + M5ju07 <= T1zmz6[17]; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + U7ju07 <= 1'b0; + else + U7ju07 <= T1zmz6[18]; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Caju07 <= 1'b0; + else + Caju07 <= T1zmz6[19]; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Kcju07 <= 1'b0; + else + Kcju07 <= T1zmz6[20]; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Seju07 <= 1'b0; + else + Seju07 <= T1zmz6[21]; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Ahju07 <= 1'b0; + else + Ahju07 <= T1zmz6[24]; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Ijju07 <= 1'b0; + else + Ijju07 <= T1zmz6[25]; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Qlju07 <= 1'b0; + else + Qlju07 <= T1zmz6[26]; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Ynju07 <= 1'b0; + else + Ynju07 <= T1zmz6[27]; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Gqju07 <= 1'b0; + else + Gqju07 <= T1zmz6[28]; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Osju07 <= 1'b0; + else + Osju07 <= T1zmz6[29]; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Wuju07 <= 1'b0; + else + Wuju07 <= T1zmz6[34]; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Exju07 <= 1'b0; + else + Exju07 <= T1zmz6[35]; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Mzju07 <= 1'b0; + else + Mzju07 <= T1zmz6[8]; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + T1ku07 <= 1'b0; + else + T1ku07 <= T1zmz6[9]; + +always @(posedge HCLK) A4ku07 <= Mgi7v6; +always @(posedge HCLK) J6ku07 <= Fgi7v6; +always @(posedge HCLK) A9ku07 <= Yfi7v6; +always @(posedge HCLK) Ibku07 <= Gtu7v6; +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Gdku07 <= 1'b0; + else + Gdku07 <= Hsk8v6; + +always @(posedge HCLK) Afku07 <= Rvu7v6; +always @(posedge HCLK) Zgku07 <= Kvu7v6; +always @(posedge HCLK) Xiku07 <= Dvu7v6; +always @(posedge HCLK) Vkku07 <= Wuu7v6; +always @(posedge HCLK) Tmku07 <= Puu7v6; +always @(posedge HCLK) Roku07 <= Iuu7v6; +always @(posedge HCLK) Pqku07 <= Buu7v6; +always @(posedge HCLK) Nsku07 <= Utu7v6; +always @(posedge HCLK) Luku07 <= Ntu7v6; +always @(posedge HCLK) Jwku07 <= Zsu7v6; +always @(posedge HCLK) Hyku07 <= Ssu7v6; +always @(posedge HCLK) G0lu07 <= Lsu7v6; +always @(posedge HCLK) F2lu07 <= Esu7v6; +always @(posedge HCLK) E4lu07 <= Xru7v6; +always @(posedge HCLK) D6lu07 <= Qru7v6; +always @(posedge HCLK) C8lu07 <= Rfi7v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ualu07 <= 1'b0; + else + Ualu07 <= Mec8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Qclu07 <= 1'b0; + else + Qclu07 <= H8y7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Pelu07 <= 1'b0; + else + Pelu07 <= I5y7v6; + +always @(posedge HCLK) Qglu07 <= Iid8v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Qilu07 <= 1'b0; + else + Qilu07 <= Xfd8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Tklu07 <= 1'b0; + else + Tklu07 <= Egd8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Vmlu07 <= 1'b0; + else + Vmlu07 <= Nqb8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Hqlu07 <= 1'b0; + else + Hqlu07 <= Gqb8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Stlu07 <= 1'b0; + else + Stlu07 <= Zpb8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Exlu07 <= 1'b0; + else + Exlu07 <= Spb8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + P0mu07 <= 1'b0; + else + P0mu07 <= Lpb8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + B4mu07 <= 1'b0; + else + B4mu07 <= Epb8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + M7mu07 <= 1'b0; + else + M7mu07 <= Xob8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Yamu07 <= 1'b0; + else + Yamu07 <= Qob8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Jemu07 <= 1'b0; + else + Jemu07 <= Job8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Vhmu07 <= 1'b0; + else + Vhmu07 <= Cob8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Glmu07 <= 1'b0; + else + Glmu07 <= Vnb8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Somu07 <= 1'b0; + else + Somu07 <= Onb8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Dsmu07 <= 1'b0; + else + Dsmu07 <= Hnb8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Pvmu07 <= 1'b0; + else + Pvmu07 <= Anb8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Azmu07 <= 1'b0; + else + Azmu07 <= Tmb8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + M2nu07 <= 1'b0; + else + M2nu07 <= Mmb8v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + X5nu07 <= 1'b0; + else + X5nu07 <= Lm78v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + U7nu07 <= 1'b0; + else + U7nu07 <= Jt68v6; + +always @(posedge HCLK) W9nu07 <= Tk68v6; +always @(posedge HCLK) Mbnu07 <= Md68v6; +always @(posedge HCLK) Bdnu07 <= K568v6; +always @(posedge HCLK) Qenu07 <= Ix58v6; +always @(posedge HCLK) Fgnu07 <= Gp58v6; +always @(posedge HCLK) Uhnu07 <= Eh58v6; +always @(posedge HCLK) Jjnu07 <= C958v6; +always @(posedge HCLK) Yknu07 <= A158v6; +always @(posedge HCLK) Nmnu07 <= Mt48v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Conu07 <= 1'b0; + else + Conu07 <= Uas7v6; + +always @(posedge HCLK) Frnu07 <= Uz28v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Wtnu07 <= 1'b0; + else + Wtnu07 <= Bbs7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ee9917 <= 1'b0; + else + Ee9917 <= Ixy7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ng9917 <= 1'b0; + else + Ng9917 <= B0p7v6; + +always @(posedge HCLK) Sj9917 <= Nz28v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Jm9917 <= 1'b0; + else + Jm9917 <= Ibs7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Mp9917 <= 1'b0; + else + Mp9917 <= Fzy7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Vr9917 <= 1'b0; + else + Vr9917 <= I0p7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Av9917 <= 1'b0; + else + Av9917 <= Vlk8v6; + +always @(posedge HCLK) Ix9917 <= Zy28v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Zz9917 <= 1'b0; + else + Zz9917 <= Pbk8v6; + +always @(posedge HCLK) I2a917 <= Sy28v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Z4a917 <= 1'b0; + else + Z4a917 <= Dcs7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + C8a917 <= 1'b0; + else + C8a917 <= J1z7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Laa917 <= 1'b0; + else + Laa917 <= Juc8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Hda917 <= 1'b0; + else + Hda917 <= Vtc8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Dga917 <= 1'b0; + else + Dga917 <= Htc8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Zia917 <= 1'b0; + else + Zia917 <= Atc8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Vla917 <= 1'b0; + else + Vla917 <= Tsc8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Roa917 <= 1'b0; + else + Roa917 <= Fsc8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Nra917 <= 1'b0; + else + Nra917 <= Kfi7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Mta917 <= 1'b0; + else + Mta917 <= Dfi7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Mva917 <= 1'b0; + else + Mva917 <= Wei7v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Rxa917 <= 1'b0; + else + Rxa917 <= Jnc8v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Vza917 <= 1'b0; + else + Vza917 <= Rrc8v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Y1b917 <= 1'b0; + else + Y1b917 <= Ykc8v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + W3b917 <= 1'b0; + else + W3b917 <= Pei7v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + X6b917 <= 1'b0; + else + X6b917 <= Flc8v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + A9b917 <= 1'b0; + else + A9b917 <= Krc8v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Dbb917 <= 1'b0; + else + Dbb917 <= Drc8v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Gdb917 <= 1'b0; + else + Gdb917 <= Wqc8v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Jfb917 <= 1'b0; + else + Jfb917 <= Pqc8v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Mhb917 <= 1'b0; + else + Mhb917 <= Iqc8v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Pjb917 <= 1'b0; + else + Pjb917 <= Bqc8v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Slb917 <= 1'b0; + else + Slb917 <= Upc8v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Vnb917 <= 1'b0; + else + Vnb917 <= Npc8v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Ypb917 <= 1'b0; + else + Ypb917 <= Gpc8v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Bsb917 <= 1'b0; + else + Bsb917 <= Zoc8v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Fub917 <= 1'b0; + else + Fub917 <= Soc8v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Jwb917 <= 1'b0; + else + Jwb917 <= Loc8v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Nyb917 <= 1'b0; + else + Nyb917 <= Eoc8v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + R0c917 <= 1'b0; + else + R0c917 <= Xnc8v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + V2c917 <= 1'b0; + else + V2c917 <= Qnc8v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Z4c917 <= 1'b0; + else + Z4c917 <= Cnc8v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + D7c917 <= 1'b0; + else + D7c917 <= Vmc8v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + H9c917 <= 1'b0; + else + H9c917 <= Omc8v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Lbc917 <= 1'b0; + else + Lbc917 <= Hmc8v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Pdc917 <= 1'b0; + else + Pdc917 <= Amc8v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Tfc917 <= 1'b0; + else + Tfc917 <= Tlc8v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Xhc917 <= 1'b0; + else + Xhc917 <= Mlc8v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Bkc917 <= 1'b0; + else + Bkc917 <= Iei7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Slc917 <= 1'b0; + else + Slc917 <= Bei7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Rnc917 <= 1'b0; + else + Rnc917 <= Udi7v6; + +always @(posedge HCLK) Mpc917 <= Ndi7v6; +always @(posedge HCLK) Vrc917 <= Gdi7v6; +always @(posedge HCLK) Muc917 <= Zci7v6; +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Uwc917 <= 1'b0; + else + Uwc917 <= Ty77v6; + +always @(posedge HCLK) Vyc917 <= Sci7v6; +always @(posedge HCLK) N1d917 <= Lci7v6; +always @(posedge HCLK) C4d917 <= Eci7v6; +always @(posedge HCLK) R6d917 <= Xbi7v6; +always @(posedge HCLK) G9d917 <= Qbi7v6; +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Vbd917 <= 1'b1; + else + Vbd917 <= Zu68v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ydd917 <= 1'b0; + else + Ydd917 <= N548v6; + +always @(posedge FCLK) Dgd917 <= Jbi7v6; +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Nid917 <= 1'b0; + else + Nid917 <= Vgx7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Rkd917 <= 1'b0; + else + Rkd917 <= U548v6; + +always @(posedge FCLK) Wmd917 <= Cbi7v6; +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Gpd917 <= 1'b0; + else + Gpd917 <= Yex7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Krd917 <= 1'b0; + else + Krd917 <= Zxymz6[7]; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Rtd917 <= 1'b0; + else + Rtd917 <= B648v6; + +always @(posedge FCLK) Wvd917 <= Vai7v6; +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Gyd917 <= 1'b0; + else + Gyd917 <= Ffx7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + K0e917 <= 1'b0; + else + K0e917 <= Zxymz6[6]; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + R2e917 <= 1'b0; + else + R2e917 <= I648v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + W4e917 <= 1'b0; + else + W4e917 <= Y048v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + V7e917 <= 1'b0; + else + V7e917 <= R048v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Uae917 <= 1'b0; + else + Uae917 <= G548v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Sde917 <= 1'b0; + else + Sde917 <= Z448v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Qge917 <= 1'b0; + else + Qge917 <= C348v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Pje917 <= 1'b0; + else + Pje917 <= V248v6; + +always @(posedge FCLK) Ome917 <= Oai7v6; +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Yoe917 <= 1'b0; + else + Yoe917 <= Mfx7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Cre917 <= 1'b0; + else + Cre917 <= Zxymz6[5]; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Jte917 <= 1'b0; + else + Jte917 <= W648v6; + +always @(posedge FCLK) Ove917 <= Hai7v6; +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Yxe917 <= 1'b0; + else + Yxe917 <= Agx7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + C0f917 <= 1'b0; + else + C0f917 <= K748v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + H2f917 <= 1'b0; + else + H2f917 <= A2x7v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + G5f917 <= 1'b0; + else + G5f917 <= T1x7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + F8f917 <= 1'b0; + else + F8f917 <= I6x7v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Ebf917 <= 1'b0; + else + Ebf917 <= B6x7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Def917 <= 1'b0; + else + Def917 <= Qax7v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Chf917 <= 1'b0; + else + Chf917 <= Jax7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Bkf917 <= 1'b0; + else + Bkf917 <= Dex7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Zmf917 <= 1'b0; + else + Zmf917 <= O0d8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Wof917 <= 1'b0; + else + Wof917 <= Ws38v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Vrf917 <= 1'b0; + else + Vrf917 <= Ps38v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Uuf917 <= 1'b0; + else + Uuf917 <= Av38v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Txf917 <= 1'b0; + else + Txf917 <= Tu38v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + S0g917 <= 1'b0; + else + S0g917 <= Ex38v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + R3g917 <= 1'b0; + else + R3g917 <= Xw38v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Q6g917 <= 1'b0; + else + Q6g917 <= O2x7v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + P9g917 <= 1'b0; + else + P9g917 <= H2x7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ocg917 <= 1'b0; + else + Ocg917 <= W6x7v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Nfg917 <= 1'b0; + else + Nfg917 <= P6x7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Mig917 <= 1'b0; + else + Mig917 <= Ebx7v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Llg917 <= 1'b0; + else + Llg917 <= Xax7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Kog917 <= 1'b0; + else + Kog917 <= S4x7v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Jrg917 <= 1'b0; + else + Jrg917 <= L4x7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Iug917 <= 1'b0; + else + Iug917 <= A9x7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Hxg917 <= 1'b0; + else + Hxg917 <= Idx7v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + F0h917 <= 1'b0; + else + F0h917 <= Bdx7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + D3h917 <= 1'b0; + else + D3h917 <= Y0x7v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + C6h917 <= 1'b0; + else + C6h917 <= R0x7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + B9h917 <= 1'b0; + else + B9h917 <= O9x7v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Ach917 <= 1'b0; + else + Ach917 <= H9x7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Zeh917 <= 1'b0; + else + Zeh917 <= G5x7v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Yhh917 <= 1'b0; + else + Yhh917 <= Z4x7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Xkh917 <= 1'b0; + else + Xkh917 <= Kt38v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Wnh917 <= 1'b0; + else + Wnh917 <= Dt38v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Vqh917 <= 1'b0; + else + Vqh917 <= Ov38v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Uth917 <= 1'b0; + else + Uth917 <= Hv38v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Twh917 <= 1'b0; + else + Twh917 <= Sx38v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Szh917 <= 1'b0; + else + Szh917 <= Lx38v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + R2i917 <= 1'b0; + else + R2i917 <= Q3x7v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Q5i917 <= 1'b0; + else + Q5i917 <= J3x7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + P8i917 <= 1'b0; + else + P8i917 <= Y7x7v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Obi917 <= 1'b0; + else + Obi917 <= R7x7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Nei917 <= 1'b0; + else + Nei917 <= Gcx7v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Mhi917 <= 1'b0; + else + Mhi917 <= Zbx7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Lki917 <= 1'b0; + else + Lki917 <= Ovw7v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Kni917 <= 1'b0; + else + Kni917 <= Hvw7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Jqi917 <= 1'b0; + else + Jqi917 <= Cax7v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Iti917 <= 1'b0; + else + Iti917 <= V9x7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Hwi917 <= 1'b0; + else + Hwi917 <= U5x7v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Gzi917 <= 1'b0; + else + Gzi917 <= N5x7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + F2j917 <= 1'b0; + else + F2j917 <= M1x7v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + E5j917 <= 1'b0; + else + E5j917 <= F1x7v6; + +always @(posedge FCLK) D8j917 <= Aai7v6; +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Naj917 <= 1'b0; + else + Naj917 <= Ogx7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Rcj917 <= 1'b0; + else + Rcj917 <= Cfk8v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Qfj917 <= 1'b0; + else + Qfj917 <= Vek8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Pij917 <= 1'b0; + else + Pij917 <= Egk8v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Olj917 <= 1'b0; + else + Olj917 <= Rtw7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Noj917 <= 1'b0; + else + Noj917 <= Rqk8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Lrj917 <= 1'b0; + else + Lrj917 <= Su68v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Qtj917 <= 1'b0; + else + Qtj917 <= Lu68v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Vvj917 <= 1'b0; + else + Vvj917 <= Eu68v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ayj917 <= 1'b0; + else + Ayj917 <= Xt68v6; + +always @(posedge HCLK) F0k917 <= G2e8v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + G2k917 <= 1'b0; + else + G2k917 <= C0e8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + J4k917 <= 1'b0; + else + J4k917 <= Vzd8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + M6k917 <= 1'b0; + else + M6k917 <= Qgc8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + J8k917 <= 1'b0; + else + J8k917 <= Bsa8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Bck917 <= 1'b0; + else + Bck917 <= Ura8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Nfk917 <= 1'b0; + else + Nfk917 <= Nra8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Fjk917 <= 1'b0; + else + Fjk917 <= Gra8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Rmk917 <= 1'b0; + else + Rmk917 <= Zqa8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Jqk917 <= 1'b0; + else + Jqk917 <= Sqa8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Vtk917 <= 1'b0; + else + Vtk917 <= Lqa8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Nxk917 <= 1'b0; + else + Nxk917 <= Eqa8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Z0l917 <= 1'b0; + else + Z0l917 <= Xpa8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + R4l917 <= 1'b0; + else + R4l917 <= Qpa8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + D8l917 <= 1'b0; + else + D8l917 <= Jpa8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Vbl917 <= 1'b0; + else + Vbl917 <= Cpa8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Hfl917 <= 1'b0; + else + Hfl917 <= Voa8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Zil917 <= 1'b0; + else + Zil917 <= Ooa8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Lml917 <= 1'b0; + else + Lml917 <= Hoa8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Dql917 <= 1'b0; + else + Dql917 <= Aoa8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ptl917 <= 1'b0; + else + Ptl917 <= Fr68v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Svl917 <= 1'b0; + else + Svl917 <= Qxo7v6; + +always @(posedge HCLK) Yyl917 <= Pi68v6; +always @(posedge HCLK) P0m917 <= Ib68v6; +always @(posedge HCLK) F2m917 <= G368v6; +always @(posedge HCLK) V3m917 <= Ev58v6; +always @(posedge HCLK) L5m917 <= Cn58v6; +always @(posedge HCLK) B7m917 <= Af58v6; +always @(posedge HCLK) R8m917 <= Y658v6; +always @(posedge HCLK) Ham917 <= Wy48v6; +always @(posedge HCLK) Xbm917 <= Ir48v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ndm917 <= 1'b0; + else + Ndm917 <= X9y7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Nfm917 <= 1'b0; + else + Nfm917 <= E3y7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Phm917 <= 1'b0; + else + Phm917 <= Pvnet6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Ikm917 <= 1'b0; + else + Ikm917 <= Grw7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Emm917 <= 1'b0; + else + Emm917 <= Xee8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Hom917 <= 1'b0; + else + Hom917 <= Efe8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Lqm917 <= 1'b0; + else + Lqm917 <= Lfe8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Psm917 <= 1'b0; + else + Psm917 <= Sfe8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Tum917 <= 1'b0; + else + Tum917 <= Zfe8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Xwm917 <= 1'b0; + else + Xwm917 <= Gge8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Bzm917 <= 1'b0; + else + Bzm917 <= Nge8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + F1n917 <= 1'b0; + else + F1n917 <= Uge8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + J3n917 <= 1'b0; + else + J3n917 <= Bhe8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + O5n917 <= 1'b0; + else + O5n917 <= Ihe8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + T7n917 <= 1'b0; + else + T7n917 <= Phe8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Y9n917 <= 1'b0; + else + Y9n917 <= Whe8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Dcn917 <= 1'b0; + else + Dcn917 <= Die8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ien917 <= 1'b0; + else + Ien917 <= Kie8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ngn917 <= 1'b0; + else + Ngn917 <= Rie8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Sin917 <= 1'b0; + else + Sin917 <= Yie8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Xkn917 <= 1'b0; + else + Xkn917 <= Qee8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ann917 <= 1'b0; + else + Ann917 <= Jee8v6; + +always @(posedge HCLK) Dpn917 <= J0e8v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ern917 <= 1'b0; + else + Ern917 <= Nic8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Btn917 <= 1'b0; + else + Btn917 <= B0a8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Nwn917 <= 1'b0; + else + Nwn917 <= Uz98v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Zzn917 <= 1'b0; + else + Zzn917 <= Nz98v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + L3o917 <= 1'b0; + else + L3o917 <= Gz98v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + X6o917 <= 1'b0; + else + X6o917 <= Zy98v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Jao917 <= 1'b0; + else + Jao917 <= Sy98v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Vdo917 <= 1'b0; + else + Vdo917 <= Ly98v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Hho917 <= 1'b0; + else + Hho917 <= Ey98v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Tko917 <= 1'b0; + else + Tko917 <= D388v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Vmo917 <= 1'b0; + else + Vmo917 <= I988v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Woo917 <= 1'b0; + else + Woo917 <= B988v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Xqo917 <= 1'b0; + else + Xqo917 <= U888v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Yso917 <= 1'b0; + else + Yso917 <= N888v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Zuo917 <= 1'b0; + else + Zuo917 <= G888v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Axo917 <= 1'b0; + else + Axo917 <= Z788v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Bzo917 <= 1'b0; + else + Bzo917 <= S788v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + C1p917 <= 1'b0; + else + C1p917 <= L788v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + D3p917 <= 1'b0; + else + D3p917 <= E788v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + E5p917 <= 1'b0; + else + E5p917 <= X688v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + F7p917 <= 1'b0; + else + F7p917 <= Q688v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + H9p917 <= 1'b0; + else + H9p917 <= T9i7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Nbp917 <= 1'b0; + else + Nbp917 <= Wv78v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Udp917 <= 1'b0; + else + Udp917 <= Pv78v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Bgp917 <= 1'b0; + else + Bgp917 <= Iv78v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Iip917 <= 1'b0; + else + Iip917 <= Bv78v6; + +always @(posedge FCLK) Pkp917 <= Lwq7v6; +always @(posedge FCLK) Dnp917 <= Uu78v6; +always @(posedge FCLK) Spp917 <= B8v7v6; +always @(posedge FCLK) Bsp917 <= I8v7v6; +always @(posedge FCLK) Kup917 <= P8v7v6; +always @(posedge FCLK) Twp917 <= W8v7v6; +always @(posedge FCLK) Czp917 <= D9v7v6; +always @(posedge FCLK) L1q917 <= K9v7v6; +always @(posedge FCLK) U3q917 <= R9v7v6; +always @(posedge FCLK) D6q917 <= Y9v7v6; +always @(posedge FCLK) M8q917 <= Fav7v6; +always @(posedge FCLK) Vaq917 <= Mav7v6; +always @(posedge FCLK) Edq917 <= Tav7v6; +always @(posedge FCLK) Nfq917 <= Abv7v6; +always @(posedge FCLK) Whq917 <= Hbv7v6; +always @(posedge FCLK) Fkq917 <= Obv7v6; +always @(posedge FCLK) Omq917 <= Vbv7v6; +always @(posedge FCLK) Xoq917 <= Ccv7v6; +always @(posedge FCLK) Grq917 <= Jcv7v6; +always @(posedge FCLK) Ptq917 <= Qcv7v6; +always @(posedge FCLK) Yvq917 <= Xcv7v6; +always @(posedge FCLK) Hyq917 <= Edv7v6; +always @(posedge FCLK) Q0r917 <= Ldv7v6; +always @(posedge FCLK) Z2r917 <= Sdv7v6; +always @(posedge FCLK) I5r917 <= Zdv7v6; +always @(posedge FCLK) Q7r917 <= Gev7v6; +always @(posedge FCLK) Y9r917 <= Nev7v6; +always @(posedge FCLK) Gcr917 <= Uev7v6; +always @(posedge FCLK) Oer917 <= Bfv7v6; +always @(posedge FCLK) Wgr917 <= Ifv7v6; +always @(posedge FCLK) Ejr917 <= Pfv7v6; +always @(posedge FCLK) Mlr917 <= Wfv7v6; +always @(posedge FCLK) Unr917 <= Dgv7v6; +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Cqr917 <= 1'b0; + else + Cqr917 <= J688v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Esr917 <= 1'b0; + else + Esr917 <= C688v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Gur917 <= 1'b0; + else + Gur917 <= V588v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Iwr917 <= 1'b0; + else + Iwr917 <= O588v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Kyr917 <= 1'b0; + else + Kyr917 <= H588v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + M0s917 <= 1'b0; + else + M0s917 <= A588v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + O2s917 <= 1'b0; + else + O2s917 <= T488v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Q4s917 <= 1'b0; + else + Q4s917 <= M488v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + S6s917 <= 1'b0; + else + S6s917 <= F488v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + U8s917 <= 1'b0; + else + U8s917 <= Y388v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Was917 <= 1'b0; + else + Was917 <= R388v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Ycs917 <= 1'b0; + else + Ycs917 <= K388v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Afs917 <= 1'b0; + else + Afs917 <= P288v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Chs917 <= 1'b0; + else + Chs917 <= I288v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Ejs917 <= 1'b0; + else + Ejs917 <= B288v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Gls917 <= 1'b0; + else + Gls917 <= U188v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Ins917 <= 1'b0; + else + Ins917 <= M9i7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Lps917 <= 1'b0; + else + Lps917 <= Dw78v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Krs917 <= 1'b0; + else + Krs917 <= Nbr7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Ats917 <= 1'b0; + else + Ats917 <= Gbr7v6; + +always @(posedge FCLK) Tus917 <= F7r7v6; +always @(posedge FCLK) Qws917 <= O8r7v6; +always @(posedge FCLK) Nys917 <= V8r7v6; +always @(posedge FCLK) K0t917 <= J9r7v6; +always @(posedge FCLK) G2t917 <= Q9r7v6; +always @(posedge FCLK) C4t917 <= X9r7v6; +always @(posedge FCLK) Y5t917 <= Ear7v6; +always @(posedge FCLK) U7t917 <= Lar7v6; +always @(posedge FCLK) Q9t917 <= Sar7v6; +always @(posedge FCLK) Mbt917 <= Zar7v6; +always @(posedge FCLK) Idt917 <= P5r7v6; +always @(posedge FCLK) Fft917 <= I5r7v6; +always @(posedge FCLK) Cht917 <= B5r7v6; +always @(posedge FCLK) Zit917 <= T0r7v6; +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Vkt917 <= 1'b0; + else + Vkt917 <= Boe7v6; + +always @(posedge TRACECLKIN or negedge T0adt6) + if(~T0adt6) + Tmt917 <= 1'b0; + else + Tmt917 <= G1e7v6; + +always @(posedge TRACECLKIN or negedge T0adt6) + if(~T0adt6) + Ipt917 <= 1'b0; + else + Ipt917 <= Cmg7v6; + +always @(posedge TRACECLKIN or negedge T0adt6) + if(~T0adt6) + Xrt917 <= 1'b1; + else + Xrt917 <= Rte7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Qtt917 <= 1'b0; + else + Qtt917 <= I6e7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Bwt917 <= 1'b0; + else + Bwt917 <= Iyf7v6; + +always @(posedge TRACECLKIN or negedge T0adt6) + if(~T0adt6) + Myt917 <= 1'b0; + else + Myt917 <= Zpe7v6; + +always @(posedge TRACECLKIN or negedge T0adt6) + if(~T0adt6) + K0u917 <= 1'b0; + else + K0u917 <= L8l8v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + X2u917 <= 1'b0; + else + X2u917 <= Md1nz6[2]; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + N5u917 <= 1'b0; + else + N5u917 <= X7g7v6; + +always @(posedge TRACECLKIN or negedge T0adt6) + if(~T0adt6) + D8u917 <= 1'b0; + else + D8u917 <= S8l8v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Qau917 <= 1'b0; + else + Qau917 <= Md1nz6[1]; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Gdu917 <= 1'b0; + else + Gdu917 <= L5g7v6; + +always @(posedge TRACECLKIN or negedge T0adt6) + if(~T0adt6) + Wfu917 <= 1'b0; + else + Wfu917 <= Z8l8v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Jiu917 <= 1'b0; + else + Jiu917 <= Md1nz6[0]; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Zku917 <= 1'b0; + else + Zku917 <= Z2g7v6; + +always @(posedge TRACECLKIN or negedge T0adt6) + if(~T0adt6) + Pnu917 <= 1'b0; + else + Pnu917 <= F9i7v6; + +always @(posedge TRACECLKIN or negedge T0adt6) + if(~T0adt6) + Opu917 <= 1'b0; + else + Opu917 <= Y8i7v6; + +always @(posedge TRACECLKIN or negedge T0adt6) + if(~T0adt6) + Mru917 <= 1'b0; + else + Mru917 <= Gpr7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Ktu917 <= 1'b0; + else + Ktu917 <= B5e7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Yvu917 <= 1'b0; + else + Yvu917 <= P0g7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Myu917 <= 1'b0; + else + Myu917 <= Ame7v6; + +always @(posedge TRACECLKIN or negedge T0adt6) + if(~T0adt6) + N0v917 <= 1'b0; + else + N0v917 <= Xzd7v6; + +always @(posedge TRACECLKIN or negedge T0adt6) + if(~T0adt6) + F3v917 <= 1'b0; + else + F3v917 <= Nog7v6; + +always @(posedge TRACECLKIN or negedge T0adt6) + if(~T0adt6) + X5v917 <= 1'b0; + else + X5v917 <= R8i7v6; + +always @(posedge TRACECLKIN or negedge T0adt6) + if(~T0adt6) + R7v917 <= 1'b1; + else + R7v917 <= Zor7v6; + +always @(posedge TRACECLKIN or negedge T0adt6) + if(~T0adt6) + J9v917 <= 1'b0; + else + J9v917 <= K8i7v6; + +always @(posedge TRACECLKIN or negedge T0adt6) + if(~T0adt6) + Ebv917 <= 1'b0; + else + Ebv917 <= Omr7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Rdv917 <= 1'b0; + else + Rdv917 <= Yb1nz6[2]; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Hgv917 <= 1'b0; + else + Hgv917 <= Hfg7v6; + +always @(posedge TRACECLKIN or negedge T0adt6) + if(~T0adt6) + Xiv917 <= 1'b0; + else + Xiv917 <= Vmr7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Klv917 <= 1'b0; + else + Klv917 <= Yb1nz6[1]; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Aov917 <= 1'b0; + else + Aov917 <= Vcg7v6; + +always @(posedge TRACECLKIN or negedge T0adt6) + if(~T0adt6) + Qqv917 <= 1'b0; + else + Qqv917 <= Cnr7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Dtv917 <= 1'b0; + else + Dtv917 <= Yb1nz6[0]; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Tvv917 <= 1'b0; + else + Tvv917 <= Jag7v6; + +always @(posedge TRACECLKIN or negedge T0adt6) + if(~T0adt6) + Jyv917 <= 1'b0; + else + Jyv917 <= Yrr7v6; + +always @(posedge TRACECLKIN or negedge T0adt6) + if(~T0adt6) + J0w917 <= 1'b1; + else + J0w917 <= Rrr7v6; + +always @(posedge TRACECLKIN or negedge T0adt6) + if(~T0adt6) + G2w917 <= 1'b0; + else + G2w917 <= Msr7v6; + +always @(posedge TRACECLKIN or negedge T0adt6) + if(~T0adt6) + G4w917 <= 1'b0; + else + G4w917 <= D8i7v6; + +always @(posedge TRACECLKIN or negedge T0adt6) + if(~T0adt6) + D6w917 <= 1'b0; + else + D6w917 <= W7i7v6; + +always @(posedge TRACECLKIN or negedge T0adt6) + if(~T0adt6) + A8w917 <= 1'b0; + else + A8w917 <= P7i7v6; + +always @(posedge TRACECLKIN or negedge T0adt6) + if(~T0adt6) + X9w917 <= 1'b0; + else + X9w917 <= I7i7v6; + +always @(posedge TRACECLKIN or negedge T0adt6) + if(~T0adt6) + Rbw917 <= 1'b0; + else + Rbw917 <= Pqr7v6; + +always @(posedge TRACECLKIN or negedge T0adt6) + if(~T0adt6) + Ndw917 <= 1'b0; + else + Ndw917 <= Iqr7v6; + +always @(posedge TRACECLKIN or negedge T0adt6) + if(~T0adt6) + Jfw917 <= 1'b0; + else + Jfw917 <= Bqr7v6; + +always @(posedge TRACECLKIN or negedge T0adt6) + if(~T0adt6) + Fhw917 <= 1'b0; + else + Fhw917 <= Upr7v6; + +always @(posedge TRACECLKIN or negedge T0adt6) + if(~T0adt6) + Bjw917 <= 1'b0; + else + Bjw917 <= Npr7v6; + +always @(posedge TRACECLKIN or negedge T0adt6) + if(~T0adt6) + Ykw917 <= 1'b0; + else + Ykw917 <= B7i7v6; + +always @(posedge TRACECLKIN or negedge T0adt6) + if(~T0adt6) + Smw917 <= 1'b0; + else + Smw917 <= Lor7v6; + +always @(posedge TRACECLKIN or negedge T0adt6) + if(~T0adt6) + Pow917 <= 1'b0; + else + Pow917 <= Eor7v6; + +always @(posedge TRACECLKIN or negedge T0adt6) + if(~T0adt6) + Qqw917 <= 1'b0; + else + Qqw917 <= Xnr7v6; + +always @(posedge TRACECLKIN or negedge T0adt6) + if(~T0adt6) + Rsw917 <= 1'b0; + else + Rsw917 <= Qnr7v6; + +always @(posedge TRACECLKIN or negedge T0adt6) + if(~T0adt6) + Suw917 <= 1'b0; + else + Suw917 <= Jnr7v6; + +always @(posedge TRACECLKIN or negedge T0adt6) + if(~T0adt6) + Tww917 <= 1'b0; + else + Tww917 <= U6i7v6; + +always @(posedge TRACECLKIN or negedge T0adt6) + if(~T0adt6) + Oyw917 <= 1'b0; + else + Oyw917 <= Krr7v6; + +always @(posedge TRACECLKIN or negedge T0adt6) + if(~T0adt6) + O0x917 <= 1'b0; + else + O0x917 <= Drr7v6; + +always @(posedge TRACECLKIN or negedge T0adt6) + if(~T0adt6) + O2x917 <= 1'b0; + else + O2x917 <= Fsr7v6; + +always @(posedge TRACECLKIN or negedge T0adt6) + if(~T0adt6) + O4x917 <= 1'b1; + else + O4x917 <= Wqr7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + T6x917 <= 1'b0; + else + T6x917 <= M2e7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + E9x917 <= 1'b0; + else + E9x917 <= Vjg7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Pbx917 <= 1'b0; + else + Pbx917 <= Hmr7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Mdx917 <= 1'b1; + else + Mdx917 <= Pjr7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Efx917 <= 1'b1; + else + Efx917 <= Zhr7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Dhx917 <= 1'b1; + else + Dhx917 <= Gir7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Cjx917 <= 1'b1; + else + Cjx917 <= Nir7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Blx917 <= 1'b1; + else + Blx917 <= Uir7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Anx917 <= 1'b1; + else + Anx917 <= Bjr7v6; + +always @(posedge TRACECLKIN or negedge T0adt6) + if(~T0adt6) + Zox917 <= 1'b0; + else + Zox917 <= N6i7v6; + +always @(posedge TRACECLKIN or negedge T0adt6) + if(~T0adt6) + Wqx917 <= 1'b1; + else + Wqx917 <= Sor7v6; + +always @(posedge TRACECLKIN or negedge T0adt6) + if(~T0adt6) + Osx917 <= 1'b0; + else + Osx917 <= G6i7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Jux917 <= 1'b0; + else + Jux917 <= N188v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Lwx917 <= 1'b0; + else + Lwx917 <= G188v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Nyx917 <= 1'b0; + else + Nyx917 <= Z088v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + P0y917 <= 1'b0; + else + P0y917 <= Mr68v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + S2y917 <= 1'b0; + else + S2y917 <= Tvo7v6; + +always @(posedge HCLK) Y5y917 <= Sg68v6; +always @(posedge HCLK) P7y917 <= L968v6; +always @(posedge HCLK) F9y917 <= J168v6; +always @(posedge HCLK) Vay917 <= Ht58v6; +always @(posedge HCLK) Lcy917 <= Fl58v6; +always @(posedge HCLK) Bey917 <= Dd58v6; +always @(posedge HCLK) Rfy917 <= B558v6; +always @(posedge HCLK) Hhy917 <= Zw48v6; +always @(posedge HCLK) Xiy917 <= Lp48v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Nky917 <= 1'b0; + else + Nky917 <= L3y7v6; + +always @(posedge FCLK) Pmy917 <= E3r7v6; +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Moy917 <= 1'b0; + else + Moy917 <= Ntf8v6; + +always @(posedge SWCLKTCK or negedge Sz9dt6) + if(~Sz9dt6) + Hqy917 <= 1'b0; + else + Hqy917 <= Gtf8v6; + +always @(posedge C3a7z6 or negedge Sz9dt6) + if(~Sz9dt6) + Zry917 <= 1'b0; + else + Zry917 <= Lt57v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Lty917 <= 1'b0; + else + Lty917 <= Jp38v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Ovy917 <= 1'b0; + else + Ovy917 <= Hhw7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Uxy917 <= 1'b0; + else + Uxy917 <= Iew7v6; + +always @(posedge FCLK) A0z917 <= Bew7v6; +always @(posedge FCLK) N2z917 <= Udw7v6; +always @(posedge FCLK) A5z917 <= Ndw7v6; +always @(posedge FCLK) N7z917 <= Zcw7v6; +always @(posedge FCLK) Aaz917 <= Scw7v6; +always @(posedge FCLK) Ncz917 <= Ecw7v6; +always @(posedge FCLK) Afz917 <= Xbw7v6; +always @(posedge FCLK) Nhz917 <= Qbw7v6; +always @(posedge FCLK) Bkz917 <= Jbw7v6; +always @(posedge FCLK) Pmz917 <= Vaw7v6; +always @(posedge FCLK) Dpz917 <= Oaw7v6; +always @(posedge FCLK) Rrz917 <= Aaw7v6; +always @(posedge FCLK) Fuz917 <= T9w7v6; +always @(posedge FCLK) Twz917 <= M9w7v6; +always @(posedge FCLK) Hzz917 <= F9w7v6; +always @(posedge FCLK) V10a17 <= R8w7v6; +always @(posedge FCLK) J40a17 <= K8w7v6; +always @(posedge FCLK) X60a17 <= W7w7v6; +always @(posedge FCLK) L90a17 <= P7w7v6; +always @(posedge FCLK) Zb0a17 <= I7w7v6; +always @(posedge FCLK) Ne0a17 <= B7w7v6; +always @(posedge FCLK) Bh0a17 <= N6w7v6; +always @(posedge FCLK) Pj0a17 <= G6w7v6; +always @(posedge FCLK) Dm0a17 <= Z5w7v6; +always @(posedge FCLK) Qo0a17 <= S5w7v6; +always @(posedge FCLK) Dr0a17 <= L5w7v6; +always @(posedge FCLK) Ot0a17 <= E5w7v6; +always @(posedge FCLK) Bw0a17 <= X4w7v6; +always @(posedge FCLK) Oy0a17 <= Q4w7v6; +always @(posedge HCLK) B11a17 <= Ito7v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + R31a17 <= 1'b0; + else + R31a17 <= Zgddt6; + +always @(posedge HCLK) N61a17 <= C4p7v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + R91a17 <= 1'b0; + else + R91a17 <= Cjo7v6; + +always @(posedge FCLK) Jb1a17 <= U6w7v6; +always @(posedge FCLK) Xd1a17 <= Y8w7v6; +always @(posedge FCLK) Lg1a17 <= Cbw7v6; +always @(posedge FCLK) Zi1a17 <= Gdw7v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ml1a17 <= 1'b0; + else + Ml1a17 <= Wbs7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Po1a17 <= 1'b0; + else + Po1a17 <= Gr38v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Or1a17 <= 1'b0; + else + Or1a17 <= Zq38v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Nu1a17 <= 1'b0; + else + Nu1a17 <= Sq38v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Mx1a17 <= 1'b0; + else + Mx1a17 <= Lq38v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + L02a17 <= 1'b0; + else + L02a17 <= Wzw7v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + K32a17 <= 1'b0; + else + K32a17 <= Pzw7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + J62a17 <= 1'b0; + else + J62a17 <= Uyw7v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + I92a17 <= 1'b0; + else + I92a17 <= Nyw7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Hc2a17 <= 1'b0; + else + Hc2a17 <= Kjk8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Gf2a17 <= 1'b0; + else + Gf2a17 <= Q8s7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ki2a17 <= 1'b0; + else + Ki2a17 <= K0x7v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Jl2a17 <= 1'b0; + else + Jl2a17 <= D0x7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Io2a17 <= 1'b0; + else + Io2a17 <= E4x7v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Hr2a17 <= 1'b0; + else + Hr2a17 <= X3x7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Gu2a17 <= 1'b0; + else + Gu2a17 <= M8x7v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Fx2a17 <= 1'b0; + else + Fx2a17 <= F8x7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + E03a17 <= 1'b0; + else + E03a17 <= Ucx7v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + D33a17 <= 1'b0; + else + D33a17 <= Ncx7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + C63a17 <= 1'b0; + else + C63a17 <= Gy38v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + B93a17 <= 1'b0; + else + B93a17 <= Zx38v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ac3a17 <= 1'b0; + else + Ac3a17 <= K048v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Ze3a17 <= 1'b0; + else + Ze3a17 <= D048v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Yh3a17 <= 1'b0; + else + Yh3a17 <= O248v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Xk3a17 <= 1'b0; + else + Xk3a17 <= H248v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Wn3a17 <= 1'b0; + else + Wn3a17 <= S448v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Vq3a17 <= 1'b0; + else + Vq3a17 <= L448v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ut3a17 <= 1'b0; + else + Ut3a17 <= Izw7v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Tw3a17 <= 1'b0; + else + Tw3a17 <= Bzw7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Sz3a17 <= 1'b0; + else + Sz3a17 <= C3x7v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + R24a17 <= 1'b0; + else + R24a17 <= V2x7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Q54a17 <= 1'b0; + else + Q54a17 <= K7x7v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + P84a17 <= 1'b0; + else + P84a17 <= D7x7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ob4a17 <= 1'b0; + else + Ob4a17 <= Sbx7v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Ne4a17 <= 1'b0; + else + Ne4a17 <= Lbx7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Mh4a17 <= 1'b0; + else + Mh4a17 <= Gyw7v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Lk4a17 <= 1'b0; + else + Lk4a17 <= Zxw7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Kn4a17 <= 1'b0; + else + Kn4a17 <= Wz38v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Jq4a17 <= 1'b0; + else + Jq4a17 <= Pz38v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + It4a17 <= 1'b0; + else + It4a17 <= A248v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Hw4a17 <= 1'b0; + else + Hw4a17 <= T148v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Gz4a17 <= 1'b0; + else + Gz4a17 <= E448v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + F25a17 <= 1'b0; + else + F25a17 <= X348v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + E55a17 <= 1'b0; + else + E55a17 <= Zgk8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + C85a17 <= 1'b0; + else + C85a17 <= Sxw7v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Bb5a17 <= 1'b0; + else + Bb5a17 <= Lxw7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ae5a17 <= 1'b0; + else + Ae5a17 <= Is38v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Zg5a17 <= 1'b0; + else + Zg5a17 <= Bs38v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Yj5a17 <= 1'b0; + else + Yj5a17 <= Qw38v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Xm5a17 <= 1'b0; + else + Xm5a17 <= Mu38v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Wp5a17 <= 1'b0; + else + Wp5a17 <= Fu38v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Vs5a17 <= 1'b0; + else + Vs5a17 <= Exw7v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Uv5a17 <= 1'b0; + else + Uv5a17 <= Xww7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ty5a17 <= 1'b0; + else + Ty5a17 <= Iz38v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + S16a17 <= 1'b0; + else + S16a17 <= Bz38v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + R46a17 <= 1'b0; + else + R46a17 <= Q348v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Q76a17 <= 1'b0; + else + Q76a17 <= J348v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Pa6a17 <= 1'b0; + else + Pa6a17 <= M148v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Od6a17 <= 1'b0; + else + Od6a17 <= F148v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ng6a17 <= 1'b0; + else + Ng6a17 <= Ghk8v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Lj6a17 <= 1'b0; + else + Lj6a17 <= Nhk8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Jm6a17 <= 1'b0; + else + Jm6a17 <= Qww7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ip6a17 <= 1'b0; + else + Ip6a17 <= Ur38v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Hs6a17 <= 1'b0; + else + Hs6a17 <= Nr38v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Gv6a17 <= 1'b0; + else + Gv6a17 <= Yt38v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Fy6a17 <= 1'b0; + else + Fy6a17 <= Rt38v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + E17a17 <= 1'b0; + else + E17a17 <= Wik8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + I37a17 <= 1'b0; + else + I37a17 <= Cw38v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + H67a17 <= 1'b0; + else + H67a17 <= Vv38v6; + +always @(posedge FCLK) G97a17 <= Z5i7v6; +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Qb7a17 <= 1'b0; + else + Qb7a17 <= Hgx7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Ud7a17 <= 1'b0; + else + Ud7a17 <= Zxymz6[4]; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Bg7a17 <= 1'b0; + else + Bg7a17 <= Rwa7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Ei7a17 <= 1'b0; + else + Ei7a17 <= W8zmz6[1]; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Ik7a17 <= 1'b0; + else + Ik7a17 <= Jc87v6; + +always @(posedge HCLK) Gm7a17 <= Jru7v6; +always @(posedge HCLK) Fo7a17 <= Cru7v6; +always @(posedge HCLK) Eq7a17 <= Vqu7v6; +always @(posedge HCLK) Ds7a17 <= Oqu7v6; +always @(posedge HCLK) Cu7a17 <= Hqu7v6; +always @(posedge HCLK) Bw7a17 <= Yxk8v6; +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Zx7a17 <= 1'b0; + else + Zx7a17 <= G287v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Tz7a17 <= 1'b0; + else + Tz7a17 <= T1zmz6[33]; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + B28a17 <= 1'b0; + else + B28a17 <= K9a7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + A48a17 <= 1'b0; + else + A48a17 <= Oga7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + O68a17 <= 1'b0; + else + O68a17 <= Hju7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + O88a17 <= 1'b0; + else + O88a17 <= Aju7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Ma8a17 <= 1'b0; + else + Ma8a17 <= Tiu7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Kc8a17 <= 1'b0; + else + Kc8a17 <= Miu7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Ie8a17 <= 1'b0; + else + Ie8a17 <= Fiu7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Gg8a17 <= 1'b0; + else + Gg8a17 <= Yhu7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Ei8a17 <= 1'b0; + else + Ei8a17 <= Wgu7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Ck8a17 <= 1'b0; + else + Ck8a17 <= Dhu7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Am8a17 <= 1'b0; + else + Am8a17 <= Pgu7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Yn8a17 <= 1'b0; + else + Yn8a17 <= Khu7v6; + +always @(posedge HCLK) Wp8a17 <= Oha7z6; +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Nr8a17 <= 1'b0; + else + Nr8a17 <= Igu7v6; + +always @(posedge HCLK) Mt8a17 <= Gha7z6; +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Dv8a17 <= 1'b0; + else + Dv8a17 <= Bgu7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Cx8a17 <= 1'b0; + else + Cx8a17 <= T1zmz6[32]; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Kz8a17 <= 1'b0; + else + Kz8a17 <= Qea7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + M19a17 <= 1'b0; + else + M19a17 <= Ufu7v6; + +always @(posedge HCLK) L39a17 <= Acu7v6; +always @(posedge HCLK) I59a17 <= P9u7v6; +always @(posedge HCLK) F79a17 <= Hcu7v6; +always @(posedge HCLK) C99a17 <= W9u7v6; +always @(posedge HCLK) Za9a17 <= Mho7v6; +always @(posedge HCLK) Qc9a17 <= Rbt7v6; +always @(posedge HCLK) Ne9a17 <= Ybt7v6; +always @(posedge HCLK) Kg9a17 <= Fct7v6; +always @(posedge HCLK) Hi9a17 <= N1u7v6; +always @(posedge HCLK) Ek9a17 <= U1u7v6; +always @(posedge HCLK) Bm9a17 <= B2u7v6; +always @(posedge HCLK) Yn9a17 <= Pot7v6; +always @(posedge HCLK) Vp9a17 <= Wot7v6; +always @(posedge HCLK) Sr9a17 <= Dpt7v6; +always @(posedge HCLK) Pt9a17 <= Leu7v6; +always @(posedge HCLK) Mv9a17 <= Seu7v6; +always @(posedge HCLK) Jx9a17 <= Zeu7v6; +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Gz9a17 <= 1'b0; + else + Gz9a17 <= Zxymz6[3]; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + N1aa17 <= 1'b0; + else + N1aa17 <= Zxymz6[0]; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + U3aa17 <= 1'b0; + else + U3aa17 <= Zxymz6[1]; + +always @(posedge HCLK) B6aa17 <= P3t7v6; +always @(posedge HCLK) Y7aa17 <= W3t7v6; +always @(posedge HCLK) V9aa17 <= D4t7v6; +always @(posedge HCLK) Sbaa17 <= Ltt7v6; +always @(posedge HCLK) Pdaa17 <= Stt7v6; +always @(posedge HCLK) Mfaa17 <= Ztt7v6; +always @(posedge HCLK) Jhaa17 <= Bat7v6; +always @(posedge HCLK) Gjaa17 <= Iat7v6; +always @(posedge HCLK) Dlaa17 <= Pat7v6; +always @(posedge HCLK) Anaa17 <= Xzt7v6; +always @(posedge HCLK) Xoaa17 <= E0u7v6; +always @(posedge HCLK) Uqaa17 <= L0u7v6; +always @(posedge HCLK) Rsaa17 <= Ngt7v6; +always @(posedge HCLK) Ouaa17 <= Ugt7v6; +always @(posedge HCLK) Lwaa17 <= Bht7v6; +always @(posedge HCLK) Iyaa17 <= J6u7v6; +always @(posedge HCLK) F0ba17 <= Q6u7v6; +always @(posedge HCLK) C2ba17 <= X6u7v6; +always @(posedge HCLK) Z3ba17 <= Zmt7v6; +always @(posedge HCLK) W5ba17 <= Gnt7v6; +always @(posedge HCLK) T7ba17 <= Nnt7v6; +always @(posedge HCLK) Q9ba17 <= Vcu7v6; +always @(posedge HCLK) Nbba17 <= Cdu7v6; +always @(posedge HCLK) Kdba17 <= Jdu7v6; +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Hfba17 <= 1'b0; + else + Hfba17 <= Zxymz6[2]; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ohba17 <= 1'b0; + else + Ohba17 <= Gas7v6; + +always @(posedge FCLK) Skba17 <= J2r7v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Pmba17 <= 1'b0; + else + Pmba17 <= C8s7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Tpba17 <= 1'b0; + else + Tpba17 <= Svr7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Rrba17 <= 1'b0; + else + Rrba17 <= Tsr7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Ptba17 <= 1'b0; + else + Ptba17 <= Nvk8v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Pvba17 <= 1'b0; + else + Pvba17 <= Gvk8v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Pxba17 <= 1'b0; + else + Pxba17 <= T1zmz6[30]; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Xzba17 <= 1'b0; + else + Xzba17 <= T1zmz6[22]; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + F2ca17 <= 1'b0; + else + F2ca17 <= T1zmz6[14]; + +always @(posedge HCLK) N4ca17 <= U2t7v6; +always @(posedge HCLK) K6ca17 <= B3t7v6; +always @(posedge HCLK) H8ca17 <= I3t7v6; +always @(posedge HCLK) Eaca17 <= Qst7v6; +always @(posedge HCLK) Bcca17 <= Xst7v6; +always @(posedge HCLK) Ydca17 <= Ett7v6; +always @(posedge HCLK) Vfca17 <= G9t7v6; +always @(posedge HCLK) Shca17 <= N9t7v6; +always @(posedge HCLK) Pjca17 <= U9t7v6; +always @(posedge HCLK) Mlca17 <= Czt7v6; +always @(posedge HCLK) Jnca17 <= Jzt7v6; +always @(posedge HCLK) Gpca17 <= Qzt7v6; +always @(posedge HCLK) Drca17 <= Sft7v6; +always @(posedge HCLK) Atca17 <= Zft7v6; +always @(posedge HCLK) Xuca17 <= Ggt7v6; +always @(posedge HCLK) Uwca17 <= O5u7v6; +always @(posedge HCLK) Ryca17 <= V5u7v6; +always @(posedge HCLK) O0da17 <= C6u7v6; +always @(posedge HCLK) L2da17 <= Emt7v6; +always @(posedge HCLK) I4da17 <= Lmt7v6; +always @(posedge HCLK) F6da17 <= Smt7v6; +always @(posedge HCLK) C8da17 <= K4t7v6; +always @(posedge HCLK) Z9da17 <= R4t7v6; +always @(posedge HCLK) Wbda17 <= Y4t7v6; +always @(posedge HCLK) Tdda17 <= Gut7v6; +always @(posedge HCLK) Qfda17 <= Nut7v6; +always @(posedge HCLK) Nhda17 <= Uut7v6; +always @(posedge HCLK) Kjda17 <= Wat7v6; +always @(posedge HCLK) Hlda17 <= Dbt7v6; +always @(posedge HCLK) Enda17 <= Kbt7v6; +always @(posedge HCLK) Bpda17 <= S0u7v6; +always @(posedge HCLK) Yqda17 <= Z0u7v6; +always @(posedge HCLK) Vsda17 <= G1u7v6; +always @(posedge HCLK) Suda17 <= Iht7v6; +always @(posedge HCLK) Pwda17 <= Pht7v6; +always @(posedge HCLK) Myda17 <= Wht7v6; +always @(posedge HCLK) J0ea17 <= E7u7v6; +always @(posedge HCLK) G2ea17 <= L7u7v6; +always @(posedge HCLK) D4ea17 <= S7u7v6; +always @(posedge HCLK) A6ea17 <= Unt7v6; +always @(posedge HCLK) X7ea17 <= Bot7v6; +always @(posedge HCLK) U9ea17 <= Iot7v6; +always @(posedge HCLK) Rbea17 <= Qdu7v6; +always @(posedge HCLK) Odea17 <= Xdu7v6; +always @(posedge HCLK) Lfea17 <= Eeu7v6; +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Ihea17 <= 1'b0; + else + Ihea17 <= E2s7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Djea17 <= 1'b0; + else + Djea17 <= X1s7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Blea17 <= 1'b0; + else + Blea17 <= Tzr7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Zmea17 <= 1'b0; + else + Zmea17 <= Pxr7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Xoea17 <= 1'b0; + else + Xoea17 <= Pfo7v6; + +always @(posedge HCLK) Xqea17 <= F787v6; +always @(posedge HCLK) Tsea17 <= F9p7v6; +always @(posedge HCLK) Wvea17 <= Pis7v6; +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Kyea17 <= 1'b0; + else + Kyea17 <= Aes7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + J1fa17 <= 1'b0; + else + J1fa17 <= Mds7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + I4fa17 <= 1'b0; + else + I4fa17 <= Tds7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + H7fa17 <= 1'b0; + else + H7fa17 <= Kzb8v6; + +always @(posedge FCLK) Uafa17 <= Jz78v6; +always @(posedge FCLK) Bdfa17 <= L088v6; +always @(posedge FCLK) Iffa17 <= E088v6; +always @(posedge FCLK) Phfa17 <= Xz78v6; +always @(posedge FCLK) Wjfa17 <= Qz78v6; +always @(posedge FCLK) Dmfa17 <= Cz78v6; +always @(posedge FCLK) Kofa17 <= Vy78v6; +always @(posedge FCLK) Rqfa17 <= Oy78v6; +always @(posedge FCLK) Ysfa17 <= Swq7v6; +always @(posedge FCLK) Mvfa17 <= Fx78v6; +always @(posedge FCLK) Uxfa17 <= Ay78v6; +always @(posedge FCLK) C0ga17 <= Tx78v6; +always @(posedge FCLK) K2ga17 <= Mx78v6; +always @(posedge FCLK) S4ga17 <= Yw78v6; +always @(posedge FCLK) A7ga17 <= Rw78v6; +always @(posedge FCLK) I9ga17 <= Kw78v6; +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Qbga17 <= 1'b0; + else + Qbga17 <= Jl78v6; + +always @(posedge HCLK) Ndga17 <= Oe68v6; +always @(posedge HCLK) Cfga17 <= M668v6; +always @(posedge HCLK) Rgga17 <= Ky58v6; +always @(posedge HCLK) Giga17 <= Iq58v6; +always @(posedge HCLK) Vjga17 <= Gi58v6; +always @(posedge HCLK) Klga17 <= Ea58v6; +always @(posedge HCLK) Zmga17 <= C258v6; +always @(posedge HCLK) Ooga17 <= Ou48v6; +always @(posedge FCLK) Dqga17 <= Jjv7v6; +always @(posedge FCLK) Jsga17 <= Fhv7v6; +always @(posedge FCLK) Puga17 <= H8r7v6; +always @(posedge HCLK) Mwga17 <= S5i7v6; +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Bzga17 <= 1'b0; + else + Bzga17 <= Phd7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + V0ha17 <= 1'b0; + else + V0ha17 <= Mwu7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + V2ha17 <= 1'b0; + else + V2ha17 <= Byx7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + X5ha17 <= 1'b0; + else + X5ha17 <= Uxx7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Z8ha17 <= 1'b0; + else + Z8ha17 <= Azs7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Qbha17 <= 1'b0; + else + Qbha17 <= Yck8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ieha17 <= 1'b0; + else + Ieha17 <= Iri8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ahha17 <= 1'b0; + else + Ahha17 <= Ksi8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Sjha17 <= 1'b0; + else + Sjha17 <= Uqi8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Omha17 <= 1'b0; + else + Omha17 <= Pri8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Gpha17 <= 1'b0; + else + Gpha17 <= Wri8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Yrha17 <= 1'b0; + else + Yrha17 <= Dsi8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Quha17 <= 1'b0; + else + Quha17 <= Bri8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Mxha17 <= 1'b0; + else + Mxha17 <= Rm38v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + L0ia17 <= 1'b0; + else + L0ia17 <= Ym38v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + K3ia17 <= 1'b0; + else + K3ia17 <= Fn38v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + J6ia17 <= 1'b0; + else + J6ia17 <= Mn38v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + I9ia17 <= 1'b0; + else + I9ia17 <= Tn38v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Hcia17 <= 1'b0; + else + Hcia17 <= Ao38v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Gfia17 <= 1'b0; + else + Gfia17 <= Oo38v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Fiia17 <= 1'b0; + else + Fiia17 <= Ho38v6; + +always @(posedge HCLK) Elia17 <= Lfl8v6; +always @(posedge HCLK) Ynia17 <= Fg38v6; +always @(posedge HCLK) Sqia17 <= Yf38v6; +always @(posedge HCLK) Ntia17 <= Rf38v6; +always @(posedge HCLK) Iwia17 <= Kf38v6; +always @(posedge HCLK) Dzia17 <= Df38v6; +always @(posedge HCLK) Y1ja17 <= We38v6; +always @(posedge HCLK) T4ja17 <= Pe38v6; +always @(posedge HCLK) O7ja17 <= Ie38v6; +always @(posedge HCLK) Jaja17 <= Mdk8v6; +always @(posedge HCLK) Hdja17 <= Msy7v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Fgja17 <= 1'b0; + else + Fgja17 <= C1d8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ejja17 <= 1'b0; + else + Ejja17 <= Cmk8v6; + +always @(posedge HCLK) Mlja17 <= C1z7v6; +always @(posedge HCLK) Vnja17 <= Pxy7v6; +always @(posedge HCLK) Sqja17 <= Sqw7v6; +always @(posedge HCLK) Ptja17 <= Jny7v6; +always @(posedge HCLK) Mwja17 <= Rry7v6; +always @(posedge HCLK) Jzja17 <= Yry7v6; +always @(posedge HCLK) G2ka17 <= Fsy7v6; +always @(posedge HCLK) D5ka17 <= Aty7v6; +always @(posedge HCLK) A8ka17 <= Vty7v6; +always @(posedge HCLK) Xaka17 <= Juy7v6; +always @(posedge HCLK) Vdka17 <= Upy7v6; +always @(posedge HCLK) Tgka17 <= Bqy7v6; +always @(posedge HCLK) Qjka17 <= Iqy7v6; +always @(posedge HCLK) Nmka17 <= Cny7v6; +always @(posedge HCLK) Lpka17 <= Wqy7v6; +always @(posedge HCLK) Jska17 <= Kry7v6; +always @(posedge HCLK) Hvka17 <= Tsy7v6; +always @(posedge HCLK) Fyka17 <= Oty7v6; +always @(posedge HCLK) D1la17 <= Pqy7v6; +always @(posedge HCLK) B4la17 <= Vmy7v6; +always @(posedge HCLK) Z6la17 <= Dry7v6; +always @(posedge HCLK) X9la17 <= Evy7v6; +always @(posedge HCLK) Vcla17 <= Hty7v6; +always @(posedge HCLK) Tfla17 <= Cuy7v6; +always @(posedge HCLK) Rila17 <= Npy7v6; +always @(posedge HCLK) Plla17 <= Uwy7v6; +always @(posedge HCLK) Nola17 <= Bxy7v6; +always @(posedge HCLK) Lrla17 <= Dck8v6; +always @(posedge HCLK) Jula17 <= Quy7v6; +always @(posedge HCLK) Hxla17 <= Xuy7v6; +always @(posedge HCLK) F0ma17 <= Njx7v6; +always @(posedge HCLK) Z2ma17 <= Gjx7v6; +always @(posedge HCLK) T5ma17 <= Zix7v6; +always @(posedge HCLK) N8ma17 <= Six7v6; +always @(posedge HCLK) Ibma17 <= Lix7v6; +always @(posedge HCLK) Dema17 <= Eix7v6; +always @(posedge HCLK) Ygma17 <= Xhx7v6; +always @(posedge HCLK) Tjma17 <= Qhx7v6; +always @(posedge HCLK) Omma17 <= Jhx7v6; +always @(posedge HCLK) Jpma17 <= Rck8v6; +always @(posedge HCLK) Gsma17 <= Eii8v6; +always @(posedge HCLK) Dvma17 <= Lii8v6; +always @(posedge HCLK) Ayma17 <= Sii8v6; +always @(posedge HCLK) X0na17 <= Zii8v6; +always @(posedge HCLK) U3na17 <= Gji8v6; +always @(posedge HCLK) R6na17 <= Nji8v6; +always @(posedge HCLK) O9na17 <= Uji8v6; +always @(posedge HCLK) Lcna17 <= Bki8v6; +always @(posedge HCLK) Ifna17 <= Iki8v6; +always @(posedge HCLK) Fina17 <= Pki8v6; +always @(posedge HCLK) Dlna17 <= Wki8v6; +always @(posedge HCLK) Bona17 <= Dli8v6; +always @(posedge HCLK) Zqna17 <= Kli8v6; +always @(posedge HCLK) Xtna17 <= Rli8v6; +always @(posedge HCLK) Vwna17 <= Yli8v6; +always @(posedge HCLK) Tzna17 <= Fmi8v6; +always @(posedge HCLK) R2oa17 <= Mmi8v6; +always @(posedge HCLK) P5oa17 <= Tmi8v6; +always @(posedge HCLK) N8oa17 <= Ani8v6; +always @(posedge HCLK) Lboa17 <= Hni8v6; +always @(posedge HCLK) Jeoa17 <= Oni8v6; +always @(posedge HCLK) Hhoa17 <= Vni8v6; +always @(posedge HCLK) Fkoa17 <= Coi8v6; +always @(posedge HCLK) Dnoa17 <= Joi8v6; +always @(posedge HCLK) Bqoa17 <= Qoi8v6; +always @(posedge HCLK) Zsoa17 <= Xoi8v6; +always @(posedge HCLK) Xvoa17 <= Epi8v6; +always @(posedge HCLK) Vyoa17 <= Lpi8v6; +always @(posedge HCLK) T1pa17 <= Wbk8v6; +always @(posedge HCLK) R4pa17 <= Ydy7v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + O7pa17 <= 1'b0; + else + O7pa17 <= Okl8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Oapa17 <= 1'b0; + else + Oapa17 <= P0p7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Tdpa17 <= 1'b0; + else + Tdpa17 <= Lnk8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Agpa17 <= 1'b0; + else + Agpa17 <= Gxx7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Kipa17 <= 1'b0; + else + Kipa17 <= Lwx7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ukpa17 <= 1'b0; + else + Ukpa17 <= Swx7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Enpa17 <= 1'b0; + else + Enpa17 <= Nxx7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Oppa17 <= 1'b0; + else + Oppa17 <= Tuw7v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Mspa17 <= 1'b0; + else + Mspa17 <= Avw7v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Kvpa17 <= 1'b0; + else + Kvpa17 <= S1get6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Pxpa17 <= 1'b0; + else + Pxpa17 <= Xai8v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + M0qa17 <= 1'b0; + else + M0qa17 <= Nlv7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + O2qa17 <= 1'b0; + else + O2qa17 <= Bve8v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + G4qa17 <= 1'b0; + else + G4qa17 <= Q7l8v6; + +always @(posedge FCLK) I6qa17 <= Glv7v6; +always @(posedge FCLK) S8qa17 <= Zkv7v6; +always @(posedge FCLK) Jbqa17 <= Skv7v6; +always @(posedge FCLK) Aeqa17 <= U7v7v6; +always @(posedge FCLK) Lgqa17 <= N7v7v6; +always @(posedge FCLK) Wiqa17 <= G7v7v6; +always @(posedge FCLK) Hlqa17 <= Z6v7v6; +always @(posedge FCLK) Snqa17 <= S6v7v6; +always @(posedge FCLK) Dqqa17 <= L6v7v6; +always @(posedge FCLK) Osqa17 <= E6v7v6; +always @(posedge FCLK) Zuqa17 <= X5v7v6; +always @(posedge FCLK) Kxqa17 <= Q5v7v6; +always @(posedge FCLK) Vzqa17 <= J5v7v6; +always @(posedge FCLK) G2ra17 <= C5v7v6; +always @(posedge FCLK) S4ra17 <= V4v7v6; +always @(posedge FCLK) E7ra17 <= O4v7v6; +always @(posedge FCLK) Q9ra17 <= H4v7v6; +always @(posedge FCLK) Ccra17 <= A4v7v6; +always @(posedge FCLK) Oera17 <= T3v7v6; +always @(posedge FCLK) Ahra17 <= M3v7v6; +always @(posedge FCLK) Mjra17 <= F3v7v6; +always @(posedge FCLK) Ylra17 <= Y2v7v6; +always @(posedge FCLK) Kora17 <= R2v7v6; +always @(posedge FCLK) Wqra17 <= K2v7v6; +always @(posedge FCLK) Itra17 <= D2v7v6; +always @(posedge FCLK) Uvra17 <= W1v7v6; +always @(posedge FCLK) Gyra17 <= P1v7v6; +always @(posedge FCLK) S0sa17 <= I1v7v6; +always @(posedge FCLK) E3sa17 <= B1v7v6; +always @(posedge FCLK) Q5sa17 <= U0v7v6; +always @(posedge FCLK) C8sa17 <= N0v7v6; +always @(posedge FCLK) Oasa17 <= G0v7v6; +always @(posedge FCLK) Adsa17 <= Zzu7v6; +always @(posedge FCLK) Mfsa17 <= Szu7v6; +always @(posedge FCLK) Yhsa17 <= Lzu7v6; +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Kksa17 <= 1'b0; + else + Kksa17 <= Yzq7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Rnsa17 <= 1'b0; + else + Rnsa17 <= Wyq7v6; + +always @(posedge FCLK) Arsa17 <= Shr7v6; +always @(posedge FCLK) Tssa17 <= Xgr7v6; +always @(posedge FCLK) Musa17 <= Qgr7v6; +always @(posedge FCLK) Fwsa17 <= Jgr7v6; +always @(posedge FCLK) Yxsa17 <= Cgr7v6; +always @(posedge FCLK) Rzsa17 <= Vfr7v6; +always @(posedge FCLK) K1ta17 <= Ofr7v6; +always @(posedge FCLK) D3ta17 <= Hfr7v6; +always @(posedge FCLK) W4ta17 <= Afr7v6; +always @(posedge FCLK) P6ta17 <= Ter7v6; +always @(posedge FCLK) I8ta17 <= Mer7v6; +always @(posedge FCLK) Cata17 <= Fer7v6; +always @(posedge FCLK) Wbta17 <= Ydr7v6; +always @(posedge FCLK) Qdta17 <= Rdr7v6; +always @(posedge FCLK) Kfta17 <= Kdr7v6; +always @(posedge FCLK) Ehta17 <= Ddr7v6; +always @(posedge FCLK) Yita17 <= Wcr7v6; +always @(posedge FCLK) Skta17 <= Pcr7v6; +always @(posedge FCLK) Mmta17 <= Icr7v6; +always @(posedge FCLK) Gota17 <= Lhr7v6; +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Aqta17 <= 1'b1; + else + Aqta17 <= Mup7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Trta17 <= 1'b0; + else + Trta17 <= Fho7v6; + +always @(posedge FCLK) Qtta17 <= D7q7v6; +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Ivta17 <= 1'b0; + else + Ivta17 <= W6q7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Bxta17 <= 1'b0; + else + Bxta17 <= Fcl8v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Yyta17 <= 1'b0; + else + Yyta17 <= D847v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Q0ua17 <= 1'b0; + else + Q0ua17 <= L5i7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + L2ua17 <= 1'b0; + else + L2ua17 <= E5i7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + H4ua17 <= 1'b0; + else + H4ua17 <= X4i7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + D6ua17 <= 1'b0; + else + D6ua17 <= Q4i7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Z7ua17 <= 1'b0; + else + Z7ua17 <= J4i7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + V9ua17 <= 1'b0; + else + V9ua17 <= C4i7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Rbua17 <= 1'b0; + else + Rbua17 <= V3i7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Ndua17 <= 1'b0; + else + Ndua17 <= O3i7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Jfua17 <= 1'b0; + else + Jfua17 <= H3i7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Fhua17 <= 1'b0; + else + Fhua17 <= A3i7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Bjua17 <= 1'b0; + else + Bjua17 <= T2i7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Xkua17 <= 1'b0; + else + Xkua17 <= M2i7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Tmua17 <= 1'b0; + else + Tmua17 <= F2i7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Poua17 <= 1'b0; + else + Poua17 <= Y1i7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Lqua17 <= 1'b0; + else + Lqua17 <= R1i7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Hsua17 <= 1'b0; + else + Hsua17 <= K1i7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Duua17 <= 1'b0; + else + Duua17 <= D1i7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Zvua17 <= 1'b0; + else + Zvua17 <= W0i7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Vxua17 <= 1'b0; + else + Vxua17 <= P0i7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Rzua17 <= 1'b0; + else + Rzua17 <= I0i7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + N1va17 <= 1'b0; + else + N1va17 <= B0i7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + J3va17 <= 1'b0; + else + J3va17 <= Uzh7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + F5va17 <= 1'b0; + else + F5va17 <= Nzh7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + B7va17 <= 1'b0; + else + B7va17 <= Gzh7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + X8va17 <= 1'b0; + else + X8va17 <= Zyh7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Tava17 <= 1'b0; + else + Tava17 <= Syh7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Pcva17 <= 1'b0; + else + Pcva17 <= Lyh7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Leva17 <= 1'b0; + else + Leva17 <= Eyh7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Hgva17 <= 1'b0; + else + Hgva17 <= Xxh7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Diva17 <= 1'b0; + else + Diva17 <= Qxh7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Zjva17 <= 1'b0; + else + Zjva17 <= Jxh7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Vlva17 <= 1'b0; + else + Vlva17 <= Cxh7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Rnva17 <= 1'b0; + else + Rnva17 <= Vwh7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Npva17 <= 1'b0; + else + Npva17 <= Owh7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Jrva17 <= 1'b0; + else + Jrva17 <= Hwh7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Ftva17 <= 1'b0; + else + Ftva17 <= Awh7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Bvva17 <= 1'b0; + else + Bvva17 <= Tvh7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Xwva17 <= 1'b0; + else + Xwva17 <= Mvh7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Tyva17 <= 1'b0; + else + Tyva17 <= Fvh7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + P0wa17 <= 1'b0; + else + P0wa17 <= Yuh7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + K2wa17 <= 1'b0; + else + K2wa17 <= Ruh7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + F4wa17 <= 1'b0; + else + F4wa17 <= Kuh7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + A6wa17 <= 1'b0; + else + A6wa17 <= Duh7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + V7wa17 <= 1'b0; + else + V7wa17 <= Wth7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Q9wa17 <= 1'b0; + else + Q9wa17 <= Pth7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Lbwa17 <= 1'b0; + else + Lbwa17 <= Ith7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Gdwa17 <= 1'b0; + else + Gdwa17 <= Bth7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Bfwa17 <= 1'b0; + else + Bfwa17 <= Ush7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Wgwa17 <= 1'b0; + else + Wgwa17 <= X447v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Oiwa17 <= 1'b0; + else + Oiwa17 <= I6q7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Mkwa17 <= 1'b0; + else + Mkwa17 <= P6q7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Kmwa17 <= 1'b0; + else + Kmwa17 <= Rbl8v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Iowa17 <= 1'b0; + else + Iowa17 <= Mcl8v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Fqwa17 <= 1'b0; + else + Fqwa17 <= B6q7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Wrwa17 <= 1'b0; + else + Wrwa17 <= Yfp7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Utwa17 <= 1'b0; + else + Utwa17 <= Fgp7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Svwa17 <= 1'b0; + else + Svwa17 <= Mgp7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Qxwa17 <= 1'b0; + else + Qxwa17 <= Tgp7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Ozwa17 <= 1'b1; + else + Ozwa17 <= K7q7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + K1xa17 <= 1'b0; + else + K1xa17 <= Ewq7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + M4xa17 <= 1'b0; + else + M4xa17 <= R7q7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + O7xa17 <= 1'b0; + else + O7xa17 <= Kzq7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Vaxa17 <= 1'b0; + else + Vaxa17 <= Dzq7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Cexa17 <= 1'b0; + else + Cexa17 <= Rzq7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Jhxa17 <= 1'b0; + else + Jhxa17 <= Pyq7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Skxa17 <= 1'b0; + else + Skxa17 <= Ksq7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Knxa17 <= 1'b0; + else + Knxa17 <= Dsq7v6; + +always @(posedge FCLK) Cqxa17 <= Psp7v6; +always @(posedge FCLK) Nsxa17 <= Isp7v6; +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Yuxa17 <= 1'b0; + else + Yuxa17 <= Huq7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Qxxa17 <= 1'b0; + else + Qxxa17 <= Auq7v6; + +always @(posedge FCLK) I0ya17 <= Zqp7v6; +always @(posedge FCLK) T2ya17 <= Mmq7v6; +always @(posedge FCLK) E5ya17 <= Siq7v6; +always @(posedge FCLK) P7ya17 <= Ebq7v6; +always @(posedge FCLK) Aaya17 <= Sqp7v6; +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Lcya17 <= 1'b0; + else + Lcya17 <= Ttq7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Dfya17 <= 1'b0; + else + Dfya17 <= Mtq7v6; + +always @(posedge FCLK) Vhya17 <= Urp7v6; +always @(posedge FCLK) Gkya17 <= Nrp7v6; +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Rmya17 <= 1'b0; + else + Rmya17 <= Byq7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Vpya17 <= 1'b0; + else + Vpya17 <= Zvr7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Trya17 <= 1'b0; + else + Trya17 <= Atr7v6; + +always @(posedge HCLK) Rtya17 <= Z1t7v6; +always @(posedge HCLK) Ovya17 <= G2t7v6; +always @(posedge HCLK) Lxya17 <= N2t7v6; +always @(posedge HCLK) Izya17 <= Vrt7v6; +always @(posedge HCLK) F1za17 <= Cst7v6; +always @(posedge HCLK) C3za17 <= Jst7v6; +always @(posedge HCLK) Z4za17 <= Xet7v6; +always @(posedge HCLK) W6za17 <= Eft7v6; +always @(posedge HCLK) T8za17 <= Lft7v6; +always @(posedge HCLK) Qaza17 <= T4u7v6; +always @(posedge HCLK) Ncza17 <= A5u7v6; +always @(posedge HCLK) Keza17 <= H5u7v6; +always @(posedge HCLK) Hgza17 <= L8t7v6; +always @(posedge HCLK) Eiza17 <= S8t7v6; +always @(posedge HCLK) Bkza17 <= Z8t7v6; +always @(posedge HCLK) Ylza17 <= Hyt7v6; +always @(posedge HCLK) Vnza17 <= Oyt7v6; +always @(posedge HCLK) Spza17 <= Vyt7v6; +always @(posedge HCLK) Prza17 <= Jlt7v6; +always @(posedge HCLK) Mtza17 <= Qlt7v6; +always @(posedge HCLK) Jvza17 <= Xlt7v6; +always @(posedge HCLK) Gxza17 <= Fbu7v6; +always @(posedge HCLK) Dzza17 <= Mbu7v6; +always @(posedge HCLK) A10b17 <= Tbu7v6; +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + X20b17 <= 1'b0; + else + X20b17 <= Z2s7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + S40b17 <= 1'b0; + else + S40b17 <= O0s7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Q60b17 <= 1'b0; + else + Q60b17 <= Kyr7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + O80b17 <= 1'b0; + else + O80b17 <= Gwr7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Ma0b17 <= 1'b0; + else + Ma0b17 <= Htr7v6; + +always @(posedge HCLK) Kc0b17 <= J0t7v6; +always @(posedge HCLK) He0b17 <= Q0t7v6; +always @(posedge HCLK) Eg0b17 <= X0t7v6; +always @(posedge HCLK) Bi0b17 <= Fqt7v6; +always @(posedge HCLK) Yj0b17 <= Mqt7v6; +always @(posedge HCLK) Vl0b17 <= Tqt7v6; +always @(posedge HCLK) Sn0b17 <= V6t7v6; +always @(posedge HCLK) Pp0b17 <= C7t7v6; +always @(posedge HCLK) Mr0b17 <= J7t7v6; +always @(posedge HCLK) Jt0b17 <= Rwt7v6; +always @(posedge HCLK) Gv0b17 <= Ywt7v6; +always @(posedge HCLK) Dx0b17 <= Fxt7v6; +always @(posedge HCLK) Az0b17 <= Hdt7v6; +always @(posedge HCLK) X01b17 <= Odt7v6; +always @(posedge HCLK) U21b17 <= Vdt7v6; +always @(posedge HCLK) R41b17 <= D3u7v6; +always @(posedge HCLK) O61b17 <= K3u7v6; +always @(posedge HCLK) L81b17 <= R3u7v6; +always @(posedge HCLK) Ia1b17 <= Tjt7v6; +always @(posedge HCLK) Fc1b17 <= Akt7v6; +always @(posedge HCLK) Ce1b17 <= Hkt7v6; +always @(posedge HCLK) Zf1b17 <= Ozs7v6; +always @(posedge HCLK) Wh1b17 <= Vzs7v6; +always @(posedge HCLK) Tj1b17 <= C0t7v6; +always @(posedge HCLK) Ql1b17 <= Kpt7v6; +always @(posedge HCLK) Nn1b17 <= Rpt7v6; +always @(posedge HCLK) Kp1b17 <= Ypt7v6; +always @(posedge HCLK) Hr1b17 <= A6t7v6; +always @(posedge HCLK) Et1b17 <= H6t7v6; +always @(posedge HCLK) Bv1b17 <= Wvt7v6; +always @(posedge HCLK) Yw1b17 <= Dwt7v6; +always @(posedge HCLK) Vy1b17 <= Kwt7v6; +always @(posedge HCLK) S02b17 <= Mct7v6; +always @(posedge HCLK) P22b17 <= Tct7v6; +always @(posedge HCLK) M42b17 <= Adt7v6; +always @(posedge HCLK) J62b17 <= I2u7v6; +always @(posedge HCLK) G82b17 <= P2u7v6; +always @(posedge HCLK) Da2b17 <= W2u7v6; +always @(posedge HCLK) Ac2b17 <= Yit7v6; +always @(posedge HCLK) Xd2b17 <= Fjt7v6; +always @(posedge HCLK) Uf2b17 <= Mjt7v6; +always @(posedge HCLK) Rh2b17 <= U8u7v6; +always @(posedge HCLK) Oj2b17 <= B9u7v6; +always @(posedge HCLK) Ll2b17 <= I9u7v6; +always @(posedge HCLK) In2b17 <= F5t7v6; +always @(posedge HCLK) Fp2b17 <= M5t7v6; +always @(posedge HCLK) Cr2b17 <= T5t7v6; +always @(posedge HCLK) Zs2b17 <= Bvt7v6; +always @(posedge HCLK) Wu2b17 <= Ivt7v6; +always @(posedge HCLK) Tw2b17 <= Pvt7v6; +always @(posedge HCLK) Qy2b17 <= Dit7v6; +always @(posedge HCLK) N03b17 <= Kit7v6; +always @(posedge HCLK) K23b17 <= Rit7v6; +always @(posedge HCLK) H43b17 <= Z7u7v6; +always @(posedge HCLK) E63b17 <= G8u7v6; +always @(posedge HCLK) B83b17 <= N8u7v6; +always @(posedge HCLK) Y93b17 <= E1t7v6; +always @(posedge HCLK) Vb3b17 <= L1t7v6; +always @(posedge HCLK) Sd3b17 <= S1t7v6; +always @(posedge HCLK) Pf3b17 <= Art7v6; +always @(posedge HCLK) Mh3b17 <= Hrt7v6; +always @(posedge HCLK) Jj3b17 <= Ort7v6; +always @(posedge HCLK) Gl3b17 <= Cet7v6; +always @(posedge HCLK) Dn3b17 <= Jet7v6; +always @(posedge HCLK) Ap3b17 <= Qet7v6; +always @(posedge HCLK) Xq3b17 <= Y3u7v6; +always @(posedge HCLK) Us3b17 <= F4u7v6; +always @(posedge HCLK) Ru3b17 <= M4u7v6; +always @(posedge HCLK) Ow3b17 <= Q7t7v6; +always @(posedge HCLK) Ly3b17 <= X7t7v6; +always @(posedge HCLK) I04b17 <= E8t7v6; +always @(posedge HCLK) F24b17 <= Mxt7v6; +always @(posedge HCLK) C44b17 <= Txt7v6; +always @(posedge HCLK) Z54b17 <= Ayt7v6; +always @(posedge HCLK) W74b17 <= Okt7v6; +always @(posedge HCLK) T94b17 <= Vkt7v6; +always @(posedge HCLK) Qb4b17 <= Clt7v6; +always @(posedge HCLK) Nd4b17 <= Kau7v6; +always @(posedge HCLK) Kf4b17 <= Rau7v6; +always @(posedge HCLK) Hh4b17 <= Yau7v6; +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Ej4b17 <= 1'b0; + else + Ej4b17 <= G3s7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Zk4b17 <= 1'b0; + else + Zk4b17 <= V0s7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Xm4b17 <= 1'b0; + else + Xm4b17 <= Ryr7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Vo4b17 <= 1'b0; + else + Vo4b17 <= Nwr7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Tq4b17 <= 1'b0; + else + Tq4b17 <= Otr7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Rs4b17 <= 1'b0; + else + Rs4b17 <= Tgw7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Pu4b17 <= 1'b0; + else + Pu4b17 <= Bpk8v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Nw4b17 <= 1'b0; + else + Nw4b17 <= S088v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Uy4b17 <= 1'b0; + else + Uy4b17 <= Bp68v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + X05b17 <= 1'b0; + else + X05b17 <= Mvo7v6; + +always @(posedge HCLK) D45b17 <= Lg68v6; +always @(posedge HCLK) U55b17 <= E968v6; +always @(posedge HCLK) K75b17 <= C168v6; +always @(posedge HCLK) A95b17 <= At58v6; +always @(posedge HCLK) Qa5b17 <= Yk58v6; +always @(posedge HCLK) Gc5b17 <= Wc58v6; +always @(posedge HCLK) Wd5b17 <= U458v6; +always @(posedge HCLK) Mf5b17 <= Sw48v6; +always @(posedge HCLK) Ch5b17 <= Ep48v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Si5b17 <= 1'b0; + else + Si5b17 <= Zay7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Sk5b17 <= 1'b0; + else + Sk5b17 <= A1y7v6; + +always @(posedge FCLK) Um5b17 <= X2r7v6; +always @(posedge FCLK) Ro5b17 <= F8q7v6; +always @(posedge FCLK) Cr5b17 <= M8q7v6; +always @(posedge FCLK) Nt5b17 <= H9q7v6; +always @(posedge FCLK) Yv5b17 <= V9q7v6; +always @(posedge FCLK) Jy5b17 <= Caq7v6; +always @(posedge FCLK) U06b17 <= Qaq7v6; +always @(posedge FCLK) F36b17 <= Xaq7v6; +always @(posedge HCLK) Q56b17 <= Li48v6; +always @(posedge HCLK) T86b17 <= Si48v6; +always @(posedge HCLK) Wb6b17 <= Nsh7v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Qe6b17 <= 1'b0; + else + Qe6b17 <= Rq68v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Tg6b17 <= 1'b0; + else + Tg6b17 <= Cxo7v6; + +always @(posedge HCLK) Zj6b17 <= Bi68v6; +always @(posedge HCLK) Ql6b17 <= Ua68v6; +always @(posedge HCLK) Gn6b17 <= S268v6; +always @(posedge HCLK) Wo6b17 <= Qu58v6; +always @(posedge HCLK) Mq6b17 <= Om58v6; +always @(posedge HCLK) Cs6b17 <= Me58v6; +always @(posedge HCLK) St6b17 <= K658v6; +always @(posedge HCLK) Iv6b17 <= Iy48v6; +always @(posedge HCLK) Yw6b17 <= Uq48v6; +always @(posedge FCLK) Oy6b17 <= N4r7v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + L07b17 <= 1'b0; + else + L07b17 <= Xll8v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + M37b17 <= 1'b0; + else + M37b17 <= Hlk8v6; + +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + Q57b17 <= 1'b0; + else + Q57b17 <= V3w7v6; + +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + R67b17 <= 1'b0; + else + R67b17 <= Pmv7v6; + +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + T77b17 <= 1'b0; + else + T77b17 <= Wmv7v6; + +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + V87b17 <= 1'b0; + else + V87b17 <= H3w7v6; + +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + W97b17 <= 1'b0; + else + W97b17 <= A3w7v6; + +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + Xa7b17 <= 1'b0; + else + Xa7b17 <= T2w7v6; + +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + Yb7b17 <= 1'b0; + else + Yb7b17 <= M2w7v6; + +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + Zc7b17 <= 1'b0; + else + Zc7b17 <= Y1w7v6; + +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + Yg5m17 <= 1'b0; + else + Yg5m17 <= R1w7v6; + +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + Ai5m17 <= 1'b0; + else + Ai5m17 <= K1w7v6; + +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + Cj5m17 <= 1'b0; + else + Cj5m17 <= D1w7v6; + +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + Ek5m17 <= 1'b0; + else + Ek5m17 <= W0w7v6; + +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + Gl5m17 <= 1'b0; + else + Gl5m17 <= P0w7v6; + +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + Im5m17 <= 1'b0; + else + Im5m17 <= I0w7v6; + +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + Kn5m17 <= 1'b0; + else + Kn5m17 <= B0w7v6; + +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + Mo5m17 <= 1'b0; + else + Mo5m17 <= Uzv7v6; + +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + Op5m17 <= 1'b0; + else + Op5m17 <= Gzv7v6; + +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + Qq5m17 <= 1'b0; + else + Qq5m17 <= Zyv7v6; + +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + Sr5m17 <= 1'b0; + else + Sr5m17 <= Syv7v6; + +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + Us5m17 <= 1'b0; + else + Us5m17 <= Lyv7v6; + +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + Wt5m17 <= 1'b0; + else + Wt5m17 <= Eyv7v6; + +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + Yu5m17 <= 1'b0; + else + Yu5m17 <= Xxv7v6; + +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + Aw5m17 <= 1'b0; + else + Aw5m17 <= Qxv7v6; + +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + Cx5m17 <= 1'b0; + else + Cx5m17 <= Jxv7v6; + +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + Ey5m17 <= 1'b0; + else + Ey5m17 <= Cxv7v6; + +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + Gz5m17 <= 1'b0; + else + Gz5m17 <= Vwv7v6; + +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + I06m17 <= 1'b0; + else + I06m17 <= Owv7v6; + +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + K16m17 <= 1'b0; + else + K16m17 <= Hwv7v6; + +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + M26m17 <= 1'b0; + else + M26m17 <= Awv7v6; + +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + O36m17 <= 1'b0; + else + O36m17 <= Tvv7v6; + +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + Q46m17 <= 1'b0; + else + Q46m17 <= Mvv7v6; + +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + S56m17 <= 1'b0; + else + S56m17 <= Fvv7v6; + +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + U66m17 <= 1'b0; + else + U66m17 <= Yuv7v6; + +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + W76m17 <= 1'b0; + else + W76m17 <= Ruv7v6; + +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + Y86m17 <= 1'b0; + else + Y86m17 <= Kuv7v6; + +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + Aa6m17 <= 1'b0; + else + Aa6m17 <= Duv7v6; + +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + Cb6m17 <= 1'b0; + else + Cb6m17 <= Wtv7v6; + +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + Ec6m17 <= 1'b0; + else + Ec6m17 <= Ptv7v6; + +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + Gd6m17 <= 1'b0; + else + Gd6m17 <= Itv7v6; + +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + Ie6m17 <= 1'b0; + else + Ie6m17 <= Btv7v6; + +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + Kf6m17 <= 1'b0; + else + Kf6m17 <= Usv7v6; + +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + Mg6m17 <= 1'b0; + else + Mg6m17 <= Nsv7v6; + +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + Oh6m17 <= 1'b0; + else + Oh6m17 <= Gsv7v6; + +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + Qi6m17 <= 1'b0; + else + Qi6m17 <= Zrv7v6; + +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + Sj6m17 <= 1'b0; + else + Sj6m17 <= Srv7v6; + +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + Uk6m17 <= 1'b0; + else + Uk6m17 <= Lrv7v6; + +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + Wl6m17 <= 1'b0; + else + Wl6m17 <= Erv7v6; + +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + Ym6m17 <= 1'b0; + else + Ym6m17 <= Xqv7v6; + +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + Ao6m17 <= 1'b0; + else + Ao6m17 <= Qqv7v6; + +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + Cp6m17 <= 1'b0; + else + Cp6m17 <= Jqv7v6; + +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + Eq6m17 <= 1'b0; + else + Eq6m17 <= Cqv7v6; + +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + Gr6m17 <= 1'b0; + else + Gr6m17 <= Vpv7v6; + +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + Is6m17 <= 1'b0; + else + Is6m17 <= Opv7v6; + +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + Kt6m17 <= 1'b0; + else + Kt6m17 <= Hpv7v6; + +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + Mu6m17 <= 1'b0; + else + Mu6m17 <= Apv7v6; + +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + Ov6m17 <= 1'b0; + else + Ov6m17 <= Mov7v6; + +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + Qw6m17 <= 1'b0; + else + Qw6m17 <= Fov7v6; + +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + Sx6m17 <= 1'b0; + else + Sx6m17 <= Ynv7v6; + +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + Uy6m17 <= 1'b0; + else + Uy6m17 <= Rnv7v6; + +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + Wz6m17 <= 1'b0; + else + Wz6m17 <= Knv7v6; + +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + Y07m17 <= 1'b0; + else + Y07m17 <= Dnv7v6; + +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + A27m17 <= 1'b0; + else + A27m17 <= O3w7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + B37m17 <= 1'b0; + else + B37m17 <= Bxr7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Z47m17 <= 1'b0; + else + Z47m17 <= Cur7v6; + +always @(posedge TRACECLKIN or negedge T0adt6) + if(~T0adt6) + X67m17 <= 1'b0; + else + X67m17 <= Gsh7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Y87m17 <= 1'b0; + else + Y87m17 <= W4k8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Fb7m17 <= 1'b0; + else + Fb7m17 <= S9s7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Je7m17 <= 1'b0; + else + Je7m17 <= O7s7v6; + +always @(posedge FCLK) Nh7m17 <= Qa48v6; +always @(posedge FCLK) Tj7m17 <= Xa48v6; +always @(posedge FCLK) Zl7m17 <= Eb48v6; +always @(posedge FCLK) Fo7m17 <= Lb48v6; +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Lq7m17 <= 1'b0; + else + Lq7m17 <= Uwr7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Js7m17 <= 1'b0; + else + Js7m17 <= Vtr7v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Hu7m17 <= 1'b0; + else + Hu7m17 <= Nrw7v6; + +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Fw7m17 <= 1'b0; + else + Fw7m17 <= Ozfet6; + +always @(posedge FCLK) Jy7m17 <= M7r7v6; +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + G08m17 <= 1'b1; + else + G08m17 <= Ftq7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + N28m17 <= 1'b0; + else + N28m17 <= Ysq7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + E58m17 <= 1'b0; + else + E58m17 <= Rsq7v6; + +always @(posedge FCLK) V78m17 <= Jaq7v6; +always @(posedge FCLK) Ka8m17 <= Grp7v6; +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Zc8m17 <= 1'b0; + else + Zc8m17 <= Rkr7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Ye8m17 <= 1'b0; + else + Ye8m17 <= Kkr7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Ph8m17 <= 1'b0; + else + Ph8m17 <= Dkr7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Gk8m17 <= 1'b1; + else + Gk8m17 <= Wjr7v6; + +always @(posedge FCLK) Nm8m17 <= Xpp7v6; +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Cp8m17 <= 1'b1; + else + Cp8m17 <= Tlr7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Br8m17 <= 1'b0; + else + Br8m17 <= Mlr7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + At8m17 <= 1'b0; + else + At8m17 <= Flr7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Zu8m17 <= 1'b0; + else + Zu8m17 <= Ykr7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Yw8m17 <= 1'b1; + else + Yw8m17 <= Wrq7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Fz8m17 <= 1'b0; + else + Fz8m17 <= Prq7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + W19m17 <= 1'b0; + else + W19m17 <= Irq7v6; + +always @(posedge FCLK) N49m17 <= O9q7v6; +always @(posedge FCLK) C79m17 <= Bsp7v6; +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + R99m17 <= 1'b1; + else + R99m17 <= Cvq7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Yb9m17 <= 1'b0; + else + Yb9m17 <= Vuq7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Pe9m17 <= 1'b0; + else + Pe9m17 <= Ouq7v6; + +always @(posedge FCLK) Gh9m17 <= Y7q7v6; +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Vj9m17 <= 1'b0; + else + Vj9m17 <= Gqq7v6; + +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Mm9m17 <= 1'b0; + else + Mm9m17 <= Zpq7v6; + +always @(posedge FCLK) Dp9m17 <= A9q7v6; +always @(posedge FCLK) Or9m17 <= T8q7v6; +always @(posedge FCLK) Du9m17 <= Dtp7v6; +always @(posedge FCLK) Ow9m17 <= Wsp7v6; +always @(posedge HCLK) Dz9m17 <= Cf68v6; +always @(posedge HCLK) T0am17 <= He68v6; +always @(posedge HCLK) I2am17 <= F668v6; +always @(posedge HCLK) X3am17 <= Dy58v6; +always @(posedge HCLK) M5am17 <= Bq58v6; +always @(posedge HCLK) B7am17 <= Zh58v6; +always @(posedge HCLK) Q8am17 <= X958v6; +always @(posedge HCLK) Faam17 <= V158v6; +always @(posedge HCLK) Ubam17 <= Hu48v6; +always @(posedge FCLK) Jdam17 <= Cjv7v6; +always @(posedge FCLK) Pfam17 <= Ygv7v6; +always @(posedge FCLK) Vham17 <= A8r7v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Sjam17 <= 1'b0; + else + Sjam17 <= H7s7v6; + +always @(posedge FCLK) Wmam17 <= O1r7v6; +always @(posedge FCLK) Toam17 <= O948v6; +always @(posedge FCLK) Zqam17 <= Nxq7v6; +always @(posedge FCLK) Ntam17 <= Rgv7v6; +always @(posedge FCLK) Tvam17 <= T7r7v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Qxam17 <= 1'b0; + else + Qxam17 <= A7s7v6; + +always @(posedge FCLK) U0bm17 <= Oiv7v6; +always @(posedge FCLK) A3bm17 <= Zwq7v6; +always @(posedge FCLK) O5bm17 <= Z3r7v6; +always @(posedge FCLK) L7bm17 <= D6r7v6; +always @(posedge FCLK) I9bm17 <= H2q7v6; +always @(posedge FCLK) Tbbm17 <= O2q7v6; +always @(posedge FCLK) Eebm17 <= Hop7v6; +always @(posedge FCLK) Tgbm17 <= C3q7v6; +always @(posedge FCLK) Ejbm17 <= J3q7v6; +always @(posedge FCLK) Plbm17 <= V2q7v6; +always @(posedge FCLK) Eobm17 <= X3q7v6; +always @(posedge FCLK) Pqbm17 <= E4q7v6; +always @(posedge FCLK) Atbm17 <= Q3q7v6; +always @(posedge FCLK) Pvbm17 <= S4q7v6; +always @(posedge FCLK) Aybm17 <= Z4q7v6; +always @(posedge FCLK) L0cm17 <= L4q7v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + A3cm17 <= 1'b0; + else + A3cm17 <= Pol8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + B6cm17 <= 1'b0; + else + B6cm17 <= Owo7v6; + +always @(posedge HCLK) H9cm17 <= G3z7v6; +always @(posedge HCLK) Rbcm17 <= Ofy7v6; +always @(posedge FCLK) Pecm17 <= C2r7v6; +always @(posedge HCLK) Mgcm17 <= Suz7v6; +always @(posedge HCLK) Djcm17 <= I308v6; +always @(posedge HCLK) Ulcm17 <= Yb08v6; +always @(posedge HCLK) Locm17 <= Ok08v6; +always @(posedge HCLK) Crcm17 <= Et08v6; +always @(posedge HCLK) Ttcm17 <= U118v6; +always @(posedge HCLK) Kwcm17 <= Ka18v6; +always @(posedge HCLK) Bzcm17 <= Aj18v6; +always @(posedge HCLK) S1dm17 <= Qr18v6; +always @(posedge HCLK) J4dm17 <= G028v6; +always @(posedge HCLK) B7dm17 <= W828v6; +always @(posedge HCLK) T9dm17 <= Mh28v6; +always @(posedge HCLK) Lcdm17 <= Op28v6; +always @(posedge HCLK) Dfdm17 <= Ey28v6; +always @(posedge HCLK) Vhdm17 <= G638v6; +always @(posedge HCLK) Nkdm17 <= Ozk8v6; +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + Endm17 <= 1'b0; + else + Endm17 <= Zqw7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Fodm17 <= 1'b0; + else + Fodm17 <= Nas7v6; + +always @(posedge FCLK) Irdm17 <= Q2r7v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ftdm17 <= 1'b0; + else + Ftdm17 <= J8s7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Jwdm17 <= 1'b0; + else + Jwdm17 <= Pp68v6; + +always @(posedge HCLK) Mydm17 <= Zg68v6; +always @(posedge HCLK) D0em17 <= S968v6; +always @(posedge HCLK) T1em17 <= Q168v6; +always @(posedge HCLK) J3em17 <= Ot58v6; +always @(posedge HCLK) Z4em17 <= Ml58v6; +always @(posedge HCLK) P6em17 <= Kd58v6; +always @(posedge HCLK) F8em17 <= I558v6; +always @(posedge HCLK) V9em17 <= Gx48v6; +always @(posedge HCLK) Lbem17 <= Sp48v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Bdem17 <= 1'b0; + else + Bdem17 <= O1y7v6; + +always @(posedge FCLK) Dfem17 <= L3r7v6; +always @(posedge FCLK) Ahem17 <= Tup7v6; +always @(posedge FCLK) Ljem17 <= Avp7v6; +always @(posedge FCLK) Wlem17 <= Jpp7v6; +always @(posedge FCLK) Loem17 <= Ovp7v6; +always @(posedge FCLK) Wqem17 <= Vvp7v6; +always @(posedge FCLK) Htem17 <= Hvp7v6; +always @(posedge FCLK) Wvem17 <= Jwp7v6; +always @(posedge FCLK) Hyem17 <= Qwp7v6; +always @(posedge FCLK) S0fm17 <= Cwp7v6; +always @(posedge FCLK) H3fm17 <= Exp7v6; +always @(posedge FCLK) S5fm17 <= Lxp7v6; +always @(posedge FCLK) D8fm17 <= Xwp7v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Safm17 <= 1'b0; + else + Safm17 <= Dpl8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Tdfm17 <= 1'b0; + else + Tdfm17 <= Awo7v6; + +always @(posedge HCLK) Zgfm17 <= V3p7v6; +always @(posedge FCLK) Dkfm17 <= D8w7v6; +always @(posedge FCLK) Rmfm17 <= Haw7v6; +always @(posedge FCLK) Fpfm17 <= Lcw7v6; +always @(posedge FCLK) Srfm17 <= Anq7v6; +always @(posedge FCLK) Dufm17 <= Hnq7v6; +always @(posedge FCLK) Owfm17 <= Qpp7v6; +always @(posedge FCLK) Dzfm17 <= Vnq7v6; +always @(posedge FCLK) O1gm17 <= Coq7v6; +always @(posedge FCLK) Z3gm17 <= Onq7v6; +always @(posedge FCLK) O6gm17 <= Qoq7v6; +always @(posedge FCLK) Z8gm17 <= Xoq7v6; +always @(posedge FCLK) Kbgm17 <= Joq7v6; +always @(posedge FCLK) Zdgm17 <= Lpq7v6; +always @(posedge FCLK) Kggm17 <= Spq7v6; +always @(posedge FCLK) Vigm17 <= Epq7v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Klgm17 <= 1'b0; + else + Klgm17 <= P4s7v6; + +always @(posedge FCLK) Oogm17 <= C9r7v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Kqgm17 <= 1'b0; + else + Kqgm17 <= F6s7v6; + +always @(posedge FCLK) Otgm17 <= Y6r7v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Lvgm17 <= 1'b0; + else + Lvgm17 <= Orl8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Lygm17 <= 1'b0; + else + Lygm17 <= Xsl8v6; + +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + M1hm17 <= 1'b0; + else + M1hm17 <= Tov7v6; + +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + O2hm17 <= 1'b0; + else + O2hm17 <= Nzv7v6; + +always @(posedge FCLK or negedge Py9dt6) + if(~Py9dt6) + Q3hm17 <= 1'b0; + else + Q3hm17 <= F2w7v6; + +always @(posedge FCLK) R4hm17 <= R6r7v6; +always @(posedge FCLK) O6hm17 <= Tfq7v6; +always @(posedge FCLK) Z8hm17 <= Agq7v6; +always @(posedge FCLK) Kbhm17 <= Mfq7v6; +always @(posedge FCLK) Zdhm17 <= Ogq7v6; +always @(posedge FCLK) Kghm17 <= Vgq7v6; +always @(posedge FCLK) Vihm17 <= Hgq7v6; +always @(posedge FCLK) Klhm17 <= Jhq7v6; +always @(posedge FCLK) Vnhm17 <= Qhq7v6; +always @(posedge FCLK) Gqhm17 <= Chq7v6; +always @(posedge FCLK) Vshm17 <= Eiq7v6; +always @(posedge FCLK) Gvhm17 <= Liq7v6; +always @(posedge FCLK) Rxhm17 <= Xhq7v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + G0im17 <= 1'b0; + else + G0im17 <= Uxi8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + J3im17 <= 1'b0; + else + J3im17 <= Y5s7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + N6im17 <= 1'b0; + else + N6im17 <= Dmp7v6; + +always @(posedge TRACECLKIN or negedge T0adt6) + if(~T0adt6) + L8im17 <= 1'b0; + else + L8im17 <= Zrh7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Maim17 <= 1'b0; + else + Maim17 <= Kq68v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Pcim17 <= 1'b0; + else + Pcim17 <= Vwo7v6; + +always @(posedge HCLK) Vfim17 <= Uh68v6; +always @(posedge HCLK) Mhim17 <= Na68v6; +always @(posedge HCLK) Cjim17 <= L268v6; +always @(posedge HCLK) Skim17 <= Ju58v6; +always @(posedge HCLK) Imim17 <= Hm58v6; +always @(posedge HCLK) Ynim17 <= Fe58v6; +always @(posedge HCLK) Opim17 <= D658v6; +always @(posedge HCLK) Erim17 <= By48v6; +always @(posedge HCLK) Usim17 <= Nq48v6; +always @(posedge FCLK) Kuim17 <= G4r7v6; +always @(posedge FCLK) Hwim17 <= Njq7v6; +always @(posedge FCLK) Syim17 <= Ujq7v6; +always @(posedge FCLK) D1jm17 <= Gjq7v6; +always @(posedge FCLK) S3jm17 <= Ikq7v6; +always @(posedge FCLK) D6jm17 <= Pkq7v6; +always @(posedge FCLK) O8jm17 <= Bkq7v6; +always @(posedge FCLK) Dbjm17 <= Dlq7v6; +always @(posedge FCLK) Odjm17 <= Klq7v6; +always @(posedge FCLK) Zfjm17 <= Wkq7v6; +always @(posedge FCLK) Oijm17 <= Ylq7v6; +always @(posedge FCLK) Zkjm17 <= Fmq7v6; +always @(posedge FCLK) Knjm17 <= Rlq7v6; +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Zpjm17 <= 1'b0; + else + Zpjm17 <= Blp7v6; + +always @(posedge TRACECLKIN or negedge T0adt6) + if(~T0adt6) + Xrjm17 <= 1'b0; + else + Xrjm17 <= Srh7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ytjm17 <= 1'b0; + else + Ytjm17 <= Akl8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ywjm17 <= 1'b0; + else + Ywjm17 <= D1p7v6; + +always @(posedge HCLK) D0km17 <= E5p7v6; +always @(posedge HCLK) H3km17 <= S2k8v6; +always @(posedge HCLK) A5km17 <= L2k8v6; +always @(posedge HCLK) T6km17 <= Ddj8v6; +always @(posedge HCLK) M8km17 <= Pcj8v6; +always @(posedge HCLK) Fakm17 <= Sxh8v6; +always @(posedge HCLK) Wbkm17 <= Iu88v6; +always @(posedge HCLK) Pdkm17 <= Vj88v6; +always @(posedge HCLK) Ifkm17 <= Hj88v6; +always @(posedge HCLK) Fhkm17 <= Ikx7v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Yikm17 <= 1'b0; + else + Yikm17 <= V1y7v6; + +always @(posedge FCLK) Alkm17 <= S3r7v6; +always @(posedge FCLK) Xmkm17 <= W5r7v6; +always @(posedge FCLK) Uokm17 <= Nyp7v6; +always @(posedge FCLK) Frkm17 <= Uyp7v6; +always @(posedge FCLK) Qtkm17 <= Vop7v6; +always @(posedge FCLK) Fwkm17 <= Izp7v6; +always @(posedge FCLK) Qykm17 <= Pzp7v6; +always @(posedge FCLK) B1lm17 <= Bzp7v6; +always @(posedge FCLK) Q3lm17 <= D0q7v6; +always @(posedge FCLK) B6lm17 <= K0q7v6; +always @(posedge FCLK) M8lm17 <= Wzp7v6; +always @(posedge FCLK) Bblm17 <= Y0q7v6; +always @(posedge FCLK) Mdlm17 <= F1q7v6; +always @(posedge FCLK) Xflm17 <= R0q7v6; +always @(posedge FCLK) Milm17 <= T1q7v6; +always @(posedge FCLK) Xklm17 <= A2q7v6; +always @(posedge FCLK) Inlm17 <= M1q7v6; +always @(posedge FCLK or negedge Ox9dt6) + if(~Ox9dt6) + Xplm17 <= 1'b0; + else + Xplm17 <= Oop7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Xrlm17 <= 1'b0; + else + Xrlm17 <= Xip7v6; + +always @(posedge TRACECLKIN or negedge T0adt6) + if(~T0adt6) + Vtlm17 <= 1'b0; + else + Vtlm17 <= Lrh7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Wvlm17 <= 1'b0; + else + Wvlm17 <= A3p7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Xylm17 <= 1'b0; + else + Xylm17 <= M2p7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Y1mm17 <= 1'b0; + else + Y1mm17 <= T2p7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Z4mm17 <= 1'b0; + else + Z4mm17 <= W0p7v6; + +always @(posedge HCLK) E8mm17 <= Nqi8v6; +always @(posedge HCLK) Abmm17 <= Spi8v6; +always @(posedge HCLK) Wdmm17 <= Chx7v6; +always @(posedge HCLK) Sgmm17 <= Sro7v6; +always @(posedge HCLK) Mjmm17 <= Uso7v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Cmmm17 <= 1'b0; + else + Cmmm17 <= Ox88v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Xomm17 <= 1'b0; + else + Xomm17 <= Byi8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Asmm17 <= 1'b0; + else + Asmm17 <= Vx88v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Vumm17 <= 1'b0; + else + Vumm17 <= Iyi8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Yxmm17 <= 1'b0; + else + Yxmm17 <= Cy88v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + T0nm17 <= 1'b0; + else + T0nm17 <= Pyi8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + W3nm17 <= 1'b0; + else + W3nm17 <= Jy88v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + R6nm17 <= 1'b0; + else + R6nm17 <= Qy88v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + M9nm17 <= 1'b0; + else + M9nm17 <= Dzi8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Pcnm17 <= 1'b0; + else + Pcnm17 <= Xy88v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Kfnm17 <= 1'b0; + else + Kfnm17 <= Kzi8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ninm17 <= 1'b0; + else + Ninm17 <= Ez88v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ilnm17 <= 1'b0; + else + Ilnm17 <= Rzi8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Lonm17 <= 1'b0; + else + Lonm17 <= Lz88v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Grnm17 <= 1'b0; + else + Grnm17 <= Yzi8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Junm17 <= 1'b0; + else + Junm17 <= Sz88v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Exnm17 <= 1'b0; + else + Exnm17 <= F0j8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + I0om17 <= 1'b0; + else + I0om17 <= Zz88v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + D3om17 <= 1'b0; + else + D3om17 <= M0j8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + H6om17 <= 1'b0; + else + H6om17 <= T0j8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + L9om17 <= 1'b0; + else + L9om17 <= A1j8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Pcom17 <= 1'b0; + else + Pcom17 <= H1j8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Tfom17 <= 1'b0; + else + Tfom17 <= O1j8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Xiom17 <= 1'b0; + else + Xiom17 <= V1j8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Bmom17 <= 1'b0; + else + Bmom17 <= C2j8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Fpom17 <= 1'b0; + else + Fpom17 <= J2j8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Jsom17 <= 1'b0; + else + Jsom17 <= Q2j8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Nvom17 <= 1'b0; + else + Nvom17 <= X2j8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ryom17 <= 1'b0; + else + Ryom17 <= E3j8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + V1pm17 <= 1'b0; + else + V1pm17 <= L3j8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Z4pm17 <= 1'b0; + else + Z4pm17 <= S3j8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + D8pm17 <= 1'b0; + else + D8pm17 <= Z3j8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Hbpm17 <= 1'b0; + else + Hbpm17 <= G4j8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Lepm17 <= 1'b0; + else + Lepm17 <= N4j8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Phpm17 <= 1'b0; + else + Phpm17 <= U4j8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Tkpm17 <= 1'b0; + else + Tkpm17 <= B5j8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Xnpm17 <= 1'b0; + else + Xnpm17 <= I5j8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Brpm17 <= 1'b0; + else + Brpm17 <= P5j8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Fupm17 <= 1'b0; + else + Fupm17 <= Qel8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Jxpm17 <= 1'b0; + else + Jxpm17 <= Nxi8v6; + +always @(posedge HCLK) M0qm17 <= Qbp7v6; +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + P3qm17 <= 1'b0; + else + P3qm17 <= An48v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + A5qm17 <= 1'b0; + else + A5qm17 <= Wal8v6; + +always @(posedge TRACECLKIN or negedge T0adt6) + if(~T0adt6) + Y6qm17 <= 1'b0; + else + Y6qm17 <= Erh7v6; + +always @(posedge TRACECLKIN or negedge T0adt6) + if(~T0adt6) + Z8qm17 <= 1'b0; + else + Z8qm17 <= Rfp7v6; + +always @(posedge TRACECLKIN) Xaqm17 <= Xqh7v6; +always @(posedge TRACECLKIN) Wcqm17 <= Qqh7v6; +always @(posedge TRACECLKIN) Veqm17 <= Jqh7v6; +always @(posedge TRACECLKIN) Ugqm17 <= Cqh7v6; +always @(posedge TRACECLKIN) Tiqm17 <= Vph7v6; +always @(posedge TRACECLKIN) Skqm17 <= Oph7v6; +always @(posedge TRACECLKIN) Rmqm17 <= Hph7v6; +always @(posedge TRACECLKIN or negedge T0adt6) + if(~T0adt6) + Qoqm17 <= 1'b0; + else + Qoqm17 <= Wep7v6; + +always @(posedge TRACECLKIN or negedge T0adt6) + if(~T0adt6) + Rqqm17 <= 1'b0; + else + Rqqm17 <= Pep7v6; + +always @(posedge TRACECLKIN or negedge T0adt6) + if(~T0adt6) + Ssqm17 <= 1'b0; + else + Ssqm17 <= Bep7v6; + +always @(posedge TRACECLKIN or negedge T0adt6) + if(~T0adt6) + Tuqm17 <= 1'b0; + else + Tuqm17 <= Ndp7v6; + +always @(posedge TRACECLKIN or negedge T0adt6) + if(~T0adt6) + Uwqm17 <= 1'b0; + else + Uwqm17 <= Zcp7v6; + +always @(posedge TRACECLKIN or negedge T0adt6) + if(~T0adt6) + Syqm17 <= 1'b0; + else + Syqm17 <= Kfp7v6; + +always @(posedge FCLK) T0rm17 <= U4r7v6; +always @(posedge FCLK) Q2rm17 <= Zbq7v6; +always @(posedge FCLK) B5rm17 <= Gcq7v6; +always @(posedge FCLK) M7rm17 <= Sbq7v6; +always @(posedge FCLK) Barm17 <= Ucq7v6; +always @(posedge FCLK) Mcrm17 <= Bdq7v6; +always @(posedge FCLK) Xerm17 <= Ncq7v6; +always @(posedge FCLK) Mhrm17 <= Pdq7v6; +always @(posedge FCLK) Xjrm17 <= Wdq7v6; +always @(posedge FCLK) Imrm17 <= Idq7v6; +always @(posedge FCLK) Xorm17 <= Keq7v6; +always @(posedge FCLK) Irrm17 <= Req7v6; +always @(posedge FCLK) Ttrm17 <= Deq7v6; +always @(posedge FCLK) Iwrm17 <= Yeq7v6; +always @(posedge FCLK) Tyrm17 <= Ffq7v6; +always @(posedge FCLK) E1sm17 <= Rmp7v6; +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + T3sm17 <= 1'b0; + else + T3sm17 <= Yvu7v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + V5sm17 <= 1'b0; + else + V5sm17 <= Ive8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + N7sm17 <= 1'b0; + else + N7sm17 <= Lme8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + A9sm17 <= 1'b0; + else + A9sm17 <= Eme8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Oasm17 <= 1'b0; + else + Oasm17 <= Wyi8v6; + +always @(posedge HCLK) Rdsm17 <= T9p7v6; +always @(posedge FCLK or negedge H8bdt6) + if(~H8bdt6) + Ugsm17 <= 1'b0; + else + Ugsm17 <= Idi8v6; + +always @(posedge HCLK) Ajsm17 <= Oj88v6; +always @(posedge HCLK) Tksm17 <= Gso7v6; +always @(posedge HCLK) Jnsm17 <= Aph7v6; +always @(posedge HCLK) Dqsm17 <= Aj88v6; +always @(posedge HCLK) Assm17 <= Ero7v6; +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Uusm17 <= 1'b0; + else + Uusm17 <= Mg38v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Sxsm17 <= 1'b0; + else + Sxsm17 <= Hh38v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Q0tm17 <= 1'b0; + else + Q0tm17 <= Q0l8v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + O3tm17 <= 1'b0; + else + O3tm17 <= Oh38v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + M6tm17 <= 1'b0; + else + M6tm17 <= Ah38v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + K9tm17 <= 1'b0; + else + K9tm17 <= Tg38v6; + +always @(posedge HCLK or negedge H8bdt6) + if(~H8bdt6) + Ictm17 <= 1'b0; + else + Ictm17 <= Tly7v6; + +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Fftm17 <= 1'b0; + else + Fftm17 <= Zjp7v6; + +always @(posedge TRACECLKIN or negedge T0adt6) + if(~T0adt6) + Dhtm17 <= 1'b0; + else + Dhtm17 <= Toh7v6; + +always @(posedge TRACECLKIN or negedge T0adt6) + if(~T0adt6) + Ejtm17 <= 1'b0; + else + Ejtm17 <= Iep7v6; + +always @(posedge HCLK) Fltm17 <= Cr88v6; +always @(posedge HCLK) Vntm17 <= Vq88v6; +always @(posedge HCLK) Lqtm17 <= Oq88v6; +always @(posedge HCLK) Bttm17 <= Hq88v6; +always @(posedge HCLK) Svtm17 <= Aq88v6; +always @(posedge HCLK) Jytm17 <= Tp88v6; +always @(posedge HCLK) A1um17 <= Mp88v6; +always @(posedge HCLK) R3um17 <= Fp88v6; +always @(posedge HCLK) I6um17 <= Yo88v6; +always @(posedge HCLK) Z8um17 <= Ro88v6; +always @(posedge HCLK) Qbum17 <= Ko88v6; +always @(posedge HCLK) Heum17 <= Do88v6; +always @(posedge HCLK) Ygum17 <= Wn88v6; +always @(posedge HCLK) Pjum17 <= Pn88v6; +always @(posedge HCLK) Gmum17 <= In88v6; +always @(posedge HCLK) Xoum17 <= Bn88v6; +always @(posedge HCLK) Orum17 <= Um88v6; +always @(posedge HCLK) Fuum17 <= Nm88v6; +always @(posedge HCLK) Wwum17 <= Gm88v6; +always @(posedge HCLK) Nzum17 <= Zl88v6; +always @(posedge HCLK) E2vm17 <= Sl88v6; +always @(posedge HCLK) V4vm17 <= Ll88v6; +always @(posedge HCLK) M7vm17 <= El88v6; +always @(posedge HCLK) Davm17 <= Xk88v6; +always @(posedge HCLK) Ucvm17 <= Qk88v6; +always @(posedge FCLK) Lfvm17 <= A1r7v6; +always @(posedge HCLK or negedge Ox9dt6) + if(~Ox9dt6) + Ihvm17 <= 1'b0; + else + Ihvm17 <= Vhp7v6; + +always @(posedge TRACECLKIN or negedge T0adt6) + if(~T0adt6) + Gjvm17 <= 1'b0; + else + Gjvm17 <= Moh7v6; + +always @(posedge TRACECLKIN or negedge T0adt6) + if(~T0adt6) + Hlvm17 <= 1'b0; + else + Hlvm17 <= Udp7v6; + +always @(posedge TRACECLKIN or negedge T0adt6) + if(~T0adt6) + Invm17 <= 1'b0; + else + Invm17 <= Lcp7v6; + +always @(posedge HCLK) Gpvm17 <= H3p7v6; +always @(posedge HCLK) Ksvm17 <= Foh7v6; +always @(posedge HCLK) Duvm17 <= Zns7v6; +always @(posedge HCLK) Wvvm17 <= Sns7v6; +always @(posedge HCLK) Pxvm17 <= Lns7v6; +always @(posedge HCLK) Izvm17 <= Ynh7v6; +always @(posedge HCLK) B1wm17 <= Pto7v6; +always @(posedge HCLK) U2wm17 <= Bto7v6; +always @(posedge HCLK) N4wm17 <= Nso7v6; +always @(posedge HCLK) G6wm17 <= Zro7v6; +always @(posedge HCLK) Z7wm17 <= Lro7v6; +always @(posedge HCLK) W9wm17 <= Xqo7v6; +always @(posedge TRACECLKIN or negedge T0adt6) + if(~T0adt6) + Tbwm17 <= 1'b0; + else + Tbwm17 <= Rnh7v6; + +always @(posedge TRACECLKIN or negedge T0adt6) + if(~T0adt6) + Udwm17 <= 1'b0; + else + Udwm17 <= Dfp7v6; + +always @(posedge TRACECLKIN or negedge T0adt6) + if(~T0adt6) + Vfwm17 <= 1'b0; + else + Vfwm17 <= Scp7v6; + +always @(posedge TRACECLKIN or negedge T0adt6) + if(~T0adt6) + Thwm17 <= 1'b0; + else + Thwm17 <= Ecp7v6; + +always @(posedge TRACECLKIN or negedge T0adt6) + if(~T0adt6) + Rjwm17 <= 1'b0; + else + Rjwm17 <= Gdp7v6; + +endmodule + +//------------------------------------------------------------------------------ +// EOF +//------------------------------------------------------------------------------ + diff --git a/lib/testbench.v b/lib/testbench.v new file mode 100644 index 0000000..cd0eb02 --- /dev/null +++ b/lib/testbench.v @@ -0,0 +1,41 @@ +module testbench(); + +parameter DATA_WIDTH = 32; +parameter ADDR_WIDTH = 32; +parameter MAIN_FRE = 100; //unit MHz +reg sys_clk = 0; +reg sys_rst = 1; +reg [DATA_WIDTH-1:0] data = 0; +reg [ADDR_WIDTH-1:0] addr = 0; + +always begin + #(500/MAIN_FRE) sys_clk = ~sys_clk; +end + +always begin + #50 sys_rst = 0; +end + +always @(posedge sys_clk) begin + if (sys_rst) + addr = 0; + else + addr = addr + 1; +end +always @(posedge sys_clk) begin + if (sys_rst) + data = 0; + else + data = data + 1; +end + +//Instance + + +initial begin + $dumpfile("wave.vcd"); + $dumpvars(0, testbench); + #50000 $finish; +end + +endmodule //TOP \ No newline at end of file diff --git a/package.json b/package.json index 1a009cc..86251f0 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "digital-ide", "displayName": "digital-ide", "description": "all in one vscode plugin for Verilog/VHDL development", - "version": "0.0.1", + "version": "0.3.0", "engines": { "vscode": "^1.72.0" }, @@ -20,6 +20,17 @@ "workspaceContains:.vscode/property.json" ], "contributes": { + "configuration": { + "title": "Digital-IDE", + "properties": { + "lib.custom.path": { + "scope": "window", + "type": "string", + "default": "", + "description": "path of the dictionary of \"custom\" in library" + } + } + }, "commands": [ { "command": "digital-ide.helloWorld", @@ -118,7 +129,7 @@ "jsonValidation": [ { "fileMatch": "property.json", - "url": "./validation/property-schema.json" + "url": "./project/property-schema.json" } ], "grammars": [ diff --git a/project/property-init.json b/project/property-init.json new file mode 100644 index 0000000..5bff5f5 --- /dev/null +++ b/project/property-init.json @@ -0,0 +1,11 @@ +{ + "toolChain": "xilinx", + "prjName": { + "PL": "template" + }, + "soc": { + "core": "none" + }, + "enableShowLog": false, + "device": "none" +} \ No newline at end of file diff --git a/validation/property-schema.json b/project/property-schema.json similarity index 92% rename from validation/property-schema.json rename to project/property-schema.json index 6f527de..d0e8a07 100644 --- a/validation/property-schema.json +++ b/project/property-schema.json @@ -3,14 +3,14 @@ "description": "A property file for project of DIDE", "type": "object", "properties": { - "TOOL_CHAIN": { + "toolChain": { "type": "string", "description": "The tool chain you need", "enum": [ "xilinx" ] }, - "PRJ_NAME": { + "prjName": { "type": "object", "default": { "PL": "template" @@ -28,13 +28,13 @@ } } }, - "ARCH": { + "arch": { "type": "object", "properties": { - "PRJ_Path": { + "prjPath": { "type": "string" }, - "Hardware": { + "hardware": { "type": "object", "properties": { "src": { @@ -48,7 +48,7 @@ } } }, - "Software": { + "software": { "type": "object", "properties": { "src": { @@ -71,7 +71,7 @@ "remote" ] }, - "Hardware": { + "hardware": { "type": "object", "properties": { "common": { @@ -87,13 +87,7 @@ "IP_REPO": { "type": "array" }, - "INSIDE_BOOT_TYPE": { - "type": "string", - "enum": [ - "microphase" - ] - }, - "SOC": { + "soc": { "type": "object", "default": { "core": "none" @@ -185,7 +179,7 @@ ] } }, - "enableShowlog": { + "enableShowLog": { "type": "boolean", "description": "Whether to display logs during compilation", "default": false, @@ -194,7 +188,7 @@ false ] }, - "Device": { + "device": { "type": "string", "description": "The device type", "enum": [ @@ -208,8 +202,8 @@ } }, "required": [ - "TOOL_CHAIN", - "SOC", - "Device" + "toolChain", + "soc", + "device" ] } \ No newline at end of file diff --git a/snippets/svlog.json b/snippets/svlog.json index d725bca..085fc56 100644 --- a/snippets/svlog.json +++ b/snippets/svlog.json @@ -772,9 +772,9 @@ }, "display":{ - "prefix":"$display", + "prefix":"display", "body":[ - "$$display(\"${1}\"$2);$0" + "\\$display($0);" ], "description":"$display(\"...\", params...)" }, diff --git a/src/extension.ts b/src/extension.ts index 3e11436..5389f6d 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -1,12 +1,17 @@ import * as vscode from 'vscode'; -export function activate(context: vscode.ExtensionContext) { - console.log('Congratulations, your extension "digital-ide" is now active!'); - let disposable = vscode.commands.registerCommand('digital-ide.helloWorld', () => { - vscode.window.showInformationMessage('Hello World from digital-ide!'); - }); +import { opeParam } from './global'; +import { prjManage } from './manager'; +import { hdlPath } from './hdlFs'; - context.subscriptions.push(disposable); +function launch(context: vscode.ExtensionContext) { + prjManage.initOpeParam(context); + console.log(opeParam.prjInfo); +} + +export function activate(context: vscode.ExtensionContext) { + console.log('Digital-IDE 0.3.0 is launched'); + launch(context); } export function deactivate() {} \ No newline at end of file diff --git a/src/global/enum.ts b/src/global/enum.ts new file mode 100644 index 0000000..22320b6 --- /dev/null +++ b/src/global/enum.ts @@ -0,0 +1,67 @@ +/* eslint-disable @typescript-eslint/naming-convention */ + +enum HdlLangID { + Verilog = 'verilog', + SystemVerilog = 'systemverilog', + Vhdl = 'vhdl', + Unknown = 'Unknown' +}; + +enum ToolChainType { + Xilinx = 'xilinx', + Intel = 'intel', + Custom = 'custom' +}; + +enum LibraryState { + Local = 'local', + Remote = 'remote', + Unknown = 'Unknown' +}; + +enum XilinxIP { + Arm = 'arm', + Aid = 'aid' +}; + +enum ThemeType { + Dark = 'dark', + Light = 'light' +}; + +function validToolChainType(name: ToolChainType) { + const allTypes = [ + 'xilinx', + 'intel', + 'custom' + ]; + return allTypes.includes(name); +} + +function validXilinxIP(name: XilinxIP) { + const ips = [ + 'arm', + 'aid' + ]; + return ips.includes(name); +} + +function validLibraryState(state: LibraryState) { + const states = [ + 'local', + 'remote', + 'Unknown' + ]; + return states.includes(state); +} + +export { + HdlLangID, + ToolChainType, + LibraryState, + XilinxIP, + ThemeType, + validToolChainType, + validXilinxIP, + validLibraryState +}; \ No newline at end of file diff --git a/src/global/index.ts b/src/global/index.ts new file mode 100644 index 0000000..6bf519f --- /dev/null +++ b/src/global/index.ts @@ -0,0 +1,19 @@ +import { opeParam, OpeParamDefaults } from './opeParam'; +import { PrjInfo, PrjInfoDefaults } from './prjInfo'; + +import * as Enum from './enum'; +import * as Lang from './lang'; + +type AbsPath = string; +type RelPath = string; + +export { + opeParam, + OpeParamDefaults, + PrjInfo, + PrjInfoDefaults, + Enum, + Lang, + AbsPath, + RelPath +}; \ No newline at end of file diff --git a/src/global/lang.ts b/src/global/lang.ts new file mode 100644 index 0000000..00f4e5e --- /dev/null +++ b/src/global/lang.ts @@ -0,0 +1,12 @@ +const verilogExts: string[] = ['v', 'vh', 'vl']; +const vhdlExts: string[] = ['vhd', 'vhdl', 'vho', 'vht']; +const systemVerilogExts: string[] = ['sv']; + +const hdlExts: string[] = verilogExts.concat(vhdlExts).concat(systemVerilogExts); + +export { + verilogExts, + vhdlExts, + systemVerilogExts, + hdlExts +}; \ No newline at end of file diff --git a/src/global/opeParam.ts b/src/global/opeParam.ts new file mode 100644 index 0000000..4a6e106 --- /dev/null +++ b/src/global/opeParam.ts @@ -0,0 +1,135 @@ +import * as assert from 'assert'; +import * as fs from 'fs'; + +import { Arch, PrjInfo, RawPrjInfo, PrjInfoDefaults } from './prjInfo'; + +type AbsPath = string; +type RelPath = string; + +// eslint-disable-next-line @typescript-eslint/naming-convention +const OpeParamDefaults = { + os: '', + extensionPath: '', + workspacePath: '', + prjInfo: new PrjInfo(), + propertyJsonPath: '', // path of property.json + propertySchemaPath: '', // path of property-schema.json + propertyInitPath: '', // path of property-init.json + topModule: { name: '', path: '' } +}; + +interface FirstTopModuleDesc { + name: string + path: AbsPath +}; + + +class OpeParam { + private _os: string = OpeParamDefaults.os; + private _extensionPath: AbsPath = OpeParamDefaults.extensionPath; + private _workspacePath: AbsPath = OpeParamDefaults.workspacePath; + + // information of the whole project + private _prjInfo: PrjInfo = OpeParamDefaults.prjInfo; + + // path of property.json + private _propertyJsonPath: AbsPath = OpeParamDefaults.propertyJsonPath; + + // path of property-schema.json + private _propertySchemaPath: AbsPath = OpeParamDefaults.propertySchemaPath; + + // path of property-init.json + private _propertyInitPath: AbsPath = OpeParamDefaults.propertyInitPath; + + private _firstSrcTopModule: FirstTopModuleDesc = OpeParamDefaults.topModule; + private _firstSimTopModule: FirstTopModuleDesc = OpeParamDefaults.topModule; + + public get os() : string { + return this._os; + } + + public get extensionPath(): AbsPath { + return this._extensionPath; + } + + public get workspacePath(): AbsPath { + return this._workspacePath; + } + + public get prjInfo(): PrjInfo { + return this._prjInfo; + } + + public get propertyJsonPath(): AbsPath { + return this._propertyJsonPath; + } + + public get propertySchemaPath() : AbsPath { + return this._propertySchemaPath; + } + + public get propertyInitPath() : AbsPath { + return this._propertyInitPath; + } + + public get firstSrcTopModule(): FirstTopModuleDesc { + return this._firstSrcTopModule; + } + + public get firstSimTopModule(): FirstTopModuleDesc { + return this._firstSimTopModule; + } + + public get prjStructure(): Arch { + return this._prjInfo.arch; + } + + public setBasicInfo(os: string, + extensionPath: AbsPath, + workspacePath: AbsPath, + propertyJsonPath: AbsPath, + propertySchemaPath: AbsPath, + propertyInitPath: AbsPath) { + this._os = os; + + assert(fs.existsSync(extensionPath), 'extensionPath ' + extensionPath + ' not exist!'); + assert(fs.existsSync(workspacePath), 'workspacePath ' + workspacePath + ' not exist!'); + assert(fs.existsSync(propertySchemaPath), 'propertySchemaPath ' + propertySchemaPath + ' not exist!'); + assert(fs.existsSync(propertyInitPath), 'propertyInitPath ' + propertyInitPath + ' not exist!'); + + this._extensionPath = extensionPath; + this._workspacePath = workspacePath; + this._propertyJsonPath = propertyJsonPath; + this._propertySchemaPath = propertySchemaPath; + this._propertyInitPath = propertyInitPath; + } + + public setFirstSrcTopModule(name: string | null, path: AbsPath | null) { + if (name) { + this._firstSrcTopModule.name = name; + } + if (path) { + this._firstSrcTopModule.path = path; + } + } + + public setFirstSimTopModule(name: string | null, path: AbsPath | null) { + if (name) { + this._firstSimTopModule.name = name; + } + if (path) { + this._firstSimTopModule.path = path; + } + } + + public mergePrjInfo(rawPrjInfo: RawPrjInfo) { + this.prjInfo.merge(rawPrjInfo); + } +}; + +const opeParam: OpeParam = new OpeParam(); + +export { + opeParam, + OpeParamDefaults +}; \ No newline at end of file diff --git a/src/global/outputChannel.ts b/src/global/outputChannel.ts new file mode 100644 index 0000000..d6ef04a --- /dev/null +++ b/src/global/outputChannel.ts @@ -0,0 +1,42 @@ +/* eslint-disable @typescript-eslint/naming-convention */ +import * as vscode from 'vscode'; + +enum ReportType { + Debug = 'Debug', + Launch = 'Launch', + Performance = 'Performance', + PathCheck = 'Path Check', + Info = 'Info', + Warn = 'Warn', + Error = 'Error' +}; + +class Output { + private _output: vscode.OutputChannel; + private _ignoreTypes: ReportType[]; + + constructor(title: string, ignoreType: ReportType[] = []) { + this._output = vscode.window.createOutputChannel(title); + this._ignoreTypes = ignoreType; + } + + skipMessage(type: ReportType) : boolean { + return this._ignoreTypes.includes(type); + } + + report(message: string, type: ReportType = ReportType.Debug) { + if (!this.skipMessage(type) && message) { + this._output.show(true); + this._output.appendLine('[' + type + '] ' + message); + } + } +} + +const MainOutput = new Output('Digital-IDE'); +const YosysOutput = new Output('Yosys'); + +export { + ReportType, + MainOutput, + YosysOutput +}; \ No newline at end of file diff --git a/src/global/prjInfo.ts b/src/global/prjInfo.ts new file mode 100644 index 0000000..3a9ca6a --- /dev/null +++ b/src/global/prjInfo.ts @@ -0,0 +1,359 @@ +/* eslint-disable @typescript-eslint/naming-convention */ +import * as vscode from 'vscode'; +import * as fs from 'fs'; +import * as fspath from 'path'; + + +import { ToolChainType, LibraryState, XilinxIP, + validToolChainType, validXilinxIP, validLibraryState } from './enum'; +import { PrjInfoSchema } from './propertySchema'; + +type AbsPath = string; +type RelPath = string; +type Path = AbsPath | RelPath; + +type SimPath = {sim: Path}; +type SrcPath = {src: Path}; +type DataPath = {data: Path}; + +type OptionalPickType = {[P in keyof T]?: T[P]}; +type PrjInfoMeta = Record; +type RawPrjInfoMeta = OptionalPickType; + +const PrjInfoDefaults: PrjInfoMeta = { + toolChain: ToolChainType.Xilinx, + + prjName: { + PL: 'template', + PS: 'template' + }, + + IP_REPO: [], + + soc: { + core: '', + bd: '', + os: '', + app: '' + }, + + enableShowLog: false, + device: 'none', + + arch: { + prjPath: '', + hardware: { + src: '', + sim: '', + data: '' + }, + software: { + src: '', + data: '' + } + }, + + library: { + state: LibraryState.Unknown, + hardware: { + common: [], + custom: [] + } + } +}; + +interface PrjName { + PL: RelPath + PS: RelPath +}; + +interface Arch { + prjPath: AbsPath + hardware: SrcPath & SimPath & DataPath + software: SrcPath & DataPath +}; + +interface Soc { + core: string + bd: string + os: string + app: string +}; + +interface Library { + state: LibraryState, + hardware: { + common: RelPath[], + custom: (RelPath | AbsPath)[] + } +} + +interface RawPrjInfo extends RawPrjInfoMeta { + toolChain?: ToolChainType + prjName?: PrjName + IP_REPO?: XilinxIP[] + soc?: Soc + enableShowLog?: boolean + device?: string + arch?: Arch + library?: Library +}; + +function toSlash(path: Path): Path { + return path.replace(/\\/g,"\/"); +} + +class PrjInfo implements PrjInfoMeta { + private _extensionPath: AbsPath = ''; + private _workspacePath: AbsPath = ''; + private _libCommonPath: AbsPath = ''; + private _libCustomPath: AbsPath = ''; + + // toolChain is the tool chain used in the project + // which is supposed to support xilinx, intel, custom + private _toolChain: ToolChainType = PrjInfoDefaults.toolChain; + + // project name, include pl and ps + private _prjName: PrjName = PrjInfoDefaults.prjName; + + private _IP_REPO: XilinxIP[] = PrjInfoDefaults.IP_REPO; + + private _soc: Soc = PrjInfoDefaults.soc; + + private _enableShowLog: boolean = PrjInfoDefaults.enableShowLog; + + private _device: string = PrjInfoDefaults.device; + + // structure of the project, including path of source of hardware design, testBench + private _arch: Arch = PrjInfoDefaults.arch; + + // library to manage + private _library: Library = PrjInfoDefaults.library; + + public get toolChain(): ToolChainType { + return this._toolChain; + } + + public get prjName(): PrjName { + return this._prjName; + } + + public get arch(): Arch { + return this._arch; + } + + public get library(): Library { + return this._library; + } + + public get IP_REPO() : XilinxIP[] { + return this._IP_REPO; + } + + public get soc(): Soc { + return this._soc; + } + + public get enableShowLog(): boolean { + return this._enableShowLog; + } + + public get device(): string { + return this._device; + } + + public get INSIDE_BOOT_TYPE(): string { + return 'microphase'; + } + + // resolve path with workspacePath as root + private resolvePath(path: Path, check: boolean = false, root?: AbsPath): AbsPath | undefined { + let uniformPath = ''; + if (fspath.isAbsolute(path)) { + uniformPath = path; + } else { + const rootPath = root ? root : this._workspacePath; + uniformPath = fspath.resolve(rootPath, path); + } + + uniformPath = toSlash(uniformPath); + + if (check) { + if (fs.existsSync(uniformPath)) { + return uniformPath; + } else { + vscode.window.showErrorMessage('path ' + uniformPath + ' not exist!'); + return undefined; + } + } else { + return uniformPath; + } + } + + public updateToolChain(toolChain?: ToolChainType) { + if (toolChain) { + if (!validToolChainType(toolChain)) { + vscode.window.showErrorMessage('expect toolChain to be "xilinx"'); + return; + } + this._toolChain = toolChain; + } + } + + public updatePathWisely(obj: Record, + attr: T, + path?: Path | Path[], + root?: AbsPath) { + if (path) { + if (path instanceof Array) { + const actualPaths = []; + for (const p of path) { + const actualPath = this.resolvePath(p, true, root); + if (actualPath) { + actualPaths.push(actualPath); + } + } + obj[attr] = actualPaths; + } else { + const actualPath = this.resolvePath(path, true, root); + if (actualPath) { + obj[attr] = actualPath; + } + } + } + } + + public updatePrjName(prjName?: PrjName) { + if (prjName) { + if (prjName.PL) { + this._prjName.PL = prjName.PL; + } + if (prjName.PS) { + this._prjName.PS = prjName.PS; + } + } + } + + public updateIP_REPO(IP_REPO?: XilinxIP[]) { + if (IP_REPO) { + if (IP_REPO instanceof Array) { + const invalidIPs = IP_REPO.filter(ip => !validXilinxIP(ip)); + if (invalidIPs.length > 0) { + vscode.window.showErrorMessage('detect invalid IPs:' + invalidIPs); + } else { + this._IP_REPO = IP_REPO; + } + } else { + vscode.window.showErrorMessage('expect IP_REPO to be list'); + } + } + } + + public updateSoc(soc?: Soc) { + if (soc) { + if (soc.core) { + this._soc.core = soc.core; + } + if (soc.bd) { + this._soc.bd = soc.bd; + } + if (soc.os) { + this._soc.os = soc.os; + } + if (soc.app) { + this._soc.app = soc.app; + } + } + } + + public updateEnableShowLog(enableShowLog?: boolean) { + if (enableShowLog) { + this._enableShowLog = enableShowLog; + } + } + + public updateDevice(device?: string) { + if (device) { + this._device = device; + } + } + + public updateArch(arch?: Arch) { + if (arch) { + this.updatePathWisely(this.arch, 'prjPath', arch.prjPath); + if (arch.hardware) { + this.updatePathWisely(this.arch.hardware, 'src', arch.hardware.src); + this.updatePathWisely(this.arch.hardware, 'sim', arch.hardware.sim); + this.updatePathWisely(this.arch.hardware, 'data', arch.hardware.data); + } + + if (arch.software) { + this.updatePathWisely(this.arch.software, 'src', arch.software.src); + this.updatePathWisely(this.arch.software, 'data', arch.software.data); + } + } + } + + public updateLibrary(library?: Library) { + if (library) { + if (library.state) { + if (!validLibraryState(library.state)) { + vscode.window.showErrorMessage('expect library.state to be "local", "remote"'); + this._library.state = LibraryState.Unknown; + } else { + this._library.state = library.state; + } + } + if (library.hardware) { + // TODO : finish this when you can require root of common and custom + const commonPath = this._libCommonPath; + const customPath = this._libCustomPath; + this.updatePathWisely(this.library.hardware, 'common', library.hardware.common, commonPath); + this.updatePathWisely(this.library.hardware, 'custom', library.hardware.custom, customPath); + } + } + } + + /** + * merge the input uncomplete prjInfo into this + * cover the value that exist in rawPrjInfo recursively + * reserve the value that not covered in rawPrjInfo + * @param rawPrjInfo + */ + public merge(rawPrjInfo: RawPrjInfo) { + this.updateToolChain(rawPrjInfo.toolChain); + this.updatePrjName(rawPrjInfo.prjName); + this.updateIP_REPO(rawPrjInfo.IP_REPO); + this.updateSoc(rawPrjInfo.soc); + this.updateEnableShowLog(rawPrjInfo.enableShowLog); + this.updateDevice(rawPrjInfo.device); + this.updateArch(rawPrjInfo.arch); + this.updateLibrary(rawPrjInfo.library); + } + + /** + * config init path in prjInfo + * @param extensionPath + * @param workspacePath + */ + public initContextPath(extensionPath: AbsPath, workspacePath: AbsPath) { + this._extensionPath = toSlash(extensionPath); + this._workspacePath = toSlash(workspacePath); + + this._libCommonPath = toSlash(fspath.join(extensionPath, 'lib', 'common')); + this._libCustomPath = vscode.workspace.getConfiguration().get('lib.custom.path', this._workspacePath); + } +}; + + + + +export { + PrjInfo, + PrjInfoDefaults, + PrjName, + Arch, + Soc, + Library, + RawPrjInfo +}; \ No newline at end of file diff --git a/src/global/propertySchema.ts b/src/global/propertySchema.ts new file mode 100644 index 0000000..7a9a4bc --- /dev/null +++ b/src/global/propertySchema.ts @@ -0,0 +1,92 @@ +/* eslint-disable @typescript-eslint/naming-convention */ + +type Type = {type: string}; +type Desc = {description: string}; +type Enum = {enum: T[]}; +type Default = {default: T}; + +interface PrjInfoSchema { + toolChain: Type & Desc & Enum + prjName: { + type: string + default: { + PL: string + } + properties: { + PL: Type & Desc & Default + PS: Type & Desc & Default + } + } + + arch: { + type: string + properties: { + prjPath: Type + hardware: { + type: object + properties: { + src: Type, + sim: Type, + data: Type + } + } + software: { + type: string + properties: { + src: Type, + data: Type + } + } + } + } + + library: { + type: string + properties: { + state: Type & Enum + hardware: { + type: string + properties: { + common: Type, + custom: Type + } + } + } + } + + IP_REPO: Type + + soc: { + type: string + default: { + core: string + } + properties: { + core: Type & Desc & Enum + bd: Type & Desc & Enum + os: Type & Default & Desc & Enum + app: Type & Default & Desc & Enum + }, + dependencies: { + bd: string[] + os: string[] + app: string[] + } + } + + enableShowLog: Type & Desc & Default & Enum + device: Type & Desc & Enum +}; + +interface PropertySchema { + title: string + description: string + type: string + properties: PrjInfoSchema + required: string[] +}; + +export { + PrjInfoSchema, + PropertySchema +}; \ No newline at end of file diff --git a/src/hdlFs/dir.ts b/src/hdlFs/dir.ts new file mode 100644 index 0000000..79c14bd --- /dev/null +++ b/src/hdlFs/dir.ts @@ -0,0 +1,130 @@ +import * as fs from 'fs'; +import * as fspath from 'path'; +import { AbsPath } from '../global'; +import * as hdlPath from './path'; + +function isDir(path: AbsPath): boolean { + if (!fs.existsSync(path)) { + return false; + } + + const state: fs.Stats = fs.statSync(path); + if (state.isDirectory()) { + return true; + } + return false; +} + +function mkdir(path: AbsPath): boolean { + if (!path) { + return false; + } + // 如果存在则直接退出 + if (fs.existsSync(path)) { + return true; + } + + try { + fs.mkdirSync(path, {recursive:true}); + return true; + } + catch (error) { + fs.mkdirSync(path, {recursive:true}); + } + return false; +} + +function rmdir(path: AbsPath): void { + if (fs.existsSync(path)) { + if (fs.statSync(path).isDirectory()) { + const files = fs.readdirSync(path); + for (const file of files) { + const curPath = hdlPath.join(path, file); + if (fs.statSync(curPath).isDirectory()) { // recurse + rmdir(curPath); + } else { // delete file + fs.unlinkSync(curPath); + } + } + fs.rmdirSync(path); + } else { + fs.unlinkSync(path); + } + } +} + +function mvdir(src: AbsPath, dest: AbsPath, cover: boolean): boolean { + if (src === dest) { + return false; + } + + if (cpdir(src, dest, cover)) { + rmdir(src); + return true; + } else { + return false; + } +} + +function cpdir(src: AbsPath, dest: AbsPath, cover: boolean) { + if (src === dest) { + return false; + } + + // 如果不存在或者不为dir则先构建目的文件夹再退出 + if (!isDir(src)) { + mkdir(dest); + return false; + } + + if (!cover) { + cover = true; + } + + let srcName = fspath.basename(src); + dest = fspath.join(dest, srcName); + + let children = fs.readdirSync(src); + + if (!children.length) { + mkdir(dest); + return true; + } + + for (let i = 0; i < children.length; i++) { + const element = children[i]; + // child: path/src/element + const child = fspath.join(src, element); + const state = fs.statSync(child); + if (state.isFile()) { + if (!mkdir(dest)) { + return false; + } + // element is file under src, dest: path/dest/src + const destPath = fspath.join(dest, element); + try { + if (!fs.existsSync(child)) { + fs.copyFileSync(child, destPath); + } else { + if (cover) { + fs.copyFileSync(child, destPath); + } + } + } + catch (error) { + console.log(error); + } + } + if (state.isDirectory()) { + cpdir(child, dest, false); + } + } + + return true; +} + +export { + mkdir, + rmdir, + cpdir +}; \ No newline at end of file diff --git a/src/hdlFs/file.ts b/src/hdlFs/file.ts new file mode 100644 index 0000000..47d491f --- /dev/null +++ b/src/hdlFs/file.ts @@ -0,0 +1,369 @@ +import * as fs from 'fs'; +import * as fspath from 'path'; + +import { AbsPath, RelPath } from '../global'; +import { HdlLangID } from '../global/enum'; +import { verilogExts, vhdlExts, systemVerilogExts, hdlExts } from '../global/lang'; +import * as hdlPath from './path'; +import { HdlFileType } from '../hdlParser/base/common'; +import { opeParam } from '../global'; + +/** + * judge if the path represent a file + * @param path + * @returns + */ +function isFile(path: AbsPath): boolean { + if (!fs.existsSync(path)) { + return false; + } + const state: fs.Stats = fs.statSync(path); + if (state.isDirectory()) { + return false; + } + return true; +} + +/** + * judge if the path represent a Dir + * @param path + * @returns + */ +function isDir(path: AbsPath): boolean { + if (!fs.existsSync(path)) { + return false; + } + + const state: fs.Stats = fs.statSync(path); + if (state.isDirectory()) { + return true; + } + return false; +} + +function isVerilogFile(path: AbsPath): boolean { + if (!isFile(path)) { + return false; + } + const ext = hdlPath.extname(path, false); + return verilogExts.includes(ext); +} + +function isVhdlFile(path: AbsPath): boolean { + if (!isFile(path)) { + return false; + } + const ext = hdlPath.extname(path, false); + return vhdlExts.includes(ext); +} + +function isSystemVerilogFile(path: AbsPath): boolean { + if (!isFile(path)) { + return false; + } + const ext = hdlPath.extname(path, false); + return systemVerilogExts.includes(path); +} + +function isHDLFile(path: AbsPath): boolean { + if (!isFile(path)) { + return false; + } + const ext = hdlPath.extname(path, false); + return hdlExts.includes(ext); +} + + +function getHDLFiles(path: AbsPath, ignores?: AbsPath[]) { + return pickFileRecursive(path, ignores, (filePath) => { + return isHDLFile(filePath); + }); +} + + +function pickFileRecursive(path: AbsPath | AbsPath[], ignores?: AbsPath[], condition?: (filePath: string) => boolean | undefined | void): AbsPath[] { + if (path instanceof Array) { + const hdlFiles: AbsPath[] = []; + path.forEach(p => hdlFiles.push(...pickFileRecursive(p))); + return hdlFiles; + } + + if (isDir(path)) { + // return if ignore have path + if (ignores?.includes(path)) { + return []; + } + + const hdlFiles = []; + for (const file of fs.readdirSync(path)) { + const filePath = hdlPath.join(path, file); + if (isDir(filePath)) { + const subHdlFiles = getHDLFiles(filePath, ignores); + if (subHdlFiles.length > 0) { + hdlFiles.push(...subHdlFiles); + } + } else if ( + (condition && condition(filePath)) + || (condition === undefined) + ) { + hdlFiles.push(filePath); + } + } + return hdlFiles; + } else if ( + (condition && condition(path)) + || (condition === undefined) + ) { + return [path]; + } else { + return []; + } +} + + +/** + * get language id of a file + * @param path + * @returns + */ +function getLanguageId(path: AbsPath | RelPath): HdlLangID { + if (!isFile(path)) { + return HdlLangID.Unknown; + } + const ext = hdlPath.extname(path, false); + if (verilogExts.includes(path)) { + return HdlLangID.Verilog; + } else if (vhdlExts.includes(path)) { + return HdlLangID.Vhdl; + } else if (systemVerilogExts.includes(path)) { + return HdlLangID.SystemVerilog; + } else { + return HdlLangID.Unknown; + } +} + + +function getHdlFileType(path: AbsPath) : HdlFileType { + const uniformPath = hdlPath.toSlash(path); + const arch = opeParam.prjInfo.arch; + const srcPath: AbsPath = arch.hardware.src; + const simPath: AbsPath = arch.hardware.sim; + const wsPath: AbsPath = opeParam.workspacePath; + if (uniformPath.includes(srcPath)) { + return HdlFileType.Src; + } else if (uniformPath.includes(simPath)) { + return HdlFileType.Sim; + } else if (uniformPath.includes(wsPath)) { + return HdlFileType.LocalLib; + } else { + return HdlFileType.RemoteLib; + } +} + + +function readFile(path: AbsPath): string | undefined { + try { + const content = fs.readFileSync(path, 'utf-8'); + return content; + } catch (error) { + console.log(error); + return undefined; + } +} + +function writeFile(path: AbsPath, content: string): boolean { + try { + const parent = fspath.dirname(path); + fs.mkdirSync(parent, {recursive: true}); + fs.writeFileSync(path, content); + return true; + } catch (error) { + console.log(error); + return false; + } +} + +function readJSON(path: AbsPath): object { + try { + const context = fs.readFileSync(path, 'utf-8'); + return JSON.parse(context); + } catch (err) { + console.log('fail to read JSON: ', err); + } + return {}; +} + +function writeJSON(path: AbsPath, obj: object): boolean { + try { + const jsonString = JSON.stringify(obj, null, '\t'); + return writeFile(path, jsonString); + } catch (err) { + console.log('fail to write to ' + path + ': ', err); + } + return false; +} + +function removeFile(path: AbsPath): boolean { + if (!isFile(path)) { + return false; + } + + try { + fs.unlinkSync(path); + return true; + } catch (error) { + console.log(error); + } + return false; +} + +function moveFile(src: AbsPath, dest: AbsPath, cover: boolean = true): boolean { + if (src === dest) { + return false; + } + + if (!isFile(src)) { + return false; + } + + if (!cover) { + cover = true; + } + + copyFile(src, dest, cover); + try { + fs.unlinkSync(src); + return true; + } catch (error) { + console.log(error); + } + return false; +} + +function copyFile(src: AbsPath, dest: AbsPath, cover: boolean = true): boolean { + if (src === dest) { + return false; + } + + if (!isFile(src)) { + return false; + } + + if (!cover) { + cover = true; + } + + try { + let parent = fspath.dirname(dest); + fs.mkdirSync(parent, {recursive: true}); + if (!fs.existsSync(dest) || cover) { + fs.copyFileSync(src, dest); + } + return true; + } catch (error) { + console.log(error); + return false; + } +} + +/** + * remove folder or file by path + * @param path +*/ +function rmSync(path: AbsPath): void { + if (fs.existsSync(path)) { + if (fs.statSync(path).isDirectory()) { + const files = fs.readdirSync(path); + for (const file of files) { + const curPath = hdlPath.join(path, file); + if (fs.statSync(curPath).isDirectory()) { // recurse + rmSync(curPath); + } else { // delete file + fs.unlinkSync(curPath); + } + } + fs.rmdirSync(path); + } else { + fs.unlinkSync(path); + } + } +} + +/** + * check if obj have attr + * @param obj + * @param attr attribution or attributions, split by '.' + * @returns + */ +function isHasAttr(obj: any, attr: string): boolean{ + if (!obj) { + return false; + } + let tempObj = obj; + attr = attr.replace(/\[(\w+)\]/g, '.$1'); + attr = attr.replace(/^\./, ''); + + let keyArr = attr.split('.'); + for (let i = 0; i < keyArr.length; i++) { + const element = keyArr[i]; + if (!tempObj) { + return false; + } + if (element in tempObj) { + tempObj = tempObj[element]; + } else { + return false; + } + } + return true; +} + + +function isHasValue(obj: any, attr: string, value: any): boolean{ + if (!obj) { + return false; + } + let tempObj = obj; + attr = attr.replace(/\[(\w+)\]/g, '.$1'); + attr = attr.replace(/^\./, ''); + + let keyArr = attr.split('.'); + for (let i = 0; i < keyArr.length; i++) { + const element = keyArr[i]; + if (!tempObj) { + return false; + } + if (element in tempObj) { + tempObj = tempObj[element]; + if (i === keyArr.length - 1 && tempObj !== value) { + return false; + } + } else { + return false; + } + } + return true; +} + +export { + isFile, + isDir, + isVerilogFile, + isVhdlFile, + isSystemVerilogFile, + isHDLFile, + getHDLFiles, + getLanguageId, + readFile, + writeFile, + readJSON, + writeJSON, + rmSync, + getHdlFileType, + pickFileRecursive, + isHasAttr, + isHasValue, + copyFile, + removeFile, + moveFile +}; \ No newline at end of file diff --git a/src/hdlFs/icons.ts b/src/hdlFs/icons.ts new file mode 100644 index 0000000..608bb00 --- /dev/null +++ b/src/hdlFs/icons.ts @@ -0,0 +1,26 @@ +import { opeParam, AbsPath, Enum } from '../global'; +import * as hdlPath from './path'; + +interface IconConfig { + light: AbsPath + dark: AbsPath +}; + +function getIconPath(themeType: Enum.ThemeType, iconName: string): AbsPath { + const iconFile = iconName + '.svg'; + const svgDir = hdlPath.join(opeParam.extensionPath, 'images', 'svg'); + const iconPath = hdlPath.join(svgDir, themeType, iconFile); + return iconPath; +} + +function getIconConfig(iconName: string): IconConfig { + return { + light: getIconPath(Enum.ThemeType.Light, iconName), + dark: getIconPath(Enum.ThemeType.Dark, iconName) + }; +} + +module.exports = { + getIconPath, + getIconConfig +}; \ No newline at end of file diff --git a/src/hdlFs/index.ts b/src/hdlFs/index.ts new file mode 100644 index 0000000..f5aa128 --- /dev/null +++ b/src/hdlFs/index.ts @@ -0,0 +1,11 @@ +import * as hdlFile from './file'; +import * as hdlPath from './path'; +import * as hdlDir from './dir'; +import * as hdlIcon from './icons'; + +export { + hdlFile, + hdlPath, + hdlDir, + hdlIcon +}; \ No newline at end of file diff --git a/src/hdlFs/path.ts b/src/hdlFs/path.ts new file mode 100644 index 0000000..1cd29ee --- /dev/null +++ b/src/hdlFs/path.ts @@ -0,0 +1,87 @@ +import * as fspath from 'path'; + +import { AbsPath, RelPath } from '../global'; + +/** + * @param path + * @returns + */ +function toSlash(path: AbsPath | RelPath): AbsPath | RelPath { + return path.replace(/\\/g,"\/"); +} + +/** + * resolve an absolute path of a relative path in an absolute path + * @param curPath current path of the file + * @param relPath relative path in curPath + * @returns + */ +function rel2abs(curPath: AbsPath, relPath: RelPath): AbsPath { + if (fspath.isAbsolute(relPath)) { + return relPath; + } + const curDirPath = fspath.dirname(curPath); + const absPath = fspath.resolve(curDirPath, relPath); + return toSlash(absPath); +} + +/** + * cat paths with '/' + * @param paths + * @returns + */ +function join(...paths: string[]): AbsPath | RelPath { + return paths.join('/'); +} + + +/** + * resolve paths with '/' + * @param paths + * @returns + */ +function resolve(...paths: string[]): AbsPath | RelPath { + const absPath = fspath.resolve(...paths); + return toSlash(absPath); +} + + +/** + * get the extname of a path + * @param path + * @param reserveSplitor + * @returns reserveSplitor=true src/file.txt -> .txt + * reserveSplitor=false src/file.txt -> txt + */ +function extname(path: AbsPath | RelPath, reserveSplitor: boolean = true): string { + let ext = fspath.extname(path).toLowerCase(); + if (!reserveSplitor && ext.startsWith('.')) { + ext = ext.substring(1); + } + return ext; +} + +function basename(path: AbsPath | RelPath) { + return fspath.basename(path, extname(path, true)); +} + + +/** + * get the file name of a path + * @param path + * @returns src/file.txt -> file + */ +function filename(path: AbsPath | RelPath): string { + const ext = extname(path, true); + return fspath.basename(path, ext); +} + +export { + toSlash, + rel2abs, + join, + resolve, + filename, + extname, + basename +}; \ No newline at end of file diff --git a/src/hdlFs/vrfs.ts b/src/hdlFs/vrfs.ts new file mode 100644 index 0000000..e69de29 diff --git a/src/hdlParser/base/common.ts b/src/hdlParser/base/common.ts new file mode 100644 index 0000000..ff94339 --- /dev/null +++ b/src/hdlParser/base/common.ts @@ -0,0 +1,127 @@ +/* eslint-disable @typescript-eslint/naming-convention */ + +import { AbsPath, RelPath } from '../../global'; + +interface Position { + // row/line of the cursor, index from 0 + line: number + + // col of the cursor, index from 0 + character: number +}; + +interface Range { + start: Position + end: Position +}; + + +enum HdlModulePortType { + Inout = 'inout', + Output = 'output', + Input = 'input', + Unknown = 'Unknown' +}; + +enum HdlModuleParamType {LocalParam, Parameter, Unknown}; + +enum HdlFileType { + Src = 'src', + Sim = 'sim', + LocalLib = 'local_lib', + RemoteLib = 'remote_lib' +}; +enum InstModPathStatus {Current, Include, Others, Unknown}; + +interface Error { + severity: number + message: string + source: string + range: Range +}; + +interface Define { + // `define A out + // name is "A", value is "out" + name: string + value: string + range: Position +}; + +interface Include { + // path is the value in the `include + path: AbsPath + range: Range +}; + + +interface Macro { + errors: Error[] // error + defines: Define[] // define macro + includes: Include[] // include + invalid: Range[] // invalid set of range +}; + +interface HdlModulePort { + name: string + type: HdlModulePortType + width: string + range: Range +}; + +interface HdlModuleParam { + name: string + // TODO : make out type of "type" + type: string + init: string + range: Range +}; + +type InstRange = Range | null; + +interface RawHdlInstance { + name: string + type: string + instparams: InstRange + instports: InstRange + range: Range +}; + +interface RawHdlModule { + name: string + params: HdlModuleParam[] + ports: HdlModulePort[] + instances: RawHdlInstance[] + range: Range +}; + +interface InstModPathSearchResult { + path: AbsPath + status: InstModPathStatus +}; + +interface HdlDependence { + current: AbsPath[] + include: AbsPath[] + others: AbsPath[] +}; + +export { + Position, + Range, + InstRange, + HdlModulePortType, + HdlModuleParamType, + HdlFileType, + InstModPathStatus, + Error, + Define, + Include, + Macro, + HdlModulePort, + HdlModuleParam, + RawHdlInstance, + RawHdlModule, + InstModPathSearchResult, + HdlDependence +}; \ No newline at end of file diff --git a/src/hdlParser/base/core.ts b/src/hdlParser/base/core.ts new file mode 100644 index 0000000..f0b3fe9 --- /dev/null +++ b/src/hdlParser/base/core.ts @@ -0,0 +1,526 @@ +import { AbsPath } from '../../global'; +import { HdlLangID } from '../../global/enum'; + +import * as common from './common'; +import { hdlFile, hdlPath } from '../../hdlFs'; + +class HdlParam { + private readonly topModules : Set = new Set(); + private readonly srcTopModules : Set = new Set(); + private readonly simTopModules : Set = new Set(); + private readonly pathToHdlFiles : Map = new Map(); + private readonly modules : Set = new Set(); + private readonly unhandleInstances : Set = new Set(); + + public hasHdlFile(path: AbsPath): boolean { + const moduleFile = this.getHdlFile(path); + if (!moduleFile) { + return false; + } + return true; + } + + public getHdlFile(path: AbsPath): HdlFile | undefined { + return this.pathToHdlFiles.get(path); + } + + public getAllHdlFiles(): HdlFile[] { + const hdlFiles = []; + for (const [_, hdlFile] of this.pathToHdlFiles) { + hdlFiles.push(hdlFile); + } + return hdlFiles; + } + + public addHdlFile(hdlFile: HdlFile) { + const path = hdlFile.path; + this.pathToHdlFiles.set(path, hdlFile); + } + + public hasHdlModule(path: AbsPath, name: string): boolean { + const hdlFile = this.getHdlFile(path); + if (!hdlFile) { + return false; + } + const hdlModule = hdlFile.getHdlModule(name); + if (!hdlModule) { + return false; + } + return true; + } + + public getHdlModule(path: AbsPath, name: string): HdlModule | undefined { + const hdlFile = this.getHdlFile(path); + if (!hdlFile) { + return undefined; + } + return hdlFile.getHdlModule(name); + } + + public addHdlModule(hdlModule: HdlModule) { + this.modules.add(hdlModule); + } + + /** + * add module to global top modules + * @param hdlModule + */ + public addTopModule(hdlModule: HdlModule) { + this.topModules.add(hdlModule); + } + + public deleteTopModule(hdlModule: HdlModule) { + this.topModules.delete(hdlModule); + } + + public selectTopModuleSourceByFileType(hdlModule: HdlModule): Set { + switch (hdlModule.file.type) { + case common.HdlFileType.Src: return this.srcTopModules; + case common.HdlFileType.Sim: return this.simTopModules; + case common.HdlFileType.LocalLib: return this.srcTopModules; + case common.HdlFileType.RemoteLib: return this.srcTopModules; + default: return this.srcTopModules; + } + } + + /** + * add module to top modules of a certain source (sim or src) + * @param hdlModule + */ + public addTopModuleToSource(hdlModule: HdlModule) { + const topModuleSource = this.selectTopModuleSourceByFileType(hdlModule); + topModuleSource.add(hdlModule); + } + + public deleteTopModuleToSource(hdlModule: HdlModule) { + const topModuleSource = this.selectTopModuleSourceByFileType(hdlModule); + topModuleSource.delete(hdlModule); + } + + public getAllDependences(path: AbsPath, name: string): common.HdlDependence | undefined { + const module = this.getHdlModule(path, name); + if (!module) { + return undefined; + } + + const dependencies : common.HdlDependence = { + current: [], + include: [], + others: [] + }; + + for (const inst of module.getAllInstances()) { + if (!inst.module) { + continue; + } + const status = inst.instModPathStatus; + if (status === common.InstModPathStatus.Current && inst.instModPath) { + dependencies.current.push(inst.instModPath); + } else if (status === common.InstModPathStatus.Include && inst.instModPath) { + dependencies.include.push(inst.instModPath); + } else if (status === common.InstModPathStatus.Others && inst.instModPath) { + dependencies.others.push(inst.instModPath); + } + const instDependencies = this.getAllDependences(inst.module.path, inst.module.name); + if (instDependencies) { + dependencies.current.push(...instDependencies.current); + dependencies.include.push(...instDependencies.include); + dependencies.others.push(...instDependencies.others); + } + } + + return dependencies; + } + + public getUnhandleInstanceByType(typeName: string): HdlInstance | undefined { + for (const inst of this.unhandleInstances) { + if (inst.type === typeName) { + return inst; + } + } + return undefined; + } + + public addUnhandleInstance(inst: HdlInstance) { + this.unhandleInstances.add(inst); + } + + public deleteUnhandleInstance(inst: HdlInstance) { + this.unhandleInstances.delete(inst); + } + +}; + +const hdlParam = new HdlParam(); + +class HdlInstance { + name: string; // name of the instance + type: string; // type + range: common.Range; // range of instance + instModPath: AbsPath | undefined; // path of the definition + instModPathStatus: common.InstModPathStatus; // status of the instance (current, include, others) + instparams: common.InstRange; // range of params + instports: common.InstRange; // range of ports + parentMod: HdlModule; // HdlModule that the instance serves + module: HdlModule | undefined; // module + + constructor(name: string, + type: string, + instModPath: string | undefined, + instModPathStatus: common.InstModPathStatus, + instparams: common.InstRange, + instports: common.InstRange, + range: common.Range, + parentMod: HdlModule + ) { + this.name = name; + this.type = type; + this.parentMod = parentMod; + this.instparams = instparams; + this.instports = instports; + this.instModPath = instModPath; + this.instModPathStatus = instModPathStatus; + this.range = range; + this.module = undefined; + + // solve dependency + this.locateHdlModule(); + } + + public locateHdlModule() { + const instModPath = this.instModPath; + const instModName = this.type; + + if (instModPath) { + this.module = hdlParam.getHdlModule(instModPath, instModName); + // add refer for module + this.module?.addGlobalReferedInstance(this); + // if module and parent module share the same source (e.g both in src folder) + if (this.isSameSource()) { + this.module?.addLocalReferedInstance(this); + } + } + } + + /** + * judge if the instance is a cross source reference + * e.g. this.module is from src, this.parentMod is from sim, then + * isSameSource will return false, meaning that the instance is a cross source reference + * + * a cross source reference won't affect the top module reference of this.module, + * meaning that a top module in one source can have its instance in other source + */ + public isSameSource(): boolean { + const parentMod = this.parentMod; + const instMod = this.module; + if (instMod) { + return parentMod.file.type === instMod.file.type; + } + return false; + } +}; + +class HdlModule { + file: HdlFile; + name: string; + range: common.Range; + params: common.HdlModuleParam[]; + ports: common.HdlModulePort[]; + private rawInstances: common.RawHdlInstance[]; + private nameToInstances: Map; + private unhandleInstances: Set; + private globalRefers: Set; + private localRefers: Set; + + constructor(file: HdlFile, + name: string, + range: common.Range, + params: common.HdlModuleParam[], + ports: common.HdlModulePort[], + instances: common.RawHdlInstance[]) { + + this.file = file; + this.name = name; + this.range = range; + this.params = params; + this.ports = ports; + + // make instance + this.rawInstances = instances; + this.nameToInstances = new Map(); + + // add in hdlParam data structure + // default both top module in top module and local top module (sim/src) + hdlParam.addTopModule(this); + hdlParam.addTopModuleToSource(this); + hdlParam.addHdlModule(this); + + // log reference (its instance) + // represents all the instance from this + this.globalRefers = new Set(); + + // represents all the instance from this created in the same scope + // scope: src or sim (lib belongs to src) + // localRefers subset to refers + this.localRefers = new Set(); + + // make unhandleInstances + this.unhandleInstances = new Set(); + } + + public get path() : string { + return this.file.path; + } + + public getInstance(name: string): HdlInstance | undefined { + return this.nameToInstances.get(name); + } + + public getAllInstances(): HdlInstance[] { + const hdlInstances: HdlInstance[] = []; + for (const inst of this.nameToInstances.values()) { + hdlInstances.push(inst); + } + return hdlInstances; + } + + public getInstanceNum(): number { + return this.nameToInstances.size; + } + + public createHdlInstance(rawHdlInstance: common.RawHdlInstance): HdlInstance { + const instModName = rawHdlInstance.type; + const searchResult = this.searchInstModPath(instModName); + const hdlInstance = new HdlInstance(rawHdlInstance.name, + rawHdlInstance.type, + searchResult.path, + searchResult.status, + rawHdlInstance.instparams, + rawHdlInstance.instports, + rawHdlInstance.range, + this); + if (!searchResult.path) { + hdlParam.addUnhandleInstance(hdlInstance); + this.addUnhandleInstance(hdlInstance); + } + if (this.nameToInstances) { + this.nameToInstances.set(rawHdlInstance.name, hdlInstance); + } + return hdlInstance; + } + + public deleteInstanceByName(name: string) { + const inst = this.getInstance(name); + this.deleteInstance(inst); + } + + public deleteInstance(inst: HdlInstance | undefined) { + if (inst) { + this.deleteUnhandleInstance(inst); + hdlParam.deleteUnhandleInstance(inst); + if (this.nameToInstances) { + this.nameToInstances.delete(inst.name); + } + // delete reference from instance's instMod + const instMod = inst.module; + if (instMod) { + instMod.deleteGlobalReferedInstance(inst); + if (inst.isSameSource()) { + instMod.deleteLocalReferedInstance(inst); + } + } + } + } + + private searchInstModPath(instModName: string): common.InstModPathSearchResult { + // search path of instance + // priority: "current file" -> "included files" -> "other hdls in the project" + + // prepare for "other hdls in the project" + const excludeFile = new Set([this.file]); + + // search all the modules in the current file + for (const name of this.file.getAllModuleNames()) { + if (instModName === name) { + return {path : this.path, status: common.InstModPathStatus.Current}; + } + } + + + // search included file + for (const include of this.file.macro.includes) { + const absIncludePath = hdlPath.rel2abs(this.path, include.path); + const includeFile = hdlParam.getHdlFile(absIncludePath); + if (includeFile) { + excludeFile.add(includeFile); + if (includeFile.hasHdlModule(instModName)) { + return {path: includeFile.path, status: common.InstModPathStatus.Include}; + } + } + } + + // search other files in the project + for (const hdlFile of hdlParam.getAllHdlFiles()) { + if (!excludeFile.has(hdlFile) && hdlFile.hasHdlModule(instModName)) { + return {path: hdlFile.path, status: common.InstModPathStatus.Others}; + } + } + + return {path: '', status: common.InstModPathStatus.Unknown}; + } + + public addUnhandleInstance(inst: HdlInstance) { + this.unhandleInstances.add(inst); + } + + public deleteUnhandleInstance(inst: HdlInstance) { + this.unhandleInstances.delete(inst); + } + + public getAllGlobalRefers(): Set { + return this.globalRefers; + } + + public getAllLocalRefers(): Set { + return this.localRefers; + } + + public addGlobalReferedInstance(inst: HdlInstance) { + const globalRefers = this.globalRefers; + globalRefers.add(inst); + if (globalRefers.size > 0) { + hdlParam.deleteTopModule(this); + } + } + + public deleteGlobalReferedInstance(inst: HdlInstance) { + const globalRefers = this.globalRefers; + globalRefers.delete(inst); + if (globalRefers.size === 0) { + hdlParam.addTopModule(this); + } + } + + public addLocalReferedInstance(inst: HdlInstance) { + const localRefers = this.localRefers; + localRefers.add(inst); + if (localRefers.size > 0) { + hdlParam.deleteTopModuleToSource(this); + } + } + + public deleteLocalReferedInstance(inst: HdlInstance) { + const localRefers = this.localRefers; + localRefers.delete(inst); + if (localRefers.size === 0) { + hdlParam.addTopModuleToSource(this); + } + } + + public solveUnhandleInstance() { + const inst = hdlParam.getUnhandleInstanceByType(this.name); + + if (inst) { + const userModule = inst.parentMod; + // match a inst with the same type name of the module + // remove from unhandle list + hdlParam.deleteUnhandleInstance(inst); + userModule.deleteUnhandleInstance(inst); + + // assign instModPath + inst.instModPath = this.path; + + // judge the type of instModPathStatus + if (userModule.path === this.path) { + inst.instModPathStatus = common.InstModPathStatus.Current; + } else { + const userIncludePaths = userModule.file.macro.includes.map( + include => hdlPath.rel2abs(userModule.path, include.path)); + if (userIncludePaths.includes(this.path)) { + inst.instModPathStatus = common.InstModPathStatus.Include; + } else { + inst.instModPathStatus = common.InstModPathStatus.Others; + } + } + + // assign module in the instance + inst.locateHdlModule(); + } + } +}; + +class HdlFile { + path: string; + languageId: HdlLangID; + type: common.HdlFileType; + macro: common.Macro; + private readonly nameToModule: Map; + + constructor(path: string, + languageId: HdlLangID, + macro: common.Macro, + modules: common.RawHdlModule[]) { + + this.path = path; + this.languageId = languageId; + this.macro = macro; + this.type = hdlFile.getHdlFileType(path); + + // add to global hdlParam + hdlParam.addHdlFile(this); + + // make nameToModule + this.nameToModule = new Map(); + for (const rawHdlModule of modules) { + this.createHdlModule(rawHdlModule); + } + } + + public createHdlModule(rawHdlModule: common.RawHdlModule): HdlModule { + const module: HdlModule = new HdlModule(this, + rawHdlModule.name, + rawHdlModule.range, + rawHdlModule.params, + rawHdlModule.ports, + rawHdlModule.instances); + this.nameToModule.set(rawHdlModule.name, module); + return module; + } + + public hasHdlModule(name: string): boolean { + return this.nameToModule.has(name); + } + + public getHdlModule(name: string): HdlModule | undefined { + return this.nameToModule.get(name); + } + + public getAllModuleNames(): string[] { + const names: string[] = []; + for (const [name, _] of this.nameToModule) { + names.push(name); + } + return names; + } + + public getAllHdlModules(): HdlModule[] { + const hdlModules: HdlModule[] = []; + for (const hdlModule of this.nameToModule.values()) { + hdlModules.push(hdlModule); + } + return hdlModules; + } + + public deleteHdlModule(name: string) { + const hdlModule = this.getHdlModule(name); + if (hdlModule) { + + } + } + +} + + +export { + hdlParam +}; \ No newline at end of file diff --git a/src/hdlParser/parser/.gitignore b/src/hdlParser/parser/.gitignore new file mode 100644 index 0000000..6a8468e --- /dev/null +++ b/src/hdlParser/parser/.gitignore @@ -0,0 +1,2 @@ +parser.js +parser.wasm \ No newline at end of file diff --git a/src/manager/PL/xilinx.ts b/src/manager/PL/xilinx.ts new file mode 100644 index 0000000..a689b36 --- /dev/null +++ b/src/manager/PL/xilinx.ts @@ -0,0 +1,830 @@ +/* eslint-disable @typescript-eslint/naming-convention */ +import * as vscode from 'vscode'; +import { exec } from 'child_process'; +import * as fspath from 'path'; +import * as fs from 'fs'; + +import { AbsPath, opeParam, PrjInfo } from '../../global'; +import { hdlParam } from '../../hdlParser/base/core'; +import { hdlFile, hdlDir, hdlPath } from '../../hdlFs'; +import { PropertySchema } from '../../global/propertySchema'; + +import { XilinxIP } from '../../global/enum'; +import { MainOutput } from '../../global/outputChannel'; + +interface XilinxCustom { + ip_repo: AbsPath, + bdRepo: AbsPath +}; + +interface TopMod { + src: string, + sim: string +}; + +interface PLConfig { + terminal? : vscode.Terminal | null, + tool? : string, // 工具类型 + path? : string, // 第三方工具运行路径 + ope? : XilinxOperation, +}; + +interface PLPrjInfo { + path : AbsPath, + name : string, + device : string +}; + +interface BootInfo { + outsidePath : AbsPath, + insidePath : AbsPath, + outputPath : AbsPath, + elfPath : AbsPath, + bitPath : AbsPath, + fsblPath : AbsPath +}; + + +/** + * xilinx operation under PL + */ +class XilinxOperation { + public setting: vscode.WorkspaceConfiguration; + public xipRepo: XilinxIP[]; + public xipPath: AbsPath; + public xbdPath: AbsPath; + public xilinxPath: AbsPath; + public prjPath: AbsPath; + public srcPath: AbsPath; + public simPath: AbsPath; + public datPath: AbsPath; + public softSrc: AbsPath; + public HWPath: AbsPath; + public extensionPath: AbsPath; + public prjConfig: PrjInfo; + + public custom: XilinxCustom; + public topMod: TopMod; + public prjInfo: PLPrjInfo; + + constructor() { + this.setting = vscode.workspace.getConfiguration(); + + this.xipRepo = opeParam.prjInfo.IP_REPO; + this.xipPath = hdlPath.join(opeParam.extensionPath, 'IP_repo'); + this.xbdPath = hdlPath.join(opeParam.extensionPath, 'lib', 'xilinx', 'bd'); + this.xilinxPath = hdlPath.join(opeParam.extensionPath, 'resources', 'script', 'xilinx'); + + this.prjPath = opeParam.prjInfo.arch.prjPath; + this.srcPath = opeParam.prjInfo.arch.hardware.src; + this.simPath = opeParam.prjInfo.arch.hardware.sim; + this.datPath = opeParam.prjInfo.arch.hardware.data; + + this.softSrc = opeParam.prjInfo.arch.software.src; + this.HWPath = fspath.dirname(this.srcPath); + this.extensionPath = opeParam.extensionPath; + this.prjConfig = opeParam.prjInfo; + + this.custom = { + ip_repo : this.setting.get('PRJ.xilinx.IP.repo.path', ''), + bdRepo : this.setting.get('PRJ.xilinx.BD.repo.path', ''), + }; + + this.topMod = { + src : opeParam.firstSrcTopModule.name, + sim : opeParam.firstSimTopModule.name, + }; + + this.prjInfo = { + path : hdlPath.join(this.prjPath, 'xilinx'), + name : opeParam.prjInfo.prjName.PL, + device : opeParam.prjInfo.device + }; + + const _this = this; + vscode.workspace.onDidChangeConfiguration(e => _this.getConfig()); + } + + getConfig() { + this.xipRepo = opeParam.prjInfo.IP_REPO; + this.xipPath = hdlPath.join(opeParam.extensionPath, 'IP_repo'); + this.xbdPath = hdlPath.join(opeParam.extensionPath, 'lib', 'xilinx', 'bd'); + this.xilinxPath = hdlPath.join(opeParam.extensionPath, 'resources', 'script', 'xilinx'); + + this.prjPath = opeParam.prjInfo.arch.prjPath; + this.srcPath = opeParam.prjInfo.arch.hardware.src; + this.simPath = opeParam.prjInfo.arch.hardware.sim; + this.datPath = opeParam.prjInfo.arch.hardware.data; + + this.softSrc = opeParam.prjInfo.arch.software.src; + this.HWPath = fspath.dirname(this.srcPath); + this.extensionPath = opeParam.extensionPath; + this.prjConfig = opeParam.prjInfo; + + this.custom = { + ip_repo : this.setting.get('PRJ.xilinx.IP.repo.path', ''), + bdRepo : this.setting.get('PRJ.xilinx.BD.repo.path', ''), + }; + + this.topMod = { + src : opeParam.firstSrcTopModule.name, + sim : opeParam.firstSimTopModule.name, + }; + } + + /** + * xilinx下的launch运行,打开存在的工程或者再没有工程时进行新建 + * @param config + */ + async launch(config: PLConfig): Promise { + let scripts: string[] = []; + + let prjFilePath = this.prjPath as AbsPath; + const prjFiles = hdlFile.pickFileRecursive(prjFilePath, [], + filePath => filePath.endsWith('.xpr')); + + if (prjFiles.length) { + if (prjFiles.length > 1) { + const selection = await vscode.window.showQuickPick(prjFiles, { placeHolder : "Which project you want to open?" }); + if (selection) { + this.open(selection, scripts); + } + } else { + prjFilePath = prjFiles[0]; + this.open(prjFilePath, scripts); + } + } else { + if (!hdlDir.mkdir(this.prjInfo.path)) { + vscode.window.showErrorMessage(`mkdir ${this.prjInfo.path} failed`); + return undefined; + } + + this.create(scripts); + } + + const tclPath = hdlPath.join(this.xilinxPath, 'launch.tcl'); + scripts.push(this.refresh({terminal: null})); + scripts.push(`file delete ${tclPath} -force`); + const tclCommands = scripts.join('\n') + '\n'; + + hdlFile.writeFile(tclPath, tclCommands); + + const argu = `-notrace -nolog -nojournal`; + const cmd = `${config.path} -mode tcl -s ${tclPath} ${argu}`; + config.terminal?.show(true); + config.terminal?.sendText(cmd); + } + + create(scripts: string[]) { + scripts.push(`set_param general.maxThreads 8`); + scripts.push(`create_project ${this.prjInfo.name} ${this.prjInfo.path} -part ${this.prjInfo.device} -force`); + scripts.push(`set_property SOURCE_SET source_1 [get_filesets sim_1]`); + scripts.push(`set_property top_lib xil_defaultlib [get_filesets sim_1]`); + scripts.push(`update_compile_order -fileset sim_1 -quiet`); + } + + open(path: AbsPath, scripts: string[]) { + scripts.push(`set_param general.maxThreads 8`); + scripts.push(`open_project ${path} -quiet`); + } + + refresh(config: PLConfig): string { + const scripts: string[] = []; + // 清除所有源文件 + scripts.push(`remove_files -quiet [get_files]`); + + // 导入 IP_repo_paths + scripts.push(`set xip_repo_paths {}`); + + if (fs.existsSync(this.custom.ip_repo)) { + scripts.push(`lappend xip_repo_paths ${this.custom.ip_repo}`); + } + + this.xipRepo.forEach( + ip => scripts.push(`lappend xip_repo_paths ${this.xipPath}/${ip}`)); + + scripts.push(`set_property ip_repo_paths $xip_repo_paths [current_project] -quiet`); + scripts.push(`update_ip_catalog -quiet`); + + // 导入bd设计源文件 + if (hdlFile.isHasAttr(this.prjConfig, "SOC.bd")) { + const bd = this.prjConfig.soc.bd; + const bdFile = bd + '.bd'; + let bdSrcPath = hdlPath.join(this.xbdPath, bdFile); + if (!hdlFile.isFile(bdSrcPath)) { + bdSrcPath = hdlPath.join(this.custom.bdRepo, bdFile); + } + + if (!hdlFile.isFile(bdSrcPath)) { + vscode.window.showErrorMessage(`can not find ${bd}.bd in ${this.xbdPath} and ${this.custom.bdRepo}`); + } else { + if (hdlFile.copyFile( + bdSrcPath, + hdlPath.join(this.HWPath, 'bd', bd, bdFile) + )) { + vscode.window.showErrorMessage(`cp ${bd} failed, can not find ${bdSrcPath}`); + } + } + + const bdPaths = [ + hdlPath.join(this.HWPath, 'bd'), + hdlPath.join(this.prjInfo.path, this.prjInfo.name + '.src', 'source_1', 'bd') + ]; + + hdlFile.pickFileRecursive(bdPaths, [], (filePath) => { + if (filePath.endsWith('.bd')) { + scripts.push(`add_files ${filePath} -quiet`); + scripts.push(`add_files ${fspath.dirname(filePath)}/hdl -quiet`); + } + }); + + if (bd) { + const loadBdPath = hdlPath.join(this.HWPath, 'bd', bd, bdFile); + scripts.push(`generate_target all [get_files ${loadBdPath}] -quiet`); + scripts.push(`make_wrapper -files [get_files ${loadBdPath}] -top -quiet`); + scripts.push(`open_bd_design ${loadBdPath} -quiet`); + } + } + + const mrefPath = hdlPath.join(this.HWPath, 'bd', 'mref'); + hdlFile.pickFileRecursive(mrefPath, [], filePath => { + if (filePath.endsWith('.tcl')) { + scripts.push(`source ${filePath}`); + } + }); + + // 导入ip设计源文件 + const ipPaths = [ + hdlPath.join(this.HWPath, 'ip'), + hdlPath.join(this.prjInfo.path, this.prjInfo.name + '.src', 'source_1', 'ip') + ]; + + hdlFile.pickFileRecursive(ipPaths, [], filePath => { + if (filePath.endsWith('.xci')) { + scripts.push(`add_files ${filePath} -quiet`); + } + }); + + // 导入非本地的设计源文件 + const HDLFiles = hdlParam.getAllHdlFiles(); + for (const file of HDLFiles) { + if (file.type === "src") { + scripts.push(`add_files ${file.path} -quiet`); + } else if (file.type === "sim") { + scripts.push(`add_files -fileset sim_1 ${file.path} -quiet`); + } + } + + scripts.push(`add_files -fileset constrs_1 ${this.datPath} -quiet`); + + if (this.topMod.src !== '') { + scripts.push(`set_property top ${this.topMod.src} [current_fileset]`); + } + if (this.topMod.sim !== '') { + scripts.push(`set_property top ${this.topMod.sim} [get_filesets sim_1]`); + } + + let script = ''; + for (let i = 0; i < scripts.length; i++) { + const content = scripts[i]; + script += content + '\n'; + } + + const scriptPath = `${this.xilinxPath}/refresh.tcl`; + script += `file delete ${scriptPath} -force\n`; + hdlFile.writeFile(scriptPath, script); + const cmd = `source ${scriptPath} -quiet`; + + config.terminal?.sendText(cmd); + return cmd; + } + + simulate(config: PLConfig) { + this.simcli(config); + } + + simgui(config: PLConfig) { + const scriptPath = `${this.xilinxPath}/simulate.tcl`; + const script = ` + if {[current_sim] != ""} { + relaunch_sim -quiet + } else { + launch_simulation -quiet + } + + set curr_wave [current_wave_config] + if { [string length $curr_wave] == 0 } { + if { [llength [get_objects]] > 0} { + add_wave / + set_property needs_save false [current_wave_config] + } else { + send_msg_id Add_Wave-1 WARNING "No top level signals found. Simulator will start without a wave window. If you want to open a wave window go to 'File->New Waveform Configuration' or type 'create_wave_config' in the TCL console." + } + } + run 1us + + start_gui -quiet + file delete ${scriptPath} -force\n`; + hdlFile.writeFile(scriptPath, script); + const cmd = `source ${scriptPath} -quiet`; + config.terminal?.sendText(cmd); + } + + simcli(config: PLConfig) { + const scriptPath = hdlPath.join(this.xilinxPath, 'simulate.tcl'); + const script = ` + if {[current_sim] != ""} { + relaunch_sim -quiet + } else { + launch_simulation -quiet + } + + set curr_wave [current_wave_config] + if { [string length $curr_wave] == 0 } { + if { [llength [get_objects]] > 0} { + add_wave / + set_property needs_save false [current_wave_config] + } else { + send_msg_id Add_Wave-1 WARNING "No top level signals found. Simulator will start without a wave window. If you want to open a wave window go to 'File->New Waveform Configuration' or type 'create_wave_config' in the TCL console." + } + } + run 1us + file delete ${scriptPath} -force\n`; + hdlFile.writeFile(scriptPath, script); + const cmd = `source ${scriptPath} -quiet`; + config.terminal?.sendText(cmd); + } + + synth(config: PLConfig) { + let quietArg = ''; + if (opeParam.prjInfo.enableShowLog) { + quietArg = '-quiet'; + } + + let script = ''; + script += `reset_run synth_1 ${quietArg};`; + script += `launch_runs synth_1 ${quietArg} -jobs 4;`; + script += `wait_on_run synth_1 ${quietArg}`; + + config.terminal?.sendText(script); + } + + impl(config: PLConfig) { + let quietArg = ''; + if (opeParam.prjInfo.enableShowLog) { + quietArg = '-quiet'; + } + + let script = ''; + script += `reset_run impl_1 ${quietArg};`; + script += `launch_runs impl_1 ${quietArg} -jobs 4;`; + script += `wait_on_run impl_1 ${quietArg};`; + script += `open_run impl_1 ${quietArg};`; + script += `report_timing_summary ${quietArg}`; + + config.terminal?.sendText(script); + } + + build(config: PLConfig) { + let quietArg = ''; + if (this.prjConfig.enableShowLog) { + quietArg = '-quiet'; + } + + let script = ''; + script += `reset_run synth_1 ${quietArg}\n`; + script += `launch_runs synth_1 ${quietArg} -jobs 4\n`; + script += `wait_on_run synth_1 ${quietArg}\n`; + script += `reset_run impl_1 ${quietArg}\n`; + script += `launch_runs impl_1 ${quietArg} -jobs 4\n`; + script += `wait_on_run impl_1 ${quietArg}\n`; + script += `open_run impl_1 ${quietArg}\n`; + script += `report_timing_summary ${quietArg}\n`; + + this.generateBit(config); + + const scriptPath = `${this.xilinxPath}/build.tcl`; + script += `source ${scriptPath} -notrace\n`; + + script += `file delete ${scriptPath} -force\n`; + hdlFile.writeFile(scriptPath, script); + const cmd = `source ${scriptPath} -quiet`; + config.terminal?.sendText(cmd); + } + + + generateBit(config: PLConfig) { + let scripts: string[] = []; + let core = this.prjConfig.soc.core; + let sysdefPath = `${this.prjInfo.path}/${this.prjInfo.name}.runs` + + `/impl_1/${this.prjInfo.name}.sysdef`; + + if (core && (core !== "none")) { + if (fs.existsSync(sysdefPath)) { + scripts.push(`file copy -force ${sysdefPath} ${this.softSrc}/[current_project].hdf`); + } else { + scripts.push(`write_hwdef -force -file ${this.softSrc}/[current_project].hdf`); + } + // TODO: 是否专门设置输出文件路径的参数 + scripts.push(`write_bitstream ./[current_project].bit -force -quiet`); + } else { + scripts.push(`write_bitstream ./[current_project].bit -force -quiet -bin_file`); + } + + let script = ''; + for (let i = 0; i < scripts.length; i++) { + const content = scripts[i]; + script += content + '\n'; + } + let scriptPath = `${this.xilinxPath}/bit.tcl`; + script += `file delete ${scriptPath} -force\n`; + hdlFile.writeFile(scriptPath, script); + const cmd = `source ${scriptPath} -quiet`; + config.terminal?.sendText(cmd); + } + + program(config: PLConfig) { + let scriptPath = `${this.xilinxPath}/program.tcl`; + let script = ` + open_hw -quiet + connect_hw_server -quiet + set found 0 + foreach hw_target [get_hw_targets] { + current_hw_target $hw_target + open_hw_target -quiet + foreach hw_device [get_hw_devices] { + if { [string equal -length 6 [get_property PART $hw_device] ${this.prjInfo.device}] == 1 } { + puts "------Successfully Found Hardware Target with a ${this.prjInfo.device} device------ " + current_hw_device $hw_device + set found 1 + } + } + if {$found == 1} {break} + close_hw_target + } + + #download the hw_targets + if {$found == 0 } { + puts "******ERROR : Did not find any Hardware Target with a ${this.prjInfo.device} device****** " + } else { + set_property PROGRAM.FILE ./[current_project].bit [current_hw_device] + program_hw_devices [current_hw_device] -quiet + disconnect_hw_server -quiet + } + file delete ${scriptPath} -force\n`; + + hdlFile.writeFile(scriptPath, script); + const cmd = `source ${scriptPath} -quiet`; + config.terminal?.sendText(cmd); + } + + gui(config: PLConfig) { + if (config.terminal) { + config.terminal.sendText("start_gui -quiet"); + } else { + const prjFiles = hdlFile.pickFileRecursive(this.prjPath, [], + filePath => filePath.endsWith('.xpr')); + + const arg = '-notrace -nolog -nojournal'; + const cmd = `${config.path} -mode gui -s ${prjFiles[0]} ${arg}`; + exec(cmd, (error, stdout, stderr) => { + if (error !== null) { + vscode.window.showErrorMessage(stderr); + } else { + vscode.window.showInformationMessage("GUI open successfully"); + } + }); + } + } + + addFiles(files: string[], config: PLConfig) { + this.processFileInPrj(files, config, "add_file"); + } + + delFiles(files: string[], config: PLConfig) { + this.processFileInPrj(files, config, "remove_files"); + } + + setSrcTop(name: string, config: PLConfig) { + const cmd = `set_property top ${name} [current_fileset]`; + config.terminal?.sendText(cmd); + } + + setSimTop(name: string, config: PLConfig) { + const cmd = `set_property top ${name} [get_filesets sim_1]`; + config.terminal?.sendText(cmd); + } + + processFileInPrj(files: string[], config: PLConfig, command: string) { + const terminal = config.terminal; + if (terminal) { + files.forEach(file => terminal.sendText(`${command} ${file}`)); + } + } + + xExecShowLog(logPath: AbsPath) { + let logPathList = ["runme", "xvlog", "elaborate"]; + let fileName = fspath.basename(logPath, ".log"); + + if (!logPathList.includes(fileName)) { + return null; + } + + let content = hdlFile.readFile(logPath); + if (!content) { + return null; + } + + if (content.indexOf("INFO: [Common 17-206] Exiting Vivado") === -1) { + return null; + } + + let log = ''; + var regExp = /(?CRITICAL WARNING:|ERROR:)(?[\w\W]*?)(INFO:|WARNING:)/g; + + while (true) { + let match = regExp.exec(content); + if (match === null) { + break; + } + + if (match.groups) { + log += match.groups.head.replace("ERROR:", "[error] :"); + log += match.groups.content; + } + } + + MainOutput.report(log); + } +} + +class XilinxBd { + setting : vscode.WorkspaceConfiguration; + extensionPath: AbsPath; + xbdPath: AbsPath; + schemaPath: AbsPath; + schemaCont: PropertySchema; + bdEnum: string[]; + bdRepo: AbsPath; + + constructor() { + this.setting = vscode.workspace.getConfiguration(); + this.extensionPath = opeParam.extensionPath; + this.xbdPath = hdlPath.join(this.extensionPath, 'lib', 'bd', 'xilinx'); + this.schemaPath = opeParam.propertySchemaPath; + this.schemaCont = hdlFile.readJSON(this.schemaPath) as PropertySchema; + this.bdEnum = this.schemaCont.properties.soc.properties.bd.enum; + this.bdRepo = this.setting.get('PRJ.xilinx.BD.repo.path', ''); + } + + getConfig() { + this.extensionPath = opeParam.extensionPath; + this.xbdPath = hdlPath.join(this.extensionPath, 'lib', 'bd', 'xilinx'); + this.schemaPath = opeParam.propertySchemaPath; + this.schemaCont = hdlFile.readJSON(this.schemaPath) as PropertySchema; + this.bdEnum = this.schemaCont.properties?.soc.properties.bd.enum; + this.bdRepo = this.setting.get('PRJ.xilinx.BD.repo.path', ''); + } + + async overwrite(uri: vscode.Uri): Promise { + this.getConfig(); + // 获取当前bd file的路径 + const select = await vscode.window.showQuickPick(this.bdEnum); + // the user canceled the select + if (!select) { + return; + } + + let bdSrcPath = `${this.xbdPath}/${select}.bd`; + if (!hdlFile.isFile(bdSrcPath)) { + bdSrcPath = `${this.bdRepo}/${select}.bd`; + } + + if (!hdlFile.isFile(bdSrcPath)) { + vscode.window.showErrorMessage(`can not find ${select}.bd in ${this.xbdPath} and ${this.bdRepo}, please load again.`); + } else { + const docPath = hdlPath.toSlash(uri.fsPath); + const doc = hdlFile.readFile(docPath); + if (doc) { + hdlFile.writeFile(bdSrcPath, doc); + } + } + } + + add(uri: vscode.Uri) { + this.getConfig(); + // 获取当前bd file的路径 + let docPath = hdlPath.toSlash(uri.fsPath); + let bd_name = hdlPath.basename(docPath); + + // 检查是否重复 + if (this.bdEnum.includes(bd_name)) { + vscode.window.showWarningMessage(`The file already exists.`); + return null; + } + + // 获取存放路径 + let storePath = this.setting.get('PRJ.xilinx.BD.repo.path', ''); + if (!fs.existsSync(storePath)) { + vscode.window.showWarningMessage(`This bd file will be added into extension folder.We don't recommend doing this because it will be cleared in the next update.`); + storePath = this.xbdPath; + } + + // 写入 + const bd_path = `${storePath}/${bd_name}.bd`; + const doc = hdlFile.readFile(docPath); + if (doc) { + hdlFile.writeFile(bd_path, doc); + } + + this.schemaCont.properties.soc.properties.bd.enum.push(bd_name); + hdlFile.writeJSON(this.schemaPath, this.schemaCont); + } + + /** + * + */ + delete() { + this.getConfig(); + vscode.window.showQuickPick(this.bdEnum).then(select => { + // the user canceled the select + if (!select) { + return; + } + + let bdSrcPath = `${this.xbdPath}/${select}.bd`; + if (!hdlFile.isFile(bdSrcPath)) { + bdSrcPath = `${this.bdRepo}/${select}.bd`; + } + + if (!hdlFile.isFile(bdSrcPath)) { + vscode.window.showErrorMessage(`can not find ${select}.bd in ${this.xbdPath} and ${this.bdRepo}, please load again.`); + } else { + hdlFile.removeFile(bdSrcPath); + } + }); + } + + load() { + this.getConfig(); + if (hdlFile.isDir(this.bdRepo)) { + for (const file of fs.readdirSync(this.bdRepo)) { + if (file.endsWith('.bd')) { + let basename = hdlPath.basename(file); + if (this.bdEnum.includes(basename)) { + return; + } + this.schemaCont.properties.soc.properties.bd.enum.push(basename); + } + } + } + + hdlFile.writeJSON(this.schemaPath, this.schemaCont); + } +}; + +const tools = { + async boot() { + // 声明变量 + const bootInfo: BootInfo = { + outsidePath : hdlPath.join(fspath.dirname(opeParam.prjStructure.prjPath), 'boot'), + insidePath : hdlPath.join(opeParam.extensionPath, 'resources', 'boot', 'xilinx'), + outputPath : hdlPath.join(opeParam.extensionPath, 'resources', 'boot', 'xilinx', 'output.bif'), + elfPath : '', + bitPath : '', + fsblPath : '' + }; + + if (opeParam.prjInfo.INSIDE_BOOT_TYPE) { + bootInfo.insidePath = hdlPath.join(bootInfo.insidePath, opeParam.prjInfo.INSIDE_BOOT_TYPE); + } else { + bootInfo.insidePath = hdlPath.join(bootInfo.insidePath, 'microphase'); + } + + let output_context = "//arch = zynq; split = false; format = BIN\n"; + output_context += "the_ROM_image:\n"; + output_context += "{\n"; + + bootInfo.fsblPath = await this.getfsblPath(bootInfo.outsidePath, bootInfo.insidePath); + if (!bootInfo.fsblPath) { + return null; + } + output_context += bootInfo.fsblPath; + + bootInfo.bitPath = await this.getBitPath(opeParam.workspacePath); + if (bootInfo.bitPath) { + output_context += bootInfo.bitPath; + } + + bootInfo.elfPath = await this.getElfPath(bootInfo); + if (!bootInfo.elfPath) { + return null; + } + output_context += bootInfo.elfPath; + + output_context += "}"; + let result = hdlFile.writeFile(bootInfo.outputPath, output_context); + if (!result) { + return null; + } + + let command = `bootgen -arch zynq -image ${bootInfo.outputPath} -o ${opeParam.workspacePath}/BOOT.bin -w on`; + exec(command, function (error, stdout, stderr) { + if (error) { + vscode.window.showErrorMessage(`${error}`); + vscode.window.showErrorMessage(`stderr: ${stderr}`); + return; + } else { + vscode.window.showInformationMessage("write boot file successfully!!"); + } + }); + }, + + async getfsblPath(outsidePath: AbsPath, insidePath: AbsPath): Promise { + const paths: AbsPath[] = hdlFile.pickFileRecursive(outsidePath, [], + filePath => filePath.endsWith('fsbl.elf')); + + if (paths.length) { + if (paths.length === 1) { + return `\t[bootloader]${outsidePath}/${paths[0]}\n`; + } + + let selection = await vscode.window.showQuickPick(paths); + if (!selection) { + return ''; + } + return `\t[bootloader]${outsidePath}/${selection}\n`; + } + + return `\t[bootloader]${insidePath}/fsbl.elf\n`; + }, + + async getBitPath(bitPath: AbsPath): Promise { + let bitList = hdlFile.pickFileRecursive(bitPath, [], + filePath => filePath.endsWith('.bit')); + + if (bitList.length === 0) { + vscode.window.showInformationMessage("Generated only from elf file"); + } + else if (bitList.length === 1) { + return"\t" + bitPath + bitList[0] + "\n"; + } + else { + let selection = await vscode.window.showQuickPick(bitList); + if (!selection) { + return ''; + } + return "\t" + bitPath + selection + "\n"; + } + return ''; + }, + + async getElfPath(bootInfo: BootInfo): Promise { + // 优先在外层寻找elf文件 + let elfs = this.pickElfFile(bootInfo.outsidePath); + + if (elfs.length) { + if (elfs.length === 1) { + return `\t${bootInfo.outsidePath}/${elfs[0]}\n`; + } + + let selection = await vscode.window.showQuickPick(elfs); + if (!selection) { + return ''; + } + return `\t${bootInfo.outsidePath}/${selection}\n`; + } + + // 如果外层找不到文件则从内部调用 + elfs = this.pickElfFile(bootInfo.insidePath); + if (elfs.length) { + if (elfs.length === 1) { + return `\t${bootInfo.insidePath}/${elfs[0]}\n`; + } + + let selection = await vscode.window.showQuickPick(elfs); + if (!selection) { + return ''; + } + return `\t${bootInfo.insidePath}/${selection}\n`; + } + + // 如果内层也没有则直接退出 + vscode.window.showErrorMessage("The elf file was not found\n"); + return ''; + }, + + pickElfFile(path: AbsPath): AbsPath[] { + return hdlFile.pickFileRecursive(path, [], + filePath => filePath.endsWith('.elf') && !filePath.endsWith('fsbl.elf')); + } +}; + + +const xilinxBd = new XilinxBd(); + +module.exports = { + XilinxOperation, + tools, + xilinxBd +}; diff --git a/src/manager/PS/xilinx.ts b/src/manager/PS/xilinx.ts new file mode 100644 index 0000000..d9044ed --- /dev/null +++ b/src/manager/PS/xilinx.ts @@ -0,0 +1,155 @@ +import * as vscode from 'vscode'; + +import { AbsPath, opeParam } from '../../global'; +import { Soc } from '../../global/prjInfo'; + +import { hdlFile, hdlPath } from '../../hdlFs'; + +interface XilinxOperationConfig { + path : AbsPath, + hw : string, + bsp: string, + dat: AbsPath, + src: AbsPath, + soc: Soc +} + +interface PSConfig { + terminal? : vscode.Terminal | null, + tool? : string, // 工具类型 + path? : string, // 第三方工具运行路径 + ope? : XilinxOperation, +} + +/** + * @state finish-untest + * @descriptionCn xilinx工具链下PS端的操作类 + */ +class XilinxOperation { + config: XilinxOperationConfig; + constructor() { + this.config = { + path : hdlPath.join(opeParam.extensionPath, 'resources', 'script', 'xilinx', 'soft'), + hw : "SDK_Platform", + bsp: "BSP_package", + dat: opeParam.prjInfo.arch.software.data, + src: opeParam.prjInfo.arch.software.src, + soc: { + core: "ps7_cortexa9_0", + bd: "template", + app: "Hello World", + os: "standalone" + } + }; + } + + getConfig() { + this.config = { + path : hdlPath.join(opeParam.extensionPath, 'resources', 'script', 'xilinx', 'soft'), + hw : "SDK_Platform", + bsp: "BSP_package", + dat: opeParam.prjInfo.arch.software.data, + src: opeParam.prjInfo.arch.software.src, + soc: { + core: "ps7_cortexa9_0", + bd: "template", + app: "Hello World", + os: "standalone" + } + }; + + if (hdlFile.isHasAttr(opeParam.prjInfo, "soc")) { + this.config.soc = opeParam.prjInfo.soc; + } + + if (hdlFile.isHasAttr(opeParam.prjInfo, "prjName.PS")) { + this.config.soc.bd = opeParam.prjInfo.prjName.PS; + } + } + + launch(config: PSConfig) { + this.getConfig(); + + const hdfs = hdlFile.pickFileRecursive(this.config.dat, [], + p => p.endsWith('.hdf')); + + if (hdfs.length) { + vscode.window.showErrorMessage(`There is no hdf file in ${this.config.dat}.`); + return null; + } + + const scriptPath = `${this.config.path}/launch.tcl`; + const script = ` +setws ${this.config.src} +if { [getprojects -type hw] == "" } { + createhw -name ${this.config.hw} -hwspec ${this.config.dat}/ +} else { + openhw ${this.config.src}/[getprojects -type hw]/system.hdf +} + +if { [getprojects -type bsp] == "" } { + createbsp -name ${this.config.bsp} \\ + -hwproject ${this.config.hw} \\ + -proc ${this.config.soc.core} \\ + -os ${this.config.soc.os} +} + +if { [getprojects -type app] == "" } { + createapp -name ${this.config.soc.bd} \\ + -hwproject ${this.config.hw} \\ + -bsp ${this.config.bsp} \\ + -proc ${this.config.soc.core} \\ + -os ${this.config.soc.os} \\ + -lang C \\ + -app {${this.config.soc.app}} +} +file delete ${scriptPath} -force\n`; + + hdlFile.writeFile(scriptPath, script); + config.terminal?.show(true); + config.terminal?.sendText(`${config.path} ${scriptPath}`); + } + + build(config: PSConfig) { + this.getConfig(); + + const scriptPath = `${this.config.path}/build.tcl`; + const script = ` +setws ${this.config.src} +openhw ${this.config.src}/[getprojects -type hw]/system.hdf +projects -build +file delete ${scriptPath} -force\n`; + hdlFile.writeFile(scriptPath, script); + config.terminal?.show(true); + config.terminal?.sendText(`${config.path} ${scriptPath}`); + } + + program(config: PSConfig) { + this.getConfig(); + + const len = this.config.soc.core.length; + const index = this.config.soc.core.slice(len-1, len); + const scriptPath = `${this.config.path}/program.tcl`; + const script = ` +setws ${this.config.src} +openhw ${this.config.src}/[getprojects -type hw]/system.hdf +connect +targets -set -filter {name =~ "ARM*#${index}"} +rst -system +namespace eval xsdb { + source ${this.config.src}/${this.config.hw}/ps7_init.tcl + ps7_init +} +fpga ./${this.config.soc.bd}.bit +dow ${this.config.src}/${this.config.soc.bd}/Debug/${this.config.soc.bd}.elf +con +file delete ${scriptPath} -force\n`; + hdlFile.writeFile(scriptPath, script); + config.terminal?.show(true); + config.terminal?.sendText(`${config.path} ${scriptPath}`); + } +} + +export { + XilinxOperation +}; \ No newline at end of file diff --git a/src/manager/index.ts b/src/manager/index.ts new file mode 100644 index 0000000..6308f7f --- /dev/null +++ b/src/manager/index.ts @@ -0,0 +1,5 @@ +import { prjManage } from './prj'; + +export { + prjManage +}; \ No newline at end of file diff --git a/src/manager/lib.ts b/src/manager/lib.ts new file mode 100644 index 0000000..e69de29 diff --git a/src/manager/prj.ts b/src/manager/prj.ts new file mode 100644 index 0000000..62c16a2 --- /dev/null +++ b/src/manager/prj.ts @@ -0,0 +1,88 @@ +/* eslint-disable @typescript-eslint/naming-convention */ +import * as vscode from 'vscode'; +import * as fs from 'fs'; + +import { AbsPath, opeParam } from '../global'; +import { RawPrjInfo } from '../global/prjInfo'; +import { ToolChainType } from '../global/enum'; + +import { hdlFile, hdlDir, hdlPath } from '../hdlFs'; + +class PrjManage { + setting: vscode.WorkspaceConfiguration; + + constructor() { + this.setting = vscode.workspace.getConfiguration(); + + vscode.commands.registerCommand('digital-ide.property-json.generate', + this.generatePropertyJson); + vscode.commands.registerCommand('digital-ide.property-json.overwrite', + this.overwritePropertyJson); + } + + // generate property template and write it to .vscode/property.json + private async generatePropertyJson() { + if (fs.existsSync(opeParam.propertyJsonPath)) { + vscode.window.showWarningMessage('property file already exists !!!'); + return; + } + const template = hdlFile.readJSON(opeParam.propertyInitPath); + hdlFile.writeJSON(opeParam.propertyJsonPath, template); + } + + // overwrite content in current property.json to property-init.json + // TODO test me :D + private async overwritePropertyJson() { + const options = { + preview: false, + viewColumn: vscode.ViewColumn.Active + }; + const uri = vscode.Uri.file(opeParam.propertyInitPath); + await vscode.window.showTextDocument(uri, options); + } + + private getWorkspacePath(): AbsPath { + if (vscode.workspace.workspaceFolders !== undefined && + vscode.workspace.workspaceFolders.length !== 0) { + const wsPath = vscode.workspace.workspaceFolders[0].uri.fsPath; + return hdlPath.toSlash(wsPath); + } + return ''; + } + + /** + * init opeParam + * @param context + */ + public initOpeParam(context: vscode.ExtensionContext) { + const os = process.platform; + const extensionPath = hdlPath.toSlash(context.extensionPath); + const workspacePath = this.getWorkspacePath(); + const propertyJsonPath = hdlPath.join(workspacePath, '.vscode', 'property.json'); + const propertySchemaPath = hdlPath.join(extensionPath, 'project', 'property-schema.json'); + const propertyInitPath = hdlPath.join(extensionPath, 'project', 'property-init.json'); + + opeParam.setBasicInfo(os, + extensionPath, + workspacePath, + propertyJsonPath, + propertySchemaPath, + propertyInitPath); + + // set path for merge in prjInfo + opeParam.prjInfo.initContextPath(extensionPath, workspacePath); + + // merge prjInfo from propertyJsonPath if exist + if (fs.existsSync(propertyJsonPath)) { + const rawPrjInfo = hdlFile.readJSON(propertyJsonPath) as RawPrjInfo; + opeParam.mergePrjInfo(rawPrjInfo); + } + } + +} + +const prjManage = new PrjManage(); + +export { + prjManage +}; \ No newline at end of file diff --git a/src/test/vhdl/Scientific.vhd b/src/test/vhdl/Scientific.vhd new file mode 100644 index 0000000..3d6655a --- /dev/null +++ b/src/test/vhdl/Scientific.vhd @@ -0,0 +1,15 @@ +library IEEE; +use IEEE.std_logic_1164.all; + +entity Scientific is + generic ( + exp1: integer := 25e6; + exp2: integer := 25E6; + exp3: real := 25.0e6; + exp4: real := 50.0e+3; + exp5: real := 50.0e-3 + ); + port( + clk : in std_logic + ); +end Scientific; diff --git a/src/test/vhdl/based.vhd b/src/test/vhdl/based.vhd new file mode 100644 index 0000000..7c7c1e2 --- /dev/null +++ b/src/test/vhdl/based.vhd @@ -0,0 +1,16 @@ +library IEEE; +use IEEE.std_logic_1164.all; + +entity based is port (sysclk : in std_logic); +end based; +architecture rtl of based is + signal foo, foo1, foo2, foo8, foo10, foo11, foo16 : integer; +begin + foo <= 123; + foo1 <= 123_456; + foo2 <= 2#00101101110111#; + foo8 <= 8#0177362#; + foo10 <= 10#01234#; + --foo11<= 11#01234#; + foo16 <= 16#12af#; +end rtl; \ No newline at end of file diff --git a/src/test/vhdl/bigfile.vhd b/src/test/vhdl/bigfile.vhd new file mode 100644 index 0000000..5897f16 --- /dev/null +++ b/src/test/vhdl/bigfile.vhd @@ -0,0 +1,467 @@ +library IEEE; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; + +-- CONNECTIVITY DEFINITION +entity bigfile is + port ( + -- from external pins + sysclk : in std_logic; + g_zaq_in : in std_logic_vector(31 downto 0); + g_aux : in std_logic_vector(31 downto 0); + scanb : in std_logic; + g_wrb : in std_logic; + g_rdb : in std_logic; + g_noop_clr : in std_logic_vector(31 downto 0); + swe_ed : in std_logic; + swe_lv : in std_logic; + din : in std_logic_vector(63 downto 0); + g_dout_w0x0f : in std_logic_vector(4 downto 0); + n9_bit_write : in std_logic; + -- from reset_gen block + reset : in std_logic; + alu_u : in std_logic_vector(31 downto 0); + debct_ping : in std_logic; + g_sys_in : out std_logic_vector(31 downto 0); + g_zaq_in_rst_hold : out std_logic_vector(31 downto 0); + g_zaq_hhh_enb : out std_logic_vector(31 downto 0); + g_zaq_out : out std_logic_vector(31 downto 0); + g_dout : out std_logic_vector(31 downto 0); + g_zaq_ctl : out std_logic_vector(31 downto 0); + g_zaq_qaz_hb : out std_logic_vector(31 downto 0); + g_zaq_qaz_lb : out std_logic_vector(31 downto 0); + gwerth : out std_logic_vector(31 downto 0); + g_noop : out std_logic_vector(31 downto 0); + g_vector : out std_logic_vector(8*32-1 downto 0); + swe_qaz1 : out std_logic_vector(31 downto 0) + ); +end bigfile; + + +-- IMPLEMENTATION +architecture rtl of bigfile is + + -- constants + constant g_t_klim_w0x0f : std_logic_vector(4 downto 0) := "00000"; + constant g_t_u_w0x0f : std_logic_vector(4 downto 0) := "00001"; + constant g_t_l_w0x0f : std_logic_vector(4 downto 0) := "00010"; + constant g_t_hhh_l_w0x0f : std_logic_vector(4 downto 0) := "00011"; + constant g_t_jkl_sink_l_w0x0f : std_logic_vector(4 downto 0) := "00100"; + constant g_secondary_t_l_w0x0f : std_logic_vector(4 downto 0) := "00101"; + constant g_style_c_l_w0x0f : std_logic_vector(4 downto 0) := "00110"; + constant g_e_z_w0x0f : std_logic_vector(4 downto 0) := "00111"; + constant g_n_both_qbars_l_w0x0f : std_logic_vector(4 downto 0) := "01000"; + constant g_style_vfr_w0x0f : std_logic_vector(4 downto 0) := "01001"; + constant g_style_klim_w0x0f : std_logic_vector(4 downto 0) := "01010"; + constant g_unklimed_style_vfr_w0x0f : std_logic_vector(4 downto 0) := "01011"; + constant g_style_t_y_w0x0f : std_logic_vector(4 downto 0) := "01100"; + constant g_n_l_w0x0f : std_logic_vector(4 downto 0) := "01101"; + constant g_n_vfr_w0x0f : std_logic_vector(4 downto 0) := "01110"; + constant g_e_n_r_w0x0f : std_logic_vector(4 downto 0) := "01111"; + constant g_n_r_bne_w0x0f : std_logic_vector(4 downto 0) := "10000"; + constant g_n_div_rebeq_w0x0f : std_logic_vector(4 downto 0) := "10001"; + constant g_alu_l_w0x0f : std_logic_vector(4 downto 0) := "10010"; + constant g_t_qaz_mult_low_w0x0f : std_logic_vector(4 downto 0) := "10011"; + constant g_t_qaz_mult_high_w0x0f : std_logic_vector(4 downto 0) := "10100"; + constant gwerthernal_style_u_w0x0f : std_logic_vector(4 downto 0) := "10101"; + constant gwerthernal_style_l_w0x0f : std_logic_vector(4 downto 0) := "10110"; + constant g_style_main_reset_hold_w0x0f : std_logic_vector(4 downto 0) := "10111"; + + -- comment + signal g_t_klim_dout : std_logic_vector(31 downto 0); + signal g_t_u_dout : std_logic_vector(31 downto 0); + signal g_t_l_dout : std_logic_vector(31 downto 0); + signal g_t_hhh_l_dout : std_logic_vector(31 downto 0); + signal g_t_jkl_sink_l_dout : std_logic_vector(31 downto 0); + signal g_secondary_t_l_dout : std_logic_vector(31 downto 0); + signal g_style_c_l_dout : std_logic_vector(3 downto 0); -- not used + signal g_e_z_dout : std_logic_vector(31 downto 0); + signal g_n_both_qbars_l_dout : std_logic_vector(31 downto 0); + signal g_style_vfr_dout : std_logic_vector(31 downto 0); + signal g_style_klim_dout : std_logic_vector(31 downto 0); + signal g_unklimed_style_vfr_dout : std_logic_vector(31 downto 0); + signal g_style_t_y_dout : std_logic_vector(31 downto 0); + signal g_n_l_dout : std_logic_vector(31 downto 0); + signal g_n_vfr_dout : std_logic_vector(31 downto 0); + signal g_e_n_r_dout : std_logic_vector(31 downto 0); + signal g_n_r_bne_dout : std_logic; + signal g_n_div_rebeq_dout : std_logic_vector(31 downto 0); + signal g_alu_l_dout : std_logic_vector(31 downto 0); + signal g_t_qaz_mult_low_dout : std_logic_vector(31 downto 0); + signal g_t_qaz_mult_high_dout : std_logic_vector(31 downto 0); + signal gwerthernal_style_u_dout : std_logic_vector(31 downto 0); + signal gwerthernal_style_l_dout : std_logic_vector(31 downto 0); + signal g_style_main_reset_hold_dout : std_logic_vector(31 downto 0); + + -- other + signal q_g_zaq_in : std_logic_vector(31 downto 0); + signal q2_g_zaq_in : std_logic_vector(31 downto 0); + signal q3_g_zaq_in : std_logic_vector(31 downto 0); + signal q_g_zaq_in_cd : std_logic_vector(3 downto 0); + signal q_g_style_vfr_dout : std_logic_vector(31 downto 0); + signal q_g_unzq : std_logic_vector(3 downto 0); + signal g_n_active : std_logic_vector(31 downto 0); + + -- inter + signal g_zaq_in_y : std_logic_vector(31 downto 0); + signal g_zaq_in_y_no_dout : std_logic_vector(31 downto 0); + signal g_zaq_out_i : std_logic_vector(31 downto 0); + signal g_zaq_ctl_i : std_logic_vector(31 downto 0); + signal g_sys_in_i : std_logic_vector(31 downto 0); + signal g_sys_in_ii : std_logic_vector(31 downto 0); + signal g_dout_i : std_logic_vector(31 downto 0); + +begin + + -- qaz out + g_zaq_out_i <= + -- if secondary + (g_secondary_t_l_dout and (g_aux xor g_style_t_y_dout)) or + -- if alu + (g_alu_l_dout and alu_u and not g_secondary_t_l_dout) or + -- otherwise + (not g_alu_l_dout and not g_secondary_t_l_dout and g_t_u_dout); + -- Changed + g_zaq_out <= g_zaq_out_i and not g_t_jkl_sink_l_dout; + + -- qaz + -- JLB + g_zaq_ctl_i <= not((g_t_l_dout and not g_t_jkl_sink_l_dout) or + (g_t_l_dout and g_t_jkl_sink_l_dout and not g_zaq_out_i)); + -- mux + --vnavigatoroff + g_zaq_ctl <= g_zaq_ctl_i when scanb = '1' else "00000000000000000000000000000000"; + --vnavigatoron + + g_zaq_hhh_enb <= not(g_t_hhh_l_dout); + + g_zaq_qaz_hb <= g_t_qaz_mult_high_dout; + g_zaq_qaz_lb <= g_t_qaz_mult_low_dout; + + + -- Dout + g_dout_i <= g_t_klim_dout and g_style_klim_dout when g_dout_w0x0f = g_t_klim_w0x0f else + g_t_u_dout and g_style_klim_dout when g_dout_w0x0f = g_t_u_w0x0f else + g_t_l_dout and g_style_klim_dout when g_dout_w0x0f = g_t_l_w0x0f else + g_t_hhh_l_dout and g_style_klim_dout when g_dout_w0x0f = g_t_hhh_l_w0x0f else + g_t_jkl_sink_l_dout and g_style_klim_dout when g_dout_w0x0f = g_t_jkl_sink_l_w0x0f else + g_secondary_t_l_dout and g_style_klim_dout when g_dout_w0x0f = g_secondary_t_l_w0x0f else + ("0000000000000000000000000000" & g_style_c_l_dout) and g_style_klim_dout when g_dout_w0x0f = g_style_c_l_w0x0f else + g_e_z_dout when g_dout_w0x0f = g_e_z_w0x0f else + g_n_both_qbars_l_dout when g_dout_w0x0f = g_n_both_qbars_l_w0x0f else + g_style_vfr_dout and g_style_klim_dout when g_dout_w0x0f = g_style_vfr_w0x0f else + g_style_klim_dout when g_dout_w0x0f = g_style_klim_w0x0f else + g_unklimed_style_vfr_dout when g_dout_w0x0f = g_unklimed_style_vfr_w0x0f else + g_style_t_y_dout and g_style_klim_dout when g_dout_w0x0f = g_style_t_y_w0x0f else + g_n_l_dout when g_dout_w0x0f = g_n_l_w0x0f else + g_n_vfr_dout when g_dout_w0x0f = g_n_vfr_w0x0f else + g_e_n_r_dout when g_dout_w0x0f = g_e_n_r_w0x0f else + ("0000000000000000000000000000000" & g_n_r_bne_dout) when g_dout_w0x0f = g_n_r_bne_w0x0f else + g_n_div_rebeq_dout when g_dout_w0x0f = g_n_div_rebeq_w0x0f else + g_alu_l_dout and g_style_klim_dout when g_dout_w0x0f = g_alu_l_w0x0f else + g_t_qaz_mult_low_dout and g_style_klim_dout when g_dout_w0x0f = g_t_qaz_mult_low_w0x0f else + g_t_qaz_mult_high_dout and g_style_klim_dout when g_dout_w0x0f = g_t_qaz_mult_high_w0x0f else + gwerthernal_style_u_dout and g_style_klim_dout when g_dout_w0x0f = gwerthernal_style_u_w0x0f else + g_style_main_reset_hold_dout and g_style_klim_dout when g_dout_w0x0f = g_style_main_reset_hold_w0x0f else + gwerthernal_style_l_dout and g_style_klim_dout when g_dout_w0x0f = gwerthernal_style_l_w0x0f else + "00000000000000000000000000000000"; + g_dout <= g_dout_i when g_rdb = '0' else (others => '1'); + + + -- this can be used to use zzz1 + g_style_main_reset_hold_dout_proc : + process(sysclk) + begin + if( sysclk'event and sysclk = '1' ) then + if( scanb = '1' ) then + if( reset = '1' ) then + g_style_main_reset_hold_dout <= g_zaq_in; + end if; + --vnavigatoroff + else + g_style_main_reset_hold_dout <= q2_g_zaq_in; + end if; + --vnavigatoron + end if; + end process; + -- qaz + g_zaq_in_rst_hold <= g_style_main_reset_hold_dout; + + -- Din + g_doutister_proc : + process(reset, sysclk) + variable g_dout_w0x0f_v : std_logic_vector(4 downto 0); + variable i : integer; + variable j : integer; + begin + if( reset /= '0' ) then + g_t_klim_dout <= (others => '0'); + g_t_u_dout <= (others => '0'); + g_t_l_dout <= (others => '0'); + g_t_hhh_l_dout <= (others => '0'); + g_t_jkl_sink_l_dout <= (others => '0'); + g_secondary_t_l_dout <= (others => '0'); + g_style_c_l_dout <= (others => '0'); + g_e_z_dout <= (others => '0'); + g_n_both_qbars_l_dout <= (others => '0'); + g_style_klim_dout <= (others => '0'); + g_style_t_y_dout <= (others => '0'); + g_n_l_dout <= (others => '0'); + g_e_n_r_dout <= (others => '0'); + g_n_r_bne_dout <= '0'; + g_n_div_rebeq_dout <= (others => '1'); + g_alu_l_dout <= (others => '0'); + g_t_qaz_mult_low_dout <= (others => '1'); -- NOTE Low + g_t_qaz_mult_high_dout <= (others => '0'); + gwerthernal_style_u_dout <= (others => '0'); + gwerthernal_style_l_dout <= (others => '0'); + elsif( sysclk'event and sysclk = '1' ) then + -- clear + g_n_div_rebeq_dout <= g_n_div_rebeq_dout and not g_noop_clr; + if( g_wrb = '0' ) then + -- because we now... + for i in 0 to 1 loop + if( i = 0 ) then + g_dout_w0x0f_v := g_dout_w0x0f; + elsif( i = 1 ) then + if( n9_bit_write = '1' ) then + -- set + g_dout_w0x0f_v := g_dout_w0x0f(4 downto 1) & '1'; + end if; + --vnavigatoroff + else + -- not possible but added for code coverage's sake + end if; + --vnavigatoron + case g_dout_w0x0f_v is + when g_t_klim_w0x0f => g_t_klim_dout <= din(i*32+31 downto i*32); + when g_t_u_w0x0f => + -- output klim + for j in 0 to 31 loop + if( (g_t_klim_dout(j) = '0' and n9_bit_write = '0') or ( din(j) = '0' and n9_bit_write = '1')) then + g_t_u_dout(j) <= din(32*i+j); + end if; + end loop; + when g_t_l_w0x0f => g_t_l_dout <= din(i*32+31 downto i*32); + when g_t_hhh_l_w0x0f => g_t_hhh_l_dout <= din(i*32+31 downto i*32); + when g_t_jkl_sink_l_w0x0f => g_t_jkl_sink_l_dout <= din(i*32+31 downto i*32); + when g_secondary_t_l_w0x0f => g_secondary_t_l_dout <= din(i*32+31 downto i*32); + when g_style_c_l_w0x0f => g_style_c_l_dout(3 downto 0) <= din(3+i*32 downto i*32); + when g_e_z_w0x0f => g_e_z_dout <= din(i*32+31 downto i*32); + when g_n_both_qbars_l_w0x0f => g_n_both_qbars_l_dout <= din(i*32+31 downto i*32); + when g_style_vfr_w0x0f => null; -- read-only register + when g_style_klim_w0x0f => g_style_klim_dout <= din(i*32+31 downto i*32); + when g_unklimed_style_vfr_w0x0f => null; -- read-only register + when g_style_t_y_w0x0f => g_style_t_y_dout <= din(i*32+31 downto i*32); + when g_n_l_w0x0f => g_n_l_dout <= din(i*32+31 downto i*32); + when g_n_vfr_w0x0f => null; -- writes + when g_e_n_r_w0x0f => g_e_n_r_dout <= din(i*32+31 downto i*32); + when g_n_r_bne_w0x0f => g_n_r_bne_dout <= din(i*32); + when g_n_div_rebeq_w0x0f => g_n_div_rebeq_dout <= din(i*32+31 downto i*32) or + g_n_div_rebeq_dout; -- a '1' writes + when g_alu_l_w0x0f => g_alu_l_dout <= din(i*32+31 downto i*32); + when g_t_qaz_mult_low_w0x0f => g_t_qaz_mult_low_dout <= din(i*32+31 downto i*32); + when g_t_qaz_mult_high_w0x0f => g_t_qaz_mult_high_dout <= din(i*32+31 downto i*32); + when gwerthernal_style_u_w0x0f => gwerthernal_style_u_dout <= din(i*32+31 downto i*32); + when gwerthernal_style_l_w0x0f => gwerthernal_style_l_dout <= din(i*32+31 downto i*32); + --vnavigatoroff + when others => null; + --vnavigatoron + end case; + end loop; + + end if; + end if; + end process; + + -- sample + g_zaq_in_sample_proc : + process(reset, sysclk) + begin + if( reset /= '0' ) then + q_g_zaq_in <= (others => '0'); + q2_g_zaq_in <= (others => '0'); + q3_g_zaq_in <= (others => '0'); + elsif( sysclk'event and sysclk = '1' ) then + q_g_zaq_in <= g_zaq_in; + q2_g_zaq_in <= q_g_zaq_in; + q3_g_zaq_in <= g_zaq_in_y; + end if; + end process; + + -- vfr register + g_unklimed_style_vfr_dout <= q2_g_zaq_in; + + -- switch + g_zaq_in_y <= g_style_t_y_dout xor q2_g_zaq_in; + + -- qaz + g_style_vfr_dout <= -- top 2 + (g_zaq_in_y(31 downto 4) & + -- FSM + (( g_style_c_l_dout(3 downto 0) and q_g_zaq_in_cd) or + -- otherwise just use + (not g_style_c_l_dout(3 downto 0) and g_zaq_in_y(3 downto 0)))); + + -- in scan mode + g_zaq_in_y_no_dout <= (g_style_t_y_dout xor g_zaq_in) when scanb = '1' + --vnavigatoroff + else g_style_t_y_dout; + --vnavigatoron + + g_sys_in_i <= (-- top 28 + (g_zaq_in_y_no_dout(31 downto 4) & + -- is enabled + (( g_style_c_l_dout(3 downto 0) and q_g_zaq_in_cd) or + -- otherwise just use + (not g_style_c_l_dout(3 downto 0) and g_zaq_in_y_no_dout(3 downto 0))))); + + g_sys_in_ii <= (g_sys_in_i and not gwerthernal_style_l_dout) or (gwerthernal_style_u_dout and gwerthernal_style_l_dout ); + + g_sys_in <= g_sys_in_ii; + + lpq_proc : + process(reset, sysclk) + variable i : integer; + begin + if( reset /= '0' ) then + q_g_zaq_in_cd <= (others => '0'); + q_g_unzq <= (others => '1'); + elsif( sysclk'event and sysclk = '1' ) then + -- sample + if( debct_ping = '1') then + -- taken + for i in 0 to 3 loop + if( g_zaq_in_y(i) /= q3_g_zaq_in(i) ) then + q_g_unzq(i) <= '1'; + else + if( q_g_unzq(i) = '0' ) then + q_g_zaq_in_cd(i) <= g_zaq_in_y(i); + else + q_g_unzq(i) <= '0'; + end if; + end if; + end loop; + else + for i in 0 to 3 loop + if( g_zaq_in_y(i) /= q3_g_zaq_in(i) ) then + q_g_unzq(i) <= '1'; + end if; + end loop; + end if; + end if; + end process; + + -- generate lqqs + sample_forwerth_proc : + process(reset, sysclk) + begin + if( reset /= '0' ) then + q_g_style_vfr_dout <= (others => '0'); + elsif( sysclk'event and sysclk = '1' ) then + if( scanb = '1' ) then + q_g_style_vfr_dout <= g_style_vfr_dout; + --vnavigatoroff + else + -- in scan + q_g_style_vfr_dout <= g_style_vfr_dout or (g_zaq_out_i(31 downto 17) & "0" & g_zaq_out_i(15 downto 1) & "0") or g_zaq_ctl_i or g_sys_in_ii; + end if; + --vnavigatoron + end if; + end process; + + -- generate + g_n_active <= -- 1 to 0 + (((q_g_style_vfr_dout and not g_style_vfr_dout) or + -- get this + (not q_g_style_vfr_dout and g_style_vfr_dout and + g_n_both_qbars_l_dout))) and + -- must be + g_n_l_dout; + + -- check for lqq active and set lqq vfr register + -- also clear + n_proc : + process(reset, sysclk) + variable i : integer; + begin + if( reset /= '0' ) then + g_n_vfr_dout <= (others => '0'); + gwerth <= (others => '0'); + elsif( sysclk'event and sysclk = '1' ) then + for i in 0 to 31 loop + -- lqq + -- vfr matches + if( g_n_active(i) = '1' ) then + gwerth(i) <= '1'; + if( g_e_z_dout(i) = '1' ) then + -- lqq + g_n_vfr_dout(i) <= '1'; + else + g_n_vfr_dout(i) <= q_g_style_vfr_dout(i); + end if; + else + -- clear + if( g_e_z_dout(i) = '0' ) then + g_n_vfr_dout(i) <= q_g_style_vfr_dout(i); -- default always assign + -- in both + if( g_n_both_qbars_l_dout(i) = '1' or g_style_vfr_dout(i) = '1') then + gwerth(i) <= '0'; + end if; + else + -- write + if( g_wrb = '0' and g_dout_w0x0f = g_n_vfr_w0x0f and din(i) = '1' ) then + gwerth(i) <= '0'; + g_n_vfr_dout(i) <= '0'; + end if; + end if; + end if; + end loop; + end if; + end process; + + ---- + -- Create the Lqq + createwerth_vec_proc : + process( g_n_r_bne_dout, g_e_n_r_dout) + variable imod8, idiv8 : integer; + variable i : integer; + begin + for i in 0 to 31 loop + imod8 := i mod 8; + idiv8 := i / 8; + + if( g_n_r_bne_dout = '0' ) then + -- non-unique + g_vector(8*i+7 downto 8*i) <= g_e_n_r_dout(8*idiv8+7 downto 8*idiv8); + else + -- unique + if( imod8 = 0 ) then + g_vector(8*i+7 downto 8*i) <= g_e_n_r_dout(8*idiv8+7 downto 8*idiv8); + else + g_vector(8*i+7 downto 8*i) <= std_logic_vector( unsigned(g_e_n_r_dout(8*idiv8+7 downto 8*idiv8)) + + to_unsigned(imod8, 8)); + end if; + end if; + end loop; + end process; + + ---- + -- Qaz + g_noop <= g_n_div_rebeq_dout; + + + create_g_ack_bne_proc : + process( swe_ed,swe_lv,g_e_z_dout) + variable i : integer; + begin + for i in 0 to 31 loop + if( g_e_z_dout(i) = '1') then + swe_qaz1(i) <= swe_ed; + else + swe_qaz1(i) <= swe_lv; + end if; + end loop; + end process; + +end rtl; diff --git a/src/test/vhdl/clk.vhd b/src/test/vhdl/clk.vhd new file mode 100644 index 0000000..541c7cd --- /dev/null +++ b/src/test/vhdl/clk.vhd @@ -0,0 +1,36 @@ +LIBRARY IEEE; +USE IEEE.std_logic_1164.all; +entity clk is port( reset, preset, qreset, sysclk, dsysclk, esysclk : in std_logic; + ival : in std_logic_vector(31 downto 0) + ); +end clk; +architecture rtl of clk is + signal foo : std_logic_vector(10+3 downto 0); + signal baz : std_logic_vector(2 downto 0); + signal egg : std_logic_vector(4 to 7-1); +begin + pfoo: process(reset, sysclk) + begin + if( reset /= '0' ) then + foo <= (others => '1'); + elsif( sysclk'event and sysclk = '1' ) then + foo <= ival(31 downto 31-(10+3)); + end if; + end process; + pbaz: process(preset, dsysclk) + begin + if( preset /= '1' ) then + baz <= (others => '0'); + elsif( dsysclk'event and dsysclk = '0' ) then + baz <= ival(2 downto 0); + end if; + end process; + pegg: process(qreset, esysclk) + begin + if( qreset /= '1' ) then + egg <= (others => '0'); + elsif( esysclk'event and esysclk = '0' ) then + egg <= ival(6 downto 4); + end if; + end process; +end rtl; diff --git a/src/test/vhdl/counters.vhd b/src/test/vhdl/counters.vhd new file mode 100644 index 0000000..77f7bbb --- /dev/null +++ b/src/test/vhdl/counters.vhd @@ -0,0 +1,344 @@ +library IEEE; + +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; + +entity counters is + port( + sysclk : in std_logic; + foo_card : in std_logic; + wfoo0_baz : in std_logic; + wfoo0_blrb : in std_logic; + wfoo0_zz1pb : in std_logic; + wfoo0_turn : in std_logic_vector(31 downto 0); + debct_baz : in std_logic; + debct_blrb : in std_logic; + debct_zz1pb : in std_logic; + debct_bar : in std_logic; + debct_turn : in std_logic_vector(31 downto 0); + Z0_bar : in std_logic; + Z0_baz : in std_logic; + Z0_blrb : in std_logic; + Z0_zz1pb : in std_logic; + Z0_turn : in std_logic_vector(31 downto 0); + Y1_bar : in std_logic; + Y1_baz : in std_logic; + Y1_blrb : in std_logic; + Y1_zz1pb : in std_logic; + Y1_turn : in std_logic_vector(31 downto 0); + X2_bar : in std_logic; + X2_baz : in std_logic; + X2_blrb : in std_logic; + X2_zz1pb : in std_logic; + X2_turn : in std_logic_vector(31 downto 0); + W3_bar : in std_logic; + W3_baz : in std_logic; + W3_blrb : in std_logic; + W3_zz1pb : in std_logic; + W3_turn : in std_logic_vector(31 downto 0); + -- to engine block + Z0_cwm : out std_logic; + Z0 : out std_logic_vector(31 downto 0); + Y1_cwm : out std_logic; + Y1 : out std_logic_vector(31 downto 0); + X2_cwm : out std_logic; + X2 : out std_logic_vector(31 downto 0); + W3_cwm : out std_logic; + W3 : out std_logic_vector(31 downto 0); + wfoo0_cwm : out std_logic; + wfoo0_llwln : out std_logic_vector(31 downto 0); + debct_cwm : out std_logic; + debct_pull : out std_logic; + debct : out std_logic_vector(31 downto 0); + wdfilecardA2P : out std_logic + ); +end counters; + +architecture rtl of counters is + + signal wfoo0_llwln_var : unsigned(31 downto 0); + signal debct_var : unsigned(31 downto 0); + signal Z0_var : unsigned(31 downto 0); + signal Y1_var : unsigned(31 downto 0); + signal X2_var : unsigned(31 downto 0); + signal W3_var : unsigned(31 downto 0); + signal main_wfoo0_cwm : std_logic; + signal do_q3p_Z0 : std_logic; + signal do_q3p_Y1 : std_logic; + signal do_q3p_X2 : std_logic; + signal do_q3p_W3 : std_logic; + signal do_q3p_wfoo0 : std_logic; + signal do_q3p_debct : std_logic; + + signal Z0_cwm_i : std_logic; + signal Y1_cwm_i : std_logic; + signal X2_cwm_i : std_logic; + signal W3_cwm_i : std_logic; + signal debct_cwm_i : std_logic; + + signal file_card_i : std_logic; + signal do_file_card_i : std_logic; + signal prev_do_file_card : std_logic; + +begin + + ----- + -- form the outputs + wfoo0_llwln <= std_logic_vector(wfoo0_llwln_var); + debct <= std_logic_vector(debct_var); + Z0 <= std_logic_vector(Z0_var); + Y1 <= std_logic_vector(Y1_var); + X2 <= std_logic_vector(X2_var); + W3 <= std_logic_vector(W3_var); + Z0_cwm <= Z0_cwm_i; + Y1_cwm <= Y1_cwm_i; + X2_cwm <= X2_cwm_i; + W3_cwm <= W3_cwm_i; + debct_cwm <= debct_cwm_i; + + wdfilecardA2P <= do_file_card_i; + + LLWLNS : + process(foo_card, sysclk) + begin + if foo_card = '1' then + wfoo0_llwln_var <= (others => '0'); + debct_var <= (others => '0'); + Z0_var <= (others => '0'); + Y1_var <= (others => '0'); + X2_var <= (others => '0'); + W3_var <= (others => '0'); + + wfoo0_cwm <= '0'; + debct_cwm_i <= '0'; + debct_pull <= '0'; + Z0_cwm_i <= '0'; + Y1_cwm_i <= '0'; + X2_cwm_i <= '0'; + W3_cwm_i <= '0'; + main_wfoo0_cwm <= '0'; + file_card_i <= '0'; + + do_q3p_wfoo0 <= '0'; + do_file_card_i <= '0'; + prev_do_file_card <= '0'; + + do_q3p_Z0 <= '0'; + do_q3p_Y1 <= '0'; + do_q3p_X2 <= '0'; + do_q3p_W3 <= '0'; + do_q3p_debct <= '0'; + + else + if sysclk'event and sysclk = '1' then + + -- pull + debct_pull <= '0'; + do_file_card_i <= '0'; + + ---- + -- wfoo0 + + if wfoo0_baz = '1' then + wfoo0_llwln_var <= unsigned(wfoo0_turn); + main_wfoo0_cwm <= '0'; + if wfoo0_llwln_var = "00000000000000000000000000000000" then + do_q3p_wfoo0 <= '0'; + else + do_q3p_wfoo0 <= '1'; + end if; + else + if do_q3p_wfoo0 = '1' and wfoo0_blrb = '1' then + wfoo0_llwln_var <= wfoo0_llwln_var - 1; + if (wfoo0_llwln_var = "00000000000000000000000000000000") then + wfoo0_llwln_var <= unsigned(wfoo0_turn); + if main_wfoo0_cwm = '0' then + wfoo0_cwm <= '1'; + main_wfoo0_cwm <= '1'; + else + do_file_card_i <= '1'; + do_q3p_wfoo0 <= '0'; + end if; + end if; + end if; + end if; + + if wfoo0_zz1pb = '0' then + wfoo0_cwm <= '0'; + end if; + + if Z0_baz = '1' then -- counter Baz + Z0_var <= unsigned(Z0_turn); + if Z0_turn = "00000000000000000000000000000000" then + do_q3p_Z0 <= '0'; + else + do_q3p_Z0 <= '1'; + end if; + else + if do_q3p_Z0 = '1' and Z0_blrb = '1' then + if Z0_bar = '0' then + if Z0_cwm_i = '0' then + if do_q3p_Z0 = '1' then + Z0_var <= Z0_var - 1; + if (Z0_var = "00000000000000000000000000000001") then + Z0_cwm_i <= '1'; + do_q3p_Z0 <= '0'; + end if; + end if; + end if; + else + Z0_var <= Z0_var - 1; + if (Z0_var = "00000000000000000000000000000000") then + Z0_cwm_i <= '1'; + Z0_var <= unsigned(Z0_turn); + end if; + end if; -- Z0_bar + end if; + end if; -- Z0_blrb + + if Z0_zz1pb = '0' then + Z0_cwm_i <= '0'; + end if; + + if Y1_baz = '1' then -- counter Baz + Y1_var <= unsigned(Y1_turn); + if Y1_turn = "00000000000000000000000000000000" then + do_q3p_Y1 <= '0'; + else + do_q3p_Y1 <= '1'; + end if; + elsif do_q3p_Y1 = '1' and Y1_blrb = '1' then + if Y1_bar = '0' then + if Y1_cwm_i = '0' then + if do_q3p_Y1 = '1' then + Y1_var <= Y1_var - 1; + if (Y1_var = "00000000000000000000000000000001") then + Y1_cwm_i <= '1'; + do_q3p_Y1 <= '0'; + end if; + end if; + end if; + else + Y1_var <= Y1_var - 1; + + if (Y1_var = "00000000000000000000000000000000") then + Y1_cwm_i <= '1'; + Y1_var <= unsigned(Y1_turn); + end if; + end if; -- Y1_bar + + end if; -- Y1_blrb + + if Y1_zz1pb = '0' then + Y1_cwm_i <= '0'; + end if; + + if X2_baz = '1' then -- counter Baz + X2_var <= unsigned(X2_turn); + if X2_turn = "00000000000000000000000000000000" then + do_q3p_X2 <= '0'; + else + do_q3p_X2 <= '1'; + end if; + elsif do_q3p_X2 = '1' and X2_blrb = '1' then + if X2_bar = '0' then + if X2_cwm_i = '0' then + if do_q3p_X2 = '1' then + X2_var <= X2_var - 1; + if (X2_var = "00000000000000000000000000000001") then + X2_cwm_i <= '1'; + do_q3p_X2 <= '0'; + end if; + end if; + end if; + else + X2_var <= X2_var - 1; + + if (X2_var = "00000000000000000000000000000000") then --{ + X2_cwm_i <= '1'; + X2_var <= unsigned(X2_turn); + end if; + end if; --X2_bar + end if; -- X2_blrb + + if X2_zz1pb = '0' then + X2_cwm_i <= '0'; + end if; + + if W3_baz = '1' then -- counter Baz + W3_var <= unsigned(W3_turn); + if W3_turn = "00000000000000000000000000000000" then + do_q3p_W3 <= '0'; + else + do_q3p_W3 <= '1'; + end if; + elsif do_q3p_W3 = '1' and W3_blrb = '1' then + if W3_bar = '0' then + if W3_cwm_i = '0'then + if do_q3p_W3 = '1' then + W3_var <= W3_var - 1; + if (W3_var = "00000000000000000000000000000001") then + W3_cwm_i <= '1'; + do_q3p_W3 <= '0'; + end if; + end if; + end if; + else + W3_var <= W3_var - 1; + + if (W3_var = "00000000000000000000000000000000") then --{ + W3_cwm_i <= '1'; + W3_var <= unsigned(W3_turn); + end if; + end if; -- W3_bar + + end if; -- W3_blrb + + if W3_zz1pb = '0' then + W3_cwm_i <= '0'; + end if; + + if debct_baz = '1' then -- counter Baz + debct_var <= unsigned(debct_turn); + if debct_turn = "00000000000000000000000000000000" then + do_q3p_debct <= '0'; + else + do_q3p_debct <= '1'; + end if; + elsif do_q3p_debct = '1' and debct_blrb = '1' then + if debct_bar = '0' then + if debct_cwm_i = '0'then + if do_q3p_debct = '1' then + debct_var <= debct_var - 1; + if (debct_var = "00000000000000000000000000000001") then + debct_cwm_i <= '1'; + debct_pull <= '1'; + do_q3p_debct <= '0'; + end if; + end if; + end if; + else + ---- T + -- Continue + debct_var <= debct_var - 1; + + -- ending + if (debct_var = "00000000000000000000000000000000") then --{ + debct_cwm_i <= '1'; + debct_pull <= '1'; + debct_var <= unsigned(debct_turn); + end if; + end if; -- debct_bar + + end if; -- debct_blrb + + -- comment + if debct_zz1pb = '0' then + debct_cwm_i <= '0'; + end if; + + end if; + end if; + end process; + +end rtl; diff --git a/src/test/vhdl/dsp.vhd b/src/test/vhdl/dsp.vhd new file mode 100644 index 0000000..a762a4e --- /dev/null +++ b/src/test/vhdl/dsp.vhd @@ -0,0 +1,41 @@ +-- Nearly useless stub, it's here to support genericmap.vhd +LIBRARY IEEE; +USE IEEE.std_logic_1164.all; +USE IEEE.numeric_std.all; + +entity dsp is generic( + rst_val : std_logic := '0'; + thing_size: integer := 51; + bus_width : integer := 24); + port( + -- Inputs + clk, rstn : in std_logic; + en, start : in std_logic; + param : in std_logic_vector(7 downto 0); + addr : in std_logic_vector(2 downto 0); + din : in std_logic_vector(bus_width-1 downto 0); + we : in std_logic; + memdin : out std_logic_vector(13 downto 0); + -- Outputs + dout : out std_logic_vector(bus_width-1 downto 0); + memaddr : out std_logic_vector(5 downto 0); + memdout : out std_logic_vector(13 downto 0) + ); +end; + +architecture rtl of dsp is + signal foo : std_logic; + signal sr : std_logic_vector(63 downto 0); + signal iparam : integer; +begin + iparam <= to_integer(unsigned(param)); + process(clk) begin + -- dout <= std_logic_vector(to_unsigned(1,bus_width)); + if rising_edge(clk) then + if we = '1' then + sr <= sr(thing_size-bus_width-1 downto 0) & din; + end if; + dout <= sr(iparam*bus_width+bus_width-1 downto iparam*bus_width); + end if; + end process; +end rtl; diff --git a/src/test/vhdl/expr.vhd b/src/test/vhdl/expr.vhd new file mode 100644 index 0000000..103e762 --- /dev/null +++ b/src/test/vhdl/expr.vhd @@ -0,0 +1,46 @@ +library IEEE; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; + +entity expr is +generic(SIZE: positive:=2**8-1); +port(reset, sysclk, ival : in std_logic); +end expr; + +architecture rtl of expr is + constant SIZE_OF : positive:=2**8-1; + signal foo : std_logic_vector(13 downto 0); + signal baz : std_logic_vector(2 downto 0); + signal bam : std_logic_vector(22 downto 0); + signal out_i : std_logic_vector(5 downto 3); + signal input_status : std_logic_vector(8 downto 0); + signal enable, debug, aux, outy, dv, value : std_logic; + signal expo : std_logic_vector(2**3-1 downto 0); +begin + -- drive input status + input_status <= -- top bits + (foo(9 downto 4) & + (( (baz(2 downto 0) and foo(3 downto 0)) or + (not baz(2 downto 0) and bam(3 downto 0))))); + -- drive based on foo + out_i(4) <= + -- if secondary enabl is set then drive aux out + (enable and (aux xor outy)) or + -- if debug is enabled + (debug and dv and not enable) or + -- otherwise we drive reg + (not debug and not enable and value); + -- not drive + + pfoo: process(reset, sysclk) + begin + if( reset /= '0' ) then + foo <= (others => '0'); + elsif( sysclk'event and sysclk = '0' ) then + foo(3*(2-1)) <= baz(1*(1+2)-2); + bam(foo'range) <= foo; + end if; + end process; + + expo <= std_logic_vector(to_unsigned(2**4, 2**8)); +end rtl; diff --git a/src/test/vhdl/fifo.vhd b/src/test/vhdl/fifo.vhd new file mode 100644 index 0000000..112068f --- /dev/null +++ b/src/test/vhdl/fifo.vhd @@ -0,0 +1,202 @@ +--------------------------------------------------------------------- +-- Filename: gh_fifo_async16_sr.vhd +-- +-- Description: +-- an Asynchronous FIFO +-- +-- Copyright (c) 2006 by George Huber +-- an OpenCores.org Project +-- free to use, but see documentation for conditions +-- +-- Revision History: +-- Revision Date Author Comment +-- -------- ---------- --------- ----------- +-- 1.0 12/17/06 h lefevre Initial revision +-- +-------------------------------------------------------- + +library IEEE; +use IEEE.std_logic_1164.all; +USE ieee.numeric_std.all; + +entity fifo is + GENERIC (data_width: INTEGER :=8 ); -- size of data bus + port ( + clk_WR : in STD_LOGIC; -- write clock + clk_RD : in STD_LOGIC; -- read clock + rst : in STD_LOGIC; -- resets counters + srst : in STD_LOGIC:='0'; -- resets counters (sync with clk_WR) + WR : in STD_LOGIC; -- write control + RD : in STD_LOGIC; -- read control + D : in STD_LOGIC_VECTOR (data_width-1 downto 0); + Q : out STD_LOGIC_VECTOR (data_width-1 downto 0); + empty : out STD_LOGIC; + full : out STD_LOGIC); +end entity; + +architecture rtl of fifo is + + type ram_mem_type is array (15 downto 0) + of STD_LOGIC_VECTOR (data_width-1 downto 0); + signal ram_mem : ram_mem_type; + signal iempty : STD_LOGIC; + signal ifull : STD_LOGIC; + signal add_WR_CE : std_logic; + signal add_WR : std_logic_vector(4 downto 0); -- 4 bits are used to address MEM + signal add_WR_GC : std_logic_vector(4 downto 0); -- 5 bits are used to compare + signal n_add_WR : std_logic_vector(4 downto 0); -- for empty, full flags + signal add_WR_RS : std_logic_vector(4 downto 0); -- synced to read clk + signal add_RD_CE : std_logic; + signal add_RD : std_logic_vector(4 downto 0); + signal add_RD_GC : std_logic_vector(4 downto 0); + signal add_RD_GCwc : std_logic_vector(4 downto 0); + signal n_add_RD : std_logic_vector(4 downto 0); + signal add_RD_WS : std_logic_vector(4 downto 0); -- synced to write clk + signal srst_w : STD_LOGIC; + signal isrst_w : STD_LOGIC; + signal srst_r : STD_LOGIC; + signal isrst_r : STD_LOGIC; + +begin + +-------------------------------------------- +------- memory ----------------------------- +-------------------------------------------- + +process (clk_WR) +begin + if (rising_edge(clk_WR)) then + if ((WR = '1') and (ifull = '0')) then + --ram_mem(to_integer(unsigned(add_WR(3 downto 0)))) <= D; + end if; + end if; +end process; + + --Q <= ram_mem(to_integer(unsigned(add_RD(3 downto 0)))); + +----------------------------------------- +----- Write address counter ------------- +----------------------------------------- + + add_WR_CE <= '0' when (ifull = '1') else + '0' when (WR = '0') else + '1'; + + n_add_WR <= std_logic_vector(unsigned(add_WR) + x"1"); + +process (clk_WR,rst) +begin + if (rst = '1') then + add_WR <= (others => '0'); + add_RD_WS <= "11000"; + add_WR_GC <= (others => '0'); + elsif (rising_edge(clk_WR)) then + add_RD_WS <= add_RD_GCwc; + if (srst_w = '1') then + add_WR <= (others => '0'); + add_WR_GC <= (others => '0'); + elsif (add_WR_CE = '1') then + add_WR <= n_add_WR; + add_WR_GC(0) <= n_add_WR(0) xor n_add_WR(1); + add_WR_GC(1) <= n_add_WR(1) xor n_add_WR(2); + add_WR_GC(2) <= n_add_WR(2) xor n_add_WR(3); + add_WR_GC(3) <= n_add_WR(3) xor n_add_WR(4); + add_WR_GC(4) <= n_add_WR(4); + else + add_WR <= add_WR; + add_WR_GC <= add_WR_GC; + end if; + end if; +end process; + + full <= ifull; + + ifull <= '0' when (iempty = '1') else -- just in case add_RD_WS is reset to "00000" + '0' when (add_RD_WS /= add_WR_GC) else ---- instend of "11000" + '1'; + +----------------------------------------- +----- Read address counter -------------- +----------------------------------------- + + add_RD_CE <= '0' when (iempty = '1') else + '0' when (RD = '0') else + '1'; + + n_add_RD <= std_logic_vector(unsigned(add_RD) + x"1"); + +process (clk_RD,rst) +begin + if (rst = '1') then + add_RD <= (others => '0'); + add_WR_RS <= (others => '0'); + add_RD_GC <= (others => '0'); + add_RD_GCwc <= "11000"; + elsif (rising_edge(clk_RD)) then + add_WR_RS <= add_WR_GC; + if (srst_r = '1') then + add_RD <= (others => '0'); + add_RD_GC <= (others => '0'); + add_RD_GCwc <= "11000"; + elsif (add_RD_CE = '1') then + add_RD <= n_add_RD; + add_RD_GC(0) <= n_add_RD(0) xor n_add_RD(1); + add_RD_GC(1) <= n_add_RD(1) xor n_add_RD(2); + add_RD_GC(2) <= n_add_RD(2) xor n_add_RD(3); + add_RD_GC(3) <= n_add_RD(3) xor n_add_RD(4); + add_RD_GC(4) <= n_add_RD(4); + add_RD_GCwc(0) <= n_add_RD(0) xor n_add_RD(1); + add_RD_GCwc(1) <= n_add_RD(1) xor n_add_RD(2); + add_RD_GCwc(2) <= n_add_RD(2) xor n_add_RD(3); + add_RD_GCwc(3) <= n_add_RD(3) xor (not n_add_RD(4)); + add_RD_GCwc(4) <= (not n_add_RD(4)); + else + add_RD <= add_RD; + add_RD_GC <= add_RD_GC; + add_RD_GCwc <= add_RD_GCwc; + end if; + end if; +end process; + + empty <= iempty; + + iempty <= '1' when (add_WR_RS = add_RD_GC) else + '0'; + +---------------------------------- +--- sync rest stuff -------------- +--- srst is sync with clk_WR ----- +--- srst_r is sync with clk_RD --- +---------------------------------- + +process (clk_WR,rst) +begin + if (rst = '1') then + srst_w <= '0'; + isrst_r <= '0'; + elsif (rising_edge(clk_WR)) then + isrst_r <= srst_r; + if (srst = '1') then + srst_w <= '1'; + elsif (isrst_r = '1') then + srst_w <= '0'; + end if; + end if; +end process; + +process (clk_RD,rst) +begin + if (rst = '1') then + srst_r <= '0'; + isrst_w <= '0'; + elsif (rising_edge(clk_RD)) then + isrst_w <= srst_w; + if (isrst_w = '1') then + srst_r <= '1'; + else + srst_r <= '0'; + end if; + end if; +end process; + +end architecture; diff --git a/src/test/vhdl/forgen.vhd b/src/test/vhdl/forgen.vhd new file mode 100644 index 0000000..61f11fe --- /dev/null +++ b/src/test/vhdl/forgen.vhd @@ -0,0 +1,52 @@ +LIBRARY IEEE; +USE IEEE.std_logic_1164.all; + +entity forgen is + generic( + bus_width : integer := 15; + TOP_GP2 : integer:= 0 + ); + port( + sysclk, reset, wrb : in std_logic; + din : in std_logic_vector(bus_width downto 0); + rdout: out std_logic_vector(bus_width downto 0) + ); +end forgen; + +architecture rtl of forgen is + component wbit1 -- register bit default 1 + port( + clk : in std_logic; + wrb : in std_logic; + reset : in std_logic; + enb : in std_logic; + din : in std_logic; + dout : out std_logic); + end component; + + signal regSelect : std_logic_vector(bus_width * 2 downto 0); +begin + ----------------------------------------------------- + -- Reg : GP 2 + -- Active : 32 + -- Type : RW + ----------------------------------------------------- + reg_gp2 : for bitnum in 0 to bus_width generate + wbit1_inst : wbit1 + PORT MAP( + clk => sysclk, + wrb => wrb, + reset => reset, + enb => regSelect(TOP_GP2), + din => din(bitnum), + dout => rdout(bitnum) + ); + end generate; + + process(sysclk) begin + if sysclk'event and sysclk = '1' then + regSelect(1) <= '1'; + end if; + end process; + +end rtl; diff --git a/src/test/vhdl/forloop.vhd b/src/test/vhdl/forloop.vhd new file mode 100644 index 0000000..492ec27 --- /dev/null +++ b/src/test/vhdl/forloop.vhd @@ -0,0 +1,37 @@ +library IEEE; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; + +entity forloop is port( + reset, sysclk : in std_logic +); +end forloop; + +architecture rtl of forloop is + signal selection : std_logic; + signal egg_timer : std_logic_vector(6 downto 0); +begin + TIMERS : + process(reset, sysclk) + variable timer_var : integer; + variable a, i, j, k : integer; + variable zz5 : std_logic_vector(31 downto 0); + variable zz : std_logic_vector(511 downto 0); + begin + if reset = '1' then + selection <= '1'; + timer_var := 2; + egg_timer <= (others => '0'); + elsif sysclk'event and sysclk = '1' then + -- pulse only lasts for once cycle + selection <= '0'; + egg_timer <= (others => '1'); + for i in 0 to j*k loop + a := a + i; + for k in a-9 downto -14 loop + zz5 := zz(31+k downto k); + end loop; -- k + end loop; -- i + end if; + end process; +end rtl; diff --git a/src/test/vhdl/formatter_vhdl.vhd b/src/test/vhdl/formatter_vhdl.vhd new file mode 100644 index 0000000..e69de29 diff --git a/src/test/vhdl/genericmap.vhd b/src/test/vhdl/genericmap.vhd new file mode 100644 index 0000000..3038f88 --- /dev/null +++ b/src/test/vhdl/genericmap.vhd @@ -0,0 +1,105 @@ +LIBRARY IEEE; +USE IEEE.std_logic_1164.all; +entity genericmap is +generic( + rst_val : std_logic := '0'; + thing_size: integer := 201 rem 2; + bus_width : integer := 201 mod 32); +port( + clk, rstn : in std_logic; + en, start_dec : in std_logic; + addr : in std_logic_vector(2 downto 0); + din : in std_logic_vector(25 downto 0); + we : in std_logic; + pixel_in : in std_logic_vector(7 downto 0); + pix_req : in std_logic; + bip : in std_logic; + a, b : in std_logic_vector(7 downto 0); + c, load : in std_logic_vector(7 downto 0); + pack : in std_logic_vector(6 downto 0); + base : in std_logic_vector(2 downto 0); + qtd : in std_logic_vector(21 downto 0); + -- Outputs + dout : out std_logic_vector(25 downto 0); + pixel_out : out std_logic_vector(7 downto 0); + pixel_valid : out std_logic; + code : out std_logic_vector(9 downto 0); + complex : out std_logic_vector(23 downto 0); + eno : out std_logic +); +end genericmap; +architecture rtl of genericmap is + + component dsp + generic( + rst_val : std_logic := '0'; + thing_size: integer := 201; + bus_width : integer := 24); + port( + -- Inputs + clk, rstn : in std_logic; + en, start : in std_logic; + param : in std_logic_vector(7 downto 0); + addr : in std_logic_vector(2 downto 0); + din : in std_logic_vector(bus_width-1 downto 0); + we : in std_logic; + memdin : out std_logic_vector(13 downto 0); + -- Outputs + dout : out std_logic_vector(bus_width-1 downto 0); + memaddr : out std_logic_vector(5 downto 0); + memdout : out std_logic_vector(13 downto 0) + ); + end component; + signal param : std_logic_vector(7 downto 0); + signal selection : std_logic; + signal start, enf : std_logic; -- Start and enable signals + signal memdin : std_logic_vector(13 downto 0); + signal memaddr : std_logic_vector(5 downto 0); + signal memdout : std_logic_vector(13 downto 0); + signal colour : std_logic_vector(1 downto 0); +begin + dsp_inst0 : dsp + -- default bus_width is 24 + port map( + -- Inputs + clk => clk, + rstn => rstn, + en => '1', + start => '0', + param => X"42", + addr => "101", + din => "000100010001000100010001", + we => '0', + -- Outputs + dout => dout(23 downto 0), + memaddr => memaddr, + memdout => memdout + ); + + dsp_inst1 : dsp + generic map( + rst_val => '1', + bus_width => 16) + port map( + -- Inputs + clk => clk, + rstn => rstn, + en => '1', + start => '0', + param => X"42", + addr => "101", + din => "0001000100010001", + we => '0', + -- Outputs + dout => dout(15 downto 0), + memaddr => memaddr, + memdout => memdout + ); + + signextend_inst2 : entity work.signextend + port map ( + i => "0000000000000000", + o => open + ); + +end rtl; diff --git a/src/test/vhdl/ifchain.vhd b/src/test/vhdl/ifchain.vhd new file mode 100644 index 0000000..a830272 --- /dev/null +++ b/src/test/vhdl/ifchain.vhd @@ -0,0 +1,26 @@ +LIBRARY IEEE; +USE IEEE.std_logic_1164.all; + +entity ifchain is port( + clk, rstn : in std_logic +); +end ifchain; + +architecture rtl of ifchain is + type t is array (3 downto 0) of std_logic_vector(31 downto 0); + signal a : std_logic_vector(3 downto 0); + signal b : std_logic_vector(3 downto 0); + signal status : std_logic; + signal c : t; +begin + + process(clk) begin + if clk'event and clk = '1' then + if b(1) & a(3 downto 2) = "001" then + status <= '1'; + c(0) <= x"FFFFFFFF"; + end if; + end if; + end process; + +end rtl; diff --git a/src/test/vhdl/ifchain2.vhd b/src/test/vhdl/ifchain2.vhd new file mode 100644 index 0000000..b002568 --- /dev/null +++ b/src/test/vhdl/ifchain2.vhd @@ -0,0 +1,36 @@ +LIBRARY IEEE; +USE IEEE.std_logic_1164.all; +USE IEEE.numeric_std.all; + +entity ifchain2 is port( + clk, rstn : in std_logic; + enable: in std_logic; + result: out std_logic +); +end ifchain2; + +architecture rtl of ifchain2 is + signal counter : unsigned(3 downto 0); + constant CLK_DIV_VAL : unsigned(3 downto 0) := to_unsigned(11,4); +begin + +clk_src : process(clk, rstn) is +begin + if (rstn = '0') then + counter <= (others => '0'); + result <= '0'; + elsif (rising_edge(clk)) then -- Divide by 2 by default + if (enable = '1') then + if (counter = 0) then + counter <= CLK_DIV_VAL; + result <= '1'; + else + counter <= counter - 1; + result <= '0'; + end if; -- counter + end if; -- enable + end if; -- clk, rst_n +end process clk_src; +assert (counter < CLK_DIV_VAL) report "test case" severity error; + +end rtl; diff --git a/src/test/vhdl/mem.vhd b/src/test/vhdl/mem.vhd new file mode 100644 index 0000000..ca0afef --- /dev/null +++ b/src/test/vhdl/mem.vhd @@ -0,0 +1,36 @@ +library ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; + +entity mem is +generic( + addr_width : integer := 6; + bus_width : integer := 14 +); + port ( + clk : in std_logic; + rstn : in std_logic; -- not implemented + en : in std_logic; + cs : in std_logic; -- not implemented + addr : in unsigned(addr_width-1 downto 0); + din : in unsigned(bus_width-1 downto 0); + dout : out unsigned(bus_width-1 downto 0) + ); +end entity; + +architecture rtl of mem is + signal al : unsigned(addr_width-1 downto 0) := X"00"; + type mem_Type is array (255 downto 0) of unsigned(bus_width-1 downto 0); + signal mem : mem_Type; +begin + dout <= mem(to_integer(al)); + process (clk) is + begin + if rising_edge(clk) then + al <= addr; + if en = '1' then + mem(to_integer(addr)) <= din; + end if; + end if; + end process; +end architecture; diff --git a/src/test/vhdl/operators.vhd b/src/test/vhdl/operators.vhd new file mode 100644 index 0000000..8922cc1 --- /dev/null +++ b/src/test/vhdl/operators.vhd @@ -0,0 +1,85 @@ +library IEEE; +use IEEE.std_logic_1164.all; +use IEEE.numeric_std.all; + +entity operators is + generic ( + g_and : std_logic_vector(1 downto 0) := "11" and "10"; + g_or : std_logic_vector(1 downto 0) := "11" or "10"; + g_nand : std_logic_vector(1 downto 0) := "11" nand "10"; + g_nor : std_logic_vector(1 downto 0) := "11" nor "10"; + g_xor : std_logic_vector(1 downto 0) := "11" xor "10"; + g_xnor : std_logic_vector(1 downto 0) := "11" xnor "10"; + g_not : std_logic_vector(1 downto 0) := not "10" + ); + port ( + clk_i : in std_logic + ); +end entity operators; + +architecture rtl of operators is + constant c_and : std_logic_vector(1 downto 0) := "11" and "10"; + constant c_or : std_logic_vector(1 downto 0) := "11" or "10"; + constant c_nand : std_logic_vector(1 downto 0) := "11" nand "10"; + constant c_nor : std_logic_vector(1 downto 0) := "11" nor "10"; + constant c_xor : std_logic_vector(1 downto 0) := "11" xor "10"; + constant c_xnor : std_logic_vector(1 downto 0) := "11" xnor "10"; + constant c_not : std_logic_vector(1 downto 0) := not "10"; + signal s_op1 : std_logic_vector(1 downto 0); + signal s_op2 : std_logic_vector(1 downto 0); + signal s_res : std_logic_vector(1 downto 0); + signal s_int : integer; + signal s_sig : signed(7 downto 0); + signal s_uns : unsigned(7 downto 0); +begin + + test_i: process(clk_i) + variable v_op1 : std_logic_vector(1 downto 0); + variable v_op2 : std_logic_vector(1 downto 0); + variable v_res : std_logic_vector(1 downto 0); + begin + if rising_edge(clk_i) then + if + (s_op1="11" and s_op2="00") or + (s_op1="11" or s_op2="00") or + (s_op1="11" nand s_op2="00") or + (s_op1="11" nor s_op2="00") or + (not (s_op1="11")) + then + s_res <= s_op1 and s_op2; + s_res <= s_op1 or s_op2; + v_res := v_op1 nand v_op2; + v_res := v_op1 nor v_op2; + s_res <= s_op1 xor s_op2; + v_res := v_op1 xnor v_op2; + s_res <= not s_op1; + s_int <= abs(s_int); + s_sig <= abs(s_sig); + s_sig <= s_sig sll 2; + s_sig <= s_sig srl to_integer(s_sig); + s_uns <= s_uns sll to_integer(s_uns); + s_uns <= s_uns srl 9; + s_sig <= shift_left(s_sig,2); + s_sig <= shift_right(s_sig,to_integer(s_sig)); + -- s_uns <= s_uns ror 3; -- Not yet implemented + -- s_uns <= s_uns rol to_integer(s_uns); -- Not yet implemented + -- s_uns <= rotate_right(s_uns,3); -- Not yet implemented + -- s_uns <= rotate_left(s_uns,to_integer(s_uns)); -- Not yet implemented + s_sig <= s_sig rem s_int; + s_sig <= s_sig mod s_int; + end if; + if + s_sig = signed(s_uns) or unsigned(s_sig) /= s_uns or s_sig < "101010101" or + s_sig <= signed(s_uns) or unsigned(s_sig) > s_uns or s_sig >= "00000101" + then + s_sig <= s_sig + s_sig; + s_sig <= s_sig - s_sig; + s_sig <= s_sig * s_sig; + s_sig <= s_sig / s_sig; + s_sig <= s_sig(7 downto 4) & "10" & signed(s_uns(1 downto 0)); + s_int <= 2 ** 3; + end if; + end if; + end process test_i; + +end architecture rtl; diff --git a/src/test/vhdl/partselect.vhd b/src/test/vhdl/partselect.vhd new file mode 100644 index 0000000..90c67b2 --- /dev/null +++ b/src/test/vhdl/partselect.vhd @@ -0,0 +1,32 @@ +library IEEE; +use IEEE.std_logic_1164.all; + +entity partselect is + port( + clk_i : in std_logic + ); +end entity partselect; + +architecture rtl of partselect is + signal big_sig : std_logic_vector(31 downto 0); + signal lit_sig : std_logic_vector(0 to 31); + signal i : integer:=8; +begin + + test_i: process(clk_i) + variable big_var : std_logic_vector(31 downto 0); + variable lit_var : std_logic_vector(0 to 31); + variable j : integer; + begin + if rising_edge(clk_i) then + big_sig(31 downto 24) <= big_sig(7 downto 0); + big_var(31 downto 24) := big_var(7 downto 0); + lit_sig(i*3 to i*3+7) <= lit_sig(0 to 7); + lit_var(j*3 to j*3+8) := lit_var(j*0 to 8+j*0); + -- + big_sig(i*3+8 downto i*3) <= big_sig(8 downto 0); + big_var(j*3+8 downto j*3) := big_var(j*0+8 downto j*0); + end if; + end process test_i; + +end architecture rtl; diff --git a/src/test/vhdl/signextend.vhd b/src/test/vhdl/signextend.vhd new file mode 100644 index 0000000..48b7130 --- /dev/null +++ b/src/test/vhdl/signextend.vhd @@ -0,0 +1,17 @@ +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +use IEEE.NUMERIC_STD.ALL; + +entity signextend is + port( + i : in std_logic_vector(15 downto 0); + o : out std_logic_vector(31 downto 0) + ); +end entity signextend; + +architecture behavior of signextend is +begin + o(31 downto 24) <= (others => '0'); + o(23 downto 16) <= (others => i(15)); + o(15 downto 0) <= i; +end architecture behavior; diff --git a/src/test/vhdl/test.vhd b/src/test/vhdl/test.vhd new file mode 100644 index 0000000..236fcae --- /dev/null +++ b/src/test/vhdl/test.vhd @@ -0,0 +1,191 @@ +-- Project: VHDL to Verilog RTL translation +-- Revision: 1.0 +-- Date of last Revision: February 27 2001 +-- Designer: Vincenzo Liguori +-- vhd2vl test file +-- This VHDL file exercises vhd2vl + +LIBRARY IEEE; + +USE IEEE.std_logic_1164.all, IEEE.numeric_std.all; + +entity test is port( + -- Inputs + clk, rstn : in std_logic; + en, start_dec : in std_logic; + addr : in std_logic_vector(2 downto 0); + din : in std_logic_vector(25 downto 0); + we : in std_logic; + pixel_in : in std_logic_vector(7 downto 0); + pix_req : in std_logic; + config1, bip : in std_logic; + a, b : in std_logic_vector(7 downto 0); + c, load : in std_logic_vector(7 downto 0); + pack : in std_logic_vector(6 downto 0); + base : in std_logic_vector(2 downto 0); + qtd : in std_logic_vector(21 downto 0); + -- Outputs + dout : out std_logic_vector(23 downto 0); + pixel_out : out std_logic_vector(7 downto 0); + pixel_valid : out std_logic; + code : out std_logic_vector(9 downto 0); + code1 : out std_logic_vector(9 downto 0); + complex : out std_logic_vector(23 downto 0); + eno : out std_logic +); +end test; + +architecture rtl of test is + +-- Components declarations are ignored by vhd2vl +-- but they are still parsed + +component dsp port( + -- Inputs + clk, rstn : in std_logic; + en, start : in std_logic; + param : in std_logic_vector(7 downto 0); + addr : in std_logic_vector(2 downto 0); + din : in std_logic_vector(23 downto 0); + we : in std_logic; + memdin : out std_logic_vector(13 downto 0); + -- Outputs + dout : out std_logic_vector(23 downto 0); + memaddr : out std_logic_vector(5 downto 0); + memdout : out std_logic_vector(13 downto 0) +); +end component; + +component mem port( + -- Inputs + clk, rstn : in std_logic; + en : in std_logic; + cs : in std_logic; + addr : in std_logic_vector(5 downto 0); + din : in std_logic_vector(13 downto 0); + -- Outputs + dout : out std_logic_vector(13 downto 0) +); +end component; + + type state is (red, green, blue, yellow); + signal status : state; + constant PARAM1 : std_logic_vector(7 downto 0):="01101101"; + constant PARAM2 : std_logic_vector(7 downto 0):="11001101"; + constant PARAM3 : std_logic_vector(7 downto 0):="00010111"; + signal param : std_logic_vector(7 downto 0); + signal selection : std_logic := '0'; + signal start, enf : std_logic; -- Start and enable signals + signal memdin : std_logic_vector(13 downto 0); + signal memaddr : std_logic_vector(5 downto 0); + signal memdout : std_logic_vector(13 downto 0); + signal colour : std_logic_vector(1 downto 0); +begin + + param <= PARAM1 when config1 = '1' else PARAM2 when status = green else PARAM3; + + -- Synchronously process + process(clk) begin + if clk'event and clk = '1' then + pixel_out <= pixel_in xor "11001100"; + end if; + end process; + + -- Synchronous process + process(clk) begin + if rising_edge(clk) then + case status is + when red => colour <= "00"; + when green => colour <= B"01"; + when blue => colour <= "10"; + when others => colour <= "11"; + end case; + end if; + end process; + + -- Synchronous process with asynch reset + process(clk,rstn) begin + if rstn = '0' then + status <= red; + elsif rising_edge(clk) then + case status is + when red => + if pix_req = '1' then + status <= green; + end if; + when green => + if a(3) = '1' then + start <= start_dec; + status <= blue; + elsif (b(5) & a(3 downto 2)) = "001" then + status <= yellow; + end if; + when blue => + status <= yellow; + when others => + start <= '0'; + status <= red; + end case; + end if; + end process; + + -- Example of with statement + with memaddr(2 downto 0) select + code(9 downto 2) <= "110" & pack(6 downto 2) when "000" | "110", + "11100010" when "101", + (others => '1') when "010", + (others => '0') when "011", + std_logic_vector(unsigned(a) + unsigned(b)) when others; + code1(1 downto 0) <= a(6 downto 5) xor (a(4) & b(6)); + + -- Asynch process + decode : process(we, addr, config1, bip) begin + if we = '1' then + if addr(2 downto 0) = "100" then + selection <= '1'; + elsif (b & a) = a & b and bip = '0' then + selection <= config1; + else + selection <= '1'; + end if; + else + selection <= '0'; + end if; + end process decode; + + -- Components instantiation + dsp_inst : dsp port map( + -- Inputs + clk => clk, + rstn => rstn, + en => en, + start => start, + param => param, + addr => addr, + din => din(23 downto 0), + we => we, + memdin => memdin, + -- Outputs + dout => dout, + memaddr => memaddr, + memdout => memdout + ); + + dsp_mem : mem port map( + -- Inputs + clk => clk, + rstn => rstn, + en => en, + cs => selection, + addr => memaddr, + din => memdout, + -- Outputs + dout => memdin + ); + + complex <= enf & (std_logic_vector("110" * unsigned(load))) & qtd(3 downto 0) & base & "11001"; + + enf <= '1' when c < "1000111" else '0'; + eno <= enf; + +end rtl; diff --git a/src/test/vhdl/todo.vhd b/src/test/vhdl/todo.vhd new file mode 100644 index 0000000..7b05d2a --- /dev/null +++ b/src/test/vhdl/todo.vhd @@ -0,0 +1,74 @@ +library IEEE; +use IEEE.std_logic_1164.all; +use IEEE.numeric_std.all; + +entity todo is + generic( + INBYLEVEL : boolean:=FALSE + ); + port ( + clk_i : in std_logic; + data_i : in std_logic_vector(7 downto 0); + data_o : out std_logic_vector(7 downto 0) + ); +end todo; + +architecture rtl of todo is + type mem_type is array (0 to 255) of integer; + signal mem : mem_type; + + signal int : integer; + signal uns : unsigned(7 downto 0); + + constant BYTES : positive:=4; + constant WIDTH : positive:=BYTES*8; + signal index : natural range 0 to BYTES-1; + signal comma : std_logic_vector(BYTES*3-1 downto 0); + + -- (others => (others => '0')) must be replaced by an initial block with a for + -- or something similar. + --type ff_array is array (0 to 255) of std_logic_vector(7 downto 0); + --signal data_r : ff_array :=(others => (others => '0')); +begin + --************************************************************************** + -- Wrong translations + --************************************************************************** + -- + test_i: process(clk_i) + -- iverilog: variable declaration assignments are only allowed at the module level. + variable i : integer:=8; + begin + for i in 0 to 7 loop + if i=4 then + exit; -- iverilog: error: malformed statement + end if; + end loop; + end process test_i; + -- indexed part-select not applied + do_boundary: process (clk_i) + begin + if rising_edge(clk_i) then + for i in 0 to BYTES-1 loop + if comma(BYTES*2+i-1 downto BYTES+i)=comma(3 downto 0) then + index <= i; + end if; + end loop; + end if; + end process; + comma <= comma(BYTES+index-1 downto index); + --************************************************************************** + -- Translations which abort with syntax error (uncomment to test) + --************************************************************************** + -- Concatenation in port assignament fail +-- uns <= "0000" & X"1"; -- It is supported +-- dut1_i: entity work.signextend +-- port map ( +-- i => "00000000" & X"11", -- But here fail +-- o => open +-- ); + -- Unsupported generate with boolean? +-- in_by_level: +-- if INBYLEVEL generate +-- int <= 9; +-- end generate in_by_level; +end rtl; diff --git a/src/test/vhdl/wbit1.vhd b/src/test/vhdl/wbit1.vhd new file mode 100644 index 0000000..12b1e38 --- /dev/null +++ b/src/test/vhdl/wbit1.vhd @@ -0,0 +1,21 @@ +-- Nearly useless stub, it's here to support generate.vhd +LIBRARY IEEE; +USE IEEE.std_logic_1164.all; + +entity wbit1 is + port( + clk : in std_logic; + wrb : in std_logic; + reset : in std_logic; + enb : in std_logic; + din : in std_logic; + dout : out std_logic); +end; + +architecture rtl of wbit1 is + signal foo : std_logic; +begin + process(clk) begin + dout <= '1'; + end process; +end rtl; diff --git a/src/test/vhdl/whileloop.vhd b/src/test/vhdl/whileloop.vhd new file mode 100644 index 0000000..44793e3 --- /dev/null +++ b/src/test/vhdl/whileloop.vhd @@ -0,0 +1,27 @@ +library IEEE; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; + +entity whileloop is port( + A : in integer; + Z : out std_logic_vector(3 downto 0) +); +end whileloop; + +architecture rtl of whileloop is +begin + +process (A) + variable I : integer range 0 to 4; +begin + Z <= "0000"; + I := 0; + while (I <= 3) loop + if (A = I) then + Z(I) <= '1'; + end if; + I := I + 1; + end loop; +end process; + +end rtl; diff --git a/src/test/vhdl/withselect.vhd b/src/test/vhdl/withselect.vhd new file mode 100644 index 0000000..48f6f0a --- /dev/null +++ b/src/test/vhdl/withselect.vhd @@ -0,0 +1,34 @@ +LIBRARY IEEE; +USE IEEE.std_logic_1164.all, IEEE.numeric_std.all; + +entity withselect is + generic( + dog_width : std_logic_vector(7 downto 0) := "10101100"; + bus_width : integer := 32 + ); + port( reset, sysclk : in std_logic; + a, b, enf, load, qtd, base: in std_logic_vector(bus_width downto 0) + ); +end withselect; + +architecture rtl of withselect is + signal foo : std_logic_vector(1+1 downto 0); + signal code,code1: std_logic_vector(9 downto 0); + signal egg : std_logic_vector(324 to 401); + signal baz : std_logic_vector(bus_width*3-1 to bus_width*4); + signal complex : std_logic_vector(31 downto 0); +begin + -- Example of with statement + with foo(2 downto 0) select + code(9 downto 2) <= "110" & egg(325 to 329) when "000" | "110", + "11100010" when "101", + (others => '1') when "010", + (others => '0') when "011", + std_logic_vector(unsigned(a) + unsigned(b)) when others; + code1(1 downto 0) <= a(6 downto 5) xor (a(4) & b(6)); + + foo <= (others => '0'); + egg <= (others => '0'); + baz <= (others => '1'); + complex <= enf & (std_logic_vector("110" * unsigned(load))) & qtd(3 downto 0) & base & "11001"; +end rtl; diff --git a/src/test/vlog/dependence_test/child_1.v b/src/test/vlog/dependence_test/child_1.v new file mode 100644 index 0000000..69a162a --- /dev/null +++ b/src/test/vlog/dependence_test/child_1.v @@ -0,0 +1,15 @@ +module dependence_1 ( + input a, b, c, + output Q +); + + // a & b | ((b & c) & (b | c)) + // &=*, |=+ AB + BC(B+C) + // Distribute AB + BBC + BCC + // Simplify AA = A AB + BC + BC + // Simplify A + A = A AB + BC + // Factor B(A+C) + + assign Q = a & (b | c); + +endmodule diff --git a/src/test/vlog/dependence_test/child_2.v b/src/test/vlog/dependence_test/child_2.v new file mode 100644 index 0000000..72b0112 --- /dev/null +++ b/src/test/vlog/dependence_test/child_2.v @@ -0,0 +1,8 @@ +module dependence_2 ( + input a, b, c, + output Q +); + + assign Q = a & b | ((b & c) & (b | c)); + +endmodule \ No newline at end of file diff --git a/src/test/vlog/dependence_test/head_1.v b/src/test/vlog/dependence_test/head_1.v new file mode 100644 index 0000000..8543ebd --- /dev/null +++ b/src/test/vlog/dependence_test/head_1.v @@ -0,0 +1,23 @@ +`define cow 34 + +module dependence_1 ( + input port_a, port_b, port_c, + output out_q +); + // a & b | ((b & c) & (b | c)) + // &=*, |=+ AB + BC(B+C) + // Distribute AB + BBC + BCC + // Simplify AA = A AB + BC + BC + // Simplify A + A = A AB + BC + // Factor B(A+C) + + assign out_q = port_b & (port_a | port_c); +endmodule + + +module test_1 ( + input port_a, port_b, + output Q +); + assign Q = port_b & port_a; +endmodule \ No newline at end of file diff --git a/src/test/vlog/dependence_test/parent.v b/src/test/vlog/dependence_test/parent.v new file mode 100644 index 0000000..30af10d --- /dev/null +++ b/src/test/vlog/dependence_test/parent.v @@ -0,0 +1,65 @@ +/* + * EN: A simple demo to test search order of dependence + * current file -> macro include -> whole project + * expect dependence_1 from child_1.v (macro include) + * expect dependence_2 from child_2.v (whole project) + * cannot find dependence_3 + */ + +`include "child_1.v" +`define main out + +module Main ( + input a, b, c, + output Qus, Qs, `main +); + +dependence_1 u_dependence_1( + .a(a), + .b(b), + .c(c), + .Q(Qus) +); + +dependence_2 u_dependence_2( + .a(a), + .b(b), + .c(c), + .Q(Qs) +); + +dependence_3 u_dependence_3( + .a(a), + .b(b), + .c(c), + .Q(Qs) +); + +endmodule + +/* @wavedrom this is wavedrom demo1 +{ + signal : [ + { name: "clk", wave: "p......" }, + { name: "bus", wave: "x.34.5x", data: "head body tail" }, + { name: "wire", wave: "0.1..0." } + ] +} +*/ + + +/* @wavedrom this is wavedrom demo2 +{ + signal: [ + { name: "pclk", wave: 'p.......' }, + { name: "Pclk", wave: 'P.......' }, + { name: "nclk", wave: 'n.......' }, + { name: "Nclk", wave: 'N.......' }, + {}, + { name: 'clk0', wave: 'phnlPHNL' }, + { name: 'clk1', wave: 'xhlhLHl.' }, + { name: 'clk2', wave: 'hpHplnLn' }, + { name: 'clk3', wave: 'nhNhplPl' }, + { name: 'clk4', wave: 'xlh.L.Hx' }, +]} +*/ \ No newline at end of file diff --git a/src/test/vlog/dependence_test/readme_cn.md b/src/test/vlog/dependence_test/readme_cn.md new file mode 100644 index 0000000..ee0c24d --- /dev/null +++ b/src/test/vlog/dependence_test/readme_cn.md @@ -0,0 +1,10 @@ +# dependence_test 文件夹 + +用于测试依赖检测 + +在vlog中分有两种依赖形式 +1. 分module文件依赖,该依赖取决于解释器的自动检索。 + 【注】: 在存在同名module的时候很大程度上会导致依赖出错,因此不建议使用同名module,或者在同名的时 候使用 `include 依赖方式 +2. 使用 include 引用文件的方式进行模块间的依赖,该方式可以精确定位依赖项。 + 【注】: 在使用 `include 依赖方式时该插件会自动去除对于include文件中有同名的其他文件。 + diff --git a/src/test/vlog/formatter_test.v b/src/test/vlog/formatter_test.v new file mode 100644 index 0000000..8766fd4 --- /dev/null +++ b/src/test/vlog/formatter_test.v @@ -0,0 +1,11 @@ +module formatter_vlog #( + parameter INPUT_WIDTH = 12, + parameter OUTPUT_WIDTH = 12 +) ( + input clk_in, + input rst_n, + input [INPUT_WIDTH - 1 : 0]data_in, + output [OUTPUT_WIDTH - 1 : 0]data_out +); + +reg [3:0] cnt; always @(posedge clk_in or posedge rst_n) begin if(rst_n) begin cnt<=4'h0; end else begin cnt<=cnt+4'h1; end end endmodule //module_name \ No newline at end of file diff --git a/src/test/vlog/fsm_test.v b/src/test/vlog/fsm_test.v new file mode 100644 index 0000000..95b2134 --- /dev/null +++ b/src/test/vlog/fsm_test.v @@ -0,0 +1,58 @@ +module fsm_test( + input clock, + input reset, + input [2 : 0] req_0, + input [2 : 0] req_1, + output reg [2 : 0] gnt_0, + output reg [2 : 0] gnt_1 + ); + + reg [2:0] state; + + parameter IDLE = 3'h1; + parameter GNT0 = 3'd2; + parameter GNT1 = 3'b100; + + always @ (posedge clock) begin : FSM + if (reset == 1'b1) begin + state <= #1 IDLE; + gnt_0 <= 0; + gnt_1 <= 0; + end + else + case(state) + IDLE : + if (req_0 == 1'b1) begin + state <= #1 GNT0; + gnt_0 <= 1; + end + else if (req_1 == 1'b1) begin + gnt_1 <= 1; + state <= #1 GNT1; + end + else begin + state <= #1 IDLE; //example comment + end + GNT0 : + if (req_0 == 1'b1) begin + state <= #1 GNT0; + end + else begin + gnt_0 <= 0; + state <= #1 IDLE; + end + GNT1 : + if (req_1 == 1'b1) begin + state <= #1 GNT1; + end + else begin + gnt_1 <= 0; + state <= #1 IDLE; + end + default : + state <= #1 IDLE; + endcase + end + + +endmodule //module_name diff --git a/src/test/vlog/netlist_test.v b/src/test/vlog/netlist_test.v new file mode 100644 index 0000000..0abc1fd --- /dev/null +++ b/src/test/vlog/netlist_test.v @@ -0,0 +1,33 @@ +// borrowed with some modifications from +// http://www.ee.ed.ac.uk/~gerard/Teach/Verilog/manual/Example/lrgeEx2/cooley.html +module up3down5(clock, data_in, up, down, carry_out, borrow_out, count_out, parity_out); + +input [8:0] data_in; +input clock, up, down; + +output reg [8:0] count_out; +output reg carry_out, borrow_out, parity_out; + +reg [9:0] cnt_up, cnt_dn; +reg [8:0] count_nxt; + +always @(posedge clock) +begin + cnt_dn = count_out - 3'b 101; + cnt_up = count_out + 2'b 11; + + case ({up,down}) + 2'b 00 : count_nxt = data_in; + 2'b 01 : count_nxt = cnt_dn; + 2'b 10 : count_nxt = cnt_up; + 2'b 11 : count_nxt = count_out; + default : count_nxt = 9'bX; + endcase + + parity_out <= ^count_nxt; + carry_out <= up & cnt_up[9]; + borrow_out <= down & cnt_dn[9]; + count_out <= count_nxt; +end + +endmodule \ No newline at end of file diff --git a/src/test/vlog/parse_test/Cordic.v b/src/test/vlog/parse_test/Cordic.v new file mode 100644 index 0000000..bf52c75 --- /dev/null +++ b/src/test/vlog/parse_test/Cordic.v @@ -0,0 +1,258 @@ +`timescale 1ns / 1ps + +module Cordic #( + parameter XY_BITS = 12, + parameter PH_BITS = 32, + parameter ITERATIONS = 32, + parameter CORDIC_STYLE = "ROTATE", + parameter PHASE_ACC = "ON" +)( + input clk, + input RST, + input signed [XY_BITS-1:0] x_i, + input signed [XY_BITS-1:0] y_i, + input signed [PH_BITS-1:0] phase_in, + + output signed [XY_BITS-1:0] x_o, + output signed [XY_BITS-1:0] y_o, + output signed [PH_BITS-1:0] phase_out, + + input valid_in, + output valid_out +); + +localparam [XY_BITS-1:0] K_COS = (0.607252935 * 2**(XY_BITS-1))-2; + +/* +//360°--2^16,phase_in = 16bits (input [15:0] phase_in) +//1°--2^16/360 +*/ +function [PH_BITS-1:0] tanangle; +input [4:0] i; +begin + case (i) + 5'b00000: tanangle = (32'h20000000 >> (32 - PH_BITS)); //tan = 1/2^1 = 1/2 + 5'b00001: tanangle = (32'h12e4051e >> (32 - PH_BITS)); //tan = 1/2^2 = 1/4 + 5'b00010: tanangle = (32'h09fb385b >> (32 - PH_BITS)); //tan = 1/2^3 = 1/8 + 5'b00011: tanangle = (32'h051111d4 >> (32 - PH_BITS)); //tan = 1/2^4 = 1/16 + 5'b00100: tanangle = (32'h028b0d43 >> (32 - PH_BITS)); //tan = 1/2^5 = 1/32 + 5'b00101: tanangle = (32'h0145d7e1 >> (32 - PH_BITS)); //tan = 1/2^6 = 1/64 + 5'b00110: tanangle = (32'h00a2f61e >> (32 - PH_BITS)); //tan = 1/2^7 = 1/128 + 5'b00111: tanangle = (32'h00517c55 >> (32 - PH_BITS)); //tan = 1/2^8 = 1/256 + 5'b01000: tanangle = (32'h0028be53 >> (32 - PH_BITS)); //tan = 1/2^9 = 1/512 + 5'b01001: tanangle = (32'h00145f2f >> (32 - PH_BITS)); //tan = 1/2^10 = 1/1024 + 5'b01010: tanangle = (32'h000a2f98 >> (32 - PH_BITS)); //tan = 1/2^11 = 1/2048 + 5'b01011: tanangle = (32'h000517cc >> (32 - PH_BITS)); //tan = 1/2^12 = 1/4096 + 5'b01100: tanangle = (32'h00028be6 >> (32 - PH_BITS)); //tan = 1/2^13 = 1/8192 + 5'b01101: tanangle = (32'h000145f3 >> (32 - PH_BITS)); //tan = 1/2^14 = 1/16384 + 5'b01110: tanangle = (32'h0000a2fa >> (32 - PH_BITS)); //tan = 1/2^15 = 1/32768 + 5'b01111: tanangle = (32'h0000517d >> (32 - PH_BITS)); //tan = 1/2^16 = 1/65536 + 5'b10000: tanangle = (32'h000028be >> (32 - PH_BITS)); //tan = 1/2^17 = 1/131072 + 5'b10001: tanangle = (32'h0000145f >> (32 - PH_BITS)); //tan = 1/2^18 = 1/262144 + 5'b10010: tanangle = (32'h00000a30 >> (32 - PH_BITS)); //tan = 1/2^19 = 1/524288 + 5'b10011: tanangle = (32'h00000518 >> (32 - PH_BITS)); //tan = 1/2^20 = 1/1048576 + 5'b10100: tanangle = (32'h0000028c >> (32 - PH_BITS)); //tan = 1/2^21 = 1/2097152 + 5'b10101: tanangle = (32'h00000146 >> (32 - PH_BITS)); //tan = 1/2^22 = 1/4194304 + 5'b10110: tanangle = (32'h000000a3 >> (32 - PH_BITS)); //tan = 1/2^23 = 1/8388608 + 5'b10111: tanangle = (32'h00000051 >> (32 - PH_BITS)); //tan = 1/2^24 = 1/16777216 + 5'b11000: tanangle = (32'h00000029 >> (32 - PH_BITS)); //tan = 1/2^25 = 1/33554432 + 5'b11001: tanangle = (32'h00000014 >> (32 - PH_BITS)); //tan = 1/2^26 = 1/67108864 + 5'b11010: tanangle = (32'h0000000a >> (32 - PH_BITS)); //tan = 1/2^27 = 1/134217728 + 5'b11011: tanangle = (32'h00000005 >> (32 - PH_BITS)); //tan = 1/2^28 = 1/268435456 + 5'b11100: tanangle = (32'h00000003 >> (32 - PH_BITS)); //tan = 1/2^29 = 1/536870912 + 5'b11101: tanangle = (32'h00000001 >> (32 - PH_BITS)); //tan = 1/2^30 = 1/1073741824 + 5'b11110: tanangle = (32'h00000001 >> (32 - PH_BITS)); //tan = 1/2^31 = 1/2147483648 + 5'b11111: tanangle = (32'h00000000 >> (32 - PH_BITS)); //tan = 1/2^32 = 1/4294967296 + endcase +end +endfunction + +reg [1:0] data_in_buff [ITERATIONS:0]; +reg signed [XY_BITS-1:0] x [ITERATIONS:0]; +reg signed [XY_BITS-1:0] y [ITERATIONS:0]; +reg signed [PH_BITS-1:0] z [ITERATIONS:0]; + +integer m; +initial begin + for (m = 0; m<=ITERATIONS; m=m+1) begin + x[m] = 0; + end +end + +integer n; +initial begin + for (n = 0; n<=ITERATIONS; n=n+1) begin + y[n] = 0; + end +end + +integer s; +initial begin + for (s = 0; s<=ITERATIONS; s=s+1) begin + z[s] = 0; + end +end + +integer k; +initial begin + for (k = 0; k<=ITERATIONS; k=k+1) begin + data_in_buff[k] = 0; + end +end + +genvar i; +generate for(i=0;i>>i); + y[i+1] <= y[i] - (x[i]>>>i); + z[i+1] <= z[i] + tanangle(i); + end + else begin + x[i+1] <= x[i] - (y[i]>>>i); + y[i+1] <= y[i] + (x[i]>>>i); + z[i+1] <= z[i] - tanangle(i); + end + end + else if(CORDIC_STYLE == "VECTOR") begin + if (y[i] > 0) begin + x[i+1] <= x[i] + (y[i]>>>i); + y[i+1] <= y[i] - (x[i]>>>i); + z[i+1] <= z[i] + tanangle(i); + end else begin + x[i+1] <= x[i] - (y[i]>>>i); + y[i+1] <= y[i] + (x[i]>>>i); + z[i+1] <= z[i] - tanangle(i); + end + end + end +end +always @ (posedge clk) begin + data_in_buff[i+1] <= data_in_buff[i]; +end +end +endgenerate + +generate if (CORDIC_STYLE == "ROTATE") begin : IQ_Gen +reg [PH_BITS - 1 : 0] Phase_input = 0; +if (PHASE_ACC == "ON") begin + reg [PH_BITS - 1 : 0] addr_r0 = 0; + always @(posedge clk) begin + addr_r0 <= addr_r0 + phase_in; + end + always @(posedge clk) begin + Phase_input <= addr_r0; + end +end +else if (PHASE_ACC == "OFF") begin + always @(posedge clk) begin + Phase_input <= phase_in; + end +end +always @(posedge clk) begin + if(valid_in & (~RST)) begin + x[0] <= K_COS; + y[0] <= 0; + z[0] <= Phase_input[PH_BITS - 3 : 0]; + data_in_buff[0] <= Phase_input[PH_BITS - 1 : PH_BITS - 2]; + end + else begin + x[0] <= 0; + y[0] <= 0; + z[0] <= 0; + data_in_buff[0] <= 0; + end +end +reg signed [XY_BITS-1:0] cos = 0; +reg signed [XY_BITS-1:0] sin = 0; +always @ (posedge clk) begin + case(data_in_buff[ITERATIONS]) + 2'b00:begin //if the phase is in first quadrant,the sin(X)=sin(A),cos(X)=cos(A) + cos <= x[ITERATIONS]; + sin <= y[ITERATIONS]; + end + 2'b01:begin //if the phase is in second quadrant,the sin(X)=sin(A+90)=cosA,cos(X)=cos(A+90)=-sinA + cos <= ~(y[ITERATIONS]) + 1'b1;//-sin + sin <= x[ITERATIONS];//cos + end + 2'b10:begin //if the phase is in third quadrant,the sin(X)=sin(A+180)=-sinA,cos(X)=cos(A+180)=-cosA + cos <= ~(x[ITERATIONS]) + 1'b1;//-cos + sin <= ~(y[ITERATIONS]) + 1'b1;//-sin + end + 2'b11:begin //if the phase is in forth quadrant,the sin(X)=sin(A+270)=-cosA,cos(X)=cos(A+270)=sinA + cos <= y[ITERATIONS];//sin + sin <= ~(x[ITERATIONS]) + 1'b1;//-cos + end + endcase +end +assign x_o = cos; +assign y_o = sin; +assign phase_out = z[ITERATIONS]; +end +endgenerate + +generate if (CORDIC_STYLE == "VECTOR") begin : Demodule_Gen +localparam signed [PH_BITS-1:0] PHASE_COE = (2**(PH_BITS-2)) - 1; +//localparam MODUIUS_COE = ; +always @(posedge clk) begin + if(valid_in & (~RST)) begin + case ({x_i[XY_BITS-1],y_i[XY_BITS-1]}) + 2'b00 : begin x[0] <= {x_i[XY_BITS-1],x_i[XY_BITS-1:1]}; + y[0] <= {y_i[XY_BITS-1],y_i[XY_BITS-1:1]}; end + 2'b01 : begin x[0] <= {x_i[XY_BITS-1],x_i[XY_BITS-1:1]}; + y[0] <= {y_i[XY_BITS-1],y_i[XY_BITS-1:1]}; end + 2'b10 : begin x[0] <= {y_i[XY_BITS-1],y_i[XY_BITS-1:1]}; + y[0] <= -{x_i[XY_BITS-1],x_i[XY_BITS-1:1]}; end + 2'b11 : begin x[0] <= -{y_i[XY_BITS-1],y_i[XY_BITS-1:1]}; + y[0] <= {x_i[XY_BITS-1],x_i[XY_BITS-1:1]}; end + default : begin x[0] <= {x_i[XY_BITS-1],x_i[XY_BITS-1:1]}; + y[0] <= {y_i[XY_BITS-1],y_i[XY_BITS-1:1]}; end + endcase + z[0] <= phase_in; + data_in_buff[0] <= {x_i[XY_BITS-1],y_i[XY_BITS-1]}; + end + else begin + x[0] <= 0; + y[0] <= 0; + z[0] <= 0; + data_in_buff[0] <= 0; + end +end +reg [XY_BITS*2-1:0] Modulus = 0; +wire [XY_BITS*2-1:0] Modulus_buf; +reg signed [PH_BITS - 1:0] phase_r = 0; +always @ (posedge clk) begin + case(data_in_buff[ITERATIONS]) + 2'b00:begin phase_r <= $signed(z[ITERATIONS]); end + 2'b01:begin phase_r <= $signed(z[ITERATIONS]); end + 2'b10:begin phase_r <= $signed(z[ITERATIONS]) + $signed(PHASE_COE); end + 2'b11:begin phase_r <= $signed(z[ITERATIONS]) - $signed(PHASE_COE); end + endcase + Modulus[XY_BITS:0] <= x[ITERATIONS]; +end +assign Modulus_buf = (Modulus * 32'd39797)>>15; +assign x_o = Modulus_buf[XY_BITS-1:0]; +assign y_o = y[ITERATIONS]; +assign phase_out = phase_r; +end +endgenerate + +reg [ITERATIONS+1:0] v = 0; +always @ (posedge clk) begin + if (RST) + v <= 0; + else begin + v <= v << 1; + v[0] <= valid_in; + end +end +assign valid_out = v[ITERATIONS+1]; + +endmodule diff --git a/src/test/vlog/parse_test/instance_test.v b/src/test/vlog/parse_test/instance_test.v new file mode 100644 index 0000000..613e852 --- /dev/null +++ b/src/test/vlog/parse_test/instance_test.v @@ -0,0 +1,10 @@ +module instance_test ( + input input_a, + input input_b, + output output_c +); + + assign output_c = input_a & input_b; + + +endmodule \ No newline at end of file diff --git a/src/test/vlog/parse_test/mult_module.v b/src/test/vlog/parse_test/mult_module.v new file mode 100644 index 0000000..5995569 --- /dev/null +++ b/src/test/vlog/parse_test/mult_module.v @@ -0,0 +1,78 @@ +// template +module template #( + parameter INPUT_WIDTH = 12, + parameter OUTPUT_WIDTH = 12 + )( + input [INPUT_WIDTH + - 1 : 0]data_in, + output reg clk_in = (INPUT_WIDTH - + OUTPUT_WIDTH) , + clk=9'hd0, + input rst_n, RST, + output [OUTPUT_WIDTH - 1 : 0] data_out + ); + +endmodule //template + + +module test # ( + parameter INPUT_WIDTH = 12, + parameter OUTPUT_WIDTH = 12 + )( + input clk_in, + input rst_n, + input [INPUT_WIDTH - 1 : 0] data_in , [3:2] dasta_ff, + output reg signed [OUTPUT_WIDTH - 1 : 0] data_out, + reg signed [OUTPUT_WIDTH - 1 : 0] data_ff + ); + + wire valid_out; + + Cordic #( + .XY_BITS ( 12 ), + .PH_BITS ( 32 ), + .ITERATIONS ( 32 ), + .CORDIC_STYLE ( "ROTATE" ), + .PHASE_ACC ( "ON" )) + u_Cordic( + //input + .clk_in ( clk_in ), + .RST ( RST ), + .x_i ( x_i ), + .y_i ( y_i ), + .phase_in ( phase_in ), + .valid_in ( valid_in ), + + //output + .x_o ( x_o ), + .y_o ( y_o ), + .phase_out ( phase_out ), + .valid_out ( valid_out ) + + //inout + ); + + wire [3 : 0] count_high; + wire [3 : 0] count_low; + wire over; + + template u_template( + //input + .clk ( clk ), + .data ( data ), + .en ( en ), + .load ( load ), + .rst ( rst ), + .switch ( switch ), + + //output + .count_high ( count_high ), + .count_low ( count_low ), + .over ( over ) + + //inout + ); + + + +endmodule //test diff --git a/src/test/vlog/test.v b/src/test/vlog/test.v new file mode 100644 index 0000000..1087b0d --- /dev/null +++ b/src/test/vlog/test.v @@ -0,0 +1,29 @@ + +/* + * CN: 如果使用`include "head_1.v" 则模块 dependence_1 使用的应该是 head_1.v 文件中的, + * 而不会调用child_1.v中的 dependence_1 同名模块。 + * EN: + */ + +`include "child_1.v" +`define main_o out +module Main( + input a, b, c, + output Qus, Qs, `main_o +); + +dependence_1 dependence_1( + .a(a), + .b(b), + .c(c), + .Q(Qus) +); + +dependence_2 dependence_2( + .a(a), + .b(b), + .c(c), + .Q(Qs) +); + +endmodule \ No newline at end of file diff --git a/src/test/vlog/wavedrom_test/sample.v b/src/test/vlog/wavedrom_test/sample.v new file mode 100644 index 0000000..742e92c --- /dev/null +++ b/src/test/vlog/wavedrom_test/sample.v @@ -0,0 +1,35 @@ +module dependence_1 ( + input a, b, c, + output Q +); + + // a & b | ((b & c) & (b | c)) + // &=*, |=+ AB + BC(B+C) + // Distribute AB + BBC + BCC + // Simplify AA = A AB + BC + BC + // Simplify A + A = A AB + BC + // Factor B(A+C) + + assign Q = a & (b | c); + +endmodule + +`include "adwada" + +`define main dwwds +`define ada wss + +/* + +*/ + +`main + +module dependence_2 ( + input a, b, c, + output Q +); + + assign Q = a & b | ((b & c) & (b | c)); + +endmodule \ No newline at end of file diff --git a/test.js b/test.js new file mode 100644 index 0000000..7538665 --- /dev/null +++ b/test.js @@ -0,0 +1,59 @@ +/* eslint-disable @typescript-eslint/naming-convention */ +const fs = require('fs'); +const path = require('path'); + +const sysvlog_build = require('./src/hdlParser/parser/parser'); + +const COMMON_PATH = path.resolve('./lib/common/Driver'); + +const TEST_FILE = './parser_stuck.v'; +const TEST_FILE2 = './src/test/vlog/dependence_test/parent.v'; +const TEST_FILE3 = './src/test/vlog/formatter_test.v'; + +function isDir(path) { + if (!fs.existsSync(path)) { + return false; + } + + const state = fs.statSync(path); + if (state.isDirectory()) { + return true; + } + return false; +} + +function getHDLFiles(path) { + if (isDir(path)) { + const hdlFiles = []; + for (const file of fs.readdirSync(path)) { + const filePath = path + '/' + file; + if (isDir(filePath)) { + const subHdlFiles = getHDLFiles(filePath); + if (subHdlFiles.length > 0) { + hdlFiles.push(...subHdlFiles); + } + } else if (filePath.endsWith('.v')) { + hdlFiles.push(filePath); + } + } + return hdlFiles; + } else if (path.endsWith('.v')) { + return [path]; + } else { + return []; + } +} + +(async() => { + const Module = await sysvlog_build(); + console.log(Object.keys(Module).filter(name => name.startsWith('_') && !name.startsWith('__'))); + const source = fs.readFileSync(TEST_FILE2, 'utf-8') + '\n'; + Module.FS.writeFile('/sysvlog_build', source, { encoding: 'utf8' }); + + const start = Date.now(); + + const fast = Module.ccall('vlog_fast', 'string', ['string'], ['/sysvlog_build']); + const costTime = (Date.now() - start) / 1000; + console.log(JSON.stringify(JSON.parse(fast), null, ' ')); + console.log('cost time', costTime); +})(); \ No newline at end of file diff --git a/vsixmake.js b/vsixmake.js index 8de9d1d..9de2a05 100644 --- a/vsixmake.js +++ b/vsixmake.js @@ -2,7 +2,7 @@ const { execSync } = require('child_process'); const fs = require('fs'); const path = require('path'); const HDLFile = require('./src/HDLfilesys/operation/files'); -const HDLPath = require('./src/HDLfilesys/operation/path'); +const hdlPath = require('./src/HDLfilesys/operation/path'); const PACKAGE_PATH = './package.json'; const SAVE_FOLDER = 'dist'; @@ -37,8 +37,8 @@ execSync('code --uninstall-extension sterben.digital-ide'); const vsix = findVsix(); const targetPath = path.join(SAVE_FOLDER, vsix); HDLFile.moveFile(vsix, targetPath, true); -HDLPath.deleteFolder(WEBPACK_OUT_FOLDER); +hdlPath.deleteFolder(WEBPACK_OUT_FOLDER); -const vsixPath = HDLPath.join(SAVE_FOLDER, vsix); +const vsixPath = hdlPath.join(SAVE_FOLDER, vsix); // install new one execSync('code --install-extension ' + vsixPath); \ No newline at end of file From 9c02033c415c8828fea98844a227f68367eedd90 Mon Sep 17 00:00:00 2001 From: Kirigaya <1193466151@qq.com> Date: Wed, 8 Feb 2023 23:59:14 +0800 Subject: [PATCH 02/54] reconstruct prj & lib partly | test --- .vscodeignore | 3 +- draft.json | 226 --------------------- package.json | 301 ++++++++++++++-------------- package.nls.json | 4 + package.nls.zh-cn.json | 4 + package.nls.zh-tw.json | 4 + script/.gitignore | 5 + script/README.md | 5 + script/command/make_title_token.py | 46 +++++ script/command/translate_from_en.py | 6 + script/util.py | 12 ++ src/extension.ts | 1 + src/global/opeParam.ts | 18 +- src/global/prjInfo.ts | 123 ++++++++++-- src/global/util.ts | 22 ++ src/hdlFs/file.ts | 11 +- src/hdlParser/parser/index.d.ts | 0 src/hdlParser/parser/index.js | 0 src/manager/PL/xilinx.ts | 125 ++++++------ src/manager/PS/xilinx.ts | 39 +--- src/manager/lib.ts | 39 ++++ src/manager/prj.ts | 32 ++- 22 files changed, 520 insertions(+), 506 deletions(-) delete mode 100644 draft.json create mode 100644 package.nls.json create mode 100644 package.nls.zh-cn.json create mode 100644 package.nls.zh-tw.json create mode 100644 script/.gitignore create mode 100644 script/README.md create mode 100644 script/command/make_title_token.py create mode 100644 script/command/translate_from_en.py create mode 100644 script/util.py create mode 100644 src/global/util.ts create mode 100644 src/hdlParser/parser/index.d.ts create mode 100644 src/hdlParser/parser/index.js diff --git a/.vscodeignore b/.vscodeignore index f7b1ef2..ac1a4f6 100644 --- a/.vscodeignore +++ b/.vscodeignore @@ -11,4 +11,5 @@ dist/**/*.map webpack.config.js node_modules src/** -vsixmake.js \ No newline at end of file +vsixmake.js +script \ No newline at end of file diff --git a/draft.json b/draft.json deleted file mode 100644 index 3746169..0000000 --- a/draft.json +++ /dev/null @@ -1,226 +0,0 @@ -{ - "content": { - "error": [], - "modules": [ - { - "instances": [ - { - "instparams": null, - "instports": { - "end": { - "character": 10, - "line": 21 - }, - "start": { - "character": 4, - "line": 18 - } - }, - "name": "u_dependence_1", - "range": { - "end": { - "character": 0, - "line": 22 - }, - "start": { - "character": 13, - "line": 17 - } - }, - "type": "dependence_1" - }, - { - "instparams": null, - "instports": { - "end": { - "character": 9, - "line": 28 - }, - "start": { - "character": 4, - "line": 25 - } - }, - "name": "u_dependence_2", - "range": { - "end": { - "character": 0, - "line": 29 - }, - "start": { - "character": 13, - "line": 24 - } - }, - "type": "dependence_2" - }, - { - "instparams": null, - "instports": { - "end": { - "character": 9, - "line": 35 - }, - "start": { - "character": 4, - "line": 32 - } - }, - "name": "u_dependence_3", - "range": { - "end": { - "character": 0, - "line": 36 - }, - "start": { - "character": 13, - "line": 31 - } - }, - "type": "dependence_3" - } - ], - "name": "Main", - "params": [], - "ports": [ - { - "name": "a", - "range": { - "end": { - "character": 11, - "line": 13 - }, - "start": { - "character": 10, - "line": 13 - } - }, - "type": "input", - "width": "Unknown" - }, - { - "name": "b", - "range": { - "end": { - "character": 14, - "line": 13 - }, - "start": { - "character": 13, - "line": 13 - } - }, - "type": "input", - "width": "Unknown" - }, - { - "name": "c", - "range": { - "end": { - "character": 17, - "line": 13 - }, - "start": { - "character": 16, - "line": 13 - } - }, - "type": "input", - "width": "Unknown" - }, - { - "name": "Qus", - "range": { - "end": { - "character": 14, - "line": 14 - }, - "start": { - "character": 11, - "line": 14 - } - }, - "type": "output", - "width": "Unknown" - }, - { - "name": "Qs", - "range": { - "end": { - "character": 18, - "line": 14 - }, - "start": { - "character": 16, - "line": 14 - } - }, - "type": "output", - "width": "Unknown" - }, - { - "name": "`main", - "range": { - "end": { - "character": 25, - "line": 14 - }, - "start": { - "character": 20, - "line": 14 - } - }, - "type": "output", - "width": "Unknown" - } - ], - "range": { - "end": { - "character": 0, - "line": 38 - }, - "start": { - "character": 0, - "line": 12 - } - } - } - ] - }, - "languageId": "verilog", - "macro": { - "defines": [ - { - "name": "main", - "range": { - "end": { - "character": 17, - "line": 10 - }, - "start": { - "character": 1, - "line": 10 - } - }, - "value": "out" - } - ], - "error": [], - "includes": [ - { - "path": "child_1.v", - "range": { - "end": { - "character": 9, - "line": 9 - }, - "start": { - "character": 1, - "line": 9 - } - } - } - ], - "invalid": [] - } - } \ No newline at end of file diff --git a/package.json b/package.json index 86251f0..84273f6 100644 --- a/package.json +++ b/package.json @@ -16,7 +16,8 @@ "onLanguage:verilog", "onLanguage:vhdl", "onLanguage:systemverilog", - "onCommand:TOOL.generate.property", + "onCommand:digital-ide.property-json.generate", + "onCommand:digital-ide.property-json.overwrite", "workspaceContains:.vscode/property.json" ], "contributes": { @@ -33,155 +34,161 @@ }, "commands": [ { - "command": "digital-ide.helloWorld", - "title": "Hello World" + "command": "digital-ide.property-json.generate", + "title": "%digital-ide.property-json.generate.title%", + "category": "Digital-IDE" + }, + { + "command": "digital-ide.property-json.overwrite", + "title": "%digital-ide.property-json.overwrite.title%", + "category": "Digital-IDE" } ], "languages": [ - { - "id": "tcl", - "aliases": [ - "TCL", - "Xilinx Constraints File", - "Synopsis Constraints File" - ], - "extensions": [ - ".tcl", - ".sdc", - ".xdc", - ".fdc" - ], - "configuration": "./config/tcl.configuration.json" - }, - { - "id": "bd", - "extensions": [ - ".bd" - ] - }, - { - "id": "vhdl", - "aliases": [ - "VHDL", - "vhdl" - ], - "extensions": [ - ".vhd", - ".vhdl", - ".vho", - ".vht" - ], - "configuration": "./config/vhdl.configuration.json" - }, - { - "id": "verilog", - "aliases": [ - "Verilog", - "verilog" - ], - "extensions": [ - ".v", - ".V", - ".vh", - ".vl" - ], - "configuration": "./config/verilog.configuration.json" - }, - { - "id": "systemverilog", - "aliases": [ - "System Verilog", - "systemverilog" - ], - "extensions": [ - ".sv", - ".SV" - ], - "configuration": "./config/systemverilog.configuration.json" - }, - { - "id": "arm", - "aliases": [ - "ARM", - "arm" - ], - "extensions": [ - ".s", - ".S", - ".asm", - ".sx" - ], - "configuration": "./config/arm.configuration.json" - }, - { - "id": "linkerscript", - "aliases": [ - "LinkerScript", - "linkerscript" - ], - "extensions": [ - ".ld", - ".dld" - ], - "configuration": "./config/link.configuration.json" - } - ], - "jsonValidation": [ - { - "fileMatch": "property.json", - "url": "./project/property-schema.json" - } - ], - "grammars": [ - { - "language": "linkerscript", - "scopeName": "source.ld", - "path": "./syntaxes/link.json" - }, - { - "language": "arm", - "scopeName": "source.arm", - "path": "./syntaxes/arm.json" - }, - { - "language": "tcl", - "scopeName": "source.tcl", - "path": "./syntaxes/tcl.json" - }, - { - "language": "vhdl", - "scopeName": "source.vhdl", - "path": "./syntaxes/vhdl.json" - }, - { - "language": "verilog", - "scopeName": "source.verilog", - "path": "./syntaxes/verilog.json" - }, - { - "language": "systemverilog", - "scopeName": "source.systemverilog", - "path": "./syntaxes/systemverilog.json" - } - ], - "snippets": [ - { - "language": "tcl", - "path": "snippets/tcl.json" - }, - { - "language": "vhdl", - "path": "snippets/vhdl.json" - }, - { - "language": "verilog", - "path": "snippets/svlog.json" - }, - { - "language": "systemverilog", - "path": "snippets/svlog.json" - } - ] + { + "id": "tcl", + "aliases": [ + "TCL", + "Xilinx Constraints File", + "Synopsis Constraints File" + ], + "extensions": [ + ".tcl", + ".sdc", + ".xdc", + ".fdc" + ], + "configuration": "./config/tcl.configuration.json" + }, + { + "id": "bd", + "extensions": [ + ".bd" + ] + }, + { + "id": "vhdl", + "aliases": [ + "VHDL", + "vhdl" + ], + "extensions": [ + ".vhd", + ".vhdl", + ".vho", + ".vht" + ], + "configuration": "./config/vhdl.configuration.json" + }, + { + "id": "verilog", + "aliases": [ + "Verilog", + "verilog" + ], + "extensions": [ + ".v", + ".V", + ".vh", + ".vl" + ], + "configuration": "./config/verilog.configuration.json" + }, + { + "id": "systemverilog", + "aliases": [ + "System Verilog", + "systemverilog" + ], + "extensions": [ + ".sv", + ".SV" + ], + "configuration": "./config/systemverilog.configuration.json" + }, + { + "id": "arm", + "aliases": [ + "ARM", + "arm" + ], + "extensions": [ + ".s", + ".S", + ".asm", + ".sx" + ], + "configuration": "./config/arm.configuration.json" + }, + { + "id": "linkerscript", + "aliases": [ + "LinkerScript", + "linkerscript" + ], + "extensions": [ + ".ld", + ".dld" + ], + "configuration": "./config/link.configuration.json" + } + ], + "jsonValidation": [ + { + "fileMatch": "property.json", + "url": "./project/property-schema.json" + } + ], + "grammars": [ + { + "language": "linkerscript", + "scopeName": "source.ld", + "path": "./syntaxes/link.json" + }, + { + "language": "arm", + "scopeName": "source.arm", + "path": "./syntaxes/arm.json" + }, + { + "language": "tcl", + "scopeName": "source.tcl", + "path": "./syntaxes/tcl.json" + }, + { + "language": "vhdl", + "scopeName": "source.vhdl", + "path": "./syntaxes/vhdl.json" + }, + { + "language": "verilog", + "scopeName": "source.verilog", + "path": "./syntaxes/verilog.json" + }, + { + "language": "systemverilog", + "scopeName": "source.systemverilog", + "path": "./syntaxes/systemverilog.json" + } + ], + "snippets": [ + { + "language": "tcl", + "path": "snippets/tcl.json" + }, + { + "language": "vhdl", + "path": "snippets/vhdl.json" + }, + { + "language": "verilog", + "path": "snippets/svlog.json" + }, + { + "language": "systemverilog", + "path": "snippets/svlog.json" + } + ] }, "scripts": { "vscode:prepublish": "npm run compile", diff --git a/package.nls.json b/package.nls.json new file mode 100644 index 0000000..894a33e --- /dev/null +++ b/package.nls.json @@ -0,0 +1,4 @@ +{ + "digital-ide.property-json.generate.title": "generate property.json", + "digital-ide.property-json.overwrite.title": "overwrite property.json template" +} \ No newline at end of file diff --git a/package.nls.zh-cn.json b/package.nls.zh-cn.json new file mode 100644 index 0000000..a813ee3 --- /dev/null +++ b/package.nls.zh-cn.json @@ -0,0 +1,4 @@ +{ + "digital-ide.property-json.generate.title": "生成 property.json 配置文件", + "digital-ide.property-json.overwrite.title": "修改默认的 property.json 模板文件" +} \ No newline at end of file diff --git a/package.nls.zh-tw.json b/package.nls.zh-tw.json new file mode 100644 index 0000000..4a184ef --- /dev/null +++ b/package.nls.zh-tw.json @@ -0,0 +1,4 @@ +{ + "digital-ide.property-json.generate.title": "", + "digital-ide.property-json.overwrite.title": "" +} \ No newline at end of file diff --git a/script/.gitignore b/script/.gitignore new file mode 100644 index 0000000..5e66bbe --- /dev/null +++ b/script/.gitignore @@ -0,0 +1,5 @@ +__pycache__ +dist +*.pyc +*.pyd +*.pyi \ No newline at end of file diff --git a/script/README.md b/script/README.md new file mode 100644 index 0000000..c4b2e2c --- /dev/null +++ b/script/README.md @@ -0,0 +1,5 @@ +Some scripts for config generation, batch processing etc. + +Please run the all the scripts in the `extensionPath`. + +command: scripts for `commands` in package.json \ No newline at end of file diff --git a/script/command/make_title_token.py b/script/command/make_title_token.py new file mode 100644 index 0000000..9c89342 --- /dev/null +++ b/script/command/make_title_token.py @@ -0,0 +1,46 @@ +from typing import List +import sys +import os +sys.path.append(os.path.abspath('.')) + +from script.util import read_json, write_json + +PACKAGE_FILE = './package.json' + +LANG_PACKGE_FILES = { + 'en': './package.nls.json', + 'zh-cn': './package.nls.zh-cn.json', + 'zh-tw': './package.nls.zh-tw.json' +} + +def generate_title_token(command_name: str) -> str: + names = command_name.split('.') + prj_name = names[0] + main_names = names[1:] + title_token_name = [prj_name] + main_names + ['title'] + return '.'.join(title_token_name) + +def merge_tokens(lang_package_path: str, tokens: List[str]): + config = read_json(lang_package_path) + for token in tokens: + if token not in config: + config[token] = "" + + write_json(lang_package_path, config) + +if __name__ == '__main__': + # adjust main package + config = read_json(PACKAGE_FILE) + commands = config['contributes']['commands'] + token_names = [] + + for c_item in commands: + if 'command' in c_item: + token_name = generate_title_token(c_item['command']) + token_names.append(token_name) + c_item['title'] = '%' + token_name + '%' + write_json(PACKAGE_FILE, config) + + # cover in lang package + for name, lang_path in LANG_PACKGE_FILES.items(): + merge_tokens(lang_path, token_names) \ No newline at end of file diff --git a/script/command/translate_from_en.py b/script/command/translate_from_en.py new file mode 100644 index 0000000..b1493db --- /dev/null +++ b/script/command/translate_from_en.py @@ -0,0 +1,6 @@ +import sys +import os +sys.path.append(os.path.abspath('.')) + +from script.util import read_json, write_json + diff --git a/script/util.py b/script/util.py new file mode 100644 index 0000000..a609dc1 --- /dev/null +++ b/script/util.py @@ -0,0 +1,12 @@ +import json +from typing import Any + +def read_json(path: str) -> Any: + with open(path, 'r', encoding='utf-8') as fp: + config = json.load(fp=fp) + return config + +def write_json(path: str, obj: object): + with open(path, 'w', encoding='utf-8') as fp: + json.dump(obj, fp=fp, indent=4, ensure_ascii=False) + \ No newline at end of file diff --git a/src/extension.ts b/src/extension.ts index 5389f6d..8697a29 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -12,6 +12,7 @@ function launch(context: vscode.ExtensionContext) { export function activate(context: vscode.ExtensionContext) { console.log('Digital-IDE 0.3.0 is launched'); launch(context); + } export function deactivate() {} \ No newline at end of file diff --git a/src/global/opeParam.ts b/src/global/opeParam.ts index 4a6e106..d398aa0 100644 --- a/src/global/opeParam.ts +++ b/src/global/opeParam.ts @@ -1,7 +1,7 @@ import * as assert from 'assert'; import * as fs from 'fs'; -import { Arch, PrjInfo, RawPrjInfo, PrjInfoDefaults } from './prjInfo'; +import { Arch, PrjInfo, RawPrjInfo, resolve, toSlash } from './prjInfo'; type AbsPath = string; type RelPath = string; @@ -125,6 +125,22 @@ class OpeParam { public mergePrjInfo(rawPrjInfo: RawPrjInfo) { this.prjInfo.merge(rawPrjInfo); } + + /** + * return the absolute path based on workspacePath + * @param relPath + */ + public resolvePathWorkspace(relPath: RelPath): AbsPath { + return resolve(this._workspacePath, relPath); + } + + /** + * return the absolute path based on extensionPath + * @param relPath + */ + public resolvePathExtension(relPath: RelPath): AbsPath { + return resolve(this._extensionPath, relPath); + } }; const opeParam: OpeParam = new OpeParam(); diff --git a/src/global/prjInfo.ts b/src/global/prjInfo.ts index 3a9ca6a..63e23d4 100644 --- a/src/global/prjInfo.ts +++ b/src/global/prjInfo.ts @@ -7,6 +7,7 @@ import * as fspath from 'path'; import { ToolChainType, LibraryState, XilinxIP, validToolChainType, validXilinxIP, validLibraryState } from './enum'; import { PrjInfoSchema } from './propertySchema'; +import assert = require('assert'); type AbsPath = string; type RelPath = string; @@ -101,34 +102,43 @@ interface RawPrjInfo extends RawPrjInfoMeta { function toSlash(path: Path): Path { return path.replace(/\\/g,"\/"); -} +} + +function resolve(...paths: Path[]): AbsPath { + const absPath = fspath.resolve(...paths); + return toSlash(absPath); +} + +function join(...paths: string[]): AbsPath { + const joinedPath = fspath.join(...paths); + return toSlash(joinedPath); +} + class PrjInfo implements PrjInfoMeta { private _extensionPath: AbsPath = ''; private _workspacePath: AbsPath = ''; - private _libCommonPath: AbsPath = ''; - private _libCustomPath: AbsPath = ''; // toolChain is the tool chain used in the project // which is supposed to support xilinx, intel, custom private _toolChain: ToolChainType = PrjInfoDefaults.toolChain; // project name, include pl and ps - private _prjName: PrjName = PrjInfoDefaults.prjName; + private readonly _prjName: PrjName = PrjInfoDefaults.prjName; private _IP_REPO: XilinxIP[] = PrjInfoDefaults.IP_REPO; - private _soc: Soc = PrjInfoDefaults.soc; + private readonly _soc: Soc = PrjInfoDefaults.soc; private _enableShowLog: boolean = PrjInfoDefaults.enableShowLog; private _device: string = PrjInfoDefaults.device; // structure of the project, including path of source of hardware design, testBench - private _arch: Arch = PrjInfoDefaults.arch; + private readonly _arch: Arch = PrjInfoDefaults.arch; // library to manage - private _library: Library = PrjInfoDefaults.library; + private readonly _library: Library = PrjInfoDefaults.library; public get toolChain(): ToolChainType { return this._toolChain; @@ -166,7 +176,41 @@ class PrjInfo implements PrjInfoMeta { return 'microphase'; } - // resolve path with workspacePath as root + /** + * replace token like ${workspace} in path + * @param path + */ + private replacePathToken(path: AbsPath): AbsPath { + const workspacePath = this._workspacePath; + assert(workspacePath); + this.setDefaultValue(this.prjName, 'PL', 'template'); + this.setDefaultValue(this.prjName, 'PS', 'template'); + const plname = this.prjName.PL; + const psname = this.prjName.PS; + + // TODO : packaging the replacer + return path.replace(new RegExp('${workspace}', 'g'), workspacePath) + .replace(new RegExp('${plname}', 'g'), plname) + .replace(new RegExp('${psname}', 'g'), psname); + } + + /** + * uniform a absolute path + * @param path + */ + public uniformisePath(path: AbsPath): AbsPath { + const slashPath = toSlash(path); + const replacedPath = this.replacePathToken(path); + return replacedPath; + } + + /** + * resolve path with workspacePath as root + * @param path + * @param check if true, check the existence of path + * @param root root of path, root and path will be joined + * @returns + */ private resolvePath(path: Path, check: boolean = false, root?: AbsPath): AbsPath | undefined { let uniformPath = ''; if (fspath.isAbsolute(path)) { @@ -178,6 +222,7 @@ class PrjInfo implements PrjInfoMeta { uniformPath = toSlash(uniformPath); + if (check) { if (fs.existsSync(uniformPath)) { return uniformPath; @@ -278,7 +323,29 @@ class PrjInfo implements PrjInfoMeta { } } + + /** + * assign defaultValue to obj[attr] if boolean of obj[attr] is false or 'none' + * @param obj + * @param attr + * @param defaultValue + */ + private setDefaultValue(obj: Record, + attr: T, + defaultValue: K) { + const value: K = obj[attr]; + let isNull = !Boolean(value); + if (typeof value === 'string') { + isNull &&= value === 'none'; + } + if (isNull) { + obj[attr] = defaultValue; + } + } + public updateArch(arch?: Arch) { + const workspacePath = this._workspacePath; + if (arch) { this.updatePathWisely(this.arch, 'prjPath', arch.prjPath); if (arch.hardware) { @@ -291,7 +358,30 @@ class PrjInfo implements PrjInfoMeta { this.updatePathWisely(this.arch.software, 'src', arch.software.src); this.updatePathWisely(this.arch.software, 'data', arch.software.data); } + } else { + let hardwarePath: AbsPath = join(workspacePath, 'user'); + let softwarePath: AbsPath = join(workspacePath, 'user', 'Software'); + const socCore = this._soc.core; + if (socCore && socCore !== 'none') { + hardwarePath = join(hardwarePath, 'Hardware'); + } + this.arch.prjPath = join(workspacePath, 'prj'); + this.arch.hardware.src = join(hardwarePath, 'src'); + this.arch.hardware.sim = join(hardwarePath, 'sim'); + this.arch.hardware.data = join(hardwarePath, 'data'); + + this.arch.software.src = join(softwarePath, 'src'); + this.arch.software.data = join(softwarePath, 'data'); } + + + // if path is '', set as workspace + this.setDefaultValue(this.arch.hardware, 'src', workspacePath); + this.setDefaultValue(this.arch.hardware, 'sim', workspacePath); + this.setDefaultValue(this.arch.hardware, 'data', workspacePath); + + this.setDefaultValue(this.arch.software, 'src', workspacePath); + this.setDefaultValue(this.arch.software, 'data', workspacePath); } public updateLibrary(library?: Library) { @@ -306,8 +396,8 @@ class PrjInfo implements PrjInfoMeta { } if (library.hardware) { // TODO : finish this when you can require root of common and custom - const commonPath = this._libCommonPath; - const customPath = this._libCustomPath; + const commonPath = this.libCommonPath; + const customPath = this.libCustomPath; this.updatePathWisely(this.library.hardware, 'common', library.hardware.common, commonPath); this.updatePathWisely(this.library.hardware, 'custom', library.hardware.custom, customPath); } @@ -339,9 +429,14 @@ class PrjInfo implements PrjInfoMeta { public initContextPath(extensionPath: AbsPath, workspacePath: AbsPath) { this._extensionPath = toSlash(extensionPath); this._workspacePath = toSlash(workspacePath); + } - this._libCommonPath = toSlash(fspath.join(extensionPath, 'lib', 'common')); - this._libCustomPath = vscode.workspace.getConfiguration().get('lib.custom.path', this._workspacePath); + public get libCommonPath(): AbsPath { + return join(this._extensionPath, 'lib', 'common'); + } + + public get libCustomPath(): AbsPath { + return vscode.workspace.getConfiguration().get('lib.custom.path', this._workspacePath); } }; @@ -355,5 +450,7 @@ export { Arch, Soc, Library, - RawPrjInfo + RawPrjInfo, + toSlash, + resolve }; \ No newline at end of file diff --git a/src/global/util.ts b/src/global/util.ts new file mode 100644 index 0000000..a9cd2fa --- /dev/null +++ b/src/global/util.ts @@ -0,0 +1,22 @@ +import * as fs from 'fs'; + +import { AbsPath } from "."; + +class PathSet { + files: Set = new Set(); + add(path: AbsPath) { + this.files.add(path); + } + checkAdd(path: AbsPath | AbsPath[]) { + if (path instanceof Array) { + path.forEach(p => this.checkAdd(p)); + } else if (fs.existsSync(path)) { + this.files.add(path); + } + } +} + + +export { + PathSet +}; \ No newline at end of file diff --git a/src/hdlFs/file.ts b/src/hdlFs/file.ts index 47d491f..a8a9210 100644 --- a/src/hdlFs/file.ts +++ b/src/hdlFs/file.ts @@ -74,15 +74,14 @@ function isHDLFile(path: AbsPath): boolean { } -function getHDLFiles(path: AbsPath, ignores?: AbsPath[]) { - return pickFileRecursive(path, ignores, (filePath) => { - return isHDLFile(filePath); - }); +function getHDLFiles(path: AbsPath | AbsPath[] | Set, ignores?: AbsPath[]) { + return pickFileRecursive(path, ignores, filePath => isHDLFile(filePath)); } -function pickFileRecursive(path: AbsPath | AbsPath[], ignores?: AbsPath[], condition?: (filePath: string) => boolean | undefined | void): AbsPath[] { - if (path instanceof Array) { +function pickFileRecursive(path: AbsPath | AbsPath[] | Set, ignores?: AbsPath[], condition?: (filePath: string) => boolean | undefined | void): AbsPath[] { + if ((path instanceof Array) || + (path instanceof Set)) { const hdlFiles: AbsPath[] = []; path.forEach(p => hdlFiles.push(...pickFileRecursive(p))); return hdlFiles; diff --git a/src/hdlParser/parser/index.d.ts b/src/hdlParser/parser/index.d.ts new file mode 100644 index 0000000..e69de29 diff --git a/src/hdlParser/parser/index.js b/src/hdlParser/parser/index.js new file mode 100644 index 0000000..e69de29 diff --git a/src/manager/PL/xilinx.ts b/src/manager/PL/xilinx.ts index a689b36..edafb74 100644 --- a/src/manager/PL/xilinx.ts +++ b/src/manager/PL/xilinx.ts @@ -13,7 +13,7 @@ import { XilinxIP } from '../../global/enum'; import { MainOutput } from '../../global/outputChannel'; interface XilinxCustom { - ip_repo: AbsPath, + ipRepo: AbsPath, bdRepo: AbsPath }; @@ -49,88 +49,77 @@ interface BootInfo { * xilinx operation under PL */ class XilinxOperation { - public setting: vscode.WorkspaceConfiguration; - public xipRepo: XilinxIP[]; - public xipPath: AbsPath; - public xbdPath: AbsPath; - public xilinxPath: AbsPath; - public prjPath: AbsPath; - public srcPath: AbsPath; - public simPath: AbsPath; - public datPath: AbsPath; - public softSrc: AbsPath; - public HWPath: AbsPath; - public extensionPath: AbsPath; - public prjConfig: PrjInfo; + public get xipRepo(): XilinxIP[] { + return opeParam.prjInfo.IP_REPO; + } - public custom: XilinxCustom; - public topMod: TopMod; - public prjInfo: PLPrjInfo; + public get xipPath(): AbsPath { + return hdlPath.join(opeParam.extensionPath, 'IP_repo'); + } - constructor() { - this.setting = vscode.workspace.getConfiguration(); + public get xbdPath(): AbsPath { + return hdlPath.join(opeParam.extensionPath, 'lib', 'xilinx', 'bd'); + } - this.xipRepo = opeParam.prjInfo.IP_REPO; - this.xipPath = hdlPath.join(opeParam.extensionPath, 'IP_repo'); - this.xbdPath = hdlPath.join(opeParam.extensionPath, 'lib', 'xilinx', 'bd'); - this.xilinxPath = hdlPath.join(opeParam.extensionPath, 'resources', 'script', 'xilinx'); - - this.prjPath = opeParam.prjInfo.arch.prjPath; - this.srcPath = opeParam.prjInfo.arch.hardware.src; - this.simPath = opeParam.prjInfo.arch.hardware.sim; - this.datPath = opeParam.prjInfo.arch.hardware.data; + public get xilinxPath(): AbsPath { + return hdlPath.join(opeParam.extensionPath, 'resources', 'script', 'xilinx'); + } - this.softSrc = opeParam.prjInfo.arch.software.src; - this.HWPath = fspath.dirname(this.srcPath); - this.extensionPath = opeParam.extensionPath; - this.prjConfig = opeParam.prjInfo; + public get prjPath(): AbsPath { + return opeParam.prjInfo.arch.prjPath; + } - this.custom = { - ip_repo : this.setting.get('PRJ.xilinx.IP.repo.path', ''), - bdRepo : this.setting.get('PRJ.xilinx.BD.repo.path', ''), + public get srcPath(): AbsPath { + return opeParam.prjInfo.arch.hardware.src; + } + + public get simPath(): AbsPath { + return opeParam.prjInfo.arch.hardware.sim; + } + + public get datPath(): AbsPath { + return opeParam.prjInfo.arch.hardware.data; + } + + public get softSrc(): AbsPath { + return opeParam.prjInfo.arch.software.src; + } + + public get HWPath(): AbsPath { + return fspath.dirname(this.srcPath); + } + + public get extensionPath(): AbsPath { + return opeParam.extensionPath; + } + + public get prjConfig(): PrjInfo { + return opeParam.prjInfo; + } + + public get custom(): XilinxCustom { + return { + ipRepo: vscode.workspace.getConfiguration().get('PRJ.xilinx.IP.repo.path', ''), + bdRepo: vscode.workspace.getConfiguration().get('PRJ.xilinx.BD.repo.path', '') }; + } + - this.topMod = { + public get topMod(): TopMod { + return { src : opeParam.firstSrcTopModule.name, sim : opeParam.firstSimTopModule.name, }; + } - this.prjInfo = { + public get prjInfo(): PLPrjInfo { + return { path : hdlPath.join(this.prjPath, 'xilinx'), name : opeParam.prjInfo.prjName.PL, device : opeParam.prjInfo.device }; - - const _this = this; - vscode.workspace.onDidChangeConfiguration(e => _this.getConfig()); } - getConfig() { - this.xipRepo = opeParam.prjInfo.IP_REPO; - this.xipPath = hdlPath.join(opeParam.extensionPath, 'IP_repo'); - this.xbdPath = hdlPath.join(opeParam.extensionPath, 'lib', 'xilinx', 'bd'); - this.xilinxPath = hdlPath.join(opeParam.extensionPath, 'resources', 'script', 'xilinx'); - - this.prjPath = opeParam.prjInfo.arch.prjPath; - this.srcPath = opeParam.prjInfo.arch.hardware.src; - this.simPath = opeParam.prjInfo.arch.hardware.sim; - this.datPath = opeParam.prjInfo.arch.hardware.data; - - this.softSrc = opeParam.prjInfo.arch.software.src; - this.HWPath = fspath.dirname(this.srcPath); - this.extensionPath = opeParam.extensionPath; - this.prjConfig = opeParam.prjInfo; - - this.custom = { - ip_repo : this.setting.get('PRJ.xilinx.IP.repo.path', ''), - bdRepo : this.setting.get('PRJ.xilinx.BD.repo.path', ''), - }; - - this.topMod = { - src : opeParam.firstSrcTopModule.name, - sim : opeParam.firstSimTopModule.name, - }; - } /** * xilinx下的launch运行,打开存在的工程或者再没有工程时进行新建 @@ -196,8 +185,8 @@ class XilinxOperation { // 导入 IP_repo_paths scripts.push(`set xip_repo_paths {}`); - if (fs.existsSync(this.custom.ip_repo)) { - scripts.push(`lappend xip_repo_paths ${this.custom.ip_repo}`); + if (fs.existsSync(this.custom.ipRepo)) { + scripts.push(`lappend xip_repo_paths ${this.custom.ipRepo}`); } this.xipRepo.forEach( diff --git a/src/manager/PS/xilinx.ts b/src/manager/PS/xilinx.ts index d9044ed..8582588 100644 --- a/src/manager/PS/xilinx.ts +++ b/src/manager/PS/xilinx.ts @@ -26,9 +26,8 @@ interface PSConfig { * @descriptionCn xilinx工具链下PS端的操作类 */ class XilinxOperation { - config: XilinxOperationConfig; - constructor() { - this.config = { + public get config(): XilinxOperationConfig { + return { path : hdlPath.join(opeParam.extensionPath, 'resources', 'script', 'xilinx', 'soft'), hw : "SDK_Platform", bsp: "BSP_package", @@ -43,33 +42,7 @@ class XilinxOperation { }; } - getConfig() { - this.config = { - path : hdlPath.join(opeParam.extensionPath, 'resources', 'script', 'xilinx', 'soft'), - hw : "SDK_Platform", - bsp: "BSP_package", - dat: opeParam.prjInfo.arch.software.data, - src: opeParam.prjInfo.arch.software.src, - soc: { - core: "ps7_cortexa9_0", - bd: "template", - app: "Hello World", - os: "standalone" - } - }; - - if (hdlFile.isHasAttr(opeParam.prjInfo, "soc")) { - this.config.soc = opeParam.prjInfo.soc; - } - - if (hdlFile.isHasAttr(opeParam.prjInfo, "prjName.PS")) { - this.config.soc.bd = opeParam.prjInfo.prjName.PS; - } - } - launch(config: PSConfig) { - this.getConfig(); - const hdfs = hdlFile.pickFileRecursive(this.config.dat, [], p => p.endsWith('.hdf')); @@ -110,9 +83,7 @@ file delete ${scriptPath} -force\n`; config.terminal?.sendText(`${config.path} ${scriptPath}`); } - build(config: PSConfig) { - this.getConfig(); - + build(config: PSConfig) { const scriptPath = `${this.config.path}/build.tcl`; const script = ` setws ${this.config.src} @@ -124,9 +95,7 @@ file delete ${scriptPath} -force\n`; config.terminal?.sendText(`${config.path} ${scriptPath}`); } - program(config: PSConfig) { - this.getConfig(); - + program(config: PSConfig) { const len = this.config.soc.core.length; const index = this.config.soc.core.slice(len-1, len); const scriptPath = `${this.config.path}/program.tcl`; diff --git a/src/manager/lib.ts b/src/manager/lib.ts index e69de29..157a8f9 100644 --- a/src/manager/lib.ts +++ b/src/manager/lib.ts @@ -0,0 +1,39 @@ +import * as vscode from 'vscode'; + +import { AbsPath, opeParam } from '../global'; +import { hdlFile, hdlPath } from '../hdlFs'; + +class LibManage { + constructor() { + + } + + public get srcPath(): AbsPath { + return opeParam.prjInfo.arch.hardware.src; + } + + public get simPath(): AbsPath { + return opeParam.prjInfo.arch.hardware.sim; + } + + public get prjPath(): AbsPath { + return opeParam.prjInfo.arch.prjPath; + } + + public get localLibPath(): AbsPath { + return hdlPath.join(this.srcPath, 'lib'); + } + + public get sourceLibPath(): AbsPath { + return hdlPath.join(opeParam.extensionPath, 'lib'); + } + + public get libCustomPath(): AbsPath { + return opeParam.prjInfo.libCustomPath; + } + + public processLibFiles() { + + } + +}; \ No newline at end of file diff --git a/src/manager/prj.ts b/src/manager/prj.ts index 62c16a2..2808d47 100644 --- a/src/manager/prj.ts +++ b/src/manager/prj.ts @@ -3,17 +3,12 @@ import * as vscode from 'vscode'; import * as fs from 'fs'; import { AbsPath, opeParam } from '../global'; +import { PathSet } from '../global/util'; import { RawPrjInfo } from '../global/prjInfo'; -import { ToolChainType } from '../global/enum'; - -import { hdlFile, hdlDir, hdlPath } from '../hdlFs'; +import { hdlFile, hdlPath } from '../hdlFs'; class PrjManage { - setting: vscode.WorkspaceConfiguration; - - constructor() { - this.setting = vscode.workspace.getConfiguration(); - + constructor() { vscode.commands.registerCommand('digital-ide.property-json.generate', this.generatePropertyJson); vscode.commands.registerCommand('digital-ide.property-json.overwrite', @@ -31,7 +26,6 @@ class PrjManage { } // overwrite content in current property.json to property-init.json - // TODO test me :D private async overwritePropertyJson() { const options = { preview: false, @@ -79,6 +73,26 @@ class PrjManage { } } + public getPrjHardwareFiles(): AbsPath[] { + const searchPathSet = new PathSet(); + const hardwareInfo = opeParam.prjInfo.arch.hardware; + + // TODO : make something like .gitignore + + // search src + searchPathSet.checkAdd(hardwareInfo.src); + + // search sim + searchPathSet.checkAdd(hardwareInfo.sim); + + const searchPaths = searchPathSet.files; + return hdlFile.getHDLFiles(searchPaths, []); + } + + public initialise() { + + } + } const prjManage = new PrjManage(); From a02620cf5387440385b248976ccc478ec1625746 Mon Sep 17 00:00:00 2001 From: Kirigaya <1193466151@qq.com> Date: Fri, 10 Feb 2023 01:14:22 +0800 Subject: [PATCH 03/54] adjust structure --- draft.json | 169 +++++++++++++++ draft2.json | 201 ++++++++++++++++++ src/global/prjInfo.ts | 1 + src/hdlFs/file.ts | 38 +++- src/hdlParser/{base => }/common.ts | 17 +- src/hdlParser/{base => }/core.ts | 6 +- src/hdlParser/parser/index.d.ts | 0 src/hdlParser/parser/index.js | 0 src/hdlParser/util.ts | 5 + src/manager/PL/xilinx.ts | 2 +- test.js | 2 +- vsixmake.js | 10 +- .../parser => wasm/hdlParser}/.gitignore | 0 wasm/hdlParser/index.d.ts | 27 +++ wasm/hdlParser/index.js | 38 ++++ 15 files changed, 493 insertions(+), 23 deletions(-) create mode 100644 draft.json create mode 100644 draft2.json rename src/hdlParser/{base => }/common.ts (90%) rename src/hdlParser/{base => }/core.ts (99%) delete mode 100644 src/hdlParser/parser/index.d.ts delete mode 100644 src/hdlParser/parser/index.js create mode 100644 src/hdlParser/util.ts rename {src/hdlParser/parser => wasm/hdlParser}/.gitignore (100%) create mode 100644 wasm/hdlParser/index.d.ts create mode 100644 wasm/hdlParser/index.js diff --git a/draft.json b/draft.json new file mode 100644 index 0000000..283b3d5 --- /dev/null +++ b/draft.json @@ -0,0 +1,169 @@ +{ + "content": { + "error": [], + "symbols": [ + { + "name": "Main", + "range": { + "end": { + "character": 0, + "line": 31 + }, + "start": { + "character": 0, + "line": 10 + } + }, + "type": "module" + }, + { + "name": "a", + "range": { + "end": { + "character": 17, + "line": 11 + }, + "start": { + "character": 16, + "line": 11 + } + }, + "type": "input" + }, + { + "name": "b", + "range": { + "end": { + "character": 17, + "line": 12 + }, + "start": { + "character": 16, + "line": 12 + } + }, + "type": "input" + }, + { + "name": "c", + "range": { + "end": { + "character": 11, + "line": 13 + }, + "start": { + "character": 10, + "line": 13 + } + }, + "type": "input" + }, + { + "name": "Qus", + "range": { + "end": { + "character": 14, + "line": 14 + }, + "start": { + "character": 11, + "line": 14 + } + }, + "type": "output" + }, + { + "name": "Qs", + "range": { + "end": { + "character": 18, + "line": 14 + }, + "start": { + "character": 16, + "line": 14 + } + }, + "type": "output" + }, + { + "name": "`main_o", + "range": { + "end": { + "character": 27, + "line": 14 + }, + "start": { + "character": 20, + "line": 14 + } + }, + "type": "output" + }, + { + "name": "dependence_1", + "range": { + "end": { + "character": 1, + "line": 22 + }, + "start": { + "character": 0, + "line": 17 + } + }, + "type": "dependence_1" + }, + { + "name": "dependence_2", + "range": { + "end": { + "character": 1, + "line": 29 + }, + "start": { + "character": 0, + "line": 24 + } + }, + "type": "dependence_2" + } + ] + }, + "languageId": "verilog", + "macro": { + "defines": [ + { + "name": "main_o", + "range": { + "end": { + "character": 19, + "line": 9 + }, + "start": { + "character": 1, + "line": 9 + } + }, + "value": "out" + } + ], + "error": [], + "includes": [ + { + "path": "child_1.v", + "range": { + "end": { + "character": 9, + "line": 8 + }, + "start": { + "character": 1, + "line": 8 + } + } + } + ], + "invalid": [] + } + } \ No newline at end of file diff --git a/draft2.json b/draft2.json new file mode 100644 index 0000000..b719be3 --- /dev/null +++ b/draft2.json @@ -0,0 +1,201 @@ +{ + "content": { + "error": [], + "modules": [ + { + "instances": [ + { + "instparams": null, + "instports": { + "end": { + "character": 10, + "line": 21 + }, + "start": { + "character": 4, + "line": 18 + } + }, + "name": "dependence_1", + "range": { + "end": { + "character": 0, + "line": 22 + }, + "start": { + "character": 13, + "line": 17 + } + }, + "type": "dependence_1" + }, + { + "instparams": null, + "instports": { + "end": { + "character": 9, + "line": 28 + }, + "start": { + "character": 4, + "line": 25 + } + }, + "name": "dependence_2", + "range": { + "end": { + "character": 0, + "line": 29 + }, + "start": { + "character": 13, + "line": 24 + } + }, + "type": "dependence_2" + } + ], + "name": "Main", + "params": [], + "ports": [ + { + "name": "a", + "range": { + "end": { + "character": 17, + "line": 11 + }, + "start": { + "character": 16, + "line": 11 + } + }, + "type": "input", + "width": "[3:0]" + }, + { + "name": "b", + "range": { + "end": { + "character": 17, + "line": 12 + }, + "start": { + "character": 16, + "line": 12 + } + }, + "type": "input", + "width": "[2:0]" + }, + { + "name": "c", + "range": { + "end": { + "character": 11, + "line": 13 + }, + "start": { + "character": 10, + "line": 13 + } + }, + "type": "input", + "width": "Unknown" + }, + { + "name": "Qus", + "range": { + "end": { + "character": 14, + "line": 14 + }, + "start": { + "character": 11, + "line": 14 + } + }, + "type": "output", + "width": "Unknown" + }, + { + "name": "Qs", + "range": { + "end": { + "character": 18, + "line": 14 + }, + "start": { + "character": 16, + "line": 14 + } + }, + "type": "output", + "width": "Unknown" + }, + { + "name": "`main_o", + "range": { + "end": { + "character": 27, + "line": 14 + }, + "start": { + "character": 20, + "line": 14 + } + }, + "type": "output", + "width": "Unknown" + } + ], + "range": { + "end": { + "character": 0, + "line": 31 + }, + "start": { + "character": 0, + "line": 10 + } + } + } + ] + }, + "languageId": "verilog", + "macro": { + "defines": [ + { + "name": "main_o", + "range": { + "end": { + "character": 19, + "line": 9 + }, + "start": { + "character": 1, + "line": 9 + } + }, + "value": "out" + } + ], + "error": [], + "includes": [ + { + "path": "child_1.v", + "range": { + "end": { + "character": 9, + "line": 8 + }, + "start": { + "character": 1, + "line": 8 + } + } + } + ], + "invalid": [] + } + } \ No newline at end of file diff --git a/src/global/prjInfo.ts b/src/global/prjInfo.ts index 63e23d4..cf3a0c5 100644 --- a/src/global/prjInfo.ts +++ b/src/global/prjInfo.ts @@ -100,6 +100,7 @@ interface RawPrjInfo extends RawPrjInfoMeta { library?: Library }; + function toSlash(path: Path): Path { return path.replace(/\\/g,"\/"); } diff --git a/src/hdlFs/file.ts b/src/hdlFs/file.ts index a8a9210..4477822 100644 --- a/src/hdlFs/file.ts +++ b/src/hdlFs/file.ts @@ -5,7 +5,7 @@ import { AbsPath, RelPath } from '../global'; import { HdlLangID } from '../global/enum'; import { verilogExts, vhdlExts, systemVerilogExts, hdlExts } from '../global/lang'; import * as hdlPath from './path'; -import { HdlFileType } from '../hdlParser/base/common'; +import { HdlFileType } from '../hdlParser/common'; import { opeParam } from '../global'; /** @@ -62,7 +62,7 @@ function isSystemVerilogFile(path: AbsPath): boolean { return false; } const ext = hdlPath.extname(path, false); - return systemVerilogExts.includes(path); + return systemVerilogExts.includes(ext); } function isHDLFile(path: AbsPath): boolean { @@ -101,18 +101,12 @@ function pickFileRecursive(path: AbsPath | AbsPath[] | Set, ignores?: A if (subHdlFiles.length > 0) { hdlFiles.push(...subHdlFiles); } - } else if ( - (condition && condition(filePath)) - || (condition === undefined) - ) { + } else if (!condition || condition(filePath)) { hdlFiles.push(filePath); } } return hdlFiles; - } else if ( - (condition && condition(path)) - || (condition === undefined) - ) { + } else if (!condition || condition(path)) { return [path]; } else { return []; @@ -344,6 +338,27 @@ function isHasValue(obj: any, attr: string, value: any): boolean{ return true; } +function* walk(path: AbsPath | RelPath, condition?: (filePath: AbsPath) => boolean): Generator { + if (isFile(path)) { + if (!condition || condition(path)) { + yield path; + } + } else { + for (const file of fs.readdirSync(path)) { + const filePath = hdlPath.join(path, file); + if (isDir(filePath)) { + for (const targetPath of walk(filePath, condition)) { + yield targetPath; + } + } else if (isFile(filePath)) { + if (!condition || condition(filePath)) { + yield filePath; + } + } + } + } +} + export { isFile, isDir, @@ -364,5 +379,6 @@ export { isHasValue, copyFile, removeFile, - moveFile + moveFile, + walk }; \ No newline at end of file diff --git a/src/hdlParser/base/common.ts b/src/hdlParser/common.ts similarity index 90% rename from src/hdlParser/base/common.ts rename to src/hdlParser/common.ts index ff94339..ebdd34b 100644 --- a/src/hdlParser/base/common.ts +++ b/src/hdlParser/common.ts @@ -1,6 +1,6 @@ /* eslint-disable @typescript-eslint/naming-convention */ -import { AbsPath, RelPath } from '../../global'; +import { AbsPath, RelPath } from '../global'; interface Position { // row/line of the cursor, index from 0 @@ -32,6 +32,11 @@ enum HdlFileType { RemoteLib = 'remote_lib' }; enum InstModPathStatus {Current, Include, Others, Unknown}; +enum SymbolType { + Module = 'module', + Input = 'input', + Output = 'output' +}; interface Error { severity: number @@ -95,6 +100,13 @@ interface RawHdlModule { range: Range }; + +interface RawSymbol { + name: string + type: SymbolType + range: Range +}; + interface InstModPathSearchResult { path: AbsPath status: InstModPathStatus @@ -123,5 +135,6 @@ export { RawHdlInstance, RawHdlModule, InstModPathSearchResult, - HdlDependence + HdlDependence, + RawSymbol }; \ No newline at end of file diff --git a/src/hdlParser/base/core.ts b/src/hdlParser/core.ts similarity index 99% rename from src/hdlParser/base/core.ts rename to src/hdlParser/core.ts index f0b3fe9..6c93ad3 100644 --- a/src/hdlParser/base/core.ts +++ b/src/hdlParser/core.ts @@ -1,8 +1,8 @@ -import { AbsPath } from '../../global'; -import { HdlLangID } from '../../global/enum'; +import { AbsPath } from '../global'; +import { HdlLangID } from '../global/enum'; import * as common from './common'; -import { hdlFile, hdlPath } from '../../hdlFs'; +import { hdlFile, hdlPath } from '../hdlFs'; class HdlParam { private readonly topModules : Set = new Set(); diff --git a/src/hdlParser/parser/index.d.ts b/src/hdlParser/parser/index.d.ts deleted file mode 100644 index e69de29..0000000 diff --git a/src/hdlParser/parser/index.js b/src/hdlParser/parser/index.js deleted file mode 100644 index e69de29..0000000 diff --git a/src/hdlParser/util.ts b/src/hdlParser/util.ts new file mode 100644 index 0000000..69b297f --- /dev/null +++ b/src/hdlParser/util.ts @@ -0,0 +1,5 @@ +import { vlogAll, vlogFast } from '../../wasm/hdlParser'; + +function hello(path: string) { + vlogAll(path); +} \ No newline at end of file diff --git a/src/manager/PL/xilinx.ts b/src/manager/PL/xilinx.ts index edafb74..952f206 100644 --- a/src/manager/PL/xilinx.ts +++ b/src/manager/PL/xilinx.ts @@ -5,7 +5,7 @@ import * as fspath from 'path'; import * as fs from 'fs'; import { AbsPath, opeParam, PrjInfo } from '../../global'; -import { hdlParam } from '../../hdlParser/base/core'; +import { hdlParam } from '../../hdlParser/core'; import { hdlFile, hdlDir, hdlPath } from '../../hdlFs'; import { PropertySchema } from '../../global/propertySchema'; diff --git a/test.js b/test.js index 7538665..6d8dc92 100644 --- a/test.js +++ b/test.js @@ -2,7 +2,7 @@ const fs = require('fs'); const path = require('path'); -const sysvlog_build = require('./src/hdlParser/parser/parser'); +const sysvlog_build = require('./wasm/hdlParser/parser'); const COMMON_PATH = path.resolve('./lib/common/Driver'); diff --git a/vsixmake.js b/vsixmake.js index 9de2a05..3c4bc39 100644 --- a/vsixmake.js +++ b/vsixmake.js @@ -1,17 +1,17 @@ const { execSync } = require('child_process'); const fs = require('fs'); const path = require('path'); -const HDLFile = require('./src/HDLfilesys/operation/files'); -const hdlPath = require('./src/HDLfilesys/operation/path'); +const hdlFile = require('./src/hdlFs/file'); +const hdlPath = require('./src/hdlFs/path'); const PACKAGE_PATH = './package.json'; const SAVE_FOLDER = 'dist'; const WEBPACK_OUT_FOLDER = 'out'; function changeMain(path) { - const packageJS = HDLFile.pullJsonInfo(PACKAGE_PATH); + const packageJS = hdlFile.pullJsonInfo(PACKAGE_PATH); packageJS.main = path; - HDLFile.pushJsonInfo(PACKAGE_PATH, packageJS); + hdlFile.pushJsonInfo(PACKAGE_PATH, packageJS); } function findVsix() { @@ -36,7 +36,7 @@ execSync('code --uninstall-extension sterben.digital-ide'); const vsix = findVsix(); const targetPath = path.join(SAVE_FOLDER, vsix); -HDLFile.moveFile(vsix, targetPath, true); +hdlFile.moveFile(vsix, targetPath, true); hdlPath.deleteFolder(WEBPACK_OUT_FOLDER); const vsixPath = hdlPath.join(SAVE_FOLDER, vsix); diff --git a/src/hdlParser/parser/.gitignore b/wasm/hdlParser/.gitignore similarity index 100% rename from src/hdlParser/parser/.gitignore rename to wasm/hdlParser/.gitignore diff --git a/wasm/hdlParser/index.d.ts b/wasm/hdlParser/index.d.ts new file mode 100644 index 0000000..fbc8140 --- /dev/null +++ b/wasm/hdlParser/index.d.ts @@ -0,0 +1,27 @@ +import { RawHdlModule, Macro, RawSymbol } from '../../src/hdlParser/common'; +import { HdlLangID } from '../../src/global/enum'; + +type AbsPath = string; +type RelPath = string; +type Path = AbsPath | RelPath; + +interface Fast { + content: { + error : string[] + modules: RawHdlModule[] + } + languageId: HdlLangID + macro: Macro +} + +interface All { + content: { + error: string[] + symbols: RawSymbol[] + } + languageId: HdlLangID + macro: Macro +} + +export function vlogFast(path: AbsPath): Promise; +export function vlogAll(path: AbsPath): Promise; \ No newline at end of file diff --git a/wasm/hdlParser/index.js b/wasm/hdlParser/index.js new file mode 100644 index 0000000..8f2254c --- /dev/null +++ b/wasm/hdlParser/index.js @@ -0,0 +1,38 @@ +const hdlParser = require('./parser'); + +const _hdlParser = { + module: null, + tempPath: '/home/hdl_parser', + + async acquire() { + const module = this.module; + if (module) { + return module; + } else { + const _m = await hdlParser(); + this.module = _m; + return _m; + } + } +}; + +async function vlogFast(path) { + const wasmModule = await _hdlParser.acquire(); + const source = fs.readFileSync(path, 'utf-8'); + wasmModule.FS.writeFile(_hdlParser.tempPath, source, { encoding: 'utf8' }); + const res = wasmModule.ccall('vlog_fast', 'string', ['string'], [_hdlParser.tempPath]); + return JSON.parse(res); +} + +async function vlogAll(path) { + const wasmModule = await _hdlParser.acquire(); + const source = fs.readFileSync(path, 'utf-8'); + wasmModule.FS.writeFile(_hdlParser.tempPath, source, { encoding: 'utf8' }); + const res = wasmModule.ccall('vlog_all', 'string', ['string'], [_hdlParser.tempPath]); + return JSON.parse(res); +} + +module.exports = { + vlogFast, + vlogAll +}; \ No newline at end of file From 01f44548ea6175ccdfd933f25c84b3940abe8657 Mon Sep 17 00:00:00 2001 From: Kirigaya <1193466151@qq.com> Date: Sat, 11 Feb 2023 01:10:45 +0800 Subject: [PATCH 04/54] finish testbench, instance | finish doc | move all the none-ts file to resources --- README.md | 71 +- css/documentation.backup.css | 178 + css/documentation.css | 520 ++ images/icons/iconfont.json | 128 + images/icons/iconfont.woff2 | Bin 0 -> 2896 bytes package-lock.json | 9450 ++++++++++++---------- package.json | 255 +- package.nls.json | 7 +- package.nls.zh-cn.json | 7 +- package.nls.zh-tw.json | 7 +- {wasm => resources}/hdlParser/.gitignore | 0 {wasm => resources}/hdlParser/index.d.ts | 8 +- {wasm => resources}/hdlParser/index.js | 45 +- resources/json5/index.d.ts | 7 + resources/json5/index.js | 1 + resources/wavedrom/index.d.ts | 5 + resources/wavedrom/index.js | 34 + src/extension.ts | 22 +- src/function/hdlDoc/common.ts | 372 + src/function/hdlDoc/html.ts | 227 + src/function/hdlDoc/index.ts | 70 + src/function/hdlDoc/markdown.ts | 252 + src/function/hdlDoc/pdf.ts | 115 + src/function/index.ts | 26 + src/function/lsp/util/completion.js | 203 + src/function/lsp/util/feature.ts | 321 + src/function/lsp/util/index.js | 570 ++ src/function/sim/index.ts | 8 + src/function/sim/instance.ts | 272 + src/function/sim/testbench.ts | 82 + src/global/index.ts | 6 +- src/global/outputChannel.ts | 2 +- src/hdlFs/file.ts | 11 +- src/hdlFs/icons.ts | 11 +- src/hdlParser/common.ts | 2 + src/hdlParser/core.ts | 84 +- src/hdlParser/index.ts | 5 + src/hdlParser/util.ts | 33 +- src/manager/PS/xilinx.ts | 2 +- src/manager/prj.ts | 1 + test.js | 74 +- tsconfig.json | 1 + 42 files changed, 9249 insertions(+), 4246 deletions(-) create mode 100644 css/documentation.backup.css create mode 100644 css/documentation.css create mode 100644 images/icons/iconfont.json create mode 100644 images/icons/iconfont.woff2 rename {wasm => resources}/hdlParser/.gitignore (100%) rename {wasm => resources}/hdlParser/index.d.ts (54%) rename {wasm => resources}/hdlParser/index.js (55%) create mode 100644 resources/json5/index.d.ts create mode 100644 resources/json5/index.js create mode 100644 resources/wavedrom/index.d.ts create mode 100644 resources/wavedrom/index.js create mode 100644 src/function/hdlDoc/common.ts create mode 100644 src/function/hdlDoc/html.ts create mode 100644 src/function/hdlDoc/index.ts create mode 100644 src/function/hdlDoc/markdown.ts create mode 100644 src/function/hdlDoc/pdf.ts create mode 100644 src/function/index.ts create mode 100644 src/function/lsp/util/completion.js create mode 100644 src/function/lsp/util/feature.ts create mode 100644 src/function/lsp/util/index.js create mode 100644 src/function/sim/index.ts create mode 100644 src/function/sim/instance.ts create mode 100644 src/function/sim/testbench.ts create mode 100644 src/hdlParser/index.ts diff --git a/README.md b/README.md index 5850421..0af1fe0 100644 --- a/README.md +++ b/README.md @@ -1,71 +1,4 @@ -# digital-ide README +# Digital-IDE -This is the README for your extension "digital-ide". After writing up a brief description, we recommend including the following sections. +![](https://img.shields.io/badge/version-0.3.0-blue) -## Features - -Describe specific features of your extension including screenshots of your extension in action. Image paths are relative to this README file. - -For example if there is an image subfolder under your extension project workspace: - -\!\[feature X\]\(images/feature-x.png\) - -> Tip: Many popular extensions utilize animations. This is an excellent way to show off your extension! We recommend short, focused animations that are easy to follow. - -## Requirements - -If you have any requirements or dependencies, add a section describing those and how to install and configure them. - -## Extension Settings - -Include if your extension adds any VS Code settings through the `contributes.configuration` extension point. - -For example: - -This extension contributes the following settings: - -* `myExtension.enable`: Enable/disable this extension. -* `myExtension.thing`: Set to `blah` to do something. - -## Known Issues - -Calling out known issues can help limit users opening duplicate issues against your extension. - -## Release Notes - -Users appreciate release notes as you update your extension. - -### 1.0.0 - -Initial release of ... - -### 1.0.1 - -Fixed issue #. - -### 1.1.0 - -Added features X, Y, and Z. - ---- - -## Following extension guidelines - -Ensure that you've read through the extensions guidelines and follow the best practices for creating your extension. - -* [Extension Guidelines](https://code.visualstudio.com/api/references/extension-guidelines) - -## Working with Markdown - -You can author your README using Visual Studio Code. Here are some useful editor keyboard shortcuts: - -* Split the editor (`Cmd+\` on macOS or `Ctrl+\` on Windows and Linux). -* Toggle preview (`Shift+Cmd+V` on macOS or `Shift+Ctrl+V` on Windows and Linux). -* Press `Ctrl+Space` (Windows, Linux, macOS) to see a list of Markdown snippets. - -## For more information - -* [Visual Studio Code's Markdown Support](http://code.visualstudio.com/docs/languages/markdown) -* [Markdown Syntax Reference](https://help.github.com/articles/markdown-basics/) - -**Enjoy!** diff --git a/css/documentation.backup.css b/css/documentation.backup.css new file mode 100644 index 0000000..e8e7e48 --- /dev/null +++ b/css/documentation.backup.css @@ -0,0 +1,178 @@ +:root { + --title-font : "Cascadia code", "Microsoft YaHei", "Times", serif; + --base-font : "Roboto Slab", "Microsoft YaHei", serif; + --monospace: "Cascadia code", "Microsoft YaHei", "Courier New", monospace; + --main-font-size : 15px; +} + +.error-out { + display: flex; + justify-content: center; + align-items: center; +} + +.error { + color: red; +} + +@font-face { + font-family: "Roboto Slab"; + src: url("../font/RobotoSlab-Regular-2.ttf"); +} + +@font-face { + font-family: "Cascadia code"; + src: url("../font/Cascadia-Code-Regular-2.ttf"); +} + +@font-face { + font-family: "Open Sans"; + src: url("../font/Open-Sans-2.ttf"); +} + +@font-face { + font-family: "Glow Sans"; + src: url("../font/GlowSansSC-Normal-Book.woff2") format('woff2'); +} + +body { + font-family: "Roboto Slab", "SimHei", serif; + /* background-color: rgb(255, 255, 255); */ + -ms-text-size-adjust: 100%; + -webkit-text-size-adjust: 100%; + line-height: 1.5; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; + font-size: 16px; + line-height: 1.5; + word-wrap: break-word; +} + +html { + -webkit-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; + text-rendering: optimizelegibility; + -webkit-font-smoothing: initial; +} + +.octicon { + display: inline-block; + vertical-align: text-top; + fill: currentColor; +} + +img { + border-style: none; +} + + +#write h1, h2, h3, h4, h5, h6 { + font-family: var(--title-font); + font-weight: 800; + line-height: 1.5; + margin: 0 0 1em 0; +} + +#write h1 { + font-size: 2em; + margin: 0.67em 0; +} + +#write { + position: static; + /* width: 90%; */ + max-width: 1000px; + min-height: calc(100vh - 6rem); + min-width: calc(100vw - 45rem); + line-height: 1.6; + transform: none; + height: auto; + caret-color: var(--main-color); +} + +#write h2 { + font-size: 28px; + border-radius: .5em; + width: fit-content; +} + +#write h3 { + font-size: 24px; + border-radius: .3em; + width: fit-content; +} + +#write h4 { + font-size: 20px; +} + +#write h5 { + font-size: 16px; +} + +#write hr { + width: 60%; + text-align:center; + margin: 4.5em auto; +} + +/* table */ +#write table +{ + width: 95%; + border-collapse: collapse; + text-align: center; + font-family: var(--monospace); + margin: 20px; +} +#write table td, table th +{ + border: 1px solid; + padding: 5px; + border-radius: .5em; +} +#write table td { + font-family: var(--title-font); +} +#write table thead th +{ + font-size: 16px; + font-weight: bolder; + text-align: center; + vertical-align: middle; + padding: 10px; +} + +/* table tr:nth-child(odd) +{ + background: white; +} +table tr:nth-child(even) +{ + background: var(--light-color); +} */ + +/* main element consisting of your text */ +p { + margin: 0 0 2em 0; + font-weight: 500; + line-height: 1.6; + font-size: var(--main-font-size); + font-family: var(--base-font); +} + +a { + font-weight: 500; + text-decoration: none; + text-decoration-style: none; + cursor: pointer; + padding: 0 3px 0 3px; +} + + +/* list */ +ol, ul { + font-size: var(--main-font-size); + padding-left: 2em; + line-height: 2; + font-family: var(--base-font); +} \ No newline at end of file diff --git a/css/documentation.css b/css/documentation.css new file mode 100644 index 0000000..5547c86 --- /dev/null +++ b/css/documentation.css @@ -0,0 +1,520 @@ +:root { + --dark-main-color : #df733d; + --light-main-color : #cc6633; +} + + +body { + -ms-text-size-adjust: 100%; + -webkit-text-size-adjust: 100%; + line-height: 1.5; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; + font-size: 16px; + line-height: 1.5; + word-wrap: break-word; + background-attachment: fixed; + background-repeat: no-repeat; + background-size: cover; + -webkit-background-size: cover; + -o-background-size: cover; + background-position: center 0; + background-image: url(--backgroundImage); +} + +.octicon { + display: inline-block; + vertical-align: text-top; + fill: currentColor; +} + +a { + background-color: transparent; + -webkit-text-decoration-skip: objects; +} + +#wrapper { + justify-content: center; + display: flex; +} + +#write { + padding: 15px 30px; + width: 1000px; +} + +.ImgCaption { + padding-top: 0; + margin-top: 7px; + width: fit-content; +} + +.vscode-dark .ImgCaption { + border-bottom: 2px solid var(--dark-main-color); + color: white; +} + +.vscode-light .ImgCaption { + border-bottom: 2px solid var(--light-main-color); + color: black; +} + +a:active, +a:hover { + outline-width: 0; +} + +strong { + font-weight: inherit; +} + +strong { + font-weight: bolder; +} + +h1 { + font-size: 2em; + margin: 0.67em 0; +} + +.error-out { + display: flex; + justify-content: center; + align-items: center; +} + +.error { + color: rgb(227, 60, 60); + border-radius: 1em; + border: 1.5px solid rgb(227, 60, 60); + padding: 10px 20px; +} + +code, +kbd, +pre { + font-family: monospace, monospace; + font-size: 1em; +} + +hr { + box-sizing: content-box; + height: 0; + overflow: visible; +} + +input { + font: inherit; + margin: 0; +} + +input { + overflow: visible; +} + +[type="checkbox"] { + box-sizing: border-box; + padding: 0; +} + +* { + box-sizing: border-box; +} + +input { + font-family: inherit; + font-size: inherit; + line-height: inherit; +} + +a { + color: #4078c0; + text-decoration: none; +} + +a:hover, +a:active { + text-decoration: underline; +} + +strong { + font-weight: 600; +} + +hr { + height: 0; + margin: 15px 0; + overflow: hidden; + background: transparent; + border: 0; + border-bottom: 1px solid; +} + +hr::before { + display: table; + content: ""; +} + +hr::after { + display: table; + clear: both; + content: ""; +} + +table { + border-spacing: 0; + border-collapse: collapse; +} + +td, +th { + padding: 0; +} + +h1, +h2, +h3, +h4, +h5, +h6 { + margin-top: 0; + margin-bottom: 0; +} + +h1 { + font-size: 32px; + font-weight: 600; +} + +h2 { + font-size: 24px; + font-weight: 600; +} + +h3 { + font-size: 20px; + font-weight: 600; +} + +h4 { + font-size: 16px; + font-weight: 600; +} + +h5 { + font-size: 14px; + font-weight: 600; +} + +h6 { + font-size: 12px; + font-weight: 600; +} + +p { + margin-top: 0; + margin-bottom: 10px; +} + +blockquote { + margin: 0; +} + +ul, +ol { + padding-left: 0; + margin-top: 0; + margin-bottom: 0; +} + +ol ol, +ul ol { + list-style-type: lower-roman; +} + +ul ul ol, +ul ol ol, +ol ul ol, +ol ol ol { + list-style-type: lower-alpha; +} + +dd { + margin-left: 0; +} + +code { + font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace; + font-size: 12px; +} + +pre { + margin-top: 0; + margin-bottom: 0; + font: 12px Consolas, "Liberation Mono", Menlo, Courier, monospace; +} + +.octicon { + vertical-align: text-bottom; +} + +input { + -webkit-font-feature-settings: "liga" 0; + font-feature-settings: "liga" 0; +} + +.markdown-body::before { + display: table; + content: ""; +} + +.markdown-body::after { + display: table; + clear: both; + content: ""; +} + +.markdown-body>*:first-child { + margin-top: 0 !important; +} + +.markdown-body>*:last-child { + margin-bottom: 0 !important; +} + +a:not([href]) { + color: inherit; + text-decoration: none; +} + +.anchor { + float: left; + padding-right: 4px; + margin-left: -20px; + line-height: 1; +} + +.anchor:focus { + outline: none; +} + +p, +blockquote, +ul, +ol, +dl, +table, +pre { + margin-top: 0; + margin-bottom: 16px; +} + +hr { + height: 0.25em; + padding: 0; + margin: 24px 0; + border: 0; +} + +blockquote { + padding: 0 1em; +} + +blockquote>:first-child { + margin-top: 0; +} + +blockquote>:last-child { + margin-bottom: 0; +} + +kbd { + display: inline-block; + padding: 3px 5px; + font-size: 11px; + line-height: 10px; + vertical-align: middle; + border-radius: 3px; +} + +#write h1, +#write h2, +#write h3, +#write h4, +#write h5, +#write h6 { + margin-top: 24px; + margin-bottom: 16px; + font-weight: 600; + line-height: 1.25; +} + +.vscode-dark h1 { + color: #eee; + border-bottom: 3px solid #df733d; + width: fit-content; + margin: 0 0 1.0em 0; + line-height: 1.3; +} + +.vscode-dark h2 { + color: #eee; +} + +.vscode-dark h2::before { + content: 'H2'; + border-radius: .3em; + font-size: .8em; + padding: 3px 7px; + margin-right: 15px; + color: #eee; + background-color: #df733d; +} + +.vscode-light h1 { + color: #000; + border-bottom: 3px solid #cc6633; + width: fit-content; + margin: 0 0 1.0em 0; + line-height: 1.3; +} + +.vscode-light h2 { + color: #000; +} + +.vscode-light h2::before { + content: 'H2'; + border-radius: .3em; + font-size: .8em; + padding: 3px 7px; + margin-right: 15px; + color: #eee; + background-color: #cc6633; +} + +h1 { + padding-bottom: 0.3em; + font-size: 2em; +} + +h2 { + padding-bottom: 0.3em; + font-size: 1.5em; +} + +h3 { + font-size: 1.25em; +} + +h4 { + font-size: 1em; +} + +h5 { + font-size: 0.875em; +} + +h6 { + font-size: 0.85em; +} + +ul, +ol { + padding-left: 2em; +} + +ul ul, +ul ol, +ol ol, +ol ul { + margin-top: 0; + margin-bottom: 0; +} + +li>p { + margin-top: 16px; +} + +li+li { + margin-top: 0.25em; +} + +/* +table { + display: block; + width: 100%; + overflow: auto; +} + +table th { + font-weight: bold; +} + +table th, +table td { + padding: 6px 13px; + border: .7px solid; +} + +table tr { + border-top: .7px solid; +} */ + + +img { + max-width: 100%; + box-sizing: content-box; +} + +#write table +{ + width: 95%; + border-collapse: collapse; + text-align: center; + margin: 20px; + max-width: 750px; +} +#write table td, table th +{ + border: 1px solid transparent; + padding: 12px 10px; + border-radius: .5em; + word-wrap: break-word; +} + +#write table thead th +{ + background-color: var(--dark-main-color); + font-size: 20px; + font-weight: bolder; + width: 100px; + text-align: center; + vertical-align: middle; + padding: 10px; +} + +.vscode-dark table thead th { + color: white; +} + +.vscode-dark table td, table th { + color: rgb(234, 231, 231); +} + +.vscode-light table thead th { + color: white; +} + +.vscode-light table td, table th { + color: rgb(16, 16, 16); +} + +.vscode-dark table tr:nth-child(even) +{ + background: #20242b; +} + +.vscode-light table tr:nth-child(even) +{ + background: #e7e1e1; +} \ No newline at end of file diff --git a/images/icons/iconfont.json b/images/icons/iconfont.json new file mode 100644 index 0000000..2369be1 --- /dev/null +++ b/images/icons/iconfont.json @@ -0,0 +1,128 @@ +{ + "id": "3826523", + "name": "draft", + "font_family": "iconfont", + "css_prefix_text": "icon-", + "description": "", + "glyphs": [ + { + "icon_id": "7569441", + "name": "天气-未知", + "font_class": "help-unknown", + "unicode": "e62a", + "unicode_decimal": 58922 + }, + { + "icon_id": "6989868", + "name": "module-fill", + "font_class": "module-fill", + "unicode": "e622", + "unicode_decimal": 58914 + }, + { + "icon_id": "6989870", + "name": "module", + "font_class": "module", + "unicode": "e623", + "unicode_decimal": 58915 + }, + { + "icon_id": "1126", + "name": "文件夹", + "font_class": "wenjianjia", + "unicode": "e600", + "unicode_decimal": 58880 + }, + { + "icon_id": "1478582", + "name": "ic_input", + "font_class": "ic_input", + "unicode": "e908", + "unicode_decimal": 59656 + }, + { + "icon_id": "17397810", + "name": "output", + "font_class": "output", + "unicode": "e7b0", + "unicode_decimal": 59312 + }, + { + "icon_id": "18171148", + "name": "交换,双箭头,平行", + "font_class": "exchange-full", + "unicode": "ea19", + "unicode_decimal": 59929 + }, + { + "icon_id": "13553191", + "name": "markdown-line", + "font_class": "markdown-line", + "unicode": "ee68", + "unicode_decimal": 61032 + }, + { + "icon_id": "10168298", + "name": "html-1", + "font_class": "html-", + "unicode": "e633", + "unicode_decimal": 58931 + }, + { + "icon_id": "16432310", + "name": "PDF", + "font_class": "PDF", + "unicode": "e684", + "unicode_decimal": 59012 + }, + { + "icon_id": "15378918", + "name": "v", + "font_class": "v", + "unicode": "ecf7", + "unicode_decimal": 60663 + }, + { + "icon_id": "23306741", + "name": "chip", + "font_class": "chip1", + "unicode": "e7a8", + "unicode_decimal": 59304 + }, + { + "icon_id": "31357424", + "name": "模块", + "font_class": "mokuai", + "unicode": "e60b", + "unicode_decimal": 58891 + }, + { + "icon_id": "3851337", + "name": "参数", + "font_class": "canshu", + "unicode": "e655", + "unicode_decimal": 58965 + }, + { + "icon_id": "11520228", + "name": "接口", + "font_class": "jiekou", + "unicode": "e638", + "unicode_decimal": 58936 + }, + { + "icon_id": "24698418", + "name": "chip", + "font_class": "chip", + "unicode": "e749", + "unicode_decimal": 59209 + }, + { + "icon_id": "13304138", + "name": "verilog", + "font_class": "verilog", + "unicode": "e6b3", + "unicode_decimal": 59059 + } + ] +} diff --git a/images/icons/iconfont.woff2 b/images/icons/iconfont.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..e1a9f3c17e7675facf8412b76438eed41f565cd5 GIT binary patch literal 2896 zcmV-W3$OHdPew8T0RR9101Hq63jhEB02n*~01E*C0RR9100000000000000000000 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 literal 0 HcmV?d00001 diff --git a/package-lock.json b/package-lock.json index 142cbf7..aba767e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,4124 +1,5350 @@ { - "name": "digital-ide", - "version": "0.0.1", - "lockfileVersion": 2, - "requires": true, - "packages": { - "": { - "name": "digital-ide", - "version": "0.0.1", - "devDependencies": { - "@types/glob": "^8.0.0", - "@types/mocha": "^10.0.0", - "@types/node": "16.x", - "@types/vscode": "^1.74.0", - "@typescript-eslint/eslint-plugin": "^5.42.0", - "@typescript-eslint/parser": "^5.42.0", - "@vscode/test-electron": "^2.2.0", - "eslint": "^8.26.0", - "glob": "^8.0.3", - "mocha": "^10.1.0", - "typescript": "^4.8.4" - }, - "engines": { - "vscode": "^1.74.0" - } - }, - "node_modules/@eslint/eslintrc": { - "version": "1.4.1", - "resolved": "https://registry.npmmirror.com/@eslint/eslintrc/-/eslintrc-1.4.1.tgz", - "integrity": "sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA==", - "dev": true, - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.4.0", - "globals": "^13.19.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.11.8", - "resolved": "https://registry.npmmirror.com/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", - "integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==", - "dev": true, - "dependencies": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", - "minimatch": "^3.0.5" - }, - "engines": { - "node": ">=10.10.0" - } - }, - "node_modules/@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmmirror.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "dev": true, - "engines": { - "node": ">=12.22" - } - }, - "node_modules/@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmmirror.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", - "dev": true - }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmmirror.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmmirror.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmmirror.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@tootallnate/once": { - "version": "1.1.2", - "resolved": "https://registry.npmmirror.com/@tootallnate/once/-/once-1.1.2.tgz", - "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, - "node_modules/@types/glob": { - "version": "8.0.0", - "resolved": "https://registry.npmmirror.com/@types/glob/-/glob-8.0.0.tgz", - "integrity": "sha512-l6NQsDDyQUVeoTynNpC9uRvCUint/gSUXQA2euwmTuWGvPY5LSDUu6tkCtJB2SvGQlJQzLaKqcGZP4//7EDveA==", - "dev": true, - "dependencies": { - "@types/minimatch": "*", - "@types/node": "*" - } - }, - "node_modules/@types/json-schema": { - "version": "7.0.11", - "resolved": "https://registry.npmmirror.com/@types/json-schema/-/json-schema-7.0.11.tgz", - "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", - "dev": true - }, - "node_modules/@types/minimatch": { - "version": "5.1.2", - "resolved": "https://registry.npmmirror.com/@types/minimatch/-/minimatch-5.1.2.tgz", - "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==", - "dev": true - }, - "node_modules/@types/mocha": { - "version": "10.0.1", - "resolved": "https://registry.npmmirror.com/@types/mocha/-/mocha-10.0.1.tgz", - "integrity": "sha512-/fvYntiO1GeICvqbQ3doGDIP97vWmvFt83GKguJ6prmQM2iXZfFcq6YE8KteFyRtX2/h5Hf91BYvPodJKFYv5Q==", - "dev": true - }, - "node_modules/@types/node": { - "version": "16.18.11", - "resolved": "https://registry.npmmirror.com/@types/node/-/node-16.18.11.tgz", - "integrity": "sha512-3oJbGBUWuS6ahSnEq1eN2XrCyf4YsWI8OyCvo7c64zQJNplk3mO84t53o8lfTk+2ji59g5ycfc6qQ3fdHliHuA==", - "dev": true - }, - "node_modules/@types/semver": { - "version": "7.3.13", - "resolved": "https://registry.npmmirror.com/@types/semver/-/semver-7.3.13.tgz", - "integrity": "sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==", - "dev": true - }, - "node_modules/@types/vscode": { - "version": "1.74.0", - "resolved": "https://registry.npmmirror.com/@types/vscode/-/vscode-1.74.0.tgz", - "integrity": "sha512-LyeCIU3jb9d38w0MXFwta9r0Jx23ugujkAxdwLTNCyspdZTKUc43t7ppPbCiPoQ/Ivd/pnDFZrb4hWd45wrsgA==", - "dev": true - }, - "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.48.2", - "resolved": "https://registry.npmmirror.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.48.2.tgz", - "integrity": "sha512-sR0Gja9Ky1teIq4qJOl0nC+Tk64/uYdX+mi+5iB//MH8gwyx8e3SOyhEzeLZEFEEfCaLf8KJq+Bd/6je1t+CAg==", - "dev": true, - "dependencies": { - "@typescript-eslint/scope-manager": "5.48.2", - "@typescript-eslint/type-utils": "5.48.2", - "@typescript-eslint/utils": "5.48.2", - "debug": "^4.3.4", - "ignore": "^5.2.0", - "natural-compare-lite": "^1.4.0", - "regexpp": "^3.2.0", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^5.0.0", - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/parser": { - "version": "5.48.2", - "resolved": "https://registry.npmmirror.com/@typescript-eslint/parser/-/parser-5.48.2.tgz", - "integrity": "sha512-38zMsKsG2sIuM5Oi/olurGwYJXzmtdsHhn5mI/pQogP+BjYVkK5iRazCQ8RGS0V+YLk282uWElN70zAAUmaYHw==", - "dev": true, - "dependencies": { - "@typescript-eslint/scope-manager": "5.48.2", - "@typescript-eslint/types": "5.48.2", - "@typescript-eslint/typescript-estree": "5.48.2", - "debug": "^4.3.4" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "5.48.2", - "resolved": "https://registry.npmmirror.com/@typescript-eslint/scope-manager/-/scope-manager-5.48.2.tgz", - "integrity": "sha512-zEUFfonQid5KRDKoI3O+uP1GnrFd4tIHlvs+sTJXiWuypUWMuDaottkJuR612wQfOkjYbsaskSIURV9xo4f+Fw==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.48.2", - "@typescript-eslint/visitor-keys": "5.48.2" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/@typescript-eslint/type-utils": { - "version": "5.48.2", - "resolved": "https://registry.npmmirror.com/@typescript-eslint/type-utils/-/type-utils-5.48.2.tgz", - "integrity": "sha512-QVWx7J5sPMRiOMJp5dYshPxABRoZV1xbRirqSk8yuIIsu0nvMTZesKErEA3Oix1k+uvsk8Cs8TGJ6kQ0ndAcew==", - "dev": true, - "dependencies": { - "@typescript-eslint/typescript-estree": "5.48.2", - "@typescript-eslint/utils": "5.48.2", - "debug": "^4.3.4", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "peerDependencies": { - "eslint": "*" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/types": { - "version": "5.48.2", - "resolved": "https://registry.npmmirror.com/@typescript-eslint/types/-/types-5.48.2.tgz", - "integrity": "sha512-hE7dA77xxu7ByBc6KCzikgfRyBCTst6dZQpwaTy25iMYOnbNljDT4hjhrGEJJ0QoMjrfqrx+j1l1B9/LtKeuqA==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.48.2", - "resolved": "https://registry.npmmirror.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.48.2.tgz", - "integrity": "sha512-bibvD3z6ilnoVxUBFEgkO0k0aFvUc4Cttt0dAreEr+nrAHhWzkO83PEVVuieK3DqcgL6VAK5dkzK8XUVja5Zcg==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.48.2", - "@typescript-eslint/visitor-keys": "5.48.2", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/utils": { - "version": "5.48.2", - "resolved": "https://registry.npmmirror.com/@typescript-eslint/utils/-/utils-5.48.2.tgz", - "integrity": "sha512-2h18c0d7jgkw6tdKTlNaM7wyopbLRBiit8oAxoP89YnuBOzCZ8g8aBCaCqq7h208qUTroL7Whgzam7UY3HVLow==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.9", - "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.48.2", - "@typescript-eslint/types": "5.48.2", - "@typescript-eslint/typescript-estree": "5.48.2", - "eslint-scope": "^5.1.1", - "eslint-utils": "^3.0.0", - "semver": "^7.3.7" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.48.2", - "resolved": "https://registry.npmmirror.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.48.2.tgz", - "integrity": "sha512-z9njZLSkwmjFWUelGEwEbdf4NwKvfHxvGC0OcGN1Hp/XNDIcJ7D5DpPNPv6x6/mFvc1tQHsaWmpD/a4gOvvCJQ==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.48.2", - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/@vscode/test-electron": { - "version": "2.2.2", - "resolved": "https://registry.npmmirror.com/@vscode/test-electron/-/test-electron-2.2.2.tgz", - "integrity": "sha512-s5d2VtMySvff0UgqkJ0BMCr1es+qREE194EAodGIefq518W53ifvv69e80l9e2MrYJEqUUKwukE/w3H9o15YEw==", - "dev": true, - "dependencies": { - "http-proxy-agent": "^4.0.1", - "https-proxy-agent": "^5.0.0", - "rimraf": "^3.0.2", - "unzipper": "^0.10.11" - }, - "engines": { - "node": ">=16" - } - }, - "node_modules/acorn": { - "version": "8.8.1", - "resolved": "https://registry.npmmirror.com/acorn/-/acorn-8.8.1.tgz", - "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmmirror.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmmirror.com/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dev": true, - "dependencies": { - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmmirror.com/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "node_modules/ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmmirror.com/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmmirror.com/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmmirror.com/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "node_modules/array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmmirror.com/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmmirror.com/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "node_modules/big-integer": { - "version": "1.6.51", - "resolved": "https://registry.npmmirror.com/big-integer/-/big-integer-1.6.51.tgz", - "integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==", - "dev": true, - "engines": { - "node": ">=0.6" - } - }, - "node_modules/binary": { - "version": "0.3.0", - "resolved": "https://registry.npmmirror.com/binary/-/binary-0.3.0.tgz", - "integrity": "sha512-D4H1y5KYwpJgK8wk1Cue5LLPgmwHKYSChkbspQg5JtVuR5ulGckxfR62H3AE9UDkdMC8yyXlqYihuz3Aqg2XZg==", - "dev": true, - "dependencies": { - "buffers": "~0.1.1", - "chainsaw": "~0.1.0" - }, - "engines": { - "node": "*" - } - }, - "node_modules/binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmmirror.com/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/bluebird": { - "version": "3.4.7", - "resolved": "https://registry.npmmirror.com/bluebird/-/bluebird-3.4.7.tgz", - "integrity": "sha512-iD3898SR7sWVRHbiQv+sHUtHnMvC1o3nW5rAcqnq3uOn07DSAppZYUkIGslDz6gXC7HfunPe7YVBgoEJASPcHA==", - "dev": true - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmmirror.com/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/browser-stdout": { - "version": "1.3.1", - "resolved": "https://registry.npmmirror.com/browser-stdout/-/browser-stdout-1.3.1.tgz", - "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", - "dev": true - }, - "node_modules/buffer-indexof-polyfill": { - "version": "1.0.2", - "resolved": "https://registry.npmmirror.com/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.2.tgz", - "integrity": "sha512-I7wzHwA3t1/lwXQh+A5PbNvJxgfo5r3xulgpYDB5zckTu/Z9oUK9biouBKQUjEqzaz3HnAT6TYoovmE+GqSf7A==", - "dev": true, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/buffers": { - "version": "0.1.1", - "resolved": "https://registry.npmmirror.com/buffers/-/buffers-0.1.1.tgz", - "integrity": "sha512-9q/rDEGSb/Qsvv2qvzIzdluL5k7AaJOTrw23z9reQthrbF7is4CtlT0DXyO1oei2DCp4uojjzQ7igaSHp1kAEQ==", - "dev": true, - "engines": { - "node": ">=0.2.0" - } - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmmirror.com/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmmirror.com/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/chainsaw": { - "version": "0.1.0", - "resolved": "https://registry.npmmirror.com/chainsaw/-/chainsaw-0.1.0.tgz", - "integrity": "sha512-75kWfWt6MEKNC8xYXIdRpDehRYY/tNSgwKaJq+dbbDcxORuVrrQ+SEHoWsniVn9XPYfP4gmdWIeDk/4YNp1rNQ==", - "dev": true, - "dependencies": { - "traverse": ">=0.3.0 <0.4" - }, - "engines": { - "node": "*" - } - }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmmirror.com/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "dev": true, - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/chokidar/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmmirror.com/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dev": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmmirror.com/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true - }, - "node_modules/core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmmirror.com/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", - "dev": true - }, - "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/decamelize": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/decamelize/-/decamelize-4.0.0.tgz", - "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmmirror.com/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true - }, - "node_modules/diff": { - "version": "5.0.0", - "resolved": "https://registry.npmmirror.com/diff/-/diff-5.0.0.tgz", - "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", - "dev": true, - "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmmirror.com/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "dependencies": { - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmmirror.com/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/duplexer2": { - "version": "0.1.4", - "resolved": "https://registry.npmmirror.com/duplexer2/-/duplexer2-0.1.4.tgz", - "integrity": "sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==", - "dev": true, - "dependencies": { - "readable-stream": "^2.0.2" - } - }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmmirror.com/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/eslint": { - "version": "8.32.0", - "resolved": "https://registry.npmmirror.com/eslint/-/eslint-8.32.0.tgz", - "integrity": "sha512-nETVXpnthqKPFyuY2FNjz/bEd6nbosRgKbkgS/y1C7LJop96gYHWpiguLecMHQ2XCPxn77DS0P+68WzG6vkZSQ==", - "dev": true, - "dependencies": { - "@eslint/eslintrc": "^1.4.1", - "@humanwhocodes/config-array": "^0.11.8", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.1.1", - "eslint-utils": "^3.0.0", - "eslint-visitor-keys": "^3.3.0", - "espree": "^9.4.0", - "esquery": "^1.4.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "grapheme-splitter": "^1.0.4", - "ignore": "^5.2.0", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-sdsl": "^4.1.4", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "regexpp": "^3.2.0", - "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", - "text-table": "^0.2.0" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmmirror.com/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", - "dev": true, - "dependencies": { - "eslint-visitor-keys": "^2.0.0" - }, - "engines": { - "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" - }, - "peerDependencies": { - "eslint": ">=5" - } - }, - "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmmirror.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://registry.npmmirror.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/eslint/node_modules/eslint-scope": { - "version": "7.1.1", - "resolved": "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-7.1.1.tgz", - "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/eslint/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/espree": { - "version": "9.4.1", - "resolved": "https://registry.npmmirror.com/espree/-/espree-9.4.1.tgz", - "integrity": "sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==", - "dev": true, - "dependencies": { - "acorn": "^8.8.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/esquery": { - "version": "1.4.0", - "resolved": "https://registry.npmmirror.com/esquery/-/esquery-1.4.0.tgz", - "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", - "dev": true, - "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/esquery/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmmirror.com/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esrecurse/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmmirror.com/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmmirror.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "node_modules/fast-glob": { - "version": "3.2.12", - "resolved": "https://registry.npmmirror.com/fast-glob/-/fast-glob-3.2.12.tgz", - "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "node_modules/fast-glob/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmmirror.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmmirror.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true - }, - "node_modules/fastq": { - "version": "1.15.0", - "resolved": "https://registry.npmmirror.com/fastq/-/fastq-1.15.0.tgz", - "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", - "dev": true, - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmmirror.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, - "dependencies": { - "flat-cache": "^3.0.4" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmmirror.com/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmmirror.com/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/flat": { - "version": "5.0.2", - "resolved": "https://registry.npmmirror.com/flat/-/flat-5.0.2.tgz", - "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", - "dev": true, - "bin": { - "flat": "cli.js" - } - }, - "node_modules/flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmmirror.com/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", - "dev": true, - "dependencies": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/flatted": { - "version": "3.2.7", - "resolved": "https://registry.npmmirror.com/flatted/-/flatted-3.2.7.tgz", - "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", - "dev": true - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmmirror.com/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true - }, - "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/fstream": { - "version": "1.0.12", - "resolved": "https://registry.npmmirror.com/fstream/-/fstream-1.0.12.tgz", - "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "inherits": "~2.0.0", - "mkdirp": ">=0.5 0", - "rimraf": "2" - }, - "engines": { - "node": ">=0.6" - } - }, - "node_modules/fstream/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmmirror.com/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - } - }, - "node_modules/fstream/node_modules/rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmmirror.com/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmmirror.com/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true, - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/glob": { - "version": "8.1.0", - "resolved": "https://registry.npmmirror.com/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/glob/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/glob/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/globals": { - "version": "13.19.0", - "resolved": "https://registry.npmmirror.com/globals/-/globals-13.19.0.tgz", - "integrity": "sha512-dkQ957uSRWHw7CFXLUtUHQI3g3aWApYhfNR2O6jn/907riyTYKVBmxYVROkBcY614FSSeSJh7Xm7SrUWCxvJMQ==", - "dev": true, - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmmirror.com/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dev": true, - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmmirror.com/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", - "dev": true - }, - "node_modules/grapheme-splitter": { - "version": "1.0.4", - "resolved": "https://registry.npmmirror.com/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", - "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", - "dev": true - }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/he": { - "version": "1.2.0", - "resolved": "https://registry.npmmirror.com/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "dev": true, - "bin": { - "he": "bin/he" - } - }, - "node_modules/http-proxy-agent": { - "version": "4.0.1", - "resolved": "https://registry.npmmirror.com/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", - "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", - "dev": true, - "dependencies": { - "@tootallnate/once": "1", - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmmirror.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", - "dev": true, - "dependencies": { - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/ignore": { - "version": "5.2.4", - "resolved": "https://registry.npmmirror.com/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmmirror.com/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmmirror.com/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true, - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmmirror.com/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dev": true, - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmmirror.com/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmmirror.com/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmmirror.com/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmmirror.com/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmmirror.com/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmmirror.com/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-plain-obj": { - "version": "2.1.0", - "resolved": "https://registry.npmmirror.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz", - "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmmirror.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmmirror.com/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmmirror.com/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true - }, - "node_modules/js-sdsl": { - "version": "4.2.0", - "resolved": "https://registry.npmmirror.com/js-sdsl/-/js-sdsl-4.2.0.tgz", - "integrity": "sha512-dyBIzQBDkCqCu+0upx25Y2jGdbTGxE9fshMsCdK0ViOongpV+n5tXRcZY9v7CaVQ79AGS9KA1KHtojxiM7aXSQ==", - "dev": true - }, - "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmmirror.com/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmmirror.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true - }, - "node_modules/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmmirror.com/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/listenercount": { - "version": "1.0.1", - "resolved": "https://registry.npmmirror.com/listenercount/-/listenercount-1.0.1.tgz", - "integrity": "sha512-3mk/Zag0+IJxeDrxSgaDPy4zZ3w05PRZeJNnlWhzFz5OkX49J4krc+A8X2d2M69vGMBEX0uyl8M+W+8gH+kBqQ==", - "dev": true - }, - "node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmmirror.com/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmmirror.com/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true - }, - "node_modules/log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmmirror.com/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "dev": true, - "dependencies": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmmirror.com/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmmirror.com/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, - "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minimist": { - "version": "1.2.7", - "resolved": "https://registry.npmmirror.com/minimist/-/minimist-1.2.7.tgz", - "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", - "dev": true - }, - "node_modules/mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmmirror.com/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dev": true, - "dependencies": { - "minimist": "^1.2.6" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/mocha": { - "version": "10.2.0", - "resolved": "https://registry.npmmirror.com/mocha/-/mocha-10.2.0.tgz", - "integrity": "sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg==", - "dev": true, - "dependencies": { - "ansi-colors": "4.1.1", - "browser-stdout": "1.3.1", - "chokidar": "3.5.3", - "debug": "4.3.4", - "diff": "5.0.0", - "escape-string-regexp": "4.0.0", - "find-up": "5.0.0", - "glob": "7.2.0", - "he": "1.2.0", - "js-yaml": "4.1.0", - "log-symbols": "4.1.0", - "minimatch": "5.0.1", - "ms": "2.1.3", - "nanoid": "3.3.3", - "serialize-javascript": "6.0.0", - "strip-json-comments": "3.1.1", - "supports-color": "8.1.1", - "workerpool": "6.2.1", - "yargs": "16.2.0", - "yargs-parser": "20.2.4", - "yargs-unparser": "2.0.0" - }, - "bin": { - "_mocha": "bin/_mocha", - "mocha": "bin/mocha.js" - }, - "engines": { - "node": ">= 14.0.0" - } - }, - "node_modules/mocha/node_modules/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmmirror.com/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - } - }, - "node_modules/mocha/node_modules/glob/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/mocha/node_modules/minimatch": { - "version": "5.0.1", - "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-5.0.1.tgz", - "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/mocha/node_modules/minimatch/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/mocha/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - }, - "node_modules/mocha/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/nanoid": { - "version": "3.3.3", - "resolved": "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.3.tgz", - "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==", - "dev": true, - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmmirror.com/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true - }, - "node_modules/natural-compare-lite": { - "version": "1.4.0", - "resolved": "https://registry.npmmirror.com/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", - "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", - "dev": true - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmmirror.com/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmmirror.com/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmmirror.com/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", - "dev": true, - "dependencies": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmmirror.com/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmmirror.com/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmmirror.com/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmmirror.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmmirror.com/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmmirror.com/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmmirror.com/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmmirror.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true - }, - "node_modules/punycode": { - "version": "2.2.0", - "resolved": "https://registry.npmmirror.com/punycode/-/punycode-2.2.0.tgz", - "integrity": "sha512-LN6QV1IJ9ZhxWTNdktaPClrNfp8xdSAYS0Zk2ddX7XsXZAxckMHPCBcHRo0cTcEIgYPRiGEkmji3Idkh2yFtYw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmmirror.com/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true - }, - "node_modules/randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmmirror.com/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, - "dependencies": { - "safe-buffer": "^5.1.0" - } - }, - "node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/readable-stream/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmmirror.com/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmmirror.com/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmmirror.com/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmmirror.com/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true, - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmmirror.com/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, - "node_modules/rimraf/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmmirror.com/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - } - }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmmirror.com/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true - }, - "node_modules/semver": { - "version": "7.3.8", - "resolved": "https://registry.npmmirror.com/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/serialize-javascript": { - "version": "6.0.0", - "resolved": "https://registry.npmmirror.com/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", - "dev": true, - "dependencies": { - "randombytes": "^2.1.0" - } - }, - "node_modules/setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmmirror.com/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", - "dev": true - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmmirror.com/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmmirror.com/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmmirror.com/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/string_decoder/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmmirror.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmmirror.com/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmmirror.com/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/traverse": { - "version": "0.3.9", - "resolved": "https://registry.npmmirror.com/traverse/-/traverse-0.3.9.tgz", - "integrity": "sha512-iawgk0hLP3SxGKDfnDJf8wTz4p2qImnyihM5Hh/sGvQ3K37dPi/w8sRhdNIxYA1TwFwc5mDhIJq+O0RsvXBKdQ==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmmirror.com/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, - "node_modules/tsutils": { - "version": "3.21.0", - "resolved": "https://registry.npmmirror.com/tsutils/-/tsutils-3.21.0.tgz", - "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", - "dev": true, - "dependencies": { - "tslib": "^1.8.1" - }, - "engines": { - "node": ">= 6" - }, - "peerDependencies": { - "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" - } - }, - "node_modules/type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmmirror.com/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "dependencies": { - "prelude-ls": "^1.2.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmmirror.com/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/typescript": { - "version": "4.9.4", - "resolved": "https://registry.npmmirror.com/typescript/-/typescript-4.9.4.tgz", - "integrity": "sha512-Uz+dTXYzxXXbsFpM86Wh3dKCxrQqUcVMxwU54orwlJjOpO3ao8L7j5lH+dWfTwgCwIuM9GQ2kvVotzYJMXTBZg==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, - "node_modules/unzipper": { - "version": "0.10.11", - "resolved": "https://registry.npmmirror.com/unzipper/-/unzipper-0.10.11.tgz", - "integrity": "sha512-+BrAq2oFqWod5IESRjL3S8baohbevGcVA+teAIOYWM3pDVdseogqbzhhvvmiyQrUNKFUnDMtELW3X8ykbyDCJw==", - "dev": true, - "dependencies": { - "big-integer": "^1.6.17", - "binary": "~0.3.0", - "bluebird": "~3.4.1", - "buffer-indexof-polyfill": "~1.0.0", - "duplexer2": "~0.1.4", - "fstream": "^1.0.12", - "graceful-fs": "^4.2.2", - "listenercount": "~1.0.1", - "readable-stream": "~2.3.6", - "setimmediate": "~1.0.4" - } - }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmmirror.com/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmmirror.com/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true - }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmmirror.com/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmmirror.com/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/workerpool": { - "version": "6.2.1", - "resolved": "https://registry.npmmirror.com/workerpool/-/workerpool-6.2.1.tgz", - "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==", - "dev": true - }, - "node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmmirror.com/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true - }, - "node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmmirror.com/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "node_modules/yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmmirror.com/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "dev": true, - "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/yargs-parser": { - "version": "20.2.4", - "resolved": "https://registry.npmmirror.com/yargs-parser/-/yargs-parser-20.2.4.tgz", - "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/yargs-unparser": { - "version": "2.0.0", - "resolved": "https://registry.npmmirror.com/yargs-unparser/-/yargs-unparser-2.0.0.tgz", - "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", - "dev": true, - "dependencies": { - "camelcase": "^6.0.0", - "decamelize": "^4.0.0", - "flat": "^5.0.2", - "is-plain-obj": "^2.1.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmmirror.com/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, - "engines": { - "node": ">=10" - } - } - }, - "dependencies": { - "@eslint/eslintrc": { - "version": "1.4.1", - "resolved": "https://registry.npmmirror.com/@eslint/eslintrc/-/eslintrc-1.4.1.tgz", - "integrity": "sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA==", - "dev": true, - "requires": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.4.0", - "globals": "^13.19.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - } - }, - "@humanwhocodes/config-array": { - "version": "0.11.8", - "resolved": "https://registry.npmmirror.com/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", - "integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==", - "dev": true, - "requires": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", - "minimatch": "^3.0.5" - } - }, - "@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmmirror.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "dev": true - }, - "@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmmirror.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", - "dev": true - }, - "@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmmirror.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "requires": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - } - }, - "@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmmirror.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true - }, - "@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmmirror.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "requires": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - } - }, - "@tootallnate/once": { - "version": "1.1.2", - "resolved": "https://registry.npmmirror.com/@tootallnate/once/-/once-1.1.2.tgz", - "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", - "dev": true - }, - "@types/glob": { - "version": "8.0.0", - "resolved": "https://registry.npmmirror.com/@types/glob/-/glob-8.0.0.tgz", - "integrity": "sha512-l6NQsDDyQUVeoTynNpC9uRvCUint/gSUXQA2euwmTuWGvPY5LSDUu6tkCtJB2SvGQlJQzLaKqcGZP4//7EDveA==", - "dev": true, - "requires": { - "@types/minimatch": "*", - "@types/node": "*" - } - }, - "@types/json-schema": { - "version": "7.0.11", - "resolved": "https://registry.npmmirror.com/@types/json-schema/-/json-schema-7.0.11.tgz", - "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", - "dev": true - }, - "@types/minimatch": { - "version": "5.1.2", - "resolved": "https://registry.npmmirror.com/@types/minimatch/-/minimatch-5.1.2.tgz", - "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==", - "dev": true - }, - "@types/mocha": { - "version": "10.0.1", - "resolved": "https://registry.npmmirror.com/@types/mocha/-/mocha-10.0.1.tgz", - "integrity": "sha512-/fvYntiO1GeICvqbQ3doGDIP97vWmvFt83GKguJ6prmQM2iXZfFcq6YE8KteFyRtX2/h5Hf91BYvPodJKFYv5Q==", - "dev": true - }, - "@types/node": { - "version": "16.18.11", - "resolved": "https://registry.npmmirror.com/@types/node/-/node-16.18.11.tgz", - "integrity": "sha512-3oJbGBUWuS6ahSnEq1eN2XrCyf4YsWI8OyCvo7c64zQJNplk3mO84t53o8lfTk+2ji59g5ycfc6qQ3fdHliHuA==", - "dev": true - }, - "@types/semver": { - "version": "7.3.13", - "resolved": "https://registry.npmmirror.com/@types/semver/-/semver-7.3.13.tgz", - "integrity": "sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==", - "dev": true - }, - "@types/vscode": { - "version": "1.74.0", - "resolved": "https://registry.npmmirror.com/@types/vscode/-/vscode-1.74.0.tgz", - "integrity": "sha512-LyeCIU3jb9d38w0MXFwta9r0Jx23ugujkAxdwLTNCyspdZTKUc43t7ppPbCiPoQ/Ivd/pnDFZrb4hWd45wrsgA==", - "dev": true - }, - "@typescript-eslint/eslint-plugin": { - "version": "5.48.2", - "resolved": "https://registry.npmmirror.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.48.2.tgz", - "integrity": "sha512-sR0Gja9Ky1teIq4qJOl0nC+Tk64/uYdX+mi+5iB//MH8gwyx8e3SOyhEzeLZEFEEfCaLf8KJq+Bd/6je1t+CAg==", - "dev": true, - "requires": { - "@typescript-eslint/scope-manager": "5.48.2", - "@typescript-eslint/type-utils": "5.48.2", - "@typescript-eslint/utils": "5.48.2", - "debug": "^4.3.4", - "ignore": "^5.2.0", - "natural-compare-lite": "^1.4.0", - "regexpp": "^3.2.0", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - } - }, - "@typescript-eslint/parser": { - "version": "5.48.2", - "resolved": "https://registry.npmmirror.com/@typescript-eslint/parser/-/parser-5.48.2.tgz", - "integrity": "sha512-38zMsKsG2sIuM5Oi/olurGwYJXzmtdsHhn5mI/pQogP+BjYVkK5iRazCQ8RGS0V+YLk282uWElN70zAAUmaYHw==", - "dev": true, - "requires": { - "@typescript-eslint/scope-manager": "5.48.2", - "@typescript-eslint/types": "5.48.2", - "@typescript-eslint/typescript-estree": "5.48.2", - "debug": "^4.3.4" - } - }, - "@typescript-eslint/scope-manager": { - "version": "5.48.2", - "resolved": "https://registry.npmmirror.com/@typescript-eslint/scope-manager/-/scope-manager-5.48.2.tgz", - "integrity": "sha512-zEUFfonQid5KRDKoI3O+uP1GnrFd4tIHlvs+sTJXiWuypUWMuDaottkJuR612wQfOkjYbsaskSIURV9xo4f+Fw==", - "dev": true, - "requires": { - "@typescript-eslint/types": "5.48.2", - "@typescript-eslint/visitor-keys": "5.48.2" - } - }, - "@typescript-eslint/type-utils": { - "version": "5.48.2", - "resolved": "https://registry.npmmirror.com/@typescript-eslint/type-utils/-/type-utils-5.48.2.tgz", - "integrity": "sha512-QVWx7J5sPMRiOMJp5dYshPxABRoZV1xbRirqSk8yuIIsu0nvMTZesKErEA3Oix1k+uvsk8Cs8TGJ6kQ0ndAcew==", - "dev": true, - "requires": { - "@typescript-eslint/typescript-estree": "5.48.2", - "@typescript-eslint/utils": "5.48.2", - "debug": "^4.3.4", - "tsutils": "^3.21.0" - } - }, - "@typescript-eslint/types": { - "version": "5.48.2", - "resolved": "https://registry.npmmirror.com/@typescript-eslint/types/-/types-5.48.2.tgz", - "integrity": "sha512-hE7dA77xxu7ByBc6KCzikgfRyBCTst6dZQpwaTy25iMYOnbNljDT4hjhrGEJJ0QoMjrfqrx+j1l1B9/LtKeuqA==", - "dev": true - }, - "@typescript-eslint/typescript-estree": { - "version": "5.48.2", - "resolved": "https://registry.npmmirror.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.48.2.tgz", - "integrity": "sha512-bibvD3z6ilnoVxUBFEgkO0k0aFvUc4Cttt0dAreEr+nrAHhWzkO83PEVVuieK3DqcgL6VAK5dkzK8XUVja5Zcg==", - "dev": true, - "requires": { - "@typescript-eslint/types": "5.48.2", - "@typescript-eslint/visitor-keys": "5.48.2", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - } - }, - "@typescript-eslint/utils": { - "version": "5.48.2", - "resolved": "https://registry.npmmirror.com/@typescript-eslint/utils/-/utils-5.48.2.tgz", - "integrity": "sha512-2h18c0d7jgkw6tdKTlNaM7wyopbLRBiit8oAxoP89YnuBOzCZ8g8aBCaCqq7h208qUTroL7Whgzam7UY3HVLow==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.9", - "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.48.2", - "@typescript-eslint/types": "5.48.2", - "@typescript-eslint/typescript-estree": "5.48.2", - "eslint-scope": "^5.1.1", - "eslint-utils": "^3.0.0", - "semver": "^7.3.7" - } - }, - "@typescript-eslint/visitor-keys": { - "version": "5.48.2", - "resolved": "https://registry.npmmirror.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.48.2.tgz", - "integrity": "sha512-z9njZLSkwmjFWUelGEwEbdf4NwKvfHxvGC0OcGN1Hp/XNDIcJ7D5DpPNPv6x6/mFvc1tQHsaWmpD/a4gOvvCJQ==", - "dev": true, - "requires": { - "@typescript-eslint/types": "5.48.2", - "eslint-visitor-keys": "^3.3.0" - } - }, - "@vscode/test-electron": { - "version": "2.2.2", - "resolved": "https://registry.npmmirror.com/@vscode/test-electron/-/test-electron-2.2.2.tgz", - "integrity": "sha512-s5d2VtMySvff0UgqkJ0BMCr1es+qREE194EAodGIefq518W53ifvv69e80l9e2MrYJEqUUKwukE/w3H9o15YEw==", - "dev": true, - "requires": { - "http-proxy-agent": "^4.0.1", - "https-proxy-agent": "^5.0.0", - "rimraf": "^3.0.2", - "unzipper": "^0.10.11" - } - }, - "acorn": { - "version": "8.8.1", - "resolved": "https://registry.npmmirror.com/acorn/-/acorn-8.8.1.tgz", - "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==", - "dev": true - }, - "acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmmirror.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "requires": {} - }, - "agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmmirror.com/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dev": true, - "requires": { - "debug": "4" - } - }, - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmmirror.com/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmmirror.com/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "dev": true - }, - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmmirror.com/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmmirror.com/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmmirror.com/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true - }, - "balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmmirror.com/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "big-integer": { - "version": "1.6.51", - "resolved": "https://registry.npmmirror.com/big-integer/-/big-integer-1.6.51.tgz", - "integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==", - "dev": true - }, - "binary": { - "version": "0.3.0", - "resolved": "https://registry.npmmirror.com/binary/-/binary-0.3.0.tgz", - "integrity": "sha512-D4H1y5KYwpJgK8wk1Cue5LLPgmwHKYSChkbspQg5JtVuR5ulGckxfR62H3AE9UDkdMC8yyXlqYihuz3Aqg2XZg==", - "dev": true, - "requires": { - "buffers": "~0.1.1", - "chainsaw": "~0.1.0" - } - }, - "binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmmirror.com/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true - }, - "bluebird": { - "version": "3.4.7", - "resolved": "https://registry.npmmirror.com/bluebird/-/bluebird-3.4.7.tgz", - "integrity": "sha512-iD3898SR7sWVRHbiQv+sHUtHnMvC1o3nW5rAcqnq3uOn07DSAppZYUkIGslDz6gXC7HfunPe7YVBgoEJASPcHA==", - "dev": true - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmmirror.com/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "requires": { - "fill-range": "^7.0.1" - } - }, - "browser-stdout": { - "version": "1.3.1", - "resolved": "https://registry.npmmirror.com/browser-stdout/-/browser-stdout-1.3.1.tgz", - "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", - "dev": true - }, - "buffer-indexof-polyfill": { - "version": "1.0.2", - "resolved": "https://registry.npmmirror.com/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.2.tgz", - "integrity": "sha512-I7wzHwA3t1/lwXQh+A5PbNvJxgfo5r3xulgpYDB5zckTu/Z9oUK9biouBKQUjEqzaz3HnAT6TYoovmE+GqSf7A==", - "dev": true - }, - "buffers": { - "version": "0.1.1", - "resolved": "https://registry.npmmirror.com/buffers/-/buffers-0.1.1.tgz", - "integrity": "sha512-9q/rDEGSb/Qsvv2qvzIzdluL5k7AaJOTrw23z9reQthrbF7is4CtlT0DXyO1oei2DCp4uojjzQ7igaSHp1kAEQ==", - "dev": true - }, - "callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmmirror.com/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true - }, - "camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmmirror.com/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true - }, - "chainsaw": { - "version": "0.1.0", - "resolved": "https://registry.npmmirror.com/chainsaw/-/chainsaw-0.1.0.tgz", - "integrity": "sha512-75kWfWt6MEKNC8xYXIdRpDehRYY/tNSgwKaJq+dbbDcxORuVrrQ+SEHoWsniVn9XPYfP4gmdWIeDk/4YNp1rNQ==", - "dev": true, - "requires": { - "traverse": ">=0.3.0 <0.4" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmmirror.com/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "dev": true, - "requires": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "fsevents": "~2.3.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "dependencies": { - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "requires": { - "is-glob": "^4.0.1" - } - } - } - }, - "cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmmirror.com/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dev": true, - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmmirror.com/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true - }, - "core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmmirror.com/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", - "dev": true - }, - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "decamelize": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/decamelize/-/decamelize-4.0.0.tgz", - "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", - "dev": true - }, - "deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmmirror.com/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true - }, - "diff": { - "version": "5.0.0", - "resolved": "https://registry.npmmirror.com/diff/-/diff-5.0.0.tgz", - "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", - "dev": true - }, - "dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmmirror.com/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "requires": { - "path-type": "^4.0.0" - } - }, - "doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmmirror.com/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "requires": { - "esutils": "^2.0.2" - } - }, - "duplexer2": { - "version": "0.1.4", - "resolved": "https://registry.npmmirror.com/duplexer2/-/duplexer2-0.1.4.tgz", - "integrity": "sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==", - "dev": true, - "requires": { - "readable-stream": "^2.0.2" - } - }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmmirror.com/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true - }, - "escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true - }, - "eslint": { - "version": "8.32.0", - "resolved": "https://registry.npmmirror.com/eslint/-/eslint-8.32.0.tgz", - "integrity": "sha512-nETVXpnthqKPFyuY2FNjz/bEd6nbosRgKbkgS/y1C7LJop96gYHWpiguLecMHQ2XCPxn77DS0P+68WzG6vkZSQ==", - "dev": true, - "requires": { - "@eslint/eslintrc": "^1.4.1", - "@humanwhocodes/config-array": "^0.11.8", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.1.1", - "eslint-utils": "^3.0.0", - "eslint-visitor-keys": "^3.3.0", - "espree": "^9.4.0", - "esquery": "^1.4.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "grapheme-splitter": "^1.0.4", - "ignore": "^5.2.0", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-sdsl": "^4.1.4", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "regexpp": "^3.2.0", - "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", - "text-table": "^0.2.0" - }, - "dependencies": { - "eslint-scope": { - "version": "7.1.1", - "resolved": "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-7.1.1.tgz", - "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", - "dev": true, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - } - }, - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - } - } - }, - "eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - } - }, - "eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmmirror.com/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", - "dev": true, - "requires": { - "eslint-visitor-keys": "^2.0.0" - }, - "dependencies": { - "eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmmirror.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true - } - } - }, - "eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://registry.npmmirror.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", - "dev": true - }, - "espree": { - "version": "9.4.1", - "resolved": "https://registry.npmmirror.com/espree/-/espree-9.4.1.tgz", - "integrity": "sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==", - "dev": true, - "requires": { - "acorn": "^8.8.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.3.0" - } - }, - "esquery": { - "version": "1.4.0", - "resolved": "https://registry.npmmirror.com/esquery/-/esquery-1.4.0.tgz", - "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", - "dev": true, - "requires": { - "estraverse": "^5.1.0" - }, - "dependencies": { - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - } - } - }, - "esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmmirror.com/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "requires": { - "estraverse": "^5.2.0" - }, - "dependencies": { - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - } - } - }, - "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true - }, - "esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmmirror.com/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true - }, - "fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmmirror.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "fast-glob": { - "version": "3.2.12", - "resolved": "https://registry.npmmirror.com/fast-glob/-/fast-glob-3.2.12.tgz", - "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", - "dev": true, - "requires": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "dependencies": { - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "requires": { - "is-glob": "^4.0.1" - } - } - } - }, - "fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmmirror.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmmirror.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true - }, - "fastq": { - "version": "1.15.0", - "resolved": "https://registry.npmmirror.com/fastq/-/fastq-1.15.0.tgz", - "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", - "dev": true, - "requires": { - "reusify": "^1.0.4" - } - }, - "file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmmirror.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, - "requires": { - "flat-cache": "^3.0.4" - } - }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmmirror.com/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmmirror.com/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "requires": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - } - }, - "flat": { - "version": "5.0.2", - "resolved": "https://registry.npmmirror.com/flat/-/flat-5.0.2.tgz", - "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", - "dev": true - }, - "flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmmirror.com/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", - "dev": true, - "requires": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" - } - }, - "flatted": { - "version": "3.2.7", - "resolved": "https://registry.npmmirror.com/flatted/-/flatted-3.2.7.tgz", - "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", - "dev": true - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmmirror.com/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true - }, - "fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "optional": true - }, - "fstream": { - "version": "1.0.12", - "resolved": "https://registry.npmmirror.com/fstream/-/fstream-1.0.12.tgz", - "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "inherits": "~2.0.0", - "mkdirp": ">=0.5 0", - "rimraf": "2" - }, - "dependencies": { - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmmirror.com/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmmirror.com/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - } - } - }, - "get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmmirror.com/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true - }, - "glob": { - "version": "8.1.0", - "resolved": "https://registry.npmmirror.com/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - }, - "dependencies": { - "brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0" - } - }, - "minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", - "dev": true, - "requires": { - "brace-expansion": "^2.0.1" - } - } - } - }, - "glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "requires": { - "is-glob": "^4.0.3" - } - }, - "globals": { - "version": "13.19.0", - "resolved": "https://registry.npmmirror.com/globals/-/globals-13.19.0.tgz", - "integrity": "sha512-dkQ957uSRWHw7CFXLUtUHQI3g3aWApYhfNR2O6jn/907riyTYKVBmxYVROkBcY614FSSeSJh7Xm7SrUWCxvJMQ==", - "dev": true, - "requires": { - "type-fest": "^0.20.2" - } - }, - "globby": { - "version": "11.1.0", - "resolved": "https://registry.npmmirror.com/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dev": true, - "requires": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - } - }, - "graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmmirror.com/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", - "dev": true - }, - "grapheme-splitter": { - "version": "1.0.4", - "resolved": "https://registry.npmmirror.com/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", - "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "he": { - "version": "1.2.0", - "resolved": "https://registry.npmmirror.com/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "dev": true - }, - "http-proxy-agent": { - "version": "4.0.1", - "resolved": "https://registry.npmmirror.com/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", - "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", - "dev": true, - "requires": { - "@tootallnate/once": "1", - "agent-base": "6", - "debug": "4" - } - }, - "https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmmirror.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", - "dev": true, - "requires": { - "agent-base": "6", - "debug": "4" - } - }, - "ignore": { - "version": "5.2.4", - "resolved": "https://registry.npmmirror.com/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", - "dev": true - }, - "import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmmirror.com/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - } - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmmirror.com/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmmirror.com/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dev": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmmirror.com/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmmirror.com/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "requires": { - "binary-extensions": "^2.0.0" - } - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmmirror.com/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmmirror.com/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmmirror.com/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true - }, - "is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmmirror.com/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true - }, - "is-plain-obj": { - "version": "2.1.0", - "resolved": "https://registry.npmmirror.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz", - "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", - "dev": true - }, - "is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmmirror.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "dev": true - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmmirror.com/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmmirror.com/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true - }, - "js-sdsl": { - "version": "4.2.0", - "resolved": "https://registry.npmmirror.com/js-sdsl/-/js-sdsl-4.2.0.tgz", - "integrity": "sha512-dyBIzQBDkCqCu+0upx25Y2jGdbTGxE9fshMsCdK0ViOongpV+n5tXRcZY9v7CaVQ79AGS9KA1KHtojxiM7aXSQ==", - "dev": true - }, - "js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmmirror.com/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "requires": { - "argparse": "^2.0.1" - } - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmmirror.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true - }, - "levn": { - "version": "0.4.1", - "resolved": "https://registry.npmmirror.com/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "requires": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - } - }, - "listenercount": { - "version": "1.0.1", - "resolved": "https://registry.npmmirror.com/listenercount/-/listenercount-1.0.1.tgz", - "integrity": "sha512-3mk/Zag0+IJxeDrxSgaDPy4zZ3w05PRZeJNnlWhzFz5OkX49J4krc+A8X2d2M69vGMBEX0uyl8M+W+8gH+kBqQ==", - "dev": true - }, - "locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmmirror.com/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "requires": { - "p-locate": "^5.0.0" - } - }, - "lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmmirror.com/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true - }, - "log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmmirror.com/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "dev": true, - "requires": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - } - }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmmirror.com/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true - }, - "micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmmirror.com/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, - "requires": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - } - }, - "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "1.2.7", - "resolved": "https://registry.npmmirror.com/minimist/-/minimist-1.2.7.tgz", - "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", - "dev": true - }, - "mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmmirror.com/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dev": true, - "requires": { - "minimist": "^1.2.6" - } - }, - "mocha": { - "version": "10.2.0", - "resolved": "https://registry.npmmirror.com/mocha/-/mocha-10.2.0.tgz", - "integrity": "sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg==", - "dev": true, - "requires": { - "ansi-colors": "4.1.1", - "browser-stdout": "1.3.1", - "chokidar": "3.5.3", - "debug": "4.3.4", - "diff": "5.0.0", - "escape-string-regexp": "4.0.0", - "find-up": "5.0.0", - "glob": "7.2.0", - "he": "1.2.0", - "js-yaml": "4.1.0", - "log-symbols": "4.1.0", - "minimatch": "5.0.1", - "ms": "2.1.3", - "nanoid": "3.3.3", - "serialize-javascript": "6.0.0", - "strip-json-comments": "3.1.1", - "supports-color": "8.1.1", - "workerpool": "6.2.1", - "yargs": "16.2.0", - "yargs-parser": "20.2.4", - "yargs-unparser": "2.0.0" - }, - "dependencies": { - "glob": { - "version": "7.2.0", - "resolved": "https://registry.npmmirror.com/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "dependencies": { - "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } + "name": "digital-ide", + "version": "0.3.0", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "digital-ide", + "version": "0.3.0", + "dependencies": { + "chokidar": "^3.5.3", + "puppeteer-core": "^19.4.1", + "showdown": "^2.1.0", + "state-machine-cat": "^9.2.5", + "temp": "^0.9.4", + "wavedrom": "^2.9.1" + }, + "devDependencies": { + "@types/glob": "^8.0.0", + "@types/mocha": "^10.0.0", + "@types/node": "16.x", + "@types/showdown": "^2.0.0", + "@types/vscode": "^1.74.0", + "@typescript-eslint/eslint-plugin": "^5.42.0", + "@typescript-eslint/parser": "^5.42.0", + "@vscode/test-electron": "^2.2.0", + "eslint": "^8.26.0", + "glob": "^8.0.3", + "mocha": "^10.1.0", + "typescript": "^4.8.4" + }, + "engines": { + "vscode": "^1.72.0" } - } }, - "minimatch": { - "version": "5.0.1", - "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-5.0.1.tgz", - "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", - "dev": true, - "requires": { - "brace-expansion": "^2.0.1" - }, - "dependencies": { - "brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "requires": { + "node_modules/@eslint/eslintrc": { + "version": "1.4.1", + "resolved": "https://registry.npmmirror.com/@eslint/eslintrc/-/eslintrc-1.4.1.tgz", + "integrity": "sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.4.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.8", + "resolved": "https://registry.npmmirror.com/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", + "integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "engines": { + "node": ">=12.22" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmmirror.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmmirror.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmmirror.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@tootallnate/once": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/@tootallnate/once/-/once-1.1.2.tgz", + "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@types/glob": { + "version": "8.0.0", + "resolved": "https://registry.npmmirror.com/@types/glob/-/glob-8.0.0.tgz", + "integrity": "sha512-l6NQsDDyQUVeoTynNpC9uRvCUint/gSUXQA2euwmTuWGvPY5LSDUu6tkCtJB2SvGQlJQzLaKqcGZP4//7EDveA==", + "dev": true, + "dependencies": { + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.11", + "resolved": "https://registry.npmmirror.com/@types/json-schema/-/json-schema-7.0.11.tgz", + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", + "dev": true + }, + "node_modules/@types/minimatch": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/@types/minimatch/-/minimatch-5.1.2.tgz", + "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==", + "dev": true + }, + "node_modules/@types/mocha": { + "version": "10.0.1", + "resolved": "https://registry.npmmirror.com/@types/mocha/-/mocha-10.0.1.tgz", + "integrity": "sha512-/fvYntiO1GeICvqbQ3doGDIP97vWmvFt83GKguJ6prmQM2iXZfFcq6YE8KteFyRtX2/h5Hf91BYvPodJKFYv5Q==", + "dev": true + }, + "node_modules/@types/node": { + "version": "16.18.11", + "resolved": "https://registry.npmmirror.com/@types/node/-/node-16.18.11.tgz", + "integrity": "sha512-3oJbGBUWuS6ahSnEq1eN2XrCyf4YsWI8OyCvo7c64zQJNplk3mO84t53o8lfTk+2ji59g5ycfc6qQ3fdHliHuA==", + "devOptional": true + }, + "node_modules/@types/semver": { + "version": "7.3.13", + "resolved": "https://registry.npmmirror.com/@types/semver/-/semver-7.3.13.tgz", + "integrity": "sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==", + "dev": true + }, + "node_modules/@types/showdown": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/@types/showdown/-/showdown-2.0.0.tgz", + "integrity": "sha512-70xBJoLv+oXjB5PhtA8vo7erjLDp9/qqI63SRHm4REKrwuPOLs8HhXwlZJBJaB4kC18cCZ1UUZ6Fb/PLFW4TCA==", + "dev": true + }, + "node_modules/@types/vscode": { + "version": "1.74.0", + "resolved": "https://registry.npmmirror.com/@types/vscode/-/vscode-1.74.0.tgz", + "integrity": "sha512-LyeCIU3jb9d38w0MXFwta9r0Jx23ugujkAxdwLTNCyspdZTKUc43t7ppPbCiPoQ/Ivd/pnDFZrb4hWd45wrsgA==", + "dev": true + }, + "node_modules/@types/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmmirror.com/@types/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==", + "optional": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "5.48.2", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.48.2.tgz", + "integrity": "sha512-sR0Gja9Ky1teIq4qJOl0nC+Tk64/uYdX+mi+5iB//MH8gwyx8e3SOyhEzeLZEFEEfCaLf8KJq+Bd/6je1t+CAg==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "5.48.2", + "@typescript-eslint/type-utils": "5.48.2", + "@typescript-eslint/utils": "5.48.2", + "debug": "^4.3.4", + "ignore": "^5.2.0", + "natural-compare-lite": "^1.4.0", + "regexpp": "^3.2.0", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^5.0.0", + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "5.48.2", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/parser/-/parser-5.48.2.tgz", + "integrity": "sha512-38zMsKsG2sIuM5Oi/olurGwYJXzmtdsHhn5mI/pQogP+BjYVkK5iRazCQ8RGS0V+YLk282uWElN70zAAUmaYHw==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "5.48.2", + "@typescript-eslint/types": "5.48.2", + "@typescript-eslint/typescript-estree": "5.48.2", + "debug": "^4.3.4" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "5.48.2", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/scope-manager/-/scope-manager-5.48.2.tgz", + "integrity": "sha512-zEUFfonQid5KRDKoI3O+uP1GnrFd4tIHlvs+sTJXiWuypUWMuDaottkJuR612wQfOkjYbsaskSIURV9xo4f+Fw==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.48.2", + "@typescript-eslint/visitor-keys": "5.48.2" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "5.48.2", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/type-utils/-/type-utils-5.48.2.tgz", + "integrity": "sha512-QVWx7J5sPMRiOMJp5dYshPxABRoZV1xbRirqSk8yuIIsu0nvMTZesKErEA3Oix1k+uvsk8Cs8TGJ6kQ0ndAcew==", + "dev": true, + "dependencies": { + "@typescript-eslint/typescript-estree": "5.48.2", + "@typescript-eslint/utils": "5.48.2", + "debug": "^4.3.4", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/types": { + "version": "5.48.2", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/types/-/types-5.48.2.tgz", + "integrity": "sha512-hE7dA77xxu7ByBc6KCzikgfRyBCTst6dZQpwaTy25iMYOnbNljDT4hjhrGEJJ0QoMjrfqrx+j1l1B9/LtKeuqA==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "5.48.2", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.48.2.tgz", + "integrity": "sha512-bibvD3z6ilnoVxUBFEgkO0k0aFvUc4Cttt0dAreEr+nrAHhWzkO83PEVVuieK3DqcgL6VAK5dkzK8XUVja5Zcg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.48.2", + "@typescript-eslint/visitor-keys": "5.48.2", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "5.48.2", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/utils/-/utils-5.48.2.tgz", + "integrity": "sha512-2h18c0d7jgkw6tdKTlNaM7wyopbLRBiit8oAxoP89YnuBOzCZ8g8aBCaCqq7h208qUTroL7Whgzam7UY3HVLow==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.48.2", + "@typescript-eslint/types": "5.48.2", + "@typescript-eslint/typescript-estree": "5.48.2", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0", + "semver": "^7.3.7" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "5.48.2", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.48.2.tgz", + "integrity": "sha512-z9njZLSkwmjFWUelGEwEbdf4NwKvfHxvGC0OcGN1Hp/XNDIcJ7D5DpPNPv6x6/mFvc1tQHsaWmpD/a4gOvvCJQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.48.2", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@vscode/test-electron": { + "version": "2.2.2", + "resolved": "https://registry.npmmirror.com/@vscode/test-electron/-/test-electron-2.2.2.tgz", + "integrity": "sha512-s5d2VtMySvff0UgqkJ0BMCr1es+qREE194EAodGIefq518W53ifvv69e80l9e2MrYJEqUUKwukE/w3H9o15YEw==", + "dev": true, + "dependencies": { + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "rimraf": "^3.0.2", + "unzipper": "^0.10.11" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/acorn": { + "version": "8.8.1", + "resolved": "https://registry.npmmirror.com/acorn/-/acorn-8.8.1.tgz", + "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmmirror.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmmirror.com/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmmirror.com/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "node_modules/ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmmirror.com/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmmirror.com/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmmirror.com/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" + }, + "node_modules/big-integer": { + "version": "1.6.51", + "resolved": "https://registry.npmmirror.com/big-integer/-/big-integer-1.6.51.tgz", + "integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/binary": { + "version": "0.3.0", + "resolved": "https://registry.npmmirror.com/binary/-/binary-0.3.0.tgz", + "integrity": "sha512-D4H1y5KYwpJgK8wk1Cue5LLPgmwHKYSChkbspQg5JtVuR5ulGckxfR62H3AE9UDkdMC8yyXlqYihuz3Aqg2XZg==", + "dev": true, + "dependencies": { + "buffers": "~0.1.1", + "chainsaw": "~0.1.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/bit-field": { + "version": "1.7.0", + "resolved": "https://registry.npmmirror.com/bit-field/-/bit-field-1.7.0.tgz", + "integrity": "sha512-JydkgvuMioH3Oe3mnnHFVHGBzGZJIph98d1IpotpJ7svjGmkQf8uR9k0LAY/mPEphaq+nSIrgzMs/rK9WYdzzQ==", + "dependencies": { + "fs-extra": "^10.1.0", + "onml": "^2.1.0", + "tspan": "^0.4.0", + "yargs": "^17.6.2" + }, + "bin": { + "bitfield": "bin/bitfield.js" + } + }, + "node_modules/bit-field/node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmmirror.com/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/bit-field/node_modules/yargs": { + "version": "17.6.2", + "resolved": "https://registry.npmmirror.com/yargs/-/yargs-17.6.2.tgz", + "integrity": "sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw==", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/bit-field/node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmmirror.com/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "engines": { + "node": ">=12" + } + }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/bl/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/bluebird": { + "version": "3.4.7", + "resolved": "https://registry.npmmirror.com/bluebird/-/bluebird-3.4.7.tgz", + "integrity": "sha512-iD3898SR7sWVRHbiQv+sHUtHnMvC1o3nW5rAcqnq3uOn07DSAppZYUkIGslDz6gXC7HfunPe7YVBgoEJASPcHA==", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browser-stdout": { + "version": "1.3.1", + "resolved": "https://registry.npmmirror.com/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", + "dev": true + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmmirror.com/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmmirror.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "engines": { + "node": "*" + } + }, + "node_modules/buffer-indexof-polyfill": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.2.tgz", + "integrity": "sha512-I7wzHwA3t1/lwXQh+A5PbNvJxgfo5r3xulgpYDB5zckTu/Z9oUK9biouBKQUjEqzaz3HnAT6TYoovmE+GqSf7A==", + "dev": true, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/buffers": { + "version": "0.1.1", + "resolved": "https://registry.npmmirror.com/buffers/-/buffers-0.1.1.tgz", + "integrity": "sha512-9q/rDEGSb/Qsvv2qvzIzdluL5k7AaJOTrw23z9reQthrbF7is4CtlT0DXyO1oei2DCp4uojjzQ7igaSHp1kAEQ==", + "dev": true, + "engines": { + "node": ">=0.2.0" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmmirror.com/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/chainsaw": { + "version": "0.1.0", + "resolved": "https://registry.npmmirror.com/chainsaw/-/chainsaw-0.1.0.tgz", + "integrity": "sha512-75kWfWt6MEKNC8xYXIdRpDehRYY/tNSgwKaJq+dbbDcxORuVrrQ+SEHoWsniVn9XPYfP4gmdWIeDk/4YNp1rNQ==", + "dev": true, + "dependencies": { + "traverse": ">=0.3.0 <0.4" + }, + "engines": { + "node": "*" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmmirror.com/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" + }, + "node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmmirror.com/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/commander": { + "version": "9.5.0", + "resolved": "https://registry.npmmirror.com/commander/-/commander-9.5.0.tgz", + "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", + "engines": { + "node": "^12.20.0 || >=14" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmmirror.com/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "dev": true + }, + "node_modules/cross-fetch": { + "version": "3.1.5", + "resolved": "https://registry.npmmirror.com/cross-fetch/-/cross-fetch-3.1.5.tgz", + "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", + "dependencies": { + "node-fetch": "2.6.7" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decamelize": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/decamelize/-/decamelize-4.0.0.tgz", + "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmmirror.com/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "node_modules/devtools-protocol": { + "version": "0.0.1082910", + "resolved": "https://registry.npmmirror.com/devtools-protocol/-/devtools-protocol-0.0.1082910.tgz", + "integrity": "sha512-RqoZ2GmqaNxyx+99L/RemY5CkwG9D0WEfOKxekwCRXOGrDCep62ngezEJUVMq6rISYQ+085fJnWDQqGHlxVNww==" + }, + "node_modules/diff": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/diff/-/diff-5.0.0.tgz", + "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", + "dev": true, + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/duplexer2": { + "version": "0.1.4", + "resolved": "https://registry.npmmirror.com/duplexer2/-/duplexer2-0.1.4.tgz", + "integrity": "sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==", + "dev": true, + "dependencies": { + "readable-stream": "^2.0.2" + } + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmmirror.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmmirror.com/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmmirror.com/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint": { + "version": "8.32.0", + "resolved": "https://registry.npmmirror.com/eslint/-/eslint-8.32.0.tgz", + "integrity": "sha512-nETVXpnthqKPFyuY2FNjz/bEd6nbosRgKbkgS/y1C7LJop96gYHWpiguLecMHQ2XCPxn77DS0P+68WzG6vkZSQ==", + "dev": true, + "dependencies": { + "@eslint/eslintrc": "^1.4.1", + "@humanwhocodes/config-array": "^0.11.8", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.1.1", + "eslint-utils": "^3.0.0", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.4.0", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "grapheme-splitter": "^1.0.4", + "ignore": "^5.2.0", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-sdsl": "^4.1.4", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "regexpp": "^3.2.0", + "strip-ansi": "^6.0.1", + "strip-json-comments": "^3.1.0", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^2.0.0" + }, + "engines": { + "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" + }, + "peerDependencies": { + "eslint": ">=5" + } + }, + "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.3.0", + "resolved": "https://registry.npmmirror.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/eslint/node_modules/eslint-scope": { + "version": "7.1.1", + "resolved": "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/eslint/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/espree": { + "version": "9.4.1", + "resolved": "https://registry.npmmirror.com/espree/-/espree-9.4.1.tgz", + "integrity": "sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==", + "dev": true, + "dependencies": { + "acorn": "^8.8.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/esquery": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esquery/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmmirror.com/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extract-zip": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/extract-zip/-/extract-zip-2.0.1.tgz", + "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", + "dependencies": { + "debug": "^4.1.1", + "get-stream": "^5.1.0", + "yauzl": "^2.10.0" + }, + "bin": { + "extract-zip": "cli.js" + }, + "engines": { + "node": ">= 10.17.0" + }, + "optionalDependencies": { + "@types/yauzl": "^2.9.1" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmmirror.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + }, + "node_modules/fast-glob": { + "version": "3.2.12", + "resolved": "https://registry.npmmirror.com/fast-glob/-/fast-glob-3.2.12.tgz", + "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmmirror.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "node_modules/fast-xml-parser": { + "version": "3.21.1", + "resolved": "https://registry.npmmirror.com/fast-xml-parser/-/fast-xml-parser-3.21.1.tgz", + "integrity": "sha512-FTFVjYoBOZTJekiUsawGsSYV9QL0A+zDYCRj7y34IO6Jg+2IMYEtQa+bbictpdpV8dHxXywqU7C0gRDEOFtBFg==", + "dependencies": { + "strnum": "^1.0.4" + }, + "bin": { + "xml2js": "cli.js" + } + }, + "node_modules/fastq": { + "version": "1.15.0", + "resolved": "https://registry.npmmirror.com/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", + "dependencies": { + "pend": "~1.2.0" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmmirror.com/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/flat": { + "version": "5.0.2", + "resolved": "https://registry.npmmirror.com/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "dev": true, + "bin": { + "flat": "cli.js" + } + }, + "node_modules/flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmmirror.com/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "dependencies": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.2.7", + "resolved": "https://registry.npmmirror.com/flatted/-/flatted-3.2.7.tgz", + "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", + "dev": true + }, + "node_modules/fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" + }, + "node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmmirror.com/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/fstream": { + "version": "1.0.12", + "resolved": "https://registry.npmmirror.com/fstream/-/fstream-1.0.12.tgz", + "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "inherits": "~2.0.0", + "mkdirp": ">=0.5 0", + "rimraf": "2" + }, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/fstream/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmmirror.com/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/fstream/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmmirror.com/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmmirror.com/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmmirror.com/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/glob": { + "version": "8.1.0", + "resolved": "https://registry.npmmirror.com/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/glob/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { "balanced-match": "^1.0.0" - } } - } + }, + "node_modules/glob/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/globals": { + "version": "13.19.0", + "resolved": "https://registry.npmmirror.com/globals/-/globals-13.19.0.tgz", + "integrity": "sha512-dkQ957uSRWHw7CFXLUtUHQI3g3aWApYhfNR2O6jn/907riyTYKVBmxYVROkBcY614FSSeSJh7Xm7SrUWCxvJMQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmmirror.com/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmmirror.com/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" + }, + "node_modules/grapheme-splitter": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", + "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", + "dev": true + }, + "node_modules/handlebars": { + "version": "4.7.7", + "resolved": "https://registry.npmmirror.com/handlebars/-/handlebars-4.7.7.tgz", + "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==", + "dependencies": { + "minimist": "^1.2.5", + "neo-async": "^2.6.0", + "source-map": "^0.6.1", + "wordwrap": "^1.0.0" + }, + "bin": { + "handlebars": "bin/handlebars" + }, + "engines": { + "node": ">=0.4.7" + }, + "optionalDependencies": { + "uglify-js": "^3.1.4" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "bin": { + "he": "bin/he" + } + }, + "node_modules/http-proxy-agent": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", + "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", + "dev": true, + "dependencies": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" + }, + "node_modules/ignore": { + "version": "5.2.4", + "resolved": "https://registry.npmmirror.com/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmmirror.com/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmmirror.com/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/indent-string": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/indent-string/-/indent-string-5.0.0.tgz", + "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", + "engines": { + "node": ">=12" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmmirror.com/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmmirror.com/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmmirror.com/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmmirror.com/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmmirror.com/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmmirror.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/js-sdsl": { + "version": "4.2.0", + "resolved": "https://registry.npmmirror.com/js-sdsl/-/js-sdsl-4.2.0.tgz", + "integrity": "sha512-dyBIzQBDkCqCu+0upx25Y2jGdbTGxE9fshMsCdK0ViOongpV+n5tXRcZY9v7CaVQ79AGS9KA1KHtojxiM7aXSQ==", + "dev": true + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmmirror.com/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmmirror.com/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/listenercount": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/listenercount/-/listenercount-1.0.1.tgz", + "integrity": "sha512-3mk/Zag0+IJxeDrxSgaDPy4zZ3w05PRZeJNnlWhzFz5OkX49J4krc+A8X2d2M69vGMBEX0uyl8M+W+8gH+kBqQ==", + "dev": true + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/lodash.castarray": { + "version": "4.4.0", + "resolved": "https://registry.npmmirror.com/lodash.castarray/-/lodash.castarray-4.4.0.tgz", + "integrity": "sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q==" + }, + "node_modules/lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmmirror.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==" + }, + "node_modules/lodash.get": { + "version": "4.4.2", + "resolved": "https://registry.npmmirror.com/lodash.get/-/lodash.get-4.4.2.tgz", + "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==" + }, + "node_modules/lodash.has": { + "version": "4.5.2", + "resolved": "https://registry.npmmirror.com/lodash.has/-/lodash.has-4.5.2.tgz", + "integrity": "sha512-rnYUdIo6xRCJnQmbVFEwcxF144erlD+M3YcJUVesflU9paQaE8p+fJDcIQrlMYbxoANFL+AB9hZrzSBBk5PL+g==" + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmmirror.com/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "node_modules/lodash.reject": { + "version": "4.6.0", + "resolved": "https://registry.npmmirror.com/lodash.reject/-/lodash.reject-4.6.0.tgz", + "integrity": "sha512-qkTuvgEzYdyhiJBx42YPzPo71R1aEr0z79kAv7Ixg8wPFEjgRgJdUsGMG3Hf3OYSF/kHI79XhNlt+5Ar6OzwxQ==" + }, + "node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/logidrom": { + "version": "0.3.1", + "resolved": "https://registry.npmmirror.com/logidrom/-/logidrom-0.3.1.tgz", + "integrity": "sha512-B1Rjay3Ye/JcythUjMt+KLiLIwOjnMJN1M5BRbDgNMsJhmn7yApbx6n1rw7cT3Fi/NA77HDM+y3y1nXvKQVB9Q==", + "dependencies": { + "estraverse": "^5.1.0", + "tspan": "^0.4.0" + } + }, + "node_modules/logidrom/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmmirror.com/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmmirror.com/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.7", + "resolved": "https://registry.npmmirror.com/minimist/-/minimist-1.2.7.tgz", + "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==" + }, + "node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmmirror.com/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/mkdirp-classic": { + "version": "0.5.3", + "resolved": "https://registry.npmmirror.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==" + }, + "node_modules/mocha": { + "version": "10.2.0", + "resolved": "https://registry.npmmirror.com/mocha/-/mocha-10.2.0.tgz", + "integrity": "sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg==", + "dev": true, + "dependencies": { + "ansi-colors": "4.1.1", + "browser-stdout": "1.3.1", + "chokidar": "3.5.3", + "debug": "4.3.4", + "diff": "5.0.0", + "escape-string-regexp": "4.0.0", + "find-up": "5.0.0", + "glob": "7.2.0", + "he": "1.2.0", + "js-yaml": "4.1.0", + "log-symbols": "4.1.0", + "minimatch": "5.0.1", + "ms": "2.1.3", + "nanoid": "3.3.3", + "serialize-javascript": "6.0.0", + "strip-json-comments": "3.1.1", + "supports-color": "8.1.1", + "workerpool": "6.2.1", + "yargs": "16.2.0", + "yargs-parser": "20.2.4", + "yargs-unparser": "2.0.0" + }, + "bin": { + "_mocha": "bin/_mocha", + "mocha": "bin/mocha.js" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/mocha/node_modules/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmmirror.com/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/mocha/node_modules/glob/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/mocha/node_modules/minimatch": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-5.0.1.tgz", + "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/mocha/node_modules/minimatch/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/mocha/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/mocha/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/nanoid": { + "version": "3.3.3", + "resolved": "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.3.tgz", + "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==", + "dev": true, + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "node_modules/natural-compare-lite": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", + "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", + "dev": true + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmmirror.com/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" + }, + "node_modules/node-fetch": { + "version": "2.6.7", + "resolved": "https://registry.npmmirror.com/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onml": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/onml/-/onml-2.1.0.tgz", + "integrity": "sha512-fvaSZRzprpwLFge/mcwE0CItfniNisVNamDdMK1FQUjh4ArQZ8ZWSkDaJbZc3XaANKZHq0xIa8NJpZ2HSe3oXA==", + "dependencies": { + "sax": "^1.2.1" + } + }, + "node_modules/optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmmirror.com/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmmirror.com/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/pend": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/pend/-/pend-1.2.0.tgz", + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmmirror.com/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "engines": { + "node": ">=8.6" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, + "node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/punycode": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/punycode/-/punycode-2.2.0.tgz", + "integrity": "sha512-LN6QV1IJ9ZhxWTNdktaPClrNfp8xdSAYS0Zk2ddX7XsXZAxckMHPCBcHRo0cTcEIgYPRiGEkmji3Idkh2yFtYw==", + "engines": { + "node": ">=6" + } + }, + "node_modules/puppeteer-core": { + "version": "19.6.3", + "resolved": "https://registry.npmmirror.com/puppeteer-core/-/puppeteer-core-19.6.3.tgz", + "integrity": "sha512-8MbhioSlkDaHkmolpQf9Z7ui7jplFfOFTnN8d5kPsCazRRTNIH6/bVxPskn0v5Gh9oqOBlknw0eHH0/OBQAxpQ==", + "dependencies": { + "cross-fetch": "3.1.5", + "debug": "4.3.4", + "devtools-protocol": "0.0.1082910", + "extract-zip": "2.0.1", + "https-proxy-agent": "5.0.1", + "proxy-from-env": "1.1.0", + "rimraf": "3.0.2", + "tar-fs": "2.1.1", + "unbzip2-stream": "1.4.3", + "ws": "8.11.0" + }, + "engines": { + "node": ">=14.1.0" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmmirror.com/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/readable-stream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmmirror.com/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmmirror.com/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/rimraf/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmmirror.com/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + }, + "node_modules/sax": { + "version": "1.2.4", + "resolved": "https://registry.npmmirror.com/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" + }, + "node_modules/semver": { + "version": "7.3.8", + "resolved": "https://registry.npmmirror.com/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/serialize-javascript": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/serialize-javascript/-/serialize-javascript-6.0.0.tgz", + "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "dev": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmmirror.com/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", + "dev": true + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/showdown": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/showdown/-/showdown-2.1.0.tgz", + "integrity": "sha512-/6NVYu4U819R2pUIk79n67SYgJHWCce0a5xTP979WbNp0FL9MN1I1QK662IDU1b6JzKTvmhgI7T7JYIxBi3kMQ==", + "dependencies": { + "commander": "^9.0.0" + }, + "bin": { + "showdown": "bin/showdown.js" + } + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/state-machine-cat": { + "version": "9.2.5", + "resolved": "https://registry.npmmirror.com/state-machine-cat/-/state-machine-cat-9.2.5.tgz", + "integrity": "sha512-HyPgjsjDS18YTLsOjB3NaNcnbFo14qUjWZZGZCb3IQhGVAq35wi6leE80trD2br1O9vOalfOWSk3pD8m6U6VuQ==", + "dependencies": { + "ajv": "8.11.0", + "chalk": "5.0.1", + "commander": "9.2.0", + "fast-xml-parser": "3.21.1", + "get-stream": "6.0.1", + "handlebars": "4.7.7", + "he": "1.2.0", + "indent-string": "5.0.0", + "lodash.castarray": "4.4.0", + "lodash.clonedeep": "4.5.0", + "lodash.get": "4.4.2", + "lodash.has": "4.5.2", + "lodash.reject": "4.6.0", + "semver": "^7.3.7", + "viz.js": "1.8.2", + "wrap-ansi": "8.0.1" + }, + "bin": { + "sm_cat": "bin/smcat.mjs", + "sm-cat": "bin/smcat.mjs", + "smcat": "bin/smcat.mjs", + "state-machine-cat": "bin/smcat.mjs" + }, + "engines": { + "node": "^12.20||^14.13.1||>=16" + } + }, + "node_modules/state-machine-cat/node_modules/ajv": { + "version": "8.11.0", + "resolved": "https://registry.npmmirror.com/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "node_modules/state-machine-cat/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/state-machine-cat/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "engines": { + "node": ">=12" + } + }, + "node_modules/state-machine-cat/node_modules/chalk": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/chalk/-/chalk-5.0.1.tgz", + "integrity": "sha512-Fo07WOYGqMfCWHOzSXOt2CxDbC6skS/jO9ynEcmpANMoPrD+W1r1K6Vx7iNm+AQmETU1Xr2t+n8nzkV9t6xh3w==", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + } + }, + "node_modules/state-machine-cat/node_modules/commander": { + "version": "9.2.0", + "resolved": "https://registry.npmmirror.com/commander/-/commander-9.2.0.tgz", + "integrity": "sha512-e2i4wANQiSXgnrBlIatyHtP1odfUp0BbV5Y5nEGbxtIrStkEOAAzCUirvLBNXHLr7kwLvJl6V+4V3XV9x7Wd9w==", + "engines": { + "node": "^12.20.0 || >=14" + } + }, + "node_modules/state-machine-cat/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" + }, + "node_modules/state-machine-cat/node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "engines": { + "node": ">=10" + } + }, + "node_modules/state-machine-cat/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + }, + "node_modules/state-machine-cat/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/state-machine-cat/node_modules/strip-ansi": { + "version": "7.0.1", + "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-7.0.1.tgz", + "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/state-machine-cat/node_modules/wrap-ansi": { + "version": "8.0.1", + "resolved": "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-8.0.1.tgz", + "integrity": "sha512-QFF+ufAqhoYHvoHdajT/Po7KoXVBPXS2bgjIam5isfWJPfIOnQZ50JtUiVvCv/sjgacf3yRrt2ZKUZ/V4itN4g==", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/string_decoder/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmmirror.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/strnum": { + "version": "1.0.5", + "resolved": "https://registry.npmmirror.com/strnum/-/strnum-1.0.5.tgz", + "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==" + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tar-fs": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/tar-fs/-/tar-fs-2.1.1.tgz", + "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", + "dependencies": { + "chownr": "^1.1.1", + "mkdirp-classic": "^0.5.2", + "pump": "^3.0.0", + "tar-stream": "^2.1.4" + } + }, + "node_modules/tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "dependencies": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tar-stream/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/temp": { + "version": "0.9.4", + "resolved": "https://registry.npmmirror.com/temp/-/temp-0.9.4.tgz", + "integrity": "sha512-yYrrsWnrXMcdsnu/7YMYAofM1ktpL5By7vZhf15CrXijWWrEYZks5AXBudalfSWJLlnen/QUJUB5aoB0kqZUGA==", + "dependencies": { + "mkdirp": "^0.5.1", + "rimraf": "~2.6.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/temp/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmmirror.com/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/temp/node_modules/rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmmirror.com/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmmirror.com/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmmirror.com/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmmirror.com/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + }, + "node_modules/traverse": { + "version": "0.3.9", + "resolved": "https://registry.npmmirror.com/traverse/-/traverse-0.3.9.tgz", + "integrity": "sha512-iawgk0hLP3SxGKDfnDJf8wTz4p2qImnyihM5Hh/sGvQ3K37dPi/w8sRhdNIxYA1TwFwc5mDhIJq+O0RsvXBKdQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmmirror.com/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/tspan": { + "version": "0.4.0", + "resolved": "https://registry.npmmirror.com/tspan/-/tspan-0.4.0.tgz", + "integrity": "sha512-0ELL9tpLpTqLliFyQySaxgCO43buCML+j3TI4E1LuSI8wkzITGEVhZCyMvv/A+3ek9KpgALhhgnZESRLTbN+iw==" + }, + "node_modules/tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmmirror.com/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "dependencies": { + "tslib": "^1.8.1" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + } + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmmirror.com/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmmirror.com/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/typescript": { + "version": "4.9.4", + "resolved": "https://registry.npmmirror.com/typescript/-/typescript-4.9.4.tgz", + "integrity": "sha512-Uz+dTXYzxXXbsFpM86Wh3dKCxrQqUcVMxwU54orwlJjOpO3ao8L7j5lH+dWfTwgCwIuM9GQ2kvVotzYJMXTBZg==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/uglify-js": { + "version": "3.17.4", + "resolved": "https://registry.npmmirror.com/uglify-js/-/uglify-js-3.17.4.tgz", + "integrity": "sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==", + "optional": true, + "bin": { + "uglifyjs": "bin/uglifyjs" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/unbzip2-stream": { + "version": "1.4.3", + "resolved": "https://registry.npmmirror.com/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", + "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==", + "dependencies": { + "buffer": "^5.2.1", + "through": "^2.3.8" + } + }, + "node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/unzipper": { + "version": "0.10.11", + "resolved": "https://registry.npmmirror.com/unzipper/-/unzipper-0.10.11.tgz", + "integrity": "sha512-+BrAq2oFqWod5IESRjL3S8baohbevGcVA+teAIOYWM3pDVdseogqbzhhvvmiyQrUNKFUnDMtELW3X8ykbyDCJw==", + "dev": true, + "dependencies": { + "big-integer": "^1.6.17", + "binary": "~0.3.0", + "bluebird": "~3.4.1", + "buffer-indexof-polyfill": "~1.0.0", + "duplexer2": "~0.1.4", + "fstream": "^1.0.12", + "graceful-fs": "^4.2.2", + "listenercount": "~1.0.1", + "readable-stream": "~2.3.6", + "setimmediate": "~1.0.4" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmmirror.com/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, + "node_modules/viz.js": { + "version": "1.8.2", + "resolved": "https://registry.npmmirror.com/viz.js/-/viz.js-1.8.2.tgz", + "integrity": "sha512-W+1+N/hdzLpQZEcvz79n2IgUE9pfx6JLdHh3Kh8RGvLL8P1LdJVQmi2OsDcLdY4QVID4OUy+FPelyerX0nJxIQ==", + "deprecated": "no longer supported" + }, + "node_modules/wavedrom": { + "version": "2.9.1", + "resolved": "https://registry.npmmirror.com/wavedrom/-/wavedrom-2.9.1.tgz", + "integrity": "sha512-IPv1bKVwh4Zo8dMMQfnNy4KFqU/v0buoPDwLkTrtHE2nr0dV4pHqryhWpqNCSUm7xTWroER+nE5xRkng96xLUA==", + "dependencies": { + "bit-field": "^1.5.3", + "logidrom": "^0.3.1", + "onml": "^2.1.0", + "tspan": "^0.4.0" + } + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmmirror.com/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==" + }, + "node_modules/workerpool": { + "version": "6.2.1", + "resolved": "https://registry.npmmirror.com/workerpool/-/workerpool-6.2.1.tgz", + "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==", + "dev": true + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + }, + "node_modules/ws": { + "version": "8.11.0", + "resolved": "https://registry.npmmirror.com/ws/-/ws-8.11.0.tgz", + "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmmirror.com/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmmirror.com/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-parser": { + "version": "20.2.4", + "resolved": "https://registry.npmmirror.com/yargs-parser/-/yargs-parser-20.2.4.tgz", + "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-unparser": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/yargs-unparser/-/yargs-unparser-2.0.0.tgz", + "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", + "dev": true, + "dependencies": { + "camelcase": "^6.0.0", + "decamelize": "^4.0.0", + "flat": "^5.0.2", + "is-plain-obj": "^2.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmmirror.com/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", + "dependencies": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmmirror.com/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + } + } + }, + "dependencies": { + "@eslint/eslintrc": { + "version": "1.4.1", + "resolved": "https://registry.npmmirror.com/@eslint/eslintrc/-/eslintrc-1.4.1.tgz", + "integrity": "sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA==", + "dev": true, + "requires": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.4.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + } + }, + "@humanwhocodes/config-array": { + "version": "0.11.8", + "resolved": "https://registry.npmmirror.com/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", + "integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==", + "dev": true, + "requires": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.5" + } + }, + "@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true + }, + "@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true + }, + "@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmmirror.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + } + }, + "@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmmirror.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true + }, + "@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmmirror.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "requires": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + } + }, + "@tootallnate/once": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/@tootallnate/once/-/once-1.1.2.tgz", + "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", + "dev": true + }, + "@types/glob": { + "version": "8.0.0", + "resolved": "https://registry.npmmirror.com/@types/glob/-/glob-8.0.0.tgz", + "integrity": "sha512-l6NQsDDyQUVeoTynNpC9uRvCUint/gSUXQA2euwmTuWGvPY5LSDUu6tkCtJB2SvGQlJQzLaKqcGZP4//7EDveA==", + "dev": true, + "requires": { + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "@types/json-schema": { + "version": "7.0.11", + "resolved": "https://registry.npmmirror.com/@types/json-schema/-/json-schema-7.0.11.tgz", + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", + "dev": true + }, + "@types/minimatch": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/@types/minimatch/-/minimatch-5.1.2.tgz", + "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==", + "dev": true + }, + "@types/mocha": { + "version": "10.0.1", + "resolved": "https://registry.npmmirror.com/@types/mocha/-/mocha-10.0.1.tgz", + "integrity": "sha512-/fvYntiO1GeICvqbQ3doGDIP97vWmvFt83GKguJ6prmQM2iXZfFcq6YE8KteFyRtX2/h5Hf91BYvPodJKFYv5Q==", + "dev": true + }, + "@types/node": { + "version": "16.18.11", + "resolved": "https://registry.npmmirror.com/@types/node/-/node-16.18.11.tgz", + "integrity": "sha512-3oJbGBUWuS6ahSnEq1eN2XrCyf4YsWI8OyCvo7c64zQJNplk3mO84t53o8lfTk+2ji59g5ycfc6qQ3fdHliHuA==", + "devOptional": true + }, + "@types/semver": { + "version": "7.3.13", + "resolved": "https://registry.npmmirror.com/@types/semver/-/semver-7.3.13.tgz", + "integrity": "sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==", + "dev": true + }, + "@types/showdown": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/@types/showdown/-/showdown-2.0.0.tgz", + "integrity": "sha512-70xBJoLv+oXjB5PhtA8vo7erjLDp9/qqI63SRHm4REKrwuPOLs8HhXwlZJBJaB4kC18cCZ1UUZ6Fb/PLFW4TCA==", + "dev": true + }, + "@types/vscode": { + "version": "1.74.0", + "resolved": "https://registry.npmmirror.com/@types/vscode/-/vscode-1.74.0.tgz", + "integrity": "sha512-LyeCIU3jb9d38w0MXFwta9r0Jx23ugujkAxdwLTNCyspdZTKUc43t7ppPbCiPoQ/Ivd/pnDFZrb4hWd45wrsgA==", + "dev": true + }, + "@types/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmmirror.com/@types/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==", + "optional": true, + "requires": { + "@types/node": "*" + } + }, + "@typescript-eslint/eslint-plugin": { + "version": "5.48.2", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.48.2.tgz", + "integrity": "sha512-sR0Gja9Ky1teIq4qJOl0nC+Tk64/uYdX+mi+5iB//MH8gwyx8e3SOyhEzeLZEFEEfCaLf8KJq+Bd/6je1t+CAg==", + "dev": true, + "requires": { + "@typescript-eslint/scope-manager": "5.48.2", + "@typescript-eslint/type-utils": "5.48.2", + "@typescript-eslint/utils": "5.48.2", + "debug": "^4.3.4", + "ignore": "^5.2.0", + "natural-compare-lite": "^1.4.0", + "regexpp": "^3.2.0", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + } + }, + "@typescript-eslint/parser": { + "version": "5.48.2", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/parser/-/parser-5.48.2.tgz", + "integrity": "sha512-38zMsKsG2sIuM5Oi/olurGwYJXzmtdsHhn5mI/pQogP+BjYVkK5iRazCQ8RGS0V+YLk282uWElN70zAAUmaYHw==", + "dev": true, + "requires": { + "@typescript-eslint/scope-manager": "5.48.2", + "@typescript-eslint/types": "5.48.2", + "@typescript-eslint/typescript-estree": "5.48.2", + "debug": "^4.3.4" + } + }, + "@typescript-eslint/scope-manager": { + "version": "5.48.2", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/scope-manager/-/scope-manager-5.48.2.tgz", + "integrity": "sha512-zEUFfonQid5KRDKoI3O+uP1GnrFd4tIHlvs+sTJXiWuypUWMuDaottkJuR612wQfOkjYbsaskSIURV9xo4f+Fw==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.48.2", + "@typescript-eslint/visitor-keys": "5.48.2" + } + }, + "@typescript-eslint/type-utils": { + "version": "5.48.2", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/type-utils/-/type-utils-5.48.2.tgz", + "integrity": "sha512-QVWx7J5sPMRiOMJp5dYshPxABRoZV1xbRirqSk8yuIIsu0nvMTZesKErEA3Oix1k+uvsk8Cs8TGJ6kQ0ndAcew==", + "dev": true, + "requires": { + "@typescript-eslint/typescript-estree": "5.48.2", + "@typescript-eslint/utils": "5.48.2", + "debug": "^4.3.4", + "tsutils": "^3.21.0" + } + }, + "@typescript-eslint/types": { + "version": "5.48.2", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/types/-/types-5.48.2.tgz", + "integrity": "sha512-hE7dA77xxu7ByBc6KCzikgfRyBCTst6dZQpwaTy25iMYOnbNljDT4hjhrGEJJ0QoMjrfqrx+j1l1B9/LtKeuqA==", + "dev": true + }, + "@typescript-eslint/typescript-estree": { + "version": "5.48.2", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.48.2.tgz", + "integrity": "sha512-bibvD3z6ilnoVxUBFEgkO0k0aFvUc4Cttt0dAreEr+nrAHhWzkO83PEVVuieK3DqcgL6VAK5dkzK8XUVja5Zcg==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.48.2", + "@typescript-eslint/visitor-keys": "5.48.2", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + } + }, + "@typescript-eslint/utils": { + "version": "5.48.2", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/utils/-/utils-5.48.2.tgz", + "integrity": "sha512-2h18c0d7jgkw6tdKTlNaM7wyopbLRBiit8oAxoP89YnuBOzCZ8g8aBCaCqq7h208qUTroL7Whgzam7UY3HVLow==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.48.2", + "@typescript-eslint/types": "5.48.2", + "@typescript-eslint/typescript-estree": "5.48.2", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0", + "semver": "^7.3.7" + } + }, + "@typescript-eslint/visitor-keys": { + "version": "5.48.2", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.48.2.tgz", + "integrity": "sha512-z9njZLSkwmjFWUelGEwEbdf4NwKvfHxvGC0OcGN1Hp/XNDIcJ7D5DpPNPv6x6/mFvc1tQHsaWmpD/a4gOvvCJQ==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.48.2", + "eslint-visitor-keys": "^3.3.0" + } + }, + "@vscode/test-electron": { + "version": "2.2.2", + "resolved": "https://registry.npmmirror.com/@vscode/test-electron/-/test-electron-2.2.2.tgz", + "integrity": "sha512-s5d2VtMySvff0UgqkJ0BMCr1es+qREE194EAodGIefq518W53ifvv69e80l9e2MrYJEqUUKwukE/w3H9o15YEw==", + "dev": true, + "requires": { + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "rimraf": "^3.0.2", + "unzipper": "^0.10.11" + } + }, + "acorn": { + "version": "8.8.1", + "resolved": "https://registry.npmmirror.com/acorn/-/acorn-8.8.1.tgz", + "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==", + "dev": true + }, + "acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmmirror.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "requires": {} + }, + "agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmmirror.com/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "requires": { + "debug": "4" + } + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmmirror.com/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmmirror.com/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "dev": true + }, + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmmirror.com/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmmirror.com/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" + }, + "big-integer": { + "version": "1.6.51", + "resolved": "https://registry.npmmirror.com/big-integer/-/big-integer-1.6.51.tgz", + "integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==", + "dev": true + }, + "binary": { + "version": "0.3.0", + "resolved": "https://registry.npmmirror.com/binary/-/binary-0.3.0.tgz", + "integrity": "sha512-D4H1y5KYwpJgK8wk1Cue5LLPgmwHKYSChkbspQg5JtVuR5ulGckxfR62H3AE9UDkdMC8yyXlqYihuz3Aqg2XZg==", + "dev": true, + "requires": { + "buffers": "~0.1.1", + "chainsaw": "~0.1.0" + } + }, + "binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==" + }, + "bit-field": { + "version": "1.7.0", + "resolved": "https://registry.npmmirror.com/bit-field/-/bit-field-1.7.0.tgz", + "integrity": "sha512-JydkgvuMioH3Oe3mnnHFVHGBzGZJIph98d1IpotpJ7svjGmkQf8uR9k0LAY/mPEphaq+nSIrgzMs/rK9WYdzzQ==", + "requires": { + "fs-extra": "^10.1.0", + "onml": "^2.1.0", + "tspan": "^0.4.0", + "yargs": "^17.6.2" + }, + "dependencies": { + "cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmmirror.com/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + } + }, + "yargs": { + "version": "17.6.2", + "resolved": "https://registry.npmmirror.com/yargs/-/yargs-17.6.2.tgz", + "integrity": "sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw==", + "requires": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + } + }, + "yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmmirror.com/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==" + } + } + }, + "bl": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "requires": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "bluebird": { + "version": "3.4.7", + "resolved": "https://registry.npmmirror.com/bluebird/-/bluebird-3.4.7.tgz", + "integrity": "sha512-iD3898SR7sWVRHbiQv+sHUtHnMvC1o3nW5rAcqnq3uOn07DSAppZYUkIGslDz6gXC7HfunPe7YVBgoEJASPcHA==", + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "requires": { + "fill-range": "^7.0.1" + } + }, + "browser-stdout": { + "version": "1.3.1", + "resolved": "https://registry.npmmirror.com/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", + "dev": true + }, + "buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmmirror.com/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmmirror.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==" + }, + "buffer-indexof-polyfill": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.2.tgz", + "integrity": "sha512-I7wzHwA3t1/lwXQh+A5PbNvJxgfo5r3xulgpYDB5zckTu/Z9oUK9biouBKQUjEqzaz3HnAT6TYoovmE+GqSf7A==", + "dev": true + }, + "buffers": { + "version": "0.1.1", + "resolved": "https://registry.npmmirror.com/buffers/-/buffers-0.1.1.tgz", + "integrity": "sha512-9q/rDEGSb/Qsvv2qvzIzdluL5k7AaJOTrw23z9reQthrbF7is4CtlT0DXyO1oei2DCp4uojjzQ7igaSHp1kAEQ==", + "dev": true + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, + "camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmmirror.com/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true + }, + "chainsaw": { + "version": "0.1.0", + "resolved": "https://registry.npmmirror.com/chainsaw/-/chainsaw-0.1.0.tgz", + "integrity": "sha512-75kWfWt6MEKNC8xYXIdRpDehRYY/tNSgwKaJq+dbbDcxORuVrrQ+SEHoWsniVn9XPYfP4gmdWIeDk/4YNp1rNQ==", + "dev": true, + "requires": { + "traverse": ">=0.3.0 <0.4" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmmirror.com/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "requires": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "dependencies": { + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "requires": { + "is-glob": "^4.0.1" + } + } + } + }, + "chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" + }, + "cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmmirror.com/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "commander": { + "version": "9.5.0", + "resolved": "https://registry.npmmirror.com/commander/-/commander-9.5.0.tgz", + "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==" + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmmirror.com/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + }, + "core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "dev": true + }, + "cross-fetch": { + "version": "3.1.5", + "resolved": "https://registry.npmmirror.com/cross-fetch/-/cross-fetch-3.1.5.tgz", + "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", + "requires": { + "node-fetch": "2.6.7" + } + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "requires": { + "ms": "2.1.2" + } + }, + "decamelize": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/decamelize/-/decamelize-4.0.0.tgz", + "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", + "dev": true + }, + "deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmmirror.com/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "devtools-protocol": { + "version": "0.0.1082910", + "resolved": "https://registry.npmmirror.com/devtools-protocol/-/devtools-protocol-0.0.1082910.tgz", + "integrity": "sha512-RqoZ2GmqaNxyx+99L/RemY5CkwG9D0WEfOKxekwCRXOGrDCep62ngezEJUVMq6rISYQ+085fJnWDQqGHlxVNww==" + }, + "diff": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/diff/-/diff-5.0.0.tgz", + "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", + "dev": true + }, + "dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "requires": { + "path-type": "^4.0.0" + } + }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "duplexer2": { + "version": "0.1.4", + "resolved": "https://registry.npmmirror.com/duplexer2/-/duplexer2-0.1.4.tgz", + "integrity": "sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==", + "dev": true, + "requires": { + "readable-stream": "^2.0.2" + } + }, + "eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmmirror.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmmirror.com/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "requires": { + "once": "^1.4.0" + } + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmmirror.com/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" + }, + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true + }, + "eslint": { + "version": "8.32.0", + "resolved": "https://registry.npmmirror.com/eslint/-/eslint-8.32.0.tgz", + "integrity": "sha512-nETVXpnthqKPFyuY2FNjz/bEd6nbosRgKbkgS/y1C7LJop96gYHWpiguLecMHQ2XCPxn77DS0P+68WzG6vkZSQ==", + "dev": true, + "requires": { + "@eslint/eslintrc": "^1.4.1", + "@humanwhocodes/config-array": "^0.11.8", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.1.1", + "eslint-utils": "^3.0.0", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.4.0", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "grapheme-splitter": "^1.0.4", + "ignore": "^5.2.0", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-sdsl": "^4.1.4", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "regexpp": "^3.2.0", + "strip-ansi": "^6.0.1", + "strip-json-comments": "^3.1.0", + "text-table": "^0.2.0" + }, + "dependencies": { + "eslint-scope": { + "version": "7.1.1", + "resolved": "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + } + }, + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + } + } + }, + "eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + } + }, + "eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^2.0.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true + } + } + }, + "eslint-visitor-keys": { + "version": "3.3.0", + "resolved": "https://registry.npmmirror.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "dev": true + }, + "espree": { + "version": "9.4.1", + "resolved": "https://registry.npmmirror.com/espree/-/espree-9.4.1.tgz", + "integrity": "sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==", + "dev": true, + "requires": { + "acorn": "^8.8.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.3.0" + } + }, + "esquery": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "dev": true, + "requires": { + "estraverse": "^5.1.0" + }, + "dependencies": { + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + } + } + }, + "esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "requires": { + "estraverse": "^5.2.0" + }, + "dependencies": { + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + } + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmmirror.com/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, + "extract-zip": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/extract-zip/-/extract-zip-2.0.1.tgz", + "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", + "requires": { + "@types/yauzl": "^2.9.1", + "debug": "^4.1.1", + "get-stream": "^5.1.0", + "yauzl": "^2.10.0" + } + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmmirror.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + }, + "fast-glob": { + "version": "3.2.12", + "resolved": "https://registry.npmmirror.com/fast-glob/-/fast-glob-3.2.12.tgz", + "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "dependencies": { + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + } + } + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmmirror.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "fast-xml-parser": { + "version": "3.21.1", + "resolved": "https://registry.npmmirror.com/fast-xml-parser/-/fast-xml-parser-3.21.1.tgz", + "integrity": "sha512-FTFVjYoBOZTJekiUsawGsSYV9QL0A+zDYCRj7y34IO6Jg+2IMYEtQa+bbictpdpV8dHxXywqU7C0gRDEOFtBFg==", + "requires": { + "strnum": "^1.0.4" + } + }, + "fastq": { + "version": "1.15.0", + "resolved": "https://registry.npmmirror.com/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "dev": true, + "requires": { + "reusify": "^1.0.4" + } + }, + "fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", + "requires": { + "pend": "~1.2.0" + } + }, + "file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "requires": { + "flat-cache": "^3.0.4" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmmirror.com/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "requires": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + } + }, + "flat": { + "version": "5.0.2", + "resolved": "https://registry.npmmirror.com/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "dev": true + }, + "flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmmirror.com/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "requires": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + } + }, + "flatted": { + "version": "3.2.7", + "resolved": "https://registry.npmmirror.com/flatted/-/flatted-3.2.7.tgz", + "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", + "dev": true + }, + "fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" + }, + "fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmmirror.com/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + }, + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "optional": true + }, + "fstream": { + "version": "1.0.12", + "resolved": "https://registry.npmmirror.com/fstream/-/fstream-1.0.12.tgz", + "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "inherits": "~2.0.0", + "mkdirp": ">=0.5 0", + "rimraf": "2" + }, + "dependencies": { + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmmirror.com/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmmirror.com/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmmirror.com/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" + }, + "get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmmirror.com/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "requires": { + "pump": "^3.0.0" + } + }, + "glob": { + "version": "8.1.0", + "resolved": "https://registry.npmmirror.com/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + } + } + }, + "glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "requires": { + "is-glob": "^4.0.3" + } + }, + "globals": { + "version": "13.19.0", + "resolved": "https://registry.npmmirror.com/globals/-/globals-13.19.0.tgz", + "integrity": "sha512-dkQ957uSRWHw7CFXLUtUHQI3g3aWApYhfNR2O6jn/907riyTYKVBmxYVROkBcY614FSSeSJh7Xm7SrUWCxvJMQ==", + "dev": true, + "requires": { + "type-fest": "^0.20.2" + } + }, + "globby": { + "version": "11.1.0", + "resolved": "https://registry.npmmirror.com/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "requires": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + } + }, + "graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmmirror.com/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" + }, + "grapheme-splitter": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", + "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", + "dev": true + }, + "handlebars": { + "version": "4.7.7", + "resolved": "https://registry.npmmirror.com/handlebars/-/handlebars-4.7.7.tgz", + "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==", + "requires": { + "minimist": "^1.2.5", + "neo-async": "^2.6.0", + "source-map": "^0.6.1", + "uglify-js": "^3.1.4", + "wordwrap": "^1.0.0" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "he": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==" + }, + "http-proxy-agent": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", + "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", + "dev": true, + "requires": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" + } + }, + "https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "requires": { + "agent-base": "6", + "debug": "4" + } + }, + "ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" + }, + "ignore": { + "version": "5.2.4", + "resolved": "https://registry.npmmirror.com/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "dev": true + }, + "import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmmirror.com/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmmirror.com/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true + }, + "indent-string": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/indent-string/-/indent-string-5.0.0.tgz", + "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==" + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmmirror.com/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmmirror.com/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==" + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" + }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmmirror.com/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmmirror.com/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" + }, + "is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmmirror.com/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true + }, + "is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "dev": true + }, + "is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmmirror.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "js-sdsl": { + "version": "4.2.0", + "resolved": "https://registry.npmmirror.com/js-sdsl/-/js-sdsl-4.2.0.tgz", + "integrity": "sha512-dyBIzQBDkCqCu+0upx25Y2jGdbTGxE9fshMsCdK0ViOongpV+n5tXRcZY9v7CaVQ79AGS9KA1KHtojxiM7aXSQ==", + "dev": true + }, + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "requires": { + "argparse": "^2.0.1" + } + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmmirror.com/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "levn": { + "version": "0.4.1", + "resolved": "https://registry.npmmirror.com/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + } + }, + "listenercount": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/listenercount/-/listenercount-1.0.1.tgz", + "integrity": "sha512-3mk/Zag0+IJxeDrxSgaDPy4zZ3w05PRZeJNnlWhzFz5OkX49J4krc+A8X2d2M69vGMBEX0uyl8M+W+8gH+kBqQ==", + "dev": true + }, + "locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "requires": { + "p-locate": "^5.0.0" + } + }, + "lodash.castarray": { + "version": "4.4.0", + "resolved": "https://registry.npmmirror.com/lodash.castarray/-/lodash.castarray-4.4.0.tgz", + "integrity": "sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q==" + }, + "lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmmirror.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==" + }, + "lodash.get": { + "version": "4.4.2", + "resolved": "https://registry.npmmirror.com/lodash.get/-/lodash.get-4.4.2.tgz", + "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==" + }, + "lodash.has": { + "version": "4.5.2", + "resolved": "https://registry.npmmirror.com/lodash.has/-/lodash.has-4.5.2.tgz", + "integrity": "sha512-rnYUdIo6xRCJnQmbVFEwcxF144erlD+M3YcJUVesflU9paQaE8p+fJDcIQrlMYbxoANFL+AB9hZrzSBBk5PL+g==" + }, + "lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmmirror.com/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "lodash.reject": { + "version": "4.6.0", + "resolved": "https://registry.npmmirror.com/lodash.reject/-/lodash.reject-4.6.0.tgz", + "integrity": "sha512-qkTuvgEzYdyhiJBx42YPzPo71R1aEr0z79kAv7Ixg8wPFEjgRgJdUsGMG3Hf3OYSF/kHI79XhNlt+5Ar6OzwxQ==" + }, + "log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, + "requires": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + } + }, + "logidrom": { + "version": "0.3.1", + "resolved": "https://registry.npmmirror.com/logidrom/-/logidrom-0.3.1.tgz", + "integrity": "sha512-B1Rjay3Ye/JcythUjMt+KLiLIwOjnMJN1M5BRbDgNMsJhmn7yApbx6n1rw7cT3Fi/NA77HDM+y3y1nXvKQVB9Q==", + "requires": { + "estraverse": "^5.1.0", + "tspan": "^0.4.0" + }, + "dependencies": { + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==" + } + } + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "requires": { + "yallist": "^4.0.0" + } + }, + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmmirror.com/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true + }, + "micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmmirror.com/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "requires": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + } + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.7", + "resolved": "https://registry.npmmirror.com/minimist/-/minimist-1.2.7.tgz", + "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==" + }, + "mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmmirror.com/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "requires": { + "minimist": "^1.2.6" + } + }, + "mkdirp-classic": { + "version": "0.5.3", + "resolved": "https://registry.npmmirror.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==" + }, + "mocha": { + "version": "10.2.0", + "resolved": "https://registry.npmmirror.com/mocha/-/mocha-10.2.0.tgz", + "integrity": "sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg==", + "dev": true, + "requires": { + "ansi-colors": "4.1.1", + "browser-stdout": "1.3.1", + "chokidar": "3.5.3", + "debug": "4.3.4", + "diff": "5.0.0", + "escape-string-regexp": "4.0.0", + "find-up": "5.0.0", + "glob": "7.2.0", + "he": "1.2.0", + "js-yaml": "4.1.0", + "log-symbols": "4.1.0", + "minimatch": "5.0.1", + "ms": "2.1.3", + "nanoid": "3.3.3", + "serialize-javascript": "6.0.0", + "strip-json-comments": "3.1.1", + "supports-color": "8.1.1", + "workerpool": "6.2.1", + "yargs": "16.2.0", + "yargs-parser": "20.2.4", + "yargs-unparser": "2.0.0" + }, + "dependencies": { + "glob": { + "version": "7.2.0", + "resolved": "https://registry.npmmirror.com/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "dependencies": { + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + } + } + }, + "minimatch": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-5.0.1.tgz", + "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + } + } + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } }, "ms": { - "version": "2.1.3", - "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "nanoid": { + "version": "3.3.3", + "resolved": "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.3.tgz", + "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==", + "dev": true + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "natural-compare-lite": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", + "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", + "dev": true + }, + "neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmmirror.com/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" + }, + "node-fetch": { + "version": "2.6.7", + "resolved": "https://registry.npmmirror.com/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "requires": { + "whatwg-url": "^5.0.0" + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "requires": { + "wrappy": "1" + } + }, + "onml": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/onml/-/onml-2.1.0.tgz", + "integrity": "sha512-fvaSZRzprpwLFge/mcwE0CItfniNisVNamDdMK1FQUjh4ArQZ8ZWSkDaJbZc3XaANKZHq0xIa8NJpZ2HSe3oXA==", + "requires": { + "sax": "^1.2.1" + } + }, + "optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmmirror.com/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "requires": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + } + }, + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "requires": { + "p-limit": "^3.0.2" + } + }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "requires": { + "callsites": "^3.0.0" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==" + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmmirror.com/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true + }, + "pend": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/pend/-/pend-1.2.0.tgz", + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==" + }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmmirror.com/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" + }, + "prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "punycode": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/punycode/-/punycode-2.2.0.tgz", + "integrity": "sha512-LN6QV1IJ9ZhxWTNdktaPClrNfp8xdSAYS0Zk2ddX7XsXZAxckMHPCBcHRo0cTcEIgYPRiGEkmji3Idkh2yFtYw==" + }, + "puppeteer-core": { + "version": "19.6.3", + "resolved": "https://registry.npmmirror.com/puppeteer-core/-/puppeteer-core-19.6.3.tgz", + "integrity": "sha512-8MbhioSlkDaHkmolpQf9Z7ui7jplFfOFTnN8d5kPsCazRRTNIH6/bVxPskn0v5Gh9oqOBlknw0eHH0/OBQAxpQ==", + "requires": { + "cross-fetch": "3.1.5", + "debug": "4.3.4", + "devtools-protocol": "0.0.1082910", + "extract-zip": "2.0.1", + "https-proxy-agent": "5.0.1", + "proxy-from-env": "1.1.0", + "rimraf": "3.0.2", + "tar-fs": "2.1.1", + "unbzip2-stream": "1.4.3", + "ws": "8.11.0" + } + }, + "queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmmirror.com/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + } + } + }, + "readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmmirror.com/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "requires": { + "picomatch": "^2.2.1" + } + }, + "regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmmirror.com/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "dev": true + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==" + }, + "require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==" + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "requires": { + "glob": "^7.1.3" + }, + "dependencies": { + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmmirror.com/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + } + } + }, + "run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "requires": { + "queue-microtask": "^1.2.2" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmmirror.com/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" + }, + "semver": { + "version": "7.3.8", + "resolved": "https://registry.npmmirror.com/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "requires": { + "lru-cache": "^6.0.0" + } + }, + "serialize-javascript": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/serialize-javascript/-/serialize-javascript-6.0.0.tgz", + "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "dev": true, + "requires": { + "randombytes": "^2.1.0" + } + }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmmirror.com/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", + "dev": true + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "showdown": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/showdown/-/showdown-2.1.0.tgz", + "integrity": "sha512-/6NVYu4U819R2pUIk79n67SYgJHWCce0a5xTP979WbNp0FL9MN1I1QK662IDU1b6JzKTvmhgI7T7JYIxBi3kMQ==", + "requires": { + "commander": "^9.0.0" + } + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "state-machine-cat": { + "version": "9.2.5", + "resolved": "https://registry.npmmirror.com/state-machine-cat/-/state-machine-cat-9.2.5.tgz", + "integrity": "sha512-HyPgjsjDS18YTLsOjB3NaNcnbFo14qUjWZZGZCb3IQhGVAq35wi6leE80trD2br1O9vOalfOWSk3pD8m6U6VuQ==", + "requires": { + "ajv": "8.11.0", + "chalk": "5.0.1", + "commander": "9.2.0", + "fast-xml-parser": "3.21.1", + "get-stream": "6.0.1", + "handlebars": "4.7.7", + "he": "1.2.0", + "indent-string": "5.0.0", + "lodash.castarray": "4.4.0", + "lodash.clonedeep": "4.5.0", + "lodash.get": "4.4.2", + "lodash.has": "4.5.2", + "lodash.reject": "4.6.0", + "semver": "^7.3.7", + "viz.js": "1.8.2", + "wrap-ansi": "8.0.1" + }, + "dependencies": { + "ajv": { + "version": "8.11.0", + "resolved": "https://registry.npmmirror.com/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==" + }, + "ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==" + }, + "chalk": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/chalk/-/chalk-5.0.1.tgz", + "integrity": "sha512-Fo07WOYGqMfCWHOzSXOt2CxDbC6skS/jO9ynEcmpANMoPrD+W1r1K6Vx7iNm+AQmETU1Xr2t+n8nzkV9t6xh3w==" + }, + "commander": { + "version": "9.2.0", + "resolved": "https://registry.npmmirror.com/commander/-/commander-9.2.0.tgz", + "integrity": "sha512-e2i4wANQiSXgnrBlIatyHtP1odfUp0BbV5Y5nEGbxtIrStkEOAAzCUirvLBNXHLr7kwLvJl6V+4V3XV9x7Wd9w==" + }, + "emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" + }, + "get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==" + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + }, + "string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "requires": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + } + }, + "strip-ansi": { + "version": "7.0.1", + "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-7.0.1.tgz", + "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", + "requires": { + "ansi-regex": "^6.0.1" + } + }, + "wrap-ansi": { + "version": "8.0.1", + "resolved": "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-8.0.1.tgz", + "integrity": "sha512-QFF+ufAqhoYHvoHdajT/Po7KoXVBPXS2bgjIam5isfWJPfIOnQZ50JtUiVvCv/sjgacf3yRrt2ZKUZ/V4itN4g==", + "requires": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + } + } + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + } + } + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmmirror.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true + }, + "strnum": { + "version": "1.0.5", + "resolved": "https://registry.npmmirror.com/strnum/-/strnum-1.0.5.tgz", + "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==" }, "supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } + "version": "7.2.0", + "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "tar-fs": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/tar-fs/-/tar-fs-2.1.1.tgz", + "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", + "requires": { + "chownr": "^1.1.1", + "mkdirp-classic": "^0.5.2", + "pump": "^3.0.0", + "tar-stream": "^2.1.4" + } + }, + "tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "requires": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "temp": { + "version": "0.9.4", + "resolved": "https://registry.npmmirror.com/temp/-/temp-0.9.4.tgz", + "integrity": "sha512-yYrrsWnrXMcdsnu/7YMYAofM1ktpL5By7vZhf15CrXijWWrEYZks5AXBudalfSWJLlnen/QUJUB5aoB0kqZUGA==", + "requires": { + "mkdirp": "^0.5.1", + "rimraf": "~2.6.2" + }, + "dependencies": { + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmmirror.com/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmmirror.com/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmmirror.com/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmmirror.com/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "requires": { + "is-number": "^7.0.0" + } + }, + "tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmmirror.com/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + }, + "traverse": { + "version": "0.3.9", + "resolved": "https://registry.npmmirror.com/traverse/-/traverse-0.3.9.tgz", + "integrity": "sha512-iawgk0hLP3SxGKDfnDJf8wTz4p2qImnyihM5Hh/sGvQ3K37dPi/w8sRhdNIxYA1TwFwc5mDhIJq+O0RsvXBKdQ==", + "dev": true + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmmirror.com/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "tspan": { + "version": "0.4.0", + "resolved": "https://registry.npmmirror.com/tspan/-/tspan-0.4.0.tgz", + "integrity": "sha512-0ELL9tpLpTqLliFyQySaxgCO43buCML+j3TI4E1LuSI8wkzITGEVhZCyMvv/A+3ek9KpgALhhgnZESRLTbN+iw==" + }, + "tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmmirror.com/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "requires": { + "tslib": "^1.8.1" + } + }, + "type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmmirror.com/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1" + } + }, + "type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmmirror.com/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true + }, + "typescript": { + "version": "4.9.4", + "resolved": "https://registry.npmmirror.com/typescript/-/typescript-4.9.4.tgz", + "integrity": "sha512-Uz+dTXYzxXXbsFpM86Wh3dKCxrQqUcVMxwU54orwlJjOpO3ao8L7j5lH+dWfTwgCwIuM9GQ2kvVotzYJMXTBZg==", + "dev": true + }, + "uglify-js": { + "version": "3.17.4", + "resolved": "https://registry.npmmirror.com/uglify-js/-/uglify-js-3.17.4.tgz", + "integrity": "sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==", + "optional": true + }, + "unbzip2-stream": { + "version": "1.4.3", + "resolved": "https://registry.npmmirror.com/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", + "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==", + "requires": { + "buffer": "^5.2.1", + "through": "^2.3.8" + } + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==" + }, + "unzipper": { + "version": "0.10.11", + "resolved": "https://registry.npmmirror.com/unzipper/-/unzipper-0.10.11.tgz", + "integrity": "sha512-+BrAq2oFqWod5IESRjL3S8baohbevGcVA+teAIOYWM3pDVdseogqbzhhvvmiyQrUNKFUnDMtELW3X8ykbyDCJw==", + "dev": true, + "requires": { + "big-integer": "^1.6.17", + "binary": "~0.3.0", + "bluebird": "~3.4.1", + "buffer-indexof-polyfill": "~1.0.0", + "duplexer2": "~0.1.4", + "fstream": "^1.0.12", + "graceful-fs": "^4.2.2", + "listenercount": "~1.0.1", + "readable-stream": "~2.3.6", + "setimmediate": "~1.0.4" + } + }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmmirror.com/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "requires": { + "punycode": "^2.1.0" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, + "viz.js": { + "version": "1.8.2", + "resolved": "https://registry.npmmirror.com/viz.js/-/viz.js-1.8.2.tgz", + "integrity": "sha512-W+1+N/hdzLpQZEcvz79n2IgUE9pfx6JLdHh3Kh8RGvLL8P1LdJVQmi2OsDcLdY4QVID4OUy+FPelyerX0nJxIQ==" + }, + "wavedrom": { + "version": "2.9.1", + "resolved": "https://registry.npmmirror.com/wavedrom/-/wavedrom-2.9.1.tgz", + "integrity": "sha512-IPv1bKVwh4Zo8dMMQfnNy4KFqU/v0buoPDwLkTrtHE2nr0dV4pHqryhWpqNCSUm7xTWroER+nE5xRkng96xLUA==", + "requires": { + "bit-field": "^1.5.3", + "logidrom": "^0.3.1", + "onml": "^2.1.0", + "tspan": "^0.4.0" + } + }, + "webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + }, + "whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "requires": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmmirror.com/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true + }, + "wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==" + }, + "workerpool": { + "version": "6.2.1", + "resolved": "https://registry.npmmirror.com/workerpool/-/workerpool-6.2.1.tgz", + "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==", + "dev": true + }, + "wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + }, + "ws": { + "version": "8.11.0", + "resolved": "https://registry.npmmirror.com/ws/-/ws-8.11.0.tgz", + "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", + "requires": {} + }, + "y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmmirror.com/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==" + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmmirror.com/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "requires": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + } + }, + "yargs-parser": { + "version": "20.2.4", + "resolved": "https://registry.npmmirror.com/yargs-parser/-/yargs-parser-20.2.4.tgz", + "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", + "dev": true + }, + "yargs-unparser": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/yargs-unparser/-/yargs-unparser-2.0.0.tgz", + "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", + "dev": true, + "requires": { + "camelcase": "^6.0.0", + "decamelize": "^4.0.0", + "flat": "^5.0.2", + "is-plain-obj": "^2.1.0" + } + }, + "yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmmirror.com/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", + "requires": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + }, + "yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmmirror.com/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true } - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "nanoid": { - "version": "3.3.3", - "resolved": "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.3.tgz", - "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==", - "dev": true - }, - "natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmmirror.com/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true - }, - "natural-compare-lite": { - "version": "1.4.0", - "resolved": "https://registry.npmmirror.com/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", - "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", - "dev": true - }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmmirror.com/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmmirror.com/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmmirror.com/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", - "dev": true, - "requires": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" - } - }, - "p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmmirror.com/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "requires": { - "yocto-queue": "^0.1.0" - } - }, - "p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmmirror.com/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "requires": { - "p-limit": "^3.0.2" - } - }, - "parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmmirror.com/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "requires": { - "callsites": "^3.0.0" - } - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmmirror.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmmirror.com/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true - }, - "path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true - }, - "picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmmirror.com/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true - }, - "prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmmirror.com/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true - }, - "process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmmirror.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true - }, - "punycode": { - "version": "2.2.0", - "resolved": "https://registry.npmmirror.com/punycode/-/punycode-2.2.0.tgz", - "integrity": "sha512-LN6QV1IJ9ZhxWTNdktaPClrNfp8xdSAYS0Zk2ddX7XsXZAxckMHPCBcHRo0cTcEIgYPRiGEkmji3Idkh2yFtYw==", - "dev": true - }, - "queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmmirror.com/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true - }, - "randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmmirror.com/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, - "requires": { - "safe-buffer": "^5.1.0" - } - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - }, - "dependencies": { - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - } - } - }, - "readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmmirror.com/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "requires": { - "picomatch": "^2.2.1" - } - }, - "regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmmirror.com/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "dev": true - }, - "require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmmirror.com/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true - }, - "resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true - }, - "reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmmirror.com/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmmirror.com/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - }, - "dependencies": { - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmmirror.com/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - } - } - }, - "run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmmirror.com/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "requires": { - "queue-microtask": "^1.2.2" - } - }, - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true - }, - "semver": { - "version": "7.3.8", - "resolved": "https://registry.npmmirror.com/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "serialize-javascript": { - "version": "6.0.0", - "resolved": "https://registry.npmmirror.com/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", - "dev": true, - "requires": { - "randombytes": "^2.1.0" - } - }, - "setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmmirror.com/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", - "dev": true - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmmirror.com/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmmirror.com/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true - }, - "slash": { - "version": "3.0.0", - "resolved": "https://registry.npmmirror.com/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - }, - "dependencies": { - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - } - } - }, - "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - }, - "strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmmirror.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - }, - "text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmmirror.com/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmmirror.com/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "requires": { - "is-number": "^7.0.0" - } - }, - "traverse": { - "version": "0.3.9", - "resolved": "https://registry.npmmirror.com/traverse/-/traverse-0.3.9.tgz", - "integrity": "sha512-iawgk0hLP3SxGKDfnDJf8wTz4p2qImnyihM5Hh/sGvQ3K37dPi/w8sRhdNIxYA1TwFwc5mDhIJq+O0RsvXBKdQ==", - "dev": true - }, - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmmirror.com/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, - "tsutils": { - "version": "3.21.0", - "resolved": "https://registry.npmmirror.com/tsutils/-/tsutils-3.21.0.tgz", - "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", - "dev": true, - "requires": { - "tslib": "^1.8.1" - } - }, - "type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmmirror.com/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "requires": { - "prelude-ls": "^1.2.1" - } - }, - "type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmmirror.com/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true - }, - "typescript": { - "version": "4.9.4", - "resolved": "https://registry.npmmirror.com/typescript/-/typescript-4.9.4.tgz", - "integrity": "sha512-Uz+dTXYzxXXbsFpM86Wh3dKCxrQqUcVMxwU54orwlJjOpO3ao8L7j5lH+dWfTwgCwIuM9GQ2kvVotzYJMXTBZg==", - "dev": true - }, - "unzipper": { - "version": "0.10.11", - "resolved": "https://registry.npmmirror.com/unzipper/-/unzipper-0.10.11.tgz", - "integrity": "sha512-+BrAq2oFqWod5IESRjL3S8baohbevGcVA+teAIOYWM3pDVdseogqbzhhvvmiyQrUNKFUnDMtELW3X8ykbyDCJw==", - "dev": true, - "requires": { - "big-integer": "^1.6.17", - "binary": "~0.3.0", - "bluebird": "~3.4.1", - "buffer-indexof-polyfill": "~1.0.0", - "duplexer2": "~0.1.4", - "fstream": "^1.0.12", - "graceful-fs": "^4.2.2", - "listenercount": "~1.0.1", - "readable-stream": "~2.3.6", - "setimmediate": "~1.0.4" - } - }, - "uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmmirror.com/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "requires": { - "punycode": "^2.1.0" - } - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmmirror.com/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmmirror.com/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmmirror.com/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true - }, - "workerpool": { - "version": "6.2.1", - "resolved": "https://registry.npmmirror.com/workerpool/-/workerpool-6.2.1.tgz", - "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==", - "dev": true - }, - "wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmmirror.com/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true - }, - "y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmmirror.com/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmmirror.com/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "dev": true, - "requires": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - } - }, - "yargs-parser": { - "version": "20.2.4", - "resolved": "https://registry.npmmirror.com/yargs-parser/-/yargs-parser-20.2.4.tgz", - "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", - "dev": true - }, - "yargs-unparser": { - "version": "2.0.0", - "resolved": "https://registry.npmmirror.com/yargs-unparser/-/yargs-unparser-2.0.0.tgz", - "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", - "dev": true, - "requires": { - "camelcase": "^6.0.0", - "decamelize": "^4.0.0", - "flat": "^5.0.2", - "is-plain-obj": "^2.1.0" - } - }, - "yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmmirror.com/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true } - } } diff --git a/package.json b/package.json index 84273f6..4518490 100644 --- a/package.json +++ b/package.json @@ -29,6 +29,71 @@ "type": "string", "default": "", "description": "path of the dictionary of \"custom\" in library" + }, + "function.doc.webview.backgroundImage": { + "type": "string", + "default": "", + "description": "url of the background image" + }, + "function.doc.pdf.scale": { + "type": "number", + "default": 1, + "description": "scale of the exported pdf" + }, + "function.doc.pdf.printBackground": { + "type": "boolean", + "default": true, + "description": "whether print background" + }, + "function.doc.pdf.landscape": { + "type": "boolean", + "default": false, + "description": "whether export pdf as a landscape style" + }, + "function.doc.pdf.format": { + "type": "string", + "default": "A4", + "description": "format of pdf size" + }, + "function.doc.pdf.displayHeaderFooter": { + "type": "boolean", + "default": false, + "description": "display header and footer in the exported pdf" + }, + "function.doc.pdf.browserPath": { + "type": "string", + "default": "C:/Program Files (x86)/Microsoft/Edge/Application/msedge.exe", + "description": "the absolute path of edge or chrome, we need browser to render pdf" + }, + "function.doc.pdf.margin.top": { + "type": "number", + "default": 0.5, + "description": "top margin of exported pdf, unit cm" + }, + "function.doc.pdf.margin.right": { + "type": "number", + "default": 0.5, + "description": "top margin of exported pdf, unit cm" + }, + "function.doc.pdf.margin.bottom": { + "type": "number", + "default": 0.5, + "description": "top margin of exported pdf, unit cm" + }, + "function.doc.pdf.margin.left": { + "type": "number", + "default": 0.5, + "description": "top margin of exported pdf, unit cm" + }, + "function.doc.pdf.headerTemplate": { + "type": "string", + "default": "
", + "description": "html template of header, if displayHeaderFooter is set to false, this setting will be ignored" + }, + "function.doc.pdf.footerTemplate": { + "type": "string", + "default": "
", + "description": "
/
" } } }, @@ -42,8 +107,60 @@ "command": "digital-ide.property-json.overwrite", "title": "%digital-ide.property-json.overwrite.title%", "category": "Digital-IDE" + }, + { + "command": "digital-ide.hdlDoc.exportFile", + "title": "%digital-ide.hdlDoc.exportFile.title%", + "category": "Digital-IDE" + }, + { + "command": "digital-ide.hdlDoc.exportProject", + "title": "%digital-ide.hdlDoc.exportProject.title%", + "category": "Digital-IDE" + }, + { + "command": "digital-ide.hdlDoc.showWebview", + "title": "%digital-ide.hdlDoc.showWebview.title%", + "category": "Digital-IDE", + "icon": { + "light": "images/svg/light/documentation.svg", + "dark": "images/svg/dark/documentation.svg" + } + }, + { + "command": "digital-ide.tool.instance", + "title": "%digital-ide.tool.instance.title%", + "category": "Digital-IDE" + }, + { + "command": "digital-ide.tool.testbench", + "title": "%digital-ide.tool.testbench.title%", + "category": "Digital-IDE" } ], + "menus": { + "editor/title": [ + { + "when": "editorLangId == verilog || editorLangId == systemverilog || editorLangId == vhdl", + "command": "digital-ide.hdlDoc.showWebview", + "group": "navigation@4" + } + ] + }, + "keybindings": [ + { + "command": "digital-ide.tool.instance", + "key": "alt+i", + "mac": "alt+i", + "when": "editorTextFocus" + }, + { + "command": "digital-ide.tool.testbench", + "key": "alt+t", + "mac": "alt+t", + "when": "editorTextFocus" + } + ], "languages": [ { "id": "tcl", @@ -188,7 +305,128 @@ "language": "systemverilog", "path": "snippets/svlog.json" } - ] + ], + "icons": { + "instance-verilog": { + "description": "icon of verilog in TOOL.instance", + "default": { + "fontPath": "./images/icons/iconfont.woff2", + "fontCharacter": "\\e7a8" + } + }, + "instance-vhdl": { + "description": "icon of verilog in TOOL.instance", + "default": { + "fontPath": "./images/icons/iconfont.woff2", + "fontCharacter": "\\e6b3" + } + }, + "instance-port": { + "description": "port of verilog in TOOL.instance", + "default": { + "fontPath": "./images/icons/iconfont.woff2", + "fontCharacter": "\\e638" + } + }, + "instance-param": { + "description": "param of verilog in TOOL.instance", + "default": { + "fontPath": "./images/icons/iconfont.woff2", + "fontCharacter": "\\e655" + } + }, + "instance-module": { + "description": "module of verilog in TOOL.instance", + "default": { + "fontPath": "./images/icons/iconfont.woff2", + "fontCharacter": "\\e60b" + } + }, + "instance-input": { + "description": "input", + "default": { + "fontPath": "./images/icons/iconfont.woff2", + "fontCharacter": "\\e908" + } + }, + "instance-output": { + "description": "output", + "default": { + "fontPath": "./images/icons/iconfont.woff2", + "fontCharacter": "\\e7b0" + } + }, + "instance-inout": { + "description": "inout", + "default": { + "fontPath": "./images/icons/iconfont.woff2", + "fontCharacter": "\\ea19" + } + }, + "export-html": { + "description": "export html", + "default": { + "fontPath": "./images/icons/iconfont.woff2", + "fontCharacter": "\\e633" + } + }, + "export-markdown": { + "description": "export markdown", + "default": { + "fontPath": "./images/icons/iconfont.woff2", + "fontCharacter": "\\ee68" + } + }, + "export-pdf": { + "description": "export pdf", + "default": { + "fontPath": "./images/icons/iconfont.woff2", + "fontCharacter": "\\e684" + } + }, + "libpick-folder": { + "description": "libpick folder", + "default": { + "fontPath": "./images/icons/iconfont.woff2", + "fontCharacter": "\\e600" + } + }, + "libpick-verilog": { + "description": "libpick verilog", + "default": { + "fontPath": "./images/icons/iconfont.woff2", + "fontCharacter": "\\e7a8" + } + }, + "libpick-vhdl": { + "description": "libpick vhdl", + "default": { + "fontPath": "./images/icons/iconfont.woff2", + "fontCharacter": "\\e6b3" + } + }, + "libpick-common": { + "description": "libpick common", + "default": { + "fontPath": "./images/icons/iconfont.woff2", + "fontCharacter": "\\e622" + } + }, + "libpick-custom": { + "description": "libpick custom", + "default": { + "fontPath": "./images/icons/iconfont.woff2", + "fontCharacter": "\\e623" + } + }, + "libpick-unknown": { + "description": "libpick unknown", + "default": { + "fontPath": "./images/icons/iconfont.woff2", + "fontCharacter": "\\e62a" + } + } + } }, "scripts": { "vscode:prepublish": "npm run compile", @@ -199,16 +437,25 @@ "test": "node ./out/test/runTest.js" }, "devDependencies": { - "@types/vscode": "^1.74.0", "@types/glob": "^8.0.0", "@types/mocha": "^10.0.0", "@types/node": "16.x", + "@types/showdown": "^2.0.0", + "@types/vscode": "^1.74.0", "@typescript-eslint/eslint-plugin": "^5.42.0", "@typescript-eslint/parser": "^5.42.0", + "@vscode/test-electron": "^2.2.0", "eslint": "^8.26.0", "glob": "^8.0.3", "mocha": "^10.1.0", - "typescript": "^4.8.4", - "@vscode/test-electron": "^2.2.0" + "typescript": "^4.8.4" + }, + "dependencies": { + "chokidar": "^3.5.3", + "puppeteer-core": "^19.4.1", + "showdown": "^2.1.0", + "state-machine-cat": "^9.2.5", + "temp": "^0.9.4", + "wavedrom": "^2.9.1" } } \ No newline at end of file diff --git a/package.nls.json b/package.nls.json index 894a33e..e8c0e35 100644 --- a/package.nls.json +++ b/package.nls.json @@ -1,4 +1,9 @@ { "digital-ide.property-json.generate.title": "generate property.json", - "digital-ide.property-json.overwrite.title": "overwrite property.json template" + "digital-ide.property-json.overwrite.title": "overwrite property.json template", + "digital-ide.hdlDoc.exportFile.title": "export the document of current file", + "digital-ide.hdlDoc.exportProject.title": "export the document of current project", + "digital-ide.hdlDoc.showWebview.title": "show the document of current file in a webview", + "digital-ide.tool.instance.title": "generate instance template from selected module", + "digital-ide.tool.testbench.title": "generate testbench template from current file" } \ No newline at end of file diff --git a/package.nls.zh-cn.json b/package.nls.zh-cn.json index a813ee3..aa23fc5 100644 --- a/package.nls.zh-cn.json +++ b/package.nls.zh-cn.json @@ -1,4 +1,9 @@ { "digital-ide.property-json.generate.title": "生成 property.json 配置文件", - "digital-ide.property-json.overwrite.title": "修改默认的 property.json 模板文件" + "digital-ide.property-json.overwrite.title": "修改默认的 property.json 模板文件", + "digital-ide.hdlDoc.exportFile.title": "导出当前文件的文档", + "digital-ide.hdlDoc.exportProject.title": "导出当前项目的文档", + "digital-ide.hdlDoc.showWebview.title": "在webview中展示文档", + "digital-ide.tool.instance.title": "生成选中module的例化模板", + "digital-ide.tool.testbench.title": "从当前文件中选择module生成testbench" } \ No newline at end of file diff --git a/package.nls.zh-tw.json b/package.nls.zh-tw.json index 4a184ef..31c587d 100644 --- a/package.nls.zh-tw.json +++ b/package.nls.zh-tw.json @@ -1,4 +1,9 @@ { "digital-ide.property-json.generate.title": "", - "digital-ide.property-json.overwrite.title": "" + "digital-ide.property-json.overwrite.title": "", + "digital-ide.hdlDoc.exportFile.title": "", + "digital-ide.hdlDoc.exportProject.title": "", + "digital-ide.hdlDoc.showWebview.title": "", + "digital-ide.tool.instance.title": "", + "digital-ide.tool.testbench.title": "" } \ No newline at end of file diff --git a/wasm/hdlParser/.gitignore b/resources/hdlParser/.gitignore similarity index 100% rename from wasm/hdlParser/.gitignore rename to resources/hdlParser/.gitignore diff --git a/wasm/hdlParser/index.d.ts b/resources/hdlParser/index.d.ts similarity index 54% rename from wasm/hdlParser/index.d.ts rename to resources/hdlParser/index.d.ts index fbc8140..bb61d42 100644 --- a/wasm/hdlParser/index.d.ts +++ b/resources/hdlParser/index.d.ts @@ -23,5 +23,9 @@ interface All { macro: Macro } -export function vlogFast(path: AbsPath): Promise; -export function vlogAll(path: AbsPath): Promise; \ No newline at end of file +export function vlogFast(path: AbsPath): Promise; +export function vlogAll(path: AbsPath): Promise; +export function vhdlFast(path: AbsPath): Promise; +export function vhdlAll(path: AbsPath): Promise; +export function svFast(path: AbsPath): Promise; +export function svAll(path: AbsPath): Promise; \ No newline at end of file diff --git a/wasm/hdlParser/index.js b/resources/hdlParser/index.js similarity index 55% rename from wasm/hdlParser/index.js rename to resources/hdlParser/index.js index 8f2254c..9dd6084 100644 --- a/wasm/hdlParser/index.js +++ b/resources/hdlParser/index.js @@ -1,4 +1,5 @@ const hdlParser = require('./parser'); +const fs = require('fs'); const _hdlParser = { module: null, @@ -17,22 +18,60 @@ const _hdlParser = { }; async function vlogFast(path) { + if (!fs.existsSync(path)) { + return undefined; + } const wasmModule = await _hdlParser.acquire(); - const source = fs.readFileSync(path, 'utf-8'); + const source = fs.readFileSync(path, 'utf-8') + '\n'; wasmModule.FS.writeFile(_hdlParser.tempPath, source, { encoding: 'utf8' }); const res = wasmModule.ccall('vlog_fast', 'string', ['string'], [_hdlParser.tempPath]); return JSON.parse(res); } async function vlogAll(path) { + if (!fs.existsSync(path)) { + return undefined; + } const wasmModule = await _hdlParser.acquire(); - const source = fs.readFileSync(path, 'utf-8'); + const source = fs.readFileSync(path, 'utf-8') + '\n'; wasmModule.FS.writeFile(_hdlParser.tempPath, source, { encoding: 'utf8' }); const res = wasmModule.ccall('vlog_all', 'string', ['string'], [_hdlParser.tempPath]); return JSON.parse(res); } +async function vhdlFast(path) { + if (!fs.existsSync(path)) { + return undefined; + } + return {}; +} + +async function vhdlAll(path) { + if (!fs.existsSync(path)) { + return undefined; + } + return {}; +} + +async function svFast(path) { + if (!fs.existsSync(path)) { + return undefined; + } + return {}; +} + +async function svAll(path) { + if (!fs.existsSync(path)) { + return undefined; + } + return {}; +} + module.exports = { vlogFast, - vlogAll + vlogAll, + vhdlFast, + vhdlAll, + svFast, + svAll }; \ No newline at end of file diff --git a/resources/json5/index.d.ts b/resources/json5/index.d.ts new file mode 100644 index 0000000..e5cb067 --- /dev/null +++ b/resources/json5/index.d.ts @@ -0,0 +1,7 @@ +// It seems that webpack cannot package the json5 correctly + +declare module JSON5 { + export function parse(text: string): any; +} + +export = JSON5; \ No newline at end of file diff --git a/resources/json5/index.js b/resources/json5/index.js new file mode 100644 index 0000000..404cc92 --- /dev/null +++ b/resources/json5/index.js @@ -0,0 +1 @@ +!function(u,D){"object"==typeof exports&&"undefined"!=typeof module?module.exports=D():"function"==typeof define&&define.amd?define(D):u.JSON5=D()}(this,function(){"use strict";var u,D,e=(function(u,D){Object.defineProperty(D,"__esModule",{value:!0});D.Space_Separator=/[\u1680\u2000-\u200A\u202F\u205F\u3000]/,D.ID_Start=/[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FD5\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF30-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDF00-\uDF19]|\uD806[\uDCA0-\uDCDF\uDCFF\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50\uDF93-\uDF9F\uDFE0]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00\uDC01]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1]|\uD87E[\uDC00-\uDE1D]/,D.ID_Continue=/[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u08A0-\u08B4\u08B6-\u08BD\u08D4-\u08E1\u08E3-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0AF9\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C80-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D01-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D54-\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19D9\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1CD0-\u1CD2\u1CD4-\u1CF6\u1CF8\u1CF9\u1D00-\u1DF5\u1DFB-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u2E2F\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099\u309A\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FD5\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C5\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDDFD\uDE80-\uDE9C\uDEA0-\uDED0\uDEE0\uDF00-\uDF1F\uDF30-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE38-\uDE3A\uDE3F\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE6\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC00-\uDC46\uDC66-\uDC6F\uDC7F-\uDCBA\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDCA-\uDDCC\uDDD0-\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE37\uDE3E\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF00-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3C-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF50\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC00-\uDC4A\uDC50-\uDC59\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDDD8-\uDDDD\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB7\uDEC0-\uDEC9\uDF00-\uDF19\uDF1D-\uDF2B\uDF30-\uDF39]|\uD806[\uDCA0-\uDCE9\uDCFF\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC36\uDC38-\uDC40\uDC50-\uDC59\uDC72-\uDC8F\uDC92-\uDCA7\uDCA9-\uDCB6]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDEF0-\uDEF4\uDF00-\uDF36\uDF40-\uDF43\uDF50-\uDF59\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50-\uDF7E\uDF8F-\uDF9F\uDFE0]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00\uDC01]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD838[\uDC00-\uDC06\uDC08-\uDC18\uDC1B-\uDC21\uDC23\uDC24\uDC26-\uDC2A]|\uD83A[\uDC00-\uDCC4\uDCD0-\uDCD6\uDD00-\uDD4A\uDD50-\uDD59]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1]|\uD87E[\uDC00-\uDE1D]|\uDB40[\uDD00-\uDDEF]/}(u={exports:{}},u.exports),u.exports);(D=e)&&D.__esModule&&Object.prototype.hasOwnProperty.call(D,"default")&&D.default;var F=e.Space_Separator,C=e.ID_Start,A=e.ID_Continue;function r(u){return u>="a"&&u<="z"||u>="A"&&u<="Z"||"$"===u||"_"===u||C.test(u)}function t(u){return u>="a"&&u<="z"||u>="A"&&u<="Z"||u>="0"&&u<="9"||"$"===u||"_"===u||"‌"===u||"‍"===u||A.test(u)}function n(u){return/[0-9]/.test(u)}function E(u){return/[0-9A-Fa-f]/.test(u)}var i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(u){return typeof u}:function(u){return u&&"function"==typeof Symbol&&u.constructor===Symbol&&u!==Symbol.prototype?"symbol":typeof u},a=void 0,o=void 0,B=void 0,c=void 0,s=void 0,f=void 0,l=void 0,d=void 0,v=void 0;var m=void 0,p=void 0,y=void 0,h=void 0,b=void 0;function w(){for(m="default",p="",y=!1,h=1;;){b=g();var u=x[m]();if(u)return u}}function g(){if(a[c])return String.fromCodePoint(a.codePointAt(c))}function S(){var u=g();return"\n"===u?(s++,f=0):u?f+=u.length:f++,u&&(c+=u.length),u}var x={default:function(){switch(b){case"\t":case"\v":case"\f":case" ":case" ":case"\ufeff":case"\n":case"\r":case"\u2028":case"\u2029":return void S();case"/":return S(),void(m="comment");case void 0:return S(),N("eof")}if(!function(u){return F.test(u)}(b))return x[o]();S()},comment:function(){switch(b){case"*":return S(),void(m="multiLineComment");case"/":return S(),void(m="singleLineComment")}throw V(S())},multiLineComment:function(){switch(b){case"*":return S(),void(m="multiLineCommentAsterisk");case void 0:throw V(S())}S()},multiLineCommentAsterisk:function(){switch(b){case"*":return void S();case"/":return S(),void(m="default");case void 0:throw V(S())}S(),m="multiLineComment"},singleLineComment:function(){switch(b){case"\n":case"\r":case"\u2028":case"\u2029":return S(),void(m="default");case void 0:return S(),N("eof")}S()},value:function(){switch(b){case"{":case"[":return N("punctuator",S());case"n":return S(),P("ull"),N("null",null);case"t":return S(),P("rue"),N("boolean",!0);case"f":return S(),P("alse"),N("boolean",!1);case"-":case"+":return"-"===S()&&(h=-1),void(m="sign");case".":return p=S(),void(m="decimalPointLeading");case"0":return p=S(),void(m="zero");case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":return p=S(),void(m="decimalInteger");case"I":return S(),P("nfinity"),N("numeric",1/0);case"N":return S(),P("aN"),N("numeric",NaN);case'"':case"'":return y='"'===S(),p="",void(m="string")}throw V(S())},identifierNameStartEscape:function(){if("u"!==b)throw V(S());S();var u=O();switch(u){case"$":case"_":break;default:if(!r(u))throw L()}p+=u,m="identifierName"},identifierName:function(){switch(b){case"$":case"_":case"‌":case"‍":return void(p+=S());case"\\":return S(),void(m="identifierNameEscape")}if(!t(b))return N("identifier",p);p+=S()},identifierNameEscape:function(){if("u"!==b)throw V(S());S();var u=O();switch(u){case"$":case"_":case"‌":case"‍":break;default:if(!t(u))throw L()}p+=u,m="identifierName"},sign:function(){switch(b){case".":return p=S(),void(m="decimalPointLeading");case"0":return p=S(),void(m="zero");case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":return p=S(),void(m="decimalInteger");case"I":return S(),P("nfinity"),N("numeric",h*(1/0));case"N":return S(),P("aN"),N("numeric",NaN)}throw V(S())},zero:function(){switch(b){case".":return p+=S(),void(m="decimalPoint");case"e":case"E":return p+=S(),void(m="decimalExponent");case"x":case"X":return p+=S(),void(m="hexadecimal")}return N("numeric",0*h)},decimalInteger:function(){switch(b){case".":return p+=S(),void(m="decimalPoint");case"e":case"E":return p+=S(),void(m="decimalExponent")}if(!n(b))return N("numeric",h*Number(p));p+=S()},decimalPointLeading:function(){if(n(b))return p+=S(),void(m="decimalFraction");throw V(S())},decimalPoint:function(){switch(b){case"e":case"E":return p+=S(),void(m="decimalExponent")}return n(b)?(p+=S(),void(m="decimalFraction")):N("numeric",h*Number(p))},decimalFraction:function(){switch(b){case"e":case"E":return p+=S(),void(m="decimalExponent")}if(!n(b))return N("numeric",h*Number(p));p+=S()},decimalExponent:function(){switch(b){case"+":case"-":return p+=S(),void(m="decimalExponentSign")}if(n(b))return p+=S(),void(m="decimalExponentInteger");throw V(S())},decimalExponentSign:function(){if(n(b))return p+=S(),void(m="decimalExponentInteger");throw V(S())},decimalExponentInteger:function(){if(!n(b))return N("numeric",h*Number(p));p+=S()},hexadecimal:function(){if(E(b))return p+=S(),void(m="hexadecimalInteger");throw V(S())},hexadecimalInteger:function(){if(!E(b))return N("numeric",h*Number(p));p+=S()},string:function(){switch(b){case"\\":return S(),void(p+=function(){switch(g()){case"b":return S(),"\b";case"f":return S(),"\f";case"n":return S(),"\n";case"r":return S(),"\r";case"t":return S(),"\t";case"v":return S(),"\v";case"0":if(S(),n(g()))throw V(S());return"\0";case"x":return S(),function(){var u="",D=g();if(!E(D))throw V(S());if(u+=S(),!E(D=g()))throw V(S());return u+=S(),String.fromCodePoint(parseInt(u,16))}();case"u":return S(),O();case"\n":case"\u2028":case"\u2029":return S(),"";case"\r":return S(),"\n"===g()&&S(),"";case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":case void 0:throw V(S())}return S()}());case'"':return y?(S(),N("string",p)):void(p+=S());case"'":return y?void(p+=S()):(S(),N("string",p));case"\n":case"\r":throw V(S());case"\u2028":case"\u2029":!function(u){console.warn("JSON5: '"+u+"' is not valid ECMAScript; consider escaping")}(b);break;case void 0:throw V(S())}p+=S()},start:function(){switch(b){case"{":case"[":return N("punctuator",S())}m="value"},beforePropertyName:function(){switch(b){case"$":case"_":return p=S(),void(m="identifierName");case"\\":return S(),void(m="identifierNameStartEscape");case"}":return N("punctuator",S());case'"':case"'":return y='"'===S(),void(m="string")}if(r(b))return p+=S(),void(m="identifierName");throw V(S())},afterPropertyName:function(){if(":"===b)return N("punctuator",S());throw V(S())},beforePropertyValue:function(){m="value"},afterPropertyValue:function(){switch(b){case",":case"}":return N("punctuator",S())}throw V(S())},beforeArrayValue:function(){if("]"===b)return N("punctuator",S());m="value"},afterArrayValue:function(){switch(b){case",":case"]":return N("punctuator",S())}throw V(S())},end:function(){throw V(S())}};function N(u,D){return{type:u,value:D,line:s,column:f}}function P(u){var D=!0,e=!1,F=void 0;try{for(var C,A=u[Symbol.iterator]();!(D=(C=A.next()).done);D=!0){var r=C.value;if(g()!==r)throw V(S());S()}}catch(u){e=!0,F=u}finally{try{!D&&A.return&&A.return()}finally{if(e)throw F}}}function O(){for(var u="",D=4;D-- >0;){if(!E(g()))throw V(S());u+=S()}return String.fromCodePoint(parseInt(u,16))}var j={start:function(){if("eof"===l.type)throw J();I()},beforePropertyName:function(){switch(l.type){case"identifier":case"string":return d=l.value,void(o="afterPropertyName");case"punctuator":return void _();case"eof":throw J()}},afterPropertyName:function(){if("eof"===l.type)throw J();o="beforePropertyValue"},beforePropertyValue:function(){if("eof"===l.type)throw J();I()},beforeArrayValue:function(){if("eof"===l.type)throw J();"punctuator"!==l.type||"]"!==l.value?I():_()},afterPropertyValue:function(){if("eof"===l.type)throw J();switch(l.value){case",":return void(o="beforePropertyName");case"}":_()}},afterArrayValue:function(){if("eof"===l.type)throw J();switch(l.value){case",":return void(o="beforeArrayValue");case"]":_()}},end:function(){}};function I(){var u=void 0;switch(l.type){case"punctuator":switch(l.value){case"{":u={};break;case"[":u=[]}break;case"null":case"boolean":case"numeric":case"string":u=l.value}if(void 0===v)v=u;else{var D=B[B.length-1];Array.isArray(D)?D.push(u):Object.defineProperty(D,d,{value:u,writable:!0,enumerable:!0,configurable:!0})}if(null!==u&&"object"===(void 0===u?"undefined":i(u)))B.push(u),o=Array.isArray(u)?"beforeArrayValue":"beforePropertyName";else{var e=B[B.length-1];o=null==e?"end":Array.isArray(e)?"afterArrayValue":"afterPropertyValue"}}function _(){B.pop();var u=B[B.length-1];o=null==u?"end":Array.isArray(u)?"afterArrayValue":"afterPropertyValue"}function V(u){return k(void 0===u?"JSON5: invalid end of input at "+s+":"+f:"JSON5: invalid character '"+function(u){var D={"'":"\\'",'"':'\\"',"\\":"\\\\","\b":"\\b","\f":"\\f","\n":"\\n","\r":"\\r","\t":"\\t","\v":"\\v","\0":"\\0","\u2028":"\\u2028","\u2029":"\\u2029"};if(D[u])return D[u];if(u<" "){var e=u.charCodeAt(0).toString(16);return"\\x"+("00"+e).substring(e.length)}return u}(u)+"' at "+s+":"+f)}function J(){return k("JSON5: invalid end of input at "+s+":"+f)}function L(){return k("JSON5: invalid identifier character at "+s+":"+(f-=5))}function k(u){var D=new SyntaxError(u);return D.lineNumber=s,D.columnNumber=f,D}return{parse:function(u,D){a=String(u),o="start",B=[],c=0,s=1,f=0,l=void 0,d=void 0,v=void 0;do{l=w(),j[o]()}while("eof"!==l.type);return"function"==typeof D?function u(D,e,F){var C=D[e];if(null!=C&&"object"===(void 0===C?"undefined":i(C)))if(Array.isArray(C))for(var A=0;A0&&(e=Math.min(10,Math.floor(e)),E=" ".substr(0,e)):"string"==typeof e&&(E=e.substr(0,10)),v("",{"":u});function v(u,D){var e=D[u];switch(null!=e&&("function"==typeof e.toJSON5?e=e.toJSON5(u):"function"==typeof e.toJSON&&(e=e.toJSON(u))),n&&(e=n.call(D,u,e)),e instanceof Number?e=Number(e):e instanceof String?e=String(e):e instanceof Boolean&&(e=e.valueOf()),e){case null:return"null";case!0:return"true";case!1:return"false"}return"string"==typeof e?m(e):"number"==typeof e?String(e):"object"===(void 0===e?"undefined":i(e))?Array.isArray(e)?function(u){if(F.indexOf(u)>=0)throw TypeError("Converting circular structure to JSON5");F.push(u);var D=C;C+=E;for(var e=[],A=0;A=0)throw TypeError("Converting circular structure to JSON5");F.push(u);var D=C;C+=E;var e=A||Object.keys(u),r=[],t=!0,n=!1,i=void 0;try{for(var a,o=e[Symbol.iterator]();!(t=(a=o.next()).done);t=!0){var B=a.value,c=v(B,u);if(void 0!==c){var s=p(B)+":";""!==E&&(s+=" "),s+=c,r.push(s)}}}catch(u){n=!0,i=u}finally{try{!t&&o.return&&o.return()}finally{if(n)throw i}}var f=void 0;if(0===r.length)f="{}";else{var l=void 0;if(""===E)l=r.join(","),f="{"+l+"}";else{var d=",\n"+C;l=r.join(d),f="{\n"+C+l+",\n"+D+"}"}}return F.pop(),C=D,f}(e):void 0}function m(u){var D={"'":.1,'"':.2},e={"'":"\\'",'"':'\\"',"\\":"\\\\","\b":"\\b","\f":"\\f","\n":"\\n","\r":"\\r","\t":"\\t","\v":"\\v","\0":"\\0","\u2028":"\\u2028","\u2029":"\\u2029"},F="",C=!0,A=!1,r=void 0;try{for(var t,n=u[Symbol.iterator]();!(C=(t=n.next()).done);C=!0){var E=t.value;switch(E){case"'":case'"':D[E]++,F+=E;continue}if(e[E])F+=e[E];else if(E<" "){var i=E.charCodeAt(0).toString(16);F+="\\x"+("00"+i).substring(i.length)}else F+=E}}catch(u){A=!0,r=u}finally{try{!C&&n.return&&n.return()}finally{if(A)throw r}}var o=a||Object.keys(D).reduce(function(u,e){return D[u] { + const id = i + 1; + this.value += joinString(id + '.', v, '\n'); + }); + } +}; + +class Quote extends BaseDoc { + /** + * @description quote, tag > in markdown + * @param {string} value + */ + constructor(value: string) { + super(value); + this.value = joinString(MarkdownTag.Quote, value); + } +}; + +class Bold extends BaseDoc { + constructor(value: string) { + super(value); + this.value = catString(MarkdownTag.Bold, value, MarkdownTag.Bold); + } +}; + +class Italic extends BaseDoc { + constructor(value: string) { + super(value); + this.value = catString(MarkdownTag.Italic, value, MarkdownTag.Italic); + } +}; + +class InlineCode extends BaseDoc { + constructor(value: string) { + super(value); + this.value = catString(MarkdownTag.InlineCode, value, MarkdownTag.InlineCode); + } +} + +class Split extends BaseDoc { + constructor() { + super('---'); + } +}; + +class Table extends BaseDoc { + + constructor(fieldNames: string[], rows: string[][], align: MarkdownAlign = MarkdownAlign.Left) { + const colNum = fieldNames.length; + const rowNum = rows.length; + const alignString = getAlignSpliter(align); + + let value = catString('| ', fieldNames.join(' | '), ' |', '\n'); + const alignUnit = catString('| ', alignString, ' '); + value += catString(alignUnit.repeat(colNum), '|', '\n'); + for (let row = 0; row < rowNum; ++ row) { + const data = rows[row]; + value += catString('| ', data.join(' | '), '|'); + if (row < rowNum - 1) { + value += '\n'; + } + } + super(value); + } +}; + +abstract class RenderString { + line: number; + type: RenderType; + + constructor(line: number, type: RenderType) { + this.line = line; + this.type = type; + } + + abstract render(): string; +} + +interface MarkdownStringValue { + tag: BaseDoc + end: string +}; + +class MarkdownString extends RenderString { + values: MarkdownStringValue[]; + constructor(line: number) { + super(line, RenderType.Markdown); + this.values = []; + } + addText(value: string, end: string='\n') { + const tag = new Text(value); + this.values.push({tag, end}); + } + addTitle(value: string, level: number, end: string='\n') { + const tag = new Title(value, level); + this.values.push({tag, end}); + } + addQuote(value: string, end: string='\n') { + const tag = new Quote(value); + this.values.push({tag, end}); + } + addBold(value: string, end: string='\n') { + const tag = new Bold(value); + this.values.push({tag, end}); + } + addEnter() { + const tag = {value : ''}; + const end = '\n'; + this.values.push({tag, end}); + } + addItalic(value: string, end='\n') { + const tag = new Italic(value); + this.values.push({tag, end}); + } + addInlineCode(value: string, end='\n') { + const tag = new InlineCode(value); + this.values.push({tag, end}); + } + addUnorderedList(values: string[]) { + const end = ''; + const tag = new UnorderedList(values); + this.values.push({tag, end}); + } + addOrderedList(values: string[]) { + const end = ''; + const tag = new OrderedList(values); + this.values.push({tag, end}); + } + addSplit(value: string) { + const end = '\n'; + const tag = new Split(); + this.values.push({tag, end}); + } + addTable(fieldNames: string[], rows: string[][], align=MarkdownAlign.Left, end='\n') { + const tag = new Table(fieldNames, rows, align); + this.values.push({tag, end}); + } + renderMarkdown() { + let markdown = ''; + for (const md of this.values) { + markdown += md.tag.value + md.end; + } + return markdown; + } + render() { + const rawMD = this.renderMarkdown(); + return converter.makeHtml(rawMD); + } +}; + +class WavedromString extends RenderString { + value: string; + desc: string; + + constructor(line: number, desc: string) { + super(line, RenderType.Wavedrom); + this.value = ''; + this.desc = desc; + } + add(text: string) { + this.value += text; + } + render(): string { + const style = getThemeColorKind(); + return makeWaveDromSVG(this.value, style); + } +}; + +function parseJson5(text: string): any { + let json = null; + try { + json = JSON5.parse(text); + } catch (error) { + MainOutput.report('error happen when parse json ', ReportType.Error); + MainOutput.report(error, ReportType.Error); + } + return json; +} + + +function makeWaveDromSVG(wavedromComment: string, style: ThemeType): string { + const json = parseJson5(wavedromComment); + try { + if (!json) { + return ''; + } + const svgString = Wavedrom.renderWaveDrom(Count.svgMakeTimes, json, style); + Count.svgMakeTimes += 1; + return svgString; + } catch (error) { + MainOutput.report('error happen when render ' + wavedromComment, ReportType.Error); + MainOutput.report(error, ReportType.Error); + return ''; + } +} + +/** + * extract wavedrom comment from hdl file + * @param path + * @returns + */ +async function getWavedromsFromFile(path: string): Promise { + let lineID = 0; + let findWavedrom = false; + const wavedroms: WavedromString[] = []; + + const fileStream = fs.createReadStream(path, 'utf-8'); + const rl = readline.createInterface({ + input: fileStream, + crlfDelay: Infinity + }); + + for await (const line of rl) { + lineID += 1; + if (findWavedrom) { + if (/\*\//g.test(line)) { + findWavedrom = false; + } else { + const currentWav = wavedroms[wavedroms.length - 1]; + currentWav.add(line.trim()); + } + } else { + if (/\/\*[\s\S]*(@wavedrom)/g.test(line)) { + findWavedrom = true; + let spliters = line.trim().split('@wavedrom'); + let desc = spliters[spliters.length - 1]; + const newWavedrom = new WavedromString(lineID, desc); + wavedroms.push(newWavedrom); + } + } + } + + return wavedroms; +} + +function mergeSortByLine(docs: MarkdownString[], svgs: WavedromString[]): RenderString[] { + const renderList = []; + let i = 0, j = 0; + while (i < docs.length && j < svgs.length) { + if (docs[i].line < svgs[j].line) { + renderList.push(docs[i]); + i ++; + } else { + renderList.push(svgs[j]); + j ++; + } + } + while (i < docs.length) { + renderList.push(docs[i]); + i ++; + } + while (j < svgs.length) { + renderList.push(svgs[j]); + j ++; + } + return renderList; +} + + +export { + converter, + mergeSortByLine, + RenderType, + BaseDoc, + MarkdownString, + WavedromString, + RenderString, + makeWaveDromSVG, + getWavedromsFromFile, + Count +}; \ No newline at end of file diff --git a/src/function/hdlDoc/html.ts b/src/function/hdlDoc/html.ts new file mode 100644 index 0000000..658800f --- /dev/null +++ b/src/function/hdlDoc/html.ts @@ -0,0 +1,227 @@ +import * as assert from 'assert'; +import * as vscode from 'vscode'; +import * as fs from 'fs'; + +import { opeParam, MainOutput, AbsPath } from '../../global'; + +import { Count, MarkdownString, WavedromString } from './common'; +import { getRenderList, getCurrentRenderList } from './markdown'; +import { hdlPath, hdlIcon, hdlFile } from '../../hdlFs'; + +const _cache = { + css : '' +}; + +function makeFinalHTML(body: string, style: string): string { + return ` + + + + + + Document + + +
+
+ ${body} +
+
+ + +`; +} + + +function makeExportHTML(cssHref: string, body: string): string { + return ` + + + + + + Document + + + +
+
+ ${body} +
+
+ +`; +} + +function makeCommonElement(renderResult: string): string { + return renderResult + '
\n'; +} + +function makeSVGElement(renderResult: string, caption: string): string { + let mainHtml; + if (caption) { + mainHtml = '
' + renderResult + `

${caption}

` + '
'; + } else { + mainHtml = '
' + renderResult + '
'; + } + return '
' + mainHtml + '

\n'; +} + +function makeSVGElementByLink(link: AbsPath, caption: string): string { + let mainHtml; + if (caption) { + mainHtml = `

${caption}

`; + } else { + mainHtml = `
`; + } + return '
' + mainHtml + '

\n'; +} + +function getDocCssString() { + if (_cache.css) { + return _cache.css; + } else { + const cssPath = hdlPath.join(opeParam.extensionPath, 'css/documentation.css'); + const cssString = fs.readFileSync(cssPath, 'utf-8'); + _cache.css = cssString; + return cssString; + } +} + + +function makeWavedromRenderErrorHTML() { + return `
+

Error Render

+

`; +} + + +/** + * @description make the html string of a finial display style + * @param usage in whick module is used + */ +async function makeShowHTML(usage: string): Promise { + const renderList = await getCurrentRenderList(); + if (!renderList || renderList.length === 0) { + return ''; + } + + // start to render the real html + let body = ''; + for (const r of renderList) { + const renderResult = r.render(); + if (renderResult) { + if (r instanceof MarkdownString) { + body += makeCommonElement(renderResult); + } else if (r instanceof WavedromString) { + body += makeSVGElement(renderResult, r.desc); + } + } else { + body += makeWavedromRenderErrorHTML(); + } + } + + // add css + let cssString = getDocCssString(); + if (usage === 'webview') { // if invoked by webview, change background image + const webviewConfig = vscode.workspace.getConfiguration("function.doc.webview"); + const imageUrl = webviewConfig.get('backgroundImage', ''); + cssString = cssString.replace("--backgroundImage", imageUrl); + } else if (usage === 'pdf') { // if invoked by pdf, transform .vscode-light to #write + cssString = cssString.replace(/\.vscode-light/g, '#write'); + } + const html = makeFinalHTML(body, cssString); + return html; +} + +async function showDocWebview() { + const htmlPromise = makeShowHTML("webview"); + const webview = vscode.window.createWebviewPanel( + 'TOOL.doc.webview.show', + 'document', + vscode.ViewColumn.Two, + { + enableScripts: true, // enable JS + retainContextWhenHidden: true, // unchange webview when hidden, prevent extra refresh + } + ); + + webview.iconPath = hdlIcon.getIconConfig('documentation'); + webview.webview.html = await htmlPromise; +} + + +async function exportCurrentFileDocAsHTML() { + if (vscode.window.activeColorTheme.kind !== vscode.ColorThemeKind.Light) { + vscode.window.showErrorMessage('Please export html in a light theme!'); + return; + } + + const editor = vscode.window.activeTextEditor; + if (!editor) { + return; + } + const currentFilePath = hdlPath.toSlash(editor.document.fileName); + const hdlFileName = hdlPath.basename(currentFilePath); + const renderList = await getRenderList(currentFilePath); + if (!renderList || renderList.length === 0) { + return; + } + + const wsPath = opeParam.workspacePath; + const markdownFolderPath = hdlPath.join(wsPath, 'html'); + if (!fs.existsSync(markdownFolderPath)) { + fs.mkdirSync(markdownFolderPath); + } + const currentRoot = hdlPath.join(markdownFolderPath, hdlFileName); + if (fs.existsSync(currentRoot)) { + hdlFile.rmSync(currentRoot); + } + fs.mkdirSync(currentRoot); + const figureFolder = hdlPath.join(currentRoot, 'figure'); + fs.mkdirSync(figureFolder); + + const cssFolder = hdlPath.join(currentRoot, 'css'); + fs.mkdirSync(cssFolder); + const relateCssPath = './css/index.css'; + const cssPath = hdlPath.join(cssFolder, 'index.css'); + let cssString = getDocCssString(); + + // only support export in the ligth theme + cssString = cssString.replace(/\.vscode-light/g, '#write'); + fs.writeFileSync(cssPath, cssString); + + let body = ''; + for (const r of renderList) { + const renderResult = r.render(); + if (r instanceof MarkdownString) { + body += makeCommonElement(renderResult); + } else if (r instanceof WavedromString) { + const svgName = 'wavedrom-' + Count.svgMakeTimes + '.svg'; + const svgPath = hdlPath.join(figureFolder, svgName); + fs.writeFileSync(svgPath, renderResult); + const relatePath = hdlPath.join('./figure', svgName); + body += makeSVGElementByLink(relatePath, r.desc); + } + } + + const html = makeExportHTML(relateCssPath, body); + const htmlName = 'index.html'; + const htmlPath = hdlPath.join(currentRoot, htmlName); + Count.svgMakeTimes = 0; + fs.writeFileSync(htmlPath, html); +} + +async function exportProjectDocAsHTML() { + vscode.window.showInformationMessage('this is exportProjectDocAsHTML'); +} + +export { + showDocWebview, + exportCurrentFileDocAsHTML, + exportProjectDocAsHTML, + makeShowHTML, + makeSVGElementByLink +}; \ No newline at end of file diff --git a/src/function/hdlDoc/index.ts b/src/function/hdlDoc/index.ts new file mode 100644 index 0000000..824683d --- /dev/null +++ b/src/function/hdlDoc/index.ts @@ -0,0 +1,70 @@ +import * as vscode from 'vscode'; + +import { hdlIcon } from "../../hdlFs"; +import { exportCurrentFileDocAsMarkdown, exportProjectDocAsMarkdown } from './markdown'; +import { exportCurrentFileDocAsHTML, exportProjectDocAsHTML, showDocWebview } from './html'; +import { exportCurrentFileDocAsPDF, exportProjectDocAsPDF } from './pdf'; + +const availableFormat = [ + 'markdown', 'pdf', 'html' +]; + +class ExportFunctionItem { + label: string; + format: string; + exportFunc: Function; + detail: string; + + constructor(format: string, title: string, detail: string, exportFunc: Function) { + // TODO : 等到sv的解析做好后,写入对于不同hdl的图标 + let iconID = '$(export-' + format + ') '; + this.label = iconID + title; + this.format = format; + this.exportFunc = exportFunc; + this.detail = detail; + } +}; + +function registerFileDocExport(context: vscode.ExtensionContext) { + vscode.commands.registerCommand('digital-ide.hdlDoc.exportFile', () => { + const option = { + placeHolder: 'Select an Export Format' + }; + const items = [ + new ExportFunctionItem('markdown', ' markdown', 'export markdown folder', exportCurrentFileDocAsMarkdown), + new ExportFunctionItem('pdf', ' pdf', 'only support light theme', exportCurrentFileDocAsPDF), + new ExportFunctionItem('html', ' html', 'only support light theme', exportCurrentFileDocAsHTML) + ]; + + vscode.window.showQuickPick(items, option).then(item => { + if (item) { + item.exportFunc(); + } + }); + }); +} + +function registerProjectDocExport(context: vscode.ExtensionContext) { + vscode.commands.registerCommand('digital-ide.hdlDoc.exportProject', () => { + const option = { + placeHolder: 'Select an Export Format' + }; + const items = [ + new ExportFunctionItem('markdown',' markdown', 'export markdown folder', exportProjectDocAsMarkdown), + new ExportFunctionItem('pdf', ' pdf', 'only support light theme', exportProjectDocAsPDF), + new ExportFunctionItem('html', ' html', 'only support light theme', exportProjectDocAsHTML) + ]; + + vscode.window.showQuickPick(items, option).then(item => { + if (item) { + item.exportFunc(); + } + }); + }); +} + +export { + registerFileDocExport, + registerProjectDocExport, + showDocWebview +}; \ No newline at end of file diff --git a/src/function/hdlDoc/markdown.ts b/src/function/hdlDoc/markdown.ts new file mode 100644 index 0000000..caaa1d9 --- /dev/null +++ b/src/function/hdlDoc/markdown.ts @@ -0,0 +1,252 @@ +import * as vscode from 'vscode'; +import * as fs from 'fs'; + +import { AbsPath, opeParam, MainOutput, ReportType } from '../../global'; +import { hdlParam, HdlModule } from '../../hdlParser/core'; +import { HdlModulePort, HdlModuleParam } from '../../hdlParser/common'; + +import { MarkdownString, RenderString, RenderType, + mergeSortByLine, getWavedromsFromFile, Count, WavedromString } from './common'; +import { hdlPath, hdlFile } from '../../hdlFs'; + +import { getSymbolComments } from '../lsp/util/feature'; + + +function makeSVGElementByLink(link: AbsPath, caption?: string) { + let mainHtml; + if (caption) { + mainHtml = `

${caption}

`; + } else { + mainHtml = `
`; + } + return '
' + mainHtml + '

\n'; +} + + +function makeTableFromObjArray(md: MarkdownString, array: any[], name: string, fieldNames: string[], displayNames: string[]) { + const ws = hdlPath.toSlash(opeParam.workspacePath) + '/'; + if (array.length === 0) { + md.addText(`no ${name} info`); + } else { + const rows = []; + for (const obj of array) { + const data = []; + for (const name of fieldNames) { + let value = obj[name]; + if (name === 'instModPath' && value) { + value = value.replace(ws, ''); + } + + if (value && value.trim().length === 0) { + value = ' '; + } + data.push(value); + } + rows.push(data); + } + if (displayNames) { + md.addTable(displayNames, rows); + } else { + md.addTable(fieldNames, rows); + } + } +} + + +/** + * @description add attribute description to each port/param + * @param {string} path + * @param {Array} ports + */ +async function patchComment(path: AbsPath, ports: (HdlModulePort | HdlModuleParam)[]) { + if (!ports || !ports.length) { + return; + } + const ranges = ports.map(port => port.range); + const comments = await getSymbolComments(path, ranges); + for (let i = 0; i < ports.length; ++ i) { + const inlineComment = comments[i].replace(/\n/, ' '); + ports[i].desc = inlineComment; + } +} + + +/** + * @description get basedoc obj from a module + * @param module + */ +async function getDocsFromModule(module: HdlModule): Promise { + const moduleName = module.name; + const portNum = module.ports.length; + const paramNum = module.params.length; + + // add desc can optimizer in the future version + const paramPP = patchComment(module.path, module.params); + const portPP = patchComment(module.path, module.ports); + + let topModuleDesc = ''; + if (hdlParam.isTopModule(module.path, module.name)) { + topModuleDesc = '√'; + } else { + topModuleDesc = '×'; + } + + const md = new MarkdownString(module.range.start.line); + // add module name + md.addTitle(moduleName, 1); + md.addTitle('Basic Info', 2); + const infos = [ + `${portNum} params, ${paramNum} ports`, + 'top module ' + topModuleDesc + ]; + md.addUnorderedList(infos); + md.addEnter(); + + // wait param and port patch + await paramPP; + await portPP; + + // param section + md.addTitle('params', 2); + makeTableFromObjArray(md, module.params, 'params', + ['name', 'init', 'desc'], + ['name', 'init', 'description']); + md.addEnter(); + + + // port section + md.addTitle('ports', 2); + makeTableFromObjArray(md, module.ports, 'ports', + ['name', 'type', 'width', 'desc'], + ['name', 'type', 'width', 'description']); + md.addEnter(); + + + // dependency section + md.addTitle('Dependency', 2); + const insts = []; + for (const inst of module.getAllInstances()) { + insts.push(inst); + } + makeTableFromObjArray(md, insts, 'Dependencies', + ['name', 'type', 'instModPath'], + ['name', 'module', 'path']); + + md.addEnter(); + return md; +} + + +/** + * @description get basedoc obj according to a file + * @param path absolute path of the file + */ +async function getDocsFromFile(path: AbsPath): Promise { + const moduleFile = hdlParam.getHdlFile(path); + if (!moduleFile) { + MainOutput.report('Fail to export documentation of ' + path, + ReportType.Error); + return undefined; + } + const markdownStringPromises = []; + for (const module of moduleFile.getAllHdlModules()) { + const markdownStringPromise = getDocsFromModule(module); + markdownStringPromises.push(markdownStringPromise); + } + const fileDocs = []; + for (const p of markdownStringPromises) { + const markdownString = await p; + fileDocs.push(markdownString); + } + return fileDocs; +} + +/** + * @description get render list of path + * @param path + */ +async function getRenderList(path: AbsPath): Promise { + if (!hdlFile.isHDLFile(path)) { + vscode.window.showErrorMessage('Please use the command in a HDL file!'); + return []; + } + const docs = await getDocsFromFile(path); + const svgs = await getWavedromsFromFile(path); + if (docs && svgs) { + const renderList = mergeSortByLine(docs, svgs); + return renderList; + } + return undefined; +} + + +/** + * @description return render list of current file + */ +async function getCurrentRenderList(): Promise { + const editor = vscode.window.activeTextEditor; + if (editor) { + const currentFilePath = hdlPath.toSlash(editor.document.fileName); + return await getRenderList(currentFilePath); + } + return; +} + +async function exportCurrentFileDocAsMarkdown() { + const editor = vscode.window.activeTextEditor; + if (!editor) { + return; + } + const currentFilePath = hdlPath.toSlash(editor.document.fileName); + const hdlFileName = hdlPath.basename(currentFilePath); + + const renderList = await getRenderList(currentFilePath); + if (!renderList || renderList.length === 0) { + return; + } + + const wsPath = opeParam.workspacePath; + const markdownFolderPath = hdlPath.join(wsPath, 'markdown'); + if (!fs.existsSync(markdownFolderPath)) { + fs.mkdirSync(markdownFolderPath); + } + const currentRoot = hdlPath.join(markdownFolderPath, hdlFileName); + if (fs.existsSync(currentRoot)) { + hdlFile.rmSync(currentRoot); + } + fs.mkdirSync(currentRoot); + const figureFolder = hdlPath.join(currentRoot, 'figure'); + fs.mkdirSync(figureFolder); + + let markdown = ''; + for (const r of renderList) { + if (r instanceof MarkdownString) { + markdown += r.renderMarkdown() + '\n'; + } else if (r instanceof WavedromString) { + const svgString = r.render(); + const svgName = 'wavedrom-' + Count.svgMakeTimes + '.svg'; + const svgPath = hdlPath.join(figureFolder, svgName); + fs.writeFileSync(svgPath, svgString); + const relatePath = hdlPath.join('./figure', svgName); + const svgHtml = makeSVGElementByLink(relatePath); + markdown += '\n\n' + svgHtml + '\n\n'; + } + } + + const markdownName = 'index.md'; + const markdownPath = hdlPath.join(currentRoot, markdownName); + Count.svgMakeTimes = 0; + fs.writeFileSync(markdownPath, markdown); +} + +async function exportProjectDocAsMarkdown() { + vscode.window.showInformationMessage('this is exportProjectDocAsMarkdown'); +} + +export { + getDocsFromFile, + getRenderList, + getCurrentRenderList, + exportCurrentFileDocAsMarkdown, + exportProjectDocAsMarkdown +}; \ No newline at end of file diff --git a/src/function/hdlDoc/pdf.ts b/src/function/hdlDoc/pdf.ts new file mode 100644 index 0000000..13e7d99 --- /dev/null +++ b/src/function/hdlDoc/pdf.ts @@ -0,0 +1,115 @@ +import * as vscode from 'vscode'; +import * as fs from 'fs'; +import * as puppeteer from 'puppeteer-core'; + +import { makeShowHTML } from './html'; +import { hdlFile, hdlPath } from '../../hdlFs'; +import { AbsPath, MainOutput, opeParam, ReportType } from '../../global'; + +// TODO : finish it in each platform +function getDefaultBrowerPath(): AbsPath { + switch (opeParam.os) { + case 'win32': return 'C:/Program Files (x86)/Microsoft/Edge/Application/msedge.exe'; + case 'linux': return ''; + default: return ''; + } +} + +/** + * @description transform a html file to pdf file + * @param htmlPath absolute path of input html + * @param pdfPath output path of pdf +*/ +async function htmlFile2PdfFile(htmlPath: AbsPath, pdfPath: AbsPath) { + const pdfConfig = vscode.workspace.getConfiguration("function.doc.pdf"); + const platformDefaultBrowerPath = getDefaultBrowerPath(); + const browserPath = pdfConfig.get('browserPath', platformDefaultBrowerPath); + + if (!fs.existsSync(browserPath)) { + vscode.window.showErrorMessage("Path " + browserPath + " is not a valid browser path!"); + return; + } + const browser = await puppeteer.launch({ + executablePath: browserPath, + args: ['--lang=' + vscode.env.language, '--no-sandbox', '--disable-setuid-sandbox'] + }); + + const page = await browser.newPage(); + const uriFilePath = vscode.Uri.file(htmlPath).toString(); + + await page.goto(uriFilePath, { waitUntil: 'networkidle0' }); + + const options = { + path: pdfPath, + scale: pdfConfig.scale, + displayHeaderFooter: pdfConfig.displayHeaderFooter, + headerTemplate: pdfConfig.headerTemplate, + footerTemplate: pdfConfig.footerTemplate, + printBackground: pdfConfig.printBackground, + landscape: pdfConfig.landscape, + format: pdfConfig.format, + margin: { + top: pdfConfig.margin.top + 'cm', + right: pdfConfig.margin.right + 'cm', + bottom: pdfConfig.margin.bottom + 'cm', + left: pdfConfig.margin.left + 'cm' + } + }; + await page.pdf(options); + await browser.close(); +} + +async function exportCurrentFileDocAsPDF() { + const editor = vscode.window.activeTextEditor; + if (!editor) { + return; + } + const currentFilePath = hdlPath.toSlash(editor.document.fileName); + const hdlFileName = hdlPath.basename(currentFilePath); + const wsPath = opeParam.workspacePath; + + return vscode.window.withProgress({ + location: vscode.ProgressLocation.Notification, + title: '[Digital-IDE]: Export ' + currentFilePath + '...' + }, async progress => { + try { + const html = await makeShowHTML("pdf"); + + if (!html) { + return; + } + + const pdfFolderPath = hdlPath.join(wsPath, 'pdf'); + if (!fs.existsSync(pdfFolderPath)) { + fs.mkdirSync(pdfFolderPath); + } + + const pdfName = hdlFileName + '.pdf'; + const pdfPath = hdlPath.join(pdfFolderPath, pdfName); + if (fs.existsSync(pdfPath)) { + hdlFile.rmSync(pdfPath); + } + + const tempHtmlName = hdlFileName + '.tmp.html'; + const tempHtmlPath = hdlPath.join(pdfFolderPath, tempHtmlName); + if (fs.existsSync(tempHtmlPath)) { + hdlFile.rmSync(tempHtmlPath); + } + + fs.writeFileSync(tempHtmlPath, html); + await htmlFile2PdfFile(tempHtmlPath, pdfPath); + hdlFile.rmSync(tempHtmlPath); + } catch (error) { + MainOutput.report("error happen in export pdf: " + error, ReportType.Error); + } + }); +} + +function exportProjectDocAsPDF() { + vscode.window.showInformationMessage('this is exportProjectDocAsPDF'); +} + +export { + exportCurrentFileDocAsPDF, + exportProjectDocAsPDF +}; \ No newline at end of file diff --git a/src/function/index.ts b/src/function/index.ts new file mode 100644 index 0000000..4481a86 --- /dev/null +++ b/src/function/index.ts @@ -0,0 +1,26 @@ +import * as vscode from 'vscode'; + +import * as hdlDoc from './hdlDoc'; +import * as Sim from './sim'; + +function registerDocumentation(context: vscode.ExtensionContext) { + vscode.commands.registerCommand('digital-ide.hdlDoc.showWebview', hdlDoc.showDocWebview); + hdlDoc.registerFileDocExport(context); + hdlDoc.registerProjectDocExport(context); +} + + +function registerSimulation(context: vscode.ExtensionContext) { + vscode.commands.registerCommand('digital-ide.tool.instance', Sim.instantiation); + vscode.commands.registerCommand('digital-ide.tool.testbench', Sim.testbench); +} + +function registerAllCommands(context: vscode.ExtensionContext) { + registerDocumentation(context); + registerSimulation(context); +} + + +export { + registerAllCommands +}; \ No newline at end of file diff --git a/src/function/lsp/util/completion.js b/src/function/lsp/util/completion.js new file mode 100644 index 0000000..eaddeca --- /dev/null +++ b/src/function/lsp/util/completion.js @@ -0,0 +1,203 @@ +const vscode = require('vscode'); +const fs = require('fs'); +const path = require('path'); + +const HDLPath = require('../../../HDLfilesys/operation/path'); +const { HDLParam, Module, SymbolResult, Instance } = require('../../../HDLparser'); +const { positionAfterEqual } = require('./index'); + +/** + * @param {string} folderPath + * @param {string} currentPath + * @returns {Array} + */ +function filterIncludeFiles(folderPath, currentPath) { + if (fs.existsSync(folderPath)) { + const suggestFiles = []; + for (const fileName of fs.readdirSync(folderPath)) { + const filePath = HDLPath.join(folderPath, fileName); + if (filePath == currentPath) { + continue; + } + + const stat = fs.statSync(filePath); + const clItem = new vscode.CompletionItem(fileName); + if (stat.isDirectory()) { + clItem.kind = vscode.CompletionItemKind.Folder; + } else if (stat.isFile()) { + clItem.kind = vscode.CompletionItemKind.File; + } + suggestFiles.push(clItem); + } + return suggestFiles; + } + return []; +} + +/** + * @param {vscode.TextDocument} document + * @param {vscode.Position} position + * @returns {Array} + */ +function provideIncludeFiles(document, position) { + if (position.character == 0) { + return []; + } + const filePath = HDLPath.toSlash(document.fileName); + const lineText = document.lineAt(position).text; + + let firstQIndex = lineText.lastIndexOf('"', position.character - 1); + let lastQIndex = lineText.indexOf('"', position.character); + + if (firstQIndex != -1 && lastQIndex != -1) { + const currentPath = lineText.substring(firstQIndex + 1, lastQIndex); + const folderName = currentPath.length == 0 ? '.' : currentPath; + const folderAbsPath = HDLPath.rel2abs(filePath, folderName); + return filterIncludeFiles(folderAbsPath, filePath); + } + + return []; +} + + +/** + * @param {string} singleWord + * @param {object} defines + * @returns {Promise>} + */ +function provideMacros(singleWord, defines) { + const suggestMacros = []; + if (!defines) { + return suggestMacros; + } + for (const macro of Object.keys(defines)) { + const value = defines[macro].value; + const name = '`' + macro; + const clItem = new vscode.CompletionItem('`' + macro, vscode.CompletionItemKind.Constant) + clItem.detail = 'macro ' + value; + if (singleWord[0] == '`') { + clItem.insertText = macro; + } else { + clItem.insertText = name; + } + + suggestMacros.push(clItem); + } + return suggestMacros; +} + +/** + * @param {vscode.Position} position cursor position + * @param {Instance} currentInst + * @returns {Promise>} + */ +function providePositionPorts(position, currentInst) { + const params = currentInst.instparams; + const ports = currentInst.instports; + console.log(position); + console.log(params); + console.log(ports); + + if (params && + positionAfterEqual(position, params.start) && + positionAfterEqual(params.end, position)) { + + return currentInst.module.params.map(param => { + const clItem = new vscode.CompletionItem(param.name, vscode.CompletionItemKind.Constant); + clItem.detail = 'param'; + return clItem; + }) + } + if (ports && + positionAfterEqual(position, ports.start) && + positionAfterEqual(ports.end, position)) { + + return currentInst.module.ports.map(port => { + const clItem = new vscode.CompletionItem(port.name, vscode.CompletionItemKind.Interface); + clItem.detail = 'port'; + return clItem; + }) + } + + return []; +} + + +/** + * @description provide module of the current module and include module + * @param {string} filePath + * @param {object} includes {path: range} + * @returns {Promise>} + */ +async function provideModules(filePath, includes) { + // support include of all the module + // use command property to auto add include path + const suggestModules = []; + + if (!includes) { + return suggestModules; + } + + for (const module of HDLParam.getAllModules()) { + const clItem = new vscode.CompletionItem(module.name, vscode.CompletionItemKind.Class); + clItem.detail = 'module'; + suggestModules.push(clItem); + } + + return suggestModules; +} + + +/** + * @param {Module} module + * @returns {Promise>} + */ +async function provideParamsPorts(module) { + if (!module) { + return []; + } + const suggestParamsPorts = []; + for (const param of module.params) { + const clItem = new vscode.CompletionItem(param.name, vscode.CompletionItemKind.Constant); + clItem.detail = 'param'; + suggestParamsPorts.push(clItem); + } + + for (const port of module.ports) { + const clItem = new vscode.CompletionItem(port.name, vscode.CompletionItemKind.Interface); + clItem.detail = 'port'; + suggestParamsPorts.push(clItem); + } + + + return suggestParamsPorts; +} + + +/** + * @param {Array} symbols + * @returns {Promise>} + */ +async function provideNets(symbols) { + if (!symbols) { + return []; + } + const suggestNets = []; + for (const symbol of symbols) { + if (symbol.type == 'net') { + const clItem = new vscode.CompletionItem(symbol.name, vscode.CompletionItemKind.Variable); + clItem.detail = 'net'; + suggestNets.push(clItem); + } + } + return suggestNets; +} + +module.exports = { + provideIncludeFiles, + provideMacros, + providePositionPorts, + provideModules, + provideParamsPorts, + provideNets +}; \ No newline at end of file diff --git a/src/function/lsp/util/feature.ts b/src/function/lsp/util/feature.ts new file mode 100644 index 0000000..4a9106c --- /dev/null +++ b/src/function/lsp/util/feature.ts @@ -0,0 +1,321 @@ +/* eslint-disable @typescript-eslint/naming-convention */ +import * as vscode from 'vscode'; +import { AbsPath } from '../../../global'; +import { HdlLangID } from '../../../global/enum'; +import { hdlPath, hdlFile } from '../../../hdlFs'; +import { Range } from '../../../hdlParser/common'; + +const vlogNumberReg = { + 'h' : /[0-9]+?'h([0-9a-fA-F_]+)/g, + 'b' : /[0-9]+?'b([0-1_]+)/g, + 'o' : /[0-9]+?'o([0-7_]+)/g, +}; + +const vhdlNumberReg = { + 'h' : /x"([0-9a-fA-F_]+)"/g, + 'b' : /([0-1_]+)"/g, +}; + +interface vlogNumber { + unsigned: number + signed: number +}; + +/** + * @description recognize and transfer number + * @param lineText + * @param character + */ +function transferVlogNumber(lineText: string, character: number): vlogNumber | undefined { + let numberReg = /[0-9]/; + let opt = null; + let numberString = null; + + if (numberReg.test(lineText[character])) { + const leftPart = []; + const rightPart = []; + const length = lineText.length; + for (let i = character - 1; i >= 0; -- i) { + const ch = lineText[i]; + if (numberReg.test(ch)) { + leftPart.push(ch); + } else if (Object.keys(vlogNumberReg).includes(ch)) { + if (i === 0) { + return undefined; + } else if (lineText[i - 1] === "'") { + opt = ch; + break; + } else { + return undefined; + } + } else { + return undefined; + } + } + + for (let i = character + 1; i < length; ++ i) { + const ch = lineText[i]; + if (numberReg.test(ch)) { + rightPart.push(ch); + } else { + break; + } + } + + const leftWord = leftPart.reverse().join(''); + const rightWord = rightPart.join(''); + numberString = leftWord + lineText[character] + rightWord; + } else { + return undefined; + } + + if (opt && numberString) { + return string2num(numberString, opt); + } else { + return undefined; + } +} + +/** + * @description 将数字字符串转数字(包括有符号与无符号) + * @param str 数字字符串 + * @param opt 需要转换的进制 hex | bin | oct + */ +function string2num(str: string, opt: string): vlogNumber { + let optNumber = -1; + switch (opt) { + case 'h': + optNumber = 16; + break; + case 'b': + optNumber = 2; + break; + case 'o': + optNumber = 8; + break; + default: break; + } + + let unsigned = parseInt(str, optNumber); + let pow = Math.pow(optNumber, str.length); + + let signed = unsigned; + if (unsigned >= pow >> 1) { + signed = unsigned - pow; + } + + return { + 'unsigned' : unsigned, + 'signed' : signed, + }; +} + +/** + * @description 将二进制字符串转浮点数 + * @param bin + * @param exp + * @param fra + */ +function bin2float(bin: string, exp: number, fra: number): number | undefined { + if (bin.length < exp + fra +1) { + return; + } else { + const bais = Math.pow(2, (exp-1))-1; + exp = exp - bais; + return exp; + } +} + +async function getFullSymbolInfo(document: vscode.TextDocument, range: Range, nonblank: RegExp, l_comment_symbol: string, l_comment_regExp: RegExp, needDefinition=true) { + const comments = []; + if (needDefinition) { + const startPosition = new vscode.Position(range.start.line, range.start.character); + const endPosition = new vscode.Position(range.end.line, range.end.character); + const definitionString = document.getText(new vscode.Range(startPosition, endPosition)); + comments.push(definitionString); + } + + let content = ''; + let is_b_comment = false; + let line = range.start.line + 1; + + while (line) { + line--; + content = document.lineAt(line).text; + // 首先判断该行是否是空白 + let isblank = content.match(nonblank); + if (!isblank) { + continue; + } + + if (is_b_comment) { + let b_comment_begin_index = content.indexOf('/*'); + if (b_comment_begin_index === -1) { + comments.push(content + '\n'); + continue; + } + comments.push(content.slice(b_comment_begin_index, content.length) + '\n'); + is_b_comment = false; + content = content.slice(0, b_comment_begin_index); + if (content.match(nonblank)) { + break; + } + continue; + } + + // 判断该行是否存在行注释 + let l_comment_index = content.indexOf(l_comment_symbol); + if (l_comment_index >= 0) { + let before_l_comment = content.slice(0, l_comment_index); + // before_l_comment = del_comments(before_l_comment, b_comment_end_index); + if (before_l_comment.match(nonblank)) { + // 如果去除块注释之后还有字符则认为该注释不属于所要的 + if (line === range.start.line) { + // let b_comment_last_index = content.lastIndexOf('*/'); + // b_comment_last_index = (b_comment_last_index == -1) ? 0 : (b_comment_last_index + 2); + // comments.push(content.slice(b_comment_last_index, l_comment_index) + '\n'); + comments.push(content.slice(l_comment_index, content.length) + '\n'); + continue; + } + break; + } + + // 否则该行全为该定义的注释 + comments.push(content + '\n'); + continue; + } + + // 判断该行是否存在块注释 + let b_comment_end_index = content.indexOf('*/'); + if (b_comment_end_index >= 0) { + b_comment_end_index += 2; + let behind_b_comment = content.slice(b_comment_end_index, content.length); + behind_b_comment = del_comments(behind_b_comment, l_comment_regExp); + if (behind_b_comment.match(nonblank)) { + // 如果去除块注释之后还有字符则认为该注释不属于所要的 + if (line === range.start.line) { + comments.push(content.slice(0, b_comment_end_index) + '\n'); + is_b_comment = true; + continue; + } + break; + } + + comments.push(content + '\n'); + is_b_comment = true; + continue; + } + + // 说明既不是块注释又不是行注释所以就是到了代码块 + if (line !== range.start.line) { + break; + } + } + + return comments.reverse().join(''); +} + +/** + * @description get definition and comment of a range + * @param path + * @param range + */ +async function getSymbolComment(path: AbsPath, range: Range) { + let languageId = hdlFile.getLanguageId(path); + const uri = vscode.Uri.file(path); + const documentPromise = vscode.workspace.openTextDocument(uri); + + // get comment reg util + const nonblank = /\S+/g; + const l_comment = getCommentUtilByLanguageId(languageId); + if (l_comment) { + let l_comment_symbol = l_comment.l_comment_symbol; + let l_comment_regExp = l_comment.l_comment_regExp; + + // add definition first + const document = await documentPromise; + return await getFullSymbolInfo(document, range, nonblank, l_comment_symbol, l_comment_regExp); + } + return; +} + +/** + * @description get definition and comment of a range + * @param path + * @param ranges + */ +async function getSymbolComments(path: string, ranges: Range[]): Promise { + let languageId = hdlFile.getLanguageId(path); + const uri = vscode.Uri.file(path); + const documentPromise = vscode.workspace.openTextDocument(uri); + + // get comment reg util + const nonblank = /\S+/g; + const l_comment = getCommentUtilByLanguageId(languageId); + if (!l_comment) { + return []; + } + let l_comment_symbol = l_comment.l_comment_symbol; + let l_comment_regExp = l_comment.l_comment_regExp; + + // add definition first + const document = await documentPromise; + const commentPromises = []; + const comments = []; + for (const range of ranges) { + const commentP = getFullSymbolInfo(document, range, nonblank, l_comment_symbol, l_comment_regExp, false); + commentPromises.push(commentP); + } + + for (const cp of commentPromises) { + comments.push(await cp); + } + return comments; +} + + +interface CommentUtil { + l_comment_symbol: string + l_comment_regExp: RegExp +} + +function getCommentUtilByLanguageId(languageId: HdlLangID): CommentUtil | undefined { + switch (languageId) { + case "verilog": + case "systemverilog": + return { + l_comment_symbol: '//', + l_comment_regExp: /\/\/.*/g + }; + case "vhdl": + return { + l_comment_symbol: '--', + l_comment_regExp: /--.*/g + }; + default: return undefined; + } +} + +/** + * @description delete all comment form verilog code + * @param {string} text Verilog code input + * @returns Verilog code output after deleting all comment content + */ +function del_comments(text: string, regExp: RegExp): string { + let match = text.match(regExp); + if (match !== null) { + for (let i = 0; i < match.length; i++) { + const element = match[i]; + const newElement = ' '.repeat(element.length); + text = text.replace(element,newElement); + } + } + return text; +} + + +export { + transferVlogNumber, + getSymbolComment, + getSymbolComments +}; \ No newline at end of file diff --git a/src/function/lsp/util/index.js b/src/function/lsp/util/index.js new file mode 100644 index 0000000..dd4ead1 --- /dev/null +++ b/src/function/lsp/util/index.js @@ -0,0 +1,570 @@ +const vscode = require('vscode'); + +const { transferVlogNumber, getSymbolComment, getSymbolComments } = require('./feature'); + +const { SymbolResult, Position, CommentResult, Range, Module, Instance, + HDLParam, ModPort, ModParam } = require('../../../HDLparser'); + +const vlogKeyword = new Set([ + '`include', '`define', 'input', 'output', 'inout', 'module', 'endmodule', + 'wire', 'reg', 'parameter', 'always', 'assign', 'if', 'else', 'begin', 'end', + 'case', 'endcase', 'posedge', 'negedge', 'or', 'default', 'while', 'and', '`timescale', + 'or', 'xor', 'initial', 'function', 'endfunction', 'force', 'pulldown' +]); + + +/** + * @returns {Array} + */ +function getVlogKeywordItem() { + const vlogKeywordItem = []; + for (const keyword of vlogKeyword) { + const clItem = new vscode.CompletionItem(keyword, vscode.CompletionItemKind.Keyword); + clItem.detail = "keyword"; + vlogKeywordItem.push(clItem); + } + return vlogKeywordItem; +} + + +/** + * + * @param {string} singleWord + * @returns {boolean} + */ +function isVlogKeyword(singleWord) { + return vlogKeyword.has(singleWord); +} + + +/** + * @description get the last single word in current line + * @param {string} prefixString + * @returns {string} + */ +function getLastSingleWord(prefixString) { + prefixString = prefixString.trim(); + const length = prefixString.length; + if (length == 0) { + return ''; + } + const wordCharacters = []; + let alphaReg = /[`_0-9A-Za-z]/; + for (let i = length - 1; i >= 0; -- i) { + const ch = prefixString[i]; + if (alphaReg.test(ch)) { + wordCharacters.push(ch); + } else { + break; + } + } + return wordCharacters.reverse().join(''); +} + + +/** + * @description get the single word at hover + * @param {string} lineText + * @param {number} character + */ +function getSingleWordAtCurrentPosition(lineText, character) { + let alphaReg = /[`_0-9A-Za-z]/; + if (alphaReg.test(lineText[character])) { + const leftPart = []; + const rightPart = []; + const length = lineText.length; + for (let i = character - 1; i >= 0; -- i) { + const ch = lineText[i]; + if (alphaReg.test(ch)) { + leftPart.push(ch); + } else { + break; + } + } + + for (let i = character + 1; i < length; ++ i) { + const ch = lineText[i]; + if (alphaReg.test(ch)) { + rightPart.push(ch); + } else { + break; + } + } + + const leftWord = leftPart.reverse().join(''); + const rightWord = rightPart.join(''); + return leftWord + lineText[character] + rightWord; + } else { + return ""; + } +} + +/** + * @param {Position} position_a + * @param {Position} position_b + * @returns {boolean} + */ +function positionAfter(position_a, position_b) { + return position_a.line > position_b.line || ( + position_a.line == position_b.line && + position_a.character > position_b.character); +} + + +/** + * @param {Position} position_a + * @param {Position} position_b + * @returns {boolean} + */ +function positionEqual(position_a, position_b) { + return position_a.line == position_b.line && + position_a.character == position_b.character; +} + + +/** + * @description position_a behind or equal to position_b + * @param {Position} position_a + * @param {Position} position_b + * @returns {boolean} + */ +function positionAfterEqual(position_a, position_b) { + return positionAfter(position_a, position_b) || + positionEqual(position_a, position_b); +} + + + +/** + * @description filter the symbol result item that exceed the scope + * @param {vscode.Position} position + * @param {Array} symbolResults + * @returns {{module : SymbolResult, symbols : Array}} + */ +function filterSymbolScope(position, symbolResults) { + if (!symbolResults) { + return null; + } + const parentModules = symbolResults.filter(item => + item.type == 'module' && + positionAfterEqual(position, item.start) && + positionAfterEqual(item.end, position) + ); + + if (parentModules.length == 0) { + // TODO : macro + return null; + } + + const parentModule = parentModules[0]; + const symbols = symbolResults.filter(item => + item != parentModule && + positionAfterEqual(item.start, parentModule.start) && + positionAfterEqual(parentModule.end, item.end)); + + return { + module : parentModule, + symbols : symbols + }; +} + + + +/** + * @param {vscode.TextDocument} document + * @param {Position} position + * @param {Array} comments + */ +function isInComment(document, position, comments) { + if (!comments) { + return false; + } + // remove the situation that // comment + const lineText = document.lineAt(position).text; + const singleCommentIndex = lineText.indexOf('//'); + if (singleCommentIndex != -1) { + return position.character >= singleCommentIndex; + } + + const currentLine = position.line + 1; + for (const comment of comments) { + const commentLine = comment.start.line; + if (commentLine > currentLine) { + continue; + } + const startPosition = new vscode.Position(commentLine, 0); + const startOffset = document.offsetAt(startPosition); + const endPosition = document.positionAt(startOffset + comment.length); + + const originalPosition = new Position(currentLine, position.character); + + if (positionAfterEqual(originalPosition, startPosition) && + positionAfterEqual(endPosition, originalPosition)) { + return true; + } + } + return false; +} + + + +/** + * @param {vscode.Position} position + * @param {object} includes + * @returns {{name: string, start: Position, end: Position}} + */ +function matchInclude(position, includes) { + if (!includes) { + return null; + } + for (const includeString of Object.keys(includes)) { + const range = includes[includeString]; + // TODO : remove - 1 if bug is fixed + range.start.line -= 1; + range.end.line -= 1; + if (positionAfterEqual(position, range.start) && + positionAfterEqual(range.end, position)) { + + return { + name : includeString, + start: range.start, + end: range.end + }; + } + } + return null; +} + + + +/** + * @param {vscode.Position} position + * @param {string} singleWord + * @param {object} defines + * @returns {{name: string, value: any, range: Range}} + */ +function matchDefine(position, defines) { + if (!defines) { + return null; + } + + for (const macro of Object.keys(defines)) { + const range = defines[macro].range; + range.start.line -= 1; + range.end.line -= 1; + if (positionAfterEqual(position, range.start) && + positionAfterEqual(range.end, position)) { + return { + name : macro, + value: defines[macro].value, + range: range + }; + } + } + return null; +} + + + + +/** + * @param {vscode.Position} position + * @param {string} singleWord + * @param {object} defines + * @returns {{name: string, value: any, range: Range}} + */ +function matchDefineMacro(position, singleWord, defines) { + if (!defines) { + return null; + } + if (singleWord[0] != '`' || singleWord.length <= 1) { + return null; + } + const targetMacro = singleWord.substring(1); + for (const macro of Object.keys(defines)) { + if (macro == targetMacro) { + const range = defines[macro].range; + const value = defines[macro].value; + // TODO : remove - 1 if bug is fixed + range.start.line -= 1; + range.end.line -= 1; + return { + name : macro, + value : value, + range : range + }; + } + } + return null; +} + + +/** + * @param {string} singleWord single word to be matched + * @param {Module} module + * @returns {Instance} + */ +function matchInstance(singleWord, module) { + if (!module) { + console.log('warning, cannot locate module', singleWord); + return null; + } + + for (const inst of module.getInstances()) { + if (singleWord == inst.type) { + return inst; + } + } + return null; +} + +/** + * @param {vscode.Position} position current cursor position + * @param {Array} symbols all the symbols in the wrapper module + * @param {Module} module wrapper module + * @param {Instance} + */ +function filterInstanceByPosition(position, symbols, module) { + if (!symbols) { + return null; + } + for (const symbol of symbols) { + const inst = module.findInstance(symbol.name); + if (positionAfterEqual(position, symbol.start) && + positionAfterEqual(symbol.end, position) && + inst) { + return inst; + } + } + return null; +} + + +/** + * @param {Instance} inst + * @param {vscode.Position} position + * @param {string} singleWord + * @returns {Promise} + */ +async function getInstPortByPosition(inst, position, singleWord) { + if (!inst.module || !inst.instports) { + return null; + } + if (positionAfterEqual(position, inst.instports.start) && + positionAfterEqual(inst.instports.end, position)) { + for (const port of inst.module.ports) { + if (port.name == singleWord) { + return port; + } + } + } + return null; +} + + +/** + * @param {Instance} inst + * @param {vscode.Position} position + * @param {string} singleWord + * @returns {Promise} + */ +async function getInstParamByPosition(inst, position, singleWord) { + if (!inst.module || !inst.instparams) { + return null; + } + + if (positionAfterEqual(position, inst.instparams.start) && + positionAfterEqual(inst.instparams.end, position)) { + for (const param of inst.module.params) { + if (param.name == singleWord) { + return param; + } + } + } + return null; +} + + +/** + * @param {string} lineText + * @param {number} character + * @returns {boolean} + */ +function isPositionInput(lineText, character) { + let alphaReg = /[_0-9A-Za-z]/; + for (let i = character; i >= 0; -- i) { + const ch = lineText[i]; + if (alphaReg.test(ch)) { + continue; + } else if (ch == '.') { + if (i == 0) { + return true; + } else if (lineText[i - 1] == ' ') { + return true; + } else { + return false; + } + } else { + return false; + } + } + return false; +} + + +/** + * @param {string} singleWord + * @param {Module} module + * @returns {ModPort} + */ +function matchPorts(singleWord, module) { + if (!module || module.ports.length == 0) { + return null; + } + const targetPorts = module.ports.filter(port => port.name == singleWord); + if (targetPorts.length == 0) { + return null; + } + return targetPorts[0]; +} + + +/** + * @param {string} singleWord + * @param {Module} module + * @returns {ModParam} + */ +function matchParams(singleWord, module) { + if (!module || module.params.length == 0) { + return null; + } + const targetParams = module.params.filter(param => param.name == singleWord); + if (targetParams.length == 0) { + return null; + } + return targetParams[0]; +} + +/** + * + * @param {ModPort} port + * @returns {string} + */ +function makePortDesc(port) { + let portDesc = port.type; + if (port.width) { + portDesc += ' ' + port.width; + } + portDesc += ' ' + port.name; + return portDesc; +} + +/** + * + * @param {ModParam} param + * @returns {string} + */ +function makeParamDesc(param) { + let paramDesc = 'parameter ' + param.name; + if (param.init) { + paramDesc += ' = ' + param.init; + } + return paramDesc; +} + + +/** + * @param {string} singleWord + * @param {Array} symbols + * @returns {SymbolResult} + */ +function matchNormalSymbol(singleWord, symbols) { + if (!symbols || Object.keys(symbols).length == 0) { + return null; + } + for (const symbol of symbols) { + if (singleWord == symbol.name) { + return symbol; + } + } + + return null; +} + + +/** + * @param {vscode.MarkdownString} content + * @param {Module} module + */ +async function makeVlogHoverContent(content, module) { + const portNum = module.ports.length; + const paramNum = module.params.length; + const instNum = module.getInstanceNum(); + + const moduleUri = vscode.Uri.file(module.path); + const thenableFileDocument = vscode.workspace.openTextDocument(moduleUri); + + const portDesc = paramNum + ' $(instance-param) ' + + portNum + ' $(instance-port) ' + + instNum + ' $(instance-module)'; + + + content.appendCodeblock('module ' + module.name, 'verilog'); + content.appendText('\n'); + content.appendMarkdown(portDesc); + content.appendText(' | '); + + const count = { + input: 0, + output: 0, + inout: 0 + }; + for (const port of module.ports) { + count[port.type] += 1; + } + const ioDesc = count.input + ' $(instance-input) ' + + count.output + ' $(instance-output) ' + + count.inout + ' $(instance-inout)'; + content.appendMarkdown(ioDesc); + content.appendText('\n'); + + content.appendMarkdown('---'); + + // make document + const fileDocument = await thenableFileDocument; + const range = new vscode.Range(module.range.start, module.range.end); + const moduleDefinitionCode = fileDocument.getText(range); + content.appendCodeblock(moduleDefinitionCode, 'verilog'); +} + + +async function searchCommentAround(uri, range) { + +} + +module.exports = { + getVlogKeywordItem, + getLastSingleWord, + getSingleWordAtCurrentPosition, + filterSymbolScope, + filterInstanceByPosition, + isPositionInput, + isInComment, + matchInclude, + matchDefine, + matchDefineMacro, + matchInstance, + matchPorts, + matchParams, + matchNormalSymbol, + isVlogKeyword, + makeVlogHoverContent, + positionAfterEqual, + getInstPortByPosition, + getInstParamByPosition, + makePortDesc, + makeParamDesc, + transferVlogNumber, + getSymbolComment, + getSymbolComments +}; \ No newline at end of file diff --git a/src/function/sim/index.ts b/src/function/sim/index.ts new file mode 100644 index 0000000..19a6ae9 --- /dev/null +++ b/src/function/sim/index.ts @@ -0,0 +1,8 @@ +import { instantiation } from './instance'; +import { testbench } from './testbench'; + + +export { + instantiation, + testbench +}; \ No newline at end of file diff --git a/src/function/sim/instance.ts b/src/function/sim/instance.ts new file mode 100644 index 0000000..2c47643 --- /dev/null +++ b/src/function/sim/instance.ts @@ -0,0 +1,272 @@ +import * as vscode from 'vscode'; +import { HdlLangID } from '../../global/enum'; +import { hdlParam } from '../../hdlParser'; +import { HdlModulePort, HdlModuleParam } from '../../hdlParser/common'; +import { HdlModule } from '../../hdlParser/core'; + +class ModuleInfoItem { + label: string; + description: string; + detail: string; + module: HdlModule; + /** + * @param module + */ + constructor(module: HdlModule) { + // TODO : 等到sv的解析做好后,写入对于不同hdl的图标 + let iconID = '$(instance-' + module.file.languageId + ') '; + this.label = iconID + module.name; + this.description = module.params.length + ' $(instance-param) ' + + module.ports.length + ' $(instance-port) ' + + module.getInstanceNum() + ' $(instance-module)'; + this.detail = module.path; + this.module = module; + } +}; + +/** + * @description verilog模式下生成整个例化的内容 + * @param module 模块信息 + */ +function instanceVlogCode(module: HdlModule) { + let vlogPortStr = vlogPort(module.ports); + let vlogParamStr = vlogParam(module.params); + + let instContent = ''; + instContent += vlogPortStr.wireStr; + instContent += module.name + ' '; + + if (vlogParamStr !== '') { + instContent += `#(\n${vlogParamStr})\n`; + } + + instContent += `u_${module.name}(\n`; + instContent += vlogPortStr.portStr; + instContent += ');\n'; + + return instContent; +} + +/** + * @description vhdl模式下生成整个例化的内容 + * @param module 模块信息 + */ +function instanceVhdlCode(module: HdlModule) { + // module 2001 style + let port = vhdlPort(module.ports); + let param = vhdlParam(module.params); + + let instContent = `u_${module.name} : ${module.name}\n`; + + if (param !== '') { + instContent += `generic map(\n${param})\n`; + } + + instContent += `port map(\n${port});\n`; + + return instContent; +} + +/** + * @description verilog模式下对端口信息生成要例化的内容 + * @param ports 端口信息列表 + */ +function vlogPort(ports: HdlModulePort[]) : { wireStr: string, portStr: string} { + let nmax = getlmax(ports, 'name'); + let wmax = getlmax(ports, 'width'); + + let portStr = `\t// ports\n`; + let wireStr = '// outports wire\n'; + for (let i = 0; i < ports.length; i++) { + const port = ports[i]; + + if (port.type === 'output') { + let width = port.width; + let wpadding = wmax - width.length + 1; + width += ' '.repeat(wpadding); + // TODO: vhdl type + wireStr += `wire ${width}\t${port.name};\n`; + } + + let name = port.name; + let npadding = nmax - name.length + 1; + name += ' '.repeat(npadding); + portStr += `\t.${name}\t( ${name} )`; + if (i !== ports.length - 1) { + portStr += ','; + } + portStr += '\n'; + } + + return { wireStr, portStr }; + +} + +/** + * @description verilog模式下对参数信息生成要例化的内容 + * @param params 参数信息列表 + */ +function vlogParam(params: HdlModuleParam[]): string { + let paramStr = ''; + let nmax = getlmax(params, 'name'); + let imax = getlmax(params, 'init'); + + // .NAME ( INIT ), + for (let i = 0; i < params.length; i++) { + let name = params[i].name; + let init = params[i].init; + + let namePadding = nmax - name.length + 1; + let initPadding = imax - init.length + 1; + + name +=' '.repeat(namePadding); + init +=' '.repeat(initPadding); + + paramStr += `\t.${name}\t( ${init} )`; + if (i !== (params.length - 1)) { + paramStr += ','; + paramStr += '\n'; + } + } + + return paramStr; +} + +/** + * @description vhdl模式下对端口信息生成要例化的内容 + * @param ports 端口信息列表 + */ +function vhdlPort(ports: HdlModulePort[]): string { + let nmax = getlmax(ports, 'name'); + + // NAME => NAME, + let portStr = `\n\t-- ports\n`; + for (let i = 0; i < ports.length; i++) { + let name = ports[i].name; + let padding = nmax - name.length + 1; + name += ' '.repeat(padding); + portStr += `\t${name} => ${name}`; + if (i !== (ports.length - 1)) { + portStr += ','; + } + portStr += '\n'; + } + return portStr; +} + +/** + * @description vhdl模式下对参数信息生成要例化的内容 + * @param params 参数信息列表 + */ +function vhdlParam(params: HdlModuleParam[]): string { + let paramStr = ''; + let nmax = getlmax(params, 'name'); + + // NAME => NAME, + for (let i = 0; i < params.length; i++) { + let name = params[i].name; + const init = params[i].init; + + let npadding = nmax - name.length + 1; + name += ' '.repeat(npadding); + + paramStr += `\t${name} => ${init}`; + if (i !== (params.length - 1)) { + paramStr += ','; + paramStr += '\n'; + } + } + return paramStr; +} + +/** + * @description 在arr中找到pro属性的最大字符长度 + * @param {Array} arr 待查找的数组 + * @param {String} pro 指定属性 + * @returns {Number} 该数组中的pro属性的最大字符长度 + */ +function getlmax(arr: any[], pro: string): number { + let lmax = 0; + for (let i = 0; i < arr.length; i++) { + const len = arr[i][pro].length; + if (len <= lmax) { + continue; + } + lmax = len; + } + return lmax; +} + +/** + * @description 向光标处插入内容 + * @param content 需要插入的内容 + * @param editor 通过 vscode.window.activeTextEditor 获得 + */ +function selectInsert(content: string, editor: vscode.TextEditor): boolean { + if (editor === undefined) { + return false; + } + let selections = editor.selections; + editor.edit((editBuilder) => { + selections.forEach((selection) => { + // position, content + editBuilder.insert(selection.active, content); + }); + }); + return true; +} + +function getSelectItem(modules: HdlModule[]) { + // make ModuleInfoList + const items = []; + for (const module of modules) { + items.push(new ModuleInfoItem(module)); + } + return items; +} + +/** + * @description 调用vscode的窗体,让用户从所有的Module中选择模块(为后续的例化准备) + */ +async function selectModuleFromAll() { + const option = { + placeHolder: 'Select a Module' + }; + + const selectModuleInfo = await vscode.window.showQuickPick( + getSelectItem(hdlParam.getAllHdlModules()), option + ); + + if (selectModuleInfo) { + return selectModuleInfo.module; + } else { + return null; + } +} + +function instanceByLangID(module: HdlModule): string { + switch (module.languageId) { + case HdlLangID.Verilog: return instanceVlogCode(module); + case HdlLangID.Vhdl: return instanceVhdlCode(module); + // TODO : add support for svlog + case HdlLangID.SystemVerilog: return instanceVlogCode(module); + default: return ''; + } +} + +async function instantiation() { + const module = await selectModuleFromAll(); + if (module) { + const code = instanceByLangID(module); + const editor = vscode.window.activeTextEditor; + if (editor) { + selectInsert(code, editor); + } + } +} + +export { + instantiation, + instanceByLangID, + getSelectItem +}; \ No newline at end of file diff --git a/src/function/sim/testbench.ts b/src/function/sim/testbench.ts new file mode 100644 index 0000000..dc4c996 --- /dev/null +++ b/src/function/sim/testbench.ts @@ -0,0 +1,82 @@ +import * as vscode from 'vscode'; + +import { MainOutput, opeParam } from '../../global'; +import { hdlPath, hdlFile} from '../../hdlFs'; +import { HdlModule, hdlParam } from '../../hdlParser/core'; +import { instanceByLangID, getSelectItem } from './instance'; + +function overwrite() { + const options = { + preview: false, + viewColumn: vscode.ViewColumn.Active + }; + const tbSrcPath = hdlPath.join(opeParam.extensionPath, 'lib', 'testbench.v'); + const uri = vscode.Uri.file(tbSrcPath); + vscode.window.showTextDocument(uri, options); +} + +function generateTestbenchFile(module: HdlModule) { + const tbSrcPath = hdlPath.join(opeParam.extensionPath, 'lib', 'testbench.v'); + const tbDisPath = hdlPath.join(opeParam.prjInfo.arch.hardware.sim, 'testbench.v'); + + if (!hdlFile.isFile(tbDisPath)) { + var temp = hdlFile.readFile(tbSrcPath); + } else { + var temp = hdlFile.readFile(tbDisPath); + } + + if (!temp) { + return null; + } + + let content = ''; + const lines = temp.split('\n'); + const len = lines.length; + for (let index = 0; index < len; index++) { + const line = lines[index]; + content += line + '\n'; + if (line.indexOf("//Instance ") !== -1) { + content += instanceByLangID(module) + '\n'; + } + } + try { + hdlFile.writeFile(tbDisPath, content); + MainOutput.report("Generate testbench successed"); + } catch (err) { + vscode.window.showErrorMessage("Generate testbench failed:" + err); + } +} + +async function testbench() { + const editor = vscode.window.activeTextEditor; + if (!editor) { + vscode.window.showErrorMessage('please select a editor!'); + return; + } + const uri = editor.document.uri; + const option = { + placeHolder: 'Select a Module to generate testbench' + }; + const path = hdlPath.toSlash(uri.fsPath); + console.log(path); + + if (!hdlFile.isHDLFile(path)) { + return; + } + const currentHdlFile = hdlParam.getHdlFile(path); + if (!currentHdlFile) { + vscode.window.showErrorMessage('There is no hdlFile respect to ' + path); + return; + } + const currentHdlModules = currentHdlFile.getAllHdlModules(); + const items = getSelectItem(currentHdlModules); + const select = await vscode.window.showQuickPick(items, option); + if (select) { + generateTestbenchFile(items[0].module); + } +} + + +export { + testbench +}; \ No newline at end of file diff --git a/src/global/index.ts b/src/global/index.ts index 6bf519f..4e503d5 100644 --- a/src/global/index.ts +++ b/src/global/index.ts @@ -1,5 +1,6 @@ import { opeParam, OpeParamDefaults } from './opeParam'; import { PrjInfo, PrjInfoDefaults } from './prjInfo'; +import { MainOutput, YosysOutput, ReportType } from './outputChannel'; import * as Enum from './enum'; import * as Lang from './lang'; @@ -15,5 +16,8 @@ export { Enum, Lang, AbsPath, - RelPath + RelPath, + MainOutput, + YosysOutput, + ReportType }; \ No newline at end of file diff --git a/src/global/outputChannel.ts b/src/global/outputChannel.ts index d6ef04a..01e55d5 100644 --- a/src/global/outputChannel.ts +++ b/src/global/outputChannel.ts @@ -24,7 +24,7 @@ class Output { return this._ignoreTypes.includes(type); } - report(message: string, type: ReportType = ReportType.Debug) { + report(message: string | unknown, type: ReportType = ReportType.Info) { if (!this.skipMessage(type) && message) { this._output.show(true); this._output.appendLine('[' + type + '] ' + message); diff --git a/src/hdlFs/file.ts b/src/hdlFs/file.ts index 4477822..d6988e3 100644 --- a/src/hdlFs/file.ts +++ b/src/hdlFs/file.ts @@ -75,7 +75,8 @@ function isHDLFile(path: AbsPath): boolean { function getHDLFiles(path: AbsPath | AbsPath[] | Set, ignores?: AbsPath[]) { - return pickFileRecursive(path, ignores, filePath => isHDLFile(filePath)); + return pickFileRecursive(path, ignores, + filePath => isHDLFile(filePath)); } @@ -83,7 +84,7 @@ function pickFileRecursive(path: AbsPath | AbsPath[] | Set, ignores?: A if ((path instanceof Array) || (path instanceof Set)) { const hdlFiles: AbsPath[] = []; - path.forEach(p => hdlFiles.push(...pickFileRecursive(p))); + path.forEach(p => hdlFiles.push(...pickFileRecursive(p, ignores, condition))); return hdlFiles; } @@ -124,11 +125,11 @@ function getLanguageId(path: AbsPath | RelPath): HdlLangID { return HdlLangID.Unknown; } const ext = hdlPath.extname(path, false); - if (verilogExts.includes(path)) { + if (verilogExts.includes(ext)) { return HdlLangID.Verilog; - } else if (vhdlExts.includes(path)) { + } else if (vhdlExts.includes(ext)) { return HdlLangID.Vhdl; - } else if (systemVerilogExts.includes(path)) { + } else if (systemVerilogExts.includes(ext)) { return HdlLangID.SystemVerilog; } else { return HdlLangID.Unknown; diff --git a/src/hdlFs/icons.ts b/src/hdlFs/icons.ts index 608bb00..1af85ae 100644 --- a/src/hdlFs/icons.ts +++ b/src/hdlFs/icons.ts @@ -1,16 +1,17 @@ +import * as vscode from 'vscode'; import { opeParam, AbsPath, Enum } from '../global'; import * as hdlPath from './path'; interface IconConfig { - light: AbsPath - dark: AbsPath + readonly light: vscode.Uri + readonly dark: vscode.Uri }; -function getIconPath(themeType: Enum.ThemeType, iconName: string): AbsPath { +function getIconPath(themeType: Enum.ThemeType, iconName: string): vscode.Uri { const iconFile = iconName + '.svg'; const svgDir = hdlPath.join(opeParam.extensionPath, 'images', 'svg'); const iconPath = hdlPath.join(svgDir, themeType, iconFile); - return iconPath; + return vscode.Uri.file(iconPath); } function getIconConfig(iconName: string): IconConfig { @@ -20,7 +21,7 @@ function getIconConfig(iconName: string): IconConfig { }; } -module.exports = { +export { getIconPath, getIconConfig }; \ No newline at end of file diff --git a/src/hdlParser/common.ts b/src/hdlParser/common.ts index ebdd34b..ec0cfce 100644 --- a/src/hdlParser/common.ts +++ b/src/hdlParser/common.ts @@ -72,6 +72,7 @@ interface HdlModulePort { type: HdlModulePortType width: string range: Range + desc?: string }; interface HdlModuleParam { @@ -80,6 +81,7 @@ interface HdlModuleParam { type: string init: string range: Range + desc?: string }; type InstRange = Range | null; diff --git a/src/hdlParser/core.ts b/src/hdlParser/core.ts index 6c93ad3..90cda43 100644 --- a/src/hdlParser/core.ts +++ b/src/hdlParser/core.ts @@ -1,8 +1,10 @@ import { AbsPath } from '../global'; import { HdlLangID } from '../global/enum'; +import { MainOutput, ReportType } from '../global/outputChannel'; import * as common from './common'; import { hdlFile, hdlPath } from '../hdlFs'; +import { HdlSymbol } from './util'; class HdlParam { private readonly topModules : Set = new Set(); @@ -57,6 +59,12 @@ class HdlParam { return hdlFile.getHdlModule(name); } + public getAllHdlModules(): HdlModule[] { + const hdlModules: HdlModule[] = []; + this.modules.forEach(m => hdlModules.push(m)); + return hdlModules; + } + public addHdlModule(hdlModule: HdlModule) { this.modules.add(hdlModule); } @@ -73,6 +81,30 @@ class HdlParam { this.topModules.delete(hdlModule); } + public getAllTopModules(global :boolean = false): HdlModule[] { + const topModules: HdlModule[] = []; + if (global) { + this.topModules.forEach(m => topModules.push(m)); + } else { + this.srcTopModules.forEach(m => topModules.push(m)); + this.simTopModules.forEach(m => topModules.push(m)); + } + return topModules; + } + + public isTopModule(path: AbsPath, name: string, global = false): boolean { + const module = this.getHdlModule(path, name); + if (!module) { + return false; + } + if (global) { + return this.topModules.has(module); + } else { + const sourceTopModule = this.selectTopModuleSourceByFileType(module); + return sourceTopModule.has(module); + } + } + public selectTopModuleSourceByFileType(hdlModule: HdlModule): Set { switch (hdlModule.file.type) { case common.HdlFileType.Src: return this.srcTopModules; @@ -148,6 +180,29 @@ class HdlParam { public deleteUnhandleInstance(inst: HdlInstance) { this.unhandleInstances.delete(inst); } + + public async initHdlFiles(hdlFiles: AbsPath[] | Generator) { + for (const path of hdlFiles) { + // TODO : only support verilog now + const langID = hdlFile.getLanguageId(path); + if (langID === HdlLangID.Verilog) { + const fast = await HdlSymbol.fast(path); + if (fast) { + new HdlFile(path, + fast.languageId, + fast.macro, + fast.content.modules); + } + } + } + } + + public async initialize(hdlFiles: AbsPath[] | Generator) { + await this.initHdlFiles(hdlFiles); + for (const hdlFile of this.getAllHdlFiles()) { + hdlFile.makeInstance(); + } + } }; @@ -226,7 +281,7 @@ class HdlModule { range: common.Range; params: common.HdlModuleParam[]; ports: common.HdlModulePort[]; - private rawInstances: common.RawHdlInstance[]; + private rawInstances: common.RawHdlInstance[] | undefined; private nameToInstances: Map; private unhandleInstances: Set; private globalRefers: Set; @@ -272,6 +327,10 @@ class HdlModule { return this.file.path; } + public get languageId(): HdlLangID { + return this.file.languageId; + } + public getInstance(name: string): HdlInstance | undefined { return this.nameToInstances.get(name); } @@ -309,6 +368,19 @@ class HdlModule { return hdlInstance; } + public makeNameToInstances() { + if (this.rawInstances) { + this.nameToInstances.clear(); + for (const inst of this.rawInstances) { + this.createHdlInstance(inst); + } + this.rawInstances = undefined; + } else { + MainOutput.report('call makeNameToInstances but this.rawInstances is undefined', + ReportType.Warn); + } + } + public deleteInstanceByName(name: string) { const inst = this.getInstance(name); this.deleteInstance(inst); @@ -518,9 +590,17 @@ class HdlFile { } } + public makeInstance() { + for (const module of this.getAllHdlModules()) { + module.makeNameToInstances(); + } + } } export { - hdlParam + hdlParam, + HdlModule, + HdlInstance, + hdlFile }; \ No newline at end of file diff --git a/src/hdlParser/index.ts b/src/hdlParser/index.ts new file mode 100644 index 0000000..8552767 --- /dev/null +++ b/src/hdlParser/index.ts @@ -0,0 +1,5 @@ +import { hdlParam } from './core'; + +export { + hdlParam +}; \ No newline at end of file diff --git a/src/hdlParser/util.ts b/src/hdlParser/util.ts index 69b297f..70953fe 100644 --- a/src/hdlParser/util.ts +++ b/src/hdlParser/util.ts @@ -1,5 +1,30 @@ -import { vlogAll, vlogFast } from '../../wasm/hdlParser'; +import { Fast, vlogAll, vlogFast, vhdlAll, svFast, svAll, vhdlFast, All } from '../../resources/hdlParser'; +import { hdlFile } from '../hdlFs'; +import { HdlLangID } from '../global/enum'; +import { AbsPath } from '../global'; -function hello(path: string) { - vlogAll(path); -} \ No newline at end of file +namespace HdlSymbol { + export async function fast(path: AbsPath): Promise { + const langID = hdlFile.getLanguageId(path); + switch (langID) { + case HdlLangID.Verilog: return vlogFast(path); + case HdlLangID.Vhdl: return vhdlFast(path); + case HdlLangID.SystemVerilog: return svFast(path); + default: return undefined; + } + } + + export async function all(path: AbsPath): Promise { + const langID = hdlFile.getLanguageId(path); + switch (langID) { + case HdlLangID.Verilog: return vlogAll(path); + case HdlLangID.Vhdl: return vhdlAll(path); + case HdlLangID.SystemVerilog: return svAll(path); + default: return undefined; + } + } +} + +export { + HdlSymbol +}; \ No newline at end of file diff --git a/src/manager/PS/xilinx.ts b/src/manager/PS/xilinx.ts index 8582588..518d4a3 100644 --- a/src/manager/PS/xilinx.ts +++ b/src/manager/PS/xilinx.ts @@ -23,7 +23,7 @@ interface PSConfig { /** * @state finish-untest - * @descriptionCn xilinx工具链下PS端的操作类 + * @description xilinx工具链下PS端的操作类 */ class XilinxOperation { public get config(): XilinxOperationConfig { diff --git a/src/manager/prj.ts b/src/manager/prj.ts index 2808d47..e0234b8 100644 --- a/src/manager/prj.ts +++ b/src/manager/prj.ts @@ -86,6 +86,7 @@ class PrjManage { searchPathSet.checkAdd(hardwareInfo.sim); const searchPaths = searchPathSet.files; + return hdlFile.getHDLFiles(searchPaths, []); } diff --git a/test.js b/test.js index 6d8dc92..fe81f5b 100644 --- a/test.js +++ b/test.js @@ -1,20 +1,36 @@ /* eslint-disable @typescript-eslint/naming-convention */ const fs = require('fs'); -const path = require('path'); +const fspath = require('path'); -const sysvlog_build = require('./wasm/hdlParser/parser'); +const { vlogFast } = require('./resources/hdlParser'); -const COMMON_PATH = path.resolve('./lib/common/Driver'); +const COMMON_PATH = fspath.resolve('./lib/common/Driver'); const TEST_FILE = './parser_stuck.v'; const TEST_FILE2 = './src/test/vlog/dependence_test/parent.v'; const TEST_FILE3 = './src/test/vlog/formatter_test.v'; + +function isFile(path) { + if (!fs.existsSync(path)) { + return false; + } + const state = fs.statSync(path); + if (state.isDirectory()) { + return false; + } + return true; +} + +/** + * judge if the path represent a Dir + * @param path + * @returns + */ function isDir(path) { if (!fs.existsSync(path)) { return false; } - const state = fs.statSync(path); if (state.isDirectory()) { return true; @@ -22,38 +38,38 @@ function isDir(path) { return false; } -function getHDLFiles(path) { - if (isDir(path)) { - const hdlFiles = []; +function* walk(path, condition) { + if (isFile(path)) { + if (!condition || condition(path)) { + yield path; + } + } + else { for (const file of fs.readdirSync(path)) { - const filePath = path + '/' + file; + const filePath = fspath.join(path, file); if (isDir(filePath)) { - const subHdlFiles = getHDLFiles(filePath); - if (subHdlFiles.length > 0) { - hdlFiles.push(...subHdlFiles); + for (const targetPath of walk(filePath, condition)) { + yield targetPath; + } + } + else if (isFile(filePath)) { + if (!condition || condition(filePath)) { + yield filePath; } - } else if (filePath.endsWith('.v')) { - hdlFiles.push(filePath); } } - return hdlFiles; - } else if (path.endsWith('.v')) { - return [path]; - } else { - return []; } } (async() => { - const Module = await sysvlog_build(); - console.log(Object.keys(Module).filter(name => name.startsWith('_') && !name.startsWith('__'))); - const source = fs.readFileSync(TEST_FILE2, 'utf-8') + '\n'; - Module.FS.writeFile('/sysvlog_build', source, { encoding: 'utf8' }); - - const start = Date.now(); - - const fast = Module.ccall('vlog_fast', 'string', ['string'], ['/sysvlog_build']); - const costTime = (Date.now() - start) / 1000; - console.log(JSON.stringify(JSON.parse(fast), null, ' ')); - console.log('cost time', costTime); + console.time('test'); + for (const file of walk('./lib', f => f.endsWith('.v'))) { + console.log(file); + try { + await vlogFast(file); + } catch (err) { + console.log(err); + } + } + console.timeEnd('test'); })(); \ No newline at end of file diff --git a/tsconfig.json b/tsconfig.json index 315af7e..34f8f15 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -3,6 +3,7 @@ "module": "commonjs", "target": "ES2020", "outDir": "out", + "skipLibCheck": true, "lib": [ "ES2020" ], From 8a3c4b754a282c9a90c5a876946334b8799b0c28 Mon Sep 17 00:00:00 2001 From: Kirigaya <1193466151@qq.com> Date: Tue, 28 Mar 2023 22:44:06 +0800 Subject: [PATCH 05/54] update --- draft.json | 169 -------------- package.json | 73 ++++-- package.nls.json | 3 +- package.nls.zh-cn.json | 7 +- package.nls.zh-tw.json | 3 +- resources/hdlParser/index.js | 11 +- src/extension.ts | 2 +- src/function/index.ts | 1 + src/function/lsp/util/completion.js | 2 +- src/function/sim/index.ts | 5 +- src/function/sim/instance.ts | 5 + src/function/sim/simulate.ts | 347 ++++++++++++++++++++++++++++ src/function/sim/testbench.ts | 2 +- src/function/treeView/index.ts | 0 src/global/outputChannel.ts | 25 +- src/global/prjInfo.ts | 19 +- src/hdlParser/core.ts | 17 +- syntaxes/digital-ide-output.json | 90 ++++++++ test.js | 8 +- 19 files changed, 580 insertions(+), 209 deletions(-) create mode 100644 src/function/sim/simulate.ts create mode 100644 src/function/treeView/index.ts create mode 100644 syntaxes/digital-ide-output.json diff --git a/draft.json b/draft.json index 283b3d5..e69de29 100644 --- a/draft.json +++ b/draft.json @@ -1,169 +0,0 @@ -{ - "content": { - "error": [], - "symbols": [ - { - "name": "Main", - "range": { - "end": { - "character": 0, - "line": 31 - }, - "start": { - "character": 0, - "line": 10 - } - }, - "type": "module" - }, - { - "name": "a", - "range": { - "end": { - "character": 17, - "line": 11 - }, - "start": { - "character": 16, - "line": 11 - } - }, - "type": "input" - }, - { - "name": "b", - "range": { - "end": { - "character": 17, - "line": 12 - }, - "start": { - "character": 16, - "line": 12 - } - }, - "type": "input" - }, - { - "name": "c", - "range": { - "end": { - "character": 11, - "line": 13 - }, - "start": { - "character": 10, - "line": 13 - } - }, - "type": "input" - }, - { - "name": "Qus", - "range": { - "end": { - "character": 14, - "line": 14 - }, - "start": { - "character": 11, - "line": 14 - } - }, - "type": "output" - }, - { - "name": "Qs", - "range": { - "end": { - "character": 18, - "line": 14 - }, - "start": { - "character": 16, - "line": 14 - } - }, - "type": "output" - }, - { - "name": "`main_o", - "range": { - "end": { - "character": 27, - "line": 14 - }, - "start": { - "character": 20, - "line": 14 - } - }, - "type": "output" - }, - { - "name": "dependence_1", - "range": { - "end": { - "character": 1, - "line": 22 - }, - "start": { - "character": 0, - "line": 17 - } - }, - "type": "dependence_1" - }, - { - "name": "dependence_2", - "range": { - "end": { - "character": 1, - "line": 29 - }, - "start": { - "character": 0, - "line": 24 - } - }, - "type": "dependence_2" - } - ] - }, - "languageId": "verilog", - "macro": { - "defines": [ - { - "name": "main_o", - "range": { - "end": { - "character": 19, - "line": 9 - }, - "start": { - "character": 1, - "line": 9 - } - }, - "value": "out" - } - ], - "error": [], - "includes": [ - { - "path": "child_1.v", - "range": { - "end": { - "character": 9, - "line": 8 - }, - "start": { - "character": 1, - "line": 8 - } - } - } - ], - "invalid": [] - } - } \ No newline at end of file diff --git a/package.json b/package.json index 4518490..327538a 100644 --- a/package.json +++ b/package.json @@ -93,7 +93,29 @@ "function.doc.pdf.footerTemplate": { "type": "string", "default": "
", - "description": "
/
" + "description": "html template of footer, if displayHeaderFooter is set to false, this setting will be ignored" + }, + "function.simulate.icarus.installPath": { + "type": "string", + "description": "Path of install path of iverilog components, if set to \"\", then iverilog and vvp in environment will be used for simulation. Otherwise, ones that in the install path will be used." + }, + "function.simulate.simulationHome": { + "type": "string", + "description": "Path of simulation folder, .vvp and other file during simulation will be generated here" + }, + "function.simulate.gtkwavePath": { + "type": "string", + "default": "gtkwave", + "description": "Absolute path of launch path of gtkwave software" + }, + "function.simulate.xilinxLibPath": { + "type": "string", + "description": "Path of Xilinx library for simulation" + }, + "function.simulate.runInTerminal": { + "type": "boolean", + "default": false, + "description": "run the simulation command in terminal instead of output" } } }, @@ -136,10 +158,24 @@ "command": "digital-ide.tool.testbench", "title": "%digital-ide.tool.testbench.title%", "category": "Digital-IDE" + }, + { + "command": "digital-ide.tool.icarus.simulateFile", + "title": "%digital-ide.tool.icarus.simulateFile.title%", + "category": "Digital-IDE", + "icon": { + "light": "images/svg/light/debug.svg", + "dark": "images/svg/dark/debug.svg" + } } ], "menus": { "editor/title": [ + { + "when": "editorLangId == verilog || editorLangId == systemverilog || editorLangId == vhdl", + "command": "digital-ide.tool.icarus.simulateFile", + "group": "navigation@1" + }, { "when": "editorLangId == verilog || editorLangId == systemverilog || editorLangId == vhdl", "command": "digital-ide.hdlDoc.showWebview", @@ -149,17 +185,17 @@ }, "keybindings": [ { - "command": "digital-ide.tool.instance", - "key": "alt+i", - "mac": "alt+i", - "when": "editorTextFocus" - }, + "command": "digital-ide.tool.instance", + "key": "alt+i", + "mac": "alt+i", + "when": "editorTextFocus" + }, { - "command": "digital-ide.tool.testbench", - "key": "alt+t", - "mac": "alt+t", - "when": "editorTextFocus" - } + "command": "digital-ide.tool.testbench", + "key": "alt+t", + "mac": "alt+t", + "when": "editorTextFocus" + } ], "languages": [ { @@ -248,7 +284,13 @@ ".dld" ], "configuration": "./config/link.configuration.json" - } + }, + { + "id": "digital-ide-output", + "mimetypes": [ + "text/x-code-output" + ] + } ], "jsonValidation": [ { @@ -286,7 +328,12 @@ "language": "systemverilog", "scopeName": "source.systemverilog", "path": "./syntaxes/systemverilog.json" - } + }, + { + "language": "digital-ide-output", + "scopeName": "digital-ide.output", + "path": "./syntaxes/digital-ide-output.json" + } ], "snippets": [ { diff --git a/package.nls.json b/package.nls.json index e8c0e35..44efe66 100644 --- a/package.nls.json +++ b/package.nls.json @@ -5,5 +5,6 @@ "digital-ide.hdlDoc.exportProject.title": "export the document of current project", "digital-ide.hdlDoc.showWebview.title": "show the document of current file in a webview", "digital-ide.tool.instance.title": "generate instance template from selected module", - "digital-ide.tool.testbench.title": "generate testbench template from current file" + "digital-ide.tool.testbench.title": "generate testbench template from current file", + "digital-ide.tool.icarus.simulateFile.title": "do simulation for current file" } \ No newline at end of file diff --git a/package.nls.zh-cn.json b/package.nls.zh-cn.json index aa23fc5..3fb29a2 100644 --- a/package.nls.zh-cn.json +++ b/package.nls.zh-cn.json @@ -3,7 +3,8 @@ "digital-ide.property-json.overwrite.title": "修改默认的 property.json 模板文件", "digital-ide.hdlDoc.exportFile.title": "导出当前文件的文档", "digital-ide.hdlDoc.exportProject.title": "导出当前项目的文档", - "digital-ide.hdlDoc.showWebview.title": "在webview中展示文档", - "digital-ide.tool.instance.title": "生成选中module的例化模板", - "digital-ide.tool.testbench.title": "从当前文件中选择module生成testbench" + "digital-ide.hdlDoc.showWebview.title": "在 webview 中展示文档", + "digital-ide.tool.instance.title": "生成选中 module 的例化模板", + "digital-ide.tool.testbench.title": "从当前文件中选择 module 生成 testbench", + "digital-ide.tool.icarus.simulateFile.title": "对当前文件进行仿真" } \ No newline at end of file diff --git a/package.nls.zh-tw.json b/package.nls.zh-tw.json index 31c587d..af08476 100644 --- a/package.nls.zh-tw.json +++ b/package.nls.zh-tw.json @@ -5,5 +5,6 @@ "digital-ide.hdlDoc.exportProject.title": "", "digital-ide.hdlDoc.showWebview.title": "", "digital-ide.tool.instance.title": "", - "digital-ide.tool.testbench.title": "" + "digital-ide.tool.testbench.title": "", + "digital-ide.tool.icarus.simulateFile.title": "" } \ No newline at end of file diff --git a/resources/hdlParser/index.js b/resources/hdlParser/index.js index 9dd6084..3d4bf56 100644 --- a/resources/hdlParser/index.js +++ b/resources/hdlParser/index.js @@ -1,5 +1,6 @@ const hdlParser = require('./parser'); const fs = require('fs'); +const { exit } = require('process'); const _hdlParser = { module: null, @@ -25,7 +26,15 @@ async function vlogFast(path) { const source = fs.readFileSync(path, 'utf-8') + '\n'; wasmModule.FS.writeFile(_hdlParser.tempPath, source, { encoding: 'utf8' }); const res = wasmModule.ccall('vlog_fast', 'string', ['string'], [_hdlParser.tempPath]); - return JSON.parse(res); + try { + return JSON.parse(res); + } catch (err) { + console.log(res); + fs.writeFileSync('./draft.json', res); + console.log('error happen when parse ' + path); + console.log(err); + exit(-1); + } } async function vlogAll(path) { diff --git a/src/extension.ts b/src/extension.ts index fd172e5..d94ad9e 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -19,7 +19,7 @@ async function launch(context: vscode.ExtensionContext) { console.timeLog('launch'); await registerCommand(context); - MainOutput.report('Digital-IDE has launched, version: 0.3.0'); + MainOutput.report('Digital-IDE has launched, Version: 0.3.0'); MainOutput.report('OS: ' + opeParam.os); } diff --git a/src/function/index.ts b/src/function/index.ts index 4481a86..e1b47e3 100644 --- a/src/function/index.ts +++ b/src/function/index.ts @@ -13,6 +13,7 @@ function registerDocumentation(context: vscode.ExtensionContext) { function registerSimulation(context: vscode.ExtensionContext) { vscode.commands.registerCommand('digital-ide.tool.instance', Sim.instantiation); vscode.commands.registerCommand('digital-ide.tool.testbench', Sim.testbench); + vscode.commands.registerCommand('digital-ide.tool.icarus.simulateFile', Sim.Icarus.simulateFile); } function registerAllCommands(context: vscode.ExtensionContext) { diff --git a/src/function/lsp/util/completion.js b/src/function/lsp/util/completion.js index eaddeca..8d20abd 100644 --- a/src/function/lsp/util/completion.js +++ b/src/function/lsp/util/completion.js @@ -16,7 +16,7 @@ function filterIncludeFiles(folderPath, currentPath) { const suggestFiles = []; for (const fileName of fs.readdirSync(folderPath)) { const filePath = HDLPath.join(folderPath, fileName); - if (filePath == currentPath) { + if (filePath === currentPath) { continue; } diff --git a/src/function/sim/index.ts b/src/function/sim/index.ts index 19a6ae9..6fba570 100644 --- a/src/function/sim/index.ts +++ b/src/function/sim/index.ts @@ -1,8 +1,9 @@ import { instantiation } from './instance'; import { testbench } from './testbench'; - +import { Icarus } from './simulate'; export { instantiation, - testbench + testbench, + Icarus }; \ No newline at end of file diff --git a/src/function/sim/instance.ts b/src/function/sim/instance.ts index 2c47643..208caf0 100644 --- a/src/function/sim/instance.ts +++ b/src/function/sim/instance.ts @@ -216,6 +216,11 @@ function selectInsert(content: string, editor: vscode.TextEditor): boolean { return true; } +/** + * @description make item for vscode.window.showQuickPick from hdlModules + * @param modules + * @returns + */ function getSelectItem(modules: HdlModule[]) { // make ModuleInfoList const items = []; diff --git a/src/function/sim/simulate.ts b/src/function/sim/simulate.ts new file mode 100644 index 0000000..84bf9d9 --- /dev/null +++ b/src/function/sim/simulate.ts @@ -0,0 +1,347 @@ +import * as vscode from 'vscode'; +import * as child_process from 'child_process'; + +import { hdlParam } from '../../hdlParser'; +import { AbsPath, MainOutput, opeParam, ReportType } from '../../global'; +import { hdlDir, hdlFile, hdlPath } from '../../hdlFs'; +import { getSelectItem } from './instance'; +import { ToolChainType } from '../../global/enum'; +import { HdlModule } from '../../hdlParser/core'; + +interface SimulateConfig { + mod : string, // 设置的顶层模块 + clk : string, // 设置的主频信号 + rst : string, // 设置的复位信号 + end : string, // + wave : string, // wave存放的路径 + simulationHome : string, // sim运行的路径 + gtkwavePath : string, // gtkwave安装路径 + installPath : string // 第三方仿真工具的安装路径 + iverilogPath: string + vvpPath: string +} + +class Simulate { + regExp = { + mod : /\/\/ @ sim.module : (?\w+)/, + clk : /\/\/ @ sim.clk : (?\w+)/, + rst : /\/\/ @ sim.rst : (?\w+)/, + end : /#(?[0-9+])\s+\$(finish|stop)/, + wave : /\$dumpfile\s*\(\s*\"(?.+)\"\s*\);/, + }; + xilinxLib = [ + "xeclib", "unisims" ,"unimacro" ,"unifast" ,"retarget" + ]; + + /** + * @description 获取仿真的配置 + * @param path 代码路径 + * @param tool 仿真工具名 + */ + getConfig(path: AbsPath, tool: string): SimulateConfig | undefined { + let simConfig: SimulateConfig = { + mod : '', + clk : '', // 设置的主频信号 + rst : '', // 设置的复位信号 + end : '', // + wave : '', // wave存放的路径 + simulationHome : '', // sim运行的路径 + gtkwavePath : '', // gtkwave安装路径 + installPath : '', // 第三方仿真工具的安装路径 + iverilogPath: 'iverilog', // iverilog仿真器所在路径 + vvpPath: 'vvp' // vvp解释器所在路径 + }; + let code = hdlFile.readFile(path); + if (!code) { + MainOutput.report('error when read ' + path, ReportType.Error); + return; + } + + for (const element in this.regExp) { + const regGroup = code.match(this.regExp[element as keyof typeof this.regExp])?.groups; + if (regGroup) { + simConfig[element as keyof SimulateConfig] = regGroup[element]; + } + } + + const setting = vscode.workspace.getConfiguration(); + + // make simulation dir + const defaultSimulationDir = hdlPath.join(opeParam.prjInfo.arch.prjPath, 'simulation', 'icarus'); + simConfig.simulationHome = setting.get('function.simulate.simulationHome', ''); + if (!simConfig.simulationHome) { + simConfig.simulationHome = defaultSimulationDir; + } + + if (!hdlFile.isDir(simConfig.simulationHome)) { + hdlDir.mkdir(simConfig.simulationHome); + } + + simConfig.gtkwavePath = setting.get('function.simulate.gtkwavePath', 'gtkwave'); + + if (simConfig.gtkwavePath !== '' && !hdlFile.isDir(simConfig.gtkwavePath)) { + simConfig.gtkwavePath = 'gtkwave'; // 如果不存在则认为是加入了环境变量 + } else { + if (opeParam.os === 'win32') { + simConfig.gtkwavePath = hdlPath.join(simConfig.gtkwavePath, 'gtkwave.exe'); + } else { + simConfig.gtkwavePath = hdlPath.join(simConfig.gtkwavePath, 'gtkwave'); + } + } + + simConfig.installPath = setting.get('function.simulate.icarus.installPath', ''); + if (simConfig.installPath !== '' && !hdlFile.isDir(simConfig.installPath)) { + MainOutput.report(`install path ${simConfig.installPath} is illegal`, ReportType.Error); + return; + } + + return simConfig; + } + + /** + * @description 获取自带仿真库的路径 + * @param toolChain + */ + getSimLibArr(toolChain: ToolChainType): AbsPath[] { + let libPath: AbsPath[] = []; + const setting = vscode.workspace.getConfiguration(); + + // 获取xilinx的自带仿真库的路径 + if (toolChain === ToolChainType.Xilinx) { + const simLibPath = setting.get('function.simulate.xilinxLibPath', ''); + + if (!hdlFile.isDir(simLibPath)) { + return []; + } + const glblPath = hdlPath.join(simLibPath, 'glbl.v'); + libPath.push(glblPath); + for (const element of this.xilinxLib) { + const xilinxPath = hdlPath.join(simLibPath, element); + libPath.push(xilinxPath); + } + } + return libPath; + } +} + +/** + * @description icarus 仿真类 + * + */ +class IcarusSimulate extends Simulate { + os: string; + prjPath: AbsPath; + toolChain: ToolChainType; + + simConfig: SimulateConfig | undefined; + + constructor() { + super(); + this.os = opeParam.os; + this.prjPath = opeParam.prjInfo.arch.prjPath; + this.toolChain = opeParam.prjInfo.toolChain; + } + + /** + * generate acutal iverlog simulation command + * @param name name of top module + * @param path path of the simulated file + * @param dependences dependence that not specified in `include macro + * @returns + */ + private getCommand(name: string, path: AbsPath, dependences: string[]): string | undefined { + const simConfig = this.getConfig(path, 'iverilog'); + if (!simConfig) { + return; + } + this.simConfig = simConfig; + const installPath = simConfig.installPath; + + if (this.os === 'win32') { + simConfig.iverilogPath += '.exe'; + simConfig.vvpPath += '.exe'; + } + + if (hdlFile.isDir(installPath)) { + simConfig.iverilogPath = hdlPath.join(installPath, simConfig.iverilogPath); + simConfig.vvpPath = hdlPath.join(installPath, simConfig.vvpPath); + } + + let dependenceArgs = ''; + dependences.forEach(d => dependenceArgs += '"' + d + '" '); + dependenceArgs = dependenceArgs.trim(); + + let thirdLibPath = ' '; + this.getSimLibArr(this.toolChain).forEach(element => { + if(!hdlFile.isDir(element)) { + thirdLibPath += element + " "; + } else { + thirdLibPath += `-y ${element}`; + } + }); + + const iverilogPath = simConfig.iverilogPath; + const argu = '-g2012'; + const outVvpPath = '"' + hdlPath.join(simConfig.simulationHome, 'out.vvp') + '"'; + const mainPath = '"' + path + '"'; + + const cmd = `${iverilogPath} ${argu} -o ${outVvpPath} -s ${name} ${mainPath} ${dependenceArgs} ${thirdLibPath}`; + MainOutput.report(cmd, ReportType.Run); + return cmd; + } + + private execInTerminal(command: string, cwd: AbsPath) { + // let vvp: vscode.Terminal; + // const targetTerminals = vscode.window.terminals.filter(t => t.name === 'vvp'); + // if (targetTerminals.length > 0) { + // vvp = targetTerminals[0]; + // } else { + // vvp = vscode.window.createTerminal('vvp'); + // } + + // let cmd = `${vvpPath} ${outVvpPath}`; + // if (simConfig.wave !== '') { + // let waveExtname = simConfig.wave.split('.'); + // cmd += '-' + waveExtname[simConfig.wave.length - 1]; + // } + + // vvp.show(true); + // vvp.sendText(cmd); + // if (simConfig.wave !== '') { + // vvp.sendText(`${simConfig.gtkwavePath} ${simConfig.wave}`); + // } else { + // MainOutput.report('There is no wave image path in this testbench', ReportType.Error); + // } + } + + private execInOutput(command: string, cwd: AbsPath) { + const simConfig = this.simConfig; + if (!simConfig) { + return; + } + child_process.exec(command, { cwd }, (error, stdout, stderr) => { + if (error) { + MainOutput.report('Error took place when run ' + command, ReportType.Error); + MainOutput.report('Reason: ' + stderr, ReportType.Error); + } else { + MainOutput.report(stdout, ReportType.Info); + const vvpOutFile = hdlPath.join(simConfig.simulationHome, 'out.vvp'); + MainOutput.report("Create vvp to " + vvpOutFile, ReportType.Run); + + const outVvpPath = hdlPath.join(simConfig.simulationHome, 'out.vvp'); + const vvpPath = simConfig.vvpPath; + + // run vvp to interrupt script + const vvpCommand = `${vvpPath} ${outVvpPath}`; + MainOutput.report(vvpCommand, ReportType.Run); + + child_process.exec(vvpCommand, { cwd }, (error, stdout, stderr) => { + if (error) { + MainOutput.report('Error took place when run ' + vvpCommand, ReportType.Error); + MainOutput.report('Reason: ' + stderr, ReportType.Error); + } else { + MainOutput.report(stdout, ReportType.Info); + } + }); + } + }); + } + + private exec(command: string, cwd: AbsPath) { + const simConfig = this.simConfig; + if (!simConfig) { + MainOutput.report('this.simConfig is empty when exec'); + return; + } + + const runInTerminal = vscode.workspace.getConfiguration().get('function.simulate.runInTerminal'); + console.log(runInTerminal); + + if (runInTerminal) { + this.execInTerminal(command, cwd); + } else { + this.execInOutput(command, cwd); + } + } + + private getAllOtherDependences(path: AbsPath, name: string): AbsPath[] { + const deps = hdlParam.getAllDependences(path, name); + if (deps) { + console.log(deps); + + return deps.others; + } else { + MainOutput.report('Fail to get dependences of path: ' + path + ' name: ' + name, ReportType.Warn); + return []; + } + } + + private simulateByHdlModule(hdlModule: HdlModule) { + const name = hdlModule.name; + const path = hdlModule.path; + if (!hdlParam.isTopModule(path, name, false)) { + MainOutput.report('path: ' + path + ' name: ' + name + ' is not top module'); + return; + } + const dependences = this.getAllOtherDependences(path, name); + const simulationCommand = this.getCommand(name, path, dependences); + if (simulationCommand) { + const cwd = hdlPath.resolve(hdlModule.path, '..'); + this.exec(simulationCommand, cwd); + } else { + MainOutput.report('Fail to generate command', ReportType.Error); + return; + } + } + + + public async simulateModule(hdlModule: HdlModule) { + this.simulateByHdlModule(hdlModule); + } + + public async simulateFile() { + const editor = vscode.window.activeTextEditor; + if (!editor) { + return; + } + const uri = editor.document.uri; + const path = hdlPath.toSlash(uri.fsPath); + + const currentFile = hdlParam.getHdlFile(path); + if (!currentFile) { + MainOutput.report('path ' + path + ' is not a hdlFile', ReportType.Error); + return; + } + const items = getSelectItem(currentFile.getAllHdlModules()); + if (items.length) { + let selectModule: HdlModule; + if (items.length === 1) { + selectModule = items[0].module; + } else { + const select = await vscode.window.showQuickPick(items, {placeHolder: 'choose a top module'}); + if (select) { + selectModule = select.module; + } else { + return; + } + } + this.simulateByHdlModule(selectModule); + } + } +} + +const icarus = new IcarusSimulate(); + +namespace Icarus { + export async function simulateModule(hdlModule: HdlModule) { + await icarus.simulateModule(hdlModule); + } + + export async function simulateFile() { + await icarus.simulateFile(); + } +}; + +export { + Icarus +}; \ No newline at end of file diff --git a/src/function/sim/testbench.ts b/src/function/sim/testbench.ts index dc4c996..01d25b9 100644 --- a/src/function/sim/testbench.ts +++ b/src/function/sim/testbench.ts @@ -41,7 +41,7 @@ function generateTestbenchFile(module: HdlModule) { } try { hdlFile.writeFile(tbDisPath, content); - MainOutput.report("Generate testbench successed"); + MainOutput.report("Generate testbench to " + tbDisPath); } catch (err) { vscode.window.showErrorMessage("Generate testbench failed:" + err); } diff --git a/src/function/treeView/index.ts b/src/function/treeView/index.ts new file mode 100644 index 0000000..e69de29 diff --git a/src/global/outputChannel.ts b/src/global/outputChannel.ts index 01e55d5..d28cefa 100644 --- a/src/global/outputChannel.ts +++ b/src/global/outputChannel.ts @@ -8,7 +8,8 @@ enum ReportType { PathCheck = 'Path Check', Info = 'Info', Warn = 'Warn', - Error = 'Error' + Error = 'Error', + Run = 'Run' }; class Output { @@ -20,14 +21,30 @@ class Output { this._ignoreTypes = ignoreType; } - skipMessage(type: ReportType) : boolean { + private alignTime(s: number): string { + const sstr: string = s + ''; + if (sstr.length === 1) { + return '0' + sstr; + } else { + return sstr; + } + } + + private getCurrentTime() { + const date = new Date(); + const hms = [date.getHours(), date.getMinutes(), date.getSeconds()]; + return hms.map(this.alignTime).join(':'); + } + + private skipMessage(type: ReportType) : boolean { return this._ignoreTypes.includes(type); } - report(message: string | unknown, type: ReportType = ReportType.Info) { + public report(message: string | unknown, type: ReportType = ReportType.Info) { if (!this.skipMessage(type) && message) { this._output.show(true); - this._output.appendLine('[' + type + '] ' + message); + const currentTime = this.getCurrentTime(); + this._output.appendLine('[' + type + ' - ' + currentTime + '] ' + message); } } } diff --git a/src/global/prjInfo.ts b/src/global/prjInfo.ts index cf3a0c5..8c8d7a6 100644 --- a/src/global/prjInfo.ts +++ b/src/global/prjInfo.ts @@ -337,13 +337,19 @@ class PrjInfo implements PrjInfoMeta { const value: K = obj[attr]; let isNull = !Boolean(value); if (typeof value === 'string') { - isNull &&= value === 'none'; + isNull ||= value === 'none'; } if (isNull) { obj[attr] = defaultValue; } } + private checkDirExist(dir: AbsPath) { + if (!fs.existsSync(dir)) { + fs.mkdirSync(dir, { recursive: true }); + } + } + public updateArch(arch?: Arch) { const workspacePath = this._workspacePath; @@ -375,14 +381,21 @@ class PrjInfo implements PrjInfoMeta { this.arch.software.data = join(softwarePath, 'data'); } - // if path is '', set as workspace this.setDefaultValue(this.arch.hardware, 'src', workspacePath); this.setDefaultValue(this.arch.hardware, 'sim', workspacePath); this.setDefaultValue(this.arch.hardware, 'data', workspacePath); - this.setDefaultValue(this.arch.software, 'src', workspacePath); this.setDefaultValue(this.arch.software, 'data', workspacePath); + this.setDefaultValue(this.arch, 'prjPath', workspacePath); + + // check existence + this.checkDirExist(this.arch.hardware.sim); + this.checkDirExist(this.arch.hardware.src); + this.checkDirExist(this.arch.hardware.data); + this.checkDirExist(this.arch.software.src); + this.checkDirExist(this.arch.software.data); + this.checkDirExist(this.arch.prjPath); } public updateLibrary(library?: Library) { diff --git a/src/hdlParser/core.ts b/src/hdlParser/core.ts index 90cda43..afb2104 100644 --- a/src/hdlParser/core.ts +++ b/src/hdlParser/core.ts @@ -186,12 +186,17 @@ class HdlParam { // TODO : only support verilog now const langID = hdlFile.getLanguageId(path); if (langID === HdlLangID.Verilog) { - const fast = await HdlSymbol.fast(path); - if (fast) { - new HdlFile(path, - fast.languageId, - fast.macro, - fast.content.modules); + try { + const fast = await HdlSymbol.fast(path); + if (fast) { + new HdlFile(path, + fast.languageId, + fast.macro, + fast.content.modules); + } + } catch (error) { + MainOutput.report('Error happen when parse ' + path, ReportType.Error); + MainOutput.report('Reason: ' + error, ReportType.Error); } } } diff --git a/syntaxes/digital-ide-output.json b/syntaxes/digital-ide-output.json new file mode 100644 index 0000000..2631569 --- /dev/null +++ b/syntaxes/digital-ide-output.json @@ -0,0 +1,90 @@ +{ + "scopeName": "digital-ide.output", + "name": "digital-ide-output", + "patterns": [ + { + "name": "digital-ide.Info", + "match": "(\\[Info - (.*)\\])(.*)", + "captures": { + "1": { + "name": "token.info-token" + }, + "2": { + "name": "string" + } + } + }, + { + "name": "digital-ide.Error", + "match": "(\\[Error - (.*)\\])(.*)", + "captures": { + "1": { + "name": "token.error-token" + }, + "2": { + "name": "string" + }, + "3": { + "name": "token.error-token" + } + } + }, + { + "name": "digital-ide.Warn", + "match": "(\\[Warn - (.*)\\])(.*)", + "captures": { + "1": { + "name": "token.warn-token" + }, + "2": { + "name": "string" + }, + "3": { + "name": "token.warn-token" + } + } + }, + { + "name": "digital-ide.Debug", + "match": "(\\[Debug - (.*)\\])([\\s\\S]*)", + "captures": { + "1": { + "name": "token.debug-token" + }, + "2": { + "name": "string" + }, + "3": { + "name": "token.debug-token" + } + } + }, + { + "name": "digital-ide.Run", + "match": "(\\[Run - (.*)\\])([\\s\\S]*)", + "captures": { + "1": { + "name": "token.info-token" + }, + "2": { + "name": "string" + } + } + }, + { + "name": "string.quoted.double", + "begin": "\"", + "beginCaptures": { + "0": { + "name": "string" + } + }, + "end": "\"", + "endCaptures": { + "0": { + "name": "string" + } + } + } + ] +} \ No newline at end of file diff --git a/test.js b/test.js index fe81f5b..4e54885 100644 --- a/test.js +++ b/test.js @@ -63,10 +63,12 @@ function* walk(path, condition) { (async() => { console.time('test'); - for (const file of walk('./lib', f => f.endsWith('.v'))) { - console.log(file); + // await vlogFast('./lib/common/Apply/DSP/Advance/FFT/Flow_FFT_IFFT/BF_op.v'); + for (const file of walk('./src/test/vlog/dependence_test', f => f.endsWith('.v'))) { + console.log('[file] ', file); try { - await vlogFast(file); + const res = await vlogFast(file); + console.log(res); } catch (err) { console.log(err); } From 8baadf492f7f39d0452892c06adc9a865a95674c Mon Sep 17 00:00:00 2001 From: Kirigaya <1193466151@qq.com> Date: Sun, 9 Apr 2023 22:18:29 +0800 Subject: [PATCH 06/54] first commit --- src/function/treeView/common.ts | 51 +++++++++++++++++++++++++++++++ src/function/treeView/index.ts | 53 +++++++++++++++++++++++++++++++++ 2 files changed, 104 insertions(+) create mode 100644 src/function/treeView/common.ts diff --git a/src/function/treeView/common.ts b/src/function/treeView/common.ts new file mode 100644 index 0000000..022da96 --- /dev/null +++ b/src/function/treeView/common.ts @@ -0,0 +1,51 @@ +const xilinx = new Set([ + "IBUFDS_GTE2", "IBUFDS_GTE3", "OBUFDS_GTE3_ADV", "OBUFDS_GTE3", + "XADC", "SYSMONE1", + "DSP48E1", "DSP48E2", + "BUFGCE_1", "BUFGCE", "BUFG", "BUFH", "BUFHCE", "BUFIO", "BUFMR", "BUFMRCE", "BUFR", + "BUFGMUX_CTRL", "BUFGCTRL", "BUFGMUX", "BUFGMUX_1", + "MMCME2_ADV", "PLLE2_ADV", "MMCME2_BASE", "PLLE2_BASE", + "MMCME3_ADV", "PLLE3_ADV", "MMCME3_BASE", "PLLE3_BASE", + "EFUSE_USR", "BSCANE2", "USR_ACCESSE2", "FRAME_ECCE2", "DNA_PORT", "DNA_PORT2", "ICAPE2", "CAPTUREE2", "STARTUPE2", "ICAPE3", + "IOBUFDS", "IOBUFDS_INTERMDISABLE", "IOBUFDS_DIFF_OUT", "IOBUFDS_DIFF_OUT_INTERMDISABLE", "IOBUF", "IOBUF_INTERMDISABLE", + "IDDR_2CLK", "IDDR", "ODDR", "DCIRESET", "IDDRE1", "ODDRE1", + "IN_FIFO", "OUT_FIFO", + "IBUFDS", "IBUFDS_IBUFDISABLE", "IBUFDS_DIFF_OUT", "IBUFDS_DIFF_OUT_IBUFDISABLE", "IBUFDS_DIFF_OUT_INTERMDISABLE", "IBUFDS_INTERMDISABLE", "IBUF", "IBUF_IBUFDISABLE", "IBUF_INTERMDISABLE", "BUFG_GT_SYNC", + "IDELAYCTRL", "IDELAYE2", + "ISERDESE2", "OSERDESE2", + "OBUFDS", "OBUFTDS", "OBUF", "OBUFT", + "KEEPER", "PULLDOWN", "PULLUP", + "RAMB18E1", "RAMB36E1", "RAMB18E2", "RAMB36E2", + "RAM32X1D_1", "RAM32X1D", "RAM64X1D", "RAM128X1D", + "RAM32M", "RAM64M", "RAM32M16", "RAM64M8", + "RAM32X1S_1", "RAM32X1S", "RAM32X2S", + "RAM64X1S_1", "RAM64X1S", "RAM64X8SW", + "RAM128X1S_1", "RAM128X1S", + "RAM256X1S", "RAM512X1S", + "ROM32X1", "ROM64X1", "ROM128X1", "ROM256X1", + "FIFO18E1", "FIFO36E1", "FIFO18E2", "FIFO36E2", + "IDDR_2CLK", "IDDR", "ODDR", + "FDCE", "FDPE", "FDRE", "FDSE", + "LDCE", "LDPE", + "CARRY4", "CARRY8", "LUT6_2", "CFGLUT5", + "AND2B1L", "OR2L", + "LUT1", "LUT1_D", "LUT1_L", + "LUT2", "LUT2_D", "LUT2_L", + "LUT3", "LUT3_D", "LUT3_L", + "LUT4", "LUT4_D", "LUT4_L", + "LUT5", "LUT5_D", "LUT5_L", + "LUT6", "LUT6_D", "LUT6_L", + "MUXF7", "MUXF7_D", "MUXF7_L", + "MUXF8", "MUXF8_D", "MUXF8_L", + "MUXF9", + "SRL16E", "SRLC32E", + "MASTER_JTAG", "STARTUPE3", "HARD_SYNC" +]); + + +enum ItemMode { vhdl, systemverilog, verilog, remote, cells }; + + +export { + xilinx +}; \ No newline at end of file diff --git a/src/function/treeView/index.ts b/src/function/treeView/index.ts index e69de29..91428c8 100644 --- a/src/function/treeView/index.ts +++ b/src/function/treeView/index.ts @@ -0,0 +1,53 @@ +import * as vscode from 'vscode'; +import { AbsPath } from '../../global'; + +interface ModuleDataItem { + icon: string, // 图标 + name: string, // module name + type: string, + path: AbsPath, // path of the file + parent: ModuleDataItem | null // parent file +} + +interface SelectTop { + src: any, + sim: any +} + + +class ModuleTreeProvider implements vscode.TreeDataProvider { + treeEventEmitter: vscode.EventEmitter; + treeEvent: vscode.Event; + + constructor() { + this.treeEventEmitter = new vscode.EventEmitter(); + this.treeEvent = this.treeEventEmitter.event; + + + } + + + getTreeItem(element: ModuleDataItem): vscode.TreeItem | Thenable { + + } + + getChildren(element?: ModuleDataItem | undefined): vscode.ProviderResult { + if (element) { + const name = element.name; + if (name === 'sim' || name === 'src') { + element.parent = null; + + } + } else { + + } + } + + getParent(element: ModuleDataItem): vscode.ProviderResult { + + } + + getTopModuleItemList(element: ModuleDataItem): ModuleDataItem[] { + + } +} \ No newline at end of file From 0fb86a70a1f5a8d7c653069dc1aa6a744ad66ae1 Mon Sep 17 00:00:00 2001 From: Kirigaya <1193466151@qq.com> Date: Tue, 11 Apr 2023 22:56:09 +0800 Subject: [PATCH 07/54] finish treeView partly --- src/function/index.ts | 23 ++- src/function/treeView/command.ts | 195 ++++++++++++++++++++++ src/function/treeView/common.ts | 11 +- src/function/treeView/index.ts | 77 ++++----- src/function/treeView/tree.ts | 278 +++++++++++++++++++++++++++++++ src/global/prjInfo.ts | 5 +- src/hdlFs/path.ts | 11 +- src/hdlParser/core.ts | 45 ++++- 8 files changed, 588 insertions(+), 57 deletions(-) create mode 100644 src/function/treeView/command.ts create mode 100644 src/function/treeView/tree.ts diff --git a/src/function/index.ts b/src/function/index.ts index e1b47e3..e67bc7a 100644 --- a/src/function/index.ts +++ b/src/function/index.ts @@ -1,7 +1,8 @@ import * as vscode from 'vscode'; import * as hdlDoc from './hdlDoc'; -import * as Sim from './sim'; +import * as sim from './sim'; +import * as treeView from './treeView'; function registerDocumentation(context: vscode.ExtensionContext) { vscode.commands.registerCommand('digital-ide.hdlDoc.showWebview', hdlDoc.showDocWebview); @@ -11,14 +12,28 @@ function registerDocumentation(context: vscode.ExtensionContext) { function registerSimulation(context: vscode.ExtensionContext) { - vscode.commands.registerCommand('digital-ide.tool.instance', Sim.instantiation); - vscode.commands.registerCommand('digital-ide.tool.testbench', Sim.testbench); - vscode.commands.registerCommand('digital-ide.tool.icarus.simulateFile', Sim.Icarus.simulateFile); + vscode.commands.registerCommand('digital-ide.tool.instance', sim.instantiation); + vscode.commands.registerCommand('digital-ide.tool.testbench', sim.testbench); + vscode.commands.registerCommand('digital-ide.tool.icarus.simulateFile', sim.Icarus.simulateFile); } function registerAllCommands(context: vscode.ExtensionContext) { registerDocumentation(context); registerSimulation(context); + registerTreeView(context); +} + +function registerTreeView(context: vscode.ExtensionContext) { + // register normal tree + vscode.window.registerTreeDataProvider('digital-ide.treeView.arch', treeView.moduleTreeProvider); + vscode.window.registerTreeDataProvider('digital-ide.treeView.tool', treeView.toolTreeProvider); + vscode.window.registerTreeDataProvider('digital-ide.treeView.hardware', treeView.hardwareTreeProvider); + vscode.window.registerTreeDataProvider('digital-ide.treeView.software', treeView.softwareTreeProvider); + + // constant used in tree + vscode.commands.executeCommand('setContext', 'TOOL-tree-expand', false); + + } diff --git a/src/function/treeView/command.ts b/src/function/treeView/command.ts new file mode 100644 index 0000000..3280c50 --- /dev/null +++ b/src/function/treeView/command.ts @@ -0,0 +1,195 @@ +/* eslint-disable @typescript-eslint/naming-convention */ +import * as vscode from 'vscode'; +import { getIconConfig } from '../../hdlFs/icons'; + +interface CommandDataItem { + name: string, + cmd: string, + icon: string, + tip: string, + children: any[] +} + +type CommandConfig = Record; + +class BaseCommandTreeProvider implements vscode.TreeDataProvider { + config: CommandConfig; + contextValue: 'HARD' | 'SOFT' | 'TOOL'; + + constructor(config: CommandConfig, contextValue: 'HARD' | 'SOFT' | 'TOOL') { + this.config = config; + this.contextValue = contextValue; + } + + // 根据对象遍历属性,返回CommandDataItem数组 + public makeCommandDataItem(object: any): CommandDataItem[] { + const childDataItemList = []; + for (const key of Object.keys(object)) { + const el = object[key]; + const dataItem: CommandDataItem = { name: key, cmd: el.cmd, icon: el.icon, tip: el.tip, children: el.children }; + childDataItemList.push(dataItem); + } + return childDataItemList; + } + + public getChildren(element: CommandDataItem): CommandDataItem[] { + if (element) { + if (element.children) { + return this.makeCommandDataItem(element.children); + } else { + return []; + } + } else { // 第一层 + return this.makeCommandDataItem(this.config); + } + } + + + // 根据输入的CommandDataItem转化为vscode.TreeItem + getTreeItem(element: CommandDataItem): vscode.TreeItem | Thenable { + const childNum = Object.keys(element.children).length; + const treeItem = new vscode.TreeItem( + element.name, + childNum === 0 ? + vscode.TreeItemCollapsibleState.None : + vscode.TreeItemCollapsibleState.Collapsed + ); + treeItem.contextValue = this.contextValue; + treeItem.command = { + title: element.cmd, + command: element.cmd, + }; + + treeItem.tooltip = element.tip; + + treeItem.iconPath = getIconConfig(element.icon); + + return treeItem; + } +}; + +class HardwareTreeProvider extends BaseCommandTreeProvider { + constructor() { + const config: CommandConfig = { + Launch: { + cmd: 'HARD.Launch', + icon: 'cmd', + tip: 'Launch FPGA development assist function' + }, + Simulate: { + cmd: 'HARD.Simulate', + icon: 'toolBox', + tip: 'Launch the manufacturer Simulation', + children: { + CLI: { + cmd: 'HARD.simCLI', + icon: 'branch', + tip: 'Launch the manufacturer Simulation in CLI' + }, + GUI: { + cmd: 'HARD.simGUI', + icon: 'branch', + tip: 'Launch the manufacturer Simulation in GUI' + }, + } + }, + Refresh: { + cmd: 'HARD.Refresh', + icon: 'cmd', + tip: 'Refresh the current project file' + }, + Build: { + cmd: 'HARD.Build', + icon: 'toolBox', + tip: 'Build the current fpga project', + children: { + Synth: { + cmd: 'HARD.Synth', + icon: 'branch', + tip: 'Synth the current project' + }, + Impl: { + cmd: 'HARD.Impl', + icon: 'branch', + tip: 'Impl the current project' + }, + BitStream: { + cmd: 'HARD.Bit', + icon: 'branch', + tip: 'Generate the BIT File' + }, + } + }, + Program: { + cmd: 'HARD.Program', + icon: 'cmd', + tip: 'Download the bit file into the device' + }, + GUI: { + cmd: 'HARD.GUI', + icon: 'cmd', + tip: 'Open the GUI' + }, + Exit: { + cmd: 'HARD.Exit', + icon: 'cmd', + tip: 'Exit the current project' + } + }; + + super(config, 'HARD'); + } +}; + +class SoftwareTreeProvider extends BaseCommandTreeProvider { + constructor() { + const config: CommandConfig = { + Launch: { + cmd: 'SOFT.Launch', + icon: 'cmd', + tip: 'Launch SDK development assist function' + }, + Build: { + cmd: 'SOFT.Launch', + icon: 'cmd', + tip: 'Build the current SDK project' + }, + Download: { + cmd: 'SOFT.Launch', + icon: 'cmd', + tip: 'Download the boot file into the device' + }, + }; + + super(config, 'SOFT'); + } +} + +class ToolTreeProvider extends BaseCommandTreeProvider { + constructor() { + const config: CommandConfig = { + Clean: { + cmd: 'TOOL.Clean', + icon: 'clean', + tip: 'Clean the current project' + } + }; + super(config, 'TOOL'); + } +} + + +const hardwareTreeProvider = new HardwareTreeProvider(); +const softwareTreeProvider = new SoftwareTreeProvider(); +const toolTreeProvider = new ToolTreeProvider(); + +export { + hardwareTreeProvider, + softwareTreeProvider, + toolTreeProvider, +}; \ No newline at end of file diff --git a/src/function/treeView/common.ts b/src/function/treeView/common.ts index 022da96..27744da 100644 --- a/src/function/treeView/common.ts +++ b/src/function/treeView/common.ts @@ -43,9 +43,16 @@ const xilinx = new Set([ ]); -enum ItemMode { vhdl, systemverilog, verilog, remote, cells }; +const itemModes = new Set([ + 'vhdl', 'systemverilog', 'verilog', 'remote', 'cells' +]); +const otherModes = new Set([ + 'src', 'sim', 'File Error', 'cells' +]); export { - xilinx + xilinx, + itemModes, + otherModes }; \ No newline at end of file diff --git a/src/function/treeView/index.ts b/src/function/treeView/index.ts index 91428c8..a012b96 100644 --- a/src/function/treeView/index.ts +++ b/src/function/treeView/index.ts @@ -1,53 +1,38 @@ import * as vscode from 'vscode'; -import { AbsPath } from '../../global'; +import { hdlPath } from '../../hdlFs'; -interface ModuleDataItem { - icon: string, // 图标 - name: string, // module name - type: string, - path: AbsPath, // path of the file - parent: ModuleDataItem | null // parent file +import { hardwareTreeProvider, softwareTreeProvider, toolTreeProvider } from './command'; +import { moduleTreeProvider, ModuleDataItem } from './tree'; + + +function openFileByUri(uri: string) { + if (hdlPath.exist(uri)) { + vscode.window.showTextDocument(vscode.Uri.file(uri)); + } } -interface SelectTop { - src: any, - sim: any +function refreshArchTree(element: ModuleDataItem) { + // TODO : diff and optimize + moduleTreeProvider.refresh(element); +} + +function expandTreeView() { + vscode.commands.executeCommand('setContext', 'TOOL-tree-expand', false); +} + +function collapseTreeView() { + vscode.commands.executeCommand('workbench.actions.treeView.TOOL-tree-arch.collapseAll'); + vscode.commands.executeCommand('setContext', 'TOOL-tree-expand', true); } -class ModuleTreeProvider implements vscode.TreeDataProvider { - treeEventEmitter: vscode.EventEmitter; - treeEvent: vscode.Event; - - constructor() { - this.treeEventEmitter = new vscode.EventEmitter(); - this.treeEvent = this.treeEventEmitter.event; - - - } - - - getTreeItem(element: ModuleDataItem): vscode.TreeItem | Thenable { - - } - - getChildren(element?: ModuleDataItem | undefined): vscode.ProviderResult { - if (element) { - const name = element.name; - if (name === 'sim' || name === 'src') { - element.parent = null; - - } - } else { - - } - } - - getParent(element: ModuleDataItem): vscode.ProviderResult { - - } - - getTopModuleItemList(element: ModuleDataItem): ModuleDataItem[] { - - } -} \ No newline at end of file +export { + hardwareTreeProvider, + softwareTreeProvider, + toolTreeProvider, + moduleTreeProvider, + expandTreeView, + collapseTreeView, + openFileByUri, + refreshArchTree +}; \ No newline at end of file diff --git a/src/function/treeView/tree.ts b/src/function/treeView/tree.ts new file mode 100644 index 0000000..15ef0fd --- /dev/null +++ b/src/function/treeView/tree.ts @@ -0,0 +1,278 @@ +import * as vscode from 'vscode'; + +import { AbsPath, MainOutput, opeParam, ReportType } from '../../global'; +import { SimPath, SrcPath } from '../../global/prjInfo'; +import { HdlInstance, hdlParam } from '../../hdlParser/core'; +import { HdlFileType } from '../../hdlParser/common'; +import { hdlFile, hdlPath } from '../../hdlFs'; +import { xilinx, itemModes, otherModes } from './common'; +import { getIconConfig } from '../../hdlFs/icons'; + +let needExpand = true; + +interface ModuleDataItem { + icon: string, // 图标 + name: string, // module name + type: string, + path: AbsPath | undefined, // path of the file + parent: ModuleDataItem | null // parent file +} + +interface FirstTopItem { + name: string, + path: AbsPath | undefined +} + +interface FirstTop { + src: FirstTopItem | null, + sim: FirstTopItem | null +} + +function canExpandable(element: ModuleDataItem) { + if (element.icon === 'src' || element.icon === 'sim') { // src and sim can expand anytime + return true; + } else { + const modulePath = element.path; + if (!modulePath) { // unsolved module cannot expand + return false; + } + const moduleName = element.name; + if (!hdlParam.hasHdlModule(modulePath, moduleName)) { // test or bug + return false; + } + const module = hdlParam.getHdlModule(modulePath, moduleName); + if (module) { + return module.getInstanceNum() > 0; + } else { + return false; + } + } +} + + +class ModuleTreeProvider implements vscode.TreeDataProvider { + treeEventEmitter: vscode.EventEmitter; + treeEvent: vscode.Event; + firstTop: FirstTop; + srcRootItem: ModuleDataItem; + simRootItem: ModuleDataItem; + + constructor() { + this.treeEventEmitter = new vscode.EventEmitter(); + this.treeEvent = this.treeEventEmitter.event; + this.firstTop = { + src: null, + sim: null, + }; + this.srcRootItem = {icon: 'src', type: HdlFileType.Src, name: 'src', path: '', parent: null}; + this.simRootItem = {icon: 'sim', type: HdlFileType.Sim, name: 'sim', path: '', parent: null}; + + } + + public refresh(element?: ModuleDataItem) { + if (element) { + this.treeEventEmitter.fire(element); + } else { + // refresh all the root in default + this.refreshSim(); + this.refreshSrc(); + } + } + + public refreshSrc() { + this.treeEventEmitter.fire(this.srcRootItem); + } + + public refreshSim() { + this.treeEventEmitter.fire(this.simRootItem); + } + + + public getTreeItem(element: ModuleDataItem): vscode.TreeItem | Thenable { + let itemName = element.name; + if (itemModes.has(element.icon)) { + itemName = `${element.type}(${itemName})`; + } + + const expandable = canExpandable(element); + let collapsibleState; + if (!expandable) { + collapsibleState = vscode.TreeItemCollapsibleState.None; + } else if (needExpand) { + collapsibleState = vscode.TreeItemCollapsibleState.Expanded; + } else { + collapsibleState = vscode.TreeItemCollapsibleState.Collapsed; + } + + const treeItem = new vscode.TreeItem(itemName, collapsibleState); + // set contextValue file -> simulate / netlist + if (otherModes.has(element.icon)) { + treeItem.contextValue = 'other'; + } else { + treeItem.contextValue = 'file'; + } + + // set tooltip + treeItem.tooltip = element.path; + if (!treeItem.tooltip) { + treeItem.tooltip = "can't find the module of this instance"; + } + + // set iconPath + treeItem.iconPath = getIconConfig(element.icon); + + // set command + treeItem.command = { + title: "Open this HDL File", + // TODO : 修改这里的指令前缀 + command: 'TOOL.tree.arch.openFile', + arguments: [element.path], + }; + + return treeItem; + } + + public getChildren(element?: ModuleDataItem | undefined): vscode.ProviderResult { + if (element) { + const name = element.name; + if (name === 'sim' || name === 'src') { + element.parent = null; + return this.getTopModuleItemList(element); + } else { + return this.getInstanceItemList(element); + } + } else { + // use roots in default + return [ + this.srcRootItem, + this.simRootItem, + ]; + } + } + + public getParent(element: ModuleDataItem): vscode.ProviderResult { + return element.parent; + } + + public getTopModuleItemList(element: ModuleDataItem): ModuleDataItem[] { + // src or sim + const hardwarePath = opeParam.prjInfo.arch.hardware; + const moduleType = element.name as keyof (SrcPath & SimPath); + + const topModules = hdlParam.getTopModulesByType(moduleType); + const topModuleItemList = topModules.map(module => ({ + icon: 'top', + type: moduleType, + name: module.name, + path: module.path, + parent: element, + })); + + if (topModuleItemList.length > 0) { + const type = moduleType as keyof FirstTop; + + const firstTop = topModuleItemList[0]; + if (!this.firstTop[type]) { + this.setFirstTop(type, firstTop.name, firstTop.path); + } + const name = this.firstTop[type]!.name; + const path = this.firstTop[type]!.path; + const icon = this.makeFirstTopIconName(type); + const parent = element; + + const tops = topModuleItemList.filter(item => item.path === path && item.name === name); + const adjustItemList = []; + if (tops.length > 0 || !hdlParam.hasHdlModule(path, name)) { + // mean that the seleted top is an original top module + // push it to the top of the *topModuleItemList* + const headItem = tops[0] ? tops[0] : topModuleItemList[0]; + + headItem.icon = icon; + adjustItemList.push(headItem); + for (const item of topModuleItemList) { + if (item !== headItem) { + adjustItemList.push(item); + } + } + } else { + // mean the selected top is not an original top module + // create it and add it to the head of *topModuleItemList* + const selectedTopItem: ModuleDataItem = {icon, type, name, path, parent}; + adjustItemList.push(selectedTopItem); + adjustItemList.push(...topModuleItemList); + } + return adjustItemList; + } + + return topModuleItemList; + } + + // 获取当前模块下的子模块 + public getInstanceItemList(element: ModuleDataItem): ModuleDataItem[] { + if (!element.path) { + return []; + } + + const moduleDataItemList: ModuleDataItem[] = []; + const targetModule = hdlParam.getHdlModule(element.path, element.name); + + if (targetModule) { + for (const instance of targetModule.getAllInstances()) { + const item: ModuleDataItem = { + icon: 'file', + type: instance.name, + name: instance.type, + path: instance.instModPath, + parent: element + }; + + if (item.type === element.type && // 防止递归 + item.name === element.name && + item.path === element.path) { + continue; + } + item.icon = this.judgeIcon(item, instance); + + moduleDataItemList.push(item); + } + } else { + MainOutput.report(`cannot find ${element} in hdlParam when constructing treeView`, ReportType.Error); + } + + return moduleDataItemList; + } + + public setFirstTop(type: keyof FirstTop, name: string, path: AbsPath | undefined) { + this.firstTop[type] = {name, path}; + } + + + private makeFirstTopIconName(type: string): string { + return 'current-' + type + '-top'; + } + + private judgeIcon(item: ModuleDataItem, instance: HdlInstance): string { + const workspacePath = opeParam.workspacePath; + if (hdlPath.exist(item.path)) { + if (!item.path?.includes(workspacePath)) { + return 'remote'; + } else { + const langID = hdlFile.getLanguageId(item.path); + return langID; + } + } else { + if (xilinx.has(instance.type)) { + return 'cells'; + } else { + return 'File Error'; + } + } + } +} + +const moduleTreeProvider = new ModuleTreeProvider(); + +export { + moduleTreeProvider, + ModuleDataItem +}; \ No newline at end of file diff --git a/src/global/prjInfo.ts b/src/global/prjInfo.ts index 8c8d7a6..7b972d2 100644 --- a/src/global/prjInfo.ts +++ b/src/global/prjInfo.ts @@ -466,5 +466,8 @@ export { Library, RawPrjInfo, toSlash, - resolve + resolve, + SimPath, + SrcPath, + DataPath }; \ No newline at end of file diff --git a/src/hdlFs/path.ts b/src/hdlFs/path.ts index 1cd29ee..db46279 100644 --- a/src/hdlFs/path.ts +++ b/src/hdlFs/path.ts @@ -1,4 +1,5 @@ import * as fspath from 'path'; +import * as fs from 'fs'; import { AbsPath, RelPath } from '../global'; @@ -76,6 +77,13 @@ function filename(path: AbsPath | RelPath): string { return fspath.basename(path, ext); } +function exist(path: AbsPath | undefined): boolean { + if (!path) { + return false; + } + return fs.existsSync(path); +} + export { toSlash, rel2abs, @@ -83,5 +91,6 @@ export { resolve, filename, extname, - basename + basename, + exist }; \ No newline at end of file diff --git a/src/hdlParser/core.ts b/src/hdlParser/core.ts index afb2104..3154dfa 100644 --- a/src/hdlParser/core.ts +++ b/src/hdlParser/core.ts @@ -1,4 +1,4 @@ -import { AbsPath } from '../global'; +import { AbsPath, opeParam } from '../global'; import { HdlLangID } from '../global/enum'; import { MainOutput, ReportType } from '../global/outputChannel'; @@ -39,7 +39,10 @@ class HdlParam { this.pathToHdlFiles.set(path, hdlFile); } - public hasHdlModule(path: AbsPath, name: string): boolean { + public hasHdlModule(path: AbsPath | undefined, name: string): boolean { + if (!path) { + return false; + } const hdlFile = this.getHdlFile(path); if (!hdlFile) { return false; @@ -208,7 +211,43 @@ class HdlParam { hdlFile.makeInstance(); } } - + + public getTopModulesByType(type: string): HdlModule[] { + const hardware = opeParam.prjInfo.arch.hardware; + if (hardware.sim === hardware.src) { + return this.getAllTopModules(); + } + + switch (type) { + case common.HdlFileType.Src: return this.getSrcTopModules(); + case common.HdlFileType.Sim: return this.getSimTopModules(); + default: return []; + } + } + + public getSrcTopModules(): HdlModule[] { + const srcTopModules = this.srcTopModules; + if (!srcTopModules) { + return []; + } + const moduleFiles = []; + for (const module of srcTopModules) { + moduleFiles.push(module); + } + return moduleFiles; + } + + public getSimTopModules(): HdlModule[] { + const simTopModules = this.simTopModules; + if (!simTopModules) { + return []; + } + const moduleFiles = []; + for (const module of simTopModules) { + moduleFiles.push(module); + } + return moduleFiles; + } }; const hdlParam = new HdlParam(); From a246fbdebe686bd6076188039c344af71d2ea52e Mon Sep 17 00:00:00 2001 From: Kirigaya <1193466151@qq.com> Date: Wed, 12 Apr 2023 01:34:33 +0800 Subject: [PATCH 08/54] register tree view --- package.json | 129 +++++++++++++++++++++++++++---- package.nls.json | 36 +++++++-- package.nls.zh-cn.json | 22 +++++- package.nls.zh-tw.json | 22 +++++- src/function/index.ts | 5 ++ src/function/treeView/command.ts | 34 ++++---- 6 files changed, 208 insertions(+), 40 deletions(-) diff --git a/package.json b/package.json index 327538a..ce59c7f 100644 --- a/package.json +++ b/package.json @@ -167,15 +167,118 @@ "light": "images/svg/light/debug.svg", "dark": "images/svg/dark/debug.svg" } + }, + { + "command": "digital-ide.treeView.arch.expand", + "category": "tool", + "icon": "$(expand-all)", + "title": "%digital-ide.treeView.arch.expand.title%" + }, + { + "command": "digital-ide.treeView.arch.collapse", + "category": "tool", + "icon": "$(collapse-all)", + "title": "%digital-ide.treeView.arch.collapse.title%" + }, + { + "command": "digital-ide.treeView.arch.refresh", + "category": "tool", + "icon": "$(refresh)", + "title": "%digital-ide.treeView.arch.refresh.title%" + }, + { + "command": "digital-ide.treeView.arch.openFile", + "category": "tool", + "title": "%digital-ide.treeView.arch.openFile.title%" + }, + { + "command": "digital-ide.tool.tool.clean", + "category": "tool", + "title": "%digital-ide.tool.tool.clean.title%" + }, + { + "command": "digital-ide.soft.launch", + "category": "tool", + "title": "%digital-ide.soft.launch.title%" + }, + { + "command": "digital-ide.soft.build", + "category": "tool", + "title": "%digital-ide.soft.build.title%" + }, + { + "command": "digital-ide.soft.download", + "category": "tool", + "title": "%digital-ide.soft.download.title%" + }, + { + "command": "digital-ide.hard.launch", + "category": "tool", + "title": "%digital-ide.hard.launch.title%" + }, + { + "command": "digital-ide.hard.simulate", + "category": "tool", + "title": "%digital-ide.hard.simulate.title%" + }, + { + "command": "digital-ide.hard.simulate.cli", + "category": "tool", + "title": "%digital-ide.hard.simulate.cli.title%" + }, + { + "command": "digital-ide.hard.simulate.gui", + "category": "tool", + "title": "%digital-ide.hard.simulate.gui.title%" + }, + { + "command": "digital-ide.hard.refresh", + "category": "tool", + "title": "%digital-ide.hard.refresh.title%" + }, + { + "command": "digital-ide.hard.build", + "category": "tool", + "title": "%digital-ide.hard.build.title%" + }, + { + "command": "digital-ide.hard.build.synth", + "category": "tool", + "title": "%digital-ide.hard.build.synth.title%" + }, + { + "command": "digital-ide.hard.build.impl", + "category": "tool", + "title": "%digital-ide.hard.build.impl.title%" + }, + { + "command": "digital-ide.hard.build.bitstream", + "category": "tool", + "title": "%digital-ide.hard.build.bitstream.title%" + }, + { + "command": "digital-ide.hard.program", + "category": "tool", + "title": "%digital-ide.hard.program.title%" + }, + { + "command": "digital-ide.hard.gui", + "category": "tool", + "title": "%digital-ide.hard.gui.title%" + }, + { + "command": "digital-ide.hard.exit", + "category": "tool", + "title": "%digital-ide.hard.exit.title%" } ], "menus": { "editor/title": [ { - "when": "editorLangId == verilog || editorLangId == systemverilog || editorLangId == vhdl", - "command": "digital-ide.tool.icarus.simulateFile", - "group": "navigation@1" - }, + "when": "editorLangId == verilog || editorLangId == systemverilog || editorLangId == vhdl", + "command": "digital-ide.tool.icarus.simulateFile", + "group": "navigation@1" + }, { "when": "editorLangId == verilog || editorLangId == systemverilog || editorLangId == vhdl", "command": "digital-ide.hdlDoc.showWebview", @@ -286,11 +389,11 @@ "configuration": "./config/link.configuration.json" }, { - "id": "digital-ide-output", - "mimetypes": [ - "text/x-code-output" - ] - } + "id": "digital-ide-output", + "mimetypes": [ + "text/x-code-output" + ] + } ], "jsonValidation": [ { @@ -330,10 +433,10 @@ "path": "./syntaxes/systemverilog.json" }, { - "language": "digital-ide-output", - "scopeName": "digital-ide.output", - "path": "./syntaxes/digital-ide-output.json" - } + "language": "digital-ide-output", + "scopeName": "digital-ide.output", + "path": "./syntaxes/digital-ide-output.json" + } ], "snippets": [ { diff --git a/package.nls.json b/package.nls.json index 44efe66..372f648 100644 --- a/package.nls.json +++ b/package.nls.json @@ -1,10 +1,30 @@ { - "digital-ide.property-json.generate.title": "generate property.json", - "digital-ide.property-json.overwrite.title": "overwrite property.json template", - "digital-ide.hdlDoc.exportFile.title": "export the document of current file", - "digital-ide.hdlDoc.exportProject.title": "export the document of current project", - "digital-ide.hdlDoc.showWebview.title": "show the document of current file in a webview", - "digital-ide.tool.instance.title": "generate instance template from selected module", - "digital-ide.tool.testbench.title": "generate testbench template from current file", - "digital-ide.tool.icarus.simulateFile.title": "do simulation for current file" + "digital-ide.property-json.generate.title": "Generate property.json", + "digital-ide.property-json.overwrite.title": "Overwrite property.json template", + "digital-ide.hdlDoc.exportFile.title": "Export the document of current file", + "digital-ide.hdlDoc.exportProject.title": "Export the document of current project", + "digital-ide.hdlDoc.showWebview.title": "Show the document of current file in a webview", + "digital-ide.tool.instance.title": "Generate instance template from selected module", + "digital-ide.tool.testbench.title": "Generate testbench template from current file", + "digital-ide.tool.icarus.simulateFile.title": "Do simulation for current file", + "digital-ide.treeView.arch.expand.title": "expand all the items in tree view", + "digital-ide.treeView.arch.collapse.title": "collapse all the items in tree view", + "digital-ide.treeView.arch.refresh.title": "refresh the tree view", + "digital-ide.treeView.arch.openFile.title": "Open the corresponding file in tree view", + "digital-ide.tool.tool.clean.title": "Clean the current project", + "digital-ide.soft.launch.title": "Launch SDK development assist function", + "digital-ide.soft.build.title": "Build the current SDK project", + "digital-ide.soft.download.title": "Download the boot file into the device", + "digital-ide.hard.launch.title": "Launch FPGA development assist function", + "digital-ide.hard.simulate.title": "Launch the manufacturer Simulation", + "digital-ide.hard.simulate.cli.title": "Launch the manufacturer Simulation in CLI", + "digital-ide.hard.simulate.gui.title": "Launch the manufacturer Simulation in GUI", + "digital-ide.hard.refresh.title": "Refresh the current project file", + "digital-ide.hard.build.title": "Build the current fpga project", + "digital-ide.hard.build.synth.title": "Synth the current project", + "digital-ide.hard.build.impl.title": "Impl the current project", + "digital-ide.hard.build.bitstream.title": "Generate the BIT File", + "digital-ide.hard.program.title": "Download the bit file into the device", + "digital-ide.hard.gui.title": "Open the GUI", + "digital-ide.hard.exit.title": "Exit the current project" } \ No newline at end of file diff --git a/package.nls.zh-cn.json b/package.nls.zh-cn.json index 3fb29a2..d50b45a 100644 --- a/package.nls.zh-cn.json +++ b/package.nls.zh-cn.json @@ -6,5 +6,25 @@ "digital-ide.hdlDoc.showWebview.title": "在 webview 中展示文档", "digital-ide.tool.instance.title": "生成选中 module 的例化模板", "digital-ide.tool.testbench.title": "从当前文件中选择 module 生成 testbench", - "digital-ide.tool.icarus.simulateFile.title": "对当前文件进行仿真" + "digital-ide.tool.icarus.simulateFile.title": "对当前文件进行仿真", + "digital-ide.treeView.arch.expand.title": "", + "digital-ide.treeView.arch.collapse.title": "", + "digital-ide.treeView.arch.refresh.title": "", + "digital-ide.treeView.arch.openFile.title": "", + "digital-ide.tool.tool.clean.title": "", + "digital-ide.soft.launch.title": "", + "digital-ide.soft.build.title": "", + "digital-ide.soft.download.title": "", + "digital-ide.hard.launch.title": "", + "digital-ide.hard.simulate.title": "", + "digital-ide.hard.simulate.cli.title": "", + "digital-ide.hard.simulate.gui.title": "", + "digital-ide.hard.refresh.title": "", + "digital-ide.hard.build.title": "", + "digital-ide.hard.build.synth.title": "", + "digital-ide.hard.build.impl.title": "", + "digital-ide.hard.build.bitstream.title": "", + "digital-ide.hard.program.title": "", + "digital-ide.hard.gui.title": "", + "digital-ide.hard.exit.title": "" } \ No newline at end of file diff --git a/package.nls.zh-tw.json b/package.nls.zh-tw.json index af08476..e13fb9c 100644 --- a/package.nls.zh-tw.json +++ b/package.nls.zh-tw.json @@ -6,5 +6,25 @@ "digital-ide.hdlDoc.showWebview.title": "", "digital-ide.tool.instance.title": "", "digital-ide.tool.testbench.title": "", - "digital-ide.tool.icarus.simulateFile.title": "" + "digital-ide.tool.icarus.simulateFile.title": "", + "digital-ide.treeView.arch.expand.title": "", + "digital-ide.treeView.arch.collapse.title": "", + "digital-ide.treeView.arch.refresh.title": "", + "digital-ide.treeView.arch.openFile.title": "", + "digital-ide.tool.tool.clean.title": "", + "digital-ide.soft.launch.title": "", + "digital-ide.soft.build.title": "", + "digital-ide.soft.download.title": "", + "digital-ide.hard.launch.title": "", + "digital-ide.hard.simulate.title": "", + "digital-ide.hard.simulate.cli.title": "", + "digital-ide.hard.simulate.gui.title": "", + "digital-ide.hard.refresh.title": "", + "digital-ide.hard.build.title": "", + "digital-ide.hard.build.synth.title": "", + "digital-ide.hard.build.impl.title": "", + "digital-ide.hard.build.bitstream.title": "", + "digital-ide.hard.program.title": "", + "digital-ide.hard.gui.title": "", + "digital-ide.hard.exit.title": "" } \ No newline at end of file diff --git a/src/function/index.ts b/src/function/index.ts index e67bc7a..6693458 100644 --- a/src/function/index.ts +++ b/src/function/index.ts @@ -33,6 +33,11 @@ function registerTreeView(context: vscode.ExtensionContext) { // constant used in tree vscode.commands.executeCommand('setContext', 'TOOL-tree-expand', false); + // register command in tree + vscode.commands.registerCommand('digital-ide.treeView.arch.expand', treeView.expandTreeView); + vscode.commands.registerCommand('digital-ide.treeView.arch.collapse', treeView.collapseTreeView); + vscode.commands.registerCommand('digital-ide.treeView.arch.refresh', treeView.refreshArchTree); + vscode.commands.registerCommand('digital-ide.treeView.arch.openFile', treeView.openFileByUri); } diff --git a/src/function/treeView/command.ts b/src/function/treeView/command.ts index 3280c50..c350e87 100644 --- a/src/function/treeView/command.ts +++ b/src/function/treeView/command.ts @@ -77,66 +77,66 @@ class HardwareTreeProvider extends BaseCommandTreeProvider { constructor() { const config: CommandConfig = { Launch: { - cmd: 'HARD.Launch', + cmd: 'digital-ide.hard.launch', icon: 'cmd', tip: 'Launch FPGA development assist function' }, Simulate: { - cmd: 'HARD.Simulate', + cmd: 'digital-ide.hard.simulate', icon: 'toolBox', tip: 'Launch the manufacturer Simulation', children: { CLI: { - cmd: 'HARD.simCLI', + cmd: 'digital-ide.hard.simulate.cli', icon: 'branch', tip: 'Launch the manufacturer Simulation in CLI' }, GUI: { - cmd: 'HARD.simGUI', + cmd: 'digital-ide.hard.simulate.gui', icon: 'branch', tip: 'Launch the manufacturer Simulation in GUI' }, } }, Refresh: { - cmd: 'HARD.Refresh', + cmd: 'digital-ide.hard.refresh', icon: 'cmd', tip: 'Refresh the current project file' }, Build: { - cmd: 'HARD.Build', + cmd: 'digital-ide.hard.build', icon: 'toolBox', tip: 'Build the current fpga project', children: { Synth: { - cmd: 'HARD.Synth', + cmd: 'digital-ide.hard.build.synth', icon: 'branch', tip: 'Synth the current project' }, Impl: { - cmd: 'HARD.Impl', + cmd: 'digital-ide.hard.build.impl', icon: 'branch', - tip: 'Impl the current project' + tip: 'Impl the current project' }, BitStream: { - cmd: 'HARD.Bit', + cmd: 'digital-ide.hard.build.bitstream', icon: 'branch', tip: 'Generate the BIT File' }, } }, Program: { - cmd: 'HARD.Program', + cmd: 'digital-ide.hard.program', icon: 'cmd', tip: 'Download the bit file into the device' }, GUI: { - cmd: 'HARD.GUI', + cmd: 'digital-ide.hard.gui', icon: 'cmd', tip: 'Open the GUI' }, Exit: { - cmd: 'HARD.Exit', + cmd: 'digital-ide.hard.exit', icon: 'cmd', tip: 'Exit the current project' } @@ -150,17 +150,17 @@ class SoftwareTreeProvider extends BaseCommandTreeProvider { constructor() { const config: CommandConfig = { Launch: { - cmd: 'SOFT.Launch', + cmd: 'digital-ide.soft.launch', icon: 'cmd', tip: 'Launch SDK development assist function' }, Build: { - cmd: 'SOFT.Launch', + cmd: 'digital-ide.soft.build', icon: 'cmd', tip: 'Build the current SDK project' }, Download: { - cmd: 'SOFT.Launch', + cmd: 'digital-ide.soft.download', icon: 'cmd', tip: 'Download the boot file into the device' }, @@ -174,7 +174,7 @@ class ToolTreeProvider extends BaseCommandTreeProvider { constructor() { const config: CommandConfig = { Clean: { - cmd: 'TOOL.Clean', + cmd: 'digital-ide.tool.tool.clean', icon: 'clean', tip: 'Clean the current project' } From 52349329df2d8cbfa79b15c3b36d94e01bbb9274 Mon Sep 17 00:00:00 2001 From: Kirigaya <1193466151@qq.com> Date: Wed, 12 Apr 2023 22:09:03 +0800 Subject: [PATCH 09/54] do LibPick --- draft.json | 0 package.json | 37 ++++++ package.nls.zh-cn.json | 40 +++---- package.nls.zh-tw.json | 56 ++++----- script/command/make_title_token.py | 2 +- script/command/translate_from_en.py | 63 ++++++++++ src/extension.ts | 8 +- src/function/index.ts | 12 +- src/function/treeView/index.ts | 2 +- src/manager/index.ts | 11 +- src/manager/lib.ts | 2 +- src/manager/libPick.ts | 172 ++++++++++++++++++++++++++++ src/manager/prj.ts | 11 +- 13 files changed, 345 insertions(+), 71 deletions(-) delete mode 100644 draft.json create mode 100644 src/manager/libPick.ts diff --git a/draft.json b/draft.json deleted file mode 100644 index e69de29..0000000 diff --git a/package.json b/package.json index ce59c7f..04ea114 100644 --- a/package.json +++ b/package.json @@ -273,6 +273,23 @@ } ], "menus": { + "view/title": [ + { + "command": "digital-ide.treeView.arch.collapse", + "group": "navigation", + "when": "view == digital-ide-treeView-arch" + }, + { + "command": "TOOL.libPick", + "group": "navigation", + "when": "view == digital-ide-treeView-arch" + }, + { + "command": "digital-ide.treeView.arch.refresh", + "group": "navigation", + "when": "view == digital-ide-treeView-arch" + } + ], "editor/title": [ { "when": "editorLangId == verilog || editorLangId == systemverilog || editorLangId == vhdl", @@ -286,6 +303,26 @@ } ] }, + "views": { + "TOOL": [ + { + "id": "digital-ide-treeView-arch", + "name": "architecture" + }, + { + "id": "digital-ide-treeView-tool", + "name": "TOOL" + }, + { + "id": "digital-ide-treeView-hardware", + "name": "HARD Options" + }, + { + "id": "digital-ide-treeView-software", + "name": "SOFT Options" + } + ] + }, "keybindings": [ { "command": "digital-ide.tool.instance", diff --git a/package.nls.zh-cn.json b/package.nls.zh-cn.json index d50b45a..ebd5d80 100644 --- a/package.nls.zh-cn.json +++ b/package.nls.zh-cn.json @@ -7,24 +7,24 @@ "digital-ide.tool.instance.title": "生成选中 module 的例化模板", "digital-ide.tool.testbench.title": "从当前文件中选择 module 生成 testbench", "digital-ide.tool.icarus.simulateFile.title": "对当前文件进行仿真", - "digital-ide.treeView.arch.expand.title": "", - "digital-ide.treeView.arch.collapse.title": "", - "digital-ide.treeView.arch.refresh.title": "", - "digital-ide.treeView.arch.openFile.title": "", - "digital-ide.tool.tool.clean.title": "", - "digital-ide.soft.launch.title": "", - "digital-ide.soft.build.title": "", - "digital-ide.soft.download.title": "", - "digital-ide.hard.launch.title": "", - "digital-ide.hard.simulate.title": "", - "digital-ide.hard.simulate.cli.title": "", - "digital-ide.hard.simulate.gui.title": "", - "digital-ide.hard.refresh.title": "", - "digital-ide.hard.build.title": "", - "digital-ide.hard.build.synth.title": "", - "digital-ide.hard.build.impl.title": "", - "digital-ide.hard.build.bitstream.title": "", - "digital-ide.hard.program.title": "", - "digital-ide.hard.gui.title": "", - "digital-ide.hard.exit.title": "" + "digital-ide.treeView.arch.expand.title": "扩大树视图中的所有项目", + "digital-ide.treeView.arch.collapse.title": "崩溃树视图中的所有项目", + "digital-ide.treeView.arch.refresh.title": "刷新树视图", + "digital-ide.treeView.arch.openFile.title": "在树视图打开相应的文件", + "digital-ide.tool.tool.clean.title": "干净的当前项目", + "digital-ide.soft.launch.title": "启动SDK开发辅助功能", + "digital-ide.soft.build.title": "建立项目当前的SDK", + "digital-ide.soft.download.title": "下载文件到设备引导", + "digital-ide.hard.launch.title": "启动FPGA开发辅助功能", + "digital-ide.hard.simulate.title": "启动生产仿真", + "digital-ide.hard.simulate.cli.title": "在CLI推出制造商模拟", + "digital-ide.hard.simulate.gui.title": "在GUI推出制造商模拟", + "digital-ide.hard.refresh.title": "刷新当前的项目文件", + "digital-ide.hard.build.title": "fpga构建当前项目", + "digital-ide.hard.build.synth.title": "Synth当前项目", + "digital-ide.hard.build.impl.title": "Impl当前项目", + "digital-ide.hard.build.bitstream.title": "生成一些文件", + "digital-ide.hard.program.title": "下载文件到设备", + "digital-ide.hard.gui.title": "打开界面", + "digital-ide.hard.exit.title": "退出当前项目" } \ No newline at end of file diff --git a/package.nls.zh-tw.json b/package.nls.zh-tw.json index e13fb9c..67b7825 100644 --- a/package.nls.zh-tw.json +++ b/package.nls.zh-tw.json @@ -1,30 +1,30 @@ { - "digital-ide.property-json.generate.title": "", - "digital-ide.property-json.overwrite.title": "", - "digital-ide.hdlDoc.exportFile.title": "", - "digital-ide.hdlDoc.exportProject.title": "", - "digital-ide.hdlDoc.showWebview.title": "", - "digital-ide.tool.instance.title": "", - "digital-ide.tool.testbench.title": "", - "digital-ide.tool.icarus.simulateFile.title": "", - "digital-ide.treeView.arch.expand.title": "", - "digital-ide.treeView.arch.collapse.title": "", - "digital-ide.treeView.arch.refresh.title": "", - "digital-ide.treeView.arch.openFile.title": "", - "digital-ide.tool.tool.clean.title": "", - "digital-ide.soft.launch.title": "", - "digital-ide.soft.build.title": "", - "digital-ide.soft.download.title": "", - "digital-ide.hard.launch.title": "", - "digital-ide.hard.simulate.title": "", - "digital-ide.hard.simulate.cli.title": "", - "digital-ide.hard.simulate.gui.title": "", - "digital-ide.hard.refresh.title": "", - "digital-ide.hard.build.title": "", - "digital-ide.hard.build.synth.title": "", - "digital-ide.hard.build.impl.title": "", - "digital-ide.hard.build.bitstream.title": "", - "digital-ide.hard.program.title": "", - "digital-ide.hard.gui.title": "", - "digital-ide.hard.exit.title": "" + "digital-ide.property-json.generate.title": "生成 property.json 配置文件", + "digital-ide.property-json.overwrite.title": "修改默認的 property.json 模板文件", + "digital-ide.hdlDoc.exportFile.title": "導出當前文件的文檔", + "digital-ide.hdlDoc.exportProject.title": "導出當前項目的文檔", + "digital-ide.hdlDoc.showWebview.title": "在 webview 中展示文檔", + "digital-ide.tool.instance.title": "生成選中 module 的例化模板", + "digital-ide.tool.testbench.title": "從當前文件中選擇 module 生成 testbench", + "digital-ide.tool.icarus.simulateFile.title": "對當前文件進行仿真", + "digital-ide.treeView.arch.expand.title": "擴大樹視圖中的所有項目", + "digital-ide.treeView.arch.collapse.title": "崩潰樹視圖中的所有項目", + "digital-ide.treeView.arch.refresh.title": "刷新樹視圖", + "digital-ide.treeView.arch.openFile.title": "在樹視圖打開相應的文件", + "digital-ide.tool.tool.clean.title": "乾淨的當前項目", + "digital-ide.soft.launch.title": "啟動SDK開發輔助功能", + "digital-ide.soft.build.title": "建立項目當前的SDK", + "digital-ide.soft.download.title": "下載文件到設備引導", + "digital-ide.hard.launch.title": "啟動FPGA開發輔助功能", + "digital-ide.hard.simulate.title": "啟動生產仿真", + "digital-ide.hard.simulate.cli.title": "在CLI推出製造商模擬", + "digital-ide.hard.simulate.gui.title": "在GUI推出製造商模擬", + "digital-ide.hard.refresh.title": "刷新當前的項目文件", + "digital-ide.hard.build.title": "fpga構建當前項目", + "digital-ide.hard.build.synth.title": "Synth當前項目", + "digital-ide.hard.build.impl.title": "Impl當前項目", + "digital-ide.hard.build.bitstream.title": "生成一些文件", + "digital-ide.hard.program.title": "下載文件到設備", + "digital-ide.hard.gui.title": "打開界面", + "digital-ide.hard.exit.title": "退出當前項目" } \ No newline at end of file diff --git a/script/command/make_title_token.py b/script/command/make_title_token.py index 9c89342..196c875 100644 --- a/script/command/make_title_token.py +++ b/script/command/make_title_token.py @@ -10,7 +10,7 @@ PACKAGE_FILE = './package.json' LANG_PACKGE_FILES = { 'en': './package.nls.json', 'zh-cn': './package.nls.zh-cn.json', - 'zh-tw': './package.nls.zh-tw.json' + 'zh-tw': './package.nls.zh-tw.json', } def generate_title_token(command_name: str) -> str: diff --git a/script/command/translate_from_en.py b/script/command/translate_from_en.py index b1493db..ac90ead 100644 --- a/script/command/translate_from_en.py +++ b/script/command/translate_from_en.py @@ -1,6 +1,69 @@ import sys import os sys.path.append(os.path.abspath('.')) +from typing import Dict + +import requests as r +from zhconv import convert from script.util import read_json, write_json + +PACKAGE_FILE = './package.json' + +LANG_PACKGE_FILES = { + 'en': './package.nls.json', + 'zh-cn': './package.nls.zh-cn.json', + 'zh-tw': './package.nls.zh-tw.json', +} + +def youdao_translate(query: str, from_lang: str='AUTO', to_lang: str='AUTO') -> str: + url = 'http://fanyi.youdao.com/translate' + data = { + "i": query, # 待翻译的字符串 + "from": from_lang, + "to": to_lang, + "smartresult": "dict", + "client": "fanyideskweb", + "salt": "16081210430989", + "doctype": "json", + "version": "2.1", + "keyfrom": "fanyi.web", + "action": "FY_BY_CLICKBUTTION" + } + res = r.post(url, data=data).json() + return res['translateResult'][0][0]['tgt'] + +def to_complex_zh(words: str) -> str: + return convert(words, 'zh-tw') + +def translate_from_en(en_config: Dict[str, str], target_config: Dict[str, str], target_lang_id: str): + for command in target_config.keys(): + desc = target_config[command] + if len(desc) == 0: + en_desc = en_config.get(command, '') + assert len(en_desc) > 0, f'command:{command} in en_config is empty' + target_desc = youdao_translate(en_desc, from_lang='en', to_lang=target_lang_id) + target_config[command] = target_desc + +def translate_complex_zh(zh_config: Dict[str, str], zh_tw_config: Dict[str, str]): + for command in zh_tw_config.keys(): + zh_desc = zh_config.get(command, '') + assert len(zh_desc) > 0, f'{command} in zh_config is empty' + complex_zh_desc = to_complex_zh(zh_desc) + zh_tw_config[command] = complex_zh_desc + + +def main(): + en_config = read_json(LANG_PACKGE_FILES["en"]) + + zh_cn_config = read_json(LANG_PACKGE_FILES["zh-cn"]) + zh_tw_config = read_json(LANG_PACKGE_FILES["zh-tw"]) + + translate_from_en(en_config, zh_cn_config, 'zh') + translate_complex_zh(zh_cn_config, zh_tw_config) + + write_json(LANG_PACKGE_FILES["zh-cn"], zh_cn_config) + write_json(LANG_PACKGE_FILES["zh-tw"], zh_tw_config) + +main() \ No newline at end of file diff --git a/src/extension.ts b/src/extension.ts index d94ad9e..3395309 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -2,12 +2,12 @@ import * as vscode from 'vscode'; import { opeParam, MainOutput, ReportType } from './global'; import { hdlParam } from './hdlParser'; -import { prjManage } from './manager'; - -import { registerAllCommands } from './function'; +import { prjManage, registerManagerCommands } from './manager'; +import { registerFunctionCommands } from './function'; async function registerCommand(context: vscode.ExtensionContext) { - registerAllCommands(context); + registerFunctionCommands(context); + registerManagerCommands(context); } async function launch(context: vscode.ExtensionContext) { diff --git a/src/function/index.ts b/src/function/index.ts index 6693458..f351b83 100644 --- a/src/function/index.ts +++ b/src/function/index.ts @@ -17,7 +17,7 @@ function registerSimulation(context: vscode.ExtensionContext) { vscode.commands.registerCommand('digital-ide.tool.icarus.simulateFile', sim.Icarus.simulateFile); } -function registerAllCommands(context: vscode.ExtensionContext) { +function registerFunctionCommands(context: vscode.ExtensionContext) { registerDocumentation(context); registerSimulation(context); registerTreeView(context); @@ -25,10 +25,10 @@ function registerAllCommands(context: vscode.ExtensionContext) { function registerTreeView(context: vscode.ExtensionContext) { // register normal tree - vscode.window.registerTreeDataProvider('digital-ide.treeView.arch', treeView.moduleTreeProvider); - vscode.window.registerTreeDataProvider('digital-ide.treeView.tool', treeView.toolTreeProvider); - vscode.window.registerTreeDataProvider('digital-ide.treeView.hardware', treeView.hardwareTreeProvider); - vscode.window.registerTreeDataProvider('digital-ide.treeView.software', treeView.softwareTreeProvider); + vscode.window.registerTreeDataProvider('digital-ide-treeView-arch', treeView.moduleTreeProvider); + vscode.window.registerTreeDataProvider('digital-ide-treeView-tool', treeView.toolTreeProvider); + vscode.window.registerTreeDataProvider('digital-ide-treeView-hardware', treeView.hardwareTreeProvider); + vscode.window.registerTreeDataProvider('digital-ide-treeView-software', treeView.softwareTreeProvider); // constant used in tree vscode.commands.executeCommand('setContext', 'TOOL-tree-expand', false); @@ -43,5 +43,5 @@ function registerTreeView(context: vscode.ExtensionContext) { export { - registerAllCommands + registerFunctionCommands }; \ No newline at end of file diff --git a/src/function/treeView/index.ts b/src/function/treeView/index.ts index a012b96..bd43c7b 100644 --- a/src/function/treeView/index.ts +++ b/src/function/treeView/index.ts @@ -21,7 +21,7 @@ function expandTreeView() { } function collapseTreeView() { - vscode.commands.executeCommand('workbench.actions.treeView.TOOL-tree-arch.collapseAll'); + vscode.commands.executeCommand('workbench.actions.treeView.digital-ide-treeView-arch.collapseAll'); vscode.commands.executeCommand('setContext', 'TOOL-tree-expand', true); } diff --git a/src/manager/index.ts b/src/manager/index.ts index 6308f7f..38716b7 100644 --- a/src/manager/index.ts +++ b/src/manager/index.ts @@ -1,5 +1,14 @@ +import * as vscode from 'vscode'; + import { prjManage } from './prj'; + +function registerManagerCommands(context: vscode.ExtensionContext) { + vscode.commands.registerCommand('digital-ide.property-json.generate', prjManage.generatePropertyJson); + vscode.commands.registerCommand('digital-ide.property-json.overwrite', prjManage.overwritePropertyJson); +} + export { - prjManage + prjManage, + registerManagerCommands }; \ No newline at end of file diff --git a/src/manager/lib.ts b/src/manager/lib.ts index 157a8f9..a35231e 100644 --- a/src/manager/lib.ts +++ b/src/manager/lib.ts @@ -33,7 +33,7 @@ class LibManage { } public processLibFiles() { - + } }; \ No newline at end of file diff --git a/src/manager/libPick.ts b/src/manager/libPick.ts new file mode 100644 index 0000000..0c933ad --- /dev/null +++ b/src/manager/libPick.ts @@ -0,0 +1,172 @@ +import * as vscode from 'vscode'; +import * as fspath from 'path'; +import * as fs from 'fs'; + +import { AbsPath, opeParam } from '../global'; +import { HdlLangID } from '../global/enum'; +import { hdlDir, hdlFile, hdlPath } from '../hdlFs'; +import { getIconConfig } from '../hdlFs/icons'; + +type MissPathType = { path?: string }; +type LibPickItem = vscode.QuickPickItem & MissPathType; + +class LibPick { + commonPath: AbsPath; + customPath: AbsPath; + commonQuickPickItem: LibPickItem; + customQuickPickItem: LibPickItem; + rootItems: LibPickItem[]; + backQuickPickItem: LibPickItem; + curPath: AbsPath; + selectedQuickPickItem: LibPickItem | undefined; + + constructor () { + this.commonPath = hdlPath.join(opeParam.extensionPath, 'lib', 'common'); + this.customPath = hdlPath.toSlash(vscode.workspace.getConfiguration('PRJ.custom.Lib.repo').get('path', '')); + + this.commonQuickPickItem = { + label: "$(libpick-common) common", + description: 'common library provided by us', + detail: 'current path: ' + this.commonPath, + path: this.commonPath, + buttons: [{iconPath: getIconConfig('import'), tooltip: 'import everything in common'}] + }; + + this.customQuickPickItem = { + label: "$(libpick-custom) custom", + description: 'custom library by yourself', + detail: 'current path: ' + this.customPath, + path: this.customPath, + buttons: [{iconPath: getIconConfig('import'), tooltip: 'import everything in custom'}] + }; + + this.rootItems = [ + this.commonQuickPickItem, + this.customQuickPickItem + ]; + + this.backQuickPickItem = { + label: '...', + description: 'return' + }; + + this.curPath = ''; + } + + getPathIcon(path: AbsPath): string { + let prompt; + if (hdlFile.isFile(path)) { + const langID = hdlFile.getLanguageId(path); + if (langID === HdlLangID.Vhdl) { + prompt = 'vhdl'; + } else if (langID === HdlLangID.Verilog || + langID === HdlLangID.SystemVerilog) { + prompt = 'verilog'; + } else { + prompt = 'unknown'; + } + } else { + prompt = 'folder'; + } + return `$(libpick-${prompt})`; + } + + private makeQuickPickItemsByPath(path: AbsPath, back: boolean=true): LibPickItem[] { + const items: LibPickItem[] = []; + if (!hdlPath.exist(path)) { + return items; + } + if (back) { + items.push(this.backQuickPickItem); + } + + for (const fileName of fs.readdirSync(path)) { + const filePath = hdlPath.join(path, fileName); + const themeIcon = this.getPathIcon(filePath); + const label = themeIcon + " " + fileName; + const mdPath = hdlPath.join(path, fileName, 'readme.md'); + const mdText = hdlFile.readFile(mdPath); + const description = mdText ? mdText : ''; + const buttons = [{iconPath: getIconConfig('import'), tooltip: 'import everything in ' + fileName}]; + items.push({label, description, path: filePath, buttons}); + } + return items; + } + + private provideQuickPickItem(item?: LibPickItem) { + if (!item) { + return this.rootItems; + } else if (item === this.backQuickPickItem) { + if ((this.curPath === this.commonPath) || + (this.curPath === this.customPath)) { + return this.rootItems; + } else { + // rollback the current path + this.curPath = fspath.dirname(this.curPath); + } + } else if (item === this.commonQuickPickItem) { + this.curPath = this.commonPath; + } else if (item === this.customQuickPickItem) { + this.curPath = this.customPath; + } else { + const label = item.label; + const fileName = label.replace(/\$\([\s\S]*\)/, '').trim(); + this.curPath = hdlPath.join(this.curPath, fileName); + } + + return this.makeQuickPickItemsByPath(this.curPath); + } + + async pickItems() { + const pickWidget = vscode.window.createQuickPick(); + + pickWidget.placeholder = 'pick the library'; + pickWidget.items = this.provideQuickPickItem(); + + pickWidget.onDidChangeSelection(items => { + console.log('enter onDidChangeSelection'); + if (items[0]) { + this.selectedQuickPickItem = items[0]; + } + }); + + pickWidget.onDidAccept(() => { + console.log('enter onDidAccept'); + if (this.selectedQuickPickItem) { + const childernItems = this.provideQuickPickItem(this.selectedQuickPickItem); + if (childernItems && childernItems.length > 0) { + pickWidget.items = childernItems; + } + } + }); + + pickWidget.onDidTriggerItemButton(event => { + const selectedPath = event.item.path; + + if (selectedPath && hdlPath.exist(selectedPath)) { + const ppyPath = hdlPath.join(opeParam.workspacePath, '.vscode', 'property.json'); + let prjInfo = null; + // 如果存在,则读取用户的配置文件,否则使用默认的 + if (!hdlPath.exist(ppyPath)) { + prjInfo = hdlFile.readJSON(opeParam.propertyInitPath); + } else { + prjInfo = hdlFile.readJSON(ppyPath); + } + + if (selectedPath.includes(this.commonQuickPickItem.path!)) { + // this is a module import from common, use relative path + const relPath = selectedPath.replace(this.commonQuickPickItem.path + '/', ''); + + appendLibraryCommonPath(relPath, prjInfo); + } else { + // this is a module import from custom, use absolute path + const relPath = selectedPath.replace(this.customQuickPickItem.path + '/', ''); + appendLibraryCustomPath(relPath, prjInfo); + } + hdlFile.writeJSON(ppyPath, prjInfo); + } + }); + + pickWidget.show(); + } +} \ No newline at end of file diff --git a/src/manager/prj.ts b/src/manager/prj.ts index e0234b8..8978ba5 100644 --- a/src/manager/prj.ts +++ b/src/manager/prj.ts @@ -8,15 +8,8 @@ import { RawPrjInfo } from '../global/prjInfo'; import { hdlFile, hdlPath } from '../hdlFs'; class PrjManage { - constructor() { - vscode.commands.registerCommand('digital-ide.property-json.generate', - this.generatePropertyJson); - vscode.commands.registerCommand('digital-ide.property-json.overwrite', - this.overwritePropertyJson); - } - // generate property template and write it to .vscode/property.json - private async generatePropertyJson() { + public async generatePropertyJson() { if (fs.existsSync(opeParam.propertyJsonPath)) { vscode.window.showWarningMessage('property file already exists !!!'); return; @@ -26,7 +19,7 @@ class PrjManage { } // overwrite content in current property.json to property-init.json - private async overwritePropertyJson() { + public async overwritePropertyJson() { const options = { preview: false, viewColumn: vscode.ViewColumn.Active From 6ef036fa780cff2c813f3334a2543400feee1daa Mon Sep 17 00:00:00 2001 From: Kirigaya <1193466151@qq.com> Date: Thu, 13 Apr 2023 22:46:48 +0800 Subject: [PATCH 10/54] promote lib manage --- src/global/opeParam.ts | 17 +++++++++++++++++ src/manager/libPick.ts | 7 ++++--- src/manager/prj.ts | 1 - 3 files changed, 21 insertions(+), 4 deletions(-) diff --git a/src/global/opeParam.ts b/src/global/opeParam.ts index d398aa0..c6e40b8 100644 --- a/src/global/opeParam.ts +++ b/src/global/opeParam.ts @@ -1,5 +1,6 @@ import * as assert from 'assert'; import * as fs from 'fs'; +import { hdlFile } from '../hdlFs'; import { Arch, PrjInfo, RawPrjInfo, resolve, toSlash } from './prjInfo'; @@ -141,6 +142,22 @@ class OpeParam { public resolvePathExtension(relPath: RelPath): AbsPath { return resolve(this._extensionPath, relPath); } + + /** + * get User's property.json + */ + public getUserPrjInfo() { + const propertyJsonPath = this.propertyJsonPath; + const userPrjInfo = new PrjInfo(); + if (fs.existsSync(propertyJsonPath)) { + const rawPrjInfo = hdlFile.readJSON(propertyJsonPath); + userPrjInfo.merge(rawPrjInfo); + } else { + // use default config instead + const rawPrjInfo = hdlFile.readJSON(this.propertyInitPath); + userPrjInfo.merge(rawPrjInfo); + } + } }; const opeParam: OpeParam = new OpeParam(); diff --git a/src/manager/libPick.ts b/src/manager/libPick.ts index 0c933ad..62458b8 100644 --- a/src/manager/libPick.ts +++ b/src/manager/libPick.ts @@ -145,6 +145,8 @@ class LibPick { if (selectedPath && hdlPath.exist(selectedPath)) { const ppyPath = hdlPath.join(opeParam.workspacePath, '.vscode', 'property.json'); + + // 抽象这块 let prjInfo = null; // 如果存在,则读取用户的配置文件,否则使用默认的 if (!hdlPath.exist(ppyPath)) { @@ -152,11 +154,10 @@ class LibPick { } else { prjInfo = hdlFile.readJSON(ppyPath); } - + if (selectedPath.includes(this.commonQuickPickItem.path!)) { // this is a module import from common, use relative path - const relPath = selectedPath.replace(this.commonQuickPickItem.path + '/', ''); - + const relPath = selectedPath.replace(this.commonQuickPickItem.path + '/', ''); appendLibraryCommonPath(relPath, prjInfo); } else { // this is a module import from custom, use absolute path diff --git a/src/manager/prj.ts b/src/manager/prj.ts index 8978ba5..fc4184a 100644 --- a/src/manager/prj.ts +++ b/src/manager/prj.ts @@ -86,7 +86,6 @@ class PrjManage { public initialise() { } - } const prjManage = new PrjManage(); From 8b127d5302dfa6caac301fd7bfdb76cb3e1536f4 Mon Sep 17 00:00:00 2001 From: Kirigaya <1193466151@qq.com> Date: Tue, 18 Apr 2023 20:03:37 +0800 Subject: [PATCH 11/54] finish reconstruct manage module --- draft2.json => format.json | 2 - package.json | 19 ++++- src/extension.ts | 2 + src/global/opeParam.ts | 31 +++++++- src/global/prjInfo.ts | 45 ++++++++++- src/global/util.ts | 2 +- src/hdlFs/file.ts | 4 +- src/manager/index.ts | 6 ++ src/manager/lib.ts | 157 ++++++++++++++++++++++++++++++++++++- src/manager/libPick.ts | 40 ++++++---- src/manager/prj.ts | 31 +++++--- 11 files changed, 294 insertions(+), 45 deletions(-) rename draft2.json => format.json (99%) diff --git a/draft2.json b/format.json similarity index 99% rename from draft2.json rename to format.json index b719be3..8220f73 100644 --- a/draft2.json +++ b/format.json @@ -1,6 +1,5 @@ { "content": { - "error": [], "modules": [ { "instances": [ @@ -180,7 +179,6 @@ "value": "out" } ], - "error": [], "includes": [ { "path": "child_1.v", diff --git a/package.json b/package.json index 04ea114..f644dc0 100644 --- a/package.json +++ b/package.json @@ -24,12 +24,18 @@ "configuration": { "title": "Digital-IDE", "properties": { - "lib.custom.path": { + "prj.lib.custom.path": { "scope": "window", "type": "string", "default": "", "description": "path of the dictionary of \"custom\" in library" }, + "prj.file.structure.notice": { + "scope": "window", + "type": "boolean", + "default": true, + "description": "notice when change file structure" + }, "function.doc.webview.backgroundImage": { "type": "string", "default": "", @@ -168,6 +174,15 @@ "dark": "images/svg/dark/debug.svg" } }, + { + "command": "digital-ide.pickLibrary", + "title": "import library", + "icon": { + "light": "images/svg/light/library.svg", + "dark": "images/svg/dark/library.svg" + }, + "category": "Digital-IDE" + }, { "command": "digital-ide.treeView.arch.expand", "category": "tool", @@ -280,7 +295,7 @@ "when": "view == digital-ide-treeView-arch" }, { - "command": "TOOL.libPick", + "command": "digital-ide.pickLibrary", "group": "navigation", "when": "view == digital-ide-treeView-arch" }, diff --git a/src/extension.ts b/src/extension.ts index 3395309..91b7703 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -14,8 +14,10 @@ async function launch(context: vscode.ExtensionContext) { console.time('launch'); prjManage.initOpeParam(context); console.log(opeParam.prjInfo); + const hdlFiles = prjManage.getPrjHardwareFiles(); await hdlParam.initialize(hdlFiles); + console.timeLog('launch'); await registerCommand(context); diff --git a/src/global/opeParam.ts b/src/global/opeParam.ts index c6e40b8..e57a06a 100644 --- a/src/global/opeParam.ts +++ b/src/global/opeParam.ts @@ -1,6 +1,5 @@ import * as assert from 'assert'; import * as fs from 'fs'; -import { hdlFile } from '../hdlFs'; import { Arch, PrjInfo, RawPrjInfo, resolve, toSlash } from './prjInfo'; @@ -24,6 +23,16 @@ interface FirstTopModuleDesc { path: AbsPath }; +function readJSON(path: AbsPath): object { + try { + const context = fs.readFileSync(path, 'utf-8'); + return JSON.parse(context); + } catch (err) { + console.log('fail to read JSON: ', err); + } + return {}; +} + class OpeParam { private _os: string = OpeParamDefaults.os; @@ -146,18 +155,32 @@ class OpeParam { /** * get User's property.json */ - public getUserPrjInfo() { + public getUserPrjInfo(): PrjInfo { const propertyJsonPath = this.propertyJsonPath; const userPrjInfo = new PrjInfo(); if (fs.existsSync(propertyJsonPath)) { - const rawPrjInfo = hdlFile.readJSON(propertyJsonPath); + const rawPrjInfo = readJSON(propertyJsonPath); userPrjInfo.merge(rawPrjInfo); } else { // use default config instead - const rawPrjInfo = hdlFile.readJSON(this.propertyInitPath); + const rawPrjInfo = readJSON(this.propertyInitPath); userPrjInfo.merge(rawPrjInfo); } + return userPrjInfo; } + + public getRawUserPrjInfo(): RawPrjInfo { + const propertyJsonPath = this.propertyJsonPath; + if (fs.existsSync(propertyJsonPath)) { + const rawPrjInfo = readJSON(propertyJsonPath); + return rawPrjInfo; + } else { + // use default config instead + const rawPrjInfo = readJSON(this.propertyInitPath); + return rawPrjInfo; + } + } + }; const opeParam: OpeParam = new OpeParam(); diff --git a/src/global/prjInfo.ts b/src/global/prjInfo.ts index 7b972d2..67a338e 100644 --- a/src/global/prjInfo.ts +++ b/src/global/prjInfo.ts @@ -8,6 +8,8 @@ import { ToolChainType, LibraryState, XilinxIP, validToolChainType, validXilinxIP, validLibraryState } from './enum'; import { PrjInfoSchema } from './propertySchema'; import assert = require('assert'); +import * as hdlPath from '../hdlFs/path'; + type AbsPath = string; type RelPath = string; @@ -409,7 +411,7 @@ class PrjInfo implements PrjInfoMeta { } } if (library.hardware) { - // TODO : finish this when you can require root of common and custom + // TODO : finish this when you can acquire root of common and custom const commonPath = this.libCommonPath; const customPath = this.libCustomPath; this.updatePathWisely(this.library.hardware, 'common', library.hardware.common, commonPath); @@ -417,7 +419,31 @@ class PrjInfo implements PrjInfoMeta { } } } - + + public appendLibraryCommonPath(relPath: RelPath) { + this._library.hardware.common.push(relPath); + } + + public appendLibraryCustomPath(relPath: RelPath) { + this._library.hardware.custom.push(relPath); + } + + public getLibraryCommonPaths(absolute: boolean = true): Path[] { + if (absolute) { + const commonFolder = hdlPath.join(this.libCommonPath, 'Empty'); + return this._library.hardware.common.map(relPath => hdlPath.rel2abs(commonFolder, relPath)); + } + return this._library.hardware.common; + } + + public getLibraryCustomPaths(absolute: boolean = true): Path[] { + if (absolute) { + const configFolder = hdlPath.join(this.libCustomPath, 'Empty'); + return this._library.hardware.custom.map(relPath => hdlPath.rel2abs(configFolder, relPath)); + } + return this._library.hardware.custom; + } + /** * merge the input uncomplete prjInfo into this * cover the value that exist in rawPrjInfo recursively @@ -450,7 +476,20 @@ class PrjInfo implements PrjInfoMeta { } public get libCustomPath(): AbsPath { - return vscode.workspace.getConfiguration().get('lib.custom.path', this._workspacePath); + return vscode.workspace.getConfiguration().get('prj.lib.custom.path', this._workspacePath); + } + + public json(): RawPrjInfo { + return { + toolChain: this._toolChain, + prjName: this._prjName, + IP_REPO: this._IP_REPO, + soc: this._soc, + enableShowLog: this._enableShowLog, + device: this._device, + arch: this._arch, + library: this._library, + }; } }; diff --git a/src/global/util.ts b/src/global/util.ts index a9cd2fa..0316e85 100644 --- a/src/global/util.ts +++ b/src/global/util.ts @@ -11,7 +11,7 @@ class PathSet { if (path instanceof Array) { path.forEach(p => this.checkAdd(p)); } else if (fs.existsSync(path)) { - this.files.add(path); + this.files.add(path); } } } diff --git a/src/hdlFs/file.ts b/src/hdlFs/file.ts index d6988e3..4186767 100644 --- a/src/hdlFs/file.ts +++ b/src/hdlFs/file.ts @@ -74,7 +74,7 @@ function isHDLFile(path: AbsPath): boolean { } -function getHDLFiles(path: AbsPath | AbsPath[] | Set, ignores?: AbsPath[]) { +function getHDLFiles(path: AbsPath | AbsPath[] | Set, ignores?: AbsPath[]): AbsPath[] { return pickFileRecursive(path, ignores, filePath => isHDLFile(filePath)); } @@ -98,7 +98,7 @@ function pickFileRecursive(path: AbsPath | AbsPath[] | Set, ignores?: A for (const file of fs.readdirSync(path)) { const filePath = hdlPath.join(path, file); if (isDir(filePath)) { - const subHdlFiles = getHDLFiles(filePath, ignores); + const subHdlFiles = pickFileRecursive(filePath, ignores); if (subHdlFiles.length > 0) { hdlFiles.push(...subHdlFiles); } diff --git a/src/manager/index.ts b/src/manager/index.ts index 38716b7..3a6e596 100644 --- a/src/manager/index.ts +++ b/src/manager/index.ts @@ -1,11 +1,17 @@ import * as vscode from 'vscode'; import { prjManage } from './prj'; +import { pickLibrary } from './libPick'; function registerManagerCommands(context: vscode.ExtensionContext) { vscode.commands.registerCommand('digital-ide.property-json.generate', prjManage.generatePropertyJson); vscode.commands.registerCommand('digital-ide.property-json.overwrite', prjManage.overwritePropertyJson); + + // libpick + vscode.commands.registerCommand('digital-ide.pickLibrary', pickLibrary); + + } export { diff --git a/src/manager/lib.ts b/src/manager/lib.ts index a35231e..5fd5a1d 100644 --- a/src/manager/lib.ts +++ b/src/manager/lib.ts @@ -1,11 +1,50 @@ import * as vscode from 'vscode'; +import * as fs from 'fs'; import { AbsPath, opeParam } from '../global'; -import { hdlFile, hdlPath } from '../hdlFs'; +import { hdlDir, hdlFile, hdlPath } from '../hdlFs'; +import { Library } from '../global/prjInfo'; +import { Path } from '../../resources/hdlParser'; + +interface LibFileChange { + add: AbsPath[], + del: AbsPath[], +} + +interface LibStatus { + type?: string, + list: AbsPath[] +} + + +/** + * a与b的差集 + * @param a + * @param b + * @returns + */ +function diffElement(a: T[], b: T[]): T[] { + const bSet = new Set(b); + return a.filter(el => !bSet.has(el)); +} + + +function removeDuplicates(a: T[]): T[] { + const aSet = new Set(a); + return [...aSet]; +} class LibManage { - constructor() { + curr: LibStatus; + next: LibStatus; + constructor() { + this.curr = { list : [] }; + this.next = { list : [] }; + } + + public get customerPath(): AbsPath { + return opeParam.prjInfo.libCustomPath; } public get srcPath(): AbsPath { @@ -32,8 +71,118 @@ class LibManage { return opeParam.prjInfo.libCustomPath; } - public processLibFiles() { - + public processLibFiles(library: Library): LibFileChange { + // 在不设置state属性的时候默认为remote + this.next.list = this.getLibFiles(library); + if (!hdlFile.isHasAttr(library, 'state')) { + this.next.type = 'remote'; + } else { + if (library.state !== 'remote' && library.state !== 'local') { + return { + 'add' : [], + 'del' : [], + }; + } + this.next.type = library.state; + } + + // 处于初始状态时的情况 + if (!this.curr.type) { + if (!hdlFile.isDir(this.localLibPath)) { + this.curr.type = 'local'; + } else { + this.curr.type = 'remote'; + } + } + + const state = `${this.curr.type}-${this.next.type}`; + let add: AbsPath[] = []; + let del: AbsPath[] = []; + switch (state) { + case 'remote-remote': + add = diffElement(this.next.list, this.curr.list); + del = diffElement(this.curr.list, this.next.list); + break; + case 'remote-local': + // 删除的内容全是remote的,将curr的交出去即可 + del = this.curr.list; + + // 将新增的全部复制到本地,交给monitor进行处理 + this.remote2Local(this.next.list, (src, dist) => { + hdlFile.copyFile(src, dist); + }); + break; + case 'local-remote': + // 本地的lib全部删除,交给monitor进行处理 + const fn = async () => { + if (fs.existsSync(this.localLibPath)) { + const needNotice = vscode.workspace.getConfiguration('prj.file.structure.notice'); + if (needNotice) { + let select = await vscode.window.showWarningMessage("local lib will be removed.", 'Yes', 'Cancel'); + if (select === "Yes") { + hdlDir.rmdir(this.localLibPath); + } + } else { + hdlDir.rmdir(this.localLibPath); + } + } + }; + fn(); + + // 增加的内容全是remote的,将next的交出去即可 + add = this.next.list; + break; + case 'local-local': + // 只管理library里面的内容,如果自己再localPath里加减代码,则不去管理 + add = diffElement(this.next.list, this.curr.list); + del = diffElement(this.curr.list, this.next.list); + + this.remote2Local(add, (src, dist) => { + hdlFile.copyFile(src, dist); + }); + + this.remote2Local(del, (src, dist) => { + hdlFile.removeFile(dist); + }); + add = []; del = []; + break; + default: break; + } + + return { add, del }; } + + getLibFiles(library: Library) { + const libFileList: AbsPath[] = []; + const prjInfo = opeParam.prjInfo; + + // collect common libs + prjInfo.getLibraryCommonPaths().forEach(absPath => libFileList.push(...hdlFile.getHDLFiles(absPath))); + + // collect custom libs + prjInfo.getLibraryCustomPaths().forEach(absPath => libFileList.push(...hdlFile.getHDLFiles(absPath))); + + // Remove duplicate HDL files + return removeDuplicates(libFileList); + } + + remote2Local(remotes: Path[], callback: (src: AbsPath, dist: AbsPath) => void) { + for (const src of remotes) { + let dist; + if (src.includes(this.customerPath)) { + dist = src.replace(this.customerPath, this.localLibPath); + } else { + dist = src.replace(this.sourceLibPath, this.localLibPath); + } + callback(src, dist); + } + } +}; + +const libManage = new LibManage(); + +export { + libManage, + LibManage }; \ No newline at end of file diff --git a/src/manager/libPick.ts b/src/manager/libPick.ts index 62458b8..e606db6 100644 --- a/src/manager/libPick.ts +++ b/src/manager/libPick.ts @@ -3,8 +3,9 @@ import * as fspath from 'path'; import * as fs from 'fs'; import { AbsPath, opeParam } from '../global'; +import { PrjInfo, RawPrjInfo } from '../global/prjInfo'; import { HdlLangID } from '../global/enum'; -import { hdlDir, hdlFile, hdlPath } from '../hdlFs'; +import { hdlFile, hdlPath } from '../hdlFs'; import { getIconConfig } from '../hdlFs/icons'; type MissPathType = { path?: string }; @@ -144,30 +145,35 @@ class LibPick { const selectedPath = event.item.path; if (selectedPath && hdlPath.exist(selectedPath)) { - const ppyPath = hdlPath.join(opeParam.workspacePath, '.vscode', 'property.json'); - - // 抽象这块 - let prjInfo = null; - // 如果存在,则读取用户的配置文件,否则使用默认的 - if (!hdlPath.exist(ppyPath)) { - prjInfo = hdlFile.readJSON(opeParam.propertyInitPath); - } else { - prjInfo = hdlFile.readJSON(ppyPath); - } - + const userPrjInfo = opeParam.getUserPrjInfo(); if (selectedPath.includes(this.commonQuickPickItem.path!)) { // this is a module import from common, use relative path - const relPath = selectedPath.replace(this.commonQuickPickItem.path + '/', ''); - appendLibraryCommonPath(relPath, prjInfo); + const relPath = selectedPath.replace(this.commonQuickPickItem.path + '/', ''); + userPrjInfo.appendLibraryCommonPath(relPath); } else { // this is a module import from custom, use absolute path const relPath = selectedPath.replace(this.customQuickPickItem.path + '/', ''); - appendLibraryCustomPath(relPath, prjInfo); + userPrjInfo.appendLibraryCustomPath(relPath); } - hdlFile.writeJSON(ppyPath, prjInfo); + + // acquire raw and replace it + const rawUserPrjInfo = opeParam.getRawUserPrjInfo(); + rawUserPrjInfo.library = userPrjInfo.library; + hdlFile.writeJSON(opeParam.propertyJsonPath, rawUserPrjInfo); } }); pickWidget.show(); } -} \ No newline at end of file +} + +function pickLibrary() { + const picker = new LibPick(); + picker.pickItems(); +} + +export { + LibPick, + LibPickItem, + pickLibrary +}; \ No newline at end of file diff --git a/src/manager/prj.ts b/src/manager/prj.ts index fc4184a..135c934 100644 --- a/src/manager/prj.ts +++ b/src/manager/prj.ts @@ -6,6 +6,7 @@ import { AbsPath, opeParam } from '../global'; import { PathSet } from '../global/util'; import { RawPrjInfo } from '../global/prjInfo'; import { hdlFile, hdlPath } from '../hdlFs'; +import { libManage } from './lib'; class PrjManage { // generate property template and write it to .vscode/property.json @@ -66,21 +67,30 @@ class PrjManage { } } + public getIgnoreFiles(): AbsPath[] { + return []; + } + public getPrjHardwareFiles(): AbsPath[] { const searchPathSet = new PathSet(); - const hardwareInfo = opeParam.prjInfo.arch.hardware; + const prjInfo = opeParam.prjInfo; + const hardwareInfo = prjInfo.arch.hardware; + + // handle library first + libManage.processLibFiles(prjInfo.library); + + // add possible folder to search + searchPathSet.checkAdd(hardwareInfo.src); + searchPathSet.checkAdd(hardwareInfo.sim); + searchPathSet.checkAdd(prjInfo.getLibraryCommonPaths()); + searchPathSet.checkAdd(prjInfo.getLibraryCustomPaths()); // TODO : make something like .gitignore + const ignores = this.getIgnoreFiles(); - // search src - searchPathSet.checkAdd(hardwareInfo.src); - - // search sim - searchPathSet.checkAdd(hardwareInfo.sim); - + // do search const searchPaths = searchPathSet.files; - - return hdlFile.getHDLFiles(searchPaths, []); + return hdlFile.getHDLFiles(searchPaths, ignores); } public initialise() { @@ -91,5 +101,6 @@ class PrjManage { const prjManage = new PrjManage(); export { - prjManage + prjManage, + PrjManage }; \ No newline at end of file From ee9e990446c9235f43838a5d575c062f01e85509 Mon Sep 17 00:00:00 2001 From: Kirigaya <1193466151@qq.com> Date: Tue, 18 Apr 2023 22:55:56 +0800 Subject: [PATCH 12/54] finish reconstruct manager --- images/svg/DIDE.svg | 14 +++++++++++++- images/svg/view.svg | 1 + images/system.drawio | 28 +++++++++++++++++++++++++++- package.json | 13 +++++++++++-- project/property-init.json | 12 ++++++++++++ src/function/treeView/command.ts | 8 +++++++- src/global/prjInfo.ts | 13 ++++++++++--- src/hdlFs/file.ts | 10 +++++----- src/manager/lib.ts | 12 +++++++++--- src/manager/libPick.ts | 21 +++++++++++++++------ src/manager/prj.ts | 3 ++- 11 files changed, 112 insertions(+), 23 deletions(-) create mode 100644 images/svg/view.svg diff --git a/images/svg/DIDE.svg b/images/svg/DIDE.svg index 9e271a2..83ae052 100644 --- a/images/svg/DIDE.svg +++ b/images/svg/DIDE.svg @@ -1 +1,13 @@ - \ No newline at end of file + + + + + + + + + \ No newline at end of file diff --git a/images/svg/view.svg b/images/svg/view.svg new file mode 100644 index 0000000..52e2deb --- /dev/null +++ b/images/svg/view.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/system.drawio b/images/system.drawio index 6a4def4..d1b4d55 100644 --- a/images/system.drawio +++ b/images/system.drawio @@ -1,6 +1,6 @@ - + @@ -60,4 +60,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/package.json b/package.json index f644dc0..d68c917 100644 --- a/package.json +++ b/package.json @@ -318,15 +318,24 @@ } ] }, + "viewsContainers": { + "activitybar": [ + { + "id": "TreeView", + "title": "Digital-IDE", + "icon": "images/svg/view.svg" + } + ] + }, "views": { - "TOOL": [ + "TreeView": [ { "id": "digital-ide-treeView-arch", "name": "architecture" }, { "id": "digital-ide-treeView-tool", - "name": "TOOL" + "name": "TOOL Options" }, { "id": "digital-ide-treeView-hardware", diff --git a/project/property-init.json b/project/property-init.json index 5bff5f5..07c77fc 100644 --- a/project/property-init.json +++ b/project/property-init.json @@ -6,6 +6,18 @@ "soc": { "core": "none" }, + "arch": { + "prjPath": "./prj", + "hardware": { + "src": "./user/src", + "sim": "./user/sim", + "data": "./user/data" + }, + "software": { + "src": "./user/software/src", + "data": "./user/software/data" + } + }, "enableShowLog": false, "device": "none" } \ No newline at end of file diff --git a/src/function/treeView/command.ts b/src/function/treeView/command.ts index c350e87..39d1b17 100644 --- a/src/function/treeView/command.ts +++ b/src/function/treeView/command.ts @@ -49,10 +49,16 @@ class BaseCommandTreeProvider implements vscode.TreeDataProvider { - const childNum = Object.keys(element.children).length; + const childNum = this.getElementChildrenNum(element); const treeItem = new vscode.TreeItem( element.name, childNum === 0 ? diff --git a/src/global/prjInfo.ts b/src/global/prjInfo.ts index 67a338e..1777476 100644 --- a/src/global/prjInfo.ts +++ b/src/global/prjInfo.ts @@ -225,7 +225,6 @@ class PrjInfo implements PrjInfoMeta { uniformPath = toSlash(uniformPath); - if (check) { if (fs.existsSync(uniformPath)) { return uniformPath; @@ -472,11 +471,19 @@ class PrjInfo implements PrjInfoMeta { } public get libCommonPath(): AbsPath { - return join(this._extensionPath, 'lib', 'common'); + const libPath = join(this._extensionPath, 'lib', 'common'); + if (!fs.existsSync(libPath)) { + vscode.window.showErrorMessage('common lib path in extension is invalid, maybe extension has been corrupted, reinstall the extension'); + } + return libPath; } public get libCustomPath(): AbsPath { - return vscode.workspace.getConfiguration().get('prj.lib.custom.path', this._workspacePath); + const libPath = vscode.workspace.getConfiguration().get('prj.lib.custom.path', this._workspacePath); + if (!fs.existsSync(libPath)) { + vscode.window.showErrorMessage('property "prj.lib.custom.path" is empty or is an invalid path'); + } + return libPath; } public json(): RawPrjInfo { diff --git a/src/hdlFs/file.ts b/src/hdlFs/file.ts index 4186767..ca459b6 100644 --- a/src/hdlFs/file.ts +++ b/src/hdlFs/file.ts @@ -248,7 +248,7 @@ function copyFile(src: AbsPath, dest: AbsPath, cover: boolean = true): boolean { } try { - let parent = fspath.dirname(dest); + const parent = fspath.dirname(dest); fs.mkdirSync(parent, {recursive: true}); if (!fs.existsSync(dest) || cover) { fs.copyFileSync(src, dest); @@ -297,8 +297,8 @@ function isHasAttr(obj: any, attr: string): boolean{ attr = attr.replace(/\[(\w+)\]/g, '.$1'); attr = attr.replace(/^\./, ''); - let keyArr = attr.split('.'); - for (let i = 0; i < keyArr.length; i++) { + const keyArr = attr.split('.'); + for (let i = 0; i < keyArr.length; ++ i) { const element = keyArr[i]; if (!tempObj) { return false; @@ -321,8 +321,8 @@ function isHasValue(obj: any, attr: string, value: any): boolean{ attr = attr.replace(/\[(\w+)\]/g, '.$1'); attr = attr.replace(/^\./, ''); - let keyArr = attr.split('.'); - for (let i = 0; i < keyArr.length; i++) { + const keyArr = attr.split('.'); + for (let i = 0; i < keyArr.length; ++ i) { const element = keyArr[i]; if (!tempObj) { return false; diff --git a/src/manager/lib.ts b/src/manager/lib.ts index 5fd5a1d..c21e851 100644 --- a/src/manager/lib.ts +++ b/src/manager/lib.ts @@ -168,13 +168,19 @@ class LibManage { } remote2Local(remotes: Path[], callback: (src: AbsPath, dist: AbsPath) => void) { + const localLibPath = this.localLibPath; + const sourceLibPath = this.sourceLibPath; + const customerPath = this.customerPath; + const customerPathValid = hdlFile.isDir(customerPath); + for (const src of remotes) { let dist; - if (src.includes(this.customerPath)) { - dist = src.replace(this.customerPath, this.localLibPath); + if (customerPathValid && src.includes(customerPath)) { + dist = src.replace(customerPath, localLibPath); } else { - dist = src.replace(this.sourceLibPath, this.localLibPath); + dist = src.replace(sourceLibPath, localLibPath); } + callback(src, dist); } } diff --git a/src/manager/libPick.ts b/src/manager/libPick.ts index e606db6..8a15caf 100644 --- a/src/manager/libPick.ts +++ b/src/manager/libPick.ts @@ -22,8 +22,8 @@ class LibPick { selectedQuickPickItem: LibPickItem | undefined; constructor () { - this.commonPath = hdlPath.join(opeParam.extensionPath, 'lib', 'common'); - this.customPath = hdlPath.toSlash(vscode.workspace.getConfiguration('PRJ.custom.Lib.repo').get('path', '')); + this.commonPath = opeParam.prjInfo.libCommonPath; + this.customPath = opeParam.prjInfo.libCustomPath; this.commonQuickPickItem = { label: "$(libpick-common) common", @@ -72,6 +72,18 @@ class LibPick { return `$(libpick-${prompt})`; } + private getReadmeText(path: AbsPath, fileName: string): string | undefined { + const mdPath1 = hdlPath.join(path, fileName, 'readme.md'); + if (fs.existsSync(mdPath1)) { + return hdlFile.readFile(mdPath1); + } + const mdPath2 = hdlPath.join(path, fileName, 'README.md'); + if (fs.existsSync(mdPath2)) { + return hdlFile.readFile(mdPath2); + } + return undefined; + } + private makeQuickPickItemsByPath(path: AbsPath, back: boolean=true): LibPickItem[] { const items: LibPickItem[] = []; if (!hdlPath.exist(path)) { @@ -85,8 +97,7 @@ class LibPick { const filePath = hdlPath.join(path, fileName); const themeIcon = this.getPathIcon(filePath); const label = themeIcon + " " + fileName; - const mdPath = hdlPath.join(path, fileName, 'readme.md'); - const mdText = hdlFile.readFile(mdPath); + const mdText = this.getReadmeText(path, fileName); const description = mdText ? mdText : ''; const buttons = [{iconPath: getIconConfig('import'), tooltip: 'import everything in ' + fileName}]; items.push({label, description, path: filePath, buttons}); @@ -125,14 +136,12 @@ class LibPick { pickWidget.items = this.provideQuickPickItem(); pickWidget.onDidChangeSelection(items => { - console.log('enter onDidChangeSelection'); if (items[0]) { this.selectedQuickPickItem = items[0]; } }); pickWidget.onDidAccept(() => { - console.log('enter onDidAccept'); if (this.selectedQuickPickItem) { const childernItems = this.provideQuickPickItem(this.selectedQuickPickItem); if (childernItems && childernItems.length > 0) { diff --git a/src/manager/prj.ts b/src/manager/prj.ts index 135c934..1ed9d45 100644 --- a/src/manager/prj.ts +++ b/src/manager/prj.ts @@ -15,7 +15,8 @@ class PrjManage { vscode.window.showWarningMessage('property file already exists !!!'); return; } - const template = hdlFile.readJSON(opeParam.propertyInitPath); + const template = hdlFile.readJSON(opeParam.propertyInitPath) as RawPrjInfo; + template.arch?.hardware. hdlFile.writeJSON(opeParam.propertyJsonPath, template); } From 9aba47ac10aff8fe21ca648e5d590f16766bd29d Mon Sep 17 00:00:00 2001 From: Kirigaya <1193466151@qq.com> Date: Wed, 19 Apr 2023 01:21:54 +0800 Subject: [PATCH 13/54] fix bug of treeView --- README.md | 5 +++++ package.json | 2 +- project/property-init.json | 12 ------------ src/extension.ts | 2 +- src/function/treeView/index.ts | 16 +++++++++++++--- src/function/treeView/tree.ts | 21 ++++++++++++--------- src/global/prjInfo.ts | 21 +++++++++++++-------- src/manager/lib.ts | 4 ---- src/manager/libPick.ts | 2 ++ src/manager/prj.ts | 2 +- 10 files changed, 48 insertions(+), 39 deletions(-) diff --git a/README.md b/README.md index 0af1fe0..9c7e599 100644 --- a/README.md +++ b/README.md @@ -2,3 +2,8 @@ ![](https://img.shields.io/badge/version-0.3.0-blue) +```bash +npm i +``` + +Enter Vscode & F5 \ No newline at end of file diff --git a/package.json b/package.json index d68c917..66356e4 100644 --- a/package.json +++ b/package.json @@ -322,7 +322,7 @@ "activitybar": [ { "id": "TreeView", - "title": "Digital-IDE", + "title": "Digital-IDE: TreeView", "icon": "images/svg/view.svg" } ] diff --git a/project/property-init.json b/project/property-init.json index 07c77fc..5bff5f5 100644 --- a/project/property-init.json +++ b/project/property-init.json @@ -6,18 +6,6 @@ "soc": { "core": "none" }, - "arch": { - "prjPath": "./prj", - "hardware": { - "src": "./user/src", - "sim": "./user/sim", - "data": "./user/data" - }, - "software": { - "src": "./user/software/src", - "data": "./user/software/data" - } - }, "enableShowLog": false, "device": "none" } \ No newline at end of file diff --git a/src/extension.ts b/src/extension.ts index 91b7703..bee71ba 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -20,7 +20,7 @@ async function launch(context: vscode.ExtensionContext) { console.timeLog('launch'); - await registerCommand(context); + await registerCommand(context); MainOutput.report('Digital-IDE has launched, Version: 0.3.0'); MainOutput.report('OS: ' + opeParam.os); } diff --git a/src/function/treeView/index.ts b/src/function/treeView/index.ts index bd43c7b..42fbce7 100644 --- a/src/function/treeView/index.ts +++ b/src/function/treeView/index.ts @@ -3,11 +3,21 @@ import { hdlPath } from '../../hdlFs'; import { hardwareTreeProvider, softwareTreeProvider, toolTreeProvider } from './command'; import { moduleTreeProvider, ModuleDataItem } from './tree'; +import { Range } from '../../hdlParser/common'; +async function openFileAtPosition(uri: vscode.Uri, line: number, character: number) { + const document = await vscode.workspace.openTextDocument(uri); + const editor = await vscode.window.showTextDocument(document); + const position = new vscode.Position(line, character); + editor.selection = new vscode.Selection(position, position); + editor.revealRange(new vscode.Range(position, position)); +} -function openFileByUri(uri: string) { - if (hdlPath.exist(uri)) { - vscode.window.showTextDocument(vscode.Uri.file(uri)); +function openFileByUri(path: string, range: Range) { + if (hdlPath.exist(path)) { + const uri = vscode.Uri.file(path); + const start = range.start; + openFileAtPosition(uri, start.line - 1, start.character); } } diff --git a/src/function/treeView/tree.ts b/src/function/treeView/tree.ts index 15ef0fd..9f010d9 100644 --- a/src/function/treeView/tree.ts +++ b/src/function/treeView/tree.ts @@ -3,7 +3,7 @@ import * as vscode from 'vscode'; import { AbsPath, MainOutput, opeParam, ReportType } from '../../global'; import { SimPath, SrcPath } from '../../global/prjInfo'; import { HdlInstance, hdlParam } from '../../hdlParser/core'; -import { HdlFileType } from '../../hdlParser/common'; +import { HdlFileType, Range } from '../../hdlParser/common'; import { hdlFile, hdlPath } from '../../hdlFs'; import { xilinx, itemModes, otherModes } from './common'; import { getIconConfig } from '../../hdlFs/icons'; @@ -13,7 +13,8 @@ let needExpand = true; interface ModuleDataItem { icon: string, // 图标 name: string, // module name - type: string, + type: string, + range: Range | null, path: AbsPath | undefined, // path of the file parent: ModuleDataItem | null // parent file } @@ -64,8 +65,8 @@ class ModuleTreeProvider implements vscode.TreeDataProvider { src: null, sim: null, }; - this.srcRootItem = {icon: 'src', type: HdlFileType.Src, name: 'src', path: '', parent: null}; - this.simRootItem = {icon: 'sim', type: HdlFileType.Sim, name: 'sim', path: '', parent: null}; + this.srcRootItem = {icon: 'src', type: HdlFileType.Src, name: 'src', range: null, path: '', parent: null}; + this.simRootItem = {icon: 'sim', type: HdlFileType.Sim, name: 'sim', range: null, path: '', parent: null}; } @@ -120,13 +121,12 @@ class ModuleTreeProvider implements vscode.TreeDataProvider { // set iconPath treeItem.iconPath = getIconConfig(element.icon); - + // set command treeItem.command = { title: "Open this HDL File", - // TODO : 修改这里的指令前缀 - command: 'TOOL.tree.arch.openFile', - arguments: [element.path], + command: 'digital-ide.treeView.arch.openFile', + arguments: [element.path, element.range], }; return treeItem; @@ -164,6 +164,7 @@ class ModuleTreeProvider implements vscode.TreeDataProvider { icon: 'top', type: moduleType, name: module.name, + range: module.range, path: module.path, parent: element, })); @@ -178,6 +179,7 @@ class ModuleTreeProvider implements vscode.TreeDataProvider { const name = this.firstTop[type]!.name; const path = this.firstTop[type]!.path; const icon = this.makeFirstTopIconName(type); + const range = firstTop.range; const parent = element; const tops = topModuleItemList.filter(item => item.path === path && item.name === name); @@ -197,7 +199,7 @@ class ModuleTreeProvider implements vscode.TreeDataProvider { } else { // mean the selected top is not an original top module // create it and add it to the head of *topModuleItemList* - const selectedTopItem: ModuleDataItem = {icon, type, name, path, parent}; + const selectedTopItem: ModuleDataItem = {icon, type, name, range, path, parent}; adjustItemList.push(selectedTopItem); adjustItemList.push(...topModuleItemList); } @@ -222,6 +224,7 @@ class ModuleTreeProvider implements vscode.TreeDataProvider { icon: 'file', type: instance.name, name: instance.type, + range: instance.module ? instance.module.range : null, path: instance.instModPath, parent: element }; diff --git a/src/global/prjInfo.ts b/src/global/prjInfo.ts index 1777476..2d05300 100644 --- a/src/global/prjInfo.ts +++ b/src/global/prjInfo.ts @@ -44,15 +44,15 @@ const PrjInfoDefaults: PrjInfoMeta = { device: 'none', arch: { - prjPath: '', + prjPath: './prj', hardware: { - src: '', - sim: '', - data: '' + src: './user/src', + sim: './user/sim', + data: './user/data' }, software: { - src: '', - data: '' + src: './user/software/src', + data: './user/software/data' } }, @@ -436,8 +436,13 @@ class PrjInfo implements PrjInfoMeta { } public getLibraryCustomPaths(absolute: boolean = true): Path[] { + const libCustomPath = this.libCustomPath; + if (libCustomPath === '') { + return []; + } + if (absolute) { - const configFolder = hdlPath.join(this.libCustomPath, 'Empty'); + const configFolder = hdlPath.join(libCustomPath, 'Empty'); return this._library.hardware.custom.map(relPath => hdlPath.rel2abs(configFolder, relPath)); } return this._library.hardware.custom; @@ -481,7 +486,7 @@ class PrjInfo implements PrjInfoMeta { public get libCustomPath(): AbsPath { const libPath = vscode.workspace.getConfiguration().get('prj.lib.custom.path', this._workspacePath); if (!fs.existsSync(libPath)) { - vscode.window.showErrorMessage('property "prj.lib.custom.path" is empty or is an invalid path'); + return ''; } return libPath; } diff --git a/src/manager/lib.ts b/src/manager/lib.ts index c21e851..ffbad5e 100644 --- a/src/manager/lib.ts +++ b/src/manager/lib.ts @@ -67,10 +67,6 @@ class LibManage { return hdlPath.join(opeParam.extensionPath, 'lib'); } - public get libCustomPath(): AbsPath { - return opeParam.prjInfo.libCustomPath; - } - public processLibFiles(library: Library): LibFileChange { // 在不设置state属性的时候默认为remote this.next.list = this.getLibFiles(library); diff --git a/src/manager/libPick.ts b/src/manager/libPick.ts index 8a15caf..046055e 100644 --- a/src/manager/libPick.ts +++ b/src/manager/libPick.ts @@ -155,6 +155,8 @@ class LibPick { if (selectedPath && hdlPath.exist(selectedPath)) { const userPrjInfo = opeParam.getUserPrjInfo(); + console.log(userPrjInfo); + if (selectedPath.includes(this.commonQuickPickItem.path!)) { // this is a module import from common, use relative path const relPath = selectedPath.replace(this.commonQuickPickItem.path + '/', ''); diff --git a/src/manager/prj.ts b/src/manager/prj.ts index 1ed9d45..34791ee 100644 --- a/src/manager/prj.ts +++ b/src/manager/prj.ts @@ -16,7 +16,7 @@ class PrjManage { return; } const template = hdlFile.readJSON(opeParam.propertyInitPath) as RawPrjInfo; - template.arch?.hardware. + hdlFile.writeJSON(opeParam.propertyJsonPath, template); } From 7fee932ade69d8ebe6ad8f8c70ecd805777e6bed Mon Sep 17 00:00:00 2001 From: Kirigaya <1193466151@qq.com> Date: Wed, 19 Apr 2023 22:52:26 +0800 Subject: [PATCH 14/54] save --- package.json | 194 ++++++++++++++++++++++--------- package.nls.json | 13 ++- package.nls.zh-cn.json | 13 ++- package.nls.zh-tw.json | 13 ++- src/extension.ts | 11 +- src/function/treeView/command.ts | 2 +- src/function/treeView/tree.ts | 17 +++ src/hdlFs/file.ts | 2 + src/hdlParser/core.ts | 4 + src/manager/PL/index.ts | 186 +++++++++++++++++++++++++++++ src/manager/PL/xilinx.ts | 24 ++-- src/manager/PS/index.ts | 61 ++++++++++ src/manager/PS/xilinx.ts | 7 +- src/manager/common.ts | 37 ++++++ src/manager/index.ts | 18 ++- src/manager/prj.ts | 35 +++++- 16 files changed, 546 insertions(+), 91 deletions(-) create mode 100644 src/manager/PL/index.ts create mode 100644 src/manager/PS/index.ts create mode 100644 src/manager/common.ts diff --git a/package.json b/package.json index 66356e4..ccbe09e 100644 --- a/package.json +++ b/package.json @@ -31,11 +31,18 @@ "description": "path of the dictionary of \"custom\" in library" }, "prj.file.structure.notice": { - "scope": "window", - "type": "boolean", - "default": true, - "description": "notice when change file structure" - }, + "scope": "window", + "type": "boolean", + "default": true, + "description": "notice when change file structure" + }, + "prj.vivado.install.path": { + "scope": "window", + "type": "string", + "default": "", + "description": "set the xilinx install path. \n e.g. : D:/APP/vivado_18_3/Vivado/2018.3/bin \n This applies only to WIN For other systems, add it to environment variables" + }, + "prj.xsdk.install.path": {}, "function.doc.webview.backgroundImage": { "type": "string", "default": "", @@ -175,14 +182,14 @@ } }, { - "command": "digital-ide.pickLibrary", - "title": "import library", - "icon": { - "light": "images/svg/light/library.svg", - "dark": "images/svg/dark/library.svg" - }, - "category": "Digital-IDE" - }, + "command": "digital-ide.pickLibrary", + "title": "%digital-ide.pickLibrary.title%", + "icon": { + "light": "images/svg/light/library.svg", + "dark": "images/svg/dark/library.svg" + }, + "category": "Digital-IDE" + }, { "command": "digital-ide.treeView.arch.expand", "category": "tool", @@ -207,9 +214,9 @@ "title": "%digital-ide.treeView.arch.openFile.title%" }, { - "command": "digital-ide.tool.tool.clean", + "command": "digital-ide.tool.clean", "category": "tool", - "title": "%digital-ide.tool.tool.clean.title%" + "title": "%digital-ide.tool.clean.title%" }, { "command": "digital-ide.soft.launch", @@ -285,26 +292,101 @@ "command": "digital-ide.hard.exit", "category": "tool", "title": "%digital-ide.hard.exit.title%" + }, + { + "command": "digital-ide.pl.setSrcTop", + "category": "pl", + "title": "%digital-ide.pl.setSrcTop.title%" + }, + { + "command": "digital-ide.pl.setSimTop", + "category": "pl", + "title": "%digital-ide.pl.setSimTop.title%" + }, + { + "command": "digital-ide.pl.addDevice", + "category": "pl", + "title": "%digital-ide.pl.addDevice.title%" + }, + { + "command": "digital-ide.pl.delDevice", + "category": "pl", + "title": "%digital-ide.pl.delDevice.title%" + }, + { + "command": "digital-ide.pl.addFile", + "category": "pl", + "title": "%digital-ide.pl.addFile.title%" + }, + { + "command": "digital-ide.pl.delFile", + "category": "pl", + "title": "%digital-ide.pl.delFile.title%" + }, + { + "command": "digital-ide.netlist", + "icon": { + "light": "images/svg/light/netlist.svg", + "dark": "images/svg/dark/netlist.svg" + }, + "category": "tool", + "title": "%digital-ide.netlist.title%" + }, + { + "command": "digital-ide.fsm", + "icon": { + "light": "images/svg/light/fsm.svg", + "dark": "images/svg/dark/fsm.svg" + }, + "category": "tool", + "title": "%digital-ide.fsm.title%" } ], "menus": { "view/title": [ - { - "command": "digital-ide.treeView.arch.collapse", - "group": "navigation", - "when": "view == digital-ide-treeView-arch" - }, - { - "command": "digital-ide.pickLibrary", - "group": "navigation", - "when": "view == digital-ide-treeView-arch" - }, - { - "command": "digital-ide.treeView.arch.refresh", - "group": "navigation", - "when": "view == digital-ide-treeView-arch" - } - ], + { + "command": "digital-ide.treeView.arch.collapse", + "group": "navigation", + "when": "view == digital-ide-treeView-arch" + }, + { + "command": "digital-ide.pickLibrary", + "group": "navigation", + "when": "view == digital-ide-treeView-arch" + }, + { + "command": "digital-ide.treeView.arch.refresh", + "group": "navigation", + "when": "view == digital-ide-treeView-arch" + } + ], + "view/item/context": [ + { + "command": "digital-ide.tool.icarus.simulateFile", + "group": "inline@1", + "when": "view == digital-ide-treeView-arch && viewItem == file" + }, + { + "command": "digital-ide.netlist", + "group": "inline@3", + "when": "view == digital-ide-treeView-arch && viewItem == file" + }, + { + "command": "digital-ide.pl.setSrcTop", + "group": "navigation@1", + "when": "view == digital-ide-treeView-arch && viewItem == file" + }, + { + "command": "digital-ide.pl.setSimTop", + "group": "navigation@2", + "when": "view == digital-ide-treeView-arch && viewItem == file" + }, + { + "command": "digital-ide.tool.icarus.simulateFile", + "group": "navigation@3", + "when": "view == digital-ide-treeView-arch && viewItem == file" + } + ], "editor/title": [ { "when": "editorLangId == verilog || editorLangId == systemverilog || editorLangId == vhdl", @@ -320,33 +402,33 @@ }, "viewsContainers": { "activitybar": [ - { - "id": "TreeView", - "title": "Digital-IDE: TreeView", - "icon": "images/svg/view.svg" - } - ] + { + "id": "TreeView", + "title": "Digital-IDE: TreeView", + "icon": "images/svg/view.svg" + } + ] }, "views": { - "TreeView": [ - { - "id": "digital-ide-treeView-arch", - "name": "architecture" - }, - { - "id": "digital-ide-treeView-tool", - "name": "TOOL Options" - }, - { - "id": "digital-ide-treeView-hardware", - "name": "HARD Options" - }, - { - "id": "digital-ide-treeView-software", - "name": "SOFT Options" - } - ] - }, + "TreeView": [ + { + "id": "digital-ide-treeView-arch", + "name": "architecture" + }, + { + "id": "digital-ide-treeView-tool", + "name": "TOOL Options" + }, + { + "id": "digital-ide-treeView-hardware", + "name": "HARD Options" + }, + { + "id": "digital-ide-treeView-software", + "name": "SOFT Options" + } + ] + }, "keybindings": [ { "command": "digital-ide.tool.instance", diff --git a/package.nls.json b/package.nls.json index 372f648..a3be695 100644 --- a/package.nls.json +++ b/package.nls.json @@ -11,7 +11,7 @@ "digital-ide.treeView.arch.collapse.title": "collapse all the items in tree view", "digital-ide.treeView.arch.refresh.title": "refresh the tree view", "digital-ide.treeView.arch.openFile.title": "Open the corresponding file in tree view", - "digital-ide.tool.tool.clean.title": "Clean the current project", + "digital-ide.tool.clean.title": "Clean the current project", "digital-ide.soft.launch.title": "Launch SDK development assist function", "digital-ide.soft.build.title": "Build the current SDK project", "digital-ide.soft.download.title": "Download the boot file into the device", @@ -26,5 +26,14 @@ "digital-ide.hard.build.bitstream.title": "Generate the BIT File", "digital-ide.hard.program.title": "Download the bit file into the device", "digital-ide.hard.gui.title": "Open the GUI", - "digital-ide.hard.exit.title": "Exit the current project" + "digital-ide.hard.exit.title": "Exit the current project", + "digital-ide.pickLibrary.title": "select lib from custom & common", + "digital-ide.pl.setSrcTop.title": "set as top file of src", + "digital-ide.pl.setSimTop.title": "set as top file of sim", + "digital-ide.pl.addDevice.title": "add device", + "digital-ide.pl.delDevice.title": "del device", + "digital-ide.pl.addFile.title": "add file", + "digital-ide.pl.delFile.title": "del file", + "digital-ide.netlist.title": "netlist", + "digital-ide.fsm.title": "finite state machine" } \ No newline at end of file diff --git a/package.nls.zh-cn.json b/package.nls.zh-cn.json index ebd5d80..65a1a05 100644 --- a/package.nls.zh-cn.json +++ b/package.nls.zh-cn.json @@ -11,7 +11,7 @@ "digital-ide.treeView.arch.collapse.title": "崩溃树视图中的所有项目", "digital-ide.treeView.arch.refresh.title": "刷新树视图", "digital-ide.treeView.arch.openFile.title": "在树视图打开相应的文件", - "digital-ide.tool.tool.clean.title": "干净的当前项目", + "digital-ide.tool.clean.title": "干净的当前项目", "digital-ide.soft.launch.title": "启动SDK开发辅助功能", "digital-ide.soft.build.title": "建立项目当前的SDK", "digital-ide.soft.download.title": "下载文件到设备引导", @@ -26,5 +26,14 @@ "digital-ide.hard.build.bitstream.title": "生成一些文件", "digital-ide.hard.program.title": "下载文件到设备", "digital-ide.hard.gui.title": "打开界面", - "digital-ide.hard.exit.title": "退出当前项目" + "digital-ide.hard.exit.title": "退出当前项目", + "digital-ide.pickLibrary.title": "从自定义选择自由和普遍", + "digital-ide.pl.setSrcTop.title": "设置为src的top", + "digital-ide.pl.setSimTop.title": "设置为sim的top", + "digital-ide.pl.addDevice.title": "添加device", + "digital-ide.pl.delDevice.title": "删除device", + "digital-ide.pl.addFile.title": "添加文件", + "digital-ide.pl.delFile.title": "d删除文件", + "digital-ide.netlist.title": "netlist", + "digital-ide.fsm.title": "有限状态机" } \ No newline at end of file diff --git a/package.nls.zh-tw.json b/package.nls.zh-tw.json index 67b7825..86ebf78 100644 --- a/package.nls.zh-tw.json +++ b/package.nls.zh-tw.json @@ -11,7 +11,7 @@ "digital-ide.treeView.arch.collapse.title": "崩潰樹視圖中的所有項目", "digital-ide.treeView.arch.refresh.title": "刷新樹視圖", "digital-ide.treeView.arch.openFile.title": "在樹視圖打開相應的文件", - "digital-ide.tool.tool.clean.title": "乾淨的當前項目", + "digital-ide.tool.clean.title": "乾淨的當前項目", "digital-ide.soft.launch.title": "啟動SDK開發輔助功能", "digital-ide.soft.build.title": "建立項目當前的SDK", "digital-ide.soft.download.title": "下載文件到設備引導", @@ -26,5 +26,14 @@ "digital-ide.hard.build.bitstream.title": "生成一些文件", "digital-ide.hard.program.title": "下載文件到設備", "digital-ide.hard.gui.title": "打開界面", - "digital-ide.hard.exit.title": "退出當前項目" + "digital-ide.hard.exit.title": "退出當前項目", + "digital-ide.pickLibrary.title": "從自定義選擇自由和普遍", + "digital-ide.pl.setSrcTop.title": "設置為src的文件", + "digital-ide.pl.setSimTop.title": "設置為文件的sim卡", + "digital-ide.pl.addDevice.title": "添加設備", + "digital-ide.pl.delDevice.title": "德爾設備", + "digital-ide.pl.addFile.title": "添加文件", + "digital-ide.pl.delFile.title": "del文件", + "digital-ide.netlist.title": "網表", + "digital-ide.fsm.title": "有限狀態機" } \ No newline at end of file diff --git a/src/extension.ts b/src/extension.ts index bee71ba..cba6f8d 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -11,16 +11,9 @@ async function registerCommand(context: vscode.ExtensionContext) { } async function launch(context: vscode.ExtensionContext) { - console.time('launch'); - prjManage.initOpeParam(context); - console.log(opeParam.prjInfo); + await prjManage.initialise(context); + await registerCommand(context); - const hdlFiles = prjManage.getPrjHardwareFiles(); - await hdlParam.initialize(hdlFiles); - - console.timeLog('launch'); - - await registerCommand(context); MainOutput.report('Digital-IDE has launched, Version: 0.3.0'); MainOutput.report('OS: ' + opeParam.os); } diff --git a/src/function/treeView/command.ts b/src/function/treeView/command.ts index 39d1b17..fbe310f 100644 --- a/src/function/treeView/command.ts +++ b/src/function/treeView/command.ts @@ -180,7 +180,7 @@ class ToolTreeProvider extends BaseCommandTreeProvider { constructor() { const config: CommandConfig = { Clean: { - cmd: 'digital-ide.tool.tool.clean', + cmd: 'digital-ide.tool.clean', icon: 'clean', tip: 'Clean the current project' } diff --git a/src/function/treeView/tree.ts b/src/function/treeView/tree.ts index 9f010d9..6874433 100644 --- a/src/function/treeView/tree.ts +++ b/src/function/treeView/tree.ts @@ -82,6 +82,8 @@ class ModuleTreeProvider implements vscode.TreeDataProvider { public refreshSrc() { this.treeEventEmitter.fire(this.srcRootItem); + console.log('enter'); + } public refreshSim() { @@ -134,6 +136,8 @@ class ModuleTreeProvider implements vscode.TreeDataProvider { public getChildren(element?: ModuleDataItem | undefined): vscode.ProviderResult { if (element) { + console.log(element); + const name = element.name; if (name === 'sim' || name === 'src') { element.parent = null; @@ -182,6 +186,8 @@ class ModuleTreeProvider implements vscode.TreeDataProvider { const range = firstTop.range; const parent = element; + + const tops = topModuleItemList.filter(item => item.path === path && item.name === name); const adjustItemList = []; if (tops.length > 0 || !hdlParam.hasHdlModule(path, name)) { @@ -271,6 +277,17 @@ class ModuleTreeProvider implements vscode.TreeDataProvider { } } } + + public getItemType(item: ModuleDataItem): string | null { + if (!item) { + return null; + } + let currentLevel = item; + while (currentLevel.parent) { + currentLevel = currentLevel.parent; + } + return currentLevel.type; + } } const moduleTreeProvider = new ModuleTreeProvider(); diff --git a/src/hdlFs/file.ts b/src/hdlFs/file.ts index ca459b6..911381d 100644 --- a/src/hdlFs/file.ts +++ b/src/hdlFs/file.ts @@ -179,6 +179,8 @@ function writeFile(path: AbsPath, content: string): boolean { function readJSON(path: AbsPath): object { try { + console.log(path); + const context = fs.readFileSync(path, 'utf-8'); return JSON.parse(context); } catch (err) { diff --git a/src/hdlParser/core.ts b/src/hdlParser/core.ts index 3154dfa..f393295 100644 --- a/src/hdlParser/core.ts +++ b/src/hdlParser/core.ts @@ -167,6 +167,10 @@ class HdlParam { return dependencies; } + public getUnhandleInstanceNumber(): number { + return this.unhandleInstances.size; + } + public getUnhandleInstanceByType(typeName: string): HdlInstance | undefined { for (const inst of this.unhandleInstances) { if (inst.type === typeName) { diff --git a/src/manager/PL/index.ts b/src/manager/PL/index.ts new file mode 100644 index 0000000..d9a09fe --- /dev/null +++ b/src/manager/PL/index.ts @@ -0,0 +1,186 @@ +import * as vscode from 'vscode'; + +import { PLConfig, XilinxOperation } from './xilinx'; +import { BaseManage } from '../common'; +import { opeParam } from '../../global'; +import { ToolChainType } from '../../global/enum'; +import { hdlFile, hdlPath } from '../../hdlFs'; +import { moduleTreeProvider, ModuleDataItem } from '../../function/treeView/tree'; +import { HdlFileType } from '../../hdlParser/common'; +import { PropertySchema } from '../../global/propertySchema'; + +class PlManage extends BaseManage { + config: PLConfig; + + constructor() { + super(); + this.config = { + tool: 'default', + path: '', + ope: new XilinxOperation(), + terminal: this.createTerminal('Hardware') + }; + + if (opeParam.prjInfo.toolChain) { + this.config.tool = opeParam.prjInfo.toolChain; + } + + const curToolChain = this.config.tool; + if (curToolChain === ToolChainType.Xilinx) { + const vivadoPath = vscode.workspace.getConfiguration('prj.vivado.install').get('path', ''); + if (hdlFile.isDir(vivadoPath)) { + this.config.path = hdlPath.join(hdlPath.toSlash(vivadoPath), 'vivado'); + if (opeParam.os === 'win32') { + this.config.path += '.bat'; + } + } else { + this.config.path = 'vivado'; + } + } + } + + + launch() { + this.config.ope.launch(this.config); + } + + refresh() { + if (!this.config.terminal) { + return null; + } + + this.config.ope.refresh(this.config.terminal); + } + + simulate() { + if (!this.config.terminal) { + return null; + } + + this.config.ope.simulate(this.config); + } + + build() { + if (!this.config.terminal) { + return null; + } + + this.config.ope.build(this.config); + } + + synth() { + if (!this.config.terminal) { + return null; + } + + this.config.ope.synth(this.config); + } + + impl() { + if (!this.config.terminal) { + return null; + } + + this.config.ope.impl(this.config); + } + + bit() { + if (!this.config.terminal) { + return null; + } + + this.config.ope.generateBit(this.config); + } + + program() { + if (!this.config.terminal) { + return null; + } + + this.config.ope.program(this.config); + } + + gui() { + this.config.ope.gui(this.config); + } + + exit() { + if (!this.config.terminal) { + return null; + } + + this.config.terminal.show(true); + this.config.terminal.sendText(`exit`); + this.config.terminal.sendText(`exit`); + this.config.terminal = null; + } + + + setSrcTop(item: ModuleDataItem) { + this.config.ope.setSrcTop(item.name, this.config); + const type = moduleTreeProvider.getItemType(item); + if (type === HdlFileType.Src) { + moduleTreeProvider.setFirstTop(HdlFileType.Src, item.name, item.path); + moduleTreeProvider.refreshSrc(); + } + } + + setSimTop(item: ModuleDataItem) { + this.config.ope.setSimTop(item.name, this.config); + const type = moduleTreeProvider.getItemType(item); + if (type === HdlFileType.Sim) { + moduleTreeProvider.setFirstTop(HdlFileType.Sim, item.name, item.path); + moduleTreeProvider.refreshSim(); + } + } + + + async addFiles(files: string[]) { + this.config.ope.addFiles(files, this.config); + } + + async delFiles(files: string[]) { + this.config.ope.delFiles(files, this.config); + } + + async addDevice() { + const propertySchema = opeParam.propertySchemaPath; + let propertyParam = hdlFile.readJSON(propertySchema) as PropertySchema; + const device = await vscode.window.showInputBox({ + password: false, + ignoreFocusOut: true, + placeHolder: 'Please input the name of device' + }); + + if (!device) { + return; + } + + if (!propertyParam.properties.device.enum.includes(device)) { + propertyParam.properties.device.enum.push(device); + hdlFile.writeJSON(propertySchema, propertyParam); + vscode.window.showInformationMessage(`Add the ${device} successfully!!!`); + } else { + vscode.window.showWarningMessage("The device already exists."); + } + } + + async delDevice() { + const propertySchema = opeParam.propertySchemaPath; + let propertyParam = hdlFile.readJSON(propertySchema) as PropertySchema; + const device = await vscode.window.showQuickPick(propertyParam.properties.device.enum); + if (!device) { + return; + } + + const index = propertyParam.properties.device.enum.indexOf(device); + propertyParam.properties.device.enum.splice(index, 1); + hdlFile.writeJSON(propertySchema, propertyParam); + vscode.window.showInformationMessage(`Delete the ${device} successfully!!!`); + } +} + + +export { + PlManage, +}; \ No newline at end of file diff --git a/src/manager/PL/xilinx.ts b/src/manager/PL/xilinx.ts index 952f206..bb0f826 100644 --- a/src/manager/PL/xilinx.ts +++ b/src/manager/PL/xilinx.ts @@ -23,10 +23,10 @@ interface TopMod { }; interface PLConfig { - terminal? : vscode.Terminal | null, + terminal : vscode.Terminal | null, tool? : string, // 工具类型 path? : string, // 第三方工具运行路径 - ope? : XilinxOperation, + ope : XilinxOperation, }; interface PLPrjInfo { @@ -152,7 +152,7 @@ class XilinxOperation { } const tclPath = hdlPath.join(this.xilinxPath, 'launch.tcl'); - scripts.push(this.refresh({terminal: null})); + scripts.push(this.refresh()); scripts.push(`file delete ${tclPath} -force`); const tclCommands = scripts.join('\n') + '\n'; @@ -177,7 +177,7 @@ class XilinxOperation { scripts.push(`open_project ${path} -quiet`); } - refresh(config: PLConfig): string { + refresh(terminal?: vscode.Terminal): string { const scripts: string[] = []; // 清除所有源文件 scripts.push(`remove_files -quiet [get_files]`); @@ -284,7 +284,7 @@ class XilinxOperation { hdlFile.writeFile(scriptPath, script); const cmd = `source ${scriptPath} -quiet`; - config.terminal?.sendText(cmd); + terminal?.sendText(cmd); return cmd; } @@ -561,7 +561,10 @@ class XilinxBd { this.extensionPath = opeParam.extensionPath; this.xbdPath = hdlPath.join(this.extensionPath, 'lib', 'bd', 'xilinx'); this.schemaPath = opeParam.propertySchemaPath; + + this.schemaCont = hdlFile.readJSON(this.schemaPath) as PropertySchema; + this.bdEnum = this.schemaCont.properties.soc.properties.bd.enum; this.bdRepo = this.setting.get('PRJ.xilinx.BD.repo.path', ''); } @@ -630,9 +633,7 @@ class XilinxBd { hdlFile.writeJSON(this.schemaPath, this.schemaCont); } - /** - * - */ + delete() { this.getConfig(); vscode.window.showQuickPick(this.bdEnum).then(select => { @@ -810,10 +811,9 @@ const tools = { }; -const xilinxBd = new XilinxBd(); - -module.exports = { +export { XilinxOperation, tools, - xilinxBd + XilinxBd, + PLConfig }; diff --git a/src/manager/PS/index.ts b/src/manager/PS/index.ts new file mode 100644 index 0000000..a914df4 --- /dev/null +++ b/src/manager/PS/index.ts @@ -0,0 +1,61 @@ +import * as vscode from 'vscode'; +import { opeParam } from '../../global'; +import { ToolChainType } from '../../global/enum'; +import { hdlFile, hdlPath } from '../../hdlFs'; +import { BaseManage } from '../common'; + +import { PSConfig, XilinxOperation } from './xilinx'; + + +class PsManage extends BaseManage { + config: PSConfig; + + constructor() { + super(); + this.config = { + tool : 'default', + path : '', + ope : new XilinxOperation(), + terminal : this.createTerminal('PS') + }; + + + // get tool chain + if (opeParam.prjInfo.toolChain) { + this.config.tool = opeParam.prjInfo.toolChain; + } + + // get install path & operation object + if (this.config.tool === ToolChainType.Xilinx) { + const xsdkPath = vscode.workspace.getConfiguration('prj.xsdk.install').get('path', ''); + if (hdlFile.isDir(xsdkPath)) { + this.config.path = hdlPath.join(hdlPath.toSlash(xsdkPath), 'xsct'); + if (opeParam.os === "win32") { + this.config.path += '.bat'; + } + } else { + this.config.path = 'xsct'; + } + } + } + + launch() { + this.config.terminal = this.createTerminal('Software'); + this.config.ope.launch(this.config); + } + + build() { + this.config.terminal = this.createTerminal('Software'); + this.config.ope.build(this.config); + } + + program() { + this.config.terminal = this.createTerminal('Software'); + this.config.ope.program(this.config); + } +} + + +export { + PsManage, +}; \ No newline at end of file diff --git a/src/manager/PS/xilinx.ts b/src/manager/PS/xilinx.ts index 518d4a3..34f40ec 100644 --- a/src/manager/PS/xilinx.ts +++ b/src/manager/PS/xilinx.ts @@ -15,10 +15,10 @@ interface XilinxOperationConfig { } interface PSConfig { - terminal? : vscode.Terminal | null, + terminal : vscode.Terminal, tool? : string, // 工具类型 path? : string, // 第三方工具运行路径 - ope? : XilinxOperation, + ope : XilinxOperation, } /** @@ -120,5 +120,6 @@ file delete ${scriptPath} -force\n`; } export { - XilinxOperation + XilinxOperation, + PSConfig }; \ No newline at end of file diff --git a/src/manager/common.ts b/src/manager/common.ts new file mode 100644 index 0000000..d241718 --- /dev/null +++ b/src/manager/common.ts @@ -0,0 +1,37 @@ +import * as vscode from 'vscode'; + +class BaseManage { + /** + * 创建终端,并返回对应的属性 + * @param name 终端名 + * @returns 终端属性 + */ + createTerminal(name: string) { + const terminal = this.getTerminal(name); + if (terminal) { + return terminal; + } + + return vscode.window.createTerminal({ + name: name + }); + } + + /** + * 获取终端对应的属性 + * @param name 终端名 + * @returns 终端属性 + */ + getTerminal(name: string): vscode.Terminal | null { + for (const terminal of vscode.window.terminals) { + if (terminal.name === name) { + return terminal; + } + } + return null; + } +} + +export { + BaseManage +}; \ No newline at end of file diff --git a/src/manager/index.ts b/src/manager/index.ts index 3a6e596..8fc106f 100644 --- a/src/manager/index.ts +++ b/src/manager/index.ts @@ -1,17 +1,33 @@ import * as vscode from 'vscode'; +import * as assert from 'assert'; import { prjManage } from './prj'; import { pickLibrary } from './libPick'; - function registerManagerCommands(context: vscode.ExtensionContext) { + // make ps and ps have been prepared + assert(prjManage.pl, 'pl is undefined'); + assert(prjManage.ps, 'ps is undefined'); + + const plManage = prjManage.pl; + const psManage = prjManage.ps; + vscode.commands.registerCommand('digital-ide.property-json.generate', prjManage.generatePropertyJson); vscode.commands.registerCommand('digital-ide.property-json.overwrite', prjManage.overwritePropertyJson); // libpick vscode.commands.registerCommand('digital-ide.pickLibrary', pickLibrary); + // ps + vscode.commands.registerCommand('digital-ide.pl.setSrcTop', (item) => plManage.setSrcTop(item)); + vscode.commands.registerCommand('digital-ide.pl.setSimTop', (item) => plManage.setSimTop(item)); + vscode.commands.registerCommand('digital-ide.pl.addDevice', () => plManage.addDevice()); + vscode.commands.registerCommand('digital-ide.pl.delDevice', () => plManage.delDevice()); + vscode.commands.registerCommand('digital-ide.pl.addFile', files => plManage.addFiles(files)); + vscode.commands.registerCommand('digital-ide.pl.delFile', files => plManage.delFiles(files)); + // pl + } export { diff --git a/src/manager/prj.ts b/src/manager/prj.ts index 34791ee..0d01077 100644 --- a/src/manager/prj.ts +++ b/src/manager/prj.ts @@ -2,13 +2,19 @@ import * as vscode from 'vscode'; import * as fs from 'fs'; -import { AbsPath, opeParam } from '../global'; +import { AbsPath, MainOutput, opeParam, ReportType } from '../global'; import { PathSet } from '../global/util'; import { RawPrjInfo } from '../global/prjInfo'; import { hdlFile, hdlPath } from '../hdlFs'; import { libManage } from './lib'; +import { hdlParam } from '../hdlParser'; +import { PlManage } from './PL'; +import { PsManage } from './PS'; class PrjManage { + pl?: PlManage; + ps?: PsManage; + // generate property template and write it to .vscode/property.json public async generatePropertyJson() { if (fs.existsSync(opeParam.propertyJsonPath)) { @@ -78,7 +84,8 @@ class PrjManage { const hardwareInfo = prjInfo.arch.hardware; // handle library first - libManage.processLibFiles(prjInfo.library); + const fileChange = libManage.processLibFiles(prjInfo.library); + MainOutput.report(`libManage finish process, add ${fileChange.add.length} files, del ${fileChange.del.length} files`, ReportType.Info); // add possible folder to search searchPathSet.checkAdd(hardwareInfo.src); @@ -94,8 +101,30 @@ class PrjManage { return hdlFile.getHDLFiles(searchPaths, ignores); } - public initialise() { + public async initialise(context: vscode.ExtensionContext, countTimeCost: boolean = true) { + if (countTimeCost) { + console.time('launch'); + } + this.initOpeParam(context); + MainOutput.report('finish initialise opeParam', ReportType.Info); + + const hdlFiles = this.getPrjHardwareFiles(); + MainOutput.report(`finish collect ${hdlFiles.length} hdl files`, ReportType.Info); + + await hdlParam.initialize(hdlFiles); + const unhandleNum = hdlParam.getUnhandleInstanceNumber(); + MainOutput.report(`finish analyse ${hdlFiles.length} hdl files, find ${unhandleNum} unsolved instances`, ReportType.Info); + + this.pl = new PlManage(); + this.ps = new PsManage(); + MainOutput.report('create pl and ps', ReportType.Info); + + + + if (countTimeCost) { + console.timeLog('launch'); + } } } From 8a4fc5bb702246b2760fccdc450843a514e089e3 Mon Sep 17 00:00:00 2001 From: Kirigaya <1193466151@qq.com> Date: Thu, 20 Apr 2023 22:40:56 +0800 Subject: [PATCH 15/54] finish libPick set top function | iverilog simulation --- src/function/sim/simulate.ts | 23 +++++++++------- src/function/sim/testbench.ts | 1 - src/function/treeView/tree.ts | 21 ++++++--------- src/global/outputChannel.ts | 22 +++++++++++++++- src/global/prjInfo.ts | 14 +++++----- src/manager/libPick.ts | 1 - .../dependence_test/.vscode/property.json | 17 ++++++++++++ src/test/vlog/dependence_test/hello.v | 6 +++++ .../dependence_test/simulation/icarus/out.vvp | 26 +++++++++++++++++++ 9 files changed, 98 insertions(+), 33 deletions(-) create mode 100644 src/test/vlog/dependence_test/.vscode/property.json create mode 100644 src/test/vlog/dependence_test/hello.v create mode 100644 src/test/vlog/dependence_test/simulation/icarus/out.vvp diff --git a/src/function/sim/simulate.ts b/src/function/sim/simulate.ts index 84bf9d9..b208d0d 100644 --- a/src/function/sim/simulate.ts +++ b/src/function/sim/simulate.ts @@ -1,4 +1,5 @@ import * as vscode from 'vscode'; +import * as fs from 'fs'; import * as child_process from 'child_process'; import { hdlParam } from '../../hdlParser'; @@ -53,7 +54,7 @@ class Simulate { }; let code = hdlFile.readFile(path); if (!code) { - MainOutput.report('error when read ' + path, ReportType.Error); + MainOutput.report('error when read ' + path, ReportType.Error, true); return; } @@ -69,11 +70,14 @@ class Simulate { // make simulation dir const defaultSimulationDir = hdlPath.join(opeParam.prjInfo.arch.prjPath, 'simulation', 'icarus'); simConfig.simulationHome = setting.get('function.simulate.simulationHome', ''); - if (!simConfig.simulationHome) { + if (!fs.existsSync(simConfig.simulationHome)) { simConfig.simulationHome = defaultSimulationDir; } + + if (!hdlFile.isDir(simConfig.simulationHome)) { + MainOutput.report('create dir ' + simConfig.simulationHome, ReportType.Info); hdlDir.mkdir(simConfig.simulationHome); } @@ -91,7 +95,7 @@ class Simulate { simConfig.installPath = setting.get('function.simulate.icarus.installPath', ''); if (simConfig.installPath !== '' && !hdlFile.isDir(simConfig.installPath)) { - MainOutput.report(`install path ${simConfig.installPath} is illegal`, ReportType.Error); + MainOutput.report(`install path ${simConfig.installPath} is illegal`, ReportType.Error, true); return; } @@ -183,7 +187,7 @@ class IcarusSimulate extends Simulate { const iverilogPath = simConfig.iverilogPath; const argu = '-g2012'; const outVvpPath = '"' + hdlPath.join(simConfig.simulationHome, 'out.vvp') + '"'; - const mainPath = '"' + path + '"'; + const mainPath = '"' + path + '"'; const cmd = `${iverilogPath} ${argu} -o ${outVvpPath} -s ${name} ${mainPath} ${dependenceArgs} ${thirdLibPath}`; MainOutput.report(cmd, ReportType.Run); @@ -255,7 +259,6 @@ class IcarusSimulate extends Simulate { } const runInTerminal = vscode.workspace.getConfiguration().get('function.simulate.runInTerminal'); - console.log(runInTerminal); if (runInTerminal) { this.execInTerminal(command, cwd); @@ -267,8 +270,6 @@ class IcarusSimulate extends Simulate { private getAllOtherDependences(path: AbsPath, name: string): AbsPath[] { const deps = hdlParam.getAllDependences(path, name); if (deps) { - console.log(deps); - return deps.others; } else { MainOutput.report('Fail to get dependences of path: ' + path + ' name: ' + name, ReportType.Warn); @@ -280,7 +281,8 @@ class IcarusSimulate extends Simulate { const name = hdlModule.name; const path = hdlModule.path; if (!hdlParam.isTopModule(path, name, false)) { - MainOutput.report('path: ' + path + ' name: ' + name + ' is not top module'); + const warningMsg = name + ' in ' + path + ' is not top module'; + MainOutput.report(warningMsg, ReportType.Warn, true); return; } const dependences = this.getAllOtherDependences(path, name); @@ -289,7 +291,8 @@ class IcarusSimulate extends Simulate { const cwd = hdlPath.resolve(hdlModule.path, '..'); this.exec(simulationCommand, cwd); } else { - MainOutput.report('Fail to generate command', ReportType.Error); + const errorMsg = 'Fail to generate command'; + MainOutput.report(errorMsg, ReportType.Error, true); return; } } @@ -309,7 +312,7 @@ class IcarusSimulate extends Simulate { const currentFile = hdlParam.getHdlFile(path); if (!currentFile) { - MainOutput.report('path ' + path + ' is not a hdlFile', ReportType.Error); + MainOutput.report('path ' + path + ' is not a hdlFile', ReportType.Error, true); return; } const items = getSelectItem(currentFile.getAllHdlModules()); diff --git a/src/function/sim/testbench.ts b/src/function/sim/testbench.ts index 01d25b9..87e989c 100644 --- a/src/function/sim/testbench.ts +++ b/src/function/sim/testbench.ts @@ -58,7 +58,6 @@ async function testbench() { placeHolder: 'Select a Module to generate testbench' }; const path = hdlPath.toSlash(uri.fsPath); - console.log(path); if (!hdlFile.isHDLFile(path)) { return; diff --git a/src/function/treeView/tree.ts b/src/function/treeView/tree.ts index 6874433..7807115 100644 --- a/src/function/treeView/tree.ts +++ b/src/function/treeView/tree.ts @@ -52,27 +52,26 @@ function canExpandable(element: ModuleDataItem) { class ModuleTreeProvider implements vscode.TreeDataProvider { - treeEventEmitter: vscode.EventEmitter; - treeEvent: vscode.Event; + _onDidChangeTreeData: vscode.EventEmitter; + onDidChangeTreeData: vscode.Event; firstTop: FirstTop; srcRootItem: ModuleDataItem; simRootItem: ModuleDataItem; constructor() { - this.treeEventEmitter = new vscode.EventEmitter(); - this.treeEvent = this.treeEventEmitter.event; + this._onDidChangeTreeData = new vscode.EventEmitter(); + this.onDidChangeTreeData = this._onDidChangeTreeData.event; this.firstTop = { src: null, sim: null, }; this.srcRootItem = {icon: 'src', type: HdlFileType.Src, name: 'src', range: null, path: '', parent: null}; this.simRootItem = {icon: 'sim', type: HdlFileType.Sim, name: 'sim', range: null, path: '', parent: null}; - } public refresh(element?: ModuleDataItem) { if (element) { - this.treeEventEmitter.fire(element); + this._onDidChangeTreeData.fire(element); } else { // refresh all the root in default this.refreshSim(); @@ -81,13 +80,11 @@ class ModuleTreeProvider implements vscode.TreeDataProvider { } public refreshSrc() { - this.treeEventEmitter.fire(this.srcRootItem); - console.log('enter'); - + this._onDidChangeTreeData.fire(this.srcRootItem); } public refreshSim() { - this.treeEventEmitter.fire(this.simRootItem); + this._onDidChangeTreeData.fire(this.simRootItem); } @@ -134,10 +131,8 @@ class ModuleTreeProvider implements vscode.TreeDataProvider { return treeItem; } - public getChildren(element?: ModuleDataItem | undefined): vscode.ProviderResult { + public getChildren(element?: ModuleDataItem | undefined): vscode.ProviderResult { if (element) { - console.log(element); - const name = element.name; if (name === 'sim' || name === 'src') { element.parent = null; diff --git a/src/global/outputChannel.ts b/src/global/outputChannel.ts index d28cefa..64141aa 100644 --- a/src/global/outputChannel.ts +++ b/src/global/outputChannel.ts @@ -40,11 +40,31 @@ class Output { return this._ignoreTypes.includes(type); } - public report(message: string | unknown, type: ReportType = ReportType.Info) { + private showInWindows(message: string, type: ReportType = ReportType.Info) { + if (type === ReportType.Warn) { + vscode.window.showWarningMessage(message); + } else if (type === ReportType.Error) { + vscode.window.showErrorMessage(message); + } else { + vscode.window.showInformationMessage(message); + } + } + + /** + * + * @param message message + * @param type report type + * @param reportInWindows whether use vscode.windows. to show info + */ + public report(message: string | unknown, type: ReportType = ReportType.Info, reportInWindows: boolean = false) { if (!this.skipMessage(type) && message) { this._output.show(true); const currentTime = this.getCurrentTime(); this._output.appendLine('[' + type + ' - ' + currentTime + '] ' + message); + + if (reportInWindows) { + this.showInWindows('' + message, type); + } } } } diff --git a/src/global/prjInfo.ts b/src/global/prjInfo.ts index 2d05300..0535ecd 100644 --- a/src/global/prjInfo.ts +++ b/src/global/prjInfo.ts @@ -44,15 +44,15 @@ const PrjInfoDefaults: PrjInfoMeta = { device: 'none', arch: { - prjPath: './prj', + prjPath: '', hardware: { - src: './user/src', - sim: './user/sim', - data: './user/data' + src: '', + sim: '', + data: '' }, software: { - src: './user/software/src', - data: './user/software/data' + src: '', + data: '' } }, @@ -355,7 +355,7 @@ class PrjInfo implements PrjInfoMeta { const workspacePath = this._workspacePath; if (arch) { - this.updatePathWisely(this.arch, 'prjPath', arch.prjPath); + this.updatePathWisely(this.arch, 'prjPath', arch.prjPath); if (arch.hardware) { this.updatePathWisely(this.arch.hardware, 'src', arch.hardware.src); this.updatePathWisely(this.arch.hardware, 'sim', arch.hardware.sim); diff --git a/src/manager/libPick.ts b/src/manager/libPick.ts index 046055e..a5c13fa 100644 --- a/src/manager/libPick.ts +++ b/src/manager/libPick.ts @@ -155,7 +155,6 @@ class LibPick { if (selectedPath && hdlPath.exist(selectedPath)) { const userPrjInfo = opeParam.getUserPrjInfo(); - console.log(userPrjInfo); if (selectedPath.includes(this.commonQuickPickItem.path!)) { // this is a module import from common, use relative path diff --git a/src/test/vlog/dependence_test/.vscode/property.json b/src/test/vlog/dependence_test/.vscode/property.json new file mode 100644 index 0000000..276c76f --- /dev/null +++ b/src/test/vlog/dependence_test/.vscode/property.json @@ -0,0 +1,17 @@ +{ + "toolChain": "xilinx", + "prjName": { + "PL": "template" + }, + "soc": { + "core": "none" + }, + "arch": { + "hardware": { + "sim": "./", + "src": "./" + } + }, + "enableShowLog": false, + "device": "none" +} \ No newline at end of file diff --git a/src/test/vlog/dependence_test/hello.v b/src/test/vlog/dependence_test/hello.v new file mode 100644 index 0000000..92f23ac --- /dev/null +++ b/src/test/vlog/dependence_test/hello.v @@ -0,0 +1,6 @@ +module hello; + initial begin + $display("hello world"); + $finish; + end +endmodule \ No newline at end of file diff --git a/src/test/vlog/dependence_test/simulation/icarus/out.vvp b/src/test/vlog/dependence_test/simulation/icarus/out.vvp new file mode 100644 index 0000000..fc9706e --- /dev/null +++ b/src/test/vlog/dependence_test/simulation/icarus/out.vvp @@ -0,0 +1,26 @@ +#! /c/Source/iverilog-install/bin/vvp +:ivl_version "12.0 (devel)" "(s20150603-1110-g18392a46)"; +:ivl_delay_selection "TYPICAL"; +:vpi_time_precision + 0; +:vpi_module "C:\iverilog\lib\ivl\system.vpi"; +:vpi_module "C:\iverilog\lib\ivl\vhdl_sys.vpi"; +:vpi_module "C:\iverilog\lib\ivl\vhdl_textio.vpi"; +:vpi_module "C:\iverilog\lib\ivl\v2005_math.vpi"; +:vpi_module "C:\iverilog\lib\ivl\va_math.vpi"; +:vpi_module "C:\iverilog\lib\ivl\v2009.vpi"; +S_0000023701252df0 .scope package, "$unit" "$unit" 2 1; + .timescale 0 0; +S_0000023701252f80 .scope module, "hello" "hello" 3 1; + .timescale 0 0; + .scope S_0000023701252f80; +T_0 ; + %vpi_call/w 3 3 "$display", "hello world" {0 0 0}; + %vpi_call/w 3 4 "$finish" {0 0 0}; + %end; + .thread T_0; +# The file index is used to find the file name in the following table. +:file_names 4; + "N/A"; + ""; + "-"; + "e:/Project/Digial-IDE/digital-ide/src/test/vlog/dependence_test/hello.v"; From b16f9bf104602fc713f4b10391202bb633b79d76 Mon Sep 17 00:00:00 2001 From: Kirigaya <1193466151@qq.com> Date: Sat, 22 Apr 2023 22:17:18 +0800 Subject: [PATCH 16/54] start lsp --- resources/hdlParser/index.d.ts | 5 +- resources/hdlParser/index.js | 56 +++------ src/function/lsp/docSymbol/index.ts | 0 src/function/lsp/docSymbol/vlog.ts | 187 ++++++++++++++++++++++++++++ src/hdlParser/core.ts | 34 ++--- src/hdlParser/index.ts | 4 +- src/manager/PL/index.ts | 57 ++++----- src/manager/PL/xilinx.ts | 6 +- src/manager/index.ts | 23 +++- 9 files changed, 272 insertions(+), 100 deletions(-) create mode 100644 src/function/lsp/docSymbol/index.ts create mode 100644 src/function/lsp/docSymbol/vlog.ts diff --git a/resources/hdlParser/index.d.ts b/resources/hdlParser/index.d.ts index bb61d42..7410836 100644 --- a/resources/hdlParser/index.d.ts +++ b/resources/hdlParser/index.d.ts @@ -6,10 +6,7 @@ type RelPath = string; type Path = AbsPath | RelPath; interface Fast { - content: { - error : string[] - modules: RawHdlModule[] - } + content: RawHdlModule[] languageId: HdlLangID macro: Macro } diff --git a/resources/hdlParser/index.js b/resources/hdlParser/index.js index 3d4bf56..cf211d5 100644 --- a/resources/hdlParser/index.js +++ b/resources/hdlParser/index.js @@ -18,62 +18,40 @@ const _hdlParser = { } }; -async function vlogFast(path) { - if (!fs.existsSync(path)) { - return undefined; - } - const wasmModule = await _hdlParser.acquire(); - const source = fs.readFileSync(path, 'utf-8') + '\n'; - wasmModule.FS.writeFile(_hdlParser.tempPath, source, { encoding: 'utf8' }); - const res = wasmModule.ccall('vlog_fast', 'string', ['string'], [_hdlParser.tempPath]); - try { - return JSON.parse(res); - } catch (err) { - console.log(res); - fs.writeFileSync('./draft.json', res); - console.log('error happen when parse ' + path); - console.log(err); - exit(-1); - } -} -async function vlogAll(path) { - if (!fs.existsSync(path)) { - return undefined; - } +async function callParser(path, func) { const wasmModule = await _hdlParser.acquire(); + const file = _hdlParser.tempPath; + const fileLength = file.length; const source = fs.readFileSync(path, 'utf-8') + '\n'; wasmModule.FS.writeFile(_hdlParser.tempPath, source, { encoding: 'utf8' }); - const res = wasmModule.ccall('vlog_all', 'string', ['string'], [_hdlParser.tempPath]); + const res = wasmModule.ccall('call_parser', 'string', ['string', 'int', 'int'], [file, fileLength, func]); return JSON.parse(res); } + async function vhdlFast(path) { - if (!fs.existsSync(path)) { - return undefined; - } - return {}; + return await callParser(path, 1); } async function vhdlAll(path) { - if (!fs.existsSync(path)) { - return undefined; - } - return {}; + return await callParser(path, 2); } async function svFast(path) { - if (!fs.existsSync(path)) { - return undefined; - } - return {}; + return await callParser(path, 3); } async function svAll(path) { - if (!fs.existsSync(path)) { - return undefined; - } - return {}; + return await callParser(path, 4); +} + +async function vlogFast(path) { + return await callParser(path, 5); +} + +async function vlogAll(path) { + return await callParser(path, 6); } module.exports = { diff --git a/src/function/lsp/docSymbol/index.ts b/src/function/lsp/docSymbol/index.ts new file mode 100644 index 0000000..e69de29 diff --git a/src/function/lsp/docSymbol/vlog.ts b/src/function/lsp/docSymbol/vlog.ts new file mode 100644 index 0000000..2c176d2 --- /dev/null +++ b/src/function/lsp/docSymbol/vlog.ts @@ -0,0 +1,187 @@ +import * as vscode from 'vscode'; + +import { HdlSymbol } from '../../../hdlParser'; + +class VlogDocSymbolProvider implements vscode.DocumentSymbolProvider { + + public provideDocumentSymbols(document: vscode.TextDocument, token: vscode.CancellationToken): vscode.ProviderResult { + const code = document.getText(); + const symbolResult = HdlSymbol.all(code); + const symbols = symbolResult.symbols; + + if (!symbols) { + return []; + } + try { + const symbolInfos = this.makeSymbolInfos(document, symbols); + return symbolInfos; + } catch (err) { + console.log(err); + return []; + } + } + + /** + * + * @param {vscode.TextDocument} document + * @param {Array} symbols + * @returns {Array} + */ + makeSymbolInfos(document: vscode.TextDocument, symbols: SymbolResult[]) { + let docSymbols = []; + const visitedSymbols = new Set(); + const moduleSymbols = symbols.filter(symbol => { + if (symbol.type == 'module') { + visitedSymbols.add(symbol); + return true; + } + return false; + }); + + for (const moduleSymbol of moduleSymbols) { + const moduleName = moduleSymbol.name; + const moduleKind = this.getSymbolKind(moduleSymbol.type); + const moduleRange = new vscode.Range(moduleSymbol.start, moduleSymbol.end); + const moduleDocSymbol = new vscode.DocumentSymbol(moduleName, + moduleName, + moduleKind, + moduleRange, + moduleRange); + docSymbols.push(moduleDocSymbol); + let paramContainer = { + docSymbol: null, + range: null + }; + let portContainer = { + docSymbol: null, + range: null + }; + + // make others in module inner + for (const symbol of symbols) { + if (visitedSymbols.has(symbol)) { + continue; + } + if (!(positionAfterEqual(symbol.start, moduleSymbol.start) && + positionAfterEqual(moduleSymbol.end, symbol.end))) { + continue; + } + if (!symbol.name) { + symbol.name = '???'; + } + visitedSymbols.add(symbol); + const symbolRange = new vscode.Range(symbol.start, symbol.end); + + if (symbol.type == 'parameter') { + if (!paramContainer.range) { + paramContainer.range = symbolRange; + paramContainer.docSymbol = new vscode.DocumentSymbol('param', + 'param description', + vscode.SymbolKind.Method, + symbolRange, + symbolRange); + moduleDocSymbol.children.push(paramContainer.docSymbol); + } + const paramDocSymbol = new vscode.DocumentSymbol(symbol.name, + symbol.type, + vscode.SymbolKind.Constant, + symbolRange, + symbolRange); + paramContainer.docSymbol.children.push(paramDocSymbol); + + } else if (['input', 'inout', 'output'].includes(symbol.type)) { + if (!portContainer.range) { + portContainer.range = symbolRange; + portContainer.docSymbol = new vscode.DocumentSymbol('port', + 'port description', + vscode.SymbolKind.Method, + symbolRange, + symbolRange); + moduleDocSymbol.children.push(portContainer.docSymbol); + } + + const portDocSymbol = new vscode.DocumentSymbol(symbol.name, + symbol.type, + vscode.SymbolKind.Interface, + symbolRange, + symbolRange); + portContainer.docSymbol.children.push(portDocSymbol); + } else { + const symbolKind = this.getSymbolKind(symbol.type); + const symbolDocSymbol = new vscode.DocumentSymbol(symbol.name, + symbol.type, + symbolKind, + symbolRange, + symbolRange); + moduleDocSymbol.children.push(symbolDocSymbol); + } + } + } + + return docSymbols; + } + + + getSymbolKind(name) { + if (name.indexOf('[') != -1) { + return vscode.SymbolKind.Array; + } + switch (name) { + case 'module': return vscode.SymbolKind.Class; + case 'program': return vscode.SymbolKind.Module; + case 'package': return vscode.SymbolKind.Package; + case 'import': return vscode.SymbolKind.Package; + case 'always': return vscode.SymbolKind.Operator; + case 'processe': return vscode.SymbolKind.Operator; + + case 'task': return vscode.SymbolKind.Method; + case 'function': return vscode.SymbolKind.Function; + + case 'assert': return vscode.SymbolKind.Boolean; + case 'event': return vscode.SymbolKind.Event; + case 'instance': return vscode.SymbolKind.Event; + + case 'time': return vscode.SymbolKind.TypeParameter; + case 'define': return vscode.SymbolKind.TypeParameter; + case 'typedef': return vscode.SymbolKind.TypeParameter; + case 'generate': return vscode.SymbolKind.Operator; + case 'enum': return vscode.SymbolKind.Enum; + case 'modport': return vscode.SymbolKind.Boolean; + case 'property': return vscode.SymbolKind.Property; + + // port + case 'interface': return vscode.SymbolKind.Interface; + case 'buffer': return vscode.SymbolKind.Interface; + case 'output': return vscode.SymbolKind.Interface; + case 'input': return vscode.SymbolKind.Interface; + case 'inout': return vscode.SymbolKind.Interface; + + // synth param + case 'localparam': return vscode.SymbolKind.Constant; + case 'parameter': return vscode.SymbolKind.Constant; + case 'integer': return vscode.SymbolKind.Number; + case 'char': return vscode.SymbolKind.Number; + case 'float': return vscode.SymbolKind.Number; + case 'int': return vscode.SymbolKind.Number; + + // unsynth param + case 'string': return vscode.SymbolKind.String; + case 'struct': return vscode.SymbolKind.Struct; + case 'class': return vscode.SymbolKind.Class; + + case 'logic': return vscode.SymbolKind.Constant; + case 'wire': return vscode.SymbolKind.Constant; + case 'reg': return vscode.SymbolKind.Constant; + case 'net': return vscode.SymbolKind.Variable; + case 'bit': return vscode.SymbolKind.Boolean; + default: return vscode.SymbolKind.Event; + } + /* Unused/Free SymbolKind icons + return SymbolKind.Number; + return SymbolKind.Enum; + return SymbolKind.EnumMember; + return SymbolKind.Operator; + return SymbolKind.Array; + */ + } +} diff --git a/src/hdlParser/core.ts b/src/hdlParser/core.ts index f393295..a83a582 100644 --- a/src/hdlParser/core.ts +++ b/src/hdlParser/core.ts @@ -188,24 +188,24 @@ class HdlParam { this.unhandleInstances.delete(inst); } - public async initHdlFiles(hdlFiles: AbsPath[] | Generator) { - for (const path of hdlFiles) { - // TODO : only support verilog now - const langID = hdlFile.getLanguageId(path); - if (langID === HdlLangID.Verilog) { - try { - const fast = await HdlSymbol.fast(path); - if (fast) { - new HdlFile(path, - fast.languageId, - fast.macro, - fast.content.modules); - } - } catch (error) { - MainOutput.report('Error happen when parse ' + path, ReportType.Error); - MainOutput.report('Reason: ' + error, ReportType.Error); - } + private async doHdlFast(path: AbsPath) { + try { + const fast = await HdlSymbol.fast(path); + if (fast) { + new HdlFile(path, + fast.languageId, + fast.macro, + fast.content); } + } catch (error) { + MainOutput.report('Error happen when parse ' + path, ReportType.Error); + MainOutput.report('Reason: ' + error, ReportType.Error); + } + } + + public async initHdlFiles(hdlFiles: AbsPath[] | Generator) { + for (const path of hdlFiles) { + this.doHdlFast(path); } } diff --git a/src/hdlParser/index.ts b/src/hdlParser/index.ts index 8552767..a6e5506 100644 --- a/src/hdlParser/index.ts +++ b/src/hdlParser/index.ts @@ -1,5 +1,7 @@ import { hdlParam } from './core'; +import { HdlSymbol } from './util'; export { - hdlParam + hdlParam, + HdlSymbol }; \ No newline at end of file diff --git a/src/manager/PL/index.ts b/src/manager/PL/index.ts index d9a09fe..9699212 100644 --- a/src/manager/PL/index.ts +++ b/src/manager/PL/index.ts @@ -40,43 +40,42 @@ class PlManage extends BaseManage { } - launch() { + public launch() { this.config.ope.launch(this.config); } - refresh() { + public simulate() { if (!this.config.terminal) { - return null; + return; } - - this.config.ope.refresh(this.config.terminal); - } - - simulate() { - if (!this.config.terminal) { - return null; - } - this.config.ope.simulate(this.config); } - build() { - if (!this.config.terminal) { - return null; - } + public simulateCli() { + this.config.ope.simulateCli(this.config); + } + public simulateGui() { + this.config.ope.simulateGui(this.config); + } + + public refresh() { + if (!this.config.terminal) { + return; + } + this.config.ope.refresh(this.config.terminal); + } + + public build() { this.config.ope.build(this.config); } - synth() { - if (!this.config.terminal) { - return null; - } + public synth() { this.config.ope.synth(this.config); } - impl() { + public impl() { if (!this.config.terminal) { return null; } @@ -84,27 +83,19 @@ class PlManage extends BaseManage { this.config.ope.impl(this.config); } - bit() { - if (!this.config.terminal) { - return null; - } - + public bitstream() { this.config.ope.generateBit(this.config); } - program() { - if (!this.config.terminal) { - return null; - } - + public program() { this.config.ope.program(this.config); } - gui() { + public gui() { this.config.ope.gui(this.config); } - exit() { + public exit() { if (!this.config.terminal) { return null; } diff --git a/src/manager/PL/xilinx.ts b/src/manager/PL/xilinx.ts index bb0f826..9bfe405 100644 --- a/src/manager/PL/xilinx.ts +++ b/src/manager/PL/xilinx.ts @@ -289,10 +289,10 @@ class XilinxOperation { } simulate(config: PLConfig) { - this.simcli(config); + this.simulateCli(config); } - simgui(config: PLConfig) { + simulateGui(config: PLConfig) { const scriptPath = `${this.xilinxPath}/simulate.tcl`; const script = ` if {[current_sim] != ""} { @@ -319,7 +319,7 @@ class XilinxOperation { config.terminal?.sendText(cmd); } - simcli(config: PLConfig) { + simulateCli(config: PLConfig) { const scriptPath = hdlPath.join(this.xilinxPath, 'simulate.tcl'); const script = ` if {[current_sim] != ""} { diff --git a/src/manager/index.ts b/src/manager/index.ts index 8fc106f..df09e3e 100644 --- a/src/manager/index.ts +++ b/src/manager/index.ts @@ -18,16 +18,33 @@ function registerManagerCommands(context: vscode.ExtensionContext) { // libpick vscode.commands.registerCommand('digital-ide.pickLibrary', pickLibrary); - // ps + // ps toolbox commands (soft tool in treeView) + // TODO : finish digital-ide.soft.download + vscode.commands.registerCommand('digital-ide.soft.launch', () => psManage.launch()); + vscode.commands.registerCommand('digital-ide.soft.build', () => psManage.build()); + vscode.commands.registerCommand('digital-ide.soft.download', () => psManage.program()); + + // pl functional commands vscode.commands.registerCommand('digital-ide.pl.setSrcTop', (item) => plManage.setSrcTop(item)); vscode.commands.registerCommand('digital-ide.pl.setSimTop', (item) => plManage.setSimTop(item)); vscode.commands.registerCommand('digital-ide.pl.addDevice', () => plManage.addDevice()); vscode.commands.registerCommand('digital-ide.pl.delDevice', () => plManage.delDevice()); vscode.commands.registerCommand('digital-ide.pl.addFile', files => plManage.addFiles(files)); vscode.commands.registerCommand('digital-ide.pl.delFile', files => plManage.delFiles(files)); - - // pl + // pl toolbox commands (hard tool in treeView) + vscode.commands.registerCommand('digital-ide.hard.launch', () => plManage.launch()); + vscode.commands.registerCommand('digital-ide.hard.simulate', () => plManage.simulate()); + vscode.commands.registerCommand('digital-ide.hard.simulate.cli', () => plManage.simulateCli()); + vscode.commands.registerCommand('digital-ide.hard.simulate.gui', () => plManage.simulateGui()); + vscode.commands.registerCommand('digital-ide.hard.refresh', () => plManage.refresh()); + vscode.commands.registerCommand('digital-ide.hard.build', () => plManage.build()); + vscode.commands.registerCommand('digital-ide.hard.build.synth', () => plManage.synth()); + vscode.commands.registerCommand('digital-ide.hard.build.impl', () => plManage.impl()); + vscode.commands.registerCommand('digital-ide.hard.build.bitstream', () => plManage.bitstream()); + vscode.commands.registerCommand('digital-ide.hard.program', () => plManage.program()); + vscode.commands.registerCommand('digital-ide.hard.gui', () => plManage.gui()); + vscode.commands.registerCommand('digital-ide.hard.exit', () => plManage.exit()); } export { From 4fd79de4e414225f10bc81ae6eddf735afda8974 Mon Sep 17 00:00:00 2001 From: Kirigaya <1193466151@qq.com> Date: Thu, 29 Jun 2023 19:38:42 +0800 Subject: [PATCH 17/54] finish vlog completion | definition | hover | docSymbol | formatter --- format.json | 199 ---- package-lock.json | 11 + package.json | 50 +- resources/formatter/index.d.ts | 8 + resources/formatter/index.js | 137 +++ resources/formatter/vhdlFormatter.js | 910 ++++++++++++++++++ resources/formatter/vlogFormatter.js | 35 + resources/hdlParser/index.d.ts | 5 +- snippets/svlog.json | 24 +- src/extension.ts | 4 +- src/function/index.ts | 32 +- src/function/lsp/completion/index.ts | 8 + src/function/lsp/completion/vlog.ts | 303 ++++++ src/function/lsp/definition/index.ts | 5 + src/function/lsp/definition/vlog.ts | 161 ++++ src/function/lsp/docSymbol/index.ts | 6 + src/function/lsp/docSymbol/vlog.ts | 87 +- src/function/lsp/hover/index.ts | 5 + src/function/lsp/hover/vlog.ts | 193 ++++ src/function/lsp/util/completion.js | 203 ---- src/function/lsp/util/feature.ts | 31 +- src/function/lsp/util/index.js | 570 ----------- src/function/lsp/util/index.ts | 408 ++++++++ src/function/lsp/util/keyword.ts | 130 +++ src/global/index.ts | 5 +- src/hdlFs/file.ts | 2 +- src/hdlParser/common.ts | 90 +- src/hdlParser/core.ts | 32 +- src/hdlParser/util.ts | 4 +- src/manager/prj.ts | 14 +- src/test/vlog/dependence_test/child_1.v | 8 +- src/test/vlog/dependence_test/parent.v | 7 +- .../{ => formatter_test}/formatter_test.v | 0 src/test/vlog/{ => fsm_test}/fsm_test.v | 0 .../vlog/{ => netlist_test}/netlist_test.v | 0 src/test/vlog/test.v | 29 - syntaxes/verilog.json | 59 +- 37 files changed, 2667 insertions(+), 1108 deletions(-) delete mode 100644 format.json create mode 100644 resources/formatter/index.d.ts create mode 100644 resources/formatter/index.js create mode 100644 resources/formatter/vhdlFormatter.js create mode 100644 resources/formatter/vlogFormatter.js create mode 100644 src/function/lsp/completion/index.ts create mode 100644 src/function/lsp/completion/vlog.ts create mode 100644 src/function/lsp/definition/index.ts create mode 100644 src/function/lsp/definition/vlog.ts create mode 100644 src/function/lsp/hover/index.ts create mode 100644 src/function/lsp/hover/vlog.ts delete mode 100644 src/function/lsp/util/completion.js delete mode 100644 src/function/lsp/util/index.js create mode 100644 src/function/lsp/util/index.ts create mode 100644 src/function/lsp/util/keyword.ts rename src/test/vlog/{ => formatter_test}/formatter_test.v (100%) rename src/test/vlog/{ => fsm_test}/fsm_test.v (100%) rename src/test/vlog/{ => netlist_test}/netlist_test.v (100%) delete mode 100644 src/test/vlog/test.v diff --git a/format.json b/format.json deleted file mode 100644 index 8220f73..0000000 --- a/format.json +++ /dev/null @@ -1,199 +0,0 @@ -{ - "content": { - "modules": [ - { - "instances": [ - { - "instparams": null, - "instports": { - "end": { - "character": 10, - "line": 21 - }, - "start": { - "character": 4, - "line": 18 - } - }, - "name": "dependence_1", - "range": { - "end": { - "character": 0, - "line": 22 - }, - "start": { - "character": 13, - "line": 17 - } - }, - "type": "dependence_1" - }, - { - "instparams": null, - "instports": { - "end": { - "character": 9, - "line": 28 - }, - "start": { - "character": 4, - "line": 25 - } - }, - "name": "dependence_2", - "range": { - "end": { - "character": 0, - "line": 29 - }, - "start": { - "character": 13, - "line": 24 - } - }, - "type": "dependence_2" - } - ], - "name": "Main", - "params": [], - "ports": [ - { - "name": "a", - "range": { - "end": { - "character": 17, - "line": 11 - }, - "start": { - "character": 16, - "line": 11 - } - }, - "type": "input", - "width": "[3:0]" - }, - { - "name": "b", - "range": { - "end": { - "character": 17, - "line": 12 - }, - "start": { - "character": 16, - "line": 12 - } - }, - "type": "input", - "width": "[2:0]" - }, - { - "name": "c", - "range": { - "end": { - "character": 11, - "line": 13 - }, - "start": { - "character": 10, - "line": 13 - } - }, - "type": "input", - "width": "Unknown" - }, - { - "name": "Qus", - "range": { - "end": { - "character": 14, - "line": 14 - }, - "start": { - "character": 11, - "line": 14 - } - }, - "type": "output", - "width": "Unknown" - }, - { - "name": "Qs", - "range": { - "end": { - "character": 18, - "line": 14 - }, - "start": { - "character": 16, - "line": 14 - } - }, - "type": "output", - "width": "Unknown" - }, - { - "name": "`main_o", - "range": { - "end": { - "character": 27, - "line": 14 - }, - "start": { - "character": 20, - "line": 14 - } - }, - "type": "output", - "width": "Unknown" - } - ], - "range": { - "end": { - "character": 0, - "line": 31 - }, - "start": { - "character": 0, - "line": 10 - } - } - } - ] - }, - "languageId": "verilog", - "macro": { - "defines": [ - { - "name": "main_o", - "range": { - "end": { - "character": 19, - "line": 9 - }, - "start": { - "character": 1, - "line": 9 - } - }, - "value": "out" - } - ], - "includes": [ - { - "path": "child_1.v", - "range": { - "end": { - "character": 9, - "line": 8 - }, - "start": { - "character": 1, - "line": 8 - } - } - } - ], - "invalid": [] - } - } \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index aba767e..7aff3f6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,6 +13,7 @@ "showdown": "^2.1.0", "state-machine-cat": "^9.2.5", "temp": "^0.9.4", + "vscode-textmate": "^9.0.0", "wavedrom": "^2.9.1" }, "devDependencies": { @@ -2829,6 +2830,11 @@ "integrity": "sha512-W+1+N/hdzLpQZEcvz79n2IgUE9pfx6JLdHh3Kh8RGvLL8P1LdJVQmi2OsDcLdY4QVID4OUy+FPelyerX0nJxIQ==", "deprecated": "no longer supported" }, + "node_modules/vscode-textmate": { + "version": "9.0.0", + "resolved": "https://registry.npmmirror.com/vscode-textmate/-/vscode-textmate-9.0.0.tgz", + "integrity": "sha512-Cl65diFGxz7gpwbav10HqiY/eVYTO1sjQpmRmV991Bj7wAoOAjGQ97PpQcXorDE2Uc4hnGWLY17xme+5t6MlSg==" + }, "node_modules/wavedrom": { "version": "2.9.1", "resolved": "https://registry.npmmirror.com/wavedrom/-/wavedrom-2.9.1.tgz", @@ -5216,6 +5222,11 @@ "resolved": "https://registry.npmmirror.com/viz.js/-/viz.js-1.8.2.tgz", "integrity": "sha512-W+1+N/hdzLpQZEcvz79n2IgUE9pfx6JLdHh3Kh8RGvLL8P1LdJVQmi2OsDcLdY4QVID4OUy+FPelyerX0nJxIQ==" }, + "vscode-textmate": { + "version": "9.0.0", + "resolved": "https://registry.npmmirror.com/vscode-textmate/-/vscode-textmate-9.0.0.tgz", + "integrity": "sha512-Cl65diFGxz7gpwbav10HqiY/eVYTO1sjQpmRmV991Bj7wAoOAjGQ97PpQcXorDE2Uc4hnGWLY17xme+5t6MlSg==" + }, "wavedrom": { "version": "2.9.1", "resolved": "https://registry.npmmirror.com/wavedrom/-/wavedrom-2.9.1.tgz", diff --git a/package.json b/package.json index ccbe09e..0942180 100644 --- a/package.json +++ b/package.json @@ -129,7 +129,52 @@ "type": "boolean", "default": false, "description": "run the simulation command in terminal instead of output" - } + }, + "function.lsp.formatter.vlog.default.style": { + "scope": "window", + "type": "string", + "enum": [ + "kr", + "ansi", + "gnu" + ], + "default": "kr", + "description": "Select the verilog and systemverilog formatter style." + }, + "function.lsp.formatter.vlog.default.args": { + "scope": "window", + "type": "string", + "default": "", + "description": "Add verilog formatter arguments here (like istyle)." + }, + "function.lsp.formatter.vhdl.default.keyword-case": { + "description": "Keyword case", + "type": "string", + "default": "LowerCase", + "enum": [ + "LowerCase", + "UpperCase" + ] + }, + "function.lsp.formatter.vhdl.default.align-comments": { + "description": "Align comments", + "type": "boolean", + "default": false + }, + "function.lsp.formatter.vhdl.default.type-name-case": { + "description": "Type name case", + "type": "string", + "default": "LowerCase", + "enum": [ + "LowerCase", + "UpperCase" + ] + }, + "function.lsp.formatter.vhdl.default.indentation": { + "description": "Indentation", + "type": "number", + "default": 4 + } } }, "commands": [ @@ -749,6 +794,7 @@ "showdown": "^2.1.0", "state-machine-cat": "^9.2.5", "temp": "^0.9.4", + "vscode-textmate": "^9.0.0", "wavedrom": "^2.9.1" } -} \ No newline at end of file +} diff --git a/resources/formatter/index.d.ts b/resources/formatter/index.d.ts new file mode 100644 index 0000000..d556410 --- /dev/null +++ b/resources/formatter/index.d.ts @@ -0,0 +1,8 @@ +import * as vscode from 'vscode'; + + +declare module formatterProvider { + export const hdlFormatterProvider: vscode.DocumentFormattingEditProvider; +} + +export = formatterProvider; \ No newline at end of file diff --git a/resources/formatter/index.js b/resources/formatter/index.js new file mode 100644 index 0000000..dc907cc --- /dev/null +++ b/resources/formatter/index.js @@ -0,0 +1,137 @@ +/* eslint-disable @typescript-eslint/naming-convention */ +"use strict"; +const os = require('os'); +const fs = require('fs'); +const path = require('path'); +const vscode = require('vscode'); +const temp = require("temp"); + +const vlogFormatter = require("./vlogFormatter.js"); +const vhdlFormatter = require("./vhdlFormatter.js"); + +class Formatter { + constructor() { + this.vlogFormatter = new VlogFormatter(); + this.vhdlFormatter = new VhdlFormatter(); + } + + async provideDocumentFormattingEdits(document, options, token) { + const edits = []; + //Get document code + let code_document = document.getText(); + let selection_document = this.getDocumentRange(document); + //Get selected text + let editor = vscode.window.activeTextEditor; + let selection_selected_text = ''; + let code_selected_text = ''; + if (editor !== undefined) { + selection_selected_text = editor.selection; + code_selected_text = editor.document.getText(editor.selection); + } + //Code to format + let code_to_format = ''; + let selection_to_format = ''; + if (code_selected_text !== '') { + code_to_format = code_selected_text; + selection_to_format = selection_selected_text; + } else { + code_to_format = code_document; + selection_to_format = selection_document; + } + + let code_format = await this.format(document.languageId, code_to_format); + if (code_format === null) { + console.log("Error format code."); + return edits; + } else { + const replacement = vscode.TextEdit.replace(selection_to_format, code_format); + edits.push(replacement); + return edits; + } + } + + async format(language, code) { + let options = null; + let formatted_code = ''; + try { + if (language === "vhdl") { + options = this.get_vhdl_config(); + formatted_code = await this.vhdlFormatter.format_from_code(code, options); + } + else { + options = this.get_vlog_config(); + formatted_code = await this.vlogFormatter.format_from_code(code, options); + } + return formatted_code; + } catch (error) { + return code; + } + } + + get_vlog_config() { + let style = vscode.workspace.getConfiguration("function.lsp.formatter.vlog.default").get("style"); + let args = vscode.workspace.getConfiguration("function.lsp.formatter.vlog.default").get("args"); + return `--style=${style} ${args}`; + } + + get_vhdl_config() { + let configuration = vscode.workspace.getConfiguration('function.lsp.formatter.vhdl.default'); + let settings = { + "RemoveComments": false, + "RemoveAsserts": false, + "CheckAlias": false, + "AlignComments": configuration.get('align-comments'), + "SignAlignSettings": { + "isRegional": true, + "isAll": true, + "mode": 'local', + "keyWords": [ + "FUNCTION", + "IMPURE FUNCTION", + "GENERIC", + "PORT", + "PROCEDURE" + ] + }, + "KeywordCase": configuration.get('keyword-case'), + "TypeNameCase": configuration.get('type-name-case'), + "Indentation": ' '.repeat(configuration.get('indentation')), + "NewLineSettings": { + "newLineAfter": [ + ";", + "then" + ], + "noNewLineAfter": [] + }, + "EndOfLine": "\n" + }; + return settings; + } + + getDocumentRange(document) { + const lastLineId = document.lineCount - 1; + return new vscode.Range(0, 0, lastLineId, document.lineAt(lastLineId).text.length); + } +} + +class VlogFormatter { + async format_from_code(code, options) { + let verilogFormatter = await vlogFormatter(); + verilogFormatter.FS.writeFile("/share/FILE_IN.v", code, { encoding: 'utf8' }); + verilogFormatter.ccall('run', '', ['string'], [`${options} finish`]); + let formatted_code = verilogFormatter.FS.readFile("/share/FILE_OUT.v", { encoding: 'utf8' }); + return formatted_code; + } +} + +class VhdlFormatter { + async format_from_code(code, options) { + let beautifuler = new vhdlFormatter.Beautifuler(); + let formatted_code = beautifuler.beauty(code, options); + return formatted_code; + } +} + + +const hdlFormatterProvider = new Formatter(); +module.exports = { hdlFormatterProvider }; \ No newline at end of file diff --git a/resources/formatter/vhdlFormatter.js b/resources/formatter/vhdlFormatter.js new file mode 100644 index 0000000..44486de --- /dev/null +++ b/resources/formatter/vhdlFormatter.js @@ -0,0 +1,910 @@ +"use strict"; + +class Beautifuler { + beauty(input, options) { + let new_line_after_symbols = new NewLineSettings(); + new_line_after_symbols.newLineAfter = ["then", ";"]; + new_line_after_symbols.noNewLineAfter = ["port", "generic"]; + let settings = this.getDefaultBeautifierSettings(new_line_after_symbols); + settings.SignAlignSettings = new signAlignSettings(true, true, "local", ["PORT", "GENERIC"]); + + const result = this.beautifyIntern(input, options); + if (result.err !== null) { + console.error(`-- [ERROR]: could not beautify`); + } + return result.data; + } + + beautifyIntern(input, settings) { + try { + const data = beautify(input, settings); + return { + data, + err: null, + }; + } + catch (err) { + return { + data: null, + err, + }; + } + } + + getDefaultBeautifierSettings(newLineSettings, signAlignSettings = null, indentation = " ") { + return new BeautifierSettings(false, false, false, signAlignSettings, "lowercase", "lowercase", indentation, newLineSettings, "\r\n"); + } +} +exports.Beautifuler = Beautifuler; + +// VHDLFormatter +const ILEscape = "@@"; +const ILCommentPrefix = ILEscape + "comments"; +const ILIndentedReturnPrefix = ILEscape; +const ILQuote = "⨵"; +const ILSingleQuote = "⦼"; +const ILBackslash = "⨸"; +const ILSemicolon = "⨴"; +var FormatMode; +(function (FormatMode) { + FormatMode[FormatMode["Default"] = 0] = "Default"; + FormatMode[FormatMode["EndsWithSemicolon"] = 1] = "EndsWithSemicolon"; + FormatMode[FormatMode["CaseWhen"] = 2] = "CaseWhen"; + FormatMode[FormatMode["IfElse"] = 3] = "IfElse"; + FormatMode[FormatMode["PortGeneric"] = 4] = "PortGeneric"; +})(FormatMode || (FormatMode = {})); +let Mode = FormatMode.Default; +exports.RemoveAsserts = exports.ApplyNoNewLineAfter = exports.beautify3 = exports.beautifySemicolonBlock = exports.beautifyPackageIsNewBlock = exports.beautifyComponentBlock = exports.beautifyCaseBlock = exports.AlignSign = exports.AlignSigns = exports.beautifyPortGenericBlock = exports.FormattedLineToString = exports.FormattedLine = exports.beautify = exports.BeautifierSettings = exports.signAlignSettings = exports.SetNewLinesAfterSymbols = exports.NewLineSettings = void 0; +class NewLineSettings { + constructor() { + this.newLineAfter = []; + this.noNewLineAfter = []; + } + newLineAfterPush(keyword) { + this.newLineAfter.push(keyword); + } + noNewLineAfterPush(keyword) { + this.noNewLineAfter.push(keyword); + } + push(keyword, addNewLine) { + let str = addNewLine.toLowerCase(); + if (str == "none") { + return; + } + else if (!str.startsWith("no")) { + this.newLineAfterPush(keyword); + } + else { + this.noNewLineAfterPush(keyword); + } + } +} +exports.NewLineSettings = NewLineSettings; +function ConstructNewLineSettings(dict) { + let settings = new NewLineSettings(); + for (let key in dict) { + settings.push(key, dict[key]); + } + return settings; +} +String.prototype.regexCount = function (pattern) { + if (pattern.flags.indexOf("g") < 0) { + pattern = new RegExp(pattern.source, pattern.flags + "g"); + } + return (this.match(pattern) || []).length; +}; +String.prototype.count = function (text) { + return this.split(text).length - 1; +}; +String.prototype.regexStartsWith = function (pattern) { + var searchResult = this.search(pattern); + return searchResult == 0; +}; +String.prototype.regexIndexOf = function (pattern, startIndex) { + startIndex = startIndex || 0; + var searchResult = this.substr(startIndex).search(pattern); + return (-1 === searchResult) ? -1 : searchResult + startIndex; +}; +String.prototype.regexLastIndexOf = function (pattern, startIndex) { + pattern = (pattern.global) ? pattern : + new RegExp(pattern.source, 'g' + (pattern.ignoreCase ? 'i' : '') + (pattern.multiline ? 'm' : '')); + if (typeof (startIndex) === 'undefined') { + startIndex = this.length; + } + else if (startIndex < 0) { + startIndex = 0; + } + const stringToWorkWith = this.substring(0, startIndex + 1); + let lastIndexOf = -1; + let nextStop = 0; + let result; + while ((result = pattern.exec(stringToWorkWith)) != null) { + lastIndexOf = result.index; + pattern.lastIndex = ++nextStop; + } + return lastIndexOf; +}; +String.prototype.reverse = function () { + return this.split('').reverse().join(''); +}; +String.prototype.convertToRegexBlockWords = function () { + let result = new RegExp("(" + this + ")([^\\w]|$)"); + return result; +}; +Array.prototype.convertToRegexBlockWords = function () { + let wordsStr = this.join("|"); + let result = new RegExp("(" + wordsStr + ")([^\\w]|$)"); + return result; +}; +function EscapeComments(arr) { + var comments = []; + var count = 0; + for (var i = 0; i < arr.length; i++) { + var line = arr[i]; + var commentStartIndex = line.indexOf("--"); + if (commentStartIndex >= 0) { + comments.push(line.substr(commentStartIndex)); + arr[i] = line.substr(0, commentStartIndex) + ILCommentPrefix + count; + count++; + } + } + var isInComment = false; + var commentRegex = new RegExp("(?<=" + ILCommentPrefix + "[\\d]+)."); + for (var i = 0; i < arr.length; i++) { + var commentStartIndex = 0; + var hasComment = true; + var commentEndInlineIndex = 0; + while (hasComment) { + var line = arr[i]; + if (!isInComment) { + commentStartIndex = line.indexOf("/*"); + var commentEndIndex = line.indexOf("*/", commentStartIndex); + if (commentStartIndex >= 0) { + if (commentEndIndex >= 0) { + commentEndInlineIndex = commentEndIndex + 2; + isInComment = false; + comments.push(line.substring(commentStartIndex, commentEndInlineIndex)); + arr[i] = line.substr(0, commentStartIndex) + ILCommentPrefix + count + line.substr(commentEndInlineIndex); + count++; + hasComment = true; + if (commentStartIndex + 2 == line.length) { + hasComment = false; + } + } + else { + isInComment = true; + comments.push(line.substr(commentStartIndex)); + arr[i] = line.substr(0, commentStartIndex) + ILCommentPrefix + count; + count++; + hasComment = false; + } + } + else { + hasComment = false; + } + continue; + } + if (isInComment) { + var lastCommentEndIndex = line.regexLastIndexOf(commentRegex, line.length); + if (commentStartIndex == 0) { + var commentEndIndex = line.indexOf("*/", lastCommentEndIndex); + } + else { + var commentEndIndex = line.indexOf("*/", commentStartIndex); + } + if (commentEndIndex >= 0) { + isInComment = false; + comments.push(line.substr(0, commentEndIndex + 2)); + arr[i] = ILCommentPrefix + count + line.substr(commentEndIndex + 2); + count++; + hasComment = true; + } + else { + comments.push(line); + arr[i] = ILCommentPrefix + count; + count++; + hasComment = false; + } + } + } + } + return comments; +} +function ToLowerCases(arr) { + for (var i = 0; i < arr.length; i++) { + arr[i] = arr[i].toLowerCase(); + } +} +function ToUpperCases(arr) { + for (var i = 0; i < arr.length; i++) { + arr[i] = arr[i].toUpperCase(); + } +} +function ToCamelCases(arr) { + for (var i = 0; i < arr.length; i++) { + arr[i] = arr[i].charAt(0) + arr[i].slice(1).toLowerCase(); + } +} +function ReplaceKeyWords(text, keywords) { + for (var k = 0; k < keywords.length; k++) { + text = text.replace(new RegExp("([^a-zA-Z0-9_@]|^)" + keywords[k] + "([^a-zA-Z0-9_]|$)", 'gi'), "$1" + keywords[k] + "$2"); + } + return text; +} +function SetKeywordCase(input, keywordcase, keywords) { + let inputcase = keywordcase.toLowerCase(); + switch (inputcase) { + case "lowercase": + ToLowerCases(keywords); + break; + case "defaultcase": + ToCamelCases(keywords); + break; + case "uppercase": + ToUpperCases(keywords); + } + input = ReplaceKeyWords(input, keywords); + return input; +} +function SetNewLinesAfterSymbols(text, newLineSettings) { + if (newLineSettings == null) { + return text; + } + if (newLineSettings.newLineAfter != null) { + newLineSettings.newLineAfter.forEach(symbol => { + let upper = symbol.toUpperCase(); + var rexString = "(" + upper + ")[ ]?([^ \r\n@])"; + let regex = null; + if (upper.regexStartsWith(/\w/)) { + regex = new RegExp("\\b" + rexString, "g"); + } + else { + regex = new RegExp(rexString, "g"); + } + text = text.replace(regex, '$1\r\n$2'); + if (upper == "PORT") { + text = text.replace(/\bPORT\b\s+MAP/, "PORT MAP"); + } + }); + } + if (newLineSettings.noNewLineAfter != null) { + newLineSettings.noNewLineAfter.forEach(symbol => { + let rexString = "(" + symbol.toUpperCase() + ")[ \r\n]+([^@])"; + let regex = null; + if (symbol.regexStartsWith(/\w/)) { + regex = new RegExp("\\b" + rexString, "g"); + text = text.replace(regex, '$1 $2'); + } + else { + regex = new RegExp(rexString, "g"); + } + text = text.replace(regex, '$1 $2'); + }); + } + return text; +} +exports.SetNewLinesAfterSymbols = SetNewLinesAfterSymbols; +class signAlignSettings { + constructor(isRegional, isAll, mode, keyWords) { + this.isRegional = isRegional; + this.isAll = isAll; + this.mode = mode; + this.keyWords = keyWords; + } +} +exports.signAlignSettings = signAlignSettings; +class BeautifierSettings { + constructor(removeComments, removeReport, checkAlias, alignComments, signAlignSettings, keywordCase, typeNameCase, indentation, newLineSettings, endOfLine, addNewLine) { + this.RemoveComments = removeComments; + this.RemoveAsserts = removeReport; + this.CheckAlias = checkAlias; + this.AlignComments = alignComments; + this.SignAlignSettings = signAlignSettings; + this.KeywordCase = keywordCase; + this.TypeNameCase = typeNameCase; + this.Indentation = indentation; + this.NewLineSettings = newLineSettings; + this.EndOfLine = endOfLine; + this.AddNewLine = addNewLine; + } +} +exports.BeautifierSettings = BeautifierSettings; +let KeyWords = ["ABS", "ACCESS", "AFTER", "ALIAS", "ALL", "AND", "ARCHITECTURE", "ARRAY", "ASSERT", "ATTRIBUTE", "BEGIN", "BLOCK", "BODY", "BUFFER", "BUS", "CASE", "COMPONENT", "CONFIGURATION", "CONSTANT", "CONTEXT", "COVER", "DISCONNECT", "DOWNTO", "DEFAULT", "ELSE", "ELSIF", "END", "ENTITY", "EXIT", "FAIRNESS", "FILE", "FOR", "FORCE", "FUNCTION", "GENERATE", "GENERIC", "GROUP", "GUARDED", "IF", "IMPURE", "IN", "INERTIAL", "INOUT", "IS", "LABEL", "LIBRARY", "LINKAGE", "LITERAL", "LOOP", "MAP", "MOD", "NAND", "NEW", "NEXT", "NOR", "NOT", "NULL", "OF", "ON", "OPEN", "OR", "OTHERS", "OUT", "PACKAGE", "PORT", "POSTPONED", "PROCEDURE", "PROCESS", "PROPERTY", "PROTECTED", "PURE", "RANGE", "RECORD", "REGISTER", "REJECT", "RELEASE", "REM", "REPORT", "RESTRICT", "RESTRICT_GUARANTEE", "RETURN", "ROL", "ROR", "SELECT", "SEQUENCE", "SEVERITY", "SHARED", "SIGNAL", "SLA", "SLL", "SRA", "SRL", "STRONG", "SUBTYPE", "THEN", "TO", "TRANSPORT", "TYPE", "UNAFFECTED", "UNITS", "UNTIL", "USE", "VARIABLE", "VMODE", "VPROP", "VUNIT", "WAIT", "WHEN", "WHILE", "WITH", "XNOR", "XOR"]; +let TypeNames = ["BOOLEAN", "BIT", "CHARACTER", "INTEGER", "TIME", "NATURAL", "POSITIVE", "STD_LOGIC", "STD_LOGIC_VECTOR", "STD_ULOGIC", "STD_ULOGIC_VECTOR", "STRING"]; +function beautify(input, settings) { + input = input.replace(/\r\n/g, "\n"); + input = input.replace(/\n/g, "\r\n"); + var arr = input.split("\r\n"); + var comments = EscapeComments(arr); + var backslashes = escapeText(arr, "\\\\[^\\\\]+\\\\", ILBackslash); + let quotes = escapeText(arr, '"([^"]+)"', ILQuote); + let singleQuotes = escapeText(arr, "'[^']'", ILSingleQuote); + RemoveLeadingWhitespaces(arr); + input = arr.join("\r\n"); + if (settings.RemoveComments) { + input = input.replace(/\r\n[ \t]*@@comments[0-9]+[ \t]*\r\n/g, '\r\n'); + input = input.replace(/@@comments[0-9]+/g, ''); + comments = []; + } + input = SetKeywordCase(input, "uppercase", KeyWords); + input = SetKeywordCase(input, "uppercase", TypeNames); + input = RemoveExtraNewLines(input); + input = input.replace(/[\t ]+/g, ' '); + input = input.replace(/\([\t ]+/g, '\('); + input = input.replace(/[ ]+;/g, ';'); + input = input.replace(/:[ ]*(PROCESS|ENTITY)/gi, ':$1'); + arr = input.split("\r\n"); + if (settings.RemoveAsserts) { + RemoveAsserts(arr); //RemoveAsserts must be after EscapeQuotes + } + ReserveSemicolonInKeywords(arr); + input = arr.join("\r\n"); + input = input.replace(/\b(PORT|GENERIC)\b\s+MAP/g, '$1 MAP'); + input = input.replace(/\b(PORT|PROCESS|GENERIC)\b[\s]*\(/g, '$1 ('); + let newLineSettings = settings.NewLineSettings; + if (newLineSettings != null) { + input = SetNewLinesAfterSymbols(input, newLineSettings); + arr = input.split("\r\n"); + ApplyNoNewLineAfter(arr, newLineSettings.noNewLineAfter); + input = arr.join("\r\n"); + } + input = input.replace(/([a-zA-Z0-9\); ])\);(@@comments[0-9]+)?@@end/g, '$1\r\n);$2@@end'); + input = input.replace(/[ ]?([&=:\-\+|\*]|[<>]+)[ ]?/g, ' $1 '); + input = input.replace(/(\d+e) +([+\-]) +(\d+)/g, '$1$2$3'); // fix exponential notation format broken by previous step + input = input.replace(/[ ]?([,])[ ]?/g, '$1 '); + input = input.replace(/[ ]?(['"])(THEN)/g, '$1 $2'); + input = input.replace(/[ ]?(\?)?[ ]?(<|:|>|\/)?[ ]+(=)?[ ]?/g, ' $1$2$3 '); + input = input.replace(/(IF)[ ]?([\(\)])/g, '$1 $2'); + input = input.replace(/([\(\)])[ ]?(THEN)/gi, '$1 $2'); + input = input.replace(/(^|[\(\)])[ ]?(AND|OR|XOR|XNOR)[ ]*([\(])/g, '$1 $2 $3'); + input = input.replace(/ ([\-\*\/=+<>])[ ]*([\-\*\/=+<>]) /g, " $1$2 "); + //input = input.replace(/\r\n[ \t]+--\r\n/g, "\r\n"); + input = input.replace(/[ ]+/g, ' '); + input = input.replace(/[ \t]+\r\n/g, "\r\n"); + input = input.replace(/\r\n\r\n\r\n/g, '\r\n'); + input = input.replace(/[\r\n\s]+$/g, ''); + input = input.replace(/[ \t]+\)/g, ')'); + input = input.replace(/\s*\)\s+RETURN\s+([\w]+;)/g, '\r\n) RETURN $1'); //function(..)\r\nreturn type; -> function(..\r\n)return type; + input = input.replace(/\)\s*(@@\w+)\r\n\s*RETURN\s+([\w]+;)/g, ') $1\r\n' + ILIndentedReturnPrefix + 'RETURN $2'); //function(..)\r\nreturn type; -> function(..\r\n)return type; + let keywordAndSignRegex = new RegExp("(\\b" + KeyWords.join("\\b|\\b") + "\\b) +([\\-+]) +(\\w)", "g"); + input = input.replace(keywordAndSignRegex, "$1 $2$3"); // `WHEN - 2` -> `WHEN -2` + input = input.replace(/([,|]) +([+\-]) +(\w)/g, '$1 $2$3'); // `1, - 2)` -> `1, -2)` + input = input.replace(/(\() +([+\-]) +(\w)/g, '$1$2$3'); // `( - 2)` -> `(-2)` + arr = input.split("\r\n"); + let result = []; + beautify3(arr, result, settings, 0, 0); + var alignSettings = settings.SignAlignSettings; + if (alignSettings != null && alignSettings.isAll) { + AlignSigns(result, 0, result.length - 1, alignSettings.mode, settings.AlignComments); + } + arr = FormattedLineToString(result, settings.Indentation); + input = arr.join("\r\n"); + input = input.replace(/@@RETURN/g, "RETURN"); + input = SetKeywordCase(input, settings.KeywordCase, KeyWords); + input = SetKeywordCase(input, settings.TypeNameCase, TypeNames); + input = replaceEscapedWords(input, quotes, ILQuote); + input = replaceEscapedWords(input, singleQuotes, ILSingleQuote); + input = replaceEscapedComments(input, comments, ILCommentPrefix); + input = replaceEscapedWords(input, backslashes, ILBackslash); + input = input.replace(new RegExp(ILSemicolon, "g"), ";"); + input = input.replace(/@@[a-z]+/g, ""); + var escapedTexts = new RegExp("[" + ILBackslash + ILQuote + ILSingleQuote + "]", "g"); + input = input.replace(escapedTexts, ""); + input = input.replace(/\r\n/g, settings.EndOfLine); + if (settings.AddNewLine && !input.endsWith(settings.EndOfLine)) { + input += settings.EndOfLine; + } + return input; +} +exports.beautify = beautify; +function replaceEscapedWords(input, arr, prefix) { + for (var i = 0; i < arr.length; i++) { + var text = arr[i]; + var regex = new RegExp("(" + prefix + "){" + text.length + "}"); + input = input.replace(regex, text); + } + return input; +} +function replaceEscapedComments(input, arr, prefix) { + for (var i = 0; i < arr.length; i++) { + input = input.replace(prefix + i, arr[i]); + } + return input; +} +function RemoveLeadingWhitespaces(arr) { + for (var i = 0; i < arr.length; i++) { + arr[i] = arr[i].replace(/^\s+/, ""); + } +} +class FormattedLine { + constructor(line, indent) { + this.Line = line; + this.Indent = indent; + } +} +exports.FormattedLine = FormattedLine; +function FormattedLineToString(arr, indentation) { + let result = []; + if (arr == null) { + return result; + } + if (indentation == null) { + indentation = ""; + } + arr.forEach(i => { + if (i instanceof FormattedLine) { + if (i.Line.length > 0) { + result.push((Array(i.Indent + 1).join(indentation)) + i.Line); + } + else { + result.push(""); + } + } + else { + result = result.concat(FormattedLineToString(i, indentation)); + } + }); + return result; +} +exports.FormattedLineToString = FormattedLineToString; +function GetCloseparentheseEndIndex(inputs, startIndex) { + let openParentheseCount = 0; + let closeParentheseCount = 0; + for (let i = startIndex; i < inputs.length; i++) { + let input = inputs[i]; + openParentheseCount += input.count("("); + closeParentheseCount += input.count(")"); + if (openParentheseCount > 0 + && openParentheseCount <= closeParentheseCount) { + return i; + } + } + return startIndex; +} +function beautifyPortGenericBlock(inputs, result, settings, startIndex, parentEndIndex, indent, mode) { + let firstLine = inputs[startIndex]; + let regex = new RegExp("[\\w\\s:]*(" + mode + ")([\\s]|$)"); + if (!firstLine.regexStartsWith(regex)) { + return [startIndex, parentEndIndex]; + } + let firstLineHasParenthese = firstLine.indexOf("(") >= 0; + let hasParenthese = firstLineHasParenthese; + let blockBodyStartIndex = startIndex; + let secondLineHasParenthese = startIndex + 1 < inputs.length && inputs[startIndex + 1].startsWith("("); + if (secondLineHasParenthese) { + hasParenthese = true; + blockBodyStartIndex++; + } + let endIndex = hasParenthese ? GetCloseparentheseEndIndex(inputs, startIndex) : startIndex; + if (endIndex != startIndex && firstLineHasParenthese) { + inputs[startIndex] = inputs[startIndex].replace(/\b(PORT|GENERIC|PROCEDURE)\b([\w ]+)\(([\w\(\) ]+)/, '$1$2(\r\n$3'); + let newInputs = inputs[startIndex].split("\r\n"); + if (newInputs.length == 2) { + inputs[startIndex] = newInputs[0]; + inputs.splice(startIndex + 1, 0, newInputs[1]); + endIndex++; + parentEndIndex++; + } + } + else if (endIndex > startIndex + 1 && secondLineHasParenthese) { + inputs[startIndex + 1] = inputs[startIndex + 1].replace(/\(([\w\(\) ]+)/, '(\r\n$1'); + let newInputs = inputs[startIndex + 1].split("\r\n"); + if (newInputs.length == 2) { + inputs[startIndex + 1] = newInputs[0]; + inputs.splice(startIndex + 2, 0, newInputs[1]); + endIndex++; + parentEndIndex++; + } + } + if (firstLineHasParenthese && inputs[startIndex].indexOf("MAP") > 0) { + inputs[startIndex] = inputs[startIndex].replace(/([^\w])(MAP)\s+\(/g, '$1$2('); + } + result.push(new FormattedLine(inputs[startIndex], indent)); + if (secondLineHasParenthese) { + let secondLineIndent = indent; + if (endIndex == startIndex + 1) { + secondLineIndent++; + } + result.push(new FormattedLine(inputs[startIndex + 1], secondLineIndent)); + } + let blockBodyEndIndex = endIndex; + let i = beautify3(inputs, result, settings, blockBodyStartIndex + 1, indent + 1, endIndex); + if (inputs[i].startsWith(")")) { + result[i].Indent--; + blockBodyEndIndex--; + } + var alignSettings = settings.SignAlignSettings; + if (alignSettings != null) { + if (alignSettings.isRegional && !alignSettings.isAll + && alignSettings.keyWords != null + && alignSettings.keyWords.indexOf(mode) >= 0) { + blockBodyStartIndex++; + AlignSigns(result, blockBodyStartIndex, blockBodyEndIndex, alignSettings.mode, settings.AlignComments); + } + } + return [i, parentEndIndex]; +} +exports.beautifyPortGenericBlock = beautifyPortGenericBlock; +function AlignSigns(result, startIndex, endIndex, mode, alignComments) { + AlignSign_(result, startIndex, endIndex, ":", mode); + AlignSign_(result, startIndex, endIndex, ":=", mode); + AlignSign_(result, startIndex, endIndex, "<=", mode); + AlignSign_(result, startIndex, endIndex, "=>", mode); + if (alignComments) { + AlignSign_(result, startIndex, endIndex, "@@comments", mode); + } +} +exports.AlignSigns = AlignSigns; +function AlignSign_(result, startIndex, endIndex, symbol, mode) { + let maxSymbolIndex = -1; + let symbolIndices = {}; + let startLine = startIndex; + let labelAndKeywords = [ + "([\\w\\s]*:(\\s)*PROCESS)", + "([\\w\\s]*:(\\s)*POSTPONED PROCESS)", + "([\\w\\s]*:\\s*$)", + "([\\w\\s]*:.*\\s+GENERATE)" + ]; + let labelAndKeywordsStr = labelAndKeywords.join("|"); + let labelAndKeywordsRegex = new RegExp("(" + labelAndKeywordsStr + ")([^\\w]|$)"); + for (let i = startIndex; i <= endIndex; i++) { + let line = result[i].Line; + if (symbol == ":" && line.regexStartsWith(labelAndKeywordsRegex)) { + continue; + } + let regex = new RegExp("([\\s\\w\\\\]|^)" + symbol + "([\\s\\w\\\\]|$)"); + if (line.regexCount(regex) > 1) { + continue; + } + let colonIndex = line.regexIndexOf(regex); + if (colonIndex > 0) { + maxSymbolIndex = Math.max(maxSymbolIndex, colonIndex); + symbolIndices[i] = colonIndex; + } + else if ((mode != "local" && !line.startsWith(ILCommentPrefix) && line.length != 0) + || (mode == "local")) { + if (startLine < i - 1) // if cannot find the symbol, a block of symbols ends + { + AlignSign(result, startLine, i - 1, symbol, maxSymbolIndex, symbolIndices); + } + maxSymbolIndex = -1; + symbolIndices = {}; + startLine = i; + } + } + if (startLine < endIndex) // if cannot find the symbol, a block of symbols ends + { + AlignSign(result, startLine, endIndex, symbol, maxSymbolIndex, symbolIndices); + } +} +function AlignSign(result, startIndex, endIndex, symbol, maxSymbolIndex = -1, symbolIndices = {}) { + if (maxSymbolIndex < 0) { + return; + } + for (let lineIndex in symbolIndices) { + let symbolIndex = symbolIndices[lineIndex]; + if (symbolIndex == maxSymbolIndex) { + continue; + } + let line = result[lineIndex].Line; + result[lineIndex].Line = line.substring(0, symbolIndex) + + (Array(maxSymbolIndex - symbolIndex + 1).join(" ")) + + line.substring(symbolIndex); + } +} +exports.AlignSign = AlignSign; +function beautifyCaseBlock(inputs, result, settings, startIndex, indent) { + if (!inputs[startIndex].regexStartsWith(/(.+:\s*)?(CASE)([\s]|$)/)) { + return startIndex; + } + result.push(new FormattedLine(inputs[startIndex], indent)); + let i = beautify3(inputs, result, settings, startIndex + 1, indent + 2); + result[i].Indent = indent; + return i; +} +exports.beautifyCaseBlock = beautifyCaseBlock; +function getSemicolonBlockEndIndex(inputs, settings, startIndex, parentEndIndex) { + let endIndex = 0; + let openBracketsCount = 0; + let closeBracketsCount = 0; + for (let i = startIndex; i < inputs.length; i++) { + let input = inputs[i]; + let indexOfSemicolon = input.indexOf(";"); + let splitIndex = indexOfSemicolon < 0 ? input.length : indexOfSemicolon + 1; + let stringBeforeSemicolon = input.substring(0, splitIndex); + let stringAfterSemicolon = input.substring(splitIndex); + stringAfterSemicolon = stringAfterSemicolon.replace(new RegExp(ILCommentPrefix + "[0-9]+"), ""); + openBracketsCount += stringBeforeSemicolon.count("("); + closeBracketsCount += stringBeforeSemicolon.count(")"); + if (indexOfSemicolon < 0) { + continue; + } + if (openBracketsCount == closeBracketsCount) { + endIndex = i; + if (stringAfterSemicolon.trim().length > 0 && settings.NewLineSettings.newLineAfter.indexOf(";") >= 0) { + inputs[i] = stringBeforeSemicolon; + inputs.splice(i, 0, stringAfterSemicolon); + parentEndIndex++; + } + break; + } + } + return [endIndex, parentEndIndex]; +} +function beautifyComponentBlock(inputs, result, settings, startIndex, parentEndIndex, indent) { + let endIndex = startIndex; + for (let i = startIndex; i < inputs.length; i++) { + if (inputs[i].regexStartsWith(/END(\s|$)/)) { + endIndex = i; + break; + } + } + result.push(new FormattedLine(inputs[startIndex], indent)); + if (endIndex != startIndex) { + let actualEndIndex = beautify3(inputs, result, settings, startIndex + 1, indent + 1, endIndex); + let incremental = actualEndIndex - endIndex; + endIndex += incremental; + parentEndIndex += incremental; + } + return [endIndex, parentEndIndex]; +} +exports.beautifyComponentBlock = beautifyComponentBlock; +function beautifyPackageIsNewBlock(inputs, result, settings, startIndex, parentEndIndex, indent) { + let endIndex = startIndex; + for (let i = startIndex; i < inputs.length; i++) { + if (inputs[i].regexIndexOf(/;(\s|$)/) >= 0) { + endIndex = i; + break; + } + } + result.push(new FormattedLine(inputs[startIndex], indent)); + if (endIndex != startIndex) { + let actualEndIndex = beautify3(inputs, result, settings, startIndex + 1, indent + 1, endIndex); + let incremental = actualEndIndex - endIndex; + endIndex += incremental; + parentEndIndex += incremental; + } + return [endIndex, parentEndIndex]; +} +exports.beautifyPackageIsNewBlock = beautifyPackageIsNewBlock; +function beautifySemicolonBlock(inputs, result, settings, startIndex, parentEndIndex, indent) { + let endIndex = startIndex; + [endIndex, parentEndIndex] = getSemicolonBlockEndIndex(inputs, settings, startIndex, parentEndIndex); + result.push(new FormattedLine(inputs[startIndex], indent)); + if (endIndex != startIndex) { + let i = beautify3(inputs, result, settings, startIndex + 1, indent + 1, endIndex); + } + return [endIndex, parentEndIndex]; +} +exports.beautifySemicolonBlock = beautifySemicolonBlock; +function beautify3(inputs, result, settings, startIndex, indent, endIndex) { + let i; + let regexOneLineBlockKeyWords = new RegExp(/(PROCEDURE)[^\w](?!.+[^\w]IS([^\w]|$))/); //match PROCEDURE..; but not PROCEDURE .. IS; + let regexFunctionMultiLineBlockKeyWords = new RegExp(/(FUNCTION|IMPURE FUNCTION)[^\w](?=.+[^\w]IS([^\w]|$))/); //match FUNCTION .. IS; but not FUNCTION + let blockMidKeyWords = ["BEGIN"]; + let blockStartsKeyWords = [ + "IF", + "CASE", + "ARCHITECTURE", + "PROCEDURE", + "PACKAGE", + "(([\\w\\s]*:)?(\\s)*PROCESS)", + "(([\\w\\s]*:)?(\\s)*POSTPONED PROCESS)", + "(.*\\s*PROTECTED)", + "(COMPONENT)", + "(ENTITY(?!.+;))", + "FOR", + "WHILE", + "LOOP", + "(.*\\s*GENERATE)", + "(CONTEXT[\\w\\s\\\\]+IS)", + "(CONFIGURATION(?!.+;))", + "BLOCK", + "UNITS", + "\\w+\\s+\\w+\\s+IS\\s+RECORD" + ]; + let blockEndsKeyWords = ["END", ".*\\)\\s*RETURN\\s+[\\w]+;"]; + let indentedEndsKeyWords = [ILIndentedReturnPrefix + "RETURN\\s+\\w+;"]; + let blockEndsWithSemicolon = [ + "(WITH\\s+[\\w\\s\\\\]+SELECT)", + "([\\w\\\\]+[\\s]*<=)", + "([\\w\\\\]+[\\s]*:=)", + "FOR\\s+[\\w\\s,]+:\\s*\\w+\\s+USE", + "REPORT" + ]; + let newLineAfterKeyWordsStr = blockStartsKeyWords.join("|"); + let regexBlockMidKeyWords = blockMidKeyWords.convertToRegexBlockWords(); + let regexBlockStartsKeywords = new RegExp("([\\w]+\\s*:\\s*)?(" + newLineAfterKeyWordsStr + ")([^\\w]|$)"); + let regexBlockEndsKeyWords = blockEndsKeyWords.convertToRegexBlockWords(); + let regexBlockIndentedEndsKeyWords = indentedEndsKeyWords.convertToRegexBlockWords(); + let regexblockEndsWithSemicolon = blockEndsWithSemicolon.convertToRegexBlockWords(); + let regexMidKeyWhen = "WHEN".convertToRegexBlockWords(); + let regexMidKeyElse = "ELSE|ELSIF".convertToRegexBlockWords(); + if (endIndex == null) { + endIndex = inputs.length - 1; + } + for (i = startIndex; i <= endIndex; i++) { + if (indent < 0) { + indent = 0; + } + let input = inputs[i].trim(); + if (input.regexStartsWith(regexBlockIndentedEndsKeyWords)) { + result.push(new FormattedLine(input, indent)); + return i; + } + if (input.regexStartsWith(/COMPONENT\s/)) { + let modeCache = Mode; + Mode = FormatMode.EndsWithSemicolon; + [i, endIndex] = beautifyComponentBlock(inputs, result, settings, i, endIndex, indent); + Mode = modeCache; + continue; + } + if (input.regexStartsWith(/PACKAGE[\s\w]+IS\s+NEW/)) { + let modeCache = Mode; + Mode = FormatMode.EndsWithSemicolon; + [i, endIndex] = beautifyPackageIsNewBlock(inputs, result, settings, i, endIndex, indent); + Mode = modeCache; + continue; + } + if (input.regexStartsWith(/\w+\s*:\s*ENTITY/)) { + let modeCache = Mode; + Mode = FormatMode.EndsWithSemicolon; + [i, endIndex] = beautifySemicolonBlock(inputs, result, settings, i, endIndex, indent); + Mode = modeCache; + continue; + } + if (Mode != FormatMode.EndsWithSemicolon && input.regexStartsWith(regexblockEndsWithSemicolon)) { + let modeCache = Mode; + Mode = FormatMode.EndsWithSemicolon; + [i, endIndex] = beautifySemicolonBlock(inputs, result, settings, i, endIndex, indent); + Mode = modeCache; + continue; + } + if (input.regexStartsWith(/(.+:\s*)?(CASE)([\s]|$)/)) { + let modeCache = Mode; + Mode = FormatMode.CaseWhen; + i = beautifyCaseBlock(inputs, result, settings, i, indent); + Mode = modeCache; + continue; + } + if (input.regexStartsWith(/.*?\:\=\s*\($/)) { + [i, endIndex] = beautifyPortGenericBlock(inputs, result, settings, i, endIndex, indent, ":="); + continue; + } + if (input.regexStartsWith(/[\w\s:]*\bPORT\b([\s]|$)/)) { + [i, endIndex] = beautifyPortGenericBlock(inputs, result, settings, i, endIndex, indent, "PORT"); + continue; + } + if (input.regexStartsWith(/TYPE\s+\w+\s+IS\s+\(/)) { + [i, endIndex] = beautifyPortGenericBlock(inputs, result, settings, i, endIndex, indent, "IS"); + continue; + } + if (input.regexStartsWith(/[\w\s:]*GENERIC([\s]|$)/)) { + [i, endIndex] = beautifyPortGenericBlock(inputs, result, settings, i, endIndex, indent, "GENERIC"); + continue; + } + if (input.regexStartsWith(/[\w\s:]*PROCEDURE[\s\w]+\($/)) { + [i, endIndex] = beautifyPortGenericBlock(inputs, result, settings, i, endIndex, indent, "PROCEDURE"); + if (inputs[i].regexStartsWith(/.*\)[\s]*IS/)) { + i = beautify3(inputs, result, settings, i + 1, indent + 1); + } + continue; + } + if (input.regexStartsWith(/FUNCTION[^\w]/) + && input.regexIndexOf(/[^\w]RETURN[^\w]/) < 0) { + [i, endIndex] = beautifyPortGenericBlock(inputs, result, settings, i, endIndex, indent, "FUNCTION"); + if (!inputs[i].regexStartsWith(regexBlockEndsKeyWords)) { + i = beautify3(inputs, result, settings, i + 1, indent + 1); + } + else { + result[i].Indent++; + } + continue; + } + if (input.regexStartsWith(/IMPURE FUNCTION[^\w]/) + && input.regexIndexOf(/[^\w]RETURN[^\w]/) < 0) { + [i, endIndex] = beautifyPortGenericBlock(inputs, result, settings, i, endIndex, indent, "IMPURE FUNCTION"); + if (!inputs[i].regexStartsWith(regexBlockEndsKeyWords)) { + if (inputs[i].regexStartsWith(regexBlockIndentedEndsKeyWords)) { + result[i].Indent++; + } + else { + i = beautify3(inputs, result, settings, i + 1, indent + 1); + } + } + else { + result[i].Indent++; + } + continue; + } + result.push(new FormattedLine(input, indent)); + if (startIndex != 0 + && (input.regexStartsWith(regexBlockMidKeyWords) + || (Mode != FormatMode.EndsWithSemicolon && input.regexStartsWith(regexMidKeyElse)) + || (Mode == FormatMode.CaseWhen && input.regexStartsWith(regexMidKeyWhen)))) { + result[i].Indent--; + } + else if (startIndex != 0 + && (input.regexStartsWith(regexBlockEndsKeyWords))) { + result[i].Indent--; + return i; + } + if (input.regexStartsWith(regexOneLineBlockKeyWords)) { + continue; + } + if (input.regexStartsWith(regexFunctionMultiLineBlockKeyWords) + || input.regexStartsWith(regexBlockStartsKeywords)) { + i = beautify3(inputs, result, settings, i + 1, indent + 1); + } + } + i--; + return i; +} +exports.beautify3 = beautify3; +function ReserveSemicolonInKeywords(arr) { + for (let i = 0; i < arr.length; i++) { + if (arr[i].match(/FUNCTION|PROCEDURE/) != null) { + arr[i] = arr[i].replace(/;/g, ILSemicolon); + } + } +} +function ApplyNoNewLineAfter(arr, noNewLineAfter) { + if (noNewLineAfter == null) { + return; + } + for (let i = 0; i < arr.length; i++) { + noNewLineAfter.forEach(n => { + let regex = new RegExp("(" + n.toUpperCase + ")[ a-z0-9]+[a-z0-9]+"); + if (arr[i].regexIndexOf(regex) >= 0) { + arr[i] += "@@singleline"; + } + }); + } +} +exports.ApplyNoNewLineAfter = ApplyNoNewLineAfter; +function RemoveAsserts(arr) { + let need_semi = false; + let inAssert = false; + let n = 0; + for (let i = 0; i < arr.length; i++) { + let has_semi = arr[i].indexOf(";") >= 0; + if (need_semi) { + arr[i] = ''; + } + n = arr[i].indexOf("ASSERT "); + if (n >= 0) { + inAssert = true; + arr[i] = ''; + } + if (!has_semi) { + if (inAssert) { + need_semi = true; + } + } + else { + need_semi = false; + } + } +} +exports.RemoveAsserts = RemoveAsserts; +function escapeText(arr, regex, escapedChar) { + let quotes = []; + let regexEpr = new RegExp(regex, "g"); + for (let i = 0; i < arr.length; i++) { + let matches = arr[i].match(regexEpr); + if (matches != null) { + for (var j = 0; j < matches.length; j++) { + var match = matches[j]; + arr[i] = arr[i].replace(match, escapedChar.repeat(match.length)); + quotes.push(match); + } + } + } + return quotes; +} +function RemoveExtraNewLines(input) { + input = input.replace(/(?:\r\n|\r|\n)/g, '\r\n'); + input = input.replace(/ \r\n/g, '\r\n'); + input = input.replace(/\r\n\r\n\r\n/g, '\r\n'); + return input; +} \ No newline at end of file diff --git a/resources/formatter/vlogFormatter.js b/resources/formatter/vlogFormatter.js new file mode 100644 index 0000000..45ca65e --- /dev/null +++ b/resources/formatter/vlogFormatter.js @@ -0,0 +1,35 @@ + +var Module = (function() { + var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined; + if (typeof __filename !== 'undefined') _scriptDir = _scriptDir || __filename; + return ( +function(Module) { + Module = Module || {}; + +var Module=typeof Module!=="undefined"?Module:{};var readyPromiseResolve,readyPromiseReject;Module["ready"]=new Promise(function(resolve,reject){readyPromiseResolve=resolve;readyPromiseReject=reject});if(!Module.expectedDataFileDownloads){Module.expectedDataFileDownloads=0}Module.expectedDataFileDownloads++;(function(){var loadPackage=function(metadata){function runWithFS(){Module["FS_createPath"]("/","share",true,true);var fileData0="";Module["FS_createDataFile"]("/share","FILE_IN.v",decodeBase64(fileData0),true,true,false);var fileData1="";Module["FS_createDataFile"]("/share","FILE_OUT.v",decodeBase64(fileData1),true,true,false)}if(Module["calledRun"]){runWithFS()}else{if(!Module["preRun"])Module["preRun"]=[];Module["preRun"].push(runWithFS)}};loadPackage({"files":[]})})();var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var arguments_=[];var thisProgram="./this.program";var quit_=function(status,toThrow){throw toThrow};var ENVIRONMENT_IS_WEB=typeof window==="object";var ENVIRONMENT_IS_WORKER=typeof importScripts==="function";var ENVIRONMENT_IS_NODE=typeof process==="object"&&typeof process.versions==="object"&&typeof process.versions.node==="string";var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;var nodeFS;var nodePath;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require("path").dirname(scriptDirectory)+"/"}else{scriptDirectory=__dirname+"/"}read_=function shell_read(filename,binary){var ret=tryParseAsDataURI(filename);if(ret){return binary?ret:ret.toString()}if(!nodeFS)nodeFS=require("fs");if(!nodePath)nodePath=require("path");filename=nodePath["normalize"](filename);return nodeFS["readFileSync"](filename,binary?null:"utf8")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};readAsync=function readAsync(filename,onload,onerror){var ret=tryParseAsDataURI(filename);if(ret){onload(ret)}if(!nodeFS)nodeFS=require("fs");if(!nodePath)nodePath=require("path");filename=nodePath["normalize"](filename);nodeFS["readFile"](filename,function(err,data){if(err)onerror(err);else onload(data.buffer)})};if(process["argv"].length>1){thisProgram=process["argv"][1].replace(/\\/g,"/")}arguments_=process["argv"].slice(2);process["on"]("uncaughtException",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process["on"]("unhandledRejection",abort);quit_=function(status,toThrow){if(keepRuntimeAlive()){process["exitCode"]=status;throw toThrow}process["exit"](status)};Module["inspect"]=function(){return"[Emscripten Module object]"}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!=="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptDir){scriptDirectory=_scriptDir}if(scriptDirectory.indexOf("blob:")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf("/")+1)}else{scriptDirectory=""}{read_=function(url){try{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText}catch(err){var data=tryParseAsDataURI(url);if(data){return intArrayToString(data)}throw err}};if(ENVIRONMENT_IS_WORKER){readBinary=function(url){try{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}catch(err){var data=tryParseAsDataURI(url);if(data){return data}throw err}}}readAsync=function(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=function(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}var data=tryParseAsDataURI(url);if(data){onload(data.buffer);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=function(title){document.title=title}}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.warn.bind(console);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["quit"])quit_=Module["quit"];var wasmBinary;if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];var noExitRuntime=Module["noExitRuntime"]||true;var WebAssembly={Memory:function(opts){this.buffer=new ArrayBuffer(opts["initial"]*65536)},Module:function(binary){},Instance:function(module,info){this.exports=( +// EMSCRIPTEN_START_ASM +function instantiate(ua){function c(d){d.set=function(a,b){this[a]=b};d.get=function(a){return this[a]};return d}var e;var f=new Uint8Array(123);for(var a=25;a>=0;--a){f[48+a]=52+a;f[65+a]=a;f[97+a]=26+a}f[43]=62;f[47]=63;function l(m,n,o){var g,h,a=0,i=n,j=o.length,k=n+(j*3>>2)-(o[j-2]=="=")-(o[j-1]=="=");for(;a>4;if(i>2;if(i>>0<=2){c=c<<2;A=H[c+8620>>2];z=H[c+8608>>2];while(1){c=H[b+4>>2];b:{if(c>>>0>2]){H[b+4>>2]=c+1;c=I[c|0];break b}c=La(b)}if(Yc(c)){continue}break}l=1;c:{d:{switch(c-43|0){case 0:case 2:break d;default:break c}}l=(c|0)==45?-1:1;c=H[b+4>>2];if(c>>>0>2]){H[b+4>>2]=c+1;c=I[c|0];break c}c=La(b)}e:{f:{while(1){if(F[f+1055|0]==(c|32)){g:{if(f>>>0>6){break g}c=H[b+4>>2];if(c>>>0>2]){H[b+4>>2]=c+1;c=I[c|0];break g}c=La(b)}f=f+1|0;if((f|0)!=8){continue}break f}break}if((f|0)!=3){if((f|0)==8){break f}if(!d|f>>>0<4){break e}if((f|0)==8){break f}}c=H[b+104>>2];if(c){H[b+4>>2]=H[b+4>>2]-1}if(!d|f>>>0<4){break f}while(1){if(c){H[b+4>>2]=H[b+4>>2]-1}f=f-1|0;if(f>>>0>3){continue}break}}b=s;h=oa-16|0;oa=h;g=(C(O(O(l|0)*O(Z))),v(2));c=g&2147483647;h:{if(c-8388608>>>0<=2130706431){d=c;c=c>>>7|0;l=d<<25;d=c+1065353216|0;break h}l=g<<25;d=g>>>7|2147418112;if(c>>>0>=2139095040){break h}l=0;d=0;if(!c){break h}d=c;c=Q(c);xb(h,d,0,0,0,c+81|0);j=H[h>>2];k=H[h+4>>2];l=H[h+8>>2];d=H[h+12>>2]^65536|16265-c<<16}H[b>>2]=j;H[b+4>>2]=k;H[b+8>>2]=l;H[b+12>>2]=g&-2147483648|d;oa=h+16|0;j=H[s+8>>2];k=H[s+12>>2];h=H[s>>2];g=H[s+4>>2];break a}i:{j:{k:{if(f){break k}f=0;while(1){if(F[f+1807|0]!=(c|32)){break k}l:{if(f>>>0>1){break l}c=H[b+4>>2];if(c>>>0>2]){H[b+4>>2]=c+1;c=I[c|0];break l}c=La(b)}f=f+1|0;if((f|0)!=3){continue}break}break j}m:{switch(f|0){case 0:n:{if((c|0)!=48){break n}f=H[b+4>>2];o:{if(f>>>0>2]){H[b+4>>2]=f+1;f=I[f|0];break o}f=La(b)}if((f&-33)==88){f=oa-432|0;oa=f;c=b;u=H[b+104>>2];b=H[b+4>>2];p:{if(u>>>0>b>>>0){H[c+4>>2]=b+1;b=I[b|0];break p}b=La(c)}q:{r:{while(1){if((b|0)!=48){s:{if((b|0)!=46){break q}b=H[c+4>>2];if(b>>>0>=K[c+104>>2]){break s}H[c+4>>2]=b+1;b=I[b|0];break r}}else{b=H[c+4>>2];if(b>>>0>2]){B=1;H[c+4>>2]=b+1;b=I[b|0]}else{B=1;b=La(c)}continue}break}b=La(c)}y=1;if((b|0)!=48){break q}while(1){b=j;j=b-1|0;k=k-(b>>>0<1)|0;b=H[c+4>>2];t:{if(b>>>0>2]){H[c+4>>2]=b+1;b=I[b|0];break t}b=La(c)}if((b|0)==48){continue}break}B=1}u=1073676288;u:{while(1){v:{n=b|32;w:{x:{w=b-48|0;if(w>>>0<10){break x}if((b|0)!=46?n-97>>>0>=6:0){break u}if((b|0)!=46){break x}if(y){break v}y=1;j=h;k=g;break w}b=(b|0)>57?n-87|0:w;y:{if((g|0)<0?1:(g|0)<=0?h>>>0<=7:0){i=b+(i<<4)|0;break y}if((g|0)<0?1:(g|0)<=0?h>>>0<=28:0){Qb(f+48|0,b);Ta(f+32|0,p,t,x,u,0,0,0,1073414144);p=H[f+32>>2];t=H[f+36>>2];x=H[f+40>>2];u=H[f+44>>2];Ta(f+16|0,p,t,x,u,H[f+48>>2],H[f+52>>2],H[f+56>>2],H[f+60>>2]);Lb(f,o,e,q,r,H[f+16>>2],H[f+20>>2],H[f+24>>2],H[f+28>>2]);q=H[f+8>>2];r=H[f+12>>2];o=H[f>>2];e=H[f+4>>2];break y}if(!b|m){break y}Ta(f+80|0,p,t,x,u,0,0,0,1073610752);Lb(f- -64|0,o,e,q,r,H[f+80>>2],H[f+84>>2],H[f+88>>2],H[f+92>>2]);q=H[f+72>>2];r=H[f+76>>2];m=1;o=H[f+64>>2];e=H[f+68>>2]}b=h+1|0;g=b>>>0<1?g+1|0:g;h=b;B=1}b=H[c+4>>2];if(b>>>0>2]){H[c+4>>2]=b+1;b=I[b|0]}else{b=La(c)}continue}break}b=46}z:{A:{B:{if(!B){if(!H[c+104>>2]){if(d){break A}break B}b=H[c+4>>2];H[c+4>>2]=b-1;if(!d){break B}H[c+4>>2]=b-2;if(!y){break A}H[c+4>>2]=b-3;break A}if((g|0)<0?1:(g|0)<=0?h>>>0<=7:0){x=h;u=g;while(1){i=i<<4;m=u;u=x+1|0;m=u>>>0<1?m+1|0:m;x=u;u=m;if((x|0)!=8|m){continue}break}}C:{D:{E:{if((b&-33)==80){x=jj(c,d);b=pa;u=b;if(x|(b|0)!=-2147483648){break C}if(d){if(H[c+104>>2]){break E}break D}o=0;e=0;kc(c,0,0);c=0;b=0;break z}if(!H[c+104>>2]){break D}}H[c+4>>2]=H[c+4>>2]-1}x=0;u=0}if(!i){wc(f+112|0,+(l|0)*0);o=H[f+112>>2];e=H[f+116>>2];c=H[f+124>>2];b=H[f+120>>2];break z}b=y?j:h;c=(y?k:g)<<2|b>>>30;b=x+(b<<2)|0;c=c+u|0;c=b>>>0>>0?c+1|0:c;h=b-32|0;g=c-(b>>>0<32)|0;b=g;if((b|0)>0?1:(b|0)>=0?h>>>0>0-A>>>0:0){H[6070]=68;Qb(f+160|0,l);Ta(f+144|0,H[f+160>>2],H[f+164>>2],H[f+168>>2],H[f+172>>2],-1,-1,-1,2147418111);Ta(f+128|0,H[f+144>>2],H[f+148>>2],H[f+152>>2],H[f+156>>2],-1,-1,-1,2147418111);o=H[f+128>>2];e=H[f+132>>2];c=H[f+140>>2];b=H[f+136>>2];break z}b=A-226|0;c=h>>>0>=b>>>0;b=b>>31;if((b|0)<(g|0)?1:(g|0)>=(b|0)?c:0){if((i|0)>-1){while(1){Lb(f+416|0,o,e,q,r,0,0,0,-1073807360);c=gg(o,e,q,r,1073610752);b=(c|0)<0;Lb(f+400|0,o,e,q,r,b?o:H[f+416>>2],b?e:H[f+420>>2],b?q:H[f+424>>2],b?r:H[f+428>>2]);b=h;h=b-1|0;g=g-(b>>>0<1)|0;q=H[f+408>>2];r=H[f+412>>2];o=H[f+400>>2];e=H[f+404>>2];i=i<<1|(c|0)>-1;if((i|0)>-1){continue}break}}b=h;c=A;d=(b-c|0)+32|0;c=g-((c>>31)+(b>>>0>>0)|0)|0;c=d>>>0<32?c+1|0:c;b=d;c=((c|0)<0?1:(c|0)<=0?b>>>0>>0:0)?(b|0)>0?b:0:z;F:{if((c|0)>=113){Qb(f+384|0,l);j=H[f+392>>2];k=H[f+396>>2];p=H[f+384>>2];t=H[f+388>>2];g=0;b=0;break F}wc(f+352|0,ef(144-c|0));Qb(f+336|0,l);p=H[f+336>>2];t=H[f+340>>2];j=H[f+344>>2];k=H[f+348>>2];nj(f+368|0,H[f+352>>2],H[f+356>>2],H[f+360>>2],H[f+364>>2],p,t,j,k);D=H[f+376>>2];E=H[f+380>>2];g=H[f+372>>2];b=H[f+368>>2]}c=!(i&1)&((gd(o,e,q,r,0,0,0,0)|0)!=0&(c|0)<32);Hd(f+320|0,c+i|0);Ta(f+304|0,p,t,j,k,H[f+320>>2],H[f+324>>2],H[f+328>>2],H[f+332>>2]);d=b;Lb(f+272|0,H[f+304>>2],H[f+308>>2],H[f+312>>2],H[f+316>>2],b,g,D,E);b=c;Ta(f+288|0,b?0:o,b?0:e,b?0:q,b?0:r,p,t,j,k);Lb(f+256|0,H[f+288>>2],H[f+292>>2],H[f+296>>2],H[f+300>>2],H[f+272>>2],H[f+276>>2],H[f+280>>2],H[f+284>>2]);fg(f+240|0,H[f+256>>2],H[f+260>>2],H[f+264>>2],H[f+268>>2],d,g,D,E);b=H[f+240>>2];c=H[f+244>>2];d=H[f+248>>2];g=H[f+252>>2];if(!gd(b,c,d,g,0,0,0,0)){H[6070]=68}mj(f+224|0,b,c,d,g,h);o=H[f+224>>2];e=H[f+228>>2];c=H[f+236>>2];b=H[f+232>>2];break z}H[6070]=68;Qb(f+208|0,l);Ta(f+192|0,H[f+208>>2],H[f+212>>2],H[f+216>>2],H[f+220>>2],0,0,0,65536);Ta(f+176|0,H[f+192>>2],H[f+196>>2],H[f+200>>2],H[f+204>>2],0,0,0,65536);o=H[f+176>>2];e=H[f+180>>2];c=H[f+188>>2];b=H[f+184>>2];break z}kc(c,0,0)}wc(f+96|0,+(l|0)*0);o=H[f+96>>2];e=H[f+100>>2];c=H[f+108>>2];b=H[f+104>>2]}H[s+16>>2]=o;H[s+20>>2]=e;H[s+24>>2]=b;H[s+28>>2]=c;oa=f+432|0;j=H[s+24>>2];k=H[s+28>>2];h=H[s+16>>2];g=H[s+20>>2];break a}if(!H[b+104>>2]){break n}H[b+4>>2]=H[b+4>>2]-1}i=b;o=l;l=0;f=0;e=oa-8976|0;oa=e;B=z+A|0;J=0-B|0;G:{H:{while(1){if((c|0)!=48){I:{if((c|0)!=46){break G}b=H[i+4>>2];if(b>>>0>=K[i+104>>2]){break I}H[i+4>>2]=b+1;c=I[b|0];break H}}else{b=H[i+4>>2];if(b>>>0>2]){l=1;H[i+4>>2]=b+1;c=I[b|0]}else{l=1;c=La(i)}continue}break}c=La(i)}n=1;if((c|0)!=48){break G}while(1){b=j;j=b-1|0;k=k-(b>>>0<1)|0;b=H[i+4>>2];J:{if(b>>>0>2]){H[i+4>>2]=b+1;c=I[b|0];break J}c=La(i)}if((c|0)==48){continue}break}l=1}H[e+784>>2]=0;K:{L:{b=(c|0)==46;m=c-48|0;M:{N:{O:{P:{if(m>>>0>9?b:1){while(1){Q:{if(b&1){if(!n){j=h;k=g;n=1;break Q}b=!l;break P}b=h+1|0;g=b>>>0<1?g+1|0:g;h=b;if((f|0)<=2044){y=(c|0)==48?y:h;b=(e+784|0)+(f<<2)|0;l=b;if(w){m=(N(H[b>>2],10)+c|0)-48|0}H[l>>2]=m;l=1;c=w+1|0;b=(c|0)==9;w=b?0:c;f=b+f|0;break Q}if((c|0)==48){break Q}H[e+8960>>2]=H[e+8960>>2]|1;y=18396}b=H[i+4>>2];R:{if(b>>>0>2]){H[i+4>>2]=b+1;c=I[b|0];break R}c=La(i)}b=(c|0)==46;m=c-48|0;if(b|m>>>0<10){continue}break}}j=n?j:h;k=n?k:g;if(!(!l|(c&-33)!=69)){p=jj(i,d);b=pa;t=b;S:{if(p|(b|0)!=-2147483648){break S}if(!d){break M}p=0;t=0;if(!H[i+104>>2]){break S}H[i+4>>2]=H[i+4>>2]-1}if(!l){break N}m=k+t|0;b=j+p|0;m=b>>>0

>>0?m+1|0:m;j=b;k=m;break L}b=!l;if((c|0)<0){break O}}if(!H[i+104>>2]){break O}H[i+4>>2]=H[i+4>>2]-1}if(!b){break L}}H[6070]=28}h=0;g=0;kc(i,0,0);c=0;b=0;break K}b=H[e+784>>2];if(!b){wc(e,+(o|0)*0);h=H[e>>2];g=H[e+4>>2];c=H[e+12>>2];b=H[e+8>>2];break K}if(!((h|0)!=(j|0)|(g|0)!=(k|0)|((g|0)>0?1:(g|0)>=0?h>>>0>9:0)|(b>>>z|0?(z|0)<=30:0))){Qb(e+48|0,o);Hd(e+32|0,b);Ta(e+16|0,H[e+48>>2],H[e+52>>2],H[e+56>>2],H[e+60>>2],H[e+32>>2],H[e+36>>2],H[e+40>>2],H[e+44>>2]);h=H[e+16>>2];g=H[e+20>>2];c=H[e+28>>2];b=H[e+24>>2];break K}if((k|0)>0?1:(k|0)>=0?j>>>0>(A|0)/-2>>>0:0){H[6070]=68;Qb(e+96|0,o);Ta(e+80|0,H[e+96>>2],H[e+100>>2],H[e+104>>2],H[e+108>>2],-1,-1,-1,2147418111);Ta(e- -64|0,H[e+80>>2],H[e+84>>2],H[e+88>>2],H[e+92>>2],-1,-1,-1,2147418111);h=H[e+64>>2];g=H[e+68>>2];c=H[e+76>>2];b=H[e+72>>2];break K}b=A-226|0;c=j>>>0>>0;b=b>>31;if((b|0)>(k|0)?1:(k|0)<=(b|0)?c:0){H[6070]=68;Qb(e+144|0,o);Ta(e+128|0,H[e+144>>2],H[e+148>>2],H[e+152>>2],H[e+156>>2],0,0,0,65536);Ta(e+112|0,H[e+128>>2],H[e+132>>2],H[e+136>>2],H[e+140>>2],0,0,0,65536);h=H[e+112>>2];g=H[e+116>>2];c=H[e+124>>2];b=H[e+120>>2];break K}if(w){if((w|0)<=8){b=(e+784|0)+(f<<2)|0;i=H[b>>2];while(1){i=N(i,10);w=w+1|0;if((w|0)!=9){continue}break}H[b>>2]=i}f=f+1|0}T:{n=j;if((y|0)>(j|0)|(y|0)>=9|(j|0)>17){break T}if((n|0)==9){Qb(e+192|0,o);Hd(e+176|0,H[e+784>>2]);Ta(e+160|0,H[e+192>>2],H[e+196>>2],H[e+200>>2],H[e+204>>2],H[e+176>>2],H[e+180>>2],H[e+184>>2],H[e+188>>2]);h=H[e+160>>2];g=H[e+164>>2];c=H[e+172>>2];b=H[e+168>>2];break K}if((n|0)<=8){Qb(e+272|0,o);Hd(e+256|0,H[e+784>>2]);Ta(e+240|0,H[e+272>>2],H[e+276>>2],H[e+280>>2],H[e+284>>2],H[e+256>>2],H[e+260>>2],H[e+264>>2],H[e+268>>2]);Qb(e+224|0,H[(0-n<<2)+8608>>2]);lj(e+208|0,H[e+240>>2],H[e+244>>2],H[e+248>>2],H[e+252>>2],H[e+224>>2],H[e+228>>2],H[e+232>>2],H[e+236>>2]);h=H[e+208>>2];g=H[e+212>>2];c=H[e+220>>2];b=H[e+216>>2];break K}b=(N(n,-3)+z|0)+27|0;c=H[e+784>>2];if(c>>>b|0?(b|0)<=30:0){break T}Qb(e+352|0,o);Hd(e+336|0,c);Ta(e+320|0,H[e+352>>2],H[e+356>>2],H[e+360>>2],H[e+364>>2],H[e+336>>2],H[e+340>>2],H[e+344>>2],H[e+348>>2]);Qb(e+304|0,H[(n<<2)+8536>>2]);Ta(e+288|0,H[e+320>>2],H[e+324>>2],H[e+328>>2],H[e+332>>2],H[e+304>>2],H[e+308>>2],H[e+312>>2],H[e+316>>2]);h=H[e+288>>2];g=H[e+292>>2];c=H[e+300>>2];b=H[e+296>>2];break K}while(1){c=f;f=f-1|0;if(!H[(e+784|0)+(f<<2)>>2]){continue}break}w=0;b=(n|0)%9|0;U:{if(!b){b=0;break U}d=(n|0)>-1?b:b+9|0;V:{if(!c){b=0;c=0;break V}g=H[(0-d<<2)+8608>>2];h=1e9/(g|0)|0;m=0;i=0;b=0;while(1){j=m;k=(e+784|0)+(i<<2)|0;m=H[k>>2];l=(m>>>0)/(g>>>0)|0;j=j+l|0;H[k>>2]=j;j=!j&(b|0)==(i|0);b=j?b+1&2047:b;n=j?n-9|0:n;m=N(h,m-N(g,l)|0);i=i+1|0;if((i|0)!=(c|0)){continue}break}if(!m){break V}H[(e+784|0)+(c<<2)>>2]=m;c=c+1|0}n=(n-d|0)+9|0}while(1){h=(e+784|0)+(b<<2)|0;W:{while(1){if((n|0)!=36|K[h>>2]>=10384593?(n|0)>=36:0){break W}l=c+2047|0;m=0;while(1){k=m;g=l&2047;l=(e+784|0)+(g<<2)|0;d=H[l>>2];m=d>>>3|0;j=d<<29;d=k+j|0;m=d>>>0>>0?m+1|0:m;j=d;k=m;if(!k&j>>>0<1000000001){m=0}else{m=Fq(j,k,1e9);j=j-Eq(m,pa,1e9,0)|0}H[l>>2]=j;c=(g|0)!=(c-1&2047)?c:(b|0)==(g|0)?c:j?c:g;l=g-1|0;if((b|0)!=(g|0)){continue}break}w=w-29|0;if(!m){continue}break}b=b-1&2047;if((c|0)==(b|0)){d=(e+784|0)+((c+2046&2047)<<2)|0;c=c-1&2047;H[d>>2]=H[d>>2]|H[(e+784|0)+(c<<2)>>2]}n=n+9|0;H[(e+784|0)+(b<<2)>>2]=m;continue}break}X:{Y:while(1){d=c+1&2047;j=(e+784|0)+((c-1&2047)<<2)|0;while(1){g=(n|0)>45?9:1;Z:{while(1){l=b;i=0;_:{while(1){$:{b=i+l&2047;if((b|0)==(c|0)){break $}b=H[(e+784|0)+(b<<2)>>2];h=H[(i<<2)+8560>>2];if(b>>>0>>0){break $}if(b>>>0>h>>>0){break _}i=i+1|0;if((i|0)!=4){continue}}break}if((n|0)!=36){break _}j=0;k=0;i=0;h=0;g=0;while(1){b=i+l&2047;if((b|0)==(c|0)){c=c+1&2047;H[(e+(c<<2)|0)+780>>2]=0}Ta(e+768|0,j,k,h,g,0,0,1342177280,1075633366);Hd(e+752|0,H[(e+784|0)+(b<<2)>>2]);Lb(e+736|0,H[e+768>>2],H[e+772>>2],H[e+776>>2],H[e+780>>2],H[e+752>>2],H[e+756>>2],H[e+760>>2],H[e+764>>2]);h=H[e+744>>2];g=H[e+748>>2];j=H[e+736>>2];k=H[e+740>>2];i=i+1|0;if((i|0)!=4){continue}break}Qb(e+720|0,o);Ta(e+704|0,j,k,h,g,H[e+720>>2],H[e+724>>2],H[e+728>>2],H[e+732>>2]);h=H[e+712>>2];g=H[e+716>>2];j=0;k=0;p=H[e+704>>2];t=H[e+708>>2];n=w+113|0;d=n-A|0;m=(d|0)<(z|0);b=m?(d|0)>0?d:0:z;if((b|0)<=112){break Z}break X}w=g+w|0;b=c;if((l|0)==(b|0)){continue}break}k=1e9>>>g|0;m=-1<>2];h=h+(i>>>g|0)|0;H[f>>2]=h;h=!h&(b|0)==(l|0);b=h?b+1&2047:b;n=h?n-9|0:n;i=N(k,i&m);l=l+1&2047;if((l|0)!=(c|0)){continue}break}if(!i){continue}if((b|0)!=(d|0)){H[(e+784|0)+(c<<2)>>2]=i;c=d;continue Y}H[j>>2]=H[j>>2]|1;b=d;continue}break}break}wc(e+656|0,ef(225-b|0));nj(e+688|0,H[e+656>>2],H[e+660>>2],H[e+664>>2],H[e+668>>2],p,t,h,g);x=H[e+696>>2];u=H[e+700>>2];D=H[e+688>>2];E=H[e+692>>2];wc(e+640|0,ef(113-b|0));Cg(e+672|0,p,t,h,g,H[e+640>>2],H[e+644>>2],H[e+648>>2],H[e+652>>2]);j=H[e+672>>2];k=H[e+676>>2];q=H[e+680>>2];r=H[e+684>>2];fg(e+624|0,p,t,h,g,j,k,q,r);Lb(e+608|0,D,E,x,u,H[e+624>>2],H[e+628>>2],H[e+632>>2],H[e+636>>2]);h=H[e+616>>2];g=H[e+620>>2];p=H[e+608>>2];t=H[e+612>>2]}f=l+4&2047;aa:{if((f|0)==(c|0)){break aa}f=H[(e+784|0)+(f<<2)>>2];ba:{if(f>>>0<=499999999){if(!((l+5&2047)==(c|0)?f:1)){break ba}wc(e+496|0,+(o|0)*.25);Lb(e+480|0,j,k,q,r,H[e+496>>2],H[e+500>>2],H[e+504>>2],H[e+508>>2]);q=H[e+488>>2];r=H[e+492>>2];j=H[e+480>>2];k=H[e+484>>2];break ba}if((f|0)!=5e8){wc(e+592|0,+(o|0)*.75);Lb(e+576|0,j,k,q,r,H[e+592>>2],H[e+596>>2],H[e+600>>2],H[e+604>>2]);q=H[e+584>>2];r=H[e+588>>2];j=H[e+576>>2];k=H[e+580>>2];break ba}G=+(o|0);if((l+5&2047)==(c|0)){wc(e+528|0,G*.5);Lb(e+512|0,j,k,q,r,H[e+528>>2],H[e+532>>2],H[e+536>>2],H[e+540>>2]);q=H[e+520>>2];r=H[e+524>>2];j=H[e+512>>2];k=H[e+516>>2];break ba}wc(e+560|0,G*.75);Lb(e+544|0,j,k,q,r,H[e+560>>2],H[e+564>>2],H[e+568>>2],H[e+572>>2]);q=H[e+552>>2];r=H[e+556>>2];j=H[e+544>>2];k=H[e+548>>2]}if((b|0)>111){break aa}Cg(e+464|0,j,k,q,r,0,0,0,1073676288);if(gd(H[e+464>>2],H[e+468>>2],H[e+472>>2],H[e+476>>2],0,0,0,0)){break aa}Lb(e+448|0,j,k,q,r,0,0,0,1073676288);q=H[e+456>>2];r=H[e+460>>2];j=H[e+448>>2];k=H[e+452>>2]}Lb(e+432|0,p,t,h,g,j,k,q,r);fg(e+416|0,H[e+432>>2],H[e+436>>2],H[e+440>>2],H[e+444>>2],D,E,x,u);h=H[e+424>>2];g=H[e+428>>2];p=H[e+416>>2];t=H[e+420>>2];ca:{if((-2-B|0)>=(n&2147483647)){break ca}H[e+408>>2]=h;H[e+412>>2]=g&2147483647;H[e+400>>2]=p;H[e+404>>2]=t;Ta(e+384|0,p,t,h,g,0,0,0,1073610752);u=H[e+400>>2];x=H[e+404>>2];f=H[e+408>>2];n=H[e+412>>2];c=gg(u,x,f,n,1081081856);l=(c|0)<0;i=l;h=i?h:H[e+392>>2];g=i?g:H[e+396>>2];p=i?p:H[e+384>>2];t=i?t:H[e+388>>2];w=((c|0)>-1)+w|0;if((w+110|0)<=(J|0)){if((((gg(u,x,f,n,1081081856)|0)<0?m:m&(b|0)!=(d|0))|0)!=1){break ca}if(!gd(j,k,q,r,0,0,0,0)){break ca}}H[6070]=68}mj(e+368|0,p,t,h,g,w);h=H[e+368>>2];g=H[e+372>>2];c=H[e+380>>2];b=H[e+376>>2]}H[s+32>>2]=h;H[s+36>>2]=g;H[s+40>>2]=b;H[s+44>>2]=c;oa=e+8976|0;j=H[s+40>>2];k=H[s+44>>2];h=H[s+32>>2];g=H[s+36>>2];break a;case 3:break j;default:break m}}if(H[b+104>>2]){H[b+4>>2]=H[b+4>>2]-1}break i}da:{c=H[b+4>>2];ea:{if(c>>>0>2]){H[b+4>>2]=c+1;c=I[c|0];break ea}c=La(b)}if((c|0)==40){f=1;break da}k=2147450880;if(!H[b+104>>2]){break a}H[b+4>>2]=H[b+4>>2]-1;break a}while(1){c=H[b+4>>2];fa:{if(c>>>0>2]){H[b+4>>2]=c+1;c=I[c|0];break fa}c=La(b)}if(c-97>>>0>=26?c-48>>>0<10|c-65>>>0<26|(c|0)==95:1){f=f+1|0;continue}break}k=2147450880;if((c|0)==41){break a}c=H[b+104>>2];if(c){H[b+4>>2]=H[b+4>>2]-1}if(d){if(!f){break a}while(1){f=f-1|0;if(c){H[b+4>>2]=H[b+4>>2]-1}if(f){continue}break}break a}}H[6070]=28;kc(b,0,0)}k=0}H[a>>2]=h;H[a+4>>2]=g;H[a+8>>2]=j;H[a+12>>2]=k;oa=s+48|0}function co(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;c=oa-752|0;oa=c;f=c+496|0;e=f;H[e>>2]=7640;Ea(e+48|0);b=oa-16|0;oa=b;if(!I[21784]){F[21784]=1;H[b+12>>2]=21924;ya(21788,b+12|0);H[b+12>>2]=21936;ya(21788,b+12|0);H[b+12>>2]=21948;ya(21788,b+12|0);H[b+12>>2]=21972;ya(21788,b+12|0);H[b+12>>2]=22644;ya(21788,b+12|0);H[b+12>>2]=22656;ya(21788,b+12|0);H[b+12>>2]=22668;ya(21788,b+12|0);H[b+12>>2]=22680;ya(21788,b+12|0);H[b+12>>2]=21960;ya(21788,b+12|0);H[b+12>>2]=22692;ya(21788,b+12|0);H[b+12>>2]=22704;ya(21788,b+12|0);H[b+12>>2]=22716;ya(21788,b+12|0);H[b+12>>2]=21936;ya(21800,b+12|0);H[b+12>>2]=22644;ya(21800,b+12|0);H[b+12>>2]=22656;ya(21800,b+12|0);H[b+12>>2]=22668;ya(21800,b+12|0);H[b+12>>2]=22680;ya(21800,b+12|0);H[b+12>>2]=22692;ya(21800,b+12|0);H[b+12>>2]=22704;ya(21800,b+12|0);H[b+12>>2]=22716;ya(21800,b+12|0);H[b+12>>2]=22728;ya(21812,b+12|0);H[b+12>>2]=22740;ya(21812,b+12|0);H[b+12>>2]=22752;ya(21812,b+12|0);H[b+12>>2]=22764;ya(21812,b+12|0);H[b+12>>2]=22776;ya(21812,b+12|0);H[b+12>>2]=22788;ya(21812,b+12|0);H[b+12>>2]=22800;ya(21812,b+12|0);H[b+12>>2]=22812;ya(21812,b+12|0);H[b+12>>2]=22824;ya(21812,b+12|0);H[b+12>>2]=22836;ya(21812,b+12|0);H[b+12>>2]=22848;ya(21812,b+12|0);H[b+12>>2]=22860;ya(21812,b+12|0);H[b+12>>2]=22872;ya(21812,b+12|0);H[b+12>>2]=22884;ya(21812,b+12|0);H[b+12>>2]=22896;ya(21812,b+12|0);H[b+12>>2]=22908;ya(21812,b+12|0);H[b+12>>2]=22920;ya(21812,b+12|0);H[b+12>>2]=22932;ya(21812,b+12|0);H[b+12>>2]=22944;ya(21812,b+12|0);H[b+12>>2]=22956;ya(21812,b+12|0);H[b+12>>2]=22968;ya(21812,b+12|0);H[b+12>>2]=22980;ya(21812,b+12|0);H[b+12>>2]=22992;ya(21824,b+12|0);H[b+12>>2]=23004;ya(21824,b+12|0);H[b+12>>2]=23016;ya(21824,b+12|0);H[b+12>>2]=23028;ya(21824,b+12|0);H[b+12>>2]=23040;ya(21824,b+12|0);H[b+12>>2]=23052;ya(21824,b+12|0);H[b+12>>2]=23064;ya(21824,b+12|0);H[b+12>>2]=23076;ya(21824,b+12|0);H[b+12>>2]=23088;ya(21824,b+12|0);H[b+12>>2]=23100;ya(21824,b+12|0);H[b+12>>2]=23112;ya(21824,b+12|0);H[b+12>>2]=23124;ya(21824,b+12|0);H[b+12>>2]=23136;ya(21824,b+12|0);H[b+12>>2]=23148;ya(21824,b+12|0);H[b+12>>2]=23160;ya(21824,b+12|0);H[b+12>>2]=23172;ya(21824,b+12|0);H[b+12>>2]=23184;ya(21824,b+12|0);H[b+12>>2]=23196;ya(21824,b+12|0);H[b+12>>2]=23208;ya(21824,b+12|0);H[b+12>>2]=23220;ya(21824,b+12|0);H[b+12>>2]=22008;ya(21836,b+12|0);H[b+12>>2]=22020;ya(21836,b+12|0);H[b+12>>2]=22032;ya(21836,b+12|0);H[b+12>>2]=22044;ya(21836,b+12|0);H[b+12>>2]=22056;ya(21836,b+12|0);H[b+12>>2]=22068;ya(21836,b+12|0);H[b+12>>2]=22080;ya(21836,b+12|0);H[b+12>>2]=22092;ya(21836,b+12|0);H[b+12>>2]=22104;ya(21836,b+12|0);H[b+12>>2]=22116;ya(21836,b+12|0);H[b+12>>2]=22128;ya(21836,b+12|0);H[b+12>>2]=22140;ya(21836,b+12|0);H[b+12>>2]=22152;ya(21836,b+12|0)}oa=b+16|0;G[e+88>>1]=0;Vb(e+4|0,0,44);Nd(e,4);kk(e,40);xg(e,0);he(e,0);F[e+85|0]=0;jk(e,0);ik(e,0);H[f>>2]=7756;Ea(f+148|0);Ea(f+160|0);Ea(f+172|0);b=oa-16|0;oa=b;if(!I[21848]){F[21848]=1;H[b+12>>2]=21924;ya(21852,b+12|0);H[b+12>>2]=21936;ya(21852,b+12|0);H[b+12>>2]=21972;ya(21852,b+12|0);H[b+12>>2]=21948;ya(21852,b+12|0);H[b+12>>2]=22728;ya(21852,b+12|0);H[b+12>>2]=22752;ya(21852,b+12|0);H[b+12>>2]=22740;ya(21852,b+12|0);H[b+12>>2]=22644;ya(21852,b+12|0);H[b+12>>2]=22656;ya(21852,b+12|0);H[b+12>>2]=22992;ya(21852,b+12|0);H[b+12>>2]=23040;ya(21852,b+12|0);H[b+12>>2]=23076;ya(21852,b+12|0);H[b+12>>2]=23004;ya(21852,b+12|0);H[b+12>>2]=23016;ya(21852,b+12|0);H[b+12>>2]=22644;ya(21864,b+12|0);H[b+12>>2]=21936;ya(21864,b+12|0);H[b+12>>2]=22656;ya(21864,b+12|0);H[b+12>>2]=22992;ya(21864,b+12|0);H[b+12>>2]=23040;ya(21864,b+12|0);H[b+12>>2]=23076;ya(21864,b+12|0);H[b+12>>2]=23004;ya(21864,b+12|0);H[b+12>>2]=23016;ya(21864,b+12|0);H[b+12>>2]=22008;ya(21876,b+12|0);H[b+12>>2]=22020;ya(21876,b+12|0);H[b+12>>2]=22032;ya(21876,b+12|0);H[b+12>>2]=21936;ya(21876,b+12|0);H[b+12>>2]=22056;ya(21876,b+12|0);H[b+12>>2]=22068;ya(21876,b+12|0);H[b+12>>2]=22080;ya(21876,b+12|0);H[b+12>>2]=22092;ya(21876,b+12|0);H[b+12>>2]=22104;ya(21876,b+12|0);H[b+12>>2]=22116;ya(21876,b+12|0);H[b+12>>2]=22128;ya(21876,b+12|0);H[b+12>>2]=22140;ya(21876,b+12|0);H[b+12>>2]=22152;ya(21876,b+12|0);H[b+12>>2]=22272;ya(21888,b+12|0);H[b+12>>2]=22284;ya(21888,b+12|0);H[b+12>>2]=22296;ya(21888,b+12|0);H[b+12>>2]=22308;ya(21888,b+12|0);H[b+12>>2]=22320;ya(21888,b+12|0);H[b+12>>2]=22332;ya(21888,b+12|0);H[b+12>>2]=22248;ya(21888,b+12|0);H[b+12>>2]=22260;ya(21888,b+12|0);H[b+12>>2]=22344;ya(21888,b+12|0);H[b+12>>2]=22356;ya(21888,b+12|0);H[b+12>>2]=22368;ya(21888,b+12|0);H[b+12>>2]=22380;ya(21888,b+12|0);H[b+12>>2]=22392;ya(21888,b+12|0);H[b+12>>2]=22404;ya(21888,b+12|0);H[b+12>>2]=22500;ya(21888,b+12|0);H[b+12>>2]=22440;ya(21888,b+12|0);H[b+12>>2]=22452;ya(21888,b+12|0);H[b+12>>2]=22464;ya(21888,b+12|0);H[b+12>>2]=22476;ya(21888,b+12|0);H[b+12>>2]=22488;ya(21888,b+12|0);H[b+12>>2]=22596;ya(21888,b+12|0);H[b+12>>2]=22608;ya(21888,b+12|0);H[b+12>>2]=22224;ya(21888,b+12|0);H[b+12>>2]=22524;ya(21888,b+12|0);H[b+12>>2]=22512;ya(21888,b+12|0);H[b+12>>2]=22536;ya(21888,b+12|0);H[b+12>>2]=22548;ya(21888,b+12|0);H[b+12>>2]=22560;ya(21888,b+12|0);H[b+12>>2]=22572;ya(21888,b+12|0);H[b+12>>2]=22584;ya(21888,b+12|0);H[b+12>>2]=22620;ya(21888,b+12|0);H[b+12>>2]=22788;ya(21900,b+12|0);H[b+12>>2]=22800;ya(21900,b+12|0);H[b+12>>2]=22824;ya(21900,b+12|0);H[b+12>>2]=22860;ya(21900,b+12|0);H[b+12>>2]=23028;ya(21912,b+12|0);H[b+12>>2]=23052;ya(21912,b+12|0);H[b+12>>2]=23064;ya(21912,b+12|0);H[b+12>>2]=23100;ya(21912,b+12|0)}oa=b+16|0;H[f+144>>2]=0;H[f+136>>2]=0;H[f+140>>2]=0;H[f+204>>2]=0;F[f+227|0]=1;F[f+225|0]=1;G[f+234>>1]=0;F[f+209|0]=0;F[f+210|0]=0;F[f+211|0]=0;F[f+212|0]=0;F[f+229|0]=0;m=Sa(c+480|0);l=Sa(c+464|0);j=xa(c+448|0,7628);g=Ea(c+432|0);H[5266]=27752;Ga(21760,2023);a:{if((wa(a)|0)!=-1){n=1;while(1){b:{c:{d:{e:{if(I[Aa(a,h)|0]!=32){if((wa(a)|0)!=(h|0)){break e}}b=d;d=0;if(!b){break b}f:{if(wa(g)>>>0<14){break f}b=xa(c+192|0,2294);e=Ra(g,0,14,b);va(b);if(e){break f}n=0;break c}g:{if(wa(g)>>>0<10){break g}b=xa(c+192|0,2719);e=Ra(g,0,10,b);va(b);if(e){break g}Eb(c+192|0,g,10);Ua(j,c+192|0);va(c+192|0);break c}if(Ma(g,1991)){break d}if(Ma(g,1660)){break d}if(Ma(g,2657)){break d}if(I[Aa(g,0)|0]==45){og(l,g);break c}og(m,g);break c}q=F[Aa(a,h)|0];o=oa-16|0;oa=o;d=oa-16|0;oa=d;e=c+192|0;ng(e);oa=d+16|0;i=wa(g);r=Ca(g);k=oa-16|0;oa=k;b=e;h:{d=i+1|0;if(d>>>0<=4294967279){i:{if(d>>>0<=10){ub(b,i);d=b;break i}p=cd(d)+1|0;d=Na(p);_b(b,d);Zb(b,p);yb(b,i)}Yb(d,r,i);F[k+15|0]=0;nb(d+i|0,k+15|0);oa=k+16|0;break h}Xb();X()}Od(e,q);oa=o+16|0;Ua(g,c+192|0);va(c+192|0);d=1;break b}s=1}Ga(g,7628)}h=h+1|0;if(h>>>0>>0){continue}break}if(!n){break a}}j:{if(of(j)){break j}a=jd(2575);if(!a){break j}a=xa(c+192|0,a);Ua(j,a);va(a)}k:{if(of(j)){break k}a=jd(2648);if(!a){break k}a=xa(c+8|0,a);d=xa(c+416|0,2473);Ue(c+192|0,a,d);Ua(j,c+192|0);va(c+192|0);va(d);va(a)}l:{if(of(j)){break l}a=jd(2620);if(!a){break l}d=xa(c+416|0,jd(2638));a=xa(c+400|0,a);Ue(c+8|0,d,a);b=xa(c+384|0,2473);Ue(c+192|0,c+8|0,b);Ua(j,c+192|0);va(c+192|0);va(b);va(c+8|0);va(a);va(d)}if($b(j)){break a}d=Bj(c+192|0,Ca(j));m:{if(Ui(H[H[d>>2]-12>>2]+(c+192|0)|0)){i=Sa(c+8|0);k=i;b=oa-16|0;oa=b;e=Ea(b);a=d;if((te(a)|0)!=-1){while(1){Ga(e,7628);while(1){n:{Ej(a,b+15|0);o:{p:{q:{r:{h=I[b+15|0];switch(h-32|0){case 0:break n;case 3:break p;case 1:case 2:break q;default:break r}}if((h|0)==13|h-9>>>0<2){break n}}mc(e,1,h<<24>>24);break o}while(1){if((te(a)|0)==-1){break o}Ej(a,b+15|0);if(I[b+15|0]!=10){continue}break}}if((te(a)|0)!=-1){continue}}break}if(wa(e)){og(k,e)}if((te(a)|0)!=-1){continue}break}}va(e);oa=b+16|0;H[c+400>>2]=Ed(i);H[c+384>>2]=Xc(i);a=xa(c+416|0,3200);b=Ii(f,c+400|0,c+384|0,a);va(a);Zf(i);mg(d);if(b){break m}Cj();_(1);X()}mg(d)}ae(d)}H[c+8>>2]=Ed(l);H[c+416>>2]=Xc(l);a=xa(c+192|0,3170);d=Ii(f,c+8|0,c+416|0,a);va(a);s:{t:{u:{if(d){if(s){break u}i=Bj(c+192|0,1235);if(je(H[H[i>>2]-12>>2]+(c+192|0)|0)){break t}a=c+8|0;d=Xe(a+104|0);H[a>>2]=19952;H[d>>2]=19972;b=H[4996];H[a>>2]=b;H[a+H[b-12>>2]>>2]=H[4997];b=a+4|0;pd(a+H[H[a>>2]-12>>2]|0,b);H[a>>2]=19952;H[d>>2]=19972;if(!bh(ah(b),1217,16)){ac(a+H[H[a>>2]-12>>2]|0,4)}if(je(H[H[a>>2]-12>>2]+(c+8|0)|0)){break s}b=a;e=oa-16|0;oa=e;h=Na(12);H[h+8>>2]=0;H[h+4>>2]=i;H[h>>2]=7832;d=f;qa[H[H[d>>2]+8>>2]](d,h);if(qa[H[H[d>>2]+16>>2]](d)|0){while(1){qa[H[H[d>>2]+20>>2]](e,d);Tb(b,e);va(e);if(qa[H[H[d>>2]+16>>2]](d)|0){Ha(b)}if(qa[H[H[d>>2]+16>>2]](d)|0){continue}break}}oa=e+16|0;sd(a);if(!xf(a+4|0)){ac(b+H[H[b>>2]-12>>2]|0,4)}mg(i);_e(a);ae(i);va(g);va(j);Zf(l);Zf(m);qg(f);oa=c+752|0;return 0}Cj();_(1);X()}Dj();za(27584,4927);za(27584,5029);za(27584,7575);Ha(27584);za(27584,7501);za(27584,7075);za(27584,6110);Ha(27584);za(27584,5142);za(27584,6999);za(27584,6294);za(27584,6005);za(27584,6483);Ha(27584);za(27584,5219);za(27584,6988);za(27584,4457);za(27584,6218);Ha(27584);za(27584,3975);za(27584,6130);Ha(27584);za(27584,3287);za(27584,6181);Ha(27584);za(27584,5176);za(27584,6995);za(27584,7231);za(27584,7372);za(27584,5451);Ha(27584);za(27584,7312);za(27584,4506);za(27584,3494);za(27584,6433);Ha(27584);za(27584,7275);za(27584,4506);za(27584,3890);za(27584,5863);Ha(27584);za(27584,3633);za(27584,5536);Ha(27584);za(27584,3666);za(27584,6587);Ha(27584);za(27584,7190);za(27584,4345);za(27584,6070);Ha(27584);za(27584,7149);za(27584,7017);za(27584,6256);Ha(27584);za(27584,3775);za(27584,3991);za(27584,5751);Ha(27584);za(27584,3948);za(27584,3591);Ha(27584);za(27584,5198);za(27584,6996);za(27584,4427);za(27584,6712);Ha(27584);za(27584,4475);za(27584,6650);Ha(27584);za(27584,3550);za(27584,4126);za(27584,5713);Ha(27584);za(27584,3697);za(27584,4667);Ha(27584);za(27584,4043);za(27584,5348);Ha(27584);za(27584,4210);za(27584,5398);za(27584,4404);za(27584,5927);Ha(27584);za(27584,4321);za(27584,5772);Ha(27584);za(27584,3870);za(27584,5834);Ha(27584);za(27584,3734);za(27584,6526);Ha(27584);za(27584,4297);za(27584,7443);za(27584,6777);Ha(27584);za(27584,3754);za(27584,5653);Ha(27584);za(27584,5160);za(27584,7002);za(27584,7353);za(27584,6364);Ha(27584);Ha(za(27584,2267));Ha(za(27584,2840));Ha(za(27584,2907));Ha(27584);za(27584,3304);za(27584,4227);za(27584,5903);Ha(27584);za(27584,4185);za(27584,4068);Ha(27584);za(27584,4094);za(27584,5e3);Ha(27584);za(27584,4559);za(27584,4598);za(27584,3807);Ha(27584);za(27584,5317);za(27584,6994);za(27584,5248);za(27584,3439);za(27584,5505);za(27584,4858);za(27584,6894);za(27584,4789);za(27584,6825);za(27584,4723);za(27584,5600);za(27584,3346);za(27584,6954);Ha(27584);_(1);X()}cg(3137,1235);X()}cg(2360,1217);X()}function cb(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;m=oa-16|0;oa=m;a:{b:{c:{d:{e:{f:{g:{h:{i:{j:{k:{l:{if(a>>>0<=244){f=H[7133];i=a>>>0<11?16:a+11&-8;c=i>>>3|0;b=f>>>c|0;if(b&3){d=c+((b^-1)&1)|0;b=d<<3;e=H[b+28580>>2];a=e+8|0;c=H[e+8>>2];b=b+28572|0;m:{if((c|0)==(b|0)){H[7133]=Gq(-2,d)&f;break m}H[c+12>>2]=b;H[b+8>>2]=c}b=d<<3;H[e+4>>2]=b|3;b=b+e|0;H[b+4>>2]=H[b+4>>2]|1;break a}k=H[7135];if(k>>>0>=i>>>0){break l}if(b){a=2<>>12&16;c=a;b=b>>>a|0;a=b>>>5&8;c=c|a;b=b>>>a|0;a=b>>>2&4;c=c|a;b=b>>>a|0;a=b>>>1&2;c=c|a;b=b>>>a|0;a=b>>>1&1;c=(c|a)+(b>>>a|0)|0;a=c<<3;g=H[a+28580>>2];b=H[g+8>>2];a=a+28572|0;n:{if((b|0)==(a|0)){f=Gq(-2,c)&f;H[7133]=f;break n}H[b+12>>2]=a;H[a+8>>2]=b}a=g+8|0;H[g+4>>2]=i|3;d=g+i|0;b=c<<3;e=b-i|0;H[d+4>>2]=e|1;H[b+g>>2]=e;if(k){b=k>>>3|0;c=(b<<3)+28572|0;g=H[7138];b=1<>2]}H[c+8>>2]=g;H[b+12>>2]=g;H[g+12>>2]=c;H[g+8>>2]=b}H[7138]=d;H[7135]=e;break a}h=H[7134];if(!h){break l}b=(h&0-h)-1|0;a=b>>>12&16;c=a;b=b>>>a|0;a=b>>>5&8;c=c|a;b=b>>>a|0;a=b>>>2&4;c=c|a;b=b>>>a|0;a=b>>>1&2;c=c|a;b=b>>>a|0;a=b>>>1&1;b=H[((c|a)+(b>>>a|0)<<2)+28836>>2];d=(H[b+4>>2]&-8)-i|0;c=b;while(1){p:{a=H[c+16>>2];if(!a){a=H[c+20>>2];if(!a){break p}}c=(H[a+4>>2]&-8)-i|0;e=c>>>0>>0;d=e?c:d;b=e?a:b;c=a;continue}break}j=b+i|0;if(j>>>0<=b>>>0){break k}l=H[b+24>>2];e=H[b+12>>2];if((e|0)!=(b|0)){a=H[b+8>>2];H[a+12>>2]=e;H[e+8>>2]=a;break b}c=b+20|0;a=H[c>>2];if(!a){a=H[b+16>>2];if(!a){break j}c=b+16|0}while(1){g=c;e=a;c=a+20|0;a=H[c>>2];if(a){continue}c=e+16|0;a=H[e+16>>2];if(a){continue}break}H[g>>2]=0;break b}i=-1;if(a>>>0>4294967231){break l}a=a+11|0;i=a&-8;j=H[7134];if(!j){break l}d=0-i|0;f=0;q:{if(i>>>0<256){break q}f=31;if(i>>>0>16777215){break q}a=a>>>8|0;g=a+1048320>>>16&8;a=a<>>16&4;a=a<>>16&2;a=(a<>>15|0)-(b|(c|g))|0;f=(a<<1|i>>>a+21&1)+28|0}c=H[(f<<2)+28836>>2];r:{s:{t:{if(!c){a=0;break t}a=0;b=i<<((f|0)==31?0:25-(f>>>1|0)|0);while(1){u:{g=(H[c+4>>2]&-8)-i|0;if(g>>>0>=d>>>0){break u}e=c;d=g;if(d){break u}d=0;a=c;break s}g=H[c+20>>2];c=H[((b>>>29&4)+c|0)+16>>2];a=g?(g|0)==(c|0)?a:g:a;b=b<<1;if(c){continue}break}}if(!(a|e)){e=0;a=2<>>12&16;c=a;b=b>>>a|0;a=b>>>5&8;c=c|a;b=b>>>a|0;a=b>>>2&4;c=c|a;b=b>>>a|0;a=b>>>1&2;c=c|a;b=b>>>a|0;a=b>>>1&1;a=H[((c|a)+(b>>>a|0)<<2)+28836>>2]}if(!a){break r}}while(1){b=(H[a+4>>2]&-8)-i|0;c=b>>>0>>0;d=c?b:d;e=c?a:e;b=H[a+16>>2];if(b){a=b}else{a=H[a+20>>2]}if(a){continue}break}}if(!e|H[7135]-i>>>0<=d>>>0){break l}h=e+i|0;if(h>>>0<=e>>>0){break k}f=H[e+24>>2];b=H[e+12>>2];if((e|0)!=(b|0)){a=H[e+8>>2];H[a+12>>2]=b;H[b+8>>2]=a;break c}c=e+20|0;a=H[c>>2];if(!a){a=H[e+16>>2];if(!a){break i}c=e+16|0}while(1){g=c;b=a;c=a+20|0;a=H[c>>2];if(a){continue}c=b+16|0;a=H[b+16>>2];if(a){continue}break}H[g>>2]=0;break c}c=H[7135];if(c>>>0>=i>>>0){d=H[7138];b=c-i|0;v:{if(b>>>0>=16){H[7135]=b;a=d+i|0;H[7138]=a;H[a+4>>2]=b|1;H[c+d>>2]=b;H[d+4>>2]=i|3;break v}H[7138]=0;H[7135]=0;H[d+4>>2]=c|3;a=c+d|0;H[a+4>>2]=H[a+4>>2]|1}a=d+8|0;break a}h=H[7136];if(h>>>0>i>>>0){b=h-i|0;H[7136]=b;c=H[7139];a=c+i|0;H[7139]=a;H[a+4>>2]=b|1;H[c+4>>2]=i|3;a=c+8|0;break a}a=0;j=i+47|0;b=j;if(H[7251]){c=H[7253]}else{H[7254]=-1;H[7255]=-1;H[7252]=4096;H[7253]=4096;H[7251]=m+12&-16^1431655768;H[7256]=0;H[7244]=0;c=4096}g=b+c|0;e=0-c|0;c=g&e;if(c>>>0<=i>>>0){break a}d=H[7243];if(d){b=H[7241];f=b+c|0;if(d>>>0>>0|b>>>0>=f>>>0){break a}}if(I[28976]&4){break f}w:{x:{d=H[7139];if(d){a=28980;while(1){b=H[a>>2];if(d>>>0>2]>>>0?b>>>0<=d>>>0:0){break x}a=H[a+8>>2];if(a){continue}break}}b=_c(0);if((b|0)==-1){break g}f=c;d=H[7252];a=d-1|0;if(a&b){f=(c-b|0)+(a+b&0-d)|0}if(f>>>0<=i>>>0|f>>>0>2147483646){break g}d=H[7243];if(d){a=H[7241];e=a+f|0;if(d>>>0>>0|a>>>0>=e>>>0){break g}}a=_c(f);if((b|0)!=(a|0)){break w}break e}f=e&g-h;if(f>>>0>2147483646){break g}b=_c(f);if((b|0)==(H[a>>2]+H[a+4>>2]|0)){break h}a=b}if(!((a|0)==-1|i+48>>>0<=f>>>0)){b=H[7253];b=b+(j-f|0)&0-b;if(b>>>0>2147483646){b=a;break e}if((_c(b)|0)!=-1){f=b+f|0;b=a;break e}_c(0-f|0);break g}b=a;if((a|0)!=-1){break e}break g}X()}e=0;break b}b=0;break c}if((b|0)!=-1){break e}}H[7244]=H[7244]|4}if(c>>>0>2147483646){break d}b=_c(c);a=_c(0);if((b|0)==-1|(a|0)==-1|a>>>0<=b>>>0){break d}f=a-b|0;if(f>>>0<=i+40>>>0){break d}}a=H[7241]+f|0;H[7241]=a;if(a>>>0>K[7242]){H[7242]=a}y:{z:{A:{g=H[7139];if(g){a=28980;while(1){d=H[a>>2];c=H[a+4>>2];if((d+c|0)==(b|0)){break A}a=H[a+8>>2];if(a){continue}break}break z}a=H[7137];if(!(a>>>0<=b>>>0?a:0)){H[7137]=b}a=0;H[7246]=f;H[7245]=b;H[7141]=-1;H[7142]=H[7251];H[7248]=0;while(1){d=a<<3;c=d+28572|0;H[d+28580>>2]=c;H[d+28584>>2]=c;a=a+1|0;if((a|0)!=32){continue}break}d=f-40|0;a=b+8&7?-8-b&7:0;c=d-a|0;H[7136]=c;a=a+b|0;H[7139]=a;H[a+4>>2]=c|1;H[(b+d|0)+4>>2]=40;H[7140]=H[7255];break y}if(I[a+12|0]&8|d>>>0>g>>>0|b>>>0<=g>>>0){break z}H[a+4>>2]=c+f;a=g+8&7?-8-g&7:0;c=a+g|0;H[7139]=c;b=H[7136]+f|0;a=b-a|0;H[7136]=a;H[c+4>>2]=a|1;H[(b+g|0)+4>>2]=40;H[7140]=H[7255];break y}if(K[7137]>b>>>0){H[7137]=b}c=b+f|0;a=28980;B:{C:{D:{E:{F:{G:{while(1){if((c|0)!=H[a>>2]){a=H[a+8>>2];if(a){continue}break G}break}if(!(I[a+12|0]&8)){break F}}a=28980;while(1){c=H[a>>2];if(c>>>0<=g>>>0){e=c+H[a+4>>2]|0;if(e>>>0>g>>>0){break E}}a=H[a+8>>2];continue}}H[a>>2]=b;H[a+4>>2]=H[a+4>>2]+f;j=(b+8&7?-8-b&7:0)+b|0;H[j+4>>2]=i|3;f=c+(c+8&7?-8-c&7:0)|0;h=i+j|0;c=f-h|0;if((g|0)==(f|0)){H[7139]=h;a=H[7136]+c|0;H[7136]=a;H[h+4>>2]=a|1;break C}if(H[7138]==(f|0)){H[7138]=h;a=H[7135]+c|0;H[7135]=a;H[h+4>>2]=a|1;H[a+h>>2]=a;break C}a=H[f+4>>2];if((a&3)==1){g=a&-8;H:{if(a>>>0<=255){d=H[f+8>>2];a=a>>>3|0;b=H[f+12>>2];if((b|0)==(d|0)){H[7133]=H[7133]&Gq(-2,a);break H}H[d+12>>2]=b;H[b+8>>2]=d;break H}i=H[f+24>>2];b=H[f+12>>2];I:{if((f|0)!=(b|0)){a=H[f+8>>2];H[a+12>>2]=b;H[b+8>>2]=a;break I}J:{a=f+20|0;d=H[a>>2];if(d){break J}a=f+16|0;d=H[a>>2];if(d){break J}b=0;break I}while(1){e=a;b=d;a=b+20|0;d=H[a>>2];if(d){continue}a=b+16|0;d=H[b+16>>2];if(d){continue}break}H[e>>2]=0}if(!i){break H}d=H[f+28>>2];a=(d<<2)+28836|0;K:{if(H[a>>2]==(f|0)){H[a>>2]=b;if(b){break K}H[7134]=H[7134]&Gq(-2,d);break H}H[i+(H[i+16>>2]==(f|0)?16:20)>>2]=b;if(!b){break H}}H[b+24>>2]=i;a=H[f+16>>2];if(a){H[b+16>>2]=a;H[a+24>>2]=b}a=H[f+20>>2];if(!a){break H}H[b+20>>2]=a;H[a+24>>2]=b}f=g+f|0;c=c+g|0}H[f+4>>2]=H[f+4>>2]&-2;H[h+4>>2]=c|1;H[c+h>>2]=c;if(c>>>0<=255){a=c>>>3|0;b=(a<<3)+28572|0;c=H[7133];a=1<>2]}H[b+8>>2]=h;H[a+12>>2]=h;H[h+12>>2]=b;H[h+8>>2]=a;break C}a=31;if(c>>>0<=16777215){a=c>>>8|0;e=a+1048320>>>16&8;a=a<>>16&4;a=a<>>16&2;a=(a<>>15|0)-(b|(d|e))|0;a=(a<<1|c>>>a+21&1)+28|0}H[h+28>>2]=a;H[h+16>>2]=0;H[h+20>>2]=0;e=(a<<2)+28836|0;d=H[7134];b=1<>2]=h;H[h+24>>2]=e;break M}a=c<<((a|0)==31?0:25-(a>>>1|0)|0);b=H[e>>2];while(1){d=b;if((H[b+4>>2]&-8)==(c|0)){break D}b=a>>>29|0;a=a<<1;e=d+(b&4)|0;b=H[e+16>>2];if(b){continue}break}H[e+16>>2]=h;H[h+24>>2]=d}H[h+12>>2]=h;H[h+8>>2]=h;break C}d=f-40|0;a=b+8&7?-8-b&7:0;c=d-a|0;H[7136]=c;a=a+b|0;H[7139]=a;H[a+4>>2]=c|1;H[(b+d|0)+4>>2]=40;H[7140]=H[7255];a=(e+(e-39&7?39-e&7:0)|0)-47|0;c=a>>>0>>0?g:a;H[c+4>>2]=27;a=H[7248];H[c+16>>2]=H[7247];H[c+20>>2]=a;a=H[7246];H[c+8>>2]=H[7245];H[c+12>>2]=a;H[7247]=c+8;H[7246]=f;H[7245]=b;H[7248]=0;a=c+24|0;while(1){H[a+4>>2]=7;b=a+8|0;a=a+4|0;if(b>>>0>>0){continue}break}if((c|0)==(g|0)){break y}H[c+4>>2]=H[c+4>>2]&-2;e=c-g|0;H[g+4>>2]=e|1;H[c>>2]=e;if(e>>>0<=255){a=e>>>3|0;b=(a<<3)+28572|0;c=H[7133];a=1<>2]}H[b+8>>2]=g;H[a+12>>2]=g;H[g+12>>2]=b;H[g+8>>2]=a;break y}a=31;H[g+16>>2]=0;H[g+20>>2]=0;if(e>>>0<=16777215){a=e>>>8|0;d=a+1048320>>>16&8;a=a<>>16&4;a=a<>>16&2;a=(a<>>15|0)-(b|(c|d))|0;a=(a<<1|e>>>a+21&1)+28|0}H[g+28>>2]=a;d=(a<<2)+28836|0;c=H[7134];b=1<>2]=g;H[g+24>>2]=d;break O}a=e<<((a|0)==31?0:25-(a>>>1|0)|0);b=H[d>>2];while(1){c=b;if((e|0)==(H[b+4>>2]&-8)){break B}b=a>>>29|0;a=a<<1;d=c+(b&4)|0;b=H[d+16>>2];if(b){continue}break}H[d+16>>2]=g;H[g+24>>2]=c}H[g+12>>2]=g;H[g+8>>2]=g;break y}a=H[d+8>>2];H[a+12>>2]=h;H[d+8>>2]=h;H[h+24>>2]=0;H[h+12>>2]=d;H[h+8>>2]=a}a=j+8|0;break a}a=H[c+8>>2];H[a+12>>2]=g;H[c+8>>2]=g;H[g+24>>2]=0;H[g+12>>2]=c;H[g+8>>2]=a}a=H[7136];if(a>>>0<=i>>>0){break d}b=a-i|0;H[7136]=b;c=H[7139];a=c+i|0;H[7139]=a;H[a+4>>2]=b|1;H[c+4>>2]=i|3;a=c+8|0;break a}H[6070]=48;a=0;break a}P:{if(!f){break P}c=H[e+28>>2];a=(c<<2)+28836|0;Q:{if(H[a>>2]==(e|0)){H[a>>2]=b;if(b){break Q}j=Gq(-2,c)&j;H[7134]=j;break P}H[f+(H[f+16>>2]==(e|0)?16:20)>>2]=b;if(!b){break P}}H[b+24>>2]=f;a=H[e+16>>2];if(a){H[b+16>>2]=a;H[a+24>>2]=b}a=H[e+20>>2];if(!a){break P}H[b+20>>2]=a;H[a+24>>2]=b}R:{if(d>>>0<=15){a=d+i|0;H[e+4>>2]=a|3;a=a+e|0;H[a+4>>2]=H[a+4>>2]|1;break R}H[e+4>>2]=i|3;H[h+4>>2]=d|1;H[d+h>>2]=d;if(d>>>0<=255){a=d>>>3|0;b=(a<<3)+28572|0;c=H[7133];a=1<>2]}H[b+8>>2]=h;H[a+12>>2]=h;H[h+12>>2]=b;H[h+8>>2]=a;break R}a=31;if(d>>>0<=16777215){a=d>>>8|0;g=a+1048320>>>16&8;a=a<>>16&4;a=a<>>16&2;a=(a<>>15|0)-(b|(c|g))|0;a=(a<<1|d>>>a+21&1)+28|0}H[h+28>>2]=a;H[h+16>>2]=0;H[h+20>>2]=0;c=(a<<2)+28836|0;T:{b=1<>2]=h;H[h+24>>2]=c;break U}a=d<<((a|0)==31?0:25-(a>>>1|0)|0);i=H[c>>2];while(1){b=i;if((H[b+4>>2]&-8)==(d|0)){break T}c=a>>>29|0;a=a<<1;c=b+(c&4)|0;i=H[c+16>>2];if(i){continue}break}H[c+16>>2]=h;H[h+24>>2]=b}H[h+12>>2]=h;H[h+8>>2]=h;break R}a=H[b+8>>2];H[a+12>>2]=h;H[b+8>>2]=h;H[h+24>>2]=0;H[h+12>>2]=b;H[h+8>>2]=a}a=e+8|0;break a}V:{if(!l){break V}c=H[b+28>>2];a=(c<<2)+28836|0;W:{if(H[a>>2]==(b|0)){H[a>>2]=e;if(e){break W}H[7134]=Gq(-2,c)&h;break V}H[(H[l+16>>2]==(b|0)?16:20)+l>>2]=e;if(!e){break V}}H[e+24>>2]=l;a=H[b+16>>2];if(a){H[e+16>>2]=a;H[a+24>>2]=e}a=H[b+20>>2];if(!a){break V}H[e+20>>2]=a;H[a+24>>2]=e}X:{if(d>>>0<=15){a=d+i|0;H[b+4>>2]=a|3;a=a+b|0;H[a+4>>2]=H[a+4>>2]|1;break X}H[b+4>>2]=i|3;H[j+4>>2]=d|1;H[d+j>>2]=d;if(k){a=k>>>3|0;c=(a<<3)+28572|0;e=H[7138];a=1<>2]}H[c+8>>2]=e;H[a+12>>2]=e;H[e+12>>2]=c;H[e+8>>2]=a}H[7138]=j;H[7135]=d}a=b+8|0}oa=m+16|0;return a|0}function gj(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;d=oa-144|0;oa=d;t=Vb(d,0,144);H[t+76>>2]=-1;H[t+44>>2]=a;H[t+32>>2]=147;H[t+84>>2]=a;u=c;c=0;j=oa-304|0;oa=j;e=t;d=b;a=I[b|0];a:{if(!a){break a}b:{c:{d:{e:{while(1){f:{g:{if(Yc(a&255)){while(1){a=d;d=d+1|0;if(Yc(I[a+1|0])){continue}break}kc(e,0,0);while(1){b=H[e+4>>2];h:{if(b>>>0>2]){H[e+4>>2]=b+1;b=I[b|0];break h}b=La(e)}if(Yc(b)){continue}break}d=H[e+4>>2];if(H[e+104>>2]){d=d-1|0;H[e+4>>2]=d}b=d-H[e+8>>2]|0;f=b>>31;k=b;l=m+H[e+124>>2]|0;b=q+H[e+120>>2]|0;l=b>>>0>>0?l+1|0:l;d=b;b=k+b|0;f=f+l|0;q=b;m=b>>>0>>0?f+1|0:f;break g}i:{j:{k:{b=I[d|0];if((b|0)==37){a=I[d+1|0];if((a|0)==42){break k}if((a|0)!=37){break j}}kc(e,0,0);a=((b|0)==37)+d|0;b=H[e+4>>2];l:{if(b>>>0>2]){H[e+4>>2]=b+1;b=I[b|0];break l}b=La(e)}if((b|0)!=I[a|0]){if(H[e+104>>2]){H[e+4>>2]=H[e+4>>2]-1}if((b|0)>-1){break a}s=0;if(v){break a}break c}b=q+1|0;m=b>>>0<1?m+1|0:m;q=b;break g}n=0;a=d+2|0;break i}if(!(!Rb(a)|I[d+2|0]!=36)){a=I[d+1|0]-48|0;b=oa-16|0;H[b+12>>2]=u;a=a>>>0>1?((a<<2)+u|0)-4|0:u;H[b+8>>2]=a+4;n=H[a>>2];a=d+3|0;break i}n=H[u>>2];u=u+4|0;a=d+1|0}s=0;d=0;if(Rb(I[a|0])){while(1){d=(I[a|0]+N(d,10)|0)-48|0;b=I[a+1|0];a=a+1|0;if(Rb(b)){continue}break}}h=I[a|0];if((h|0)==109){c=0;s=(n|0)!=0;h=I[a+1|0];p=0;a=a+1|0}b=a;a=b+1|0;i=3;m:{n:{switch(h-65|0){case 39:k=b+2|0;b=I[b+1|0]==104;a=b?k:a;i=b?-2:-1;break m;case 43:k=b+2|0;b=I[b+1|0]==108;a=b?k:a;i=b?3:1;break m;case 51:case 57:i=1;break m;case 11:i=2;break m;case 41:break m;case 0:case 2:case 4:case 5:case 6:case 18:case 23:case 26:case 32:case 34:case 35:case 36:case 37:case 38:case 40:case 45:case 46:case 47:case 50:case 52:case 55:break n;default:break d}}i=0;a=b}b=I[a|0];f=(b&47)==3;w=f?1:i;r=f?b|32:b;o:{if((r|0)==91){break o}p:{if((r|0)!=110){if((r|0)!=99){break p}d=(d|0)>1?d:1;break o}hj(n,w,q,m);break g}kc(e,0,0);while(1){b=H[e+4>>2];q:{if(b>>>0>2]){H[e+4>>2]=b+1;b=I[b|0];break q}b=La(e)}if(Yc(b)){continue}break}b=H[e+4>>2];if(H[e+104>>2]){b=b-1|0;H[e+4>>2]=b}b=b-H[e+8>>2]|0;f=b;h=b>>31;m=m+H[e+124>>2]|0;b=q+H[e+120>>2]|0;m=b>>>0>>0?m+1|0:m;k=b;b=b+f|0;f=h+m|0;q=b;m=b>>>0>>0?f+1|0:f}k=d;g=d>>31;kc(e,d,g);b=H[e+104>>2];f=H[e+4>>2];r:{if(b>>>0>f>>>0){H[e+4>>2]=f+1;break r}if((La(e)|0)<0){break d}b=H[e+104>>2]}if(b){H[e+4>>2]=H[e+4>>2]-1}b=16;s:{t:{u:{v:{w:{x:{y:{switch(r-88|0){default:b=r-65|0;if(b>>>0>6|!(1<>2]-H[e+8>>2]|0;if(H[e+120>>2]==(0-b|0)&H[e+124>>2]==(0-((b>>31)+((b|0)!=0)|0)|0)){break b}if(!n){break s}b=H[j+8>>2];d=H[j+12>>2];f=H[j>>2];h=H[j+4>>2];switch(w|0){case 2:break u;case 1:break v;case 0:break w;default:break s};case 3:case 11:case 27:if((r&239)==99){Vb(j+32|0,-1,257);F[j+32|0]=0;if((r|0)!=115){break t}F[j+65|0]=0;F[j+46|0]=0;G[j+42>>1]=0;G[j+44>>1]=0;break t}f=I[a+1|0];h=(f|0)==94;Vb(j+32|0,h,257);F[j+32|0]=0;b=h?a+2|0:a+1|0;z:{A:{B:{a=I[(h?2:1)+a|0];if((a|0)!=45){if((a|0)==93){break B}i=(f|0)!=94;a=b;break z}i=(f|0)!=94;F[j+78|0]=i;break A}i=(f|0)!=94;F[j+126|0]=i}a=b+1|0}while(1){b=I[a|0];C:{if((b|0)!=45){if(!b){break d}if((b|0)!=93){break C}break t}b=45;f=I[a+1|0];if(!f|(f|0)==93){break C}h=a+1|0;a=I[a-1|0];D:{if(f>>>0<=a>>>0){b=f;break D}while(1){a=a+1|0;F[a+(j+32|0)|0]=i;b=I[h|0];if(b>>>0>a>>>0){continue}break}}a=h}F[(b+j|0)+33|0]=i;a=a+1|0;continue};case 23:b=8;break x;case 12:case 29:b=10;break x;case 1:case 2:case 4:case 5:case 6:case 7:case 8:case 10:case 16:case 18:case 19:case 20:case 21:case 22:case 25:case 26:case 28:case 30:case 31:break s;case 0:case 24:case 32:break x;case 17:break y}}b=0}g=e;k=0;f=0;h=0;i=0;y=0;x=oa-16|0;oa=x;E:{F:{G:{H:{I:{J:{if(b>>>0<=36){while(1){d=H[g+4>>2];K:{if(d>>>0>2]){H[g+4>>2]=d+1;d=I[d|0];break K}d=La(g)}if(Yc(d)){continue}break}L:{M:{switch(d-43|0){case 0:case 2:break M;default:break L}}y=(d|0)==45?-1:0;d=H[g+4>>2];if(d>>>0>2]){H[g+4>>2]=d+1;d=I[d|0];break L}d=La(g)}N:{if(!(b&-17|(d|0)!=48)){d=H[g+4>>2];O:{if(d>>>0>2]){H[g+4>>2]=d+1;d=I[d|0];break O}d=La(g)}if((d&-33)==88){b=16;d=H[g+4>>2];P:{if(d>>>0>2]){H[g+4>>2]=d+1;d=I[d|0];break P}d=La(g)}if(I[d+8641|0]<16){break I}if(!H[g+104>>2]){break F}H[g+4>>2]=H[g+4>>2]-1;break F}if(b){break N}b=8;break I}b=b?b:10;if(b>>>0>I[d+8641|0]){break N}if(H[g+104>>2]){H[g+4>>2]=H[g+4>>2]-1}kc(g,0,0);H[6070]=28;b=0;d=0;break E}if((b|0)!=10){break I}h=d-48|0;if(h>>>0<=9){b=0;while(1){b=N(b,10)+h|0;d=H[g+4>>2];Q:{if(d>>>0>2]){H[g+4>>2]=d+1;d=I[d|0];break Q}d=La(g)}h=d-48|0;if(b>>>0<429496729?h>>>0<=9:0){continue}break}k=b}if(h>>>0>9){break J}i=Eq(k,0,10,0);l=pa;b=h;while(1){d=H[g+4>>2];R:{if(d>>>0>2]){H[g+4>>2]=d+1;d=I[d|0];break R}d=La(g)}h=d-48|0;o=h>>>0>9;f=l;b=b+i|0;f=b>>>0>>0?f+1|0:f;k=b;if((f|0)==429496729&b>>>0>=2576980378|f>>>0>429496729|o){break J}i=Eq(k,f,10,0);l=pa;b=h;if((l|0)==-1&i>>>0<=(b^-1)>>>0|(l|0)!=-1){continue}break}b=10;break H}H[6070]=28;b=0;d=0;break E}b=10;if(h>>>0<=9){break H}break G}if(b-1&b){i=I[d+8641|0];if(i>>>0>>0){while(1){h=N(b,h)+i|0;d=H[g+4>>2];S:{if(d>>>0>2]){H[g+4>>2]=d+1;d=I[d|0];break S}d=La(g)}i=I[d+8641|0];if(h>>>0<119304647?i>>>0>>0:0){continue}break}k=h}if(b>>>0<=i>>>0){break H}h=b;while(1){l=Eq(k,f,h,0);o=pa;i=i&255;if((o|0)==-1&(i^-1)>>>0>>0){break H}f=o;d=i+l|0;f=d>>>0>>0?f+1|0:f;k=d;l=b;d=H[g+4>>2];T:{if(d>>>0>2]){H[g+4>>2]=d+1;d=I[d|0];break T}d=La(g)}i=I[d+8641|0];if(l>>>0<=i>>>0){break H}rb(x,h,0,0,0,k,f,0,0);if(!(H[x+8>>2]|H[x+12>>2])){continue}break}break H}l=F[(N(b,23)>>>5&7)+8897|0];h=I[d+8641|0];if(h>>>0>>0){while(1){i=i<>2];U:{if(d>>>0>2]){H[g+4>>2]=d+1;d=I[d|0];break U}d=La(g)}h=I[d+8641|0];if(i>>>0<134217728?h>>>0>>0:0){continue}break}k=i}if(b>>>0<=h>>>0){break H}i=l;o=i&31;if((i&63)>>>0>=32){l=0;o=-1>>>o|0}else{l=-1>>>o|0;o=(1<>>o}if(!l&k>>>0>o>>>0){break H}while(1){z=h&255;d=i;h=d&31;if((d&63)>>>0>=32){f=k<>>32-h|f<>2];V:{if(d>>>0>2]){H[g+4>>2]=d+1;d=I[d|0];break V}d=La(g)}h=I[d+8641|0];if(z>>>0<=h>>>0){break H}if((f|0)==(l|0)&k>>>0<=o>>>0|f>>>0>>0){continue}break}}if(I[d+8641|0]>=b>>>0){break G}while(1){f=H[g+4>>2];W:{if(f>>>0>2]){H[g+4>>2]=f+1;d=I[f|0];break W}d=La(g)}if(I[d+8641|0]>>0){continue}break}H[6070]=68;y=0;k=-1;f=-1}if(H[g+104>>2]){H[g+4>>2]=H[g+4>>2]-1}if((k|0)==-1&(f|0)==-1){if(!(y|1)){H[6070]=68;b=-2;d=-1;break E}}b=y;h=b^k;d=b;b=h-b|0;k=f;f=d>>31;d=(k^f)-((d>>>0>h>>>0)+f|0)|0;break E}kc(g,0,0);b=0;d=0}oa=x+16|0;f=H[e+4>>2]-H[e+8>>2]|0;if(H[e+120>>2]==(0-f|0)&H[e+124>>2]==(0-((f>>31)+((f|0)!=0)|0)|0)){break b}if(!(!n|(r|0)!=112)){H[n>>2]=b;break s}hj(n,w,b,d);break s}L[n>>2]=ij(f,h,b,d);break s}M[n>>3]=ig(f,h,b,d);break s}H[n>>2]=f;H[n+4>>2]=h;H[n+8>>2]=b;H[n+12>>2]=d;break s}f=(r|0)==99;i=f?d+1|0:31;h=(w|0)!=1;X:{if(!h){b=n;if(s){b=cb(i<<2);if(!b){break e}}H[j+296>>2]=0;H[j+300>>2]=0;d=0;c=s;while(1){p=b;Y:{while(1){b=H[e+4>>2];Z:{if(b>>>0>2]){H[e+4>>2]=b+1;b=I[b|0];break Z}b=La(e)}if(!I[(b+j|0)+33|0]){break Y}F[j+27|0]=b;b=Ve(j+28|0,j+27|0,1,j+296|0);if((b|0)==-2){continue}if((b|0)==-1){break f}if(p){H[(d<<2)+p>>2]=H[j+28>>2];d=d+1|0}if(!(c&(d|0)==(i|0))){continue}break}i=i<<1|1;b=ke(p,i<<2);if(b){continue}break f}break}if(j+296|0?H[j+296>>2]:0){break f}c=0;break X}if(s){d=0;b=cb(i);if(!b){break e}while(1){c=b;while(1){b=H[e+4>>2];_:{if(b>>>0>2]){H[e+4>>2]=b+1;b=I[b|0];break _}b=La(e)}if(!I[(b+j|0)+33|0]){p=0;break X}F[c+d|0]=b;d=d+1|0;if((i|0)!=(d|0)){continue}break}p=0;i=i<<1|1;b=ke(c,i);if(b){continue}break}break d}d=0;if(n){while(1){b=H[e+4>>2];$:{if(b>>>0>2]){H[e+4>>2]=b+1;b=I[b|0];break $}b=La(e)}if(I[(b+j|0)+33|0]){F[d+n|0]=b;d=d+1|0;continue}else{p=0;c=n;break X}}}while(1){b=H[e+4>>2];aa:{if(b>>>0>2]){H[e+4>>2]=b+1;b=I[b|0];break aa}b=La(e)}if(I[(b+j|0)+33|0]){continue}break}c=0;p=0}b=H[e+4>>2];if(H[e+104>>2]){b=b-1|0;H[e+4>>2]=b}i=b-H[e+8>>2]|0;b=i+H[e+120>>2]|0;l=H[e+124>>2]+(i>>31)|0;l=b>>>0>>0?l+1|0:l;if(!(l|b)|((b|0)!=(k|0)|(g|0)!=(l|0)?(r|0)==99:0)){break b}ba:{if(!s){break ba}if(!h){H[n>>2]=p;break ba}H[n>>2]=c}if(f){break s}if(p){H[(d<<2)+p>>2]=0}if(!c){c=0;break s}F[c+d|0]=0}b=H[e+4>>2]-H[e+8>>2]|0;f=b>>31;k=b;m=m+H[e+124>>2]|0;b=q+H[e+120>>2]|0;m=b>>>0>>0?m+1|0:m;d=b;b=k+b|0;m=f+m|0;m=b>>>0>>0?m+1|0:m;q=b;v=((n|0)!=0)+v|0}d=a+1|0;a=I[a+1|0];if(a){continue}break a}break}c=0;break d}c=0;p=0}if(v){break b}}v=-1}if(!s){break a}Ba(c);Ba(p)}oa=j+304|0;oa=t+144|0;return v}function Bq(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;e=oa+-64|0;oa=e;h=Ea(e+48|0);j=Ea(e+32|0);f=Pa(H[b+24>>2]);H[b+60>>2]=0;u=I[b+69|0];a:{if(u){b:{if((wa(c)|0)<=0){break b}while(1){if(H[b+104>>2]<=(g|0)){break b}if(F[Aa(c,g)|0]>32){break b}g=g+1|0;if((wa(c)|0)>(g|0)){continue}break}}Eb(e+16|0,c,g);break a}H[b+104>>2]=0;c:{if((wa(c)|0)<1){break c}while(1){if(F[Aa(c,H[b+104>>2])|0]>32){break c}d=H[b+104>>2]+1|0;H[b+104>>2]=d;if((wa(c)|0)>(d|0)){continue}break}}cf(e+16|0,c)}Ua(h,e+16|0);va(e+16|0);d:{if(!wa(h)){if(I[b+128|0]){dk(a,b,H[b+120>>2],H[b+124>>2]);break d}Vd(a,h);break d}d=I[Aa(h,0)|0];e:{s=I[7820];f:{g:{if((d|0)==(s|0)){d=nd(h,0,21836);if(I[b+69|0]){break e}if(d){break f}break g}if(I[b+69|0]){break e}}if(!I[b+129|0]){break e}}if(I[Aa(h,0)|0]==(s|0)){d=xa(e,Ca(h)+1|0);cf(e+16|0,d);va(d);h:{i:{if(!I[b+86|0]){break i}d=xa(e,2337);if(Ra(e+16|0,0,6,d)){va(d);break i}g=I[Aa(h,wa(h)-1|0)|0];va(d);if((g|0)!=92){break i}if(!I[b+80|0]){F[b+80|0]=1;d=Na(136);hk(d,b);H[e>>2]=d;xc(H[b+12>>2],e);break h}F[b+79|0]=1;break h}d=xa(e,2037);g=Ra(e+16|0,0,2,d);va(d);if(!g){d=H[b+16>>2];H[e>>2]=Pa(H[b+8>>2]);ya(d,e);d=H[b+20>>2];H[e>>2]=Pa(H[b+12>>2]);ya(d,e);d=H[b+8>>2];g=Na(136);hk(g,b);H[e>>2]=g;ya(d,e);break h}d=xa(e,2217);g=Ra(e+16|0,0,4,d);va(d);if(!g){if(mb(H[b+8>>2])){break h}xc(H[b+12>>2],Qa(H[b+8>>2]));ob(H[b+8>>2]);break h}d=xa(e,2034);g=Ra(e+16|0,0,5,d);va(d);if(g){break h}j:{if(mb(H[b+16>>2])){break j}g=H[Qa(H[b+16>>2])>>2];ob(H[b+16>>2]);if((Pa(H[b+8>>2])|0)<=(g|0)){break j}while(1){d=H[Qa(H[b+8>>2])>>2];ob(H[b+8>>2]);if(d){qa[H[H[d>>2]+4>>2]](d)}if((Pa(H[b+8>>2])|0)>(g|0)){continue}break}}if(mb(H[b+20>>2])){break h}g=H[Qa(H[b+20>>2])>>2];ob(H[b+20>>2]);if((Pa(H[b+12>>2])|0)<=(g|0)){break h}while(1){d=H[Qa(H[b+12>>2])>>2];ob(H[b+12>>2]);if(d){qa[H[H[d>>2]+4>>2]](d)}if((Pa(H[b+12>>2])|0)>(g|0)){continue}break}}va(e+16|0)}k:{l:{if(!wa(h)){F[b+129|0]=0;break l}d=I[Aa(h,wa(h)-1|0)|0]==92;F[b+129|0]=d;if(d){break k}}if(I[b+79|0]|!I[b+80|0]){break k}c=Ea(a);F[b+80|0]=0;a=H[Qa(H[b+12>>2])>>2];ob(H[b+12>>2]);qa[H[H[a>>2]+24>>2]](e+16|0,a,h);Ua(c,e+16|0);va(e+16|0);qa[H[H[a>>2]+4>>2]](a);break d}if(I[b+79|0]|I[b+80|0]){break e}Td(a,c);break d}m:{if(I[b+79|0]){break m}c=H[b+12>>2];if(!c){break m}if(mb(c)){break m}c=a;a=H[Qa(H[b+12>>2])>>2];qa[H[H[a>>2]+24>>2]](c,a,h);break d}g=0;if(!mb(H[b+36>>2])){n=H[Qa(H[b+36>>2])>>2]}v=1;if((f|0)>=1){c=0;while(1){n:{o:{if(I[b+84|0]|!c){break o}if(H[lc(H[b+24>>2],c-1|0)>>2]==22164){break o}if(H[lc(H[b+24>>2],c)>>2]==22164){break n}}g=g+1|0}c=c+1|0;if((f|0)!=(c|0)){continue}break}}k=g-(F[b+87|0]&1)|0;m=wa(h);if((m|0)>=1){o=b+96|0;g=32;c=0;while(1){f=F[Aa(h,c)|0];mc(j,1,f);p:{q:{if(Db(f)){break q}d=i&1;i=0;if(d){break q}r:{s:{t:{u:{d=I[b+69|0];if(!((d|0)!=0|l)){d=xa(e+16|0,2543);q=Ra(h,c,2,d);va(d);if(!q){break u}d=I[b+69|0]}q=(d&255)!=0|l;if(q|(f|0)!=92){break t}g=92;i=1;break p}mc(j,1,92);break s}w=I[b+68|0];if((q^1)&(f|0)==34){if(!w){F[b+68|0]=1;g=34;F[b+112|0]=34;break p}g=34;if(I[b+112|0]!=34){break p}F[b+68|0]=0;break p}if(w){break q}v:{w:{x:{y:{z:{A:{B:{C:{if(!(q&1)){if(!Ra(h,c,2,22188)){break C}d=I[b+69|0]}if(!((d&255)!=0|l)){if(!Ra(h,c,2,22200)){break B}d=I[b+69|0]}if(d&255|l){if(!Ra(h,c,2,22212)){F[b+69|0]=0;mc(j,1,47);c=c+1|0;break q}if(I[b+69|0]){break q}}if(l){g=f;l=1;break p}d=91;D:{E:{switch((f&255)-123|0){case 2:d=93;break D;case 0:break D;default:break E}}l=nd(h,c,21824);i=nd(h,c,21812);if(l){Eb(e+16|0,l,1);Bd(j,e+16|0);va(e+16|0);c=(wa(l)+c|0)-1|0;d=125;if((l|0)!=22992){break D}H[b+72>>2]=H[b+72>>2]-1;break D}if(!i){d=f;break D}Eb(e+16|0,i,1);Bd(j,e+16|0);va(e+16|0);c=(wa(i)+c|0)-1|0;d=123;if(!((i|0)!=22752?(i|0)==22740|(i|0)==22728:1)){break D}H[b+72>>2]=H[b+72>>2]+1}f=I[b+114|0];F[b+114|0]=d;F[b+113|0]=f;if(!(md(d)|(d|0)==44|(d&255)==59)){F[b+116|0]=I[b+115|0];F[b+115|0]=d}f=b;if(I[b+78|0]){F[b+78|0]=0;i=H[Qa(H[b+24>>2])>>2]}else{i=0}H[f+60>>2]=i;F:{G:{H:{I:{J:{f=d&255;switch(f-40|0){case 1:break H;case 0:break I;default:break J}}switch(f-91|0){case 1:break F;case 2:break H;case 0:break I;default:break G}}H[b+96>>2]=H[b+96>>2]+1;f=H[b+40>>2];H[e+16>>2]=Pa(H[b+36>>2]);ya(f,e+16|0);if(H[b+60>>2]){ug(b,h,c,n,H[b+92>>2],1);break w}i=0;ug(b,h,c,n,0,1);break v}f=H[o>>2]-1|0;H[o>>2]=f;if(!f){F[b+87|0]=0;d=32}i=0;if(mb(H[b+40>>2])){break v}f=H[Qa(H[b+40>>2])>>2];ob(H[b+40>>2]);if((Pa(H[b+36>>2])|0)>(f|0)){while(1){ob(H[b+36>>2]);if((Pa(H[b+36>>2])|0)>(f|0)){continue}break}}if(mb(H[b+44>>2])){break v}f=H[Qa(H[b+44>>2])>>2];ob(H[b+44>>2]);n=v?f:c?n:f;break v}if((f|0)==123){break x}}K:{if((g&255)!=32){break K}g=nd(h,c,21788);H[e>>2]=g;if(!g){break K}F[b+78|0]=1;g=0;if(!mb(H[b+28>>2])){g=H[Qa(H[b+28>>2])>>2]}f=H[e>>2];if(!((f|0)!=21924|(p|0)!=21936)){ob(H[b+24>>2]);break y}if(!g|(f|0)!=21936){break y}f=tg(g,21924);if((f|0)==-1){break y}i=0;f=Pa(g)+(f^-1)|0;if((f|0)>0){break A}break z}i=1;L:{M:{N:{O:{P:{Q:{switch(f-58|0){case 0:if(H[o>>2]){break L}R:{switch(I[b+113|0]-123|0){case 0:case 2:break L;default:break R}}F[b+114|0]=59;if(H[b+72>>2]>=1){F[b+78|0]=1;f=H[b+24>>2];p=22728;H[e+16>>2]=22728;ya(f,e+16|0);break L}if(I[b+76|0]){F[b+76|0]=0;break L}k=I[b+85|0]?k-1|0:0;break L;default:if(H[o>>2]<1){break P}i=0;if((d|0)!=44){break P}break;case 5:break M;case 1:break Q}}S:{if(mb(H[b+40>>2])){break S}if((H[Qa(H[b+40>>2])>>2]+(H[b+96>>2]>0)|0)>=(Pa(H[b+36>>2])|0)){break S}while(1){ob(H[b+36>>2]);if((H[Qa(H[b+40>>2])>>2]+(H[b+96>>2]>0)|0)<(Pa(H[b+36>>2])|0)){continue}break}}if(!i){break P}if((d|0)!=125?H[o>>2]:0){break L}F[b+76|0]=0;if((d|0)==125){break O}break N}if((d|0)!=125){break L}F[b+76|0]=0}if(!mb(H[b+40>>2])){ob(H[b+40>>2])}if(!mb(H[b+32>>2])){H[b+96>>2]=H[Qa(H[b+32>>2])>>2];ob(H[b+32>>2])}t=t+1|0;d=32;x=1;if((tg(H[b+24>>2],22164)|0)==-1){break N}if(H[Qa(H[b+24>>2])>>2]!=22164){while(1){ob(H[b+24>>2]);if(H[Qa(H[b+24>>2])>>2]!=22164){continue}break}}ob(H[b+24>>2]);if(mb(H[b+28>>2])){break N}f=H[Qa(H[b+28>>2])>>2];ob(H[b+28>>2]);if(!f){break N}Ba(Va(f))}T:{if(mb(H[Qa(H[b+28>>2])>>2])){break T}if(mb(H[Qa(H[b+28>>2])>>2])){break T}while(1){ob(H[Qa(H[b+28>>2])>>2]);if(!mb(H[Qa(H[b+28>>2])>>2])){continue}break}}U:{if(mb(H[b+24>>2])){break U}while(1){if(H[Qa(H[b+24>>2])>>2]==22164){break U}xc(H[Qa(H[b+28>>2])>>2],Qa(H[b+24>>2]));ob(H[b+24>>2]);if(!mb(H[b+24>>2])){continue}break}}i=0;if((d|0)!=59){break v}F[b+77|0]=0;d=59;break r}F[b+76|0]=1}i=0;if(I[b+77|0]|c){break v}c=0;if(!(H[b+96>>2]|H[b+72>>2])){g=1;i=-1;if(md(F[Aa(h,0)|0])){V:{W:{while(1){c=c+1|0;if((m|0)==(c|0)){break W}if(md(F[Aa(h,c)|0])){continue}break}f=c;break V}f=m}g=(c|0)<(m|0)}else{f=0}g=f-(g^1)|0;X:{if((m|0)<=(g|0)){break X}while(1){if(!Db(F[Aa(h,g)|0])){i=0;break X}g=g+1|0;if((m|0)>(g|0)){continue}break}g=m}c=g+i|0;f=xa(e+16|0,Ca(h)+c|0);ug(b,f,0,n,c,0);va(f);F[b+77|0]=1;c=0}i=0;break r}l=1;mc(j,1,47);c=c+1|0;break q}F[b+69|0]=1;mc(j,1,42);break s}while(1){xc(H[b+24>>2],Qa(g));ob(g);i=i+1|0;if((f|0)!=(i|0)){continue}break}}k=(x?0:f)+k|0}xc(H[b+24>>2],e);if((tg(21800,H[e>>2])|0)==-1){F[b+87|0]=1}p=H[e>>2];Eb(e+16|0,p,1);Bd(j,e+16|0);va(e+16|0);c=(wa(H[e>>2])+c|0)-1|0;break w}xc(H[b+32>>2],o);d=H[b+40>>2];H[e+16>>2]=Pa(H[b+36>>2]);ya(d,e+16|0);i=0;F[b+77|0]=0;H[b+96>>2]=0;d=H[b+28>>2];f=Na(12);Sa(f);H[e+16>>2]=f;ya(d,e+16|0);d=H[b+24>>2];p=22164;H[e+16>>2]=22164;ya(d,e+16|0);r=r+1|0;d=123;break r}i=0}break r}c=c+1|0;d=f}g=d;l=0;break p}g=f}v=0;c=c+1|0;if((m|0)>(c|0)){continue}break}}d=nd(j,0,21812);f=nd(j,0,21824);Y:{if(u){break Y}Z:{if(I[b+84|0]){break Z}if(!wa(j)|!d|((r|0)==(t|0)?(r|0)>=1:0)){break Z}if(Pa(H[b+24>>2])>>>0>=2){c=H[b+24>>2];if(H[lc(c,Pa(c)-2|0)>>2]==22164){break Z}}k=k-1|0;break Y}if(!(!wa(j)|!f)){k=k-1|0;break Y}if(!wa(j)|(r|0)<1|(r|0)!=(t|0)){break Y}c=H[b+64>>2];k=k-((c|0)!=0&(c|0)!=22164)|0}c=(k|0)>0?k:0;_:{if(!I[b+83|0]){break _}if(!wa(j)){break _}c=((d|f)!=0)+c|0}if(I[b+79|0]){if(I[Aa(j,0)|0]==(s|0)){d=xa(e,Ca(j)+1|0);cf(e+16|0,d);va(d);d=xa(e,2337);f=Ra(e+16|0,0,6,d);va(d);if(!f){$:{if(!mb(H[b+36>>2])){if(H[Qa(H[b+36>>2])>>2]>0){break $}}c=c-1|0}H[b+132>>2]=c}va(e+16|0)}c=c-H[b+132>>2]|0}H[b+120>>2]=n;c=(c|0)>0?c:0;H[b+124>>2]=c;d=e;f=b;if(I[b+89|0]){g=H[b+100>>2];m=(n|0)/(g|0)|0;c=m+c|0;n=n-N(g,m)|0}dk(d,f,n,c);Ue(e+16|0,e,j);Ua(j,e+16|0);va(e+16|0);va(e);if(p){H[b+64>>2]=p}Vd(a,j)}va(j);va(h);oa=e- -64|0}function lj(a,b,c,d,e,f,g,h,i){var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,I=0,J=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0;k=oa-336|0;oa=k;m=h;n=i&65535;o=d;q=e&65535;t=(e^i)&-2147483648;z=i>>>16&32767;C=e>>>16&32767;a:{b:{if(z-1>>>0<32766?C-1>>>0<=32765:0){break b}u=e&2147483647;l=u;j=d;if(!(!j&(l|0)==2147418112?!(b|c):l>>>0<2147418112)){D=d;t=e|32768;break a}u=i&2147483647;e=u;d=h;if(!(!d&(e|0)==2147418112?!(f|g):e>>>0<2147418112)){D=h;t=i|32768;b=f;c=g;break a}if(!(b|j|(l^2147418112|c))){if(!(d|f|(e^2147418112|g))){b=0;c=0;t=2147450880;break a}t=t|2147418112;b=0;c=0;break a}if(!(d|f|(e^2147418112|g))){b=0;c=0;break a}if(!(b|j|(c|l))){b=!(d|f|(e|g));D=b?0:D;t=b?2147450880:t;b=0;c=0;break a}if(!(d|f|(e|g))){t=t|2147418112;b=0;c=0;break a}if((l|0)==65535|l>>>0<65535){i=b;d=!(o|q);h=d<<6;j=Q(d?b:o)+32|0;b=Q(d?c:q);b=h+((b|0)==32?j:b)|0;xb(k+320|0,i,c,o,q,b-15|0);p=16-b|0;o=H[k+328>>2];q=H[k+332>>2];c=H[k+324>>2];b=H[k+320>>2]}if(e>>>0>65535){break b}d=!(m|n);e=d<<6;h=Q(d?f:m)+32|0;d=Q(d?g:n);d=e+((d|0)==32?h:d)|0;xb(k+304|0,f,g,m,n,d-15|0);p=(d+p|0)-16|0;m=H[k+312>>2];n=H[k+316>>2];f=H[k+304>>2];g=H[k+308>>2]}e=n|65536;B=e;u=m;d=m;j=e<<15|d>>>17;d=d<<15|g>>>17;h=0-d|0;e=j;i=1963258675-(j+((d|0)!=0)|0)|0;rb(k+288|0,d,j,0,0,h,i,0,0);j=H[k+296>>2];rb(k+272|0,0-j|0,0-(H[k+300>>2]+((j|0)!=0)|0)|0,0,0,h,i,0,0);h=H[k+280>>2];i=h<<1|H[k+276>>2]>>>31;h=H[k+284>>2]<<1|h>>>31;rb(k+256|0,i,h,0,0,d,e,0,0);j=h;h=H[k+264>>2];rb(k+240|0,i,j,0,0,0-h|0,0-(H[k+268>>2]+((h|0)!=0)|0)|0,0,0);h=H[k+248>>2];l=H[k+252>>2]<<1|h>>>31;i=h<<1|H[k+244>>2]>>>31;h=l;rb(k+224|0,i,h,0,0,d,e,0,0);h=H[k+232>>2];rb(k+208|0,i,l,0,0,0-h|0,0-(H[k+236>>2]+((h|0)!=0)|0)|0,0,0);h=H[k+216>>2];i=h<<1|H[k+212>>2]>>>31;h=H[k+220>>2]<<1|h>>>31;rb(k+192|0,i,h,0,0,d,e,0,0);j=h;h=H[k+200>>2];rb(k+176|0,i,j,0,0,0-h|0,0-(H[k+204>>2]+((h|0)!=0)|0)|0,0,0);j=d;h=H[k+184>>2];l=H[k+188>>2]<<1|h>>>31;d=h<<1|H[k+180>>2]>>>31;i=d-1|0;l=l-(d>>>0<1)|0;rb(k+160|0,j,e,0,0,i,l,0,0);e=f;rb(k+144|0,e<<15,g<<15|e>>>17,0,0,i,l,0,0);h=H[k+172>>2];n=H[k+160>>2];e=H[k+152>>2];d=n+e|0;m=H[k+164>>2];j=m+H[k+156>>2]|0;j=d>>>0>>0?j+1|0:j;e=d;d=j;n=(m|0)==(j|0)&n>>>0>e>>>0|j>>>0>>0;m=n+H[k+168>>2]|0;j=h;j=m>>>0>>0?j+1|0:j;h=m;m=!d&e>>>0>1|(d|0)!=0;h=h+m|0;j=h>>>0>>0?j+1|0:j;rb(k+112|0,i,l,0,0,0-h|0,0-(((h|0)!=0)+j|0)|0,0,0);rb(k+128|0,1-e|0,0-((e>>>0>1)+d|0)|0,0,0,i,l,0,0);O=(C-z|0)+p|0;e=H[k+116>>2];x=e;d=H[k+112>>2];j=e<<1|d>>>31;m=d<<1;n=j;e=j;i=H[k+140>>2];E=i;h=H[k+136>>2];j=i<<1|h>>>31;i=h<<1|H[k+132>>2]>>>31;d=i+m|0;l=e+j|0;l=d>>>0>>0?l+1|0:l;i=d;d=l;e=i;j=d-(e>>>0<13927)|0;e=e-13927|0;l=j;F=j;h=0;p=h;j=q|65536;z=j;C=o;v=(j&2147483647)<<1|o>>>31;y=Eq(l,h,v,0);h=pa;r=y;s=h;h=c;J=(h&2147483647)<<1|b>>>31;G=J;w=0;l=(d|0)==(l|0)&e>>>0>>0|d>>>0>l>>>0;m=(d|0)==(n|0)&i>>>0>>0|d>>>0>>0;d=H[k+120>>2];j=H[k+124>>2]<<1|d>>>31;i=E>>>31|0;d=i+(d<<1|x>>>31)|0;j=d>>>0>>0?j+1|0:j;h=d;d=m+d|0;j=d>>>0>>0?j+1|0:j;i=d;d=l+d|0;h=d>>>0>>0?j+1|0:j;i=d-1|0;A=h-(d>>>0<1)|0;m=0;h=Eq(G,w,A,m);d=h+r|0;j=pa+s|0;j=d>>>0>>0?j+1|0:j;h=j;r=(s|0)==(j|0)&d>>>0>>0|j>>>0>>0;j=0;y=j;x=j;R=0;j=o;P=c>>>31|0;G=P|j<<1;L=0;q=Eq(i,x,G,L);l=q+d|0;j=pa+h|0;j=l>>>0>>0?j+1|0:j;n=l;q=j;j=(h|0)==(j|0)&d>>>0>l>>>0|h>>>0>j>>>0;d=j+r|0;h=0;h=d>>>0>>0?1:h;l=Eq(v,I,A,m);d=l+d|0;j=pa+h|0;h=d>>>0>>0?j+1|0:j;o=Eq(v,I,i,x);l=pa;s=d;x=Eq(A,m,G,L);d=x+o|0;j=pa+l|0;j=d>>>0>>0?j+1|0:j;r=d;d=j;j=(l|0)==(j|0)&o>>>0>r>>>0|j>>>0>>0;o=s+d|0;l=h+j|0;l=o>>>0>>0?l+1|0:l;s=o;o=0;d=o+n|0;j=q+r|0;j=d>>>0>>0?j+1|0:j;h=j;o=(q|0)==(j|0)&n>>>0>d>>>0|j>>>0>>0;q=s+o|0;j=l;M=q;l=o>>>0>q>>>0?j+1|0:j;s=d;n=h;o=b<<1;q=c<<1|b>>>31;N=o&-2;r=Eq(i,y,N,0);h=pa;x=e;e=Eq(e,0,G,L);d=e+r|0;j=pa+h|0;j=d>>>0>>0?j+1|0:j;r=(h|0)==(j|0)&d>>>0>>0|h>>>0>j>>>0;h=d;e=j;S=r;E=Eq(F,p,J,w);d=E+d|0;j=pa+j|0;j=d>>>0>>0?j+1|0:j;E=d;r=d;d=j;j=(j|0)==(e|0)&h>>>0>r>>>0|e>>>0>j>>>0;e=S+j|0;h=0;h=e>>>0>>0?1:h;r=e;e=s+e|0;j=h+n|0;j=e>>>0>>0?j+1|0:j;r=e;h=e;e=j;n=(j|0)==(n|0)&h>>>0>>0|j>>>0>>0;h=n+M|0;j=l;M=h;n=h>>>0>>0?j+1|0:j;I=Eq(v,I,x,T);v=pa;l=Eq(A,m,N,U);h=l+I|0;j=pa+v|0;j=h>>>0>>0?j+1|0:j;A=h;l=Eq(J,w,i,y);i=h+l|0;h=j;j=j+pa|0;j=i>>>0>>0?j+1|0:j;m=i;y=Eq(F,p,G,L);i=i+y|0;l=j+pa|0;l=i>>>0>>0?l+1|0:l;y=i;i=l;l=0;s=(i|0)==(j|0)&y>>>0>>0|i>>>0>>0;m=(h|0)==(j|0)&A>>>0>m>>>0|h>>>0>j>>>0;j=m+((h|0)==(v|0)&I>>>0>A>>>0|h>>>0>>0)|0;h=0;m=s+j|0;j=m;h=r+i|0;j=(j|l)+e|0;j=h>>>0>>0?j+1|0:j;s=h;m=j;h=(e|0)==(j|0)&h>>>0>>0|e>>>0>j>>>0;e=h+M|0;j=n;A=e;n=e>>>0>>0?j+1|0:j;r=s;v=E;F=Eq(F,p,N,U);p=pa;h=Eq(J,w,x,T);e=h+F|0;j=pa+p|0;j=e>>>0>>0?j+1|0:j;l=j;j=0;h=(l|0)==(p|0)&e>>>0>>0|l>>>0

>>0;e=l+v|0;j=(h|j)+d|0;j=e>>>0>>0?j+1|0:j;h=e;s=(d|0)==(j|0)&h>>>0>>0|d>>>0>j>>>0;l=j+y|0;p=0;i=p+h|0;d=i;l=d>>>0

>>0?l+1|0:l;e=(j|0)==(l|0)&d>>>0>>0|j>>>0>l>>>0;d=s+e|0;j=0;j=d>>>0>>0?1:j;e=d;d=d+r|0;j=j+m|0;j=d>>>0>>0?j+1|0:j;e=j;i=(m|0)==(j|0)&d>>>0>>0|j>>>0>>0;h=i+A|0;l=n;l=h>>>0>>0?l+1|0:l;i=l;c:{if((i|0)==131071|i>>>0<131071){j=C;l=z<<1|j>>>31;C=P|j<<1;z=l|R;rb(k+80|0,d,e,h,i,f,g,u,B);l=b<<17;b=0;c=H[k+88>>2];m=b-c|0;j=H[k+80>>2];n=H[k+84>>2];p=(j|0)!=0|(n|0)!=0;w=m-p|0;p=(l-(H[k+92>>2]+(b>>>0>>0)|0)|0)-(m>>>0

>>0)|0;m=0-j|0;n=0-(((j|0)!=0)+n|0)|0;b=O+16382|0;break c}d=(e&1)<<31|d>>>1;j=h<<31|e>>>1;e=j;h=(i&1)<<31|h>>>1;i=i>>>1|0;rb(k+96|0,d,j,h,i,f,g,u,B);o=0;m=H[k+104>>2];n=o-m|0;j=H[k+96>>2];q=H[k+100>>2];p=(j|0)!=0|(q|0)!=0;w=n-p|0;p=((b<<16)-(H[k+108>>2]+(m>>>0>o>>>0)|0)|0)-(n>>>0

>>0?j+1|0:j;p=b;b=j;j=(f|0)==(j|0)&k>>>0>p>>>0|f>>>0>j>>>0;k=b+r|0;e=e+j|0;e=k>>>0>>0?e+1|0:e;r=k;k=0;b=k+F|0;j=d+p|0;j=b>>>0>>0?j+1|0:j;f=j;k=(d|0)==(j|0)&b>>>0>>0|d>>>0>j>>>0;d=r+k|0;j=e;B=d;d=d>>>0>>0?j+1|0:j;p=b;k=f;f=(o|0)==(s|0)&R>>>0>K>>>0|o>>>0>s>>>0;e=f+((o|0)==(E|0)&P>>>0>R>>>0|o>>>0>>0)|0;f=e;e=f+((c|0)==(s|0)&A>>>0>>0|c>>>0>>0)|0;f=e;b=c+b|0;e=f+k|0;e=b>>>0>>0?e+1|0:e;o=b;c=b;b=e;e=(e|0)==(k|0)&c>>>0

>>0|e>>>0>>0;c=e+B|0;j=d;j=c>>>0>>0?j+1|0:j;d=c;k=d;e=(m|0)==(x|0)&q>>>0>I>>>0|m>>>0>x>>>0;d=e+((m|0)==(w|0)&q>>>0>>0|m>>>0>>0)|0;f=0;f=d>>>0>>0?1:f;m=d;d=d+o|0;e=b+f|0;e=d>>>0>>0?e+1|0:e;c=(b|0)==(e|0)&d>>>0>>0|b>>>0>e>>>0;b=k+c|0;j=b>>>0>>0?j+1|0:j;c=j;c:{if(j&65536){t=t+1|0;break c}m=g>>>31|0;j=c<<1|b>>>31;b=b<<1|e>>>31;c=j;j=e<<1|d>>>31;d=d<<1|i>>>31;e=j;o=u;j=g<<1|o>>>31;u=o<<1;g=j;j=i<<1|h>>>31;h=h<<1|m;i=j}if((t|0)>=32767){n=n|2147418112;b=0;c=0;break a}d:{if((t|0)<=0){f=1-t|0;if(f>>>0>=128){b=0;c=0;break a}j=t+127|0;xb(l+48|0,u,g,h,i,j);xb(l+32|0,d,e,b,c,j);hd(l+16|0,u,g,h,i,f);hd(l,d,e,b,c,f);u=(H[l+48>>2]|H[l+56>>2])!=0|(H[l+52>>2]|H[l+60>>2])!=0|(H[l+32>>2]|H[l+16>>2]);g=H[l+36>>2]|H[l+20>>2];h=H[l+40>>2]|H[l+24>>2];i=H[l+44>>2]|H[l+28>>2];d=H[l>>2];e=H[l+4>>2];c=H[l+12>>2];b=H[l+8>>2];break d}c=c&65535|t<<16}y=b|y;n=c|n;if(!(!h&(i|0)==-2147483648?!(g|u):(i|0)>-1)){j=e;b=d+1|0;j=b>>>0<1?j+1|0:j;f=b;c=j;f=(e|0)==(j|0)&d>>>0>f>>>0|e>>>0>j>>>0;d=f+y|0;e=n;y=d;n=d>>>0>>0?e+1|0:e;break a}if(h|u|(i^-2147483648|g)){b=d;c=e;break a}c=d&1;b=c+d|0;j=e;j=b>>>0>>0?j+1|0:j;f=b;c=j;e=(e|0)==(j|0)&d>>>0>f>>>0|e>>>0>j>>>0;d=e+y|0;j=n;y=d;n=d>>>0>>0?j+1|0:j}H[a>>2]=b;H[a+4>>2]=c;H[a+8>>2]=y;H[a+12>>2]=n;oa=l+96|0}function ne(a,b,c){var d=0,e=0,f=0,g=0;e=oa-112|0;oa=e;a:{b:{if(!Ma(b,1813)){if(!Ma(b,2282)){break b}}F[21068]=0;a=1;break a}c:{if(wa(b)>>>0<7){break c}d=xa(e+96|0,2663);f=Ra(b,0,7,d);va(d);if(f){break c}Eb(e+96|0,b,7);if(wa(e+96|0)){bf(21760,e+96|0)}va(e+96|0);a=1;break a}if(Ma(b,1926)){he(a,0);Nd(a,4);ce(a,2);a=1;break a}if(Ma(b,1252)){xg(a,1);Nd(a,2);ce(a,2);a=1;break a}if(Ma(b,1558)){he(a,0);Nd(a,4);ce(a,1);a=1;break a}d:{e:{f:{g:{h:{f=wa(b);if(f){d=xa(e+96|0,1358);if(!Ra(b,0,1,d)){va(d);break f}if(wa(b)>>>0<11){break h}break g}if(wa(b)>>>0>=11){break g}break e}va(d);break e}d=xa(e+80|0,2751);g=Ra(b,0,11,d);va(d);if(f){va(e+96|0)}if(g){break e}}i:{if(!wa(b)){Eb(e+80|0,b,11);break i}d=xa(e- -64|0,1358);Eb(e+80|0,b,Ra(b,0,1,d)?11:1);va(d)}if(!wa(e+80|0)){d=4;break d}d=be(Ca(e+80|0));if(d){break d}Ha(Tb(Tb(H[5266],c),b));va(e+80|0);a=0;break a}j:{k:{l:{m:{n:{f=wa(b);if(f){d=xa(e+80|0,2573);if(!Ra(b,0,1,d)){va(d);break l}if(wa(b)>>>0<17){break n}break m}if(wa(b)>>>0>=17){break m}break k}va(d);break k}d=xa(e- -64|0,2745);g=Ra(b,0,17,d);va(d);if(f){va(e+80|0)}if(g){break k}}o:{if(!wa(b)){Eb(e- -64|0,b,17);break o}d=xa(e+48|0,2573);Eb(e- -64|0,b,Ra(b,0,1,d)?17:1);va(d)}if(!wa(e- -64|0)){d=4;break j}d=be(Ca(e- -64|0));if(d){break j}Ha(Tb(Tb(H[5266],c),b));va(e- -64|0);a=0;break a}p:{if(wa(b)>>>0<10){break p}d=xa(e- -64|0,2510);f=Ra(b,0,10,d);va(d);if(f){break p}vg(a,4,0);a=1;break a}q:{r:{s:{t:{u:{f=wa(b);if(f){d=xa(e- -64|0,1521);if(!Ra(b,0,1,d)){va(d);break s}if(wa(b)>>>0<14){break u}break t}if(wa(b)>>>0>=14){break t}break r}va(d);break r}d=xa(e+48|0,2730);g=Ra(b,0,14,d);va(d);if(f){va(e- -64|0)}if(g){break r}}v:{if(!wa(b)){Eb(e+48|0,b,14);break v}d=xa(e+32|0,1521);Eb(e+48|0,b,Ra(b,0,1,d)?14:1);va(d)}if(!wa(e+48|0)){d=4;break q}d=be(Ca(e+48|0));if(d){break q}Ha(Tb(Tb(H[5266],c),b));va(e+48|0);a=0;break a}w:{if(wa(b)>>>0<13){break w}d=xa(e+48|0,1496);f=Ra(b,0,13,d);va(d);if(f){break w}Nd(a,4);a=1;break a}x:{y:{z:{A:{B:{f=wa(b);if(f){d=xa(e+48|0,2611);if(!Ra(b,0,1,d)){va(d);break z}if(wa(b)>>>0<23){break B}break A}if(wa(b)>>>0>=23){break A}break y}va(d);break y}d=xa(e+32|0,2671);g=Ra(b,0,23,d);va(d);if(f){va(e+48|0)}if(g){break y}}C:{if(!wa(b)){Eb(e+32|0,b,23);break C}d=xa(e+16|0,2611);Eb(e+32|0,b,Ra(b,0,1,d)?23:1);va(d)}if(!wa(e+32|0)){d=40;break x}d=be(Ca(e+32|0));if(d){break x}Ha(Tb(Tb(H[5266],c),b));va(e+32|0);a=0;break a}D:{E:{F:{G:{H:{f=wa(b);if(f){d=xa(e+32|0,1824);if(!Ra(b,0,1,d)){va(d);break F}if(wa(b)>>>0<23){break H}break G}if(wa(b)>>>0>=23){break G}break E}va(d);break E}d=xa(e+16|0,2695);g=Ra(b,0,23,d);va(d);if(f){va(e+32|0)}if(g){break E}}I:{if(!wa(b)){Eb(e+16|0,b,23);break I}d=xa(e,1824);Eb(e+16|0,b,Ra(b,0,1,d)?23:1);va(d)}if(!wa(e+16|0)){d=0;break D}d=be(Ca(e+16|0));if(d){break D}Ha(Tb(Tb(H[5266],c),b));va(e+16|0);a=0;break a}J:{if(!Ma(b,2655)){if(!Ma(b,1392)){break J}}he(a,1);a=1;break a}K:{if(!Ma(b,2632)){if(!Ma(b,1417)){break K}}xg(a,1);a=1;break a}L:{if(!Ma(b,2531)){if(!Ma(b,1911)){break L}}ce(a,2);a=1;break a}M:{if(!Ma(b,2535)){if(!Ma(b,1967)){break M}}ce(a,1);a=1;break a}N:{if(!Ma(b,2601)){if(!Ma(b,1431)){break N}}F[a+225|0]=0;a=1;break a}O:{if(!Ma(b,1683)){if(!Ma(b,1367)){break O}}F[a+227|0]=0;a=1;break a}if(Ma(b,1797)){Hj(a);a=1;break a}P:{if(!Ma(b,1886)){if(!Ma(b,1901)){break P}}Gj(a);a=1;break a}Q:{if(!Ma(b,2599)){if(!Ma(b,1866)){break Q}}Ij(a);Hj(a);Gj(a);a=1;break a}R:{if(!Ma(b,1681)){if(!Ma(b,1575)){break R}}Ij(a);a=1;break a}S:{if(!Ma(b,2651)){if(!Ma(b,1479)){break S}}jk(a,1);a=1;break a}if(Ma(b,1534)){ik(a,1);a=1;break a}if(Ma(b,1510)){F[a+212|0]=1;a=1;break a}if(Ma(b,1849)){Fj(a);F[a+235|0]=1;a=1;break a}if(Ma(b,1452)){Fj(a);a=1;break a}if(Ma(b,1465)){F[a+229|0]=1;a=1;break a}T:{if(!Ma(b,2571)){if(!Ma(b,1266)){break T}}H[5266]=27584;a=1;break a}U:{if(!Ma(b,1250)){if(!Ma(b,1774)){break U}}Ha(Tb(za(H[5266],3129),21772));a=1;break a}Ha(Tb(Tb(H[5266],c),b));a=0;break a}F[a+88|0]=1;H[a+92>>2]=d;va(e+16|0);a=1;break a}kk(a,d);va(e+32|0);a=1;break a}Nd(a,d);va(e+48|0);a=1;break a}vg(a,d,1);va(e- -64|0);a=1;break a}vg(a,d,0);va(e+80|0);a=1}oa=e+112|0;return a}function li(a,b,c,d,e,f,g,h,i,j,k){var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;l=oa-560|0;oa=l;H[l+548>>2]=k;H[l+552>>2]=b;H[l+104>>2]=152;q=Ya(l+136|0,l+144|0,l+104|0);b=H[q>>2];H[l+132>>2]=b;H[l+128>>2]=b+400;t=Ea(l+104|0);p=Ea(l+88|0);n=Ea(l+72|0);o=Ea(l+56|0);r=Ea(l+40|0);b=t;k=p;s=n;u=o;m=oa-16|0;oa=m;v=l;a:{if(c){c=ii(d);Oc(m,c);d=H[m>>2];F[l+120|0]=d;F[l+121|0]=d>>>8;F[l+122|0]=d>>>16;F[l+123|0]=d>>>24;Nc(m,c);Ua(u,m);va(m);fc(m,c);Ua(s,m);va(m);F[l+119|0]=ec(c);F[l+118|0]=Hb(c);Gb(m,c);Ua(b,m);va(m);gc(m,c);Ua(k,m);va(m);b=Mc(c);break a}c=hi(d);Oc(m,c);d=H[m>>2];F[l+120|0]=d;F[l+121|0]=d>>>8;F[l+122|0]=d>>>16;F[l+123|0]=d>>>24;Nc(m,c);Ua(u,m);va(m);fc(m,c);Ua(s,m);va(m);F[l+119|0]=ec(c);F[l+118|0]=Hb(c);Gb(m,c);Ua(b,m);va(m);gc(m,c);Ua(k,m);va(m);b=Mc(c)}H[v+36>>2]=b;oa=m+16|0;H[j>>2]=H[i>>2];s=e&512;u=s>>>9|0;b=0;c=0;while(1){k=c;b:{c:{d:{e:{if((b|0)==4){break e}if(!Bb(a,l+552|0)){break e}e=0;f:{g:{h:{i:{j:{switch(F[(l+120|0)+b|0]){case 1:if((b|0)==3){break c}if(dc(h,8192,bb(a))){ki(l+24|0,a);Od(r,F[l+24|0]);break i}H[f>>2]=H[f>>2]|4;a=0;break d;case 3:break h;case 0:break j;case 4:break f;case 2:break g;default:break b}}if((b|0)==3){break c}}while(1){if(!Bb(a,l+552|0)){break c}if(!dc(h,8192,bb(a))){break c}ki(l+24|0,a);Od(r,F[l+24|0]);continue}}if((wa(n)|0)==(0-wa(o)|0)){break c}k:{if(wa(n)){if(wa(o)){break k}}d=wa(n);c=bb(a);if(d){if(I[Aa(n,0)|0]==(c&255)){ib(a);c=wa(n)>>>0>1?n:k;break b}F[g|0]=1;break c}if(I[Aa(o,0)|0]!=(c&255)){break c}ib(a);F[g|0]=1;c=wa(o)>>>0>1?o:k;break b}if((bb(a)&255)==I[Aa(n,0)|0]){ib(a);c=wa(n)>>>0>1?n:k;break b}if((bb(a)&255)==I[Aa(o,0)|0]){ib(a);F[g|0]=1;c=wa(o)>>>0>1?o:k;break b}H[f>>2]=H[f>>2]|4;a=0;break d}if(!(k|b>>>0<2)){c=0;if(!(u|(b|0)==2&I[l+123|0]!=0)){break b}}H[l+16>>2]=Ob(p);c=ge(l+24|0,l+16|0);l:{if(!b|I[(b+l|0)+119|0]>1){break l}while(1){m:{H[l+16>>2]=Vc(p);if(!zb(c,l+16|0)){break m}if(!dc(h,8192,F[H[c>>2]])){break m}Wd(c);continue}break}H[l+16>>2]=Ob(p);c=H[c>>2]-H[l+16>>2]|0;if(wa(r)>>>0>=c>>>0){H[l+16>>2]=Vc(r);d=gi(l+16|0,0-c|0);e=Vc(r);m=Ob(p);c=oa-32|0;oa=c;H[c+16>>2]=e;H[c+24>>2]=d;H[c+8>>2]=m;while(1){d=zb(c+24|0,c+16|0);if(!(!d|I[H[c+24>>2]]!=I[H[c+8>>2]])){Wd(c+24|0);Wd(c+8|0);continue}break}oa=c+32|0;if(d^1){break l}}H[l+8>>2]=Ob(p);ge(l+16|0,l+8|0);H[l+24>>2]=H[l+16>>2]}H[l+16>>2]=H[l+24>>2];while(1){n:{H[l+8>>2]=Vc(p);if(!zb(l+16|0,l+8|0)){break n}if(!Bb(a,l+552|0)){break n}if((bb(a)&255)!=I[H[l+16>>2]]){break n}ib(a);Wd(l+16|0);continue}break}if(!s){break c}H[l+8>>2]=Vc(p);if(!zb(l+16|0,l+8|0)){break c}H[f>>2]=H[f>>2]|4;a=0;break d}while(1){o:{if(!Bb(a,l+552|0)){break o}c=bb(a);p:{if(dc(h,2048,c)){d=H[j>>2];if((d|0)==H[l+548>>2]){ji(i,j,l+548|0);d=H[j>>2]}H[j>>2]=d+1;F[d|0]=c;e=e+1|0;break p}if(!wa(t)|!e|I[l+118|0]!=(c&255)){break o}c=H[l+132>>2];if((c|0)==H[l+128>>2]){xd(q,l+132|0,l+128|0);c=H[l+132>>2]}H[l+132>>2]=c+4;H[c>>2]=e;e=0}ib(a);continue}break}c=H[l+132>>2];if(!(!e|(c|0)==H[q>>2])){if(H[l+128>>2]==(c|0)){xd(q,l+132|0,l+128|0);c=H[l+132>>2]}H[l+132>>2]=c+4;H[c>>2]=e}q:{if(H[l+36>>2]<1){break q}r:{if(!kb(a,l+552|0)){if((bb(a)&255)==I[l+119|0]){break r}}H[f>>2]=H[f>>2]|4;a=0;break d}while(1){ib(a);if(H[l+36>>2]<1){break q}s:{if(!kb(a,l+552|0)){if(dc(h,2048,bb(a))){break s}}H[f>>2]=H[f>>2]|4;a=0;break d}if(H[j>>2]==H[l+548>>2]){ji(i,j,l+548|0)}c=bb(a);d=H[j>>2];H[j>>2]=d+1;F[d|0]=c;H[l+36>>2]=H[l+36>>2]-1;continue}}c=k;if(H[i>>2]!=H[j>>2]){break b}H[f>>2]=H[f>>2]|4;a=0;break d}t:{if(!k){break t}e=1;while(1){if(wa(k)>>>0<=e>>>0){break t}u:{if(!kb(a,l+552|0)){if((bb(a)&255)==I[Aa(k,e)|0]){break u}}H[f>>2]=H[f>>2]|4;a=0;break d}ib(a);e=e+1|0;continue}}a=1;if(H[q>>2]==H[l+132>>2]){break d}a=0;H[l+24>>2]=0;wb(t,H[q>>2],H[l+132>>2],l+24|0);if(H[l+24>>2]){H[f>>2]=H[f>>2]|4;break d}a=1}va(r);va(o);va(n);va(p);va(t);_a(q);oa=l+560|0;return a}c=k}b=b+1|0;continue}}function ei(a,b,c,d,e,f,g,h,i,j,k){var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;l=oa-560|0;oa=l;H[l+548>>2]=k;H[l+552>>2]=b;H[l+96>>2]=152;q=Ya(l+136|0,l+144|0,l+96|0);b=H[q>>2];H[l+132>>2]=b;H[l+128>>2]=b+400;t=Ea(l+96|0);p=bc(l+80|0);n=bc(l- -64|0);o=bc(l+48|0);r=bc(l+32|0);b=t;k=p;s=n;u=o;m=oa-16|0;oa=m;v=l;a:{if(c){c=ci(d);Oc(m,c);d=H[m>>2];F[l+120|0]=d;F[l+121|0]=d>>>8;F[l+122|0]=d>>>16;F[l+123|0]=d>>>24;Nc(m,c);qc(u,m);va(m);fc(m,c);qc(s,m);va(m);H[l+116>>2]=ec(c);H[l+112>>2]=Hb(c);Gb(m,c);Ua(b,m);va(m);gc(m,c);qc(k,m);va(m);b=Mc(c);break a}c=bi(d);Oc(m,c);d=H[m>>2];F[l+120|0]=d;F[l+121|0]=d>>>8;F[l+122|0]=d>>>16;F[l+123|0]=d>>>24;Nc(m,c);qc(u,m);va(m);fc(m,c);qc(s,m);va(m);H[l+116>>2]=ec(c);H[l+112>>2]=Hb(c);Gb(m,c);Ua(b,m);va(m);gc(m,c);qc(k,m);va(m);b=Mc(c)}H[v+28>>2]=b;oa=m+16|0;H[j>>2]=H[i>>2];s=e&512;u=s>>>9|0;b=0;c=0;while(1){k=c;b:{c:{d:{e:{if((b|0)==4){break e}if(!Ab(a,l+552|0)){break e}e=0;f:{g:{h:{i:{j:{switch(F[(l+120|0)+b|0]){case 1:if((b|0)==3){break c}if(cc(h,8192,ab(a))){di(l+16|0,a);mf(r,H[l+16>>2]);break i}H[f>>2]=H[f>>2]|4;a=0;break d;case 3:break h;case 0:break j;case 4:break f;case 2:break g;default:break b}}if((b|0)==3){break c}}while(1){if(!Ab(a,l+552|0)){break c}if(!cc(h,8192,ab(a))){break c}di(l+16|0,a);mf(r,H[l+16>>2]);continue}}if((wa(n)|0)==(0-wa(o)|0)){break c}k:{if(wa(n)){if(wa(o)){break k}}d=wa(n);c=ab(a);if(d){if((c|0)==H[Ca(n)>>2]){hb(a);c=wa(n)>>>0>1?n:k;break b}F[g|0]=1;break c}if((c|0)!=H[Ca(o)>>2]){break c}hb(a);F[g|0]=1;c=wa(o)>>>0>1?o:k;break b}if((ab(a)|0)==H[Ca(n)>>2]){hb(a);c=wa(n)>>>0>1?n:k;break b}if((ab(a)|0)==H[Ca(o)>>2]){hb(a);F[g|0]=1;c=wa(o)>>>0>1?o:k;break b}H[f>>2]=H[f>>2]|4;a=0;break d}if(!(k|b>>>0<2)){c=0;if(!(u|(b|0)==2&I[l+123|0]!=0)){break b}}H[l+8>>2]=Ob(p);c=ge(l+16|0,l+8|0);l:{if(!b|I[(b+l|0)+119|0]>1){break l}while(1){m:{H[l+8>>2]=Sc(p);if(!zb(c,l+8|0)){break m}if(!cc(h,8192,H[H[c>>2]>>2])){break m}od(c);continue}break}H[l+8>>2]=Ob(p);c=$j(c,l+8|0);if(wa(r)>>>0>=c>>>0){H[l+8>>2]=Sc(r);d=ai(l+8|0,0-c|0);e=Sc(r);m=Ob(p);c=oa-32|0;oa=c;H[c+16>>2]=e;H[c+24>>2]=d;H[c+8>>2]=m;while(1){d=zb(c+24|0,c+16|0);if(!(!d|H[H[c+24>>2]>>2]!=H[H[c+8>>2]>>2])){od(c+24|0);od(c+8|0);continue}break}oa=c+32|0;if(d^1){break l}}H[l>>2]=Ob(p);ge(l+8|0,l);H[l+16>>2]=H[l+8>>2]}H[l+8>>2]=H[l+16>>2];while(1){n:{H[l>>2]=Sc(p);if(!zb(l+8|0,l)){break n}if(!Ab(a,l+552|0)){break n}if((ab(a)|0)!=H[H[l+8>>2]>>2]){break n}hb(a);od(l+8|0);continue}break}if(!s){break c}H[l>>2]=Sc(p);if(!zb(l+8|0,l)){break c}H[f>>2]=H[f>>2]|4;a=0;break d}while(1){o:{if(!Ab(a,l+552|0)){break o}c=ab(a);p:{if(cc(h,2048,c)){d=H[j>>2];if((d|0)==H[l+548>>2]){xd(i,j,l+548|0);d=H[j>>2]}H[j>>2]=d+4;H[d>>2]=c;e=e+1|0;break p}if(!wa(t)|!e|(c|0)!=H[l+112>>2]){break o}c=H[l+132>>2];if((c|0)==H[l+128>>2]){xd(q,l+132|0,l+128|0);c=H[l+132>>2]}H[l+132>>2]=c+4;H[c>>2]=e;e=0}hb(a);continue}break}c=H[l+132>>2];if(!(!e|(c|0)==H[q>>2])){if(H[l+128>>2]==(c|0)){xd(q,l+132|0,l+128|0);c=H[l+132>>2]}H[l+132>>2]=c+4;H[c>>2]=e}q:{if(H[l+28>>2]<1){break q}r:{if(!jb(a,l+552|0)){if((ab(a)|0)==H[l+116>>2]){break r}}H[f>>2]=H[f>>2]|4;a=0;break d}while(1){hb(a);if(H[l+28>>2]<1){break q}s:{if(!jb(a,l+552|0)){if(cc(h,2048,ab(a))){break s}}H[f>>2]=H[f>>2]|4;a=0;break d}if(H[j>>2]==H[l+548>>2]){xd(i,j,l+548|0)}c=ab(a);d=H[j>>2];H[j>>2]=d+4;H[d>>2]=c;H[l+28>>2]=H[l+28>>2]-1;continue}}c=k;if(H[i>>2]!=H[j>>2]){break b}H[f>>2]=H[f>>2]|4;a=0;break d}t:{if(!k){break t}e=1;while(1){if(wa(k)>>>0<=e>>>0){break t}u:{if(!jb(a,l+552|0)){if((ab(a)|0)==H[Qe(k,e)>>2]){break u}}H[f>>2]=H[f>>2]|4;a=0;break d}hb(a);e=e+1|0;continue}}a=1;if(H[q>>2]==H[l+132>>2]){break d}a=0;H[l+16>>2]=0;wb(t,H[q>>2],H[l+132>>2],l+16|0);if(H[l+16>>2]){H[f>>2]=H[f>>2]|4;break d}a=1}va(r);va(o);va(n);va(p);va(t);_a(q);oa=l+560|0;return a}c=k}b=b+1|0;continue}}function an(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0;h=oa+-64|0;oa=h;H[h+56>>2]=b;H[e>>2]=0;Ia(h,d);i=Ib(h);Fa(h);a:{b:{c:{d:{switch(g-65|0){case 0:case 32:ti(a,f+24|0,h+56|0,c,e,i);break b;case 1:case 33:case 39:si(a,f+16|0,h+56|0,c,e,i);break b;case 34:g=a;a=qa[H[H[a+8>>2]+12>>2]](a+8|0)|0;H[h+56>>2]=Bc(g,b,c,d,e,f,Ca(a),Ca(a)+(wa(a)<<2)|0);break b;case 35:case 36:a=e;b=rc(h+56|0,c,a,i,2);c=H[a>>2];e:{if(!(c&4|(b|0)<1|(b|0)>31)){H[f+12>>2]=b;break e}H[a>>2]=c|4}break b;case 3:g=H[3331];H[h+24>>2]=H[3330];H[h+28>>2]=g;g=H[3329];H[h+16>>2]=H[3328];H[h+20>>2]=g;g=H[3327];H[h+8>>2]=H[3326];H[h+12>>2]=g;g=H[3325];H[h>>2]=H[3324];H[h+4>>2]=g;H[h+56>>2]=Bc(a,b,c,d,e,f,h,h+32|0);break b;case 5:g=H[3339];H[h+24>>2]=H[3338];H[h+28>>2]=g;g=H[3337];H[h+16>>2]=H[3336];H[h+20>>2]=g;g=H[3335];H[h+8>>2]=H[3334];H[h+12>>2]=g;g=H[3333];H[h>>2]=H[3332];H[h+4>>2]=g;H[h+56>>2]=Bc(a,b,c,d,e,f,h,h+32|0);break b;case 7:a=e;b=rc(h+56|0,c,a,i,2);c=H[a>>2];f:{if(!(c&4|(b|0)>23)){H[f+8>>2]=b;break f}H[a>>2]=c|4}break b;case 8:a=e;b=rc(h+56|0,c,a,i,2);c=H[a>>2];g:{if(!(c&4|(b|0)<1|(b|0)>12)){H[f+8>>2]=b;break g}H[a>>2]=c|4}break b;case 41:a=e;b=rc(h+56|0,c,a,i,3);c=H[a>>2];h:{if(!(c&4|(b|0)>365)){H[f+28>>2]=b;break h}H[a>>2]=c|4}break b;case 44:a=e;b=rc(h+56|0,c,a,i,2);c=H[a>>2];i:{if(!(c&4|(b|0)>12)){H[f+16>>2]=b-1;break i}H[a>>2]=c|4}break b;case 12:a=e;b=rc(h+56|0,c,a,i,2);c=H[a>>2];j:{if(!(c&4|(b|0)>59)){H[f+4>>2]=b;break j}H[a>>2]=c|4}break b;case 45:case 51:a=h+56|0;b=oa-16|0;oa=b;H[b+8>>2]=c;while(1){k:{if(!Ab(a,b+8|0)){break k}if(!cc(i,8192,ab(a))){break k}hb(a);continue}break};if(jb(a,b+8|0)){H[e>>2]=H[e>>2]|2}oa=b+16|0;break b;case 47:b=h+56|0;a=qa[H[H[a+8>>2]+8>>2]](a+8|0)|0;l:{if((wa(a)|0)==(0-wa(a+12|0)|0)){H[e>>2]=H[e>>2]|4;break l}a=Re(b,c,a,a+24|0,i,e,0)-a|0;b=H[f+8>>2];if(!(a|(b|0)!=12)){H[f+8>>2]=0;break l}if(!((a|0)!=12|(b|0)>11)){H[f+8>>2]=b+12}}break b;case 49:g=Wb(h,13360,44);H[g+56>>2]=Bc(a,b,c,d,e,f,g,g+44|0);break b;case 17:H[h+16>>2]=H[3356];g=H[3355];H[h+8>>2]=H[3354];H[h+12>>2]=g;g=H[3353];H[h>>2]=H[3352];H[h+4>>2]=g;H[h+56>>2]=Bc(a,b,c,d,e,f,h,h+20|0);break b;case 18:a=e;b=rc(h+56|0,c,a,i,2);c=H[a>>2];m:{if(!(c&4|(b|0)>60)){H[f>>2]=b;break m}H[a>>2]=c|4}break b;case 19:g=H[3367];H[h+24>>2]=H[3366];H[h+28>>2]=g;g=H[3365];H[h+16>>2]=H[3364];H[h+20>>2]=g;g=H[3363];H[h+8>>2]=H[3362];H[h+12>>2]=g;g=H[3361];H[h>>2]=H[3360];H[h+4>>2]=g;H[h+56>>2]=Bc(a,b,c,d,e,f,h,h+32|0);break b;case 54:a=e;b=rc(h+56|0,c,a,i,1);c=H[a>>2];n:{if(!(c&4|(b|0)>6)){H[f+24>>2]=b;break n}H[a>>2]=c|4}break b;case 55:a=qa[H[H[a>>2]+20>>2]](a,b,c,d,e,f)|0;break a;case 23:g=a;a=qa[H[H[a+8>>2]+24>>2]](a+8|0)|0;H[h+56>>2]=Bc(g,b,c,d,e,f,Ca(a),Ca(a)+(wa(a)<<2)|0);break b;case 56:ri(f+20|0,h+56|0,c,e,i);break b;case 24:a=rc(h+56|0,c,e,i,4);if(!(I[e|0]&4)){H[f+20>>2]=a-1900}break b;default:if((g|0)==37){break c}break;case 2:case 4:case 6:case 9:case 10:case 11:case 13:case 14:case 15:case 16:case 20:case 21:case 22:case 25:case 26:case 27:case 28:case 29:case 30:case 31:case 37:case 38:case 40:case 42:case 43:case 46:case 48:case 50:case 52:case 53:break d}}H[e>>2]=H[e>>2]|4;break b}a=oa-16|0;oa=a;H[a+8>>2]=c;b=6;c=h+56|0;o:{p:{if(jb(c,a+8|0)){break p}b=4;if((yd(i,ab(c))|0)!=37){break p}b=2;if(!jb(hb(c),a+8|0)){break o}}H[e>>2]=H[e>>2]|b}oa=a+16|0}a=H[h+56>>2]}oa=h- -64|0;return a|0}function Lb(a,b,c,d,e,f,g,h,i){var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;k=oa-112|0;oa=k;l=h;o=i&2147483647;m=c-(b>>>0<1)|0;j=b-1|0;q=(j|0)==-1&(m|0)==-1;r=d;p=(c|0)==(m|0)&b>>>0>j>>>0|c>>>0>m>>>0;n=d+p|0;m=e&2147483647;j=m;j=n>>>0

>>0?j+1|0:j;p=n-1|0;a:{b:{j=j-(n>>>0<1)|0;if(!((p|0)==-1&(j|0)==2147418111?q:j>>>0>2147418111)){j=f;n=g-(j>>>0<1)|0;j=j-1|0;q=(j|0)!=-1|(n|0)!=-1;p=(g|0)==(n|0)&f>>>0>j>>>0|g>>>0>n>>>0;n=p+l|0;j=o;j=n>>>0

>>0?j+1|0:j;p=n;n=n-1|0;j=j-(p>>>0<1)|0;if((n|0)==-1&(j|0)==2147418111?q:(j|0)==2147418111&(n|0)!=-1|j>>>0<2147418111){break b}}if(!(!r&(m|0)==2147418112?!(b|c):m>>>0<2147418112)){h=d;i=e|32768;f=b;g=c;break a}if(!(!l&(o|0)==2147418112?!(f|g):o>>>0<2147418112)){i=i|32768;break a}if(!(b|r|(m^2147418112|c))){j=d;d=!(b^f|d^h|(c^g|e^i^-2147483648));h=d?0:j;i=d?2147450880:e;f=d?0:b;g=d?0:c;break a}if(!(f|l|(o^2147418112|g))){break a}if(!(b|r|(c|m))){if(f|l|(g|o)){break a}f=b&f;g=c&g;h=d&h;i=e&i;break a}if(f|l|(g|o)){break b}f=b;g=c;h=d;i=e;break a}q=(l|0)==(r|0)&(m|0)==(o|0)?(c|0)==(g|0)&b>>>0>>0|c>>>0>>0:(m|0)==(o|0)&l>>>0>r>>>0|m>>>0>>0;j=q;n=j?f:b;o=j?g:c;l=j?i:e;r=l;m=j?h:d;j=l&65535;i=q?e:i;e=i;h=q?d:h;p=i>>>16&32767;l=l>>>16&32767;if(!l){d=!(j|m);i=d<<6;l=Q(d?n:m)+32|0;d=Q(d?o:j);d=i+((d|0)==32?l:d)|0;xb(k+96|0,n,o,m,j,d-15|0);m=H[k+104>>2];n=H[k+96>>2];o=H[k+100>>2];l=16-d|0;j=H[k+108>>2]}f=q?b:f;g=q?c:g;i=e&65535;if(!p){b=!(h|i);c=b<<6;d=Q(b?f:h)+32|0;b=Q(b?g:i);b=c+((b|0)==32?d:b)|0;xb(k+80|0,f,g,h,i,b-15|0);p=16-b|0;h=H[k+88>>2];i=H[k+92>>2];g=H[k+84>>2];f=H[k+80>>2]}b=h;c=i<<3|b>>>29;h=b<<3|g>>>29;i=c|524288;b=m;d=j<<3|b>>>29;m=b<<3|o>>>29;s=d;q=e^r;b=f;j=g<<3|b>>>29;b=b<<3;c=j;d=l-p|0;e=b;c:{if(!d){break c}if(d>>>0>127){h=0;i=0;j=0;e=1;break c}xb(k- -64|0,b,c,h,i,128-d|0);hd(k+48|0,b,c,h,i,d);h=H[k+56>>2];i=H[k+60>>2];j=H[k+52>>2];e=H[k+48>>2]|((H[k+64>>2]|H[k+72>>2])!=0|(H[k+68>>2]|H[k+76>>2])!=0)}f=j;d=m;p=s|524288;b=n;j=o<<3|b>>>29;c=b<<3;d:{if((q|0)<-1?1:(q|0)<=-1){o=e;b=c-e|0;m=h;n=d-h|0;e=(f|0)==(j|0)&c>>>0>>0|f>>>0>j>>>0;h=n-e|0;c=j-((c>>>0>>0)+f|0)|0;i=(p-((d>>>0>>0)+i|0)|0)-(e>>>0>n>>>0)|0;if(!(b|h|(c|i))){f=0;g=0;h=0;i=0;break a}if(i>>>0>524287){break d}f=b;d=!(h|i);e=d<<6;g=Q(d?b:h)+32|0;b=Q(d?c:i);b=e+((b|0)==32?g:b)|0;b=b-12|0;xb(k+32|0,f,c,h,i,b);l=l-b|0;h=H[k+40>>2];i=H[k+44>>2];b=H[k+32>>2];c=H[k+36>>2];break d}b=c;g=b+e|0;c=f+j|0;c=b>>>0>g>>>0?c+1|0:c;b=g;g=(c|0)==(f|0)&e>>>0>b>>>0|c>>>0>>0;e=d;f=d+h|0;d=i+p|0;d=e>>>0>f>>>0?d+1|0:d;e=g+f|0;h=e;i=h>>>0>>0?d+1|0:d;if(!(i&1048576)){break d}b=b&1|((c&1)<<31|b>>>1);c=h<<31|c>>>1;l=l+1|0;h=(i&1)<<31|h>>>1;i=i>>>1|0}o=0;r=r&-2147483648;if((l|0)>=32767){h=o;i=r|2147418112;f=0;g=0;break a}e=0;e:{if((l|0)>0){e=l;break e}xb(k+16|0,b,c,h,i,l+127|0);hd(k,b,c,h,i,1-l|0);b=H[k>>2]|((H[k+16>>2]|H[k+24>>2])!=0|(H[k+20>>2]|H[k+28>>2])!=0);c=H[k+4>>2];h=H[k+8>>2];i=H[k+12>>2]}j=(c&7)<<29|b>>>3;l=b&7;b=j+(l>>>0>4)|0;d=h<<29|c>>>3;c=b>>>0>>0?d+1|0:d;f=b;g=c;b=(d|0)==(c|0)&b>>>0>>0|c>>>0>>0;d=o|((i&7)<<29|h>>>3);b=b+d|0;j=r|(i>>>3&65535|e<<16);h=b;i=b>>>0>>0?j+1|0:j;f:{if((l|0)==4){j=i;c=0;d=g+c|0;e=f&1;b=f+e|0;d=b>>>0>>0?d+1|0:d;f=b;g=d;c=(c|0)==(d|0)&b>>>0>>0|c>>>0>d>>>0;b=c+h|0;h=b;i=b>>>0>>0?j+1|0:j;break f}if(!l){break a}}}H[a>>2]=f;H[a+4>>2]=g;H[a+8>>2]=h;H[a+12>>2]=i;oa=k+112|0}function gn(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0;h=oa-32|0;oa=h;H[h+24>>2]=b;H[e>>2]=0;Ia(h+8|0,d);i=Fb(h+8|0);Fa(h+8|0);a:{b:{c:{d:{switch(g-65|0){case 0:case 32:yi(a,f+24|0,h+24|0,c,e,i);break b;case 1:case 33:case 39:wi(a,f+16|0,h+24|0,c,e,i);break b;case 34:g=a;a=qa[H[H[a+8>>2]+12>>2]](a+8|0)|0;H[h+24>>2]=Cc(g,b,c,d,e,f,Ca(a),Ca(a)+wa(a)|0);break b;case 35:case 36:a=e;b=sc(h+24|0,c,a,i,2);c=H[a>>2];e:{if(!(c&4|(b|0)<1|(b|0)>31)){H[f+12>>2]=b;break e}H[a>>2]=c|4}break b;case 3:H[h+8>>2]=623865125;H[h+12>>2]=2032480100;H[h+24>>2]=Cc(a,b,c,d,e,f,h+8|0,h+16|0);break b;case 5:H[h+8>>2]=623728933;H[h+12>>2]=1680158061;H[h+24>>2]=Cc(a,b,c,d,e,f,h+8|0,h+16|0);break b;case 7:a=e;b=sc(h+24|0,c,a,i,2);c=H[a>>2];f:{if(!(c&4|(b|0)>23)){H[f+8>>2]=b;break f}H[a>>2]=c|4}break b;case 8:a=e;b=sc(h+24|0,c,a,i,2);c=H[a>>2];g:{if(!(c&4|(b|0)<1|(b|0)>12)){H[f+8>>2]=b;break g}H[a>>2]=c|4}break b;case 41:a=e;b=sc(h+24|0,c,a,i,3);c=H[a>>2];h:{if(!(c&4|(b|0)>365)){H[f+28>>2]=b;break h}H[a>>2]=c|4}break b;case 44:a=e;b=sc(h+24|0,c,a,i,2);c=H[a>>2];i:{if(!(c&4|(b|0)>12)){H[f+16>>2]=b-1;break i}H[a>>2]=c|4}break b;case 12:a=e;b=sc(h+24|0,c,a,i,2);c=H[a>>2];j:{if(!(c&4|(b|0)>59)){H[f+4>>2]=b;break j}H[a>>2]=c|4}break b;case 45:case 51:a=h+24|0;b=oa-16|0;oa=b;H[b+8>>2]=c;while(1){k:{if(!Bb(a,b+8|0)){break k}if(!dc(i,8192,bb(a))){break k}ib(a);continue}break};if(kb(a,b+8|0)){H[e>>2]=H[e>>2]|2}oa=b+16|0;break b;case 47:b=h+24|0;a=qa[H[H[a+8>>2]+8>>2]](a+8|0)|0;l:{if((wa(a)|0)==(0-wa(a+12|0)|0)){H[e>>2]=H[e>>2]|4;break l}a=Te(b,c,a,a+24|0,i,e,0)-a|0;b=H[f+8>>2];if(!(a|(b|0)!=12)){H[f+8>>2]=0;break l}if(!((a|0)!=12|(b|0)>11)){H[f+8>>2]=b+12}}break b;case 49:g=I[13284]|I[13285]<<8|(I[13286]<<16|I[13287]<<24);F[h+15|0]=g;F[h+16|0]=g>>>8;F[h+17|0]=g>>>16;F[h+18|0]=g>>>24;g=I[13281]|I[13282]<<8|(I[13283]<<16|I[13284]<<24);H[h+8>>2]=I[13277]|I[13278]<<8|(I[13279]<<16|I[13280]<<24);H[h+12>>2]=g;H[h+24>>2]=Cc(a,b,c,d,e,f,h+8|0,h+19|0);break b;case 17:F[h+12|0]=I[13292];H[h+8>>2]=I[13288]|I[13289]<<8|(I[13290]<<16|I[13291]<<24);H[h+24>>2]=Cc(a,b,c,d,e,f,h+8|0,h+13|0);break b;case 18:a=e;b=sc(h+24|0,c,a,i,2);c=H[a>>2];m:{if(!(c&4|(b|0)>60)){H[f>>2]=b;break m}H[a>>2]=c|4}break b;case 19:H[h+8>>2]=624576549;H[h+12>>2]=1394948685;H[h+24>>2]=Cc(a,b,c,d,e,f,h+8|0,h+16|0);break b;case 54:a=e;b=sc(h+24|0,c,a,i,1);c=H[a>>2];n:{if(!(c&4|(b|0)>6)){H[f+24>>2]=b;break n}H[a>>2]=c|4}break b;case 55:a=qa[H[H[a>>2]+20>>2]](a,b,c,d,e,f)|0;break a;case 23:g=a;a=qa[H[H[a+8>>2]+24>>2]](a+8|0)|0;H[h+24>>2]=Cc(g,b,c,d,e,f,Ca(a),Ca(a)+wa(a)|0);break b;case 56:vi(f+20|0,h+24|0,c,e,i);break b;case 24:a=sc(h+24|0,c,e,i,4);if(!(I[e|0]&4)){H[f+20>>2]=a-1900}break b;default:if((g|0)==37){break c}break;case 2:case 4:case 6:case 9:case 10:case 11:case 13:case 14:case 15:case 16:case 20:case 21:case 22:case 25:case 26:case 27:case 28:case 29:case 30:case 31:case 37:case 38:case 40:case 42:case 43:case 46:case 48:case 50:case 52:case 53:break d}}H[e>>2]=H[e>>2]|4;break b}a=oa-16|0;oa=a;H[a+8>>2]=c;b=6;c=h+24|0;o:{p:{if(kb(c,a+8|0)){break p}b=4;if((zd(i,bb(c))|0)!=37){break p}b=2;if(!kb(ib(c),a+8|0)){break o}}H[e>>2]=H[e>>2]|b}oa=a+16|0}a=H[h+24>>2]}oa=h+32|0;return a|0}function lk(){var a=0,b=0,c=0;a=oa-16|0;oa=a;a:{if(ga(a+12|0,a+8|0)|0){break a}b=cb((H[a+12>>2]<<2)+4|0);H[6069]=b;if(!b){break a}b=cb(H[a+8>>2]);if(b){H[H[6069]+(H[a+12>>2]<<2)>>2]=0;if(!(fa(H[6069],b|0)|0)){break a}}H[6069]=0}oa=a+16|0;b:{if(F[28448]&1){break b}if(!fb(28448)){break b}b=H[1969];a=oa-16|0;oa=a;c=Hf(28092);H[7033]=28148;H[7031]=b;H[7023]=20172;F[28144]=0;H[7035]=-1;rd(a+8|0,c);qa[H[H[7023]+8>>2]](28092,a+8|0);Fa(a+8|0);oa=a+16|0;a=Xe(27416);H[6852]=18988;H[a>>2]=19008;H[6853]=0;pd(H[4744]+27408|0,28092);a=oa-16|0;oa=a;c=hh(28156);H[7049]=28212;H[7047]=b;H[7039]=20272;F[28208]=0;H[7051]=-1;rd(a+8|0,c);qa[H[H[7039]+8>>2]](28156,a+8|0);Fa(a+8|0);oa=a+16|0;a=Vg(27504);H[6874]=19036;H[a>>2]=19056;H[6875]=0;pd(H[4756]+27496|0,28156);a=H[5039];Xg(28220,a,28268);uf(27584,28220);Wg(28276,a,28324);tf(27668,28276);a=H[5040];Xg(28332,a,28380);uf(27752,28332);uf(27920,H[(H[H[6938]-12>>2]+27752|0)+24>>2]);Wg(28388,a,28436);tf(27836,28388);tf(28004,H[(H[H[6959]-12>>2]+27836|0)+24>>2]);oe(H[H[6852]-12>>2]+27408|0,27584);oe(H[H[6874]-12>>2]+27496|0,27668);Ug(H[H[6938]-12>>2]+27752|0);Ug(H[H[6959]-12>>2]+27836|0);oe(H[H[6938]-12>>2]+27752|0,27584);oe(H[H[6959]-12>>2]+27836|0,27668);eb(28448)}xa(21760,2023);xa(21772,2806);Sa(21788);Sa(21800);Sa(21812);Sa(21824);Sa(21836);Sa(21852);Sa(21864);Sa(21876);Sa(21888);Sa(21900);Sa(21912);xa(21924,2037);xa(21936,2217);xa(21948,1554);xa(21960,1983);xa(21972,2354);xa(21984,1941);xa(21996,1337);xa(22008,2324);xa(22020,2245);xa(22032,2336);xa(22044,2216);xa(22056,2309);xa(22068,2033);xa(22080,2057);xa(22092,2418);xa(22104,2155);xa(22116,1830);xa(22128,2396);xa(22140,2176);xa(22152,2050);xa(22164,1035);xa(22176,1027);xa(22188,2811);xa(22200,2997);xa(22212,2814);xa(22224,2778);xa(22236,2774);xa(22248,2771);xa(22260,2777);xa(22272,2766);xa(22284,2770);xa(22296,3063);xa(22308,1029);xa(22320,2537);xa(22332,1024);xa(22344,2763);xa(22356,2660);xa(22368,2774);xa(22380,2780);xa(22392,3066);xa(22404,1032);xa(22416,3022);xa(22428,2540);xa(22440,2995);xa(22452,2984);xa(22464,3001);xa(22476,2815);xa(22488,3069);xa(22500,3e3);xa(22512,2661);xa(22524,2781);xa(22536,3099);xa(22548,1033);xa(22560,3067);xa(22572,1025);xa(22584,2538);xa(22596,2658);xa(22608,2785);xa(22620,2986);xa(22632,2783);xa(22644,1880);xa(22656,1567);xa(22668,1360);xa(22680,1349);xa(22692,2040);xa(22704,2494);xa(22716,1948);xa(22728,2240);xa(22740,1176);xa(22752,1037);xa(22764,2207);xa(22776,1711);xa(22788,1896);xa(22800,2390);xa(22812,1891);xa(22824,1098);xa(22836,2145);xa(22848,2347);xa(22860,1791);xa(22872,2236);xa(22884,1411);xa(22896,2014);xa(22908,1640);xa(22920,2455);xa(22932,2410);xa(22944,1818);xa(22956,1046);xa(22968,2443);xa(22980,2439);xa(22992,2228);xa(23004,2204);xa(23016,1708);xa(23028,1786);xa(23040,1888);xa(23052,2387);xa(23064,1095);xa(23076,2142);xa(23088,2344);xa(23100,2465);xa(23112,1081);xa(23124,1840);xa(23136,1408);xa(23148,2011);xa(23160,1651);xa(23172,2452);xa(23184,2407);xa(23196,1815);xa(23208,1043);xa(23220,2427)}function Ba(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0;a:{if(!a){break a}d=a-8|0;b=H[a-4>>2];a=b&-8;f=d+a|0;b:{if(b&1){break b}if(!(b&3)){break a}b=H[d>>2];d=d-b|0;if(d>>>0>>0<=255){e=H[d+8>>2];b=b>>>3|0;c=H[d+12>>2];if((c|0)==(e|0)){H[7133]=H[7133]&Gq(-2,b);break b}H[e+12>>2]=c;H[c+8>>2]=e;break b}h=H[d+24>>2];b=H[d+12>>2];c:{if((d|0)!=(b|0)){c=H[d+8>>2];H[c+12>>2]=b;H[b+8>>2]=c;break c}d:{e=d+20|0;c=H[e>>2];if(c){break d}e=d+16|0;c=H[e>>2];if(c){break d}b=0;break c}while(1){g=e;b=c;e=b+20|0;c=H[e>>2];if(c){continue}e=b+16|0;c=H[b+16>>2];if(c){continue}break}H[g>>2]=0}if(!h){break b}e=H[d+28>>2];c=(e<<2)+28836|0;e:{if(H[c>>2]==(d|0)){H[c>>2]=b;if(b){break e}H[7134]=H[7134]&Gq(-2,e);break b}H[h+(H[h+16>>2]==(d|0)?16:20)>>2]=b;if(!b){break b}}H[b+24>>2]=h;c=H[d+16>>2];if(c){H[b+16>>2]=c;H[c+24>>2]=b}c=H[d+20>>2];if(!c){break b}H[b+20>>2]=c;H[c+24>>2]=b;break b}b=H[f+4>>2];if((b&3)!=3){break b}H[7135]=a;H[f+4>>2]=b&-2;H[d+4>>2]=a|1;H[a+d>>2]=a;return}if(d>>>0>=f>>>0){break a}b=H[f+4>>2];if(!(b&1)){break a}f:{if(!(b&2)){if(H[7139]==(f|0)){H[7139]=d;a=H[7136]+a|0;H[7136]=a;H[d+4>>2]=a|1;if(H[7138]!=(d|0)){break a}H[7135]=0;H[7138]=0;return}if(H[7138]==(f|0)){H[7138]=d;a=H[7135]+a|0;H[7135]=a;H[d+4>>2]=a|1;H[a+d>>2]=a;return}a=(b&-8)+a|0;g:{if(b>>>0<=255){e=H[f+8>>2];b=b>>>3|0;c=H[f+12>>2];if((c|0)==(e|0)){H[7133]=H[7133]&Gq(-2,b);break g}H[e+12>>2]=c;H[c+8>>2]=e;break g}h=H[f+24>>2];b=H[f+12>>2];h:{if((f|0)!=(b|0)){c=H[f+8>>2];H[c+12>>2]=b;H[b+8>>2]=c;break h}i:{e=f+20|0;c=H[e>>2];if(c){break i}e=f+16|0;c=H[e>>2];if(c){break i}b=0;break h}while(1){g=e;b=c;e=b+20|0;c=H[e>>2];if(c){continue}e=b+16|0;c=H[b+16>>2];if(c){continue}break}H[g>>2]=0}if(!h){break g}e=H[f+28>>2];c=(e<<2)+28836|0;j:{if(H[c>>2]==(f|0)){H[c>>2]=b;if(b){break j}H[7134]=H[7134]&Gq(-2,e);break g}H[h+(H[h+16>>2]==(f|0)?16:20)>>2]=b;if(!b){break g}}H[b+24>>2]=h;c=H[f+16>>2];if(c){H[b+16>>2]=c;H[c+24>>2]=b}c=H[f+20>>2];if(!c){break g}H[b+20>>2]=c;H[c+24>>2]=b}H[d+4>>2]=a|1;H[a+d>>2]=a;if(H[7138]!=(d|0)){break f}H[7135]=a;return}H[f+4>>2]=b&-2;H[d+4>>2]=a|1;H[a+d>>2]=a}if(a>>>0<=255){a=a>>>3|0;b=(a<<3)+28572|0;c=H[7133];a=1<>2]}H[b+8>>2]=d;H[a+12>>2]=d;H[d+12>>2]=b;H[d+8>>2]=a;return}e=31;H[d+16>>2]=0;H[d+20>>2]=0;if(a>>>0<=16777215){b=a>>>8|0;g=b+1048320>>>16&8;b=b<>>16&4;b=b<>>16&2;b=(b<>>15|0)-(c|(e|g))|0;e=(b<<1|a>>>b+21&1)+28|0}H[d+28>>2]=e;g=(e<<2)+28836|0;l:{m:{c=H[7134];b=1<>2]=d;H[d+24>>2]=g;break n}e=a<<((e|0)==31?0:25-(e>>>1|0)|0);b=H[g>>2];while(1){c=b;if((H[b+4>>2]&-8)==(a|0)){break m}b=e>>>29|0;e=e<<1;g=c+(b&4)|0;b=H[g+16>>2];if(b){continue}break}H[g+16>>2]=d;H[d+24>>2]=c}H[d+12>>2]=d;H[d+8>>2]=d;break l}a=H[c+8>>2];H[a+12>>2]=d;H[c+8>>2]=d;H[d+24>>2]=0;H[d+12>>2]=c;H[d+8>>2]=a}a=H[7141]-1|0;H[7141]=a?a:-1}}function Dg(a,b){var c=0,d=0,e=0,f=0,g=0,h=0;f=a+b|0;c=H[a+4>>2];a:{b:{if(c&1){break b}if(!(c&3)){break a}c=H[a>>2];b=c+b|0;c:{a=a-c|0;if((a|0)!=H[7138]){if(c>>>0<=255){e=H[a+8>>2];c=c>>>3|0;d=H[a+12>>2];if((d|0)!=(e|0)){break c}H[7133]=H[7133]&Gq(-2,c);break b}h=H[a+24>>2];c=H[a+12>>2];d:{if((c|0)!=(a|0)){d=H[a+8>>2];H[d+12>>2]=c;H[c+8>>2]=d;break d}e:{e=a+20|0;d=H[e>>2];if(d){break e}e=a+16|0;d=H[e>>2];if(d){break e}c=0;break d}while(1){g=e;c=d;e=c+20|0;d=H[e>>2];if(d){continue}e=c+16|0;d=H[c+16>>2];if(d){continue}break}H[g>>2]=0}if(!h){break b}e=H[a+28>>2];d=(e<<2)+28836|0;f:{if(H[d>>2]==(a|0)){H[d>>2]=c;if(c){break f}H[7134]=H[7134]&Gq(-2,e);break b}H[h+(H[h+16>>2]==(a|0)?16:20)>>2]=c;if(!c){break b}}H[c+24>>2]=h;d=H[a+16>>2];if(d){H[c+16>>2]=d;H[d+24>>2]=c}d=H[a+20>>2];if(!d){break b}H[c+20>>2]=d;H[d+24>>2]=c;break b}c=H[f+4>>2];if((c&3)!=3){break b}H[7135]=b;H[f+4>>2]=c&-2;H[a+4>>2]=b|1;H[f>>2]=b;return}H[e+12>>2]=d;H[d+8>>2]=e}c=H[f+4>>2];g:{if(!(c&2)){if(H[7139]==(f|0)){H[7139]=a;b=H[7136]+b|0;H[7136]=b;H[a+4>>2]=b|1;if(H[7138]!=(a|0)){break a}H[7135]=0;H[7138]=0;return}if(H[7138]==(f|0)){H[7138]=a;b=H[7135]+b|0;H[7135]=b;H[a+4>>2]=b|1;H[a+b>>2]=b;return}b=(c&-8)+b|0;h:{if(c>>>0<=255){e=H[f+8>>2];c=c>>>3|0;d=H[f+12>>2];if((d|0)==(e|0)){H[7133]=H[7133]&Gq(-2,c);break h}H[e+12>>2]=d;H[d+8>>2]=e;break h}h=H[f+24>>2];c=H[f+12>>2];i:{if((f|0)!=(c|0)){d=H[f+8>>2];H[d+12>>2]=c;H[c+8>>2]=d;break i}j:{d=f+20|0;e=H[d>>2];if(e){break j}d=f+16|0;e=H[d>>2];if(e){break j}c=0;break i}while(1){g=d;c=e;d=c+20|0;e=H[d>>2];if(e){continue}d=c+16|0;e=H[c+16>>2];if(e){continue}break}H[g>>2]=0}if(!h){break h}e=H[f+28>>2];d=(e<<2)+28836|0;k:{if(H[d>>2]==(f|0)){H[d>>2]=c;if(c){break k}H[7134]=H[7134]&Gq(-2,e);break h}H[h+(H[h+16>>2]==(f|0)?16:20)>>2]=c;if(!c){break h}}H[c+24>>2]=h;d=H[f+16>>2];if(d){H[c+16>>2]=d;H[d+24>>2]=c}d=H[f+20>>2];if(!d){break h}H[c+20>>2]=d;H[d+24>>2]=c}H[a+4>>2]=b|1;H[a+b>>2]=b;if(H[7138]!=(a|0)){break g}H[7135]=b;return}H[f+4>>2]=c&-2;H[a+4>>2]=b|1;H[a+b>>2]=b}if(b>>>0<=255){b=b>>>3|0;c=(b<<3)+28572|0;d=H[7133];b=1<>2]}H[c+8>>2]=a;H[b+12>>2]=a;H[a+12>>2]=c;H[a+8>>2]=b;return}e=31;H[a+16>>2]=0;H[a+20>>2]=0;if(b>>>0<=16777215){c=b>>>8|0;g=c+1048320>>>16&8;c=c<>>16&4;c=c<>>16&2;c=(c<>>15|0)-(d|(e|g))|0;e=(c<<1|b>>>c+21&1)+28|0}H[a+28>>2]=e;g=(e<<2)+28836|0;m:{d=H[7134];c=1<>2]=a;H[a+24>>2]=g;break n}e=b<<((e|0)==31?0:25-(e>>>1|0)|0);c=H[g>>2];while(1){d=c;if((H[c+4>>2]&-8)==(b|0)){break m}c=e>>>29|0;e=e<<1;g=d+(c&4)|0;c=H[g+16>>2];if(c){continue}break}H[g+16>>2]=a;H[a+24>>2]=d}H[a+12>>2]=a;H[a+8>>2]=a;return}b=H[d+8>>2];H[b+12>>2]=a;H[d+8>>2]=a;H[a+24>>2]=0;H[a+12>>2]=d;H[a+8>>2]=b}}function pm(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;u=oa-16|0;oa=u;k=c;while(1){a:{if((d|0)==(k|0)){k=d;break a}if(!H[k>>2]){break a}k=k+4|0;continue}break}H[h>>2]=f;H[e>>2]=c;while(1){b:{c:{if(!((c|0)==(d|0)|(f|0)==(g|0))){p=H[b+4>>2];H[u+8>>2]=H[b>>2];H[u+12>>2]=p;x=1;v=oa-16|0;oa=v;H[v+12>>2]=H[a+8>>2];y=jc(v+8|0,v+12|0);r=k-c>>2;p=0;l=oa-272|0;oa=l;z=e;i=H[e>>2];H[l+12>>2]=i;t=f?f:l+16|0;A=f;d:{e:{f:{q=f?g-f|0:256;if(!i|!q){break f}m=r>>>0>=q>>>0;if(!(m|r>>>0>32)){break e}while(1){m=m?q:r;r=r-m|0;s=0;w=oa-16|0;oa=w;g:{h:{i:{j:{j=t;if(j){if(m>>>0>=4){break j}i=m;break i}m=0;j=H[l+12>>2];i=H[j>>2];if(!i){break g}while(1){o=1;if(i>>>0>=128){s=-1;o=id(w+12|0,i);if((o|0)==-1){break g}}i=H[j+4>>2];j=j+4|0;m=m+o|0;s=m;if(i){continue}break}break g}o=H[l+12>>2];i=m;while(1){n=H[o>>2];k:{if(n-1>>>0>=127){if(!n){F[j|0]=0;H[l+12>>2]=0;break h}s=-1;n=id(j,n);if((n|0)==-1){break g}i=i-n|0;j=j+n|0;break k}F[j|0]=n;i=i-1|0;o=H[l+12>>2];j=j+1|0}o=o+4|0;H[l+12>>2]=o;if(i>>>0>3){continue}break}}if(i){o=H[l+12>>2];while(1){n=H[o>>2];l:{if(n-1>>>0>=127){if(!n){F[j|0]=0;H[l+12>>2]=0;break h}s=-1;n=id(w+12|0,n);if((n|0)==-1){break g}if(i>>>0>>0){break h}id(j,H[o>>2]);i=i-n|0;j=j+n|0;break l}F[j|0]=n;i=i-1|0;o=H[l+12>>2];j=j+1|0}o=o+4|0;H[l+12>>2]=o;if(i){continue}break}}s=m;break g}s=m-i|0}oa=w+16|0;if((s|0)==-1){q=0;i=H[l+12>>2];p=-1;break f}j=(l+16|0)==(t|0);q=q-(j?0:s)|0;t=j?t:s+t|0;p=p+s|0;i=H[l+12>>2];if(!i|!q){break f}m=r>>>0>=q>>>0;if(m|r>>>0>=33){continue}break}break e}if(!i){break d}}if(!q|!r){break d}m=p;while(1){m:{j=id(t,H[i>>2]);n:{if(j+1>>>0<=1){p=-1;if(j){break d}H[l+12>>2]=0;break n}i=H[l+12>>2]+4|0;H[l+12>>2]=i;m=j+m|0;q=q-j|0;if(q){break m}}p=m;break d}t=j+t|0;p=m;r=r-1|0;if(r){continue}break}}if(A){H[z>>2]=H[l+12>>2]}oa=l+272|0;ic(y);oa=v+16|0;o:{p:{q:{r:{switch(p+1|0){case 0:H[h>>2]=f;while(1){s:{if(H[e>>2]==(c|0)){break s}b=Of(f,H[c>>2],H[a+8>>2]);if((b|0)==-1){break s}f=b+H[h>>2]|0;H[h>>2]=f;c=c+4|0;continue}break};H[e>>2]=c;break q;case 1:break c;default:break r}}f=p+H[h>>2]|0;H[h>>2]=f;if((f|0)==(g|0)){break o}if((d|0)==(k|0)){c=H[e>>2];k=d;continue}k=Of(u+4|0,0,H[a+8>>2]);if((k|0)!=-1){break p}}x=2;break c}c=u+4|0;if(g-H[h>>2]>>>0>>0){break c}while(1){if(k){f=I[c|0];p=H[h>>2];H[h>>2]=p+1;F[p|0]=f;k=k-1|0;c=c+1|0;continue}break}c=H[e>>2]+4|0;H[e>>2]=c;k=c;while(1){if((d|0)==(k|0)){k=d;break b}if(!H[k>>2]){break b}k=k+4|0;continue}}c=H[e>>2]}x=(c|0)!=(d|0)}oa=u+16|0;return x|0}f=H[h>>2];continue}}function Cg(a,b,c,d,e,f,g,h,i){var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;j=oa-128|0;oa=j;a:{b:{c:{if(!gd(f,g,h,i,0,0,0,0)){break c}m=f;n=g;l=h;o=i&65535;k=i>>>16&32767;d:{e:{if((k|0)!=32767){p=4;if(k){break e}m=l|m|(n|o)?3:2;break d}p=!(l|m|(n|o))}m=p}if(!m){break c}r=e>>>16|0;o=r&32767;if((o|0)!=32767){break b}}Ta(j+16|0,b,c,d,e,f,g,h,i);e=H[j+16>>2];d=H[j+20>>2];c=H[j+24>>2];b=H[j+28>>2];lj(j,e,d,c,b,e,d,c,b);d=H[j+8>>2];e=H[j+12>>2];h=H[j>>2];i=H[j+4>>2];break a}l=o<<16;p=d;q=l|e&65535;m=q;n=h;q=i>>>16&32767;k=i&65535|q<<16;if((gd(b,c,p,m,f,g,h,k)|0)<=0){if(gd(b,c,p,m,f,g,n,k)){h=b;i=c;break a}Ta(j+112|0,b,c,d,e,0,0,0,0);d=H[j+120>>2];e=H[j+124>>2];h=H[j+112>>2];i=H[j+116>>2];break a}if(o){i=c;h=b}else{Ta(j+96|0,b,c,p,m,0,0,0,1081540608);h=H[j+108>>2];m=h;p=H[j+104>>2];o=(h>>>16|0)-120|0;i=H[j+100>>2];h=H[j+96>>2]}if(!q){Ta(j+80|0,f,g,n,k,0,0,0,1081540608);f=H[j+92>>2];k=f;n=H[j+88>>2];q=(k>>>16|0)-120|0;g=H[j+84>>2];f=H[j+80>>2]}s=k&65535|65536;m=m&65535|65536;if((o|0)>(q|0)){while(1){k=p;l=n;t=k-l|0;l=m-((k>>>0>>0)+s|0)|0;k=(g|0)==(i|0)&f>>>0>h>>>0|g>>>0>i>>>0;l=l-(k>>>0>t>>>0)|0;k=t-k|0;f:{if((l|0)>0?1:(l|0)>=0){m=h;h=h-f|0;i=i-((f>>>0>m>>>0)+g|0)|0;if(!(h|k|(i|l))){Ta(j+32|0,b,c,d,e,0,0,0,0);d=H[j+40>>2];e=H[j+44>>2];h=H[j+32>>2];i=H[j+36>>2];break a}l=l<<1|k>>>31;p=k<<1|i>>>31;break f}l=m<<1|p>>>31;p=p<<1|i>>>31}m=l;l=i<<1|h>>>31;h=h<<1;i=l;o=o-1|0;if((q|0)<(o|0)){continue}break}o=q}l=p;q=l-n|0;n=m-((l>>>0>>0)+s|0)|0;l=(g|0)==(i|0)&f>>>0>h>>>0|g>>>0>i>>>0;k=n-(l>>>0>q>>>0)|0;n=q-l|0;g:{if((k|0)<0){n=p;k=m;break g}p=h;h=h-f|0;i=i-((f>>>0>p>>>0)+g|0)|0;if(h|n|(i|k)){break g}Ta(j+48|0,b,c,d,e,0,0,0,0);d=H[j+56>>2];e=H[j+60>>2];h=H[j+48>>2];i=H[j+52>>2];break a}if((k|0)==65535|k>>>0<65535){while(1){b=i>>>31|0;o=o-1|0;m=i<<1|h>>>31;h=h<<1;i=m;c=b;b=n;k=k<<1|b>>>31;n=c|b<<1;if(k>>>0<65536){continue}break}}b=r&32768;if((o|0)<=0){Ta(j- -64|0,h,i,n,k&65535|(b|o+120)<<16,0,0,0,1065811968);d=H[j+72>>2];e=H[j+76>>2];h=H[j+64>>2];i=H[j+68>>2];break a}d=n;e=k&65535|(b|o)<<16}H[a>>2]=h;H[a+4>>2]=i;H[a+8>>2]=d;H[a+12>>2]=e;oa=j+128|0}function $i(a,b,c,d){var e=0,f=0,g=0,h=0,i=0;e=H[b>>2];a:{b:{c:{d:{e:{f:{g:{h:{i:{j:{k:{l:{if(!d){break l}g=H[d>>2];if(!g){break l}if(!a){d=c;break j}H[d>>2]=0;d=c;break k}m:{if(!H[H[5347]>>2]){if(!a){break m}if(!c){break a}g=c;while(1){d=F[e|0];if(d){H[a>>2]=d&57343;a=a+4|0;e=e+1|0;g=g-1|0;if(g){continue}break a}break}H[a>>2]=0;H[b>>2]=0;return c-g|0}d=c;if(!a){break i}break g}return yc(e)}f=1;break g}f=0;break h}f=1}while(1){if(!f){f=I[e|0]>>>3|0;if((f-16|f+(g>>26))>>>0>7){break f}h=e+1|0;f=h;n:{if(!(g&33554432)){break n}if((I[h|0]&192)!=128){e=e-1|0;break d}h=e+2|0;f=h;if(!(g&524288)){break n}if((I[h|0]&192)!=128){e=e-1|0;break d}f=e+3|0}e=f;d=d-1|0;f=1;continue}while(1){g=I[e|0];o:{if(e&3|g-1>>>0>126){break o}g=H[e>>2];if((g|g-16843009)&-2139062144){break o}while(1){d=d-4|0;g=H[e+4>>2];f=e+4|0;e=f;if(!((g-16843009|g)&-2139062144)){continue}break}e=f}f=g&255;if(f-1>>>0<=126){d=d-1|0;e=e+1|0;continue}break}f=f-194|0;if(f>>>0>50){break e}e=e+1|0;g=H[(f<<2)+8912>>2];f=0;continue}}while(1){if(!f){if(!d){break a}while(1){p:{f=I[e|0];h=f-1|0;q:{r:{if(h>>>0>126){g=f;break r}if(e&3|d>>>0<5){break q}s:{while(1){g=H[e>>2];if((g|g-16843009)&-2139062144){break s}H[a>>2]=g&255;H[a+4>>2]=I[e+1|0];H[a+8>>2]=I[e+2|0];H[a+12>>2]=I[e+3|0];a=a+16|0;e=e+4|0;d=d-4|0;if(d>>>0>4){continue}break}g=I[e|0]}f=g&255;h=f-1|0}if(h>>>0>126){break p}}H[a>>2]=f;a=a+4|0;e=e+1|0;d=d-1|0;if(d){continue}break a}break}f=f-194|0;if(f>>>0>50){break e}e=e+1|0;g=H[(f<<2)+8912>>2];f=1;continue}h=I[e|0];f=h>>>3|0;if((f-16|f+(g>>26))>>>0>7){break f}t:{u:{i=e+1|0;f=h-128|g<<6;h=i;v:{if((f|0)>-1){break v}h=I[i|0]-128|0;if(h>>>0>63){break u}i=e+2|0;f=h|f<<6;h=i;if((f|0)>-1){break v}h=I[i|0]-128|0;if(h>>>0>63){break u}f=h|f<<6;h=e+3|0}e=h;H[a>>2]=f;d=d-1|0;a=a+4|0;break t}H[6070]=25;e=e-1|0;break c}f=0;continue}}e=e-1|0;if(g){break d}g=I[e|0]}if(g&255){break d}if(a){H[a>>2]=0;H[b>>2]=0}return c-d|0}H[6070]=25;if(!a){break b}}H[b>>2]=e}return-1}H[b>>2]=e;return c}function Rf(a){var b=0;a:{if(F[24556]&1){break a}if(!fb(24556)){break a}b:{if(F[24544]&1){break b}if(!fb(24544)){break b}Xa(26160);H[6540]=13480;b=oa-16|0;oa=b;H[6544]=0;H[6545]=0;H[b+12>>2]=0;rf(26192);F[26336]=0;oa=b+16|0;if(Bh()>>>0<30){$d();X()}b=Ah(ed(26176),30);H[6544]=b;H[6545]=b;H[Ce(26176)>>2]=b+120;zh(0);Uh(30);xa(26352,2653);Pa(26176);Th(26176);Sh();Xa(25840);H[6460]=14804;Za(25840,Wa(24368));Xa(25848);H[6462]=14836;Za(25848,Wa(24376));Xa(25856);F[25868]=0;H[6466]=0;H[6464]=13500;H[6466]=H[2322];Za(25856,Wa(24572));Xa(25872);H[6468]=13984;Za(25872,Wa(24564));Xa(25880);H[6470]=14132;Za(25880,Wa(24580));Xa(25888);H[6472]=13552;H[6474]=Oa();Za(25888,Wa(24588));Xa(25904);H[6476]=14280;Za(25904,Wa(24596));Xa(25912);H[6478]=14396;Za(25912,Wa(24604));Xa(25920);G[12964]=11310;H[6480]=13600;Ea(25932);Za(25920,Wa(24612));Xa(25952);H[6490]=46;H[6491]=44;H[6488]=13640;Ea(25968);Za(25952,Wa(24620));Xa(25984);H[6496]=14868;Za(25984,Wa(24384));Xa(25992);H[6498]=15112;Za(25992,Wa(24392));Xa(26e3);H[6500]=15324;Za(26e3,Wa(24400));Xa(26008);H[6502]=15556;Za(26008,Wa(24408));Xa(26016);H[6504]=16540;Za(26016,Wa(24448));Xa(26024);H[6506]=16688;Za(26024,Wa(24456));Xa(26032);H[6508]=16804;Za(26032,Wa(24464));Xa(26040);H[6510]=16920;Za(26040,Wa(24472));Xa(26048);H[6512]=17036;Za(26048,Wa(24480));Xa(26056);H[6514]=17200;Za(26056,Wa(24488));Xa(26064);H[6516]=17364;Za(26064,Wa(24496));Xa(26072);H[6518]=17528;Za(26072,Wa(24504));Xa(26080);H[6522]=18784;H[6520]=15756;H[6522]=15804;Za(26080,Wa(24416));Xa(26096);H[6526]=18820;H[6524]=16020;H[6526]=16068;Za(26096,Wa(24424));Xa(26112);uh(26120);H[6528]=16256;Za(26112,Wa(24432));Xa(26128);uh(26136);H[6532]=16412;Za(26128,Wa(24440));Xa(26144);H[6536]=17692;Za(26144,Wa(24512));Xa(26152);H[6538]=17812;Za(26152,Wa(24520));H[6134]=26160;H[6135]=24536;eb(24544)}Sf(24548,H[6135]);H[6138]=24548;eb(24556)}b=a;a=H[H[6138]>>2];H[b>>2]=a;Tf(a)}function bh(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0;a:{b:{if(H[a+64>>2]){break b}d=1211;c:{d:{e:{f:{g:{h:{i:{j:{k:{l:{m:{n:{o:{p:{e=c&-3;switch(e-1|0){case 4:case 20:break i;case 19:break j;case 8:case 24:break k;case 23:break m;case 7:break n;case 0:case 16:break o;case 15:break c;case 1:case 2:case 3:case 5:case 6:case 9:case 10:case 13:case 14:case 17:case 18:case 21:case 22:case 25:case 26:break d;case 12:case 28:break e;case 27:break g;case 11:break h;default:break p}}q:{switch(e-48|0){case 4:break j;case 0:break c;case 1:case 2:case 3:break d;default:break q}}switch(e-56|0){case 0:break l;case 4:break f;default:break d}}d=2535;break c}d=1638;break c}d=2991;break c}d=2988;break c}d=2994;break c}d=2488;break c}d=2518;break c}d=2491;break c}d=2525;break c}d=2521;break c}d=2529;break c}d=0}if(!d){break b}e=b;b=0;i=oa-16|0;oa=i;h=d;r:{s:{if(!kd(2533,F[d|0])){H[6070]=28;break s}f=2;if(!kd(h,43)){f=I[d|0]!=114}f=kd(d,120)?f|128:f;f=kd(d,101)?f|524288:f;d=I[d|0];f=(d|0)==114?f:f|64;f=(d|0)==119?f|512:f;H[i>>2]=438;d=da(e|0,((d|0)==97?f|1024:f)|32768,i|0)|0;if(d>>>0>=4294963201){H[6070]=0-d;d=-1}if((d|0)<0){break r}f=d;g=oa-32|0;oa=g;t:{u:{v:{if(!kd(2533,F[h|0])){H[6070]=28;break v}e=cb(1176);if(e){break u}}b=0;break t}Vb(e,0,144);if(!kd(h,43)){H[e>>2]=I[h|0]==114?8:4}w:{if(I[h|0]!=97){b=H[e>>2];break w}b=ca(f|0,3,0)|0;if(!(b&1024)){H[g+16>>2]=b|1024;ca(f|0,4,g+16|0)|0}b=H[e>>2]|128;H[e>>2]=b}F[e+75|0]=255;H[e+48>>2]=1024;H[e+60>>2]=f;H[e+44>>2]=e+152;x:{if(b&8){break x}H[g>>2]=g+24;if(ma(f|0,21523,g|0)|0){break x}F[e+75|0]=10}H[e+40>>2]=141;H[e+36>>2]=394;H[e+32>>2]=140;H[e+12>>2]=139;if(!H[6072]){H[e+76>>2]=-1}H[e+56>>2]=H[6068];b=H[6068];if(b){H[b+52>>2]=e}H[6068]=e;b=e}oa=g+32|0;if(b){break r}aa(d|0)|0}b=0}oa=i+16|0;H[a+64>>2]=b;if(!b){break b}H[a+88>>2]=c;if(!(c&2)){break a}if(!Ae(b,0,0,2)){break a}If(H[a+64>>2]);H[a+64>>2]=0}return 0}return a}function ke(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;if(!a){return cb(b)}if(b>>>0>=4294967232){H[6070]=48;return 0}g=b>>>0<11?16:b+11&-8;f=a-8|0;j=H[f+4>>2];e=j&-8;a:{if(!(j&3)){if(g>>>0<256){break a}if(e>>>0>=g+4>>>0){c=f;if(e-g>>>0<=H[7253]<<1>>>0){break a}}c=0;break a}h=e+f|0;b:{if(e>>>0>=g>>>0){d=e-g|0;if(d>>>0<16){break b}H[f+4>>2]=j&1|g|2;c=f+g|0;H[c+4>>2]=d|3;H[h+4>>2]=H[h+4>>2]|1;Dg(c,d);break b}if(H[7139]==(h|0)){e=e+H[7136]|0;if(e>>>0<=g>>>0){break a}H[f+4>>2]=j&1|g|2;d=f+g|0;c=e-g|0;H[d+4>>2]=c|1;H[7136]=c;H[7139]=d;break b}if(H[7138]==(h|0)){d=e+H[7135]|0;if(d>>>0>>0){break a}c=d-g|0;c:{if(c>>>0>=16){H[f+4>>2]=j&1|g|2;e=f+g|0;H[e+4>>2]=c|1;d=d+f|0;H[d>>2]=c;H[d+4>>2]=H[d+4>>2]&-2;break c}H[f+4>>2]=d|j&1|2;c=d+f|0;H[c+4>>2]=H[c+4>>2]|1;c=0;e=0}H[7138]=e;H[7135]=c;break b}d=H[h+4>>2];if(d&2){break a}k=e+(d&-8)|0;if(k>>>0>>0){break a}m=k-g|0;d:{if(d>>>0<=255){e=H[h+8>>2];c=d>>>3|0;d=H[h+12>>2];if((d|0)==(e|0)){H[7133]=H[7133]&Gq(-2,c);break d}H[e+12>>2]=d;H[d+8>>2]=e;break d}l=H[h+24>>2];i=H[h+12>>2];e:{if((i|0)!=(h|0)){c=H[h+8>>2];H[c+12>>2]=i;H[i+8>>2]=c;break e}f:{e=h+20|0;c=H[e>>2];if(c){break f}e=h+16|0;c=H[e>>2];if(c){break f}i=0;break e}while(1){d=e;i=c;e=c+20|0;c=H[e>>2];if(c){continue}e=i+16|0;c=H[i+16>>2];if(c){continue}break}H[d>>2]=0}if(!l){break d}d=H[h+28>>2];c=(d<<2)+28836|0;g:{if(H[c>>2]==(h|0)){H[c>>2]=i;if(i){break g}H[7134]=H[7134]&Gq(-2,d);break d}H[(H[l+16>>2]==(h|0)?16:20)+l>>2]=i;if(!i){break d}}H[i+24>>2]=l;c=H[h+16>>2];if(c){H[i+16>>2]=c;H[c+24>>2]=i}c=H[h+20>>2];if(!c){break d}H[i+20>>2]=c;H[c+24>>2]=i}if(m>>>0<=15){H[f+4>>2]=j&1|k|2;c=f+k|0;H[c+4>>2]=H[c+4>>2]|1;break b}H[f+4>>2]=j&1|g|2;d=f+g|0;H[d+4>>2]=m|3;c=f+k|0;H[c+4>>2]=H[c+4>>2]|1;Dg(d,m)}c=f}if(c){return c+8|0}f=cb(b);if(!f){return 0}c=H[a-4>>2];c=(c&3?-4:-8)+(c&-8)|0;Wb(f,a,b>>>0>c>>>0?c:b);Ba(a);return f}function om(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;r=oa-16|0;oa=r;j=c;while(1){a:{if((d|0)==(j|0)){j=d;break a}if(!I[j|0]){break a}j=j+1|0;continue}break}H[h>>2]=f;H[e>>2]=c;while(1){b:{c:{d:{if((c|0)==(d|0)|(f|0)==(g|0)){break d}i=H[b+4>>2];H[r+8>>2]=H[b>>2];H[r+12>>2]=i;s=oa-16|0;oa=s;H[s+12>>2]=H[a+8>>2];u=jc(s+8|0,s+12|0);n=j-c|0;t=b;m=oa-1040|0;oa=m;v=e;o=H[e>>2];H[m+12>>2]=o;p=f?f:m+16|0;l=0;w=f;e:{f:{g:{k=f?g-f>>2:256;if(!o|!k){break g}i=n>>>2|0;q=k>>>0<=i>>>0;if(i>>>0>>0?n>>>0<=131:0){break f}while(1){i=q?k:i;n=n-i|0;q=$i(p,m+12|0,i,t);if((q|0)==-1){k=0;o=H[m+12>>2];l=-1;break g}i=(m+16|0)==(p|0);k=k-(i?0:q)|0;p=i?p:(q<<2)+p|0;l=l+q|0;o=H[m+12>>2];if(!o|!k){break g}i=n>>>2|0;q=k>>>0<=i>>>0;if(n>>>0>131|i>>>0>=k>>>0){continue}break}break f}if(!o){break e}}if(!k|!n){break e}i=l;while(1){h:{l=Ve(p,o,n,t);i:{if(l+2>>>0<=2){j:{switch(l+1|0){case 1:H[m+12>>2]=0;break i;case 0:break e;default:break j}}H[t>>2]=0;break i}o=H[m+12>>2]+l|0;H[m+12>>2]=o;i=i+1|0;k=k-1|0;if(k){break h}}l=i;break e}p=p+4|0;n=n-l|0;l=i;if(n){continue}break}}if(w){H[v>>2]=H[m+12>>2]}oa=m+1040|0;ic(u);oa=s+16|0;k:{l:{m:{n:{if((l|0)==-1){while(1){o:{H[h>>2]=f;if(H[e>>2]==(c|0)){break o}g=1;p:{q:{r:{b=Ih(f,c,j-c|0,r+8|0,H[a+8>>2]);switch(b+2|0){case 2:break p;case 1:break r;case 0:break l;default:break q}}H[e>>2]=c;break n}g=b}c=c+g|0;f=H[h>>2]+4|0;continue}break}H[e>>2]=c;break d}f=H[h>>2]+(l<<2)|0;H[h>>2]=f;if((f|0)==(g|0)){break k}c=H[e>>2];if((d|0)==(j|0)){j=d;continue}if(!Ih(f,c,1,b,H[a+8>>2])){break m}}a=2;break c}H[h>>2]=H[h>>2]+4;c=H[e>>2]+1|0;H[e>>2]=c;j=c;while(1){if((d|0)==(j|0)){j=d;break b}if(!I[j|0]){break b}j=j+1|0;continue}}H[e>>2]=c;a=1;break c}c=H[e>>2]}a=(c|0)!=(d|0)}oa=r+16|0;return a|0}f=H[h>>2];continue}}function Lj(a){var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;g=oa-16|0;oa=g;F[a+221|0]=0;a:{if(I[a+214|0]|!I[a+209|0]|(I[a+213|0]|I[a+217|0])){break a}if(I[a+216|0]|I[a+215|0]){break a}d=a+160|0;c=wa(d);b=H[a+200>>2];b:{while(1){b=b+1|0;e=0;if((c|0)<=(b|0)){break b}if(Db(F[Aa(d,b)|0])){continue}break}e=1;if(!Ra(d,b,2,22200)){break b}e=!Ra(d,b,2,22188)}if(e){break a}b=a+172|0;d=wa(b);if((d|0)<1){break a}f=Db(F[Aa(b,d-1|0)|0])}b=F[a+192|0];F[a+193|0]=b;c:{if(Db(b)){break c}F[a+194|0]=I[a+192|0];if(I[a+217|0]|(I[a+214|0]|I[a+213|0])){break c}if(Kd(a,22200)){break c}if(Kd(a,22188)){break c}F[a+195|0]=I[a+194|0]}d=a+160|0;e=wa(d);d:{e:{if((e|0)<=(H[a+200>>2]+1|0)){break e}if(!(i=1,j=!Db(af(a))|I[a+214|0],k=I[a+213|0],k?i:j)){break e}b=1;c=H[a+200>>2]+1|0;H[a+200>>2]=c;c=I[Aa(d,c)|0];F[a+192|0]=c;f:{if(!f){break f}if(!Db(c<<24>>24)){break f}while(1){c=H[a+200>>2]+1|0;if((c|0)>=(e|0)){break f}H[a+200>>2]=c;c=F[Aa(d,c)|0];F[a+192|0]=c;if(Db(c)){continue}break}}if(!I[a+212|0]|I[a+192|0]!=9){break d}F[a+192|0]=32;break d}if(zj(H[a+136>>2])){yj(g,H[a+136>>2]);Ua(d,g);va(g);if(!wa(d)){b=xa(g,3239);Ua(d,b);va(b)}g:{if(!I[a+208|0]){F[a+221|0]=1;break g}F[a+208|0]=0}if(I[a+213|0]){F[a+233|0]=1}F[a+213|0]=0;e=oa-16|0;oa=e;c=a+160|0;h=wa(c);H[a+200>>2]=0;b=a;h:{if(I[a+214|0]|I[a+215|0]){break h}i:{if(!Db(F[Aa(c,0)|0])){break i}while(1){f=H[b+200>>2]+1|0;if((f|0)>=(h|0)){break i}H[b+200>>2]=f;if(Db(F[Aa(c,f)|0])){continue}break}}F[b+216|0]=0;c=xa(e,2997);f=Kd(b,c);va(c);if(!f){break h}F[b+216|0]=1;H[b+200>>2]=0}oa=e+16|0;d=I[Aa(d,H[a+200>>2])|0];F[a+192|0]=d;if(I[a+194|0]!=92){F[a+215|0]=0}b=1;if(!I[a+212|0]|(d|0)!=9){break d}F[a+192|0]=32;break d}F[a+223|0]=1;b=0}oa=g+16|0;return b}function im(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0;a=oa-16|0;oa=a;H[a+12>>2]=c;H[a+8>>2]=f;H[a+12>>2]=c;H[a+8>>2]=f;a:{b:{c:{while(1){c=H[a+12>>2];if(!(c>>>0>=d>>>0|f>>>0>=g>>>0)){b=2;i=I[c|0];if(i>>>0>1114111){break b}m=a;d:{if(i<<24>>24>=0){G[f>>1]=i;b=c+1|0;break d}if(i>>>0<194){break b}if(i>>>0<=223){if((d-c|0)<2){break c}j=I[c+1|0];if((j&192)!=128){break a}i=j&63|i<<6&1984;if(i>>>0>1114111){break a}G[f>>1]=i;b=c+2|0;break d}if(i>>>0<=239){if((d-c|0)<3){break c}k=I[c+2|0];j=I[c+1|0];e:{f:{if((i|0)!=237){if((i|0)!=224){break f}if((j&224)==160){break e}break a}if((j&224)==128){break e}break a}if((j&192)!=128){break a}}if((k&192)!=128){break a}i=k&63|((j&63)<<6|i<<12);if((i&65535)>>>0>1114111){break a}G[f>>1]=i;b=c+3|0;break d}if(i>>>0>244){break b}b=1;if((d-c|0)<4){break a}k=I[c+3|0];j=I[c+2|0];c=I[c+1|0];g:{h:{switch(i-240|0){case 0:if((c+112&255)>>>0>=48){break b}break g;case 4:if((c&240)!=128){break b}break g;default:break h}}if((c&192)!=128){break b}}if((j&192)!=128|(k&192)!=128){break b}if((g-f|0)<4){break a}b=2;k=k&63;l=j<<6;i=i&7;if((k|(l&4032|(c<<12&258048|i<<18)))>>>0>1114111){break a}b=c<<2;G[f>>1]=(j>>>4&3|(b&192|i<<8|b&60))+16320|55296;H[a+8>>2]=f+2;G[f+2>>1]=k|l&960|56320;b=H[a+12>>2]+4|0}H[m+12>>2]=b;f=H[a+8>>2]+2|0;H[a+8>>2]=f;continue}break}b=c>>>0>>0;break a}b=1;break a}b=2}H[e>>2]=H[a+12>>2];H[h>>2]=H[a+8>>2];oa=a+16|0;return b|0}function Yh(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o){var p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;u=oa-16|0;oa=u;H[c>>2]=a;x=d&512;while(1){if((w|0)==4){if(wa(n)>>>0>1){H[u+8>>2]=Ob(n);H[c>>2]=Ge(ai(u+8|0,1),Sc(n),H[c>>2])}d=d&176;if((d|0)!=16){if((d|0)==32){a=H[c>>2]}H[b>>2]=a}oa=u+16|0}else{a:{b:{switch(F[i+w|0]){case 0:H[b>>2]=H[c>>2];break a;case 1:H[b>>2]=H[c>>2];q=Kb(g,32);p=H[c>>2];H[c>>2]=p+4;H[p>>2]=q;break a;case 3:if($b(n)){break a}q=H[Qe(n,0)>>2];p=H[c>>2];H[c>>2]=p+4;H[p>>2]=q;break a;case 2:if($b(m)|!x){break a}H[c>>2]=Ge(Ob(m),Sc(m),H[c>>2]);break a;case 4:break b;default:break a}}y=H[c>>2];e=h?e+4|0:e;r=e;while(1){c:{if(f>>>0<=r>>>0){break c}if(!cc(g,2048,H[r>>2])){break c}r=r+4|0;continue}break}p=o;if((p|0)>=1){while(1){if(!((p|0)<1|e>>>0>=r>>>0)){r=r-4|0;s=H[r>>2];q=H[c>>2];H[c>>2]=q+4;H[q>>2]=s;p=p-1|0;continue}break}if((p|0)<1){v=0}else{v=Kb(g,48)}q=H[c>>2];while(1){s=q+4|0;if((p|0)>=1){H[q>>2]=v;p=p-1|0;q=s;continue}break}H[c>>2]=s;H[q>>2]=j}d:{if((e|0)==(r|0)){q=Kb(g,48);p=H[c>>2];r=p+4|0;H[c>>2]=r;H[p>>2]=q;break d}if($b(l)){s=-1}else{s=F[Aa(l,0)|0]}p=0;t=0;while(1){if((e|0)!=(r|0)){e:{if((p|0)!=(s|0)){q=p;break e}q=H[c>>2];H[c>>2]=q+4;H[q>>2]=k;q=0;t=t+1|0;if(wa(l)>>>0<=t>>>0){s=p;break e}if(I[Aa(l,t)|0]==127){s=-1;break e}s=F[Aa(l,t)|0]}r=r-4|0;v=H[r>>2];p=H[c>>2];H[c>>2]=p+4;H[p>>2]=v;p=q+1|0;continue}break}r=H[c>>2]}Me(y,r)}w=w+1|0;continue}break}}function jm(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0;a=oa-16|0;oa=a;H[a+12>>2]=c;H[a+8>>2]=f;H[a+12>>2]=c;H[a+8>>2]=f;c=H[a+12>>2];a:{b:{while(1){if(c>>>0>=d>>>0){f=0;break a}f=2;b=J[c>>1];if(b>>>0>1114111){break a}c:{d:{if(b>>>0<=127){f=1;c=H[a+8>>2];if((g-c|0)<1){break a}H[a+8>>2]=c+1;F[c|0]=b;break d}if(b>>>0<=2047){c=H[a+8>>2];if((g-c|0)<2){break b}H[a+8>>2]=c+1;F[c|0]=b>>>6|192;c=H[a+8>>2];H[a+8>>2]=c+1;F[c|0]=b&63|128;break d}if(b>>>0<=55295){c=H[a+8>>2];if((g-c|0)<3){break b}H[a+8>>2]=c+1;F[c|0]=b>>>12|224;c=H[a+8>>2];H[a+8>>2]=c+1;F[c|0]=b>>>6&63|128;c=H[a+8>>2];H[a+8>>2]=c+1;F[c|0]=b&63|128;break d}if(b>>>0<=56319){f=1;if((d-c|0)<4){break a}i=J[c+2>>1];if((i&64512)!=56320){break c}if((g-H[a+8>>2]|0)<4){break a}f=b&960;if((i&1023|(b<<10&64512|f<<10))+65536>>>0>1114111){break c}H[a+12>>2]=c+2;c=H[a+8>>2];H[a+8>>2]=c+1;j=c;c=(f>>>6|0)+1|0;F[j|0]=c>>>2|240;f=H[a+8>>2];H[a+8>>2]=f+1;F[f|0]=c<<4&48|b>>>2&15|128;c=H[a+8>>2];H[a+8>>2]=c+1;F[c|0]=i>>>6&15|b<<4&48|128;b=H[a+8>>2];H[a+8>>2]=b+1;F[b|0]=i&63|128;break d}if(b>>>0<57344){break a}c=H[a+8>>2];if((g-c|0)<3){break b}H[a+8>>2]=c+1;F[c|0]=b>>>12|224;c=H[a+8>>2];H[a+8>>2]=c+1;F[c|0]=b>>>6&63|128;c=H[a+8>>2];H[a+8>>2]=c+1;F[c|0]=b&63|128}c=H[a+12>>2]+2|0;H[a+12>>2]=c;continue}break}f=2;break a}f=1}H[e>>2]=H[a+12>>2];H[h>>2]=H[a+8>>2];oa=a+16|0;return f|0}function jl(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;d=oa-16|0;oa=d;a:{b:{if(!H[a+64>>2]){f=-1;break b}b=a;f=H[a+92>>2]&8;if(!f){Ac(b,0,0);c:{if(I[b+98|0]){g=H[b+32>>2];c=g+H[b+52>>2]|0;break c}g=H[b+56>>2];c=g+H[b+60>>2]|0}hc(b,g,c,c);H[b+92>>2]=8}b=!f;if(!H[a+12>>2]){c=d+16|0;hc(a,d+15|0,c,c)}if(!b){b=H[a+16>>2];c=H[a+8>>2];H[d+4>>2]=4;H[d+8>>2]=(b-c|0)/2;e=H[zc(d+8|0,d+4|0)>>2]}f=-1;d:{if(H[a+12>>2]==H[a+16>>2]){ie(H[a+8>>2],H[a+16>>2]-e|0,e);if(I[a+98|0]){b=oh(H[a+8>>2]+e|0,H[a+16>>2]-(H[a+8>>2]+e|0)|0,H[a+64>>2]);if(!b){break d}hc(a,H[a+8>>2],H[a+8>>2]+e|0,b+(H[a+8>>2]+e|0)|0);f=Sb(F[H[a+12>>2]]);break d}g=a;b=H[a+40>>2];c=H[a+36>>2];e:{if((b|0)==(c|0)){c=b;break e}ie(H[a+32>>2],c,b-c|0);b=H[a+36>>2];c=H[a+40>>2]}c=c-b|0;b=H[a+32>>2];c=c+b|0;H[g+36>>2]=c;b=b+((b|0)==(a+44|0)?8:H[a+52>>2])|0;H[a+40>>2]=b;H[d+8>>2]=H[a+60>>2]-e;H[d+4>>2]=b-c;b=H[zc(d+8|0,d+4|0)>>2];c=H[a+76>>2];H[a+80>>2]=H[a+72>>2];H[a+84>>2]=c;b=oh(H[a+36>>2],b,H[a+64>>2]);if(!b){break d}c=H[a+68>>2];if(!c){break a}b=b+H[a+36>>2]|0;H[a+40>>2]=b;f:{if((wf(c,a+72|0,H[a+32>>2],b,a+36|0,H[a+8>>2]+e|0,H[a+8>>2]+H[a+60>>2]|0,d+8|0)|0)==3){b=H[a+32>>2];hc(a,b,b,H[a+40>>2]);break f}if(H[d+8>>2]==(H[a+8>>2]+e|0)){break d}hc(a,H[a+8>>2],H[a+8>>2]+e|0,H[d+8>>2])}f=Sb(F[H[a+12>>2]]);break d}f=Sb(F[H[a+12>>2]])}if(H[a+8>>2]!=(d+15|0)){break b}hc(a,0,0,0)}oa=d+16|0;return f|0}db();X()}function _h(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o){var p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;u=oa-16|0;oa=u;H[c>>2]=a;x=d&512;while(1){if((v|0)==4){if(wa(n)>>>0>1){H[u+8>>2]=Ob(n);H[c>>2]=Ge(gi(u+8|0,1),Vc(n),H[c>>2])}d=d&176;if((d|0)!=16){if((d|0)==32){a=H[c>>2]}H[b>>2]=a}oa=u+16|0;return}a:{b:{switch(F[i+v|0]){case 0:H[b>>2]=H[c>>2];break a;case 1:H[b>>2]=H[c>>2];q=pb(g,32);p=H[c>>2];H[c>>2]=p+1;F[p|0]=q;break a;case 3:if($b(n)){break a}q=I[Aa(n,0)|0];p=H[c>>2];H[c>>2]=p+1;F[p|0]=q;break a;case 2:if($b(m)|!x){break a}H[c>>2]=Ge(Ob(m),Vc(m),H[c>>2]);break a;case 4:break b;default:break a}}y=H[c>>2];e=h?e+1|0:e;r=e;while(1){c:{if(f>>>0<=r>>>0){break c}if(!dc(g,2048,F[r|0])){break c}r=r+1|0;continue}break}q=o;if((q|0)>=1){while(1){if(!((q|0)<1|e>>>0>=r>>>0)){r=r-1|0;p=I[r|0];s=H[c>>2];H[c>>2]=s+1;F[s|0]=p;q=q-1|0;continue}break}if((q|0)<1){p=0}else{p=pb(g,48)}while(1){s=H[c>>2];H[c>>2]=s+1;if((q|0)>=1){F[s|0]=p;q=q-1|0;continue}break}F[s|0]=j}d:{if((e|0)==(r|0)){q=pb(g,48);p=H[c>>2];H[c>>2]=p+1;F[p|0]=q;break d}if($b(l)){p=-1}else{p=F[Aa(l,0)|0]}q=0;t=0;while(1){if((e|0)==(r|0)){break d}e:{if((q|0)!=(p|0)){s=q;break e}p=H[c>>2];H[c>>2]=p+1;F[p|0]=k;s=0;t=t+1|0;if(wa(l)>>>0<=t>>>0){p=q;break e}if(I[Aa(l,t)|0]==127){p=-1;break e}p=F[Aa(l,t)|0]}r=r-1|0;q=I[r|0];w=H[c>>2];H[c>>2]=w+1;F[w|0]=q;q=s+1|0;continue}}fd(y,H[c>>2])}v=v+1|0;continue}}function hk(a,b){var c=0,d=0,e=0,f=0;e=oa-32|0;oa=e;H[a>>2]=7640;f=Ea(a+48|0);H[a+16>>2]=0;H[a+20>>2]=0;H[a+8>>2]=0;H[a+12>>2]=0;c=Na(12);d=Sa(c);H[a+24>>2]=c;Md(d,H[b+24>>2]);c=Na(12);Sa(c);H[a+28>>2]=c;c=Uf(e+24|0);H[c>>2]=Ed(H[b+28>>2]);H[e+16>>2]=Xc(H[b+28>>2]);if(zb(c,e+16|0)){while(1){d=Na(12);Sa(d);H[e+12>>2]=d;Md(H[e+12>>2],H[H[c>>2]>>2]);xc(H[a+28>>2],e+12|0);od(c);H[e+16>>2]=Xc(H[b+28>>2]);if(zb(c,e+16|0)){continue}break}}c=Na(12);d=Sa(c);H[a+32>>2]=c;Md(d,H[b+32>>2]);c=Na(12);d=Sa(c);H[a+36>>2]=c;Md(d,H[b+36>>2]);c=Na(12);d=Sa(c);H[a+40>>2]=c;Md(d,H[b+40>>2]);c=Na(12);d=Sa(c);H[a+44>>2]=c;Md(d,H[b+44>>2]);H[a+4>>2]=H[b+4>>2];bf(f,b+48|0);H[a+60>>2]=H[b+60>>2];H[a+64>>2]=H[b+64>>2];F[a+68|0]=I[b+68|0];F[a+69|0]=I[b+69|0];H[a+72>>2]=H[b+72>>2];F[a+76|0]=I[b+76|0];F[a+77|0]=I[b+77|0];F[a+78|0]=I[b+78|0];F[a+83|0]=I[b+83|0];F[a+84|0]=I[b+84|0];F[a+85|0]=I[b+85|0];F[a+86|0]=I[b+86|0];H[a+96>>2]=H[b+96>>2];H[a+100>>2]=H[b+100>>2];H[a+104>>2]=H[b+104>>2];H[a+108>>2]=H[b+108>>2];F[a+112|0]=I[b+112|0];F[a+113|0]=I[b+113|0];F[a+114|0]=I[b+114|0];F[a+115|0]=I[b+115|0];F[a+116|0]=I[b+116|0];F[a+87|0]=I[b+87|0];H[a+92>>2]=H[b+92>>2];H[a+120>>2]=H[b+120>>2];H[a+124>>2]=H[b+124>>2];F[a+128|0]=I[b+128|0];F[a+79|0]=I[b+79|0];F[a+80|0]=I[b+80|0];F[a+129|0]=I[b+129|0];H[a+132>>2]=H[b+132>>2];oa=e+32|0}function Za(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;i=oa-16|0;oa=i;Tf(a);c=oa-16|0;oa=c;H[c+12>>2]=a;g=i+8|0;Cb(g,c+12|0);oa=c+16|0;if(Pa(26176)>>>0<=b>>>0){a:{a=Pa(26176);c=b+1|0;if(a>>>0>>0){j=oa-32|0;oa=j;h=c-a|0;b:{if(h>>>0<=H[Ce(26176)>>2]-H[6545]>>2>>>0){Uh(h);break b}f=ed(26176);c=j+8|0;a=Pa(26176)+h|0;d=oa-16|0;oa=d;H[d+12>>2]=a;c:{e=Bh();if(a>>>0<=e>>>0){a=dd(26176);if(a>>>0>>1>>>0){H[d+8>>2]=a<<1;e=H[ad(d+8|0,d+12|0)>>2]}oa=d+16|0;a=e;break c}$d();X()}d=Pa(26176);e=oa-16|0;oa=e;H[e+12>>2]=0;yf(c+12|0,f);if(a){k=Ah(H[c+16>>2],a)}H[c>>2]=k;d=(d<<2)+k|0;H[c+8>>2]=d;H[c+4>>2]=d;H[Ic(c)>>2]=(a<<2)+k;oa=e+16|0;d=oa-16|0;oa=d;a=c;f=d;H[d>>2]=H[c+8>>2];e=H[c+8>>2];H[d+8>>2]=c+8;H[d+4>>2]=e+(h<<2);e=H[d>>2];while(1){if(H[f+4>>2]!=(e|0)){yh(H[a+16>>2],H[f>>2]);e=H[f>>2]+4|0;H[f>>2]=e;continue}break}H[H[f+8>>2]>>2]=H[f>>2];oa=d+16|0;Ph(26176);a=c+4|0;Vj(ed(26176),H[6544],H[6545],a);nc(26176,a);nc(26180,c+8|0);nc(Ce(26176),Ic(c));H[c>>2]=H[c+4>>2];zh(Pa(26176));a=c;e=c;d=H[c+4>>2];while(1){if((d|0)!=H[e+8>>2]){H[e+8>>2]=H[e+8>>2]-4;continue}break}if(H[c>>2]){wh(H[a+16>>2],H[a>>2],Tj(a))}}oa=j+32|0;break a}if(a>>>0>c>>>0){c=H[6544]+(c<<2)|0;Pa(26176);vh(26176,c);Sh()}}}if(H[lc(26176,b)>>2]){Ee(H[lc(26176,b)>>2])}a=Ud(g);H[lc(26176,b)>>2]=a;a=H[g>>2];H[g>>2]=0;if(a){Ee(a)}oa=i+16|0}function fm(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0;a=oa-16|0;oa=a;H[a+12>>2]=c;H[a+8>>2]=f;H[a+12>>2]=c;H[a+8>>2]=f;a:{b:{while(1){i=H[a+12>>2];if(!(i>>>0>=d>>>0|f>>>0>=g>>>0)){c=F[i|0];b=c&255;c:{if((c|0)>=0){if(b>>>0<=1114111){l=1;break c}c=2;break a}c=2;if(b>>>0<194){break a}if(b>>>0<=223){if((d-i|0)<2){break b}j=I[i+1|0];if((j&192)!=128){break a}l=2;b=j&63|b<<6&1984;if(b>>>0<=1114111){break c}break a}if(b>>>0<=239){if((d-i|0)<3){break b}j=I[i+2|0];k=I[i+1|0];d:{e:{if((b|0)!=237){if((b|0)!=224){break e}if((k&224)==160){break d}break a}if((k&224)==128){break d}break a}if((k&192)!=128){break a}}if((j&192)!=128){break a}l=3;b=j&63|(b<<12&61440|(k&63)<<6);if(b>>>0<=1114111){break c}break a}if(b>>>0>244){break a}if((d-i|0)<4){break b}k=I[i+3|0];j=I[i+2|0];m=I[i+1|0];f:{g:{switch(b-240|0){case 0:if((m+112&255)>>>0<48){break f}break a;case 4:if((m&240)==128){break f}break a;default:break g}}if((m&192)!=128){break a}}if((j&192)!=128|(k&192)!=128){break a}l=4;b=k&63|(j<<6&4032|(b<<18&1835008|(m&63)<<12));if(b>>>0>1114111){break a}}H[f>>2]=b;H[a+12>>2]=i+l;f=H[a+8>>2]+4|0;H[a+8>>2]=f;continue}break}c=d>>>0>i>>>0;break a}c=1}H[e>>2]=H[a+12>>2];H[h>>2]=H[a+8>>2];oa=a+16|0;return c|0}function Zi(a,b,c,d,e){var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;k=oa-16|0;oa=k;a:{b:{c:{if((c|0)<=36){g=I[a|0];if(g){break c}f=a;break b}H[6070]=28;d=0;e=0;break a}f=a;d:{while(1){if(!Yc(g<<24>>24)){break d}g=I[f+1|0];h=f+1|0;f=h;if(g){continue}break}f=h;break b}e:{g=I[f|0];switch(g-43|0){case 0:case 2:break e;default:break b}}m=(g|0)==45?-1:0;f=f+1|0}f:{if(!(c&-17|I[f|0]!=48)){o=1;if((I[f+1|0]&223)==88){f=f+2|0;l=16;break f}f=f+1|0;l=c?c:8;break f}l=c?c:10}p=l;q=l>>31;c=0;while(1){g:{g=-48;h=F[f|0];h:{if((h-48&255)>>>0<10){break h}g=-87;if((h-97&255)>>>0<26){break h}g=-55;if((h-65&255)>>>0>25){break g}}h=g+h|0;if((h|0)>=(l|0)){break g}rb(k,p,q,0,0,j,i,0,0);g=1;i:{if(H[k+8>>2]|H[k+12>>2]){break i}r=Eq(j,i,p,q);n=pa;s=h>>31;t=s^-1;if((n|0)==(t|0)&(h^-1)>>>0>>0|n>>>0>t>>>0){break i}i=n+s|0;g=h+r|0;i=g>>>0>>0?i+1|0:i;j=g;o=1;g=c}f=f+1|0;c=g;continue}break}if(b){H[b>>2]=o?f:a}j:{k:{if(c){H[6070]=68;a=d&1;m=a?0:m;j=d;i=e;break k}if((e|0)==(i|0)&d>>>0>j>>>0|e>>>0>i>>>0){break j}a=d&1}if(!(a|m)){H[6070]=68;a=d;d=a-1|0;e=e-(a>>>0<1)|0;break a}if((e|0)==(i|0)&d>>>0>=j>>>0|e>>>0>i>>>0){break j}H[6070]=68;break a}a=m;b=a^j;d=b-a|0;c=a>>31;e=(c^i)-((a>>>0>b>>>0)+c|0)|0}oa=k+16|0;pa=e;return d}function Ai(a,b,c,d,e,f,g){var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;j=oa-16|0;oa=j;k=Ib(g);n=Dd(g);Gb(j,n);H[f>>2]=d;a:{b:{h=a;g=I[h|0];switch(g-43|0){case 0:case 2:break b;default:break a}}g=Kb(k,g<<24>>24);h=H[f>>2];H[f>>2]=h+4;H[h>>2]=g;h=a+1|0}c:{g=h;if(!((c-g|0)<=1|I[g|0]!=48|(I[g+1|0]|32)!=120)){g=Kb(k,48);i=H[f>>2];H[f>>2]=i+4;H[i>>2]=g;g=Kb(k,F[h+1|0]);i=H[f>>2];H[f>>2]=i+4;H[i>>2]=g;h=h+2|0;g=h;while(1){if(c>>>0<=g>>>0){break c}if(!dj(F[g|0],Oa())){break c}g=g+1|0;continue}}while(1){if(c>>>0<=g>>>0){break c}i=F[g|0];Oa();if(!Rb(i)){break c}g=g+1|0;continue}}d:{if($b(j)){Ec(k,h,g,H[f>>2]);H[f>>2]=H[f>>2]+(g-h<<2);break d}fd(h,g);p=Hb(n);i=h;while(1){if(g>>>0<=i>>>0){Me((h-a<<2)+d|0,H[f>>2])}else{e:{if(F[Aa(j,l)|0]<1){break e}if(F[Aa(j,l)|0]!=(m|0)){break e}m=H[f>>2];H[f>>2]=m+4;H[m>>2]=p;l=(wa(j)-1>>>0>l>>>0)+l|0;m=0}q=Kb(k,F[i|0]);o=H[f>>2];H[f>>2]=o+4;H[o>>2]=q;i=i+1|0;m=m+1|0;continue}break}}f:{g:{while(1){if(c>>>0<=g>>>0){break g}h=I[g|0];if((h|0)!=46){h=Kb(k,h<<24>>24);i=H[f>>2];H[f>>2]=i+4;H[i>>2]=h;g=g+1|0;continue}break}h=ec(n);l=H[f>>2];i=l+4|0;H[f>>2]=i;H[l>>2]=h;g=g+1|0;break f}i=H[f>>2]}Ec(k,g,c,i);h=f;f=H[f>>2]+(c-g<<2)|0;H[h>>2]=f;H[e>>2]=(b|0)==(c|0)?f:(b-a<<2)+d|0;va(j);oa=j+16|0}function dl(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;e=oa-16|0;oa=e;a:{b:{if(!H[a+64>>2]){break b}b=H[a+68>>2];if(!b){break a}c:{c=H[a+92>>2];d:{if(c&16){if(H[a+24>>2]!=H[a+20>>2]){b=-1;if((qa[H[H[a>>2]+52>>2]](a,-1)|0)==-1){break b}}c=a+72|0;while(1){b=H[a+32>>2];d=$g(H[a+68>>2],c,b,b+H[a+52>>2]|0,e+12|0);f=H[a+32>>2];b=H[e+12>>2]-f|0;if((Ub(f,1,b,H[a+64>>2])|0)!=(b|0)){break c}b=-1;e:{switch(d-1|0){case 1:break b;case 0:continue;default:break e}}break}if(!ze(H[a+64>>2])){break d}break b}if(!(c&8)){break d}c=H[a+84>>2];H[e>>2]=H[a+80>>2];H[e+4>>2]=c;f:{g:{h:{if(I[a+98|0]){c=H[a+16>>2]-H[a+12>>2]|0;b=c;c=b>>31;break h}d=$c(b);c=H[a+40>>2]-H[a+36>>2]|0;b=c;c=b>>31;if((d|0)>=1){f=N(d,H[a+16>>2]-H[a+12>>2]|0);d=b+f|0;c=c+(f>>31)|0;c=b>>>0>d>>>0?c+1|0:c;b=d;break h}if(H[a+12>>2]!=H[a+16>>2]){break g}}d=0;break f}d=H[a+68>>2];d=qa[H[H[d>>2]+32>>2]](d,e,H[a+32>>2],H[a+36>>2],H[a+12>>2]-H[a+8>>2]|0)|0;f=H[a+36>>2]-(d+H[a+32>>2]|0)|0;d=b+f|0;c=(f>>31)+c|0;c=b>>>0>d>>>0?c+1|0:c;b=d;d=1}if(Ae(H[a+64>>2],0-b|0,0-(c+((b|0)!=0)|0)|0,1)){break c}if(d){b=H[e+4>>2];H[a+72>>2]=H[e>>2];H[a+76>>2]=b}b=H[a+32>>2];H[a+40>>2]=b;H[a+36>>2]=b;hc(a,0,0,0);H[a+92>>2]=0}b=0;break b}b=-1}oa=e+16|0;return b|0}db();X()}function Di(a,b,c,d,e,f,g){var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;k=oa-16|0;oa=k;j=Fb(g);n=Gd(g);Gb(k,n);H[f>>2]=d;a:{b:{h=a;g=I[h|0];switch(g-43|0){case 0:case 2:break b;default:break a}}g=pb(j,g<<24>>24);h=H[f>>2];H[f>>2]=h+1;F[h|0]=g;h=a+1|0}c:{g=h;if(!((c-g|0)<=1|I[g|0]!=48|(I[g+1|0]|32)!=120)){g=pb(j,48);i=H[f>>2];H[f>>2]=i+1;F[i|0]=g;g=pb(j,F[h+1|0]);i=H[f>>2];H[f>>2]=i+1;F[i|0]=g;h=h+2|0;g=h;while(1){if(c>>>0<=g>>>0){break c}if(!dj(F[g|0],Oa())){break c}g=g+1|0;continue}}while(1){if(c>>>0<=g>>>0){break c}i=F[g|0];Oa();if(!Rb(i)){break c}g=g+1|0;continue}}d:{if($b(k)){Wc(j,h,g,H[f>>2]);H[f>>2]=H[f>>2]+(g-h|0);break d}fd(h,g);p=Hb(n);i=h;while(1){if(g>>>0<=i>>>0){fd((h-a|0)+d|0,H[f>>2])}else{e:{if(F[Aa(k,m)|0]<1){break e}if(F[Aa(k,m)|0]!=(l|0)){break e}l=H[f>>2];H[f>>2]=l+1;F[l|0]=p;m=(wa(k)-1>>>0>m>>>0)+m|0;l=0}q=pb(j,F[i|0]);o=H[f>>2];H[f>>2]=o+1;F[o|0]=q;i=i+1|0;l=l+1|0;continue}break}}while(1){f:{h=j;if(c>>>0>g>>>0){i=I[g|0];if((i|0)!=46){break f}j=ec(n);i=H[f>>2];H[f>>2]=i+1;F[i|0]=j;g=g+1|0}Wc(h,g,c,H[f>>2]);h=f;f=H[f>>2]+(c-g|0)|0;H[h>>2]=f;H[e>>2]=(b|0)==(c|0)?f:(b-a|0)+d|0;va(k);oa=k+16|0;return}h=pb(j,i<<24>>24);i=H[f>>2];H[f>>2]=i+1;F[i|0]=h;g=g+1|0;continue}}function Wm(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0;a=oa-448|0;oa=a;H[a+432>>2]=c;H[a+440>>2]=b;H[a+20>>2]=152;k=Ya(a+24|0,a+32|0,a+20|0);Ia(a+16|0,e);h=Ib(a+16|0);F[a+15|0]=0;if(ei(a+440|0,c,d,a+16|0,H[e+4>>2],f,a+15|0,h,k,a+20|0,a+432|0)){c=oa-16|0;oa=c;b=g;a:{if(tb(g)){d=H[b>>2];H[c+12>>2]=0;Cb(d,c+12|0);yb(b,0);break a}H[c+8>>2]=0;Cb(b,c+8|0);ub(b,0)}oa=c+16|0;if(I[a+15|0]){mf(g,Kb(h,45))}b=Kb(h,48);e=H[k>>2];h=H[a+20>>2];c=h-4|0;while(1){if(!((b|0)!=H[e>>2]|c>>>0<=e>>>0)){e=e+4|0;continue}break}b=oa-16|0;oa=b;c=wa(g);d=Mf(g);i=rg(e,h);b:{if(!i){break b}if(qh(e,Ca(g),Ca(g)+(wa(g)<<2)|0)){c=oa-16|0;oa=c;Wi(b,e,h);oa=c+16|0;d=b;i=Ca(b);e=wa(b);h=oa-16|0;oa=h;c=g;j=Mf(c);g=wa(c);c:{if(e>>>0<=j-g>>>0){if(!e){break c}j=Ca(c);oc(j+(g<<2)|0,i,e);i=c;c=e+g|0;Lc(i,c);H[h+12>>2]=0;Cb(j+(c<<2)|0,h+12|0);break c}Jg(c,j,(e+g|0)-j|0,g,g,0,e,i)}oa=h+16|0;va(d);break b}if(i>>>0>d-c>>>0){Ig(g,d,(c+i|0)-d|0,c,c)}d=Ca(g)+(c<<2)|0;while(1){if((e|0)!=(h|0)){Cb(d,e);e=e+4|0;d=d+4|0;continue}break}H[b>>2]=0;Cb(d,b);Lc(g,c+i|0)}oa=b+16|0}if(jb(a+440|0,a+432|0)){H[f>>2]=H[f>>2]|2}b=H[a+440>>2];Fa(a+16|0);_a(k);oa=a+448|0;return b|0}function og(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;if(H[a+4>>2]!=H[gb(a)>>2]){c=oa-16|0;oa=c;H[c>>2]=a;e=H[a+4>>2];H[c+4>>2]=e;H[c+8>>2]=e+12;xh(gb(a),H[c+4>>2],b);H[c+4>>2]=H[c+4>>2]+12;Be(c);oa=c+16|0;return}i=oa-32|0;oa=i;j=gb(a);k=j;c=i+8|0;h=ye(a)+1|0;f=oa-16|0;oa=f;H[f+12>>2]=h;g=oa-16|0;oa=g;e=a;gb(a);H[g+12>>2]=357913941;H[g+8>>2]=2147483647;d=H[zc(g+12|0,g+8|0)>>2];oa=g+16|0;a:{if(d>>>0>=h>>>0){e=qd(e);if(e>>>0>>1>>>0){H[f+8>>2]=e<<1;d=H[ad(f+8|0,f+12|0)>>2]}oa=f+16|0;e=d;break a}$d();X()}g=ye(a);d=0;f=oa-16|0;oa=f;H[f+12>>2]=0;yf(c+12|0,j);if(e){d=e;if(d>>>0>357913941){Fe(2074);X()}d=Na(N(d,12))}H[c>>2]=d;g=N(g,12)+d|0;H[c+8>>2]=g;H[c+4>>2]=g;H[Ic(c)>>2]=N(e,12)+d;oa=f+16|0;xh(k,H[c+8>>2],b);H[c+8>>2]=H[c+8>>2]+12;ui(a);gb(a);b=c;g=c+4|0;e=g;d=H[a+4>>2];h=H[a>>2];if((d|0)!=(h|0)){f=H[e>>2];while(1){d=d-12|0;Vd(f-12|0,d);f=H[e>>2]-12|0;H[e>>2]=f;if((d|0)!=(h|0)){continue}break}}nc(a,g);nc(a+4|0,b+8|0);nc(gb(a),Ic(b));H[b>>2]=H[b+4>>2];ye(a);qd(a);qd(a);a=c;b=H[a+4>>2];if((b|0)!=H[a+8>>2]){while(1){e=H[a+16>>2];d=H[a+8>>2]-12|0;H[a+8>>2]=d;Hg(e,d);if((b|0)!=H[a+8>>2]){continue}break}}if(H[c>>2]){a=H[c>>2];Ic(c);Ba(a)}oa=i+32|0}function jj(a,b){var c=0,d=0,e=0,f=0,g=0;a:{b:{c:{c=H[a+4>>2];d:{if(c>>>0>2]){H[a+4>>2]=c+1;c=I[c|0];break d}c=La(a)}switch(c-43|0){case 0:case 2:break b;default:break c}}b=c-48|0;break a}f=(c|0)==45;g=!b;b=H[a+4>>2];e:{if(b>>>0>2]){H[a+4>>2]=b+1;c=I[b|0];break e}c=La(a)}b=c-48|0;if(!(g|b>>>0<10|!H[a+104>>2])){H[a+4>>2]=H[a+4>>2]-1}}f:{if(b>>>0<10){while(1){e=N(d,10)+c|0;b=H[a+4>>2];g:{if(b>>>0>2]){H[a+4>>2]=b+1;c=I[b|0];break g}c=La(a)}b=c-48|0;d=e-48|0;if((d|0)<214748364?b>>>0<=9:0){continue}break}e=d;d=d>>31;h:{if(b>>>0>=10){break h}while(1){e=Eq(e,d,10,0);c=e+c|0;b=pa;b=c>>>0>>0?b+1|0:b;e=c-48|0;d=b-(c>>>0<48)|0;b=H[a+4>>2];i:{if(b>>>0>2]){H[a+4>>2]=b+1;c=I[b|0];break i}c=La(a)}b=c-48|0;if(b>>>0>9){break h}if((d|0)<21474836?1:(d|0)<=21474836?e>>>0<2061584302:0){continue}break}}if(b>>>0<10){while(1){b=H[a+4>>2];j:{if(b>>>0>2]){H[a+4>>2]=b+1;b=I[b|0];break j}b=La(a)}if(b-48>>>0<10){continue}break}}if(H[a+104>>2]){H[a+4>>2]=H[a+4>>2]-1}a=e;e=f?0-a|0:a;d=f?0-(((a|0)!=0)+d|0)|0:d;break f}d=-2147483648;if(!H[a+104>>2]){break f}H[a+4>>2]=H[a+4>>2]-1;pa=-2147483648;return 0}pa=d;return e}function Ak(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;if(Mb(a,H[b+8>>2],e)){gf(b,c,d);return}a:{if(Mb(a,H[b>>2],e)){if(!(H[b+20>>2]!=(c|0)?H[b+16>>2]!=(c|0):0)){if((d|0)!=1){break a}H[b+32>>2]=1;return}H[b+32>>2]=d;if(H[b+44>>2]!=4){f=a+16|0;i=f+(H[a+12>>2]<<3)|0;j=b;b:{c:{while(1){d:{if(f>>>0>=i>>>0){break d}G[b+52>>1]=0;ff(f,b,c,c,1,e);if(I[b+54|0]){break d}e:{if(!I[b+53|0]){break e}if(I[b+52|0]){d=1;if(H[b+24>>2]==1){break c}h=1;g=1;if(I[a+8|0]&2){break e}break c}h=1;d=g;if(!(F[a+8|0]&1)){break c}}f=f+8|0;continue}break}d=g;a=4;if(!h){break b}}a=3}H[j+44>>2]=a;if(d&1){break a}}H[b+20>>2]=c;H[b+40>>2]=H[b+40>>2]+1;if(H[b+36>>2]!=1|H[b+24>>2]!=2){break a}F[b+54|0]=1;return}g=H[a+12>>2];f=a+16|0;le(f,b,c,d,e);if((g|0)<2){break a}g=f+(g<<3)|0;f=a+24|0;a=H[a+8>>2];if(H[b+36>>2]!=1?a&2:1){while(1){if(I[b+54|0]){break a}le(f,b,c,d,e);f=f+8|0;if(g>>>0>f>>>0){continue}break}break a}if(!(a&1)){while(1){if(I[b+54|0]|H[b+36>>2]==1){break a}le(f,b,c,d,e);f=f+8|0;if(g>>>0>f>>>0){continue}break a}}while(1){if(I[b+54|0]|(H[b+24>>2]==1?H[b+36>>2]==1:0)){break a}le(f,b,c,d,e);f=f+8|0;if(g>>>0>f>>>0){continue}break}}}function Tm(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0;a=oa-1072|0;oa=a;H[a+16>>2]=f;H[a+20>>2]=g;H[a+24>>2]=h;H[a+28>>2]=i;H[a+956>>2]=a+960;j=oj(a+960|0,a+16|0);H[a+544>>2]=151;o=Ya(a+536|0,0,a+544|0);H[a+544>>2]=151;k=Ya(a+528|0,0,a+544|0);l=a+544|0;a:{if(j>>>0>=100){j=Oa();H[a>>2]=f;H[a+4>>2]=g;H[a+8>>2]=h;H[a+12>>2]=i;j=tc(a+956|0,j,2064,a);if((j|0)==-1){break a}lb(o,H[a+956>>2]);lb(k,cb(j<<2));if(De(k)){break a}l=H[k>>2]}Ia(a+520|0,d);p=Ib(a+520|0);f=H[a+956>>2];Ec(p,f,f+j|0,l);m=(j|0)>=1?I[H[a+956>>2]]==45:m;n=Ea(a+488|0);g=bc(a+472|0);h=bc(a+456|0);Zh(c,m,a+520|0,a+512|0,a+508|0,a+504|0,n,g,h,a+452|0);H[a+48>>2]=151;i=Ya(a+40|0,0,a+48|0);c=a+48|0;f=H[a+452>>2];b:{if((f|0)<(j|0)){f=((wa(h)+(j-f<<1|1)|0)+wa(g)|0)+H[a+452>>2]|0;break b}f=((wa(h)+wa(g)|0)+H[a+452>>2]|0)+2|0}if(f>>>0>=101){lb(i,cb(f<<2));c=H[i>>2];if(!c){break a}}Yh(c,a+36|0,a+32|0,H[d+4>>2],l,(j<<2)+l|0,p,m,a+512|0,H[a+508>>2],H[a+504>>2],n,g,h,H[a+452>>2]);b=Dc(b,c,H[a+36>>2],H[a+32>>2],d,e);_a(i);va(h);va(g);va(n);Fa(a+520|0);_a(k);_a(o);oa=a+1072|0;return b|0}db();X()}function Wb(a,b,c){var d=0,e=0,f=0;if(c>>>0>=512){ka(a|0,b|0,c|0)|0;return a}e=a+c|0;a:{if(!((a^b)&3)){b:{if(!(a&3)){c=a;break b}if((c|0)<1){c=a;break b}c=a;while(1){F[c|0]=I[b|0];b=b+1|0;c=c+1|0;if(!(c&3)){break b}if(c>>>0>>0){continue}break}}d=e&-4;c:{if(d>>>0<64){break c}f=d+-64|0;if(f>>>0>>0){break c}while(1){H[c>>2]=H[b>>2];H[c+4>>2]=H[b+4>>2];H[c+8>>2]=H[b+8>>2];H[c+12>>2]=H[b+12>>2];H[c+16>>2]=H[b+16>>2];H[c+20>>2]=H[b+20>>2];H[c+24>>2]=H[b+24>>2];H[c+28>>2]=H[b+28>>2];H[c+32>>2]=H[b+32>>2];H[c+36>>2]=H[b+36>>2];H[c+40>>2]=H[b+40>>2];H[c+44>>2]=H[b+44>>2];H[c+48>>2]=H[b+48>>2];H[c+52>>2]=H[b+52>>2];H[c+56>>2]=H[b+56>>2];H[c+60>>2]=H[b+60>>2];b=b- -64|0;c=c- -64|0;if(f>>>0>=c>>>0){continue}break}}if(c>>>0>=d>>>0){break a}while(1){H[c>>2]=H[b>>2];b=b+4|0;c=c+4|0;if(d>>>0>c>>>0){continue}break}break a}if(e>>>0<4){c=a;break a}d=e-4|0;if(d>>>0>>0){c=a;break a}c=a;while(1){F[c|0]=I[b|0];F[c+1|0]=I[b+1|0];F[c+2|0]=I[b+2|0];F[c+3|0]=I[b+3|0];b=b+4|0;c=c+4|0;if(d>>>0>=c>>>0){continue}break}}if(c>>>0>>0){while(1){F[c|0]=I[b|0];b=b+1|0;c=c+1|0;if((e|0)!=(c|0)){continue}break}}return a}function Vm(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0;a=oa-464|0;oa=a;H[a+16>>2]=f;H[a+20>>2]=g;H[a+24>>2]=h;H[a+28>>2]=i;H[a+348>>2]=a+352;j=oj(a+352|0,a+16|0);H[a+240>>2]=151;o=Ya(a+232|0,0,a+240|0);H[a+240>>2]=151;k=Ya(a+224|0,0,a+240|0);l=a+240|0;a:{if(j>>>0>=100){j=Oa();H[a>>2]=f;H[a+4>>2]=g;H[a+8>>2]=h;H[a+12>>2]=i;j=tc(a+348|0,j,2064,a);if((j|0)==-1){break a}lb(o,H[a+348>>2]);lb(k,cb(j));if(De(k)){break a}l=H[k>>2]}Ia(a+216|0,d);p=Fb(a+216|0);f=H[a+348>>2];Wc(p,f,f+j|0,l);m=(j|0)>=1?I[H[a+348>>2]]==45:m;n=Ea(a+192|0);g=Ea(a+176|0);h=Ea(a+160|0);$h(c,m,a+216|0,a+208|0,a+207|0,a+206|0,n,g,h,a+156|0);H[a+48>>2]=151;i=Ya(a+40|0,0,a+48|0);c=a+48|0;f=H[a+156>>2];b:{if((f|0)<(j|0)){f=((wa(h)+(j-f<<1|1)|0)+wa(g)|0)+H[a+156>>2]|0;break b}f=((wa(h)+wa(g)|0)+H[a+156>>2]|0)+2|0}if(f>>>0>=101){lb(i,cb(f));c=H[i>>2];if(!c){break a}}_h(c,a+36|0,a+32|0,H[d+4>>2],l,j+l|0,p,m,a+208|0,F[a+207|0],F[a+206|0],n,g,h,H[a+156>>2]);b=pc(b,c,H[a+36>>2],H[a+32>>2],d,e);_a(i);va(h);va(g);va(n);Fa(a+216|0);_a(k);_a(o);oa=a+464|0;return b|0}db();X()}function Te(a,b,c,d,e,f,g){var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;i=oa-128|0;oa=i;H[i+120>>2]=b;k=Vi(c,d);H[i+16>>2]=151;p=Ya(i+8|0,0,i+16|0);j=i+16|0;a:{if(k>>>0>=101){j=cb(k);if(!j){break a}lb(p,j)}h=j;b=c;while(1)if((b|0)==(d|0)){b:while(1){c:{if(!(t=Bb(a,i+120|0),u=0,v=k,v?t:u)){if(kb(a,i+120|0)){H[f>>2]=H[f>>2]|2}break c}m=bb(a);if(!g){m=Se(e,m)}n=q+1|0;r=0;h=j;b=c;while(1)if((b|0)==(d|0)){q=n;if(!r){continue b}ib(a);h=j;b=c;if(k+l>>>0<2){continue b}while(1){if((b|0)==(d|0)){continue b}d:{if(I[h|0]!=2){break d}if((wa(b)|0)==(n|0)){break d}F[h|0]=0;l=l-1|0}h=h+1|0;b=b+12|0;continue}}else{e:{if(I[h|0]!=1){break e}o=F[Aa(b,q)|0];s=m&255;if(!g){o=Se(e,o)}f:{if((o&255)==(s|0)){r=1;if((wa(b)|0)!=(n|0)){break e}F[h|0]=2;l=l+1|0;break f}F[h|0]=0}k=k-1|0}h=h+1|0;b=b+12|0;continue}}break}g:{h:{while(1){if((c|0)==(d|0)){break h}if(I[j|0]!=2){j=j+1|0;c=c+12|0;continue}break}d=c;break g}H[f>>2]=H[f>>2]|4}_a(p);oa=i+128|0;return d}else{i:{if(!$b(b)){F[h|0]=1;break i}F[h|0]=2;l=l+1|0;k=k-1|0}h=h+1|0;b=b+12|0;continue}}db();X()}function hl(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0;d=oa-16|0;oa=d;a:{b:{if(!H[a+64>>2]){break b}c=a;if(!(I[a+92|0]&16)){hc(c,0,0,0);e=H[c+52>>2];c:{if(e>>>0>=9){if(I[c+98|0]){f=H[c+32>>2];Ac(c,f,(e+f|0)-1|0);break c}e=H[c+56>>2];Ac(c,e,(e+H[c+60>>2]|0)-1|0);break c}Ac(c,0,0)}H[c+92>>2]=16}f=H[a+20>>2];h=H[a+28>>2];if(!qb(b,-1)){if(!H[a+24>>2]){Ac(a,d+15|0,d+16|0)}c=Zc(b);F[H[a+24>>2]]=c;ch(a,1)}if(H[a+24>>2]!=H[a+20>>2]){d:{if(I[a+98|0]){c=H[a+24>>2]-H[a+20>>2]|0;if((Ub(H[a+20>>2],1,c,H[a+64>>2])|0)!=(c|0)){break b}break d}H[d+8>>2]=H[a+32>>2];i=a+72|0;while(1){c=H[a+68>>2];if(c){e=c;c=H[a+32>>2];c=Qd(e,i,H[a+20>>2],H[a+24>>2],d+4|0,c,c+H[a+52>>2]|0,d+8|0);if(H[a+20>>2]==H[d+4>>2]){break b}if((c|0)==3){c=H[a+24>>2]-H[a+20>>2]|0;if((Ub(H[a+20>>2],1,c,H[a+64>>2])|0)!=(c|0)){break b}break d}if(c>>>0>1){break b}g=H[a+32>>2];e=H[d+8>>2]-g|0;if((Ub(g,1,e,H[a+64>>2])|0)!=(e|0)){break b}if((c|0)!=1){break d}Ac(a,H[d+4>>2],H[a+24>>2]);ch(a,H[a+28>>2]-H[a+20>>2]|0);continue}break}db();X()}Ac(a,f,h)}a=re(b);break a}a=-1}oa=d+16|0;return a|0}function wn(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0;a=oa-256|0;oa=a;H[a+248>>2]=37;H[a+252>>2]=0;m=Oe(a+248|1,2618,H[c+4>>2]);H[a+204>>2]=a+208;i=Oa();a:{if(m){j=H[c+8>>2];H[a+72>>2]=g;H[a+76>>2]=h;k=a- -64|0;H[k>>2]=e;H[k+4>>2]=f;H[a+48>>2]=j;i=vb(a+208|0,30,i,a+248|0,a+48|0);break a}H[a+80>>2]=e;H[a+84>>2]=f;H[a+88>>2]=g;H[a+92>>2]=h;i=vb(a+208|0,30,i,a+248|0,a+80|0)}H[a+128>>2]=151;k=Ya(a+192|0,0,a+128|0);l=a+208|0;j=l;b:{if((i|0)>=30){i=Oa();c:{if(m){j=H[c+8>>2];H[a+24>>2]=g;H[a+28>>2]=h;H[a+16>>2]=e;H[a+20>>2]=f;H[a>>2]=j;i=tc(a+204|0,i,a+248|0,a);break c}H[a+32>>2]=e;H[a+36>>2]=f;H[a+40>>2]=g;H[a+44>>2]=h;i=tc(a+204|0,i,a+248|0,a+32|0)}if((i|0)==-1){break b}lb(k,H[a+204>>2]);j=H[a+204>>2]}f=i+j|0;g=Nb(j,f,c);H[a+128>>2]=151;e=Ya(a+120|0,0,a+128|0);d:{if(H[a+204>>2]==(a+208|0)){i=a+128|0;break d}i=cb(i<<1);if(!i){break b}lb(e,i);l=H[a+204>>2]}Ia(a+104|0,c);Di(l,g,f,i,a+116|0,a+112|0,a+104|0);Fa(a+104|0);b=pc(b,i,H[a+116>>2],H[a+112>>2],c,d);_a(e);_a(k);oa=a+256|0;return b|0}db();X()}function on(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0;a=oa-432|0;oa=a;H[a+424>>2]=37;H[a+428>>2]=0;m=Oe(a+424|1,2618,H[c+4>>2]);H[a+380>>2]=a+384;i=Oa();a:{if(m){j=H[c+8>>2];H[a+72>>2]=g;H[a+76>>2]=h;k=a- -64|0;H[k>>2]=e;H[k+4>>2]=f;H[a+48>>2]=j;i=vb(a+384|0,30,i,a+424|0,a+48|0);break a}H[a+80>>2]=e;H[a+84>>2]=f;H[a+88>>2]=g;H[a+92>>2]=h;i=vb(a+384|0,30,i,a+424|0,a+80|0)}H[a+128>>2]=151;k=Ya(a+368|0,0,a+128|0);l=a+384|0;j=l;b:{if((i|0)>=30){i=Oa();c:{if(m){j=H[c+8>>2];H[a+24>>2]=g;H[a+28>>2]=h;H[a+16>>2]=e;H[a+20>>2]=f;H[a>>2]=j;i=tc(a+380|0,i,a+424|0,a);break c}H[a+32>>2]=e;H[a+36>>2]=f;H[a+40>>2]=g;H[a+44>>2]=h;i=tc(a+380|0,i,a+424|0,a+32|0)}if((i|0)==-1){break b}lb(k,H[a+380>>2]);j=H[a+380>>2]}f=i+j|0;g=Nb(j,f,c);H[a+128>>2]=151;e=Ya(a+120|0,0,a+128|0);d:{if(H[a+380>>2]==(a+384|0)){i=a+128|0;break d}i=cb(i<<3);if(!i){break b}lb(e,i);l=H[a+380>>2]}Ia(a+104|0,c);Ai(l,g,f,i,a+116|0,a+112|0,a+104|0);Fa(a+104|0);b=Dc(b,i,H[a+116>>2],H[a+112>>2],c,d);_a(e);_a(k);oa=a+432|0;return b|0}db();X()}function Xm(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0;a=oa-624|0;oa=a;H[a+608>>2]=c;H[a+616>>2]=b;H[a+16>>2]=152;b=Ya(a+200|0,a+208|0,a+16|0);Ia(a+192|0,e);h=Ib(a+192|0);F[a+191|0]=0;a:{if(!ei(a+616|0,c,d,a+192|0,H[e+4>>2],f,a+191|0,h,b,a+196|0,a+608|0)){break a}c=I[2794]|I[2795]<<8|(I[2796]<<16|I[2797]<<24);F[a+183|0]=c;F[a+184|0]=c>>>8;F[a+185|0]=c>>>16;F[a+186|0]=c>>>24;c=I[2791]|I[2792]<<8|(I[2793]<<16|I[2794]<<24);H[a+176>>2]=I[2787]|I[2788]<<8|(I[2789]<<16|I[2790]<<24);H[a+180>>2]=c;Ec(h,a+176|0,a+186|0,a+128|0);H[a+16>>2]=151;d=Ya(a+8|0,0,a+16|0);c=a+16|0;b:{if((H[a+196>>2]-H[b>>2]|0)>=393){lb(d,cb((H[a+196>>2]-H[b>>2]>>2)+2|0));if(!H[d>>2]){break b}c=H[d>>2]}if(I[a+191|0]){F[c|0]=45;c=c+1|0}e=H[b>>2];while(1){if(K[a+196>>2]<=e>>>0){c:{F[c|0]=0;H[a>>2]=g;if((cj(a+16|0,a)|0)!=1){break c}_a(d);break a}}else{F[c|0]=I[(a+176|0)+(Wf(a+128|0,a+168|0,e)-(a+128|0)>>2)|0];c=c+1|0;e=e+4|0;continue}break}db();X()}db();X()}if(jb(a+616|0,a+608|0)){H[f>>2]=H[f>>2]|2}c=H[a+616>>2];Fa(a+192|0);_a(b);oa=a+624|0;return c|0}function Re(a,b,c,d,e,f,g){var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;i=oa-128|0;oa=i;H[i+120>>2]=b;k=Vi(c,d);H[i+16>>2]=151;p=Ya(i+8|0,0,i+16|0);j=i+16|0;a:{if(k>>>0>=101){j=cb(k);if(!j){break a}lb(p,j)}h=j;b=c;while(1)if((b|0)==(d|0)){b:while(1){c:{if(!(s=Ab(a,i+120|0),t=0,u=k,u?s:t)){if(jb(a,i+120|0)){H[f>>2]=H[f>>2]|2}break c}m=ab(a);if(!g){m=pb(e,m)}n=q+1|0;r=0;h=j;b=c;while(1)if((b|0)==(d|0)){q=n;if(!r){continue b}hb(a);h=j;b=c;if(k+l>>>0<2){continue b}while(1){if((b|0)==(d|0)){continue b}d:{if(I[h|0]!=2){break d}if((wa(b)|0)==(n|0)){break d}F[h|0]=0;l=l-1|0}h=h+1|0;b=b+12|0;continue}}else{e:{if(I[h|0]!=1){break e}o=H[Qe(b,q)>>2];if(!g){o=pb(e,o)}f:{if((m|0)==(o|0)){r=1;if((wa(b)|0)!=(n|0)){break e}F[h|0]=2;l=l+1|0;break f}F[h|0]=0}k=k-1|0}h=h+1|0;b=b+12|0;continue}}break}g:{h:{while(1){if((c|0)==(d|0)){break h}if(I[j|0]!=2){j=j+1|0;c=c+12|0;continue}break}d=c;break g}H[f>>2]=H[f>>2]|4}_a(p);oa=i+128|0;return d}else{i:{if(!$b(b)){F[h|0]=1;break i}F[h|0]=2;l=l+1|0;k=k-1|0}h=h+1|0;b=b+12|0;continue}}db();X()}function Zm(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0;a=oa-288|0;oa=a;H[a+272>>2]=c;H[a+280>>2]=b;H[a+16>>2]=152;b=Ya(a+152|0,a+160|0,a+16|0);Ia(a+144|0,e);h=Fb(a+144|0);F[a+143|0]=0;a:{if(!li(a+280|0,c,d,a+144|0,H[e+4>>2],f,a+143|0,h,b,a+148|0,a+260|0)){break a}c=I[2794]|I[2795]<<8|(I[2796]<<16|I[2797]<<24);F[a+135|0]=c;F[a+136|0]=c>>>8;F[a+137|0]=c>>>16;F[a+138|0]=c>>>24;c=I[2791]|I[2792]<<8|(I[2793]<<16|I[2794]<<24);H[a+128>>2]=I[2787]|I[2788]<<8|(I[2789]<<16|I[2790]<<24);H[a+132>>2]=c;Wc(h,a+128|0,a+138|0,a+118|0);H[a+16>>2]=151;d=Ya(a+8|0,0,a+16|0);c=a+16|0;b:{if((H[a+148>>2]-H[b>>2]|0)>=99){lb(d,cb((H[a+148>>2]-H[b>>2]|0)+2|0));if(!H[d>>2]){break b}c=H[d>>2]}if(I[a+143|0]){F[c|0]=45;c=c+1|0}e=H[b>>2];while(1){if(K[a+148>>2]<=e>>>0){c:{F[c|0]=0;H[a>>2]=g;if((cj(a+16|0,a)|0)!=1){break c}_a(d);break a}}else{F[c|0]=I[(($f(a+118|0,a+128|0,e)-a|0)+a|0)+10|0];c=c+1|0;e=e+1|0;continue}break}db();X()}db();X()}if(kb(a+280|0,a+272|0)){H[f>>2]=H[f>>2]|2}c=H[a+280>>2];Fa(a+144|0);_a(b);oa=a+288|0;return c|0}function ig(a,b,c,d){var e=0,f=0,g=0,h=0,i=0;g=oa-32|0;oa=g;e=d&2147483647;h=e;f=e-1006698496|0;e=e-1140785152|0;i=c;a:{if((f|0)==(e|0)&c>>>0>c>>>0|e>>>0>f>>>0){e=d<<4|c>>>28;c=c<<4|b>>>28;b=b&268435455;h=b;if((b|0)==134217728&a>>>0>=1|b>>>0>134217728){e=e+1073741824|0;a=c+1|0;e=a>>>0<1?e+1|0:e;f=a;break a}f=c;e=e+1073741824|0;if(a|h^134217728){break a}b=c&1;a=b+f|0;e=a>>>0>>0?e+1|0:e;f=a;break a}if(!(!i&(h|0)==2147418112?!(a|b):h>>>0<2147418112)){f=c;c=d<<4|c>>>28;f=f<<4|b>>>28;e=c&524287|2146959360;break a}f=0;e=2146435072;if(h>>>0>1140785151){break a}e=0;h=h>>>16|0;if(h>>>0<15249){break a}e=d&65535|65536;xb(g+16|0,a,b,c,e,h-15233|0);hd(g,a,b,c,e,15361-h|0);e=H[g+4>>2];h=e;a=H[g+8>>2];c=H[g+12>>2]<<4|a>>>28;f=a<<4|e>>>28;e=c;a=h&268435455;c=a;b=H[g>>2]|((H[g+16>>2]|H[g+24>>2])!=0|(H[g+20>>2]|H[g+28>>2])!=0);if((a|0)==134217728&b>>>0>=1|a>>>0>134217728){a=f+1|0;e=a>>>0<1?e+1|0:e;f=a;break a}if(b|c^134217728){break a}a=f+(f&1)|0;e=a>>>0>>0?e+1|0:e;f=a}oa=g+32|0;x(0,f|0);x(1,d&-2147483648|e);return+z()}function em(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;a=c;while(1){a:{if(e>>>0<=i>>>0|a>>>0>=d>>>0){break a}g=F[a|0];b=g&255;b:{if((g|0)>=0){g=1;if(b>>>0<=1114111){break b}break a}if(b>>>0<194){break a}if(b>>>0<=223){if((d-a|0)<2){break a}f=I[a+1|0];if((f&192)!=128){break a}g=2;if((f&63|b<<6&1984)>>>0<=1114111){break b}break a}c:{d:{if(b>>>0<=239){if((d-a|0)<3){break a}h=I[a+2|0];f=I[a+1|0];if((b|0)==237){break d}if((b|0)==224){if((f&224)==160){break c}break a}if((f&192)!=128){break a}break c}if((d-a|0)<4|b>>>0>244){break a}h=I[a+3|0];j=I[a+2|0];f=I[a+1|0];e:{f:{switch(b-240|0){case 0:if((f+112&255)>>>0<48){break e}break a;case 4:if((f&240)==128){break e}break a;default:break f}}if((f&192)!=128){break a}}if((j&192)!=128|(h&192)!=128){break a}g=4;if((h&63|(j<<6&4032|(b<<18&1835008|(f&63)<<12)))>>>0>1114111){break a}break b}if((f&224)!=128){break a}}if((h&192)!=128){break a}g=3;if((h&63|(b<<12&61440|(f&63)<<6))>>>0>1114111){break a}}i=i+1|0;a=a+g|0;continue}break}return a-c|0}function hm(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;a=c;while(1){a:{if(e>>>0<=g>>>0|a>>>0>=d>>>0){break a}b=I[a|0];if(b>>>0>1114111){break a}f=a+1|0;b:{if(b<<24>>24>=0){break b}if(b>>>0<194){break a}if(b>>>0<=223){if((d-a|0)<2){break a}f=I[a+1|0];if((f&192)!=128|(f&63|b<<6&1984)>>>0>1114111){break a}f=a+2|0;break b}c:{d:{if(b>>>0<=239){if((d-a|0)<3){break a}h=I[a+2|0];f=I[a+1|0];if((b|0)==237){break d}if((b|0)==224){if((f&224)==160){break c}break a}if((f&192)!=128){break a}break c}if((d-a|0)<4|b>>>0>244|e-g>>>0<2){break a}h=I[a+3|0];i=I[a+2|0];f=I[a+1|0];e:{f:{switch(b-240|0){case 0:if((f+112&255)>>>0<48){break e}break a;case 4:if((f&240)==128){break e}break a;default:break f}}if((f&192)!=128){break a}}if((i&192)!=128|(h&192)!=128|(h&63|(i<<6&4032|(b<<18&1835008|(f&63)<<12)))>>>0>1114111){break a}g=g+1|0;f=a+4|0;break b}if((f&224)!=128){break a}}if((h&192)!=128|(h&63|(b<<12&61440|(f&63)<<6))>>>0>1114111){break a}f=a+3|0}a=f;g=g+1|0;continue}break}return a-c|0}function Cq(a){a=a|0;var b=0,c=0,d=0;c=oa-16|0;oa=c;b=H[a+8>>2];if(b){Ba(Va(b))}b=Na(12);Sa(b);H[a+8>>2]=b;b=H[a+12>>2];if(b){Ba(Va(b))}b=Na(12);Sa(b);H[a+12>>2]=b;b=H[a+16>>2];if(b){Ba(Va(b))}b=Na(12);Sa(b);H[a+16>>2]=b;b=H[a+20>>2];if(b){Ba(Va(b))}b=Na(12);Sa(b);H[a+20>>2]=b;b=H[a+24>>2];if(b){Ba(Va(b))}b=Na(12);Sa(b);H[a+24>>2]=b;b=H[a+28>>2];if(b){Ba(Va(b))}b=Na(12);d=Sa(b);H[a+28>>2]=b;b=Na(12);Sa(b);H[c+12>>2]=b;ya(d,c+12|0);b=H[a+32>>2];if(b){Ba(Va(b))}b=Na(12);Sa(b);H[a+32>>2]=b;b=H[a+36>>2];if(b){Ba(Va(b))}b=Na(12);Sa(b);H[a+36>>2]=b;b=H[a+40>>2];if(b){Ba(Va(b))}b=Na(12);d=Sa(b);H[a+40>>2]=b;H[c+8>>2]=0;ya(d,c+8|0);b=H[a+44>>2];if(b){Ba(Va(b))}b=Na(12);Sa(b);H[a+104>>2]=0;H[a+96>>2]=0;F[a+87|0]=0;G[a+68>>1]=0;H[a+64>>2]=0;H[a+44>>2]=b;H[a+72>>2]=0;F[a+75|0]=0;F[a+76|0]=0;F[a+77|0]=0;F[a+78|0]=0;F[a+129|0]=0;H[a+120>>2]=0;H[a+124>>2]=0;F[a+113|0]=123;F[a+114|0]=123;F[a+115|0]=123;F[a+116|0]=123;H[a+132>>2]=0;F[a+79|0]=0;F[a+80|0]=0;oa=c+16|0}function gm(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;a=oa-16|0;oa=a;H[a+12>>2]=c;H[a+8>>2]=f;H[a+12>>2]=c;H[a+8>>2]=f;b=H[a+12>>2];a:{while(1){if(b>>>0>=d>>>0){c=0;break a}c=2;b=H[b>>2];if((b&-2048)==55296|b>>>0>1114111){break a}b:{c:{if(b>>>0<=127){c=1;f=H[a+8>>2];if((g-f|0)<1){break a}H[a+8>>2]=f+1;F[f|0]=b;break c}if(b>>>0<=2047){c=H[a+8>>2];if((g-c|0)<2){break b}H[a+8>>2]=c+1;F[c|0]=b>>>6|192;c=H[a+8>>2];H[a+8>>2]=c+1;F[c|0]=b&63|128;break c}c=H[a+8>>2];f=g-c|0;if(b>>>0<=65535){if((f|0)<3){break b}H[a+8>>2]=c+1;F[c|0]=b>>>12|224;c=H[a+8>>2];H[a+8>>2]=c+1;F[c|0]=b>>>6&63|128;c=H[a+8>>2];H[a+8>>2]=c+1;F[c|0]=b&63|128;break c}if((f|0)<4){break b}H[a+8>>2]=c+1;F[c|0]=b>>>18|240;c=H[a+8>>2];H[a+8>>2]=c+1;F[c|0]=b>>>12&63|128;c=H[a+8>>2];H[a+8>>2]=c+1;F[c|0]=b>>>6&63|128;c=H[a+8>>2];H[a+8>>2]=c+1;F[c|0]=b&63|128}b=H[a+12>>2]+4|0;H[a+12>>2]=b;continue}break}c=1}H[e>>2]=H[a+12>>2];H[h>>2]=H[a+8>>2];oa=a+16|0;return c|0}function Xf(a,b,c,d,e,f,g,h,i,j,k,l){var m=0;m=oa-16|0;oa=m;H[m+12>>2]=a;a:{b:{if((a|0)==(f|0)){if(!I[b|0]){break b}a=0;F[b|0]=0;b=H[e>>2];H[e>>2]=b+1;F[b|0]=46;if(!wa(h)){break a}b=H[j>>2];if((b-i|0)>159){break a}c=H[k>>2];H[j>>2]=b+4;H[b>>2]=c;break a}c:{if((a|0)!=(g|0)){break c}if(!wa(h)){break c}if(!I[b|0]){break b}a=0;b=H[j>>2];if((b-i|0)>159){break a}a=H[k>>2];H[j>>2]=b+4;H[b>>2]=a;a=0;H[k>>2]=0;break a}a=-1;f=Wf(l,l+128|0,m+12|0)-l|0;if((f|0)>124){break a}g=I[(f>>2)+13232|0];d:{e:{switch(Gq(f-88|0,30)|0){case 2:case 3:b=H[e>>2];if((I[b-1|0]&95)!=(I[c|0]&127)?(b|0)!=(d|0):0){break a}H[e>>2]=b+1;F[b|0]=g;a=0;break a;case 0:case 1:F[c|0]=80;break d;default:break e}}a=F[c|0];if((a|0)!=(g&95)){break d}F[c|0]=a|128;if(!I[b|0]){break d}F[b|0]=0;if(!wa(h)){break d}a=H[j>>2];if((a-i|0)>159){break d}b=H[k>>2];H[j>>2]=a+4;H[a>>2]=b}a=H[e>>2];H[e>>2]=a+1;F[a|0]=g;a=0;if((f|0)>84){break a}H[k>>2]=H[k>>2]+1;break a}a=-1}oa=m+16|0;return a}function ag(a,b,c,d,e,f,g,h,i,j,k,l){var m=0;m=oa-16|0;oa=m;F[m+15|0]=a;a:{b:{if((a|0)==(f|0)){if(!I[b|0]){break b}a=0;F[b|0]=0;b=H[e>>2];H[e>>2]=b+1;F[b|0]=46;if(!wa(h)){break a}b=H[j>>2];if((b-i|0)>159){break a}c=H[k>>2];H[j>>2]=b+4;H[b>>2]=c;break a}c:{if((a|0)!=(g|0)){break c}if(!wa(h)){break c}if(!I[b|0]){break b}a=0;b=H[j>>2];if((b-i|0)>159){break a}a=H[k>>2];H[j>>2]=b+4;H[b>>2]=a;a=0;H[k>>2]=0;break a}a=-1;f=$f(l,l+32|0,m+15|0)-l|0;if((f|0)>31){break a}g=I[f+13232|0];d:{e:{switch(f-22|0){case 2:case 3:b=H[e>>2];if((I[b-1|0]&95)!=(I[c|0]&127)?(b|0)!=(d|0):0){break a}H[e>>2]=b+1;F[b|0]=g;a=0;break a;case 0:case 1:F[c|0]=80;break d;default:break e}}a=F[c|0];if((a|0)!=(g&95)){break d}F[c|0]=a|128;if(!I[b|0]){break d}F[b|0]=0;if(!wa(h)){break d}a=H[j>>2];if((a-i|0)>159){break d}b=H[k>>2];H[j>>2]=a+4;H[a>>2]=b}a=H[e>>2];H[e>>2]=a+1;F[a|0]=g;a=0;if((f|0)>21){break a}H[k>>2]=H[k>>2]+1;break a}a=-1}oa=m+16|0;return a}function ij(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0;h=oa-32|0;oa=h;f=d&2147483647;g=f;e=f-1065418752|0;i=f-1082064896|0;f=c;a:{if((e|0)==(i|0)&f>>>0>>0|e>>>0>>0){g=(d&33554431)<<7|c>>>25;f=0;j=f;i=c&33554431;if(!(!f&(i|0)==16777216?!(a|b):!f&i>>>0<16777216)){e=g+1073741825|0;break a}e=g+1073741824|0;if(i^16777216|a|(b|j)){break a}e=(g&1)+e|0;break a}if(!(!f&(g|0)==2147418112?!(a|b):g>>>0<2147418112)){e=((d&33554431)<<7|c>>>25)&4194303|2143289344;break a}e=2139095040;if(g>>>0>1082064895){break a}e=0;f=g>>>16|0;if(f>>>0<16145){break a}g=c;e=d&65535|65536;xb(h+16|0,a,b,g,e,f-16129|0);hd(h,a,b,g,e,16257-f|0);b=H[h+8>>2];e=(H[h+12>>2]&33554431)<<7|b>>>25;g=H[h+4>>2];f=g;a=0;i=a;j=H[h>>2]|((H[h+16>>2]|H[h+24>>2])!=0|(H[h+20>>2]|H[h+28>>2])!=0);b=b&33554431;if(!(!a&(b|0)==16777216?!(f|j):!a&b>>>0<16777216)){e=e+1|0;break a}if(b^16777216|j|(f|i)){break a}e=(e&1)+e|0}oa=h+32|0;return x(2,d&-2147483648|e),B()}function We(a,b,c,d){var e=0,f=0,g=0,h=0,i=0;e=oa-160|0;oa=e;Wb(e+8|0,8416,144);a:{b:{if(b-1>>>0>=2147483647){if(b){break b}b=1;a=e+159|0}H[e+52>>2]=a;H[e+28>>2]=a;f=-2-a|0;f=b>>>0>f>>>0?f:b;H[e+56>>2]=f;a=a+f|0;H[e+36>>2]=a;H[e+24>>2]=a;a=e+8|0;b=oa-208|0;oa=b;H[b+204>>2]=d;Vb(b+160|0,0,40);H[b+200>>2]=H[b+204>>2];c:{if((hg(0,c,b+200|0,b+80|0,b+160|0)|0)<0){a=-1;break c}h=H[a+76>>2]>=0;d=H[a>>2];if(F[a+74|0]<=0){H[a>>2]=d&-33}i=d&32;d:{if(H[a+48>>2]){c=hg(a,c,b+200|0,b+80|0,b+160|0);break d}H[a+48>>2]=80;H[a+16>>2]=b+80;H[a+28>>2]=b;H[a+20>>2]=b;d=H[a+44>>2];H[a+44>>2]=b;g=hg(a,c,b+200|0,b+80|0,b+160|0);c=g;if(!d){break d}qa[H[a+36>>2]](a,0,0)|0;H[a+48>>2]=0;H[a+44>>2]=d;H[a+28>>2]=0;H[a+16>>2]=0;c=H[a+20>>2];H[a+20>>2]=0;c=c?g:-1}d=a;a=H[a>>2];H[d>>2]=a|i;a=a&32?-1:c;if(!h){break c}}oa=b+208|0;if(!f){break a}b=H[e+28>>2];F[b-((b|0)==H[e+24>>2])|0]=0;break a}H[6070]=61;a=-1}oa=e+160|0;return a}function Sg(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0;c=oa-32|0;oa=c;a:{if(I[a+52|0]){d=H[a+48>>2];if(!b){break a}F[a+52|0]=0;H[a+48>>2]=-1;break a}H[c+24>>2]=1;e=H[vf(c+24|0,a+44|0)>>2];h=(e|0)>0?e:0;b:{while(1){if((d|0)!=(h|0)){f=Ze(H[a+32>>2]);if((f|0)==-1){break b}F[(c+24|0)+d|0]=f;d=d+1|0;continue}break}c:{if(I[a+53|0]){F[c+23|0]=I[c+24|0];break c}h=c+24|0;while(1){d:{d=H[a+40>>2];f=H[d>>2];i=H[d+4>>2];e:{g=d;d=(c+24|0)+e|0;switch(wf(H[a+36>>2],g,c+24|0,d,c+16|0,c+23|0,h,c+12|0)-1|0){case 0:break e;case 1:break b;case 2:break d;default:break c}}g=H[a+40>>2];H[g>>2]=f;H[g+4>>2]=i;if((e|0)==8){break b}f=Ze(H[a+32>>2]);if((f|0)==-1){break b}F[d|0]=f;e=e+1|0;continue}break}F[c+23|0]=I[c+24|0]}f:{if(!b){while(1){if((e|0)<1){break f}e=e-1|0;if((pe(Sb(F[e+(c+24|0)|0]),H[a+32>>2])|0)!=-1){continue}break b}}H[a+48>>2]=Sb(F[c+23|0])}d=Sb(F[c+23|0]);break a}d=-1}oa=c+32|0;return d}function Fq(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;a:{b:{c:{d:{e:{f:{g:{h:{i:{j:{e=b;if(b){d=c;if(!d){break j}break i}a=(a>>>0)/(c>>>0)|0;pa=0;break a}if(!a){break h}break g}if(!(d-1&d)){break f}h=(Q(d)+33|0)-Q(e)|0;i=0-h|0;break d}a=(e>>>0)/0|0;pa=0;break a}d=32-Q(e)|0;if(d>>>0<31){break e}break c}if((d|0)==1){break b}d=d?31-Q(d-1^d)|0:32;c=d&31;if((d&63)>>>0>=32){e=0;a=b>>>c|0}else{e=b>>>c|0;a=((1<>>c}pa=e;break a}h=d+1|0;i=63-d|0}d=b;e=h&63;f=e&31;if(e>>>0>=32){e=0;f=d>>>f|0}else{e=d>>>f|0;f=((1<>>f}i=i&63;d=i&31;if(i>>>0>=32){b=a<>>32-d|b<>>31;j=g;e=e<<1|f>>>31;g=i-(e+(d>>>0>>0)|0)>>31;k=c&g;f=j-k|0;e=e-(j>>>0>>0)|0;b=b<<1|a>>>31;a=l|a<<1;g=g&1;l=g;h=h-1|0;if(h){continue}break}}pa=b<<1|a>>>31;a=g|a<<1;break a}a=0;b=0}pa=b}return a}function Pg(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0;c=oa-32|0;oa=c;a:{if(I[a+52|0]){d=H[a+48>>2];if(!b){break a}F[a+52|0]=0;H[a+48>>2]=-1;break a}H[c+24>>2]=1;e=H[vf(c+24|0,a+44|0)>>2];h=(e|0)>0?e:0;b:{while(1){if((d|0)!=(h|0)){f=Ze(H[a+32>>2]);if((f|0)==-1){break b}F[(c+24|0)+d|0]=f;d=d+1|0;continue}break}c:{if(I[a+53|0]){H[c+20>>2]=F[c+24|0];break c}h=c+24|0;while(1){d:{d=H[a+40>>2];f=H[d>>2];i=H[d+4>>2];e:{g=d;d=(c+24|0)+e|0;switch(wf(H[a+36>>2],g,c+24|0,d,c+16|0,c+20|0,h,c+12|0)-1|0){case 0:break e;case 1:break b;case 2:break d;default:break c}}g=H[a+40>>2];H[g>>2]=f;H[g+4>>2]=i;if((e|0)==8){break b}f=Ze(H[a+32>>2]);if((f|0)==-1){break b}F[d|0]=f;e=e+1|0;continue}break}H[c+20>>2]=F[c+24|0]}f:{if(!b){while(1){if((e|0)<1){break f}e=e-1|0;if((pe(F[e+(c+24|0)|0],H[a+32>>2])|0)!=-1){continue}break b}}H[a+48>>2]=H[c+20>>2]}d=H[c+20>>2];break a}d=-1}oa=c+32|0;return d}function Fn(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;a=oa-384|0;oa=a;H[a+368>>2]=c;H[a+376>>2]=b;Yf(a+216|0,d,a+240|0,a+236|0,a+232|0);b=Ea(a+200|0);Da(b,Ja(b));c=Aa(b,0);H[a+196>>2]=c;H[a+28>>2]=a+32;H[a+24>>2]=0;F[a+23|0]=1;F[a+22|0]=69;while(1){a:{if(!Ab(a+376|0,a+368|0)){break a}if(H[a+196>>2]==(wa(b)+c|0)){d=wa(b);Da(b,wa(b)<<1);Da(b,Ja(b));c=Aa(b,0);H[a+196>>2]=d+c}if(Xf(ab(a+376|0),a+23|0,a+22|0,c,a+196|0,H[a+236>>2],H[a+232>>2],a+216|0,a+32|0,a+28|0,a+24|0,a+240|0)){break a}hb(a+376|0);continue}break}b:{if(!wa(a+216|0)|!I[a+23|0]){break b}d=H[a+28>>2];if((d-(a+32|0)|0)>159){break b}H[a+28>>2]=d+4;H[d>>2]=H[a+24>>2]}Li(a,c,H[a+196>>2],e);c=H[a+4>>2];H[f>>2]=H[a>>2];H[f+4>>2]=c;c=H[a+12>>2];H[f+8>>2]=H[a+8>>2];H[f+12>>2]=c;wb(a+216|0,a+32|0,H[a+28>>2],e);if(jb(a+376|0,a+368|0)){H[e>>2]=H[e>>2]|2}c=H[a+376>>2];va(b);va(a+216|0);oa=a+384|0;return c|0}function On(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;a=oa-288|0;oa=a;H[a+272>>2]=c;H[a+280>>2]=b;bg(a+224|0,d,a+240|0,a+239|0,a+238|0);b=Ea(a+208|0);Da(b,Ja(b));c=Aa(b,0);H[a+204>>2]=c;H[a+28>>2]=a+32;H[a+24>>2]=0;F[a+23|0]=1;F[a+22|0]=69;while(1){a:{if(!Bb(a+280|0,a+272|0)){break a}if(H[a+204>>2]==(wa(b)+c|0)){d=wa(b);Da(b,wa(b)<<1);Da(b,Ja(b));c=Aa(b,0);H[a+204>>2]=d+c}if(ag(bb(a+280|0),a+23|0,a+22|0,c,a+204|0,F[a+239|0],F[a+238|0],a+224|0,a+32|0,a+28|0,a+24|0,a+240|0)){break a}ib(a+280|0);continue}break}b:{if(!wa(a+224|0)|!I[a+23|0]){break b}d=H[a+28>>2];if((d-(a+32|0)|0)>159){break b}H[a+28>>2]=d+4;H[d>>2]=H[a+24>>2]}Li(a,c,H[a+204>>2],e);c=H[a+4>>2];H[f>>2]=H[a>>2];H[f+4>>2]=c;c=H[a+12>>2];H[f+8>>2]=H[a+8>>2];H[f+12>>2]=c;wb(a+224|0,a+32|0,H[a+28>>2],e);if(kb(a+280|0,a+272|0)){H[e>>2]=H[e>>2]|2}c=H[a+280>>2];va(b);va(a+224|0);oa=a+288|0;return c|0}function yn(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;var f=0,g=0,h=0,i=0,j=0,k=0;a=oa-208|0;oa=a;H[a+200>>2]=37;H[a+204>>2]=0;h=Oe(a+200|1,7628,H[c+4>>2]);H[a+156>>2]=a+160;f=Oa();a:{if(h){g=H[c+8>>2];M[a+40>>3]=e;H[a+32>>2]=g;f=vb(a+160|0,30,f,a+200|0,a+32|0);break a}M[a+48>>3]=e;f=vb(a+160|0,30,f,a+200|0,a+48|0)}H[a+80>>2]=151;j=Ya(a+144|0,0,a+80|0);i=a+160|0;g=i;b:{if((f|0)>=30){f=Oa();c:{if(h){g=H[c+8>>2];M[a+8>>3]=e;H[a>>2]=g;f=tc(a+156|0,f,a+200|0,a);break c}M[a+16>>3]=e;f=tc(a+156|0,f,a+200|0,a+16|0)}if((f|0)==-1){break b}lb(j,H[a+156>>2]);g=H[a+156>>2]}h=f+g|0;k=Nb(g,h,c);H[a+80>>2]=151;g=Ya(a+72|0,0,a+80|0);d:{if(H[a+156>>2]==(a+160|0)){f=a+80|0;break d}f=cb(f<<1);if(!f){break b}lb(g,f);i=H[a+156>>2]}Ia(a+56|0,c);Di(i,k,h,f,a+68|0,a- -64|0,a+56|0);Fa(a+56|0);b=pc(b,f,H[a+68>>2],H[a+64>>2],c,d);_a(g);_a(j);oa=a+208|0;return b|0}db();X()}function pn(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;var f=0,g=0,h=0,i=0,j=0,k=0;a=oa-384|0;oa=a;H[a+376>>2]=37;H[a+380>>2]=0;h=Oe(a+376|1,7628,H[c+4>>2]);H[a+332>>2]=a+336;f=Oa();a:{if(h){g=H[c+8>>2];M[a+40>>3]=e;H[a+32>>2]=g;f=vb(a+336|0,30,f,a+376|0,a+32|0);break a}M[a+48>>3]=e;f=vb(a+336|0,30,f,a+376|0,a+48|0)}H[a+80>>2]=151;j=Ya(a+320|0,0,a+80|0);i=a+336|0;g=i;b:{if((f|0)>=30){f=Oa();c:{if(h){g=H[c+8>>2];M[a+8>>3]=e;H[a>>2]=g;f=tc(a+332|0,f,a+376|0,a);break c}M[a+16>>3]=e;f=tc(a+332|0,f,a+376|0,a+16|0)}if((f|0)==-1){break b}lb(j,H[a+332>>2]);g=H[a+332>>2]}h=f+g|0;k=Nb(g,h,c);H[a+80>>2]=151;g=Ya(a+72|0,0,a+80|0);d:{if(H[a+332>>2]==(a+336|0)){f=a+80|0;break d}f=cb(f<<3);if(!f){break b}lb(g,f);i=H[a+332>>2]}Ia(a+56|0,c);Ai(i,k,h,f,a+68|0,a- -64|0,a+56|0);Fa(a+56|0);b=Dc(b,f,H[a+68>>2],H[a+64>>2],c,d);_a(g);_a(j);oa=a+384|0;return b|0}db();X()}function Bc(a,b,c,d,e,f,g,h){var i=0,j=0,k=0;i=oa-32|0;oa=i;H[i+16>>2]=c;H[i+24>>2]=b;Ia(i+8|0,d);j=Ib(i+8|0);Fa(i+8|0);H[e>>2]=0;c=0;a:{while(1){if((g|0)==(h|0)|c){break a}b:{if(jb(i+24|0,i+16|0)){break b}c:{if((yd(j,H[g>>2])|0)==37){c=g+4|0;if((h|0)==(c|0)){break b}k=0;b=yd(j,H[c>>2]);d:{if(!((b|0)==69|(b&255)==48)){c=g;break d}if((g+8|0)==(h|0)){break b}k=b;b=yd(j,H[g+8>>2])}H[i+24>>2]=qa[H[H[a>>2]+36>>2]](a,H[i+24>>2],H[i+16>>2],d,e,f,b,k);g=c+8|0;break c}if(cc(j,8192,H[g>>2])){while(1){e:{g=g+4|0;if((h|0)==(g|0)){g=h;break e}if(cc(j,8192,H[g>>2])){continue}}break}while(1){if(!Ab(i+24|0,i+16|0)){break c}if(!cc(j,8192,ab(i+24|0))){break c}hb(i+24|0);continue}}if((pb(j,ab(i+24|0))|0)==(pb(j,H[g>>2])|0)){g=g+4|0;hb(i+24|0);break c}H[e>>2]=4}c=H[e>>2];continue}break}H[e>>2]=4}if(jb(i+24|0,i+16|0)){H[e>>2]=H[e>>2]|2}oa=i+32|0;return H[i+24>>2]}function Ym(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;a=oa-160|0;oa=a;H[a+144>>2]=c;H[a+152>>2]=b;H[a+20>>2]=152;j=Ya(a+24|0,a+32|0,a+20|0);Ia(a+16|0,e);b=Fb(a+16|0);F[a+15|0]=0;if(li(a+152|0,c,d,a+16|0,H[e+4>>2],f,a+15|0,b,j,a+20|0,a+132|0)){wj(g);if(I[a+15|0]){Od(g,pb(b,45))}b=pb(b,48);e=H[j>>2];h=H[a+20>>2];c=h-1|0;b=b&255;while(1){if(!((b|0)!=I[e|0]|c>>>0<=e>>>0)){e=e+1|0;continue}break}c=oa-32|0;oa=c;b=wa(g);d=Ja(g);i=th(e,h);a:{if(!i){break a}if(qh(e,Ca(g),Ca(g)+wa(g)|0)){d=oa-16|0;oa=d;b=c+16|0;Xi(b,e,h);oa=d+16|0;Lg(g,Ca(b),wa(b));va(b);break a}if(d-b>>>0>>0){pf(g,d,(b+i|0)-d|0,b,b)}d=Ca(g)+b|0;while(1){if((e|0)!=(h|0)){nb(d,e);e=e+1|0;d=d+1|0;continue}break}F[c+15|0]=0;nb(d,c+15|0);Lc(g,b+i|0)}oa=c+32|0}if(kb(a+152|0,a+144|0)){H[f>>2]=H[f>>2]|2}b=H[a+152>>2];Fa(a+16|0);_a(j);oa=a+160|0;return b|0}function Cc(a,b,c,d,e,f,g,h){var i=0,j=0,k=0;i=oa-32|0;oa=i;H[i+16>>2]=c;H[i+24>>2]=b;Ia(i+8|0,d);j=Fb(i+8|0);Fa(i+8|0);H[e>>2]=0;c=0;a:{while(1){if((g|0)==(h|0)|c){break a}b:{if(kb(i+24|0,i+16|0)){break b}c:{if((zd(j,F[g|0])|0)==37){c=g+1|0;if((h|0)==(c|0)){break b}k=0;b=zd(j,F[c|0]);d:{if(!((b|0)==69|(b&255)==48)){c=g;break d}if((g+2|0)==(h|0)){break b}k=b;b=zd(j,F[g+2|0])}H[i+24>>2]=qa[H[H[a>>2]+36>>2]](a,H[i+24>>2],H[i+16>>2],d,e,f,b,k);g=c+2|0;break c}if(dc(j,8192,F[g|0])){while(1){e:{g=g+1|0;if((h|0)==(g|0)){g=h;break e}if(dc(j,8192,F[g|0])){continue}}break}while(1){if(!Bb(i+24|0,i+16|0)){break c}if(!dc(j,8192,bb(i+24|0))){break c}ib(i+24|0);continue}}if((Se(j,bb(i+24|0))|0)==(Se(j,F[g|0])|0)){g=g+1|0;ib(i+24|0);break c}H[e>>2]=4}c=H[e>>2];continue}break}H[e>>2]=4}if(kb(i+24|0,i+16|0)){H[e>>2]=H[e>>2]|2}oa=i+32|0;return H[i+24>>2]}function ug(a,b,c,d,e,f){var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;g=oa-16|0;oa=g;m=wa(b)-c|0;h=1;l=wa(b)-c|0;a:{b:{if((l|0)<2){break b}n=c;while(1){j=h+n|0;k=Aa(b,j);c:{if(i){j=Ra(b,j,2,22212);i=(j|0)!=0;h=!j+h|0;break c}i=0;k=I[k|0];if(Db(k<<24>>24)){break c}if((k|0)!=47){break b}i=l;if(!Ra(b,j,2,22188)){break a}i=!Ra(b,j,2,22200);h=i+h|0}h=h+1|0;if((l|0)>(h|0)){continue}break}}i=h}d:{if((m|0)==(i|0)){H[g+12>>2]=d;if(!mb(H[a+36>>2])){d=H[Qa(H[a+36>>2])>>2];H[g+12>>2]=d}b=H[a+36>>2];H[g+8>>2]=H[a+100>>2]+d;ya(b,g+8|0);if(!f){break d}xc(H[a+44>>2],g+12|0);break d}if(f){b=H[a+44>>2];H[g+12>>2]=c+d;ya(b,g+12|0)}c=c+i|0;b=((c|0)<(e|0)?e:c)+d|0;H[g+12>>2]=b;if((c|0)>H[a+108>>2]){b=(H[a+100>>2]<<1)+d|0;H[g+12>>2]=b}e:{if(mb(H[a+36>>2])){break e}if(H[Qa(H[a+36>>2])>>2]<=(b|0)){break e}H[g+12>>2]=H[Qa(H[a+36>>2])>>2]}xc(H[a+36>>2],g+12|0)}oa=g+16|0}function Ek(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0;e=oa+-64|0;oa=e;d=1;a:{if(Mb(a,b,0)){break a}d=0;if(!b){break a}d=oa+-64|0;oa=d;f=H[b>>2];g=H[f-4>>2];h=H[f-8>>2];H[d+20>>2]=0;H[d+16>>2]=20776;H[d+12>>2]=b;H[d+8>>2]=20824;f=0;Vb(d+24|0,0,39);b=b+h|0;b:{if(Mb(g,20824,0)){H[d+56>>2]=1;qa[H[H[g>>2]+20>>2]](g,d+8|0,b,b,1,0);f=H[d+32>>2]==1?b:0;break b}qa[H[H[g>>2]+24>>2]](g,d+8|0,b,1,0);c:{switch(H[d+44>>2]){case 0:f=H[d+48>>2]==1?H[d+36>>2]==1?H[d+40>>2]==1?H[d+28>>2]:0:0:0;break b;case 1:break c;default:break b}}if(H[d+32>>2]!=1){if(H[d+48>>2]|H[d+36>>2]!=1|H[d+40>>2]!=1){break b}}f=H[d+24>>2]}oa=d- -64|0;d=0;if(!f){break a}Vb(e+8|4,0,52);H[e+56>>2]=1;H[e+20>>2]=-1;H[e+16>>2]=a;H[e+8>>2]=f;qa[H[H[f>>2]+28>>2]](f,e+8|0,H[c>>2],1);a=H[e+32>>2];if((a|0)==1){H[c>>2]=H[e+24>>2]}d=(a|0)==1}oa=e- -64|0;return d|0}function Ne(a,b,c,d,e,f,g){var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;k=oa-16|0;oa=k;l=Ib(g);g=Dd(g);Gb(k,g);a:{if($b(k)){Ec(l,a,c,d);g=(c-a<<2)+d|0;H[f>>2]=g;break a}H[f>>2]=d;b:{c:{i=a;h=I[i|0];switch(h-43|0){case 0:case 2:break c;default:break b}}i=Kb(l,h<<24>>24);h=H[f>>2];H[f>>2]=h+4;H[h>>2]=i;i=a+1|0}if(!(I[i|0]!=48|(c-i|0)<2|(I[i+1|0]|32)!=120)){h=Kb(l,48);j=H[f>>2];H[f>>2]=j+4;H[j>>2]=h;h=Kb(l,F[i+1|0]);j=H[f>>2];H[f>>2]=j+4;H[j>>2]=h;i=i+2|0}fd(i,c);j=0;n=Hb(g);h=0;g=i;while(1){if(c>>>0<=g>>>0){Me((i-a<<2)+d|0,H[f>>2]);g=H[f>>2]}else{d:{if(!I[Aa(k,h)|0]){break d}if(F[Aa(k,h)|0]!=(j|0)){break d}j=H[f>>2];H[f>>2]=j+4;H[j>>2]=n;h=(wa(k)-1>>>0>h>>>0)+h|0;j=0}o=Kb(l,F[g|0]);m=H[f>>2];H[f>>2]=m+4;H[m>>2]=o;g=g+1|0;j=j+1|0;continue}break}}H[e>>2]=(b|0)==(c|0)?g:(b-a<<2)+d|0;va(k);oa=k+16|0}function fj(a,b){var c=0,d=0,e=0;a:{if(I[b|0]){break a}b=jd(2613);if(I[b|0]?b:0){break a}b=jd(N(a,12)+9216|0);if(I[b|0]?b:0){break a}b=jd(2629);if(I[b|0]?b:0){break a}b=2798}b:{while(1){e=I[b+c|0];if(!(!e|(e|0)==47)){e=15;c=c+1|0;if((c|0)!=15){continue}break b}break}e=c}d=2798;c:{d:{c=I[b|0];e:{f:{if(!(I[b+e|0]|(c|0)==46)){d=b;if((c|0)!=67){break f}}if(!I[d+1|0]){break e}}if(!_d(d,2798)){break e}if(_d(d,2567)){break d}}if(!a){c=9140;if(I[d+1|0]==46){break c}}return 0}c=H[6090];if(c){while(1){if(!_d(d,c+8|0)){break c}c=H[c+24>>2];if(c){continue}break}}c=H[6090];if(c){while(1){if(!_d(d,c+8|0)){return c}c=H[c+24>>2];if(c){continue}break}}c=cb(28);g:{if(!c){c=0;break g}b=H[2286];H[c>>2]=H[2285];H[c+4>>2]=b;b=c+8|0;Wb(b,d,e);F[b+e|0]=0;H[c+24>>2]=H[6090];H[6090]=c}c=a|c?c:9140}return c}function Pe(a,b,c,d,e,f,g){var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;k=oa-16|0;oa=k;l=Fb(g);g=Gd(g);Gb(k,g);a:{if($b(k)){Wc(l,a,c,d);g=(c-a|0)+d|0;H[f>>2]=g;break a}H[f>>2]=d;b:{c:{i=a;h=I[i|0];switch(h-43|0){case 0:case 2:break c;default:break b}}i=pb(l,h<<24>>24);h=H[f>>2];H[f>>2]=h+1;F[h|0]=i;i=a+1|0}if(!(I[i|0]!=48|(c-i|0)<2|(I[i+1|0]|32)!=120)){h=pb(l,48);j=H[f>>2];H[f>>2]=j+1;F[j|0]=h;h=pb(l,F[i+1|0]);j=H[f>>2];H[f>>2]=j+1;F[j|0]=h;i=i+2|0}fd(i,c);j=0;n=Hb(g);h=0;g=i;while(1){if(c>>>0<=g>>>0){fd((i-a|0)+d|0,H[f>>2]);g=H[f>>2]}else{d:{if(!I[Aa(k,h)|0]){break d}if(F[Aa(k,h)|0]!=(j|0)){break d}j=H[f>>2];H[f>>2]=j+1;F[j|0]=n;h=(wa(k)-1>>>0>h>>>0)+h|0;j=0}o=pb(l,F[g|0]);m=H[f>>2];H[f>>2]=m+1;F[m|0]=o;g=g+1|0;j=j+1|0;continue}break}}H[e>>2]=(b|0)==(c|0)?g:(b-a|0)+d|0;va(k);oa=k+16|0}function Hn(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;a=oa-368|0;oa=a;H[a+352>>2]=c;H[a+360>>2]=b;Yf(a+200|0,d,a+224|0,a+220|0,a+216|0);b=Ea(a+184|0);Da(b,Ja(b));c=Aa(b,0);H[a+180>>2]=c;H[a+12>>2]=a+16;H[a+8>>2]=0;F[a+7|0]=1;F[a+6|0]=69;while(1){a:{if(!Ab(a+360|0,a+352|0)){break a}if(H[a+180>>2]==(wa(b)+c|0)){d=wa(b);Da(b,wa(b)<<1);Da(b,Ja(b));c=Aa(b,0);H[a+180>>2]=d+c}if(Xf(ab(a+360|0),a+7|0,a+6|0,c,a+180|0,H[a+220>>2],H[a+216>>2],a+200|0,a+16|0,a+12|0,a+8|0,a+224|0)){break a}hb(a+360|0);continue}break}b:{if(!wa(a+200|0)|!I[a+7|0]){break b}d=H[a+12>>2];if((d-(a+16|0)|0)>159){break b}H[a+12>>2]=d+4;H[d>>2]=H[a+8>>2]}L[f>>2]=Ni(c,H[a+180>>2],e);wb(a+200|0,a+16|0,H[a+12>>2],e);if(jb(a+360|0,a+352|0)){H[e>>2]=H[e>>2]|2}c=H[a+360>>2];va(b);va(a+200|0);oa=a+368|0;return c|0}function Gn(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;a=oa-368|0;oa=a;H[a+352>>2]=c;H[a+360>>2]=b;Yf(a+200|0,d,a+224|0,a+220|0,a+216|0);b=Ea(a+184|0);Da(b,Ja(b));c=Aa(b,0);H[a+180>>2]=c;H[a+12>>2]=a+16;H[a+8>>2]=0;F[a+7|0]=1;F[a+6|0]=69;while(1){a:{if(!Ab(a+360|0,a+352|0)){break a}if(H[a+180>>2]==(wa(b)+c|0)){d=wa(b);Da(b,wa(b)<<1);Da(b,Ja(b));c=Aa(b,0);H[a+180>>2]=d+c}if(Xf(ab(a+360|0),a+7|0,a+6|0,c,a+180|0,H[a+220>>2],H[a+216>>2],a+200|0,a+16|0,a+12|0,a+8|0,a+224|0)){break a}hb(a+360|0);continue}break}b:{if(!wa(a+200|0)|!I[a+7|0]){break b}d=H[a+12>>2];if((d-(a+16|0)|0)>159){break b}H[a+12>>2]=d+4;H[d>>2]=H[a+8>>2]}M[f>>3]=Mi(c,H[a+180>>2],e);wb(a+200|0,a+16|0,H[a+12>>2],e);if(jb(a+360|0,a+352|0)){H[e>>2]=H[e>>2]|2}c=H[a+360>>2];va(b);va(a+200|0);oa=a+368|0;return c|0}function Qn(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;a=oa-272|0;oa=a;H[a+256>>2]=c;H[a+264>>2]=b;bg(a+208|0,d,a+224|0,a+223|0,a+222|0);b=Ea(a+192|0);Da(b,Ja(b));c=Aa(b,0);H[a+188>>2]=c;H[a+12>>2]=a+16;H[a+8>>2]=0;F[a+7|0]=1;F[a+6|0]=69;while(1){a:{if(!Bb(a+264|0,a+256|0)){break a}if(H[a+188>>2]==(wa(b)+c|0)){d=wa(b);Da(b,wa(b)<<1);Da(b,Ja(b));c=Aa(b,0);H[a+188>>2]=d+c}if(ag(bb(a+264|0),a+7|0,a+6|0,c,a+188|0,F[a+223|0],F[a+222|0],a+208|0,a+16|0,a+12|0,a+8|0,a+224|0)){break a}ib(a+264|0);continue}break}b:{if(!wa(a+208|0)|!I[a+7|0]){break b}d=H[a+12>>2];if((d-(a+16|0)|0)>159){break b}H[a+12>>2]=d+4;H[d>>2]=H[a+8>>2]}L[f>>2]=Ni(c,H[a+188>>2],e);wb(a+208|0,a+16|0,H[a+12>>2],e);if(kb(a+264|0,a+256|0)){H[e>>2]=H[e>>2]|2}c=H[a+264>>2];va(b);va(a+208|0);oa=a+272|0;return c|0}function Pn(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;a=oa-272|0;oa=a;H[a+256>>2]=c;H[a+264>>2]=b;bg(a+208|0,d,a+224|0,a+223|0,a+222|0);b=Ea(a+192|0);Da(b,Ja(b));c=Aa(b,0);H[a+188>>2]=c;H[a+12>>2]=a+16;H[a+8>>2]=0;F[a+7|0]=1;F[a+6|0]=69;while(1){a:{if(!Bb(a+264|0,a+256|0)){break a}if(H[a+188>>2]==(wa(b)+c|0)){d=wa(b);Da(b,wa(b)<<1);Da(b,Ja(b));c=Aa(b,0);H[a+188>>2]=d+c}if(ag(bb(a+264|0),a+7|0,a+6|0,c,a+188|0,F[a+223|0],F[a+222|0],a+208|0,a+16|0,a+12|0,a+8|0,a+224|0)){break a}ib(a+264|0);continue}break}b:{if(!wa(a+208|0)|!I[a+7|0]){break b}d=H[a+12>>2];if((d-(a+16|0)|0)>159){break b}H[a+12>>2]=d+4;H[d>>2]=H[a+8>>2]}M[f>>3]=Mi(c,H[a+188>>2],e);wb(a+208|0,a+16|0,H[a+12>>2],e);if(kb(a+264|0,a+256|0)){H[e>>2]=H[e>>2]|2}c=H[a+264>>2];va(b);va(a+208|0);oa=a+272|0;return c|0}function Li(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;f=oa-32|0;oa=f;a:{b:{c:{if((b|0)!=(c|0)){j=H[6070];H[6070]=0;g=oa-16|0;oa=g;Oa();h=oa-16|0;oa=h;e=oa-16|0;oa=e;dg(e,b,f+28|0,2);b=H[e+4>>2];H[h>>2]=H[e>>2];H[h+4>>2]=b;b=h;h=H[e+12>>2];H[b+8>>2]=H[e+8>>2];H[b+12>>2]=h;oa=e+16|0;e=H[b+4>>2];H[g>>2]=H[b>>2];H[g+4>>2]=e;e=g;g=H[b+12>>2];H[e+8>>2]=H[b+8>>2];H[e+12>>2]=g;oa=b+16|0;b=H[e+4>>2];H[f>>2]=H[e>>2];H[f+4>>2]=b;b=H[e+12>>2];H[f+8>>2]=H[e+8>>2];H[f+12>>2]=b;oa=e+16|0;e=H[f+8>>2];g=H[f+12>>2];h=H[f>>2];i=H[f+4>>2];b=H[6070];if(!b){break c}if(H[f+28>>2]!=(c|0)){break b}k=h;l=i;m=e;n=g;if((b|0)!=68){break a}break b}H[d>>2]=4;break a}H[6070]=j;if(H[f+28>>2]==(c|0)){break a}}H[d>>2]=4;h=k;i=l;e=m;g=n}H[a>>2]=h;H[a+4>>2]=i;H[a+8>>2]=e;H[a+12>>2]=g;oa=f+32|0}function Kn(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;a=oa-352|0;oa=a;H[a+336>>2]=c;H[a+344>>2]=b;g=uc(d);h=Yd(d,a+224|0);Xd(a+208|0,d,a+332|0);b=Ea(a+192|0);Da(b,Ja(b));c=Aa(b,0);H[a+188>>2]=c;H[a+12>>2]=a+16;H[a+8>>2]=0;while(1){a:{if(!Ab(a+344|0,a+336|0)){break a}if(H[a+188>>2]==(wa(b)+c|0)){d=wa(b);Da(b,wa(b)<<1);Da(b,Ja(b));c=Aa(b,0);H[a+188>>2]=d+c}if(Cd(ab(a+344|0),g,c,a+188|0,a+8|0,H[a+332>>2],a+208|0,a+16|0,a+12|0,h)){break a}hb(a+344|0);continue}break}b:{if(!wa(a+208|0)){break b}d=H[a+12>>2];if((d-(a+16|0)|0)>159){break b}H[a+12>>2]=d+4;H[d>>2]=H[a+8>>2]}H[f>>2]=Si(c,H[a+188>>2],e,g);H[f+4>>2]=pa;wb(a+208|0,a+16|0,H[a+12>>2],e);if(jb(a+344|0,a+336|0)){H[e>>2]=H[e>>2]|2}c=H[a+344>>2];va(b);va(a+208|0);oa=a+352|0;return c|0}function In(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;a=oa-352|0;oa=a;H[a+336>>2]=c;H[a+344>>2]=b;g=uc(d);h=Yd(d,a+224|0);Xd(a+208|0,d,a+332|0);b=Ea(a+192|0);Da(b,Ja(b));c=Aa(b,0);H[a+188>>2]=c;H[a+12>>2]=a+16;H[a+8>>2]=0;while(1){a:{if(!Ab(a+344|0,a+336|0)){break a}if(H[a+188>>2]==(wa(b)+c|0)){d=wa(b);Da(b,wa(b)<<1);Da(b,Ja(b));c=Aa(b,0);H[a+188>>2]=d+c}if(Cd(ab(a+344|0),g,c,a+188|0,a+8|0,H[a+332>>2],a+208|0,a+16|0,a+12|0,h)){break a}hb(a+344|0);continue}break}b:{if(!wa(a+208|0)){break b}d=H[a+12>>2];if((d-(a+16|0)|0)>159){break b}H[a+12>>2]=d+4;H[d>>2]=H[a+8>>2]}H[f>>2]=Oi(c,H[a+188>>2],e,g);H[f+4>>2]=pa;wb(a+208|0,a+16|0,H[a+12>>2],e);if(jb(a+344|0,a+336|0)){H[e>>2]=H[e>>2]|2}c=H[a+344>>2];va(b);va(a+208|0);oa=a+352|0;return c|0}function Ln(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;a=oa-352|0;oa=a;H[a+336>>2]=c;H[a+344>>2]=b;g=uc(d);h=Yd(d,a+224|0);Xd(a+208|0,d,a+332|0);b=Ea(a+192|0);Da(b,Ja(b));c=Aa(b,0);H[a+188>>2]=c;H[a+12>>2]=a+16;H[a+8>>2]=0;while(1){a:{if(!Ab(a+344|0,a+336|0)){break a}if(H[a+188>>2]==(wa(b)+c|0)){d=wa(b);Da(b,wa(b)<<1);Da(b,Ja(b));c=Aa(b,0);H[a+188>>2]=d+c}if(Cd(ab(a+344|0),g,c,a+188|0,a+8|0,H[a+332>>2],a+208|0,a+16|0,a+12|0,h)){break a}hb(a+344|0);continue}break}b:{if(!wa(a+208|0)){break b}d=H[a+12>>2];if((d-(a+16|0)|0)>159){break b}H[a+12>>2]=d+4;H[d>>2]=H[a+8>>2]}H[f>>2]=Ti(c,H[a+188>>2],e,g);wb(a+208|0,a+16|0,H[a+12>>2],e);if(jb(a+344|0,a+336|0)){H[e>>2]=H[e>>2]|2}c=H[a+344>>2];va(b);va(a+208|0);oa=a+352|0;return c|0}function Jn(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;a=oa-352|0;oa=a;H[a+336>>2]=c;H[a+344>>2]=b;g=uc(d);h=Yd(d,a+224|0);Xd(a+208|0,d,a+332|0);b=Ea(a+192|0);Da(b,Ja(b));c=Aa(b,0);H[a+188>>2]=c;H[a+12>>2]=a+16;H[a+8>>2]=0;while(1){a:{if(!Ab(a+344|0,a+336|0)){break a}if(H[a+188>>2]==(wa(b)+c|0)){d=wa(b);Da(b,wa(b)<<1);Da(b,Ja(b));c=Aa(b,0);H[a+188>>2]=d+c}if(Cd(ab(a+344|0),g,c,a+188|0,a+8|0,H[a+332>>2],a+208|0,a+16|0,a+12|0,h)){break a}hb(a+344|0);continue}break}b:{if(!wa(a+208|0)){break b}d=H[a+12>>2];if((d-(a+16|0)|0)>159){break b}H[a+12>>2]=d+4;H[d>>2]=H[a+8>>2]}G[f>>1]=Ri(c,H[a+188>>2],e,g);wb(a+208|0,a+16|0,H[a+12>>2],e);if(jb(a+344|0,a+336|0)){H[e>>2]=H[e>>2]|2}c=H[a+344>>2];va(b);va(a+208|0);oa=a+352|0;return c|0}function Hi(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;a=oa-352|0;oa=a;H[a+336>>2]=c;H[a+344>>2]=b;g=uc(d);h=Yd(d,a+224|0);Xd(a+208|0,d,a+332|0);b=Ea(a+192|0);Da(b,Ja(b));c=Aa(b,0);H[a+188>>2]=c;H[a+12>>2]=a+16;H[a+8>>2]=0;while(1){a:{if(!Ab(a+344|0,a+336|0)){break a}if(H[a+188>>2]==(wa(b)+c|0)){d=wa(b);Da(b,wa(b)<<1);Da(b,Ja(b));c=Aa(b,0);H[a+188>>2]=d+c}if(Cd(ab(a+344|0),g,c,a+188|0,a+8|0,H[a+332>>2],a+208|0,a+16|0,a+12|0,h)){break a}hb(a+344|0);continue}break}b:{if(!wa(a+208|0)){break b}d=H[a+12>>2];if((d-(a+16|0)|0)>159){break b}H[a+12>>2]=d+4;H[d>>2]=H[a+8>>2]}H[f>>2]=Pi(c,H[a+188>>2],e,g);wb(a+208|0,a+16|0,H[a+12>>2],e);if(jb(a+344|0,a+336|0)){H[e>>2]=H[e>>2]|2}c=H[a+344>>2];va(b);va(a+208|0);oa=a+352|0;return c|0}function Tn(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0;a=oa-272|0;oa=a;H[a+256>>2]=c;H[a+264>>2]=b;g=uc(d);Zd(a+208|0,d,a+255|0);b=Ea(a+192|0);Da(b,Ja(b));c=Aa(b,0);H[a+188>>2]=c;H[a+12>>2]=a+16;H[a+8>>2]=0;while(1){a:{if(!Bb(a+264|0,a+256|0)){break a}if(H[a+188>>2]==(wa(b)+c|0)){d=wa(b);Da(b,wa(b)<<1);Da(b,Ja(b));c=Aa(b,0);H[a+188>>2]=d+c}if(Fd(bb(a+264|0),g,c,a+188|0,a+8|0,F[a+255|0],a+208|0,a+16|0,a+12|0,13232)){break a}ib(a+264|0);continue}break}b:{if(!wa(a+208|0)){break b}d=H[a+12>>2];if((d-(a+16|0)|0)>159){break b}H[a+12>>2]=d+4;H[d>>2]=H[a+8>>2]}H[f>>2]=Si(c,H[a+188>>2],e,g);H[f+4>>2]=pa;wb(a+208|0,a+16|0,H[a+12>>2],e);if(kb(a+264|0,a+256|0)){H[e>>2]=H[e>>2]|2}c=H[a+264>>2];va(b);va(a+208|0);oa=a+272|0;return c|0}function Rn(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0;a=oa-272|0;oa=a;H[a+256>>2]=c;H[a+264>>2]=b;g=uc(d);Zd(a+208|0,d,a+255|0);b=Ea(a+192|0);Da(b,Ja(b));c=Aa(b,0);H[a+188>>2]=c;H[a+12>>2]=a+16;H[a+8>>2]=0;while(1){a:{if(!Bb(a+264|0,a+256|0)){break a}if(H[a+188>>2]==(wa(b)+c|0)){d=wa(b);Da(b,wa(b)<<1);Da(b,Ja(b));c=Aa(b,0);H[a+188>>2]=d+c}if(Fd(bb(a+264|0),g,c,a+188|0,a+8|0,F[a+255|0],a+208|0,a+16|0,a+12|0,13232)){break a}ib(a+264|0);continue}break}b:{if(!wa(a+208|0)){break b}d=H[a+12>>2];if((d-(a+16|0)|0)>159){break b}H[a+12>>2]=d+4;H[d>>2]=H[a+8>>2]}H[f>>2]=Oi(c,H[a+188>>2],e,g);H[f+4>>2]=pa;wb(a+208|0,a+16|0,H[a+12>>2],e);if(kb(a+264|0,a+256|0)){H[e>>2]=H[e>>2]|2}c=H[a+264>>2];va(b);va(a+208|0);oa=a+272|0;return c|0}function Sm(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;a=oa-496|0;oa=a;Ia(a+488|0,d);l=Ib(a+488|0);if(wa(f)){m=H[Qe(f,0)>>2]==(Kb(l,45)|0)}j=Ea(a+456|0);g=bc(a+440|0);h=bc(a+424|0);Zh(c,m,a+488|0,a+480|0,a+476|0,a+472|0,j,g,h,a+420|0);H[a+16>>2]=151;k=Ya(a+8|0,0,a+16|0);c=a+16|0;a:{b:{if((wa(f)|0)>H[a+420>>2]){i=wa(f);n=H[a+420>>2];i=(((wa(h)+(i-n<<1)|0)+wa(g)|0)+H[a+420>>2]|0)+1|0;break b}i=((wa(h)+wa(g)|0)+H[a+420>>2]|0)+2|0}if(i>>>0<101){break a}lb(k,cb(i<<2));c=H[k>>2];if(c){break a}db();X()}Yh(c,a+4|0,a,H[d+4>>2],Ca(f),Ca(f)+(wa(f)<<2)|0,l,m,a+480|0,H[a+476>>2],H[a+472>>2],j,g,h,H[a+420>>2]);b=Dc(b,c,H[a+4>>2],H[a>>2],d,e);_a(k);va(h);va(g);va(j);Fa(a+488|0);oa=a+496|0;return b|0}function Un(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0;a=oa-272|0;oa=a;H[a+256>>2]=c;H[a+264>>2]=b;g=uc(d);Zd(a+208|0,d,a+255|0);b=Ea(a+192|0);Da(b,Ja(b));c=Aa(b,0);H[a+188>>2]=c;H[a+12>>2]=a+16;H[a+8>>2]=0;while(1){a:{if(!Bb(a+264|0,a+256|0)){break a}if(H[a+188>>2]==(wa(b)+c|0)){d=wa(b);Da(b,wa(b)<<1);Da(b,Ja(b));c=Aa(b,0);H[a+188>>2]=d+c}if(Fd(bb(a+264|0),g,c,a+188|0,a+8|0,F[a+255|0],a+208|0,a+16|0,a+12|0,13232)){break a}ib(a+264|0);continue}break}b:{if(!wa(a+208|0)){break b}d=H[a+12>>2];if((d-(a+16|0)|0)>159){break b}H[a+12>>2]=d+4;H[d>>2]=H[a+8>>2]}H[f>>2]=Ti(c,H[a+188>>2],e,g);wb(a+208|0,a+16|0,H[a+12>>2],e);if(kb(a+264|0,a+256|0)){H[e>>2]=H[e>>2]|2}c=H[a+264>>2];va(b);va(a+208|0);oa=a+272|0;return c|0}function Sn(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0;a=oa-272|0;oa=a;H[a+256>>2]=c;H[a+264>>2]=b;g=uc(d);Zd(a+208|0,d,a+255|0);b=Ea(a+192|0);Da(b,Ja(b));c=Aa(b,0);H[a+188>>2]=c;H[a+12>>2]=a+16;H[a+8>>2]=0;while(1){a:{if(!Bb(a+264|0,a+256|0)){break a}if(H[a+188>>2]==(wa(b)+c|0)){d=wa(b);Da(b,wa(b)<<1);Da(b,Ja(b));c=Aa(b,0);H[a+188>>2]=d+c}if(Fd(bb(a+264|0),g,c,a+188|0,a+8|0,F[a+255|0],a+208|0,a+16|0,a+12|0,13232)){break a}ib(a+264|0);continue}break}b:{if(!wa(a+208|0)){break b}d=H[a+12>>2];if((d-(a+16|0)|0)>159){break b}H[a+12>>2]=d+4;H[d>>2]=H[a+8>>2]}G[f>>1]=Ri(c,H[a+188>>2],e,g);wb(a+208|0,a+16|0,H[a+12>>2],e);if(kb(a+264|0,a+256|0)){H[e>>2]=H[e>>2]|2}c=H[a+264>>2];va(b);va(a+208|0);oa=a+272|0;return c|0}function Qi(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0;a=oa-272|0;oa=a;H[a+256>>2]=c;H[a+264>>2]=b;g=uc(d);Zd(a+208|0,d,a+255|0);b=Ea(a+192|0);Da(b,Ja(b));c=Aa(b,0);H[a+188>>2]=c;H[a+12>>2]=a+16;H[a+8>>2]=0;while(1){a:{if(!Bb(a+264|0,a+256|0)){break a}if(H[a+188>>2]==(wa(b)+c|0)){d=wa(b);Da(b,wa(b)<<1);Da(b,Ja(b));c=Aa(b,0);H[a+188>>2]=d+c}if(Fd(bb(a+264|0),g,c,a+188|0,a+8|0,F[a+255|0],a+208|0,a+16|0,a+12|0,13232)){break a}ib(a+264|0);continue}break}b:{if(!wa(a+208|0)){break b}d=H[a+12>>2];if((d-(a+16|0)|0)>159){break b}H[a+12>>2]=d+4;H[d>>2]=H[a+8>>2]}H[f>>2]=Pi(c,H[a+188>>2],e,g);wb(a+208|0,a+16|0,H[a+12>>2],e);if(kb(a+264|0,a+256|0)){H[e>>2]=H[e>>2]|2}c=H[a+264>>2];va(b);va(a+208|0);oa=a+272|0;return c|0}function Um(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;a=oa-192|0;oa=a;Ia(a+184|0,d);l=Fb(a+184|0);if(wa(f)){m=I[Aa(f,0)|0]==(pb(l,45)&255)}j=Ea(a+160|0);g=Ea(a+144|0);h=Ea(a+128|0);$h(c,m,a+184|0,a+176|0,a+175|0,a+174|0,j,g,h,a+124|0);H[a+16>>2]=151;k=Ya(a+8|0,0,a+16|0);c=a+16|0;a:{b:{if((wa(f)|0)>H[a+124>>2]){i=wa(f);n=H[a+124>>2];i=(((wa(h)+(i-n<<1)|0)+wa(g)|0)+H[a+124>>2]|0)+1|0;break b}i=((wa(h)+wa(g)|0)+H[a+124>>2]|0)+2|0}if(i>>>0<101){break a}lb(k,cb(i));c=H[k>>2];if(c){break a}db();X()}_h(c,a+4|0,a,H[d+4>>2],Ca(f),Ca(f)+wa(f)|0,l,m,a+176|0,F[a+175|0],F[a+174|0],j,g,h,H[a+124>>2]);b=pc(b,c,H[a+4>>2],H[a>>2],d,e);_a(k);va(h);va(g);va(j);Fa(a+184|0);oa=a+192|0;return b|0}function ie(a,b,c){var d=0,e=0;a:{if((a|0)==(b|0)){break a}e=a+c|0;if(b-e>>>0<=0-(c<<1)>>>0){Wb(a,b,c);return}d=(a^b)&3;b:{c:{if(a>>>0>>0){if(d){break b}if(!(a&3)){break c}while(1){if(!c){break a}F[a|0]=I[b|0];b=b+1|0;c=c-1|0;a=a+1|0;if(a&3){continue}break}break c}d:{if(d){break d}if(e&3){while(1){if(!c){break a}c=c-1|0;d=c+a|0;F[d|0]=I[b+c|0];if(d&3){continue}break}}if(c>>>0<=3){break d}while(1){c=c-4|0;H[c+a>>2]=H[b+c>>2];if(c>>>0>3){continue}break}}if(!c){break a}while(1){c=c-1|0;F[c+a|0]=I[b+c|0];if(c){continue}break}break a}if(c>>>0<=3){break b}while(1){H[a>>2]=H[b>>2];b=b+4|0;a=a+4|0;c=c-4|0;if(c>>>0>3){continue}break}}if(!c){break a}while(1){F[a|0]=I[b|0];a=a+1|0;b=b+1|0;c=c-1|0;if(c){continue}break}}}function tl(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;d=oa-32|0;oa=d;e=H[a+28>>2];H[d+16>>2]=e;f=H[a+20>>2];H[d+28>>2]=c;H[d+24>>2]=b;b=f-e|0;H[d+20>>2]=b;e=b+c|0;j=2;b=d+16|0;a:{b:{c:{if(!Ye(ba(H[a+60>>2],d+16|0,2,d+12|0)|0)){while(1){f=H[d+12>>2];if((f|0)==(e|0)){break c}if((f|0)<=-1){break b}g=H[b+4>>2];h=g>>>0>>0;i=(h<<3)+b|0;g=f-(h?g:0)|0;H[i>>2]=g+H[i>>2];i=(h?12:4)+b|0;H[i>>2]=H[i>>2]-g;e=e-f|0;b=h?b+8|0:b;j=j-h|0;if(!Ye(ba(H[a+60>>2],b|0,j|0,d+12|0)|0)){continue}break}}if((e|0)!=-1){break b}}b=H[a+44>>2];H[a+28>>2]=b;H[a+20>>2]=b;H[a+16>>2]=b+H[a+48>>2];a=c;break a}H[a+28>>2]=0;H[a+16>>2]=0;H[a+20>>2]=0;H[a>>2]=H[a>>2]|32;a=0;if((j|0)==2){break a}a=c-H[b+4>>2]|0}oa=d+32|0;return a|0}function Vb(a,b,c){var d=0,e=0,f=0;a:{if(!c){break a}f=a+c|0;F[f-1|0]=b;F[a|0]=b;if(c>>>0<3){break a}F[f-2|0]=b;F[a+1|0]=b;F[f-3|0]=b;F[a+2|0]=b;if(c>>>0<7){break a}F[f-4|0]=b;F[a+3|0]=b;if(c>>>0<9){break a}f=0-a&3;e=f+a|0;d=N(b&255,16843009);H[e>>2]=d;b=c-f&-4;c=b+e|0;H[c-4>>2]=d;if(b>>>0<9){break a}H[e+8>>2]=d;H[e+4>>2]=d;H[c-8>>2]=d;H[c-12>>2]=d;if(b>>>0<25){break a}H[e+24>>2]=d;H[e+20>>2]=d;H[e+16>>2]=d;H[e+12>>2]=d;H[c-16>>2]=d;H[c-20>>2]=d;H[c-24>>2]=d;H[c-28>>2]=d;c=b;b=e&4|24;c=c-b|0;if(c>>>0<32){break a}d=Eq(d,0,1,1);f=pa;b=b+e|0;while(1){H[b+24>>2]=d;e=f;H[b+28>>2]=e;H[b+16>>2]=d;H[b+20>>2]=e;H[b+8>>2]=d;H[b+12>>2]=e;H[b>>2]=d;H[b+4>>2]=e;b=b+32|0;c=c-32|0;if(c>>>0>31){continue}break}}return a}function Fd(a,b,c,d,e,f,g,h,i,j){var k=0,l=0,m=0;k=oa-16|0;oa=k;F[k+15|0]=a;a:{b:{c:{if(H[d>>2]!=(c|0)){break c}l=43;m=a&255;if((m|0)!=I[j+24|0]){l=45;if(I[j+25|0]!=(m|0)){break c}}H[d>>2]=c+1;F[c|0]=l;break b}if(!(!wa(g)|(a|0)!=(f|0))){a=0;b=H[i>>2];if((b-h|0)>159){break a}a=H[e>>2];H[i>>2]=b+4;H[b>>2]=a;break b}a=-1;f=$f(j,j+26|0,k+15|0)-j|0;if((f|0)>23){break a}d:{e:{switch(b-8|0){case 0:case 2:if((b|0)>(f|0)){break d}break a;case 1:break d;default:break e}}if((b|0)!=16|(f|0)<22){break d}b=H[d>>2];if((b|0)==(c|0)|(b-c|0)>2|I[b-1|0]!=48){break a}a=0;H[e>>2]=0;H[d>>2]=b+1;F[b|0]=I[f+13232|0];break a}a=H[d>>2];H[d>>2]=a+1;F[a|0]=I[f+13232|0];H[e>>2]=H[e>>2]+1;a=0;break a}a=0;H[e>>2]=0}oa=k+16|0;return a}function Cd(a,b,c,d,e,f,g,h,i,j){var k=0,l=0;k=oa-16|0;oa=k;H[k+12>>2]=a;a:{b:{c:{if(H[d>>2]!=(c|0)){break c}l=43;if(H[j+96>>2]!=(a|0)){l=45;if(H[j+100>>2]!=(a|0)){break c}}H[d>>2]=c+1;F[c|0]=l;break b}if(!(!wa(g)|(a|0)!=(f|0))){a=0;b=H[i>>2];if((b-h|0)>159){break a}a=H[e>>2];H[i>>2]=b+4;H[b>>2]=a;break b}a=-1;g=Wf(j,j+104|0,k+12|0)-j|0;if((g|0)>92){break a}f=g>>2;d:{e:{switch(b-8|0){case 0:case 2:if((b|0)>(f|0)){break d}break a;case 1:break d;default:break e}}if((b|0)!=16|(g|0)<88){break d}b=H[d>>2];if((b|0)==(c|0)|(b-c|0)>2|I[b-1|0]!=48){break a}a=0;H[e>>2]=0;H[d>>2]=b+1;F[b|0]=I[f+13232|0];break a}a=H[d>>2];H[d>>2]=a+1;F[a|0]=I[f+13232|0];H[e>>2]=H[e>>2]+1;a=0;break a}a=0;H[e>>2]=0}oa=k+16|0;return a}function mj(a,b,c,d,e,f){var g=0;g=oa-80|0;oa=g;a:{if((f|0)>=16384){Ta(g+32|0,b,c,d,e,0,0,0,2147352576);d=H[g+40>>2];e=H[g+44>>2];b=H[g+32>>2];c=H[g+36>>2];if((f|0)<32767){f=f-16383|0;break a}Ta(g+16|0,b,c,d,e,0,0,0,2147352576);f=((f|0)<49149?f:49149)-32766|0;d=H[g+24>>2];e=H[g+28>>2];b=H[g+16>>2];c=H[g+20>>2];break a}if((f|0)>-16383){break a}Ta(g- -64|0,b,c,d,e,0,0,0,65536);d=H[g+72>>2];e=H[g+76>>2];b=H[g+64>>2];c=H[g+68>>2];if((f|0)>-32765){f=f+16382|0;break a}Ta(g+48|0,b,c,d,e,0,0,0,65536);f=((f|0)>-49146?f:-49146)+32764|0;d=H[g+56>>2];e=H[g+60>>2];b=H[g+48>>2];c=H[g+52>>2]}Ta(g,b,c,d,e,0,0,0,f+16383<<16);b=H[g+12>>2];H[a+8>>2]=H[g+8>>2];H[a+12>>2]=b;b=H[g+4>>2];H[a>>2]=H[g>>2];H[a+4>>2]=b;oa=g+80|0}function pj(a,b,c){a:{if(b>>>0>20){break a}b:{switch(b-9|0){case 0:b=H[c>>2];H[c>>2]=b+4;H[a>>2]=H[b>>2];return;case 1:b=H[c>>2];H[c>>2]=b+4;b=H[b>>2];H[a>>2]=b;H[a+4>>2]=b>>31;return;case 2:b=H[c>>2];H[c>>2]=b+4;H[a>>2]=H[b>>2];H[a+4>>2]=0;return;case 3:b=H[c>>2]+7&-8;H[c>>2]=b+8;c=H[b+4>>2];H[a>>2]=H[b>>2];H[a+4>>2]=c;return;case 4:b=H[c>>2];H[c>>2]=b+4;b=G[b>>1];H[a>>2]=b;H[a+4>>2]=b>>31;return;case 5:b=H[c>>2];H[c>>2]=b+4;H[a>>2]=J[b>>1];H[a+4>>2]=0;return;case 6:b=H[c>>2];H[c>>2]=b+4;b=F[b|0];H[a>>2]=b;H[a+4>>2]=b>>31;return;case 7:b=H[c>>2];H[c>>2]=b+4;H[a>>2]=I[b|0];H[a+4>>2]=0;return;case 8:b=H[c>>2]+7&-8;H[c>>2]=b+8;M[a>>3]=M[b>>3];return;case 9:break b;default:break a}}qa[145](a,c)}}function Oa(){var a=0,b=0,c=0,d=0,e=0;a:{if(F[24532]&1){break a}if(!fb(24532)){break a}c=oa-32|0;oa=c;b:{if(ej(0)){while(1){if(2147483647>>>a&1){H[a<<2>>2]=fj(a,2653)}a=a+1|0;if((a|0)!=6){continue}break}break b}while(1){e=(c+8|0)+(a<<2)|0;b=1<>2]}H[e>>2]=b;d=((b|0)!=0)+d|0;a=a+1|0;if((a|0)!=6){continue}break}b=9168;c:{d:{switch(d|0){case 1:break d;case 0:break b;default:break c}}if(H[c+8>>2]!=9140){break c}b=9192;break b}b=cb(24);if(!b){break b}a=H[c+12>>2];H[b>>2]=H[c+8>>2];H[b+4>>2]=a;a=H[c+28>>2];H[b+16>>2]=H[c+24>>2];H[b+20>>2]=a;a=H[c+20>>2];H[b+8>>2]=H[c+16>>2];H[b+12>>2]=a}oa=c+32|0;H[6132]=b;eb(24532)}return H[6132]}function Nn(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0;a=oa-272|0;oa=a;H[a+256>>2]=c;H[a+264>>2]=b;g=Ea(a+208|0);Ia(a+16|0,d);Wc(Fb(a+16|0),13232,13258,a+224|0);Fa(a+16|0);c=Ea(a+192|0);Da(c,Ja(c));b=Aa(c,0);H[a+188>>2]=b;H[a+12>>2]=a+16;H[a+8>>2]=0;while(1){a:{if(!Bb(a+264|0,a+256|0)){break a}if(H[a+188>>2]==(wa(c)+b|0)){d=wa(c);Da(c,wa(c)<<1);Da(c,Ja(c));b=Aa(c,0);H[a+188>>2]=d+b}if(Fd(bb(a+264|0),16,b,a+188|0,a+8|0,0,g,a+16|0,a+12|0,a+224|0)){break a}ib(a+264|0);continue}break}Da(c,H[a+188>>2]-b|0);b=Ca(c);d=Oa();H[a>>2]=f;if((Ki(b,d,a)|0)!=1){H[e>>2]=4}if(kb(a+264|0,a+256|0)){H[e>>2]=H[e>>2]|2}b=H[a+264>>2];va(c);va(g);oa=a+272|0;return b|0}function En(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0;a=oa-352|0;oa=a;H[a+336>>2]=c;H[a+344>>2]=b;g=Ea(a+208|0);Ia(a+16|0,d);Ec(Ib(a+16|0),13232,13258,a+224|0);Fa(a+16|0);c=Ea(a+192|0);Da(c,Ja(c));b=Aa(c,0);H[a+188>>2]=b;H[a+12>>2]=a+16;H[a+8>>2]=0;while(1){a:{if(!Ab(a+344|0,a+336|0)){break a}if(H[a+188>>2]==(wa(c)+b|0)){d=wa(c);Da(c,wa(c)<<1);Da(c,Ja(c));b=Aa(c,0);H[a+188>>2]=d+b}if(Cd(ab(a+344|0),16,b,a+188|0,a+8|0,0,g,a+16|0,a+12|0,a+224|0)){break a}hb(a+344|0);continue}break}Da(c,H[a+188>>2]-b|0);b=Ca(c);d=Oa();H[a>>2]=f;if((Ki(b,d,a)|0)!=1){H[e>>2]=4}if(jb(a+344|0,a+336|0)){H[e>>2]=H[e>>2]|2}b=H[a+344>>2];va(c);va(g);oa=a+352|0;return b|0}function yj(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;g=oa-16|0;oa=g;c=Ea(a);d=c;a=H[b+4>>2];j=pg(a+H[H[a>>2]-12>>2]|0,10);h=oa-16|0;oa=h;if(I[Cf(h+8|0,a)|0]){wj(d);a:{b:{while(1){e=$e(H[(H[H[a>>2]-12>>2]+a|0)+24>>2]);if(qb(e,-1)){break b}e=Zc(e);f=0;if(qb(e,j)){break a}Od(d,e);i=i+1|0;if((wa(d)|0)!=-17){continue}break}f=4;break a}f=i?2:6}d=f;ac(H[H[a>>2]-12>>2]+a|0,d)}oa=h+16|0;a=H[b+4>>2];c:{if(!je(H[H[a>>2]-12>>2]+a|0)){break c}a=H[b+4>>2];if((I[(H[H[a>>2]-12>>2]+a|0)+16|0]&2)>>>1|0){break c}a=Ea(g);Ga(a,3108);cg(Ca(a),3010);va(a)}if(I[Aa(c,wa(c)-1|0)|0]==13){d:{a=wa(c)-1|0;if(wa(c)>>>0>=a>>>0){xj(c,a);break d}me();X()}}H[b+8>>2]=H[b+8>>2]+1;oa=g+16|0}function fl(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;f=oa-32|0;oa=f;g=H[b+68>>2];if(g){g=$c(g);a:{b:{if(!(!H[b+64>>2]|(c|d?(g|0)<=0:0))){if(!(qa[H[H[b>>2]+24>>2]](b)|0)){break b}}Kc(a,-1,-1);break a}if(e>>>0>=3){Kc(a,-1,-1);break a}h=H[b+64>>2];d=Eq(g,g>>31,c,d);c=(g|0)>0;if(Ae(h,c?d:0,c?pa:0,e)){Kc(a,-1,-1);break a}e=f+16|0;c=H[b+64>>2];c:{if(H[c+76>>2]<=-1){c=nh(c);d=pa;break c}c=nh(c);d=pa}d=Kc(e,c,d);e=H[b+76>>2];c=f;b=H[b+72>>2];H[c>>2]=b;H[c+4>>2]=e;H[c+8>>2]=b;H[c+12>>2]=e;b=H[c+4>>2];H[d>>2]=H[c>>2];H[d+4>>2]=b;b=H[c+28>>2];H[a+8>>2]=H[c+24>>2];H[a+12>>2]=b;b=H[c+20>>2];H[a>>2]=H[c+16>>2];H[a+4>>2]=b}oa=f+32|0;return}db();X()}function Zh(a,b,c,d,e,f,g,h,i,j){var k=0;k=oa-16|0;oa=k;a:{if(a){a=ci(c);b:{if(b){Oc(k,a);b=H[k>>2];F[d|0]=b;F[d+1|0]=b>>>8;F[d+2|0]=b>>>16;F[d+3|0]=b>>>24;Nc(k,a);break b}He(k,a);b=H[k>>2];F[d|0]=b;F[d+1|0]=b>>>8;F[d+2|0]=b>>>16;F[d+3|0]=b>>>24;fc(k,a)}qc(i,k);va(k);H[e>>2]=ec(a);H[f>>2]=Hb(a);Gb(k,a);Ua(g,k);va(k);gc(k,a);qc(h,k);va(k);a=Mc(a);break a}a=bi(c);c:{if(b){Oc(k,a);b=H[k>>2];F[d|0]=b;F[d+1|0]=b>>>8;F[d+2|0]=b>>>16;F[d+3|0]=b>>>24;Nc(k,a);break c}He(k,a);b=H[k>>2];F[d|0]=b;F[d+1|0]=b>>>8;F[d+2|0]=b>>>16;F[d+3|0]=b>>>24;fc(k,a)}qc(i,k);va(k);H[e>>2]=ec(a);H[f>>2]=Hb(a);Gb(k,a);Ua(g,k);va(k);gc(k,a);qc(h,k);va(k);a=Mc(a)}H[j>>2]=a;oa=k+16|0}function sq(a,b){a=a|0;b=b|0;var c=0,d=0;c=oa-16|0;oa=c;gk(a,b);H[a+136>>2]=b;b=H[a+140>>2];if(b){Ba(Va(b))}b=Na(12);Sa(b);H[a+140>>2]=b;b=H[a+144>>2];if(b){Ba(Va(b))}b=Na(12);d=Sa(b);H[a+144>>2]=b;H[c>>2]=0;ya(d,c);H[a+184>>2]=0;b=xa(c,7628);Ua(a+160|0,b);va(b);Ga(a+172|0,7628);F[a+192|0]=32;H[a+200>>2]=0;F[a+196|0]=34;G[a+194>>1]=8224;F[a+208|0]=1;H[a+188>>2]=0;F[a+238|0]=0;G[a+236>>1]=0;F[a+228|0]=0;F[a+226|0]=0;F[a+223|0]=0;F[a+224|0]=0;F[a+221|0]=0;F[a+213|0]=0;F[a+214|0]=0;F[a+215|0]=0;F[a+216|0]=0;F[a+217|0]=0;F[a+218|0]=0;F[a+219|0]=1;F[a+220|0]=0;G[a+230>>1]=0;G[a+232>>1]=0;H[a+248>>2]=0;H[a+252>>2]=0;H[a+240>>2]=0;H[a+244>>2]=0;oa=c+16|0}function $h(a,b,c,d,e,f,g,h,i,j){var k=0;k=oa-16|0;oa=k;a:{if(a){a=ii(c);b:{if(b){Oc(k,a);b=H[k>>2];F[d|0]=b;F[d+1|0]=b>>>8;F[d+2|0]=b>>>16;F[d+3|0]=b>>>24;Nc(k,a);break b}He(k,a);b=H[k>>2];F[d|0]=b;F[d+1|0]=b>>>8;F[d+2|0]=b>>>16;F[d+3|0]=b>>>24;fc(k,a)}Ua(i,k);va(k);F[e|0]=ec(a);F[f|0]=Hb(a);Gb(k,a);Ua(g,k);va(k);gc(k,a);Ua(h,k);va(k);a=Mc(a);break a}a=hi(c);c:{if(b){Oc(k,a);b=H[k>>2];F[d|0]=b;F[d+1|0]=b>>>8;F[d+2|0]=b>>>16;F[d+3|0]=b>>>24;Nc(k,a);break c}He(k,a);b=H[k>>2];F[d|0]=b;F[d+1|0]=b>>>8;F[d+2|0]=b>>>16;F[d+3|0]=b>>>24;fc(k,a)}Ua(i,k);va(k);F[e|0]=ec(a);F[f|0]=Hb(a);Gb(k,a);Ua(g,k);va(k);gc(k,a);Ua(h,k);va(k);a=Mc(a)}H[j>>2]=a;oa=k+16|0}function La(a){var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;a:{c=H[a+112>>2];d=H[a+116>>2];b:{if(c|d){b=c>>>0<=K[a+120>>2];c=H[a+124>>2];if((d|0)<(c|0)?1:(d|0)<=(c|0)?b:0){break b}}g=kg(a);if((g|0)>-1){break a}}H[a+104>>2]=0;return-1}h=a;b=H[a+116>>2];i=b;d=H[a+8>>2];c=d;f=H[a+112>>2];c:{if(!(b|f)){break c}c=d;e=H[a+120>>2]^-1;f=e+f|0;b=(H[a+124>>2]^-1)+i|0;b=f>>>0>>0?b+1|0:b;i=H[a+4>>2];e=d-i|0;j=f>>>0>=e>>>0;e=e>>31;if((b|0)>(e|0)?1:(e|0)<=(b|0)?j:0){break c}c=f+i|0}H[h+104>>2]=c;h=H[a+4>>2];if(d){c=a;b=(d-h|0)+1|0;d=b+H[a+120>>2]|0;a=H[a+124>>2]+(b>>31)|0;H[c+120>>2]=d;H[c+124>>2]=d>>>0>>0?a+1|0:a}a=h-1|0;if(I[a|0]!=(g|0)){F[a|0]=g}return g}function gd(a,b,c,d,e,f,g,h){var i=0,j=0,k=0,l=0,m=0,n=0;j=1;i=d&2147483647;m=i;k=c;a:{if(!c&(i|0)==2147418112?a|b:(i|0)==2147418112&(c|0)!=0|i>>>0>2147418112){break a}l=h&2147483647;n=l;i=g;if(!g&(l|0)==2147418112?e|f:(l|0)==2147418112&(g|0)!=0|l>>>0>2147418112){break a}if(!(a|e|(i|k)|(b|f|(m|n)))){return 0}k=d&h;if((k|0)>0?1:(k|0)>=0){j=-1;if((c|0)==(g|0)&(d|0)==(h|0)?(b|0)==(f|0)&a>>>0>>0|b>>>0>>0:(d|0)<(h|0)?1:(d|0)<=(h|0)?c>>>0>>0:0){break a}return(a^e|c^g)!=0|(b^f|d^h)!=0}j=-1;if((c|0)==(g|0)&(d|0)==(h|0)?(b|0)==(f|0)&a>>>0>e>>>0|b>>>0>f>>>0:(d|0)>(h|0)?1:(d|0)>=(h|0)?c>>>0>g>>>0:0){break a}j=(a^e|c^g)!=0|(b^f|d^h)!=0}return j}function Ve(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0;h=oa-16|0;oa=h;f=d?d:24348;d=H[f>>2];a:{b:{c:{if(!b){if(d){break c}break a}e=-2;if(!c){break a}i=a?a:h+12|0;d:{if(d){a=c;break d}a=I[b|0];d=a<<24>>24;if((d|0)>=0){H[i>>2]=a;e=(d|0)!=0;break a}a=F[b|0];if(!H[H[5347]>>2]){H[i>>2]=a&57343;e=1;break a}a=(a&255)-194|0;if(a>>>0>50){break c}d=H[(a<<2)+8912>>2];a=c-1|0;if(!a){break b}b=b+1|0}g=I[b|0];j=g>>>3|0;if((j-16|(d>>26)+j)>>>0>7){break c}while(1){a=a-1|0;d=g-128|d<<6;if((d|0)>=0){H[f>>2]=0;H[i>>2]=d;e=c-a|0;break a}if(!a){break b}b=b+1|0;g=I[b|0];if((g&192)==128){continue}break}}H[f>>2]=0;H[6070]=25;e=-1;break a}H[f>>2]=d}oa=h+16|0;return e}function Pl(a){a=a|0;a:{if(F[24656]&1){break a}if(!fb(24656)){break a}b:{if(F[25760]&1){break b}if(!fb(25760)){break b}a=25472;while(1){a=bc(a)+12|0;if((a|0)!=25760){continue}break}eb(25760)}Ka(25472,18232);Ka(25484,18264);Ka(25496,18300);Ka(25508,18324);Ka(25520,18348);Ka(25532,18364);Ka(25544,18384);Ka(25556,18404);Ka(25568,18432);Ka(25580,18472);Ka(25592,18504);Ka(25604,18540);Ka(25616,18576);Ka(25628,18592);Ka(25640,18608);Ka(25652,18624);Ka(25664,18348);Ka(25676,18640);Ka(25688,18656);Ka(25700,18672);Ka(25712,18688);Ka(25724,18704);Ka(25736,18720);Ka(25748,18736);H[6163]=25472;eb(24656)}return H[6163]}function Ii(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0;f=oa+-64|0;oa=f;i=Uf(f+56|0);e=Ea(f+40|0);h=Ea(f+24|0);H[i>>2]=H[b>>2];g=1;if(zb(i,c)){while(1){bf(e,H[i>>2]);b=xa(f+8|0,2983);j=Ra(e,0,2,b);va(b);a:{if(!j){Eb(f+8|0,e,2);g=ne(a,f+8|0,d)&g;va(f+8|0);break a}b:{if(I[Aa(e,0)|0]==45){b=1;if(wa(e)>>>0<=1){break b}while(1){if(!(!uj(F[Aa(e,b)|0])|b>>>0<2)){j=ne(a,h,d);Ga(h,7628);g=g&j}mc(h,1,F[Aa(e,b)|0]);b=b+1|0;if(wa(e)>>>0>b>>>0){continue}break}break b}b=ne(a,e,d);Ga(h,7628);g=b&g;break a}b=ne(a,h,d);Ga(h,7628);g=b&g}H[i>>2]=H[i>>2]+12;if(zb(i,c)){continue}break}}va(h);va(e);oa=f- -64|0;return g}function gl(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;e=oa-16|0;oa=e;H[e+12>>2]=c;hc(a,0,0,0);Ac(a,0,0);a:{if(!I[a+96|0]){break a}d=H[a+32>>2];if(!d){break a}Ba(d)}b:{if(!I[a+97|0]){break b}d=H[a+56>>2];if(!d){break b}Ba(d)}H[a+52>>2]=c;f=a;c:{d:{e:{if(c>>>0>=9){d=I[a+98|0];if(!(!d|!b)){F[a+96|0]=0;H[a+32>>2]=b;break d}c=Na(c);F[a+96|0]=1;H[a+32>>2]=c;break e}F[a+96|0]=0;H[a+52>>2]=8;H[a+32>>2]=a+44;d=I[a+98|0]}if(d){break d}H[e+8>>2]=8;d=H[vf(e+12|0,e+8|0)>>2];H[a+60>>2]=d;if(b){c=0;if(d>>>0>7){break c}}b=Na(d);c=1;break c}b=0;H[a+60>>2]=0;c=0}F[f+97|0]=c;H[a+56>>2]=b;oa=e+16|0;return a|0}function Rl(a){a=a|0;a:{if(F[24648]&1){break a}if(!fb(24648)){break a}b:{if(F[25456]&1){break b}if(!fb(25456)){break b}a=25168;while(1){a=Ea(a)+12|0;if((a|0)!=25456){continue}break}eb(25456)}Ga(25168,1073);Ga(25180,1064);Ga(25192,1961);Ga(25204,1874);Ga(25216,1163);Ga(25228,2262);Ga(25240,1090);Ga(25252,1330);Ga(25264,1601);Ga(25276,1584);Ga(25288,1592);Ga(25300,1611);Ga(25312,1811);Ga(25324,2506);Ga(25336,1636);Ga(25348,1523);Ga(25360,1163);Ga(25372,1689);Ga(25384,1826);Ga(25396,1994);Ga(25408,1667);Ga(25420,1345);Ga(25432,1213);Ga(25444,2484);H[6161]=25168;eb(24648)}return H[6161]}function xk(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;if(Mb(a,H[b+8>>2],f)){hf(b,c,d,e);return}h=I[b+53|0];g=H[a+12>>2];F[b+53|0]=0;i=I[b+52|0];F[b+52|0]=0;j=a+16|0;ff(j,b,c,d,e,f);k=I[b+53|0];h=h|k;l=I[b+52|0];i=i|l;a:{if((g|0)<2){break a}j=j+(g<<3)|0;g=a+24|0;while(1){if(I[b+54|0]){break a}b:{if(l){if(H[b+24>>2]==1){break a}if(I[a+8|0]&2){break b}break a}if(!k){break b}if(!(F[a+8|0]&1)){break a}}G[b+52>>1]=0;ff(g,b,c,d,e,f);k=I[b+53|0];h=k|h;l=I[b+52|0];i=l|i;g=g+8|0;if(j>>>0>g>>>0){continue}break}}F[b+53|0]=(h&255)!=0;F[b+52|0]=(i&255)!=0}function df(a,b,c){var d=0,e=0,f=0,g=0;g=b;d=H[c+16>>2];a:{if(!d){d=c;e=I[d+74|0];F[d+74|0]=e-1|e;e=H[d>>2];b:{if(e&8){H[d>>2]=e|32;d=-1;break b}H[d+4>>2]=0;H[d+8>>2]=0;e=H[d+44>>2];H[d+28>>2]=e;H[d+20>>2]=e;H[d+16>>2]=e+H[d+48>>2];d=0}if(d){break a}d=H[c+16>>2]}f=g;g=H[c+20>>2];if(f>>>0>d-g>>>0){return qa[H[c+36>>2]](c,a,b)|0}c:{if(F[c+75|0]<0){d=0;break c}f=b;while(1){d=f;if(!d){d=0;break c}f=d-1|0;if(I[f+a|0]!=10){continue}break}f=qa[H[c+36>>2]](c,a,d)|0;if(f>>>0>>0){break a}a=a+d|0;b=b-d|0;g=H[c+20>>2]}Wb(g,a,b);H[c+20>>2]=H[c+20>>2]+b;f=b+d|0}return f}function Uk(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;c=oa-32|0;oa=c;d=qb(b,-1);e=I[a+52|0];f=a;a:{b:{if(d){d=b;if(e){break a}b=H[a+48>>2];a=qb(b,-1)^1;break b}if(e){F[c+19|0]=Zc(H[a+48>>2]);c:{d:{switch(Qd(H[a+36>>2],H[a+40>>2],c+19|0,c+20|0,c+12|0,c+24|0,c+32|0,c+20|0)-1|0){case 2:d=H[a+48>>2];H[c+20>>2]=c+25;F[c+24|0]=d;default:while(1){d=H[c+20>>2];e=1;if(d>>>0<=c+24>>>0){break c}d=d-1|0;H[c+20>>2]=d;if((pe(F[d|0],H[a+32>>2])|0)!=-1){continue}break};break;case 0:case 1:break d}}d=-1;e=0}if(!e){break a}}H[a+48>>2]=b;a=1}F[f+52|0]=a;d=b}oa=c+32|0;return d|0}function Qk(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;c=oa-32|0;oa=c;d=qb(b,-1);e=I[a+52|0];f=a;a:{b:{if(d){d=b;if(e){break a}b=H[a+48>>2];a=qb(b,-1)^1;break b}if(e){H[c+16>>2]=H[a+48>>2];c:{d:{switch(Qd(H[a+36>>2],H[a+40>>2],c+16|0,c+20|0,c+12|0,c+24|0,c+32|0,c+20|0)-1|0){case 2:d=H[a+48>>2];H[c+20>>2]=c+25;F[c+24|0]=d;default:while(1){d=H[c+20>>2];e=1;if(d>>>0<=c+24>>>0){break c}d=d-1|0;H[c+20>>2]=d;if((pe(F[d|0],H[a+32>>2])|0)!=-1){continue}break};break;case 0:case 1:break d}}d=-1;e=0}if(!e){break a}}H[a+48>>2]=b;a=1}F[f+52|0]=a;d=b}oa=c+32|0;return d|0}function Nk(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;c=oa-32|0;oa=c;a:{b:{c:{if(qb(b,-1)){break c}F[c+23|0]=Zc(b);if(I[a+44|0]){if((Ub(c+23|0,1,1,H[a+32>>2])|0)!=1){break b}break c}H[c+16>>2]=c+24;f=c+32|0;g=c+24|0;d=c+23|0;while(1){e=Qd(H[a+36>>2],H[a+40>>2],d,g,c+12|0,c+24|0,f,c+16|0);if(H[c+12>>2]==(d|0)){break b}if((e|0)==3){if((Ub(d,1,1,H[a+32>>2])|0)==1){break c}break b}if(e>>>0>1){break b}d=H[c+16>>2]-(c+24|0)|0;if((Ub(c+24|0,1,d,H[a+32>>2])|0)!=(d|0)){break b}d=H[c+12>>2];if((e|0)==1){continue}break}}a=re(b);break a}a=-1}oa=c+32|0;return a|0}function cl(a,b){a=a|0;b=b|0;var c=0;qa[H[H[a>>2]+24>>2]](a)|0;b=Rd(b);H[a+68>>2]=b;c=I[a+98|0];b=Jc(b);F[a+98|0]=b;if((b|0)!=(c|0)){hc(a,0,0,0);Ac(a,0,0);b=I[a+96|0];if(I[a+98|0]){a:{if(!b){break a}b=H[a+32>>2];if(!b){break a}Ba(b)}F[a+96|0]=I[a+97|0];H[a+52>>2]=H[a+60>>2];b=H[a+56>>2];H[a+56>>2]=0;H[a+60>>2]=0;H[a+32>>2]=b;F[a+97|0]=0;return}b:{if(b){break b}b=H[a+32>>2];if((b|0)==(a+44|0)){break b}F[a+97|0]=0;H[a+56>>2]=b;b=H[a+52>>2];H[a+60>>2]=b;b=Na(b);F[a+96|0]=1;H[a+32>>2]=b;return}b=H[a+52>>2];H[a+60>>2]=b;b=Na(b);F[a+97|0]=1;H[a+56>>2]=b}}function yg(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;f=oa-32|0;oa=f;e=gb(a);i=e;d=Xj(a,Pa(a)+1|0);j=Pa(a);g=oa-16|0;oa=g;H[g+12>>2]=0;c=f+8|0;yf(c+12|0,e);if(d){h=Sj(d)}H[c>>2]=h;e=(j<<2)+h|0;H[c+8>>2]=e;H[c+4>>2]=e;H[Ic(c)>>2]=(d<<2)+h;oa=g+16|0;Yj(i,H[c+8>>2],b);H[c+8>>2]=H[c+8>>2]+4;Ag(a);b=c+4|0;Vj(gb(a),H[a>>2],H[a+4>>2],b);nc(a,b);nc(a+4|0,c+8|0);nc(gb(a),Ic(c));H[c>>2]=H[c+4>>2];Uj(a,Pa(a));a=c;b=a;d=H[a+4>>2];if((d|0)!=H[a+8>>2]){while(1){H[b+8>>2]=H[b+8>>2]-4;if((d|0)!=H[b+8>>2]){continue}break}}if(H[a>>2]){b=H[a>>2];Tj(a);Ba(b)}oa=f+32|0}function wc(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;f=oa-16|0;oa=f;A(+b);h=v(1)|0;e=v(0)|0;g=h&2147483647;c=g;d=e;g=c+-1048576|0;a:{if((g|0)==2145386495|g>>>0<2145386495){i=d<<28;e=c>>>4|0;c=(c&15)<<28|d>>>4;d=e+1006632960|0;break a}if((c|0)==2146435072|c>>>0>2146435072){i=e<<28;c=h;e=c>>>4|0;c=(c&15)<<28|d>>>4;d=e|2147418112;break a}if(!(c|d)){c=0;d=0;break a}g=c;c=c>>>0<1?Q(e)+32|0:Q(c);xb(f,d,g,0,0,c+49|0);j=H[f>>2];i=H[f+4>>2];e=15372-c<<16;c=H[f+8>>2];d=e|H[f+12>>2]^65536}H[a>>2]=j;H[a+4>>2]=i;H[a+8>>2]=c;H[a+12>>2]=h&-2147483648|d;oa=f+16|0}function Kk(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;c=oa-32|0;oa=c;a:{b:{c:{if(qb(b,-1)){break c}H[c+20>>2]=b;if(I[a+44|0]){if((Ub(c+20|0,4,1,H[a+32>>2])|0)!=1){break b}break c}H[c+16>>2]=c+24;f=c+32|0;g=c+24|0;d=c+20|0;while(1){e=Qd(H[a+36>>2],H[a+40>>2],d,g,c+12|0,c+24|0,f,c+16|0);if(H[c+12>>2]==(d|0)){break b}if((e|0)==3){if((Ub(d,1,1,H[a+32>>2])|0)==1){break c}break b}if(e>>>0>1){break b}d=H[c+16>>2]-(c+24|0)|0;if((Ub(c+24|0,1,d,H[a+32>>2])|0)!=(d|0)){break b}d=H[c+12>>2];if((e|0)==1){continue}break}}a=re(b);break a}a=-1}oa=c+32|0;return a|0}function _m(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0;c=oa-416|0;oa=c;H[c+12>>2]=c+416;d=oa-144|0;oa=d;H[d+28>>2]=d+132;qi(a+8|0,d+32|0,d+28|0,e,f,g);H[d+16>>2]=0;H[d+20>>2]=0;H[d+12>>2]=d+32;f=c+16|0;g=Pj(f,H[c+12>>2]);e=oa-16|0;oa=e;H[e+12>>2]=H[a+8>>2];h=jc(e+8|0,e+12|0);a=$i(f,d+12|0,g,d+16|0);ic(h);oa=e+16|0;if((a|0)==-1){db();X()}H[c+12>>2]=f+(a<<2);oa=d+144|0;d=c+16|0;e=H[c+12>>2];a=oa-16|0;oa=a;H[a+8>>2]=b;while(1){if((d|0)!=(e|0)){Ci(a+8|0,H[d>>2]);d=d+4|0;continue}break}oa=a+16|0;oa=c+416|0;return H[a+8>>2]}function Md(a,b){var c=0,d=0,e=0,f=0,g=0,h=0;if((a|0)!=(b|0)){c=oa-16|0;oa=c;d=H[b>>2];e=H[b+4>>2];f=rg(d,e);a:{if(f>>>0<=Gc(a)>>>0){H[c+12>>2]=e;if(Pa(a)>>>0>>0){H[c+12>>2]=d;b=Pa(a);H[c+12>>2]=H[c+12>>2]+(b<<2);Rj(d,H[c+12>>2],H[a>>2]);Qj(a,H[c+12>>2],e,f-Pa(a)|0);break a}bk(a,Rj(d,e,H[a>>2]));break a}b=a;if(H[b>>2]){Pa(b);_j(b);Nj(b);gb(b);g=H[b>>2];Gc(b);Ba(g);H[gb(b)>>2]=0;H[b>>2]=0;H[b+4>>2]=0}g=Xj(a,f);if(Wj(a)>>>0>>0){$d();X()}gb(b);h=Sj(g);H[b>>2]=h;H[b+4>>2]=h;H[gb(b)>>2]=(g<<2)+h;Uj(b,0);Qj(a,d,e,f)}oa=c+16|0}}function zk(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;if(Mb(a,H[b+8>>2],e)){gf(b,c,d);return}a:{if(Mb(a,H[b>>2],e)){if(!(H[b+20>>2]!=(c|0)?H[b+16>>2]!=(c|0):0)){if((d|0)!=1){break a}H[b+32>>2]=1;return}H[b+32>>2]=d;b:{if(H[b+44>>2]==4){break b}G[b+52>>1]=0;a=H[a+8>>2];qa[H[H[a>>2]+20>>2]](a,b,c,c,1,e);if(I[b+53|0]){H[b+44>>2]=3;if(!I[b+52|0]){break b}break a}H[b+44>>2]=4}H[b+20>>2]=c;H[b+40>>2]=H[b+40>>2]+1;if(H[b+36>>2]!=1|H[b+24>>2]!=2){break a}F[b+54|0]=1;return}a=H[a+8>>2];qa[H[H[a>>2]+24>>2]](a,b,c,d,e)}}function hd(a,b,c,d,e,f){var g=0,h=0,i=0,j=0;a:{if(f&64){c=f+-64|0;b=c&31;if((c&63)>>>0>=32){c=0;b=e>>>b|0}else{c=e>>>b|0;b=((1<>>b}d=0;e=0;break a}if(!f){break a}h=e;i=d;j=64-f|0;g=j&31;if((j&63)>>>0>=32){h=i<>>32-g|h<>>0>=32){g=0;b=c>>>b|0}else{g=c>>>b|0;b=((1<>>b}b=j|b;c=g|h;g=d;d=f&31;if((f&63)>>>0>=32){h=0;d=e>>>d|0}else{h=e>>>d|0;d=((1<>>d}e=h}H[a>>2]=b;H[a+4>>2]=c;H[a+8>>2]=d;H[a+12>>2]=e}function jd(a){var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;g=yc(a);a:{if(!H[6069]|!I[a|0]){break a}if(kd(a,61)){break a}c=H[H[6069]>>2];if(!c){break a}b:{while(1){h=H[6069];d=a;i=0;f=g;b=0;c:{if(!f){break c}b=I[d|0];d:{if(!b){break d}while(1){e:{j=I[c|0];if(!j){break e}f=f-1|0;if(!f|(b|0)!=(j|0)){break e}c=c+1|0;b=I[d+1|0];d=d+1|0;if(b){continue}break d}break}i=b}b=(i&255)-I[c|0]|0}if(!b){d=H[(e<<2)+h>>2]+g|0;if(I[d|0]==61){break b}}e=e+1|0;c=H[(e<<2)+h>>2];if(c){continue}break}return 0}e=d+1|0}return e}function xb(a,b,c,d,e,f){var g=0,h=0,i=0,j=0;a:{if(f&64){d=b;e=f+-64|0;b=e&31;if((e&63)>>>0>=32){e=d<>>32-b|c<>>0>=32){h=g<>>32-d|e<>>0>=32){f=0;d=d>>>e|0}else{f=d>>>e|0;d=((1<>>e}d=j|d;e=f|h;f=b;b=i&31;if((i&63)>>>0>=32){h=f<>>32-b|c<>2]=b;H[a+4>>2]=c;H[a+8>>2]=d;H[a+12>>2]=e}function Vn(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0;g=oa-32|0;oa=g;H[g+24>>2]=b;a:{if(!(H[d+4>>2]&1)){H[g>>2]=-1;b=qa[H[H[a>>2]+16>>2]](a,b,c,d,e,g)|0;H[g+24>>2]=b;b:{switch(H[g>>2]){case 0:F[f|0]=0;break a;case 1:F[f|0]=1;break a;default:break b}}F[f|0]=1;H[e>>2]=4;break a}Ia(g,d);b=Fb(g);Fa(g);Ia(g,d);a=Gd(g);Fa(g);gc(g,a);fc(g|12,a);d=g+24|0;F[f|0]=(Te(g+24|0,c,g,d,b,e,1)|0)==(g|0);b=H[g+24>>2];while(1){d=va(d-12|0);if((g|0)!=(d|0)){continue}break}}oa=g+32|0;return b|0}function Mn(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0;g=oa-32|0;oa=g;H[g+24>>2]=b;a:{if(!(H[d+4>>2]&1)){H[g>>2]=-1;b=qa[H[H[a>>2]+16>>2]](a,b,c,d,e,g)|0;H[g+24>>2]=b;b:{switch(H[g>>2]){case 0:F[f|0]=0;break a;case 1:F[f|0]=1;break a;default:break b}}F[f|0]=1;H[e>>2]=4;break a}Ia(g,d);b=Ib(g);Fa(g);Ia(g,d);a=Dd(g);Fa(g);gc(g,a);fc(g|12,a);d=g+24|0;F[f|0]=(Re(g+24|0,c,g,d,b,e,1)|0)==(g|0);b=H[g+24>>2];while(1){d=va(d-12|0);if((g|0)!=(d|0)){continue}break}}oa=g+32|0;return b|0}function bf(a,b){var c=0,d=0,e=0,f=0;if((a|0)!=(b|0)){if(!tb(a)){if(!tb(b)){H[a+8>>2]=H[b+8>>2];c=H[b+4>>2];H[a>>2]=H[b>>2];H[a+4>>2]=c;return}e=Ca(b);b=wa(b);c=oa-16|0;oa=c;a:{if(b>>>0<=10){ub(a,b);Yb(a,e,b);F[c+15|0]=0;nb(a+b|0,c+15|0);break a}f=a;a=I[a+11|0];Pd(f,10,b-10|0,a,0,a,b,e)}oa=c+16|0;return}e=Ca(b);b=wa(b);c=oa-16|0;oa=c;d=Rc(a);b:{if(d>>>0>b>>>0){d=H[a>>2];yb(a,b);Yb(d,e,b);F[c+15|0]=0;nb(b+d|0,c+15|0);break b}f=a;a=H[a+4>>2];Pd(f,d-1|0,(b-d|0)+1|0,a,0,a,b,e)}oa=c+16|0}}function nd(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;h=Pa(c);a:{if((h|0)>=1){l=b-1|0;m=(b|0)<1;while(1){d=H[lc(c,g)>>2];b:{if(Ra(a,b,wa(d),d)){break b}e=wa(a);f=wa(d);i=0;j=F[Aa(d,0)|0];f=b+f|0;k=(f|0)>=(e|0);if(!k){i=F[Aa(a,f)|0]}c:{if(!m){e=I[Aa(a,l)|0];d:{if(!e){break d}if(!md(j)){break d}if(md(e<<24>>24)){break b}}if(!k){break c}break a}if((e|0)<=(f|0)){break a}}if(!md(j)){break a}if(!md(i<<24>>24)){break a}}g=g+1|0;if((h|0)!=(g|0)){continue}break}}d=0}return d}function Ti(a,b,c,d){var e=0,f=0,g=0;e=oa-16|0;oa=e;a:{b:{c:{if((a|0)!=(b|0)){g=H[6070];H[6070]=0;a=Yi(a,e+12|0,d,Oa());d=pa;f=H[6070];d:{if(f){if(H[e+12>>2]!=(b|0)){break d}if((f|0)==68){break b}break c}H[6070]=g;if(H[e+12>>2]==(b|0)){break c}}}H[c>>2]=4;b=0;break a}if(((d|0)<-1?1:(d|0)<=-1?a>>>0<2147483648:0)|((d|0)>0?1:(d|0)>=0?a>>>0>2147483647:0)){break b}b=a;break a}H[c>>2]=4;b=2147483647;if((d|0)>0?1:(d|0)>=0?a>>>0>=1:0){break a}b=-2147483648}oa=e+16|0;return b}function kd(a,b){var c=0,d=0,e=0;e=b;d=e&255;a:{if(d){if(a&3){while(1){c=I[a|0];if(!c|(c|0)==(e&255)){break a}a=a+1|0;if(a&3){continue}break}}c=H[a>>2];b:{if((c^-1)&c-16843009&-2139062144){break b}d=N(d,16843009);while(1){c=c^d;if((c^-1)&c-16843009&-2139062144){break b}c=H[a+4>>2];a=a+4|0;if(!(c-16843009&(c^-1)&-2139062144)){continue}break}}while(1){c=a;d=I[a|0];if(d){a=c+1|0;if((d|0)!=(e&255)){continue}}break}a=c;break a}a=yc(a)+a|0}return I[a|0]==(b&255)?a:0}function Oi(a,b,c,d){var e=0,f=0,g=0,h=0;e=oa-16|0;oa=e;a:{b:{c:{if((a|0)!=(b|0)){d:{e:{f=I[a|0];if((f|0)!=45){break e}a=a+1|0;if((b|0)!=(a|0)){break e}break d}h=H[6070];H[6070]=0;a=eg(a,e+12|0,d,Oa());d=pa;g=H[6070];f:{if(g){if(H[e+12>>2]!=(b|0)){break f}if((g|0)==68){break c}break b}H[6070]=h;if(H[e+12>>2]==(b|0)){break b}}}}H[c>>2]=4;a=0;b=0;break a}H[c>>2]=4;a=-1;b=-1;break a}b=a;c=(f|0)==45;a=c?0-a|0:a;b=c?0-(d+((b|0)!=0)|0)|0:d}oa=e+16|0;pa=b;return a}function rb(a,b,c,d,e,f,g,h,i){var j=0,k=0,l=0,m=0;h=Eq(b,c,h,i);i=pa;j=h;h=Eq(d,e,f,g);e=j+h|0;d=pa+i|0;i=e;h=e>>>0>>0?d+1|0:d;j=g;e=0;g=e;k=i;l=c;d=0;i=Eq(j,e,c,d);e=k+i|0;c=pa+h|0;k=e;e=e>>>0>>0?c+1|0:c;h=f;c=0;i=b;f=Eq(h,c,i,0);b=pa;d=Eq(h,c,l,d);b=b+d|0;c=pa;c=b>>>0>>0?c+1|0:c;h=c;c=c+k|0;d=c>>>0>>0?e+1|0:e;h=c;c=d;d=Eq(i,m,j,g)+b|0;e=pa;e=b>>>0>d>>>0?e+1|0:e;b=h;h=e;e=b+e|0;H[a+8>>2]=e;H[a+12>>2]=e>>>0>>0?c+1|0:c;H[a>>2]=f;H[a+4>>2]=d}function nf(a,b,c,d,e){var f=0,g=0;f=oa-16|0;oa=f;H[f+8>>2]=e;H[f+12>>2]=c;c=wa(a);if(!((e|0)==-1|c>>>0>>0)){H[f>>2]=c-b;H[f+4>>2]=H[zc(f+12|0,f)>>2];a=Ca(a)+b|0;c=0;b=H[zc(f+4|0,f+8|0)>>2];e=0;a:{if(!b){break a}b:{if(!b){break b}while(1){e=I[d|0];g=I[a|0];if((e|0)==(g|0)){d=d+1|0;a=a+1|0;b=b-1|0;if(b){continue}break b}break}c=g-e|0}e=c}b=e;c:{if(b){break c}b=-1;a=H[f+4>>2];c=H[f+8>>2];if(a>>>0>>0){break c}b=a>>>0>c>>>0}oa=f+16|0;return b}me();X()}function Tl(a){a=a|0;a:{if(F[24640]&1){break a}if(!fb(24640)){break a}b:{if(F[25160]&1){break b}if(!fb(25160)){break b}a=24992;while(1){a=bc(a)+12|0;if((a|0)!=25160){continue}break}eb(25160)}Ka(24992,17892);Ka(25004,17920);Ka(25016,17948);Ka(25028,17980);Ka(25040,18020);Ka(25052,18056);Ka(25064,18084);Ka(25076,18120);Ka(25088,18136);Ka(25100,18152);Ka(25112,18168);Ka(25124,18184);Ka(25136,18200);Ka(25148,18216);H[6159]=24992;eb(24640)}return H[6159]}function Ri(a,b,c,d){var e=0,f=0,g=0,h=0;e=oa-16|0;oa=e;a:{b:{c:{d:{if((a|0)!=(b|0)){e:{f:{f=I[a|0];if((f|0)!=45){break f}a=a+1|0;if((b|0)!=(a|0)){break f}break e}h=H[6070];H[6070]=0;a=eg(a,e+12|0,d,Oa());d=pa;g=H[6070];g:{if(g){if(H[e+12>>2]!=(b|0)){break g}if((g|0)==68){break c}break d}H[6070]=h;if(H[e+12>>2]==(b|0)){break d}}}}H[c>>2]=4;a=0;break a}if(!d&a>>>0<=65535){break b}}H[c>>2]=4;a=65535;break a}a=(f|0)==45?0-a|0:a}oa=e+16|0;return a&65535}function Jg(a,b,c,d,e,f,g,h){var i=0,j=0,k=0;i=oa-16|0;oa=i;if((b^-1)+1073741807>>>0>=c>>>0){j=Ca(a);a:{if(b>>>0<536870887){H[i+8>>2]=b<<1;H[i+12>>2]=b+c;c=ud(H[ad(i+12|0,i+8|0)>>2]);break a}c=1073741806}k=c+1|0;c=Sj(k);if(e){oc(c,j,e)}if(g){oc(c+(e<<2)|0,h,g)}d=d-(e+f|0)|0;if(d){h=e<<2;oc((h+c|0)+(g<<2)|0,(h+j|0)+(f<<2)|0,d)}if((b|0)!=1){Ba(j)}_b(a,c);Zb(a,k);b=a;a=d+(e+g|0)|0;yb(b,a);H[i+4>>2]=0;Cb(c+(a<<2)|0,i+4|0);oa=i+16|0;return}Xb();X()}function gg(a,b,c,d,e){var f=0,g=0,h=0,i=0,j=0;h=-1;f=d&2147483647;i=f;g=c;a:{if(!c&(f|0)==2147418112?a|b:(f|0)==2147418112&(c|0)!=0|f>>>0>2147418112){break a}f=e&2147483647;j=f;if((f|0)==2147418112?0:f>>>0>2147418112){break a}if(!(a|g|(i|j|b))){return 0}g=d&e;if((g|0)>0?1:(g|0)>=0){if(!c&(d|0)==(e|0)?0:(d|0)<(e|0)){break a}return(a|c)!=0|(d^e|b)!=0}if(!c&(d|0)==(e|0)?a|b:(d|0)>(e|0)?1:(d|0)>=(e|0)?c:0){break a}h=(a|c)!=0|(d^e|b)!=0}return h}function id(a,b){a:{if(a){if(b>>>0<=127){break a}b:{if(!H[H[5347]>>2]){if((b&-128)==57216){break a}break b}if(b>>>0<=2047){F[a+1|0]=b&63|128;F[a|0]=b>>>6|192;return 2}if(!((b&-8192)!=57344?b>>>0>=55296:0)){F[a+2|0]=b&63|128;F[a|0]=b>>>12|224;F[a+1|0]=b>>>6&63|128;return 3}if(b-65536>>>0<=1048575){F[a+3|0]=b&63|128;F[a|0]=b>>>18|240;F[a+2|0]=b>>>6&63|128;F[a+1|0]=b>>>12&63|128;return 4}}H[6070]=25;a=-1}else{a=1}return a}F[a|0]=b;return 1}function Vl(a){a=a|0;a:{if(F[24632]&1){break a}if(!fb(24632)){break a}b:{if(F[24984]&1){break b}if(!fb(24984)){break b}a=24816;while(1){a=Ea(a)+12|0;if((a|0)!=24984){continue}break}eb(24984)}Ga(24816,1142);Ga(24828,1149);Ga(24840,1115);Ga(24852,1123);Ga(24864,1106);Ga(24876,1156);Ga(24888,1133);Ga(24900,1685);Ga(24912,1782);Ga(24924,2200);Ga(24936,2469);Ga(24948,1262);Ga(24960,1937);Ga(24972,1356);H[6157]=24816;eb(24632)}return H[6157]}function lo(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;d=oa-32|0;oa=d;H[d+16>>2]=b;e=H[a+48>>2];H[d+20>>2]=c-((e|0)!=0);f=H[a+44>>2];H[d+28>>2]=e;H[d+24>>2]=f;e=-1;a:{b:{if(!Ye(ha(H[a+60>>2],d+16|0,2,d+12|0)|0)){e=H[d+12>>2];if((e|0)>0){break b}}H[a>>2]=H[a>>2]|e&48^16;break a}g=H[d+20>>2];if(g>>>0>=e>>>0){break a}f=H[a+44>>2];H[a+4>>2]=f;H[a+8>>2]=f+(e-g|0);if(H[a+48>>2]){H[a+4>>2]=f+1;F[(b+c|0)-1|0]=I[f|0]}e=c}oa=d+32|0;return e|0}function tn(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0;a=oa-32|0;oa=a;G[a+28>>1]=I[13269]|I[13270]<<8;H[a+24>>2]=I[13265]|I[13266]<<8|(I[13267]<<16|I[13268]<<24);Uc(a+24|1,1886,1,H[c+4>>2]);g=H[c+4>>2];f=a-16|0;oa=f;h=Oa();H[a>>2]=e;e=g>>>9&1;g=vb(f,e+13|0,h,a+24|0,a)+f|0;h=Nb(f,g,c);e=f-((e<<3)+107&112)|0;oa=e;Ia(a+8|0,c);Ne(f,h,g,e,a+20|0,a+16|0,a+8|0);Fa(a+8|0);b=Dc(b,e,H[a+20>>2],H[a+16>>2],c,d);oa=a+32|0;return b|0}function Pi(a,b,c,d){var e=0,f=0,g=0,h=0;e=oa-16|0;oa=e;a:{b:{c:{d:{if((a|0)!=(b|0)){e:{f:{f=I[a|0];if((f|0)!=45){break f}a=a+1|0;if((b|0)!=(a|0)){break f}break e}h=H[6070];H[6070]=0;a=eg(a,e+12|0,d,Oa());d=pa;g=H[6070];g:{if(g){if(H[e+12>>2]!=(b|0)){break g}if((g|0)==68){break c}break d}H[6070]=h;if(H[e+12>>2]==(b|0)){break d}}}}H[c>>2]=4;a=0;break a}if(!d){break b}}H[c>>2]=4;a=-1;break a}a=(f|0)==45?0-a|0:a}oa=e+16|0;return a}function nl(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;e=oa-16|0;oa=e;while(1){a:{if((c|0)<=(f|0)){break a}d=H[a+16>>2];g=H[a+12>>2];b:{if(d>>>0>g>>>0){H[e+12>>2]=2147483647;H[e+8>>2]=d-g>>2;H[e+4>>2]=c-f;d=H[td(e+12|0,td(e+8|0,e+4|0))>>2];oc(b,H[a+12>>2],d);H[a+12>>2]=H[a+12>>2]+(d<<2);b=(d<<2)+b|0;break b}d=qa[H[H[a>>2]+40>>2]](a)|0;if((d|0)==-1){break a}H[b>>2]=d;d=1;b=b+4|0}f=d+f|0;continue}break}oa=e+16|0;return f|0}function nn(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0;a=oa-208|0;oa=a;G[a+204>>1]=I[13275]|I[13276]<<8;H[a+200>>2]=I[13271]|I[13272]<<8|(I[13273]<<16|I[13274]<<24);f=Oa();H[a>>2]=e;h=vb(a+176|0,20,f,a+200|0,a);e=h+(a+176|0)|0;f=Nb(a+176|0,e,c);Ia(a+16|0,c);g=Ib(a+16|0);Fa(a+16|0);Ec(g,a+176|0,e,a+16|0);g=b;b=(a+16|0)+(h<<2)|0;b=Dc(g,a+16|0,(e|0)==(f|0)?b:((f-a<<2)+a|0)-688|0,b,c,d);oa=a+208|0;return b|0}function Cn(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0;a=oa-32|0;oa=a;G[a+28>>1]=I[13269]|I[13270]<<8;H[a+24>>2]=I[13265]|I[13266]<<8|(I[13267]<<16|I[13268]<<24);Uc(a+24|1,1886,1,H[c+4>>2]);g=H[c+4>>2];f=a-16|0;oa=f;h=Oa();H[a>>2]=e;g=vb(f,(g>>>9&1)+13|0,h,a+24|0,a)+f|0;h=Nb(f,g,c);e=f-32|0;oa=e;Ia(a+8|0,c);Pe(f,h,g,e,a+20|0,a+16|0,a+8|0);Fa(a+8|0);b=pc(b,e,H[a+20>>2],H[a+16>>2],c,d);oa=a+32|0;return b|0}function rn(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0;a=oa-32|0;oa=a;G[a+28>>1]=I[13269]|I[13270]<<8;H[a+24>>2]=I[13265]|I[13266]<<8|(I[13267]<<16|I[13268]<<24);Uc(a+24|1,1886,0,H[c+4>>2]);g=H[c+4>>2];f=a-16|0;oa=f;h=Oa();H[a>>2]=e;g=vb(f,g>>>9&1|12,h,a+24|0,a)+f|0;h=Nb(f,g,c);e=f-96|0;oa=e;Ia(a+8|0,c);Ne(f,h,g,e,a+20|0,a+16|0,a+8|0);Fa(a+8|0);b=Dc(b,e,H[a+20>>2],H[a+16>>2],c,d);oa=a+32|0;return b|0}function An(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0;a=oa-32|0;oa=a;G[a+28>>1]=I[13269]|I[13270]<<8;H[a+24>>2]=I[13265]|I[13266]<<8|(I[13267]<<16|I[13268]<<24);Uc(a+24|1,1886,0,H[c+4>>2]);g=H[c+4>>2];f=a-16|0;oa=f;h=Oa();H[a>>2]=e;g=vb(f,g>>>9&1|12,h,a+24|0,a)+f|0;h=Nb(f,g,c);e=f-32|0;oa=e;Ia(a+8|0,c);Pe(f,h,g,e,a+20|0,a+16|0,a+8|0);Fa(a+8|0);b=pc(b,e,H[a+20>>2],H[a+16>>2],c,d);oa=a+32|0;return b|0}function vn(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0;a=oa-96|0;oa=a;G[a+92>>1]=I[13275]|I[13276]<<8;H[a+88>>2]=I[13271]|I[13272]<<8|(I[13273]<<16|I[13274]<<24);f=Oa();H[a>>2]=e;h=vb(a- -64|0,20,f,a+88|0,a);e=h+(a- -64|0)|0;f=Nb(a- -64|0,e,c);Ia(a+16|0,c);g=Fb(a+16|0);Fa(a+16|0);Wc(g,a- -64|0,e,a+16|0);g=b;b=(a+16|0)+h|0;b=pc(g,a+16|0,(e|0)==(f|0)?b:((f-a|0)+a|0)-48|0,b,c,d);oa=a+96|0;return b|0}function un(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0;f=oa-48|0;oa=f;H[f+40>>2]=b;a:{if(!(H[c+4>>2]&1)){c=qa[H[H[a>>2]+24>>2]](a,b,c,d,e)|0;break a}Ia(f+24|0,c);a=Dd(f+24|0);Fa(f+24|0);b:{if(e){gc(f+24|0,a);break b}fc(f+24|0,a)}H[f+16>>2]=Ob(f+24|0);while(1){H[f+8>>2]=Sc(f+24|0);if(zb(f+16|0,f+8|0)){Ci(f+40|0,H[H[f+16>>2]>>2]);od(f+16|0);continue}else{c=H[f+40>>2];va(f+24|0)}break}}oa=f+48|0;return c|0}function Dn(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0;f=oa-48|0;oa=f;H[f+40>>2]=b;a:{if(!(H[c+4>>2]&1)){c=qa[H[H[a>>2]+24>>2]](a,b,c,d,e)|0;break a}Ia(f+24|0,c);a=Gd(f+24|0);Fa(f+24|0);b:{if(e){gc(f+24|0,a);break b}fc(f+24|0,a)}H[f+16>>2]=Ob(f+24|0);while(1){H[f+8>>2]=Vc(f+24|0);if(zb(f+16|0,f+8|0)){Vf(f+40|0,F[H[f+16>>2]]);Wd(f+16|0);continue}else{c=H[f+40>>2];va(f+24|0)}break}}oa=f+48|0;return c|0}function pl(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;e=oa-16|0;oa=e;while(1){a:{if((c|0)<=(f|0)){break a}d=H[a+28>>2];g=H[a+24>>2];if(d>>>0<=g>>>0){if(((i=a,j=Sb(F[b|0]),h=H[H[a>>2]+52>>2],qa[h](i|0,j|0)|0)|0)==-1){break a}f=f+1|0;b=b+1|0}else{H[e+12>>2]=d-g;H[e+8>>2]=c-f;d=H[td(e+12|0,e+8|0)>>2];Yb(H[a+24>>2],b,d);H[a+24>>2]=d+H[a+24>>2];f=f+d|0;b=b+d|0}continue}break}oa=e+16|0;return f|0}function tj(a,b){var c=0;c=(b|0)!=0;a:{b:{c:{if(!(a&3)|!b){break c}while(1){if(!I[a|0]){break b}b=b-1|0;c=(b|0)!=0;a=a+1|0;if(!(a&3)){break c}if(b){continue}break}}if(!c){break a}}d:{if(!I[a|0]|b>>>0<4){break d}while(1){c=H[a>>2];if((c^-1)&c-16843009&-2139062144){break d}a=a+4|0;b=b-4|0;if(b>>>0>3){continue}break}}if(!b){break a}while(1){if(!I[a|0]){return a}a=a+1|0;b=b-1|0;if(b){continue}break}}return 0}function dg(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0,k=0;e=oa-160|0;oa=e;Vb(e+16|0,0,144);H[e+92>>2]=-1;H[e+60>>2]=b;H[e+24>>2]=-1;H[e+20>>2]=b;kc(e+16|0,0,0);kj(e,e+16|0,d,1);d=H[e+8>>2];g=H[e+12>>2];h=H[e>>2];i=H[e+4>>2];if(c){j=c;f=b;b=H[e+20>>2]-H[e+24>>2]|0;k=b;c=b+H[e+136>>2]|0;b=H[e+140>>2]+(b>>31)|0;b=c>>>0>>0?b+1|0:b;H[j>>2]=!(b|c)?f:f+c|0}H[a>>2]=h;H[a+4>>2]=i;H[a+8>>2]=d;H[a+12>>2]=g;oa=e+160|0}function el(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;d=oa-16|0;oa=d;a:{b:{if(H[b+64>>2]){if(!(qa[H[H[b>>2]+24>>2]](b)|0)){break b}}Kc(a,-1,-1);break a}if(Ae(H[b+64>>2],H[c+8>>2],H[c+12>>2],0)){Kc(a,-1,-1);break a}f=H[c+4>>2];e=d;H[e+8>>2]=H[c>>2];H[e+12>>2]=f;f=H[e+12>>2];H[b+72>>2]=H[e+8>>2];H[b+76>>2]=f;b=H[c+12>>2];H[a+8>>2]=H[c+8>>2];H[a+12>>2]=b;b=H[c+4>>2];H[a>>2]=H[c>>2];H[a+4>>2]=b}oa=d+16|0}function Pd(a,b,c,d,e,f,g,h){var i=0,j=0,k=0;i=oa-16|0;oa=i;if((b^-1)-17>>>0>=c>>>0){j=Ca(a);a:{if(b>>>0<2147483623){H[i+8>>2]=b<<1;H[i+12>>2]=b+c;c=cd(H[ad(i+12|0,i+8|0)>>2]);break a}c=-18}k=c+1|0;c=Na(k);if(e){Yb(c,j,e)}if(g){Yb(c+e|0,h,g)}d=d-(e+f|0)|0;if(d){Yb((c+e|0)+g|0,(e+j|0)+f|0,d)}if((b|0)!=10){Ba(j)}_b(a,c);Zb(a,k);b=a;a=d+(e+g|0)|0;yb(b,a);F[i+7|0]=0;nb(a+c|0,i+7|0);oa=i+16|0;return}Xb();X()}function Ka(a,b){var c=0,d=0,e=0,f=0,g=0,h=0;d=aj(b);e=oa-16|0;oa=e;f=a;a=Mf(a);a:{if(a>>>0>=d>>>0){g=Ca(f);c=g;a=d;if(a){b:{if(c-b>>2>>>0>>0){while(1){a=a-1|0;h=a<<2;H[h+c>>2]=H[b+h>>2];if(a){continue}break b}}if(!a){break b}while(1){H[c>>2]=H[b>>2];c=c+4|0;b=b+4|0;a=a-1|0;if(a){continue}break}}}H[e+12>>2]=0;Cb((d<<2)+g|0,e+12|0);Lc(f,d);break a}c=a;g=d-a|0;a=wa(f);Jg(f,c,g,a,0,a,d,b)}oa=e+16|0}function sn(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;a=oa-32|0;oa=a;H[a+24>>2]=37;H[a+28>>2]=0;Uc(a+24|1,1871,1,H[c+4>>2]);h=H[c+4>>2];g=a-32|0;oa=g;i=Oa();H[a>>2]=e;H[a+4>>2]=f;e=h>>>9&1;f=vb(g,e+23|0,i,a+24|0,a)+g|0;h=Nb(g,f,c);e=g-((e<<3)+187&240)|0;oa=e;Ia(a+8|0,c);Ne(g,h,f,e,a+20|0,a+16|0,a+8|0);Fa(a+8|0);b=Dc(b,e,H[a+20>>2],H[a+16>>2],c,d);oa=a+32|0;return b|0}function rl(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;e=oa-16|0;oa=e;while(1){a:{if((c|0)<=(f|0)){break a}d=H[a+16>>2];g=H[a+12>>2];b:{if(d>>>0>g>>>0){H[e+12>>2]=2147483647;H[e+8>>2]=d-g;H[e+4>>2]=c-f;d=H[td(e+12|0,td(e+8|0,e+4|0))>>2];Yb(b,H[a+12>>2],d);Gf(a,d);break b}d=qa[H[H[a>>2]+40>>2]](a)|0;if((d|0)==-1){break a}F[b|0]=Zc(d);d=1}b=b+d|0;f=d+f|0;continue}break}oa=e+16|0;return f|0}function qn(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;a=oa-32|0;oa=a;H[a+24>>2]=37;H[a+28>>2]=0;Uc(a+24|1,1871,0,H[c+4>>2]);h=H[c+4>>2];g=a-32|0;oa=g;i=Oa();H[a>>2]=e;H[a+4>>2]=f;e=h>>>9&1;f=vb(g,e+23|0,i,a+24|0,a)+g|0;h=Nb(g,f,c);e=g-((e<<3)+187&240)|0;oa=e;Ia(a+8|0,c);Ne(g,h,f,e,a+20|0,a+16|0,a+8|0);Fa(a+8|0);b=Dc(b,e,H[a+20>>2],H[a+16>>2],c,d);oa=a+32|0;return b|0}function Kf(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0;e=oa-32|0;oa=e;f=Bf(e+24|0,a);a:{if(!I[f|0]){break a}h=Oh(e+8|0,a);i=H[(H[H[a>>2]-12>>2]+a|0)+4>>2];g=H[H[a>>2]-12>>2]+a|0;d=g;b:{if(!qb(-1,H[d+76>>2])){d=H[d+76>>2];break b}j=d;d=pg(d,32);H[j+76>>2]=d}c=b+c|0;H[e+16>>2]=pc(H[h>>2],b,(i&176)==32?c:b,c,g,d<<24>>24);if(!De(e+16|0)){break a}ac(H[H[a>>2]-12>>2]+a|0,5)}ue(f);oa=e+32|0;return a}function ll(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;d=oa-16|0;oa=d;while(1){a:{if((c|0)<=(e|0)){break a}f=H[a+24>>2];g=H[a+28>>2];if(f>>>0>=g>>>0){if((qa[H[H[a>>2]+52>>2]](a,H[b>>2])|0)==-1){break a}e=e+1|0;b=b+4|0}else{H[d+12>>2]=g-f>>2;H[d+8>>2]=c-e;f=H[td(d+12|0,d+8|0)>>2];oc(H[a+24>>2],b,f);g=f<<2;H[a+24>>2]=g+H[a+24>>2];e=e+f|0;b=b+g|0}continue}break}oa=d+16|0;return e|0}function Ni(a,b,c){var d=0,e=0,f=O(0),g=0,h=O(0);e=oa-16|0;oa=e;a:{b:{c:{if((a|0)!=(b|0)){g=H[6070];H[6070]=0;Oa();d=oa-16|0;oa=d;dg(d,a,e+12|0,0);f=ij(H[d>>2],H[d+4>>2],H[d+8>>2],H[d+12>>2]);oa=d+16|0;a=H[6070];if(!a){break c}if(H[e+12>>2]!=(b|0)){break b}h=f;if((a|0)!=68){break a}break b}H[c>>2]=4;break a}H[6070]=g;if(H[e+12>>2]==(b|0)){break a}}H[c>>2]=4;f=h}oa=e+16|0;return f}function Si(a,b,c,d){var e=0,f=0,g=0;e=oa-16|0;oa=e;a:{b:{if((a|0)!=(b|0)){g=H[6070];H[6070]=0;d=Yi(a,e+12|0,d,Oa());a=pa;f=H[6070];c:{if(f){if(H[e+12>>2]!=(b|0)){break c}if((f|0)==68){break b}break a}H[6070]=g;if(H[e+12>>2]==(b|0)){break a}}}H[c>>2]=4;d=0;a=0;break a}H[c>>2]=4;if((a|0)>0?1:(a|0)>=0?d>>>0>=1:0){d=-1;a=2147483647;break a}d=0;a=-2147483648}oa=e+16|0;pa=a;return d}function Wa(a){var b=0,c=0,d=0,e=0,f=0;b=oa-32|0;oa=b;H[b+12>>2]=0;H[b+8>>2]=153;c=H[b+12>>2];H[b>>2]=H[b+8>>2];H[b+4>>2]=c;d=H[b+4>>2];e=b+16|0;c=e;H[c+4>>2]=H[b>>2];H[c+8>>2]=d;H[c>>2]=a;c=oa-16|0;oa=c;d=a;if(H[d>>2]!=-1){f=c+8|0;Hc(f,e);Hc(c,f);e=c;while(1){if(H[d>>2]==1){continue}break}if(!H[d>>2]){H[d>>2]=1;qa[154](e);H[d>>2]=-1}}oa=c+16|0;oa=b+32|0;return H[a+4>>2]-1|0}function zn(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;a=oa-32|0;oa=a;H[a+24>>2]=37;H[a+28>>2]=0;Uc(a+24|1,1871,0,H[c+4>>2]);h=H[c+4>>2];g=a-32|0;oa=g;i=Oa();H[a>>2]=e;H[a+4>>2]=f;f=vb(g,(h>>>9&1)+23|0,i,a+24|0,a)+g|0;h=Nb(g,f,c);e=g-48|0;oa=e;Ia(a+8|0,c);Pe(g,h,f,e,a+20|0,a+16|0,a+8|0);Fa(a+8|0);b=pc(b,e,H[a+20>>2],H[a+16>>2],c,d);oa=a+32|0;return b|0}function Mi(a,b,c){var d=0,e=0,f=0,g=0,h=0;e=oa-16|0;oa=e;a:{b:{c:{if((a|0)!=(b|0)){g=H[6070];H[6070]=0;Oa();d=oa-16|0;oa=d;dg(d,a,e+12|0,1);f=ig(H[d>>2],H[d+4>>2],H[d+8>>2],H[d+12>>2]);oa=d+16|0;a=H[6070];if(!a){break c}if(H[e+12>>2]!=(b|0)){break b}h=f;if((a|0)!=68){break a}break b}H[c>>2]=4;break a}H[6070]=g;if(H[e+12>>2]==(b|0)){break a}}H[c>>2]=4;f=h}oa=e+16|0;return f}function Bn(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;a=oa-32|0;oa=a;H[a+24>>2]=37;H[a+28>>2]=0;Uc(a+24|1,1871,1,H[c+4>>2]);h=H[c+4>>2];g=a-32|0;oa=g;i=Oa();H[a>>2]=e;H[a+4>>2]=f;f=vb(g,(h>>>9&1)+23|0,i,a+24|0,a)+g|0;h=Nb(g,f,c);e=g-48|0;oa=e;Ia(a+8|0,c);Pe(g,h,f,e,a+20|0,a+16|0,a+8|0);Fa(a+8|0);b=pc(b,e,H[a+20>>2],H[a+16>>2],c,d);oa=a+32|0;return b|0}function Kj(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0;a:{d=Ca(c);c=wa(c);g=oa-16|0;oa=g;f=wa(a);if(f>>>0>=b>>>0){e=Ja(a);b:{if(c>>>0<=e-f>>>0){if(!c){break b}e=Ca(a);i=e+b|0;h=f-b|0;if(h){b=b+e|0;qf(b+c|0,b,h);d=b>>>0<=d>>>0?f+e>>>0>d>>>0?c+d|0:d:d}qf(i,d,c);b=a;a=c+f|0;Lc(b,a);F[g+15|0]=0;nb(a+e|0,g+15|0);break b}Pd(a,e,(c+f|0)-e|0,f,b,0,c,d)}oa=g+16|0;break a}me();X()}}function Oe(a,b,c){var d=0,e=0;if(c&2048){F[a|0]=43;a=a+1|0}if(c&1024){F[a|0]=35;a=a+1|0}d=c&260;if((d|0)!=260){F[a|0]=46;F[a+1|0]=42;a=a+2|0}c=c&16384;while(1){e=I[b|0];if(e){F[a|0]=e;a=a+1|0;b=b+1|0;continue}break}a:{b:{if((d|0)!=256){if((d|0)!=4){break b}b=c?70:102;break a}b=c?69:101;break a}b=c?65:97;if((d|0)==260){break a}b=c?71:103}F[a|0]=b;return(d|0)!=260}function sc(a,b,c,d,e){var f=0,g=0,h=0;f=oa-16|0;oa=f;H[f+8>>2]=b;b=0;g=6;a:{b:{if(kb(a,f+8|0)){break b}g=4;h=bb(a);if(!dc(d,2048,h)){break b}b=zd(d,h);while(1){c:{ib(a);b=b-48|0;if(!Bb(a,f+8|0)|(e|0)<2){break c}g=bb(a);if(!dc(d,2048,g)){break a}e=e-1|0;b=zd(d,g)+N(b,10)|0;continue}break}g=2;if(!kb(a,f+8|0)){break a}}H[c>>2]=H[c>>2]|g}oa=f+16|0;return b}function rc(a,b,c,d,e){var f=0,g=0,h=0;f=oa-16|0;oa=f;H[f+8>>2]=b;b=0;g=6;a:{b:{if(jb(a,f+8|0)){break b}g=4;h=ab(a);if(!cc(d,2048,h)){break b}b=yd(d,h);while(1){c:{hb(a);b=b-48|0;if(!Ab(a,f+8|0)|(e|0)<2){break c}g=ab(a);if(!cc(d,2048,g)){break a}e=e-1|0;b=yd(d,g)+N(b,10)|0;continue}break}g=2;if(!jb(a,f+8|0)){break a}}H[c>>2]=H[c>>2]|g}oa=f+16|0;return b}function lm(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;while(1){a:{if((c|0)==(d|0)|e>>>0<=h>>>0){break a}g=1;f=oa-16|0;oa=f;H[f+12>>2]=H[a+8>>2];k=jc(f+8|0,f+12|0);i=Ve(0,c,d-c|0,b?b:24364);ic(k);oa=f+16|0;b:{switch(i+2|0){default:g=i;break;case 0:case 1:break a;case 2:break b}}h=h+1|0;j=g+j|0;c=c+g|0;continue}break}return j|0}function Dc(a,b,c,d,e,f){var g=0,h=0,i=0,j=0;i=oa-16|0;oa=i;a:{if(!a){break a}h=H[e+12>>2];g=c-b|0;if((g|0)>=1){g=g>>2;if((wd(a,b,g)|0)!=(g|0)){break a}}b=d-b>>2;b=(b|0)<(h|0)?h-b|0:0;if((b|0)>=1){f=Bi(i,b,f);h=wd(a,Ca(f),b);va(f);if((b|0)!=(h|0)){break a}}b=d-c|0;if((b|0)>=1){b=b>>2;if((wd(a,c,b)|0)!=(b|0)){break a}}Dh(e);j=a}oa=i+16|0;return j}function Af(a){var b=0,c=0,d=0;d=oa-16|0;oa=d;if(H[(H[H[a>>2]-12>>2]+a|0)+24>>2]){c=a;b=d+8|0;H[b+4>>2]=a;F[b|0]=0;if(Sd(H[H[a>>2]-12>>2]+a|0)){if(H[(H[H[c>>2]-12>>2]+c|0)+72>>2]){Af(H[(H[H[c>>2]-12>>2]+c|0)+72>>2])}F[b|0]=1}a:{if(!I[b|0]){break a}if(($c(H[(H[H[a>>2]-12>>2]+a|0)+24>>2])|0)!=-1){break a}ac(H[H[a>>2]-12>>2]+a|0,1)}ue(b)}oa=d+16|0}function hf(a,b,c,d){F[a+53|0]=1;a:{if(H[a+4>>2]!=(c|0)){break a}F[a+52|0]=1;c=H[a+16>>2];b:{if(!c){H[a+36>>2]=1;H[a+24>>2]=d;H[a+16>>2]=b;if(H[a+48>>2]!=1){break a}if((d|0)==1){break b}break a}if((b|0)==(c|0)){c=H[a+24>>2];if((c|0)==2){H[a+24>>2]=d;c=d}if(H[a+48>>2]!=1){break a}if((c|0)==1){break b}break a}H[a+36>>2]=H[a+36>>2]+1}F[a+54|0]=1}}function xd(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0;e=oa-16|0;oa=e;f=H[Ad(a)>>2];d=H[c>>2]-H[a>>2]|0;a:{if(d>>>0<2147483647){d=d<<1;break a}d=-1}d=d?d:4;h=H[b>>2];i=H[a>>2];g=ke((f|0)==152?0:H[a>>2],d);if(g){if((f|0)!=152){Ud(a)}H[e+4>>2]=151;f=Ya(e+8|0,g,e+4|0);fi(a,f);_a(f);H[b>>2]=H[a>>2]+(h-i|0);H[c>>2]=H[a>>2]+(d&-4);oa=e+16|0;return}db();X()}function Bi(a,b,c){var d=0,e=0,f=0,g=0,h=0;h=oa-16|0;oa=h;f=oa-16|0;oa=f;d=a;a:{if(b>>>0<=1073741807){b:{if(b>>>0<=1){ub(d,b);g=d;break b}e=ud(b)+1|0;g=Sj(e);_b(d,g);Zb(d,e);yb(d,b)}e=g;d=b;if(d){if(d){while(1){H[e>>2]=c;e=e+4|0;d=d-1|0;if(d){continue}break}}}H[f+12>>2]=0;Cb((b<<2)+g|0,f+12|0);oa=f+16|0;break a}Xb();X()}oa=h+16|0;return a}function ph(a,b,c,d){var e=0,f=0;if((d|0)==1){f=b;e=H[a+8>>2]-H[a+4>>2]|0;b=b-e|0;c=c-((e>>31)+(f>>>0>>0)|0)|0}a:{if(K[a+20>>2]>K[a+28>>2]){qa[H[a+36>>2]](a,0,0)|0;if(!H[a+20>>2]){break a}}H[a+28>>2]=0;H[a+16>>2]=0;H[a+20>>2]=0;qa[H[a+40>>2]](a,b,c,d)|0;if((pa|0)<0){break a}H[a+4>>2]=0;H[a+8>>2]=0;H[a>>2]=H[a>>2]&-17;return 0}return-1}function ji(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0;e=oa-16|0;oa=e;f=H[Ad(a)>>2];d=H[c>>2]-H[a>>2]|0;a:{if(d>>>0<2147483647){d=d<<1;break a}d=-1}d=d?d:1;h=H[b>>2];i=H[a>>2];g=ke((f|0)==152?0:H[a>>2],d);if(g){if((f|0)!=152){Ud(a)}H[e+4>>2]=151;f=Ya(e+8|0,g,e+4|0);fi(a,f);_a(f);H[b>>2]=H[a>>2]+(h-i|0);H[c>>2]=d+H[a>>2];oa=e+16|0;return}db();X()}function Qm(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;d=oa-16|0;oa=d;b=a;a:{if(!tb(f)){H[b+8>>2]=H[f+8>>2];a=H[f+4>>2];H[b>>2]=H[f>>2];H[b+4>>2]=a;break a}e=H[f>>2];b:{c:{c=H[f+4>>2];d:{if(c>>>0<=1){ub(a,c);break d}if(c>>>0>1073741807){break c}f=ud(c)+1|0;b=Sj(f);_b(a,b);Zb(a,f);yb(a,c)}oc(b,e,c+1|0);break b}Xb();X()}}oa=d+16|0}function cf(a,b){var c=0,d=0,e=0,f=0,g=0;e=oa-16|0;oa=e;a:{b:{c:{c=wa(b)-1|0;if((c|0)<1){break c}while(1){if(!Db(F[Aa(b,d)|0])){break c}d=d+1|0;if((d|0)!=(c|0)){continue}break}d=c;break b}if((c|0)<(d|0)){break a}}while(1){if(!Db(F[Aa(b,c)|0])){break a}g=(c|0)>(d|0);f=c-1|0;c=f;if(g){continue}break}c=f}Kg(a,b,d,(c-d|0)+1|0);oa=e+16|0}function pc(a,b,c,d,e,f){var g=0,h=0,i=0,j=0;h=oa-16|0;oa=h;a:{if(!a){break a}g=H[e+12>>2];i=c-b|0;if((i|0)>=1){if((wd(a,b,i)|0)!=(i|0)){break a}}b=d-b|0;b=(b|0)<(g|0)?g-b|0:0;if((b|0)>=1){f=Nf(h,b,f);g=wd(a,Ca(f),b);va(f);if((b|0)!=(g|0)){break a}}b=d-c|0;if((b|0)>=1){if((wd(a,c,b)|0)!=(b|0)){break a}}Dh(e);j=a}oa=h+16|0;return j}function mf(a,b){var c=0,d=0,e=0;d=oa-16|0;oa=d;H[d+12>>2]=b;a:{b:{c:{d:{if(tb(a)){c=Rc(a)-1|0;e=H[a+4>>2];if((c|0)==(e|0)){break d}break b}e=1;c=1;b=I[a+11|0];if((b|0)!=1){break c}}Ig(a,c,1,c,c);b=e;if(tb(a)){break b}}c=a;ub(a,b+1|0);break a}c=H[a>>2];yb(a,e+1|0);b=e}a=(b<<2)+c|0;Cb(a,d+12|0);H[d+8>>2]=0;Cb(a+4|0,d+8|0);oa=d+16|0}function Od(a,b){var c=0,d=0,e=0;d=oa-16|0;oa=d;F[d+15|0]=b;a:{b:{c:{d:{if(tb(a)){c=Rc(a)-1|0;e=H[a+4>>2];if((c|0)==(e|0)){break d}break b}e=10;c=10;b=I[a+11|0];if((b|0)!=10){break c}}pf(a,c,1,c,c);b=e;if(tb(a)){break b}}c=a;ub(a,b+1|0);break a}c=H[a>>2];yb(a,e+1|0);b=e}a=b+c|0;nb(a,d+15|0);F[d+14|0]=0;nb(a+1|0,d+14|0);oa=d+16|0}function Ig(a,b,c,d,e){var f=0,g=0,h=0;f=oa-16|0;oa=f;if(1073741807-b>>>0>=c>>>0){g=Ca(a);a:{if(b>>>0<536870887){H[f+8>>2]=b<<1;H[f+12>>2]=b+c;c=ud(H[ad(f+12|0,f+8|0)>>2]);break a}c=1073741806}h=c+1|0;c=Sj(h);if(e){oc(c,g,e)}d=d-e|0;if(d){e=e<<2;oc(e+c|0,e+g|0,d)}if((b|0)!=1){Ba(g)}_b(a,c);Zb(a,h);oa=f+16|0;return}Xb();X()}function yk(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;if(Mb(a,H[b+8>>2],e)){gf(b,c,d);return}a:{if(!Mb(a,H[b>>2],e)){break a}if(!(H[b+20>>2]!=(c|0)?H[b+16>>2]!=(c|0):0)){if((d|0)!=1){break a}H[b+32>>2]=1;return}H[b+20>>2]=c;H[b+32>>2]=d;H[b+40>>2]=H[b+40>>2]+1;if(!(H[b+36>>2]!=1|H[b+24>>2]!=2)){F[b+54|0]=1}H[b+44>>2]=4}}function oh(a,b,c){var d=0,e=0,f=0;f=b;d=I[c+74|0];F[c+74|0]=d-1|d;e=H[c+4>>2];d=H[c+8>>2]-e|0;if((d|0)<1){d=f}else{d=d>>>0>>0?d:f;Wb(a,e,d);H[c+4>>2]=d+H[c+4>>2];a=a+d|0;d=f-d|0}if(d){while(1){a:{if(!lg(c)){e=qa[H[c+32>>2]](c,a,d)|0;if(e+1>>>0>1){break a}}return f-d|0}a=a+e|0;d=d-e|0;if(d){continue}break}}return b}function Td(a,b){var c=0,d=0,e=0,f=0;d=oa-16|0;oa=d;c=a;a:{if(!tb(b)){H[c+8>>2]=H[b+8>>2];a=H[b+4>>2];H[c>>2]=H[b>>2];H[c+4>>2]=a;break a}f=H[b>>2];b:{c:{c=H[b+4>>2];d:{if(c>>>0<=10){b=a;ub(b,c);break d}if(c>>>0>4294967279){break c}e=cd(c)+1|0;b=Na(e);_b(a,b);Zb(a,e);yb(a,c)}Yb(b,f,c+1|0);break b}Xb();X()}}oa=d+16|0}function wb(a,b,c,d){var e=0,f=0;a:{if(!wa(a)|(c-b|0)<5){break a}Me(b,c);e=c-4|0;c=Ca(a);f=c+wa(a)|0;b:{while(1){c:{a=F[c|0];if(b>>>0>=e>>>0){break c}if(!(H[b>>2]!=F[c|0]?(a|0)<1|(a|0)>=127:1)){break b}c=(f-c|0)>1?c+1|0:c;b=b+4|0;continue}break}if((a|0)<1|(a|0)>=127|F[c|0]>>>0>H[e>>2]-1>>>0){break a}}H[d>>2]=4}}function Og(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;b=oa-16|0;oa=b;e=b+16|0;a:{while(1){f=$g(H[a+36>>2],H[a+40>>2],b+8|0,e,b+4|0);c=-1;d=H[b+4>>2]-(b+8|0)|0;if((d|0)!=(Ub(b+8|0,1,d,H[a+32>>2])|0)){break a}b:{switch(f-1|0){case 1:break a;case 0:continue;default:break b}}break}c=ze(H[a+32>>2])?-1:0}oa=b+16|0;return c|0}function pf(a,b,c,d,e){var f=0,g=0,h=0;f=oa-16|0;oa=f;if(-17-b>>>0>=c>>>0){g=Ca(a);a:{if(b>>>0<2147483623){H[f+8>>2]=b<<1;H[f+12>>2]=b+c;c=cd(H[ad(f+12|0,f+8|0)>>2]);break a}c=-18}h=c+1|0;c=Na(h);if(e){Yb(c,g,e)}d=d-e|0;if(d){Yb(c+e|0,e+g|0,d)}if((b|0)!=10){Ba(g)}_b(a,c);Zb(a,h);oa=f+16|0;return}Xb();X()}function Qb(a,b){var c=0,d=0,e=0,f=0,g=0,h=0;d=oa-16|0;oa=d;g=a;h=a;a:{if(!b){b=0;break a}c=b>>31;e=c+b^c;c=Q(e);xb(d,e,0,0,0,c+81|0);e=0+H[d+8>>2]|0;c=(H[d+12>>2]^65536)+(16414-c<<16)|0;c=e>>>0>>0?c+1|0:c;f=b&-2147483648|c;c=H[d+4>>2];b=H[d>>2]}H[h>>2]=b;H[g+4>>2]=c;H[a+8>>2]=e;H[a+12>>2]=f;oa=d+16|0}function ue(a){var b=0;a:{b=H[a+4>>2];if(!H[(H[H[b>>2]-12>>2]+b|0)+24>>2]){break a}b=H[a+4>>2];if(!Sd(H[H[b>>2]-12>>2]+b|0)){break a}b=H[a+4>>2];if(!(H[(H[H[b>>2]-12>>2]+b|0)+4>>2]&8192)){break a}b=H[a+4>>2];if(($c(H[(H[H[b>>2]-12>>2]+b|0)+24>>2])|0)!=-1){break a}a=H[a+4>>2];ac(H[H[a>>2]-12>>2]+a|0,1)}}function nm(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0;f=oa-16|0;oa=f;H[e>>2]=c;a=Of(f+12|0,0,H[a+8>>2]);c=2;a:{if(a+1>>>0<2){break a}b=a-1|0;c=1;if(b>>>0>d-H[e>>2]>>>0){break a}c=f+12|0;while(1){if(b){a=I[c|0];d=H[e>>2];H[e>>2]=d+1;F[d|0]=a;b=b-1|0;c=c+1|0;continue}break}c=0}oa=f+16|0;return c|0}function ef(a){var b=0;b=1;a:{if((a|0)>=1024){b=8.98846567431158e307;if((a|0)<2047){a=a-1023|0;break a}b=Z;a=((a|0)<3069?a:3069)-2046|0;break a}if((a|0)>-1023){break a}b=2.2250738585072014e-308;if((a|0)>-2045){a=a+1022|0;break a}b=0;a=((a|0)>-3066?a:-3066)+2044|0}x(0,0);x(1,a+1023<<20);return b*+z()}function fn(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;g=oa-32|0;oa=g;h=H[3367];H[g+24>>2]=H[3366];H[g+28>>2]=h;h=H[3365];H[g+16>>2]=H[3364];H[g+20>>2]=h;h=H[3363];H[g+8>>2]=H[3362];H[g+12>>2]=h;h=H[3361];H[g>>2]=H[3360];H[g+4>>2]=h;a=Bc(a,b,c,d,e,f,g,g+32|0);oa=g+32|0;return a|0}function be(a){var b=0,c=0,d=0,e=0,f=0;while(1){b=a;a=b+1|0;if(Yc(F[b|0])){continue}break}a:{b:{c:{c=F[b|0];switch(c-43|0){case 0:break b;case 2:break c;default:break a}}e=1}c=F[a|0];b=a;f=e}if(Rb(c)){while(1){d=(N(d,10)-F[b|0]|0)+48|0;a=F[b+1|0];b=b+1|0;if(Rb(a)){continue}break}}return f?d:0-d|0}function tc(a,b,c,d){var e=0,f=0,g=0,h=0;e=oa-16|0;oa=e;H[e+12>>2]=b;H[e+8>>2]=d;g=jc(e,e+12|0);b=oa-16|0;oa=b;d=H[e+8>>2];H[b+12>>2]=d;H[b+8>>2]=d;f=-1;d=We(0,0,c,d);a:{if((d|0)<0){break a}h=a;d=d+1|0;a=cb(d);H[h>>2]=a;if(!a){break a}f=We(a,d,c,H[b+12>>2])}oa=b+16|0;ic(g);oa=e+16|0;return f}function nh(a){var b=0,c=0,d=0,e=0,f=0;b=H[a+40>>2];c=qa[b|0](a,0,0,I[a|0]&128?K[a+20>>2]>K[a+28>>2]?2:1:1)|0;b=pa;d=b;if((b|0)>0?1:(b|0)>=0){e=H[a+20>>2]-H[a+28>>2]|0;a=H[a+8>>2]-H[a+4>>2]|0;f=c-a|0;b=e+f|0;a=(d-((a>>31)+(c>>>0>>0)|0)|0)+(e>>31)|0;c=b;d=b>>>0>>0?a+1|0:a}pa=d;return c}function If(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;f=H[a+76>>2]>=0;d=H[a>>2]&1;if(!d){b=H[a+52>>2];if(b){H[b+56>>2]=H[a+56>>2]}c=H[a+56>>2];if(c){H[c+52>>2]=b}if(H[6068]==(a|0)){H[6068]=c}}b=ze(a);c=qa[H[a+12>>2]](a)|0;e=H[a+96>>2];if(e){Ba(e)}a:{if(!d){Ba(a);break a}if(!f){break a}}return b|c}function Hd(a,b){var c=0,d=0,e=0,f=0,g=0,h=0;c=oa-16|0;oa=c;g=a;h=a;a:{if(!b){b=0;e=0;break a}d=b;b=Q(b);xb(c,d,0,0,0,b+81|0);d=0+H[c+8>>2]|0;b=(H[c+12>>2]^65536)+(16414-b<<16)|0;b=d>>>0>>0?b+1|0:b;f=d;d=b;b=H[c+4>>2];e=H[c>>2]}H[h>>2]=e;H[g+4>>2]=b;H[a+8>>2]=f;H[a+12>>2]=d;oa=c+16|0}function ah(a){var b=0,c=0,d=0;b=oa-16|0;oa=b;c=Hf(a);H[a+40>>2]=0;H[a+32>>2]=0;H[a+36>>2]=0;H[a>>2]=19176;Vb(a+52|0,0,47);rd(b+8|0,c);d=Nh(H[b+8>>2],Wa(24580));Fa(b+8|0);if(d){rd(b,c);H[a+68>>2]=Rd(b);Fa(b);F[a+98|0]=Jc(H[a+68>>2])}qa[H[H[a>>2]+12>>2]](a,0,4096)|0;oa=b+16|0;return a}function $m(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;c=oa-128|0;oa=c;H[c+12>>2]=c+116;qi(a+8|0,c+16|0,c+12|0,e,f,g);d=c+16|0;e=H[c+12>>2];a=oa-16|0;oa=a;H[a+8>>2]=b;while(1){if((d|0)!=(e|0)){Vf(a+8|0,F[d|0]);d=d+1|0;continue}break}oa=a+16|0;oa=c+128|0;return H[a+8>>2]}function yc(a){var b=0,c=0,d=0;b=a;a:{if(b&3){while(1){if(!I[b|0]){break a}b=b+1|0;if(b&3){continue}break}}while(1){c=b;b=b+4|0;d=H[c>>2];if(!((d^-1)&d-16843009&-2139062144)){continue}break}if(!(d&255)){return c-a|0}while(1){d=I[c+1|0];b=c+1|0;c=b;if(d){continue}break}}return b-a|0}function xf(a){var b=0,c=0,d=0,e=0,f=0,g=0;c=oa-16|0;oa=c;b=H[a+64>>2];if(b){H[c+4>>2]=395;b=Ya(c+8|0,b,c+4|0);e=qa[H[H[a>>2]+24>>2]](a)|0;f=If(Ud(b));H[a+64>>2]=0;qa[H[H[a>>2]+12>>2]](a,0,0)|0;g=b;d=H[b>>2];H[b>>2]=0;if(d){qa[H[Ad(g)>>2]](d)|0}a=e|f?0:a}else{a=0}oa=c+16|0;return a}function Xi(a,b,c){var d=0,e=0,f=0,g=0;f=oa-16|0;oa=f;e=th(b,c);if(e>>>0<=4294967279){a:{if(e>>>0<=10){ub(a,e);d=a;break a}g=cd(e)+1|0;d=Na(g);_b(a,d);Zb(a,g);yb(a,e)}while(1){if((b|0)!=(c|0)){nb(d,b);d=d+1|0;b=b+1|0;continue}break}F[f+15|0]=0;nb(d,f+15|0);oa=f+16|0;return}Xb();X()}function Wi(a,b,c){var d=0,e=0,f=0,g=0;f=oa-16|0;oa=f;e=rg(b,c);if(e>>>0<=1073741807){a:{if(e>>>0<=1){ub(a,e);d=a;break a}g=ud(e)+1|0;d=Sj(g);_b(a,d);Zb(a,g);yb(a,e)}while(1){if((b|0)!=(c|0)){Cb(d,b);d=d+4|0;b=b+4|0;continue}break}H[f+12>>2]=0;Cb(d,f+12|0);oa=f+16|0;return}Xb();X()}function pe(a,b){var c=0,d=0;c=-1;a:{if((a|0)==-1){break a}d=H[b+76>>2]>=0;b:{c:{c=H[b+4>>2];d:{if(!c){lg(b);c=H[b+4>>2];if(!c){break d}}if(H[b+44>>2]-8>>>0>>0){break c}}c=-1;if(d){break b}break a}c=c-1|0;H[b+4>>2]=c;F[c|0]=a;H[b>>2]=H[b>>2]&-17;c=a;if(!d){break a}}}return c}function Id(a,b,c){var d=0,e=0,f=0;a:{if(b>>>0<1){d=a;break a}while(1){d=Fq(a,b,10);e=pa;f=e;e=Eq(d,e,10,0);c=c-1|0;F[c|0]=a-e|48;e=b>>>0>9;a=d;b=f;if(e){continue}break}}if(d){while(1){c=c-1|0;a=(d>>>0)/10|0;F[c|0]=d-N(a,10)|48;b=d>>>0>9;d=a;if(b){continue}break}}return c}function $n(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0;h=(e-d|0)+b|0;a:{while(1){if((d|0)!=(e|0)){a=-1;if((b|0)==(c|0)){break a}f=F[b|0];g=F[d|0];if((f|0)<(g|0)){break a}if((f|0)>(g|0)){return 1}else{d=d+1|0;b=b+1|0;continue}}break}a=(c|0)!=(h|0)}return a|0}function Jf(a){var b=0,c=0;a:{if(K[a+20>>2]<=K[a+28>>2]){break a}qa[H[a+36>>2]](a,0,0)|0;if(H[a+20>>2]){break a}return-1}b=H[a+4>>2];c=H[a+8>>2];if(b>>>0>>0){b=b-c|0;qa[H[a+40>>2]](a,b,b>>31,1)|0}H[a+28>>2]=0;H[a+16>>2]=0;H[a+20>>2]=0;H[a+4>>2]=0;H[a+8>>2]=0;return 0}function vd(a,b){var c=0,d=0,e=0,f=0,g=0;e=oa-16|0;oa=e;g=b;c=aj(b);d=oa-16|0;oa=d;a:{if(c>>>0<=1073741807){b:{if(c>>>0<=1){ub(a,c);b=a;break b}f=ud(c)+1|0;b=Sj(f);_b(a,b);Zb(a,f);yb(a,c)}oc(b,g,c);H[d+12>>2]=0;Cb((c<<2)+b|0,d+12|0);oa=d+16|0;break a}Xb();X()}oa=e+16|0}function Nf(a,b,c){var d=0,e=0,f=0,g=0,h=0;g=oa-16|0;oa=g;e=oa-16|0;oa=e;d=a;a:{if(b>>>0<=4294967279){b:{if(b>>>0<=10){ub(d,b);f=d;break b}h=cd(b)+1|0;f=Na(h);_b(d,f);Zb(d,h);yb(d,b)}Ng(f,b,c);F[e+15|0]=0;nb(b+f|0,e+15|0);oa=e+16|0;break a}Xb();X()}oa=g+16|0;return a}function Ok(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;a:{if(!I[a+44|0]){c=(c|0)>0?c:0;while(1){if((c|0)==(d|0)){break a}if(((f=a,g=Sb(F[b|0]),e=H[H[a>>2]+52>>2],qa[e](f|0,g|0)|0)|0)==-1){return d|0}else{b=b+1|0;d=d+1|0;continue}}}c=Ub(b,1,c,H[a+32>>2])}return c|0}function Ll(a){a=a|0;a:{if(F[24672]&1){break a}if(!fb(24672)){break a}b:{if(F[25832]&1){break b}if(!fb(25832)){break b}a=25808;while(1){a=bc(a)+12|0;if((a|0)!=25832){continue}break}eb(25832)}Ka(25808,18752);Ka(25820,18764);H[6167]=25808;eb(24672)}return H[6167]}function Nl(a){a=a|0;a:{if(F[24664]&1){break a}if(!fb(24664)){break a}b:{if(F[25800]&1){break b}if(!fb(25800)){break b}a=25776;while(1){a=Ea(a)+12|0;if((a|0)!=25800){continue}break}eb(25800)}Ga(25776,2610);Ga(25788,2607);H[6165]=25776;eb(24664)}return H[6165]}function Bk(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;if(Mb(a,H[b+8>>2],0)){kf(b,c,d);return}e=H[a+12>>2];f=a+16|0;Eg(f,b,c,d);a:{if((e|0)<2){break a}e=(e<<3)+f|0;a=a+24|0;while(1){Eg(a,b,c,d);if(I[b+54|0]){break a}a=a+8|0;if(e>>>0>a>>>0){continue}break}}}function Yn(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0;a:{while(1){if((d|0)!=(e|0)){a=-1;if((b|0)==(c|0)){break a}f=H[b>>2];g=H[d>>2];if((f|0)<(g|0)){break a}if((f|0)>(g|0)){return 1}else{d=d+4|0;b=b+4|0;continue}}break}a=(b|0)!=(c|0)}return a|0}function rj(a,b){var c=0,d=0,e=0;A(+a);c=v(1)|0;d=v(0)|0;e=c;c=c>>>20&2047;if((c|0)!=2047){if(!c){c=b;if(a==0){b=0}else{a=rj(a*0x10000000000000000,b);b=H[b>>2]+-64|0}H[c>>2]=b;return a}H[b>>2]=c-1022;x(0,d|0);x(1,e&-2146435073|1071644672);a=+z()}return a}function lg(a){var b=0,c=0;b=I[a+74|0];F[a+74|0]=b-1|b;if(K[a+20>>2]>K[a+28>>2]){qa[H[a+36>>2]](a,0,0)|0}H[a+28>>2]=0;H[a+16>>2]=0;H[a+20>>2]=0;b=H[a>>2];if(b&4){H[a>>2]=b|32;return-1}c=H[a+44>>2]+H[a+48>>2]|0;H[a+8>>2]=c;H[a+4>>2]=c;return b<<27>>31}function Bj(a,b){var c=0,d=0;d=Xe(a+108|0);H[a>>2]=19796;H[d>>2]=19816;c=H[4957];H[a>>2]=c;H[H[c-12>>2]+a>>2]=H[4958];H[a+4>>2]=0;c=a+8|0;pd(H[H[a>>2]-12>>2]+a|0,c);H[a>>2]=19796;H[d>>2]=19816;if(!bh(ah(c),b,8)){ac(H[H[a>>2]-12>>2]+a|0,4)}return a}function Uc(a,b,c,d){var e=0;if(d&2048){F[a|0]=43;a=a+1|0}if(d&512){F[a|0]=35;a=a+1|0}while(1){e=I[b|0];if(e){F[a|0]=e;a=a+1|0;b=b+1|0;continue}break}e=d&74;b=111;a:{if((e|0)==64){break a}b=d&16384?88:120;if((e|0)==8){break a}b=c?100:117}F[a|0]=b}function jg(a){a=a|0;var b=0,c=0,d=0;H[a>>2]=7888;c=a;b=H[a+40>>2];while(1){if(b){b=b-1|0;d=b<<2;qa[H[H[c+32>>2]+d>>2]](0,c,H[d+H[c+36>>2]>>2]);continue}break}Fa(a+28|0);Ba(H[a+32>>2]);Ba(H[a+36>>2]);Ba(H[a+48>>2]);Ba(H[a+60>>2]);return a|0}function wg(a){a=a|0;var b=0;H[a>>2]=7640;b=H[a+24>>2];if(b){Ba(Va(b))}b=H[a+28>>2];if(b){Ba(Va(b))}b=H[a+32>>2];if(b){Ba(Va(b))}b=H[a+36>>2];if(b){Ba(Va(b))}b=H[a+40>>2];if(b){Ba(Va(b))}b=H[a+44>>2];if(b){Ba(Va(b))}va(a+48|0);return a|0}function il(a,b){a=a|0;b=b|0;var c=0;a:{if(!H[a+64>>2]|K[a+8>>2]>=K[a+12>>2]){break a}if(qb(b,-1)){Gf(a,-1);return re(b)|0}if(!(I[a+88|0]&16)){if(!qb(Zc(b),F[H[a+12>>2]-1|0])){break a}}Gf(a,-1);c=Zc(b);F[H[a+12>>2]]=c;return b|0}return-1}function Cf(a,b){var c=0,d=0,e=0;c=oa-32|0;oa=c;F[a|0]=0;e=Sd(H[H[b>>2]-12>>2]+b|0);d=H[H[b>>2]-12>>2]+b|0;a:{if(e){if(H[d+72>>2]){sd(H[(H[H[b>>2]-12>>2]+b|0)+72>>2])}F[a|0]=Sd(H[H[b>>2]-12>>2]+b|0);break a}ac(d,4)}oa=c+32|0;return a}function dk(a,b,c,d){var e=0,f=0;e=oa-16|0;oa=e;a=Ea(a);if((d|0)>0){b=b+48|0;while(1){ck(a,b);f=f+1|0;if((f|0)!=(d|0)){continue}break}}if((c|0)>0){while(1){b=xa(e,3239);ck(a,b);va(b);b=(c|0)>1;c=c-1|0;if(b){continue}break}}oa=e+16|0}function Nb(a,b,c){c=H[c+4>>2]&176;if((c|0)==32){return b}a:{if((c|0)!=16){break a}b:{c:{c=I[a|0];switch(c-43|0){case 0:case 2:break c;default:break b}}return a+1|0}if((c|0)!=48|(b-a|0)<2|(I[a+1|0]|32)!=120){break a}a=a+2|0}return a}function Vf(a,b){var c=0,d=0,e=0,f=0,g=0;a:{c=H[a>>2];if(!c){break a}d=H[c+24>>2];b:{if((d|0)==H[c+28>>2]){b=(f=c,g=Sb(b),e=H[H[c>>2]+52>>2],qa[e](f|0,g|0)|0);break b}H[c+24>>2]=d+1;F[d|0]=b;b=Sb(b)}if(!qb(b,-1)){break a}H[a>>2]=0}}function Lk(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;a:{if(!I[a+44|0]){c=(c|0)>0?c:0;while(1){if((c|0)==(d|0)){break a}if((qa[H[H[a>>2]+52>>2]](a,H[b>>2])|0)==-1){return d|0}else{b=b+4|0;d=d+1|0;continue}}}c=Ub(b,4,c,H[a+32>>2])}return c|0}function af(a){var b=0,c=0,d=0,e=0;b=32;a:{c=H[a+200>>2]+1|0;d=a+160|0;e=wa(d);if((c|0)>=(e|0)){break a}while(1){b=F[Aa(d,c)|0];if(Db(b)){c=c+1|0;if((e|0)!=(c|0)){continue}break a}break}return b}return I[a+212|0]?(b|0)==9?32:b:b}function fb(a){var b=0,c=0,d=0;c=oa-16|0;oa=c;a=Gg(c,a);d=oa-16|0;oa=d;if(!I[H[Hc(d+8|0,H[a+4>>2])>>2]]){a:{b:{a=H[a+8>>2];b=I[a|0];if((b|0)!=1){if(b&2){break b}F[a|0]=2;a=1}else{a=0}break a}X()}b=a}oa=d+16|0;oa=c+16|0;return b}function Aq(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;f=pg(H[H[a>>2]-12>>2]+a|0,10);b=oa-16|0;oa=b;c=Bf(b+8|0,a);a:{if(!I[c|0]){break a}d=a;e=Oh(b,a);Vf(e,f);if(!De(e)){break a}ac(H[H[d>>2]-12>>2]+d|0,1)}ue(c);oa=b+16|0;sd(a);return a|0}function Lg(a,b,c){var d=0,e=0,f=0;f=oa-16|0;oa=f;d=Ja(a);e=wa(a);a:{if(d-e>>>0>=c>>>0){if(!c){break a}d=Ca(a);Yb(d+e|0,b,c);b=c+e|0;Lc(a,b);F[f+15|0]=0;nb(b+d|0,f+15|0);break a}Pd(a,d,(c+e|0)-d|0,e,e,0,c,b)}oa=f+16|0;return a}function tg(a,b){var c=0,d=0;c=oa-32|0;oa=c;H[c+28>>2]=b;b=Uf(c+24|0);H[c+8>>2]=ak(Ed(a),Xc(a),c+28|0);H[b>>2]=H[ge(c+16|0,c+8|0)>>2];H[c+16>>2]=Xc(a);d=-1;if(!Bg(b,c+16|0)){H[c+16>>2]=Ed(a);d=$j(b,c+16|0)}oa=c+32|0;return d}function Ej(a,b){var c=0,d=0,e=0;d=oa-16|0;oa=d;H[a+4>>2]=0;c=-1;if(I[Cf(d+8|0,a)|0]){e=6;c=$e(H[(H[H[a>>2]-12>>2]+a|0)+24>>2]);if(!qb(c,-1)){H[a+4>>2]=1;e=0}ac(H[H[a>>2]-12>>2]+a|0,e)}oa=d+16|0;if((c|0)!=-1){F[b|0]=Zc(c)}}function Mg(a,b,c){var d=0,e=0,f=0;d=oa-16|0;oa=d;if(c>>>0<=4294967279){a:{if(c>>>0<=10){ub(a,c);e=a;break a}f=cd(c)+1|0;e=Na(f);_b(a,e);Zb(a,f);yb(a,c)}Yb(e,b,c);F[d+15|0]=0;nb(c+e|0,d+15|0);oa=d+16|0;return}Xb();X()}function fe(a){var b=0,c=0;b=I[a+192|0];a:{if(!I[a+246|0]){c=b;break a}c=123;b:{c:{switch(b-91|0){case 2:c=125;break b;case 0:break b;default:break c}}c=b}F[a+246|0]=0}b=c<<24>>24;if(I[a+221|0]){Ld(a)}mc(a+172|0,1,b)}function Eq(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0;e=c>>>16|0;f=a>>>16|0;j=N(e,f);g=c&65535;h=a&65535;i=N(g,h);f=(i>>>16|0)+N(f,g)|0;e=(f&65535)+N(e,h)|0;pa=(N(b,c)+j|0)+N(a,d)+(f>>>16)+(e>>>16)|0;return i&65535|e<<16}function Rh(a){a=a|0;var b=0,c=0;H[a>>2]=13480;b=a+16|0;while(1){if(Pa(b)>>>0>c>>>0){if(H[lc(b,c)>>2]){Ee(H[lc(b,c)>>2])}c=c+1|0;continue}break}va(a+192|0);Ph(b);if(H[b>>2]){Th(b);wh(ed(b),H[b>>2],dd(b))}return a|0}function sd(a){var b=0,c=0;b=oa-16|0;oa=b;if(H[(H[H[a>>2]-12>>2]+a|0)+24>>2]){c=Bf(b+8|0,a);a:{if(!I[c|0]){break a}if(($c(H[(H[H[a>>2]-12>>2]+a|0)+24>>2])|0)!=-1){break a}ac(H[H[a>>2]-12>>2]+a|0,1)}ue(c)}oa=b+16|0}function kf(a,b,c){var d=0;d=H[a+16>>2];if(!d){H[a+36>>2]=1;H[a+24>>2]=c;H[a+16>>2]=b;return}a:{if((b|0)==(d|0)){if(H[a+24>>2]!=2){break a}H[a+24>>2]=c;return}F[a+54|0]=1;H[a+24>>2]=2;H[a+36>>2]=H[a+36>>2]+1}}function ak(a,b,c){var d=0;d=oa-16|0;oa=d;H[d>>2]=b;H[d+8>>2]=a;a:{if(!zb(d+8|0,d)){break a}while(1){if(H[H[d+8>>2]>>2]==H[c>>2]){break a}od(d+8|0);if(zb(d+8|0,d)){continue}break}}oa=d+16|0;return H[d+8>>2]}function ze(a){var b=0;if(a){if(H[a+76>>2]<=-1){return Jf(a)}return Jf(a)}if(H[5398]){b=ze(H[5398])}a=H[6068];if(a){while(1){if(K[a+20>>2]>K[a+28>>2]){b=Jf(a)|b}a=H[a+56>>2];if(a){continue}break}}return b}function kc(a,b,c){var d=0,e=0,f=0,g=0;H[a+112>>2]=b;H[a+116>>2]=c;d=H[a+8>>2];g=H[a+4>>2];e=d-g|0;f=e>>31;H[a+120>>2]=e;H[a+124>>2]=f;H[a+104>>2]=b|c?((c|0)<(f|0)?1:(c|0)<=(f|0)?b>>>0>>0:0)?b+g|0:d:d}function Jb(a,b,c,d,e){var f=0;f=oa-256|0;oa=f;if(!(e&73728|(c|0)<=(d|0))){c=c-d|0;d=c>>>0<256;Vb(f,b&255,d?c:256);if(!d){while(1){sb(a,f,256);c=c-256|0;if(c>>>0>255){continue}break}}sb(a,f,c)}oa=f+256|0}function Ga(a,b){var c=0,d=0,e=0,f=0;c=yc(b);e=oa-16|0;oa=e;d=Ja(a);a:{if(d>>>0>=c>>>0){d=Ca(a);qf(d,b,c);F[e+15|0]=0;nb(c+d|0,e+15|0);Lc(a,c);break a}f=a;a=wa(a);Pd(f,d,c-d|0,a,0,a,c,b)}oa=e+16|0}function Zf(a){var b=0,c=0,d=0;ui(a);if(H[a>>2]){c=a;b=H[a+4>>2];d=H[a>>2];if((b|0)!=(d|0)){while(1){b=b-12|0;Hg(gb(c),b);if((b|0)!=(d|0)){continue}break}}H[c+4>>2]=d;gb(a);c=H[a>>2];qd(a);Ba(c)}}function Ze(a){var b=0;if(H[a+76>>2]<0){b=H[a+4>>2];if(b>>>0>2]){H[a+4>>2]=b+1;return I[b|0]}return kg(a)}b=H[a+4>>2];a:{if(b>>>0>2]){H[a+4>>2]=b+1;a=I[b|0];break a}a=kg(a)}return a}function mc(a,b,c){var d=0,e=0,f=0,g=0;f=oa-16|0;oa=f;if(b){e=Ja(a);d=wa(a);g=d+b|0;if(e-d>>>0>>0){pf(a,e,g-e|0,d,d)}e=d;d=Ca(a);Ng(e+d|0,b,c);Lc(a,g);F[f+15|0]=0;nb(d+g|0,f+15|0)}oa=f+16|0}function Ci(a,b){var c=0,d=0;a:{c=H[a>>2];if(!c){break a}d=H[c+24>>2];b:{if((d|0)==H[c+28>>2]){b=qa[H[H[c>>2]+52>>2]](c,b)|0;break b}H[c+24>>2]=d+4;H[d>>2]=b}if(!qb(b,-1)){break a}H[a>>2]=0}}function hj(a,b,c,d){a:{if(!a){break a}b:{switch(b+2|0){case 0:F[a|0]=c;return;case 1:G[a>>1]=c;return;case 2:case 3:H[a>>2]=c;return;case 5:break b;default:break a}}H[a>>2]=c;H[a+4>>2]=d}}function qi(a,b,c,d,e,f){var g=0;g=oa-16|0;oa=g;F[g+15|0]=0;F[g+14|0]=f;F[g+13|0]=e;F[g+12|0]=37;if(f){pi(g+13|0,g+14|0)}H[c>>2]=(ea(b|0,oi(b,H[c>>2])|0,g+12|0,d|0,H[a>>2])|0)+b;oa=g+16|0}function Fe(a){var b=0,c=0,d=0;b=na(8)|0;H[b>>2]=20580;H[b>>2]=20624;c=yc(a);d=Na(c+13|0);H[d+8>>2]=0;H[d+4>>2]=c;H[d>>2]=c;H[b+4>>2]=Wb(d+12|0,a,c+1|0);H[b>>2]=20672;ia(b|0,20704,4);X()}function qe(a){a=a|0;var b=0;H[a>>2]=19176;xf(a);a:{if(!I[a+96|0]){break a}b=H[a+32>>2];if(!b){break a}Ba(b)}b:{if(!I[a+97|0]){break b}b=H[a+56>>2];if(!b){break b}Ba(b)}xe(a);return a|0}function _d(a,b){var c=0,d=0;c=I[a|0];d=I[b|0];a:{if(!c|(d|0)!=(c|0)){break a}while(1){d=I[b+1|0];c=I[a+1|0];if(!c){break a}b=b+1|0;a=a+1|0;if((c|0)==(d|0)){continue}break}}return c-d|0}function Uh(a){var b=0,c=0,d=0;c=oa-16|0;oa=c;b=sg(c,26176,a);a=H[b+4>>2];d=H[b+8>>2];while(1){if((a|0)==(d|0)){Be(b);oa=c+16|0}else{yh(ed(26176),a);a=a+4|0;H[b+4>>2]=a;continue}break}}function md(a){var b=0;a:{b=vj(a);if(b){break a}a=a-36|0;if((a&255)>>>0>=61){break a}b=a&31;return((a&63)>>>0>=32?402653184>>>b|0:((1<>>b)&1}return(b|0)!=0}function fg(a,b,c,d,e,f,g,h,i){var j=0;j=oa-16|0;oa=j;Lb(j,b,c,d,e,f,g,h,i^-2147483648);b=H[j+4>>2];H[a>>2]=H[j>>2];H[a+4>>2]=b;b=H[j+12>>2];H[a+8>>2]=H[j+8>>2];H[a+12>>2]=b;oa=j+16|0}function bo(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;e=H[a+84>>2];d=c+256|0;f=tj(e,d);d=f?f-e|0:d;c=c>>>0>d>>>0?d:c;Wb(b,e,c);b=e+d|0;H[a+84>>2]=b;H[a+8>>2]=b;H[a+4>>2]=c+e;return c|0}function te(a){var b=0,c=0,d=0;b=oa-16|0;oa=b;H[a+4>>2]=0;c=-1;if(I[Cf(b+8|0,a)|0]){c=_f(H[(H[H[a>>2]-12>>2]+a|0)+24>>2]);d=qb(c,-1);ac(H[H[a>>2]-12>>2]+a|0,d?2:0)}oa=b+16|0;return c}function mm(a){a=a|0;var b=0,c=0,d=0;b=oa-16|0;oa=b;H[b+12>>2]=H[a+8>>2];d=jc(b+8|0,b+12|0);c=oa-16|0;oa=c;oa=c+16|0;ic(d);oa=b+16|0;a=H[a+8>>2];if(!a){return 1}return(Hh(a)|0)==1|0}function Xj(a,b){var c=0,d=0;c=oa-16|0;oa=c;H[c+12>>2]=b;d=b;b=Wj(a);if(d>>>0<=b>>>0){a=Gc(a);if(a>>>0>>1>>>0){H[c+8>>2]=a<<1;b=H[ad(c+8|0,c+12|0)>>2]}oa=c+16|0;return b}$d();X()}function qc(a,b){var c=0,d=0;c=oa-16|0;oa=c;if(tb(a)){d=H[a>>2];Rc(a);Ba(d)}H[a+8>>2]=H[b+8>>2];d=H[b+4>>2];H[a>>2]=H[b>>2];H[a+4>>2]=d;ub(b,0);H[c+12>>2]=0;Cb(b,c+12|0);oa=c+16|0}function Ua(a,b){var c=0,d=0;c=oa-16|0;oa=c;if(tb(a)){d=H[a>>2];Rc(a);Ba(d)}H[a+8>>2]=H[b+8>>2];d=H[b+4>>2];H[a>>2]=H[b>>2];H[a+4>>2]=d;ub(b,0);F[c+15|0]=0;nb(b,c+15|0);oa=c+16|0}function Jj(a){var b=0,c=0,d=0;a=a+172|0;b=wa(a);a:{if((b|0)<2){break a}c=F[Aa(a,b-2|0)|0];if((I[Aa(a,b-1|0)|0]|32)!=101){break a}d=1;if((c|0)==46){break a}d=c-48>>>0<10}return d}function mn(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0;g=oa-16|0;oa=g;H[g+8>>2]=624576549;H[g+12>>2]=1394948685;a=Cc(a,b,c,d,e,f,g+8|0,g+16|0);oa=g+16|0;return a|0}function _c(a){var b=0,c=0;b=H[5436];c=a+3&-4;a=b+c|0;a:{if(a>>>0<=b>>>0?c:0){break a}if(a>>>0>ra()<<16>>>0){if(!(la(a|0)|0)){break a}}H[5436]=a;return b}H[6070]=48;return-1}function Gm(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;while(1){if((b|0)!=(c|0)){d=b;a=H[b>>2];if(a>>>0<=127){a=H[H[2516]+(H[b>>2]<<2)>>2]}H[d>>2]=a;b=b+4|0;continue}break}return c|0}function Em(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;while(1){if((b|0)!=(c|0)){d=b;a=H[b>>2];if(a>>>0<=127){a=H[H[2904]+(H[b>>2]<<2)>>2]}H[d>>2]=a;b=b+4|0;continue}break}return c|0}function Im(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;a:{while(1){if((c|0)==(d|0)){break a}if(!(!(J[H[2322]+(H[c>>2]<<1)>>1]&b)|K[c>>2]>127)){c=c+4|0;continue}break}d=c}return d|0}function kn(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0;g=oa-16|0;oa=g;H[g+8>>2]=b;Ia(g,d);b=Fb(g);Fa(g);yi(a,f+24|0,g+8|0,c,e,b);oa=g+16|0;return H[g+8>>2]}function jn(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0;g=oa-16|0;oa=g;H[g+8>>2]=b;Ia(g,d);b=Fb(g);Fa(g);wi(a,f+16|0,g+8|0,c,e,b);oa=g+16|0;return H[g+8>>2]}function dn(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0;g=oa-16|0;oa=g;H[g+8>>2]=b;Ia(g,d);b=Ib(g);Fa(g);ti(a,f+24|0,g+8|0,c,e,b);oa=g+16|0;return H[g+8>>2]}function cn(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0;g=oa-16|0;oa=g;H[g+8>>2]=b;Ia(g,d);b=Ib(g);Fa(g);si(a,f+16|0,g+8|0,c,e,b);oa=g+16|0;return H[g+8>>2]}function Jm(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;while(1){a:{if((c|0)!=(d|0)){if(!(J[H[2322]+(H[c>>2]<<1)>>1]&b)|K[c>>2]>127){break a}}else{c=d}return c|0}c=c+4|0;continue}}function ym(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;while(1){if((b|0)!=(c|0)){d=b;a=F[b|0];if((a|0)>=0){a=H[H[2516]+(F[b|0]<<2)>>2]}F[d|0]=a;b=b+1|0;continue}break}return c|0}function wm(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;while(1){if((b|0)!=(c|0)){d=b;a=F[b|0];if((a|0)>=0){a=H[H[2904]+(F[b|0]<<2)>>2]}F[d|0]=a;b=b+1|0;continue}break}return c|0}function Ld(a){var b=0,c=0;F[a+221|0]=0;F[a+224|0]=1;F[a+238|0]=I[a+236|0];b=a+172|0;bf(a+148|0,b);c=a;if(I[a+237|0]){F[a+237|0]=0;a=1}else{a=0}F[c+236|0]=a;Ga(b,7628)}function Xg(a,b,c){var d=0,e=0;d=oa-16|0;oa=d;e=Hf(a);H[a+32>>2]=b;H[a>>2]=20372;rd(d+8|0,e);b=Rd(d+8|0);Fa(d+8|0);H[a+40>>2]=c;H[a+36>>2]=b;F[a+44|0]=Jc(b);oa=d+16|0}function Wg(a,b,c){var d=0,e=0;d=oa-16|0;oa=d;e=hh(a);H[a+32>>2]=b;H[a>>2]=20476;rd(d+8|0,e);b=sf(d+8|0);Fa(d+8|0);H[a+40>>2]=c;H[a+36>>2]=b;F[a+44|0]=Jc(b);oa=d+16|0}function Eg(a,b,c,d){var e=0,f=0,g=0;f=H[a+4>>2];e=0;a:{if(!c){break a}g=f>>8;e=g;if(!(f&1)){break a}e=jf(H[c>>2],g)}a=H[a>>2];qa[H[H[a>>2]+28>>2]](a,b,c+e|0,f&2?d:2)}function ko(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=oa-16|0;oa=e;a=Ye(ja(H[a+60>>2],b|0,c|0,d&255,e+8|0)|0);oa=e+16|0;pa=a?-1:H[e+12>>2];return(a?-1:H[e+8>>2])|0}function Km(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;while(1){if((b|0)!=(c|0)){G[d>>1]=K[b>>2]<=127?J[H[2322]+(H[b>>2]<<1)>>1]:0;d=d+2|0;b=b+4|0;continue}break}return c|0}function hn(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;a=oa-16|0;oa=a;H[a+8>>2]=b;Ia(a,d);b=Fb(a);Fa(a);vi(f+20|0,a+8|0,c,e,b);oa=a+16|0;return H[a+8>>2]}function bn(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;a=oa-16|0;oa=a;H[a+8>>2]=b;Ia(a,d);b=Ib(a);Fa(a);ri(f+20|0,a+8|0,c,e,b);oa=a+16|0;return H[a+8>>2]}function xj(a,b){var c=0,d=0;c=oa-16|0;oa=c;a:{if(tb(a)){d=H[a>>2];F[c+15|0]=0;nb(b+d|0,c+15|0);yb(a,b);break a}F[c+14|0]=0;nb(a+b|0,c+14|0);ub(a,b)}oa=c+16|0}function Wn(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;a=0;while(1){if((b|0)!=(c|0)){a=H[b>>2]+(a<<4)|0;d=a&-268435456;a=(d|d>>>24)^a;b=b+4|0;continue}break}return a|0}function en(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0;g=a;a=qa[H[H[a+8>>2]+20>>2]](a+8|0)|0;return Bc(g,b,c,d,e,f,Ca(a),Ca(a)+(wa(a)<<2)|0)|0}function Zn(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;a=0;while(1){if((b|0)!=(c|0)){a=F[b|0]+(a<<4)|0;d=a&-268435456;a=(d|d>>>24)^a;b=b+1|0;continue}break}return a|0}function Kg(a,b,c,d){var e=0;e=oa-16|0;oa=e;H[e+12>>2]=d;d=wa(b);if(d>>>0>>0){me();X()}b=Ca(b);H[e+4>>2]=d-c;Mg(a,b+c|0,H[zc(e+12|0,e+4|0)>>2]);oa=e+16|0}function Bf(a,b){H[a+4>>2]=b;F[a|0]=0;if(Sd(H[H[b>>2]-12>>2]+b|0)){if(H[(H[H[b>>2]-12>>2]+b|0)+72>>2]){sd(H[(H[H[b>>2]-12>>2]+b|0)+72>>2])}F[a|0]=1}return a}function Yf(a,b,c,d,e){var f=0;f=oa-16|0;oa=f;Ia(f+8|0,b);Ec(Ib(f+8|0),13232,13264,c);b=Dd(f+8|0);H[d>>2]=ec(b);H[e>>2]=Hb(b);Gb(a,b);Fa(f+8|0);oa=f+16|0}function Ub(a,b,c,d){var e=0,f=0;e=N(b,c);f=e;a:{if(H[d+76>>2]<=-1){a=df(a,e,d);break a}a=df(a,e,d)}if((f|0)==(a|0)){return b?c:0}return(a>>>0)/(b>>>0)|0}function qj(a){var b=0,c=0,d=0;if(Rb(F[H[a>>2]])){while(1){b=H[a>>2];d=F[b|0];H[a>>2]=b+1;c=(N(c,10)+d|0)-48|0;if(Rb(F[b+1|0])){continue}break}}return c}function ln(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0;g=a;a=qa[H[H[a+8>>2]+20>>2]](a+8|0)|0;return Cc(g,b,c,d,e,f,Ca(a),Ca(a)+wa(a)|0)|0}function bg(a,b,c,d,e){var f=0;f=oa-16|0;oa=f;Ia(f+8|0,b);Wc(Fb(f+8|0),13232,13264,c);b=Gd(f+8|0);F[d|0]=ec(b);F[e|0]=Hb(b);Gb(a,b);Fa(f+8|0);oa=f+16|0}function Bm(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;while(1){if((b|0)!=(c|0)){a=H[b>>2];F[e|0]=a>>>0<128?a:d;e=e+1|0;b=b+4|0;continue}break}return c|0}function pd(a,b){H[a+20>>2]=0;H[a+24>>2]=b;H[a+12>>2]=0;H[a+4>>2]=4098;H[a+8>>2]=6;H[a+16>>2]=!b;Vb(a+32|0,0,40);Rf(a+28|0);H[a+72>>2]=0;H[a+76>>2]=-1}function tm(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;while(1){if((b|0)!=(c|0)){a=F[b|0];F[e|0]=(a|0)>-1?a:d;e=e+1|0;b=b+1|0;continue}break}return c|0}function wj(a){var b=0,c=0;b=oa-16|0;oa=b;a:{if(tb(a)){c=H[a>>2];F[b+15|0]=0;nb(c,b+15|0);yb(a,0);break a}F[b+14|0]=0;nb(a,b+14|0);ub(a,0)}oa=b+16|0}function wk(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;if(Mb(a,H[b+8>>2],f)){hf(b,c,d,e);return}a=H[a+8>>2];qa[H[H[a>>2]+20>>2]](a,b,c,d,e,f)}function kg(a){var b=0,c=0;b=oa-16|0;oa=b;c=-1;a:{if(lg(a)){break a}if((qa[H[a+32>>2]](a,b+15|0,1)|0)!=1){break a}c=I[b+15|0]}oa=b+16|0;return c}function de(a,b){var c=0,d=0;a:{c=H[a+248>>2];if(c){d=a+248|0}else{if(!H[a+252>>2]){break a}Fc(a);c=H[a+252>>2];d=a+252|0}Jd(a,c,b);H[d>>2]=0}}function eo(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;e=H[a+20>>2];d=H[a+16>>2]-e|0;d=c>>>0>>0?c:d;Wb(e,b,d);H[a+20>>2]=d+H[a+20>>2];return c|0}function rm(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;a=oa-16|0;oa=a;H[a+12>>2]=e;H[a+8>>2]=d-c;b=zc(a+12|0,a+8|0);oa=a+16|0;return H[b>>2]}function Qj(a,b,c,d){var e=0;e=oa-16|0;oa=e;d=sg(e,a,d);gb(a);a=c-b|0;if((a|0)>=1){Wb(H[d+4>>2],b,a);H[d+4>>2]=a+H[d+4>>2]}Be(d);oa=e+16|0}function Bh(){var a=0,b=0;a=oa-16|0;oa=a;ed(26176);H[a+12>>2]=1073741823;H[a+8>>2]=2147483647;b=zc(a+12|0,a+8|0);oa=a+16|0;return H[b>>2]}function Mm(a){a=a|0;var b=0,c=0,d=0;b=H[H[a>>2]>>2];c=H[b+8>>2];a=H[b+4>>2];b=H[b>>2]+(c>>1)|0;d=b;if(c&1){a=H[a+H[b>>2]>>2]}qa[a|0](d)}function ff(a,b,c,d,e,f){var g=0,h=0;g=H[a+4>>2];h=g>>8;if(g&1){h=jf(H[d>>2],h)}a=H[a>>2];qa[H[H[a>>2]+20>>2]](a,b,c,d+h|0,g&2?e:2,f)}function vb(a,b,c,d,e){var f=0;f=oa-16|0;oa=f;H[f+12>>2]=c;H[f+8>>2]=e;c=jc(f,f+12|0);a=We(a,b,d,H[f+8>>2]);ic(c);oa=f+16|0;return a}function eb(a){var b=0,c=0;b=oa-16|0;oa=b;a=Gg(b,a);c=oa-16|0;oa=c;F[H[Hc(c+8|0,H[a+4>>2])>>2]]=1;F[H[a+8>>2]]=1;oa=c+16|0;oa=b+16|0}function bc(a){var b=0,c=0,d=0;c=oa-16|0;oa=c;d=a;while(1){if((b|0)!=3){H[(b<<2)+d>>2]=0;b=b+1|0;continue}break}oa=c+16|0;return a}function Wj(a){var b=0;b=oa-16|0;oa=b;gb(a);H[b+12>>2]=1073741823;H[b+8>>2]=2147483647;a=H[zc(b+12|0,b+8|0)>>2];oa=b+16|0;return a}function Nd(a,b){var c=0,d=0;c=oa-16|0;oa=c;d=Nf(c,b,32);Ua(a+48|0,d);va(d);H[a+100>>2]=b;if(!I[a+88|0]){H[a+92>>2]=b<<1}oa=c+16|0}function le(a,b,c,d,e){var f=0,g=0;f=H[a+4>>2];g=f>>8;if(f&1){g=jf(H[c>>2],g)}a=H[a>>2];qa[H[H[a>>2]+24>>2]](a,b,c+g|0,f&2?d:2,e)}function Ki(a,b,c){var d=0;d=oa-16|0;oa=d;H[d+12>>2]=b;H[d+8>>2]=c;b=jc(d,d+12|0);a=gj(a,1680,H[d+8>>2]);ic(b);oa=d+16|0;return a}function wi(a,b,c,d,e,f){a=qa[H[H[a+8>>2]+4>>2]](a+8|0)|0;a=Te(c,d,a,a+288|0,f,e,0)-a|0;if((a|0)<=287){H[b>>2]=((a|0)/12|0)%12}}function si(a,b,c,d,e,f){a=qa[H[H[a+8>>2]+4>>2]](a+8|0)|0;a=Re(c,d,a,a+288|0,f,e,0)-a|0;if((a|0)<=287){H[b>>2]=((a|0)/12|0)%12}}function Dm(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;while(1){if((b|0)!=(c|0)){H[d>>2]=F[b|0];d=d+4|0;b=b+1|0;continue}break}return c|0}function vm(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;while(1){if((b|0)!=(c|0)){F[d|0]=I[b|0];d=d+1|0;b=b+1|0;continue}break}return c|0}function ql(a){a=a|0;var b=0;if((qa[H[H[a>>2]+36>>2]](a)|0)==-1){return-1}b=a;a=H[a+12>>2];H[b+12>>2]=a+1;return Sb(F[a|0])|0}function Ck(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;if(Mb(a,H[b+8>>2],0)){kf(b,c,d);return}a=H[a+8>>2];qa[H[H[a>>2]+28>>2]](a,b,c,d)}function yi(a,b,c,d,e,f){a=qa[H[H[a+8>>2]>>2]](a+8|0)|0;a=Te(c,d,a,a+168|0,f,e,0)-a|0;if((a|0)<=167){H[b>>2]=((a|0)/12|0)%7}}function ti(a,b,c,d,e,f){a=qa[H[H[a+8>>2]>>2]](a+8|0)|0;a=Re(c,d,a,a+168|0,f,e,0)-a|0;if((a|0)<=167){H[b>>2]=((a|0)/12|0)%7}}function qg(a){a=a|0;var b=0;H[a>>2]=7756;b=H[a+140>>2];if(b){Ba(Va(b))}va(a+172|0);va(a+160|0);va(a+148|0);wg(a);return a|0}function hh(a){H[a>>2]=18920;Rf(a+4|0);H[a+24>>2]=0;H[a+28>>2]=0;H[a+16>>2]=0;H[a+20>>2]=0;H[a+8>>2]=0;H[a+12>>2]=0;return a}function Hf(a){H[a>>2]=18856;Rf(a+4|0);H[a+24>>2]=0;H[a+28>>2]=0;H[a+16>>2]=0;H[a+20>>2]=0;H[a+8>>2]=0;H[a+12>>2]=0;return a}function $e(a){var b=0;b=H[a+12>>2];if((b|0)==H[a+16>>2]){return qa[H[H[a>>2]+40>>2]](a)|0}H[a+12>>2]=b+1;return Sb(F[b|0])}function Na(a){var b=0;a=a?a:1;a:{while(1){b=cb(a);if(b){break a}b=H[7132];if(b){qa[b|0]();continue}break}$();X()}return b}function fo(a,b){a=a|0;b=b|0;var c=0;c=b;b=H[b>>2]+15&-16;H[c>>2]=b+16;M[a>>3]=ig(H[b>>2],H[b+4>>2],H[b+8>>2],H[b+12>>2])}function Zj(a,b){var c=0;c=H[a+4>>2];if((c|0)!=(b|0)){while(1){gb(a);c=c-4|0;if((c|0)!=(b|0)){continue}break}}H[a+4>>2]=b}function Wf(a,b,c){c=H[c>>2];while(1){a:{if((a|0)!=(b|0)){if((c|0)!=H[a>>2]){break a}}else{a=b}return a}a=a+4|0;continue}}function ml(a){a=a|0;var b=0;if((qa[H[H[a>>2]+36>>2]](a)|0)==-1){return-1}b=a;a=H[a+12>>2];H[b+12>>2]=a+4;return H[a>>2]}function Ei(a){var b=0;b=H[a+12>>2];if((b|0)==H[a+16>>2]){return qa[H[H[a>>2]+40>>2]](a)|0}H[a+12>>2]=b+4;return H[b>>2]}function Xk(a,b){a=a|0;b=b|0;b=Rd(b);H[a+36>>2]=b;H[a+44>>2]=$c(b);F[a+53|0]=Jc(H[a+36>>2]);if(H[a+44>>2]>=9){db();X()}}function Tk(a,b){a=a|0;b=b|0;b=sf(b);H[a+36>>2]=b;H[a+44>>2]=$c(b);F[a+53|0]=Jc(H[a+36>>2]);if(H[a+44>>2]>=9){db();X()}}function $f(a,b,c){c=I[c|0];while(1){a:{if((a|0)!=(b|0)){if((c|0)!=I[a|0]){break a}}else{a=b}return a}a=a+1|0;continue}}function Hh(a){var b=0,c=0;b=oa-16|0;oa=b;H[b+12>>2]=a;a=jc(b+8|0,b+12|0);c=H[H[5347]>>2];ic(a);oa=b+16|0;return c?4:1}function Ah(a,b){var c=0;c=oa-16|0;oa=c;a:{if(!(I[a+128|0]|b>>>0>30)){F[a+128|0]=1;break a}a=Sj(b)}oa=c+16|0;return a}function Ih(a,b,c,d,e){var f=0;f=oa-16|0;oa=f;H[f+12>>2]=e;e=jc(f+8|0,f+12|0);a=Ve(a,b,c,d);ic(e);oa=f+16|0;return a}function zg(a,b){var c=0,d=0;d=oa-16|0;oa=d;c=sg(d,a,1);Yj(gb(a),H[c+4>>2],b);H[c+4>>2]=H[c+4>>2]+4;Be(c);oa=d+16|0}function nj(a,b,c,d,e,f,g,h,i){H[a>>2]=b;H[a+4>>2]=c;H[a+8>>2]=d;H[a+12>>2]=e&65535|(i>>>16&32768|e>>>16&32767)<<16}function fd(a,b){a:{if((a|0)==(b|0)){break a}while(1){b=b-1|0;if(b>>>0<=a>>>0){break a}pi(a,b);a=a+1|0;continue}}}function Me(a,b){a:{if((a|0)==(b|0)){break a}while(1){b=b-4|0;if(b>>>0<=a>>>0){break a}nc(a,b);a=a+4|0;continue}}}function uc(a){a:{a=H[a+4>>2]&74;if(a){if((a|0)==64){return 8}if((a|0)!=8){break a}return 16}return 0}return 10}function ek(a,b){a=a|0;b=b|0;var c=0;c=oa-16|0;oa=c;yj(c,H[b+4>>2]);qa[H[H[b>>2]+24>>2]](a,b,c);va(c);oa=c+16|0}function ai(a,b){var c=0;c=oa-16|0;oa=c;H[c+8>>2]=H[a>>2];H[c+8>>2]=H[c+8>>2]+(b<<2);oa=c+16|0;return H[c+8>>2]}function Mb(a,b,c){if(!c){return H[a+4>>2]==H[b+4>>2]}if((a|0)==(b|0)){return 1}return!_d(H[a+4>>2],H[b+4>>2])}function zl(a){a=a|0;a:{if(F[24768]&1){break a}if(!fb(24768)){break a}vd(24756,13788);eb(24768)}return 24756}function vl(a){a=a|0;a:{if(F[24800]&1){break a}if(!fb(24800)){break a}vd(24788,13872);eb(24800)}return 24788}function vi(a,b,c,d,e){b=sc(b,c,d,e,4);if(!(I[d|0]&4)){H[a>>2]=((b|0)<69?b+2e3|0:(b|0)<100?b+1900|0:b)-1900}}function ri(a,b,c,d,e){b=rc(b,c,d,e,4);if(!(I[d|0]&4)){H[a>>2]=((b|0)<69?b+2e3|0:(b|0)<100?b+1900|0:b)-1900}}function ae(a){a=a|0;var b=0;b=H[4956];H[a>>2]=b;H[H[b-12>>2]+a>>2]=H[4959];qe(a+8|0);bd(a+108|0);return a|0}function _f(a){var b=0;b=H[a+12>>2];if((b|0)==H[a+16>>2]){return qa[H[H[a>>2]+36>>2]](a)|0}return Sb(F[b|0])}function _e(a){a=a|0;var b=0;b=H[4995];H[a>>2]=b;H[H[b-12>>2]+a>>2]=H[4998];qe(a+4|0);bd(a+104|0);return a|0}function Yd(a,b){var c=0;c=oa-16|0;oa=c;Ia(c+8|0,a);Ec(Ib(c+8|0),13232,13258,b);Fa(c+8|0);oa=c+16|0;return b}function Of(a,b,c){var d=0;d=oa-16|0;oa=d;H[d+12>>2]=c;c=jc(d+8|0,d+12|0);a=id(a,b);ic(c);oa=d+16|0;return a}function Hl(a){a=a|0;a:{if(F[24704]&1){break a}if(!fb(24704)){break a}vd(24692,13716);eb(24704)}return 24692}function Dl(a){a=a|0;a:{if(F[24736]&1){break a}if(!fb(24736)){break a}vd(24724,13752);eb(24736)}return 24724}function xl(a){a=a|0;a:{if(F[24784]&1){break a}if(!fb(24784)){break a}xa(24772,1671);eb(24784)}return 24772}function Xd(a,b,c){var d=0;d=oa-16|0;oa=d;Ia(d+8|0,b);b=Dd(d+8|0);H[c>>2]=Hb(b);Gb(a,b);Fa(d+8|0);oa=d+16|0}function Jl(a){a=a|0;a:{if(F[24688]&1){break a}if(!fb(24688)){break a}xa(24676,1167);eb(24688)}return 24676}function Fl(a){a=a|0;a:{if(F[24720]&1){break a}if(!fb(24720)){break a}xa(24708,2590);eb(24720)}return 24708}function Bl(a){a=a|0;a:{if(F[24752]&1){break a}if(!fb(24752)){break a}xa(24740,2546);eb(24752)}return 24740}function gi(a,b){var c=0;c=oa-16|0;oa=c;H[c+8>>2]=H[a>>2];H[c+8>>2]=H[c+8>>2]+b;oa=c+16|0;return H[c+8>>2]}function Zd(a,b,c){var d=0;d=oa-16|0;oa=d;Ia(d+8|0,b);b=Gd(d+8|0);F[c|0]=Hb(b);Gb(a,b);Fa(d+8|0);oa=d+16|0}function Jh(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;H[e>>2]=c;H[h>>2]=f;return 3}function Fi(a){var b=0;b=H[a+12>>2];if((b|0)==H[a+16>>2]){return qa[H[H[a>>2]+36>>2]](a)|0}return H[b>>2]}function vh(a,b){var c=0;c=H[a+4>>2];while(1){if((b|0)!=(c|0)){ed(a);c=c-4|0;continue}break}H[a+4>>2]=b}function oc(a,b,c){if(c){if(c){while(1){H[a>>2]=H[b>>2];a=a+4|0;b=b+4|0;c=c-1|0;if(c){continue}break}}}}function nc(a,b){var c=0;c=oa-16|0;oa=c;H[c+12>>2]=H[a>>2];H[a>>2]=H[b>>2];H[b>>2]=H[c+12>>2];oa=c+16|0}function Sa(a){var b=0;b=oa-16|0;oa=b;H[a>>2]=0;H[a+4>>2]=0;H[b+12>>2]=0;rf(a+8|0);oa=b+16|0;return a}function pg(a,b){var c=0;c=oa-16|0;oa=c;Ia(c+8|0,a);a=pb(Fb(c+8|0),b);Fa(c+8|0);oa=c+16|0;return a}function lf(a){a=a|0;var b=0;H[a>>2]=20624;b=H[a+4>>2]-12|0;if((Qh(b+8|0)|0)<=-1){Ba(b)}return a|0}function Ya(a,b,c){var d=0;d=oa-16|0;oa=d;H[d+12>>2]=b;Cb(a,d+12|0);Cb(a+4|0,c);oa=d+16|0;return a}function pi(a,b){var c=0;c=oa-16|0;oa=c;F[c+15|0]=I[a|0];F[a|0]=I[b|0];F[b|0]=I[c+15|0];oa=c+16|0}function vk(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;if(Mb(a,H[b+8>>2],f)){hf(b,c,d,e)}}function Fc(a){var b=0;a:{a=a+172|0;b=wa(a);if(b){if(Db(F[Aa(a,b-1|0)|0])){break a}}mc(a,1,32)}}function ee(a,b){var c=0;if((b|0)>=1){while(1){Lj(a);c=(b|0)>1;b=b-1|0;if(c){continue}break}}}function Sc(a){var b=0;b=oa-16|0;oa=b;a=H[Hc(b+8|0,Ca(a)+(wa(a)<<2)|0)>>2];oa=b+16|0;return a}function Dj(){Ha(27584);za(27584,5340);za(27584,5100);za(27584,3413);za(27584,3241);Ha(27584)}function Aj(a){a=a|0;var b=0;H[a>>2]=7832;b=H[a+4>>2];if(b){qa[H[H[b>>2]+4>>2]](b)}return a|0}function vg(a,b,c){Ga(a+48|0,7627);F[a+89|0]=c;H[a+100>>2]=b;if(!I[a+88|0]){H[a+92>>2]=b<<1}}function aj(a){var b=0,c=0;c=a;while(1){b=c;c=b+4|0;if(H[b>>2]){continue}break}return b-a>>2}function Pk(a,b){a=a|0;b=b|0;qa[H[H[a>>2]+24>>2]](a)|0;b=Rd(b);H[a+36>>2]=b;F[a+44|0]=Jc(b)} +function Kh(a){a=a|0;var b=0;H[a>>2]=13500;b=H[a+8>>2];if(!(!b|!I[a+12|0])){Ba(b)}return a|0}function Va(a){var b=0,c=0;Ag(a);b=a;if(H[b>>2]){_j(b);gb(b);c=H[b>>2];Gc(b);Ba(c)}return a}function Mk(a,b){a=a|0;b=b|0;qa[H[H[a>>2]+24>>2]](a)|0;b=sf(b);H[a+36>>2]=b;F[a+44|0]=Jc(b)}function wh(a,b,c){c=oa-16|0;oa=c;a:{if((a|0)==(b|0)){F[a+128|0]=0;break a}Ba(b)}oa=c+16|0}function sh(a){var b=0;b=H[a>>2];if(b){if(!qb(_f(b),-1)){return!H[a>>2]}H[a>>2]=0}return 1}function rh(a){var b=0;b=H[a>>2];if(b){if(!qb(Fi(b),-1)){return!H[a>>2]}H[a>>2]=0}return 1}function oj(a,b){var c=0;c=oa-16|0;oa=c;H[c+12>>2]=b;a=We(a,100,2064,b);oa=c+16|0;return a}function cd(a){var b=0;if(a>>>0>=11){b=a+16&-16;a=b-1|0;a=(a|0)==11?b:a}else{a=10}return a}function Vd(a,b){var c=0;c=H[b+4>>2];H[a>>2]=H[b>>2];H[a+4>>2]=c;H[a+8>>2]=H[b+8>>2];ng(b)}function _i(a){var b=0;b=H[5347];if(a){H[5347]=(a|0)==-1?24324:a}return(b|0)==24324?-1:b}function Vc(a){var b=0;b=oa-16|0;oa=b;a=H[Hc(b+8|0,Ca(a)+wa(a)|0)>>2];oa=b+16|0;return a}function Ma(a,b){var c=0;c=yc(b);if((c|0)==(wa(a)|0)){a=nf(a,0,-1,b,c)}else{a=1}return!a}function Gq(a,b){var c=0,d=0;c=b&31;d=(-1>>>c&a)<>>a} +function zm(a,b){a=a|0;b=b|0;if((b|0)>=0){b=H[H[2516]+((b&255)<<2)>>2]}return b<<24>>24}function xm(a,b){a=a|0;b=b|0;if((b|0)>=0){b=H[H[2904]+((b&255)<<2)>>2]}return b<<24>>24}function Mh(a,b){var c=0;c=oa-16|0;oa=c;F[c+15|0]=b;a=Kf(a,c+15|0,1);oa=c+16|0;return a}function Lm(a,b,c){a=a|0;b=b|0;c=c|0;return(c>>>0<=127?(J[H[2322]+(c<<1)>>1]&b)!=0:0)|0}function cj(a,b){var c=0;c=oa-16|0;oa=c;H[c+12>>2]=b;a=gj(a,2070,b);oa=c+16|0;return a}function ud(a){var b=0;if(a>>>0>=2){b=a+4&-4;a=b-1|0;a=(a|0)==2?b:a}else{a=1}return a}function ac(a,b){b=!H[a+24>>2]|(H[a+16>>2]|b);H[a+16>>2]=b;if(b&H[a+20>>2]){db();X()}}function Vh(a){a=a|0;H[a>>2]=13552;if(H[a+8>>2]!=(Oa()|0)){bj(H[a+8>>2])}return a|0}function Ul(a){a=a|0;a=24984;while(1){a=va(a-12|0);if((a|0)!=24816){continue}break}}function Sl(a){a=a|0;a=25160;while(1){a=va(a-12|0);if((a|0)!=24992){continue}break}}function Ql(a){a=a|0;a=25456;while(1){a=va(a-12|0);if((a|0)!=25168){continue}break}}function Ol(a){a=a|0;a=25760;while(1){a=va(a-12|0);if((a|0)!=25472){continue}break}}function Ml(a){a=a|0;a=25800;while(1){a=va(a-12|0);if((a|0)!=25776){continue}break}}function Kl(a){a=a|0;a=25832;while(1){a=va(a-12|0);if((a|0)!=25808){continue}break}}function vc(a,b){a=H[a>>2];b=Wa(b);if(!Nh(a,b)){db();X()}return H[lc(a+16|0,b)>>2]}function uf(a,b){var c=0;c=Xe(a+4|0);H[a>>2]=19084;H[c>>2]=19104;pd(H[4768]+a|0,b)}function tf(a,b){var c=0;c=Vg(a+4|0);H[a>>2]=19132;H[c>>2]=19152;pd(H[4780]+a|0,b)}function Nh(a,b){a=a+16|0;if(Pa(a)>>>0>b>>>0){a=H[lc(a,b)>>2]!=0}else{a=0}return a}function Da(a,b){var c=0;a:{c=wa(a);if(c>>>0>>0){mc(a,b-c|0,0);break a}xj(a,b)}}function sg(a,b,c){H[a>>2]=b;b=H[b+4>>2];H[a+4>>2]=b;H[a+8>>2]=b+(c<<2);return a}function Ob(a){var b=0;b=oa-16|0;oa=b;a=H[Hc(b+8|0,Ca(a))>>2];oa=b+16|0;return a}function _n(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;b=oa-16|0;oa=b;Xi(a,c,d);oa=b+16|0}function Xn(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;b=oa-16|0;oa=b;Wi(a,c,d);oa=b+16|0}function Hm(a,b){a=a|0;b=b|0;if(b>>>0<=127){b=H[H[2516]+(b<<2)>>2]}return b|0}function Fm(a,b){a=a|0;b=b|0;if(b>>>0<=127){b=H[H[2904]+(b<<2)>>2]}return b|0}function Dk(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;if(Mb(a,H[b+8>>2],0)){kf(b,c,d)}}function Ae(a,b,c,d){if(H[a+76>>2]<=-1){return ph(a,b,c,d)}return ph(a,b,c,d)}function zc(a,b){var c=0,d=0;c=oa-16|0;oa=c;d=Qg(b,a);oa=c+16|0;return d?b:a}function xi(a){var b=0;b=oa-16|0;oa=b;a=H[Hc(b+8|0,a)>>2];oa=b+16|0;return a}function vf(a,b){var c=0,d=0;c=oa-16|0;oa=c;d=Yg(a,b);oa=c+16|0;return d?b:a}function td(a,b){var c=0,d=0;c=oa-16|0;oa=c;d=Yg(b,a);oa=c+16|0;return d?b:a}function ad(a,b){var c=0,d=0;c=oa-16|0;oa=c;d=Qg(a,b);oa=c+16|0;return d?b:a}function Xh(a){var b=0;b=oa-16|0;oa=b;H[b+8>>2]=a;oa=b+16|0;return H[b+8>>2]}function Vj(a,b,c,d){a=c-b|0;c=H[d>>2]-a|0;H[d>>2]=c;if((a|0)>=1){Wb(c,b,a)}}function wf(a,b,c,d,e,f,g,h){return qa[H[H[a>>2]+16>>2]](a,b,c,d,e,f,g,h)|0}function Qd(a,b,c,d,e,f,g,h){return qa[H[H[a>>2]+12>>2]](a,b,c,d,e,f,g,h)|0}function Kc(a,b,c){H[a+8>>2]=b;H[a+12>>2]=c;H[a>>2]=0;H[a+4>>2]=0;return a}function Gg(a,b){H[a+12>>2]=0;H[a+4>>2]=b;H[a>>2]=b;H[a+8>>2]=b+1;return a}function ki(a,b){var c=0;c=$e(H[b>>2])<<24;H[a+4>>2]=H[b>>2];F[a|0]=c>>24}function xa(a,b){var c=0;c=oa-16|0;oa=c;Mg(a,b,yc(b));oa=c+16|0;return a}function kh(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;Kc(a,-1,-1)}function dc(a,b,c){return(c|0)>=0?(J[H[a+8>>2]+((c&255)<<1)>>1]&b)!=0:0}function Qf(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;H[e>>2]=c;return 3}function lb(a,b){var c=0;c=H[a>>2];H[a>>2]=b;if(c){qa[H[Ad(a)>>2]](c)}}function gf(a,b,c){if(!(H[a+28>>2]==1|H[a+4>>2]!=(b|0))){H[a+28>>2]=c}}function Pc(a,b){a=a|0;b=b|0;F[a|0]=2;F[a+1|0]=3;F[a+2|0]=0;F[a+3|0]=4}function Lf(a){a=a|0;if(H[a+8>>2]!=(Oa()|0)){bj(H[a+8>>2])}return a|0}function Rm(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;Td(a,f)}function xc(a,b){if(H[a+4>>2]!=H[gb(a)>>2]){zg(a,b);return}yg(a,b)}function qq(a){a=a|0;if(!Mj(a)){return fk(a)|0}return!I[a+223|0]|0}function di(a,b){var c=0;c=Ei(H[b>>2]);H[a+4>>2]=H[b>>2];H[a>>2]=c}function Cm(a,b,c){a=a|0;b=b|0;c=c|0;return(b>>>0<128?b:c)<<24>>24}function ya(a,b){if(K[a+4>>2]>2]){zg(a,b);return}yg(a,b)}function Oh(a,b){H[a>>2]=H[(H[H[b>>2]-12>>2]+b|0)+24>>2];return a}function gk(a,b){a=a|0;b=b|0;H[a+4>>2]=b;qa[H[H[a>>2]+12>>2]](a)}function Sj(a){if(a>>>0>1073741823){Fe(2074);X()}return Na(a<<2)}function Om(a){a=a|0;var b=0;b=H[6140]+1|0;H[6140]=b;H[a+4>>2]=b}function va(a){var b=0;if(tb(a)){b=H[a>>2];Rc(a);Ba(b)}return a}function km(a){a=a|0;a=H[a+8>>2];if(!a){return 1}return Hh(a)|0}function $g(a,b,c,d,e){return qa[H[H[a>>2]+20>>2]](a,b,c,d,e)|0}function Ea(a){var b=0;b=oa-16|0;oa=b;ng(a);oa=b+16|0;return a}function Yk(a){a=a|0;sd(27584);Af(27668);sd(27920);Af(28004)}function Mj(a){return H[a+204>>2]|I[a+209|0]?1:I[a+212|0]!=0}function Jd(a,b,c){if(!(!c|!I[a+221|0])){Ld(a)}Bd(a+172|0,b)}function Ee(a){if((Qh(a+4|0)|0)==-1){qa[H[H[a>>2]+8>>2]](a)}}function um(a,b,c){a=a|0;b=b|0;c=c|0;return((b|0)>-1?b:c)|0}function cg(a,b){Mh(za(Mh(za(H[5266],a),32),b),10);_(1);X()}function Qh(a){var b=0;b=a;a=H[a>>2]-1|0;H[b>>2]=a;return a}function zj(a){a=H[a+4>>2];return Ui(H[H[a>>2]-12>>2]+a|0)}function wa(a){if(tb(a)){return H[a+4>>2]}return I[a+11|0]}function hc(a,b,c,d){H[a+16>>2]=d;H[a+12>>2]=c;H[a+8>>2]=b}function Zk(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;pa=0;return 0}function vj(a){if(uj(a)){a=1}else{a=(Rb(a)|0)!=0}return a}function mg(a){if(!xf(a+8|0)){ac(H[H[a>>2]-12>>2]+a|0,4)}}function Ac(a,b,c){H[a+28>>2]=c;H[a+20>>2]=b;H[a+24>>2]=b}function rk(a,b){a=a|0;b=b|0;Ha(za(27584,7428));return 0}function jh(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Kc(a,-1,-1)}function fi(a,b){lb(a,Ud(b));b=H[Ad(b)>>2];H[Ad(a)>>2]=b}function Fh(a){a=a|0;H[a>>2]=13600;va(a+12|0);return a|0}function Eh(a){a=a|0;H[a>>2]=13640;va(a+16|0);return a|0}function xe(a){a=a|0;H[a>>2]=18856;Fa(a+4|0);return a|0}function wd(a,b,c){return qa[H[H[a>>2]+48>>2]](a,b,c)|0}function cc(a,b,c){return qa[H[H[a>>2]+12>>2]](a,b,c)|0}function Yi(a,b,c,d){a=Zi(a,b,c,0,-2147483648);return a}function Oj(a,b,c){b=b-a|0;if(b){ie(c,a,b)}return b+c|0}function Kd(a,b){return!Ra(a+160|0,H[a+200>>2],wa(b),b)}function Ja(a){if(tb(a)){a=Rc(a)-1|0}else{a=10}return a}function Ff(a){a=a|0;H[a>>2]=18920;Fa(a+4|0);return a|0}function gh(a){a=a|0;return ve(H[H[a>>2]-12>>2]+a|0)|0}function eh(a){a=a|0;return se(H[H[a>>2]-12>>2]+a|0)|0}function bl(a){a=a|0;return ae(H[H[a>>2]-12>>2]+a|0)|0}function Xa(a){H[a+4>>2]=0;H[a>>2]=13176;H[a>>2]=13928}function Sf(a,b){var c=0;c=a;a=H[b>>2];H[c>>2]=a;Tf(a)}function Mf(a){if(tb(a)){a=Rc(a)-1|0}else{a=1}return a}function $k(a){a=a|0;return _e(H[H[a>>2]-12>>2]+a|0)|0}function zd(a,b){return qa[H[H[a>>2]+36>>2]](a,b,0)|0}function yd(a,b){return qa[H[H[a>>2]+52>>2]](a,b,0)|0}function ej(a){return(a|0)!=0&(a|0)!=9168&(a|0)!=9192}function Wc(a,b,c,d){qa[H[H[a>>2]+32>>2]](a,b,c,d)|0}function Ec(a,b,c,d){qa[H[H[a>>2]+48>>2]](a,b,c,d)|0}function Cj(){Dj();za(27584,3025);Ha(za(27584,2981))}function pb(a,b){return qa[H[H[a>>2]+28>>2]](a,b)|0}function dj(a,b){return(Rb(a)|0)!=0|(a|32)-97>>>0<6}function Ud(a){var b=0;b=H[a>>2];H[a>>2]=0;return b}function Se(a,b){return qa[H[H[a>>2]+12>>2]](a,b)|0}function Kb(a,b){return qa[H[H[a>>2]+44>>2]](a,b)|0}function qh(a,b,c){return a>>>0>>0&a>>>0>=b>>>0}function qd(a){return(H[gb(a)>>2]-H[a>>2]|0)/12|0}function ld(a,b){return nd(a+160|0,H[a+200>>2],b)}function Ye(a){if(!a){return 0}H[6070]=a;return-1}function Ra(a,b,c,d){return nf(a,b,c,Ca(d),wa(d))}function Lc(a,b){if(tb(a)){yb(a,b);return}ub(a,b)}function ng(a){H[a>>2]=0;H[a+4>>2]=0;H[a+8>>2]=0}function Ca(a){if(tb(a)){return H[a>>2]}return a}function ye(a){return(H[a+4>>2]-H[a>>2]|0)/12|0}function sk(a){a=a|0;a=oa-a&-16;oa=a;return a|0}function sj(a,b){if(!a){return 0}return id(a,b)}function lh(a,b,c){a=a|0;b=b|0;c=c|0;return a|0}function eg(a,b,c,d){a=Zi(a,b,c,-1,-1);return a}function ec(a){return qa[H[H[a>>2]+12>>2]](a)|0}function Mc(a){return qa[H[H[a>>2]+36>>2]](a)|0}function Jc(a){return qa[H[H[a>>2]+28>>2]](a)|0}function Hb(a){return qa[H[H[a>>2]+16>>2]](a)|0}function $c(a){return qa[H[H[a>>2]+24>>2]](a)|0}function sb(a,b,c){if(!(I[a|0]&32)){df(b,c,a)}}function of(a){return nf(a,0,-1,7628,yc(7628))}function jc(a,b){H[a>>2]=_i(H[b>>2]);return a}function fh(a){a=a|0;Df(H[H[a>>2]-12>>2]+a|0)}function dh(a){a=a|0;zf(H[H[a>>2]-12>>2]+a|0)}function al(a){a=a|0;_g(H[H[a>>2]-12>>2]+a|0)}function _k(a){a=a|0;Zg(H[H[a>>2]-12>>2]+a|0)}function Wh(a,b,c){a=a|0;b=b|0;c=c|0;return-1}function jo(a){a=a|0;return aa(H[a+60>>2])|0}function dd(a){return H[Ce(a)>>2]-H[a>>2]>>2}function Tj(a){return H[Ic(a)>>2]-H[a>>2]>>2}function Gc(a){return H[gb(a)>>2]-H[a>>2]>>2}function fk(a){a=a|0;return zj(H[a+4>>2])|0}function Xe(a){Fg(a);H[a>>2]=19240;return a}function Vg(a){Fg(a);H[a>>2]=19312;return a}function Nm(a){a=a|0;qa[H[H[a>>2]+4>>2]](a)}function Ge(a,b,c){return Oj(Xh(a),Xh(b),c)}function xg(a,b){if(b){he(a,0)}F[a+84|0]=b}function gc(a,b){qa[H[H[b>>2]+24>>2]](a,b)}function fc(a,b){qa[H[H[b>>2]+28>>2]](a,b)}function Rc(a){return H[a+8>>2]&2147483647}function Pa(a){return H[a+4>>2]-H[a>>2]>>2}function Oc(a,b){qa[H[H[b>>2]+44>>2]](a,b)}function Nc(a,b){qa[H[H[b>>2]+32>>2]](a,b)}function He(a,b){qa[H[H[b>>2]+40>>2]](a,b)}function Gb(a,b){qa[H[H[b>>2]+20>>2]](a,b)}function $j(a,b){return H[a>>2]-H[b>>2]>>2}function ve(a){a=a|0;bd(a+8|0);return a|0}function se(a){a=a|0;bd(a+4|0);return a|0}function ge(a,b){H[a>>2]=H[b>>2];return a}function bb(a){return _f(H[a>>2])<<24>>24}function _l(a,b){a=a|0;b=b|0;Td(a,b+16|0)}function Tb(a,b){return Kf(a,Ca(b),wa(b))}function Bd(a,b){return Lg(a,Ca(b),wa(b))}function $l(a,b){a=a|0;b=b|0;Td(a,b+12|0)}function mb(a){return H[a>>2]==H[a+4>>2]}function lc(a,b){return H[a>>2]+(b<<2)|0}function ch(a,b){H[a+24>>2]=H[a+24>>2]+b}function Zb(a,b){H[a+8>>2]=b|-2147483648}function Yl(a,b){a=a|0;b=b|0;vd(a,13672)}function Yc(a){return(a|0)==32|a-9>>>0<5}function Wl(a,b){a=a|0;b=b|0;vd(a,13692)}function Gf(a,b){H[a+12>>2]=H[a+12>>2]+b}function Bg(a,b){return H[a>>2]==H[b>>2]}function Be(a){H[H[a>>2]+4>>2]=H[a+4>>2]}function ni(a,b){a=a|0;b=b|0;Nf(a,1,45)}function mi(a,b){a=a|0;b=b|0;Bi(a,1,45)}function Zl(a,b){a=a|0;b=b|0;xa(a,2195)}function Yg(a,b){return H[a>>2]>2]}function Xl(a,b){a=a|0;b=b|0;xa(a,2222)}function Ug(a){H[a+4>>2]=H[a+4>>2]|8192}function Qg(a,b){return K[a>>2]>2]}function Ng(a,b,c){if(b){Vb(a,Sb(c),b)}}function Lh(a,b){a=a|0;b=b|0;return b|0}function Db(a){return(a|0)==32|(a|0)==9}function sm(a){a=a|0;return H[a+12>>2]}function Qe(a,b){return Ca(a)+(b<<2)|0}function Ke(a){a=a|0;return 2147483647}function za(a,b){return Kf(a,b,yc(b))}function xn(a){a=a|0;return H[a+8>>2]}function we(a,b){a=a|0;b=b|0;return-1}function uj(a){return(a|32)-97>>>0<26}function tb(a){return I[a+11|0]>>>7|0}function je(a){return(I[a+16|0]&5)!=0}function ic(a){a=H[a>>2];if(a){_i(a)}}function bd(a){a=a|0;jg(a);return a|0}function Wk(a){a=a|0;return Sg(a,0)|0}function Vk(a){a=a|0;return Sg(a,1)|0}function Sk(a){a=a|0;return Pg(a,0)|0}function Rk(a){a=a|0;return Pg(a,1)|0}function Jk(a){a=a|0;return H[a+4>>2]}function Ji(a,b){return sh(a)^sh(b)^1}function Gi(a,b){return rh(a)^rh(b)^1}function bm(a){a=a|0;return F[a+8|0]}function bk(a,b){Pa(a);Zj(a,b);Nj(a)}function am(a){a=a|0;return F[a+9|0]}function Tf(a){H[a+4>>2]=H[a+4>>2]+1}function qf(a,b,c){if(c){ie(a,b,c)}}function qb(a,b){return(a|0)==(b|0)}function ib(a){$e(H[a>>2]);return a}function hb(a){Ei(H[a>>2]);return a}function Yb(a,b,c){if(c){Wb(a,b,c)}}function Xc(a){return xi(H[a+4>>2])}function Vi(a,b){return(b-a|0)/12|0}function Rj(a,b,c){return Oj(a,b,c)}function Qa(a){return H[a+4>>2]-4|0}function Hc(a,b){H[a>>2]=b;return a}function zh(a){dd(26176);dd(26176)}function yf(a,b){rf(a);H[a+4>>2]=b}function re(a){return qb(a,-1)?0:a}function ob(a){bk(a,H[a+4>>2]-4|0)}function Yj(a,b,c){H[b>>2]=H[c>>2]}function Qc(a,b){a=a|0;b=b|0;Ea(a)}function Je(a,b){a=a|0;b=b|0;bc(a)}function zb(a,b){return Bg(a,b)^1}function sf(a){return vc(a,24588)}function jf(a,b){return H[a+b>>2]}function ii(a){return vc(a,24456)}function hi(a){return vc(a,24448)}function ci(a){return vc(a,24472)}function bi(a){return vc(a,24464)}function ab(a){return Fi(H[a>>2])}function Uf(a){H[a>>2]=0;return a}function Sh(){dd(26176);Pa(26176)}function Rd(a){return vc(a,24580)}function Rb(a){return a-48>>>0<10}function Ib(a){return vc(a,24564)}function Gd(a){return vc(a,24612)}function Fb(a){return vc(a,24572)}function Ed(a){return xi(H[a>>2])}function Dd(a){return vc(a,24620)}function Bb(a,b){return Ji(a,b)^1}function Ab(a,b){return Gi(a,b)^1}function Aa(a,b){return Ca(a)+b|0}function ui(a){qd(a);ye(a);qd(a)}function od(a){H[a>>2]=H[a>>2]+4}function Wd(a){H[a>>2]=H[a>>2]+1}function Ue(a,b,c){Vd(a,Bd(b,c))}function Tg(a){a=a|0;xe(a);Ba(a)}function Sd(a){return!H[a+16>>2]}function Rg(a){a=a|0;Ff(a);Ba(a)}function Ph(a){dd(a);Pa(a);dd(a)}function Hk(a){a=a|0;return 1693}function Fk(a){a=a|0;lf(a);Ba(a)}function Cb(a,b){H[a>>2]=H[b>>2]}function Ag(a){Gc(a);Pa(a);Gc(a)}function th(a,b){return oi(a,b)}function rg(a,b){return Pj(a,b)}function kb(a,b){return Ji(a,b)}function jb(a,b){return Gi(a,b)}function bj(a){if(ej(a)){Ba(a)}}function Zc(a){return a<<24>>24}function Tc(a){a=a|0;return a|0}function Le(a){a=a|0;return 127}function Eb(a,b,c){Kg(a,b,c,-1)}function zq(a){a=a|0;Va(21852)}function zp(a){a=a|0;va(22440)}function zo(a){a=a|0;va(23088)}function zf(a){a=a|0;Ba(se(a))}function yq(a){a=a|0;Va(21864)}function yp(a){a=a|0;va(22452)}function yo(a){a=a|0;va(23100)}function yl(a){a=a|0;va(24756)}function xq(a){a=a|0;Va(21876)}function xp(a){a=a|0;va(22464)}function xo(a){a=a|0;va(23112)}function wq(a){a=a|0;Va(21888)}function wp(a){a=a|0;va(22476)}function wo(a){a=a|0;va(23124)}function wl(a){a=a|0;va(24772)}function vq(a){a=a|0;Va(21900)}function vp(a){a=a|0;va(22488)}function vo(a){a=a|0;va(23136)}function uq(a){a=a|0;Va(21912)}function up(a){a=a|0;va(22500)}function uo(a){a=a|0;va(23148)}function ul(a){a=a|0;va(24788)}function tq(a){a=a|0;Ba(qg(a))}function tp(a){a=a|0;va(22512)}function to(a){a=a|0;va(23160)}function sp(a){a=a|0;va(22524)}function so(a){a=a|0;va(23172)}function sl(a){a=a|0;Ba(xe(a))}function rp(a){a=a|0;va(22536)}function ro(a){a=a|0;va(23184)}function qp(a){a=a|0;va(22548)}function qo(a){a=a|0;va(23196)}function qm(a){a=a|0;Ba(Vh(a))}function qk(a){a=a|0;Va(21788)}function pq(a){a=a|0;va(21924)}function pp(a){a=a|0;va(22560)}function po(a){a=a|0;va(23208)}function pk(a){a=a|0;Va(21800)}function oq(a){a=a|0;va(21936)}function op(a){a=a|0;va(22572)}function oo(a){a=a|0;va(23220)}function ol(a){a=a|0;Ba(Ff(a))}function ok(a){a=a|0;Va(21812)}function nq(a){a=a|0;va(21948)}function np(a){a=a|0;va(22584)}function no(a){a=a|0;Ba(Aj(a))}function nk(a){a=a|0;Va(21824)}function nb(a,b){F[a|0]=I[b|0]}function mq(a){a=a|0;va(21960)}function mp(a){a=a|0;va(22596)}function mo(a){a=a|0;va(21772)}function mk(a){a=a|0;Va(21836)}function mh(a){a=a|0;Ba(bd(a))}function lq(a){a=a|0;va(21972)}function lp(a){a=a|0;va(22608)}function kq(a){a=a|0;va(21984)}function kp(a){a=a|0;va(22620)}function kl(a){a=a|0;Ba(qe(a))}function kk(a,b){H[a+108>>2]=b}function jq(a){a=a|0;va(21996)}function jp(a){a=a|0;va(22632)}function iq(a){a=a|0;va(22008)}function ip(a){a=a|0;va(22644)}function hq(a){a=a|0;va(22020)}function hp(a){a=a|0;va(22656)}function ho(a){a=a|0;Ba(jg(a))}function gq(a){a=a|0;va(22032)}function gp(a){a=a|0;va(22668)}function fq(a){a=a|0;va(22044)}function fp(a){a=a|0;va(22680)}function eq(a){a=a|0;va(22056)}function ep(a){a=a|0;va(22692)}function dq(a){a=a|0;va(22068)}function dp(a){a=a|0;va(22704)}function dm(a){a=a|0;Ba(Fh(a))}function cq(a){a=a|0;va(22080)}function cp(a){a=a|0;va(22716)}function cm(a){a=a|0;Ba(Eh(a))}function ce(a,b){H[a+204>>2]=b}function bq(a){a=a|0;va(22092)}function bp(a){a=a|0;va(22728)}function aq(a){a=a|0;va(22104)}function ap(a){a=a|0;va(22740)}function _p(a){a=a|0;va(22128)}function _o(a){a=a|0;va(22764)}function _g(a){a=a|0;Ba(ae(a))}function Zp(a){a=a|0;va(21760)}function Zo(a){a=a|0;va(22776)}function Zg(a){a=a|0;Ba(_e(a))}function Yp(a){a=a|0;va(22140)}function Yo(a){a=a|0;va(22788)}function Xp(a){a=a|0;va(22152)}function Xo(a){a=a|0;va(22800)}function Wp(a){a=a|0;va(22164)}function Wo(a){a=a|0;va(22812)}function Vp(a){a=a|0;va(22176)}function Vo(a){a=a|0;va(22824)}function Up(a){a=a|0;va(22188)}function Uo(a){a=a|0;va(22836)}function Tp(a){a=a|0;va(22200)}function To(a){a=a|0;va(22848)}function Sp(a){a=a|0;va(22212)}function So(a){a=a|0;va(22860)}function Rp(a){a=a|0;va(22224)}function Ro(a){a=a|0;va(22872)}function Qp(a){a=a|0;va(22236)}function Qo(a){a=a|0;va(22884)}function Pp(a){a=a|0;va(22248)}function Po(a){a=a|0;va(22896)}function Pm(a){a=a|0;Ba(Rh(a))}function Pj(a,b){return b-a>>2}function Op(a){a=a|0;va(22260)}function Oo(a){a=a|0;va(22908)}function Np(a){a=a|0;va(22272)}function No(a){a=a|0;va(22920)}function Mp(a){a=a|0;va(22284)}function Mo(a){a=a|0;va(22932)}function Lp(a){a=a|0;va(22296)}function Lo(a){a=a|0;va(22944)}function Kp(a){a=a|0;va(22308)}function Ko(a){a=a|0;va(22956)}function Jp(a){a=a|0;va(22320)}function Jo(a){a=a|0;va(22968)}function Ip(a){a=a|0;va(22332)}function Io(a){a=a|0;va(22980)}function Il(a){a=a|0;va(24676)}function Hp(a){a=a|0;va(22344)}function Ho(a){a=a|0;va(22992)}function Gp(a){a=a|0;va(22356)}function Go(a){a=a|0;va(23004)}function Gl(a){a=a|0;va(24692)}function Gk(a){a=a|0;Ba(lf(a))}function Fp(a){a=a|0;va(22368)}function Fo(a){a=a|0;va(23016)}function Ep(a){a=a|0;va(22380)}function Eo(a){a=a|0;va(23028)}function El(a){a=a|0;va(24708)}function Dq(a){a=a|0;Ba(wg(a))}function Dp(a){a=a|0;va(22392)}function Do(a){a=a|0;va(23040)}function Df(a){a=a|0;Ba(ve(a))}function Cp(a){a=a|0;va(22404)}function Co(a){a=a|0;va(23052)}function Cl(a){a=a|0;va(24724)}function Ch(a){a=a|0;Ba(Lf(a))}function Bp(a){a=a|0;va(22416)}function Bo(a){a=a|0;va(23064)}function Ap(a){a=a|0;va(22428)}function Ao(a){a=a|0;va(23076)}function Am(a){a=a|0;Ba(Kh(a))}function Al(a){a=a|0;va(24740)}function $p(a){a=a|0;va(22116)}function $o(a){a=a|0;va(22752)}function zi(a){a=a|0;return 2}function oi(a,b){return b-a|0}function oe(a,b){H[a+72>>2]=b}function jk(a,b){F[a+128|0]=b}function ih(a){a=a|0;return-1}function Ui(a){return je(a)^1}function Pf(a){a=a|0;return 1}function Pb(a){a=a|0;return 0}function Ia(a,b){Sf(a,b+28|0)}function Gh(a){a=a|0;return 4}function De(a){return!H[a>>2]}function yb(a,b){H[a+4>>2]=b}function ub(a,b){F[a+11|0]=b}function rd(a,b){Sf(a,b+4|0)}function ik(a,b){F[a+86|0]=b}function he(a,b){F[a+83|0]=b}function ed(a){return a+32|0}function _j(a){Zj(a,H[a>>2])}function Uj(a,b){Gc(a);Gc(a)}function Th(a){vh(a,H[a>>2])}function Ie(a,b){a=a|0;b=b|0}function Ic(a){return a+12|0}function Ce(a){return a+16|0}function uh(a){H[a>>2]=Oa()}function gb(a){return a+8|0}function Sb(a){return a&255}function Ij(a){F[a+209|0]=1}function Hj(a){F[a+211|0]=1}function Gj(a){F[a+210|0]=1}function Fj(a){F[a+234|0]=1}function Fg(a){H[a>>2]=7888}function Dh(a){H[a+12>>2]=0}function Ad(a){return a+4|0}function $b(a){return!wa(a)}function yh(a,b){H[b>>2]=0}function xh(a,b,c){Td(b,c)}function io(){return 24280}function _b(a,b){H[a>>2]=b}function Xb(){Fe(1998);X()}function Nj(a){Gc(a);Pa(a)}function Fa(a){Ee(H[a>>2])}function $d(){Fe(1527);X()}function $a(a){a=a|0;Ba(a)}function uk(){return oa|0}function tk(a){a=a|0;oa=a}function Ha(a){qa[3](a)|0}function rf(a){H[a>>2]=0}function ck(a,b){Bd(a,b)}function ao(a){a=a|0;X()}function me(){db();X()}function _a(a){lb(a,0)}function Hg(a,b){va(b)}function db(){$();X()}function Ef(a){a=a|0}function Ik(){X()} +// EMSCRIPTEN_END_FUNCS +e=I;p(ta);var qa=c([null,Zp,mo,Aq,lf,qk,pk,ok,nk,mk,wg,Dq,gk,Cq,fk,ek,Bq,zq,yq,xq,wq,vq,uq,qg,tq,sq,qq,rq,pq,oq,nq,mq,lq,kq,jq,iq,hq,gq,fq,eq,dq,cq,bq,aq,$p,_p,Yp,Xp,Wp,Vp,Up,Tp,Sp,Rp,Qp,Pp,Op,Np,Mp,Lp,Kp,Jp,Ip,Hp,Gp,Fp,Ep,Dp,Cp,Bp,Ap,zp,yp,xp,wp,vp,up,tp,sp,rp,qp,pp,op,np,mp,lp,kp,jp,ip,hp,gp,fp,ep,dp,cp,bp,ap,$o,_o,Zo,Yo,Xo,Wo,Vo,Uo,To,So,Ro,Qo,Po,Oo,No,Mo,Lo,Ko,Jo,Io,Ho,Go,Fo,Eo,Do,Co,Bo,Ao,zo,yo,xo,wo,vo,uo,to,so,ro,qo,po,oo,Aj,no,jo,lo,ko,jg,ho,go,fo,eo,bo,Tc,ao,Ik,Ba,Ef,Om,Mm,Ul,Sl,Ql,Ol,Ml,Kl,Il,Gl,El,Cl,Al,yl,wl,ul,Rh,Pm,Nm,Kh,Am,zm,ym,xm,wm,Lh,vm,um,tm,Vh,qm,pm,om,nm,mm,Pb,lm,km,Fh,dm,bm,am,$l,Zl,Xl,Eh,cm,xn,sm,_l,Yl,Wl,Tc,$a,$a,Lm,Km,Jm,Im,Hm,Gm,Fm,Em,Lh,Dm,Cm,Bm,$a,Jh,Jh,Qf,Pf,Pf,rm,Pf,$a,jm,im,Qf,Pb,Pb,hm,Gh,$a,gm,fm,Qf,Pb,Pb,em,Gh,Tc,$a,$n,_n,Zn,Tc,$a,Yn,Xn,Wn,$a,Vn,Un,Tn,Sn,Qi,Qi,Rn,Qn,Pn,On,Nn,$a,Mn,Ln,Kn,Jn,Hi,Hi,In,Hn,Gn,Fn,En,$a,Dn,Cn,Bn,An,zn,yn,wn,vn,$a,un,tn,sn,rn,qn,pn,on,nn,Tc,$a,zi,mn,ln,kn,jn,hn,gn,Vl,Rl,Nl,Bl,xl,Jl,Fl,Tc,$a,zi,fn,en,dn,cn,bn,an,Tl,Pl,Ll,zl,vl,Hl,Dl,Lf,Ch,$m,Lf,Ch,_m,$a,Le,Le,Qc,Qc,Qc,ni,Pb,Pc,Pc,$a,Le,Le,Qc,Qc,Qc,ni,Pb,Pc,Pc,$a,Ke,Ke,Qc,Je,Je,mi,Pb,Pc,Pc,$a,Ke,Ke,Qc,Je,Je,mi,Pb,Pc,Pc,$a,Zm,Ym,$a,Xm,Wm,$a,Vm,Um,$a,Tm,Sm,$a,Wh,Rm,Ie,$a,Wh,Qm,Ie,tl,If,xe,sl,Ie,lh,kh,jh,Pb,Pb,rl,ih,ql,we,pl,we,Ff,ol,Ie,lh,kh,jh,Pb,Pb,nl,ih,ml,we,ll,we,ve,Df,gh,fh,ve,Df,gh,fh,se,zf,eh,dh,se,zf,eh,dh,qe,kl,cl,gl,fl,el,dl,jl,il,hl,bd,mh,bd,mh,ae,_g,bl,al,_e,Zg,$k,_k,Pb,Zk,Yk,Tg,Xk,Wk,Vk,Uk,Rg,Tk,Sk,Rk,Qk,Tg,Pk,Og,Ok,Nk,Rg,Mk,Og,Lk,Kk,Tc,$a,Hk,Gk,Jk,Fk,Tc,$a,Ef,Ef,Ek,vk,yk,Dk,$a,wk,zk,Ck,$a,xk,Ak,Bk]);function ra(){return E.byteLength/65536|0}return{"r":lk,"s":co,"t":rk,"u":qa,"v":io,"w":cb,"x":uk,"y":tk,"z":sk}}return sa(ua)} +// EMSCRIPTEN_END_ASM + + + + +)(asmLibraryArg)},instantiate:function(binary,info){return{then:function(ok){var module=new WebAssembly.Module(binary);ok({"instance":new WebAssembly.Instance(module)})}}},RuntimeError:Error};wasmBinary=[];if(typeof WebAssembly!=="object"){abort("no native wasm support detected")}var wasmMemory;var ABORT=false;var EXITSTATUS;function assert(condition,text){if(!condition){abort("Assertion failed: "+text)}}function getCFunc(ident){var func=Module["_"+ident];assert(func,"Cannot call unknown function "+ident+", make sure it is exported");return func}function ccall(ident,returnType,argTypes,args,opts){var toC={"string":function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){var len=(str.length<<2)+1;ret=stackAlloc(len);stringToUTF8(str,ret,len)}return ret},"array":function(arr){var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}};function convertReturnValue(ret){if(returnType==="string")return UTF8ToString(ret);if(returnType==="boolean")return Boolean(ret);return ret}var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i=endIdx))++endPtr;if(endPtr-idx>16&&heap.subarray&&UTF8Decoder){return UTF8Decoder.decode(heap.subarray(idx,endPtr))}else{var str="";while(idx>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127)++len;else if(u<=2047)len+=2;else if(u<=65535)len+=3;else len+=4}return len}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i>0]=str.charCodeAt(i)}if(!dontAddNull)HEAP8[buffer>>0]=0}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module["HEAP8"]=HEAP8=new Int8Array(buf);Module["HEAP16"]=HEAP16=new Int16Array(buf);Module["HEAP32"]=HEAP32=new Int32Array(buf);Module["HEAPU8"]=HEAPU8=new Uint8Array(buf);Module["HEAPU16"]=HEAPU16=new Uint16Array(buf);Module["HEAPU32"]=HEAPU32=new Uint32Array(buf);Module["HEAPF32"]=HEAPF32=new Float32Array(buf);Module["HEAPF64"]=HEAPF64=new Float64Array(buf)}var INITIAL_MEMORY=Module["INITIAL_MEMORY"]||16777216;if(Module["wasmMemory"]){wasmMemory=Module["wasmMemory"]}else{wasmMemory=new WebAssembly.Memory({"initial":INITIAL_MEMORY/65536,"maximum":INITIAL_MEMORY/65536})}if(wasmMemory){buffer=wasmMemory.buffer}INITIAL_MEMORY=buffer.byteLength;updateGlobalBufferAndViews(buffer);var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=false;var runtimeKeepaliveCounter=0;function keepRuntimeAlive(){return noExitRuntime||runtimeKeepaliveCounter>0}function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;if(!Module["noFSInit"]&&!FS.init.initialized)FS.init();FS.ignorePermissions=false;TTY.init();callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){runtimeExited=true}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnInit(cb){__ATINIT__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function getUniqueRunDependency(id){return id}function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module["preloadedImages"]={};Module["preloadedAudios"]={};function abort(what){if(Module["onAbort"]){Module["onAbort"](what)}what+="";err(what);ABORT=true;EXITSTATUS=1;what="abort("+what+"). Build with -s ASSERTIONS=1 for more info.";var e=new WebAssembly.RuntimeError(what);readyPromiseReject(e);throw e}var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return filename.startsWith(dataURIPrefix)}function isFileURI(filename){return filename.startsWith("file://")}var wasmBinaryFile;wasmBinaryFile="vlogFormatter.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(file){try{if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}var binary=tryParseAsDataURI(file);if(binary){return binary}if(readBinary){return readBinary(file)}else{throw"both async and sync fetching of the wasm failed"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch==="function"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){if(!response["ok"]){throw"failed to load wasm binary file at '"+wasmBinaryFile+"'"}return response["arrayBuffer"]()}).catch(function(){return getBinary(wasmBinaryFile)})}else{if(readAsync){return new Promise(function(resolve,reject){readAsync(wasmBinaryFile,function(response){resolve(new Uint8Array(response))},reject)})}}}return Promise.resolve().then(function(){return getBinary(wasmBinaryFile)})}function createWasm(){var info={"a":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module["asm"]=exports;wasmTable=Module["asm"]["u"];addOnInit(Module["asm"]["r"]);removeRunDependency("wasm-instantiate")}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){receiveInstance(result["instance"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){var result=WebAssembly.instantiate(binary,info);return result}).then(receiver,function(reason){err("failed to asynchronously prepare wasm: "+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming==="function"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch==="function"){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiationResult,function(reason){err("wasm streaming compile failed: "+reason);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(receiveInstantiationResult)})})}else{return instantiateArrayBuffer(receiveInstantiationResult)}}if(Module["instantiateWasm"]){try{var exports=Module["instantiateWasm"](info,receiveInstance);return exports}catch(e){err("Module.instantiateWasm callback failed with error: "+e);return false}}instantiateAsync().catch(readyPromiseReject);return{}}var tempDouble;var tempI64;function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback=="function"){callback(Module);continue}var func=callback.func;if(typeof func==="number"){if(callback.arg===undefined){wasmTable.get(func)()}else{wasmTable.get(func)(callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}function ___cxa_allocate_exception(size){return _malloc(size+16)+16}function ExceptionInfo(excPtr){this.excPtr=excPtr;this.ptr=excPtr-16;this.set_type=function(type){HEAP32[this.ptr+4>>2]=type};this.get_type=function(){return HEAP32[this.ptr+4>>2]};this.set_destructor=function(destructor){HEAP32[this.ptr+8>>2]=destructor};this.get_destructor=function(){return HEAP32[this.ptr+8>>2]};this.set_refcount=function(refcount){HEAP32[this.ptr>>2]=refcount};this.set_caught=function(caught){caught=caught?1:0;HEAP8[this.ptr+12>>0]=caught};this.get_caught=function(){return HEAP8[this.ptr+12>>0]!=0};this.set_rethrown=function(rethrown){rethrown=rethrown?1:0;HEAP8[this.ptr+13>>0]=rethrown};this.get_rethrown=function(){return HEAP8[this.ptr+13>>0]!=0};this.init=function(type,destructor){this.set_type(type);this.set_destructor(destructor);this.set_refcount(0);this.set_caught(false);this.set_rethrown(false)};this.add_ref=function(){var value=HEAP32[this.ptr>>2];HEAP32[this.ptr>>2]=value+1};this.release_ref=function(){var prev=HEAP32[this.ptr>>2];HEAP32[this.ptr>>2]=prev-1;return prev===1}}var exceptionLast=0;var uncaughtExceptionCount=0;function ___cxa_throw(ptr,type,destructor){var info=new ExceptionInfo(ptr);info.init(type,destructor);exceptionLast=ptr;uncaughtExceptionCount++;throw ptr}function setErrNo(value){HEAP32[___errno_location()>>2]=value;return value}var PATH={splitPath:function(filename){var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift("..")}}return parts},normalize:function(path){var isAbsolute=path.charAt(0)==="/",trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(function(p){return!!p}),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return"."}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:function(path){if(path==="/")return"/";path=PATH.normalize(path);path=path.replace(/\/$/,"");var lastSlash=path.lastIndexOf("/");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))},join2:function(l,r){return PATH.normalize(l+"/"+r)}};function getRandomDevice(){if(typeof crypto==="object"&&typeof crypto["getRandomValues"]==="function"){var randomBuffer=new Uint8Array(1);return function(){crypto.getRandomValues(randomBuffer);return randomBuffer[0]}}else if(ENVIRONMENT_IS_NODE){try{var crypto_module=require("crypto");return function(){return crypto_module["randomBytes"](1)[0]}}catch(e){}}return function(){abort("randomDevice")}}var PATH_FS={resolve:function(){var resolvedPath="",resolvedAbsolute=false;for(var i=arguments.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?arguments[i]:FS.cwd();if(typeof path!=="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){return""}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=path.charAt(0)==="/"}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(function(p){return!!p}),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:function(from,to){from=PATH_FS.resolve(from).substr(1);to=PATH_FS.resolve(to).substr(1);function trim(arr){var start=0;for(;start=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i0){result=buf.slice(0,bytesRead).toString("utf-8")}else{result=null}}else if(typeof window!="undefined"&&typeof window.prompt=="function"){result=window.prompt("Input: ");if(result!==null){result+="\n"}}else if(typeof readline=="function"){result=readline();if(result!==null){result+="\n"}}if(!result){return null}tty.input=intArrayFromString(result,true)}return tty.input.shift()},put_char:function(tty,val){if(val===null||val===10){out(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}}},default_tty1_ops:{put_char:function(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};function mmapAlloc(size){abort()}var MEMFS={ops_table:null,mount:function(mount){return MEMFS.createNode(null,"/",16384|511,0)},createNode:function(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(63)}if(!MEMFS.ops_table){MEMFS.ops_table={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}}}var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.timestamp=Date.now();if(parent){parent.contents[name]=node;parent.timestamp=node.timestamp}return node},getFileDataAsTypedArray:function(node){if(!node.contents)return new Uint8Array(0);if(node.contents.subarray)return node.contents.subarray(0,node.usedBytes);return new Uint8Array(node.contents)},expandFileStorage:function(node,newCapacity){var prevCapacity=node.contents?node.contents.length:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity>>0);if(prevCapacity!=0)newCapacity=Math.max(newCapacity,256);var oldContents=node.contents;node.contents=new Uint8Array(newCapacity);if(node.usedBytes>0)node.contents.set(oldContents.subarray(0,node.usedBytes),0)},resizeFileStorage:function(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0}else{var oldContents=node.contents;node.contents=new Uint8Array(newSize);if(oldContents){node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)))}node.usedBytes=newSize}},node_ops:{getattr:function(node){var attr={};attr.dev=FS.isChrdev(node.mode)?node.id:1;attr.ino=node.id;attr.mode=node.mode;attr.nlink=1;attr.uid=0;attr.gid=0;attr.rdev=node.rdev;if(FS.isDir(node.mode)){attr.size=4096}else if(FS.isFile(node.mode)){attr.size=node.usedBytes}else if(FS.isLink(node.mode)){attr.size=node.link.length}else{attr.size=0}attr.atime=new Date(node.timestamp);attr.mtime=new Date(node.timestamp);attr.ctime=new Date(node.timestamp);attr.blksize=4096;attr.blocks=Math.ceil(attr.size/attr.blksize);return attr},setattr:function(node,attr){if(attr.mode!==undefined){node.mode=attr.mode}if(attr.timestamp!==undefined){node.timestamp=attr.timestamp}if(attr.size!==undefined){MEMFS.resizeFileStorage(node,attr.size)}},lookup:function(parent,name){throw FS.genericErrors[44]},mknod:function(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename:function(old_node,new_dir,new_name){if(FS.isDir(old_node.mode)){var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(new_node){for(var i in new_node.contents){throw new FS.ErrnoError(55)}}}delete old_node.parent.contents[old_node.name];old_node.parent.timestamp=Date.now();old_node.name=new_name;new_dir.contents[new_name]=old_node;new_dir.timestamp=old_node.parent.timestamp;old_node.parent=new_dir},unlink:function(parent,name){delete parent.contents[name];parent.timestamp=Date.now()},rmdir:function(parent,name){var node=FS.lookupNode(parent,name);for(var i in node.contents){throw new FS.ErrnoError(55)}delete parent.contents[name];parent.timestamp=Date.now()},readdir:function(node){var entries=[".",".."];for(var key in node.contents){if(!node.contents.hasOwnProperty(key)){continue}entries.push(key)}return entries},symlink:function(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink:function(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read:function(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i0||position+length8){throw new FS.ErrnoError(32)}var parts=PATH.normalizeArray(path.split("/").filter(function(p){return!!p}),false);var current=FS.root;var current_path="/";for(var i=0;i40){throw new FS.ErrnoError(32)}}}}return{path:current_path,node:current}},getPath:function(node){var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!=="/"?mount+"/"+path:mount+path}path=path?node.name+"/"+path:node.name;node=node.parent}},hashName:function(parentid,name){var hash=0;for(var i=0;i>>0)%FS.nameTable.length},hashAddNode:function(node){var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode:function(node){var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}},lookupNode:function(parent,name){var errCode=FS.mayLookup(parent);if(errCode){throw new FS.ErrnoError(errCode,parent)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)},createNode:function(parent,name,mode,rdev){var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode:function(node){FS.hashRemoveNode(node)},isRoot:function(node){return node===node.parent},isMountpoint:function(node){return!!node.mounted},isFile:function(mode){return(mode&61440)===32768},isDir:function(mode){return(mode&61440)===16384},isLink:function(mode){return(mode&61440)===40960},isChrdev:function(mode){return(mode&61440)===8192},isBlkdev:function(mode){return(mode&61440)===24576},isFIFO:function(mode){return(mode&61440)===4096},isSocket:function(mode){return(mode&49152)===49152},flagModes:{"r":0,"r+":2,"w":577,"w+":578,"a":1089,"a+":1090},modeStringToFlags:function(str){var flags=FS.flagModes[str];if(typeof flags==="undefined"){throw new Error("Unknown file open mode: "+str)}return flags},flagsToPermissionString:function(flag){var perms=["r","w","rw"][flag&3];if(flag&512){perms+="w"}return perms},nodePermissions:function(node,perms){if(FS.ignorePermissions){return 0}if(perms.includes("r")&&!(node.mode&292)){return 2}else if(perms.includes("w")&&!(node.mode&146)){return 2}else if(perms.includes("x")&&!(node.mode&73)){return 2}return 0},mayLookup:function(dir){var errCode=FS.nodePermissions(dir,"x");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate:function(dir,name){try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,"wx")},mayDelete:function(dir,name,isdir){var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var errCode=FS.nodePermissions(dir,"wx");if(errCode){return errCode}if(isdir){if(!FS.isDir(node.mode)){return 54}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return 10}}else{if(FS.isDir(node.mode)){return 31}}return 0},mayOpen:function(node,flags){if(!node){return 44}if(FS.isLink(node.mode)){return 32}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!=="r"||flags&512){return 31}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))},MAX_OPEN_FDS:4096,nextfd:function(fd_start,fd_end){fd_start=fd_start||0;fd_end=fd_end||FS.MAX_OPEN_FDS;for(var fd=fd_start;fd<=fd_end;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStream:function(fd){return FS.streams[fd]},createStream:function(stream,fd_start,fd_end){if(!FS.FSStream){FS.FSStream=function(){};FS.FSStream.prototype={object:{get:function(){return this.node},set:function(val){this.node=val}},isRead:{get:function(){return(this.flags&2097155)!==1}},isWrite:{get:function(){return(this.flags&2097155)!==0}},isAppend:{get:function(){return this.flags&1024}}}}var newStream=new FS.FSStream;for(var p in stream){newStream[p]=stream[p]}stream=newStream;var fd=FS.nextfd(fd_start,fd_end);stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream:function(fd){FS.streams[fd]=null},chrdev_stream_ops:{open:function(stream){var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;if(stream.stream_ops.open){stream.stream_ops.open(stream)}},llseek:function(){throw new FS.ErrnoError(70)}},major:function(dev){return dev>>8},minor:function(dev){return dev&255},makedev:function(ma,mi){return ma<<8|mi},registerDevice:function(dev,ops){FS.devices[dev]={stream_ops:ops}},getDevice:function(dev){return FS.devices[dev]},getMounts:function(mount){var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push.apply(check,m.mounts)}return mounts},syncfs:function(populate,callback){if(typeof populate==="function"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){err("warning: "+FS.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work")}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(errCode){FS.syncFSRequests--;return callback(errCode)}function done(errCode){if(errCode){if(!done.errored){done.errored=true;return doCallback(errCode)}return}if(++completed>=mounts.length){doCallback(null)}}mounts.forEach(function(mount){if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)})},mount:function(type,opts,mountpoint){var root=mountpoint==="/";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(10)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}}var mount={type:type,opts:opts,mountpoint:mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot},unmount:function(mountpoint){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(28)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach(function(hash){var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.includes(current.mount)){FS.destroyNode(current)}current=next}});node.mounted=null;var idx=node.mount.mounts.indexOf(mount);node.mount.mounts.splice(idx,1)},lookup:function(parent,name){return parent.node_ops.lookup(parent,name)},mknod:function(path,mode,dev){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name==="."||name===".."){throw new FS.ErrnoError(28)}var errCode=FS.mayCreate(parent,name);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(63)}return parent.node_ops.mknod(parent,name,mode,dev)},create:function(path,mode){mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir:function(path,mode){mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree:function(path,mode){var dirs=path.split("/");var d="";for(var i=0;ithis.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]};LazyUint8Array.prototype.setDataGetter=function LazyUint8Array_setDataGetter(getter){this.getter=getter};LazyUint8Array.prototype.cacheLength=function LazyUint8Array_cacheLength(){var xhr=new XMLHttpRequest;xhr.open("HEAD",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);var datalength=Number(xhr.getResponseHeader("Content-length"));var header;var hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&header==="bytes";var usesGzip=(header=xhr.getResponseHeader("Content-Encoding"))&&header==="gzip";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=function(from,to){if(from>to)throw new Error("invalid range ("+from+", "+to+") or no bytes requested!");if(to>datalength-1)throw new Error("only "+datalength+" bytes available! programmer error!");var xhr=new XMLHttpRequest;xhr.open("GET",url,false);if(datalength!==chunkSize)xhr.setRequestHeader("Range","bytes="+from+"-"+to);if(typeof Uint8Array!="undefined")xhr.responseType="arraybuffer";if(xhr.overrideMimeType){xhr.overrideMimeType("text/plain; charset=x-user-defined")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}else{return intArrayFromString(xhr.responseText||"",true)}};var lazyArray=this;lazyArray.setDataGetter(function(chunkNum){var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]==="undefined"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]==="undefined")throw new Error("doXHR failed!");return lazyArray.chunks[chunkNum]});if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;out("LazyFiles on gzip forces download of the whole file when length is accessed")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true};if(typeof XMLHttpRequest!=="undefined"){if(!ENVIRONMENT_IS_WORKER)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var lazyArray=new LazyUint8Array;Object.defineProperties(lazyArray,{length:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._length}},chunkSize:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}});var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url:url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperties(node,{usedBytes:{get:function(){return this.contents.length}}});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach(function(key){var fn=node.stream_ops[key];stream_ops[key]=function forceLoadLazyFile(){FS.forceLoadFile(node);return fn.apply(null,arguments)}});stream_ops.read=function stream_ops_read(stream,buffer,offset,length,position){FS.forceLoadFile(node);var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);if(contents.slice){for(var i=0;i>2]=stat.dev;HEAP32[buf+4>>2]=0;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAP32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;HEAP32[buf+32>>2]=0;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+40>>2]=tempI64[0],HEAP32[buf+44>>2]=tempI64[1];HEAP32[buf+48>>2]=4096;HEAP32[buf+52>>2]=stat.blocks;HEAP32[buf+56>>2]=stat.atime.getTime()/1e3|0;HEAP32[buf+60>>2]=0;HEAP32[buf+64>>2]=stat.mtime.getTime()/1e3|0;HEAP32[buf+68>>2]=0;HEAP32[buf+72>>2]=stat.ctime.getTime()/1e3|0;HEAP32[buf+76>>2]=0;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+80>>2]=tempI64[0],HEAP32[buf+84>>2]=tempI64[1];return 0},doMsync:function(addr,stream,len,flags,offset){var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},doMkdir:function(path,mode){path=PATH.normalize(path);if(path[path.length-1]==="/")path=path.substr(0,path.length-1);FS.mkdir(path,mode,0);return 0},doMknod:function(path,mode,dev){switch(mode&61440){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-28}FS.mknod(path,mode,dev);return 0},doReadlink:function(path,buf,bufsize){if(bufsize<=0)return-28;var ret=FS.readlink(path);var len=Math.min(bufsize,lengthBytesUTF8(ret));var endChar=HEAP8[buf+len];stringToUTF8(ret,buf,bufsize+1);HEAP8[buf+len]=endChar;return len},doAccess:function(path,amode){if(amode&~7){return-28}var node;var lookup=FS.lookupPath(path,{follow:true});node=lookup.node;if(!node){return-44}var perms="";if(amode&4)perms+="r";if(amode&2)perms+="w";if(amode&1)perms+="x";if(perms&&FS.nodePermissions(node,perms)){return-2}return 0},doDup:function(path,flags,suggestFD){var suggest=FS.getStream(suggestFD);if(suggest)FS.close(suggest);return FS.open(path,flags,0,suggestFD,suggestFD).fd},doReadv:function(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr}return ret},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},getStreamFromFD:function(fd){var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);return stream},get64:function(low,high){return low}};function ___sys_fcntl64(fd,cmd,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(cmd){case 0:{var arg=SYSCALLS.get();if(arg<0){return-28}var newStream;newStream=FS.open(stream.path,stream.flags,0,arg);return newStream.fd}case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=SYSCALLS.get();stream.flags|=arg;return 0}case 12:{var arg=SYSCALLS.get();var offset=0;HEAP16[arg+offset>>1]=2;return 0}case 13:case 14:return 0;case 16:case 8:return-28;case 9:setErrNo(28);return-1;default:{return-28}}}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___sys_ioctl(fd,op,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(op){case 21509:case 21505:{if(!stream.tty)return-59;return 0}case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:{if(!stream.tty)return-59;return 0}case 21519:{if(!stream.tty)return-59;var argp=SYSCALLS.get();HEAP32[argp>>2]=0;return 0}case 21520:{if(!stream.tty)return-59;return-28}case 21531:{var argp=SYSCALLS.get();return FS.ioctl(stream,op,argp)}case 21523:{if(!stream.tty)return-59;return 0}case 21524:{if(!stream.tty)return-59;return 0}default:abort("bad ioctl syscall "+op)}}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___sys_open(path,flags,varargs){SYSCALLS.varargs=varargs;try{var pathname=SYSCALLS.getStr(path);var mode=varargs?SYSCALLS.get():0;var stream=FS.open(pathname,flags,mode);return stream.fd}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function _abort(){abort()}function _emscripten_memcpy_big(dest,src,num){HEAPU8.copyWithin(dest,src,src+num)}function abortOnCannotGrowMemory(requestedSize){abort("OOM")}function _emscripten_resize_heap(requestedSize){var oldSize=HEAPU8.length;requestedSize=requestedSize>>>0;abortOnCannotGrowMemory(requestedSize)}var ENV={};function getExecutableName(){return thisProgram||"./this.program"}function getEnvStrings(){if(!getEnvStrings.strings){var lang=(typeof navigator==="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8";var env={"USER":"web_user","LOGNAME":"web_user","PATH":"/","PWD":"/","HOME":"/home/web_user","LANG":lang,"_":getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(x+"="+env[x])}getEnvStrings.strings=strings}return getEnvStrings.strings}function _environ_get(__environ,environ_buf){try{var bufSize=0;getEnvStrings().forEach(function(string,i){var ptr=environ_buf+bufSize;HEAP32[__environ+i*4>>2]=ptr;writeAsciiToMemory(string,ptr);bufSize+=string.length+1});return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _environ_sizes_get(penviron_count,penviron_buf_size){try{var strings=getEnvStrings();HEAP32[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(function(string){bufSize+=string.length+1});HEAP32[penviron_buf_size>>2]=bufSize;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _exit(status){exit(status)}function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _fd_read(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doReadv(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){try{var stream=SYSCALLS.getStreamFromFD(fd);var HIGH_OFFSET=4294967296;var offset=offset_high*HIGH_OFFSET+(offset_low>>>0);var DOUBLE_LIMIT=9007199254740992;if(offset<=-DOUBLE_LIMIT||offset>=DOUBLE_LIMIT){return-61}FS.llseek(stream,offset,whence);tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[newOffset>>2]=tempI64[0],HEAP32[newOffset+4>>2]=tempI64[1];if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _fd_write(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doWritev(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function __isLeapYear(year){return year%4===0&&(year%100!==0||year%400===0)}function __arraySum(array,index){var sum=0;for(var i=0;i<=index;sum+=array[i++]){}return sum}var __MONTH_DAYS_LEAP=[31,29,31,30,31,30,31,31,30,31,30,31];var __MONTH_DAYS_REGULAR=[31,28,31,30,31,30,31,31,30,31,30,31];function __addDays(date,days){var newDate=new Date(date.getTime());while(days>0){var leap=__isLeapYear(newDate.getFullYear());var currentMonth=newDate.getMonth();var daysInCurrentMonth=(leap?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR)[currentMonth];if(days>daysInCurrentMonth-newDate.getDate()){days-=daysInCurrentMonth-newDate.getDate()+1;newDate.setDate(1);if(currentMonth<11){newDate.setMonth(currentMonth+1)}else{newDate.setMonth(0);newDate.setFullYear(newDate.getFullYear()+1)}}else{newDate.setDate(newDate.getDate()+days);return newDate}}return newDate}function _strftime(s,maxsize,format,tm){var tm_zone=HEAP32[tm+40>>2];var date={tm_sec:HEAP32[tm>>2],tm_min:HEAP32[tm+4>>2],tm_hour:HEAP32[tm+8>>2],tm_mday:HEAP32[tm+12>>2],tm_mon:HEAP32[tm+16>>2],tm_year:HEAP32[tm+20>>2],tm_wday:HEAP32[tm+24>>2],tm_yday:HEAP32[tm+28>>2],tm_isdst:HEAP32[tm+32>>2],tm_gmtoff:HEAP32[tm+36>>2],tm_zone:tm_zone?UTF8ToString(tm_zone):""};var pattern=UTF8ToString(format);var EXPANSION_RULES_1={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var rule in EXPANSION_RULES_1){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_1[rule])}var WEEKDAYS=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];var MONTHS=["January","February","March","April","May","June","July","August","September","October","November","December"];function leadingSomething(value,digits,character){var str=typeof value==="number"?value.toString():value||"";while(str.length0?1:0}var compare;if((compare=sgn(date1.getFullYear()-date2.getFullYear()))===0){if((compare=sgn(date1.getMonth()-date2.getMonth()))===0){compare=sgn(date1.getDate()-date2.getDate())}}return compare}function getFirstWeekStartDate(janFourth){switch(janFourth.getDay()){case 0:return new Date(janFourth.getFullYear()-1,11,29);case 1:return janFourth;case 2:return new Date(janFourth.getFullYear(),0,3);case 3:return new Date(janFourth.getFullYear(),0,2);case 4:return new Date(janFourth.getFullYear(),0,1);case 5:return new Date(janFourth.getFullYear()-1,11,31);case 6:return new Date(janFourth.getFullYear()-1,11,30)}}function getWeekBasedYear(date){var thisDate=__addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);var janFourthThisYear=new Date(thisDate.getFullYear(),0,4);var janFourthNextYear=new Date(thisDate.getFullYear()+1,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);if(compareByDay(firstWeekStartThisYear,thisDate)<=0){if(compareByDay(firstWeekStartNextYear,thisDate)<=0){return thisDate.getFullYear()+1}else{return thisDate.getFullYear()}}else{return thisDate.getFullYear()-1}}var EXPANSION_RULES_2={"%a":function(date){return WEEKDAYS[date.tm_wday].substring(0,3)},"%A":function(date){return WEEKDAYS[date.tm_wday]},"%b":function(date){return MONTHS[date.tm_mon].substring(0,3)},"%B":function(date){return MONTHS[date.tm_mon]},"%C":function(date){var year=date.tm_year+1900;return leadingNulls(year/100|0,2)},"%d":function(date){return leadingNulls(date.tm_mday,2)},"%e":function(date){return leadingSomething(date.tm_mday,2," ")},"%g":function(date){return getWeekBasedYear(date).toString().substring(2)},"%G":function(date){return getWeekBasedYear(date)},"%H":function(date){return leadingNulls(date.tm_hour,2)},"%I":function(date){var twelveHour=date.tm_hour;if(twelveHour==0)twelveHour=12;else if(twelveHour>12)twelveHour-=12;return leadingNulls(twelveHour,2)},"%j":function(date){return leadingNulls(date.tm_mday+__arraySum(__isLeapYear(date.tm_year+1900)?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,date.tm_mon-1),3)},"%m":function(date){return leadingNulls(date.tm_mon+1,2)},"%M":function(date){return leadingNulls(date.tm_min,2)},"%n":function(){return"\n"},"%p":function(date){if(date.tm_hour>=0&&date.tm_hour<12){return"AM"}else{return"PM"}},"%S":function(date){return leadingNulls(date.tm_sec,2)},"%t":function(){return"\t"},"%u":function(date){return date.tm_wday||7},"%U":function(date){var janFirst=new Date(date.tm_year+1900,0,1);var firstSunday=janFirst.getDay()===0?janFirst:__addDays(janFirst,7-janFirst.getDay());var endDate=new Date(date.tm_year+1900,date.tm_mon,date.tm_mday);if(compareByDay(firstSunday,endDate)<0){var februaryFirstUntilEndMonth=__arraySum(__isLeapYear(endDate.getFullYear())?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,endDate.getMonth()-1)-31;var firstSundayUntilEndJanuary=31-firstSunday.getDate();var days=firstSundayUntilEndJanuary+februaryFirstUntilEndMonth+endDate.getDate();return leadingNulls(Math.ceil(days/7),2)}return compareByDay(firstSunday,janFirst)===0?"01":"00"},"%V":function(date){var janFourthThisYear=new Date(date.tm_year+1900,0,4);var janFourthNextYear=new Date(date.tm_year+1901,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);var endDate=__addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);if(compareByDay(endDate,firstWeekStartThisYear)<0){return"53"}if(compareByDay(firstWeekStartNextYear,endDate)<=0){return"01"}var daysDifference;if(firstWeekStartThisYear.getFullYear()=0;off=Math.abs(off)/60;off=off/60*100+off%60;return(ahead?"+":"-")+String("0000"+off).slice(-4)},"%Z":function(date){return date.tm_zone},"%%":function(){return"%"}};for(var rule in EXPANSION_RULES_2){if(pattern.includes(rule)){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_2[rule](date))}}var bytes=intArrayFromString(pattern,false);if(bytes.length>maxsize){return 0}writeArrayToMemory(bytes,s);return bytes.length-1}function _strftime_l(s,maxsize,format,tm){return _strftime(s,maxsize,format,tm)}var FSNode=function(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.mounted=null;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.node_ops={};this.stream_ops={};this.rdev=rdev};var readMode=292|73;var writeMode=146;Object.defineProperties(FSNode.prototype,{read:{get:function(){return(this.mode&readMode)===readMode},set:function(val){val?this.mode|=readMode:this.mode&=~readMode}},write:{get:function(){return(this.mode&writeMode)===writeMode},set:function(val){val?this.mode|=writeMode:this.mode&=~writeMode}},isFolder:{get:function(){return FS.isDir(this.mode)}},isDevice:{get:function(){return FS.isChrdev(this.mode)}}});FS.FSNode=FSNode;FS.staticInit();Module["FS_createPath"]=FS.createPath;Module["FS_createDataFile"]=FS.createDataFile;Module["FS_createPreloadedFile"]=FS.createPreloadedFile;Module["FS_createLazyFile"]=FS.createLazyFile;Module["FS_createDevice"]=FS.createDevice;Module["FS_unlink"]=FS.unlink;var ASSERTIONS=false;function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}function intArrayToString(array){var ret=[];for(var i=0;i255){if(ASSERTIONS){assert(false,"Character code "+chr+" ("+String.fromCharCode(chr)+") at offset "+i+" not in 0x00-0xFF.")}chr&=255}ret.push(String.fromCharCode(chr))}return ret.join("")}var decodeBase64=typeof atob==="function"?atob:function(input){var keyStr="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";var output="";var chr1,chr2,chr3;var enc1,enc2,enc3,enc4;var i=0;input=input.replace(/[^A-Za-z0-9\+\/\=]/g,"");do{enc1=keyStr.indexOf(input.charAt(i++));enc2=keyStr.indexOf(input.charAt(i++));enc3=keyStr.indexOf(input.charAt(i++));enc4=keyStr.indexOf(input.charAt(i++));chr1=enc1<<2|enc2>>4;chr2=(enc2&15)<<4|enc3>>2;chr3=(enc3&3)<<6|enc4;output=output+String.fromCharCode(chr1);if(enc3!==64){output=output+String.fromCharCode(chr2)}if(enc4!==64){output=output+String.fromCharCode(chr3)}}while(i0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();preMain();readyPromiseResolve(Module);if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();if(shouldRunNow)callMain(args);postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}Module["run"]=run;function exit(status,implicit){EXITSTATUS=status;if(keepRuntimeAlive()){}else{exitRuntime();if(Module["onExit"])Module["onExit"](status);ABORT=true}quit_(status,new ExitStatus(status))}if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}var shouldRunNow=true;if(Module["noInitialRun"])shouldRunNow=false;run(); + + + return Module.ready +} +); +})(); +if (typeof exports === 'object' && typeof module === 'object') + module.exports = Module; +else if (typeof define === 'function' && define['amd']) + define([], function() { return Module; }); +else if (typeof exports === 'object') + exports["Module"] = Module; diff --git a/resources/hdlParser/index.d.ts b/resources/hdlParser/index.d.ts index 7410836..058f7f2 100644 --- a/resources/hdlParser/index.d.ts +++ b/resources/hdlParser/index.d.ts @@ -12,10 +12,7 @@ interface Fast { } interface All { - content: { - error: string[] - symbols: RawSymbol[] - } + content: RawSymbol[] languageId: HdlLangID macro: Macro } diff --git a/snippets/svlog.json b/snippets/svlog.json index 085fc56..04947e9 100644 --- a/snippets/svlog.json +++ b/snippets/svlog.json @@ -546,7 +546,7 @@ }, "include": { - "prefix": "inc", + "prefix": "include", "body": [ "`include \"$1\"" ], @@ -554,9 +554,9 @@ }, "define": { - "prefix": "def", + "prefix": "define", "body": [ - "`def $1 = $2" + "`define $1 $2" ], "description": "`define var = val" }, @@ -902,5 +902,23 @@ "}", "*/" ] + }, + "dumpfile": { + "prefix": "$dumpfile", + "body": [ + "\\$dumpfile(\"$1\");" + ] + }, + "dumpvars": { + "prefix": "$dumpvars", + "body": [ + "\\$dumpvars;" + ] + }, + "finish": { + "prefix": "$finish", + "body": [ + "\\$finish;" + ] } } \ No newline at end of file diff --git a/src/extension.ts b/src/extension.ts index cba6f8d..ee455af 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -3,16 +3,18 @@ import * as vscode from 'vscode'; import { opeParam, MainOutput, ReportType } from './global'; import { hdlParam } from './hdlParser'; import { prjManage, registerManagerCommands } from './manager'; -import { registerFunctionCommands } from './function'; +import { registerFunctionCommands, registerLsp } from './function'; async function registerCommand(context: vscode.ExtensionContext) { registerFunctionCommands(context); registerManagerCommands(context); + registerLsp(context); } async function launch(context: vscode.ExtensionContext) { await prjManage.initialise(context); await registerCommand(context); + MainOutput.report('Digital-IDE has launched, Version: 0.3.0'); MainOutput.report('OS: ' + opeParam.os); diff --git a/src/function/index.ts b/src/function/index.ts index f351b83..73622a9 100644 --- a/src/function/index.ts +++ b/src/function/index.ts @@ -4,13 +4,18 @@ import * as hdlDoc from './hdlDoc'; import * as sim from './sim'; import * as treeView from './treeView'; +import * as lspCompletion from './lsp/completion'; +import * as lspDocSymbol from './lsp/docSymbol'; +import * as lspDefinition from './lsp/definition'; +import * as lspHover from './lsp/hover'; +import * as lspFormatter from '../../resources/formatter'; + function registerDocumentation(context: vscode.ExtensionContext) { vscode.commands.registerCommand('digital-ide.hdlDoc.showWebview', hdlDoc.showDocWebview); hdlDoc.registerFileDocExport(context); hdlDoc.registerProjectDocExport(context); } - function registerSimulation(context: vscode.ExtensionContext) { vscode.commands.registerCommand('digital-ide.tool.instance', sim.instantiation); vscode.commands.registerCommand('digital-ide.tool.testbench', sim.testbench); @@ -42,6 +47,29 @@ function registerTreeView(context: vscode.ExtensionContext) { } +function registerLsp(context: vscode.ExtensionContext) { + const vlogSelector: vscode.DocumentSelector = {scheme: 'file', language: 'verilog'}; + const svlogSelector: vscode.DocumentSelector = {scheme: 'file', language: 'systemverilog'}; + const vhdlSelector: vscode.DocumentSelector = {scheme: 'file', language: 'vhdl'}; + + // formatter + vscode.languages.registerDocumentFormattingEditProvider(vlogSelector, lspFormatter.hdlFormatterProvider); + vscode.languages.registerDocumentFormattingEditProvider(vhdlSelector, lspFormatter.hdlFormatterProvider); + vscode.languages.registerDocumentFormattingEditProvider(svlogSelector, lspFormatter.hdlFormatterProvider); + + // verilog lsp + vscode.languages.registerDocumentSymbolProvider(vlogSelector, lspDocSymbol.vlogDocSymbolProvider); + vscode.languages.registerDefinitionProvider(vlogSelector, lspDefinition.vlogDefinitionProvider); + vscode.languages.registerHoverProvider(vlogSelector, lspHover.vlogHoverProvider); + vscode.languages.registerCompletionItemProvider(vlogSelector, lspCompletion.vlogIncludeCompletionProvider, '/', '"'); + vscode.languages.registerCompletionItemProvider(vlogSelector, lspCompletion.vlogMacroCompletionProvider, '`'); + vscode.languages.registerCompletionItemProvider(vlogSelector, lspCompletion.vlogPositionPortProvider, '.'); + vscode.languages.registerCompletionItemProvider(vlogSelector, lspCompletion.vlogCompletionProvider); + // vhdl lsp + +} + export { - registerFunctionCommands + registerFunctionCommands, + registerLsp }; \ No newline at end of file diff --git a/src/function/lsp/completion/index.ts b/src/function/lsp/completion/index.ts new file mode 100644 index 0000000..5a16895 --- /dev/null +++ b/src/function/lsp/completion/index.ts @@ -0,0 +1,8 @@ +import { vlogCompletionProvider, vlogIncludeCompletionProvider, vlogMacroCompletionProvider, vlogPositionPortProvider } from './vlog'; + +export { + vlogCompletionProvider, + vlogIncludeCompletionProvider, + vlogMacroCompletionProvider, + vlogPositionPortProvider +}; \ No newline at end of file diff --git a/src/function/lsp/completion/vlog.ts b/src/function/lsp/completion/vlog.ts new file mode 100644 index 0000000..6331b70 --- /dev/null +++ b/src/function/lsp/completion/vlog.ts @@ -0,0 +1,303 @@ +import * as vscode from 'vscode'; +import * as fs from 'fs'; + +import * as util from '../util'; +import { hdlFile, hdlPath } from '../../../hdlFs'; +import { hdlParam, HdlSymbol } from '../../../hdlParser'; +import { AbsPath, MainOutput, ReportType } from '../../../global'; +import { Define, Include, RawSymbol } from '../../../hdlParser/common'; +import { HdlInstance, HdlModule } from '../../../hdlParser/core'; +import { vlogKeyword } from '../util/keyword'; + +class VlogIncludeCompletionProvider implements vscode.CompletionItemProvider { + public provideCompletionItems(document: vscode.TextDocument, position: vscode.Position, token: vscode.CancellationToken, context: vscode.CompletionContext): vscode.ProviderResult> { + try { + const items = this.provideIncludeFiles(document, position); + return items; + } catch (err) { + console.log(err); + } + } + + private provideIncludeFiles(document: vscode.TextDocument, position: vscode.Position): vscode.CompletionItem[] { + if (position.character === 0) { + return []; + } + const filePath = hdlPath.toSlash(document.fileName); + const lineText = document.lineAt(position).text; + + let firstQIndex = lineText.lastIndexOf('"', position.character - 1); + let lastQIndex = lineText.indexOf('"', position.character); + + if (firstQIndex !== -1 && lastQIndex !== -1) { + const currentPath = lineText.substring(firstQIndex + 1, lastQIndex); + const folderName = currentPath.length === 0 ? '.' : currentPath; + const folderAbsPath = hdlPath.rel2abs(filePath, folderName); + return this.filterIncludeFiles(folderAbsPath, filePath); + } + + return []; + } + + private filterIncludeFiles(folderPath: AbsPath, currentPath: AbsPath) { + if (fs.existsSync(folderPath)) { + const suggestFiles = []; + for (const fileName of fs.readdirSync(folderPath)) { + const filePath = hdlPath.join(folderPath, fileName); + if (filePath === currentPath) { + continue; + } + + const stat = fs.statSync(filePath); + const clItem = new vscode.CompletionItem(fileName); + if (stat.isDirectory()) { + clItem.kind = vscode.CompletionItemKind.Folder; + } else if (stat.isFile()) { + clItem.kind = vscode.CompletionItemKind.File; + } + suggestFiles.push(clItem); + } + return suggestFiles; + } + return []; + } +}; + + +class VlogMacroCompletionProvider implements vscode.CompletionItemProvider { + public async provideCompletionItems(document: vscode.TextDocument, position: vscode.Position, token: vscode.CancellationToken, context: vscode.CompletionContext): Promise | null | undefined> { + try { + const targetWordRange = document.getWordRangeAtPosition(position, /[`_0-9a-zA-Z]+/); + const targetWord = document.getText(targetWordRange); + const filePath = document.fileName; + const symbolResult = await HdlSymbol.all(filePath); + if (!symbolResult) { + return null; + } + + const items = this.provideMacros(targetWord, symbolResult.macro.defines); + return items; + } catch (err) { + console.log(err); + } + } + + private provideMacros(targetWord: string, defines: Define[]): vscode.CompletionItem[] { + const suggestMacros: vscode.CompletionItem[] = []; + if (!defines || defines.length === 0) { + return suggestMacros; + } + for (const define of defines) { + const name = '`' + define.name; + const clItem = new vscode.CompletionItem(name, vscode.CompletionItemKind.Constant); + clItem.detail = 'macro ' + define.replacement; + clItem.insertText = targetWord.startsWith('`') ? define.name : name; + suggestMacros.push(clItem); + } + return suggestMacros; + } +} + + +class VlogPositionPortProvider implements vscode.CompletionItemProvider { + public async provideCompletionItems(document: vscode.TextDocument, position: vscode.Position, token: vscode.CancellationToken, context: vscode.CompletionContext): Promise | null | undefined> { + try { + const suggestPositionPorts: vscode.CompletionItem[] = []; + const filePath = hdlPath.toSlash(document.fileName); + const symbolResult = await HdlSymbol.all(filePath); + if (!symbolResult) { + return null; + } + + const scopeSymbols = util.filterSymbolScope(position, symbolResult.content); + if (!scopeSymbols || + !scopeSymbols.module || + !scopeSymbols.symbols || + !hdlParam.hasHdlModule(filePath, scopeSymbols.module.name)) { + return suggestPositionPorts; + } + + const currentModule = hdlParam.getHdlModule(filePath, scopeSymbols.module.name); + if (!currentModule) { + return; + } + + const currentInst = util.filterInstanceByPosition(position, scopeSymbols.symbols, currentModule); + // find instance and instMod is not null (solve the dependence already) + + if (currentInst && currentInst.module && currentInst.instModPath) { + const portsparams = this.providePositionPorts(position, currentInst); + suggestPositionPorts.push(...portsparams); + } + + return suggestPositionPorts; + + } catch (err) { + console.log(err); + } + } + + private providePositionPorts(position: vscode.Position, currentInst: HdlInstance): vscode.CompletionItem[] { + if (!currentInst.module) { + return []; + } + + const params = currentInst.instparams; + const ports = currentInst.instports; + + if (params && + util.positionAfterEqual(position, params.start) && + util.positionAfterEqual(params.end, position)) { + + return currentInst.module.params.map(param => { + const clItem = new vscode.CompletionItem(param.name, vscode.CompletionItemKind.Constant); + clItem.detail = 'param'; + return clItem; + }); + } + if (ports && + util.positionAfterEqual(position, ports.start) && + util.positionAfterEqual(ports.end, position)) { + + return currentInst.module.ports.map(port => { + const clItem = new vscode.CompletionItem(port.name, vscode.CompletionItemKind.Interface); + clItem.detail = 'port'; + return clItem; + }); + } + + return []; + } +} + +class VlogCompletionProvider implements vscode.CompletionItemProvider { + public async provideCompletionItems(document: vscode.TextDocument, position: vscode.Position, token: vscode.CancellationToken, context: vscode.CompletionContext): Promise | null | undefined> { + try { + const filePath = hdlPath.toSlash(document.fileName); + + // 1. provide keyword + const completions = this.getKeyWordItem(); + + const symbolResult = await HdlSymbol.all(filePath); + if (!symbolResult) { + return completions; + } + + // locate at one module + const scopeSymbols = util.filterSymbolScope(position, symbolResult.content); + if (!scopeSymbols || + !scopeSymbols.module || + !hdlParam.hasHdlModule(filePath, scopeSymbols.module.name)) { + // MainOutput.report('Fail to get HdlModule ' + filePath + ' ' + scopeSymbols?.module.name, ReportType.Debug); + return completions; + } + + // find wrapper module + const currentModule = hdlParam.getHdlModule(filePath, scopeSymbols.module.name); + if (!currentModule) { + return completions; + } + + // 3. provide modules + const suggestModulesPromise = this.provideModules(filePath, symbolResult.macro.includes); + + // 4. provide params and ports of wrapper module + const suggestParamsPortsPromise = this.provideParamsPorts(currentModule); + + // 5. provide nets + const suggestNetsPromise = this.provideNets(scopeSymbols.symbols); + + // collect + completions.push(...await suggestModulesPromise); + completions.push(...await suggestParamsPortsPromise); + completions.push(...await suggestNetsPromise); + + return completions; + + } catch (err) { + console.log(err); + } + } + + private getKeyWordItem(): vscode.CompletionItem[] { + const vlogKeywordItem = []; + for (const keyword of vlogKeyword.keys()) { + const clItem = this.makekeywordCompletionItem(keyword); + vlogKeywordItem.push(clItem); + } + + return vlogKeywordItem; + } + + private makekeywordCompletionItem(keyword: string): vscode.CompletionItem { + const clItem = new vscode.CompletionItem(keyword, vscode.CompletionItemKind.Keyword); + clItem.detail = 'keyword'; + + switch (keyword) { + case 'begin': clItem.insertText = new vscode.SnippetString("begin$1end"); break; + default: break; + } + return clItem; + } + + private async provideModules(filePath: AbsPath, includes: Include[]): Promise { + const suggestModules: vscode.CompletionItem[] = []; + + // TODO : add `include xxx automatically + for (const module of hdlParam.getAllHdlModules()) { + const clItem = new vscode.CompletionItem(module.name, vscode.CompletionItemKind.Class); + clItem.detail = 'module'; + suggestModules.push(clItem); + } + + return suggestModules; + } + + private async provideParamsPorts(module: HdlModule): Promise { + if (!module) { + return []; + } + const suggestParamsPorts = []; + for (const param of module.params) { + const clItem = new vscode.CompletionItem(param.name, vscode.CompletionItemKind.Constant); + clItem.detail = 'param'; + suggestParamsPorts.push(clItem); + } + + for (const port of module.ports) { + const clItem = new vscode.CompletionItem(port.name, vscode.CompletionItemKind.Interface); + clItem.detail = 'port'; + suggestParamsPorts.push(clItem); + } + + return suggestParamsPorts; + } + + private async provideNets(symbols: RawSymbol[]): Promise { + if (!symbols) { + return []; + } + const suggestNets = []; + for (const symbol of symbols) { + if (symbol.type === 'wire' || symbol.type === 'reg') { + const clItem = new vscode.CompletionItem(symbol.name, vscode.CompletionItemKind.Variable); + clItem.detail = symbol.type; + suggestNets.push(clItem); + } + } + return suggestNets; + } +}; + + +const vlogCompletionProvider = new VlogCompletionProvider(); +const vlogIncludeCompletionProvider = new VlogIncludeCompletionProvider(); +const vlogMacroCompletionProvider = new VlogMacroCompletionProvider(); +const vlogPositionPortProvider = new VlogPositionPortProvider(); + +export { + vlogCompletionProvider, + vlogIncludeCompletionProvider, + vlogMacroCompletionProvider, + vlogPositionPortProvider +}; \ No newline at end of file diff --git a/src/function/lsp/definition/index.ts b/src/function/lsp/definition/index.ts new file mode 100644 index 0000000..22b93a1 --- /dev/null +++ b/src/function/lsp/definition/index.ts @@ -0,0 +1,5 @@ +import { vlogDefinitionProvider } from './vlog'; + +export { + vlogDefinitionProvider +}; \ No newline at end of file diff --git a/src/function/lsp/definition/vlog.ts b/src/function/lsp/definition/vlog.ts new file mode 100644 index 0000000..fb31d5c --- /dev/null +++ b/src/function/lsp/definition/vlog.ts @@ -0,0 +1,161 @@ +import * as vscode from 'vscode'; +import * as vsctm from 'vscode-textmate'; + +import { hdlPath } from '../../../hdlFs'; +import { hdlParam, HdlSymbol } from '../../../hdlParser'; +import { All } from '../../../../resources/hdlParser'; +import { vlogKeyword } from '../util/keyword'; +import * as util from '../util'; +import { MainOutput, ReportType } from '../../../global'; + + +class VlogDefinitionProvider implements vscode.DefinitionProvider { + + public async provideDefinition(document: vscode.TextDocument, position: vscode.Position, token: vscode.CancellationToken): Promise { + // get current words + const wordRange = document.getWordRangeAtPosition(position, /[`_0-9A-Za-z]+/); + if (!wordRange) { + return null; + } + const targetWord = document.getText(wordRange); + + // check if need skip + if (this.needSkip(document, position, targetWord)) { + return null; + } + + const filePath = document.fileName; + const vlogAll = await HdlSymbol.all(filePath); + if (!vlogAll) { + return null; + } else { + const location = await this.makeDefinition(document, position, vlogAll, targetWord, wordRange); + return location; + } + } + + private needSkip(document: vscode.TextDocument, position: vscode.Position, targetWord: string): boolean { + // check keyword + if (vlogKeyword.isKeyword(targetWord)) { + return true; + } + + // TODO: check comment + + + return false; + } + + private async makeDefinition(document: vscode.TextDocument, position: vscode.Position, all: All, targetWord: string, targetWordRange: vscode.Range): Promise { + const filePath = hdlPath.toSlash(document.fileName); + const lineText = document.lineAt(position).text; + + // match `include + const includeResult = util.matchInclude(document, position, all.macro.includes); + if (includeResult) { + const absPath = hdlPath.rel2abs(filePath, includeResult.name); + const targetFile = vscode.Uri.file(absPath); + const targetPosition = new vscode.Position(0, 0); + const targetRange = new vscode.Range(targetPosition, targetPosition); + const originSelectionRange = document.getWordRangeAtPosition(position, /[\."_0-9a-zA-Z]+/); + const link: vscode.LocationLink = { targetUri: targetFile, targetRange, originSelectionRange }; + return [link]; + } + + + // match macro + const macroResult = util.matchDefineMacro(position, targetWord, all.macro.defines); + if (macroResult) { + const targetRange = util.transformRange(macroResult.range, -1, -1); + const link: vscode.LocationLink = { targetUri: document.uri, targetRange: targetRange, originSelectionRange: targetWordRange }; + return [link]; + } + + // locate at one module + const scopeSymbols = util.filterSymbolScope(position, all.content); + if (!scopeSymbols || !scopeSymbols.module) { + return null; + } + const currentModule = hdlParam.getHdlModule(filePath, scopeSymbols.module.name); + if (!currentModule) { + MainOutput.report('Fail to get HdlModule ' + filePath + ' ' + scopeSymbols.module.name, ReportType.Debug); + return null; + } + + // match instance + const instResult = util.matchInstance(targetWord, currentModule); + if (instResult) { + const instModule = instResult.module; + if (!instModule || !instResult.instModPath) { + return null; + } + const targetFile = vscode.Uri.file(instResult.instModPath); + const targetRange = util.transformRange(instModule.range, -1, 0, 1); + const link: vscode.LocationLink = { targetUri: targetFile, targetRange }; + return [link]; + } + + // match port or param definition (position input) + if (util.isPositionInput(lineText, position.character)) { + const currentInstResult = util.filterInstanceByPosition(position, scopeSymbols.symbols, currentModule); + if (!currentInstResult || !currentInstResult.instModPath) { + return null; + } + const instParamPromise = util.getInstParamByPosition(currentInstResult, position, targetWord); + const instPortPromise = util.getInstPortByPosition(currentInstResult, position, targetWord); + + const instParam = await instParamPromise; + const instPort = await instPortPromise; + const instModPathUri = vscode.Uri.file(currentInstResult.instModPath); + + if (instParam) { + const targetRange = util.transformRange(instParam.range, -1, 0); + const link: vscode.LocationLink = { targetUri: instModPathUri, targetRange }; + return [link]; + } + if (instPort) { + const targetRange = util.transformRange(instPort.range, -1, 0); + const link: vscode.LocationLink = { targetUri: instModPathUri, targetRange }; + return [link]; + } + } + + + // match params + const paramResult = util.matchParams(targetWord, currentModule); + + if (paramResult) { + const targetRange = util.transformRange(paramResult.range, -1, 0); + const link: vscode.LocationLink = { targetUri: document.uri, targetRange }; + return [link]; + } + + // match ports + const portResult = util.matchPorts(targetWord, currentModule); + + if (portResult) { + const targetRange = util.transformRange(portResult.range, -1, 0); + const link: vscode.LocationLink = { targetUri: document.uri, targetRange }; + return [link]; + } + + // match others + const normalResult = util.matchNormalSymbol(targetWord, scopeSymbols.symbols); + if (normalResult) { + const targetRange = util.transformRange(normalResult.range, -1, 0); + + console.log(targetRange, normalResult); + + const link: vscode.LocationLink = { targetUri: document.uri, targetRange }; + return [link]; + } + + return null; + } +} + +const vlogDefinitionProvider = new VlogDefinitionProvider(); + +export { + vlogDefinitionProvider +}; \ No newline at end of file diff --git a/src/function/lsp/docSymbol/index.ts b/src/function/lsp/docSymbol/index.ts index e69de29..a198547 100644 --- a/src/function/lsp/docSymbol/index.ts +++ b/src/function/lsp/docSymbol/index.ts @@ -0,0 +1,6 @@ +import { vlogDocSymbolProvider } from './vlog'; + + +export { + vlogDocSymbolProvider +}; \ No newline at end of file diff --git a/src/function/lsp/docSymbol/vlog.ts b/src/function/lsp/docSymbol/vlog.ts index 2c176d2..3749d1d 100644 --- a/src/function/lsp/docSymbol/vlog.ts +++ b/src/function/lsp/docSymbol/vlog.ts @@ -1,37 +1,36 @@ import * as vscode from 'vscode'; +import { AllowNull } from '../../../global'; import { HdlSymbol } from '../../../hdlParser'; +import { RawSymbol, makeVscodePosition, Range } from '../../../hdlParser/common'; + +import { positionAfterEqual } from '../util'; + +interface DocSymbolContainer { + docSymbol: AllowNull, + range: AllowNull +}; class VlogDocSymbolProvider implements vscode.DocumentSymbolProvider { - - public provideDocumentSymbols(document: vscode.TextDocument, token: vscode.CancellationToken): vscode.ProviderResult { - const code = document.getText(); - const symbolResult = HdlSymbol.all(code); - const symbols = symbolResult.symbols; - - if (!symbols) { + public async provideDocumentSymbols(document: vscode.TextDocument, token: vscode.CancellationToken): Promise { + const path = document.fileName; + const vlogAll = await HdlSymbol.all(path); + + if (!vlogAll || !vlogAll.content) { return []; - } - try { - const symbolInfos = this.makeSymbolInfos(document, symbols); + } else { + const symbols = vlogAll.content; + const symbolInfos = this.makeDocumentSymbols(document, symbols); return symbolInfos; - } catch (err) { - console.log(err); - return []; - } + } } - /** - * - * @param {vscode.TextDocument} document - * @param {Array} symbols - * @returns {Array} - */ - makeSymbolInfos(document: vscode.TextDocument, symbols: SymbolResult[]) { - let docSymbols = []; + + private makeDocumentSymbols(document: vscode.TextDocument, symbols: RawSymbol[]): vscode.DocumentSymbol[] { + const docSymbols = []; const visitedSymbols = new Set(); const moduleSymbols = symbols.filter(symbol => { - if (symbol.type == 'module') { + if (symbol.type === 'module') { visitedSymbols.add(symbol); return true; } @@ -41,38 +40,43 @@ class VlogDocSymbolProvider implements vscode.DocumentSymbolProvider { for (const moduleSymbol of moduleSymbols) { const moduleName = moduleSymbol.name; const moduleKind = this.getSymbolKind(moduleSymbol.type); - const moduleRange = new vscode.Range(moduleSymbol.start, moduleSymbol.end); + const moduleStart = new vscode.Position(moduleSymbol.range.start.line - 1, moduleSymbol.range.start.character); + const moduleEnd = new vscode.Position(moduleSymbol.range.end.line - 1, moduleSymbol.range.start.character); + const moduleRange = new vscode.Range(moduleStart, moduleEnd); const moduleDocSymbol = new vscode.DocumentSymbol(moduleName, moduleName, moduleKind, moduleRange, moduleRange); docSymbols.push(moduleDocSymbol); - let paramContainer = { + const paramContainer: DocSymbolContainer = { docSymbol: null, range: null }; - let portContainer = { + const portContainer: DocSymbolContainer = { docSymbol: null, range: null }; + const portTypes = ['input', 'inout', 'output']; // make others in module inner for (const symbol of symbols) { if (visitedSymbols.has(symbol)) { continue; } - if (!(positionAfterEqual(symbol.start, moduleSymbol.start) && - positionAfterEqual(moduleSymbol.end, symbol.end))) { + if (!(positionAfterEqual(symbol.range.start, moduleSymbol.range.start) && + positionAfterEqual(moduleSymbol.range.end, symbol.range.end))) { continue; } if (!symbol.name) { symbol.name = '???'; } visitedSymbols.add(symbol); - const symbolRange = new vscode.Range(symbol.start, symbol.end); + const symbolStart = new vscode.Position(symbol.range.start.line - 1, symbol.range.start.character); + const symbolEnd = new vscode.Position(symbol.range.end.line - 1, symbol.range.end.character); + const symbolRange = new vscode.Range(symbolStart, symbolEnd); - if (symbol.type == 'parameter') { + if (symbol.type === 'parameter') { if (!paramContainer.range) { paramContainer.range = symbolRange; paramContainer.docSymbol = new vscode.DocumentSymbol('param', @@ -87,9 +91,9 @@ class VlogDocSymbolProvider implements vscode.DocumentSymbolProvider { vscode.SymbolKind.Constant, symbolRange, symbolRange); - paramContainer.docSymbol.children.push(paramDocSymbol); + paramContainer.docSymbol?.children.push(paramDocSymbol); - } else if (['input', 'inout', 'output'].includes(symbol.type)) { + } else if (portTypes.includes(symbol.type)) { if (!portContainer.range) { portContainer.range = symbolRange; portContainer.docSymbol = new vscode.DocumentSymbol('port', @@ -105,7 +109,7 @@ class VlogDocSymbolProvider implements vscode.DocumentSymbolProvider { vscode.SymbolKind.Interface, symbolRange, symbolRange); - portContainer.docSymbol.children.push(portDocSymbol); + portContainer.docSymbol?.children.push(portDocSymbol); } else { const symbolKind = this.getSymbolKind(symbol.type); const symbolDocSymbol = new vscode.DocumentSymbol(symbol.name, @@ -122,8 +126,8 @@ class VlogDocSymbolProvider implements vscode.DocumentSymbolProvider { } - getSymbolKind(name) { - if (name.indexOf('[') != -1) { + getSymbolKind(name: string): vscode.SymbolKind { + if (name.indexOf('[') !== -1) { return vscode.SymbolKind.Array; } switch (name) { @@ -176,12 +180,11 @@ class VlogDocSymbolProvider implements vscode.DocumentSymbolProvider { case 'bit': return vscode.SymbolKind.Boolean; default: return vscode.SymbolKind.Event; } - /* Unused/Free SymbolKind icons - return SymbolKind.Number; - return SymbolKind.Enum; - return SymbolKind.EnumMember; - return SymbolKind.Operator; - return SymbolKind.Array; - */ } } + +const vlogDocSymbolProvider = new VlogDocSymbolProvider(); + +export { + vlogDocSymbolProvider +}; \ No newline at end of file diff --git a/src/function/lsp/hover/index.ts b/src/function/lsp/hover/index.ts new file mode 100644 index 0000000..330d017 --- /dev/null +++ b/src/function/lsp/hover/index.ts @@ -0,0 +1,5 @@ +import { vlogHoverProvider } from './vlog'; + +export { + vlogHoverProvider +}; \ No newline at end of file diff --git a/src/function/lsp/hover/vlog.ts b/src/function/lsp/hover/vlog.ts new file mode 100644 index 0000000..aedc71d --- /dev/null +++ b/src/function/lsp/hover/vlog.ts @@ -0,0 +1,193 @@ +import * as vscode from 'vscode'; + +import { hdlDir, hdlPath } from '../../../hdlFs'; +import { hdlParam, HdlSymbol } from '../../../hdlParser'; +import { All } from '../../../../resources/hdlParser'; +import { vlogKeyword } from '../util/keyword'; +import * as util from '../util'; +import { MainOutput, ReportType } from '../../../global'; +import { HdlLangID } from '../../../global/enum'; + + +class VlogHoverProvider implements vscode.HoverProvider { + public async provideHover(document: vscode.TextDocument, position: vscode.Position, token: vscode.CancellationToken): Promise { + // get current words + const wordRange = document.getWordRangeAtPosition(position, /[`_0-9A-Za-z]+/); + if (!wordRange) { + return null; + } + const targetWord = document.getText(wordRange); + + // check if need skip + if (this.needSkip(document, position, targetWord)) { + return null; + } + + const filePath = document.fileName; + const vlogAll = await HdlSymbol.all(filePath); + if (!vlogAll) { + return null; + } else { + const hover = await this.makeHover(document, position, vlogAll, targetWord, wordRange); + return hover; + } + } + + private needSkip(document: vscode.TextDocument, position: vscode.Position, targetWord: string): boolean { + // check keyword + if (vlogKeyword.isKeyword(targetWord)) { + return true; + } + + // TODO: check comment + + + return false; + } + + private async makeHover(document: vscode.TextDocument, position: vscode.Position, all: All, targetWord: string, targetWordRange: vscode.Range): Promise { + const lineText = document.lineAt(position).text; + const filePath = hdlPath.toSlash(document.fileName); + + // total content rendered on the hover box + const content = new vscode.MarkdownString('', true); + + // match `include + const includeResult = util.matchInclude(document, position, all.macro.includes); + if (includeResult) { + const absPath = hdlPath.rel2abs(filePath, includeResult.name); + content.appendCodeblock(`"${absPath}"`, HdlLangID.Verilog); + const targetRange = document.getWordRangeAtPosition(position, /[1-9a-zA-Z_\.]+/); + return new vscode.Hover(content, targetRange); + } else if (lineText.trim().startsWith('`include')) { + return null; + } + + // match macro + const macroResult = util.matchDefineMacro(position, targetWord, all.macro.defines); + if (macroResult) { + const name = macroResult.name; + const value = macroResult.value; + content.appendCodeblock(`\`define ${name} ${value}`, HdlLangID.Verilog); + return new vscode.Hover(content, targetWordRange); + } + + // locate at one module + const scopeSymbols = util.filterSymbolScope(position, all.content); + if (!scopeSymbols || !scopeSymbols.module || !hdlParam.hasHdlModule(filePath, scopeSymbols.module.name)) { + return null; + } + const currentModule = hdlParam.getHdlModule(filePath, scopeSymbols.module.name); + if (!currentModule) { + MainOutput.report('Fail to get HdlModule ' + filePath + ' ' + scopeSymbols.module.name, ReportType.Debug); + return null; + } + + // match instance + const instResult = util.matchInstance(targetWord, currentModule); + if (instResult) { + const instModule = instResult.module; + if (!instModule || !instResult.instModPath) { + content.appendMarkdown('cannot find the definition of the module'); + return new vscode.Hover(content); + } + await util.makeVlogHoverContent(content, instModule); + return new vscode.Hover(content); + } + + + // match port or param definition (position input) + if (util.isPositionInput(lineText, position.character)) { + const currentInstResult = util.filterInstanceByPosition(position, scopeSymbols.symbols, currentModule); + if (!currentInstResult || !currentInstResult.instModPath) { + return null; + } + + const instParamPromise = util.getInstParamByPosition(currentInstResult, position, targetWord); + const instPortPromise = util.getInstPortByPosition(currentInstResult, position, targetWord); + + const instParam = await instParamPromise; + const instPort = await instPortPromise; + + if (instParam) { + const paramComment = await util.searchCommentAround(currentInstResult.instModPath, instParam.range); + const paramDesc = util.makeParamDesc(instParam); + content.appendCodeblock(paramDesc, HdlLangID.Verilog); + if (paramComment) { + content.appendCodeblock(paramComment, HdlLangID.Verilog); + } + return new vscode.Hover(content); + } + if (instPort) { + const portComment = await util.searchCommentAround(currentInstResult.instModPath, instPort.range); + const portDesc = util.makePortDesc(instPort); + content.appendCodeblock(portDesc, HdlLangID.Verilog); + if (portComment) { + content.appendCodeblock(portComment, HdlLangID.Verilog); + } + return new vscode.Hover(content); + } + } + + + // match params + const paramResult = util.matchParams(targetWord, currentModule); + if (paramResult) { + const paramComment = await util.searchCommentAround(filePath, paramResult.range); + const paramDesc = util.makeParamDesc(paramResult); + content.appendCodeblock(paramDesc, HdlLangID.Verilog); + if (paramComment) { + content.appendCodeblock(paramComment, HdlLangID.Verilog); + } + return new vscode.Hover(content); + } + + // match ports + const portResult = util.matchPorts(targetWord, currentModule); + if (portResult) { + const portComment = await util.searchCommentAround(filePath, portResult.range); + const portDesc = util.makePortDesc(portResult); + content.appendCodeblock(portDesc, HdlLangID.Verilog); + if (portComment) { + content.appendCodeblock(portComment, HdlLangID.Verilog); + } + return new vscode.Hover(content); + } + + // match others + const normalResult = util.matchNormalSymbol(targetWord, scopeSymbols.symbols); + if (normalResult) { + const normalComment = await util.searchCommentAround(filePath, normalResult.range); + const normalDesc = util.makeNormalDesc(normalResult); + + console.log(normalResult); + + + content.appendCodeblock(normalDesc, HdlLangID.Verilog); + if (normalComment) { + content.appendCodeblock(normalComment, HdlLangID.Verilog); + } + return new vscode.Hover(content); + } + + + // feature 1. number signed and unsigned number display + const numberResult = util.transferVlogNumber(lineText, position.character); + if (numberResult) { + const bits = targetWord.length - 1; + content.appendCodeblock(bits + "'" + targetWord, HdlLangID.Verilog); + content.appendMarkdown("`unsigned` " + numberResult.unsigned); + content.appendText('\n'); + content.appendMarkdown("`signed` " + numberResult.signed); + } + + return new vscode.Hover(content); + } +} + + +const vlogHoverProvider = new VlogHoverProvider(); + +export { + vlogHoverProvider +}; \ No newline at end of file diff --git a/src/function/lsp/util/completion.js b/src/function/lsp/util/completion.js deleted file mode 100644 index 8d20abd..0000000 --- a/src/function/lsp/util/completion.js +++ /dev/null @@ -1,203 +0,0 @@ -const vscode = require('vscode'); -const fs = require('fs'); -const path = require('path'); - -const HDLPath = require('../../../HDLfilesys/operation/path'); -const { HDLParam, Module, SymbolResult, Instance } = require('../../../HDLparser'); -const { positionAfterEqual } = require('./index'); - -/** - * @param {string} folderPath - * @param {string} currentPath - * @returns {Array} - */ -function filterIncludeFiles(folderPath, currentPath) { - if (fs.existsSync(folderPath)) { - const suggestFiles = []; - for (const fileName of fs.readdirSync(folderPath)) { - const filePath = HDLPath.join(folderPath, fileName); - if (filePath === currentPath) { - continue; - } - - const stat = fs.statSync(filePath); - const clItem = new vscode.CompletionItem(fileName); - if (stat.isDirectory()) { - clItem.kind = vscode.CompletionItemKind.Folder; - } else if (stat.isFile()) { - clItem.kind = vscode.CompletionItemKind.File; - } - suggestFiles.push(clItem); - } - return suggestFiles; - } - return []; -} - -/** - * @param {vscode.TextDocument} document - * @param {vscode.Position} position - * @returns {Array} - */ -function provideIncludeFiles(document, position) { - if (position.character == 0) { - return []; - } - const filePath = HDLPath.toSlash(document.fileName); - const lineText = document.lineAt(position).text; - - let firstQIndex = lineText.lastIndexOf('"', position.character - 1); - let lastQIndex = lineText.indexOf('"', position.character); - - if (firstQIndex != -1 && lastQIndex != -1) { - const currentPath = lineText.substring(firstQIndex + 1, lastQIndex); - const folderName = currentPath.length == 0 ? '.' : currentPath; - const folderAbsPath = HDLPath.rel2abs(filePath, folderName); - return filterIncludeFiles(folderAbsPath, filePath); - } - - return []; -} - - -/** - * @param {string} singleWord - * @param {object} defines - * @returns {Promise>} - */ -function provideMacros(singleWord, defines) { - const suggestMacros = []; - if (!defines) { - return suggestMacros; - } - for (const macro of Object.keys(defines)) { - const value = defines[macro].value; - const name = '`' + macro; - const clItem = new vscode.CompletionItem('`' + macro, vscode.CompletionItemKind.Constant) - clItem.detail = 'macro ' + value; - if (singleWord[0] == '`') { - clItem.insertText = macro; - } else { - clItem.insertText = name; - } - - suggestMacros.push(clItem); - } - return suggestMacros; -} - -/** - * @param {vscode.Position} position cursor position - * @param {Instance} currentInst - * @returns {Promise>} - */ -function providePositionPorts(position, currentInst) { - const params = currentInst.instparams; - const ports = currentInst.instports; - console.log(position); - console.log(params); - console.log(ports); - - if (params && - positionAfterEqual(position, params.start) && - positionAfterEqual(params.end, position)) { - - return currentInst.module.params.map(param => { - const clItem = new vscode.CompletionItem(param.name, vscode.CompletionItemKind.Constant); - clItem.detail = 'param'; - return clItem; - }) - } - if (ports && - positionAfterEqual(position, ports.start) && - positionAfterEqual(ports.end, position)) { - - return currentInst.module.ports.map(port => { - const clItem = new vscode.CompletionItem(port.name, vscode.CompletionItemKind.Interface); - clItem.detail = 'port'; - return clItem; - }) - } - - return []; -} - - -/** - * @description provide module of the current module and include module - * @param {string} filePath - * @param {object} includes {path: range} - * @returns {Promise>} - */ -async function provideModules(filePath, includes) { - // support include of all the module - // use command property to auto add include path - const suggestModules = []; - - if (!includes) { - return suggestModules; - } - - for (const module of HDLParam.getAllModules()) { - const clItem = new vscode.CompletionItem(module.name, vscode.CompletionItemKind.Class); - clItem.detail = 'module'; - suggestModules.push(clItem); - } - - return suggestModules; -} - - -/** - * @param {Module} module - * @returns {Promise>} - */ -async function provideParamsPorts(module) { - if (!module) { - return []; - } - const suggestParamsPorts = []; - for (const param of module.params) { - const clItem = new vscode.CompletionItem(param.name, vscode.CompletionItemKind.Constant); - clItem.detail = 'param'; - suggestParamsPorts.push(clItem); - } - - for (const port of module.ports) { - const clItem = new vscode.CompletionItem(port.name, vscode.CompletionItemKind.Interface); - clItem.detail = 'port'; - suggestParamsPorts.push(clItem); - } - - - return suggestParamsPorts; -} - - -/** - * @param {Array} symbols - * @returns {Promise>} - */ -async function provideNets(symbols) { - if (!symbols) { - return []; - } - const suggestNets = []; - for (const symbol of symbols) { - if (symbol.type == 'net') { - const clItem = new vscode.CompletionItem(symbol.name, vscode.CompletionItemKind.Variable); - clItem.detail = 'net'; - suggestNets.push(clItem); - } - } - return suggestNets; -} - -module.exports = { - provideIncludeFiles, - provideMacros, - providePositionPorts, - provideModules, - provideParamsPorts, - provideNets -}; \ No newline at end of file diff --git a/src/function/lsp/util/feature.ts b/src/function/lsp/util/feature.ts index 4a9106c..f828ee8 100644 --- a/src/function/lsp/util/feature.ts +++ b/src/function/lsp/util/feature.ts @@ -126,14 +126,8 @@ function bin2float(bin: string, exp: number, fra: number): number | undefined { } } -async function getFullSymbolInfo(document: vscode.TextDocument, range: Range, nonblank: RegExp, l_comment_symbol: string, l_comment_regExp: RegExp, needDefinition=true) { +async function getFullSymbolInfo(document: vscode.TextDocument, range: Range, nonblank: RegExp, l_comment_symbol: string, l_comment_regExp: RegExp) { const comments = []; - if (needDefinition) { - const startPosition = new vscode.Position(range.start.line, range.start.character); - const endPosition = new vscode.Position(range.end.line, range.end.character); - const definitionString = document.getText(new vscode.Range(startPosition, endPosition)); - comments.push(definitionString); - } let content = ''; let is_b_comment = false; @@ -212,7 +206,13 @@ async function getFullSymbolInfo(document: vscode.TextDocument, range: Range, no } } - return comments.reverse().join(''); + // 清除空前行 + let resultComment = ''; + for (const c of comments.reverse()) { + resultComment += c.trim() + '\n'; + } + + return resultComment; } /** @@ -220,8 +220,8 @@ async function getFullSymbolInfo(document: vscode.TextDocument, range: Range, no * @param path * @param range */ -async function getSymbolComment(path: AbsPath, range: Range) { - let languageId = hdlFile.getLanguageId(path); +async function getSymbolComment(path: AbsPath, range: Range): Promise { + const languageId = hdlFile.getLanguageId(path); const uri = vscode.Uri.file(path); const documentPromise = vscode.workspace.openTextDocument(uri); @@ -229,14 +229,15 @@ async function getSymbolComment(path: AbsPath, range: Range) { const nonblank = /\S+/g; const l_comment = getCommentUtilByLanguageId(languageId); if (l_comment) { - let l_comment_symbol = l_comment.l_comment_symbol; - let l_comment_regExp = l_comment.l_comment_regExp; + const l_comment_symbol = l_comment.l_comment_symbol; + const l_comment_regExp = l_comment.l_comment_regExp; // add definition first const document = await documentPromise; - return await getFullSymbolInfo(document, range, nonblank, l_comment_symbol, l_comment_regExp); + const symbolInfo = await getFullSymbolInfo(document, range, nonblank, l_comment_symbol, l_comment_regExp); + return symbolInfo; } - return; + return null; } /** @@ -263,7 +264,7 @@ async function getSymbolComments(path: string, ranges: Range[]): Promise} - */ -function getVlogKeywordItem() { - const vlogKeywordItem = []; - for (const keyword of vlogKeyword) { - const clItem = new vscode.CompletionItem(keyword, vscode.CompletionItemKind.Keyword); - clItem.detail = "keyword"; - vlogKeywordItem.push(clItem); - } - return vlogKeywordItem; -} - - -/** - * - * @param {string} singleWord - * @returns {boolean} - */ -function isVlogKeyword(singleWord) { - return vlogKeyword.has(singleWord); -} - - -/** - * @description get the last single word in current line - * @param {string} prefixString - * @returns {string} - */ -function getLastSingleWord(prefixString) { - prefixString = prefixString.trim(); - const length = prefixString.length; - if (length == 0) { - return ''; - } - const wordCharacters = []; - let alphaReg = /[`_0-9A-Za-z]/; - for (let i = length - 1; i >= 0; -- i) { - const ch = prefixString[i]; - if (alphaReg.test(ch)) { - wordCharacters.push(ch); - } else { - break; - } - } - return wordCharacters.reverse().join(''); -} - - -/** - * @description get the single word at hover - * @param {string} lineText - * @param {number} character - */ -function getSingleWordAtCurrentPosition(lineText, character) { - let alphaReg = /[`_0-9A-Za-z]/; - if (alphaReg.test(lineText[character])) { - const leftPart = []; - const rightPart = []; - const length = lineText.length; - for (let i = character - 1; i >= 0; -- i) { - const ch = lineText[i]; - if (alphaReg.test(ch)) { - leftPart.push(ch); - } else { - break; - } - } - - for (let i = character + 1; i < length; ++ i) { - const ch = lineText[i]; - if (alphaReg.test(ch)) { - rightPart.push(ch); - } else { - break; - } - } - - const leftWord = leftPart.reverse().join(''); - const rightWord = rightPart.join(''); - return leftWord + lineText[character] + rightWord; - } else { - return ""; - } -} - -/** - * @param {Position} position_a - * @param {Position} position_b - * @returns {boolean} - */ -function positionAfter(position_a, position_b) { - return position_a.line > position_b.line || ( - position_a.line == position_b.line && - position_a.character > position_b.character); -} - - -/** - * @param {Position} position_a - * @param {Position} position_b - * @returns {boolean} - */ -function positionEqual(position_a, position_b) { - return position_a.line == position_b.line && - position_a.character == position_b.character; -} - - -/** - * @description position_a behind or equal to position_b - * @param {Position} position_a - * @param {Position} position_b - * @returns {boolean} - */ -function positionAfterEqual(position_a, position_b) { - return positionAfter(position_a, position_b) || - positionEqual(position_a, position_b); -} - - - -/** - * @description filter the symbol result item that exceed the scope - * @param {vscode.Position} position - * @param {Array} symbolResults - * @returns {{module : SymbolResult, symbols : Array}} - */ -function filterSymbolScope(position, symbolResults) { - if (!symbolResults) { - return null; - } - const parentModules = symbolResults.filter(item => - item.type == 'module' && - positionAfterEqual(position, item.start) && - positionAfterEqual(item.end, position) - ); - - if (parentModules.length == 0) { - // TODO : macro - return null; - } - - const parentModule = parentModules[0]; - const symbols = symbolResults.filter(item => - item != parentModule && - positionAfterEqual(item.start, parentModule.start) && - positionAfterEqual(parentModule.end, item.end)); - - return { - module : parentModule, - symbols : symbols - }; -} - - - -/** - * @param {vscode.TextDocument} document - * @param {Position} position - * @param {Array} comments - */ -function isInComment(document, position, comments) { - if (!comments) { - return false; - } - // remove the situation that // comment - const lineText = document.lineAt(position).text; - const singleCommentIndex = lineText.indexOf('//'); - if (singleCommentIndex != -1) { - return position.character >= singleCommentIndex; - } - - const currentLine = position.line + 1; - for (const comment of comments) { - const commentLine = comment.start.line; - if (commentLine > currentLine) { - continue; - } - const startPosition = new vscode.Position(commentLine, 0); - const startOffset = document.offsetAt(startPosition); - const endPosition = document.positionAt(startOffset + comment.length); - - const originalPosition = new Position(currentLine, position.character); - - if (positionAfterEqual(originalPosition, startPosition) && - positionAfterEqual(endPosition, originalPosition)) { - return true; - } - } - return false; -} - - - -/** - * @param {vscode.Position} position - * @param {object} includes - * @returns {{name: string, start: Position, end: Position}} - */ -function matchInclude(position, includes) { - if (!includes) { - return null; - } - for (const includeString of Object.keys(includes)) { - const range = includes[includeString]; - // TODO : remove - 1 if bug is fixed - range.start.line -= 1; - range.end.line -= 1; - if (positionAfterEqual(position, range.start) && - positionAfterEqual(range.end, position)) { - - return { - name : includeString, - start: range.start, - end: range.end - }; - } - } - return null; -} - - - -/** - * @param {vscode.Position} position - * @param {string} singleWord - * @param {object} defines - * @returns {{name: string, value: any, range: Range}} - */ -function matchDefine(position, defines) { - if (!defines) { - return null; - } - - for (const macro of Object.keys(defines)) { - const range = defines[macro].range; - range.start.line -= 1; - range.end.line -= 1; - if (positionAfterEqual(position, range.start) && - positionAfterEqual(range.end, position)) { - return { - name : macro, - value: defines[macro].value, - range: range - }; - } - } - return null; -} - - - - -/** - * @param {vscode.Position} position - * @param {string} singleWord - * @param {object} defines - * @returns {{name: string, value: any, range: Range}} - */ -function matchDefineMacro(position, singleWord, defines) { - if (!defines) { - return null; - } - if (singleWord[0] != '`' || singleWord.length <= 1) { - return null; - } - const targetMacro = singleWord.substring(1); - for (const macro of Object.keys(defines)) { - if (macro == targetMacro) { - const range = defines[macro].range; - const value = defines[macro].value; - // TODO : remove - 1 if bug is fixed - range.start.line -= 1; - range.end.line -= 1; - return { - name : macro, - value : value, - range : range - }; - } - } - return null; -} - - -/** - * @param {string} singleWord single word to be matched - * @param {Module} module - * @returns {Instance} - */ -function matchInstance(singleWord, module) { - if (!module) { - console.log('warning, cannot locate module', singleWord); - return null; - } - - for (const inst of module.getInstances()) { - if (singleWord == inst.type) { - return inst; - } - } - return null; -} - -/** - * @param {vscode.Position} position current cursor position - * @param {Array} symbols all the symbols in the wrapper module - * @param {Module} module wrapper module - * @param {Instance} - */ -function filterInstanceByPosition(position, symbols, module) { - if (!symbols) { - return null; - } - for (const symbol of symbols) { - const inst = module.findInstance(symbol.name); - if (positionAfterEqual(position, symbol.start) && - positionAfterEqual(symbol.end, position) && - inst) { - return inst; - } - } - return null; -} - - -/** - * @param {Instance} inst - * @param {vscode.Position} position - * @param {string} singleWord - * @returns {Promise} - */ -async function getInstPortByPosition(inst, position, singleWord) { - if (!inst.module || !inst.instports) { - return null; - } - if (positionAfterEqual(position, inst.instports.start) && - positionAfterEqual(inst.instports.end, position)) { - for (const port of inst.module.ports) { - if (port.name == singleWord) { - return port; - } - } - } - return null; -} - - -/** - * @param {Instance} inst - * @param {vscode.Position} position - * @param {string} singleWord - * @returns {Promise} - */ -async function getInstParamByPosition(inst, position, singleWord) { - if (!inst.module || !inst.instparams) { - return null; - } - - if (positionAfterEqual(position, inst.instparams.start) && - positionAfterEqual(inst.instparams.end, position)) { - for (const param of inst.module.params) { - if (param.name == singleWord) { - return param; - } - } - } - return null; -} - - -/** - * @param {string} lineText - * @param {number} character - * @returns {boolean} - */ -function isPositionInput(lineText, character) { - let alphaReg = /[_0-9A-Za-z]/; - for (let i = character; i >= 0; -- i) { - const ch = lineText[i]; - if (alphaReg.test(ch)) { - continue; - } else if (ch == '.') { - if (i == 0) { - return true; - } else if (lineText[i - 1] == ' ') { - return true; - } else { - return false; - } - } else { - return false; - } - } - return false; -} - - -/** - * @param {string} singleWord - * @param {Module} module - * @returns {ModPort} - */ -function matchPorts(singleWord, module) { - if (!module || module.ports.length == 0) { - return null; - } - const targetPorts = module.ports.filter(port => port.name == singleWord); - if (targetPorts.length == 0) { - return null; - } - return targetPorts[0]; -} - - -/** - * @param {string} singleWord - * @param {Module} module - * @returns {ModParam} - */ -function matchParams(singleWord, module) { - if (!module || module.params.length == 0) { - return null; - } - const targetParams = module.params.filter(param => param.name == singleWord); - if (targetParams.length == 0) { - return null; - } - return targetParams[0]; -} - -/** - * - * @param {ModPort} port - * @returns {string} - */ -function makePortDesc(port) { - let portDesc = port.type; - if (port.width) { - portDesc += ' ' + port.width; - } - portDesc += ' ' + port.name; - return portDesc; -} - -/** - * - * @param {ModParam} param - * @returns {string} - */ -function makeParamDesc(param) { - let paramDesc = 'parameter ' + param.name; - if (param.init) { - paramDesc += ' = ' + param.init; - } - return paramDesc; -} - - -/** - * @param {string} singleWord - * @param {Array} symbols - * @returns {SymbolResult} - */ -function matchNormalSymbol(singleWord, symbols) { - if (!symbols || Object.keys(symbols).length == 0) { - return null; - } - for (const symbol of symbols) { - if (singleWord == symbol.name) { - return symbol; - } - } - - return null; -} - - -/** - * @param {vscode.MarkdownString} content - * @param {Module} module - */ -async function makeVlogHoverContent(content, module) { - const portNum = module.ports.length; - const paramNum = module.params.length; - const instNum = module.getInstanceNum(); - - const moduleUri = vscode.Uri.file(module.path); - const thenableFileDocument = vscode.workspace.openTextDocument(moduleUri); - - const portDesc = paramNum + ' $(instance-param) ' + - portNum + ' $(instance-port) ' + - instNum + ' $(instance-module)'; - - - content.appendCodeblock('module ' + module.name, 'verilog'); - content.appendText('\n'); - content.appendMarkdown(portDesc); - content.appendText(' | '); - - const count = { - input: 0, - output: 0, - inout: 0 - }; - for (const port of module.ports) { - count[port.type] += 1; - } - const ioDesc = count.input + ' $(instance-input) ' + - count.output + ' $(instance-output) ' + - count.inout + ' $(instance-inout)'; - content.appendMarkdown(ioDesc); - content.appendText('\n'); - - content.appendMarkdown('---'); - - // make document - const fileDocument = await thenableFileDocument; - const range = new vscode.Range(module.range.start, module.range.end); - const moduleDefinitionCode = fileDocument.getText(range); - content.appendCodeblock(moduleDefinitionCode, 'verilog'); -} - - -async function searchCommentAround(uri, range) { - -} - -module.exports = { - getVlogKeywordItem, - getLastSingleWord, - getSingleWordAtCurrentPosition, - filterSymbolScope, - filterInstanceByPosition, - isPositionInput, - isInComment, - matchInclude, - matchDefine, - matchDefineMacro, - matchInstance, - matchPorts, - matchParams, - matchNormalSymbol, - isVlogKeyword, - makeVlogHoverContent, - positionAfterEqual, - getInstPortByPosition, - getInstParamByPosition, - makePortDesc, - makeParamDesc, - transferVlogNumber, - getSymbolComment, - getSymbolComments -}; \ No newline at end of file diff --git a/src/function/lsp/util/index.ts b/src/function/lsp/util/index.ts new file mode 100644 index 0000000..a0e7253 --- /dev/null +++ b/src/function/lsp/util/index.ts @@ -0,0 +1,408 @@ +import * as vscode from 'vscode'; + +import { transferVlogNumber, getSymbolComment, getSymbolComments } from './feature'; + +import { AbsPath, AllowNull } from '../../../global'; +import { Position, Range, HdlModulePort, HdlModuleParam, CommentResult, RawSymbol, Define, Include, makeVscodePosition } from '../../../hdlParser/common'; +import { HdlModule, HdlInstance, hdlParam } from '../../../hdlParser/core'; + +// eslint-disable-next-line @typescript-eslint/naming-convention +const Unknown = 'Unknown'; + +interface MatchedSymbol { + name: string, + value: any, + range: Range +}; + + +interface ModuleScope { + module: RawSymbol, + symbols: RawSymbol[] +}; + + +function transformRange(range: Range | vscode.Range, lineOffset: number = 0, characterOffset: number = 0, + endLineOffset: number | undefined = undefined, endCharacterOffset: number | undefined = undefined): vscode.Range { + const start = range.start; + const end = range.end; + const startPosition = new vscode.Position(start.line + lineOffset, start.character + characterOffset); + endLineOffset = endLineOffset ? endLineOffset : lineOffset; + endCharacterOffset = endCharacterOffset ? endLineOffset : characterOffset; + const endPosition = new vscode.Position(end.line + endLineOffset, end.character + endCharacterOffset); + return new vscode.Range(startPosition, endPosition); +} + + +function positionAfter(positionA: Position, positionB: Position): boolean { + return positionA.line > positionB.line || ( + positionA.line === positionB.line && + positionA.character > positionB.character); +} + + +function positionEqual(positionA: Position, positionB: Position): boolean { + return positionA.line === positionB.line && + positionA.character === positionB.character; +} + + +/** + * @description positionA behind or equal to positionB + */ +function positionAfterEqual(positionA: Position, positionB: Position): boolean { + return positionAfter(positionA, positionB) || + positionEqual(positionA, positionB); +} + + + +/** + * @description filter the symbol result item that exceed the scope + */ +function filterSymbolScope(position: vscode.Position, rawSymbols: RawSymbol[]): AllowNull { + if (!rawSymbols) { + return null; + } + const parentModules = rawSymbols.filter(item => + item.type === 'module' && + positionAfterEqual(position, item.range.start) && + positionAfterEqual(item.range.end, position) + ); + + if (parentModules.length === 0) { + // TODO : macro + return null; + } + + const parentModule = parentModules[0]; + const symbols = rawSymbols.filter(item => + item !== parentModule && + positionAfterEqual(item.range.start, parentModule.range.start) && + positionAfterEqual(parentModule.range.end, item.range.end)); + + return { + module : parentModule, + symbols : symbols + }; +} + + +function isInComment(document: vscode.TextDocument, position: Position, comments: CommentResult[]): boolean { + if (!comments) { + return false; + } + // remove the situation that // comment + const lineText = document.lineAt(makeVscodePosition(position)).text; + const singleCommentIndex = lineText.indexOf('//'); + if (singleCommentIndex !== -1) { + return position.character >= singleCommentIndex; + } + + const currentLine = position.line + 1; + for (const comment of comments) { + const commentLine = comment.start.line; + if (commentLine > currentLine) { + continue; + } + const startPosition = new vscode.Position(commentLine, 0); + const startOffset = document.offsetAt(startPosition); + const endPosition = document.positionAt(startOffset + comment.length); + + const originalPosition: Position = {line: currentLine, character: position.character}; + + if (positionAfterEqual(originalPosition, startPosition) && + positionAfterEqual(endPosition, originalPosition)) { + return true; + } + } + return false; +} + + + + +function matchInclude(document: vscode.TextDocument, position: vscode.Position, includes: Include[]) : AllowNull { + const selectFileRange = document.getWordRangeAtPosition(position, /[\._0-9A-Za-z]+/); + const selectFileName = document.getText(selectFileRange); + + if (!includes) { + return null; + } + for (const include of includes) { + const range = include.range; + if (position.line + 1 === range.start.line && selectFileName === include.path) { + return { + name : include.path, + value: include.path, + range: range + }; + } + } + return null; +} + + + +function matchDefine(position: vscode.Position, defines: Define[]) : AllowNull { + if (!defines) { + return null; + } + + for (const define of defines) { + const range = define.range; + if (positionAfterEqual(position, range.start) && + positionAfterEqual(range.end, position)) { + return { + name : define.name, + value: define.replacement, + range: range + }; + } + } + return null; +} + + + +function matchDefineMacro(position: vscode.Position, singleWord: string, defines: Define[]) : AllowNull { + if (!defines) { + return null; + } + if (singleWord[0] !== '`' || singleWord.length <= 1) { + return null; + } + const targetMacro = singleWord.substring(1); + for (const define of defines) { + if (define.name === targetMacro) { + const range = define.range; + return { + name : define.name, + value : define.replacement, + range : range + }; + } + } + return null; +} + + +function matchInstance(singleWord: string, module: HdlModule): AllowNull { + for (const inst of module.getAllInstances()) { + if (singleWord === inst.type) { + return inst; + } + } + return null; +} + + +function filterInstanceByPosition(position: vscode.Position, symbols: RawSymbol[], module: HdlModule): AllowNull { + if (!symbols) { + return null; + } + for (const symbol of symbols) { + const inst = module.getInstance(symbol.name); + if (positionAfterEqual(position, symbol.range.start) && + positionAfterEqual(symbol.range.end, position) && + inst) { + + return inst; + } + } + return null; +} + + +async function getInstPortByPosition(inst: HdlInstance, position: vscode.Position, singleWord: string): Promise> { + if (!inst.module || !inst.instports) { + return null; + } + + const instportRange = transformRange(inst.instports, -1, 0); + + if (positionAfterEqual(position, instportRange.start) && + positionAfterEqual(instportRange.end, position)) { + for (const port of inst.module.ports) { + if (port.name === singleWord) { + return port; + } + } + } + return null; +} + + +async function getInstParamByPosition(inst: AllowNull, position: vscode.Position, singleWord: string): Promise> { + if (!inst || !inst.module || !inst.instparams) { + return null; + } + + const instParamRange = transformRange(inst.instparams, -1, 0); + + if (positionAfterEqual(position, instParamRange.start) && + positionAfterEqual(instParamRange.end, position)) { + for (const param of inst.module.params) { + if (param.name === singleWord) { + return param; + } + } + } + return null; +} + + +function isPositionInput(lineText: string, character: number): boolean { + const alphaReg = /[_0-9A-Za-z]/; + for (let i = character; i >= 0; -- i) { + const ch = lineText[i]; + if (alphaReg.test(ch)) { + continue; + } else if (ch === '.') { + if (i === 0) { + return true; + } else if (lineText[i - 1] === ' ') { + return true; + } else { + return false; + } + } else { + return false; + } + } + return false; +} + + +function matchPorts(singleWord: string, module: HdlModule): AllowNull { + if (!module || module.ports.length === 0) { + return null; + } + const targetPorts = module.ports.filter(port => port.name === singleWord); + if (targetPorts.length === 0) { + return null; + } + return targetPorts[0]; +} + + +function matchParams(singleWord: string, module: HdlModule): AllowNull { + if (module.params.length === 0) { + return null; + } + + const targetParams = module.params.filter(param => param.name === singleWord); + if (targetParams.length === 0) { + return null; + } + return targetParams[0]; +} + + +function makePortDesc(port: HdlModulePort): string { + let portDesc: string = port.type; + if (port.width && port.width !== Unknown) { + portDesc += ' ' + port.width; + } + portDesc += ' ' + port.name; + return portDesc; +} + + +function makeParamDesc(param: HdlModuleParam): string { + let paramDesc = 'parameter ' + param.name; + if (param.init && param.init !== Unknown) { + paramDesc += ' = ' + param.init; + } + return paramDesc; +} + +function makeNormalDesc(normal: RawSymbol): string { + const desc = normal.type + ' ' + normal.width + ' ' + normal.name; + return desc; +} + + +function matchNormalSymbol(singleWord: string, symbols: RawSymbol[]): AllowNull { + if (!symbols || Object.keys(symbols).length === 0) { + return null; + } + for (const symbol of symbols) { + if (singleWord === symbol.name) { + return symbol; + } + } + + return null; +} + + +async function makeVlogHoverContent(content: vscode.MarkdownString, module: HdlModule) { + const portNum = module.ports.length; + const paramNum = module.params.length; + const instNum = module.getInstanceNum(); + + const moduleUri = vscode.Uri.file(module.path); + const thenableFileDocument = vscode.workspace.openTextDocument(moduleUri); + + const portDesc = ' $(instance-param) ' + paramNum + + ' $(instance-port) ' + portNum + + ' $(instance-module)' + instNum; + + + content.appendMarkdown(portDesc); + content.appendText(' | '); + + const count = { + input: 0, + output: 0, + inout: 0 + }; + for (const port of module.ports) { + count[port.type as keyof typeof count] += 1; + } + const ioDesc = ' $(instance-input) ' + count.input + + ' $(instance-output) ' + count.output + + ' $(instance-inout)' + count.inout; + content.appendMarkdown(ioDesc); + content.appendText('\n'); + + content.appendMarkdown('---'); + + // make document + const fileDocument = await thenableFileDocument; + const range = transformRange(module.range, -1, 0, 1); + const moduleDefinitionCode = fileDocument.getText(range); + content.appendCodeblock(moduleDefinitionCode, 'verilog'); +} + + +async function searchCommentAround(path: AbsPath, range: Range): Promise { + const targetRange = transformRange(range, -1, 0); + const comment = await getSymbolComment(path, targetRange); + return comment; +} + +export { + transformRange, + filterSymbolScope, + filterInstanceByPosition, + isPositionInput, + isInComment, + matchInclude, + matchDefine, + matchDefineMacro, + matchInstance, + matchPorts, + matchParams, + matchNormalSymbol, + makeVlogHoverContent, + positionAfterEqual, + getInstPortByPosition, + getInstParamByPosition, + makePortDesc, + makeParamDesc, + makeNormalDesc, + transferVlogNumber, + searchCommentAround, +}; \ No newline at end of file diff --git a/src/function/lsp/util/keyword.ts b/src/function/lsp/util/keyword.ts new file mode 100644 index 0000000..e7436e2 --- /dev/null +++ b/src/function/lsp/util/keyword.ts @@ -0,0 +1,130 @@ +import * as vscode from 'vscode'; + + +class Keywords { + keywords: Set; + keywordItems: vscode.CompletionItem[]; + compilerKeywords: string[]; // start with ` + systemKeywords: string[]; // start with $ + constructor(keywords: string[], compilerKeywords: string[], systemKeywords: string[]) { + this.keywords = new Set(keywords); + const keywordItems = []; + for (const keyword of keywords) { + const clItem = new vscode.CompletionItem(keyword, vscode.CompletionItemKind.Keyword); + clItem.detail = "keyword"; + keywordItems.push(clItem); + } + this.keywordItems = keywordItems; + this.compilerKeywords = compilerKeywords; + this.systemKeywords = systemKeywords; + } + + public keys(): Set { + return this.keywords; + } + + public isKeyword(word: string): boolean { + return this.keywords.has(word); + } +} + +const vlogKeyword = new Keywords([ + "above", "disable", "idt", "notif1", "supply0", "abs", "discipline", "idtmod", + "or", "supply1", "absdelay", "driver_update", "if", "output", "table", "ac_stim", + "edge", "ifnone", "parameter", "tan", "acos", "else", "inf", "pmos", "tanh", + "acosh", "end", "initial", "posedge", "task", "always", "endcase", "initial_step", + "potential", "time", "analog", "endconnectrules", "inout", "pow", "timer", "analysis", + "enddiscipline", "input", "primitive", "tran", "and", "endfunction", "integer", + "pull0", "tranif0", "asin", "endmodule", "join", "pull1", "tranif1", "asinh", + "endnature", "laplace_nd", "pulldown", "transition", "assign", "endprimitive", + "laplace_np", "pullup", "tri", "atan", "endspecify", "laplace_zd", "rcmos", "tri0", + "atan2", "endtable", "laplace_zp", "real", "tri1", "atanh", "endtask", "large", + "realtime", "triand", "begin", "event", "last_crossing", "reg", "trior", "branch", + "exclude", "limexp", "release", "trireg", "buf", "exp", "ln", "repeat", "vectored", + "bufif0", "final_step", "log", "rnmos", "wait", "bufif1", "flicker_noise", "macromodule", + "rpmos", "wand", "case", "flow", "max", "rtran", "weak0", "casex", "for", "medium", + "rtranif0", "weak1", "casez", "force", "min", "rtranif1", "while", "ceil", "forever", + "module", "scalared", "white_noise", "cmos", "fork", "nand", "sin", "wire", + "connectrules", "from", "nature", "sinh", "wor", "cos", "function", "negedge", + "slew", "wreal", "cosh", "generate", "net_resolution", "small", "xnor", "cross", + "genvar", "nmos", "specify", "xor", "ddt", "ground", "noise_table", "specparam", + "zi_nd", "deassign", "highz0", "nor", "sqrt", "zi_np", "default", "highz1", + "not", "strong0", "zi_zd", "defparam", "hypot", "notif0", "strong1", "zi_zp", +], +[ + "begin_keywords", "celldefine", "default_nettype", "define", "else", "elsif", + "end_keywords", "endcelldefine", "endif", "ifdef", "ifndef", "include", "line", + "nounconnected_drive", "pragma", "resetall", "timescale", "unconnected_drive", "undef" +], +[ + 'acos', 'sqrt', 'ftell', 'fdisplay', 'fclose', 'timeformat', 'fseek', 'asinh', 'fdisplayh', + 'fmonitorb', 'dist_erlang', 'writeb', 'fwrite', 'swriteb', 'printtimescale', 'displayb', 'atan', + 'sscanf', 'exp', 'nand', 'fdisplayo', 'sdf_annotate', 'stime', 'sin', 'dist_chi_square', 'strobeh', + 'array', 'swriteo', 'and', 'dist_normal', 'readmemb', 'strobeb', 'realtobits', 'or', 'dist_exponential', + 'plusargs', 'hypot', 'swrite', 'writeh', 'plane', 'fstrobeb', 'time', 'fread', 'fstrobe', 'rewind', 'async', + 'sync', 'bitstoreal', 'readmemh', 'fwriteo', 'value', 'tanh', 'rtoi', 'fgetc', 'realtime', 'atan2', 'acosh', + 'displayh', 'log10', 'clog2', 'fstrobeo', 'pow', 'fwriteb', 'fwriteh', 'nor', 'fdisplayb', 'monitoroff', 'fgets', + 'q_add', 'atanh', 'monitor', 'monitorh', 'cos', 'ln', 'q_initialize', 'unsigned', 'swriteh', 'asin', 'monitoron', + 'monitoro', 'display', 'tan', 'fscanf', 'dist_uniform', 'test', 'q_exam', 'itor', 'random', 'fstrobeh', 'strobe', + 'displayo', 'monitorb', 'ungetc', 'feof', 'stop', 'ferror', 'finish', 'fmonitor', 'fmonitorh', 'cosh', 'writeo', 'sinh', + 'dist_poisson', 'write', 'fopen', 'fmonitoro', 'fflush', 'ceil', 'strobeo', 'dist_t', 'q_full', 'signed', 'sformat', + 'q_remove', 'floor', + 'dumpfile', 'dumpvars', 'dumpoff', 'dumpon', 'dumpall', 'dumplimit', 'dumpflush', + 'dumpports', 'dumpportsoff', 'dumpportson', 'dumpportsall', 'dumpportslimit', 'dumpportsflush' +] +); + +// TODO : do vhdl and sv version +const vhdlKeyword = new Keywords([], [], []); + +const systemverilogKeyword = new Keywords([ + "above", "disable", "idt", "notif1", "supply0", "abs", "discipline", "idtmod", + "or", "supply1", "absdelay", "driver_update", "if", "output", "table", "ac_stim", + "edge", "ifnone", "parameter", "tan", "acos", "else", "inf", "pmos", "tanh", + "acosh", "end", "initial", "posedge", "task", "always", "endcase", "initial_step", + "potential", "time", "analog", "endconnectrules", "inout", "pow", "timer", "analysis", + "enddiscipline", "input", "primitive", "tran", "and", "endfunction", "integer", + "pull0", "tranif0", "asin", "endmodule", "join", "pull1", "tranif1", "asinh", + "endnature", "laplace_nd", "pulldown", "transition", "assign", "endprimitive", + "laplace_np", "pullup", "tri", "atan", "endspecify", "laplace_zd", "rcmos", "tri0", + "atan2", "endtable", "laplace_zp", "real", "tri1", "atanh", "endtask", "large", + "realtime", "triand", "begin", "event", "last_crossing", "reg", "trior", "branch", + "exclude", "limexp", "release", "trireg", "buf", "exp", "ln", "repeat", "vectored", + "bufif0", "final_step", "log", "rnmos", "wait", "bufif1", "flicker_noise", "macromodule", + "rpmos", "wand", "case", "flow", "max", "rtran", "weak0", "casex", "for", "medium", + "rtranif0", "weak1", "casez", "force", "min", "rtranif1", "while", "ceil", "forever", + "module", "scalared", "white_noise", "cmos", "fork", "nand", "sin", "wire", + "connectrules", "from", "nature", "sinh", "wor", "cos", "function", "negedge", + "slew", "wreal", "cosh", "generate", "net_resolution", "small", "xnor", "cross", + "genvar", "nmos", "specify", "xor", "ddt", "ground", "noise_table", "specparam", + "zi_nd", "deassign", "highz0", "nor", "sqrt", "zi_np", "default", "highz1", + "not", "strong0", "zi_zd", "defparam", "hypot", "notif0", "strong1", "zi_zp" +], +[ + "begin_keywords", "celldefine", "default_nettype", "define", "else", "elsif", + "end_keywords", "endcelldefine", "endif", "ifdef", "ifndef", "include", "line", + "nounconnected_drive", "pragma", "resetall", "timescale", "unconnected_drive", "undef" +], +[ + 'acos', 'sqrt', 'ftell', 'fdisplay', 'fclose', 'timeformat', 'fseek', 'asinh', 'fdisplayh', + 'fmonitorb', 'dist_erlang', 'writeb', 'fwrite', 'swriteb', 'printtimescale', 'displayb', 'atan', + 'sscanf', 'exp', 'nand', 'fdisplayo', 'sdf_annotate', 'stime', 'sin', 'dist_chi_square', 'strobeh', + 'array', 'swriteo', 'and', 'dist_normal', 'readmemb', 'strobeb', 'realtobits', 'or', 'dist_exponential', + 'plusargs', 'hypot', 'swrite', 'writeh', 'plane', 'fstrobeb', 'time', 'fread', 'fstrobe', 'rewind', 'async', + 'sync', 'bitstoreal', 'readmemh', 'fwriteo', 'value', 'tanh', 'rtoi', 'fgetc', 'realtime', 'atan2', 'acosh', + 'displayh', 'log10', 'clog2', 'fstrobeo', 'pow', 'fwriteb', 'fwriteh', 'nor', 'fdisplayb', 'monitoroff', 'fgets', + 'q_add', 'atanh', 'monitor', 'monitorh', 'cos', 'ln', 'q_initialize', 'unsigned', 'swriteh', 'asin', 'monitoron', + 'monitoro', 'display', 'tan', 'fscanf', 'dist_uniform', 'test', 'q_exam', 'itor', 'random', 'fstrobeh', 'strobe', + 'displayo', 'monitorb', 'ungetc', 'feof', 'stop', 'ferror', 'finish', 'fmonitor', 'fmonitorh', 'cosh', 'writeo', 'sinh', + 'dist_poisson', 'write', 'fopen', 'fmonitoro', 'fflush', 'ceil', 'strobeo', 'dist_t', 'q_full', 'signed', 'sformat', + 'q_remove', 'floor' +] +); + + + +export { + vlogKeyword, + vhdlKeyword, + systemverilogKeyword +}; \ No newline at end of file diff --git a/src/global/index.ts b/src/global/index.ts index 4e503d5..cb0ed0b 100644 --- a/src/global/index.ts +++ b/src/global/index.ts @@ -8,6 +8,8 @@ import * as Lang from './lang'; type AbsPath = string; type RelPath = string; +type AllowNull = T | null; + export { opeParam, OpeParamDefaults, @@ -19,5 +21,6 @@ export { RelPath, MainOutput, YosysOutput, - ReportType + ReportType, + AllowNull }; \ No newline at end of file diff --git a/src/hdlFs/file.ts b/src/hdlFs/file.ts index 911381d..f350e90 100644 --- a/src/hdlFs/file.ts +++ b/src/hdlFs/file.ts @@ -124,7 +124,7 @@ function getLanguageId(path: AbsPath | RelPath): HdlLangID { if (!isFile(path)) { return HdlLangID.Unknown; } - const ext = hdlPath.extname(path, false); + const ext = hdlPath.extname(path, false); if (verilogExts.includes(ext)) { return HdlLangID.Verilog; } else if (vhdlExts.includes(ext)) { diff --git a/src/hdlParser/common.ts b/src/hdlParser/common.ts index ec0cfce..e4eefdc 100644 --- a/src/hdlParser/common.ts +++ b/src/hdlParser/common.ts @@ -1,4 +1,5 @@ /* eslint-disable @typescript-eslint/naming-convention */ +import * as vscode from 'vscode'; import { AbsPath, RelPath } from '../global'; @@ -10,6 +11,10 @@ interface Position { character: number }; +function makeVscodePosition(position: Position): vscode.Position { + return new vscode.Position(position.line, position.character); +} + interface Range { start: Position end: Position @@ -32,11 +37,45 @@ enum HdlFileType { RemoteLib = 'remote_lib' }; enum InstModPathStatus {Current, Include, Others, Unknown}; -enum SymbolType { - Module = 'module', - Input = 'input', - Output = 'output' -}; +// enum SymbolType { +// Module = 'module', +// Input = 'input', +// Output = 'output', +// Inout = 'inout', +// Program = 'program', +// Package = 'package', +// Import = 'import', +// Always = 'always', +// Processe = 'processe', +// Task = 'task', +// Function = 'function', +// Assert = 'assert', +// Event = 'event', +// Instance = 'instance', +// Time = 'time', +// Define = 'define', +// Typedef = 'typedef', +// Generate = 'generate', +// Enum = 'enum', +// Modport = 'modport', +// Property = 'property', +// Interface = 'interface', +// Buffer = 'buffer', +// Localparam = 'localparam', +// Parameter = 'parameter', +// Integer = 'integer', +// Char = 'char', +// Float = 'float', +// Int = 'int', +// String = 'string', +// Struct = 'struct', +// Class = 'class', +// Logic = 'logic', +// Wire = 'wire', +// Reg = 'reg', +// Net = 'net', +// Bit = 'bit' +// }; interface Error { severity: number @@ -45,12 +84,30 @@ interface Error { range: Range }; -interface Define { - // `define A out - // name is "A", value is "out" - name: string +interface DefineParam { + name: string, value: string - range: Position +}; + +/** + * `define A out + * name is "A", replacement is "out" + * `define max(a, b=1) a*b + * name is "max", replacement is "a*b", params is + * { + "name": "a", + "value": "Unknown" + }, + { + "name": "b", + "value": "1" + } +*/ +interface Define { + name: string + replacement: string + range: Range + params: DefineParam[], }; interface Include { @@ -105,8 +162,9 @@ interface RawHdlModule { interface RawSymbol { name: string - type: SymbolType + type: string range: Range + width?: string }; interface InstModPathSearchResult { @@ -120,6 +178,12 @@ interface HdlDependence { others: AbsPath[] }; +interface CommentResult { + start: { line : number } + length: number +} + + export { Position, Range, @@ -138,5 +202,7 @@ export { RawHdlModule, InstModPathSearchResult, HdlDependence, - RawSymbol + RawSymbol, + CommentResult, + makeVscodePosition }; \ No newline at end of file diff --git a/src/hdlParser/core.ts b/src/hdlParser/core.ts index a83a582..e4046ec 100644 --- a/src/hdlParser/core.ts +++ b/src/hdlParser/core.ts @@ -72,10 +72,6 @@ class HdlParam { this.modules.add(hdlModule); } - /** - * add module to global top modules - * @param hdlModule - */ public addTopModule(hdlModule: HdlModule) { this.topModules.add(hdlModule); } @@ -204,13 +200,19 @@ class HdlParam { } public async initHdlFiles(hdlFiles: AbsPath[] | Generator) { + const pools: Promise[] = []; for (const path of hdlFiles) { - this.doHdlFast(path); + const p = this.doHdlFast(path); + pools.push(p); + } + for (const p of pools) { + await p; } } public async initialize(hdlFiles: AbsPath[] | Generator) { await this.initHdlFiles(hdlFiles); + for (const hdlFile of this.getAllHdlFiles()) { hdlFile.makeInstance(); } @@ -296,6 +298,7 @@ class HdlInstance { if (instModPath) { this.module = hdlParam.getHdlModule(instModPath, instModName); + // add refer for module this.module?.addGlobalReferedInstance(this); // if module and parent module share the same source (e.g both in src folder) @@ -347,9 +350,20 @@ class HdlModule { this.range = range; this.params = params; this.ports = ports; + + if (!this.params) { + this.params = []; + } + + if (!this.ports) { + this.ports = []; + } // make instance this.rawInstances = instances; + if (!this.rawInstances) { + this.rawInstances = []; + } this.nameToInstances = new Map(); // add in hdlParam data structure @@ -397,6 +411,7 @@ class HdlModule { public createHdlInstance(rawHdlInstance: common.RawHdlInstance): HdlInstance { const instModName = rawHdlInstance.type; + const searchResult = this.searchInstModPath(instModName); const hdlInstance = new HdlInstance(rawHdlInstance.name, rawHdlInstance.type, @@ -417,7 +432,8 @@ class HdlModule { } public makeNameToInstances() { - if (this.rawInstances) { + + if (this.rawInstances) { this.nameToInstances.clear(); for (const inst of this.rawInstances) { this.createHdlInstance(inst); @@ -452,7 +468,7 @@ class HdlModule { } } - private searchInstModPath(instModName: string): common.InstModPathSearchResult { + private searchInstModPath(instModName: string): common.InstModPathSearchResult { // search path of instance // priority: "current file" -> "included files" -> "other hdls in the project" @@ -508,6 +524,7 @@ class HdlModule { public addGlobalReferedInstance(inst: HdlInstance) { const globalRefers = this.globalRefers; globalRefers.add(inst); + // it is refered in global scope, so delete this from top module if (globalRefers.size > 0) { hdlParam.deleteTopModule(this); } @@ -524,6 +541,7 @@ class HdlModule { public addLocalReferedInstance(inst: HdlInstance) { const localRefers = this.localRefers; localRefers.add(inst); + // it is refered in local scope, so delete this from top module if (localRefers.size > 0) { hdlParam.deleteTopModuleToSource(this); } diff --git a/src/hdlParser/util.ts b/src/hdlParser/util.ts index 70953fe..95a701d 100644 --- a/src/hdlParser/util.ts +++ b/src/hdlParser/util.ts @@ -25,6 +25,8 @@ namespace HdlSymbol { } } + + export { - HdlSymbol + HdlSymbol, }; \ No newline at end of file diff --git a/src/manager/prj.ts b/src/manager/prj.ts index 0d01077..9f7d66a 100644 --- a/src/manager/prj.ts +++ b/src/manager/prj.ts @@ -49,7 +49,7 @@ class PrjManage { * init opeParam * @param context */ - public initOpeParam(context: vscode.ExtensionContext) { + public async initOpeParam(context: vscode.ExtensionContext) { const os = process.platform; const extensionPath = hdlPath.toSlash(context.extensionPath); const workspacePath = this.getWorkspacePath(); @@ -71,6 +71,15 @@ class PrjManage { if (fs.existsSync(propertyJsonPath)) { const rawPrjInfo = hdlFile.readJSON(propertyJsonPath) as RawPrjInfo; opeParam.mergePrjInfo(rawPrjInfo); + } else { + const createProperty = await vscode.window.showInformationMessage( + "property.json is not detected, do you want to create one ?", + { title: 'Yes', value: true }, + { title: 'No', value: false } + ); + if (createProperty?.value) { + vscode.commands.executeCommand('digital-ide.property-json.generate'); + } } } @@ -106,7 +115,7 @@ class PrjManage { console.time('launch'); } - this.initOpeParam(context); + await this.initOpeParam(context); MainOutput.report('finish initialise opeParam', ReportType.Info); const hdlFiles = this.getPrjHardwareFiles(); @@ -121,7 +130,6 @@ class PrjManage { MainOutput.report('create pl and ps', ReportType.Info); - if (countTimeCost) { console.timeLog('launch'); } diff --git a/src/test/vlog/dependence_test/child_1.v b/src/test/vlog/dependence_test/child_1.v index 69a162a..962b445 100644 --- a/src/test/vlog/dependence_test/child_1.v +++ b/src/test/vlog/dependence_test/child_1.v @@ -1,6 +1,8 @@ module dependence_1 ( + // this is a test input a, b, c, - output Q + // a test + output Result // balabalabala for result ); // a & b | ((b & c) & (b | c)) @@ -10,6 +12,6 @@ module dependence_1 ( // Simplify A + A = A AB + BC // Factor B(A+C) - assign Q = a & (b | c); + assign Result = a & (b | c); -endmodule +endmodule \ No newline at end of file diff --git a/src/test/vlog/dependence_test/parent.v b/src/test/vlog/dependence_test/parent.v index 30af10d..7b1b0a8 100644 --- a/src/test/vlog/dependence_test/parent.v +++ b/src/test/vlog/dependence_test/parent.v @@ -3,14 +3,17 @@ * current file -> macro include -> whole project * expect dependence_1 from child_1.v (macro include) * expect dependence_2 from child_2.v (whole project) - * cannot find dependence_3 + * cannot find dependence_3 `main */ `include "child_1.v" +`include "child_2.v" `define main out module Main ( + // Main input input a, b, c, + // Main output output Qus, Qs, `main ); @@ -18,7 +21,7 @@ dependence_1 u_dependence_1( .a(a), .b(b), .c(c), - .Q(Qus) + .Result(Qus) ); dependence_2 u_dependence_2( diff --git a/src/test/vlog/formatter_test.v b/src/test/vlog/formatter_test/formatter_test.v similarity index 100% rename from src/test/vlog/formatter_test.v rename to src/test/vlog/formatter_test/formatter_test.v diff --git a/src/test/vlog/fsm_test.v b/src/test/vlog/fsm_test/fsm_test.v similarity index 100% rename from src/test/vlog/fsm_test.v rename to src/test/vlog/fsm_test/fsm_test.v diff --git a/src/test/vlog/netlist_test.v b/src/test/vlog/netlist_test/netlist_test.v similarity index 100% rename from src/test/vlog/netlist_test.v rename to src/test/vlog/netlist_test/netlist_test.v diff --git a/src/test/vlog/test.v b/src/test/vlog/test.v deleted file mode 100644 index 1087b0d..0000000 --- a/src/test/vlog/test.v +++ /dev/null @@ -1,29 +0,0 @@ - -/* - * CN: 如果使用`include "head_1.v" 则模块 dependence_1 使用的应该是 head_1.v 文件中的, - * 而不会调用child_1.v中的 dependence_1 同名模块。 - * EN: - */ - -`include "child_1.v" -`define main_o out -module Main( - input a, b, c, - output Qus, Qs, `main_o -); - -dependence_1 dependence_1( - .a(a), - .b(b), - .c(c), - .Q(Qus) -); - -dependence_2 dependence_2( - .a(a), - .b(b), - .c(c), - .Q(Qs) -); - -endmodule \ No newline at end of file diff --git a/syntaxes/verilog.json b/syntaxes/verilog.json index 50f70e3..05073b1 100644 --- a/syntaxes/verilog.json +++ b/syntaxes/verilog.json @@ -6,6 +6,49 @@ "keyEquivalent": "^~V", "name": "Verilog", "patterns": [ + { + "begin": "\\s*(wire|reg)\\s+\\b([a-zA-Z_][a-zA-Z0-9_]*)\\b", + "beginCaptures": { + "1": { + "name": "keyword.control.verilog" + }, + "2": { + "name": "variable.other.constant.declaration.verilog" + } + }, + "end": "(;)", + "endCaptures": { + "1": { + "name": "source.verilog" + } + } + }, + { + "begin": "\\s*(wire|reg)\\s+\\[(.*?)(:)(.*?)\\]\\s+\\b([a-zA-Z_][a-zA-Z0-9_]*)\\b", + "beginCaptures": { + "1": { + "name": "keyword.control.verilog" + }, + "2": { + "name": "constant.numeric.width.verilog" + }, + "3": { + "name": "entity.name.function.width.spliter.verilog" + }, + "4": { + "name": "constant.numeric.width.verilog" + }, + "5": { + "name": "variable.other.constant.declaration.verilog" + } + }, + "end": "(;)", + "endCaptures": { + "1": { + "name": "source.verilog" + } + } + }, { "begin": "\\s*\\b(function|task)\\b(\\s+automatic)?", "beginCaptures": { @@ -145,10 +188,10 @@ "name": "support.class" } }, - "end": ";", + "end": "(;)", "endCaptures": { "1": { - "name": "entity.name.function.verilog" + "name": "source.verilog" } }, "patterns": [ @@ -166,7 +209,7 @@ "include": "#ifmodport" } ], - "name": "variable.module.verilog" + "name": "variable.other.constant.module.verilog" }, { "captures": { @@ -637,10 +680,10 @@ }, { "match": "\\b([a-zA-Z_][a-zA-Z0-9_]*)\\b(?=\\s*(\\(|$))", - "name": "support.class" + "name": "entity.name.function.module.verilog" } ], - "name": "meta.module.inst.param.verilog" + "name": "variable.other.constant.module.inst.param.verilog" }, { "begin": "\\b([a-zA-Z_][a-zA-Z0-9_]*)\\s+(?!intersect|and|or|throughout|within)([a-zA-Z_][a-zA-Z0-9_]*)\\s*(\\[(\\d+)(\\:(\\d+))?\\])?\\s*(\\(|$)", @@ -649,7 +692,7 @@ "name": "support.class" }, "2": { - "name": "entity.name.module.verilog" + "name": "entity.name.function.module.verilog" }, "4": { "name": "constant.numeric.verilog" @@ -676,7 +719,7 @@ "include": "#constants" } ], - "name": "variable.module.inst.verilog" + "name": "variable.other.constant.module.inst.verilog" }, { "name": "meta.struct.assign.verilog", @@ -1047,7 +1090,7 @@ "match": "\\.([a-zA-Z_][a-zA-Z0-9_]*)\\s*", "captures": { "1": { - "name": "keyword.inst.port.verilog" + "name": "variable.inst.port.verilog" } } }, From 23ca078e73483a8571d2d904dbc7a567dab09d36 Mon Sep 17 00:00:00 2001 From: Kirigaya <1193466151@qq.com> Date: Wed, 5 Jul 2023 23:23:12 +0800 Subject: [PATCH 18/54] finish reconstruct of basic function --- package.json | 92 ++++++---- package.nls.json | 3 +- package.nls.zh-cn.json | 3 +- package.nls.zh-tw.json | 15 +- resources/hdlParser/index.d.ts | 2 +- src/extension.ts | 21 ++- src/function/hdlDoc/index.ts | 26 ++- src/function/index.ts | 14 +- src/function/lsp/completion/vlog.ts | 82 ++++++++- src/function/lsp/definition/vlog.ts | 8 +- src/function/lsp/docSemantic/index.ts | 6 + src/function/lsp/docSemantic/vlog.ts | 21 +++ src/function/lsp/docSymbol/vlog.ts | 2 +- src/function/lsp/hover/vlog.ts | 3 - src/function/lsp/util/index.ts | 5 +- src/function/lsp/util/keyword.ts | 21 +-- src/function/sim/instance.ts | 169 +++++++++++------- src/function/sim/testbench.ts | 2 + src/function/tool.ts | 18 ++ src/function/treeView/index.ts | 2 +- src/global/opeParam.ts | 26 +-- src/global/prjInfo.ts | 40 +++-- src/global/util.ts | 21 ++- src/hdlFs/file.ts | 14 +- src/hdlFs/path.ts | 10 ++ src/hdlParser/common.ts | 2 +- src/hdlParser/core.ts | 148 ++++++++++++--- src/manager/prj.ts | 20 ++- src/monitor/event.ts | 238 +++++++++++++++++++++++++ src/monitor/index.ts | 103 +++++++++++ src/test/monitor/.vscode/property.json | 17 ++ src/test/monitor/sim1/testbench.v | 50 ++++++ src/test/monitor/src1/add.v | 11 ++ src/test/monitor/src2/add.v | 9 + 34 files changed, 1000 insertions(+), 224 deletions(-) create mode 100644 src/function/lsp/docSemantic/index.ts create mode 100644 src/function/lsp/docSemantic/vlog.ts create mode 100644 src/function/tool.ts create mode 100644 src/monitor/event.ts create mode 100644 src/monitor/index.ts create mode 100644 src/test/monitor/.vscode/property.json create mode 100644 src/test/monitor/sim1/testbench.v create mode 100644 src/test/monitor/src1/add.v create mode 100644 src/test/monitor/src2/add.v diff --git a/package.json b/package.json index 0942180..d90fd28 100644 --- a/package.json +++ b/package.json @@ -142,39 +142,59 @@ "description": "Select the verilog and systemverilog formatter style." }, "function.lsp.formatter.vlog.default.args": { - "scope": "window", - "type": "string", - "default": "", - "description": "Add verilog formatter arguments here (like istyle)." - }, - "function.lsp.formatter.vhdl.default.keyword-case": { - "description": "Keyword case", - "type": "string", - "default": "LowerCase", - "enum": [ - "LowerCase", - "UpperCase" - ] - }, - "function.lsp.formatter.vhdl.default.align-comments": { - "description": "Align comments", - "type": "boolean", - "default": false - }, - "function.lsp.formatter.vhdl.default.type-name-case": { - "description": "Type name case", - "type": "string", - "default": "LowerCase", - "enum": [ - "LowerCase", - "UpperCase" - ] - }, - "function.lsp.formatter.vhdl.default.indentation": { - "description": "Indentation", - "type": "number", - "default": 4 - } + "scope": "window", + "type": "string", + "default": "", + "description": "Add verilog formatter arguments here (like istyle)." + }, + "function.lsp.formatter.vhdl.default.keyword-case": { + "description": "Keyword case", + "type": "string", + "default": "LowerCase", + "enum": [ + "LowerCase", + "UpperCase" + ] + }, + "function.lsp.formatter.vhdl.default.align-comments": { + "description": "Align comments", + "type": "boolean", + "default": false + }, + "function.lsp.formatter.vhdl.default.type-name-case": { + "description": "Type name case", + "type": "string", + "default": "LowerCase", + "enum": [ + "LowerCase", + "UpperCase" + ] + }, + "function.lsp.formatter.vhdl.default.indentation": { + "description": "Indentation", + "type": "number", + "default": 4 + }, + "function.lsp.completion.vlog.autoAddInclude": { + "description": "`include \"xxx.v\" will be added to the top of the file automatically", + "type": "boolean", + "default": true + }, + "function.lsp.completion.vlog.completeWholeInstante": { + "description": "complete everything invoking a module needs including paramters and ports", + "type": "boolean", + "default": true + }, + "function.instantiation.addComment": { + "description": "add comment like // ports, // input, // output when doing instantiation, including completion for module invoking", + "type": "boolean", + "default": true + }, + "function.instantiation.autoNetOutputDeclaration": { + "description": "auto declare output type nets in the scope when instantiation happens.", + "type": "boolean", + "default": true + } } }, "commands": [ @@ -385,6 +405,10 @@ }, "category": "tool", "title": "%digital-ide.fsm.title%" + }, + { + "command": "digital-ide.lsp.tool.insertTextToUri", + "title": "%digital-ide.lsp.tool.insertTextToUri.title%" } ], "menus": { @@ -797,4 +821,4 @@ "vscode-textmate": "^9.0.0", "wavedrom": "^2.9.1" } -} +} \ No newline at end of file diff --git a/package.nls.json b/package.nls.json index a3be695..fdc55dd 100644 --- a/package.nls.json +++ b/package.nls.json @@ -35,5 +35,6 @@ "digital-ide.pl.addFile.title": "add file", "digital-ide.pl.delFile.title": "del file", "digital-ide.netlist.title": "netlist", - "digital-ide.fsm.title": "finite state machine" + "digital-ide.fsm.title": "finite state machine", + "digital-ide.lsp.tool.insertTextToUri.title": "insert text to uri" } \ No newline at end of file diff --git a/package.nls.zh-cn.json b/package.nls.zh-cn.json index 65a1a05..86c70bd 100644 --- a/package.nls.zh-cn.json +++ b/package.nls.zh-cn.json @@ -35,5 +35,6 @@ "digital-ide.pl.addFile.title": "添加文件", "digital-ide.pl.delFile.title": "d删除文件", "digital-ide.netlist.title": "netlist", - "digital-ide.fsm.title": "有限状态机" + "digital-ide.fsm.title": "有限状态机", + "digital-ide.lsp.tool.insertTextToUri.title": "插入文本uri" } \ No newline at end of file diff --git a/package.nls.zh-tw.json b/package.nls.zh-tw.json index 86ebf78..a556923 100644 --- a/package.nls.zh-tw.json +++ b/package.nls.zh-tw.json @@ -28,12 +28,13 @@ "digital-ide.hard.gui.title": "打開界面", "digital-ide.hard.exit.title": "退出當前項目", "digital-ide.pickLibrary.title": "從自定義選擇自由和普遍", - "digital-ide.pl.setSrcTop.title": "設置為src的文件", - "digital-ide.pl.setSimTop.title": "設置為文件的sim卡", - "digital-ide.pl.addDevice.title": "添加設備", - "digital-ide.pl.delDevice.title": "德爾設備", + "digital-ide.pl.setSrcTop.title": "設置為src的top", + "digital-ide.pl.setSimTop.title": "設置為sim的top", + "digital-ide.pl.addDevice.title": "添加device", + "digital-ide.pl.delDevice.title": "刪除device", "digital-ide.pl.addFile.title": "添加文件", - "digital-ide.pl.delFile.title": "del文件", - "digital-ide.netlist.title": "網表", - "digital-ide.fsm.title": "有限狀態機" + "digital-ide.pl.delFile.title": "d刪除文件", + "digital-ide.netlist.title": "netlist", + "digital-ide.fsm.title": "有限狀態機", + "digital-ide.lsp.tool.insertTextToUri.title": "插入文本uri" } \ No newline at end of file diff --git a/resources/hdlParser/index.d.ts b/resources/hdlParser/index.d.ts index 058f7f2..2028a27 100644 --- a/resources/hdlParser/index.d.ts +++ b/resources/hdlParser/index.d.ts @@ -7,7 +7,7 @@ type Path = AbsPath | RelPath; interface Fast { content: RawHdlModule[] - languageId: HdlLangID + languageId: string macro: Macro } diff --git a/src/extension.ts b/src/extension.ts index ee455af..317474a 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -2,20 +2,25 @@ import * as vscode from 'vscode'; import { opeParam, MainOutput, ReportType } from './global'; import { hdlParam } from './hdlParser'; -import { prjManage, registerManagerCommands } from './manager'; -import { registerFunctionCommands, registerLsp } from './function'; +import * as manager from './manager'; +import * as func from './function'; +import { hdlMonitor } from './monitor'; async function registerCommand(context: vscode.ExtensionContext) { - registerFunctionCommands(context); - registerManagerCommands(context); - registerLsp(context); + manager.registerManagerCommands(context); + + func.registerFunctionCommands(context); + func.registerLsp(context); + func.registerToolCommands(context); } -async function launch(context: vscode.ExtensionContext) { - await prjManage.initialise(context); +async function launch(context: vscode.ExtensionContext) { + await manager.prjManage.initialise(context); await registerCommand(context); - + hdlMonitor.start(); + console.log(hdlParam); + MainOutput.report('Digital-IDE has launched, Version: 0.3.0'); MainOutput.report('OS: ' + opeParam.os); } diff --git a/src/function/hdlDoc/index.ts b/src/function/hdlDoc/index.ts index 824683d..8b60258 100644 --- a/src/function/hdlDoc/index.ts +++ b/src/function/hdlDoc/index.ts @@ -26,7 +26,7 @@ class ExportFunctionItem { }; function registerFileDocExport(context: vscode.ExtensionContext) { - vscode.commands.registerCommand('digital-ide.hdlDoc.exportFile', () => { + vscode.commands.registerCommand('digital-ide.hdlDoc.exportFile', async () => { const option = { placeHolder: 'Select an Export Format' }; @@ -35,17 +35,16 @@ function registerFileDocExport(context: vscode.ExtensionContext) { new ExportFunctionItem('pdf', ' pdf', 'only support light theme', exportCurrentFileDocAsPDF), new ExportFunctionItem('html', ' html', 'only support light theme', exportCurrentFileDocAsHTML) ]; - - vscode.window.showQuickPick(items, option).then(item => { - if (item) { - item.exportFunc(); - } - }); + + const item = await vscode.window.showQuickPick(items, option); + if (item) { + item.exportFunc(); + } }); } function registerProjectDocExport(context: vscode.ExtensionContext) { - vscode.commands.registerCommand('digital-ide.hdlDoc.exportProject', () => { + vscode.commands.registerCommand('digital-ide.hdlDoc.exportProject', async () => { const option = { placeHolder: 'Select an Export Format' }; @@ -54,12 +53,11 @@ function registerProjectDocExport(context: vscode.ExtensionContext) { new ExportFunctionItem('pdf', ' pdf', 'only support light theme', exportProjectDocAsPDF), new ExportFunctionItem('html', ' html', 'only support light theme', exportProjectDocAsHTML) ]; - - vscode.window.showQuickPick(items, option).then(item => { - if (item) { - item.exportFunc(); - } - }); + + const item = await vscode.window.showQuickPick(items, option); + if (item) { + item.exportFunc(); + } }); } diff --git a/src/function/index.ts b/src/function/index.ts index 73622a9..dec50ec 100644 --- a/src/function/index.ts +++ b/src/function/index.ts @@ -9,6 +9,9 @@ import * as lspDocSymbol from './lsp/docSymbol'; import * as lspDefinition from './lsp/definition'; import * as lspHover from './lsp/hover'; import * as lspFormatter from '../../resources/formatter'; +import * as lspDocSemantic from './lsp/docSemantic'; + +import * as tool from './tool'; function registerDocumentation(context: vscode.ExtensionContext) { vscode.commands.registerCommand('digital-ide.hdlDoc.showWebview', hdlDoc.showDocWebview); @@ -65,11 +68,18 @@ function registerLsp(context: vscode.ExtensionContext) { vscode.languages.registerCompletionItemProvider(vlogSelector, lspCompletion.vlogMacroCompletionProvider, '`'); vscode.languages.registerCompletionItemProvider(vlogSelector, lspCompletion.vlogPositionPortProvider, '.'); vscode.languages.registerCompletionItemProvider(vlogSelector, lspCompletion.vlogCompletionProvider); - // vhdl lsp + vscode.languages.registerDocumentSemanticTokensProvider(vlogSelector, lspDocSemantic.vlogDocSenmanticProvider, lspDocSemantic.vlogLegend); + + // vhdl lsp +} + +function registerToolCommands(context: vscode.ExtensionContext) { + vscode.commands.registerCommand('digital-ide.lsp.tool.insertTextToUri', tool.insertTextToUri); } export { registerFunctionCommands, - registerLsp + registerLsp, + registerToolCommands }; \ No newline at end of file diff --git a/src/function/lsp/completion/vlog.ts b/src/function/lsp/completion/vlog.ts index 6331b70..40eca88 100644 --- a/src/function/lsp/completion/vlog.ts +++ b/src/function/lsp/completion/vlog.ts @@ -4,10 +4,11 @@ import * as fs from 'fs'; import * as util from '../util'; import { hdlFile, hdlPath } from '../../../hdlFs'; import { hdlParam, HdlSymbol } from '../../../hdlParser'; -import { AbsPath, MainOutput, ReportType } from '../../../global'; +import { AbsPath, MainOutput, RelPath, ReportType } from '../../../global'; import { Define, Include, RawSymbol } from '../../../hdlParser/common'; import { HdlInstance, HdlModule } from '../../../hdlParser/core'; import { vlogKeyword } from '../util/keyword'; +import { instanceVlogCode } from '../../sim/instance'; class VlogIncludeCompletionProvider implements vscode.CompletionItemProvider { public provideCompletionItems(document: vscode.TextDocument, position: vscode.Position, token: vscode.CancellationToken, context: vscode.CompletionContext): vscode.ProviderResult> { @@ -176,7 +177,9 @@ class VlogCompletionProvider implements vscode.CompletionItemProvider { const filePath = hdlPath.toSlash(document.fileName); // 1. provide keyword - const completions = this.getKeyWordItem(); + const completions = this.makeKeywordItems(); + completions.push(...this.makeCompilerKeywordItems()); + completions.push(...this.makeSystemKeywordItems()); const symbolResult = await HdlSymbol.all(filePath); if (!symbolResult) { @@ -199,7 +202,7 @@ class VlogCompletionProvider implements vscode.CompletionItemProvider { } // 3. provide modules - const suggestModulesPromise = this.provideModules(filePath, symbolResult.macro.includes); + const suggestModulesPromise = this.provideModules(document, position, filePath, symbolResult.macro.includes); // 4. provide params and ports of wrapper module const suggestParamsPortsPromise = this.provideParamsPorts(currentModule); @@ -219,7 +222,7 @@ class VlogCompletionProvider implements vscode.CompletionItemProvider { } } - private getKeyWordItem(): vscode.CompletionItem[] { + private makeKeywordItems(): vscode.CompletionItem[] { const vlogKeywordItem = []; for (const keyword of vlogKeyword.keys()) { const clItem = this.makekeywordCompletionItem(keyword); @@ -229,6 +232,29 @@ class VlogCompletionProvider implements vscode.CompletionItemProvider { return vlogKeywordItem; } + private makeCompilerKeywordItems(): vscode.CompletionItem[] { + const items = []; + for (const keyword of vlogKeyword.compilerKeys()) { + const clItem = new vscode.CompletionItem(keyword, vscode.CompletionItemKind.Keyword); + clItem.insertText = new vscode.SnippetString('`' + keyword); + clItem.detail = 'compiler directive'; + items.push(clItem); + } + return items; + } + + private makeSystemKeywordItems(): vscode.CompletionItem[] { + const items = []; + for (const keyword of vlogKeyword.systemKeys()) { + const clItem = new vscode.CompletionItem(keyword, vscode.CompletionItemKind.Method); + clItem.insertText = new vscode.SnippetString('\\$' + keyword + '($1);'); + clItem.detail = 'system task'; + items.push(clItem); + } + return items; + } + + private makekeywordCompletionItem(keyword: string): vscode.CompletionItem { const clItem = new vscode.CompletionItem(keyword, vscode.CompletionItemKind.Keyword); clItem.detail = 'keyword'; @@ -240,12 +266,53 @@ class VlogCompletionProvider implements vscode.CompletionItemProvider { return clItem; } - private async provideModules(filePath: AbsPath, includes: Include[]): Promise { + private async provideModules(document: vscode.TextDocument, position: vscode.Position, filePath: AbsPath, includes: Include[]): Promise { const suggestModules: vscode.CompletionItem[] = []; - // TODO : add `include xxx automatically - for (const module of hdlParam.getAllHdlModules()) { + const lspVlogConfig = vscode.workspace.getConfiguration('function.lsp.completion.vlog'); + const autoAddInclude: boolean = lspVlogConfig.get('autoAddInclude', true); + const completeWholeInstante: boolean = lspVlogConfig.get('completeWholeInstante', true); + + const includePaths = new Set(); + let lastIncludeLine = 0; + for (const include of includes) { + const absIncludePath = hdlPath.rel2abs(filePath, include.path); + includePaths.add(absIncludePath); + lastIncludeLine = Math.max(include.range.end.line, lastIncludeLine); + } + const insertPosition = new vscode.Position(lastIncludeLine, 0); + const insertRange = new vscode.Range(insertPosition, insertPosition); + const fileFolder = hdlPath.resolve(filePath, '..'); + + // used only when completeWholeInstante is true + let completePrefix = ''; + if (completeWholeInstante) { + const wordRange = document.getWordRangeAtPosition(position); + const countStart = wordRange ? wordRange.start.character : position.character; + const spaceNumber = Math.floor(countStart / 4) * 4; + console.log(wordRange, countStart, spaceNumber); + + completePrefix = ' '.repeat(spaceNumber); + } + + + for (const module of hdlParam.getAllHdlModules()) { const clItem = new vscode.CompletionItem(module.name, vscode.CompletionItemKind.Class); + + // feature 1 : auto add include path if there's no corresponding include path + if (autoAddInclude && !includePaths.has(module.path)) { + const relPath: RelPath = hdlPath.relative(fileFolder, module.path); + const includeString = '`include "' + relPath + '"\n'; + const textEdit = new vscode.TextEdit(insertRange, includeString); + clItem.additionalTextEdits = [textEdit]; + } + + // feature 2 : auto complete instance + if (completeWholeInstante) { + const snippetString = instanceVlogCode(module, '', true); + clItem.insertText = new vscode.SnippetString(snippetString); + } + clItem.detail = 'module'; suggestModules.push(clItem); } @@ -281,6 +348,7 @@ class VlogCompletionProvider implements vscode.CompletionItemProvider { for (const symbol of symbols) { if (symbol.type === 'wire' || symbol.type === 'reg') { const clItem = new vscode.CompletionItem(symbol.name, vscode.CompletionItemKind.Variable); + clItem.sortText = ''; clItem.detail = symbol.type; suggestNets.push(clItem); } diff --git a/src/function/lsp/definition/vlog.ts b/src/function/lsp/definition/vlog.ts index fb31d5c..4f3cda5 100644 --- a/src/function/lsp/definition/vlog.ts +++ b/src/function/lsp/definition/vlog.ts @@ -52,12 +52,13 @@ class VlogDefinitionProvider implements vscode.DefinitionProvider { // match `include const includeResult = util.matchInclude(document, position, all.macro.includes); + if (includeResult) { const absPath = hdlPath.rel2abs(filePath, includeResult.name); const targetFile = vscode.Uri.file(absPath); const targetPosition = new vscode.Position(0, 0); const targetRange = new vscode.Range(targetPosition, targetPosition); - const originSelectionRange = document.getWordRangeAtPosition(position, /[\."_0-9a-zA-Z]+/); + const originSelectionRange = document.getWordRangeAtPosition(position, /["\.\\\/_0-9A-Za-z]+/); const link: vscode.LocationLink = { targetUri: targetFile, targetRange, originSelectionRange }; return [link]; } @@ -142,10 +143,7 @@ class VlogDefinitionProvider implements vscode.DefinitionProvider { // match others const normalResult = util.matchNormalSymbol(targetWord, scopeSymbols.symbols); if (normalResult) { - const targetRange = util.transformRange(normalResult.range, -1, 0); - - console.log(targetRange, normalResult); - + const targetRange = util.transformRange(normalResult.range, -1, 0); const link: vscode.LocationLink = { targetUri: document.uri, targetRange }; return [link]; } diff --git a/src/function/lsp/docSemantic/index.ts b/src/function/lsp/docSemantic/index.ts new file mode 100644 index 0000000..840b29d --- /dev/null +++ b/src/function/lsp/docSemantic/index.ts @@ -0,0 +1,6 @@ +import { vlogDocSenmanticProvider, vlogLegend } from './vlog'; + +export { + vlogDocSenmanticProvider, + vlogLegend +}; \ No newline at end of file diff --git a/src/function/lsp/docSemantic/vlog.ts b/src/function/lsp/docSemantic/vlog.ts new file mode 100644 index 0000000..4ec96a5 --- /dev/null +++ b/src/function/lsp/docSemantic/vlog.ts @@ -0,0 +1,21 @@ +import * as vscode from 'vscode'; + +import { HdlSymbol } from '../../../hdlParser'; + +const tokenTypes = ['class', 'interface', 'enum', 'function', 'variable']; +const tokenModifiers = ['declaration', 'documentation']; +const vlogLegend = new vscode.SemanticTokensLegend(tokenTypes, tokenModifiers); + +class VlogDocSenmanticProvider implements vscode.DocumentSemanticTokensProvider { + public async provideDocumentSemanticTokens(document: vscode.TextDocument, token: vscode.CancellationToken): Promise { + const tokensBuilder = new vscode.SemanticTokensBuilder(vlogLegend); + return tokensBuilder.build(); + } +} + +const vlogDocSenmanticProvider = new VlogDocSenmanticProvider(); + +export { + vlogDocSenmanticProvider, + vlogLegend +}; \ No newline at end of file diff --git a/src/function/lsp/docSymbol/vlog.ts b/src/function/lsp/docSymbol/vlog.ts index 3749d1d..238eeed 100644 --- a/src/function/lsp/docSymbol/vlog.ts +++ b/src/function/lsp/docSymbol/vlog.ts @@ -2,7 +2,7 @@ import * as vscode from 'vscode'; import { AllowNull } from '../../../global'; import { HdlSymbol } from '../../../hdlParser'; -import { RawSymbol, makeVscodePosition, Range } from '../../../hdlParser/common'; +import { RawSymbol, Range } from '../../../hdlParser/common'; import { positionAfterEqual } from '../util'; diff --git a/src/function/lsp/hover/vlog.ts b/src/function/lsp/hover/vlog.ts index aedc71d..5045cf3 100644 --- a/src/function/lsp/hover/vlog.ts +++ b/src/function/lsp/hover/vlog.ts @@ -159,10 +159,7 @@ class VlogHoverProvider implements vscode.HoverProvider { if (normalResult) { const normalComment = await util.searchCommentAround(filePath, normalResult.range); const normalDesc = util.makeNormalDesc(normalResult); - - console.log(normalResult); - content.appendCodeblock(normalDesc, HdlLangID.Verilog); if (normalComment) { content.appendCodeblock(normalComment, HdlLangID.Verilog); diff --git a/src/function/lsp/util/index.ts b/src/function/lsp/util/index.ts index a0e7253..06c264a 100644 --- a/src/function/lsp/util/index.ts +++ b/src/function/lsp/util/index.ts @@ -123,7 +123,7 @@ function isInComment(document: vscode.TextDocument, position: Position, comments function matchInclude(document: vscode.TextDocument, position: vscode.Position, includes: Include[]) : AllowNull { - const selectFileRange = document.getWordRangeAtPosition(position, /[\._0-9A-Za-z]+/); + const selectFileRange = document.getWordRangeAtPosition(position, /[\.\\\/_0-9A-Za-z]+/); const selectFileName = document.getText(selectFileRange); if (!includes) { @@ -318,7 +318,8 @@ function makeParamDesc(param: HdlModuleParam): string { } function makeNormalDesc(normal: RawSymbol): string { - const desc = normal.type + ' ' + normal.width + ' ' + normal.name; + const width = normal.width ? normal.width : ''; + const desc = normal.type + ' ' + width + ' ' + normal.name; return desc; } diff --git a/src/function/lsp/util/keyword.ts b/src/function/lsp/util/keyword.ts index e7436e2..3a26bd2 100644 --- a/src/function/lsp/util/keyword.ts +++ b/src/function/lsp/util/keyword.ts @@ -2,19 +2,12 @@ import * as vscode from 'vscode'; class Keywords { - keywords: Set; - keywordItems: vscode.CompletionItem[]; - compilerKeywords: string[]; // start with ` - systemKeywords: string[]; // start with $ + private keywords: Set; + private compilerKeywords: string[]; // start with ` + private systemKeywords: string[]; // start with $ constructor(keywords: string[], compilerKeywords: string[], systemKeywords: string[]) { this.keywords = new Set(keywords); const keywordItems = []; - for (const keyword of keywords) { - const clItem = new vscode.CompletionItem(keyword, vscode.CompletionItemKind.Keyword); - clItem.detail = "keyword"; - keywordItems.push(clItem); - } - this.keywordItems = keywordItems; this.compilerKeywords = compilerKeywords; this.systemKeywords = systemKeywords; } @@ -23,6 +16,14 @@ class Keywords { return this.keywords; } + public compilerKeys(): string[] { + return this.compilerKeywords; + } + + public systemKeys(): string[] { + return this.systemKeywords; + } + public isKeyword(word: string): boolean { return this.keywords.has(word); } diff --git a/src/function/sim/instance.ts b/src/function/sim/instance.ts index 208caf0..b01044b 100644 --- a/src/function/sim/instance.ts +++ b/src/function/sim/instance.ts @@ -1,7 +1,7 @@ import * as vscode from 'vscode'; import { HdlLangID } from '../../global/enum'; import { hdlParam } from '../../hdlParser'; -import { HdlModulePort, HdlModuleParam } from '../../hdlParser/common'; +import { HdlModulePort, HdlModuleParam, HdlModulePortType } from '../../hdlParser/common'; import { HdlModule } from '../../hdlParser/core'; class ModuleInfoItem { @@ -28,23 +28,33 @@ class ModuleInfoItem { * @description verilog模式下生成整个例化的内容 * @param module 模块信息 */ -function instanceVlogCode(module: HdlModule) { - let vlogPortStr = vlogPort(module.ports); - let vlogParamStr = vlogParam(module.params); +function instanceVlogCode(module: HdlModule, prefix: string = '', returnSnippetString: boolean = false): string { + const instantiationConfig = vscode.workspace.getConfiguration('function.instantiation'); + const needComment = instantiationConfig.get('addComment', true); + const autoNetOutputDeclaration = instantiationConfig.get('autoNetOutputDeclaration', true); - let instContent = ''; - instContent += vlogPortStr.wireStr; - instContent += module.name + ' '; + const content = new vscode.SnippetString(); - if (vlogParamStr !== '') { - instContent += `#(\n${vlogParamStr})\n`; + // make net declaration if needed + if (autoNetOutputDeclaration) { + const netDeclarationString = makeNetOutputDeclaration(module.ports, prefix, needComment); + if (netDeclarationString) { + content.appendText(netDeclarationString); + } } - instContent += `u_${module.name}(\n`; - instContent += vlogPortStr.portStr; - instContent += ');\n'; + content.appendText(prefix + module.name + ' '); + if (returnSnippetString) { + content.appendPlaceholder('u_' + module.name); + } else { + content.appendText('u_' + module.name); + } - return instContent; + makeVlogParamAssignments(content, module.params, prefix, returnSnippetString, needComment); + makeVlogPortAssignments(content, module.ports, prefix, returnSnippetString, needComment); + + const instanceString = content.value; + return instanceString; } /** @@ -67,69 +77,95 @@ function instanceVhdlCode(module: HdlModule) { return instContent; } +function makeNetOutputDeclaration(ports: HdlModulePort[], prefix: string, needComment: boolean): string | null { + const maxWidthLength = Math.max(...ports.map(p => p.width.length)); + + let netOutputDeclaration = prefix + (needComment ? '// outports wire\n' : ''); + let haveOutput = false; + for (const port of ports) { + if (port.type === HdlModulePortType.Output) { + haveOutput = true; + let portWidth = port.width ? port.width : ''; + portWidth += ' '.repeat(maxWidthLength - portWidth.length + 1); + const netDeclaration = prefix + `wire ${portWidth}\t${port.name};\n`; + netOutputDeclaration += netDeclaration; + } + } + + if (!haveOutput) { + return null; + } else { + netOutputDeclaration += '\n'; + return netOutputDeclaration; + } +} + /** * @description verilog模式下对端口信息生成要例化的内容 * @param ports 端口信息列表 */ -function vlogPort(ports: HdlModulePort[]) : { wireStr: string, portStr: string} { - let nmax = getlmax(ports, 'name'); - let wmax = getlmax(ports, 'width'); - - let portStr = `\t// ports\n`; - let wireStr = '// outports wire\n'; - for (let i = 0; i < ports.length; i++) { - const port = ports[i]; - - if (port.type === 'output') { - let width = port.width; - let wpadding = wmax - width.length + 1; - width += ' '.repeat(wpadding); - // TODO: vhdl type - wireStr += `wire ${width}\t${port.name};\n`; - } - - let name = port.name; - let npadding = nmax - name.length + 1; - name += ' '.repeat(npadding); - portStr += `\t.${name}\t( ${name} )`; - if (i !== ports.length - 1) { - portStr += ','; - } - portStr += '\n'; +function makeVlogPortAssignments(content: vscode.SnippetString, ports: HdlModulePort[], prefix: string = '', returnSnippetString: boolean, needComment: boolean) { + if (ports.length === 0) { + content.appendText('();'); + return; } - - return { wireStr, portStr }; + const maxNameLength = Math.max(...ports.map(p => p.name.length)); + + content.appendText('(\n'); + + for (let i = 0; i < ports.length; ++ i) { + const port = ports[i]; + const paddingName = port.name + ' '.repeat(maxNameLength - port.name.length + 1); + + content.appendText(prefix + '\t.' + paddingName + '\t( '); + if (returnSnippetString) { + content.appendPlaceholder(port.name); + } else { + content.appendText(port.name); + } + content.appendText(' '.repeat(maxNameLength - port.name.length + 1) + ' )'); + if (i < ports.length - 1) { + content.appendText(','); + } + content.appendText('\n'); + } + + content.appendText(prefix + ');\n'); } + /** * @description verilog模式下对参数信息生成要例化的内容 * @param params 参数信息列表 */ -function vlogParam(params: HdlModuleParam[]): string { - let paramStr = ''; - let nmax = getlmax(params, 'name'); - let imax = getlmax(params, 'init'); - - // .NAME ( INIT ), - for (let i = 0; i < params.length; i++) { - let name = params[i].name; - let init = params[i].init; - - let namePadding = nmax - name.length + 1; - let initPadding = imax - init.length + 1; - - name +=' '.repeat(namePadding); - init +=' '.repeat(initPadding); - - paramStr += `\t.${name}\t( ${init} )`; - if (i !== (params.length - 1)) { - paramStr += ','; - paramStr += '\n'; - } +function makeVlogParamAssignments(content: vscode.SnippetString, params: HdlModuleParam[], prefix: string = '', returnSnippetString: boolean, needComment: boolean) { + if (params.length === 0) { + return; } - return paramStr; + const maxNameLength = Math.max(...params.map(p => p.name.length)); + const maxInitLength = Math.max(...params.map(p => p.init.length)); + + content.appendText('#(\n'); + + // .NAME ( INIT ), + for (let i = 0; i < params.length; ++ i) { + const param = params[i]; + const paddingName = param.name + ' '.repeat(maxNameLength - param.name.length + 1); + content.appendText(prefix + '\t.' + paddingName + '\t( '); + if (returnSnippetString) { + content.appendPlaceholder(param.init); + } else { + content.appendText(param.init); + } + content.appendText(' '.repeat(maxInitLength - param.init.length + 1) + ' )'); + if (i < params.length - 1) { + content.appendText(','); + } + content.appendText('\n'); + } + content.appendText(prefix + ')\n'); } /** @@ -249,7 +285,7 @@ async function selectModuleFromAll() { } } -function instanceByLangID(module: HdlModule): string { +function instanceByLangID(module: HdlModule): string { switch (module.languageId) { case HdlLangID.Verilog: return instanceVlogCode(module); case HdlLangID.Vhdl: return instanceVhdlCode(module); @@ -260,9 +296,11 @@ function instanceByLangID(module: HdlModule): string { } async function instantiation() { - const module = await selectModuleFromAll(); + const module = await selectModuleFromAll(); if (module) { - const code = instanceByLangID(module); + console.log(module); + + const code = instanceByLangID(module); const editor = vscode.window.activeTextEditor; if (editor) { selectInsert(code, editor); @@ -271,6 +309,7 @@ async function instantiation() { } export { + instanceVlogCode, instantiation, instanceByLangID, getSelectItem diff --git a/src/function/sim/testbench.ts b/src/function/sim/testbench.ts index 87e989c..ec10972 100644 --- a/src/function/sim/testbench.ts +++ b/src/function/sim/testbench.ts @@ -62,6 +62,8 @@ async function testbench() { if (!hdlFile.isHDLFile(path)) { return; } + console.log(path); + const currentHdlFile = hdlParam.getHdlFile(path); if (!currentHdlFile) { vscode.window.showErrorMessage('There is no hdlFile respect to ' + path); diff --git a/src/function/tool.ts b/src/function/tool.ts new file mode 100644 index 0000000..c34ce4b --- /dev/null +++ b/src/function/tool.ts @@ -0,0 +1,18 @@ +import * as vscode from 'vscode'; + +async function insertTextToUri(uri: vscode.Uri, text: string, position?: vscode.Position) { + if (!position) { + position = new vscode.Position(0, 0); + } + const editor = vscode.window.activeTextEditor; + if (editor) { + const edit = new vscode.WorkspaceEdit(); + edit.insert(uri, position, text); + vscode.workspace.applyEdit(edit); + } +} + + +export { + insertTextToUri +}; \ No newline at end of file diff --git a/src/function/treeView/index.ts b/src/function/treeView/index.ts index 42fbce7..3eef854 100644 --- a/src/function/treeView/index.ts +++ b/src/function/treeView/index.ts @@ -21,7 +21,7 @@ function openFileByUri(path: string, range: Range) { } } -function refreshArchTree(element: ModuleDataItem) { +function refreshArchTree(element?: ModuleDataItem) { // TODO : diff and optimize moduleTreeProvider.refresh(element); } diff --git a/src/global/opeParam.ts b/src/global/opeParam.ts index e57a06a..7273e11 100644 --- a/src/global/opeParam.ts +++ b/src/global/opeParam.ts @@ -1,7 +1,7 @@ import * as assert from 'assert'; import * as fs from 'fs'; -import { Arch, PrjInfo, RawPrjInfo, resolve, toSlash } from './prjInfo'; +import { Arch, PrjInfo, RawPrjInfo, resolve } from './prjInfo'; type AbsPath = string; type RelPath = string; @@ -70,14 +70,23 @@ class OpeParam { return this._prjInfo; } + /** + * path of property.json + */ public get propertyJsonPath(): AbsPath { return this._propertyJsonPath; } + /** + * path of property-schema.json + */ public get propertySchemaPath() : AbsPath { return this._propertySchemaPath; } + /** + * path of property-init.json + */ public get propertyInitPath() : AbsPath { return this._propertyInitPath; } @@ -156,19 +165,16 @@ class OpeParam { * get User's property.json */ public getUserPrjInfo(): PrjInfo { - const propertyJsonPath = this.propertyJsonPath; const userPrjInfo = new PrjInfo(); - if (fs.existsSync(propertyJsonPath)) { - const rawPrjInfo = readJSON(propertyJsonPath); - userPrjInfo.merge(rawPrjInfo); - } else { - // use default config instead - const rawPrjInfo = readJSON(this.propertyInitPath); - userPrjInfo.merge(rawPrjInfo); - } + const rawPrjInfo = this.getRawUserPrjInfo(); + userPrjInfo.merge(rawPrjInfo); return userPrjInfo; } + /** + * get content from property.json (disk IO) + * @returns + */ public getRawUserPrjInfo(): RawPrjInfo { const propertyJsonPath = this.propertyJsonPath; if (fs.existsSync(propertyJsonPath)) { diff --git a/src/global/prjInfo.ts b/src/global/prjInfo.ts index 0535ecd..2b41900 100644 --- a/src/global/prjInfo.ts +++ b/src/global/prjInfo.ts @@ -203,7 +203,7 @@ class PrjInfo implements PrjInfoMeta { */ public uniformisePath(path: AbsPath): AbsPath { const slashPath = toSlash(path); - const replacedPath = this.replacePathToken(path); + const replacedPath = this.replacePathToken(slashPath); return replacedPath; } @@ -240,7 +240,7 @@ class PrjInfo implements PrjInfoMeta { public updateToolChain(toolChain?: ToolChainType) { if (toolChain) { if (!validToolChainType(toolChain)) { - vscode.window.showErrorMessage('expect toolChain to be "xilinx"'); + vscode.window.showErrorMessage('expect toolChain to be "xilinx", "intel", "custom"'); return; } this._toolChain = toolChain; @@ -250,7 +250,7 @@ class PrjInfo implements PrjInfoMeta { public updatePathWisely(obj: Record, attr: T, path?: Path | Path[], - root?: AbsPath) { + root?: AbsPath) { if (path) { if (path instanceof Array) { const actualPaths = []; @@ -267,6 +267,8 @@ class PrjInfo implements PrjInfoMeta { obj[attr] = actualPath; } } + } else { + obj[attr] = ''; } } @@ -335,7 +337,7 @@ class PrjInfo implements PrjInfoMeta { private setDefaultValue(obj: Record, attr: T, defaultValue: K) { - const value: K = obj[attr]; + const value: K = obj[attr]; let isNull = !Boolean(value); if (typeof value === 'string') { isNull ||= value === 'none'; @@ -353,7 +355,6 @@ class PrjInfo implements PrjInfoMeta { public updateArch(arch?: Arch) { const workspacePath = this._workspacePath; - if (arch) { this.updatePathWisely(this.arch, 'prjPath', arch.prjPath); if (arch.hardware) { @@ -381,10 +382,10 @@ class PrjInfo implements PrjInfoMeta { this.arch.software.src = join(softwarePath, 'src'); this.arch.software.data = join(softwarePath, 'data'); } - - // if path is '', set as workspace + + // // if path is '', set as workspace this.setDefaultValue(this.arch.hardware, 'src', workspacePath); - this.setDefaultValue(this.arch.hardware, 'sim', workspacePath); + this.setDefaultValue(this.arch.hardware, 'sim', this.arch.hardware.src); this.setDefaultValue(this.arch.hardware, 'data', workspacePath); this.setDefaultValue(this.arch.software, 'src', workspacePath); this.setDefaultValue(this.arch.software, 'data', workspacePath); @@ -454,7 +455,7 @@ class PrjInfo implements PrjInfoMeta { * reserve the value that not covered in rawPrjInfo * @param rawPrjInfo */ - public merge(rawPrjInfo: RawPrjInfo) { + public merge(rawPrjInfo: RawPrjInfo) { this.updateToolChain(rawPrjInfo.toolChain); this.updatePrjName(rawPrjInfo.prjName); this.updateIP_REPO(rawPrjInfo.IP_REPO); @@ -491,6 +492,24 @@ class PrjInfo implements PrjInfoMeta { return libPath; } + public get hardwareSimPath(): AbsPath { + const simPath = this._arch.hardware.sim; + if (fspath.isAbsolute(simPath)) { + return simPath; + } + const workspace = this._workspacePath; + return hdlPath.join(workspace, simPath); + } + + public get hardwareSrcPath(): AbsPath { + const srcPath = this._arch.hardware.src; + if (fspath.isAbsolute(srcPath)) { + return srcPath; + } + const workspace = this._workspacePath; + return hdlPath.join(workspace, srcPath); + } + public json(): RawPrjInfo { return { toolChain: this._toolChain, @@ -505,9 +524,6 @@ class PrjInfo implements PrjInfoMeta { } }; - - - export { PrjInfo, PrjInfoDefaults, diff --git a/src/global/util.ts b/src/global/util.ts index 0316e85..283cfc9 100644 --- a/src/global/util.ts +++ b/src/global/util.ts @@ -16,7 +16,26 @@ class PathSet { } } +/** + * tell if two set are element-wise equal + * @param setA + * @param setB + */ +function isSameSet(setA: Set, setB: Set): boolean { + if (setA.size !== setB.size) { + return false; + } + + for (const el of setB) { + if (!setA.has(el)) { + return false; + } + } + return true; +} + export { - PathSet + PathSet, + isSameSet }; \ No newline at end of file diff --git a/src/hdlFs/file.ts b/src/hdlFs/file.ts index f350e90..df54414 100644 --- a/src/hdlFs/file.ts +++ b/src/hdlFs/file.ts @@ -65,11 +65,11 @@ function isSystemVerilogFile(path: AbsPath): boolean { return systemVerilogExts.includes(ext); } -function isHDLFile(path: AbsPath): boolean { +function isHDLFile(path: AbsPath): boolean { if (!isFile(path)) { return false; } - const ext = hdlPath.extname(path, false); + const ext = hdlPath.extname(path, false); return hdlExts.includes(ext); } @@ -96,13 +96,13 @@ function pickFileRecursive(path: AbsPath | AbsPath[] | Set, ignores?: A const hdlFiles = []; for (const file of fs.readdirSync(path)) { - const filePath = hdlPath.join(path, file); + const filePath = hdlPath.join(path, file); if (isDir(filePath)) { - const subHdlFiles = pickFileRecursive(filePath, ignores); + const subHdlFiles = pickFileRecursive(filePath, ignores, condition); if (subHdlFiles.length > 0) { hdlFiles.push(...subHdlFiles); } - } else if (!condition || condition(filePath)) { + } else if (!condition || condition(filePath)) { hdlFiles.push(filePath); } } @@ -178,9 +178,7 @@ function writeFile(path: AbsPath, content: string): boolean { } function readJSON(path: AbsPath): object { - try { - console.log(path); - + try { const context = fs.readFileSync(path, 'utf-8'); return JSON.parse(context); } catch (err) { diff --git a/src/hdlFs/path.ts b/src/hdlFs/path.ts index db46279..4e46163 100644 --- a/src/hdlFs/path.ts +++ b/src/hdlFs/path.ts @@ -26,6 +26,15 @@ function rel2abs(curPath: AbsPath, relPath: RelPath): AbsPath { return toSlash(absPath); } + +function relative(from: AbsPath, to: AbsPath): RelPath { + let rel = fspath.relative(from, to); + if (!rel.startsWith('.') && !rel.startsWith('./')) { + rel = './' + rel; + } + return toSlash(rel); +} + /** * cat paths with '/' * @param paths @@ -87,6 +96,7 @@ function exist(path: AbsPath | undefined): boolean { export { toSlash, rel2abs, + relative, join, resolve, filename, diff --git a/src/hdlParser/common.ts b/src/hdlParser/common.ts index e4eefdc..fa4385f 100644 --- a/src/hdlParser/common.ts +++ b/src/hdlParser/common.ts @@ -25,7 +25,7 @@ enum HdlModulePortType { Inout = 'inout', Output = 'output', Input = 'input', - Unknown = 'Unknown' + Unknown = 'unknown' }; enum HdlModuleParamType {LocalParam, Parameter, Unknown}; diff --git a/src/hdlParser/core.ts b/src/hdlParser/core.ts index e4046ec..9d9014d 100644 --- a/src/hdlParser/core.ts +++ b/src/hdlParser/core.ts @@ -11,7 +11,7 @@ class HdlParam { private readonly srcTopModules : Set = new Set(); private readonly simTopModules : Set = new Set(); private readonly pathToHdlFiles : Map = new Map(); - private readonly modules : Set = new Set(); + public readonly modules : Set = new Set(); private readonly unhandleInstances : Set = new Set(); public hasHdlFile(path: AbsPath): boolean { @@ -34,11 +34,34 @@ class HdlParam { return hdlFiles; } + /** + * used only in initialization stage + * @param hdlFile + */ public addHdlFile(hdlFile: HdlFile) { const path = hdlFile.path; this.pathToHdlFiles.set(path, hdlFile); } + /** + * add a file by path and create context + * @param path absolute path of the file to be added + */ + public async addHdlPath(path: AbsPath) { + path = hdlPath.toSlash(path); + await this.initHdlFiles([path]); + const hdlFile = this.getHdlFile(path); + if (!hdlFile) { + MainOutput.report('error happen when we attempt to add file by path: ' + path, ReportType.Error); + } else { + hdlFile.makeInstance(); + // when a new file is added, retry the solution of dependency + for (const hdlModule of hdlFile.getAllHdlModules()) { + hdlModule.solveUnhandleInstance(); + } + } + } + public hasHdlModule(path: AbsPath | undefined, name: string): boolean { if (!path) { return false; @@ -184,12 +207,28 @@ class HdlParam { this.unhandleInstances.delete(inst); } + /** + * vlog -> HdlLangID.Verilog + * svlog -> HdlLangID.SystemVerilog + * vhdl -> HdlLangID.Vhdl + * @param langID + */ + private alignLanguageId(langID: string) : HdlLangID { + switch (langID) { + case 'vhdl': return HdlLangID.Vhdl; + case 'vlog': return HdlLangID.Verilog; + case 'svlog': return HdlLangID.SystemVerilog; + default: return HdlLangID.Unknown; + } + } + private async doHdlFast(path: AbsPath) { try { - const fast = await HdlSymbol.fast(path); + const fast = await HdlSymbol.fast(path); if (fast) { + const languageId = this.alignLanguageId(fast.languageId); new HdlFile(path, - fast.languageId, + languageId, fast.macro, fast.content); } @@ -254,6 +293,18 @@ class HdlParam { } return moduleFiles; } + + + public deleteHdlFile(path: AbsPath) { + path = hdlPath.toSlash(path); + const moduleFile = this.getHdlFile(path); + if (moduleFile) { + for (const name of moduleFile.getAllModuleNames()) { + moduleFile.deleteHdlModule(name); + } + this.pathToHdlFiles.delete(path); + } + } }; const hdlParam = new HdlParam(); @@ -324,6 +375,13 @@ class HdlInstance { } return false; } + + public update(newInstance: common.RawHdlInstance) { + this.type = newInstance.type; + this.range = newInstance.range; + this.instparams = newInstance.instparams; + this.instports = newInstance.instports; + } }; class HdlModule { @@ -348,22 +406,10 @@ class HdlModule { this.file = file; this.name = name; this.range = range; - this.params = params; - this.ports = ports; + this.params = params ? params : []; + this.ports = ports ? ports : []; - if (!this.params) { - this.params = []; - } - - if (!this.ports) { - this.ports = []; - } - - // make instance this.rawInstances = instances; - if (!this.rawInstances) { - this.rawInstances = []; - } this.nameToInstances = new Map(); // add in hdlParam data structure @@ -431,14 +477,13 @@ class HdlModule { return hdlInstance; } - public makeNameToInstances() { - - if (this.rawInstances) { + public makeNameToInstances() { + if (this.rawInstances !== undefined) { this.nameToInstances.clear(); for (const inst of this.rawInstances) { this.createHdlInstance(inst); } - this.rawInstances = undefined; + // this.rawInstances = undefined; } else { MainOutput.report('call makeNameToInstances but this.rawInstances is undefined', ReportType.Warn); @@ -450,7 +495,7 @@ class HdlModule { this.deleteInstance(inst); } - public deleteInstance(inst: HdlInstance | undefined) { + public deleteInstance(inst?: HdlInstance) { if (inst) { this.deleteUnhandleInstance(inst); hdlParam.deleteUnhandleInstance(inst); @@ -585,13 +630,40 @@ class HdlModule { inst.locateHdlModule(); } } + + public update(newModule: common.RawHdlModule) { + this.ports = newModule.ports; + this.params = newModule.params; + this.range = newModule.range; + // compare and make change to instance + const uncheckedInstanceNames = new Set(); + for (const inst of this.getAllInstances()) { + uncheckedInstanceNames.add(inst.name); + } + + for (const newInst of newModule.instances) { + if (uncheckedInstanceNames.has(newInst.name)) { + // match exist instance, compare and update + const originalInstance = this.getInstance(newInst.name); + originalInstance?.update(newInst); + uncheckedInstanceNames.delete(newInst.name); + } else { + // unknown instance, create it + this.createHdlInstance(newInst); + } + } + // delete Instance that not visited + for (const instName of uncheckedInstanceNames) { + this.deleteInstanceByName(instName); + } + } }; class HdlFile { - path: string; - languageId: HdlLangID; - type: common.HdlFileType; - macro: common.Macro; + public path: string; + public languageId: HdlLangID; + public type: common.HdlFileType; + public macro: common.Macro; private readonly nameToModule: Map; constructor(path: string, @@ -652,7 +724,27 @@ class HdlFile { public deleteHdlModule(name: string) { const hdlModule = this.getHdlModule(name); if (hdlModule) { + // delete child reference in the module which use this + for (const childInst of hdlModule.getAllGlobalRefers()) { + const userModule = childInst.parentMod; + childInst.module = undefined; + childInst.instModPath = undefined; + childInst.instModPathStatus = common.InstModPathStatus.Unknown; + hdlParam.addUnhandleInstance(childInst); + userModule.addUnhandleInstance(childInst); + } + + // delete all the instance in the module + for (const inst of hdlModule.getAllInstances()) { + hdlModule.deleteInstance(inst); + } + + // delete any variables containing module + hdlParam.deleteTopModule(hdlModule); + hdlParam.deleteTopModuleToSource(hdlModule); + hdlParam.modules.delete(hdlModule); + this.nameToModule.delete(hdlModule.name); } } @@ -661,6 +753,10 @@ class HdlFile { module.makeNameToInstances(); } } + + public updateMacro(macro: common.Macro) { + this.macro = macro; + } } diff --git a/src/manager/prj.ts b/src/manager/prj.ts index 9f7d66a..3bdb4e8 100644 --- a/src/manager/prj.ts +++ b/src/manager/prj.ts @@ -87,6 +87,10 @@ class PrjManage { return []; } + /** + * get all the hdl files that to be parsed in the project + * @returns + */ public getPrjHardwareFiles(): AbsPath[] { const searchPathSet = new PathSet(); const prjInfo = opeParam.prjInfo; @@ -97,24 +101,32 @@ class PrjManage { MainOutput.report(`libManage finish process, add ${fileChange.add.length} files, del ${fileChange.del.length} files`, ReportType.Info); // add possible folder to search - searchPathSet.checkAdd(hardwareInfo.src); + searchPathSet.checkAdd(prjInfo.hardwareSrcPath); + searchPathSet.checkAdd(prjInfo.hardwareSimPath); searchPathSet.checkAdd(hardwareInfo.sim); searchPathSet.checkAdd(prjInfo.getLibraryCommonPaths()); searchPathSet.checkAdd(prjInfo.getLibraryCustomPaths()); + + + MainOutput.report(' search folders: ', ReportType.Debug); + searchPathSet.files.forEach(p => MainOutput.report(p, ReportType.Debug)); // TODO : make something like .gitignore const ignores = this.getIgnoreFiles(); // do search const searchPaths = searchPathSet.files; - return hdlFile.getHDLFiles(searchPaths, ignores); + + const hdlFiles = hdlFile.getHDLFiles(searchPaths, ignores); + return hdlFiles; } + + public async initialise(context: vscode.ExtensionContext, countTimeCost: boolean = true) { if (countTimeCost) { console.time('launch'); - } - + } await this.initOpeParam(context); MainOutput.report('finish initialise opeParam', ReportType.Info); diff --git a/src/monitor/event.ts b/src/monitor/event.ts new file mode 100644 index 0000000..3b9bc02 --- /dev/null +++ b/src/monitor/event.ts @@ -0,0 +1,238 @@ +/* eslint-disable @typescript-eslint/naming-convention */ +import assert = require('assert'); +import * as chokidar from 'chokidar'; +import * as vscode from 'vscode'; +import { refreshArchTree } from '../function/treeView'; + +import { AbsPath, MainOutput, opeParam, RelPath, ReportType } from '../global'; +import { isSameSet } from '../global/util'; +import { hdlFile, hdlPath } from '../hdlFs'; +import { hdlParam, HdlSymbol } from '../hdlParser'; +import { prjManage } from '../manager'; + +import type { HdlMonitor } from './index'; + +enum Event { + Add = 'add', // emit when add file + AddDir = 'addDir', // emit when add folder + Unlink = 'unlink', // emit when delete file + UnlinkDir = 'unlinkDir', // emit when delete folder + Change = 'change', // emit when file changed + All = 'all', // all the change above + Ready = 'ready', + Raw = 'raw', + Error = 'error' +}; + + +abstract class BaseAction { + public listenChange(m: HdlMonitor) { + const fSWatcher = this.selectFSWatcher(m); + if (!fSWatcher) { + MainOutput.report("FSWatcher hasn't been made!", ReportType.Error); + return; + } + fSWatcher.on(Event.Change, path => this.change(path, m)); + } + + public listenAdd(m: HdlMonitor) { + const fSWatcher = this.selectFSWatcher(m); + if (!fSWatcher) { + MainOutput.report("FSWatcher hasn't been made!", ReportType.Error); + return; + } + fSWatcher.on(Event.Add, path => this.add(path, m)); + } + + public listenUnlink(m: HdlMonitor) { + const fSWatcher = this.selectFSWatcher(m); + if (!fSWatcher) { + MainOutput.report("FSWatcher hasn't been made!", ReportType.Error); + return; + } + fSWatcher.on(Event.Unlink, path => this.unlink(path, m)); + } + + abstract selectFSWatcher(m: HdlMonitor): chokidar.FSWatcher | undefined; + abstract change(path: AbsPath, m: HdlMonitor): Promise; + abstract add(path: AbsPath, m: HdlMonitor): Promise; + abstract unlink(path: AbsPath, m: HdlMonitor): Promise; +} + +class HdlAction extends BaseAction { + selectFSWatcher(m: HdlMonitor): chokidar.FSWatcher | undefined { + return m.hdlMonitor; + } + + async add(path: string, m: HdlMonitor): Promise { + console.log('HdlAction add'); + + path = hdlPath.toSlash(path); + // create corresponding moduleFile + hdlParam.initHdlFiles([path]); + + const moduleFile = hdlParam.getHdlFile(path); + if (!moduleFile) { + console.log('error happen when create moduleFile', path); + } else { + moduleFile.makeInstance(); + for (const module of moduleFile.getAllHdlModules()) { + module.solveUnhandleInstance(); + } + } + refreshArchTree(); + } + + async unlink(path: string, m: HdlMonitor): Promise { + console.log('HdlAction unlink'); + + path = hdlPath.toSlash(path); + hdlParam.deleteHdlFile(path); + refreshArchTree(); + } + + async change(path: string, m: HdlMonitor): Promise { + console.log('HdlAction change'); + + path = hdlPath.toSlash(path); + const moduleFile = hdlParam.getHdlFile(path); + + if (!moduleFile) { + return; + } + + const fast = await HdlSymbol.fast(path); + if (!fast) { + vscode.window.showErrorMessage('error happen when parse ' + path + '\nFail to update'); + return; + } + + // 1. update marco directly + moduleFile.updateMacro(fast.macro); + + // 2. update modules one by one + const uncheckedModuleNames = new Set(); + for (const name of moduleFile.getAllModuleNames()) { + uncheckedModuleNames.add(name); + } + + for (const rawHdlModule of fast.content) { + const moduleName = rawHdlModule.name; + if (uncheckedModuleNames.has(moduleName)) { + // match the same module, check then + const originalModule = moduleFile.getHdlModule(moduleName); + uncheckedModuleNames.delete(moduleName); + originalModule?.update(rawHdlModule); + } else { + // no matched, create it + const newModule = moduleFile.createHdlModule(rawHdlModule); + newModule.makeNameToInstances(); + newModule.solveUnhandleInstance(); + } + } + + // 3. delete module not visited yet + for (const moduleName of uncheckedModuleNames) { + moduleFile.deleteHdlModule(moduleName); + } + + refreshArchTree(); + } +} + + +class PpyAction extends BaseAction { + selectFSWatcher(m: HdlMonitor): chokidar.FSWatcher | undefined { + return m.ppyMonitor; + } + + async add(path: string, m: HdlMonitor): Promise { + console.log('PpyAction add'); + assert.equal(hdlPath.toSlash(path), opeParam.propertyJsonPath); + this.updateProperty(m); + } + + async unlink(path: string, m: HdlMonitor): Promise { + console.log('PpyAction unlink'); + assert.equal(hdlPath.toSlash(path), opeParam.propertyJsonPath); + this.updateProperty(m); + } + + async change(path: string, m: HdlMonitor): Promise { + console.log('PpyAction change'); + assert.equal(hdlPath.toSlash(path), opeParam.propertyJsonPath); + this.updateProperty(m); + } + + // get path set from opeParam that used to tell if need to remake HdlMonitor + private getImportantPathSet(): Set { + const pathSet = new Set(); + pathSet.add(opeParam.prjInfo.arch.hardware.sim); + pathSet.add(opeParam.prjInfo.arch.hardware.src); + pathSet.add(opeParam.prjInfo.libCommonPath); + pathSet.add(opeParam.prjInfo.libCustomPath); + return pathSet; + } + + public async updateProperty(m: HdlMonitor) { + const originalPathSet = this.getImportantPathSet(); + const originalHdlFiles = prjManage.getPrjHardwareFiles(); + + const rawPrjInfo = opeParam.getRawUserPrjInfo(); + opeParam.mergePrjInfo(rawPrjInfo); + + const currentPathSet = this.getImportantPathSet(); + if (isSameSet(originalPathSet, currentPathSet)) { + return; + } + const options: vscode.ProgressOptions = { location: vscode.ProgressLocation.Notification, title: 'modify the project' }; + vscode.window.withProgress(options, async () => await this.refreshHdlMonitor(m, originalHdlFiles)); + } + + public async refreshHdlMonitor(m: HdlMonitor, originalHdlFiles: AbsPath[]) { + m.remakeHdlMonitor(); + + // update pl + const currentHdlFiles = prjManage.getPrjHardwareFiles(); + await this.updatePL(originalHdlFiles, currentHdlFiles); + + refreshArchTree(); + } + + public async updatePL(oldFiles: AbsPath[], newFiles: AbsPath[]) { + if (prjManage.pl) { + const uncheckHdlFileSet = new Set(oldFiles); + const addFiles: AbsPath[] = []; + const delFiles: AbsPath[] = []; + + for (const path of newFiles) { + if (!uncheckHdlFileSet.has(path)) { + await hdlParam.addHdlPath(path); + addFiles.push(path); + } else { + uncheckHdlFileSet.delete(path); + } + } + const vivadoAddPromise = prjManage.pl.addFiles(addFiles); + + for (const path of uncheckHdlFileSet) { + hdlParam.deleteHdlFile(path); + delFiles.push(path); + } + const vivadoDelPromise = prjManage.pl.delFiles(delFiles); + + await vivadoAddPromise; + await vivadoDelPromise; + } else { + MainOutput.report('PL is not registered', ReportType.Warn); + } + } +} + +const hdlAction = new HdlAction(); +const ppyAction = new PpyAction(); + +export { + hdlAction, + ppyAction +}; \ No newline at end of file diff --git a/src/monitor/index.ts b/src/monitor/index.ts new file mode 100644 index 0000000..f555464 --- /dev/null +++ b/src/monitor/index.ts @@ -0,0 +1,103 @@ +import * as chokidar from 'chokidar'; +import { MainOutput, opeParam, ReportType } from '../global'; +import { hdlExts } from '../global/lang'; +import { PathSet } from '../global/util'; +import { hdlPath } from '../hdlFs'; + +import * as Event from './event'; + +class HdlMonitor{ + private monitorConfig: chokidar.WatchOptions; + public hdlMonitor?: chokidar.FSWatcher; + public ppyMonitor?: chokidar.FSWatcher; + + constructor() { + // public config for monitor + this.monitorConfig = { + persistent: true, + usePolling: false, + ignoreInitial: true, + }; + } + + public makeMonitor(paths: string | string[], config?: chokidar.WatchOptions): chokidar.FSWatcher { + if (!config) { + config = this.monitorConfig; + } + return chokidar.watch(paths, config); + } + + /** + * @description get monitor for property.json + */ + public getPpyMonitor() { + const watcherPath = opeParam.propertyJsonPath; + return this.makeMonitor(watcherPath); + } + + /** + * @description get monitor for HDLParam update + */ + public getHdlMonitor() { + const hdlExtsGlob = `**/*.{${hdlExts.join(',')}}`; + const prjInfo = opeParam.prjInfo; + + const monitorPathSet = new PathSet(); + monitorPathSet.checkAdd(prjInfo.hardwareSimPath); + monitorPathSet.checkAdd(prjInfo.hardwareSrcPath); + monitorPathSet.checkAdd(prjInfo.libCommonPath); + monitorPathSet.checkAdd(prjInfo.libCustomPath); + + const monitorFoldersWithGlob = []; + for (const folder of monitorPathSet.files) { + const globPath = hdlPath.join(folder, hdlExtsGlob); + monitorFoldersWithGlob.push(globPath); + } + MainOutput.report('Following folders are tracked: '); + monitorPathSet.files.forEach(p => MainOutput.report(p)); + + return this.makeMonitor(monitorFoldersWithGlob); + } + + public close() { + this.hdlMonitor?.close(); + this.ppyMonitor?.close(); + } + + public start() { + // make monitor + this.hdlMonitor = this.getHdlMonitor(); + this.ppyMonitor = this.getPpyMonitor(); + + this.registerHdlMonitorListener(); + this.registerPpyMonitorListener(); + } + + public remakeHdlMonitor() { + if (this.hdlMonitor) { + this.hdlMonitor.close(); + this.hdlMonitor = this.getHdlMonitor(); + this.registerHdlMonitorListener(); + } + } + + public registerHdlMonitorListener() { + Event.hdlAction.listenAdd(this); + Event.hdlAction.listenChange(this); + Event.hdlAction.listenUnlink(this); + } + + public registerPpyMonitorListener() { + Event.ppyAction.listenAdd(this); + Event.ppyAction.listenChange(this); + Event.ppyAction.listenUnlink(this); + } +}; + +const hdlMonitor = new HdlMonitor(); + +export { + hdlMonitor, +}; + +export type { HdlMonitor }; \ No newline at end of file diff --git a/src/test/monitor/.vscode/property.json b/src/test/monitor/.vscode/property.json new file mode 100644 index 0000000..da1fccd --- /dev/null +++ b/src/test/monitor/.vscode/property.json @@ -0,0 +1,17 @@ +{ + "toolChain": "xilinx", + "prjName": { + "PL": "template" + }, + "soc": { + "core": "none" + }, + "enableShowLog": false, + "device": "none", + "arch": { + "hardware": { + "src": "./src1", + "sim": "./sim1" + } + } +} \ No newline at end of file diff --git a/src/test/monitor/sim1/testbench.v b/src/test/monitor/sim1/testbench.v new file mode 100644 index 0000000..ebc7f5f --- /dev/null +++ b/src/test/monitor/sim1/testbench.v @@ -0,0 +1,50 @@ +module testbench(); + +parameter DATA_WIDTH = 32; +parameter ADDR_WIDTH = 32; +parameter MAIN_FRE = 100; //unit MHz +reg sys_clk = 0; +reg sys_rst = 1; +reg [DATA_WIDTH-1:0] data = 0; +reg [ADDR_WIDTH-1:0] addr = 0; + +always begin + #(500/MAIN_FRE) sys_clk = ~sys_clk; +end + +always begin + #50 sys_rst = 0; +end + +always @(posedge sys_clk) begin + if (sys_rst) + addr = 0; + else + addr = addr + 1; +end +always @(posedge sys_clk) begin + if (sys_rst) + data = 0; + else + data = data + 1; +end + +//Instance +// outports wire +wire [8:0] c; + +SimpleAdd_1 u_SimpleAdd_1( + .a ( a ), + .b ( b ), + .c ( c ) +); + + + +initial begin + $dumpfile("wave.vcd"); + $dumpvars(0, testbench); + #50000 $finish; +end + +endmodule //TOP diff --git a/src/test/monitor/src1/add.v b/src/test/monitor/src1/add.v new file mode 100644 index 0000000..f544fb7 --- /dev/null +++ b/src/test/monitor/src1/add.v @@ -0,0 +1,11 @@ +module SimpleAdd_1( + input [8:0] a, b, + output [8:0] c +); + + assign c = a + b; + + +endmodule //SimpleAdd + + diff --git a/src/test/monitor/src2/add.v b/src/test/monitor/src2/add.v new file mode 100644 index 0000000..4f5d1e2 --- /dev/null +++ b/src/test/monitor/src2/add.v @@ -0,0 +1,9 @@ +module SimpleAdd_2( + input [8:0] a, b, + output [8:0] c +); + + assign c = a + b; + + +endmodule //SimpleAdd From 56d88b9c45afaab2c4200e4c5091b938097f9e2d Mon Sep 17 00:00:00 2001 From: Kirigaya <1193466151@qq.com> Date: Thu, 6 Jul 2023 15:14:11 +0800 Subject: [PATCH 19/54] cancel usage of multi-thread to improve performance --- resources/hdlParser/index.js | 16 ++++++++++++++++ src/hdlParser/core.ts | 11 +++-------- 2 files changed, 19 insertions(+), 8 deletions(-) diff --git a/resources/hdlParser/index.js b/resources/hdlParser/index.js index cf211d5..2de23de 100644 --- a/resources/hdlParser/index.js +++ b/resources/hdlParser/index.js @@ -18,14 +18,30 @@ const _hdlParser = { } }; +const debug = { + acquire: 0, + io: 0, + compute: 0 +}; async function callParser(path, func) { + const s1 = Date.now(); const wasmModule = await _hdlParser.acquire(); + debug.acquire += Date.now() - s1; + const file = _hdlParser.tempPath; const fileLength = file.length; + + const s2 = Date.now(); const source = fs.readFileSync(path, 'utf-8') + '\n'; wasmModule.FS.writeFile(_hdlParser.tempPath, source, { encoding: 'utf8' }); + debug.io += Date.now() - s2; + + const s3 = Date.now(); const res = wasmModule.ccall('call_parser', 'string', ['string', 'int', 'int'], [file, fileLength, func]); + debug.compute += Date.now() - s3; + + console.log(debug); return JSON.parse(res); } diff --git a/src/hdlParser/core.ts b/src/hdlParser/core.ts index 9d9014d..33aa625 100644 --- a/src/hdlParser/core.ts +++ b/src/hdlParser/core.ts @@ -224,7 +224,7 @@ class HdlParam { private async doHdlFast(path: AbsPath) { try { - const fast = await HdlSymbol.fast(path); + const fast = await HdlSymbol.fast(path); if (fast) { const languageId = this.alignLanguageId(fast.languageId); new HdlFile(path, @@ -239,13 +239,8 @@ class HdlParam { } public async initHdlFiles(hdlFiles: AbsPath[] | Generator) { - const pools: Promise[] = []; for (const path of hdlFiles) { - const p = this.doHdlFast(path); - pools.push(p); - } - for (const p of pools) { - await p; + await this.doHdlFast(path); } } @@ -254,7 +249,7 @@ class HdlParam { for (const hdlFile of this.getAllHdlFiles()) { hdlFile.makeInstance(); - } + } } public getTopModulesByType(type: string): HdlModule[] { From f10f6cee1806a817f2502fa9907cc27abf4fff90 Mon Sep 17 00:00:00 2001 From: Kirigaya <1193466151@qq.com> Date: Fri, 7 Jul 2023 02:29:43 +0800 Subject: [PATCH 20/54] #fix hover | #fix completion --- resources/hdlParser/index.js | 2 +- src/extension.ts | 44 +++++++++++++++- src/function/lsp/completion/vlog.ts | 20 ++++--- src/function/lsp/hover/vlog.ts | 2 + src/function/lsp/util/index.ts | 6 ++- src/hdlParser/common.ts | 2 + src/test/.vscode/property.json | 11 ++++ src/test/vlog/parse_test/instance_test.v | 3 +- syntaxes/verilog.json | 66 ++++++++++++++++-------- 9 files changed, 121 insertions(+), 35 deletions(-) create mode 100644 src/test/.vscode/property.json diff --git a/resources/hdlParser/index.js b/resources/hdlParser/index.js index 2de23de..d042343 100644 --- a/resources/hdlParser/index.js +++ b/resources/hdlParser/index.js @@ -41,7 +41,7 @@ async function callParser(path, func) { const res = wasmModule.ccall('call_parser', 'string', ['string', 'int', 'int'], [file, fileLength, func]); debug.compute += Date.now() - s3; - console.log(debug); + console.log(path, debug); return JSON.parse(res); } diff --git a/src/extension.ts b/src/extension.ts index 317474a..3fbea3e 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -1,10 +1,14 @@ import * as vscode from 'vscode'; +import * as fs from 'fs'; +import * as fspath from 'path'; -import { opeParam, MainOutput, ReportType } from './global'; +import { opeParam, MainOutput, ReportType, AbsPath } from './global'; import { hdlParam } from './hdlParser'; import * as manager from './manager'; import * as func from './function'; import { hdlMonitor } from './monitor'; +import { hdlPath } from './hdlFs'; +import { vlogFast } from '../resources/hdlParser'; async function registerCommand(context: vscode.ExtensionContext) { manager.registerManagerCommands(context); @@ -14,10 +18,46 @@ async function registerCommand(context: vscode.ExtensionContext) { func.registerToolCommands(context); } -async function launch(context: vscode.ExtensionContext) { +function* walk(path: AbsPath, ext: string): Generator { + if (fs.lstatSync(path).isFile()) { + if (path.endsWith(ext)) { + yield path; + } + } else { + for (const file of fs.readdirSync(path)) { + const stat = fs.lstatSync(path); + const filePath = fspath.join(path, file); + if (stat.isDirectory()) { + for (const targetPath of walk(filePath, ext)) { + yield targetPath; + } + } else if (stat.isFile()) { + if (filePath.endsWith(ext)) { + yield filePath; + } + } + } + } +} + + +async function test(context: vscode.ExtensionContext) { + if (vscode.workspace.workspaceFolders !== undefined && + vscode.workspace.workspaceFolders.length !== 0) { + const wsPath = hdlPath.toSlash(vscode.workspace.workspaceFolders[0].uri.fsPath); + for (const file of walk(wsPath, '.v')) { + if (typeof file === 'string') { + await vlogFast(file); + } + } + } +} + +async function launch(context: vscode.ExtensionContext) { await manager.prjManage.initialise(context); await registerCommand(context); hdlMonitor.start(); + // await vlogFast("e:/Project/Digial-IDE/TestWs/simulate/user/sim/tb_file/scc018ug_hd_rvt.v"); console.log(hdlParam); diff --git a/src/function/lsp/completion/vlog.ts b/src/function/lsp/completion/vlog.ts index 40eca88..da87e71 100644 --- a/src/function/lsp/completion/vlog.ts +++ b/src/function/lsp/completion/vlog.ts @@ -177,9 +177,9 @@ class VlogCompletionProvider implements vscode.CompletionItemProvider { const filePath = hdlPath.toSlash(document.fileName); // 1. provide keyword - const completions = this.makeKeywordItems(); - completions.push(...this.makeCompilerKeywordItems()); - completions.push(...this.makeSystemKeywordItems()); + const completions = this.makeKeywordItems(document, position); + completions.push(...this.makeCompilerKeywordItems(document, position)); + completions.push(...this.makeSystemKeywordItems(document, position)); const symbolResult = await HdlSymbol.all(filePath); if (!symbolResult) { @@ -222,7 +222,7 @@ class VlogCompletionProvider implements vscode.CompletionItemProvider { } } - private makeKeywordItems(): vscode.CompletionItem[] { + private makeKeywordItems(document: vscode.TextDocument, position: vscode.Position): vscode.CompletionItem[] { const vlogKeywordItem = []; for (const keyword of vlogKeyword.keys()) { const clItem = this.makekeywordCompletionItem(keyword); @@ -232,18 +232,21 @@ class VlogCompletionProvider implements vscode.CompletionItemProvider { return vlogKeywordItem; } - private makeCompilerKeywordItems(): vscode.CompletionItem[] { + private makeCompilerKeywordItems(document: vscode.TextDocument, position: vscode.Position): vscode.CompletionItem[] { const items = []; + const targetRange = document.getWordRangeAtPosition(position, /[`_0-9a-zA-Z]+/); + const targetWord = document.getText(targetRange); + const prefix = targetWord.startsWith('`') ? '' : '`'; for (const keyword of vlogKeyword.compilerKeys()) { const clItem = new vscode.CompletionItem(keyword, vscode.CompletionItemKind.Keyword); - clItem.insertText = new vscode.SnippetString('`' + keyword); + clItem.insertText = new vscode.SnippetString(prefix + keyword); clItem.detail = 'compiler directive'; items.push(clItem); } return items; } - private makeSystemKeywordItems(): vscode.CompletionItem[] { + private makeSystemKeywordItems(document: vscode.TextDocument, position: vscode.Position): vscode.CompletionItem[] { const items = []; for (const keyword of vlogKeyword.systemKeys()) { const clItem = new vscode.CompletionItem(keyword, vscode.CompletionItemKind.Method); @@ -260,7 +263,8 @@ class VlogCompletionProvider implements vscode.CompletionItemProvider { clItem.detail = 'keyword'; switch (keyword) { - case 'begin': clItem.insertText = new vscode.SnippetString("begin$1end"); break; + case 'begin': clItem.insertText = new vscode.SnippetString("begin$1\nend"); break; + case 'function': clItem.insertText = new vscode.SnippetString("function ${1:name}\n\nendfunction"); break; default: break; } return clItem; diff --git a/src/function/lsp/hover/vlog.ts b/src/function/lsp/hover/vlog.ts index 5045cf3..7016703 100644 --- a/src/function/lsp/hover/vlog.ts +++ b/src/function/lsp/hover/vlog.ts @@ -158,6 +158,8 @@ class VlogHoverProvider implements vscode.HoverProvider { const normalResult = util.matchNormalSymbol(targetWord, scopeSymbols.symbols); if (normalResult) { const normalComment = await util.searchCommentAround(filePath, normalResult.range); + console.log(normalResult); + const normalDesc = util.makeNormalDesc(normalResult); content.appendCodeblock(normalDesc, HdlLangID.Verilog); diff --git a/src/function/lsp/util/index.ts b/src/function/lsp/util/index.ts index 06c264a..7dfc0fe 100644 --- a/src/function/lsp/util/index.ts +++ b/src/function/lsp/util/index.ts @@ -319,7 +319,11 @@ function makeParamDesc(param: HdlModuleParam): string { function makeNormalDesc(normal: RawSymbol): string { const width = normal.width ? normal.width : ''; - const desc = normal.type + ' ' + width + ' ' + normal.name; + const signed = normal.signed === 1 ? 'signed' : ''; + let desc = normal.type + ' ' + signed + ' ' + width + ' ' + normal.name; + if (normal.init) { + desc += ' = ' + normal.init; + } return desc; } diff --git a/src/hdlParser/common.ts b/src/hdlParser/common.ts index fa4385f..00d13af 100644 --- a/src/hdlParser/common.ts +++ b/src/hdlParser/common.ts @@ -165,6 +165,8 @@ interface RawSymbol { type: string range: Range width?: string + init?: string + signed: number }; interface InstModPathSearchResult { diff --git a/src/test/.vscode/property.json b/src/test/.vscode/property.json new file mode 100644 index 0000000..7dc2beb --- /dev/null +++ b/src/test/.vscode/property.json @@ -0,0 +1,11 @@ +{ + "toolChain": "xilinx", + "prjName": { + "PL": "template" + }, + "soc": { + "core": "none" + }, + "enableShowLog": false, + "device": "none" +} \ No newline at end of file diff --git a/src/test/vlog/parse_test/instance_test.v b/src/test/vlog/parse_test/instance_test.v index 613e852..cea48e2 100644 --- a/src/test/vlog/parse_test/instance_test.v +++ b/src/test/vlog/parse_test/instance_test.v @@ -1,3 +1,4 @@ +`include "./Cordic.v" module instance_test ( input input_a, input input_b, @@ -6,5 +7,5 @@ module instance_test ( assign output_c = input_a & input_b; - + endmodule \ No newline at end of file diff --git a/syntaxes/verilog.json b/syntaxes/verilog.json index 05073b1..0c2618c 100644 --- a/syntaxes/verilog.json +++ b/syntaxes/verilog.json @@ -7,38 +7,24 @@ "name": "Verilog", "patterns": [ { - "begin": "\\s*(wire|reg)\\s+\\b([a-zA-Z_][a-zA-Z0-9_]*)\\b", + "begin": "\\s*(wire|reg)\\s+(signed|unsigned)?\\s+\\[(.*?)(:)(.*?)\\]\\s+\\b([a-zA-Z_][a-zA-Z0-9_]*)\\b", "beginCaptures": { "1": { "name": "keyword.control.verilog" }, "2": { - "name": "variable.other.constant.declaration.verilog" - } - }, - "end": "(;)", - "endCaptures": { - "1": { - "name": "source.verilog" - } - } - }, - { - "begin": "\\s*(wire|reg)\\s+\\[(.*?)(:)(.*?)\\]\\s+\\b([a-zA-Z_][a-zA-Z0-9_]*)\\b", - "beginCaptures": { - "1": { "name": "keyword.control.verilog" }, - "2": { - "name": "constant.numeric.width.verilog" - }, "3": { - "name": "entity.name.function.width.spliter.verilog" - }, - "4": { "name": "constant.numeric.width.verilog" }, + "4": { + "name": "entity.name.function.width.spliter.verilog" + }, "5": { + "name": "constant.numeric.width.verilog" + }, + "6": { "name": "variable.other.constant.declaration.verilog" } }, @@ -47,7 +33,43 @@ "1": { "name": "source.verilog" } - } + }, + "patterns": [ + { + "include": "#constants" + }, + { + "include": "#operators" + } + ] + }, + { + "begin": "\\s*(wire|reg)\\s+(signed|unsigned)?\\s+\\b([a-zA-Z_][a-zA-Z0-9_]*)\\b", + "beginCaptures": { + "1": { + "name": "keyword.control.verilog" + }, + "2": { + "name": "keyword.control.verilog" + }, + "3": { + "name": "variable.other.constant.declaration.verilog" + } + }, + "end": "(;)", + "endCaptures": { + "1": { + "name": "source.verilog" + } + }, + "patterns": [ + { + "include": "#constants" + }, + { + "include": "#operators" + } + ] }, { "begin": "\\s*\\b(function|task)\\b(\\s+automatic)?", From bf91a08b17dd5cdf14bd019088c4c925a77e3e9e Mon Sep 17 00:00:00 2001 From: Kirigaya <1193466151@qq.com> Date: Fri, 7 Jul 2023 12:26:36 +0800 Subject: [PATCH 21/54] #add transform old version of property.json --- package.json | 12 ++++++--- package.nls.json | 3 ++- package.nls.zh-cn.json | 3 ++- package.nls.zh-tw.json | 3 ++- src/function/index.ts | 1 + src/function/tool.ts | 61 +++++++++++++++++++++++++++++++++++++++++- 6 files changed, 76 insertions(+), 7 deletions(-) diff --git a/package.json b/package.json index d90fd28..ed90044 100644 --- a/package.json +++ b/package.json @@ -394,7 +394,7 @@ "light": "images/svg/light/netlist.svg", "dark": "images/svg/dark/netlist.svg" }, - "category": "tool", + "category": "Digital-IDE", "title": "%digital-ide.netlist.title%" }, { @@ -403,12 +403,18 @@ "light": "images/svg/light/fsm.svg", "dark": "images/svg/dark/fsm.svg" }, - "category": "tool", + "category": "Digital-IDE", "title": "%digital-ide.fsm.title%" }, { "command": "digital-ide.lsp.tool.insertTextToUri", - "title": "%digital-ide.lsp.tool.insertTextToUri.title%" + "title": "%digital-ide.lsp.tool.insertTextToUri.title%", + "category": "Digital-IDE" + }, + { + "command": "digital-ide.lsp.tool.transformOldPropertyFile", + "title": "%digital-ide.lsp.tool.transformOldPropertyFile.title%", + "category": "Digital-IDE" } ], "menus": { diff --git a/package.nls.json b/package.nls.json index fdc55dd..4da1b2d 100644 --- a/package.nls.json +++ b/package.nls.json @@ -36,5 +36,6 @@ "digital-ide.pl.delFile.title": "del file", "digital-ide.netlist.title": "netlist", "digital-ide.fsm.title": "finite state machine", - "digital-ide.lsp.tool.insertTextToUri.title": "insert text to uri" + "digital-ide.lsp.tool.insertTextToUri.title": "insert text to uri", + "digital-ide.lsp.tool.transformOldPropertyFile.title": "transform configure file from previous version to new version" } \ No newline at end of file diff --git a/package.nls.zh-cn.json b/package.nls.zh-cn.json index 86c70bd..72a4558 100644 --- a/package.nls.zh-cn.json +++ b/package.nls.zh-cn.json @@ -36,5 +36,6 @@ "digital-ide.pl.delFile.title": "d删除文件", "digital-ide.netlist.title": "netlist", "digital-ide.fsm.title": "有限状态机", - "digital-ide.lsp.tool.insertTextToUri.title": "插入文本uri" + "digital-ide.lsp.tool.insertTextToUri.title": "插入文本uri", + "digital-ide.lsp.tool.transformOldPropertyFile.title": "转换配置文件从先前版本新版本" } \ No newline at end of file diff --git a/package.nls.zh-tw.json b/package.nls.zh-tw.json index a556923..2a574e4 100644 --- a/package.nls.zh-tw.json +++ b/package.nls.zh-tw.json @@ -36,5 +36,6 @@ "digital-ide.pl.delFile.title": "d刪除文件", "digital-ide.netlist.title": "netlist", "digital-ide.fsm.title": "有限狀態機", - "digital-ide.lsp.tool.insertTextToUri.title": "插入文本uri" + "digital-ide.lsp.tool.insertTextToUri.title": "插入文本uri", + "digital-ide.lsp.tool.transformOldPropertyFile.title": "轉換配置文件從先前版本新版本" } \ No newline at end of file diff --git a/src/function/index.ts b/src/function/index.ts index dec50ec..97c4ff1 100644 --- a/src/function/index.ts +++ b/src/function/index.ts @@ -76,6 +76,7 @@ function registerLsp(context: vscode.ExtensionContext) { function registerToolCommands(context: vscode.ExtensionContext) { vscode.commands.registerCommand('digital-ide.lsp.tool.insertTextToUri', tool.insertTextToUri); + vscode.commands.registerCommand('digital-ide.lsp.tool.transformOldPropertyFile', tool.transformOldPpy); } export { diff --git a/src/function/tool.ts b/src/function/tool.ts index c34ce4b..ed1ef26 100644 --- a/src/function/tool.ts +++ b/src/function/tool.ts @@ -1,4 +1,9 @@ +/* eslint-disable @typescript-eslint/naming-convention */ import * as vscode from 'vscode'; +import * as fs from 'fs'; + +import { opeParam } from '../global'; +import { hdlFile } from '../hdlFs'; async function insertTextToUri(uri: vscode.Uri, text: string, position?: vscode.Position) { if (!position) { @@ -12,7 +17,61 @@ async function insertTextToUri(uri: vscode.Uri, text: string, position?: vscode. } } +const PPY_REPLACE: Record = { + TOOL_CHAIN: 'toolChain', + PRJ_NAME: 'prjName', + ARCH: 'arch', + SOC: 'soc', + enableShowlog: 'enableShowLog', + Device: 'device' +}; + +const PPY_ARCH_REPLACE: Record = { + PRJ_Path: 'prjPath', + Hardware: 'hardware', + Software: 'software' +}; + +const PPY_LIB_REPLACE: Record = { + Hardware: 'hardware' +}; + +async function transformOldPpy() { + const propertyJsonPath = opeParam.propertyJsonPath; + if (fs.existsSync(propertyJsonPath)) { + const oldPpyContent = hdlFile.readJSON(propertyJsonPath) as Record; + + if (oldPpyContent.ARCH) { + for (const oldName of Object.keys(PPY_ARCH_REPLACE)) { + const newName = PPY_ARCH_REPLACE[oldName]; + oldPpyContent.ARCH[newName] = oldPpyContent.ARCH[oldName]; + delete oldPpyContent.ARCH[oldName]; + } + } + + if (oldPpyContent.library) { + for (const oldName of Object.keys(PPY_LIB_REPLACE)) { + const newName = PPY_LIB_REPLACE[oldName]; + oldPpyContent.library[newName] = oldPpyContent.library[oldName]; + delete oldPpyContent.library[oldName]; + } + } + + for (const oldName of Object.keys(PPY_REPLACE)) { + const newName = PPY_REPLACE[oldName]; + oldPpyContent[newName] = oldPpyContent[oldName]; + delete oldPpyContent[oldName]; + } + + hdlFile.writeJSON(propertyJsonPath, oldPpyContent); + + } else { + vscode.window.showErrorMessage('You have\'t create property.json!'); + } +} + export { - insertTextToUri + insertTextToUri, + transformOldPpy }; \ No newline at end of file From 554897eb0bfc8d44c14d65c3af50d5cc25efddd6 Mon Sep 17 00:00:00 2001 From: Kirigaya <1193466151@qq.com> Date: Sat, 8 Jul 2023 03:50:42 +0800 Subject: [PATCH 22/54] #fix bug of libPick --- src/extension.ts | 3 ++ src/global/opeParam.ts | 1 + src/global/prjInfo.ts | 110 +++++++++++++++++++++++++---------------- src/manager/libPick.ts | 7 ++- src/manager/prj.ts | 3 +- src/monitor/event.ts | 18 ++++--- 6 files changed, 90 insertions(+), 52 deletions(-) diff --git a/src/extension.ts b/src/extension.ts index 3fbea3e..7a1b731 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -60,7 +60,10 @@ async function launch(context: vscode.ExtensionContext) { // await vlogFast("e:/Project/Digial-IDE/TestWs/simulate/user/sim/tb_file/scc018ug_hd_rvt.v"); console.log(hdlParam); + console.log(opeParam.prjInfo.library.hardware.common); + console.log(opeParam.prjInfo.library.hardware.custom); + MainOutput.report('Digital-IDE has launched, Version: 0.3.0'); MainOutput.report('OS: ' + opeParam.os); } diff --git a/src/global/opeParam.ts b/src/global/opeParam.ts index 7273e11..aa5ab9d 100644 --- a/src/global/opeParam.ts +++ b/src/global/opeParam.ts @@ -166,6 +166,7 @@ class OpeParam { */ public getUserPrjInfo(): PrjInfo { const userPrjInfo = new PrjInfo(); + userPrjInfo.initContextPath(this.extensionPath, this.workspacePath); const rawPrjInfo = this.getRawUserPrjInfo(); userPrjInfo.merge(rawPrjInfo); return userPrjInfo; diff --git a/src/global/prjInfo.ts b/src/global/prjInfo.ts index 2b41900..4d04ee0 100644 --- a/src/global/prjInfo.ts +++ b/src/global/prjInfo.ts @@ -24,44 +24,61 @@ type PrjInfoMeta = Record; type RawPrjInfoMeta = OptionalPickType; const PrjInfoDefaults: PrjInfoMeta = { - toolChain: ToolChainType.Xilinx, - - prjName: { - PL: 'template', - PS: 'template' + get toolChain() { + return ToolChainType.Xilinx; }, - IP_REPO: [], + get prjName() { + return { + PL: 'template', + PS: 'template' + }; + }, + + get IP_REPO() { + return []; + }, + + get soc() { + return { + core: '', + bd: '', + os: '', + app: '' + }; + }, + + get enableShowLog() { + return false; + } + + get device() { + return 'none'; + }, - soc: { - core: '', - bd: '', - os: '', - app: '' + get arch() { + return { + prjPath: '', + hardware: { + src: '', + sim: '', + data: '' + }, + software: { + src: '', + data: '' + } + }; }, - enableShowLog: false, - device: 'none', - - arch: { - prjPath: '', - hardware: { - src: '', - sim: '', - data: '' - }, - software: { - src: '', - data: '' - } - }, - - library: { - state: LibraryState.Unknown, - hardware: { - common: [], - custom: [] - } + get library() { + return { + state: LibraryState.Unknown, + hardware: { + common: [], + custom: [] + } + }; } }; @@ -250,7 +267,8 @@ class PrjInfo implements PrjInfoMeta { public updatePathWisely(obj: Record, attr: T, path?: Path | Path[], - root?: AbsPath) { + root?: AbsPath, + defaultPath: Path | Path[] = '') { if (path) { if (path instanceof Array) { const actualPaths = []; @@ -268,7 +286,7 @@ class PrjInfo implements PrjInfoMeta { } } } else { - obj[attr] = ''; + obj[attr] = defaultPath; } } @@ -400,7 +418,7 @@ class PrjInfo implements PrjInfoMeta { this.checkDirExist(this.arch.prjPath); } - public updateLibrary(library?: Library) { + public updateLibrary(library?: Library) { if (library) { if (library.state) { if (!validLibraryState(library.state)) { @@ -409,14 +427,22 @@ class PrjInfo implements PrjInfoMeta { } else { this._library.state = library.state; } + } else { + this._library.state = library.state; } if (library.hardware) { - // TODO : finish this when you can acquire root of common and custom const commonPath = this.libCommonPath; const customPath = this.libCustomPath; - this.updatePathWisely(this.library.hardware, 'common', library.hardware.common, commonPath); - this.updatePathWisely(this.library.hardware, 'custom', library.hardware.custom, customPath); + this.library.hardware.common = library.hardware.common ? library.hardware.common : []; + // this.updatePathWisely(this.library.hardware, 'common', library.hardware.common, commonPath, []); + this.updatePathWisely(this.library.hardware, 'custom', library.hardware.custom, customPath, []); + + } else { + this._library.hardware = library.hardware; } + } else { + this._library.hardware = PrjInfoDefaults.library.hardware; + this._library.state = PrjInfoDefaults.library.state; } } @@ -429,8 +455,8 @@ class PrjInfo implements PrjInfoMeta { } public getLibraryCommonPaths(absolute: boolean = true): Path[] { - if (absolute) { - const commonFolder = hdlPath.join(this.libCommonPath, 'Empty'); + if (absolute) { + const commonFolder = hdlPath.join(this.libCommonPath, 'Empty'); return this._library.hardware.common.map(relPath => hdlPath.rel2abs(commonFolder, relPath)); } return this._library.hardware.common; @@ -479,7 +505,7 @@ class PrjInfo implements PrjInfoMeta { public get libCommonPath(): AbsPath { const libPath = join(this._extensionPath, 'lib', 'common'); if (!fs.existsSync(libPath)) { - vscode.window.showErrorMessage('common lib path in extension is invalid, maybe extension has been corrupted, reinstall the extension'); + vscode.window.showErrorMessage('common lib path: "' + libPath + '" in extension is invalid, maybe extension has been corrupted, reinstall the extension'); } return libPath; } diff --git a/src/manager/libPick.ts b/src/manager/libPick.ts index a5c13fa..2b31a39 100644 --- a/src/manager/libPick.ts +++ b/src/manager/libPick.ts @@ -24,6 +24,9 @@ class LibPick { constructor () { this.commonPath = opeParam.prjInfo.libCommonPath; this.customPath = opeParam.prjInfo.libCustomPath; + if (!this.customPath) { + this.customPath = 'no custom path is defined, see Prj->Lib->Custom->Path'; + } this.commonQuickPickItem = { label: "$(libpick-common) common", @@ -177,9 +180,9 @@ class LibPick { } } -function pickLibrary() { +async function pickLibrary() { const picker = new LibPick(); - picker.pickItems(); + await picker.pickItems(); } export { diff --git a/src/manager/prj.ts b/src/manager/prj.ts index 3bdb4e8..16e319c 100644 --- a/src/manager/prj.ts +++ b/src/manager/prj.ts @@ -106,8 +106,7 @@ class PrjManage { searchPathSet.checkAdd(hardwareInfo.sim); searchPathSet.checkAdd(prjInfo.getLibraryCommonPaths()); searchPathSet.checkAdd(prjInfo.getLibraryCustomPaths()); - - + MainOutput.report(' search folders: ', ReportType.Debug); searchPathSet.files.forEach(p => MainOutput.report(p, ReportType.Debug)); diff --git a/src/monitor/event.ts b/src/monitor/event.ts index 3b9bc02..8334fb8 100644 --- a/src/monitor/event.ts +++ b/src/monitor/event.ts @@ -167,21 +167,27 @@ class PpyAction extends BaseAction { // get path set from opeParam that used to tell if need to remake HdlMonitor private getImportantPathSet(): Set { const pathSet = new Set(); - pathSet.add(opeParam.prjInfo.arch.hardware.sim); - pathSet.add(opeParam.prjInfo.arch.hardware.src); - pathSet.add(opeParam.prjInfo.libCommonPath); - pathSet.add(opeParam.prjInfo.libCustomPath); + pathSet.add(opeParam.prjInfo.hardwareSimPath); + pathSet.add(opeParam.prjInfo.hardwareSrcPath); + for (const path of opeParam.prjInfo.getLibraryCommonPaths()) { + pathSet.add(path); + } + for (const path of opeParam.prjInfo.getLibraryCustomPaths()) { + pathSet.add(path); + } return pathSet; } public async updateProperty(m: HdlMonitor) { const originalPathSet = this.getImportantPathSet(); const originalHdlFiles = prjManage.getPrjHardwareFiles(); - + const rawPrjInfo = opeParam.getRawUserPrjInfo(); opeParam.mergePrjInfo(rawPrjInfo); const currentPathSet = this.getImportantPathSet(); + console.log(originalPathSet, currentPathSet); + if (isSameSet(originalPathSet, currentPathSet)) { return; } @@ -189,7 +195,7 @@ class PpyAction extends BaseAction { vscode.window.withProgress(options, async () => await this.refreshHdlMonitor(m, originalHdlFiles)); } - public async refreshHdlMonitor(m: HdlMonitor, originalHdlFiles: AbsPath[]) { + public async refreshHdlMonitor(m: HdlMonitor, originalHdlFiles: AbsPath[]) { m.remakeHdlMonitor(); // update pl From 17d735f1eb79535f50b9fcf033e7fe6fac017ae1 Mon Sep 17 00:00:00 2001 From: Kirigaya <1193466151@qq.com> Date: Sat, 8 Jul 2023 22:33:30 +0800 Subject: [PATCH 23/54] #fix prjInfo --- src/global/prjInfo.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/global/prjInfo.ts b/src/global/prjInfo.ts index 4d04ee0..4a56d04 100644 --- a/src/global/prjInfo.ts +++ b/src/global/prjInfo.ts @@ -50,7 +50,7 @@ const PrjInfoDefaults: PrjInfoMeta = { get enableShowLog() { return false; - } + }, get device() { return 'none'; From c6ed6009820169e85dac4d39099a1e92354ff548 Mon Sep 17 00:00:00 2001 From: Kirigaya <1193466151@qq.com> Date: Wed, 12 Jul 2023 19:10:08 +0800 Subject: [PATCH 24/54] #fix lib | libPick --- project/property-schema.json | 3 +- src/global/prjInfo.ts | 14 +++- src/hdlFs/dir.ts | 33 +++++---- src/manager/ignore.ts | 20 +++++ src/manager/lib.ts | 138 +++++++++++++++++------------------ src/manager/prj.ts | 7 +- src/monitor/event.ts | 51 +++++++++++-- 7 files changed, 161 insertions(+), 105 deletions(-) create mode 100644 src/manager/ignore.ts diff --git a/project/property-schema.json b/project/property-schema.json index d0e8a07..3fd55e4 100644 --- a/project/property-schema.json +++ b/project/property-schema.json @@ -68,7 +68,8 @@ "type": "string", "enum": [ "local", - "remote" + "remote", + "unknown" ] }, "hardware": { diff --git a/src/global/prjInfo.ts b/src/global/prjInfo.ts index 4a56d04..2cf2087 100644 --- a/src/global/prjInfo.ts +++ b/src/global/prjInfo.ts @@ -454,10 +454,16 @@ class PrjInfo implements PrjInfoMeta { this._library.hardware.custom.push(relPath); } - public getLibraryCommonPaths(absolute: boolean = true): Path[] { + public getLibraryCommonPaths(absolute: boolean = true, state?: LibraryState): Path[] { + const targetState = state ? state : this._library.state; + const localLibPath = hdlPath.join(this.hardwareSrcPath, 'lib'); + const remoteLibPath = this.libCommonPath; + const targetLibPath = (targetState === LibraryState.Local) ? localLibPath : remoteLibPath; + const commonFolder = hdlPath.join(targetLibPath, 'Empty'); + if (absolute) { - const commonFolder = hdlPath.join(this.libCommonPath, 'Empty'); - return this._library.hardware.common.map(relPath => hdlPath.rel2abs(commonFolder, relPath)); + const absPaths = this._library.hardware.common.map(relPath => hdlPath.rel2abs(commonFolder, relPath)); + return absPaths; } return this._library.hardware.common; } @@ -519,7 +525,7 @@ class PrjInfo implements PrjInfoMeta { } public get hardwareSimPath(): AbsPath { - const simPath = this._arch.hardware.sim; + const simPath = this._arch.hardware.sim; if (fspath.isAbsolute(simPath)) { return simPath; } diff --git a/src/hdlFs/dir.ts b/src/hdlFs/dir.ts index 79c14bd..800f7cf 100644 --- a/src/hdlFs/dir.ts +++ b/src/hdlFs/dir.ts @@ -35,22 +35,23 @@ function mkdir(path: AbsPath): boolean { } function rmdir(path: AbsPath): void { - if (fs.existsSync(path)) { - if (fs.statSync(path).isDirectory()) { - const files = fs.readdirSync(path); - for (const file of files) { - const curPath = hdlPath.join(path, file); - if (fs.statSync(curPath).isDirectory()) { // recurse - rmdir(curPath); - } else { // delete file - fs.unlinkSync(curPath); - } - } - fs.rmdirSync(path); - } else { - fs.unlinkSync(path); - } - } + fs.rm(path, { recursive: true, force: true }, () => {}); + // if (fs.existsSync(path)) { + // if (fs.statSync(path).isDirectory()) { + // const files = fs.readdirSync(path); + // for (const file of files) { + // const curPath = hdlPath.join(path, file); + // if (fs.statSync(curPath).isDirectory()) { // recurse + // rmdir(curPath); + // } else { // delete file + // fs.unlinkSync(curPath); + // } + // } + // fs.rmdirSync(path); + // } else { + // fs.unlinkSync(path); + // } + // } } function mvdir(src: AbsPath, dest: AbsPath, cover: boolean): boolean { diff --git a/src/manager/ignore.ts b/src/manager/ignore.ts new file mode 100644 index 0000000..990dcc2 --- /dev/null +++ b/src/manager/ignore.ts @@ -0,0 +1,20 @@ +import * as vscode from 'vscode'; +import { AbsPath } from '../global'; + + +class HdlIgnore { + constructor() { + + } + + public getIgnoreFiles(): AbsPath[] { + return []; + } +} + + +const hdlIgnore = new HdlIgnore(); + +export { + hdlIgnore +}; \ No newline at end of file diff --git a/src/manager/lib.ts b/src/manager/lib.ts index ffbad5e..74bf57a 100644 --- a/src/manager/lib.ts +++ b/src/manager/lib.ts @@ -5,6 +5,9 @@ import { AbsPath, opeParam } from '../global'; import { hdlDir, hdlFile, hdlPath } from '../hdlFs'; import { Library } from '../global/prjInfo'; import { Path } from '../../resources/hdlParser'; +import { LibraryState } from '../global/enum'; +import { PathSet } from '../global/util'; +import { hdlIgnore } from './ignore'; interface LibFileChange { add: AbsPath[], @@ -12,7 +15,7 @@ interface LibFileChange { } interface LibStatus { - type?: string, + state?: LibraryState, list: AbsPath[] } @@ -48,11 +51,11 @@ class LibManage { } public get srcPath(): AbsPath { - return opeParam.prjInfo.arch.hardware.src; + return opeParam.prjInfo.hardwareSrcPath; } public get simPath(): AbsPath { - return opeParam.prjInfo.arch.hardware.sim; + return opeParam.prjInfo.hardwareSimPath; } public get prjPath(): AbsPath { @@ -68,79 +71,57 @@ class LibManage { } public processLibFiles(library: Library): LibFileChange { - // 在不设置state属性的时候默认为remote - this.next.list = this.getLibFiles(library); - if (!hdlFile.isHasAttr(library, 'state')) { - this.next.type = 'remote'; + this.next.list = this.getLibFiles(); + if (library.state === LibraryState.Local) { + this.next.state = LibraryState.Local; } else { - if (library.state !== 'remote' && library.state !== 'local') { - return { - 'add' : [], - 'del' : [], - }; - } - this.next.type = library.state; + this.next.state = LibraryState.Remote; } - // 处于初始状态时的情况 - if (!this.curr.type) { - if (!hdlFile.isDir(this.localLibPath)) { - this.curr.type = 'local'; - } else { - this.curr.type = 'remote'; - } - } + // current disk situation - const state = `${this.curr.type}-${this.next.type}`; - let add: AbsPath[] = []; - let del: AbsPath[] = []; - switch (state) { + if (hdlFile.isDir(this.localLibPath)) { + this.curr.state = LibraryState.Local; + } else { + this.curr.state = LibraryState.Remote; + } + + const add: AbsPath[] = []; + const del: AbsPath[] = []; + const statePair = this.curr.state + '-' + this.next.state; + + switch (statePair) { case 'remote-remote': - add = diffElement(this.next.list, this.curr.list); - del = diffElement(this.curr.list, this.next.list); + add.push(...diffElement(this.next.list, this.curr.list)); + del.push(...diffElement(this.curr.list, this.next.list)); break; case 'remote-local': - // 删除的内容全是remote的,将curr的交出去即可 - del = this.curr.list; + del.push(...this.curr.list); - // 将新增的全部复制到本地,交给monitor进行处理 - this.remote2Local(this.next.list, (src, dist) => { + // copy file from remote to local + const remotePathList = this.getLibFiles(LibraryState.Remote); + this.remote2Local(remotePathList, (src, dist) => { hdlFile.copyFile(src, dist); }); break; case 'local-remote': - // 本地的lib全部删除,交给monitor进行处理 - const fn = async () => { - if (fs.existsSync(this.localLibPath)) { - const needNotice = vscode.workspace.getConfiguration('prj.file.structure.notice'); - if (needNotice) { - let select = await vscode.window.showWarningMessage("local lib will be removed.", 'Yes', 'Cancel'); - if (select === "Yes") { - hdlDir.rmdir(this.localLibPath); - } - } else { - hdlDir.rmdir(this.localLibPath); - } - } - }; - fn(); + add.push(...this.next.list); + + // delete local files (async) + this.deleteLocalFiles(); - // 增加的内容全是remote的,将next的交出去即可 - add = this.next.list; break; case 'local-local': - // 只管理library里面的内容,如果自己再localPath里加减代码,则不去管理 - add = diffElement(this.next.list, this.curr.list); - del = diffElement(this.curr.list, this.next.list); + add.push(...diffElement(this.next.list, this.curr.list)); + del.push(...diffElement(this.curr.list, this.next.list)); this.remote2Local(add, (src, dist) => { hdlFile.copyFile(src, dist); }); - this.remote2Local(del, (src, dist) => { + this.remote2Local(del, (src, dist) => { hdlFile.removeFile(dist); }); - add = []; del = []; break; default: break; } @@ -149,35 +130,46 @@ class LibManage { } - getLibFiles(library: Library) { - const libFileList: AbsPath[] = []; - const prjInfo = opeParam.prjInfo; + public getLibFiles(state?: LibraryState): AbsPath[] { + const libPathSet = new PathSet(); - // collect common libs - prjInfo.getLibraryCommonPaths().forEach(absPath => libFileList.push(...hdlFile.getHDLFiles(absPath))); + for (const path of opeParam.prjInfo.getLibraryCommonPaths(true, state)) { + libPathSet.checkAdd(path); + } - // collect custom libs - prjInfo.getLibraryCustomPaths().forEach(absPath => libFileList.push(...hdlFile.getHDLFiles(absPath))); + for (const path of opeParam.prjInfo.getLibraryCustomPaths()) { + libPathSet.checkAdd(path); + } - // Remove duplicate HDL files - return removeDuplicates(libFileList); + const ignores = hdlIgnore.getIgnoreFiles(); + const libPathList = hdlFile.getHDLFiles(libPathSet.files, ignores); + return libPathList; } - remote2Local(remotes: Path[], callback: (src: AbsPath, dist: AbsPath) => void) { + public async deleteLocalFiles() { + if (fs.existsSync(this.localLibPath)) { + const needNotice = vscode.workspace.getConfiguration('prj.file.structure.notice'); + if (needNotice) { + let select = await vscode.window.showWarningMessage(`Local Lib (${this.localLibPath}) will be removed.`, 'Yes', 'Cancel'); + if (select === "Yes") { + hdlDir.rmdir(this.localLibPath); + } + } else { + hdlDir.rmdir(this.localLibPath); + } + } + } + + public remote2Local(remotes: Path[], callback: (src: AbsPath, dist: AbsPath) => void) { const localLibPath = this.localLibPath; const sourceLibPath = this.sourceLibPath; const customerPath = this.customerPath; const customerPathValid = hdlFile.isDir(customerPath); - for (const src of remotes) { - let dist; - if (customerPathValid && src.includes(customerPath)) { - dist = src.replace(customerPath, localLibPath); - } else { - dist = src.replace(sourceLibPath, localLibPath); - } - - callback(src, dist); + for (const srcPath of remotes) { + const replacePath = ( customerPathValid && srcPath.includes(customerPath) ) ? customerPath : sourceLibPath; + const distPath = srcPath.replace(replacePath, localLibPath); + callback(srcPath, distPath); } } }; diff --git a/src/manager/prj.ts b/src/manager/prj.ts index 16e319c..b8cdfc3 100644 --- a/src/manager/prj.ts +++ b/src/manager/prj.ts @@ -10,6 +10,7 @@ import { libManage } from './lib'; import { hdlParam } from '../hdlParser'; import { PlManage } from './PL'; import { PsManage } from './PS'; +import { hdlIgnore } from './ignore'; class PrjManage { pl?: PlManage; @@ -83,10 +84,6 @@ class PrjManage { } } - public getIgnoreFiles(): AbsPath[] { - return []; - } - /** * get all the hdl files that to be parsed in the project * @returns @@ -111,7 +108,7 @@ class PrjManage { searchPathSet.files.forEach(p => MainOutput.report(p, ReportType.Debug)); // TODO : make something like .gitignore - const ignores = this.getIgnoreFiles(); + const ignores = hdlIgnore.getIgnoreFiles(); // do search const searchPaths = searchPathSet.files; diff --git a/src/monitor/event.ts b/src/monitor/event.ts index 8334fb8..4eefd18 100644 --- a/src/monitor/event.ts +++ b/src/monitor/event.ts @@ -9,6 +9,7 @@ import { isSameSet } from '../global/util'; import { hdlFile, hdlPath } from '../hdlFs'; import { hdlParam, HdlSymbol } from '../hdlParser'; import { prjManage } from '../manager'; +import { libManage } from '../manager/lib'; import type { HdlMonitor } from './index'; @@ -53,10 +54,30 @@ abstract class BaseAction { fSWatcher.on(Event.Unlink, path => this.unlink(path, m)); } + public listenUnlinkDir(m: HdlMonitor) { + const fSWatcher = this.selectFSWatcher(m); + if (!fSWatcher) { + MainOutput.report("FSWatcher hasn't been made!", ReportType.Error); + return; + } + fSWatcher.on(Event.UnlinkDir, path => this.unlinkDir(path, m)); + } + + // public listenAddDir(m: HdlMonitor) { + // const fSWatcher = this.selectFSWatcher(m); + // if (!fSWatcher) { + // MainOutput.report("FSWatcher hasn't been made!", ReportType.Error); + // return; + // } + // fSWatcher.on(Event.UnlinkDir, path => this.unlinkDir(path, m)); + // } + abstract selectFSWatcher(m: HdlMonitor): chokidar.FSWatcher | undefined; abstract change(path: AbsPath, m: HdlMonitor): Promise; abstract add(path: AbsPath, m: HdlMonitor): Promise; + // abstract addDir(path: AbsPath, m: HdlMonitor): Promise; abstract unlink(path: AbsPath, m: HdlMonitor): Promise; + abstract unlinkDir(path: AbsPath, m: HdlMonitor): Promise; } class HdlAction extends BaseAction { @@ -84,13 +105,18 @@ class HdlAction extends BaseAction { } async unlink(path: string, m: HdlMonitor): Promise { - console.log('HdlAction unlink'); + console.log('HdlAction unlink', path); path = hdlPath.toSlash(path); hdlParam.deleteHdlFile(path); refreshArchTree(); } + async unlinkDir(path: string, m: HdlMonitor): Promise { + console.log('HdlAction unlinkDir', path); + + } + async change(path: string, m: HdlMonitor): Promise { console.log('HdlAction change'); @@ -157,6 +183,10 @@ class PpyAction extends BaseAction { assert.equal(hdlPath.toSlash(path), opeParam.propertyJsonPath); this.updateProperty(m); } + + async unlinkDir(path: string, m: HdlMonitor): Promise { + + } async change(path: string, m: HdlMonitor): Promise { console.log('PpyAction change'); @@ -181,24 +211,33 @@ class PpyAction extends BaseAction { public async updateProperty(m: HdlMonitor) { const originalPathSet = this.getImportantPathSet(); const originalHdlFiles = prjManage.getPrjHardwareFiles(); + const originalLibState = opeParam.prjInfo.library.state; const rawPrjInfo = opeParam.getRawUserPrjInfo(); opeParam.mergePrjInfo(rawPrjInfo); const currentPathSet = this.getImportantPathSet(); - console.log(originalPathSet, currentPathSet); - + const currentLibState = opeParam.prjInfo.library.state; + if (isSameSet(originalPathSet, currentPathSet)) { - return; + // skip hdl remake + if (originalLibState !== currentLibState) { + const fileChange = libManage.processLibFiles(opeParam.prjInfo.library); + MainOutput.report(`libManage finish process, add ${fileChange.add.length} files, del ${fileChange.del.length} files`, ReportType.Info); + } + + } else { + // update hdl monitor + const options: vscode.ProgressOptions = { location: vscode.ProgressLocation.Notification, title: 'modify the project' }; + vscode.window.withProgress(options, async () => await this.refreshHdlMonitor(m, originalHdlFiles)); } - const options: vscode.ProgressOptions = { location: vscode.ProgressLocation.Notification, title: 'modify the project' }; - vscode.window.withProgress(options, async () => await this.refreshHdlMonitor(m, originalHdlFiles)); } public async refreshHdlMonitor(m: HdlMonitor, originalHdlFiles: AbsPath[]) { m.remakeHdlMonitor(); // update pl + console.log('current lib state', opeParam.prjInfo.library.state); const currentHdlFiles = prjManage.getPrjHardwareFiles(); await this.updatePL(originalHdlFiles, currentHdlFiles); From ae2c5a136517e9cc45c63fca2d40dce920c9a6da Mon Sep 17 00:00:00 2001 From: Kirigaya <1193466151@qq.com> Date: Thu, 13 Jul 2023 01:28:58 +0800 Subject: [PATCH 25/54] #fix lib --- project/property-schema.json | 3 +- src/extension.ts | 5 -- src/function/lsp/hover/vlog.ts | 4 +- src/global/prjInfo.ts | 19 +++--- src/hdlParser/core.ts | 19 +++++- src/manager/lib.ts | 37 ++++++++--- src/manager/prj.ts | 111 +++++++++++++++++++++++++++++++-- src/monitor/event.ts | 77 +++++++++-------------- src/monitor/index.ts | 5 +- 9 files changed, 196 insertions(+), 84 deletions(-) diff --git a/project/property-schema.json b/project/property-schema.json index 3fd55e4..d0e8a07 100644 --- a/project/property-schema.json +++ b/project/property-schema.json @@ -68,8 +68,7 @@ "type": "string", "enum": [ "local", - "remote", - "unknown" + "remote" ] }, "hardware": { diff --git a/src/extension.ts b/src/extension.ts index 7a1b731..b3e531a 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -58,11 +58,6 @@ async function launch(context: vscode.ExtensionContext) { await registerCommand(context); hdlMonitor.start(); // await vlogFast("e:/Project/Digial-IDE/TestWs/simulate/user/sim/tb_file/scc018ug_hd_rvt.v"); - - console.log(hdlParam); - console.log(opeParam.prjInfo.library.hardware.common); - console.log(opeParam.prjInfo.library.hardware.custom); - MainOutput.report('Digital-IDE has launched, Version: 0.3.0'); MainOutput.report('OS: ' + opeParam.os); diff --git a/src/function/lsp/hover/vlog.ts b/src/function/lsp/hover/vlog.ts index 7016703..7a41892 100644 --- a/src/function/lsp/hover/vlog.ts +++ b/src/function/lsp/hover/vlog.ts @@ -157,9 +157,7 @@ class VlogHoverProvider implements vscode.HoverProvider { // match others const normalResult = util.matchNormalSymbol(targetWord, scopeSymbols.symbols); if (normalResult) { - const normalComment = await util.searchCommentAround(filePath, normalResult.range); - console.log(normalResult); - + const normalComment = await util.searchCommentAround(filePath, normalResult.range); const normalDesc = util.makeNormalDesc(normalResult); content.appendCodeblock(normalDesc, HdlLangID.Verilog); diff --git a/src/global/prjInfo.ts b/src/global/prjInfo.ts index 2cf2087..3446f25 100644 --- a/src/global/prjInfo.ts +++ b/src/global/prjInfo.ts @@ -73,7 +73,7 @@ const PrjInfoDefaults: PrjInfoMeta = { get library() { return { - state: LibraryState.Unknown, + state: LibraryState.Remote, hardware: { common: [], custom: [] @@ -240,7 +240,7 @@ class PrjInfo implements PrjInfoMeta { uniformPath = fspath.resolve(rootPath, path); } - uniformPath = toSlash(uniformPath); + uniformPath = this.uniformisePath(uniformPath); if (check) { if (fs.existsSync(uniformPath)) { @@ -366,6 +366,9 @@ class PrjInfo implements PrjInfoMeta { } private checkDirExist(dir: AbsPath) { + if (dir === '') { + return; + } if (!fs.existsSync(dir)) { fs.mkdirSync(dir, { recursive: true }); } @@ -391,17 +394,17 @@ class PrjInfo implements PrjInfoMeta { const socCore = this._soc.core; if (socCore && socCore !== 'none') { hardwarePath = join(hardwarePath, 'Hardware'); + this.arch.software.src = join(softwarePath, 'src'); + this.arch.software.data = join(softwarePath, 'data'); } + this.arch.prjPath = join(workspacePath, 'prj'); this.arch.hardware.src = join(hardwarePath, 'src'); this.arch.hardware.sim = join(hardwarePath, 'sim'); this.arch.hardware.data = join(hardwarePath, 'data'); - - this.arch.software.src = join(softwarePath, 'src'); - this.arch.software.data = join(softwarePath, 'data'); } - - // // if path is '', set as workspace + + // if path is '', set as workspace this.setDefaultValue(this.arch.hardware, 'src', workspacePath); this.setDefaultValue(this.arch.hardware, 'sim', this.arch.hardware.src); this.setDefaultValue(this.arch.hardware, 'data', workspacePath); @@ -409,7 +412,7 @@ class PrjInfo implements PrjInfoMeta { this.setDefaultValue(this.arch.software, 'data', workspacePath); this.setDefaultValue(this.arch, 'prjPath', workspacePath); - // check existence + // check existence & make dir this.checkDirExist(this.arch.hardware.sim); this.checkDirExist(this.arch.hardware.src); this.checkDirExist(this.arch.hardware.data); diff --git a/src/hdlParser/core.ts b/src/hdlParser/core.ts index 33aa625..3895515 100644 --- a/src/hdlParser/core.ts +++ b/src/hdlParser/core.ts @@ -38,7 +38,7 @@ class HdlParam { * used only in initialization stage * @param hdlFile */ - public addHdlFile(hdlFile: HdlFile) { + public setHdlFile(hdlFile: HdlFile) { const path = hdlFile.path; this.pathToHdlFiles.set(path, hdlFile); } @@ -300,6 +300,21 @@ class HdlParam { this.pathToHdlFiles.delete(path); } } + + public addHdlFile(path: AbsPath) { + path = hdlPath.toSlash(path); + this.initHdlFiles([path]); + + const moduleFile = this.getHdlFile(path); + if (!moduleFile) { + MainOutput.report('error happen when create moduleFile ' + path, ReportType.Warn); + } else { + moduleFile.makeInstance(); + for (const module of moduleFile.getAllHdlModules()) { + module.solveUnhandleInstance(); + } + } + } }; const hdlParam = new HdlParam(); @@ -672,7 +687,7 @@ class HdlFile { this.type = hdlFile.getHdlFileType(path); // add to global hdlParam - hdlParam.addHdlFile(this); + hdlParam.setHdlFile(this); // make nameToModule this.nameToModule = new Map(); diff --git a/src/manager/lib.ts b/src/manager/lib.ts index 74bf57a..f08a041 100644 --- a/src/manager/lib.ts +++ b/src/manager/lib.ts @@ -1,5 +1,6 @@ import * as vscode from 'vscode'; import * as fs from 'fs'; +import * as fspath from 'path'; import { AbsPath, opeParam } from '../global'; import { hdlDir, hdlFile, hdlPath } from '../hdlFs'; @@ -8,6 +9,8 @@ import { Path } from '../../resources/hdlParser'; import { LibraryState } from '../global/enum'; import { PathSet } from '../global/util'; import { hdlIgnore } from './ignore'; +import { hdlParam } from '../hdlParser'; +import { refreshArchTree } from '../function/treeView'; interface LibFileChange { add: AbsPath[], @@ -70,7 +73,7 @@ class LibManage { return hdlPath.join(opeParam.extensionPath, 'lib'); } - public processLibFiles(library: Library): LibFileChange { + public async processLibFiles(library: Library): Promise { this.next.list = this.getLibFiles(); if (library.state === LibraryState.Local) { this.next.state = LibraryState.Local; @@ -100,15 +103,17 @@ class LibManage { // copy file from remote to local const remotePathList = this.getLibFiles(LibraryState.Remote); - this.remote2Local(remotePathList, (src, dist) => { + this.remote2Local(remotePathList, (src, dist) => { + hdlParam.deleteHdlFile(src); hdlFile.copyFile(src, dist); }); + break; case 'local-remote': add.push(...this.next.list); - // delete local files (async) - this.deleteLocalFiles(); + // delete local files & data structure in hdlParam (async) + await this.deleteLocalFiles(); break; case 'local-local': @@ -150,16 +155,32 @@ class LibManage { if (fs.existsSync(this.localLibPath)) { const needNotice = vscode.workspace.getConfiguration('prj.file.structure.notice'); if (needNotice) { - let select = await vscode.window.showWarningMessage(`Local Lib (${this.localLibPath}) will be removed.`, 'Yes', 'Cancel'); - if (select === "Yes") { - hdlDir.rmdir(this.localLibPath); + const res = await vscode.window.showWarningMessage( + `Local Lib (${this.localLibPath}) will be removed.`, + { modal: true }, + { title: 'Yes', value: true }, + { title: 'No', value: false } + ); + if (res?.value) { + this.deleteLocalLib(); } } else { - hdlDir.rmdir(this.localLibPath); + this.deleteLocalLib(); } } } + public deleteLocalLib() { + const ignores = hdlIgnore.getIgnoreFiles(); + const hdlFileList = hdlFile.getHDLFiles([this.localLibPath], ignores); + for (const path of hdlFileList) { + hdlParam.deleteHdlFile(path); + } + + refreshArchTree(); + hdlDir.rmdir(this.localLibPath); + } + public remote2Local(remotes: Path[], callback: (src: AbsPath, dist: AbsPath) => void) { const localLibPath = this.localLibPath; const sourceLibPath = this.sourceLibPath; diff --git a/src/manager/prj.ts b/src/manager/prj.ts index b8cdfc3..d9d6c7f 100644 --- a/src/manager/prj.ts +++ b/src/manager/prj.ts @@ -5,7 +5,7 @@ import * as fs from 'fs'; import { AbsPath, MainOutput, opeParam, ReportType } from '../global'; import { PathSet } from '../global/util'; import { RawPrjInfo } from '../global/prjInfo'; -import { hdlFile, hdlPath } from '../hdlFs'; +import { hdlDir, hdlFile, hdlPath } from '../hdlFs'; import { libManage } from './lib'; import { hdlParam } from '../hdlParser'; import { PlManage } from './PL'; @@ -73,12 +73,12 @@ class PrjManage { const rawPrjInfo = hdlFile.readJSON(propertyJsonPath) as RawPrjInfo; opeParam.mergePrjInfo(rawPrjInfo); } else { - const createProperty = await vscode.window.showInformationMessage( + const res = await vscode.window.showInformationMessage( "property.json is not detected, do you want to create one ?", { title: 'Yes', value: true }, { title: 'No', value: false } ); - if (createProperty?.value) { + if (res?.value) { vscode.commands.executeCommand('digital-ide.property-json.generate'); } } @@ -88,13 +88,13 @@ class PrjManage { * get all the hdl files that to be parsed in the project * @returns */ - public getPrjHardwareFiles(): AbsPath[] { + public async getPrjHardwareFiles(): Promise { const searchPathSet = new PathSet(); const prjInfo = opeParam.prjInfo; const hardwareInfo = prjInfo.arch.hardware; // handle library first - const fileChange = libManage.processLibFiles(prjInfo.library); + const fileChange = await libManage.processLibFiles(prjInfo.library); MainOutput.report(`libManage finish process, add ${fileChange.add.length} files, del ${fileChange.del.length} files`, ReportType.Info); // add possible folder to search @@ -126,7 +126,7 @@ class PrjManage { await this.initOpeParam(context); MainOutput.report('finish initialise opeParam', ReportType.Info); - const hdlFiles = this.getPrjHardwareFiles(); + const hdlFiles = await this.getPrjHardwareFiles(); MainOutput.report(`finish collect ${hdlFiles.length} hdl files`, ReportType.Info); await hdlParam.initialize(hdlFiles); @@ -142,6 +142,105 @@ class PrjManage { console.timeLog('launch'); } } + + + + public async refreshPrjFolder() { + // TODO : finish this + // 无工程配置文件则直接退出 + if (!opeParam.prjInfo) { + return; + } + + const prjInfo = opeParam.prjInfo; + + // 如果是用户配置文件结构,检查并生成相关文件夹 + if (prjInfo.arch) { + hdlDir.mkdir(prjInfo.arch.prjPath); + const hardware = prjInfo.arch.hardware; + const software = prjInfo.arch.software; + + if (hardware) { + hdlDir.mkdir(hardware.src); + hdlDir.mkdir(hardware.sim); + hdlDir.mkdir(hardware.data); + } + + if (software) { + hdlDir.mkdir(software.src); + hdlDir.mkdir(software.data); + } + return; + } + + // 先直接创建工程文件夹 + hdlDir.mkdir(`${opeParam.workspacePath}/prj`); + + // 初始化文件结构的路径 + const userPath = `${opeParam.workspacePath}/user`; + const softwarePath = `${opeParam.workspacePath}/user/Software`; + const hardwarePath = `${opeParam.workspacePath}/user/Hardware`; + + let nextmode = "PL"; + // 再对源文件结构进行创建 + if (prjInfo.soc.core !== 'none') { + nextmode = "LS"; + } + + let currmode = "PL"; + if (fs.existsSync(softwarePath) || fs.existsSync(hardwarePath)) { + currmode = "LS"; + } + + if (currmode === nextmode) { + const hardware = opeParam.prjInfo.ARCH.Hardware; + const software = opeParam.prjInfo.ARCH.Software; + + hdlDir.mkdir(hardware.src); + hdlDir.mkdir(hardware.sim); + hdlDir.mkdir(hardware.data); + if (currmode === 'LS') { + hdlDir.mkdir(software.src); + hdlDir.mkdir(software.data); + } + return; + } + + if (currmode === "PL" && nextmode === "LS") { + hdlDir.mkdir(hardwarePath); + hdlDir.readdir(userPath, true, (folder) => { + if (folder !== "Hardware") { + hdlDir.mvdir(folder, hardwarePath); + } + }); + + hdlDir.mkdir(`${softwarePath}/data`); + hdlDir.mkdir(`${softwarePath}/src`); + } + else if (currmode === "LS" && nextmode === "PL") { + const needNotice = vscode.workspace.getConfiguration().get('PRJ.file.structure.notice', true); + if (needNotice) { + let select = await vscode.window.showWarningMessage("Software will be deleted.", 'Yes', 'No'); + if (select === "Yes") { + hdlDir.rmdir(softwarePath); + } + } else { + hdlDir.rmdir(softwarePath); + } + + if (hdlFile.isExist(hardwarePath)) { + hdlDir.readdir(hardwarePath, true, (folder) => { + hdlDir.mvdir(folder, userPath); + }) + + hdlDir.rmdir(hardwarePath); + } + + hdlDir.mkdir(`${userPath}/src`); + hdlDir.mkdir(`${userPath}/sim`); + hdlDir.mkdir(`${userPath}/data`); + } + } } const prjManage = new PrjManage(); diff --git a/src/monitor/event.ts b/src/monitor/event.ts index 4eefd18..a73eef6 100644 --- a/src/monitor/event.ts +++ b/src/monitor/event.ts @@ -2,15 +2,15 @@ import assert = require('assert'); import * as chokidar from 'chokidar'; import * as vscode from 'vscode'; -import { refreshArchTree } from '../function/treeView'; +import * as fs from 'fs'; +import { refreshArchTree } from '../function/treeView'; import { AbsPath, MainOutput, opeParam, RelPath, ReportType } from '../global'; import { isSameSet } from '../global/util'; import { hdlFile, hdlPath } from '../hdlFs'; import { hdlParam, HdlSymbol } from '../hdlParser'; import { prjManage } from '../manager'; import { libManage } from '../manager/lib'; - import type { HdlMonitor } from './index'; enum Event { @@ -53,31 +53,10 @@ abstract class BaseAction { } fSWatcher.on(Event.Unlink, path => this.unlink(path, m)); } - - public listenUnlinkDir(m: HdlMonitor) { - const fSWatcher = this.selectFSWatcher(m); - if (!fSWatcher) { - MainOutput.report("FSWatcher hasn't been made!", ReportType.Error); - return; - } - fSWatcher.on(Event.UnlinkDir, path => this.unlinkDir(path, m)); - } - - // public listenAddDir(m: HdlMonitor) { - // const fSWatcher = this.selectFSWatcher(m); - // if (!fSWatcher) { - // MainOutput.report("FSWatcher hasn't been made!", ReportType.Error); - // return; - // } - // fSWatcher.on(Event.UnlinkDir, path => this.unlinkDir(path, m)); - // } - abstract selectFSWatcher(m: HdlMonitor): chokidar.FSWatcher | undefined; abstract change(path: AbsPath, m: HdlMonitor): Promise; abstract add(path: AbsPath, m: HdlMonitor): Promise; - // abstract addDir(path: AbsPath, m: HdlMonitor): Promise; abstract unlink(path: AbsPath, m: HdlMonitor): Promise; - abstract unlinkDir(path: AbsPath, m: HdlMonitor): Promise; } class HdlAction extends BaseAction { @@ -86,30 +65,31 @@ class HdlAction extends BaseAction { } async add(path: string, m: HdlMonitor): Promise { - console.log('HdlAction add'); + console.log('HdlAction add', path); path = hdlPath.toSlash(path); - // create corresponding moduleFile - hdlParam.initHdlFiles([path]); - - const moduleFile = hdlParam.getHdlFile(path); - if (!moduleFile) { - console.log('error happen when create moduleFile', path); - } else { - moduleFile.makeInstance(); - for (const module of moduleFile.getAllHdlModules()) { - module.solveUnhandleInstance(); - } + + // check if it has been created + if (hdlParam.hasHdlFile(path)) { + MainOutput.report(' HdlFile ' + path + 'has been created', ReportType.Warn); + return; } + + // create corresponding moduleFile + hdlParam.addHdlFile(path); + refreshArchTree(); } async unlink(path: string, m: HdlMonitor): Promise { console.log('HdlAction unlink', path); - - path = hdlPath.toSlash(path); - hdlParam.deleteHdlFile(path); - refreshArchTree(); + + // operation to process unlink of hdl files can be deleted in + if (fs.existsSync(path)) { + path = hdlPath.toSlash(path); + hdlParam.deleteHdlFile(path); + refreshArchTree(); + } } async unlinkDir(path: string, m: HdlMonitor): Promise { @@ -117,6 +97,11 @@ class HdlAction extends BaseAction { } + async addDir(path: string, m: HdlMonitor): Promise { + console.log('HdlAction addDir', path); + + } + async change(path: string, m: HdlMonitor): Promise { console.log('HdlAction change'); @@ -184,10 +169,6 @@ class PpyAction extends BaseAction { this.updateProperty(m); } - async unlinkDir(path: string, m: HdlMonitor): Promise { - - } - async change(path: string, m: HdlMonitor): Promise { console.log('PpyAction change'); assert.equal(hdlPath.toSlash(path), opeParam.propertyJsonPath); @@ -210,7 +191,7 @@ class PpyAction extends BaseAction { public async updateProperty(m: HdlMonitor) { const originalPathSet = this.getImportantPathSet(); - const originalHdlFiles = prjManage.getPrjHardwareFiles(); + const originalHdlFiles = await prjManage.getPrjHardwareFiles(); const originalLibState = opeParam.prjInfo.library.state; const rawPrjInfo = opeParam.getRawUserPrjInfo(); @@ -229,19 +210,17 @@ class PpyAction extends BaseAction { } else { // update hdl monitor const options: vscode.ProgressOptions = { location: vscode.ProgressLocation.Notification, title: 'modify the project' }; - vscode.window.withProgress(options, async () => await this.refreshHdlMonitor(m, originalHdlFiles)); + await vscode.window.withProgress(options, async () => await this.refreshHdlMonitor(m, originalHdlFiles)); } + refreshArchTree(); } public async refreshHdlMonitor(m: HdlMonitor, originalHdlFiles: AbsPath[]) { m.remakeHdlMonitor(); // update pl - console.log('current lib state', opeParam.prjInfo.library.state); - const currentHdlFiles = prjManage.getPrjHardwareFiles(); + const currentHdlFiles = await prjManage.getPrjHardwareFiles(); await this.updatePL(originalHdlFiles, currentHdlFiles); - - refreshArchTree(); } public async updatePL(oldFiles: AbsPath[], newFiles: AbsPath[]) { diff --git a/src/monitor/index.ts b/src/monitor/index.ts index f555464..470e80d 100644 --- a/src/monitor/index.ts +++ b/src/monitor/index.ts @@ -16,7 +16,7 @@ class HdlMonitor{ this.monitorConfig = { persistent: true, usePolling: false, - ignoreInitial: true, + ignoreInitial: true }; } @@ -85,6 +85,9 @@ class HdlMonitor{ Event.hdlAction.listenAdd(this); Event.hdlAction.listenChange(this); Event.hdlAction.listenUnlink(this); + + // Event.hdlAction.listenAddDir(this); + // Event.hdlAction.listenUnlinkDir(this); } public registerPpyMonitorListener() { From dbbae190d1cf2e088479f74b57b5378d2f012df5 Mon Sep 17 00:00:00 2001 From: Kirigaya <1193466151@qq.com> Date: Thu, 13 Jul 2023 02:31:26 +0800 Subject: [PATCH 26/54] #fix prj --- src/global/prjInfo.ts | 12 +-- src/hdlFs/dir.ts | 3 +- src/manager/prj.ts | 134 ++++++++++++++++++------------ src/monitor/event.ts | 20 +++-- src/test/manager/user/src/hello.v | 6 ++ src/test/monitor/src2/add.v | 4 +- 6 files changed, 111 insertions(+), 68 deletions(-) create mode 100644 src/test/manager/user/src/hello.v diff --git a/src/global/prjInfo.ts b/src/global/prjInfo.ts index 3446f25..0fc9cab 100644 --- a/src/global/prjInfo.ts +++ b/src/global/prjInfo.ts @@ -58,15 +58,15 @@ const PrjInfoDefaults: PrjInfoMeta = { get arch() { return { - prjPath: '', + prjPath: '.', hardware: { - src: '', - sim: '', - data: '' + src: '.', + sim: '.', + data: '.' }, software: { - src: '', - data: '' + src: '.', + data: '.' } }; }, diff --git a/src/hdlFs/dir.ts b/src/hdlFs/dir.ts index 800f7cf..4f0be84 100644 --- a/src/hdlFs/dir.ts +++ b/src/hdlFs/dir.ts @@ -127,5 +127,6 @@ function cpdir(src: AbsPath, dest: AbsPath, cover: boolean) { export { mkdir, rmdir, - cpdir + cpdir, + mvdir }; \ No newline at end of file diff --git a/src/manager/prj.ts b/src/manager/prj.ts index d9d6c7f..2d38a69 100644 --- a/src/manager/prj.ts +++ b/src/manager/prj.ts @@ -79,7 +79,9 @@ class PrjManage { { title: 'No', value: false } ); if (res?.value) { - vscode.commands.executeCommand('digital-ide.property-json.generate'); + await this.generatePropertyJson(); + const rawPrjInfo = hdlFile.readJSON(propertyJsonPath) as RawPrjInfo; + opeParam.mergePrjInfo(rawPrjInfo); } } } @@ -125,6 +127,7 @@ class PrjManage { } await this.initOpeParam(context); MainOutput.report('finish initialise opeParam', ReportType.Info); + prjManage.refreshPrjFolder(); const hdlFiles = await this.getPrjHardwareFiles(); MainOutput.report(`finish collect ${hdlFiles.length} hdl files`, ReportType.Info); @@ -143,22 +146,25 @@ class PrjManage { } } - - public async refreshPrjFolder() { - // TODO : finish this - // 无工程配置文件则直接退出 - if (!opeParam.prjInfo) { - return; + // read new prj from ppy + const rawPrjInfo = opeParam.getRawUserPrjInfo(); + + if (rawPrjInfo.arch) { + // configure user's info + await this.createFolderByRawPrjInfo(rawPrjInfo); + } else { + // configure by default + await this.createFolderByDefault(rawPrjInfo); } + } - const prjInfo = opeParam.prjInfo; - - // 如果是用户配置文件结构,检查并生成相关文件夹 - if (prjInfo.arch) { - hdlDir.mkdir(prjInfo.arch.prjPath); - const hardware = prjInfo.arch.hardware; - const software = prjInfo.arch.software; + public async createFolderByRawPrjInfo(rawPrjInfo: RawPrjInfo) { + if (rawPrjInfo.arch) { + hdlDir.mkdir(rawPrjInfo.arch.prjPath); + + const hardware = rawPrjInfo.arch.hardware; + const software = rawPrjInfo.arch.software; if (hardware) { hdlDir.mkdir(hardware.src); @@ -172,29 +178,26 @@ class PrjManage { } return; } + } - // 先直接创建工程文件夹 - hdlDir.mkdir(`${opeParam.workspacePath}/prj`); - // 初始化文件结构的路径 - const userPath = `${opeParam.workspacePath}/user`; - const softwarePath = `${opeParam.workspacePath}/user/Software`; - const hardwarePath = `${opeParam.workspacePath}/user/Hardware`; + public async createFolderByDefault(rawPrjInfo: RawPrjInfo) { + // create prj first + const defaultPrjPath = hdlPath.join(opeParam.workspacePath, 'prj'); + hdlDir.mkdir(defaultPrjPath); - let nextmode = "PL"; - // 再对源文件结构进行创建 - if (prjInfo.soc.core !== 'none') { - nextmode = "LS"; - } + // basic path + const userPath = hdlPath.join(opeParam.workspacePath, 'user'); + const softwarePath = hdlPath.join(userPath, 'Software'); + const hardwarePath = hdlPath.join(userPath, 'Hardware'); + + const nextmode = this.getNextMode(rawPrjInfo); + const currmode = this.getCurrentMode(softwarePath, hardwarePath); - let currmode = "PL"; - if (fs.existsSync(softwarePath) || fs.existsSync(hardwarePath)) { - currmode = "LS"; - } if (currmode === nextmode) { - const hardware = opeParam.prjInfo.ARCH.Hardware; - const software = opeParam.prjInfo.ARCH.Software; + const hardware = opeParam.prjInfo.arch.hardware; + const software = opeParam.prjInfo.arch.software; hdlDir.mkdir(hardware.src); hdlDir.mkdir(hardware.sim); @@ -203,44 +206,69 @@ class PrjManage { hdlDir.mkdir(software.src); hdlDir.mkdir(software.data); } - return; - } - - if (currmode === "PL" && nextmode === "LS") { + } else if (currmode === "PL" && nextmode === "LS") { hdlDir.mkdir(hardwarePath); - hdlDir.readdir(userPath, true, (folder) => { - if (folder !== "Hardware") { - hdlDir.mvdir(folder, hardwarePath); - } - }); - hdlDir.mkdir(`${softwarePath}/data`); - hdlDir.mkdir(`${softwarePath}/src`); + for (const path of fs.readdirSync(userPath)) { + const filePath = hdlPath.join(userPath, path); + if (filePath !== 'Hardware') { + hdlDir.mvdir(filePath, hardwarePath, true); + } + } + + const softwareDataPath = hdlPath.join(softwarePath, 'data'); + const softwareSrcPath = hdlPath.join(softwarePath, 'src'); + + hdlDir.mkdir(softwareDataPath); + hdlDir.mkdir(softwareSrcPath); } else if (currmode === "LS" && nextmode === "PL") { const needNotice = vscode.workspace.getConfiguration().get('PRJ.file.structure.notice', true); if (needNotice) { - let select = await vscode.window.showWarningMessage("Software will be deleted.", 'Yes', 'No'); - if (select === "Yes") { + const res = await vscode.window.showWarningMessage( + "Software will be deleted.", + { modal: true }, + { title: 'Yes', value: true }, + { title: 'No', value: false } + ); + if (res?.value) { hdlDir.rmdir(softwarePath); } } else { hdlDir.rmdir(softwarePath); } - if (hdlFile.isExist(hardwarePath)) { - hdlDir.readdir(hardwarePath, true, (folder) => { - hdlDir.mvdir(folder, userPath); - }) - + if (fs.existsSync(hardwarePath)) { + for (const path of fs.readdirSync(hardwarePath)) { + const filePath = hdlPath.join(hardwarePath, path); + hdlDir.mvdir(filePath, userPath, true); + } hdlDir.rmdir(hardwarePath); - } + } - hdlDir.mkdir(`${userPath}/src`); - hdlDir.mkdir(`${userPath}/sim`); - hdlDir.mkdir(`${userPath}/data`); + const userSrcPath = hdlPath.join(userPath, 'src'); + const userSimPath = hdlPath.join(userPath, 'sim'); + const userDataPath = hdlPath.join(userPath, 'data'); + + hdlDir.mkdir(userSrcPath); + hdlDir.mkdir(userSimPath); + hdlDir.mkdir(userDataPath); } } + + public getNextMode(rawPrjInfo: RawPrjInfo): 'PL' | 'LS' { + if (rawPrjInfo.soc && rawPrjInfo.soc.core !== 'none') { + return 'LS'; + } + return 'PL'; + } + + public getCurrentMode(softwarePath: AbsPath, hardwarePath: AbsPath): 'PL' | 'LS' { + if (fs.existsSync(softwarePath) || fs.existsSync(hardwarePath)) { + return 'LS'; + } + return 'PL'; + } } const prjManage = new PrjManage(); diff --git a/src/monitor/event.ts b/src/monitor/event.ts index a73eef6..2148b8b 100644 --- a/src/monitor/event.ts +++ b/src/monitor/event.ts @@ -5,7 +5,7 @@ import * as vscode from 'vscode'; import * as fs from 'fs'; import { refreshArchTree } from '../function/treeView'; -import { AbsPath, MainOutput, opeParam, RelPath, ReportType } from '../global'; +import { AbsPath, MainOutput, opeParam, PrjInfoDefaults, RelPath, ReportType } from '../global'; import { isSameSet } from '../global/util'; import { hdlFile, hdlPath } from '../hdlFs'; import { hdlParam, HdlSymbol } from '../hdlParser'; @@ -160,19 +160,22 @@ class PpyAction extends BaseAction { async add(path: string, m: HdlMonitor): Promise { console.log('PpyAction add'); assert.equal(hdlPath.toSlash(path), opeParam.propertyJsonPath); - this.updateProperty(m); + await this.updateProperty(Event.Add, m); + prjManage.refreshPrjFolder(); } async unlink(path: string, m: HdlMonitor): Promise { console.log('PpyAction unlink'); assert.equal(hdlPath.toSlash(path), opeParam.propertyJsonPath); - this.updateProperty(m); + await this.updateProperty(Event.Unlink, m); + prjManage.refreshPrjFolder(); } async change(path: string, m: HdlMonitor): Promise { console.log('PpyAction change'); assert.equal(hdlPath.toSlash(path), opeParam.propertyJsonPath); - this.updateProperty(m); + await this.updateProperty(Event.Change, m); + prjManage.refreshPrjFolder(); } // get path set from opeParam that used to tell if need to remake HdlMonitor @@ -189,12 +192,17 @@ class PpyAction extends BaseAction { return pathSet; } - public async updateProperty(m: HdlMonitor) { + public async updateProperty(e: Event, m: HdlMonitor) { const originalPathSet = this.getImportantPathSet(); const originalHdlFiles = await prjManage.getPrjHardwareFiles(); const originalLibState = opeParam.prjInfo.library.state; const rawPrjInfo = opeParam.getRawUserPrjInfo(); + // when delete, make ws path to be main parse path + if (e === Event.Unlink) { + rawPrjInfo.arch = PrjInfoDefaults.arch; + } + opeParam.mergePrjInfo(rawPrjInfo); const currentPathSet = this.getImportantPathSet(); @@ -203,7 +211,7 @@ class PpyAction extends BaseAction { if (isSameSet(originalPathSet, currentPathSet)) { // skip hdl remake if (originalLibState !== currentLibState) { - const fileChange = libManage.processLibFiles(opeParam.prjInfo.library); + const fileChange = await libManage.processLibFiles(opeParam.prjInfo.library); MainOutput.report(`libManage finish process, add ${fileChange.add.length} files, del ${fileChange.del.length} files`, ReportType.Info); } diff --git a/src/test/manager/user/src/hello.v b/src/test/manager/user/src/hello.v new file mode 100644 index 0000000..4165df3 --- /dev/null +++ b/src/test/manager/user/src/hello.v @@ -0,0 +1,6 @@ +module hello( + input clk, reset, + output value +); + +endmodule \ No newline at end of file diff --git a/src/test/monitor/src2/add.v b/src/test/monitor/src2/add.v index 4f5d1e2..62647f8 100644 --- a/src/test/monitor/src2/add.v +++ b/src/test/monitor/src2/add.v @@ -1,6 +1,6 @@ module SimpleAdd_2( - input [8:0] a, b, - output [8:0] c + input [7:0] a, b, + output [7:0] c ); assign c = a + b; From 2ad67933b1a884f397664e9d8c0f25cadd01da11 Mon Sep 17 00:00:00 2001 From: Kirigaya <1193466151@qq.com> Date: Fri, 14 Jul 2023 02:53:45 +0800 Subject: [PATCH 27/54] #fix digital-ide.tool.clean --- src/function/index.ts | 1 - src/function/treeView/command.ts | 27 ++++++++++++++++++++++++++ src/manager/prj.ts | 7 ++++++- src/monitor/event.ts | 16 +++++++++++++++ src/monitor/index.ts | 8 ++++++++ src/test/manager/.vscode/property.json | 11 +++++++++++ 6 files changed, 68 insertions(+), 2 deletions(-) create mode 100644 src/test/manager/.vscode/property.json diff --git a/src/function/index.ts b/src/function/index.ts index 97c4ff1..b29f38c 100644 --- a/src/function/index.ts +++ b/src/function/index.ts @@ -46,7 +46,6 @@ function registerTreeView(context: vscode.ExtensionContext) { vscode.commands.registerCommand('digital-ide.treeView.arch.collapse', treeView.collapseTreeView); vscode.commands.registerCommand('digital-ide.treeView.arch.refresh', treeView.refreshArchTree); vscode.commands.registerCommand('digital-ide.treeView.arch.openFile', treeView.openFileByUri); - } diff --git a/src/function/treeView/command.ts b/src/function/treeView/command.ts index fbe310f..9dc9ba4 100644 --- a/src/function/treeView/command.ts +++ b/src/function/treeView/command.ts @@ -1,6 +1,9 @@ /* eslint-disable @typescript-eslint/naming-convention */ import * as vscode from 'vscode'; +import { MainOutput, opeParam } from '../../global'; +import { hdlDir, hdlFile, hdlPath } from '../../hdlFs'; import { getIconConfig } from '../../hdlFs/icons'; +import { hdlIgnore } from '../../manager/ignore'; interface CommandDataItem { name: string, @@ -186,6 +189,30 @@ class ToolTreeProvider extends BaseCommandTreeProvider { } }; super(config, 'TOOL'); + + vscode.commands.registerCommand('digital-ide.tool.clean', this.clean); + } + + public async clean() { + const prjPath = opeParam.prjInfo.arch.prjPath; + const xilFolder = hdlPath.join(opeParam.workspacePath, '.Xil'); + + hdlDir.rmdir(prjPath); + hdlDir.rmdir(xilFolder); + + const ignores = hdlIgnore.getIgnoreFiles(); + + const strFiles = hdlFile.pickFileRecursive(opeParam.workspacePath, ignores, p => p.endsWith('.str')); + for (const path of strFiles) { + hdlFile.removeFile(path); + } + + const logFiles = hdlFile.pickFileRecursive(opeParam.workspacePath, ignores, p => p.endsWith('.log')); + for (const path of logFiles) { + hdlFile.readFile(path); + } + + MainOutput.report('finish digital-ide.tool.clean'); } } diff --git a/src/manager/prj.ts b/src/manager/prj.ts index 2d38a69..b9ea168 100644 --- a/src/manager/prj.ts +++ b/src/manager/prj.ts @@ -11,6 +11,8 @@ import { hdlParam } from '../hdlParser'; import { PlManage } from './PL'; import { PsManage } from './PS'; import { hdlIgnore } from './ignore'; +import { ppyAction } from '../monitor/event'; +import { hdlMonitor } from '../monitor'; class PrjManage { pl?: PlManage; @@ -23,8 +25,11 @@ class PrjManage { return; } const template = hdlFile.readJSON(opeParam.propertyInitPath) as RawPrjInfo; - hdlFile.writeJSON(opeParam.propertyJsonPath, template); + + // TODO : this is a bug, that monitor cannot sense the add event of ppy + // so we need to do manually here + await ppyAction.add(opeParam.propertyJsonPath, hdlMonitor); } // overwrite content in current property.json to property-init.json diff --git a/src/monitor/event.ts b/src/monitor/event.ts index 2148b8b..23a92b5 100644 --- a/src/monitor/event.ts +++ b/src/monitor/event.ts @@ -200,11 +200,27 @@ class PpyAction extends BaseAction { const rawPrjInfo = opeParam.getRawUserPrjInfo(); // when delete, make ws path to be main parse path if (e === Event.Unlink) { + console.log('unlink ppy, PrjInfoDefaults.arch:', PrjInfoDefaults.arch); + rawPrjInfo.arch = PrjInfoDefaults.arch; } opeParam.mergePrjInfo(rawPrjInfo); + // // when delete, make ws path to be main parse path + // if (e === Event.Unlink) { + // const prjInfoArch = opeParam.prjInfo.arch; + // const workspacePath = opeParam.workspacePath; + + // // TODO : more elegant ? + // prjInfoArch.hardware.src = workspacePath; + // prjInfoArch.hardware.sim = workspacePath; + // prjInfoArch.hardware.data = workspacePath; + // prjInfoArch.prjPath = workspacePath; + // prjInfoArch.software.data = workspacePath; + // prjInfoArch.software.src = workspacePath; + // } + const currentPathSet = this.getImportantPathSet(); const currentLibState = opeParam.prjInfo.library.state; diff --git a/src/monitor/index.ts b/src/monitor/index.ts index 470e80d..8d21dc3 100644 --- a/src/monitor/index.ts +++ b/src/monitor/index.ts @@ -81,6 +81,14 @@ class HdlMonitor{ } } + public remakePpyMonitor() { + if (this.ppyMonitor) { + this.ppyMonitor.close(); + this.ppyMonitor = this.getPpyMonitor(); + this.registerPpyMonitorListener(); + } + } + public registerHdlMonitorListener() { Event.hdlAction.listenAdd(this); Event.hdlAction.listenChange(this); diff --git a/src/test/manager/.vscode/property.json b/src/test/manager/.vscode/property.json new file mode 100644 index 0000000..7dc2beb --- /dev/null +++ b/src/test/manager/.vscode/property.json @@ -0,0 +1,11 @@ +{ + "toolChain": "xilinx", + "prjName": { + "PL": "template" + }, + "soc": { + "core": "none" + }, + "enableShowLog": false, + "device": "none" +} \ No newline at end of file From 0354723711523feb472c34806a609d881d9714e9 Mon Sep 17 00:00:00 2001 From: Kirigaya <1193466151@qq.com> Date: Fri, 14 Jul 2023 18:28:59 +0800 Subject: [PATCH 28/54] #fix ppy soc.core reaction --- src/global/prjInfo.ts | 11 +- src/hdlParser/core.ts | 4 +- src/manager/prj.ts | 7 +- src/monitor/event.ts | 18 +-- src/test/user/src/Cordic.v | 258 +++++++++++++++++++++++++++++++++++ src/test/user/src/fsm_test.v | 58 ++++++++ 6 files changed, 336 insertions(+), 20 deletions(-) create mode 100644 src/test/user/src/Cordic.v create mode 100644 src/test/user/src/fsm_test.v diff --git a/src/global/prjInfo.ts b/src/global/prjInfo.ts index 0fc9cab..f783001 100644 --- a/src/global/prjInfo.ts +++ b/src/global/prjInfo.ts @@ -412,7 +412,16 @@ class PrjInfo implements PrjInfoMeta { this.setDefaultValue(this.arch.software, 'data', workspacePath); this.setDefaultValue(this.arch, 'prjPath', workspacePath); - // check existence & make dir + // // check existence & make dir + // this.checkDirExist(this.arch.hardware.sim); + // this.checkDirExist(this.arch.hardware.src); + // this.checkDirExist(this.arch.hardware.data); + // this.checkDirExist(this.arch.software.src); + // this.checkDirExist(this.arch.software.data); + // this.checkDirExist(this.arch.prjPath); + } + + public checkArchDirExist() { this.checkDirExist(this.arch.hardware.sim); this.checkDirExist(this.arch.hardware.src); this.checkDirExist(this.arch.hardware.data); diff --git a/src/hdlParser/core.ts b/src/hdlParser/core.ts index 3895515..9cd1bbc 100644 --- a/src/hdlParser/core.ts +++ b/src/hdlParser/core.ts @@ -301,9 +301,9 @@ class HdlParam { } } - public addHdlFile(path: AbsPath) { + public async addHdlFile(path: AbsPath) { path = hdlPath.toSlash(path); - this.initHdlFiles([path]); + await this.initHdlFiles([path]); const moduleFile = this.getHdlFile(path); if (!moduleFile) { diff --git a/src/manager/prj.ts b/src/manager/prj.ts index b9ea168..79278d8 100644 --- a/src/manager/prj.ts +++ b/src/manager/prj.ts @@ -162,6 +162,8 @@ class PrjManage { // configure by default await this.createFolderByDefault(rawPrjInfo); } + + opeParam.prjInfo.checkArchDirExist(); } public async createFolderByRawPrjInfo(rawPrjInfo: RawPrjInfo) { @@ -181,7 +183,6 @@ class PrjManage { hdlDir.mkdir(software.src); hdlDir.mkdir(software.data); } - return; } } @@ -197,8 +198,12 @@ class PrjManage { const hardwarePath = hdlPath.join(userPath, 'Hardware'); const nextmode = this.getNextMode(rawPrjInfo); + console.log(softwarePath, fs.existsSync(softwarePath)); + console.log(hardwarePath, fs.existsSync(hardwarePath)); + const currmode = this.getCurrentMode(softwarePath, hardwarePath); + console.log(currmode, nextmode); if (currmode === nextmode) { const hardware = opeParam.prjInfo.arch.hardware; diff --git a/src/monitor/event.ts b/src/monitor/event.ts index 23a92b5..dbb0ca5 100644 --- a/src/monitor/event.ts +++ b/src/monitor/event.ts @@ -71,12 +71,12 @@ class HdlAction extends BaseAction { // check if it has been created if (hdlParam.hasHdlFile(path)) { - MainOutput.report(' HdlFile ' + path + 'has been created', ReportType.Warn); + MainOutput.report(' HdlFile ' + path + ' has been created', ReportType.Warn); return; } // create corresponding moduleFile - hdlParam.addHdlFile(path); + await hdlParam.addHdlFile(path); refreshArchTree(); } @@ -207,20 +207,6 @@ class PpyAction extends BaseAction { opeParam.mergePrjInfo(rawPrjInfo); - // // when delete, make ws path to be main parse path - // if (e === Event.Unlink) { - // const prjInfoArch = opeParam.prjInfo.arch; - // const workspacePath = opeParam.workspacePath; - - // // TODO : more elegant ? - // prjInfoArch.hardware.src = workspacePath; - // prjInfoArch.hardware.sim = workspacePath; - // prjInfoArch.hardware.data = workspacePath; - // prjInfoArch.prjPath = workspacePath; - // prjInfoArch.software.data = workspacePath; - // prjInfoArch.software.src = workspacePath; - // } - const currentPathSet = this.getImportantPathSet(); const currentLibState = opeParam.prjInfo.library.state; diff --git a/src/test/user/src/Cordic.v b/src/test/user/src/Cordic.v new file mode 100644 index 0000000..bf52c75 --- /dev/null +++ b/src/test/user/src/Cordic.v @@ -0,0 +1,258 @@ +`timescale 1ns / 1ps + +module Cordic #( + parameter XY_BITS = 12, + parameter PH_BITS = 32, + parameter ITERATIONS = 32, + parameter CORDIC_STYLE = "ROTATE", + parameter PHASE_ACC = "ON" +)( + input clk, + input RST, + input signed [XY_BITS-1:0] x_i, + input signed [XY_BITS-1:0] y_i, + input signed [PH_BITS-1:0] phase_in, + + output signed [XY_BITS-1:0] x_o, + output signed [XY_BITS-1:0] y_o, + output signed [PH_BITS-1:0] phase_out, + + input valid_in, + output valid_out +); + +localparam [XY_BITS-1:0] K_COS = (0.607252935 * 2**(XY_BITS-1))-2; + +/* +//360°--2^16,phase_in = 16bits (input [15:0] phase_in) +//1°--2^16/360 +*/ +function [PH_BITS-1:0] tanangle; +input [4:0] i; +begin + case (i) + 5'b00000: tanangle = (32'h20000000 >> (32 - PH_BITS)); //tan = 1/2^1 = 1/2 + 5'b00001: tanangle = (32'h12e4051e >> (32 - PH_BITS)); //tan = 1/2^2 = 1/4 + 5'b00010: tanangle = (32'h09fb385b >> (32 - PH_BITS)); //tan = 1/2^3 = 1/8 + 5'b00011: tanangle = (32'h051111d4 >> (32 - PH_BITS)); //tan = 1/2^4 = 1/16 + 5'b00100: tanangle = (32'h028b0d43 >> (32 - PH_BITS)); //tan = 1/2^5 = 1/32 + 5'b00101: tanangle = (32'h0145d7e1 >> (32 - PH_BITS)); //tan = 1/2^6 = 1/64 + 5'b00110: tanangle = (32'h00a2f61e >> (32 - PH_BITS)); //tan = 1/2^7 = 1/128 + 5'b00111: tanangle = (32'h00517c55 >> (32 - PH_BITS)); //tan = 1/2^8 = 1/256 + 5'b01000: tanangle = (32'h0028be53 >> (32 - PH_BITS)); //tan = 1/2^9 = 1/512 + 5'b01001: tanangle = (32'h00145f2f >> (32 - PH_BITS)); //tan = 1/2^10 = 1/1024 + 5'b01010: tanangle = (32'h000a2f98 >> (32 - PH_BITS)); //tan = 1/2^11 = 1/2048 + 5'b01011: tanangle = (32'h000517cc >> (32 - PH_BITS)); //tan = 1/2^12 = 1/4096 + 5'b01100: tanangle = (32'h00028be6 >> (32 - PH_BITS)); //tan = 1/2^13 = 1/8192 + 5'b01101: tanangle = (32'h000145f3 >> (32 - PH_BITS)); //tan = 1/2^14 = 1/16384 + 5'b01110: tanangle = (32'h0000a2fa >> (32 - PH_BITS)); //tan = 1/2^15 = 1/32768 + 5'b01111: tanangle = (32'h0000517d >> (32 - PH_BITS)); //tan = 1/2^16 = 1/65536 + 5'b10000: tanangle = (32'h000028be >> (32 - PH_BITS)); //tan = 1/2^17 = 1/131072 + 5'b10001: tanangle = (32'h0000145f >> (32 - PH_BITS)); //tan = 1/2^18 = 1/262144 + 5'b10010: tanangle = (32'h00000a30 >> (32 - PH_BITS)); //tan = 1/2^19 = 1/524288 + 5'b10011: tanangle = (32'h00000518 >> (32 - PH_BITS)); //tan = 1/2^20 = 1/1048576 + 5'b10100: tanangle = (32'h0000028c >> (32 - PH_BITS)); //tan = 1/2^21 = 1/2097152 + 5'b10101: tanangle = (32'h00000146 >> (32 - PH_BITS)); //tan = 1/2^22 = 1/4194304 + 5'b10110: tanangle = (32'h000000a3 >> (32 - PH_BITS)); //tan = 1/2^23 = 1/8388608 + 5'b10111: tanangle = (32'h00000051 >> (32 - PH_BITS)); //tan = 1/2^24 = 1/16777216 + 5'b11000: tanangle = (32'h00000029 >> (32 - PH_BITS)); //tan = 1/2^25 = 1/33554432 + 5'b11001: tanangle = (32'h00000014 >> (32 - PH_BITS)); //tan = 1/2^26 = 1/67108864 + 5'b11010: tanangle = (32'h0000000a >> (32 - PH_BITS)); //tan = 1/2^27 = 1/134217728 + 5'b11011: tanangle = (32'h00000005 >> (32 - PH_BITS)); //tan = 1/2^28 = 1/268435456 + 5'b11100: tanangle = (32'h00000003 >> (32 - PH_BITS)); //tan = 1/2^29 = 1/536870912 + 5'b11101: tanangle = (32'h00000001 >> (32 - PH_BITS)); //tan = 1/2^30 = 1/1073741824 + 5'b11110: tanangle = (32'h00000001 >> (32 - PH_BITS)); //tan = 1/2^31 = 1/2147483648 + 5'b11111: tanangle = (32'h00000000 >> (32 - PH_BITS)); //tan = 1/2^32 = 1/4294967296 + endcase +end +endfunction + +reg [1:0] data_in_buff [ITERATIONS:0]; +reg signed [XY_BITS-1:0] x [ITERATIONS:0]; +reg signed [XY_BITS-1:0] y [ITERATIONS:0]; +reg signed [PH_BITS-1:0] z [ITERATIONS:0]; + +integer m; +initial begin + for (m = 0; m<=ITERATIONS; m=m+1) begin + x[m] = 0; + end +end + +integer n; +initial begin + for (n = 0; n<=ITERATIONS; n=n+1) begin + y[n] = 0; + end +end + +integer s; +initial begin + for (s = 0; s<=ITERATIONS; s=s+1) begin + z[s] = 0; + end +end + +integer k; +initial begin + for (k = 0; k<=ITERATIONS; k=k+1) begin + data_in_buff[k] = 0; + end +end + +genvar i; +generate for(i=0;i>>i); + y[i+1] <= y[i] - (x[i]>>>i); + z[i+1] <= z[i] + tanangle(i); + end + else begin + x[i+1] <= x[i] - (y[i]>>>i); + y[i+1] <= y[i] + (x[i]>>>i); + z[i+1] <= z[i] - tanangle(i); + end + end + else if(CORDIC_STYLE == "VECTOR") begin + if (y[i] > 0) begin + x[i+1] <= x[i] + (y[i]>>>i); + y[i+1] <= y[i] - (x[i]>>>i); + z[i+1] <= z[i] + tanangle(i); + end else begin + x[i+1] <= x[i] - (y[i]>>>i); + y[i+1] <= y[i] + (x[i]>>>i); + z[i+1] <= z[i] - tanangle(i); + end + end + end +end +always @ (posedge clk) begin + data_in_buff[i+1] <= data_in_buff[i]; +end +end +endgenerate + +generate if (CORDIC_STYLE == "ROTATE") begin : IQ_Gen +reg [PH_BITS - 1 : 0] Phase_input = 0; +if (PHASE_ACC == "ON") begin + reg [PH_BITS - 1 : 0] addr_r0 = 0; + always @(posedge clk) begin + addr_r0 <= addr_r0 + phase_in; + end + always @(posedge clk) begin + Phase_input <= addr_r0; + end +end +else if (PHASE_ACC == "OFF") begin + always @(posedge clk) begin + Phase_input <= phase_in; + end +end +always @(posedge clk) begin + if(valid_in & (~RST)) begin + x[0] <= K_COS; + y[0] <= 0; + z[0] <= Phase_input[PH_BITS - 3 : 0]; + data_in_buff[0] <= Phase_input[PH_BITS - 1 : PH_BITS - 2]; + end + else begin + x[0] <= 0; + y[0] <= 0; + z[0] <= 0; + data_in_buff[0] <= 0; + end +end +reg signed [XY_BITS-1:0] cos = 0; +reg signed [XY_BITS-1:0] sin = 0; +always @ (posedge clk) begin + case(data_in_buff[ITERATIONS]) + 2'b00:begin //if the phase is in first quadrant,the sin(X)=sin(A),cos(X)=cos(A) + cos <= x[ITERATIONS]; + sin <= y[ITERATIONS]; + end + 2'b01:begin //if the phase is in second quadrant,the sin(X)=sin(A+90)=cosA,cos(X)=cos(A+90)=-sinA + cos <= ~(y[ITERATIONS]) + 1'b1;//-sin + sin <= x[ITERATIONS];//cos + end + 2'b10:begin //if the phase is in third quadrant,the sin(X)=sin(A+180)=-sinA,cos(X)=cos(A+180)=-cosA + cos <= ~(x[ITERATIONS]) + 1'b1;//-cos + sin <= ~(y[ITERATIONS]) + 1'b1;//-sin + end + 2'b11:begin //if the phase is in forth quadrant,the sin(X)=sin(A+270)=-cosA,cos(X)=cos(A+270)=sinA + cos <= y[ITERATIONS];//sin + sin <= ~(x[ITERATIONS]) + 1'b1;//-cos + end + endcase +end +assign x_o = cos; +assign y_o = sin; +assign phase_out = z[ITERATIONS]; +end +endgenerate + +generate if (CORDIC_STYLE == "VECTOR") begin : Demodule_Gen +localparam signed [PH_BITS-1:0] PHASE_COE = (2**(PH_BITS-2)) - 1; +//localparam MODUIUS_COE = ; +always @(posedge clk) begin + if(valid_in & (~RST)) begin + case ({x_i[XY_BITS-1],y_i[XY_BITS-1]}) + 2'b00 : begin x[0] <= {x_i[XY_BITS-1],x_i[XY_BITS-1:1]}; + y[0] <= {y_i[XY_BITS-1],y_i[XY_BITS-1:1]}; end + 2'b01 : begin x[0] <= {x_i[XY_BITS-1],x_i[XY_BITS-1:1]}; + y[0] <= {y_i[XY_BITS-1],y_i[XY_BITS-1:1]}; end + 2'b10 : begin x[0] <= {y_i[XY_BITS-1],y_i[XY_BITS-1:1]}; + y[0] <= -{x_i[XY_BITS-1],x_i[XY_BITS-1:1]}; end + 2'b11 : begin x[0] <= -{y_i[XY_BITS-1],y_i[XY_BITS-1:1]}; + y[0] <= {x_i[XY_BITS-1],x_i[XY_BITS-1:1]}; end + default : begin x[0] <= {x_i[XY_BITS-1],x_i[XY_BITS-1:1]}; + y[0] <= {y_i[XY_BITS-1],y_i[XY_BITS-1:1]}; end + endcase + z[0] <= phase_in; + data_in_buff[0] <= {x_i[XY_BITS-1],y_i[XY_BITS-1]}; + end + else begin + x[0] <= 0; + y[0] <= 0; + z[0] <= 0; + data_in_buff[0] <= 0; + end +end +reg [XY_BITS*2-1:0] Modulus = 0; +wire [XY_BITS*2-1:0] Modulus_buf; +reg signed [PH_BITS - 1:0] phase_r = 0; +always @ (posedge clk) begin + case(data_in_buff[ITERATIONS]) + 2'b00:begin phase_r <= $signed(z[ITERATIONS]); end + 2'b01:begin phase_r <= $signed(z[ITERATIONS]); end + 2'b10:begin phase_r <= $signed(z[ITERATIONS]) + $signed(PHASE_COE); end + 2'b11:begin phase_r <= $signed(z[ITERATIONS]) - $signed(PHASE_COE); end + endcase + Modulus[XY_BITS:0] <= x[ITERATIONS]; +end +assign Modulus_buf = (Modulus * 32'd39797)>>15; +assign x_o = Modulus_buf[XY_BITS-1:0]; +assign y_o = y[ITERATIONS]; +assign phase_out = phase_r; +end +endgenerate + +reg [ITERATIONS+1:0] v = 0; +always @ (posedge clk) begin + if (RST) + v <= 0; + else begin + v <= v << 1; + v[0] <= valid_in; + end +end +assign valid_out = v[ITERATIONS+1]; + +endmodule diff --git a/src/test/user/src/fsm_test.v b/src/test/user/src/fsm_test.v new file mode 100644 index 0000000..95b2134 --- /dev/null +++ b/src/test/user/src/fsm_test.v @@ -0,0 +1,58 @@ +module fsm_test( + input clock, + input reset, + input [2 : 0] req_0, + input [2 : 0] req_1, + output reg [2 : 0] gnt_0, + output reg [2 : 0] gnt_1 + ); + + reg [2:0] state; + + parameter IDLE = 3'h1; + parameter GNT0 = 3'd2; + parameter GNT1 = 3'b100; + + always @ (posedge clock) begin : FSM + if (reset == 1'b1) begin + state <= #1 IDLE; + gnt_0 <= 0; + gnt_1 <= 0; + end + else + case(state) + IDLE : + if (req_0 == 1'b1) begin + state <= #1 GNT0; + gnt_0 <= 1; + end + else if (req_1 == 1'b1) begin + gnt_1 <= 1; + state <= #1 GNT1; + end + else begin + state <= #1 IDLE; //example comment + end + GNT0 : + if (req_0 == 1'b1) begin + state <= #1 GNT0; + end + else begin + gnt_0 <= 0; + state <= #1 IDLE; + end + GNT1 : + if (req_1 == 1'b1) begin + state <= #1 GNT1; + end + else begin + gnt_1 <= 0; + state <= #1 IDLE; + end + default : + state <= #1 IDLE; + endcase + end + + +endmodule //module_name From 10c73206a46eeced35301da0ef835a0aa5a228fd Mon Sep 17 00:00:00 2001 From: Kirigaya <1193466151@qq.com> Date: Fri, 14 Jul 2023 19:05:02 +0800 Subject: [PATCH 29/54] #add translator --- package.json | 5 ++++ package.nls.json | 3 ++- package.nls.zh-cn.json | 3 ++- package.nls.zh-tw.json | 3 ++- resources/translator/index.d.ts | 7 +++++ resources/translator/index.js | 45 ++++++++++++++++++++++++++++++++ resources/translator/vhd2vlog.js | 37 ++++++++++++++++++++++++++ src/function/index.ts | 4 +++ 8 files changed, 104 insertions(+), 3 deletions(-) create mode 100644 resources/translator/index.d.ts create mode 100644 resources/translator/index.js create mode 100644 resources/translator/vhd2vlog.js diff --git a/package.json b/package.json index ed90044..2631970 100644 --- a/package.json +++ b/package.json @@ -415,6 +415,11 @@ "command": "digital-ide.lsp.tool.transformOldPropertyFile", "title": "%digital-ide.lsp.tool.transformOldPropertyFile.title%", "category": "Digital-IDE" + }, + { + "command": "digital-ide.vhdl2vlog", + "title": "%digital-ide.vhdl2vlog.title%", + "category": "Digital-IDE" } ], "menus": { diff --git a/package.nls.json b/package.nls.json index 4da1b2d..173404b 100644 --- a/package.nls.json +++ b/package.nls.json @@ -37,5 +37,6 @@ "digital-ide.netlist.title": "netlist", "digital-ide.fsm.title": "finite state machine", "digital-ide.lsp.tool.insertTextToUri.title": "insert text to uri", - "digital-ide.lsp.tool.transformOldPropertyFile.title": "transform configure file from previous version to new version" + "digital-ide.lsp.tool.transformOldPropertyFile.title": "transform configure file from previous version to new version", + "digital-ide.vhdl2vlog.title": "translate vhdl code to verilog code" } \ No newline at end of file diff --git a/package.nls.zh-cn.json b/package.nls.zh-cn.json index 72a4558..8563650 100644 --- a/package.nls.zh-cn.json +++ b/package.nls.zh-cn.json @@ -37,5 +37,6 @@ "digital-ide.netlist.title": "netlist", "digital-ide.fsm.title": "有限状态机", "digital-ide.lsp.tool.insertTextToUri.title": "插入文本uri", - "digital-ide.lsp.tool.transformOldPropertyFile.title": "转换配置文件从先前版本新版本" + "digital-ide.lsp.tool.transformOldPropertyFile.title": "转换配置文件从先前版本新版本", + "digital-ide.vhdl2vlog.title": "vhdl代码翻译为verilog代码" } \ No newline at end of file diff --git a/package.nls.zh-tw.json b/package.nls.zh-tw.json index 2a574e4..4a10f5d 100644 --- a/package.nls.zh-tw.json +++ b/package.nls.zh-tw.json @@ -37,5 +37,6 @@ "digital-ide.netlist.title": "netlist", "digital-ide.fsm.title": "有限狀態機", "digital-ide.lsp.tool.insertTextToUri.title": "插入文本uri", - "digital-ide.lsp.tool.transformOldPropertyFile.title": "轉換配置文件從先前版本新版本" + "digital-ide.lsp.tool.transformOldPropertyFile.title": "轉換配置文件從先前版本新版本", + "digital-ide.vhdl2vlog.title": "vhdl代碼翻譯为verilog代碼" } \ No newline at end of file diff --git a/resources/translator/index.d.ts b/resources/translator/index.d.ts new file mode 100644 index 0000000..d748101 --- /dev/null +++ b/resources/translator/index.d.ts @@ -0,0 +1,7 @@ +import type * as vscode from 'vscode'; + +declare module Translator { + export async function vhdl2vlog(uri: vscode.Uri): Promise; +} + +export = Translator; \ No newline at end of file diff --git a/resources/translator/index.js b/resources/translator/index.js new file mode 100644 index 0000000..02f8896 --- /dev/null +++ b/resources/translator/index.js @@ -0,0 +1,45 @@ +/* eslint-disable @typescript-eslint/naming-convention */ +const fs = require('fs'); +const vscode = require('vscode'); +const vhd2vl = require("./vhd2vlog"); + +/** + * + * @param {vscode.Uri} uri + * @return {Promise} + */ +async function vhdl2vlog(uri) { + const path = uri.fsPath.replace(/\\/g, '/'); + const Module = await vhd2vl(); + const content = fs.readFileSync(path, "utf-8"); + const status = Module.ccall('vhdlParse', '', ['string'], [content]); + if (!status) { + content = Module.ccall('getVlog', 'string', ['string'], []); + vscode.window.showSaveDialog({ + filters: { + verilog: ["v", "V", "vh", "vl"], // 文件类型过滤 + }, + }).then(fileInfos => { + let path_full = fileInfos === null || fileInfos === void 0 ? void 0 : fileInfos.path; + if (path_full !== undefined) { + if (path_full[0] === '/' && require('os').platform() === 'win32') { + path_full = path_full.substring(1); + } + fs.writeFileSync(path_full, content, "utf-8"); + vscode.window.showInformationMessage("translate successfully"); + const options = { + preview: false, + viewColumn: vscode.ViewColumn.Two + }; + vscode.window.showTextDocument(vscode.Uri.file(path_full), options); + } + }); + } else { + const error = Module.ccall('getErr', 'string', ['string'], []); + vscode.window.showErrorMessage(error); + } +} + +module.exports = { + vhdl2vlog +}; diff --git a/resources/translator/vhd2vlog.js b/resources/translator/vhd2vlog.js new file mode 100644 index 0000000..d29a311 --- /dev/null +++ b/resources/translator/vhd2vlog.js @@ -0,0 +1,37 @@ + +var Module = (function() { + var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined; + if (typeof __filename !== 'undefined') _scriptDir = _scriptDir || __filename; + return ( +function(Module) { + Module = Module || {}; + +var Module=typeof Module!=="undefined"?Module:{};var readyPromiseResolve,readyPromiseReject;Module["ready"]=new Promise(function(resolve,reject){readyPromiseResolve=resolve;readyPromiseReject=reject});var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var arguments_=[];var thisProgram="./this.program";var quit_=function(status,toThrow){throw toThrow};var ENVIRONMENT_IS_WEB=typeof window==="object";var ENVIRONMENT_IS_WORKER=typeof importScripts==="function";var ENVIRONMENT_IS_NODE=typeof process==="object"&&typeof process.versions==="object"&&typeof process.versions.node==="string";var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;var nodeFS;var nodePath;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require("path").dirname(scriptDirectory)+"/"}else{scriptDirectory=__dirname+"/"}read_=function shell_read(filename,binary){var ret=tryParseAsDataURI(filename);if(ret){return binary?ret:ret.toString()}if(!nodeFS)nodeFS=require("fs");if(!nodePath)nodePath=require("path");filename=nodePath["normalize"](filename);return nodeFS["readFileSync"](filename,binary?null:"utf8")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};readAsync=function readAsync(filename,onload,onerror){var ret=tryParseAsDataURI(filename);if(ret){onload(ret)}if(!nodeFS)nodeFS=require("fs");if(!nodePath)nodePath=require("path");filename=nodePath["normalize"](filename);nodeFS["readFile"](filename,function(err,data){if(err)onerror(err);else onload(data.buffer)})};if(process["argv"].length>1){thisProgram=process["argv"][1].replace(/\\/g,"/")}arguments_=process["argv"].slice(2);quit_=function(status,toThrow){if(keepRuntimeAlive()){process["exitCode"]=status;throw toThrow}process["exit"](status)};Module["inspect"]=function(){return"[Emscripten Module object]"}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!=="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptDir){scriptDirectory=_scriptDir}if(scriptDirectory.indexOf("blob:")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf("/")+1)}else{scriptDirectory=""}{read_=function(url){try{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText}catch(err){var data=tryParseAsDataURI(url);if(data){return intArrayToString(data)}throw err}};if(ENVIRONMENT_IS_WORKER){readBinary=function(url){try{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}catch(err){var data=tryParseAsDataURI(url);if(data){return data}throw err}}}readAsync=function(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=function(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}var data=tryParseAsDataURI(url);if(data){onload(data.buffer);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=function(title){document.title=title}}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.warn.bind(console);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["quit"])quit_=Module["quit"];var wasmBinary;if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];var noExitRuntime=Module["noExitRuntime"]||true;var WebAssembly={Memory:function(opts){this.buffer=new ArrayBuffer(opts["initial"]*65536)},Module:function(binary){},Instance:function(module,info){this.exports=( +// EMSCRIPTEN_START_ASM +function instantiate(xa){function c(d){d.set=function(a,b){this[a]=b};d.get=function(a){return this[a]};return d}var e;var f=new Uint8Array(123);for(var a=25;a>=0;--a){f[48+a]=52+a;f[65+a]=a;f[97+a]=26+a}f[43]=62;f[47]=63;function l(m,n,o){var g,h,a=0,i=n,j=o.length,k=n+(j*3>>2)-(o[j-2]=="=")-(o[j-1]=="=");for(;a>4;if(i>2;if(i>2]=e;g=Ca(b<<1|1);if(!g){break a}H[e+8>>2]=g;y=yb(g,32,(j<<1)+2|0)+d|0,z=0,F[y|0]=z;H[e>>2]=1;H[e+4>>2]=0;d=d+2|0;b=b+1|0;j=j+1|0;if((j|0)!=35){continue}break}b:{if(F[41907]<=-1){H[10475]=0;b=H[10474];break b}F[41907]=0;b=41896}F[b|0]=0;c:{d:{e:{f:{d=F[a+11|0]<0?H[a>>2]:a;a=bb(d);b=Ca(a+2|0);if(b){if((a|0)<1){break f}d=gb(b,d,a)+a|0;F[d|0]=0;F[d+1|0]=0;break e}ub(10053);X()}d=a+b|0;F[d|0]=0;F[d+1|0]=0;if(a>>>0>4294967293){break d}}k=Ca(48);if(k){break c}ub(10170);X()}ub(10094);X()}H[k+20>>2]=0;H[k+8>>2]=b;H[k+4>>2]=b;H[k+12>>2]=a;H[k+40>>2]=0;H[k+44>>2]=0;H[k+24>>2]=0;H[k+28>>2]=1;H[k+16>>2]=a;H[k>>2]=0;d=0;g:{h:{i:{b=H[10466];j:{if(!b){b=Ca(4);H[10466]=b;if(!b){break i}H[b>>2]=0;H[10473]=1;H[10467]=0;break j}d=H[10467];a=H[10473];if(d>>>0>>0){break j}e=a+8|0;b=zb(b,e<<2);H[10466]=b;if(!b){break h}a=(a<<2)+b|0;H[a>>2]=0;H[a+4>>2]=0;H[a+24>>2]=0;H[a+28>>2]=0;H[a+16>>2]=0;H[a+20>>2]=0;H[a+8>>2]=0;H[a+12>>2]=0;H[10473]=e}a=(d<<2)+b|0;e=H[a>>2];if((e|0)!=(k|0)){if(e){e=H[10468];F[e|0]=I[41876];H[H[a>>2]+8>>2]=e;H[H[a>>2]+16>>2]=H[10472]}b=(d<<2)+b|0;H[b>>2]=k;H[10472]=H[k+16>>2];a=H[k+8>>2];H[10463]=a;H[10468]=a;H[10461]=H[H[b>>2]>>2];F[41876]=I[a|0]}break g}ub(10256);X()}ub(10256);X()}H[k+20>>2]=1;f=la-1376|0;la=f;H[11535]=-2;H[11537]=0;H[f+44>>2]=128;t=200;p=f+48|0;c=f+176|0;u=c;l=f+976|0;q=l;k:{while(1){l:{G[l>>1]=n;m:{n:{o:{p:{q:{r:{s:{t:{u:{v:{w:{x:{y:{z:{A:{B:{C:{D:{E:{F:{G:{H:{I:{J:{K:{L:{M:{N:{O:{P:{Q:{R:{S:{T:{U:{V:{W:{X:{Y:{Z:{_:{$:{aa:{ba:{ca:{da:{ea:{fa:{ga:{ha:{ia:{ja:{ka:{la:{ma:{na:{oa:{pa:{qa:{ra:{sa:{ta:{ua:{va:{wa:{xa:{ya:{za:{Aa:{Ba:{Ca:{Da:{Ea:{Fa:{Ga:{Ha:{Ia:{Ja:{Ka:{La:{Ma:{Na:{Oa:{Pa:{Qa:{Ra:{Sa:{Ta:{Ua:{Va:{Wa:{Xa:{Ya:{Za:{_a:{$a:{ab:{bb:{cb:{db:{eb:{fb:{gb:{hb:{ib:{jb:{kb:{lb:{mb:{nb:{ob:{pb:{qb:{rb:{sb:{tb:{ub:{vb:{wb:{xb:{yb:{zb:{Ab:{Bb:{Cb:{Db:{Eb:{Fb:{Gb:{Hb:{Ib:{Jb:{Kb:{Lb:{Mb:{Nb:{Ob:{Pb:{Qb:{Rb:{Sb:{Tb:{Ub:{Vb:{Wb:{Xb:{Yb:{Zb:{_b:{$b:{ac:{bc:{cc:{dc:{ec:{fc:{gc:{hc:{ic:{jc:{a=t<<1;if((a+q|0)-2>>>0<=l>>>0){if(t>>>0>9999){break hc}t=a>>>0<1e4?a:1e4;a=Ca(N(t,6)|3);if(!a){break hc}b=l-q>>1;d=b+1|0;a=gb(a,q,d<<1);u=gb(a+(t<<1)|0,u,d<<2);if((f+976|0)!=(q|0)){Aa(q)}l=a+(b<<1)|0;if(l>>>0>=u-2>>>0){break jc}c=(b<<2)+u|0;q=a}a=0;if((n|0)==6){break ab}kc:{lc:{m=J[(n<<1)+12288>>1];if((m|0)==65047){break lc}a=H[11535];if((a|0)==-2){mc:{nc:{if(!I[41856]){F[41856]=1;if(!I[41860]){F[41860]=1}h=H[10461];if(!h){h=H[6596];H[10461]=h}if(!H[10462]){H[10462]=H[6595]}d=H[10466];oc:{pc:{if(d){g=H[10467];e=H[(g<<2)+d>>2];if(e){break oc}a=H[10473];if(a-1>>>0>g>>>0){break pc}b=d;d=a+8|0;b=zb(b,d<<2);H[10466]=b;if(!b){break nc}a=b+(a<<2)|0;H[a>>2]=0;H[a+4>>2]=0;H[a+24>>2]=0;H[a+28>>2]=0;H[a+16>>2]=0;H[a+20>>2]=0;H[a+8>>2]=0;H[a+12>>2]=0;H[10473]=d;h=H[10461];break pc}a=Ca(4);H[10466]=a;if(!a){break nc}H[a>>2]=0;H[10473]=1;H[10467]=0}e=wg(h);d=H[10466];g=H[10467];H[d+(g<<2)>>2]=e}H[10472]=H[e+16>>2];a=H[e+8>>2];H[10463]=a;H[10468]=a;H[10461]=H[H[(g<<2)+d>>2]>>2];F[41876]=I[a|0]}qc:{rc:{sc:{tc:{uc:{vc:{wc:{xc:{yc:{zc:{Ac:while(1){a=H[10468];F[a|0]=I[41876];e=I[41860];i=a;Bc:while(1){d=I[I[i|0]+1024|0];b=e<<1;if(J[b+1280>>1]){H[10471]=i;H[10470]=e}g=d;h=G[b+4016>>1]+d|0;if(G[(h<<1)+2144>>1]!=(e|0)){while(1){e=G[(e<<1)+4896>>1];g=(e|0)>=428?I[d+5776|0]:g;d=g&255;h=d+G[(e<<1)+4016>>1]|0;if(J[(h<<1)+2144>>1]!=(e&65535)){continue}break}}i=i+1|0;e=G[(h<<1)+5840>>1];if(J[(e<<1)+4016>>1]!=869){continue}while(1){b=a;Cc:{Dc:while(1){e=J[(e<<1)+1280>>1];if(!e){i=H[10471];e=J[(H[10470]<<1)+1280>>1]}H[10463]=b;H[10460]=i-b;F[41876]=I[i|0];F[i|0]=0;d=e<<16>>16;a=i;Ec:{while(1){H[10468]=a;e=325;Fc:{switch(d|0){case 0:F[i|0]=I[41876];e=H[10470];i=H[10471];continue Dc;case 2:H[10285]=H[10285]+1;if(H[10480]){continue Ac}a=H[10463];b=bb(a);d=Ca(b+1|0);H[11536]=d;a=Nb(d,a);G[a>>1]=12079;e=259;a=a+b|0;b=a-2|0;if(I[b|0]!=13){break uc}F[b|0]=10;F[a-1|0]=0;a=259;break mc;case 3:case 4:H[10285]=H[10285]+1;continue Ac;case 5:H[10285]=H[10285]+1;continue Ac;case 6:H[10285]=H[10285]+1;continue Ac;case 13:a=280;break mc;case 14:a=294;break mc;case 15:a=276;break mc;case 16:a=289;break mc;case 17:a=271;break mc;case 18:a=293;break mc;case 19:a=292;break mc;case 20:a=274;break mc;case 21:a=260;break mc;case 23:a=284;break mc;case 24:a=296;break mc;case 25:a=298;break mc;case 26:a=263;break mc;case 27:a=290;break mc;case 28:a=264;break mc;case 29:a=266;break mc;case 30:a=261;break mc;case 31:a=297;break mc;case 32:a=267;break mc;case 33:a=306;break mc;case 34:a=302;break mc;case 35:a=303;break mc;case 36:a=281;break mc;case 37:a=316;break mc;case 38:a=277;break mc;case 39:a=317;break mc;case 40:a=265;break mc;case 41:a=301;break mc;case 42:a=286;break mc;case 43:a=262;break mc;case 44:a=287;break mc;case 45:a=315;break mc;case 46:a=307;break mc;case 47:a=326;break mc;case 48:a=332;break mc;case 49:a=333;break mc;case 50:a=285;break mc;case 51:a=327;break mc;case 52:a=279;break mc;case 53:a=334;break mc;case 54:a=335;break mc;case 55:a=336;break mc;case 56:a=337;break mc;case 57:a=291;break mc;case 58:a=272;break mc;case 59:a=273;break mc;case 60:a=288;break mc;case 61:a=282;break mc;case 62:a=295;break mc;case 63:a=283;break mc;case 64:a=305;break mc;case 65:a=304;break mc;case 66:case 67:case 68:case 69:a=268;break mc;case 70:case 71:case 72:a=269;break mc;case 73:case 74:case 75:case 76:a=270;break mc;case 77:a=324;break mc;case 78:case 79:a=319;break mc;case 80:case 81:a=318;break mc;case 82:a=340;break mc;case 83:a=341;break mc;case 84:a=338;break mc;case 85:a=339;break mc;case 86:a=310;break mc;case 87:a=311;break mc;case 88:a=312;break mc;case 89:case 90:a=322;break mc;case 91:a=330;break mc;case 92:a=329;break mc;case 93:a=328;break mc;case 94:a=331;break mc;case 95:a=308;break mc;case 96:case 97:a=H[10463];e=1;while(1){Gc:{Hc:{Ic:{b=a+e|0;d=I[b|0];switch(d-34|0){case 0:case 5:break Gc;case 1:case 2:case 3:case 4:break Hc;default:break Ic}}if(!d){break Gc}}e=e+1|0;continue}break};F[b|0]=0;a=Ca(e+1|0);H[11536]=a;Nb(a,H[10463]+1|0);a=313;break mc;case 98:a=H[10463];e=1;while(1){b=a+e|0;d=I[b|0];if(!(!d|(d|0)==35)){e=e+1|0;continue}break};F[b|0]=0;a=Ca(e+1|0);H[11536]=a;Nb(a,H[10463]+1|0);a=320;break mc;case 99:a=H[10463];b=Ca(bb(a)+1|0);H[11536]=b;Nb(b,a);a=314;break mc;case 100:d=0;g=H[10463];e=I[g|0];if(e){while(1){d=(e-48&255)>>>0<10?(N(d,10)+(e<<24>>24)|0)-48|0:d;e=I[g+1|0];g=g+1|0;if(e){continue}break}}H[11536]=d;a=342;break mc;case 101:case 102:a=H[10463];b=Ca(bb(a)+1|0);H[11536]=b;Nb(b,a);a=323;break mc;case 103:e=0;a=H[10463];while(1){Jc:{Kc:{Lc:{b=a+e|0;d=I[b|0];switch(d-34|0){case 0:case 5:break Jc;case 1:case 2:case 3:case 4:break Kc;default:break Lc}}if(!d){break Jc}}e=e+1|0;continue}break};F[b|0]=0;a=Ca(e+1|0);H[11536]=a;Nb(a,H[10463]);a=321;break mc;case 104:a=F[H[10463]];break mc;case 105:xb(H[10463],H[10460],1,H[10462]);continue Ac;case 107:a=0;break mc;case 12:break uc;case 11:break vc;case 10:break wc;case 9:break xc;case 8:break yc;case 7:break zc;case 1:case 22:continue Ac;case 106:break Fc;default:break Cc}}x=H[10463];F[i|0]=I[41876];r=H[10466];s=H[10467];v=r+(s<<2)|0;d=H[v>>2];Mc:{if(H[d+44>>2]){g=H[10472];break Mc}g=H[d+16>>2];H[10472]=g;H[d>>2]=H[10461];d=H[v>>2];H[d+44>>2]=1}j=H[10468];e=H[d+4>>2];a=g+e|0;if(j>>>0<=a>>>0){b=H[10463];d=(x^-1)+i|0;i=b+d|0;H[10468]=i;e=I[41860];a=b;if((d|0)>=1){while(1){d=1;g=I[a|0];if(g){d=I[g+1024|0]}j=e<<1;if(J[j+1280>>1]){H[10471]=a;H[10470]=e}g=d&255;h=g+G[j+4016>>1]|0;if(G[(h<<1)+2144>>1]!=(e|0)){while(1){e=G[(e<<1)+4896>>1];d=(e|0)>=428?I[g+5776|0]:d;g=d&255;h=g+G[(e<<1)+4016>>1]|0;if(J[(h<<1)+2144>>1]!=(e&65535)){continue}break}}e=G[(h<<1)+5840>>1];a=a+1|0;if((i|0)!=(a|0)){continue}break}}if(J[(e<<1)+1280>>1]){H[10471]=i;H[10470]=e}d=e;g=G[(d<<1)+4016>>1]+1|0;if(G[(g<<1)+2144>>1]!=(d|0)){while(1){a=J[(d<<1)+4896>>1];d=a<<16>>16;g=G[(d<<1)+4016>>1]+1|0;if(J[(g<<1)+2144>>1]!=(a|0)){continue}break}}d=G[(g<<1)+5840>>1];if(!g|(d|0)==427){continue Dc}i=i+1|0;H[10468]=i;a=b;e=d;continue Bc}if(a+1>>>0>>0){break tc}a=H[10463];if(!H[d+40>>2]){d=107;if((j-a|0)==1){continue}break Ec}o=(a^-1)+j|0;if((o|0)>=1){g=o&7;Nc:{if((j-a|0)-2>>>0<7){d=a;break Nc}h=o&-8;d=a;while(1){F[e|0]=I[d|0];F[e+1|0]=I[d+1|0];F[e+2|0]=I[d+2|0];F[e+3|0]=I[d+3|0];F[e+4|0]=I[d+4|0];F[e+5|0]=I[d+5|0];F[e+6|0]=I[d+6|0];F[e+7|0]=I[d+7|0];e=e+8|0;d=d+8|0;h=h-8|0;if(h){continue}break}}if(g){while(1){F[e|0]=I[d|0];e=e+1|0;d=d+1|0;g=g-1|0;if(g){continue}break}}d=H[v>>2]}Oc:{Pc:{if(H[d+44>>2]==2){H[10472]=0;H[d+16>>2]=0;break Pc}h=0;e=H[d+12>>2];r=a-j|0;g=e+r|0;if((g|0)<=0){while(1){if(!H[d+20>>2]){H[d+4>>2]=0;break qc}a=H[d+4>>2];e=(e|0)<1?e-(0-e>>>3|0)|0:e<<1;H[d+12>>2]=e;g=d;d=zb(a,e+2|0);H[g+4>>2]=d;if(!d){break qc}j=d+(j-a|0)|0;H[10468]=j;d=H[v>>2];e=H[d+12>>2];g=r+e|0;if((g|0)<1){continue}break}}a=(g|0)<8192?g:8192;Qc:{if(H[d+24>>2]){Rc:{while(1){Sc:{d=qc(H[10461]);e=d+1|0;switch(e|0){case 0:case 11:break Rc;default:break Sc}}F[(o+H[H[H[10466]+(H[10467]<<2)>>2]+4>>2]|0)+h|0]=d;h=h+1|0;if((a|0)!=(h|0)){continue}break}h=a}Tc:{Uc:{switch(e|0){case 0:a=H[10461];Vc:{if(H[a+76>>2]<=-1){a=H[a>>2];break Vc}a=H[a>>2]}if(!(a>>>5&1)){break Tc}ub(9216);X();case 11:break Uc;default:break Tc}}F[(o+H[H[H[10466]+(H[10467]<<2)>>2]+4>>2]|0)+h|0]=10;h=h+1|0}H[10472]=h;break Qc}H[12064]=0;h=De(o+H[H[H[10466]+(H[10467]<<2)>>2]+4>>2]|0,a,H[10461]);H[10472]=h;if(h){break Qc}while(1){d=H[10461];Wc:{if(H[d+76>>2]<=-1){d=H[d>>2];break Wc}d=H[d>>2]}if(!(d>>>5&1)){h=0;break Qc}if(H[12064]!=27){break sc}H[12064]=0;d=H[10461];H[d>>2]=H[d>>2]&-49;h=De(o+H[H[H[10466]+(H[10467]<<2)>>2]+4>>2]|0,a,H[10461]);H[10472]=h;if(!h){continue}break}}r=H[10466];s=H[10467];d=H[r+(s<<2)>>2];H[d+16>>2]=h;e=0;if(h){break Oc}}if(!o){d=H[10461];Xc:{Yc:{Zc:{_c:{a=H[10466];if(a){j=H[10467];g=H[a+(j<<2)>>2];if(!g){break _c}e=H[12064];break Yc}a=Ca(4);H[10466]=a;if(!a){break nc}H[a>>2]=0;H[10473]=1;H[10467]=0;break Zc}e=H[10473];if(j>>>0>>0){break Zc}g=e+8|0;a=zb(a,g<<2);H[10466]=a;if(!a){break nc}a=a+(e<<2)|0;H[a>>2]=0;H[a+4>>2]=0;H[a+24>>2]=0;H[a+28>>2]=0;H[a+16>>2]=0;H[a+20>>2]=0;H[a+8>>2]=0;H[a+12>>2]=0;H[10473]=g}g=wg(H[10461]);H[H[10466]+(H[10467]<<2)>>2]=g;e=H[12064];a=0;if(!g){break Xc}}H[g+16>>2]=0;F[H[g+4>>2]]=0;F[H[g+4>>2]+1|0]=0;H[g+44>>2]=0;H[g+28>>2]=1;H[g+8>>2]=H[g+4>>2];a=H[10466];if(a){j=H[a+(H[10467]<<2)>>2]}else{j=0}if((j|0)==(g|0)){j=a+(H[10467]<<2)|0;a=H[j>>2];H[10472]=H[a+16>>2];a=H[a+8>>2];H[10468]=a;H[10463]=a;H[10461]=H[H[j>>2]>>2];F[41876]=I[a|0]}a=g}H[a+40>>2]=1;H[a>>2]=d;g=H[10466];if(g){g=H[g+(H[10467]<<2)>>2]}else{g=0}if((g|0)!=(a|0)){H[a+32>>2]=1;H[a+36>>2]=0}if(d){d=(_d(H[d+60>>2])|0)>0}else{d=0}H[a+24>>2]=d;H[12064]=e;d=H[10466]+(H[10467]<<2)|0;a=H[d>>2];H[10472]=H[a+16>>2];a=H[a+8>>2];H[10468]=a;H[10463]=a;H[10461]=H[H[d>>2]>>2];F[41876]=I[a|0];r=H[10466];s=H[10467];d=H[r+(s<<2)>>2];h=H[10472];e=1;break Oc}H[d+44>>2]=2;h=0;e=2}a=(s<<2)+r|0;g=h+o|0;$c:{if((g|0)<=H[d+12>>2]){d=H[d+4>>2];break $c}j=g+(h>>1)|0;d=zb(H[d+4>>2],j);H[H[a>>2]+4>>2]=d;h=H[a>>2];d=H[h+4>>2];if(!d){break rc}H[h+12>>2]=j-2}H[10472]=g;F[d+g|0]=0;F[(g+H[H[a>>2]+4>>2]|0)+1|0]=0;a=H[H[a>>2]+4>>2];H[10463]=a;d=107;if((e|0)==1){continue}break}ad:{switch(e|0){case 0:b=(x^-1)+i|0;i=b+a|0;H[10468]=i;e=I[41860];j=a;if((b|0)<1){continue Bc}while(1){d=1;b=I[j|0];if(b){d=I[b+1024|0]}b=e<<1;if(J[b+1280>>1]){H[10471]=j;H[10470]=e}g=d&255;h=g+G[b+4016>>1]|0;if(G[(h<<1)+2144>>1]!=(e|0)){while(1){e=G[(e<<1)+4896>>1];d=(e|0)>=428?I[g+5776|0]:d;g=d&255;h=g+G[(e<<1)+4016>>1]|0;if(J[(h<<1)+2144>>1]!=(e&65535)){continue}break}}e=G[(h<<1)+5840>>1];j=j+1|0;if((j|0)!=(i|0)){continue}break};continue Bc;case 2:break ad;default:continue Ac}}e=H[H[H[10466]+(H[10467]<<2)>>2]+4>>2];g=H[10472]}i=e+g|0;H[10468]=i;e=I[41860];b=a;if(a>>>0>=i>>>0){continue}break}j=b;while(1){d=1;b=I[j|0];if(b){d=I[b+1024|0]}if(J[(e<<1)+1280>>1]){H[10471]=j;H[10470]=e}g=d&255;h=g+G[(e<<1)+4016>>1]|0;if(G[(h<<1)+2144>>1]!=(e|0)){while(1){e=G[(e<<1)+4896>>1];d=(e|0)>=428?I[g+5776|0]:d;g=d&255;h=g+G[(e<<1)+4016>>1]|0;if(J[(h<<1)+2144>>1]!=(e&65535)){continue}break}}e=G[(h<<1)+5840>>1];j=j+1|0;if((j|0)!=(i|0)){continue}break}continue}break}break}break}ub(9076);X()}a=258;break mc}a=299;break mc}a=300;break mc}a=275;break mc}e=278}a=e;break mc}ub(9149);X()}ub(9216);X()}ub(10124);X()}ub(7893);X()}ub(10256);X()}H[11535]=a}bd:{if((a|0)<=0){H[11535]=0;b=0;break bd}b=2;if(a>>>0>353){break bd}b=I[a+13760|0]}a=b+(m<<16>>16)|0;if(a>>>0>2515){break lc}a=a<<1;if((b|0)!=G[a+14128>>1]){break lc}n=G[a+19168>>1];if((n|0)>0){H[11535]=-2;H[c+4>>2]=H[11536];w=w?w-1|0:0;c=c+4|0;break m}n=0-n|0;break kc}n=I[n+24208|0];if(!n){break ic}}j=I[n+24944|0];a=H[(1-j<<2)+c>>2];cd:{dd:{ed:{fd:{switch(n-2|0){case 0:a=H[c-16>>2];if(I[46136]){a=ya(ya(ya(ya(ya(a,11021),46136),11035),46136),11088)}wc(ya(za(za(za(za(a,H[c-12>>2]),H[c-8>>2]),H[c-4>>2]),H[c>>2]),11237));a=0;break n;case 1:wc(ya(za(za(H[c-8>>2],H[c-4>>2]),H[c>>2]),11237));a=0;break n;case 2:wc(ya(za(za(H[c-8>>2],H[c-4>>2]),H[c>>2]),11237));case 3:a=0;break n;case 4:a=H[c>>2];break n;case 5:a=ya(H[(H[11491]<<2)+45968>>2],H[c>>2]);break n;case 6:a=za(ya(H[(H[11491]<<2)+45968>>2],H[c-4>>2]),H[c>>2]);break n;case 7:case 9:case 11:case 13:a=0;break n;case 17:H[10480]=1;break n;case 18:H[10480]=0;break n;case 19:Da(41908,10789);a=0;Ta(f+32|0,H[10285]);b=I[f+43|0];d=b<<24>>24<0;Pa(41908,d?H[f+32>>2]:f+32|0,d?H[f+36>>2]:b);if(F[f+43|0]<=-1){Aa(H[f+32>>2])}Da(41908,11852);break n;case 23:a=0;break n;case 24:d=ya(za(za(gf(ya(ya(0,10804),H[c-52>>2])),H[c-32>>2]),H[c-28>>2]),12286);if(H[10284]==1995){a=H[10481];while(1){b=Ca(12);if(!b){break cd}H[b+4>>2]=d;H[b>>2]=3;H[b+8>>2]=a+4;d=H[a+12>>2];b=ya(b,11085);if(H[d+8>>2]){b=ya(Wb(b,d),11085)}d=ya(ya(b,H[a>>2]),11261);a=H[a+16>>2];if(a){continue}break}}a=ya(za(ya(d,12286),H[c-16>>2]),12286);break n;case 25:d=ya(za(za(za(za(za(gf(ya(ya(0,10804),H[c-84>>2])),H[c+-64>>2]),H[c-60>>2]),H[c-48>>2]),H[c-32>>2]),H[c-28>>2]),12286);if(H[10284]==1995){a=H[10481];while(1){b=Ca(12);if(!b){break l}H[b+4>>2]=d;H[b>>2]=3;H[b+8>>2]=a+4;d=H[a+12>>2];b=ya(b,11085);if(H[d+8>>2]){b=ya(Wb(b,d),11085)}d=ya(ya(b,H[a>>2]),11261);a=H[a+16>>2];if(a){continue}break}}a=ya(za(ya(d,12286),H[c-16>>2]),12286);break n;case 26:a=0;if(!H[10287]){break n}e=c-4|0;a=mc(ya(0,8498),H[c-16>>2]);b=H[c-24>>2];while(1){d=ya(ya(a,H[b>>2]),9954);g=H[H[e>>2]+8>>2];gd:{if(!g){a=d;break gd}a=Ca(12);if(!a){break l}H[a+8>>2]=g;H[a+4>>2]=d;H[a>>2]=0}a=ya(a,11261);b=H[b+16>>2];if(b){continue}break};a=za(a,H[c>>2]);break n;case 27:a=0;if(!H[10287]){break n}e=c-12|0;a=mc(ya(0,8498),H[c-24>>2]);b=H[c-32>>2];while(1){d=ya(ya(a,H[b>>2]),9954);g=H[H[e>>2]+8>>2];hd:{if(!g){a=d;break hd}a=Ca(12);if(!a){break l}H[a+8>>2]=g;H[a+4>>2]=d;H[a>>2]=0}a=ya(a,11261);b=H[b+16>>2];if(b){continue}break};za(a,H[c-4>>2]);a=za(a,H[c>>2]);break n;case 28:a=0;if(!H[10287]){break n}b=mc(ya(0,8498),H[c-12>>2]);a=H[c-20>>2];while(1){b=ya(ya(b,H[a>>2]),11261);a=H[a+16>>2];if(a){continue}break};za(b,H[c-4>>2]);a=za(b,H[c>>2]);break n;case 29:a=0;if(!H[10287]){break n}b=mc(ya(0,8498),H[c-4>>2]);a=H[c-12>>2];while(1){b=ya(ya(b,H[a>>2]),11261);a=H[a+16>>2];if(a){continue}break};a=za(b,H[c>>2]);break n;case 30:if(H[10287]){H[10481]=0;a=za(Kc(H[c-16>>2],H[c-8>>2],H[c-4>>2]),H[c>>2]);break n}Aa(H[c>>2]);Aa(H[c-4>>2]);break n;case 31:if(H[10287]){a=za(za(Kc(H[c-24>>2],H[c-16>>2],H[c-12>>2]),H[c-4>>2]),H[c>>2]);break n}Aa(H[c-4>>2]);Aa(H[c-12>>2]);break n;case 32:Da(41908,10789);Ta(f+32|0,H[10285]);b=I[f+43|0];d=b<<24>>24<0;Pa(41908,d?H[f+32>>2]:f+32|0,d?H[f+36>>2]:b);if(F[f+43|0]<=-1){Aa(H[f+32>>2])}Da(41908,11875);if(H[10287]){H[10481]=0;a=za(Kc(H[c-28>>2],H[c-20>>2],H[c-16>>2]),H[c>>2]);break n}Aa(H[c>>2]);Aa(H[c-16>>2]);break n;case 33:Da(41908,10789);Ta(f+32|0,H[10285]);b=I[f+43|0];d=b<<24>>24<0;Pa(41908,d?H[f+32>>2]:f+32|0,d?H[f+36>>2]:b);if(F[f+43|0]<=-1){Aa(H[f+32>>2])}Da(41908,11875);if(H[10287]){a=za(za(Kc(H[c-36>>2],H[c-28>>2],H[c-24>>2]),H[c-4>>2]),H[c>>2]);break n}Aa(H[c-4>>2]);Aa(H[c-24>>2]);break n;case 34:a=0;break n;case 35:a=1;break n;case 36:a=2;break n;case 37:a=Rb(0);break n;case 38:Da(41908,10789);Ta(f+32|0,H[10285]);a=I[f+43|0];b=a<<24>>24<0;Pa(41908,b?H[f+32>>2]:f+32|0,b?H[f+36>>2]:a);if(F[f+43|0]<=-1){Aa(H[f+32>>2])}Da(41908,11916);a=Rb(0);y=a,z=ya(0,10023),H[y+8>>2]=z;y=a,z=ya(0,10001),H[y+4>>2]=z;break n;case 39:a=Rb(0);y=a,z=ya(0,10023),H[y+8>>2]=z;y=a,z=ya(0,10001),H[y+4>>2]=z;break n;case 40:a=Rb(0);break n;case 41:a=H[c-4>>2];break n;case 42:a=H[10483];if(a){b=H[c>>2];while(1){if(!cb(H[a>>2],b)){break dd}a=H[a+16>>2];if(a){continue}break}}Da(41908,10776);Ta(f+32|0,H[10285]);a=I[f+43|0];b=a<<24>>24<0;Pa(41908,b?H[f+32>>2]:f+32|0,b?H[f+36>>2]:a);if(F[f+43|0]<=-1){Aa(H[f+32>>2])}Da(41908,10566);Da(41908,H[c>>2]);Da(41908,12177);break bb;case 43:a=Rb(2);h=c-8|0;g=H[H[h>>2]+8>>2];H[a+4>>2]=g;b=H[H[c>>2]+8>>2];H[a+24>>2]=-1;H[a+28>>2]=0;H[a+8>>2]=b;id:{d=H[h>>2];if(I[d|0]!=110){break id}e=H[c>>2];if(I[e|0]!=110){break id}if(H[c-4>>2]==-1){H[a+24>>2]=(H[d+4>>2]-H[e+4>>2]|0)+1;break n}H[a+24>>2]=(H[e+4>>2]-H[d+4>>2]|0)+1;break n}m=c-4|0;e=H[m>>2];H[11530]=0;if(!H[11528]){H[11529]=512;d=Ca(512);if(!d){break l}H[11528]=d}yc(46112,g);H[11533]=0;g=H[11530];jd:{if(!H[11531]){H[11532]=512;d=Ca(512);if(!d){break l}H[11531]=d}d=46124;yc(46124,b);b=0;i=H[11533];kd:{if(i>>>0>>0?(e|0)==-1:0){b=46112}else{if((e|0)!=1|g>>>0>=i>>>0){break kd}d=46112;b=46124}i=H[d>>2];d=0;g=H[b>>2];e=bb(g);b=bb(i);ld:{md:{if(!zc(g,i,b)){if(e>>>0<=b+3>>>0){break ld}g=b+g|0;if(zc(g,11053,3)){break ld}b=e-b|0;e=Ca(b-2|0);if(!e){break ld}b=b-3|0;d=gb(e,g+3|0,b);b=d+b|0;break md}o=(e+g|0)-b|0;if(zc(o,i,b)|e>>>0<=b+3>>>0){break ld}if(zc(o-3|0,11053,3)){break ld}b=e-b|0;e=Ca(b-2|0);if(!e){break ld}b=b-3|0;d=gb(e,g,b);b=d+b|0}F[b|0]=0}b=d}break jd}if(b){H[a+28>>2]=H[m>>2];y=a,z=ya(0,b),H[y+20>>2]=z;break n}b=Na(12);d=Na(12);Na(12);e=Na(12);Na(12);y=b,z=Ka(10414,H[H[h>>2]+8>>2],10306),H[y+8>>2]=z;y=d,z=Ka(10414,H[H[c>>2]+8>>2],10306),H[y+8>>2]=z;F[e|0]=116;y=e,z=ya(0,10007),H[y+8>>2]=z;nd:{if(H[m>>2]==-1){b=Ma(b,45,10039,d);break nd}b=Ma(d,45,10039,b)}d=Ma(b,43,10044,e);b=Ka(10414,H[d+8>>2],10306);H[d+8>>2]=b;H[a+20>>2]=b;break n;case 44:a=Rb(1);H[a+8>>2]=H[H[c>>2]+8>>2];break n;case 45:d=c-8|0;b=H[d>>2];a=H[10481];if(a){while(1){if(!cb(H[a>>2],b)){break ed}a=H[a+16>>2];if(a){continue}break}}a=H[10482];if(a){while(1){if(!cb(H[a>>2],b)){break ed}a=H[a+16>>2];if(a){continue}break}}Da(41908,10776);Ta(f+32|0,H[10285]);a=I[f+43|0];b=a<<24>>24<0;Pa(41908,b?H[f+32>>2]:f+32|0,b?H[f+36>>2]:a);if(F[f+43|0]<=-1){Aa(H[f+32>>2])}Da(41908,10613);Da(41908,H[d>>2]);Da(41908,12190);break bb;case 46:a=-1;break n;case 47:a=1;break n;case 48:a=za(ya(za(H[c-36>>2],H[c-32>>2]),12286),H[c-20>>2]);break n;case 49:b=H[11491];H[11491]=((b|0)<36)+b;break n;case 50:b=H[11491];H[11491]=b-((b|0)>0);break n;case 51:a=0;break n;case 52:e=H[c-24>>2];g=c-16|0;a=H[g>>2];H[a+4>>2]=41160;d=c-8|0;H[a+12>>2]=H[d>>2];od:{b=Ca(12);if(b){m=a+4|0;while(1){H[b+8>>2]=m;H[b+4>>2]=e;H[b>>2]=3;e=H[d>>2];b=ya(b,11085);if(H[e+8>>2]){b=ya(Wb(b,e),11085)}b=ya(Vf(ya(b,H[a>>2]),H[d>>2]),9956);if(!H[a+16>>2]){break od}e=ya(b,11085);a=H[a+16>>2];H[a+4>>2]=41160;H[a+12>>2]=H[d>>2];m=a+4|0;b=Ca(12);if(b){continue}break}}break l}H[a+16>>2]=H[10482];H[10482]=H[g>>2];a=sc(b,H[c>>2]);break n;case 53:e=H[c-36>>2];i=c-28|0;a=H[i>>2];H[a+4>>2]=41160;g=c-20|0;H[a+12>>2]=H[g>>2];pd:{b=Ca(12);if(b){h=c-8|0;m=a+4|0;while(1){H[b+8>>2]=m;H[b+4>>2]=e;H[b>>2]=3;d=H[g>>2];b=ya(b,11085);if(H[d+8>>2]){b=ya(Wb(b,d),11085)}d=ya(Vf(ya(b,H[a>>2]),H[g>>2]),10939);e=H[H[h>>2]+8>>2];qd:{if(!e){b=d;break qd}b=Ca(12);if(!b){break l}H[b+8>>2]=e;H[b+4>>2]=d;H[b>>2]=0}b=ya(b,9956);if(!H[a+16>>2]){break pd}e=ya(b,11085);a=H[a+16>>2];H[a+4>>2]=41160;H[a+12>>2]=H[g>>2];m=a+4|0;b=Ca(12);if(b){continue}break}}break l}H[a+16>>2]=H[10482];H[10482]=H[i>>2];a=sc(b,H[c>>2]);break n;case 54:a=sc(ya(za(ya(ya(ya(H[c-36>>2],10706),H[c-28>>2]),10939),H[H[c-8>>2]+8>>2]),9956),H[c>>2]);break n;case 134:break Ma;case 135:break Na;case 136:break Oa;case 137:break Pa;case 138:break Qa;case 139:break Ra;case 140:break Sa;case 141:break Ta;case 142:break Ua;case 143:break Va;case 144:break Wa;case 145:break Xa;case 146:break Ya;case 147:break Za;case 148:break cb;case 149:break db;case 150:break eb;case 151:break fb;case 152:break gb;case 153:break hb;case 154:break ib;case 155:break jb;case 156:break kb;case 157:break lb;case 158:break mb;case 159:break nb;case 160:break ob;case 161:break pb;case 162:break qb;case 163:break rb;case 164:break sb;case 165:break tb;case 166:break ub;case 167:break vb;case 168:break wb;case 169:break xb;case 170:break yb;case 171:break zb;case 172:break Ab;case 173:break Bb;case 174:break Cb;case 175:break Db;case 176:break Eb;case 177:break Fb;case 178:break Gb;case 179:break Hb;case 180:break Ib;case 181:break Jb;case 182:break Kb;case 183:break Lb;case 184:break Mb;case 185:break Nb;case 186:break Ob;case 187:break Pb;case 188:break Qb;case 189:break Rb;case 190:break Sb;case 191:break Tb;case 192:break Ub;case 193:break Vb;case 194:break Wb;case 195:break Xb;case 196:break Yb;case 197:break Zb;case 198:break _b;case 199:break $b;case 200:break ac;case 201:break bc;case 202:break cc;case 203:break dc;case 204:break ec;case 205:break fc;case 206:break gc;case 56:break o;case 57:break p;case 58:break q;case 59:break r;case 60:break s;case 61:break t;case 62:break u;case 63:break v;case 64:break w;case 65:break x;case 66:break y;case 67:break z;case 68:break A;case 69:break B;case 70:break C;case 71:break D;case 72:break E;case 73:break F;case 55:break fd;case 74:break G;case 75:break H;case 76:break I;case 77:break J;case 78:break K;case 79:break L;case 80:break M;case 81:break N;case 82:break O;case 83:break P;case 84:break Q;case 85:break R;case 86:break S;case 87:break T;case 88:break U;case 89:break V;case 90:break W;case 91:break X;case 92:break Y;case 93:break Z;case 94:break _;case 95:break $;case 96:break aa;case 97:break ba;case 98:break ca;case 99:break da;case 100:break ea;case 101:break fa;case 102:break ga;case 103:break ha;case 104:break ia;case 105:break ja;case 106:break ka;case 107:break la;case 108:break ma;case 109:break na;case 110:break oa;case 111:break pa;case 112:break qa;case 113:break ra;case 114:break sa;case 115:break ta;case 116:break ua;case 117:break va;case 118:break wa;case 119:break xa;case 120:break ya;case 121:break za;case 122:break Aa;case 123:break Ba;case 124:break Ca;case 125:break Da;case 126:break Ea;case 127:break Fa;case 128:break Ga;case 129:break Ha;case 130:break Ia;case 131:break Ja;case 132:break Ka;case 133:break La;default:break n}}b=H[c-12>>2];d=0;e=ya(ya(ya(0,11084),H[b>>2]),10939);a=Ca(12);if(a){while(1){H[a+8>>2]=d;H[a+4>>2]=e;H[a>>2]=2;b=H[b+16>>2];if(!b){b=ya(a,11261);a=d&65280;e=((a|0)!=0)<<3;d=a?a:d;a=d&61680;e=a?e|4:e;d=a?a:d;a=d&52428;d=(a?e|2:e)|((a?a:d)&43690)!=0;a=za(ya(Xb(ya(0,9303),d),11256),b);a=sc(za(H[c-32>>2],a),H[c>>2]);b=Na(20);H[b>>2]=H[c-24>>2];rd:{if((d|0)>0){e=Rb(2);H[b+12>>2]=e;H[e+24>>2]=d+1;d=Xb(0,d);H[H[b+12>>2]+4>>2]=d;d=ya(0,10023);H[H[b+12>>2]+8>>2]=d;break rd}y=b,z=Rb(0),H[y+12>>2]=z}H[b+16>>2]=H[10483];H[10483]=b;break n}d=d+1|0;e=ya(ya(ya(ya(a,12200),11084),H[b>>2]),10939);a=Ca(12);if(a){continue}break}}break l}a=H[a+12>>2];break n}a=H[a+12>>2];break n}break l}l=1;q=a;break $a}b=H[11535];a=-2;sd:{if((b|0)==-2){break sd}a=2;if(b>>>0>353){break sd}a=I[b+13760|0]}td:{ud:{switch(w|0){case 0:H[11537]=H[11537]+1;n=8481;vd:{wd:{xd:{b=df(f+44|0,p,l,a);switch(b|0){case 1:break wd;case 0:break xd;default:break vd}}Ic(p);break td}if((f+48|0)!=(p|0)){Aa(p)}p=Ca(H[f+44>>2]);if(!p){H[f+44>>2]=128;Ic(8481);p=f+48|0;break hc}b=df(f+44|0,p,l,a);n=p}Ic(n);if((b|0)==2){break hc}break td;case 3:break ud;default:break td}}if((b|0)<=0){if(!b){break bb}break td}H[11535]=-2}while(1){yd:{zd:{if((m|0)==65047){break zd}a=m<<16>>16;if((a|0)<-1){break zd}a=a+1<<1;if(J[a+14128>>1]!=1){break zd}a=G[a+19168>>1];if((a|0)>0){break yd}}if((l|0)==(q|0)){break bb}c=c-4|0;l=l-2|0;m=J[(G[l>>1]<<1)+12288>>1];continue}break}n=a&65535;H[c+4>>2]=H[11536];c=c+4|0;w=3;break m}Ic(9132);a=2;break ab}a=Na(12);y=a,z=za(0,H[H[c-4>>2]+8>>2]),H[y+8>>2]=z;break n}a=Na(12);y=a,z=za(0,H[H[c-4>>2]+8>>2]),H[y+8>>2]=z;break n}a=Ma(H[c-8>>2],47,11042,H[c>>2]);break n}a=Ma(H[c-8>>2],42,11062,H[c>>2]);break n}a=Ma(H[c-8>>2],42,11057,H[c>>2]);break n}a=Ma(H[c-8>>2],45,11046,H[c>>2]);break n}a=Ma(H[c-8>>2],43,11053,H[c>>2]);break n}d=c-8|0;a=H[d>>2];Ad:{b=H[10481];if(b){while(1){if(!cb(H[b>>2],a)){break Ad}b=H[b+16>>2];if(b){continue}break}}b=H[10482];if(b){while(1){if(!cb(H[b>>2],a)){break Ad}b=H[b+16>>2];if(b){continue}break}}Da(41908,10776);Ta(f+32|0,H[10285]);a=I[f+43|0];b=a<<24>>24<0;Pa(41908,b?H[f+32>>2]:f+32|0,b?H[f+36>>2]:a);if(F[f+43|0]<=-1){Aa(H[f+32>>2])}Da(41908,10593);Da(41908,H[d>>2]);Da(41908,12181);break bb}a=Na(12);y=a,z=Ka(10414,H[H[b+12>>2]+4>>2],10306),H[y+8>>2]=z;break n}a=Na(12);F[a|0]=110;H[a+4>>2]=H[c>>2];y=a,z=Xb(0,H[c>>2]),H[y+8>>2]=z;break n}a=Na(12);F[a|0]=116;y=a,z=Yc(H[c>>2]),H[y+8>>2]=z;break n}a=Na(12);F[a|0]=116;H[a+8>>2]=H[H[c>>2]+4>>2];Aa(H[c>>2]);break n}Bd:{Cd:{Dd:{d=c-12|0;a=H[d>>2];b=I[a|0]-99|0;if(b){if((b|0)==17){break Cd}else{break Dd}}a=Ka(7719,H[a+8>>2],10927);break Bd}a=Ka(10414,H[a+8>>2],10933);break Bd}a=ya(H[a+8>>2],10934)}Ed:{Fd:{Gd:{b=H[c>>2];e=I[b|0]-99|0;if(e){if((e|0)==17){break Fd}else{break Gd}}b=Ka(7719,H[b+8>>2],7710);break Ed}b=Ka(10414,H[b+8>>2],10306);break Ed}b=H[b+8>>2]}a=za(a,b);Aa(H[d>>2]);Aa(H[c>>2]);break n}Hd:{Id:{Jd:{d=c-12|0;a=H[d>>2];b=I[a|0]-99|0;if(b){if((b|0)==17){break Id}else{break Jd}}a=Ka(7719,H[a+8>>2],10915);break Hd}a=Ka(10414,H[a+8>>2],10921);break Hd}a=ya(H[a+8>>2],10922)}Kd:{Ld:{Md:{b=H[c>>2];e=I[b|0]-99|0;if(e){if((e|0)==17){break Ld}else{break Md}}b=Ka(7719,H[b+8>>2],7710);break Kd}b=Ka(10414,H[b+8>>2],10306);break Kd}b=H[b+8>>2]}a=za(a,b);Aa(H[d>>2]);Aa(H[c>>2]);break n}Nd:{Od:{Pd:{d=c-8|0;a=H[d>>2];b=I[a|0]-99|0;if(b){if((b|0)==17){break Od}else{break Pd}}a=Ka(7719,H[a+8>>2],10948);break Nd}a=Ka(10414,H[a+8>>2],10953);break Nd}a=ya(H[a+8>>2],10954)}Qd:{Rd:{Sd:{b=H[c>>2];e=I[b|0]-99|0;if(e){if((e|0)==17){break Rd}else{break Sd}}b=Ka(7719,H[b+8>>2],7710);break Qd}b=Ka(10414,H[b+8>>2],10306);break Qd}b=H[b+8>>2]}a=za(a,b);Aa(H[d>>2]);Aa(H[c>>2]);break n}Td:{Ud:{Vd:{d=c-12|0;a=H[d>>2];b=I[a|0]-99|0;if(b){if((b|0)==17){break Ud}else{break Vd}}a=Ka(7719,H[a+8>>2],10891);break Td}a=Ka(10414,H[a+8>>2],10897);break Td}a=ya(H[a+8>>2],10898)}Wd:{Xd:{Yd:{b=H[c>>2];e=I[b|0]-99|0;if(e){if((e|0)==17){break Xd}else{break Yd}}b=Ka(7719,H[b+8>>2],7710);break Wd}b=Ka(10414,H[b+8>>2],10306);break Wd}b=H[b+8>>2]}a=za(a,b);Aa(H[d>>2]);Aa(H[c>>2]);break n}Zd:{_d:{$d:{d=c-8|0;a=H[d>>2];b=I[a|0]-99|0;if(b){if((b|0)==17){break _d}else{break $d}}a=Ka(7719,H[a+8>>2],10881);break Zd}a=Ka(10414,H[a+8>>2],10886);break Zd}a=ya(H[a+8>>2],10887)}ae:{be:{ce:{b=H[c>>2];e=I[b|0]-99|0;if(e){if((e|0)==17){break be}else{break ce}}b=Ka(7719,H[b+8>>2],7710);break ae}b=Ka(10414,H[b+8>>2],10306);break ae}b=H[b+8>>2]}a=za(a,b);Aa(H[d>>2]);Aa(H[c>>2]);break n}de:{ee:{fe:{d=c-8|0;a=H[d>>2];b=I[a|0]-99|0;if(b){if((b|0)==17){break ee}else{break fe}}a=Ka(7719,H[a+8>>2],10903);break de}a=Ka(10414,H[a+8>>2],10909);break de}a=ya(H[a+8>>2],10910)}ge:{he:{ie:{b=H[c>>2];e=I[b|0]-99|0;if(e){if((e|0)==17){break he}else{break ie}}b=Ka(7719,H[b+8>>2],7710);break ge}b=Ka(10414,H[b+8>>2],10306);break ge}b=H[b+8>>2]}a=za(a,b);Aa(H[d>>2]);Aa(H[c>>2]);break n}a=za(ya(0,10690),H[c>>2]);break n}a=ya(za(ya(za(ya(0,10374),H[c-8>>2]),10692),H[c>>2]),10306);break n}a=za(ya(H[c-8>>2],10692),H[c>>2]);break n}a=ya(za(ya(za(ya(0,10374),H[c-8>>2]),11066),H[c>>2]),10306);break n}a=za(ya(H[c-8>>2],11066),H[c>>2]);break n}a=Ka(10414,H[c-4>>2],10306);break n}a=H[c>>2];break n}a=Wc(H[c-4>>2]);break n}a=Wc(H[c-12>>2]);break n}a=Wc(H[c-4>>2]);break n}a=Wc(H[c-4>>2]);break n}Da(41908,10776);Ta(f+32|0,H[10285]);a=I[f+43|0];b=a<<24>>24<0;Pa(41908,b?H[f+32>>2]:f+32|0,b?H[f+36>>2]:a);if(F[f+43|0]<=-1){Aa(H[f+32>>2])}Da(41908,11498);break bb}Da(41908,10776);Ta(f+32|0,H[10285]);a=I[f+43|0];b=a<<24>>24<0;Pa(41908,b?H[f+32>>2]:f+32|0,b?H[f+36>>2]:a);if(F[f+43|0]<=-1){Aa(H[f+32>>2])}Da(41908,11570);break bb}Da(41908,10776);Ta(f+32|0,H[10285]);a=I[f+43|0];b=a<<24>>24<0;Pa(41908,b?H[f+32>>2]:f+32|0,b?H[f+36>>2]:a);if(F[f+43|0]<=-1){Aa(H[f+32>>2])}Da(41908,11457);break bb}Da(41908,10776);Ta(f+32|0,H[10285]);a=I[f+43|0];b=a<<24>>24<0;Pa(41908,b?H[f+32>>2]:f+32|0,b?H[f+36>>2]:a);if(F[f+43|0]<=-1){Aa(H[f+32>>2])}Da(41908,11538);break bb}Da(41908,10776);Ta(f+32|0,H[10285]);a=I[f+43|0];b=a<<24>>24<0;Pa(41908,b?H[f+32>>2]:f+32|0,b?H[f+36>>2]:a);if(F[f+43|0]<=-1){Aa(H[f+32>>2])}Da(41908,11800);Da(41908,12011);break bb}Da(41908,10776);Ta(f+32|0,H[10285]);a=I[f+43|0];b=a<<24>>24<0;Pa(41908,b?H[f+32>>2]:f+32|0,b?H[f+36>>2]:a);if(F[f+43|0]<=-1){Aa(H[f+32>>2])}Da(41908,11826);Da(41908,12068);break bb}a=Ma(H[c-12>>2],42,10876,H[c-4>>2]);Da(41908,10789);Ta(f+32|0,H[10285]);b=I[f+43|0];d=b<<24>>24<0;Pa(41908,d?H[f+32>>2]:f+32|0,d?H[f+36>>2]:b);if(F[f+43|0]<=-1){Aa(H[f+32>>2])}Da(41908,11364);Da(41908,11727);break n}a=Ma(H[c-8>>2],42,10876,H[c>>2]);Da(41908,10789);Ta(f+32|0,H[10285]);b=I[f+43|0];d=b<<24>>24<0;Pa(41908,d?H[f+32>>2]:f+32|0,d?H[f+36>>2]:b);if(F[f+43|0]<=-1){Aa(H[f+32>>2])}Da(41908,11290);Da(41908,11727);break n}a=Ma(H[c-12>>2],42,10943,H[c-4>>2]);Da(41908,10789);Ta(f+32|0,H[10285]);b=I[f+43|0];d=b<<24>>24<0;Pa(41908,d?H[f+32>>2]:f+32|0,d?H[f+36>>2]:b);if(F[f+43|0]<=-1){Aa(H[f+32>>2])}Da(41908,11411);Da(41908,11727);break n}a=Ma(H[c-8>>2],42,10943,H[c>>2]);Da(41908,10789);Ta(f+32|0,H[10285]);b=I[f+43|0];d=b<<24>>24<0;Pa(41908,d?H[f+32>>2]:f+32|0,d?H[f+36>>2]:b);if(F[f+43|0]<=-1){Aa(H[f+32>>2])}Da(41908,11327);Da(41908,11727);break n}a=Ma(0,126,7706,Ma(H[c-8>>2],94,10868,H[c>>2]));break n}a=Ma(H[c-8>>2],94,10868,H[c>>2]);break n}a=Ma(0,126,7706,Ma(H[c-8>>2],124,10697,H[c>>2]));break n}a=Ma(0,126,7706,Ma(H[c-8>>2],38,11071,H[c>>2]));break n}a=Ma(H[c-8>>2],124,10697,H[c>>2]);break n}a=Ma(H[c-8>>2],38,11071,H[c>>2]);break n}a=ya(za(ya(za(ya(za(ya(0,10351),H[H[c>>2]+8>>2]),10331),H[H[c>>2]+8>>2]),11016),H[H[c>>2]+8>>2]),10305);H[H[c>>2]+8>>2]=a;a=H[c>>2];break n}a=Ma(0,126,7706,H[c>>2]);break n}a=Ma(H[c-8>>2],37,11075,H[c>>2]);break n}a=Ma(H[c-8>>2],37,11075,H[c>>2]);Da(41908,10789);Ta(f+32|0,H[10285]);b=I[f+43|0];d=b<<24>>24<0;Pa(41908,d?H[f+32>>2]:f+32|0,d?H[f+36>>2]:b);if(F[f+43|0]<=-1){Aa(H[f+32>>2])}Da(41908,11660);break n}a=Ma(H[c-8>>2],47,11042,H[c>>2]);break n}a=Ma(H[c-8>>2],42,11062,H[c>>2]);break n}a=Ma(H[c-8>>2],42,11057,H[c>>2]);break n}a=Ma(H[c-8>>2],45,11046,H[c>>2]);break n}a=Ma(H[c-8>>2],43,11053,H[c>>2]);break n}a=Ma(0,112,10043,H[c>>2]);break n}a=Ma(0,109,10038,H[c>>2]);break n}a=c-8|0;b=za(ya(H[H[a>>2]+8>>2],10041),H[H[c>>2]+8>>2]);Aa(H[c>>2]);F[H[a>>2]]=99;H[H[a>>2]+8>>2]=b;a=H[a>>2];break n}a=Na(12);F[a|0]=111;d=a;b=0;je:{e=H[H[c-4>>2]+8>>2];if(!e){break je}b=Ca(12);if(b){H[b+8>>2]=e;H[b+4>>2]=0;H[b>>2]=4;break je}break l}H[d+8>>2]=b;break n}a=Na(12);F[a|0]=116;y=a,z=Qd(H[c-4>>2],H[c>>2]),H[y+8>>2]=z;break n}a=Na(12);b=Na(bb(H[c>>2])+34|0);F[a|0]=116;e=H[c-4>>2];d=fk(e-2|0,31);if(!(d>>>0>=8|!(153>>>d&1))){H[f+16>>2]=H[c>>2];Ve(b,H[(d<<2)+26348>>2],f+16|0);y=a,z=ya(0,b),H[y+8>>2]=z;break n}H[f+4>>2]=H[c>>2];H[f>>2]=e;Ve(b,10586,f);Da(41908,10776);Ta(f+32|0,H[10285]);a=I[f+43|0];d=a<<24>>24<0;Pa(41908,d?H[f+32>>2]:f+32|0,d?H[f+36>>2]:a);if(F[f+43|0]<=-1){Aa(H[f+32>>2])}Da(41908,10717);Da(41908,b);Da(41908,12124)}a=1}l=a;if((f+976|0)==(q|0)){break _a}}Aa(q)}if((f+48|0)!=(p|0)){Aa(p)}la=f+1376|0;break k}a=Na(12);F[a|0]=116;y=a,z=Xb(0,H[c>>2]),H[y+8>>2]=z;break n}a=Na(12);F[a|0]=116;y=a,z=ya(0,H[c>>2]),H[y+8>>2]=z;break n}a=Na(12);F[a|0]=116;y=a,z=ya(0,H[c>>2]),H[y+8>>2]=z;break n}a=Na(12);F[a|0]=116;y=a,z=Yc(H[c>>2]),H[y+8>>2]=z;break n}a=Na(12);F[a|0]=116;H[a+8>>2]=H[H[c>>2]+4>>2];Aa(H[c>>2]);break n}a=Na(12);b=ya(0,H[c-24>>2]);e=H[c-4>>2];ke:{g=c-16|0;i=H[g>>2];if(H[i+8>>2]){d=ya(b,9313);h=H[i+4>>2];if(h){b=Ca(12);if(!b){break l}H[b+8>>2]=h;H[b+4>>2]=d;H[b>>2]=0;d=ya(b,9958)}i=H[i+8>>2];le:{if(!i){b=d;break le}b=Ca(12);if(!b){break l}H[b+8>>2]=i;H[b+4>>2]=d;H[b>>2]=0}b=ya(b,9301)}if(H[e+8>>2]){d=ya(b,9313);i=H[e+4>>2];if(i){b=Ca(12);if(!b){break l}H[b+8>>2]=i;H[b+4>>2]=d;H[b>>2]=0;d=ya(b,9958)}e=H[e+8>>2];me:{if(!e){b=d;break me}b=Ca(12);if(!b){break l}H[b+8>>2]=e;H[b+4>>2]=d;H[b>>2]=0}b=ya(b,9301)}break ke}if(H[11489]){H[11490]=b;H[11489]=0}H[a+4>>2]=b;H[a+8>>2]=H[g>>2];if(H[H[g>>2]>>2]==2){H[a>>2]=-1;break n}H[a>>2]=1;break n}a=Na(12);b=c-4|0;d=Wb(ya(0,H[c-12>>2]),H[b>>2]);if(H[11489]){H[11490]=d;H[11489]=0}H[a+4>>2]=d;H[a+8>>2]=H[b>>2];if(H[H[b>>2]>>2]==2){H[a>>2]=-1;break n}H[a>>2]=1;break n}a=Na(12);b=ya(0,H[c>>2]);if(H[11489]){H[11490]=b;H[11489]=0}H[a+8>>2]=0;H[a>>2]=-1;H[a+4>>2]=b;break n}a=ya(za(ya(ya(ya(0,10036),H[c-12>>2]),10414),H[H[c>>2]+8>>2]),10306);break n}a=za(0,H[H[c>>2]+8>>2]);break n}a=za(ya(za(za(H[c-12>>2],H[(H[11491]<<2)+45968>>2]),H[c-8>>2]),12200),H[c>>2]);break n}a=za(za(H[c-4>>2],H[(H[11491]<<2)+45968>>2]),H[c>>2]);break n}a=ya(ya(ya(0,7712),H[c-4>>2]),7709);Da(41908,10789);Ta(f+32|0,H[10285]);b=I[f+43|0];d=b<<24>>24<0;Pa(41908,d?H[f+32>>2]:f+32|0,d?H[f+36>>2]:b);if(F[f+43|0]<=-1){Aa(H[f+32>>2])}Da(41908,11955);break n}a=ya(0,10025);break n}a=Qd(H[c-4>>2],H[c>>2]);break n}a=Xb(0,H[c>>2]);break n}a=za(0,H[H[c>>2]+4>>2]);break n}a=Yc(H[c>>2]);break n}a=ya(za(ya(ya(ya(0,10036),H[c-12>>2]),10414),H[c>>2]),10306);break n}a=H[c>>2];break n}a=za(ya(za(za(H[c-12>>2],H[(H[11491]<<2)+45968>>2]),H[c-8>>2]),12200),H[c>>2]);break n}a=za(za(H[c-4>>2],H[(H[11491]<<2)+45968>>2]),H[c>>2]);break n}e=H[c>>2];b=la-16|0;la=b;d=I[46136];F[46152]=d;ne:{if(!ac(e,8190)){F[46152]=109;a=109;break ne}if(!ac(e,8170)){F[46152]=117;a=117;break ne}if(!ac(e,8187)){F[46152]=110;a=110;break ne}if(!ac(e,8184)){F[46152]=112;a=112;break ne}Da(41908,10789);Ta(b,H[10285]);a=I[b+11|0];d=a<<24>>24<0;Pa(41908,d?H[b>>2]:b,d?H[b+4>>2]:a);if(F[b+11|0]<=-1){Aa(H[b>>2])}Da(41908,10463);Da(41908,e);Da(41908,11264);d=I[46136];a=I[46152]}oe:{if((a|0)==(d|0)){break oe}if(d){Da(41908,10789);Ta(b,H[10285]);a=I[b+11|0];d=a<<24>>24<0;Pa(41908,d?H[b>>2]:b,d?H[b+4>>2]:a);if(F[b+11|0]<=-1){Aa(H[b>>2])}Da(41908,10377);Da(41908,e);Da(41908,11943);break oe}F[46136]=a}la=b+16|0;a=H[c-4>>2];break n}a=0;break n}H[10286]=0;break n}b=ya(H[c-12>>2],10872);d=c-24|0;e=H[d>>2];a=H[e+8>>2];if(I[e|0]==99){a=Ka(7719,a,7710)}a=za(b,a);Aa(H[d>>2]);a=za(ya(a,11017),H[c>>2]);break n}Da(41908,10789);a=0;Ta(f+32|0,H[10285]);b=I[f+43|0];d=b<<24>>24<0;Pa(41908,d?H[f+32>>2]:f+32|0,d?H[f+36>>2]:b);if(F[f+43|0]<=-1){Aa(H[f+32>>2])}Da(41908,11602);break n}b=0;pe:{if(!H[10286]){break pe}a=c-4|0;if(!H[a>>2]){break pe}b=ya(Xb(ya(0,11079),H[a>>2]),11085)}d=c-8|0;e=H[d>>2];a=H[e+8>>2];if(I[e|0]==99){a=Ka(7719,a,7710)}a=za(b,a);Aa(H[d>>2]);H[10286]=1;break n}a=0;b=11050;qe:{switch(H[10284]-1995|0){case 0:b=10701;case 6:a=ya(H[H[c-8>>2]+4>>2],b);break;default:break qe}}Aa(H[c-8>>2]);a=za(a,H[c>>2]);break n}b=H[c>>2];a=H[b+4>>2];Aa(b);break n}a=ya(0,H[c>>2]);break n}a=Qd(H[c-4>>2],H[c>>2]);break n}a=Yc(H[c>>2]);break n}a=za(ya(H[c-8>>2],10041),H[c>>2]);break n}a=H[c>>2];break n}a=0;break n}a=ya(za(za(ya(H[(H[11491]<<2)+45968>>2],11109),H[c-4>>2]),H[(H[11491]<<2)+45968>>2]),11251);break n}a=za(ya(za(za(ya(za(H[(H[11491]<<2)+45968>>2],H[c-24>>2]),11116),H[c-8>>2]),H[(H[11491]<<2)+45968>>2]),11251),H[c>>2]);break n}a=ya(za(za(ya(H[(H[11491]<<2)+45968>>2],11097),H[c-4>>2]),H[(H[11491]<<2)+45968>>2]),11251);break n}a=za(ya(za(za(ya(za(ya(H[(H[11491]<<2)+45968>>2],10308),H[c-20>>2]),11162),H[c-8>>2]),H[(H[11491]<<2)+45968>>2]),11251),H[c>>2]);break n}a=0;break n}a=H[c-12>>2];if(a){a=za(za(a,H[(H[11491]<<2)+45968>>2]),H[c>>2]);break n}a=H[c>>2];break n}a=za(ya(za(H[c-12>>2],H[(H[11491]<<2)+45968>>2]),11195),H[c>>2]);break n}a=ya(za(ya(za(H[c-36>>2],H[(H[11491]<<2)+45968>>2]),10325),H[H[c-28>>2]+4>>2]),12244);b=c-20|0;if(H[b>>2]){a=za(za(a,H[(H[11491]<<2)+45968>>2]),H[b>>2])}a=za(ya(za(za(a,H[c-16>>2]),H[(H[11491]<<2)+45968>>2]),11186),H[c>>2]);break n}a=za(ya(za(za(ya(za(ya(ya(za(H[c-40>>2],H[(H[11491]<<2)+45968>>2]),10813),10414),H[c-32>>2]),11162),H[c-20>>2]),H[(H[11491]<<2)+45968>>2]),11251),H[c>>2]);break n}a=c-48|0;a=za(ya(za(za(ya(za(ya(za(ya(za(ya(za(ya(za(ya(za(ya(za(H[c-56>>2],H[(H[11491]<<2)+45968>>2]),10405),H[H[a>>2]+4>>2]),9954),H[H[c-40>>2]+8>>2]),10958),H[H[a>>2]+4>>2]),10898),H[H[c-32>>2]+8>>2]),10958),H[H[a>>2]+4>>2]),10939),H[H[a>>2]+4>>2]),11126),H[c-20>>2]),H[(H[11491]<<2)+45968>>2]),11251),H[c>>2]);break n}a=c-48|0;a=za(ya(za(za(ya(za(ya(za(ya(za(ya(za(ya(za(ya(za(ya(za(H[c-56>>2],H[(H[11491]<<2)+45968>>2]),10405),H[H[a>>2]+4>>2]),9954),H[H[c-40>>2]+8>>2]),10958),H[H[a>>2]+4>>2]),10922),H[H[c-32>>2]+8>>2]),10958),H[H[a>>2]+4>>2]),10939),H[H[a>>2]+4>>2]),11139),H[c-20>>2]),H[(H[11491]<<2)+45968>>2]),11251),H[c>>2]);break n}a=za(za(ya(za(za(ya(za(ya(za(H[c-44>>2],H[(H[11491]<<2)+45968>>2]),10319),H[c-36>>2]),11162),H[c-24>>2]),H[(H[11491]<<2)+45968>>2]),11251),H[c-16>>2]),H[c>>2]);break n}d=c-24|0;a=H[H[d>>2]+4>>2];while(1){b=a;a=H[a+4>>2];if(a){continue}break}b=H[b+8>>2];re:{se:{a=H[10481];if(a){while(1){if(!cb(H[a>>2],b)){break se}a=H[a+16>>2];if(a){continue}break}}a=H[10482];if(!a){break re}while(1){if(!cb(H[a>>2],b)){break se}a=H[a+16>>2];if(a){continue}break}break re}H[a+4>>2]=41156}a=za(za(H[c-28>>2],H[(H[11491]<<2)+45968>>2]),H[H[d>>2]+4>>2]);b=c-8|0;rc(H[d>>2],H[b>>2]);a=za(ya(za(ya(a,10922),H[b>>2]),11261),H[c>>2]);break n}a=c-28|0;b=za(za(H[c-32>>2],H[(H[11491]<<2)+45968>>2]),H[H[a>>2]+4>>2]);d=H[a>>2];a=c-12|0;rc(d,H[H[a>>2]+8>>2]);b=ya(b,10939);d=H[a>>2];a=H[d+8>>2];if(I[d|0]==99){a=Ka(7719,a,7710)}a=za(ya(za(b,a),11261),H[c>>2]);break n}a=H[c>>2];break n}a=c-20|0;b=mc(ya(H[c-36>>2],8828),H[a>>2]);Aa(H[a>>2]);a=b;b=H[c-28>>2];d=ya(a,H[b>>2]);a=H[b+16>>2];Aa(b);if(a){while(1){d=ya(ya(d,11050),H[a>>2]);b=H[a+16>>2];Aa(a);a=b;if(a){continue}break}}a=za(ya(za(ya(d,10939),H[H[c-8>>2]+8>>2]),11261),H[c>>2]);break n}a=c-8|0;b=mc(ya(H[c-24>>2],8828),H[a>>2]);Aa(H[a>>2]);a=b;b=H[c-16>>2];d=ya(a,H[b>>2]);a=H[b+16>>2];Aa(b);if(a){while(1){d=ya(ya(d,11050),H[a>>2]);b=H[a+16>>2];Aa(a);a=b;if(a){continue}break}}a=za(ya(d,11261),H[c>>2]);break n}a=H[c>>2];break n}b=ya(za(ya(za(ya(H[(H[11491]<<2)+45968>>2],11082),H[c>>2]),11017),H[11490]),10922);te:{if(!H[10286]){break te}a=c-8|0;if(!H[a>>2]){break te}b=ya(Xb(ya(b,11079),H[a>>2]),11085)}d=c-12|0;e=H[d>>2];a=H[e+8>>2];if(I[e|0]==99){a=Ka(7719,a,7710)}a=za(b,a);Aa(H[d>>2]);H[10286]=1;a=ya(a,11261);break n}b=ya(za(ya(H[(H[11491]<<2)+45968>>2],10971),H[11490]),10922);ue:{if(!H[10286]){break ue}a=c-12|0;if(!H[a>>2]){break ue}b=ya(Xb(ya(b,11079),H[a>>2]),11085)}d=c-16|0;e=H[d>>2];a=H[e+8>>2];if(I[e|0]==99){a=Ka(7719,a,7710)}a=za(b,a);Aa(H[d>>2]);H[10286]=1;a=ya(a,11261);break n}a=H[c-12>>2];b=H[c-4>>2];if(b){a=za(a,b)}a=za(a,H[c>>2]);break n}a=H[c-4>>2];break n}H[11489]=1;break n}Pc(0);break n}Pc(1);break n}Pc(F[H[H[H[c-16>>2]+8>>2]+8>>2]]-48|0);break n}Pc(F[H[H[H[c>>2]+8>>2]+8>>2]]-48|0);break n}a=Ka(10414,H[c-4>>2],10306);break n}a=Na(8);b=c-4|0;d=Na(bb(H[b>>2]));H[a>>2]=d;Nb(d,H[b>>2]);H[a+4>>2]=H[10484];H[10484]=a;a=H[c-8>>2];Aa(H[b>>2]);break n}a=H[c>>2];break n}a=H[c-8>>2];Aa(H[c-4>>2]);break n}a=H[c>>2];break n}Aa(H[c>>2]);a=0;break n}a=0;break n}a=za(za(H[c-8>>2],H[c-4>>2]),H[c>>2]);break n}a=c-48|0;b=ya(za(ya(za(ya(za(ya(za(ya(za(ya(za(ya(ya(za(ya(za(ya(za(H[c-56>>2],H[(H[11491]<<2)+45968>>2]),10750),H[H[a>>2]+4>>2]),11261),H[(H[11491]<<2)+45968>>2]),10766),10405),H[H[a>>2]+4>>2]),9954),H[H[c-40>>2]+8>>2]),10958),H[H[a>>2]+4>>2]),10898),H[H[c-32>>2]+8>>2]),10958),H[H[a>>2]+4>>2]),10939),H[H[a>>2]+4>>2]),10986);a=H[10484];b=ya(b,H[a>>2]);H[10484]=H[H[10484]+4>>2];Aa(H[a>>2]);Aa(a);a=za(ya(za(ya(za(za(ya(b,12286),H[c-20>>2]),H[(H[11491]<<2)+45968>>2]),11251),H[(H[11491]<<2)+45968>>2]),11171),H[c>>2]);break n}a=c-48|0;b=ya(za(ya(za(ya(za(ya(za(ya(za(ya(za(ya(ya(za(ya(za(ya(za(H[c-56>>2],H[(H[11491]<<2)+45968>>2]),10750),H[H[a>>2]+4>>2]),11261),H[(H[11491]<<2)+45968>>2]),10766),10405),H[H[a>>2]+4>>2]),9954),H[H[c-40>>2]+8>>2]),10958),H[H[a>>2]+4>>2]),10922),H[H[c-32>>2]+8>>2]),10958),H[H[a>>2]+4>>2]),10939),H[H[a>>2]+4>>2]),11001);a=H[10484];b=ya(b,H[a>>2]);H[10484]=H[H[10484]+4>>2];Aa(H[a>>2]);Aa(a);a=za(ya(za(ya(za(za(za(ya(b,12286),H[(H[11491]<<2)+45968>>2]),H[c-20>>2]),H[(H[11491]<<2)+45968>>2]),11251),H[(H[11491]<<2)+45968>>2]),11171),H[c>>2]);break n}b=ya(za(ya(ya(za(H[c-40>>2],H[(H[11491]<<2)+45968>>2]),10766),10411),H[c-32>>2]),11005);a=H[10484];b=ya(b,H[a>>2]);H[10484]=H[H[10484]+4>>2];Aa(H[a>>2]);Aa(a);a=za(ya(za(ya(za(za(za(ya(b,12286),H[(H[11491]<<2)+45968>>2]),H[c-20>>2]),H[(H[11491]<<2)+45968>>2]),11251),H[(H[11491]<<2)+45968>>2]),11171),H[c>>2]);break n}a=Oc(H[c-136>>2],H[c-124>>2],H[c-116>>2],1);b=c-100|0;if(H[b>>2]){a=za(za(a,H[(H[11491]<<2)+45968>>2]),H[b>>2])}a=za(ya(za(ya(za(za(ya(za(za(ya(za(ya(za(a,H[(H[11491]<<2)+45968>>2]),10317),H[c-92>>2]),11162),H[c-80>>2]),H[(H[11491]<<2)+45968>>2]),11091),H[c-52>>2]),H[(H[11491]<<2)+45968>>2]),11249),H[(H[11491]<<2)+45968>>2]),12252),H[c>>2]);break n}a=Oc(H[c-124>>2],H[c-112>>2],H[c-104>>2],1);b=c-88|0;if(H[b>>2]){a=za(za(a,H[(H[11491]<<2)+45968>>2]),H[b>>2])}a=za(ya(za(ya(za(za(ya(za(za(ya(za(ya(za(a,H[(H[11491]<<2)+45968>>2]),10317),H[c-80>>2]),11162),H[c-68>>2]),H[(H[11491]<<2)+45968>>2]),11091),H[c-44>>2]),H[(H[11491]<<2)+45968>>2]),11249),H[(H[11491]<<2)+45968>>2]),12252),H[c>>2]);break n}a=Oc(H[c-92>>2],H[c-80>>2],H[c-72>>2],1);b=c-56|0;if(H[b>>2]){a=za(za(a,H[(H[11491]<<2)+45968>>2]),H[b>>2])}a=za(ya(za(za(a,H[c-40>>2]),H[(H[11491]<<2)+45968>>2]),12252),H[c>>2]);break n}a=za(ya(za(za(Oc(H[c-60>>2],H[c-48>>2],H[c-40>>2],0),H[c-24>>2]),H[(H[11491]<<2)+45968>>2]),12252),H[c>>2]);break n}a=ya(za(H[c-84>>2],H[(H[11491]<<2)+45968>>2]),H[c-72>>2]);b=H[c-68>>2];if(b){a=za(za(a,b),H[(H[11491]<<2)+45968>>2])}a=za(ya(za(za(ya(ya(za(ya(za(za(ya(a,12247),H[(H[11491]<<2)+45968>>2]),H[c-48>>2]),12244),H[(H[11491]<<2)+45968>>2]),H[c-80>>2]),12249),H[(H[11491]<<2)+45968>>2]),H[c-16>>2]),12258),H[c>>2]);break n}a=za(ya(za(za(ya(ya(ya(ya(za(H[c-56>>2],H[(H[11491]<<2)+45968>>2]),H[c-44>>2]),11085),H[c-52>>2]),12249),H[(H[11491]<<2)+45968>>2]),H[c-20>>2]),12258),H[c>>2]);break n}a=c-32|0;b=za(ya(za(ya(za(H[c-40>>2],H[(H[11491]<<2)+45968>>2]),11152),H[(H[11491]<<2)+45968>>2]),10323),H[H[a>>2]+8>>2]);Aa(H[a>>2]);d=ya(b,12244);a=H[c-24>>2];if(a){d=za(d,a)}e=c-16|0;m=H[e>>2];a=H[m+4>>2];while(1){b=a;a=H[a+4>>2];if(a){continue}break}b=H[b+8>>2];ve:{we:{a=H[10481];if(a){while(1){if(!cb(H[a>>2],b)){break we}a=H[a+16>>2];if(a){continue}break}}a=H[10482];if(!a){break ve}while(1){if(!cb(H[a>>2],b)){break we}a=H[a+16>>2];if(a){continue}break}break ve}H[a+4>>2]=41156;m=H[e>>2]}a=c-4|0;rc(m,H[a>>2]);Aa(H[e>>2]);a=za(ya(za(ya(za(za(d,H[a>>2]),H[(H[11491]<<2)+45968>>2]),11184),H[(H[11491]<<2)+45968>>2]),12252),H[c>>2]);break n}a=c-40|0;b=za(ya(za(H[c-48>>2],H[(H[11491]<<2)+45968>>2]),10758),H[H[a>>2]+4>>2]);d=c-20|0;rc(H[a>>2],H[d>>2]);Aa(H[a>>2]);a=za(ya(za(ya(b,10939),H[d>>2]),11261),H[c-12>>2]);break n}a=c-28|0;b=za(ya(za(H[c-32>>2],H[(H[11491]<<2)+45968>>2]),10758),H[H[a>>2]+4>>2]);d=c-8|0;rc(H[a>>2],H[d>>2]);Aa(H[a>>2]);a=za(ya(za(ya(b,10939),H[d>>2]),11261),H[c>>2]);break n}a=0;xe:{b=H[c>>2];if(!b){break xe}d=H[(H[11491]<<2)+45968>>2];a=Ca(12);if(a){H[a+8>>2]=b;H[a+4>>2]=d;H[a>>2]=0;break xe}break l}break n}a=0;ye:{if(H[10287]){a=Na(20);H[a>>2]=H[c-12>>2];H[a+16>>2]=H[c>>2];break ye}Aa(H[c-12>>2])}Aa(H[c-4>>2]);break n}ze:{if(H[10287]){a=Na(20);b=H[c-4>>2];H[a+16>>2]=0;H[a>>2]=b;break ze}Aa(H[c-4>>2]);a=0}Aa(H[c>>2]);break n}H[10287]=1;break n}H[10287]=0;break n}Aa(H[c-16>>2]);Aa(H[c>>2]);a=0;break n}a=0;break n}a=za(H[c-76>>2],H[c>>2]);Aa(H[c-68>>2]);Aa(H[c-40>>2]);Aa(H[c-24>>2]);break n}a=sc(H[c-44>>2],H[c>>2]);b=Na(20);H[b>>2]=H[c-36>>2];d=H[c-8>>2];H[b+12>>2]=d;e=c-20|0;H[d+12>>2]=H[H[e>>2]+4>>2];H[d+16>>2]=H[H[e>>2]+8>>2];H[b+16>>2]=H[10483];H[10483]=b}b=c-(j<<2)|0;H[b+4>>2]=a;c=b+4|0;l=l-(j<<1)|0;d=G[l>>1];b=I[n+25168|0]-114<<1;a=d+G[b+25392>>1]|0;if(!(a>>>0>2515|J[(a<<1)+14128>>1]!=(d&65535))){n=G[(a<<1)+19168>>1];break m}n=G[b+25520>>1]}l=l+2|0;continue}break}break a}if(k){a=H[10466];if(a){b=H[a+(H[10467]<<2)>>2]}else{b=0}if((b|0)==(k|0)){H[a+(H[10467]<<2)>>2]=0}if(H[k+20>>2]){Aa(H[k+4>>2])}Aa(k)}return l|0}Ya(9263);_(2);X()} +function tg(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,w=0,x=0,y=0,z=0,A=0,B=0,D=0,E=0,G=0,J=0;q=la-48|0;la=q;a:{if(c>>>0<=2){c=c<<2;z=H[c+29036>>2];A=H[c+29024>>2];while(1){c=H[b+4>>2];b:{if(c>>>0>2]){H[b+4>>2]=c+1;c=I[c|0];break b}c=Ga(b)}if((c|0)==32|c-9>>>0<5){continue}break}m=1;c:{d:{switch(c-43|0){case 0:case 2:break d;default:break c}}m=(c|0)==45?-1:1;c=H[b+4>>2];if(c>>>0>2]){H[b+4>>2]=c+1;c=I[c|0];break c}c=Ga(b)}e:{f:{while(1){if(F[g+7732|0]==(c|32)){g:{if(g>>>0>6){break g}c=H[b+4>>2];if(c>>>0>2]){H[b+4>>2]=c+1;c=I[c|0];break g}c=Ga(b)}g=g+1|0;if((g|0)!=8){continue}break f}break}if((g|0)!=3){if((g|0)==8){break f}if(!d|g>>>0<4){break e}if((g|0)==8){break f}}c=H[b+104>>2];if(c){H[b+4>>2]=H[b+4>>2]-1}if(!d|g>>>0<4){break f}while(1){if(c){H[b+4>>2]=H[b+4>>2]-1}g=g-1|0;if(g>>>0>3){continue}break}}j=la-16|0;la=j;d=(C(O(O(m|0)*O(Z))),v(2));b=d&2147483647;h:{if(b-8388608>>>0<=2130706431){c=b;b=b>>>7|0;k=c<<25;c=b+1065353216|0;break h}c=d;g=c>>>7|0;k=c<<25;c=g|2147418112;if(b>>>0>=2139095040){break h}k=0;c=0;if(!b){break h}c=b;b=Q(b);fb(j,c,0,0,0,b+81|0);i=H[j>>2];h=H[j+4>>2];k=H[j+8>>2];c=H[j+12>>2]^65536|16265-b<<16}H[q>>2]=i;H[q+4>>2]=h;i=q;H[i+8>>2]=k;H[i+12>>2]=d&-2147483648|c;la=j+16|0;i=H[i+8>>2];h=H[q+12>>2];k=H[q>>2];j=H[q+4>>2];break a}i:{j:{k:{if(g){break k}g=0;while(1){if(F[g+8674|0]!=(c|32)){break k}l:{if(g>>>0>1){break l}c=H[b+4>>2];if(c>>>0>2]){H[b+4>>2]=c+1;c=I[c|0];break l}c=Ga(b)}g=g+1|0;if((g|0)!=3){continue}break}break j}m:{switch(g|0){case 0:n:{if((c|0)!=48){break n}g=H[b+4>>2];o:{if(g>>>0>2]){H[b+4>>2]=g+1;g=I[g|0];break o}g=Ga(b)}if((g&-33)==88){f=la-432|0;la=f;c=H[b+4>>2];p:{if(c>>>0>2]){H[b+4>>2]=c+1;g=I[c|0];break p}g=Ga(b)}q:{r:{while(1){if((g|0)!=48){s:{if((g|0)!=46){break q}c=H[b+4>>2];if(c>>>0>=K[b+104>>2]){break s}H[b+4>>2]=c+1;g=I[c|0];break r}}else{c=H[b+4>>2];if(c>>>0>2]){e=1;H[b+4>>2]=c+1;g=I[c|0]}else{e=1;g=Ga(b)}continue}break}g=Ga(b)}B=1;if((g|0)!=48){break q}while(1){c=r;r=c-1|0;s=s-(c>>>0<1)|0;c=H[b+4>>2];t:{if(c>>>0>2]){H[b+4>>2]=c+1;g=I[c|0];break t}g=Ga(b)}if((g|0)==48){continue}break}e=1}j=1073676288;u:{while(1){v:{c=g|32;w:{x:{t=g-48|0;if(t>>>0<10){break x}if((g|0)!=46?c-97>>>0>=6:0){break u}if((g|0)!=46){break x}if(B){break v}B=1;r=i;s=h;break w}c=(g|0)>57?c-87|0:t;y:{if((h|0)<0?1:(h|0)<=0?i>>>0<=7:0){p=c+(p<<4)|0;break y}if((h|0)<0?1:(h|0)<=0?i>>>0<=28:0){qb(f+48|0,c);La(f+32|0,x,y,k,j,0,0,0,1073414144);x=H[f+32>>2];y=H[f+36>>2];k=H[f+40>>2];j=H[f+44>>2];La(f+16|0,x,y,k,j,H[f+48>>2],H[f+52>>2],H[f+56>>2],H[f+60>>2]);ob(f,l,o,u,w,H[f+16>>2],H[f+20>>2],H[f+24>>2],H[f+28>>2]);u=H[f+8>>2];w=H[f+12>>2];l=H[f>>2];o=H[f+4>>2];break y}if(n|!c){break y}La(f+80|0,x,y,k,j,0,0,0,1073610752);ob(f- -64|0,l,o,u,w,H[f+80>>2],H[f+84>>2],H[f+88>>2],H[f+92>>2]);u=H[f+72>>2];w=H[f+76>>2];n=1;l=H[f+64>>2];o=H[f+68>>2]}g=h;c=i+1|0;g=c>>>0<1?g+1|0:g;i=c;h=g;e=1}c=H[b+4>>2];if(c>>>0>2]){H[b+4>>2]=c+1;g=I[c|0]}else{g=Ga(b)}continue}break}g=46}z:{A:{B:{if(!e){if(!H[b+104>>2]){if(d){break A}break B}c=H[b+4>>2];H[b+4>>2]=c-1;if(!d){break B}H[b+4>>2]=c-2;if(!B){break A}H[b+4>>2]=c-3;break A}if((h|0)<0?1:(h|0)<=0?i>>>0<=7:0){k=i;j=h;while(1){p=p<<4;c=k+1|0;j=c>>>0<1?j+1|0:j;k=c;if((c|0)!=8|j){continue}break}}C:{D:{E:{if((g&-33)==80){k=sg(b,d);c=ma;j=c;if(k|(c|0)!=-2147483648){break C}if(d){if(H[b+104>>2]){break E}break D}l=0;o=0;Bb(b,0,0);c=0;b=0;break z}if(!H[b+104>>2]){break D}}H[b+4>>2]=H[b+4>>2]-1}k=0;j=0}if(!p){Eb(f+112|0,+(m|0)*0);l=H[f+112>>2];o=H[f+116>>2];c=H[f+124>>2];b=H[f+120>>2];break z}b=B?r:i;d=(B?s:h)<<2|b>>>30;c=k+(b<<2)|0;b=d+j|0;b=c>>>0>>0?b+1|0:b;i=c-32|0;h=b-(c>>>0<32)|0;b=h;if((b|0)>0?1:(b|0)>=0?i>>>0>0-z>>>0:0){H[12064]=68;qb(f+160|0,m);La(f+144|0,H[f+160>>2],H[f+164>>2],H[f+168>>2],H[f+172>>2],-1,-1,-1,2147418111);La(f+128|0,H[f+144>>2],H[f+148>>2],H[f+152>>2],H[f+156>>2],-1,-1,-1,2147418111);l=H[f+128>>2];o=H[f+132>>2];c=H[f+140>>2];b=H[f+136>>2];break z}b=z-226|0;c=i>>>0>=b>>>0;b=b>>31;if((b|0)<(h|0)?1:(h|0)>=(b|0)?c:0){if((p|0)>-1){while(1){ob(f+416|0,l,o,u,w,0,0,0,-1073807360);c=ad(l,o,u,w,1073610752);b=(c|0)<0;ob(f+400|0,l,o,u,w,b?l:H[f+416>>2],b?o:H[f+420>>2],b?u:H[f+424>>2],b?w:H[f+428>>2]);b=i;i=b-1|0;h=h-(b>>>0<1)|0;u=H[f+408>>2];w=H[f+412>>2];l=H[f+400>>2];o=H[f+404>>2];p=p<<1|(c|0)>-1;if((p|0)>-1){continue}break}}b=i;c=z;d=(b-c|0)+32|0;b=h-((c>>31)+(b>>>0>>0)|0)|0;b=d>>>0<32?b+1|0:b;c=d;c=((b|0)<0?1:(b|0)<=0?c>>>0>>0:0)?(c|0)>0?c:0:A;F:{if((c|0)>=113){qb(f+384|0,m);r=H[f+392>>2];s=H[f+396>>2];x=H[f+384>>2];y=H[f+388>>2];h=0;b=0;break F}Eb(f+352|0,jd(144-c|0));qb(f+336|0,m);x=H[f+336>>2];y=H[f+340>>2];r=H[f+344>>2];s=H[f+348>>2];Vd(f+368|0,H[f+352>>2],H[f+356>>2],H[f+360>>2],H[f+364>>2],x,y,r,s);D=H[f+376>>2];E=H[f+380>>2];h=H[f+372>>2];b=H[f+368>>2]}c=!(p&1)&((Yb(l,o,u,w,0,0,0,0)|0)!=0&(c|0)<32);gc(f+320|0,c+p|0);La(f+304|0,x,y,r,s,H[f+320>>2],H[f+324>>2],H[f+328>>2],H[f+332>>2]);d=b;ob(f+272|0,H[f+304>>2],H[f+308>>2],H[f+312>>2],H[f+316>>2],b,h,D,E);b=c;La(f+288|0,b?0:l,b?0:o,b?0:u,b?0:w,x,y,r,s);ob(f+256|0,H[f+288>>2],H[f+292>>2],H[f+296>>2],H[f+300>>2],H[f+272>>2],H[f+276>>2],H[f+280>>2],H[f+284>>2]);$c(f+240|0,H[f+256>>2],H[f+260>>2],H[f+264>>2],H[f+268>>2],d,h,D,E);b=H[f+240>>2];c=H[f+244>>2];d=H[f+248>>2];h=H[f+252>>2];if(!Yb(b,c,d,h,0,0,0,0)){H[12064]=68}vg(f+224|0,b,c,d,h,i);l=H[f+224>>2];o=H[f+228>>2];c=H[f+236>>2];b=H[f+232>>2];break z}H[12064]=68;qb(f+208|0,m);La(f+192|0,H[f+208>>2],H[f+212>>2],H[f+216>>2],H[f+220>>2],0,0,0,65536);La(f+176|0,H[f+192>>2],H[f+196>>2],H[f+200>>2],H[f+204>>2],0,0,0,65536);l=H[f+176>>2];o=H[f+180>>2];c=H[f+188>>2];b=H[f+184>>2];break z}Bb(b,0,0)}Eb(f+96|0,+(m|0)*0);l=H[f+96>>2];o=H[f+100>>2];c=H[f+108>>2];b=H[f+104>>2]}H[q+16>>2]=l;H[q+20>>2]=o;H[q+24>>2]=b;H[q+28>>2]=c;la=f+432|0;i=H[q+24>>2];h=H[q+28>>2];k=H[q+16>>2];j=H[q+20>>2];break a}if(!H[b+104>>2]){break n}H[b+4>>2]=H[b+4>>2]-1}f=b;p=m;B=d;m=0;d=0;e=la-8976|0;la=e;D=z+A|0;E=0-D|0;G:{H:{while(1){if((c|0)!=48){I:{if((c|0)!=46){break G}b=H[f+4>>2];if(b>>>0>=K[f+104>>2]){break I}H[f+4>>2]=b+1;c=I[b|0];break H}}else{b=H[f+4>>2];if(b>>>0>2]){m=1;H[f+4>>2]=b+1;c=I[b|0]}else{m=1;c=Ga(f)}continue}break}c=Ga(f)}n=1;if((c|0)!=48){break G}while(1){b=i;i=b-1|0;h=h-(b>>>0<1)|0;b=H[f+4>>2];J:{if(b>>>0>2]){H[f+4>>2]=b+1;c=I[b|0];break J}c=Ga(f)}if((c|0)==48){continue}break}m=1}H[e+784>>2]=0;K:{L:{b=(c|0)==46;l=c-48|0;M:{N:{O:{P:{if(l>>>0>9?b:1){while(1){Q:{if(b&1){if(!n){i=k;h=j;n=1;break Q}b=!m;break P}g=j;b=k+1|0;g=b>>>0<1?g+1|0:g;k=b;j=g;if((d|0)<=2044){G=(c|0)==48?G:k;b=(e+784|0)+(d<<2)|0;g=b;if(t){l=(N(H[b>>2],10)+c|0)-48|0}H[g>>2]=l;m=1;c=t+1|0;b=(c|0)==9;t=b?0:c;d=b+d|0;break Q}if((c|0)==48){break Q}H[e+8960>>2]=H[e+8960>>2]|1;G=18396}b=H[f+4>>2];R:{if(b>>>0>2]){H[f+4>>2]=b+1;c=I[b|0];break R}c=Ga(f)}b=(c|0)==46;l=c-48|0;if(b|l>>>0<10){continue}break}}i=n?i:k;h=n?h:j;if(!(!m|(c&-33)!=69)){l=sg(f,B);b=ma;o=b;S:{if(l|(b|0)!=-2147483648){break S}if(!B){break M}l=0;o=0;if(!H[f+104>>2]){break S}H[f+4>>2]=H[f+4>>2]-1}if(!m){break N}g=h+o|0;b=i+l|0;g=b>>>0>>0?g+1|0:g;i=b;h=g;break L}b=!m;if((c|0)<0){break O}}if(!H[f+104>>2]){break O}H[f+4>>2]=H[f+4>>2]-1}if(!b){break L}}H[12064]=28}k=0;j=0;Bb(f,0,0);c=0;b=0;break K}b=H[e+784>>2];if(!b){Eb(e,+(p|0)*0);k=H[e>>2];j=H[e+4>>2];c=H[e+12>>2];b=H[e+8>>2];break K}if(!((i|0)!=(k|0)|(h|0)!=(j|0)|((j|0)>0?1:(j|0)>=0?k>>>0>9:0)|(b>>>A|0?(A|0)<=30:0))){qb(e+48|0,p);gc(e+32|0,b);La(e+16|0,H[e+48>>2],H[e+52>>2],H[e+56>>2],H[e+60>>2],H[e+32>>2],H[e+36>>2],H[e+40>>2],H[e+44>>2]);k=H[e+16>>2];j=H[e+20>>2];c=H[e+28>>2];b=H[e+24>>2];break K}if((h|0)>0?1:(h|0)>=0?i>>>0>(z|0)/-2>>>0:0){H[12064]=68;qb(e+96|0,p);La(e+80|0,H[e+96>>2],H[e+100>>2],H[e+104>>2],H[e+108>>2],-1,-1,-1,2147418111);La(e- -64|0,H[e+80>>2],H[e+84>>2],H[e+88>>2],H[e+92>>2],-1,-1,-1,2147418111);k=H[e+64>>2];j=H[e+68>>2];c=H[e+76>>2];b=H[e+72>>2];break K}b=z-226|0;c=i>>>0>>0;b=b>>31;if((b|0)>(h|0)?1:(h|0)<=(b|0)?c:0){H[12064]=68;qb(e+144|0,p);La(e+128|0,H[e+144>>2],H[e+148>>2],H[e+152>>2],H[e+156>>2],0,0,0,65536);La(e+112|0,H[e+128>>2],H[e+132>>2],H[e+136>>2],H[e+140>>2],0,0,0,65536);k=H[e+112>>2];j=H[e+116>>2];c=H[e+124>>2];b=H[e+120>>2];break K}if(t){if((t|0)<=8){b=(e+784|0)+(d<<2)|0;g=H[b>>2];while(1){g=N(g,10);t=t+1|0;if((t|0)!=9){continue}break}H[b>>2]=g}d=d+1|0}T:{n=i;if((G|0)>(i|0)|(G|0)>=9|(i|0)>17){break T}if((n|0)==9){qb(e+192|0,p);gc(e+176|0,H[e+784>>2]);La(e+160|0,H[e+192>>2],H[e+196>>2],H[e+200>>2],H[e+204>>2],H[e+176>>2],H[e+180>>2],H[e+184>>2],H[e+188>>2]);k=H[e+160>>2];j=H[e+164>>2];c=H[e+172>>2];b=H[e+168>>2];break K}if((n|0)<=8){qb(e+272|0,p);gc(e+256|0,H[e+784>>2]);La(e+240|0,H[e+272>>2],H[e+276>>2],H[e+280>>2],H[e+284>>2],H[e+256>>2],H[e+260>>2],H[e+264>>2],H[e+268>>2]);qb(e+224|0,H[(0-n<<2)+29024>>2]);ug(e+208|0,H[e+240>>2],H[e+244>>2],H[e+248>>2],H[e+252>>2],H[e+224>>2],H[e+228>>2],H[e+232>>2],H[e+236>>2]);k=H[e+208>>2];j=H[e+212>>2];c=H[e+220>>2];b=H[e+216>>2];break K}b=(N(n,-3)+A|0)+27|0;c=H[e+784>>2];if(c>>>b|0?(b|0)<=30:0){break T}qb(e+352|0,p);gc(e+336|0,c);La(e+320|0,H[e+352>>2],H[e+356>>2],H[e+360>>2],H[e+364>>2],H[e+336>>2],H[e+340>>2],H[e+344>>2],H[e+348>>2]);qb(e+304|0,H[(n<<2)+28952>>2]);La(e+288|0,H[e+320>>2],H[e+324>>2],H[e+328>>2],H[e+332>>2],H[e+304>>2],H[e+308>>2],H[e+312>>2],H[e+316>>2]);k=H[e+288>>2];j=H[e+292>>2];c=H[e+300>>2];b=H[e+296>>2];break K}while(1){c=d;d=c-1|0;if(!H[(e+784|0)+(d<<2)>>2]){continue}break}t=0;b=(n|0)%9|0;U:{if(!b){b=0;break U}d=(n|0)>-1?b:b+9|0;V:{if(!c){b=0;c=0;break V}i=H[(0-d<<2)+29024>>2];j=1e9/(i|0)|0;l=0;g=0;b=0;while(1){h=l;k=(e+784|0)+(g<<2)|0;m=H[k>>2];l=(m>>>0)/(i>>>0)|0;h=h+l|0;H[k>>2]=h;h=!h&(b|0)==(g|0);b=h?b+1&2047:b;n=h?n-9|0:n;l=N(j,m-N(i,l)|0);g=g+1|0;if((g|0)!=(c|0)){continue}break}if(!l){break V}H[(e+784|0)+(c<<2)>>2]=l;c=c+1|0}n=(n-d|0)+9|0}while(1){f=(e+784|0)+(b<<2)|0;W:{while(1){if((n|0)!=36|K[f>>2]>=10384593?(n|0)>=36:0){break W}m=c+2047|0;l=0;while(1){k=m&2047;m=(e+784|0)+(k<<2)|0;d=H[m>>2];g=d>>>3|0;i=d<<29;d=i+l|0;j=d>>>0>>0?g+1|0:g;i=d;h=j;if(!h&i>>>0<1000000001){l=0}else{l=ek(i,h,1e9);i=i-dk(l,ma,1e9,0)|0}H[m>>2]=i;c=(k|0)!=(c-1&2047)?c:(b|0)==(k|0)?c:i?c:k;m=k-1|0;if((b|0)!=(k|0)){continue}break}t=t-29|0;if(!l){continue}break}b=b-1&2047;if((c|0)==(b|0)){d=(e+784|0)+((c+2046&2047)<<2)|0;c=c-1&2047;H[d>>2]=H[d>>2]|H[(e+784|0)+(c<<2)>>2]}n=n+9|0;H[(e+784|0)+(b<<2)>>2]=l;continue}break}X:{Y:while(1){d=c+1&2047;h=(e+784|0)+((c-1&2047)<<2)|0;while(1){i=(n|0)>45?9:1;Z:{while(1){m=b;g=0;_:{while(1){$:{b=g+m&2047;if((b|0)==(c|0)){break $}b=H[(e+784|0)+(b<<2)>>2];j=H[(g<<2)+28976>>2];if(b>>>0>>0){break $}if(b>>>0>j>>>0){break _}g=g+1|0;if((g|0)!=4){continue}}break}if((n|0)!=36){break _}i=0;h=0;g=0;k=0;j=0;while(1){b=g+m&2047;if((b|0)==(c|0)){c=c+1&2047;H[(e+(c<<2)|0)+780>>2]=0}La(e+768|0,i,h,k,j,0,0,1342177280,1075633366);gc(e+752|0,H[(e+784|0)+(b<<2)>>2]);ob(e+736|0,H[e+768>>2],H[e+772>>2],H[e+776>>2],H[e+780>>2],H[e+752>>2],H[e+756>>2],H[e+760>>2],H[e+764>>2]);k=H[e+744>>2];j=H[e+748>>2];i=H[e+736>>2];h=H[e+740>>2];g=g+1|0;if((g|0)!=4){continue}break}qb(e+720|0,p);La(e+704|0,i,h,k,j,H[e+720>>2],H[e+724>>2],H[e+728>>2],H[e+732>>2]);k=H[e+712>>2];j=H[e+716>>2];i=0;h=0;l=H[e+704>>2];o=H[e+708>>2];f=t+113|0;d=f-z|0;g=(d|0)<(A|0);b=g?(d|0)>0?d:0:A;if((b|0)<=112){break Z}break X}t=i+t|0;b=c;if((m|0)==(b|0)){continue}break}j=1e9>>>i|0;k=-1<>2];g=(f>>>i|0)+g|0;H[l>>2]=g;g=!g&(b|0)==(m|0);b=g?b+1&2047:b;n=g?n-9|0:n;g=N(j,f&k);m=m+1&2047;if((m|0)!=(c|0)){continue}break}if(!g){continue}if((b|0)!=(d|0)){H[(e+784|0)+(c<<2)>>2]=g;c=d;continue Y}H[h>>2]=H[h>>2]|1;b=d;continue}break}break}Eb(e+656|0,jd(225-b|0));Vd(e+688|0,H[e+656>>2],H[e+660>>2],H[e+664>>2],H[e+668>>2],l,o,k,j);x=H[e+696>>2];y=H[e+700>>2];u=H[e+688>>2];w=H[e+692>>2];Eb(e+640|0,jd(113-b|0));ie(e+672|0,l,o,k,j,H[e+640>>2],H[e+644>>2],H[e+648>>2],H[e+652>>2]);i=H[e+672>>2];h=H[e+676>>2];r=H[e+680>>2];s=H[e+684>>2];$c(e+624|0,l,o,k,j,i,h,r,s);ob(e+608|0,u,w,x,y,H[e+624>>2],H[e+628>>2],H[e+632>>2],H[e+636>>2]);k=H[e+616>>2];j=H[e+620>>2];l=H[e+608>>2];o=H[e+612>>2]}n=m+4&2047;aa:{if((n|0)==(c|0)){break aa}n=H[(e+784|0)+(n<<2)>>2];ba:{if(n>>>0<=499999999){if(!((m+5&2047)==(c|0)?n:1)){break ba}Eb(e+496|0,+(p|0)*.25);ob(e+480|0,i,h,r,s,H[e+496>>2],H[e+500>>2],H[e+504>>2],H[e+508>>2]);r=H[e+488>>2];s=H[e+492>>2];i=H[e+480>>2];h=H[e+484>>2];break ba}if((n|0)!=5e8){Eb(e+592|0,+(p|0)*.75);ob(e+576|0,i,h,r,s,H[e+592>>2],H[e+596>>2],H[e+600>>2],H[e+604>>2]);r=H[e+584>>2];s=H[e+588>>2];i=H[e+576>>2];h=H[e+580>>2];break ba}J=+(p|0);if((m+5&2047)==(c|0)){Eb(e+528|0,J*.5);ob(e+512|0,i,h,r,s,H[e+528>>2],H[e+532>>2],H[e+536>>2],H[e+540>>2]);r=H[e+520>>2];s=H[e+524>>2];i=H[e+512>>2];h=H[e+516>>2];break ba}Eb(e+560|0,J*.75);ob(e+544|0,i,h,r,s,H[e+560>>2],H[e+564>>2],H[e+568>>2],H[e+572>>2]);r=H[e+552>>2];s=H[e+556>>2];i=H[e+544>>2];h=H[e+548>>2]}if((b|0)>111){break aa}ie(e+464|0,i,h,r,s,0,0,0,1073676288);if(Yb(H[e+464>>2],H[e+468>>2],H[e+472>>2],H[e+476>>2],0,0,0,0)){break aa}ob(e+448|0,i,h,r,s,0,0,0,1073676288);r=H[e+456>>2];s=H[e+460>>2];i=H[e+448>>2];h=H[e+452>>2]}ob(e+432|0,l,o,k,j,i,h,r,s);$c(e+416|0,H[e+432>>2],H[e+436>>2],H[e+440>>2],H[e+444>>2],u,w,x,y);k=H[e+424>>2];j=H[e+428>>2];l=H[e+416>>2];o=H[e+420>>2];ca:{if((-2-D|0)>=(f&2147483647)){break ca}H[e+408>>2]=k;H[e+412>>2]=j&2147483647;H[e+400>>2]=l;H[e+404>>2]=o;La(e+384|0,l,o,k,j,0,0,0,1073610752);n=H[e+400>>2];f=H[e+404>>2];p=H[e+408>>2];z=H[e+412>>2];c=ad(n,f,p,z,1081081856);m=(c|0)<0;k=m?k:H[e+392>>2];j=m?j:H[e+396>>2];l=m?l:H[e+384>>2];o=m?o:H[e+388>>2];t=((c|0)>-1)+t|0;if((t+110|0)<=(E|0)){if((((ad(n,f,p,z,1081081856)|0)<0?g:g&(b|0)!=(d|0))|0)!=1){break ca}if(!Yb(i,h,r,s,0,0,0,0)){break ca}}H[12064]=68}vg(e+368|0,l,o,k,j,t);k=H[e+368>>2];j=H[e+372>>2];c=H[e+380>>2];b=H[e+376>>2]}H[q+32>>2]=k;H[q+36>>2]=j;H[q+40>>2]=b;H[q+44>>2]=c;la=e+8976|0;i=H[q+40>>2];h=H[q+44>>2];k=H[q+32>>2];j=H[q+36>>2];break a;case 3:break j;default:break m}}if(H[b+104>>2]){H[b+4>>2]=H[b+4>>2]-1}break i}da:{c=H[b+4>>2];ea:{if(c>>>0>2]){H[b+4>>2]=c+1;c=I[c|0];break ea}c=Ga(b)}if((c|0)==40){g=1;break da}h=2147450880;if(!H[b+104>>2]){break a}H[b+4>>2]=H[b+4>>2]-1;break a}while(1){fa:{c=H[b+4>>2];ga:{if(c>>>0>2]){H[b+4>>2]=c+1;c=I[c|0];break ga}c=Ga(b)}if(!(c-48>>>0<10|c-65>>>0<26|(c|0)==95)){if(c-97>>>0>=26){break fa}}g=g+1|0;continue}break}h=2147450880;if((c|0)==41){break a}c=H[b+104>>2];if(c){H[b+4>>2]=H[b+4>>2]-1}if(d){if(!g){break a}while(1){g=g-1|0;if(c){H[b+4>>2]=H[b+4>>2]-1}if(g){continue}break}break a}}H[12064]=28;Bb(b,0,0)}h=0}H[a>>2]=k;H[a+4>>2]=j;H[a+8>>2]=i;H[a+12>>2]=h;la=q+48|0}function Ca(a){var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;m=la-16|0;la=m;a:{b:{c:{d:{e:{f:{g:{h:{i:{j:{k:{l:{if(a>>>0<=244){f=H[12865];i=a>>>0<11?16:a+11&-8;c=i>>>3|0;b=f>>>c|0;if(b&3){d=c+((b^-1)&1)|0;b=d<<3;e=H[b+51508>>2];a=e+8|0;c=H[e+8>>2];b=b+51500|0;m:{if((c|0)==(b|0)){n=51460,o=fk(-2,d)&f,H[n>>2]=o;break m}H[c+12>>2]=b;H[b+8>>2]=c}b=d<<3;H[e+4>>2]=b|3;b=b+e|0;H[b+4>>2]=H[b+4>>2]|1;break a}k=H[12867];if(k>>>0>=i>>>0){break l}if(b){a=2<>>12&16;c=a;b=b>>>a|0;a=b>>>5&8;c=c|a;b=b>>>a|0;a=b>>>2&4;c=c|a;b=b>>>a|0;a=b>>>1&2;c=c|a;b=b>>>a|0;a=b>>>1&1;c=(c|a)+(b>>>a|0)|0;a=c<<3;g=H[a+51508>>2];b=H[g+8>>2];a=a+51500|0;n:{if((b|0)==(a|0)){f=fk(-2,c)&f;H[12865]=f;break n}H[b+12>>2]=a;H[a+8>>2]=b}a=g+8|0;H[g+4>>2]=i|3;d=g+i|0;b=c<<3;e=b-i|0;H[d+4>>2]=e|1;H[b+g>>2]=e;if(k){b=k>>>3|0;c=(b<<3)+51500|0;g=H[12870];b=1<>2]}H[c+8>>2]=g;H[b+12>>2]=g;H[g+12>>2]=c;H[g+8>>2]=b}H[12870]=d;H[12867]=e;break a}h=H[12866];if(!h){break l}b=(h&0-h)-1|0;a=b>>>12&16;c=a;b=b>>>a|0;a=b>>>5&8;c=c|a;b=b>>>a|0;a=b>>>2&4;c=c|a;b=b>>>a|0;a=b>>>1&2;c=c|a;b=b>>>a|0;a=b>>>1&1;b=H[((c|a)+(b>>>a|0)<<2)+51764>>2];d=(H[b+4>>2]&-8)-i|0;c=b;while(1){p:{a=H[c+16>>2];if(!a){a=H[c+20>>2];if(!a){break p}}c=(H[a+4>>2]&-8)-i|0;e=c>>>0>>0;d=e?c:d;b=e?a:b;c=a;continue}break}j=b+i|0;if(j>>>0<=b>>>0){break k}l=H[b+24>>2];e=H[b+12>>2];if((e|0)!=(b|0)){a=H[b+8>>2];H[a+12>>2]=e;H[e+8>>2]=a;break b}c=b+20|0;a=H[c>>2];if(!a){a=H[b+16>>2];if(!a){break j}c=b+16|0}while(1){g=c;e=a;c=a+20|0;a=H[c>>2];if(a){continue}c=e+16|0;a=H[e+16>>2];if(a){continue}break}H[g>>2]=0;break b}i=-1;if(a>>>0>4294967231){break l}a=a+11|0;i=a&-8;j=H[12866];if(!j){break l}d=0-i|0;f=0;q:{if(i>>>0<256){break q}f=31;if(i>>>0>16777215){break q}a=a>>>8|0;g=a+1048320>>>16&8;a=a<>>16&4;a=a<>>16&2;a=(a<>>15|0)-(b|(c|g))|0;f=(a<<1|i>>>a+21&1)+28|0}c=H[(f<<2)+51764>>2];r:{s:{t:{if(!c){a=0;break t}a=0;b=i<<((f|0)==31?0:25-(f>>>1|0)|0);while(1){u:{g=(H[c+4>>2]&-8)-i|0;if(g>>>0>=d>>>0){break u}e=c;d=g;if(d){break u}d=0;a=c;break s}g=H[c+20>>2];c=H[((b>>>29&4)+c|0)+16>>2];a=g?(g|0)==(c|0)?a:g:a;b=b<<1;if(c){continue}break}}if(!(a|e)){e=0;a=2<>>12&16;c=a;b=b>>>a|0;a=b>>>5&8;c=c|a;b=b>>>a|0;a=b>>>2&4;c=c|a;b=b>>>a|0;a=b>>>1&2;c=c|a;b=b>>>a|0;a=b>>>1&1;a=H[((c|a)+(b>>>a|0)<<2)+51764>>2]}if(!a){break r}}while(1){b=(H[a+4>>2]&-8)-i|0;c=b>>>0>>0;d=c?b:d;e=c?a:e;b=H[a+16>>2];if(b){a=b}else{a=H[a+20>>2]}if(a){continue}break}}if(!e|H[12867]-i>>>0<=d>>>0){break l}h=e+i|0;if(h>>>0<=e>>>0){break k}f=H[e+24>>2];b=H[e+12>>2];if((e|0)!=(b|0)){a=H[e+8>>2];H[a+12>>2]=b;H[b+8>>2]=a;break c}c=e+20|0;a=H[c>>2];if(!a){a=H[e+16>>2];if(!a){break i}c=e+16|0}while(1){g=c;b=a;c=a+20|0;a=H[c>>2];if(a){continue}c=b+16|0;a=H[b+16>>2];if(a){continue}break}H[g>>2]=0;break c}c=H[12867];if(c>>>0>=i>>>0){d=H[12870];b=c-i|0;v:{if(b>>>0>=16){H[12867]=b;a=d+i|0;H[12870]=a;H[a+4>>2]=b|1;H[c+d>>2]=b;H[d+4>>2]=i|3;break v}H[12870]=0;H[12867]=0;H[d+4>>2]=c|3;a=c+d|0;H[a+4>>2]=H[a+4>>2]|1}a=d+8|0;break a}h=H[12868];if(h>>>0>i>>>0){b=h-i|0;H[12868]=b;c=H[12871];a=c+i|0;H[12871]=a;H[a+4>>2]=b|1;H[c+4>>2]=i|3;a=c+8|0;break a}a=0;j=i+47|0;b=j;if(H[12983]){c=H[12985]}else{H[12986]=-1;H[12987]=-1;H[12984]=4096;H[12985]=4096;H[12983]=m+12&-16^1431655768;H[12988]=0;H[12976]=0;c=4096}g=b+c|0;e=0-c|0;c=g&e;if(c>>>0<=i>>>0){break a}d=H[12975];if(d){b=H[12973];f=b+c|0;if(d>>>0>>0|b>>>0>=f>>>0){break a}}if(I[51904]&4){break f}w:{x:{d=H[12871];if(d){a=51908;while(1){b=H[a>>2];if(d>>>0>2]>>>0?b>>>0<=d>>>0:0){break x}a=H[a+8>>2];if(a){continue}break}}b=cc(0);if((b|0)==-1){break g}f=c;d=H[12984];a=d-1|0;if(a&b){f=(c-b|0)+(a+b&0-d)|0}if(f>>>0<=i>>>0|f>>>0>2147483646){break g}d=H[12975];if(d){a=H[12973];e=a+f|0;if(d>>>0>>0|a>>>0>=e>>>0){break g}}a=cc(f);if((b|0)!=(a|0)){break w}break e}f=e&g-h;if(f>>>0>2147483646){break g}b=cc(f);if((b|0)==(H[a>>2]+H[a+4>>2]|0)){break h}a=b}if(!((a|0)==-1|i+48>>>0<=f>>>0)){b=H[12985];b=b+(j-f|0)&0-b;if(b>>>0>2147483646){b=a;break e}if((cc(b)|0)!=-1){f=b+f|0;b=a;break e}cc(0-f|0);break g}b=a;if((a|0)!=-1){break e}break g}X()}e=0;break b}b=0;break c}if((b|0)!=-1){break e}}H[12976]=H[12976]|4}if(c>>>0>2147483646){break d}b=cc(c);a=cc(0);if((b|0)==-1|(a|0)==-1|a>>>0<=b>>>0){break d}f=a-b|0;if(f>>>0<=i+40>>>0){break d}}a=H[12973]+f|0;H[12973]=a;if(a>>>0>K[12974]){H[12974]=a}y:{z:{A:{g=H[12871];if(g){a=51908;while(1){d=H[a>>2];c=H[a+4>>2];if((d+c|0)==(b|0)){break A}a=H[a+8>>2];if(a){continue}break}break z}a=H[12869];if(!(a>>>0<=b>>>0?a:0)){H[12869]=b}a=0;H[12978]=f;H[12977]=b;H[12873]=-1;H[12874]=H[12983];H[12980]=0;while(1){d=a<<3;c=d+51500|0;H[d+51508>>2]=c;H[d+51512>>2]=c;a=a+1|0;if((a|0)!=32){continue}break}d=f-40|0;a=b+8&7?-8-b&7:0;c=d-a|0;H[12868]=c;a=a+b|0;H[12871]=a;H[a+4>>2]=c|1;H[(b+d|0)+4>>2]=40;H[12872]=H[12987];break y}if(I[a+12|0]&8|d>>>0>g>>>0|b>>>0<=g>>>0){break z}H[a+4>>2]=c+f;a=g+8&7?-8-g&7:0;c=a+g|0;H[12871]=c;b=H[12868]+f|0;a=b-a|0;H[12868]=a;H[c+4>>2]=a|1;H[(b+g|0)+4>>2]=40;H[12872]=H[12987];break y}if(K[12869]>b>>>0){H[12869]=b}c=b+f|0;a=51908;B:{C:{D:{E:{F:{G:{while(1){if((c|0)!=H[a>>2]){a=H[a+8>>2];if(a){continue}break G}break}if(!(I[a+12|0]&8)){break F}}a=51908;while(1){c=H[a>>2];if(c>>>0<=g>>>0){e=c+H[a+4>>2]|0;if(e>>>0>g>>>0){break E}}a=H[a+8>>2];continue}}H[a>>2]=b;H[a+4>>2]=H[a+4>>2]+f;j=(b+8&7?-8-b&7:0)+b|0;H[j+4>>2]=i|3;f=c+(c+8&7?-8-c&7:0)|0;h=i+j|0;c=f-h|0;if((g|0)==(f|0)){H[12871]=h;a=H[12868]+c|0;H[12868]=a;H[h+4>>2]=a|1;break C}if(H[12870]==(f|0)){H[12870]=h;a=H[12867]+c|0;H[12867]=a;H[h+4>>2]=a|1;H[a+h>>2]=a;break C}a=H[f+4>>2];if((a&3)==1){g=a&-8;H:{if(a>>>0<=255){d=H[f+8>>2];a=a>>>3|0;b=H[f+12>>2];if((b|0)==(d|0)){n=51460,o=H[12865]&fk(-2,a),H[n>>2]=o;break H}H[d+12>>2]=b;H[b+8>>2]=d;break H}i=H[f+24>>2];b=H[f+12>>2];I:{if((f|0)!=(b|0)){a=H[f+8>>2];H[a+12>>2]=b;H[b+8>>2]=a;break I}J:{a=f+20|0;d=H[a>>2];if(d){break J}a=f+16|0;d=H[a>>2];if(d){break J}b=0;break I}while(1){e=a;b=d;a=b+20|0;d=H[a>>2];if(d){continue}a=b+16|0;d=H[b+16>>2];if(d){continue}break}H[e>>2]=0}if(!i){break H}d=H[f+28>>2];a=(d<<2)+51764|0;K:{if(H[a>>2]==(f|0)){H[a>>2]=b;if(b){break K}n=51464,o=H[12866]&fk(-2,d),H[n>>2]=o;break H}H[i+(H[i+16>>2]==(f|0)?16:20)>>2]=b;if(!b){break H}}H[b+24>>2]=i;a=H[f+16>>2];if(a){H[b+16>>2]=a;H[a+24>>2]=b}a=H[f+20>>2];if(!a){break H}H[b+20>>2]=a;H[a+24>>2]=b}f=g+f|0;c=c+g|0}H[f+4>>2]=H[f+4>>2]&-2;H[h+4>>2]=c|1;H[c+h>>2]=c;if(c>>>0<=255){a=c>>>3|0;b=(a<<3)+51500|0;c=H[12865];a=1<>2]}H[b+8>>2]=h;H[a+12>>2]=h;H[h+12>>2]=b;H[h+8>>2]=a;break C}a=31;if(c>>>0<=16777215){a=c>>>8|0;e=a+1048320>>>16&8;a=a<>>16&4;a=a<>>16&2;a=(a<>>15|0)-(b|(d|e))|0;a=(a<<1|c>>>a+21&1)+28|0}H[h+28>>2]=a;H[h+16>>2]=0;H[h+20>>2]=0;e=(a<<2)+51764|0;d=H[12866];b=1<>2]=h;H[h+24>>2]=e;break M}a=c<<((a|0)==31?0:25-(a>>>1|0)|0);b=H[e>>2];while(1){d=b;if((H[b+4>>2]&-8)==(c|0)){break D}b=a>>>29|0;a=a<<1;e=d+(b&4)|0;b=H[e+16>>2];if(b){continue}break}H[e+16>>2]=h;H[h+24>>2]=d}H[h+12>>2]=h;H[h+8>>2]=h;break C}d=f-40|0;a=b+8&7?-8-b&7:0;c=d-a|0;H[12868]=c;a=a+b|0;H[12871]=a;H[a+4>>2]=c|1;H[(b+d|0)+4>>2]=40;H[12872]=H[12987];a=(e+(e-39&7?39-e&7:0)|0)-47|0;c=a>>>0>>0?g:a;H[c+4>>2]=27;a=H[12980];H[c+16>>2]=H[12979];H[c+20>>2]=a;a=H[12978];H[c+8>>2]=H[12977];H[c+12>>2]=a;H[12979]=c+8;H[12978]=f;H[12977]=b;H[12980]=0;a=c+24|0;while(1){H[a+4>>2]=7;b=a+8|0;a=a+4|0;if(b>>>0>>0){continue}break}if((c|0)==(g|0)){break y}H[c+4>>2]=H[c+4>>2]&-2;e=c-g|0;H[g+4>>2]=e|1;H[c>>2]=e;if(e>>>0<=255){a=e>>>3|0;b=(a<<3)+51500|0;c=H[12865];a=1<>2]}H[b+8>>2]=g;H[a+12>>2]=g;H[g+12>>2]=b;H[g+8>>2]=a;break y}a=31;H[g+16>>2]=0;H[g+20>>2]=0;if(e>>>0<=16777215){a=e>>>8|0;d=a+1048320>>>16&8;a=a<>>16&4;a=a<>>16&2;a=(a<>>15|0)-(b|(c|d))|0;a=(a<<1|e>>>a+21&1)+28|0}H[g+28>>2]=a;d=(a<<2)+51764|0;c=H[12866];b=1<>2]=g;H[g+24>>2]=d;break O}a=e<<((a|0)==31?0:25-(a>>>1|0)|0);b=H[d>>2];while(1){c=b;if((e|0)==(H[b+4>>2]&-8)){break B}b=a>>>29|0;a=a<<1;d=c+(b&4)|0;b=H[d+16>>2];if(b){continue}break}H[d+16>>2]=g;H[g+24>>2]=c}H[g+12>>2]=g;H[g+8>>2]=g;break y}a=H[d+8>>2];H[a+12>>2]=h;H[d+8>>2]=h;H[h+24>>2]=0;H[h+12>>2]=d;H[h+8>>2]=a}a=j+8|0;break a}a=H[c+8>>2];H[a+12>>2]=g;H[c+8>>2]=g;H[g+24>>2]=0;H[g+12>>2]=c;H[g+8>>2]=a}a=H[12868];if(a>>>0<=i>>>0){break d}b=a-i|0;H[12868]=b;c=H[12871];a=c+i|0;H[12871]=a;H[a+4>>2]=b|1;H[c+4>>2]=i|3;a=c+8|0;break a}H[12064]=48;a=0;break a}P:{if(!f){break P}c=H[e+28>>2];a=(c<<2)+51764|0;Q:{if(H[a>>2]==(e|0)){H[a>>2]=b;if(b){break Q}j=fk(-2,c)&j;H[12866]=j;break P}H[f+(H[f+16>>2]==(e|0)?16:20)>>2]=b;if(!b){break P}}H[b+24>>2]=f;a=H[e+16>>2];if(a){H[b+16>>2]=a;H[a+24>>2]=b}a=H[e+20>>2];if(!a){break P}H[b+20>>2]=a;H[a+24>>2]=b}R:{if(d>>>0<=15){a=d+i|0;H[e+4>>2]=a|3;a=a+e|0;H[a+4>>2]=H[a+4>>2]|1;break R}H[e+4>>2]=i|3;H[h+4>>2]=d|1;H[d+h>>2]=d;if(d>>>0<=255){a=d>>>3|0;b=(a<<3)+51500|0;c=H[12865];a=1<>2]}H[b+8>>2]=h;H[a+12>>2]=h;H[h+12>>2]=b;H[h+8>>2]=a;break R}a=31;if(d>>>0<=16777215){a=d>>>8|0;g=a+1048320>>>16&8;a=a<>>16&4;a=a<>>16&2;a=(a<>>15|0)-(b|(c|g))|0;a=(a<<1|d>>>a+21&1)+28|0}H[h+28>>2]=a;H[h+16>>2]=0;H[h+20>>2]=0;c=(a<<2)+51764|0;T:{b=1<>2]=h;H[h+24>>2]=c;break U}a=d<<((a|0)==31?0:25-(a>>>1|0)|0);i=H[c>>2];while(1){b=i;if((H[b+4>>2]&-8)==(d|0)){break T}c=a>>>29|0;a=a<<1;c=b+(c&4)|0;i=H[c+16>>2];if(i){continue}break}H[c+16>>2]=h;H[h+24>>2]=b}H[h+12>>2]=h;H[h+8>>2]=h;break R}a=H[b+8>>2];H[a+12>>2]=h;H[b+8>>2]=h;H[h+24>>2]=0;H[h+12>>2]=b;H[h+8>>2]=a}a=e+8|0;break a}V:{if(!l){break V}c=H[b+28>>2];a=(c<<2)+51764|0;W:{if(H[a>>2]==(b|0)){H[a>>2]=e;if(e){break W}n=51464,o=fk(-2,c)&h,H[n>>2]=o;break V}H[(H[l+16>>2]==(b|0)?16:20)+l>>2]=e;if(!e){break V}}H[e+24>>2]=l;a=H[b+16>>2];if(a){H[e+16>>2]=a;H[a+24>>2]=e}a=H[b+20>>2];if(!a){break V}H[e+20>>2]=a;H[a+24>>2]=e}X:{if(d>>>0<=15){a=d+i|0;H[b+4>>2]=a|3;a=a+b|0;H[a+4>>2]=H[a+4>>2]|1;break X}H[b+4>>2]=i|3;H[j+4>>2]=d|1;H[d+j>>2]=d;if(k){a=k>>>3|0;c=(a<<3)+51500|0;e=H[12870];a=1<>2]}H[c+8>>2]=e;H[a+12>>2]=e;H[e+12>>2]=c;H[e+8>>2]=a}H[12870]=j;H[12867]=d}a=b+8|0}la=m+16|0;return a}function pg(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=O(0),A=0;e=la-144|0;la=e;d=yb(e,0,144);H[d+76>>2]=-1;H[d+44>>2]=a;H[d+32>>2]=14;H[d+84>>2]=a;t=c;h=la-304|0;la=h;c=b;b=I[c|0];a:{if(!b){break a}b:{c:{d:{e:{while(1){f:{a=b&255;g:{if((a|0)==32|a-9>>>0<5){while(1){b=c;c=c+1|0;a=I[b+1|0];if((a|0)==32|a-9>>>0<5){continue}break}Bb(d,0,0);while(1){a=H[d+4>>2];h:{if(a>>>0>2]){H[d+4>>2]=a+1;a=I[a|0];break h}a=Ga(d)}if((a|0)==32|a-9>>>0<5){continue}break}c=H[d+4>>2];if(H[d+104>>2]){c=c-1|0;H[d+4>>2]=c}a=c-H[d+8>>2]|0;e=a>>31;j=a;g=k+H[d+124>>2]|0;a=q+H[d+120>>2]|0;g=a>>>0>>0?g+1|0:g;c=a;a=j+a|0;f=e+g|0;q=a;k=a>>>0>>0?f+1|0:f;break g}i:{j:{k:{b=I[c|0];if((b|0)==37){a=I[c+1|0];if((a|0)==42){break k}if((a|0)!=37){break j}}Bb(d,0,0);b=((b|0)==37)+c|0;a=H[d+4>>2];l:{if(a>>>0>2]){H[d+4>>2]=a+1;a=I[a|0];break l}a=Ga(d)}if((a|0)!=I[b|0]){if(H[d+104>>2]){H[d+4>>2]=H[d+4>>2]-1}if((a|0)>-1){break a}s=0;if(u){break a}break c}a=q+1|0;k=a>>>0<1?k+1|0:k;q=a;break g}l=0;b=c+2|0;break i}if(!(I[c+2|0]!=36|a-48>>>0>=10)){a=I[c+1|0]-48|0;b=la-16|0;H[b+12>>2]=t;a=a>>>0>1?((a<<2)+t|0)-4|0:t;H[b+8>>2]=a+4;l=H[a>>2];b=c+3|0;break i}l=H[t>>2];t=t+4|0;b=c+1|0}s=0;c=0;if(I[b|0]-48>>>0<10){while(1){c=(I[b|0]+N(c,10)|0)-48|0;a=I[b+1|0];b=b+1|0;if(a-48>>>0<10){continue}break}}e=I[b|0];if((e|0)!=109){a=b}else{n=0;s=(l|0)!=0;e=I[b+1|0];o=0;a=b+1|0}b=a+1|0;i=3;m:{n:{switch(e-65|0){case 39:e=a+2|0;a=I[a+1|0]==104;b=a?e:b;i=a?-2:-1;break m;case 43:e=a+2|0;a=I[a+1|0]==108;b=a?e:b;i=a?3:1;break m;case 51:case 57:i=1;break m;case 11:i=2;break m;case 41:break m;case 0:case 2:case 4:case 5:case 6:case 18:case 23:case 26:case 32:case 34:case 35:case 36:case 37:case 38:case 40:case 45:case 46:case 47:case 50:case 52:case 55:break n;default:break d}}i=0;b=a}a=I[b|0];e=(a&47)==3;v=e?1:i;r=e?a|32:a;o:{if((r|0)==91){break o}p:{if((r|0)!=110){if((r|0)!=99){break p}c=(c|0)>1?c:1;break o}qg(l,v,q,k);break g}Bb(d,0,0);while(1){a=H[d+4>>2];q:{if(a>>>0>2]){H[d+4>>2]=a+1;a=I[a|0];break q}a=Ga(d)}if((a|0)==32|a-9>>>0<5){continue}break}a=H[d+4>>2];if(H[d+104>>2]){a=a-1|0;H[d+4>>2]=a}a=a-H[d+8>>2]|0;f=a>>31;j=a;k=k+H[d+124>>2]|0;a=q+H[d+120>>2]|0;k=a>>>0>>0?k+1|0:k;e=a;a=j+a|0;f=f+k|0;q=a;k=a>>>0>>0?f+1|0:f}j=c;p=c>>31;Bb(d,c,p);a=H[d+104>>2];e=H[d+4>>2];r:{if(a>>>0>e>>>0){H[d+4>>2]=e+1;break r}if((Ga(d)|0)<0){break d}a=H[d+104>>2]}if(a){H[d+4>>2]=H[d+4>>2]-1}a=16;s:{t:{u:{v:{w:{x:{y:{switch(r-88|0){default:a=r-65|0;if(a>>>0>6|!(1<>2]-H[d+8>>2]|0;if(H[d+120>>2]==(0-a|0)&H[d+124>>2]==(0-((a>>31)+((a|0)!=0)|0)|0)){break b}if(!l){break s}a=H[h+8>>2];c=H[h+12>>2];e=H[h>>2];f=H[h+4>>2];switch(v|0){case 2:break u;case 1:break v;case 0:break w;default:break s};case 3:case 11:case 27:if((r&239)==99){yb(h+32|0,-1,257);F[h+32|0]=0;if((r|0)!=115){break t}F[h+65|0]=0;F[h+46|0]=0;G[h+42>>1]=0;G[h+44>>1]=0;break t}e=I[b+1|0];f=(e|0)==94;yb(h+32|0,f,257);F[h+32|0]=0;a=f?b+2|0:b+1|0;z:{A:{B:{b=I[(f?2:1)+b|0];if((b|0)!=45){if((b|0)==93){break B}i=(e|0)!=94;break z}i=(e|0)!=94;F[h+78|0]=i;break A}i=(e|0)!=94;F[h+126|0]=i}a=a+1|0}b=a;while(1){a=I[b|0];C:{if((a|0)!=45){if(!a){break d}if((a|0)!=93){break C}break t}a=45;e=I[b+1|0];if(!e|(e|0)==93){break C}f=b+1|0;b=I[b-1|0];D:{if(e>>>0<=b>>>0){a=e;break D}while(1){b=b+1|0;F[b+(h+32|0)|0]=i;a=I[f|0];if(b>>>0>>0){continue}break}}b=f}F[(a+h|0)+33|0]=i;b=b+1|0;continue};case 23:a=8;break x;case 12:case 29:a=10;break x;case 1:case 2:case 4:case 5:case 6:case 7:case 8:case 10:case 16:case 18:case 19:case 20:case 21:case 22:case 25:case 26:case 28:case 30:case 31:break s;case 0:case 24:case 32:break x;case 17:break y}}a=0}j=0;f=0;c=0;g=0;i=0;w=la-16|0;la=w;E:{F:{G:{H:{I:{J:{if(a>>>0<=36){while(1){e=H[d+4>>2];K:{if(e>>>0>2]){H[d+4>>2]=e+1;e=I[e|0];break K}e=Ga(d)}if((e|0)==32|e-9>>>0<5){continue}break}L:{M:{switch(e-43|0){case 0:case 2:break M;default:break L}}i=(e|0)==45?-1:0;e=H[d+4>>2];if(e>>>0>2]){H[d+4>>2]=e+1;e=I[e|0];break L}e=Ga(d)}N:{if(!(a&-17|(e|0)!=48)){e=H[d+4>>2];O:{if(e>>>0>2]){H[d+4>>2]=e+1;e=I[e|0];break O}e=Ga(d)}if((e&-33)==88){a=16;e=H[d+4>>2];P:{if(e>>>0>2]){H[d+4>>2]=e+1;e=I[e|0];break P}e=Ga(d)}if(I[e+29057|0]<16){break I}if(!H[d+104>>2]){break F}H[d+4>>2]=H[d+4>>2]-1;break F}if(a){break N}a=8;break I}a=a?a:10;if(a>>>0>I[e+29057|0]){break N}if(H[d+104>>2]){H[d+4>>2]=H[d+4>>2]-1}Bb(d,0,0);H[12064]=28;a=0;c=0;break E}if((a|0)!=10){break I}c=e-48|0;if(c>>>0<=9){a=0;while(1){a=N(a,10)+c|0;c=H[d+4>>2];Q:{if(c>>>0>2]){H[d+4>>2]=c+1;e=I[c|0];break Q}e=Ga(d)}c=e-48|0;if(a>>>0<429496729?c>>>0<=9:0){continue}break}j=a}if(c>>>0>9){break J}g=dk(j,0,10,0);a=ma;while(1){e=c+g|0;f=e>>>0>>0?a+1|0:a;j=e;p=(f|0)==429496729&e>>>0>=2576980378|f>>>0>429496729;a=H[d+4>>2];R:{if(a>>>0>2]){H[d+4>>2]=a+1;e=I[a|0];break R}e=Ga(d)}c=e-48|0;if(p|c>>>0>9){break J}g=dk(j,f,10,0);a=ma;if((a|0)==-1&(c^-1)>>>0>=g>>>0|(a|0)!=-1){continue}break}a=10;break H}H[12064]=28;a=0;c=0;break E}a=10;if(c>>>0<=9){break H}break G}if(a-1&a){g=I[e+29057|0];if(g>>>0>>0){while(1){c=N(a,c)+g|0;e=H[d+4>>2];S:{if(e>>>0>2]){H[d+4>>2]=e+1;e=I[e|0];break S}e=Ga(d)}g=I[e+29057|0];if(c>>>0<119304647?g>>>0>>0:0){continue}break}j=c}if(a>>>0<=g>>>0){break H}c=a;while(1){m=dk(j,f,c,0);p=ma;g=g&255;if((p|0)==-1&(g^-1)>>>0>>0){break H}f=p;e=g+m|0;f=e>>>0>>0?f+1|0:f;j=e;p=a;e=H[d+4>>2];T:{if(e>>>0>2]){H[d+4>>2]=e+1;e=I[e|0];break T}e=Ga(d)}g=I[e+29057|0];if(p>>>0<=g>>>0){break H}eb(w,c,0,0,0,j,f,0,0);if(!(H[w+8>>2]|H[w+12>>2])){continue}break}break H}p=F[(N(a,23)>>>5&7)+29313|0];c=I[e+29057|0];if(c>>>0>>0){while(1){g=g<>2];U:{if(c>>>0>2]){H[d+4>>2]=c+1;e=I[c|0];break U}e=Ga(d)}c=I[e+29057|0];if(g>>>0<134217728?c>>>0>>0:0){continue}break}j=g}if(a>>>0<=c>>>0){break H}g=p;m=g&31;if((g&63)>>>0>=32){g=0;m=-1>>>m|0}else{g=-1>>>m|0;m=(1<>>m}if(!g&j>>>0>m>>>0){break H}while(1){x=c&255;c=p;e=c&31;if((c&63)>>>0>=32){f=j<>>32-e|f<>2];V:{if(c>>>0>2]){H[d+4>>2]=c+1;e=I[c|0];break V}e=Ga(d)}c=I[e+29057|0];if(x>>>0<=c>>>0){break H}if((f|0)==(g|0)&j>>>0<=m>>>0|f>>>0>>0){continue}break}}if(I[e+29057|0]>=a>>>0){break G}while(1){e=H[d+4>>2];W:{if(e>>>0>2]){H[d+4>>2]=e+1;c=I[e|0];break W}c=Ga(d)}if(I[c+29057|0]>>0){continue}break}H[12064]=68;i=0;j=-1;f=-1}if(H[d+104>>2]){H[d+4>>2]=H[d+4>>2]-1}X:{if((j|0)!=-1|(f|0)!=-1){break X}}a=i;e=a^j;c=a;a=e-a|0;j=f;f=c>>31;c=(j^f)-((c>>>0>e>>>0)+f|0)|0;break E}Bb(d,0,0);a=0;c=0}la=w+16|0;e=H[d+4>>2]-H[d+8>>2]|0;if(H[d+120>>2]==(0-e|0)&H[d+124>>2]==(0-((e>>31)+((e|0)!=0)|0)|0)){break b}if(!(!l|(r|0)!=112)){H[l>>2]=a;break s}qg(l,v,a,c);break s}y=l,z=rg(e,f,a,c),L[y>>2]=z;break s}y=l,A=ed(e,f,a,c),M[y>>3]=A;break s}H[l>>2]=e;H[l+4>>2]=f;H[l+8>>2]=a;H[l+12>>2]=c;break s}f=(r|0)==99;i=f?c+1|0:31;m=(v|0)!=1;Y:{if(!m){a=l;if(s){a=Ca(i<<2);if(!a){break e}}H[h+296>>2]=0;H[h+300>>2]=0;c=0;while(1){o=a;Z:{while(1){a=H[d+4>>2];_:{if(a>>>0>2]){H[d+4>>2]=a+1;a=I[a|0];break _}a=Ga(d)}if(!I[(a+h|0)+33|0]){break Z}F[h+27|0]=a;a=_c(h+28|0,h+27|0,1,h+296|0);if((a|0)==-2){continue}if((a|0)==-1){break f}if(o){H[(c<<2)+o>>2]=H[h+28>>2];c=c+1|0}if(!((c|0)==(i|0)&s)){continue}break}i=i<<1|1;a=zb(o,i<<2);if(a){continue}break f}break}if(h+296|0?H[h+296>>2]:0){break f}n=0;break Y}if(s){c=0;a=Ca(i);if(!a){break e}while(1){n=a;while(1){a=H[d+4>>2];$:{if(a>>>0>2]){H[d+4>>2]=a+1;a=I[a|0];break $}a=Ga(d)}if(!I[(a+h|0)+33|0]){o=0;break Y}F[c+n|0]=a;c=c+1|0;if((i|0)!=(c|0)){continue}break}o=0;i=i<<1|1;a=zb(n,i);if(a){continue}break}break d}c=0;if(l){while(1){a=H[d+4>>2];aa:{if(a>>>0>2]){H[d+4>>2]=a+1;a=I[a|0];break aa}a=Ga(d)}if(I[(a+h|0)+33|0]){F[c+l|0]=a;c=c+1|0;continue}else{o=0;n=l;break Y}}}while(1){a=H[d+4>>2];ba:{if(a>>>0>2]){H[d+4>>2]=a+1;a=I[a|0];break ba}a=Ga(d)}if(I[(a+h|0)+33|0]){continue}break}n=0;o=0}a=H[d+4>>2];if(H[d+104>>2]){a=a-1|0;H[d+4>>2]=a}e=a-H[d+8>>2]|0;i=e;a=e+H[d+120>>2]|0;g=H[d+124>>2]+(e>>31)|0;g=a>>>0>>0?g+1|0:g;if(!(a|g)|((a|0)!=(j|0)|(g|0)!=(p|0)?(r|0)==99:0)){break b}ca:{if(!s){break ca}if(!m){H[l>>2]=o;break ca}H[l>>2]=n}if(f){break s}if(o){H[(c<<2)+o>>2]=0}if(!n){n=0;break s}F[c+n|0]=0}a=H[d+4>>2]-H[d+8>>2]|0;e=a>>31;j=a;k=k+H[d+124>>2]|0;a=q+H[d+120>>2]|0;k=a>>>0>>0?k+1|0:k;c=a;a=j+a|0;k=e+k|0;k=a>>>0>>0?k+1|0:k;q=a;u=((l|0)!=0)+u|0}c=b+1|0;b=I[b+1|0];if(b){continue}break a}break}n=0;break d}n=0;o=0}if(u){break b}}u=-1}if(!s){break a}Aa(n);Aa(o)}la=h+304|0;la=d+144|0;return u}function ug(a,b,c,d,e,f,g,h,i){var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,I=0,J=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0;k=la-336|0;la=k;m=h;n=i&65535;o=d;q=e&65535;t=(e^i)&-2147483648;z=i>>>16&32767;C=e>>>16&32767;a:{b:{if(z-1>>>0<32766?C-1>>>0<=32765:0){break b}u=e&2147483647;l=u;j=d;if(!(!j&(l|0)==2147418112?!(b|c):l>>>0<2147418112)){D=d;t=e|32768;break a}u=i&2147483647;e=u;d=h;if(!(!d&(e|0)==2147418112?!(f|g):e>>>0<2147418112)){D=h;t=i|32768;b=f;c=g;break a}if(!(b|j|(l^2147418112|c))){if(!(d|f|(e^2147418112|g))){b=0;c=0;t=2147450880;break a}t=t|2147418112;b=0;c=0;break a}if(!(d|f|(e^2147418112|g))){b=0;c=0;break a}if(!(b|j|(c|l))){b=!(d|f|(e|g));D=b?0:D;t=b?2147450880:t;b=0;c=0;break a}if(!(d|f|(e|g))){t=t|2147418112;b=0;c=0;break a}if((l|0)==65535|l>>>0<65535){i=b;d=!(o|q);h=d<<6;j=Q(d?b:o)+32|0;b=Q(d?c:q);b=h+((b|0)==32?j:b)|0;fb(k+320|0,i,c,o,q,b-15|0);p=16-b|0;o=H[k+328>>2];q=H[k+332>>2];c=H[k+324>>2];b=H[k+320>>2]}if(e>>>0>65535){break b}d=!(m|n);e=d<<6;h=Q(d?f:m)+32|0;d=Q(d?g:n);d=e+((d|0)==32?h:d)|0;fb(k+304|0,f,g,m,n,d-15|0);p=(d+p|0)-16|0;m=H[k+312>>2];n=H[k+316>>2];f=H[k+304>>2];g=H[k+308>>2]}e=n|65536;B=e;u=m;d=m;j=e<<15|d>>>17;d=d<<15|g>>>17;h=0-d|0;e=j;i=1963258675-(j+((d|0)!=0)|0)|0;eb(k+288|0,d,j,0,0,h,i,0,0);j=H[k+296>>2];eb(k+272|0,0-j|0,0-(H[k+300>>2]+((j|0)!=0)|0)|0,0,0,h,i,0,0);h=H[k+280>>2];i=h<<1|H[k+276>>2]>>>31;h=H[k+284>>2]<<1|h>>>31;eb(k+256|0,i,h,0,0,d,e,0,0);j=h;h=H[k+264>>2];eb(k+240|0,i,j,0,0,0-h|0,0-(H[k+268>>2]+((h|0)!=0)|0)|0,0,0);h=H[k+248>>2];l=H[k+252>>2]<<1|h>>>31;i=h<<1|H[k+244>>2]>>>31;h=l;eb(k+224|0,i,h,0,0,d,e,0,0);h=H[k+232>>2];eb(k+208|0,i,l,0,0,0-h|0,0-(H[k+236>>2]+((h|0)!=0)|0)|0,0,0);h=H[k+216>>2];i=h<<1|H[k+212>>2]>>>31;h=H[k+220>>2]<<1|h>>>31;eb(k+192|0,i,h,0,0,d,e,0,0);j=h;h=H[k+200>>2];eb(k+176|0,i,j,0,0,0-h|0,0-(H[k+204>>2]+((h|0)!=0)|0)|0,0,0);j=d;h=H[k+184>>2];l=H[k+188>>2]<<1|h>>>31;d=h<<1|H[k+180>>2]>>>31;i=d-1|0;l=l-(d>>>0<1)|0;eb(k+160|0,j,e,0,0,i,l,0,0);e=f;eb(k+144|0,e<<15,g<<15|e>>>17,0,0,i,l,0,0);h=H[k+172>>2];n=H[k+160>>2];e=H[k+152>>2];d=n+e|0;m=H[k+164>>2];j=m+H[k+156>>2]|0;j=d>>>0>>0?j+1|0:j;e=d;d=j;n=(m|0)==(j|0)&n>>>0>e>>>0|j>>>0>>0;m=n+H[k+168>>2]|0;j=h;j=m>>>0>>0?j+1|0:j;h=m;m=!d&e>>>0>1|(d|0)!=0;h=h+m|0;j=h>>>0>>0?j+1|0:j;eb(k+112|0,i,l,0,0,0-h|0,0-(((h|0)!=0)+j|0)|0,0,0);eb(k+128|0,1-e|0,0-((e>>>0>1)+d|0)|0,0,0,i,l,0,0);O=(C-z|0)+p|0;e=H[k+116>>2];x=e;d=H[k+112>>2];j=e<<1|d>>>31;m=d<<1;n=j;e=j;i=H[k+140>>2];E=i;h=H[k+136>>2];j=i<<1|h>>>31;i=h<<1|H[k+132>>2]>>>31;d=i+m|0;l=e+j|0;l=d>>>0>>0?l+1|0:l;i=d;d=l;e=i;j=d-(e>>>0<13927)|0;e=e-13927|0;l=j;F=j;h=0;p=h;j=q|65536;z=j;C=o;v=(j&2147483647)<<1|o>>>31;y=dk(l,h,v,0);h=ma;r=y;s=h;h=c;J=(h&2147483647)<<1|b>>>31;G=J;w=0;l=(d|0)==(l|0)&e>>>0>>0|d>>>0>l>>>0;m=(d|0)==(n|0)&i>>>0>>0|d>>>0>>0;d=H[k+120>>2];j=H[k+124>>2]<<1|d>>>31;i=E>>>31|0;d=i+(d<<1|x>>>31)|0;j=d>>>0>>0?j+1|0:j;h=d;d=m+d|0;j=d>>>0>>0?j+1|0:j;i=d;d=l+d|0;h=d>>>0>>0?j+1|0:j;i=d-1|0;A=h-(d>>>0<1)|0;m=0;h=dk(G,w,A,m);d=h+r|0;j=ma+s|0;j=d>>>0>>0?j+1|0:j;h=j;r=(s|0)==(j|0)&d>>>0>>0|j>>>0>>0;j=0;y=j;x=j;R=0;j=o;P=c>>>31|0;G=P|j<<1;L=0;q=dk(i,x,G,L);l=q+d|0;j=ma+h|0;j=l>>>0>>0?j+1|0:j;n=l;q=j;j=(h|0)==(j|0)&d>>>0>l>>>0|h>>>0>j>>>0;d=j+r|0;h=0;h=d>>>0>>0?1:h;l=dk(v,I,A,m);d=l+d|0;j=ma+h|0;h=d>>>0>>0?j+1|0:j;o=dk(v,I,i,x);l=ma;s=d;x=dk(A,m,G,L);d=x+o|0;j=ma+l|0;j=d>>>0>>0?j+1|0:j;r=d;d=j;j=(l|0)==(j|0)&o>>>0>r>>>0|j>>>0>>0;o=s+d|0;l=h+j|0;l=o>>>0>>0?l+1|0:l;s=o;o=0;d=o+n|0;j=q+r|0;j=d>>>0>>0?j+1|0:j;h=j;o=(q|0)==(j|0)&n>>>0>d>>>0|j>>>0>>0;q=s+o|0;j=l;M=q;l=o>>>0>q>>>0?j+1|0:j;s=d;n=h;o=b<<1;q=c<<1|b>>>31;N=o&-2;r=dk(i,y,N,0);h=ma;x=e;e=dk(e,0,G,L);d=e+r|0;j=ma+h|0;j=d>>>0>>0?j+1|0:j;r=(h|0)==(j|0)&d>>>0>>0|h>>>0>j>>>0;h=d;e=j;S=r;E=dk(F,p,J,w);d=E+d|0;j=ma+j|0;j=d>>>0>>0?j+1|0:j;E=d;r=d;d=j;j=(j|0)==(e|0)&h>>>0>r>>>0|e>>>0>j>>>0;e=S+j|0;h=0;h=e>>>0>>0?1:h;r=e;e=s+e|0;j=h+n|0;j=e>>>0>>0?j+1|0:j;r=e;h=e;e=j;n=(j|0)==(n|0)&h>>>0>>0|j>>>0>>0;h=n+M|0;j=l;M=h;n=h>>>0>>0?j+1|0:j;I=dk(v,I,x,T);v=ma;l=dk(A,m,N,U);h=l+I|0;j=ma+v|0;j=h>>>0>>0?j+1|0:j;A=h;l=dk(J,w,i,y);i=h+l|0;h=j;j=j+ma|0;j=i>>>0>>0?j+1|0:j;m=i;y=dk(F,p,G,L);i=i+y|0;l=j+ma|0;l=i>>>0>>0?l+1|0:l;y=i;i=l;l=0;s=(i|0)==(j|0)&y>>>0>>0|i>>>0>>0;m=(h|0)==(j|0)&A>>>0>m>>>0|h>>>0>j>>>0;j=m+((h|0)==(v|0)&I>>>0>A>>>0|h>>>0>>0)|0;h=0;m=s+j|0;j=m;h=r+i|0;j=(j|l)+e|0;j=h>>>0>>0?j+1|0:j;s=h;m=j;h=(e|0)==(j|0)&h>>>0>>0|e>>>0>j>>>0;e=h+M|0;j=n;A=e;n=e>>>0>>0?j+1|0:j;r=s;v=E;F=dk(F,p,N,U);p=ma;h=dk(J,w,x,T);e=h+F|0;j=ma+p|0;j=e>>>0>>0?j+1|0:j;l=j;j=0;h=(l|0)==(p|0)&e>>>0>>0|l>>>0

>>0;e=l+v|0;j=(h|j)+d|0;j=e>>>0>>0?j+1|0:j;h=e;s=(d|0)==(j|0)&h>>>0>>0|d>>>0>j>>>0;l=j+y|0;p=0;i=p+h|0;d=i;l=d>>>0

>>0?l+1|0:l;e=(j|0)==(l|0)&d>>>0>>0|j>>>0>l>>>0;d=s+e|0;j=0;j=d>>>0>>0?1:j;e=d;d=d+r|0;j=j+m|0;j=d>>>0>>0?j+1|0:j;e=j;i=(m|0)==(j|0)&d>>>0>>0|j>>>0>>0;h=i+A|0;l=n;l=h>>>0>>0?l+1|0:l;i=l;c:{if((i|0)==131071|i>>>0<131071){j=C;l=z<<1|j>>>31;C=P|j<<1;z=l|R;eb(k+80|0,d,e,h,i,f,g,u,B);l=b<<17;b=0;c=H[k+88>>2];m=b-c|0;j=H[k+80>>2];n=H[k+84>>2];p=(j|0)!=0|(n|0)!=0;w=m-p|0;p=(l-(H[k+92>>2]+(b>>>0>>0)|0)|0)-(m>>>0

>>0)|0;m=0-j|0;n=0-(((j|0)!=0)+n|0)|0;b=O+16382|0;break c}d=(e&1)<<31|d>>>1;j=h<<31|e>>>1;e=j;h=(i&1)<<31|h>>>1;i=i>>>1|0;eb(k+96|0,d,j,h,i,f,g,u,B);o=0;m=H[k+104>>2];n=o-m|0;j=H[k+96>>2];q=H[k+100>>2];p=(j|0)!=0|(q|0)!=0;w=n-p|0;p=((b<<16)-(H[k+108>>2]+(m>>>0>o>>>0)|0)|0)-(n>>>0

>>0)|0;m=0-j|0;n=0-(((j|0)!=0)+q|0)|0;o=b;q=c;b=O+16383|0}if((b|0)>=32767){t=t|2147418112;b=0;c=0;break a}d:{if((b|0)>=1){c=w;j=p<<1|c>>>31;w=c<<1|n>>>31;p=j;o=h;q=i&65535|b<<16;b=m;j=n<<1|b>>>31;b=b<<1;break d}if((b|0)<=-113){b=0;c=0;break a}_b(k- -64|0,d,e,h,i,1-b|0);fb(k+48|0,o,q,C,z,b+112|0);d=H[k+64>>2];e=H[k+68>>2];o=H[k+72>>2];q=H[k+76>>2];eb(k+32|0,f,g,u,B,d,e,o,q);c=H[k+40>>2];i=c<<1;c=H[k+44>>2]<<1|c>>>31;m=H[k+36>>2];h=m;b=H[k+56>>2];m=h>>>31|i;i=b-m|0;l=H[k+60>>2]-((b>>>0>>0)+c|0)|0;c=H[k+32>>2];h=h<<1|c>>>31;c=c<<1;z=H[k+52>>2];j=z;b=H[k+48>>2];j=(h|0)==(j|0)&c>>>0>b>>>0|h>>>0>j>>>0;w=i-j|0;p=l-(i>>>0>>0)|0;i=b;b=i-c|0;j=z-((c>>>0>i>>>0)+h|0)|0}eb(k+16|0,f,g,u,B,3,0,0,0);eb(k,f,g,u,B,5,0,0,0);i=d;c=e;l=f;f=g;r=o;m=0;h=j+m|0;n=d&1;d=b+n|0;h=d>>>0>>0?h+1|0:h;o=d;g=h;l=(h|0)==(f|0)&d>>>0>l>>>0|f>>>0>>0;d=(h|0)==(m|0)&n>>>0>d>>>0|h>>>0>>0;b=d+w|0;j=p;j=b>>>0>>0?j+1|0:j;h=b;f=j;d=(h|0)==(u|0)&(j|0)==(B|0)?l:(B|0)==(j|0)&h>>>0>u>>>0|j>>>0>B>>>0;b=i+d|0;j=e;j=b>>>0>>0?j+1|0:j;d=b;b=j;e=(j|0)==(c|0)&d>>>0>>0|c>>>0>j>>>0;c=r+e|0;j=q;i=c;j=i>>>0>>0?j+1|0:j;c=j;e=d;l=i;d=H[k+20>>2];m=(d|0)==(g|0)&K[k+16>>2]>>0|d>>>0>>0;d=H[k+28>>2];i=H[k+24>>2];i=j>>>0<2147418112&((h|0)==(i|0)&(d|0)==(f|0)?m:(d|0)==(f|0)&i>>>0>>0|d>>>0>>0);d=e+i|0;j=b;j=d>>>0>>0?j+1|0:j;i=d;d=j;e=(j|0)==(b|0)&e>>>0>i>>>0|b>>>0>j>>>0;b=l+e|0;j=c;j=b>>>0>>0?j+1|0:j;e=j;l=b;b=H[k+4>>2];g=(b|0)==(g|0)&K[k>>2]>>0|b>>>0>>0;b=H[k+12>>2];c=H[k+8>>2];c=j>>>0<2147418112&((c|0)==(h|0)&(b|0)==(f|0)?g:(b|0)==(f|0)&c>>>0>>0|b>>>0>>0);b=c+i|0;j=d;j=b>>>0>>0?j+1|0:j;c=j;f=(d|0)==(j|0)&b>>>0>>0|d>>>0>j>>>0;d=l+f|0;j=e;D=d|D;t=t|(d>>>0>>0?j+1|0:j)}H[a>>2]=b;H[a+4>>2]=c;H[a+8>>2]=D;H[a+12>>2]=t;la=k+336|0}function tf(a,b,c,d,e,f,g,h,i,j,k){var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;l=la-560|0;la=l;H[l+548>>2]=k;H[l+552>>2]=b;H[l+96>>2]=19;q=Ra(l+136|0,l+144|0,l+96|0);b=H[q>>2];H[l+132>>2]=b;H[l+128>>2]=b+400;s=Fa(l+96|0);p=Fa(l+80|0);m=Fa(l- -64|0);n=Fa(l+48|0);r=Fa(l+32|0);k=la-16|0;la=k;b=l;a:{if(c){d=rf(d);na[H[H[d>>2]+44>>2]](k,d);c=H[k>>2];F[l+120|0]=c;F[l+121|0]=c>>>8;F[l+122|0]=c>>>16;F[l+123|0]=c>>>24;na[H[H[d>>2]+32>>2]](k,d);Ib(n,k);Ba(k);na[H[H[d>>2]+28>>2]](k,d);Ib(m,k);Ba(k);w=l,x=na[H[H[d>>2]+12>>2]](d)|0,H[w+116>>2]=x;w=l,x=na[H[H[d>>2]+16>>2]](d)|0,H[w+112>>2]=x;na[H[H[d>>2]+20>>2]](k,d);hb(s,k);Ba(k);na[H[H[d>>2]+24>>2]](k,d);Ib(p,k);Ba(k);c=na[H[H[d>>2]+36>>2]](d)|0;break a}d=qf(d);na[H[H[d>>2]+44>>2]](k,d);c=H[k>>2];F[l+120|0]=c;F[l+121|0]=c>>>8;F[l+122|0]=c>>>16;F[l+123|0]=c>>>24;na[H[H[d>>2]+32>>2]](k,d);Ib(n,k);Ba(k);na[H[H[d>>2]+28>>2]](k,d);Ib(m,k);Ba(k);w=l,x=na[H[H[d>>2]+12>>2]](d)|0,H[w+116>>2]=x;w=l,x=na[H[H[d>>2]+16>>2]](d)|0,H[w+112>>2]=x;na[H[H[d>>2]+20>>2]](k,d);hb(s,k);Ba(k);na[H[H[d>>2]+24>>2]](k,d);Ib(p,k);Ba(k);c=na[H[H[d>>2]+36>>2]](d)|0}H[b+28>>2]=c;la=k+16|0;H[j>>2]=H[i>>2];t=e&512;u=t>>>9|0;b=0;c=0;while(1){k=c;b:{c:{d:{e:{if((b|0)==4){break e}if(!kb(a,l+552|0)){break e}e=0;f:{g:{h:{i:{j:{switch(F[(l+120|0)+b|0]){case 1:if((b|0)==3){break c}c=h;e=H[a>>2];d=H[e+12>>2];k:{if((d|0)==H[e+16>>2]){d=na[H[H[e>>2]+36>>2]](e)|0;break k}d=H[d>>2]}if(na[H[H[h>>2]+12>>2]](c,8192,d)|0){sf(l+16|0,a);od(r,H[l+16>>2]);break i}H[f>>2]=H[f>>2]|4;a=0;break d;case 3:break h;case 0:break j;case 4:break f;case 2:break g;default:break b}}if((b|0)==3){break c}}while(1){if(!kb(a,l+552|0)){break c}c=h;e=H[a>>2];d=H[e+12>>2];l:{if((d|0)==H[e+16>>2]){d=na[H[H[e>>2]+36>>2]](e)|0;break l}d=H[d>>2]}if(!(na[H[H[h>>2]+12>>2]](c,8192,d)|0)){break c}sf(l+16|0,a);od(r,H[l+16>>2]);continue}}if(I[m+11|0]>>>7|0){c=H[m+4>>2]}else{c=I[m+11|0]}if(I[n+11|0]>>>7|0){d=H[n+4>>2]}else{d=I[n+11|0]}if((c|0)==(0-d|0)){break c}if(I[m+11|0]>>>7|0){c=H[m+4>>2]}else{c=I[m+11|0]}if(I[n+11|0]>>>7|0){d=H[n+4>>2]}else{d=I[n+11|0]}if(!(d?c:0)){if(I[m+11|0]>>>7|0){d=H[m+4>>2]}else{d=I[m+11|0]}e=H[a>>2];c=H[e+12>>2];m:{if((c|0)==H[e+16>>2]){c=na[H[H[e>>2]+36>>2]](e)|0;break m}c=H[c>>2]}if(d){if(I[m+11|0]>>>7|0){d=H[m>>2]}else{d=m}if((c|0)==H[d>>2]){Za(a);c=m;d=c;if(I[c+11|0]>>>7|0){c=H[m+4>>2]}else{c=I[m+11|0]}c=c>>>0>1?d:k;break b}F[g|0]=1;break c}if(I[n+11|0]>>>7|0){d=H[n>>2]}else{d=n}if(H[d>>2]!=(c|0)){break c}Za(a);F[g|0]=1;c=n;d=c;if(I[c+11|0]>>>7|0){c=H[n+4>>2]}else{c=I[n+11|0]}c=c>>>0>1?d:k;break b}d=H[a>>2];c=H[d+12>>2];n:{if((c|0)==H[d+16>>2]){c=na[H[H[d>>2]+36>>2]](d)|0;break n}c=H[c>>2]}if(I[m+11|0]>>>7|0){d=H[m>>2]}else{d=m}if((c|0)==H[d>>2]){Za(a);c=m;d=c;if(I[c+11|0]>>>7|0){c=H[m+4>>2]}else{c=I[m+11|0]}c=c>>>0>1?d:k;break b}d=H[a>>2];c=H[d+12>>2];o:{if((c|0)==H[d+16>>2]){c=na[H[H[d>>2]+36>>2]](d)|0;break o}c=H[c>>2]}if(I[n+11|0]>>>7|0){d=H[n>>2]}else{d=n}if((c|0)==H[d>>2]){Za(a);F[g|0]=1;c=n;d=c;if(I[c+11|0]>>>7|0){c=H[n+4>>2]}else{c=I[n+11|0]}c=c>>>0>1?d:k;break b}H[f>>2]=H[f>>2]|4;a=0;break d}if(!(b>>>0<2|k)){c=0;if(!((b|0)==2&I[l+123|0]!=0|u)){break b}}w=l,x=vb(p),H[w+8>>2]=x;H[l+16>>2]=H[l+8>>2];p:{if(!b|I[(b+l|0)+119|0]>1){break p}while(1){q:{w=l,x=Tb(p),H[w+8>>2]=x;if(H[l+16>>2]==H[l+8>>2]){break q}if(!(na[H[H[h>>2]+12>>2]](h,8192,H[H[l+16>>2]>>2])|0)){break q}H[l+16>>2]=H[l+16>>2]+4;continue}break}w=l,x=vb(p),H[w+8>>2]=x;if(I[r+11|0]>>>7|0){d=H[r+4>>2]}else{d=I[r+11|0]}c=H[l+16>>2]-H[l+8>>2]>>2;if(d>>>0>=c>>>0){w=l,x=Tb(r),H[w+8>>2]=x;e=pf(l+8|0,0-c|0);d=Tb(r);c=vb(p);o=la-32|0;la=o;H[o+16>>2]=d;H[o+24>>2]=e;H[o+8>>2]=c;while(1){c=H[o+24>>2]!=H[o+16>>2];if(!(!c|H[H[o+24>>2]>>2]!=H[H[o+8>>2]>>2])){H[o+24>>2]=H[o+24>>2]+4;H[o+8>>2]=H[o+8>>2]+4;continue}break}la=o+32|0;if(!c){break p}}w=l,x=vb(p),H[w>>2]=x;H[l+8>>2]=H[l>>2];H[l+16>>2]=H[l+8>>2]}H[l+8>>2]=H[l+16>>2];while(1){r:{w=l,x=Tb(p),H[w>>2]=x;if(H[l+8>>2]==H[l>>2]){break r}if(!kb(a,l+552|0)){break r}d=H[a>>2];c=H[d+12>>2];s:{if((c|0)==H[d+16>>2]){c=na[H[H[d>>2]+36>>2]](d)|0;break s}c=H[c>>2]}if((c|0)!=H[H[l+8>>2]>>2]){break r}Za(a);H[l+8>>2]=H[l+8>>2]+4;continue}break}if(!t){break c}w=l,x=Tb(p),H[w>>2]=x;if(H[l+8>>2]==H[l>>2]){break c}H[f>>2]=H[f>>2]|4;a=0;break d}while(1){t:{if(!kb(a,l+552|0)){break t}v=h;o=H[a>>2];d=H[o+12>>2];u:{if((d|0)==H[o+16>>2]){c=na[H[H[o>>2]+36>>2]](o)|0;break u}c=H[d>>2]}v:{if(na[H[H[h>>2]+12>>2]](v,2048,c)|0){d=H[j>>2];if((d|0)==H[l+548>>2]){jc(i,j,l+548|0);d=H[j>>2]}H[j>>2]=d+4;H[d>>2]=c;e=e+1|0;break v}if(I[s+11|0]>>>7|0){d=H[s+4>>2]}else{d=I[s+11|0]}if(!d|!e|(c|0)!=H[l+112>>2]){break t}c=H[l+132>>2];if((c|0)==H[l+128>>2]){jc(q,l+132|0,l+128|0);c=H[l+132>>2]}H[l+132>>2]=c+4;H[c>>2]=e;e=0}Za(a);continue}break}c=H[l+132>>2];if(!(!e|(c|0)==H[q>>2])){if(H[l+128>>2]==(c|0)){jc(q,l+132|0,l+128|0);c=H[l+132>>2]}H[l+132>>2]=c+4;H[c>>2]=e}w:{if(H[l+28>>2]<1){break w}x:{if(!$a(a,l+552|0)){d=H[a>>2];c=H[d+12>>2];y:{if((c|0)==H[d+16>>2]){c=na[H[H[d>>2]+36>>2]](d)|0;break y}c=H[c>>2]}if((c|0)==H[l+116>>2]){break x}}H[f>>2]=H[f>>2]|4;a=0;break d}while(1){Za(a);if(H[l+28>>2]<1){break w}z:{if(!$a(a,l+552|0)){c=h;e=H[a>>2];d=H[e+12>>2];A:{if((d|0)==H[e+16>>2]){d=na[H[H[e>>2]+36>>2]](e)|0;break A}d=H[d>>2]}if(na[H[H[h>>2]+12>>2]](c,2048,d)|0){break z}}H[f>>2]=H[f>>2]|4;a=0;break d}if(H[j>>2]==H[l+548>>2]){jc(i,j,l+548|0)}d=H[a>>2];c=H[d+12>>2];B:{if((c|0)==H[d+16>>2]){d=na[H[H[d>>2]+36>>2]](d)|0;break B}d=H[c>>2]}c=H[j>>2];H[j>>2]=c+4;H[c>>2]=d;H[l+28>>2]=H[l+28>>2]-1;continue}}c=k;if(H[i>>2]!=H[j>>2]){break b}H[f>>2]=H[f>>2]|4;a=0;break d}C:{if(!k){break C}e=1;while(1){if(I[k+11|0]>>>7|0){b=H[k+4>>2]}else{b=I[k+11|0]}if(b>>>0<=e>>>0){break C}D:{if(!$a(a,l+552|0)){c=H[a>>2];b=H[c+12>>2];E:{if((b|0)==H[c+16>>2]){b=na[H[H[c>>2]+36>>2]](c)|0;break E}b=H[b>>2]}if(I[k+11|0]>>>7|0){c=H[k>>2]}else{c=k}if((b|0)==H[c+(e<<2)>>2]){break D}}H[f>>2]=H[f>>2]|4;a=0;break d}Za(a);e=e+1|0;continue}}a=1;if(H[q>>2]==H[l+132>>2]){break d}a=0;H[l+16>>2]=0;jb(s,H[q>>2],H[l+132>>2],l+16|0);if(H[l+16>>2]){H[f>>2]=H[f>>2]|4;break d}a=1}Ba(r);Ba(n);Ba(m);Ba(p);Ba(s);b=H[q>>2];H[q>>2]=0;if(b){na[H[q+4>>2]](b)}la=l+560|0;return a}c=k}b=b+1|0;continue}}function Bf(a,b,c,d,e,f,g,h,i,j,k){var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;l=la-560|0;la=l;H[l+548>>2]=k;H[l+552>>2]=b;H[l+104>>2]=19;p=Ra(l+136|0,l+144|0,l+104|0);b=H[p>>2];H[l+132>>2]=b;H[l+128>>2]=b+400;r=Fa(l+104|0);o=Fa(l+88|0);m=Fa(l+72|0);n=Fa(l+56|0);q=Fa(l+40|0);k=la-16|0;la=k;b=l;a:{if(c){c=xf(d);na[H[H[c>>2]+44>>2]](k,c);d=H[k>>2];F[l+120|0]=d;F[l+121|0]=d>>>8;F[l+122|0]=d>>>16;F[l+123|0]=d>>>24;na[H[H[c>>2]+32>>2]](k,c);hb(n,k);Ba(k);na[H[H[c>>2]+28>>2]](k,c);hb(m,k);Ba(k);v=l,w=na[H[H[c>>2]+12>>2]](c)|0,F[v+119|0]=w;v=l,w=na[H[H[c>>2]+16>>2]](c)|0,F[v+118|0]=w;na[H[H[c>>2]+20>>2]](k,c);hb(r,k);Ba(k);na[H[H[c>>2]+24>>2]](k,c);hb(o,k);Ba(k);c=na[H[H[c>>2]+36>>2]](c)|0;break a}c=wf(d);na[H[H[c>>2]+44>>2]](k,c);d=H[k>>2];F[l+120|0]=d;F[l+121|0]=d>>>8;F[l+122|0]=d>>>16;F[l+123|0]=d>>>24;na[H[H[c>>2]+32>>2]](k,c);hb(n,k);Ba(k);na[H[H[c>>2]+28>>2]](k,c);hb(m,k);Ba(k);v=l,w=na[H[H[c>>2]+12>>2]](c)|0,F[v+119|0]=w;v=l,w=na[H[H[c>>2]+16>>2]](c)|0,F[v+118|0]=w;na[H[H[c>>2]+20>>2]](k,c);hb(r,k);Ba(k);na[H[H[c>>2]+24>>2]](k,c);hb(o,k);Ba(k);c=na[H[H[c>>2]+36>>2]](c)|0}H[b+36>>2]=c;la=k+16|0;H[j>>2]=H[i>>2];s=e&512;t=s>>>9|0;b=0;c=0;while(1){k=c;b:{c:{d:{e:{if((b|0)==4){break e}if(!lb(a,l+552|0)){break e}e=0;f:{g:{h:{i:{j:{switch(F[(l+120|0)+b|0]){case 1:if((b|0)==3){break c}c=Sa(a);if((c|0)>=0){c=J[H[h+8>>2]+((c&255)<<1)>>1]&8192}else{c=0}if(c){Af(l+24|0,a);pd(q,F[l+24|0]);break i}H[f>>2]=H[f>>2]|4;a=0;break d;case 3:break h;case 0:break j;case 4:break f;case 2:break g;default:break b}}if((b|0)==3){break c}}while(1){if(!lb(a,l+552|0)){break c}c=Sa(a);if((c|0)>=0){c=(J[H[h+8>>2]+((c&255)<<1)>>1]&8192)!=0}else{c=0}if(!c){break c}Af(l+24|0,a);pd(q,F[l+24|0]);continue}}if(I[m+11|0]>>>7|0){c=H[m+4>>2]}else{c=I[m+11|0]}if(I[n+11|0]>>>7|0){d=H[n+4>>2]}else{d=I[n+11|0]}if((c|0)==(0-d|0)){break c}if(I[m+11|0]>>>7|0){c=H[m+4>>2]}else{c=I[m+11|0]}if(I[n+11|0]>>>7|0){d=H[n+4>>2]}else{d=I[n+11|0]}if(!(d?c:0)){if(I[m+11|0]>>>7|0){c=H[m+4>>2]}else{c=I[m+11|0]}d=Sa(a);if(c){if(I[m+11|0]>>>7|0){c=H[m>>2]}else{c=m}if(I[c|0]==(d&255)){_a(a);c=m;d=c;if(I[c+11|0]>>>7|0){c=H[m+4>>2]}else{c=I[m+11|0]}c=c>>>0>1?d:k;break b}F[g|0]=1;break c}if(I[n+11|0]>>>7|0){c=H[n>>2]}else{c=n}if(I[c|0]!=(d&255)){break c}_a(a);F[g|0]=1;c=n;d=c;if(I[c+11|0]>>>7|0){c=H[n+4>>2]}else{c=I[n+11|0]}c=c>>>0>1?d:k;break b}d=Sa(a)&255;if(I[m+11|0]>>>7|0){c=H[m>>2]}else{c=m}if((d|0)==I[c|0]){_a(a);c=m;d=c;if(I[c+11|0]>>>7|0){c=H[m+4>>2]}else{c=I[m+11|0]}c=c>>>0>1?d:k;break b}d=Sa(a)&255;if(I[n+11|0]>>>7|0){c=H[n>>2]}else{c=n}if((d|0)==I[c|0]){_a(a);F[g|0]=1;c=n;d=c;if(I[c+11|0]>>>7|0){c=H[n+4>>2]}else{c=I[n+11|0]}c=c>>>0>1?d:k;break b}H[f>>2]=H[f>>2]|4;a=0;break d}if(!(b>>>0<2|k)){c=0;if(!((b|0)==2&I[l+123|0]!=0|t)){break b}}v=l,w=vb(o),H[v+16>>2]=w;H[l+24>>2]=H[l+16>>2];k:{if(!b|I[(b+l|0)+119|0]>1){break k}while(1){l:{v=l,w=Vb(o),H[v+16>>2]=w;if(H[l+24>>2]==H[l+16>>2]){break l}c=F[H[l+24>>2]];if((c|0)>=0){c=(J[H[h+8>>2]+((c&255)<<1)>>1]&8192)!=0}else{c=0}if(!c){break l}H[l+24>>2]=H[l+24>>2]+1;continue}break}v=l,w=vb(o),H[v+16>>2]=w;if(I[q+11|0]>>>7|0){d=H[q+4>>2]}else{d=I[q+11|0]}c=H[l+24>>2]-H[l+16>>2]|0;if(d>>>0>=c>>>0){v=l,w=Vb(q),H[v+16>>2]=w;d=vf(l+16|0,0-c|0);e=Vb(q);u=vb(o);c=la-32|0;la=c;H[c+16>>2]=e;H[c+24>>2]=d;H[c+8>>2]=u;while(1){d=H[c+24>>2]!=H[c+16>>2];if(!(!d|I[H[c+24>>2]]!=I[H[c+8>>2]])){H[c+24>>2]=H[c+24>>2]+1;H[c+8>>2]=H[c+8>>2]+1;continue}break}la=c+32|0;if(!d){break k}}v=l,w=vb(o),H[v+8>>2]=w;H[l+16>>2]=H[l+8>>2];H[l+24>>2]=H[l+16>>2]}H[l+16>>2]=H[l+24>>2];while(1){m:{v=l,w=Vb(o),H[v+8>>2]=w;if(H[l+16>>2]==H[l+8>>2]){break m}if(!lb(a,l+552|0)){break m}if((Sa(a)&255)!=I[H[l+16>>2]]){break m}_a(a);H[l+16>>2]=H[l+16>>2]+1;continue}break}if(!s){break c}v=l,w=Vb(o),H[v+8>>2]=w;if(H[l+16>>2]==H[l+8>>2]){break c}H[f>>2]=H[f>>2]|4;a=0;break d}while(1){n:{if(!lb(a,l+552|0)){break n}c=Sa(a);o:{if((c|0)>=0?J[H[h+8>>2]+((c&255)<<1)>>1]&2048:0){d=H[j>>2];if((d|0)==H[l+548>>2]){zf(i,j,l+548|0);d=H[j>>2]}H[j>>2]=d+1;F[d|0]=c;e=e+1|0;break o}if(I[r+11|0]>>>7|0){d=H[r+4>>2]}else{d=I[r+11|0]}if(!d|!e|I[l+118|0]!=(c&255)){break n}c=H[l+132>>2];if((c|0)==H[l+128>>2]){jc(p,l+132|0,l+128|0);c=H[l+132>>2]}H[l+132>>2]=c+4;H[c>>2]=e;e=0}_a(a);continue}break}c=H[l+132>>2];if(!(!e|(c|0)==H[p>>2])){if(H[l+128>>2]==(c|0)){jc(p,l+132|0,l+128|0);c=H[l+132>>2]}H[l+132>>2]=c+4;H[c>>2]=e}p:{if(H[l+36>>2]<1){break p}q:{if(!ab(a,l+552|0)){if((Sa(a)&255)==I[l+119|0]){break q}}H[f>>2]=H[f>>2]|4;a=0;break d}while(1){_a(a);if(H[l+36>>2]<1){break p}r:{if(!ab(a,l+552|0)){c=Sa(a);if((c|0)>=0){c=J[H[h+8>>2]+((c&255)<<1)>>1]&2048}else{c=0}if(c){break r}}H[f>>2]=H[f>>2]|4;a=0;break d}if(H[j>>2]==H[l+548>>2]){zf(i,j,l+548|0)}c=Sa(a);d=H[j>>2];H[j>>2]=d+1;F[d|0]=c;H[l+36>>2]=H[l+36>>2]-1;continue}}c=k;if(H[i>>2]!=H[j>>2]){break b}H[f>>2]=H[f>>2]|4;a=0;break d}s:{if(!k){break s}e=1;while(1){if(I[k+11|0]>>>7|0){b=H[k+4>>2]}else{b=I[k+11|0]}if(b>>>0<=e>>>0){break s}t:{if(!ab(a,l+552|0)){c=Sa(a)&255;if(I[k+11|0]>>>7|0){b=H[k>>2]}else{b=k}if((c|0)==I[b+e|0]){break t}}H[f>>2]=H[f>>2]|4;a=0;break d}_a(a);e=e+1|0;continue}}a=1;if(H[p>>2]==H[l+132>>2]){break d}a=0;H[l+24>>2]=0;jb(r,H[p>>2],H[l+132>>2],l+24|0);if(H[l+24>>2]){H[f>>2]=H[f>>2]|4;break d}a=1}Ba(q);Ba(n);Ba(m);Ba(o);Ba(r);b=H[p>>2];H[p>>2]=0;if(b){na[H[p+4>>2]](b)}la=l+560|0;return a}c=k}b=b+1|0;continue}}function Bg(a,b,c,d,e,f){a=a|0;b=+b;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,w=0,x=0,y=0,z=0,B=0,C=0;j=la-560|0;la=j;H[j+44>>2]=0;A(+b);g=v(1)|0;v(0)|0;a:{if((g|0)<-1?1:(g|0)<=-1){u=1;w=7874;b=-b;A(+b);g=v(1)|0;v(0)|0;break a}if(e&2048){u=1;w=7877;break a}u=e&1;w=u?7880:7875;C=!u}b:{if((g&2146435072)==2146435072){n=u+3|0;mb(a,32,c,n,e&-65537);db(a,w,u);d=f&32;db(a,b!=b?d?8674:9659:d?8841:9794,3);break b}s=j+16|0;c:{d:{e:{b=$d(b,j+44|0);b=b+b;if(b!=0){g=H[j+44>>2];H[j+44>>2]=g-1;x=f|32;if((x|0)!=97){break e}break c}x=f|32;if((x|0)==97){break c}k=H[j+44>>2];m=(d|0)<0?6:d;break d}k=g-29|0;H[j+44>>2]=k;b=b*268435456;m=(d|0)<0?6:d}q=(k|0)<0?j+48|0:j+336|0;h=q;while(1){d=h;if(b<4294967296&b>=0){g=~~b>>>0}else{g=0}H[d>>2]=g;h=h+4|0;b=(b-+(g>>>0))*1e9;if(b!=0){continue}break}f:{if((k|0)<1){d=k;g=h;i=q;break f}i=q;d=k;while(1){r=(d|0)<29?d:29;g=h-4|0;g:{if(i>>>0>g>>>0){break g}d=r;o=0;while(1){p=g;n=0;z=o;o=H[g>>2];l=d&31;if((d&63)>>>0>=32){B=o<>>32-l;l=o<>>0>o>>>0?n+1|0:n;l=o;o=ek(l,n,1e9);z=p;p=dk(o,ma,1e9,0);H[z>>2]=l-p;g=g-4|0;if(i>>>0<=g>>>0){continue}break}d=o;if(!d){break g}i=i-4|0;H[i>>2]=d}while(1){g=h;if(i>>>0>>0){h=g-4|0;if(!H[h>>2]){continue}}break}d=H[j+44>>2]-r|0;H[j+44>>2]=d;h=g;if((d|0)>0){continue}break}}h=(m+25|0)/9|0;if((d|0)<=-1){r=h+1|0;y=(x|0)==102;while(1){o=(d|0)<-9?9:0-d|0;h:{if(g>>>0>i>>>0){p=1e9>>>o|0;l=-1<>2];H[h>>2]=z+(d>>>o|0);d=N(p,d&l);h=h+4|0;if(h>>>0>>0){continue}break}i=H[i>>2]?i:i+4|0;if(!d){break h}H[g>>2]=d;g=g+4|0;break h}i=H[i>>2]?i:i+4|0}d=H[j+44>>2]+o|0;H[j+44>>2]=d;h=y?q:i;g=(r|0)>2?h+(r<<2)|0:g;if((d|0)<0){continue}break}}h=0;i:{if(g>>>0<=i>>>0){break i}h=N(q-i>>2,9);d=10;l=H[i>>2];if(l>>>0<10){break i}while(1){h=h+1|0;d=N(d,10);if(l>>>0>=d>>>0){continue}break}}d=(m-((x|0)==102?0:h)|0)-((x|0)==103&(m|0)!=0)|0;if((d|0)<(N(g-q>>2,9)-9|0)){p=d+9216|0;l=(p|0)/9|0;n=((l<<2)+((k|0)<0?j+48|4:j+340|0)|0)-4096|0;d=10;p=p-N(l,9)|0;if((p|0)<=7){while(1){d=N(d,10);p=p+1|0;if((p|0)!=8){continue}break}}p=H[n>>2];l=(p>>>0)/(d>>>0)|0;r=p-N(d,l)|0;k=n+4|0;j:{if(!((k|0)==(g|0)?r:1)){break j}b=(g|0)==(k|0)?1:1.5;k=d>>>1|0;t=k>>>0>r>>>0?.5:(k|0)==(r|0)?b:1.5;b=l&1?9007199254740994:9007199254740992;if(!(I[w|0]!=45|C)){t=-t;b=-b}k=p-r|0;H[n>>2]=k;if(b+t==b){break j}d=d+k|0;H[n>>2]=d;if(d>>>0>=1e9){while(1){H[n>>2]=0;n=n-4|0;if(n>>>0>>0){i=i-4|0;H[i>>2]=0}d=H[n>>2]+1|0;H[n>>2]=d;if(d>>>0>999999999){continue}break}}h=N(q-i>>2,9);d=10;k=H[i>>2];if(k>>>0<10){break j}while(1){h=h+1|0;d=N(d,10);if(k>>>0>=d>>>0){continue}break}}d=n+4|0;g=d>>>0>>0?d:g}while(1){l=g;k=g>>>0<=i>>>0;if(!k){g=l-4|0;if(!H[g>>2]){continue}}break}k:{if((x|0)!=103){o=e&8;break k}g=m?m:1;d=(g|0)>(h|0)&(h|0)>-5;m=(d?h^-1:-1)+g|0;f=(d?-1:-2)+f|0;o=e&8;if(o){break k}g=-9;l:{if(k){break l}k=H[l-4>>2];if(!k){break l}p=10;g=0;if((k>>>0)%10|0){break l}while(1){d=g;g=g+1|0;p=N(p,10);if(!((k>>>0)%(p>>>0)|0)){continue}break}g=d^-1}d=N(l-q>>2,9);if((f&-33)==70){o=0;d=(d+g|0)-9|0;d=(d|0)>0?d:0;m=(d|0)>(m|0)?m:d;break k}o=0;d=((d+h|0)+g|0)-9|0;d=(d|0)>0?d:0;m=(d|0)>(m|0)?m:d}r=(m|o)!=0;d=a;k=c;p=f&-33;if((p|0)==70){f=(h|0)>0?h:0}else{g=h>>31;g=hc(g+h^g,0,s);if((s-g|0)<=1){while(1){g=g-1|0;F[g|0]=48;if((s-g|0)<2){continue}break}}y=g-2|0;F[y|0]=f;F[g-1|0]=(h|0)<0?45:43;f=s-y|0}n=(f+(r+(m+u|0)|0)|0)+1|0;mb(d,32,k,n,e);db(a,w,u);mb(a,48,c,n,e^65536);m:{n:{o:{if((p|0)==70){d=j+16|8;h=j+16|9;f=i>>>0>q>>>0?q:i;i=f;while(1){g=hc(H[i>>2],0,h);p:{if((f|0)!=(i|0)){if(j+16>>>0>=g>>>0){break p}while(1){g=g-1|0;F[g|0]=48;if(j+16>>>0>>0){continue}break}break p}if((g|0)!=(h|0)){break p}F[j+24|0]=48;g=d}db(a,g,h-g|0);i=i+4|0;if(q>>>0>=i>>>0){continue}break}g=0;if(!r){break n}db(a,10036,1);if((m|0)<1|i>>>0>=l>>>0){break o}while(1){g=hc(H[i>>2],0,h);if(g>>>0>j+16>>>0){while(1){g=g-1|0;F[g|0]=48;if(j+16>>>0>>0){continue}break}}db(a,g,(m|0)<9?m:9);g=m-9|0;i=i+4|0;if(l>>>0<=i>>>0){break n}d=(m|0)>9;m=g;if(d){continue}break}break n}q:{if((m|0)<0){break q}f=i>>>0>>0?l:i+4|0;k=j+16|9;d=j+16|8;h=i;while(1){g=hc(H[h>>2],0,k);if((k|0)==(g|0)){F[j+24|0]=48;g=d}r:{if((h|0)!=(i|0)){if(j+16>>>0>=g>>>0){break r}while(1){g=g-1|0;F[g|0]=48;if(j+16>>>0>>0){continue}break}break r}db(a,g,1);g=g+1|0;if(o?0:(m|0)<=0){break r}db(a,10036,1)}l=g;g=k-g|0;db(a,l,(g|0)<(m|0)?g:m);m=m-g|0;h=h+4|0;if(f>>>0<=h>>>0){break q}if((m|0)>-1){continue}break}}mb(a,48,m+18|0,18,0);db(a,y,s-y|0);break m}g=m}mb(a,48,g+9|0,9,0)}break b}k=f&32;q=k?w+9|0:w;s:{if(d>>>0>11){break s}g=12-d|0;if(!g){break s}t=8;while(1){t=t*16;g=g-1|0;if(g){continue}break}if(I[q|0]==45){b=-(t+(-b-t));break s}b=b+t-t}g=H[j+44>>2];h=g>>31;g=hc(h^g+h,0,s);if((s|0)==(g|0)){F[j+15|0]=48;g=j+15|0}m=u|2;h=H[j+44>>2];l=g-2|0;F[l|0]=f+15;F[g-1|0]=(h|0)<0?45:43;g=e&8;i=j+16|0;while(1){f=i;o=k;if(P(b)<2147483648){h=~~b}else{h=-2147483648}F[i|0]=o|I[h+27008|0];b=(b-+(h|0))*16;i=f+1|0;if(!(!(g?1:(d|0)>0|b!=0)|(i-(j+16|0)|0)!=1)){F[f+1|0]=46;i=f+2|0}if(b!=0){continue}break}f=a;g=c;if(!d|((i-j|0)-18|0)>=(d|0)){k=(s-(l+(j+16|0)|0)|0)+i|0}else{k=((d+s|0)-l|0)+2|0}n=k+m|0;mb(f,32,g,n,e);db(a,q,m);mb(a,48,c,n,e^65536);d=i-(j+16|0)|0;db(a,j+16|0,d);f=d;d=s-l|0;mb(a,48,k-(f+d|0)|0,0,0);db(a,l,d)}mb(a,32,c,n,e^8192);la=j+560|0;return((c|0)>(n|0)?c:n)|0}function gd(a,b,c,d,e,f,g){var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;h=la-80|0;la=h;H[h+76>>2]=b;v=h+55|0;t=h+56|0;b=0;a:{b:while(1){c:{if((p|0)<0){break c}if((2147483647-p|0)<(b|0)){H[12064]=61;p=-1;break c}p=b+p|0}d:{e:{f:{l=H[h+76>>2];b=l;j=I[b|0];if(j){while(1){g:{j=j&255;h:{if(!j){j=b;break h}if((j|0)!=37){break g}j=b;while(1){if(I[b+1|0]!=37){break h}i=b+2|0;H[h+76>>2]=i;j=j+1|0;m=I[b+2|0];b=i;if((m|0)==37){continue}break}}b=j-l|0;if(a){db(a,l,b)}if(b){continue b}q=-1;j=1;i=h;b=H[h+76>>2];if(!(I[b+2|0]!=36|F[H[h+76>>2]+1|0]-48>>>0>=10)){q=F[b+1|0]-48|0;u=1;j=3}b=j+b|0;H[i+76>>2]=b;r=0;k=F[b|0];i=k-32|0;i:{if(i>>>0>31){j=b;break i}j=b;i=1<>2]=j;r=i|r;k=F[b+1|0];i=k-32|0;if(i>>>0>=32){break i}b=j;i=1<>>0>=10){break l}b=H[h+76>>2];if(I[b+2|0]!=36){break l}H[((F[b+1|0]<<2)+e|0)-192>>2]=10;n=H[((F[b+1|0]<<3)+d|0)-384>>2];u=1;b=b+3|0;break k}if(u){break f}u=0;n=0;if(a){b=H[c>>2];H[c>>2]=b+4;n=H[b>>2]}b=H[h+76>>2]+1|0}H[i+76>>2]=b;if((n|0)>-1){break j}n=0-n|0;r=r|8192;break j}n=ce(h+76|0);if((n|0)<0){break f}b=H[h+76>>2]}m=-1;m:{if(I[b|0]!=46){break m}if(I[b+1|0]==42){n:{if(F[b+2|0]-48>>>0>=10){break n}b=H[h+76>>2];if(I[b+3|0]!=36){break n}H[((F[b+2|0]<<2)+e|0)-192>>2]=10;m=H[((F[b+2|0]<<3)+d|0)-384>>2];b=b+4|0;H[h+76>>2]=b;break m}if(u){break f}if(a){b=H[c>>2];H[c>>2]=b+4;m=H[b>>2]}else{m=0}b=H[h+76>>2]+2|0;H[h+76>>2]=b;break m}H[h+76>>2]=b+1;m=ce(h+76|0);b=H[h+76>>2]}j=0;while(1){s=j;o=-1;if(F[b|0]-65>>>0>57){break a}k=b+1|0;H[h+76>>2]=k;j=F[b|0];b=k;j=I[(j+N(s,58)|0)+26479|0];if(j-1>>>0<8){continue}break}o:{p:{if((j|0)!=19){if(!j){break a}if((q|0)>=0){H[(q<<2)+e>>2]=j;b=(q<<3)+d|0;j=H[b+4>>2];H[h+64>>2]=H[b>>2];H[h+68>>2]=j;break p}if(!a){break d}be(h- -64|0,j,c,g);k=H[h+76>>2];break o}if((q|0)>-1){break a}}b=0;if(!a){continue b}}i=r&-65537;j=r&8192?i:r;o=0;q=7864;r=t;q:{r:{s:{t:{u:{v:{w:{x:{y:{z:{A:{B:{C:{D:{E:{F:{b=F[k-1|0];b=s?(b&15)==3?b&-33:b:b;switch(b-88|0){case 11:break q;case 9:case 13:case 14:case 15:break r;case 27:break w;case 12:case 17:break z;case 23:break A;case 0:case 32:break B;case 24:break C;case 22:break D;case 29:break E;case 1:case 2:case 3:case 4:case 5:case 6:case 7:case 8:case 10:case 16:case 18:case 19:case 20:case 21:case 25:case 26:case 28:case 30:case 31:break e;default:break F}}G:{switch(b-65|0){case 0:case 4:case 5:case 6:break r;case 2:break u;case 1:case 3:break e;default:break G}}if((b|0)==83){break v}break e}k=H[h+64>>2];i=H[h+68>>2];q=7864;break y}b=0;H:{switch(s&255){case 0:H[H[h+64>>2]>>2]=p;continue b;case 1:H[H[h+64>>2]>>2]=p;continue b;case 2:j=H[h+64>>2];H[j>>2]=p;H[j+4>>2]=p>>31;continue b;case 3:G[H[h+64>>2]>>1]=p;continue b;case 4:F[H[h+64>>2]]=p;continue b;case 6:H[H[h+64>>2]>>2]=p;continue b;case 7:break H;default:continue b}}j=H[h+64>>2];H[j>>2]=p;H[j+4>>2]=p>>31;continue b}m=m>>>0>8?m:8;j=j|8;b=120}l=t;w=b&32;s=H[h+68>>2];i=s;k=H[h+64>>2];if(i|k){while(1){l=l-1|0;F[l|0]=w|I[(k&15)+27008|0];x=!i&k>>>0>15|(i|0)!=0;s=i;i=i>>>4|0;k=(s&15)<<28|k>>>4;if(x){continue}break}}if(!(H[h+64>>2]|H[h+68>>2])|!(j&8)){break x}q=(b>>>4|0)+7864|0;o=2;break x}b=t;l=H[h+68>>2];i=l;k=H[h+64>>2];if(i|k){while(1){b=b-1|0;F[b|0]=k&7|48;s=!i&k>>>0>7|(i|0)!=0;l=i;i=i>>>3|0;k=(l&7)<<29|k>>>3;if(s){continue}break}}l=b;if(!(j&8)){break x}b=t-l|0;m=(b|0)<(m|0)?m:b+1|0;break x}b=H[h+68>>2];i=b;k=H[h+64>>2];if((b|0)<-1?1:(b|0)<=-1){i=0-(i+((k|0)!=0)|0)|0;k=0-k|0;H[h+64>>2]=k;H[h+68>>2]=i;o=1;q=7864;break y}if(j&2048){o=1;q=7865;break y}o=j&1;q=o?7866:7864}l=hc(k,i,t)}j=(m|0)>-1?j&-65537:j;b=H[h+68>>2];i=b;k=H[h+64>>2];if(!(m|((k|0)!=0|(b|0)!=0))){m=0;l=t;break e}b=!(i|k)+(t-l|0)|0;m=(b|0)<(m|0)?m:b;break e}b=H[h+64>>2];l=b?b:10046;b=Zd(l,m);r=b?b:m+l|0;j=i;m=b?b-l|0:m;break e}i=H[h+64>>2];if(m){break t}b=0;mb(a,32,n,0,j);break s}H[h+12>>2]=0;H[h+8>>2]=H[h+64>>2];H[h+64>>2]=h+8;m=-1;i=h+8|0}b=0;I:{while(1){l=H[i>>2];if(!l){break I}l=Xd(h+4|0,l);k=(l|0)<0;if(!(k|l>>>0>m-b>>>0)){i=i+4|0;b=b+l|0;if(m>>>0>b>>>0){continue}break I}break}o=-1;if(k){break a}}mb(a,32,n,b,j);if(!b){b=0;break s}i=0;k=H[h+64>>2];while(1){l=H[k>>2];if(!l){break s}l=Xd(h+4|0,l);i=l+i|0;if((i|0)>(b|0)){break s}db(a,h+4|0,l);k=k+4|0;if(b>>>0>i>>>0){continue}break}}mb(a,32,n,b,j^8192);b=(b|0)<(n|0)?n:b;continue b}b=na[f|0](a,M[h+64>>3],n,m,j,b)|0;continue b}F[h+55|0]=H[h+64>>2];m=1;l=v;j=i;break e}i=b+1|0;H[h+76>>2]=i;j=I[b+1|0];b=i;continue}}o=p;if(a){break a}if(!u){break d}b=1;while(1){a=H[(b<<2)+e>>2];if(a){be((b<<3)+d|0,a,c,g);o=1;b=b+1|0;if((b|0)!=10){continue}break a}break}o=1;if(b>>>0>=10){break a}while(1){if(H[(b<<2)+e>>2]){break f}b=b+1|0;if((b|0)!=10){continue}break}break a}o=-1;break a}k=r-l|0;m=(k|0)>(m|0)?k:m;i=m+o|0;b=(i|0)>(n|0)?i:n;mb(a,32,b,i,j);db(a,q,o);mb(a,48,b,i,j^65536);mb(a,48,m,k,0);db(a,l,k);mb(a,32,b,i,j^8192);continue}break}o=0}la=h+80|0;return o}function La(a,b,c,d,e,f,g,h,i){var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0;l=la-96|0;la=l;p=c;u=(g&131071)<<15|f>>>17;j=i&65535;s=j;k=h;B=k<<15|g>>>17;n=(e^i)&-2147483648;o=e&65535;w=o;m=d;x=o;o=0;C=(j&131071)<<15|k>>>17;D=i>>>16&32767;L=e>>>16&32767;a:{b:{if(L-1>>>0<=32765){j=0;if(D-1>>>0<32766){break b}}q=e&2147483647;v=q;j=d;if(!(!j&(q|0)==2147418112?!(b|c):q>>>0<2147418112)){y=d;n=e|32768;break a}e=i&2147483647;q=e;d=h;if(!(!d&(e|0)==2147418112?!(f|g):e>>>0<2147418112)){y=h;n=i|32768;b=f;c=g;break a}if(!(b|j|(v^2147418112|c))){if(!(d|f|(g|q))){n=2147450880;b=0;c=0;break a}n=n|2147418112;b=0;c=0;break a}if(!(d|f|(q^2147418112|g))){d=b|j;e=c|v;b=0;c=0;if(!(d|e)){n=2147450880;break a}n=n|2147418112;break a}if(!(b|j|(c|v))){b=0;c=0;break a}if(!(d|f|(g|q))){b=0;c=0;break a}if((v|0)==65535|v>>>0<65535){h=b;i=c;d=!(m|w);e=d<<6;j=Q(d?b:m)+32|0;b=Q(d?c:w);b=e+((b|0)==32?j:b)|0;fb(l+80|0,h,i,m,w,b-15|0);m=H[l+88>>2];p=H[l+84>>2];x=H[l+92>>2];t=16-b|0;b=H[l+80>>2]}j=t;if(q>>>0>65535){break b}c=!(k|s);d=c<<6;e=Q(c?f:k)+32|0;c=Q(c?g:s);c=d+((c|0)==32?e:c)|0;i=c;fb(l- -64|0,f,g,k,s,c-15|0);e=H[l+76>>2];c=e;h=H[l+72>>2];d=h;d=d<<15;e=H[l+68>>2];B=e>>>17|d;d=0;f=H[l+64>>2];u=d|((e&131071)<<15|f>>>17);C=(c&131071)<<15|h>>>17;j=(t-i|0)+16|0}t=j;d=u;c=b;s=0;q=dk(d,0,b,s);b=ma;E=b;e=f;z=e<<15&-32768;k=p;g=dk(z,0,k,0);f=g+q|0;e=ma+b|0;e=f>>>0>>0?e+1|0:e;h=f;j=f;i=0;g=dk(c,s,z,A);f=i+g|0;b=j;j=j+ma|0;j=f>>>0>>0?j+1|0:j;u=f;g=j;I=(b|0)==(j|0)&f>>>0>>0|b>>>0>j>>>0;M=dk(d,r,k,F);J=ma;p=m;f=dk(z,A,m,0);b=f+M|0;j=ma+J|0;N=b;m=dk(B,0,c,s);i=b+m|0;b=b>>>0>>0?j+1|0:j;f=b+ma|0;v=i;f=i>>>0>>0?f+1|0:f;w=f;j=f;f=(e|0)==(E|0)&h>>>0>>0|e>>>0>>0;h=e+v|0;j=f+j|0;q=h;j=h>>>0>>0?j+1|0:j;m=j;e=h;h=j;P=dk(d,r,p,O);E=ma;f=z;G=x|65536;z=o;i=dk(f,A,G,o);f=i+P|0;j=ma+E|0;j=f>>>0>>0?j+1|0:j;R=f;A=dk(B,S,k,F);i=f+A|0;o=j;f=j+ma|0;f=i>>>0>>0?f+1|0:f;K=i;C=C&2147483647|-2147483648;i=dk(c,s,C,0);c=K+i|0;s=f;j=f+ma|0;A=c;c=c>>>0>>0?j+1|0:j;x=I;i=0;f=i+e|0;j=h+A|0;I=f;h=f;e=x+f|0;x=f>>>0>>0?j+1|0:j;f=x;f=e>>>0>>0?f+1|0:f;h=e;i=f;t=(t+(D+L|0)|0)-16383|0;f=dk(p,O,B,S);e=ma;r=dk(d,r,G,z);d=r+f|0;j=ma+e|0;j=d>>>0>>0?j+1|0:j;r=d;f=(e|0)==(j|0)&f>>>0>d>>>0|e>>>0>j>>>0;e=j;D=f;f=dk(C,T,k,F);d=f+d|0;j=ma+j|0;j=d>>>0>>0?j+1|0:j;f=d;d=j;k=(j|0)==(e|0)&f>>>0>>0|e>>>0>j>>>0;j=D+k|0;e=0;e=j>>>0>>0?1:e;r=f;k=d;D=j;f=(b|0)==(w|0)&v>>>0>>0|b>>>0>w>>>0;b=f+((b|0)==(J|0)&M>>>0>N>>>0|b>>>0>>0)|0;j=0;j=b>>>0>>0?1:j;f=b;b=r+f|0;j=d+j|0;j=b>>>0>>0?j+1|0:j;F=b;d=j;j=(j|0)==(k|0)&b>>>0>>0|j>>>0>>0;b=D+j|0;f=e;f=b>>>0>>0?f+1|0:f;e=dk(C,T,G,z);b=e+b|0;j=ma+f|0;r=b;e=b>>>0>>0?j+1|0:j;k=dk(C,T,p,O);f=ma;p=dk(B,S,G,z);b=p+k|0;j=ma+f|0;j=b>>>0

>>0?j+1|0:j;p=b;b=j;j=(f|0)==(j|0)&k>>>0>p>>>0|f>>>0>j>>>0;k=b+r|0;e=e+j|0;e=k>>>0>>0?e+1|0:e;r=k;k=0;b=k+F|0;j=d+p|0;j=b>>>0>>0?j+1|0:j;f=j;k=(d|0)==(j|0)&b>>>0>>0|d>>>0>j>>>0;d=r+k|0;j=e;B=d;d=d>>>0>>0?j+1|0:j;p=b;k=f;f=(o|0)==(s|0)&R>>>0>K>>>0|o>>>0>s>>>0;e=f+((o|0)==(E|0)&P>>>0>R>>>0|o>>>0>>0)|0;f=e;e=f+((c|0)==(s|0)&A>>>0>>0|c>>>0>>0)|0;f=e;b=c+b|0;e=f+k|0;e=b>>>0>>0?e+1|0:e;o=b;c=b;b=e;e=(e|0)==(k|0)&c>>>0

>>0|e>>>0>>0;c=e+B|0;j=d;j=c>>>0>>0?j+1|0:j;d=c;k=d;e=(m|0)==(x|0)&q>>>0>I>>>0|m>>>0>x>>>0;d=e+((m|0)==(w|0)&q>>>0>>0|m>>>0>>0)|0;f=0;f=d>>>0>>0?1:f;m=d;d=d+o|0;e=b+f|0;e=d>>>0>>0?e+1|0:e;c=(b|0)==(e|0)&d>>>0>>0|b>>>0>e>>>0;b=k+c|0;j=b>>>0>>0?j+1|0:j;c=j;c:{if(j&65536){t=t+1|0;break c}m=g>>>31|0;j=c<<1|b>>>31;b=b<<1|e>>>31;c=j;j=e<<1|d>>>31;d=d<<1|i>>>31;e=j;o=u;j=g<<1|o>>>31;u=o<<1;g=j;j=i<<1|h>>>31;h=h<<1|m;i=j}if((t|0)>=32767){n=n|2147418112;b=0;c=0;break a}d:{if((t|0)<=0){f=1-t|0;if(f>>>0>=128){b=0;c=0;break a}j=t+127|0;fb(l+48|0,u,g,h,i,j);fb(l+32|0,d,e,b,c,j);_b(l+16|0,u,g,h,i,f);_b(l,d,e,b,c,f);u=(H[l+48>>2]|H[l+56>>2])!=0|(H[l+52>>2]|H[l+60>>2])!=0|(H[l+32>>2]|H[l+16>>2]);g=H[l+36>>2]|H[l+20>>2];h=H[l+40>>2]|H[l+24>>2];i=H[l+44>>2]|H[l+28>>2];d=H[l>>2];e=H[l+4>>2];c=H[l+12>>2];b=H[l+8>>2];break d}c=c&65535|t<<16}y=b|y;n=c|n;if(!(!h&(i|0)==-2147483648?!(g|u):(i|0)>-1)){j=e;b=d+1|0;j=b>>>0<1?j+1|0:j;f=b;c=j;f=(e|0)==(j|0)&d>>>0>f>>>0|e>>>0>j>>>0;d=f+y|0;e=n;y=d;n=d>>>0>>0?e+1|0:e;break a}if(h|u|(i^-2147483648|g)){b=d;c=e;break a}c=d&1;b=c+d|0;j=e;j=b>>>0>>0?j+1|0:j;f=b;c=j;e=(e|0)==(j|0)&d>>>0>f>>>0|e>>>0>j>>>0;d=e+y|0;j=n;y=d;n=d>>>0>>0?j+1|0:j}H[a>>2]=b;H[a+4>>2]=c;H[a+8>>2]=y;H[a+12>>2]=n;la=l+96|0}function bj(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0;h=la+-64|0;la=h;H[h+56>>2]=b;H[e>>2]=0;i=H[d+28>>2];H[h>>2]=i;H[i+4>>2]=H[i+4>>2]+1;i=nb(h);j=H[h>>2];k=H[j+4>>2]-1|0;H[j+4>>2]=k;if((k|0)==-1){na[H[H[j>>2]+8>>2]](j)}a:{b:{c:{d:{switch(g-65|0){case 0:case 32:If(a,f+24|0,h+56|0,c,e,i);break b;case 1:case 33:case 39:Hf(a,f+16|0,h+56|0,c,e,i);break b;case 34:g=h;i=a;j=b;b=na[H[H[a+8>>2]+12>>2]](a+8|0)|0;a=b;if(I[b+11|0]>>>7|0){a=H[a>>2]}k=a;if(I[b+11|0]>>>7|0){a=H[b>>2]}else{a=b}if(I[b+11|0]>>>7|0){b=H[b+4>>2]}else{b=I[b+11|0]}l=g,m=Ob(i,j,c,d,e,f,k,a+(b<<2)|0),H[l+56>>2]=m;break b;case 35:case 36:a=Jb(h+56|0,c,e,i,2);b=H[e>>2];e:{if(!(b&4|(a|0)<1|(a|0)>31)){H[f+12>>2]=a;break e}H[e>>2]=b|4}break b;case 3:g=H[8435];H[h+24>>2]=H[8434];H[h+28>>2]=g;g=H[8433];H[h+16>>2]=H[8432];H[h+20>>2]=g;g=H[8431];H[h+8>>2]=H[8430];H[h+12>>2]=g;g=H[8429];H[h>>2]=H[8428];H[h+4>>2]=g;l=h,m=Ob(a,b,c,d,e,f,h,h+32|0),H[l+56>>2]=m;break b;case 5:g=H[8443];H[h+24>>2]=H[8442];H[h+28>>2]=g;g=H[8441];H[h+16>>2]=H[8440];H[h+20>>2]=g;g=H[8439];H[h+8>>2]=H[8438];H[h+12>>2]=g;g=H[8437];H[h>>2]=H[8436];H[h+4>>2]=g;l=h,m=Ob(a,b,c,d,e,f,h,h+32|0),H[l+56>>2]=m;break b;case 7:a=Jb(h+56|0,c,e,i,2);b=H[e>>2];f:{if(!(b&4|(a|0)>23)){H[f+8>>2]=a;break f}H[e>>2]=b|4}break b;case 8:a=Jb(h+56|0,c,e,i,2);b=H[e>>2];g:{if(!(b&4|(a|0)<1|(a|0)>12)){H[f+8>>2]=a;break g}H[e>>2]=b|4}break b;case 41:a=Jb(h+56|0,c,e,i,3);b=H[e>>2];h:{if(!(b&4|(a|0)>365)){H[f+28>>2]=a;break h}H[e>>2]=b|4}break b;case 44:a=Jb(h+56|0,c,e,i,2);b=H[e>>2];i:{if(!(b&4|(a|0)>12)){H[f+16>>2]=a-1;break i}H[e>>2]=b|4}break b;case 12:a=Jb(h+56|0,c,e,i,2);b=H[e>>2];j:{if(!(b&4|(a|0)>59)){H[f+4>>2]=a;break j}H[e>>2]=b|4}break b;case 45:case 51:b=h+56|0;d=la-16|0;la=d;H[d+8>>2]=c;while(1){k:{if(!kb(b,d+8|0)){break k}a=i;c=H[b>>2];f=H[c+12>>2];l:{if((f|0)==H[c+16>>2]){c=na[H[H[c>>2]+36>>2]](c)|0;break l}c=H[f>>2]}if(!(na[H[H[i>>2]+12>>2]](a,8192,c)|0)){break k}Za(b);continue}break};if($a(b,d+8|0)){H[e>>2]=H[e>>2]|2}la=d+16|0;break b;case 47:g=h+56|0;b=na[H[H[a+8>>2]+8>>2]](a+8|0)|0;a=b;d=H[b+4>>2];m:{if(I[b+11|0]>>>7|0){break m}d=I[a+11|0]}if(I[b+23|0]>>>7|0){a=H[b+16>>2]}else{a=I[b+23|0]}n:{if((d|0)==(0-a|0)){H[e>>2]=H[e>>2]|4;break n}b=Xc(g,c,b,b+24|0,i,e,0)-b|0;a=H[f+8>>2];if(!(b|(a|0)!=12)){H[f+8>>2]=0;break n}if(!((b|0)!=12|(a|0)>11)){H[f+8>>2]=a+12}}break b;case 49:g=gb(h,33776,44);l=g,m=Ob(a,b,c,d,e,f,g,g+44|0),H[l+56>>2]=m;break b;case 17:H[h+16>>2]=H[8460];g=H[8459];H[h+8>>2]=H[8458];H[h+12>>2]=g;g=H[8457];H[h>>2]=H[8456];H[h+4>>2]=g;l=h,m=Ob(a,b,c,d,e,f,h,h+20|0),H[l+56>>2]=m;break b;case 18:a=Jb(h+56|0,c,e,i,2);b=H[e>>2];o:{if(!(b&4|(a|0)>60)){H[f>>2]=a;break o}H[e>>2]=b|4}break b;case 19:g=H[8471];H[h+24>>2]=H[8470];H[h+28>>2]=g;g=H[8469];H[h+16>>2]=H[8468];H[h+20>>2]=g;g=H[8467];H[h+8>>2]=H[8466];H[h+12>>2]=g;g=H[8465];H[h>>2]=H[8464];H[h+4>>2]=g;l=h,m=Ob(a,b,c,d,e,f,h,h+32|0),H[l+56>>2]=m;break b;case 54:a=Jb(h+56|0,c,e,i,1);b=H[e>>2];p:{if(!(b&4|(a|0)>6)){H[f+24>>2]=a;break p}H[e>>2]=b|4}break b;case 55:a=na[H[H[a>>2]+20>>2]](a,b,c,d,e,f)|0;break a;case 23:g=h;i=a;j=b;b=na[H[H[a+8>>2]+24>>2]](a+8|0)|0;a=b;if(I[b+11|0]>>>7|0){a=H[a>>2]}k=a;if(I[b+11|0]>>>7|0){a=H[b>>2]}else{a=b}if(I[b+11|0]>>>7|0){b=H[b+4>>2]}else{b=I[b+11|0]}l=g,m=Ob(i,j,c,d,e,f,k,a+(b<<2)|0),H[l+56>>2]=m;break b;case 56:Gf(f+20|0,h+56|0,c,e,i);break b;case 24:a=Jb(h+56|0,c,e,i,4);if(!(I[e|0]&4)){H[f+20>>2]=a-1900}break b;default:if((g|0)==37){break c}break;case 2:case 4:case 6:case 9:case 10:case 11:case 13:case 14:case 15:case 16:case 20:case 21:case 22:case 25:case 26:case 27:case 28:case 29:case 30:case 31:case 37:case 38:case 40:case 42:case 43:case 46:case 48:case 50:case 52:case 53:break d}}H[e>>2]=H[e>>2]|4;break b}d=la-16|0;la=d;H[d+8>>2]=c;b=6;f=h+56|0;q:{r:{if($a(f,d+8|0)){break r}b=4;a=i;c=H[f>>2];g=H[c+12>>2];s:{if((g|0)==H[c+16>>2]){c=na[H[H[c>>2]+36>>2]](c)|0;break s}c=H[g>>2]}if((na[H[H[i>>2]+52>>2]](a,c,0)|0)!=37){break r}b=2;if(!$a(Za(f),d+8|0)){break q}}H[e>>2]=H[e>>2]|b}la=d+16|0}a=H[h+56>>2]}la=h- -64|0;return a|0}function hj(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0;h=la-32|0;la=h;H[h+24>>2]=b;H[e>>2]=0;i=H[d+28>>2];H[h+8>>2]=i;H[i+4>>2]=H[i+4>>2]+1;i=pb(h+8|0);j=H[h+8>>2];k=H[j+4>>2]-1|0;H[j+4>>2]=k;if((k|0)==-1){na[H[H[j>>2]+8>>2]](j)}a:{b:{c:{d:{switch(g-65|0){case 0:case 32:Lf(a,f+24|0,h+24|0,c,e,i);break b;case 1:case 33:case 39:Kf(a,f+16|0,h+24|0,c,e,i);break b;case 34:g=h;i=a;j=b;b=na[H[H[a+8>>2]+12>>2]](a+8|0)|0;a=b;if(I[b+11|0]>>>7|0){a=H[a>>2]}k=a;if(I[b+11|0]>>>7|0){a=H[b>>2]}else{a=b}if(I[b+11|0]>>>7|0){b=H[b+4>>2]}else{b=I[b+11|0]}l=g,m=Pb(i,j,c,d,e,f,k,a+b|0),H[l+24>>2]=m;break b;case 35:case 36:a=Kb(h+24|0,c,e,i,2);b=H[e>>2];e:{if(!(b&4|(a|0)<1|(a|0)>31)){H[f+12>>2]=a;break e}H[e>>2]=b|4}break b;case 3:H[h+8>>2]=623865125;H[h+12>>2]=2032480100;l=h,m=Pb(a,b,c,d,e,f,h+8|0,h+16|0),H[l+24>>2]=m;break b;case 5:H[h+8>>2]=623728933;H[h+12>>2]=1680158061;l=h,m=Pb(a,b,c,d,e,f,h+8|0,h+16|0),H[l+24>>2]=m;break b;case 7:a=Kb(h+24|0,c,e,i,2);b=H[e>>2];f:{if(!(b&4|(a|0)>23)){H[f+8>>2]=a;break f}H[e>>2]=b|4}break b;case 8:a=Kb(h+24|0,c,e,i,2);b=H[e>>2];g:{if(!(b&4|(a|0)<1|(a|0)>12)){H[f+8>>2]=a;break g}H[e>>2]=b|4}break b;case 41:a=Kb(h+24|0,c,e,i,3);b=H[e>>2];h:{if(!(b&4|(a|0)>365)){H[f+28>>2]=a;break h}H[e>>2]=b|4}break b;case 44:a=Kb(h+24|0,c,e,i,2);b=H[e>>2];i:{if(!(b&4|(a|0)>12)){H[f+16>>2]=a-1;break i}H[e>>2]=b|4}break b;case 12:a=Kb(h+24|0,c,e,i,2);b=H[e>>2];j:{if(!(b&4|(a|0)>59)){H[f+4>>2]=a;break j}H[e>>2]=b|4}break b;case 45:case 51:a=h+24|0;b=la-16|0;la=b;H[b+8>>2]=c;while(1){k:{if(!lb(a,b+8|0)){break k}c=Sa(a);if((c|0)>=0){c=(J[H[i+8>>2]+((c&255)<<1)>>1]&8192)!=0}else{c=0}if(!c){break k}_a(a);continue}break};if(ab(a,b+8|0)){H[e>>2]=H[e>>2]|2}la=b+16|0;break b;case 47:g=h+24|0;b=na[H[H[a+8>>2]+8>>2]](a+8|0)|0;a=b;d=H[b+4>>2];l:{if(I[b+11|0]>>>7|0){break l}d=I[a+11|0]}if(I[b+23|0]>>>7|0){a=H[b+16>>2]}else{a=I[b+23|0]}m:{if((d|0)==(0-a|0)){H[e>>2]=H[e>>2]|4;break m}b=Zc(g,c,b,b+24|0,i,e,0)-b|0;a=H[f+8>>2];if(!(b|(a|0)!=12)){H[f+8>>2]=0;break m}if(!((b|0)!=12|(a|0)>11)){H[f+8>>2]=a+12}}break b;case 49:g=I[33700]|I[33701]<<8|(I[33702]<<16|I[33703]<<24);F[h+15|0]=g;F[h+16|0]=g>>>8;F[h+17|0]=g>>>16;F[h+18|0]=g>>>24;g=I[33697]|I[33698]<<8|(I[33699]<<16|I[33700]<<24);H[h+8>>2]=I[33693]|I[33694]<<8|(I[33695]<<16|I[33696]<<24);H[h+12>>2]=g;l=h,m=Pb(a,b,c,d,e,f,h+8|0,h+19|0),H[l+24>>2]=m;break b;case 17:F[h+12|0]=I[33708];H[h+8>>2]=I[33704]|I[33705]<<8|(I[33706]<<16|I[33707]<<24);l=h,m=Pb(a,b,c,d,e,f,h+8|0,h+13|0),H[l+24>>2]=m;break b;case 18:a=Kb(h+24|0,c,e,i,2);b=H[e>>2];n:{if(!(b&4|(a|0)>60)){H[f>>2]=a;break n}H[e>>2]=b|4}break b;case 19:H[h+8>>2]=624576549;H[h+12>>2]=1394948685;l=h,m=Pb(a,b,c,d,e,f,h+8|0,h+16|0),H[l+24>>2]=m;break b;case 54:a=Kb(h+24|0,c,e,i,1);b=H[e>>2];o:{if(!(b&4|(a|0)>6)){H[f+24>>2]=a;break o}H[e>>2]=b|4}break b;case 55:a=na[H[H[a>>2]+20>>2]](a,b,c,d,e,f)|0;break a;case 23:g=h;i=a;j=b;b=na[H[H[a+8>>2]+24>>2]](a+8|0)|0;a=b;if(I[b+11|0]>>>7|0){a=H[a>>2]}k=a;if(I[b+11|0]>>>7|0){a=H[b>>2]}else{a=b}if(I[b+11|0]>>>7|0){b=H[b+4>>2]}else{b=I[b+11|0]}l=g,m=Pb(i,j,c,d,e,f,k,a+b|0),H[l+24>>2]=m;break b;case 56:Jf(f+20|0,h+24|0,c,e,i);break b;case 24:a=Kb(h+24|0,c,e,i,4);if(!(I[e|0]&4)){H[f+20>>2]=a-1900}break b;default:if((g|0)==37){break c}break;case 2:case 4:case 6:case 9:case 10:case 11:case 13:case 14:case 15:case 16:case 20:case 21:case 22:case 25:case 26:case 27:case 28:case 29:case 30:case 31:case 37:case 38:case 40:case 42:case 43:case 46:case 48:case 50:case 52:case 53:break d}}H[e>>2]=H[e>>2]|4;break b}a=la-16|0;la=a;H[a+8>>2]=c;b=6;c=h+24|0;p:{q:{if(ab(c,a+8|0)){break q}b=4;if(((m=i,n=Sa(c),o=0,l=H[H[i>>2]+36>>2],na[l](m|0,n|0,o|0)|0)|0)!=37){break q}b=2;if(!ab(_a(c),a+8|0)){break p}}H[e>>2]=H[e>>2]|b}la=a+16|0}a=H[h+24>>2]}la=h+32|0;return a|0}function ob(a,b,c,d,e,f,g,h,i){var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;k=la-112|0;la=k;l=h;o=i&2147483647;m=c-(b>>>0<1)|0;j=b-1|0;q=(j|0)==-1&(m|0)==-1;r=d;p=(c|0)==(m|0)&b>>>0>j>>>0|c>>>0>m>>>0;n=d+p|0;m=e&2147483647;j=m;j=n>>>0

>>0?j+1|0:j;p=n-1|0;a:{b:{j=j-(n>>>0<1)|0;if(!((p|0)==-1&(j|0)==2147418111?q:j>>>0>2147418111)){j=f;n=g-(j>>>0<1)|0;j=j-1|0;q=(j|0)!=-1|(n|0)!=-1;p=(g|0)==(n|0)&f>>>0>j>>>0|g>>>0>n>>>0;n=p+l|0;j=o;j=n>>>0

>>0?j+1|0:j;p=n;n=n-1|0;j=j-(p>>>0<1)|0;if((n|0)==-1&(j|0)==2147418111?q:(j|0)==2147418111&(n|0)!=-1|j>>>0<2147418111){break b}}if(!(!r&(m|0)==2147418112?!(b|c):m>>>0<2147418112)){h=d;i=e|32768;f=b;g=c;break a}if(!(!l&(o|0)==2147418112?!(f|g):o>>>0<2147418112)){i=i|32768;break a}if(!(b|r|(m^2147418112|c))){j=d;d=!(b^f|d^h|(c^g|e^i^-2147483648));h=d?0:j;i=d?2147450880:e;f=d?0:b;g=d?0:c;break a}if(!(f|l|(o^2147418112|g))){break a}if(!(b|r|(c|m))){if(f|l|(g|o)){break a}f=b&f;g=c&g;h=d&h;i=e&i;break a}if(f|l|(g|o)){break b}f=b;g=c;h=d;i=e;break a}q=(l|0)==(r|0)&(m|0)==(o|0)?(c|0)==(g|0)&b>>>0>>0|c>>>0>>0:(m|0)==(o|0)&l>>>0>r>>>0|m>>>0>>0;j=q;n=j?f:b;o=j?g:c;l=j?i:e;r=l;m=j?h:d;j=l&65535;i=q?e:i;e=i;h=q?d:h;p=i>>>16&32767;l=l>>>16&32767;if(!l){d=!(j|m);i=d<<6;l=Q(d?n:m)+32|0;d=Q(d?o:j);d=i+((d|0)==32?l:d)|0;fb(k+96|0,n,o,m,j,d-15|0);m=H[k+104>>2];n=H[k+96>>2];o=H[k+100>>2];l=16-d|0;j=H[k+108>>2]}f=q?b:f;g=q?c:g;i=e&65535;if(!p){b=!(h|i);c=b<<6;d=Q(b?f:h)+32|0;b=Q(b?g:i);b=c+((b|0)==32?d:b)|0;fb(k+80|0,f,g,h,i,b-15|0);p=16-b|0;h=H[k+88>>2];i=H[k+92>>2];g=H[k+84>>2];f=H[k+80>>2]}b=h;c=i<<3|b>>>29;h=b<<3|g>>>29;i=c|524288;b=m;d=j<<3|b>>>29;m=b<<3|o>>>29;s=d;q=e^r;b=f;j=g<<3|b>>>29;b=b<<3;c=j;d=l-p|0;e=b;c:{if(!d){break c}if(d>>>0>127){h=0;i=0;j=0;e=1;break c}fb(k- -64|0,b,c,h,i,128-d|0);_b(k+48|0,b,c,h,i,d);h=H[k+56>>2];i=H[k+60>>2];j=H[k+52>>2];e=H[k+48>>2]|((H[k+64>>2]|H[k+72>>2])!=0|(H[k+68>>2]|H[k+76>>2])!=0)}f=j;d=m;p=s|524288;b=n;j=o<<3|b>>>29;c=b<<3;d:{if((q|0)<-1?1:(q|0)<=-1){o=e;b=c-e|0;m=h;n=d-h|0;e=(f|0)==(j|0)&c>>>0>>0|f>>>0>j>>>0;h=n-e|0;c=j-((c>>>0>>0)+f|0)|0;i=(p-((d>>>0>>0)+i|0)|0)-(e>>>0>n>>>0)|0;if(!(b|h|(c|i))){f=0;g=0;h=0;i=0;break a}if(i>>>0>524287){break d}f=b;d=!(h|i);e=d<<6;g=Q(d?b:h)+32|0;b=Q(d?c:i);b=e+((b|0)==32?g:b)|0;b=b-12|0;fb(k+32|0,f,c,h,i,b);l=l-b|0;h=H[k+40>>2];i=H[k+44>>2];b=H[k+32>>2];c=H[k+36>>2];break d}b=c;g=b+e|0;c=f+j|0;c=b>>>0>g>>>0?c+1|0:c;b=g;g=(c|0)==(f|0)&e>>>0>b>>>0|c>>>0>>0;e=d;f=d+h|0;d=i+p|0;d=e>>>0>f>>>0?d+1|0:d;e=g+f|0;h=e;i=h>>>0>>0?d+1|0:d;if(!(i&1048576)){break d}b=b&1|((c&1)<<31|b>>>1);c=h<<31|c>>>1;l=l+1|0;h=(i&1)<<31|h>>>1;i=i>>>1|0}o=0;r=r&-2147483648;if((l|0)>=32767){h=o;i=r|2147418112;f=0;g=0;break a}e=0;e:{if((l|0)>0){e=l;break e}fb(k+16|0,b,c,h,i,l+127|0);_b(k,b,c,h,i,1-l|0);b=H[k>>2]|((H[k+16>>2]|H[k+24>>2])!=0|(H[k+20>>2]|H[k+28>>2])!=0);c=H[k+4>>2];h=H[k+8>>2];i=H[k+12>>2]}j=(c&7)<<29|b>>>3;l=b&7;b=j+(l>>>0>4)|0;d=h<<29|c>>>3;c=b>>>0>>0?d+1|0:d;f=b;g=c;b=(d|0)==(c|0)&b>>>0>>0|c>>>0>>0;d=o|((i&7)<<29|h>>>3);b=b+d|0;j=r|(i>>>3&65535|e<<16);h=b;i=b>>>0>>0?j+1|0:j;f:{if((l|0)==4){j=i;c=0;d=g+c|0;e=f&1;b=f+e|0;d=b>>>0>>0?d+1|0:d;f=b;g=d;c=(c|0)==(d|0)&b>>>0>>0|c>>>0>d>>>0;b=c+h|0;h=b;i=b>>>0>>0?j+1|0:j;break f}if(!l){break a}}}H[a>>2]=f;H[a+4>>2]=g;H[a+8>>2]=h;H[a+12>>2]=i;la=k+112|0}function Aa(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;a:{if(!a){break a}d=a-8|0;b=H[a-4>>2];a=b&-8;f=d+a|0;b:{if(b&1){break b}if(!(b&3)){break a}b=H[d>>2];d=d-b|0;if(d>>>0>>0<=255){e=H[d+8>>2];b=b>>>3|0;c=H[d+12>>2];if((c|0)==(e|0)){i=51460,j=H[12865]&fk(-2,b),H[i>>2]=j;break b}H[e+12>>2]=c;H[c+8>>2]=e;break b}h=H[d+24>>2];b=H[d+12>>2];c:{if((d|0)!=(b|0)){c=H[d+8>>2];H[c+12>>2]=b;H[b+8>>2]=c;break c}d:{e=d+20|0;c=H[e>>2];if(c){break d}e=d+16|0;c=H[e>>2];if(c){break d}b=0;break c}while(1){g=e;b=c;e=b+20|0;c=H[e>>2];if(c){continue}e=b+16|0;c=H[b+16>>2];if(c){continue}break}H[g>>2]=0}if(!h){break b}e=H[d+28>>2];c=(e<<2)+51764|0;e:{if(H[c>>2]==(d|0)){H[c>>2]=b;if(b){break e}i=51464,j=H[12866]&fk(-2,e),H[i>>2]=j;break b}H[h+(H[h+16>>2]==(d|0)?16:20)>>2]=b;if(!b){break b}}H[b+24>>2]=h;c=H[d+16>>2];if(c){H[b+16>>2]=c;H[c+24>>2]=b}c=H[d+20>>2];if(!c){break b}H[b+20>>2]=c;H[c+24>>2]=b;break b}b=H[f+4>>2];if((b&3)!=3){break b}H[12867]=a;H[f+4>>2]=b&-2;H[d+4>>2]=a|1;H[a+d>>2]=a;return}if(d>>>0>=f>>>0){break a}b=H[f+4>>2];if(!(b&1)){break a}f:{if(!(b&2)){if(H[12871]==(f|0)){H[12871]=d;a=H[12868]+a|0;H[12868]=a;H[d+4>>2]=a|1;if(H[12870]!=(d|0)){break a}H[12867]=0;H[12870]=0;return}if(H[12870]==(f|0)){H[12870]=d;a=H[12867]+a|0;H[12867]=a;H[d+4>>2]=a|1;H[a+d>>2]=a;return}a=(b&-8)+a|0;g:{if(b>>>0<=255){e=H[f+8>>2];b=b>>>3|0;c=H[f+12>>2];if((c|0)==(e|0)){i=51460,j=H[12865]&fk(-2,b),H[i>>2]=j;break g}H[e+12>>2]=c;H[c+8>>2]=e;break g}h=H[f+24>>2];b=H[f+12>>2];h:{if((f|0)!=(b|0)){c=H[f+8>>2];H[c+12>>2]=b;H[b+8>>2]=c;break h}i:{e=f+20|0;c=H[e>>2];if(c){break i}e=f+16|0;c=H[e>>2];if(c){break i}b=0;break h}while(1){g=e;b=c;e=b+20|0;c=H[e>>2];if(c){continue}e=b+16|0;c=H[b+16>>2];if(c){continue}break}H[g>>2]=0}if(!h){break g}e=H[f+28>>2];c=(e<<2)+51764|0;j:{if(H[c>>2]==(f|0)){H[c>>2]=b;if(b){break j}i=51464,j=H[12866]&fk(-2,e),H[i>>2]=j;break g}H[h+(H[h+16>>2]==(f|0)?16:20)>>2]=b;if(!b){break g}}H[b+24>>2]=h;c=H[f+16>>2];if(c){H[b+16>>2]=c;H[c+24>>2]=b}c=H[f+20>>2];if(!c){break g}H[b+20>>2]=c;H[c+24>>2]=b}H[d+4>>2]=a|1;H[a+d>>2]=a;if(H[12870]!=(d|0)){break f}H[12867]=a;return}H[f+4>>2]=b&-2;H[d+4>>2]=a|1;H[a+d>>2]=a}if(a>>>0<=255){a=a>>>3|0;b=(a<<3)+51500|0;c=H[12865];a=1<>2]}H[b+8>>2]=d;H[a+12>>2]=d;H[d+12>>2]=b;H[d+8>>2]=a;return}e=31;H[d+16>>2]=0;H[d+20>>2]=0;if(a>>>0<=16777215){b=a>>>8|0;g=b+1048320>>>16&8;b=b<>>16&4;b=b<>>16&2;b=(b<>>15|0)-(c|(e|g))|0;e=(b<<1|a>>>b+21&1)+28|0}H[d+28>>2]=e;g=(e<<2)+51764|0;l:{m:{c=H[12866];b=1<>2]=d;H[d+24>>2]=g;break n}e=a<<((e|0)==31?0:25-(e>>>1|0)|0);b=H[g>>2];while(1){c=b;if((H[b+4>>2]&-8)==(a|0)){break m}b=e>>>29|0;e=e<<1;g=c+(b&4)|0;b=H[g+16>>2];if(b){continue}break}H[g+16>>2]=d;H[d+24>>2]=c}H[d+12>>2]=d;H[d+8>>2]=d;break l}a=H[c+8>>2];H[a+12>>2]=d;H[c+8>>2]=d;H[d+24>>2]=0;H[d+12>>2]=c;H[d+8>>2]=a}a=H[12873]-1|0;H[12873]=a?a:-1}}function Jd(a){var b=0,c=0,d=0;a:{if(F[48536]&1){break a}if(!Wa(48536)){break a}b:{if(F[48524]&1){break b}if(!Wa(48524)){break b}H[12533]=0;H[12532]=33592;H[12532]=34344;H[12532]=33896;b=la-16|0;la=b;H[12536]=0;H[12537]=0;H[b+12>>2]=0;H[12540]=0;F[50304]=0;la=b+16|0;if(Te()>>>0<30){wb();X()}b=Se(50176,30);H[12536]=b;H[12537]=b;H[12540]=b+120;hf(30);Zb(50320,9942);ff(50144);H[12453]=0;H[12452]=33592;H[12452]=34344;H[12452]=35220;Qa(49808,Oa(48348));H[12455]=0;H[12454]=33592;H[12454]=34344;H[12454]=35252;Qa(49816,Oa(48356));H[12457]=0;H[12456]=33592;H[12456]=34344;F[49836]=0;H[12458]=0;H[12456]=33916;H[12458]=H[7426];Qa(49824,Oa(48552));H[12461]=0;H[12460]=33592;H[12460]=34344;H[12460]=34400;Qa(49840,Oa(48544));H[12463]=0;H[12462]=33592;H[12462]=34344;H[12462]=34548;Qa(49848,Oa(48560));H[12465]=0;H[12464]=33592;H[12464]=34344;H[12464]=33968;c=49864,d=Ja(),H[c>>2]=d;Qa(49856,Oa(48568));H[12469]=0;H[12468]=33592;H[12468]=34344;H[12468]=34696;Qa(49872,Oa(48576));H[12471]=0;H[12470]=33592;H[12470]=34344;H[12470]=34812;Qa(49880,Oa(48584));H[12473]=0;H[12472]=33592;H[12472]=34344;G[24948]=11310;H[12472]=34016;Fa(49900);Qa(49888,Oa(48592));H[12481]=0;H[12480]=33592;H[12480]=34344;H[12482]=46;H[12483]=44;H[12480]=34056;Fa(49936);Qa(49920,Oa(48600));H[12489]=0;H[12488]=33592;H[12488]=34344;H[12488]=35284;Qa(49952,Oa(48364));H[12491]=0;H[12490]=33592;H[12490]=34344;H[12490]=35528;Qa(49960,Oa(48372));H[12493]=0;H[12492]=33592;H[12492]=34344;H[12492]=35740;Qa(49968,Oa(48380));H[12495]=0;H[12494]=33592;H[12494]=34344;H[12494]=35972;Qa(49976,Oa(48388));H[12497]=0;H[12496]=33592;H[12496]=34344;H[12496]=36956;Qa(49984,Oa(48428));H[12499]=0;H[12498]=33592;H[12498]=34344;H[12498]=37104;Qa(49992,Oa(48436));H[12501]=0;H[12500]=33592;H[12500]=34344;H[12500]=37220;Qa(5e4,Oa(48444));H[12503]=0;H[12502]=33592;H[12502]=34344;H[12502]=37336;Qa(50008,Oa(48452));H[12505]=0;H[12504]=33592;H[12504]=34344;H[12504]=37452;Qa(50016,Oa(48460));H[12507]=0;H[12506]=33592;H[12506]=34344;H[12506]=37616;Qa(50024,Oa(48468));H[12509]=0;H[12508]=33592;H[12508]=34344;H[12508]=37780;Qa(50032,Oa(48476));H[12511]=0;H[12510]=33592;H[12510]=34344;H[12510]=37944;Qa(50040,Oa(48484));H[12513]=0;H[12512]=33592;H[12512]=34344;H[12514]=39200;H[12512]=36172;H[12514]=36220;Qa(50048,Oa(48396));H[12517]=0;H[12516]=33592;H[12516]=34344;H[12518]=39236;H[12516]=36436;H[12518]=36484;Qa(50064,Oa(48404));H[12521]=0;H[12520]=33592;H[12520]=34344;Oe(50088);H[12520]=36672;Qa(50080,Oa(48412));H[12525]=0;H[12524]=33592;H[12524]=34344;Oe(50104);H[12524]=36828;Qa(50096,Oa(48420));H[12529]=0;H[12528]=33592;H[12528]=34344;H[12528]=38108;Qa(50112,Oa(48492));H[12531]=0;H[12530]=33592;H[12530]=34344;H[12530]=38228;Qa(50120,Oa(48500));H[12129]=50128;H[12130]=48516;Va(48524)}b=H[H[12130]>>2];H[12132]=b;H[b+4>>2]=H[b+4>>2]+1;H[12133]=48528;Va(48536)}b=a;a=H[H[12133]>>2];H[b>>2]=a;H[a+4>>2]=H[a+4>>2]+1}function je(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;f=a+b|0;c=H[a+4>>2];a:{b:{if(c&1){break b}if(!(c&3)){break a}c=H[a>>2];b=c+b|0;c:{a=a-c|0;if((a|0)!=H[12870]){if(c>>>0<=255){e=H[a+8>>2];c=c>>>3|0;d=H[a+12>>2];if((d|0)!=(e|0)){break c}i=51460,j=H[12865]&fk(-2,c),H[i>>2]=j;break b}h=H[a+24>>2];c=H[a+12>>2];d:{if((c|0)!=(a|0)){d=H[a+8>>2];H[d+12>>2]=c;H[c+8>>2]=d;break d}e:{e=a+20|0;d=H[e>>2];if(d){break e}e=a+16|0;d=H[e>>2];if(d){break e}c=0;break d}while(1){g=e;c=d;e=c+20|0;d=H[e>>2];if(d){continue}e=c+16|0;d=H[c+16>>2];if(d){continue}break}H[g>>2]=0}if(!h){break b}e=H[a+28>>2];d=(e<<2)+51764|0;f:{if(H[d>>2]==(a|0)){H[d>>2]=c;if(c){break f}i=51464,j=H[12866]&fk(-2,e),H[i>>2]=j;break b}H[h+(H[h+16>>2]==(a|0)?16:20)>>2]=c;if(!c){break b}}H[c+24>>2]=h;d=H[a+16>>2];if(d){H[c+16>>2]=d;H[d+24>>2]=c}d=H[a+20>>2];if(!d){break b}H[c+20>>2]=d;H[d+24>>2]=c;break b}c=H[f+4>>2];if((c&3)!=3){break b}H[12867]=b;H[f+4>>2]=c&-2;H[a+4>>2]=b|1;H[f>>2]=b;return}H[e+12>>2]=d;H[d+8>>2]=e}c=H[f+4>>2];g:{if(!(c&2)){if(H[12871]==(f|0)){H[12871]=a;b=H[12868]+b|0;H[12868]=b;H[a+4>>2]=b|1;if(H[12870]!=(a|0)){break a}H[12867]=0;H[12870]=0;return}if(H[12870]==(f|0)){H[12870]=a;b=H[12867]+b|0;H[12867]=b;H[a+4>>2]=b|1;H[a+b>>2]=b;return}b=(c&-8)+b|0;h:{if(c>>>0<=255){e=H[f+8>>2];c=c>>>3|0;d=H[f+12>>2];if((d|0)==(e|0)){i=51460,j=H[12865]&fk(-2,c),H[i>>2]=j;break h}H[e+12>>2]=d;H[d+8>>2]=e;break h}h=H[f+24>>2];c=H[f+12>>2];i:{if((f|0)!=(c|0)){d=H[f+8>>2];H[d+12>>2]=c;H[c+8>>2]=d;break i}j:{d=f+20|0;e=H[d>>2];if(e){break j}d=f+16|0;e=H[d>>2];if(e){break j}c=0;break i}while(1){g=d;c=e;d=c+20|0;e=H[d>>2];if(e){continue}d=c+16|0;e=H[c+16>>2];if(e){continue}break}H[g>>2]=0}if(!h){break h}e=H[f+28>>2];d=(e<<2)+51764|0;k:{if(H[d>>2]==(f|0)){H[d>>2]=c;if(c){break k}i=51464,j=H[12866]&fk(-2,e),H[i>>2]=j;break h}H[h+(H[h+16>>2]==(f|0)?16:20)>>2]=c;if(!c){break h}}H[c+24>>2]=h;d=H[f+16>>2];if(d){H[c+16>>2]=d;H[d+24>>2]=c}d=H[f+20>>2];if(!d){break h}H[c+20>>2]=d;H[d+24>>2]=c}H[a+4>>2]=b|1;H[a+b>>2]=b;if(H[12870]!=(a|0)){break g}H[12867]=b;return}H[f+4>>2]=c&-2;H[a+4>>2]=b|1;H[a+b>>2]=b}if(b>>>0<=255){b=b>>>3|0;c=(b<<3)+51500|0;d=H[12865];b=1<>2]}H[c+8>>2]=a;H[b+12>>2]=a;H[a+12>>2]=c;H[a+8>>2]=b;return}e=31;H[a+16>>2]=0;H[a+20>>2]=0;if(b>>>0<=16777215){c=b>>>8|0;g=c+1048320>>>16&8;c=c<>>16&4;c=c<>>16&2;c=(c<>>15|0)-(d|(e|g))|0;e=(c<<1|b>>>c+21&1)+28|0}H[a+28>>2]=e;g=(e<<2)+51764|0;m:{d=H[12866];c=1<>2]=a;H[a+24>>2]=g;break n}e=b<<((e|0)==31?0:25-(e>>>1|0)|0);c=H[g>>2];while(1){d=c;if((H[c+4>>2]&-8)==(b|0)){break m}c=e>>>29|0;e=e<<1;g=d+(c&4)|0;c=H[g+16>>2];if(c){continue}break}H[g+16>>2]=a;H[a+24>>2]=d}H[a+12>>2]=a;H[a+8>>2]=a;return}b=H[d+8>>2];H[b+12>>2]=a;H[d+8>>2]=a;H[a+24>>2]=0;H[a+12>>2]=d;H[a+8>>2]=b}}function pi(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;u=la-16|0;la=u;k=c;while(1){a:{if((d|0)==(k|0)){k=d;break a}if(!H[k>>2]){break a}k=k+4|0;continue}break}H[h>>2]=f;H[e>>2]=c;while(1){b:{c:{if(!((c|0)==(d|0)|(f|0)==(g|0))){i=H[b+4>>2];H[u+8>>2]=H[b>>2];H[u+12>>2]=i;x=1;v=la-16|0;la=v;H[v+12>>2]=H[a+8>>2];y=Cb(v+8|0,v+12|0);q=k-c>>2;s=0;l=la-272|0;la=l;j=H[e>>2];H[l+12>>2]=j;t=f?f:l+16|0;d:{e:{f:{p=f?g-f|0:256;if(!j|!p){break f}m=q>>>0>=p>>>0;if(!(m|q>>>0>32)){break e}while(1){m=m?p:q;q=q-m|0;r=0;w=la-16|0;la=w;g:{h:{i:{j:{i=t;if(i){if(m>>>0>=4){break j}j=m;break i}m=0;i=H[l+12>>2];j=H[i>>2];if(!j){break g}while(1){o=1;if(j>>>0>=128){r=-1;o=$b(w+12|0,j);if((o|0)==-1){break g}}j=H[i+4>>2];i=i+4|0;m=m+o|0;r=m;if(j){continue}break}break g}o=H[l+12>>2];j=m;while(1){n=H[o>>2];k:{if(n-1>>>0>=127){if(!n){F[i|0]=0;H[l+12>>2]=0;break h}r=-1;n=$b(i,n);if((n|0)==-1){break g}j=j-n|0;i=i+n|0;break k}F[i|0]=n;j=j-1|0;o=H[l+12>>2];i=i+1|0}o=o+4|0;H[l+12>>2]=o;if(j>>>0>3){continue}break}}if(j){o=H[l+12>>2];while(1){n=H[o>>2];l:{if(n-1>>>0>=127){if(!n){F[i|0]=0;H[l+12>>2]=0;break h}r=-1;n=$b(w+12|0,n);if((n|0)==-1){break g}if(j>>>0>>0){break h}$b(i,H[o>>2]);j=j-n|0;i=i+n|0;break l}F[i|0]=n;j=j-1|0;o=H[l+12>>2];i=i+1|0}o=o+4|0;H[l+12>>2]=o;if(j){continue}break}}r=m;break g}r=m-j|0}la=w+16|0;if((r|0)==-1){p=0;j=H[l+12>>2];s=-1;break f}i=(l+16|0)==(t|0);p=p-(i?0:r)|0;t=i?t:r+t|0;s=r+s|0;j=H[l+12>>2];if(!j|!p){break f}m=q>>>0>=p>>>0;if(m|q>>>0>=33){continue}break}break e}if(!j){break d}}if(!p|!q){break d}m=s;while(1){m:{i=$b(t,H[j>>2]);n:{if(i+1>>>0<=1){s=-1;if(i){break d}H[l+12>>2]=0;break n}j=H[l+12>>2]+4|0;H[l+12>>2]=j;m=i+m|0;p=p-i|0;if(p){break m}}s=m;break d}t=i+t|0;s=m;q=q-1|0;if(q){continue}break}}if(f){H[e>>2]=H[l+12>>2]}la=l+272|0;i=H[y>>2];if(i){if(i){H[10445]=(i|0)==-1?48300:i}}la=v+16|0;o:{p:{q:{r:{switch(s+1|0){case 0:H[h>>2]=f;while(1){s:{if(H[e>>2]==(c|0)){break s}b=Gd(f,H[c>>2],H[a+8>>2]);if((b|0)==-1){break s}f=b+H[h>>2]|0;H[h>>2]=f;c=c+4|0;continue}break};H[e>>2]=c;break q;case 1:break c;default:break r}}f=H[h>>2]+s|0;H[h>>2]=f;if((f|0)==(g|0)){break o}if((d|0)==(k|0)){c=H[e>>2];k=d;continue}k=Gd(u+4|0,0,H[a+8>>2]);if((k|0)!=-1){break p}}x=2;break c}c=u+4|0;if(g-H[h>>2]>>>0>>0){break c}while(1){if(k){f=I[c|0];i=H[h>>2];H[h>>2]=i+1;F[i|0]=f;k=k-1|0;c=c+1|0;continue}break}c=H[e>>2]+4|0;H[e>>2]=c;k=c;while(1){if((d|0)==(k|0)){k=d;break b}if(!H[k>>2]){break b}k=k+4|0;continue}}c=H[e>>2]}x=(c|0)!=(d|0)}la=u+16|0;return x|0}f=H[h>>2];continue}}function ie(a,b,c,d,e,f,g,h,i){var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;j=la-128|0;la=j;a:{b:{c:{if(!Yb(f,g,h,i,0,0,0,0)){break c}l=h;m=i&65535;o=i>>>16&32767;d:{e:{if((o|0)!=32767){n=4;if(o){break e}n=f|l|(g|m)?3:2;break d}n=!(f|l|(g|m))}}if(!n){break c}r=e>>>16|0;p=r&32767;if((p|0)!=32767){break b}}La(j+16|0,b,c,d,e,f,g,h,i);e=H[j+16>>2];d=H[j+20>>2];c=H[j+24>>2];b=H[j+28>>2];ug(j,e,d,c,b,e,d,c,b);d=H[j+8>>2];e=H[j+12>>2];h=H[j>>2];i=H[j+4>>2];break a}l=p<<16;n=d;q=l|e&65535;m=q;o=h;q=i>>>16&32767;k=i&65535|q<<16;if((Yb(b,c,n,m,f,g,h,k)|0)<=0){if(Yb(b,c,n,m,f,g,o,k)){h=b;i=c;break a}La(j+112|0,b,c,d,e,0,0,0,0);d=H[j+120>>2];e=H[j+124>>2];h=H[j+112>>2];i=H[j+116>>2];break a}if(p){i=c;h=b}else{La(j+96|0,b,c,n,m,0,0,0,1081540608);h=H[j+108>>2];m=h;n=H[j+104>>2];p=(h>>>16|0)-120|0;i=H[j+100>>2];h=H[j+96>>2]}if(!q){La(j+80|0,f,g,o,k,0,0,0,1081540608);f=H[j+92>>2];k=f;o=H[j+88>>2];q=(k>>>16|0)-120|0;g=H[j+84>>2];f=H[j+80>>2]}s=k&65535|65536;m=m&65535|65536;if((p|0)>(q|0)){while(1){k=n;l=o;t=k-l|0;l=m-((k>>>0>>0)+s|0)|0;k=(g|0)==(i|0)&f>>>0>h>>>0|g>>>0>i>>>0;l=l-(k>>>0>t>>>0)|0;k=t-k|0;f:{if((l|0)>0?1:(l|0)>=0){m=h;h=h-f|0;i=i-((f>>>0>m>>>0)+g|0)|0;if(!(h|k|(i|l))){La(j+32|0,b,c,d,e,0,0,0,0);d=H[j+40>>2];e=H[j+44>>2];h=H[j+32>>2];i=H[j+36>>2];break a}l=l<<1|k>>>31;n=k<<1|i>>>31;break f}l=m<<1|n>>>31;n=n<<1|i>>>31}m=l;l=i<<1|h>>>31;h=h<<1;i=l;p=p-1|0;if((q|0)<(p|0)){continue}break}p=q}l=n;q=l-o|0;k=m-((l>>>0>>0)+s|0)|0;l=(g|0)==(i|0)&f>>>0>h>>>0|g>>>0>i>>>0;k=k-(l>>>0>q>>>0)|0;o=q-l|0;g:{if((k|0)<0){o=n;k=m;break g}n=h;h=h-f|0;i=i-((f>>>0>n>>>0)+g|0)|0;if(h|o|(i|k)){break g}La(j+48|0,b,c,d,e,0,0,0,0);d=H[j+56>>2];e=H[j+60>>2];h=H[j+48>>2];i=H[j+52>>2];break a}if((k|0)==65535|k>>>0<65535){while(1){b=i>>>31|0;p=p-1|0;m=i<<1|h>>>31;h=h<<1;i=m;c=b;b=o;k=k<<1|b>>>31;o=c|b<<1;if(k>>>0<65536){continue}break}}b=r&32768;if((p|0)<=0){La(j- -64|0,h,i,o,k&65535|(b|p+120)<<16,0,0,0,1065811968);d=H[j+72>>2];e=H[j+76>>2];h=H[j+64>>2];i=H[j+68>>2];break a}d=o;e=k&65535|(b|p)<<16}H[a>>2]=h;H[a+4>>2]=i;H[a+8>>2]=d;H[a+12>>2]=e;la=j+128|0}function df(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;k=la-32|0;g=H[(d<<2)+25648>>2];h=I[g|0];a:{if(!h){break a}if((h|0)==34){e=g;while(1){b:{i=F[e+1|0];c:{if((i|0)!=92){e=e+1|0;switch(i-34|0){case 0:break a;case 5:case 10:break b;default:break c}}if(I[e+2|0]!=92){break b}e=e+2|0}f=f+1|0;continue}break}f=0;if(!h){break a}}e=1;while(1){f=e;e=e+1|0;if(I[f+g|0]){continue}break}}d:{e:{f:{if((d|0)==-2){c=f;break f}c=G[c>>1];H[k>>2]=g;i=1;g:{h:{j=G[(c<<1)+12288>>1];if((j|0)==-489){break h}d=0-j&j>>31;c=2516-j|0;m=(c|0)<114?c:114;if((d|0)>=(m|0)){break h}c=f;i:{while(1){if(!((d|0)==1|G[(d+j<<1)+14128>>1]!=(d|0))){if((i|0)==5){break h}h=H[(d<<2)+25648>>2];H[(i<<2)+k>>2]=h;e=0;l=I[h|0];j:{if(!l){break j}g=h;if((l|0)==34){while(1){k:{n=F[g+1|0];l:{if((n|0)!=92){g=g+1|0;switch(n-34|0){case 0:break j;case 5:case 10:break k;default:break l}}if(I[g+2|0]!=92){break k}g=g+2|0}e=e+1|0;continue}break}e=0;if(!l){break j}}g=1;while(1){e=g;g=e+1|0;if(I[e+h|0]){continue}break}}c=c+e|0;if(e>>>0>c>>>0){break i}i=i+1|0}d=d+1|0;if((m|0)>(d|0)){continue}break}d=0;m:{switch(i|0){case 2:d=8388;break e;case 3:d=8340;break e;case 4:d=8286;break e;case 0:break f;case 1:break g;case 5:break m;default:break e}}d=8226;break e}h=2;break d}c=f}d=8430;i=1;break e}d=8481;i=0}f=0;while(1){e=f;f=e+1|0;if(I[d+e|0]){continue}break}h=2;f=c+e|0;e=f>>>0>>0;if(e){break d}c=e?c:f;if(c>>>0<=K[a>>2]){a=0;h=0;while(1){e=I[d|0];F[b|0]=e;n:{if((e|0)!=37){f=1;c=1;if(e){break n}break d}if(!(I[d+1|0]!=115|(a|0)>=(i|0))){c=a+1|0;f=0;e=H[(a<<2)+k>>2];g=e;o:{p:{if(I[e|0]!=34){break p}while(1){q:{a=I[g+1|0];r:{if((a|0)!=92){g=g+1|0;switch((a<<24>>24)-34|0){case 5:case 10:break p;case 0:break q;default:break r}}a=92;if(I[g+2|0]!=92){break p}g=g+2|0}F[b+f|0]=a;f=f+1|0;continue}break}F[b+f|0]=0;break o}f=b;while(1){a=f;g=I[e|0];F[f|0]=g;f=f+1|0;e=e+1|0;if(g){continue}break}f=a-b|0}a=c;c=2;break n}f=1;c=1}d=c+d|0;b=b+f|0;continue}}b=a;a=c<<1;H[b>>2]=a>>>0>>0?-1:a;return 1}return h}function lg(a,b,c,d){var e=0,f=0,g=0,h=0,i=0;e=H[b>>2];a:{b:{c:{d:{e:{f:{g:{h:{i:{j:{k:{l:{if(!d){break l}g=H[d>>2];if(!g){break l}if(!a){d=c;break j}H[d>>2]=0;d=c;break k}m:{if(!H[H[10445]>>2]){if(!a){break m}if(!c){break a}g=c;while(1){d=F[e|0];if(d){H[a>>2]=d&57343;a=a+4|0;e=e+1|0;g=g-1|0;if(g){continue}break a}break}H[a>>2]=0;H[b>>2]=0;return c-g|0}d=c;if(!a){break i}break g}return bb(e)}f=1;break g}f=0;break h}f=1}while(1){if(!f){f=I[e|0]>>>3|0;if((f-16|f+(g>>26))>>>0>7){break f}h=e+1|0;f=h;n:{if(!(g&33554432)){break n}if((I[h|0]&192)!=128){e=e-1|0;break d}h=e+2|0;f=h;if(!(g&524288)){break n}if((I[h|0]&192)!=128){e=e-1|0;break d}f=e+3|0}e=f;d=d-1|0;f=1;continue}while(1){g=I[e|0];o:{if(e&3|g-1>>>0>126){break o}g=H[e>>2];if((g|g-16843009)&-2139062144){break o}while(1){d=d-4|0;g=H[e+4>>2];f=e+4|0;e=f;if(!((g-16843009|g)&-2139062144)){continue}break}e=f}f=g&255;if(f-1>>>0<=126){d=d-1|0;e=e+1|0;continue}break}f=f-194|0;if(f>>>0>50){break e}e=e+1|0;g=H[(f<<2)+29328>>2];f=0;continue}}while(1){if(!f){if(!d){break a}while(1){p:{f=I[e|0];h=f-1|0;q:{r:{if(h>>>0>126){g=f;break r}if(e&3|d>>>0<5){break q}s:{while(1){g=H[e>>2];if((g|g-16843009)&-2139062144){break s}H[a>>2]=g&255;H[a+4>>2]=I[e+1|0];H[a+8>>2]=I[e+2|0];H[a+12>>2]=I[e+3|0];a=a+16|0;e=e+4|0;d=d-4|0;if(d>>>0>4){continue}break}g=I[e|0]}f=g&255;h=f-1|0}if(h>>>0>126){break p}}H[a>>2]=f;a=a+4|0;e=e+1|0;d=d-1|0;if(d){continue}break a}break}f=f-194|0;if(f>>>0>50){break e}e=e+1|0;g=H[(f<<2)+29328>>2];f=1;continue}h=I[e|0];f=h>>>3|0;if((f-16|f+(g>>26))>>>0>7){break f}t:{u:{i=e+1|0;f=h-128|g<<6;h=i;v:{if((f|0)>-1){break v}h=I[i|0]-128|0;if(h>>>0>63){break u}i=e+2|0;f=h|f<<6;h=i;if((f|0)>-1){break v}h=I[i|0]-128|0;if(h>>>0>63){break u}f=h|f<<6;h=e+3|0}e=h;H[a>>2]=f;d=d-1|0;a=a+4|0;break t}H[12064]=25;e=e-1|0;break c}f=0;continue}}e=e-1|0;if(g){break d}g=I[e|0]}if(g&255){break d}if(a){H[a>>2]=0;H[b>>2]=0}return c-d|0}H[12064]=25;if(!a){break b}}H[b>>2]=e}return-1}H[b>>2]=e;return c}function Xi(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0;a=la-448|0;la=a;H[a+432>>2]=c;H[a+440>>2]=b;H[a+20>>2]=19;l=Ra(a+24|0,a+32|0,a+20|0);b=H[e+28>>2];H[a+16>>2]=b;H[b+4>>2]=H[b+4>>2]+1;b=nb(a+16|0);F[a+15|0]=0;if(tf(a+440|0,c,d,a+16|0,H[e+4>>2],f,a+15|0,b,l,a+20|0,a+432|0)){c=la-16|0;la=c;a:{if(I[g+11|0]>>>7|0){d=H[g>>2];H[c+12>>2]=0;H[d>>2]=H[c+12>>2];H[g+4>>2]=0;break a}H[c+8>>2]=0;H[g>>2]=H[c+8>>2];F[g+11|0]=0}la=c+16|0;if(I[a+15|0]){od(g,na[H[H[b>>2]+44>>2]](b,45)|0)}b=na[H[H[b>>2]+44>>2]](b,48)|0;e=H[l>>2];j=H[a+20>>2];c=j-4|0;while(1){if(!((b|0)!=H[e>>2]|c>>>0<=e>>>0)){e=e+4|0;continue}break}c=la-16|0;la=c;if(I[g+11|0]>>>7|0){h=H[g+4>>2]}else{h=I[g+11|0]}d=I[g+11|0]>>>7|0?(H[g+8>>2]&2147483647)-1|0:1;b=j-e>>2;b:{if(!b){break b}if(I[g+11|0]>>>7|0){i=H[g>>2]}else{i=g}k=i;if(I[g+11|0]>>>7|0){i=H[g>>2]}else{i=g}if(I[g+11|0]>>>7|0){m=H[g+4>>2]}else{m=I[g+11|0]}if(i+(m<<2)>>>0>e>>>0&e>>>0>=k>>>0){b=la-16|0;la=b;gg(c,e,j);la=b+16|0;b=c;if(I[b+11|0]>>>7|0){b=H[b>>2]}h=b;k=la-16|0;la=k;if(I[c+11|0]>>>7|0){d=H[c+4>>2]}else{d=I[c+11|0]}i=d;b=I[g+11|0]>>>7|0?(H[g+8>>2]&2147483647)-1|0:1;j=b;if(I[g+11|0]>>>7|0){e=H[g+4>>2]}else{e=I[g+11|0]}c:{if(i>>>0<=j-e>>>0){if(!d){break c}if(I[g+11|0]>>>7|0){b=H[g>>2]}else{b=g}Fb(b+(e<<2)|0,h,d);e=d+e|0;d=e;d:{if(I[g+11|0]>>>7|0){H[g+4>>2]=d;break d}F[g+11|0]=d}H[k+12>>2]=0;H[b+(e<<2)>>2]=H[k+12>>2];break c}me(g,b,(d+e|0)-b|0,e,e,0,d,h)}la=k+16|0;Ba(c);break b}if(b>>>0>d-h>>>0){le(g,d,(b+h|0)-d|0,h,h)}if(I[g+11|0]>>>7|0){d=H[g>>2]}else{d=g}d=d+(h<<2)|0;while(1){if((e|0)!=(j|0)){H[d>>2]=H[e>>2];e=e+4|0;d=d+4|0;continue}break}H[c>>2]=0;H[d>>2]=H[c>>2];b=b+h|0;e:{if(I[g+11|0]>>>7|0){H[g+4>>2]=b;break e}F[g+11|0]=b}}la=c+16|0}if($a(a+440|0,a+432|0)){H[f>>2]=H[f>>2]|2}d=H[a+440>>2];b=H[a+16>>2];c=H[b+4>>2]-1|0;H[b+4>>2]=c;if((c|0)==-1){na[H[H[b>>2]+8>>2]](b)}b=H[l>>2];H[l>>2]=0;if(b){na[H[l+4>>2]](b)}la=a+448|0;return d|0}function zb(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;if(!a){return Ca(b)}if(b>>>0>=4294967232){H[12064]=48;return 0}g=b>>>0<11?16:b+11&-8;f=a-8|0;j=H[f+4>>2];e=j&-8;a:{if(!(j&3)){if(g>>>0<256){break a}if(e>>>0>=g+4>>>0){c=f;if(e-g>>>0<=H[12985]<<1>>>0){break a}}c=0;break a}h=e+f|0;b:{if(e>>>0>=g>>>0){d=e-g|0;if(d>>>0<16){break b}H[f+4>>2]=j&1|g|2;c=f+g|0;H[c+4>>2]=d|3;H[h+4>>2]=H[h+4>>2]|1;je(c,d);break b}if(H[12871]==(h|0)){e=e+H[12868]|0;if(e>>>0<=g>>>0){break a}H[f+4>>2]=j&1|g|2;d=f+g|0;c=e-g|0;H[d+4>>2]=c|1;H[12868]=c;H[12871]=d;break b}if(H[12870]==(h|0)){d=e+H[12867]|0;if(d>>>0>>0){break a}c=d-g|0;c:{if(c>>>0>=16){H[f+4>>2]=j&1|g|2;e=f+g|0;H[e+4>>2]=c|1;d=d+f|0;H[d>>2]=c;H[d+4>>2]=H[d+4>>2]&-2;break c}H[f+4>>2]=d|j&1|2;c=d+f|0;H[c+4>>2]=H[c+4>>2]|1;c=0;e=0}H[12870]=e;H[12867]=c;break b}d=H[h+4>>2];if(d&2){break a}k=e+(d&-8)|0;if(k>>>0>>0){break a}m=k-g|0;d:{if(d>>>0<=255){e=H[h+8>>2];c=d>>>3|0;d=H[h+12>>2];if((d|0)==(e|0)){n=51460,o=H[12865]&fk(-2,c),H[n>>2]=o;break d}H[e+12>>2]=d;H[d+8>>2]=e;break d}l=H[h+24>>2];i=H[h+12>>2];e:{if((i|0)!=(h|0)){c=H[h+8>>2];H[c+12>>2]=i;H[i+8>>2]=c;break e}f:{e=h+20|0;c=H[e>>2];if(c){break f}e=h+16|0;c=H[e>>2];if(c){break f}i=0;break e}while(1){d=e;i=c;e=c+20|0;c=H[e>>2];if(c){continue}e=i+16|0;c=H[i+16>>2];if(c){continue}break}H[d>>2]=0}if(!l){break d}d=H[h+28>>2];c=(d<<2)+51764|0;g:{if(H[c>>2]==(h|0)){H[c>>2]=i;if(i){break g}n=51464,o=H[12866]&fk(-2,d),H[n>>2]=o;break d}H[(H[l+16>>2]==(h|0)?16:20)+l>>2]=i;if(!i){break d}}H[i+24>>2]=l;c=H[h+16>>2];if(c){H[i+16>>2]=c;H[c+24>>2]=i}c=H[h+20>>2];if(!c){break d}H[i+20>>2]=c;H[c+24>>2]=i}if(m>>>0<=15){H[f+4>>2]=j&1|k|2;c=f+k|0;H[c+4>>2]=H[c+4>>2]|1;break b}H[f+4>>2]=j&1|g|2;d=f+g|0;H[d+4>>2]=m|3;c=f+k|0;H[c+4>>2]=H[c+4>>2]|1;je(d,m)}c=f}if(c){return c+8|0}f=Ca(b);if(!f){return 0}c=H[a-4>>2];c=(c&3?-4:-8)+(c&-8)|0;gb(f,a,b>>>0>c>>>0?c:b);Aa(a);return f}function lf(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o){var p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;u=la-16|0;la=u;H[c>>2]=a;x=d&512;while(1){if((v|0)==4){if(I[n+11|0]>>>7|0){e=H[n+4>>2]}else{e=I[n+11|0]}if(e>>>0>1){z=u,A=vb(n),H[z+8>>2]=A;z=c,A=Lc(pf(u+8|0,1),Tb(n),H[c>>2]),H[z>>2]=A}d=d&176;if((d|0)!=16){if((d|0)==32){a=H[c>>2]}H[b>>2]=a}la=u+16|0}else{a:{b:{switch(F[i+v|0]){case 0:H[b>>2]=H[c>>2];break a;case 1:H[b>>2]=H[c>>2];q=na[H[H[g>>2]+44>>2]](g,32)|0;p=H[c>>2];H[c>>2]=p+4;H[p>>2]=q;break a;case 3:if(I[n+11|0]>>>7|0){p=H[n+4>>2]}else{p=I[n+11|0]}if(!p){break a}if(I[n+11|0]>>>7|0){p=H[n>>2]}else{p=n}q=H[p>>2];p=H[c>>2];H[c>>2]=p+4;H[p>>2]=q;break a;case 2:if(I[m+11|0]>>>7|0){p=H[m+4>>2]}else{p=I[m+11|0]}if(!p|!x){break a}z=c,A=Lc(vb(m),Tb(m),H[c>>2]),H[z>>2]=A;break a;case 4:break b;default:break a}}y=H[c>>2];e=h?e+4|0:e;s=e;while(1){c:{if(f>>>0<=s>>>0){break c}if(!(na[H[H[g>>2]+12>>2]](g,2048,H[s>>2])|0)){break c}s=s+4|0;continue}break}p=o;if((p|0)>=1){while(1){if(!((p|0)<1|e>>>0>=s>>>0)){s=s-4|0;r=H[s>>2];q=H[c>>2];H[c>>2]=q+4;H[q>>2]=r;p=p-1|0;continue}break}if((p|0)<1){r=0}else{r=na[H[H[g>>2]+44>>2]](g,48)|0}w=r;q=H[c>>2];while(1){r=q+4|0;if((p|0)>=1){H[q>>2]=w;p=p-1|0;q=r;continue}break}H[c>>2]=r;H[q>>2]=j}d:{if((e|0)==(s|0)){q=na[H[H[g>>2]+44>>2]](g,48)|0;p=H[c>>2];s=p+4|0;H[c>>2]=s;H[p>>2]=q;break d}if(I[l+11|0]>>>7|0){p=H[l>>2]}else{p=l}p=F[p|0];if(I[l+11|0]>>>7|0){r=H[l+4>>2]}else{r=I[l+11|0]}r=r?p:-1;p=0;t=0;while(1){if((e|0)!=(s|0)){e:{if((p|0)!=(r|0)){q=p;break e}q=H[c>>2];H[c>>2]=q+4;H[q>>2]=k;q=0;if(I[l+11|0]>>>7|0){r=H[l+4>>2]}else{r=I[l+11|0]}t=t+1|0;if(r>>>0<=t>>>0){r=p;break e}if(I[l+11|0]>>>7|0){p=H[l>>2]}else{p=l}if(I[p+t|0]==127){r=-1;break e}if(I[l+11|0]>>>7|0){p=H[l>>2]}else{p=l}r=F[p+t|0]}s=s-4|0;w=H[s>>2];p=H[c>>2];H[c>>2]=p+4;H[p>>2]=w;p=q+1|0;continue}break}s=H[c>>2]}Rc(y,s)}v=v+1|0;continue}break}}function nf(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o){var p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;u=la-16|0;la=u;H[c>>2]=a;x=d&512;while(1){if((v|0)==4){if(I[n+11|0]>>>7|0){e=H[n+4>>2]}else{e=I[n+11|0]}if(e>>>0>1){z=u,A=vb(n),H[z+8>>2]=A;z=c,A=Lc(vf(u+8|0,1),Vb(n),H[c>>2]),H[z>>2]=A}d=d&176;if((d|0)!=16){if((d|0)==32){a=H[c>>2]}H[b>>2]=a}la=u+16|0;return}a:{b:{switch(F[i+v|0]){case 0:H[b>>2]=H[c>>2];break a;case 1:H[b>>2]=H[c>>2];p=na[H[H[g>>2]+28>>2]](g,32)|0;q=H[c>>2];H[c>>2]=q+1;F[q|0]=p;break a;case 3:if(I[n+11|0]>>>7|0){p=H[n+4>>2]}else{p=I[n+11|0]}if(!p){break a}if(I[n+11|0]>>>7|0){p=H[n>>2]}else{p=n}p=I[p|0];q=H[c>>2];H[c>>2]=q+1;F[q|0]=p;break a;case 2:if(I[m+11|0]>>>7|0){p=H[m+4>>2]}else{p=I[m+11|0]}if(!p|!x){break a}z=c,A=Lc(vb(m),Vb(m),H[c>>2]),H[z>>2]=A;break a;case 4:break b;default:break a}}y=H[c>>2];e=h?e+1|0:e;r=e;while(1){c:{if(f>>>0<=r>>>0){break c}p=F[r|0];if((p|0)>=0){p=(J[H[g+8>>2]+((p&255)<<1)>>1]&2048)!=0}else{p=0}if(!p){break c}r=r+1|0;continue}break}p=o;if((p|0)>=1){while(1){if(!((p|0)<1|e>>>0>=r>>>0)){r=r-1|0;q=I[r|0];s=H[c>>2];H[c>>2]=s+1;F[s|0]=q;p=p-1|0;continue}break}if((p|0)<1){q=0}else{q=na[H[H[g>>2]+28>>2]](g,48)|0}while(1){s=H[c>>2];H[c>>2]=s+1;if((p|0)>=1){F[s|0]=q;p=p-1|0;continue}break}F[s|0]=j}d:{if((e|0)==(r|0)){p=na[H[H[g>>2]+28>>2]](g,48)|0;q=H[c>>2];H[c>>2]=q+1;F[q|0]=p;break d}if(I[l+11|0]>>>7|0){p=H[l>>2]}else{p=l}q=F[p|0];if(I[l+11|0]>>>7|0){p=H[l+4>>2]}else{p=I[l+11|0]}q=p?q:-1;p=0;t=0;while(1){if((e|0)==(r|0)){break d}e:{if((p|0)!=(q|0)){s=p;break e}q=H[c>>2];H[c>>2]=q+1;F[q|0]=k;s=0;if(I[l+11|0]>>>7|0){q=H[l+4>>2]}else{q=I[l+11|0]}t=t+1|0;if(q>>>0<=t>>>0){q=p;break e}if(I[l+11|0]>>>7|0){p=H[l>>2]}else{p=l}if(I[p+t|0]==127){q=-1;break e}if(I[l+11|0]>>>7|0){p=H[l>>2]}else{p=l}q=F[p+t|0]}r=r-1|0;p=I[r|0];w=H[c>>2];H[c>>2]=w+1;F[w|0]=p;p=s+1|0;continue}}ec(y,H[c>>2])}v=v+1|0;continue}}function oi(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;q=la-16|0;la=q;j=c;while(1){a:{if((d|0)==(j|0)){j=d;break a}if(!I[j|0]){break a}j=j+1|0;continue}break}H[h>>2]=f;H[e>>2]=c;while(1){b:{c:{d:{if((c|0)==(d|0)|(f|0)==(g|0)){break d}k=H[b+4>>2];H[q+8>>2]=H[b>>2];H[q+12>>2]=k;r=la-16|0;la=r;H[r+12>>2]=H[a+8>>2];t=Cb(r+8|0,r+12|0);o=j-c|0;m=la-1040|0;la=m;n=H[e>>2];H[m+12>>2]=n;p=f?f:m+16|0;k=0;e:{f:{g:{l=f?g-f>>2:256;if(!n|!l){break g}i=o>>>2|0;s=l>>>0<=i>>>0;if(i>>>0>>0?o>>>0<=131:0){break f}while(1){i=s?l:i;o=o-i|0;i=lg(p,m+12|0,i,b);if((i|0)==-1){l=0;n=H[m+12>>2];k=-1;break g}n=(m+16|0)==(p|0);l=l-(n?0:i)|0;p=n?p:(i<<2)+p|0;k=i+k|0;n=H[m+12>>2];if(!n|!l){break g}i=o>>>2|0;s=l>>>0<=i>>>0;if(o>>>0>131|i>>>0>=l>>>0){continue}break}break f}if(!n){break e}}if(!l|!o){break e}i=k;while(1){h:{k=_c(p,n,o,b);i:{if(k+2>>>0<=2){j:{switch(k+1|0){case 1:H[m+12>>2]=0;break i;case 0:break e;default:break j}}H[b>>2]=0;break i}n=H[m+12>>2]+k|0;H[m+12>>2]=n;i=i+1|0;l=l-1|0;if(l){break h}}k=i;break e}p=p+4|0;o=o-k|0;k=i;if(o){continue}break}}if(f){H[e>>2]=H[m+12>>2]}la=m+1040|0;i=H[t>>2];if(i){if(i){H[10445]=(i|0)==-1?48300:i}}la=r+16|0;k:{l:{m:{n:{if((k|0)==-1){while(1){o:{H[h>>2]=f;if(H[e>>2]==(c|0)){break o}g=1;p:{q:{r:{b=$e(f,c,j-c|0,q+8|0,H[a+8>>2]);switch(b+2|0){case 2:break p;case 1:break r;case 0:break l;default:break q}}H[e>>2]=c;break n}g=b}c=c+g|0;f=H[h>>2]+4|0;continue}break}H[e>>2]=c;break d}f=H[h>>2]+(k<<2)|0;H[h>>2]=f;if((f|0)==(g|0)){break k}c=H[e>>2];if((d|0)==(j|0)){j=d;continue}if(!$e(f,c,1,b,H[a+8>>2])){break m}}a=2;break c}H[h>>2]=H[h>>2]+4;c=H[e>>2]+1|0;H[e>>2]=c;j=c;while(1){if((d|0)==(j|0)){j=d;break b}if(!I[j|0]){break b}j=j+1|0;continue}}H[e>>2]=c;a=1;break c}c=H[e>>2]}a=(c|0)!=(d|0)}la=q+16|0;return a|0}f=H[h>>2];continue}}function Ui(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;a=la-1072|0;la=a;H[a+16>>2]=f;H[a+20>>2]=g;H[a+24>>2]=h;H[a+28>>2]=i;H[a+956>>2]=a+960;j=hd(a+960|0,100,8845,a+16|0);H[a+544>>2]=18;l=Ra(a+536|0,0,a+544|0);H[a+544>>2]=18;k=Ra(a+528|0,0,a+544|0);n=a+544|0;a:{if(j>>>0>=100){j=Ja();H[a>>2]=f;H[a+4>>2]=g;H[a+8>>2]=h;H[a+12>>2]=i;j=Lb(a+956|0,j,8845,a);if((j|0)==-1){break a}f=H[l>>2];H[l>>2]=H[a+956>>2];if(f){na[H[l+4>>2]](f)}g=Ca(j<<2);f=H[k>>2];H[k>>2]=g;if(f){na[H[k+4>>2]](f)}if(!H[k>>2]){break a}n=H[k>>2]}f=H[d+28>>2];H[a+520>>2]=f;H[f+4>>2]=H[f+4>>2]+1;r=nb(a+520|0);f=r;g=H[a+956>>2];na[H[H[f>>2]+48>>2]](f,g,g+j|0,n)|0;p=(j|0)>=1?I[H[a+956>>2]]==45:p;q=Fa(a+488|0);g=Fa(a+472|0);h=Fa(a+456|0);mf(c,p,a+520|0,a+512|0,a+508|0,a+504|0,q,g,h,a+452|0);H[a+48>>2]=18;i=Ra(a+40|0,0,a+48|0);c=a+48|0;f=H[a+452>>2];b:{if((f|0)<(j|0)){s=H[a+452>>2];if(I[g+11|0]>>>7|0){m=H[g+4>>2]}else{m=I[g+11|0]}if(I[h+11|0]>>>7|0){o=H[h+4>>2]}else{o=I[h+11|0]}f=s+(m+(o+(j-f<<1|1)|0)|0)|0;break b}o=H[a+452>>2];if(I[h+11|0]>>>7|0){f=H[h+4>>2]}else{f=I[h+11|0]}if(I[g+11|0]>>>7|0){m=H[g+4>>2]}else{m=I[g+11|0]}f=(o+(f+m|0)|0)+2|0}if(f>>>0>=101){f=Ca(f<<2);c=H[i>>2];H[i>>2]=f;if(c){na[H[i+4>>2]](c)}c=H[i>>2];if(!c){break a}}lf(c,a+36|0,a+32|0,H[d+4>>2],n,(j<<2)+n|0,r,p,a+512|0,H[a+508>>2],H[a+504>>2],q,g,h,H[a+452>>2]);d=Qb(b,c,H[a+36>>2],H[a+32>>2],d,e);b=H[i>>2];H[i>>2]=0;if(b){na[H[i+4>>2]](b)}Ba(h);Ba(g);Ba(q);b=H[a+520>>2];c=H[b+4>>2]-1|0;H[b+4>>2]=c;if((c|0)==-1){na[H[H[b>>2]+8>>2]](b)}b=H[k>>2];H[k>>2]=0;if(b){na[H[k+4>>2]](b)}b=H[l>>2];H[l>>2]=0;if(b){na[H[l+4>>2]](b)}la=a+1072|0;return d|0}Xa();X()}function Wi(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;a=la-464|0;la=a;H[a+16>>2]=f;H[a+20>>2]=g;H[a+24>>2]=h;H[a+28>>2]=i;H[a+348>>2]=a+352;j=hd(a+352|0,100,8845,a+16|0);H[a+240>>2]=18;l=Ra(a+232|0,0,a+240|0);H[a+240>>2]=18;k=Ra(a+224|0,0,a+240|0);n=a+240|0;a:{if(j>>>0>=100){j=Ja();H[a>>2]=f;H[a+4>>2]=g;H[a+8>>2]=h;H[a+12>>2]=i;j=Lb(a+348|0,j,8845,a);if((j|0)==-1){break a}f=H[l>>2];H[l>>2]=H[a+348>>2];if(f){na[H[l+4>>2]](f)}g=Ca(j);f=H[k>>2];H[k>>2]=g;if(f){na[H[k+4>>2]](f)}if(!H[k>>2]){break a}n=H[k>>2]}f=H[d+28>>2];H[a+216>>2]=f;H[f+4>>2]=H[f+4>>2]+1;r=pb(a+216|0);f=r;g=H[a+348>>2];na[H[H[f>>2]+32>>2]](f,g,g+j|0,n)|0;p=(j|0)>=1?I[H[a+348>>2]]==45:p;q=Fa(a+192|0);g=Fa(a+176|0);h=Fa(a+160|0);of(c,p,a+216|0,a+208|0,a+207|0,a+206|0,q,g,h,a+156|0);H[a+48>>2]=18;i=Ra(a+40|0,0,a+48|0);c=a+48|0;f=H[a+156>>2];b:{if((f|0)<(j|0)){s=H[a+156>>2];if(I[g+11|0]>>>7|0){m=H[g+4>>2]}else{m=I[g+11|0]}if(I[h+11|0]>>>7|0){o=H[h+4>>2]}else{o=I[h+11|0]}f=s+(m+(o+(j-f<<1|1)|0)|0)|0;break b}o=H[a+156>>2];if(I[h+11|0]>>>7|0){f=H[h+4>>2]}else{f=I[h+11|0]}if(I[g+11|0]>>>7|0){m=H[g+4>>2]}else{m=I[g+11|0]}f=(o+(f+m|0)|0)+2|0}if(f>>>0>=101){f=Ca(f);c=H[i>>2];H[i>>2]=f;if(c){na[H[i+4>>2]](c)}c=H[i>>2];if(!c){break a}}nf(c,a+36|0,a+32|0,H[d+4>>2],n,j+n|0,r,p,a+208|0,F[a+207|0],F[a+206|0],q,g,h,H[a+156>>2]);d=Hb(b,c,H[a+36>>2],H[a+32>>2],d,e);b=H[i>>2];H[i>>2]=0;if(b){na[H[i+4>>2]](b)}Ba(h);Ba(g);Ba(q);b=H[a+216>>2];c=H[b+4>>2]-1|0;H[b+4>>2]=c;if((c|0)==-1){na[H[H[b>>2]+8>>2]](b)}b=H[k>>2];H[k>>2]=0;if(b){na[H[k+4>>2]](b)}b=H[l>>2];H[l>>2]=0;if(b){na[H[l+4>>2]](b)}la=a+464|0;return d|0}Xa();X()}function xg(){var a=0,b=0,c=0,d=0;a=la-16|0;la=a;a:{if(ea(a+12|0,a+8|0)|0){break a}b=Ca((H[a+12>>2]<<2)+4|0);H[12082]=b;if(!b){break a}b=Ca(H[a+8>>2]);if(b){H[H[12082]+(H[a+12>>2]<<2)>>2]=0;if(!(da(H[12082],b|0)|0)){break a}}H[12082]=0}la=a+16|0;b:{if(F[51376]&1){break b}if(!Wa(51376)){break b}c=H[6596];a=la-16|0;la=a;b=Je(51020);H[12765]=51076;H[12763]=c;H[12755]=40144;F[51072]=0;H[12767]=-1;b=H[b+4>>2];H[a+8>>2]=b;H[b+4>>2]=H[b+4>>2]+1;na[H[H[12755]+8>>2]](51020,a+8|0);b=H[a+8>>2];d=H[b+4>>2]-1|0;H[b+4>>2]=d;if((d|0)==-1){na[H[H[b>>2]+8>>2]](b)}la=a+16|0;H[12586]=28932;H[12586]=39592;H[12584]=39404;H[12586]=39424;H[12585]=0;Dc(H[9848]+50336|0,51020);a=la-16|0;la=a;b=Ee(51084);H[12781]=51140;H[12779]=c;H[12771]=40244;F[51136]=0;H[12783]=-1;b=H[b+4>>2];H[a+8>>2]=b;H[b+4>>2]=H[b+4>>2]+1;na[H[H[12771]+8>>2]](51084,a+8|0);b=H[a+8>>2];c=H[b+4>>2]-1|0;H[b+4>>2]=c;if((c|0)==-1){na[H[H[b>>2]+8>>2]](b)}la=a+16|0;H[12608]=28932;H[12608]=39664;H[12606]=39452;H[12608]=39472;H[12607]=0;Dc(H[9860]+50424|0,51084);a=H[6595];xe(51148,a,51196);td(50512,51148);we(51204,a,51252);sd(50596,51204);a=H[6634];xe(51260,a,51308);td(50680,51260);td(50848,H[(H[H[12670]-12>>2]+50680|0)+24>>2]);we(51316,a,51364);sd(50764,51316);sd(50932,H[(H[H[12691]-12>>2]+50764|0)+24>>2]);H[(H[H[12584]-12>>2]+50336|0)+72>>2]=50512;H[(H[H[12606]-12>>2]+50424|0)+72>>2]=50596;a=H[H[12670]-12>>2]+50680|0;H[a+4>>2]=H[a+4>>2]|8192;a=H[H[12691]-12>>2]+50764|0;H[a+4>>2]=H[a+4>>2]|8192;H[(H[H[12670]-12>>2]+50680|0)+72>>2]=50512;H[(H[H[12691]-12>>2]+50764|0)+72>>2]=50596;Va(51376)}H[10474]=0;H[10475]=0;H[10476]=0;H[10477]=0;H[10478]=0;H[10479]=0}function Nf(a,b,c,d,e,f,g){var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;j=la-16|0;la=j;k=nb(g);o=lc(g);g=o;na[H[H[g>>2]+20>>2]](j,g);H[f>>2]=d;a:{b:{h=a;g=I[h|0];switch(g-43|0){case 0:case 2:break b;default:break a}}g=na[H[H[k>>2]+44>>2]](k,g<<24>>24)|0;h=H[f>>2];H[f>>2]=h+4;H[h>>2]=g;h=a+1|0}c:{g=h;if(!((c-g|0)<=1|I[g|0]!=48|(I[g+1|0]|32)!=120)){g=na[H[H[k>>2]+44>>2]](k,48)|0;i=H[f>>2];H[f>>2]=i+4;H[i>>2]=g;g=na[H[H[k>>2]+44>>2]](k,F[h+1|0])|0;i=H[f>>2];H[f>>2]=i+4;H[i>>2]=g;h=h+2|0;g=h;while(1){if(c>>>0<=g>>>0){break c}i=F[g|0];Ja();if(!(i-48>>>0<10|(i|32)-97>>>0<6)){break c}g=g+1|0;continue}}while(1){if(c>>>0<=g>>>0){break c}i=F[g|0];Ja();if(i-48>>>0>=10){break c}g=g+1|0;continue}}if(I[j+11|0]>>>7|0){l=H[j+4>>2]}else{l=I[j+11|0]}d:{if(!l){na[H[H[k>>2]+48>>2]](k,h,g,H[f>>2])|0;H[f>>2]=H[f>>2]+(g-h<<2);break d}ec(h,g);q=na[H[H[o>>2]+16>>2]](o)|0;i=h;while(1){if(g>>>0<=i>>>0){Rc((h-a<<2)+d|0,H[f>>2])}else{if(I[j+11|0]>>>7|0){l=H[j>>2]}else{l=j}p=F[l+m|0]!=(n|0);if(I[j+11|0]>>>7|0){l=H[j>>2]}else{l=j}if(!(p|F[l+m|0]<1)){n=H[f>>2];H[f>>2]=n+4;H[n>>2]=q;if(I[j+11|0]>>>7|0){l=H[j+4>>2]}else{l=I[j+11|0]}m=(l-1>>>0>m>>>0)+m|0;n=0}l=na[H[H[k>>2]+44>>2]](k,F[i|0])|0;p=H[f>>2];H[f>>2]=p+4;H[p>>2]=l;i=i+1|0;n=n+1|0;continue}break}}e:{f:{while(1){if(c>>>0<=g>>>0){break f}h=I[g|0];if((h|0)!=46){h=na[H[H[k>>2]+44>>2]](k,h<<24>>24)|0;m=H[f>>2];H[f>>2]=m+4;H[m>>2]=h;g=g+1|0;continue}break}h=na[H[H[o>>2]+12>>2]](o)|0;m=H[f>>2];i=m+4|0;H[f>>2]=i;H[m>>2]=h;g=g+1|0;break e}i=H[f>>2]}na[H[H[k>>2]+48>>2]](k,g,c,i)|0;h=f;f=H[f>>2]+(c-g<<2)|0;H[h>>2]=f;H[e>>2]=(b|0)==(c|0)?f:(b-a<<2)+d|0;Ba(j);la=j+16|0}function Qf(a,b,c,d,e,f,g){var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;j=la-16|0;la=j;k=pb(g);o=oc(g);g=o;na[H[H[g>>2]+20>>2]](j,g);H[f>>2]=d;a:{b:{h=a;g=I[h|0];switch(g-43|0){case 0:case 2:break b;default:break a}}g=na[H[H[k>>2]+28>>2]](k,g<<24>>24)|0;h=H[f>>2];H[f>>2]=h+1;F[h|0]=g;h=a+1|0}c:{g=h;if(!((c-g|0)<=1|I[g|0]!=48|(I[g+1|0]|32)!=120)){g=na[H[H[k>>2]+28>>2]](k,48)|0;i=H[f>>2];H[f>>2]=i+1;F[i|0]=g;g=na[H[H[k>>2]+28>>2]](k,F[h+1|0])|0;i=H[f>>2];H[f>>2]=i+1;F[i|0]=g;h=h+2|0;g=h;while(1){if(c>>>0<=g>>>0){break c}i=F[g|0];Ja();if(!(i-48>>>0<10|(i|32)-97>>>0<6)){break c}g=g+1|0;continue}}while(1){if(c>>>0<=g>>>0){break c}i=F[g|0];Ja();if(i-48>>>0>=10){break c}g=g+1|0;continue}}if(I[j+11|0]>>>7|0){l=H[j+4>>2]}else{l=I[j+11|0]}d:{if(!l){na[H[H[k>>2]+32>>2]](k,h,g,H[f>>2])|0;H[f>>2]=H[f>>2]+(g-h|0);break d}ec(h,g);q=na[H[H[o>>2]+16>>2]](o)|0;i=h;while(1){if(g>>>0<=i>>>0){ec((h-a|0)+d|0,H[f>>2])}else{if(I[j+11|0]>>>7|0){l=H[j>>2]}else{l=j}p=F[l+m|0]!=(n|0);if(I[j+11|0]>>>7|0){l=H[j>>2]}else{l=j}if(!(p|F[l+m|0]<1)){n=H[f>>2];H[f>>2]=n+1;F[n|0]=q;if(I[j+11|0]>>>7|0){l=H[j+4>>2]}else{l=I[j+11|0]}m=(l-1>>>0>m>>>0)+m|0;n=0}l=na[H[H[k>>2]+28>>2]](k,F[i|0])|0;p=H[f>>2];H[f>>2]=p+1;F[p|0]=l;i=i+1|0;n=n+1|0;continue}break}}while(1){e:{h=k;if(c>>>0>g>>>0){m=I[g|0];if((m|0)!=46){break e}m=na[H[H[o>>2]+12>>2]](o)|0;i=H[f>>2];H[f>>2]=i+1;F[i|0]=m;g=g+1|0}na[H[H[k>>2]+32>>2]](h,g,c,H[f>>2])|0;h=f;f=H[f>>2]+(c-g|0)|0;H[h>>2]=f;H[e>>2]=(b|0)==(c|0)?f:(b-a|0)+d|0;Ba(j);la=j+16|0;return}h=na[H[H[k>>2]+28>>2]](k,m<<24>>24)|0;m=H[f>>2];H[f>>2]=m+1;F[m|0]=h;g=g+1|0;continue}}function Zi(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0;a=la-160|0;la=a;H[a+144>>2]=c;H[a+152>>2]=b;H[a+20>>2]=19;h=Ra(a+24|0,a+32|0,a+20|0);b=H[e+28>>2];H[a+16>>2]=b;H[b+4>>2]=H[b+4>>2]+1;b=pb(a+16|0);F[a+15|0]=0;if(Bf(a+152|0,c,d,a+16|0,H[e+4>>2],f,a+15|0,b,h,a+20|0,a+132|0)){c=la-16|0;la=c;a:{if(I[g+11|0]>>>7|0){d=H[g>>2];F[c+15|0]=0;F[d|0]=I[c+15|0];H[g+4>>2]=0;break a}F[c+14|0]=0;F[g|0]=I[c+14|0];F[g+11|0]=0}la=c+16|0;if(I[a+15|0]){pd(g,na[H[H[b>>2]+28>>2]](b,45)|0)}b=na[H[H[b>>2]+28>>2]](b,48)|0;e=H[h>>2];k=H[a+20>>2];c=k-1|0;b=b&255;while(1){if(!((b|0)!=I[e|0]|c>>>0<=e>>>0)){e=e+1|0;continue}break}i=la-32|0;la=i;if(I[g+11|0]>>>7|0){c=H[g+4>>2]}else{c=I[g+11|0]}d=I[g+11|0]>>>7|0?(H[g+8>>2]&2147483647)-1|0:10;b=k-e|0;b:{if(!b){break b}if(I[g+11|0]>>>7|0){j=H[g>>2]}else{j=g}m=j;if(I[g+11|0]>>>7|0){j=H[g>>2]}else{j=g}if(I[g+11|0]>>>7|0){l=H[g+4>>2]}else{l=I[g+11|0]}if(j+l>>>0>e>>>0&e>>>0>=m>>>0){b=la-16|0;la=b;c=i+16|0;hg(c,e,k);la=b+16|0;b=c;if(I[b+11|0]>>>7|0){b=H[b>>2]}if(I[c+11|0]>>>7|0){d=H[c+4>>2]}else{d=I[c+11|0]}Pa(g,b,d);Ba(c);break b}if(b>>>0>d-c>>>0){qd(g,d,(b+c|0)-d|0,c,c)}if(I[g+11|0]>>>7|0){d=H[g>>2]}else{d=g}d=d+c|0;while(1){if((e|0)!=(k|0)){F[d|0]=I[e|0];e=e+1|0;d=d+1|0;continue}break}F[i+15|0]=0;F[d|0]=I[i+15|0];b=b+c|0;c:{if(I[g+11|0]>>>7|0){H[g+4>>2]=b;break c}F[g+11|0]=b}}la=i+32|0}if(ab(a+152|0,a+144|0)){H[f>>2]=H[f>>2]|2}d=H[a+152>>2];b=H[a+16>>2];c=H[b+4>>2]-1|0;H[b+4>>2]=c;if((c|0)==-1){na[H[H[b>>2]+8>>2]](b)}b=H[h>>2];H[h>>2]=0;if(b){na[H[h+4>>2]](b)}la=a+160|0;return d|0}function Qa(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0;f=la-16|0;la=f;H[a+4>>2]=H[a+4>>2]+1;c=la-16|0;la=c;H[c+12>>2]=a;H[f+8>>2]=H[c+12>>2];la=c+16|0;if(H[12537]-H[12536]>>2>>>0<=b>>>0){a:{c=H[12537]-H[12536]>>2;a=b+1|0;if(c>>>0>>0){i=la-32|0;la=i;g=a-c|0;b:{if(g>>>0<=H[12540]-H[12537]>>2>>>0){hf(g);break b}c=i+8|0;a=la-16|0;la=a;e=g+(H[12537]-H[12536]>>2)|0;H[a+12>>2]=e;c:{d=Te();if(e>>>0<=d>>>0){e=H[12540]-H[12536]>>2;if(e>>>0>>1>>>0){H[a+8>>2]=e<<1;d=la-16|0;la=d;la=d+16|0;d=a+12|0;e=a+8|0;d=H[(K[e>>2]>2]?d:e)>>2]}la=a+16|0;break c}wb();X()}h=H[12537]-H[12536]>>2;a=0;e=la-16|0;la=e;H[e+12>>2]=0;H[c+12>>2]=0;H[c+16>>2]=50176;if(d){a=Se(H[c+16>>2],d)}H[c>>2]=a;h=(h<<2)+a|0;H[c+8>>2]=h;H[c+4>>2]=h;H[c+12>>2]=(d<<2)+a;la=e+16|0;a=la-16|0;la=a;H[a>>2]=H[c+8>>2];d=H[c+8>>2];H[a+8>>2]=c+8;H[a+4>>2]=d+(g<<2);d=H[a>>2];while(1){if(H[a+4>>2]!=(d|0)){H[H[a>>2]>>2]=0;d=H[a>>2]+4|0;H[a>>2]=d;continue}break}H[H[a+8>>2]>>2]=H[a>>2];la=a+16|0;a=c+4|0;e=H[12536];d=H[12537]-e|0;g=H[a>>2]-d|0;H[a>>2]=g;if((d|0)>=1){gb(g,e,d)}xc(50144,a);xc(50148,c+8|0);xc(50160,c+12|0);H[c>>2]=H[c+4>>2];a=H[c+4>>2];while(1){if((a|0)!=H[c+8>>2]){H[c+8>>2]=H[c+8>>2]-4;continue}break}if(H[c>>2]){Qe(H[c+16>>2],H[c>>2])}}la=i+32|0;break a}if(a>>>0>>0){Pe(50144,H[12536]+(a<<2)|0)}}}if(H[H[12536]+(b<<2)>>2]){a=H[H[12536]+(b<<2)>>2];c=H[a+4>>2]-1|0;H[a+4>>2]=c;if((c|0)==-1){na[H[H[a>>2]+8>>2]](a)}}a=H[f+8>>2];H[f+8>>2]=0;H[H[12536]+(b<<2)>>2]=a;a=H[f+8>>2];H[f+8>>2]=0;if(a){b=H[a+4>>2]-1|0;H[a+4>>2]=b;if((b|0)==-1){na[H[H[a>>2]+8>>2]](a)}}la=f+16|0}function Ti(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;a=la-496|0;la=a;g=H[d+28>>2];H[a+488>>2]=g;H[g+4>>2]=H[g+4>>2]+1;n=nb(a+488|0);g=f;h=H[f+4>>2];a:{if(I[f+11|0]>>>7|0){break a}h=I[g+11|0]}if(h){if(I[g+11|0]>>>7|0){h=H[g>>2]}else{h=g}q=H[h>>2]==(na[H[H[n>>2]+44>>2]](n,45)|0)}o=Fa(a+456|0);i=Fa(a+440|0);j=Fa(a+424|0);mf(c,q,a+488|0,a+480|0,a+476|0,a+472|0,o,i,j,a+420|0);H[a+16>>2]=18;k=Ra(a+8|0,0,a+16|0);c=a+16|0;b:{if(I[g+11|0]>>>7|0){g=H[f+4>>2]}else{g=I[f+11|0]}c:{if((g|0)>H[a+420>>2]){if(I[f+11|0]>>>7|0){l=H[f+4>>2]}else{l=I[f+11|0]}g=H[a+420>>2];p=H[a+420>>2];if(I[i+11|0]>>>7|0){h=H[i+4>>2]}else{h=I[i+11|0]}if(I[j+11|0]>>>7|0){m=H[j+4>>2]}else{m=I[j+11|0]}g=(p+(h+(m+(l-g<<1)|0)|0)|0)+1|0;break c}h=H[a+420>>2];if(I[j+11|0]>>>7|0){g=H[j+4>>2]}else{g=I[j+11|0]}if(I[i+11|0]>>>7|0){l=H[i+4>>2]}else{l=I[i+11|0]}g=(h+(g+l|0)|0)+2|0}if(g>>>0<101){break b}c=Ca(g<<2);g=H[k>>2];H[k>>2]=c;if(g){na[H[k+4>>2]](g)}c=H[k>>2];if(c){break b}Xa();X()}p=c;r=a+4|0;l=a;m=H[d+4>>2];if(I[f+11|0]>>>7|0){g=H[f>>2]}else{g=f}h=g;if(I[f+11|0]>>>7|0){g=H[f>>2]}else{g=f}if(I[f+11|0]>>>7|0){f=H[f+4>>2]}else{f=I[f+11|0]}lf(p,r,l,m,h,g+(f<<2)|0,n,q,a+480|0,H[a+476>>2],H[a+472>>2],o,i,j,H[a+420>>2]);b=Qb(b,c,H[a+4>>2],H[a>>2],d,e);c=H[k>>2];H[k>>2]=0;if(c){na[H[k+4>>2]](c)}Ba(j);Ba(i);Ba(o);d=H[a+488>>2];c=H[d+4>>2]-1|0;H[d+4>>2]=c;if((c|0)==-1){na[H[H[d>>2]+8>>2]](d)}la=a+496|0;return b|0}function hi(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0;a=la-16|0;la=a;H[a+12>>2]=c;H[a+8>>2]=f;H[a+12>>2]=c;H[a+8>>2]=f;a:{b:{c:{while(1){c=H[a+12>>2];if(!(c>>>0>=d>>>0|f>>>0>=g>>>0)){b=2;i=I[c|0];if(i>>>0>1114111){break b}m=a;d:{if(i<<24>>24>=0){G[f>>1]=i;b=c+1|0;break d}if(i>>>0<194){break b}if(i>>>0<=223){if((d-c|0)<2){break c}j=I[c+1|0];if((j&192)!=128){break a}i=j&63|i<<6&1984;if(i>>>0>1114111){break a}G[f>>1]=i;b=c+2|0;break d}if(i>>>0<=239){if((d-c|0)<3){break c}k=I[c+2|0];j=I[c+1|0];e:{f:{if((i|0)!=237){if((i|0)!=224){break f}if((j&224)==160){break e}break a}if((j&224)==128){break e}break a}if((j&192)!=128){break a}}if((k&192)!=128){break a}i=k&63|((j&63)<<6|i<<12);if((i&65535)>>>0>1114111){break a}G[f>>1]=i;b=c+3|0;break d}if(i>>>0>244){break b}b=1;if((d-c|0)<4){break a}k=I[c+2|0];j=I[c+1|0];g:{h:{switch(i-240|0){case 0:if((j+112&255)>>>0>=48){break b}break g;case 4:if((j&240)!=128){break b}break g;default:break h}}if((j&192)!=128){break b}}if((k&192)!=128){break b}c=I[c+3|0];if((c&192)!=128){break b}if((g-f|0)<4){break a}b=2;c=c&63;l=k<<6;i=i&7;if((c|(l&4032|(j<<12&258048|i<<18)))>>>0>1114111){break a}b=j<<2;G[f>>1]=(k>>>4&3|(b&192|i<<8|b&60))+16320|55296;H[a+8>>2]=f+2;G[f+2>>1]=c|l&960|56320;b=H[a+12>>2]+4|0}H[m+12>>2]=b;f=H[a+8>>2]+2|0;H[a+8>>2]=f;continue}break}b=c>>>0>>0;break a}b=1;break a}b=2}H[e>>2]=H[a+12>>2];H[h>>2]=H[a+8>>2];la=a+16|0;return b|0}function Vi(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;a=la-192|0;la=a;g=H[d+28>>2];H[a+184>>2]=g;H[g+4>>2]=H[g+4>>2]+1;n=pb(a+184|0);g=f;h=H[f+4>>2];a:{if(I[f+11|0]>>>7|0){break a}h=I[g+11|0]}if(h){if(I[g+11|0]>>>7|0){h=H[g>>2]}else{h=g}q=I[h|0]==(na[H[H[n>>2]+28>>2]](n,45)&255)}o=Fa(a+160|0);i=Fa(a+144|0);j=Fa(a+128|0);of(c,q,a+184|0,a+176|0,a+175|0,a+174|0,o,i,j,a+124|0);H[a+16>>2]=18;k=Ra(a+8|0,0,a+16|0);c=a+16|0;b:{if(I[g+11|0]>>>7|0){g=H[f+4>>2]}else{g=I[f+11|0]}c:{if((g|0)>H[a+124>>2]){if(I[f+11|0]>>>7|0){l=H[f+4>>2]}else{l=I[f+11|0]}g=H[a+124>>2];p=H[a+124>>2];if(I[i+11|0]>>>7|0){h=H[i+4>>2]}else{h=I[i+11|0]}if(I[j+11|0]>>>7|0){m=H[j+4>>2]}else{m=I[j+11|0]}g=(p+(h+(m+(l-g<<1)|0)|0)|0)+1|0;break c}h=H[a+124>>2];if(I[j+11|0]>>>7|0){g=H[j+4>>2]}else{g=I[j+11|0]}if(I[i+11|0]>>>7|0){l=H[i+4>>2]}else{l=I[i+11|0]}g=(h+(g+l|0)|0)+2|0}if(g>>>0<101){break b}c=Ca(g);g=H[k>>2];H[k>>2]=c;if(g){na[H[k+4>>2]](g)}c=H[k>>2];if(c){break b}Xa();X()}p=c;r=a+4|0;l=a;m=H[d+4>>2];if(I[f+11|0]>>>7|0){g=H[f>>2]}else{g=f}h=g;if(I[f+11|0]>>>7|0){g=H[f>>2]}else{g=f}if(I[f+11|0]>>>7|0){f=H[f+4>>2]}else{f=I[f+11|0]}nf(p,r,l,m,h,g+f|0,n,q,a+176|0,F[a+175|0],F[a+174|0],o,i,j,H[a+124>>2]);b=Hb(b,c,H[a+4>>2],H[a>>2],d,e);c=H[k>>2];H[k>>2]=0;if(c){na[H[k+4>>2]](c)}Ba(j);Ba(i);Ba(o);d=H[a+184>>2];c=H[d+4>>2]-1|0;H[d+4>>2]=c;if((c|0)==-1){na[H[H[d>>2]+8>>2]](d)}la=a+192|0;return b|0}function Xc(a,b,c,d,e,f,g){var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;j=la-128|0;la=j;H[j+120>>2]=b;H[j+16>>2]=18;n=Ra(j+8|0,0,j+16|0);k=j+16|0;a:{l=(d-c|0)/12|0;if(l>>>0>=101){k=Ca(l);if(!k){break a}b=H[n>>2];H[n>>2]=k;if(b){na[H[n+4>>2]](b)}}h=k;b=c;while(1)if((b|0)==(d|0)){b:while(1){c:{if(!(s=kb(a,j+120|0),t=0,u=l,u?s:t)){if($a(a,j+120|0)){H[f>>2]=H[f>>2]|2}break c}h=H[a>>2];b=H[h+12>>2];d:{if((b|0)==H[h+16>>2]){b=na[H[H[h>>2]+36>>2]](h)|0;break d}b=H[b>>2]}o=b;if(!g){o=na[H[H[e>>2]+28>>2]](e,o)|0}q=p+1|0;r=0;h=k;b=c;while(1)if((b|0)==(d|0)){p=q;if(!r){continue b}Za(a);h=k;b=c;if(l+m>>>0<2){continue b}while(1){if((b|0)==(d|0)){continue b}if(I[b+11|0]>>>7|0){i=H[b+4>>2]}else{i=I[b+11|0]}if(!((i|0)==(p|0)|I[h|0]!=2)){F[h|0]=0;m=m-1|0}h=h+1|0;b=b+12|0;continue}}else{e:{if(I[h|0]!=1){break e}if(I[b+11|0]>>>7|0){i=H[b>>2]}else{i=b}i=H[i+(p<<2)>>2];if(!g){i=na[H[H[e>>2]+28>>2]](e,i)|0}f:{if((o|0)==(i|0)){r=1;if(I[b+11|0]>>>7|0){i=H[b+4>>2]}else{i=I[b+11|0]}if((i|0)!=(q|0)){break e}F[h|0]=2;m=m+1|0;break f}F[h|0]=0}l=l-1|0}h=h+1|0;b=b+12|0;continue}}break}g:{h:{while(1){if((c|0)==(d|0)){break h}if(I[k|0]!=2){k=k+1|0;c=c+12|0;continue}break}d=c;break g}H[f>>2]=H[f>>2]|4}a=n;b=H[a>>2];H[a>>2]=0;if(b){na[H[a+4>>2]](b)}la=j+128|0;return d}else{if(I[b+11|0]>>>7|0){i=H[b+4>>2]}else{i=I[b+11|0]}i:{if(i){F[h|0]=1;break i}F[h|0]=2;m=m+1|0;l=l-1|0}h=h+1|0;b=b+12|0;continue}}Xa();X()}function ii(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0;a=la-16|0;la=a;H[a+12>>2]=c;H[a+8>>2]=f;H[a+12>>2]=c;H[a+8>>2]=f;c=H[a+12>>2];a:{b:{while(1){if(c>>>0>=d>>>0){f=0;break a}f=2;b=J[c>>1];if(b>>>0>1114111){break a}c:{d:{if(b>>>0<=127){f=1;c=H[a+8>>2];if((g-c|0)<1){break a}H[a+8>>2]=c+1;F[c|0]=b;break d}if(b>>>0<=2047){c=H[a+8>>2];if((g-c|0)<2){break b}H[a+8>>2]=c+1;F[c|0]=b>>>6|192;c=H[a+8>>2];H[a+8>>2]=c+1;F[c|0]=b&63|128;break d}if(b>>>0<=55295){c=H[a+8>>2];if((g-c|0)<3){break b}H[a+8>>2]=c+1;F[c|0]=b>>>12|224;c=H[a+8>>2];H[a+8>>2]=c+1;F[c|0]=b>>>6&63|128;c=H[a+8>>2];H[a+8>>2]=c+1;F[c|0]=b&63|128;break d}if(b>>>0<=56319){f=1;if((d-c|0)<4){break a}i=J[c+2>>1];if((i&64512)!=56320){break c}if((g-H[a+8>>2]|0)<4){break a}f=b&960;if((i&1023|(b<<10&64512|f<<10))+65536>>>0>1114111){break c}H[a+12>>2]=c+2;c=H[a+8>>2];H[a+8>>2]=c+1;j=c;c=(f>>>6|0)+1|0;F[j|0]=c>>>2|240;f=H[a+8>>2];H[a+8>>2]=f+1;F[f|0]=c<<4&48|b>>>2&15|128;c=H[a+8>>2];H[a+8>>2]=c+1;F[c|0]=i>>>6&15|b<<4&48|128;b=H[a+8>>2];H[a+8>>2]=b+1;F[b|0]=i&63|128;break d}if(b>>>0<57344){break a}c=H[a+8>>2];if((g-c|0)<3){break b}H[a+8>>2]=c+1;F[c|0]=b>>>12|224;c=H[a+8>>2];H[a+8>>2]=c+1;F[c|0]=b>>>6&63|128;c=H[a+8>>2];H[a+8>>2]=c+1;F[c|0]=b&63|128}c=H[a+12>>2]+2|0;H[a+12>>2]=c;continue}break}f=2;break a}f=1}H[e>>2]=H[a+12>>2];H[h>>2]=H[a+8>>2];la=a+16|0;return f|0}function Ja(){var a=0,b=0,c=0,d=0,e=0,f=0,g=0,h=0;a:{if(F[48512]&1){break a}if(!Wa(48512)){break a}e=la-32|0;la=e;while(1){h=(e+8|0)+(c<<2)|0;a=0;b=1<>2];if(a){continue}break}}a=H[12085];if(a){while(1){b=a;if(!cb(d,a+8|0)){break d}a=H[a+24>>2];if(a){continue}break}}a=Ca(28);i:{if(!a){a=0;break i}b=H[7390];H[a>>2]=H[7389];H[a+4>>2]=b;b=a+8|0;gb(b,d,f);F[b+f|0]=0;H[a+24>>2]=H[12085];H[12085]=a}a=a|c?a:29556}b=a}H[h>>2]=b;g=((b|0)!=0)+g|0;c=c+1|0;if((c|0)!=6){continue}break}c=29584;j:{k:{l:{switch(g|0){case 0:break j;case 1:break l;default:break k}}if(H[e+8>>2]!=29556){break k}c=29608;break j}c=Ca(24);if(!c){break j}a=e;b=H[a+12>>2];H[c>>2]=H[a+8>>2];H[c+4>>2]=b;b=H[a+28>>2];H[c+16>>2]=H[a+24>>2];H[c+20>>2]=b;b=H[a+20>>2];H[c+8>>2]=H[a+16>>2];H[c+12>>2]=b}la=e+32|0;H[12127]=c;Va(48512)}return H[12127]}function Zc(a,b,c,d,e,f,g){var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;j=la-128|0;la=j;H[j+120>>2]=b;H[j+16>>2]=18;n=Ra(j+8|0,0,j+16|0);k=j+16|0;a:{l=(d-c|0)/12|0;if(l>>>0>=101){k=Ca(l);if(!k){break a}b=H[n>>2];H[n>>2]=k;if(b){na[H[n+4>>2]](b)}}h=k;b=c;while(1)if((b|0)==(d|0)){b:while(1){c:{if(!(t=lb(a,j+120|0),u=0,v=l,v?t:u)){if(ab(a,j+120|0)){H[f>>2]=H[f>>2]|2}break c}o=Sa(a);if(!g){o=na[H[H[e>>2]+12>>2]](e,o)|0}r=p+1|0;s=0;h=k;b=c;while(1)if((b|0)==(d|0)){p=r;if(!s){continue b}_a(a);h=k;b=c;if(l+m>>>0<2){continue b}while(1){if((b|0)==(d|0)){continue b}if(I[b+11|0]>>>7|0){i=H[b+4>>2]}else{i=I[b+11|0]}if(!((i|0)==(p|0)|I[h|0]!=2)){F[h|0]=0;m=m-1|0}h=h+1|0;b=b+12|0;continue}}else{d:{if(I[h|0]!=1){break d}if(I[b+11|0]>>>7|0){i=H[b>>2]}else{i=b}q=F[i+p|0];i=o&255;if(!g){q=na[H[H[e>>2]+12>>2]](e,q)|0}e:{if((q&255)==(i|0)){s=1;if(I[b+11|0]>>>7|0){i=H[b+4>>2]}else{i=I[b+11|0]}if((i|0)!=(r|0)){break d}F[h|0]=2;m=m+1|0;break e}F[h|0]=0}l=l-1|0}h=h+1|0;b=b+12|0;continue}}break}f:{g:{while(1){if((c|0)==(d|0)){break g}if(I[k|0]!=2){k=k+1|0;c=c+12|0;continue}break}d=c;break f}H[f>>2]=H[f>>2]|4}a=n;b=H[a>>2];H[a>>2]=0;if(b){na[H[a+4>>2]](b)}la=j+128|0;return d}else{if(I[b+11|0]>>>7|0){i=H[b+4>>2]}else{i=I[b+11|0]}h:{if(i){F[h|0]=1;break h}F[h|0]=2;m=m+1|0;l=l-1|0}h=h+1|0;b=b+12|0;continue}}Xa();X()}function Ob(a,b,c,d,e,f,g,h){var i=0,j=0,k=0,l=0,m=0;j=la-32|0;la=j;H[j+16>>2]=c;H[j+24>>2]=b;b=H[d+28>>2];H[j+8>>2]=b;H[b+4>>2]=H[b+4>>2]+1;b=nb(j+8|0);c=H[j+8>>2];i=H[c+4>>2]-1|0;H[c+4>>2]=i;if((i|0)==-1){na[H[H[c>>2]+8>>2]](c)}H[e>>2]=0;c=0;a:{while(1){if(c|(g|0)==(h|0)){break a}b:{if($a(j+24|0,j+16|0)){break b}c:{if((na[H[H[b>>2]+52>>2]](b,H[g>>2],0)|0)==37){c=g+4|0;if((h|0)==(c|0)){break b}k=0;i=na[H[H[b>>2]+52>>2]](b,H[c>>2],0)|0;d:{if(!((i|0)==69|(i&255)==48)){c=g;break d}if((g+8|0)==(h|0)){break b}k=i;i=na[H[H[b>>2]+52>>2]](b,H[g+8>>2],0)|0}l=j,m=na[H[H[a>>2]+36>>2]](a,H[j+24>>2],H[j+16>>2],d,e,f,i,k)|0,H[l+24>>2]=m;g=c+8|0;break c}if(na[H[H[b>>2]+12>>2]](b,8192,H[g>>2])|0){while(1){e:{g=g+4|0;if((h|0)==(g|0)){g=h;break e}if(na[H[H[b>>2]+12>>2]](b,8192,H[g>>2])|0){continue}}break}while(1){if(!kb(j+24|0,j+16|0)){break c}c=b;i=H[j+24>>2];k=H[i+12>>2];f:{if((k|0)==H[i+16>>2]){i=na[H[H[i>>2]+36>>2]](i)|0;break f}i=H[k>>2]}if(!(na[H[H[b>>2]+12>>2]](c,8192,i)|0)){break c}Za(j+24|0);continue}}c=b;i=H[j+24>>2];k=H[i+12>>2];g:{if((k|0)==H[i+16>>2]){i=na[H[H[i>>2]+36>>2]](i)|0;break g}i=H[k>>2]}if((na[H[H[b>>2]+28>>2]](c,i)|0)==(na[H[H[b>>2]+28>>2]](b,H[g>>2])|0)){g=g+4|0;Za(j+24|0);break c}H[e>>2]=4}c=H[e>>2];continue}break}H[e>>2]=4}if($a(j+24|0,j+16|0)){H[e>>2]=H[e>>2]|2}la=j+32|0;return H[j+24>>2]}function Gj(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;a=la-384|0;la=a;H[a+368>>2]=c;H[a+376>>2]=b;Md(a+216|0,d,a+240|0,a+236|0,a+232|0);b=Fa(a+200|0);Ea(b,I[b+11|0]>>>7|0?(H[b+8>>2]&2147483647)-1|0:10);d=a;if(I[b+11|0]>>>7|0){c=H[b>>2]}else{c=b}H[d+196>>2]=c;H[a+28>>2]=a+32;H[a+24>>2]=0;F[a+23|0]=1;F[a+22|0]=69;while(1){a:{if(!kb(a+376|0,a+368|0)){break a}g=H[a+196>>2];if(I[b+11|0]>>>7|0){d=H[b+4>>2]}else{d=I[b+11|0]}if((g|0)==(d+c|0)){c=b;b:{if(I[c+11|0]>>>7|0){d=H[c+4>>2];break b}d=I[c+11|0]}g=c;if(I[c+11|0]>>>7|0){h=H[c+4>>2]}else{h=I[c+11|0]}Ea(g,h<<1);Ea(c,I[c+11|0]>>>7|0?(H[c+8>>2]&2147483647)-1|0:10);g=a;if(I[c+11|0]>>>7|0){c=H[b>>2]}else{c=b}H[g+196>>2]=d+c}d=H[a+376>>2];g=H[d+12>>2];c:{if((g|0)==H[d+16>>2]){d=na[H[H[d>>2]+36>>2]](d)|0;break c}d=H[g>>2]}if(Ld(d,a+23|0,a+22|0,c,a+196|0,H[a+236>>2],H[a+232>>2],a+216|0,a+32|0,a+28|0,a+24|0,a+240|0)){break a}Za(a+376|0);continue}break}if(I[a+227|0]>>>7|0){d=H[a+220>>2]}else{d=I[a+227|0]}d:{if(!d|!I[a+23|0]){break d}d=H[a+28>>2];if((d-(a+32|0)|0)>159){break d}H[a+28>>2]=d+4;H[d>>2]=H[a+24>>2]}Zf(a,c,H[a+196>>2],e);c=H[a+4>>2];H[f>>2]=H[a>>2];H[f+4>>2]=c;c=H[a+12>>2];H[f+8>>2]=H[a+8>>2];H[f+12>>2]=c;jb(a+216|0,a+32|0,H[a+28>>2],e);if($a(a+376|0,a+368|0)){H[e>>2]=H[e>>2]|2}c=H[a+376>>2];Ba(b);Ba(a+216|0);la=a+384|0;return c|0}function Yi(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;a=la-624|0;la=a;H[a+608>>2]=c;H[a+616>>2]=b;H[a+16>>2]=19;h=Ra(a+200|0,a+208|0,a+16|0);b=H[e+28>>2];H[a+192>>2]=b;H[b+4>>2]=H[b+4>>2]+1;b=nb(a+192|0);F[a+191|0]=0;a:{if(!tf(a+616|0,c,d,a+192|0,H[e+4>>2],f,a+191|0,b,h,a+196|0,a+608|0)){break a}c=I[9967]|I[9968]<<8|(I[9969]<<16|I[9970]<<24);F[a+183|0]=c;F[a+184|0]=c>>>8;F[a+185|0]=c>>>16;F[a+186|0]=c>>>24;c=I[9964]|I[9965]<<8|(I[9966]<<16|I[9967]<<24);H[a+176>>2]=I[9960]|I[9961]<<8|(I[9962]<<16|I[9963]<<24);H[a+180>>2]=c;na[H[H[b>>2]+48>>2]](b,a+176|0,a+186|0,a+128|0)|0;H[a+16>>2]=18;b=Ra(a+8|0,0,a+16|0);c=a+16|0;b:{if((H[a+196>>2]-H[h>>2]|0)>=393){d=Ca((H[a+196>>2]-H[h>>2]>>2)+2|0);c=H[b>>2];H[b>>2]=d;if(c){na[H[b+4>>2]](c)}if(!H[b>>2]){break b}c=H[b>>2]}if(I[a+191|0]){F[c|0]=45;c=c+1|0}e=H[h>>2];while(1){if(K[a+196>>2]<=e>>>0){c:{F[c|0]=0;H[a>>2]=g;if((og(a+16|0,a)|0)!=1){break c}c=H[b>>2];H[b>>2]=0;if(c){na[H[b+4>>2]](c)}break a}}else{i=c,j=I[(a+176|0)+(Kd(a+128|0,a+168|0,e)-(a+128|0)>>2)|0],F[i|0]=j;c=c+1|0;e=e+4|0;continue}break}Xa();X()}Xa();X()}if($a(a+616|0,a+608|0)){H[f>>2]=H[f>>2]|2}d=H[a+616>>2];b=H[a+192>>2];c=H[b+4>>2]-1|0;H[b+4>>2]=c;if((c|0)==-1){na[H[H[b>>2]+8>>2]](b)}b=H[h>>2];H[h>>2]=0;if(b){na[H[h+4>>2]](b)}la=a+624|0;return d|0}function wj(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0;a=la-256|0;la=a;H[a+248>>2]=37;H[a+252>>2]=0;m=Uc(a+248|1,9764,H[c+4>>2]);H[a+204>>2]=a+208;i=Ja();a:{if(m){j=H[c+8>>2];H[a+72>>2]=g;H[a+76>>2]=h;k=a- -64|0;H[k>>2]=e;H[k+4>>2]=f;H[a+48>>2]=j;i=ib(a+208|0,30,i,a+248|0,a+48|0);break a}H[a+80>>2]=e;H[a+84>>2]=f;H[a+88>>2]=g;H[a+92>>2]=h;i=ib(a+208|0,30,i,a+248|0,a+80|0)}H[a+128>>2]=18;j=Ra(a+192|0,0,a+128|0);l=a+208|0;k=l;b:{if((i|0)>=30){i=Ja();c:{if(m){k=H[c+8>>2];H[a+24>>2]=g;H[a+28>>2]=h;H[a+16>>2]=e;H[a+20>>2]=f;H[a>>2]=k;i=Lb(a+204|0,i,a+248|0,a);break c}H[a+32>>2]=e;H[a+36>>2]=f;H[a+40>>2]=g;H[a+44>>2]=h;i=Lb(a+204|0,i,a+248|0,a+32|0)}if((i|0)==-1){break b}e=H[j>>2];H[j>>2]=H[a+204>>2];if(e){na[H[j+4>>2]](e)}k=H[a+204>>2]}g=i+k|0;h=tb(k,g,c);H[a+128>>2]=18;e=Ra(a+120|0,0,a+128|0);d:{if(H[a+204>>2]==(a+208|0)){i=a+128|0;break d}i=Ca(i<<1);if(!i){break b}f=H[e>>2];H[e>>2]=i;if(f){na[H[e+4>>2]](f)}l=H[a+204>>2]}f=H[c+28>>2];H[a+104>>2]=f;H[f+4>>2]=H[f+4>>2]+1;Qf(l,h,g,i,a+116|0,a+112|0,a+104|0);f=H[a+104>>2];g=H[f+4>>2]-1|0;H[f+4>>2]=g;if((g|0)==-1){na[H[H[f>>2]+8>>2]](f)}c=Hb(b,i,H[a+116>>2],H[a+112>>2],c,d);b=H[e>>2];H[e>>2]=0;if(b){na[H[e+4>>2]](b)}b=H[j>>2];H[j>>2]=0;if(b){na[H[j+4>>2]](b)}la=a+256|0;return c|0}Xa();X()}function oj(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0;a=la-432|0;la=a;H[a+424>>2]=37;H[a+428>>2]=0;m=Uc(a+424|1,9764,H[c+4>>2]);H[a+380>>2]=a+384;i=Ja();a:{if(m){j=H[c+8>>2];H[a+72>>2]=g;H[a+76>>2]=h;k=a- -64|0;H[k>>2]=e;H[k+4>>2]=f;H[a+48>>2]=j;i=ib(a+384|0,30,i,a+424|0,a+48|0);break a}H[a+80>>2]=e;H[a+84>>2]=f;H[a+88>>2]=g;H[a+92>>2]=h;i=ib(a+384|0,30,i,a+424|0,a+80|0)}H[a+128>>2]=18;j=Ra(a+368|0,0,a+128|0);l=a+384|0;k=l;b:{if((i|0)>=30){i=Ja();c:{if(m){k=H[c+8>>2];H[a+24>>2]=g;H[a+28>>2]=h;H[a+16>>2]=e;H[a+20>>2]=f;H[a>>2]=k;i=Lb(a+380|0,i,a+424|0,a);break c}H[a+32>>2]=e;H[a+36>>2]=f;H[a+40>>2]=g;H[a+44>>2]=h;i=Lb(a+380|0,i,a+424|0,a+32|0)}if((i|0)==-1){break b}e=H[j>>2];H[j>>2]=H[a+380>>2];if(e){na[H[j+4>>2]](e)}k=H[a+380>>2]}g=i+k|0;h=tb(k,g,c);H[a+128>>2]=18;e=Ra(a+120|0,0,a+128|0);d:{if(H[a+380>>2]==(a+384|0)){i=a+128|0;break d}i=Ca(i<<3);if(!i){break b}f=H[e>>2];H[e>>2]=i;if(f){na[H[e+4>>2]](f)}l=H[a+380>>2]}f=H[c+28>>2];H[a+104>>2]=f;H[f+4>>2]=H[f+4>>2]+1;Nf(l,h,g,i,a+116|0,a+112|0,a+104|0);f=H[a+104>>2];g=H[f+4>>2]-1|0;H[f+4>>2]=g;if((g|0)==-1){na[H[H[f>>2]+8>>2]](f)}c=Qb(b,i,H[a+116>>2],H[a+112>>2],c,d);b=H[e>>2];H[e>>2]=0;if(b){na[H[e+4>>2]](b)}b=H[j>>2];H[j>>2]=0;if(b){na[H[j+4>>2]](b)}la=a+432|0;return c|0}Xa();X()}function _i(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;a=la-288|0;la=a;H[a+272>>2]=c;H[a+280>>2]=b;H[a+16>>2]=19;h=Ra(a+152|0,a+160|0,a+16|0);b=H[e+28>>2];H[a+144>>2]=b;H[b+4>>2]=H[b+4>>2]+1;b=pb(a+144|0);F[a+143|0]=0;a:{if(!Bf(a+280|0,c,d,a+144|0,H[e+4>>2],f,a+143|0,b,h,a+148|0,a+260|0)){break a}c=I[9967]|I[9968]<<8|(I[9969]<<16|I[9970]<<24);F[a+135|0]=c;F[a+136|0]=c>>>8;F[a+137|0]=c>>>16;F[a+138|0]=c>>>24;c=I[9964]|I[9965]<<8|(I[9966]<<16|I[9967]<<24);H[a+128>>2]=I[9960]|I[9961]<<8|(I[9962]<<16|I[9963]<<24);H[a+132>>2]=c;na[H[H[b>>2]+32>>2]](b,a+128|0,a+138|0,a+118|0)|0;H[a+16>>2]=18;b=Ra(a+8|0,0,a+16|0);c=a+16|0;b:{if((H[a+148>>2]-H[h>>2]|0)>=99){d=Ca((H[a+148>>2]-H[h>>2]|0)+2|0);c=H[b>>2];H[b>>2]=d;if(c){na[H[b+4>>2]](c)}if(!H[b>>2]){break b}c=H[b>>2]}if(I[a+143|0]){F[c|0]=45;c=c+1|0}e=H[h>>2];while(1){if(K[a+148>>2]<=e>>>0){c:{F[c|0]=0;H[a>>2]=g;if((og(a+16|0,a)|0)!=1){break c}c=H[b>>2];H[b>>2]=0;if(c){na[H[b+4>>2]](c)}break a}}else{i=c,j=I[((Nd(a+118|0,a+128|0,e)-a|0)+a|0)+10|0],F[i|0]=j;c=c+1|0;e=e+1|0;continue}break}Xa();X()}Xa();X()}if(ab(a+280|0,a+272|0)){H[f>>2]=H[f>>2]|2}d=H[a+280>>2];b=H[a+144>>2];c=H[b+4>>2]-1|0;H[b+4>>2]=c;if((c|0)==-1){na[H[H[b>>2]+8>>2]](b)}b=H[h>>2];H[h>>2]=0;if(b){na[H[h+4>>2]](b)}la=a+288|0;return d|0}function ei(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0;a=la-16|0;la=a;H[a+12>>2]=c;H[a+8>>2]=f;H[a+12>>2]=c;H[a+8>>2]=f;a:{b:{while(1){i=H[a+12>>2];if(!(i>>>0>=d>>>0|f>>>0>=g>>>0)){c=F[i|0];b=c&255;c:{if((c|0)>=0){if(b>>>0<=1114111){l=1;break c}c=2;break a}c=2;if(b>>>0<194){break a}if(b>>>0<=223){if((d-i|0)<2){break b}j=I[i+1|0];if((j&192)!=128){break a}l=2;b=j&63|b<<6&1984;if(b>>>0<=1114111){break c}break a}if(b>>>0<=239){if((d-i|0)<3){break b}j=I[i+2|0];k=I[i+1|0];d:{e:{if((b|0)!=237){if((b|0)!=224){break e}if((k&224)==160){break d}break a}if((k&224)==128){break d}break a}if((k&192)!=128){break a}}if((j&192)!=128){break a}l=3;b=j&63|(b<<12&61440|(k&63)<<6);if(b>>>0<=1114111){break c}break a}if(b>>>0>244){break a}if((d-i|0)<4){break b}k=I[i+2|0];m=I[i+1|0];f:{g:{switch(b-240|0){case 0:if((m+112&255)>>>0<48){break f}break a;case 4:if((m&240)==128){break f}break a;default:break g}}if((m&192)!=128){break a}}if((k&192)!=128){break a}j=I[i+3|0];if((j&192)!=128){break a}l=4;b=j&63|(k<<6&4032|(b<<18&1835008|(m&63)<<12));if(b>>>0>1114111){break a}}H[f>>2]=b;H[a+12>>2]=i+l;f=H[a+8>>2]+4|0;H[a+8>>2]=f;continue}break}c=d>>>0>i>>>0;break a}c=1}H[e>>2]=H[a+12>>2];H[h>>2]=H[a+8>>2];la=a+16|0;return c|0}function kg(a,b,c,d,e){var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;k=la-16|0;la=k;a:{b:{c:{if((c|0)<=36){f=I[a|0];if(f){break c}g=a;break b}H[12064]=28;d=0;e=0;break a}g=a;d:{while(1){f=f<<24>>24;if(!((f|0)==32|f-9>>>0<5)){break d}f=I[g+1|0];h=g+1|0;g=h;if(f){continue}break}g=h;break b}e:{f=I[g|0];switch(f-43|0){case 0:case 2:break e;default:break b}}m=(f|0)==45?-1:0;g=g+1|0}f:{if(!(c&-17|I[g|0]!=48)){o=1;if((I[g+1|0]&223)==88){g=g+2|0;l=16;break f}g=g+1|0;l=c?c:8;break f}l=c?c:10}p=l;q=l>>31;c=0;while(1){g:{f=-48;h=F[g|0];h:{if((h-48&255)>>>0<10){break h}f=-87;if((h-97&255)>>>0<26){break h}f=-55;if((h-65&255)>>>0>25){break g}}h=f+h|0;if((h|0)>=(l|0)){break g}eb(k,p,q,0,0,j,i,0,0);f=1;i:{if(H[k+8>>2]|H[k+12>>2]){break i}r=dk(j,i,p,q);n=ma;s=h>>31;t=s^-1;if((n|0)==(t|0)&(h^-1)>>>0>>0|n>>>0>t>>>0){break i}i=n+s|0;f=h+r|0;i=f>>>0>>0?i+1|0:i;j=f;o=1;f=c}g=g+1|0;c=f;continue}break}if(b){H[b>>2]=o?g:a}j:{k:{if(c){H[12064]=68;a=d&1;m=a?0:m;j=d;i=e;break k}if((e|0)==(i|0)&d>>>0>j>>>0|e>>>0>i>>>0){break j}a=d&1}if(!(a|m)){H[12064]=68;a=d;d=a-1|0;e=e-(a>>>0<1)|0;break a}if((e|0)==(i|0)&d>>>0>=j>>>0|e>>>0>i>>>0){break j}H[12064]=68;break a}a=m;b=a^j;d=b-a|0;c=a>>31;e=(c^i)-((a>>>0>b>>>0)+c|0)|0}la=k+16|0;ma=e;return d}function Pb(a,b,c,d,e,f,g,h){var i=0,j=0,k=0,l=0,m=0,n=0;i=la-32|0;la=i;H[i+16>>2]=c;H[i+24>>2]=b;b=H[d+28>>2];H[i+8>>2]=b;H[b+4>>2]=H[b+4>>2]+1;j=pb(i+8|0);b=H[i+8>>2];c=H[b+4>>2]-1|0;H[b+4>>2]=c;if((c|0)==-1){na[H[H[b>>2]+8>>2]](b)}H[e>>2]=0;c=0;a:{while(1){if(c|(g|0)==(h|0)){break a}b:{if(ab(i+24|0,i+16|0)){break b}c:{if((na[H[H[j>>2]+36>>2]](j,F[g|0],0)|0)==37){c=g+1|0;if((h|0)==(c|0)){break b}k=0;b=na[H[H[j>>2]+36>>2]](j,F[c|0],0)|0;d:{if(!((b|0)==69|(b&255)==48)){c=g;break d}if((g+2|0)==(h|0)){break b}k=b;b=na[H[H[j>>2]+36>>2]](j,F[g+2|0],0)|0}l=i,m=na[H[H[a>>2]+36>>2]](a,H[i+24>>2],H[i+16>>2],d,e,f,b,k)|0,H[l+24>>2]=m;g=c+2|0;break c}b=F[g|0];if((b|0)>=0){b=J[H[j+8>>2]+((b&255)<<1)>>1]&8192}else{b=0}if(b){while(1){e:{g=g+1|0;if((h|0)==(g|0)){g=h;break e}b=F[g|0];if((b|0)>=0){b=J[H[j+8>>2]+((b&255)<<1)>>1]&8192}else{b=0}if(b){continue}}break}while(1){if(!lb(i+24|0,i+16|0)){break c}b=Sa(i+24|0);if((b|0)>=0){b=(J[H[j+8>>2]+((b&255)<<1)>>1]&8192)!=0}else{b=0}if(!b){break c}_a(i+24|0);continue}}if(((m=j,n=Sa(i+24|0),l=H[H[j>>2]+12>>2],na[l](m|0,n|0)|0)|0)==(na[H[H[j>>2]+12>>2]](j,F[g|0])|0)){g=g+1|0;_a(i+24|0);break c}H[e>>2]=4}c=H[e>>2];continue}break}H[e>>2]=4}if(ab(i+24|0,i+16|0)){H[e>>2]=H[e>>2]|2}la=i+32|0;return H[i+24>>2]}function Ij(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=O(0);a=la-368|0;la=a;H[a+352>>2]=c;H[a+360>>2]=b;Md(a+200|0,d,a+224|0,a+220|0,a+216|0);b=Fa(a+184|0);Ea(b,I[b+11|0]>>>7|0?(H[b+8>>2]&2147483647)-1|0:10);d=a;if(I[b+11|0]>>>7|0){c=H[b>>2]}else{c=b}H[d+180>>2]=c;H[a+12>>2]=a+16;H[a+8>>2]=0;F[a+7|0]=1;F[a+6|0]=69;while(1){a:{if(!kb(a+360|0,a+352|0)){break a}g=H[a+180>>2];if(I[b+11|0]>>>7|0){d=H[b+4>>2]}else{d=I[b+11|0]}if((g|0)==(d+c|0)){c=b;b:{if(I[c+11|0]>>>7|0){d=H[c+4>>2];break b}d=I[c+11|0]}g=c;if(I[c+11|0]>>>7|0){h=H[c+4>>2]}else{h=I[c+11|0]}Ea(g,h<<1);Ea(c,I[c+11|0]>>>7|0?(H[c+8>>2]&2147483647)-1|0:10);g=a;if(I[c+11|0]>>>7|0){c=H[b>>2]}else{c=b}H[g+180>>2]=d+c}d=H[a+360>>2];g=H[d+12>>2];c:{if((g|0)==H[d+16>>2]){d=na[H[H[d>>2]+36>>2]](d)|0;break c}d=H[g>>2]}if(Ld(d,a+7|0,a+6|0,c,a+180|0,H[a+220>>2],H[a+216>>2],a+200|0,a+16|0,a+12|0,a+8|0,a+224|0)){break a}Za(a+360|0);continue}break}if(I[a+211|0]>>>7|0){d=H[a+204>>2]}else{d=I[a+211|0]}d:{if(!d|!I[a+7|0]){break d}d=H[a+12>>2];if((d-(a+16|0)|0)>159){break d}H[a+12>>2]=d+4;H[d>>2]=H[a+8>>2]}i=f,j=$f(c,H[a+180>>2],e),L[i>>2]=j;jb(a+200|0,a+16|0,H[a+12>>2],e);if($a(a+360|0,a+352|0)){H[e>>2]=H[e>>2]|2}c=H[a+360>>2];Ba(b);Ba(a+200|0);la=a+368|0;return c|0}function Hj(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;a=la-368|0;la=a;H[a+352>>2]=c;H[a+360>>2]=b;Md(a+200|0,d,a+224|0,a+220|0,a+216|0);b=Fa(a+184|0);Ea(b,I[b+11|0]>>>7|0?(H[b+8>>2]&2147483647)-1|0:10);d=a;if(I[b+11|0]>>>7|0){c=H[b>>2]}else{c=b}H[d+180>>2]=c;H[a+12>>2]=a+16;H[a+8>>2]=0;F[a+7|0]=1;F[a+6|0]=69;while(1){a:{if(!kb(a+360|0,a+352|0)){break a}g=H[a+180>>2];if(I[b+11|0]>>>7|0){d=H[b+4>>2]}else{d=I[b+11|0]}if((g|0)==(d+c|0)){c=b;b:{if(I[c+11|0]>>>7|0){d=H[c+4>>2];break b}d=I[c+11|0]}g=c;if(I[c+11|0]>>>7|0){h=H[c+4>>2]}else{h=I[c+11|0]}Ea(g,h<<1);Ea(c,I[c+11|0]>>>7|0?(H[c+8>>2]&2147483647)-1|0:10);g=a;if(I[c+11|0]>>>7|0){c=H[b>>2]}else{c=b}H[g+180>>2]=d+c}d=H[a+360>>2];g=H[d+12>>2];c:{if((g|0)==H[d+16>>2]){d=na[H[H[d>>2]+36>>2]](d)|0;break c}d=H[g>>2]}if(Ld(d,a+7|0,a+6|0,c,a+180|0,H[a+220>>2],H[a+216>>2],a+200|0,a+16|0,a+12|0,a+8|0,a+224|0)){break a}Za(a+360|0);continue}break}if(I[a+211|0]>>>7|0){d=H[a+204>>2]}else{d=I[a+211|0]}d:{if(!d|!I[a+7|0]){break d}d=H[a+12>>2];if((d-(a+16|0)|0)>159){break d}H[a+12>>2]=d+4;H[d>>2]=H[a+8>>2]}i=f,j=_f(c,H[a+180>>2],e),M[i>>3]=j;jb(a+200|0,a+16|0,H[a+12>>2],e);if($a(a+360|0,a+352|0)){H[e>>2]=H[e>>2]|2}c=H[a+360>>2];Ba(b);Ba(a+200|0);la=a+368|0;return c|0}function Pj(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;a=la-288|0;la=a;H[a+272>>2]=c;H[a+280>>2]=b;Pd(a+224|0,d,a+240|0,a+239|0,a+238|0);b=Fa(a+208|0);Ea(b,I[b+11|0]>>>7|0?(H[b+8>>2]&2147483647)-1|0:10);d=a;if(I[b+11|0]>>>7|0){c=H[b>>2]}else{c=b}H[d+204>>2]=c;H[a+28>>2]=a+32;H[a+24>>2]=0;F[a+23|0]=1;F[a+22|0]=69;while(1){a:{if(!lb(a+280|0,a+272|0)){break a}g=H[a+204>>2];if(I[b+11|0]>>>7|0){d=H[b+4>>2]}else{d=I[b+11|0]}if((g|0)==(d+c|0)){c=b;b:{if(I[c+11|0]>>>7|0){d=H[c+4>>2];break b}d=I[c+11|0]}g=c;if(I[c+11|0]>>>7|0){h=H[c+4>>2]}else{h=I[c+11|0]}Ea(g,h<<1);Ea(c,I[c+11|0]>>>7|0?(H[c+8>>2]&2147483647)-1|0:10);g=a;if(I[c+11|0]>>>7|0){c=H[b>>2]}else{c=b}H[g+204>>2]=d+c}if(Od(Sa(a+280|0),a+23|0,a+22|0,c,a+204|0,F[a+239|0],F[a+238|0],a+224|0,a+32|0,a+28|0,a+24|0,a+240|0)){break a}_a(a+280|0);continue}break}if(I[a+235|0]>>>7|0){d=H[a+228>>2]}else{d=I[a+235|0]}c:{if(!d|!I[a+23|0]){break c}d=H[a+28>>2];if((d-(a+32|0)|0)>159){break c}H[a+28>>2]=d+4;H[d>>2]=H[a+24>>2]}Zf(a,c,H[a+204>>2],e);c=H[a+4>>2];H[f>>2]=H[a>>2];H[f+4>>2]=c;c=H[a+12>>2];H[f+8>>2]=H[a+8>>2];H[f+12>>2]=c;jb(a+224|0,a+32|0,H[a+28>>2],e);if(ab(a+280|0,a+272|0)){H[e>>2]=H[e>>2]|2}c=H[a+280>>2];Ba(b);Ba(a+224|0);la=a+288|0;return c|0}function Fj(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;a=la-352|0;la=a;H[a+336>>2]=c;H[a+344>>2]=b;h=Fa(a+208|0);b=H[d+28>>2];H[a+16>>2]=b;H[b+4>>2]=H[b+4>>2]+1;b=nb(a+16|0);na[H[H[b>>2]+48>>2]](b,33648,33674,a+224|0)|0;b=H[a+16>>2];c=H[b+4>>2]-1|0;H[b+4>>2]=c;if((c|0)==-1){na[H[H[b>>2]+8>>2]](b)}c=Fa(a+192|0);Ea(c,I[c+11|0]>>>7|0?(H[c+8>>2]&2147483647)-1|0:10);d=a;if(I[c+11|0]>>>7|0){b=H[c>>2]}else{b=c}H[d+188>>2]=b;H[a+12>>2]=a+16;H[a+8>>2]=0;while(1){a:{if(!kb(a+344|0,a+336|0)){break a}g=H[a+188>>2];if(I[c+11|0]>>>7|0){d=H[c+4>>2]}else{d=I[c+11|0]}if((g|0)==(d+b|0)){b=c;b:{if(I[b+11|0]>>>7|0){d=H[b+4>>2];break b}d=I[b+11|0]}g=b;if(I[b+11|0]>>>7|0){i=H[b+4>>2]}else{i=I[b+11|0]}Ea(g,i<<1);Ea(b,I[b+11|0]>>>7|0?(H[b+8>>2]&2147483647)-1|0:10);g=a;if(I[b+11|0]>>>7|0){b=H[c>>2]}else{b=c}H[g+188>>2]=d+b}d=H[a+344>>2];g=H[d+12>>2];c:{if((g|0)==H[d+16>>2]){d=na[H[H[d>>2]+36>>2]](d)|0;break c}d=H[g>>2]}if(kc(d,16,b,a+188|0,a+8|0,0,h,a+16|0,a+12|0,a+224|0)){break a}Za(a+344|0);continue}break}Ea(c,H[a+188>>2]-b|0);if(I[c+11|0]>>>7|0){b=H[c>>2]}else{b=c}d=Ja();H[a>>2]=f;if((Yf(b,d,a)|0)!=1){H[e>>2]=4}if($a(a+344|0,a+336|0)){H[e>>2]=H[e>>2]|2}b=H[a+344>>2];Ba(c);Ba(h);la=a+352|0;return b|0}function Lj(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;a=la-352|0;la=a;H[a+336>>2]=c;H[a+344>>2]=b;h=Mb(d);j=uc(d,a+224|0);tc(a+208|0,d,a+332|0);b=Fa(a+192|0);Ea(b,I[b+11|0]>>>7|0?(H[b+8>>2]&2147483647)-1|0:10);d=a;if(I[b+11|0]>>>7|0){c=H[b>>2]}else{c=b}H[d+188>>2]=c;H[a+12>>2]=a+16;H[a+8>>2]=0;while(1){a:{if(!kb(a+344|0,a+336|0)){break a}g=H[a+188>>2];if(I[b+11|0]>>>7|0){d=H[b+4>>2]}else{d=I[b+11|0]}if((g|0)==(d+c|0)){c=b;b:{if(I[c+11|0]>>>7|0){d=H[c+4>>2];break b}d=I[c+11|0]}g=c;if(I[c+11|0]>>>7|0){i=H[c+4>>2]}else{i=I[c+11|0]}Ea(g,i<<1);Ea(c,I[c+11|0]>>>7|0?(H[c+8>>2]&2147483647)-1|0:10);g=a;if(I[c+11|0]>>>7|0){c=H[b>>2]}else{c=b}H[g+188>>2]=d+c}d=H[a+344>>2];g=H[d+12>>2];c:{if((g|0)==H[d+16>>2]){d=na[H[H[d>>2]+36>>2]](d)|0;break c}d=H[g>>2]}if(kc(d,h,c,a+188|0,a+8|0,H[a+332>>2],a+208|0,a+16|0,a+12|0,j)){break a}Za(a+344|0);continue}break}if(I[a+219|0]>>>7|0){d=H[a+212>>2]}else{d=I[a+219|0]}d:{if(!d){break d}d=H[a+12>>2];if((d-(a+16|0)|0)>159){break d}H[a+12>>2]=d+4;H[d>>2]=H[a+8>>2]}k=f,l=eg(c,H[a+188>>2],e,h),H[k>>2]=l;H[f+4>>2]=ma;jb(a+208|0,a+16|0,H[a+12>>2],e);if($a(a+344|0,a+336|0)){H[e>>2]=H[e>>2]|2}c=H[a+344>>2];Ba(b);Ba(a+208|0);la=a+352|0;return c|0}function Jj(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;a=la-352|0;la=a;H[a+336>>2]=c;H[a+344>>2]=b;h=Mb(d);j=uc(d,a+224|0);tc(a+208|0,d,a+332|0);b=Fa(a+192|0);Ea(b,I[b+11|0]>>>7|0?(H[b+8>>2]&2147483647)-1|0:10);d=a;if(I[b+11|0]>>>7|0){c=H[b>>2]}else{c=b}H[d+188>>2]=c;H[a+12>>2]=a+16;H[a+8>>2]=0;while(1){a:{if(!kb(a+344|0,a+336|0)){break a}g=H[a+188>>2];if(I[b+11|0]>>>7|0){d=H[b+4>>2]}else{d=I[b+11|0]}if((g|0)==(d+c|0)){c=b;b:{if(I[c+11|0]>>>7|0){d=H[c+4>>2];break b}d=I[c+11|0]}g=c;if(I[c+11|0]>>>7|0){i=H[c+4>>2]}else{i=I[c+11|0]}Ea(g,i<<1);Ea(c,I[c+11|0]>>>7|0?(H[c+8>>2]&2147483647)-1|0:10);g=a;if(I[c+11|0]>>>7|0){c=H[b>>2]}else{c=b}H[g+188>>2]=d+c}d=H[a+344>>2];g=H[d+12>>2];c:{if((g|0)==H[d+16>>2]){d=na[H[H[d>>2]+36>>2]](d)|0;break c}d=H[g>>2]}if(kc(d,h,c,a+188|0,a+8|0,H[a+332>>2],a+208|0,a+16|0,a+12|0,j)){break a}Za(a+344|0);continue}break}if(I[a+219|0]>>>7|0){d=H[a+212>>2]}else{d=I[a+219|0]}d:{if(!d){break d}d=H[a+12>>2];if((d-(a+16|0)|0)>159){break d}H[a+12>>2]=d+4;H[d>>2]=H[a+8>>2]}k=f,l=ag(c,H[a+188>>2],e,h),H[k>>2]=l;H[f+4>>2]=ma;jb(a+208|0,a+16|0,H[a+12>>2],e);if($a(a+344|0,a+336|0)){H[e>>2]=H[e>>2]|2}c=H[a+344>>2];Ba(b);Ba(a+208|0);la=a+352|0;return c|0}function yc(a,b){var c=0,d=0,e=0,f=0,g=0;g=la-48|0;la=g;a:{b:{c:{d:{if(!b){break d}c=H[b+4>>2];if((c|0)==(b|0)){break c}yc(a,c);e:{switch(H[b>>2]){case 0:case 4:c=b;b=H[b+8>>2];if((c|0)==(b|0)){break b}yc(a,b);break d;case 1:d=H[b+8>>2];e=I[d|0];if(!e){break d}while(1){b=H[a+8>>2];f=b+1|0;c=H[a+4>>2];f:{if(f>>>0>>0){c=H[a>>2];break f}b=c+512|0;H[a+4>>2]=b;c=zb(H[a>>2],b);if(!c){break a}H[a>>2]=c;b=H[a+8>>2];f=b+1|0}H[a+8>>2]=f;F[b+c|0]=e;d=d+1|0;e=I[d|0];if(e){continue}break};break d;case 2:H[g>>2]=H[b+8>>2];hd(g+16|0,30,9254,g);d=I[g+16|0];if(!d){break d}e=g+16|0;while(1){b=H[a+8>>2];f=b+1|0;c=H[a+4>>2];g:{if(f>>>0>>0){c=H[a>>2];break g}b=c+512|0;H[a+4>>2]=b;c=zb(H[a>>2],b);if(!c){break a}H[a>>2]=c;b=H[a+8>>2];f=b+1|0}H[a+8>>2]=f;F[b+c|0]=d;e=e+1|0;d=I[e|0];if(d){continue}break};break d;case 3:break e;default:break d}}d=H[b+8>>2];e=I[d|0];if(!e){break d}while(1){b=H[a+8>>2];f=b+1|0;c=H[a+4>>2];h:{if(f>>>0>>0){c=H[a>>2];break h}b=c+512|0;H[a+4>>2]=b;c=zb(H[a>>2],b);if(!c){break a}H[a>>2]=c;b=H[a+8>>2];f=b+1|0}H[a+8>>2]=f;F[b+c|0]=e;d=d+1|0;e=I[d|0];if(e){continue}break}}F[H[a>>2]+H[a+8>>2]|0]=0;la=g+48|0;return}$(8003,7846,170,8135);X()}$(8733,7846,174,8135);X()}Ya(9270);_(2);X()}function Uf(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;a=la-352|0;la=a;H[a+336>>2]=c;H[a+344>>2]=b;h=Mb(d);j=uc(d,a+224|0);tc(a+208|0,d,a+332|0);b=Fa(a+192|0);Ea(b,I[b+11|0]>>>7|0?(H[b+8>>2]&2147483647)-1|0:10);d=a;if(I[b+11|0]>>>7|0){c=H[b>>2]}else{c=b}H[d+188>>2]=c;H[a+12>>2]=a+16;H[a+8>>2]=0;while(1){a:{if(!kb(a+344|0,a+336|0)){break a}g=H[a+188>>2];if(I[b+11|0]>>>7|0){d=H[b+4>>2]}else{d=I[b+11|0]}if((g|0)==(d+c|0)){c=b;b:{if(I[c+11|0]>>>7|0){d=H[c+4>>2];break b}d=I[c+11|0]}g=c;if(I[c+11|0]>>>7|0){i=H[c+4>>2]}else{i=I[c+11|0]}Ea(g,i<<1);Ea(c,I[c+11|0]>>>7|0?(H[c+8>>2]&2147483647)-1|0:10);g=a;if(I[c+11|0]>>>7|0){c=H[b>>2]}else{c=b}H[g+188>>2]=d+c}d=H[a+344>>2];g=H[d+12>>2];c:{if((g|0)==H[d+16>>2]){d=na[H[H[d>>2]+36>>2]](d)|0;break c}d=H[g>>2]}if(kc(d,h,c,a+188|0,a+8|0,H[a+332>>2],a+208|0,a+16|0,a+12|0,j)){break a}Za(a+344|0);continue}break}if(I[a+219|0]>>>7|0){d=H[a+212>>2]}else{d=I[a+219|0]}d:{if(!d){break d}d=H[a+12>>2];if((d-(a+16|0)|0)>159){break d}H[a+12>>2]=d+4;H[d>>2]=H[a+8>>2]}k=f,l=bg(c,H[a+188>>2],e,h),H[k>>2]=l;jb(a+208|0,a+16|0,H[a+12>>2],e);if($a(a+344|0,a+336|0)){H[e>>2]=H[e>>2]|2}c=H[a+344>>2];Ba(b);Ba(a+208|0);la=a+352|0;return c|0}function Mj(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;a=la-352|0;la=a;H[a+336>>2]=c;H[a+344>>2]=b;h=Mb(d);j=uc(d,a+224|0);tc(a+208|0,d,a+332|0);b=Fa(a+192|0);Ea(b,I[b+11|0]>>>7|0?(H[b+8>>2]&2147483647)-1|0:10);d=a;if(I[b+11|0]>>>7|0){c=H[b>>2]}else{c=b}H[d+188>>2]=c;H[a+12>>2]=a+16;H[a+8>>2]=0;while(1){a:{if(!kb(a+344|0,a+336|0)){break a}g=H[a+188>>2];if(I[b+11|0]>>>7|0){d=H[b+4>>2]}else{d=I[b+11|0]}if((g|0)==(d+c|0)){c=b;b:{if(I[c+11|0]>>>7|0){d=H[c+4>>2];break b}d=I[c+11|0]}g=c;if(I[c+11|0]>>>7|0){i=H[c+4>>2]}else{i=I[c+11|0]}Ea(g,i<<1);Ea(c,I[c+11|0]>>>7|0?(H[c+8>>2]&2147483647)-1|0:10);g=a;if(I[c+11|0]>>>7|0){c=H[b>>2]}else{c=b}H[g+188>>2]=d+c}d=H[a+344>>2];g=H[d+12>>2];c:{if((g|0)==H[d+16>>2]){d=na[H[H[d>>2]+36>>2]](d)|0;break c}d=H[g>>2]}if(kc(d,h,c,a+188|0,a+8|0,H[a+332>>2],a+208|0,a+16|0,a+12|0,j)){break a}Za(a+344|0);continue}break}if(I[a+219|0]>>>7|0){d=H[a+212>>2]}else{d=I[a+219|0]}d:{if(!d){break d}d=H[a+12>>2];if((d-(a+16|0)|0)>159){break d}H[a+12>>2]=d+4;H[d>>2]=H[a+8>>2]}k=f,l=fg(c,H[a+188>>2],e,h),H[k>>2]=l;jb(a+208|0,a+16|0,H[a+12>>2],e);if($a(a+344|0,a+336|0)){H[e>>2]=H[e>>2]|2}c=H[a+344>>2];Ba(b);Ba(a+208|0);la=a+352|0;return c|0}function Kj(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;a=la-352|0;la=a;H[a+336>>2]=c;H[a+344>>2]=b;h=Mb(d);j=uc(d,a+224|0);tc(a+208|0,d,a+332|0);b=Fa(a+192|0);Ea(b,I[b+11|0]>>>7|0?(H[b+8>>2]&2147483647)-1|0:10);d=a;if(I[b+11|0]>>>7|0){c=H[b>>2]}else{c=b}H[d+188>>2]=c;H[a+12>>2]=a+16;H[a+8>>2]=0;while(1){a:{if(!kb(a+344|0,a+336|0)){break a}g=H[a+188>>2];if(I[b+11|0]>>>7|0){d=H[b+4>>2]}else{d=I[b+11|0]}if((g|0)==(d+c|0)){c=b;b:{if(I[c+11|0]>>>7|0){d=H[c+4>>2];break b}d=I[c+11|0]}g=c;if(I[c+11|0]>>>7|0){i=H[c+4>>2]}else{i=I[c+11|0]}Ea(g,i<<1);Ea(c,I[c+11|0]>>>7|0?(H[c+8>>2]&2147483647)-1|0:10);g=a;if(I[c+11|0]>>>7|0){c=H[b>>2]}else{c=b}H[g+188>>2]=d+c}d=H[a+344>>2];g=H[d+12>>2];c:{if((g|0)==H[d+16>>2]){d=na[H[H[d>>2]+36>>2]](d)|0;break c}d=H[g>>2]}if(kc(d,h,c,a+188|0,a+8|0,H[a+332>>2],a+208|0,a+16|0,a+12|0,j)){break a}Za(a+344|0);continue}break}if(I[a+219|0]>>>7|0){d=H[a+212>>2]}else{d=I[a+219|0]}d:{if(!d){break d}d=H[a+12>>2];if((d-(a+16|0)|0)>159){break d}H[a+12>>2]=d+4;H[d>>2]=H[a+8>>2]}k=f,l=dg(c,H[a+188>>2],e,h),G[k>>1]=l;jb(a+208|0,a+16|0,H[a+12>>2],e);if($a(a+344|0,a+336|0)){H[e>>2]=H[e>>2]|2}c=H[a+344>>2];Ba(b);Ba(a+208|0);la=a+352|0;return c|0}function Mg(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;if(rb(a,H[b+8>>2],e)){if(!(H[b+28>>2]==1|H[b+4>>2]!=(c|0))){H[b+28>>2]=d}return}a:{if(rb(a,H[b>>2],e)){if(!(H[b+20>>2]!=(c|0)?H[b+16>>2]!=(c|0):0)){if((d|0)!=1){break a}H[b+32>>2]=1;return}H[b+32>>2]=d;if(H[b+44>>2]!=4){f=a+16|0;i=f+(H[a+12>>2]<<3)|0;j=b;b:{c:{while(1){d:{if(f>>>0>=i>>>0){break d}G[b+52>>1]=0;ld(f,b,c,c,1,e);if(I[b+54|0]){break d}e:{if(!I[b+53|0]){break e}if(I[b+52|0]){d=1;if(H[b+24>>2]==1){break c}h=1;g=1;if(I[a+8|0]&2){break e}break c}h=1;d=g;if(!(F[a+8|0]&1)){break c}}f=f+8|0;continue}break}d=g;a=4;if(!h){break b}}a=3}H[j+44>>2]=a;if(d&1){break a}}H[b+20>>2]=c;H[b+40>>2]=H[b+40>>2]+1;if(H[b+36>>2]!=1|H[b+24>>2]!=2){break a}F[b+54|0]=1;return}g=H[a+12>>2];f=a+16|0;Ac(f,b,c,d,e);if((g|0)<2){break a}g=f+(g<<3)|0;f=a+24|0;a=H[a+8>>2];if(H[b+36>>2]!=1?a&2:1){while(1){if(I[b+54|0]){break a}Ac(f,b,c,d,e);f=f+8|0;if(g>>>0>f>>>0){continue}break}break a}if(!(a&1)){while(1){if(I[b+54|0]|H[b+36>>2]==1){break a}Ac(f,b,c,d,e);f=f+8|0;if(g>>>0>f>>>0){continue}break a}}while(1){if(I[b+54|0]|(H[b+24>>2]==1?H[b+36>>2]==1:0)){break a}Ac(f,b,c,d,e);f=f+8|0;if(g>>>0>f>>>0){continue}break}}}function Rj(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=O(0);a=la-272|0;la=a;H[a+256>>2]=c;H[a+264>>2]=b;Pd(a+208|0,d,a+224|0,a+223|0,a+222|0);b=Fa(a+192|0);Ea(b,I[b+11|0]>>>7|0?(H[b+8>>2]&2147483647)-1|0:10);d=a;if(I[b+11|0]>>>7|0){c=H[b>>2]}else{c=b}H[d+188>>2]=c;H[a+12>>2]=a+16;H[a+8>>2]=0;F[a+7|0]=1;F[a+6|0]=69;while(1){a:{if(!lb(a+264|0,a+256|0)){break a}g=H[a+188>>2];if(I[b+11|0]>>>7|0){d=H[b+4>>2]}else{d=I[b+11|0]}if((g|0)==(d+c|0)){c=b;b:{if(I[c+11|0]>>>7|0){d=H[c+4>>2];break b}d=I[c+11|0]}g=c;if(I[c+11|0]>>>7|0){h=H[c+4>>2]}else{h=I[c+11|0]}Ea(g,h<<1);Ea(c,I[c+11|0]>>>7|0?(H[c+8>>2]&2147483647)-1|0:10);g=a;if(I[c+11|0]>>>7|0){c=H[b>>2]}else{c=b}H[g+188>>2]=d+c}if(Od(Sa(a+264|0),a+7|0,a+6|0,c,a+188|0,F[a+223|0],F[a+222|0],a+208|0,a+16|0,a+12|0,a+8|0,a+224|0)){break a}_a(a+264|0);continue}break}if(I[a+219|0]>>>7|0){d=H[a+212>>2]}else{d=I[a+219|0]}c:{if(!d|!I[a+7|0]){break c}d=H[a+12>>2];if((d-(a+16|0)|0)>159){break c}H[a+12>>2]=d+4;H[d>>2]=H[a+8>>2]}i=f,j=$f(c,H[a+188>>2],e),L[i>>2]=j;jb(a+208|0,a+16|0,H[a+12>>2],e);if(ab(a+264|0,a+256|0)){H[e>>2]=H[e>>2]|2}c=H[a+264>>2];Ba(b);Ba(a+208|0);la=a+272|0;return c|0}function Qj(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;a=la-272|0;la=a;H[a+256>>2]=c;H[a+264>>2]=b;Pd(a+208|0,d,a+224|0,a+223|0,a+222|0);b=Fa(a+192|0);Ea(b,I[b+11|0]>>>7|0?(H[b+8>>2]&2147483647)-1|0:10);d=a;if(I[b+11|0]>>>7|0){c=H[b>>2]}else{c=b}H[d+188>>2]=c;H[a+12>>2]=a+16;H[a+8>>2]=0;F[a+7|0]=1;F[a+6|0]=69;while(1){a:{if(!lb(a+264|0,a+256|0)){break a}g=H[a+188>>2];if(I[b+11|0]>>>7|0){d=H[b+4>>2]}else{d=I[b+11|0]}if((g|0)==(d+c|0)){c=b;b:{if(I[c+11|0]>>>7|0){d=H[c+4>>2];break b}d=I[c+11|0]}g=c;if(I[c+11|0]>>>7|0){h=H[c+4>>2]}else{h=I[c+11|0]}Ea(g,h<<1);Ea(c,I[c+11|0]>>>7|0?(H[c+8>>2]&2147483647)-1|0:10);g=a;if(I[c+11|0]>>>7|0){c=H[b>>2]}else{c=b}H[g+188>>2]=d+c}if(Od(Sa(a+264|0),a+7|0,a+6|0,c,a+188|0,F[a+223|0],F[a+222|0],a+208|0,a+16|0,a+12|0,a+8|0,a+224|0)){break a}_a(a+264|0);continue}break}if(I[a+219|0]>>>7|0){d=H[a+212>>2]}else{d=I[a+219|0]}c:{if(!d|!I[a+7|0]){break c}d=H[a+12>>2];if((d-(a+16|0)|0)>159){break c}H[a+12>>2]=d+4;H[d>>2]=H[a+8>>2]}i=f,j=_f(c,H[a+188>>2],e),M[i>>3]=j;jb(a+208|0,a+16|0,H[a+12>>2],e);if(ab(a+264|0,a+256|0)){H[e>>2]=H[e>>2]|2}c=H[a+264>>2];Ba(b);Ba(a+208|0);la=a+272|0;return c|0}function sg(a,b){var c=0,d=0,e=0,f=0;a:{b:{c:{c=H[a+4>>2];d:{if(c>>>0>2]){H[a+4>>2]=c+1;c=I[c|0];break d}c=Ga(a)}switch(c-43|0){case 0:case 2:break b;default:break c}}e=c-48|0;break a}f=(c|0)==45;b=!b;c=H[a+4>>2];e:{if(c>>>0>2]){H[a+4>>2]=c+1;c=I[c|0];break e}c=Ga(a)}e=c-48|0;if(!(b|e>>>0<10|!H[a+104>>2])){H[a+4>>2]=H[a+4>>2]-1}}f:{if(e>>>0<10){while(1){d=N(d,10)+c|0;b=H[a+4>>2];g:{if(b>>>0>2]){H[a+4>>2]=b+1;c=I[b|0];break g}c=Ga(a)}e=c-48|0;d=d-48|0;if((d|0)<214748364?e>>>0<=9:0){continue}break}b=d;d=d>>31;h:{if(e>>>0>=10){break h}while(1){d=dk(b,d,10,0);b=d+c|0;c=ma;c=b>>>0>>0?c+1|0:c;d=b;b=d-48|0;d=c-(d>>>0<48)|0;c=H[a+4>>2];i:{if(c>>>0>2]){H[a+4>>2]=c+1;c=I[c|0];break i}c=Ga(a)}e=c-48|0;if(e>>>0>9){break h}if((d|0)<21474836?1:(d|0)<=21474836?b>>>0<2061584302:0){continue}break}}if(e>>>0<10){while(1){c=H[a+4>>2];j:{if(c>>>0>2]){H[a+4>>2]=c+1;c=I[c|0];break j}c=Ga(a)}if(c-48>>>0<10){continue}break}}if(H[a+104>>2]){H[a+4>>2]=H[a+4>>2]-1}a=b;b=f?0-a|0:a;d=f?0-(((a|0)!=0)+d|0)|0:d;break f}b=0;d=-2147483648;if(!H[a+104>>2]){break f}H[a+4>>2]=H[a+4>>2]-1;ma=-2147483648;return 0}ma=d;return b}function Oj(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;a=la-272|0;la=a;H[a+256>>2]=c;H[a+264>>2]=b;h=Fa(a+208|0);b=H[d+28>>2];H[a+16>>2]=b;H[b+4>>2]=H[b+4>>2]+1;b=pb(a+16|0);na[H[H[b>>2]+32>>2]](b,33648,33674,a+224|0)|0;b=H[a+16>>2];c=H[b+4>>2]-1|0;H[b+4>>2]=c;if((c|0)==-1){na[H[H[b>>2]+8>>2]](b)}c=Fa(a+192|0);Ea(c,I[c+11|0]>>>7|0?(H[c+8>>2]&2147483647)-1|0:10);d=a;if(I[c+11|0]>>>7|0){b=H[c>>2]}else{b=c}H[d+188>>2]=b;H[a+12>>2]=a+16;H[a+8>>2]=0;while(1){a:{if(!lb(a+264|0,a+256|0)){break a}g=H[a+188>>2];if(I[c+11|0]>>>7|0){d=H[c+4>>2]}else{d=I[c+11|0]}if((g|0)==(d+b|0)){b=c;b:{if(I[b+11|0]>>>7|0){d=H[b+4>>2];break b}d=I[b+11|0]}g=b;if(I[b+11|0]>>>7|0){i=H[b+4>>2]}else{i=I[b+11|0]}Ea(g,i<<1);Ea(b,I[b+11|0]>>>7|0?(H[b+8>>2]&2147483647)-1|0:10);g=a;if(I[b+11|0]>>>7|0){b=H[c>>2]}else{b=c}H[g+188>>2]=d+b}if(nc(Sa(a+264|0),16,b,a+188|0,a+8|0,0,h,a+16|0,a+12|0,a+224|0)){break a}_a(a+264|0);continue}break}Ea(c,H[a+188>>2]-b|0);if(I[c+11|0]>>>7|0){b=H[c>>2]}else{b=c}d=Ja();H[a>>2]=f;if((Yf(b,d,a)|0)!=1){H[e>>2]=4}if(ab(a+264|0,a+256|0)){H[e>>2]=H[e>>2]|2}b=H[a+264>>2];Ba(c);Ba(h);la=a+272|0;return b|0}function gb(a,b,c){var d=0,e=0,f=0;if(c>>>0>=512){ja(a|0,b|0,c|0)|0;return a}e=a+c|0;a:{if(!((a^b)&3)){b:{if(!(a&3)){c=a;break b}if((c|0)<1){c=a;break b}c=a;while(1){F[c|0]=I[b|0];b=b+1|0;c=c+1|0;if(!(c&3)){break b}if(c>>>0>>0){continue}break}}d=e&-4;c:{if(d>>>0<64){break c}f=d+-64|0;if(f>>>0>>0){break c}while(1){H[c>>2]=H[b>>2];H[c+4>>2]=H[b+4>>2];H[c+8>>2]=H[b+8>>2];H[c+12>>2]=H[b+12>>2];H[c+16>>2]=H[b+16>>2];H[c+20>>2]=H[b+20>>2];H[c+24>>2]=H[b+24>>2];H[c+28>>2]=H[b+28>>2];H[c+32>>2]=H[b+32>>2];H[c+36>>2]=H[b+36>>2];H[c+40>>2]=H[b+40>>2];H[c+44>>2]=H[b+44>>2];H[c+48>>2]=H[b+48>>2];H[c+52>>2]=H[b+52>>2];H[c+56>>2]=H[b+56>>2];H[c+60>>2]=H[b+60>>2];b=b- -64|0;c=c- -64|0;if(f>>>0>=c>>>0){continue}break}}if(c>>>0>=d>>>0){break a}while(1){H[c>>2]=H[b>>2];b=b+4|0;c=c+4|0;if(d>>>0>c>>>0){continue}break}break a}if(e>>>0<4){c=a;break a}d=e-4|0;if(d>>>0>>0){c=a;break a}c=a;while(1){F[c|0]=I[b|0];F[c+1|0]=I[b+1|0];F[c+2|0]=I[b+2|0];F[c+3|0]=I[b+3|0];b=b+4|0;c=c+4|0;if(d>>>0>=c>>>0){continue}break}}if(c>>>0>>0){while(1){F[c|0]=I[b|0];b=b+1|0;c=c+1|0;if((e|0)!=(c|0)){continue}break}}return a}function Uj(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0;a=la-272|0;la=a;H[a+256>>2]=c;H[a+264>>2]=b;h=Mb(d);vc(a+208|0,d,a+255|0);b=Fa(a+192|0);Ea(b,I[b+11|0]>>>7|0?(H[b+8>>2]&2147483647)-1|0:10);d=a;if(I[b+11|0]>>>7|0){c=H[b>>2]}else{c=b}H[d+188>>2]=c;H[a+12>>2]=a+16;H[a+8>>2]=0;while(1){a:{if(!lb(a+264|0,a+256|0)){break a}g=H[a+188>>2];if(I[b+11|0]>>>7|0){d=H[b+4>>2]}else{d=I[b+11|0]}if((g|0)==(d+c|0)){c=b;b:{if(I[c+11|0]>>>7|0){d=H[c+4>>2];break b}d=I[c+11|0]}g=c;if(I[c+11|0]>>>7|0){i=H[c+4>>2]}else{i=I[c+11|0]}Ea(g,i<<1);Ea(c,I[c+11|0]>>>7|0?(H[c+8>>2]&2147483647)-1|0:10);g=a;if(I[c+11|0]>>>7|0){c=H[b>>2]}else{c=b}H[g+188>>2]=d+c}if(nc(Sa(a+264|0),h,c,a+188|0,a+8|0,F[a+255|0],a+208|0,a+16|0,a+12|0,33648)){break a}_a(a+264|0);continue}break}if(I[a+219|0]>>>7|0){d=H[a+212>>2]}else{d=I[a+219|0]}c:{if(!d){break c}d=H[a+12>>2];if((d-(a+16|0)|0)>159){break c}H[a+12>>2]=d+4;H[d>>2]=H[a+8>>2]}j=f,k=eg(c,H[a+188>>2],e,h),H[j>>2]=k;H[f+4>>2]=ma;jb(a+208|0,a+16|0,H[a+12>>2],e);if(ab(a+264|0,a+256|0)){H[e>>2]=H[e>>2]|2}c=H[a+264>>2];Ba(b);Ba(a+208|0);la=a+272|0;return c|0}function Sj(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0;a=la-272|0;la=a;H[a+256>>2]=c;H[a+264>>2]=b;h=Mb(d);vc(a+208|0,d,a+255|0);b=Fa(a+192|0);Ea(b,I[b+11|0]>>>7|0?(H[b+8>>2]&2147483647)-1|0:10);d=a;if(I[b+11|0]>>>7|0){c=H[b>>2]}else{c=b}H[d+188>>2]=c;H[a+12>>2]=a+16;H[a+8>>2]=0;while(1){a:{if(!lb(a+264|0,a+256|0)){break a}g=H[a+188>>2];if(I[b+11|0]>>>7|0){d=H[b+4>>2]}else{d=I[b+11|0]}if((g|0)==(d+c|0)){c=b;b:{if(I[c+11|0]>>>7|0){d=H[c+4>>2];break b}d=I[c+11|0]}g=c;if(I[c+11|0]>>>7|0){i=H[c+4>>2]}else{i=I[c+11|0]}Ea(g,i<<1);Ea(c,I[c+11|0]>>>7|0?(H[c+8>>2]&2147483647)-1|0:10);g=a;if(I[c+11|0]>>>7|0){c=H[b>>2]}else{c=b}H[g+188>>2]=d+c}if(nc(Sa(a+264|0),h,c,a+188|0,a+8|0,F[a+255|0],a+208|0,a+16|0,a+12|0,33648)){break a}_a(a+264|0);continue}break}if(I[a+219|0]>>>7|0){d=H[a+212>>2]}else{d=I[a+219|0]}c:{if(!d){break c}d=H[a+12>>2];if((d-(a+16|0)|0)>159){break c}H[a+12>>2]=d+4;H[d>>2]=H[a+8>>2]}j=f,k=ag(c,H[a+188>>2],e,h),H[j>>2]=k;H[f+4>>2]=ma;jb(a+208|0,a+16|0,H[a+12>>2],e);if(ab(a+264|0,a+256|0)){H[e>>2]=H[e>>2]|2}c=H[a+264>>2];Ba(b);Ba(a+208|0);la=a+272|0;return c|0}function yj(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;var f=0,g=0,h=0,i=0,j=0,k=0,l=0;a=la-208|0;la=a;H[a+200>>2]=37;H[a+204>>2]=0;h=Uc(a+200|1,12287,H[c+4>>2]);H[a+156>>2]=a+160;f=Ja();a:{if(h){i=H[c+8>>2];M[a+40>>3]=e;H[a+32>>2]=i;f=ib(a+160|0,30,f,a+200|0,a+32|0);break a}M[a+48>>3]=e;f=ib(a+160|0,30,f,a+200|0,a+48|0)}H[a+80>>2]=18;i=Ra(a+144|0,0,a+80|0);j=a+160|0;g=j;b:{if((f|0)>=30){f=Ja();c:{if(h){g=H[c+8>>2];M[a+8>>3]=e;H[a>>2]=g;f=Lb(a+156|0,f,a+200|0,a);break c}M[a+16>>3]=e;f=Lb(a+156|0,f,a+200|0,a+16|0)}if((f|0)==-1){break b}g=H[i>>2];H[i>>2]=H[a+156>>2];if(g){na[H[i+4>>2]](g)}g=H[a+156>>2]}k=f+g|0;l=tb(g,k,c);H[a+80>>2]=18;g=Ra(a+72|0,0,a+80|0);d:{if(H[a+156>>2]==(a+160|0)){f=a+80|0;break d}f=Ca(f<<1);if(!f){break b}h=H[g>>2];H[g>>2]=f;if(h){na[H[g+4>>2]](h)}j=H[a+156>>2]}h=H[c+28>>2];H[a+56>>2]=h;H[h+4>>2]=H[h+4>>2]+1;Qf(j,l,k,f,a+68|0,a- -64|0,a+56|0);h=H[a+56>>2];j=H[h+4>>2]-1|0;H[h+4>>2]=j;if((j|0)==-1){na[H[H[h>>2]+8>>2]](h)}c=Hb(b,f,H[a+68>>2],H[a+64>>2],c,d);b=H[g>>2];H[g>>2]=0;if(b){na[H[g+4>>2]](b)}b=H[i>>2];H[i>>2]=0;if(b){na[H[i+4>>2]](b)}la=a+208|0;return c|0}Xa();X()}function pj(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;var f=0,g=0,h=0,i=0,j=0,k=0,l=0;a=la-384|0;la=a;H[a+376>>2]=37;H[a+380>>2]=0;h=Uc(a+376|1,12287,H[c+4>>2]);H[a+332>>2]=a+336;f=Ja();a:{if(h){i=H[c+8>>2];M[a+40>>3]=e;H[a+32>>2]=i;f=ib(a+336|0,30,f,a+376|0,a+32|0);break a}M[a+48>>3]=e;f=ib(a+336|0,30,f,a+376|0,a+48|0)}H[a+80>>2]=18;i=Ra(a+320|0,0,a+80|0);j=a+336|0;g=j;b:{if((f|0)>=30){f=Ja();c:{if(h){g=H[c+8>>2];M[a+8>>3]=e;H[a>>2]=g;f=Lb(a+332|0,f,a+376|0,a);break c}M[a+16>>3]=e;f=Lb(a+332|0,f,a+376|0,a+16|0)}if((f|0)==-1){break b}g=H[i>>2];H[i>>2]=H[a+332>>2];if(g){na[H[i+4>>2]](g)}g=H[a+332>>2]}k=f+g|0;l=tb(g,k,c);H[a+80>>2]=18;g=Ra(a+72|0,0,a+80|0);d:{if(H[a+332>>2]==(a+336|0)){f=a+80|0;break d}f=Ca(f<<3);if(!f){break b}h=H[g>>2];H[g>>2]=f;if(h){na[H[g+4>>2]](h)}j=H[a+332>>2]}h=H[c+28>>2];H[a+56>>2]=h;H[h+4>>2]=H[h+4>>2]+1;Nf(j,l,k,f,a+68|0,a- -64|0,a+56|0);h=H[a+56>>2];j=H[h+4>>2]-1|0;H[h+4>>2]=j;if((j|0)==-1){na[H[H[h>>2]+8>>2]](h)}c=Qb(b,f,H[a+68>>2],H[a+64>>2],c,d);b=H[g>>2];H[g>>2]=0;if(b){na[H[g+4>>2]](b)}b=H[i>>2];H[i>>2]=0;if(b){na[H[i+4>>2]](b)}la=a+384|0;return c|0}Xa();X()}function cg(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0;a=la-272|0;la=a;H[a+256>>2]=c;H[a+264>>2]=b;h=Mb(d);vc(a+208|0,d,a+255|0);b=Fa(a+192|0);Ea(b,I[b+11|0]>>>7|0?(H[b+8>>2]&2147483647)-1|0:10);d=a;if(I[b+11|0]>>>7|0){c=H[b>>2]}else{c=b}H[d+188>>2]=c;H[a+12>>2]=a+16;H[a+8>>2]=0;while(1){a:{if(!lb(a+264|0,a+256|0)){break a}g=H[a+188>>2];if(I[b+11|0]>>>7|0){d=H[b+4>>2]}else{d=I[b+11|0]}if((g|0)==(d+c|0)){c=b;b:{if(I[c+11|0]>>>7|0){d=H[c+4>>2];break b}d=I[c+11|0]}g=c;if(I[c+11|0]>>>7|0){i=H[c+4>>2]}else{i=I[c+11|0]}Ea(g,i<<1);Ea(c,I[c+11|0]>>>7|0?(H[c+8>>2]&2147483647)-1|0:10);g=a;if(I[c+11|0]>>>7|0){c=H[b>>2]}else{c=b}H[g+188>>2]=d+c}if(nc(Sa(a+264|0),h,c,a+188|0,a+8|0,F[a+255|0],a+208|0,a+16|0,a+12|0,33648)){break a}_a(a+264|0);continue}break}if(I[a+219|0]>>>7|0){d=H[a+212>>2]}else{d=I[a+219|0]}c:{if(!d){break c}d=H[a+12>>2];if((d-(a+16|0)|0)>159){break c}H[a+12>>2]=d+4;H[d>>2]=H[a+8>>2]}j=f,k=bg(c,H[a+188>>2],e,h),H[j>>2]=k;jb(a+208|0,a+16|0,H[a+12>>2],e);if(ab(a+264|0,a+256|0)){H[e>>2]=H[e>>2]|2}c=H[a+264>>2];Ba(b);Ba(a+208|0);la=a+272|0;return c|0}function Vj(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0;a=la-272|0;la=a;H[a+256>>2]=c;H[a+264>>2]=b;h=Mb(d);vc(a+208|0,d,a+255|0);b=Fa(a+192|0);Ea(b,I[b+11|0]>>>7|0?(H[b+8>>2]&2147483647)-1|0:10);d=a;if(I[b+11|0]>>>7|0){c=H[b>>2]}else{c=b}H[d+188>>2]=c;H[a+12>>2]=a+16;H[a+8>>2]=0;while(1){a:{if(!lb(a+264|0,a+256|0)){break a}g=H[a+188>>2];if(I[b+11|0]>>>7|0){d=H[b+4>>2]}else{d=I[b+11|0]}if((g|0)==(d+c|0)){c=b;b:{if(I[c+11|0]>>>7|0){d=H[c+4>>2];break b}d=I[c+11|0]}g=c;if(I[c+11|0]>>>7|0){i=H[c+4>>2]}else{i=I[c+11|0]}Ea(g,i<<1);Ea(c,I[c+11|0]>>>7|0?(H[c+8>>2]&2147483647)-1|0:10);g=a;if(I[c+11|0]>>>7|0){c=H[b>>2]}else{c=b}H[g+188>>2]=d+c}if(nc(Sa(a+264|0),h,c,a+188|0,a+8|0,F[a+255|0],a+208|0,a+16|0,a+12|0,33648)){break a}_a(a+264|0);continue}break}if(I[a+219|0]>>>7|0){d=H[a+212>>2]}else{d=I[a+219|0]}c:{if(!d){break c}d=H[a+12>>2];if((d-(a+16|0)|0)>159){break c}H[a+12>>2]=d+4;H[d>>2]=H[a+8>>2]}j=f,k=fg(c,H[a+188>>2],e,h),H[j>>2]=k;jb(a+208|0,a+16|0,H[a+12>>2],e);if(ab(a+264|0,a+256|0)){H[e>>2]=H[e>>2]|2}c=H[a+264>>2];Ba(b);Ba(a+208|0);la=a+272|0;return c|0}function Tj(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0;a=la-272|0;la=a;H[a+256>>2]=c;H[a+264>>2]=b;h=Mb(d);vc(a+208|0,d,a+255|0);b=Fa(a+192|0);Ea(b,I[b+11|0]>>>7|0?(H[b+8>>2]&2147483647)-1|0:10);d=a;if(I[b+11|0]>>>7|0){c=H[b>>2]}else{c=b}H[d+188>>2]=c;H[a+12>>2]=a+16;H[a+8>>2]=0;while(1){a:{if(!lb(a+264|0,a+256|0)){break a}g=H[a+188>>2];if(I[b+11|0]>>>7|0){d=H[b+4>>2]}else{d=I[b+11|0]}if((g|0)==(d+c|0)){c=b;b:{if(I[c+11|0]>>>7|0){d=H[c+4>>2];break b}d=I[c+11|0]}g=c;if(I[c+11|0]>>>7|0){i=H[c+4>>2]}else{i=I[c+11|0]}Ea(g,i<<1);Ea(c,I[c+11|0]>>>7|0?(H[c+8>>2]&2147483647)-1|0:10);g=a;if(I[c+11|0]>>>7|0){c=H[b>>2]}else{c=b}H[g+188>>2]=d+c}if(nc(Sa(a+264|0),h,c,a+188|0,a+8|0,F[a+255|0],a+208|0,a+16|0,a+12|0,33648)){break a}_a(a+264|0);continue}break}if(I[a+219|0]>>>7|0){d=H[a+212>>2]}else{d=I[a+219|0]}c:{if(!d){break c}d=H[a+12>>2];if((d-(a+16|0)|0)>159){break c}H[a+12>>2]=d+4;H[d>>2]=H[a+8>>2]}j=f,k=dg(c,H[a+188>>2],e,h),G[j>>1]=k;jb(a+208|0,a+16|0,H[a+12>>2],e);if(ab(a+264|0,a+256|0)){H[e>>2]=H[e>>2]|2}c=H[a+264>>2];Ba(b);Ba(a+208|0);la=a+272|0;return c|0}function Sc(a,b,c,d,e,f,g){var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;i=la-16|0;la=i;l=nb(g);h=lc(g);g=h;na[H[H[g>>2]+20>>2]](i,g);if(I[i+11|0]>>>7|0){g=H[i+4>>2]}else{g=I[i+11|0]}a:{if(!g){na[H[H[l>>2]+48>>2]](l,a,c,d)|0;g=(c-a<<2)+d|0;H[f>>2]=g;break a}H[f>>2]=d;b:{c:{j=a;g=I[j|0];switch(g-43|0){case 0:case 2:break c;default:break b}}k=na[H[H[l>>2]+44>>2]](l,g<<24>>24)|0;g=H[f>>2];H[f>>2]=g+4;H[g>>2]=k;j=a+1|0}if(!(I[j|0]!=48|(c-j|0)<2|(I[j+1|0]|32)!=120)){k=na[H[H[l>>2]+44>>2]](l,48)|0;g=H[f>>2];H[f>>2]=g+4;H[g>>2]=k;k=na[H[H[l>>2]+44>>2]](l,F[j+1|0])|0;g=H[f>>2];H[f>>2]=g+4;H[g>>2]=k;j=j+2|0}ec(j,c);o=na[H[H[h>>2]+16>>2]](h)|0;k=0;g=j;while(1){if(c>>>0<=g>>>0){Rc((j-a<<2)+d|0,H[f>>2]);g=H[f>>2]}else{if(I[i+11|0]>>>7|0){h=H[i>>2]}else{h=i}m=!I[h+k|0];if(I[i+11|0]>>>7|0){h=H[i>>2]}else{h=i}if(!(m|F[h+k|0]!=(n|0))){h=H[f>>2];H[f>>2]=h+4;H[h>>2]=o;if(I[i+11|0]>>>7|0){h=H[i+4>>2]}else{h=I[i+11|0]}k=(h-1>>>0>k>>>0)+k|0;n=0}m=na[H[H[l>>2]+44>>2]](l,F[g|0])|0;h=H[f>>2];H[f>>2]=h+4;H[h>>2]=m;g=g+1|0;n=n+1|0;continue}break}}H[e>>2]=(b|0)==(c|0)?g:(b-a<<2)+d|0;Ba(i);la=i+16|0}function Vc(a,b,c,d,e,f,g){var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;i=la-16|0;la=i;l=pb(g);h=oc(g);g=h;na[H[H[g>>2]+20>>2]](i,g);if(I[i+11|0]>>>7|0){g=H[i+4>>2]}else{g=I[i+11|0]}a:{if(!g){na[H[H[l>>2]+32>>2]](l,a,c,d)|0;g=(c-a|0)+d|0;H[f>>2]=g;break a}H[f>>2]=d;b:{c:{j=a;g=I[j|0];switch(g-43|0){case 0:case 2:break c;default:break b}}k=na[H[H[l>>2]+28>>2]](l,g<<24>>24)|0;g=H[f>>2];H[f>>2]=g+1;F[g|0]=k;j=a+1|0}if(!(I[j|0]!=48|(c-j|0)<2|(I[j+1|0]|32)!=120)){k=na[H[H[l>>2]+28>>2]](l,48)|0;g=H[f>>2];H[f>>2]=g+1;F[g|0]=k;k=na[H[H[l>>2]+28>>2]](l,F[j+1|0])|0;g=H[f>>2];H[f>>2]=g+1;F[g|0]=k;j=j+2|0}ec(j,c);o=na[H[H[h>>2]+16>>2]](h)|0;k=0;g=j;while(1){if(c>>>0<=g>>>0){ec((j-a|0)+d|0,H[f>>2]);g=H[f>>2]}else{if(I[i+11|0]>>>7|0){h=H[i>>2]}else{h=i}m=!I[h+k|0];if(I[i+11|0]>>>7|0){h=H[i>>2]}else{h=i}if(!(m|F[h+k|0]!=(n|0))){h=H[f>>2];H[f>>2]=h+1;F[h|0]=o;if(I[i+11|0]>>>7|0){h=H[i+4>>2]}else{h=I[i+11|0]}k=(h-1>>>0>k>>>0)+k|0;n=0}m=na[H[H[l>>2]+28>>2]](l,F[g|0])|0;h=H[f>>2];H[f>>2]=h+1;F[h|0]=m;g=g+1|0;n=n+1|0;continue}break}}H[e>>2]=(b|0)==(c|0)?g:(b-a|0)+d|0;Ba(i);la=i+16|0}function Ld(a,b,c,d,e,f,g,h,i,j,k,l){var m=0;m=la-16|0;la=m;H[m+12>>2]=a;a:{b:{if((a|0)==(f|0)){if(!I[b|0]){break b}a=0;F[b|0]=0;b=H[e>>2];H[e>>2]=b+1;F[b|0]=46;if(I[h+11|0]>>>7|0){b=H[h+4>>2]}else{b=I[h+11|0]}if(!b){break a}b=H[j>>2];if((b-i|0)>159){break a}c=H[k>>2];H[j>>2]=b+4;H[b>>2]=c;break a}if(I[h+11|0]>>>7|0){f=H[h+4>>2]}else{f=I[h+11|0]}if(!(!f|(a|0)!=(g|0))){if(!I[b|0]){break b}a=0;b=H[j>>2];if((b-i|0)>159){break a}a=H[k>>2];H[j>>2]=b+4;H[b>>2]=a;a=0;H[k>>2]=0;break a}a=-1;f=Kd(l,l+128|0,m+12|0)-l|0;if((f|0)>124){break a}g=I[(f>>2)+33648|0];c:{d:{switch(fk(f-88|0,30)|0){case 2:case 3:b=H[e>>2];if((I[b-1|0]&95)!=(I[c|0]&127)?(b|0)!=(d|0):0){break a}H[e>>2]=b+1;F[b|0]=g;a=0;break a;case 0:case 1:F[c|0]=80;break c;default:break d}}a=F[c|0];if((a|0)!=(g&95)){break c}F[c|0]=a|128;if(!I[b|0]){break c}F[b|0]=0;if(I[h+11|0]>>>7|0){a=H[h+4>>2]}else{a=I[h+11|0]}if(!a){break c}a=H[j>>2];if((a-i|0)>159){break c}b=H[k>>2];H[j>>2]=a+4;H[a>>2]=b}a=H[e>>2];H[e>>2]=a+1;F[a|0]=g;a=0;if((f|0)>84){break a}H[k>>2]=H[k>>2]+1;break a}a=-1}la=m+16|0;return a}function Od(a,b,c,d,e,f,g,h,i,j,k,l){var m=0;m=la-16|0;la=m;F[m+15|0]=a;a:{b:{if((a|0)==(f|0)){if(!I[b|0]){break b}a=0;F[b|0]=0;b=H[e>>2];H[e>>2]=b+1;F[b|0]=46;if(I[h+11|0]>>>7|0){b=H[h+4>>2]}else{b=I[h+11|0]}if(!b){break a}b=H[j>>2];if((b-i|0)>159){break a}c=H[k>>2];H[j>>2]=b+4;H[b>>2]=c;break a}if(I[h+11|0]>>>7|0){f=H[h+4>>2]}else{f=I[h+11|0]}if(!(!f|(a|0)!=(g|0))){if(!I[b|0]){break b}a=0;b=H[j>>2];if((b-i|0)>159){break a}a=H[k>>2];H[j>>2]=b+4;H[b>>2]=a;a=0;H[k>>2]=0;break a}a=-1;f=Nd(l,l+32|0,m+15|0)-l|0;if((f|0)>31){break a}g=I[f+33648|0];c:{d:{switch(f-22|0){case 2:case 3:b=H[e>>2];if((I[b-1|0]&95)!=(I[c|0]&127)?(b|0)!=(d|0):0){break a}H[e>>2]=b+1;F[b|0]=g;a=0;break a;case 0:case 1:F[c|0]=80;break c;default:break d}}a=F[c|0];if((a|0)!=(g&95)){break c}F[c|0]=a|128;if(!I[b|0]){break c}F[b|0]=0;if(I[h+11|0]>>>7|0){a=H[h+4>>2]}else{a=I[h+11|0]}if(!a){break c}a=H[j>>2];if((a-i|0)>159){break c}b=H[k>>2];H[j>>2]=a+4;H[a>>2]=b}a=H[e>>2];H[e>>2]=a+1;F[a|0]=g;a=0;if((f|0)>21){break a}H[k>>2]=H[k>>2]+1;break a}a=-1}la=m+16|0;return a}function mf(a,b,c,d,e,f,g,h,i,j){var k=0,l=0,m=0;k=la-16|0;la=k;a:{if(a){a=rf(c);b:{if(b){na[H[H[a>>2]+44>>2]](k,a);b=H[k>>2];F[d|0]=b;F[d+1|0]=b>>>8;F[d+2|0]=b>>>16;F[d+3|0]=b>>>24;na[H[H[a>>2]+32>>2]](k,a);break b}na[H[H[a>>2]+40>>2]](k,a);b=H[k>>2];F[d|0]=b;F[d+1|0]=b>>>8;F[d+2|0]=b>>>16;F[d+3|0]=b>>>24;na[H[H[a>>2]+28>>2]](k,a)}Ib(i,k);Ba(k);l=e,m=na[H[H[a>>2]+12>>2]](a)|0,H[l>>2]=m;l=f,m=na[H[H[a>>2]+16>>2]](a)|0,H[l>>2]=m;na[H[H[a>>2]+20>>2]](k,a);hb(g,k);Ba(k);na[H[H[a>>2]+24>>2]](k,a);Ib(h,k);Ba(k);a=na[H[H[a>>2]+36>>2]](a)|0;break a}a=qf(c);c:{if(b){na[H[H[a>>2]+44>>2]](k,a);b=H[k>>2];F[d|0]=b;F[d+1|0]=b>>>8;F[d+2|0]=b>>>16;F[d+3|0]=b>>>24;na[H[H[a>>2]+32>>2]](k,a);break c}na[H[H[a>>2]+40>>2]](k,a);b=H[k>>2];F[d|0]=b;F[d+1|0]=b>>>8;F[d+2|0]=b>>>16;F[d+3|0]=b>>>24;na[H[H[a>>2]+28>>2]](k,a)}Ib(i,k);Ba(k);l=e,m=na[H[H[a>>2]+12>>2]](a)|0,H[l>>2]=m;l=f,m=na[H[H[a>>2]+16>>2]](a)|0,H[l>>2]=m;na[H[H[a>>2]+20>>2]](k,a);hb(g,k);Ba(k);na[H[H[a>>2]+24>>2]](k,a);Ib(h,k);Ba(k);a=na[H[H[a>>2]+36>>2]](a)|0}H[j>>2]=a;la=k+16|0}function of(a,b,c,d,e,f,g,h,i,j){var k=0,l=0,m=0;k=la-16|0;la=k;a:{if(a){a=xf(c);b:{if(b){na[H[H[a>>2]+44>>2]](k,a);b=H[k>>2];F[d|0]=b;F[d+1|0]=b>>>8;F[d+2|0]=b>>>16;F[d+3|0]=b>>>24;na[H[H[a>>2]+32>>2]](k,a);break b}na[H[H[a>>2]+40>>2]](k,a);b=H[k>>2];F[d|0]=b;F[d+1|0]=b>>>8;F[d+2|0]=b>>>16;F[d+3|0]=b>>>24;na[H[H[a>>2]+28>>2]](k,a)}hb(i,k);Ba(k);l=e,m=na[H[H[a>>2]+12>>2]](a)|0,F[l|0]=m;l=f,m=na[H[H[a>>2]+16>>2]](a)|0,F[l|0]=m;na[H[H[a>>2]+20>>2]](k,a);hb(g,k);Ba(k);na[H[H[a>>2]+24>>2]](k,a);hb(h,k);Ba(k);a=na[H[H[a>>2]+36>>2]](a)|0;break a}a=wf(c);c:{if(b){na[H[H[a>>2]+44>>2]](k,a);b=H[k>>2];F[d|0]=b;F[d+1|0]=b>>>8;F[d+2|0]=b>>>16;F[d+3|0]=b>>>24;na[H[H[a>>2]+32>>2]](k,a);break c}na[H[H[a>>2]+40>>2]](k,a);b=H[k>>2];F[d|0]=b;F[d+1|0]=b>>>8;F[d+2|0]=b>>>16;F[d+3|0]=b>>>24;na[H[H[a>>2]+28>>2]](k,a)}hb(i,k);Ba(k);l=e,m=na[H[H[a>>2]+12>>2]](a)|0,F[l|0]=m;l=f,m=na[H[H[a>>2]+16>>2]](a)|0,F[l|0]=m;na[H[H[a>>2]+20>>2]](k,a);hb(g,k);Ba(k);na[H[H[a>>2]+24>>2]](k,a);hb(h,k);Ba(k);a=na[H[H[a>>2]+36>>2]](a)|0}H[j>>2]=a;la=k+16|0}function di(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;a=c;while(1){a:{if(e>>>0<=i>>>0|a>>>0>=d>>>0){break a}g=F[a|0];b=g&255;b:{if((g|0)>=0){g=1;if(b>>>0<=1114111){break b}break a}if(b>>>0<194){break a}if(b>>>0<=223){if((d-a|0)<2){break a}f=I[a+1|0];if((f&192)!=128){break a}g=2;if((f&63|b<<6&1984)>>>0<=1114111){break b}break a}c:{d:{if(b>>>0<=239){if((d-a|0)<3){break a}h=I[a+2|0];f=I[a+1|0];if((b|0)==237){break d}if((b|0)==224){if((f&224)==160){break c}break a}if((f&192)!=128){break a}break c}if((d-a|0)<4|b>>>0>244){break a}h=I[a+2|0];f=I[a+1|0];e:{f:{switch(b-240|0){case 0:if((f+112&255)>>>0<48){break e}break a;case 4:if((f&240)==128){break e}break a;default:break f}}if((f&192)!=128){break a}}if((h&192)!=128){break a}j=I[a+3|0];if((j&192)!=128){break a}g=4;if((j&63|(h<<6&4032|(b<<18&1835008|(f&63)<<12)))>>>0>1114111){break a}break b}if((f&224)!=128){break a}}if((h&192)!=128){break a}g=3;if((h&63|(b<<12&61440|(f&63)<<6))>>>0>1114111){break a}}i=i+1|0;a=a+g|0;continue}break}return a-c|0}function ed(a,b,c,d){var e=0,f=0,g=0,h=0,i=0;g=la-32|0;la=g;e=d&2147483647;h=e;f=e-1006698496|0;e=e-1140785152|0;i=c;a:{if((f|0)==(e|0)&c>>>0>c>>>0|e>>>0>f>>>0){e=d<<4|c>>>28;c=c<<4|b>>>28;b=b&268435455;h=b;if((b|0)==134217728&a>>>0>=1|b>>>0>134217728){e=e+1073741824|0;a=c+1|0;e=a>>>0<1?e+1|0:e;f=a;break a}f=c;e=e+1073741824|0;if(a|h^134217728){break a}b=c&1;a=b+f|0;e=a>>>0>>0?e+1|0:e;f=a;break a}if(!(!i&(h|0)==2147418112?!(a|b):h>>>0<2147418112)){f=c;c=d<<4|c>>>28;f=f<<4|b>>>28;e=c&524287|2146959360;break a}f=0;e=2146435072;if(h>>>0>1140785151){break a}e=0;h=h>>>16|0;if(h>>>0<15249){break a}e=d&65535|65536;fb(g+16|0,a,b,c,e,h-15233|0);_b(g,a,b,c,e,15361-h|0);e=H[g+4>>2];h=e;a=H[g+8>>2];c=H[g+12>>2]<<4|a>>>28;f=a<<4|e>>>28;e=c;a=h&268435455;c=a;b=H[g>>2]|((H[g+16>>2]|H[g+24>>2])!=0|(H[g+20>>2]|H[g+28>>2])!=0);if((a|0)==134217728&b>>>0>=1|a>>>0>134217728){a=f+1|0;e=a>>>0<1?e+1|0:e;f=a;break a}if(b|c^134217728){break a}a=f+(f&1)|0;e=a>>>0>>0?e+1|0:e;f=a}la=g+32|0;x(0,f|0);x(1,d&-2147483648|e);return+z()}function gi(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;a=c;while(1){a:{if(e>>>0<=g>>>0|a>>>0>=d>>>0){break a}b=I[a|0];if(b>>>0>1114111){break a}f=a+1|0;b:{if(b<<24>>24>=0){break b}if(b>>>0<194){break a}if(b>>>0<=223){if((d-a|0)<2){break a}f=I[a+1|0];if((f&192)!=128|(f&63|b<<6&1984)>>>0>1114111){break a}f=a+2|0;break b}c:{d:{if(b>>>0<=239){if((d-a|0)<3){break a}h=I[a+2|0];f=I[a+1|0];if((b|0)==237){break d}if((b|0)==224){if((f&224)==160){break c}break a}if((f&192)!=128){break a}break c}if((d-a|0)<4|b>>>0>244|e-g>>>0<2){break a}h=I[a+2|0];f=I[a+1|0];e:{f:{switch(b-240|0){case 0:if((f+112&255)>>>0<48){break e}break a;case 4:if((f&240)==128){break e}break a;default:break f}}if((f&192)!=128){break a}}if((h&192)!=128){break a}i=I[a+3|0];if((i&192)!=128|(i&63|(h<<6&4032|(b<<18&1835008|(f&63)<<12)))>>>0>1114111){break a}g=g+1|0;f=a+4|0;break b}if((f&224)!=128){break a}}if((h&192)!=128|(h&63|(b<<12&61440|(f&63)<<6))>>>0>1114111){break a}f=a+3|0}a=f;g=g+1|0;continue}break}return a-c|0}function Ya(a){var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;g=H[12064];k=H[10445];a:{b:{while(1){if((g|0)!=I[b+27024|0]){c=87;b=b+1|0;if((b|0)!=87){continue}break b}break}c=b;if(b){break b}g=27120;break a}b=27120;while(1){e=I[b|0];g=b+1|0;b=g;if(e){continue}b=g;c=c-1|0;if(c){continue}break}}b=H[k+20>>2];if(b){i=H[b+4>>2];d=H[b>>2];h=H[d>>2]+1794895138|0;j=fc(H[d+8>>2],h);e=fc(H[d+12>>2],h);c=fc(H[d+16>>2],h);c:{if(i>>>2>>>0<=j>>>0){break c}b=i-(j<<2)|0;if((c|e)&3|(b>>>0<=e>>>0|b>>>0<=c>>>0)){break c}o=c>>>2|0;k=e>>>2|0;while(1){l=j>>>1|0;e=l+m|0;c=e<<1;b=d+(c+k<<2)|0;n=fc(H[b>>2],h);b=fc(H[b+4>>2],h);if(b>>>0>=i>>>0|i-b>>>0<=n>>>0|I[d+(b+n|0)|0]){break c}b=cb(g,b+d|0);if(!b){b=d+(c+o<<2)|0;c=fc(H[b>>2],h);b=fc(H[b+4>>2],h);if(b>>>0>=i>>>0|c>>>0>=i-b>>>0){break c}f=I[d+(b+c|0)|0]?0:b+d|0;break c}if((j|0)==1){break c}b=(b|0)<0;j=b?l:j-l|0;m=b?m:e;continue}}}b=f?f:g;f=H[6634];if(!(!a|!I[a|0])){xb(a,bb(a),1,f);Ed(58,f);Ed(32,f)}xb(b,bb(b),1,f);Ed(10,f)}function fi(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;a=la-16|0;la=a;H[a+12>>2]=c;H[a+8>>2]=f;H[a+12>>2]=c;H[a+8>>2]=f;b=H[a+12>>2];a:{while(1){if(b>>>0>=d>>>0){c=0;break a}c=2;b=H[b>>2];if((b&-2048)==55296|b>>>0>1114111){break a}b:{c:{if(b>>>0<=127){c=1;f=H[a+8>>2];if((g-f|0)<1){break a}H[a+8>>2]=f+1;F[f|0]=b;break c}if(b>>>0<=2047){c=H[a+8>>2];if((g-c|0)<2){break b}H[a+8>>2]=c+1;F[c|0]=b>>>6|192;c=H[a+8>>2];H[a+8>>2]=c+1;F[c|0]=b&63|128;break c}c=H[a+8>>2];f=g-c|0;if(b>>>0<=65535){if((f|0)<3){break b}H[a+8>>2]=c+1;F[c|0]=b>>>12|224;c=H[a+8>>2];H[a+8>>2]=c+1;F[c|0]=b>>>6&63|128;c=H[a+8>>2];H[a+8>>2]=c+1;F[c|0]=b&63|128;break c}if((f|0)<4){break b}H[a+8>>2]=c+1;F[c|0]=b>>>18|240;c=H[a+8>>2];H[a+8>>2]=c+1;F[c|0]=b>>>12&63|128;c=H[a+8>>2];H[a+8>>2]=c+1;F[c|0]=b>>>6&63|128;c=H[a+8>>2];H[a+8>>2]=c+1;F[c|0]=b&63|128}b=H[a+12>>2]+4|0;H[a+12>>2]=b;continue}break}c=1}H[e>>2]=H[a+12>>2];H[h>>2]=H[a+8>>2];la=a+16|0;return c|0}function se(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;c=la-32|0;la=c;a:{if(I[a+52|0]){e=H[a+48>>2];if(!b){break a}F[a+52|0]=0;H[a+48>>2]=-1;break a}H[c+24>>2]=1;d=la-16|0;la=d;la=d+16|0;d=a+44|0;g=c+24|0;d=H[(H[g>>2]>2]?d:g)>>2];g=(d|0)>0?d:0;b:{while(1){if((e|0)!=(g|0)){f=qc(H[a+32>>2]);if((f|0)==-1){break b}F[(c+24|0)+e|0]=f;e=e+1|0;continue}break}c:{if(I[a+53|0]){H[c+20>>2]=F[c+24|0];break c}g=c+24|0;while(1){d:{e=H[a+40>>2];f=H[e>>2];i=H[e+4>>2];e:{h=H[a+36>>2];j=e;e=(c+24|0)+d|0;switch((na[H[H[h>>2]+16>>2]](h,j,c+24|0,e,c+16|0,c+20|0,g,c+12|0)|0)-1|0){case 2:break d;case 0:break e;case 1:break b;default:break c}}h=H[a+40>>2];H[h>>2]=f;H[h+4>>2]=i;if((d|0)==8){break b}f=qc(H[a+32>>2]);if((f|0)==-1){break b}F[e|0]=f;d=d+1|0;continue}break}H[c+20>>2]=F[c+24|0]}f:{if(!b){while(1){if((d|0)<1){break f}d=d-1|0;if((Ec(F[d+(c+24|0)|0],H[a+32>>2])|0)!=-1){continue}break b}}H[a+48>>2]=H[c+20>>2]}e=H[c+20>>2];break a}e=-1}la=c+32|0;return e}function ue(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;c=la-32|0;la=c;a:{if(I[a+52|0]){e=H[a+48>>2];if(!b){break a}F[a+52|0]=0;H[a+48>>2]=-1;break a}H[c+24>>2]=1;d=la-16|0;la=d;la=d+16|0;d=a+44|0;g=c+24|0;d=H[(H[g>>2]>2]?d:g)>>2];g=(d|0)>0?d:0;b:{while(1){if((e|0)!=(g|0)){f=qc(H[a+32>>2]);if((f|0)==-1){break b}F[(c+24|0)+e|0]=f;e=e+1|0;continue}break}c:{if(I[a+53|0]){F[c+23|0]=I[c+24|0];break c}g=c+24|0;while(1){d:{e=H[a+40>>2];f=H[e>>2];i=H[e+4>>2];e:{h=H[a+36>>2];j=e;e=(c+24|0)+d|0;switch((na[H[H[h>>2]+16>>2]](h,j,c+24|0,e,c+16|0,c+23|0,g,c+12|0)|0)-1|0){case 2:break d;case 0:break e;case 1:break b;default:break c}}h=H[a+40>>2];H[h>>2]=f;H[h+4>>2]=i;if((d|0)==8){break b}f=qc(H[a+32>>2]);if((f|0)==-1){break b}F[e|0]=f;d=d+1|0;continue}break}F[c+23|0]=I[c+24|0]}f:{if(!b){while(1){if((d|0)<1){break f}d=d-1|0;if((Ec(I[d+(c+24|0)|0],H[a+32>>2])|0)!=-1){continue}break b}}H[a+48>>2]=I[c+23|0]}e=I[c+23|0];break a}e=-1}la=c+32|0;return e}function rg(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0;h=la-32|0;la=h;f=d&2147483647;g=f;e=f-1065418752|0;i=f-1082064896|0;f=c;a:{if((e|0)==(i|0)&f>>>0>>0|e>>>0>>0){g=(d&33554431)<<7|c>>>25;f=0;j=f;i=c&33554431;if(!(!f&(i|0)==16777216?!(a|b):!f&i>>>0<16777216)){e=g+1073741825|0;break a}e=g+1073741824|0;if(i^16777216|a|(b|j)){break a}e=(g&1)+e|0;break a}if(!(!f&(g|0)==2147418112?!(a|b):g>>>0<2147418112)){e=((d&33554431)<<7|c>>>25)&4194303|2143289344;break a}e=2139095040;if(g>>>0>1082064895){break a}e=0;f=g>>>16|0;if(f>>>0<16145){break a}g=c;e=d&65535|65536;fb(h+16|0,a,b,g,e,f-16129|0);_b(h,a,b,g,e,16257-f|0);b=H[h+8>>2];e=(H[h+12>>2]&33554431)<<7|b>>>25;g=H[h+4>>2];f=g;a=0;i=a;j=H[h>>2]|((H[h+16>>2]|H[h+24>>2])!=0|(H[h+20>>2]|H[h+28>>2])!=0);b=b&33554431;if(!(!a&(b|0)==16777216?!(f|j):!a&b>>>0<16777216)){e=e+1|0;break a}if(b^16777216|j|(f|i)){break a}e=(e&1)+e|0}la=h+32|0;return x(2,d&-2147483648|e),B()}function ek(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;a:{b:{c:{d:{e:{f:{g:{h:{i:{j:{e=b;if(b){d=c;if(!d){break j}break i}a=(a>>>0)/(c>>>0)|0;ma=0;break a}if(!a){break h}break g}if(!(d-1&d)){break f}h=(Q(d)+33|0)-Q(e)|0;i=0-h|0;break d}a=(e>>>0)/0|0;ma=0;break a}d=32-Q(e)|0;if(d>>>0<31){break e}break c}if((d|0)==1){break b}d=d?31-Q(d-1^d)|0:32;c=d&31;if((d&63)>>>0>=32){e=0;a=b>>>c|0}else{e=b>>>c|0;a=((1<>>c}ma=e;break a}h=d+1|0;i=63-d|0}d=b;e=h&63;f=e&31;if(e>>>0>=32){e=0;f=d>>>f|0}else{e=d>>>f|0;f=((1<>>f}i=i&63;d=i&31;if(i>>>0>=32){b=a<>>32-d|b<>>31;j=g;e=e<<1|f>>>31;g=i-(e+(d>>>0>>0)|0)>>31;k=c&g;f=j-k|0;e=e-(j>>>0>>0)|0;b=b<<1|a>>>31;a=l|a<<1;g=g&1;l=g;h=h-1|0;if(h){continue}break}}ma=b<<1|a>>>31;a=g|a<<1;break a}a=0;b=0}ma=b}return a}function Td(a){var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;h=bb(a);a:{if(!H[12082]|!I[a|0]){break a}c=a;b:{if(c&3){while(1){b=I[c|0];if(!b|(b|0)==61){break b}c=c+1|0;if(c&3){continue}break}}b=H[c>>2];c:{if((b^-1)&b-16843009&-2139062144){break c}while(1){b=b^1027423549;if((b^-1)&b-16843009&-2139062144){break c}b=H[c+4>>2];c=c+4|0;if(!(b-16843009&(b^-1)&-2139062144)){continue}break}}while(1){b=c;e=I[c|0];if(e){c=b+1|0;if((e|0)!=61){continue}}break}c=b}if(I[c|0]==61?c:0){break a}d=H[H[12082]>>2];if(!d){break a}d:{while(1){i=H[12082];c=a;e=0;g=h;b=0;e:{if(!g){break e}b=I[c|0];f:{if(!b){break f}while(1){g:{j=I[d|0];if(!j){break g}g=g-1|0;if(!g|(b|0)!=(j|0)){break g}d=d+1|0;b=I[c+1|0];c=c+1|0;if(b){continue}break f}break}e=b}b=(e&255)-I[d|0]|0}if(!b){c=H[(f<<2)+i>>2]+h|0;if(I[c|0]==61){break d}}f=f+1|0;d=H[(f<<2)+i>>2];if(d){continue}break}return 0}f=c+1|0}return f}function Ma(a,b,c,d){var e=0,f=0,g=0,h=0;a:{b:{if(!a){break b}e=F[a|0];if((e|0)==99){g=H[a+8>>2];f=ya(0,7719);c:{if(!g){e=f;break c}e=Ca(12);if(!e){break a}H[e+8>>2]=g;H[e+4>>2]=f;H[e>>2]=0}h=ya(e,7710);break b}h=H[a+8>>2];if((Tc(e)|0)>=(Tc(b)|0)){break b}f=ya(0,10414);d:{if(!h){e=f;break d}e=Ca(12);if(!e){break a}H[e+8>>2]=h;H[e+4>>2]=f;H[e>>2]=0}h=ya(e,10306)}f=F[d|0];e:{if((f|0)==99){g=H[d+8>>2];f=ya(0,7719);f:{if(!g){e=f;break f}e=Ca(12);if(!e){break a}H[e+8>>2]=g;H[e+4>>2]=f;H[e>>2]=0}e=ya(e,7710);break e}e=H[d+8>>2];if((Tc(f)|0)>=(Tc(b)|0)){break e}g=ya(0,10414);g:{if(!e){f=g;break g}f=Ca(12);if(!f){break a}H[f+8>>2]=e;H[f+4>>2]=g;H[f>>2]=0}e=ya(f,10306)}h:{if(!a){a=d;break h}Aa(d)}F[a|0]=b;c=ya(h,c);if(!e){H[a+8>>2]=c;return a}b=Ca(12);if(!b){break a}H[b+8>>2]=e;H[b+4>>2]=c;H[b>>2]=0;H[a+8>>2]=b;return a}Ya(9263);_(2);X()}function Qg(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0;e=la+-64|0;la=e;d=1;a:{if(rb(a,b,0)){break a}d=0;if(!b){break a}d=la+-64|0;la=d;f=H[b>>2];g=H[f-4>>2];h=H[f-8>>2];H[d+20>>2]=0;H[d+16>>2]=40852;H[d+12>>2]=b;H[d+8>>2]=40900;f=0;yb(d+24|0,0,39);b=b+h|0;b:{if(rb(g,40900,0)){H[d+56>>2]=1;na[H[H[g>>2]+20>>2]](g,d+8|0,b,b,1,0);f=H[d+32>>2]==1?b:0;break b}na[H[H[g>>2]+24>>2]](g,d+8|0,b,1,0);c:{switch(H[d+44>>2]){case 0:f=H[d+48>>2]==1?H[d+36>>2]==1?H[d+40>>2]==1?H[d+28>>2]:0:0:0;break b;case 1:break c;default:break b}}if(H[d+32>>2]!=1){if(H[d+48>>2]|H[d+36>>2]!=1|H[d+40>>2]!=1){break b}}f=H[d+24>>2]}la=d- -64|0;d=0;if(!f){break a}yb(e+8|4,0,52);H[e+56>>2]=1;H[e+20>>2]=-1;H[e+16>>2]=a;H[e+8>>2]=f;na[H[H[f>>2]+28>>2]](f,e+8|0,H[c>>2],1);a=H[e+32>>2];if((a|0)==1){H[c>>2]=H[e+24>>2]}d=(a|0)==1}la=e- -64|0;return d|0}function Oc(a,b,c,d){var e=0,f=0;a:{f=H[(H[11491]<<2)+45968>>2];b:{if(!f){e=a;break b}e=Ca(12);if(!e){break a}H[e+8>>2]=f;H[e+4>>2]=a;H[e>>2]=0}a=ya(e,10364);c:{d:{if(!d){break d}d=H[11488];if((d|0)<=0){break c}d=d-1|0;H[11488]=d;e:{if(H[(d<<2)+41952>>2]){a=ya(a,10835);d=10820;e=H[10284];if((e|0)==2001){Qc(b,11050,10833);e=H[10284]}if((e|0)==1995){break e}break d}a=ya(a,10859);d=10844;e=H[10284];if((e|0)==2001){Qc(b,11050,10857);e=H[10284]}if((e|0)!=1995){break d}}Qc(b,10701,d)}f:{if(!b){e=a;break f}e=Ca(12);if(!e){break a}H[e+8>>2]=b;H[e+4>>2]=a;H[e>>2]=0}e=ya(e,8666);if(c){b=ya(e,9624);d=H[10288];H[10288]=d+1;a=Ca(12);if(!a){break a}H[a+8>>2]=d;H[a+4>>2]=b;H[a>>2]=2;a=ya(a,12286);e=Ca(12);if(!e){break a}H[e+8>>2]=c;H[e+4>>2]=a;H[e>>2]=0}return ya(e,12286)}$(10009,7846,648,9050);X()}Ya(9263);_(2);X()}function Zf(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;f=la-32|0;la=f;a:{b:{c:{if((b|0)!=(c|0)){j=H[12064];H[12064]=0;g=la-16|0;la=g;Ja();h=la-16|0;la=h;e=la-16|0;la=e;Rd(e,b,f+28|0,2);b=H[e+4>>2];H[h>>2]=H[e>>2];H[h+4>>2]=b;b=h;h=H[e+12>>2];H[b+8>>2]=H[e+8>>2];H[b+12>>2]=h;la=e+16|0;e=H[b+4>>2];H[g>>2]=H[b>>2];H[g+4>>2]=e;e=g;g=H[b+12>>2];H[e+8>>2]=H[b+8>>2];H[e+12>>2]=g;la=b+16|0;b=H[e+4>>2];H[f>>2]=H[e>>2];H[f+4>>2]=b;b=H[e+12>>2];H[f+8>>2]=H[e+8>>2];H[f+12>>2]=b;la=e+16|0;e=H[f+8>>2];g=H[f+12>>2];h=H[f>>2];i=H[f+4>>2];b=H[12064];if(!b){break c}if(H[f+28>>2]!=(c|0)){break b}k=h;l=i;m=e;n=g;if((b|0)!=68){break a}break b}H[d>>2]=4;break a}H[12064]=j;if(H[f+28>>2]==(c|0)){break a}}H[d>>2]=4;h=k;i=l;e=m;g=n}H[a>>2]=h;H[a+4>>2]=i;H[a+8>>2]=e;H[a+12>>2]=g;la=f+32|0}function Kg(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;e=la-32|0;la=e;f=H[a+28>>2];H[e+16>>2]=f;d=H[a+20>>2];H[e+28>>2]=c;H[e+24>>2]=b;b=d-f|0;H[e+20>>2]=b;f=b+c|0;j=2;b=e+16|0;a:{b:{d=ba(H[a+60>>2],e+16|0,2,e+12|0)|0;if(d){H[12064]=d;d=-1}else{d=0}c:{if(!d){while(1){d=H[e+12>>2];if((d|0)==(f|0)){break c}if((d|0)<=-1){break b}g=H[b+4>>2];h=g>>>0>>0;i=(h<<3)+b|0;g=d-(h?g:0)|0;H[i>>2]=g+H[i>>2];i=(h?12:4)+b|0;H[i>>2]=H[i>>2]-g;f=f-d|0;b=h?b+8|0:b;j=j-h|0;d=ba(H[a+60>>2],b|0,j|0,e+12|0)|0;if(d){H[12064]=d;d=-1}else{d=0}if(!d){continue}break}}if((f|0)!=-1){break b}}b=H[a+44>>2];H[a+28>>2]=b;H[a+20>>2]=b;H[a+16>>2]=b+H[a+48>>2];a=c;break a}H[a+28>>2]=0;H[a+16>>2]=0;H[a+20>>2]=0;H[a>>2]=H[a>>2]|32;a=0;if((j|0)==2){break a}a=c-H[b+4>>2]|0}la=e+32|0;return a|0}function Wj(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;g=la-32|0;la=g;H[g+24>>2]=b;a:{if(!(H[d+4>>2]&1)){H[g>>2]=-1;b=na[H[H[a>>2]+16>>2]](a,b,c,d,e,g)|0;H[g+24>>2]=b;b:{switch(H[g>>2]){case 0:F[f|0]=0;break a;case 1:F[f|0]=1;break a;default:break b}}F[f|0]=1;H[e>>2]=4;break a}a=H[d+28>>2];H[g>>2]=a;H[a+4>>2]=H[a+4>>2]+1;h=pb(g);a=H[g>>2];b=H[a+4>>2]-1|0;H[a+4>>2]=b;if((b|0)==-1){na[H[H[a>>2]+8>>2]](a)}a=H[d+28>>2];H[g>>2]=a;H[a+4>>2]=H[a+4>>2]+1;a=oc(g);b=H[g>>2];d=H[b+4>>2]-1|0;H[b+4>>2]=d;if((d|0)==-1){na[H[H[b>>2]+8>>2]](b)}na[H[H[a>>2]+24>>2]](g,a);na[H[H[a>>2]+28>>2]](g|12,a);d=g+24|0;i=f,j=(Zc(g+24|0,c,g,d,h,e,1)|0)==(g|0),F[i|0]=j;b=H[g+24>>2];while(1){d=Ba(d-12|0);if((g|0)!=(d|0)){continue}break}}la=g+32|0;return b|0}function Nj(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;g=la-32|0;la=g;H[g+24>>2]=b;a:{if(!(H[d+4>>2]&1)){H[g>>2]=-1;b=na[H[H[a>>2]+16>>2]](a,b,c,d,e,g)|0;H[g+24>>2]=b;b:{switch(H[g>>2]){case 0:F[f|0]=0;break a;case 1:F[f|0]=1;break a;default:break b}}F[f|0]=1;H[e>>2]=4;break a}a=H[d+28>>2];H[g>>2]=a;H[a+4>>2]=H[a+4>>2]+1;h=nb(g);a=H[g>>2];b=H[a+4>>2]-1|0;H[a+4>>2]=b;if((b|0)==-1){na[H[H[a>>2]+8>>2]](a)}a=H[d+28>>2];H[g>>2]=a;H[a+4>>2]=H[a+4>>2]+1;a=lc(g);b=H[g>>2];d=H[b+4>>2]-1|0;H[b+4>>2]=d;if((d|0)==-1){na[H[H[b>>2]+8>>2]](b)}na[H[H[a>>2]+24>>2]](g,a);na[H[H[a>>2]+28>>2]](g|12,a);d=g+24|0;i=f,j=(Xc(g+24|0,c,g,d,h,e,1)|0)==(g|0),F[i|0]=j;b=H[g+24>>2];while(1){d=Ba(d-12|0);if((g|0)!=(d|0)){continue}break}}la=g+32|0;return b|0}function nc(a,b,c,d,e,f,g,h,i,j){var k=0,l=0,m=0;k=la-16|0;la=k;F[k+15|0]=a;a:{b:{c:{if(H[d>>2]!=(c|0)){break c}l=43;m=a&255;if((m|0)!=I[j+24|0]){l=45;if(I[j+25|0]!=(m|0)){break c}}H[d>>2]=c+1;F[c|0]=l;break b}if(I[g+11|0]>>>7|0){g=H[g+4>>2]}else{g=I[g+11|0]}if(!(!g|(a|0)!=(f|0))){a=0;b=H[i>>2];if((b-h|0)>159){break a}a=H[e>>2];H[i>>2]=b+4;H[b>>2]=a;break b}a=-1;f=Nd(j,j+26|0,k+15|0)-j|0;if((f|0)>23){break a}d:{e:{switch(b-8|0){case 0:case 2:if((b|0)>(f|0)){break d}break a;case 1:break d;default:break e}}if((b|0)!=16|(f|0)<22){break d}b=H[d>>2];if((b|0)==(c|0)|(b-c|0)>2|I[b-1|0]!=48){break a}a=0;H[e>>2]=0;H[d>>2]=b+1;F[b|0]=I[f+33648|0];break a}a=H[d>>2];H[d>>2]=a+1;F[a|0]=I[f+33648|0];H[e>>2]=H[e>>2]+1;a=0;break a}a=0;H[e>>2]=0}la=k+16|0;return a}function kc(a,b,c,d,e,f,g,h,i,j){var k=0,l=0;k=la-16|0;la=k;H[k+12>>2]=a;a:{b:{c:{if(H[d>>2]!=(c|0)){break c}l=43;if(H[j+96>>2]!=(a|0)){l=45;if(H[j+100>>2]!=(a|0)){break c}}H[d>>2]=c+1;F[c|0]=l;break b}if(I[g+11|0]>>>7|0){g=H[g+4>>2]}else{g=I[g+11|0]}if(!(!g|(a|0)!=(f|0))){a=0;b=H[i>>2];if((b-h|0)>159){break a}a=H[e>>2];H[i>>2]=b+4;H[b>>2]=a;break b}a=-1;g=Kd(j,j+104|0,k+12|0)-j|0;if((g|0)>92){break a}f=g>>2;d:{e:{switch(b-8|0){case 0:case 2:if((b|0)>(f|0)){break d}break a;case 1:break d;default:break e}}if((b|0)!=16|(g|0)<88){break d}b=H[d>>2];if((b|0)==(c|0)|(b-c|0)>2|I[b-1|0]!=48){break a}a=0;H[e>>2]=0;H[d>>2]=b+1;F[b|0]=I[f+33648|0];break a}a=H[d>>2];H[d>>2]=a+1;F[a|0]=I[f+33648|0];H[e>>2]=H[e>>2]+1;a=0;break a}a=0;H[e>>2]=0}la=k+16|0;return a}function he(a,b,c){var d=0,e=0;a:{if((a|0)==(b|0)){break a}e=a+c|0;if(b-e>>>0<=0-(c<<1)>>>0){gb(a,b,c);return}d=(a^b)&3;b:{c:{if(a>>>0>>0){if(d){break b}if(!(a&3)){break c}while(1){if(!c){break a}F[a|0]=I[b|0];b=b+1|0;c=c-1|0;a=a+1|0;if(a&3){continue}break}break c}d:{if(d){break d}if(e&3){while(1){if(!c){break a}c=c-1|0;d=c+a|0;F[d|0]=I[b+c|0];if(d&3){continue}break}}if(c>>>0<=3){break d}while(1){c=c-4|0;H[c+a>>2]=H[b+c>>2];if(c>>>0>3){continue}break}}if(!c){break a}while(1){c=c-1|0;F[c+a|0]=I[b+c|0];if(c){continue}break}break a}if(c>>>0<=3){break b}while(1){H[a>>2]=H[b>>2];b=b+4|0;a=a+4|0;c=c-4|0;if(c>>>0>3){continue}break}}if(!c){break a}while(1){F[a|0]=I[b|0];a=a+1|0;b=b+1|0;c=c-1|0;if(c){continue}break}}}function yb(a,b,c){var d=0,e=0,f=0;a:{if(!c){break a}f=a+c|0;F[f-1|0]=b;F[a|0]=b;if(c>>>0<3){break a}F[f-2|0]=b;F[a+1|0]=b;F[f-3|0]=b;F[a+2|0]=b;if(c>>>0<7){break a}F[f-4|0]=b;F[a+3|0]=b;if(c>>>0<9){break a}f=0-a&3;e=f+a|0;d=N(b&255,16843009);H[e>>2]=d;b=c-f&-4;c=b+e|0;H[c-4>>2]=d;if(b>>>0<9){break a}H[e+8>>2]=d;H[e+4>>2]=d;H[c-8>>2]=d;H[c-12>>2]=d;if(b>>>0<25){break a}H[e+24>>2]=d;H[e+20>>2]=d;H[e+16>>2]=d;H[e+12>>2]=d;H[c-16>>2]=d;H[c-20>>2]=d;H[c-24>>2]=d;H[c-28>>2]=d;c=b;b=e&4|24;c=c-b|0;if(c>>>0<32){break a}d=dk(d,0,1,1);f=ma;b=b+e|0;while(1){H[b+24>>2]=d;e=f;H[b+28>>2]=e;H[b+16>>2]=d;H[b+20>>2]=e;H[b+8>>2]=d;H[b+12>>2]=e;H[b>>2]=d;H[b+4>>2]=e;b=b+32|0;c=c-32|0;if(c>>>0>31){continue}break}}return a}function vg(a,b,c,d,e,f){var g=0;g=la-80|0;la=g;a:{if((f|0)>=16384){La(g+32|0,b,c,d,e,0,0,0,2147352576);d=H[g+40>>2];e=H[g+44>>2];b=H[g+32>>2];c=H[g+36>>2];if((f|0)<32767){f=f-16383|0;break a}La(g+16|0,b,c,d,e,0,0,0,2147352576);f=((f|0)<49149?f:49149)-32766|0;d=H[g+24>>2];e=H[g+28>>2];b=H[g+16>>2];c=H[g+20>>2];break a}if((f|0)>-16383){break a}La(g- -64|0,b,c,d,e,0,0,0,65536);d=H[g+72>>2];e=H[g+76>>2];b=H[g+64>>2];c=H[g+68>>2];if((f|0)>-32765){f=f+16382|0;break a}La(g+48|0,b,c,d,e,0,0,0,65536);f=((f|0)>-49146?f:-49146)+32764|0;d=H[g+56>>2];e=H[g+60>>2];b=H[g+48>>2];c=H[g+52>>2]}La(g,b,c,d,e,0,0,0,f+16383<<16);b=H[g+12>>2];H[a+8>>2]=H[g+8>>2];H[a+12>>2]=b;b=H[g+4>>2];H[a>>2]=H[g>>2];H[a+4>>2]=b;la=g+80|0}function be(a,b,c,d){a:{if(b>>>0>20){break a}b:{switch(b-9|0){case 0:b=H[c>>2];H[c>>2]=b+4;H[a>>2]=H[b>>2];return;case 1:b=H[c>>2];H[c>>2]=b+4;b=H[b>>2];H[a>>2]=b;H[a+4>>2]=b>>31;return;case 2:b=H[c>>2];H[c>>2]=b+4;H[a>>2]=H[b>>2];H[a+4>>2]=0;return;case 3:b=H[c>>2]+7&-8;H[c>>2]=b+8;c=H[b+4>>2];H[a>>2]=H[b>>2];H[a+4>>2]=c;return;case 4:b=H[c>>2];H[c>>2]=b+4;b=G[b>>1];H[a>>2]=b;H[a+4>>2]=b>>31;return;case 5:b=H[c>>2];H[c>>2]=b+4;H[a>>2]=J[b>>1];H[a+4>>2]=0;return;case 6:b=H[c>>2];H[c>>2]=b+4;b=F[b|0];H[a>>2]=b;H[a+4>>2]=b>>31;return;case 7:b=H[c>>2];H[c>>2]=b+4;H[a>>2]=I[b|0];H[a+4>>2]=0;return;case 8:b=H[c>>2]+7&-8;H[c>>2]=b+8;M[a>>3]=M[b>>3];return;case 9:break b;default:break a}}na[d|0](a,c)}}function Ga(a){var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;a:{c=H[a+112>>2];d=H[a+116>>2];b:{if(c|d){b=c>>>0<=K[a+120>>2];c=H[a+124>>2];if((d|0)<(c|0)?1:(d|0)<=(c|0)?b:0){break b}}g=kd(a);if((g|0)>-1){break a}}H[a+104>>2]=0;return-1}h=a;b=H[a+116>>2];i=b;d=H[a+8>>2];c=d;f=H[a+112>>2];c:{if(!(b|f)){break c}c=d;e=H[a+120>>2]^-1;f=e+f|0;b=(H[a+124>>2]^-1)+i|0;b=f>>>0>>0?b+1|0:b;i=H[a+4>>2];e=d-i|0;j=f>>>0>=e>>>0;e=e>>31;if((b|0)>(e|0)?1:(e|0)<=(b|0)?j:0){break c}c=f+i|0}H[h+104>>2]=c;h=H[a+4>>2];if(d){c=a;b=(d-h|0)+1|0;d=b+H[a+120>>2]|0;a=H[a+124>>2]+(b>>31)|0;H[c+120>>2]=d;H[c+124>>2]=d>>>0>>0?a+1|0:a}a=h-1|0;if(I[a|0]!=(g|0)){F[a|0]=g}return g}function Yb(a,b,c,d,e,f,g,h){var i=0,j=0,k=0,l=0,m=0,n=0;j=1;i=d&2147483647;m=i;k=c;a:{if(!c&(i|0)==2147418112?a|b:(i|0)==2147418112&(c|0)!=0|i>>>0>2147418112){break a}l=h&2147483647;n=l;i=g;if(!g&(l|0)==2147418112?e|f:(l|0)==2147418112&(g|0)!=0|l>>>0>2147418112){break a}if(!(a|e|(i|k)|(b|f|(m|n)))){return 0}k=d&h;if((k|0)>0?1:(k|0)>=0){j=-1;if((c|0)==(g|0)&(d|0)==(h|0)?(b|0)==(f|0)&a>>>0>>0|b>>>0>>0:(d|0)<(h|0)?1:(d|0)<=(h|0)?c>>>0>>0:0){break a}return(a^e|c^g)!=0|(b^f|d^h)!=0}j=-1;if((c|0)==(g|0)&(d|0)==(h|0)?(b|0)==(f|0)&a>>>0>e>>>0|b>>>0>f>>>0:(d|0)>(h|0)?1:(d|0)>=(h|0)?c>>>0>g>>>0:0){break a}j=(a^e|c^g)!=0|(b^f|d^h)!=0}return j}function _c(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0;h=la-16|0;la=h;f=d?d:48324;d=H[f>>2];a:{b:{c:{if(!b){if(d){break c}break a}e=-2;if(!c){break a}i=a?a:h+12|0;d:{if(d){a=c;break d}a=I[b|0];d=a<<24>>24;if((d|0)>=0){H[i>>2]=a;e=(d|0)!=0;break a}a=F[b|0];if(!H[H[10445]>>2]){H[i>>2]=a&57343;e=1;break a}a=(a&255)-194|0;if(a>>>0>50){break c}d=H[(a<<2)+29328>>2];a=c-1|0;if(!a){break b}b=b+1|0}g=I[b|0];j=g>>>3|0;if((j-16|(d>>26)+j)>>>0>7){break c}while(1){a=a-1|0;d=g-128|d<<6;if((d|0)>=0){H[f>>2]=0;H[i>>2]=d;e=c-a|0;break a}if(!a){break b}b=b+1|0;g=I[b|0];if((g&192)==128){continue}break}}H[f>>2]=0;H[12064]=25;e=-1;break a}H[f>>2]=d}la=h+16|0;return e}function rc(a,b){var c=0,d=0;a:{b:{c:{c=H[a>>2];if((c|0)>0){break c}d=H[a+8>>2];if(d){c=1;if(H[d>>2]!=2){break c}c=H[d+24>>2];if((c|0)>0){break c}a=H[d+20>>2];if(a){break b}$(10018,7846,769,8173);X()}d=H[H[a+4>>2]+8>>2];d:{a=H[10481];if(a){while(1){if(!cb(H[a>>2],d)){break d}a=H[a+16>>2];if(a){continue}break}}c=1;a=H[10482];if(!a){break c}while(1){if(!cb(H[a>>2],d)){break d}a=H[a+16>>2];if(a){continue}break}break c}c=1;a=H[a+12>>2];if(H[a>>2]!=2){break c}c=H[a+24>>2];if((c|0)>0){break c}a=H[a+20>>2];if(a){break b}$(9694,7846,757,8173);X()}a=Ca(12);if(!a){break a}H[a+8>>2]=c;H[a>>2]=2;H[a+4>>2]=0}yf(a,b);return}Ya(9263);_(2);X()}function Jb(a,b,c,d,e){var f=0,g=0,h=0,i=0,j=0;g=la-16|0;la=g;H[g+8>>2]=b;b=0;h=6;a:{b:{if($a(a,g+8|0)){break b}h=4;i=d;f=H[a>>2];j=H[f+12>>2];c:{if((j|0)==H[f+16>>2]){f=na[H[H[f>>2]+36>>2]](f)|0;break c}f=H[j>>2]}if(!(na[H[H[d>>2]+12>>2]](i,2048,f)|0)){break b}b=na[H[H[d>>2]+52>>2]](d,f,0)|0;while(1){d:{Za(a);b=b-48|0;if(!kb(a,g+8|0)|(e|0)<2){break d}i=d;f=H[a>>2];h=H[f+12>>2];e:{if((h|0)==H[f+16>>2]){f=na[H[H[f>>2]+36>>2]](f)|0;break e}f=H[h>>2]}if(!(na[H[H[d>>2]+12>>2]](i,2048,f)|0)){break a}e=e-1|0;b=(na[H[H[d>>2]+52>>2]](d,f,0)|0)+N(b,10)|0;continue}break}h=2;if(!$a(a,g+8|0)){break a}}H[c>>2]=H[c>>2]|h}la=g+16|0;return b}function de(a,b,c,d,e){var f=0,g=0,h=0;f=la-208|0;la=f;H[f+204>>2]=c;yb(f+160|0,0,40);H[f+200>>2]=H[f+204>>2];a:{if((gd(0,b,f+200|0,f+80|0,f+160|0,d,e)|0)<0){b=-1;break a}g=H[a+76>>2]>=0;c=H[a>>2];if(F[a+74|0]<=0){H[a>>2]=c&-33}h=c&32;b:{if(H[a+48>>2]){b=gd(a,b,f+200|0,f+80|0,f+160|0,d,e);break b}H[a+48>>2]=80;H[a+16>>2]=f+80;H[a+28>>2]=f;H[a+20>>2]=f;c=H[a+44>>2];H[a+44>>2]=f;d=gd(a,b,f+200|0,f+80|0,f+160|0,d,e);b=d;if(!c){break b}na[H[a+36>>2]](a,0,0)|0;H[a+48>>2]=0;H[a+44>>2]=c;H[a+28>>2]=0;H[a+16>>2]=0;b=H[a+20>>2];H[a+20>>2]=0;b=b?d:-1}c=a;a=H[a>>2];H[c>>2]=a|h;b=a&32?-1:b;if(!g){break a}}la=f+208|0;return b}function Nh(a){a=a|0;a:{if(F[48636]&1){break a}if(!Wa(48636)){break a}b:{if(F[49728]&1){break b}if(!Wa(49728)){break b}a=49440;while(1){a=Fa(a)+12|0;if((a|0)!=49728){continue}break}Va(49728)}Ha(49440,38648);Ha(49452,38680);Ha(49464,38716);Ha(49476,38740);Ha(49488,38764);Ha(49500,38780);Ha(49512,38800);Ha(49524,38820);Ha(49536,38848);Ha(49548,38888);Ha(49560,38920);Ha(49572,38956);Ha(49584,38992);Ha(49596,39008);Ha(49608,39024);Ha(49620,39040);Ha(49632,38764);Ha(49644,39056);Ha(49656,39072);Ha(49668,39088);Ha(49680,39104);Ha(49692,39120);Ha(49704,39136);Ha(49716,39152);H[12158]=49440;Va(48636)}return H[12158]}function _g(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;c=la-32|0;la=c;e=I[a+52|0];f=a;a:{b:{if((b|0)==-1){d=b;if(e){break a}b=H[a+48>>2];a=(b|0)!=-1;break b}if(e){H[c+16>>2]=H[a+48>>2];c:{d:{e:{f:{d=H[a+36>>2];switch((na[H[H[d>>2]+12>>2]](d,H[a+40>>2],c+16|0,c+20|0,c+12|0,c+24|0,c+32|0,c+20|0)|0)-1|0){case 0:case 1:break d;case 2:break f;default:break e}}d=H[a+48>>2];H[c+20>>2]=c+25;F[c+24|0]=d}while(1){d=H[c+20>>2];e=1;if(d>>>0<=c+24>>>0){break c}d=d-1|0;H[c+20>>2]=d;if((Ec(F[d|0],H[a+32>>2])|0)!=-1){continue}break}}d=-1;e=0}if(!e){break a}}H[a+48>>2]=b;a=1}F[f+52|0]=a;d=b}la=c+32|0;return d|0}function dh(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;c=la-32|0;la=c;e=I[a+52|0];f=a;a:{b:{if((b|0)==-1){d=b;if(e){break a}b=H[a+48>>2];a=(b|0)!=-1;break b}if(e){F[c+19|0]=H[a+48>>2];c:{d:{e:{f:{d=H[a+36>>2];switch((na[H[H[d>>2]+12>>2]](d,H[a+40>>2],c+19|0,c+20|0,c+12|0,c+24|0,c+32|0,c+20|0)|0)-1|0){case 0:case 1:break d;case 2:break f;default:break e}}d=H[a+48>>2];H[c+20>>2]=c+25;F[c+24|0]=d}while(1){d=H[c+20>>2];e=1;if(d>>>0<=c+24>>>0){break c}d=d-1|0;H[c+20>>2]=d;if((Ec(F[d|0],H[a+32>>2])|0)!=-1){continue}break}}d=-1;e=0}if(!e){break a}}H[a+48>>2]=b;a=1}F[f+52|0]=a;d=b}la=c+32|0;return d|0}function $i(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0;c=la-416|0;la=c;H[c+12>>2]=c+416;d=la-144|0;la=d;H[d+28>>2]=d+132;Ff(a+8|0,d+32|0,d+28|0,e,f,g);H[d+16>>2]=0;H[d+20>>2]=0;H[d+12>>2]=d+32;g=c+16|0;f=g;h=H[c+12>>2]-f|0;e=la-16|0;la=e;H[e+12>>2]=H[a+8>>2];a=Cb(e+8|0,e+12|0);f=lg(f,d+12|0,h>>2,d+16|0);a=H[a>>2];if(a){if(a){H[10445]=(a|0)==-1?48300:a}}la=e+16|0;if((f|0)==-1){Xa();X()}H[c+12>>2]=g+(f<<2);la=d+144|0;d=c+16|0;e=H[c+12>>2];a=la-16|0;la=a;H[a+8>>2]=b;while(1){if((d|0)!=(e|0)){Pf(a+8|0,H[d>>2]);d=d+4|0;continue}break}la=a+16|0;la=c+416|0;return H[a+8>>2]}function uj(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0;f=la-48|0;la=f;H[f+40>>2]=b;a:{if(!(H[c+4>>2]&1)){c=na[H[H[a>>2]+24>>2]](a,b,c,d,e)|0;break a}a=H[c+28>>2];H[f+24>>2]=a;H[a+4>>2]=H[a+4>>2]+1;a=lc(f+24|0);b=H[f+24>>2];c=H[b+4>>2]-1|0;H[b+4>>2]=c;if((c|0)==-1){na[H[H[b>>2]+8>>2]](b)}b:{if(e){na[H[H[a>>2]+24>>2]](f+24|0,a);break b}na[H[H[a>>2]+28>>2]](f+24|0,a)}g=f,h=vb(f+24|0),H[g+16>>2]=h;while(1){g=f,h=Tb(f+24|0),H[g+8>>2]=h;if(H[f+16>>2]!=H[f+8>>2]){Pf(f+40|0,H[H[f+16>>2]>>2]);H[f+16>>2]=H[f+16>>2]+4;continue}else{c=H[f+40>>2];Ba(f+24|0)}break}}la=f+48|0;return c|0}function Ph(a){a=a|0;a:{if(F[48628]&1){break a}if(!Wa(48628)){break a}b:{if(F[49424]&1){break b}if(!Wa(49424)){break b}a=49136;while(1){a=Fa(a)+12|0;if((a|0)!=49424){continue}break}Va(49424)}Ia(49136,7750);Ia(49148,7741);Ia(49160,8802);Ia(49172,8754);Ia(49184,7842);Ia(49196,9003);Ia(49208,7758);Ia(49220,7996);Ia(49232,8525);Ia(49244,8508);Ia(49256,8516);Ia(49268,8535);Ia(49280,8678);Ia(49292,9294);Ia(49304,8560);Ia(49316,8470);Ia(49328,7842);Ia(49340,8594);Ia(49352,8722);Ia(49364,8811);Ia(49376,8564);Ia(49388,8162);Ia(49400,7937);Ia(49412,9290);H[12156]=49136;Va(48628)}return H[12156]}function me(a,b,c,d,e,f,g,h){var i=0,j=0,k=0;i=la-16|0;la=i;if((b^-1)+1073741807>>>0>=c>>>0){k=I[a+11|0]>>>7|0?H[a>>2]:a;a:{if(b>>>0<536870887){H[i+8>>2]=b<<1;H[i+12>>2]=b+c;c=la-16|0;la=c;la=c+16|0;c=i+8|0;j=i+12|0;c=H[(K[j>>2]>2]?c:j)>>2];if(c>>>0>=2){j=c+4&-4;c=j-1|0;c=(c|0)==2?j:c}else{c=1}break a}c=1073741806}j=c+1|0;c=Re(j);if(e){Fb(c,k,e)}if(g){Fb(c+(e<<2)|0,h,g)}d=d-(e+f|0)|0;if(d){h=e<<2;Fb((h+c|0)+(g<<2)|0,(h+k|0)+(f<<2)|0,d)}if((b|0)!=1){Aa(k)}H[a>>2]=c;H[a+8>>2]=j|-2147483648;b=a;a=d+(e+g|0)|0;H[b+4>>2]=a;H[i+4>>2]=0;H[c+(a<<2)>>2]=H[i+4>>2];la=i+16|0;return}wb();X()}function Ej(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0;f=la-48|0;la=f;H[f+40>>2]=b;a:{if(!(H[c+4>>2]&1)){c=na[H[H[a>>2]+24>>2]](a,b,c,d,e)|0;break a}a=H[c+28>>2];H[f+24>>2]=a;H[a+4>>2]=H[a+4>>2]+1;a=oc(f+24|0);b=H[f+24>>2];c=H[b+4>>2]-1|0;H[b+4>>2]=c;if((c|0)==-1){na[H[H[b>>2]+8>>2]](b)}b:{if(e){na[H[H[a>>2]+24>>2]](f+24|0,a);break b}na[H[H[a>>2]+28>>2]](f+24|0,a)}g=f,h=vb(f+24|0),H[g+16>>2]=h;while(1){g=f,h=Vb(f+24|0),H[g+8>>2]=h;if(H[f+16>>2]!=H[f+8>>2]){Rf(f+40|0,F[H[f+16>>2]]);H[f+16>>2]=H[f+16>>2]+1;continue}else{c=H[f+40>>2];Ba(f+24|0)}break}}la=f+48|0;return c|0}function Tg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;c=la-32|0;la=c;a:{b:{c:{if((b|0)==-1){break c}H[c+20>>2]=b;if(I[a+44|0]){if((xb(c+20|0,4,1,H[a+32>>2])|0)!=1){break b}break c}H[c+16>>2]=c+24;f=c+32|0;g=c+24|0;d=c+20|0;while(1){e=H[a+36>>2];e=na[H[H[e>>2]+12>>2]](e,H[a+40>>2],d,g,c+12|0,c+24|0,f,c+16|0)|0;if(H[c+12>>2]==(d|0)){break b}if((e|0)==3){if((xb(d,1,1,H[a+32>>2])|0)==1){break c}break b}if(e>>>0>1){break b}d=H[c+16>>2]-(c+24|0)|0;if((xb(c+24|0,1,d,H[a+32>>2])|0)!=(d|0)){break b}d=H[c+12>>2];if((e|0)==1){continue}break}}a=(b|0)==-1?0:b;break a}a=-1}la=c+32|0;return a|0}function Xg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;c=la-32|0;la=c;a:{b:{c:{if((b|0)==-1){break c}F[c+23|0]=b;if(I[a+44|0]){if((xb(c+23|0,1,1,H[a+32>>2])|0)!=1){break b}break c}H[c+16>>2]=c+24;f=c+32|0;g=c+24|0;d=c+23|0;while(1){e=H[a+36>>2];e=na[H[H[e>>2]+12>>2]](e,H[a+40>>2],d,g,c+12|0,c+24|0,f,c+16|0)|0;if(H[c+12>>2]==(d|0)){break b}if((e|0)==3){if((xb(d,1,1,H[a+32>>2])|0)==1){break c}break b}if(e>>>0>1){break b}d=H[c+16>>2]-(c+24|0)|0;if((xb(c+24|0,1,d,H[a+32>>2])|0)!=(d|0)){break b}d=H[c+12>>2];if((e|0)==1){continue}break}}a=(b|0)==-1?0:b;break a}a=-1}la=c+32|0;return a|0}function wg(a){var b=0,c=0,d=0,e=0,f=0;a:{b=Ca(48);if(b){H[b+12>>2]=16384;c=Ca(16386);H[b+4>>2]=c;if(!c){break a}H[b+20>>2]=1;f=H[12064];H[b+16>>2]=0;G[c>>1]=0;H[b+28>>2]=1;H[b+44>>2]=0;H[b+8>>2]=c;e=H[10466];if(e){d=H[e+(H[10467]<<2)>>2]}else{d=0}if((d|0)==(b|0)){d=e+(H[10467]<<2)|0;c=H[d>>2];H[10472]=H[c+16>>2];c=H[c+8>>2];H[10468]=c;H[10463]=c;H[10461]=H[H[d>>2]>>2];F[41876]=I[c|0]}H[b+40>>2]=1;H[b>>2]=a;if(((e?H[e+(H[10467]<<2)>>2]:0)|0)!=(b|0)){H[b+32>>2]=1;H[b+36>>2]=0}d=b;if(a){a=(_d(H[a+60>>2])|0)>0}else{a=0}H[d+24>>2]=a;H[12064]=f;return b}ub(10212);X()}ub(10212);X()}function Hg(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;if(rb(a,H[b+8>>2],f)){md(b,c,d,e);return}h=I[b+53|0];g=H[a+12>>2];F[b+53|0]=0;i=I[b+52|0];F[b+52|0]=0;j=a+16|0;ld(j,b,c,d,e,f);k=I[b+53|0];h=h|k;l=I[b+52|0];i=i|l;a:{if((g|0)<2){break a}j=j+(g<<3)|0;g=a+24|0;while(1){if(I[b+54|0]){break a}b:{if(l){if(H[b+24>>2]==1){break a}if(I[a+8|0]&2){break b}break a}if(!k){break b}if(!(F[a+8|0]&1)){break a}}G[b+52>>1]=0;ld(g,b,c,d,e,f);k=I[b+53|0];h=k|h;l=I[b+52|0];i=l|i;g=g+8|0;if(j>>>0>g>>>0){continue}break}}F[b+53|0]=(h&255)!=0;F[b+52|0]=(i&255)!=0}function Ea(a,b){var c=0,d=0,e=0,f=0;if(I[a+11|0]>>>7|0){c=H[a+4>>2]}else{c=I[a+11|0]}a:{if(c>>>0>>0){d=la-16|0;la=d;e=b-c|0;if(e){c=I[a+11|0]>>>7|0?(H[a+8>>2]&2147483647)-1|0:10;if(I[a+11|0]>>>7|0){b=H[a+4>>2]}else{b=I[a+11|0]}f=b+e|0;if(c-b>>>0>>0){qd(a,c,f-c|0,b,b)}c=b;if(I[a+11|0]>>>7|0){b=H[a>>2]}else{b=a}ne(c+b|0,e,0);b:{if(I[a+11|0]>>>7|0){H[a+4>>2]=f;break b}F[a+11|0]=f}F[d+15|0]=0;F[b+f|0]=I[d+15|0]}break a}d=la-16|0;la=d;c:{if(I[a+11|0]>>>7|0){c=H[a>>2];F[d+15|0]=0;F[b+c|0]=I[d+15|0];H[a+4>>2]=b;break c}F[d+14|0]=0;F[a+b|0]=I[d+14|0];F[a+11|0]=b}}la=d+16|0}function Ha(a,b){var c=0,d=0,e=0,f=0,g=0,h=0;e=mg(b);f=la-16|0;la=f;c=I[a+11|0]>>>7|0?(H[a+8>>2]&2147483647)-1|0:1;a:{if(c>>>0>=e>>>0){c=a;d=H[a>>2];b:{if(I[a+11|0]>>>7|0){break b}d=c}g=d;a=e;if(a){c:{if(d-b>>2>>>0>>0){while(1){a=a-1|0;h=a<<2;H[h+d>>2]=H[b+h>>2];if(a){continue}break c}}if(!a){break c}while(1){H[d>>2]=H[b>>2];d=d+4|0;b=b+4|0;a=a-1|0;if(a){continue}break}}}H[f+12>>2]=0;H[(e<<2)+g>>2]=H[f+12>>2];d:{if(I[c+11|0]>>>7|0){H[c+4>>2]=e;break d}F[c+11|0]=e}break a}d=a;g=c;c=e-c|0;if(I[a+11|0]>>>7|0){a=H[a+4>>2]}else{a=I[a+11|0]}me(d,g,c,a,0,a,e,b)}la=f+16|0}function yf(a,b){var c=0,d=0,e=0;a:{b:{if(!b){break b}c:{while(1){d:{yf(a,H[b+4>>2]);c=H[b>>2];if(c){if((c|0)!=4){break b}d=Ud(a);e=H[b+8>>2];c=ya(0,7719);e:{if(!e){a=c;break e}a=Ca(12);if(!a){break d}H[a+8>>2]=e;H[a+4>>2]=c;H[a>>2]=0}c=ya(a,7710);f:{g:{if(c){a=Ca(12);if(!a){break a}H[a+8>>2]=c;H[a+4>>2]=d;H[a>>2]=0;c=ya(0,7719);d=a;break g}c=ya(0,7719);a=c;if(!d){break f}}a=Ca(12);if(!a){break c}H[a+8>>2]=d;H[a+4>>2]=c;H[a>>2]=0}a=ya(a,7710);H[b+8>>2]=0;H[b+4>>2]=a;H[b>>2]=0;break b}b=H[b+8>>2];if(b){continue}break b}break}break a}break a}return}Ya(9263);_(2);X()}function Hb(a,b,c,d,e,f){var g=0,h=0,i=0,j=0,k=0,l=0;g=la-16|0;la=g;a:{if(!a){break a}h=H[e+12>>2];j=c-b|0;if((j|0)>=1){if((na[H[H[a>>2]+48>>2]](a,b,j)|0)!=(j|0)){break a}}b=d-b|0;h=(b|0)<(h|0)?h-b|0:0;if((h|0)>=1){b:{if(h>>>0>=11){i=h+16&-16;b=dc(i);H[g+8>>2]=i|-2147483648;H[g>>2]=b;H[g+4>>2]=h;break b}F[g+11|0]=h;b=g}i=0;k=yb(b,f,h)+h|0,l=0,F[k|0]=l;b=na[H[H[a>>2]+48>>2]](a,F[g+11|0]<0?H[g>>2]:g,h)|0;if(F[g+11|0]<=-1){Aa(H[g>>2])}if((b|0)!=(h|0)){break a}}b=d-c|0;if((b|0)>=1){if((na[H[H[a>>2]+48>>2]](a,c,b)|0)!=(b|0)){break a}}H[e+12>>2]=0;i=a}la=g+16|0;return i}function oe(a,b,c,d,e,f,g,h){var i=0,j=0,k=0;i=la-16|0;la=i;if((b^-1)-17>>>0>=c>>>0){if(I[a+11|0]>>>7|0){k=H[a>>2]}else{k=a}a:{if(b>>>0<2147483623){H[i+8>>2]=b<<1;H[i+12>>2]=b+c;c=la-16|0;la=c;la=c+16|0;c=i+8|0;j=i+12|0;c=H[(K[j>>2]>2]?c:j)>>2];if(c>>>0>=11){j=c+16&-16;c=j-1|0;c=(c|0)==11?j:c}else{c=10}break a}c=-18}j=c+1|0;c=dc(j);if(e){Gb(c,k,e)}if(g){Gb(c+e|0,h,g)}d=d-(e+f|0)|0;if(d){Gb((c+e|0)+g|0,(e+k|0)+f|0,d)}if((b|0)!=10){Aa(k)}H[a>>2]=c;H[a+8>>2]=j|-2147483648;b=a;a=d+(e+g|0)|0;H[b+4>>2]=a;F[i+7|0]=0;F[a+c|0]=I[i+7|0];la=i+16|0;return}wb();X()}function Jg(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;if(rb(a,H[b+8>>2],e)){if(!(H[b+28>>2]==1|H[b+4>>2]!=(c|0))){H[b+28>>2]=d}return}a:{if(rb(a,H[b>>2],e)){if(!(H[b+20>>2]!=(c|0)?H[b+16>>2]!=(c|0):0)){if((d|0)!=1){break a}H[b+32>>2]=1;return}H[b+32>>2]=d;b:{if(H[b+44>>2]==4){break b}G[b+52>>1]=0;a=H[a+8>>2];na[H[H[a>>2]+20>>2]](a,b,c,c,1,e);if(I[b+53|0]){H[b+44>>2]=3;if(!I[b+52|0]){break b}break a}H[b+44>>2]=4}H[b+20>>2]=c;H[b+40>>2]=H[b+40>>2]+1;if(H[b+36>>2]!=1|H[b+24>>2]!=2){break a}F[b+54|0]=1;return}a=H[a+8>>2];na[H[H[a>>2]+24>>2]](a,b,c,d,e)}}function Eb(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;f=la-16|0;la=f;A(+b);h=v(1)|0;e=v(0)|0;g=h&2147483647;c=g;d=e;g=c+-1048576|0;a:{if((g|0)==2145386495|g>>>0<2145386495){i=d<<28;e=c>>>4|0;c=(c&15)<<28|d>>>4;d=e+1006632960|0;break a}if((c|0)==2146435072|c>>>0>2146435072){i=e<<28;c=h;e=c>>>4|0;c=(c&15)<<28|d>>>4;d=e|2147418112;break a}if(!(c|d)){c=0;d=0;break a}g=c;c=c>>>0<1?Q(e)+32|0:Q(c);fb(f,d,g,0,0,c+49|0);j=H[f>>2];i=H[f+4>>2];e=15372-c<<16;c=H[f+8>>2];d=e|H[f+12>>2]^65536}H[a>>2]=j;H[a+4>>2]=i;H[a+8>>2]=c;H[a+12>>2]=h&-2147483648|d;la=f+16|0}function nj(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;a=la-208|0;la=a;G[a+204>>1]=I[33691]|I[33692]<<8;H[a+200>>2]=I[33687]|I[33688]<<8|(I[33689]<<16|I[33690]<<24);f=Ja();H[a>>2]=e;g=ib(a+176|0,20,f,a+200|0,a);f=g+(a+176|0)|0;h=tb(a+176|0,f,c);e=H[c+28>>2];H[a+16>>2]=e;H[e+4>>2]=H[e+4>>2]+1;i=nb(a+16|0);e=H[a+16>>2];j=H[e+4>>2]-1|0;H[e+4>>2]=j;if((j|0)==-1){na[H[H[e>>2]+8>>2]](e)}na[H[H[i>>2]+48>>2]](i,a+176|0,f,a+16|0)|0;e=b;b=(a+16|0)+(g<<2)|0;b=Qb(e,a+16|0,(f|0)==(h|0)?b:((h-a<<2)+a|0)-688|0,b,c,d);la=a+208|0;return b|0}function vj(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;a=la-96|0;la=a;G[a+92>>1]=I[33691]|I[33692]<<8;H[a+88>>2]=I[33687]|I[33688]<<8|(I[33689]<<16|I[33690]<<24);f=Ja();H[a>>2]=e;g=ib(a- -64|0,20,f,a+88|0,a);f=g+(a- -64|0)|0;h=tb(a- -64|0,f,c);e=H[c+28>>2];H[a+16>>2]=e;H[e+4>>2]=H[e+4>>2]+1;i=pb(a+16|0);e=H[a+16>>2];j=H[e+4>>2]-1|0;H[e+4>>2]=j;if((j|0)==-1){na[H[H[e>>2]+8>>2]](e)}na[H[H[i>>2]+32>>2]](i,a- -64|0,f,a+16|0)|0;e=b;b=(a+16|0)+g|0;b=Hb(e,a+16|0,(f|0)==(h|0)?b:((h-a|0)+a|0)-48|0,b,c,d);la=a+96|0;return b|0}function tj(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;a=la-32|0;la=a;G[a+28>>1]=I[33685]|I[33686]<<8;H[a+24>>2]=I[33681]|I[33682]<<8|(I[33683]<<16|I[33684]<<24);Ub(a+24|1,8788,1,H[c+4>>2]);g=H[c+4>>2];f=a-16|0;la=f;h=Ja();H[a>>2]=e;e=g>>>9&1;h=ib(f,e+13|0,h,a+24|0,a)+f|0;i=tb(f,h,c);g=f-((e<<3)+107&112)|0;la=g;e=H[c+28>>2];H[a+8>>2]=e;H[e+4>>2]=H[e+4>>2]+1;Sc(f,i,h,g,a+20|0,a+16|0,a+8|0);e=H[a+8>>2];f=H[e+4>>2]-1|0;H[e+4>>2]=f;if((f|0)==-1){na[H[H[e>>2]+8>>2]](e)}b=Qb(b,g,H[a+20>>2],H[a+16>>2],c,d);la=a+32|0;return b|0}function Ta(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0;e=la-32|0;la=e;g=e+8|0;c=e+21|0;f=e+32|0;if(!((c|0)==(f|0)|(b|0)>-1)){F[c|0]=45;c=c+1|0;b=0-b|0}h=g;a:{b:{d=f-c|0;if((d|0)<=9){i=d;d=N(32-Q(b|1)|0,1233)>>>12|0;if((i|0)<((d-(K[(d<<2)+40752>>2]>b>>>0)|0)+1|0)){break b}}c:{if(b>>>0<=99999999){d:{if(b>>>0<=9999){b=pe(c,b);break d}d=c;c=(b>>>0)/1e4|0;b=Cc(pe(d,c),b-N(c,1e4)|0)}break c}f=(b>>>0)/1e8|0;d=b-N(f,1e8)|0;b=(d>>>0)/1e4|0;b=Cc(Cc(qe(c,f),b),d-N(b,1e4)|0)}H[g>>2]=b;b=0;break a}H[g>>2]=f;b=61}H[h+4>>2]=b;ig(a,e+21|0,H[e+8>>2]);la=e+32|0}function Dj(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;a=la-32|0;la=a;G[a+28>>1]=I[33685]|I[33686]<<8;H[a+24>>2]=I[33681]|I[33682]<<8|(I[33683]<<16|I[33684]<<24);Ub(a+24|1,8788,1,H[c+4>>2]);g=H[c+4>>2];f=a-16|0;la=f;h=Ja();H[a>>2]=e;h=ib(f,(g>>>9&1)+13|0,h,a+24|0,a)+f|0;i=tb(f,h,c);g=f-32|0;la=g;e=H[c+28>>2];H[a+8>>2]=e;H[e+4>>2]=H[e+4>>2]+1;Vc(f,i,h,g,a+20|0,a+16|0,a+8|0);e=H[a+8>>2];f=H[e+4>>2]-1|0;H[e+4>>2]=f;if((f|0)==-1){na[H[H[e>>2]+8>>2]](e)}b=Hb(b,g,H[a+20>>2],H[a+16>>2],c,d);la=a+32|0;return b|0}function rj(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;a=la-32|0;la=a;G[a+28>>1]=I[33685]|I[33686]<<8;H[a+24>>2]=I[33681]|I[33682]<<8|(I[33683]<<16|I[33684]<<24);Ub(a+24|1,8788,0,H[c+4>>2]);g=H[c+4>>2];f=a-16|0;la=f;h=Ja();H[a>>2]=e;h=ib(f,g>>>9&1|12,h,a+24|0,a)+f|0;i=tb(f,h,c);g=f-96|0;la=g;e=H[c+28>>2];H[a+8>>2]=e;H[e+4>>2]=H[e+4>>2]+1;Sc(f,i,h,g,a+20|0,a+16|0,a+8|0);e=H[a+8>>2];f=H[e+4>>2]-1|0;H[e+4>>2]=f;if((f|0)==-1){na[H[H[e>>2]+8>>2]](e)}b=Qb(b,g,H[a+20>>2],H[a+16>>2],c,d);la=a+32|0;return b|0}function Aj(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;a=la-32|0;la=a;G[a+28>>1]=I[33685]|I[33686]<<8;H[a+24>>2]=I[33681]|I[33682]<<8|(I[33683]<<16|I[33684]<<24);Ub(a+24|1,8788,0,H[c+4>>2]);g=H[c+4>>2];f=a-16|0;la=f;h=Ja();H[a>>2]=e;h=ib(f,g>>>9&1|12,h,a+24|0,a)+f|0;i=tb(f,h,c);g=f-32|0;la=g;e=H[c+28>>2];H[a+8>>2]=e;H[e+4>>2]=H[e+4>>2]+1;Vc(f,i,h,g,a+20|0,a+16|0,a+8|0);e=H[a+8>>2];f=H[e+4>>2]-1|0;H[e+4>>2]=f;if((f|0)==-1){na[H[H[e>>2]+8>>2]](e)}b=Hb(b,g,H[a+20>>2],H[a+16>>2],c,d);la=a+32|0;return b|0}function wc(a){var b=0,c=0;b=la-16|0;la=b;a:{b:{c:{d:{e:{while(1){if(!a){break b}c=H[a+4>>2];if((c|0)==(a|0)){break a}wc(c);f:{switch(H[a>>2]){case 3:break c;case 2:break d;case 1:break e;case 0:case 4:break f;default:break b}}c=a;a=H[a+8>>2];if((c|0)!=(a|0)){continue}break}$(8733,7846,215,8955);X()}Da(41896,H[a+8>>2]);break b}Ta(b,H[a+8>>2]);a=I[b+11|0];c=a<<24>>24<0;Pa(41896,c?H[b>>2]:b,c?H[b+4>>2]:a);if(F[b+11|0]>-1){break b}Aa(H[b>>2]);break b}Da(41896,H[H[a+8>>2]>>2])}la=b+16|0;return}$(8003,7846,211,8955);X()}function Kc(a,b,c){var d=0,e=0,f=0,g=0,h=0;a:{if(H[10284]==2001){break a}e=ya(ya(0,b>>>0<=2?H[(b<<2)+26336>>2]:0),11085);if(!H[c+8>>2]){break a}e=ya(Wb(e,c),11085)}h=(b<<2)+26336|0;d=H[10284];f=a;while(1){H[f+4>>2]=41160;b:{if((d|0)==2001){d=0;d=b>>>0<=2?H[h>>2]:d;H[f+12>>2]=c;H[f+8>>2]=d;break b}H[f+12>>2]=c;if((d|0)!=1995){break b}e=ya(e,H[f>>2])}d=H[10284];g=H[f+16>>2];if(g){f=g;if((d|0)!=1995){continue}e=ya(e,11050);d=H[10284];continue}break}if((d|0)==1995){e=ya(e,11261)}H[f+16>>2]=H[10481];H[10481]=a;return e}function lh(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;e=la-16|0;la=e;while(1){a:{if((c|0)<=(g|0)){break a}d=H[a+12>>2];f=H[a+16>>2];b:{if(d>>>0>>0){H[e+12>>2]=2147483647;H[e+8>>2]=f-d>>2;H[e+4>>2]=c-g;d=la-16|0;la=d;la=d+16|0;d=la-16|0;la=d;la=d+16|0;d=e+4|0;f=e+8|0;d=H[d>>2]>2]?d:f;f=e+12|0;d=H[(H[d>>2]>2]?d:f)>>2];Fb(b,H[a+12>>2],d);H[a+12>>2]=H[a+12>>2]+(d<<2);b=(d<<2)+b|0;break b}d=na[H[H[a>>2]+40>>2]](a)|0;if((d|0)==-1){break a}H[b>>2]=d;d=1;b=b+4|0}g=d+g|0;continue}break}la=e+16|0;return g|0}function Ud(a){var b=0,c=0,d=0,e=0;if(!a){return 0}a:{b:{c:{c=Ca(12);if(c){b=H[a+4>>2];H[c>>2]=H[a>>2];H[c+4>>2]=b;H[c+8>>2]=H[a+8>>2];b=H[a+4>>2];if(b){if((a|0)==(b|0)){break c}d=c,e=Ud(b),H[d+4>>2]=e}d:{e:{switch(H[a>>2]){case 0:case 4:b=H[a+8>>2];if(!b){break d}if((a|0)==(b|0)){break a}d=c,e=Ud(b),H[d+8>>2]=e;return c;case 1:break e;default:break d}}b=H[a+8>>2];a=Ca(bb(b)+1|0);if(!a){break b}H[c+8>>2]=a;Nb(a,b)}return c}Ya(9263);_(2);X()}$(8003,7846,231,8726);X()}Ya(9263);_(2);X()}$(8733,7846,237,8726);X()}function _b(a,b,c,d,e,f){var g=0,h=0,i=0,j=0;a:{if(f&64){c=f+-64|0;b=c&31;if((c&63)>>>0>=32){c=0;b=e>>>b|0}else{c=e>>>b|0;b=((1<>>b}d=0;e=0;break a}if(!f){break a}h=e;i=d;j=64-f|0;g=j&31;if((j&63)>>>0>=32){h=i<>>32-g|h<>>0>=32){g=0;b=c>>>b|0}else{g=c>>>b|0;b=((1<>>b}b=j|b;c=g|h;g=d;d=f&31;if((f&63)>>>0>=32){h=0;d=e>>>d|0}else{h=e>>>d|0;d=((1<>>d}e=h}H[a>>2]=b;H[a+4>>2]=c;H[a+8>>2]=d;H[a+12>>2]=e}function Qc(a,b,c){var d=0,e=0,f=0,g=0;d=la-16|0;la=d;a:{if(!a){break a}b:{c:{while(1){d:{Qc(H[a+4>>2],b,c);e=H[a>>2];if(e){switch(e-1|0){case 2:break c;case 0:break d;default:break b}}a=H[a+8>>2];if(a){continue}break a}break}if(cb(H[a+8>>2],b)){break a}f=a,g=Yd(c),H[f+8>>2]=g;break a}a=H[a+8>>2];if(cb(H[a>>2],b)){break a}f=a,g=Yd(c),H[f>>2]=g;break a}Da(41908,10789);Ta(d,H[10285]);a=I[d+11|0];b=a<<24>>24<0;Pa(41908,b?H[d>>2]:d,b?H[d+4>>2]:a);if(F[d+11|0]<=-1){Aa(H[d>>2])}Da(41908,12203)}la=d+16|0}function fb(a,b,c,d,e,f){var g=0,h=0,i=0,j=0;a:{if(f&64){d=b;e=f+-64|0;b=e&31;if((e&63)>>>0>=32){e=d<>>32-b|c<>>0>=32){h=g<>>32-d|e<>>0>=32){f=0;d=d>>>e|0}else{f=d>>>e|0;d=((1<>>e}d=j|d;e=f|h;f=b;b=i&31;if((i&63)>>>0>=32){h=f<>>32-b|c<>2]=b;H[a+4>>2]=c;H[a+8>>2]=d;H[a+12>>2]=e}function ph(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;e=la-16|0;la=e;while(1){a:{if((c|0)<=(g|0)){break a}d=H[a+12>>2];f=H[a+16>>2];b:{if(d>>>0>>0){H[e+12>>2]=2147483647;H[e+8>>2]=f-d;H[e+4>>2]=c-g;d=la-16|0;la=d;la=d+16|0;d=la-16|0;la=d;la=d+16|0;d=e+4|0;f=e+8|0;d=H[d>>2]>2]?d:f;f=e+12|0;d=H[(H[d>>2]>2]?d:f)>>2];Gb(b,H[a+12>>2],d);H[a+12>>2]=H[a+12>>2]+d;break b}d=na[H[H[a>>2]+40>>2]](a)|0;if((d|0)==-1){break a}F[b|0]=d;d=1}b=b+d|0;g=d+g|0;continue}break}la=e+16|0;return g|0}function Kb(a,b,c,d,e){var f=0,g=0,h=0;h=la-16|0;la=h;H[h+8>>2]=b;b=0;f=6;a:{b:{if(ab(a,h+8|0)){break b}f=4;g=Sa(a);if(!((g|0)>=0?(J[H[d+8>>2]+((g&255)<<1)>>1]&2048)!=0:0)){break b}b=na[H[H[d>>2]+36>>2]](d,g,0)|0;while(1){c:{_a(a);b=b-48|0;if(!lb(a,h+8|0)|(e|0)<2){break c}g=Sa(a);f=g;if((g|0)>=0){f=(J[H[d+8>>2]+((f&255)<<1)>>1]&2048)!=0}else{f=0}if(!f){break a}e=e-1|0;b=(na[H[H[d>>2]+36>>2]](d,g,0)|0)+N(b,10)|0;continue}break}f=2;if(!ab(a,h+8|0)){break a}}H[c>>2]=H[c>>2]|f}la=h+16|0;return b}function sj(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;a=la-32|0;la=a;H[a+24>>2]=37;H[a+28>>2]=0;Ub(a+24|1,8751,1,H[c+4>>2]);h=H[c+4>>2];g=a-32|0;la=g;i=Ja();H[a>>2]=e;H[a+4>>2]=f;e=h>>>9&1;h=ib(g,e+23|0,i,a+24|0,a)+g|0;i=tb(g,h,c);f=g-((e<<3)+187&240)|0;la=f;e=H[c+28>>2];H[a+8>>2]=e;H[e+4>>2]=H[e+4>>2]+1;Sc(g,i,h,f,a+20|0,a+16|0,a+8|0);e=H[a+8>>2];g=H[e+4>>2]-1|0;H[e+4>>2]=g;if((g|0)==-1){na[H[H[e>>2]+8>>2]](e)}b=Qb(b,f,H[a+20>>2],H[a+16>>2],c,d);la=a+32|0;return b|0}function qj(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;a=la-32|0;la=a;H[a+24>>2]=37;H[a+28>>2]=0;Ub(a+24|1,8751,0,H[c+4>>2]);h=H[c+4>>2];g=a-32|0;la=g;i=Ja();H[a>>2]=e;H[a+4>>2]=f;e=h>>>9&1;h=ib(g,e+23|0,i,a+24|0,a)+g|0;i=tb(g,h,c);f=g-((e<<3)+187&240)|0;la=f;e=H[c+28>>2];H[a+8>>2]=e;H[e+4>>2]=H[e+4>>2]+1;Sc(g,i,h,f,a+20|0,a+16|0,a+8|0);e=H[a+8>>2];g=H[e+4>>2]-1|0;H[e+4>>2]=g;if((g|0)==-1){na[H[H[e>>2]+8>>2]](e)}b=Qb(b,f,H[a+20>>2],H[a+16>>2],c,d);la=a+32|0;return b|0}function Ye(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;e=la-16|0;la=e;i=Ae(e,a);a:{if(!I[e|0]){break a}g=b+c|0;c=H[H[a>>2]-12>>2]+a|0;j=(H[c+4>>2]&176)==32?g:b;k=H[c+24>>2];d=H[c+76>>2];if((d|0)==-1){d=H[c+28>>2];H[e+8>>2]=d;H[d+4>>2]=H[d+4>>2]+1;d=Db(e+8|0,48552);d=na[H[H[d>>2]+28>>2]](d,32)|0;f=H[e+8>>2];h=H[f+4>>2]-1|0;H[f+4>>2]=h;if((h|0)==-1){na[H[H[f>>2]+8>>2]](f)}H[c+76>>2]=d}if(Hb(k,b,j,g,c,d<<24>>24)){break a}b=H[H[a>>2]-12>>2]+a|0;Wd(b,H[b+16>>2]|5)}xd(i);la=e+16|0;return a}function zj(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;a=la-32|0;la=a;H[a+24>>2]=37;H[a+28>>2]=0;Ub(a+24|1,8751,0,H[c+4>>2]);h=H[c+4>>2];g=a-32|0;la=g;i=Ja();H[a>>2]=e;H[a+4>>2]=f;h=ib(g,(h>>>9&1)+23|0,i,a+24|0,a)+g|0;i=tb(g,h,c);f=g-48|0;la=f;e=H[c+28>>2];H[a+8>>2]=e;H[e+4>>2]=H[e+4>>2]+1;Vc(g,i,h,f,a+20|0,a+16|0,a+8|0);e=H[a+8>>2];g=H[e+4>>2]-1|0;H[e+4>>2]=g;if((g|0)==-1){na[H[H[e>>2]+8>>2]](e)}b=Hb(b,f,H[a+20>>2],H[a+16>>2],c,d);la=a+32|0;return b|0}function Bj(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;a=la-32|0;la=a;H[a+24>>2]=37;H[a+28>>2]=0;Ub(a+24|1,8751,1,H[c+4>>2]);h=H[c+4>>2];g=a-32|0;la=g;i=Ja();H[a>>2]=e;H[a+4>>2]=f;h=ib(g,(h>>>9&1)+23|0,i,a+24|0,a)+g|0;i=tb(g,h,c);f=g-48|0;la=f;e=H[c+28>>2];H[a+8>>2]=e;H[e+4>>2]=H[e+4>>2]+1;Vc(g,i,h,f,a+20|0,a+16|0,a+8|0);e=H[a+8>>2];g=H[e+4>>2]-1|0;H[e+4>>2]=g;if((g|0)==-1){na[H[H[e>>2]+8>>2]](e)}b=Hb(b,f,H[a+20>>2],H[a+16>>2],c,d);la=a+32|0;return b|0}function fg(a,b,c,d){var e=0,f=0,g=0;e=la-16|0;la=e;a:{b:{c:{if((a|0)!=(b|0)){g=H[12064];H[12064]=0;a=jg(a,e+12|0,d,Ja());d=ma;f=H[12064];d:{if(f){if(H[e+12>>2]!=(b|0)){break d}if((f|0)==68){break b}break c}H[12064]=g;if(H[e+12>>2]==(b|0)){break c}}}H[c>>2]=4;b=0;break a}if(((d|0)<-1?1:(d|0)<=-1?a>>>0<2147483648:0)|((d|0)>0?1:(d|0)>=0?a>>>0>2147483647:0)){break b}b=a;break a}H[c>>2]=4;b=2147483647;if((d|0)>0?1:(d|0)>=0?a>>>0>=1:0){break a}b=-2147483648}la=e+16|0;return b}function ch(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;e=la-32|0;la=e;H[e+16>>2]=b;f=H[a+48>>2];H[e+20>>2]=c-((f|0)!=0);d=H[a+44>>2];H[e+28>>2]=f;H[e+24>>2]=d;f=-1;a:{b:{d=ha(H[a+60>>2],e+16|0,2,e+12|0)|0;if(d){H[12064]=d;d=-1}else{d=0}if(!d){f=H[e+12>>2];if((f|0)>0){break b}}H[a>>2]=H[a>>2]|f&48^16;break a}g=H[e+20>>2];if(g>>>0>=f>>>0){break a}d=H[a+44>>2];H[a+4>>2]=d;H[a+8>>2]=d+(f-g|0);if(H[a+48>>2]){H[a+4>>2]=d+1;F[(b+c|0)-1|0]=I[d|0]}f=c}la=e+32|0;return f|0}function ag(a,b,c,d){var e=0,f=0,g=0,h=0;e=la-16|0;la=e;a:{b:{c:{if((a|0)!=(b|0)){d:{e:{f=I[a|0];if((f|0)!=45){break e}a=a+1|0;if((b|0)!=(a|0)){break e}break d}h=H[12064];H[12064]=0;a=Sd(a,e+12|0,d,Ja());d=ma;g=H[12064];f:{if(g){if(H[e+12>>2]!=(b|0)){break f}if((g|0)==68){break c}break b}H[12064]=h;if(H[e+12>>2]==(b|0)){break b}}}}H[c>>2]=4;a=0;b=0;break a}H[c>>2]=4;a=-1;b=-1;break a}b=a;c=(f|0)==45;a=c?0-a|0:a;b=c?0-(d+((b|0)!=0)|0)|0:d}la=e+16|0;ma=b;return a}function le(a,b,c,d,e){var f=0,g=0,h=0;g=la-16|0;la=g;if(1073741807-b>>>0>=c>>>0){h=I[a+11|0]>>>7|0?H[a>>2]:a;a:{if(b>>>0<536870887){H[g+8>>2]=b<<1;H[g+12>>2]=b+c;c=la-16|0;la=c;la=c+16|0;c=g+8|0;f=g+12|0;c=H[(K[f>>2]>2]?c:f)>>2];if(c>>>0>=2){f=c+4&-4;c=f-1|0;c=(c|0)==2?f:c}else{c=1}break a}c=1073741806}f=c+1|0;c=Re(f);if(e){Fb(c,h,e)}d=d-e|0;if(d){e=e<<2;Fb(e+c|0,e+h|0,d)}if((b|0)!=1){Aa(h)}H[a>>2]=c;H[a+8>>2]=f|-2147483648;la=g+16|0;return}wb();X()}function eb(a,b,c,d,e,f,g,h,i){var j=0,k=0,l=0,m=0;h=dk(b,c,h,i);i=ma;j=h;h=dk(d,e,f,g);e=j+h|0;d=ma+i|0;i=e;h=e>>>0>>0?d+1|0:d;j=g;e=0;g=e;k=i;l=c;d=0;i=dk(j,e,c,d);e=k+i|0;c=ma+h|0;k=e;e=e>>>0>>0?c+1|0:c;h=f;c=0;i=b;f=dk(h,c,i,0);b=ma;d=dk(h,c,l,d);b=b+d|0;c=ma;c=b>>>0>>0?c+1|0:c;h=c;c=c+k|0;d=c>>>0>>0?e+1|0:e;h=c;c=d;d=dk(i,m,j,g)+b|0;e=ma;e=b>>>0>d>>>0?e+1|0:e;b=h;h=e;e=b+e|0;H[a+8>>2]=e;H[a+12>>2]=e>>>0>>0?c+1|0:c;H[a>>2]=f;H[a+4>>2]=d}function dg(a,b,c,d){var e=0,f=0,g=0,h=0;e=la-16|0;la=e;a:{b:{c:{d:{if((a|0)!=(b|0)){e:{f:{f=I[a|0];if((f|0)!=45){break f}a=a+1|0;if((b|0)!=(a|0)){break f}break e}h=H[12064];H[12064]=0;a=Sd(a,e+12|0,d,Ja());d=ma;g=H[12064];g:{if(g){if(H[e+12>>2]!=(b|0)){break g}if((g|0)==68){break c}break d}H[12064]=h;if(H[e+12>>2]==(b|0)){break d}}}}H[c>>2]=4;a=0;break a}if(!d&a>>>0<=65535){break b}}H[c>>2]=4;a=65535;break a}a=(f|0)==45?0-a|0:a}la=e+16|0;return a&65535}function qd(a,b,c,d,e){var f=0,g=0,h=0;g=la-16|0;la=g;if(-17-b>>>0>=c>>>0){if(I[a+11|0]>>>7|0){h=H[a>>2]}else{h=a}a:{if(b>>>0<2147483623){H[g+8>>2]=b<<1;H[g+12>>2]=b+c;c=la-16|0;la=c;la=c+16|0;c=g+8|0;f=g+12|0;c=H[(K[f>>2]>2]?c:f)>>2];if(c>>>0>=11){f=c+16&-16;c=f-1|0;c=(c|0)==11?f:c}else{c=10}break a}c=-18}f=c+1|0;c=dc(f);if(e){Gb(c,h,e)}d=d-e|0;if(d){Gb(c+e|0,e+h|0,d)}if((b|0)!=10){Aa(h)}H[a>>2]=c;H[a+8>>2]=f|-2147483648;la=g+16|0;return}wb();X()}function Sh(a){a=a|0;a:{if(F[48620]&1){break a}if(!Wa(48620)){break a}b:{if(F[49128]&1){break b}if(!Wa(49128)){break b}a=48960;while(1){a=Fa(a)+12|0;if((a|0)!=49128){continue}break}Va(49128)}Ha(48960,38308);Ha(48972,38336);Ha(48984,38364);Ha(48996,38396);Ha(49008,38436);Ha(49020,38472);Ha(49032,38500);Ha(49044,38536);Ha(49056,38552);Ha(49068,38568);Ha(49080,38584);Ha(49092,38600);Ha(49104,38616);Ha(49116,38632);H[12154]=48960;Va(48620)}return H[12154]}function ad(a,b,c,d,e){var f=0,g=0,h=0,i=0,j=0;h=-1;f=d&2147483647;i=f;g=c;a:{if(!c&(f|0)==2147418112?a|b:(f|0)==2147418112&(c|0)!=0|f>>>0>2147418112){break a}f=e&2147483647;j=f;if((f|0)==2147418112?0:f>>>0>2147418112){break a}if(!(a|g|(i|j|b))){return 0}g=d&e;if((g|0)>0?1:(g|0)>=0){if(!c&(d|0)==(e|0)?0:(d|0)<(e|0)){break a}return(a|c)!=0|(d^e|b)!=0}if(!c&(d|0)==(e|0)?a|b:(d|0)>(e|0)?1:(d|0)>=(e|0)?c:0){break a}h=(a|c)!=0|(d^e|b)!=0}return h}function Wb(a,b){var c=0,d=0;a:{if(H[b+8>>2]){a=ya(a,9313);d=H[b+4>>2];if(d){c=Ca(12);if(!c){break a}H[c+8>>2]=d;H[c+4>>2]=a;H[c>>2]=0;a=H[b+28>>2];a=ya(c,a?(a|0)==1?10966:10961:9958)}b:{if(H[b+28>>2]){c=H[b+20>>2];c:{if(!c){b=a;break c}b=Ca(12);if(!b){break a}H[b+8>>2]=c;H[b+4>>2]=a;H[b>>2]=0}b=ya(b,10004);break b}c=H[b+8>>2];if(!c){b=a;break b}b=Ca(12);if(!b){break a}H[b+8>>2]=c;H[b+4>>2]=a;H[b>>2]=0}a=ya(b,9301)}return a}Ya(9263);_(2);X()}function Qd(a,b){var c=0,d=0,e=0,f=0,g=0;c=la-16|0;la=c;e=1;f=9298;a:{if(!ac(a,9944)){break a}if(!ac(a,9362)){e=4;f=8808;break a}if(!ac(a,9634)){e=3;f=8580;break a}Da(41908,9008);Ta(c,H[10285]);d=I[c+11|0];g=d<<24>>24<0;Pa(41908,g?H[c>>2]:c,g?H[c+4>>2]:d);if(F[c+11|0]<=-1){Aa(H[c>>2])}Da(41908,10424);Da(41908,a);Da(41908,11993)}d=bb(b);a=Ca(12);if(!a){Ya(9263);_(2);X()}H[a+4>>2]=0;H[a>>2]=2;H[a+8>>2]=N(e,d);a=ya(ya(a,f),b);la=c+16|0;return a}function Qb(a,b,c,d,e,f){var g=0,h=0,i=0,j=0;i=la-16|0;la=i;a:{if(!a){break a}h=H[e+12>>2];g=c-b|0;if((g|0)>=1){g=g>>2;if((na[H[H[a>>2]+48>>2]](a,b,g)|0)!=(g|0)){break a}}b=d-b>>2;g=(b|0)<(h|0)?h-b|0:0;if((g|0)>=1){h=a;f=Of(i,g,f);b=f;if(I[b+11|0]>>>7|0){b=H[b>>2]}b=na[H[H[a>>2]+48>>2]](h,b,g)|0;Ba(f);if((b|0)!=(g|0)){break a}}b=d-c|0;if((b|0)>=1){b=b>>2;if((na[H[H[a>>2]+48>>2]](a,c,b)|0)!=(b|0)){break a}}H[e+12>>2]=0;j=a}la=i+16|0;return j}function $b(a,b){a:{if(a){if(b>>>0<=127){break a}b:{if(!H[H[10445]>>2]){if((b&-128)==57216){break a}break b}if(b>>>0<=2047){F[a+1|0]=b&63|128;F[a|0]=b>>>6|192;return 2}if(!((b&-8192)!=57344?b>>>0>=55296:0)){F[a+2|0]=b&63|128;F[a|0]=b>>>12|224;F[a+1|0]=b>>>6&63|128;return 3}if(b-65536>>>0<=1048575){F[a+3|0]=b&63|128;F[a|0]=b>>>18|240;F[a+2|0]=b>>>6&63|128;F[a+1|0]=b>>>12&63|128;return 4}}H[12064]=25;a=-1}else{a=1}return a}F[a|0]=b;return 1}function Uh(a){a=a|0;a:{if(F[48612]&1){break a}if(!Wa(48612)){break a}b:{if(F[48952]&1){break b}if(!Wa(48952)){break b}a=48784;while(1){a=Fa(a)+12|0;if((a|0)!=48952){continue}break}Va(48952)}Ia(48784,7821);Ia(48796,7828);Ia(48808,7794);Ia(48820,7802);Ia(48832,7785);Ia(48844,7835);Ia(48856,7812);Ia(48868,8590);Ia(48880,8652);Ia(48892,8951);Ia(48904,9245);Ia(48916,7941);Ia(48928,8790);Ia(48940,8166);H[12152]=48784;Va(48612)}return H[12152]}function Ri(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0;d=la-16|0;la=d;a:{if(!(I[f+11|0]>>>7|0)){H[a+8>>2]=H[f+8>>2];b=H[f+4>>2];H[a>>2]=H[f>>2];H[a+4>>2]=b;break a}e=H[f>>2];b:{c:{c=H[f+4>>2];d:{if(c>>>0<=1){b=a;F[a+11|0]=c;break d}if(c>>>0>1073741807){break c}g=a;if(c>>>0>=2){f=c+4&-4;b=f-1|0;b=(b|0)==2?f:b}else{b=1}f=b+1|0;b=Re(f);H[g>>2]=b;H[a+8>>2]=f|-2147483648;H[a+4>>2]=c}Fb(b,e,c+1|0);break b}wb();X()}}la=d+16|0}function bg(a,b,c,d){var e=0,f=0,g=0,h=0;e=la-16|0;la=e;a:{b:{c:{d:{if((a|0)!=(b|0)){e:{f:{f=I[a|0];if((f|0)!=45){break f}a=a+1|0;if((b|0)!=(a|0)){break f}break e}h=H[12064];H[12064]=0;a=Sd(a,e+12|0,d,Ja());d=ma;g=H[12064];g:{if(g){if(H[e+12>>2]!=(b|0)){break g}if((g|0)==68){break c}break d}H[12064]=h;if(H[e+12>>2]==(b|0)){break d}}}}H[c>>2]=4;a=0;break a}if(!d){break b}}H[c>>2]=4;a=-1;break a}a=(f|0)==45?0-a|0:a}la=e+16|0;return a}function jh(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;f=la-16|0;la=f;while(1){a:{if((c|0)<=(g|0)){break a}d=H[a+24>>2];e=H[a+28>>2];if(d>>>0>=e>>>0){if((na[H[H[a>>2]+52>>2]](a,H[b>>2])|0)==-1){break a}g=g+1|0;b=b+4|0}else{H[f+12>>2]=e-d>>2;H[f+8>>2]=c-g;d=la-16|0;la=d;la=d+16|0;d=f+8|0;e=f+12|0;d=H[(H[d>>2]>2]?d:e)>>2];Fb(H[a+24>>2],b,d);e=d<<2;H[a+24>>2]=e+H[a+24>>2];g=d+g|0;b=b+e|0}continue}break}la=f+16|0;return g|0}function jb(a,b,c,d){var e=0,f=0;a:{if(I[a+11|0]>>>7|0){e=H[a+4>>2]}else{e=I[a+11|0]}if(!e|(c-b|0)<5){break a}Rc(b,c);f=c-4|0;if(I[a+11|0]>>>7|0){e=H[a+4>>2]}else{e=I[a+11|0]}if(I[a+11|0]>>>7|0){a=H[a>>2]}c=a;a=e+a|0;b:{while(1){c:{e=F[c|0];if(b>>>0>=f>>>0){break c}if(!(H[b>>2]!=F[c|0]?(e|0)<1|(e|0)>=127:1)){break b}c=(a-c|0)>1?c+1|0:c;b=b+4|0;continue}break}if((e|0)<1|(e|0)>=127|F[c|0]>>>0>H[f>>2]-1>>>0){break a}}H[d>>2]=4}}function Of(a,b,c){var d=0,e=0,f=0,g=0,h=0;h=la-16|0;la=h;g=la-16|0;la=g;a:{if(b>>>0<=1073741807){b:{if(b>>>0<=1){F[a+11|0]=b;d=a;break b}f=a;if(b>>>0>=2){e=b+4&-4;d=e-1|0;d=(d|0)==2?e:d}else{d=1}e=d+1|0;d=Re(e);H[f>>2]=d;H[a+8>>2]=e|-2147483648;H[a+4>>2]=b}e=d;f=b;if(b){if(f){while(1){H[e>>2]=c;e=e+4|0;f=f-1|0;if(f){continue}break}}}H[g+12>>2]=0;H[(b<<2)+d>>2]=H[g+12>>2];la=g+16|0;break a}wb();X()}la=h+16|0;return a}function nh(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;e=la-16|0;la=e;while(1){a:{if((c|0)<=(f|0)){break a}d=H[a+24>>2];g=H[a+28>>2];if(d>>>0>=g>>>0){if((na[H[H[a>>2]+52>>2]](a,I[b|0])|0)==-1){break a}f=f+1|0;b=b+1|0}else{H[e+12>>2]=g-d;H[e+8>>2]=c-f;d=la-16|0;la=d;la=d+16|0;d=e+8|0;g=e+12|0;d=H[(H[d>>2]>2]?d:g)>>2];Gb(H[a+24>>2],b,d);H[a+24>>2]=d+H[a+24>>2];f=d+f|0;b=b+d|0}continue}break}la=e+16|0;return f|0}function bd(a,b){var c=0,d=0,e=0,f=0,g=0;e=la-16|0;la=e;a:{if(!(I[b+11|0]>>>7|0)){H[a+8>>2]=H[b+8>>2];c=H[b+4>>2];H[a>>2]=H[b>>2];H[a+4>>2]=c;break a}f=H[b>>2];b:{c:{c=H[b+4>>2];d:{if(c>>>0<=10){b=a;F[b+11|0]=c;break d}if(c>>>0>4294967279){break c}g=a;if(c>>>0>=11){b=c+16&-16;d=b-1|0;b=(d|0)==11?b:d}else{b=10}d=b+1|0;b=dc(d);H[g>>2]=b;H[a+8>>2]=d|-2147483648;H[a+4>>2]=c}Gb(b,f,c+1|0);break b}wb();X()}}la=e+16|0}function Nb(a,b){var c=0,d=0;d=a;a:{b:{if((d^b)&3){break b}if(b&3){while(1){c=I[b|0];F[d|0]=c;if(!c){break a}d=d+1|0;b=b+1|0;if(b&3){continue}break}}c=H[b>>2];if((c^-1)&c-16843009&-2139062144){break b}while(1){H[d>>2]=c;c=H[b+4>>2];d=d+4|0;b=b+4|0;if(!(c-16843009&(c^-1)&-2139062144)){continue}break}}c=I[b|0];F[d|0]=c;if(!c){break a}while(1){c=I[b+1|0];F[d+1|0]=c;d=d+1|0;b=b+1|0;if(c){continue}break}}return a}function Zd(a,b){var c=0;c=(b|0)!=0;a:{b:{c:{if(!(a&3)|!b){break c}while(1){if(!I[a|0]){break b}b=b-1|0;c=(b|0)!=0;a=a+1|0;if(!(a&3)){break c}if(b){continue}break}}if(!c){break a}}d:{if(!I[a|0]|b>>>0<4){break d}while(1){c=H[a>>2];if((c^-1)&c-16843009&-2139062144){break d}a=a+4|0;b=b-4|0;if(b>>>0>3){continue}break}}if(!b){break a}while(1){if(!I[a|0]){return a}a=a+1|0;b=b-1|0;if(b){continue}break}}return 0}function Rd(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0,k=0;e=la-160|0;la=e;yb(e+16|0,0,144);H[e+92>>2]=-1;H[e+60>>2]=b;H[e+24>>2]=-1;H[e+20>>2]=b;Bb(e+16|0,0,0);tg(e,e+16|0,d,1);d=H[e+8>>2];g=H[e+12>>2];h=H[e>>2];i=H[e+4>>2];if(c){j=c;f=b;b=H[e+20>>2]-H[e+24>>2]|0;k=b;c=b+H[e+136>>2]|0;b=H[e+140>>2]+(b>>31)|0;b=c>>>0>>0?b+1|0:b;H[j>>2]=!(b|c)?f:f+c|0}H[a>>2]=h;H[a+4>>2]=i;H[a+8>>2]=d;H[a+12>>2]=g;la=e+160|0}function ki(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;while(1){a:{if((c|0)==(d|0)|e>>>0<=i>>>0){break a}h=1;g=la-16|0;la=g;H[g+12>>2]=H[a+8>>2];f=Cb(g+8|0,g+12|0);j=_c(0,c,d-c|0,b?b:48344);f=H[f>>2];if(f){if(f){H[10445]=(f|0)==-1?48300:f}}la=g+16|0;b:{switch(j+2|0){default:h=j;break;case 0:case 1:break a;case 2:break b}}i=i+1|0;k=h+k|0;c=c+h|0;continue}break}return k|0}function id(a,b,c){var d=0,e=0,f=0;f=H[c+16>>2];a:{if(f){d=f}else{if(ge(c)){break a}d=H[c+16>>2]}f=H[c+20>>2];if(d-f>>>0>>0){return na[H[c+36>>2]](c,a,b)|0}b:{if(F[c+75|0]<0){break b}d=b;while(1){e=d;if(!e){e=0;break b}d=e-1|0;if(I[d+a|0]!=10){continue}break}d=na[H[c+36>>2]](c,a,e)|0;if(d>>>0>>0){break a}a=a+e|0;b=b-e|0;f=H[c+20>>2]}gb(f,a,b);H[c+20>>2]=H[c+20>>2]+b;d=b+e|0}return d}function Pa(a,b,c){var d=0,e=0,f=0,g=0;f=la-16|0;la=f;d=I[a+11|0]>>>7|0?(H[a+8>>2]&2147483647)-1|0:10;g=d;if(I[a+11|0]>>>7|0){e=H[a+4>>2]}else{e=I[a+11|0]}a:{if(g-e>>>0>=c>>>0){if(!c){break a}if(I[a+11|0]>>>7|0){d=H[a>>2]}else{d=a}Gb(d+e|0,b,c);b=c+e|0;c=b;b:{if(I[a+11|0]>>>7|0){H[a+4>>2]=c;break b}F[a+11|0]=c}F[f+15|0]=0;F[b+d|0]=I[f+15|0];break a}oe(a,d,(c+e|0)-d|0,e,e,0,c,b)}la=f+16|0}function $f(a,b,c){var d=0,e=0,f=O(0),g=0,h=O(0);e=la-16|0;la=e;a:{b:{c:{if((a|0)!=(b|0)){g=H[12064];H[12064]=0;Ja();d=la-16|0;la=d;Rd(d,a,e+12|0,0);f=rg(H[d>>2],H[d+4>>2],H[d+8>>2],H[d+12>>2]);la=d+16|0;a=H[12064];if(!a){break c}if(H[e+12>>2]!=(b|0)){break b}h=f;if((a|0)!=68){break a}break b}H[c>>2]=4;break a}H[12064]=g;if(H[e+12>>2]==(b|0)){break a}}H[c>>2]=4;f=h}la=e+16|0;return f}function eg(a,b,c,d){var e=0,f=0,g=0;e=la-16|0;la=e;a:{b:{if((a|0)!=(b|0)){g=H[12064];H[12064]=0;d=jg(a,e+12|0,d,Ja());a=ma;f=H[12064];c:{if(f){if(H[e+12>>2]!=(b|0)){break c}if((f|0)==68){break b}break a}H[12064]=g;if(H[e+12>>2]==(b|0)){break a}}}H[c>>2]=4;d=0;a=0;break a}H[c>>2]=4;if((a|0)>0?1:(a|0)>=0?d>>>0>=1:0){d=-1;a=2147483647;break a}d=0;a=-2147483648}la=e+16|0;ma=a;return d}function od(a,b){var c=0,d=0,e=0;d=la-16|0;la=d;H[d+12>>2]=b;a:{b:{c:{d:{if(I[a+11|0]>>>7|0){c=(H[a+8>>2]&2147483647)-1|0;e=H[a+4>>2];if((c|0)==(e|0)){break d}break b}e=1;c=1;b=I[a+11|0];if((b|0)!=1){break c}}le(a,c,1,c,c);b=e;if(I[a+11|0]>>>7|0){break b}}c=a;F[a+11|0]=b+1;break a}c=H[a>>2];H[a+4>>2]=e+1;b=e}a=(b<<2)+c|0;H[a>>2]=H[d+12>>2];H[d+8>>2]=0;H[a+4>>2]=H[d+8>>2];la=d+16|0}function jc(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0;e=la-16|0;la=e;f=H[a+4>>2];d=H[c>>2]-H[a>>2]|0;a:{if(d>>>0<2147483647){d=d<<1;break a}d=-1}g=d?d:4;h=H[b>>2];i=H[a>>2];d=zb((f|0)==19?0:H[a>>2],g);if(d){if((f|0)!=19){H[a>>2]=0}H[e+4>>2]=18;d=Ra(e+8|0,d,e+4|0);uf(a,d);f=H[d>>2];H[d>>2]=0;if(f){na[H[d+4>>2]](f)}H[b>>2]=H[a>>2]+(h-i|0);H[c>>2]=H[a>>2]+(g&-4);la=e+16|0;return}Xa();X()}function _f(a,b,c){var d=0,e=0,f=0,g=0,h=0;e=la-16|0;la=e;a:{b:{c:{if((a|0)!=(b|0)){g=H[12064];H[12064]=0;Ja();d=la-16|0;la=d;Rd(d,a,e+12|0,1);f=ed(H[d>>2],H[d+4>>2],H[d+8>>2],H[d+12>>2]);la=d+16|0;a=H[12064];if(!a){break c}if(H[e+12>>2]!=(b|0)){break b}h=f;if((a|0)!=68){break a}break b}H[c>>2]=4;break a}H[12064]=g;if(H[e+12>>2]==(b|0)){break a}}H[c>>2]=4;f=h}la=e+16|0;return f}function hg(a,b,c){var d=0,e=0,f=0,g=0,h=0;g=la-16|0;la=g;e=c-b|0;if(e>>>0<=4294967279){a:{if(e>>>0<=10){F[a+11|0]=e;d=a;break a}h=a;if(e>>>0>=11){d=e+16&-16;f=d-1|0;d=(f|0)==11?d:f}else{d=10}f=d+1|0;d=dc(f);H[h>>2]=d;H[a+8>>2]=f|-2147483648;H[a+4>>2]=e}while(1){if((b|0)!=(c|0)){F[d|0]=I[b|0];d=d+1|0;b=b+1|0;continue}break}F[g+15|0]=0;F[d|0]=I[g+15|0];la=g+16|0;return}wb();X()}function gg(a,b,c){var d=0,e=0,f=0,g=0,h=0;g=la-16|0;la=g;e=c-b>>2;if(e>>>0<=1073741807){a:{if(e>>>0<=1){F[a+11|0]=e;d=a;break a}h=a;if(e>>>0>=2){f=e+4&-4;d=f-1|0;d=(d|0)==2?f:d}else{d=1}f=d+1|0;d=Re(f);H[h>>2]=d;H[a+8>>2]=f|-2147483648;H[a+4>>2]=e}while(1){if((b|0)!=(c|0)){H[d>>2]=H[b>>2];d=d+4|0;b=b+4|0;continue}break}H[g+12>>2]=0;H[d>>2]=H[g+12>>2];la=g+16|0;return}wb();X()}function Ia(a,b){var c=0,d=0,e=0,f=0,g=0;d=bb(b);e=la-16|0;la=e;c=I[a+11|0]>>>7|0?(H[a+8>>2]&2147483647)-1|0:10;a:{if(c>>>0>=d>>>0){if(I[a+11|0]>>>7|0){c=H[a>>2]}else{c=a}f=c;if(d){he(f,b,d)}F[e+15|0]=0;F[d+c|0]=I[e+15|0];b:{if(I[a+11|0]>>>7|0){H[a+4>>2]=d;break b}F[a+11|0]=d}break a}f=a;g=c;c=d-c|0;if(I[a+11|0]>>>7|0){a=H[a+4>>2]}else{a=I[a+11|0]}oe(f,g,c,a,0,a,d,b)}la=e+16|0}function pd(a,b){var c=0,d=0,e=0;d=la-16|0;la=d;F[d+15|0]=b;a:{b:{c:{d:{if(I[a+11|0]>>>7|0){c=(H[a+8>>2]&2147483647)-1|0;e=H[a+4>>2];if((c|0)==(e|0)){break d}break b}e=10;c=10;b=I[a+11|0];if((b|0)!=10){break c}}qd(a,c,1,c,c);b=e;if(I[a+11|0]>>>7|0){break b}}c=a;F[a+11|0]=b+1;break a}c=H[a>>2];H[a+4>>2]=e+1;b=e}a=b+c|0;F[a|0]=I[d+15|0];F[d+14|0]=0;F[a+1|0]=I[d+14|0];la=d+16|0}function zf(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0;e=la-16|0;la=e;f=H[a+4>>2];d=H[c>>2]-H[a>>2]|0;a:{if(d>>>0<2147483647){d=d<<1;break a}d=-1}g=d?d:1;h=H[b>>2];i=H[a>>2];d=zb((f|0)==19?0:H[a>>2],g);if(d){if((f|0)!=19){H[a>>2]=0}H[e+4>>2]=18;d=Ra(e+8|0,d,e+4|0);uf(a,d);f=H[d>>2];H[d>>2]=0;if(f){na[H[d+4>>2]](f)}H[b>>2]=H[a>>2]+(h-i|0);H[c>>2]=g+H[a>>2];la=e+16|0;return}Xa();X()}function wd(a){var b=0,c=0,d=0;c=la-16|0;la=c;if(H[(H[H[a>>2]-12>>2]+a|0)+24>>2]){b=c+8|0;H[b+4>>2]=a;F[b|0]=0;if(!H[(H[H[a>>2]-12>>2]+a|0)+16>>2]){if(H[(H[H[a>>2]-12>>2]+a|0)+72>>2]){wd(H[(H[H[a>>2]-12>>2]+a|0)+72>>2])}F[b|0]=1}a:{if(!I[b|0]){break a}d=H[(H[H[a>>2]-12>>2]+a|0)+24>>2];if((na[H[H[d>>2]+24>>2]](d)|0)!=-1){break a}dd(H[H[a>>2]-12>>2]+a|0)}xd(b)}la=c+16|0}function Oa(a){var b=0,c=0,d=0,e=0;b=la-32|0;la=b;H[b+12>>2]=0;H[b+8>>2]=20;c=H[b+12>>2];H[b>>2]=H[b+8>>2];H[b+4>>2]=c;d=H[b+4>>2];e=b+16|0;c=e;H[c+4>>2]=H[b>>2];H[c+8>>2]=d;H[c>>2]=a;c=la-16|0;la=c;if(H[a>>2]!=-1){d=c+8|0;H[d>>2]=e;H[c>>2]=d;while(1){if(H[a>>2]==1){continue}break}if(!H[a>>2]){H[a>>2]=1;na[21](c);H[a>>2]=-1}}la=c+16|0;la=b+32|0;return H[a+4>>2]-1|0}function Uc(a,b,c){var d=0,e=0;if(c&2048){F[a|0]=43;a=a+1|0}if(c&1024){F[a|0]=35;a=a+1|0}d=c&260;if((d|0)!=260){F[a|0]=46;F[a+1|0]=42;a=a+2|0}c=c&16384;while(1){e=I[b|0];if(e){F[a|0]=e;a=a+1|0;b=b+1|0;continue}break}a:{b:{if((d|0)!=256){if((d|0)!=4){break b}b=c?70:102;break a}b=c?69:101;break a}b=c?65:97;if((d|0)==260){break a}b=c?71:103}F[a|0]=b;return(d|0)!=260}function gf(a){var b=0,c=0;b=ya(a,12249);a=H[10481];a:{while(1){b:{if(H[10284]!=2001){break b}c=ya(ya(b,H[a+8>>2]),11085);b=Ca(12);if(!b){break a}H[b+4>>2]=c;H[b>>2]=3;H[b+8>>2]=a+4;c=H[a+12>>2];b=ya(b,11085);if(!H[c+8>>2]){break b}b=ya(Wb(b,c),11085)}b=ya(b,H[a>>2]);a=H[a+16>>2];if(a){b=ya(b,12200);continue}break}return ya(ya(b,12286),12258)}Ya(9263);_(2);X()}function Md(a,b,c,d,e){var f=0,g=0,h=0;f=la-16|0;la=f;b=H[b+28>>2];H[f+8>>2]=b;H[b+4>>2]=H[b+4>>2]+1;b=nb(f+8|0);na[H[H[b>>2]+48>>2]](b,33648,33680,c)|0;b=lc(f+8|0);g=d,h=na[H[H[b>>2]+12>>2]](b)|0,H[g>>2]=h;g=e,h=na[H[H[b>>2]+16>>2]](b)|0,H[g>>2]=h;na[H[H[b>>2]+20>>2]](a,b);a=H[f+8>>2];b=H[a+4>>2]-1|0;H[a+4>>2]=b;if((b|0)==-1){na[H[H[a>>2]+8>>2]](a)}la=f+16|0}function Ig(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;if(rb(a,H[b+8>>2],e)){if(!(H[b+28>>2]==1|H[b+4>>2]!=(c|0))){H[b+28>>2]=d}return}a:{if(!rb(a,H[b>>2],e)){break a}if(!(H[b+20>>2]!=(c|0)?H[b+16>>2]!=(c|0):0)){if((d|0)!=1){break a}H[b+32>>2]=1;return}H[b+20>>2]=c;H[b+32>>2]=d;H[b+40>>2]=H[b+40>>2]+1;if(!(H[b+36>>2]!=1|H[b+24>>2]!=2)){F[b+54|0]=1}H[b+44>>2]=4}}function Pd(a,b,c,d,e){var f=0,g=0,h=0;f=la-16|0;la=f;b=H[b+28>>2];H[f+8>>2]=b;H[b+4>>2]=H[b+4>>2]+1;b=pb(f+8|0);na[H[H[b>>2]+32>>2]](b,33648,33680,c)|0;b=oc(f+8|0);g=d,h=na[H[H[b>>2]+12>>2]](b)|0,F[g|0]=h;g=e,h=na[H[H[b>>2]+16>>2]](b)|0,F[g|0]=h;na[H[H[b>>2]+20>>2]](a,b);a=H[f+8>>2];b=H[a+4>>2]-1|0;H[a+4>>2]=b;if((b|0)==-1){na[H[H[a>>2]+8>>2]](a)}la=f+16|0}function ic(a,b){var c=0,d=0,e=0,f=0,g=0,h=0;g=la-16|0;la=g;d=mg(b);f=la-16|0;la=f;a:{if(d>>>0<=1073741807){b:{if(d>>>0<=1){F[a+11|0]=d;c=a;break b}h=a;if(d>>>0>=2){e=d+4&-4;c=e-1|0;c=(c|0)==2?e:c}else{c=1}e=c+1|0;c=Re(e);H[h>>2]=c;H[a+8>>2]=e|-2147483648;H[a+4>>2]=d}Fb(c,b,d);H[f+12>>2]=0;H[(d<<2)+c>>2]=H[f+12>>2];la=f+16|0;break a}wb();X()}la=g+16|0}function Zb(a,b){var c=0,d=0,e=0,f=0,g=0,h=0;g=la-16|0;la=g;d=bb(b);f=la-16|0;la=f;a:{if(d>>>0<=4294967279){b:{if(d>>>0<=10){F[a+11|0]=d;c=a;break b}h=a;if(d>>>0>=11){c=d+16&-16;e=c-1|0;c=(e|0)==11?c:e}else{c=10}e=c+1|0;c=dc(e);H[h>>2]=c;H[a+8>>2]=e|-2147483648;H[a+4>>2]=d}Gb(c,b,d);F[f+15|0]=0;F[d+c|0]=I[f+15|0];la=f+16|0;break a}wb();X()}la=g+16|0}function Bc(a,b,c,d){var e=0,f=0;e=la-160|0;la=e;gb(e+8|0,26392,144);a:{b:{if(b-1>>>0>=2147483647){if(b){break b}b=1;a=e+159|0}H[e+52>>2]=a;H[e+28>>2]=a;f=-2-a|0;b=b>>>0>f>>>0?f:b;H[e+56>>2]=b;a=a+b|0;H[e+36>>2]=a;H[e+24>>2]=a;a=de(e+8|0,c,d,10,11);if(!b){break a}b=H[e+28>>2];F[b-((b|0)==H[e+24>>2])|0]=0;break a}H[12064]=61;a=-1}la=e+160|0;return a}function md(a,b,c,d){F[a+53|0]=1;a:{if(H[a+4>>2]!=(c|0)){break a}F[a+52|0]=1;c=H[a+16>>2];b:{if(!c){H[a+36>>2]=1;H[a+24>>2]=d;H[a+16>>2]=b;if(H[a+48>>2]!=1){break a}if((d|0)==1){break b}break a}if((b|0)==(c|0)){c=H[a+24>>2];if((c|0)==2){H[a+24>>2]=d;c=d}if(H[a+48>>2]!=1){break a}if((c|0)==1){break b}break a}H[a+36>>2]=H[a+36>>2]+1}F[a+54|0]=1}}function Wc(a){var b=0,c=0,d=0,e=0,f=0;b=Ca(12);if(b){a:{c=H[a+8>>2];if(I[a|0]==99){d=ya(0,7719);b:{if(!c){a=d;break b}a=Ca(12);if(!a){break a}H[a+8>>2]=c;H[a+4>>2]=d;H[a>>2]=0}e=b,f=ya(a,7710),H[e+8>>2]=f;return b}if(!c){H[b+8>>2]=0;return b}a=Ca(12);if(!a){break a}H[a+8>>2]=c;H[a>>2]=0;H[a+4>>2]=0;H[b+8>>2]=a;return b}}Ya(9263);_(2);X()}function Lb(a,b,c,d){var e=0,f=0,g=0,h=0;f=la-16|0;la=f;H[f+12>>2]=b;H[f+8>>2]=d;g=Cb(f,f+12|0);d=la-16|0;la=d;e=H[f+8>>2];H[d+12>>2]=e;H[d+8>>2]=e;b=-1;e=Bc(0,0,c,e);a:{if((e|0)<0){break a}h=a;e=e+1|0;a=Ca(e);H[h>>2]=a;if(!a){break a}b=Bc(a,e,c,H[d+12>>2])}la=d+16|0;a=H[g>>2];if(a){if(a){H[10445]=(a|0)==-1?48300:a}}la=f+16|0;return b}function re(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;b=la-16|0;la=b;e=b+16|0;a:{while(1){c=H[a+36>>2];f=na[H[H[c>>2]+20>>2]](c,H[a+40>>2],b+8|0,e,b+4|0)|0;c=-1;d=H[b+4>>2]-(b+8|0)|0;if((d|0)!=(xb(b+8|0,1,d,H[a+32>>2])|0)){break a}b:{switch(f-1|0){case 1:break a;case 0:continue;default:break b}}break}c=Le(H[a+32>>2])?-1:0}la=b+16|0;return c|0}function ac(a,b){var c=0,d=0,e=0;c=I[a|0];a:{if(!c){break a}while(1){d=I[b|0];if(!d){e=c;break a}b:{if((c|0)==(d|0)){break b}d=c-65>>>0<26?c|32:c;c=I[b|0];if((d|0)==((c-65>>>0<26?c|32:c)|0)){break b}e=I[a|0];break a}b=b+1|0;c=I[a+1|0];a=a+1|0;if(c){continue}break}}a=e&255;e=a-65>>>0<26?a|32:a;a=I[b|0];return e-(a-65>>>0<26?a|32:a)|0}function xd(a){var b=0;a:{b=H[a+4>>2];if(!H[(H[H[b>>2]-12>>2]+b|0)+24>>2]){break a}b=H[a+4>>2];if(H[(H[H[b>>2]-12>>2]+b|0)+16>>2]){break a}b=H[a+4>>2];if(!(H[(H[H[b>>2]-12>>2]+b|0)+4>>2]&8192)){break a}b=H[a+4>>2];b=H[(H[H[b>>2]-12>>2]+b|0)+24>>2];if((na[H[H[b>>2]+24>>2]](b)|0)!=-1){break a}a=H[a+4>>2];dd(H[H[a>>2]-12>>2]+a|0)}}function De(a,b,c){var d=0,e=0;d=I[c+74|0];F[c+74|0]=d-1|d;e=H[c+4>>2];d=H[c+8>>2]-e|0;if((d|0)<1){d=b}else{d=b>>>0>d>>>0?d:b;gb(a,e,d);H[c+4>>2]=d+H[c+4>>2];a=a+d|0;d=b-d|0}if(d){while(1){a:{if(!Bd(c)){e=na[H[c+32>>2]](c,a,d)|0;if(e+1>>>0>1){break a}}return b-d|0}a=a+e|0;d=d-e|0;if(d){continue}break}}return b}function xe(a,b,c){var d=0,e=0,f=0,g=0,h=0;e=la-16|0;la=e;d=Je(a);H[a+32>>2]=b;H[a>>2]=40344;b=H[d+4>>2];H[e+8>>2]=b;H[b+4>>2]=H[b+4>>2]+1;b=ud(e+8|0);d=H[e+8>>2];f=H[d+4>>2]-1|0;H[d+4>>2]=f;if((f|0)==-1){na[H[H[d>>2]+8>>2]](d)}H[a+40>>2]=c;H[a+36>>2]=b;g=a,h=na[H[H[b>>2]+28>>2]](b)|0,F[g+44|0]=h;la=e+16|0}function we(a,b,c){var d=0,e=0,f=0,g=0,h=0;e=la-16|0;la=e;d=Ee(a);H[a+32>>2]=b;H[a>>2]=40448;b=H[d+4>>2];H[e+8>>2]=b;H[b+4>>2]=H[b+4>>2]+1;b=rd(e+8|0);d=H[e+8>>2];f=H[d+4>>2]-1|0;H[d+4>>2]=f;if((f|0)==-1){na[H[H[d>>2]+8>>2]](d)}H[a+40>>2]=c;H[a+36>>2]=b;g=a,h=na[H[H[b>>2]+28>>2]](b)|0,F[g+44|0]=h;la=e+16|0}function qb(a,b){var c=0,d=0,e=0,f=0,g=0,h=0;d=la-16|0;la=d;g=a;h=a;a:{if(!b){b=0;break a}c=b>>31;e=c+b^c;c=Q(e);fb(d,e,0,0,0,c+81|0);e=0+H[d+8>>2]|0;c=(H[d+12>>2]^65536)+(16414-c<<16)|0;c=e>>>0>>0?c+1|0:c;f=b&-2147483648|c;c=H[d+4>>2];b=H[d>>2]}H[h>>2]=b;H[g+4>>2]=c;H[a+8>>2]=e;H[a+12>>2]=f;la=d+16|0}function ef(a){a=a|0;var b=0,c=0,d=0,e=0;H[a>>2]=33896;b=a+16|0;while(1){if(H[b+4>>2]-H[b>>2]>>2>>>0>c>>>0){if(H[H[b>>2]+(c<<2)>>2]){d=H[H[b>>2]+(c<<2)>>2];e=H[d+4>>2]-1|0;H[d+4>>2]=e;if((e|0)==-1){na[H[H[d>>2]+8>>2]](d)}}c=c+1|0;continue}break}Ba(a+192|0);if(H[b>>2]){ff(b);Qe(b+32|0,H[b>>2])}return a|0}function mi(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0;f=la-16|0;la=f;H[e>>2]=c;a=Gd(f+12|0,0,H[a+8>>2]);c=2;a:{if(a+1>>>0<2){break a}b=a-1|0;c=1;if(b>>>0>d-H[e>>2]>>>0){break a}c=f+12|0;while(1){if(b){a=I[c|0];d=H[e>>2];H[e>>2]=d+1;F[d|0]=a;b=b-1|0;c=c+1|0;continue}break}c=0}la=f+16|0;return c|0}function Vf(a,b){var c=0,d=0;a:{b:{if(H[b+16>>2]){a=ya(a,9313);d=H[b+12>>2];if(d){c=Ca(12);if(!c){break b}H[c+8>>2]=d;H[c+4>>2]=a;H[c>>2]=0;a=ya(c,9958)}c=H[b+16>>2];c:{if(!c){b=a;break c}b=Ca(12);if(!b){break a}H[b+8>>2]=c;H[b+4>>2]=a;H[b>>2]=0}a=ya(b,9301)}return a}Ya(9263);_(2);X()}Ya(9263);_(2);X()}function jd(a){var b=0;b=1;a:{if((a|0)>=1024){b=8.98846567431158e307;if((a|0)<2047){a=a-1023|0;break a}b=Z;a=((a|0)<3069?a:3069)-2046|0;break a}if((a|0)>-1023){break a}b=2.2250738585072014e-308;if((a|0)>-2045){a=a+1022|0;break a}b=0;a=((a|0)>-3066?a:-3066)+2044|0}x(0,0);x(1,a+1023<<20);return b*+z()}function cd(a){a=a|0;var b=0,c=0;H[a>>2]=28932;b=H[a+40>>2];while(1){if(b){b=b-1|0;c=b<<2;na[H[c+H[a+32>>2]>>2]](0,a,H[c+H[a+36>>2]>>2]);continue}break}b=H[a+28>>2];c=H[b+4>>2]-1|0;H[b+4>>2]=c;if((c|0)==-1){na[H[H[b>>2]+8>>2]](b)}Aa(H[a+32>>2]);Aa(H[a+36>>2]);Aa(H[a+48>>2]);Aa(H[a+60>>2]);return a|0}function gj(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;g=la-32|0;la=g;h=H[8471];H[g+24>>2]=H[8470];H[g+28>>2]=h;h=H[8469];H[g+16>>2]=H[8468];H[g+20>>2]=h;h=H[8467];H[g+8>>2]=H[8466];H[g+12>>2]=h;h=H[8465];H[g>>2]=H[8464];H[g+4>>2]=h;a=Ob(a,b,c,d,e,f,g,g+32|0);la=g+32|0;return a|0}function Ve(a,b,c){var d=0,e=0,f=0;f=la-16|0;la=f;H[f+12>>2]=c;d=la-160|0;la=d;gb(d+8|0,26392,144);H[d+52>>2]=a;H[d+28>>2]=a;e=-2-a|0;e=e>>>0<2147483647?e:2147483647;H[d+56>>2]=e;a=a+e|0;H[d+36>>2]=a;H[d+24>>2]=a;ae(d+8|0,b,c);if(e){a=H[d+28>>2];F[a-((a|0)==H[d+24>>2])|0]=0}la=d+160|0;la=f+16|0}function gc(a,b){var c=0,d=0,e=0,f=0,g=0,h=0;c=la-16|0;la=c;g=a;h=a;a:{if(!b){b=0;e=0;break a}d=b;b=Q(b);fb(c,d,0,0,0,b+81|0);d=0+H[c+8>>2]|0;b=(H[c+12>>2]^65536)+(16414-b<<16)|0;b=d>>>0>>0?b+1|0:b;f=d;d=b;b=H[c+4>>2];e=H[c>>2]}H[h>>2]=e;H[g+4>>2]=b;H[a+8>>2]=f;H[a+12>>2]=d;la=c+16|0}function Ed(a,b){var c=0;if(H[b+76>>2]<0){a:{if(F[b+75|0]==(a&255)){break a}c=H[b+20>>2];if(c>>>0>=K[b+16>>2]){break a}H[b+20>>2]=c+1;F[c|0]=a;return}fe(b,a);return}b:{c:{if(F[b+75|0]==(a&255)){break c}c=H[b+20>>2];if(c>>>0>=K[b+16>>2]){break c}H[b+20>>2]=c+1;F[c|0]=a;break b}fe(b,a)}}function aj(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;c=la-128|0;la=c;H[c+12>>2]=c+116;Ff(a+8|0,c+16|0,c+12|0,e,f,g);d=c+16|0;e=H[c+12>>2];a=la-16|0;la=a;H[a+8>>2]=b;while(1){if((d|0)!=(e|0)){Rf(a+8|0,F[d|0]);d=d+1|0;continue}break}la=a+16|0;la=c+128|0;return H[a+8>>2]}function fj(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;g=a;h=b;b=na[H[H[a+8>>2]+20>>2]](a+8|0)|0;a=b;if(I[b+11|0]>>>7|0){a=H[a>>2]}i=a;if(I[b+11|0]>>>7|0){a=H[b>>2]}else{a=b}if(I[b+11|0]>>>7|0){b=H[b+4>>2]}else{b=I[b+11|0]}return Ob(g,h,c,d,e,f,i,a+(b<<2)|0)|0}function bb(a){var b=0,c=0,d=0;b=a;a:{if(b&3){while(1){if(!I[b|0]){break a}b=b+1|0;if(b&3){continue}break}}while(1){c=b;b=b+4|0;d=H[c>>2];if(!((d^-1)&d-16843009&-2139062144)){continue}break}if(!(d&255)){return c-a|0}while(1){d=I[c+1|0];b=c+1|0;c=b;if(d){continue}break}}return b-a|0}function Wa(a){var b=0,c=0,d=0,e=0;b=la-16|0;la=b;H[b+12>>2]=0;H[b+4>>2]=a;H[b>>2]=a;H[b+8>>2]=a+1;a=b;d=la-16|0;la=d;e=d+8|0;H[e>>2]=H[b+4>>2];if(!I[H[e>>2]]){a:{b:{a=H[a+8>>2];c=I[a|0];if((c|0)!=1){if(c&2){break b}F[a|0]=2;a=1}else{a=0}break a}X()}c=a}la=d+16|0;la=b+16|0;return c}function kj(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;g=la-16|0;la=g;H[g+8>>2]=b;b=H[d+28>>2];H[g>>2]=b;H[b+4>>2]=H[b+4>>2]+1;h=pb(g);b=H[g>>2];d=H[b+4>>2]-1|0;H[b+4>>2]=d;if((d|0)==-1){na[H[H[b>>2]+8>>2]](b)}Lf(a,f+24|0,g+8|0,c,e,h);la=g+16|0;return H[g+8>>2]}function jj(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;g=la-16|0;la=g;H[g+8>>2]=b;b=H[d+28>>2];H[g>>2]=b;H[b+4>>2]=H[b+4>>2]+1;h=pb(g);b=H[g>>2];d=H[b+4>>2]-1|0;H[b+4>>2]=d;if((d|0)==-1){na[H[H[b>>2]+8>>2]](b)}Kf(a,f+16|0,g+8|0,c,e,h);la=g+16|0;return H[g+8>>2]}function ej(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;g=la-16|0;la=g;H[g+8>>2]=b;b=H[d+28>>2];H[g>>2]=b;H[b+4>>2]=H[b+4>>2]+1;h=nb(g);b=H[g>>2];d=H[b+4>>2]-1|0;H[b+4>>2]=d;if((d|0)==-1){na[H[H[b>>2]+8>>2]](b)}If(a,f+24|0,g+8|0,c,e,h);la=g+16|0;return H[g+8>>2]}function dj(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;g=la-16|0;la=g;H[g+8>>2]=b;b=H[d+28>>2];H[g>>2]=b;H[b+4>>2]=H[b+4>>2]+1;h=nb(g);b=H[g>>2];d=H[b+4>>2]-1|0;H[b+4>>2]=d;if((d|0)==-1){na[H[H[b>>2]+8>>2]](b)}Hf(a,f+16|0,g+8|0,c,e,h);la=g+16|0;return H[g+8>>2]}function Ec(a,b){var c=0,d=0;c=-1;a:{if((a|0)==-1){break a}d=H[b+76>>2]>=0;b:{c:{c=H[b+4>>2];d:{if(!c){Bd(b);c=H[b+4>>2];if(!c){break d}}if(H[b+44>>2]-8>>>0>>0){break c}}c=-1;if(d){break b}break a}c=c-1|0;H[b+4>>2]=c;F[c|0]=a;H[b>>2]=H[b>>2]&-17;c=a;if(!d){break a}}}return c}function lj(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;g=a;h=b;b=na[H[H[a+8>>2]+20>>2]](a+8|0)|0;a=b;if(I[b+11|0]>>>7|0){a=H[a>>2]}i=a;if(I[b+11|0]>>>7|0){a=H[b>>2]}else{a=b}if(I[b+11|0]>>>7|0){b=H[b+4>>2]}else{b=I[b+11|0]}return Pb(g,h,c,d,e,f,i,a+b|0)|0}function ij(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0;a=la-16|0;la=a;H[a+8>>2]=b;b=H[d+28>>2];H[a>>2]=b;H[b+4>>2]=H[b+4>>2]+1;g=pb(a);b=H[a>>2];d=H[b+4>>2]-1|0;H[b+4>>2]=d;if((d|0)==-1){na[H[H[b>>2]+8>>2]](b)}Jf(f+20|0,a+8|0,c,e,g);la=a+16|0;return H[a+8>>2]}function cj(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0;a=la-16|0;la=a;H[a+8>>2]=b;b=H[d+28>>2];H[a>>2]=b;H[b+4>>2]=H[b+4>>2]+1;g=nb(a);b=H[a>>2];d=H[b+4>>2]-1|0;H[b+4>>2]=d;if((d|0)==-1){na[H[H[b>>2]+8>>2]](b)}Gf(f+20|0,a+8|0,c,e,g);la=a+16|0;return H[a+8>>2]}function hc(a,b,c){var d=0,e=0,f=0;a:{if(b>>>0<1){d=a;break a}while(1){d=ek(a,b,10);e=ma;f=e;e=dk(d,e,10,0);c=c-1|0;F[c|0]=a-e|48;e=b>>>0>9;a=d;b=f;if(e){continue}break}}if(d){while(1){c=c-1|0;a=(d>>>0)/10|0;F[c|0]=d-N(a,10)|48;b=d>>>0>9;d=a;if(b){continue}break}}return c}function ak(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0;h=(e-d|0)+b|0;a:{while(1){if((d|0)!=(e|0)){a=-1;if((b|0)==(c|0)){break a}f=F[b|0];g=F[d|0];if((f|0)<(g|0)){break a}if((f|0)>(g|0)){return 1}else{d=d+1|0;b=b+1|0;continue}}break}a=(c|0)!=(h|0)}return a|0}function Dd(a){var b=0,c=0;a:{if(K[a+20>>2]<=K[a+28>>2]){break a}na[H[a+36>>2]](a,0,0)|0;if(H[a+20>>2]){break a}return-1}b=H[a+4>>2];c=H[a+8>>2];if(b>>>0>>0){b=b-c|0;na[H[a+40>>2]](a,b,b>>31,1)|0}H[a+28>>2]=0;H[a+16>>2]=0;H[a+20>>2]=0;H[a+4>>2]=0;H[a+8>>2]=0;return 0}function tc(a,b,c){var d=0,e=0,f=0;d=la-16|0;la=d;b=H[b+28>>2];H[d+8>>2]=b;H[b+4>>2]=H[b+4>>2]+1;b=lc(d+8|0);e=c,f=na[H[H[b>>2]+16>>2]](b)|0,H[e>>2]=f;na[H[H[b>>2]+20>>2]](a,b);a=H[d+8>>2];b=H[a+4>>2]-1|0;H[a+4>>2]=b;if((b|0)==-1){na[H[H[a>>2]+8>>2]](a)}la=d+16|0}function Jh(a){a=a|0;a:{if(F[48652]&1){break a}if(!Wa(48652)){break a}b:{if(F[49800]&1){break b}if(!Wa(49800)){break b}a=49776;while(1){a=Fa(a)+12|0;if((a|0)!=49800){continue}break}Va(49800)}Ha(49776,39168);Ha(49788,39180);H[12162]=49776;Va(48652)}return H[12162]}function vc(a,b,c){var d=0,e=0,f=0;d=la-16|0;la=d;b=H[b+28>>2];H[d+8>>2]=b;H[b+4>>2]=H[b+4>>2]+1;b=oc(d+8|0);e=c,f=na[H[H[b>>2]+16>>2]](b)|0,F[e|0]=f;na[H[H[b>>2]+20>>2]](a,b);a=H[d+8>>2];b=H[a+4>>2]-1|0;H[a+4>>2]=b;if((b|0)==-1){na[H[H[a>>2]+8>>2]](a)}la=d+16|0}function Lh(a){a=a|0;a:{if(F[48644]&1){break a}if(!Wa(48644)){break a}b:{if(F[49768]&1){break b}if(!Wa(49768)){break b}a=49744;while(1){a=Fa(a)+12|0;if((a|0)!=49768){continue}break}Va(49768)}Ia(49744,9673);Ia(49756,9663);H[12160]=49744;Va(48644)}return H[12160]}function Tc(a){var b=0;b=9;a:{switch(a-37|0){case 73:case 79:return 8;case 89:return 7;case 72:case 75:return 6;case 0:case 5:case 10:return 5;case 6:case 8:return 4;case 1:return 3;case 57:return 2;case 87:return 1;default:b=0;break;case 74:break a}}return b}function fe(a,b){var c=0,d=0,e=0;d=la-16|0;la=d;F[d+15|0]=b;c=H[a+16>>2];a:{if(!c){if(ge(a)){break a}c=H[a+16>>2]}e=c;c=H[a+20>>2];if(!(F[a+75|0]==(b&255)|e>>>0<=c>>>0)){H[a+20>>2]=c+1;F[c|0]=b;break a}if((na[H[a+36>>2]](a,d+15|0,1)|0)!=1){break a}}la=d+16|0}function Ng(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;if(rb(a,H[b+8>>2],0)){nd(b,c,d);return}e=H[a+12>>2];f=a+16|0;ke(f,b,c,d);a:{if((e|0)<2){break a}e=(e<<3)+f|0;a=a+24|0;while(1){ke(a,b,c,d);if(I[b+54|0]){break a}a=a+8|0;if(e>>>0>a>>>0){continue}break}}}function Zj(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0;a:{while(1){if((d|0)!=(e|0)){a=-1;if((b|0)==(c|0)){break a}f=H[b>>2];g=H[d>>2];if((f|0)<(g|0)){break a}if((f|0)>(g|0)){return 1}else{d=d+4|0;b=b+4|0;continue}}break}a=(b|0)!=(c|0)}return a|0}function $d(a,b){var c=0,d=0,e=0;A(+a);c=v(1)|0;d=v(0)|0;e=c;c=c>>>20&2047;if((c|0)!=2047){if(!c){c=b;if(a==0){b=0}else{a=$d(a*0x10000000000000000,b);b=H[b>>2]+-64|0}H[c>>2]=b;return a}H[b>>2]=c-1022;x(0,d|0);x(1,e&-2146435073|1071644672);a=+z()}return a}function Bd(a){var b=0,c=0;b=I[a+74|0];F[a+74|0]=b-1|b;if(K[a+20>>2]>K[a+28>>2]){na[H[a+36>>2]](a,0,0)|0}H[a+28>>2]=0;H[a+16>>2]=0;H[a+20>>2]=0;b=H[a>>2];if(b&4){H[a>>2]=b|32;return-1}c=H[a+44>>2]+H[a+48>>2]|0;H[a+8>>2]=c;H[a+4>>2]=c;return b<<27>>31}function Ub(a,b,c,d){var e=0;if(d&2048){F[a|0]=43;a=a+1|0}if(d&512){F[a|0]=35;a=a+1|0}while(1){e=I[b|0];if(e){F[a|0]=e;a=a+1|0;b=b+1|0;continue}break}e=d&74;b=111;a:{if((e|0)==64){break a}b=d&16384?88:120;if((e|0)==8){break a}b=c?100:117}F[a|0]=b}function uc(a,b){var c=0,d=0;c=la-16|0;la=c;a=H[a+28>>2];H[c+8>>2]=a;H[a+4>>2]=H[a+4>>2]+1;a=nb(c+8|0);na[H[H[a>>2]+48>>2]](a,33648,33674,b)|0;a=H[c+8>>2];d=H[a+4>>2]-1|0;H[a+4>>2]=d;if((d|0)==-1){na[H[H[a>>2]+8>>2]](a)}la=c+16|0;return b}function yd(a){var b=0,c=0,d=0;b=la-16|0;la=b;if(H[(H[H[a>>2]-12>>2]+a|0)+24>>2]){c=Ae(b+8|0,a);a:{if(!I[c|0]){break a}d=H[(H[H[a>>2]-12>>2]+a|0)+24>>2];if((na[H[H[d>>2]+24>>2]](d)|0)!=-1){break a}dd(H[H[a>>2]-12>>2]+a|0)}xd(c)}la=b+16|0}function hf(a){var b=0,c=0;b=la-16|0;la=b;H[b>>2]=50144;c=H[12537];H[b+4>>2]=c;H[b+8>>2]=c+(a<<2);a=H[b+4>>2];c=H[b+8>>2];while(1){if((a|0)==(c|0)){H[H[b>>2]+4>>2]=H[b+4>>2];la=b+16|0}else{H[a>>2]=0;a=a+4|0;H[b+4>>2]=a;continue}break}}function tb(a,b,c){c=H[c+4>>2]&176;if((c|0)==32){return b}a:{if((c|0)!=16){break a}b:{c:{c=I[a|0];switch(c-43|0){case 0:case 2:break c;default:break b}}return a+1|0}if((c|0)!=48|(b-a|0)<2|(I[a+1|0]|32)!=120){break a}a=a+2|0}return a}function Ug(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;a:{if(!I[a+44|0]){c=(c|0)>0?c:0;while(1){if((c|0)==(d|0)){break a}if((na[H[H[a>>2]+52>>2]](a,H[b>>2])|0)==-1){return d|0}else{b=b+4|0;d=d+1|0;continue}}}c=xb(b,4,c,H[a+32>>2])}return c|0}function Yg(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;a:{if(!I[a+44|0]){c=(c|0)>0?c:0;while(1){if((c|0)==(d|0)){break a}if((na[H[H[a>>2]+52>>2]](a,I[b|0])|0)==-1){return d|0}else{b=b+1|0;d=d+1|0;continue}}}c=xb(b,1,c,H[a+32>>2])}return c|0}function li(a){a=a|0;var b=0,c=0,d=0;c=la-16|0;la=c;H[c+12>>2]=H[a+8>>2];b=Cb(c+8|0,c+12|0);d=la-16|0;la=d;la=d+16|0;b=H[b>>2];if(b){if(b){H[10445]=(b|0)==-1?48300:b}}la=c+16|0;a=H[a+8>>2];if(!a){return 1}return(_e(a)|0)==1|0}function dk(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0;e=c>>>16|0;f=a>>>16|0;j=N(e,f);g=c&65535;h=a&65535;i=N(g,h);f=(i>>>16|0)+N(f,g)|0;e=(f&65535)+N(e,h)|0;ma=(N(b,c)+j|0)+N(a,d)+(f>>>16)+(e>>>16)|0;return i&65535|e<<16}function nd(a,b,c){var d=0;d=H[a+16>>2];if(!d){H[a+36>>2]=1;H[a+24>>2]=c;H[a+16>>2]=b;return}a:{if((b|0)==(d|0)){if(H[a+24>>2]!=2){break a}H[a+24>>2]=c;return}F[a+54|0]=1;H[a+24>>2]=2;H[a+36>>2]=H[a+36>>2]+1}}function Le(a){var b=0;if(a){if(H[a+76>>2]<=-1){return Dd(a)}return Dd(a)}if(H[10328]){b=Le(H[10328])}a=H[11541];if(a){while(1){if(K[a+20>>2]>K[a+28>>2]){b=Dd(a)|b}a=H[a+56>>2];if(a){continue}break}}return b}function mb(a,b,c,d,e){var f=0;f=la-256|0;la=f;if(!(e&73728|(c|0)<=(d|0))){c=c-d|0;d=c>>>0<256;yb(f,b&255,d?c:256);if(!d){while(1){db(a,f,256);c=c-256|0;if(c>>>0>255){continue}break}}db(a,f,c)}la=f+256|0}function Bb(a,b,c){var d=0,e=0,f=0,g=0;H[a+112>>2]=b;H[a+116>>2]=c;d=H[a+8>>2];g=H[a+4>>2];e=d-g|0;f=e>>31;H[a+120>>2]=e;H[a+124>>2]=f;H[a+104>>2]=b|c?((c|0)<(f|0)?1:(c|0)<=(f|0)?b>>>0>>0:0)?b+g|0:d:d}function Rf(a,b){var c=0,d=0;a:{c=H[a>>2];if(!c){break a}d=H[c+24>>2];b:{if((d|0)==H[c+28>>2]){b=na[H[H[c>>2]+52>>2]](c,b&255)|0;break b}H[c+24>>2]=d+1;F[d|0]=b;b=b&255}if((b|0)!=-1){break a}H[a>>2]=0}}function Ff(a,b,c,d,e,f){var g=0,h=0,i=0;g=la-16|0;la=g;F[g+15|0]=0;F[g+14|0]=f;F[g+13|0]=e;F[g+12|0]=37;if(f){Ef(g+13|0,g+14|0)}h=c,i=(ca(b|0,H[c>>2]-b|0,g+12|0,d|0,H[a>>2])|0)+b|0,H[h>>2]=i;la=g+16|0}function qc(a){var b=0;if(H[a+76>>2]<0){b=H[a+4>>2];if(b>>>0>2]){H[a+4>>2]=b+1;return I[b|0]}return kd(a)}b=H[a+4>>2];a:{if(b>>>0>2]){H[a+4>>2]=b+1;a=I[b|0];break a}a=kd(a)}return a}function gh(a,b){a=a|0;b=b|0;var c=0,d=0;b=ud(b);H[a+36>>2]=b;c=a,d=na[H[H[b>>2]+24>>2]](b)|0,H[c+44>>2]=d;b=H[a+36>>2];c=a,d=na[H[H[b>>2]+28>>2]](b)|0,F[c+53|0]=d;if(H[a+44>>2]>=9){Xa();X()}}function bh(a,b){a=a|0;b=b|0;var c=0,d=0;b=rd(b);H[a+36>>2]=b;c=a,d=na[H[H[b>>2]+24>>2]](b)|0,H[c+44>>2]=d;b=H[a+36>>2];c=a,d=na[H[H[b>>2]+28>>2]](b)|0,F[c+53|0]=d;if(H[a+44>>2]>=9){Xa();X()}}function Vg(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=la-16|0;la=e;a=ia(H[a+60>>2],b|0,c|0,d&255,e+8|0)|0;if(a){H[12064]=a;a=-1}else{a=0}la=e+16|0;ma=a?-1:H[e+12>>2];return(a?-1:H[e+8>>2])|0}function Pf(a,b){var c=0,d=0;a:{c=H[a>>2];if(!c){break a}d=H[c+24>>2];b:{if((d|0)==H[c+28>>2]){b=na[H[H[c>>2]+52>>2]](c,b)|0;break b}H[c+24>>2]=d+4;H[d>>2]=b}if((b|0)!=-1){break a}H[a>>2]=0}}function Ib(a,b){var c=0,d=0;c=la-16|0;la=c;if(I[a+11|0]>>>7|0){Aa(H[a>>2])}H[a+8>>2]=H[b+8>>2];d=H[b+4>>2];H[a>>2]=H[b>>2];H[a+4>>2]=d;F[b+11|0]=0;H[c+12>>2]=0;H[b>>2]=H[c+12>>2];la=c+16|0}function qg(a,b,c,d){a:{if(!a){break a}b:{switch(b+2|0){case 0:F[a|0]=c;return;case 1:G[a>>1]=c;return;case 2:case 3:H[a>>2]=c;return;case 5:break b;default:break a}}H[a>>2]=c;H[a+4>>2]=d}}function pe(a,b){var c=0;if(b>>>0<=99){return qe(a,b)}if(b>>>0<=999){c=(b>>>0)/100|0;F[a|0]=c+48;a=a+1|0;b=J[(b-N(c,100)<<1)+40544>>1];F[a|0]=b;F[a+1|0]=b>>>8;return a+2|0}return Cc(a,b)}function hb(a,b){var c=0,d=0;c=la-16|0;la=c;if(I[a+11|0]>>>7|0){Aa(H[a>>2])}H[a+8>>2]=H[b+8>>2];d=H[b+4>>2];H[a>>2]=H[b>>2];H[a+4>>2]=d;F[b+11|0]=0;F[c+15|0]=0;F[b|0]=I[c+15|0];la=c+16|0}function ge(a){var b=0;b=I[a+74|0];F[a+74|0]=b-1|b;b=H[a>>2];if(b&8){H[a>>2]=b|32;return-1}H[a+4>>2]=0;H[a+8>>2]=0;b=H[a+44>>2];H[a+28>>2]=b;H[a+20>>2]=b;H[a+16>>2]=b+H[a+48>>2];return 0}function cb(a,b){var c=0,d=0;c=I[a|0];d=I[b|0];a:{if(!c|(c|0)!=(d|0)){break a}while(1){d=I[b+1|0];c=I[a+1|0];if(!c){break a}b=b+1|0;a=a+1|0;if((c|0)==(d|0)){continue}break}}return c-d|0}function ck(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;e=H[a+84>>2];d=c+256|0;f=Zd(e,d);d=f?f-e|0:d;c=c>>>0>d>>>0?d:c;gb(b,e,c);b=e+d|0;H[a+84>>2]=b;H[a+8>>2]=b;H[a+4>>2]=c+e;return c|0}function Tb(a){var b=0,c=0,d=0;b=la-16|0;la=b;d=b;if(I[a+11|0]>>>7|0){c=H[a>>2]}else{c=a}if(I[a+11|0]>>>7|0){a=H[a+4>>2]}else{a=I[a+11|0]}H[d+8>>2]=c+(a<<2);la=b+16|0;return H[b+8>>2]}function $c(a,b,c,d,e,f,g,h,i){var j=0;j=la-16|0;la=j;ob(j,b,c,d,e,f,g,h,i^-2147483648);b=H[j+4>>2];H[a>>2]=H[j>>2];H[a+4>>2]=b;b=H[j+12>>2];H[a+8>>2]=H[j+8>>2];H[a+12>>2]=b;la=j+16|0}function ri(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;a=la-16|0;la=a;H[a+12>>2]=e;H[a+8>>2]=d-c;b=la-16|0;la=b;la=b+16|0;la=a+16|0;b=a+8|0;a=a+12|0;return H[(K[b>>2]>2]?b:a)>>2]}function ke(a,b,c,d){var e=0,f=0,g=0,h=0;f=H[a+4>>2];a=H[a>>2];g=a;h=b;e=0;a:{if(!c){break a}b=f>>8;e=b;if(!(f&1)){break a}e=H[b+H[c>>2]>>2]}na[H[H[a>>2]+28>>2]](g,h,e+c|0,f&2?d:2)}function Va(a){var b=0,c=0;b=la-16|0;la=b;H[b+12>>2]=0;H[b+4>>2]=a;H[b>>2]=a;H[b+8>>2]=a+1;a=la-16|0;la=a;c=a+8|0;H[c>>2]=H[b+4>>2];F[H[c>>2]]=1;F[H[b+8>>2]]=1;la=a+16|0;la=b+16|0}function Vb(a){var b=0,c=0,d=0;b=la-16|0;la=b;d=b;if(I[a+11|0]>>>7|0){c=H[a>>2]}else{c=a}if(I[a+11|0]>>>7|0){a=H[a+4>>2]}else{a=I[a+11|0]}H[d+8>>2]=c+a;la=b+16|0;return H[b+8>>2]}function mj(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0;g=la-16|0;la=g;H[g+8>>2]=624576549;H[g+12>>2]=1394948685;a=Pb(a,b,c,d,e,f,g+8|0,g+16|0);la=g+16|0;return a|0}function ya(a,b){var c=0;if(!b){return a}a:{c=Ca(12);if(c){H[c+4>>2]=a;H[c>>2]=1;a=Ca(bb(b)+1|0);if(!a){break a}H[c+8>>2]=a;Nb(a,b);return c}Ya(9263);_(2);X()}Ya(9263);_(2);X()}function ib(a,b,c,d,e){var f=0;f=la-16|0;la=f;H[f+12>>2]=c;H[f+8>>2]=e;c=Cb(f,f+12|0);b=Bc(a,b,d,H[f+8>>2]);a=H[c>>2];if(a){if(a){H[10445]=(a|0)==-1?48300:a}}la=f+16|0;return b}function cc(a){var b=0,c=0;b=H[10459];c=a+3&-4;a=b+c|0;a:{if(a>>>0<=b>>>0?c:0){break a}if(a>>>0>oa()<<16>>>0){if(!(ka(a|0)|0)){break a}}H[10459]=a;return b}H[12064]=48;return-1}function Me(a){var b=0,c=0;b=H[a>>2];if(b){c=H[b+12>>2];a:{if((c|0)==H[b+16>>2]){b=na[H[H[b>>2]+36>>2]](b)|0;break a}b=H[c>>2]}if((b|0)!=-1){return!H[a>>2]}H[a>>2]=0}return 1}function Yf(a,b,c){var d=0;d=la-16|0;la=d;H[d+12>>2]=b;H[d+8>>2]=c;b=Cb(d,d+12|0);c=pg(a,8577,H[d+8>>2]);a=H[b>>2];if(a){if(a){H[10445]=(a|0)==-1?48300:a}}la=d+16|0;return c}function Ne(a){var b=0,c=0;b=H[a>>2];if(b){c=H[b+12>>2];a:{if((c|0)==H[b+16>>2]){b=na[H[H[b>>2]+36>>2]](b)|0;break a}b=I[c|0]}if((b|0)!=-1){return!H[a>>2]}H[a>>2]=0}return 1}function Hi(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;while(1){if((b|0)!=(c|0)){d=b;a=H[b>>2];if(a>>>0<=127){a=H[H[7620]+(H[b>>2]<<2)>>2]}H[d>>2]=a;b=b+4|0;continue}break}return c|0}function Fi(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;while(1){if((b|0)!=(c|0)){d=b;a=H[b>>2];if(a>>>0<=127){a=H[H[8008]+(H[b>>2]<<2)>>2]}H[d>>2]=a;b=b+4|0;continue}break}return c|0}function Te(){var a=0,b=0;a=la-16|0;la=a;H[a+12>>2]=1073741823;H[a+8>>2]=2147483647;b=la-16|0;la=b;la=b+16|0;la=a+16|0;b=a+8|0;a=a+12|0;return H[(K[b>>2]>2]?b:a)>>2]}function Ji(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;a:{while(1){if((c|0)==(d|0)){break a}if(!(!(J[H[7426]+(H[c>>2]<<1)>>1]&b)|K[c>>2]>127)){c=c+4|0;continue}break}d=c}return d|0}function Ki(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;while(1){a:{if((c|0)!=(d|0)){if(!(J[H[7426]+(H[c>>2]<<1)>>1]&b)|K[c>>2]>127){break a}}else{c=d}return c|0}c=c+4|0;continue}}function yi(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;while(1){if((b|0)!=(c|0)){d=b;a=F[b|0];if((a|0)>=0){a=H[H[7620]+(F[b|0]<<2)>>2]}F[d|0]=a;b=b+1|0;continue}break}return c|0}function wi(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;while(1){if((b|0)!=(c|0)){d=b;a=F[b|0];if((a|0)>=0){a=H[H[8008]+(F[b|0]<<2)>>2]}F[d|0]=a;b=b+1|0;continue}break}return c|0}function zc(a,b,c){var d=0,e=0,f=0;a:{if(!c){break a}while(1){d=I[a|0];e=I[b|0];if((d|0)==(e|0)){b=b+1|0;a=a+1|0;c=c-1|0;if(c){continue}break a}break}f=d-e|0}return f}function Db(a,b){var c=0,d=0;c=H[a>>2];a=c;d=Oa(b);b=d;if(!(b>>>0>2]-H[a+16>>2]>>2>>>0?H[H[a+16>>2]+(b<<2)>>2]!=0:0)){Xa();X()}return H[H[c+16>>2]+(d<<2)>>2]}function ce(a){var b=0,c=0,d=0;if(F[H[a>>2]]-48>>>0<10){while(1){b=H[a>>2];d=F[b|0];H[a>>2]=b+1;c=(N(c,10)+d|0)-48|0;if(F[b+1|0]-48>>>0<10){continue}break}}return c}function Cc(a,b){var c=0,d=0;c=(b>>>0)/100|0;d=J[(c<<1)+40544>>1];F[a|0]=d;F[a+1|0]=d>>>8;a=a+2|0;b=J[(b-N(c,100)<<1)+40544>>1];F[a|0]=b;F[a+1|0]=b>>>8;return a+2|0}function Ae(a,b){H[a+4>>2]=b;F[a|0]=0;if(!H[(H[H[b>>2]-12>>2]+b|0)+16>>2]){if(H[(H[H[b>>2]-12>>2]+b|0)+72>>2]){yd(H[(H[H[b>>2]-12>>2]+b|0)+72>>2])}F[a|0]=1}return a}function _e(a){var b=0,c=0;b=la-16|0;la=b;H[b+12>>2]=a;a=Cb(b+8|0,b+12|0);c=H[H[10445]>>2]?4:1;a=H[a>>2];if(a){if(a){H[10445]=(a|0)==-1?48300:a}}la=b+16|0;return c}function Li(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;while(1){if((b|0)!=(c|0)){G[d>>1]=K[b>>2]<=127?J[H[7426]+(H[b>>2]<<1)>>1]:0;d=d+2|0;b=b+4|0;continue}break}return c|0}function $e(a,b,c,d,e){var f=0;f=la-16|0;la=f;H[f+12>>2]=e;e=Cb(f+8|0,f+12|0);b=_c(a,b,c,d);a=H[e>>2];if(a){if(a){H[10445]=(a|0)==-1?48300:a}}la=f+16|0;return b}function Xj(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;a=0;while(1){if((b|0)!=(c|0)){a=H[b>>2]+(a<<4)|0;d=a&-268435456;a=(d|d>>>24)^a;b=b+4|0;continue}break}return a|0}function Lc(a,b,c){var d=0;d=la-16|0;la=d;H[d+8>>2]=a;la=d+16|0;d=H[d+8>>2];a=la-16|0;la=a;H[a+8>>2]=b;la=a+16|0;a=H[a+8>>2]-d|0;if(a){he(c,d,a)}return a+c|0}function _j(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;a=0;while(1){if((b|0)!=(c|0)){a=F[b|0]+(a<<4)|0;d=a&-268435456;a=(d|d>>>24)^a;b=b+1|0;continue}break}return a|0}function xb(a,b,c,d){var e=0,f=0;e=N(b,c);f=e;a:{if(H[d+76>>2]<=-1){a=id(a,e,d);break a}a=id(a,e,d)}if((f|0)==(a|0)){return b?c:0}return(a>>>0)/(b>>>0)|0}function Gd(a,b,c){var d=0;d=la-16|0;la=d;H[d+12>>2]=c;c=Cb(d+8|0,d+12|0);b=$b(a,b);a=H[c>>2];if(a){if(a){H[10445]=(a|0)==-1?48300:a}}la=d+16|0;return b}function sc(a,b){var c=0;a:{if(b){c=ya(a,11084);a=Ca(12);if(!a){break a}H[a+8>>2]=b;H[a+4>>2]=c;H[a>>2]=0;return a}return ya(a,12286)}Ya(9263);_(2);X()}function Rb(a){var b=0;b=Ca(32);if(!b){Ya(9263);_(2);X()}H[b+4>>2]=0;H[b+8>>2]=0;H[b>>2]=a;H[b+12>>2]=0;H[b+16>>2]=0;H[b+20>>2]=0;H[b+24>>2]=0;return b}function Bi(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;while(1){if((b|0)!=(c|0)){a=H[b>>2];F[e|0]=a>>>0<128?a:d;e=e+1|0;b=b+4|0;continue}break}return c|0}function Dc(a,b){H[a+20>>2]=0;H[a+24>>2]=b;H[a+12>>2]=0;H[a+4>>2]=4098;H[a+8>>2]=6;H[a+16>>2]=!b;yb(a+32|0,0,40);Jd(a+28|0);H[a+72>>2]=0;H[a+76>>2]=-1}function si(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;while(1){if((b|0)!=(c|0)){a=F[b|0];F[e|0]=(a|0)>-1?a:d;e=e+1|0;b=b+1|0;continue}break}return c|0}function Gg(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;if(rb(a,H[b+8>>2],f)){md(b,c,d,e);return}a=H[a+8>>2];na[H[H[a>>2]+20>>2]](a,b,c,d,e,f)}function kd(a){var b=0,c=0;b=la-16|0;la=b;c=-1;a:{if(Bd(a)){break a}if((na[H[a+32>>2]](a,b+15|0,1)|0)!=1){break a}c=I[b+15|0]}la=b+16|0;return c}function ld(a,b,c,d,e,f){var g=0,h=0,i=0;g=H[a+4>>2];h=g>>8;a=H[a>>2];i=a;if(g&1){h=H[H[d>>2]+h>>2]}na[H[H[a>>2]+20>>2]](i,b,c,d+h|0,g&2?e:2,f)}function _d(a){var b=0,c=0;b=la-32|0;la=b;a=fa(a|0,b+8|0)|0;a:{if(!a){a=59;c=1;if(I[b+8|0]==2){break a}}H[12064]=a;c=0}a=c;la=b+32|0;return a}function Rg(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;e=H[a+20>>2];d=H[a+16>>2]-e|0;d=c>>>0>>0?c:d;gb(e,b,d);H[a+20>>2]=d+H[a+20>>2];return c|0}function Ka(a,b,c){var d=0;d=ya(0,a);if(!b){return ya(d,c)}a=Ca(12);if(a){H[a+8>>2]=b;H[a+4>>2]=d;H[a>>2]=0;return ya(a,c)}Ya(9263);_(2);X()}function Df(a,b){a=a|0;b=b|0;var c=0;c=la-16|0;la=c;b=la-16|0;la=b;F[a+11|0]=1;ne(a,1,45);F[b+15|0]=0;F[a+1|0]=I[b+15|0];la=b+16|0;la=c+16|0}function Ac(a,b,c,d,e){var f=0,g=0,h=0;f=H[a+4>>2];g=f>>8;a=H[a>>2];h=a;if(f&1){g=H[H[c>>2]+g>>2]}na[H[H[a>>2]+24>>2]](h,b,c+g|0,f&2?d:2,e)}function Ag(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=b;b=H[b>>2]+15&-16;H[c>>2]=b+16;d=a,e=ed(H[b>>2],H[b+4>>2],H[b+8>>2],H[b+12>>2]),M[d>>3]=e} +function Ni(a){a=a|0;var b=0,c=0,d=0;b=H[H[a>>2]>>2];c=H[b+8>>2];a=H[b+4>>2];b=H[b>>2]+(c>>1)|0;d=b;if(c&1){a=H[a+H[b>>2]>>2]}na[a|0](d)}function Cd(a){a=a|0;var b=0,c=0;H[a>>2]=39272;b=H[a+4>>2];c=H[b+4>>2]-1|0;H[b+4>>2]=c;if((c|0)==-1){na[H[H[b>>2]+8>>2]](b)}return a|0}function Ad(a){a=a|0;var b=0,c=0;H[a>>2]=39336;b=H[a+4>>2];c=H[b+4>>2]-1|0;H[b+4>>2]=c;if((c|0)==-1){na[H[H[b>>2]+8>>2]](b)}return a|0}function Sa(a){var b=0;a=H[a>>2];b=H[a+12>>2];a:{if((b|0)==H[a+16>>2]){a=na[H[H[a>>2]+36>>2]](a)|0;break a}a=I[b|0]}return a<<24>>24}function Zg(a,b){a=a|0;b=b|0;var c=0,d=0;na[H[H[a>>2]+24>>2]](a)|0;b=ud(b);H[a+36>>2]=b;c=a,d=na[H[H[b>>2]+28>>2]](b)|0,F[c+44|0]=d}function Wg(a,b){a=a|0;b=b|0;var c=0,d=0;na[H[H[a>>2]+24>>2]](a)|0;b=rd(b);H[a+36>>2]=b;c=a,d=na[H[H[b>>2]+28>>2]](b)|0,F[c+44|0]=d}function Di(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;while(1){if((b|0)!=(c|0)){H[d>>2]=F[b|0];d=d+4|0;b=b+1|0;continue}break}return c|0} +function Kf(a,b,c,d,e,f){a=na[H[H[a+8>>2]+4>>2]](a+8|0)|0;a=Zc(c,d,a,a+288|0,f,e,0)-a|0;if((a|0)<=287){H[b>>2]=((a|0)/12|0)%12}}function Hf(a,b,c,d,e,f){a=na[H[H[a+8>>2]+4>>2]](a+8|0)|0;a=Xc(c,d,a,a+288|0,f,e,0)-a|0;if((a|0)<=287){H[b>>2]=((a|0)/12|0)%12}}function vi(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;while(1){if((b|0)!=(c|0)){F[d|0]=I[b|0];d=d+1|0;b=b+1|0;continue}break}return c|0}function Yc(a){var b=0,c=0;c=bb(a);b=Ca(12);if(!b){Ya(9263);_(2);X()}H[b+8>>2]=c;H[b+4>>2]=0;H[b>>2]=2;return ya(ya(b,9298),a)}function Og(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;if(rb(a,H[b+8>>2],0)){nd(b,c,d);return}a=H[a+8>>2];na[H[H[a>>2]+28>>2]](a,b,c,d)}function dc(a){var b=0;a=a?a:1;a:{while(1){b=Ca(a);if(b){break a}b=H[12864];if(b){na[b|0]();continue}break}aa();X()}return b}function Lf(a,b,c,d,e,f){a=na[H[H[a+8>>2]>>2]](a+8|0)|0;a=Zc(c,d,a,a+168|0,f,e,0)-a|0;if((a|0)<=167){H[b>>2]=((a|0)/12|0)%7}}function Je(a){H[a>>2]=39272;Jd(a+4|0);H[a+24>>2]=0;H[a+28>>2]=0;H[a+16>>2]=0;H[a+20>>2]=0;H[a+8>>2]=0;H[a+12>>2]=0;return a}function If(a,b,c,d,e,f){a=na[H[H[a+8>>2]>>2]](a+8|0)|0;a=Xc(c,d,a,a+168|0,f,e,0)-a|0;if((a|0)<=167){H[b>>2]=((a|0)/12|0)%7}}function Ee(a){H[a>>2]=39336;Jd(a+4|0);H[a+24>>2]=0;H[a+28>>2]=0;H[a+16>>2]=0;H[a+20>>2]=0;H[a+8>>2]=0;H[a+12>>2]=0;return a}function Fa(a){var b=0,c=0;c=la-16|0;la=c;while(1){if((b|0)!=3){H[(b<<2)+a>>2]=0;b=b+1|0;continue}break}la=c+16|0;return a}function Kd(a,b,c){c=H[c>>2];while(1){a:{if((a|0)!=(b|0)){if((c|0)!=H[a>>2]){break a}}else{a=b}return a}a=a+4|0;continue}}function kh(a){a=a|0;var b=0;if((na[H[H[a>>2]+36>>2]](a)|0)==-1){return-1}b=a;a=H[a+12>>2];H[b+12>>2]=a+4;return H[a>>2]}function Sf(a){var b=0;b=H[a+12>>2];if((b|0)==H[a+16>>2]){return na[H[H[a>>2]+40>>2]](a)|0}H[a+12>>2]=b+4;return H[b>>2]}function oh(a){a=a|0;var b=0;if((na[H[H[a>>2]+36>>2]](a)|0)==-1){return-1}b=a;a=H[a+12>>2];H[b+12>>2]=a+1;return I[a|0]}function Wf(a){var b=0;b=H[a+12>>2];if((b|0)==H[a+16>>2]){return na[H[H[a>>2]+40>>2]](a)|0}H[a+12>>2]=b+1;return I[b|0]}function Nd(a,b,c){c=I[c|0];while(1){a:{if((a|0)!=(b|0)){if((c|0)!=I[a|0]){break a}}else{a=b}return a}a=a+1|0;continue}}function Se(a,b){var c=0;c=la-16|0;la=c;a:{if(!(I[a+128|0]|b>>>0>30)){F[a+128|0]=1;break a}a=Re(b)}la=c+16|0;return a}function za(a,b){var c=0;if(!b){return a}c=Ca(12);if(c){H[c+8>>2]=b;H[c+4>>2]=a;H[c>>2]=0;return c}Ya(9263);_(2);X()}function Vd(a,b,c,d,e,f,g,h,i){H[a>>2]=b;H[a+4>>2]=c;H[a+8>>2]=d;H[a+12>>2]=e&65535|(i>>>16&32768|e>>>16&32767)<<16}function Ic(a){var b=0;b=la-16|0;la=b;H[b>>2]=a;H[b+4>>2]=H[10463];H[b+8>>2]=H[10285];ee(H[6634],12263,b);la=b+16|0}function vb(a){var b=0,c=0;b=la-16|0;la=b;c=b;if(I[a+11|0]>>>7|0){a=H[a>>2]}H[c+8>>2]=a;la=b+16|0;return H[b+8>>2]}function ec(a,b){a:{if((a|0)==(b|0)){break a}while(1){b=b-1|0;if(b>>>0<=a>>>0){break a}Ef(a,b);a=a+1|0;continue}}}function Rc(a,b){a:{if((a|0)==(b|0)){break a}while(1){b=b-4|0;if(b>>>0<=a>>>0){break a}xc(a,b);a=a+4|0;continue}}}function Cb(a,b){var c=0;c=H[10445];b=H[b>>2];if(b){H[10445]=(b|0)==-1?48300:b}H[a>>2]=(c|0)==48300?-1:c;return a}function qe(a,b){if(b>>>0<=9){F[a|0]=b+48;return a+1|0}b=J[(b<<1)+40544>>1];F[a|0]=b;F[a+1|0]=b>>>8;return a+2|0}function uf(a,b){var c=0,d=0;d=H[b>>2];H[b>>2]=0;c=H[a>>2];H[a>>2]=d;if(c){na[H[a+4>>2]](c)}H[a+4>>2]=H[b+4>>2]}function pf(a,b){var c=0;c=la-16|0;la=c;H[c+8>>2]=H[a>>2];H[c+8>>2]=H[c+8>>2]+(b<<2);la=c+16|0;return H[c+8>>2]}function Rh(a,b){a=a|0;b=b|0;a=la-16|0;la=a;b=Ye(50512,10664,27);F[a+15|0]=10;Ye(b,a+15|0,1);la=a+16|0;return 0}function Mb(a){a:{a=H[a+4>>2]&74;if(a){if((a|0)==64){return 8}if((a|0)!=8){break a}return 16}return 0}return 10}function rb(a,b,c){if(!c){return H[a+4>>2]==H[b+4>>2]}if((a|0)==(b|0)){return 1}return!cb(H[a+4>>2],H[b+4>>2])}function Ra(a,b,c){var d=0;d=la-16|0;la=d;H[d+12>>2]=b;H[a>>2]=H[d+12>>2];H[a+4>>2]=H[c>>2];la=d+16|0;return a}function Pc(a){var b=0;b=H[11488];H[11488]=b+1;H[(b<<2)+41952>>2]=a;if((b|0)>=999){$(9532,7846,643,9063);X()}}function He(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;H[a+8>>2]=-1;H[a+12>>2]=-1;H[a>>2]=0;H[a+4>>2]=0}function xh(a){a=a|0;a:{if(F[48748]&1){break a}if(!Wa(48748)){break a}ic(48736,34204);Va(48748)}return 48736}function th(a){a=a|0;a:{if(F[48780]&1){break a}if(!Wa(48780)){break a}ic(48768,34288);Va(48780)}return 48768}function Jf(a,b,c,d,e){b=Kb(b,c,d,e,4);if(!(I[d|0]&4)){H[a>>2]=((b|0)<69?b+2e3|0:(b|0)<100?b+1900|0:b)-1900}}function Gf(a,b,c,d,e){b=Jb(b,c,d,e,4);if(!(I[d|0]&4)){H[a>>2]=((b|0)<69?b+2e3|0:(b|0)<100?b+1900|0:b)-1900}}function Fh(a){a=a|0;a:{if(F[48684]&1){break a}if(!Wa(48684)){break a}ic(48672,34132);Va(48684)}return 48672}function Bh(a){a=a|0;a:{if(F[48716]&1){break a}if(!Wa(48716)){break a}ic(48704,34168);Va(48716)}return 48704}function zh(a){a=a|0;a:{if(F[48732]&1){break a}if(!Wa(48732)){break a}Zb(48720,9337);Va(48732)}return 48720}function vh(a){a=a|0;a:{if(F[48764]&1){break a}if(!Wa(48764)){break a}Zb(48752,8568);Va(48764)}return 48752}function Hh(a){a=a|0;a:{if(F[48668]&1){break a}if(!Wa(48668)){break a}Zb(48656,7855);Va(48668)}return 48656}function Dh(a){a=a|0;a:{if(F[48700]&1){break a}if(!Wa(48700)){break a}Zb(48688,9554);Va(48700)}return 48688}function vf(a,b){var c=0;c=la-16|0;la=c;H[c+8>>2]=H[a>>2];H[c+8>>2]=H[c+8>>2]+b;la=c+16|0;return H[c+8>>2]}function td(a,b){var c=0;c=a+4|0;H[c>>2]=28932;H[c>>2]=39592;H[a>>2]=39500;H[c>>2]=39520;Dc(H[9872]+a|0,b)}function sd(a,b){var c=0;c=a+4|0;H[c>>2]=28932;H[c>>2]=39664;H[a>>2]=39548;H[c>>2]=39568;Dc(H[9884]+a|0,b)}function af(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;H[e>>2]=c;H[h>>2]=f;return 3}function xc(a,b){var c=0;c=la-16|0;la=c;H[c+12>>2]=H[a>>2];H[a>>2]=H[b>>2];H[b>>2]=H[c+12>>2];la=c+16|0}function Fb(a,b,c){if(c){if(c){while(1){H[a>>2]=H[b>>2];a=a+4|0;b=b+4|0;c=c-1|0;if(c){continue}break}}}}function Xb(a,b){var c=0;c=Ca(12);if(!c){Ya(9263);_(2);X()}H[c+8>>2]=b;H[c+4>>2]=a;H[c>>2]=2;return c}function Pe(a,b){var c=0;c=H[a+4>>2];while(1){if((b|0)!=(c|0)){c=c-4|0;continue}break}H[a+4>>2]=b}function Ef(a,b){var c=0;c=la-16|0;la=c;F[c+15|0]=I[a|0];F[a|0]=I[b|0];F[b|0]=I[c+15|0];la=c+16|0}function Qe(a,b){var c=0;c=la-16|0;la=c;a:{if((a|0)==(b|0)){F[a+128|0]=0;break a}Aa(b)}la=c+16|0}function Fg(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;if(rb(a,H[b+8>>2],f)){md(b,c,d,e)}}function Ge(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;H[a+8>>2]=-1;H[a+12>>2]=-1;H[a>>2]=0;H[a+4>>2]=0}function mg(a){var b=0,c=0;c=a;while(1){b=c;c=b+4|0;if(H[b>>2]){continue}break}return b-a>>2}function bf(a){a=a|0;var b=0;H[a>>2]=33916;b=H[a+8>>2];if(!(!b|!I[a+12|0])){Aa(b)}return a|0}function hd(a,b,c,d){var e=0;e=la-16|0;la=e;H[e+12>>2]=d;a=Bc(a,b,c,d);la=e+16|0;return a}function fk(a,b){var c=0,d=0;c=b&31;d=(-1>>>c&a)<>>a} +function zi(a,b){a=a|0;b=b|0;if((b|0)>=0){b=H[H[7620]+((b&255)<<2)>>2]}return b<<24>>24}function xi(a,b){a=a|0;b=b|0;if((b|0)>=0){b=H[H[8008]+((b&255)<<2)>>2]}return b<<24>>24}function Mi(a,b,c){a=a|0;b=b|0;c=c|0;return(c>>>0<=127?(J[H[7426]+(c<<1)>>1]&b)!=0:0)|0}function og(a,b){var c=0;c=la-16|0;la=c;H[c+12>>2]=b;a=pg(a,8851,b);la=c+16|0;return a}function jf(a){a=a|0;H[a>>2]=33968;if(H[a+8>>2]!=(Ja()|0)){ng(H[a+8>>2])}return a|0}function Th(a){a=a|0;a=48952;while(1){a=Ba(a-12|0);if((a|0)!=48784){continue}break}}function Qh(a){a=a|0;a=49128;while(1){a=Ba(a-12|0);if((a|0)!=48960){continue}break}}function Oh(a){a=a|0;a=49424;while(1){a=Ba(a-12|0);if((a|0)!=49136){continue}break}}function Mh(a){a=a|0;a=49728;while(1){a=Ba(a-12|0);if((a|0)!=49440){continue}break}}function Kh(a){a=a|0;a=49768;while(1){a=Ba(a-12|0);if((a|0)!=49744){continue}break}}function Ih(a){a=a|0;a=49800;while(1){a=Ba(a-12|0);if((a|0)!=49776){continue}break}}function Yj(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;b=la-16|0;la=b;gg(a,c,d);la=b+16|0}function Yd(a){var b=0,c=0;b=bb(a)+1|0;c=Ca(b);if(!c){return 0}return gb(c,a,b)}function Pg(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;if(rb(a,H[b+8>>2],0)){nd(b,c,d)}}function Ii(a,b){a=a|0;b=b|0;if(b>>>0<=127){b=H[H[7620]+(b<<2)>>2]}return b|0}function Gi(a,b){a=a|0;b=b|0;if(b>>>0<=127){b=H[H[8008]+(b<<2)>>2]}return b|0}function ub(a){var b=0;b=la-16|0;la=b;H[b>>2]=a;ee(H[6634],11087,b);_(2);X()}function ee(a,b,c){var d=0;d=la-16|0;la=d;H[d+12>>2]=c;ae(a,b,c);la=d+16|0}function mc(a,b){a=ya(a,11085);if(H[b+8>>2]){a=ya(Wb(a,b),11085)}return a}function Af(a,b){var c=0;c=Wf(H[b>>2])<<24;H[a+4>>2]=H[b>>2];F[a|0]=c>>24}function Wd(a,b){b=!H[a+24>>2]|b;H[a+16>>2]=b;if(b&H[a+20>>2]){Xa();X()}}function Id(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;H[e>>2]=c;return 3}function Sb(a,b){a=a|0;b=b|0;F[a|0]=2;F[a+1|0]=3;F[a+2|0]=0;F[a+3|0]=4}function Fd(a){a=a|0;if(H[a+8>>2]!=(Ja()|0)){ng(H[a+8>>2])}return a|0}function fc(a,b){return b?a<<8&16711680|a<<24|(a>>>8&65280|a>>>24):a}function Si(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;bd(a,f)}function sf(a,b){var c=0;c=Sf(H[b>>2]);H[a+4>>2]=H[b>>2];H[a>>2]=c}function Pi(a){a=a|0;var b=0;b=H[12135]+1|0;H[12135]=b;H[a+4>>2]=b}function Ci(a,b,c){a=a|0;b=b|0;c=c|0;return(b>>>0<128?b:c)<<24>>24}function ji(a){a=a|0;a=H[a+8>>2];if(!a){return 1}return _e(a)|0}function ig(a,b,c){var d=0;d=la-16|0;la=d;hg(a,b,c);la=d+16|0}function ng(a){if((a|0)!=0&(a|0)!=29584&(a|0)!=29608){Aa(a)}}function hh(a){a=a|0;yd(50512);wd(50596);yd(50848);wd(50932)}function Re(a){if(a>>>0>1073741823){Xa();X()}return dc(a<<2)}function ti(a,b,c){a=a|0;b=b|0;c=c|0;return((b|0)>-1?b:c)|0}function ih(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;ma=0;return 0}function Xe(a){a=a|0;H[a>>2]=34016;Ba(a+12|0);return a|0}function We(a){a=a|0;H[a>>2]=34056;Ba(a+16|0);return a|0}function Na(a){a=Ca(a);if(!a){Ya(9263);_(2);X()}return a}function jg(a,b,c,d){a=kg(a,b,c,0,-2147483648);return a}function Ba(a){if(I[a+11|0]>>>7|0){Aa(H[a>>2])}return a}function ze(a){a=a|0;return Fc(H[H[a>>2]-12>>2]+a|0)|0}function Ce(a){a=a|0;return Gc(H[H[a>>2]-12>>2]+a|0)|0}function $j(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;ig(a,c,d)}function rh(a){a=a|0;if(F[41907]<=-1){Aa(H[10474])}}function Lg(a){a=a|0;if(F[41919]<=-1){Aa(H[10477])}}function ui(){return(F[41907]<0?H[10474]:41896)|0}function ni(){return(F[41919]<0?H[10477]:41908)|0}function Xd(a,b){if(!a){return 0}return $b(a,b)}function Sd(a,b,c,d){a=kg(a,b,c,-1,-1);return a}function Oe(a){var b=0,c=0;b=a,c=Ja(),H[b>>2]=c}function Ie(a,b,c){a=a|0;b=b|0;c=c|0;return a|0}function Cg(a){a=a|0;a=la-a&-16;la=a;return a|0}function db(a,b,c){if(!(I[a|0]&32)){id(b,c,a)}}function ye(a){a=a|0;vd(H[H[a>>2]-12>>2]+a|0)}function kf(a,b,c){a=a|0;b=b|0;c=c|0;return-1}function Be(a){a=a|0;zd(H[H[a>>2]-12>>2]+a|0)}function zg(a){a=a|0;return ga(H[a+60>>2])|0}function Oi(a){a=a|0;na[H[H[a>>2]+4>>2]](a)}function _h(a,b){a=a|0;b=b|0;bd(a,b+12|0)}function Zh(a,b){a=a|0;b=b|0;bd(a,b+16|0)}function Gc(a){a=a|0;pc(a+8|0);return a|0}function Fc(a){a=a|0;pc(a+4|0);return a|0}function Xh(a,b){a=a|0;b=b|0;ic(a,34088)}function Vh(a,b){a=a|0;b=b|0;ic(a,34108)}function ne(a,b,c){if(b){yb(a,c&255,b)}}function cf(a,b){a=a|0;b=b|0;return b|0}function Yh(a,b){a=a|0;b=b|0;Zb(a,8923)}function Wh(a,b){a=a|0;b=b|0;Zb(a,8975)}function Cf(a,b){a=a|0;b=b|0;Of(a,1,45)}function Mc(a){a=a|0;return 2147483647}function Cj(a){a=a|0;return H[a+12>>2]}function xj(a){a=a|0;return H[a+8>>2]}function pc(a){a=a|0;cd(a);return a|0}function fh(a){a=a|0;return ue(a,0)|0}function eh(a){a=a|0;return ue(a,1)|0}function ah(a){a=a|0;return se(a,0)|0}function Xf(a,b){return Ne(a)^Ne(b)^1}function Tf(a,b){return Me(a)^Me(b)^1}function Hc(a,b){a=a|0;b=b|0;return-1}function $g(a){a=a|0;return se(a,1)|0}function ai(a){a=a|0;return F[a+8|0]}function $h(a){a=a|0;return F[a+9|0]}function _a(a){Wf(H[a>>2]);return a}function Za(a){Sf(H[a>>2]);return a}function Gb(a,b,c){if(c){gb(a,b,c)}}function Ab(a,b){a=a|0;b=b|0;Fa(a)}function xf(a){return Db(a,48436)}function wf(a){return Db(a,48428)}function ud(a){return Db(a,48560)}function rf(a){return Db(a,48452)}function rd(a){return Db(a,48568)}function qf(a){return Db(a,48444)}function pb(a){return Db(a,48552)}function oc(a){return Db(a,48592)}function nb(a){return Db(a,48544)}function lc(a){return Db(a,48600)}function lb(a,b){return Xf(a,b)^1}function kb(a,b){return Tf(a,b)^1}function dd(a){Wd(a,H[a+16>>2]|1)}function ve(a){a=a|0;Cd(a);Aa(a)}function te(a){a=a|0;Ad(a);Aa(a)}function ae(a,b,c){de(a,b,c,0,0)}function bc(a){a=a|0;return a|0}function ab(a,b){return Xf(a,b)}function Nc(a){a=a|0;return 127}function $a(a,b){return Tf(a,b)}function zd(a){a=a|0;Aa(Gc(a))}function yh(a){a=a|0;Ba(48720)}function yg(a){a=a|0;Aa(cd(a))}function wh(a){a=a|0;Ba(48736)}function vd(a){a=a|0;Aa(Fc(a))}function uh(a){a=a|0;Ba(48752)}function sh(a){a=a|0;Ba(48768)}function qi(a){a=a|0;Aa(jf(a))}function qh(a){a=a|0;Aa(Cd(a))}function mh(a){a=a|0;Aa(Ad(a))}function ci(a){a=a|0;Aa(Xe(a))}function bi(a){a=a|0;Aa(We(a))}function Ue(a){a=a|0;Aa(Fd(a))}function Qi(a){a=a|0;Aa(ef(a))}function Ke(a){a=a|0;Aa(pc(a))}function Gh(a){a=a|0;Ba(48656)}function Eh(a){a=a|0;Ba(48672)}function Da(a,b){Pa(a,b,bb(b))}function Ch(a){a=a|0;Ba(48688)}function Ai(a){a=a|0;Aa(bf(a))}function Ah(a){a=a|0;Ba(48704)}function sb(a){a=a|0;return 0}function Ze(a){a=a|0;return 4}function Mf(a){a=a|0;return 2}function Hd(a){a=a|0;return 1}function Fe(a){a=a|0;return-1}function ff(a){Pe(a,H[a>>2])}function Jc(a,b){a=a|0;b=b|0}function Ua(a){a=a|0;Aa(a)}function Eg(){return la|0}function Dg(a){a=a|0;la=a}function bk(a){a=a|0;X()}function wb(){Xa();X()}function Xa(){aa();X()}function fd(a){a=a|0}function Sg(){X()} +// EMSCRIPTEN_END_FUNCS +e=I;p(wa);var na=c([null,rh,Lg,sb,Kg,ih,zg,ch,Vg,Rg,Bg,Ag,cd,yg,ck,bc,bk,Sg,Aa,fd,Pi,Ni,Th,Qh,Oh,Mh,Kh,Ih,Gh,Eh,Ch,Ah,yh,wh,uh,sh,ef,Qi,Oi,bf,Ai,zi,yi,xi,wi,cf,vi,ti,si,jf,qi,pi,oi,mi,li,sb,ki,ji,Xe,ci,ai,$h,_h,Yh,Wh,We,bi,xj,Cj,Zh,Xh,Vh,bc,Ua,Ua,Mi,Li,Ki,Ji,Ii,Hi,Gi,Fi,cf,Di,Ci,Bi,Ua,af,af,Id,Hd,Hd,ri,Hd,Ua,ii,hi,Id,sb,sb,gi,Ze,Ua,fi,ei,Id,sb,sb,di,Ze,bc,Ua,ak,$j,_j,bc,Ua,Zj,Yj,Xj,Ua,Wj,Vj,Uj,Tj,cg,cg,Sj,Rj,Qj,Pj,Oj,Ua,Nj,Mj,Lj,Kj,Uf,Uf,Jj,Ij,Hj,Gj,Fj,Ua,Ej,Dj,Bj,Aj,zj,yj,wj,vj,Ua,uj,tj,sj,rj,qj,pj,oj,nj,bc,Ua,Mf,mj,lj,kj,jj,ij,hj,Uh,Ph,Lh,zh,vh,Hh,Dh,bc,Ua,Mf,gj,fj,ej,dj,cj,bj,Sh,Nh,Jh,xh,th,Fh,Bh,Fd,Ue,aj,Fd,Ue,$i,Ua,Nc,Nc,Ab,Ab,Ab,Df,sb,Sb,Sb,Ua,Nc,Nc,Ab,Ab,Ab,Df,sb,Sb,Sb,Ua,Mc,Mc,Ab,Ab,Ab,Cf,sb,Sb,Sb,Ua,Mc,Mc,Ab,Ab,Ab,Cf,sb,Sb,Sb,Ua,_i,Zi,Ua,Yi,Xi,Ua,Wi,Vi,Ua,Ui,Ti,Ua,kf,Si,Jc,Ua,kf,Ri,Jc,Cd,qh,Jc,Ie,He,Ge,sb,sb,ph,Fe,oh,Hc,nh,Hc,Ad,mh,Jc,Ie,He,Ge,sb,sb,lh,Fe,kh,Hc,jh,Hc,Gc,zd,Ce,Be,Gc,zd,Ce,Be,Fc,vd,ze,ye,Fc,vd,ze,ye,pc,Ke,pc,Ke,hh,ve,gh,fh,eh,dh,te,bh,ah,$g,_g,ve,Zg,re,Yg,Xg,te,Wg,re,Ug,Tg,bc,Ua,fd,fd,Qg,Fg,Ig,Pg,Ua,Gg,Jg,Og,Ua,Hg,Mg,Ng]);function oa(){return E.byteLength/65536|0}function ta(ua){ua=ua|0;var pa=oa()|0;var qa=pa+ua|0;if(pa=endIdx))++endPtr;if(endPtr-idx>16&&heap.subarray&&UTF8Decoder){return UTF8Decoder.decode(heap.subarray(idx,endPtr))}else{var str="";while(idx>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127)++len;else if(u<=2047)len+=2;else if(u<=65535)len+=3;else len+=4}return len}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i>0]=str.charCodeAt(i)}if(!dontAddNull)HEAP8[buffer>>0]=0}function alignUp(x,multiple){if(x%multiple>0){x+=multiple-x%multiple}return x}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module["HEAP8"]=HEAP8=new Int8Array(buf);Module["HEAP16"]=HEAP16=new Int16Array(buf);Module["HEAP32"]=HEAP32=new Int32Array(buf);Module["HEAPU8"]=HEAPU8=new Uint8Array(buf);Module["HEAPU16"]=HEAPU16=new Uint16Array(buf);Module["HEAPU32"]=HEAPU32=new Uint32Array(buf);Module["HEAPF32"]=HEAPF32=new Float32Array(buf);Module["HEAPF64"]=HEAPF64=new Float64Array(buf)}var INITIAL_MEMORY=Module["INITIAL_MEMORY"]||536870912;if(Module["wasmMemory"]){wasmMemory=Module["wasmMemory"]}else{wasmMemory=new WebAssembly.Memory({"initial":INITIAL_MEMORY/65536,"maximum":2147483648/65536})}if(wasmMemory){buffer=wasmMemory.buffer}INITIAL_MEMORY=buffer.byteLength;updateGlobalBufferAndViews(buffer);var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=false;var runtimeKeepaliveCounter=0;function keepRuntimeAlive(){return noExitRuntime||runtimeKeepaliveCounter>0}function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){runtimeExited=true}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnInit(cb){__ATINIT__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module["preloadedImages"]={};Module["preloadedAudios"]={};function abort(what){if(Module["onAbort"]){Module["onAbort"](what)}what+="";err(what);ABORT=true;EXITSTATUS=1;what="abort("+what+"). Build with -s ASSERTIONS=1 for more info.";var e=new WebAssembly.RuntimeError(what);readyPromiseReject(e);throw e}var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return filename.startsWith(dataURIPrefix)}function isFileURI(filename){return filename.startsWith("file://")}var wasmBinaryFile;wasmBinaryFile="vhd2vl.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(file){try{if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}var binary=tryParseAsDataURI(file);if(binary){return binary}if(readBinary){return readBinary(file)}else{throw"both async and sync fetching of the wasm failed"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch==="function"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){if(!response["ok"]){throw"failed to load wasm binary file at '"+wasmBinaryFile+"'"}return response["arrayBuffer"]()}).catch(function(){return getBinary(wasmBinaryFile)})}else{if(readAsync){return new Promise(function(resolve,reject){readAsync(wasmBinaryFile,function(response){resolve(new Uint8Array(response))},reject)})}}}return Promise.resolve().then(function(){return getBinary(wasmBinaryFile)})}function createWasm(){var info={"a":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module["asm"]=exports;wasmTable=Module["asm"]["t"];addOnInit(Module["asm"]["o"]);removeRunDependency("wasm-instantiate")}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){receiveInstance(result["instance"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){var result=WebAssembly.instantiate(binary,info);return result}).then(receiver,function(reason){err("failed to asynchronously prepare wasm: "+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming==="function"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch==="function"){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiationResult,function(reason){err("wasm streaming compile failed: "+reason);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(receiveInstantiationResult)})})}else{return instantiateArrayBuffer(receiveInstantiationResult)}}if(Module["instantiateWasm"]){try{var exports=Module["instantiateWasm"](info,receiveInstance);return exports}catch(e){err("Module.instantiateWasm callback failed with error: "+e);return false}}instantiateAsync().catch(readyPromiseReject);return{}}function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback=="function"){callback(Module);continue}var func=callback.func;if(typeof func==="number"){if(callback.arg===undefined){wasmTable.get(func)()}else{wasmTable.get(func)(callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}function ___assert_fail(condition,filename,line,func){abort("Assertion failed: "+UTF8ToString(condition)+", at: "+[filename?UTF8ToString(filename):"unknown filename",line,func?UTF8ToString(func):"unknown function"])}function _abort(){abort()}function _emscripten_memcpy_big(dest,src,num){HEAPU8.copyWithin(dest,src,src+num)}function emscripten_realloc_buffer(size){try{wasmMemory.grow(size-buffer.byteLength+65535>>>16);updateGlobalBufferAndViews(wasmMemory.buffer);return 1}catch(e){}}function _emscripten_resize_heap(requestedSize){var oldSize=HEAPU8.length;requestedSize=requestedSize>>>0;var maxHeapSize=2147483648;if(requestedSize>maxHeapSize){return false}for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=emscripten_realloc_buffer(newSize);if(replacement){return true}}return false}var ENV={};function getExecutableName(){return thisProgram||"./this.program"}function getEnvStrings(){if(!getEnvStrings.strings){var lang=(typeof navigator==="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8";var env={"USER":"web_user","LOGNAME":"web_user","PATH":"/","PWD":"/","HOME":"/home/web_user","LANG":lang,"_":getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(x+"="+env[x])}getEnvStrings.strings=strings}return getEnvStrings.strings}var SYSCALLS={mappings:{},buffers:[null,[],[]],printChar:function(stream,curr){var buffer=SYSCALLS.buffers[stream];if(curr===0||curr===10){(stream===1?out:err)(UTF8ArrayToString(buffer,0));buffer.length=0}else{buffer.push(curr)}},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},get64:function(low,high){return low}};function _environ_get(__environ,environ_buf){var bufSize=0;getEnvStrings().forEach(function(string,i){var ptr=environ_buf+bufSize;HEAP32[__environ+i*4>>2]=ptr;writeAsciiToMemory(string,ptr);bufSize+=string.length+1});return 0}function _environ_sizes_get(penviron_count,penviron_buf_size){var strings=getEnvStrings();HEAP32[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(function(string){bufSize+=string.length+1});HEAP32[penviron_buf_size>>2]=bufSize;return 0}function _exit(status){exit(status)}function _fd_close(fd){return 0}function _fd_fdstat_get(fd,pbuf){var type=fd==1||fd==2?2:abort();HEAP8[pbuf>>0]=type;return 0}function _fd_read(fd,iov,iovcnt,pnum){var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doReadv(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){}function _fd_write(fd,iov,iovcnt,pnum){var num=0;for(var i=0;i>2];var len=HEAP32[iov+(i*8+4)>>2];for(var j=0;j>2]=num;return 0}function __isLeapYear(year){return year%4===0&&(year%100!==0||year%400===0)}function __arraySum(array,index){var sum=0;for(var i=0;i<=index;sum+=array[i++]){}return sum}var __MONTH_DAYS_LEAP=[31,29,31,30,31,30,31,31,30,31,30,31];var __MONTH_DAYS_REGULAR=[31,28,31,30,31,30,31,31,30,31,30,31];function __addDays(date,days){var newDate=new Date(date.getTime());while(days>0){var leap=__isLeapYear(newDate.getFullYear());var currentMonth=newDate.getMonth();var daysInCurrentMonth=(leap?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR)[currentMonth];if(days>daysInCurrentMonth-newDate.getDate()){days-=daysInCurrentMonth-newDate.getDate()+1;newDate.setDate(1);if(currentMonth<11){newDate.setMonth(currentMonth+1)}else{newDate.setMonth(0);newDate.setFullYear(newDate.getFullYear()+1)}}else{newDate.setDate(newDate.getDate()+days);return newDate}}return newDate}function _strftime(s,maxsize,format,tm){var tm_zone=HEAP32[tm+40>>2];var date={tm_sec:HEAP32[tm>>2],tm_min:HEAP32[tm+4>>2],tm_hour:HEAP32[tm+8>>2],tm_mday:HEAP32[tm+12>>2],tm_mon:HEAP32[tm+16>>2],tm_year:HEAP32[tm+20>>2],tm_wday:HEAP32[tm+24>>2],tm_yday:HEAP32[tm+28>>2],tm_isdst:HEAP32[tm+32>>2],tm_gmtoff:HEAP32[tm+36>>2],tm_zone:tm_zone?UTF8ToString(tm_zone):""};var pattern=UTF8ToString(format);var EXPANSION_RULES_1={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var rule in EXPANSION_RULES_1){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_1[rule])}var WEEKDAYS=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];var MONTHS=["January","February","March","April","May","June","July","August","September","October","November","December"];function leadingSomething(value,digits,character){var str=typeof value==="number"?value.toString():value||"";while(str.length0?1:0}var compare;if((compare=sgn(date1.getFullYear()-date2.getFullYear()))===0){if((compare=sgn(date1.getMonth()-date2.getMonth()))===0){compare=sgn(date1.getDate()-date2.getDate())}}return compare}function getFirstWeekStartDate(janFourth){switch(janFourth.getDay()){case 0:return new Date(janFourth.getFullYear()-1,11,29);case 1:return janFourth;case 2:return new Date(janFourth.getFullYear(),0,3);case 3:return new Date(janFourth.getFullYear(),0,2);case 4:return new Date(janFourth.getFullYear(),0,1);case 5:return new Date(janFourth.getFullYear()-1,11,31);case 6:return new Date(janFourth.getFullYear()-1,11,30)}}function getWeekBasedYear(date){var thisDate=__addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);var janFourthThisYear=new Date(thisDate.getFullYear(),0,4);var janFourthNextYear=new Date(thisDate.getFullYear()+1,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);if(compareByDay(firstWeekStartThisYear,thisDate)<=0){if(compareByDay(firstWeekStartNextYear,thisDate)<=0){return thisDate.getFullYear()+1}else{return thisDate.getFullYear()}}else{return thisDate.getFullYear()-1}}var EXPANSION_RULES_2={"%a":function(date){return WEEKDAYS[date.tm_wday].substring(0,3)},"%A":function(date){return WEEKDAYS[date.tm_wday]},"%b":function(date){return MONTHS[date.tm_mon].substring(0,3)},"%B":function(date){return MONTHS[date.tm_mon]},"%C":function(date){var year=date.tm_year+1900;return leadingNulls(year/100|0,2)},"%d":function(date){return leadingNulls(date.tm_mday,2)},"%e":function(date){return leadingSomething(date.tm_mday,2," ")},"%g":function(date){return getWeekBasedYear(date).toString().substring(2)},"%G":function(date){return getWeekBasedYear(date)},"%H":function(date){return leadingNulls(date.tm_hour,2)},"%I":function(date){var twelveHour=date.tm_hour;if(twelveHour==0)twelveHour=12;else if(twelveHour>12)twelveHour-=12;return leadingNulls(twelveHour,2)},"%j":function(date){return leadingNulls(date.tm_mday+__arraySum(__isLeapYear(date.tm_year+1900)?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,date.tm_mon-1),3)},"%m":function(date){return leadingNulls(date.tm_mon+1,2)},"%M":function(date){return leadingNulls(date.tm_min,2)},"%n":function(){return"\n"},"%p":function(date){if(date.tm_hour>=0&&date.tm_hour<12){return"AM"}else{return"PM"}},"%S":function(date){return leadingNulls(date.tm_sec,2)},"%t":function(){return"\t"},"%u":function(date){return date.tm_wday||7},"%U":function(date){var janFirst=new Date(date.tm_year+1900,0,1);var firstSunday=janFirst.getDay()===0?janFirst:__addDays(janFirst,7-janFirst.getDay());var endDate=new Date(date.tm_year+1900,date.tm_mon,date.tm_mday);if(compareByDay(firstSunday,endDate)<0){var februaryFirstUntilEndMonth=__arraySum(__isLeapYear(endDate.getFullYear())?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,endDate.getMonth()-1)-31;var firstSundayUntilEndJanuary=31-firstSunday.getDate();var days=firstSundayUntilEndJanuary+februaryFirstUntilEndMonth+endDate.getDate();return leadingNulls(Math.ceil(days/7),2)}return compareByDay(firstSunday,janFirst)===0?"01":"00"},"%V":function(date){var janFourthThisYear=new Date(date.tm_year+1900,0,4);var janFourthNextYear=new Date(date.tm_year+1901,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);var endDate=__addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);if(compareByDay(endDate,firstWeekStartThisYear)<0){return"53"}if(compareByDay(firstWeekStartNextYear,endDate)<=0){return"01"}var daysDifference;if(firstWeekStartThisYear.getFullYear()=0;off=Math.abs(off)/60;off=off/60*100+off%60;return(ahead?"+":"-")+String("0000"+off).slice(-4)},"%Z":function(date){return date.tm_zone},"%%":function(){return"%"}};for(var rule in EXPANSION_RULES_2){if(pattern.includes(rule)){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_2[rule](date))}}var bytes=intArrayFromString(pattern,false);if(bytes.length>maxsize){return 0}writeArrayToMemory(bytes,s);return bytes.length-1}function _strftime_l(s,maxsize,format,tm){return _strftime(s,maxsize,format,tm)}var ASSERTIONS=false;function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}function intArrayToString(array){var ret=[];for(var i=0;i255){if(ASSERTIONS){assert(false,"Character code "+chr+" ("+String.fromCharCode(chr)+") at offset "+i+" not in 0x00-0xFF.")}chr&=255}ret.push(String.fromCharCode(chr))}return ret.join("")}var decodeBase64=typeof atob==="function"?atob:function(input){var keyStr="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";var output="";var chr1,chr2,chr3;var enc1,enc2,enc3,enc4;var i=0;input=input.replace(/[^A-Za-z0-9\+\/\=]/g,"");do{enc1=keyStr.indexOf(input.charAt(i++));enc2=keyStr.indexOf(input.charAt(i++));enc3=keyStr.indexOf(input.charAt(i++));enc4=keyStr.indexOf(input.charAt(i++));chr1=enc1<<2|enc2>>4;chr2=(enc2&15)<<4|enc3>>2;chr3=(enc3&3)<<6|enc4;output=output+String.fromCharCode(chr1);if(enc3!==64){output=output+String.fromCharCode(chr2)}if(enc4!==64){output=output+String.fromCharCode(chr3)}}while(i0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();preMain();readyPromiseResolve(Module);if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();if(shouldRunNow)callMain(args);postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}Module["run"]=run;function exit(status,implicit){EXITSTATUS=status;if(keepRuntimeAlive()){}else{exitRuntime();if(Module["onExit"])Module["onExit"](status);ABORT=true}quit_(status,new ExitStatus(status))}if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}var shouldRunNow=true;if(Module["noInitialRun"])shouldRunNow=false;run(); + + + return Module.ready +} +); +})(); +if (typeof exports === 'object' && typeof module === 'object') + module.exports = Module; +else if (typeof define === 'function' && define['amd']) + define([], function() { return Module; }); +else if (typeof exports === 'object') + exports["Module"] = Module; diff --git a/src/function/index.ts b/src/function/index.ts index b29f38c..bd6c2fb 100644 --- a/src/function/index.ts +++ b/src/function/index.ts @@ -9,6 +9,7 @@ import * as lspDocSymbol from './lsp/docSymbol'; import * as lspDefinition from './lsp/definition'; import * as lspHover from './lsp/hover'; import * as lspFormatter from '../../resources/formatter'; +import * as lspTranslator from '../../resources/translator'; import * as lspDocSemantic from './lsp/docSemantic'; import * as tool from './tool'; @@ -59,6 +60,9 @@ function registerLsp(context: vscode.ExtensionContext) { vscode.languages.registerDocumentFormattingEditProvider(vhdlSelector, lspFormatter.hdlFormatterProvider); vscode.languages.registerDocumentFormattingEditProvider(svlogSelector, lspFormatter.hdlFormatterProvider); + // translator + vscode.commands.registerCommand('digital-ide.vhdl2vlog', uri => lspTranslator.vhdl2vlog(uri)); + // verilog lsp vscode.languages.registerDocumentSymbolProvider(vlogSelector, lspDocSymbol.vlogDocSymbolProvider); vscode.languages.registerDefinitionProvider(vlogSelector, lspDefinition.vlogDefinitionProvider); From 190eb358ed69af66acd9d38279747f3ccebe13d8 Mon Sep 17 00:00:00 2001 From: Kirigaya <1193466151@qq.com> Date: Fri, 14 Jul 2023 20:16:48 +0800 Subject: [PATCH 30/54] #add translator --- package.json | 47 +++++++++++++++++++++++-- resources/translator/index.js | 64 ++++++++++++++++++++++++----------- src/test/user/src/hello.v | 16 +++++++++ src/test/user/src/hello.vhd | 14 ++++++++ 4 files changed, 119 insertions(+), 22 deletions(-) create mode 100644 src/test/user/src/hello.v create mode 100644 src/test/user/src/hello.vhd diff --git a/package.json b/package.json index 2631970..0f291e8 100644 --- a/package.json +++ b/package.json @@ -419,7 +419,11 @@ { "command": "digital-ide.vhdl2vlog", "title": "%digital-ide.vhdl2vlog.title%", - "category": "Digital-IDE" + "category": "Digital-IDE", + "icon": { + "light": "images/svg/light/translate.svg", + "dark": "images/svg/dark/translate.svg" + } } ], "menus": { @@ -477,8 +481,45 @@ "when": "editorLangId == verilog || editorLangId == systemverilog || editorLangId == vhdl", "command": "digital-ide.hdlDoc.showWebview", "group": "navigation@4" - } - ] + }, + { + "when": "resourceLangId == vhdl", + "command": "digital-ide.vhdl2vlog", + "group": "navigation@5" + } + ], + "editor/context": [ + { + "when": "editorLangId == verilog || editorLangId == systemverilog || editorLangId == vhdl", + "command": "digital-ide.pl.setSrcTop", + "group": "navigation@1" + }, + { + "when": "editorLangId == verilog || editorLangId == systemverilog || editorLangId == vhdl", + "command": "digital-ide.pl.setSimTop", + "group": "navigation@2" + }, + { + "when": "editorLangId == verilog || editorLangId == systemverilog || editorLangId == vhdl", + "command": "digital-ide.tool.instance", + "group": "navigation@3" + }, + { + "when": "editorLangId == verilog || editorLangId == systemverilog || editorLangId == vhdl", + "command": "digital-ide.tool.testbench", + "group": "navigation@4" + }, + { + "when": "editorLangId == verilog || editorLangId == systemverilog || editorLangId == vhdl", + "command": "digital-ide.tool.icarus.simulateFile", + "group": "navigation@5" + }, + { + "when": "resourceLangId == vhdl", + "command": "digital-ide.vhdl2vlog", + "group": "navigation@8" + } + ] }, "viewsContainers": { "activitybar": [ diff --git a/resources/translator/index.js b/resources/translator/index.js index 02f8896..643c368 100644 --- a/resources/translator/index.js +++ b/resources/translator/index.js @@ -1,7 +1,21 @@ /* eslint-disable @typescript-eslint/naming-convention */ const fs = require('fs'); const vscode = require('vscode'); +const fspath = require('path'); const vhd2vl = require("./vhd2vlog"); +const formatter = require('../formatter'); + +/** + * + * @param {string} path + * @return {string} + */ +function getFileName(path) { + const fileName = fspath.basename(path); + const names = fileName.split('.'); + names.pop(); + return names.join('.'); +} /** * @@ -10,30 +24,42 @@ const vhd2vl = require("./vhd2vlog"); */ async function vhdl2vlog(uri) { const path = uri.fsPath.replace(/\\/g, '/'); + const fileName = getFileName(path); + const Module = await vhd2vl(); - const content = fs.readFileSync(path, "utf-8"); + let content = fs.readFileSync(path, "utf-8"); const status = Module.ccall('vhdlParse', '', ['string'], [content]); if (!status) { content = Module.ccall('getVlog', 'string', ['string'], []); - vscode.window.showSaveDialog({ - filters: { - verilog: ["v", "V", "vh", "vl"], // 文件类型过滤 - }, - }).then(fileInfos => { - let path_full = fileInfos === null || fileInfos === void 0 ? void 0 : fileInfos.path; - if (path_full !== undefined) { - if (path_full[0] === '/' && require('os').platform() === 'win32') { - path_full = path_full.substring(1); - } - fs.writeFileSync(path_full, content, "utf-8"); - vscode.window.showInformationMessage("translate successfully"); - const options = { - preview: false, - viewColumn: vscode.ViewColumn.Two - }; - vscode.window.showTextDocument(vscode.Uri.file(path_full), options); + // format + content = await formatter.hdlFormatterProvider.vlogFormatter.format_from_code(content); + + const folderPath = fspath.dirname(path); + const defaultSaveUri = new vscode.Uri('file', '', folderPath + '/' + fileName + '.v', '', ''); + console.log(defaultSaveUri); + const vscodeDialogConfig = { + title: 'save the verilog code', + defaultUri: defaultSaveUri, + verilog: ["v", "V", "vh", "vl"] + }; + const fileInfos = await vscode.window.showSaveDialog(vscodeDialogConfig); + + if (fileInfos && fileInfos.path) { + let savePath = fileInfos.path; + console.log(savePath); + + if (savePath[0] === '/' && require('os').platform() === 'win32') { + savePath = savePath.substring(1); } - }); + fs.writeFileSync(savePath, content, "utf-8"); + vscode.window.showInformationMessage("translate successfully"); + const options = { + preview: false, + viewColumn: vscode.ViewColumn.Two + }; + vscode.window.showTextDocument(vscode.Uri.file(savePath), options); + } + } else { const error = Module.ccall('getErr', 'string', ['string'], []); vscode.window.showErrorMessage(error); diff --git a/src/test/user/src/hello.v b/src/test/user/src/hello.v new file mode 100644 index 0000000..c96ec27 --- /dev/null +++ b/src/test/user/src/hello.v @@ -0,0 +1,16 @@ +// VHDL code for a 2-to-1 multiplexer + +module mux2to1( + input wire a, + input wire b, + input wire sel, + output wire outp + ); + + + + + + assign outp = sel == 1'b0 ? a : b; + +endmodule diff --git a/src/test/user/src/hello.vhd b/src/test/user/src/hello.vhd new file mode 100644 index 0000000..f40f549 --- /dev/null +++ b/src/test/user/src/hello.vhd @@ -0,0 +1,14 @@ +-- VHDL code for a 2-to-1 multiplexer +library IEEE; +use IEEE.std_logic_1164.all; + +entity mux2to1 is + port(a, b : in std_logic; + sel : in std_logic; + outp : out std_logic); +end mux2to1; + +architecture behavioral of mux2to1 is +begin + outp <= a when sel = '0' else b; +end behavioral; \ No newline at end of file From d0bcf417fb5eff969c0c83185bf9f7c82578a1ae Mon Sep 17 00:00:00 2001 From: Kirigaya <1193466151@qq.com> Date: Fri, 14 Jul 2023 23:47:21 +0800 Subject: [PATCH 31/54] #modify clean --- .gitignore | 3 +- css/documentation.backup.css | 178 - css/fsm_viewer.css | 207 + css/netlist_style.css | 277 + css/netlist_tree_style.css | 294 + package.json | 121 +- package.nls.json | 4 +- package.nls.zh-cn.json | 4 +- package.nls.zh-tw.json | 4 +- resources/fsm/index.d.ts | 10 + resources/fsm/index.js | 216 + resources/fsm/utils/fsm_parser.js | 1958 + resources/fsm/utils/state-machine-cat.js | 2 + resources/fsm/utils/tree-sitter.js | 1 + resources/fsm/view/fsm_draw.js | 234 + resources/fsm/view/fsm_viewer.html | 38 + resources/netlist/img/icon/cells.png | Bin 0 -> 479 bytes resources/netlist/img/icon/main.png | Bin 0 -> 522 bytes resources/netlist/img/icon/port.png | Bin 0 -> 473 bytes resources/netlist/img/line_conn.gif | Bin 0 -> 45 bytes resources/netlist/img/loading.gif | Bin 0 -> 381 bytes resources/netlist/img/standard.png | Bin 0 -> 11173 bytes resources/netlist/index.d.ts | 0 resources/netlist/index.js | 148 + resources/netlist/kernel/index.js | 53 + resources/netlist/netlist_view.js | 36724 ++++++++++++++++ resources/netlist/netlist_viewer.html | 177 + resources/netlist/render.js | 231 + .../netlist/resources/kernel/share/abc9_map.v | 27 + .../resources/kernel/share/abc9_model.v | 29 + .../resources/kernel/share/abc9_unmap.v | 16 + .../share/achronix/speedster22i/cells_map.v | 73 + .../share/achronix/speedster22i/cells_sim.v | 79 + .../netlist/resources/kernel/share/adff2dff.v | 30 + .../kernel/share/anlogic/arith_map.v | 93 + .../resources/kernel/share/anlogic/brams.txt | 69 + .../kernel/share/anlogic/brams_map.v | 474 + .../kernel/share/anlogic/cells_map.v | 48 + .../kernel/share/anlogic/cells_sim.v | 191 + .../resources/kernel/share/anlogic/eagle_bb.v | 1028 + .../kernel/share/anlogic/lutrams.txt | 12 + .../kernel/share/anlogic/lutrams_map.v | 32 + .../netlist/resources/kernel/share/cells.lib | 108 + .../netlist/resources/kernel/share/cmp2lcu.v | 129 + .../netlist/resources/kernel/share/cmp2lut.v | 98 + .../share/coolrunner2/cells_counter_map.v | 162 + .../kernel/share/coolrunner2/cells_latch.v | 19 + .../kernel/share/coolrunner2/cells_sim.v | 310 + .../kernel/share/coolrunner2/tff_extract.v | 41 + .../kernel/share/coolrunner2/xc2_dff.lib | 31 + .../netlist/resources/kernel/share/dff2ff.v | 16 + .../resources/kernel/share/ecp5/arith_map.v | 90 + .../resources/kernel/share/ecp5/brams.txt | 52 + .../resources/kernel/share/ecp5/brams_map.v | 489 + .../resources/kernel/share/ecp5/cells_bb.v | 832 + .../resources/kernel/share/ecp5/cells_ff.vh | 40 + .../resources/kernel/share/ecp5/cells_io.vh | 14 + .../resources/kernel/share/ecp5/cells_map.v | 191 + .../resources/kernel/share/ecp5/cells_sim.v | 810 + .../resources/kernel/share/ecp5/dsp_map.v | 17 + .../resources/kernel/share/ecp5/latches_map.v | 11 + .../resources/kernel/share/ecp5/lutrams.txt | 12 + .../resources/kernel/share/ecp5/lutrams_map.v | 30 + .../resources/kernel/share/efinix/arith_map.v | 88 + .../resources/kernel/share/efinix/brams.txt | 19 + .../resources/kernel/share/efinix/brams_map.v | 149 + .../resources/kernel/share/efinix/cells_map.v | 96 + .../resources/kernel/share/efinix/cells_sim.v | 179 + .../resources/kernel/share/efinix/gbuf_map.v | 3 + .../netlist/resources/kernel/share/gate2lut.v | 87 + .../kernel/share/gatemate/arith_map.v | 69 + .../resources/kernel/share/gatemate/brams.txt | 80 + .../kernel/share/gatemate/brams_init_20.vh | 64 + .../kernel/share/gatemate/brams_init_40.vh | 260 + .../kernel/share/gatemate/brams_map.v | 882 + .../kernel/share/gatemate/cells_bb.v | 191 + .../kernel/share/gatemate/cells_sim.v | 1455 + .../resources/kernel/share/gatemate/inv_map.v | 4 + .../resources/kernel/share/gatemate/lut_map.v | 45 + .../share/gatemate/lut_tree_cells.genlib | 221 + .../kernel/share/gatemate/lut_tree_map.v | 822 + .../resources/kernel/share/gatemate/mul_map.v | 77 + .../resources/kernel/share/gatemate/mux_map.v | 56 + .../resources/kernel/share/gatemate/reg_map.v | 45 + .../resources/kernel/share/gowin/arith_map.v | 67 + .../resources/kernel/share/gowin/brams.txt | 81 + .../resources/kernel/share/gowin/brams_map.v | 410 + .../resources/kernel/share/gowin/cells_map.v | 177 + .../resources/kernel/share/gowin/cells_sim.v | 1587 + .../resources/kernel/share/gowin/lutrams.txt | 13 + .../kernel/share/gowin/lutrams_map.v | 65 + .../kernel/share/greenpak4/cells_blackbox.v | 18 + .../kernel/share/greenpak4/cells_latch.v | 15 + .../kernel/share/greenpak4/cells_map.v | 261 + .../kernel/share/greenpak4/cells_sim.v | 5 + .../kernel/share/greenpak4/cells_sim_ams.v | 110 + .../share/greenpak4/cells_sim_digital.v | 794 + .../kernel/share/greenpak4/cells_sim_wip.v | 136 + .../kernel/share/greenpak4/gp_dff.lib | 36 + .../resources/kernel/share/ice40/abc9_model.v | 86 + .../resources/kernel/share/ice40/arith_map.v | 75 + .../resources/kernel/share/ice40/brams.txt | 23 + .../resources/kernel/share/ice40/brams_map.v | 218 + .../resources/kernel/share/ice40/cells_map.v | 32 + .../resources/kernel/share/ice40/cells_sim.v | 3502 ++ .../resources/kernel/share/ice40/dsp_map.v | 34 + .../resources/kernel/share/ice40/ff_map.v | 25 + .../kernel/share/ice40/latches_map.v | 11 + .../resources/kernel/share/ice40/spram.txt | 12 + .../resources/kernel/share/ice40/spram_map.v | 24 + .../share/include/backends/cxxrtl/cxxrtl.h | 1616 + .../include/backends/cxxrtl/cxxrtl_capi.cc | 92 + .../include/backends/cxxrtl/cxxrtl_capi.h | 311 + .../include/backends/cxxrtl/cxxrtl_vcd.h | 275 + .../backends/cxxrtl/cxxrtl_vcd_capi.cc | 83 + .../include/backends/cxxrtl/cxxrtl_vcd_capi.h | 107 + .../include/backends/rtlil/rtlil_backend.h | 51 + .../kernel/share/include/frontends/ast/ast.h | 425 + .../share/include/frontends/ast/ast_binding.h | 58 + .../share/include/frontends/blif/blifparse.h | 32 + .../kernel/share/include/kernel/binding.h | 60 + .../kernel/share/include/kernel/celledges.h | 63 + .../kernel/share/include/kernel/celltypes.h | 527 + .../kernel/share/include/kernel/consteval.h | 425 + .../kernel/share/include/kernel/constids.inc | 263 + .../kernel/share/include/kernel/ff.h | 224 + .../kernel/share/include/kernel/ffinit.h | 140 + .../kernel/share/include/kernel/hashlib.h | 1191 + .../kernel/share/include/kernel/log.h | 467 + .../kernel/share/include/kernel/macc.h | 240 + .../kernel/share/include/kernel/mem.h | 229 + .../kernel/share/include/kernel/modtools.h | 579 + .../kernel/share/include/kernel/qcsat.h | 76 + .../kernel/share/include/kernel/register.h | 138 + .../kernel/share/include/kernel/rtlil.h | 1805 + .../kernel/share/include/kernel/satgen.h | 294 + .../kernel/share/include/kernel/sigtools.h | 347 + .../kernel/share/include/kernel/utils.h | 214 + .../kernel/share/include/kernel/yosys.h | 381 + .../share/include/libs/ezsat/ezminisat.h | 71 + .../kernel/share/include/libs/ezsat/ezsat.h | 359 + .../share/include/libs/json11/json11.hpp | 232 + .../kernel/share/include/libs/sha1/sha1.h | 57 + .../kernel/share/include/passes/fsm/fsmdata.h | 178 + .../kernel/share/intel/common/altpll_bb.v | 366 + .../kernel/share/intel/common/brams_m9k.txt | 33 + .../kernel/share/intel/common/brams_map_m9k.v | 93 + .../kernel/share/intel/common/ff_map.v | 11 + .../kernel/share/intel/common/m9k_bb.v | 70 + .../share/intel/cyclone10lp/cells_map.v | 75 + .../share/intel/cyclone10lp/cells_sim.v | 137 + .../kernel/share/intel/cycloneiv/cells_map.v | 59 + .../kernel/share/intel/cycloneiv/cells_sim.v | 299 + .../kernel/share/intel/cycloneive/cells_map.v | 75 + .../kernel/share/intel/cycloneive/cells_sim.v | 292 + .../kernel/share/intel/max10/cells_map.v | 59 + .../kernel/share/intel/max10/cells_sim.v | 292 + .../kernel/share/intel_alm/common/abc9_map.v | 18 + .../share/intel_alm/common/abc9_model.v | 10 + .../share/intel_alm/common/abc9_unmap.v | 11 + .../kernel/share/intel_alm/common/alm_map.v | 57 + .../kernel/share/intel_alm/common/alm_sim.v | 633 + .../share/intel_alm/common/arith_alm_map.v | 71 + .../share/intel_alm/common/bram_m10k.txt | 27 + .../share/intel_alm/common/bram_m10k_map.v | 16 + .../share/intel_alm/common/bram_m20k.txt | 33 + .../share/intel_alm/common/bram_m20k_map.v | 31 + .../kernel/share/intel_alm/common/dff_map.v | 13 + .../kernel/share/intel_alm/common/dff_sim.v | 131 + .../kernel/share/intel_alm/common/dsp_map.v | 51 + .../kernel/share/intel_alm/common/dsp_sim.v | 130 + .../share/intel_alm/common/lutram_mlab.txt | 18 + .../share/intel_alm/common/megafunction_bb.v | 717 + .../kernel/share/intel_alm/common/mem_sim.v | 155 + .../kernel/share/intel_alm/common/misc_sim.v | 21 + .../share/intel_alm/common/quartus_rename.v | 311 + .../share/intel_alm/cyclonev/cells_sim.v | 168 + .../resources/kernel/share/machxo2/brams.txt | 50 + .../kernel/share/machxo2/brams_map.v | 337 + .../kernel/share/machxo2/cells_map.v | 34 + .../kernel/share/machxo2/cells_sim.v | 333 + .../kernel/share/machxo2/lutrams.txt | 12 + .../kernel/share/machxo2/lutrams_map.v | 23 + .../netlist/resources/kernel/share/mul2dsp.v | 318 + .../resources/kernel/share/nexus/arith_map.v | 99 + .../resources/kernel/share/nexus/brams.txt | 47 + .../resources/kernel/share/nexus/brams_map.v | 420 + .../resources/kernel/share/nexus/cells_map.v | 98 + .../resources/kernel/share/nexus/cells_sim.v | 1058 + .../resources/kernel/share/nexus/cells_xtra.v | 10389 +++++ .../resources/kernel/share/nexus/dsp_map.v | 79 + .../kernel/share/nexus/latches_map.v | 11 + .../resources/kernel/share/nexus/lrams.txt | 21 + .../resources/kernel/share/nexus/lrams_map.v | 194 + .../resources/kernel/share/nexus/lutrams.txt | 12 + .../kernel/share/nexus/lutrams_map.v | 23 + .../kernel/share/nexus/parse_init.vh | 33 + .../netlist/resources/kernel/share/pmux2mux.v | 21 + .../kernel/share/quicklogic/abc9_map.v | 26 + .../kernel/share/quicklogic/abc9_model.v | 11 + .../kernel/share/quicklogic/abc9_unmap.v | 14 + .../kernel/share/quicklogic/cells_sim.v | 36 + .../kernel/share/quicklogic/lut_sim.v | 76 + .../kernel/share/quicklogic/pp3_cells_map.v | 36 + .../kernel/share/quicklogic/pp3_cells_sim.v | 329 + .../kernel/share/quicklogic/pp3_ffs_map.v | 4 + .../kernel/share/quicklogic/pp3_latches_map.v | 11 + .../kernel/share/quicklogic/pp3_lut_map.v | 53 + .../resources/kernel/share/sf2/arith_map.v | 69 + .../resources/kernel/share/sf2/cells_map.v | 51 + .../resources/kernel/share/sf2/cells_sim.v | 579 + .../netlist/resources/kernel/share/simcells.v | 3609 ++ .../netlist/resources/kernel/share/simlib.v | 2610 ++ .../netlist/resources/kernel/share/techmap.v | 648 + .../kernel/share/xilinx/abc9_model.v | 39 + .../resources/kernel/share/xilinx/arith_map.v | 202 + .../kernel/share/xilinx/brams_defs.vh | 561 + .../kernel/share/xilinx/brams_xc2v.txt | 33 + .../kernel/share/xilinx/brams_xc2v_map.v | 532 + .../kernel/share/xilinx/brams_xc3sda.txt | 120 + .../kernel/share/xilinx/brams_xc3sda_map.v | 224 + .../kernel/share/xilinx/brams_xc4v.txt | 169 + .../kernel/share/xilinx/brams_xc4v_map.v | 149 + .../kernel/share/xilinx/brams_xc5v_map.v | 255 + .../kernel/share/xilinx/brams_xc6v_map.v | 284 + .../kernel/share/xilinx/brams_xcu_map.v | 225 + .../kernel/share/xilinx/brams_xcv.txt | 17 + .../kernel/share/xilinx/brams_xcv_map.v | 257 + .../resources/kernel/share/xilinx/cells_map.v | 361 + .../resources/kernel/share/xilinx/cells_sim.v | 4392 ++ .../kernel/share/xilinx/cells_xtra.v | 34115 ++++++++++++++ .../resources/kernel/share/xilinx/ff_map.v | 120 + .../resources/kernel/share/xilinx/lut_map.v | 101 + .../kernel/share/xilinx/lutrams_xc5v.txt | 100 + .../kernel/share/xilinx/lutrams_xc5v_map.v | 901 + .../kernel/share/xilinx/lutrams_xcu.txt | 162 + .../kernel/share/xilinx/lutrams_xcv.txt | 59 + .../kernel/share/xilinx/lutrams_xcv_map.v | 177 + .../resources/kernel/share/xilinx/mux_map.v | 74 + .../resources/kernel/share/xilinx/urams.txt | 37 + .../resources/kernel/share/xilinx/urams_map.v | 152 + .../kernel/share/xilinx/xc3s_mult_map.v | 14 + .../kernel/share/xilinx/xc3sda_dsp_map.v | 34 + .../kernel/share/xilinx/xc4v_dsp_map.v | 38 + .../kernel/share/xilinx/xc5v_dsp_map.v | 45 + .../kernel/share/xilinx/xc6s_dsp_map.v | 35 + .../kernel/share/xilinx/xc7_dsp_map.v | 50 + .../kernel/share/xilinx/xcu_dsp_map.v | 51 + resources/public/elk.bundled.js | 6123 +++ resources/public/full.render.js | 90 + resources/public/index.min.js | 1 + resources/public/jquery-2.2.4.min.js | 4 + resources/public/jquery.ztree.core.min.js | 1 + resources/public/svg-pan-zoom.min.js | 3 + resources/public/viz.js | 1302 + resources/translator/index.js | 2 - src/extension.ts | 2 + src/function/fsm/index.ts | 12 + src/function/index.ts | 17 +- src/function/treeView/command.ts | 23 +- 260 files changed, 148616 insertions(+), 212 deletions(-) delete mode 100644 css/documentation.backup.css create mode 100644 css/fsm_viewer.css create mode 100644 css/netlist_style.css create mode 100644 css/netlist_tree_style.css create mode 100644 resources/fsm/index.d.ts create mode 100644 resources/fsm/index.js create mode 100644 resources/fsm/utils/fsm_parser.js create mode 100644 resources/fsm/utils/state-machine-cat.js create mode 100644 resources/fsm/utils/tree-sitter.js create mode 100644 resources/fsm/view/fsm_draw.js create mode 100644 resources/fsm/view/fsm_viewer.html create mode 100644 resources/netlist/img/icon/cells.png create mode 100644 resources/netlist/img/icon/main.png create mode 100644 resources/netlist/img/icon/port.png create mode 100644 resources/netlist/img/line_conn.gif create mode 100644 resources/netlist/img/loading.gif create mode 100644 resources/netlist/img/standard.png create mode 100644 resources/netlist/index.d.ts create mode 100644 resources/netlist/index.js create mode 100644 resources/netlist/kernel/index.js create mode 100644 resources/netlist/netlist_view.js create mode 100644 resources/netlist/netlist_viewer.html create mode 100644 resources/netlist/render.js create mode 100644 resources/netlist/resources/kernel/share/abc9_map.v create mode 100644 resources/netlist/resources/kernel/share/abc9_model.v create mode 100644 resources/netlist/resources/kernel/share/abc9_unmap.v create mode 100644 resources/netlist/resources/kernel/share/achronix/speedster22i/cells_map.v create mode 100644 resources/netlist/resources/kernel/share/achronix/speedster22i/cells_sim.v create mode 100644 resources/netlist/resources/kernel/share/adff2dff.v create mode 100644 resources/netlist/resources/kernel/share/anlogic/arith_map.v create mode 100644 resources/netlist/resources/kernel/share/anlogic/brams.txt create mode 100644 resources/netlist/resources/kernel/share/anlogic/brams_map.v create mode 100644 resources/netlist/resources/kernel/share/anlogic/cells_map.v create mode 100644 resources/netlist/resources/kernel/share/anlogic/cells_sim.v create mode 100644 resources/netlist/resources/kernel/share/anlogic/eagle_bb.v create mode 100644 resources/netlist/resources/kernel/share/anlogic/lutrams.txt create mode 100644 resources/netlist/resources/kernel/share/anlogic/lutrams_map.v create mode 100644 resources/netlist/resources/kernel/share/cells.lib create mode 100644 resources/netlist/resources/kernel/share/cmp2lcu.v create mode 100644 resources/netlist/resources/kernel/share/cmp2lut.v create mode 100644 resources/netlist/resources/kernel/share/coolrunner2/cells_counter_map.v create mode 100644 resources/netlist/resources/kernel/share/coolrunner2/cells_latch.v create mode 100644 resources/netlist/resources/kernel/share/coolrunner2/cells_sim.v create mode 100644 resources/netlist/resources/kernel/share/coolrunner2/tff_extract.v create mode 100644 resources/netlist/resources/kernel/share/coolrunner2/xc2_dff.lib create mode 100644 resources/netlist/resources/kernel/share/dff2ff.v create mode 100644 resources/netlist/resources/kernel/share/ecp5/arith_map.v create mode 100644 resources/netlist/resources/kernel/share/ecp5/brams.txt create mode 100644 resources/netlist/resources/kernel/share/ecp5/brams_map.v create mode 100644 resources/netlist/resources/kernel/share/ecp5/cells_bb.v create mode 100644 resources/netlist/resources/kernel/share/ecp5/cells_ff.vh create mode 100644 resources/netlist/resources/kernel/share/ecp5/cells_io.vh create mode 100644 resources/netlist/resources/kernel/share/ecp5/cells_map.v create mode 100644 resources/netlist/resources/kernel/share/ecp5/cells_sim.v create mode 100644 resources/netlist/resources/kernel/share/ecp5/dsp_map.v create mode 100644 resources/netlist/resources/kernel/share/ecp5/latches_map.v create mode 100644 resources/netlist/resources/kernel/share/ecp5/lutrams.txt create mode 100644 resources/netlist/resources/kernel/share/ecp5/lutrams_map.v create mode 100644 resources/netlist/resources/kernel/share/efinix/arith_map.v create mode 100644 resources/netlist/resources/kernel/share/efinix/brams.txt create mode 100644 resources/netlist/resources/kernel/share/efinix/brams_map.v create mode 100644 resources/netlist/resources/kernel/share/efinix/cells_map.v create mode 100644 resources/netlist/resources/kernel/share/efinix/cells_sim.v create mode 100644 resources/netlist/resources/kernel/share/efinix/gbuf_map.v create mode 100644 resources/netlist/resources/kernel/share/gate2lut.v create mode 100644 resources/netlist/resources/kernel/share/gatemate/arith_map.v create mode 100644 resources/netlist/resources/kernel/share/gatemate/brams.txt create mode 100644 resources/netlist/resources/kernel/share/gatemate/brams_init_20.vh create mode 100644 resources/netlist/resources/kernel/share/gatemate/brams_init_40.vh create mode 100644 resources/netlist/resources/kernel/share/gatemate/brams_map.v create mode 100644 resources/netlist/resources/kernel/share/gatemate/cells_bb.v create mode 100644 resources/netlist/resources/kernel/share/gatemate/cells_sim.v create mode 100644 resources/netlist/resources/kernel/share/gatemate/inv_map.v create mode 100644 resources/netlist/resources/kernel/share/gatemate/lut_map.v create mode 100644 resources/netlist/resources/kernel/share/gatemate/lut_tree_cells.genlib create mode 100644 resources/netlist/resources/kernel/share/gatemate/lut_tree_map.v create mode 100644 resources/netlist/resources/kernel/share/gatemate/mul_map.v create mode 100644 resources/netlist/resources/kernel/share/gatemate/mux_map.v create mode 100644 resources/netlist/resources/kernel/share/gatemate/reg_map.v create mode 100644 resources/netlist/resources/kernel/share/gowin/arith_map.v create mode 100644 resources/netlist/resources/kernel/share/gowin/brams.txt create mode 100644 resources/netlist/resources/kernel/share/gowin/brams_map.v create mode 100644 resources/netlist/resources/kernel/share/gowin/cells_map.v create mode 100644 resources/netlist/resources/kernel/share/gowin/cells_sim.v create mode 100644 resources/netlist/resources/kernel/share/gowin/lutrams.txt create mode 100644 resources/netlist/resources/kernel/share/gowin/lutrams_map.v create mode 100644 resources/netlist/resources/kernel/share/greenpak4/cells_blackbox.v create mode 100644 resources/netlist/resources/kernel/share/greenpak4/cells_latch.v create mode 100644 resources/netlist/resources/kernel/share/greenpak4/cells_map.v create mode 100644 resources/netlist/resources/kernel/share/greenpak4/cells_sim.v create mode 100644 resources/netlist/resources/kernel/share/greenpak4/cells_sim_ams.v create mode 100644 resources/netlist/resources/kernel/share/greenpak4/cells_sim_digital.v create mode 100644 resources/netlist/resources/kernel/share/greenpak4/cells_sim_wip.v create mode 100644 resources/netlist/resources/kernel/share/greenpak4/gp_dff.lib create mode 100644 resources/netlist/resources/kernel/share/ice40/abc9_model.v create mode 100644 resources/netlist/resources/kernel/share/ice40/arith_map.v create mode 100644 resources/netlist/resources/kernel/share/ice40/brams.txt create mode 100644 resources/netlist/resources/kernel/share/ice40/brams_map.v create mode 100644 resources/netlist/resources/kernel/share/ice40/cells_map.v create mode 100644 resources/netlist/resources/kernel/share/ice40/cells_sim.v create mode 100644 resources/netlist/resources/kernel/share/ice40/dsp_map.v create mode 100644 resources/netlist/resources/kernel/share/ice40/ff_map.v create mode 100644 resources/netlist/resources/kernel/share/ice40/latches_map.v create mode 100644 resources/netlist/resources/kernel/share/ice40/spram.txt create mode 100644 resources/netlist/resources/kernel/share/ice40/spram_map.v create mode 100644 resources/netlist/resources/kernel/share/include/backends/cxxrtl/cxxrtl.h create mode 100644 resources/netlist/resources/kernel/share/include/backends/cxxrtl/cxxrtl_capi.cc create mode 100644 resources/netlist/resources/kernel/share/include/backends/cxxrtl/cxxrtl_capi.h create mode 100644 resources/netlist/resources/kernel/share/include/backends/cxxrtl/cxxrtl_vcd.h create mode 100644 resources/netlist/resources/kernel/share/include/backends/cxxrtl/cxxrtl_vcd_capi.cc create mode 100644 resources/netlist/resources/kernel/share/include/backends/cxxrtl/cxxrtl_vcd_capi.h create mode 100644 resources/netlist/resources/kernel/share/include/backends/rtlil/rtlil_backend.h create mode 100644 resources/netlist/resources/kernel/share/include/frontends/ast/ast.h create mode 100644 resources/netlist/resources/kernel/share/include/frontends/ast/ast_binding.h create mode 100644 resources/netlist/resources/kernel/share/include/frontends/blif/blifparse.h create mode 100644 resources/netlist/resources/kernel/share/include/kernel/binding.h create mode 100644 resources/netlist/resources/kernel/share/include/kernel/celledges.h create mode 100644 resources/netlist/resources/kernel/share/include/kernel/celltypes.h create mode 100644 resources/netlist/resources/kernel/share/include/kernel/consteval.h create mode 100644 resources/netlist/resources/kernel/share/include/kernel/constids.inc create mode 100644 resources/netlist/resources/kernel/share/include/kernel/ff.h create mode 100644 resources/netlist/resources/kernel/share/include/kernel/ffinit.h create mode 100644 resources/netlist/resources/kernel/share/include/kernel/hashlib.h create mode 100644 resources/netlist/resources/kernel/share/include/kernel/log.h create mode 100644 resources/netlist/resources/kernel/share/include/kernel/macc.h create mode 100644 resources/netlist/resources/kernel/share/include/kernel/mem.h create mode 100644 resources/netlist/resources/kernel/share/include/kernel/modtools.h create mode 100644 resources/netlist/resources/kernel/share/include/kernel/qcsat.h create mode 100644 resources/netlist/resources/kernel/share/include/kernel/register.h create mode 100644 resources/netlist/resources/kernel/share/include/kernel/rtlil.h create mode 100644 resources/netlist/resources/kernel/share/include/kernel/satgen.h create mode 100644 resources/netlist/resources/kernel/share/include/kernel/sigtools.h create mode 100644 resources/netlist/resources/kernel/share/include/kernel/utils.h create mode 100644 resources/netlist/resources/kernel/share/include/kernel/yosys.h create mode 100644 resources/netlist/resources/kernel/share/include/libs/ezsat/ezminisat.h create mode 100644 resources/netlist/resources/kernel/share/include/libs/ezsat/ezsat.h create mode 100644 resources/netlist/resources/kernel/share/include/libs/json11/json11.hpp create mode 100644 resources/netlist/resources/kernel/share/include/libs/sha1/sha1.h create mode 100644 resources/netlist/resources/kernel/share/include/passes/fsm/fsmdata.h create mode 100644 resources/netlist/resources/kernel/share/intel/common/altpll_bb.v create mode 100644 resources/netlist/resources/kernel/share/intel/common/brams_m9k.txt create mode 100644 resources/netlist/resources/kernel/share/intel/common/brams_map_m9k.v create mode 100644 resources/netlist/resources/kernel/share/intel/common/ff_map.v create mode 100644 resources/netlist/resources/kernel/share/intel/common/m9k_bb.v create mode 100644 resources/netlist/resources/kernel/share/intel/cyclone10lp/cells_map.v create mode 100644 resources/netlist/resources/kernel/share/intel/cyclone10lp/cells_sim.v create mode 100644 resources/netlist/resources/kernel/share/intel/cycloneiv/cells_map.v create mode 100644 resources/netlist/resources/kernel/share/intel/cycloneiv/cells_sim.v create mode 100644 resources/netlist/resources/kernel/share/intel/cycloneive/cells_map.v create mode 100644 resources/netlist/resources/kernel/share/intel/cycloneive/cells_sim.v create mode 100644 resources/netlist/resources/kernel/share/intel/max10/cells_map.v create mode 100644 resources/netlist/resources/kernel/share/intel/max10/cells_sim.v create mode 100644 resources/netlist/resources/kernel/share/intel_alm/common/abc9_map.v create mode 100644 resources/netlist/resources/kernel/share/intel_alm/common/abc9_model.v create mode 100644 resources/netlist/resources/kernel/share/intel_alm/common/abc9_unmap.v create mode 100644 resources/netlist/resources/kernel/share/intel_alm/common/alm_map.v create mode 100644 resources/netlist/resources/kernel/share/intel_alm/common/alm_sim.v create mode 100644 resources/netlist/resources/kernel/share/intel_alm/common/arith_alm_map.v create mode 100644 resources/netlist/resources/kernel/share/intel_alm/common/bram_m10k.txt create mode 100644 resources/netlist/resources/kernel/share/intel_alm/common/bram_m10k_map.v create mode 100644 resources/netlist/resources/kernel/share/intel_alm/common/bram_m20k.txt create mode 100644 resources/netlist/resources/kernel/share/intel_alm/common/bram_m20k_map.v create mode 100644 resources/netlist/resources/kernel/share/intel_alm/common/dff_map.v create mode 100644 resources/netlist/resources/kernel/share/intel_alm/common/dff_sim.v create mode 100644 resources/netlist/resources/kernel/share/intel_alm/common/dsp_map.v create mode 100644 resources/netlist/resources/kernel/share/intel_alm/common/dsp_sim.v create mode 100644 resources/netlist/resources/kernel/share/intel_alm/common/lutram_mlab.txt create mode 100644 resources/netlist/resources/kernel/share/intel_alm/common/megafunction_bb.v create mode 100644 resources/netlist/resources/kernel/share/intel_alm/common/mem_sim.v create mode 100644 resources/netlist/resources/kernel/share/intel_alm/common/misc_sim.v create mode 100644 resources/netlist/resources/kernel/share/intel_alm/common/quartus_rename.v create mode 100644 resources/netlist/resources/kernel/share/intel_alm/cyclonev/cells_sim.v create mode 100644 resources/netlist/resources/kernel/share/machxo2/brams.txt create mode 100644 resources/netlist/resources/kernel/share/machxo2/brams_map.v create mode 100644 resources/netlist/resources/kernel/share/machxo2/cells_map.v create mode 100644 resources/netlist/resources/kernel/share/machxo2/cells_sim.v create mode 100644 resources/netlist/resources/kernel/share/machxo2/lutrams.txt create mode 100644 resources/netlist/resources/kernel/share/machxo2/lutrams_map.v create mode 100644 resources/netlist/resources/kernel/share/mul2dsp.v create mode 100644 resources/netlist/resources/kernel/share/nexus/arith_map.v create mode 100644 resources/netlist/resources/kernel/share/nexus/brams.txt create mode 100644 resources/netlist/resources/kernel/share/nexus/brams_map.v create mode 100644 resources/netlist/resources/kernel/share/nexus/cells_map.v create mode 100644 resources/netlist/resources/kernel/share/nexus/cells_sim.v create mode 100644 resources/netlist/resources/kernel/share/nexus/cells_xtra.v create mode 100644 resources/netlist/resources/kernel/share/nexus/dsp_map.v create mode 100644 resources/netlist/resources/kernel/share/nexus/latches_map.v create mode 100644 resources/netlist/resources/kernel/share/nexus/lrams.txt create mode 100644 resources/netlist/resources/kernel/share/nexus/lrams_map.v create mode 100644 resources/netlist/resources/kernel/share/nexus/lutrams.txt create mode 100644 resources/netlist/resources/kernel/share/nexus/lutrams_map.v create mode 100644 resources/netlist/resources/kernel/share/nexus/parse_init.vh create mode 100644 resources/netlist/resources/kernel/share/pmux2mux.v create mode 100644 resources/netlist/resources/kernel/share/quicklogic/abc9_map.v create mode 100644 resources/netlist/resources/kernel/share/quicklogic/abc9_model.v create mode 100644 resources/netlist/resources/kernel/share/quicklogic/abc9_unmap.v create mode 100644 resources/netlist/resources/kernel/share/quicklogic/cells_sim.v create mode 100644 resources/netlist/resources/kernel/share/quicklogic/lut_sim.v create mode 100644 resources/netlist/resources/kernel/share/quicklogic/pp3_cells_map.v create mode 100644 resources/netlist/resources/kernel/share/quicklogic/pp3_cells_sim.v create mode 100644 resources/netlist/resources/kernel/share/quicklogic/pp3_ffs_map.v create mode 100644 resources/netlist/resources/kernel/share/quicklogic/pp3_latches_map.v create mode 100644 resources/netlist/resources/kernel/share/quicklogic/pp3_lut_map.v create mode 100644 resources/netlist/resources/kernel/share/sf2/arith_map.v create mode 100644 resources/netlist/resources/kernel/share/sf2/cells_map.v create mode 100644 resources/netlist/resources/kernel/share/sf2/cells_sim.v create mode 100644 resources/netlist/resources/kernel/share/simcells.v create mode 100644 resources/netlist/resources/kernel/share/simlib.v create mode 100644 resources/netlist/resources/kernel/share/techmap.v create mode 100644 resources/netlist/resources/kernel/share/xilinx/abc9_model.v create mode 100644 resources/netlist/resources/kernel/share/xilinx/arith_map.v create mode 100644 resources/netlist/resources/kernel/share/xilinx/brams_defs.vh create mode 100644 resources/netlist/resources/kernel/share/xilinx/brams_xc2v.txt create mode 100644 resources/netlist/resources/kernel/share/xilinx/brams_xc2v_map.v create mode 100644 resources/netlist/resources/kernel/share/xilinx/brams_xc3sda.txt create mode 100644 resources/netlist/resources/kernel/share/xilinx/brams_xc3sda_map.v create mode 100644 resources/netlist/resources/kernel/share/xilinx/brams_xc4v.txt create mode 100644 resources/netlist/resources/kernel/share/xilinx/brams_xc4v_map.v create mode 100644 resources/netlist/resources/kernel/share/xilinx/brams_xc5v_map.v create mode 100644 resources/netlist/resources/kernel/share/xilinx/brams_xc6v_map.v create mode 100644 resources/netlist/resources/kernel/share/xilinx/brams_xcu_map.v create mode 100644 resources/netlist/resources/kernel/share/xilinx/brams_xcv.txt create mode 100644 resources/netlist/resources/kernel/share/xilinx/brams_xcv_map.v create mode 100644 resources/netlist/resources/kernel/share/xilinx/cells_map.v create mode 100644 resources/netlist/resources/kernel/share/xilinx/cells_sim.v create mode 100644 resources/netlist/resources/kernel/share/xilinx/cells_xtra.v create mode 100644 resources/netlist/resources/kernel/share/xilinx/ff_map.v create mode 100644 resources/netlist/resources/kernel/share/xilinx/lut_map.v create mode 100644 resources/netlist/resources/kernel/share/xilinx/lutrams_xc5v.txt create mode 100644 resources/netlist/resources/kernel/share/xilinx/lutrams_xc5v_map.v create mode 100644 resources/netlist/resources/kernel/share/xilinx/lutrams_xcu.txt create mode 100644 resources/netlist/resources/kernel/share/xilinx/lutrams_xcv.txt create mode 100644 resources/netlist/resources/kernel/share/xilinx/lutrams_xcv_map.v create mode 100644 resources/netlist/resources/kernel/share/xilinx/mux_map.v create mode 100644 resources/netlist/resources/kernel/share/xilinx/urams.txt create mode 100644 resources/netlist/resources/kernel/share/xilinx/urams_map.v create mode 100644 resources/netlist/resources/kernel/share/xilinx/xc3s_mult_map.v create mode 100644 resources/netlist/resources/kernel/share/xilinx/xc3sda_dsp_map.v create mode 100644 resources/netlist/resources/kernel/share/xilinx/xc4v_dsp_map.v create mode 100644 resources/netlist/resources/kernel/share/xilinx/xc5v_dsp_map.v create mode 100644 resources/netlist/resources/kernel/share/xilinx/xc6s_dsp_map.v create mode 100644 resources/netlist/resources/kernel/share/xilinx/xc7_dsp_map.v create mode 100644 resources/netlist/resources/kernel/share/xilinx/xcu_dsp_map.v create mode 100644 resources/public/elk.bundled.js create mode 100644 resources/public/full.render.js create mode 100644 resources/public/index.min.js create mode 100644 resources/public/jquery-2.2.4.min.js create mode 100644 resources/public/jquery.ztree.core.min.js create mode 100644 resources/public/svg-pan-zoom.min.js create mode 100644 resources/public/viz.js create mode 100644 src/function/fsm/index.ts diff --git a/.gitignore b/.gitignore index f58baa0..40fd2b5 100644 --- a/.gitignore +++ b/.gitignore @@ -3,4 +3,5 @@ dist node_modules .vscode-test/ *.vsix -parser_stuck.v \ No newline at end of file +parser_stuck.v +**/*.wasm \ No newline at end of file diff --git a/css/documentation.backup.css b/css/documentation.backup.css deleted file mode 100644 index e8e7e48..0000000 --- a/css/documentation.backup.css +++ /dev/null @@ -1,178 +0,0 @@ -:root { - --title-font : "Cascadia code", "Microsoft YaHei", "Times", serif; - --base-font : "Roboto Slab", "Microsoft YaHei", serif; - --monospace: "Cascadia code", "Microsoft YaHei", "Courier New", monospace; - --main-font-size : 15px; -} - -.error-out { - display: flex; - justify-content: center; - align-items: center; -} - -.error { - color: red; -} - -@font-face { - font-family: "Roboto Slab"; - src: url("../font/RobotoSlab-Regular-2.ttf"); -} - -@font-face { - font-family: "Cascadia code"; - src: url("../font/Cascadia-Code-Regular-2.ttf"); -} - -@font-face { - font-family: "Open Sans"; - src: url("../font/Open-Sans-2.ttf"); -} - -@font-face { - font-family: "Glow Sans"; - src: url("../font/GlowSansSC-Normal-Book.woff2") format('woff2'); -} - -body { - font-family: "Roboto Slab", "SimHei", serif; - /* background-color: rgb(255, 255, 255); */ - -ms-text-size-adjust: 100%; - -webkit-text-size-adjust: 100%; - line-height: 1.5; - font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; - font-size: 16px; - line-height: 1.5; - word-wrap: break-word; -} - -html { - -webkit-text-size-adjust: 100%; - -ms-text-size-adjust: 100%; - text-rendering: optimizelegibility; - -webkit-font-smoothing: initial; -} - -.octicon { - display: inline-block; - vertical-align: text-top; - fill: currentColor; -} - -img { - border-style: none; -} - - -#write h1, h2, h3, h4, h5, h6 { - font-family: var(--title-font); - font-weight: 800; - line-height: 1.5; - margin: 0 0 1em 0; -} - -#write h1 { - font-size: 2em; - margin: 0.67em 0; -} - -#write { - position: static; - /* width: 90%; */ - max-width: 1000px; - min-height: calc(100vh - 6rem); - min-width: calc(100vw - 45rem); - line-height: 1.6; - transform: none; - height: auto; - caret-color: var(--main-color); -} - -#write h2 { - font-size: 28px; - border-radius: .5em; - width: fit-content; -} - -#write h3 { - font-size: 24px; - border-radius: .3em; - width: fit-content; -} - -#write h4 { - font-size: 20px; -} - -#write h5 { - font-size: 16px; -} - -#write hr { - width: 60%; - text-align:center; - margin: 4.5em auto; -} - -/* table */ -#write table -{ - width: 95%; - border-collapse: collapse; - text-align: center; - font-family: var(--monospace); - margin: 20px; -} -#write table td, table th -{ - border: 1px solid; - padding: 5px; - border-radius: .5em; -} -#write table td { - font-family: var(--title-font); -} -#write table thead th -{ - font-size: 16px; - font-weight: bolder; - text-align: center; - vertical-align: middle; - padding: 10px; -} - -/* table tr:nth-child(odd) -{ - background: white; -} -table tr:nth-child(even) -{ - background: var(--light-color); -} */ - -/* main element consisting of your text */ -p { - margin: 0 0 2em 0; - font-weight: 500; - line-height: 1.6; - font-size: var(--main-font-size); - font-family: var(--base-font); -} - -a { - font-weight: 500; - text-decoration: none; - text-decoration-style: none; - cursor: pointer; - padding: 0 3px 0 3px; -} - - -/* list */ -ol, ul { - font-size: var(--main-font-size); - padding-left: 2em; - line-height: 2; - font-family: var(--base-font); -} \ No newline at end of file diff --git a/css/fsm_viewer.css b/css/fsm_viewer.css new file mode 100644 index 0000000..06dd128 --- /dev/null +++ b/css/fsm_viewer.css @@ -0,0 +1,207 @@ +body::-webkit-scrollbar { + width: 2em; +} + +body::-webkit-scrollbar-track { + box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3); +} + +body::-webkit-scrollbar-thumb { + background-color: darkgrey; + outline: 1px solid slategrey; +} + +:root { + --light-foreground-color: black; + --dark-foreground-color: whitesmoke; + --high-contrast-foreground-color: whitesmoke; +} + +h1, +h2, +h3, +table { + margin-left: 5%; + margin-right: 5%; +} + +td, +th, +h1, +h2, +h3 { + color: black; +} + +h1, +h2 { + font-weight: bold; +} + +tr:hover { + background-color: #ddd; +} + +td, +th { + border: 1px solid grey +} + +p { + color: black; +} + +p { + margin: 5%; +} + +th { + background-color: #ffd78c; +} + +tr:nth-child(even) { + background-color: #f2f2f2; +} + +html, +body { + height: 100%; + overflow: hidden; + overflow-y: auto; + color: black; +} + +body { + background: white; + display: flex; + flex-direction: column; + margin: 0; + padding: 0; + cursor: default; +} + +.toolbar { + overflow: visible; + width: 100%; + top: 0; + position: absolute; + color: black; + display: flex; + font: 12px "Segoe UI", sans-serif; + padding: 0.25em; + white-space: nowrap; + z-index: 2; +} + +.left-panel, +.center-panel, +.right-panel { + align-items: center; + display: flex; + flex: 1; +} + +.center-panel { + justify-content: center; +} + +.right-panel { + justify-content: flex-end; +} + +.button { + background: dimgray; + border: none; + box-sizing: border-box; + color: whitesmoke; + cursor: default; + font: inherit; + margin: 0.25em; + outline: none !important; + padding: 0.5em; + text-align: center; + text-decoration: none !important; + transition: background ease-out 125ms, color ease-out 125ms; + user-select: none; + width: 10em; + border-radius: .7em; +} + +.button:hover { + background: darkgray; + box-shadow: inset rgba(255, 255, 255, 0.25) 0 0 1em; + color: black; + cursor: pointer; + border-radius: .7em; +} + +.fancy-checkbox { + font-size: 20px; + margin: 10px; + border-radius: .7em; +} + +.fancy-checkbox:hover { + cursor: pointer; +} + + +.fancy-checkbox>input { + display: none; + cursor: pointer; +} + +.separator { + width: 1em; +} + +#zoom { + color: white; + margin: 0.5em; +} + +#workspace { + cursor: crosshair; + flex: 1; + overflow: hidden; + position: relative; + user-select: none; +} + +#workspace:focus { + outline: none; +} + +#image { + box-shadow: rgba(0, 0, 0, 0.6) 0 0 3em; + max-height: none; + max-width: none; + position: absolute; +} + +#status { + align-items: center; + background: rgba(0, 0, 0, 0.85); + color: white; + display: flex; + font: 16px Monaco, Menlo, Consolas, monospace; + height: 100%; + justify-content: center; + margin: 0; + position: absolute; + width: 100%; + z-index: 1; +} + +#status:empty { + display: none; +} + +#message { + font-weight: bold; + font-size: 26px !important; +} + +#code { + color: #424242; +} \ No newline at end of file diff --git a/css/netlist_style.css b/css/netlist_style.css new file mode 100644 index 0000000..dc2fbba --- /dev/null +++ b/css/netlist_style.css @@ -0,0 +1,277 @@ +/* Google Fonts Import Link */ +@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;500;600;700&display=swap'); +*{ + margin: 0; + padding: 0; + box-sizing: border-box; + font-family: 'Poppins', sans-serif; +} + +.home-section .home-content{ + height: 60px; + display: flex; + align-items: center; +} +.home-section .home-content .bx-menu, +.home-section .home-content .text{ + color: #11101d; + font-size: 35px; +} +.home-section .home-content .bx-menu{ + margin: 0 15px; + cursor: pointer; +} +.home-section .home-content .text{ + font-size: 26px; + font-weight: 600; +} + +.home-section .main { + height: 91%; + width: 100%; +} + +.main .container { + display: flex; + flex-direction: column; + box-sizing: border-box; + padding: 0px; + height: 100%; + width: 100%; + margin: 0px; +} + +.canvas { + padding: 0px; + height: 100%; + width: 100%; + margin: 0px; + + border-width: 3px; + border: inset; + box-shadow: inset 0 -1px 0 rgba( 255, 255, 250, 0.6), + inset 0 -2px 0 rgba( 0, 0, 0, 0.1); +} + +.component { + border-width: 3px; + border: inset; + box-shadow: inset 0 -1px 0 rgba( 255, 255, 250, 0.6), + inset 0 -2px 0 rgba( 0, 0, 0, 0.1); +} + +.sidebar{ + position: fixed; + top: 0; + left: 0; + height: 100%; + width: 260px; + background: #11101d; + z-index: 100; + transition: all 0.5s ease; +} +.sidebar.close{ + width: 78px; +} +.sidebar .logo-details{ + height: 60px; + width: 100%; + display: flex; + align-items: center; +} +.sidebar .logo-details i{ + font-size: 30px; + color: #fff; + height: 50px; + min-width: 78px; + text-align: center; + line-height: 50px; +} +.sidebar .logo-details .logo_name{ + font-size: 22px; + color: #fff; + font-weight: 600; + transition: 0.3s ease; + transition-delay: 0.1s; +} +.sidebar.close .logo-details .logo_name{ + transition-delay: 0s; + opacity: 0; + pointer-events: none; +} +.sidebar .nav-links{ + height: 100%; + padding: 30px 0 150px 0; + overflow: auto; +} +.sidebar.close .nav-links{ + overflow: visible; +} +.sidebar .nav-links::-webkit-scrollbar{ + display: none; +} +.sidebar .nav-links li{ + position: relative; + list-style: none; + transition: all 0.4s ease; +} +.sidebar .nav-links li:hover{ + background: #1d1b31; +} +.sidebar .nav-links li .iocn-link{ + display: flex; + align-items: center; + justify-content: space-between; +} +.sidebar.close .nav-links li .iocn-link{ + display: block +} +.sidebar .nav-links li i{ + height: 50px; + min-width: 78px; + text-align: center; + line-height: 50px; + color: #fff; + font-size: 20px; + cursor: pointer; + transition: all 0.3s ease; +} +.sidebar .nav-links li.showMenu i.arrow{ + transform: rotate(-180deg); +} +.sidebar.close .nav-links i.arrow{ + display: none; +} +.sidebar .nav-links li a{ + display: flex; + align-items: center; + text-decoration: none; +} +.sidebar .nav-links li a .link_name{ + font-size: 18px; + font-weight: 400; + color: #fff; + transition: all 0.4s ease; +} +.sidebar.close .nav-links li a .link_name{ + opacity: 0; + pointer-events: none; +} +.sidebar .nav-links li .sub-menu{ + padding: 6px 6px 14px 80px; + margin-top: -10px; + background: #1d1b31; + display: none; +} +.sidebar .nav-links li.showMenu .sub-menu{ + display: block; +} +.sidebar .nav-links li .sub-menu a{ + color: #fff; + font-size: 15px; + padding: 5px 0; + white-space: nowrap; + opacity: 0.6; + transition: all 0.3s ease; +} +.sidebar .nav-links li .sub-menu a:hover{ + opacity: 1; +} +.sidebar.close .nav-links li .sub-menu{ + position: absolute; + left: 100%; + top: -10px; + margin-top: 0; + padding: 10px 20px; + border-radius: 0 6px 6px 0; + opacity: 0; + display: block; + pointer-events: none; + transition: 0s; +} +.sidebar.close .nav-links li:hover .sub-menu{ + top: 0; + opacity: 1; + pointer-events: auto; + transition: all 0.4s ease; +} +.sidebar .nav-links li .sub-menu .link_name{ + display: none; +} +.sidebar.close .nav-links li .sub-menu .link_name{ + font-size: 18px; + opacity: 1; + display: block; +} +.sidebar .nav-links li .sub-menu.blank{ + opacity: 1; + pointer-events: auto; + padding: 3px 20px 6px 16px; + opacity: 0; + pointer-events: none; +} +.sidebar .nav-links li:hover .sub-menu.blank{ + top: 50%; + transform: translateY(-50%); +} +.sidebar .profile-details{ + position: fixed; + bottom: 0; + width: 260px; + display: flex; + align-items: center; + justify-content: space-between; + background: #1d1b31; + padding: 6px 0; + transition: all 0.5s ease; +} +.sidebar.close .profile-details{ + background: none; +} +.sidebar.close .profile-details{ + width: 78px; +} +.sidebar .profile-details .profile-content{ + display: flex; + align-items: center; +} +.sidebar .profile-details img{ + height: 52px; + width: 52px; + object-fit: cover; + border-radius: 16px; + margin: 0 14px 0 12px; + background: #1d1b31; + transition: all 0.5s ease; +} +.sidebar.close .profile-details img{ + padding: 10px; +} +.sidebar .profile-details .profile_name, +.sidebar .profile-details .job{ + color: #fff; + font-size: 18px; + font-weight: 500; + white-space: nowrap; +} +.sidebar.close .profile-details i, +.sidebar.close .profile-details .profile_name, +.sidebar.close .profile-details .job{ + display: none; +} +.sidebar .profile-details .job{ + font-size: 12px; +} +.home-section{ + position: relative; + background: #E4E9F7; + height: 100vh; + left: 260px; + width: calc(100% - 260px); + transition: all 0.5s ease; +} +.sidebar.close ~ .home-section{ + left: 78px; + width: calc(100% - 78px); +} + diff --git a/css/netlist_tree_style.css b/css/netlist_tree_style.css new file mode 100644 index 0000000..c7692af --- /dev/null +++ b/css/netlist_tree_style.css @@ -0,0 +1,294 @@ +/*------------------------------------- +zTree Style + +version: 3.5.19 +author: Hunter.z +email: hunter.z@263.net +website: http://code.google.com/p/jquerytree/ + +-------------------------------------*/ + +.main .ztree * { + padding:0; + margin:0; + font-size:12px; + font-family: Verdana, Arial, Helvetica, AppleGothic, sans-serif; +} + +.main .ztree { + margin:0; + padding:5px; + width: 100%; + height: 100%; + color:#333 +} +.ztree li{ + padding:0; + margin:0; + list-style:none; + line-height:14px; + text-align:left; + white-space:nowrap; + outline:0 +} +.ztree li ul{ + margin:0; + padding:0 0 0 18px +} +.ztree li ul.line{ + background:url(./img/line_conn.gif) 0 0 repeat-y; +} + +.ztree li a { + padding:1px 3px 0 0; + margin:0; + cursor:pointer; + height:17px; + color:#333; + background-color: transparent; + text-decoration:none; + vertical-align:top; + display: inline-block +} +.ztree li a:hover { + text-decoration:underline +} +.ztree li a.curSelectedNode { + padding-top:0px; + background-color:#FFE6B0; + color:black; + height:16px; + border:1px #FFB951 solid; + opacity:0.8; +} +.ztree li a.curSelectedNode_Edit { + padding-top:0px; + background-color:#FFE6B0; + color:black; + height:16px; + border:1px #FFB951 solid; + opacity:0.8; +} +.ztree li a.tmpTargetNode_inner { + padding-top:0px; + background-color:#316AC5; + color:white; + height:16px; + border:1px #316AC5 solid; + + opacity:0.8; + filter:alpha(opacity=80) +} + +.ztree li a input.rename { + height:14px; + width:80px; + padding:0; + margin:0; + + font-size:12px; + border:1px #7EC4CC solid; + *border:0px +} +.ztree li span { + line-height:16px; + margin-right:2px +} +.ztree li span.button { + line-height:0; + margin:0; + width:16px; + height:16px; + display: inline-block; + vertical-align:middle; + + border:0 none; + cursor: pointer; + outline:none; + + background-color:transparent; + background-repeat:no-repeat; + background-attachment: scroll; + + background-image:url("./img/standard.png"); + *background-image:url("./img/standard.gif") +} + +.ztree li span.button.chk { + width:13px; + height:13px; + margin:0 3px 0 0; + cursor: auto +} + +.ztree li span.button.chk.checkbox_false_full {background-position:0 0} +.ztree li span.button.chk.checkbox_false_full_focus {background-position:0 -14px} +.ztree li span.button.chk.checkbox_false_part {background-position:0 -28px} +.ztree li span.button.chk.checkbox_false_part_focus {background-position:0 -42px} +.ztree li span.button.chk.checkbox_false_disable {background-position:0 -56px} +.ztree li span.button.chk.checkbox_true_full {background-position:-14px 0} +.ztree li span.button.chk.checkbox_true_full_focus {background-position:-14px -14px} +.ztree li span.button.chk.checkbox_true_part {background-position:-14px -28px} +.ztree li span.button.chk.checkbox_true_part_focus {background-position:-14px -42px} +.ztree li span.button.chk.checkbox_true_disable {background-position:-14px -56px} +.ztree li span.button.chk.radio_false_full {background-position:-28px 0} +.ztree li span.button.chk.radio_false_full_focus {background-position:-28px -14px} +.ztree li span.button.chk.radio_false_part {background-position:-28px -28px} +.ztree li span.button.chk.radio_false_part_focus {background-position:-28px -42px} +.ztree li span.button.chk.radio_false_disable {background-position:-28px -56px} +.ztree li span.button.chk.radio_true_full {background-position:-42px 0} +.ztree li span.button.chk.radio_true_full_focus {background-position:-42px -14px} +.ztree li span.button.chk.radio_true_part {background-position:-42px -28px} +.ztree li span.button.chk.radio_true_part_focus {background-position:-42px -42px} +.ztree li span.button.chk.radio_true_disable {background-position:-42px -56px} + +.ztree li span.button.switch { + width:18px; + height:18px +} +.ztree li span.button.root_open{background-position:-92px -54px} +.ztree li span.button.root_close{background-position:-74px -54px} +.ztree li span.button.roots_open{background-position:-92px 0} +.ztree li span.button.roots_close{background-position:-74px 0} +.ztree li span.button.center_open{background-position:-92px -18px} +.ztree li span.button.center_close{background-position:-74px -18px} +.ztree li span.button.bottom_open{background-position:-92px -36px} +.ztree li span.button.bottom_close{background-position:-74px -36px} +.ztree li span.button.noline_open{background-position:-92px -72px} +.ztree li span.button.noline_close{background-position:-74px -72px} +.ztree li span.button.root_docu{background:none;} +.ztree li span.button.roots_docu{background-position:-56px 0} +.ztree li span.button.center_docu{background-position:-56px -18px} +.ztree li span.button.bottom_docu{background-position:-56px -36px} +.ztree li span.button.noline_docu{background:none;} + +.ztree li span.button.ico_open{ + margin-right:2px; + background-position:-110px -16px; + vertical-align:top; + *vertical-align:middle +} +.ztree li span.button.ico_close{ + margin-right:2px; + background-position:-110px 0; + vertical-align:top; + *vertical-align:middle +} +.ztree li span.button.ico_docu{ + margin-right:2px; + background-position:-110px -32px; + vertical-align:top; + *vertical-align:middle +} +.ztree li span.button.edit { + margin-right:2px; + background-position:-110px -48px; + vertical-align:top; + *vertical-align:middle +} +.ztree li span.button.remove { + margin-right:2px; + background-position:-110px -64px; + vertical-align:top; + *vertical-align:middle +} + +.ztree li span.button.ico_loading{ + margin-right:2px; + background:url(./img/loading.gif) no-repeat scroll 0 0 transparent; + vertical-align:top; + *vertical-align:middle +} + +ul.tmpTargetzTree { + background-color:#FFE6B0; + opacity:0.8; + filter:alpha(opacity=80) +} + +span.tmpzTreeMove_arrow { + width:16px; + height:16px; + display: inline-block; + padding:0; + margin:2px 0 0 1px; + border:0 none; + position:absolute; + + background-color:transparent; + background-repeat:no-repeat; + background-attachment: scroll; + + background-position:-110px -80px; + background-image:url("./img/standard.png"); + *background-image:url("./img/standard.gif") +} + +.ztree li span.button.cells_ico_docu{ + margin-right:2px; + background: url(./img/icon/cells.png) no-repeat scroll 0 0 transparent; + vertical-align:top; *vertical-align:middle +} + +.ztree li span.button.port_ico_docu{ + margin-right:2px; + background: url(./img/icon/port.png) no-repeat scroll 0 0 transparent; + vertical-align:top; *vertical-align:middle +} + +.ztree li span.button.main_ico_docu{ + margin-right:2px; + background: url(./img/icon/main.png) no-repeat scroll 0 0 transparent; + vertical-align:top; *vertical-align:middle +} + +ul.ztree.zTreeDragUL { + margin:0; + padding:0; + position:absolute; + width:auto; + height:auto; + overflow:hidden; + background-color:#cfcfcf; + border:1px #00B83F dotted; + opacity:0.8; + filter:alpha(opacity=80) +} +.zTreeMask { + z-index:10000; + background-color:#cfcfcf; + opacity:0.0; + filter:alpha(opacity=0); + position:absolute +} + +ul.ztree { + margin-top: 0px; + border: 1px solid #617775; + background: #f0f6e4; + width: 240px; + height: 650px; + position: relative; + float: left; + resize: horizontal; + overflow: scroll; +} + +ul.log { + border: 1px solid #617775; + background: #f0f6e4; + width:300px; + height:170px; + overflow: hidden; +} +ul.log.small { + height:45px; +} +ul.log li { + color: #666666; + list-style: none; + padding-left: 10px; +} +ul.log li.dark { + background-color: #E3E3E3; +} \ No newline at end of file diff --git a/package.json b/package.json index 0f291e8..f8e8af6 100644 --- a/package.json +++ b/package.json @@ -421,9 +421,27 @@ "title": "%digital-ide.vhdl2vlog.title%", "category": "Digital-IDE", "icon": { - "light": "images/svg/light/translate.svg", - "dark": "images/svg/dark/translate.svg" - } + "light": "images/svg/light/translate.svg", + "dark": "images/svg/dark/translate.svg" + } + }, + { + "command": "digital-ide.fsm.show", + "icon": { + "light": "images/svg/light/fsm.svg", + "dark": "images/svg/dark/fsm.svg" + }, + "category": "Digital-IDE", + "title": "%digital-ide.fsm.show.title%" + }, + { + "command": "digital-ide.netlist.show", + "icon": { + "light": "images/svg/light/netlist.svg", + "dark": "images/svg/dark/netlist.svg" + }, + "category": "Digital-IDE", + "title": "%digital-ide.netlist.show.title%" } ], "menus": { @@ -451,7 +469,7 @@ "when": "view == digital-ide-treeView-arch && viewItem == file" }, { - "command": "digital-ide.netlist", + "command": "digital-ide.netlist.show", "group": "inline@3", "when": "view == digital-ide-treeView-arch && viewItem == file" }, @@ -477,47 +495,104 @@ "command": "digital-ide.tool.icarus.simulateFile", "group": "navigation@1" }, + { + "when": "editorLangId == verilog || editorLangId == systemverilog || editorLangId == vhdl", + "command": "digital-ide.fsm.show", + "group": "navigation@2" + }, + { + "when": "editorLangId == verilog || editorLangId == systemverilog || editorLangId == vhdl", + "command": "digital-ide.netlist.show", + "group": "navigation@3" + }, { "when": "editorLangId == verilog || editorLangId == systemverilog || editorLangId == vhdl", "command": "digital-ide.hdlDoc.showWebview", "group": "navigation@4" }, { - "when": "resourceLangId == vhdl", - "command": "digital-ide.vhdl2vlog", - "group": "navigation@5" - } + "when": "resourceLangId == vhdl", + "command": "digital-ide.vhdl2vlog", + "group": "navigation@5" + } ], - "editor/context": [ + "editor/context": [ + { + "when": "editorLangId == verilog || editorLangId == systemverilog || editorLangId == vhdl", + "command": "digital-ide.pl.setSrcTop", + "group": "navigation@1" + }, + { + "when": "editorLangId == verilog || editorLangId == systemverilog || editorLangId == vhdl", + "command": "digital-ide.pl.setSimTop", + "group": "navigation@2" + }, + { + "when": "editorLangId == verilog || editorLangId == systemverilog || editorLangId == vhdl", + "command": "digital-ide.tool.instance", + "group": "navigation@3" + }, + { + "when": "editorLangId == verilog || editorLangId == systemverilog || editorLangId == vhdl", + "command": "digital-ide.tool.testbench", + "group": "navigation@4" + }, + { + "when": "editorLangId == verilog || editorLangId == systemverilog || editorLangId == vhdl", + "command": "digital-ide.tool.icarus.simulateFile", + "group": "navigation@5" + }, + { + "when": "resourceLangId == verilog || resourceLangId == systemverilog || resourceLangId == vhdl", + "command": "digital-ide.netlist.show", + "group": "navigation@6" + }, { - "when": "editorLangId == verilog || editorLangId == systemverilog || editorLangId == vhdl", + "when": "resourceLangId == verilog || resourceLangId == systemverilog || resourceLangId == vhdl", + "command": "digital-ide.fsm.show", + "group": "navigation@7" + }, + { + "when": "resourceLangId == vhdl", + "command": "digital-ide.vhdl2vlog", + "group": "navigation@8" + } + ], + "explorer/context": [ + { + "when": "resourceLangId == verilog || resourceLangId == systemverilog || resourceLangId == vhdl", "command": "digital-ide.pl.setSrcTop", - "group": "navigation@1" + "group": "navigation@5" }, { - "when": "editorLangId == verilog || editorLangId == systemverilog || editorLangId == vhdl", + "when": "resourceLangId == verilog || resourceLangId == systemverilog || resourceLangId == vhdl", "command": "digital-ide.pl.setSimTop", - "group": "navigation@2" - }, - { - "when": "editorLangId == verilog || editorLangId == systemverilog || editorLangId == vhdl", - "command": "digital-ide.tool.instance", - "group": "navigation@3" + "group": "navigation@6" }, { "when": "editorLangId == verilog || editorLangId == systemverilog || editorLangId == vhdl", "command": "digital-ide.tool.testbench", - "group": "navigation@4" + "group": "navigation@7" }, { - "when": "editorLangId == verilog || editorLangId == systemverilog || editorLangId == vhdl", - "command": "digital-ide.tool.icarus.simulateFile", - "group": "navigation@5" + "when": "resourceLangId == verilog || resourceLangId == systemverilog || resourceLangId == vhdl", + "command": "digital-ide.tool.instance", + "group": "navigation@8" + }, + { + "when": "resourceLangId == verilog || resourceLangId == systemverilog || resourceLangId == vhdl", + "command": "digital-ide.netlist.show", + "group": "navigation@9" + }, + { + "when": "resourceLangId == verilog || resourceLangId == systemverilog || resourceLangId == vhdl", + "command": "digital-ide.fsm.show", + "group": "navigation@10" }, { "when": "resourceLangId == vhdl", "command": "digital-ide.vhdl2vlog", - "group": "navigation@8" + "group": "navigation@11" } ] }, diff --git a/package.nls.json b/package.nls.json index 173404b..4151a78 100644 --- a/package.nls.json +++ b/package.nls.json @@ -38,5 +38,7 @@ "digital-ide.fsm.title": "finite state machine", "digital-ide.lsp.tool.insertTextToUri.title": "insert text to uri", "digital-ide.lsp.tool.transformOldPropertyFile.title": "transform configure file from previous version to new version", - "digital-ide.vhdl2vlog.title": "translate vhdl code to verilog code" + "digital-ide.vhdl2vlog.title": "translate vhdl code to verilog code", + "digital-ide.fsm.show.title": "show FSM graph of current file", + "digital-ide.netlist.show.title": "show netlist of current file" } \ No newline at end of file diff --git a/package.nls.zh-cn.json b/package.nls.zh-cn.json index 8563650..2c31c65 100644 --- a/package.nls.zh-cn.json +++ b/package.nls.zh-cn.json @@ -38,5 +38,7 @@ "digital-ide.fsm.title": "有限状态机", "digital-ide.lsp.tool.insertTextToUri.title": "插入文本uri", "digital-ide.lsp.tool.transformOldPropertyFile.title": "转换配置文件从先前版本新版本", - "digital-ide.vhdl2vlog.title": "vhdl代码翻译为verilog代码" + "digital-ide.vhdl2vlog.title": "vhdl代码翻译为verilog代码", + "digital-ide.fsm.show.title": "显示当前文件的FSM图", + "digital-ide.netlist.show.title": "显示当前文件的netlist" } \ No newline at end of file diff --git a/package.nls.zh-tw.json b/package.nls.zh-tw.json index 4a10f5d..a690d0d 100644 --- a/package.nls.zh-tw.json +++ b/package.nls.zh-tw.json @@ -38,5 +38,7 @@ "digital-ide.fsm.title": "有限狀態機", "digital-ide.lsp.tool.insertTextToUri.title": "插入文本uri", "digital-ide.lsp.tool.transformOldPropertyFile.title": "轉換配置文件從先前版本新版本", - "digital-ide.vhdl2vlog.title": "vhdl代碼翻譯为verilog代碼" + "digital-ide.vhdl2vlog.title": "vhdl代碼翻譯為verilog代碼", + "digital-ide.fsm.show.title": "顯示當前文件的FSM圖", + "digital-ide.netlist.show.title": "顯示當前文件的netlist" } \ No newline at end of file diff --git a/resources/fsm/index.d.ts b/resources/fsm/index.d.ts new file mode 100644 index 0000000..fa77cc5 --- /dev/null +++ b/resources/fsm/index.d.ts @@ -0,0 +1,10 @@ +import type * as vscode from 'vscode'; + +declare module FSM { + export class FsmViewer { + constructor(context: vscode.ExtensionContext); + public open(uri: vscode.Uri); + } +} + +export = FSM; \ No newline at end of file diff --git a/resources/fsm/index.js b/resources/fsm/index.js new file mode 100644 index 0000000..153b3f1 --- /dev/null +++ b/resources/fsm/index.js @@ -0,0 +1,216 @@ +const fs = require("fs"); +const fspath = require("path"); +const vscode = require("vscode"); +const parse = require("./utils/fsm_parser"); + +function getLanguageId(path) { + let vhdlExtensions = [".vhd",".vhdl",".vho",".vht"]; + let vlogExtensions = [".v",".V",".vh",".vl"]; + let svlogExtensions = [".sv",".SV"]; + let value = fspath.extname(path); + if (vlogExtensions.includes(value)) { + return 'verilog'; + } + else if (svlogExtensions.includes(value)) { + return 'systemverilog'; + } + else if (vhdlExtensions.includes(value)) { + return 'vhdl'; + } + return null; +} + +class FsmViewer { + /** + * + * @param {vscode.ExtensionContext} context + */ + constructor(context) { + this.panel = undefined; + this.sources = []; + this.context = context; + this.rootPath = context.extensionPath.replace(/\\/g, '/'); + } + + /** + * CN: 打开FSM图表的 webview 网页 + * @param {*} uri 指定所需转换为图表的文件uri信息 + */ + open(uri) { + this.current_uri = uri; + const docPath = uri.fsPath.replace(/\\/g, '/'); + if (this.panel == undefined) { + this.create(); + } + this.send(docPath); + } + + async create() { + // Create panel + this.panel = vscode.window.createWebviewPanel( + 'state_machine_viewer', + 'State machine viewer', + vscode.ViewColumn.Two, + { + enableScripts: true + } + ); + this.panel.onDidDispose(() => { + // When the panel is closed, cancel any future updates to the webview content + this.panel = undefined; + }, null, this.context.subscriptions); + // Handle messages from the webview + this.panel.webview.onDidReceiveMessage((message) => { + switch (message.command) { + case 'export': + this.export_as(message.text); + return; + case 'go_to_state': + this.go_to_state(message.stm_index, message.state); + return; + case 'go_to_condition': + this.go_to_condition(message.stm_index, message.transition, message.condition); + return; + } + }, undefined, this.context.subscriptions); + let previewHtml = this.getWebviewContent(this.context); + this.panel.webview.html = previewHtml; + } + + async send(path) { + let languageId = getLanguageId(path); + let content = fs.readFileSync(path, "utf-8"); + let state_machines = await parse(languageId, content); + this.state_machines = state_machines; + this.panel.webview.postMessage({ + command: "update", + svg: state_machines.svg, + stms: state_machines.stm + }); + } + + go_to_state(stm_index, state) { + if (this.state_machines === undefined) { + return; + } + let states = this.state_machines.stm[stm_index].states; + let state_stm; + for (let i = 0; i < states.length; ++i) { + if (states[i].name.replace(/\"/g, '').replace(/\'/g, '') === state) { + state_stm = states[i]; + } + } + if (state_stm !== undefined) { + let start_position = state_stm.start_position; + let end_position = state_stm.end_position; + let pos_1 = new vscode.Position(start_position[0], start_position[1]); + let pos_2 = new vscode.Position(end_position[0], end_position[1]); + vscode.workspace.openTextDocument(this.current_uri).then(doc => { + vscode.window.showTextDocument(doc, vscode.ViewColumn.One).then(editor => { + // Line added - by having a selection at the same position twice, the cursor jumps there + editor.selections = [new vscode.Selection(pos_1, pos_2)]; + // And the visible range jumps there too + var range = new vscode.Range(pos_1, pos_2); + editor.revealRange(range); + }); + }); + } + } + + go_to_condition(stm_index, transition, condition) { + let normalized_condition = this.normalize_string(condition); + let state_origen = transition[0]; + let state_destination = transition[1]; + if (this.state_machines === undefined) { + return; + } + let states = this.state_machines.stm[stm_index].states; + let transition_match; + //Search state + for (let i = 0; i < states.length; ++i) { + if (states[i].name.replace(/\"/g, '').replace(/\'/g, '') === state_origen) { + let transitions = states[i].transitions; + //Search condition + for (let j = 0; j < transitions.length; ++j) { + let normalized_condition_state = this.normalize_string(transitions[j].condition); + if (transitions[j].destination.replace(/\"/g, '').replace(/\'/g, '') === state_destination + && normalized_condition_state === normalized_condition) { + transition_match = transitions[j]; + } + } + } + } + if (transition_match !== undefined) { + if (transition_match.start_position === undefined || transition_match.end_position === undefined) { + return; + } + let start_position = transition_match.start_position; + let end_position = transition_match.end_position; + let pos_1 = new vscode.Position(start_position[0], start_position[1]); + let pos_2 = new vscode.Position(end_position[0], end_position[1]); + vscode.workspace.openTextDocument(this.current_uri).then(doc => { + vscode.window.showTextDocument(doc, vscode.ViewColumn.One).then(editor => { + // Line added - by having a selection at the same position twice, the cursor jumps there + editor.selections = [new vscode.Selection(pos_1, pos_2)]; + // And the visible range jumps there too + var range = new vscode.Range(pos_1, pos_2); + editor.revealRange(range); + }); + }); + } + } + + export_as(type) { + if (type === "svg") { + let filter = { 'svg': ['svg'] }; + vscode.window.showSaveDialog({ filters: filter }).then(fileInfos => { + if ((fileInfos === null || fileInfos === void 0 ? void 0 : fileInfos.path) !== undefined) { + let path_full = this.normalize_path(fileInfos === null || fileInfos === void 0 ? void 0 : fileInfos.path); + let dir_name = fspath.dirname(path_full); + let file_name = fspath.basename(path_full).split('.')[0]; + for (let i = 0; i < this.state_machines.svg.length; ++i) { + let custom_path = `${dir_name}${fspath.sep}${file_name}_${i}.svg`; + fs.writeFileSync(custom_path, this.state_machines.svg[i].svg); + } + vscode.window.showInformationMessage('Documentation has been saved.'); + } + }); + } + else { + console.log("Error export documentation."); + } + } + + normalize_path(path) { + if (path[0] === '/' && require('os').platform() === 'win32') { + return path.substring(1); + } + else { + return path; + } + } + + normalize_string(str) { + let n_string = str.replace(/[^ -~]+/g, ''); + n_string = n_string.replace(/ /g, ''); + n_string = n_string.replace(/\n/g, ''); + return n_string; + } + + getWebviewContent() { + const resource_path = fspath.join(this.rootPath, 'resources', 'fsm', 'fsm_viewer.html'); + const dir_path = fspath.dirname(resource_path); + + let html = fs.readFileSync(resource_path, 'utf-8'); + html = html.replace(/( { + const absLocalPath = fspath.resolve(dir_path, $2); + const webviewUri = this.panel.webview.asWebviewUri(vscode.Uri.file(absLocalPath)); + const replaceHref = $1 + webviewUri.toString() + '"'; + return replaceHref; + }); + return html; + } +} +module.exports = { + FsmViewer +}; diff --git a/resources/fsm/utils/fsm_parser.js b/resources/fsm/utils/fsm_parser.js new file mode 100644 index 0000000..8c428a9 --- /dev/null +++ b/resources/fsm/utils/fsm_parser.js @@ -0,0 +1,1958 @@ +const path = require('path'); + +async function get_svg_sm(language, code, comment_symbol) { + if (language === "vhdl") { + let parser = new Paser_fsm_vhdl(comment_symbol); + await parser.init(); + let stm = await parser.get_svg_sm(code); + return stm; + } + else if (language === "verilog" || language === "systemverilog") { + let parser = new Paser_fsm_verilog(comment_symbol); + await parser.init(); + let stm = await parser.get_svg_sm(code); + return stm; + } +} +module.exports = get_svg_sm; + +class Ts_base_parser { + constructor() { + this.command_end_regex = /@end/gm; + } + + search_multiple_in_tree(element, matching_title) { + var arr_match = []; + function recursive_searchTree(element, matching_title) { + let type = element.type; + if (type === matching_title) { + arr_match.push(element); + } else if (element !== null) { + var i; + var result = null; + for (i = 0; result === null && i < element.childCount; i++) { + result = recursive_searchTree(element.child(i), matching_title); + } + return result; + } + return null; + } + recursive_searchTree(element, matching_title); + return arr_match; + } + + search_in_tree(element, matching_title) { + var match = undefined; + function recursive_searchTree(element, matching_title) { + let type = element.type; + if (type === matching_title) { + match = element; + } else if (element !== null) { + var i; + var result = null; + for (i = 0; result === null && i < element.childCount; i++) { + result = recursive_searchTree(element.child(i), matching_title); + if (result !== null) { + break; + } + } + return result; + } + return null; + } + recursive_searchTree(element, matching_title); + return match; + } + + get_item_multiple_from_childs(p, type) { + if (p === undefined) { + return []; + } + let items = []; + let cursor = p.walk(); + cursor.gotoFirstChild(); + do { + if (cursor.nodeType === type) { + let item = cursor.currentNode(); + items.push(item); + } + } + while (cursor.gotoNextSibling() === true); + return items; + } + + get_item_from_childs(p, type) { + if (p === undefined) { + return undefined; + } + let item = undefined; + let cursor = p.walk(); + let break_p = false; + cursor.gotoFirstChild(); + do { + if (cursor.nodeType === type) { + item = cursor.currentNode(); + break_p = true; + } + } + while (cursor.gotoNextSibling() === true && break_p === false); + return item; + } + + get_item_from_childs_last(p, type) { + if (p === undefined) { + return undefined; + } + let item = undefined; + let cursor = p.walk(); + cursor.gotoFirstChild(); + do { + if (cursor.nodeType === type) { + item = cursor.currentNode(); + } + } + while (cursor.gotoNextSibling() === true); + return item; + } + + parse_doxy(dic, file_type) { + if (dic.info === undefined) { + dic.info = {}; + } + // remove any spaces between linefeed and trim the string + let desc_root = dic[file_type]; + // always remove carriage return + desc_root.description = desc_root.description.replace(/\r/gm, ""); + // look for single line commands + const single_line_regex = /^\s*[@\\](file|date|title|custom_section_begin|custom_section_end)\s.+$/gm; + // get all matches for single line attributes + let matches_array = Array.from(desc_root.description.matchAll(single_line_regex)); + // add a new property for the newly found matches + if (matches_array.length > 0) { + dic.info = {}; + // append found matches + for (let index = 0; index < matches_array.length; index++) { + dic.info[matches_array[index][1]] = matches_array[index][0].replace(/^\s*[@\\](file|date|title|custom_section_begin|custom_section_end)/, "").trim(); + } + // clean up the description field + desc_root.description = desc_root.description.replace(single_line_regex, ""); + } + desc_root.description = desc_root.description.replace(/@copyright/gm, "\n@copyright"); + desc_root.description = desc_root.description.replace(/@author/gm, "\n@author"); + desc_root.description = desc_root.description.replace(/@version/gm, "\n@version"); + desc_root.description = desc_root.description.replace(/@project/gm, "\n@project"); + desc_root.description = desc_root.description.replace(/@brief/gm, "\n@brief"); + desc_root.description = desc_root.description.replace(/@details/gm, "\n@details"); + + Doxygen_parser.parse_copyright(dic, desc_root); + Doxygen_parser.parse_author(dic, desc_root); + Doxygen_parser.parse_version(dic, desc_root); + Doxygen_parser.parse_project(dic, desc_root); + Doxygen_parser.parse_brief(dic, desc_root); + Doxygen_parser.parse_details(dic, desc_root); + return dic; + } + + normalize_description(description) { + return description; + let desc_inst = description.replace(/\n\s*\n/g, '
'); + desc_inst = desc_inst.replace(/\n/g, ''); + return desc_inst; + } + + get_comment(comment) { + if (comment === undefined) { + return ''; + } + let txt_comment = comment.slice(2); + if (this.comment_symbol === '') { + return txt_comment; + } + else if (txt_comment[0] === this.comment_symbol) { + return txt_comment.slice(1); + } + return ''; + } + + get_comment_with_break(comment) { + if (comment === undefined) { + return ''; + } + let txt_comment = comment.slice(2); + if (this.comment_symbol === '') { + return txt_comment + '\n'; + } + else if (txt_comment[0] === this.comment_symbol) { + return txt_comment.slice(1) + '\n'; + } + return ''; + } + + set_symbol(symbol) { + if (symbol === undefined) { + this.comment_symbol = ''; + } + else { + this.comment_symbol = symbol; + } + } + + parse_mermaid(dic, file_type) { + // the command regex + const mermaid_regex = /^\s*[@\\]mermaid\s*.*[@\\]end/gms; + // a variable to hold if a mermaid is found and currently opened + let mermaid_open = false; + // easy access to the entity description + let desc_root = dic[file_type]; + // hold the mermaid data + let mermaid = ""; + // always remove carriage return + desc_root.description = desc_root.description.replace(/\r/gm, ""); + let match = desc_root.description.match(mermaid_regex) + if (match !== undefined && match !== null && match.length > 0) { + desc_root.description = desc_root.description.replace(match[0], ""); + mermaid = match[0].replace(/[@\\]mermaid/gm, "") + mermaid = mermaid.replace(/[@\\]end/gm, "") + desc_root.description = desc_root.description.replace("\n\n", "") + dic[file_type]['description'] = desc_root.description + dic[file_type]['mermaid'] = mermaid; + } + return dic; + } + + parse_ports_group(dic) { + + const group_regex = /^\s*[@\\]portgroup\s.*$/gm; + let ports = dic.ports; + // hold the current group name + let group_name = ""; + // flag to check if a group is open + let group_open = false; + // loop along all ports + for (let i = 0; i < ports.length; i++) { + let group = ports[i].description.match(group_regex); + // look for a new group name + if (group !== null && group.length > 0) { + group_open = true; + ports[i].description = ports[i].description.replace(/^\s*[@\\]portgroup\s/gm, ""); + group_name = ports[i].description.match(/^\s*\w+/)[0]; + ports[i].description = ports[i].description.replace(group_name, ""); + } + + ports[i].group = group_name; + } + dic.ports = ports; + return dic; + } + parse_virtual_bus(dic) { + const virtual_bus_regex_followed = /^\s*[@\\]virtualbus\s.*\n\n/gms; + const virtual_bus_regex_not_followed = /^\s*[@\\]virtualbus\s.*/ + const virtual_bus_dir_regex = /^\s*[@\\]dir\s/gm; + const virtual_bus_keep_regex = /^\s*[@\\]keepports\s/gm + // the base struct is used to reset the virtual_bus_struct when needed + const virtual_bus_base_struct = { + "name": "", + "description": "", + "direction": "in", + "keep_ports": false, + "ports": [] + } + let ports = dic.ports; + // hold the indexes that gets removed from the ports list + let ports_to_remove = []; + // holds the current virtual bus and gets filled when a new one is encountered + let virtual_bus_struct = clone(virtual_bus_base_struct); + // holds all the found virtual buses found so for + let virtual_bus_array = []; + // indicates if a virtual bus is found in a port or not + let virtual_bus_open = false; + // loop along all ports + for (let i = 0; i < ports.length; i++) { + // strip description from \r if present to deal with \n exclusively + ports[i].description = ports[i].description.replace(/\r/gm, ""); + + let virtual_bus = ports[i].description.match(virtual_bus_regex_followed); + + if (virtual_bus === null) { + virtual_bus = ports[i].description.match(virtual_bus_regex_not_followed); + } + + if (virtual_bus !== null) { + if (virtual_bus_open) { + // new virtual bus is found and another one was still open, add the old one to the array and clean it + virtual_bus_array.push(clone(virtual_bus_struct)); + virtual_bus_struct = clone(virtual_bus_base_struct); + } + let virtual_bus_description = virtual_bus[0]; + // clean the port description from the found virtual bus command + dic.ports[i].description = ports[i].description.replace(virtual_bus_regex_not_followed, ""); + dic.ports[i].description = ports[i].description.replace(/\n\n/, ""); + dic.ports[i].description = ports[i].description.replace(this.command_end_regex, ""); + // strip virtual bus description from the command part + virtual_bus_description = virtual_bus_description.replace(/^\s*[@\\]virtualbus\s/, ""); + // construct the name and description of virtual bus + let virtual_bus_name = virtual_bus_description.match(/^\s*\w+/); + if (virtual_bus_name !== null) { + virtual_bus_name = virtual_bus_description.match(/^\s*\w+/)[0]; + } + else { + virtual_bus_name = ""; + } + virtual_bus_description = virtual_bus_description.replace(virtual_bus_name, ""); + let virtual_bus_dir = virtual_bus_description.match(virtual_bus_dir_regex); + // look for optional direction + if (virtual_bus_dir !== null && virtual_bus_dir.length > 0) { + virtual_bus_description = virtual_bus_description.replace(virtual_bus_dir[0], ""); + virtual_bus_description = virtual_bus_description.replace(/\n\n/, ""); + virtual_bus_dir = virtual_bus_description.match(/^\s*(out|in)/gm); + if (virtual_bus_dir !== null) { + virtual_bus_description = virtual_bus_description.replace(virtual_bus_dir[0], ""); + virtual_bus_struct.direction = virtual_bus_dir[0].trim(); + } else { + virtual_bus_struct.direction = "in"; + } + } + // look for optional flag to keep in signals in table + let keep_ports = virtual_bus_description.match(virtual_bus_keep_regex); + // look for optional direction + if (keep_ports !== null && keep_ports.length > 0) { + virtual_bus_description = virtual_bus_description.replace(keep_ports[0], ""); + virtual_bus_struct.keep_ports = true; + } + // update the virtual bus struct with the newly found fields + virtual_bus_struct.name = virtual_bus_name; + virtual_bus_struct.description = virtual_bus_description; + // keep the virtual bus opened to add incoming ports + virtual_bus_open = true; + } + + if (virtual_bus_open) { + // copy the port to the newly created virtualbus + virtual_bus_struct.ports.push(clone(ports[i])); + // append current index to be removed + ports_to_remove.push(clone(i)) + } + // remove any added \n to description + dic.ports[i].description = ports[i].description.replace(/\n/, ""); + + if (ports[i].description.match(this.command_end_regex) !== null) { + if (virtual_bus_open) { + virtual_bus_open = false; + for (let i = 0; i < virtual_bus_struct.ports.length; i++) { + virtual_bus_struct.ports[i].description = virtual_bus_struct.ports[i].description.replace(this.command_end_regex, ""); + } + virtual_bus_array.push(clone(virtual_bus_struct)); + virtual_bus_struct = clone(virtual_bus_base_struct); + } + } + } + if (virtual_bus_array.length > 0) { + // append the vbus to the json + dic.virtual_buses = virtual_bus_array; + // remove ports from the list + for (let index = 0; index < ports_to_remove.length; index++) { + const element = ports_to_remove[index]; + dic.ports.splice(element - index, 1) + } + for (let index = 0; index < virtual_bus_array.length; index++) { + const element = virtual_bus_array[index]; + dic.ports.push({ + "name": element.name, + "type": "virtual_bus", + "line": -1, + "direction": element.direction, + "default_value": "", + "description": element.description, + "group": "" + }); + } + } + return dic; + } + +} + +class Parser_fsm_base extends Ts_base_parser { + constructor() { + super(); + } + + check_empty_states_transitions(states) { + let check = true; + for (let i = 0; i < states.length; ++i) { + if (states[i].transitions.length !== 0) { + check = false; + } + } + return check; + } + + check_stm(stm) { + let check = false; + let states = stm.states; + for (let i = 0; i < states.length; ++i) { + let transitions = states[i].transitions; + if (transitions.length > 0) { + return true; + } + } + return check; + } + + json_to_svg(stm_json) { + let stmcat = this.get_smcat(stm_json); + const smcat = require("./state-machine-cat"); + let svg; + try { + console.error = function () { }; + svg = smcat.render(stmcat, { outputType: "svg" }); + } + // eslint-disable-next-line no-empty + catch (e) { } + return svg; + } + + get_smcat(stm_json) { + let sm_states = ''; + let sm_transitions = ''; + + let states = stm_json.states; + let state_names = []; + for (let i = 0; i < states.length; ++i) { + if (states[i].transitions.length === 0) { + state_names.push(states[i].name); + } + } + let emptys = []; + for (let i = 0; i < state_names.length; ++i) { + let empty = true; + for (let j = 0; j < states.length; ++j) { + for (let m = 0; m < states[j].transitions.length; ++m) { + if (states[j].transitions[m].destination === state_names[i]) { + empty = false; + } + } + } + if (empty === true) { + emptys.push(state_names[i]); + } + } + + let gosth = []; + state_names = []; + for (let i = 0; i < states.length; ++i) { + state_names.push(states[i].name); + } + for (let j = 0; j < states.length; ++j) { + for (let m = 0; m < states[j].transitions.length; ++m) { + if (state_names.includes(states[j].transitions[m].destination) === false) { + let element = { 'name': states[j].transitions[m].destination, 'transitions': [] }; + stm_json.states.push(element); + gosth.push(states[j].transitions[m].destination); + } + } + } + let num_states = stm_json.states.length; + stm_json.states.forEach(function (i_state, i) { + let transitions = i_state.transitions; + let state_name = i_state.name; + if (emptys.includes(state_name) === true || gosth.includes(state_name) === true) { + sm_states += `${state_name} [color="red"]`; + } + else { + sm_states += `${state_name}`; + } + if (i !== num_states - 1) { + sm_states += ','; + } + else { + sm_states += ';\n'; + } + if (gosth.includes(state_name) !== true) { + transitions.forEach(function (i_transition, j) { + if (gosth.includes(i_transition.destination) === true) { + sm_transitions += + `${state_name} => ${i_transition.destination} [color="red"] : ${i_transition.condition};\n`; + } + else { + sm_transitions += `${state_name} => ${i_transition.destination} : ${i_transition.condition};\n`; + } + }); + } + }); + let str_stm = stm_json.state_variable_name + "{\n" + sm_states + sm_transitions + "\n};"; + return str_stm; + } + + only_unique(value, index, self) { + return self.indexOf(value) === index; + } + + get_comment(comment) { + if (comment === undefined) { + return ''; + } + let txt_comment = comment.slice(2); + if (this.comment_symbol === '') { + return txt_comment + '\n'; + } + else if (txt_comment[0] === this.comment_symbol) { + return txt_comment.slice(1).trim() + '\n'; + } + return ''; + } + + set_symbol(symbol) { + if (symbol === undefined) { + this.comment_symbol = ''; + } + else { + this.comment_symbol = symbol; + } + } + +} + +class Paser_fsm_verilog extends Parser_fsm_base { + constructor(comment_symbol, parser) { + super(); + this.set_symbol(comment_symbol); + if (parser !== undefined) { + this.parser = parser; + this.loaded_wasm = true; + } + } + + set_comment_symbol(comment_symbol) { + this.set_symbol(comment_symbol); + } + + async init() { + if (this.loaded_wasm !== true) { + try { + const Parser = require('./tree-sitter'); + await Parser.init(); + this.parser = new Parser(); + let Lang = await Parser.Language.load(path.join( + path.dirname(__dirname), + path.sep + "resources" + + path.sep + "tree-sitter" + + path.sep + "tree-sitter-verilog.wasm")); + this.parser.setLanguage(Lang); + this.loaded_wasm = true; + } + catch (e) { } + } + } + + async get_svg_sm(code, comment_symbol) { + this.set_symbol(comment_symbol); + let process; + try { + const tree = this.parser.parse(code); + process = this.get_process(tree); + } + catch (e) { + return { 'svg': [], 'stm': [] }; + } + let stm = []; + let svg = []; + for (let i = 0; i < process.length; ++i) { + let states; + try { + states = this.get_process_info(process[i]); + } + catch (e) { + states = undefined; + } + if (states !== undefined) { + for (let j = 0; j < states.length; ++j) { + if (this.check_stm(states[j]) === true) { + stm.push(states[j]); + let svg_tmp = this.json_to_svg(states[j]); + let stm_tmp = { + 'svg': svg_tmp, + 'description': states[j].description + }; + svg.push(stm_tmp); + } + } + } + } + return { 'svg': svg, 'stm': stm }; + } + + get_process(tree) { + let process_array = []; + let arch_body = this.get_architecture_body(tree); + let cursor = arch_body.walk(); + let comments = ''; + // Process + cursor.gotoFirstChild(); + do { + if (cursor.nodeType === 'module_or_generate_item') { + cursor.gotoFirstChild(); + do { + if (cursor.nodeType === 'always_construct') { + let process = { + 'code': this.get_deep_process(cursor.currentNode()), + 'comments': comments.trim() + }; + process_array.push(process); + comments = ''; + } + else { + comments = ''; + } + } + while (cursor.gotoNextSibling() !== false); + cursor.gotoParent(); + } + else if (cursor.nodeType === 'comment') { + comments += this.get_comment(cursor.nodeText); + } + else { + comments = ''; + } + } + while (cursor.gotoNextSibling() !== false); + return process_array; + } + + get_deep_process(p) { + let statement = this.get_item_from_childs(p, 'statement'); + let statement_item = this.get_item_from_childs(statement, 'statement_item'); + let procedural_timing_control_statement = + this.get_item_from_childs(statement_item, 'procedural_timing_control_statement'); + if (procedural_timing_control_statement === undefined) { + let seq_block = this.get_item_from_childs(statement_item, 'seq_block'); + return seq_block; + } + let statement_or_null = this.get_item_from_childs(procedural_timing_control_statement, 'statement_or_null'); + let statement_2 = this.get_item_from_childs(statement_or_null, 'statement'); + let statement_item_2 = this.get_item_from_childs(statement_2, 'statement_item'); + let seq_block = this.get_item_from_childs(statement_item_2, 'seq_block'); + if (seq_block === undefined) { + let cond_statement = this.get_item_from_childs(statement_item_2, 'conditional_statement'); + return cond_statement; + } + + return seq_block; + } + + get_architecture_body(p) { + let break_p = false; + let arch_body = undefined; + let cursor = p.walk(); + cursor.gotoFirstChild(); + do { + if (cursor.nodeType === 'module_declaration') { + arch_body = cursor.currentNode(); + break_p = true; + } + } + while (cursor.gotoNextSibling() === true && break_p === false); + return arch_body; + } + + get_process_info(proc) { + let stms = []; + + let p = proc.code; + let name = this.get_process_label(p); + let case_statements = this.get_case_process(p); + for (let i = 0; i < case_statements.length; ++i) { + let description = proc.comments; + let p_info = { + 'description': description.replace('fsm_extract', ''), + 'name': '', + 'state_variable_name': '', + 'states': [] + }; + p_info.name = name; + if (case_statements !== undefined && case_statements.length !== 0) { + p_info.state_variable_name = this.get_state_variable_name(case_statements[i]); + p_info.states = this.get_states(case_statements[i], p_info.state_variable_name); + let check = this.check_empty_states_transitions(p_info.states); + if (check === true) { + let result = this.force_case_stm(case_statements[i]); + p_info.state_variable_name = result.variable_name; + p_info.states = result.states; + } + stms.push(p_info); + } + } + return stms; + } + + ////////////////////////////////////////////////////////////////////////////// + // Force + ////////////////////////////////////////////////////////////////////////////// + force_case_stm(p) { + let state_names = this.get_state_names_from_case(p); + let state_name_candidate = this.search_state_variable_candidates(p, state_names); + let states = this.get_states(p, state_name_candidate); + return { 'variable_name': state_name_candidate, 'states': states }; + } + + get_state_names_from_case(p) { + let state_names = []; + let state_names_case = this.search_multiple_in_tree(p, 'case_item_expression'); + for (let i = 0; i < state_names_case.length; ++i) { + state_names.push(state_names_case[i].text); + } + return state_names; + } + + search_state_variable_candidates(p, state_names) { + let candidates = []; + let signals = this.search_multiple_in_tree(p, 'blocking_assignment'); + for (let i = 0; i < signals.length; ++i) { + let rigth = this.get_rigth_simple_waveform_assignment(signals[i]); + if (rigth !== undefined) { + let left = this.get_left_simple_waveform_assignment(signals[i]); + if (state_names.includes(rigth) === true) { + candidates.push(left); + } + } + } + + let variables = this.search_multiple_in_tree(p, 'nonblocking_assignment'); + for (let i = 0; i < variables.length; ++i) { + let rigth = this.get_rigth_simple_variable_assignment(variables[i]); + if (rigth !== undefined) { + let left = this.get_rigth_simple_variable_assignment(variables[i]); + if (state_names.includes(rigth) === true) { + candidates.push(left); + } + } + } + let unique = this.mode(candidates); + return unique; + } + + mode(array) { + if (array.length == 0) + return null; + var mode_map = {}; + var max_el = array[0], max_count = 1; + for (var i = 0; i < array.length; i++) { + var el = array[i]; + if (mode_map[el] == null) + mode_map[el] = 1; + else + mode_map[el]++; + if (mode_map[el] > max_count) { + max_el = el; + max_count = mode_map[el]; + } + } + return max_el; + } + ////////////////////////////////////////////////////////////////////////////// + + get_states(p, state_variable_name) { + let case_items = this.get_item_multiple_from_childs(p, 'case_item'); + let case_state = []; + for (let i = 0; i < case_items.length; ++i) { + let state = { + 'name': '', + 'transitions': [], + 'start_position': [], + 'end_position': [] + }; + let result = this.get_item_from_childs(case_items[i], 'case_item_expression'); + if (result !== undefined && result.text !== 'default') { + state.name = result.text; + state.start_position = [result.startPosition.row, result.startPosition.column]; + state.end_position = [result.endPosition.row, result.endPosition.column]; + state.transitions = this.get_transitions(case_items[i], state_variable_name); + + case_state.push(state); + } + } + return case_state; + } + + get_transitions(p, state_variable_name, metacondition) { + let assign_transitions = []; + let if_transitions = []; + let last_transitions = []; + let transitions = []; + let skip = false; + let last = 0; + + let statement_or_null; + if (p.type !== 'statement_or_null') { + statement_or_null = this.get_item_from_childs(p, 'statement_or_null'); + } + else { + statement_or_null = p.walk().currentNode(); + } + let statement = this.get_item_from_childs(statement_or_null, 'statement'); + let statement_item = this.get_item_from_childs(statement, 'statement_item'); + let seq_block = this.get_item_from_childs(statement_item, 'seq_block'); + let itera_item = []; + if (seq_block === undefined) { + itera_item = [statement_item]; + skip = true; + } + else { + itera_item = this.get_item_multiple_from_childs(seq_block, 'statement_or_null'); + } + for (let i = 0; i < itera_item.length; ++i) { + let statement_item_2 = itera_item[i]; + if (skip === false) { + let statement_2 = this.get_item_from_childs(itera_item[i], 'statement'); + statement_item_2 = this.get_item_from_childs(statement_2, 'statement_item'); + } + //Search if + let type; + let block; + let if_statement = this.get_item_from_childs(statement_item_2, 'conditional_statement'); + if (if_statement === undefined) { + //Search assignment + let assign_statement = this.get_item_from_childs(statement_item_2, 'blocking_assignment'); + if (assign_statement !== undefined) { + type = 'simple_waveform_assignment'; + block = assign_statement; + } + else { + let nonassign_statement = this.get_item_from_childs(statement_item_2, 'nonblocking_assignment'); + if (nonassign_statement !== undefined) { + type = 'simple_waveform_assignment'; + block = nonassign_statement; + } + } + } + else { + type = 'if_statement'; + block = if_statement; + } + + if (type === 'if_statement') { + let tmp_transitions = this.get_if_transitions(block, state_variable_name, metacondition); + if_transitions = if_transitions.concat(tmp_transitions); + last = 0; + } + else if (type === 'simple_waveform_assignment') { + let tmp_transitions = this.get_assignament_transitions(block, state_variable_name, metacondition); + if (tmp_transitions.length !== 0 && tmp_transitions !== undefined) { + assign_transitions = tmp_transitions; + last_transitions = tmp_transitions; + last = 1; + } + } + } + + if (last === 1) { + transitions = last_transitions; + } + else { + transitions = if_transitions.concat(assign_transitions); + } + return transitions; + } + + get_if_transitions(p, state_variable_name, metacondition) { + let transitions = []; + let ifs = this.get_if_elsif_else(p); + //Set else condition + let conditions = []; + let else_condition = ''; + for (let i = 0; i < ifs.length; ++i) { + let condition = ifs[i].condition; + if (condition !== '' && conditions.includes(condition) === false) { + else_condition += `not (${condition})\n`; + } + else { + let tmp_condition = else_condition.slice(0, -1); + //Remove duplicate conditions + let current_conditions = tmp_condition.split('\n'); + let unique = current_conditions.filter(this.only_unique); + let condition_tmp = ''; + for (let i = 0; i < unique.length - 1; ++i) { + condition_tmp += unique[i] + '\n'; + } + condition_tmp += unique[unique.length - 1] + '\n'; + condition = condition_tmp; + ifs[i].condition = condition; + } + conditions.push(condition); + } + + for (let i = 0; i < ifs.length; ++i) { + let transition = this.get_transition(ifs[i], state_variable_name, metacondition); + if (transition !== undefined) { + transitions = transitions.concat(transition); + } + } + return transitions; + } + + get_if_elsif_else(p) { + let ifs = []; + let cursor = p.walk(); + cursor.gotoFirstChild(); + do { + if (cursor.nodeType === 'else') { + let break_p = false; + while (break_p === false && cursor.gotoNextSibling() !== false) { + if (cursor.nodeType === 'statement_or_null') { + let item = this.get_item_from_childs(cursor.currentNode(), 'statement'); + let statement_item = this.get_item_from_childs(item, 'statement_item'); + + let block_item = this.get_item_from_childs(statement_item, 'seq_block'); + if (block_item !== undefined) { + item = this.get_item_from_childs(block_item, 'statement_or_null'); + item = this.get_item_from_childs(item, 'statement'); + statement_item = this.get_item_from_childs(item, 'statement_item'); + } + item = this.get_item_from_childs(statement_item, 'conditional_statement'); + if (item !== undefined) { + let tmp_ifs = this.get_if_elsif_else(item); + ifs = ifs.concat(tmp_ifs); + } + else { + let if_item_else = { + 'condition': '', + 'code': '', + 'start_position': '', + 'end_position': '' + }; + + let blocking_assignment = this.get_item_from_childs(statement_item, 'blocking_assignment'); + if (blocking_assignment !== undefined) { + if (block_item !== undefined) { + if_item_else.code = block_item; + // if_item_else.start_position = start_position; + // if_item_else.end_position = end_position; + } + else { + if_item_else.code = statement_item; + // if_item_else.start_position = start_position; + // if_item_else.end_position = end_position; + } + ifs.push(if_item_else); + } + else { + let nonblocking_assignment = this.get_item_from_childs(statement_item, 'nonblocking_assignment'); + if (nonblocking_assignment !== undefined) { + if (block_item !== undefined) { + if_item_else.code = block_item; + // if_item_else.start_position = start_position; + // if_item_else.end_position = end_position; + } + else { + if_item_else.code = statement_item; + // if_item_else.start_position = start_position; + // if_item_else.end_position = end_position; + } + ifs.push(if_item_else); + } + } + } + } + } + } + else if (cursor.nodeType === 'if') { + let break_p = false; + let if_item = { + 'condition': '', + 'code': '' + }; + while (break_p === false && cursor.gotoNextSibling() !== false) { + if (cursor.nodeType === 'cond_predicate') { + let item = this.get_item_from_childs(cursor.currentNode(), 'expression_or_cond_pattern'); + if (item !== undefined) { + if_item.condition = item.text; + if_item.start_position = item.startPosition; + if_item.end_position = item.endPosition; + } + } + else if (cursor.nodeType === 'statement_or_null') { + let item = this.get_item_from_childs(cursor.currentNode(), 'statement'); + item = this.get_item_from_childs(item, 'statement_item'); + if (this.get_item_from_childs(item, 'seq_block') !== undefined) { + item = this.get_item_from_childs(item, 'seq_block'); + if_item.start_position = item.startPosition; + if_item.end_position = item.endPosition; + // item = this.get_item_from_childs(item, 'statement_or_null'); + // item = this.get_item_from_childs(item, 'statement'); + // item = this.get_item_from_childs(item, 'statement_item'); + } + if_item.code = item; + break_p = true; + ifs.push(if_item); + } + } + } + } + while (cursor.gotoNextSibling() !== false); + return ifs; + } + + get_assignament_transitions(p, state_variable_name, metacondition) { + let transitions = []; + + let tmp_destination = this.check_get_simple_waveform_assignment(p, state_variable_name); + if (tmp_destination !== undefined) { + let s_position = p.startPosition; + let e_position = p.endPosition; + let start_position = [s_position.row, e_position.column - 1]; + let end_position = [e_position.row, e_position.column]; + + let condition = ''; + if (metacondition !== '' && metacondition !== undefined) { + condition = metacondition; + } + + let destination = tmp_destination; + let transition = { + 'condition': condition, + 'destination': destination, + 'start_position': start_position, + 'end_position': end_position + }; + transitions.push(transition); + } + return transitions; + } + + get_transition(p, state_variable_name, metacondition) { + let condition = p.condition; + let tmp_start_position = p.start_position; + let tmp_end_position = p.end_position; + + let start_position = [tmp_start_position.row, tmp_start_position.column]; + let end_position = [tmp_end_position.row, tmp_end_position.column]; + let transitions = this.get_transitions_in_if(p.code, state_variable_name, + condition, start_position, end_position, metacondition); + return transitions; + } + + get_start_position_array(p) { + let tmp_position = p.code.startPosition; + return tmp_position; + } + + get_end_position_array(p) { + let tmp_position = p.code.endPosition; + return tmp_position; + } + + get_transitions_in_if(p, state_variable_name, condition, start_position, end_position, metacondition) { + let last = 0; + let last_transitions = []; + //if transitions + let if_transitions = []; + //assign transitions + let assign_transitions = []; + let transitions = []; + let destination = undefined; + let cursor = p.walk(); + cursor.gotoFirstChild(); + do { + if (cursor.nodeType === 'blocking_assignment' || cursor.nodeType === 'nonblocking_assignment') { + let tmp_destination = this.check_get_simple_waveform_assignment(cursor.currentNode(), state_variable_name); + if (tmp_destination !== undefined) { + destination = tmp_destination; + if (condition !== undefined && destination !== undefined) { + let transition = { + 'condition': '', + 'destination': '', + 'start_position': start_position, + 'end_position': end_position + }; + if (metacondition !== undefined && metacondition !== '') { + condition += `\n${metacondition}`; + let current_conditions = condition.split('\n'); + let unique = current_conditions.filter(this.only_unique); + let condition_tmp = ''; + for (let i = 0; i < unique.length - 1; ++i) { + condition_tmp += unique[i] + '\n'; + } + condition_tmp += unique[unique.length - 1] + '\n'; + condition = condition_tmp; + } + + transition.condition = condition; + transition.destination = destination; + last = 1; + assign_transitions = [transition]; + last_transitions = [transition]; + } + } + } + else if (cursor.nodeType === 'simple_variable_assignment') { + let tmp_destination = this.check_get_simple_variable_assignment(cursor.currentNode(), state_variable_name); + if (tmp_destination !== undefined) { + destination = tmp_destination; + if (condition !== undefined && destination !== undefined) { + let transition = { + 'condition': '', + 'destination': '', + 'start_position': start_position, + 'end_position': end_position + }; + if (metacondition !== undefined && metacondition !== '') { + condition += `\n${metacondition}`; + let current_conditions = condition.split('\n'); + let unique = current_conditions.filter(this.only_unique); + let condition_tmp = ''; + for (let i = 0; i < unique.length - 1; ++i) { + condition_tmp += unique[i] + '\n'; + } + condition_tmp += unique[unique.length - 1] + '\n'; + condition = condition_tmp; + } + + transition.condition = condition; + transition.destination = destination; + last = 1; + assign_transitions = [transition]; + last_transitions = [transition]; + } + } + } + else if (cursor.nodeType === 'conditional_statement') { + last = 0; + let if_transitions_tmp = this.get_if_transitions(cursor.currentNode(), state_variable_name, condition); + if_transitions = if_transitions.concat(if_transitions_tmp); + } + else if (cursor.nodeType === 'statement_or_null') { + last = 0; + + //check assignement + let item = this.get_item_from_childs(cursor.currentNode(), 'statement'); + item = this.get_item_from_childs(item, 'statement_item'); + let item_0 = this.get_item_from_childs(item, 'blocking_assignment'); + let item_1 = this.get_item_from_childs(item, 'nonblocking_assignment'); + let if_item = true; + if (item_0 !== undefined || item_1 !== undefined) { + if_item = false; + } + if (metacondition !== undefined && metacondition !== '') { + condition += `\n${metacondition}`; + let current_conditions = condition.split('\n'); + let unique = current_conditions.filter(this.only_unique); + let condition_tmp = ''; + for (let i = 0; i < unique.length - 1; ++i) { + condition_tmp += unique[i] + '\n'; + } + condition_tmp += unique[unique.length - 1] + '\n'; + condition = condition_tmp; + } + + let if_transitions_tmp = []; + //check block if + let item_block_if = this.get_item_from_childs(item, 'conditional_statement'); + if (item_block_if === undefined) { + if_transitions_tmp = this.get_transitions(cursor.currentNode(), state_variable_name, condition); + } + else { + if_transitions_tmp = this.get_if_transitions(item_block_if, state_variable_name, condition); + } + + if (if_item === false) { + if (if_transitions_tmp.length !== 0) { + assign_transitions = if_transitions_tmp; + last_transitions = if_transitions_tmp; + } + } + else { + if_transitions = if_transitions.concat(if_transitions_tmp); + } + + } + } + while (cursor.gotoNextSibling() !== false); + + + if (last !== 0) { + transitions = last_transitions; + } + else { + transitions = if_transitions.concat(assign_transitions); + } + return transitions; + } + + check_get_simple_waveform_assignment(p, state_variable_name) { + let destination = undefined; + let left = this.get_left_simple_waveform_assignment(p); + if (left === state_variable_name) { + destination = this.get_rigth_simple_waveform_assignment(p); + } + return destination; + } + + check_get_simple_variable_assignment(p, state_variable_name) { + let destination = undefined; + let left = this.get_left_simple_waveform_assignment(p); + if (left === state_variable_name) { + destination = this.get_rigth_simple_variable_assignment(p); + } + return destination; + } + + get_left_simple_waveform_assignment(p) { + let left = ''; + let item = this.get_item_from_childs(p, 'operator_assignment'); + item = this.get_item_from_childs(item, 'variable_lvalue'); + if (item !== undefined) { + left = item.text; + } + if (left === '') { + item = this.get_item_from_childs(p, 'variable_lvalue'); + if (item !== undefined) { + left = item.text; + } + } + return left; + } + + get_rigth_simple_waveform_assignment(p) { + let rigth = undefined; + let item = this.get_item_from_childs(p, 'operator_assignment'); + item = this.get_item_from_childs(item, 'expression'); + if (item !== undefined) { + rigth = item.text; + } + if (rigth === undefined) { + item = this.get_item_from_childs(p, 'expression'); + if (item !== undefined) { + rigth = item.text; + } + } + return rigth; + } + + get_rigth_simple_variable_assignment(p) { + let rigth = undefined; + let cursor = p.walk(); + cursor.gotoFirstChild(); + do { + if (cursor.nodeType === 'simple_name') { + rigth = cursor.nodeText; + } + } + while (cursor.gotoNextSibling() !== false); + return rigth; + } + + get_state_variable_name(p) { + let state_variable_name = undefined; + let case_expression = this.get_item_from_childs(p, 'case_expression'); + if (case_expression !== undefined) { + state_variable_name = case_expression.text; + } + return state_variable_name; + } + + get_case_process(p) { + let case_statement = this.search_multiple_in_tree(p, 'case_statement'); + return case_statement; + } + + get_process_label(p) { + let label_txt = ''; + let label = this.get_item_from_childs(p, "block_identifier"); + if (label === undefined) { + label_txt = '' + } + else { + label_txt = label.text; + } + return label_txt; + } +} + +class Paser_fsm_vhdl extends Parser_fsm_base { + constructor(comment_symbol, parser) { + super(); + this.set_symbol(comment_symbol); + if (parser !== undefined) { + this.parser = parser; + this.loaded_wasm = true; + } + } + + async init() { + if (this.loaded_wasm !== true) { + try { + const Parser = require('./tree-sitter'); + await Parser.init(); + this.parser = new Parser(); + let Lang = await + Parser.Language.load(path.join( + path.dirname(__dirname), + path.sep + "resources" + + path.sep + "tree-sitter" + + path.sep + "tree-sitter-vhdl.wasm")); + this.parser.setLanguage(Lang); + this.loaded_wasm = true; + } catch (e) { } + } + } + + set_comment_symbol(comment_symbol) { + this.set_symbol(comment_symbol); + } + + async get_svg_sm(code, comment_symbol) { + this.set_comment_symbol(comment_symbol); + + let process; + let tree; + try { + tree = this.parser.parse(code); + process = this.get_process(tree); + } catch (e) { + return { 'svg': [], 'stm': [] }; + } + let stm = []; + let svg = []; + for (let i = 0; i < process.length; ++i) { + let states; + try { + states = this.get_process_info(process[i]); + } catch (e) { + states = undefined; + } + if (states !== undefined) { + for (let j = 0; j < states.length; ++j) { + if (this.check_stm(states[j]) === true) { + stm.push(states[j]); + let svg_tmp = this.json_to_svg(states[j]); + let stm_tmp = { + 'svg': svg_tmp, + 'description': states[j].description + }; + svg.push(stm_tmp); + } + } + } + } + return { 'svg': svg, 'stm': stm }; + } + + get_process(tree) { + let process_array = []; + let arch_body = this.get_architecture_body(tree); + let cursor = arch_body.walk(); + let comments = ''; + // Process + cursor.gotoFirstChild(); + do { + if (cursor.nodeType === 'process_statement') { + let process = { + 'code': cursor.currentNode(), + 'comments': comments + }; + process_array.push(process); + comments = ''; + } else if (cursor.nodeType === 'comment') { + comments += this.get_comment(cursor.nodeText); + } else { + comments = ''; + } + } + while (cursor.gotoNextSibling() !== false); + return process_array; + } + + get_architecture_body(p) { + let cursor = p.walk(); + let item = this.get_item_multiple_from_childs(cursor.currentNode(), 'design_unit'); + if (item.length === 2) { + item = this.get_item_from_childs(item[1], 'architecture_body'); + item = this.get_item_from_childs(item, 'concurrent_statement_part'); + return item; + } else { + return undefined; + } + } + + get_process_info(proc) { + let stms = []; + + let p = proc.code; + let name = this.get_process_label(p); + let case_statements = this.get_case_process(p); + for (let i = 0; i < case_statements.length; ++i) { + let description = proc.comments; + let p_info = { + 'description': description.replace('fsm_extract', ''), + 'name': '', + 'state_variable_name': '', + 'states': [] + }; + p_info.name = name; + if (case_statements !== undefined && case_statements.length !== 0) { + p_info.state_variable_name = this.get_state_variable_name(case_statements[i]); + p_info.states = this.get_states(case_statements[i], p_info.state_variable_name); + let check = this.check_empty_states_transitions(p_info.states); + if (check === true) { + let result = this.force_case_stm(case_statements[i]); + p_info.state_variable_name = result.variable_name; + p_info.states = result.states; + } + stms.push(p_info); + } + } + return stms; + } + + force_case_stm(p) { + let state_names = this.get_state_names_from_case(p).map(v => v.toLowerCase()); + let state_name_candidate = this.search_state_variable_candidates(p, state_names); + let states = this.get_states(p, state_name_candidate); + return { 'variable_name': state_name_candidate, 'states': states }; + } + + search_state_variable_candidates(p, state_names) { + let candidates = []; + let signals = this.search_multiple_in_tree(p, 'simple_waveform_assignment'); + for (let i = 0; i < signals.length; ++i) { + let rigth = this.get_item_from_childs(signals[i], 'waveforms'); + if (rigth !== undefined) { + let rigth_text = rigth.text.toLowerCase(); + let left = this.get_left_simple_waveform_assignment(signals[i]); + if (state_names.includes(rigth_text) === true) { + candidates.push(left); + } + } + } + + let variables = this.search_multiple_in_tree(p, 'simple_variable_assignment'); + for (let i = 0; i < variables.length; ++i) { + let rigth = this.get_item_from_childs(variables[i], 'waveforms'); + if (rigth === undefined) { + rigth = this.get_item_from_childs_last(variables[i], 'simple_name'); + } + if (rigth !== undefined) { + let rigth_text = rigth.text.toLowerCase(); + let left = this.get_left_simple_waveform_assignment(variables[i]); + if (state_names.includes(rigth_text) === true) { + candidates.push(left); + } + } + } + let unique = this.mode(candidates); + return unique; + } + + mode(array) { + if (array.length === 0) { + return null; + } + var mode_map = {}; + var max_el = array[0], + max_count = 1; + for (var i = 0; i < array.length; i++) { + var el = array[i]; + if (mode_map[el] == null) { + mode_map[el] = 1; + } else { + mode_map[el]++; + } + if (mode_map[el] > max_count) { + max_el = el; + max_count = mode_map[el]; + } + } + return max_el; + } + + get_state_names_from_case(p) { + let state_names = []; + let cursor = p.walk(); + cursor.gotoFirstChild(); + do { + if (cursor.nodeType === 'case_statement_alternative') { + let result = this.get_state_name(cursor.currentNode()); + let name = result.state_name; + state_names.push(name); + } + } + while (cursor.gotoNextSibling() !== false); + return state_names; + } + + + + get_states(p, state_variable_name) { + let case_state = []; + let cursor = p.walk(); + cursor.gotoFirstChild(); + do { + if (cursor.nodeType === 'case_statement_alternative') { + let state = { + 'name': '', + 'transitions': [], + 'start_position': [], + 'end_position': [] + }; + let result = this.get_state_name(cursor.currentNode()); + let name = result.state_name; + if (name !== undefined && name.toLocaleLowerCase() !== 'others') { + state.name = result.state_name; + state.start_position = result.start_position; + state.end_position = result.end_position; + state.transitions = this.get_transitions(cursor.currentNode(), state_variable_name); + + case_state.push(state); + } + } + } + while (cursor.gotoNextSibling() !== false); + return case_state; + } + + get_transitions(p, state_variable_name) { + let transitions = []; + let cursor = p.walk(); + let last = 0; + let last_transitions = []; + //if transitions + let if_transitions = []; + //assign transitions + let assign_transitions = []; + + cursor.gotoFirstChild(); + do { + if (cursor.nodeType === 'sequence_of_statements') { + cursor.gotoFirstChild(); + do { + if (cursor.nodeType === 'if_statement') { + let tmp_transitions = this.get_if_transitions(cursor.currentNode(), state_variable_name); + if_transitions = if_transitions.concat(tmp_transitions); + last = 0; + } else if (cursor.nodeType === 'simple_waveform_assignment') { + let tmp_transitions = this.get_assignament_transitions( + cursor.currentNode(), state_variable_name); + if (tmp_transitions.length !== 0 && tmp_transitions !== undefined) { + assign_transitions = tmp_transitions; + last_transitions = tmp_transitions; + last = 1; + } + } else if (cursor.nodeType === 'simple_variable_assignment') { + let tmp_transitions = this.get_assignament_variable_transitions( + cursor.currentNode(), state_variable_name); + if (tmp_transitions.length !== 0 && tmp_transitions !== undefined) { + assign_transitions = tmp_transitions; + last_transitions = tmp_transitions; + last = 1; + } + } else if (cursor.nodeType === 'case_statement') { + let tmp_transitions = this.get_case_transitions(cursor.currentNode(), state_variable_name); + if_transitions = if_transitions.concat(tmp_transitions); + last = 0; + } + } + while (cursor.gotoNextSibling() !== false); + } + } + while (cursor.gotoNextSibling() !== false); + if (last === 1) { + transitions = last_transitions; + } else { + transitions = if_transitions.concat(assign_transitions); + } + return transitions; + } + + get_if_transitions(p, state_variable_name, metacondition) { + let transitions = []; + let cursor = p.walk(); + let else_conditions = ''; + cursor.gotoFirstChild(); + do { + if (cursor.nodeType === 'elsif' || cursor.nodeType === 'if') { + let if_condition = this.get_condition(cursor.currentNode()); + if (if_condition !== undefined) { + else_conditions += `not (${if_condition.condition})\n`; + } + let transition = this.get_transition(cursor.currentNode(), state_variable_name, metacondition); + if (transition !== undefined) { + transitions = transitions.concat(transition); + } + } else if (cursor.nodeType === 'else') { + if (metacondition !== undefined) { + else_conditions = metacondition + '\n' + else_conditions; + } + let transition = this.get_transition(cursor.currentNode(), state_variable_name, else_conditions); + if (transition !== undefined) { + transitions = transitions.concat(transition); + } + } + } + while (cursor.gotoNextSibling() !== false); + return transitions; + } + + get_case_transitions(p, state_variable_name, metacondition) { + let transitions = []; + let cursor = p.walk(); + let else_conditions = ''; + let case_switch = this.get_item_from_childs(cursor.currentNode(), 'simple_name').text; + cursor.gotoFirstChild(); + do { + if (cursor.nodeType === 'case_statement_alternative') { + let choice = this.get_item_from_childs(cursor.currentNode(), 'choices'); + let choice_txt = choice.text; + let if_condition = `${case_switch} = ${choice_txt}`; + if (choice_txt.toLocaleLowerCase() === 'others') { + if_condition = else_conditions; + } else if (if_condition !== undefined) { + else_conditions += `not (${if_condition})\n`; + } + let transition = this.get_transition(cursor.currentNode(), + state_variable_name, metacondition, if_condition); + if (transition !== undefined) { + transitions = transitions.concat(transition); + } + } + } + while (cursor.gotoNextSibling() !== false); + return transitions; + } + + get_assignament_transitions(p, state_variable_name) { + let transitions = []; + + let tmp_destination = this.check_get_simple_waveform_assignment(p, state_variable_name); + if (tmp_destination !== undefined) { + let s_position = p.startPosition; + let e_position = p.endPosition; + let start_position = [s_position.row, e_position.column - 1]; + let end_position = [e_position.row, e_position.column]; + + let destination = tmp_destination; + let transition = { + 'condition': '', + 'destination': destination, + 'start_position': start_position, + 'end_position': end_position + }; + transitions.push(transition); + } + return transitions; + } + + get_assignament_variable_transitions(p, state_variable_name) { + let transitions = []; + + let tmp_destination = this.check_get_simple_variable_assignment(p, state_variable_name); + if (tmp_destination !== undefined) { + let s_position = p.startPosition; + let e_position = p.endPosition; + let start_position = [s_position.row, e_position.column - 1]; + let end_position = [e_position.row, e_position.column]; + + let destination = tmp_destination; + let transition = { + 'condition': '', + 'destination': destination, + 'start_position': start_position, + 'end_position': end_position + }; + transitions.push(transition); + } + return transitions; + } + + get_transition(p, state_variable_name, metacondition, choice) { + let result = this.get_condition(p, choice); + let condition = result.condition; + let start_position = result.start_position; + let end_position = result.end_position; + let transitions = this.get_transitions_in_if(p, state_variable_name, + condition, start_position, end_position, metacondition); + return transitions; + } + + get_transitions_in_if(p, state_variable_name, condition, start_position, end_position, metacondition) { + let last = 0; + let last_transitions = []; + //if transitions + let if_transitions = []; + //assign transitions + let assign_transitions = []; + let transitions = []; + let destination = undefined; + let cursor = p.walk(); + cursor.gotoFirstChild(); + do { + if (cursor.nodeType === 'sequence_of_statements') { + cursor.gotoFirstChild(); + do { + if (cursor.nodeType === 'simple_waveform_assignment') { + let tmp_destination = this.check_get_simple_waveform_assignment( + cursor.currentNode(), state_variable_name); + if (tmp_destination !== undefined) { + destination = tmp_destination; + if (condition !== undefined && destination !== undefined) { + let transition = { + 'condition': '', + 'destination': '', + 'start_position': start_position, + 'end_position': end_position + }; + if (metacondition !== undefined && metacondition !== '') { + condition += `\n${metacondition}`; + let current_conditions = condition.split('\n'); + let unique = current_conditions.filter(this.only_unique); + let condition_tmp = ''; + for (let i = 0; i < unique.length - 1; ++i) { + condition_tmp += unique[i] + '\n'; + } + condition_tmp += unique[unique.length - 1] + '\n'; + condition = condition_tmp; + } + transition.condition = condition; + transition.destination = destination; + last = 1; + assign_transitions = [transition]; + last_transitions = [transition]; + } + } + } else if (cursor.nodeType === 'simple_variable_assignment') { + let tmp_destination = this.check_get_simple_variable_assignment( + cursor.currentNode(), state_variable_name); + if (tmp_destination !== undefined) { + destination = tmp_destination; + if (condition !== undefined && destination !== undefined) { + let transition = { + 'condition': '', + 'destination': '', + 'start_position': start_position, + 'end_position': end_position + }; + if (metacondition !== undefined && metacondition !== '') { + condition += `\n${metacondition}`; + let current_conditions = condition.split('\n'); + let unique = current_conditions.filter(this.only_unique); + let condition_tmp = ''; + for (let i = 0; i < unique.length - 1; ++i) { + condition_tmp += unique[i] + '\n'; + } + condition_tmp += unique[unique.length - 1] + '\n'; + condition = condition_tmp; + } + transition.condition = condition; + transition.destination = destination; + last = 1; + assign_transitions = [transition]; + last_transitions = [transition]; + } + } + } else if (cursor.nodeType === 'if_statement') { + if (metacondition !== undefined && metacondition !== '') { + condition += condition + '\n' + metacondition; + } + last = 0; + if_transitions = this.get_if_transitions(cursor.currentNode(), state_variable_name, condition); + } else if (cursor.nodeType === 'case_statement') { + if (metacondition !== undefined && metacondition !== '') { + condition += condition + '\n' + metacondition; + } + last = 0; + if_transitions = this.get_case_transitions(cursor.currentNode(), + state_variable_name, condition); + } + } + while (cursor.gotoNextSibling() !== false); + } + } + while (cursor.gotoNextSibling() !== false); + if (last !== 0) { + transitions = last_transitions; + } else { + transitions = if_transitions.concat(assign_transitions); + } + return transitions; + } + + check_get_simple_waveform_assignment(p, state_variable_name) { + let destination = undefined; + if (state_variable_name === undefined) { + return destination; + } + if (this.get_left_simple_waveform_assignment(p).toLowerCase() === state_variable_name.toLowerCase()) { + destination = this.get_rigth_simple_waveform_assignment(p); + } + return destination; + } + + check_get_simple_variable_assignment(p, state_variable_name) { + let destination = undefined; + if (state_variable_name === undefined) { + return destination; + } + if (this.get_left_simple_waveform_assignment(p).toLowerCase() === state_variable_name.toLowerCase()) { + destination = this.get_rigth_simple_variable_assignment(p); + } + return destination; + } + + get_left_simple_waveform_assignment(p) { + let left = 'undefined'; + let cursor = p.walk(); + let break_p = false; + cursor.gotoFirstChild(); + do { + if (cursor.nodeType === 'simple_name') { + left = cursor.nodeText; + break_p = true; + } else if (cursor.nodeType === 'selected_name') { + left = cursor.nodeText.split('.'); + left = left[left.length - 1]; + break_p = true; + } + } + while (cursor.gotoNextSibling() !== false && break_p === false); + return left; + } + + get_rigth_simple_waveform_assignment(p) { + let rigth = undefined; + let cursor = p.walk(); + cursor.gotoFirstChild(); + do { + if (cursor.nodeType === 'waveforms') { + rigth = cursor.nodeText.split(/(\s)/)[0].trim(); + } + } + while (cursor.gotoNextSibling() !== false); + return rigth; + } + + get_rigth_simple_variable_assignment(p) { + let rigth = undefined; + let cursor = p.walk(); + cursor.gotoFirstChild(); + do { + if (cursor.nodeType === 'simple_name') { + rigth = cursor.nodeText.split(/(\s)/)[0].trim(); + } + } + while (cursor.gotoNextSibling() !== false); + return rigth; + } + + get_condition(p, choice) { + let condition = ''; + let cursor = p.walk(); + let start_position = []; + let end_position = []; + let s_position = cursor.startPosition; + let e_position = cursor.endPosition; + start_position = [s_position.row, s_position.column]; + end_position = [e_position.row, e_position.column]; + + cursor.gotoFirstChild(); + do { + if (cursor.nodeType === 'relation' || cursor.nodeType === 'logical_expression' || + cursor.nodeType === 'parenthesized_expression') { + if (cursor.nodeType === 'parenthesized_expression') { + condition = this.get_relation_of_parenthesized_expression(cursor.currentNode()); + } else { + condition = cursor.nodeText; + } + s_position = cursor.startPosition; + e_position = cursor.endPosition; + start_position = [s_position.row, s_position.column]; + end_position = [e_position.row, e_position.column]; + } else if (cursor.nodeType === 'choices') { + condition = choice; + s_position = cursor.startPosition; + e_position = cursor.endPosition; + start_position = [s_position.row, s_position.column]; + end_position = [e_position.row, e_position.column]; + } + if (cursor.nodeType === 'else') { + s_position = cursor.startPosition; + e_position = cursor.endPosition; + start_position = [s_position.row, s_position.column]; + end_position = [e_position.row, e_position.column]; + } + } + while (cursor.gotoNextSibling() !== false); + return { + 'condition': condition, + 'start_position': start_position, + 'end_position': end_position + }; + } + + get_relation_of_parenthesized_expression(p) { + let relation = undefined; + let cursor = p.walk(); + let break_p = false; + cursor.gotoFirstChild(); + do { + if (cursor.nodeType === 'relation' || cursor.nodeType === 'logical_expression') { + relation = cursor.nodeText; + break_p = true; + } + } + while (cursor.gotoNextSibling() !== false && break_p === false); + return relation; + } + + get_state_name(p) { + let state_name = undefined; + let start_position = []; + let end_position = []; + let cursor = p.walk(); + cursor.gotoFirstChild(); + do { + if (cursor.nodeType === 'choices') { + let s_position = cursor.startPosition; + let e_position = cursor.endPosition; + start_position = [s_position.row, s_position.column]; + end_position = [e_position.row, e_position.column]; + state_name = cursor.nodeText; + } + } + while (cursor.gotoNextSibling() !== false); + return { 'state_name': state_name, 'start_position': start_position, 'end_position': end_position }; + } + + + get_state_variable_name(p) { + let state_variable_name = undefined; + let cursor = p.walk(); + cursor.gotoFirstChild(); + do { + if (cursor.nodeType === 'simple_name') { + state_variable_name = cursor.nodeText; + } else if (cursor.nodeType === 'parenthesized_expression') { + state_variable_name = cursor.nodeText.replace('(', '').replace(')', ''); + } + } + while (cursor.gotoNextSibling() !== false); + return state_variable_name; + } + + get_case_process(p) { + let case_statement = this.search_multiple_in_tree(p, 'case_statement'); + return case_statement; + } + + + get_process_label(p) { + let label = ''; + let cursor = p.walk(); + //Process label + cursor.gotoFirstChild(); + if (cursor.nodeType === 'label') { + cursor.gotoFirstChild(); + label = cursor.nodeText; + } + return label; + } +} + diff --git a/resources/fsm/utils/state-machine-cat.js b/resources/fsm/utils/state-machine-cat.js new file mode 100644 index 0000000..69efd4b --- /dev/null +++ b/resources/fsm/utils/state-machine-cat.js @@ -0,0 +1,2 @@ +/*! For license information please see state-machine-cat.js.LICENSE.txt */ +module.exports=(()=>{var e={6447:(e,A,r)=>{"use strict";var i=r(2424),a=r(2877),t=r(7260),n=r(5929),f=r(9741),l=r(8495),s=r(9702),c=r(7473),o=r(7126);e.exports=d,d.prototype.validate=function(e,A){var r;if("string"==typeof e){if(!(r=this.getSchema(e)))throw new Error('no schema with key or ref "'+e+'"')}else{var i=this._addSchema(e);r=i.validate||this._compile(i)}var a=r(A);return!0!==r.$async&&(this.errors=r.errors),a},d.prototype.compile=function(e,A){var r=this._addSchema(e,void 0,A);return r.validate||this._compile(r)},d.prototype.addSchema=function(e,A,r,i){if(Array.isArray(e)){for(var t=0;t{"use strict";var A=e.exports=function(){this._cache={}};A.prototype.put=function(e,A){this._cache[e]=A},A.prototype.get=function(e){return this._cache[e]},A.prototype.del=function(e){delete this._cache[e]},A.prototype.clear=function(){this._cache={}}},6583:(e,A,r)=>{"use strict";var i=r(9622).MissingRef;e.exports=function e(A,r,a){var t=this;if("function"!=typeof this._opts.loadSchema)throw new Error("options.loadSchema should be a function");"function"==typeof r&&(a=r,r=void 0);var n=f(A).then((function(){var e=t._addSchema(A,void 0,r);return e.validate||l(e)}));return a&&n.then((function(e){a(null,e)}),a),n;function f(A){var r=A.$schema;return r&&!t.getSchema(r)?e.call(t,{$ref:r},!0):Promise.resolve()}function l(e){try{return t._compile(e)}catch(A){if(A instanceof i)return function(A){var i=A.missingSchema;if(s(i))throw new Error("Schema "+i+" is loaded but "+A.missingRef+" cannot be resolved");var a=t._loadingSchemas[i];return a||(a=t._loadingSchemas[i]=t._opts.loadSchema(i)).then(n,n),a.then((function(e){if(!s(i))return f(e).then((function(){s(i)||t.addSchema(e,i,void 0,r)}))})).then((function(){return l(e)}));function n(){delete t._loadingSchemas[i]}function s(e){return t._refs[e]||t._schemas[e]}}(A);throw A}}}},9622:(e,A,r)=>{"use strict";var i=r(2877);function a(e,A,r){this.message=r||a.message(e,A),this.missingRef=i.url(e,A),this.missingSchema=i.normalizeId(i.fullPath(this.missingRef))}function t(e){return e.prototype=Object.create(Error.prototype),e.prototype.constructor=e,e}e.exports={Validation:t((function(e){this.message="validation failed",this.errors=e,this.ajv=this.validation=!0})),MissingRef:t(a)},a.message=function(e,A){return"can't resolve reference "+A+" from id "+e}},8495:(e,A,r)=>{"use strict";var i=r(7126),a=/^(\d\d\d\d)-(\d\d)-(\d\d)$/,t=[0,31,28,31,30,31,30,31,31,30,31,30,31],n=/^(\d\d):(\d\d):(\d\d)(\.\d+)?(z|[+-]\d\d(?::?\d\d)?)?$/i,f=/^(?=.{1,253}\.?$)[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[-0-9a-z]{0,61}[0-9a-z])?)*\.?$/i,l=/^(?:[a-z][a-z0-9+\-.]*:)(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)(?:\?(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i,s=/^(?:(?:[^\x00-\x20"'<>%\\^`{|}]|%[0-9a-f]{2})|\{[+#./;?&=,!@|]?(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?(?:,(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?)*\})*$/i,c=/^(?:(?:http[s\u017F]?|ftp):\/\/)(?:(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+(?::(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*)?@)?(?:(?!10(?:\.[0-9]{1,3}){3})(?!127(?:\.[0-9]{1,3}){3})(?!169\.254(?:\.[0-9]{1,3}){2})(?!192\.168(?:\.[0-9]{1,3}){2})(?!172\.(?:1[6-9]|2[0-9]|3[01])(?:\.[0-9]{1,3}){2})(?:[1-9][0-9]?|1[0-9][0-9]|2[01][0-9]|22[0-3])(?:\.(?:1?[0-9]{1,2}|2[0-4][0-9]|25[0-5])){2}(?:\.(?:[1-9][0-9]?|1[0-9][0-9]|2[0-4][0-9]|25[0-4]))|(?:(?:(?:[0-9a-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+-)*(?:[0-9a-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+)(?:\.(?:(?:[0-9a-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+-)*(?:[0-9a-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+)*(?:\.(?:(?:[a-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]){2,})))(?::[0-9]{2,5})?(?:\/(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*)?$/i,o=/^(?:urn:uuid:)?[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/i,u=/^(?:\/(?:[^~/]|~0|~1)*)*$/,b=/^#(?:\/(?:[a-z0-9_\-.!$&'()*+,;:=@]|%[0-9a-f]{2}|~0|~1)*)*$/i,h=/^(?:0|[1-9][0-9]*)(?:#|(?:\/(?:[^~/]|~0|~1)*)*)$/;function w(e){return e="full"==e?"full":"fast",i.copy(w[e])}function k(e){var A=e.match(a);if(!A)return!1;var r=+A[1],i=+A[2],n=+A[3];return i>=1&&i<=12&&n>=1&&n<=(2==i&&function(e){return e%4==0&&(e%100!=0||e%400==0)}(r)?29:t[i])}function d(e,A){var r=e.match(n);if(!r)return!1;var i=r[1],a=r[2],t=r[3],f=r[5];return(i<=23&&a<=59&&t<=59||23==i&&59==a&&60==t)&&(!A||f)}e.exports=w,w.fast={date:/^\d\d\d\d-[0-1]\d-[0-3]\d$/,time:/^(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)?$/i,"date-time":/^\d\d\d\d-[0-1]\d-[0-3]\d[t\s](?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)$/i,uri:/^(?:[a-z][a-z0-9+\-.]*:)(?:\/?\/)?[^\s]*$/i,"uri-reference":/^(?:(?:[a-z][a-z0-9+\-.]*:)?\/?\/)?(?:[^\\\s#][^\s#]*)?(?:#[^\\\s]*)?$/i,"uri-template":s,url:c,email:/^[a-z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)*$/i,hostname:f,ipv4:/^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$/,ipv6:/^\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(?:%.+)?\s*$/i,regex:p,uuid:o,"json-pointer":u,"json-pointer-uri-fragment":b,"relative-json-pointer":h},w.full={date:k,time:d,"date-time":function(e){var A=e.split(v);return 2==A.length&&k(A[0])&&d(A[1],!0)},uri:function(e){return g.test(e)&&l.test(e)},"uri-reference":/^(?:[a-z][a-z0-9+\-.]*:)?(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'"()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?(?:\?(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i,"uri-template":s,url:c,email:/^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i,hostname:f,ipv4:/^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$/,ipv6:/^\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(?:%.+)?\s*$/i,regex:p,uuid:o,"json-pointer":u,"json-pointer-uri-fragment":b,"relative-json-pointer":h};var v=/t|\s/i,g=/\/|:/,m=/[^\\]\\Z/;function p(e){if(m.test(e))return!1;try{return new RegExp(e),!0}catch(e){return!1}}},2424:(e,A,r)=>{"use strict";var i=r(2877),a=r(7126),t=r(9622),n=r(9741),f=r(7768),l=a.ucs2length,s=r(1183),c=t.Validation;function o(e,A,r){var i=b.call(this,e,A,r);return i>=0?{index:i,compiling:!0}:(i=this._compilations.length,this._compilations[i]={schema:e,root:A,baseId:r},{index:i,compiling:!1})}function u(e,A,r){var i=b.call(this,e,A,r);i>=0&&this._compilations.splice(i,1)}function b(e,A,r){for(var i=0;i{"use strict";var i=r(5980),a=r(1183),t=r(7126),n=r(5929),f=r(9453);function l(e,A,r){var i=this._refs[r];if("string"==typeof i){if(!this._refs[i])return l.call(this,e,A,i);i=this._refs[i]}if((i=i||this._schemas[r])instanceof n)return h(i.schema,this._opts.inlineRefs)?i.schema:i.validate||this._compile(i);var a,t,f,c=s.call(this,A,r);return c&&(a=c.schema,A=c.root,f=c.baseId),a instanceof n?t=a.validate||e.call(this,a.schema,A,void 0,f):void 0!==a&&(t=h(a,this._opts.inlineRefs)?a:e.call(this,a,A,void 0,f)),t}function s(e,A){var r=i.parse(A),a=v(r),t=d(this._getId(e.schema));if(0===Object.keys(e.schema).length||a!==t){var f=m(a),l=this._refs[f];if("string"==typeof l)return c.call(this,e,l,r);if(l instanceof n)l.validate||this._compile(l),e=l;else{if(!((l=this._schemas[f])instanceof n))return;if(l.validate||this._compile(l),f==m(A))return{schema:l,root:e,baseId:t};e=l}if(!e.schema)return;t=d(this._getId(e.schema))}return u.call(this,r,t,e.schema,e)}function c(e,A,r){var i=s.call(this,e,A);if(i){var a=i.schema,t=i.baseId;e=i.root;var n=this._getId(a);return n&&(t=p(t,n)),u.call(this,r,t,a,e)}}e.exports=l,l.normalizeId=m,l.fullPath=d,l.url=p,l.ids=function(e){var A=m(this._getId(e)),r={"":A},n={"":d(A,!1)},l={},s=this;return f(e,{allKeys:!0},(function(e,A,f,c,o,u,b){if(""!==A){var h=s._getId(e),w=r[c],k=n[c]+"/"+o;if(void 0!==b&&(k+="/"+("number"==typeof b?b:t.escapeFragment(b))),"string"==typeof h){h=w=m(w?i.resolve(w,h):h);var d=s._refs[h];if("string"==typeof d&&(d=s._refs[d]),d&&d.schema){if(!a(e,d.schema))throw new Error('id "'+h+'" resolves to more than one schema')}else if(h!=m(k))if("#"==h[0]){if(l[h]&&!a(e,l[h]))throw new Error('id "'+h+'" resolves to more than one schema');l[h]=e}else s._refs[h]=k}r[A]=w,n[A]=k}})),l},l.inlineRef=h,l.schema=s;var o=t.toHash(["properties","patternProperties","enum","dependencies","definitions"]);function u(e,A,r,i){if(e.fragment=e.fragment||"","/"==e.fragment.slice(0,1)){for(var a=e.fragment.split("/"),n=1;n{"use strict";var i=r(557),a=r(7126).toHash;e.exports=function(){var e=[{type:"number",rules:[{maximum:["exclusiveMaximum"]},{minimum:["exclusiveMinimum"]},"multipleOf","format"]},{type:"string",rules:["maxLength","minLength","pattern","format"]},{type:"array",rules:["maxItems","minItems","items","contains","uniqueItems"]},{type:"object",rules:["maxProperties","minProperties","required","dependencies","propertyNames",{properties:["additionalProperties","patternProperties"]}]},{rules:["$ref","const","enum","not","anyOf","oneOf","allOf","if"]}],A=["type","$comment"];return e.all=a(A),e.types=a(["number","integer","string","array","object","boolean","null"]),e.forEach((function(r){r.rules=r.rules.map((function(r){var a;if("object"==typeof r){var t=Object.keys(r)[0];a=r[t],r=t,a.forEach((function(r){A.push(r),e.all[r]=!0}))}return A.push(r),e.all[r]={keyword:r,code:i[r],implements:a}})),e.all.$comment={keyword:"$comment",code:i.$comment},r.type&&(e.types[r.type]=r)})),e.keywords=a(A.concat(["$schema","$id","id","$data","$async","title","description","default","definitions","examples","readOnly","writeOnly","contentMediaType","contentEncoding","additionalItems","then","else"])),e.custom={},e}},5929:(e,A,r)=>{"use strict";var i=r(7126);e.exports=function(e){i.copy(e,this)}},8463:e=>{"use strict";e.exports=function(e){for(var A,r=0,i=e.length,a=0;a=55296&&A<=56319&&a{"use strict";function i(e,A,r,i){var a=i?" !== ":" === ",t=i?" || ":" && ",n=i?"!":"",f=i?"":"!";switch(e){case"null":return A+a+"null";case"array":return n+"Array.isArray("+A+")";case"object":return"("+n+A+t+"typeof "+A+a+'"object"'+t+f+"Array.isArray("+A+"))";case"integer":return"(typeof "+A+a+'"number"'+t+f+"("+A+" % 1)"+t+A+a+A+(r?t+n+"isFinite("+A+")":"")+")";case"number":return"(typeof "+A+a+'"'+e+'"'+(r?t+n+"isFinite("+A+")":"")+")";default:return"typeof "+A+a+'"'+e+'"'}}e.exports={copy:function(e,A){for(var r in A=A||{},e)A[r]=e[r];return A},checkDataType:i,checkDataTypes:function(e,A,r){switch(e.length){case 1:return i(e[0],A,r,!0);default:var a="",n=t(e);for(var f in n.array&&n.object&&(a=n.null?"(":"(!"+A+" || ",a+="typeof "+A+' !== "object")',delete n.null,delete n.array,delete n.object),n.number&&delete n.integer,n)a+=(a?" && ":"")+i(f,A,r,!0);return a}},coerceToTypes:function(e,A){if(Array.isArray(A)){for(var r=[],i=0;i=A)throw new Error("Cannot access property/index "+i+" levels up, current level is "+A);return r[A-i]}if(i>A)throw new Error("Cannot access data "+i+" levels up, current level is "+A);if(t="data"+(A-i||""),!a)return t}for(var f=t,s=a.split("/"),c=0;c{"use strict";var A=["multipleOf","maximum","exclusiveMaximum","minimum","exclusiveMinimum","maxLength","minLength","pattern","additionalItems","maxItems","minItems","uniqueItems","maxProperties","minProperties","required","additionalProperties","enum","format","const"];e.exports=function(e,r){for(var i=0;i{"use strict";var i=r(9302);e.exports={$id:"https://github.com/ajv-validator/ajv/blob/master/lib/definition_schema.js",definitions:{simpleTypes:i.definitions.simpleTypes},type:"object",dependencies:{schema:["validate"],$data:["validate"],statements:["inline"],valid:{not:{required:["macro"]}}},properties:{type:i.properties.type,schema:{type:"boolean"},statements:{type:"boolean"},dependencies:{type:"array",items:{type:"string"}},metaSchema:{type:"object"},modifying:{type:"boolean"},valid:{type:"boolean"},$data:{type:"boolean"},async:{type:"boolean"},errors:{anyOf:[{type:"boolean"},{const:"full"}]}}}},4485:e=>{"use strict";e.exports=function(e,A,r){var i,a=" ",t=e.level,n=e.dataLevel,f=e.schema[A],l=e.schemaPath+e.util.getProperty(A),s=e.errSchemaPath+"/"+A,c=!e.opts.allErrors,o="data"+(n||""),u=e.opts.$data&&f&&f.$data;u?(a+=" var schema"+t+" = "+e.util.getData(f.$data,n,e.dataPathArr)+"; ",i="schema"+t):i=f;var b="maximum"==A,h=b?"exclusiveMaximum":"exclusiveMinimum",w=e.schema[h],k=e.opts.$data&&w&&w.$data,d=b?"<":">",v=b?">":"<",g=void 0;if(!u&&"number"!=typeof f&&void 0!==f)throw new Error(A+" must be number");if(!k&&void 0!==w&&"number"!=typeof w&&"boolean"!=typeof w)throw new Error(h+" must be number or boolean");if(k){var m,p=e.util.getData(w.$data,n,e.dataPathArr),E="exclusive"+t,B="exclType"+t,y="exclIsNumber"+t,C="' + "+(Z="op"+t)+" + '";a+=" var schemaExcl"+t+" = "+p+"; ",a+=" var "+E+"; var "+B+" = typeof "+(p="schemaExcl"+t)+"; if ("+B+" != 'boolean' && "+B+" != 'undefined' && "+B+" != 'number') { ",g=h,(m=m||[]).push(a),a="",!1!==e.createErrors?(a+=" { keyword: '"+(g||"_exclusiveLimit")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(s)+" , params: {} ",!1!==e.opts.messages&&(a+=" , message: '"+h+" should be boolean' "),e.opts.verbose&&(a+=" , schema: validate.schema"+l+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+o+" "),a+=" } "):a+=" {} ";var I=a;a=m.pop(),!e.compositeRule&&c?e.async?a+=" throw new ValidationError(["+I+"]); ":a+=" validate.errors = ["+I+"]; return false; ":a+=" var err = "+I+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+=" } else if ( ",u&&(a+=" ("+i+" !== undefined && typeof "+i+" != 'number') || "),a+=" "+B+" == 'number' ? ( ("+E+" = "+i+" === undefined || "+p+" "+d+"= "+i+") ? "+o+" "+v+"= "+p+" : "+o+" "+v+" "+i+" ) : ( ("+E+" = "+p+" === true) ? "+o+" "+v+"= "+i+" : "+o+" "+v+" "+i+" ) || "+o+" !== "+o+") { var op"+t+" = "+E+" ? '"+d+"' : '"+d+"='; ",void 0===f&&(g=h,s=e.errSchemaPath+"/"+h,i=p,u=k)}else if(C=d,(y="number"==typeof w)&&u){var Z="'"+C+"'";a+=" if ( ",u&&(a+=" ("+i+" !== undefined && typeof "+i+" != 'number') || "),a+=" ( "+i+" === undefined || "+w+" "+d+"= "+i+" ? "+o+" "+v+"= "+w+" : "+o+" "+v+" "+i+" ) || "+o+" !== "+o+") { "}else y&&void 0===f?(E=!0,g=h,s=e.errSchemaPath+"/"+h,i=w,v+="="):(y&&(i=Math[b?"min":"max"](w,f)),w===(!y||i)?(E=!0,g=h,s=e.errSchemaPath+"/"+h,v+="="):(E=!1,C+="=")),Z="'"+C+"'",a+=" if ( ",u&&(a+=" ("+i+" !== undefined && typeof "+i+" != 'number') || "),a+=" "+o+" "+v+" "+i+" || "+o+" !== "+o+") { ";return g=g||A,(m=m||[]).push(a),a="",!1!==e.createErrors?(a+=" { keyword: '"+(g||"_limit")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(s)+" , params: { comparison: "+Z+", limit: "+i+", exclusive: "+E+" } ",!1!==e.opts.messages&&(a+=" , message: 'should be "+C+" ",a+=u?"' + "+i:i+"'"),e.opts.verbose&&(a+=" , schema: ",a+=u?"validate.schema"+l:""+f,a+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+o+" "),a+=" } "):a+=" {} ",I=a,a=m.pop(),!e.compositeRule&&c?e.async?a+=" throw new ValidationError(["+I+"]); ":a+=" validate.errors = ["+I+"]; return false; ":a+=" var err = "+I+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+=" } ",c&&(a+=" else { "),a}},184:e=>{"use strict";e.exports=function(e,A,r){var i,a=" ",t=e.level,n=e.dataLevel,f=e.schema[A],l=e.schemaPath+e.util.getProperty(A),s=e.errSchemaPath+"/"+A,c=!e.opts.allErrors,o="data"+(n||""),u=e.opts.$data&&f&&f.$data;if(u?(a+=" var schema"+t+" = "+e.util.getData(f.$data,n,e.dataPathArr)+"; ",i="schema"+t):i=f,!u&&"number"!=typeof f)throw new Error(A+" must be number");a+="if ( ",u&&(a+=" ("+i+" !== undefined && typeof "+i+" != 'number') || "),a+=" "+o+".length "+("maxItems"==A?">":"<")+" "+i+") { ";var b=A,h=h||[];h.push(a),a="",!1!==e.createErrors?(a+=" { keyword: '"+(b||"_limitItems")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(s)+" , params: { limit: "+i+" } ",!1!==e.opts.messages&&(a+=" , message: 'should NOT have ",a+="maxItems"==A?"more":"fewer",a+=" than ",a+=u?"' + "+i+" + '":""+f,a+=" items' "),e.opts.verbose&&(a+=" , schema: ",a+=u?"validate.schema"+l:""+f,a+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+o+" "),a+=" } "):a+=" {} ";var w=a;return a=h.pop(),!e.compositeRule&&c?e.async?a+=" throw new ValidationError(["+w+"]); ":a+=" validate.errors = ["+w+"]; return false; ":a+=" var err = "+w+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+="} ",c&&(a+=" else { "),a}},4993:e=>{"use strict";e.exports=function(e,A,r){var i,a=" ",t=e.level,n=e.dataLevel,f=e.schema[A],l=e.schemaPath+e.util.getProperty(A),s=e.errSchemaPath+"/"+A,c=!e.opts.allErrors,o="data"+(n||""),u=e.opts.$data&&f&&f.$data;if(u?(a+=" var schema"+t+" = "+e.util.getData(f.$data,n,e.dataPathArr)+"; ",i="schema"+t):i=f,!u&&"number"!=typeof f)throw new Error(A+" must be number");var b="maxLength"==A?">":"<";a+="if ( ",u&&(a+=" ("+i+" !== undefined && typeof "+i+" != 'number') || "),!1===e.opts.unicode?a+=" "+o+".length ":a+=" ucs2length("+o+") ",a+=" "+b+" "+i+") { ";var h=A,w=w||[];w.push(a),a="",!1!==e.createErrors?(a+=" { keyword: '"+(h||"_limitLength")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(s)+" , params: { limit: "+i+" } ",!1!==e.opts.messages&&(a+=" , message: 'should NOT be ",a+="maxLength"==A?"longer":"shorter",a+=" than ",a+=u?"' + "+i+" + '":""+f,a+=" characters' "),e.opts.verbose&&(a+=" , schema: ",a+=u?"validate.schema"+l:""+f,a+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+o+" "),a+=" } "):a+=" {} ";var k=a;return a=w.pop(),!e.compositeRule&&c?e.async?a+=" throw new ValidationError(["+k+"]); ":a+=" validate.errors = ["+k+"]; return false; ":a+=" var err = "+k+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+="} ",c&&(a+=" else { "),a}},6564:e=>{"use strict";e.exports=function(e,A,r){var i,a=" ",t=e.level,n=e.dataLevel,f=e.schema[A],l=e.schemaPath+e.util.getProperty(A),s=e.errSchemaPath+"/"+A,c=!e.opts.allErrors,o="data"+(n||""),u=e.opts.$data&&f&&f.$data;if(u?(a+=" var schema"+t+" = "+e.util.getData(f.$data,n,e.dataPathArr)+"; ",i="schema"+t):i=f,!u&&"number"!=typeof f)throw new Error(A+" must be number");a+="if ( ",u&&(a+=" ("+i+" !== undefined && typeof "+i+" != 'number') || "),a+=" Object.keys("+o+").length "+("maxProperties"==A?">":"<")+" "+i+") { ";var b=A,h=h||[];h.push(a),a="",!1!==e.createErrors?(a+=" { keyword: '"+(b||"_limitProperties")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(s)+" , params: { limit: "+i+" } ",!1!==e.opts.messages&&(a+=" , message: 'should NOT have ",a+="maxProperties"==A?"more":"fewer",a+=" than ",a+=u?"' + "+i+" + '":""+f,a+=" properties' "),e.opts.verbose&&(a+=" , schema: ",a+=u?"validate.schema"+l:""+f,a+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+o+" "),a+=" } "):a+=" {} ";var w=a;return a=h.pop(),!e.compositeRule&&c?e.async?a+=" throw new ValidationError(["+w+"]); ":a+=" validate.errors = ["+w+"]; return false; ":a+=" var err = "+w+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+="} ",c&&(a+=" else { "),a}},5109:e=>{"use strict";e.exports=function(e,A,r){var i=" ",a=e.schema[A],t=e.schemaPath+e.util.getProperty(A),n=e.errSchemaPath+"/"+A,f=!e.opts.allErrors,l=e.util.copy(e),s="";l.level++;var c="valid"+l.level,o=l.baseId,u=!0,b=a;if(b)for(var h,w=-1,k=b.length-1;w0||!1===h:e.util.schemaHasRules(h,e.RULES.all))&&(u=!1,l.schema=h,l.schemaPath=t+"["+w+"]",l.errSchemaPath=n+"/"+w,i+=" "+e.validate(l)+" ",l.baseId=o,f&&(i+=" if ("+c+") { ",s+="}"));return f&&(i+=u?" if (true) { ":" "+s.slice(0,-1)+" "),i}},7227:e=>{"use strict";e.exports=function(e,A,r){var i=" ",a=e.level,t=e.dataLevel,n=e.schema[A],f=e.schemaPath+e.util.getProperty(A),l=e.errSchemaPath+"/"+A,s=!e.opts.allErrors,c="data"+(t||""),o="valid"+a,u="errs__"+a,b=e.util.copy(e),h="";b.level++;var w="valid"+b.level;if(n.every((function(A){return e.opts.strictKeywords?"object"==typeof A&&Object.keys(A).length>0||!1===A:e.util.schemaHasRules(A,e.RULES.all)}))){var k=b.baseId;i+=" var "+u+" = errors; var "+o+" = false; ";var d=e.compositeRule;e.compositeRule=b.compositeRule=!0;var v=n;if(v)for(var g,m=-1,p=v.length-1;m{"use strict";e.exports=function(e,A,r){var i=" ",a=e.schema[A],t=e.errSchemaPath+"/"+A,n=(e.opts.allErrors,e.util.toQuotedString(a));return!0===e.opts.$comment?i+=" console.log("+n+");":"function"==typeof e.opts.$comment&&(i+=" self._opts.$comment("+n+", "+e.util.toQuotedString(t)+", validate.root.schema);"),i}},2532:e=>{"use strict";e.exports=function(e,A,r){var i=" ",a=e.level,t=e.dataLevel,n=e.schema[A],f=e.schemaPath+e.util.getProperty(A),l=e.errSchemaPath+"/"+A,s=!e.opts.allErrors,c="data"+(t||""),o="valid"+a,u=e.opts.$data&&n&&n.$data;u&&(i+=" var schema"+a+" = "+e.util.getData(n.$data,t,e.dataPathArr)+"; "),u||(i+=" var schema"+a+" = validate.schema"+f+";"),i+="var "+o+" = equal("+c+", schema"+a+"); if (!"+o+") { ";var b=b||[];b.push(i),i="",!1!==e.createErrors?(i+=" { keyword: 'const' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { allowedValue: schema"+a+" } ",!1!==e.opts.messages&&(i+=" , message: 'should be equal to constant' "),e.opts.verbose&&(i+=" , schema: validate.schema"+f+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),i+=" } "):i+=" {} ";var h=i;return i=b.pop(),!e.compositeRule&&s?e.async?i+=" throw new ValidationError(["+h+"]); ":i+=" validate.errors = ["+h+"]; return false; ":i+=" var err = "+h+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",i+=" }",s&&(i+=" else { "),i}},1097:e=>{"use strict";e.exports=function(e,A,r){var i=" ",a=e.level,t=e.dataLevel,n=e.schema[A],f=e.schemaPath+e.util.getProperty(A),l=e.errSchemaPath+"/"+A,s=!e.opts.allErrors,c="data"+(t||""),o="valid"+a,u="errs__"+a,b=e.util.copy(e);b.level++;var h="valid"+b.level,w="i"+a,k=b.dataLevel=e.dataLevel+1,d="data"+k,v=e.baseId,g=e.opts.strictKeywords?"object"==typeof n&&Object.keys(n).length>0||!1===n:e.util.schemaHasRules(n,e.RULES.all);if(i+="var "+u+" = errors;var "+o+";",g){var m=e.compositeRule;e.compositeRule=b.compositeRule=!0,b.schema=n,b.schemaPath=f,b.errSchemaPath=l,i+=" var "+h+" = false; for (var "+w+" = 0; "+w+" < "+c+".length; "+w+"++) { ",b.errorPath=e.util.getPathExpr(e.errorPath,w,e.opts.jsonPointers,!0);var p=c+"["+w+"]";b.dataPathArr[k]=w;var E=e.validate(b);b.baseId=v,e.util.varOccurences(E,d)<2?i+=" "+e.util.varReplace(E,d,p)+" ":i+=" var "+d+" = "+p+"; "+E+" ",i+=" if ("+h+") break; } ",e.compositeRule=b.compositeRule=m,i+=" if (!"+h+") {"}else i+=" if ("+c+".length == 0) {";var B=B||[];B.push(i),i="",!1!==e.createErrors?(i+=" { keyword: 'contains' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: {} ",!1!==e.opts.messages&&(i+=" , message: 'should contain a valid item' "),e.opts.verbose&&(i+=" , schema: validate.schema"+f+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),i+=" } "):i+=" {} ";var y=i;return i=B.pop(),!e.compositeRule&&s?e.async?i+=" throw new ValidationError(["+y+"]); ":i+=" validate.errors = ["+y+"]; return false; ":i+=" var err = "+y+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",i+=" } else { ",g&&(i+=" errors = "+u+"; if (vErrors !== null) { if ("+u+") vErrors.length = "+u+"; else vErrors = null; } "),e.opts.allErrors&&(i+=" } "),i}},9679:e=>{"use strict";e.exports=function(e,A,r){var i,a,t=" ",n=e.level,f=e.dataLevel,l=e.schema[A],s=e.schemaPath+e.util.getProperty(A),c=e.errSchemaPath+"/"+A,o=!e.opts.allErrors,u="data"+(f||""),b="valid"+n,h="errs__"+n,w=e.opts.$data&&l&&l.$data;w?(t+=" var schema"+n+" = "+e.util.getData(l.$data,f,e.dataPathArr)+"; ",a="schema"+n):a=l;var k,d,v,g,m,p=this,E="definition"+n,B=p.definition,y="";if(w&&B.$data){m="keywordValidate"+n;var C=B.validateSchema;t+=" var "+E+" = RULES.custom['"+A+"'].definition; var "+m+" = "+E+".validate;"}else{if(!(g=e.useCustomRule(p,l,e.schema,e)))return;a="validate.schema"+s,m=g.code,k=B.compile,d=B.inline,v=B.macro}var I=m+".errors",Z="i"+n,G="ruleErr"+n,L=B.async;if(L&&!e.async)throw new Error("async keyword in sync schema");if(d||v||(t+=I+" = null;"),t+="var "+h+" = errors;var "+b+";",w&&B.$data&&(y+="}",t+=" if ("+a+" === undefined) { "+b+" = true; } else { ",C&&(y+="}",t+=" "+b+" = "+E+".validateSchema("+a+"); if ("+b+") { ")),d)B.statements?t+=" "+g.validate+" ":t+=" "+b+" = "+g.validate+"; ";else if(v){var Q=e.util.copy(e);y="",Q.level++;var D="valid"+Q.level;Q.schema=g.validate,Q.schemaPath="";var z=e.compositeRule;e.compositeRule=Q.compositeRule=!0;var W=e.validate(Q).replace(/validate\.schema/g,m);e.compositeRule=Q.compositeRule=z,t+=" "+W}else{(V=V||[]).push(t),t="",t+=" "+m+".call( ",e.opts.passContext?t+="this":t+="self",k||!1===B.schema?t+=" , "+u+" ":t+=" , "+a+" , "+u+" , validate.schema"+e.schemaPath+" ",t+=" , (dataPath || '')",'""'!=e.errorPath&&(t+=" + "+e.errorPath);var Y=f?"data"+(f-1||""):"parentData",F=f?e.dataPathArr[f]:"parentDataProperty",M=t+=" , "+Y+" , "+F+" , rootData ) ";t=V.pop(),!1===B.errors?(t+=" "+b+" = ",L&&(t+="await "),t+=M+"; "):t+=L?" var "+(I="customErrors"+n)+" = null; try { "+b+" = await "+M+"; } catch (e) { "+b+" = false; if (e instanceof ValidationError) "+I+" = e.errors; else throw e; } ":" "+I+" = null; "+b+" = "+M+"; "}if(B.modifying&&(t+=" if ("+Y+") "+u+" = "+Y+"["+F+"];"),t+=""+y,B.valid)o&&(t+=" if (true) { ");else{var V;t+=" if ( ",void 0===B.valid?(t+=" !",t+=v?""+D:""+b):t+=" "+!B.valid+" ",t+=") { ",i=p.keyword,(V=V||[]).push(t),t="",(V=V||[]).push(t),t="",!1!==e.createErrors?(t+=" { keyword: '"+(i||"custom")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(c)+" , params: { keyword: '"+p.keyword+"' } ",!1!==e.opts.messages&&(t+=" , message: 'should pass \""+p.keyword+"\" keyword validation' "),e.opts.verbose&&(t+=" , schema: validate.schema"+s+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+u+" "),t+=" } "):t+=" {} ";var N=t;t=V.pop(),!e.compositeRule&&o?e.async?t+=" throw new ValidationError(["+N+"]); ":t+=" validate.errors = ["+N+"]; return false; ":t+=" var err = "+N+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ";var R=t;t=V.pop(),d?B.errors?"full"!=B.errors&&(t+=" for (var "+Z+"="+h+"; "+Z+"{"use strict";e.exports=function(e,A,r){var i=" ",a=e.level,t=e.dataLevel,n=e.schema[A],f=e.schemaPath+e.util.getProperty(A),l=e.errSchemaPath+"/"+A,s=!e.opts.allErrors,c="data"+(t||""),o="errs__"+a,u=e.util.copy(e),b="";u.level++;var h="valid"+u.level,w={},k={},d=e.opts.ownProperties;for(p in n)if("__proto__"!=p){var v=n[p],g=Array.isArray(v)?k:w;g[p]=v}i+="var "+o+" = errors;";var m=e.errorPath;for(var p in i+="var missing"+a+";",k)if((g=k[p]).length){if(i+=" if ( "+c+e.util.getProperty(p)+" !== undefined ",d&&(i+=" && Object.prototype.hasOwnProperty.call("+c+", '"+e.util.escapeQuotes(p)+"') "),s){i+=" && ( ";var E=g;if(E)for(var B=-1,y=E.length-1;B0||!1===v:e.util.schemaHasRules(v,e.RULES.all))&&(i+=" "+h+" = true; if ( "+c+e.util.getProperty(p)+" !== undefined ",d&&(i+=" && Object.prototype.hasOwnProperty.call("+c+", '"+e.util.escapeQuotes(p)+"') "),i+=") { ",u.schema=v,u.schemaPath=f+e.util.getProperty(p),u.errSchemaPath=l+"/"+e.util.escapeFragment(p),i+=" "+e.validate(u)+" ",u.baseId=F,i+=" } ",s&&(i+=" if ("+h+") { ",b+="}"));return s&&(i+=" "+b+" if ("+o+" == errors) {"),i}},6107:e=>{"use strict";e.exports=function(e,A,r){var i=" ",a=e.level,t=e.dataLevel,n=e.schema[A],f=e.schemaPath+e.util.getProperty(A),l=e.errSchemaPath+"/"+A,s=!e.opts.allErrors,c="data"+(t||""),o="valid"+a,u=e.opts.$data&&n&&n.$data;u&&(i+=" var schema"+a+" = "+e.util.getData(n.$data,t,e.dataPathArr)+"; ");var b="i"+a,h="schema"+a;u||(i+=" var "+h+" = validate.schema"+f+";"),i+="var "+o+";",u&&(i+=" if (schema"+a+" === undefined) "+o+" = true; else if (!Array.isArray(schema"+a+")) "+o+" = false; else {"),i+=o+" = false;for (var "+b+"=0; "+b+"<"+h+".length; "+b+"++) if (equal("+c+", "+h+"["+b+"])) { "+o+" = true; break; }",u&&(i+=" } "),i+=" if (!"+o+") { ";var w=w||[];w.push(i),i="",!1!==e.createErrors?(i+=" { keyword: 'enum' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { allowedValues: schema"+a+" } ",!1!==e.opts.messages&&(i+=" , message: 'should be equal to one of the allowed values' "),e.opts.verbose&&(i+=" , schema: validate.schema"+f+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),i+=" } "):i+=" {} ";var k=i;return i=w.pop(),!e.compositeRule&&s?e.async?i+=" throw new ValidationError(["+k+"]); ":i+=" validate.errors = ["+k+"]; return false; ":i+=" var err = "+k+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",i+=" }",s&&(i+=" else { "),i}},6043:e=>{"use strict";e.exports=function(e,A,r){var i=" ",a=e.level,t=e.dataLevel,n=e.schema[A],f=e.schemaPath+e.util.getProperty(A),l=e.errSchemaPath+"/"+A,s=!e.opts.allErrors,c="data"+(t||"");if(!1===e.opts.format)return s&&(i+=" if (true) { "),i;var o,u=e.opts.$data&&n&&n.$data;u?(i+=" var schema"+a+" = "+e.util.getData(n.$data,t,e.dataPathArr)+"; ",o="schema"+a):o=n;var b=e.opts.unknownFormats,h=Array.isArray(b);if(u)i+=" var "+(w="format"+a)+" = formats["+o+"]; var "+(k="isObject"+a)+" = typeof "+w+" == 'object' && !("+w+" instanceof RegExp) && "+w+".validate; var "+(d="formatType"+a)+" = "+k+" && "+w+".type || 'string'; if ("+k+") { ",e.async&&(i+=" var async"+a+" = "+w+".async; "),i+=" "+w+" = "+w+".validate; } if ( ",u&&(i+=" ("+o+" !== undefined && typeof "+o+" != 'string') || "),i+=" (","ignore"!=b&&(i+=" ("+o+" && !"+w+" ",h&&(i+=" && self._opts.unknownFormats.indexOf("+o+") == -1 "),i+=") || "),i+=" ("+w+" && "+d+" == '"+r+"' && !(typeof "+w+" == 'function' ? ",e.async?i+=" (async"+a+" ? await "+w+"("+c+") : "+w+"("+c+")) ":i+=" "+w+"("+c+") ",i+=" : "+w+".test("+c+"))))) {";else{var w;if(!(w=e.formats[n])){if("ignore"==b)return e.logger.warn('unknown format "'+n+'" ignored in schema at path "'+e.errSchemaPath+'"'),s&&(i+=" if (true) { "),i;if(h&&b.indexOf(n)>=0)return s&&(i+=" if (true) { "),i;throw new Error('unknown format "'+n+'" is used in schema at path "'+e.errSchemaPath+'"')}var k,d=(k="object"==typeof w&&!(w instanceof RegExp)&&w.validate)&&w.type||"string";if(k){var v=!0===w.async;w=w.validate}if(d!=r)return s&&(i+=" if (true) { "),i;if(v){if(!e.async)throw new Error("async format in sync schema");i+=" if (!(await "+(g="formats"+e.util.getProperty(n)+".validate")+"("+c+"))) { "}else{i+=" if (! ";var g="formats"+e.util.getProperty(n);k&&(g+=".validate"),i+="function"==typeof w?" "+g+"("+c+") ":" "+g+".test("+c+") ",i+=") { "}}var m=m||[];m.push(i),i="",!1!==e.createErrors?(i+=" { keyword: 'format' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { format: ",i+=u?""+o:""+e.util.toQuotedString(n),i+=" } ",!1!==e.opts.messages&&(i+=" , message: 'should match format \"",i+=u?"' + "+o+" + '":""+e.util.escapeQuotes(n),i+="\"' "),e.opts.verbose&&(i+=" , schema: ",i+=u?"validate.schema"+f:""+e.util.toQuotedString(n),i+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),i+=" } "):i+=" {} ";var p=i;return i=m.pop(),!e.compositeRule&&s?e.async?i+=" throw new ValidationError(["+p+"]); ":i+=" validate.errors = ["+p+"]; return false; ":i+=" var err = "+p+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",i+=" } ",s&&(i+=" else { "),i}},1108:e=>{"use strict";e.exports=function(e,A,r){var i=" ",a=e.level,t=e.dataLevel,n=e.schema[A],f=e.schemaPath+e.util.getProperty(A),l=e.errSchemaPath+"/"+A,s=!e.opts.allErrors,c="data"+(t||""),o="valid"+a,u="errs__"+a,b=e.util.copy(e);b.level++;var h="valid"+b.level,w=e.schema.then,k=e.schema.else,d=void 0!==w&&(e.opts.strictKeywords?"object"==typeof w&&Object.keys(w).length>0||!1===w:e.util.schemaHasRules(w,e.RULES.all)),v=void 0!==k&&(e.opts.strictKeywords?"object"==typeof k&&Object.keys(k).length>0||!1===k:e.util.schemaHasRules(k,e.RULES.all)),g=b.baseId;if(d||v){var m;b.createErrors=!1,b.schema=n,b.schemaPath=f,b.errSchemaPath=l,i+=" var "+u+" = errors; var "+o+" = true; ";var p=e.compositeRule;e.compositeRule=b.compositeRule=!0,i+=" "+e.validate(b)+" ",b.baseId=g,b.createErrors=!0,i+=" errors = "+u+"; if (vErrors !== null) { if ("+u+") vErrors.length = "+u+"; else vErrors = null; } ",e.compositeRule=b.compositeRule=p,d?(i+=" if ("+h+") { ",b.schema=e.schema.then,b.schemaPath=e.schemaPath+".then",b.errSchemaPath=e.errSchemaPath+"/then",i+=" "+e.validate(b)+" ",b.baseId=g,i+=" "+o+" = "+h+"; ",d&&v?i+=" var "+(m="ifClause"+a)+" = 'then'; ":m="'then'",i+=" } ",v&&(i+=" else { ")):i+=" if (!"+h+") { ",v&&(b.schema=e.schema.else,b.schemaPath=e.schemaPath+".else",b.errSchemaPath=e.errSchemaPath+"/else",i+=" "+e.validate(b)+" ",b.baseId=g,i+=" "+o+" = "+h+"; ",d&&v?i+=" var "+(m="ifClause"+a)+" = 'else'; ":m="'else'",i+=" } "),i+=" if (!"+o+") { var err = ",!1!==e.createErrors?(i+=" { keyword: 'if' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { failingKeyword: "+m+" } ",!1!==e.opts.messages&&(i+=" , message: 'should match \"' + "+m+" + '\" schema' "),e.opts.verbose&&(i+=" , schema: validate.schema"+f+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),i+=" } "):i+=" {} ",i+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",!e.compositeRule&&s&&(e.async?i+=" throw new ValidationError(vErrors); ":i+=" validate.errors = vErrors; return false; "),i+=" } ",s&&(i+=" else { ")}else s&&(i+=" if (true) { ");return i}},557:(e,A,r)=>{"use strict";e.exports={$ref:r(1357),allOf:r(5109),anyOf:r(7227),$comment:r(6697),const:r(2532),contains:r(1097),dependencies:r(5160),enum:r(6107),format:r(6043),if:r(1108),items:r(3180),maximum:r(4485),minimum:r(4485),maxItems:r(184),minItems:r(184),maxLength:r(4993),minLength:r(4993),maxProperties:r(6564),minProperties:r(6564),multipleOf:r(6427),not:r(6048),oneOf:r(2331),pattern:r(6283),properties:r(2363),propertyNames:r(316),required:r(8687),uniqueItems:r(328),validate:r(7768)}},3180:e=>{"use strict";e.exports=function(e,A,r){var i=" ",a=e.level,t=e.dataLevel,n=e.schema[A],f=e.schemaPath+e.util.getProperty(A),l=e.errSchemaPath+"/"+A,s=!e.opts.allErrors,c="data"+(t||""),o="valid"+a,u="errs__"+a,b=e.util.copy(e),h="";b.level++;var w="valid"+b.level,k="i"+a,d=b.dataLevel=e.dataLevel+1,v="data"+d,g=e.baseId;if(i+="var "+u+" = errors;var "+o+";",Array.isArray(n)){var m=e.schema.additionalItems;if(!1===m){i+=" "+o+" = "+c+".length <= "+n.length+"; ";var p=l;l=e.errSchemaPath+"/additionalItems",i+=" if (!"+o+") { ";var E=E||[];E.push(i),i="",!1!==e.createErrors?(i+=" { keyword: 'additionalItems' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { limit: "+n.length+" } ",!1!==e.opts.messages&&(i+=" , message: 'should NOT have more than "+n.length+" items' "),e.opts.verbose&&(i+=" , schema: false , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),i+=" } "):i+=" {} ";var B=i;i=E.pop(),!e.compositeRule&&s?e.async?i+=" throw new ValidationError(["+B+"]); ":i+=" validate.errors = ["+B+"]; return false; ":i+=" var err = "+B+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",i+=" } ",l=p,s&&(h+="}",i+=" else { ")}var y=n;if(y)for(var C,I=-1,Z=y.length-1;I0||!1===C:e.util.schemaHasRules(C,e.RULES.all)){i+=" "+w+" = true; if ("+c+".length > "+I+") { ";var G=c+"["+I+"]";b.schema=C,b.schemaPath=f+"["+I+"]",b.errSchemaPath=l+"/"+I,b.errorPath=e.util.getPathExpr(e.errorPath,I,e.opts.jsonPointers,!0),b.dataPathArr[d]=I;var L=e.validate(b);b.baseId=g,e.util.varOccurences(L,v)<2?i+=" "+e.util.varReplace(L,v,G)+" ":i+=" var "+v+" = "+G+"; "+L+" ",i+=" } ",s&&(i+=" if ("+w+") { ",h+="}")}"object"==typeof m&&(e.opts.strictKeywords?"object"==typeof m&&Object.keys(m).length>0||!1===m:e.util.schemaHasRules(m,e.RULES.all))&&(b.schema=m,b.schemaPath=e.schemaPath+".additionalItems",b.errSchemaPath=e.errSchemaPath+"/additionalItems",i+=" "+w+" = true; if ("+c+".length > "+n.length+") { for (var "+k+" = "+n.length+"; "+k+" < "+c+".length; "+k+"++) { ",b.errorPath=e.util.getPathExpr(e.errorPath,k,e.opts.jsonPointers,!0),G=c+"["+k+"]",b.dataPathArr[d]=k,L=e.validate(b),b.baseId=g,e.util.varOccurences(L,v)<2?i+=" "+e.util.varReplace(L,v,G)+" ":i+=" var "+v+" = "+G+"; "+L+" ",s&&(i+=" if (!"+w+") break; "),i+=" } } ",s&&(i+=" if ("+w+") { ",h+="}"))}else(e.opts.strictKeywords?"object"==typeof n&&Object.keys(n).length>0||!1===n:e.util.schemaHasRules(n,e.RULES.all))&&(b.schema=n,b.schemaPath=f,b.errSchemaPath=l,i+=" for (var "+k+" = 0; "+k+" < "+c+".length; "+k+"++) { ",b.errorPath=e.util.getPathExpr(e.errorPath,k,e.opts.jsonPointers,!0),G=c+"["+k+"]",b.dataPathArr[d]=k,L=e.validate(b),b.baseId=g,e.util.varOccurences(L,v)<2?i+=" "+e.util.varReplace(L,v,G)+" ":i+=" var "+v+" = "+G+"; "+L+" ",s&&(i+=" if (!"+w+") break; "),i+=" }");return s&&(i+=" "+h+" if ("+u+" == errors) {"),i}},6427:e=>{"use strict";e.exports=function(e,A,r){var i,a=" ",t=e.level,n=e.dataLevel,f=e.schema[A],l=e.schemaPath+e.util.getProperty(A),s=e.errSchemaPath+"/"+A,c=!e.opts.allErrors,o="data"+(n||""),u=e.opts.$data&&f&&f.$data;if(u?(a+=" var schema"+t+" = "+e.util.getData(f.$data,n,e.dataPathArr)+"; ",i="schema"+t):i=f,!u&&"number"!=typeof f)throw new Error(A+" must be number");a+="var division"+t+";if (",u&&(a+=" "+i+" !== undefined && ( typeof "+i+" != 'number' || "),a+=" (division"+t+" = "+o+" / "+i+", ",e.opts.multipleOfPrecision?a+=" Math.abs(Math.round(division"+t+") - division"+t+") > 1e-"+e.opts.multipleOfPrecision+" ":a+=" division"+t+" !== parseInt(division"+t+") ",a+=" ) ",u&&(a+=" ) "),a+=" ) { ";var b=b||[];b.push(a),a="",!1!==e.createErrors?(a+=" { keyword: 'multipleOf' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(s)+" , params: { multipleOf: "+i+" } ",!1!==e.opts.messages&&(a+=" , message: 'should be multiple of ",a+=u?"' + "+i:i+"'"),e.opts.verbose&&(a+=" , schema: ",a+=u?"validate.schema"+l:""+f,a+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+o+" "),a+=" } "):a+=" {} ";var h=a;return a=b.pop(),!e.compositeRule&&c?e.async?a+=" throw new ValidationError(["+h+"]); ":a+=" validate.errors = ["+h+"]; return false; ":a+=" var err = "+h+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+="} ",c&&(a+=" else { "),a}},6048:e=>{"use strict";e.exports=function(e,A,r){var i=" ",a=e.level,t=e.dataLevel,n=e.schema[A],f=e.schemaPath+e.util.getProperty(A),l=e.errSchemaPath+"/"+A,s=!e.opts.allErrors,c="data"+(t||""),o="errs__"+a,u=e.util.copy(e);u.level++;var b="valid"+u.level;if(e.opts.strictKeywords?"object"==typeof n&&Object.keys(n).length>0||!1===n:e.util.schemaHasRules(n,e.RULES.all)){u.schema=n,u.schemaPath=f,u.errSchemaPath=l,i+=" var "+o+" = errors; ";var h,w=e.compositeRule;e.compositeRule=u.compositeRule=!0,u.createErrors=!1,u.opts.allErrors&&(h=u.opts.allErrors,u.opts.allErrors=!1),i+=" "+e.validate(u)+" ",u.createErrors=!0,h&&(u.opts.allErrors=h),e.compositeRule=u.compositeRule=w,i+=" if ("+b+") { ";var k=k||[];k.push(i),i="",!1!==e.createErrors?(i+=" { keyword: 'not' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: {} ",!1!==e.opts.messages&&(i+=" , message: 'should NOT be valid' "),e.opts.verbose&&(i+=" , schema: validate.schema"+f+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),i+=" } "):i+=" {} ";var d=i;i=k.pop(),!e.compositeRule&&s?e.async?i+=" throw new ValidationError(["+d+"]); ":i+=" validate.errors = ["+d+"]; return false; ":i+=" var err = "+d+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",i+=" } else { errors = "+o+"; if (vErrors !== null) { if ("+o+") vErrors.length = "+o+"; else vErrors = null; } ",e.opts.allErrors&&(i+=" } ")}else i+=" var err = ",!1!==e.createErrors?(i+=" { keyword: 'not' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: {} ",!1!==e.opts.messages&&(i+=" , message: 'should NOT be valid' "),e.opts.verbose&&(i+=" , schema: validate.schema"+f+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),i+=" } "):i+=" {} ",i+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",s&&(i+=" if (false) { ");return i}},2331:e=>{"use strict";e.exports=function(e,A,r){var i=" ",a=e.level,t=e.dataLevel,n=e.schema[A],f=e.schemaPath+e.util.getProperty(A),l=e.errSchemaPath+"/"+A,s=!e.opts.allErrors,c="data"+(t||""),o="valid"+a,u="errs__"+a,b=e.util.copy(e),h="";b.level++;var w="valid"+b.level,k=b.baseId,d="prevValid"+a,v="passingSchemas"+a;i+="var "+u+" = errors , "+d+" = false , "+o+" = false , "+v+" = null; ";var g=e.compositeRule;e.compositeRule=b.compositeRule=!0;var m=n;if(m)for(var p,E=-1,B=m.length-1;E0||!1===p:e.util.schemaHasRules(p,e.RULES.all))?(b.schema=p,b.schemaPath=f+"["+E+"]",b.errSchemaPath=l+"/"+E,i+=" "+e.validate(b)+" ",b.baseId=k):i+=" var "+w+" = true; ",E&&(i+=" if ("+w+" && "+d+") { "+o+" = false; "+v+" = ["+v+", "+E+"]; } else { ",h+="}"),i+=" if ("+w+") { "+o+" = "+d+" = true; "+v+" = "+E+"; }";return e.compositeRule=b.compositeRule=g,i+=h+"if (!"+o+") { var err = ",!1!==e.createErrors?(i+=" { keyword: 'oneOf' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { passingSchemas: "+v+" } ",!1!==e.opts.messages&&(i+=" , message: 'should match exactly one schema in oneOf' "),e.opts.verbose&&(i+=" , schema: validate.schema"+f+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),i+=" } "):i+=" {} ",i+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",!e.compositeRule&&s&&(e.async?i+=" throw new ValidationError(vErrors); ":i+=" validate.errors = vErrors; return false; "),i+="} else { errors = "+u+"; if (vErrors !== null) { if ("+u+") vErrors.length = "+u+"; else vErrors = null; }",e.opts.allErrors&&(i+=" } "),i}},6283:e=>{"use strict";e.exports=function(e,A,r){var i,a=" ",t=e.level,n=e.dataLevel,f=e.schema[A],l=e.schemaPath+e.util.getProperty(A),s=e.errSchemaPath+"/"+A,c=!e.opts.allErrors,o="data"+(n||""),u=e.opts.$data&&f&&f.$data;u?(a+=" var schema"+t+" = "+e.util.getData(f.$data,n,e.dataPathArr)+"; ",i="schema"+t):i=f,a+="if ( ",u&&(a+=" ("+i+" !== undefined && typeof "+i+" != 'string') || "),a+=" !"+(u?"(new RegExp("+i+"))":e.usePattern(f))+".test("+o+") ) { ";var b=b||[];b.push(a),a="",!1!==e.createErrors?(a+=" { keyword: 'pattern' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(s)+" , params: { pattern: ",a+=u?""+i:""+e.util.toQuotedString(f),a+=" } ",!1!==e.opts.messages&&(a+=" , message: 'should match pattern \"",a+=u?"' + "+i+" + '":""+e.util.escapeQuotes(f),a+="\"' "),e.opts.verbose&&(a+=" , schema: ",a+=u?"validate.schema"+l:""+e.util.toQuotedString(f),a+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+o+" "),a+=" } "):a+=" {} ";var h=a;return a=b.pop(),!e.compositeRule&&c?e.async?a+=" throw new ValidationError(["+h+"]); ":a+=" validate.errors = ["+h+"]; return false; ":a+=" var err = "+h+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+="} ",c&&(a+=" else { "),a}},2363:e=>{"use strict";e.exports=function(e,A,r){var i=" ",a=e.level,t=e.dataLevel,n=e.schema[A],f=e.schemaPath+e.util.getProperty(A),l=e.errSchemaPath+"/"+A,s=!e.opts.allErrors,c="data"+(t||""),o="errs__"+a,u=e.util.copy(e),b="";u.level++;var h="valid"+u.level,w="key"+a,k="idx"+a,d=u.dataLevel=e.dataLevel+1,v="data"+d,g="dataProperties"+a,m=Object.keys(n||{}).filter(W),p=e.schema.patternProperties||{},E=Object.keys(p).filter(W),B=e.schema.additionalProperties,y=m.length||E.length,C=!1===B,I="object"==typeof B&&Object.keys(B).length,Z=e.opts.removeAdditional,G=C||I||Z,L=e.opts.ownProperties,Q=e.baseId,D=e.schema.required;if(D&&(!e.opts.$data||!D.$data)&&D.length8)i+=" || validate.schema"+f+".hasOwnProperty("+w+") ";else{var Y=m;if(Y)for(var F=-1,M=Y.length-1;F0||!1===K:e.util.schemaHasRules(K,e.RULES.all)){var $=e.util.getProperty(O),ee=(S=c+$,U&&void 0!==K.default);if(u.schema=K,u.schemaPath=f+$,u.errSchemaPath=l+"/"+e.util.escapeFragment(O),u.errorPath=e.util.getPath(e.errorPath,O,e.opts.jsonPointers),u.dataPathArr[d]=e.util.toQuotedString(O),j=e.validate(u),u.baseId=Q,e.util.varOccurences(j,v)<2){j=e.util.varReplace(j,v,S);var Ae=S}else Ae=v,i+=" var "+v+" = "+S+"; ";if(ee)i+=" "+j+" ";else{if(z&&z[O]){i+=" if ( "+Ae+" === undefined ",L&&(i+=" || ! Object.prototype.hasOwnProperty.call("+c+", '"+e.util.escapeQuotes(O)+"') "),i+=") { "+h+" = false; ",x=e.errorPath,H=l;var re,ie=e.util.escapeQuotes(O);e.opts._errorDataPathProperty&&(e.errorPath=e.util.getPath(x,O,e.opts.jsonPointers)),l=e.errSchemaPath+"/required",(re=re||[]).push(i),i="",!1!==e.createErrors?(i+=" { keyword: 'required' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { missingProperty: '"+ie+"' } ",!1!==e.opts.messages&&(i+=" , message: '",e.opts._errorDataPathProperty?i+="is a required property":i+="should have required property \\'"+ie+"\\'",i+="' "),e.opts.verbose&&(i+=" , schema: validate.schema"+f+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),i+=" } "):i+=" {} ",P=i,i=re.pop(),!e.compositeRule&&s?e.async?i+=" throw new ValidationError(["+P+"]); ":i+=" validate.errors = ["+P+"]; return false; ":i+=" var err = "+P+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",l=H,e.errorPath=x,i+=" } else { "}else s?(i+=" if ( "+Ae+" === undefined ",L&&(i+=" || ! Object.prototype.hasOwnProperty.call("+c+", '"+e.util.escapeQuotes(O)+"') "),i+=") { "+h+" = true; } else { "):(i+=" if ("+Ae+" !== undefined ",L&&(i+=" && Object.prototype.hasOwnProperty.call("+c+", '"+e.util.escapeQuotes(O)+"') "),i+=" ) { ");i+=" "+j+" } "}}s&&(i+=" if ("+h+") { ",b+="}")}}if(E.length){var ae=E;if(ae)for(var te,ne=-1,fe=ae.length-1;ne0||!1===K:e.util.schemaHasRules(K,e.RULES.all))&&(u.schema=K,u.schemaPath=e.schemaPath+".patternProperties"+e.util.getProperty(te),u.errSchemaPath=e.errSchemaPath+"/patternProperties/"+e.util.escapeFragment(te),i+=L?" "+g+" = "+g+" || Object.keys("+c+"); for (var "+k+"=0; "+k+"<"+g+".length; "+k+"++) { var "+w+" = "+g+"["+k+"]; ":" for (var "+w+" in "+c+") { ",i+=" if ("+e.usePattern(te)+".test("+w+")) { ",u.errorPath=e.util.getPathExpr(e.errorPath,w,e.opts.jsonPointers),S=c+"["+w+"]",u.dataPathArr[d]=w,j=e.validate(u),u.baseId=Q,e.util.varOccurences(j,v)<2?i+=" "+e.util.varReplace(j,v,S)+" ":i+=" var "+v+" = "+S+"; "+j+" ",s&&(i+=" if (!"+h+") break; "),i+=" } ",s&&(i+=" else "+h+" = true; "),i+=" } ",s&&(i+=" if ("+h+") { ",b+="}"))}return s&&(i+=" "+b+" if ("+o+" == errors) {"),i}},316:e=>{"use strict";e.exports=function(e,A,r){var i=" ",a=e.level,t=e.dataLevel,n=e.schema[A],f=e.schemaPath+e.util.getProperty(A),l=e.errSchemaPath+"/"+A,s=!e.opts.allErrors,c="data"+(t||""),o="errs__"+a,u=e.util.copy(e);u.level++;var b="valid"+u.level;if(i+="var "+o+" = errors;",e.opts.strictKeywords?"object"==typeof n&&Object.keys(n).length>0||!1===n:e.util.schemaHasRules(n,e.RULES.all)){u.schema=n,u.schemaPath=f,u.errSchemaPath=l;var h="key"+a,w="idx"+a,k="i"+a,d="' + "+h+" + '",v="data"+(u.dataLevel=e.dataLevel+1),g="dataProperties"+a,m=e.opts.ownProperties,p=e.baseId;m&&(i+=" var "+g+" = undefined; "),i+=m?" "+g+" = "+g+" || Object.keys("+c+"); for (var "+w+"=0; "+w+"<"+g+".length; "+w+"++) { var "+h+" = "+g+"["+w+"]; ":" for (var "+h+" in "+c+") { ",i+=" var startErrs"+a+" = errors; ";var E=h,B=e.compositeRule;e.compositeRule=u.compositeRule=!0;var y=e.validate(u);u.baseId=p,e.util.varOccurences(y,v)<2?i+=" "+e.util.varReplace(y,v,E)+" ":i+=" var "+v+" = "+E+"; "+y+" ",e.compositeRule=u.compositeRule=B,i+=" if (!"+b+") { for (var "+k+"=startErrs"+a+"; "+k+"{"use strict";e.exports=function(e,A,r){var i,a,t=" ",n=e.level,f=e.dataLevel,l=e.schema[A],s=e.errSchemaPath+"/"+A,c=!e.opts.allErrors,o="data"+(f||""),u="valid"+n;if("#"==l||"#/"==l)e.isRoot?(i=e.async,a="validate"):(i=!0===e.root.schema.$async,a="root.refVal[0]");else{var b=e.resolveRef(e.baseId,l,e.isRoot);if(void 0===b){var h=e.MissingRefError.message(e.baseId,l);if("fail"==e.opts.missingRefs){e.logger.error(h),(v=v||[]).push(t),t="",!1!==e.createErrors?(t+=" { keyword: '$ref' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(s)+" , params: { ref: '"+e.util.escapeQuotes(l)+"' } ",!1!==e.opts.messages&&(t+=" , message: 'can\\'t resolve reference "+e.util.escapeQuotes(l)+"' "),e.opts.verbose&&(t+=" , schema: "+e.util.toQuotedString(l)+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+o+" "),t+=" } "):t+=" {} ";var w=t;t=v.pop(),!e.compositeRule&&c?e.async?t+=" throw new ValidationError(["+w+"]); ":t+=" validate.errors = ["+w+"]; return false; ":t+=" var err = "+w+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",c&&(t+=" if (false) { ")}else{if("ignore"!=e.opts.missingRefs)throw new e.MissingRefError(e.baseId,l,h);e.logger.warn(h),c&&(t+=" if (true) { ")}}else if(b.inline){var k=e.util.copy(e);k.level++;var d="valid"+k.level;k.schema=b.schema,k.schemaPath="",k.errSchemaPath=l,t+=" "+e.validate(k).replace(/validate\.schema/g,b.code)+" ",c&&(t+=" if ("+d+") { ")}else i=!0===b.$async||e.async&&!1!==b.$async,a=b.code}if(a){var v;(v=v||[]).push(t),t="",e.opts.passContext?t+=" "+a+".call(this, ":t+=" "+a+"( ",t+=" "+o+", (dataPath || '')",'""'!=e.errorPath&&(t+=" + "+e.errorPath);var g=t+=" , "+(f?"data"+(f-1||""):"parentData")+" , "+(f?e.dataPathArr[f]:"parentDataProperty")+", rootData) ";if(t=v.pop(),i){if(!e.async)throw new Error("async schema referenced by sync schema");c&&(t+=" var "+u+"; "),t+=" try { await "+g+"; ",c&&(t+=" "+u+" = true; "),t+=" } catch (e) { if (!(e instanceof ValidationError)) throw e; if (vErrors === null) vErrors = e.errors; else vErrors = vErrors.concat(e.errors); errors = vErrors.length; ",c&&(t+=" "+u+" = false; "),t+=" } ",c&&(t+=" if ("+u+") { ")}else t+=" if (!"+g+") { if (vErrors === null) vErrors = "+a+".errors; else vErrors = vErrors.concat("+a+".errors); errors = vErrors.length; } ",c&&(t+=" else { ")}return t}},8687:e=>{"use strict";e.exports=function(e,A,r){var i=" ",a=e.level,t=e.dataLevel,n=e.schema[A],f=e.schemaPath+e.util.getProperty(A),l=e.errSchemaPath+"/"+A,s=!e.opts.allErrors,c="data"+(t||""),o="valid"+a,u=e.opts.$data&&n&&n.$data;u&&(i+=" var schema"+a+" = "+e.util.getData(n.$data,t,e.dataPathArr)+"; ");var b="schema"+a;if(!u)if(n.length0||!1===g:e.util.schemaHasRules(g,e.RULES.all))||(h[h.length]=k)}}else h=n;if(u||h.length){var m=e.errorPath,p=u||h.length>=e.opts.loopRequired,E=e.opts.ownProperties;if(s)if(i+=" var missing"+a+"; ",p){u||(i+=" var "+b+" = validate.schema"+f+"; ");var B="' + "+(L="schema"+a+"["+(Z="i"+a)+"]")+" + '";e.opts._errorDataPathProperty&&(e.errorPath=e.util.getPathExpr(m,L,e.opts.jsonPointers)),i+=" var "+o+" = true; ",u&&(i+=" if (schema"+a+" === undefined) "+o+" = true; else if (!Array.isArray(schema"+a+")) "+o+" = false; else {"),i+=" for (var "+Z+" = 0; "+Z+" < "+b+".length; "+Z+"++) { "+o+" = "+c+"["+b+"["+Z+"]] !== undefined ",E&&(i+=" && Object.prototype.hasOwnProperty.call("+c+", "+b+"["+Z+"]) "),i+="; if (!"+o+") break; } ",u&&(i+=" } "),i+=" if (!"+o+") { ",(C=C||[]).push(i),i="",!1!==e.createErrors?(i+=" { keyword: 'required' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { missingProperty: '"+B+"' } ",!1!==e.opts.messages&&(i+=" , message: '",e.opts._errorDataPathProperty?i+="is a required property":i+="should have required property \\'"+B+"\\'",i+="' "),e.opts.verbose&&(i+=" , schema: validate.schema"+f+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),i+=" } "):i+=" {} ";var y=i;i=C.pop(),!e.compositeRule&&s?e.async?i+=" throw new ValidationError(["+y+"]); ":i+=" validate.errors = ["+y+"]; return false; ":i+=" var err = "+y+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",i+=" } else { "}else{i+=" if ( ";var C,I=h;if(I)for(var Z=-1,G=I.length-1;Z{"use strict";e.exports=function(e,A,r){var i,a=" ",t=e.level,n=e.dataLevel,f=e.schema[A],l=e.schemaPath+e.util.getProperty(A),s=e.errSchemaPath+"/"+A,c=!e.opts.allErrors,o="data"+(n||""),u="valid"+t,b=e.opts.$data&&f&&f.$data;if(b?(a+=" var schema"+t+" = "+e.util.getData(f.$data,n,e.dataPathArr)+"; ",i="schema"+t):i=f,(f||b)&&!1!==e.opts.uniqueItems){b&&(a+=" var "+u+"; if ("+i+" === false || "+i+" === undefined) "+u+" = true; else if (typeof "+i+" != 'boolean') "+u+" = false; else { "),a+=" var i = "+o+".length , "+u+" = true , j; if (i > 1) { ";var h=e.schema.items&&e.schema.items.type,w=Array.isArray(h);if(!h||"object"==h||"array"==h||w&&(h.indexOf("object")>=0||h.indexOf("array")>=0))a+=" outer: for (;i--;) { for (j = i; j--;) { if (equal("+o+"[i], "+o+"[j])) { "+u+" = false; break outer; } } } ";else{a+=" var itemIndices = {}, item; for (;i--;) { var item = "+o+"[i]; ";var k="checkDataType"+(w?"s":"");a+=" if ("+e.util[k](h,"item",e.opts.strictNumbers,!0)+") continue; ",w&&(a+=" if (typeof item == 'string') item = '\"' + item; "),a+=" if (typeof itemIndices[item] == 'number') { "+u+" = false; j = itemIndices[item]; break; } itemIndices[item] = i; } "}a+=" } ",b&&(a+=" } "),a+=" if (!"+u+") { ";var d=d||[];d.push(a),a="",!1!==e.createErrors?(a+=" { keyword: 'uniqueItems' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(s)+" , params: { i: i, j: j } ",!1!==e.opts.messages&&(a+=" , message: 'should NOT have duplicate items (items ## ' + j + ' and ' + i + ' are identical)' "),e.opts.verbose&&(a+=" , schema: ",a+=b?"validate.schema"+l:""+f,a+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+o+" "),a+=" } "):a+=" {} ";var v=a;a=d.pop(),!e.compositeRule&&c?e.async?a+=" throw new ValidationError(["+v+"]); ":a+=" validate.errors = ["+v+"]; return false; ":a+=" var err = "+v+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+=" } ",c&&(a+=" else { ")}else c&&(a+=" if (true) { ");return a}},7768:e=>{"use strict";e.exports=function(e,A,r){var i="",a=!0===e.schema.$async,t=e.util.schemaHasRulesExcept(e.schema,e.RULES.all,"$ref"),n=e.self._getId(e.schema);if(e.opts.strictKeywords){var f=e.util.schemaUnknownRules(e.schema,e.RULES.keywords);if(f){var l="unknown keyword: "+f;if("log"!==e.opts.strictKeywords)throw new Error(l);e.logger.warn(l)}}if(e.isTop&&(i+=" var validate = ",a&&(e.async=!0,i+="async "),i+="function(data, dataPath, parentData, parentDataProperty, rootData) { 'use strict'; ",n&&(e.opts.sourceCode||e.opts.processCode)&&(i+=" /*# sourceURL="+n+" */ ")),"boolean"==typeof e.schema||!t&&!e.schema.$ref){A="false schema";var s=e.level,c=e.dataLevel,o=e.schema[A],u=e.schemaPath+e.util.getProperty(A),b=e.errSchemaPath+"/"+A,h=!e.opts.allErrors,w="data"+(c||""),k="valid"+s;if(!1===e.schema){e.isTop?h=!0:i+=" var "+k+" = false; ",(S=S||[]).push(i),i="",!1!==e.createErrors?(i+=" { keyword: 'false schema' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(b)+" , params: {} ",!1!==e.opts.messages&&(i+=" , message: 'boolean schema is false' "),e.opts.verbose&&(i+=" , schema: false , parentSchema: validate.schema"+e.schemaPath+" , data: "+w+" "),i+=" } "):i+=" {} ";var d=i;i=S.pop(),!e.compositeRule&&h?e.async?i+=" throw new ValidationError(["+d+"]); ":i+=" validate.errors = ["+d+"]; return false; ":i+=" var err = "+d+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; "}else e.isTop?i+=a?" return data; ":" validate.errors = null; return true; ":i+=" var "+k+" = true; ";return e.isTop&&(i+=" }; return validate; "),i}if(e.isTop){var v=e.isTop;if(s=e.level=0,c=e.dataLevel=0,w="data",e.rootId=e.resolve.fullPath(e.self._getId(e.root.schema)),e.baseId=e.baseId||e.rootId,delete e.isTop,e.dataPathArr=[""],void 0!==e.schema.default&&e.opts.useDefaults&&e.opts.strictDefaults){var g="default is ignored in the schema root";if("log"!==e.opts.strictDefaults)throw new Error(g);e.logger.warn(g)}i+=" var vErrors = null; ",i+=" var errors = 0; ",i+=" if (rootData === undefined) rootData = data; "}else{if(s=e.level,w="data"+((c=e.dataLevel)||""),n&&(e.baseId=e.resolve.url(e.baseId,n)),a&&!e.async)throw new Error("async schema in sync schema");i+=" var errs_"+s+" = errors;"}k="valid"+s,h=!e.opts.allErrors;var m="",p="",E=e.schema.type,B=Array.isArray(E);if(E&&e.opts.nullable&&!0===e.schema.nullable&&(B?-1==E.indexOf("null")&&(E=E.concat("null")):"null"!=E&&(E=[E,"null"],B=!0)),B&&1==E.length&&(E=E[0],B=!1),e.schema.$ref&&t){if("fail"==e.opts.extendRefs)throw new Error('$ref: validation keywords used in schema at path "'+e.errSchemaPath+'" (see option extendRefs)');!0!==e.opts.extendRefs&&(t=!1,e.logger.warn('$ref: keywords ignored in schema at path "'+e.errSchemaPath+'"'))}if(e.schema.$comment&&e.opts.$comment&&(i+=" "+e.RULES.all.$comment.code(e,"$comment")),E){if(e.opts.coerceTypes)var y=e.util.coerceToTypes(e.opts.coerceTypes,E);var C=e.RULES.types[E];if(y||B||!0===C||C&&!q(C)){u=e.schemaPath+".type",b=e.errSchemaPath+"/type",u=e.schemaPath+".type",b=e.errSchemaPath+"/type";var I=B?"checkDataTypes":"checkDataType";if(i+=" if ("+e.util[I](E,w,e.opts.strictNumbers,!0)+") { ",y){var Z="dataType"+s,G="coerced"+s;i+=" var "+Z+" = typeof "+w+"; var "+G+" = undefined; ","array"==e.opts.coerceTypes&&(i+=" if ("+Z+" == 'object' && Array.isArray("+w+") && "+w+".length == 1) { "+w+" = "+w+"[0]; "+Z+" = typeof "+w+"; if ("+e.util.checkDataType(e.schema.type,w,e.opts.strictNumbers)+") "+G+" = "+w+"; } "),i+=" if ("+G+" !== undefined) ; ";var L=y;if(L)for(var Q,D=-1,z=L.length-1;D{"use strict";var i=/^[a-z_$][a-z0-9_$-]*$/i,a=r(9679),t=r(6296);e.exports={add:function(e,A){var r=this.RULES;if(r.keywords[e])throw new Error("Keyword "+e+" is already defined");if(!i.test(e))throw new Error("Keyword "+e+" is not a valid identifier");if(A){this.validateKeyword(A,!0);var t=A.type;if(Array.isArray(t))for(var n=0;n{"use strict";e.exports=JSON.parse('{"$schema":"http://json-schema.org/draft-07/schema#","$id":"https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#","description":"Meta-schema for $data reference (JSON Schema extension proposal)","type":"object","required":["$data"],"properties":{"$data":{"type":"string","anyOf":[{"format":"relative-json-pointer"},{"format":"json-pointer"}]}},"additionalProperties":false}')},9302:e=>{"use strict";e.exports=JSON.parse('{"$schema":"http://json-schema.org/draft-07/schema#","$id":"http://json-schema.org/draft-07/schema#","title":"Core schema meta-schema","definitions":{"schemaArray":{"type":"array","minItems":1,"items":{"$ref":"#"}},"nonNegativeInteger":{"type":"integer","minimum":0},"nonNegativeIntegerDefault0":{"allOf":[{"$ref":"#/definitions/nonNegativeInteger"},{"default":0}]},"simpleTypes":{"enum":["array","boolean","integer","null","number","object","string"]},"stringArray":{"type":"array","items":{"type":"string"},"uniqueItems":true,"default":[]}},"type":["object","boolean"],"properties":{"$id":{"type":"string","format":"uri-reference"},"$schema":{"type":"string","format":"uri"},"$ref":{"type":"string","format":"uri-reference"},"$comment":{"type":"string"},"title":{"type":"string"},"description":{"type":"string"},"default":true,"readOnly":{"type":"boolean","default":false},"examples":{"type":"array","items":true},"multipleOf":{"type":"number","exclusiveMinimum":0},"maximum":{"type":"number"},"exclusiveMaximum":{"type":"number"},"minimum":{"type":"number"},"exclusiveMinimum":{"type":"number"},"maxLength":{"$ref":"#/definitions/nonNegativeInteger"},"minLength":{"$ref":"#/definitions/nonNegativeIntegerDefault0"},"pattern":{"type":"string","format":"regex"},"additionalItems":{"$ref":"#"},"items":{"anyOf":[{"$ref":"#"},{"$ref":"#/definitions/schemaArray"}],"default":true},"maxItems":{"$ref":"#/definitions/nonNegativeInteger"},"minItems":{"$ref":"#/definitions/nonNegativeIntegerDefault0"},"uniqueItems":{"type":"boolean","default":false},"contains":{"$ref":"#"},"maxProperties":{"$ref":"#/definitions/nonNegativeInteger"},"minProperties":{"$ref":"#/definitions/nonNegativeIntegerDefault0"},"required":{"$ref":"#/definitions/stringArray"},"additionalProperties":{"$ref":"#"},"definitions":{"type":"object","additionalProperties":{"$ref":"#"},"default":{}},"properties":{"type":"object","additionalProperties":{"$ref":"#"},"default":{}},"patternProperties":{"type":"object","additionalProperties":{"$ref":"#"},"propertyNames":{"format":"regex"},"default":{}},"dependencies":{"type":"object","additionalProperties":{"anyOf":[{"$ref":"#"},{"$ref":"#/definitions/stringArray"}]}},"propertyNames":{"$ref":"#"},"const":true,"enum":{"type":"array","items":true,"minItems":1,"uniqueItems":true},"type":{"anyOf":[{"$ref":"#/definitions/simpleTypes"},{"type":"array","items":{"$ref":"#/definitions/simpleTypes"},"minItems":1,"uniqueItems":true}]},"format":{"type":"string"},"contentMediaType":{"type":"string"},"contentEncoding":{"type":"string"},"if":{"$ref":"#"},"then":{"$ref":"#"},"else":{"$ref":"#"},"allOf":{"$ref":"#/definitions/schemaArray"},"anyOf":{"$ref":"#/definitions/schemaArray"},"oneOf":{"$ref":"#/definitions/schemaArray"},"not":{"$ref":"#"}},"default":true}')},1183:e=>{"use strict";e.exports=function e(A,r){if(A===r)return!0;if(A&&r&&"object"==typeof A&&"object"==typeof r){if(A.constructor!==r.constructor)return!1;var i,a,t;if(Array.isArray(A)){if((i=A.length)!=r.length)return!1;for(a=i;0!=a--;)if(!e(A[a],r[a]))return!1;return!0}if(A.constructor===RegExp)return A.source===r.source&&A.flags===r.flags;if(A.valueOf!==Object.prototype.valueOf)return A.valueOf()===r.valueOf();if(A.toString!==Object.prototype.toString)return A.toString()===r.toString();if((i=(t=Object.keys(A)).length)!==Object.keys(r).length)return!1;for(a=i;0!=a--;)if(!Object.prototype.hasOwnProperty.call(r,t[a]))return!1;for(a=i;0!=a--;){var n=t[a];if(!e(A[n],r[n]))return!1}return!0}return A!=A&&r!=r}},9741:e=>{"use strict";e.exports=function(e,A){A||(A={}),"function"==typeof A&&(A={cmp:A});var r,i="boolean"==typeof A.cycles&&A.cycles,a=A.cmp&&(r=A.cmp,function(e){return function(A,i){var a={key:A,value:e[A]},t={key:i,value:e[i]};return r(a,t)}}),t=[];return function e(A){if(A&&A.toJSON&&"function"==typeof A.toJSON&&(A=A.toJSON()),void 0!==A){if("number"==typeof A)return isFinite(A)?""+A:"null";if("object"!=typeof A)return JSON.stringify(A);var r,n;if(Array.isArray(A)){for(n="[",r=0;r{"use strict";const i=r(5576).buildOptions,a={attributeNamePrefix:"@_",attrNodeName:!1,textNodeName:"#text",ignoreAttributes:!0,cdataTagName:!1,cdataPositionChar:"\\c",format:!1,indentBy:" ",supressEmptyNode:!1,tagValueProcessor:function(e){return e},attrValueProcessor:function(e){return e}},t=["attributeNamePrefix","attrNodeName","textNodeName","ignoreAttributes","cdataTagName","cdataPositionChar","format","indentBy","supressEmptyNode","tagValueProcessor","attrValueProcessor"];function n(e){this.options=i(e,a,t),this.options.ignoreAttributes||this.options.attrNodeName?this.isAttribute=function(){return!1}:(this.attrPrefixLen=this.options.attributeNamePrefix.length,this.isAttribute=h),this.options.cdataTagName?this.isCDATA=w:this.isCDATA=function(){return!1},this.replaceCDATAstr=f,this.replaceCDATAarr=l,this.options.format?(this.indentate=b,this.tagEndChar=">\n",this.newLine="\n"):(this.indentate=function(){return""},this.tagEndChar=">",this.newLine=""),this.options.supressEmptyNode?(this.buildTextNode=u,this.buildObjNode=c):(this.buildTextNode=o,this.buildObjNode=s),this.buildTextValNode=o,this.buildObjectNode=s}function f(e,A){return e=this.options.tagValueProcessor(""+e),""===this.options.cdataPositionChar||""===e?e+"");return e+this.newLine}function s(e,A,r,i){return r&&!e.includes("<")?this.indentate(i)+"<"+A+r+">"+e+""+this.options.tagValueProcessor(e)+"{"use strict";const i=function(e){return String.fromCharCode(e)},a={nilChar:i(176),missingChar:i(201),nilPremitive:i(175),missingPremitive:i(200),emptyChar:i(178),emptyValue:i(177),boundryChar:i(179),objStart:i(198),arrStart:i(204),arrayEnd:i(185)},t=[a.nilChar,a.nilPremitive,a.missingChar,a.missingPremitive,a.boundryChar,a.emptyChar,a.emptyValue,a.arrayEnd,a.objStart,a.arrStart],n=function(e,A,r){if("string"==typeof A)return e&&e[0]&&void 0!==e[0].val?f(e[0].val,A):f(e,A);{const t=void 0===(i=e)?a.missingChar:null===i?a.nilChar:!(i.child&&0===Object.keys(i.child).length&&(!i.attrsMap||0===Object.keys(i.attrsMap).length))||a.emptyChar;if(!0===t){let i="";if(Array.isArray(A)){i+=a.arrStart;const t=A[0],s=e.length;if("string"==typeof t)for(let A=0;A{"use strict";const i=r(5576),a=function(e,A){const r={};if(!(e.child&&!i.isEmptyObject(e.child)||e.attrsMap&&!i.isEmptyObject(e.attrsMap)))return i.isExist(e.val)?e.val:"";i.isExist(e.val)&&("string"!=typeof e.val||""!==e.val&&e.val!==A.cdataPositionChar)&&("strict"===A.arrayMode?r[A.textNodeName]=[e.val]:r[A.textNodeName]=e.val),i.merge(r,e.attrsMap,A.arrayMode);const t=Object.keys(e.child);for(let i=0;i1)for(var f in r[n]=[],e.child[n])r[n].push(a(e.child[n][f],A));else if(!0===A.arrayMode){const i=a(e.child[n][0],A);r[n]="object"==typeof i?[i]:i}else"strict"===A.arrayMode?r[n]=[a(e.child[n][0],A)]:r[n]=a(e.child[n][0],A)}return r};A.convertToJson=a},5269:(e,A,r)=>{"use strict";const i=r(5576),a=r(5576).buildOptions,t=r(268),n=function(e,A,r){let a="{";const t=Object.keys(e.child);for(let r=0;r1){for(var l in a+='"'+f+'" : [ ',e.child[f])a+=n(e.child[f][l],A)+" , ";a=a.substr(0,a.length-1)+" ] "}else a+='"'+f+'" : '+n(e.child[f][0],A)+" ,"}return i.merge(a,e.attrsMap),i.isEmptyObject(a)?i.isExist(e.val)?e.val:"":(i.isExist(e.val)&&("string"!=typeof e.val||""!==e.val&&e.val!==A.cdataPositionChar)&&(a+='"'+A.textNodeName+'" : '+(!0!==(s=e.val)&&!1!==s&&isNaN(s)?'"'+s+'"':s)),","===a[a.length-1]&&(a=a.substr(0,a.length-2)),a+"}");var s};A.convertToJsonString=function(e,A){return(A=a(A,t.defaultOptions,t.props)).indentBy=A.indentBy||"",n(e,A,0)}},1951:(e,A,r)=>{"use strict";const i=r(743),a=r(268),t=r(268),n=r(5576).buildOptions,f=r(3309);A.parse=function(e,A,r){if(r){!0===r&&(r={});const A=f.validate(e,r);if(!0!==A)throw Error(A.err.msg)}A=n(A,t.defaultOptions,t.props);const l=a.getTraversalObj(e,A);return i.convertToJson(l,A)},A.convertTonimn=r(2459).convert2nimn,A.getTraversalObj=a.getTraversalObj,A.convertToJson=i.convertToJson,A.convertToJsonString=r(5269).convertToJsonString,A.validate=f.validate,A.j2xParser=r(6265),A.parseToNimn=function(e,r,i){return A.convertTonimn(A.getTraversalObj(e,i),r,i)}},5576:(e,A)=>{"use strict";const r="[:A-Za-z_\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Za-z_\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.\\d\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*",i=new RegExp("^"+r+"$");A.isExist=function(e){return void 0!==e},A.isEmptyObject=function(e){return 0===Object.keys(e).length},A.merge=function(e,A,r){if(A){const i=Object.keys(A),a=i.length;for(let t=0;t{"use strict";const i=r(5576),a={allowBooleanAttributes:!1},t=["allowBooleanAttributes"];function n(e,A){for(var r=A;A5&&"xml"===i)return u("InvalidXml","XML declaration allowed only at the start of the document.",h(e,A));if("?"==e[A]&&">"==e[A+1]){A++;break}}return A}function f(e,A){if(e.length>A+5&&"-"===e[A+1]&&"-"===e[A+2]){for(A+=3;A"===e[A+2]){A+=2;break}}else if(e.length>A+8&&"D"===e[A+1]&&"O"===e[A+2]&&"C"===e[A+3]&&"T"===e[A+4]&&"Y"===e[A+5]&&"P"===e[A+6]&&"E"===e[A+7]){let r=1;for(A+=8;A"===e[A]&&(r--,0===r))break}else if(e.length>A+9&&"["===e[A+1]&&"C"===e[A+2]&&"D"===e[A+3]&&"A"===e[A+4]&&"T"===e[A+5]&&"A"===e[A+6]&&"["===e[A+7])for(A+=8;A"===e[A+2]){A+=2;break}return A}function l(e,A){let r="",i="",a=!1;for(;A"===e[A]&&""===i){a=!0;break}r+=e[A]}return""===i&&{value:r,index:A,tagClosed:a}}A.validate=function(e,A){A=i.buildOptions(A,a,t);const r=[];let s=!1,b=!1;"\ufeff"===e[0]&&(e=e.substr(1));for(let a=0;a"!==e[a]&&" "!==e[a]&&"\t"!==e[a]&&"\n"!==e[a]&&"\r"!==e[a];a++)n+=e[a];if(n=n.trim(),"/"===n[n.length-1]&&(n=n.substring(0,n.length-1),a--),w=n,!i.isName(w)){let A;return A=0===n.trim().length?"There is an unnecessary space between tag name and backward slash '0)return u("InvalidTag","Closing tag '"+n+"' can't have attributes or invalid starting.",h(e,a));{const A=r.pop();if(n!==A)return u("InvalidTag","Closing tag '"+A+"' is expected inplace of '"+n+"'.",h(e,a));0==r.length&&(b=!0)}}else{const i=c(d,A);if(!0!==i)return u(i.err.code,i.err.msg,h(e,a-d.length+i.err.line));if(!0===b)return u("InvalidXml","Multiple possible root nodes found.",h(e,a));r.push(n),s=!0}for(a++;a0)||u("InvalidXml","Invalid '"+JSON.stringify(r,null,4).replace(/\r?\n/g,"")+"' found.",1):u("InvalidXml","Start tag expected.",1)};const s=new RegExp("(\\s*)([^\\s=]+)(\\s*=)?(\\s*(['\"])(([\\s\\S])*?)\\5)?","g");function c(e,A){const r=i.getAllMatches(e,s),a={};for(let i=0;i{"use strict";e.exports=function(e,A,r){this.tagname=e,this.parent=A,this.child={},this.attrsMap={},this.val=r,this.addChild=function(e){Array.isArray(this.child[e.tagname])?this.child[e.tagname].push(e):this.child[e.tagname]=[e]}}},268:(e,A,r)=>{"use strict";const i=r(5576),a=r(5576).buildOptions,t=r(1457);"<((!\\[CDATA\\[([\\s\\S]*?)(]]>))|((NAME:)?(NAME))([^>]*)>|((\\/)(NAME)\\s*>))([^<]*)".replace(/NAME/g,i.nameRegexp),!Number.parseInt&&window.parseInt&&(Number.parseInt=window.parseInt),!Number.parseFloat&&window.parseFloat&&(Number.parseFloat=window.parseFloat);const n={attributeNamePrefix:"@_",attrNodeName:!1,textNodeName:"#text",ignoreAttributes:!0,ignoreNameSpace:!1,allowBooleanAttributes:!1,parseNodeValue:!0,parseAttributeValue:!1,arrayMode:!1,trimValues:!0,cdataTagName:!1,cdataPositionChar:"\\c",tagValueProcessor:function(e,A){return e},attrValueProcessor:function(e,A){return e},stopNodes:[]};A.defaultOptions=n;const f=["attributeNamePrefix","attrNodeName","textNodeName","ignoreAttributes","ignoreNameSpace","allowBooleanAttributes","parseNodeValue","parseAttributeValue","arrayMode","trimValues","cdataTagName","cdataPositionChar","tagValueProcessor","attrValueProcessor","parseTrueNumberOnly","stopNodes"];function l(e,A,r){return A&&(r.trimValues&&(A=A.trim()),A=c(A=r.tagValueProcessor(A,e),r.parseNodeValue,r.parseTrueNumberOnly)),A}function s(e,A){if(A.ignoreNameSpace){const A=e.split(":"),r="/"===e.charAt(0)?"/":"";if("xmlns"===A[0])return"";2===A.length&&(e=r+A[1])}return e}function c(e,A,r){if(A&&"string"==typeof e){let A;return""===e.trim()||isNaN(e)?A="true"===e||"false"!==e&&e:(-1!==e.indexOf("0x")?A=Number.parseInt(e,16):-1!==e.indexOf(".")?(A=Number.parseFloat(e),e=e.replace(/\.?0+$/,"")):A=Number.parseInt(e,10),r&&(A=String(A)===e?A:e)),A}return i.isExist(e)?e:""}A.props=f;const o=new RegExp("([^\\s=]+)\\s*(=\\s*(['\"])(.*?)\\3)?","g");function u(e,A){if(!A.ignoreAttributes&&"string"==typeof e){e=e.replace(/\r?\n/g," ");const r=i.getAllMatches(e,o),a=r.length,t={};for(let e=0;e"===A)return{data:i,index:a};"\t"===A&&(A=" ")}i+=A}}function h(e,A,r,i){const a=e.indexOf(A,r);if(-1===a)throw new Error(i);return a+A.length-1}A.getTraversalObj=function(e,A){e=e.replace(/(\r\n)|\n/," "),A=a(A,n,f);const r=new t("!xml");let s=r,c="";for(let r=0;r",r,"Closing Tag is not closed.");let t=e.substring(r+2,a).trim();if(A.ignoreNameSpace){const e=t.indexOf(":");-1!==e&&(t=t.substr(e+1))}s&&(s.val?s.val=i.getValue(s.val)+""+l(t,c,A):s.val=l(t,c,A)),A.stopNodes.length&&A.stopNodes.includes(s.tagname)&&(s.child=[],null==s.attrsMap&&(s.attrsMap={}),s.val=e.substr(s.startIndex+1,r-s.startIndex-1)),s=s.parent,c="",r=a}else if("?"===e[r+1])r=h(e,"?>",r,"Pi Tag is not closed.");else if("!--"===e.substr(r+1,3))r=h(e,"--\x3e",r,"Comment is not closed.");else if("!D"===e.substr(r+1,2)){const A=h(e,">",r,"DOCTYPE is not closed.");r=e.substring(r,A).indexOf("[")>=0?e.indexOf("]>",r)+1:A}else if("!["===e.substr(r+1,2)){const a=h(e,"]]>",r,"CDATA is not closed.")-2,n=e.substring(r+9,a);if(c&&(s.val=i.getValue(s.val)+""+l(s.tagname,c,A),c=""),A.cdataTagName){const e=new t(A.cdataTagName,s,n);s.addChild(e),s.val=i.getValue(s.val)+A.cdataPositionChar,n&&(e.val=n)}else s.val=(s.val||"")+(n||"");r=a+2}else{const a=b(e,r+1);let n=a.data;const f=a.index,o=n.indexOf(" ");let h=n;if(-1!==o&&(h=n.substr(0,o).trimRight(),n=n.substr(o+1)),A.ignoreNameSpace){const e=h.indexOf(":");-1!==e&&(h=h.substr(e+1))}if(s&&c&&"!xml"!==s.tagname&&(s.val=i.getValue(s.val)+""+l(s.tagname,c,A)),n.length>0&&n.lastIndexOf("/")===n.length-1){"/"===h[h.length-1]?(h=h.substr(0,h.length-1),n=h):n=n.substr(0,n.length-1);const e=new t(h,s,"");h!==n&&(e.attrsMap=u(n,A)),s.addChild(e)}else{const e=new t(h,s);A.stopNodes.length&&A.stopNodes.includes(e.tagname)&&(e.startIndex=f),h!==n&&(e.attrsMap=u(n,A)),s.addChild(e),s=e}c="",r=f}else c+=e[r];return r}},5631:function(e){var A;A=function(){return function(e){var A={};function r(i){if(A[i])return A[i].exports;var a=A[i]={exports:{},id:i,loaded:!1};return e[i].call(a.exports,a,a.exports,r),a.loaded=!0,a.exports}return r.m=e,r.c=A,r.p="",r(0)}([function(e,A,r){"use strict";var i=r(1).default,a=r(2).default;A.__esModule=!0;var t=i(r(3)),n=a(r(36)),f=a(r(5)),l=i(r(4)),s=i(r(37)),c=a(r(43));function o(){var e=new t.HandlebarsEnvironment;return l.extend(e,t),e.SafeString=n.default,e.Exception=f.default,e.Utils=l,e.escapeExpression=l.escapeExpression,e.VM=s,e.template=function(A){return s.template(A,e)},e}var u=o();u.create=o,c.default(u),u.default=u,A.default=u,e.exports=A.default},function(e,A){"use strict";A.default=function(e){if(e&&e.__esModule)return e;var A={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(A[r]=e[r]);return A.default=e,A},A.__esModule=!0},function(e,A){"use strict";A.default=function(e){return e&&e.__esModule?e:{default:e}},A.__esModule=!0},function(e,A,r){"use strict";var i=r(2).default;A.__esModule=!0,A.HandlebarsEnvironment=o;var a=r(4),t=i(r(5)),n=r(9),f=r(29),l=i(r(31)),s=r(32);A.VERSION="4.7.6",A.COMPILER_REVISION=8,A.LAST_COMPATIBLE_COMPILER_REVISION=7,A.REVISION_CHANGES={1:"<= 1.0.rc.2",2:"== 1.0.0-rc.3",3:"== 1.0.0-rc.4",4:"== 1.x.x",5:"== 2.0.0-alpha.x",6:">= 2.0.0-beta.1",7:">= 4.0.0 <4.3.0",8:">= 4.3.0"};var c="[object Object]";function o(e,A,r){this.helpers=e||{},this.partials=A||{},this.decorators=r||{},n.registerDefaultHelpers(this),f.registerDefaultDecorators(this)}o.prototype={constructor:o,logger:l.default,log:l.default.log,registerHelper:function(e,A){if(a.toString.call(e)===c){if(A)throw new t.default("Arg not supported with multiple helpers");a.extend(this.helpers,e)}else this.helpers[e]=A},unregisterHelper:function(e){delete this.helpers[e]},registerPartial:function(e,A){if(a.toString.call(e)===c)a.extend(this.partials,e);else{if(void 0===A)throw new t.default('Attempting to register a partial called "'+e+'" as undefined');this.partials[e]=A}},unregisterPartial:function(e){delete this.partials[e]},registerDecorator:function(e,A){if(a.toString.call(e)===c){if(A)throw new t.default("Arg not supported with multiple decorators");a.extend(this.decorators,e)}else this.decorators[e]=A},unregisterDecorator:function(e){delete this.decorators[e]},resetLoggedPropertyAccesses:function(){s.resetLoggedProperties()}};var u=l.default.log;A.log=u,A.createFrame=a.createFrame,A.logger=l.default},function(e,A){"use strict";A.__esModule=!0,A.extend=n,A.indexOf=function(e,A){for(var r=0,i=e.length;r":">",'"':""","'":"'","`":"`","=":"="},i=/[&<>"'`=]/g,a=/[&<>"'`=]/;function t(e){return r[e]}function n(e){for(var A=1;A0?(r.ids&&(r.ids=[r.name]),e.helpers.each(A,r)):a(this);if(r.data&&r.ids){var n=i.createFrame(r.data);n.contextPath=i.appendContextPath(r.data.contextPath,r.name),r={data:n}}return t(A,r)}))},e.exports=A.default},function(e,A,r){(function(i){"use strict";var a=r(12).default,t=r(2).default;A.__esModule=!0;var n=r(4),f=t(r(5));A.default=function(e){e.registerHelper("each",(function(e,A){if(!A)throw new f.default("Must pass iterator to #each");var r,t=A.fn,l=A.inverse,s=0,c="",o=void 0,u=void 0;function b(A,r,i){o&&(o.key=A,o.index=r,o.first=0===r,o.last=!!i,u&&(o.contextPath=u+A)),c+=t(e[A],{data:o,blockParams:n.blockParams([e[A],A],[u+A,null])})}if(A.data&&A.ids&&(u=n.appendContextPath(A.data.contextPath,A.ids[0])+"."),n.isFunction(e)&&(e=e.call(this)),A.data&&(o=n.createFrame(A.data)),e&&"object"==typeof e)if(n.isArray(e))for(var h=e.length;s=0?A:parseInt(e,10)}return e},log:function(e){if(e=a.lookupLevel(e),"undefined"!=typeof console&&a.lookupLevel(a.level)<=e){var A=a.methodMap[e];console[A]||(A="log");for(var r=arguments.length,i=Array(r>1?r-1:0),t=1;t=s.LAST_COMPATIBLE_COMPILER_REVISION&&A<=s.COMPILER_REVISION)){if(A\u20D2|\u205F\u200A|\u219D\u0338|\u2202\u0338|\u2220\u20D2|\u2229\uFE00|\u222A\uFE00|\u223C\u20D2|\u223D\u0331|\u223E\u0333|\u2242\u0338|\u224B\u0338|\u224D\u20D2|\u224E\u0338|\u224F\u0338|\u2250\u0338|\u2261\u20E5|\u2264\u20D2|\u2265\u20D2|\u2266\u0338|\u2267\u0338|\u2268\uFE00|\u2269\uFE00|\u226A\u0338|\u226A\u20D2|\u226B\u0338|\u226B\u20D2|\u227F\u0338|\u2282\u20D2|\u2283\u20D2|\u228A\uFE00|\u228B\uFE00|\u228F\u0338|\u2290\u0338|\u2293\uFE00|\u2294\uFE00|\u22B4\u20D2|\u22B5\u20D2|\u22D8\u0338|\u22D9\u0338|\u22DA\uFE00|\u22DB\uFE00|\u22F5\u0338|\u22F9\u0338|\u2933\u0338|\u29CF\u0338|\u29D0\u0338|\u2A6D\u0338|\u2A70\u0338|\u2A7D\u0338|\u2A7E\u0338|\u2AA1\u0338|\u2AA2\u0338|\u2AAC\uFE00|\u2AAD\uFE00|\u2AAF\u0338|\u2AB0\u0338|\u2AC5\u0338|\u2AC6\u0338|\u2ACB\uFE00|\u2ACC\uFE00|\u2AFD\u20E5|[\xA0-\u0113\u0116-\u0122\u0124-\u012B\u012E-\u014D\u0150-\u017E\u0192\u01B5\u01F5\u0237\u02C6\u02C7\u02D8-\u02DD\u0311\u0391-\u03A1\u03A3-\u03A9\u03B1-\u03C9\u03D1\u03D2\u03D5\u03D6\u03DC\u03DD\u03F0\u03F1\u03F5\u03F6\u0401-\u040C\u040E-\u044F\u0451-\u045C\u045E\u045F\u2002-\u2005\u2007-\u2010\u2013-\u2016\u2018-\u201A\u201C-\u201E\u2020-\u2022\u2025\u2026\u2030-\u2035\u2039\u203A\u203E\u2041\u2043\u2044\u204F\u2057\u205F-\u2063\u20AC\u20DB\u20DC\u2102\u2105\u210A-\u2113\u2115-\u211E\u2122\u2124\u2127-\u2129\u212C\u212D\u212F-\u2131\u2133-\u2138\u2145-\u2148\u2153-\u215E\u2190-\u219B\u219D-\u21A7\u21A9-\u21AE\u21B0-\u21B3\u21B5-\u21B7\u21BA-\u21DB\u21DD\u21E4\u21E5\u21F5\u21FD-\u2205\u2207-\u2209\u220B\u220C\u220F-\u2214\u2216-\u2218\u221A\u221D-\u2238\u223A-\u2257\u2259\u225A\u225C\u225F-\u2262\u2264-\u228B\u228D-\u229B\u229D-\u22A5\u22A7-\u22B0\u22B2-\u22BB\u22BD-\u22DB\u22DE-\u22E3\u22E6-\u22F7\u22F9-\u22FE\u2305\u2306\u2308-\u2310\u2312\u2313\u2315\u2316\u231C-\u231F\u2322\u2323\u232D\u232E\u2336\u233D\u233F\u237C\u23B0\u23B1\u23B4-\u23B6\u23DC-\u23DF\u23E2\u23E7\u2423\u24C8\u2500\u2502\u250C\u2510\u2514\u2518\u251C\u2524\u252C\u2534\u253C\u2550-\u256C\u2580\u2584\u2588\u2591-\u2593\u25A1\u25AA\u25AB\u25AD\u25AE\u25B1\u25B3-\u25B5\u25B8\u25B9\u25BD-\u25BF\u25C2\u25C3\u25CA\u25CB\u25EC\u25EF\u25F8-\u25FC\u2605\u2606\u260E\u2640\u2642\u2660\u2663\u2665\u2666\u266A\u266D-\u266F\u2713\u2717\u2720\u2736\u2758\u2772\u2773\u27C8\u27C9\u27E6-\u27ED\u27F5-\u27FA\u27FC\u27FF\u2902-\u2905\u290C-\u2913\u2916\u2919-\u2920\u2923-\u292A\u2933\u2935-\u2939\u293C\u293D\u2945\u2948-\u294B\u294E-\u2976\u2978\u2979\u297B-\u297F\u2985\u2986\u298B-\u2996\u299A\u299C\u299D\u29A4-\u29B7\u29B9\u29BB\u29BC\u29BE-\u29C5\u29C9\u29CD-\u29D0\u29DC-\u29DE\u29E3-\u29E5\u29EB\u29F4\u29F6\u2A00-\u2A02\u2A04\u2A06\u2A0C\u2A0D\u2A10-\u2A17\u2A22-\u2A27\u2A29\u2A2A\u2A2D-\u2A31\u2A33-\u2A3C\u2A3F\u2A40\u2A42-\u2A4D\u2A50\u2A53-\u2A58\u2A5A-\u2A5D\u2A5F\u2A66\u2A6A\u2A6D-\u2A75\u2A77-\u2A9A\u2A9D-\u2AA2\u2AA4-\u2AB0\u2AB3-\u2AC8\u2ACB\u2ACC\u2ACF-\u2ADB\u2AE4\u2AE6-\u2AE9\u2AEB-\u2AF3\u2AFD\uFB00-\uFB04]|\uD835[\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDCCF\uDD04\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDD6B]/g,c={"­":"shy","‌":"zwnj","‍":"zwj","‎":"lrm","⁣":"ic","⁢":"it","⁡":"af","‏":"rlm","​":"ZeroWidthSpace","⁠":"NoBreak","̑":"DownBreve","⃛":"tdot","⃜":"DotDot","\t":"Tab","\n":"NewLine"," ":"puncsp"," ":"MediumSpace"," ":"thinsp"," ":"hairsp"," ":"emsp13"," ":"ensp"," ":"emsp14"," ":"emsp"," ":"numsp"," ":"nbsp","  ":"ThickSpace","‾":"oline",_:"lowbar","‐":"dash","–":"ndash","—":"mdash","―":"horbar",",":"comma",";":"semi","⁏":"bsemi",":":"colon","⩴":"Colone","!":"excl","¡":"iexcl","?":"quest","¿":"iquest",".":"period","‥":"nldr","…":"mldr","·":"middot","'":"apos","‘":"lsquo","’":"rsquo","‚":"sbquo","‹":"lsaquo","›":"rsaquo",'"':"quot","“":"ldquo","”":"rdquo","„":"bdquo","«":"laquo","»":"raquo","(":"lpar",")":"rpar","[":"lsqb","]":"rsqb","{":"lcub","}":"rcub","⌈":"lceil","⌉":"rceil","⌊":"lfloor","⌋":"rfloor","⦅":"lopar","⦆":"ropar","⦋":"lbrke","⦌":"rbrke","⦍":"lbrkslu","⦎":"rbrksld","⦏":"lbrksld","⦐":"rbrkslu","⦑":"langd","⦒":"rangd","⦓":"lparlt","⦔":"rpargt","⦕":"gtlPar","⦖":"ltrPar","⟦":"lobrk","⟧":"robrk","⟨":"lang","⟩":"rang","⟪":"Lang","⟫":"Rang","⟬":"loang","⟭":"roang","❲":"lbbrk","❳":"rbbrk","‖":"Vert","§":"sect","¶":"para","@":"commat","*":"ast","/":"sol",undefined:null,"&":"amp","#":"num","%":"percnt","‰":"permil","‱":"pertenk","†":"dagger","‡":"Dagger","•":"bull","⁃":"hybull","′":"prime","″":"Prime","‴":"tprime","⁗":"qprime","‵":"bprime","⁁":"caret","`":"grave","´":"acute","˜":"tilde","^":"Hat","¯":"macr","˘":"breve","˙":"dot","¨":"die","˚":"ring","˝":"dblac","¸":"cedil","˛":"ogon",ˆ:"circ",ˇ:"caron","°":"deg","©":"copy","®":"reg","℗":"copysr",℘:"wp","℞":"rx","℧":"mho","℩":"iiota","←":"larr","↚":"nlarr","→":"rarr","↛":"nrarr","↑":"uarr","↓":"darr","↔":"harr","↮":"nharr","↕":"varr","↖":"nwarr","↗":"nearr","↘":"searr","↙":"swarr","↝":"rarrw","↝̸":"nrarrw","↞":"Larr","↟":"Uarr","↠":"Rarr","↡":"Darr","↢":"larrtl","↣":"rarrtl","↤":"mapstoleft","↥":"mapstoup","↦":"map","↧":"mapstodown","↩":"larrhk","↪":"rarrhk","↫":"larrlp","↬":"rarrlp","↭":"harrw","↰":"lsh","↱":"rsh","↲":"ldsh","↳":"rdsh","↵":"crarr","↶":"cularr","↷":"curarr","↺":"olarr","↻":"orarr","↼":"lharu","↽":"lhard","↾":"uharr","↿":"uharl","⇀":"rharu","⇁":"rhard","⇂":"dharr","⇃":"dharl","⇄":"rlarr","⇅":"udarr","⇆":"lrarr","⇇":"llarr","⇈":"uuarr","⇉":"rrarr","⇊":"ddarr","⇋":"lrhar","⇌":"rlhar","⇐":"lArr","⇍":"nlArr","⇑":"uArr","⇒":"rArr","⇏":"nrArr","⇓":"dArr","⇔":"iff","⇎":"nhArr","⇕":"vArr","⇖":"nwArr","⇗":"neArr","⇘":"seArr","⇙":"swArr","⇚":"lAarr","⇛":"rAarr","⇝":"zigrarr","⇤":"larrb","⇥":"rarrb","⇵":"duarr","⇽":"loarr","⇾":"roarr","⇿":"hoarr","∀":"forall","∁":"comp","∂":"part","∂̸":"npart","∃":"exist","∄":"nexist","∅":"empty","∇":"Del","∈":"in","∉":"notin","∋":"ni","∌":"notni","϶":"bepsi","∏":"prod","∐":"coprod","∑":"sum","+":"plus","±":"pm","÷":"div","×":"times","<":"lt","≮":"nlt","<⃒":"nvlt","=":"equals","≠":"ne","=⃥":"bne","⩵":"Equal",">":"gt","≯":"ngt",">⃒":"nvgt","¬":"not","|":"vert","¦":"brvbar","−":"minus","∓":"mp","∔":"plusdo","⁄":"frasl","∖":"setmn","∗":"lowast","∘":"compfn","√":"Sqrt","∝":"prop","∞":"infin","∟":"angrt","∠":"ang","∠⃒":"nang","∡":"angmsd","∢":"angsph","∣":"mid","∤":"nmid","∥":"par","∦":"npar","∧":"and","∨":"or","∩":"cap","∩︀":"caps","∪":"cup","∪︀":"cups","∫":"int","∬":"Int","∭":"tint","⨌":"qint","∮":"oint","∯":"Conint","∰":"Cconint","∱":"cwint","∲":"cwconint","∳":"awconint","∴":"there4","∵":"becaus","∶":"ratio","∷":"Colon","∸":"minusd","∺":"mDDot","∻":"homtht","∼":"sim","≁":"nsim","∼⃒":"nvsim","∽":"bsim","∽̱":"race","∾":"ac","∾̳":"acE","∿":"acd","≀":"wr","≂":"esim","≂̸":"nesim","≃":"sime","≄":"nsime","≅":"cong","≇":"ncong","≆":"simne","≈":"ap","≉":"nap","≊":"ape","≋":"apid","≋̸":"napid","≌":"bcong","≍":"CupCap","≭":"NotCupCap","≍⃒":"nvap","≎":"bump","≎̸":"nbump","≏":"bumpe","≏̸":"nbumpe","≐":"doteq","≐̸":"nedot","≑":"eDot","≒":"efDot","≓":"erDot","≔":"colone","≕":"ecolon","≖":"ecir","≗":"cire","≙":"wedgeq","≚":"veeeq","≜":"trie","≟":"equest","≡":"equiv","≢":"nequiv","≡⃥":"bnequiv","≤":"le","≰":"nle","≤⃒":"nvle","≥":"ge","≱":"nge","≥⃒":"nvge","≦":"lE","≦̸":"nlE","≧":"gE","≧̸":"ngE","≨︀":"lvnE","≨":"lnE","≩":"gnE","≩︀":"gvnE","≪":"ll","≪̸":"nLtv","≪⃒":"nLt","≫":"gg","≫̸":"nGtv","≫⃒":"nGt","≬":"twixt","≲":"lsim","≴":"nlsim","≳":"gsim","≵":"ngsim","≶":"lg","≸":"ntlg","≷":"gl","≹":"ntgl","≺":"pr","⊀":"npr","≻":"sc","⊁":"nsc","≼":"prcue","⋠":"nprcue","≽":"sccue","⋡":"nsccue","≾":"prsim","≿":"scsim","≿̸":"NotSucceedsTilde","⊂":"sub","⊄":"nsub","⊂⃒":"vnsub","⊃":"sup","⊅":"nsup","⊃⃒":"vnsup","⊆":"sube","⊈":"nsube","⊇":"supe","⊉":"nsupe","⊊︀":"vsubne","⊊":"subne","⊋︀":"vsupne","⊋":"supne","⊍":"cupdot","⊎":"uplus","⊏":"sqsub","⊏̸":"NotSquareSubset","⊐":"sqsup","⊐̸":"NotSquareSuperset","⊑":"sqsube","⋢":"nsqsube","⊒":"sqsupe","⋣":"nsqsupe","⊓":"sqcap","⊓︀":"sqcaps","⊔":"sqcup","⊔︀":"sqcups","⊕":"oplus","⊖":"ominus","⊗":"otimes","⊘":"osol","⊙":"odot","⊚":"ocir","⊛":"oast","⊝":"odash","⊞":"plusb","⊟":"minusb","⊠":"timesb","⊡":"sdotb","⊢":"vdash","⊬":"nvdash","⊣":"dashv","⊤":"top","⊥":"bot","⊧":"models","⊨":"vDash","⊭":"nvDash","⊩":"Vdash","⊮":"nVdash","⊪":"Vvdash","⊫":"VDash","⊯":"nVDash","⊰":"prurel","⊲":"vltri","⋪":"nltri","⊳":"vrtri","⋫":"nrtri","⊴":"ltrie","⋬":"nltrie","⊴⃒":"nvltrie","⊵":"rtrie","⋭":"nrtrie","⊵⃒":"nvrtrie","⊶":"origof","⊷":"imof","⊸":"mumap","⊹":"hercon","⊺":"intcal","⊻":"veebar","⊽":"barvee","⊾":"angrtvb","⊿":"lrtri","⋀":"Wedge","⋁":"Vee","⋂":"xcap","⋃":"xcup","⋄":"diam","⋅":"sdot","⋆":"Star","⋇":"divonx","⋈":"bowtie","⋉":"ltimes","⋊":"rtimes","⋋":"lthree","⋌":"rthree","⋍":"bsime","⋎":"cuvee","⋏":"cuwed","⋐":"Sub","⋑":"Sup","⋒":"Cap","⋓":"Cup","⋔":"fork","⋕":"epar","⋖":"ltdot","⋗":"gtdot","⋘":"Ll","⋘̸":"nLl","⋙":"Gg","⋙̸":"nGg","⋚︀":"lesg","⋚":"leg","⋛":"gel","⋛︀":"gesl","⋞":"cuepr","⋟":"cuesc","⋦":"lnsim","⋧":"gnsim","⋨":"prnsim","⋩":"scnsim","⋮":"vellip","⋯":"ctdot","⋰":"utdot","⋱":"dtdot","⋲":"disin","⋳":"isinsv","⋴":"isins","⋵":"isindot","⋵̸":"notindot","⋶":"notinvc","⋷":"notinvb","⋹":"isinE","⋹̸":"notinE","⋺":"nisd","⋻":"xnis","⋼":"nis","⋽":"notnivc","⋾":"notnivb","⌅":"barwed","⌆":"Barwed","⌌":"drcrop","⌍":"dlcrop","⌎":"urcrop","⌏":"ulcrop","⌐":"bnot","⌒":"profline","⌓":"profsurf","⌕":"telrec","⌖":"target","⌜":"ulcorn","⌝":"urcorn","⌞":"dlcorn","⌟":"drcorn","⌢":"frown","⌣":"smile","⌭":"cylcty","⌮":"profalar","⌶":"topbot","⌽":"ovbar","⌿":"solbar","⍼":"angzarr","⎰":"lmoust","⎱":"rmoust","⎴":"tbrk","⎵":"bbrk","⎶":"bbrktbrk","⏜":"OverParenthesis","⏝":"UnderParenthesis","⏞":"OverBrace","⏟":"UnderBrace","⏢":"trpezium","⏧":"elinters","␣":"blank","─":"boxh","│":"boxv","┌":"boxdr","┐":"boxdl","└":"boxur","┘":"boxul","├":"boxvr","┤":"boxvl","┬":"boxhd","┴":"boxhu","┼":"boxvh","═":"boxH","║":"boxV","╒":"boxdR","╓":"boxDr","╔":"boxDR","╕":"boxdL","╖":"boxDl","╗":"boxDL","╘":"boxuR","╙":"boxUr","╚":"boxUR","╛":"boxuL","╜":"boxUl","╝":"boxUL","╞":"boxvR","╟":"boxVr","╠":"boxVR","╡":"boxvL","╢":"boxVl","╣":"boxVL","╤":"boxHd","╥":"boxhD","╦":"boxHD","╧":"boxHu","╨":"boxhU","╩":"boxHU","╪":"boxvH","╫":"boxVh","╬":"boxVH","▀":"uhblk","▄":"lhblk","█":"block","░":"blk14","▒":"blk12","▓":"blk34","□":"squ","▪":"squf","▫":"EmptyVerySmallSquare","▭":"rect","▮":"marker","▱":"fltns","△":"xutri","▴":"utrif","▵":"utri","▸":"rtrif","▹":"rtri","▽":"xdtri","▾":"dtrif","▿":"dtri","◂":"ltrif","◃":"ltri","◊":"loz","○":"cir","◬":"tridot","◯":"xcirc","◸":"ultri","◹":"urtri","◺":"lltri","◻":"EmptySmallSquare","◼":"FilledSmallSquare","★":"starf","☆":"star","☎":"phone","♀":"female","♂":"male","♠":"spades","♣":"clubs","♥":"hearts","♦":"diams","♪":"sung","✓":"check","✗":"cross","✠":"malt","✶":"sext","❘":"VerticalSeparator","⟈":"bsolhsub","⟉":"suphsol","⟵":"xlarr","⟶":"xrarr","⟷":"xharr","⟸":"xlArr","⟹":"xrArr","⟺":"xhArr","⟼":"xmap","⟿":"dzigrarr","⤂":"nvlArr","⤃":"nvrArr","⤄":"nvHarr","⤅":"Map","⤌":"lbarr","⤍":"rbarr","⤎":"lBarr","⤏":"rBarr","⤐":"RBarr","⤑":"DDotrahd","⤒":"UpArrowBar","⤓":"DownArrowBar","⤖":"Rarrtl","⤙":"latail","⤚":"ratail","⤛":"lAtail","⤜":"rAtail","⤝":"larrfs","⤞":"rarrfs","⤟":"larrbfs","⤠":"rarrbfs","⤣":"nwarhk","⤤":"nearhk","⤥":"searhk","⤦":"swarhk","⤧":"nwnear","⤨":"toea","⤩":"tosa","⤪":"swnwar","⤳":"rarrc","⤳̸":"nrarrc","⤵":"cudarrr","⤶":"ldca","⤷":"rdca","⤸":"cudarrl","⤹":"larrpl","⤼":"curarrm","⤽":"cularrp","⥅":"rarrpl","⥈":"harrcir","⥉":"Uarrocir","⥊":"lurdshar","⥋":"ldrushar","⥎":"LeftRightVector","⥏":"RightUpDownVector","⥐":"DownLeftRightVector","⥑":"LeftUpDownVector","⥒":"LeftVectorBar","⥓":"RightVectorBar","⥔":"RightUpVectorBar","⥕":"RightDownVectorBar","⥖":"DownLeftVectorBar","⥗":"DownRightVectorBar","⥘":"LeftUpVectorBar","⥙":"LeftDownVectorBar","⥚":"LeftTeeVector","⥛":"RightTeeVector","⥜":"RightUpTeeVector","⥝":"RightDownTeeVector","⥞":"DownLeftTeeVector","⥟":"DownRightTeeVector","⥠":"LeftUpTeeVector","⥡":"LeftDownTeeVector","⥢":"lHar","⥣":"uHar","⥤":"rHar","⥥":"dHar","⥦":"luruhar","⥧":"ldrdhar","⥨":"ruluhar","⥩":"rdldhar","⥪":"lharul","⥫":"llhard","⥬":"rharul","⥭":"lrhard","⥮":"udhar","⥯":"duhar","⥰":"RoundImplies","⥱":"erarr","⥲":"simrarr","⥳":"larrsim","⥴":"rarrsim","⥵":"rarrap","⥶":"ltlarr","⥸":"gtrarr","⥹":"subrarr","⥻":"suplarr","⥼":"lfisht","⥽":"rfisht","⥾":"ufisht","⥿":"dfisht","⦚":"vzigzag","⦜":"vangrt","⦝":"angrtvbd","⦤":"ange","⦥":"range","⦦":"dwangle","⦧":"uwangle","⦨":"angmsdaa","⦩":"angmsdab","⦪":"angmsdac","⦫":"angmsdad","⦬":"angmsdae","⦭":"angmsdaf","⦮":"angmsdag","⦯":"angmsdah","⦰":"bemptyv","⦱":"demptyv","⦲":"cemptyv","⦳":"raemptyv","⦴":"laemptyv","⦵":"ohbar","⦶":"omid","⦷":"opar","⦹":"operp","⦻":"olcross","⦼":"odsold","⦾":"olcir","⦿":"ofcir","⧀":"olt","⧁":"ogt","⧂":"cirscir","⧃":"cirE","⧄":"solb","⧅":"bsolb","⧉":"boxbox","⧍":"trisb","⧎":"rtriltri","⧏":"LeftTriangleBar","⧏̸":"NotLeftTriangleBar","⧐":"RightTriangleBar","⧐̸":"NotRightTriangleBar","⧜":"iinfin","⧝":"infintie","⧞":"nvinfin","⧣":"eparsl","⧤":"smeparsl","⧥":"eqvparsl","⧫":"lozf","⧴":"RuleDelayed","⧶":"dsol","⨀":"xodot","⨁":"xoplus","⨂":"xotime","⨄":"xuplus","⨆":"xsqcup","⨍":"fpartint","⨐":"cirfnint","⨑":"awint","⨒":"rppolint","⨓":"scpolint","⨔":"npolint","⨕":"pointint","⨖":"quatint","⨗":"intlarhk","⨢":"pluscir","⨣":"plusacir","⨤":"simplus","⨥":"plusdu","⨦":"plussim","⨧":"plustwo","⨩":"mcomma","⨪":"minusdu","⨭":"loplus","⨮":"roplus","⨯":"Cross","⨰":"timesd","⨱":"timesbar","⨳":"smashp","⨴":"lotimes","⨵":"rotimes","⨶":"otimesas","⨷":"Otimes","⨸":"odiv","⨹":"triplus","⨺":"triminus","⨻":"tritime","⨼":"iprod","⨿":"amalg","⩀":"capdot","⩂":"ncup","⩃":"ncap","⩄":"capand","⩅":"cupor","⩆":"cupcap","⩇":"capcup","⩈":"cupbrcap","⩉":"capbrcup","⩊":"cupcup","⩋":"capcap","⩌":"ccups","⩍":"ccaps","⩐":"ccupssm","⩓":"And","⩔":"Or","⩕":"andand","⩖":"oror","⩗":"orslope","⩘":"andslope","⩚":"andv","⩛":"orv","⩜":"andd","⩝":"ord","⩟":"wedbar","⩦":"sdote","⩪":"simdot","⩭":"congdot","⩭̸":"ncongdot","⩮":"easter","⩯":"apacir","⩰":"apE","⩰̸":"napE","⩱":"eplus","⩲":"pluse","⩳":"Esim","⩷":"eDDot","⩸":"equivDD","⩹":"ltcir","⩺":"gtcir","⩻":"ltquest","⩼":"gtquest","⩽":"les","⩽̸":"nles","⩾":"ges","⩾̸":"nges","⩿":"lesdot","⪀":"gesdot","⪁":"lesdoto","⪂":"gesdoto","⪃":"lesdotor","⪄":"gesdotol","⪅":"lap","⪆":"gap","⪇":"lne","⪈":"gne","⪉":"lnap","⪊":"gnap","⪋":"lEg","⪌":"gEl","⪍":"lsime","⪎":"gsime","⪏":"lsimg","⪐":"gsiml","⪑":"lgE","⪒":"glE","⪓":"lesges","⪔":"gesles","⪕":"els","⪖":"egs","⪗":"elsdot","⪘":"egsdot","⪙":"el","⪚":"eg","⪝":"siml","⪞":"simg","⪟":"simlE","⪠":"simgE","⪡":"LessLess","⪡̸":"NotNestedLessLess","⪢":"GreaterGreater","⪢̸":"NotNestedGreaterGreater","⪤":"glj","⪥":"gla","⪦":"ltcc","⪧":"gtcc","⪨":"lescc","⪩":"gescc","⪪":"smt","⪫":"lat","⪬":"smte","⪬︀":"smtes","⪭":"late","⪭︀":"lates","⪮":"bumpE","⪯":"pre","⪯̸":"npre","⪰":"sce","⪰̸":"nsce","⪳":"prE","⪴":"scE","⪵":"prnE","⪶":"scnE","⪷":"prap","⪸":"scap","⪹":"prnap","⪺":"scnap","⪻":"Pr","⪼":"Sc","⪽":"subdot","⪾":"supdot","⪿":"subplus","⫀":"supplus","⫁":"submult","⫂":"supmult","⫃":"subedot","⫄":"supedot","⫅":"subE","⫅̸":"nsubE","⫆":"supE","⫆̸":"nsupE","⫇":"subsim","⫈":"supsim","⫋︀":"vsubnE","⫋":"subnE","⫌︀":"vsupnE","⫌":"supnE","⫏":"csub","⫐":"csup","⫑":"csube","⫒":"csupe","⫓":"subsup","⫔":"supsub","⫕":"subsub","⫖":"supsup","⫗":"suphsub","⫘":"supdsub","⫙":"forkv","⫚":"topfork","⫛":"mlcp","⫤":"Dashv","⫦":"Vdashl","⫧":"Barv","⫨":"vBar","⫩":"vBarv","⫫":"Vbar","⫬":"Not","⫭":"bNot","⫮":"rnmid","⫯":"cirmid","⫰":"midcir","⫱":"topcir","⫲":"nhpar","⫳":"parsim","⫽":"parsl","⫽⃥":"nparsl","♭":"flat","♮":"natur","♯":"sharp","¤":"curren","¢":"cent",$:"dollar","£":"pound","¥":"yen","€":"euro","¹":"sup1","½":"half","⅓":"frac13","¼":"frac14","⅕":"frac15","⅙":"frac16","⅛":"frac18","²":"sup2","⅔":"frac23","⅖":"frac25","³":"sup3","¾":"frac34","⅗":"frac35","⅜":"frac38","⅘":"frac45","⅚":"frac56","⅝":"frac58","⅞":"frac78",𝒶:"ascr",𝕒:"aopf",𝔞:"afr",𝔸:"Aopf",𝔄:"Afr",𝒜:"Ascr",ª:"ordf",á:"aacute",Á:"Aacute",à:"agrave",À:"Agrave",ă:"abreve",Ă:"Abreve",â:"acirc",Â:"Acirc",å:"aring",Å:"angst",ä:"auml",Ä:"Auml",ã:"atilde",Ã:"Atilde",ą:"aogon",Ą:"Aogon",ā:"amacr",Ā:"Amacr",æ:"aelig",Æ:"AElig",𝒷:"bscr",𝕓:"bopf",𝔟:"bfr",𝔹:"Bopf",ℬ:"Bscr",𝔅:"Bfr",𝔠:"cfr",𝒸:"cscr",𝕔:"copf",ℭ:"Cfr",𝒞:"Cscr",ℂ:"Copf",ć:"cacute",Ć:"Cacute",ĉ:"ccirc",Ĉ:"Ccirc",č:"ccaron",Č:"Ccaron",ċ:"cdot",Ċ:"Cdot",ç:"ccedil",Ç:"Ccedil","℅":"incare",𝔡:"dfr",ⅆ:"dd",𝕕:"dopf",𝒹:"dscr",𝒟:"Dscr",𝔇:"Dfr",ⅅ:"DD",𝔻:"Dopf",ď:"dcaron",Ď:"Dcaron",đ:"dstrok",Đ:"Dstrok",ð:"eth",Ð:"ETH",ⅇ:"ee",ℯ:"escr",𝔢:"efr",𝕖:"eopf",ℰ:"Escr",𝔈:"Efr",𝔼:"Eopf",é:"eacute",É:"Eacute",è:"egrave",È:"Egrave",ê:"ecirc",Ê:"Ecirc",ě:"ecaron",Ě:"Ecaron",ë:"euml",Ë:"Euml",ė:"edot",Ė:"Edot",ę:"eogon",Ę:"Eogon",ē:"emacr",Ē:"Emacr",𝔣:"ffr",𝕗:"fopf",𝒻:"fscr",𝔉:"Ffr",𝔽:"Fopf",ℱ:"Fscr",ff:"fflig",ffi:"ffilig",ffl:"ffllig",fi:"filig",fj:"fjlig",fl:"fllig",ƒ:"fnof",ℊ:"gscr",𝕘:"gopf",𝔤:"gfr",𝒢:"Gscr",𝔾:"Gopf",𝔊:"Gfr",ǵ:"gacute",ğ:"gbreve",Ğ:"Gbreve",ĝ:"gcirc",Ĝ:"Gcirc",ġ:"gdot",Ġ:"Gdot",Ģ:"Gcedil",𝔥:"hfr",ℎ:"planckh",𝒽:"hscr",𝕙:"hopf",ℋ:"Hscr",ℌ:"Hfr",ℍ:"Hopf",ĥ:"hcirc",Ĥ:"Hcirc",ℏ:"hbar",ħ:"hstrok",Ħ:"Hstrok",𝕚:"iopf",𝔦:"ifr",𝒾:"iscr",ⅈ:"ii",𝕀:"Iopf",ℐ:"Iscr",ℑ:"Im",í:"iacute",Í:"Iacute",ì:"igrave",Ì:"Igrave",î:"icirc",Î:"Icirc",ï:"iuml",Ï:"Iuml",ĩ:"itilde",Ĩ:"Itilde",İ:"Idot",į:"iogon",Į:"Iogon",ī:"imacr",Ī:"Imacr",ij:"ijlig",IJ:"IJlig",ı:"imath",𝒿:"jscr",𝕛:"jopf",𝔧:"jfr",𝒥:"Jscr",𝔍:"Jfr",𝕁:"Jopf",ĵ:"jcirc",Ĵ:"Jcirc",ȷ:"jmath",𝕜:"kopf",𝓀:"kscr",𝔨:"kfr",𝒦:"Kscr",𝕂:"Kopf",𝔎:"Kfr",ķ:"kcedil",Ķ:"Kcedil",𝔩:"lfr",𝓁:"lscr",ℓ:"ell",𝕝:"lopf",ℒ:"Lscr",𝔏:"Lfr",𝕃:"Lopf",ĺ:"lacute",Ĺ:"Lacute",ľ:"lcaron",Ľ:"Lcaron",ļ:"lcedil",Ļ:"Lcedil",ł:"lstrok",Ł:"Lstrok",ŀ:"lmidot",Ŀ:"Lmidot",𝔪:"mfr",𝕞:"mopf",𝓂:"mscr",𝔐:"Mfr",𝕄:"Mopf",ℳ:"Mscr",𝔫:"nfr",𝕟:"nopf",𝓃:"nscr",ℕ:"Nopf",𝒩:"Nscr",𝔑:"Nfr",ń:"nacute",Ń:"Nacute",ň:"ncaron",Ň:"Ncaron",ñ:"ntilde",Ñ:"Ntilde",ņ:"ncedil",Ņ:"Ncedil","№":"numero",ŋ:"eng",Ŋ:"ENG",𝕠:"oopf",𝔬:"ofr",ℴ:"oscr",𝒪:"Oscr",𝔒:"Ofr",𝕆:"Oopf",º:"ordm",ó:"oacute",Ó:"Oacute",ò:"ograve",Ò:"Ograve",ô:"ocirc",Ô:"Ocirc",ö:"ouml",Ö:"Ouml",ő:"odblac",Ő:"Odblac",õ:"otilde",Õ:"Otilde",ø:"oslash",Ø:"Oslash",ō:"omacr",Ō:"Omacr",œ:"oelig",Œ:"OElig",𝔭:"pfr",𝓅:"pscr",𝕡:"popf",ℙ:"Popf",𝔓:"Pfr",𝒫:"Pscr",𝕢:"qopf",𝔮:"qfr",𝓆:"qscr",𝒬:"Qscr",𝔔:"Qfr",ℚ:"Qopf",ĸ:"kgreen",𝔯:"rfr",𝕣:"ropf",𝓇:"rscr",ℛ:"Rscr",ℜ:"Re",ℝ:"Ropf",ŕ:"racute",Ŕ:"Racute",ř:"rcaron",Ř:"Rcaron",ŗ:"rcedil",Ŗ:"Rcedil",𝕤:"sopf",𝓈:"sscr",𝔰:"sfr",𝕊:"Sopf",𝔖:"Sfr",𝒮:"Sscr","Ⓢ":"oS",ś:"sacute",Ś:"Sacute",ŝ:"scirc",Ŝ:"Scirc",š:"scaron",Š:"Scaron",ş:"scedil",Ş:"Scedil",ß:"szlig",𝔱:"tfr",𝓉:"tscr",𝕥:"topf",𝒯:"Tscr",𝔗:"Tfr",𝕋:"Topf",ť:"tcaron",Ť:"Tcaron",ţ:"tcedil",Ţ:"Tcedil","™":"trade",ŧ:"tstrok",Ŧ:"Tstrok",𝓊:"uscr",𝕦:"uopf",𝔲:"ufr",𝕌:"Uopf",𝔘:"Ufr",𝒰:"Uscr",ú:"uacute",Ú:"Uacute",ù:"ugrave",Ù:"Ugrave",ŭ:"ubreve",Ŭ:"Ubreve",û:"ucirc",Û:"Ucirc",ů:"uring",Ů:"Uring",ü:"uuml",Ü:"Uuml",ű:"udblac",Ű:"Udblac",ũ:"utilde",Ũ:"Utilde",ų:"uogon",Ų:"Uogon",ū:"umacr",Ū:"Umacr",𝔳:"vfr",𝕧:"vopf",𝓋:"vscr",𝔙:"Vfr",𝕍:"Vopf",𝒱:"Vscr",𝕨:"wopf",𝓌:"wscr",𝔴:"wfr",𝒲:"Wscr",𝕎:"Wopf",𝔚:"Wfr",ŵ:"wcirc",Ŵ:"Wcirc",𝔵:"xfr",𝓍:"xscr",𝕩:"xopf",𝕏:"Xopf",𝔛:"Xfr",𝒳:"Xscr",𝔶:"yfr",𝓎:"yscr",𝕪:"yopf",𝒴:"Yscr",𝔜:"Yfr",𝕐:"Yopf",ý:"yacute",Ý:"Yacute",ŷ:"ycirc",Ŷ:"Ycirc",ÿ:"yuml",Ÿ:"Yuml",𝓏:"zscr",𝔷:"zfr",𝕫:"zopf",ℨ:"Zfr",ℤ:"Zopf",𝒵:"Zscr",ź:"zacute",Ź:"Zacute",ž:"zcaron",Ž:"Zcaron",ż:"zdot",Ż:"Zdot",Ƶ:"imped",þ:"thorn",Þ:"THORN",ʼn:"napos",α:"alpha",Α:"Alpha",β:"beta",Β:"Beta",γ:"gamma",Γ:"Gamma",δ:"delta",Δ:"Delta",ε:"epsi",ϵ:"epsiv",Ε:"Epsilon",ϝ:"gammad",Ϝ:"Gammad",ζ:"zeta",Ζ:"Zeta",η:"eta",Η:"Eta",θ:"theta",ϑ:"thetav",Θ:"Theta",ι:"iota",Ι:"Iota",κ:"kappa",ϰ:"kappav",Κ:"Kappa",λ:"lambda",Λ:"Lambda",μ:"mu",µ:"micro",Μ:"Mu",ν:"nu",Ν:"Nu",ξ:"xi",Ξ:"Xi",ο:"omicron",Ο:"Omicron",π:"pi",ϖ:"piv",Π:"Pi",ρ:"rho",ϱ:"rhov",Ρ:"Rho",σ:"sigma",Σ:"Sigma",ς:"sigmaf",τ:"tau",Τ:"Tau",υ:"upsi",Υ:"Upsilon",ϒ:"Upsi",φ:"phi",ϕ:"phiv",Φ:"Phi",χ:"chi",Χ:"Chi",ψ:"psi",Ψ:"Psi",ω:"omega",Ω:"ohm",а:"acy",А:"Acy",б:"bcy",Б:"Bcy",в:"vcy",В:"Vcy",г:"gcy",Г:"Gcy",ѓ:"gjcy",Ѓ:"GJcy",д:"dcy",Д:"Dcy",ђ:"djcy",Ђ:"DJcy",е:"iecy",Е:"IEcy",ё:"iocy",Ё:"IOcy",є:"jukcy",Є:"Jukcy",ж:"zhcy",Ж:"ZHcy",з:"zcy",З:"Zcy",ѕ:"dscy",Ѕ:"DScy",и:"icy",И:"Icy",і:"iukcy",І:"Iukcy",ї:"yicy",Ї:"YIcy",й:"jcy",Й:"Jcy",ј:"jsercy",Ј:"Jsercy",к:"kcy",К:"Kcy",ќ:"kjcy",Ќ:"KJcy",л:"lcy",Л:"Lcy",љ:"ljcy",Љ:"LJcy",м:"mcy",М:"Mcy",н:"ncy",Н:"Ncy",њ:"njcy",Њ:"NJcy",о:"ocy",О:"Ocy",п:"pcy",П:"Pcy",р:"rcy",Р:"Rcy",с:"scy",С:"Scy",т:"tcy",Т:"Tcy",ћ:"tshcy",Ћ:"TSHcy",у:"ucy",У:"Ucy",ў:"ubrcy",Ў:"Ubrcy",ф:"fcy",Ф:"Fcy",х:"khcy",Х:"KHcy",ц:"tscy",Ц:"TScy",ч:"chcy",Ч:"CHcy",џ:"dzcy",Џ:"DZcy",ш:"shcy",Ш:"SHcy",щ:"shchcy",Щ:"SHCHcy",ъ:"hardcy",Ъ:"HARDcy",ы:"ycy",Ы:"Ycy",ь:"softcy",Ь:"SOFTcy",э:"ecy",Э:"Ecy",ю:"yucy",Ю:"YUcy",я:"yacy",Я:"YAcy",ℵ:"aleph",ℶ:"beth",ℷ:"gimel",ℸ:"daleth"},o=/["&'<>`]/g,u={'"':""","&":"&","'":"'","<":"<",">":">","`":"`"},b=/&#(?:[xX][^a-fA-F0-9]|[^0-9xX])/,h=/[\0-\x08\x0B\x0E-\x1F\x7F-\x9F\uFDD0-\uFDEF\uFFFE\uFFFF]|[\uD83F\uD87F\uD8BF\uD8FF\uD93F\uD97F\uD9BF\uD9FF\uDA3F\uDA7F\uDABF\uDAFF\uDB3F\uDB7F\uDBBF\uDBFF][\uDFFE\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,w=/&(CounterClockwiseContourIntegral|DoubleLongLeftRightArrow|ClockwiseContourIntegral|NotNestedGreaterGreater|NotSquareSupersetEqual|DiacriticalDoubleAcute|NotRightTriangleEqual|NotSucceedsSlantEqual|NotPrecedesSlantEqual|CloseCurlyDoubleQuote|NegativeVeryThinSpace|DoubleContourIntegral|FilledVerySmallSquare|CapitalDifferentialD|OpenCurlyDoubleQuote|EmptyVerySmallSquare|NestedGreaterGreater|DoubleLongRightArrow|NotLeftTriangleEqual|NotGreaterSlantEqual|ReverseUpEquilibrium|DoubleLeftRightArrow|NotSquareSubsetEqual|NotDoubleVerticalBar|RightArrowLeftArrow|NotGreaterFullEqual|NotRightTriangleBar|SquareSupersetEqual|DownLeftRightVector|DoubleLongLeftArrow|leftrightsquigarrow|LeftArrowRightArrow|NegativeMediumSpace|blacktriangleright|RightDownVectorBar|PrecedesSlantEqual|RightDoubleBracket|SucceedsSlantEqual|NotLeftTriangleBar|RightTriangleEqual|SquareIntersection|RightDownTeeVector|ReverseEquilibrium|NegativeThickSpace|longleftrightarrow|Longleftrightarrow|LongLeftRightArrow|DownRightTeeVector|DownRightVectorBar|GreaterSlantEqual|SquareSubsetEqual|LeftDownVectorBar|LeftDoubleBracket|VerticalSeparator|rightleftharpoons|NotGreaterGreater|NotSquareSuperset|blacktriangleleft|blacktriangledown|NegativeThinSpace|LeftDownTeeVector|NotLessSlantEqual|leftrightharpoons|DoubleUpDownArrow|DoubleVerticalBar|LeftTriangleEqual|FilledSmallSquare|twoheadrightarrow|NotNestedLessLess|DownLeftTeeVector|DownLeftVectorBar|RightAngleBracket|NotTildeFullEqual|NotReverseElement|RightUpDownVector|DiacriticalTilde|NotSucceedsTilde|circlearrowright|NotPrecedesEqual|rightharpoondown|DoubleRightArrow|NotSucceedsEqual|NonBreakingSpace|NotRightTriangle|LessEqualGreater|RightUpTeeVector|LeftAngleBracket|GreaterFullEqual|DownArrowUpArrow|RightUpVectorBar|twoheadleftarrow|GreaterEqualLess|downharpoonright|RightTriangleBar|ntrianglerighteq|NotSupersetEqual|LeftUpDownVector|DiacriticalAcute|rightrightarrows|vartriangleright|UpArrowDownArrow|DiacriticalGrave|UnderParenthesis|EmptySmallSquare|LeftUpVectorBar|leftrightarrows|DownRightVector|downharpoonleft|trianglerighteq|ShortRightArrow|OverParenthesis|DoubleLeftArrow|DoubleDownArrow|NotSquareSubset|bigtriangledown|ntrianglelefteq|UpperRightArrow|curvearrowright|vartriangleleft|NotLeftTriangle|nleftrightarrow|LowerRightArrow|NotHumpDownHump|NotGreaterTilde|rightthreetimes|LeftUpTeeVector|NotGreaterEqual|straightepsilon|LeftTriangleBar|rightsquigarrow|ContourIntegral|rightleftarrows|CloseCurlyQuote|RightDownVector|LeftRightVector|nLeftrightarrow|leftharpoondown|circlearrowleft|SquareSuperset|OpenCurlyQuote|hookrightarrow|HorizontalLine|DiacriticalDot|NotLessGreater|ntriangleright|DoubleRightTee|InvisibleComma|InvisibleTimes|LowerLeftArrow|DownLeftVector|NotSubsetEqual|curvearrowleft|trianglelefteq|NotVerticalBar|TildeFullEqual|downdownarrows|NotGreaterLess|RightTeeVector|ZeroWidthSpace|looparrowright|LongRightArrow|doublebarwedge|ShortLeftArrow|ShortDownArrow|RightVectorBar|GreaterGreater|ReverseElement|rightharpoonup|LessSlantEqual|leftthreetimes|upharpoonright|rightarrowtail|LeftDownVector|Longrightarrow|NestedLessLess|UpperLeftArrow|nshortparallel|leftleftarrows|leftrightarrow|Leftrightarrow|LeftRightArrow|longrightarrow|upharpoonleft|RightArrowBar|ApplyFunction|LeftTeeVector|leftarrowtail|NotEqualTilde|varsubsetneqq|varsupsetneqq|RightTeeArrow|SucceedsEqual|SucceedsTilde|LeftVectorBar|SupersetEqual|hookleftarrow|DifferentialD|VerticalTilde|VeryThinSpace|blacktriangle|bigtriangleup|LessFullEqual|divideontimes|leftharpoonup|UpEquilibrium|ntriangleleft|RightTriangle|measuredangle|shortparallel|longleftarrow|Longleftarrow|LongLeftArrow|DoubleLeftTee|Poincareplane|PrecedesEqual|triangleright|DoubleUpArrow|RightUpVector|fallingdotseq|looparrowleft|PrecedesTilde|NotTildeEqual|NotTildeTilde|smallsetminus|Proportional|triangleleft|triangledown|UnderBracket|NotHumpEqual|exponentiale|ExponentialE|NotLessTilde|HilbertSpace|RightCeiling|blacklozenge|varsupsetneq|HumpDownHump|GreaterEqual|VerticalLine|LeftTeeArrow|NotLessEqual|DownTeeArrow|LeftTriangle|varsubsetneq|Intersection|NotCongruent|DownArrowBar|LeftUpVector|LeftArrowBar|risingdotseq|GreaterTilde|RoundImplies|SquareSubset|ShortUpArrow|NotSuperset|quaternions|precnapprox|backepsilon|preccurlyeq|OverBracket|blacksquare|MediumSpace|VerticalBar|circledcirc|circleddash|CircleMinus|CircleTimes|LessGreater|curlyeqprec|curlyeqsucc|diamondsuit|UpDownArrow|Updownarrow|RuleDelayed|Rrightarrow|updownarrow|RightVector|nRightarrow|nrightarrow|eqslantless|LeftCeiling|Equilibrium|SmallCircle|expectation|NotSucceeds|thickapprox|GreaterLess|SquareUnion|NotPrecedes|NotLessLess|straightphi|succnapprox|succcurlyeq|SubsetEqual|sqsupseteq|Proportion|Laplacetrf|ImaginaryI|supsetneqq|NotGreater|gtreqqless|NotElement|ThickSpace|TildeEqual|TildeTilde|Fouriertrf|rmoustache|EqualTilde|eqslantgtr|UnderBrace|LeftVector|UpArrowBar|nLeftarrow|nsubseteqq|subsetneqq|nsupseteqq|nleftarrow|succapprox|lessapprox|UpTeeArrow|upuparrows|curlywedge|lesseqqgtr|varepsilon|varnothing|RightFloor|complement|CirclePlus|sqsubseteq|Lleftarrow|circledast|RightArrow|Rightarrow|rightarrow|lmoustache|Bernoullis|precapprox|mapstoleft|mapstodown|longmapsto|dotsquare|downarrow|DoubleDot|nsubseteq|supsetneq|leftarrow|nsupseteq|subsetneq|ThinSpace|ngeqslant|subseteqq|HumpEqual|NotSubset|triangleq|NotCupCap|lesseqgtr|heartsuit|TripleDot|Leftarrow|Coproduct|Congruent|varpropto|complexes|gvertneqq|LeftArrow|LessTilde|supseteqq|MinusPlus|CircleDot|nleqslant|NotExists|gtreqless|nparallel|UnionPlus|LeftFloor|checkmark|CenterDot|centerdot|Mellintrf|gtrapprox|bigotimes|OverBrace|spadesuit|therefore|pitchfork|rationals|PlusMinus|Backslash|Therefore|DownBreve|backsimeq|backprime|DownArrow|nshortmid|Downarrow|lvertneqq|eqvparsl|imagline|imagpart|infintie|integers|Integral|intercal|LessLess|Uarrocir|intlarhk|sqsupset|angmsdaf|sqsubset|llcorner|vartheta|cupbrcap|lnapprox|Superset|SuchThat|succnsim|succneqq|angmsdag|biguplus|curlyvee|trpezium|Succeeds|NotTilde|bigwedge|angmsdah|angrtvbd|triminus|cwconint|fpartint|lrcorner|smeparsl|subseteq|urcorner|lurdshar|laemptyv|DDotrahd|approxeq|ldrushar|awconint|mapstoup|backcong|shortmid|triangle|geqslant|gesdotol|timesbar|circledR|circledS|setminus|multimap|naturals|scpolint|ncongdot|RightTee|boxminus|gnapprox|boxtimes|andslope|thicksim|angmsdaa|varsigma|cirfnint|rtriltri|angmsdab|rppolint|angmsdac|barwedge|drbkarow|clubsuit|thetasym|bsolhsub|capbrcup|dzigrarr|doteqdot|DotEqual|dotminus|UnderBar|NotEqual|realpart|otimesas|ulcorner|hksearow|hkswarow|parallel|PartialD|elinters|emptyset|plusacir|bbrktbrk|angmsdad|pointint|bigoplus|angmsdae|Precedes|bigsqcup|varkappa|notindot|supseteq|precneqq|precnsim|profalar|profline|profsurf|leqslant|lesdotor|raemptyv|subplus|notnivb|notnivc|subrarr|zigrarr|vzigzag|submult|subedot|Element|between|cirscir|larrbfs|larrsim|lotimes|lbrksld|lbrkslu|lozenge|ldrdhar|dbkarow|bigcirc|epsilon|simrarr|simplus|ltquest|Epsilon|luruhar|gtquest|maltese|npolint|eqcolon|npreceq|bigodot|ddagger|gtrless|bnequiv|harrcir|ddotseq|equivDD|backsim|demptyv|nsqsube|nsqsupe|Upsilon|nsubset|upsilon|minusdu|nsucceq|swarrow|nsupset|coloneq|searrow|boxplus|napprox|natural|asympeq|alefsym|congdot|nearrow|bigstar|diamond|supplus|tritime|LeftTee|nvinfin|triplus|NewLine|nvltrie|nvrtrie|nwarrow|nexists|Diamond|ruluhar|Implies|supmult|angzarr|suplarr|suphsub|questeq|because|digamma|Because|olcross|bemptyv|omicron|Omicron|rotimes|NoBreak|intprod|angrtvb|orderof|uwangle|suphsol|lesdoto|orslope|DownTee|realine|cudarrl|rdldhar|OverBar|supedot|lessdot|supdsub|topfork|succsim|rbrkslu|rbrksld|pertenk|cudarrr|isindot|planckh|lessgtr|pluscir|gesdoto|plussim|plustwo|lesssim|cularrp|rarrsim|Cayleys|notinva|notinvb|notinvc|UpArrow|Uparrow|uparrow|NotLess|dwangle|precsim|Product|curarrm|Cconint|dotplus|rarrbfs|ccupssm|Cedilla|cemptyv|notniva|quatint|frac35|frac38|frac45|frac56|frac58|frac78|tridot|xoplus|gacute|gammad|Gammad|lfisht|lfloor|bigcup|sqsupe|gbreve|Gbreve|lharul|sqsube|sqcups|Gcedil|apacir|llhard|lmidot|Lmidot|lmoust|andand|sqcaps|approx|Abreve|spades|circeq|tprime|divide|topcir|Assign|topbot|gesdot|divonx|xuplus|timesd|gesles|atilde|solbar|SOFTcy|loplus|timesb|lowast|lowbar|dlcorn|dlcrop|softcy|dollar|lparlt|thksim|lrhard|Atilde|lsaquo|smashp|bigvee|thinsp|wreath|bkarow|lsquor|lstrok|Lstrok|lthree|ltimes|ltlarr|DotDot|simdot|ltrPar|weierp|xsqcup|angmsd|sigmav|sigmaf|zeetrf|Zcaron|zcaron|mapsto|vsupne|thetav|cirmid|marker|mcomma|Zacute|vsubnE|there4|gtlPar|vsubne|bottom|gtrarr|SHCHcy|shchcy|midast|midcir|middot|minusb|minusd|gtrdot|bowtie|sfrown|mnplus|models|colone|seswar|Colone|mstpos|searhk|gtrsim|nacute|Nacute|boxbox|telrec|hairsp|Tcedil|nbumpe|scnsim|ncaron|Ncaron|ncedil|Ncedil|hamilt|Scedil|nearhk|hardcy|HARDcy|tcedil|Tcaron|commat|nequiv|nesear|tcaron|target|hearts|nexist|varrho|scedil|Scaron|scaron|hellip|Sacute|sacute|hercon|swnwar|compfn|rtimes|rthree|rsquor|rsaquo|zacute|wedgeq|homtht|barvee|barwed|Barwed|rpargt|horbar|conint|swarhk|roplus|nltrie|hslash|hstrok|Hstrok|rmoust|Conint|bprime|hybull|hyphen|iacute|Iacute|supsup|supsub|supsim|varphi|coprod|brvbar|agrave|Supset|supset|igrave|Igrave|notinE|Agrave|iiiint|iinfin|copysr|wedbar|Verbar|vangrt|becaus|incare|verbar|inodot|bullet|drcorn|intcal|drcrop|cularr|vellip|Utilde|bumpeq|cupcap|dstrok|Dstrok|CupCap|cupcup|cupdot|eacute|Eacute|supdot|iquest|easter|ecaron|Ecaron|ecolon|isinsv|utilde|itilde|Itilde|curarr|succeq|Bumpeq|cacute|ulcrop|nparsl|Cacute|nprcue|egrave|Egrave|nrarrc|nrarrw|subsup|subsub|nrtrie|jsercy|nsccue|Jsercy|kappav|kcedil|Kcedil|subsim|ulcorn|nsimeq|egsdot|veebar|kgreen|capand|elsdot|Subset|subset|curren|aacute|lacute|Lacute|emptyv|ntilde|Ntilde|lagran|lambda|Lambda|capcap|Ugrave|langle|subdot|emsp13|numero|emsp14|nvdash|nvDash|nVdash|nVDash|ugrave|ufisht|nvHarr|larrfs|nvlArr|larrhk|larrlp|larrpl|nvrArr|Udblac|nwarhk|larrtl|nwnear|oacute|Oacute|latail|lAtail|sstarf|lbrace|odblac|Odblac|lbrack|udblac|odsold|eparsl|lcaron|Lcaron|ograve|Ograve|lcedil|Lcedil|Aacute|ssmile|ssetmn|squarf|ldquor|capcup|ominus|cylcty|rharul|eqcirc|dagger|rfloor|rfisht|Dagger|daleth|equals|origof|capdot|equest|dcaron|Dcaron|rdquor|oslash|Oslash|otilde|Otilde|otimes|Otimes|urcrop|Ubreve|ubreve|Yacute|Uacute|uacute|Rcedil|rcedil|urcorn|parsim|Rcaron|Vdashl|rcaron|Tstrok|percnt|period|permil|Exists|yacute|rbrack|rbrace|phmmat|ccaron|Ccaron|planck|ccedil|plankv|tstrok|female|plusdo|plusdu|ffilig|plusmn|ffllig|Ccedil|rAtail|dfisht|bernou|ratail|Rarrtl|rarrtl|angsph|rarrpl|rarrlp|rarrhk|xwedge|xotime|forall|ForAll|Vvdash|vsupnE|preceq|bigcap|frac12|frac13|frac14|primes|rarrfs|prnsim|frac15|Square|frac16|square|lesdot|frac18|frac23|propto|prurel|rarrap|rangle|puncsp|frac25|Racute|qprime|racute|lesges|frac34|abreve|AElig|eqsim|utdot|setmn|urtri|Equal|Uring|seArr|uring|searr|dashv|Dashv|mumap|nabla|iogon|Iogon|sdote|sdotb|scsim|napid|napos|equiv|natur|Acirc|dblac|erarr|nbump|iprod|erDot|ucirc|awint|esdot|angrt|ncong|isinE|scnap|Scirc|scirc|ndash|isins|Ubrcy|nearr|neArr|isinv|nedot|ubrcy|acute|Ycirc|iukcy|Iukcy|xutri|nesim|caret|jcirc|Jcirc|caron|twixt|ddarr|sccue|exist|jmath|sbquo|ngeqq|angst|ccaps|lceil|ngsim|UpTee|delta|Delta|rtrif|nharr|nhArr|nhpar|rtrie|jukcy|Jukcy|kappa|rsquo|Kappa|nlarr|nlArr|TSHcy|rrarr|aogon|Aogon|fflig|xrarr|tshcy|ccirc|nleqq|filig|upsih|nless|dharl|nlsim|fjlig|ropar|nltri|dharr|robrk|roarr|fllig|fltns|roang|rnmid|subnE|subne|lAarr|trisb|Ccirc|acirc|ccups|blank|VDash|forkv|Vdash|langd|cedil|blk12|blk14|laquo|strns|diams|notin|vDash|larrb|blk34|block|disin|uplus|vdash|vBarv|aelig|starf|Wedge|check|xrArr|lates|lbarr|lBarr|notni|lbbrk|bcong|frasl|lbrke|frown|vrtri|vprop|vnsup|gamma|Gamma|wedge|xodot|bdquo|srarr|doteq|ldquo|boxdl|boxdL|gcirc|Gcirc|boxDl|boxDL|boxdr|boxdR|boxDr|TRADE|trade|rlhar|boxDR|vnsub|npart|vltri|rlarr|boxhd|boxhD|nprec|gescc|nrarr|nrArr|boxHd|boxHD|boxhu|boxhU|nrtri|boxHu|clubs|boxHU|times|colon|Colon|gimel|xlArr|Tilde|nsime|tilde|nsmid|nspar|THORN|thorn|xlarr|nsube|nsubE|thkap|xhArr|comma|nsucc|boxul|boxuL|nsupe|nsupE|gneqq|gnsim|boxUl|boxUL|grave|boxur|boxuR|boxUr|boxUR|lescc|angle|bepsi|boxvh|varpi|boxvH|numsp|Theta|gsime|gsiml|theta|boxVh|boxVH|boxvl|gtcir|gtdot|boxvL|boxVl|boxVL|crarr|cross|Cross|nvsim|boxvr|nwarr|nwArr|sqsup|dtdot|Uogon|lhard|lharu|dtrif|ocirc|Ocirc|lhblk|duarr|odash|sqsub|Hacek|sqcup|llarr|duhar|oelig|OElig|ofcir|boxvR|uogon|lltri|boxVr|csube|uuarr|ohbar|csupe|ctdot|olarr|olcir|harrw|oline|sqcap|omacr|Omacr|omega|Omega|boxVR|aleph|lneqq|lnsim|loang|loarr|rharu|lobrk|hcirc|operp|oplus|rhard|Hcirc|orarr|Union|order|ecirc|Ecirc|cuepr|szlig|cuesc|breve|reals|eDDot|Breve|hoarr|lopar|utrif|rdquo|Umacr|umacr|efDot|swArr|ultri|alpha|rceil|ovbar|swarr|Wcirc|wcirc|smtes|smile|bsemi|lrarr|aring|parsl|lrhar|bsime|uhblk|lrtri|cupor|Aring|uharr|uharl|slarr|rbrke|bsolb|lsime|rbbrk|RBarr|lsimg|phone|rBarr|rbarr|icirc|lsquo|Icirc|emacr|Emacr|ratio|simne|plusb|simlE|simgE|simeq|pluse|ltcir|ltdot|empty|xharr|xdtri|iexcl|Alpha|ltrie|rarrw|pound|ltrif|xcirc|bumpe|prcue|bumpE|asymp|amacr|cuvee|Sigma|sigma|iiint|udhar|iiota|ijlig|IJlig|supnE|imacr|Imacr|prime|Prime|image|prnap|eogon|Eogon|rarrc|mdash|mDDot|cuwed|imath|supne|imped|Amacr|udarr|prsim|micro|rarrb|cwint|raquo|infin|eplus|range|rangd|Ucirc|radic|minus|amalg|veeeq|rAarr|epsiv|ycirc|quest|sharp|quot|zwnj|Qscr|race|qscr|Qopf|qopf|qint|rang|Rang|Zscr|zscr|Zopf|zopf|rarr|rArr|Rarr|Pscr|pscr|prop|prod|prnE|prec|ZHcy|zhcy|prap|Zeta|zeta|Popf|popf|Zdot|plus|zdot|Yuml|yuml|phiv|YUcy|yucy|Yscr|yscr|perp|Yopf|yopf|part|para|YIcy|Ouml|rcub|yicy|YAcy|rdca|ouml|osol|Oscr|rdsh|yacy|real|oscr|xvee|andd|rect|andv|Xscr|oror|ordm|ordf|xscr|ange|aopf|Aopf|rHar|Xopf|opar|Oopf|xopf|xnis|rhov|oopf|omid|xmap|oint|apid|apos|ogon|ascr|Ascr|odot|odiv|xcup|xcap|ocir|oast|nvlt|nvle|nvgt|nvge|nvap|Wscr|wscr|auml|ntlg|ntgl|nsup|nsub|nsim|Nscr|nscr|nsce|Wopf|ring|npre|wopf|npar|Auml|Barv|bbrk|Nopf|nopf|nmid|nLtv|beta|ropf|Ropf|Beta|beth|nles|rpar|nleq|bnot|bNot|nldr|NJcy|rscr|Rscr|Vscr|vscr|rsqb|njcy|bopf|nisd|Bopf|rtri|Vopf|nGtv|ngtr|vopf|boxh|boxH|boxv|nges|ngeq|boxV|bscr|scap|Bscr|bsim|Vert|vert|bsol|bull|bump|caps|cdot|ncup|scnE|ncap|nbsp|napE|Cdot|cent|sdot|Vbar|nang|vBar|chcy|Mscr|mscr|sect|semi|CHcy|Mopf|mopf|sext|circ|cire|mldr|mlcp|cirE|comp|shcy|SHcy|vArr|varr|cong|copf|Copf|copy|COPY|malt|male|macr|lvnE|cscr|ltri|sime|ltcc|simg|Cscr|siml|csub|Uuml|lsqb|lsim|uuml|csup|Lscr|lscr|utri|smid|lpar|cups|smte|lozf|darr|Lopf|Uscr|solb|lopf|sopf|Sopf|lneq|uscr|spar|dArr|lnap|Darr|dash|Sqrt|LJcy|ljcy|lHar|dHar|Upsi|upsi|diam|lesg|djcy|DJcy|leqq|dopf|Dopf|dscr|Dscr|dscy|ldsh|ldca|squf|DScy|sscr|Sscr|dsol|lcub|late|star|Star|Uopf|Larr|lArr|larr|uopf|dtri|dzcy|sube|subE|Lang|lang|Kscr|kscr|Kopf|kopf|KJcy|kjcy|KHcy|khcy|DZcy|ecir|edot|eDot|Jscr|jscr|succ|Jopf|jopf|Edot|uHar|emsp|ensp|Iuml|iuml|eopf|isin|Iscr|iscr|Eopf|epar|sung|epsi|escr|sup1|sup2|sup3|Iota|iota|supe|supE|Iopf|iopf|IOcy|iocy|Escr|esim|Esim|imof|Uarr|QUOT|uArr|uarr|euml|IEcy|iecy|Idot|Euml|euro|excl|Hscr|hscr|Hopf|hopf|TScy|tscy|Tscr|hbar|tscr|flat|tbrk|fnof|hArr|harr|half|fopf|Fopf|tdot|gvnE|fork|trie|gtcc|fscr|Fscr|gdot|gsim|Gscr|gscr|Gopf|gopf|gneq|Gdot|tosa|gnap|Topf|topf|geqq|toea|GJcy|gjcy|tint|gesl|mid|Sfr|ggg|top|ges|gla|glE|glj|geq|gne|gEl|gel|gnE|Gcy|gcy|gap|Tfr|tfr|Tcy|tcy|Hat|Tau|Ffr|tau|Tab|hfr|Hfr|ffr|Fcy|fcy|icy|Icy|iff|ETH|eth|ifr|Ifr|Eta|eta|int|Int|Sup|sup|ucy|Ucy|Sum|sum|jcy|ENG|ufr|Ufr|eng|Jcy|jfr|els|ell|egs|Efr|efr|Jfr|uml|kcy|Kcy|Ecy|ecy|kfr|Kfr|lap|Sub|sub|lat|lcy|Lcy|leg|Dot|dot|lEg|leq|les|squ|div|die|lfr|Lfr|lgE|Dfr|dfr|Del|deg|Dcy|dcy|lne|lnE|sol|loz|smt|Cup|lrm|cup|lsh|Lsh|sim|shy|map|Map|mcy|Mcy|mfr|Mfr|mho|gfr|Gfr|sfr|cir|Chi|chi|nap|Cfr|vcy|Vcy|cfr|Scy|scy|ncy|Ncy|vee|Vee|Cap|cap|nfr|scE|sce|Nfr|nge|ngE|nGg|vfr|Vfr|ngt|bot|nGt|nis|niv|Rsh|rsh|nle|nlE|bne|Bfr|bfr|nLl|nlt|nLt|Bcy|bcy|not|Not|rlm|wfr|Wfr|npr|nsc|num|ocy|ast|Ocy|ofr|xfr|Xfr|Ofr|ogt|ohm|apE|olt|Rho|ape|rho|Rfr|rfr|ord|REG|ang|reg|orv|And|and|AMP|Rcy|amp|Afr|ycy|Ycy|yen|yfr|Yfr|rcy|par|pcy|Pcy|pfr|Pfr|phi|Phi|afr|Acy|acy|zcy|Zcy|piv|acE|acd|zfr|Zfr|pre|prE|psi|Psi|qfr|Qfr|zwj|Or|ge|Gg|gt|gg|el|oS|lt|Lt|LT|Re|lg|gl|eg|ne|Im|it|le|DD|wp|wr|nu|Nu|dd|lE|Sc|sc|pi|Pi|ee|af|ll|Ll|rx|gE|xi|pm|Xi|ic|pr|Pr|in|ni|mp|mu|ac|Mu|or|ap|Gt|GT|ii);|&(Aacute|Agrave|Atilde|Ccedil|Eacute|Egrave|Iacute|Igrave|Ntilde|Oacute|Ograve|Oslash|Otilde|Uacute|Ugrave|Yacute|aacute|agrave|atilde|brvbar|ccedil|curren|divide|eacute|egrave|frac12|frac14|frac34|iacute|igrave|iquest|middot|ntilde|oacute|ograve|oslash|otilde|plusmn|uacute|ugrave|yacute|AElig|Acirc|Aring|Ecirc|Icirc|Ocirc|THORN|Ucirc|acirc|acute|aelig|aring|cedil|ecirc|icirc|iexcl|laquo|micro|ocirc|pound|raquo|szlig|thorn|times|ucirc|Auml|COPY|Euml|Iuml|Ouml|QUOT|Uuml|auml|cent|copy|euml|iuml|macr|nbsp|ordf|ordm|ouml|para|quot|sect|sup1|sup2|sup3|uuml|yuml|AMP|ETH|REG|amp|deg|eth|not|reg|shy|uml|yen|GT|LT|gt|lt)(?!;)([=a-zA-Z0-9]?)|&#([0-9]+)(;?)|&#[xX]([a-fA-F0-9]+)(;?)|&([0-9a-zA-Z]+)/g,k={aacute:"á",Aacute:"Á",abreve:"ă",Abreve:"Ă",ac:"∾",acd:"∿",acE:"∾̳",acirc:"â",Acirc:"Â",acute:"´",acy:"а",Acy:"А",aelig:"æ",AElig:"Æ",af:"⁡",afr:"𝔞",Afr:"𝔄",agrave:"à",Agrave:"À",alefsym:"ℵ",aleph:"ℵ",alpha:"α",Alpha:"Α",amacr:"ā",Amacr:"Ā",amalg:"⨿",amp:"&",AMP:"&",and:"∧",And:"⩓",andand:"⩕",andd:"⩜",andslope:"⩘",andv:"⩚",ang:"∠",ange:"⦤",angle:"∠",angmsd:"∡",angmsdaa:"⦨",angmsdab:"⦩",angmsdac:"⦪",angmsdad:"⦫",angmsdae:"⦬",angmsdaf:"⦭",angmsdag:"⦮",angmsdah:"⦯",angrt:"∟",angrtvb:"⊾",angrtvbd:"⦝",angsph:"∢",angst:"Å",angzarr:"⍼",aogon:"ą",Aogon:"Ą",aopf:"𝕒",Aopf:"𝔸",ap:"≈",apacir:"⩯",ape:"≊",apE:"⩰",apid:"≋",apos:"'",ApplyFunction:"⁡",approx:"≈",approxeq:"≊",aring:"å",Aring:"Å",ascr:"𝒶",Ascr:"𝒜",Assign:"≔",ast:"*",asymp:"≈",asympeq:"≍",atilde:"ã",Atilde:"Ã",auml:"ä",Auml:"Ä",awconint:"∳",awint:"⨑",backcong:"≌",backepsilon:"϶",backprime:"‵",backsim:"∽",backsimeq:"⋍",Backslash:"∖",Barv:"⫧",barvee:"⊽",barwed:"⌅",Barwed:"⌆",barwedge:"⌅",bbrk:"⎵",bbrktbrk:"⎶",bcong:"≌",bcy:"б",Bcy:"Б",bdquo:"„",becaus:"∵",because:"∵",Because:"∵",bemptyv:"⦰",bepsi:"϶",bernou:"ℬ",Bernoullis:"ℬ",beta:"β",Beta:"Β",beth:"ℶ",between:"≬",bfr:"𝔟",Bfr:"𝔅",bigcap:"⋂",bigcirc:"◯",bigcup:"⋃",bigodot:"⨀",bigoplus:"⨁",bigotimes:"⨂",bigsqcup:"⨆",bigstar:"★",bigtriangledown:"▽",bigtriangleup:"△",biguplus:"⨄",bigvee:"⋁",bigwedge:"⋀",bkarow:"⤍",blacklozenge:"⧫",blacksquare:"▪",blacktriangle:"▴",blacktriangledown:"▾",blacktriangleleft:"◂",blacktriangleright:"▸",blank:"␣",blk12:"▒",blk14:"░",blk34:"▓",block:"█",bne:"=⃥",bnequiv:"≡⃥",bnot:"⌐",bNot:"⫭",bopf:"𝕓",Bopf:"𝔹",bot:"⊥",bottom:"⊥",bowtie:"⋈",boxbox:"⧉",boxdl:"┐",boxdL:"╕",boxDl:"╖",boxDL:"╗",boxdr:"┌",boxdR:"╒",boxDr:"╓",boxDR:"╔",boxh:"─",boxH:"═",boxhd:"┬",boxhD:"╥",boxHd:"╤",boxHD:"╦",boxhu:"┴",boxhU:"╨",boxHu:"╧",boxHU:"╩",boxminus:"⊟",boxplus:"⊞",boxtimes:"⊠",boxul:"┘",boxuL:"╛",boxUl:"╜",boxUL:"╝",boxur:"└",boxuR:"╘",boxUr:"╙",boxUR:"╚",boxv:"│",boxV:"║",boxvh:"┼",boxvH:"╪",boxVh:"╫",boxVH:"╬",boxvl:"┤",boxvL:"╡",boxVl:"╢",boxVL:"╣",boxvr:"├",boxvR:"╞",boxVr:"╟",boxVR:"╠",bprime:"‵",breve:"˘",Breve:"˘",brvbar:"¦",bscr:"𝒷",Bscr:"ℬ",bsemi:"⁏",bsim:"∽",bsime:"⋍",bsol:"\\",bsolb:"⧅",bsolhsub:"⟈",bull:"•",bullet:"•",bump:"≎",bumpe:"≏",bumpE:"⪮",bumpeq:"≏",Bumpeq:"≎",cacute:"ć",Cacute:"Ć",cap:"∩",Cap:"⋒",capand:"⩄",capbrcup:"⩉",capcap:"⩋",capcup:"⩇",capdot:"⩀",CapitalDifferentialD:"ⅅ",caps:"∩︀",caret:"⁁",caron:"ˇ",Cayleys:"ℭ",ccaps:"⩍",ccaron:"č",Ccaron:"Č",ccedil:"ç",Ccedil:"Ç",ccirc:"ĉ",Ccirc:"Ĉ",Cconint:"∰",ccups:"⩌",ccupssm:"⩐",cdot:"ċ",Cdot:"Ċ",cedil:"¸",Cedilla:"¸",cemptyv:"⦲",cent:"¢",centerdot:"·",CenterDot:"·",cfr:"𝔠",Cfr:"ℭ",chcy:"ч",CHcy:"Ч",check:"✓",checkmark:"✓",chi:"χ",Chi:"Χ",cir:"○",circ:"ˆ",circeq:"≗",circlearrowleft:"↺",circlearrowright:"↻",circledast:"⊛",circledcirc:"⊚",circleddash:"⊝",CircleDot:"⊙",circledR:"®",circledS:"Ⓢ",CircleMinus:"⊖",CirclePlus:"⊕",CircleTimes:"⊗",cire:"≗",cirE:"⧃",cirfnint:"⨐",cirmid:"⫯",cirscir:"⧂",ClockwiseContourIntegral:"∲",CloseCurlyDoubleQuote:"”",CloseCurlyQuote:"’",clubs:"♣",clubsuit:"♣",colon:":",Colon:"∷",colone:"≔",Colone:"⩴",coloneq:"≔",comma:",",commat:"@",comp:"∁",compfn:"∘",complement:"∁",complexes:"ℂ",cong:"≅",congdot:"⩭",Congruent:"≡",conint:"∮",Conint:"∯",ContourIntegral:"∮",copf:"𝕔",Copf:"ℂ",coprod:"∐",Coproduct:"∐",copy:"©",COPY:"©",copysr:"℗",CounterClockwiseContourIntegral:"∳",crarr:"↵",cross:"✗",Cross:"⨯",cscr:"𝒸",Cscr:"𝒞",csub:"⫏",csube:"⫑",csup:"⫐",csupe:"⫒",ctdot:"⋯",cudarrl:"⤸",cudarrr:"⤵",cuepr:"⋞",cuesc:"⋟",cularr:"↶",cularrp:"⤽",cup:"∪",Cup:"⋓",cupbrcap:"⩈",cupcap:"⩆",CupCap:"≍",cupcup:"⩊",cupdot:"⊍",cupor:"⩅",cups:"∪︀",curarr:"↷",curarrm:"⤼",curlyeqprec:"⋞",curlyeqsucc:"⋟",curlyvee:"⋎",curlywedge:"⋏",curren:"¤",curvearrowleft:"↶",curvearrowright:"↷",cuvee:"⋎",cuwed:"⋏",cwconint:"∲",cwint:"∱",cylcty:"⌭",dagger:"†",Dagger:"‡",daleth:"ℸ",darr:"↓",dArr:"⇓",Darr:"↡",dash:"‐",dashv:"⊣",Dashv:"⫤",dbkarow:"⤏",dblac:"˝",dcaron:"ď",Dcaron:"Ď",dcy:"д",Dcy:"Д",dd:"ⅆ",DD:"ⅅ",ddagger:"‡",ddarr:"⇊",DDotrahd:"⤑",ddotseq:"⩷",deg:"°",Del:"∇",delta:"δ",Delta:"Δ",demptyv:"⦱",dfisht:"⥿",dfr:"𝔡",Dfr:"𝔇",dHar:"⥥",dharl:"⇃",dharr:"⇂",DiacriticalAcute:"´",DiacriticalDot:"˙",DiacriticalDoubleAcute:"˝",DiacriticalGrave:"`",DiacriticalTilde:"˜",diam:"⋄",diamond:"⋄",Diamond:"⋄",diamondsuit:"♦",diams:"♦",die:"¨",DifferentialD:"ⅆ",digamma:"ϝ",disin:"⋲",div:"÷",divide:"÷",divideontimes:"⋇",divonx:"⋇",djcy:"ђ",DJcy:"Ђ",dlcorn:"⌞",dlcrop:"⌍",dollar:"$",dopf:"𝕕",Dopf:"𝔻",dot:"˙",Dot:"¨",DotDot:"⃜",doteq:"≐",doteqdot:"≑",DotEqual:"≐",dotminus:"∸",dotplus:"∔",dotsquare:"⊡",doublebarwedge:"⌆",DoubleContourIntegral:"∯",DoubleDot:"¨",DoubleDownArrow:"⇓",DoubleLeftArrow:"⇐",DoubleLeftRightArrow:"⇔",DoubleLeftTee:"⫤",DoubleLongLeftArrow:"⟸",DoubleLongLeftRightArrow:"⟺",DoubleLongRightArrow:"⟹",DoubleRightArrow:"⇒",DoubleRightTee:"⊨",DoubleUpArrow:"⇑",DoubleUpDownArrow:"⇕",DoubleVerticalBar:"∥",downarrow:"↓",Downarrow:"⇓",DownArrow:"↓",DownArrowBar:"⤓",DownArrowUpArrow:"⇵",DownBreve:"̑",downdownarrows:"⇊",downharpoonleft:"⇃",downharpoonright:"⇂",DownLeftRightVector:"⥐",DownLeftTeeVector:"⥞",DownLeftVector:"↽",DownLeftVectorBar:"⥖",DownRightTeeVector:"⥟",DownRightVector:"⇁",DownRightVectorBar:"⥗",DownTee:"⊤",DownTeeArrow:"↧",drbkarow:"⤐",drcorn:"⌟",drcrop:"⌌",dscr:"𝒹",Dscr:"𝒟",dscy:"ѕ",DScy:"Ѕ",dsol:"⧶",dstrok:"đ",Dstrok:"Đ",dtdot:"⋱",dtri:"▿",dtrif:"▾",duarr:"⇵",duhar:"⥯",dwangle:"⦦",dzcy:"џ",DZcy:"Џ",dzigrarr:"⟿",eacute:"é",Eacute:"É",easter:"⩮",ecaron:"ě",Ecaron:"Ě",ecir:"≖",ecirc:"ê",Ecirc:"Ê",ecolon:"≕",ecy:"э",Ecy:"Э",eDDot:"⩷",edot:"ė",eDot:"≑",Edot:"Ė",ee:"ⅇ",efDot:"≒",efr:"𝔢",Efr:"𝔈",eg:"⪚",egrave:"è",Egrave:"È",egs:"⪖",egsdot:"⪘",el:"⪙",Element:"∈",elinters:"⏧",ell:"ℓ",els:"⪕",elsdot:"⪗",emacr:"ē",Emacr:"Ē",empty:"∅",emptyset:"∅",EmptySmallSquare:"◻",emptyv:"∅",EmptyVerySmallSquare:"▫",emsp:" ",emsp13:" ",emsp14:" ",eng:"ŋ",ENG:"Ŋ",ensp:" ",eogon:"ę",Eogon:"Ę",eopf:"𝕖",Eopf:"𝔼",epar:"⋕",eparsl:"⧣",eplus:"⩱",epsi:"ε",epsilon:"ε",Epsilon:"Ε",epsiv:"ϵ",eqcirc:"≖",eqcolon:"≕",eqsim:"≂",eqslantgtr:"⪖",eqslantless:"⪕",Equal:"⩵",equals:"=",EqualTilde:"≂",equest:"≟",Equilibrium:"⇌",equiv:"≡",equivDD:"⩸",eqvparsl:"⧥",erarr:"⥱",erDot:"≓",escr:"ℯ",Escr:"ℰ",esdot:"≐",esim:"≂",Esim:"⩳",eta:"η",Eta:"Η",eth:"ð",ETH:"Ð",euml:"ë",Euml:"Ë",euro:"€",excl:"!",exist:"∃",Exists:"∃",expectation:"ℰ",exponentiale:"ⅇ",ExponentialE:"ⅇ",fallingdotseq:"≒",fcy:"ф",Fcy:"Ф",female:"♀",ffilig:"ffi",fflig:"ff",ffllig:"ffl",ffr:"𝔣",Ffr:"𝔉",filig:"fi",FilledSmallSquare:"◼",FilledVerySmallSquare:"▪",fjlig:"fj",flat:"♭",fllig:"fl",fltns:"▱",fnof:"ƒ",fopf:"𝕗",Fopf:"𝔽",forall:"∀",ForAll:"∀",fork:"⋔",forkv:"⫙",Fouriertrf:"ℱ",fpartint:"⨍",frac12:"½",frac13:"⅓",frac14:"¼",frac15:"⅕",frac16:"⅙",frac18:"⅛",frac23:"⅔",frac25:"⅖",frac34:"¾",frac35:"⅗",frac38:"⅜",frac45:"⅘",frac56:"⅚",frac58:"⅝",frac78:"⅞",frasl:"⁄",frown:"⌢",fscr:"𝒻",Fscr:"ℱ",gacute:"ǵ",gamma:"γ",Gamma:"Γ",gammad:"ϝ",Gammad:"Ϝ",gap:"⪆",gbreve:"ğ",Gbreve:"Ğ",Gcedil:"Ģ",gcirc:"ĝ",Gcirc:"Ĝ",gcy:"г",Gcy:"Г",gdot:"ġ",Gdot:"Ġ",ge:"≥",gE:"≧",gel:"⋛",gEl:"⪌",geq:"≥",geqq:"≧",geqslant:"⩾",ges:"⩾",gescc:"⪩",gesdot:"⪀",gesdoto:"⪂",gesdotol:"⪄",gesl:"⋛︀",gesles:"⪔",gfr:"𝔤",Gfr:"𝔊",gg:"≫",Gg:"⋙",ggg:"⋙",gimel:"ℷ",gjcy:"ѓ",GJcy:"Ѓ",gl:"≷",gla:"⪥",glE:"⪒",glj:"⪤",gnap:"⪊",gnapprox:"⪊",gne:"⪈",gnE:"≩",gneq:"⪈",gneqq:"≩",gnsim:"⋧",gopf:"𝕘",Gopf:"𝔾",grave:"`",GreaterEqual:"≥",GreaterEqualLess:"⋛",GreaterFullEqual:"≧",GreaterGreater:"⪢",GreaterLess:"≷",GreaterSlantEqual:"⩾",GreaterTilde:"≳",gscr:"ℊ",Gscr:"𝒢",gsim:"≳",gsime:"⪎",gsiml:"⪐",gt:">",Gt:"≫",GT:">",gtcc:"⪧",gtcir:"⩺",gtdot:"⋗",gtlPar:"⦕",gtquest:"⩼",gtrapprox:"⪆",gtrarr:"⥸",gtrdot:"⋗",gtreqless:"⋛",gtreqqless:"⪌",gtrless:"≷",gtrsim:"≳",gvertneqq:"≩︀",gvnE:"≩︀",Hacek:"ˇ",hairsp:" ",half:"½",hamilt:"ℋ",hardcy:"ъ",HARDcy:"Ъ",harr:"↔",hArr:"⇔",harrcir:"⥈",harrw:"↭",Hat:"^",hbar:"ℏ",hcirc:"ĥ",Hcirc:"Ĥ",hearts:"♥",heartsuit:"♥",hellip:"…",hercon:"⊹",hfr:"𝔥",Hfr:"ℌ",HilbertSpace:"ℋ",hksearow:"⤥",hkswarow:"⤦",hoarr:"⇿",homtht:"∻",hookleftarrow:"↩",hookrightarrow:"↪",hopf:"𝕙",Hopf:"ℍ",horbar:"―",HorizontalLine:"─",hscr:"𝒽",Hscr:"ℋ",hslash:"ℏ",hstrok:"ħ",Hstrok:"Ħ",HumpDownHump:"≎",HumpEqual:"≏",hybull:"⁃",hyphen:"‐",iacute:"í",Iacute:"Í",ic:"⁣",icirc:"î",Icirc:"Î",icy:"и",Icy:"И",Idot:"İ",iecy:"е",IEcy:"Е",iexcl:"¡",iff:"⇔",ifr:"𝔦",Ifr:"ℑ",igrave:"ì",Igrave:"Ì",ii:"ⅈ",iiiint:"⨌",iiint:"∭",iinfin:"⧜",iiota:"℩",ijlig:"ij",IJlig:"IJ",Im:"ℑ",imacr:"ī",Imacr:"Ī",image:"ℑ",ImaginaryI:"ⅈ",imagline:"ℐ",imagpart:"ℑ",imath:"ı",imof:"⊷",imped:"Ƶ",Implies:"⇒",in:"∈",incare:"℅",infin:"∞",infintie:"⧝",inodot:"ı",int:"∫",Int:"∬",intcal:"⊺",integers:"ℤ",Integral:"∫",intercal:"⊺",Intersection:"⋂",intlarhk:"⨗",intprod:"⨼",InvisibleComma:"⁣",InvisibleTimes:"⁢",iocy:"ё",IOcy:"Ё",iogon:"į",Iogon:"Į",iopf:"𝕚",Iopf:"𝕀",iota:"ι",Iota:"Ι",iprod:"⨼",iquest:"¿",iscr:"𝒾",Iscr:"ℐ",isin:"∈",isindot:"⋵",isinE:"⋹",isins:"⋴",isinsv:"⋳",isinv:"∈",it:"⁢",itilde:"ĩ",Itilde:"Ĩ",iukcy:"і",Iukcy:"І",iuml:"ï",Iuml:"Ï",jcirc:"ĵ",Jcirc:"Ĵ",jcy:"й",Jcy:"Й",jfr:"𝔧",Jfr:"𝔍",jmath:"ȷ",jopf:"𝕛",Jopf:"𝕁",jscr:"𝒿",Jscr:"𝒥",jsercy:"ј",Jsercy:"Ј",jukcy:"є",Jukcy:"Є",kappa:"κ",Kappa:"Κ",kappav:"ϰ",kcedil:"ķ",Kcedil:"Ķ",kcy:"к",Kcy:"К",kfr:"𝔨",Kfr:"𝔎",kgreen:"ĸ",khcy:"х",KHcy:"Х",kjcy:"ќ",KJcy:"Ќ",kopf:"𝕜",Kopf:"𝕂",kscr:"𝓀",Kscr:"𝒦",lAarr:"⇚",lacute:"ĺ",Lacute:"Ĺ",laemptyv:"⦴",lagran:"ℒ",lambda:"λ",Lambda:"Λ",lang:"⟨",Lang:"⟪",langd:"⦑",langle:"⟨",lap:"⪅",Laplacetrf:"ℒ",laquo:"«",larr:"←",lArr:"⇐",Larr:"↞",larrb:"⇤",larrbfs:"⤟",larrfs:"⤝",larrhk:"↩",larrlp:"↫",larrpl:"⤹",larrsim:"⥳",larrtl:"↢",lat:"⪫",latail:"⤙",lAtail:"⤛",late:"⪭",lates:"⪭︀",lbarr:"⤌",lBarr:"⤎",lbbrk:"❲",lbrace:"{",lbrack:"[",lbrke:"⦋",lbrksld:"⦏",lbrkslu:"⦍",lcaron:"ľ",Lcaron:"Ľ",lcedil:"ļ",Lcedil:"Ļ",lceil:"⌈",lcub:"{",lcy:"л",Lcy:"Л",ldca:"⤶",ldquo:"“",ldquor:"„",ldrdhar:"⥧",ldrushar:"⥋",ldsh:"↲",le:"≤",lE:"≦",LeftAngleBracket:"⟨",leftarrow:"←",Leftarrow:"⇐",LeftArrow:"←",LeftArrowBar:"⇤",LeftArrowRightArrow:"⇆",leftarrowtail:"↢",LeftCeiling:"⌈",LeftDoubleBracket:"⟦",LeftDownTeeVector:"⥡",LeftDownVector:"⇃",LeftDownVectorBar:"⥙",LeftFloor:"⌊",leftharpoondown:"↽",leftharpoonup:"↼",leftleftarrows:"⇇",leftrightarrow:"↔",Leftrightarrow:"⇔",LeftRightArrow:"↔",leftrightarrows:"⇆",leftrightharpoons:"⇋",leftrightsquigarrow:"↭",LeftRightVector:"⥎",LeftTee:"⊣",LeftTeeArrow:"↤",LeftTeeVector:"⥚",leftthreetimes:"⋋",LeftTriangle:"⊲",LeftTriangleBar:"⧏",LeftTriangleEqual:"⊴",LeftUpDownVector:"⥑",LeftUpTeeVector:"⥠",LeftUpVector:"↿",LeftUpVectorBar:"⥘",LeftVector:"↼",LeftVectorBar:"⥒",leg:"⋚",lEg:"⪋",leq:"≤",leqq:"≦",leqslant:"⩽",les:"⩽",lescc:"⪨",lesdot:"⩿",lesdoto:"⪁",lesdotor:"⪃",lesg:"⋚︀",lesges:"⪓",lessapprox:"⪅",lessdot:"⋖",lesseqgtr:"⋚",lesseqqgtr:"⪋",LessEqualGreater:"⋚",LessFullEqual:"≦",LessGreater:"≶",lessgtr:"≶",LessLess:"⪡",lesssim:"≲",LessSlantEqual:"⩽",LessTilde:"≲",lfisht:"⥼",lfloor:"⌊",lfr:"𝔩",Lfr:"𝔏",lg:"≶",lgE:"⪑",lHar:"⥢",lhard:"↽",lharu:"↼",lharul:"⥪",lhblk:"▄",ljcy:"љ",LJcy:"Љ",ll:"≪",Ll:"⋘",llarr:"⇇",llcorner:"⌞",Lleftarrow:"⇚",llhard:"⥫",lltri:"◺",lmidot:"ŀ",Lmidot:"Ŀ",lmoust:"⎰",lmoustache:"⎰",lnap:"⪉",lnapprox:"⪉",lne:"⪇",lnE:"≨",lneq:"⪇",lneqq:"≨",lnsim:"⋦",loang:"⟬",loarr:"⇽",lobrk:"⟦",longleftarrow:"⟵",Longleftarrow:"⟸",LongLeftArrow:"⟵",longleftrightarrow:"⟷",Longleftrightarrow:"⟺",LongLeftRightArrow:"⟷",longmapsto:"⟼",longrightarrow:"⟶",Longrightarrow:"⟹",LongRightArrow:"⟶",looparrowleft:"↫",looparrowright:"↬",lopar:"⦅",lopf:"𝕝",Lopf:"𝕃",loplus:"⨭",lotimes:"⨴",lowast:"∗",lowbar:"_",LowerLeftArrow:"↙",LowerRightArrow:"↘",loz:"◊",lozenge:"◊",lozf:"⧫",lpar:"(",lparlt:"⦓",lrarr:"⇆",lrcorner:"⌟",lrhar:"⇋",lrhard:"⥭",lrm:"‎",lrtri:"⊿",lsaquo:"‹",lscr:"𝓁",Lscr:"ℒ",lsh:"↰",Lsh:"↰",lsim:"≲",lsime:"⪍",lsimg:"⪏",lsqb:"[",lsquo:"‘",lsquor:"‚",lstrok:"ł",Lstrok:"Ł",lt:"<",Lt:"≪",LT:"<",ltcc:"⪦",ltcir:"⩹",ltdot:"⋖",lthree:"⋋",ltimes:"⋉",ltlarr:"⥶",ltquest:"⩻",ltri:"◃",ltrie:"⊴",ltrif:"◂",ltrPar:"⦖",lurdshar:"⥊",luruhar:"⥦",lvertneqq:"≨︀",lvnE:"≨︀",macr:"¯",male:"♂",malt:"✠",maltese:"✠",map:"↦",Map:"⤅",mapsto:"↦",mapstodown:"↧",mapstoleft:"↤",mapstoup:"↥",marker:"▮",mcomma:"⨩",mcy:"м",Mcy:"М",mdash:"—",mDDot:"∺",measuredangle:"∡",MediumSpace:" ",Mellintrf:"ℳ",mfr:"𝔪",Mfr:"𝔐",mho:"℧",micro:"µ",mid:"∣",midast:"*",midcir:"⫰",middot:"·",minus:"−",minusb:"⊟",minusd:"∸",minusdu:"⨪",MinusPlus:"∓",mlcp:"⫛",mldr:"…",mnplus:"∓",models:"⊧",mopf:"𝕞",Mopf:"𝕄",mp:"∓",mscr:"𝓂",Mscr:"ℳ",mstpos:"∾",mu:"μ",Mu:"Μ",multimap:"⊸",mumap:"⊸",nabla:"∇",nacute:"ń",Nacute:"Ń",nang:"∠⃒",nap:"≉",napE:"⩰̸",napid:"≋̸",napos:"ʼn",napprox:"≉",natur:"♮",natural:"♮",naturals:"ℕ",nbsp:" ",nbump:"≎̸",nbumpe:"≏̸",ncap:"⩃",ncaron:"ň",Ncaron:"Ň",ncedil:"ņ",Ncedil:"Ņ",ncong:"≇",ncongdot:"⩭̸",ncup:"⩂",ncy:"н",Ncy:"Н",ndash:"–",ne:"≠",nearhk:"⤤",nearr:"↗",neArr:"⇗",nearrow:"↗",nedot:"≐̸",NegativeMediumSpace:"​",NegativeThickSpace:"​",NegativeThinSpace:"​",NegativeVeryThinSpace:"​",nequiv:"≢",nesear:"⤨",nesim:"≂̸",NestedGreaterGreater:"≫",NestedLessLess:"≪",NewLine:"\n",nexist:"∄",nexists:"∄",nfr:"𝔫",Nfr:"𝔑",nge:"≱",ngE:"≧̸",ngeq:"≱",ngeqq:"≧̸",ngeqslant:"⩾̸",nges:"⩾̸",nGg:"⋙̸",ngsim:"≵",ngt:"≯",nGt:"≫⃒",ngtr:"≯",nGtv:"≫̸",nharr:"↮",nhArr:"⇎",nhpar:"⫲",ni:"∋",nis:"⋼",nisd:"⋺",niv:"∋",njcy:"њ",NJcy:"Њ",nlarr:"↚",nlArr:"⇍",nldr:"‥",nle:"≰",nlE:"≦̸",nleftarrow:"↚",nLeftarrow:"⇍",nleftrightarrow:"↮",nLeftrightarrow:"⇎",nleq:"≰",nleqq:"≦̸",nleqslant:"⩽̸",nles:"⩽̸",nless:"≮",nLl:"⋘̸",nlsim:"≴",nlt:"≮",nLt:"≪⃒",nltri:"⋪",nltrie:"⋬",nLtv:"≪̸",nmid:"∤",NoBreak:"⁠",NonBreakingSpace:" ",nopf:"𝕟",Nopf:"ℕ",not:"¬",Not:"⫬",NotCongruent:"≢",NotCupCap:"≭",NotDoubleVerticalBar:"∦",NotElement:"∉",NotEqual:"≠",NotEqualTilde:"≂̸",NotExists:"∄",NotGreater:"≯",NotGreaterEqual:"≱",NotGreaterFullEqual:"≧̸",NotGreaterGreater:"≫̸",NotGreaterLess:"≹",NotGreaterSlantEqual:"⩾̸",NotGreaterTilde:"≵",NotHumpDownHump:"≎̸",NotHumpEqual:"≏̸",notin:"∉",notindot:"⋵̸",notinE:"⋹̸",notinva:"∉",notinvb:"⋷",notinvc:"⋶",NotLeftTriangle:"⋪",NotLeftTriangleBar:"⧏̸",NotLeftTriangleEqual:"⋬",NotLess:"≮",NotLessEqual:"≰",NotLessGreater:"≸",NotLessLess:"≪̸",NotLessSlantEqual:"⩽̸",NotLessTilde:"≴",NotNestedGreaterGreater:"⪢̸",NotNestedLessLess:"⪡̸",notni:"∌",notniva:"∌",notnivb:"⋾",notnivc:"⋽",NotPrecedes:"⊀",NotPrecedesEqual:"⪯̸",NotPrecedesSlantEqual:"⋠",NotReverseElement:"∌",NotRightTriangle:"⋫",NotRightTriangleBar:"⧐̸",NotRightTriangleEqual:"⋭",NotSquareSubset:"⊏̸",NotSquareSubsetEqual:"⋢",NotSquareSuperset:"⊐̸",NotSquareSupersetEqual:"⋣",NotSubset:"⊂⃒",NotSubsetEqual:"⊈",NotSucceeds:"⊁",NotSucceedsEqual:"⪰̸",NotSucceedsSlantEqual:"⋡",NotSucceedsTilde:"≿̸",NotSuperset:"⊃⃒",NotSupersetEqual:"⊉",NotTilde:"≁",NotTildeEqual:"≄",NotTildeFullEqual:"≇",NotTildeTilde:"≉",NotVerticalBar:"∤",npar:"∦",nparallel:"∦",nparsl:"⫽⃥",npart:"∂̸",npolint:"⨔",npr:"⊀",nprcue:"⋠",npre:"⪯̸",nprec:"⊀",npreceq:"⪯̸",nrarr:"↛",nrArr:"⇏",nrarrc:"⤳̸",nrarrw:"↝̸",nrightarrow:"↛",nRightarrow:"⇏",nrtri:"⋫",nrtrie:"⋭",nsc:"⊁",nsccue:"⋡",nsce:"⪰̸",nscr:"𝓃",Nscr:"𝒩",nshortmid:"∤",nshortparallel:"∦",nsim:"≁",nsime:"≄",nsimeq:"≄",nsmid:"∤",nspar:"∦",nsqsube:"⋢",nsqsupe:"⋣",nsub:"⊄",nsube:"⊈",nsubE:"⫅̸",nsubset:"⊂⃒",nsubseteq:"⊈",nsubseteqq:"⫅̸",nsucc:"⊁",nsucceq:"⪰̸",nsup:"⊅",nsupe:"⊉",nsupE:"⫆̸",nsupset:"⊃⃒",nsupseteq:"⊉",nsupseteqq:"⫆̸",ntgl:"≹",ntilde:"ñ",Ntilde:"Ñ",ntlg:"≸",ntriangleleft:"⋪",ntrianglelefteq:"⋬",ntriangleright:"⋫",ntrianglerighteq:"⋭",nu:"ν",Nu:"Ν",num:"#",numero:"№",numsp:" ",nvap:"≍⃒",nvdash:"⊬",nvDash:"⊭",nVdash:"⊮",nVDash:"⊯",nvge:"≥⃒",nvgt:">⃒",nvHarr:"⤄",nvinfin:"⧞",nvlArr:"⤂",nvle:"≤⃒",nvlt:"<⃒",nvltrie:"⊴⃒",nvrArr:"⤃",nvrtrie:"⊵⃒",nvsim:"∼⃒",nwarhk:"⤣",nwarr:"↖",nwArr:"⇖",nwarrow:"↖",nwnear:"⤧",oacute:"ó",Oacute:"Ó",oast:"⊛",ocir:"⊚",ocirc:"ô",Ocirc:"Ô",ocy:"о",Ocy:"О",odash:"⊝",odblac:"ő",Odblac:"Ő",odiv:"⨸",odot:"⊙",odsold:"⦼",oelig:"œ",OElig:"Œ",ofcir:"⦿",ofr:"𝔬",Ofr:"𝔒",ogon:"˛",ograve:"ò",Ograve:"Ò",ogt:"⧁",ohbar:"⦵",ohm:"Ω",oint:"∮",olarr:"↺",olcir:"⦾",olcross:"⦻",oline:"‾",olt:"⧀",omacr:"ō",Omacr:"Ō",omega:"ω",Omega:"Ω",omicron:"ο",Omicron:"Ο",omid:"⦶",ominus:"⊖",oopf:"𝕠",Oopf:"𝕆",opar:"⦷",OpenCurlyDoubleQuote:"“",OpenCurlyQuote:"‘",operp:"⦹",oplus:"⊕",or:"∨",Or:"⩔",orarr:"↻",ord:"⩝",order:"ℴ",orderof:"ℴ",ordf:"ª",ordm:"º",origof:"⊶",oror:"⩖",orslope:"⩗",orv:"⩛",oS:"Ⓢ",oscr:"ℴ",Oscr:"𝒪",oslash:"ø",Oslash:"Ø",osol:"⊘",otilde:"õ",Otilde:"Õ",otimes:"⊗",Otimes:"⨷",otimesas:"⨶",ouml:"ö",Ouml:"Ö",ovbar:"⌽",OverBar:"‾",OverBrace:"⏞",OverBracket:"⎴",OverParenthesis:"⏜",par:"∥",para:"¶",parallel:"∥",parsim:"⫳",parsl:"⫽",part:"∂",PartialD:"∂",pcy:"п",Pcy:"П",percnt:"%",period:".",permil:"‰",perp:"⊥",pertenk:"‱",pfr:"𝔭",Pfr:"𝔓",phi:"φ",Phi:"Φ",phiv:"ϕ",phmmat:"ℳ",phone:"☎",pi:"π",Pi:"Π",pitchfork:"⋔",piv:"ϖ",planck:"ℏ",planckh:"ℎ",plankv:"ℏ",plus:"+",plusacir:"⨣",plusb:"⊞",pluscir:"⨢",plusdo:"∔",plusdu:"⨥",pluse:"⩲",PlusMinus:"±",plusmn:"±",plussim:"⨦",plustwo:"⨧",pm:"±",Poincareplane:"ℌ",pointint:"⨕",popf:"𝕡",Popf:"ℙ",pound:"£",pr:"≺",Pr:"⪻",prap:"⪷",prcue:"≼",pre:"⪯",prE:"⪳",prec:"≺",precapprox:"⪷",preccurlyeq:"≼",Precedes:"≺",PrecedesEqual:"⪯",PrecedesSlantEqual:"≼",PrecedesTilde:"≾",preceq:"⪯",precnapprox:"⪹",precneqq:"⪵",precnsim:"⋨",precsim:"≾",prime:"′",Prime:"″",primes:"ℙ",prnap:"⪹",prnE:"⪵",prnsim:"⋨",prod:"∏",Product:"∏",profalar:"⌮",profline:"⌒",profsurf:"⌓",prop:"∝",Proportion:"∷",Proportional:"∝",propto:"∝",prsim:"≾",prurel:"⊰",pscr:"𝓅",Pscr:"𝒫",psi:"ψ",Psi:"Ψ",puncsp:" ",qfr:"𝔮",Qfr:"𝔔",qint:"⨌",qopf:"𝕢",Qopf:"ℚ",qprime:"⁗",qscr:"𝓆",Qscr:"𝒬",quaternions:"ℍ",quatint:"⨖",quest:"?",questeq:"≟",quot:'"',QUOT:'"',rAarr:"⇛",race:"∽̱",racute:"ŕ",Racute:"Ŕ",radic:"√",raemptyv:"⦳",rang:"⟩",Rang:"⟫",rangd:"⦒",range:"⦥",rangle:"⟩",raquo:"»",rarr:"→",rArr:"⇒",Rarr:"↠",rarrap:"⥵",rarrb:"⇥",rarrbfs:"⤠",rarrc:"⤳",rarrfs:"⤞",rarrhk:"↪",rarrlp:"↬",rarrpl:"⥅",rarrsim:"⥴",rarrtl:"↣",Rarrtl:"⤖",rarrw:"↝",ratail:"⤚",rAtail:"⤜",ratio:"∶",rationals:"ℚ",rbarr:"⤍",rBarr:"⤏",RBarr:"⤐",rbbrk:"❳",rbrace:"}",rbrack:"]",rbrke:"⦌",rbrksld:"⦎",rbrkslu:"⦐",rcaron:"ř",Rcaron:"Ř",rcedil:"ŗ",Rcedil:"Ŗ",rceil:"⌉",rcub:"}",rcy:"р",Rcy:"Р",rdca:"⤷",rdldhar:"⥩",rdquo:"”",rdquor:"”",rdsh:"↳",Re:"ℜ",real:"ℜ",realine:"ℛ",realpart:"ℜ",reals:"ℝ",rect:"▭",reg:"®",REG:"®",ReverseElement:"∋",ReverseEquilibrium:"⇋",ReverseUpEquilibrium:"⥯",rfisht:"⥽",rfloor:"⌋",rfr:"𝔯",Rfr:"ℜ",rHar:"⥤",rhard:"⇁",rharu:"⇀",rharul:"⥬",rho:"ρ",Rho:"Ρ",rhov:"ϱ",RightAngleBracket:"⟩",rightarrow:"→",Rightarrow:"⇒",RightArrow:"→",RightArrowBar:"⇥",RightArrowLeftArrow:"⇄",rightarrowtail:"↣",RightCeiling:"⌉",RightDoubleBracket:"⟧",RightDownTeeVector:"⥝",RightDownVector:"⇂",RightDownVectorBar:"⥕",RightFloor:"⌋",rightharpoondown:"⇁",rightharpoonup:"⇀",rightleftarrows:"⇄",rightleftharpoons:"⇌",rightrightarrows:"⇉",rightsquigarrow:"↝",RightTee:"⊢",RightTeeArrow:"↦",RightTeeVector:"⥛",rightthreetimes:"⋌",RightTriangle:"⊳",RightTriangleBar:"⧐",RightTriangleEqual:"⊵",RightUpDownVector:"⥏",RightUpTeeVector:"⥜",RightUpVector:"↾",RightUpVectorBar:"⥔",RightVector:"⇀",RightVectorBar:"⥓",ring:"˚",risingdotseq:"≓",rlarr:"⇄",rlhar:"⇌",rlm:"‏",rmoust:"⎱",rmoustache:"⎱",rnmid:"⫮",roang:"⟭",roarr:"⇾",robrk:"⟧",ropar:"⦆",ropf:"𝕣",Ropf:"ℝ",roplus:"⨮",rotimes:"⨵",RoundImplies:"⥰",rpar:")",rpargt:"⦔",rppolint:"⨒",rrarr:"⇉",Rrightarrow:"⇛",rsaquo:"›",rscr:"𝓇",Rscr:"ℛ",rsh:"↱",Rsh:"↱",rsqb:"]",rsquo:"’",rsquor:"’",rthree:"⋌",rtimes:"⋊",rtri:"▹",rtrie:"⊵",rtrif:"▸",rtriltri:"⧎",RuleDelayed:"⧴",ruluhar:"⥨",rx:"℞",sacute:"ś",Sacute:"Ś",sbquo:"‚",sc:"≻",Sc:"⪼",scap:"⪸",scaron:"š",Scaron:"Š",sccue:"≽",sce:"⪰",scE:"⪴",scedil:"ş",Scedil:"Ş",scirc:"ŝ",Scirc:"Ŝ",scnap:"⪺",scnE:"⪶",scnsim:"⋩",scpolint:"⨓",scsim:"≿",scy:"с",Scy:"С",sdot:"⋅",sdotb:"⊡",sdote:"⩦",searhk:"⤥",searr:"↘",seArr:"⇘",searrow:"↘",sect:"§",semi:";",seswar:"⤩",setminus:"∖",setmn:"∖",sext:"✶",sfr:"𝔰",Sfr:"𝔖",sfrown:"⌢",sharp:"♯",shchcy:"щ",SHCHcy:"Щ",shcy:"ш",SHcy:"Ш",ShortDownArrow:"↓",ShortLeftArrow:"←",shortmid:"∣",shortparallel:"∥",ShortRightArrow:"→",ShortUpArrow:"↑",shy:"­",sigma:"σ",Sigma:"Σ",sigmaf:"ς",sigmav:"ς",sim:"∼",simdot:"⩪",sime:"≃",simeq:"≃",simg:"⪞",simgE:"⪠",siml:"⪝",simlE:"⪟",simne:"≆",simplus:"⨤",simrarr:"⥲",slarr:"←",SmallCircle:"∘",smallsetminus:"∖",smashp:"⨳",smeparsl:"⧤",smid:"∣",smile:"⌣",smt:"⪪",smte:"⪬",smtes:"⪬︀",softcy:"ь",SOFTcy:"Ь",sol:"/",solb:"⧄",solbar:"⌿",sopf:"𝕤",Sopf:"𝕊",spades:"♠",spadesuit:"♠",spar:"∥",sqcap:"⊓",sqcaps:"⊓︀",sqcup:"⊔",sqcups:"⊔︀",Sqrt:"√",sqsub:"⊏",sqsube:"⊑",sqsubset:"⊏",sqsubseteq:"⊑",sqsup:"⊐",sqsupe:"⊒",sqsupset:"⊐",sqsupseteq:"⊒",squ:"□",square:"□",Square:"□",SquareIntersection:"⊓",SquareSubset:"⊏",SquareSubsetEqual:"⊑",SquareSuperset:"⊐",SquareSupersetEqual:"⊒",SquareUnion:"⊔",squarf:"▪",squf:"▪",srarr:"→",sscr:"𝓈",Sscr:"𝒮",ssetmn:"∖",ssmile:"⌣",sstarf:"⋆",star:"☆",Star:"⋆",starf:"★",straightepsilon:"ϵ",straightphi:"ϕ",strns:"¯",sub:"⊂",Sub:"⋐",subdot:"⪽",sube:"⊆",subE:"⫅",subedot:"⫃",submult:"⫁",subne:"⊊",subnE:"⫋",subplus:"⪿",subrarr:"⥹",subset:"⊂",Subset:"⋐",subseteq:"⊆",subseteqq:"⫅",SubsetEqual:"⊆",subsetneq:"⊊",subsetneqq:"⫋",subsim:"⫇",subsub:"⫕",subsup:"⫓",succ:"≻",succapprox:"⪸",succcurlyeq:"≽",Succeeds:"≻",SucceedsEqual:"⪰",SucceedsSlantEqual:"≽",SucceedsTilde:"≿",succeq:"⪰",succnapprox:"⪺",succneqq:"⪶",succnsim:"⋩",succsim:"≿",SuchThat:"∋",sum:"∑",Sum:"∑",sung:"♪",sup:"⊃",Sup:"⋑",sup1:"¹",sup2:"²",sup3:"³",supdot:"⪾",supdsub:"⫘",supe:"⊇",supE:"⫆",supedot:"⫄",Superset:"⊃",SupersetEqual:"⊇",suphsol:"⟉",suphsub:"⫗",suplarr:"⥻",supmult:"⫂",supne:"⊋",supnE:"⫌",supplus:"⫀",supset:"⊃",Supset:"⋑",supseteq:"⊇",supseteqq:"⫆",supsetneq:"⊋",supsetneqq:"⫌",supsim:"⫈",supsub:"⫔",supsup:"⫖",swarhk:"⤦",swarr:"↙",swArr:"⇙",swarrow:"↙",swnwar:"⤪",szlig:"ß",Tab:"\t",target:"⌖",tau:"τ",Tau:"Τ",tbrk:"⎴",tcaron:"ť",Tcaron:"Ť",tcedil:"ţ",Tcedil:"Ţ",tcy:"т",Tcy:"Т",tdot:"⃛",telrec:"⌕",tfr:"𝔱",Tfr:"𝔗",there4:"∴",therefore:"∴",Therefore:"∴",theta:"θ",Theta:"Θ",thetasym:"ϑ",thetav:"ϑ",thickapprox:"≈",thicksim:"∼",ThickSpace:"  ",thinsp:" ",ThinSpace:" ",thkap:"≈",thksim:"∼",thorn:"þ",THORN:"Þ",tilde:"˜",Tilde:"∼",TildeEqual:"≃",TildeFullEqual:"≅",TildeTilde:"≈",times:"×",timesb:"⊠",timesbar:"⨱",timesd:"⨰",tint:"∭",toea:"⤨",top:"⊤",topbot:"⌶",topcir:"⫱",topf:"𝕥",Topf:"𝕋",topfork:"⫚",tosa:"⤩",tprime:"‴",trade:"™",TRADE:"™",triangle:"▵",triangledown:"▿",triangleleft:"◃",trianglelefteq:"⊴",triangleq:"≜",triangleright:"▹",trianglerighteq:"⊵",tridot:"◬",trie:"≜",triminus:"⨺",TripleDot:"⃛",triplus:"⨹",trisb:"⧍",tritime:"⨻",trpezium:"⏢",tscr:"𝓉",Tscr:"𝒯",tscy:"ц",TScy:"Ц",tshcy:"ћ",TSHcy:"Ћ",tstrok:"ŧ",Tstrok:"Ŧ",twixt:"≬",twoheadleftarrow:"↞",twoheadrightarrow:"↠",uacute:"ú",Uacute:"Ú",uarr:"↑",uArr:"⇑",Uarr:"↟",Uarrocir:"⥉",ubrcy:"ў",Ubrcy:"Ў",ubreve:"ŭ",Ubreve:"Ŭ",ucirc:"û",Ucirc:"Û",ucy:"у",Ucy:"У",udarr:"⇅",udblac:"ű",Udblac:"Ű",udhar:"⥮",ufisht:"⥾",ufr:"𝔲",Ufr:"𝔘",ugrave:"ù",Ugrave:"Ù",uHar:"⥣",uharl:"↿",uharr:"↾",uhblk:"▀",ulcorn:"⌜",ulcorner:"⌜",ulcrop:"⌏",ultri:"◸",umacr:"ū",Umacr:"Ū",uml:"¨",UnderBar:"_",UnderBrace:"⏟",UnderBracket:"⎵",UnderParenthesis:"⏝",Union:"⋃",UnionPlus:"⊎",uogon:"ų",Uogon:"Ų",uopf:"𝕦",Uopf:"𝕌",uparrow:"↑",Uparrow:"⇑",UpArrow:"↑",UpArrowBar:"⤒",UpArrowDownArrow:"⇅",updownarrow:"↕",Updownarrow:"⇕",UpDownArrow:"↕",UpEquilibrium:"⥮",upharpoonleft:"↿",upharpoonright:"↾",uplus:"⊎",UpperLeftArrow:"↖",UpperRightArrow:"↗",upsi:"υ",Upsi:"ϒ",upsih:"ϒ",upsilon:"υ",Upsilon:"Υ",UpTee:"⊥",UpTeeArrow:"↥",upuparrows:"⇈",urcorn:"⌝",urcorner:"⌝",urcrop:"⌎",uring:"ů",Uring:"Ů",urtri:"◹",uscr:"𝓊",Uscr:"𝒰",utdot:"⋰",utilde:"ũ",Utilde:"Ũ",utri:"▵",utrif:"▴",uuarr:"⇈",uuml:"ü",Uuml:"Ü",uwangle:"⦧",vangrt:"⦜",varepsilon:"ϵ",varkappa:"ϰ",varnothing:"∅",varphi:"ϕ",varpi:"ϖ",varpropto:"∝",varr:"↕",vArr:"⇕",varrho:"ϱ",varsigma:"ς",varsubsetneq:"⊊︀",varsubsetneqq:"⫋︀",varsupsetneq:"⊋︀",varsupsetneqq:"⫌︀",vartheta:"ϑ",vartriangleleft:"⊲",vartriangleright:"⊳",vBar:"⫨",Vbar:"⫫",vBarv:"⫩",vcy:"в",Vcy:"В",vdash:"⊢",vDash:"⊨",Vdash:"⊩",VDash:"⊫",Vdashl:"⫦",vee:"∨",Vee:"⋁",veebar:"⊻",veeeq:"≚",vellip:"⋮",verbar:"|",Verbar:"‖",vert:"|",Vert:"‖",VerticalBar:"∣",VerticalLine:"|",VerticalSeparator:"❘",VerticalTilde:"≀",VeryThinSpace:" ",vfr:"𝔳",Vfr:"𝔙",vltri:"⊲",vnsub:"⊂⃒",vnsup:"⊃⃒",vopf:"𝕧",Vopf:"𝕍",vprop:"∝",vrtri:"⊳",vscr:"𝓋",Vscr:"𝒱",vsubne:"⊊︀",vsubnE:"⫋︀",vsupne:"⊋︀",vsupnE:"⫌︀",Vvdash:"⊪",vzigzag:"⦚",wcirc:"ŵ",Wcirc:"Ŵ",wedbar:"⩟",wedge:"∧",Wedge:"⋀",wedgeq:"≙",weierp:"℘",wfr:"𝔴",Wfr:"𝔚",wopf:"𝕨",Wopf:"𝕎",wp:"℘",wr:"≀",wreath:"≀",wscr:"𝓌",Wscr:"𝒲",xcap:"⋂",xcirc:"◯",xcup:"⋃",xdtri:"▽",xfr:"𝔵",Xfr:"𝔛",xharr:"⟷",xhArr:"⟺",xi:"ξ",Xi:"Ξ",xlarr:"⟵",xlArr:"⟸",xmap:"⟼",xnis:"⋻",xodot:"⨀",xopf:"𝕩",Xopf:"𝕏",xoplus:"⨁",xotime:"⨂",xrarr:"⟶",xrArr:"⟹",xscr:"𝓍",Xscr:"𝒳",xsqcup:"⨆",xuplus:"⨄",xutri:"△",xvee:"⋁",xwedge:"⋀",yacute:"ý",Yacute:"Ý",yacy:"я",YAcy:"Я",ycirc:"ŷ",Ycirc:"Ŷ",ycy:"ы",Ycy:"Ы",yen:"¥",yfr:"𝔶",Yfr:"𝔜",yicy:"ї",YIcy:"Ї",yopf:"𝕪",Yopf:"𝕐",yscr:"𝓎",Yscr:"𝒴",yucy:"ю",YUcy:"Ю",yuml:"ÿ",Yuml:"Ÿ",zacute:"ź",Zacute:"Ź",zcaron:"ž",Zcaron:"Ž",zcy:"з",Zcy:"З",zdot:"ż",Zdot:"Ż",zeetrf:"ℨ",ZeroWidthSpace:"​",zeta:"ζ",Zeta:"Ζ",zfr:"𝔷",Zfr:"ℨ",zhcy:"ж",ZHcy:"Ж",zigrarr:"⇝",zopf:"𝕫",Zopf:"ℤ",zscr:"𝓏",Zscr:"𝒵",zwj:"‍",zwnj:"‌"},d={aacute:"á",Aacute:"Á",acirc:"â",Acirc:"Â",acute:"´",aelig:"æ",AElig:"Æ",agrave:"à",Agrave:"À",amp:"&",AMP:"&",aring:"å",Aring:"Å",atilde:"ã",Atilde:"Ã",auml:"ä",Auml:"Ä",brvbar:"¦",ccedil:"ç",Ccedil:"Ç",cedil:"¸",cent:"¢",copy:"©",COPY:"©",curren:"¤",deg:"°",divide:"÷",eacute:"é",Eacute:"É",ecirc:"ê",Ecirc:"Ê",egrave:"è",Egrave:"È",eth:"ð",ETH:"Ð",euml:"ë",Euml:"Ë",frac12:"½",frac14:"¼",frac34:"¾",gt:">",GT:">",iacute:"í",Iacute:"Í",icirc:"î",Icirc:"Î",iexcl:"¡",igrave:"ì",Igrave:"Ì",iquest:"¿",iuml:"ï",Iuml:"Ï",laquo:"«",lt:"<",LT:"<",macr:"¯",micro:"µ",middot:"·",nbsp:" ",not:"¬",ntilde:"ñ",Ntilde:"Ñ",oacute:"ó",Oacute:"Ó",ocirc:"ô",Ocirc:"Ô",ograve:"ò",Ograve:"Ò",ordf:"ª",ordm:"º",oslash:"ø",Oslash:"Ø",otilde:"õ",Otilde:"Õ",ouml:"ö",Ouml:"Ö",para:"¶",plusmn:"±",pound:"£",quot:'"',QUOT:'"',raquo:"»",reg:"®",REG:"®",sect:"§",shy:"­",sup1:"¹",sup2:"²",sup3:"³",szlig:"ß",thorn:"þ",THORN:"Þ",times:"×",uacute:"ú",Uacute:"Ú",ucirc:"û",Ucirc:"Û",ugrave:"ù",Ugrave:"Ù",uml:"¨",uuml:"ü",Uuml:"Ü",yacute:"ý",Yacute:"Ý",yen:"¥",yuml:"ÿ"},v={0:"�",128:"€",130:"‚",131:"ƒ",132:"„",133:"…",134:"†",135:"‡",136:"ˆ",137:"‰",138:"Š",139:"‹",140:"Œ",142:"Ž",145:"‘",146:"’",147:"“",148:"”",149:"•",150:"–",151:"—",152:"˜",153:"™",154:"š",155:"›",156:"œ",158:"ž",159:"Ÿ"},g=[1,2,3,4,5,6,7,8,11,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,64976,64977,64978,64979,64980,64981,64982,64983,64984,64985,64986,64987,64988,64989,64990,64991,64992,64993,64994,64995,64996,64997,64998,64999,65e3,65001,65002,65003,65004,65005,65006,65007,65534,65535,131070,131071,196606,196607,262142,262143,327678,327679,393214,393215,458750,458751,524286,524287,589822,589823,655358,655359,720894,720895,786430,786431,851966,851967,917502,917503,983038,983039,1048574,1048575,1114110,1114111],m=String.fromCharCode,p={}.hasOwnProperty,E=function(e,A){return p.call(e,A)},B=function(e,A){if(!e)return A;var r,i={};for(r in A)i[r]=E(e,r)?e[r]:A[r];return i},y=function(e,A){var r="";return e>=55296&&e<=57343||e>1114111?(A&&Z("character reference outside the permissible Unicode range"),"�"):E(v,e)?(A&&Z("disallowed character reference"),v[e]):(A&&function(e,A){for(var r=-1,i=e.length;++r65535&&(r+=m((e-=65536)>>>10&1023|55296),e=56320|1023&e),r+=m(e))},C=function(e){return"&#x"+e.toString(16).toUpperCase()+";"},I=function(e){return"&#"+e+";"},Z=function(e){throw Error("Parse error: "+e)},G=function(e,A){(A=B(A,G.options)).strict&&h.test(e)&&Z("forbidden code point");var r=A.encodeEverything,i=A.useNamedReferences,a=A.allowUnsafeSymbols,t=A.decimal?I:C,u=function(e){return t(e.charCodeAt(0))};return r?(e=e.replace(f,(function(e){return i&&E(c,e)?"&"+c[e]+";":u(e)})),i&&(e=e.replace(/>\u20D2/g,">⃒").replace(/<\u20D2/g,"<⃒").replace(/fj/g,"fj")),i&&(e=e.replace(s,(function(e){return"&"+c[e]+";"})))):i?(a||(e=e.replace(o,(function(e){return"&"+c[e]+";"}))),e=(e=e.replace(/>\u20D2/g,">⃒").replace(/<\u20D2/g,"<⃒")).replace(s,(function(e){return"&"+c[e]+";"}))):a||(e=e.replace(o,u)),e.replace(n,(function(e){var A=e.charCodeAt(0),r=e.charCodeAt(1);return t(1024*(A-55296)+r-56320+65536)})).replace(l,u)};G.options={allowUnsafeSymbols:!1,encodeEverything:!1,strict:!1,useNamedReferences:!1,decimal:!1};var L=function(e,A){var r=(A=B(A,L.options)).strict;return r&&b.test(e)&&Z("malformed character reference"),e.replace(w,(function(e,i,a,t,n,f,l,s,c){var o,u,b,h,w,v;return i?k[w=i]:a?(w=a,(v=t)&&A.isAttributeValue?(r&&"="==v&&Z("`&` did not start a character reference"),e):(r&&Z("named character reference was not terminated by a semicolon"),d[w]+(v||""))):n?(b=n,u=f,r&&!u&&Z("character reference was not terminated by a semicolon"),o=parseInt(b,10),y(o,r)):l?(h=l,u=s,r&&!u&&Z("character reference was not terminated by a semicolon"),o=parseInt(h,16),y(o,r)):(r&&Z("named character reference was not terminated by a semicolon"),e)}))};L.options={isAttributeValue:!1,strict:!1};var Q={version:"1.2.0",encode:G,decode:L,escape:function(e){return e.replace(o,(function(e){return u[e]}))},unescape:L};void 0===(i=function(){return Q}.call(A,r,A,e))||(e.exports=i)}()},9453:e=>{"use strict";var A=e.exports=function(e,A,i){"function"==typeof A&&(i=A,A={}),r(A,"function"==typeof(i=A.cb||i)?i:i.pre||function(){},i.post||function(){},e,"",e)};function r(e,i,a,t,n,f,l,s,c,o){if(t&&"object"==typeof t&&!Array.isArray(t)){for(var u in i(t,n,f,l,s,c,o),t){var b=t[u];if(Array.isArray(b)){if(u in A.arrayKeywords)for(var h=0;h{var A=Array.isArray;e.exports=function(){if(!arguments.length)return[];var e=arguments[0];return A(e)?e:[e]}},467:(e,A,r)=>{e=r.nmd(e);var i="__lodash_hash_undefined__",a=9007199254740991,t="[object Arguments]",n="[object Boolean]",f="[object Date]",l="[object Function]",s="[object GeneratorFunction]",c="[object Map]",o="[object Number]",u="[object Object]",b="[object Promise]",h="[object RegExp]",w="[object Set]",k="[object String]",d="[object Symbol]",v="[object WeakMap]",g="[object ArrayBuffer]",m="[object DataView]",p="[object Float32Array]",E="[object Float64Array]",B="[object Int8Array]",y="[object Int16Array]",C="[object Int32Array]",I="[object Uint8Array]",Z="[object Uint8ClampedArray]",G="[object Uint16Array]",L="[object Uint32Array]",Q=/\w*$/,D=/^\[object .+?Constructor\]$/,z=/^(?:0|[1-9]\d*)$/,W={};W[t]=W["[object Array]"]=W[g]=W[m]=W[n]=W[f]=W[p]=W[E]=W[B]=W[y]=W[C]=W[c]=W[o]=W[u]=W[h]=W[w]=W[k]=W[d]=W[I]=W[Z]=W[G]=W[L]=!0,W["[object Error]"]=W[l]=W[v]=!1;var Y="object"==typeof global&&global&&global.Object===Object&&global,F="object"==typeof self&&self&&self.Object===Object&&self,M=Y||F||Function("return this")(),V=A&&!A.nodeType&&A,N=V&&e&&!e.nodeType&&e,R=N&&N.exports===V;function x(e,A){return e.set(A[0],A[1]),e}function J(e,A){return e.add(A),e}function H(e,A,r,i){var a=-1,t=e?e.length:0;for(i&&t&&(r=e[++a]);++a-1},Ze.prototype.set=function(e,A){var r=this.__data__,i=De(r,e);return i<0?r.push([e,A]):r[i][1]=A,this},Ge.prototype.clear=function(){this.__data__={hash:new Ie,map:new(he||Ze),string:new Ie}},Ge.prototype.delete=function(e){return Fe(this,e).delete(e)},Ge.prototype.get=function(e){return Fe(this,e).get(e)},Ge.prototype.has=function(e){return Fe(this,e).has(e)},Ge.prototype.set=function(e,A){return Fe(this,e).set(e,A),this},Le.prototype.clear=function(){this.__data__=new Ze},Le.prototype.delete=function(e){return this.__data__.delete(e)},Le.prototype.get=function(e){return this.__data__.get(e)},Le.prototype.has=function(e){return this.__data__.has(e)},Le.prototype.set=function(e,A){var r=this.__data__;if(r instanceof Ze){var i=r.__data__;if(!he||i.length<199)return i.push([e,A]),this;r=this.__data__=new Ge(i)}return r.set(e,A),this};var Ve=ce?S(ce,Object):function(){return[]},Ne=function(e){return Ae.call(e)};function Re(e,A){return!!(A=null==A?a:A)&&("number"==typeof e||z.test(e))&&e>-1&&e%1==0&&e-1&&e%1==0&&e<=a}(e.length)&&!je(e)}var Se=oe||function(){return!1};function je(e){var A=Ue(e)?Ae.call(e):"";return A==l||A==s}function Ue(e){var A=typeof e;return!!e&&("object"==A||"function"==A)}function Te(e){return Xe(e)?function(e,A){var r=Pe(e)||function(e){return function(e){return function(e){return!!e&&"object"==typeof e}(e)&&Xe(e)}(e)&&ee.call(e,"callee")&&(!le.call(e,"callee")||Ae.call(e)==t)}(e)?function(e,A){for(var r=-1,i=Array(e);++r{var A,r="__lodash_hash_undefined__",i=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,a=/^\w*$/,t=/^\./,n=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,f=/\\(\\)?/g,l=/^\[object .+?Constructor\]$/,s="object"==typeof global&&global&&global.Object===Object&&global,c="object"==typeof self&&self&&self.Object===Object&&self,o=s||c||Function("return this")(),u=Array.prototype,b=Function.prototype,h=Object.prototype,w=o["__core-js_shared__"],k=(A=/[^.]+$/.exec(w&&w.keys&&w.keys.IE_PROTO||""))?"Symbol(src)_1."+A:"",d=b.toString,v=h.hasOwnProperty,g=h.toString,m=RegExp("^"+d.call(v).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),p=o.Symbol,E=u.splice,B=z(o,"Map"),y=z(Object,"create"),C=p?p.prototype:void 0,I=C?C.toString:void 0;function Z(e){var A=-1,r=e?e.length:0;for(this.clear();++A-1},G.prototype.set=function(e,A){var r=this.__data__,i=Q(r,e);return i<0?r.push([e,A]):r[i][1]=A,this},L.prototype.clear=function(){this.__data__={hash:new Z,map:new(B||G),string:new Z}},L.prototype.delete=function(e){return D(this,e).delete(e)},L.prototype.get=function(e){return D(this,e).get(e)},L.prototype.has=function(e){return D(this,e).has(e)},L.prototype.set=function(e,A){return D(this,e).set(e,A),this};var W=F((function(e){var A;e=null==(A=e)?"":function(e){if("string"==typeof e)return e;if(N(e))return I?I.call(e):"";var A=e+"";return"0"==A&&1/e==-1/0?"-0":A}(A);var r=[];return t.test(e)&&r.push(""),e.replace(n,(function(e,A,i,a){r.push(i?a.replace(f,"$1"):A||e)})),r}));function Y(e){if("string"==typeof e||N(e))return e;var A=e+"";return"0"==A&&1/e==-1/0?"-0":A}function F(e,A){if("function"!=typeof e||A&&"function"!=typeof A)throw new TypeError("Expected a function");var r=function(){var i=arguments,a=A?A.apply(this,i):i[0],t=r.cache;if(t.has(a))return t.get(a);var n=e.apply(this,i);return r.cache=t.set(a,n),n};return r.cache=new(F.Cache||L),r}F.Cache=L;var M=Array.isArray;function V(e){var A=typeof e;return!!e&&("object"==A||"function"==A)}function N(e){return"symbol"==typeof e||function(e){return!!e&&"object"==typeof e}(e)&&"[object Symbol]"==g.call(e)}e.exports=function(e,A,r){var t=null==e?void 0:function(e,A){for(var r,t=0,n=(A=function(e,A){if(M(e))return!1;var r=typeof e;return!("number"!=r&&"symbol"!=r&&"boolean"!=r&&null!=e&&!N(e))||a.test(e)||!i.test(e)||null!=A&&e in Object(A)}(A,e)?[A]:M(r=A)?r:W(r)).length;null!=e&&t{e=r.nmd(e);var i="Expected a function",a="__lodash_hash_undefined__",t=9007199254740991,n="[object Arguments]",f="[object Array]",l="[object Boolean]",s="[object Date]",c="[object Error]",o="[object Function]",u="[object Map]",b="[object Number]",h="[object Object]",w="[object Promise]",k="[object RegExp]",d="[object Set]",v="[object String]",g="[object Symbol]",m="[object WeakMap]",p="[object ArrayBuffer]",E="[object DataView]",B=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,y=/^\w*$/,C=/^\./,I=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Z=/\\(\\)?/g,G=/^\[object .+?Constructor\]$/,L=/^(?:0|[1-9]\d*)$/,Q={};Q["[object Float32Array]"]=Q["[object Float64Array]"]=Q["[object Int8Array]"]=Q["[object Int16Array]"]=Q["[object Int32Array]"]=Q["[object Uint8Array]"]=Q["[object Uint8ClampedArray]"]=Q["[object Uint16Array]"]=Q["[object Uint32Array]"]=!0,Q[n]=Q[f]=Q[p]=Q[l]=Q[E]=Q[s]=Q[c]=Q[o]=Q[u]=Q[b]=Q[h]=Q[k]=Q[d]=Q[v]=Q[m]=!1;var D="object"==typeof global&&global&&global.Object===Object&&global,z="object"==typeof self&&self&&self.Object===Object&&self,W=D||z||Function("return this")(),Y=A&&!A.nodeType&&A,F=Y&&e&&!e.nodeType&&e,M=F&&F.exports===Y&&D.process,V=function(){try{return M&&M.binding("util")}catch(e){}}(),N=V&&V.isTypedArray;function R(e,A){for(var r=-1,i=e?e.length:0,a=0,t=[];++r-1},Ee.prototype.set=function(e,A){var r=this.__data__,i=Ie(r,e);return i<0?r.push([e,A]):r[i][1]=A,this},Be.prototype.clear=function(){this.__data__={hash:new pe,map:new(le||Ee),string:new pe}},Be.prototype.delete=function(e){return Me(this,e).delete(e)},Be.prototype.get=function(e){return Me(this,e).get(e)},Be.prototype.has=function(e){return Me(this,e).has(e)},Be.prototype.set=function(e,A){return Me(this,e).set(e,A),this},ye.prototype.add=ye.prototype.push=function(e){return this.__data__.set(e,a),this},ye.prototype.has=function(e){return this.__data__.has(e)},Ce.prototype.clear=function(){this.__data__=new Ee},Ce.prototype.delete=function(e){return this.__data__.delete(e)},Ce.prototype.get=function(e){return this.__data__.get(e)},Ce.prototype.has=function(e){return this.__data__.has(e)},Ce.prototype.set=function(e,A){var r=this.__data__;if(r instanceof Ee){var i=r.__data__;if(!le||i.length<199)return i.push([e,A]),this;r=this.__data__=new Be(i)}return r.set(e,A),this};var Ze,Ge=(Ze=function(e,A){return e&&Qe(e,A,iA)},function(e,A){if(null==e)return e;if(!_e(e))return Ze(e,A);for(var r=e.length,i=-1,a=Object(e);++if))return!1;var s=t.get(e);if(s&&t.get(A))return s==A;var c=-1,o=!0,u=1&a?new ye:void 0;for(t.set(e,A),t.set(A,e);++c-1&&e%1==0&&e-1&&e%1==0&&e<=t}function $e(e){var A=typeof e;return!!e&&("object"==A||"function"==A)}function eA(e){return!!e&&"object"==typeof e}function AA(e){return"symbol"==typeof e||eA(e)&&ee.call(e)==g}var rA=N?function(e){return function(A){return e(A)}}(N):function(e){return eA(e)&&Ke(e.length)&&!!Q[ee.call(e)]};function iA(e){return _e(e)?function(e,A){var r=Oe(e)||Te(e)?function(e,A){for(var r=-1,i=Array(e);++r{"use strict";e.exports=JSON.parse('{"_from":"state-machine-cat@7.0.13","_id":"state-machine-cat@7.0.13","_inBundle":false,"_integrity":"sha512-01va3bekhwSYuIF7DuEanlHJxG4rgahVVcvguSx3FzXuWRfx6AwpxPOs9v2V0RJuzTIojoazAs4KaT/OTKAkjg==","_location":"/jsteros/state-machine-cat","_phantomChildren":{"ansi-styles":"4.3.0","string-width":"4.2.0","strip-ansi":"6.0.0"},"_requested":{"type":"version","registry":true,"raw":"state-machine-cat@7.0.13","name":"state-machine-cat","escapedName":"state-machine-cat","rawSpec":"7.0.13","saveSpec":null,"fetchSpec":"7.0.13"},"_requiredBy":["/jsteros"],"_resolved":"https://registry.npmjs.org/state-machine-cat/-/state-machine-cat-7.0.13.tgz","_shasum":"59ab6c8d0e0c1fd4bc8169383c495f45365a8255","_spec":"state-machine-cat@7.0.13","_where":"/home/carlos/repo/colibri","author":{"name":"Sander Verweij"},"bin":{"smcat":"bin/smcat","sm-cat":"bin/smcat","sm_cat":"bin/smcat","state-machine-cat":"bin/smcat"},"browserslist":["last 1 Chrome version","last 1 Firefox version","last 1 Safari version"],"bugs":{"url":"https://github.com/sverweij/state-machine-cat/issues"},"bundleDependencies":false,"dependencies":{"ajv":"6.12.6","chalk":"4.1.0","commander":"6.1.0","fast-xml-parser":"3.17.4","get-stream":"6.0.0","handlebars":"4.7.6","he":"1.2.0","indent-string":"4.0.0","lodash.castarray":"4.4.0","lodash.clonedeep":"4.5.0","lodash.get":"4.4.2","lodash.reject":"4.6.0","semver":"7.3.2","viz.js":"1.8.2","wrap-ansi":"7.0.0"},"deprecated":false,"description":"write beautiful state charts","devDependencies":{"chai":"4.2.0","chai-as-promised":"7.1.1","chai-json-schema":"1.5.1","chai-xml":"0.4.0","dependency-cruiser":"9.15.1","eslint":"7.12.0","eslint-config-moving-meadow":"2.0.7","eslint-config-prettier":"6.14.0","eslint-plugin-budapestian":"2.3.0","eslint-plugin-import":"2.22.1","eslint-plugin-mocha":"8.0.0","eslint-plugin-node":"11.1.0","eslint-plugin-security":"1.4.0","eslint-plugin-unicorn":"23.0.0","husky":"4.3.0","lint-staged":"10.4.2","mocha":"8.2.0","npm-run-all":"4.1.5","nyc":"15.1.0","pegjs":"0.10.0","prettier":"2.1.2","query-string":"6.13.6","tslint":"6.1.3","tslint-config-prettier":"1.18.0","typescript":"4.0.3","upem":"5.0.0","webpack":"5.2.0","webpack-cli":"4.1.0","xml-name-validator":"3.0.0"},"engines":{"node":">=10"},"eslintIgnore":["coverage","docs","node_modules","public","src/**/*-parser.js","src/**/*.template.js","webpack.config.js"],"files":["bin/","src/**/*.js","src/**/*.json","types/","package.json","README.md","LICENSE"],"homepage":"https://state-machine-cat.js.org","husky":{"hooks":{"pre-commit":"lint-staged"}},"keywords":["state","state chart","state diagram","state machine","finite state machine","fsm","uml","scxml"],"license":"MIT","lint-staged":{"{src,test}/**/*.js":["eslint --cache --cache-location .cache --fix","prettier --loglevel warn --write","depcruise --output-type err-long --config config/dependency-cruiser.js","git add"]},"main":"src/index.js","name":"state-machine-cat","nyc":{"statements":100,"branches":99.1,"functions":100,"lines":100,"exclude":["config/**/*","coverage/**/*","docs/**/*","public/**/*","test/**/*","tmp*","tools/**/*","src/**/*-parser.js","src/**/*.template.js","webpack.*.js"],"reporter":["text-summary","html","lcov"],"all":true},"repository":{"type":"git","url":"git+https://github.com/sverweij/state-machine-cat.git"},"scripts":{"build":"make clean dist pages","build:cli":"make cli-build","build:dev":"make dev-build","check":"run-p --aggregate-output depcruise lint test:cover","depcruise":"depcruise --output-type err-long --config config/dependency-cruiser.js src test bin/smcat","depcruise:graph":"run-s depcruise:graph:*","depcruise:graph:archi-html":"depcruise --output-type archi --config config/dependency-cruiser-graph.js src bin/smcat | dot -Tsvg | depcruise-wrap-stream-in-html > docs/dependency-cruiser-archi-graph.html","depcruise:graph:archi-svg":"depcruise --output-type archi --config config/dependency-cruiser-graph.js src bin/smcat | dot -Tsvg > docs/dependency-cruiser-archi-graph.svg","depcruise:graph:deps-html":"depcruise --output-type dot --config config/dependency-cruiser-graph.js src bin/smcat | dot -Tsvg | depcruise-wrap-stream-in-html > docs/dependency-cruiser-graph.html","depcruise:graph:deps-svg":"depcruise --output-type dot --config config/dependency-cruiser-graph.js src bin/smcat | dot -Tsvg > docs/dependency-cruiser-graph.svg","depcruise:graph:dir-html":"depcruise --output-type ddot --config config/dependency-cruiser-graph.js src bin/smcat | dot -Tsvg | depcruise-wrap-stream-in-html > docs/dependency-cruiser-dir-graph.html","depcruise:graph:dir-svg":"depcruise --output-type ddot --config config/dependency-cruiser-graph.js src bin/smcat | dot -Tsvg > docs/dependency-cruiser-dir-graph.svg","depcruise:html-report":"depcruise --output-type err-html --config config/dependency-cruiser.js src test bin/smcat --output-to dependency-violation-report.html","depcruise:view":"depcruise --output-type dot --config config/dependency-cruiser-graph.js --prefix vscode://file/$(pwd)/ src bin/smcat | dot -Tsvg | depcruise-wrap-stream-in-html | browser","depcruise:view-report":"depcruise --output-type err-html --config config/dependency-cruiser.js --prefix vscode://file/$(pwd)/ src test bin/smcat | browser","lint":"run-p --aggregate-output lint:eslint lint:prettier lint:types","lint:eslint":"eslint --cache --cache-location .cache src test config","lint:fix":"run-s lint:fix:eslint lint:fix:prettier lint:fix:types","lint:fix:eslint":"eslint --cache --cache-location .cache --fix src test config","lint:fix:prettier":"prettier --loglevel warn --write {src,test,config}/\\\\*\\\\*/\\\\*.{js,json} types/*.ts *.{json,yml,md} docs/{smcat-online-interpreter.js,*.md}","lint:fix:types":"tslint --fix types/*.d.ts","lint:prettier":"prettier --check {src,test,config}/\\\\*\\\\*/\\\\*.{js,json} types/*.ts *.{json,yml,md} docs/{smcat-online-interpreter.js,*.md}","lint:types":"run-s lint:types:*","lint:types:tsc":"tsc --noEmit --strict --types --noUnusedLocals --noUnusedParameters types/*.d.ts","lint:types:tslint":"tslint types/*.d.ts","scm:push":"run-p --aggregate-output scm:push:*","scm:push:bitbucket-mirror":"run-p --aggregate-output scm:push:bitbucket-mirror:*","scm:push:bitbucket-mirror:commits":"git push bitbucket-mirror","scm:push:bitbucket-mirror:tags":"git push --tags bitbucket-mirror","scm:push:github":"run-p --aggregate-output scm:push:github:*","scm:push:github:commits":"git push","scm:push:github:tags":"git push --tags","scm:push:gitlab-mirror":"run-p --aggregate-output scm:push:gitlab-mirror:*","scm:push:gitlab-mirror:commits":"git push gitlab-mirror","scm:push:gitlab-mirror:tags":"git push --tags gitlab-mirror","scm:stage":"git add .","test":"mocha --reporter spec --timeout 4000 --recursive test","test:cover":"nyc --check-coverage npm test","test:integration":"mocha --reporter spec --timeout 4000 --recursive test --invert --fgrep integration","test:unit":"mocha --reporter spec --timeout 4000 --recursive test --invert --fgrep integration","update-dependencies":"run-s upem:update upem:install lint:fix check","upem:install":"npm install","upem:update":"npm outdated --json | upem","version":"run-s build depcruise:graph scm:stage"},"types":"types/state-machine-cat.d.ts","upem":{"donotup":[{"package":"viz.js","because":"viz.js >=2 ditched its async interface, which we use. Will need some code reshuffling which is not worth it a.t.m."}]},"version":"7.0.13"}')},8138:(e,A,r)=>{const i=r(306),a=r(7766),t=r(5435),n=r(1514),f=r(6558);function l(e,A){const r=t.getAST(e,A),i=a.getOptionValue(A,"desugar");return f(a.getOptionValue(A,"outputType"))(i?n(r):r,A)}e.exports={render(e,A,r){if(!Boolean(r))return l(e,A);try{r(null,l(e,A))}catch(e){r(e)}},version:i.version,getAllowedValues:a.getAllowedValues}},7766:(e,A,r)=>{const i=r(3278),a=Object.freeze({inputType:{default:"smcat",values:[{name:"smcat"},{name:"json"},{name:"scxml"}]},outputType:{default:"svg",values:[{name:"svg"},{name:"dot"},{name:"smcat"},{name:"json"},{name:"ast"},{name:"scxml"},{name:"scjson"}]},engine:{default:"dot",values:[{name:"dot"},{name:"circo"},{name:"fdp"},{name:"neato"},{name:"osage"},{name:"twopi"}]},direction:{default:"top-down",values:[{name:"top-down"},{name:"bottom-top"},{name:"left-right"},{name:"right-left"}]},desugar:{default:!1,values:[{name:!0},{name:!1}]}});e.exports={getAllowedValues:function(){return a},getOptionValue:function(e,A){return i(e,A,i(a,`${A}.default`))}}},5435:(e,A,r)=>{const i=r(6447),a=r(7766),t=r(855),n=r(1878),f=r(8751),l=new i;e.exports={getAST:function(e,A){let r=e;return"smcat"===a.getOptionValue(A,"inputType")?r=t.parse(e):"scxml"===a.getOptionValue(A,"inputType")?r=n.parse(e):"string"==typeof e&&(r=JSON.parse(e)),function(e,A){if(!l.validate(e,A))throw new Error(`The provided JSON is not a valid state-machine-cat AST: ${l.errorsText()}.\n`)}(f,r),r}}},8038:(e,A,r)=>{const i=r(2375),a=new RegExp("^(entry|activity|exit)\\s*/\\s*([^\\n$]*)(\\n|$)");function t(e,A){return e.some((e=>e===A))}const n=[{re:/initial/,stateType:"initial"},{re:/final/,stateType:"final"},{re:/parallel/,stateType:"parallel"},{re:/(deep.*history)|(history.*deep)/,stateType:"deephistory"},{re:/history/,stateType:"history"},{re:/^\^.*/,stateType:"choice"},{re:/^].*/,stateType:"forkjoin"}];function f(e){return(n.find(function(e){return A=>A.re.test(e)}(e))||{stateType:"regular"}).stateType}function l(e){return{name:e,type:f(e)}}function s(e){return Boolean(e.statemachine)}function c(e){const A=e.states||[];return A.filter(s).reduce(((e,A)=>e.concat(c(A.statemachine))),A.map((e=>e.name)))}function o(e,A,r,i=(e=>e)){i(r)&&(e[A]=r)}function u(e){const A=e.match(a);return A?{type:A[1],body:A[2]}:{type:"activity",body:e}}e.exports={initState:l,extractUndeclaredStates:function e(A,r){r=r||c(A),A.states=A.states||[];const i=A.transitions||[];return A.states.filter(s).forEach((A=>{A.statemachine.states=e(A.statemachine,r)})),i.forEach((e=>{t(r,e.from)||(r.push(e.from),A.states.push(l(e.from))),t(r,e.to)||(r.push(e.to),A.states.push(l(e.to)))})),A.states},classifyForkJoins:function e(A,r=new i(A)){return A.states=A.states.map((A=>{if("forkjoin"===A.type&&!A.typeExplicitlySet){const e=r.findTransitionsByTo(A.name).length,i=r.findTransitionsByFrom(A.name).length;A.type=function(e,A){let r="junction";return e<=1&&A>1&&(r="fork"),e>1&&A<=1&&(r="join"),r}(e,i)}return A.statemachine&&(A.statemachine=e(A.statemachine,r)),A})),A},getStateType:f,stateEqual:function(e,A){return e.name===A.name},uniq:function(e,A){return e.reduce(((e,r)=>{const i=e.findIndex((e=>A(e,r)));return i>-1?(e[i]=r,e):e.concat(r)}),[])},parseTransitionExpression:function(e){const A={},r=e.match(/([^[/]+)?(\[[^\]]+\])?[^/]*(\/.+)?/);return r[1]&&(A.event=r[1].trim()),r[2]&&(A.cond=r[2].slice(1,-1).trim()),r[3]&&(A.action=r[3].slice(1,r[3].length).trim()),A},extractActions:function(e){return e.split(/\n\s*/g).map((e=>e.trim())).map(u)},setIf:o,setIfNotEmpty:function(e,A,r){o(e,A,r,(e=>e&&e.length>0))}}},1878:(e,A,r)=>{const i=r(1951),a=r(6970),t=r(4616),n=r(3278),f=r(4851).formatLabel,l=r(8038),s=r(1696);function c(e,A){return t(e[A]).map((e=>({type:"onexit"===A?"exit":"entry",body:a.decode(e).trim()})))}function o(e,A){return"history"===e&&"deep"===A.type?"deephistory":e}function u(e){return A=>{const r={name:A.id,type:o(e,A)};return l.getStateType(A.id)!==r.type&&(r.typeExplicitlySet=!0),(A.onentry||A.onexit)&&(r.actions=function(e){let A=[];return e.onentry&&(A=A.concat(c(e,"onentry"))),e.onexit&&(A=A.concat(c(e,"onexit"))),A}(A)),Object.keys(A).some((e=>["initial","state","history","parallel","final"].includes(e)))&&(r.statemachine=h(A)),r}}function b(e){return e.filter((e=>Object.prototype.hasOwnProperty.call(e,"transition"))).reduce(((e,A)=>{return e.concat(t(A.transition).reduce((r=A,(e,A)=>{const i=(A.target||r.id).split(/\s+/),t=function(e){const A={};"string"==typeof e?A.action=a.decode(e).trim():Object.assign(A,function(e){const A={};return e.event&&(A.event=e.event.split(/\s+/).join("\n")),e.cond&&(A.cond=e.cond),e["#text"]&&(A.action=a.decode(e["#text"]).trim()),e.type&&(A.type=e.type),A}(e));const r=f(A.event,A.cond,A.action);return r&&(A.label=r),A}(A);return e.concat(i.map((e=>({from:r.id,to:e,...t}))))}),[]));var r}),[])}function h(e){const A=s(e),r={};r.states=A.initial.map(u("initial")).concat(A.state.map(u("regular"))).concat(A.parallel.map(u("parallel"))).concat(A.history.map(u("history"))).concat(A.final.map(u("final")));const i=b(A.initial).concat(b(A.state)).concat(b(A.parallel));return i.length>0&&(r.transitions=i),r}e.exports={parse:function(e){const A=e.trim();if(!0===i.validate(A)){const e=i.parse(A,{attributeNamePrefix:"",ignoreAttributes:!1,tagValueProcessor:e=>a.decode(e),stopNodes:["onentry","onexit","transition"]});return h(n(e,"scxml",{}))}throw new Error("That doesn't look like valid xml ...\n")}}},1696:(e,A,r)=>{const i=r(3278),a=r(4616);function t(e){const A=[];let r={};return e.initial&&(r=e.initial.transition||e.initial.id?function(e){const A={id:e.id?`${e.id}.initial`:"initial"};return e.initial.transition&&Object.assign(A,{transition:[e.initial.transition]}),A}(e):function(e){return{id:"initial",transition:[{target:e.initial}]}}(e),A.push(r)),A}e.exports=function(e){return{...e,initial:t(e),state:a(i(e,"state",[])),parallel:a(i(e,"parallel",[])),history:a(i(e,"history",[])),final:a(i(e,"final",[]))}}},8751:e=>{"use strict";e.exports=JSON.parse('{"$schema":"http://json-schema.org/draft-07/schema#","title":"state-machine-cat abstract syntax tree schema","$ref":"#/definitions/StateMachineType","$id":"org.js.state-machine-cat/v5.4.0","definitions":{"StateType":{"type":"string","enum":["regular","initial","terminate","final","parallel","history","deephistory","choice","forkjoin","fork","join","junction"]},"TransitionType":{"type":"string","enum":["internal","external"]},"NoteType":{"type":"array","items":{"type":"string"}},"ActionTypeType":{"type":"string","enum":["entry","activity","exit"]},"ActionType":{"type":"object","required":["type","body"],"additionalProperties":false,"properties":{"type":{"$ref":"#/definitions/ActionTypeType"},"body":{"type":"string"}}},"StateMachineType":{"type":"object","additionalProperties":false,"required":["states"],"properties":{"states":{"type":"array","items":{"type":"object","required":["name","type"],"additionalProperties":false,"properties":{"name":{"description":"The name and identifier of the state. Unique within the root state machine.","type":"string"},"type":{"description":"What kind of state (or pseudo state) this state is. E.g. \'regular\' for normal states or \'initial\', \'final\', \'choice\' etc for pseudo states. Most UML (pseudo-) states are supported.","$ref":"#/definitions/StateType"},"label":{"description":"The display label of the state. If it\'s not present, most renderers will use the states\' name in stead.","type":"string"},"color":{"description":"Color to use for rendering the state. Accepts all css color names (\\"blue\\") and hex notation - with (\\"#0000FF77\\") or without (\\"#0000FF\\") transparency.","type":"string"},"active":{"description":"If true the state is considered to be active and rendered as such.","type":"boolean"},"typeExplicitlySet":{"description":"The default parser derives the `type` from the `name` with inband signaling. The user can override that behavior by explicitly setting the `type`. This attribute is there to express that (and make sure that on next parses & processing it doesn\'t get accidentily re-derived from the name again).","type":"boolean"},"isComposite":{"description":"convenience, derived attribute - set to true if there\'s a state machine inside the state; false in all other cases. For internal use - @deprecated","type":"boolean"},"actions":{"type":"array","description":"A series of actions and their types. The type describe when the action takes place (on entry, exit, or otherwise (\'activity\'))","items":{"$ref":"#/definitions/ActionType"}},"note":{"description":"Comments related to this state. Some renderers will use the note attribute to render a note (i.e. as a post-it) attached to the state.","$ref":"#/definitions/NoteType"},"statemachine":{"description":"state machine nested within the state.","$ref":"#/definitions/StateMachineType"}}}},"transitions":{"type":"array","items":{"type":"object","required":["from","to"],"additionalProperties":false,"properties":{"from":{"description":"The name of the state this transition transitions from","type":"string"},"to":{"description":"The name of the state this transition transitions to","type":"string"},"label":{"description":"A display label to represent this transition. Parsers can parse this label into events conditions and actions.","type":"string"},"event":{"description":"Event triggering the transition","type":"string"},"cond":{"description":"Condition for the transition to occur.","type":"string"},"action":{"description":"Action to execute when the transition occurs.","type":"string"},"note":{"description":"Comments related to this transition","$ref":"#/definitions/NoteType"},"color":{"description":"Color to use for rendering the transition. Accepts all css color names (\\"blue\\") and hex notation - with (\\"#0000FF77\\") or without (\\"#0000FF\\") transparency.","type":"string"},"type":{"description":"Whether the transition is external (default) or internal. See https://www.w3.org/TR/scxml/#transition for details.","$ref":"#/definitions/TransitionType"}}}}}}}}')},855:(e,A,r)=>{"use strict";function i(e,A,r,a){this.message=e,this.expected=A,this.found=r,this.location=a,this.name="SyntaxError","function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,i)}!function(e,A){function r(){this.constructor=e}r.prototype=A.prototype,e.prototype=new r}(i,Error),i.buildMessage=function(e,A){var r={literal:function(e){return'"'+a(e.text)+'"'},class:function(e){var A,r="";for(A=0;A0){for(A=1,i=1;A",!1),ve=tA("=>>",!1),ge=tA("=>",!1),me=tA(">>",!1),pe=tA(":>",!1),Ee=tA("--",!1),Be=tA("==",!1),ye=fA("right to left arrow"),Ce=tA("<-",!1),Ie=tA("<<=",!1),Ze=tA("<=",!1),Ge=tA("<<",!1),Le=tA("<:",!1),Qe=tA("#",!1),De=fA("double quoted string"),ze='"',We=tA('"',!1),Ye='\\"',Fe=tA('\\"',!1),Me={type:"any"},Ve=function(e){return e.join("").trim()},Ne=fA("identifier"),Re=/^[^;, "\t\n\r=\-><:{[]/,xe=nA([";",","," ",'"',"\t","\n","\r","=","-",">","<",":","{","["],!0,!1),Je=fA("whitespace"),He=/^[ \t]/,Pe=nA([" ","\t"],!1,!1),Xe=fA("line end"),Se=/^[\r\n]/,je=nA(["\r","\n"],!1,!1),Ue=tA("/*",!1),Te="*/",Oe=tA("*/",!1),_e=tA("//",!1),qe=/^[^\r\n]/,Ke=nA(["\r","\n"],!0,!1),$e=fA("comment"),eA=0,AA=[{line:1,column:1}],rA=0,iA=[],aA=0;if("startRule"in A){if(!(A.startRule in n))throw new Error("Can't start parsing from rule \""+A.startRule+'".');f=n[A.startRule]}function tA(e,A){return{type:"literal",text:e,ignoreCase:A}}function nA(e,A,r){return{type:"class",parts:e,inverted:A,ignoreCase:r}}function fA(e){return{type:"other",description:e}}function lA(A){var r,i=AA[A];if(i)return i;for(r=A-1;!AA[r];)r--;for(i={line:(i=AA[r]).line,column:i.column};rrA&&(rA=eA,iA=[]),iA.push(e))}function oA(){var e,A,r;return e=eA,CA()!==t&&(A=uA())!==t&&CA()!==t?((r=A).states=IA.extractUndeclaredStates(r),e=IA.classifyForkJoins(r)):(eA=e,e=t),e}function uA(){var A,r,i,a;if(aA++,A=eA,(r=function(){var A,r,i,a,n,f;for(eA,A=eA,r=[],i=eA,(a=bA())!==t?(44===e.charCodeAt(eA)?(n=s,eA++):(n=t,0===aA&&cA(c)),n!==t?i=a=a:(eA=i,i=t)):(eA=i,i=t);i!==t;)r.push(i),i=eA,(a=bA())!==t?(44===e.charCodeAt(eA)?(n=s,eA++):(n=t,0===aA&&cA(c)),n!==t?i=a=a:(eA=i,i=t)):(eA=i,i=t);return r!==t?(i=eA,(a=bA())!==t?(59===e.charCodeAt(eA)?(n=o,eA++):(n=t,0===aA&&cA(u)),n!==t?i=a=a:(eA=i,i=t)):(eA=i,i=t),i!==t?A=r=[r,i]:(eA=A,A=t)):(eA=A,A=t),A!==t&&(f=A,A=IA.uniq(f[0].concat(f[1]),IA.stateEqual)),A}())===t&&(r=null),r!==t){for(i=[],a=wA();a!==t;)i.push(a),a=wA();i!==t?A=r=function(e,A){let r={};return IA.setIf(r,"states",e),IA.setIfNotEmpty(r,"transitions",A),r}(r,i):(eA=A,A=t)}else eA=A,A=t;return aA--,A===t&&(r=t,0===aA&&cA(l)),A}function bA(){var A,r,i,a,n,f,l,p,E,B,y,C;for(aA++,A=eA,r=[],i=dA();i!==t;)r.push(i),i=dA();return r!==t&&(i=CA())!==t&&(a=gA())!==t&&CA()!==t?(n=eA,91===e.charCodeAt(eA)?(f="[",eA++):(f=t,0===aA&&cA(h)),f!==t&&(l=function(){var e,A;for(aA++,e=[],A=hA();A!==t;)e.push(A),A=hA();return aA--,e===t&&(A=t,0===aA&&cA(m)),e}())!==t?(93===e.charCodeAt(eA)?(p="]",eA++):(p=t,0===aA&&cA(w)),p!==t?n=f=l:(eA=n,n=t)):(eA=n,n=t),n===t&&(n=null),n!==t&&(f=CA())!==t?(l=eA,58===e.charCodeAt(eA)?(p=":",eA++):(p=t,0===aA&&cA(k)),p!==t&&(E=CA())!==t&&(B=function(){var A;return(A=vA())===t&&(A=function(){var A;return eA,(A=function(){var A,r,i,a;for(A=[],r=eA,i=eA,aA++,44===e.charCodeAt(eA)?(a=s,eA++):(a=t,0===aA&&cA(c)),a===t&&(59===e.charCodeAt(eA)?(a=o,eA++):(a=t,0===aA&&cA(u)),a===t&&(123===e.charCodeAt(eA)?(a=d,eA++):(a=t,0===aA&&cA(v)))),aA--,a===t?i=void 0:(eA=i,i=t),i!==t?(e.length>eA?(a=e.charAt(eA),eA++):(a=t,0===aA&&cA(Me)),a!==t?r=i=a:(eA=r,r=t)):(eA=r,r=t);r!==t;)A.push(r),r=eA,i=eA,aA++,44===e.charCodeAt(eA)?(a=s,eA++):(a=t,0===aA&&cA(c)),a===t&&(59===e.charCodeAt(eA)?(a=o,eA++):(a=t,0===aA&&cA(u)),a===t&&(123===e.charCodeAt(eA)?(a=d,eA++):(a=t,0===aA&&cA(v)))),aA--,a===t?i=void 0:(eA=i,i=t),i!==t?(e.length>eA?(a=e.charAt(eA),eA++):(a=t,0===aA&&cA(Me)),a!==t?r=i=a:(eA=r,r=t)):(eA=r,r=t);return A}())!==t&&(A=Ve(A)),A}()),A}())!==t&&CA()!==t?l=p=B:(eA=l,l=t),l===t&&(l=null),l!==t&&(p=CA())!==t?(E=eA,123===e.charCodeAt(eA)?(B=d,eA++):(B=t,0===aA&&cA(v)),B!==t&&CA()!==t&&(y=uA())!==t&&CA()!==t?(125===e.charCodeAt(eA)?(C="}",eA++):(C=t,0===aA&&cA(g)),C!==t?E=B=y:(eA=E,E=t)):(eA=E,E=t),E===t&&(E=null),E!==t&&(B=CA())!==t?A=r=function(e,A,r,i,a){let t=IA.initState(A);return(r||[]).forEach((e=>IA.setIf(t,e.name,e.value))),IA.setIf(t,"typeExplicitlySet",(r||[]).some((e=>e.typeExplicitlySet))),IA.setIf(t,"statemachine",a),IA.setIfNotEmpty(t,"note",e),Boolean(i)&&IA.setIfNotEmpty(t,"actions",IA.extractActions(i)),t}(r,a,n,l,E):(eA=A,A=t)):(eA=A,A=t)):(eA=A,A=t)):(eA=A,A=t),aA--,A===t&&(r=t,0===aA&&cA(b)),A}function hA(){var A,r,i,a;return aA++,A=eA,CA()!==t&&(r=function(){var A,r;return aA++,A=eA,"label"===e.substr(eA,5).toLowerCase()?(r=e.substr(eA,5),eA+=5):(r=t,0===aA&&cA(I)),r===t&&(e.substr(eA,5).toLowerCase()===Z?(r=e.substr(eA,5),eA+=5):(r=t,0===aA&&cA(G))),r!==t&&(r=L(r)),aA--,(A=r)===t&&(r=t,0===aA&&cA(C)),A}())!==t&&CA()!==t?(61===e.charCodeAt(eA)?(i=E,eA++):(i=t,0===aA&&cA(B)),i!==t&&CA()!==t&&(a=vA())!==t&&CA()!==t?A=y(r,a):(eA=A,A=t)):(eA=A,A=t),A===t&&(A=eA,CA()!==t&&(r=function(){var A,r;return aA++,A=eA,"active"===e.substr(eA,6).toLowerCase()?(r=e.substr(eA,6),eA+=6):(r=t,0===aA&&cA(D)),r!==t&&(r=L(r)),aA--,(A=r)===t&&(r=t,0===aA&&cA(Q)),A}())!==t&&CA()!==t?A={name:r,value:!0}:(eA=A,A=t),A===t&&(A=eA,CA()!==t&&(r=function(){var A,r;return aA++,A=eA,e.substr(eA,4).toLowerCase()===W?(r=e.substr(eA,4),eA+=4):(r=t,0===aA&&cA(Y)),r!==t&&(r=L(r)),aA--,(A=r)===t&&(r=t,0===aA&&cA(z)),A}())!==t&&CA()!==t?(61===e.charCodeAt(eA)?(i=E,eA++):(i=t,0===aA&&cA(B)),i!==t&&CA()!==t&&(a=function(){var A;return aA++,e.substr(eA,7)===M?(A=M,eA+=7):(A=t,0===aA&&cA(V)),A===t&&(e.substr(eA,7)===N?(A=N,eA+=7):(A=t,0===aA&&cA(R)),A===t&&(e.substr(eA,9)===x?(A=x,eA+=9):(A=t,0===aA&&cA(J)),A===t&&(e.substr(eA,5)===H?(A=H,eA+=5):(A=t,0===aA&&cA(P)),A===t&&(e.substr(eA,8)===X?(A=X,eA+=8):(A=t,0===aA&&cA(S)),A===t&&(e.substr(eA,7)===j?(A=j,eA+=7):(A=t,0===aA&&cA(U)),A===t&&(e.substr(eA,11)===T?(A=T,eA+=11):(A=t,0===aA&&cA(O)),A===t&&(e.substr(eA,6)===_?(A=_,eA+=6):(A=t,0===aA&&cA(q)),A===t&&(e.substr(eA,8)===K?(A=K,eA+=8):(A=t,0===aA&&cA($)),A===t&&(e.substr(eA,4)===ee?(A=ee,eA+=4):(A=t,0===aA&&cA(Ae)),A===t&&(e.substr(eA,4)===re?(A=re,eA+=4):(A=t,0===aA&&cA(ie)),A===t&&(e.substr(eA,8)===ae?(A=ae,eA+=8):(A=t,0===aA&&cA(te))))))))))))),aA--,A===t&&0===aA&&cA(F),A}())!==t&&CA()!==t?A={name:r,value:a,typeExplicitlySet:!0}:(eA=A,A=t)):(eA=A,A=t))),aA--,A===t&&0===aA&&cA(p),A}function wA(){var A,r,i,a,n,f,l,s,c,b,g,m;for(aA++,A=eA,r=[],i=dA();i!==t;)r.push(i),i=dA();return r!==t&&(i=function(){var A,r,i;return A=eA,CA()!==t&&(r=gA())!==t&&CA()!==t&&function(){var A;return aA++,"->"===e.substr(eA,2)?(A="->",eA+=2):(A=t,0===aA&&cA(de)),A===t&&("=>>"===e.substr(eA,3)?(A="=>>",eA+=3):(A=t,0===aA&&cA(ve)),A===t&&("=>"===e.substr(eA,2)?(A="=>",eA+=2):(A=t,0===aA&&cA(ge)),A===t&&(">>"===e.substr(eA,2)?(A=">>",eA+=2):(A=t,0===aA&&cA(me)),A===t&&(":>"===e.substr(eA,2)?(A=":>",eA+=2):(A=t,0===aA&&cA(pe)),A===t&&("--"===e.substr(eA,2)?(A="--",eA+=2):(A=t,0===aA&&cA(Ee)),A===t&&("=="===e.substr(eA,2)?(A="==",eA+=2):(A=t,0===aA&&cA(Be)))))))),aA--,A===t&&0===aA&&cA(ke),A}()!==t&&CA()!==t&&(i=gA())!==t&&CA()!==t?A={from:r,to:i}:(eA=A,A=t),A===t&&(A=eA,CA()!==t&&(r=gA())!==t&&CA()!==t&&function(){var A;return aA++,"<-"===e.substr(eA,2)?(A="<-",eA+=2):(A=t,0===aA&&cA(Ce)),A===t&&("<<="===e.substr(eA,3)?(A="<<=",eA+=3):(A=t,0===aA&&cA(Ie)),A===t&&("<="===e.substr(eA,2)?(A="<=",eA+=2):(A=t,0===aA&&cA(Ze)),A===t&&("<<"===e.substr(eA,2)?(A="<<",eA+=2):(A=t,0===aA&&cA(Ge)),A===t&&("<:"===e.substr(eA,2)?(A="<:",eA+=2):(A=t,0===aA&&cA(Le)))))),aA--,A===t&&0===aA&&cA(ye),A}()!==t&&CA()!==t&&(i=gA())!==t&&CA()!==t?A={from:i,to:r}:(eA=A,A=t)),A}())!==t?(a=eA,91===e.charCodeAt(eA)?(n="[",eA++):(n=t,0===aA&&cA(h)),n!==t&&(f=function(){var e,A;for(aA++,e=[],A=kA();A!==t;)e.push(A),A=kA();return aA--,e===t&&(A=t,0===aA&&cA(fe)),e}())!==t?(93===e.charCodeAt(eA)?(l="]",eA++):(l=t,0===aA&&cA(w)),l!==t&&(s=CA())!==t?a=n=f:(eA=a,a=t)):(eA=a,a=t),a===t&&(a=null),a!==t?(n=eA,58===e.charCodeAt(eA)?(f=":",eA++):(f=t,0===aA&&cA(k)),f!==t&&(l=CA())!==t&&(s=function(){var A;return(A=vA())===t&&(A=function(){var A;return eA,(A=function(){var A,r,i,a;for(A=[],r=eA,i=eA,aA++,59===e.charCodeAt(eA)?(a=o,eA++):(a=t,0===aA&&cA(u)),a===t&&(123===e.charCodeAt(eA)?(a=d,eA++):(a=t,0===aA&&cA(v))),aA--,a===t?i=void 0:(eA=i,i=t),i!==t?(e.length>eA?(a=e.charAt(eA),eA++):(a=t,0===aA&&cA(Me)),a!==t?r=i=a:(eA=r,r=t)):(eA=r,r=t);r!==t;)A.push(r),r=eA,i=eA,aA++,59===e.charCodeAt(eA)?(a=o,eA++):(a=t,0===aA&&cA(u)),a===t&&(123===e.charCodeAt(eA)?(a=d,eA++):(a=t,0===aA&&cA(v))),aA--,a===t?i=void 0:(eA=i,i=t),i!==t?(e.length>eA?(a=e.charAt(eA),eA++):(a=t,0===aA&&cA(Me)),a!==t?r=i=a:(eA=r,r=t)):(eA=r,r=t);return A}())!==t&&(A=Ve(A)),A}()),A}())!==t&&CA()!==t?n=f=s:(eA=n,n=t),n===t&&(n=null),n!==t?(59===e.charCodeAt(eA)?(f=o,eA++):(f=t,0===aA&&cA(u)),f!==t?(c=r,b=i,g=a,(m=n)&&(b.label=m,b=Object.assign(b,IA.parseTransitionExpression(m))),(g||[]).forEach((e=>IA.setIf(b,e.name,e.value))),IA.setIfNotEmpty(b,"note",c),A=r=b):(eA=A,A=t)):(eA=A,A=t)):(eA=A,A=t)):(eA=A,A=t),aA--,A===t&&(r=t,0===aA&&cA(ne)),A}function kA(){var A,r,i,a;return aA++,A=eA,CA()!==t&&(r=function(){var A,r;return aA++,A=eA,e.substr(eA,5).toLowerCase()===Z?(r=e.substr(eA,5),eA+=5):(r=t,0===aA&&cA(G)),r!==t&&(r=L(r)),aA--,(A=r)===t&&(r=t,0===aA&&cA(se)),A}())!==t&&CA()!==t?(61===e.charCodeAt(eA)?(i=E,eA++):(i=t,0===aA&&cA(B)),i!==t&&CA()!==t&&(a=vA())!==t&&CA()!==t?A=y(r,a):(eA=A,A=t)):(eA=A,A=t),A===t&&(A=eA,CA()!==t&&(r=function(){var A,r;return aA++,A=eA,e.substr(eA,4).toLowerCase()===W?(r=e.substr(eA,4),eA+=4):(r=t,0===aA&&cA(Y)),r!==t&&(r=L(r)),aA--,(A=r)===t&&(r=t,0===aA&&cA(ce)),A}())!==t&&CA()!==t?(61===e.charCodeAt(eA)?(i=E,eA++):(i=t,0===aA&&cA(B)),i!==t&&CA()!==t&&(a=function(){var A;return aA++,e.substr(eA,8)===ue?(A=ue,eA+=8):(A=t,0===aA&&cA(be)),A===t&&(e.substr(eA,8)===he?(A=he,eA+=8):(A=t,0===aA&&cA(we))),aA--,A===t&&0===aA&&cA(oe),A}())!==t&&CA()!==t?A=y(r,a):(eA=A,A=t)):(eA=A,A=t)),aA--,A===t&&0===aA&&cA(le),A}function dA(){var A,r,i,a;if(A=eA,CA()!==t)if(35===e.charCodeAt(eA)?(r="#",eA++):(r=t,0===aA&&cA(Qe)),r!==t){for(i=[],a=BA();a!==t;)i.push(a),a=BA();i!==t?A=i.join("").trim():(eA=A,A=t)}else eA=A,A=t;else eA=A,A=t;return A}function vA(){var A,r,i,a;return aA++,A=eA,34===e.charCodeAt(eA)?(r=ze,eA++):(r=t,0===aA&&cA(We)),r!==t&&(i=function(){var A,r,i,a;for(A=[],r=eA,i=eA,aA++,34===e.charCodeAt(eA)?(a=ze,eA++):(a=t,0===aA&&cA(We)),aA--,a===t?i=void 0:(eA=i,i=t),i!==t?(e.substr(eA,2)===Ye?(a=Ye,eA+=2):(a=t,0===aA&&cA(Fe)),a===t&&(e.length>eA?(a=e.charAt(eA),eA++):(a=t,0===aA&&cA(Me))),a!==t?r=i=a:(eA=r,r=t)):(eA=r,r=t);r!==t;)A.push(r),r=eA,i=eA,aA++,34===e.charCodeAt(eA)?(a=ze,eA++):(a=t,0===aA&&cA(We)),aA--,a===t?i=void 0:(eA=i,i=t),i!==t?(e.substr(eA,2)===Ye?(a=Ye,eA+=2):(a=t,0===aA&&cA(Fe)),a===t&&(e.length>eA?(a=e.charAt(eA),eA++):(a=t,0===aA&&cA(Me))),a!==t?r=i=a:(eA=r,r=t)):(eA=r,r=t);return A}())!==t?(34===e.charCodeAt(eA)?(a=ze,eA++):(a=t,0===aA&&cA(We)),a!==t?A=r=i.join("").replace(/\\\"/g,'"'):(eA=A,A=t)):(eA=A,A=t),aA--,A===t&&(r=t,0===aA&&cA(De)),A}function gA(){var A,r,i;if(aA++,A=eA,r=[],Re.test(e.charAt(eA))?(i=e.charAt(eA),eA++):(i=t,0===aA&&cA(xe)),i!==t)for(;i!==t;)r.push(i),Re.test(e.charAt(eA))?(i=e.charAt(eA),eA++):(i=t,0===aA&&cA(xe));else r=t;return r!==t&&(r=r.join("")),(A=r)===t&&(A=vA()),aA--,A===t&&(r=t,0===aA&&cA(Ne)),A}function mA(){var A,r;return aA++,A=eA,He.test(e.charAt(eA))?(r=e.charAt(eA),eA++):(r=t,0===aA&&cA(Pe)),r!==t&&(r=r),aA--,(A=r)===t&&(r=t,0===aA&&cA(Je)),A}function pA(){var A,r;return aA++,A=eA,Se.test(e.charAt(eA))?(r=e.charAt(eA),eA++):(r=t,0===aA&&cA(je)),r!==t&&(r=r),aA--,(A=r)===t&&(r=t,0===aA&&cA(Xe)),A}function EA(){var A,r,i;return A=eA,r=eA,aA++,e.substr(eA,2)===Te?(i=Te,eA+=2):(i=t,0===aA&&cA(Oe)),aA--,i===t?r=void 0:(eA=r,r=t),r!==t?(e.length>eA?(i=e.charAt(eA),eA++):(i=t,0===aA&&cA(Me)),i!==t?A=r=i:(eA=A,A=t)):(eA=A,A=t),A}function BA(){var A;return qe.test(e.charAt(eA))?(A=e.charAt(eA),eA++):(A=t,0===aA&&cA(Ke)),A}function yA(){var A;return aA++,(A=function(){var A,r,i,a;if(A=eA,(r=function(){var A;return"//"===e.substr(eA,2)?(A="//",eA+=2):(A=t,0===aA&&cA(_e)),A}())!==t){for(i=[],a=BA();a!==t;)i.push(a),a=BA();i!==t?A=r+=i.join(""):(eA=A,A=t)}else eA=A,A=t;return A}())===t&&(A=function(){var A,r,i,a,n;if(A=eA,(r=function(){var A;return"/*"===e.substr(eA,2)?(A="/*",eA+=2):(A=t,0===aA&&cA(Ue)),A}())!==t){for(i=[],a=EA();a!==t;)i.push(a),a=EA();i!==t&&(a=function(){var A;return e.substr(eA,2)===Te?(A=Te,eA+=2):(A=t,0===aA&&cA(Oe)),A}())!==t?(n=a,A=r=r+i.join("")+n):(eA=A,A=t)}else eA=A,A=t;return A}()),aA--,A===t&&0===aA&&cA($e),A}function CA(){var e,A;for(e=[],(A=mA())===t&&(A=pA())===t&&(A=yA());A!==t;)e.push(A),(A=mA())===t&&(A=pA())===t&&(A=yA());return e}const IA=r(8038);if((a=f())!==t&&eA===e.length)return a;throw a!==t&&eA{const A=[{name:"fontname",value:'"Helvetica"'},{name:"fontsize",value:"12"},{name:"penwidth",value:"2.0"}],r={dot:[{name:"splines",value:"true"},{name:"ordering",value:"out"},{name:"compound",value:"true"},{name:"overlap",value:"scale"},{name:"nodesep",value:"0.3"},{name:"ranksep",value:"0.1"}],fdp:[{name:"K",value:"0.9"}],osage:[{name:"pack",value:"42"}],neato:[{name:"epsilon",value:"0.9"}]},i={"bottom-top":[{name:"rankdir",value:"BT"}],"left-right":[{name:"rankdir",value:"LR"}],"right-left":[{name:"rankdir",value:"RL"}]},a=[{name:"shape",value:"plaintext"},{name:"style",value:"filled"},{name:"fillcolor",value:"transparent"},{name:"fontname",value:"Helvetica"},{name:"fontsize",value:12},{name:"penwidth",value:"2.0"}],t=[{name:"fontname",value:"Helvetica"},{name:"fontsize",value:10}];function n(e){return`${e.name}=${e.value}`}e.exports={buildGraphAttributes:(e,a,t)=>A.concat(r[e]||[]).concat(i[a]||[]).concat(t||[]).map(n).join(" "),buildNodeAttributes:e=>a.concat(e||[]).map(n).join(" "),buildEdgeAttributes:e=>t.concat(e||[]).map(n).join(" ")}},8578:e=>{e.exports=class{constructor(){this.reset()}reset(){this.COUNTER=0}next(){return++this.COUNTER}nextAsString(){return this.next().toString(10)}}},9604:(e,A,r)=>{var i=r(5631),a=i.template;(i.templates=i.templates||{})["dot.states.template.hbs"]=a({1:function(e,A,r,i,a){var t,n,f,l=e.lookupProperty||function(e,A){if(Object.prototype.hasOwnProperty.call(e,A))return e[A]},s="";return n=null!=(n=l(r,"nestedExternalSelfTransitions")||(null!=A?l(A,"nestedExternalSelfTransitions"):A))?n:e.hooks.helperMissing,f={name:"nestedExternalSelfTransitions",hash:{},fn:e.program(2,a,0),inverse:e.noop,data:a,loc:{start:{line:2,column:2},end:{line:4,column:36}}},t="function"==typeof n?n.call(null!=A?A:e.nullContext||{},f):n,l(r,"nestedExternalSelfTransitions")||(t=e.hooks.blockHelperMissing.call(A,t,f)),null!=t&&(s+=t),s},2:function(e,A,r,i,a){var t;return' "self_'+(null!=(t=e.lambda(A,A))?t:"")+'" [shape=point style=invis width=0 height=0 fixedsize=true]\n'},4:function(e,A,r,i,a){var t,n,f=null!=A?A:e.nullContext||{},l=e.lookupProperty||function(e,A){if(Object.prototype.hasOwnProperty.call(e,A))return e[A]};return' "'+(null!=(t="function"==typeof(n=null!=(n=l(r,"name")||(null!=A?l(A,"name"):A))?n:e.hooks.helperMissing)?n.call(f,{name:"name",hash:{},data:a,loc:{start:{line:7,column:3},end:{line:7,column:13}}}):n)?t:"")+'" [shape=circle style=filled '+(null!=(t=l(r,"if").call(f,null!=A?l(A,"color"):A,{name:"if",hash:{},fn:e.program(5,a,0),inverse:e.program(7,a,0),data:a,loc:{start:{line:7,column:42},end:{line:7,column:130}}}))?t:"")+(null!=(t=l(r,"if").call(f,null!=A?l(A,"active"):A,{name:"if",hash:{},fn:e.program(9,a,0),inverse:e.noop,data:a,loc:{start:{line:7,column:130},end:{line:7,column:164}}}))?t:"")+'fixedsize=true height=0.15 label=""]\n'},5:function(e,A,r,i,a){var t,n,f=null!=A?A:e.nullContext||{},l=e.hooks.helperMissing,s="function",c=e.lookupProperty||function(e,A){if(Object.prototype.hasOwnProperty.call(e,A))return e[A]};return'color="'+(null!=(t=typeof(n=null!=(n=c(r,"color")||(null!=A?c(A,"color"):A))?n:l)===s?n.call(f,{name:"color",hash:{},data:a,loc:{start:{line:7,column:62},end:{line:7,column:73}}}):n)?t:"")+'" fillcolor="'+(null!=(t=typeof(n=null!=(n=c(r,"color")||(null!=A?c(A,"color"):A))?n:l)===s?n.call(f,{name:"color",hash:{},data:a,loc:{start:{line:7,column:86},end:{line:7,column:97}}}):n)?t:"")+'" '},7:function(e,A,r,i,a){return"fillcolor=black "},9:function(e,A,r,i,a){return"penwidth=3.0 "},11:function(e,A,r,i,a){var t,n,f,l=null!=A?A:e.nullContext||{},s=e.hooks.helperMissing,c="function",o=e.lookupProperty||function(e,A){if(Object.prototype.hasOwnProperty.call(e,A))return e[A]},u=' "'+(null!=(t=typeof(n=null!=(n=o(r,"name")||(null!=A?o(A,"name"):A))?n:s)===c?n.call(l,{name:"name",hash:{},data:a,loc:{start:{line:10,column:3},end:{line:10,column:13}}}):n)?t:"")+'" [margin=0 '+(null!=(t=o(r,"if").call(l,null!=A?o(A,"color"):A,{name:"if",hash:{},fn:e.program(12,a,0),inverse:e.noop,data:a,loc:{start:{line:10,column:25},end:{line:10,column:65}}}))?t:"")+(null!=(t=o(r,"if").call(l,null!=A?o(A,"active"):A,{name:"if",hash:{},fn:e.program(14,a,0),inverse:e.noop,data:a,loc:{start:{line:10,column:65},end:{line:10,column:114}}}))?t:"")+'label= < \n \n \n";return n=null!=(n=o(r,"actions")||(null!=A?o(A,"actions"):A))?n:s,f={name:"actions",hash:{},fn:e.program(24,a,0),inverse:e.noop,data:a,loc:{start:{line:13,column:6},end:{line:16,column:18}}},t=typeof n===c?n.call(l,f):n,o(r,"actions")||(t=e.hooks.blockHelperMissing.call(A,t,f)),null!=t&&(u+=t),u+"
"+(null!=(t=o(r,"if").call(l,null!=A?o(A,"active"):A,{name:"if",hash:{},fn:e.program(20,a,0),inverse:e.program(22,a,0),data:a,loc:{start:{line:12,column:87},end:{line:12,column:141}}}))?t:"")+"
\n >]\n"},12:function(e,A,r,i,a){var t,n,f=e.lookupProperty||function(e,A){if(Object.prototype.hasOwnProperty.call(e,A))return e[A]};return'color="'+(null!=(t="function"==typeof(n=null!=(n=f(r,"color")||(null!=A?f(A,"color"):A))?n:e.hooks.helperMissing)?n.call(null!=A?A:e.nullContext||{},{name:"color",hash:{},data:a,loc:{start:{line:10,column:45},end:{line:10,column:56}}}):n)?t:"")+'" '},14:function(e,A,r,i,a){return"peripheries=1 style=rounded "},16:function(e,A,r,i,a){return' cellpadding="2"'},18:function(e,A,r,i,a){return' cellpadding="7"'},20:function(e,A,r,i,a){var t,n=e.lookupProperty||function(e,A){if(Object.prototype.hasOwnProperty.call(e,A))return e[A]};return""+e.escapeExpression("function"==typeof(t=null!=(t=n(r,"label")||(null!=A?n(A,"label"):A))?t:e.hooks.helperMissing)?t.call(null!=A?A:e.nullContext||{},{name:"label",hash:{},data:a,loc:{start:{line:12,column:104},end:{line:12,column:113}}}):t)+""},22:function(e,A,r,i,a){var t,n=e.lookupProperty||function(e,A){if(Object.prototype.hasOwnProperty.call(e,A))return e[A]};return e.escapeExpression("function"==typeof(t=null!=(t=n(r,"label")||(null!=A?n(A,"label"):A))?t:e.hooks.helperMissing)?t.call(null!=A?A:e.nullContext||{},{name:"label",hash:{},data:a,loc:{start:{line:12,column:125},end:{line:12,column:134}}}):t)},24:function(e,A,r,i,a){var t,n=e.lookupProperty||function(e,A){if(Object.prototype.hasOwnProperty.call(e,A))return e[A]};return" "+(null!=(t=n(r,"if").call(null!=A?A:e.nullContext||{},a&&n(a,"first"),{name:"if",hash:{},fn:e.program(25,a,0),inverse:e.noop,data:a,loc:{start:{line:14,column:8},end:{line:14,column:34}}}))?t:"")+'\n '+e.escapeExpression(e.lambda(A,A))+"\n"},25:function(e,A,r,i,a){return"


"},27:function(e,A,r,i,a){var t,n,f=null!=A?A:e.nullContext||{},l=e.lookupProperty||function(e,A){if(Object.prototype.hasOwnProperty.call(e,A))return e[A]};return' "'+(null!=(t="function"==typeof(n=null!=(n=l(r,"name")||(null!=A?l(A,"name"):A))?n:e.hooks.helperMissing)?n.call(f,{name:"name",hash:{},data:a,loc:{start:{line:21,column:3},end:{line:21,column:13}}}):n)?t:"")+'" [shape=circle '+(null!=(t=l(r,"if").call(f,null!=A?l(A,"color"):A,{name:"if",hash:{},fn:e.program(12,a,0),inverse:e.noop,data:a,loc:{start:{line:21,column:29},end:{line:21,column:69}}}))?t:"")+(null!=(t=l(r,"if").call(f,null!=A?l(A,"active"):A,{name:"if",hash:{},fn:e.program(9,a,0),inverse:e.noop,data:a,loc:{start:{line:21,column:69},end:{line:21,column:103}}}))?t:"")+'label="H"]\n'},29:function(e,A,r,i,a){var t,n,f=null!=A?A:e.nullContext||{},l=e.lookupProperty||function(e,A){if(Object.prototype.hasOwnProperty.call(e,A))return e[A]};return' "'+(null!=(t="function"==typeof(n=null!=(n=l(r,"name")||(null!=A?l(A,"name"):A))?n:e.hooks.helperMissing)?n.call(f,{name:"name",hash:{},data:a,loc:{start:{line:24,column:3},end:{line:24,column:13}}}):n)?t:"")+'" [shape=circle '+(null!=(t=l(r,"if").call(f,null!=A?l(A,"color"):A,{name:"if",hash:{},fn:e.program(12,a,0),inverse:e.noop,data:a,loc:{start:{line:24,column:29},end:{line:24,column:69}}}))?t:"")+(null!=(t=l(r,"if").call(f,null!=A?l(A,"active"):A,{name:"if",hash:{},fn:e.program(9,a,0),inverse:e.noop,data:a,loc:{start:{line:24,column:69},end:{line:24,column:103}}}))?t:"")+'label="H*"]\n'},31:function(e,A,r,i,a,t,n){var f,l,s,c=null!=A?A:e.nullContext||{},o=e.hooks.helperMissing,u="function",b=e.hooks.blockHelperMissing,h=e.lookupProperty||function(e,A){if(Object.prototype.hasOwnProperty.call(e,A))return e[A]},w=' "'+(null!=(f=typeof(l=null!=(l=h(r,"name")||(null!=A?h(A,"name"):A))?l:o)===u?l.call(c,{name:"name",hash:{},data:a,loc:{start:{line:27,column:3},end:{line:27,column:13}}}):l)?f:"")+'" [shape=diamond fixedsize=true width=0.35 height=0.35 fontsize=10 '+(null!=(f=h(r,"if").call(c,null!=A?h(A,"color"):A,{name:"if",hash:{},fn:e.program(12,a,0,t,n),inverse:e.noop,data:a,loc:{start:{line:27,column:80},end:{line:27,column:120}}}))?f:"")+(null!=(f=h(r,"if").call(c,null!=A?h(A,"active"):A,{name:"if",hash:{},fn:e.program(9,a,0,t,n),inverse:e.noop,data:a,loc:{start:{line:27,column:120},end:{line:27,column:154}}}))?f:"")+'label=" "]\n "'+(null!=(f=typeof(l=null!=(l=h(r,"name")||(null!=A?h(A,"name"):A))?l:o)===u?l.call(c,{name:"name",hash:{},data:a,loc:{start:{line:28,column:3},end:{line:28,column:13}}}):l)?f:"")+'" -> "'+(null!=(f=typeof(l=null!=(l=h(r,"name")||(null!=A?h(A,"name"):A))?l:o)===u?l.call(c,{name:"name",hash:{},data:a,loc:{start:{line:28,column:19},end:{line:28,column:29}}}):l)?f:"")+'" [label=<';return l=null!=(l=h(r,"actions")||(null!=A?h(A,"actions"):A))?l:o,s={name:"actions",hash:{},fn:e.program(32,a,0,t,n),inverse:e.noop,data:a,loc:{start:{line:28,column:39},end:{line:28,column:144}}},f=typeof l===u?l.call(c,s):l,h(r,"actions")||(f=b.call(A,f,s)),null!=f&&(w+=f),w+="> color=transparent",l=null!=(l=h(r,"color")||(null!=A?h(A,"color"):A))?l:o,s={name:"color",hash:{},fn:e.program(41,a,0,t,n),inverse:e.noop,data:a,loc:{start:{line:28,column:163},end:{line:28,column:203}}},f=typeof l===u?l.call(c,s):l,h(r,"color")||(f=b.call(A,f,s)),null!=f&&(w+=f),w+"];\n"},32:function(e,A,r,i,a,t,n){var f,l=null!=A?A:e.nullContext||{},s=e.lookupProperty||function(e,A){if(Object.prototype.hasOwnProperty.call(e,A))return e[A]};return(null!=(f=s(r,"if").call(l,a&&s(a,"first"),{name:"if",hash:{},fn:e.program(33,a,0,t,n),inverse:e.program(35,a,0,t,n),data:a,loc:{start:{line:28,column:51},end:{line:28,column:82}}}))?f:"")+(null!=(f=s(r,"if").call(l,null!=n[1]?s(n[1],"active"):n[1],{name:"if",hash:{},fn:e.program(37,a,0,t,n),inverse:e.program(39,a,0,t,n),data:a,loc:{start:{line:28,column:82},end:{line:28,column:131}}}))?f:"")},33:function(e,A,r,i,a){return""},35:function(e,A,r,i,a){return"\\n"},37:function(e,A,r,i,a){return""+e.escapeExpression(e.lambda(A,A))+""},39:function(e,A,r,i,a){return e.escapeExpression(e.lambda(A,A))},41:function(e,A,r,i,a){var t;return' fontcolor="'+(null!=(t=e.lambda(A,A))?t:"")+'"'},43:function(e,A,r,i,a){var t,n,f=null!=A?A:e.nullContext||{},l=e.hooks.helperMissing,s="function",c=e.lookupProperty||function(e,A){if(Object.prototype.hasOwnProperty.call(e,A))return e[A]};return' "'+(null!=(t=typeof(n=null!=(n=c(r,"name")||(null!=A?c(A,"name"):A))?n:l)===s?n.call(f,{name:"name",hash:{},data:a,loc:{start:{line:31,column:3},end:{line:31,column:13}}}):n)?t:"")+'" [shape=rect '+(null!=(t=c(r,"if").call(f,null!=A?c(A,"color"):A,{name:"if",hash:{},fn:e.program(5,a,0),inverse:e.program(7,a,0),data:a,loc:{start:{line:31,column:27},end:{line:31,column:115}}}))?t:"")+(null!=(t=c(r,"if").call(f,null!=A?c(A,"active"):A,{name:"if",hash:{},fn:e.program(9,a,0),inverse:e.noop,data:a,loc:{start:{line:31,column:115},end:{line:31,column:149}}}))?t:"")+'label=" " fixedsize=true style=filled '+(null!=(t=typeof(n=null!=(n=c(r,"sizingExtras")||(null!=A?c(A,"sizingExtras"):A))?n:l)===s?n.call(f,{name:"sizingExtras",hash:{},data:a,loc:{start:{line:31,column:187},end:{line:31,column:205}}}):n)?t:"")+"]\n"},45:function(e,A,r,i,a){var t,n,f=null!=A?A:e.nullContext||{},l=e.hooks.helperMissing,s="function",c=e.lookupProperty||function(e,A){if(Object.prototype.hasOwnProperty.call(e,A))return e[A]};return' "'+(null!=(t=typeof(n=null!=(n=c(r,"name")||(null!=A?c(A,"name"):A))?n:l)===s?n.call(f,{name:"name",hash:{},data:a,loc:{start:{line:37,column:3},end:{line:37,column:13}}}):n)?t:"")+'" [label= < \n \n \n \n
X
"+e.escapeExpression(typeof(n=null!=(n=c(r,"label")||(null!=A?c(A,"label"):A))?n:l)===s?n.call(f,{name:"label",hash:{},data:a,loc:{start:{line:40,column:78},end:{line:40,column:87}}}):n)+"
\n >]\n"},46:function(e,A,r,i,a){var t,n,f=e.lookupProperty||function(e,A){if(Object.prototype.hasOwnProperty.call(e,A))return e[A]};return'color="'+(null!=(t="function"==typeof(n=null!=(n=f(r,"color")||(null!=A?f(A,"color"):A))?n:e.hooks.helperMissing)?n.call(null!=A?A:e.nullContext||{},{name:"color",hash:{},data:a,loc:{start:{line:40,column:58},end:{line:40,column:69}}}):n)?t:"")+'"'},48:function(e,A,r,i,a){var t,n,f=null!=A?A:e.nullContext||{},l=e.lookupProperty||function(e,A){if(Object.prototype.hasOwnProperty.call(e,A))return e[A]};return' "'+(null!=(t="function"==typeof(n=null!=(n=l(r,"name")||(null!=A?l(A,"name"):A))?n:e.hooks.helperMissing)?n.call(f,{name:"name",hash:{},data:a,loc:{start:{line:45,column:3},end:{line:45,column:13}}}):n)?t:"")+'" [shape=circle style=filled '+(null!=(t=l(r,"if").call(f,null!=A?l(A,"color"):A,{name:"if",hash:{},fn:e.program(5,a,0),inverse:e.program(7,a,0),data:a,loc:{start:{line:45,column:42},end:{line:45,column:130}}}))?t:"")+"fixedsize=true height=0.15 peripheries=2 "+(null!=(t=l(r,"if").call(f,null!=A?l(A,"active"):A,{name:"if",hash:{},fn:e.program(9,a,0),inverse:e.noop,data:a,loc:{start:{line:45,column:171},end:{line:45,column:205}}}))?t:"")+'label=""]\n'},50:function(e,A,r,i,a){var t,n,f,l=null!=A?A:e.nullContext||{},s=e.hooks.helperMissing,c="function",o=e.lookupProperty||function(e,A){if(Object.prototype.hasOwnProperty.call(e,A))return e[A]},u=' subgraph "cluster_'+(null!=(t=typeof(n=null!=(n=o(r,"name")||(null!=A?o(A,"name"):A))?n:s)===c?n.call(l,{name:"name",hash:{},data:a,loc:{start:{line:48,column:20},end:{line:48,column:30}}}):n)?t:"")+'" {\n '+(null!=(t=o(r,"if").call(l,null!=A?o(A,"color"):A,{name:"if",hash:{},fn:e.program(12,a,0),inverse:e.noop,data:a,loc:{start:{line:49,column:4},end:{line:49,column:44}}}))?t:"")+'label= <\n \n \n";return n=null!=(n=o(r,"actions")||(null!=A?o(A,"actions"):A))?n:s,f={name:"actions",hash:{},fn:e.program(51,a,0),inverse:e.noop,data:a,loc:{start:{line:52,column:6},end:{line:55,column:18}}},t=typeof n===c?n.call(l,f):n,o(r,"actions")||(t=e.hooks.blockHelperMissing.call(A,t,f)),null!=t&&(u+=t),u+"
'+(null!=(t=o(r,"if").call(l,null!=A?o(A,"active"):A,{name:"if",hash:{},fn:e.program(20,a,0),inverse:e.program(22,a,0),data:a,loc:{start:{line:51,column:14},end:{line:51,column:68}}}))?t:"")+"
\n > "+(null!=(t=o(r,"if").call(l,null!=A?o(A,"parentIsParallel"):A,{name:"if",hash:{},fn:e.program(53,a,0),inverse:e.program(55,a,0),data:a,loc:{start:{line:57,column:6},end:{line:57,column:137}}}))?t:"")+'\n "'+(null!=(t=typeof(n=null!=(n=o(r,"name")||(null!=A?o(A,"name"):A))?n:s)===c?n.call(l,{name:"name",hash:{},data:a,loc:{start:{line:58,column:5},end:{line:58,column:15}}}):n)?t:"")+'" [shape=point style=invis margin=0 width=0 height=0 fixedsize=true]\n '+(null!=(t=(o(r,"stateSection")||A&&o(A,"stateSection")||s).call(l,null!=A?o(A,"statemachine"):A,{name:"stateSection",hash:{},fn:e.program(33,a,0),inverse:e.noop,data:a,loc:{start:{line:59,column:4},end:{line:59,column:51}}}))?t:"")+"\n }\n"},51:function(e,A,r,i,a){var t,n=e.lookupProperty||function(e,A){if(Object.prototype.hasOwnProperty.call(e,A))return e[A]};return" "+(null!=(t=n(r,"if").call(null!=A?A:e.nullContext||{},a&&n(a,"first"),{name:"if",hash:{},fn:e.program(25,a,0),inverse:e.noop,data:a,loc:{start:{line:53,column:8},end:{line:53,column:34}}}))?t:"")+'\n '+e.escapeExpression(e.lambda(A,A))+"\n"},53:function(e,A,r,i,a){return'style="dashed" penwidth=1'},55:function(e,A,r,i,a){var t,n=e.lookupProperty||function(e,A){if(Object.prototype.hasOwnProperty.call(e,A))return e[A]};return"style=rounded "+(null!=(t=n(r,"if").call(null!=A?A:e.nullContext||{},null!=A?n(A,"active"):A,{name:"if",hash:{},fn:e.program(56,a,0),inverse:e.program(58,a,0),data:a,loc:{start:{line:57,column:77},end:{line:57,column:130}}}))?t:"")},56:function(e,A,r,i,a){return"penwidth=3.0"},58:function(e,A,r,i,a){return"penwidth=2.0"},60:function(e,A,r,i,a,t,n){var f,l,s,c=e.lookupProperty||function(e,A){if(Object.prototype.hasOwnProperty.call(e,A))return e[A]},o="";return l=null!=(l=c(r,"noteName")||(null!=A?c(A,"noteName"):A))?l:e.hooks.helperMissing,s={name:"noteName",hash:{},fn:e.program(61,a,0,t,n),inverse:e.noop,data:a,loc:{start:{line:63,column:4},end:{line:66,column:17}}},f="function"==typeof l?l.call(null!=A?A:e.nullContext||{},s):l,c(r,"noteName")||(f=e.hooks.blockHelperMissing.call(A,f,s)),null!=f&&(o+=f),o},61:function(e,A,r,i,a,t,n){var f,l=e.lambda,s=e.lookupProperty||function(e,A){if(Object.prototype.hasOwnProperty.call(e,A))return e[A]};return' "'+(null!=(f=l(A,A))?f:"")+'" [color=black fontcolor=black label="'+(null!=(f=l(null!=n[1]?s(n[1],"noteFlattened"):n[1],A))?f:"")+'" shape=note fontsize=10 fillcolor="#ffffcc" penwidth=1.0]\n "'+(null!=(f=l(null!=n[1]?s(n[1],"name"):n[1],A))?f:"")+'" -> "'+(null!=(f=l(A,A))?f:"")+'" [style=dashed arrowtail=none arrowhead=none]\n'},compiler:[8,">= 4.3.0"],main:function(e,A,r,i,a,t,n){var f,l,s,c=null!=A?A:e.nullContext||{},o=e.hooks.helperMissing,u="function",b=e.hooks.blockHelperMissing,h=e.lookupProperty||function(e,A){if(Object.prototype.hasOwnProperty.call(e,A))return e[A]},w="";return l=null!=(l=h(r,"compositeStates")||(null!=A?h(A,"compositeStates"):A))?l:o,s={name:"compositeStates",hash:{},fn:e.program(1,a,0,t,n),inverse:e.noop,data:a,loc:{start:{line:1,column:0},end:{line:5,column:20}}},f=typeof l===u?l.call(c,s):l,h(r,"compositeStates")||(f=b.call(A,f,s)),null!=f&&(w+=f),l=null!=(l=h(r,"initialStates")||(null!=A?h(A,"initialStates"):A))?l:o,s={name:"initialStates",hash:{},fn:e.program(4,a,0,t,n),inverse:e.noop,data:a,loc:{start:{line:6,column:0},end:{line:8,column:18}}},f=typeof l===u?l.call(c,s):l,h(r,"initialStates")||(f=b.call(A,f,s)),null!=f&&(w+=f),l=null!=(l=h(r,"regularStates")||(null!=A?h(A,"regularStates"):A))?l:o,s={name:"regularStates",hash:{},fn:e.program(11,a,0,t,n),inverse:e.noop,data:a,loc:{start:{line:9,column:0},end:{line:19,column:18}}},f=typeof l===u?l.call(c,s):l,h(r,"regularStates")||(f=b.call(A,f,s)),null!=f&&(w+=f),l=null!=(l=h(r,"historyStates")||(null!=A?h(A,"historyStates"):A))?l:o,s={name:"historyStates",hash:{},fn:e.program(27,a,0,t,n),inverse:e.noop,data:a,loc:{start:{line:20,column:0},end:{line:22,column:18}}},f=typeof l===u?l.call(c,s):l,h(r,"historyStates")||(f=b.call(A,f,s)),null!=f&&(w+=f),l=null!=(l=h(r,"deepHistoryStates")||(null!=A?h(A,"deepHistoryStates"):A))?l:o,s={name:"deepHistoryStates",hash:{},fn:e.program(29,a,0,t,n),inverse:e.noop,data:a,loc:{start:{line:23,column:0},end:{line:25,column:22}}},f=typeof l===u?l.call(c,s):l,h(r,"deepHistoryStates")||(f=b.call(A,f,s)),null!=f&&(w+=f),l=null!=(l=h(r,"choiceStates")||(null!=A?h(A,"choiceStates"):A))?l:o,s={name:"choiceStates",hash:{},fn:e.program(31,a,0,t,n),inverse:e.noop,data:a,loc:{start:{line:26,column:0},end:{line:29,column:17}}},f=typeof l===u?l.call(c,s):l,h(r,"choiceStates")||(f=b.call(A,f,s)),null!=f&&(w+=f),l=null!=(l=h(r,"forkjoinStates")||(null!=A?h(A,"forkjoinStates"):A))?l:o,s={name:"forkjoinStates",hash:{},fn:e.program(43,a,0,t,n),inverse:e.noop,data:a,loc:{start:{line:30,column:0},end:{line:32,column:19}}},f=typeof l===u?l.call(c,s):l,h(r,"forkjoinStates")||(f=b.call(A,f,s)),null!=f&&(w+=f),l=null!=(l=h(r,"junctionStates")||(null!=A?h(A,"junctionStates"):A))?l:o,s={name:"junctionStates",hash:{},fn:e.program(4,a,0,t,n),inverse:e.noop,data:a,loc:{start:{line:33,column:0},end:{line:35,column:19}}},f=typeof l===u?l.call(c,s):l,h(r,"junctionStates")||(f=b.call(A,f,s)),null!=f&&(w+=f),l=null!=(l=h(r,"terminateStates")||(null!=A?h(A,"terminateStates"):A))?l:o,s={name:"terminateStates",hash:{},fn:e.program(45,a,0,t,n),inverse:e.noop,data:a,loc:{start:{line:36,column:0},end:{line:43,column:20}}},f=typeof l===u?l.call(c,s):l,h(r,"terminateStates")||(f=b.call(A,f,s)),null!=f&&(w+=f),l=null!=(l=h(r,"finalStates")||(null!=A?h(A,"finalStates"):A))?l:o,s={name:"finalStates",hash:{},fn:e.program(48,a,0,t,n),inverse:e.noop,data:a,loc:{start:{line:44,column:0},end:{line:46,column:16}}},f=typeof l===u?l.call(c,s):l,h(r,"finalStates")||(f=b.call(A,f,s)),null!=f&&(w+=f),l=null!=(l=h(r,"compositeStates")||(null!=A?h(A,"compositeStates"):A))?l:o,s={name:"compositeStates",hash:{},fn:e.program(50,a,0,t,n),inverse:e.noop,data:a,loc:{start:{line:47,column:0},end:{line:61,column:20}}},f=typeof l===u?l.call(c,s):l,h(r,"compositeStates")||(f=b.call(A,f,s)),null!=f&&(w+=f),l=null!=(l=h(r,"states")||(null!=A?h(A,"states"):A))?l:o,s={name:"states",hash:{},fn:e.program(60,a,0,t,n),inverse:e.noop,data:a,loc:{start:{line:62,column:0},end:{line:67,column:11}}},f=typeof l===u?l.call(c,s):l,h(r,"states")||(f=b.call(A,f,s)),null!=f&&(w+=f),w},useData:!0,useDepths:!0})},6070:(e,A,r)=>{var i=r(5631),a=i.template;(i.templates=i.templates||{})["dot.template.hbs"]=a({1:function(e,A,r,i,a,t,n){var f,l,s,c=null!=A?A:e.nullContext||{},o=e.hooks.helperMissing,u="function",b=e.hooks.blockHelperMissing,h=e.lookupProperty||function(e,A){if(Object.prototype.hasOwnProperty.call(e,A))return e[A]},w="";return l=null!=(l=h(r,"noteName")||(null!=A?h(A,"noteName"):A))?l:o,s={name:"noteName",hash:{},fn:e.noop,inverse:e.program(2,a,0,t,n),data:a,loc:{start:{line:9,column:2},end:{line:24,column:15}}},f=typeof l===u?l.call(c,s):l,h(r,"noteName")||(f=b.call(A,f,s)),null!=f&&(w+=f),l=null!=(l=h(r,"noteName")||(null!=A?h(A,"noteName"):A))?l:o,s={name:"noteName",hash:{},fn:e.program(17,a,0,t,n),inverse:e.noop,data:a,loc:{start:{line:25,column:2},end:{line:35,column:15}}},f=typeof l===u?l.call(c,s):l,h(r,"noteName")||(f=b.call(A,f,s)),null!=f&&(w+=f),w},2:function(e,A,r,i,a){var t,n,f,l=null!=A?A:e.nullContext||{},s=e.hooks.helperMissing,c="function",o=e.hooks.blockHelperMissing,u=e.lookupProperty||function(e,A){if(Object.prototype.hasOwnProperty.call(e,A))return e[A]},b="";return n=null!=(n=u(r,"isCompositeSelf")||(null!=A?u(A,"isCompositeSelf"):A))?n:s,f={name:"isCompositeSelf",hash:{},fn:e.noop,inverse:e.program(3,a,0),data:a,loc:{start:{line:10,column:4},end:{line:15,column:24}}},t=typeof n===c?n.call(l,f):n,u(r,"isCompositeSelf")||(t=o.call(A,t,f)),null!=t&&(b+=t),n=null!=(n=u(r,"isCompositeSelf")||(null!=A?u(A,"isCompositeSelf"):A))?n:s,f={name:"isCompositeSelf",hash:{},fn:e.program(12,a,0),inverse:e.noop,data:a,loc:{start:{line:16,column:4},end:{line:23,column:24}}},t=typeof n===c?n.call(l,f):n,u(r,"isCompositeSelf")||(t=o.call(A,t,f)),null!=t&&(b+=t),b},3:function(e,A,r,i,a){var t,n,f,l=null!=A?A:e.nullContext||{},s=e.hooks.helperMissing,c="function",o=e.hooks.blockHelperMissing,u=e.lookupProperty||function(e,A){if(Object.prototype.hasOwnProperty.call(e,A))return e[A]},b=' "'+(null!=(t=typeof(n=null!=(n=u(r,"from")||(null!=A?u(A,"from"):A))?n:s)===c?n.call(l,{name:"from",hash:{},data:a,loc:{start:{line:11,column:5},end:{line:11,column:15}}}):n)?t:"")+'" -> "'+(null!=(t=typeof(n=null!=(n=u(r,"to")||(null!=A?u(A,"to"):A))?n:s)===c?n.call(l,{name:"to",hash:{},data:a,loc:{start:{line:11,column:21},end:{line:11,column:29}}}):n)?t:"")+'" [label="';return n=null!=(n=u(r,"label")||(null!=A?u(A,"label"):A))?n:s,f={name:"label",hash:{},fn:e.noop,inverse:e.program(4,a,0),data:a,loc:{start:{line:11,column:39},end:{line:11,column:60}}},t=typeof n===c?n.call(l,f):n,u(r,"label")||(t=o.call(A,t,f)),null!=t&&(b+=t),b+=(null!=(t=typeof(n=null!=(n=u(r,"label")||(null!=A?u(A,"label"):A))?n:s)===c?n.call(l,{name:"label",hash:{},data:a,loc:{start:{line:11,column:60},end:{line:11,column:71}}}):n)?t:"")+'"',n=null!=(n=u(r,"fromComposite")||(null!=A?u(A,"fromComposite"):A))?n:s,f={name:"fromComposite",hash:{},fn:e.program(6,a,0),inverse:e.noop,data:a,loc:{start:{line:12,column:28},end:{line:12,column:92}}},t=typeof n===c?n.call(l,f):n,u(r,"fromComposite")||(t=o.call(A,t,f)),null!=t&&(b+=t),n=null!=(n=u(r,"toComposite")||(null!=A?u(A,"toComposite"):A))?n:s,f={name:"toComposite",hash:{},fn:e.program(8,a,0),inverse:e.noop,data:a,loc:{start:{line:13,column:28},end:{line:13,column:86}}},t=typeof n===c?n.call(l,f):n,u(r,"toComposite")||(t=o.call(A,t,f)),null!=t&&(b+=t),n=null!=(n=u(r,"color")||(null!=A?u(A,"color"):A))?n:s,f={name:"color",hash:{},fn:e.program(10,a,0),inverse:e.noop,data:a,loc:{start:{line:14,column:28},end:{line:14,column:85}}},t=typeof n===c?n.call(l,f):n,u(r,"color")||(t=o.call(A,t,f)),null!=t&&(b+=t),b+"]\n"},4:function(e,A,r,i,a){return" "},6:function(e,A,r,i,a){var t,n,f=e.lookupProperty||function(e,A){if(Object.prototype.hasOwnProperty.call(e,A))return e[A]};return' ltail="cluster_'+(null!=(t="function"==typeof(n=null!=(n=f(r,"from")||(null!=A?f(A,"from"):A))?n:e.hooks.helperMissing)?n.call(null!=A?A:e.nullContext||{},{name:"from",hash:{},data:a,loc:{start:{line:12,column:63},end:{line:12,column:73}}}):n)?t:"")+'"'},8:function(e,A,r,i,a){var t,n,f=e.lookupProperty||function(e,A){if(Object.prototype.hasOwnProperty.call(e,A))return e[A]};return' lhead="cluster_'+(null!=(t="function"==typeof(n=null!=(n=f(r,"to")||(null!=A?f(A,"to"):A))?n:e.hooks.helperMissing)?n.call(null!=A?A:e.nullContext||{},{name:"to",hash:{},data:a,loc:{start:{line:13,column:61},end:{line:13,column:69}}}):n)?t:"")+'"'},10:function(e,A,r,i,a){var t,n=e.lambda;return' color="'+(null!=(t=n(A,A))?t:"")+'" fontcolor="'+(null!=(t=n(A,A))?t:"")+'"'},12:function(e,A,r,i,a){var t,n,f,l=null!=A?A:e.nullContext||{},s=e.hooks.helperMissing,c="function",o=e.hooks.blockHelperMissing,u=e.lookupProperty||function(e,A){if(Object.prototype.hasOwnProperty.call(e,A))return e[A]},b=' "'+(null!=(t=typeof(n=null!=(n=u(r,"from")||(null!=A?u(A,"from"):A))?n:s)===c?n.call(l,{name:"from",hash:{},data:a,loc:{start:{line:17,column:7},end:{line:17,column:17}}}):n)?t:"")+'" -> "self_'+(null!=(t=typeof(n=null!=(n=u(r,"name")||(null!=A?u(A,"name"):A))?n:s)===c?n.call(l,{name:"name",hash:{},data:a,loc:{start:{line:17,column:28},end:{line:17,column:38}}}):n)?t:"")+'" [label="';return n=null!=(n=u(r,"label")||(null!=A?u(A,"label"):A))?n:s,f={name:"label",hash:{},fn:e.noop,inverse:e.program(4,a,0),data:a,loc:{start:{line:17,column:48},end:{line:17,column:69}}},t=typeof n===c?n.call(l,f):n,u(r,"label")||(t=o.call(A,t,f)),null!=t&&(b+=t),b+=(null!=(t=typeof(n=null!=(n=u(r,"label")||(null!=A?u(A,"label"):A))?n:s)===c?n.call(l,{name:"label",hash:{},data:a,loc:{start:{line:17,column:69},end:{line:17,column:80}}}):n)?t:"")+'" arrowhead=none',n=null!=(n=u(r,"tailportflags")||(null!=A?u(A,"tailportflags"):A))?n:s,f={name:"tailportflags",hash:{},fn:e.program(13,a,0),inverse:e.noop,data:a,loc:{start:{line:18,column:28},end:{line:18,column:73}}},t=typeof n===c?n.call(l,f):n,u(r,"tailportflags")||(t=o.call(A,t,f)),null!=t&&(b+=t),b+=' ltail="cluster_'+(null!=(t=typeof(n=null!=(n=u(r,"from")||(null!=A?u(A,"from"):A))?n:s)===c?n.call(l,{name:"from",hash:{},data:a,loc:{start:{line:18,column:89},end:{line:18,column:99}}}):n)?t:"")+'"',n=null!=(n=u(r,"color")||(null!=A?u(A,"color"):A))?n:s,f={name:"color",hash:{},fn:e.program(10,a,0),inverse:e.noop,data:a,loc:{start:{line:19,column:28},end:{line:19,column:85}}},t=typeof n===c?n.call(l,f):n,u(r,"color")||(t=o.call(A,t,f)),null!=t&&(b+=t),b+=']\n "self_'+(null!=(t=typeof(n=null!=(n=u(r,"name")||(null!=A?u(A,"name"):A))?n:s)===c?n.call(l,{name:"name",hash:{},data:a,loc:{start:{line:20,column:12},end:{line:20,column:22}}}):n)?t:"")+'" -> "'+(null!=(t=typeof(n=null!=(n=u(r,"from")||(null!=A?u(A,"from"):A))?n:s)===c?n.call(l,{name:"from",hash:{},data:a,loc:{start:{line:20,column:28},end:{line:20,column:38}}}):n)?t:"")+'" [lhead="cluster_'+(null!=(t=typeof(n=null!=(n=u(r,"from")||(null!=A?u(A,"from"):A))?n:s)===c?n.call(l,{name:"from",hash:{},data:a,loc:{start:{line:20,column:56},end:{line:20,column:66}}}):n)?t:"")+'"',n=null!=(n=u(r,"headportflags")||(null!=A?u(A,"headportflags"):A))?n:s,f={name:"headportflags",hash:{},fn:e.program(13,a,0),inverse:e.noop,data:a,loc:{start:{line:21,column:28},end:{line:21,column:73}}},t=typeof n===c?n.call(l,f):n,u(r,"headportflags")||(t=o.call(A,t,f)),null!=t&&(b+=t),n=null!=(n=u(r,"color")||(null!=A?u(A,"color"):A))?n:s,f={name:"color",hash:{},fn:e.program(15,a,0),inverse:e.noop,data:a,loc:{start:{line:22,column:28},end:{line:22,column:65}}},t=typeof n===c?n.call(l,f):n,u(r,"color")||(t=o.call(A,t,f)),null!=t&&(b+=t),b+"]\n"},13:function(e,A,r,i,a){var t;return" "+(null!=(t=e.lambda(A,A))?t:"")},15:function(e,A,r,i,a){var t;return' color="'+(null!=(t=e.lambda(A,A))?t:"")+'"'},17:function(e,A,r,i,a,t,n){var f,l=e.lambda,s=e.hooks.blockHelperMissing,c=e.lookupProperty||function(e,A){if(Object.prototype.hasOwnProperty.call(e,A))return e[A]};return' "i_'+(null!=(f=l(A,A))?f:"")+'" [shape=point style=invis margin=0 width=0 height=0 fixedsize=true]\n "'+(null!=(f=l(null!=n[1]?c(n[1],"from"):n[1],A))?f:"")+'" -> "i_'+(null!=(f=l(A,A))?f:"")+'" [arrowhead=none'+(null!=(f=s.call(A,l(null!=n[1]?c(n[1],"fromComposite"):n[1],A),{name:"../fromComposite",hash:{},fn:e.program(18,a,0,t,n),inverse:e.noop,data:a,loc:{start:{line:28,column:32},end:{line:28,column:105}}}))?f:"")+(null!=(f=s.call(A,l(null!=n[1]?c(n[1],"color"):n[1],A),{name:"../color",hash:{},fn:e.program(15,a,0,t,n),inverse:e.noop,data:a,loc:{start:{line:29,column:32},end:{line:29,column:75}}}))?f:"")+']\n "i_'+(null!=(f=l(A,A))?f:"")+'" -> "'+(null!=(f=l(null!=n[1]?c(n[1],"to"):n[1],A))?f:"")+'" [label="'+(null!=(f=s.call(A,l(null!=n[1]?c(n[1],"label"):n[1],A),{name:"../label",hash:{},fn:e.noop,inverse:e.program(4,a,0,t,n),data:a,loc:{start:{line:30,column:43},end:{line:30,column:70}}}))?f:"")+(null!=(f=l(null!=n[1]?c(n[1],"label"):n[1],A))?f:"")+'"'+(null!=(f=s.call(A,l(null!=n[1]?c(n[1],"toComposite"):n[1],A),{name:"../toComposite",hash:{},fn:e.program(20,a,0,t,n),inverse:e.noop,data:a,loc:{start:{line:31,column:32},end:{line:31,column:99}}}))?f:"")+(null!=(f=s.call(A,l(null!=n[1]?c(n[1],"color"):n[1],A),{name:"../color",hash:{},fn:e.program(10,a,0,t,n),inverse:e.noop,data:a,loc:{start:{line:32,column:32},end:{line:32,column:95}}}))?f:"")+']\n "i_'+(null!=(f=l(A,A))?f:"")+'" -> "'+(null!=(f=l(A,A))?f:"")+'" [style=dashed arrowtail=none arrowhead=none weight=0]\n "'+(null!=(f=l(A,A))?f:"")+'" [label="'+(null!=(f=l(null!=n[1]?c(n[1],"noteFlattened"):n[1],A))?f:"")+'" shape=note fontsize=10 color=black fontcolor=black fillcolor="#ffffcc" penwidth=1.0]\n'},18:function(e,A,r,i,a,t,n){var f,l=e.lookupProperty||function(e,A){if(Object.prototype.hasOwnProperty.call(e,A))return e[A]};return' ltail="cluster_'+(null!=(f=e.lambda(null!=n[1]?l(n[1],"from"):n[1],A))?f:"")+'"'},20:function(e,A,r,i,a,t,n){var f,l=e.lookupProperty||function(e,A){if(Object.prototype.hasOwnProperty.call(e,A))return e[A]};return' lhead="cluster_'+(null!=(f=e.lambda(null!=n[1]?l(n[1],"to"):n[1],A))?f:"")+'"'},compiler:[8,">= 4.3.0"],main:function(e,A,r,i,a,t,n){var f,l,s,c=null!=A?A:e.nullContext||{},o=e.hooks.helperMissing,u="function",b=e.lookupProperty||function(e,A){if(Object.prototype.hasOwnProperty.call(e,A))return e[A]},h='digraph "state transitions" {\n '+(null!=(f=typeof(l=null!=(l=b(r,"graphAttributes")||(null!=A?b(A,"graphAttributes"):A))?l:o)===u?l.call(c,{name:"graphAttributes",hash:{},data:a,loc:{start:{line:2,column:2},end:{line:2,column:23}}}):l)?f:"")+"\n node ["+(null!=(f=typeof(l=null!=(l=b(r,"nodeAttributes")||(null!=A?b(A,"nodeAttributes"):A))?l:o)===u?l.call(c,{name:"nodeAttributes",hash:{},data:a,loc:{start:{line:3,column:8},end:{line:3,column:28}}}):l)?f:"")+"]\n edge ["+(null!=(f=typeof(l=null!=(l=b(r,"edgeAttributes")||(null!=A?b(A,"edgeAttributes"):A))?l:o)===u?l.call(c,{name:"edgeAttributes",hash:{},data:a,loc:{start:{line:4,column:8},end:{line:4,column:28}}}):l)?f:"")+"]\n\n"+(null!=(f=e.invokePartial(b(i,"dot.states.template.hbs"),A,{name:"dot.states.template.hbs",data:a,indent:" ",helpers:r,partials:i,decorators:e.decorators}))?f:"")+"\n";return l=null!=(l=b(r,"transitions")||(null!=A?b(A,"transitions"):A))?l:o,s={name:"transitions",hash:{},fn:e.program(1,a,0,t,n),inverse:e.noop,data:a,loc:{start:{line:8,column:2},end:{line:36,column:18}}},f=typeof l===u?l.call(c,s):l,b(r,"transitions")||(f=e.hooks.blockHelperMissing.call(A,f,s)),null!=f&&(h+=f),h+"}\n"},usePartial:!0,useData:!0,useDepths:!0})},3047:(e,A,r)=>{const i=r(5631),a=r(467),t=r(7766),n=r(2375),f=r(2502),l=r(4377),s=r(8600),c=r(8578),o=r(6408);let u={};function b(e,A,r,i){return e.filter((e=>e.statemachine)).forEach((e=>{e.statemachine.states=b(e.statemachine.states,A,r,i)})),e.map(l.setLabel).map(l.nameNote).map(l.escapeStateStrings).map(l.flattenNote).map(l.flattenActions).map(l.flagParallelChildren).map(l.tipForkJoinStates(A)).map(l.recolor(r)).map(function(e){return A=>(Object.prototype.hasOwnProperty.call(A,"statemachine")&&(A.nestedExternalSelfTransitions=e.findExternalSelfTransitions(A.name).map((e=>e.name))),A)}(i))}function h(e){return e.initialStates=e.states.filter(l.isType("initial")),e.regularStates=e.states.filter((e=>l.isType("regular")(e)&&!e.statemachine)),e.historyStates=e.states.filter(l.isType("history")),e.deepHistoryStates=e.states.filter(l.isType("deephistory")),e.choiceStates=e.states.filter(l.isType("choice")),e.forkjoinStates=e.states.filter(l.isOneOfTypes(["fork","join","forkjoin"])),e.junctionStates=e.states.filter(l.isType("junction")),e.terminateStates=e.states.filter(l.isType("terminate")),e.finalStates=e.states.filter(l.isType("final")),e.compositeStates=e.states.filter((e=>e.statemachine)),e}function w(e){return e.name=`tr_${e.from}_${e.to}_${u.nextAsString()}`,Boolean(e.note)&&(e.noteName=`note_${e.name}`),e}r(6070),r(9604),i.registerPartial("dot.states.template.hbs",i.templates["dot.states.template.hbs"]),i.registerHelper("stateSection",(e=>i.templates["dot.states.template.hbs"](h(e)))),e.exports=(e,A)=>{A=A||{},u=new c;let r=a(e);const k=new n(r);return r.transitions=(d=k,v=A.direction,d.flattenedTransitions.map(w).map(s.escapeTransitionStrings).map(l.flattenNote).map(function(e){return A=>(e.findStateByName(A.from).statemachine&&(A.fromComposite=!0),e.findStateByName(A.to).statemachine&&(A.toComposite=!0),A)}(d)).map(function(e){return A=>{let r={};return o.isCompositeSelf(e,A)&&(r=e.findStateByName(A.from).hasParent?{hasParent:!0,isCompositeSelf:!0}:{isCompositeSelf:!0}),{...A,...r}}}(d)).map(s.addPorts(v))),r.states=b(r.states,A.direction,A.dotNodeAttrs,k),r=h(r),r.graphAttributes=f.buildGraphAttributes(t.getOptionValue(A,"engine"),t.getOptionValue(A,"direction"),A.dotGraphAttrs),r.nodeAttributes=f.buildNodeAttributes(A.dotNodeAttrs),r.edgeAttributes=f.buildEdgeAttributes(A.dotEdgeAttrs),i.templates["dot.template.hbs"](r);var d,v}},4377:(e,A,r)=>{const i=r(3278),a=r(6408);function t(e){return A=>A.type===e}function n(e){return A=>e.includes(A.type)}e.exports={isType:t,isOneOfTypes:n,setLabel:function(e){return e.label=e.label||e.name,e},nameNote:function(e){return Object.prototype.hasOwnProperty.call(e,"note")&&(e.noteName=`note_${e.name}`),e},flattenActions:function(e){const A={...e};return e.actions&&(A.actions=e.actions.map((e=>{return`${A=e.type,"activity"===A?"":`${A}/ `}${e.body}`;var A}))),A},flattenNote:function(e){return Object.prototype.hasOwnProperty.call(e,"note")&&(e.noteFlattened=e.note.join("")),e},recolor:function(e){return A=>{const r=i((e||[]).find((e=>"color"===e.name)),"value");return r&&!A.color&&n(["initial","fork","join","junction","forkjoin","final"])(A)&&(A.color=r),A}},escapeStateStrings:function(e){return e.note&&(e.note=e.note.map(a.escapeString)),e},tipForkJoinStates:function(e){return A=>n(["fork","join","forkjoin"])(A)?{sizingExtras:a.isVertical(e)?"height=0.1":"width=0.1",...A}:A},flagParallelChildren:function(e){return"parallel"===e.type&&e.statemachine&&e.statemachine.states&&(e.statemachine.states=e.statemachine.states.map((e=>t("regular")(e)?{...e,parentIsParallel:!0}:e))),e}}},8600:(e,A,r)=>{const i=r(6408);e.exports={escapeTransitionStrings:function(e){return e.note&&(e.note=e.note.map(i.escapeString)),e.label&&(e.label=i.escapeLabelString(e.label)),e},addPorts:function(e){return A=>{let r={};return A.isCompositeSelf&&(r=i.isVertical(e)?{tailportflags:'tailport="e" headport="e"',headportflags:'tailport="w"'}:A.hasParent?{tailportflags:'tailport="n" headport="n"',headportflags:'tailport="s"'}:{tailportflags:'tailport="s" headport="s"',headportflags:'tailport="n"'}),{...A,...r}}}}},6408:e=>{e.exports={escapeString:function(e){return e.replace(/\\/g,"\\\\").replace(/\n\s*/g,"\\l").replace(/"/g,'\\"').concat("\\l")},escapeLabelString:function(e){return e.replace(/\\/g,"\\\\").replace(/\n\s*/g," \\l").replace(/"/g,'\\"').concat(" \\l")},isVertical:function(e){const A=e||"top-down";return"top-down"===A||"bottom-top"===A},isCompositeSelf:function(e,A){return A.from===A.to&&e.findStateByName(A.from).statemachine&&!("internal"===A.type)}}},6558:(e,A,r)=>{const i=r(9184),a=r(3047),t=r(5309),n=r(3469),f=r(825);e.exports=function(e){const A={smcat:i,dot:a,svg:t,scjson:n,scxml:f};return Object.prototype.hasOwnProperty.call(A,e)?A[e]:e=>e}},3469:(e,A,r)=>{const i=r(2375),a=r(9376),t=r(8375),n={regular:"state",initial:"initial",final:"final",terminate:"final",parallel:"parallel",history:"history",deephistory:"history"};function f(e){const A={target:a(e.to)};return Boolean(e.event)&&(A.event=t(e.event)),Boolean(e.cond)&&(A.cond=e.cond),Boolean(e.action)&&(A.action=e.action),Boolean(e.type)&&(A.type=e.type),A}function l(e,A,r,i){const a=(t=i,r.filter((e=>e.type===t)).map((e=>e.body)));var t;a.length>0&&(e[A]=(e[A]||[]).concat(a))}function s(e){return e=e||[],A=>{const r={kind:(i=A.type,n[i]||"state"),id:a(A.name)};var i;return"deephistory"===A.type&&(r.type="deep"),function(e,A){Boolean(A.actions)&&(l(e,"onentries",A.actions,"entry"),l(e,"onentries",A.actions,"activity"),l(e,"onexits",A.actions,"exit"))}(r,A),function(e,A,r){const i=r.filter((e=>e.from===A.name)).map(f);i.length>0&&(e.transitions=i)}(r,A,e),function(e,A,r){if(Boolean(A.statemachine)){const i=c(A.statemachine,0,r);e.states=(e.states||[]).concat(i.states),i.initial&&(e.initial=i.initial)}}(r,A,e),r}}function c(e,A,r){const t=function(e){let A=null;const r=e.states.filter((e=>"initial"===e.type));return r.length>0&&(A=r[0].name),A}(e),n=function(e,A){let r=A;if(A&&e.transitions){const i=e.transitions.filter((e=>e.from===A));i.length>0&&!i[0].action&&(r=i[0].to)}return r}(e,t),f={states:e.states.filter((e=>!n||n===t||"initial"!==e.type)).map(s(r||new i(e).flattenedTransitions))};return n&&(f.initial=a(n)),f}e.exports=c},8375:e=>{const A=/[\u00B7|\u0300-\u036F|\u203F-\u2040|\u0000-\u0029|\u002B-\u002C|\u002F|\u003B-\u0040|\u005B-\u0060|\u007B-\u00BF|\u00D7|\u00F7|\u0300-\u036F|\u037E|\u2000-\u200B|\u200E-\u206F|\u2190-\u2BFF|\u2FF0-\u3000|\uD800-\uF8FF|\uFDD0-\uFDEF|\uFFFE-\uFFFF]/g,r=/[.]/g;function i(e){return e.replace(A,"_")}function a(e){return function(e){let A=i(e);return A.match(r)&&(A=`_${e}`),A}((e=e.replace(/\s+/g," ").trim())[0]).concat(i(e.slice(1)))}e.exports=e=>0===(e=e||"").length?"empty":e.split(/[\n\r]+/).filter((e=>e.length>0)).map(a).join(" ")},9376:e=>{const A=/[\u0000-\u002C|\u002F|\u003B-\u0040|\u005B-\u0060|\u007B-\u00BF|\u00D7|\u00F7|\u0300-\u036F|\u037E|\u2000-\u200B|\u200E-\u206F|\u2190-\u2BFF|\u2FF0-\u3000|\uD800-\uF8FF|\uFDD0-\uFDEF|\uFFFE-\uFFFF]/g,r=/[-|.|0-9|\u00B7|\u0300-\u036F|\u203F-\u2040]/g;function i(e){return e.replace(A,"_")}e.exports=e=>0===(e=e||"").length?"__empty":function(e){let A=i(e);return A.match(r)&&(A=`_${e}`),A}(e[0]).concat(i(e.slice(1)))},825:(e,A,r)=>{const i=r(5631),a=r(3469);r(2270),r(9145),i.registerPartial("scxml.states.template.hbs",i.templates["scxml.states.template.hbs"]),e.exports=e=>i.templates["scxml.template.hbs"](a(e))},9145:(e,A,r)=>{var i=r(5631),a=i.template;(i.templates=i.templates||{})["scxml.states.template.hbs"]=a({1:function(e,A,r,i,a){var t,n,f=null!=A?A:e.nullContext||{},l=e.hooks.helperMissing,s="function",c=e.escapeExpression,o=e.lookupProperty||function(e,A){if(Object.prototype.hasOwnProperty.call(e,A))return e[A]};return" <"+c(typeof(n=null!=(n=o(r,"kind")||(null!=A?o(A,"kind"):A))?n:l)===s?n.call(f,{name:"kind",hash:{},data:a,loc:{start:{line:2,column:5},end:{line:2,column:13}}}):n)+' id="'+c(typeof(n=null!=(n=o(r,"id")||(null!=A?o(A,"id"):A))?n:l)===s?n.call(f,{name:"id",hash:{},data:a,loc:{start:{line:2,column:18},end:{line:2,column:24}}}):n)+'"'+(null!=(t=o(r,"if").call(f,null!=A?o(A,"initial"):A,{name:"if",hash:{},fn:e.program(2,a,0),inverse:e.noop,data:a,loc:{start:{line:2,column:25},end:{line:2,column:69}}}))?t:"")+(null!=(t=o(r,"if").call(f,null!=A?o(A,"type"):A,{name:"if",hash:{},fn:e.program(4,a,0),inverse:e.noop,data:a,loc:{start:{line:2,column:69},end:{line:2,column:104}}}))?t:"")+">\n"+(null!=(t=e.invokePartial(o(i,"scxml.states.template.hbs"),A,{name:"scxml.states.template.hbs",data:a,indent:" ",helpers:r,partials:i,decorators:e.decorators}))?t:"")+(null!=(t=o(r,"each").call(f,null!=A?o(A,"onentries"):A,{name:"each",hash:{},fn:e.program(6,a,0),inverse:e.noop,data:a,loc:{start:{line:4,column:4},end:{line:6,column:13}}}))?t:"")+(null!=(t=o(r,"each").call(f,null!=A?o(A,"onexits"):A,{name:"each",hash:{},fn:e.program(8,a,0),inverse:e.noop,data:a,loc:{start:{line:7,column:4},end:{line:9,column:13}}}))?t:"")+(null!=(t=o(r,"each").call(f,null!=A?o(A,"transitions"):A,{name:"each",hash:{},fn:e.program(10,a,0),inverse:e.noop,data:a,loc:{start:{line:10,column:4},end:{line:18,column:13}}}))?t:"")+" \n"},2:function(e,A,r,i,a){var t,n=e.lookupProperty||function(e,A){if(Object.prototype.hasOwnProperty.call(e,A))return e[A]};return' initial="'+e.escapeExpression("function"==typeof(t=null!=(t=n(r,"initial")||(null!=A?n(A,"initial"):A))?t:e.hooks.helperMissing)?t.call(null!=A?A:e.nullContext||{},{name:"initial",hash:{},data:a,loc:{start:{line:2,column:50},end:{line:2,column:61}}}):t)+'"'},4:function(e,A,r,i,a){var t,n=e.lookupProperty||function(e,A){if(Object.prototype.hasOwnProperty.call(e,A))return e[A]};return' type="'+e.escapeExpression("function"==typeof(t=null!=(t=n(r,"type")||(null!=A?n(A,"type"):A))?t:e.hooks.helperMissing)?t.call(null!=A?A:e.nullContext||{},{name:"type",hash:{},data:a,loc:{start:{line:2,column:88},end:{line:2,column:96}}}):t)+'"'},6:function(e,A,r,i,a){return" "+e.escapeExpression(e.lambda(A,A))+"\n"},8:function(e,A,r,i,a){return" "+e.escapeExpression(e.lambda(A,A))+"\n"},10:function(e,A,r,i,a){var t,n=e.lookupProperty||function(e,A){if(Object.prototype.hasOwnProperty.call(e,A))return e[A]};return null!=(t=n(r,"if").call(null!=A?A:e.nullContext||{},null!=A?n(A,"action"):A,{name:"if",hash:{},fn:e.program(11,a,0),inverse:e.program(18,a,0),data:a,loc:{start:{line:11,column:8},end:{line:17,column:15}}}))?t:""},11:function(e,A,r,i,a){var t,n,f=null!=A?A:e.nullContext||{},l=e.hooks.helperMissing,s="function",c=e.escapeExpression,o=e.lookupProperty||function(e,A){if(Object.prototype.hasOwnProperty.call(e,A))return e[A]};return" \n '+c(typeof(n=null!=(n=o(r,"action")||(null!=A?o(A,"action"):A))?n:l)===s?n.call(f,{name:"action",hash:{},data:a,loc:{start:{line:13,column:12},end:{line:13,column:22}}}):n)+"\n \n"},12:function(e,A,r,i,a){var t,n=e.lookupProperty||function(e,A){if(Object.prototype.hasOwnProperty.call(e,A))return e[A]};return'event="'+e.escapeExpression("function"==typeof(t=null!=(t=n(r,"event")||(null!=A?n(A,"event"):A))?t:e.hooks.helperMissing)?t.call(null!=A?A:e.nullContext||{},{name:"event",hash:{},data:a,loc:{start:{line:12,column:40},end:{line:12,column:49}}}):t)+'" '},14:function(e,A,r,i,a){var t,n=e.lookupProperty||function(e,A){if(Object.prototype.hasOwnProperty.call(e,A))return e[A]};return'cond="'+e.escapeExpression("function"==typeof(t=null!=(t=n(r,"cond")||(null!=A?n(A,"cond"):A))?t:e.hooks.helperMissing)?t.call(null!=A?A:e.nullContext||{},{name:"cond",hash:{},data:a,loc:{start:{line:12,column:76},end:{line:12,column:84}}}):t)+'" '},16:function(e,A,r,i,a){var t,n=e.lookupProperty||function(e,A){if(Object.prototype.hasOwnProperty.call(e,A))return e[A]};return'type="'+e.escapeExpression("function"==typeof(t=null!=(t=n(r,"type")||(null!=A?n(A,"type"):A))?t:e.hooks.helperMissing)?t.call(null!=A?A:e.nullContext||{},{name:"type",hash:{},data:a,loc:{start:{line:12,column:111},end:{line:12,column:119}}}):t)+'" '},18:function(e,A,r,i,a){var t,n,f=null!=A?A:e.nullContext||{},l=e.lookupProperty||function(e,A){if(Object.prototype.hasOwnProperty.call(e,A))return e[A]};return" \n'},compiler:[8,">= 4.3.0"],main:function(e,A,r,i,a){var t,n=e.lookupProperty||function(e,A){if(Object.prototype.hasOwnProperty.call(e,A))return e[A]};return null!=(t=n(r,"each").call(null!=A?A:e.nullContext||{},null!=A?n(A,"states"):A,{name:"each",hash:{},fn:e.program(1,a,0),inverse:e.noop,data:a,loc:{start:{line:1,column:0},end:{line:20,column:9}}}))?t:""},usePartial:!0,useData:!0})},2270:(e,A,r)=>{var i=r(5631),a=i.template;(i.templates=i.templates||{})["scxml.template.hbs"]=a({1:function(e,A,r,i,a){var t,n=e.lookupProperty||function(e,A){if(Object.prototype.hasOwnProperty.call(e,A))return e[A]};return'initial="'+e.escapeExpression("function"==typeof(t=null!=(t=n(r,"initial")||(null!=A?n(A,"initial"):A))?t:e.hooks.helperMissing)?t.call(null!=A?A:e.nullContext||{},{name:"initial",hash:{},data:a,loc:{start:{line:2,column:71},end:{line:2,column:82}}}):t)+'" '},compiler:[8,">= 4.3.0"],main:function(e,A,r,i,a){var t,n=e.lookupProperty||function(e,A){if(Object.prototype.hasOwnProperty.call(e,A))return e[A]};return'\n\n'+(null!=(t=e.invokePartial(n(i,"scxml.states.template.hbs"),A,{name:"scxml.states.template.hbs",data:a,helpers:r,partials:i,decorators:e.decorators}))?t:"")+"\n"},usePartial:!0,useData:!0})},9184:(e,A,r)=>{const i=r(5631),a=r(467);r(3939);const t=/;|,|{| |\[/,n=/;|,|{/,f=/;|{/;function l(e,A){return e.test(A)?`"${A}"`:A}function s(e){const A={...e};return A.actions=(e.actions||[]).map((e=>{return`${A=e.type,"activity"===A?"":`${A}/ `}${e.body}`;var A})).join("\n "),A}function c(e){return(Object.prototype.hasOwnProperty.call(e,"label")||Object.prototype.hasOwnProperty.call(e,"type")&&Object.prototype.hasOwnProperty.call(e,"typeExplicitlySet")||Object.prototype.hasOwnProperty.call(e,"color")||Object.prototype.hasOwnProperty.call(e,"active"))&&(e.hasExtendedAttributes=!0),e}function o(e,A){return e.map(c).filter((e=>e.statemachine)).forEach((e=>{e.statemachine.states=o(e.statemachine.states,A)})),e.map(s)}function u(e){return(Object.prototype.hasOwnProperty.call(e,"type")||Object.prototype.hasOwnProperty.call(e,"color"))&&(e.hasExtendedAttributes=!0),e}i.registerPartial("smcat.template.hbs",i.templates["smcat.template.hbs"]),i.registerHelper("quotifyState",(e=>l(t,e))),i.registerHelper("quotifyLabel",(e=>l(f,e))),i.registerHelper("quotifyActions",(e=>l(n,e))),e.exports=e=>{return i.templates["smcat.template.hbs"]({...e,states:o(a(e.states)),transitions:(A=a(e.transitions||[]),A.map(u))});var A}},3939:(e,A,r)=>{var i=r(5631),a=i.template;(i.templates=i.templates||{})["smcat.template.hbs"]=a({1:function(e,A,r,i,a){var t,n,f,l=null!=A?A:e.nullContext||{},s=e.hooks.helperMissing,c="function",o=e.hooks.blockHelperMissing,u=e.lookupProperty||function(e,A){if(Object.prototype.hasOwnProperty.call(e,A))return e[A]},b="";return n=null!=(n=u(r,"note")||(null!=A?u(A,"note"):A))?n:s,f={name:"note",hash:{},fn:e.program(2,a,0),inverse:e.noop,data:a,loc:{start:{line:2,column:0},end:{line:4,column:9}}},t=typeof n===c?n.call(l,f):n,u(r,"note")||(t=o.call(A,t,f)),null!=t&&(b+=t),b+=null!=(t=(u(r,"quotifyState")||A&&u(A,"quotifyState")||s).call(l,null!=A?u(A,"name"):A,{name:"quotifyState",hash:{},fn:e.program(4,a,0),inverse:e.noop,data:a,loc:{start:{line:5,column:0},end:{line:5,column:40}}}))?t:"",n=null!=(n=u(r,"hasExtendedAttributes")||(null!=A?u(A,"hasExtendedAttributes"):A))?n:s,f={name:"hasExtendedAttributes",hash:{},fn:e.program(6,a,0),inverse:e.noop,data:a,loc:{start:{line:6,column:4},end:{line:6,column:234}}},t=typeof n===c?n.call(l,f):n,u(r,"hasExtendedAttributes")||(t=o.call(A,t,f)),null!=t&&(b+=t),b+=null!=(t=u(r,"if").call(l,null!=A?u(A,"actions"):A,{name:"if",hash:{},fn:e.program(16,a,0),inverse:e.noop,data:a,loc:{start:{line:7,column:4},end:{line:7,column:28}}}))?t:"",n=null!=(n=u(r,"actions")||(null!=A?u(A,"actions"):A))?n:s,f={name:"actions",hash:{},fn:e.program(18,a,0),inverse:e.noop,data:a,loc:{start:{line:7,column:28},end:{line:7,column:93}}},t=typeof n===c?n.call(l,f):n,u(r,"actions")||(t=o.call(A,t,f)),null!=t&&(b+=t),n=null!=(n=u(r,"statemachine")||(null!=A?u(A,"statemachine"):A))?n:s,f={name:"statemachine",hash:{},fn:e.program(20,a,0),inverse:e.noop,data:a,loc:{start:{line:8,column:4},end:{line:10,column:19}}},t=typeof n===c?n.call(l,f):n,u(r,"statemachine")||(t=o.call(A,t,f)),null!=t&&(b+=t),b+(null!=(t=u(r,"if").call(l,a&&u(a,"last"),{name:"if",hash:{},fn:e.program(22,a,0),inverse:e.program(24,a,0),data:a,loc:{start:{line:11,column:0},end:{line:11,column:30}}}))?t:"")+"\n"},2:function(e,A,r,i,a){var t;return"# "+(null!=(t=e.lambda(A,A))?t:"")+"\n"},4:function(e,A,r,i,a){return""},6:function(e,A,r,i,a){var t,n,f,l=null!=A?A:e.nullContext||{},s=e.hooks.helperMissing,c="function",o=e.hooks.blockHelperMissing,u=e.lookupProperty||function(e,A){if(Object.prototype.hasOwnProperty.call(e,A))return e[A]},b=" [";return n=null!=(n=u(r,"typeExplicitlySet")||(null!=A?u(A,"typeExplicitlySet"):A))?n:s,f={name:"typeExplicitlySet",hash:{},fn:e.program(7,a,0),inverse:e.noop,data:a,loc:{start:{line:6,column:32},end:{line:6,column:107}}},t=typeof n===c?n.call(l,f):n,u(r,"typeExplicitlySet")||(t=o.call(A,t,f)),null!=t&&(b+=t),n=null!=(n=u(r,"label")||(null!=A?u(A,"label"):A))?n:s,f={name:"label",hash:{},fn:e.program(10,a,0),inverse:e.noop,data:a,loc:{start:{line:6,column:107},end:{line:6,column:142}}},t=typeof n===c?n.call(l,f):n,u(r,"label")||(t=o.call(A,t,f)),null!=t&&(b+=t),n=null!=(n=u(r,"color")||(null!=A?u(A,"color"):A))?n:s,f={name:"color",hash:{},fn:e.program(12,a,0),inverse:e.noop,data:a,loc:{start:{line:6,column:142},end:{line:6,column:178}}},t=typeof n===c?n.call(l,f):n,u(r,"color")||(t=o.call(A,t,f)),null!=t&&(b+=t),b+(null!=(t=u(r,"if").call(l,null!=A?u(A,"active"):A,{name:"if",hash:{},fn:e.program(14,a,0),inverse:e.noop,data:a,loc:{start:{line:6,column:178},end:{line:6,column:206}}}))?t:"")+"]"},7:function(e,A,r,i,a){var t,n,f,l=e.lookupProperty||function(e,A){if(Object.prototype.hasOwnProperty.call(e,A))return e[A]};return n=null!=(n=l(r,"type")||(null!=A?l(A,"type"):A))?n:e.hooks.helperMissing,f={name:"type",hash:{},fn:e.program(8,a,0),inverse:e.noop,data:a,loc:{start:{line:6,column:54},end:{line:6,column:85}}},t="function"==typeof n?n.call(null!=A?A:e.nullContext||{},f):n,l(r,"type")||(t=e.hooks.blockHelperMissing.call(A,t,f)),null!=t?t:""},8:function(e,A,r,i,a){var t;return"type="+(null!=(t=e.lambda(A,A))?t:"")+" "},10:function(e,A,r,i,a){var t;return'label="'+(null!=(t=e.lambda(A,A))?t:"")+'"'},12:function(e,A,r,i,a){var t;return' color="'+(null!=(t=e.lambda(A,A))?t:"")+'"'},14:function(e,A,r,i,a){return" active"},16:function(e,A,r,i,a){return": "},18:function(e,A,r,i,a){var t,n=e.lookupProperty||function(e,A){if(Object.prototype.hasOwnProperty.call(e,A))return e[A]};return null!=(t=(n(r,"quotifyActions")||A&&n(A,"quotifyActions")||e.hooks.helperMissing).call(null!=A?A:e.nullContext||{},A,{name:"quotifyActions",hash:{},fn:e.program(4,a,0),inverse:e.noop,data:a,loc:{start:{line:7,column:40},end:{line:7,column:80}}}))?t:""},20:function(e,A,r,i,a){var t,n=e.lookupProperty||function(e,A){if(Object.prototype.hasOwnProperty.call(e,A))return e[A]};return" {\n"+(null!=(t=e.invokePartial(n(i,"smcat.template.hbs"),A,{name:"smcat.template.hbs",data:a,indent:" ",helpers:r,partials:i,decorators:e.decorators}))?t:"")+"}"},22:function(e,A,r,i,a){return";"},24:function(e,A,r,i,a){return","},26:function(e,A,r,i,a){var t,n,f,l=null!=A?A:e.nullContext||{},s=e.hooks.helperMissing,c="function",o=e.hooks.blockHelperMissing,u=e.lookupProperty||function(e,A){if(Object.prototype.hasOwnProperty.call(e,A))return e[A]},b="";return n=null!=(n=u(r,"note")||(null!=A?u(A,"note"):A))?n:s,f={name:"note",hash:{},fn:e.program(2,a,0),inverse:e.noop,data:a,loc:{start:{line:15,column:0},end:{line:17,column:9}}},t=typeof n===c?n.call(l,f):n,u(r,"note")||(t=o.call(A,t,f)),null!=t&&(b+=t),b+=(null!=(t=(u(r,"quotifyState")||A&&u(A,"quotifyState")||s).call(l,null!=A?u(A,"from"):A,{name:"quotifyState",hash:{},fn:e.program(4,a,0),inverse:e.noop,data:a,loc:{start:{line:18,column:0},end:{line:18,column:39}}}))?t:"")+" => "+(null!=(t=(u(r,"quotifyState")||A&&u(A,"quotifyState")||s).call(l,null!=A?u(A,"to"):A,{name:"quotifyState",hash:{},fn:e.program(4,a,0),inverse:e.noop,data:a,loc:{start:{line:18,column:43},end:{line:18,column:81}}}))?t:""),n=null!=(n=u(r,"hasExtendedAttributes")||(null!=A?u(A,"hasExtendedAttributes"):A))?n:s,f={name:"hasExtendedAttributes",hash:{},fn:e.program(27,a,0),inverse:e.noop,data:a,loc:{start:{line:19,column:4},end:{line:19,column:130}}},t=typeof n===c?n.call(l,f):n,u(r,"hasExtendedAttributes")||(t=o.call(A,t,f)),null!=t&&(b+=t),n=null!=(n=u(r,"label")||(null!=A?u(A,"label"):A))?n:s,f={name:"label",hash:{},fn:e.program(32,a,0),inverse:e.noop,data:a,loc:{start:{line:20,column:4},end:{line:20,column:62}}},t=typeof n===c?n.call(l,f):n,u(r,"label")||(t=o.call(A,t,f)),null!=t&&(b+=t),b+";\n"},27:function(e,A,r,i,a){var t,n,f,l=null!=A?A:e.nullContext||{},s=e.hooks.helperMissing,c="function",o=e.hooks.blockHelperMissing,u=e.lookupProperty||function(e,A){if(Object.prototype.hasOwnProperty.call(e,A))return e[A]},b=" [";return n=null!=(n=u(r,"color")||(null!=A?u(A,"color"):A))?n:s,f={name:"color",hash:{},fn:e.program(28,a,0),inverse:e.noop,data:a,loc:{start:{line:19,column:32},end:{line:19,column:68}}},t=typeof n===c?n.call(l,f):n,u(r,"color")||(t=o.call(A,t,f)),null!=t&&(b+=t),n=null!=(n=u(r,"type")||(null!=A?u(A,"type"):A))?n:s,f={name:"type",hash:{},fn:e.program(30,a,0),inverse:e.noop,data:a,loc:{start:{line:19,column:69},end:{line:19,column:102}}},t=typeof n===c?n.call(l,f):n,u(r,"type")||(t=o.call(A,t,f)),null!=t&&(b+=t),b+"]"},28:function(e,A,r,i,a){var t;return'color="'+(null!=(t=e.lambda(A,A))?t:"")+'"'},30:function(e,A,r,i,a){var t;return" type="+(null!=(t=e.lambda(A,A))?t:"")},32:function(e,A,r,i,a){var t,n=e.lookupProperty||function(e,A){if(Object.prototype.hasOwnProperty.call(e,A))return e[A]};return": "+(null!=(t=(n(r,"quotifyLabel")||A&&n(A,"quotifyLabel")||e.hooks.helperMissing).call(null!=A?A:e.nullContext||{},A,{name:"quotifyLabel",hash:{},fn:e.program(4,a,0),inverse:e.noop,data:a,loc:{start:{line:20,column:16},end:{line:20,column:52}}}))?t:"")},compiler:[8,">= 4.3.0"],main:function(e,A,r,i,a){var t,n,f,l=null!=A?A:e.nullContext||{},s=e.lookupProperty||function(e,A){if(Object.prototype.hasOwnProperty.call(e,A))return e[A]},c=(null!=(t=s(r,"each").call(l,null!=A?s(A,"states"):A,{name:"each",hash:{},fn:e.program(1,a,0),inverse:e.noop,data:a,loc:{start:{line:1,column:0},end:{line:12,column:9}}}))?t:"")+"\n";return n=null!=(n=s(r,"transitions")||(null!=A?s(A,"transitions"):A))?n:e.hooks.helperMissing,f={name:"transitions",hash:{},fn:e.program(26,a,0),inverse:e.noop,data:a,loc:{start:{line:14,column:0},end:{line:21,column:16}}},t="function"==typeof n?n.call(l,f):n,s(r,"transitions")||(t=e.hooks.blockHelperMissing.call(A,t,f)),null!=t&&(c+=t),c},usePartial:!0,useData:!0})},5309:(e,A,r)=>{const i=r(6780),a=r(7766),t=r(3047),n="function"==typeof i?i:Viz;e.exports=(e,A)=>n(t(e,A),{engine:a.getOptionValue(A,"engine")})},2375:e=>{function A(e,r=!1){let i=[];return e.filter((e=>Boolean(e.statemachine))).forEach((e=>{Object.prototype.hasOwnProperty.call(e.statemachine,"states")&&(i=i.concat(A(e.statemachine.states,!0)))})),i.concat(e.map((e=>({name:e.name,type:e.type,statemachine:Boolean(e.statemachine),hasParent:r}))))}function r(e){let A=[];return Object.prototype.hasOwnProperty.call(e,"transitions")&&(A=e.transitions),Object.prototype.hasOwnProperty.call(e,"states")&&e.states.filter((e=>Boolean(e.statemachine))).forEach((e=>{A=A.concat(r(e.statemachine))})),A}e.exports=class{constructor(e){this._flattenedStates=A(e.states||[]),this._flattenedTransitions=r(e)}get flattenedTransitions(){return this._flattenedTransitions}findStateByName(e){return this._flattenedStates.find((A=>A.name===e))}findStatesByTypes(e){return this._flattenedStates.filter((A=>e.some((e=>A.type===e))))}findExternalSelfTransitions(e){return this._flattenedTransitions.filter((A=>A.from===e&&A.to===e&&"internal"!==A.type))}findTransitionsByFrom(e){return this._flattenedTransitions.filter((A=>A.from===e))}findTransitionsByTo(e){return this._flattenedTransitions.filter((A=>A.to===e))}}},1514:(e,A,r)=>{const i=r(467),a=r(3020),t=r(2375),n=r(4851);function f(e,A,r){const a=i(e);return a.transitions&&A.length>0&&(a.transitions=function(e,A,r){return e.reduce(((e,i)=>(A.forEach(((A,a)=>{e=A===i.to&&r[A]?e.concat(r[A].map((e=>function(e,A){const r={...e,...A,from:e.from,to:A.to};var i,a;return A.action&&(r.action=(i=e.action,a=A.action,i?`${i}\n${a}`:a)),(r.event||r.cond||r.action)&&(r.label=n.formatLabel(r.event,r.cond,r.action)),r}(i,e)))):0===a?e.concat(i):e})),e)),[])}(a.transitions,A,r)),a.states=a.states.map((e=>e.statemachine?{...e,statemachine:f(e.statemachine,A,r)}:e)),a}function l(e,A){const r=i(e);return r.transitions&&(r.transitions=a(r.transitions,(e=>A.some((A=>A===e.from||A===e.to))))),r.states=a(r.states,(e=>A.some((A=>A===e.name)))).map((e=>e.statemachine?{...e,statemachine:l(e.statemachine,A)}:e)),r}e.exports=(e,A=["fork","junction","choice"])=>{const r=new t(e),i=r.findStatesByTypes(A).map((e=>e.name)),a=i.reduce(((e,A)=>(e[A]=r.findTransitionsByFrom(A),e)),{});return l(f(e,i,a),i)}},4851:e=>{e.exports={formatLabel:function(e,A,r){let i="";return e&&(i+=e),A&&(i+=` [${A}]`),r&&(i+=`/ ${r}`),i.trim()}}},5980:function(e,A){!function(e){"use strict";function A(){for(var e=arguments.length,A=Array(e),r=0;r1){A[0]=A[0].slice(0,-1);for(var i=A.length-1,a=1;a= 0x80 (not a basic code point)","invalid-input":"Invalid input"},w=Math.floor,k=String.fromCharCode;function d(e){throw new RangeError(h[e])}function v(e,A){var r=e.split("@"),i="";return r.length>1&&(i=r[0]+"@",e=r[1]),i+function(e,A){for(var r=[],i=e.length;i--;)r[i]=A(e[i]);return r}((e=e.replace(b,".")).split("."),A).join(".")}function g(e){for(var A=[],r=0,i=e.length;r=55296&&a<=56319&&r>1,e+=w(e/A);e>455;i+=c)e=w(e/35);return w(i+36*e/(e+38))},E=function(e){var A,r=[],i=e.length,a=0,t=128,n=72,f=e.lastIndexOf("-");f<0&&(f=0);for(var l=0;l=128&&d("not-basic"),r.push(e.charCodeAt(l));for(var o=f>0?f+1:0;o=i&&d("invalid-input");var k=(A=e.charCodeAt(o++))-48<10?A-22:A-65<26?A-65:A-97<26?A-97:c;(k>=c||k>w((s-a)/b))&&d("overflow"),a+=k*b;var v=h<=n?1:h>=n+26?26:h-n;if(kw(s/g)&&d("overflow"),b*=g}var m=r.length+1;n=p(a-u,m,0==u),w(a/m)>s-t&&d("overflow"),t+=w(a/m),a%=m,r.splice(a++,0,t)}return String.fromCodePoint.apply(String,r)},B=function(e){var A=[],r=(e=g(e)).length,i=128,a=0,t=72,n=!0,f=!1,l=void 0;try{for(var o,u=e[Symbol.iterator]();!(n=(o=u.next()).done);n=!0){var b=o.value;b<128&&A.push(k(b))}}catch(e){f=!0,l=e}finally{try{!n&&u.return&&u.return()}finally{if(f)throw l}}var h=A.length,v=h;for(h&&A.push("-");v=i&&Gw((s-a)/L)&&d("overflow"),a+=(E-i)*L,i=E;var Q=!0,D=!1,z=void 0;try{for(var W,Y=e[Symbol.iterator]();!(Q=(W=Y.next()).done);Q=!0){var F=W.value;if(Fs&&d("overflow"),F==i){for(var M=a,V=c;;V+=c){var N=V<=t?1:V>=t+26?26:V-t;if(M>6|192).toString(16).toUpperCase()+"%"+(63&A|128).toString(16).toUpperCase():"%"+(A>>12|224).toString(16).toUpperCase()+"%"+(A>>6&63|128).toString(16).toUpperCase()+"%"+(63&A|128).toString(16).toUpperCase()}function G(e){for(var A="",r=0,i=e.length;r=194&&a<224){if(i-r>=6){var t=parseInt(e.substr(r+4,2),16);A+=String.fromCharCode((31&a)<<6|63&t)}else A+=e.substr(r,6);r+=6}else if(a>=224){if(i-r>=9){var n=parseInt(e.substr(r+4,2),16),f=parseInt(e.substr(r+7,2),16);A+=String.fromCharCode((15&a)<<12|(63&n)<<6|63&f)}else A+=e.substr(r,9);r+=9}else A+=e.substr(r,3),r+=3}return A}function L(e,A){function r(e){var r=G(e);return r.match(A.UNRESERVED)?r:e}return e.scheme&&(e.scheme=String(e.scheme).replace(A.PCT_ENCODED,r).toLowerCase().replace(A.NOT_SCHEME,"")),void 0!==e.userinfo&&(e.userinfo=String(e.userinfo).replace(A.PCT_ENCODED,r).replace(A.NOT_USERINFO,Z).replace(A.PCT_ENCODED,a)),void 0!==e.host&&(e.host=String(e.host).replace(A.PCT_ENCODED,r).toLowerCase().replace(A.NOT_HOST,Z).replace(A.PCT_ENCODED,a)),void 0!==e.path&&(e.path=String(e.path).replace(A.PCT_ENCODED,r).replace(e.scheme?A.NOT_PATH:A.NOT_PATH_NOSCHEME,Z).replace(A.PCT_ENCODED,a)),void 0!==e.query&&(e.query=String(e.query).replace(A.PCT_ENCODED,r).replace(A.NOT_QUERY,Z).replace(A.PCT_ENCODED,a)),void 0!==e.fragment&&(e.fragment=String(e.fragment).replace(A.PCT_ENCODED,r).replace(A.NOT_FRAGMENT,Z).replace(A.PCT_ENCODED,a)),e}function Q(e){return e.replace(/^0*(.*)/,"$1")||"0"}function D(e,A){var r=e.match(A.IPV4ADDRESS)||[],i=l(r,2)[1];return i?i.split(".").map(Q).join("."):e}function z(e,A){var r=e.match(A.IPV6ADDRESS)||[],i=l(r,3),a=i[1],t=i[2];if(a){for(var n=a.toLowerCase().split("::").reverse(),f=l(n,2),s=f[0],c=f[1],o=c?c.split(":").map(Q):[],u=s.split(":").map(Q),b=A.IPV4ADDRESS.test(u[u.length-1]),h=b?7:8,w=u.length-h,k=Array(h),d=0;d1){var m=k.slice(0,v.index),p=k.slice(v.index+v.length);g=m.join(":")+"::"+p.join(":")}else g=k.join(":");return t&&(g+="%"+t),g}return e}var W=/^(?:([^:\/?#]+):)?(?:\/\/((?:([^\/?#@]*)@)?(\[[^\/?#\]]+\]|[^\/?#:]*)(?:\:(\d*))?))?([^?#]*)(?:\?([^#]*))?(?:#((?:.|\n|\r)*))?/i,Y=void 0==="".match(/(){0}/)[1];function F(e){var A=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r={},i=!1!==A.iri?f:n;"suffix"===A.reference&&(e=(A.scheme?A.scheme+":":"")+"//"+e);var a=e.match(W);if(a){Y?(r.scheme=a[1],r.userinfo=a[3],r.host=a[4],r.port=parseInt(a[5],10),r.path=a[6]||"",r.query=a[7],r.fragment=a[8],isNaN(r.port)&&(r.port=a[5])):(r.scheme=a[1]||void 0,r.userinfo=-1!==e.indexOf("@")?a[3]:void 0,r.host=-1!==e.indexOf("//")?a[4]:void 0,r.port=parseInt(a[5],10),r.path=a[6]||"",r.query=-1!==e.indexOf("?")?a[7]:void 0,r.fragment=-1!==e.indexOf("#")?a[8]:void 0,isNaN(r.port)&&(r.port=e.match(/\/\/(?:.|\n)*\:(?:\/|\?|\#|$)/)?a[4]:void 0)),r.host&&(r.host=z(D(r.host,i),i)),void 0!==r.scheme||void 0!==r.userinfo||void 0!==r.host||void 0!==r.port||r.path||void 0!==r.query?void 0===r.scheme?r.reference="relative":void 0===r.fragment?r.reference="absolute":r.reference="uri":r.reference="same-document",A.reference&&"suffix"!==A.reference&&A.reference!==r.reference&&(r.error=r.error||"URI is not a "+A.reference+" reference.");var t=I[(A.scheme||r.scheme||"").toLowerCase()];if(A.unicodeSupport||t&&t.unicodeSupport)L(r,i);else{if(r.host&&(A.domainHost||t&&t.domainHost))try{r.host=y(r.host.replace(i.PCT_ENCODED,G).toLowerCase())}catch(e){r.error=r.error||"Host's domain name can not be converted to ASCII via punycode: "+e}L(r,n)}t&&t.parse&&t.parse(r,A)}else r.error=r.error||"URI can not be parsed.";return r}function M(e,A){var r=!1!==A.iri?f:n,i=[];return void 0!==e.userinfo&&(i.push(e.userinfo),i.push("@")),void 0!==e.host&&i.push(z(D(String(e.host),r),r).replace(r.IPV6ADDRESS,(function(e,A,r){return"["+A+(r?"%25"+r:"")+"]"}))),"number"!=typeof e.port&&"string"!=typeof e.port||(i.push(":"),i.push(String(e.port))),i.length?i.join(""):void 0}var V=/^\.\.?\//,N=/^\/\.(\/|$)/,R=/^\/\.\.(\/|$)/,x=/^\/?(?:.|\n)*?(?=\/|$)/;function J(e){for(var A=[];e.length;)if(e.match(V))e=e.replace(V,"");else if(e.match(N))e=e.replace(N,"/");else if(e.match(R))e=e.replace(R,"/"),A.pop();else if("."===e||".."===e)e="";else{var r=e.match(x);if(!r)throw new Error("Unexpected dot segment condition");var i=r[0];e=e.slice(i.length),A.push(i)}return A.join("")}function H(e){var A=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=A.iri?f:n,i=[],a=I[(A.scheme||e.scheme||"").toLowerCase()];if(a&&a.serialize&&a.serialize(e,A),e.host)if(r.IPV6ADDRESS.test(e.host));else if(A.domainHost||a&&a.domainHost)try{e.host=A.iri?C(e.host):y(e.host.replace(r.PCT_ENCODED,G).toLowerCase())}catch(r){e.error=e.error||"Host's domain name can not be converted to "+(A.iri?"Unicode":"ASCII")+" via punycode: "+r}L(e,r),"suffix"!==A.reference&&e.scheme&&(i.push(e.scheme),i.push(":"));var t=M(e,A);if(void 0!==t&&("suffix"!==A.reference&&i.push("//"),i.push(t),e.path&&"/"!==e.path.charAt(0)&&i.push("/")),void 0!==e.path){var l=e.path;A.absolutePath||a&&a.absolutePath||(l=J(l)),void 0===t&&(l=l.replace(/^\/\//,"/%2F")),i.push(l)}return void 0!==e.query&&(i.push("?"),i.push(e.query)),void 0!==e.fragment&&(i.push("#"),i.push(e.fragment)),i.join("")}function P(e,A){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},i={};return arguments[3]||(e=F(H(e,r),r),A=F(H(A,r),r)),!(r=r||{}).tolerant&&A.scheme?(i.scheme=A.scheme,i.userinfo=A.userinfo,i.host=A.host,i.port=A.port,i.path=J(A.path||""),i.query=A.query):(void 0!==A.userinfo||void 0!==A.host||void 0!==A.port?(i.userinfo=A.userinfo,i.host=A.host,i.port=A.port,i.path=J(A.path||""),i.query=A.query):(A.path?("/"===A.path.charAt(0)?i.path=J(A.path):(void 0===e.userinfo&&void 0===e.host&&void 0===e.port||e.path?e.path?i.path=e.path.slice(0,e.path.lastIndexOf("/")+1)+A.path:i.path=A.path:i.path="/"+A.path,i.path=J(i.path)),i.query=A.query):(i.path=e.path,void 0!==A.query?i.query=A.query:i.query=e.query),i.userinfo=e.userinfo,i.host=e.host,i.port=e.port),i.scheme=e.scheme),i.fragment=A.fragment,i}function X(e,A){return e&&e.toString().replace(A&&A.iri?f.PCT_ENCODED:n.PCT_ENCODED,G)}var S={scheme:"http",domainHost:!0,parse:function(e,A){return e.host||(e.error=e.error||"HTTP URIs must have a host."),e},serialize:function(e,A){var r="https"===String(e.scheme).toLowerCase();return e.port!==(r?443:80)&&""!==e.port||(e.port=void 0),e.path||(e.path="/"),e}},j={scheme:"https",domainHost:S.domainHost,parse:S.parse,serialize:S.serialize};function U(e){return"boolean"==typeof e.secure?e.secure:"wss"===String(e.scheme).toLowerCase()}var T={scheme:"ws",domainHost:!0,parse:function(e,A){var r=e;return r.secure=U(r),r.resourceName=(r.path||"/")+(r.query?"?"+r.query:""),r.path=void 0,r.query=void 0,r},serialize:function(e,A){if(e.port!==(U(e)?443:80)&&""!==e.port||(e.port=void 0),"boolean"==typeof e.secure&&(e.scheme=e.secure?"wss":"ws",e.secure=void 0),e.resourceName){var r=e.resourceName.split("?"),i=l(r,2),a=i[0],t=i[1];e.path=a&&"/"!==a?a:void 0,e.query=t,e.resourceName=void 0}return e.fragment=void 0,e}},O={scheme:"wss",domainHost:T.domainHost,parse:T.parse,serialize:T.serialize},_={},q="[A-Za-z0-9\\-\\.\\_\\~\\xA0-\\u200D\\u2010-\\u2029\\u202F-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]",K="[0-9A-Fa-f]",$=r(r("%[EFef][0-9A-Fa-f]%"+K+K+"%"+K+K)+"|"+r("%[89A-Fa-f][0-9A-Fa-f]%"+K+K)+"|"+r("%"+K+K)),ee=A("[\\!\\$\\%\\'\\(\\)\\*\\+\\,\\-\\.0-9\\<\\>A-Z\\x5E-\\x7E]",'[\\"\\\\]'),Ae=new RegExp(q,"g"),re=new RegExp($,"g"),ie=new RegExp(A("[^]","[A-Za-z0-9\\!\\$\\%\\'\\*\\+\\-\\^\\_\\`\\{\\|\\}\\~]","[\\.]",'[\\"]',ee),"g"),ae=new RegExp(A("[^]",q,"[\\!\\$\\'\\(\\)\\*\\+\\,\\;\\:\\@]"),"g"),te=ae;function ne(e){var A=G(e);return A.match(Ae)?A:e}var fe={scheme:"mailto",parse:function(e,A){var r=e,i=r.to=r.path?r.path.split(","):[];if(r.path=void 0,r.query){for(var a=!1,t={},n=r.query.split("&"),f=0,l=n.length;f\n\n'});return"png-image-element"==t?i.svgXmlToPngImageElement(a(e,"svg",n,l,s),f):a(e,t,n,l,s)}function a(A,i,a,t,n){var f,l=function(A){A=void 0!==(A=A||{})?A:{};var i,a={};for(i in A)A.hasOwnProperty(i)&&(a[i]=A[i]);A.arguments=[],A.thisProgram="./this.program",A.quit=function(e,A){throw A},A.preRun=[],A.postRun=[];var t,n,f=!1,l=!1,s=!1,c=!1;if(A.ENVIRONMENT)if("WEB"===A.ENVIRONMENT)f=!0;else if("WORKER"===A.ENVIRONMENT)l=!0;else if("NODE"===A.ENVIRONMENT)s=!0;else{if("SHELL"!==A.ENVIRONMENT)throw new Error("Module['ENVIRONMENT'] value is not valid. must be one of: WEB|WORKER|NODE|SHELL.");c=!0}else f="object"==typeof window,l="function"==typeof importScripts,s="object"==typeof process&&!f&&!l,c=!f&&!s&&!l;for(i in s?(A.read=function(e,A){var i;return(i=UA(e))||(t||(t=r(5747)),n||(n=r(5622)),e=n.normalize(e),i=t.readFileSync(e)),A?i:i.toString()},A.readBinary=function(e){var r=A.read(e,!0);return r.buffer||(r=new Uint8Array(r)),v(r.buffer),r},process.argv.length>1&&(A.thisProgram=process.argv[1].replace(/\\/g,"/")),A.arguments=process.argv.slice(2),e.exports=A,process.on("uncaughtException",(function(e){if(!(e instanceof Lr))throw e})),process.on("unhandledRejection",(function(e,A){process.exit(1)})),A.inspect=function(){return"[Emscripten Module object]"}):c?("undefined"!=typeof read&&(A.read=function(e){var A=UA(e);return A?XA(A):read(e)}),A.readBinary=function(e){var A;return(A=UA(e))?A:"function"==typeof readbuffer?new Uint8Array(readbuffer(e)):(v("object"==typeof(A=read(e,"binary"))),A)},"undefined"!=typeof scriptArgs?A.arguments=scriptArgs:void 0!==arguments&&(A.arguments=arguments),"function"==typeof quit&&(A.quit=function(e,A){quit(e)})):(f||l)&&(A.read=function(e){try{var A=new XMLHttpRequest;return A.open("GET",e,!1),A.send(null),A.responseText}catch(A){var r=UA(e);if(r)return XA(r);throw A}},l&&(A.readBinary=function(e){try{var A=new XMLHttpRequest;return A.open("GET",e,!1),A.responseType="arraybuffer",A.send(null),new Uint8Array(A.response)}catch(A){var r=UA(e);if(r)return r;throw A}}),A.readAsync=function(e,A,r){var i=new XMLHttpRequest;i.open("GET",e,!0),i.responseType="arraybuffer",i.onload=function(){if(200==i.status||0==i.status&&i.response)A(i.response);else{var a=UA(e);a?A(a.buffer):r()}},i.onerror=r,i.send(null)},void 0!==arguments&&(A.arguments=arguments),A.setWindowTitle=function(e){document.title=e}),A.print="undefined"!=typeof console?console.log:"undefined"!=typeof print?print:null,A.printErr="undefined"!=typeof printErr?printErr:"undefined"!=typeof console&&console.warn||A.print,A.print=A.print,A.printErr=A.printErr,a)a.hasOwnProperty(i)&&(A[i]=a[i]);a=void 0;var o=16;function u(e){v(!j);var A=S;return S=S+e+15&-16,A}function b(e){v(q);var A=H[q>>2],r=A+e+15&-16;return H[q>>2]=r,r>=ie&&!Ae()?(H[q>>2]=A,0):A}function h(e,A){return A||(A=o),Math.ceil(e/A)*A}function w(e){switch(e){case"i1":case"i8":return 1;case"i16":return 2;case"i32":return 4;case"i64":return 8;case"float":return 4;case"double":return 8;default:if("*"===e[e.length-1])return 4;if("i"===e[0]){var A=parseInt(e.substr(1));return v(A%8==0),A/8}return 0}}new Array(0);var k=8,d=0;function v(e,A){e||zr("Assertion failed: "+A)}function g(e){var r=A["_"+e];return v(r,"Cannot call unknown function "+e+", make sure it is exported"),r}var m={stackSave:function(){Br()},stackRestore:function(){Er()},arrayToC:function(e){var A=pr(e.length);return ge(e,A),A},stringToC:function(e){var A=0;if(null!=e&&0!==e){var r=1+(e.length<<2);z(e,A=pr(r),r)}return A}},p={string:m.stringToC,array:m.arrayToC};function E(e,A,r,i,a){var t=g(e),n=[],f=0;if(i)for(var l=0;l>0]=A;break;case"i16":J[e>>1]=A;break;case"i32":H[e>>2]=A;break;case"i64":tempI64=[A>>>0,(tempDouble=A,+pe(tempDouble)>=1?tempDouble>0?(0|Ie(+ye(tempDouble/4294967296),4294967295))>>>0:~~+Be((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],H[e>>2]=tempI64[0],H[e+4>>2]=tempI64[1];break;case"float":P[e>>2]=A;break;case"double":X[e>>3]=A;break;default:zr("invalid type for setValue: "+r)}}var y=2,C=4;function I(e,A,r,i){var a,t;"number"==typeof e?(a=!0,t=e):(a=!1,t=e.length);var n,f="string"==typeof A?A:null;if(n=r==C?i:["function"==typeof vr?vr:u,pr,u,b][void 0===r?y:r](Math.max(t,f?1:A.length)),a){var l;for(i=n,v(0==(3&n)),l=n+(-4&t);i>2]=0;for(l=n+t;i>0]=0;return n}if("i8"===f)return e.subarray||e.slice?x.set(e,n):x.set(new Uint8Array(e),n),n;for(var s,c,o,h=0;h>0],(0!=r||A)&&(a++,!A||a!=A););A||(A=a);var t="";if(i<128){for(var n,f=1024;A>0;)n=String.fromCharCode.apply(String,x.subarray(e,e+Math.min(A,f))),t=t?t+n:n,e+=f,A-=f;return t}return Q(e)}var G="undefined"!=typeof TextDecoder?new TextDecoder("utf8"):void 0;function L(e,A){for(var r=A;e[r];)++r;if(r-A>16&&e.subarray&&G)return G.decode(e.subarray(A,r));for(var i,a,t,n,f,l="";;){if(!(i=e[A++]))return l;if(128&i)if(a=63&e[A++],192!=(224&i))if(t=63&e[A++],224==(240&i)?i=(15&i)<<12|a<<6|t:(n=63&e[A++],240==(248&i)?i=(7&i)<<18|a<<12|t<<6|n:(f=63&e[A++],i=248==(252&i)?(3&i)<<24|a<<18|t<<12|n<<6|f:(1&i)<<30|a<<24|t<<18|n<<12|f<<6|63&e[A++])),i<65536)l+=String.fromCharCode(i);else{var s=i-65536;l+=String.fromCharCode(55296|s>>10,56320|1023&s)}else l+=String.fromCharCode((31&i)<<6|a);else l+=String.fromCharCode(i)}}function Q(e){return L(x,e)}function D(e,A,r,i){if(!(i>0))return 0;for(var a=r,t=r+i-1,n=0;n=55296&&f<=57343&&(f=65536+((1023&f)<<10)|1023&e.charCodeAt(++n)),f<=127){if(r>=t)break;A[r++]=f}else if(f<=2047){if(r+1>=t)break;A[r++]=192|f>>6,A[r++]=128|63&f}else if(f<=65535){if(r+2>=t)break;A[r++]=224|f>>12,A[r++]=128|f>>6&63,A[r++]=128|63&f}else if(f<=2097151){if(r+3>=t)break;A[r++]=240|f>>18,A[r++]=128|f>>12&63,A[r++]=128|f>>6&63,A[r++]=128|63&f}else if(f<=67108863){if(r+4>=t)break;A[r++]=248|f>>24,A[r++]=128|f>>18&63,A[r++]=128|f>>12&63,A[r++]=128|f>>6&63,A[r++]=128|63&f}else{if(r+5>=t)break;A[r++]=252|f>>30,A[r++]=128|f>>24&63,A[r++]=128|f>>18&63,A[r++]=128|f>>12&63,A[r++]=128|f>>6&63,A[r++]=128|63&f}}return A[r]=0,r-a}function z(e,A,r){return D(e,x,A,r)}function W(e){for(var A=0,r=0;r=55296&&i<=57343&&(i=65536+((1023&i)<<10)|1023&e.charCodeAt(++r)),i<=127?++A:A+=i<=2047?2:i<=65535?3:i<=2097151?4:i<=67108863?5:6}return A}function Y(e){var A=W(e)+1,r=vr(A);return r&&D(e,R,r,A),r}function F(e){return e.replace(/__Z[\w\d_]+/g,(function(e){return e==e?e:e+" ["+e+"]"}))}function M(){var e=new Error;if(!e.stack){try{throw new Error(0)}catch(A){e=A}if(!e.stack)return"(no stack trace available)"}return e.stack.toString()}function V(){var e=M();return A.extraStackTrace&&(e+="\n"+A.extraStackTrace()),F(e)}"undefined"!=typeof TextDecoder&&new TextDecoder("utf-16le");var N,R,x,J,H,P,X,S,j,U,T,O,_,q,K=16384;function $(){A.HEAP8=R=new Int8Array(N),A.HEAP16=J=new Int16Array(N),A.HEAP32=H=new Int32Array(N),A.HEAPU8=x=new Uint8Array(N),A.HEAPU16=new Uint16Array(N),A.HEAPU32=new Uint32Array(N),A.HEAPF32=P=new Float32Array(N),A.HEAPF64=X=new Float64Array(N)}function ee(){zr("Cannot enlarge memory arrays. Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value "+ie+", (2) compile with -s ALLOW_MEMORY_GROWTH=1 which allows increasing the size at runtime but prevents some optimizations, (3) set Module.TOTAL_MEMORY to a higher value before the program runs, or (4) if you want malloc to return NULL (0) instead of this abort, compile with -s ABORTING_MALLOC=0 ")}function Ae(){ee()}S=U=T=O=_=q=0,j=!1;var re=A.TOTAL_STACK||5242880,ie=A.TOTAL_MEMORY||16777216;function ae(){return ie}if(ie0;){var r=e.shift();if("function"!=typeof r){var i=r.func;"number"==typeof i?void 0===r.arg?A.dynCall_v(i):A.dynCall_vi(i,r.arg):i(void 0===r.arg?null:r.arg)}else r()}}var ne=[],fe=[],le=[],se=[],ce=[],oe=!1;function ue(){if(A.preRun)for("function"==typeof A.preRun&&(A.preRun=[A.preRun]);A.preRun.length;)de(A.preRun.shift());te(ne)}function be(){oe||(oe=!0,te(fe))}function he(){te(le)}function we(){te(se)}function ke(){if(A.postRun)for("function"==typeof A.postRun&&(A.postRun=[A.postRun]);A.postRun.length;)ve(A.postRun.shift());te(ce)}function de(e){ne.unshift(e)}function ve(e){ce.unshift(e)}function ge(e,A){R.set(e,A)}function me(e,A,r){for(var i=0;i>0]=e.charCodeAt(i);r||(R[A>>0]=0)}Math.imul&&-5===Math.imul(4294967295,5)||(Math.imul=function(e,A){var r=65535&e,i=65535&A;return r*i+((e>>>16)*i+r*(A>>>16)<<16)|0}),Math.imul=Math.imul,Math.clz32||(Math.clz32=function(e){e>>>=0;for(var A=0;A<32;A++)if(e&1<<31-A)return A;return 32}),Math.clz32=Math.clz32,Math.trunc||(Math.trunc=function(e){return e<0?Math.ceil(e):Math.floor(e)}),Math.trunc=Math.trunc;var pe=Math.abs,Ee=(Math.cos,Math.sin,Math.tan,Math.acos,Math.asin,Math.atan,Math.atan2,Math.exp,Math.log,Math.sqrt),Be=Math.ceil,ye=Math.floor,Ce=Math.pow,Ie=(Math.imul,Math.fround,Math.round,Math.min),Ze=(Math.max,Math.clz32,Math.trunc,0),Ge=null,Le=null;function Qe(e){Ze++,A.monitorRunDependencies&&A.monitorRunDependencies(Ze)}function De(e){if(Ze--,A.monitorRunDependencies&&A.monitorRunDependencies(Ze),0==Ze&&(null!==Ge&&(clearInterval(Ge),Ge=null),Le)){var r=Le;Le=null,r()}}A.preloadedImages={},A.preloadedAudios={};var ze=null,We="data:application/octet-stream;base64,";function Ye(e){return String.prototype.startsWith?e.startsWith(We):0===e.indexOf(We)}var Fe=[function(e,A){var r=Z(e),i=Z(A);eA.createPath("/",Te.dirname(r)),eA.writeFile(Te.join("/",r),i)}];function Me(e,A,r){return Fe[e](A,r)}S=k+197232,fe.push(),ze="data:application/octet-stream;base64,AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/ACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAIMEAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABSQAAAAAAAAFJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFJAAAAAAAAAUkAAIMEAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABSQAAAAAAAAFJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFJAAAAAAAAAUkACEAAAAAAAAAAAAAAAABBAoC8AAAgAAAABAAAAAAAAAAIQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICWQAAAAAAAgJZABJDDAAAAAAAAAAAAAAAQQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWEAAAAAAAABYQAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABYQAAAAAAAAFhAAAAAAAAAAAAAAAAAAAAQQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUkAAAAAAAABSQAAgAwIAAAAAAAAAAAAAEEAAAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAABCQAAAAAAAAEJAAAAAAAAgg0AAAAAAAMCIQAAAAAAAAFJAAAAAAAAAUkAAAAAAAAAAAAAAAAAAAEJAAAAAAAAAQkAAAAAAACCDQAAAAAAAwIhAAAAAAAAAUkAAAAAAAABSQACwwQAAAAAAAAAAAAAAEEBANgAAkwAAAAEAAAAAAAAAQAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFJAAAAAAAAAUkAAEAACAAAAAAAAAAAAABBAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABYQAAAAAAAAFhAALDBAAAAAAAAAAAAAAAAABw6AAAQAAAAAQAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWEAAAAAAAABYQEAgPgMAAAAAAAAAAAAAEEAkOwAAegAAAAEAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFJAAAAAAAAAUkAAAAAAAAAAAAAAAAAAABBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABSQAAAAAAAAFJA////////73/////////vf////////+//////////7/8AAAAAAAD4PzMzMzMzM9M/PAAAAAAAAACamZmZmZmpPwEAAAAAAAAAAQAAAAAAAAAAAAAAAADwPwEAAAAAAAAAAgAAAAAAAAAAAAAAAADwPwIAAAAAAAAAAwAAAAAAAAAAAAAAAADgPwMAAAAAAAAABAAAAAAAAAAAAAAAAADwPwQAAAAAAAAABQAAAAAAAAAzMzMzMzPzPwUAAAAAAAAABgAAAAAAAACamZmZmZnpPwYAAAAAAAAABwAAAAAAAAAAAAAAAADwPwcAAAAAAAAACAAAAAAAAAAAAAAAAADgPwgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAMzMzMzMz078AAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAgEZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAmpmZmZmZ2b8AAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzMzMzMzPjPwAAAAAAAAAAAAAAAAEAAAAFAAAAAAAAAAAAAAAAAAAAexSuR+F65L8AAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAEAAAATAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABr4VQAAAQAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAADAAAAAAAAAAAAAAAAgGZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAgGZAmpmZmZmZ2b8AAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAFAAAAAAAAAAAAAAAAgGZAexSuR+F65L8AAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAgEZAAAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAQAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABIAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABYAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABkAAAAAAAAAAAEAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwVQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAAAAQAAAAAAAAAAAAAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAA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YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8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AQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAACAAAAAwAAAAEAAAABAAAAAgAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAIAAAABAAAABAAAAAUAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAAGAAAAAQAAAAEAAAAHAAAACAAAAAkAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAAAQAAAAEAAAALAAAAAQAAAAwAAAABAAAADQAAAA4AAAAPAAAAEAAAABEAAAASAAAAEwAAABQAAAAVAAAAFgAAABMAAAATAAAAEwAAABMAAAAXAAAAGAAAABkAAAATAAAAGgAAABsAAAAcAAAAHQAAABMAAAATAAAAEwAAABMAAAATAAAAAQAAAB4AAAABAAAAAQAAABMAAAABAAAAHwAAACAAAAAhAAAAIgAAACMAAAATAAAAJAAAACUAAAAmAAAAEwAAABMAAAATAAAAEwAAACcAAAAoAAAAKQAAABMAAAAqAAAAKwAAACwAAAAtAAAAEwAAABMAAAATAAAAEwAAABMAAAABAAAAAQAAAAEAAAABAAAAAQAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAALgAAABMAAAATAAAAEwAAAC8AAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAA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Ag4LDxwYGBgYGBgWFhYWFhYWFhYWFhYWFhYWFhYWFhQcBBwWHBgYGBgYGBYWFhYWFhYWFhYWFhYWFhYWFhYWHCQcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwWHBwcHBwcHBwcHBYcGhwcFhwcHBwcFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYcFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhwWFhYWFhYWFgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//////////////////////////////////////////8AAAAAAAAABP7//4f+//8HAAAAAAAAAAD//3////9///////////N//v3//////3///////////w/g/////zH8////AAAAAAAAAP//////////////AQD4AwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQNf///v/////f39U/f8PAP7f///////////+3/////8DAP///////58Z////zz8DAAAAAAAA/v///38C/v///38AAAAAAAAAAAD///8HBwAAAAAA/v//B/4HAAAAAP7//////////3z/fy8AYAAAAOD///////8jAAAA/wMAAADgn/n///3FAwAAALADAAMA4If5///9bQMAAABeAAAcAOCv+////e0jAAAAAAEAAADgn/n///3NIwAAALADAAAA4Mc91hjHvwMAAAAAAAAAAODf/f///e8DAAAAAAMAAADg3/3///3vAwAAAEADAAAA4N/9///9/wMAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAD+/////38NAD8AAAAAAAAAliXw/q5sDSAfAAAAAAAAAAAAAAAAAAAA//7///8DAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/////PwD/////fwDt2gcAAAAAUAFQMYKrYiwAAAAAQADJgPUHAAAAAAgBAv////////////////////////8P//////////////8D//8/P/////8/P/+q////P////////99f3B/PD/8f3B8AAAAAQEwAAAAAAAAAAAAABwAAAAAAAAAAAAAAAAAAAIAAAAD+AwAA/v///////////x8A/v////////////8H4P////8fAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//////////////////////////z8AAAAAAAAAAAAAAP//////////////////////////DwAAAAAAAAAAAAAAAAAAAABg/wf+//+H/v//BwAAAAAAAIAA//9/////f/////8AAAAAAAAA//////////////8BAPgDAAMAAAAAAP//////////PwAAAAMAAADA1///+/////9/f1T9/w8A/t////////////7f/////3sA////////nxn////PPwMAAAAAAAD+////fwL+////fwD+//v//7sWAP///wcHAAAAAAD+//8H//8HAP8D////////////fP9/7///Pf8D7v////////P/Px7/z/8AAO6f+f///cXTnzmAsM//AwDkh/n///1t04c5AF7A/x8A7q/7///97fO/OwAAwf8AAO6f+f///c3zjznAsMP/AADsxz3WGMe/w8c9gACA/wAA7t/9///978PfPWAAw/8AAOzf/f///e/D3z1gQMP/AADs3/3///3/w889gADD/wAAAAAAAAAAAAAAAAAAAAAAAP7/////f/8H/3//AwAAAACWJfD+rmz/O18//wMAAAAAAAAAA/8DoML//v///wP+/98Pv/7/P/4CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8fAgAAAKAAAAD+/z4A/v///////////x9m/v////////////93GQAAABoAAAAbAAAAHAAAAB0AAAAeAAAAHwAAACgAAAApAAAAIAAAACoAAAAMAAAAGQAAACEAAAAGAAAABwAAAAEAAAABAAAAAAAAAAAAAAAAFQoAABUAAAAAAAAAAAAAAAAAAAAAAAAVEAwTHB4DDR8gISIjGxoRGRkZGRkZGRkZGRYSAg4LDxwYGBgYGBgWFhYWFhYWFhYWFhYWFhYWFhYWFhQcBBwWHBgYGBgYGBYWFhYWFhYWFhYWFhYWFhYWFhYWHCQcHBwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUGBgYGBgYGBgYGBgYGBgYGBwcHBwcAAAAAAAAAAAABASsAAAAsAAAALQAAAC4AAAAvAAAALQAAADAAAAAxAAAAMgAAABkAAAAaAAAAGwAAABwAAAAdAAAAHgAAAB8AAAAoAAAAKQAAACAAAAAqAAAADAAAABkAAAAhAAAABgAAAAcAAAABAAAAAQAAAAAAAAAAAAAAABUKAAAJAAAAAAAAAAAAAAAAAAAAAAAAFRAMExweAw0fICEiIxsaERkZGRkZGRkZGRkWEgIOCw8cGBgYGBgYFhYWFhYWFhYWFhYWFhYWFhYWFhYUHAQcFhwYGBgYGBgWFhYWFhYWFhYWFhYWFhYWFhYWFhwkHBwcCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBgYGBgYGBgYGBgYGBgYGBgcHBwcHAAAAAAAAAAAAAQErAAAALAAAAC0AAAAuAAAALwAAAC0AAAAwAAAAMQAAADIAAAAA3QAAYOYAANjkAADM5wAAzOcAADjpAADY5AAAGQAAABoAAAAbAAAAHAAAAB0AAAAeAAAAHwAAACgAAAApAAAAIAAAACoAAAAMAAAAGQAAACEAAAAIAAAABQAAAAEAAAABAAAAAAAAAAAAAAAAFQoAAAkAAAAAAAAAAAAAAAAAAAAAAAAVEAwTHB4DDR8gISIjGxoRGRkZGRkZGRkZGRYSAg4LDxwYGBgYGBgWFhYWFhYWFhYWFhYWFhYWFhYWFhQcBBwWHBgYGBgYGBYWFhYWFhYWFhYWFhYWFhYWFhYWHCQcHBwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACIAAAAjAAAAJAAAACUAAAAmAAAAJwAAACgAAAAzAAAANAAAACkAAAA1AAAADQAAABoAAAAqAAAACQAAAAoAAAACAAAAAAAAAAAAAAAAAAAAABUKAAAJAAAAAAAAAAAAAAAAAAAAAAAAFRAMExweAw0fICEiIxsaERkZGRkZGRkZGRkWEgIOCw8cGBgYGBgYFhYWFhYWFhYWFhYWFhYWFhYWFhYUHAQcFhwYGBgYGBgWFhYWFhYWFhYWFhYWFhYWFhYWFhwkHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcFhwcHBwcHBwcHBwWHBocHBYcHBwcHBYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWHBYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYcFhYWFhYWFhYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAArAAAALAAAAC0AAAAuAAAALwAAADAAAAAxAAAANgAAADcAAAAyAAAAOAAAAA4AAAAbAAAAMwAAAAsAAAAMAAAAAgAAAAABAAAAAAAAAAAAAAAVCgAACQAAAAAAAAAAAAAAAAAAAAAAABUQDBMcHgMNHyAhIiMbGhEZGRkZGRkZGRkZFhICDgsPHBgYGBgYGBYWFhYWFhYWFhYWFhYWFhYWFhYWFBwEHBYcGBgYGBgYFhYWFhYWFhYWFhYWFhYWFhYWFhYcJBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBYcHBwcHBwcHBwcFhwaHBwWHBwcHBwWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhwWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWHBYWFhYWFhYWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAz40BALIzAgBTjgEAuzMCAMIzAgDLMwIAGQAAABoAAAAbAAAAHAAAAB0AAAAeAAAAHwAAACgAAAApAAAAIAAAACoAAAAMAAAAGQAAACEAAAAGAAAABwAAAAEAAAABAAAAAAAAAAAAAAAAFQoAABUAAAAAAAAAAAAAAAAAAAAAAAAVEAwTHB4DDR8gISIjGxoRGRkZGRkZGRkZGRcSAg4LDxwYGBgYGBgWFhYWFhYWFhYWFhYWFhYWFhYWFhQcBBwWHBgYGBgYGBYWFhYWFhYWFhYWFhYWFhYWFhYWHCQcHBwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUGBgYGBgYGBgYGBgYGBgYGBwcHBwcAAAAAAAAAAAABASsAAAAsAAAALQAAAC4AAAAvAAAALQAAADAAAAAxAAAAMgAAAETsAACw7QAAHO8AAIjwAACI8AAA9PEAABzvAAAZAAAAGgAAABsAAAAcAAAAHQAAAB4AAAAfAAAAKAAAACkAAAAgAAAAKgAAAAwAAAAZAAAAIQAAAAQAAAAFAAAAAQAAAAAAAAAAAAAAAAAAAAAVCgAACQAAAAAAAAAAAAAAAAAAAAAAABUQDBMcHgMNHyAhIiMbGhEZGRkZGRkZGRkZFxICDgsPHBgYGBgYGBYWFhYWFhYWFhYWFhYWFhYWFhYWFBwEHBYcGBgYGBgYFhYWFhYWFhYWFhYWFhYWFhYWFhYcJBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBYcHBwcHBwcHBwcFhwaHBwWHBwcHBwWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhwWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWHBYWFhYWFhYWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGQAAABoAAAAbAAAAHAAAAB0AAAAeAAAAHwAAACgAAAApAAAAIAAAACoAAAAMAAAAGQAAACEAAAAIAAAABQAAAAEAAAABAAAAAAAAAAAAAAAAFQoAAAkAAAAAAAAAAAAAAAAAAAAAAAAVEAwTHB4DDR8gISIjGxoRGRkZGRkZGRkZGRcSAg4LDxwYGBgYGBgWFhYWFhYWFhYWFhYWFhYWFhYWFhQcBBwWHBgYGBgYGBYWFhYWFhYWFhYWFhYWFhYWFhYWHCQcHBwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABkAAAAaAAAAGwAAABwAAAAdAAAAHgAAAB8AAAAoAAAAKQAAACAAAAAqAAAADAAAABkAAAAhAAAABgAAAAcAAAABAAAAAQAAAAAAAAAAAAAAABUKAAAJAAAAAAAAAAAAAAAAAAAAAAAAFRAMExweAw0fICEiIxsaERkZGRkZGRkZGRkXEgIOCw8cGBgYGBgYFhYWFhYWFhYWFhYWFhYWFhYWFhYUHAQcFhwYGBgYGBgWFhYWFhYWFhYWFhYWFhYWFhYWFhwkHBwcCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBgYGBgYGBgYGBgYGBgYGBgcHBwcHAAAAAAAAAAAAAQErAAAALAAAAC0AAAAuAAAALwAAAC0AAAAwAAAAMQAAADIAAAAiAAAAIwAAACQAAAAlAAAAJgAAACcAAAAoAAAAMwAAADQAAAApAAAANQAAAA0AAAAaAAAAKgAAAAkAAAAKAAAAAgAAAAAAAAAAAAAAAAAAAAAVCgAACQAAAAAAAAAAAAAAAAAAAAAAABUQDBMcHgMNHyAhIiMbGhEZGRkZGRkZGRkZFxICDgsPHBgYGBgYGBYWFhYWFhYWFhYWFhYWFhYWFhYWFBwEHBYcGBgYGBgYFhYWFhYWFhYWFhYWFhYWFhYWFhYcJBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBYcHBwcHBwcHBwcFhwaHBwWHBwcHBwWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhwWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWHBYWFhYWFhYWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKwAAACwAAAAtAAAALgAAAC8AAAAwAAAAMQAAADYAAAA3AAAAMgAAADgAAAAOAAAAGwAAADMAAAALAAAADAAAAAIAAAAAAQAAAAAAAAAAAAAAFQoAAAkAAAAAAAAAAAAAAAAAAAAAAAAVEAwTHB4DDR8gISIjGxoRGRkZGRkZGRkZGRcSAg4LDxwYGBgYGBgWFhYWFhYWFhYWFhYWFhYWFhYWFhQcBBwWHBgYGBgYGBYWFhYWFhYWFhYWFhYWFhYWFhYWHCQcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwWHBwcHBwcHBwcHBYcGhwcFhwcHBwcFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYcFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhwWFhYWFhYWFgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF00AgBjNAIAZjQCAGw0AgAGNAIAczQCAHw0AgCENAIAnPMAABQAAABDLlVURi04AAAAAAAAAAAAAAAAAN4SBJUAAAAA////////////////AgAAwAMAAMAEAADABQAAwAYAAMAHAADACAAAwAkAAMAKAADACwAAwAwAAMANAADADgAAwA8AAMAQAADAEQAAwBIAAMATAADAFAAAwBUAAMAWAADAFwAAwBgAAMAZAADAGgAAwBsAAMAcAADAHQAAwB4AAMAfAADAAAAAswEAAMMCAADDAwAAwwQAAMMFAADDBgAAwwcAAMMIAADDCQAAwwoAAMMLAADDDAAAww0AANMOAADDDwAAwwAADLsBAAzDAgAMwwMADMMEAAzTgPQAAAkAAAAAAAAAAAAAABEAAAAAAAAAAAAAAAAAAAAAAAAADwAAAAAAAAAQAAAA/PkCAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9QAABQAAAAAAAAAAAAAAEQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEQAAABAAAAAE/gIAAAQAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAACv////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD1AACE9QAABQAAAAAAAAAAAAAAEQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEgAAABAAAAAMAgMAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAA//////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmOgCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAABAAAAAQAAAAGAAAAg/miAERObgD8KRUA0VcnAN009QBi28AAPJmVAEGQQwBjUf4Au96rALdhxQA6biQA0k1CAEkG4AAJ6i4AHJLRAOsd/gApsRwA6D6nAPU1ggBEuy4AnOmEALQmcABBfl8A1pE5AFODOQCc9DkAi1+EACj5vQD4HzsA3v+XAA+YBQARL+8AClqLAG0fbQDPfjYACcsnAEZPtwCeZj8ALepfALondQDl68cAPXvxAPc5BwCSUooA+2vqAB+xXwAIXY0AMANWAHv8RgDwq2sAILzPADb0mgDjqR0AXmGRAAgb5gCFmWUAoBRfAI1AaACA2P8AJ3NNAAYGMQDKVhUAyahzAHviYABrjMAAIAAAAAkAAAAKAAAADQAAAAsAAAAMAAAAhQAAAAAgAAABIAAAAiAAAAMgAAAEIAAABSAAAAYgAAAIIAAACSAAAAogAAAoIAAAKSAAAF8gAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAZAAAAOgDAAAQJwAAoIYBAEBCDwCAlpgAAOH1BV9wiQD/CS8PdAAAAP1XAgBuAAAA/1cCAHIAAAABWAIAZgAAAANYAgBhAAAABVgCAGUAAAAHWAIAdwAAAAlYAgBXAAAAFlgCAHMAAAAkWAIAUwAAADBYAgBkAAAAPVgCAEQAAABJWAIAAAAAAAAAAAAAAAAAAAAEAAQAGwAbACAAIAAjACEACgACABYACQAhACEAIQAVABwAAQAUABQAFAAUABQAFAAUAAgABAAFABsAAgAXABsAIAAfAB4AHQAJABMAAAAVABIAFQADAAcAFQAVABQAFAAUABQAFAAUABQAFAAIAAQABQAFAAYAGwAaABgAGQAgAAcAFQAUABQAFAAUABQAFAALABQADQAUAAwAFAAUABQADgAUABQAFAAQABQADwAUABEAAAAAAAAArgAuAC8AMwA1ADAANwCqANsA2wDbANsAAAA9AIcANwA3ANsA2wAAACgANQAuADIALwBiAAAAAABHAAAAAADbAFEAAADbANsA2wAAANsAhABVANsAggDbAAAAgQDbAAAAPgBCAEEASABEAFIAWwAAAAAAXgBfANsAAADbANsA2wAAAAAAewBJAFcAUgBaAFoAXQAAAF8AAABfAAAAZQBdAF8AAABdAG4AagAAAGkAAABuAAAA2wCTAJoAoQCoAKsAcACxALgAvwDGAM0A0wAAAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAMABAAHAAMABAAFAAUABgAGAAgABwAHABEAFgASABEAEgAIAAgADwAPABcADwAYAA8AGQAaABoAHgAWADQAHgAFADIABgAiACIAMwAXABgANQAZABoAGgAqADYAKgA0ADcAMgBFADsAPAAzADsAPABGADUARwBIAEwANgAiAEkASgA3AEUATgBQAGIAUQBSAFQARgBHAFUASABMAFYASQBKAFgAWgBOAEQAUABRAFIAVAA4AC8ALABVACkAVgAbABAAWABaAF0AXQBdAF0AXQBdAF0AXgBeAF4AXgBeAF4AXgBfAF8AXwBfAF8AXwBfAGAACQBgAGAAYABgAGAAYQBhAGMAAgBjAGMAYwBjAGMAZAAAAGQAAABkAGQAZABlAAAAZQBlAGUAZQBlAGYAZgAAAGYAZgBmAGYAZwAAAGcAZwBnAGcAaAAAAGgAaABoAGgAaABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAAAAXAABAF0AXQBeAF4AXwBfAFwAXABcAFwAXABgAFwAXABcAGEAXABcAGIAYgBiAGIAYgBiAGIAYwBkAGUAZgBmAFwAXABnAFwAXABcAGAAXABcAGEAXABhAFwAaABhAFwAYgBiAGIAYgBiAGIAYgBiAGMAZABlAGUAXABmAFwAXABcAGcAaABhAGIAYgBiAGIAYgBiAGIAYgBiAGIAYgBiAGIAYgBiAGIAYgBiAGIAYgBiAGIAYgAAAFwAXABcAFwAXABcAFwAXABcAFwAXABcAAAACgALAAwADQAOAAoADwAQABEAEgATAAoAFAAVABUAFQAWABcAFQAYABUAFQAZABUAFQAVABoAFQAVAAoAFQAVABUAFgAXABgAFQAVABkAFQAVABUAGgAVABUAFQAVABsADAAMACQAHgAeACAAIQAgACEAJAAlACYALQAyAC8ALgAqACUAJgAoACkAMwAqADQAKwA1ADYANwA8ADIARwA9ACIARQAiAD8AQABGADMANABIADUANgA3AC8ASQAqAEcASgBFAEwAXAA8AEYAXAA9AE0ASABOAE8AUgBJAEEAUABRAEoATABTAFQAMQBVAFYAVwBNAE4AWABPAFIAWQBQAFEAWgBbAFMARABUAFUAVgBXAEsARAAsAFgALABZADgALABaAFsAHQAdAB0AHQAdAB0AHQAfAB8AHwAfAB8AHwAfACMAIwAjACMAIwAjACMAJwBcACcAJwAnACcAJwAwADAAOQAcADkAOQA5ADkAOQA6AFwAOgBcADoAOgA6ADsAXAA7ADsAOwA7ADsAPgA+AFwAPgA+AD4APgBCAFwAQgBCAEIAQgBDAFwAQwBDAEMAQwBDAAkAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwACACu/9EACgCu/67/CwCu/67/rv+u/67/rv+u/67/BQDRAK7/0QDRANEA0QDRANEA0QDRAK7/+/+u/w4A7P+u/67/rv+u/9EA0QDRANEA0QANACUADABCABAAUAATAG0AewAUAJgADwCmAMMArv+u/67/rv+u/67/rv+u/67/rv+u/67/rv+u/67/rv+u/67/rv+u/67/rv+u/67/FwCu/3cArv8HAC4Arv8mAK7/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YWdlU2l6ZSBbJWQgJWRdID4+IHNldHBhZ2VkZXZpY2UKACVkICVkICVkIGJlZ2lucGFnZQoAZ3NhdmUKJWQgJWQgJWQgJWQgYm94cHJpbSBjbGlwIG5ld3BhdGgKACVnICVnIHNldF9zY2FsZSAlZCByb3RhdGUgJWcgJWcgdHJhbnNsYXRlCgBjYW52YXMgc2l6ZSAoJWQsJWQpIGV4Y2VlZHMgUERGIGxpbWl0ICglZCkKCShzdWdnZXN0IHNldHRpbmcgYSBib3VuZGluZyBib3ggc2l6ZSwgc2VlIGRvdCgxKSkKAFsgL0Nyb3BCb3ggWyVkICVkICVkICVkXSAvUEFHRVMgcGRmbWFyawoAJWQgJWQgc2V0bGF5ZXIKACUlJSVUaXRsZTogJXMKACUlUGFnZXM6IChhdGVuZCkKACUlUGFnZXM6IDEKACUlQm91bmRpbmdCb3g6IChhdGVuZCkKACUlJSVCb3VuZGluZ0JveDogJWQgJWQgJWQgJWQKACUlRW5kQ29tbWVudHMKc2F2ZQoAc2V0dXBMYXRpbjEKAFsge0NhdGFsb2d9IDw8IC9VUkkgPDwgL0Jhc2UgJXMgPj4gPj4KL1BVVCBwZGZtYXJrCgAlJUJlZ2luUHJvbG9nAC9Eb3REaWN0IDIwMCBkaWN0IGRlZgBEb3REaWN0IGJlZ2luAC9zZXR1cExhdGluMSB7AG1hcmsAL0VuY29kaW5nVmVjdG9yIDI1NiBhcnJheSBkZWYAIEVuY29kaW5nVmVjdG9yIDAASVNPTGF0aW4xRW5jb2RpbmcgMCAyNTUgZ2V0aW50ZXJ2YWwgcHV0aW50ZXJ2YWwARW5jb2RpbmdWZWN0b3IgNDUgL2h5cGhlbiBwdXQAJSBTZXQgdXAgSVNPIExhdGluIDEgY2hhcmFjdGVyIGVuY29kaW5nAC9zdGFybmV0SVNPIHsAICAgICAgICBkdXAgZHVwIGZpbmRmb250IGR1cCBsZW5ndGggZGljdCBiZWdpbgAgICAgICAgIHsgMSBpbmRleCAvRklEIG5lIHsgZGVmIH17IHBvcCBwb3AgfSBpZmVsc2UAICAgICAgICB9IGZvcmFsbAAgICAgICAgIC9FbmNvZGluZyBFbmNvZGluZ1ZlY3RvciBkZWYAICAgICAgICBjdXJyZW50ZGljdCBlbmQgZGVmaW5lZm9udAB9IGRlZgAvVGltZXMtUm9tYW4gc3Rhcm5ldElTTyBkZWYAL1RpbWVzLUl0YWxpYyBzdGFybmV0SVNPIGRlZgAvVGltZXMtQm9sZCBzdGFybmV0SVNPIGRlZgAvVGltZXMtQm9sZEl0YWxpYyBzdGFybmV0SVNPIGRlZgAvSGVsdmV0aWNhIHN0YXJuZXRJU08gZGVmAC9IZWx2ZXRpY2EtT2JsaXF1ZSBzdGFybmV0SVNPIGRlZgAvSGVsdmV0aWNhLUJvbGQgc3Rhcm5ldElTTyBkZWYAL0hlbHZldGljYS1Cb2xkT2JsaXF1ZSBzdGFybmV0SVNPIGRlZgAvQ291cmllciBzdGFybmV0SVNPIGRlZgAvQ291cmllci1PYmxpcXVlIHN0YXJuZXRJU08gZGVmAC9Db3VyaWVyLUJvbGQgc3Rhcm5ldElTTyBkZWYAL0NvdXJpZXItQm9sZE9ibGlxdWUgc3Rhcm5ldElTTyBkZWYAY2xlYXJ0b21hcmsAfSBiaW5kIGRlZgAlJUJlZ2luUmVzb3VyY2U6IHByb2NzZXQgZ3JhcGh2aXogMCAwAC9jb29yZC1mb250LWZhbWlseSAvVGltZXMtUm9tYW4gZGVmAC9kZWZhdWx0LWZvbnQtZmFtaWx5IC9UaW1lcy1Sb21hbiBkZWYAL2Nvb3JkZm9udCBjb29yZC1mb250LWZhbWlseSBmaW5kZm9udCA4IHNjYWxlZm9udCBkZWYAL0ludlNjYWxlRmFjdG9yIDEuMCBkZWYAL3NldF9zY2FsZSB7ACAgICAgICBkdXAgMSBleGNoIGRpdiAvSW52U2NhbGVGYWN0b3IgZXhjaCBkZWYAICAgICAgIHNjYWxlACUgc3R5bGVzAC9zb2xpZCB7IFtdIDAgc2V0ZGFzaCB9IGJpbmQgZGVmAC9kYXNoZWQgeyBbOSBJbnZTY2FsZUZhY3RvciBtdWwgZHVwIF0gMCBzZXRkYXNoIH0gYmluZCBkZWYAL2RvdHRlZCB7IFsxIEludlNjYWxlRmFjdG9yIG11bCA2IEludlNjYWxlRmFjdG9yIG11bF0gMCBzZXRkYXNoIH0gYmluZCBkZWYAL2ludmlzIHsvZmlsbCB7bmV3cGF0aH0gZGVmIC9zdHJva2Uge25ld3BhdGh9IGRlZiAvc2hvdyB7cG9wIG5ld3BhdGh9IGRlZn0gYmluZCBkZWYAL2JvbGQgeyAyIHNldGxpbmV3aWR0aCB9IGJpbmQgZGVmAC9maWxsZWQgeyB9IGJpbmQgZGVmAC91bmZpbGxlZCB7IH0gYmluZCBkZWYAL3JvdW5kZWQgeyB9IGJpbmQgZGVmAC9kaWFnb25hbHMgeyB9IGJpbmQgZGVmAC90YXBlcmVkIHsgfSBiaW5kIGRlZgAlIGhvb2tzIGZvciBzZXR0aW5nIGNvbG9yIAAvbm9kZWNvbG9yIHsgc2V0aHNiY29sb3IgfSBiaW5kIGRlZgAvZWRnZWNvbG9yIHsgc2V0aHNiY29sb3IgfSBiaW5kIGRlZgAvZ3JhcGhjb2xvciB7IHNldGhzYmNvbG9yIH0gYmluZCBkZWYAL25vcGNvbG9yIHtwb3AgcG9wIHBvcH0gYmluZCBkZWYAL2JlZ2lucGFnZSB7CSUgaSBqIG5wYWdlcwAJL25wYWdlcyBleGNoIGRlZgAJL2ogZXhjaCBkZWYACS9pIGV4Y2ggZGVmAAkvc3RyIDEwIHN0cmluZyBkZWYACW5wYWdlcyAxIGd0IHsACQlnc2F2ZQAJCQljb29yZGZvbnQgc2V0Zm9udAAJCQkwIDAgbW92ZXRvAAkJCShcKCkgc2hvdyBpIHN0ciBjdnMgc2hvdyAoLCkgc2hvdyBqIHN0ciBjdnMgc2hvdyAoXCkpIHNob3cACQlncmVzdG9yZQAJfSBpZgAvc2V0X2ZvbnQgewAJZmluZGZvbnQgZXhjaAAJc2NhbGVmb250IHNldGZvbnQAJSBkcmF3IHRleHQgZml0dGVkIHRvIGl0cyBleHBlY3RlZCB3aWR0aAAvYWxpZ25lZHRleHQgewkJCSUgd2lkdGggdGV4dAAJL3RleHQgZXhjaCBkZWYACS93aWR0aCBleGNoIGRlZgAJZ3NhdmUACQl3aWR0aCAwIGd0IHsACQkJW10gMCBzZXRkYXNoAAkJCXRleHQgc3RyaW5nd2lkdGggcG9wIHdpZHRoIGV4Y2ggc3ViIHRleHQgbGVuZ3RoIGRpdiAwIHRleHQgYXNob3cACQl9IGlmAAlncmVzdG9yZQAvYm94cHJpbSB7CQkJCSUgeGNvcm5lciB5Y29ybmVyIHhzaXplIHlzaXplAAkJNCAyIHJvbGwACQltb3ZldG8ACQkyIGNvcHkACQlleGNoIDAgcmxpbmV0bwAJCTAgZXhjaCBybGluZXRvAAkJcG9wIG5lZyAwIHJsaW5ldG8ACQljbG9zZXBhdGgAL2VsbGlwc2VfcGF0aCB7AAkvcnkgZXhjaCBkZWYACS9yeCBleGNoIGRlZgAJL3kgZXhjaCBkZWYACS94IGV4Y2ggZGVmAAltYXRyaXggY3VycmVudG1hdHJpeAAJbmV3cGF0aAAJeCB5IHRyYW5zbGF0ZQAJcnggcnkgc2NhbGUACTAgMCAxIDAgMzYwIGFyYwAJc2V0bWF0cml4AC9lbmRwYWdlIHsgc2hvd3BhZ2UgfSBiaW5kIGRlZgAvc2hvd3BhZ2UgeyB9IGRlZgAvbGF5ZXJjb2xvcnNlcQAJWwklIGxheWVyIGNvbG9yIHNlcXVlbmNlIC0gZGFya2VzdCB0byBsaWdodGVzdAAJCVswIDAgMF0ACQlbLjIgLjggLjhdAAkJWy40IC44IC44XQAJCVsuNiAuOCAuOF0ACQlbLjggLjggLjhdAAldAGRlZgAvbGF5ZXJsZW4gbGF5ZXJjb2xvcnNlcSBsZW5ndGggZGVmAC9zZXRsYXllciB7L21heGxheWVyIGV4Y2ggZGVmIC9jdXJsYXllciBleGNoIGRlZgAJbGF5ZXJjb2xvcnNlcSBjdXJsYXllciAxIHN1YiBsYXllcmxlbiBtb2QgZ2V0AAlhbG9hZCBwb3Agc2V0aHNiY29sb3IACS9ub2RlY29sb3Ige25vcGNvbG9yfSBkZWYACS9lZGdlY29sb3Ige25vcGNvbG9yfSBkZWYACS9ncmFwaGNvbG9yIHtub3Bjb2xvcn0gZGVmAC9vbmxheWVyIHsgY3VybGF5ZXIgbmUge2ludmlzfSBpZiB9IGRlZgAvb25sYXllcnMgewAJL215dXBwZXIgZXhjaCBkZWYACS9teWxvd2VyIGV4Y2ggZGVmAAljdXJsYXllciBteWxvd2VyIGx0AAljdXJsYXllciBteXVwcGVyIGd0AAlvcgAJe2ludmlzfSBpZgAvY3VybGF5ZXIgMCBkZWYAJSVFbmRSZXNvdXJjZQAlJUVuZFByb2xvZwAlJUJlZ2luU2V0dXAAMTQgZGVmYXVsdC1mb250LWZhbWlseSBzZXRfZm9udAAlIC9hcnJvd2xlbmd0aCAxMCBkZWYAJSAvYXJyb3d3aWR0aCA1IGRlZgAlIG1ha2Ugc3VyZSBwZGZtYXJrIGlzIGhhcm1sZXNzIGZvciBQUy1pbnRlcnByZXRlcnMgb3RoZXIgdGhhbiBEaXN0aWxsZXIAL3BkZm1hcmsgd2hlcmUge3BvcH0ge3VzZXJkaWN0IC9wZGZtYXJrIC9jbGVhcnRvbWFyayBsb2FkIHB1dH0gaWZlbHNlACUgbWFrZSAnPDwnIGFuZCAnPj4nIHNhZmUgb24gUFMgTGV2ZWwgMSBkZXZpY2VzAC9sYW5ndWFnZWxldmVsIHdoZXJlIHtwb3AgbGFuZ3VhZ2VsZXZlbH17MX0gaWZlbHNlADIgbHQgewAgICAgdXNlcmRpY3QgKDw8KSBjdm4gKFspIGN2biBsb2FkIHB1dAAgICAgdXNlcmRpY3QgKD4+KSBjdm4gKFspIGN2biBsb2FkIHB1dAB9IGlmACUlRW5kU2V0dXAAJSVUcmFpbGVyCgAlJSUlUGFnZXM6ICVkCgBlbmQKcmVzdG9yZQoAJSVFT0YKACUhUFMtQWRvYmUtMy4wACBFUFNGLTMuMAoAJSUlJUNyZWF0b3I6ICVzIHZlcnNpb24gJXMgKCVzKQoAcHMyOnBzADwhLS0gADxwb2x5bGluZQAgcG9pbnRzPSIAIi8+CgAgZmlsbD0iAHVybCgjbF8lZCkAdXJsKCNyXyVkKQAiIGZpbGwtb3BhY2l0eT0iJWYAIiBzdHJva2U9IgAiIHN0cm9rZS13aWR0aD0iACIgc3Ryb2tlLWRhc2hhcnJheT0iJXMANSwyADEsNQAiIHN0cm9rZS1vcGFjaXR5PSIlZgBndnJlbmRlcl9jb3JlX3N2Zy5jAHN2Z19wcmludF9jb2xvcgA8cGF0aAAgaWQ9IgBfcCIgACBkPSIAJWMAPGRlZnM+CjxyYWRpYWxHcmFkaWVudCBpZD0icl8lZCIgY3g9IjUwJSUiIGN5PSI1MCUlIiByPSI3NSUlIiBmeD0iJWQlJSIgZnk9IiVkJSUiPgoAPHN0b3Agb2Zmc2V0PSIwIiBzdHlsZT0ic3RvcC1jb2xvcjoAO3N0b3Atb3BhY2l0eToAMS4AOyIvPgoAPHN0b3Agb2Zmc2V0PSIxIiBzdHlsZT0ic3RvcC1jb2xvcjoAOyIvPgo8L3JhZGlhbEdyYWRpZW50Pgo8L2RlZnM+CgA8ZGVmcz4KPGxpbmVhckdyYWRpZW50IGlkPSJsXyVkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgAHgxPSIAIiB5MT0iACIgeDI9IgAiIHkyPSIAIiA+CgA8c3RvcCBvZmZzZXQ9IiUuMDNmIiBzdHlsZT0ic3RvcC1jb2xvcjoAOyIvPgo8L2xpbmVhckdyYWRpZW50Pgo8L2RlZnM+CgA8cG9seWdvbgA8ZWxsaXBzZQAgY3g9IgAiIGN5PSIAIiByeD0iACIgcnk9IgA8dGV4dAAgdGV4dC1hbmNob3I9InN0YXJ0IgAgdGV4dC1hbmNob3I9ImVuZCIAIHRleHQtYW5jaG9yPSJtaWRkbGUiACB4PSIAIiB5PSIAIGZvbnQtZmFtaWx5PSIlcwAsJXMAIGZvbnQtd2VpZ2h0PSIlcyIAIGZvbnQtc3RyZXRjaD0iJXMiACBmb250LXN0eWxlPSIlcyIAIGZvbnQtZmFtaWx5PSIlcyIAIGZvbnQtd2VpZ2h0PSJib2xkIgAgZm9udC1zdHlsZT0iaXRhbGljIgAgdGV4dC1kZWNvcmF0aW9uPSIAJXNvdmVybGluZQAlc2xpbmUtdGhyb3VnaAAgYmFzZWxpbmUtc2hpZnQ9InN1cGVyIgAgYmFzZWxpbmUtc2hpZnQ9InN1YiIAIGZvbnQtc2l6ZT0iJS4yZiIAIGZpbGw9IiVzIgAgZmlsbD0iIyUwMnglMDJ4JTAyeCIAc3ZnX3RleHRzcGFuAD4APHRleHRQYXRoIHhsaW5rOmhyZWY9IiMlc19wIiBzdGFydE9mZnNldD0iNTAlJSI+ADx0c3BhbiB4PSIwIiBkeT0iACI+ADwvdHNwYW4+PC90ZXh0UGF0aD4APC90ZXh0PgoAPC9nPgoAPGcAIGlkPSJhXwAgeGxpbms6aHJlZj0iACB4bGluazp0aXRsZT0iACB0YXJnZXQ9IgA8dGl0bGU+ADwvdGl0bGU+CgA8ZyBpZD0iAF8lcwAiIGNsYXNzPSIlcwBjbGFzcwAgdHJhbnNmb3JtPSJzY2FsZSgAKSByb3RhdGUoJWQpIHRyYW5zbGF0ZSgAKSI+CgA8L3N2Zz4KADwhLS0AIFBhZ2VzOiAlZCAtLT4KADxzdmcgd2lkdGg9IiVkcHQiIGhlaWdodD0iJWRwdCIKACB2aWV3Qm94PSIlLjJmICUuMmYgJS4yZiAlLjJmIgAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgAgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiADw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiBzdGFuZGFsb25lPSJubyI/PgoAc3R5bGVzaGVldAA8P3htbC1zdHlsZXNoZWV0IGhyZWY9IgAiIHR5cGU9InRleHQvY3NzIj8+CgA8IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iCgAgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+CgA8IS0tIEdlbmVyYXRlZCBieSAAZGFya2JsdWUAZGFya2N5YW4AZGFya2dyYXkAZGFya2dyZXkAZGFya21hZ2VudGEAZGFya3JlZABsaWdodGdyZWVuACMgACBjcmVhdGUgbGluZSAAIC1maWxsIAAgLWRhc2ggNQAgLWRhc2ggMgBndnJlbmRlcl9jb3JlX3RrLmMAdGtnZW5fcHJpbnRfdGFncwBncmFwaCBsYWJlbAAgLXRhZ3MgeyVkJXMlcH0AdGtnZW5fcHJpbnRfY29sb3IAJGMAIC13aWR0aCAAIC1zbW9vdGggYmV6aWVyIAAgY3JlYXRlIHBvbHlnb24gACAtb3V0bGluZSAAIGNyZWF0ZSBvdmFsIAAgY3JlYXRlIHRleHQgACAtdGV4dCB7AH0AIC1mb250IHsAICVkfQAgLWFuY2hvciB3ACAtYW5jaG9yIGUAIwAgVGl0bGU6IAAgUGFnZXM6ICVkCgAjIEdlbmVyYXRlZCBieSAAKQoAdGsAdGs6dGsAICAgICAgPCEtLSAAIC0tPgoARXJyb3IgZHVyaW5nIGNvbnZlcnNpb24gdG8gIlVURi04Ii4gIFF1aXRpbmcuCgAgPHY6c2hhcGUgc3R5bGU9InBvc2l0aW9uOmFic29sdXRlOyAAIHdpZHRoOiAlZDsgaGVpZ2h0OiAlZCIgZmlsbGVkPSJmYWxzZSI+ADx2OnBhdGggdj0iACBtIAAlLjBmLCUuMGYgACBsIAAgZSAAIi8+ADwvdjpzaGFwZT4KADx2OnN0cm9rZSBjb2xvcj0iACIgd2VpZ2h0PSIlLjBmcHQAIiBkYXNoc3R5bGU9ImRhc2gAIiBkYXNoc3R5bGU9ImRvdAAiIC8+ACMlMDJ4JTAyeCUwMngAZ3ZyZW5kZXJfY29yZV92bWwuYwB2bWxfcHJpbnRfY29sb3IAIHdpZHRoOiAlZDsgaGVpZ2h0OiAlZCIAID4APHY6cGF0aCAgdj0iAC8+PC92OnNoYXBlPgoAbSAAJXMlLjBmLCUuMGYgAGMgACBmaWxsZWQ9InRydWUiIGZpbGxjb2xvcj0iACIgACBmaWxsZWQ9ImZhbHNlIiAAJS4wZiAlLjBmIABsIAB4IGUgIi8+ACAgPHY6b3ZhbCBzdHlsZT0icG9zaXRpb246YWJzb2x1dGU7ACBsZWZ0OiAlLjJmOyB0b3A6ICUuMmY7ACB3aWR0aDogJS4yZjsgaGVpZ2h0OiAlLjJmIgA8L3Y6b3ZhbD4KADx2OnJlY3Qgc3R5bGU9InBvc2l0aW9uOmFic29sdXRlOyAAIHN0cm9rZWQ9ImZhbHNlIiBmaWxsZWQ9ImZhbHNlIj4KADx2OnRleHRib3ggaW5zZXQ9IjAsMCwwLDAiIHN0eWxlPSJwb3NpdGlvbjphYnNvbHV0ZTsgdi10ZXh0LXdyYXBwaW5nOidmYWxzZSc7cGFkZGluZzonMCc7AGZvbnQtZmFtaWx5OiAnJXMnOwBmb250LXdlaWdodDogJXM7AGZvbnQtc3RyZXRjaDogJXM7AGZvbnQtc3R5bGU6ICVzOwAgZm9udC1zaXplOiAlLjJmcHQ7AGNvbG9yOiVzOwBjb2xvcjojJTAyeCUwMnglMDJ4OwB2bWxfdGV4dHNwYW4AIj48Y2VudGVyPgA8L2NlbnRlcj48L3Y6dGV4dGJveD4KADwvdjpyZWN0PgoAPC9hPgoAPGEAIGhyZWY9IiVzIgAgdGl0bGU9IiVzIgAgdGFyZ2V0PSIlcyIAPgoAPC92Omdyb3VwPgoAPC9ESVY+CgA8RElWIGlkPSdfVk1MMl8nIHN0eWxlPSJwb3NpdGlvbjpyZWxhdGl2ZTt2aXNpYmlsaXR5OmhpZGRlbiI+CgA8IS0tIGluc2VydCBhbnkgb3RoZXIgaHRtbCBjb250ZW50IGhlcmUgLS0+CgA8RElWIGlkPSdfbm90Vk1MMV8nIHN0eWxlPSJwb3NpdGlvbjpyZWxhdGl2ZTsiPgoAPCEtLSB0aGlzIHNob3VsZCBvbmx5IGRpc3BsYXkgb24gTk9OLUlFIGJyb3dzZXJzIC0tPgoAPEgyPlNvcnJ5LCB0aGlzIGRpYWdyYW0gd2lsbCBvbmx5IGRpc3BsYXkgY29ycmVjdGx5IG9uIEludGVybmV0IEV4cGxvcmVyIDUgKGFuZCB1cCkgYnJvd3NlcnMuPC9IMj4KADxESVYgaWQ9J19ub3RWTUwyXycgc3R5bGU9InBvc2l0aW9uOnJlbGF0aXZlOyI+CgA8IS0tIGluc2VydCBhbnkgb3RoZXIgTk9OLUlFIGh0bWwgY29udGVudCBoZXJlIC0tPgoAPC9CT0RZPgo8L0hUTUw+CgA8SEVBRD4APE1FVEEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgoAPFRJVExFPgA8L1RJVExFPgA8IS0tIFBhZ2VzOiAlZCAtLT4KACAgIDxTQ1JJUFQgTEFOR1VBR0U9J0phdmFzY3JpcHQnPgoAICAgZnVuY3Rpb24gYnJvd3NlcmNoZWNrKCkKACAgIHsKACAgICAgIHZhciB1YSA9IHdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50CgAgICAgICB2YXIgbXNpZSA9IHVhLmluZGV4T2YgKCAnTVNJRSAnICkKACAgICAgIHZhciBpZXZlcnM7CgAgICAgICB2YXIgaXRlbTsKACAgICAgIHZhciBWTUx5ZXM9bmV3IEFycmF5KCdfVk1MMV8nLCdfVk1MMl8nKTsKACAgICAgIHZhciBWTUxubz1uZXcgQXJyYXkoJ19ub3RWTUwxXycsJ19ub3RWTUwyXycpOwoAICAgICAgaWYgKCBtc2llID4gMCApeyAgICAgIC8vIElmIEludGVybmV0IEV4cGxvcmVyLCByZXR1cm4gdmVyc2lvbiBudW1iZXIKACAgICAgICAgIGlldmVycz0gcGFyc2VJbnQgKHVhLnN1YnN0cmluZyAobXNpZSs1LCB1YS5pbmRleE9mICgnLicsIG1zaWUgKSkpCgAgICAgICB9CgAgICAg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CgAvLyoqKiBiZWdpbl9lZGdlCgAvLyoqKiBlbmRfbm9kZQoALy8qKiogYmVnaW5fbm9kZTogJXMKAC8vKioqIGVuZF9jbHVzdGVyCgAvLyoqKiBiZWdpbl9jbHVzdGVyCgAvLyoqKiBlbmRfcGFnZQoALy8qKiogYmVnaW5fcGFnZQoALy8qKiogZW5kX2xheWVyCgAvLyoqKiBiZWdpbl9sYXllcjogJXMsICVkLyVkCgAvLyoqKiBlbmRfZ3JhcGgKAC8vKioqIGJlZ2luX2dyYXBoICVzCgBjYW1lcmEgeyBsb2NhdGlvbiA8JS4zZiAsICUuM2YgLCAlLjNmPgogICAgICAgICBsb29rX2F0ICA8JS4zZiAsICUuM2YgLCAlLjNmPgogICAgICAgICByaWdodCB4ICogaW1hZ2Vfd2lkdGggLyBpbWFnZV9oZWlnaHQKICAgICAgICAgYW5nbGUgJS4zZgp9CgAvL3NreQpwbGFuZSB7IDwwLCAxLCAwPiwgMSBob2xsb3cKICAgIHRleHR1cmUgewogICAgICAgIHBpZ21lbnQgeyBib3pvIHR1cmJ1bGVuY2UgMC45NQogICAgICAgICAgICBjb2xvcl9tYXAgewogICAgICAgICAgICAgICAgWzAuMDAgcmdiIDwwLjA1LCAwLjIwLCAwLjUwPl0KICAgICAgICAgICAgICAgIFswLjUwIHJnYiA8MC4wNSwgMC4yMCwgMC41MD5dCiAgICAgICAgICAgICAgICBbMC43NSByZ2IgPDEuMDAsIDEuMDAsIDEuMDA+XQogICAgICAgICAgICAgICAgWzAuNzUgcmdiIDwwLjI1LCAwLjI1LCAwLjI1Pl0KICAgICAgICAgICAgICAgIFsxLjAwIHJnYiA8MC41MCwgMC41MCwgMC41MD5dCiAgICAgICAgICAgIH0KICAgICAgICAgICAgc2NhbGUgPDEuMDAsIDEuMDAsIDEuNTA+ICogMi41MAogICAgICAgICAgICB0cmFuc2xhdGUgPDAuMDAsIDAuMDAsIDAuMDA+CiAgICAgICAgfQogICAgICAgIGZpbmlzaCB7IGFtYmllbnQgMSBkaWZmdXNlIDAgfQogICAgfQogICAgc2NhbGUgMTAwMDAKfQovL21pc3QKZm9nIHsgZm9nX3R5cGUgMgogICAgZGlzdGFuY2UgNTAKICAgIGNvbG9yIHJnYiA8MS4wMCwgMS4wMCwgMS4wMD4gKiAwLjc1CiAgICBmb2dfb2Zmc2V0IDAuMTAKICAgIGZvZ19hbHQgMS41MAogICAgdHVyYnVsZW5jZSAxLjc1Cn0KLy9nbmQKcGxhbmUgeyA8MC4wMCwgMS4wMCwgMC4wMD4sIDAKICAgIHRleHR1cmUgewogICAgICAgIHBpZ21lbnR7IGNvbG9yIHJnYiA8MC4yNSwgMC40NSwgMC4wMD4gfQogICAgICAgIG5vcm1hbCB7IGJ1bXBzIDAuNzUgc2NhbGUgMC4wMSB9CiAgICAgICAgZmluaXNoIHsgcGhvbmcgMC4xMCB9CiAgICB9Cn0KAGxpZ2h0X3NvdXJjZSB7IDwxNTAwLDMwMDAsLTI1MDA+IGNvbG9yIFdoaXRlIH0KACN2ZXJzaW9uIDMuNjsKAGdsb2JhbF9zZXR0aW5ncyB7IGFzc3VtZWRfZ2FtbWEgMS4wIH0KACNkZWZhdWx0IHsgZmluaXNoIHsgYW1iaWVudCAwLjEgZGlmZnVzZSAwLjkgfSB9CgAjaW5jbHVkZSAiY29sb3JzLmluYyIKI2luY2x1ZGUgInRleHR1cmVzLmluYyIKI2luY2x1ZGUgInNoYXBlcy5pbmMiCgAjZGVjbGFyZSAlcyA9ICVzOwoAQmxhY2sAV2hpdGUAYmFrZXJzY2hvYwBicmFzcwBicmlnaHRnb2xkAGJyb256ZQBicm9uemUyAGNsZWFyAGNvb2xjb3BwZXIAY29wcGVyAGRhcmticm93bgBkYXJrcHVycGxlAGRhcmt0YW4AZGFya3dvb2QAZGtncmVlbmNvcHBlcgBkdXN0eXJvc2UAZmVsZHNwYXIAZmxlc2gAZ3JheTA1AGdyZWVuY29wcGVyAGh1bnRlcnNncmVlbgBsaWdodF9wdXJwbGUAbGlnaHR3b29kAG1hbmRhcmlub3JhbmdlAG1lZGl1bWZvcmVzdGdyZWVuAG1lZGl1bWdvbGRlbnJvZABtZWRpdW13b29kAG1lZF9wdXJwbGUAbWljYQBuZW9uYmx1ZQBuZW9ucGluawBuZXdtaWRuaWdodGJsdWUAbmV3dGFuAG9sZGdvbGQAcXVhcnR6AHJpY2hibHVlAHNjYXJsZXQAc2VtaVN3ZWV0Q2hvYwBzaWx2ZXIAc3BpY3lwaW5rAHN1bW1lcnNreQB2ZXJ5ZGFya2Jyb3duAHZlcnlfbGlnaHRfcHVycGxlAHBvdgBwb3Y6cG92ACVzICVzCgAuXCIgACAlZCAlZAAgJXMKACAlZABmaWxsIABlbGxpcHNlIGF0dHJzJWQgJXN3aWQgJS41ZiBodCAlLjVmIGF0ICglLjVmLCUuNWYpOwoALmZ0ICVzCgAucHMgJWQqXG4oU0Z1LyUuMGZ1CgAiJXMiIGF0ICglLjVmLCUuNWYpOwoAJTAzbwAlcyVzIGlzIG5vdCBhIHRyb2ZmIGZvbnQKAGRvdCBwaWMgcGx1Z2luOiAAUgBdCi5QRQoALlBTICUuNWYgJS41ZgoAJXMgdG8gY2hhbmdlIGRyYXdpbmcgc2l6ZSwgbXVsdGlwbHkgdGhlIHdpZHRoIGFuZCBoZWlnaHQgb24gdGhlIC5QUyBsaW5lIGFib3ZlIGFuZCB0aGUgbnVtYmVyIG9uIHRoZSB0d28gbGluZXMgYmVsb3cgKHJvdW5kZWQgdG8gdGhlIG5lYXJlc3QgaW50ZWdlcikgYnkgYSBzY2FsZSBmYWN0b3IKAC5uciBTRiAlLjBmCnNjYWxldGhpY2tuZXNzID0gJS4wZgoAJXMgZG9uJ3QgY2hhbmdlIGFueXRoaW5nIGJlbG93IHRoaXMgbGluZSBpbiB0aGlzIGRyYXdpbmcKACVzIG5vbi1mYXRhbCBydW4tdGltZSBwaWMgdmVyc2lvbiBkZXRlcm1pbmF0aW9uLCB2ZXJzaW9uIDIKAGJveHJhZD0yLjAgJXMgd2lsbCBiZSByZXNldCB0byAwLjAgYnkgZ3BpYyBvbmx5CgBzY2FsZT0xLjAgJXMgcmVxdWlyZWQgZm9yIGNvbXBhcmlzb25zCgAlcyBib3hyYWQgaXMgbm93IDAuMCBpbiBncGljLCBlbHNlIGl0IHJlbWFpbnMgMi4wCgAlcyBkYXNod2lkIGlzIDAuMSBpbiAxMHRoIEVkaXRpb24sIDAuMDUgaW4gRFdCIDIgYW5kIGluIGdwaWMKACVzIGZpbGx2YWwgaXMgMC4zIGluIDEwdGggRWRpdGlvbiAoZmlsbCAwIG1lYW5zIGJsYWNrKSwgMC41IGluIGdwaWMgKGZpbGwgMCBtZWFucyB3aGl0ZSksIHVuZGVmaW5lZCBpbiBEV0IgMgoAJXMgZmlsbCBoYXMgbm8gbWVhbmluZyBpbiBEV0IgMiwgZ3BpYyBjYW4gdXNlIGZpbGwgb3IgZmlsbGVkLCAxMHRoIEVkaXRpb24gdXNlcyBmaWxsIG9ubHkKACVzIERXQiAyIGRvZXNuJ3QgdXNlIGZpbGwgYW5kIGRvZXNuJ3QgZGVmaW5lIGZpbGx2YWwKACVzIHJlc2V0IHdvcmtzIGluIGdwaWMgYW5kIDEwdGggZWRpdGlvbiwgYnV0IGlzbid0IGRlZmluZWQgaW4gRFdCIDIKACVzIERXQiAyIGNvbXBhdGliaWxpdHkgZGVmaW5pdGlvbnMKAGlmIGJveHJhZCA+IDEuMCAmJiBkYXNod2lkIDwgMC4wNzUgdGhlbiBYCglmaWxsdmFsID0gMTsKCWRlZmluZSBmaWxsIFkgWTsKCWRlZmluZSBzb2xpZCBZIFk7CglkZWZpbmUgcmVzZXQgWSBzY2FsZT0xLjAgWTsKWAoAcmVzZXQgJXMgc2V0IHRvIGtub3duIHN0YXRlCgAlcyBHTlUgcGljIHZzLiAxMHRoIEVkaXRpb24gZFwoZSd0ZW50ZQoAaWYgZmlsbHZhbCA+IDAuNCB0aGVuIFgKCWRlZmluZSBzZXRmaWxsdmFsIFkgZmlsbHZhbCA9IDEgLSBZOwoJZGVmaW5lIGJvbGQgWSB0aGlja25lc3MgMiBZOwoACSVzIGlmIHlvdSB1c2UgZ3BpYyBhbmQgaXQgYmFyZnMgb24gZW5jb3VudGVyaW5nICJzb2xpZCIsCgAJJXMJaW5zdGFsbCBhIG1vcmUgcmVjZW50IHZlcnNpb24gb2YgZ3BpYyBvciBzd2l0Y2ggdG8gRFdCIG9yIDEwdGggRWRpdGlvbiBwaWM7CgAJJXMJc29ycnksIHRoZSBncm9mZiBmb2xrcyBjaGFuZ2VkIGdwaWM7IHNlbmQgYW55IGNvbXBsYWludCB0byB0aGVtOwoAWCBlbHNlIFoKCWRlZmluZSBzZXRmaWxsdmFsIFkgZmlsbHZhbCA9IFk7CglkZWZpbmUgYm9sZCBZIFk7CglkZWZpbmUgZmlsbGVkIFkgZmlsbCBZOwpaCgAlcyBhcnJvd2hlYWQgaGFzIG5vIG1lYW5pbmcgaW4gRFdCIDIsIGFycm93aGVhZCA9IDcgbWFrZXMgZmlsbGVkIGFycm93aGVhZHMgaW4gZ3BpYyBhbmQgaW4gMTB0aCBFZGl0aW9uCgAlcyBhcnJvd2hlYWQgaXMgdW5kZWZpbmVkIGluIERXQiAyLCBpbml0aWFsbHkgMSBpbiBncGljLCAyIGluIDEwdGggRWRpdGlvbgoAYXJyb3doZWFkID0gNyAlcyBub3QgdXNlZCBieSBncmFwaHZpegoAJXMgR05VIHBpYyBzdXBwb3J0cyBhIGJveHJhZCB2YXJpYWJsZSB0byBkcmF3IGJveGVzIHdpdGggcm91bmRlZCBjb3JuZXJzOyBEV0IgYW5kIDEwdGggRWQuIGRvIG5vdAoAYm94cmFkID0gMCAlcyBubyByb3VuZGVkIGNvcm5lcnMgaW4gZ3JhcGh2aXoKACVzIEdOVSBwaWMgc3VwcG9ydHMgYSBsaW5ldGhpY2sgdmFyaWFibGUgdG8gc2V0IGxpbmUgdGhpY2tuZXNzOyBEV0IgYW5kIDEwdGggRWQuIGRvIG5vdAoAbGluZXRoaWNrID0gMDsgb2xkbGluZXRoaWNrID0gbGluZXRoaWNrCgAlcyAuUFMgdy9vIGFyZ3MgY2F1c2VzIEdOVSBwaWMgdG8gc2NhbGUgZHJhd2luZyB0byBmaXQgOC41eDExIHBhcGVyOyBEV0IgZG9lcyBub3QKACVzIG1heHBzaHQgYW5kIG1heHBzd2lkIGhhdmUgbm8gbWVhbmluZyBpbiBEV0IgMi4wLCBzZXQgcGFnZSBib3VuZGFyaWVzIGluIGdwaWMgYW5kIGluIDEwdGggRWRpdGlvbgoAJXMgbWF4cHNodCBhbmQgbWF4cHN3aWQgYXJlIHByZWRlZmluZWQgdG8gMTEuMCBhbmQgOC41IGluIGdwaWMKAG1heHBzaHQgPSAlZgptYXhwc3dpZCA9ICVmCgBEb3Q6IFsKAGRlZmluZSBhdHRyczAgJSUgJSU7IGRlZmluZSB1bmZpbGxlZCAlJSAlJTsgZGVmaW5lIHJvdW5kZWQgJSUgJSU7IGRlZmluZSBkaWFnb25hbHMgJSUgJSUKACVzJXMgdW5zdXBwb3J0ZWQKACVzIHJlc3RvcmUgcG9pbnQgc2l6ZSBhbmQgZm9udAoucHMgXG4oLlMKLmZ0IFxuKERGCgAlcyBDcmVhdG9yOiAlcyB2ZXJzaW9uICVzICglcykKACVzIFRpdGxlOiAlcwoAJXMgc2F2ZSBwb2ludCBzaXplIGFuZCBmb250Ci5uciAuUyBcbigucwoubnIgREYgXG4oLmYKAHBpYwBwaWM6cGljAHBuZzpzdmcAZ2lmOnN2ZwBqcGVnOnN2ZwBqcGU6c3ZnAGpwZzpzdmcAcG5nOmZpZwBnaWY6ZmlnAGpwZWc6ZmlnAGpwZTpmaWcAanBnOmZpZwBwbmc6dnJtbABnaWY6dnJtbABqcGVnOnZybWwAanBlOnZybWwAanBnOnZybWwAZXBzOnBzAHBzOnBzAChsaWIpOnBzAHBuZzptYXAAZ2lmOm1hcABqcGVnOm1hcABqcGU6bWFwAGpwZzptYXAAcHM6bWFwAGVwczptYXAAc3ZnOm1hcABwbmc6ZG90AGdpZjpkb3QAanBlZzpkb3QAanBlOmRvdABqcGc6ZG90AHBzOmRvdABlcHM6ZG90AHN2Zzpkb3QAcG5nOnhkb3QAZ2lmOnhkb3QAanBlZzp4ZG90AGpwZTp4ZG90AGpwZzp4ZG90AHBzOnhkb3QAZXBzOnhkb3QAc3ZnOnhkb3QAc3ZnOnN2ZwBwbmc6dm1sAGdpZjp2bWwAanBlZzp2bWwAanBlOnZtbABqcGc6dm1sAGdpZjp0awBpbWFnZSBjcmVhdGUgcGhvdG8gInBob3RvXyVzIiAtZmlsZSAiJXMiCgAkYyBjcmVhdGUgaW1hZ2UgJS4yZiAlLjJmIC1pbWFnZSAicGhvdG9fJXMiCgA8djppbWFnZSBzcmM9IiVzIiBzdHlsZT0iIHBvc2l0aW9uOmFic29sdXRlOyB3aWR0aDolLjJmOyBoZWlnaHQ6JS4yZjsgbGVmdDolLjJmIDsgdG9wOiUuMmYiACAvPgoAZ3Zsb2FkaW1hZ2VfY29yZS5jAGNvcmVfbG9hZGltYWdlX3BzbGliAFsgACVnICVnIABdICAlZCB0cnVlICVzCgBdICAlZCBmYWxzZSAlcwoAY29yZV9sb2FkaW1hZ2VfcHMAZ3NhdmUgJWcgJWcgdHJhbnNsYXRlIG5ld3BhdGgKAHVzZXJfc2hhcGVfJWQKAGdyZXN0b3JlCgBjb3JlX2xvYWRpbWFnZV92cm1sAFNoYXBlIHsKACAgYXBwZWFyYW5jZSBBcHBlYXJhbmNlIHsKACAgICBtYXRlcmlhbCBNYXRlcmlhbCB7CgAgICAgICBhbWJpZW50SW50ZW5zaXR5IDAuMzMKACAgICAgICAgZGlmZnVzZUNvbG9yIDEgMSAxCgAgICAgfQoAICAgIHRleHR1cmUgSW1hZ2VUZXh0dXJlIHsgdXJsICIlcyIgfQoAICB9CgBjb3JlX2xvYWRpbWFnZV9maWcAJWQgJWQgJWQgJWQgJWQgJWQgJWQgJWQgJWQgJS4xZiAlZCAlZCAlZCAlZCAlZCAlZAogJWQgJXMKACAlZCAlZCAlZCAlZCAlZCAlZCAlZCAlZCAlZCAlZAoAY29yZV9sb2FkaW1hZ2Vfc3ZnADxpbWFnZSB4bGluazpocmVmPSIAIiB3aWR0aD0iJWdweCIgaGVpZ2h0PSIlZ3B4IiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCBtZWV0IiB4PSIlZyIgeT0iJWciACB0cmFuc2Zvcm09InJvdGF0ZSglZCAlZyAlZykiACIgd2lkdGg9IiVncHgiIGhlaWdodD0iJWdweCIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pbllNaW4gbWVldCIgeD0iJWciIHk9IiVnIgAvPgoAZG90X2xheW91dABwaGFzZQBkb3QgZG9lcyBub3Qgc3VwcG9ydCB0aGUgYXNwZWN0IGF0dHJpYnV0ZSBmb3IgZGlzY29ubmVjdGVkIGdyYXBocyBvciBncmFwaHMgd2l0aCBjbHVzdGVycwoAY29tcG91bmQAdiA9PSBuAGRvdGluaXQuYwByZW1vdmVfZnJvbV9yYW5rAG9yZGVyAGVkZ2UgbGFiZWxzIHdpdGggc3BsaW5lcz1jdXJ2ZWQgbm90IHN1cHBvcnRlZCBpbiBkb3QgLSB1c2UgeGxhYmVscwoARURfbGFiZWwoZmUpAGRvdHNwbGluZXMuYwBfZG90X3NwbGluZXMAZmxhdCBlZGdlIGJldHdlZW4gYWRqYWNlbnQgbm9kZXMgb25lIG9mIHdoaWNoIGhhcyBhIHJlY29yZCBzaGFwZSAtIHJlcGxhY2UgcmVjb3JkcyB3aXRoIEhUTUwtbGlrZSBsYWJlbHMKACAgRWRnZSAlcyAlcyAlcwoAeHh4ADEwMDAwAHslc30AYXV4ZwBsYWJlbF9mbG9hdABmaXhlZAAobCA9IEVEX2xhYmVsKGZlKSkAc2V0RWRnZUxhYmVsUG9zAGUgIT0gTlVMTABmYXN0Z3IuYwBkZWxldGVfZmFzdF9lZGdlAG4gIT0gTkRfbmV4dChuKQBmYXN0X25vZGUAdSAhPSB2AGZhc3Rfbm9kZWFwcABORF9uZXh0KHYpID09IE5VTEwAZmluZF9mYXN0X25vZGUoZywgbikAZGVsZXRlX2Zhc3Rfbm9kZQBkZWxldGVfZmxhdF9lZGdlAG1lcmdlX29uZXdheSBnbGl0Y2gKAG1lcmdlX29uZXdheQBzYWZlX2RlbGV0ZV9mYXN0X2VkZ2UAbGcAY29tcABjbnQgPT0gc3oAbWluY3Jvc3MuYwBmaXhMYWJlbE9yZGVyAHJlbWluY3Jvc3MAbWluY3Jvc3MgJXM6ICVkIGNyb3NzaW5ncywgJS4yZiBzZWNzLgoAdgBuZWlnaGJvcgAocnYgPT0gMCkgfHwgKE5EX29yZGVyKHJ2KS1ORF9vcmRlcih2KSkqZGlyID4gMABjb25zdHJhaW5pbmdfZmxhdF9lZGdlKGcsdixlKSA9PSBGQUxTRQBmbGF0X3Jlb3JkZXIATkRfcmFuayh2KSA9PSByAHBvc3RvcmRlcgBmbGF0aW5kZXgoYWdoZWFkKGUpKSA8IE0tPm5yb3dzAGZsYXRfc2VhcmNoAGZsYXRpbmRleChhZ3RhaWwoZSkpIDwgTS0+bmNvbHMAb3V0AG9yZGVyaW5nICclcycgbm90IHJlY29nbml6ZWQuCgBvcmRlcmluZyAnJXMnIG5vdCByZWNvZ25pemVkIGZvciBub2RlICclcycuCgBtZXJnZTI6IGdyYXBoICVzLCByYW5rICVkIGhhcyBvbmx5ICVkIDwgJWQgbm9kZXMKAG1pbmNyb3NzOiBwYXNzICVkIGl0ZXIgJWQgdHJ5aW5nICVkIGN1cl9jcm9zcyAlZCBiZXN0X2Nyb3NzICVkCgBORF9vcmRlcih2KSA8IE5EX29yZGVyKHcpAGJhbGFuY2UAdHJhbnNwb3NlX3N0ZXAAc3VycHJpc2UKAGluc3RhbGxfaW5fcmFuaywgbGluZSAlZDogJXMgJXMgcmFuayAlZCBpID0gJWQgYW4gPSAwCgBHRF9yYW5rKGcpW3JdLm4gPD0gR0RfcmFuayhnKVtyXS5hbgBpbnN0YWxsX2luX3JhbmsAaW5zdGFsbF9pbl9yYW5rLCBsaW5lICVkOiBORF9vcmRlciglcykgWyVkXSA+IEdEX3JhbmsoUm9vdClbJWRdLmFuIFslZF0KAGluc3RhbGxfaW5fcmFuaywgbGluZSAlZDogcmFuayAlZCBub3QgaW4gcmFuayByYW5nZSBbJWQsJWRdCgBpbnN0YWxsX2luX3JhbmssIGxpbmUgJWQ6IEdEX3JhbmsoZylbJWRdLnYgKyBORF9vcmRlciglcykgWyVkXSA+IEdEX3JhbmsoZylbJWRdLmF2ICsgR0RfcmFuayhSb290KVslZF0uYW4gWyVkXQoAX25ld19yYW5rAG1jbGltaXQAcmFuayhnLCAyLCBuc2l0ZXIyKGcpKSA9PSAwAHBvc2l0aW9uLmMAZG90X3Bvc2l0aW9uAEFSPSUwLjRsZgkgQXJlYT0gJTAuNGxmCQBEdW1teT0lZAoAR29pbmcgdG8gYXBwbHkgYW5vdGhlciBleHBhbnNpb24uCgBuZXh0I2l0ZXI9JWQKAGhwAGNvbm5lY3RHcmFwaABFZGdlIGxlbmd0aCAlZiBsYXJnZXIgdGhhbiBtYXhpbXVtICV1IGFsbG93ZWQuCkNoZWNrIGZvciBvdmVyd2lkZSBub2RlKHMpLgoAbnNsaW1pdABjb250YWluX25vZGVzIGNsdXN0ICVzIHJhbmsgJWQgbWlzc2luZyBub2RlCgBuc2xpbWl0MQBuZXdyYW5rAE1heHJhbmsgPSAlZCwgbWlucmFuayA9ICVkCgBsZWFkZXIgIT0gTlVMTAByYW5rLmMAY2x1c3Rlcl9sZWFkZXIAKE5EX1VGX3NpemUobikgPD0gMSkgfHwgKG4gPT0gbGVhZGVyKQBhZ2hlYWQoZSkgPT0gVUZfZmluZChhZ2hlYWQoZSkpAG1pbm1heF9lZGdlcwBhZ3RhaWwoZSkgPT0gVUZfZmluZChhZ3RhaWwoZSkpAHJhbmsAc2FtZQBtaW4Ac291cmNlAG1heABzaW5rAGxldmVsIGFzc2lnbm1lbnQgY29uc3RyYWludHMAbGV2ZWwgZ3JhcGggcmVjAH9yb290AH90b3AAf2JvdABjb21wYWN0AF93ZWFrXyVkAHJhbmtpbmc6IGZhaWx1cmUgdG8gY3JlYXRlIHN0cm9uZyBjb25zdHJhaW50IGVkZ2UgYmV0d2VlbiBub2RlcyAlcyBhbmQgJXMKACVzIGhhcyB1bnJlY29nbml6ZWQgcmFuaz0lcwBsZXZlbCBlZGdlIHJlYwBsZXZlbCBub2RlIHJlYwBzYW1laGVhZABzYW1ldGFpbAB0b28gbWFueSAoPiAlZCkgc2FtZXtoZWFkLHRhaWx9IGdyb3VwcyBmb3Igbm9kZSAlcwoAY29tYmlBUiA9ICVsZgoAJWxmLCVkAHRoZSBhc3BlY3QgYXR0cmlidXRlIGhhcyBiZWVuIGRpc2FibGVkIGR1ZSB0byBpbXBsZW1lbnRhdGlvbiBmbGF3cyAtIGF0dHJpYnV0ZSBpZ25vcmVkLgoARURfdG9fdmlydChlKSA9PSBOVUxMAGNsYXNzMi5jAG1lcmdlX2NoYWluAEVEX3RvX3ZpcnQob3JpZykgPT0gTlVMTABtYWtlX2NoYWluAEVEX3RvX3ZpcnQob3JpZykgIT0gTlVMTABORF9yYW5rKGZyb20pIDwgTkRfcmFuayh0bykAY2x1c3Rlci5jAG1hcF9wYXRoACVzIHdhcyBhbHJlYWR5IGluIGEgcmFua3NldCwgZGVsZXRlZCBmcm9tIGNsdXN0ZXIgJXMKAGxoZWFkAGx0YWlsACVzIC0+ICVzOiBzcGxpbmUgc2l6ZSA+IDEgbm90IHN1cHBvcnRlZAoAJXMgLT4gJXM6IGhlYWQgbm90IGluc2lkZSBoZWFkIGNsdXN0ZXIgJXMKACVzIC0+ICVzOiB0YWlsIGlzIGluc2lkZSBoZWFkIGNsdXN0ZXIgJXMKAGJlei0+c2ZsYWcAY29tcG91bmQuYwBtYWtlQ29tcG91bmRFZGdlAGJlei0+ZWZsYWcAJXMgLT4gJXM6IHRhaWwgbm90IGluc2lkZSB0YWlsIGNsdXN0ZXIgJXMKACVzIC0+ICVzOiBoZWFkIGlzIGluc2lkZSB0YWlsIGNsdXN0ZXIgJXMKAHNlZ21lbnQgWyVzLCVzXSBkb2VzIG5vdCBpbnRlcnNlY3QgYm94IGxsPSVzLHVyPSVzCgBib3hJbnRlcnNlY3RmACglLjVnLCUuNWcpAGNsdXN0ZXIgbmFtZWQgJXMgbm90IGZvdW5kCgBjb25jZW50cmF0ZT10cnVlIG1heSBub3Qgd29yayBjb3JyZWN0bHkuCgByZWJ1aWx0ZF92bGlzdHM6IHJhbmsgbGVhZCAlcyBub3QgaW4gb3JkZXIgJWQgb2YgcmFuayAlZAoAZGVnZW5lcmF0ZSBjb25jZW50cmF0ZWQgcmFuayAlcywlZAoATkRfaW4ocmlnaHQpLnNpemUgKyBORF9vdXQocmlnaHQpLnNpemUgPT0gMABjb25jLmMAbWVyZ2V2aXJ0dWFsAGRvdDogT3V0IG9mIG1lbW9yeQoATkRfb3V0KHYpLnNpemUgPT0gMgBmbGF0LmMAc2V0Ym91bmRzAEdEX21pbnJhbmsoZykgPT0gMABhYm9taW5hdGlvbgBuZWF0b19sYXlvdXQAbmVhdG8AZmRwAHNmZHAAdHdvcGkAY2lyY28AcGF0Y2h3b3JrAG9zYWdlAG5vcABub3AxAG5vcDIAJWxmLCVsZiwlbGYlYwBub2RlICVzLCBwb3NpdGlvbiAlcywgZXhwZWN0ZWQgdHdvIGRvdWJsZXMKAG5vdHJhbnNsYXRlAG5vZGUgJXMgaW4gZ3JhcGggJXMgaGFzIG5vIHBvc2l0aW9uCgBzLCVsZiwlbGYlbgAgZSwlbGYsJWxmJW4AcG9zIGF0dHJpYnV0ZSBmb3IgZWRnZSAoJXMsJXMpIGRvZXNuJ3QgaGF2ZSAzbisxIHBvaW50cwoAJWxmLCVsZiVuAHN5bnRheCBlcnJvciBpbiBwb3MgYXR0cmlidXRlIGZvciBlZGdlICglcywlcykKACVsZiwlbGYsJWxmLCVsZgBzdGFydABzZWxmAHJhbmRvbQBub2RlIHBvc2l0aW9ucyBhcmUgaWdub3JlZCB1bmxlc3Mgc3RhcnQ9cmFuZG9tCgBhcyByZXF1aXJlZCBieSB0aGUgLW4gZmxhZwoAX25lYXRvX2NjAGdyYXBoICVzIGlzIGRpc2Nvbm5lY3RlZC4gSGVuY2UsIHRoZSBjaXJjdWl0IG1vZGVsCgBBbHRlcm5hdGl2ZWx5LCBjb25zaWRlciBydW5uaW5nIG5lYXRvIHVzaW5nIC1HcGFjaz10cnVlIG9yIGRlY29tcG9zaW5nCgB0aGUgZ3JhcGggaW50byBjb25uZWN0ZWQgY29tcG9uZW50cy4KAFNvbHZpbmcgbW9kZWwgJWQgaXRlcmF0aW9ucyAlZCB0b2wgJWYKAE5EX2lkKG5wKSA9PSBpAG5lYXRvaW5pdC5jAG1ha2VHcmFwaERhdGEAZiA8IGdyYXBoW2pdLm5lZGdlcwBkZnNDeWNsZQBtb2RlbCAlZCBzbWFydF9pbml0ICVkIHN0cmVzc3d0ICVkIGl0ZXJhdGlvbnMgJWQgdG9sICVmCgBjb252ZXJ0IGdyYXBoOiAAbWFqb3JpemF0aW9uCgAlZCBub2RlcyAlLjJmIHNlYwoAbGV2ZWxzZ2FwAGxheW91dCBhYm9ydGVkCgBzdHJlc3N3dAAlcyBhdHRyaWJ1dGUgdmFsdWUgbXVzdCBiZSAxIG9yIDIgLSBpZ25vcmluZwoAbW9kZWwAY2lyY3VpdABzdWJzZXQAc2hvcnRwYXRoAG1kcwBlZGdlcyBpbiBncmFwaCAlcyBoYXZlIG5vIGxlbiBhdHRyaWJ1dGUuIEhlbmNlLCB0aGUgbWRzIG1vZGVsCgBpcyBpbmFwcHJvcHJpYXRlLiBSZXZlcnRpbmcgdG8gdGhlIHNob3J0ZXN0IHBhdGggbW9kZWwuCgBVbmtub3duIHZhbHVlICVzIGZvciBhdHRyaWJ1dGUgIm1vZGVsIiBpbiBncmFwaCAlcyAtIGlnbm9yZWQKAG1vZGUAS0sAbWFqb3IAaGllcgBJbGxlZ2FsIHZhbHVlICVzIGZvciBhdHRyaWJ1dGUgIm1vZGUiIGluIGdyYXBoICVzIC0gaWdub3JlZAoAbWFrZVNwbGluZTogZmFpbGVkIHRvIG1ha2Ugc3BsaW5lIGVkZ2UgKCVzLCVzKQoAc3BsaW5lICVzICVzCgBiID09IG4AbmVhdG9zcGxpbmVzLmMAbWFrZV9iYXJyaWVycwB0aGUgYm91bmRpbmcgYm94ZXMgb2Ygc29tZSBub2RlcyB0b3VjaCAtIGZhbGxpbmcgYmFjayB0byBzdHJhaWdodCBsaW5lIGVkZ2VzCgBzb21lIG5vZGVzIHdpdGggbWFyZ2luICglLjAyZiwlLjAyZikgdG91Y2ggLSBmYWxsaW5nIGJhY2sgdG8gc3RyYWlnaHQgbGluZSBlZGdlcwoAcG9seWxpbmVzAGxpbmUgc2VnbWVudHMAb3J0aG9nb25hbCBsaW5lcwBDcmVhdGluZyBlZGdlcyB1c2luZyAlcwoAcG9seWxpbmUgJXMgJXMKAG1kc01vZGVsOiBkZWx0YSA9ICVmCgBTZXR0aW5nIHVwIHN0cmVzcyBmdW5jdGlvbgBTb2x2aW5nIG1vZGVsOiAACmZpbmFsIGUgPSAlZiAlZCBpdGVyYXRpb25zICUuMmYgc2VjCgBEYW1waW5nAGRlZmF1bHRkaXN0ACBpbiAlcyAtIHNldHRpbmcgdG8gJS4wMmYKAGJhZCBlZGdlIGxlbiAiJXMiAFNldHRpbmcgaW5pdGlhbCBwb3NpdGlvbnMKAHN0YXJ0PSVzIG5vdCBzdXBwb3J0ZWQgd2l0aCBtb2RlPXNlbGYgLSBpZ25vcmVkCgBTZXR0aW5nIHVwIHNwcmluZyBtb2RlbDogACUuMmYgc2VjCgAKZmluYWwgZSA9ICVmACEAICVkJXMgaXRlcmF0aW9ucyAlLjJmIHNlYwoATWF4LiBpdGVyYXRpb25zICglZCkgcmVhY2hlZCBvbiBncmFwaCAlcwoAJXMgJS4zZgoAJS4zZiAATkRfaGVhcGluZGV4KHYpIDwgMABzdHVmZi5jAG5lYXRvX2VucXVldWUAQ2FsY3VsYXRpbmcgc2hvcnRlc3QgcGF0aHM6IABzcGVjaWZpZWQgcm9vdCBub2RlICIlcyIgd2FzIG5vdCBmb3VuZC4AVXNpbmcgZGVmYXVsdCBjYWxjdWxhdGlvbiBmb3Igcm9vdCBub2RlCgByZXBvc2l0aW9uICVzCgAlcyA6ICVmICVmCgAlcyA6ICVmICVmICVmICVmCgAgIABHcmFwaCAlcyBoYXMgYXJyYXkgcGFja2luZyB3aXRoIHVzZXIgdmFsdWVzIGJ1dCBubyAic29ydHYiIGF0dHJpYnV0ZXMgYXJlIGRlZmluZWQuAHBpbgBXYXJuaW5nOiBub2RlICVzLCBwb3NpdGlvbiAlcywgZXhwZWN0ZWQgdHdvIGZsb2F0cwoAY29vcmRzAGxheW91dCAlcwoAZW5kICVzCgBpZHggPT0gc3oAbGF5b3V0LmMAZXhwYW5kQ2x1c3RlcgBpID09IGRlZwBnZXRFZGdlTGlzdABfZGdfJWQAZGVyaXZlIGdyYXBoICVzIG9mICVzCgBub2RlICIlcyIgaXMgY29udGFpbmVkIGluIHR3byBub24tY29tcGFyYWJsZSBjbHVzdGVycyAiJXMiIGFuZCAiJXMiCgBfcG9ydF8lc18lc18lc18lbGQAX3BvcnRfJXNfKCVkKV8oJWQpXyVsZAAlbGYsJWxmLCVsZiwlbGYlYwBncmFwaCAlcywgY29vcmQgJXMsIGV4cGVjdGVkIGZvdXIgZG91YmxlcwoAc3BsaW5lcyBhbmQgY2x1c3RlciBlZGdlcyBub3Qgc3VwcG9ydGVkIC0gdXNpbmcgbGluZSBzZWdtZW50cwoAbWF4aXRlcgBUMABmZHAgZG9lcyBub3Qgc3VwcG9ydCBzdGFydD1zZWxmIC0gaWdub3JpbmcKAHhMYXlvdXQgADk6cHJpc20AdHJpZXMgPSAlZCwgbW9kZSA9ICVzCgBkZXJpdmVkAGluZm8Ac2ZkcCBvbmx5IHN1cHBvcnRzIHN0YXJ0PXJhbmRvbQoASwByZXB1bHNpdmVmb3JjZQBsZXZlbHMAc21vb3RoaW5nAHF1YWR0cmVlAGJlYXV0aWZ5AG92ZXJsYXBfc2hyaW5rAHJvdGF0aW9uAGxhYmVsX3NjaGVtZQBsYWJlbF9zY2hlbWUgPSAlZCA+IDQgOiBpZ25vcmluZwoAZmFzdABhdmdfZGlzdABncmFwaF9kaXN0AHBvd2VyX2Rpc3QAc3ByaW5nAGRpbWVuAGRpbQBzcHJpbmdfZWxlY3RyaWNhbF9jb250cm9sOgoAICByZXB1bHNpdmUgYW5kIGF0dHJhY3RpdmUgZXhwb25lbnRzOiAlLjAzZiAlLjAzZgoAICByYW5kb20gc3RhcnQgJWQgc2VlZCAlZAoAICBLIDogJS4wM2YgQyA6ICUuMDNmCgAgIG1heCBsZXZlbHMgJWQgY29hcnNlbl9zY2hlbWUgJWQgY29hcnNlbl9ub2RlICVkCgAgIHF1YWR0cmVlIHNpemUgJWQgbWF4X2xldmVsICVkCgAgIEJhcm5lcy1IdXR0IGNvbnN0YW50ICUuMDNmIHRvbGVyYW5jZSAgJS4wM2YgbWF4aXRlciAlZAoAICBjb29saW5nICUuMDNmIHN0ZXAgc2l6ZSAgJS4wM2YgYWRhcHRpdmUgJWQKACAgYmVhdXRpZnlfbGVhdmVzICVkIG5vZGUgd2VpZ2h0cyAlZCByb3RhdGlvbiAlLjAzZgoAICBzbW9vdGhpbmcgJXMgb3ZlcmxhcCAlZCBpbml0aWFsX3NjYWxpbmcgJS4wM2YgZG9fc2hyaW5raW5nICVkCgAgIG9jdHJlZSBzY2hlbWUgJXMgbWV0aG9kICVzCgAgIGVkZ2VfbGFiZWxpbmdfc2NoZW1lICVkCgBTUFJJTkdfRUxFQ1RSSUNBTABTUFJJTkdfTUFYRU5UAFNUUkVTU19NQVhFTlQAU1RSRVNTX0FQUFJPWABTVFJFU1MAVU5JRk9STV9TVFJFU1MARlVMTF9TVFJFU1MATk9ORQBOT1JNQUwARkFTVABIWUJSSUQAU1RSRVNTX01BSk9SSVpBVElPTl9HUkFQSF9ESVNUAFNUUkVTU19NQUpPUklaQVRJT05fQVZHX0RJU1QAU1RSRVNTX01BSk9SSVpBVElPTl9QT1dFUl9ESVNUAFNQUklORwBUUklBTkdMRQBSTkcADSAgICAgICAgICAgICAgICBpdGVyID0gJWQsIHN0ZXAgPSAlZiBGbm9ybSA9ICVmIG56ID0gJWQgIEsgPSAlZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAc3ByaW5nX2VsZWN0cmljYWxfZW1iZWRkaW5nX3Nsb3cAZG1lYW4gPSAlZiwgcmhvID0gJWYKAHNlbmQgcmFuZG9tIGNvb3JkaW5hdGVzCgBzY2FsaW5nIGZhY3RvciA9ICVmCgBRVUFEX1RSRUVfSFlCUklELCBzaXplIGxhcmdlciB0aGFuICVkLCBzd2l0Y2ggdG8gZmFzdCBxdWFkdHJlZQBjdHJsLT5vdmVybGFwPSVkCgAlZCAlZAoAdW5pZm9ybV9zdHJlc3MuYwBVbmlmb3JtU3RyZXNzU21vb3RoZXJfbmV3AFNwYXJzZU1hdHJpeF9pc19zeW1tZXRyaWMoQiwgRkFMU0UpAHVuaWZvcm1fc3RyZXNzAHxlZGdlbGFiZWx8AGxlbgBub3JtYWxpemUAb3ZlcmxhcABPdmVybGFwIHZhbHVlICIlcyIgdW5zdXBwb3J0ZWQgLSBpZ25vcmVkCgBVbnJlY29nbml6ZWQgb3ZlcmxhcCB2YWx1ZSAiJXMiIC0gdXNpbmcgZmFsc2UKAFZvcm9ub2kAb3ZlcmxhcDogJXMgdmFsdWUgJWQgc2NhbGluZyAlLjA0ZgoAb3ZlcmxhcF9zY2FsaW5nAHZvcm9ub2kAc2NhbGluZwB2cHNjAGlwc2VwAG9zY2FsZQBvbGQgc2NhbGluZwBzY2FsZXh5AHggYW5kIHkgc2NhbGluZwBvcnRobwBvcnRob2dvbmFsIGNvbnN0cmFpbnRzAG9ydGhvX3l4AG9ydGhveHkAeHkgb3J0aG9nb25hbCBjb25zdHJhaW50cwBvcnRob3l4AHl4IG9ydGhvZ29uYWwgY29uc3RyYWludHMAcG9ydGhvAHBzZXVkby1vcnRob2dvbmFsIGNvbnN0cmFpbnRzAHBvcnRob195eABwb3J0aG94eQB4eSBwc2V1ZG8tb3J0aG9nb25hbCBjb25zdHJhaW50cwBwb3J0aG95eAB5eCBwc2V1ZG8tb3J0aG9nb25hbCBjb25zdHJhaW50cwBwcmlzbQBBZGp1c3RpbmcgJXMgdXNpbmcgJXMKAFVuaGFuZGxlZCBhZGp1c3Qgb3B0aW9uICVzCgBOdW1iZXIgb2YgaXRlcmF0aW9ucyA9ICVkCgBOdW1iZXIgb2YgaW5jcmVhc2VzID0gJWQKAG92ZXJsYXAgWyVkXSA6ICVkCgB2b3JvX21hcmdpbgBzZXAAZXNlcABOb2RlIHNlcGFyYXRpb246IGFkZD0lZCAoJWYsJWYpCgAlZiwlZgBzY2FsZSA9ICglLjAzZiwlLjAzZikKAEVkZ2Ugc2VwYXJhdGlvbjogYWRkPSVkICglZiwlZikKAENhbGN1bGF0aW5nIGNpcmN1aXQgbW9kZWwAY29uanVnYXRlX2dyYWRpZW50OiB1bmV4cGVjdGVkIGxlbmd0aCAwIHZlY3RvcgoAQ2FsY3VsYXRpbmcgc3Vic2V0IG1vZGVsAGdyYXBoIGlzIGRpc2Nvbm5lY3RlZC4gSGVuY2UsIHRoZSBjaXJjdWl0IG1vZGVsCgBpcyB1bmRlZmluZWQuIFJldmVydGluZyB0byB0aGUgc2hvcnRlc3QgcGF0aCBtb2RlbC4KAENhbGN1bGF0aW5nIE1EUyBtb2RlbABDYWxjdWxhdGluZyBzaG9ydGVzdCBwYXRocwA6ICUuMmYgc2VjCgBTZXR0aW5nIGluaXRpYWwgcG9zaXRpb25zADogJS4yZiBzZWMAY2cAZGVsdGEgPD0gMHhGRkZGAGNvbnN0cmFpbnQuYwBta05Db25zdHJhaW50RwB2ZwBjb21wcmVzcyAlZyAKAHNjYWxlIGJ5ICVnLCVnIAoAYmVzdGNvc3QgPCBIVUdFX1ZBTABjb21wdXRlU2NhbGVYWQBHcmFwaHZpeiBidWlsdCB3aXRob3V0IGFueSB0cmlhbmd1bGF0aW9uIGxpYnJhcnkKAGRlbGF1bmF5X3RyaWFuZ3VsYXRpb246ICVzCgBkZWxhdW5heV90cmk6ICVzCgB0cnlpbmcgdG8gZGVsZXRlIGEgbm9uLWxpbmUKAAppbnRlcnNlY3Rpb24gYXQgJS4zZiAlLjNmCgBzZWcjJWQgOiAoJS4zZiwgJS4zZikgKCUuM2YsICUuM2YpCgByZW1vdmVfb3ZlcmxhcDogR3JhcGh2aXogbm90IGJ1aWx0IHdpdGggdHJpYW5ndWxhdGlvbiBsaWJyYXJ5CgBtYWtlQWRkUG9seTogdW5rbm93biBzaGFwZSB0eXBlICVzCgBtYWtlUG9seTogdW5rbm93biBzaGFwZSB0eXBlICVzCgB4IT1OVUxMAHNtYXJ0X2luaV94LmMASU1EU19naXZlbl9kaW0AaWxsLWNvbmRpdGlvbmVkAHJvb3QgPSAlcyBtYXggc3RlcHMgdG8gcm9vdCA9ICVkCgB0d29waTogdXNlIG9mIHdlaWdodD0wIGNyZWF0ZXMgZGlzY29ubmVjdGVkIGNvbXBvbmVudC4KAFJhbmsgc2VwYXJhdGlvbiA9IAAlLjAzbGYgAGFyZWEAaW5zZXQAJXMgY29vcmQgJS41ZyAlLjVnIGh0ICVmIHdpZHRoICVmCgAlLjAzZgByZWMgJWYgJWYgJWYgJWYKACVmIC0gJWYgJWYgJWYgJWYgPSAlZiAoJWYgJWYgJWYgJWYpCgB0cnlpbmcgdG8gYWRkIHRvIHJlY3QgeyVmICsvLSAlZiwgJWYgKy8tICVmfQoAdG90YWwgYWRkZWQgc28gZmFyID0gJWQKAGFkZGluZyAlZCBpdGVtcywgdG90YWwgYXJlYSA9ICVmLCB3ID0gJWYsIGFyZWEvdz0lZgoAY29tcG91bmRFZGdlczogY291bGQgbm90IGNvbnN0cnVjdCBvYnN0YWNsZXMgLSBmYWxsaW5nIGJhY2sgdG8gc3RyYWlnaHQgbGluZSBlZGdlcwoAY29tcG91bmRFZGdlczogbm9kZXMgdG91Y2ggLSBmYWxsaW5nIGJhY2sgdG8gc3RyYWlnaHQgbGluZSBlZGdlcwoAcGFjayB2YWx1ZSAlZCBpcyBzbWFsbGVyIHRoYW4gZXNlcCAoJS4wM2YsJS4wM2YpCgBzZXAgdmFsdWUgKCUuMDNmLCUuMDNmKSBpcyBzbWFsbGVyIHRoYW4gZXNlcCAoJS4wM2YsJS4wM2YpCgBjYyVzXyVkAGNjJXMrJWQAY19jbnQgPT0gMABjb21wLmMAZmluZENDb21wAGdyaWQoJWQsJWQpOiAlcwoAd2d0ID4gMABRdWFkVHJlZS5jAFF1YWRUcmVlX3JlcHVsc2l2ZV9mb3JjZV9hY2N1bXVsYXRlAHF0Mi0+biA+IDAAcXQxLT5uID4gMCAmJiBxdDItPm4gPiAwAFF1YWRUcmVlX3JlcHVsc2l2ZV9mb3JjZV9pbnRlcmFjdABkaXN0ID4gMAAhKHEtPmwpAFF1YWRUcmVlX2FkZF9pbnRlcm5hbABpaSA8IDE8PGRpbSAmJiBpaSA+PSAwAHEtPnF0c1tpaV0AcS0+biA9PSAxACEocS0+cXRzKQBxLT5sAHdpZHRoID4gMABRdWFkVHJlZV9uZXcAQS0+Zm9ybWF0ID09IEZPUk1BVF9DU1IAU3BhcnNlTWF0cml4LmMAU3BhcnNlTWF0cml4X3RyYW5zcG9zZQBBICYmIEIAU3BhcnNlTWF0cml4X2FkZABBLT5mb3JtYXQgPT0gQi0+Zm9ybWF0ICYmIEEtPmZvcm1hdCA9PSBGT1JNQVRfQ1NSAEEtPnR5cGUgPT0gQi0+dHlwZQBTcGFyc2VNYXRyaXhfaXNfc3ltbWV0cmljAEEtPmZvcm1hdCA9PSBGT1JNQVRfQ09PUkQAU3BhcnNlTWF0cml4X2Zyb21fY29vcmRpbmF0ZV9mb3JtYXQAbSA+IDAgJiYgbiA+IDAgJiYgbnogPj0gMABTcGFyc2VNYXRyaXhfZnJvbV9jb29yZGluYXRlX2FycmF5c19pbnRlcm5hbABBAGphW21hc2tbamFbal1dXSA9PSBqYVtqXQBTcGFyc2VNYXRyaXhfc3VtX3JlcGVhdF9lbnRyaWVzAGlkIDwgbiooeW1heC15bWluKzEpAGphW21hc2tbaWRdXSA9PSBqYVtqXQBTcGFyc2VNYXRyaXhfbXVsdGlwbHlfZGVuc2UyAEEtPnR5cGUgPT0gTUFUUklYX1RZUEVfUkVBTABTcGFyc2VNYXRyaXhfbXVsdGlwbHlfdmVjdG9yAEEtPnR5cGUgPT0gTUFUUklYX1RZUEVfUkVBTCB8fCBBLT50eXBlID09IE1BVFJJWF9UWVBFX0lOVEVHRVIAU3BhcnNlTWF0cml4X211bHRpcGx5X2RlbnNlMQBTcGFyc2VNYXRyaXhfbXVsdGlwbHkAamNbbWFza1tqYltrXV1dID09IGpiW2tdAFNwYXJzZU1hdHJpeF9tdWx0aXBseTMAamRbbWFza1tqY1trXV1dID09IGpjW2tdAFNwYXJzZU1hdHJpeF9jb29yZGluYXRlX2Zvcm1fYWRkX2VudHJpZXMAU3BhcnNlTWF0cml4X2RpdmlkZV9yb3dfYnlfZGVncmVlAG4gPiAxAGdlbmVyYWwuYwBpcmFuZABvbmVibG9jawBtaW5kaXN0AGFydGljdWxhdGlvbl9wb3MAcm9vdABQcmlvcml0eVF1ZXVlLmMAUHJpb3JpdHlRdWV1ZV9wdXNoAGdhaW4gPD0gcS0+bmdhaW4AU3BhcnNlTWF0cml4X2lzX3N5bW1ldHJpYyhBLCBGQUxTRSkAcG9zdF9wcm9jZXNzLmMAaWRlYWxfZGlzdGFuY2VfbWF0cml4AGxlbiA+IDAAU3RyZXNzTWFqb3JpemF0aW9uU21vb3RoZXIyX25ldwBueiA+IDAAaWRlYWxfZGlzdF9zY2hlbWUgdmFsdWUgd3JvbmcAU3BhcnNlTWF0cml4X2lzX3N5bW1ldHJpYyhBLCBGQUxTRSkgJiYgQS0+dHlwZSA9PSBNQVRSSVhfVFlQRV9SRUFMAFNwYXJzZVN0cmVzc01ham9yaXphdGlvblNtb290aGVyX25ldwBpZGlhZyA+PSAwAFN0cmVzc01ham9yaXphdGlvblNtb290aGVyX3Ntb290aAAoIWpjbikgJiYgKCF2YWwpAGdldF9lZGdlX2xhYmVsX21hdHJpeABUcmlhbmdsZVNtb290aGVyX25ldwBqZGlhZyA+PSAwAFNwcmluZ1Ntb290aGVyX25ldwAhZmxhZwBTcHJpbmdTbW9vdGhlcl9zbW9vdGgAbmVpZ2hiPSVkCgByb290ID0gJXMKAF9ibG9ja18lZABzLT5zeiA+IDAAYmxvY2t0cmVlLmMAcG9wAGFjdHVhbABub2RlbGlzdC5jAGluc2VydE5vZGVsaXN0AF9zcGFuXyVkAF9jbG9uZV8lZABpcABkZWdsaXN0LmMAcmVtb3ZlRGVnbGlzdABFcnJvcgBXYXJuaW5nACVzOiAAdXNlcm91dDogY291bGQgbm90IGFsbG9jYXRlIG1lbW9yeQoAX0FHX3N0cmRhdGEAX0FHX2RhdGFkaWN0AGFnZGljdG9mOiB1bmtub3duIGtpbmQgJWQKACVjJWxkAG1lbW9yeSBhbGxvY2F0aW9uIGZhaWx1cmUAYWdkZWxldGUgb24gd3JvbmcgZ3JhcGgAX0FHX3BlbmRpbmcAYWdyZWNvcmRfY2FsbGJhY2sgb2YgYSBiYWQgb2JqZWN0AHBlbmQgZGljdG9mIGEgYmFkIG9iamVjdABtb3ZlIHRvIGZyb250IGxvY2sgaW5jb25zaXN0ZW5jeQBcXABmYXRhbCBmbGV4IHNjYW5uZXIgaW50ZXJuYWwgZXJyb3ItLW5vIGFjdGlvbiBmb3VuZAAlcwoAZmF0YWwgZmxleCBzY2FubmVyIGludGVybmFsIGVycm9yLS1lbmQgb2YgYnVmZmVyIG1pc3NlZABmYXRhbCBlcnJvciAtIHNjYW5uZXIgaW5wdXQgYnVmZmVyIG92ZXJmbG93AG91dCBvZiBkeW5hbWljIG1lbW9yeSBpbiBhYWdfZ2V0X25leHRfYnVmZmVyKCkAaW5wdXQAc3ludGF4IGFtYmlndWl0eSAtIGJhZGx5IGRlbGltaXRlZCBudW1iZXIgJwAnIGluIGxpbmUgJWQgb2YgACBzcGxpdHMgaW50byB0d28gdG9rZW5zCgAlcwBsaW5lACVkICUxWyJdJW4Ab3V0IG9mIGR5bmFtaWMgbWVtb3J5IGluIGFhZ19jcmVhdGVfYnVmZmVyKCkAb3V0IG9mIGR5bmFtaWMgbWVtb3J5IGluIGFhZ2Vuc3VyZV9idWZmZXJfc3RhY2soKQA6IAAgaW4gbGluZSAlZAAgbmVhciAnACBzY2FubmluZyBhIHF1b3RlZCBzdHJpbmcgKG1pc3NpbmcgZW5kcXVvdGU/IGxvbmdlciB0aGFuICVkPykAClN0cmluZyBzdGFydGluZzoiACBzY2FubmluZyBhIEhUTUwgc3RyaW5nIChtaXNzaW5nICc+Jz8gYmFkIG5lc3Rpbmc/IGxvbmdlciB0aGFuICVkPykAClN0cmluZyBzdGFydGluZzo8ACBzY2FubmluZyBhIC8qLi4uKi8gY29tbWVudCAobWlzc2luZyAnKi8/IGxvbmdlciB0aGFuICVkPykAZmxleCBzY2FubmVyIHB1c2gtYmFjayBvdmVyZmxvdwAiIgBzdHJpY3QAbGluZWxlbmd0aAA7CgAgW2tleT0AXQAgWwAsCgA9AF8lbGRfU1VTUEVDVABkaQBzdHJpY3QgAHsKAF07CgAS7u4UCQPu/u7u7gHu7u4B7u4K/u4TGRXuEwHu7u7uCxHu7u7u7u7u7u4B7u4WCQEBHQ8X7u4aFxvu7hzu7u7uARn77u7uAe4Q7u4e7u7u7gACAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIXEQICAgICAgICAgICAgISEAITAgIWAgICAgICAgICAgICAgICAgICAgICAgICAgIUAhUCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg4CDwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIBAgMEBQYHCAkKCwwNCwMEBQ8HAwwNBgwNDgwNGhUWAAEAAwcOBg8IDA0SEyoQEQkQLzARMhcTDRQSLhIUQRMyEyxAKkIZLEJGIgwNDiMPCRARChARyRARLUVG/AEG9g8H9iQCEBEvMDZNTigmOzwqNjE5PT8vOkDYRDA+JTdDNUsrOElMAAMJAAAAAQ4CCwwIIyQlNjs9AA0QEhsWHBInMiIXMx48Bgc1BQ8RFBgpABMpAAAAAAA3FSgdHgAhJjQfMD4ZLAAbACAaKgArOi4vADE4OS0AAgIBAAMDAQABAAEBAQACAQEAAgIDAQEAAAUAAQMBAwUDAQEBAQIAAQAEAgACAQEDAgEAAwIBAAEBAAEBAQMAGBkZGRobHBwdHR4eHx8gICEhIiIjJCQmJyUlKCgpKSkqKisrKywsLS0uLy8wMTEyMzQ2NTc3Nzg4ODk5Ojru7v/u7u7u7u4fIO4A7+7u7gzu7u4IDe7u7vju7u7u7u717v8DCAQhBQsSEycUFRYpMkEXGBkaLDM0QkdIG0ocHS4eTx8ga2V5AGF0dHJpYnV0ZSBtYWNyb3Mgbm90IGltcGxlbWVudGVkACVzOiVzAENvdWxkIG5vdCBvcGVuICIlcyIgZm9yIHdyaXRpbmcgOiAlcwoATm8gbGlieiBzdXBwb3J0LgoALiVkAG5vbmFtZS5ndgBndndyaXRlX25vX3ogcHJvYmxlbSAlZAoAbWVtb3J5IGFsbG9jYXRpb24gZmFpbHVyZQoATm8gbGlieiBzdXBwb3J0CgBndnByaW50ZjogJXMKAC05OTk5OTk5OTk5OTk5OTkuOTkAZ3JhcGh2aXoAMi40MC4xADIwMTYxMjI1LjAzMDQAcmVuZGVyAGRldmljZQBsb2FkaW1hZ2UAZHluYW1pYyBsb2FkaW5nIG5vdCBhdmFpbGFibGUKAFVzaW5nICVzOiAlczolcwoAZ3Z1c2Vyc2hhcGUuYwBndnVzZXJzaGFwZV9maW5kAGd2dXNlcnNoYXBlX2ZpbGVfYWNjZXNzAEZpbGVuYW1lICIlcyIgaXMgdW5zYWZlCgAlcyB3aGlsZSBvcGVuaW5nICVzCgB1cy0+ZgBndnVzZXJzaGFwZV9vcGVuACIlcyIgd2FzIG5vdCBmb3VuZCBhcyBhIGZpbGUgb3IgYXMgYSBzaGFwZSBsaWJyYXJ5IG1lbWJlcgoAL01lZGlhQm94AChbYS16XVthLXpBLVpdKik9IihbXiJdKikiAGNhbm5vdCBjb21waWxlIHJlZ3VsYXIgZXhwcmVzc2lvbiAlcwAlbGYlMnMAcHQAdmlld0JveAAlbGYgJWxmICVsZiAlbGYAaW4AcHgAcGMAIgBjbQBtbQAlJUJvdW5kaW5nQm94OgAB0NHS09TV1tfY2QA8c3ZnAFdFQlAAd2VicAAobGliKQCJUE5HDQoaCgBwbmcAJSFQUy1BZG9iZS0AQk0AYm1wAEdJRjgAZ2lmAP/Y/+AAanBlZwAlUERGLQBwZGYAxdDTxgBlcHMAPD94bWwAeG1sAFJJRkYAcmlmZgAAAAEAAGljbwAlZCAlZCAlZCAlZABMYXlvdXQgd2FzIG5vdCBkb25lCgBmYWlsdXJlIG1hbGxvYydpbmcgZm9yIHJlc3VsdCBzdHJpbmcAZ2M6IE91dCBvZiBtZW1vcnkKAF9jY18Ab3JpZwBvcABjY29tcHMuYwBtYXBDbHVzdABjY2dyYXBoaW5mbwBjY2dub2RlaW5mbwAoJTRsZCkgJTdsZCBub2RlcyAlN2xkIGVkZ2VzCgAgICAgICAgJTdkIG5vZGVzICU3ZCBlZGdlcyAlN2xkIGNvbXBvbmVudHMgJXMKAGRnAEVycm9yOiBub2RlICIlcyIgYmVsb25ncyB0byB0d28gbm9uLW5lc3RlZCBjbHVzdGVycyAiJXMiIGFuZCAiJXMiCgBzb3J0dgByb3cgbWFqb3IAY29sdW1uIG1ham9yAGFycmF5IHBhY2tpbmc6ICVzICVkIHJvd3MgJWQgY29sdW1ucwoAYmJbJXNdICUuNWcgJS41ZyAlLjVnICUuNWcKAHN0ZXAgc2l6ZSA9ICVkCgBwb3NbJWRdICVkICVkCgBjYyAoJWQgY2VsbHMpIGF0ICglZCwlZCkgKCVkLCVkKQoAY2MgKCVkIGNlbGxzKSBhdCAoJWQsJWQpCgAlcyBuby4gY2VsbHMgJWQgVyAlZCBIICVkCgAgICVkICVkIGNlbGwKAGxpYnBhY2s6IGRpc2MgPSAlZiAoIDwgMCkKAFBhY2tpbmc6IGNvbXB1dGUgZ3JpZCBzaXplCgBhICVmIGIgJWYgYyAlZiBkICVmIHIgJWYKAHJvb3QgJWQgKCVmKSAlZCAoJWYpCgAgcjEgJWYgcjIgJWYKAHBpbmZvAHBhY2suYwBnZXRQYWNrSW5mbwAgIG1hcmdpbiAlZAoAcGFja21vZGUAcGFyc2VQYWNrTW9kZUluZm8AYXJyYXkAYXNwZWN0ACVmAHBhY2sgaW5mbzoKACAgbW9kZSAgICVzCgAgIGFzcGVjdCAlZgoAICBzaXplICAgJWQKACAgZmxhZ3MgICVkCgB1bmRlZmluZWQAcGFjawBBcnJvdyB0eXBlICIlcyIgdW5rbm93biAtIGlnbm9yaW5nCgBub3JtYWwAY3JvdwB0ZWUAZG90AGludgB2ZWUAcGVuAG1wdHkAY3VydmUAaWN1cnZlAGwAaGFsZgBpbnZlbXB0eQBfYmFja2dyb3VuZABfZHJhd18AQ291bGQgbm90IHBhcnNlICJfYmFja2dyb3VuZCIgYXR0cmlidXRlIGluIGdyYXBoICVzCgAgICIlcyIKAG5vIG1lbW9yeSBmcm9tIHptYWxsb2MoKQoAb2JqAGVtaXQuYwBwb3Bfb2JqX3N0YXRlAGNsdXN0ACVsZABwYWdlJWQsJWRfAFRvdGFsIHNpemUgPiAxIGluICIlcyIgY29sb3Igc3BlYyAASWxsZWdhbCBsZW5ndGggdmFsdWUgaW4gIiVzIiBjb2xvciBhdHRyaWJ1dGUgAGxucmNvbG9yc2NoZW1lAGVtaXRfZWRnZV9sYWJlbAAlcy0lcwBmb3J3YXJkAGJhY2sAIC0+IAAgLS0gAGluIGVkZ2UgJXMlcyVzCgBsYWJlbGFsaWduZWQAZWRnZWhyZWYAZWRnZVVSTABsYWJlbGhyZWYAbGFiZWxVUkwAdGFpbGhyZWYAdGFpbFVSTABoZWFkaHJlZgBoZWFkVVJMAGVkZ2V0YXJnZXQAbGFiZWx0YXJnZXQAdGFpbHRhcmdldABoZWFkdGFyZ2V0AGVkZ2V0b29sdGlwAGxhYmVsdG9vbHRpcAB0YWlsdG9vbHRpcABoZWFkdG9vbHRpcAABbmVzdGluZyBub3QgYWxsb3dlZCBpbiBzdHlsZTogJXMKAHVubWF0Y2hlZCAnKScgaW4gc3R5bGU6ICVzCgB0cnVuY2F0aW5nIHN0eWxlICclcycKAHVubWF0Y2hlZCAnKCcgaW4gc3R5bGU6ICVzCgBhbGwAaW4gY2x1c3RlciAlcwoATW9yZSB0aGFuIDIgY29sb3JzIHNwZWNpZmllZCBmb3IgYSBncmFkaWVudCAtIGlnbm9yaW5nIHJlbWFpbmluZwoAZ3JhZGllbnQgcGVuIGNvbG9ycyBub3QgeWV0IHN1cHBvcnRlZC4KAEltYWdlcyB1bnN1cHBvcnRlZCBpbiAiYmFja2dyb3VuZCIgYXR0cmlidXRlCgBsYXllcnMgbm90IHN1cHBvcnRlZCBpbiAlcyBvdXRwdXQKAExheW91dCB3YXMgbm90IGRvbmUuICBNaXNzaW5nIGxheW91dCBwbHVnaW5zPyAKAGd2UmVuZGVySm9icyAlczogJS4yZiBzZWNzLgoAbGF5b3V0IHdhcyBub3QgZG9uZQoAcmVuZGVyZXIgZm9yICVzIGlzIHVuYXZhaWxhYmxlCgBwYWdlZGlyPSVzIGlnbm9yZWQKAHZpZXdwb3J0ACVsZiwlbGYsJWxmLCclW14nXScAJWxmLCVsZiwlbGYsJVteLF0lcwAlbGYsJWxmLCVsZiwlbGYsJWxmAG91dHB1dG9yZGVyAG9kZXNmaXJzdABkZ2VzZmlyc3QAbGF5ZXJzAGxheWVyc2VsZWN0AFRoZSBsYXllcnNlbGVjdCBhdHRyaWJ1dGUgIiVzIiBkb2VzIG5vdCBtYXRjaCBhbnkgbGF5ZXIgc3BlY2lmZWQgYnkgdGhlIGxheWVycyBhdHRyaWJ1dGUgLSBpZ25vcmVkLgoAbGF5ZXJzZXAAOgkgAGxheWVybGlzdHNlcAAsAFRoZSBjaGFyYWN0ZXIgJyVjJyBhcHBlYXJzIGluIGJvdGggdGhlIGxheWVyc2VwIGFuZCBsYXllcmxpc3RzZXAgYXR0cmlidXRlcyAtIGxheWVybGlzdHNlcCBpZ25vcmVkLgoAcGFkAEJMAHBhZ2VkaXIAc29saWQAAHNldGxpbmV3aWR0aAAxAABzcGwtPnNpemUgPiAwAGluaXRfc3BsaW5lc19iYgBiei5zaXplID4gMABiZXppZXJfYmIAYnouc2l6ZSAlIDMgPT0gMQAlbGYAZm9udHBhdGgARE9URk9OVFBBVEgAR0RGT05UUEFUSABpbWFnZXBhdGgAcXVhbnR1bQByYW5rZGlyAExSAEJUAFJMAG5vZGVzZXAAcmFua3NlcABlcXVhbGx5AHNob3dib3hlcwBmb250bmFtZXMAc2l6ZQBwYWdlAGNlbnRlcgByb3RhdGUAb3JpZW50YXRpb24AbGFuZHNjYXBlAGNsdXN0ZXJyYW5rAGNvbmNlbnRyYXRlAGRwaQByZXNvbHV0aW9uAG9yZGVyaW5nAGZpbGxjb2xvcgBmb250c2l6ZQBmb250bmFtZQBmb250Y29sb3IAeGxhYmVsAHBlbndpZHRoAHBlcmlwaGVyaWVzAHNrZXcAZGlzdG9ydGlvbgBub2p1c3RpZnkAbGF5ZXIAZ3JvdXAAY29tbWVudAB2ZXJ0aWNlcwB6AHdlaWdodABsYWJlbGZsb2F0AGRpcgBhcnJvd2hlYWQAYXJyb3d0YWlsAGhlYWRsYWJlbAB0YWlsbGFiZWwAbGFiZWxmb250c2l6ZQBsYWJlbGZvbnRuYW1lAGxhYmVsZm9udGNvbG9yAGxhYmVsZGlzdGFuY2UAbGFiZWxhbmdsZQBtaW5sZW4AZGVjb3JhdGUAYXJyb3dzaXplAGNvbnN0cmFpbnQAdGFpbGNsaXAAaGVhZGNsaXAAbGFiZWxqdXN0AGxvY2FsAGdsb2JhbAAlbGYsJWxmJWMAJWxmJWMAcmF0aW8AYXV0bwBjb21wcmVzcwBleHBhbmQAZmlsbABnZABwcwBzdmcAY2hhcnNldAB1dGYtOABsYXRpbi0xAGxhdGluMQBsMQBJU08tODg1OS0xAElTT184ODU5LTEASVNPODg1OS0xAElTTy1JUi0xMDAAYmlnLTUAYmlnNQB1dGY4AFVuc3VwcG9ydGVkIGNoYXJzZXQgIiVzIiAtIGFzc3VtaW5nIHV0Zi04CgBVbnN1cHBvcnRlZCBjaGFyc2V0IHZhbHVlICVkCgBVVEYtOABCSUctNQBpbiBsYWJlbCBvZiBncmFwaCAlcwoAaW4gbGFiZWwgb2Ygbm9kZSAlcwoAaW4gbGFiZWwgb2YgZWRnZSAlcyAlcyAlcwoAa2luZCA9PSBMVF9OT05FAGxhYmVscy5jAG1ha2VfbGFiZWwAXEwAXEcAXEUAXEgAXFQAJiMxMzsAJiMxMDsAJnF1b3Q7ACYjMTYwOwAmYW1wOwAmZ3Q7ACYjMzk7ACYjNDU7ACZsdDsAJXMgJWQgbm9kZXMgJWQgZWRnZXMgbWF4aXRlcj0lZCBiYWxhbmNlPSVkCgBuZXR3b3JrIHNpbXBsZXg6IAAlZCAAJXMlZCBub2RlcyAlZCBlZGdlcyAlZCBpdGVyICUuMmYgc2VjCgB1cGRhdGU6IG1pc21hdGNoZWQgbGNhIGluIHRyZWV1cGRhdGVzCgBUcmVlX2VkZ2Uuc2l6ZSA9PSBOX25vZGVzIC0gMQBucy5jAGZlYXNpYmxlX3RyZWUAIVRSRUVfRURHRShlKQBtZXJnZV90cmVlcwAocjAtPmhlYXBfaW5kZXggPiAtMSkgfHwgKHIxLT5oZWFwX2luZGV4ID4gLTEpAFNUc2V0VW5pb24Aci0+aGVhcF9pbmRleCA+PSAwAGFkZF90cmVlX2VkZ2U6IG1pc3NpbmcgdHJlZSBlZGdlCgBhZGRfdHJlZV9lZGdlOiBlbXB0eSBvdXRlZGdlIGxpc3QKAGFkZF90cmVlX2VkZ2U6IGVtcHR5IGluZWRnZSBsaXN0CgB0cm91YmxlIGluIGluaXRfcmFuawoACSVzICVkCgBzZWFyY2hzaXplAGdyYXBoIAAgAG5v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JXMKAGNhbid0IG9wZW4gbGlicmFyeSBmaWxlICVzCgBFT0YAQkVHSU4ARU5EAFRSQUlMRVIAL3VzZXJfc2hhcGVfJWQgewoAJSVCZWdpbkRvY3VtZW50OgoAJSVFbmREb2N1bWVudAoAfSBiaW5kIGRlZgoAVVRGLTggaW5wdXQgdXNlcyBub24tTGF0aW4xIGNoYXJhY3RlcnMgd2hpY2ggY2Fubm90IGJlIGhhbmRsZWQgYnkgdGhpcyBQb3N0U2NyaXB0IGRyaXZlcgoAY2Fubm90IHJlLWFsbG9jYXRlIHBzCgByb3V0ZXNwbGluZXNpbml0OiBjYW5ub3QgYWxsb2NhdGUgcHMKAHJvdXRlc3BsaW5lczogJWQgZWRnZXMsICVkIGJveGVzICUuMmYgc2VjCgBpbiByb3V0ZXNwbGluZXMsIGNhbm5vdCBmaW5kIE5PUk1BTCBlZGdlCgBpbiByb3V0ZXNwbGluZXMsIGlsbGVnYWwgdmFsdWVzIG9mIHByZXYgJWQgYW5kIG5leHQgJWQsIGxpbmUgJWQKAGluIHJvdXRlc3BsaW5lcywgZWRnZSBpcyBhIGxvb3AgYXQgJXMKAGluIHJvdXRlc3BsaW5lcywgUHNob3J0ZXN0cGF0aCBmYWlsZWQKAGluIHJvdXRlc3BsaW5lcywgUHJvdXRlc3BsaW5lIGZhaWxlZAoAVW5hYmxlIHRvIHJlY2xhaW0gYm94IHNwYWNlIGluIHNwbGluZSByb3V0aW5nIGZvciBlZGdlICIlcyIgLT4gIiVzIi4gU29tZXRoaW5nIGlzIHByb2JhYmx5IHNlcmlvdXNseSB3cm9uZy4KAGluIGNoZWNrcGF0aCwgYm94IDAgaGFzIExMIGNvb3JkID4gVVIgY29vcmQKAGluIGNoZWNrcGF0aCwgYm94ICVkIGhhcyBMTCBjb29yZCA+IFVSIGNvb3JkCgBpbiBjaGVja3BhdGgsIGJveGVzICVkIGFuZCAlZCBkb24ndCB0b3VjaAoAaW4gY2hlY2twYXRoLCBzdGFydCBwb3J0IG5vdCBpbiBmaXJzdCBib3gKAGluIGNoZWNrcGF0aCwgZW5kIHBvcnQgbm90IGluIGxhc3QgYm94CgAlZCBib3hlczoKACVkICglLjVnLCAlLjVnKSwgKCUuNWcsICUuNWcpCgBjb25zdHJhaW5lZABub3QgY29uc3RyYWluZWQAc3RhcnQgcG9ydDogKCUuNWcsICUuNWcpLCB0YW5nZW50IGFuZ2xlOiAlLjVnLCAlcwoAZW5kIHBvcnQ6ICglLjVnLCAlLjVnKSwgdGFuZ2VudCBhbmdsZTogJS41ZywgJXMKAHNpZGVzID09IDQAc2hhcGVzLmMAcm91bmRfY29ybmVycwBiYWQgbGFiZWwgZm9ybWF0ICVzCgBcTgBtYXJnaW4AJWxmLCVsZgByZWd1bGFyAGN1c3RvbQBzaGFwZWZpbGUAPG5pbD4ATm8gb3IgaW1wcm9wZXIgc2hhcGVmaWxlPSIlcyIgZm9yIG5vZGUgIiVzIgoATm8gb3IgaW1wcm9wZXIgaW1hZ2U9IiVzIiBmb3Igbm9kZSAiJXMiCgBsYWJlbGxvYwBub2RlICclcycsIGdyYXBoICclcycgc2l6ZSB0b28gc21hbGwgZm9yIGxhYmVsCgBlcHNmAHVzaW5nICVzIGZvciB1bmtub3duIHNoYXBlICVzCgBwb2x5Z29uAG92YWwAY2lyY2xlAHBvaW50AGVnZwB0cmlhbmdsZQBwbGFpbnRleHQAcGxhaW4AZGlhbW9uZAB0cmFwZXppdW0AcGFyYWxsZWxvZ3JhbQBob3VzZQBwZW50YWdvbgBoZXhhZ29uAHNlcHRhZ29uAG9jdGFnb24Abm90ZQB0YWIAZm9sZGVyAGJveDNkAGNvbXBvbmVudABjeWxpbmRlcgByZWN0AHJlY3RhbmdsZQBzcXVhcmUAZG91YmxlY2lyY2xlAGRvdWJsZW9jdGFnb24AdHJpcGxlb2N0YWdvbgBpbnZ0cmlhbmdsZQBpbnZ0cmFwZXppdW0AaW52aG91c2UAdW5kZXJsaW5lAE1kaWFtb25kAE1zcXVhcmUATWNpcmNsZQBwcm9tb3RlcgBjZHMAdGVybWluYXRvcgB1dHIAaW5zdWxhdG9yAHJpYm9zaXRlAHJuYXN0YWIAcHJvdGVhc2VzaXRlAHByb3RlaW5zdGFiAHByaW1lcnNpdGUAcmVzdHJpY3Rpb25zaXRlAGZpdmVwb3ZlcmhhbmcAdGhyZWVwb3ZlcmhhbmcAbm92ZXJoYW5nAGFzc2VtYmx5AHNpZ25hdHVyZQBycHJvbW90ZXIAbGFycm93AHJhcnJvdwBscHJvbW90ZXIAcmVjb3JkAE1yZWNvcmQAc3RhcgAjODA4MDgwACNmY2ZjZmMAIzMwMzAzMAAjZThlOGU4ACNlMGUwZTAAI2YwZjBmMAAjMTAxMDEwACNmOGY4ZjgAaW4gbm9kZSAlcwoAcm91bmRlZABkaWFnb25hbHMAcmFkaWFsAHN0cmlwZWQAd2VkZ2VkAF8Abm9kZSAlcywgcG9ydCAlcywgdW5yZWNvZ25pemVkIGNvbXBhc3MgcG9pbnQgJyVzJyAtIGlnbm9yZWQKAG5vZGUgJXMsIHBvcnQgJXMgdW5yZWNvZ25pemVkCgAlLjVnICUuNWcgdHJhbnNsYXRlIG5ld3BhdGggdXNlcl9zaGFwZV8lZAoAaW52aXMAAGZpbGxlZAAAcwBlAHcAc3BsaW5lcy5jAGJlZ2lucGF0aABQLT5lbmQudGhldGEgPCAyICogTV9QSQBlbmRwYXRoAG1ha2VTZWxmRWRnZQBnZXRzcGxpbmVwb2ludHM6IG5vIHNwbGluZSBwb2ludHMgYXZhaWxhYmxlIGZvciBlZGdlICglcywlcykKAHBvbHlsaW5lTWlkcG9pbnQAc3Bhbi0+Zm9udAB0ZXh0c3Bhbi5jAHRleHRzcGFuX3NpemUAZm9udC0+bmFtZQBmb250bmFtZTogIiVzIiByZXNvbHZlZCB0bzogJXMKAGZvbnRuYW1lOiB1bmFibGUgdG8gcmVzb2x2ZSAiJXMiCgBjb3VyAGFyaWFsAGhlbHZldGljYQBbaW50ZXJuYWwgdGltZXNdAFtpbnRlcm5hbCBjb3VyaWVyXQBbaW50ZXJuYWwgYXJpYWxdAEF2YW50R2FyZGUtQm9vawBVUlcgR290aGljIEwAYm9vawBzYW5zLVNlcmlmAEF2YW50R2FyZGUtQm9va09ibGlxdWUAb2JsaXF1ZQBpdGFsaWMAQXZhbnRHYXJkZS1EZW1pAGRlbWkAQXZhbnRHYXJkZS1EZW1pT2JsaXF1ZQBCb29rbWFuLURlbWkAVVJXIEJvb2ttYW4gTABzZXJpZgBCb29rbWFuLURlbWlJdGFsaWMAQm9va21hbi1MaWdodABsaWdodABCb29rbWFuLUxpZ2h0SXRhbGljAENvdXJpZXIAbW9ub3NwYWNlAENvdXJpZXItQm9sZABDb3VyaWVyLUJvbGRPYmxpcXVlAENvdXJpZXItT2JsaXF1ZQBIZWx2ZXRpY2EASGVsdmV0aWNhLUJvbGQASGVsdmV0aWNhLUJvbGRPYmxpcXVlAEhlbHZldGljYS1OYXJyb3cAY29uZGVuc2VkAEhlbHZldGljYS1OYXJyb3ctQm9sZABIZWx2ZXRpY2EtTmFycm93LUJvbGRPYmxpcXVlAEhlbHZldGljYS1OYXJyb3ctT2JsaXF1ZQBIZWx2ZXRpY2EtT2JsaXF1ZQBOZXdDZW50dXJ5U2NobGJrLUJvbGQAQ2VudHVyeSBTY2hvb2xib29rIEwATmV3Q2VudHVyeVNjaGxiay1Cb2xkSXRhbGljAE5ld0NlbnR1cnlTY2hsYmstSXRhbGljAE5ld0NlbnR1cnlTY2hsYmstUm9tYW4Acm9tYW4AUGFsYXRpbm8tQm9sZABQYWxhdGlubyBMaW5vdHlwZQBQYWxhdGluby1Cb2xkSXRhbGljAFBhbGF0aW5vLUl0YWxpYwBQYWxhdGluby1Sb21hbgBTeW1ib2wAZmFudGFzeQBUaW1lcy1Cb2xkAFRpbWVzAFRpbWVzLUJvbGRJdGFsaWMAVGltZXMtSXRhbGljAFphcGZDaGFuY2VyeS1NZWRpdW1JdGFsaWMAVVJXIENoYW5jZXJ5IEwAbWVkaXVtAFphcGZEaW5nYmF0cwBEaW5nYmF0cwBpbnB1dHNjYWxlAG5vAHRydWUAeWVzAHV0aWxzLmMAdSA9PSBVRl9maW5kKHUpAFVGX3NldG5hbWUAAWZpbGUgbG9hZGluZyBpcyBkaXNhYmxlZCBiZWNhdXNlIHRoZSBlbnZpcm9ubWVudCBjb250YWlucyBTRVJWRVJfTkFNRT0iJXMiCmFuZCB0aGUgR1ZfRklMRV9QQVRIIHZhcmlhYmxlIGlzIHVuc2V0IG9yIGVtcHR5LgoAUGF0aCBwcm92aWRlZCB0byBmaWxlOiAiJXMiIGhhcyBiZWVuIGlnbm9yZWQgYmVjYXVzZSBmaWxlcyBhcmUgb25seSBwZXJtaXR0ZWQgdG8gYmUgbG9hZGVkIGZyb20gdGhlIGRpcmVjdG9yaWVzIGluICIlcyIgd2hlbiBydW5uaW5nIGluIGFuIGh0dHAgc2VydmVyLgoAJXMlcyVzAC8AOgBlbGxpcHNlAFRpbWVzLVJvbWFuAGNsdXN0ZXIAX19jbHVzdGVybm9kZXMAY2x1c3RlciBjeWNsZSAlcyAtLSAlcyBub3Qgc3VwcG9ydGVkCgB0YWlsIGNsdXN0ZXIgJXMgaW5zaWRlIGhlYWQgY2x1c3RlciAlcwoAaGVhZCBjbHVzdGVyICVzIGluc2lkZSB0YWlsIGNsdXN0ZXIgJXMKAHRhaWwgbm9kZSAlcyBpbnNpZGUgaGVhZCBjbHVzdGVyICVzCgBoZWFkIG5vZGUgJXMgaW5zaWRlIHRhaWwgY2x1c3RlciAlcwoAX18AbGFiZWwAc2hhcGUAYm94AFR3byBjbHVzdGVycyBuYW1lZCAlcyAtIHRoZSBzZWNvbmQgd2lsbCBiZSBpZ25vcmVkCgBtYXBOAEFFbGlnAEFhY3V0ZQBBY2lyYwBBZ3JhdmUAQWxwaGEAQXJpbmcAQXRpbGRlAEF1bWwAQmV0YQBDY2VkaWwAQ2hpAERhZ2dlcgBEZWx0YQBFVEgARWFjdXRlAEVjaXJjAEVncmF2ZQBFcHNpbG9uAEV0YQBFdW1sAEdhbW1hAElhY3V0ZQBJY2lyYwBJZ3JhdmUASW90YQBJdW1sAEthcHBhAExhbWJkYQBNdQBOdGlsZGUATnUAT0VsaWcAT2FjdXRlAE9jaXJjAE9ncmF2ZQBPbWVnYQBPbWljcm9uAE9zbGFzaABPdGlsZGUAT3VtbABQaGkAUGkAUHJpbWUAUHNpAFJobwBTY2Fyb24AU2lnbWEAVEhPUk4AVGF1AFRoZXRhAFVhY3V0ZQBVY2lyYwBVZ3JhdmUAVXBzaWxvbgBVdW1sAFhpAFlhY3V0ZQBZdW1sAFpldGEAYWFjdXRlAGFjaXJjAGFjdXRlAGFlbGlnAGFncmF2ZQBhbGVmc3ltAGFscGhhAGFtcABhbmQAYW5nAGFyaW5nAGFzeW1wAGF0aWxkZQBhdW1sAGJkcXVvAGJldGEAYnJ2YmFyAGJ1bGwAY2FwAGNjZWRpbABjZWRpbABjZW50AGNoaQBjaXJjAGNsdWJzAGNvbmcAY29weQBjcmFycgBjdXAAY3VycmVuAGRBcnIAZGFnZ2VyAGRhcnIAZGVnAGRlbHRhAGRpYW1zAGRpdmlkZQBlYWN1dGUAZWNpcmMAZWdyYXZlAGVtcHR5AGVtc3AAZW5zcABlcHNpbG9uAGVxdWl2AGV0YQBldGgAZXVtbABldXJvAGV4aXN0AGZub2YAZm9yYWxsAGZyYWMxMgBmcmFjMTQAZnJhYzM0AGZyYXNsAGdhbW1hAGdlAGd0AGhBcnIAaGFycgBoZWFydHMAaGVsbGlwAGlhY3V0ZQBpY2lyYwBpZXhjbABpZ3JhdmUAaW1hZ2UAaW5maW4AaW50AGlvdGEAaXF1ZXN0AGlzaW4AaXVtbABrYXBwYQBsQXJyAGxhbWJkYQBsYW5nAGxhcXVvAGxhcnIAbGNlaWwAbGRxdW8AbGUAbGZsb29yAGxvd2FzdABsb3oAbHJtAGxzYXF1bwBsc3F1bwBsdABtYWNyAG1kYXNoAG1pY3JvAG1pZGRvdABtdQBuYWJsYQBuYnNwAG5kYXNoAG5lAG5pAG5vdABub3RpbgBuc3ViAG50aWxkZQBudQBvYWN1dGUAb2NpcmMAb2VsaWcAb2dyYXZlAG9saW5lAG9tZWdhAG9taWNyb24Ab3BsdXMAb3IAb3JkZgBvcmRtAG9zbGFzaABvdGlsZGUAb3RpbWVzAG91bWwAcGFyYQBwYXJ0AHBlcm1pbABwZXJwAHBoaQBwaQBwaXYAcGx1c21uAHBvdW5kAHByaW1lAHByb2QAcHJvcABwc2kAcXVvdAByQXJyAHJhZGljAHJhbmcAcmFxdW8AcmFycgByY2VpbAByZHF1bwByZWFsAHJlZwByZmxvb3IAcmhvAHJsbQByc2FxdW8AcnNxdW8Ac2JxdW8Ac2Nhcm9uAHNkb3QAc2VjdABzaHkAc2lnbWEAc2lnbWFmAHNpbQBzcGFkZXMAc3ViAHN1YmUAc3VtAHN1cABzdXAxAHN1cDIAc3VwMwBzdXBlAHN6bGlnAHRhdQB0aGVyZTQAdGhldGEAdGhldGFzeW0AdGhpbnNwAHRob3JuAHRpbGRlAHRpbWVzAHRyYWRlAHVBcnIAdWFjdXRlAHVhcnIAdWNpcmMAdWdyYXZlAHVtbAB1cHNpaAB1cHNpbG9uAHV1bWwAd2VpZXJwAHhpAHlhY3V0ZQB5ZW4AeXVtbAB6ZXRhAHp3agB6d25qAFVURjggY29kZXMgPiA0IGJ5dGVzIGFyZSBub3QgY3VycmVudGx5IHN1cHBvcnRlZCAoZ3JhcGggJXMpIC0gdHJlYXRlZCBhcyBMYXRpbi0xLiBQZXJoYXBzICItR2NoYXJzZXQ9bGF0aW4xIiBpcyBuZWVkZWQ/CgBJbnZhbGlkICVkLWJ5dGUgVVRGOCBmb3VuZCBpbiBpbnB1dCBvZiBncmFwaCAlcyAtIHRyZWF0ZWQgYXMgTGF0aW4tMS4gUGVyaGFwcyAiLUdjaGFyc2V0PWxhdGluMSIgaXMgbmVlZGVkPwoAYnouc2l6ZQBvdmVybGFwX2JlemllcgB1cnZlZABvbXBvdW5kAGFsc2UAaW5lAG9uZQBvAHJ0aG8Ab2x5bGluZQBwbGluZQBydWUAZXMAVW5rbm93biAic3BsaW5lcyIgdmFsdWU6ICIlcyIgLSBpZ25vcmVkCgBzcGxpbmVzAG9kYgBPcnRob2dvbmFsIGVkZ2VzIGRvIG5vdCBjdXJyZW50bHkgaGFuZGxlIGVkZ2UgbGFiZWxzLiBUcnkgdXNpbmcgeGxhYmVscy4KAG9ydGhvICVzICVzCgBjaGFuaQBvcnRoby5jAGNoYW5TZWFyY2gAY3AAJSUhUFMtQWRvYmUtMi4wCiUlJSVCb3VuZGluZ0JveDogKGF0ZW5kKQovcG9pbnQgewogIC9ZIGV4Y2ggZGVmCiAgL1ggZXhjaCBkZWYKICBuZXdwYXRoCiAgWCBZIDMgMCAzNjAgYXJjIGZpbGwKfSBkZWYKL2NlbGwgewogIC9ZIGV4Y2ggZGVmCiAgL1ggZXhjaCBkZWYKICAveSBleGNoIGRlZgogIC94IGV4Y2ggZGVmCiAgbmV3cGF0aAogIHggeSBtb3ZldG8KICB4IFkgbGluZXRvCiAgWCBZIGxpbmV0bwogIFggeSBsaW5ldG8KICBjbG9zZXBhdGggc3Ryb2tlCn0gZGVmCi9ub2RlIHsKIC91IGV4Y2ggZGVmCiAvciBleGNoIGRlZgogL2QgZXhjaCBkZWYKIC9sIGV4Y2ggZGVmCiBuZXdwYXRoIGwgZCBtb3ZldG8KIHIgZCBsaW5ldG8gciB1IGxpbmV0byBsIHUgbGluZXRvCiBjbG9zZXBhdGggZmlsbAp9IGRlZgoKACVkICVkIHRyYW5zbGF0ZQoAMC44IDAuOCAwLjggc2V0cmdiY29sb3IKAHNob3dwYWdlCiUlJSVUcmFpbGVyCiUlJSVCb3VuZGluZ0JveDogJWQgJWQgJWQgJWQKAG5ld3BhdGggJWQgJWQgbW92ZXRvCgAlZCAlZCBsaW5ldG8KACVkICVkIGxpbmV0byBzdHJva2UKAGNoYW5uZWwgJWQgKCVmLCVmKQoAIC0+CgAgICAgIAAoKCVmLCVmKSwoJWYsJWYpKSAlcyAlcwBCX1JJR0hUAEJfRE9XTgBCX0xFRlQAQl9VUABCX05PREUAc2VnAG5leHRfc2VnAGRlY2lkZV9wb2ludABpbmNvbXBhcmFibGUgc2VnbWVudHMgISEgLS0gQWJvcnRpbmcKAHMxLT5jb21tX2Nvb3JkPT1zMi0+Y29tbV9jb29yZABpc19wYXJhbGxlbABncmFwaCBHIHsKACBub2RlW3NoYXBlPXBvaW50XQoAICAlZCBbcG9zPSIlZCwlZCJdCgAgICVkIC0tICVkW2xlbj0iJWYiXQoAfQoAY29sb3IgJXMAJXMgaXMgbm90IGEga25vd24gY29sb3IuCgBlcnJvciBpbiBjb2x4bGF0ZSgpCgBzb2xpZABpbnZpc2libGUAYm9sZABzZXRsaW5ld2lkdGgAZmlsbGVkAHVuZmlsbGVkAHRhcGVyZWQAZ3ZyZW5kZXJfc2V0X3N0eWxlOiB1bnN1cHBvcnRlZCBzdHlsZSAlcyAtIGlnbm9yaW5nCgBndnJlbmRlci5jAGd2cmVuZGVyX3VzZXJzaGFwZQBuYW1lAG5hbWVbMF0AYm90aABsYXlvdXQATGF5b3V0IHR5cGU6ICIlcyIgbm90IHJlY29nbml6ZWQuIFVzZSBvbmUgb2Y6JXMKAGpvYgBndmxvYWRpbWFnZS5jAGd2bG9hZGltYWdlAHVzAHVzLT5uYW1lAHVzLT5uYW1lWzBdAE5vIGxvYWRpbWFnZSBwbHVnaW4gZm9yICIlcyIKAFEATGVmdABLUF9MZWZ0AFJpZ2h0AEtQX1JpZ2h0AFVwAEtQX1VwAERvd24AS1BfRG93bgBwbHVzAEtQX0FkZABtaW51cwBLUF9TdWJ0cmFjdABGAGVkZ2UAdGFpbHBvcnQAaGVhZHBvcnQAa2V5AFVSTABub2RlAGRpZ3JhcGgAZ3JhcGgAc3ViZ3JhcGgAX0xUWF9saWJyYXJ5AHRleHRsYXlvdXQAb2JqcC0+bGJsAHhsYWJlbHMuYwB4bGFkanVzdAB4bGludGVyc2VjdGlvbnMAbHAgIT0gY2xwAGdldGludHJzeGkAb2JqcDEtPnN6LnggPT0gMCAmJiBvYmpwMS0+c3oueSA9PSAwAGxibGVuY2xvc2luZwB2cAB4bGhkeHVubG9hZABzaXplPT1mcmVlZAByZWN0LmJvdW5kYXJ5WzJdIDwgSU5UX01BWABvYmpwbHBta3MAcmVjdC5ib3VuZGFyeVszXSA8IElOVF9NQVgAb3V0IG9mIG1lbW9yeQoAIyUyeCUyeCUyeCUyeAAlbGYlbGYlbGYAL2FjY2VudDMvMQAvYWNjZW50My8yAC9hY2NlbnQzLzMAL2FjY2VudDQvMQAvYWNjZW50NC8yAC9hY2NlbnQ0LzMAL2FjY2VudDQvNAAvYWNjZW50NS8xAC9hY2NlbnQ1LzIAL2FjY2VudDUvMwAvYWNjZW50NS80AC9hY2NlbnQ1LzUAL2FjY2VudDYvMQAvYWNjZW50Ni8yAC9hY2NlbnQ2LzMAL2FjY2VudDYvNAAvYWNjZW50Ni81AC9hY2NlbnQ2LzYAL2FjY2VudDcvMQAvYWNjZW50Ny8yAC9hY2NlbnQ3LzMAL2FjY2VudDcvNAAvYWNjZW50Ny81AC9hY2NlbnQ3LzYAL2FjY2VudDcvNwAvYWNjZW50OC8xAC9hY2NlbnQ4LzIAL2FjY2VudDgvMwAvYWNjZW50OC80AC9hY2NlbnQ4LzUAL2FjY2VudDgvNgAvYWNjZW50OC83AC9hY2NlbnQ4LzgAL2JsdWVzMy8xAC9ibHVlczMvMgAvYmx1ZXMzLzMAL2JsdWVzNC8xAC9ibHVlczQvMgAvYmx1ZXM0LzMAL2JsdWVzNC80AC9ibHVlczUvMQAvYmx1ZXM1LzIAL2JsdWVzNS8zAC9ibHVlczUvNAAvYmx1ZXM1LzUAL2JsdWVzNi8xAC9ibHVlczYvMgAvYmx1ZXM2LzMAL2JsdWVzNi80AC9ibHVlczYvNQAvYmx1ZXM2LzYAL2JsdWVzNy8xAC9ibHVlczcvMgAvYmx1ZXM3LzMAL2JsdWVzNy80AC9ibHVlczcvNQAvYmx1ZXM3LzYAL2JsdWVzNy83AC9ibHVlczgvMQAvYmx1ZXM4LzIAL2JsdWVzOC8zAC9ibHVlczgvNAAvYmx1ZXM4LzUAL2JsdWVzOC82AC9ibHVlczgvNwAvYmx1ZXM4LzgAL2JsdWVzOS8xAC9ibHVlczkvMgAvYmx1ZXM5LzMAL2JsdWVzOS80AC9ibHVlczkvNQAvYmx1ZXM5LzYAL2JsdWVzOS83AC9ibHVlczkvOAAvYmx1ZXM5LzkAL2JyYmcxMC8xAC9icmJnMTAvMTAAL2JyYmcxMC8yAC9icmJnMTAvMwAvYnJiZzEwLzQAL2JyYmcxMC81AC9icmJnMTAvNgAvYnJiZzEwLzcAL2JyYmcxMC84AC9icmJnMTAvOQAvYnJiZzExLzEAL2JyYmcxMS8xMAAvYnJiZzExLzExAC9icmJnMTEvMgAvYnJiZzExLzMAL2JyYmcxMS80AC9icmJnMTEvNQAvYnJiZzExLzYAL2JyYmcxMS83AC9icmJnMTEvOAAvYnJiZzExLzkAL2JyYmczLzEAL2JyYmczLzIAL2JyYmczLzMAL2JyYmc0LzEAL2JyYmc0LzIAL2JyYmc0LzMAL2JyYmc0LzQAL2JyYmc1LzEAL2JyYmc1LzIAL2JyYmc1LzMAL2JyYmc1LzQAL2JyYmc1LzUAL2JyYmc2LzEAL2JyYmc2LzIAL2JyYmc2LzMAL2JyYmc2LzQAL2JyYmc2LzUAL2JyYmc2LzYAL2JyYmc3LzEAL2JyYmc3LzIAL2JyYmc3LzMAL2JyYmc3LzQAL2JyYmc3LzUAL2JyYmc3LzYAL2JyYmc3LzcAL2JyYmc4LzEAL2JyYmc4LzIAL2JyYmc4LzMAL2JyYmc4LzQAL2JyYmc4LzUAL2JyYmc4LzYAL2JyYmc4LzcAL2JyYmc4LzgAL2JyYmc5LzEAL2JyYmc5LzIAL2JyYmc5LzMAL2JyYmc5LzQAL2JyYmc5LzUAL2JyYmc5LzYAL2JyYmc5LzcAL2JyYmc5LzgAL2JyYmc5LzkAL2J1Z24zLzEAL2J1Z24zLzIAL2J1Z24zLzMAL2J1Z240LzEAL2J1Z240LzIAL2J1Z240LzMAL2J1Z240LzQAL2J1Z241LzEAL2J1Z241LzIAL2J1Z241LzMAL2J1Z241LzQAL2J1Z241LzUAL2J1Z242LzEAL2J1Z242LzIAL2J1Z242LzMAL2J1Z242LzQAL2J1Z242LzUAL2J1Z242LzYAL2J1Z243LzEAL2J1Z243LzIAL2J1Z243LzMAL2J1Z243LzQAL2J1Z243LzUAL2J1Z243LzYAL2J1Z243LzcAL2J1Z244LzEAL2J1Z244LzIAL2J1Z244LzMAL2J1Z244LzQAL2J1Z244LzUAL2J1Z244LzYAL2J1Z244LzcAL2J1Z244LzgAL2J1Z245LzEAL2J1Z245LzIAL2J1Z245LzMAL2J1Z245LzQAL2J1Z245LzUAL2J1Z245LzYAL2J1Z245LzcAL2J1Z245LzgAL2J1Z245LzkAL2J1cHUzLzEAL2J1cHUzLzIAL2J1cHUzLzMAL2J1cHU0LzEAL2J1cHU0LzIAL2J1cHU0LzMAL2J1cHU0LzQAL2J1cHU1LzEAL2J1cHU1LzIAL2J1cHU1LzMAL2J1cHU1LzQAL2J1cHU1LzUAL2J1cHU2LzEAL2J1cHU2LzIAL2J1cHU2LzMAL2J1cHU2LzQAL2J1cHU2LzUAL2J1cHU2LzYAL2J1cHU3LzEAL2J1cHU3LzIAL2J1cHU3LzMAL2J1cHU3LzQAL2J1cHU3LzUAL2J1cHU3LzYAL2J1cHU3LzcAL2J1cHU4LzEAL2J1cHU4LzIAL2J1cHU4LzMAL2J1cHU4LzQAL2J1cHU4LzUAL2J1cHU4LzYAL2J1cHU4LzcAL2J1cHU4LzgAL2J1cHU5LzEAL2J1cHU5LzIAL2J1cHU5LzMAL2J1cHU5LzQAL2J1cHU5LzUAL2J1cHU5LzYAL2J1cHU5LzcAL2J1cHU5LzgAL2J1cHU5LzkAL2RhcmsyMy8xAC9kYXJrMjMvMgAvZGFyazIzLzMAL2RhcmsyNC8xAC9kYXJrMjQvMgAvZGFyazI0LzMAL2RhcmsyNC80AC9kYXJrMjUvMQAvZGFyazI1LzIAL2RhcmsyNS8zAC9kYXJrMjUvNAAvZGFyazI1LzUAL2RhcmsyNi8xAC9kYXJrMjYvMgAvZGFyazI2LzMAL2RhcmsyNi80AC9kYXJrMjYvNQAvZGFyazI2LzYAL2RhcmsyNy8xAC9kYXJrMjcvMgAvZGFyazI3LzMAL2RhcmsyNy80AC9kYXJrMjcvNQAvZGFyazI3LzYAL2RhcmsyNy83AC9kYXJrMjgvMQAvZGFyazI4LzIAL2RhcmsyOC8zAC9kYXJrMjgvNAAvZGFyazI4LzUAL2RhcmsyOC82AC9kYXJrMjgvNwAvZGFyazI4LzgAL2duYnUzLzEAL2duYnUzLzIAL2duYnUzLzMAL2duYnU0LzEAL2duYnU0LzIAL2duYnU0LzMAL2duYnU0LzQAL2duYnU1LzEAL2duYnU1LzIAL2duYnU1LzMAL2duYnU1LzQAL2duYnU1LzUAL2duYnU2LzEAL2duYnU2LzIAL2duYnU2LzMAL2duYnU2LzQAL2duYnU2LzUAL2duYnU2LzYAL2duYnU3LzEAL2duYnU3LzIAL2duYnU3LzMAL2duYnU3LzQAL2duYnU3LzUAL2duYnU3LzYAL2duYnU3LzcAL2duYnU4LzEAL2duYnU4LzIAL2duYnU4LzMAL2duYnU4LzQAL2duYnU4LzUAL2duYnU4LzYAL2duYnU4LzcAL2duYnU4LzgAL2duYnU5LzEAL2duYnU5LzIAL2duYnU5LzMAL2duYnU5LzQAL2duYnU5LzUAL2duYnU5LzYAL2duYnU5LzcAL2duYnU5LzgAL2duYnU5LzkAL2dyZWVuczMvMQAvZ3JlZW5zMy8yAC9ncmVlbnMzLzMAL2dyZWVuczQvMQAvZ3JlZW5zNC8yAC9ncmVlbnM0LzMAL2dyZWVuczQvNAAvZ3JlZW5zNS8xAC9ncmVlbnM1LzIAL2dyZWVuczUvMwAvZ3JlZW5zNS80AC9ncmVlbnM1LzUAL2dyZWVuczYvMQAvZ3JlZW5zNi8yAC9ncmVlbnM2LzMAL2dyZWVuczYvNAAvZ3JlZW5zNi81AC9ncmVlbnM2LzYAL2dyZWVuczcvMQAvZ3JlZW5zNy8yAC9ncmVlbnM3LzMAL2dyZWVuczcvNAAvZ3JlZW5zNy81AC9ncmVlbnM3LzYAL2dyZWVuczcvNwAvZ3JlZW5zOC8xAC9ncmVlbnM4LzIAL2dyZWVuczgvMwAvZ3JlZW5zOC80AC9ncmVlbnM4LzUAL2dyZWVuczgvNgAvZ3JlZW5zOC83AC9ncmVlbnM4LzgAL2dyZWVuczkvMQAvZ3JlZW5zOS8yAC9ncmVlbnM5LzMAL2dyZWVuczkvNAAvZ3JlZW5zOS81AC9ncmVlbnM5LzYAL2dyZWVuczkvNwAvZ3JlZW5zOS84AC9ncmVlbnM5LzkAL2dyZXlzMy8xAC9ncmV5czMvMgAvZ3JleXMzLzMAL2dyZXlzNC8xAC9ncmV5czQvMgAvZ3JleXM0LzMAL2dyZXlzNC80AC9ncmV5czUvMQAvZ3JleXM1LzIAL2dyZXlzNS8zAC9ncmV5czUvNAAvZ3JleXM1LzUAL2dyZXlzNi8xAC9ncmV5czYvMgAvZ3JleXM2LzMAL2dyZXlzNi80AC9ncmV5czYvNQAvZ3JleXM2LzYAL2dyZXlzNy8xAC9ncmV5czcvMgAvZ3JleXM3LzMAL2dyZXlzNy80AC9ncmV5czcvNQAvZ3JleXM3LzYAL2dyZXlzNy83AC9ncmV5czgvMQAvZ3JleXM4LzIAL2dyZXlzOC8zAC9ncmV5czgvNAAvZ3JleXM4LzUAL2dyZXlzOC82AC9ncmV5czgvNwAvZ3JleXM4LzgAL2dyZXlzOS8xAC9ncmV5czkvMgAvZ3JleXM5LzMAL2dyZXlzOS80AC9ncmV5czkvNQAvZ3JleXM5LzYAL2dyZXlzOS83AC9ncmV5czkvOAAvZ3JleXM5LzkAL29yYW5nZXMzLzEAL29yYW5nZXMzLzIAL29yYW5nZXMzLzMAL29yYW5nZXM0LzEAL29yYW5nZXM0LzIAL29yYW5nZXM0LzMAL29yYW5nZXM0LzQAL29yYW5nZXM1LzEAL29yYW5nZXM1LzIAL29yYW5nZXM1LzMAL29yYW5nZXM1LzQAL29yYW5nZXM1LzUAL29yYW5nZXM2LzEAL29yYW5nZXM2LzIAL29yYW5nZXM2LzMAL29yYW5nZXM2LzQAL29yYW5nZXM2LzUAL29yYW5nZXM2LzYAL29yYW5nZXM3LzEAL29yYW5nZXM3LzIAL29yYW5nZXM3LzMAL29yYW5nZXM3LzQAL29yYW5nZXM3LzUAL29yYW5nZXM3LzYAL29yYW5nZXM3LzcAL29yYW5nZXM4LzEAL29yYW5nZXM4LzIAL29yYW5nZXM4LzMAL29yYW5nZXM4LzQAL29yYW5nZXM4LzUAL29yYW5nZXM4LzYAL29yYW5nZXM4LzcAL29yYW5nZXM4LzgAL29yYW5nZXM5LzEAL29yYW5nZXM5LzIAL29yYW5nZXM5LzMAL29yYW5nZXM5LzQAL29yYW5nZXM5LzUAL29yYW5nZXM5LzYAL29yYW5nZXM5LzcAL29yYW5nZXM5LzgAL29yYW5nZXM5LzkAL29ycmQzLzEAL29ycmQzLzIAL29ycmQzLzMAL29ycmQ0LzEAL29ycmQ0LzIAL29ycmQ0LzMAL29ycmQ0LzQAL29ycmQ1LzEAL29ycmQ1LzIAL29ycmQ1LzMAL29ycmQ1LzQAL29ycmQ1LzUAL29ycmQ2LzEAL29ycmQ2LzIAL29ycmQ2LzMAL29ycmQ2LzQAL29ycmQ2LzUAL29ycmQ2LzYAL29ycmQ3LzEAL29ycmQ3LzIAL29ycmQ3LzMAL29ycmQ3LzQAL29ycmQ3LzUAL29ycmQ3LzYAL29ycmQ3LzcAL29ycmQ4LzEAL29ycmQ4LzIAL29ycmQ4LzMAL29ycmQ4LzQAL29ycmQ4LzUAL29ycmQ4LzYAL29ycmQ4LzcAL29ycmQ4LzgAL29ycmQ5LzEAL29ycmQ5LzIAL29ycmQ5LzMAL29ycmQ5LzQAL29ycmQ5LzUAL29ycmQ5LzYAL29ycmQ5LzcAL29ycmQ5LzgAL29ycmQ5LzkAL3BhaXJlZDEwLzEAL3BhaXJlZDEwLzEwAC9wYWlyZWQxMC8yAC9wYWlyZWQxMC8zAC9wYWlyZWQxMC80AC9wYWlyZWQxMC81AC9wYWlyZWQxMC82AC9wYWlyZWQxMC83AC9wYWlyZWQxMC84AC9wYWlyZWQxMC85AC9wYWlyZWQxMS8xAC9wYWlyZWQxMS8xMAAvcGFpcmVkMTEvMTEAL3BhaXJlZDExLzIAL3BhaXJlZDExLzMAL3BhaXJlZDExLzQAL3BhaXJlZDExLzUAL3BhaXJlZDExLzYAL3BhaXJlZDExLzcAL3BhaXJlZDExLzgAL3BhaXJlZDExLzkAL3BhaXJlZDEyLzEAL3BhaXJlZDEyLzEwAC9wYWlyZWQxMi8xMQAvcGFpcmVkMTIvMTIAL3BhaXJlZDEyLzIAL3BhaXJlZDEyLzMAL3BhaXJlZDEyLzQAL3BhaXJlZDEyLzUAL3BhaXJlZDEyLzYAL3BhaXJlZDEyLzcAL3BhaXJlZDEyLzgAL3BhaXJlZDEyLzkAL3BhaXJlZDMvMQAvcGFpcmVkMy8yAC9wYWlyZWQzLzMAL3BhaXJlZDQvMQAvcGFpcmVkNC8yAC9wYWlyZWQ0LzMAL3BhaXJlZDQvNAAvcGFpcmVkNS8xAC9wYWlyZWQ1LzIAL3BhaXJlZDUvMwAvcGFpcmVkNS80AC9wYWlyZWQ1LzUAL3BhaXJlZDYvMQAvcGFpcmVkNi8yAC9wYWlyZWQ2LzMAL3BhaXJlZDYvNAAvcGFpcmVkNi81AC9wYWlyZWQ2LzYAL3BhaXJlZDcvMQAvcGFpcmVkNy8yAC9wYWlyZWQ3LzMAL3BhaXJlZDcvNAAvcGFpcmVkNy81AC9wYWlyZWQ3LzYAL3BhaXJlZDcvNwAvcGFpcmVkOC8xAC9wYWlyZWQ4LzIAL3BhaXJlZDgvMwAvcGFpcmVkOC80AC9wYWlyZWQ4LzUAL3BhaXJlZDgvNgAvcGFpcmVkOC83AC9wYWlyZWQ4LzgAL3BhaXJlZDkvMQAvcGFpcmVkOS8yAC9wYWlyZWQ5LzMAL3BhaXJlZDkvNAAvcGFpcmVkOS81AC9wYWlyZWQ5LzYAL3BhaXJlZDkvNwAvcGFpcmVkOS84AC9wYWlyZWQ5LzkAL3Bhc3RlbDEzLzEAL3Bhc3RlbDEzLzIAL3Bhc3RlbDEzLzMAL3Bhc3RlbDE0LzEAL3Bhc3RlbDE0LzIAL3Bhc3RlbDE0LzMAL3Bhc3RlbDE0LzQAL3Bhc3RlbDE1LzEAL3Bhc3RlbDE1LzIAL3Bhc3RlbDE1LzMAL3Bhc3RlbDE1LzQAL3Bhc3RlbDE1LzUAL3Bhc3RlbDE2LzEAL3Bhc3RlbDE2LzIAL3Bhc3RlbDE2LzMAL3Bhc3RlbDE2LzQAL3Bhc3RlbDE2LzUAL3Bhc3RlbDE2LzYAL3Bhc3RlbDE3LzEAL3Bhc3RlbDE3LzIAL3Bhc3RlbDE3LzMAL3Bhc3RlbDE3LzQAL3Bhc3RlbDE3LzUAL3Bhc3RlbDE3LzYAL3Bhc3RlbDE3LzcAL3Bhc3RlbDE4LzEAL3Bhc3RlbDE4LzIAL3Bhc3RlbDE4LzMAL3Bhc3RlbDE4LzQAL3Bhc3RlbDE4LzUAL3Bhc3RlbDE4LzYAL3Bhc3RlbDE4LzcAL3Bhc3RlbDE4LzgAL3Bhc3RlbDE5LzEAL3Bhc3RlbDE5LzIAL3Bhc3RlbDE5LzMAL3Bhc3RlbDE5LzQAL3Bhc3RlbDE5LzUAL3Bhc3RlbDE5LzYAL3Bhc3RlbDE5LzcAL3Bhc3RlbDE5LzgAL3Bhc3RlbDE5LzkAL3Bhc3RlbDIzLzEAL3Bhc3RlbDIzLzIAL3Bhc3RlbDIzLzMAL3Bhc3RlbDI0LzEAL3Bhc3RlbDI0LzIAL3Bhc3RlbDI0LzMAL3Bhc3RlbDI0LzQAL3Bhc3RlbDI1LzEAL3Bhc3RlbDI1LzIAL3Bhc3RlbDI1LzMAL3Bhc3RlbDI1LzQAL3Bhc3RlbDI1LzUAL3Bhc3RlbDI2LzEAL3Bhc3RlbDI2LzIAL3Bhc3RlbDI2LzMAL3Bhc3RlbDI2LzQAL3Bhc3RlbDI2LzUAL3Bhc3RlbDI2LzYAL3Bhc3RlbDI3LzEAL3Bhc3RlbDI3LzIAL3Bhc3RlbDI3LzMAL3Bhc3RlbDI3LzQAL3Bhc3RlbDI3LzUAL3Bhc3RlbDI3LzYAL3Bhc3RlbDI3LzcAL3Bhc3RlbDI4LzEAL3Bhc3RlbDI4LzIAL3Bhc3RlbDI4LzMAL3Bhc3RlbDI4LzQAL3Bhc3RlbDI4LzUAL3Bhc3RlbDI4LzYAL3Bhc3RlbDI4LzcAL3Bhc3RlbDI4LzgAL3BpeWcxMC8xAC9waXlnMTAvMTAAL3BpeWcxMC8yAC9waXlnMTAvMwAvcGl5ZzEwLzQAL3BpeWcxMC81AC9waXlnMTAvNgAvcGl5ZzEwLzcAL3BpeWcxMC84AC9waXlnMTAvOQAvcGl5ZzExLzEAL3BpeWcxMS8xMAAvcGl5ZzExLzExAC9waXlnMTEvMgAvcGl5ZzExLzMAL3BpeWcxMS80AC9waXlnMTEvNQAvcGl5ZzExLzYAL3BpeWcxMS83AC9waXlnMTEvOAAvcGl5ZzExLzkAL3BpeWczLzEAL3BpeWczLzIAL3BpeWczLzMAL3BpeWc0LzEAL3BpeWc0LzIAL3BpeWc0LzMAL3BpeWc0LzQAL3BpeWc1LzEAL3BpeWc1LzIAL3BpeWc1LzMAL3BpeWc1LzQAL3BpeWc1LzUAL3BpeWc2LzEAL3BpeWc2LzIAL3BpeWc2LzMAL3BpeWc2LzQAL3BpeWc2LzUAL3BpeWc2LzYAL3BpeWc3LzEAL3BpeWc3LzIAL3BpeWc3LzMAL3BpeWc3LzQAL3BpeWc3LzUAL3BpeWc3LzYAL3BpeWc3LzcAL3BpeWc4LzEAL3BpeWc4LzIAL3BpeWc4LzMAL3BpeWc4LzQAL3BpeWc4LzUAL3BpeWc4LzYAL3BpeWc4LzcAL3BpeWc4LzgAL3BpeWc5LzEAL3BpeWc5LzIAL3BpeWc5LzMAL3BpeWc5LzQAL3BpeWc5LzUAL3BpeWc5LzYAL3BpeWc5LzcAL3BpeWc5LzgAL3BpeWc5LzkAL3ByZ24xMC8xAC9wcmduMTAvMTAAL3ByZ24xMC8yAC9wcmduMTAvMwAvcHJnbjEwLzQAL3ByZ24xMC81AC9wcmduMTAvNgAvcHJnbjEwLzcAL3ByZ24xMC84AC9wcmduMTAvOQAvcHJnbjExLzEAL3ByZ24xMS8xMAAvcHJnbjExLzExAC9wcmduMTEvMgAvcHJnbjExLzMAL3ByZ24xMS80AC9wcmduMTEvNQAvcHJnbjExLzYAL3ByZ24xMS83AC9wcmduMTEvOAAvcHJnbjExLzkAL3ByZ24zLzEAL3ByZ24zLzIAL3ByZ24zLzMAL3ByZ240LzEAL3ByZ240LzIAL3ByZ240LzMAL3ByZ240LzQAL3ByZ241LzEAL3ByZ241LzIAL3ByZ241LzMAL3ByZ241LzQAL3ByZ241LzUAL3ByZ242LzEAL3ByZ242LzIAL3ByZ242LzMAL3ByZ242LzQAL3ByZ242LzUAL3ByZ242LzYAL3ByZ243LzEAL3ByZ243LzIAL3ByZ243LzMAL3ByZ243LzQAL3ByZ243LzUAL3ByZ243LzYAL3ByZ243LzcAL3ByZ244LzEAL3ByZ244LzIAL3ByZ244LzMAL3ByZ244LzQAL3ByZ244LzUAL3ByZ244LzYAL3ByZ244LzcAL3ByZ244LzgAL3ByZ245LzEAL3ByZ245LzIAL3ByZ245LzMAL3ByZ245LzQAL3ByZ245LzUAL3ByZ245LzYAL3ByZ245LzcAL3ByZ245LzgAL3ByZ245LzkAL3B1YnUzLzEAL3B1YnUzLzIAL3B1YnUzLzMAL3B1YnU0LzEAL3B1YnU0LzIAL3B1YnU0LzMAL3B1YnU0LzQAL3B1YnU1LzEAL3B1YnU1LzIAL3B1YnU1LzMAL3B1YnU1LzQAL3B1YnU1LzUAL3B1YnU2LzEAL3B1YnU2LzIAL3B1YnU2LzMAL3B1YnU2LzQAL3B1YnU2LzUAL3B1YnU2LzYAL3B1YnU3LzEAL3B1YnU3LzIAL3B1YnU3LzMAL3B1YnU3LzQAL3B1YnU3LzUAL3B1YnU3LzYAL3B1YnU3LzcAL3B1YnU4LzEAL3B1YnU4LzIAL3B1YnU4LzMAL3B1YnU4LzQAL3B1YnU4LzUAL3B1YnU4LzYAL3B1YnU4LzcAL3B1YnU4LzgAL3B1YnU5LzEAL3B1YnU5LzIAL3B1YnU5LzMAL3B1YnU5LzQAL3B1YnU5LzUAL3B1YnU5LzYAL3B1YnU5LzcAL3B1YnU5LzgAL3B1YnU5LzkAL3B1YnVnbjMvMQAvcHVidWduMy8yAC9wdWJ1Z24zLzMAL3B1YnVnbjQvMQAvcHVidWduNC8yAC9wdWJ1Z240LzMAL3B1YnVnbjQvNAAvcHVidWduNS8xAC9wdWJ1Z241LzIAL3B1YnVnbjUvMwAvcHVidWduNS80AC9wdWJ1Z241LzUAL3B1YnVnbjYvMQAvcHVidWduNi8yAC9wdWJ1Z242LzMAL3B1YnVnbjYvNAAvcHVidWduNi81AC9wdWJ1Z242LzYAL3B1YnVnbjcvMQAvcHVidWduNy8yAC9wdWJ1Z243LzMAL3B1YnVnbjcvNAAvcHVidWduNy81AC9wdWJ1Z243LzYAL3B1YnVnbjcvNwAvcHVidWduOC8xAC9wdWJ1Z244LzIAL3B1YnVnbjgvMwAvcHVidWduOC80AC9wdWJ1Z244LzUAL3B1YnVnbjgvNgAvcHVidWduOC83AC9wdWJ1Z244LzgAL3B1YnVnbjkvMQAvcHVidWduOS8yAC9wdWJ1Z245LzMAL3B1YnVnbjkvNAAvcHVidWduOS81AC9wdWJ1Z245LzYAL3B1YnVnbjkvNwAvcHVidWduOS84AC9wdWJ1Z245LzkAL3B1b3IxMC8xAC9wdW9yMTAvMTAAL3B1b3IxMC8yAC9wdW9yMTAvMwAvcHVvcjEwLzQAL3B1b3IxMC81AC9wdW9yMTAvNgAvcHVvcjEwLzcAL3B1b3IxMC84AC9wdW9yMTAvOQAvcHVvcjExLzEAL3B1b3IxMS8xMAAvcHVvcjExLzExAC9wdW9yMTEvMgAvcHVvcjExLzMAL3B1b3IxMS80AC9wdW9yMTEvNQAvcHVvcjExLzYAL3B1b3IxMS83AC9wdW9yMTEvOAAvcHVvcjExLzkAL3B1b3IzLzEAL3B1b3IzLzIAL3B1b3IzLzMAL3B1b3I0LzEAL3B1b3I0LzIAL3B1b3I0LzMAL3B1b3I0LzQAL3B1b3I1LzEAL3B1b3I1LzIAL3B1b3I1LzMAL3B1b3I1LzQAL3B1b3I1LzUAL3B1b3I2LzEAL3B1b3I2LzIAL3B1b3I2LzMAL3B1b3I2LzQAL3B1b3I2LzUAL3B1b3I2LzYAL3B1b3I3LzEAL3B1b3I3LzIAL3B1b3I3LzMAL3B1b3I3LzQAL3B1b3I3LzUAL3B1b3I3LzYAL3B1b3I3LzcAL3B1b3I4LzEAL3B1b3I4LzIAL3B1b3I4LzMAL3B1b3I4LzQAL3B1b3I4LzUAL3B1b3I4LzYAL3B1b3I4LzcAL3B1b3I4LzgAL3B1b3I5LzEAL3B1b3I5LzIAL3B1b3I5LzMAL3B1b3I5LzQAL3B1b3I5LzUAL3B1b3I5LzYAL3B1b3I5LzcAL3B1b3I5LzgAL3B1b3I5LzkAL3B1cmQzLzEAL3B1cmQzLzIAL3B1cmQzLzMAL3B1cmQ0LzEAL3B1cmQ0LzIAL3B1cmQ0LzMAL3B1cmQ0LzQAL3B1cmQ1LzEAL3B1cmQ1LzIAL3B1cmQ1LzMAL3B1cmQ1LzQAL3B1cmQ1LzUAL3B1cmQ2LzEAL3B1cmQ2LzIAL3B1cmQ2LzMAL3B1cmQ2LzQAL3B1cmQ2LzUAL3B1cmQ2LzYAL3B1cmQ3LzEAL3B1cmQ3LzIAL3B1cmQ3LzMAL3B1cmQ3LzQAL3B1cmQ3LzUAL3B1cmQ3LzYAL3B1cmQ3LzcAL3B1cmQ4LzEAL3B1cmQ4LzIAL3B1cmQ4LzMAL3B1cmQ4LzQAL3B1cmQ4LzUAL3B1cmQ4LzYAL3B1cmQ4LzcAL3B1cmQ4LzgAL3B1cmQ5LzEAL3B1cmQ5LzIAL3B1cmQ5LzMAL3B1cmQ5LzQAL3B1cmQ5LzUAL3B1cmQ5LzYAL3B1cmQ5LzcAL3B1cmQ5LzgAL3B1cmQ5LzkAL3B1cnBsZXMzLzEAL3B1cnBsZXMzLzIAL3B1cnBsZXMzLzMAL3B1cnBsZXM0LzEAL3B1cnBsZXM0LzIAL3B1cnBsZXM0LzMAL3B1cnBsZXM0LzQAL3B1cnBsZXM1LzEAL3B1cnBsZXM1LzIAL3B1cnBsZXM1LzMAL3B1cnBsZXM1LzQAL3B1cnBsZXM1LzUAL3B1cnBsZXM2LzEAL3B1cnBsZXM2LzIAL3B1cnBsZXM2LzMAL3B1cnBsZXM2LzQAL3B1cnBsZXM2LzUAL3B1cnBsZXM2LzYAL3B1cnBsZXM3LzEAL3B1cnBsZXM3LzIAL3B1cnBsZXM3LzMAL3B1cnBsZXM3LzQAL3B1cnBsZXM3LzUAL3B1cnBsZXM3LzYAL3B1cnBsZXM3LzcAL3B1cnBsZXM4LzEAL3B1cnBsZXM4LzIAL3B1cnBsZXM4LzMAL3B1cnBsZXM4LzQAL3B1cnBsZXM4LzUAL3B1cnBsZXM4LzYAL3B1cnBsZXM4LzcAL3B1cnBsZXM4LzgAL3B1cnBsZXM5LzEAL3B1cnBsZXM5LzIAL3B1cnBsZXM5LzMAL3B1cnBsZXM5LzQAL3B1cnBsZXM5LzUAL3B1cnBsZXM5LzYAL3B1cnBsZXM5LzcAL3B1cnBsZXM5LzgAL3B1cnBsZXM5LzkAL3JkYnUxMC8xAC9yZGJ1MTAvMTAAL3JkYnUxMC8yAC9yZGJ1MTAvMwAvcmRidTEwLzQAL3JkYnUxMC81AC9yZGJ1MTAvNgAvcmRidTEwLzcAL3JkYnUxMC84AC9yZGJ1MTAvOQAvcmRidTExLzEAL3JkYnUxMS8xMAAvcmRidTExLzExAC9yZGJ1MTEvMgAvcmRidTExLzMAL3JkYnUxMS80AC9yZGJ1MTEvNQAvcmRidTExLzYAL3JkYnUxMS83AC9yZGJ1MTEvOAAvcmRidTExLzkAL3JkYnUzLzEAL3JkYnUzLzIAL3JkYnUzLzMAL3JkYnU0LzEAL3JkYnU0LzIAL3JkYnU0LzMAL3JkYnU0LzQAL3JkYnU1LzEAL3JkYnU1LzIAL3JkYnU1LzMAL3JkYnU1LzQAL3JkYnU1LzUAL3JkYnU2LzEAL3JkYnU2LzIAL3JkYnU2LzMAL3JkYnU2LzQAL3JkYnU2LzUAL3JkYnU2LzYAL3JkYnU3LzEAL3JkYnU3LzIAL3JkYnU3LzMAL3JkYnU3LzQAL3JkYnU3LzUAL3JkYnU3LzYAL3JkYnU3LzcAL3JkYnU4LzEAL3JkYnU4LzIAL3JkYnU4LzMAL3JkYnU4LzQAL3JkYnU4LzUAL3JkYnU4LzYAL3JkYnU4LzcAL3JkYnU4LzgAL3JkYnU5LzEAL3JkYnU5LzIAL3JkYnU5LzMAL3JkYnU5LzQAL3JkYnU5LzUAL3JkYnU5LzYAL3JkYnU5LzcAL3JkYnU5LzgAL3JkYnU5LzkAL3JkZ3kxMC8xAC9yZGd5MTAvMTAAL3JkZ3kxMC8yAC9yZGd5MTAvMwAvcmRneTEwLzQAL3JkZ3kxMC81AC9yZGd5MTAvNgAvcmRneTEwLzcAL3JkZ3kxMC84AC9yZGd5MTAvOQAvcmRneTExLzEAL3JkZ3kxMS8xMAAvcmRneTExLzExAC9yZGd5MTEvMgAvcmRneTExLzMAL3JkZ3kxMS80AC9yZGd5MTEvNQAvcmRneTExLzYAL3JkZ3kxMS83AC9yZGd5MTEvOAAvcmRneTExLzkAL3JkZ3kzLzEAL3JkZ3kzLzIAL3JkZ3kzLzMAL3JkZ3k0LzEAL3JkZ3k0LzIAL3JkZ3k0LzMAL3JkZ3k0LzQAL3JkZ3k1LzEAL3JkZ3k1LzIAL3JkZ3k1LzMAL3JkZ3k1LzQAL3JkZ3k1LzUAL3JkZ3k2LzEAL3JkZ3k2LzIAL3JkZ3k2LzMAL3JkZ3k2LzQAL3JkZ3k2LzUAL3JkZ3k2LzYAL3JkZ3k3LzEAL3JkZ3k3LzIAL3JkZ3k3LzMAL3JkZ3k3LzQAL3JkZ3k3LzUAL3JkZ3k3LzYAL3JkZ3k3LzcAL3JkZ3k4LzEAL3JkZ3k4LzIAL3JkZ3k4LzMAL3JkZ3k4LzQAL3JkZ3k4LzUAL3JkZ3k4LzYAL3JkZ3k4LzcAL3JkZ3k4LzgAL3JkZ3k5LzEAL3JkZ3k5LzIAL3JkZ3k5LzMAL3JkZ3k5LzQAL3JkZ3k5LzUAL3JkZ3k5LzYAL3JkZ3k5LzcAL3JkZ3k5LzgAL3JkZ3k5LzkAL3JkcHUzLzEAL3JkcHUzLzIAL3JkcHUzLzMAL3JkcHU0LzEAL3JkcHU0LzIAL3JkcHU0LzMAL3JkcHU0LzQAL3JkcHU1LzEAL3JkcHU1LzIAL3JkcHU1LzMAL3JkcHU1LzQAL3JkcHU1LzUAL3JkcHU2LzEAL3JkcHU2LzIAL3JkcHU2LzMAL3JkcHU2LzQAL3JkcHU2LzUAL3JkcHU2LzYAL3JkcHU3LzEAL3JkcHU3LzIAL3JkcHU3LzMAL3JkcHU3LzQAL3JkcHU3LzUAL3JkcHU3LzYAL3JkcHU3LzcAL3JkcHU4LzEAL3JkcHU4LzIAL3JkcHU4LzMAL3JkcHU4LzQAL3JkcHU4LzUAL3JkcHU4LzYAL3JkcHU4LzcAL3JkcHU4LzgAL3JkcHU5LzEAL3JkcHU5LzIAL3JkcHU5LzMAL3JkcHU5LzQAL3JkcHU5LzUAL3JkcHU5LzYAL3JkcHU5LzcAL3JkcHU5LzgAL3JkcHU5LzkAL3JkeWxidTEwLzEAL3JkeWxidTEwLzEwAC9yZHlsYnUxMC8yAC9yZHlsYnUxMC8zAC9yZHlsYnUxMC80AC9yZHlsYnUxMC81AC9yZHlsYnUxMC82AC9yZHlsYnUxMC83AC9yZHlsYnUxMC84AC9yZHlsYnUxMC85AC9yZHlsYnUxMS8xAC9yZHlsYnUxMS8xMAAvcmR5bGJ1MTEvMTEAL3JkeWxidTExLzIAL3JkeWxidTExLzMAL3JkeWxidTExLzQAL3JkeWxidTExLzUAL3JkeWxidTExLzYAL3JkeWxidTExLzcAL3JkeWxidTExLzgAL3JkeWxidTExLzkAL3JkeWxidTMvMQAvcmR5bGJ1My8yAC9yZHlsYnUzLzMAL3JkeWxidTQvMQAvcmR5bGJ1NC8yAC9yZHlsYnU0LzMAL3JkeWxidTQvNAAvcmR5bGJ1NS8xAC9yZHlsYnU1LzIAL3JkeWxidTUvMwAvcmR5bGJ1NS80AC9yZHlsYnU1LzUAL3JkeWxidTYvMQAvcmR5bGJ1Ni8yAC9yZHlsYnU2LzMAL3JkeWxidTYvNAAvcmR5bGJ1Ni81AC9yZHlsYnU2LzYAL3JkeWxidTcvMQAvcmR5bGJ1Ny8yAC9yZHlsYnU3LzMAL3JkeWxidTcvNAAvcmR5bGJ1Ny81AC9yZHlsYnU3LzYAL3JkeWxidTcvNwAvcmR5bGJ1OC8xAC9yZHlsYnU4LzIAL3JkeWxidTgvMwAvcmR5bGJ1OC80AC9yZHlsYnU4LzUAL3JkeWxidTgvNgAvcmR5bGJ1OC83AC9yZHlsYnU4LzgAL3JkeWxidTkvMQAvcmR5bGJ1OS8yAC9yZHlsYnU5LzMAL3JkeWxidTkvNAAvcmR5bGJ1OS81AC9yZHlsYnU5LzYAL3JkeWxidTkvNwAvcmR5bGJ1OS84AC9yZHlsYnU5LzkAL3JkeWxnbjEwLzEAL3JkeWxnbjEwLzEwAC9yZHlsZ24xMC8yAC9yZHlsZ24xMC8zAC9yZHlsZ24xMC80AC9yZHlsZ24xMC81AC9yZHlsZ24xMC82AC9yZHlsZ24xMC83AC9yZHlsZ24xMC84AC9yZHlsZ24xMC85AC9yZHlsZ24xMS8xAC9yZHlsZ24xMS8xMAAvcmR5bGduMTEvMTEAL3JkeWxnbjExLzIAL3JkeWxnbjExLzMAL3JkeWxnbjExLzQAL3JkeWxnbjExLzUAL3JkeWxnbjExLzYAL3JkeWxnbjExLzcAL3JkeWxnbjExLzgAL3JkeWxnbjExLzkAL3JkeWxnbjMvMQAvcmR5bGduMy8yAC9yZHlsZ24zLzMAL3JkeWxnbjQvMQAvcmR5bGduNC8yAC9yZHlsZ240LzMAL3JkeWxnbjQvNAAvcmR5bGduNS8xAC9yZHlsZ241LzIAL3JkeWxnbjUvMwAvcmR5bGduNS80AC9yZHlsZ241LzUAL3JkeWxnbjYvMQAvcmR5bGduNi8yAC9yZHlsZ242LzMAL3JkeWxnbjYvNAAvcmR5bGduNi81AC9yZHlsZ242LzYAL3JkeWxnbjcvMQAvcmR5bGduNy8yAC9yZHlsZ243LzMAL3JkeWxnbjcvNAAvcmR5bGduNy81AC9yZHlsZ243LzYAL3JkeWxnbjcvNwAvcmR5bGduOC8xAC9yZHlsZ244LzIAL3JkeWxnbjgvMwAvcmR5bGduOC80AC9yZHlsZ244LzUAL3JkeWxnbjgvNgAvcmR5bGduOC83AC9yZHlsZ244LzgAL3JkeWxnbjkvMQAvcmR5bGduOS8yAC9yZHlsZ245LzMAL3JkeWxnbjkvNAAvcmR5bGduOS81AC9yZHlsZ245LzYAL3JkeWxnbjkvNwAvcmR5bGduOS84AC9yZHlsZ245LzkAL3JlZHMzLzEAL3JlZHMzLzIAL3JlZHMzLzMAL3JlZHM0LzEAL3JlZHM0LzIAL3JlZHM0LzMAL3JlZHM0LzQAL3JlZHM1LzEAL3JlZHM1LzIAL3JlZHM1LzMAL3JlZHM1LzQAL3JlZHM1LzUAL3JlZHM2LzEAL3JlZHM2LzIAL3JlZHM2LzMAL3JlZHM2LzQAL3JlZHM2LzUAL3JlZHM2LzYAL3JlZHM3LzEAL3JlZHM3LzIAL3JlZHM3LzMAL3JlZHM3LzQAL3JlZHM3LzUAL3JlZHM3LzYAL3JlZHM3LzcAL3JlZHM4LzEAL3JlZHM4LzIAL3JlZHM4LzMAL3JlZHM4LzQAL3JlZHM4LzUAL3JlZHM4LzYAL3JlZHM4LzcAL3JlZHM4LzgAL3JlZHM5LzEAL3JlZHM5LzIAL3JlZHM5LzMAL3JlZHM5LzQAL3JlZHM5LzUAL3JlZHM5LzYAL3JlZHM5LzcAL3JlZHM5LzgAL3JlZHM5LzkAL3NldDEzLzEAL3NldDEzLzIAL3NldDEzLzMAL3NldDE0LzEAL3NldDE0LzIAL3NldDE0LzMAL3NldDE0LzQAL3NldDE1LzEAL3NldDE1LzIAL3NldDE1LzMAL3NldDE1LzQAL3NldDE1LzUAL3NldDE2LzEAL3NldDE2LzIAL3NldDE2LzMAL3NldDE2LzQAL3NldDE2LzUAL3NldDE2LzYAL3NldDE3LzEAL3NldDE3LzIAL3NldDE3LzMAL3NldDE3LzQAL3NldDE3LzUAL3NldDE3LzYAL3NldDE3LzcAL3NldDE4LzEAL3NldDE4LzIAL3NldDE4LzMAL3NldDE4LzQAL3NldDE4LzUAL3NldDE4LzYAL3NldDE4LzcAL3NldDE4LzgAL3NldDE5LzEAL3NldDE5LzIAL3NldDE5LzMAL3NldDE5LzQAL3NldDE5LzUAL3NldDE5LzYAL3NldDE5LzcAL3NldDE5LzgAL3NldDE5LzkAL3NldDIzLzEAL3NldDIzLzIAL3NldDIzLzMAL3NldDI0LzEAL3NldDI0LzIAL3NldDI0LzMAL3NldDI0LzQAL3NldDI1LzEAL3NldDI1LzIAL3NldDI1LzMAL3NldDI1LzQAL3NldDI1LzUAL3NldDI2LzEAL3NldDI2LzIAL3NldDI2LzMAL3NldDI2LzQAL3NldDI2LzUAL3NldDI2LzYAL3NldDI3LzEAL3NldDI3LzIAL3NldDI3LzMAL3NldDI3LzQAL3NldDI3LzUAL3NldDI3LzYAL3NldDI3LzcAL3NldDI4LzEAL3NldDI4LzIAL3NldDI4LzMAL3NldDI4LzQAL3NldDI4LzUAL3NldDI4LzYAL3NldDI4LzcAL3NldDI4LzgAL3NldDMxMC8xAC9zZXQzMTAvMTAAL3NldDMxMC8yAC9zZXQzMTAvMwAvc2V0MzEwLzQAL3NldDMxMC81AC9zZXQzMTAvNgAvc2V0MzEwLzcAL3NldDMxMC84AC9zZXQzMTAvOQAvc2V0MzExLzEAL3NldDMxMS8xMAAvc2V0MzExLzExAC9zZXQzMTEvMgAvc2V0MzExLzMAL3NldDMxMS80AC9zZXQzMTEvNQAvc2V0MzExLzYAL3NldDMxMS83AC9zZXQzMTEvOAAvc2V0MzExLzkAL3NldDMxMi8xAC9zZXQzMTIvMTAAL3NldDMxMi8xMQAvc2V0MzEyLzEyAC9zZXQzMTIvMgAvc2V0MzEyLzMAL3NldDMxMi80AC9zZXQzMTIvNQAvc2V0MzEyLzYAL3NldDMxMi83AC9zZXQzMTIvOAAvc2V0MzEyLzkAL3NldDMzLzEAL3NldDMzLzIAL3NldDMzLzMAL3NldDM0LzEAL3NldDM0LzIAL3NldDM0LzMAL3NldDM0LzQAL3NldDM1LzEAL3NldDM1LzIAL3NldDM1LzMAL3NldDM1LzQAL3NldDM1LzUAL3NldDM2LzEAL3NldDM2LzIAL3NldDM2LzMAL3NldDM2LzQAL3NldDM2LzUAL3NldDM2LzYAL3NldDM3LzEAL3NldDM3LzIAL3NldDM3LzMAL3NldDM3LzQAL3NldDM3LzUAL3NldDM3LzYAL3NldDM3LzcAL3NldDM4LzEAL3NldDM4LzIAL3NldDM4LzMAL3NldDM4LzQAL3NldDM4LzUAL3NldDM4LzYAL3NldDM4LzcAL3NldDM4LzgAL3NldDM5LzEAL3NldDM5LzIAL3NldDM5LzMAL3NldDM5LzQAL3NldDM5LzUAL3NldDM5LzYAL3NldDM5LzcAL3NldDM5LzgAL3NldDM5LzkAL3NwZWN0cmFsMTAvMQAvc3BlY3RyYWwxMC8xMAAvc3BlY3RyYWwxMC8yAC9zcGVjdHJhbDEwLzMAL3NwZWN0cmFsMTAvNAAvc3BlY3RyYWwxMC81AC9zcGVjdHJhbDEwLzYAL3NwZWN0cmFsMTAvNwAvc3BlY3RyYWwxMC84AC9zcGVjdHJhbDEwLzkAL3NwZWN0cmFsMTEvMQAvc3BlY3RyYWwxMS8xMAAvc3BlY3RyYWwxMS8xMQAvc3BlY3RyYWwxMS8yAC9zcGVjdHJhbDExLzMAL3NwZWN0cmFsMTEvNAAvc3BlY3RyYWwxMS81AC9zcGVjdHJhbDExLzYAL3NwZWN0cmFsMTEvNwAvc3BlY3RyYWwxMS84AC9zcGVjdHJhbDExLzkAL3NwZWN0cmFsMy8xAC9zcGVjdHJhbDMvMgAvc3BlY3RyYWwzLzMAL3NwZWN0cmFsNC8xAC9zcGVjdHJhbDQvMgAvc3BlY3RyYWw0LzMAL3NwZWN0cmFsNC80AC9zcGVjdHJhbDUvMQAvc3BlY3RyYWw1LzIAL3NwZWN0cmFsNS8zAC9zcGVjdHJhbDUvNAAvc3BlY3RyYWw1LzUAL3NwZWN0cmFsNi8xAC9zcGVjdHJhbDYvMgAvc3BlY3RyYWw2LzMAL3NwZWN0cmFsNi80AC9zcGVjdHJhbDYvNQAvc3BlY3RyYWw2LzYAL3NwZWN0cmFsNy8xAC9zcGVjdHJhbDcvMgAvc3BlY3RyYWw3LzMAL3NwZWN0cmFsNy80AC9zcGVjdHJhbDcvNQAvc3BlY3RyYWw3LzYAL3NwZWN0cmFsNy83AC9zcGVjdHJhbDgvMQAvc3BlY3RyYWw4LzIAL3NwZWN0cmFsOC8zAC9zcGVjdHJhbDgvNAAvc3BlY3RyYWw4LzUAL3NwZWN0cmFsOC82AC9zcGVjdHJhbDgvNwAvc3BlY3RyYWw4LzgAL3NwZWN0cmFsOS8xAC9zcGVjdHJhbDkvMgAvc3BlY3RyYWw5LzMAL3NwZWN0cmFsOS80AC9zcGVjdHJhbDkvNQAvc3BlY3RyYWw5LzYAL3NwZWN0cmFsOS83AC9zcGVjdHJhbDkvOAAvc3BlY3RyYWw5LzkAL3N2Zy9hbGljZWJsdWUAL3N2Zy9hbnRpcXVld2hpdGUAL3N2Zy9hcXVhAC9zdmcvYXF1YW1hcmluZQAvc3ZnL2F6dXJlAC9zdmcvYmVpZ2UAL3N2Zy9iaXNxdWUAL3N2Zy9ibGFjawAvc3ZnL2JsYW5jaGVkYWxtb25kAC9zdmcvYmx1ZQAvc3ZnL2JsdWV2aW9sZXQAL3N2Zy9icm93bgAvc3ZnL2J1cmx5d29vZAAvc3ZnL2NhZGV0Ymx1ZQAvc3ZnL2NoYXJ0cmV1c2UAL3N2Zy9jaG9jb2xhdGUAL3N2Zy9jb3JhbAAvc3ZnL2Nvcm5mbG93ZXJibHVlAC9zdmcvY29ybnNpbGsAL3N2Zy9jcmltc29uAC9zdmcvY3lhbgAvc3ZnL2RhcmtibHVlAC9zdmcvZGFya2N5YW4AL3N2Zy9kYXJrZ29sZGVucm9kAC9zdmcvZGFya2dyYXkAL3N2Zy9kYXJrZ3JlZW4AL3N2Zy9kYXJrZ3JleQAvc3ZnL2RhcmtraGFraQAvc3ZnL2RhcmttYWdlbnRhAC9zdmcvZGFya29saXZlZ3JlZW4AL3N2Zy9kYXJrb3JhbmdlAC9zdmcvZGFya29yY2hpZAAvc3ZnL2RhcmtyZWQAL3N2Zy9kYXJrc2FsbW9uAC9zdmcvZGFya3NlYWdyZWVuAC9zdmcvZGFya3NsYXRlYmx1ZQAvc3ZnL2RhcmtzbGF0ZWdyYXkAL3N2Zy9kYXJrc2xhdGVncmV5AC9zdmcvZGFya3R1cnF1b2lzZQAvc3ZnL2Rhcmt2aW9sZXQAL3N2Zy9kZWVwcGluawAvc3ZnL2RlZXBza3libHVlAC9zdmcvZGltZ3JheQAvc3ZnL2RpbWdyZXkAL3N2Zy9kb2RnZXJibHVlAC9zdmcvZmlyZWJyaWNrAC9zdmcvZmxvcmFsd2hpdGUAL3N2Zy9mb3Jlc3RncmVlbgAvc3ZnL2Z1Y2hzaWEAL3N2Zy9nYWluc2Jvcm8AL3N2Zy9naG9zdHdoaXRlAC9zdmcvZ29sZAAvc3ZnL2dvbGRlbnJvZAAvc3ZnL2dyYXkAL3N2Zy9ncmVlbgAvc3ZnL2dyZWVueWVsbG93AC9zdmcvZ3JleQAvc3ZnL2hvbmV5ZGV3AC9zdmcvaG90cGluawAvc3ZnL2luZGlhbnJlZAAvc3ZnL2luZGlnbwAvc3ZnL2l2b3J5AC9zdmcva2hha2kAL3N2Zy9sYXZlbmRlcgAvc3ZnL2xhdmVuZGVyYmx1c2gAL3N2Zy9sYXduZ3JlZW4AL3N2Zy9sZW1vbmNoaWZmb24AL3N2Zy9saWdodGJsdWUAL3N2Zy9saWdodGNvcmFsAC9zdmcvbGlnaHRjeWFuAC9zdmcvbGlnaHRnb2xkZW5yb2R5ZWxsb3cAL3N2Zy9saWdodGdyYXkAL3N2Zy9saWdodGdyZWVuAC9zdmcvbGlnaHRncmV5AC9zdmcvbGlnaHRwaW5rAC9zdmcvbGlnaHRzYWxtb24AL3N2Zy9saWdodHNlYWdyZWVuAC9zdmcvbGlnaHRza3libHVlAC9zdmcvbGlnaHRzbGF0ZWdyYXkAL3N2Zy9saWdodHNsYXRlZ3JleQAvc3ZnL2xpZ2h0c3RlZWxibHVlAC9zdmcvbGlnaHR5ZWxsb3cAL3N2Zy9saW1lAC9zdmcvbGltZWdyZWVuAC9zdmcvbGluZW4AL3N2Zy9tYWdlbnRhAC9zdmcvbWFyb29uAC9zdmcvbWVkaXVtYXF1YW1hcmluZQAvc3ZnL21lZGl1bWJsdWUAL3N2Zy9tZWRpdW1vcmNoaWQAL3N2Zy9tZWRpdW1wdXJwbGUAL3N2Zy9tZWRpdW1zZWFncmVlbgAvc3ZnL21lZGl1bXNsYXRlYmx1ZQAvc3ZnL21lZGl1bXNwcmluZ2dyZWVuAC9zdmcvbWVkaXVtdHVycXVvaXNlAC9zdmcvbWVkaXVtdmlvbGV0cmVkAC9zdmcvbWlkbmlnaHRibHVlAC9zdmcvbWludGNyZWFtAC9zdmcvbWlzdHlyb3NlAC9zdmcvbW9jY2FzaW4AL3N2Zy9uYXZham93aGl0ZQAvc3ZnL25hdnkAL3N2Zy9vbGRsYWNlAC9zdmcvb2xpdmUAL3N2Zy9vbGl2ZWRyYWIAL3N2Zy9vcmFuZ2UAL3N2Zy9vcmFuZ2VyZWQAL3N2Zy9vcmNoaWQAL3N2Zy9wYWxlZ29sZGVucm9kAC9zdmcvcGFsZWdyZWVuAC9zdmcvcGFsZXR1cnF1b2lzZQAvc3ZnL3BhbGV2aW9sZXRyZWQAL3N2Zy9wYXBheWF3aGlwAC9zdmcvcGVhY2hwdWZmAC9zdmcvcGVydQAvc3ZnL3BpbmsAL3N2Zy9wbHVtAC9zdmcvcG93ZGVyYmx1ZQAvc3ZnL3B1cnBsZQAvc3ZnL3JlZAAvc3ZnL3Jvc3licm93bgAvc3ZnL3JveWFsYmx1ZQAvc3ZnL3NhZGRsZWJyb3duAC9zdmcvc2FsbW9uAC9zdmcvc2FuZHlicm93bgAvc3ZnL3NlYWdyZWVuAC9zdmcvc2Vhc2hlbGwAL3N2Zy9zaWVubmEAL3N2Zy9zaWx2ZXIAL3N2Zy9za3libHVlAC9zdmcvc2xhdGVibHVlAC9zdmcvc2xhdGVncmF5AC9zdmcvc2xhdGVncmV5AC9zdmcvc25vdwAvc3ZnL3NwcmluZ2dyZWVuAC9zdmcvc3RlZWxibHVlAC9zdmcvdGFuAC9zdmcvdGVhbAAvc3ZnL3RoaXN0bGUAL3N2Zy90b21hdG8AL3N2Zy90dXJxdW9pc2UAL3N2Zy92aW9sZXQAL3N2Zy93aGVhdAAvc3ZnL3doaXRlAC9zdmcvd2hpdGVzbW9rZQAvc3ZnL3llbGxvdwAvc3ZnL3llbGxvd2dyZWVuAC95bGduMy8xAC95bGduMy8yAC95bGduMy8zAC95bGduNC8xAC95bGduNC8yAC95bGduNC8zAC95bGduNC80AC95bGduNS8xAC95bGduNS8yAC95bGduNS8zAC95bGduNS80AC95bGduNS81AC95bGduNi8xAC95bGduNi8yAC95bGduNi8zAC95bGduNi80AC95bGduNi81AC95bGduNi82AC95bGduNy8xAC95bGduNy8yAC95bGduNy8zAC95bGduNy80AC95bGduNy81AC95bGduNy82AC95bGduNy83AC95bGduOC8xAC95bGduOC8yAC95bGduOC8zAC95bGduOC80AC95bGduOC81AC95bGduOC82AC95bGduOC83AC95bGduOC84AC95bGduOS8xAC95bGduOS8yAC95bGduOS8zAC95bGduOS80AC95bGduOS81AC95bGduOS82AC95bGduOS83AC95bGduOS84AC95bGduOS85AC95bGduYnUzLzEAL3lsZ25idTMvMgAveWxnbmJ1My8zAC95bGduYnU0LzEAL3lsZ25idTQvMgAveWxnbmJ1NC8zAC95bGduYnU0LzQAL3lsZ25idTUvMQAveWxnbmJ1NS8yAC95bGduYnU1LzMAL3lsZ25idTUvNAAveWxnbmJ1NS81AC95bGduYnU2LzEAL3lsZ25idTYvMgAveWxnbmJ1Ni8zAC95bGduYnU2LzQAL3lsZ25idTYvNQAveWxnbmJ1Ni82AC95bGduYnU3LzEAL3lsZ25idTcvMgAveWxnbmJ1Ny8zAC95bGduYnU3LzQAL3lsZ25idTcvNQAveWxnbmJ1Ny82AC95bGduYnU3LzcAL3lsZ25idTgvMQAveWxnbmJ1OC8yAC95bGduYnU4LzMAL3lsZ25idTgvNAAveWxnbmJ1OC81AC95bGduYnU4LzYAL3lsZ25idTgvNwAveWxnbmJ1OC84AC95bGduYnU5LzEAL3lsZ25idTkvMgAveWxnbmJ1OS8zAC95bGduYnU5LzQAL3lsZ25idTkvNQAveWxnbmJ1OS82AC95bGduYnU5LzcAL3lsZ25idTkvOAAveWxnbmJ1OS85AC95bG9yYnIzLzEAL3lsb3JicjMvMgAveWxvcmJyMy8zAC95bG9yYnI0LzEAL3lsb3JicjQvMgAveWxvcmJyNC8zAC95bG9yYnI0LzQAL3lsb3JicjUvMQAveWxvcmJyNS8yAC95bG9yYnI1LzMAL3lsb3JicjUvNAAveWxvcmJyNS81AC95bG9yYnI2LzEAL3lsb3JicjYvMgAveWxvcmJyNi8zAC95bG9yYnI2LzQAL3lsb3JicjYvNQAveWxvcmJyNi82AC95bG9yYnI3LzEAL3lsb3JicjcvMgAveWxvcmJyNy8zAC95bG9yYnI3LzQAL3lsb3JicjcvNQAveWxvcmJyNy82AC95bG9yYnI3LzcAL3lsb3JicjgvMQAveWxvcmJyOC8yAC95bG9yYnI4LzMAL3lsb3JicjgvNAAveWxvcmJyOC81AC95bG9yYnI4LzYAL3lsb3JicjgvNwAveWxvcmJyOC84AC95bG9yYnI5LzEAL3lsb3JicjkvMgAveWxvcmJyOS8zAC95bG9yYnI5LzQAL3lsb3JicjkvNQAveWxvcmJyOS82AC95bG9yYnI5LzcAL3lsb3JicjkvOAAveWxvcmJyOS85AC95bG9ycmQzLzEAL3lsb3JyZDMvMgAveWxvcnJkMy8zAC95bG9ycmQ0LzEAL3lsb3JyZDQvMgAveWxvcnJkNC8zAC95bG9ycmQ0LzQAL3lsb3JyZDUvMQAveWxvcnJkNS8yAC95bG9ycmQ1LzMAL3lsb3JyZDUvNAAveWxvcnJkNS81AC95bG9ycmQ2LzEAL3lsb3JyZDYvMgAveWxvcnJkNi8zAC95bG9ycmQ2LzQAL3lsb3JyZDYvNQAveWxvcnJkNi82AC95bG9ycmQ3LzEAL3lsb3JyZDcvMgAveWxvcnJkNy8zAC95bG9ycmQ3LzQAL3lsb3JyZDcvNQAveWxvcnJkNy82AC95bG9ycmQ3LzcAL3lsb3JyZDgvMQAveWxvcnJkOC8yAC95bG9ycmQ4LzMAL3lsb3JyZDgvNAAveWxvcnJkOC81AC95bG9ycmQ4LzYAL3lsb3JyZDgvNwAveWxvcnJkOC84AC95bG9ycmQ5LzEAL3lsb3JyZDkvMgAveWxvcnJkOS8zAC95bG9ycmQ5LzQAL3lsb3JyZDkvNQAveWxvcnJkOS82AC95bG9ycmQ5LzcAL3lsb3JyZDkvOAAveWxvcnJkOS85AGFsaWNlYmx1ZQBhbnRpcXVld2hpdGUAYW50aXF1ZXdoaXRlMQBhbnRpcXVld2hpdGUyAGFudGlxdWV3aGl0ZTMAYW50aXF1ZXdoaXRlNABhcXVhbWFyaW5lAGFxdWFtYXJpbmUxAGFxdWFtYXJpbmUyAGFxdWFtYXJpbmUzAGFxdWFtYXJpbmU0AGF6dXJlAGF6dXJlMQBhenVyZTIAYXp1cmUzAGF6dXJlNABiZWlnZQBiaXNxdWUAYmlzcXVlMQBiaXNxdWUyAGJpc3F1ZTMAYmlzcXVlNABibGFuY2hlZGFsbW9uZABibHVlAGJsdWUxAGJsdWUyAGJsdWUzAGJsdWU0AGJsdWV2aW9sZXQAYnJvd24AYnJvd24xAGJyb3duMgBicm93bjMAYnJvd240AGJ1cmx5d29vZABidXJseXdvb2QxAGJ1cmx5d29vZDIAYnVybHl3b29kMwBidXJseXdvb2Q0AGNhZGV0Ymx1ZQBjYWRldGJsdWUxAGNhZGV0Ymx1ZTIAY2FkZXRibHVlMwBjYWRldGJsdWU0AGNoYXJ0cmV1c2UAY2hhcnRyZXVzZTEAY2hhcnRyZXVzZTIAY2hhcnRyZXVzZTMAY2hhcnRyZXVzZTQAY2hvY29sYXRlAGNob2NvbGF0ZTEAY2hvY29sYXRlMgBjaG9jb2xhdGUzAGNob2NvbGF0ZTQAY29yYWwAY29yYWwxAGNvcmFsMgBjb3JhbDMAY29yYWw0AGNvcm5mbG93ZXJibHVlAGNvcm5zaWxrAGNvcm5zaWxrMQBjb3Juc2lsazIAY29ybnNpbGszAGNvcm5zaWxrNABjcmltc29uAGN5YW4AY3lhbjEAY3lhbjIAY3lhbjMAY3lhbjQAZGFya2dvbGRlbnJvZABkYXJrZ29sZGVucm9kMQBkYXJrZ29sZGVucm9kMgBkYXJrZ29sZGVucm9kMwBkYXJrZ29sZGVucm9kNABkYXJrZ3JlZW4AZGFya2toYWtpAGRhcmtvbGl2ZWdyZWVuAGRhcmtvbGl2ZWdyZWVuMQBkYXJrb2xpdmVncmVlbjIAZGFya29saXZlZ3JlZW4zAGRhcmtvbGl2ZWdyZWVuNABkYXJrb3JhbmdlAGRhcmtvcmFuZ2UxAGRhcmtvcmFuZ2UyAGRhcmtvcmFuZ2UzAGRhcmtvcmFuZ2U0AGRhcmtvcmNoaWQAZGFya29yY2hpZDEAZGFya29yY2hpZDIAZGFya29yY2hpZDMAZGFya29yY2hpZDQAZGFya3NhbG1vbgBkYXJrc2VhZ3JlZW4AZGFya3NlYWdyZWVuMQBkYXJrc2VhZ3JlZW4yAGRhcmtzZWFncmVlbjMAZGFya3NlYWdyZWVuNABkYXJrc2xhdGVibHVlAGRhcmtzbGF0ZWdyYXkAZGFya3NsYXRlZ3JheTEAZGFya3NsYXRlZ3JheTIAZGFya3NsYXRlZ3JheTMAZGFya3NsYXRlZ3JheTQAZGFya3NsYXRlZ3JleQBkYXJrdHVycXVvaXNlAGRhcmt2aW9sZXQAZGVlcHBpbmsAZGVlcHBpbmsxAGRlZXBwaW5rMgBkZWVwcGluazMAZGVlcHBpbms0AGRlZXBza3libHVlAGRlZXBza3libHVlMQBkZWVwc2t5Ymx1ZTIAZGVlcHNreWJsdWUzAGRlZXBza3libHVlNABkaW1ncmF5AGRpbWdyZXkAZG9kZ2VyYmx1ZQBkb2RnZXJibHVlMQBkb2RnZXJibHVlMgBkb2RnZXJibHVlMwBkb2RnZXJibHVlNABmaXJlYnJpY2sAZmlyZWJyaWNrMQBmaXJlYnJpY2syAGZpcmVicmljazMAZmlyZWJyaWNrNABmbG9yYWx3aGl0ZQBmb3Jlc3RncmVlbgBnYWluc2Jvcm8AZ2hvc3R3aGl0ZQBnb2xkAGdvbGQxAGdvbGQyAGdvbGQzAGdvbGQ0AGdvbGRlbnJvZABnb2xkZW5yb2QxAGdvbGRlbnJvZDIAZ29sZGVucm9kMwBnb2xkZW5yb2Q0AGdyYXkAZ3JheTAAZ3JheTEAZ3JheTEwAGdyYXkxMDAAZ3JheTExAGdyYXkxMgBncmF5MTMAZ3JheTE0AGdyYXkxNQBncmF5MTYAZ3JheTE3AGdyYXkxOABncmF5MTkAZ3JheTIAZ3JheTIwAGdyYXkyMQBncmF5MjIAZ3JheTIzAGdyYXkyNABncmF5MjUAZ3JheTI2AGdyYXkyNwBncmF5MjgAZ3JheTI5AGdyYXkzAGdyYXkzMABncmF5MzEAZ3JheTMyAGdyYXkzMwBncmF5MzQAZ3JheTM1AGdyYXkzNgBncmF5MzcAZ3JheTM4AGdyYXkzOQBncmF5NABncmF5NDAAZ3JheTQxAGdyYXk0MgBncmF5NDMAZ3JheTQ0AGdyYXk0NQBncmF5NDYAZ3JheTQ3AGdyYXk0OABncmF5NDkAZ3JheTUAZ3JheTUwAGdyYXk1MQBncmF5NTIAZ3JheTUzAGdyYXk1NABncmF5NTUAZ3JheTU2AGdyYXk1NwBncmF5NTgAZ3JheTU5AGdyYXk2AGdyYXk2MABncmF5NjEAZ3JheTYyAGdyYXk2MwBncmF5NjQAZ3JheTY1AGdyYXk2NgBncmF5NjcAZ3JheTY4AGdyYXk2OQBncmF5NwBncmF5NzAAZ3JheTcxAGdyYXk3MgBncmF5NzMAZ3JheTc0AGdyYXk3NQBncmF5NzYAZ3JheTc3AGdyYXk3OABncmF5NzkAZ3JheTgAZ3JheTgwAGdyYXk4MQBncmF5ODIAZ3JheTgzAGdyYXk4NABncmF5ODUAZ3JheTg2AGdyYXk4NwBncmF5ODgAZ3JheTg5AGdyYXk5AGdyYXk5MABncmF5OTEAZ3JheTkyAGdyYXk5MwBncmF5OTQAZ3JheTk1AGdyYXk5NgBncmF5OTcAZ3JheTk4AGdyYXk5OQBncmVlbgBncmVlbjEAZ3JlZW4yAGdyZWVuMwBncmVlbjQAZ3JlZW55ZWxsb3cAZ3JleQBncmV5MABncmV5MQBncmV5MTAAZ3JleTEwMABncmV5MTEAZ3JleTEyAGdyZXkxMwBncmV5MTQAZ3JleTE1AGdyZXkxNgBncmV5MTcAZ3JleTE4AGdyZXkxOQBncmV5MgBncmV5MjAAZ3JleTIxAGdyZXkyMgBncmV5MjMAZ3JleTI0AGdyZXkyNQBncmV5MjYAZ3JleTI3AGdyZXkyOABncmV5MjkAZ3JleTMAZ3JleTMwAGdyZXkzMQBncmV5MzIAZ3JleTMzAGdyZXkzNABncmV5MzUAZ3JleTM2AGdyZXkzNwBncmV5MzgAZ3JleTM5AGdyZXk0AGdyZXk0MABncmV5NDEAZ3JleTQyAGdyZXk0MwBncmV5NDQAZ3JleTQ1AGdyZXk0NgBncmV5NDcAZ3JleTQ4AGdyZXk0OQBncmV5NQBncmV5NTAAZ3JleTUxAGdyZXk1MgBncmV5NTMAZ3JleTU0AGdyZXk1NQBncmV5NTYAZ3JleTU3AGdyZXk1OABncmV5NTkAZ3JleTYAZ3JleTYwAGdyZXk2MQBncmV5NjIAZ3JleTYzAGdyZXk2NABncmV5NjUAZ3JleTY2AGdyZXk2NwBncmV5NjgAZ3JleTY5AGdyZXk3AGdyZXk3MABncmV5NzEAZ3JleTcyAGdyZXk3MwBncmV5NzQAZ3JleTc1AGdyZXk3NgBncmV5NzcAZ3JleTc4AGdyZXk3OQBncmV5OABncmV5ODAAZ3JleTgxAGdyZXk4MgBncmV5ODMAZ3JleTg0AGdyZXk4NQBncmV5ODYAZ3JleTg3AGdyZXk4OABncmV5ODkAZ3JleTkAZ3JleTkwAGdyZXk5MQBncmV5OTIAZ3JleTkzAGdyZXk5NABncmV5OTUAZ3JleTk2AGdyZXk5NwBncmV5OTgAZ3JleTk5AGhvbmV5ZGV3AGhvbmV5ZGV3MQBob25leWRldzIAaG9uZXlkZXczAGhvbmV5ZGV3NABob3RwaW5rAGhvdHBpbmsxAGhvdHBpbmsyAGhvdHBpbmszAGhvdHBpbms0AGluZGlhbnJlZABpbmRpYW5yZWQxAGluZGlhbnJlZDIAaW5kaWFucmVkMwBpbmRpYW5yZWQ0AGluZGlnbwBpbnZpcwBpdm9yeQBpdm9yeTEAaXZvcnkyAGl2b3J5MwBpdm9yeTQAa2hha2kAa2hha2kxAGtoYWtpMgBraGFraTMAa2hha2k0AGxhdmVuZGVyAGxhdmVuZGVyYmx1c2gAbGF2ZW5kZXJibHVzaDEAbGF2ZW5kZXJibHVzaDIAbGF2ZW5kZXJibHVzaDMAbGF2ZW5kZXJibHVzaDQAbGF3bmdyZWVuAGxlbW9uY2hpZmZvbgBsZW1vbmNoaWZmb24xAGxlbW9uY2hpZmZvbjIAbGVtb25jaGlmZm9uMwBsZW1vbmNoaWZmb240AGxpZ2h0Ymx1ZQBsaWdodGJsdWUxAGxpZ2h0Ymx1ZTIAbGlnaHRibHVlMwBsaWdodGJsdWU0AGxpZ2h0Y29yYWwAbGlnaHRjeWFuAGxpZ2h0Y3lhbjEAbGlnaHRjeWFuMgBsaWdodGN5YW4zAGxpZ2h0Y3lhbjQAbGlnaHRnb2xkZW5yb2QAbGlnaHRnb2xkZW5yb2QxAGxpZ2h0Z29sZGVucm9kMgBsaWdodGdvbGRlbnJvZDMAbGlnaHRnb2xkZW5yb2Q0AGxpZ2h0Z29sZGVucm9keWVsbG93AGxpZ2h0Z3JheQBsaWdodGdyZXkAbGlnaHRwaW5rAGxpZ2h0cGluazEAbGlnaHRwaW5rMgBsaWdodHBpbmszAGxpZ2h0cGluazQAbGlnaHRzYWxtb24AbGlnaHRzYWxtb24xAGxpZ2h0c2FsbW9uMgBsaWdodHNhbG1vbjMAbGlnaHRzYWxtb240AGxpZ2h0c2VhZ3JlZW4AbGlnaHRza3libHVlAGxpZ2h0c2t5Ymx1ZTEAbGlnaHRza3libHVlMgBsaWdodHNreWJsdWUzAGxpZ2h0c2t5Ymx1ZTQAbGlnaHRzbGF0ZWJsdWUAbGlnaHRzbGF0ZWdyYXkAbGlnaHRzbGF0ZWdyZXkAbGlnaHRzdGVlbGJsdWUAbGlnaHRzdGVlbGJsdWUxAGxpZ2h0c3RlZWxibHVlMgBsaWdodHN0ZWVsYmx1ZTMAbGlnaHRzdGVlbGJsdWU0AGxpZ2h0eWVsbG93AGxpZ2h0eWVsbG93MQBsaWdodHllbGxvdzIAbGlnaHR5ZWxsb3czAGxpZ2h0eWVsbG93NABsaW1lZ3JlZW4AbGluZW4AbWFnZW50YQBtYWdlbnRhMQBtYWdlbnRhMgBtYWdlbnRhMwBtYWdlbnRhNABtYXJvb24AbWFyb29uMQBtYXJvb24yAG1hcm9vbjMAbWFyb29uNABtZWRpdW1hcXVhbWFyaW5lAG1lZGl1bWJsdWUAbWVkaXVtb3JjaGlkAG1lZGl1bW9yY2hpZDEAbWVkaXVtb3JjaGlkMgBtZWRpdW1vcmNoaWQzAG1lZGl1bW9yY2hpZDQAbWVkaXVtcHVycGxlAG1lZGl1bXB1cnBsZTEAbWVkaXVtcHVycGxlMgBtZWRpdW1wdXJwbGUzAG1lZGl1bXB1cnBsZTQAbWVkaXVtc2VhZ3JlZW4AbWVkaXVtc2xhdGVibHVlAG1lZGl1bXNwcmluZ2dyZWVuAG1lZGl1bXR1cnF1b2lzZQBtZWRpdW12aW9sZXRyZWQAbWlkbmlnaHRibHVlAG1pbnRjcmVhbQBtaXN0eXJvc2UAbWlzdHlyb3NlMQBtaXN0eXJvc2UyAG1pc3R5cm9zZTMAbWlzdHlyb3NlNABtb2NjYXNpbgBuYXZham93aGl0ZQBuYXZham93aGl0ZTEAbmF2YWpvd2hpdGUyAG5hdmFqb3doaXRlMwBuYXZham93aGl0ZTQAbmF2eQBuYXZ5Ymx1ZQBub25lAG9sZGxhY2UAb2xpdmVkcmFiAG9saXZlZHJhYjEAb2xpdmVkcmFiMgBvbGl2ZWRyYWIzAG9saXZlZHJhYjQAb3JhbmdlAG9yYW5nZTEAb3JhbmdlMgBvcmFuZ2UzAG9yYW5nZTQAb3JhbmdlcmVkAG9yYW5nZXJlZDEAb3JhbmdlcmVkMgBvcmFuZ2VyZWQzAG9yYW5nZXJlZDQAb3JjaGlkAG9yY2hpZDEAb3JjaGlkMgBvcmNoaWQzAG9yY2hpZDQAcGFsZWdvbGRlbnJvZABwYWxlZ3JlZW4AcGFsZWdyZWVuMQBwYWxlZ3JlZW4yAHBhbGVncmVlbjMAcGFsZWdyZWVuNABwYWxldHVycXVvaXNlAHBhbGV0dXJxdW9pc2UxAHBhbGV0dXJxdW9pc2UyAHBhbGV0dXJxdW9pc2UzAHBhbGV0dXJxdW9pc2U0AHBhbGV2aW9sZXRyZWQAcGFsZXZpb2xldHJlZDEAcGFsZXZpb2xldHJlZDIAcGFsZXZpb2xldHJlZDMAcGFsZXZpb2xldHJlZDQAcGFwYXlhd2hpcABwZWFjaHB1ZmYAcGVhY2hwdWZmMQBwZWFjaHB1ZmYyAHBlYWNocHVmZjMAcGVhY2hwdWZmNABwZXJ1AHBpbmsAcGluazEAcGluazIAcGluazMAcGluazQAcGx1bQBwbHVtMQBwbHVtMgBwbHVtMwBwbHVtNABwb3dkZXJibHVlAHB1cnBsZQBwdXJwbGUxAHB1cnBsZTIAcHVycGxlMwBwdXJwbGU0AHJlZAByZWQxAHJlZDIAcmVkMwByZWQ0AHJvc3licm93bgByb3N5YnJvd24xAHJvc3licm93bjIAcm9zeWJyb3duMwByb3N5YnJvd240AHJveWFsYmx1ZQByb3lhbGJsdWUxAHJveWFsYmx1ZTIAcm95YWxibHVlMwByb3lhbGJsdWU0AHNhZGRsZWJyb3duAHNhbG1vbgBzYWxtb24xAHNhbG1vbjIAc2FsbW9uMwBzYWxtb240AHNhbmR5YnJvd24Ac2VhZ3JlZW4Ac2VhZ3JlZW4xAHNlYWdyZWVuMgBzZWFncmVlbjMAc2VhZ3JlZW40AHNlYXNoZWxsAHNlYXNoZWxsMQBzZWFzaGVsbDIAc2Vhc2hlbGwzAHNlYXNoZWxsNABzaWVubmEAc2llbm5hMQBzaWVubmEyAHNpZW5uYTMAc2llbm5hNABza3libHVlAHNreWJsdWUxAHNreWJsdWUyAHNreWJsdWUzAHNreWJsdWU0AHNsYXRlYmx1ZQBzbGF0ZWJsdWUxAHNsYXRlYmx1ZTIAc2xhdGVibHVlMwBzbGF0ZWJsdWU0AHNsYXRlZ3JheQBzbGF0ZWdyYXkxAHNsYXRlZ3JheTIAc2xhdGVncmF5MwBzbGF0ZWdyYXk0AHNsYXRlZ3JleQBzbm93AHNub3cxAHNub3cyAHNub3czAHNub3c0AHNwcmluZ2dyZWVuAHNwcmluZ2dyZWVuMQBzcHJpbmdncmVlbjIAc3ByaW5nZ3JlZW4zAHNwcmluZ2dyZWVuNABzdGVlbGJsdWUAc3RlZWxibHVlMQBzdGVlbGJsdWUyAHN0ZWVsYmx1ZTMAc3RlZWxibHVlNAB0YW4AdGFuMQB0YW4yAHRhbjMAdGFuNAB0aGlzdGxlAHRoaXN0bGUxAHRoaXN0bGUyAHRoaXN0bGUzAHRoaXN0bGU0AHRvbWF0bwB0b21hdG8xAHRvbWF0bzIAdG9tYXRvMwB0b21hdG80AHR1cnF1b2lzZQB0dXJxdW9pc2UxAHR1cnF1b2lzZTIAdHVycXVvaXNlMwB0dXJxdW9pc2U0AHZpb2xldAB2aW9sZXRyZWQAdmlvbGV0cmVkMQB2aW9sZXRyZWQyAHZpb2xldHJlZDMAdmlvbGV0cmVkNAB3aGVhdAB3aGVhdDEAd2hlYXQyAHdoZWF0MwB3aGVhdDQAd2hpdGUAd2hpdGVzbW9rZQB5ZWxsb3cAeWVsbG93MQB5ZWxsb3cyAHllbGxvdzMAeWVsbG93NAB5ZWxsb3dncmVlbgBsYWNrAGhpdGUAaWdodGdyZXkAWDExLwAvJXMvJXMAaW1hZ2VzY2FsZQBmYWxzZQBibGFjawBkb3R0ZWQAZGFzaGVkAGNwLT5zcmMAaHRtbHRhYmxlLmMAZW1pdF9odG1sX2ltZwBjcC0+c3JjWzBdAHRyYW5zcGFyZW50AF8lZAAlZAAyADMANAA1ADYANwA4ADkAMTAAMTEAMTIAMTMAMTQAMTUAMTYAMTcAMTgAMTkAMjAAQWdub2RlaW5mb190AEFnZWRnZWluZm9fdAByb3dnAGNvbGcAQWdyYXBoaW5mb190AGRlbHggPj0gMABwb3NfaHRtbF90YmwAZGVseSA+PSAwAHRhYmxlIHNpemUgdG9vIHNtYWxsIGZvciBjb250ZW50CgBmaXhlZCB0YWJsZSBzaXplIHdpdGggdW5zcGVjaWZpZWQgd2lkdGggb3IgaGVpZ2h0CgBjZWxsIHNpemUgdG9vIHNtYWxsIGZvciBjb250ZW50CgBmaXhlZCBjZWxsIHNpemUgd2l0aCB1bnNwZWNpZmllZCB3aWR0aCBvciBoZWlnaHQKAE5vIG9yIGltcHJvcGVyIGltYWdlIGZpbGU9IiVzIgoAcGVuY29sb3IALT4AZlBRLmMAUFFjaGVjawBIZWFwIG92ZXJmbG93CgAlIVBTLUFkb2JlLTIuMAovbm9kZSB7CiAgL1kgZXhjaCBkZWYKICAvWCBleGNoIGRlZgogIC95IGV4Y2ggZGVmCiAgL3ggZXhjaCBkZWYKICBuZXdwYXRoCiAgeCB5IG1vdmV0bwogIHggWSBsaW5ldG8KICBYIFkgbGluZXRvCiAgWCB5IGxpbmV0bwogIGNsb3NlcGF0aCBmaWxsCn0gZGVmCi9jZWxsIHsKICAvWSBleGNoIGRlZgogIC9YIGV4Y2ggZGVmCiAgL3kgZXhjaCBkZWYKICAveCBleGNoIGRlZgogIG5ld3BhdGgKICB4IHkgbW92ZXRvCiAgeCBZIGxpbmV0bwogIFggWSBsaW5ldG8KICBYIHkgbGluZXRvCiAgY2xvc2VwYXRoIHN0cm9rZQp9IGRlZgoAc2hvd3BhZ2UKAGZhaWxlZCBhdCBub2RlICVkWzBdCgBucC0+Y2VsbHNbMF0AbWF6ZS5jAGNoa1NncmFwaABmYWlsZWQgYXQgbm9kZSAlZFsxXQoAbnAtPmNlbGxzWzFdAGRpdGVtcwBmaW5kU1ZlcnQAJSUlJVBhZ2U6IDEgMQolJSUlUGFnZUJvdW5kaW5nQm94OiAlZCAlZCAlZCAlZAoAJWYgJWYgdHJhbnNsYXRlCgAwIDAgMSBzZXRyZ2Jjb2xvcgoAJWYgJWYgJWYgJWYgbm9kZQoAMCAwIDAgc2V0cmdiY29sb3IKACVmICVmICVmICVmIGNlbGwKADEgMCAwIHNldHJnYmNvbG9yCgB1bmV4cGVjdGVkIGNhc2UgaW4gbG9jYXRlX2VuZHBvaW50CgAwAHRyYXBlem9pZC5jAGxvY2F0ZV9lbmRwb2ludABhZGRfc2VnbWVudDogZXJyb3IKAG5ld25vZGU6IFF1ZXJ5LXRhYmxlIG92ZXJmbG93CgBuZXdub2RlAG5ld3RyYXA6IFRyYXBlem9pZC10YWJsZSBvdmVyZmxvdyAlZAoAbmV3dHJhcABpbmRleC5jAFJUcmVlU2VhcmNoAG4tPmxldmVsID49IDAAUlRyZWVJbnNlcnQAbGV2ZWwgPj0gMCAmJiBsZXZlbCA8PSAoKm4pLT5sZXZlbAByLT5ib3VuZGFyeVtpXSA8PSByLT5ib3VuZGFyeVtOVU1ESU1TICsgaV0AciAmJiBuICYmIG5ldwBSVHJlZUluc2VydDIAbGV2ZWwgPj0gMCAmJiBsZXZlbCA8PSBuLT5sZXZlbABGQUxTRQBub2RlLmMATm9kZUNvdmVyAHIgJiYgbgBQaWNrQnJhbmNoAEFkZEJyYW5jaABpIDwgTk9ERUNBUkQAbmV3AG4gJiYgaSA+PSAwICYmIGkgPCBOT0RFQ0FSRABEaXNjb25CcmFuY2gAcgByZWN0YW5nbGUuYwBSZWN0QXJlYQByICYmIHJyAENvbWJpbmVSZWN0AHIgJiYgcwBPdmVybGFwAG4Ac3BsaXQucS5jAFNwbGl0Tm9kZQBiAG4tPmNvdW50ICsgKCpubiktPmNvdW50ID09IE5PREVDQVJEICsgMQBMb2FkTm9kZXMAcQBwAHJ0cC0+c3BsaXQuUGFydGl0aW9uc1swXS5wYXJ0aXRpb25baV0gPT0gMCB8fCBydHAtPnNwbGl0LlBhcnRpdGlvbnNbMF0ucGFydGl0aW9uW2ldID09IDEAcnRwLT5zcGxpdC5QYXJ0aXRpb25zWzBdLmNvdW50WzBdICsgcnRwLT5zcGxpdC5QYXJ0aXRpb25zWzBdLmNvdW50WzFdID09IE5PREVDQVJEICsgMQBNZXRob2RaZXJvAHJ0cC0+c3BsaXQuUGFydGl0aW9uc1swXS5jb3VudFswXSA+PSBydHAtPk1pbkZpbGwgJiYgcnRwLT5zcGxpdC5QYXJ0aXRpb25zWzBdLmNvdW50WzFdID49IHJ0cC0+TWluRmlsbAAhcnRwLT5zcGxpdC5QYXJ0aXRpb25zWzBdLnRha2VuW2ldAENsYXNzaWZ5AEdldEJyYW5jaGVzAG4tPmJyYW5jaFtpXS5jaGlsZAAAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyAhIiMkJSYnKAICAgICAhAMWQEAH1AIAwcSExRXFhcIC2kMHwoFDA4pESsPLRAvMCAyBjQ1GxwdHgsMISIjJCUmJygMGBkXBAobHBogKgohIiMkJSYnKAwKDlMKLFgxWFhYWFhYDBscDy5YMyEiIyQlJicoGxz/U///ISIjJCUmJygM//8F////CRT//////wwbHP8QFRYhIiMkJSYnKBsc/////yEiIyQlJicoDP8SExQRFhf///////8MGxz///8SISIjJCUmJygbHP////8hIiMkJSYnKAz///////8T////////DBsc/////yEiIyQlJicoGxz/////ISIjJCUmJygSExQVFhcYGf///////////yMkJSYnGxITFBYXIjZoAR84ViEgAhsbG14bGzc5cDbSwk8EPCJHIj8iRCIiWCJlIiIFBl9gOQQHCAkKCwwNDgRmZ11qbQUGb1g7cQcICQoLDA0OBHI8W3M+YUYbEhMUFhcEBQY/QWJJBwgJCgsMDQ4FBgBcAAAHCAkKCwwNDgQAAE8AAABTQgAAAAAABAUGAERUVQcICQoLDA0OBQYAAAAABwgJCgsMDQ4EACosLkcxMwAAAAAAAAQFBgAAAEoHCAkKCwwNDgUGAAAAAAcICQoLDA0OBAAAAAAAAEwAAAAAAAAEBQYAAAAABwgJCgsMDQ4FBgAAAAAHCAkKCwwNDikrLS8wMjQ1AAAAAAAAAAAAKSstMDIABC8AJCMAEhQWGhweIBgABQcvLy8ALy8AAAkIKAAAASICBgAAAAAACAAAAAAAAAAAAAAAAAAlAyYTCikVCyoXDi0ZERsMKx0NLB8PIRAAMwAwAC9DADEALwA1LidCMkEAOjgAPDRFADYAQAAAPwBENzs5PQACAwMBAQIBAQEDAwMDAwMDAwEBAQEBAQEBAQEBAQEBAQECAQECAAYBAwMDAwMBAAECAwAEAQIDAAQABAAEAAMCAQIBAgFTeW50YXggZXJyb3I6IG5vbi1zcGFjZSBzdHJpbmcgdXNlZCBiZWZvcmUgPFRBQkxFPgBTeW50YXggZXJyb3I6IG5vbi1zcGFjZSBzdHJpbmcgdXNlZCBhZnRlciA8L1RBQkxFPgAAKSoqKissLC0tLS0tLS0tLS0uLzAxMjM0NTY3ODk6Ozw9Pj4/P0FAQkJCQkJCQ0NERERGRUdHR0lISkhLSExITU1OTk9P/wMPEBEjOiQ9JUAVQyZFJ0gYSxlNGigcTh0eUFFSWVpsa25jZFdpbWVtb3J5IGV4aGF1c3RlZAAlcyBpbiBsaW5lICVkIAoALi4uICVzIC4uLgoAVEFCTEUAVFIAVEgAVEQASFRNTABGT05UAEIAVQBPAEkAU1VQAFNVQgBTAEJSAEhSAFZSAElNRwBVbmtub3duIEhUTUwgZWxlbWVudCA8JXM+IG9uIGxpbmUgJWQgCgA8SU1HPgBJbGxlZ2FsIGF0dHJpYnV0ZSAlcyBpbiAlcyAtIGlnbm9yZWQKAHNjYWxlAHNyYwA8QlI+AGFsaWduAElHSFQARUZUAEVOVEVSAElsbGVnYWwgdmFsdWUgJXMgZm9yIEFMSUdOIC0gaWdub3JlZAoAPEZPTlQ+AGNvbG9yAGZhY2UAcG9pbnQtc2l6ZQBQT0lOVC1TSVpFAEltcHJvcGVyICVzIHZhbHVlICVzIC0gaWdub3JlZAAlcyB2YWx1ZSAlcyA+ICVkIC0gdG9vIGxhcmdlIC0gaWdub3JlZAAlcyB2YWx1ZSAlcyA8ICVkIC0gdG9vIHNtYWxsIC0gaWdub3JlZAA8VEQ+AGJhbGlnbgBiZ2NvbG9yAGJvcmRlcgBjZWxscGFkZGluZwBjZWxsc3BhY2luZwBjb2xzcGFuAGZpeGVkc2l6ZQBncmFkaWVudGFuZ2xlAGhlaWdodABocmVmAGlkAHBvcnQAcm93c3BhbgBzaWRlcwBzdHlsZQB0YXJnZXQAdGl0bGUAdG9vbHRpcAB2YWxpZ24Ad2lkdGgAV0lEVEgAT1RUT00AT1AASURETEUASWxsZWdhbCB2YWx1ZSAlcyBmb3IgVkFMSUdOIC0gaWdub3JlZAoAICwAT1VOREVEAEFESUFMAElsbGVnYWwgdmFsdWUgJXMgZm9yIFNUWUxFIC0gaWdub3JlZAoAU09MSUQASU5WSVNJQkxFAElOVklTAERPVFRFRABEQVNIRUQAVW5yZWNvZ25pemVkIGNoYXJhY3RlciAnJWMnICglZCkgaW4gc2lkZXMgYXR0cmlidXRlCgBST1dTUEFOAFJPV1NQQU4gdmFsdWUgY2Fubm90IGJlIDAgLSBpZ25vcmVkCgBIRUlHSFQAR1JBRElFTlRBTkdMRQBSVUUAQUxTRQBJbGxlZ2FsIHZhbHVlICVzIGZvciBGSVhFRFNJWkUgLSBpZ25vcmVkCgBDT0xTUEFOAENPTFNQQU4gdmFsdWUgY2Fubm90IGJlIDAgLSBpZ25vcmVkCgBDRUxMU1BBQ0lORwBDRUxMUEFERElORwBCT1JERVIASWxsZWdhbCB2YWx1ZSAlcyBmb3IgQkFMSUdOIGluIFREIC0gaWdub3JlZAoARVhUAElsbGVnYWwgdmFsdWUgJXMgZm9yIEFMSUdOIGluIFREIC0gaWdub3JlZAoAPFRBQkxFPgBjZWxsYm9yZGVyAGNvbHVtbnMAcm93cwBVbmtub3duIHZhbHVlICVzIGZvciBST1dTIC0gaWdub3JlZAoAVW5rbm93biB2YWx1ZSAlcyBmb3IgQ09MVU1OUyAtIGlnbm9yZWQKAENFTExTQk9SREVSADxIVE1MPgA8L0hUTUw+AC0tAExhYmVsIGNsb3NlZCBiZWZvcmUgZW5kIG9mIEhUTUwgZWxlbWVudAoAVW5jbG9zZWQgY29tbWVudAoAaiA9PSAwAGN2dC5jAFBvYnNwYXRoAHJvdXRlLmMAbGlicGF0aC8lczolZDogJXMKAHNob3J0ZXN0LmMAc291cmNlIHBvaW50IG5vdCBpbiBhbnkgdHJpYW5nbGUAZGVzdGluYXRpb24gcG9pbnQgbm90IGluIGFueSB0cmlhbmdsZQBjYW5ub3QgZmluZCB0cmlhbmdsZSBwYXRoAGNhbm5vdCBtYWxsb2Mgb3BzAGNhbm5vdCByZWFsbG9jIG9wcwB0cmlhbmd1bGF0aW9uIGZhaWxlZABjYW5ub3QgbWFsbG9jIHRyaXMAY2Fubm90IHJlYWxsb2MgdHJpcwBjYW5ub3QgbWFsbG9jIGRxLnBubHMAY2Fubm90IHJlYWxsb2MgZHEucG5scwBjYW5ub3QgbWFsbG9jIHBubHMAY2Fubm90IG1hbGxvYyBwbmxwcwBjYW5ub3QgcmVhbGxvYyBwbmxzAGNhbm5vdCByZWFsbG9jIHBubHBzAENEQVRBAElEAElEUkVGAElEUkVGUwBFTlRJVFkARU5USVRJRVMATk1UT0tFTgBOTVRPS0VOUwBOT1RBVElPTigAKAB8AGh0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZQBodHRwOi8vd3d3LnczLm9yZy8yMDAwL3htbG5zLwB4bWw9aHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlAC9kZXYvdXJhbmRvbQBmYWxsYmFjayg0KQBnZXR0aW1lb2ZkYXlfcmVzID09IDAAeG1scGFyc2UuYwBnYXRoZXJfdGltZV9lbnRyb3B5AEVYUEFUX0VOVFJPUFlfREVCVUcAMQBFbnRyb3B5OiAlcyAtLT4gMHglMCpseCAoJWx1IGJ5dGVzKQoAaW52YWxpZCBhcmd1bWVudABwcmVmaXggbXVzdCBub3QgYmUgYm91bmQgdG8gb25lIG9mIHRoZSByZXNlcnZlZCBuYW1lc3BhY2UgbmFtZXMAcmVzZXJ2ZWQgcHJlZml4ICh4bWxucykgbXVzdCBub3QgYmUgZGVjbGFyZWQgb3IgdW5kZWNsYXJlZAByZXNlcnZlZCBwcmVmaXggKHhtbCkgbXVzdCBub3QgYmUgdW5kZWNsYXJlZCBvciBib3VuZCB0byBhbm90aGVyIG5hbWVzcGFjZSBuYW1lAGNhbm5vdCBzdXNwZW5kIGluIGV4dGVybmFsIHBhcmFtZXRlciBlbnRpdHkAcGFyc2luZyBmaW5pc2hlZABwYXJzaW5nIGFib3J0ZWQAcGFyc2VyIG5vdCBzdXNwZW5kZWQAcGFyc2VyIHN1c3BlbmRlZABpbGxlZ2FsIGNoYXJhY3RlcihzKSBpbiBwdWJsaWMgaWQAdGV4dCBkZWNsYXJhdGlvbiBub3Qgd2VsbC1mb3JtZWQAWE1MIGRlY2xhcmF0aW9uIG5vdCB3ZWxsLWZvcm1lZABpbmNvbXBsZXRlIG1hcmt1cCBpbiBwYXJhbWV0ZXIgZW50aXR5AG11c3Qgbm90IHVuZGVjbGFyZSBwcmVmaXgAdW5ib3VuZCBwcmVmaXgAY2Fubm90IGNoYW5nZSBzZXR0aW5nIG9uY2UgcGFyc2luZyBoYXMgYmVndW4AcmVxdWVzdGVkIGZlYXR1cmUgcmVxdWlyZXMgWE1MX0RURCBzdXBwb3J0IGluIEV4cGF0AGVudGl0eSBkZWNsYXJlZCBpbiBwYXJhbWV0ZXIgZW50aXR5AHVuZXhwZWN0ZWQgcGFyc2VyIHN0YXRlIC0gcGxlYXNlIHNlbmQgYSBidWcgcmVwb3J0AGRvY3VtZW50IGlzIG5vdCBzdGFuZGFsb25lAGVycm9yIGluIHByb2Nlc3NpbmcgZXh0ZXJuYWwgZW50aXR5IHJlZmVyZW5jZQB1bmNsb3NlZCBDREFUQSBzZWN0aW9uAGVuY29kaW5nIHNwZWNpZmllZCBpbiBYTUwgZGVjbGFyYXRpb24gaXMgaW5jb3JyZWN0AHVua25vd24gZW5jb2RpbmcAWE1MIG9yIHRleHQgZGVjbGFyYXRpb24gbm90IGF0IHN0YXJ0IG9mIGVudGl0eQByZWZlcmVuY2UgdG8gZXh0ZXJuYWwgZW50aXR5IGluIGF0dHJpYnV0ZQByZWZlcmVuY2UgdG8gYmluYXJ5IGVudGl0eQByZWZlcmVuY2UgdG8gaW52YWxpZCBjaGFyYWN0ZXIgbnVtYmVyAGFzeW5jaHJvbm91cyBlbnRpdHkAcmVjdXJzaXZlIGVudGl0eSByZWZlcmVuY2UAdW5kZWZpbmVkIGVudGl0eQBpbGxlZ2FsIHBhcmFtZXRlciBlbnRpdHkgcmVmZXJlbmNlAGp1bmsgYWZ0ZXIgZG9jdW1lbnQgZWxlbWVudABkdXBsaWNhdGUgYXR0cmlidXRlAG1pc21hdGNoZWQgdGFnAHBhcnRpYWwgY2hhcmFjdGVyAHVuY2xvc2VkIHRva2VuAG5vdCB3ZWxsLWZvcm1lZCAoaW52YWxpZCB0b2tlbikAbm8gZWxlbWVudCBmb3VuZABzeW50YXggZXJyb3IAb3V0IG9mIG1lbW9yeQACAwQFBgcIAAAJCgsMDQ4PEBEAAAAAAAAAAAAAAAASEwAUAAAAAAAAAAAAAAAAAAAVFgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEXAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBARgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGQMaGxwdHgAAHyAhIiMkJRARAAAAAAAAAAAAAAAAEhMmFAAAAAAAAAAAAAAAAAAAJxYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBFwAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAENEQVRBW1VTLUFTQ0lJAFVURi0xNgBVVEYtMTZCRQBVVEYtMTZMRQB2ZXJzaW9uAGVuY29kaW5nAHN0YW5kYWxvbmUARE9DVFlQRQBTWVNURU0AUFVCTElDAEVOVElUWQBBVFRMSVNUAEVMRU1FTlQATk9UQVRJT04ASU5DTFVERQBJR05PUkUARU1QVFkAQU5ZAFBDREFUQQBJTVBMSUVEAFJFUVVJUkVEAEZJWEVEAENEQVRBAElEAElEUkVGAElEUkVGUwBFTlRJVElFUwBOTVRPS0VOAE5NVE9LRU5TAE5EQVRBAFQhIhkNAQIDEUscDBAECx0SHidobm9wcWIgBQYPExQVGggWBygkFxgJCg4bHyUjg4J9JiorPD0+P0NHSk1YWVpbXF1eX2BhY2RlZmdpamtscnN0eXp7fABJbGxlZ2FsIGJ5dGUgc2VxdWVuY2UARG9tYWluIGVycm9yAFJlc3VsdCBub3QgcmVwcmVzZW50YWJsZQBOb3QgYSB0dHkAUGVybWlzc2lvbiBkZW5pZWQAT3BlcmF0aW9uIG5vdCBwZXJtaXR0ZWQATm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeQBObyBzdWNoIHByb2Nlc3MARmlsZSBleGlzdHMAVmFsdWUgdG9vIGxhcmdlIGZvciBkYXRhIHR5cGUATm8gc3BhY2UgbGVmdCBvbiBkZXZpY2UAT3V0IG9mIG1lbW9yeQBSZXNvdXJjZSBidXN5AEludGVycnVwdGVkIHN5c3RlbSBjYWxsAFJlc291cmNlIHRlbXBvcmFyaWx5IHVuYXZhaWxhYmxlAEludmFsaWQgc2VlawBDcm9zcy1kZXZpY2UgbGluawBSZWFkLW9ubHkgZmlsZSBzeXN0ZW0ARGlyZWN0b3J5IG5vdCBlbXB0eQBDb25uZWN0aW9uIHJlc2V0IGJ5IHBlZXIAT3BlcmF0aW9uIHRpbWVkIG91dABDb25uZWN0aW9uIHJlZnVzZWQASG9zdCBpcyBkb3duAEhvc3QgaXMgdW5yZWFjaGFibGUAQWRkcmVzcyBpbiB1c2UAQnJva2VuIHBpcGUASS9PIGVycm9yAE5vIHN1Y2ggZGV2aWNlIG9yIGFkZHJlc3MAQmxvY2sgZGV2aWNlIHJlcXVpcmVkAE5vIHN1Y2ggZGV2aWNlAE5vdCBhIGRpcmVjdG9yeQBJcyBhIGRpcmVjdG9yeQBUZXh0IGZpbGUgYnVzeQBFeGVjIGZvcm1hdCBlcnJvcgBJbnZhbGlkIGFyZ3VtZW50AEFyZ3VtZW50IGxpc3QgdG9vIGxvbmcAU3ltYm9saWMgbGluayBsb29wAEZpbGVuYW1lIHRvbyBsb25nAFRvbyBtYW55IG9wZW4gZmlsZXMgaW4gc3lzdGVtAE5vIGZpbGUgZGVzY3JpcHRvcnMgYXZhaWxhYmxlAEJhZCBmaWxlIGRlc2NyaXB0b3IATm8gY2hpbGQgcHJvY2VzcwBCYWQgYWRkcmVzcwBGaWxlIHRvbyBsYXJnZQBUb28gbWFueSBsaW5rcwBObyBsb2NrcyBhdmFpbGFibGUAUmVzb3VyY2UgZGVhZGxvY2sgd291bGQgb2NjdXIAU3RhdGUgbm90IHJlY292ZXJhYmxlAFByZXZpb3VzIG93bmVyIGRpZWQAT3BlcmF0aW9uIGNhbmNlbGVkAEZ1bmN0aW9uIG5vdCBpbXBsZW1lbnRlZABObyBtZXNzYWdlIG9mIGRlc2lyZWQgdHlwZQBJZGVudGlmaWVyIHJlbW92ZWQARGV2aWNlIG5vdCBhIHN0cmVhbQBObyBkYXRhIGF2YWlsYWJsZQBEZXZpY2UgdGltZW91dABPdXQgb2Ygc3RyZWFtcyByZXNvdXJjZXMATGluayBoYXMgYmVlbiBzZXZlcmVkAFByb3RvY29sIGVycm9yAEJhZCBtZXNzYWdlAEZpbGUgZGVzY3JpcHRvciBpbiBiYWQgc3RhdGUATm90IGEgc29ja2V0AERlc3RpbmF0aW9uIGFkZHJlc3MgcmVxdWlyZWQATWVzc2FnZSB0b28gbGFyZ2UAUHJvdG9jb2wgd3JvbmcgdHlwZSBmb3Igc29ja2V0AFByb3RvY29sIG5vdCBhdmFpbGFibGUAUHJvdG9jb2wgbm90IHN1cHBvcnRlZABTb2NrZXQgdHlwZSBub3Qgc3VwcG9ydGVkAE5vdCBzdXBwb3J0ZWQAUHJvdG9jb2wgZmFtaWx5IG5vdCBzdXBwb3J0ZWQAQWRkcmVzcyBmYW1pbHkgbm90IHN1cHBvcnRlZCBieSBwcm90b2NvbABBZGRyZXNzIG5vdCBhdmFpbGFibGUATmV0d29yayBpcyBkb3duAE5ldHdvcmsgdW5yZWFjaGFibGUAQ29ubmVjdGlvbiByZXNldCBieSBuZXR3b3JrAENvbm5lY3Rpb24gYWJvcnRlZABObyBidWZmZXIgc3BhY2UgYXZhaWxhYmxlAFNvY2tldCBpcyBjb25uZWN0ZWQAU29ja2V0IG5vdCBjb25uZWN0ZWQAQ2Fubm90IHNlbmQgYWZ0ZXIgc29ja2V0IHNodXRkb3duAE9wZXJhdGlvbiBhbHJlYWR5IGluIHByb2dyZXNzAE9wZXJhdGlvbiBpbiBwcm9ncmVzcwBTdGFsZSBmaWxlIGhhbmRsZQBSZW1vdGUgSS9PIGVycm9yAFF1b3RhIGV4Y2VlZGVkAE5vIG1lZGl1bSBmb3VuZABXcm9uZyBtZWRpdW0gdHlwZQBObyBlcnJvciBpbmZvcm1hdGlvbgAAEhATFBUWFxgZGhscHR4fICEQECIjECQlJicoKSorECwtLhEvMBERMRERETIzNDU2Nzg5ERAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBA6EBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBA7EDw9Pj9AQRAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBBCEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBBDEBBEEEVGRxBIEEkQEBAQSktMTRAQThBPUBAQEBBREBAQEBAQEBAQEBAQEFIQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEFMQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBBUVVZXEBBYWRAQEBAQEBAQEBAQEBAQEBAQEBAQEBBaEFtcXV5fYGFiEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////////////////////////////////////////AAAAAP7/APwBAAD4AQAAeAAAAAD/+9/7AACAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8APz/4K//////////////3///////IECwAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAPwDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPwAAAAAAIb+////AEBJAAAAAAAYAN//AMgAAAAAAAAAAQA8AAAAAAAAAAAAAAAAEOABHgBg/78AAAAAAAD/BwAAAAAAAAAAAAAAAAAAAAAAAAD4zwMAAAADACD/fwAAAE4AAAAAAAAAAAAAAAAAAAAAAPwAAAAAAAAAAAAQACAeADAAAQAAAAAAAAAAEAAgAAAAAPwPAAAAAAAAABAAIAAAAAAAAAAAAAAAAAAQACAAAAAAAwAAAAAAAAAAEAAgAAAAAP0AAAAAAAAAAAAAIAAAAAD/BwAAAAAAAAAAACAAAAAAAP8AAAAAAAAAEAAgAAAAAAAAAAAAAAAAAAAAIAAAAAA/AgAAAAAAAAAAAAQAAAAAEAAAAAAAAIAAgMDfAAwAAAAAAAAAAAAAAAAAHwAAAAAAAP7///8A/P//AAAAAAAAAAD8AAAAAAAAwP/f/wcAAAAAAAAAAAAAgAYA/AAAGD4AAIC/AMwAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAGD///8fAAD/AwAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAEAABgAAAAAAAAAAAA4AAAAABAAAABwAAAAAAAAAAAAAAAAAAAAMAAA/n8vAAD/A/9/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4xAAAAAAAAAAAAAAAAAAAAAAAAxP////8AAADAAAAAAAAAAAABAOCfAAAAAH8/AAAAAAAAAAAAAAAAAAAAABAAEAAA/P///x8AAAAAAAwAAAAAAABAAAzwAAAAAAAAwPgAAAAAAAAAwAAAAAAAAAAA/wD///8hEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/////fwAA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAPgAOAA4ABggPj////8//////9/H/zxf/9/AAD///8DAAD/////AQB7A9DBr0IADB+8//8AAAAAAAL//////////////////////////////////////////////////////////w8A/////38AAAD/BwAA/////////////z8AAAAAAAD8///+/////////////////////////////////////////////////////x//AwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOCHA/4AAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAAAAAAP//////f/8PAAAAAAAAAAD////7/////////////w8A//////////////////////////////////8/AAAA/w8e////AfzB4AAAAAAAAAAAAAAAHgEAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAP//AAAAAP////8PAAAA////f////////////////////////////////////38AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//////////wAAAAAAAAAAAAAAAAAAAAAAAP///////38AAAAAAADAAOAAAAAAAAAAAAAAAIAPcAAAAAAAAAAAAAAAAAAA/wD//38AAwAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAEQIAAAAD/8DAAAAAAAA8AAAAAAAAAAAABDAAAD//wMHAAAAAAD4AAAAAAiAAAAAAAAAAAAAAAgA/z8AwAAAAAAAAAAAAAAAAAAAAPAAAIALAAAAAAAAAIACAADAAABDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAgAAAAAAAAAAAAAAAAAAAAD8/wMAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADD///8DfwD/////9/9/DwAAAAAAAAAAAAAAAAAAAAAAgP7/APwBAAD4AQAA+D8AAAAAAAAAAAAAAAAAAAB/fwAwh///////j/8AAAAAAADg//8H/w8AAAAAAAD//////z8AAAAADwAAAAAAAAAAAAAAAAAAgAAAAAAAAAEAAAAAAAAAAAAAAAAAAACA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAADAjwAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAh/8A/wEAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD+AAAA/wAAAP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////fwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMA//P8/AAAAAwAAAAAAAP4DAAAAAAAAAAAAAAAAABgADwAAAAAAAAAAAAAAAAAAAOEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAcAAAAAAAAAAAAAAAAA////////////////////////////////////////PwD/////f/7///////////////////////////8/AAAAAP//////////PwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/////////////38A//8DAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAIAAAACAAAIAAAACAAAIAAAACAAAAAAgAAAAIAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwD//////w////////////////8PAP9//n/+//7/AAAAAP8H////f/////////8P//////8HAAAAAAAAAADA////BwD//////wf/AQMAAAAAAAAAAAAAAAAAAAAAAAAAAAD/////AQC///////////8f//8PAP/////fBwAA//8BAP////////9//f////////////////////////////8e/////////z8PAP///wAAAAAAAAAAAAAAAAAAAAAAAPj//////////+H/AAAAAAAA//////////8/AAAAAAAAAP//////////////////DwAAAAAAAAAAAAAAAAAAAAAA/////////////////////////////////////////////////////////////////wABAgMEBQYHCAn/////////CgsMDQ4PEBESExQVFhcYGRobHB0eHyAhIiP///////8KCwwNDg8QERITFBUWFxgZGhscHR4fICEiI/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8AAQIEBwMGBQASERMUFRYXGBkaGxwdHh8gIREiIyQRJSYnKCkqKywRLS4vEBAwEBAQEBAQEDEyMxA0NRAQERERERERERERERERERERERERERERERERETYRERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERE3ERERETgROTo7PD0+ERERERERERERERERERERERERERERERERERERERERERERERERERERERERET8QEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBARQEERQkNERUZHSEkQEBBKS0xNThAQEE9QEBAQEFEQEBAQEBAQEBARERFSUxAQEBAQEBAQEBAQEREREVQQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAREVUQEBAQVhAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBBXEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBBYWVpbEBAQEBAQEBAQEBAQEBAQEBAQEBAQEFwQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//////////////////////////////////////////8AAAAAAAAAAP7//wf+//8HAAAAAAAEIAT//3////9//////////////////////////////////8P/AwAfUAAAAAAAAAAAAAAgAAAAAADfPEDX///7////////////v///////////////////////A/z/////////////////////////AP7///9/Av7/////AAAAAAD/v7YA////BwcAAAD/B//////////+/8P////////////////vH/7h/58AAP///////wDg////////////////AwD//////wcwBP////z/HwAA////AQAAAAAAAAAA/R8AAAAAAADwA/9//////////+//3+H/z//+/u6f+f///cXjn1mAsM//AwDuh/n///1tw4cZAl7A/z8A7r/7///97eO/GwEAz/8AAO6f+f///e3jnxnAsM//AgDsxz3WGMf/w8cdgQDA/wAA7t/9///97+PfHWADz/8AAOzf/f///e/j3x1gQM//BgDs3/3/////599dgADP/wD87P9//P//+y9/gF//AAAMAP7/////f/8HPyD/AwAAAACWJfD+ruz/O18g//MAAAAAAQAAAP8DAAD//v///x/+/wP///7///8fAAAAAAAAAAD///////9/+f8D///nwf//f0D/M/////+/IP//////9////////////z1/Pf//////Pf////89fz3/f/////////89//////////+HAAAAAP//AAD/////////////HwD+//////////////////////////////////////////////////////////+f///+//8H////////////xwEA/98PAP//DwD//w8A/98NAP///////8///wGAEP8DAAAAAP8D//////////////8A//////8H//////////8/AP///x//D/8BwP////8/HwD//////w////8D/wMAAAAA////D/////////9//v8fAP8D/wOAAAAAAAAAAAAAAAD////////v/+8P/wMAAAAA///////z////////v/8DAP///////z8A/+P//////z8AAAAAAAAAAAAAAAAA3m8A////////////////////////////////AAAAAAAAAAD//z8//////z8//6r///8/////////31/cH88P/x/cHwAAAAAAAAAAAAAAAAAAAoAAAP8fAAAAAAAAAAAAAAAAhPwvPlC9//PgQwAA//////8BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwP///////wMAAP//////f///////f/////////////////////8feAwA/////78g/////////4AAAP//fwB/f39/f39/f/////8AAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAD+Az4f/v///////////3/g/v/////////////34P////8//v////////////9/AAD///8HAAAAAAAA////////////////////////////////PwAAAAAAAAAAAP////////////////////////////////8fAAAAAAAA//////////////////////8fAAAAAAAAAAD//////z//H////w8AAP//////f/CP////gP////////////8AAAAAgP/8////////////////eQ8A/wcAAAAAAAAAAAD/u/f///8AAAD///////8PAP//////////DwD/AwAA/Aj//////wf/////BwD///8f////////9/8AgP8DAAAAAP///////38A/z//A///fwT/////////fwUAADj//zwAfn5+AH9/AAAAAAAAAAAAAAAAAAAAAAAA//////8H/wP//////////////////////////w8A//9/+P//////D/////////////////8//////////////////wMAAAAAfwD44P/9f1/b/////////////////wMAAAD4////////////////PwAA///////////8////////AAAAAAD/DwAAAAAAAAAAAAAAAAAA3/////////////////////8fAAD/A/7//wf+//8HwP////////////9//Pz8HAAAAAD/7///f///t/8//z8AAAAA////////////////////BwAAAAAAAAAA////////HwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///x////////8BAAAAAAD///9/AAD///8HAAAAAAAA////P/////8P/z4AAAAAAP////////////////////////8//wMAAAAAAAAAAAAAP/3/////v5H//z8AAAAAAAAAAAAAAAAAAAAAAAAAAAD//z8A////AwAAAAAAAAAA/////////8AAAAAAAAAAAG/w7/7//w8AAAAAAP///x8AAAAAAAAAAAAAAAAAAAAA////////PwD//z8A//8HAAAAAAAAAAAAAAAAAAAAAAD///////////8BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////////PwAAAMD/AAD8////////AQAA////Af8D////////x/8AAAAAAAAAAP//////////HgD/AwAAAAAAAAAAAAAAAAAAAAAAAAAA////////PwD/AwAAAAAAAP////////////////9/AAAAAAAAAAAAAAAAAAAAAAAA////////////////BwAAAAAAAAAAAAAAAAAAAAAAAAD//////38AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////////8BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//////////8fAP//////fwAA+P8AAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/////////////f///////////fZN7/6+//////////v+ff3////3tf/P3//////////////////////////////////////////////////////z/////9///3////9///3////9///3////9//////f////3///fP////////7////5b+9wqE6paqlvf3Xv/7/w/u+/8PAAAAAAAAAABMQ19BTEwATENfQ1RZUEUAAAAATENfTlVNRVJJQwAATENfVElNRQAAAAAATENfQ09MTEFURQAATENfTU9ORVRBUlkATENfTUVTU0FHRVMATEFORwBDLlVURi04AFBPU0lYAE1VU0xfTE9DUEFUSAARAAoAERERAAAAAAUAAAAAAAAJAAAAAAsAAAAAAAAAABEADwoREREDCgcAARMJCwsAAAkGCwAACwAGEQAAABEREQAAAAAAAAAAAAAAAAAAAAALAAAAAAAAAAARAAoKERERAAoAAAIACQsAAAAJAAsAAAsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAADAAAAAAMAAAAAAkMAAAAAAAMAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAA0AAAAEDQAAAAAJDgAAAAAADgAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAPAAAAAA8AAAAACRAAAAAAABAAABAAABIAAAASEhIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEgAAABISEgAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsAAAAAAAAAAAAAAAoAAAAACgAAAAAJCwAAAAAACwAACwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAAAAwAAAAACQwAAAAAAAwAAAwAAC0rICAgMFgweAAobnVsbCkALTBYKzBYIDBYLTB4KzB4IDB4AGluZgBJTkYATkFOADAxMjM0NTY3ODlBQkNERUYuAGFsbnVtAGFscGhhAGJsYW5rAGNudHJsAGRpZ2l0AGdyYXBoAGxvd2VyAHByaW50AHB1bmN0AHNwYWNlAHVwcGVyAHhkaWdpdABDLlVURi04AAAAAAAAAAAAQwAvcHJvYy9zZWxmL2ZkLwByd2EAaW5maW5pdHkAbmFuAAkACgANAAwABwAbAFtbOmFsbnVtOl1fXQBbXls6YWxudW06XV9dAFtbOnNwYWNlOl1dAFteWzpzcGFjZTpdXQBbWzpkaWdpdDpdXQBbXls6ZGlnaXQ6XV0AL3RtcC90bXBmaWxlX1hYWFhYWAB3Kw==";var Ve=S;function Ne(e,A,r,i){zr("Assertion failed: "+Z(e)+", at: "+[A?Z(A):"unknown filename",r,i?Z(i):"unknown function"])}function Re(){zr()}function xe(){return s||"undefined"!=typeof dateNow||(f||l)&&self.performance&&self.performance.now}S+=16;var Je={EPERM:1,ENOENT:2,ESRCH:3,EINTR:4,EIO:5,ENXIO:6,E2BIG:7,ENOEXEC:8,EBADF:9,ECHILD:10,EAGAIN:11,EWOULDBLOCK:11,ENOMEM:12,EACCES:13,EFAULT:14,ENOTBLK:15,EBUSY:16,EEXIST:17,EXDEV:18,ENODEV:19,ENOTDIR:20,EISDIR:21,EINVAL:22,ENFILE:23,EMFILE:24,ENOTTY:25,ETXTBSY:26,EFBIG:27,ENOSPC:28,ESPIPE:29,EROFS:30,EMLINK:31,EPIPE:32,EDOM:33,ERANGE:34,ENOMSG:42,EIDRM:43,ECHRNG:44,EL2NSYNC:45,EL3HLT:46,EL3RST:47,ELNRNG:48,EUNATCH:49,ENOCSI:50,EL2HLT:51,EDEADLK:35,ENOLCK:37,EBADE:52,EBADR:53,EXFULL:54,ENOANO:55,EBADRQC:56,EBADSLT:57,EDEADLOCK:35,EBFONT:59,ENOSTR:60,ENODATA:61,ETIME:62,ENOSR:63,ENONET:64,ENOPKG:65,EREMOTE:66,ENOLINK:67,EADV:68,ESRMNT:69,ECOMM:70,EPROTO:71,EMULTIHOP:72,EDOTDOT:73,EBADMSG:74,ENOTUNIQ:76,EBADFD:77,EREMCHG:78,ELIBACC:79,ELIBBAD:80,ELIBSCN:81,ELIBMAX:82,ELIBEXEC:83,ENOSYS:38,ENOTEMPTY:39,ENAMETOOLONG:36,ELOOP:40,EOPNOTSUPP:95,EPFNOSUPPORT:96,ECONNRESET:104,ENOBUFS:105,EAFNOSUPPORT:97,EPROTOTYPE:91,ENOTSOCK:88,ENOPROTOOPT:92,ESHUTDOWN:108,ECONNREFUSED:111,EADDRINUSE:98,ECONNABORTED:103,ENETUNREACH:101,ENETDOWN:100,ETIMEDOUT:110,EHOSTDOWN:112,EHOSTUNREACH:113,EINPROGRESS:115,EALREADY:114,EDESTADDRREQ:89,EMSGSIZE:90,EPROTONOSUPPORT:93,ESOCKTNOSUPPORT:94,EADDRNOTAVAIL:99,ENETRESET:102,EISCONN:106,ENOTCONN:107,ETOOMANYREFS:109,EUSERS:87,EDQUOT:122,ESTALE:116,ENOTSUP:95,ENOMEDIUM:123,EILSEQ:84,EOVERFLOW:75,ECANCELED:125,ENOTRECOVERABLE:131,EOWNERDEAD:130,ESTRPIPE:86};function He(e){return A.___errno_location&&(H[A.___errno_location()>>2]=e),e}function Pe(e,A){var r;if(0===e)r=Date.now();else{if(1!==e||!xe())return He(Je.EINVAL),-1;r=Re()}return H[A>>2]=r/1e3|0,H[A+4>>2]=r%1e3*1e3*1e3|0,0}function Xe(){return Pe.apply(null,arguments)}function Se(){}function je(e,A){return He(Je.EPERM),-1}var Ue={0:"Success",1:"Not super-user",2:"No such file or directory",3:"No such process",4:"Interrupted system call",5:"I/O error",6:"No such device or address",7:"Arg list too long",8:"Exec format error",9:"Bad file number",10:"No children",11:"No more processes",12:"Not enough core",13:"Permission denied",14:"Bad address",15:"Block device required",16:"Mount device busy",17:"File exists",18:"Cross-device link",19:"No such device",20:"Not a directory",21:"Is a directory",22:"Invalid argument",23:"Too many open files in system",24:"Too many open files",25:"Not a typewriter",26:"Text file busy",27:"File too large",28:"No space left on device",29:"Illegal seek",30:"Read only file system",31:"Too many links",32:"Broken pipe",33:"Math arg out of domain of func",34:"Math result not representable",35:"File locking deadlock error",36:"File or path name too long",37:"No record locks available",38:"Function not implemented",39:"Directory not empty",40:"Too many symbolic links",42:"No message of desired type",43:"Identifier removed",44:"Channel number out of range",45:"Level 2 not synchronized",46:"Level 3 halted",47:"Level 3 reset",48:"Link number out of range",49:"Protocol driver not attached",50:"No CSI structure available",51:"Level 2 halted",52:"Invalid exchange",53:"Invalid request descriptor",54:"Exchange full",55:"No anode",56:"Invalid request code",57:"Invalid slot",59:"Bad font file fmt",60:"Device not a stream",61:"No data (for no delay io)",62:"Timer expired",63:"Out of streams resources",64:"Machine is not on the network",65:"Package not installed",66:"The object is remote",67:"The link has been severed",68:"Advertise error",69:"Srmount error",70:"Communication error on send",71:"Protocol error",72:"Multihop attempted",73:"Cross mount point (not really error)",74:"Trying to read unreadable message",75:"Value too large for defined data type",76:"Given log. name not unique",77:"f.d. invalid for this operation",78:"Remote address changed",79:"Can access a needed shared lib",80:"Accessing a corrupted shared lib",81:".lib section in a.out corrupted",82:"Attempting to link in too many libs",83:"Attempting to exec a shared library",84:"Illegal byte sequence",86:"Streams pipe error",87:"Too many users",88:"Socket operation on non-socket",89:"Destination address required",90:"Message too long",91:"Protocol wrong type for socket",92:"Protocol not available",93:"Unknown protocol",94:"Socket type not supported",95:"Not supported",96:"Protocol family not supported",97:"Address family not supported by protocol family",98:"Address already in use",99:"Address not available",100:"Network interface is not configured",101:"Network is unreachable",102:"Connection reset by network",103:"Connection aborted",104:"Connection reset by peer",105:"No buffer space available",106:"Socket is already connected",107:"Socket is not connected",108:"Can't send after socket shutdown",109:"Too many references",110:"Connection timed out",111:"Connection refused",112:"Host is down",113:"Host is unreachable",114:"Socket already connected",115:"Connection already in progress",116:"Stale file handle",122:"Quota exceeded",123:"No medium (in tape drive)",125:"Operation canceled",130:"Previous owner died",131:"State not recoverable"},Te={splitPath:function(e){return/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(e).slice(1)},normalizeArray:function(e,A){for(var r=0,i=e.length-1;i>=0;i--){var a=e[i];"."===a?e.splice(i,1):".."===a?(e.splice(i,1),r++):r&&(e.splice(i,1),r--)}if(A)for(;r;r--)e.unshift("..");return e},normalize:function(e){var A="/"===e.charAt(0),r="/"===e.substr(-1);return(e=Te.normalizeArray(e.split("/").filter((function(e){return!!e})),!A).join("/"))||A||(e="."),e&&r&&(e+="/"),(A?"/":"")+e},dirname:function(e){var A=Te.splitPath(e),r=A[0],i=A[1];return r||i?(i&&(i=i.substr(0,i.length-1)),r+i):"."},basename:function(e){if("/"===e)return"/";var A=e.lastIndexOf("/");return-1===A?e:e.substr(A+1)},extname:function(e){return Te.splitPath(e)[3]},join:function(){var e=Array.prototype.slice.call(arguments,0);return Te.normalize(e.join("/"))},join2:function(e,A){return Te.normalize(e+"/"+A)},resolve:function(){for(var e="",A=!1,r=arguments.length-1;r>=-1&&!A;r--){var i=r>=0?arguments[r]:eA.cwd();if("string"!=typeof i)throw new TypeError("Arguments to path.resolve must be strings");if(!i)return"";e=i+"/"+e,A="/"===i.charAt(0)}return(A?"/":"")+(e=Te.normalizeArray(e.split("/").filter((function(e){return!!e})),!A).join("/"))||"."},relative:function(e,A){function r(e){for(var A=0;A=0&&""===e[r];r--);return A>r?[]:e.slice(A,r-A+1)}e=Te.resolve(e).substr(1),A=Te.resolve(A).substr(1);for(var i=r(e.split("/")),a=r(A.split("/")),t=Math.min(i.length,a.length),n=t,f=0;f0?r.slice(0,i).toString("utf-8"):null}else"undefined"!=typeof window&&"function"==typeof window.prompt?null!==(A=window.prompt("Input: "))&&(A+="\n"):"function"==typeof readline&&null!==(A=readline())&&(A+="\n");if(!A)return null;e.input=PA(A,!0)}return e.input.shift()},put_char:function(e,r){null===r||10===r?(A.print(L(e.output,0)),e.output=[]):0!=r&&e.output.push(r)},flush:function(e){e.output&&e.output.length>0&&(A.print(L(e.output,0)),e.output=[])}},default_tty1_ops:{put_char:function(e,r){null===r||10===r?(A.printErr(L(e.output,0)),e.output=[]):0!=r&&e.output.push(r)},flush:function(e){e.output&&e.output.length>0&&(A.printErr(L(e.output,0)),e.output=[])}}},_e={ops_table:null,mount:function(e){return _e.createNode(null,"/",16895,0)},createNode:function(e,A,r,i){if(eA.isBlkdev(r)||eA.isFIFO(r))throw new eA.ErrnoError(Je.EPERM);_e.ops_table||(_e.ops_table={dir:{node:{getattr:_e.node_ops.getattr,setattr:_e.node_ops.setattr,lookup:_e.node_ops.lookup,mknod:_e.node_ops.mknod,rename:_e.node_ops.rename,unlink:_e.node_ops.unlink,rmdir:_e.node_ops.rmdir,readdir:_e.node_ops.readdir,symlink:_e.node_ops.symlink},stream:{llseek:_e.stream_ops.llseek}},file:{node:{getattr:_e.node_ops.getattr,setattr:_e.node_ops.setattr},stream:{llseek:_e.stream_ops.llseek,read:_e.stream_ops.read,write:_e.stream_ops.write,allocate:_e.stream_ops.allocate,mmap:_e.stream_ops.mmap,msync:_e.stream_ops.msync}},link:{node:{getattr:_e.node_ops.getattr,setattr:_e.node_ops.setattr,readlink:_e.node_ops.readlink},stream:{}},chrdev:{node:{getattr:_e.node_ops.getattr,setattr:_e.node_ops.setattr},stream:eA.chrdev_stream_ops}});var a=eA.createNode(e,A,r,i);return eA.isDir(a.mode)?(a.node_ops=_e.ops_table.dir.node,a.stream_ops=_e.ops_table.dir.stream,a.contents={}):eA.isFile(a.mode)?(a.node_ops=_e.ops_table.file.node,a.stream_ops=_e.ops_table.file.stream,a.usedBytes=0,a.contents=null):eA.isLink(a.mode)?(a.node_ops=_e.ops_table.link.node,a.stream_ops=_e.ops_table.link.stream):eA.isChrdev(a.mode)&&(a.node_ops=_e.ops_table.chrdev.node,a.stream_ops=_e.ops_table.chrdev.stream),a.timestamp=Date.now(),e&&(e.contents[A]=a),a},getFileDataAsRegularArray:function(e){if(e.contents&&e.contents.subarray){for(var A=[],r=0;re.contents.length&&(e.contents=_e.getFileDataAsRegularArray(e),e.usedBytes=e.contents.length),!e.contents||e.contents.subarray){var r=e.contents?e.contents.length:0;if(r>=A)return;A=Math.max(A,r*(r<1048576?2:1.125)|0),0!=r&&(A=Math.max(A,256));var i=e.contents;return e.contents=new Uint8Array(A),void(e.usedBytes>0&&e.contents.set(i.subarray(0,e.usedBytes),0))}for(!e.contents&&A>0&&(e.contents=[]);e.contents.lengthA)e.contents.length=A;else for(;e.contents.length=e.node.usedBytes)return 0;var n=Math.min(e.node.usedBytes-a,i);if(v(n>=0),n>8&&t.subarray)A.set(t.subarray(a,a+n),r);else for(var f=0;f0||a+in.timestamp)&&(a.push(r),i++)}));var t=[];if(Object.keys(A.entries).forEach((function(r){A.entries[r],e.entries[r]||(t.push(r),i++)})),!i)return r(null);var n=0,f=("remote"===e.type?e.db:A.db).transaction([qe.DB_STORE_NAME],"readwrite"),l=f.objectStore(qe.DB_STORE_NAME);function s(e){return e?s.errored?void 0:(s.errored=!0,r(e)):++n>=i?r(null):void 0}f.onerror=function(e){s(this.error),e.preventDefault()},a.sort().forEach((function(e){"local"===A.type?qe.loadRemoteEntry(l,e,(function(A,r){if(A)return s(A);qe.storeLocalEntry(e,r,s)})):qe.loadLocalEntry(e,(function(A,r){if(A)return s(A);qe.storeRemoteEntry(l,e,r,s)}))})),t.sort().reverse().forEach((function(e){"local"===A.type?qe.removeLocalEntry(e,s):qe.removeRemoteEntry(l,e,s)}))}},Ke={isWindows:!1,staticInit:function(){Ke.isWindows=!!process.platform.match(/^win/);var e=process.binding("constants");e.fs&&(e=e.fs),Ke.flagsForNodeMap={1024:e.O_APPEND,64:e.O_CREAT,128:e.O_EXCL,0:e.O_RDONLY,2:e.O_RDWR,4096:e.O_SYNC,512:e.O_TRUNC,1:e.O_WRONLY}},bufferFrom:function(e){return Buffer.alloc?Buffer.from(e):new Buffer.from(e)},mount:function(e){return v(s),Ke.createNode(null,"/",Ke.getMode(e.opts.root),0)},createNode:function(e,A,r,i){if(!eA.isDir(r)&&!eA.isFile(r)&&!eA.isLink(r))throw new eA.ErrnoError(Je.EINVAL);var a=eA.createNode(e,A,r);return a.node_ops=Ke.node_ops,a.stream_ops=Ke.stream_ops,a},getMode:function(e){var A;try{A=xA.lstatSync(e),Ke.isWindows&&(A.mode=A.mode|(292&A.mode)>>2)}catch(e){if(!e.code)throw e;throw new eA.ErrnoError(Je[e.code])}return A.mode},realPath:function(e){for(var A=[];e.parent!==e;)A.push(e.name),e=e.parent;return A.push(e.mount.opts.root),A.reverse(),Te.join.apply(null,A)},flagsForNode:function(e){e&=-2097153,e&=-2049,e&=-32769,e&=-524289;var A=0;for(var r in Ke.flagsForNodeMap)e&r&&(A|=Ke.flagsForNodeMap[r],e^=r);if(e)throw new eA.ErrnoError(Je.EINVAL);return A},node_ops:{getattr:function(e){var A,r=Ke.realPath(e);try{A=xA.lstatSync(r)}catch(e){if(!e.code)throw e;throw new eA.ErrnoError(Je[e.code])}return Ke.isWindows&&!A.blksize&&(A.blksize=4096),Ke.isWindows&&!A.blocks&&(A.blocks=(A.size+A.blksize-1)/A.blksize|0),{dev:A.dev,ino:A.ino,mode:A.mode,nlink:A.nlink,uid:A.uid,gid:A.gid,rdev:A.rdev,size:A.size,atime:A.atime,mtime:A.mtime,ctime:A.ctime,blksize:A.blksize,blocks:A.blocks}},setattr:function(e,A){var r=Ke.realPath(e);try{if(void 0!==A.mode&&(xA.chmodSync(r,A.mode),e.mode=A.mode),void 0!==A.timestamp){var i=new Date(A.timestamp);xA.utimesSync(r,i,i)}void 0!==A.size&&xA.truncateSync(r,A.size)}catch(e){if(!e.code)throw e;throw new eA.ErrnoError(Je[e.code])}},lookup:function(e,A){var r=Te.join2(Ke.realPath(e),A),i=Ke.getMode(r);return Ke.createNode(e,A,i)},mknod:function(e,A,r,i){var a=Ke.createNode(e,A,r,i),t=Ke.realPath(a);try{eA.isDir(a.mode)?xA.mkdirSync(t,a.mode):xA.writeFileSync(t,"",{mode:a.mode})}catch(e){if(!e.code)throw e;throw new eA.ErrnoError(Je[e.code])}return a},rename:function(e,A,r){var i=Ke.realPath(e),a=Te.join2(Ke.realPath(A),r);try{xA.renameSync(i,a)}catch(e){if(!e.code)throw e;throw new eA.ErrnoError(Je[e.code])}},unlink:function(e,A){var r=Te.join2(Ke.realPath(e),A);try{xA.unlinkSync(r)}catch(e){if(!e.code)throw e;throw new eA.ErrnoError(Je[e.code])}},rmdir:function(e,A){var r=Te.join2(Ke.realPath(e),A);try{xA.rmdirSync(r)}catch(e){if(!e.code)throw e;throw new eA.ErrnoError(Je[e.code])}},readdir:function(e){var A=Ke.realPath(e);try{return xA.readdirSync(A)}catch(e){if(!e.code)throw e;throw new eA.ErrnoError(Je[e.code])}},symlink:function(e,A,r){var i=Te.join2(Ke.realPath(e),A);try{xA.symlinkSync(r,i)}catch(e){if(!e.code)throw e;throw new eA.ErrnoError(Je[e.code])}},readlink:function(e){var A=Ke.realPath(e);try{return A=xA.readlinkSync(A),A=JA.relative(JA.resolve(e.mount.opts.root),A)}catch(e){if(!e.code)throw e;throw new eA.ErrnoError(Je[e.code])}}},stream_ops:{open:function(e){var A=Ke.realPath(e.node);try{eA.isFile(e.node.mode)&&(e.nfd=xA.openSync(A,Ke.flagsForNode(e.flags)))}catch(e){if(!e.code)throw e;throw new eA.ErrnoError(Je[e.code])}},close:function(e){try{eA.isFile(e.node.mode)&&e.nfd&&xA.closeSync(e.nfd)}catch(e){if(!e.code)throw e;throw new eA.ErrnoError(Je[e.code])}},read:function(e,A,r,i,a){if(0===i)return 0;try{return xA.readSync(e.nfd,Ke.bufferFrom(A.buffer),r,i,a)}catch(e){throw new eA.ErrnoError(Je[e.code])}},write:function(e,A,r,i,a){try{return xA.writeSync(e.nfd,Ke.bufferFrom(A.buffer),r,i,a)}catch(e){throw new eA.ErrnoError(Je[e.code])}},llseek:function(e,A,r){var i=A;if(1===r)i+=e.position;else if(2===r&&eA.isFile(e.node.mode))try{i+=xA.fstatSync(e.nfd).size}catch(e){throw new eA.ErrnoError(Je[e.code])}if(i<0)throw new eA.ErrnoError(Je.EINVAL);return i}}},$e={DIR_MODE:16895,FILE_MODE:33279,reader:null,mount:function(e){v(l),$e.reader||($e.reader=new FileReaderSync);var A=$e.createNode(null,"/",$e.DIR_MODE,0),r={};function i(e){for(var i=e.split("/"),a=A,t=0;t=e.node.size)return 0;var t=e.node.contents.slice(a,a+i),n=$e.reader.readAsArrayBuffer(t);return A.set(new Uint8Array(n),r),t.size},write:function(e,A,r,i,a){throw new eA.ErrnoError(Je.EIO)},llseek:function(e,A,r){var i=A;if(1===r?i+=e.position:2===r&&eA.isFile(e.node.mode)&&(i+=e.node.size),i<0)throw new eA.ErrnoError(Je.EINVAL);return i}}};S+=16,S+=16,S+=16;var eA={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:!1,ignorePermissions:!0,trackingDelegate:{},tracking:{openFlags:{READ:1,WRITE:2}},ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,handleFSError:function(e){if(!(e instanceof eA.ErrnoError))throw e+" : "+V();return He(e.errno)},lookupPath:function(e,A){if(A=A||{},!(e=Te.resolve(eA.cwd(),e)))return{path:"",node:null};var r={follow_mount:!0,recurse_count:0};for(var i in r)void 0===A[i]&&(A[i]=r[i]);if(A.recurse_count>8)throw new eA.ErrnoError(Je.ELOOP);for(var a=Te.normalizeArray(e.split("/").filter((function(e){return!!e})),!1),t=eA.root,n="/",f=0;f40)throw new eA.ErrnoError(Je.ELOOP)}}return{path:n,node:t}},getPath:function(e){for(var A;;){if(eA.isRoot(e)){var r=e.mount.mountpoint;return A?"/"!==r[r.length-1]?r+"/"+A:r+A:r}A=A?e.name+"/"+A:e.name,e=e.parent}},hashName:function(e,A){for(var r=0,i=0;i>>0)%eA.nameTable.length},hashAddNode:function(e){var A=eA.hashName(e.parent.id,e.name);e.name_next=eA.nameTable[A],eA.nameTable[A]=e},hashRemoveNode:function(e){var A=eA.hashName(e.parent.id,e.name);if(eA.nameTable[A]===e)eA.nameTable[A]=e.name_next;else for(var r=eA.nameTable[A];r;){if(r.name_next===e){r.name_next=e.name_next;break}r=r.name_next}},lookupNode:function(e,A){var r=eA.mayLookup(e);if(r)throw new eA.ErrnoError(r,e);for(var i=eA.hashName(e.id,A),a=eA.nameTable[i];a;a=a.name_next){var t=a.name;if(a.parent.id===e.id&&t===A)return a}return eA.lookup(e,A)},createNode:function(e,A,r,i){eA.FSNode||(eA.FSNode=function(e,A,r,i){e||(e=this),this.parent=e,this.mount=e.mount,this.mounted=null,this.id=eA.nextInode++,this.name=A,this.mode=r,this.node_ops={},this.stream_ops={},this.rdev=i},eA.FSNode.prototype={},Object.defineProperties(eA.FSNode.prototype,{read:{get:function(){return 365==(365&this.mode)},set:function(e){e?this.mode|=365:this.mode&=-366}},write:{get:function(){return 146==(146&this.mode)},set:function(e){e?this.mode|=146:this.mode&=-147}},isFolder:{get:function(){return eA.isDir(this.mode)}},isDevice:{get:function(){return eA.isChrdev(this.mode)}}}));var a=new eA.FSNode(e,A,r,i);return eA.hashAddNode(a),a},destroyNode:function(e){eA.hashRemoveNode(e)},isRoot:function(e){return e===e.parent},isMountpoint:function(e){return!!e.mounted},isFile:function(e){return 32768==(61440&e)},isDir:function(e){return 16384==(61440&e)},isLink:function(e){return 40960==(61440&e)},isChrdev:function(e){return 8192==(61440&e)},isBlkdev:function(e){return 24576==(61440&e)},isFIFO:function(e){return 4096==(61440&e)},isSocket:function(e){return 49152==(49152&e)},flagModes:{r:0,rs:1052672,"r+":2,w:577,wx:705,xw:705,"w+":578,"wx+":706,"xw+":706,a:1089,ax:1217,xa:1217,"a+":1090,"ax+":1218,"xa+":1218},modeStringToFlags:function(e){var A=eA.flagModes[e];if(void 0===A)throw new Error("Unknown file open mode: "+e);return A},flagsToPermissionString:function(e){var A=["r","w","rw"][3&e];return 512&e&&(A+="w"),A},nodePermissions:function(e,A){return eA.ignorePermissions||(-1===A.indexOf("r")||292&e.mode)&&(-1===A.indexOf("w")||146&e.mode)&&(-1===A.indexOf("x")||73&e.mode)?0:Je.EACCES},mayLookup:function(e){return eA.nodePermissions(e,"x")||(e.node_ops.lookup?0:Je.EACCES)},mayCreate:function(e,A){try{return eA.lookupNode(e,A),Je.EEXIST}catch(e){}return eA.nodePermissions(e,"wx")},mayDelete:function(e,A,r){var i;try{i=eA.lookupNode(e,A)}catch(e){return e.errno}var a=eA.nodePermissions(e,"wx");if(a)return a;if(r){if(!eA.isDir(i.mode))return Je.ENOTDIR;if(eA.isRoot(i)||eA.getPath(i)===eA.cwd())return Je.EBUSY}else if(eA.isDir(i.mode))return Je.EISDIR;return 0},mayOpen:function(e,A){return e?eA.isLink(e.mode)?Je.ELOOP:eA.isDir(e.mode)&&("r"!==eA.flagsToPermissionString(A)||512&A)?Je.EISDIR:eA.nodePermissions(e,eA.flagsToPermissionString(A)):Je.ENOENT},MAX_OPEN_FDS:4096,nextfd:function(e,A){e=e||0,A=A||eA.MAX_OPEN_FDS;for(var r=e;r<=A;r++)if(!eA.streams[r])return r;throw new eA.ErrnoError(Je.EMFILE)},getStream:function(e){return eA.streams[e]},createStream:function(e,A,r){eA.FSStream||(eA.FSStream=function(){},eA.FSStream.prototype={},Object.defineProperties(eA.FSStream.prototype,{object:{get:function(){return this.node},set:function(e){this.node=e}},isRead:{get:function(){return 1!=(2097155&this.flags)}},isWrite:{get:function(){return 0!=(2097155&this.flags)}},isAppend:{get:function(){return 1024&this.flags}}}));var i=new eA.FSStream;for(var a in e)i[a]=e[a];e=i;var t=eA.nextfd(A,r);return e.fd=t,eA.streams[t]=e,e},closeStream:function(e){eA.streams[e]=null},chrdev_stream_ops:{open:function(e){var A=eA.getDevice(e.node.rdev);e.stream_ops=A.stream_ops,e.stream_ops.open&&e.stream_ops.open(e)},llseek:function(){throw new eA.ErrnoError(Je.ESPIPE)}},major:function(e){return e>>8},minor:function(e){return 255&e},makedev:function(e,A){return e<<8|A},registerDevice:function(e,A){eA.devices[e]={stream_ops:A}},getDevice:function(e){return eA.devices[e]},getMounts:function(e){for(var A=[],r=[e];r.length;){var i=r.pop();A.push(i),r.push.apply(r,i.mounts)}return A},syncfs:function(e,A){"function"==typeof e&&(A=e,e=!1),eA.syncFSRequests++,eA.syncFSRequests>1&&console.log("warning: "+eA.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work");var r=eA.getMounts(eA.root.mount),i=0;function a(e){return v(eA.syncFSRequests>0),eA.syncFSRequests--,A(e)}function t(e){if(e)return t.errored?void 0:(t.errored=!0,a(e));++i>=r.length&&a(null)}r.forEach((function(A){if(!A.type.syncfs)return t(null);A.type.syncfs(A,e,t)}))},mount:function(e,A,r){var i,a="/"===r,t=!r;if(a&&eA.root)throw new eA.ErrnoError(Je.EBUSY);if(!a&&!t){var n=eA.lookupPath(r,{follow_mount:!1});if(r=n.path,i=n.node,eA.isMountpoint(i))throw new eA.ErrnoError(Je.EBUSY);if(!eA.isDir(i.mode))throw new eA.ErrnoError(Je.ENOTDIR)}var f={type:e,opts:A,mountpoint:r,mounts:[]},l=e.mount(f);return l.mount=f,f.root=l,a?eA.root=l:i&&(i.mounted=f,i.mount&&i.mount.mounts.push(f)),l},unmount:function(e){var A=eA.lookupPath(e,{follow_mount:!1});if(!eA.isMountpoint(A.node))throw new eA.ErrnoError(Je.EINVAL);var r=A.node,i=r.mounted,a=eA.getMounts(i);Object.keys(eA.nameTable).forEach((function(e){for(var A=eA.nameTable[e];A;){var r=A.name_next;-1!==a.indexOf(A.mount)&&eA.destroyNode(A),A=r}})),r.mounted=null;var t=r.mount.mounts.indexOf(i);v(-1!==t),r.mount.mounts.splice(t,1)},lookup:function(e,A){return e.node_ops.lookup(e,A)},mknod:function(e,A,r){var i=eA.lookupPath(e,{parent:!0}).node,a=Te.basename(e);if(!a||"."===a||".."===a)throw new eA.ErrnoError(Je.EINVAL);var t=eA.mayCreate(i,a);if(t)throw new eA.ErrnoError(t);if(!i.node_ops.mknod)throw new eA.ErrnoError(Je.EPERM);return i.node_ops.mknod(i,a,A,r)},create:function(e,A){return A=void 0!==A?A:438,A&=4095,A|=32768,eA.mknod(e,A,0)},mkdir:function(e,A){return A=void 0!==A?A:511,A&=1023,A|=16384,eA.mknod(e,A,0)},mkdirTree:function(e,A){for(var r=e.split("/"),i="",a=0;athis.length-1||e<0)){var A=e%this.chunkSize,r=e/this.chunkSize|0;return this.getter(r)[A]}},t.prototype.setDataGetter=function(e){this.getter=e},t.prototype.cacheLength=function(){var e=new XMLHttpRequest;if(e.open("HEAD",r,!1),e.send(null),!(e.status>=200&&e.status<300||304===e.status))throw new Error("Couldn't load "+r+". Status: "+e.status);var A,i=Number(e.getResponseHeader("Content-length")),a=(A=e.getResponseHeader("Accept-Ranges"))&&"bytes"===A,t=(A=e.getResponseHeader("Content-Encoding"))&&"gzip"===A,n=1048576;a||(n=i);var f=this;f.setDataGetter((function(e){var A=e*n,a=(e+1)*n-1;if(a=Math.min(a,i-1),void 0===f.chunks[e]&&(f.chunks[e]=function(e,A){if(e>A)throw new Error("invalid range ("+e+", "+A+") or no bytes requested!");if(A>i-1)throw new Error("only "+i+" bytes available! programmer error!");var a=new XMLHttpRequest;if(a.open("GET",r,!1),i!==n&&a.setRequestHeader("Range","bytes="+e+"-"+A),"undefined"!=typeof Uint8Array&&(a.responseType="arraybuffer"),a.overrideMimeType&&a.overrideMimeType("text/plain; charset=x-user-defined"),a.send(null),!(a.status>=200&&a.status<300||304===a.status))throw new Error("Couldn't load "+r+". Status: "+a.status);return void 0!==a.response?new Uint8Array(a.response||[]):PA(a.responseText||"",!0)}(A,a)),void 0===f.chunks[e])throw new Error("doXHR failed!");return f.chunks[e]})),!t&&i||(n=i=1,i=this.getter(0).length,n=i,console.log("LazyFiles on gzip forces download of the whole file when length is accessed")),this._length=i,this._chunkSize=n,this.lengthKnown=!0},"undefined"!=typeof XMLHttpRequest){if(!l)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var n=new t;Object.defineProperties(n,{length:{get:function(){return this.lengthKnown||this.cacheLength(),this._length}},chunkSize:{get:function(){return this.lengthKnown||this.cacheLength(),this._chunkSize}}});var f={isDevice:!1,contents:n}}else f={isDevice:!1,url:r};var s=eA.createFile(e,A,f,i,a);f.contents?s.contents=f.contents:f.url&&(s.contents=null,s.url=f.url),Object.defineProperties(s,{usedBytes:{get:function(){return this.contents.length}}});var c={};return Object.keys(s.stream_ops).forEach((function(e){var A=s.stream_ops[e];c[e]=function(){if(!eA.forceLoadFile(s))throw new eA.ErrnoError(Je.EIO);return A.apply(null,arguments)}})),c.read=function(e,A,r,i,a){if(!eA.forceLoadFile(s))throw new eA.ErrnoError(Je.EIO);var t=e.node.contents;if(a>=t.length)return 0;var n=Math.min(t.length-a,i);if(v(n>=0),t.slice)for(var f=0;f>2]=i.dev,H[r+4>>2]=0,H[r+8>>2]=i.ino,H[r+12>>2]=i.mode,H[r+16>>2]=i.nlink,H[r+20>>2]=i.uid,H[r+24>>2]=i.gid,H[r+28>>2]=i.rdev,H[r+32>>2]=0,H[r+36>>2]=i.size,H[r+40>>2]=4096,H[r+44>>2]=i.blocks,H[r+48>>2]=i.atime.getTime()/1e3|0,H[r+52>>2]=0,H[r+56>>2]=i.mtime.getTime()/1e3|0,H[r+60>>2]=0,H[r+64>>2]=i.ctime.getTime()/1e3|0,H[r+68>>2]=0,H[r+72>>2]=i.ino,0},doMsync:function(e,A,r,i){var a=new Uint8Array(x.subarray(e,e+r));eA.msync(A,a,0,r,i)},doMkdir:function(e,A){return"/"===(e=Te.normalize(e))[e.length-1]&&(e=e.substr(0,e.length-1)),eA.mkdir(e,A,0),0},doMknod:function(e,A,r){switch(61440&A){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-Je.EINVAL}return eA.mknod(e,A,r),0},doReadlink:function(e,A,r){if(r<=0)return-Je.EINVAL;var i=eA.readlink(e),a=Math.min(r,W(i)),t=R[A+a];return z(i,A,r+1),R[A+a]=t,a},doAccess:function(e,A){if(-8&A)return-Je.EINVAL;var r;r=eA.lookupPath(e,{follow:!0}).node;var i="";return 4&A&&(i+="r"),2&A&&(i+="w"),1&A&&(i+="x"),i&&eA.nodePermissions(r,i)?-Je.EACCES:0},doDup:function(e,A,r){var i=eA.getStream(r);return i&&eA.close(i),eA.open(e,A,0,r,r).fd},doReadv:function(e,A,r,i){for(var a=0,t=0;t>2],f=H[A+(8*t+4)>>2],l=eA.read(e,R,n,f,i);if(l<0)return-1;if(a+=l,l>2],f=H[A+(8*t+4)>>2],l=eA.write(e,R,n,f,i);if(l<0)return-1;a+=l}return a},varargs:0,get:function(e){return AA.varargs+=4,H[AA.varargs-4>>2]},getStr:function(){return Z(AA.get())},getStreamFromFD:function(){var e=eA.getStream(AA.get());if(!e)throw new eA.ErrnoError(Je.EBADF);return e},getSocketFromFD:function(){var e=SOCKFS.getSocket(AA.get());if(!e)throw new eA.ErrnoError(Je.EBADF);return e},getSocketAddress:function(e){var A=AA.get(),r=AA.get();if(e&&0===A)return null;var i=__read_sockaddr(A,r);if(i.errno)throw new eA.ErrnoError(i.errno);return i.addr=DNS.lookup_addr(i.addr)||i.addr,i},get64:function(){var e=AA.get(),A=AA.get();return v(e>=0?0===A:-1===A),e},getZero:function(){v(0===AA.get())}};function rA(e,A){AA.varargs=A;try{var r=AA.getStr();return eA.unlink(r),0}catch(e){return void 0!==eA&&e instanceof eA.ErrnoError||zr(e),-e.errno}}function iA(e,A){AA.varargs=A;try{var r=AA.getStreamFromFD(),i=(AA.get(),AA.get()),a=AA.get(),t=AA.get(),n=i;return eA.llseek(r,n,t),H[a>>2]=r.position,r.getdents&&0===n&&0===t&&(r.getdents=null),0}catch(e){return void 0!==eA&&e instanceof eA.ErrnoError||zr(e),-e.errno}}function aA(e,A){AA.varargs=A;try{var r=AA.getStreamFromFD(),i=AA.get(),a=AA.get();return AA.doReadv(r,i,a)}catch(e){return void 0!==eA&&e instanceof eA.ErrnoError||zr(e),-e.errno}}function tA(e,A){AA.varargs=A;try{var r=AA.getStreamFromFD(),i=AA.get(),a=AA.get();return AA.doWritev(r,i,a)}catch(e){return void 0!==eA&&e instanceof eA.ErrnoError||zr(e),-e.errno}}function nA(e,A){AA.varargs=A;try{var r,i=AA.get(),a=AA.get(),t=AA.get(),n=AA.get(),f=AA.get(),l=AA.get();l<<=12;var s=!1;if(-1===f){if(!(r=gr(K,a)))return-Je.ENOMEM;mr(r,0,a),s=!0}else{var c=eA.getStream(f);if(!c)return-Je.EBADF;var o=eA.mmap(c,x,i,a,l,t,n);r=o.ptr,s=o.allocated}return AA.mappings[r]={malloc:r,len:a,allocated:s,fd:f,flags:n},r}catch(e){return void 0!==eA&&e instanceof eA.ErrnoError||zr(e),-e.errno}}function fA(e,A){AA.varargs=A;try{var r=AA.getStr(),i=AA.get();return AA.doStat(eA.stat,r,i)}catch(e){return void 0!==eA&&e instanceof eA.ErrnoError||zr(e),-e.errno}}function lA(e,A){AA.varargs=A;try{var r=AA.getStreamFromFD(),i=AA.get();return AA.doStat(eA.stat,r.path,i)}catch(e){return void 0!==eA&&e instanceof eA.ErrnoError||zr(e),-e.errno}}var sA={ppid:1,pid:42,sid:42,pgid:42};function cA(e,A){AA.varargs=A;try{return sA.pid}catch(e){return void 0!==eA&&e instanceof eA.ErrnoError||zr(e),-e.errno}}function oA(e,A){AA.varargs=A;try{var r=AA.getStreamFromFD();switch(AA.get()){case 0:return(i=AA.get())<0?-Je.EINVAL:eA.open(r.path,r.flags,0,i).fd;case 1:case 2:return 0;case 3:return r.flags;case 4:var i=AA.get();return r.flags|=i,0;case 12:case 12:return i=AA.get(),J[i+0>>1]=2,0;case 13:case 14:case 13:case 14:return 0;case 16:case 8:return-Je.EINVAL;case 9:return He(Je.EINVAL),-1;default:return-Je.EINVAL}}catch(e){return void 0!==eA&&e instanceof eA.ErrnoError||zr(e),-e.errno}}function uA(e,A){AA.varargs=A;try{var r=AA.getStreamFromFD(),i=AA.get(),a=AA.get();return eA.read(r,R,i,a)}catch(e){return void 0!==eA&&e instanceof eA.ErrnoError||zr(e),-e.errno}}function bA(e,A){AA.varargs=A;try{var r=AA.getStr(),i=AA.get();return AA.doAccess(r,i)}catch(e){return void 0!==eA&&e instanceof eA.ErrnoError||zr(e),-e.errno}}function hA(e,A){AA.varargs=A;try{var r=AA.getStr(),i=AA.get(),a=AA.get();return eA.open(r,i,a).fd}catch(e){return void 0!==eA&&e instanceof eA.ErrnoError||zr(e),-e.errno}}function wA(e,A){AA.varargs=A;try{var r=AA.getStreamFromFD(),i=AA.get();switch(i){case 21509:case 21505:return r.tty?0:-Je.ENOTTY;case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:return r.tty?0:-Je.ENOTTY;case 21519:if(!r.tty)return-Je.ENOTTY;var a=AA.get();return H[a>>2]=0,0;case 21520:return r.tty?-Je.EINVAL:-Je.ENOTTY;case 21531:return a=AA.get(),eA.ioctl(r,i,a);case 21523:return r.tty?0:-Je.ENOTTY;default:zr("bad ioctl syscall "+i)}}catch(e){return void 0!==eA&&e instanceof eA.ErrnoError||zr(e),-e.errno}}function kA(e,A){AA.varargs=A;try{var r=AA.getStreamFromFD();return eA.close(r),0}catch(e){return void 0!==eA&&e instanceof eA.ErrnoError||zr(e),-e.errno}}function dA(e,A){AA.varargs=A;try{var r=AA.get(),i=AA.get(),a=AA.mappings[r];if(!a)return 0;if(i===a.len){var t=eA.getStream(a.fd);AA.doMsync(r,t,i,a.flags),eA.munmap(t),AA.mappings[r]=null,a.allocated&&dr(a.malloc)}return 0}catch(e){return void 0!==eA&&e instanceof eA.ErrnoError||zr(e),-e.errno}}var vA=I([8,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,7,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0],"i8",y);function gA(){}function mA(e){A.exit(e)}function pA(e){mA(e)}var EA=S;function BA(e){var r,i;BA.called?(i=H[EA>>2],r=H[i>>2]):(BA.called=!0,yA.USER=yA.LOGNAME="web_user",yA.PATH="/",yA.PWD="/",yA.HOME="/home/web_user",yA.LANG="C.UTF-8",yA._=A.thisProgram,r=u(1024),i=u(256),H[i>>2]=r,H[EA>>2]=i);var a=[],t=0;for(var n in e)if("string"==typeof e[n]){var f=n+"="+e[n];a.push(f),t+=f.length}if(t>1024)throw new Error("Environment size exceeded TOTAL_ENV_SIZE!");for(var l=0;l>2]=r,r+=f.length+1;H[i+4*a.length>>2]=0}S+=16;var yA={};function CA(e){return 0===e?0:(e=Z(e),yA.hasOwnProperty(e)?(CA.ret&&dr(CA.ret),CA.ret=Y(yA[e]),CA.ret):0)}function IA(e){var A=Date.now();return H[e>>2]=A/1e3|0,H[e+4>>2]=A%1e3*1e3|0,0}var ZA=Be,GA=pe,LA=pe,QA=ye,DA=Ce,zA=Ee,WA=Ee;function YA(){zr("trap!")}function FA(e,r){throw A.setThrew(e,r||1),"longjmp"}function MA(e,A,r){return x.set(x.subarray(A,A+r),e),e}function VA(e,A,r){if(0===e)return He(Je.EINVAL),-1;var i=Z(e),a=Z(A);return""===i||-1!==i.indexOf("=")?(He(Je.EINVAL),-1):(yA.hasOwnProperty(i)&&!r||(yA[i]=a,BA(yA)),0)}function NA(e){var A=Date.now()/1e3|0;return e&&(H[e>>2]=A),A}function RA(e){return 0!==e&&mr(e,0,16),0}if(Re=s?function(){var e=process.hrtime();return 1e3*e[0]+e[1]/1e6}:"undefined"!=typeof dateNow?dateNow:"object"==typeof self&&self.performance&&"function"==typeof self.performance.now?function(){return self.performance.now()}:"object"==typeof performance&&"function"==typeof performance.now?function(){return performance.now()}:Date.now,eA.staticInit(),fe.unshift((function(){A.noFSInit||eA.init.initialized||eA.init()})),le.push((function(){eA.ignorePermissions=!1})),se.push((function(){eA.quit()})),fe.unshift((function(){Oe.init()})),se.push((function(){Oe.shutdown()})),s){var xA=r(5747),JA=r(5622);Ke.staticInit()}BA(yA),q=u(4),U=T=h(S),_=h(O=U+re),H[q>>2]=_,j=!0;var HA=!1;function PA(e,A,r){var i=r>0?r:W(e)+1,a=new Array(i),t=D(e,a,0,a.length);return A&&(a.length=t),a}function XA(e){for(var A=[],r=0;r255&&(HA&&v(!1,"Character code "+i+" ("+String.fromCharCode(i)+") at offset "+r+" not in 0x00-0xFF."),i&=255),A.push(String.fromCharCode(i))}return A.join("")}var SA="function"==typeof atob?atob:function(e){var A,r,i,a,t,n,f="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",l="",s=0;e=e.replace(/[^A-Za-z0-9\+\/\=]/g,"");do{A=f.indexOf(e.charAt(s++))<<2|(a=f.indexOf(e.charAt(s++)))>>4,r=(15&a)<<4|(t=f.indexOf(e.charAt(s++)))>>2,i=(3&t)<<6|(n=f.indexOf(e.charAt(s++))),l+=String.fromCharCode(A),64!==t&&(l+=String.fromCharCode(r)),64!==n&&(l+=String.fromCharCode(i))}while(s>2]=0;k=y;d=0;r=re(29,e|0)|0;a=d;d=0;if((a|0)!=0&(v|0)!=0){n=L6(t[a>>2]|0,E|0,B|0)|0;if(!n)aA(a|0,v|0);G=v}else n=-1;e:do{if((n|0)!=1){d=0;p=re(23,r<<3|0)|0;a=d;d=0;if((a|0)!=0&(v|0)!=0){r=L6(t[a>>2]|0,E|0,B|0)|0;if(!r)aA(a|0,v|0);G=v}else r=-1;if((r|0)!=1){if(!(i[194954]|0))g=0;else{d=0;r=Ae(3)|0;a=d;d=0;if((a|0)!=0&(v|0)!=0){n=L6(t[a>>2]|0,E|0,B|0)|0;if(!n)aA(a|0,v|0);G=v}else n=-1;if((n|0)==1){u=0;c=0;o=0;s=0;l=0;A=p;f=p;r=G;n=0;m=74;break}g=r}d=0;r=ie(97,e|0,110064)|0;a=d;d=0;if((a|0)!=0&(v|0)!=0){n=L6(t[a>>2]|0,E|0,B|0)|0;if(!n)aA(a|0,v|0);G=v}else n=-1;if((n|0)!=1){t[47323]=0;A:do{if(r|0?(l=i[r>>0]|0,l<<24>>24):0){f=r;a=l;n=0;while(1){l=f+1|0;if(!(a<<24>>24))break A;switch(a<<24>>24|0){case 99:{r=8;m=16;break}case 105:{r=18;m=16;break}case 109:{r=1;m=16;break}case 114:{r=4;m=16;break}case 115:{r=2;m=16;break}default:r=n}if((m|0)==16){m=0;r=n|r;t[47323]=r}f=l;a=i[l>>0]|0;n=r}}}while(0);if(A|0){d=0;te(20,0,110068,s|0)|0;r=d;d=0;if((r|0)!=0&(v|0)!=0){a=L6(t[r>>2]|0,E|0,B|0)|0;if(!a)aA(r|0,v|0);G=v}else a=-1;if((a|0)==1){u=0;c=g;o=0;s=0;l=0;A=p;f=p;r=G;n=0;m=74;break}}d=0;w=ie(98,e|0,0)|0;r=d;d=0;if((r|0)!=0&(v|0)!=0){a=L6(t[r>>2]|0,E|0,B|0)|0;if(!a)aA(r|0,v|0);G=v}else a=-1;if((a|0)!=1){o=t[w+16>>2]|0;if(t[47323]&2|0){d=0;ue(26,t[15712]|0,o|0);r=d;d=0;if((r|0)!=0&(v|0)!=0){a=L6(t[r>>2]|0,E|0,B|0)|0;if(!a)aA(r|0,v|0);G=v}else a=-1;if((a|0)==1){u=0;c=g;o=0;s=0;l=w;A=p;f=p;r=G;n=0;m=74;break}}d=0;n=re(25,e|0)|0;r=d;d=0;if((r|0)!=0&(v|0)!=0){a=L6(t[r>>2]|0,E|0,B|0)|0;if(!a)aA(r|0,v|0);G=v}else a=-1;if((a|0)!=1){u=0;while(1){if(!n)break;d=0;r=ie(99,e|0,n|0)|0;a=d;d=0;if((a|0)!=0&(v|0)!=0){f=L6(t[a>>2]|0,E|0,B|0)|0;if(!f)aA(a|0,v|0);G=v}else f=-1;if((f|0)==1){c=g;o=0;s=0;l=w;A=p;f=p;r=G;n=0;m=74;break e}l=u;while(1){if(!r)break;if(!((t[47134]|0)==2?(t[(t[r+16>>2]|0)+8>>2]|0)!=0:0))m=32;A:do{if((m|0)==32){m=0;do{if(i[194954]|0){c=t[r>>2]&3;s=(t[t[((c|0)==3?r:r+48|0)+40>>2]>>2]|0)>>>4;c=(t[t[((c|0)==2?r:r+-48|0)+40>>2]>>2]|0)>>>4;if(s>>>0>c>>>0){d=0;a=te(34,g|0,c|0,s|0)|0;f=d;d=0;if((f|0)!=0&(v|0)!=0){A=L6(t[f>>2]|0,E|0,B|0)|0;if(!A)aA(f|0,v|0);G=v}else A=-1;if((A|0)==1){c=g;o=0;s=0;l=w;A=p;f=p;r=G;n=0;m=74;break e}if(a|0)break A;d=0;be(64,g|0,c|0,s|0);a=d;d=0;if((a|0)!=0&(v|0)!=0){f=L6(t[a>>2]|0,E|0,B|0)|0;if(!f)aA(a|0,v|0);G=v}else f=-1;if((f|0)==1){c=g;o=0;s=0;l=w;A=p;f=p;r=G;n=0;m=74;break e}break}else{d=0;a=te(34,g|0,s|0,c|0)|0;f=d;d=0;if((f|0)!=0&(v|0)!=0){A=L6(t[f>>2]|0,E|0,B|0)|0;if(!A)aA(f|0,v|0);G=v}else A=-1;if((A|0)==1){c=g;o=0;s=0;l=w;A=p;f=p;r=G;n=0;m=74;break e}if(a|0)break A;d=0;be(64,g|0,s|0,c|0);a=d;d=0;if((a|0)!=0&(v|0)!=0){f=L6(t[a>>2]|0,E|0,B|0)|0;if(!f)aA(a|0,v|0);G=v}else f=-1;if((f|0)==1){c=g;o=0;s=0;l=w;A=p;f=p;r=G;n=0;m=74;break e}break}}}while(0);t[p+(l<<3)+4>>2]=r;d=0;A=re(30,r|0)|0;a=d;d=0;if((a|0)!=0&(v|0)!=0){f=L6(t[a>>2]|0,E|0,B|0)|0;if(!f)aA(a|0,v|0);G=v}else f=-1;if((f|0)==1){c=g;o=0;s=0;l=w;A=p;f=p;r=G;n=0;m=74;break e}t[p+(l<<3)>>2]=A;l=l+1|0}}while(0);d=0;r=ie(100,e|0,r|0)|0;a=d;d=0;if((a|0)!=0&(v|0)!=0){f=L6(t[a>>2]|0,E|0,B|0)|0;if(!f)aA(a|0,v|0);G=v}else f=-1;if((f|0)==1){c=g;o=0;s=0;l=w;A=p;f=p;r=G;n=0;m=74;break e}}d=0;n=ie(86,e|0,n|0)|0;r=d;d=0;if((r|0)!=0&(v|0)!=0){a=L6(t[r>>2]|0,E|0,B|0)|0;if(!a)aA(r|0,v|0);G=v}else a=-1;if((a|0)==1){c=g;o=0;s=0;l=w;A=p;f=p;r=G;n=0;m=74;break e}u=l}d=0;s=re(31,u<<3|0)|0;r=d;d=0;if((r|0)!=0&(v|0)!=0){a=L6(t[r>>2]|0,E|0,B|0)|0;if(!a)aA(r|0,v|0);G=v}else a=-1;if((a|0)!=1){d=0;we(28,p|0,u|0,8,101);r=d;d=0;if((r|0)!=0&(v|0)!=0){a=L6(t[r>>2]|0,E|0,B|0)|0;if(!a)aA(r|0,v|0);G=v}else a=-1;if((a|0)!=1){n=t[o>>2]|0;d=0;oe(110,n+2|0);r=d;d=0;if((r|0)!=0&(v|0)!=0){a=L6(t[r>>2]|0,E|0,B|0)|0;if(!a)aA(r|0,v|0);G=v}else a=-1;if((a|0)!=1){l=t[o+16>>2]|0;A=l+(n*40|0)|0;l=l+((n+1|0)*40|0)|0;b=t[15712]|0;f=0;while(1){if((f|0)>=(u|0))break;if((f|0)>0?t[47323]&16|0:0){d=0;ue(26,b|0,o|0);r=d;d=0;if((r|0)!=0&(v|0)!=0){a=L6(t[r>>2]|0,E|0,B|0)|0;if(!a)aA(r|0,v|0);G=v}else a=-1;if((a|0)==1){c=g;o=s;l=w;A=p;f=p;r=G;n=b;m=74;break e}}r=t[p+(f<<3)+4>>2]|0;c=t[r>>2]&3;n=t[(t[(t[((c|0)==3?r:r+48|0)+40>>2]|0)+16>>2]|0)+112>>2]|0;r=t[(t[(t[((c|0)==2?r:r+-48|0)+40>>2]|0)+16>>2]|0)+112>>2]|0;if((n|0)==(r|0)){d=0;we(29,o|0,n|0,l|0,A|0);r=d;d=0;if((r|0)!=0&(v|0)!=0){a=L6(t[r>>2]|0,E|0,B|0)|0;if(!a)aA(r|0,v|0);G=v}else a=-1;if((a|0)==1){c=g;o=s;l=w;A=p;f=p;r=G;n=b;m=74;break e}}else{d=0;be(65,o|0,r|0,l|0);r=d;d=0;if((r|0)!=0&(v|0)!=0){a=L6(t[r>>2]|0,E|0,B|0)|0;if(!a)aA(r|0,v|0);G=v}else a=-1;if((a|0)==1){c=g;o=s;l=w;A=p;f=p;r=G;n=b;m=74;break e}d=0;be(65,o|0,n|0,A|0);r=d;d=0;if((r|0)!=0&(v|0)!=0){a=L6(t[r>>2]|0,E|0,B|0)|0;if(!a)aA(r|0,v|0);G=v}else a=-1;if((a|0)==1){c=g;o=s;l=w;A=p;f=p;r=G;n=b;m=74;break e}}d=0;r=te(35,o|0,l|0,A|0)|0;a=d;d=0;if((a|0)!=0&(v|0)!=0){n=L6(t[a>>2]|0,E|0,B|0)|0;if(!n)aA(a|0,v|0);G=v}else n=-1;if((n|0)==1){c=g;o=s;l=w;A=p;f=p;r=G;n=b;m=74;break e}if(r|0){c=g;o=s;l=w;A=p;f=p;break e}r=s+(f<<3)|0;d=0;we(30,k|0,o|0,A|0,l|0);a=d;d=0;if((a|0)!=0&(v|0)!=0){n=L6(t[a>>2]|0,E|0,B|0)|0;if(!n)aA(a|0,v|0);G=v}else n=-1;if((n|0)==1){c=g;o=s;l=w;A=p;f=p;r=G;n=b;m=74;break e}n=k;c=t[n+4>>2]|0;t[r>>2]=t[n>>2];t[r+4>>2]=c;d=0;oe(111,o|0);r=d;d=0;if((r|0)!=0&(v|0)!=0){a=L6(t[r>>2]|0,E|0,B|0)|0;if(!a)aA(r|0,v|0);G=v}else a=-1;if((a|0)==1){c=g;o=s;l=w;A=p;f=p;r=G;n=b;m=74;break e}f=f+1|0}d=0;ce(8);r=d;d=0;if((r|0)!=0&(v|0)!=0){a=L6(t[r>>2]|0,E|0,B|0)|0;if(!a)aA(r|0,v|0);G=v}else a=-1;if((a|0)!=1){d=0;r=re(32,w|0)|0;a=d;d=0;if((a|0)!=0&(v|0)!=0){n=L6(t[a>>2]|0,E|0,B|0)|0;if(!n)aA(a|0,v|0);G=v}else n=-1;if((n|0)!=1){t[w+20>>2]=r;d=0;r=re(33,w|0)|0;a=d;d=0;if((a|0)!=0&(v|0)!=0){n=L6(t[a>>2]|0,E|0,B|0)|0;if(!n)aA(a|0,v|0);G=v}else n=-1;if((n|0)!=1){t[w+24>>2]=r;d=0;be(66,u|0,s|0,w|0);r=d;d=0;if((r|0)!=0&(v|0)!=0){a=L6(t[r>>2]|0,E|0,B|0)|0;if(!a)aA(r|0,v|0);G=v}else a=-1;if((a|0)!=1){E=G6(189296,1,E|0,B|0)|0;B=G;d=0;r=d;d=0;if((r|0)!=0&(v|0)!=0){a=L6(t[r>>2]|0,E|0,B|0)|0;if(!a)aA(r|0,v|0);G=v}else a=-1;if((a|0)!=1){c=g;o=s;l=w;A=p;f=p;r=0;n=b;m=74}else{c=g;o=s;l=w;A=p;f=p;r=G;n=b;m=74}}else{c=g;o=s;l=w;A=p;f=p;r=G;n=b;m=74}}else{c=g;o=s;l=w;A=p;f=p;r=G;n=b;m=74}}else{c=g;o=s;l=w;A=p;f=p;r=G;n=b;m=74}}else{c=g;o=s;l=w;A=p;f=p;r=G;n=b;m=74}}else{c=g;o=s;l=w;A=p;f=p;r=G;n=0;m=74}}else{c=g;o=s;l=w;A=p;f=p;r=G;n=0;m=74}}else{c=g;o=0;l=w;A=p;f=p;r=G;n=0;m=74}}else{u=0;c=g;o=0;s=0;l=w;A=p;f=p;r=G;n=0;m=74}}else{u=0;c=g;o=0;s=0;l=w;A=p;f=p;r=G;n=0;m=74}}else{u=0;c=g;o=0;s=0;l=0;A=p;f=p;r=G;n=0;m=74}}else{u=0;c=0;o=0;s=0;l=0;A=0;f=p;r=G;n=0;m=74}}else{u=0;c=0;o=0;s=0;l=0;A=0;f=0;r=G;n=0;m=74}}while(0);e:while(1){if((m|0)==74){m=0;if(r|0){b=n;continue}d=0;oe(112,l|0);r=d;d=0;if((r|0)!=0&(v|0)!=0){a=L6(t[r>>2]|0,E|0,B|0)|0;if(!a)aA(r|0,v|0);G=v}else a=-1;if((a|0)==1){C=n;a=f;b=A;w=l;k=s;g=o;p=c;m=u;r=G;n=C;f=a;A=b;l=w;s=k;o=g;c=p;u=m;m=74;continue}if(t[47323]&4|0){d=0;ke(8,n|0,l|0,u|0,o|0,A|0);r=d;d=0;if((r|0)!=0&(v|0)!=0){a=L6(t[r>>2]|0,E|0,B|0)|0;if(!a)aA(r|0,v|0);G=v}else a=-1;if((a|0)==1){a=n;b=f;w=A;k=l;g=s;p=o;C=c;m=u;r=G;n=a;f=b;A=w;l=k;s=g;o=p;c=C;u=m;m=74;continue}}d=0;de(10,e|0,l|0,u|0,o|0,A|0,0);r=d;d=0;if((r|0)!=0&(v|0)!=0){a=L6(t[r>>2]|0,E|0,B|0)|0;if(!a)aA(r|0,v|0);G=v}else a=-1;if((a|0)==1){a=n;b=f;w=A;k=l;g=s;p=o;C=c;m=u;r=G;n=a;f=b;A=w;l=k;s=g;o=p;c=C;u=m;m=74;continue}b=n}if(!(i[194954]|0))r=0;else{d=0;oe(113,c|0);r=d;d=0;if((r|0)!=0&(v|0)!=0){a=L6(t[r>>2]|0,E|0,B|0)|0;if(!a)aA(r|0,v|0);G=v}else a=-1;if((a|0)==1){r=G;n=b;m=74;continue}r=0}while(1){if((r|0)>=(u|0))break;d=0;oe(105,t[o+(r<<3)+4>>2]|0);a=d;d=0;if((a|0)!=0&(v|0)!=0){n=L6(t[a>>2]|0,E|0,B|0)|0;if(!n)aA(a|0,v|0);G=v}else n=-1;if((n|0)==1){r=G;n=b;m=74;continue e}r=r+1|0}d=0;oe(105,s|0);r=d;d=0;if((r|0)!=0&(v|0)!=0){a=L6(t[r>>2]|0,E|0,B|0)|0;if(!a)aA(r|0,v|0);G=v}else a=-1;if((a|0)==1){r=G;n=b;m=74;continue}d=0;oe(114,l|0);r=d;d=0;if((r|0)!=0&(v|0)!=0){a=L6(t[r>>2]|0,E|0,B|0)|0;if(!a)aA(r|0,v|0);G=v}else a=-1;if((a|0)==1){r=G;n=b;m=74;continue}d=0;oe(105,f|0);r=d;d=0;if((r|0)!=0&(v|0)!=0){a=L6(t[r>>2]|0,E|0,B|0)|0;if(!a)aA(r|0,v|0);G=v}else a=-1;if((a|0)==1){r=G;n=b;m=74}else break}G2(E|0);h=y;return}function cA(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0,f=0,l=0,s=0,o=0,u=0,b=0,w=0,k=0,d=0.0;k=h;h=h+64|0;w=k+32|0;b=k+16|0;l=k;s=k+48|0;Z3(110935,e)|0;Z3(110946,e)|0;o=A+16|0;u=l+8|0;f=s+4|0;n=0;while(1){if((n|0)>=(t[A>>2]|0))break;r=t[o>>2]|0;i=t[r+(n*40|0)+20>>2]|0;a=t[r+(n*40|0)+24>>2]|0;if((i|0)==(a|0)){ir(l,i);r=~~+c[l>>3];i=~~+c[u>>3]}else{tr(s,(t[i>>2]&1|0)==0?i:a,r+(n*40|0)|0);r=t[s>>2]|0;i=t[f>>2]|0}t[b>>2]=n;t[b+4>>2]=r;t[b+8>>2]=i;a3(e,110966,b)|0;n=n+1|0}a=A+4|0;i=A+20|0;r=0;while(1){if((r|0)>=(t[a>>2]|0))break;b=t[i>>2]|0;A=t[b+(r*24|0)+16>>2]|0;d=+c[b+(r*24|0)>>3];t[w>>2]=t[b+(r*24|0)+12>>2];t[w+4>>2]=A;c[w+8>>3]=d;a3(e,110986,w)|0;r=r+1|0}Z3(111008,e)|0;h=k;return}function oA(e){e=e|0;var A=0.0,r=0.0,i=0,a=0;a=t[e>>2]&3;i=t[(t[((a|0)==3?e:e+48|0)+40>>2]|0)+16>>2]|0;e=t[(t[((a|0)==2?e:e+-48|0)+40>>2]|0)+16>>2]|0;A=+c[i+16>>3]-+c[e+16>>3];r=+c[i+24>>3]-+c[e+24>>3];return~~(r*r+A*A)|0}function uA(e,A){e=e|0;A=A|0;return(t[e>>2]|0)-(t[A>>2]|0)|0}function bA(e,A,r,a){e=e|0;A=A|0;r=r|0;a=a|0;var n=0,f=0,l=0,s=0,c=0,o=0,u=0;u=h;h=h+32|0;s=u;ir(u+16|0,A);c=A+32|0;o=A+36|0;n=0;while(1){if((n|0)>=(t[c>>2]|0))break;f=t[(t[o>>2]|0)+(n<<2)>>2]|0;do{if(!(i[f+36>>0]|0)){l=t[f+20>>2]|0;if((l|0)==(A|0)){Ar(s,f,t[f+24>>2]|0);Er(e,a,f,0.0)|0;break}else{Ar(s,f,l);Er(e,r,f,0.0)|0;break}}}while(0);n=n+1|0}t[e>>2]=(t[e>>2]|0)+2;h=u;return}function hA(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0,n=0,f=0,l=0,s=0,c=0;c=h;h=h+32|0;f=c;ir(c+16|0,A);l=A+32|0;s=A+36|0;a=0;while(1){if((a|0)>=(t[l>>2]|0))break;n=t[(t[s>>2]|0)+(a<<2)>>2]|0;i=t[n+20>>2]|0;if((i|0)==(A|0))i=t[n+24>>2]|0;Ar(f,n,i);Er(e,r,n,0.0)|0;a=a+1|0}t[e>>2]=(t[e>>2]|0)+1;t[r+24>>2]=A;t[r+20>>2]=A;h=c;return}function wA(e,A,r,a){e=e|0;A=A|0;r=r|0;a=a|0;var n=0,f=0,l=0,s=0.0,o=0.0,u=0,b=0.0,w=0.0,k=0,d=0,v=0,g=0,m=0,p=0,E=0.0,B=0.0,y=0,C=0,I=0,Z=0,G=0,L=0,Q=0,D=0,z=0,W=0;W=h;h=h+128|0;G=W+64|0;u=W+48|0;L=W+32|0;Q=W+16|0;D=W;n=0;f=r;while(1){if(!f)break;n=n+1|0;f=t[f+8>>2]|0}Z=KF((n*56|0)+-112|0)|0;t[G+52>>2]=0;t[G+48>>2]=0;I=r+8|0;r=t[I>>2]|0;f=t[r+8>>2]|0;n=t[r+20>>2]|0;if(t[n>>2]&1)n=t[r+24>>2]|0;Ar(u,r,n);l=r;k=r;w=0.0;b=+c[u>>3];C=0;o=0.0;B=+c[u+8>>3];while(1){y=f+8|0;if(!(t[y>>2]|0))break;p=rr(l,f)|0;Tt(A,p,t[k+12>>2]|0);g=k+36|0;m=f+36|0;if((i[g>>0]|0)==(i[m>>0]|0))if((t[y>>2]|0)==(a|0)){Ar(Q,f,p);r=Q;z=12}else{l=k;r=C;s=B}else{ir(L,p);r=L;z=12}if((z|0)==12){z=0;E=+c[r>>3];s=+c[r+8>>3];r=i[g>>0]|0;v=r<<24>>24==0;d=(k|0)==(t[I>>2]|0);if(v){if(!(i[m>>0]|0))r=0;else r=(t[f+20>>2]|0)==(p|0)?4:2;u=p+48|0;k=n+48|0;l=n+40|0;n=d?0:w>b?4:2}else{if(r<<24>>24==(i[m>>0]|0))r=0;else r=(t[f+20>>2]|0)==(p|0)?1:3;u=p+40|0;k=n+40|0;l=n+48|0;n=d?0:o>B?1:3}ar(G,v&1,+c[l>>3],+c[k>>3],+c[u>>3],n,r);k=C+1|0;n=Z+(C*56|0)|0;r=G;l=n+56|0;do{t[n>>2]=t[r>>2];n=n+4|0;r=r+4|0}while((n|0)<(l|0));if((i[g>>0]|0)!=(i[m>>0]|0)?(t[y>>2]|0)==(a|0):0){Ar(D,f,p);u=(i[m>>0]|0)==0;r=p+40|0;n=p+48|0;w=+c[(u?n:r)>>3];ar(G,u&1,+c[(u?r:n)>>3],w,w,u?b>E?4:2:B>s?1:3,0);u=C+2|0;n=Z+(k*56|0)|0;r=G;l=n+56|0;do{t[n>>2]=t[r>>2];n=n+4|0;r=r+4|0}while((n|0)<(l|0));n=p;l=f;w=b;b=E;r=u;o=B}else{n=p;l=f;w=b;b=E;r=k;o=B}}p=f;f=t[y>>2]|0;k=l;C=r;B=s;l=p}f=Q2(Z,C*56|0)|0;r=C+-1|0;n=0;while(1){if((n|0)>=(C|0))break;if((n|0)>0)t[f+(n*56|0)+48>>2]=f+((n+-1|0)*56|0);if((n|0)<(r|0)){z=n+1|0;t[f+(n*56|0)+52>>2]=f+(z*56|0);n=z;continue}else{n=n+1|0;continue}}t[e>>2]=C;t[e+4>>2]=f;h=W;return}function kA(e){e=e|0;var A=0,r=0,i=0,a=0,n=0,f=0,l=0,s=0;l=Uh(25692,t[4581]|0)|0;s=e+8|0;f=0;while(1){if((f|0)>=(t[e>>2]|0))break;A=(t[s>>2]|0)+(f*72|0)|0;if(!(t[A>>2]&4)){while(1){r=t[(t[A+36>>2]|0)+8>>2]|0;if(!r)break;r=t[r+20>>2]|0;if(!r)break;if(!(t[r>>2]&1))A=r;else break}n=KF(40)|0;t[n+36>>2]=A;c[n+8>>3]=+c[A+40>>3];a=A;r=t[A>>2]|0;while(1){t[a>>2]=r|4;r=t[t[a+36>>2]>>2]|0;if(!r)break;i=t[r+24>>2]|0;if(!i)break;r=t[i>>2]|0;if(r&1|0)break;else a=i}c[n+16>>3]=+c[a+56>>3];_A(l,n,+c[A+48>>3])}f=f+1|0}return l|0}function dA(e){e=e|0;var A=0,r=0,i=0,a=0,n=0,f=0,l=0,s=0;l=Uh(25692,t[4581]|0)|0;s=e+8|0;f=0;while(1){if((f|0)>=(t[e>>2]|0))break;A=(t[s>>2]|0)+(f*72|0)|0;if(!(t[A>>2]&2)){while(1){r=t[(t[A+36>>2]|0)+12>>2]|0;if(!r)break;r=t[r+20>>2]|0;if(!r)break;if(!(t[r>>2]&1))A=r;else break}n=KF(40)|0;t[n+36>>2]=A;c[n+8>>3]=+c[A+48>>3];a=A;r=t[A>>2]|0;while(1){t[a>>2]=r|2;r=t[(t[a+36>>2]|0)+4>>2]|0;if(!r)break;i=t[r+24>>2]|0;if(!i)break;r=t[i>>2]|0;if(r&1|0)break;else a=i}c[n+16>>3]=+c[a+64>>3];_A(l,n,+c[A+40>>3])}f=f+1|0}return l|0}function vA(e,A,r){e=e|0;A=A|0;r=r|0;var a=0,n=0,f=0,l=0,s=0,c=0;s=r+20|0;l=r+24|0;r=0;while(1){if((r|0)>=(e|0))break;n=t[A+(r<<3)>>2]|0;f=t[A+(r<<3)+4>>2]|0;a=0;while(1){if((a|0)>=(n|0))break;c=f+(a*56|0)|0;OA(ZA(t[((i[c>>0]|0)==0?s:l)>>2]|0,c)|0,c);a=a+1|0}r=r+1|0}return}function gA(e){e=e|0;var A=0,r=0;r=e+20|0;LA(t[r>>2]|0);A=e+24|0;LA(t[A>>2]|0);QA(t[r>>2]|0);QA(t[A>>2]|0);DA(t[r>>2]|0,e);DA(t[A>>2]|0,e);zA(t[r>>2]|0);zA(t[A>>2]|0);return}function mA(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;var n=0,f=0,l=0,s=0,o=0,u=0,b=0,w=0,k=0,d=0,v=0,g=0,m=0,p=0,E=0,B=0,y=0,C=0,I=0.0,Z=0.0,G=0.0,L=0,Q=0.0;C=h;h=h+224|0;u=C+176|0;o=C+208|0;B=C+160|0;y=C+128|0;s=C+96|0;g=C+64|0;m=C;b=C+32|0;p=m+8|0;c[p>>3]=1797693134862315708145274.0e284;c[m>>3]=1797693134862315708145274.0e284;E=m+24|0;c[E>>3]=-1797693134862315708145274.0e284;w=m+16|0;c[w>>3]=-1797693134862315708145274.0e284;Z3(110183,e)|0;t[u>>2]=10;t[u+4>>2]=10;a3(e,110589,u)|0;Z3(138265,e)|0;f=A+4|0;l=A+12|0;k=g+8|0;d=g+16|0;v=g+24|0;n=0;while(1){if((n|0)>=(t[f>>2]|0))break;L=(t[l>>2]|0)+(n*72|0)+40|0;t[g>>2]=t[L>>2];t[g+4>>2]=t[L+4>>2];t[g+8>>2]=t[L+8>>2];t[g+12>>2]=t[L+12>>2];t[g+16>>2]=t[L+16>>2];t[g+20>>2]=t[L+20>>2];t[g+24>>2]=t[L+24>>2];t[g+28>>2]=t[L+28>>2];G=+c[k>>3];Z=+c[d>>3];I=+c[v>>3];c[s>>3]=+c[g>>3];c[s+8>>3]=G;c[s+16>>3]=Z;c[s+24>>3]=I;a3(e,138284,s)|0;n=n+1|0}n=0;while(1){if((n|0)>=(r|0))break;L=t[a+(n<<3)+4>>2]|0;s=i+(n<<3)|0;t[o>>2]=t[s>>2];t[o+4>>2]=t[s+4>>2];t[u>>2]=t[m>>2];t[u+4>>2]=t[m+4>>2];t[u+8>>2]=t[m+8>>2];t[u+12>>2]=t[m+12>>2];t[u+16>>2]=t[m+16>>2];t[u+20>>2]=t[m+20>>2];t[u+24>>2]=t[m+24>>2];t[u+28>>2]=t[m+28>>2];GA(b,e,L,o,A,u);t[m>>2]=t[b>>2];t[m+4>>2]=t[b+4>>2];t[m+8>>2]=t[b+8>>2];t[m+12>>2]=t[b+12>>2];t[m+16>>2]=t[b+16>>2];t[m+20>>2]=t[b+20>>2];t[m+24>>2]=t[b+24>>2];t[m+28>>2]=t[b+28>>2];n=n+1|0}Z3(110606,e)|0;f=A+8|0;n=0;while(1){if((n|0)>=(t[A>>2]|0))break;L=(t[f>>2]|0)+(n*72|0)+40|0;t[g>>2]=t[L>>2];t[g+4>>2]=t[L+4>>2];t[g+8>>2]=t[L+8>>2];t[g+12>>2]=t[L+12>>2];t[g+16>>2]=t[L+16>>2];t[g+20>>2]=t[L+20>>2];t[g+24>>2]=t[L+24>>2];t[g+28>>2]=t[L+28>>2];Q=+c[g>>3];I=+c[k>>3];Z=+c[d>>3];G=+c[v>>3];c[y>>3]=Q;c[y+8>>3]=I;c[y+16>>3]=Z;c[y+24>>3]=G;a3(e,138321,y)|0;c[m>>3]=+c[(+c[m>>3]>3];c[p>>3]=+c[(+c[p>>3]>3];c[w>>3]=+c[(+c[w>>3]>Z?m:g)+16>>3];c[E>>3]=+c[(+c[E>>3]>G?m:g)+24>>3];n=n+1|0}p=~~(+c[p>>3]+10.0);y=~~(+c[w>>3]+10.0);L=~~(+c[E>>3]+10.0);t[B>>2]=~~(+c[m>>3]+10.0);t[B+4>>2]=p;t[B+8>>2]=y;t[B+12>>2]=L;a3(e,110631,B)|0;h=C;return}function pA(e,A,r,a,n,f){e=e|0;A=A|0;r=r|0;a=a|0;n=n|0;f=f|0;var l=0.0,s=0.0,o=0,u=0,b=0,w=0,k=0,d=0,v=0,g=0,m=0,p=0,E=0,B=0,y=0,C=0,I=0,Z=0,G=0,L=0,Q=0,D=0,z=0,W=0,Y=0,F=0,M=0,V=0,N=0,R=0,x=0,J=0,H=0;R=h;h=h+112|0;D=R+88|0;Q=R+72|0;N=R+32|0;Y=R+16|0;F=R;M=R+56|0;V=R+40|0;z=t[15712]|0;E=(f|0)==0;B=F+8|0;y=Y+8|0;p=0;o=0;u=0;b=0;w=0;f=0;while(1){if((p|0)>=(r|0))break;C=t[n+(p<<3)+4>>2]|0;I=C+48|0;m=(t[(t[((t[C>>2]&3|0)==3?C:I)+40>>2]|0)+16>>2]|0)+16|0;Z=C+16|0;G=(t[Z>>2]|0)+16|0;t[Q>>2]=t[m>>2];t[Q+4>>2]=t[m+4>>2];t[Q+8>>2]=t[m+8>>2];t[Q+12>>2]=t[m+12>>2];t[D>>2]=t[G>>2];t[D+4>>2]=t[G+4>>2];t[D+8>>2]=t[G+8>>2];t[D+12>>2]=t[G+12>>2];EA(M,Q,D);t[Y>>2]=t[M>>2];t[Y+4>>2]=t[M+4>>2];t[Y+8>>2]=t[M+8>>2];t[Y+12>>2]=t[M+12>>2];G=C+-48|0;m=(t[(t[((t[C>>2]&3|0)==2?C:G)+40>>2]|0)+16>>2]|0)+16|0;g=(t[Z>>2]|0)+56|0;t[Q>>2]=t[m>>2];t[Q+4>>2]=t[m+4>>2];t[Q+8>>2]=t[m+8>>2];t[Q+12>>2]=t[m+12>>2];t[D>>2]=t[g>>2];t[D+4>>2]=t[g+4>>2];t[D+8>>2]=t[g+8>>2];t[D+12>>2]=t[g+12>>2];EA(V,Q,D);t[F>>2]=t[V>>2];t[F+4>>2]=t[V+4>>2];t[F+8>>2]=t[V+8>>2];t[F+12>>2]=t[V+12>>2];g=t[a+(p<<3)>>2]|0;m=t[a+(p<<3)+4>>2]|0;v=g*3|0;L=v+1|0;if((v|0)>=(u|0)){if(o|0)G2(f);w=$F(L<<4)|0;o=w;u=L;b=w;f=w}if(!(i[m>>0]|0)){s=+(yA(m,A)|0);l=+c[Y>>3]}else{l=+BA(m,A);s=+c[y>>3]}d=o+16|0;c[o+16>>3]=l;c[o+24>>3]=s;t[w>>2]=t[d>>2];t[w+4>>2]=t[d+4>>2];t[w+8>>2]=t[d+8>>2];t[w+12>>2]=t[d+12>>2];d=1;k=m;v=2;while(1){if((d|0)>=(g|0))break;k=m+(d*56|0)|0;if(!(i[k>>0]|0))s=+(yA(k,A)|0);else l=+BA(k,A);x=o+(v+2<<4)|0;H=o+(v+1<<4)|0;J=o+(v<<4)|0;c[J>>3]=l;c[o+(v<<4)+8>>3]=s;t[H>>2]=t[J>>2];t[H+4>>2]=t[J+4>>2];t[H+8>>2]=t[J+8>>2];t[H+12>>2]=t[J+12>>2];t[x>>2]=t[J>>2];t[x+4>>2]=t[J+4>>2];t[x+8>>2]=t[J+8>>2];t[x+12>>2]=t[J+12>>2];d=d+1|0;v=v+3|0}if(!(i[k>>0]|0)){s=+(yA(k,A)|0);l=+c[F>>3]}else{l=+BA(k,A);s=+c[B>>3]}H=o+(v<<4)|0;x=v+1|0;J=o+(x<<4)|0;c[J>>3]=l;c[o+(x<<4)+8>>3]=s;t[H>>2]=t[J>>2];t[H+4>>2]=t[J+4>>2];t[H+8>>2]=t[J+8>>2];t[H+12>>2]=t[J+12>>2];if(0>1){J=Mk(t[((t[C>>2]&3|0)==3?C:I)+40>>2]|0)|0;H=Mk(t[((t[C>>2]&3|0)==2?C:G)+40>>2]|0)|0;t[N>>2]=J;t[N+4>>2]=H;a3(z,110142,N)|0}mR(C,t[((t[C>>2]&3|0)==2?C:G)+40>>2]|0,o,L,25680);if((!E?(W=t[(t[Z>>2]|0)+96>>2]|0,W|0):0)?(i[W+81>>0]|0)==0:0){t[Q>>2]=t[Y>>2];t[Q+4>>2]=t[Y+4>>2];t[Q+8>>2]=t[Y+8>>2];t[Q+12>>2]=t[Y+12>>2];t[D>>2]=t[F>>2];t[D+4>>2]=t[F+4>>2];t[D+8>>2]=t[F+8>>2];t[D+12>>2]=t[F+12>>2];JR(e,C,Q,D)}p=p+1|0}G2(b);h=R;return}function EA(e,A,r){e=e|0;A=A|0;r=r|0;var i=0;c[A>>3]=+c[A>>3]+ +c[r>>3];i=A+8|0;c[i>>3]=+c[i>>3]+ +c[r+8>>3];t[e>>2]=t[A>>2];t[e+4>>2]=t[A+4>>2];t[e+8>>2]=t[A+8>>2];t[e+12>>2]=t[A+12>>2];return}function BA(e,A){e=e|0;A=A|0;var r=0.0,i=0;A=ZA(t[A+24>>2]|0,e)|0;i=t[A+36>>2]|0;r=+c[i+40>>3];return+((+c[i+56>>3]-r)*(+(t[e+44>>2]|0)/+((t[A+24>>2]|0)+1|0))+r)}function yA(e,A){e=e|0;A=A|0;var r=0.0,i=0;i=ZA(t[A+20>>2]|0,e)|0;A=t[i+36>>2]|0;r=+c[A+48>>3];return~~((1.0-+(t[e+44>>2]|0)/+((t[i+24>>2]|0)+1|0))*(+c[A+64>>3]-r)+r)|0}function CA(e){e=e|0;return 0}function IA(e){e=e|0;return 0}function ZA(e,A){e=e|0;A=A|0;e=L5[t[e>>2]&63](e,A+8|0,512)|0;if(!e)ge(110155,110161,423,110169);e=t[e+16>>2]|0;e=L5[t[e>>2]&63](e,A+16|0,512)|0;if(!e)ge(110180,110161,425,110169);else return e|0;return 0}function GA(e,A,r,a,n,f){e=e|0;A=A|0;r=r|0;a=a|0;n=n|0;f=f|0;var l=0,s=0.0,o=0,u=0,b=0,w=0.0,k=0.0,d=0.0,v=0.0,g=0,m=0,p=0,E=0,B=0,y=0,C=0,I=0,Z=0.0,G=0.0,L=0.0;C=h;h=h+32|0;y=C+16|0;m=C+8|0;o=C;l=t[(t[(t[((t[r>>2]&3|0)==3?r:r+48|0)+40>>2]|0)+16>>2]|0)+112>>2]|0;g=t[a+4>>2]|0;if(!(i[g>>0]|0)){s=+c[l+56>>3];v=+c[l+40>>3];l=yA(g,n)|0;s=(v+s)*.5}else{s=+c[l+64>>3];v=+c[l+48>>3];l=~~((v+s)*.5);s=+BA(g,n)}I=~~s;w=+c[f>>3];d=+(I|0);w=w>3]=w;p=f+8|0;k=+c[p>>3];v=+(l|0);k=k>3]=k;E=f+16|0;s=+c[E>>3];d=s>d?s:d;c[E>>3]=d;B=f+24|0;s=+c[B>>3];v=s>v?s:v;c[B>>3]=v;t[o>>2]=I;t[o+4>>2]=l;a3(A,110682,o)|0;b=t[a>>2]|0;o=g;u=1;a=I;while(1){if((u|0)>=(b|0))break;o=g+(u*56|0)|0;if(!(i[o>>0]|0))l=yA(o,n)|0;else a=~~+BA(o,n);Z=+(a|0);L=w>3]=L;s=+(l|0);G=k>3]=G;Z=d>Z?d:Z;c[E>>3]=Z;s=v>s?v:s;c[B>>3]=s;t[m>>2]=a;t[m+4>>2]=l;a3(A,110704,m)|0;u=u+1|0;w=L;k=G;d=Z;v=s}l=t[(t[(t[((t[r>>2]&3|0)==2?r:r+-48|0)+40>>2]|0)+16>>2]|0)+112>>2]|0;if(!(i[o>>0]|0)){s=+c[l+56>>3];L=+c[l+40>>3];l=yA(o,n)|0;s=(L+s)*.5}else{s=+c[l+64>>3];L=+c[l+48>>3];l=~~((L+s)*.5);s=+BA(o,n)}I=~~s;G=+(I|0);c[f>>3]=w>3]=k>3]=d>G?d:G;c[B>>3]=v>L?v:L;t[y>>2]=I;t[y+4>>2]=l;a3(A,110718,y)|0;t[e>>2]=t[f>>2];t[e+4>>2]=t[f+4>>2];t[e+8>>2]=t[f+8>>2];t[e+12>>2]=t[f+12>>2];t[e+16>>2]=t[f+16>>2];t[e+20>>2]=t[f+20>>2];t[e+24>>2]=t[f+24>>2];t[e+28>>2]=t[f+28>>2];h=C;return}function LA(e){e=e|0;var A=0;e=Sh(e)|0;while(1){if(!e)break;A=Sh(t[e+16>>2]|0)|0;while(1){if(!A)break;t[A+32>>2]=nr(t[A+24>>2]|0)|0;A=t[A>>2]|0}e=t[e>>2]|0}return}function QA(e){e=e|0;var A=0;e=Sh(e)|0;while(1){if(!e)break;A=Sh(t[e+16>>2]|0)|0;while(1){if(!A)break;if(t[A+24>>2]|0)TA(A);A=t[A>>2]|0}e=t[e>>2]|0}return}function DA(e,A){e=e|0;A=A|0;var r=0;r=Sh(e)|0;while(1){if(!r)break;e=Sh(t[r+16>>2]|0)|0;while(1){if(!e)break;MA(e,A);e=t[e>>2]|0}r=t[r>>2]|0}return}function zA(e){e=e|0;var A=0,r=0,i=0,a=0,n=0,f=0;i=Sh(e)|0;while(1){if(!i)break;f=i+8|0;a=Sh(t[i+16>>2]|0)|0;while(1){if(!a)break;e=a+24|0;e:do{if(t[e>>2]|0){if(t[47323]&8|0)WA(a,~~+c[f>>3]);n=a+32|0;or(t[n>>2]|0);A=t[e>>2]|0;r=a+28|0;e=0;while(1){if((e|0)>=(A|0))break e;t[(t[(t[r>>2]|0)+(e<<2)>>2]|0)+44>>2]=(t[(t[(t[n>>2]|0)+4>>2]|0)+(e*12|0)+4>>2]|0)+1;e=e+1|0}}}while(0);a=t[a>>2]|0}i=t[i>>2]|0}return}function WA(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0,f=0,l=0,s=0.0,o=0.0;l=h;h=h+32|0;r=l;n=e+24|0;e:do{if((t[n>>2]|0)>=2){f=t[15712]|0;o=+c[e+8>>3];s=+c[e+16>>3];t[r>>2]=A;c[r+8>>3]=o;c[r+16>>3]=s;a3(f,110739,r)|0;a=e+32|0;e=e+28|0;A=0;while(1){if((A|0)>=(t[n>>2]|0))break e;i=t[(t[(t[a>>2]|0)+4>>2]|0)+(A*12|0)+8>>2]|0;A:do{if(Oh(i)|0){YA(f,t[(t[e>>2]|0)+(A<<2)>>2]|0);Z3(110759,f)|0;r=L5[t[i>>2]&63](i,0,128)|0;while(1){if(!r)break A;Z3(110764,f)|0;YA(f,t[(t[e>>2]|0)+(t[r>>2]<<2)>>2]|0);Z3(153599,f)|0;r=L5[t[i>>2]&63](i,r,8)|0}}}while(0);A=A+1|0}}}while(0);h=l;return}function YA(e,A){e=e|0;A=A|0;var r=0,a=0,n=0,f=0,l=0.0,s=0.0,o=0.0;n=h;h=h+80|0;a=n+40|0;r=n;if(!(i[A>>0]|0)){o=+c[A+16>>3];l=+c[A+8>>3];s=+c[A+24>>3];f=FA(t[A+32>>2]|0)|0;r=FA(t[A+36>>2]|0)|0;c[a>>3]=o;c[a+8>>3]=l;c[a+16>>3]=s;c[a+24>>3]=l;t[a+32>>2]=f;t[a+36>>2]=r;a3(e,110770,a)|0}else{s=+c[A+8>>3];l=+c[A+16>>3];o=+c[A+24>>3];a=FA(t[A+32>>2]|0)|0;f=FA(t[A+36>>2]|0)|0;c[r>>3]=s;c[r+8>>3]=l;c[r+16>>3]=s;c[r+24>>3]=o;t[r+32>>2]=a;t[r+36>>2]=f;a3(e,110770,r)|0}h=n;return}function FA(e){e=e|0;switch(e|0){case 0:{e=110821;break}case 1:{e=110816;break}case 2:{e=110809;break}case 3:{e=110802;break}case 4:{e=110794;break}default:e=0}return e|0}function MA(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0,f=0,l=0,s=0,o=0,u=0,b=0,w=0,k=0,d=0,v=0,g=0,m=0,p=0,E=0;E=h;h=h+16|0;d=E+8|0;g=E;m=t[e+32>>2]|0;p=t[e+28>>2]|0;w=e+24|0;o=d+4|0;u=g+4|0;l=0;e=t[w>>2]|0;e:while(1){k=l+1|0;if((k|0)>=(e|0))break;b=p+(l<<2)|0;s=k;while(1){if((s|0)>=(e|0)){l=k;continue e}A:do{if(((cr(m,l,s)|0)==0?(cr(m,s,l)|0)==0:0)?(v=p+(s<<2)|0,VA(t[b>>2]|0,t[v>>2]|0)|0):0){a=t[b>>2]|0;e=t[a+48>>2]|0;f=t[v>>2]|0;r=t[f+48>>2]|0;i=(r|0)==0;if(e)if(i)e=1;else e=+c[e+8>>3]!=+c[r+8>>3];else e=i^1;n=e&1;NA(d,a,f,0,n);e=t[d>>2]|0;f=t[o>>2]|0;a=n^1;NA(g,t[b>>2]|0,t[v>>2]|0,1,a);r=t[g>>2]|0;i=t[u>>2]|0;switch(f|0){case-1:{RA(t[v>>2]|0,t[b>>2]|0,n,0,e,A);RA(t[v>>2]|0,t[b>>2]|0,a,1,r,A);if((i|0)!=1)break A;xA(t[b>>2]|0,t[v>>2]|0,a,A);break A}case 0:switch(i|0){case-1:{RA(t[v>>2]|0,t[b>>2]|0,n,0,e,A);RA(t[v>>2]|0,t[b>>2]|0,a,1,r,A);break A}case 0:{RA(t[b>>2]|0,t[v>>2]|0,0,n,e,A);RA(t[b>>2]|0,t[v>>2]|0,1,a,r,A);break A}case 1:{RA(t[b>>2]|0,t[v>>2]|0,0,n,e,A);RA(t[b>>2]|0,t[v>>2]|0,1,a,r,A);break A}default:break A}case 1:{RA(t[b>>2]|0,t[v>>2]|0,0,n,e,A);RA(t[b>>2]|0,t[v>>2]|0,1,a,r,A);if((i|0)!=-1)break A;xA(t[b>>2]|0,t[v>>2]|0,a,A);break A}default:break A}}}while(0);s=s+1|0;e=t[w>>2]|0}}h=E;return}function VA(e,A){e=e|0;A=A|0;if(!(+c[e+8>>3]==+c[A+8>>3]))ge(110892,110161,843,110923);if((+c[e+16>>3]==+c[A+16>>3]?+c[e+24>>3]==+c[A+24>>3]:0)?(t[e+32>>2]|0)==(t[A+32>>2]|0):0)e=(t[e+36>>2]|0)==(t[A+36>>2]|0)&1;else e=0;return e|0}function NA(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;var n=0,f=0,l=0;n=0;while(1){A=JA(A,i)|0;if(!A){f=0;break}r=JA(r,a)|0;if(!r){l=6;break}if(!(VA(A,r)|0)){l=7;break}n=n+1|0}if((l|0)==6)ge(138394,110161,871,110841);else if((l|0)==7)f=PA(A,HA(A,r)|0,n+1|0,1-i|0)|0;t[e>>2]=n;t[e+4>>2]=f;return}function RA(e,A,r,a,n,f){e=e|0;A=A|0;r=r|0;a=a|0;n=n|0;f=f|0;var l=0,s=0,o=0,u=0,b=0,h=0,w=0;h=f+20|0;b=f+24|0;f=ZA(t[((i[e>>0]|0)==0?h:b)>>2]|0,e)|0;lr(t[f+32>>2]|0,t[e+40>>2]|0,t[A+40>>2]|0);s=1;while(1){if((s|0)>(n|0))break;o=JA(e,r)|0;u=JA(A,a)|0;do{if(!(i[e>>0]|0)){l=ZA(t[b>>2]|0,o)|0;if(+c[o+8>>3]==+c[e+16>>3]){w=(t[e+32>>2]|0)==1;f=(cr(t[f+32>>2]|0,t[e+40>>2]|0,t[A+40>>2]|0)|0)!=0;e=t[l+32>>2]|0;if(w)if(f){lr(e,t[u+40>>2]|0,t[o+40>>2]|0);f=l;break}else{lr(e,t[o+40>>2]|0,t[u+40>>2]|0);f=l;break}else if(f){lr(e,t[o+40>>2]|0,t[u+40>>2]|0);f=l;break}else{lr(e,t[u+40>>2]|0,t[o+40>>2]|0);f=l;break}}else{w=(t[e+36>>2]|0)==1;f=(cr(t[f+32>>2]|0,t[e+40>>2]|0,t[A+40>>2]|0)|0)!=0;e=t[l+32>>2]|0;if(w)if(f){lr(e,t[o+40>>2]|0,t[u+40>>2]|0);f=l;break}else{lr(e,t[u+40>>2]|0,t[o+40>>2]|0);f=l;break}else if(f){lr(e,t[u+40>>2]|0,t[o+40>>2]|0);f=l;break}else{lr(e,t[o+40>>2]|0,t[u+40>>2]|0);f=l;break}}}else{l=ZA(t[h>>2]|0,o)|0;if(+c[o+8>>3]==+c[e+16>>3]){w=(t[e+32>>2]|0)==2;f=(cr(t[f+32>>2]|0,t[e+40>>2]|0,t[A+40>>2]|0)|0)!=0;e=t[l+32>>2]|0;if(w)if(f){lr(e,t[o+40>>2]|0,t[u+40>>2]|0);f=l;break}else{lr(e,t[u+40>>2]|0,t[o+40>>2]|0);f=l;break}else if(f){lr(e,t[u+40>>2]|0,t[o+40>>2]|0);f=l;break}else{lr(e,t[o+40>>2]|0,t[u+40>>2]|0);f=l;break}}else{w=(t[e+36>>2]|0)==2;f=(cr(t[f+32>>2]|0,t[e+40>>2]|0,t[A+40>>2]|0)|0)!=0;e=t[l+32>>2]|0;if(w)if(f){lr(e,t[u+40>>2]|0,t[o+40>>2]|0);f=l;break}else{lr(e,t[o+40>>2]|0,t[u+40>>2]|0);f=l;break}else if(f){lr(e,t[o+40>>2]|0,t[u+40>>2]|0);f=l;break}else{lr(e,t[u+40>>2]|0,t[o+40>>2]|0);f=l;break}}}}while(0);e=o;A=u;s=s+1|0}return}function xA(e,A,r,a){e=e|0;A=A|0;r=r|0;a=a|0;var n=0;while(1){if(!(VA(e,A)|0))break;n=JA(e,1)|0;A=JA(A,r)|0;e=n}n=t[(ZA(t[((i[e>>0]|0)==0?a+20|0:a+24|0)>>2]|0,e)|0)+32>>2]|0;sr(n,t[e+40>>2]|0,t[A+40>>2]|0);return}function JA(e,A){e=e|0;A=A|0;if(!e)ge(110828,110161,798,110832);else return t[((A|0)==0?e+48|0:e+52|0)>>2]|0;return 0}function HA(e,A){e=e|0;A=A|0;var r=0,a=0,t=0;t=h;h=h+16|0;a=t;r=i[e>>0]|0;if(r<<24>>24==(i[A>>0]|0)?!(+c[e+8>>3]!=+c[A+8>>3]):0){if(!(r<<24>>24))e=XA(e,A,3,1)|0;else e=XA(e,A,4,2)|0;h=t;return e|0}nw(1,110854,a)|0;aA(189296,1);return 0}function PA(e,A,r,a){e=e|0;A=A|0;r=r|0;a=a|0;var n=0,f=0,l=0;l=1;while(1){if((l|0)>(r|0))break;f=JA(e,a)|0;n=+c[f+8>>3]==+c[e+16>>3];do{if(!(i[e>>0]|0))if(n){n=(t[e+32>>2]|0)==1;break}else{n=(t[e+36>>2]|0)==3;break}else if(n){n=(t[e+32>>2]|0)==4;break}else{n=(t[e+36>>2]|0)==2;break}}while(0);e=f;l=l+1|0;A=n?0-A|0:A}return A|0}function XA(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0,n=0.0,f=0.0,l=0.0,s=0.0,o=0,u=0,b=0,h=0;l=+c[e+24>>3];s=+c[A+16>>3];do{if(!(l>3],f=+c[A+24>>3],!(n>f)):0){if(s>2]|0;return((r|0)==(t[A+32>>2]|0)?0:(r|0)==(i|0)?1:-1)|0}else{r=t[e+32>>2]|0;A=(r|0)==(t[A+36>>2]|0)?0:(r|0)==(i|0)?1:-1;break}if(!(l==f))if(l>2]|0)==(r|0);r=UA(t[A+32>>2]|0,t[e+32>>2]|0,r,i)|0;return(h?r:0-r|0)|0}else{h=(t[A+36>>2]|0)==(i|0);A=UA(t[e+32>>2]|0,t[A+32>>2]|0,r,i)|0;A=h?A:0-A|0;break}h=t[e+32>>2]|0;b=t[A+32>>2]|0;if((h|0)==(b|0)){A=t[A+36>>2]|0;if((t[e+36>>2]|0)==(A|0)){A=0;break}}else A=t[A+36>>2]|0;u=(b|0)==(r|0);if((b|0)==(A|0)){if(u){A=1;break}if((b|0)==(i|0)){A=-1;break}if((h|0)!=(r|0)?(t[e+36>>2]|0)!=(r|0):0){A=1;break}if((h|0)!=(i|0)?(t[e+36>>2]|0)!=(i|0):0){A=-1;break}A=0;break}a=(A|0)==(i|0);if(u&a){A=(t[e+36>>2]|0)==(i|0);if((h|0)==(r|0)){if(!A){A=-1;break}}else if(A){A=1;break}A=0;break}o=(A|0)==(r|0);if((b|0)==(i|0)&o){A=(h|0)==(i|0);if((t[e+36>>2]|0)==(r|0)){if(!A){A=-1;break}}else if(A){A=1;break}A=0;break}if(!b){if(o){A=jA(h,t[e+36>>2]|0,r)|0;break}if(a){A=0-(jA(h,t[e+36>>2]|0,i)|0)|0;break}}a=t[e+36>>2]|0;if(u&(A|0)==0){A=jA(a,h,r)|0;break}else{A=0-(jA(a,h,i)|0)|0;break}}else A=0}while(0);return A|0}function SA(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0,n=0,f=0.0,l=0.0;f=+c[e+24>>3];l=+c[A+24>>3];do{if(f>2]|0;if((e|0)==(r|0)?(t[A+32>>2]|0)==(i|0):0){e=-1;break}if((e|0)==(i|0)?(t[A+32>>2]|0)==(r|0):0){e=1;break}e=0}else{a=t[A+32>>2]|0;n=(a|0)==(i|0);if(f==l)if(n){e=UA(t[e+36>>2]|0,t[A+36>>2]|0,r,i)|0;break}else{e=0-(UA(t[A+36>>2]|0,t[e+36>>2]|0,r,i)|0)|0;break}if(n?(t[A+36>>2]|0)==(i|0):0){e=-1;break}if((a|0)==(r|0)?(t[A+36>>2]|0)==(r|0):0){e=1;break}e=0}}while(0);return e|0}function jA(e,A,r){e=e|0;A=A|0;r=r|0;return((e|0)==(r|0)?((A|0)==(r|0))<<31>>31:1)|0}function UA(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;if((e|0)==(i|0)){A=(e|0)==0;if(A)return 0;else A=A&1}return((e|0)!=0|(A|0)!=(r|0))<<31>>31|0}function TA(e){e=e|0;var A=0,r=0,i=0,a=0,n=0,f=0;n=t[e+28>>2]|0;f=t[e+24>>2]|0;r=t[e+32>>2]|0;e=0;e:while(1){i=e+1|0;if((i|0)>=(f|0))break;a=n+(e<<2)|0;A=i;while(1){if((A|0)==(f|0)){e=i;continue e}switch(HA(t[a>>2]|0,t[n+(A<<2)>>2]|0)|0){case 1:{lr(r,e,A);break}case-1:{lr(r,A,e);break}default:{}}A=A+1|0}}return}function OA(e,A){e=e|0;A=A|0;var r=0,i=0,a=0;a=e+24|0;i=t[a>>2]|0;r=i+1|0;t[a>>2]=r;t[A+40>>2]=i;i=e+28|0;e=t[i>>2]|0;if(!e)e=$F(r<<2)|0;else e=AM(e,r<<2)|0;t[i>>2]=e;t[e+((t[a>>2]|0)+-1<<2)>>2]=A;return}function _A(e,A,r){e=e|0;A=A|0;r=+r;var i=0,a=0,n=0;n=h;h=h+16|0;a=n;c[a>>3]=r;i=L5[t[e>>2]&63](e,a,512)|0;if(!i){i=KF(24)|0;c[i+8>>3]=+c[a>>3];t[i+16>>2]=Uh(25728,t[4581]|0)|0;L5[t[e>>2]&63](e,i,1)|0}a=t[i+16>>2]|0;L5[t[a>>2]&63](a,A,1)|0;h=n;return}function qA(e,A,r){e=e|0;A=A|0;r=r|0;fr(t[A+32>>2]|0);G2(t[A+28>>2]|0);G2(A);return}function KA(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0.0,t=0.0;a=+c[A>>3];t=+c[r>>3];if(!(a>t))if(a>3]>=+c[r+8>>3])<<31>>31;else e=0;else e=!(+c[A+8>>3]<=+c[r+8>>3])&1;return e|0}function $A(e,A,r){e=e|0;A=A|0;r=r|0;Ph(t[A+16>>2]|0)|0;G2(A);return}function er(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0.0,t=0.0;t=+c[A>>3];a=+c[r>>3];return(t>a?1:(t>31)|0}function Ar(e,A,r){e=e|0;A=A|0;r=r|0;var a=0.0,n=0.0,f=0,l=0;f=(i[A+36>>0]|0)!=0;l=r+40|0;do{if((t[A+24>>2]|0)==(r|0)){a=+c[l>>3];if(f){n=(+c[r+64>>3]+ +c[r+48>>3])*.5;break}else{n=+c[r+48>>3];a=(+c[r+56>>3]+a)*.5;break}}else if(f){n=(+c[r+64>>3]+ +c[r+48>>3])*.5;a=+c[r+56>>3];break}else{n=+c[r+64>>3];a=(+c[r+56>>3]+ +c[l>>3])*.5;break}}while(0);c[e>>3]=a;c[e+8>>3]=n;return}function rr(e,A){e=e|0;A=A|0;var r=0;r=t[e+20>>2]|0;if((r|0)!=(t[A+20>>2]|0)?(r|0)!=(t[A+24>>2]|0):0)r=t[e+24>>2]|0;return r|0}function ir(e,A){e=e|0;A=A|0;var r=0.0;r=(+c[A+64>>3]+ +c[A+48>>3])*.5;c[e>>3]=(+c[A+56>>3]+ +c[A+40>>3])*.5;c[e+8>>3]=r;return}function ar(e,A,r,a,n,f,l){e=e|0;A=A|0;r=+r;a=+a;n=+n;f=f|0;l=l|0;var s=0,o=0;i[e>>0]=A;c[e+8>>3]=r;if(a>3]=a;c[e+16>>3]=r;t[e+36>>2]=A;t[e+32>>2]=o;i[e+1>>0]=s;return}function tr(e,A,r){e=e|0;A=A|0;r=r|0;var i=0;i=t[A+36>>2]|0;do{if((t[i+4>>2]|0)!=(r|0)){if((t[i+12>>2]|0)==(r|0)){i=~~((+c[A+56>>3]+ +c[A+40>>3])*.5);r=~~+c[A+48>>3];break}if((t[i+8>>2]|0)==(r|0)){i=~~+c[A+40>>3];r=~~((+c[A+64>>3]+ +c[A+48>>3])*.5);break}if((t[i>>2]|0)==(r|0)){i=~~+c[A+56>>3];r=~~((+c[A+64>>3]+ +c[A+48>>3])*.5)}else{i=0;r=0}}else{i=~~((+c[A+56>>3]+ +c[A+40>>3])*.5);r=~~+c[A+64>>3]}}while(0);t[e>>2]=i;t[e+4>>2]=r;return}function nr(e){e=e|0;var A=0,r=0,i=0,a=0,n=0;r=KF(8)|0;t[r>>2]=e;i=r+4|0;t[i>>2]=KF(e*12|0)|0;A=0;while(1){if((A|0)>=(e|0))break;n=Wt()|0;a=t[i>>2]|0;t[a+(A*12|0)+8>>2]=n;t[a+(A*12|0)>>2]=0;A=A+1|0}return r|0}function fr(e){e=e|0;var A=0,r=0,i=0;r=e+4|0;A=0;while(1){i=t[r>>2]|0;if((A|0)>=(t[e>>2]|0))break;Ph(t[i+(A*12|0)+8>>2]|0)|0;A=A+1|0}G2(i);G2(e);return}function lr(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0;i=h;h=h+16|0;a=i;t[a>>2]=r;r=t[(t[e+4>>2]|0)+(A*12|0)+8>>2]|0;L5[t[r>>2]&63](r,a,1)|0;h=i;return}function sr(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0,n=0;i=h;h=h+16|0;a=i;t[a>>2]=r;e=e+4|0;n=t[(t[e>>2]|0)+(A*12|0)+8>>2]|0;L5[t[n>>2]&63](n,a,2)|0;t[a>>2]=A;r=t[(t[e>>2]|0)+(r*12|0)+8>>2]|0;L5[t[r>>2]&63](r,a,2)|0;h=i;return}function cr(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0;i=h;h=h+16|0;a=i;t[a>>2]=r;r=t[(t[e+4>>2]|0)+(A*12|0)+8>>2]|0;r=(L5[t[r>>2]&63](r,a,512)|0)!=0&1;h=i;return r|0}function or(e){e=e|0;var A=0,r=0,i=0,a=0;A=t[e>>2]|0;switch(A|0){case 0:break;case 1:{t[(t[e+4>>2]|0)+4>>2]=0;break}default:{i=ur(A)|0;a=e+4|0;r=0;A=0;while(1){if((r|0)>=(t[e>>2]|0)){A=0;break}if(!(t[(t[a>>2]|0)+(r*12|0)>>2]|0))A=br(e,r,A,i)|0;r=r+1|0}while(1){r=hr(i)|0;if((r|0)<=-1)break;t[(t[a>>2]|0)+(r*12|0)+4>>2]=A;A=A+1|0}wr(i)}}return}function ur(e){e=e|0;var A=0;A=KF(8)|0;t[A+4>>2]=KF(e<<2)|0;t[A>>2]=-1;return A|0}function br(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0,n=0,f=0,l=0,s=0;l=e+4|0;n=t[l>>2]|0;s=n+(A*12|0)|0;t[s>>2]=1;n=t[n+(A*12|0)+8>>2]|0;f=n+4|0;r=r+1|0;n=Sh(n)|0;while(1){if(!n)break;a=t[(t[f>>2]|0)+8>>2]|0;if((a|0)<0)a=t[n+8>>2]|0;else a=n+(0-a)|0;a=t[a>>2]|0;if(!(t[(t[l>>2]|0)+(a*12|0)>>2]|0))r=br(e,a,r,i)|0;n=t[n>>2]|0}t[s>>2]=2;kr(i,A);return r+1|0}function hr(e){e=e|0;var A=0,r=0;A=t[e>>2]|0;if((A|0)==-1)e=-1;else{r=t[(t[e+4>>2]|0)+(A<<2)>>2]|0;t[e>>2]=A+-1;e=r}return e|0}function wr(e){e=e|0;G2(t[e+4>>2]|0);G2(e);return}function kr(e,A){e=e|0;A=A|0;var r=0;r=(t[e>>2]|0)+1|0;t[e>>2]=r;t[(t[e+4>>2]|0)+(r<<2)>>2]=A;return}function dr(e){e=e|0;var A=0,r=0,i=0;r=t[e>>2]|0;t[e+8>>2]=r;t[e+12>>2]=t[e+4>>2];A=e+16|0;e=0;while(1){if((e|0)>=(r|0))break;i=t[A>>2]|0;a[i+(e*40|0)+18>>1]=a[i+(e*40|0)+16>>1]|0;e=e+1|0}return}function vr(e){e=e|0;var A=0,r=0,i=0;A=t[e+8>>2]|0;t[e>>2]=A;t[e+4>>2]=t[e+12>>2];r=e+16|0;e=0;while(1){if((e|0)>=(A|0))break;i=t[r>>2]|0;a[i+(e*40|0)+16>>1]=a[i+(e*40|0)+18>>1]|0;e=e+1|0}A=A+2|0;while(1){if((e|0)>=(A|0))break;a[(t[r>>2]|0)+(e*40|0)+16>>1]=0;e=e+1|0}return}function gr(e,A){e=e|0;A=A|0;var r=0,i=0,a=0;r=KF(((t[e>>2]|0)*6|0)+(A<<1)<<2)|0;t[e+20>>2]=KF((((t[e>>2]|0)*3|0)+A|0)*24|0)|0;i=t[e>>2]|0;a=e+16|0;e=0;while(1){if((e|0)>=(i|0))break;t[(t[a>>2]|0)+(e*40|0)+28>>2]=r;r=r+24|0;e=e+1|0}i=i+2|0;while(1){if((e|0)>=(i|0))break;t[(t[a>>2]|0)+(e*40|0)+28>>2]=r;r=r+(A<<2)|0;e=e+1|0}return}function mr(e){e=e|0;var A=0;A=KF(24)|0;t[A>>2]=0;t[A+16>>2]=KF(e*40|0)|0;return A|0}function pr(e){e=e|0;var A=0,r=0;r=t[e+16>>2]|0;A=t[e>>2]|0;t[r+(A*40|0)+32>>2]=A;t[e>>2]=A+1;return r+(A*40|0)|0}function Er(e,A,r,i){e=e|0;A=A|0;r=r|0;i=+i;var a=0,n=0;n=e+4|0;a=t[n>>2]|0;t[n>>2]=a+1;n=t[e+20>>2]|0;e=n+(a*24|0)|0;t[n+(a*24|0)+12>>2]=t[A+32>>2];t[n+(a*24|0)+16>>2]=t[r+32>>2];c[e>>3]=i;t[n+(a*24|0)+8>>2]=0;Br(A,a);Br(r,a);return e|0}function Br(e,A){e=e|0;A=A|0;var r=0,i=0;r=e+16|0;i=a[r>>1]|0;t[(t[e+28>>2]|0)+(i<<16>>16<<2)>>2]=A;a[r>>1]=i+1<<16>>16;return}function yr(e){e=e|0;var A=0;A=e+16|0;G2(t[(t[A>>2]|0)+28>>2]|0);G2(t[A>>2]|0);G2(t[e+20>>2]|0);G2(e);return}function Cr(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,n=0,f=0,l=0,s=0,o=0,u=0,b=0;n=t[e>>2]|0;f=e+16|0;i=0;while(1){if((i|0)>=(n|0))break;t[(t[f>>2]|0)+(i*40|0)>>2]=-2147483648;i=i+1|0}Jt();e:do{if(!(Xt(A)|0)){t[A+8>>2]=0;t[A>>2]=0;A=e+20|0;A:while(1){n=jt()|0;if(!n){i=0;break e}t[n>>2]=0-(t[n>>2]|0);if((n|0)==(r|0)){i=0;break e}f=n+16|0;l=n+28|0;i=0;while(1){if((i|0)>=(a[f>>1]|0))continue A;s=(t[A>>2]|0)+((t[(t[l>>2]|0)+(i<<2)>>2]|0)*24|0)|0;o=Ir(e,s,n)|0;u=t[o>>2]|0;do{if((u|0)<0){b=~~-(+c[s>>3]+ +(t[n>>2]|0));if((u|0)==-2147483648){t[o>>2]=b;if(Xt(o)|0){i=1;break e}t[o+8>>2]=n;t[o+12>>2]=s;break}else{if((u|0)>=(b|0))break;Ut(o,b);t[o+8>>2]=n;t[o+12>>2]=s;break}}}while(0);i=i+1|0}}}else i=1}while(0);return i|0}function Ir(e,A,r){e=e|0;A=A|0;r=r|0;var i=0;i=t[A+12>>2]|0;if((i|0)==(t[r+32>>2]|0))i=t[A+16>>2]|0;return(t[e+16>>2]|0)+(i*40|0)|0}function Zr(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0,f=0,l=0;n=t[e>>2]|0;Vm(n,3,A)|0;A=t[n+92>>2]|0;do{if(A){r=t[A+16>>2]|0;f=t[r+12>>2]|0;t[e+76>>2]=f;i=t[r+16>>2]|0;t[e+84>>2]=i;a=e+80|0;t[a>>2]=t[r>>2];t[e+88>>2]=t[A+4>>2];r=e+152|0;i=t[r>>2]|t[i>>2];t[r>>2]=i;A=t[n+80>>2]|0;if(!A){t[e+60>>2]=0;A=999;break}else{n=t[A+16>>2]|0;t[e+60>>2]=t[n+12>>2];l=t[n+16>>2]|0;t[e+68>>2]=l;t[e+72>>2]=t[A+4>>2];t[r>>2]=i|t[l>>2];t[e+64>>2]=t[((f|0)==0?a:n)>>2];A=300;break}}else A=999}while(0);return A|0}function Gr(e){e=e|0;var A=0,r=0;A=t[e+60>>2]|0;if(!(cm(e)|0))if((A|0)!=0?(r=t[A>>2]|0,(r|0)!=0):0){F5[r&127](e);e=0}else e=0;else e=1;return e|0}function Lr(e){e=e|0;var A=0,r=0;A=t[e+60>>2]|0;if(A|0?(r=t[A+4>>2]|0,r|0):0)F5[r&127](e);t[(t[e>>2]|0)+24>>2]=0;vm(e);return}function Qr(e,A,r){e=e|0;A=A|0;r=r|0;var i=0.0,a=0.0,n=0.0,f=0.0;i=+c[A+504>>3];a=+c[A+512>>3];f=+c[A+352>>3];if(!(t[A+360>>2]|0)){n=+c[r>>3]+i;r=r+8|0;i=a}else n=-(a+ +c[r+8>>3]);a=+c[A+528>>3]*f*(+c[r>>3]+i);c[e>>3]=+c[A+520>>3]*f*n;c[e+8>>3]=a;return}function Dr(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0.0,n=0.0,f=0.0,l=0.0,s=0.0;a=+c[e+504>>3];n=+c[e+512>>3];f=+c[e+352>>3];l=+c[e+520>>3]*f;f=+c[e+528>>3]*f;e:do{if(!(t[e+360>>2]|0)){e=0;while(1){if((e|0)>=(i|0))break e;c[r+(e<<4)>>3]=(+c[A+(e<<4)>>3]+a)*l;c[r+(e<<4)+8>>3]=(+c[A+(e<<4)+8>>3]+n)*f;e=e+1|0}}else{e=0;while(1){if((e|0)>=(i|0))break e;s=-(l*(+c[A+(e<<4)+8>>3]+n));c[r+(e<<4)+8>>3]=(+c[A+(e<<4)>>3]+a)*f;c[r+(e<<4)>>3]=s;e=e+1|0}}}while(0);return r|0}function zr(e,A){e=e|0;A=A|0;var r=0;A=t[e+60>>2]|0;if(A|0?(r=t[A+8>>2]|0,r|0):0)F5[r&127](e);return}function Wr(e){e=e|0;var A=0,r=0;A=t[e+60>>2]|0;if(A|0?(r=t[A+12>>2]|0,r|0):0)F5[r&127](e);dm(e);return}function Yr(e){e=e|0;var A=0,r=0;A=t[e+60>>2]|0;if(A|0?(r=t[A+24>>2]|0,r|0):0)F5[r&127](e);return}function Fr(e){e=e|0;var A=0,r=0;A=t[e+60>>2]|0;if(A|0?(r=t[A+28>>2]|0,r|0):0)F5[r&127](e);return}function Mr(e){e=e|0;var A=0,r=0;A=t[e+60>>2]|0;if(A|0?(r=t[A+16>>2]|0,r|0):0){A=t[e+160>>2]|0;R5[r&31](e,t[(t[(t[e>>2]|0)+308>>2]|0)+(A<<2)>>2]|0,A,t[e+156>>2]|0)}return}function Vr(e){e=e|0;var A=0,r=0;A=t[e+60>>2]|0;if(A|0?(r=t[A+20>>2]|0,r|0):0)F5[r&127](e);return}function Nr(e,A){e=e|0;A=A|0;var r=0;A=t[e+60>>2]|0;if(A|0?(r=t[A+32>>2]|0,r|0):0)F5[r&127](e);return}function Rr(e,A){e=e|0;A=A|0;var r=0;A=t[e+60>>2]|0;if(A|0?(r=t[A+36>>2]|0,r|0):0)F5[r&127](e);return}function xr(e){e=e|0;var A=0,r=0;A=t[e+60>>2]|0;if(A|0?(r=t[A+40>>2]|0,r|0):0)F5[r&127](e);return}function Jr(e){e=e|0;var A=0,r=0;A=t[e+60>>2]|0;if(A|0?(r=t[A+44>>2]|0,r|0):0)F5[r&127](e);return}function Hr(e){e=e|0;var A=0,r=0;A=t[e+60>>2]|0;if(A|0?(r=t[A+48>>2]|0,r|0):0)F5[r&127](e);return}function Pr(e){e=e|0;var A=0,r=0;A=t[e+60>>2]|0;if(A|0?(r=t[A+52>>2]|0,r|0):0)F5[r&127](e);return}function Xr(e,A){e=e|0;A=A|0;var r=0;A=t[e+60>>2]|0;if(A|0?(r=t[A+56>>2]|0,r|0):0)F5[r&127](e);return}function Sr(e){e=e|0;var A=0,r=0;A=t[e+60>>2]|0;if(A|0?(r=t[A+60>>2]|0,r|0):0)F5[r&127](e);return}function jr(e,A){e=e|0;A=A|0;var r=0;A=t[e+60>>2]|0;if(A|0?(r=t[A+64>>2]|0,r|0):0)F5[r&127](e);return}function Ur(e){e=e|0;var A=0,r=0;A=t[e+60>>2]|0;if(A|0?(r=t[A+68>>2]|0,r|0):0)F5[r&127](e);return}function Tr(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;var n=0,f=0;n=t[e+60>>2]|0;if(n|0?(f=t[n+72>>2]|0,f|0):0)x5[f&15](e,A,r,i,a);return}function Or(e){e=e|0;var A=0,r=0;A=t[e+60>>2]|0;if(A|0?(r=t[A+76>>2]|0,r|0):0)F5[r&127](e);return}function _r(e,A){e=e|0;A=A|0;var r=0,i=0;r=t[e+60>>2]|0;if(r|0?(i=t[r+80>>2]|0,i|0):0)M5[i&63](e,A);return}function qr(e){e=e|0;var A=0,r=0;A=t[e+60>>2]|0;if(A|0?(r=t[A+84>>2]|0,r|0):0)F5[r&127](e);return}function Kr(e,A,r){e=e|0;A=A|0;r=r|0;var a=0,n=0,f=0,l=0,s=0,c=0,o=0;c=h;h=h+48|0;a=c+32|0;f=c;l=c+16|0;s=t[e+60>>2]|0;o=t[r>>2]|0;do{if(o|0?i[o>>0]|0:0){o=t[e+16>>2]|0;if(o|0?(t[o+144>>2]|0)==0:0)break;if(!(t[e+152>>2]&8192)){t[a>>2]=t[A>>2];t[a+4>>2]=t[A+4>>2];t[a+8>>2]=t[A+8>>2];t[a+12>>2]=t[A+12>>2];Qr(l,e,a);t[f>>2]=t[l>>2];t[f+4>>2]=t[l+4>>2];t[f+8>>2]=t[l+8>>2];t[f+12>>2]=t[l+12>>2]}else{t[f>>2]=t[A>>2];t[f+4>>2]=t[A+4>>2];t[f+8>>2]=t[A+8>>2];t[f+12>>2]=t[A+12>>2]}if(s|0?(n=t[s+88>>2]|0,n|0):0){t[a>>2]=t[f>>2];t[a+4>>2]=t[f+4>>2];t[a+8>>2]=t[f+8>>2];t[a+12>>2]=t[f+12>>2];V5[n&127](e,a,r)}}}while(0);h=c;return}function $r(e,A){e=e|0;A=A|0;var r=0,a=0,n=0,f=0,l=0;a=t[e+60>>2]|0;n=(t[e+16>>2]|0)+16|0;l=C1(A,58)|0;f=(l|0)!=0;if(f)i[l>>0]=0;if(a|0?(ei(t[e+68>>2]|0,A,n),r=t[a+92>>2]|0,r|0):0)M5[r&63](e,n);if(f)i[l>>0]=58;return}function ei(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0,n=0,f=0,l=0,s=0,c=0;c=h;h=h+32|0;n=c+16|0;s=c+8|0;l=c;t[r>>2]=A;t[r+32>>2]=5;i=da(A)|0;a=t[e+16>>2]|0;if(!((a|0)!=0?(r8(i,a,t[e+20>>2]|0,4,102)|0)!=0:0))f=3;e:do{if((f|0)==3){switch(va(A,r,t[e+24>>2]|0)|0){case 0:break e;case 1:break;default:{nw(1,111046,n)|0;break e}}e=$F((U2(A)|0)+16|0)|0;t[l>>2]=A;T4(e,111011,l)|0;if(aF(e)|0){t[s>>2]=A;nw(0,111020,s)|0}G2(e)}}while(0);h=c;return}function Ai(e,A){e=e|0;A=A|0;var r=0,a=0,n=0,f=0,l=0;a=t[e+60>>2]|0;n=(t[e+16>>2]|0)+56|0;l=C1(A,58)|0;f=(l|0)!=0;if(f)i[l>>0]=0;if(a|0?(ei(t[e+68>>2]|0,A,n),r=t[a+92>>2]|0,r|0):0)M5[r&63](e,n);if(f)i[l>>0]=58;return}function ri(e,A,r,i){e=e|0;A=A|0;r=r|0;i=+i;var a=0,n=0,f=0,l=0;n=t[e+60>>2]|0;f=e+16|0;l=(t[f>>2]|0)+96|0;if(n|0?(ei(t[e+68>>2]|0,A,l),a=t[n+92>>2]|0,a|0):0)M5[a&63](e,l);l=t[f>>2]|0;t[l+136>>2]=r;s[l+140>>2]=i;return}function ii(e,A){e=e|0;A=A|0;var r=0,a=0,n=0,f=0,l=0,s=0,o=0;o=h;h=h+16|0;s=o;l=t[e+60>>2]|0;e=t[e+16>>2]|0;t[e+160>>2]=A;e:do{if((A|0)!=0&(l|0)!=0){l=e+144|0;f=e+152|0;n=e+148|0;e=A;A:while(1){a=e+4|0;e=t[e>>2]|0;if(!e)break e;r:do{switch(i[e>>0]|0){case 115:{if(!(e1(e,111067)|0)){t[l>>2]=3;e=a;continue A}if(!(e1(e,111088)|0)){r=115;while(1){A=e+1|0;if(!(r<<24>>24))break;e=A;r=i[A>>0]|0}c[f>>3]=+$3(A);e=a;continue A}break}case 100:{if(!(e1(e,137327)|0)){t[l>>2]=1;e=a;continue A}if(!(e1(e,137320)|0)){t[l>>2]=2;e=a;continue A}break}case 105:{if(e1(e,134335)|0?e1(e,111073)|0:0)break r;t[l>>2]=0;e=a;continue A}case 98:{if(!(e1(e,111083)|0)){c[f>>3]=2.0;e=a;continue A}break}case 102:{if(!(e1(e,111101)|0)){t[n>>2]=1;e=a;continue A}break}case 117:{if(!(e1(e,111108)|0)){t[n>>2]=0;e=a;continue A}break}case 116:{if(!(e1(e,111117)|0)){e=a;continue A}break}default:{}}}while(0);t[s>>2]=e;nw(0,111125,s)|0;e=a}}}while(0);h=o;return}function ai(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0,n=0,f=0,l=0;l=h;h=h+32|0;n=l;r=t[e+60>>2]|0;if((r|0?(f=r+96|0,a=t[f>>2]|0,a|0):0)?t[(t[e+16>>2]|0)+144>>2]|0:0){r=A+16|0;c[n>>3]=(+c[r>>3]+ +c[A>>3])*.5;c[n+8>>3]=(+c[A+24>>3]+ +c[A+8>>3])*.5;A=n+16|0;t[A>>2]=t[r>>2];t[A+4>>2]=t[r+4>>2];t[A+8>>2]=t[r+8>>2];t[A+12>>2]=t[r+12>>2];if(!(t[e+152>>2]&8192)){Dr(e,n,n,2)|0;a=t[f>>2]|0}V5[a&127](e,n,i)}h=l;return}function ti(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0,n=0,f=0,l=0,s=0,c=0,o=0,u=0,b=0;b=h;h=h+48|0;o=b;a=t[e+60>>2]|0;if((a|0?(u=a+100|0,t[u>>2]|0):0)?(c=e+16|0,s=t[c>>2]|0,t[s+144>>2]|0):0){if(!(i&4)){a=i;n=0}else{a=i&-5;i=s+16|0;n=o;f=i;l=n+40|0;do{t[n>>2]=t[f>>2];n=n+4|0;f=f+4|0}while((n|0)<(l|0));n=i;f=s+56|0;l=n+40|0;do{t[n>>2]=t[f>>2];n=n+4|0;f=f+4|0}while((n|0)<(l|0));n=1}if(!(t[e+152>>2]&8192)){i=r+10|0;if((t[47363]|0)<(r|0)){t[47363]=i;i=AM(t[47364]|0,i<<4)|0;t[47364]=i}else i=t[47364]|0;Dr(e,A,i,r)|0;R5[t[u>>2]&31](e,i,r,a)}else R5[t[u>>2]&31](e,A,r,a);if(n|0){n=(t[c>>2]|0)+16|0;f=o;l=n+40|0;do{t[n>>2]=t[f>>2];n=n+4|0;f=f+4|0}while((n|0)<(l|0))}}h=b;return}function ni(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0,n=0;i=h;h=h+64|0;a=i;t[a>>2]=t[A>>2];t[a+4>>2]=t[A+4>>2];t[a+8>>2]=t[A+8>>2];t[a+12>>2]=t[A+12>>2];n=a+32|0;A=A+16|0;t[n>>2]=t[A>>2];t[n+4>>2]=t[A+4>>2];t[n+8>>2]=t[A+8>>2];t[n+12>>2]=t[A+12>>2];c[a+16>>3]=+c[a>>3];c[a+24>>3]=+c[a+40>>3];c[a+48>>3]=+c[n>>3];c[a+56>>3]=+c[a+8>>3];ti(e,a,4,r);h=i;return}function fi(e,A,r,i,a,n){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;n=n|0;var f=0,l=0,s=0;l=t[e+60>>2]|0;do{if((l|0?(s=l+104|0,f=t[s>>2]|0,f|0):0)?t[(t[e+16>>2]|0)+144>>2]|0:0){if(t[e+152>>2]&8192|0){J5[f&15](e,A,r,i,a,n&255);break}f=r+10|0;if((t[47363]|0)<(r|0)){t[47363]=f;f=AM(t[47364]|0,f<<4)|0;t[47364]=f}else f=t[47364]|0;Dr(e,A,f,r)|0;J5[t[s>>2]&15](e,f,r,i,a,n&255)}}while(0);return}function li(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0,n=0;i=t[e+60>>2]|0;do{if((i|0?(n=i+108|0,a=t[n>>2]|0,a|0):0)?t[(t[e+16>>2]|0)+144>>2]|0:0){if(t[e+152>>2]&8192|0){V5[a&127](e,A,r);break}i=r+10|0;if((t[47363]|0)<(r|0)){t[47363]=i;i=AM(t[47364]|0,i<<4)|0;t[47364]=i}else i=t[47364]|0;Dr(e,A,i,r)|0;V5[t[n>>2]&127](e,i,r)}}while(0);return}function si(e,A){e=e|0;A=A|0;var r=0,a=0;r=t[e+60>>2]|0;if((A|0?!((r|0)==0|(i[A>>0]|0)==0):0)?(a=t[r+112>>2]|0,a|0):0)M5[a&63](e,A);return}function ci(e,A,r,a,n,f){e=e|0;A=A|0;r=r|0;a=a|0;n=n|0;f=f|0;var l=0.0,s=0.0,o=0,u=0,b=0.0,w=0.0,k=0.0,d=0.0,v=0,g=0.0,m=0.0,p=0.0,E=0.0,B=0,y=0,C=0,I=0,Z=0,G=0,L=0,Q=0,D=0,z=0;D=h;h=h+112|0;Z=D+64|0;Q=D;u=D+96|0;B=D+48|0;y=D+32|0;G=t[e+60>>2]|0;if(!e)ge(111282,111178,691,111189);if(!A)ge(111208,111178,692,111189);if(!(i[A>>0]|0))ge(111213,111178,693,111189);L=Rm(A)|0;if(!L){if((G|0)!=0&(CN(A)|0)!=0?(o=t[G+116>>2]|0,o|0):0)x5[o&15](e,A,r,a,n&255)}else{v=e+432|0;t[Z>>2]=t[v>>2];t[Z+4>>2]=t[v+4>>2];t[Z+8>>2]=t[v+8>>2];t[Z+12>>2]=t[v+12>>2];Hm(u,L,Z);v=t[u>>2]|0;o=t[u+4>>2]|0;if(!((v|0)<1&(o|0)<1)){u=Q+16|0;t[u>>2]=t[r>>2];t[u+4>>2]=t[r+4>>2];t[u+8>>2]=t[r+8>>2];t[u+12>>2]=t[r+12>>2];t[Q>>2]=t[r>>2];t[Q+4>>2]=t[r+4>>2];t[Q+8>>2]=t[r+8>>2];t[Q+12>>2]=t[r+12>>2];C=Q+8|0;I=Q+24|0;A=1;while(1){if((A|0)>=(a|0))break;z=r+(A<<4)|0;p=+c[z>>3];c[Q>>3]=+c[(+c[Q>>3]>3];E=+c[r+(A<<4)+8>>3];c[C>>3]=+c[(+c[C>>3]>3];c[u>>3]=+c[(+c[u>>3]>p?u:z)>>3];c[I>>3]=+c[(+c[I>>3]>E?u:z)+8>>3];A=A+1|0}s=+c[u>>3];l=+c[Q>>3];g=s-l;m=+c[I>>3];p=+c[C>>3];E=m-p;b=+(o|0);w=+(v|0);k=g/w;d=E/b;e:do{switch(oi(f)|0){case 1:if(k>3]=l;s=s-g;c[u>>3]=s}if(b>3]=p+E;c[I>>3]=m-E}if(!(t[e+152>>2]&8192)){t[Z>>2]=t[Q>>2];t[Z+4>>2]=t[Q+4>>2];t[Z+8>>2]=t[Q+8>>2];t[Z+12>>2]=t[Q+12>>2];Qr(B,e,Z);t[Q>>2]=t[B>>2];t[Q+4>>2]=t[B+4>>2];t[Q+8>>2]=t[B+8>>2];t[Q+12>>2]=t[B+12>>2];t[Z>>2]=t[u>>2];t[Z+4>>2]=t[u+4>>2];t[Z+8>>2]=t[u+8>>2];t[Z+12>>2]=t[u+12>>2];Qr(y,e,Z);t[u>>2]=t[y>>2];t[u+4>>2]=t[y+4>>2];t[u+8>>2]=t[y+8>>2];t[u+12>>2]=t[y+12>>2];s=+c[u>>3];l=+c[Q>>3]}if(l>s){c[Q>>3]=s;c[u>>3]=l}l=+c[C>>3];s=+c[I>>3];if(l>s){c[C>>3]=s;c[I>>3]=l}if(G|0){z=t[e+72>>2]|0;t[Z>>2]=t[Q>>2];t[Z+4>>2]=t[Q+4>>2];t[Z+8>>2]=t[Q+8>>2];t[Z+12>>2]=t[Q+12>>2];t[Z+16>>2]=t[Q+16>>2];t[Z+20>>2]=t[Q+20>>2];t[Z+24>>2]=t[Q+24>>2];t[Z+28>>2]=t[Q+28>>2];wi(e,L,Z,n,z)}}}h=D;return}function oi(e){e=e|0;if(i[e>>0]|0)if(N1(e,141116)|0)if(N1(e,141048)|0)if(!(N1(e,111221)|0))e=4;else e=(mx(e)|0)<<24>>24!=0&1;else e=3;else e=2;else e=0;return e|0}function ui(e,A){e=e|0;A=+A;if(t[e+60>>2]|0)c[(t[e+16>>2]|0)+152>>3]=A;return}function bi(e,A){e=e|0;A=A|0;A=Vm(e,1,A)|0;if(!A)A=999;else{A=t[A+16>>2]|0;t[e+184>>2]=t[A+4>>2];t[e+172>>2]=t[A+12>>2];t[e+176>>2]=t[A>>2];t[e+180>>2]=t[A+16>>2];A=300}return A|0}function hi(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0,f=0,l=0;l=h;h=h+16|0;a=l;Sd(A,137483,280,1)|0;n=A+16|0;t[(t[n>>2]|0)+144>>2]=e;if((yd(A)|0)!=(A|0))t[(t[(yd(A)|0)+16>>2]|0)+144>>2]=e;i=Hw(A,111226)|0;r=e+172|0;if((i|0)!=0?(t[r>>2]=0,(bi(e,i)|0)==999):0){r=Nm(e,1,i)|0;t[a>>2]=i;t[a+4>>2]=r;nw(1,111233,a)|0;r=-1}else{i=t[r>>2]|0;if(!i)r=-1;else{nF(1);WF(A,t[t[e+180>>2]>>2]&1);r=t[(t[n>>2]|0)+8>>2]|0;t[(t[(yd(A)|0)+16>>2]|0)+8>>2]=r;wR();r=t[i>>2]|0;if(r|0?(F5[r&127](A),f=t[i+4>>2]|0,f|0):0)t[(t[n>>2]|0)+148>>2]=f;nF(0);r=0}}h=l;return r|0}function wi(e,A,r,a,n){e=e|0;A=A|0;r=r|0;a=a|0;n=n|0;var f=0,l=0,s=0,c=0,o=0,u=0;u=h;h=h+176|0;c=u+8|0;s=u;f=u+40|0;if(!e)ge(111282,111286,52,111300);if(!A)ge(111312,111286,53,111300);l=t[A+8>>2]|0;if(!l)ge(111315,111286,54,111300);if(!(i[l>>0]|0))ge(111324,111286,55,111300);$1(f,t[A+28>>2]|0)|0;l=f+(U2(f)|0)|0;i[l>>0]=58;i[l+1>>0]=0;b3(f,n)|0;if((ki(e,f)|0)==999){t[s>>2]=f;nw(0,111336,s)|0}n=t[e+92>>2]|0;if(n|0?(o=t[n>>2]|0,o|0):0){t[c>>2]=t[r>>2];t[c+4>>2]=t[r+4>>2];t[c+8>>2]=t[r+8>>2];t[c+12>>2]=t[r+12>>2];t[c+16>>2]=t[r+16>>2];t[c+20>>2]=t[r+20>>2];t[c+24>>2]=t[r+24>>2];t[c+28>>2]=t[r+28>>2];R5[o&31](e,A,c,a)}h=u;return}function ki(e,A){e=e|0;A=A|0;A=Vm(t[e>>2]|0,4,A)|0;if(!A)A=999;else{A=t[A+16>>2]|0;t[e+92>>2]=t[A+12>>2];t[e+96>>2]=t[A>>2];A=300}return A|0}function di(e){e=e|0;return 1}function vi(e){e=e|0;var A=0;i[e+536>>0]=0;A=e+336|0;c[A>>3]=+c[A>>3]+10.0/+c[e+352>>3];i[e+537>>0]=1;return 0}function gi(e){e=e|0;var A=0;i[e+536>>0]=0;A=e+336|0;c[A>>3]=+c[A>>3]-10.0/+c[e+352>>3];i[e+537>>0]=1;return 0}function mi(e){e=e|0;var A=0;i[e+536>>0]=0;A=e+344|0;c[A>>3]=+c[A>>3]-10.0/+c[e+352>>3];i[e+537>>0]=1;return 0}function pi(e){e=e|0;var A=0;i[e+536>>0]=0;A=e+344|0;c[A>>3]=+c[A>>3]+10.0/+c[e+352>>3];i[e+537>>0]=1;return 0}function Ei(e){e=e|0;var A=0;i[e+536>>0]=0;A=e+352|0;c[A>>3]=+c[A>>3]*1.1;i[e+537>>0]=1;return 0}function Bi(e){e=e|0;var A=0;i[e+536>>0]=0;A=e+352|0;c[A>>3]=+c[A>>3]*.9090909090909091;i[e+537>>0]=1;return 0}function yi(e){e=e|0;var A=0,r=0,a=0,n=0.0,f=0.0;r=e+536|0;A=(i[r>>0]|0)==0;i[r>>0]=A&1;if(A){A=t[e+448>>2]|0;r=t[e+452>>2]|0;f=+(A>>>0);n=+(r>>>0);a=f/+(A|0)>3]=(a?f:n)/+((a?A:r)|0);r=e+336|0;t[r>>2]=0;t[r+4>>2]=0;t[r+8>>2]=0;t[r+12>>2]=0;i[e+537>>0]=1}return 0}function Ci(e){e=e|0;var A=0,r=0;A=t[(t[e>>2]|0)+168>>2]|0;r=e+580|0;if(!(t[r>>2]|0)){t[r>>2]=A;r=(t[A+16>>2]|0)+112|0;i[r>>0]=i[r>>0]|2;Ji(e,A)}vB(e,A);i[e+540>>0]=1;return}function Ii(e,A,r){e=e|0;A=A|0;r=r|0;var a=0,n=0.0,f=0.0,l=0,s=0;s=h;h=h+16|0;a=s;switch(A|0){case 1:{t[a>>2]=t[r>>2];t[a+4>>2]=t[r+4>>2];t[a+8>>2]=t[r+8>>2];t[a+12>>2]=t[r+12>>2];Yi(e,a);xi(e);i[e+538>>0]=1;i[e+541>>0]=1;l=13;break}case 2:{i[e+538>>0]=1;i[e+541>>0]=2;l=13;break}case 3:{t[a>>2]=t[r>>2];t[a+4>>2]=t[r+4>>2];t[a+8>>2]=t[r+8>>2];t[a+12>>2]=t[r+12>>2];Yi(e,a);i[e+538>>0]=1;i[e+541>>0]=3;l=13;break}case 4:{i[e+536>>0]=0;if(!(t[e+360>>2]|0)){a=e+352|0;f=+c[a>>3];A=e+336|0;c[A>>3]=(+c[r>>3]-+((t[e+448>>2]|0)>>>0)*.5)*.10000000000000009/(+c[e+520>>3]*f)+ +c[A>>3];n=+c[r+8>>3]-+((t[e+452>>2]|0)>>>0)*.5;A=e+528|0}else{a=e+352|0;f=+c[a>>3];A=e+336|0;c[A>>3]=+c[A>>3]-(+c[r+8>>3]-+((t[e+452>>2]|0)>>>0)*.5)*.10000000000000009/(+c[e+528>>3]*f);n=+c[r>>3]-+((t[e+448>>2]|0)>>>0)*.5;A=e+520|0}l=e+344|0;c[l>>3]=n*.10000000000000009/(+c[A>>3]*f)+ +c[l>>3];c[a>>3]=f*1.1;l=13;break}case 5:{i[e+536>>0]=0;l=e+352|0;f=+c[l>>3]*.9090909090909091;c[l>>3]=f;if(!(t[e+360>>2]|0)){a=e+336|0;c[a>>3]=+c[a>>3]-(+c[r>>3]-+((t[e+448>>2]|0)>>>0)*.5)*.10000000000000009/(+c[e+520>>3]*f);n=+c[r+8>>3]-+((t[e+452>>2]|0)>>>0)*.5;a=e+528|0}else{a=e+336|0;c[a>>3]=(+c[r+8>>3]-+((t[e+452>>2]|0)>>>0)*.5)*.10000000000000009/(+c[e+528>>3]*f)+ +c[a>>3];n=+c[r>>3]-+((t[e+448>>2]|0)>>>0)*.5;a=e+520|0}l=e+344|0;c[l>>3]=+c[l>>3]-n*.10000000000000009/(+c[a>>3]*f);l=13;break}default:{}}if((l|0)==13)i[e+537>>0]=1;e=e+560|0;t[e>>2]=t[r>>2];t[e+4>>2]=t[r+4>>2];t[e+8>>2]=t[r+8>>2];t[e+12>>2]=t[r+12>>2];h=s;return}function Zi(e,A,r){e=e|0;A=A|0;r=r|0;i[e+538>>0]=0;i[e+541>>0]=0;return}function Gi(e,A){e=e|0;A=A|0;var r=0,a=0.0,n=0.0,f=0,l=0.0,s=0;s=h;h=h+16|0;r=s;f=e+560|0;l=(+c[A>>3]-+c[f>>3])/+c[e+520>>3];n=(+c[A+8>>3]-+c[e+568>>3])/+c[e+528>>3];if(!(+Q(+l)<.0001&+Q(+n)<.0001)){switch(i[e+541>>0]|0){case 0:{t[r>>2]=t[A>>2];t[r+4>>2]=t[A+4>>2];t[r+8>>2]=t[A+8>>2];t[r+12>>2]=t[A+12>>2];Yi(e,r);break}case 2:{a=+c[e+352>>3];if(!(t[e+360>>2]|0)){r=e+336|0;c[r>>3]=+c[r>>3]-l/a;r=e+344|0;c[r>>3]=+c[r>>3]-n/a}else{r=e+336|0;c[r>>3]=+c[r>>3]-n/a;r=e+344|0;c[r>>3]=+c[r>>3]+l/a}i[e+537>>0]=1;break}default:{}}t[f>>2]=t[A>>2];t[f+4>>2]=t[A+4>>2];t[f+8>>2]=t[A+8>>2];t[f+12>>2]=t[A+12>>2]}h=s;return}function Li(e,A,r){e=e|0;A=A|0;r=r|0;return}function Qi(e){e=e|0;return}function Di(e,A,r){e=e|0;A=A|0;r=r|0;var a=0,n=0,f=0,l=0,s=0;s=t[e>>2]|0;if(A){A=F3(A,138821)|0;if(A|0){l=sm(A,0)|0;k3(A)|0;a=5}}else{l=sm(t[15647]|0,0)|0;a=5}if((a|0)==5?l|0:0){n=s+168|0;A=t[n>>2]|0;if(A|0){a=t[s+172>>2]|0;if((a|0)!=0?(f=t[a+4>>2]|0,(f|0)!=0):0){F5[f&127](A);A=t[n>>2]|0}NF(A);vk(t[n>>2]|0)|0}_d(l,0,137483,280,1);_d(l,1,137447,304,1);_d(l,2,137460,176,1);t[n>>2]=l;t[(t[l+16>>2]|0)+144>>2]=s;if((bp(s,l,r)|0)!=-1){t[e+580>>2]=0;t[e+576>>2]=0;i[e+537>>0]=1}}return}function zi(e,A){e=e|0;A=A|0;e=t[e>>2]|0;bp(e,t[e+168>>2]|0,A)|0;return}function Wi(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0,n=0,f=0,l=0;n=t[e>>2]|0;a=n+160|0;i=t[a>>2]|0;if((i|0)!=0?(t[n+164>>2]|0)==0:0){l=n+192|0;f=t[l>>2]|0;t[a>>2]=0;t[l>>2]=0;a=f}else{a=0;i=0}wp(n,t[n+168>>2]|0,A,r)|0;if(i|0){l=t[e>>2]|0;t[l+160>>2]=i;t[l+192>>2]=a}return}function Yi(e,A){e=e|0;A=A|0;var r=0,a=0,n=0,f=0.0,l=0.0,s=0.0,o=0;a=h;h=h+80|0;r=a+48|0;n=a;o=a+32|0;t[r>>2]=t[A>>2];t[r+4>>2]=t[A+4>>2];t[r+8>>2]=t[A+8>>2];t[r+12>>2]=t[A+12>>2];Fi(o,e,r);s=+c[o>>3];l=+c[o+8>>3];f=1.0/+c[e+352>>3];c[n+16>>3]=f+s;c[n+24>>3]=f+l;c[n>>3]=s-f;c[n+8>>3]=l-f;A=t[(t[e>>2]|0)+168>>2]|0;t[r>>2]=t[n>>2];t[r+4>>2]=t[n+4>>2];t[r+8>>2]=t[n+8>>2];t[r+12>>2]=t[n+12>>2];t[r+16>>2]=t[n+16>>2];t[r+20>>2]=t[n+20>>2];t[r+24>>2]=t[n+24>>2];t[r+28>>2]=t[n+28>>2];A=Mi(A,r)|0;r=e+576|0;if((A|0)!=(t[r>>2]|0)){Vi(e);t[r>>2]=A;Ni(e);i[e+537>>0]=1}h=a;return}function Fi(e,A,r){e=e|0;A=A|0;r=r|0;var i=0.0,a=0.0,n=0.0,f=0;if(!(t[A+360>>2]|0)){i=+c[A+352>>3];a=+c[r+8>>3];n=i;f=A+528|0;i=+c[r>>3]/(+c[A+520>>3]*i)-+c[A+504>>3]}else{i=+c[A+352>>3];a=-+c[r>>3];n=i;f=A+520|0;i=+c[r+8>>3]/(+c[A+528>>3]*i)-+c[A+504>>3]}n=a/(+c[f>>3]*n)-+c[A+512>>3];c[e>>3]=i;c[e+8>>3]=n;return}function Mi(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0;n=h;h=h+32|0;a=n;i=sd(e)|0;e:while(1){if(!i){i=9;break}r=Ow(e,i)|0;while(1){if(!r)break;t[a>>2]=t[A>>2];t[a+4>>2]=t[A+4>>2];t[a+8>>2]=t[A+8>>2];t[a+12>>2]=t[A+12>>2];t[a+16>>2]=t[A+16>>2];t[a+20>>2]=t[A+20>>2];t[a+24>>2]=t[A+24>>2];t[a+28>>2]=t[A+28>>2];if((IJ(r,a)|0)<<24>>24){i=6;break e}r=qw(e,r)|0}i=cd(e,i)|0}do{if((i|0)!=6)if((i|0)==9){r=od(e)|0;while(1){if(!r)break;t[a>>2]=t[A>>2];t[a+4>>2]=t[A+4>>2];t[a+8>>2]=t[A+8>>2];t[a+12>>2]=t[A+12>>2];t[a+16>>2]=t[A+16>>2];t[a+20>>2]=t[A+20>>2];t[a+24>>2]=t[A+24>>2];t[a+28>>2]=t[A+28>>2];if((BJ(r,a)|0)<<24>>24){i=12;break}r=ud(e,r)|0}if((i|0)==12)break;t[a>>2]=t[A>>2];t[a+4>>2]=t[A+4>>2];t[a+8>>2]=t[A+8>>2];t[a+12>>2]=t[A+12>>2];t[a+16>>2]=t[A+16>>2];t[a+20>>2]=t[A+20>>2];t[a+24>>2]=t[A+24>>2];t[a+28>>2]=t[A+28>>2];r=Ri(e,a)|0;if(!r){r=e;break}else break}}while(0);h=n;return r|0}function Vi(e){e=e|0;var A=0;A=t[e+576>>2]|0;e:do{if(A|0)switch(Yd(A)|0){case 0:{A=(t[A+16>>2]|0)+112|0;i[A>>0]=i[A>>0]&-2;break e}case 1:{A=(t[A+16>>2]|0)+117|0;i[A>>0]=i[A>>0]&-2;break e}case 2:{A=(t[A+16>>2]|0)+115|0;i[A>>0]=i[A>>0]&-2;break e}default:break e}}while(0);t[e+584>>2]=0;return}function Ni(e){e=e|0;var A=0,r=0;r=e+584|0;A=t[r>>2]|0;if(A|0){G2(A);t[r>>2]=0}A=t[e+576>>2]|0;e:do{if(A|0)switch(Yd(A)|0){case 0:{e=(t[A+16>>2]|0)+112|0;i[e>>0]=i[e>>0]|1;e=zw(A,0,141101,0)|0;if(!e)break e;t[r>>2]=UF(Pw(A,e)|0,A)|0;break e}case 1:{e=(t[A+16>>2]|0)+117|0;i[e>>0]=i[e>>0]|1;e=zw(Bd(A)|0,1,141101,0)|0;if(!e)break e;t[r>>2]=UF(Pw(A,e)|0,A)|0;break e}case 2:{e=(t[A+16>>2]|0)+115|0;i[e>>0]=i[e>>0]|1;e=zw(Bd(t[((t[A>>2]&3|0)==2?A:A+-48|0)+40>>2]|0)|0,2,141101,0)|0;if(!e)break e;t[r>>2]=UF(Pw(A,e)|0,A)|0;break e}default:break e}}while(0);return}function Ri(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0,f=0,l=0,s=0,o=0,u=0.0,b=0.0;o=h;h=h+32|0;i=o;n=t[e+16>>2]|0;f=t[n+180>>2]|0;l=n+184|0;r=1;while(1){if((r|0)>(f|0)){s=4;break}a=t[(t[l>>2]|0)+(r<<2)>>2]|0;t[i>>2]=t[A>>2];t[i+4>>2]=t[A+4>>2];t[i+8>>2]=t[A+8>>2];t[i+12>>2]=t[A+12>>2];t[i+16>>2]=t[A+16>>2];t[i+20>>2]=t[A+20>>2];t[i+24>>2]=t[A+24>>2];t[i+28>>2]=t[A+28>>2];a=Ri(a,i)|0;if(!a)r=r+1|0;else{e=a;break}}do{if((s|0)==4){b=+c[n+24>>3];u=+c[n+40>>3];if(((+c[A+16>>3]>=+c[n+16>>3]?+c[n+32>>3]>=+c[A>>3]:0)?+c[A+24>>3]>=b:0)?u>=+c[A+8>>3]:0)break;e=0}}while(0);h=o;return e|0}function xi(e){e=e|0;var A=0,r=0,a=0;a=e+580|0;A=t[a>>2]|0;e:do{if(A|0)switch(Yd(A)|0){case 0:{r=(t[A+16>>2]|0)+112|0;i[r>>0]=i[r>>0]&-7|4;break e}case 1:{r=(t[A+16>>2]|0)+117|0;i[r>>0]=i[r>>0]&-7|4;break e}case 2:{r=(t[A+16>>2]|0)+115|0;i[r>>0]=i[r>>0]&-7|4;break e}default:break e}}while(0);A=e+588|0;r=t[A>>2]|0;if(r|0){G2(r);t[A>>2]=0}A=t[e+576>>2]|0;t[a>>2]=A;e:do{if(A|0)switch(Yd(A)|0){case 0:{a=(t[A+16>>2]|0)+112|0;i[a>>0]=i[a>>0]|2;Ji(e,A);break e}case 1:{a=(t[A+16>>2]|0)+117|0;i[a>>0]=i[a>>0]|2;Hi(e,A);break e}case 2:{a=(t[A+16>>2]|0)+115|0;i[a>>0]=i[a>>0]|2;Pi(e,A);break e}default:break e}}while(0);return}function Ji(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0;r=e+592|0;do{if((yd(A)|0)==(A|0))if(!(Bk(A)|0)){zm(r,0,111494);break}else{zm(r,0,111486);break}else zm(r,0,111500)}while(0);zm(r,1,Mk(A)|0);t[e+596>>2]=2;a=e+604|0;r=0;i=2;while(1){r=Vw(A,0,r)|0;if(!r)break;zm(a,i,t[r+8>>2]|0);zm(a,i+1|0,Pw(A,r)|0);zm(a,i+2|0,0);i=i+3|0}t[e+608>>2]=i;r=zw(A,0,141055,0)|0;if(!r){r=zw(A,0,111477,0)|0;if(r|0)n=11}else n=11;if((n|0)==11)t[e+588>>2]=UF(Pw(A,r)|0,A)|0;return}function Hi(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0,f=0;a=e+592|0;zm(a,0,111481);zm(a,1,Mk(A)|0);t[e+596>>2]=2;a=e+604|0;n=yd(Bd(A)|0)|0;i=2;r=0;while(1){r=Vw(n,1,r)|0;if(!r)break;zm(a,i,t[r+8>>2]|0);zm(a,i|1,Pw(A,r)|0);i=i+2|0}t[e+608>>2]=i;r=zw(Bd(A)|0,1,141055,0)|0;if(!r){r=zw(Bd(A)|0,1,111477,0)|0;if(r|0)f=6}else f=6;if((f|0)==6)t[e+588>>2]=UF(Pw(A,r)|0,A)|0;return}function Pi(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0,f=0,l=0,s=0,c=0,o=0;f=e+592|0;zm(f,0,111450);c=A+48|0;zm(f,1,Mk(t[((t[A>>2]&3|0)==3?A:c)+40>>2]|0)|0);c=(Bk(Bd(t[((t[A>>2]&3|0)==3?A:c)+40>>2]|0)|0)|0)!=0;zm(f,3,c?137738:141747);c=A+-48|0;zm(f,4,Mk(t[((t[A>>2]&3|0)==2?A:c)+40>>2]|0)|0);t[e+596>>2]=7;l=e+604|0;s=yd(Bd(t[((t[A>>2]&3|0)==2?A:c)+40>>2]|0)|0)|0;n=7;r=0;e:while(1){while(1){r=Vw(s,2,r)|0;if(!r)break e;i=r+8|0;a=t[i>>2]|0;if(!(e1(a,111455)|0)){o=5;break}if(!(e1(a,111464)|0)){o=7;break}if(e1(a,111473)|0)break;zm(f,6,Pw(A,r)|0)}if((o|0)==5){o=0;zm(f,2,Pw(A,r)|0)}else if((o|0)==7){o=0;zm(f,5,Pw(A,r)|0)}zm(l,n,t[i>>2]|0);zm(l,n+1|0,Pw(A,r)|0);n=n+2|0}t[e+608>>2]=n;r=zw(Bd(t[((t[A>>2]&3|0)==2?A:c)+40>>2]|0)|0,2,141055,0)|0;if(!r){r=zw(Bd(t[((t[A>>2]&3|0)==2?A:c)+40>>2]|0)|0,2,111477,0)|0;if(r|0)o=13}else o=13;if((o|0)==13)t[e+588>>2]=UF(Pw(A,r)|0,A)|0;return}function Xi(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0,n=0;n=Si(e,A,t[r>>2]|0)|0;r=t[r+4>>2]|0;while(1){a=t[r+4>>2]|0;if(!a)break;A=0;while(1){i=t[a+(A*20|0)+4>>2]|0;if(!i)break;Fm(e,t[r>>2]|0,i,t[a+(A*20|0)+8>>2]|0,n,a+(A*20|0)|0)|0;A=A+1|0}r=r+8|0}return}function Si(e,A,r){e=e|0;A=A|0;r=r|0;var i=0;i=$F(12)|0;if(!A)A=0;else A=o3(A)|0;t[i+4>>2]=A;t[i+8>>2]=o3(r)|0;r=e+100|0;t[i>>2]=t[r>>2];t[r>>2]=i;return i|0}function ji(e,A){e=e|0;A=A|0;Ui(e);i[e+44>>0]=0;Ti(e)|0;ax(e)|0;return}function Ui(e){e=e|0;var A=0,r=0;A=t[e+32>>2]|0;e:do{if(A|0)while(1){r=t[A>>2]|0;if(!r)break e;if((i[r>>0]|0)==103?R4(r,111509)|0:0)Xi(e,0,t[A+4>>2]|0);A=A+8|0}}while(0);return}function Ti(e){e=e|0;var A=0;A=Vm(e,2,111522)|0;if(!A)e=999;else{t[e+148>>2]=t[(t[A+16>>2]|0)+12>>2];e=300}return e|0}function Oi(e,A,r){e=e|0;A=A|0;r=r|0;var i=0;e=t[e+148>>2]|0;if((e|0)!=0?(i=t[e>>2]|0,(i|0)!=0):0)e=Z5[i&127](A,r)|0;else e=0;return e|0}function _i(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;return(t[A>>2]|0)-(t[r>>2]|0)|0}function qi(e){e=e|0;var A=0.0,r=0.0;e=t[e+16>>2]|0;r=+c[e+16>>3];A=+c[e+24>>3];return(Ki(~~(r>A?r:A)>>>0)|0)+1|0}function Ki(e){e=e|0;var A=0,r=0;if(!e)e=-1;else{r=e>>>0>65535;e=r?e>>>16:e;r=r?16:0;A=e>>>0>255;e=A?e>>>8:e;r=A?r|8:r;A=e>>>0>15;e=A?e>>>4:e;r=A?r|4:r;A=e>>>0>3;e=(A?r|2:r)+((A?e>>>2:e)>>>0>1&1)|0}return e|0}function $i(e,A,r,a,n){e=e|0;A=A|0;r=r|0;a=a|0;n=n|0;var f=0.0,l=0.0,s=0,o=0,u=0,b=0,w=0,k=0,d=0;d=h;h=h+32|0;k=d;w=ea(e,A,r,a,n)|0;r=Aa(w)|0;if((r|0)>=0){u=k+16|0;b=k+24|0;o=k+8|0;s=n+32|0;r=0;n=0;while(1){if((n|0)>=(A|0))break;a=e+(n*40|0)+32|0;do{if(t[a>>2]|0){ra(k,w,e+(n*40|0)|0);f=+c[u>>3];l=+c[b>>3];if(!(t[k>>2]|0)){i[(t[a>>2]|0)+36>>0]=1;break}if(+c[o>>3]==0.0){a=t[a>>2]|0;c[a+16>>3]=f;c[a+24>>3]=l;i[a+36>>0]=1;break}if((i[s>>0]|0)==1){a=t[a>>2]|0;c[a+16>>3]=f;c[a+24>>3]=l;i[a+36>>0]=1}else r=1}}while(0);n=n+1|0}ia(w)}h=d;return r|0}function ea(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;var n=0,f=0,l=0,s=0;n=KF(28)|0;s=Uh(25912,t[4584]|0)|0;f=n+20|0;t[f>>2]=s;do{if(s){s=Nn()|0;t[n+24>>2]=s;if(!s){G3(111740,14,1,t[15712]|0)|0;l=6;break}else{t[n>>2]=e;t[n+4>>2]=A;t[n+8>>2]=r;t[n+12>>2]=i;t[n+16>>2]=a;break}}else{G3(111740,14,1,t[15712]|0)|0;l=6}}while(0);if((l|0)==6){e=t[f>>2]|0;if(e|0)Ph(e)|0;e=t[n+24>>2]|0;if(e|0)xn(e)|0;G2(n);n=0}return n|0}function Aa(e){e=e|0;var A=0;A=ua(e)|0;if((A|0)>=0){ba(e);ha(e);A=Ph(t[e+20>>2]|0)|0}return A|0}function ra(e,A,r){e=e|0;A=A|0;r=r|0;var i=0.0,a=0,n=0,f=0.0,l=0,s=0.0,o=0,u=0,b=0,w=0,k=0.0,d=0,v=0,g=0,m=0,p=0,E=0,B=0,y=0,C=0,I=0.0,Z=0,G=0,L=0,Q=0,D=0,z=0,W=0,Y=0,F=0,M=0.0,V=0,N=0;N=h;h=h+464|0;F=N+416|0;V=N+400|0;z=N+384|0;o=N+352|0;u=N+320|0;b=N+288|0;w=N+256|0;d=N+224|0;v=N+192|0;g=N+160|0;m=N+128|0;p=N+96|0;B=N+64|0;y=N+32|0;W=N;C=t[r+32>>2]|0;i=+c[C>>3];G=r+16|0;I=(i*2.0+ +c[G>>3])*.125;L=C+8|0;Y=r+24|0;f=+c[Y>>3];M=(+c[L>>3]*2.0+f)*.5;if(!C)ge(111533,111543,445,111553);a=F;n=a+36|0;do{t[a>>2]=0;a=a+4|0}while((a|0)<(n|0));Z=C+16|0;c[Z>>3]=+c[r>>3]-i;Q=r+8|0;D=C+24|0;c[D>>3]=f+ +c[Q>>3];aa(o,A,r,F);l=t[o>>2]|0;a=t[o+4>>2]|0;i=+c[o+8>>3];o=o+16|0;t[V>>2]=t[o>>2];t[V+4>>2]=t[o+4>>2];t[V+8>>2]=t[o+8>>2];t[V+12>>2]=t[o+12>>2];e:do{if(!l){t[e>>2]=0;t[e+4>>2]=a;c[e+8>>3]=i;e=e+16|0;t[e>>2]=t[V>>2];t[e+4>>2]=t[V+4>>2];t[e+8>>2]=t[V+8>>2];t[e+12>>2]=t[V+12>>2]}else{c[D>>3]=+c[Q>>3];aa(u,A,r,F);n=t[u>>2]|0;o=t[u+4>>2]|0;f=+c[u+8>>3];u=u+16|0;t[z>>2]=t[u>>2];t[z+4>>2]=t[u+4>>2];t[z+8>>2]=t[u+8>>2];t[z+12>>2]=t[u+12>>2];if(!n){t[e>>2]=0;t[e+4>>2]=o;c[e+8>>3]=f;e=e+16|0;t[e>>2]=t[z>>2];t[e+4>>2]=t[z+4>>2];t[e+8>>2]=t[z+8>>2];t[e+12>>2]=t[z+12>>2];break}if(f>2]=t[z>>2];t[V+4>>2]=t[z+4>>2];t[V+8>>2]=t[z+8>>2];t[V+12>>2]=t[z+12>>2];a=o;i=f}else n=l;c[D>>3]=+c[Q>>3]-+c[L>>3];aa(b,A,r,F);o=t[b>>2]|0;l=t[b+4>>2]|0;f=+c[b+8>>3];b=b+16|0;t[z>>2]=t[b>>2];t[z+4>>2]=t[b+4>>2];t[z+8>>2]=t[b+8>>2];t[z+12>>2]=t[b+12>>2];if(!o){t[e>>2]=0;t[e+4>>2]=l;c[e+8>>3]=f;e=e+16|0;t[e>>2]=t[z>>2];t[e+4>>2]=t[z+4>>2];t[e+8>>2]=t[z+8>>2];t[e+12>>2]=t[z+12>>2];break}if(f>2]=t[z>>2];t[V+4>>2]=t[z+4>>2];t[V+8>>2]=t[z+8>>2];t[V+12>>2]=t[z+12>>2];a=l;i=f}else o=n;c[Z>>3]=+c[r>>3];c[D>>3]=+c[Y>>3]+ +c[Q>>3];aa(w,A,r,F);n=t[w>>2]|0;l=t[w+4>>2]|0;f=+c[w+8>>3];w=w+16|0;t[z>>2]=t[w>>2];t[z+4>>2]=t[w+4>>2];t[z+8>>2]=t[w+8>>2];t[z+12>>2]=t[w+12>>2];if(!n){t[e>>2]=0;t[e+4>>2]=l;c[e+8>>3]=f;e=e+16|0;t[e>>2]=t[z>>2];t[e+4>>2]=t[z+4>>2];t[e+8>>2]=t[z+8>>2];t[e+12>>2]=t[z+12>>2];break}if(f>2]=t[z>>2];t[V+4>>2]=t[z+4>>2];t[V+8>>2]=t[z+8>>2];t[V+12>>2]=t[z+12>>2];o=n;a=l;i=f}c[D>>3]=+c[Q>>3]-+c[L>>3];aa(d,A,r,F);n=t[d>>2]|0;l=t[d+4>>2]|0;f=+c[d+8>>3];d=d+16|0;t[z>>2]=t[d>>2];t[z+4>>2]=t[d+4>>2];t[z+8>>2]=t[d+8>>2];t[z+12>>2]=t[d+12>>2];if(!n){t[e>>2]=0;t[e+4>>2]=l;c[e+8>>3]=f;e=e+16|0;t[e>>2]=t[z>>2];t[e+4>>2]=t[z+4>>2];t[e+8>>2]=t[z+8>>2];t[e+12>>2]=t[z+12>>2];break}if(f>2]=t[z>>2];t[V+4>>2]=t[z+4>>2];t[V+8>>2]=t[z+8>>2];t[V+12>>2]=t[z+12>>2];o=n;a=l;i=f}c[Z>>3]=+c[G>>3]+ +c[r>>3];c[D>>3]=+c[Y>>3]+ +c[Q>>3];aa(v,A,r,F);n=t[v>>2]|0;l=t[v+4>>2]|0;f=+c[v+8>>3];v=v+16|0;t[z>>2]=t[v>>2];t[z+4>>2]=t[v+4>>2];t[z+8>>2]=t[v+8>>2];t[z+12>>2]=t[v+12>>2];if(!n){t[e>>2]=0;t[e+4>>2]=l;c[e+8>>3]=f;e=e+16|0;t[e>>2]=t[z>>2];t[e+4>>2]=t[z+4>>2];t[e+8>>2]=t[z+8>>2];t[e+12>>2]=t[z+12>>2];break}if(f>2]=t[z>>2];t[V+4>>2]=t[z+4>>2];t[V+8>>2]=t[z+8>>2];t[V+12>>2]=t[z+12>>2];o=n;a=l;i=f}c[D>>3]=+c[Q>>3];aa(g,A,r,F);n=t[g>>2]|0;l=t[g+4>>2]|0;f=+c[g+8>>3];g=g+16|0;t[z>>2]=t[g>>2];t[z+4>>2]=t[g+4>>2];t[z+8>>2]=t[g+8>>2];t[z+12>>2]=t[g+12>>2];if(!n){t[e>>2]=0;t[e+4>>2]=l;c[e+8>>3]=f;e=e+16|0;t[e>>2]=t[z>>2];t[e+4>>2]=t[z+4>>2];t[e+8>>2]=t[z+8>>2];t[e+12>>2]=t[z+12>>2];break}if(f>2]=t[z>>2];t[V+4>>2]=t[z+4>>2];t[V+8>>2]=t[z+8>>2];t[V+12>>2]=t[z+12>>2];o=n;a=l;i=f}c[D>>3]=+c[Q>>3]-+c[L>>3];aa(m,A,r,F);n=t[m>>2]|0;l=t[m+4>>2]|0;f=+c[m+8>>3];m=m+16|0;t[z>>2]=t[m>>2];t[z+4>>2]=t[m+4>>2];t[z+8>>2]=t[m+8>>2];t[z+12>>2]=t[m+12>>2];if(!n){t[e>>2]=0;t[e+4>>2]=l;c[e+8>>3]=f;e=e+16|0;t[e>>2]=t[z>>2];t[e+4>>2]=t[z+4>>2];t[e+8>>2]=t[z+8>>2];t[e+12>>2]=t[z+12>>2];break}if(f>2]=t[z>>2];t[V+4>>2]=t[z+4>>2];t[V+8>>2]=t[z+8>>2];t[V+12>>2]=t[z+12>>2];a=l;i=f}else n=o;l=(t[F+28>>2]|0)==0;do{if(!(t[F+24>>2]|0))if(l){if(t[F+32>>2]|0){E=38;break}if(!((t[F+12>>2]|0)==0&(t[F>>2]|0)==0))E=38}else E=46;else if(l)E=38;else E=46}while(0);A:do{if((E|0)==38)if(!(t[F+32>>2]|0)){c[Z>>3]=+c[r>>3]-+c[C>>3];w=p+4|0;d=p+8|0;v=p+16|0;o=D;l=Q;f=+c[Y>>3];r:while(1){while(1){c[o>>3]=+c[l>>3]+f;if(!(+c[Z>>3]<=+c[G>>3]+ +c[r>>3])){E=46;break A}aa(p,A,r,F);u=t[p>>2]|0;b=t[w>>2]|0;s=+c[d>>3];t[z>>2]=t[v>>2];t[z+4>>2]=t[v+4>>2];t[z+8>>2]=t[v+8>>2];t[z+12>>2]=t[v+12>>2];if(!u)break r;if(s>2]=t[z>>2];t[V+4>>2]=t[z+4>>2];t[V+8>>2]=t[z+8>>2];t[V+12>>2]=t[z+12>>2];o=Z;l=Z;f=I;n=u;a=b;i=s}t[e>>2]=0;t[e+4>>2]=b;c[e+8>>3]=s;e=e+16|0;t[e>>2]=t[z>>2];t[e+4>>2]=t[z+4>>2];t[e+8>>2]=t[z+8>>2];t[e+12>>2]=t[z+12>>2];break e}else E=46}while(0);A:do{if((E|0)==46)if((t[F+12>>2]|0)==0&(t[F>>2]|0)==0){c[Z>>3]=+c[r>>3]-+c[C>>3];s=+c[Q>>3];u=B+4|0;b=B+8|0;w=B+16|0;f=s;s=+c[Y>>3]+s;while(1){c[D>>3]=s;if(!(s>=f-+c[L>>3]))break A;aa(B,A,r,F);l=t[B>>2]|0;o=t[u>>2]|0;f=+c[b>>3];t[z>>2]=t[w>>2];t[z+4>>2]=t[w+4>>2];t[z+8>>2]=t[w+8>>2];t[z+12>>2]=t[w+12>>2];if(!l)break;if(f>2]=t[z>>2];t[V+4>>2]=t[z+4>>2];t[V+8>>2]=t[z+8>>2];t[V+12>>2]=t[z+12>>2];n=l;a=o;i=f}f=+c[Q>>3];s=+c[D>>3]-M}t[e>>2]=0;t[e+4>>2]=o;c[e+8>>3]=f;e=e+16|0;t[e>>2]=t[z>>2];t[e+4>>2]=t[z+4>>2];t[e+8>>2]=t[z+8>>2];t[e+12>>2]=t[z+12>>2];break e}}while(0);f=+c[r>>3];s=+c[G>>3]+f;c[Z>>3]=s;k=+c[L>>3];c[D>>3]=+c[Q>>3]-k;l=t[F+4>>2]|0;do{if(!(t[F+8>>2]|0)){o=t[F>>2]|0;if(!((l|0)==0&(o|0)==0)){E=59;break}if(t[F+20>>2]|0){l=0;o=0;E=59;break}if(t[F+32>>2]|0){l=0;o=0;E=59}}else{o=t[F>>2]|0;E=59}}while(0);A:do{if((E|0)==59){r:do{if((l|0)==0&(o|0)==0){c[Z>>3]=s;w=y+4|0;d=y+8|0;v=y+16|0;o=D;l=Q;f=k;i:while(1){while(1){c[o>>3]=+c[l>>3]-f;f=+c[r>>3];if(!(+c[Z>>3]>=f-+c[C>>3]))break r;aa(y,A,r,F);u=t[y>>2]|0;b=t[w>>2]|0;s=+c[d>>3];t[z>>2]=t[v>>2];t[z+4>>2]=t[v+4>>2];t[z+8>>2]=t[v+8>>2];t[z+12>>2]=t[v+12>>2];if(!u)break i;if(s>2]=t[z>>2];t[V+4>>2]=t[z+4>>2];t[V+8>>2]=t[z+8>>2];t[V+12>>2]=t[z+12>>2];o=Z;l=Z;f=I;n=u;a=b;i=s}t[e>>2]=0;t[e+4>>2]=b;c[e+8>>3]=s;e=e+16|0;t[e>>2]=t[z>>2];t[e+4>>2]=t[z+4>>2];t[e+8>>2]=t[z+8>>2];t[e+12>>2]=t[z+12>>2];break e}}while(0);if(t[F+20>>2]|0)break;if(t[F+32>>2]|0)break;c[Z>>3]=+c[G>>3]+f;f=+c[Q>>3];u=W+4|0;b=W+8|0;w=W+16|0;s=f;f=f-+c[L>>3];while(1){c[D>>3]=f;if(!(f<=+c[Y>>3]+s))break A;aa(W,A,r,F);l=t[W>>2]|0;o=t[u>>2]|0;f=+c[b>>3];t[z>>2]=t[w>>2];t[z+4>>2]=t[w+4>>2];t[z+8>>2]=t[w+8>>2];t[z+12>>2]=t[w+12>>2];if(!l)break;if(f>2]=t[z>>2];t[V+4>>2]=t[z+4>>2];t[V+8>>2]=t[z+8>>2];t[V+12>>2]=t[z+12>>2];n=l;a=o;i=f}s=+c[Q>>3];f=+c[D>>3]+M}t[e>>2]=0;t[e+4>>2]=o;c[e+8>>3]=f;e=e+16|0;t[e>>2]=t[z>>2];t[e+4>>2]=t[z+4>>2];t[e+8>>2]=t[z+8>>2];t[e+12>>2]=t[z+12>>2];break e}}while(0);t[e>>2]=n;t[e+4>>2]=a;c[e+8>>3]=i;e=e+16|0;t[e>>2]=t[V>>2];t[e+4>>2]=t[V+4>>2];t[e+8>>2]=t[V+8>>2];t[e+12>>2]=t[V+12>>2]}}while(0);h=N;return}function ia(e){e=e|0;xn(t[e+24>>2]|0)|0;G2(e);return}function aa(e,A,r,a){e=e|0;A=A|0;r=r|0;a=a|0;var n=0,f=0.0,l=0,s=0,o=0,u=0.0,b=0,w=0,k=0,d=0.0,v=0,g=0;g=h;h=h+48|0;k=g+32|0;v=g+16|0;w=g;n=t[r+32>>2]|0;if(!n)ge(111533,111543,382,111562);b=n+16|0;t[w>>2]=t[b>>2];t[w+4>>2]=t[b+4>>2];t[w+8>>2]=t[b+8>>2];t[w+12>>2]=t[b+12>>2];b=A+4|0;o=0;n=0;while(1){if((o|0)>=(t[b>>2]|0))break;l=t[A>>2]|0;s=l+(o*40|0)|0;do{if((s|0)!=(r|0)){if(+c[l+(o*40|0)+16>>3]>0.0?+c[l+(o*40|0)+24>>3]>0.0:0)break;n=n+((ta(r,s)|0)!=0&1)|0}}while(0);o=o+1|0}na(r,k);o=t[A+24>>2]|0;o=Hn(o,t[o>>2]|0,k)|0;if(!o){t[e>>2]=n;c[e+8>>3]=0.0;v=e+16|0;t[v>>2]=t[w>>2];t[v+4>>2]=t[w+4>>2];t[v+8>>2]=t[w+8>>2];t[v+12>>2]=t[w+12>>2]}else{s=o;f=0.0;while(1){if(!s)break;l=t[(t[s+4>>2]|0)+16>>2]|0;if((l|0)!=(r|0)){fa(l,v);u=+la(k,v);if(u>0.0){n=n+1|0;f=+sa(r,l,k,u,a)+f}A=t[l+32>>2]|0;if(((A|0)!=0?(i[A+36>>0]|0)!=0:0)?(na(l,v),d=+la(k,v),d>0.0):0){n=n+1|0;f=+ca(r,l,k,d,a)+f}}s=t[s>>2]|0}Vn(o);t[e>>2]=n;c[e+8>>3]=f;v=e+16|0;t[v>>2]=t[w>>2];t[v+4>>2]=t[w+4>>2];t[v+8>>2]=t[w+8>>2];t[v+12>>2]=t[w+12>>2]}h=g;return}function ta(e,A){e=e|0;A=A|0;var r=0.0,i=0.0,a=0.0,n=0.0;e=t[e+32>>2]|0;if(+c[A+16>>3]==0.0?+c[A+24>>3]==0.0:0){if((((e|0)!=0?(r=+c[A>>3],i=+c[e+16>>3],r>i):0)?r<+c[e>>3]+i:0)?(a=+c[A+8>>3],n=+c[e+24>>3],a>n):0)e=a<+c[e+8>>3]+n&1;else e=0;return e|0}ge(111599,111543,219,111636);return 0}function na(e,A){e=e|0;A=A|0;var r=0.0,i=0.0;e=t[e+32>>2]|0;i=+c[e+16>>3];t[A>>2]=~~i;r=+c[e+24>>3];t[A+4>>2]=~~r;t[A+8>>2]=~~(+c[e>>3]+i);t[A+12>>2]=~~(+c[e+8>>3]+r);return}function fa(e,A){e=e|0;A=A|0;var r=0.0,i=0.0;i=+c[e>>3];t[A>>2]=~~i;r=+c[e+8>>3];t[A+4>>2]=~~r;t[A+8>>2]=~~(+c[e+16>>3]+i);t[A+12>>2]=~~(+c[e+24>>3]+r);return}function la(e,A){e=e|0;A=A|0;var r=0.0,i=0,a=0,n=0,f=0,l=0,s=0,c=0,o=0;l=t[e+8>>2]|0;s=t[A>>2]|0;if((((l|0)>=(s|0)?(c=t[e>>2]|0,o=t[A+8>>2]|0,(c|0)<=(o|0)):0)?(i=t[e+12>>2]|0,a=t[A+4>>2]|0,(i|0)>=(a|0)):0)?(n=t[e+4>>2]|0,f=t[A+12>>2]|0,(n|0)<=(f|0)):0)r=(+(t[((i|0)<(f|0)?e:A)+12>>2]|0)-+(t[((n|0)>(a|0)?e:A)+4>>2]|0))*(+(t[((l|0)<(o|0)?e:A)+8>>2]|0)-+(t[((c|0)>(s|0)?e:A)>>2]|0));else r=0.0;return+r}function sa(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=+i;a=a|0;var n=0.0,f=0.0,l=0,s=0;s=h;h=h+16|0;l=s;e=oa(e,A)|0;a=a+(((e|0)<0?5:e)<<2)|0;e=t[a>>2]|0;if(!e){t[a>>2]=A;n=i}else{fa(e,l);n=+la(r,l);n=n>i?n:0.0;e=t[a>>2]|0;if((t[e+32>>2]|0)!=0?(na(e,l),f=+la(r,l),f>i):0)n=f>n?f:n;if(!(n>0.0)){t[a>>2]=A;n=i}}h=s;return+n}function ca(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=+i;a=a|0;var n=0.0,f=0.0,l=0,s=0;s=h;h=h+16|0;l=s;e=oa(e,A)|0;a=a+(((e|0)<0?5:e)<<2)|0;e=t[a>>2]|0;if(!e){t[a>>2]=A;n=i}else{fa(e,l);n=+la(r,l);n=n>i?n:0.0;e=t[a>>2]|0;if((t[e+32>>2]|0)!=0?(na(e,l),f=+la(r,l),f>i):0)n=f>n?f:n;if(!(n>0.0)){t[a>>2]=A;n=i}}h=s;return+n}function oa(e,A){e=e|0;A=A|0;var r=0,a=0,n=0.0,f=0.0,l=0.0,s=0.0;r=t[e+32>>2]|0;a=t[A+32>>2]|0;if((r|0)==(a|0))ge(111578,111543,276,111588);do{if((i[r+36>>0]|0)!=0?(i[a+36>>0]|0)!=0:0){l=+c[e>>3];if(l==0.0?+c[e+8>>3]==0.0:0){r=-1;break}s=+c[A>>3];f=+c[A+8>>3];if(!(s==0.0&f==0.0)){n=+c[e+8>>3];if(fl?2:1;break}r=sn){if(r){r=6;break}r=s>l?8:7;break}if(!r)if(s>l)r=5;else r=-1;else r=3}else r=-1}else r=-1}while(0);return r|0}function ua(e){e=e|0;var A=0,r=0,i=0,a=0,n=0,f=0,l=0,s=0,c=0,o=0,u=0,b=0;c=h;h=h+32|0;r=c+24|0;i=c+16|0;a=c;n=qi(e)|0;f=e+4|0;l=i+4|0;s=e+20|0;A=0;while(1){if((A|0)>=(t[f>>2]|0)){A=0;break}o=KF(32)|0;b=(t[e>>2]|0)+(A*40|0)|0;u=o+12|0;t[o+28>>2]=b;wa(a,b);t[u>>2]=t[a>>2];t[u+4>>2]=t[a+4>>2];t[u+8>>2]=t[a+8>>2];t[u+12>>2]=t[a+12>>2];u=t[u>>2]|0;t[i>>2]=(((t[o+20>>2]|0)-u|0)/2|0)+u;u=t[o+16>>2]|0;t[l>>2]=(((t[o+24>>2]|0)-u|0)/2|0)+u;t[r>>2]=t[i>>2];t[r+4>>2]=t[i+4>>2];t[o+8>>2]=ka(r,n)|0;u=t[s>>2]|0;if(!(L5[t[u>>2]&63](u,o,1)|0)){A=-1;break}else A=A+1|0}h=c;return A|0}function ba(e){e=e|0;var A=0,r=0,i=0;r=e+20|0;i=t[r>>2]|0;A=e+24|0;e=L5[t[i>>2]&63](i,0,128)|0;while(1){if(!e)break;i=t[A>>2]|0;Pn(i,e+12|0,t[e+28>>2]|0,i,0)|0;i=t[r>>2]|0;e=L5[t[i>>2]&63](i,e,8)|0}return}function ha(e){e=e|0;var A=0,r=0,i=0,a=0,n=0,f=0;i=e+20|0;a=Oh(t[i>>2]|0)|0;r=0;while(1){if(!(Oh(t[i>>2]|0)|0))break;n=t[i>>2]|0;e=t[(t[n+8>>2]|0)+4>>2]|0;if(!e){f=8;break}A=t[(t[n+4>>2]|0)+8>>2]|0;if((A|0)<0)e=t[e+8>>2]|0;else e=e+(0-A)|0;if(!e){f=8;break}L5[t[n>>2]&63](n,e,4096)|0;G2(e);r=r+1|0}if((f|0)==8)ge(111649,111543,616,111652);if((a|0)==(r|0))return;else ge(111664,111543,623,111652)}function wa(e,A){e=e|0;A=A|0;var r=0,i=0.0,a=0.0,n=0.0,f=0,l=0,s=0,o=0.0;r=t[A+32>>2]|0;if(!r){i=0.0;a=0.0}else{i=+c[r>>3];a=+c[r+8>>3]}o=+c[A>>3];s=~~+L(+(o-i));n=+c[A+8>>3];l=~~+L(+(n-a));f=~~+H(+(o+i+ +c[A+16>>3]));if((f|0)==2147483647)ge(111676,111543,264,111703);r=~~+H(+(n+a+ +c[A+24>>3]));if((r|0)==2147483647)ge(111713,111543,266,111703);else{t[e>>2]=s;t[e+4>>2]=l;t[e+8>>2]=f;t[e+12>>2]=r;return}}function ka(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0,f=0,l=0;a=0;i=t[e>>2]|0;r=t[e+4>>2]|0;while(1){e=A+-1|0;if((A|0)<=0)break;l=i>>>e&1;A=r>>>e&1;n=A+-1|0;f=n&(i^r);n=n&0-l;a=l<<1|a<<2|l^A;A=e;i=f^i^n;r=f^r^n}return a|0}function da(e){e=e|0;var A=0,r=0,a=0,n=0;A=U2(e)|0;if(A>>>0>=(t[47365]|0)>>>0){A=A+11|0;t[47365]=A;A=AM(t[47366]|0,A)|0;t[47366]=A;if(!A)A=0;else r=4}else{A=t[47366]|0;r=4}if((r|0)==4){n=A;while(1){r=i[e>>0]|0;if(!(r<<24>>24))break;a=r&255;if(x1(a)|0)r=(R1(a)|0)&255;i[n>>0]=r;n=n+1|0;e=e+1|0}i[n>>0]=0}return A|0}function va(e,A,r){e=e|0;A=A|0;r=r|0;var a=0.0,f=0,l=0.0,s=0.0,o=0,u=0,b=0,w=0,k=0,d=0,v=0,g=0,m=0,p=0,E=0,B=0,y=0,C=0,I=0,Z=0,G=0,L=0,Q=0,D=0,z=0.0;D=h;h=h+144|0;v=D+96|0;w=D+80|0;p=D+124|0;g=D+72|0;E=D+64|0;B=D+56|0;G=D+48|0;L=D+40|0;Q=D+32|0;y=D+24|0;C=D+16|0;I=D+8|0;Z=D;f=D+120|0;o=D+116|0;u=D+112|0;b=D+108|0;t[A+32>>2]=r;d=e;while(1)if((i[d>>0]|0)==32)d=d+1|0;else break;t[b>>2]=255;e=i[d>>0]|0;e:do{if(e<<24>>24==35){t[w>>2]=f;t[w+4>>2]=o;t[w+8>>2]=u;t[w+12>>2]=b;if((V3(d,111755,w)|0)<=2){e=i[d>>0]|0;k=12;break}switch(r|0){case 0:{z=+((t[f>>2]|0)>>>0)*.00392156862745098;c[G>>3]=z;a=+((t[o>>2]|0)>>>0)*.00392156862745098;c[L>>3]=a;l=+((t[u>>2]|0)>>>0)*.00392156862745098;c[Q>>3]=l;s=+((t[b>>2]|0)>>>0)*.00392156862745098;ga(z,a,l,g,E,B);c[A>>3]=+c[g>>3];c[A+8>>3]=+c[E>>3];c[A+16>>3]=+c[B>>3];c[A+24>>3]=s;e=0;break e}case 1:{i[A>>0]=t[f>>2];i[A+1>>0]=t[o>>2];i[A+2>>0]=t[u>>2];i[A+3>>0]=t[b>>2];e=0;break e}case 3:{l=+((t[f>>2]|0)>>>0)*.00392156862745098;c[G>>3]=l;s=+((t[o>>2]|0)>>>0)*.00392156862745098;c[L>>3]=s;z=+((t[u>>2]|0)>>>0)*.00392156862745098;c[Q>>3]=z;ma(l,s,z,y,C,I,Z);i[A>>0]=~~+c[y>>3]*255;i[A+1>>0]=~~+c[C>>3]*255;i[A+2>>0]=~~+c[I>>3]*255;i[A+3>>0]=~~+c[Z>>3]*255;e=0;break e}case 2:{t[A>>2]=(((t[f>>2]|0)*65535|0)>>>0)/255|0;t[A+4>>2]=(((t[o>>2]|0)*65535|0)>>>0)/255|0;t[A+8>>2]=(((t[u>>2]|0)*65535|0)>>>0)/255|0;t[A+12>>2]=(((t[b>>2]|0)*65535|0)>>>0)/255|0;e=0;break e}case 4:{c[A>>3]=+((t[f>>2]|0)>>>0)*.00392156862745098;c[A+8>>3]=+((t[o>>2]|0)>>>0)*.00392156862745098;c[A+16>>3]=+((t[u>>2]|0)>>>0)*.00392156862745098;c[A+24>>3]=+((t[b>>2]|0)>>>0)*.00392156862745098;e=0;break e}default:{e=0;break e}}}else k=12}while(0);e:do{if((k|0)==12){if(!(e<<24>>24!=46?((e&255)+-48|0)>>>0>=10:0)){e=U2(d)|0;if(e>>>0>=(t[47367]|0)>>>0){e=e+11|0;t[47367]=e;e=AM(t[47368]|0,e)|0;t[47368]=e;if(!e){e=-1;break}}else e=t[47368]|0;o=e;f=d;A:while(1){u=f+1|0;f=i[f>>0]|0;switch(f<<24>>24){case 0:break A;case 44:{f=32;break}default:{}}i[o>>0]=f;o=o+1|0;f=u}i[o>>0]=0;t[v>>2]=g;t[v+4>>2]=E;t[v+8>>2]=B;if((V3(e,111769,v)|0)==3){s=+c[g>>3];s=s<1.0?s:1.0;s=s>0.0?s:0.0;c[g>>3]=s;l=+c[E>>3];l=l<1.0?l:1.0;l=l>0.0?l:0.0;c[E>>3]=l;a=+c[B>>3];a=a<1.0?a:1.0;a=a>0.0?a:0.0;c[B>>3]=a;switch(r|0){case 0:{c[A>>3]=s;c[A+8>>3]=l;c[A+16>>3]=a;c[A+24>>3]=1.0;e=0;break e}case 1:{pa(s,l,a,G,L,Q);i[A>>0]=~~(+c[G>>3]*255.0);i[A+1>>0]=~~(+c[L>>3]*255.0);i[A+2>>0]=~~(+c[Q>>3]*255.0);i[A+3>>0]=-1;e=0;break e}case 3:{pa(s,l,a,G,L,Q);ma(+c[G>>3],+c[L>>3],+c[Q>>3],y,C,I,Z);i[A>>0]=~~+c[y>>3]*255;i[A+1>>0]=~~+c[C>>3]*255;i[A+2>>0]=~~+c[I>>3]*255;i[A+3>>0]=~~+c[Z>>3]*255;e=0;break e}case 2:{pa(s,l,a,G,L,Q);t[A>>2]=~~(+c[G>>3]*65535.0);t[A+4>>2]=~~(+c[L>>3]*65535.0);t[A+8>>2]=~~(+c[Q>>3]*65535.0);t[A+12>>2]=65535;e=0;break e}case 4:{pa(s,l,a,G,L,Q);c[A>>3]=+c[G>>3];c[A+8>>3]=+c[L>>3];c[A+16>>3]=+c[Q>>3];c[A+24>>3]=1.0;e=0;break e}default:{e=0;break e}}}}f=Ea(d)|0;t[p>>2]=f;if(!f)e=-1;else{e=t[47369]|0;if(!(((e|0)!=0?(m=t[e>>2]|0,(i[m>>0]|0)==(i[f>>0]|0)):0)?(e1(m,f)|0)==0:0)){e=r8(p,25948,2491,12,103)|0;t[47369]=e;if(!e)switch(r|0){case 0:{t[A>>2]=0;t[A+4>>2]=0;t[A+8>>2]=0;t[A+12>>2]=0;t[A+16>>2]=0;t[A+20>>2]=0;c[A+24>>3]=1.0;e=1;break e}case 1:{i[A+2>>0]=0;i[A+1>>0]=0;i[A>>0]=0;i[A+3>>0]=-1;e=1;break e}case 3:{t[A>>2]=0;e=1;break e}case 2:{t[A+8>>2]=0;t[A+4>>2]=0;t[A>>2]=0;t[A+12>>2]=65535;e=1;break e}case 4:{t[A>>2]=0;t[A+4>>2]=0;t[A+8>>2]=0;t[A+12>>2]=0;t[A+16>>2]=0;t[A+20>>2]=0;c[A+24>>3]=1.0;e=1;break e}default:{e=1;break e}}}switch(r|0){case 0:{c[A>>3]=+(n[e+4>>0]|0)*.00392156862745098;c[A+8>>3]=+(n[e+5>>0]|0)*.00392156862745098;c[A+16>>3]=+(n[e+6>>0]|0)*.00392156862745098;c[A+24>>3]=+(n[e+10>>0]|0)*.00392156862745098;e=0;break e}case 1:{i[A>>0]=i[e+7>>0]|0;i[A+1>>0]=i[e+8>>0]|0;i[A+2>>0]=i[e+9>>0]|0;i[A+3>>0]=i[e+10>>0]|0;e=0;break e}case 3:{l=+(n[e+7>>0]|0)*.00392156862745098;c[G>>3]=l;s=+(n[e+8>>0]|0)*.00392156862745098;c[L>>3]=s;z=+(n[e+9>>0]|0)*.00392156862745098;c[Q>>3]=z;ma(l,s,z,y,C,I,Z);i[A>>0]=~~+c[y>>3]*255;i[A+1>>0]=~~+c[C>>3]*255;i[A+2>>0]=~~+c[I>>3]*255;i[A+3>>0]=~~+c[Z>>3]*255;e=0;break e}case 2:{t[A>>2]=(n[e+7>>0]|0)*257;t[A+4>>2]=(n[e+8>>0]|0)*257;t[A+8>>2]=(n[e+9>>0]|0)*257;t[A+12>>2]=(n[e+10>>0]|0)*257;e=0;break e}case 4:{c[A>>3]=+(n[e+7>>0]|0)*.00392156862745098;c[A+8>>3]=+(n[e+8>>0]|0)*.00392156862745098;c[A+16>>3]=+(n[e+9>>0]|0)*.00392156862745098;c[A+24>>3]=+(n[e+10>>0]|0)*.00392156862745098;e=0;break e}default:{e=0;break e}}}}}while(0);h=D;return e|0}function ga(e,A,r,i,a,t){e=+e;A=+A;r=+r;i=i|0;a=a|0;t=t|0;var n=0.0,f=0.0,l=0.0,s=0.0,o=0.0,u=0.0;f=Ar?A:r;u=ue?e:f);n=f/u;if(u>0.0)if(n>0.0){l=(u-e)/f;s=(u-A)/f;o=(u-r)/f;do{if(!(u==e)){if(u==A){e=l+2.0-o;break}if(u==r)e=s+4.0-l;else e=0.0}else e=(A-r)/f}while(0);e=e*60.0;if(e<0.0)e=e+360.0}else e=0.0;else{n=0.0;e=0.0}c[i>>3]=e*.002777777777777778;c[t>>3]=u;c[a>>3]=n;return}function ma(e,A,r,i,a,t,n){e=+e;A=+A;r=+r;i=i|0;a=a|0;t=t|0;n=n|0;c[i>>3]=1.0-e;c[a>>3]=1.0-A;c[t>>3]=1.0-r;A=+c[i>>3];r=+c[a>>3];r=A>3]=r;A=+c[t>>3];r=A>3]=r;c[i>>3]=+c[i>>3]-r;c[a>>3]=+c[a>>3]-+c[n>>3];c[t>>3]=+c[t>>3]-+c[n>>3];return}function pa(e,A,r,i,a,t){e=+e;A=+A;r=+r;i=i|0;a=a|0;t=t|0;var n=0.0,f=0.0,l=0.0,s=0,o=0;e:do{if(!(A<=0.0)){f=!(e>=1.0)?e*6.0:0.0;o=~~f;f=f-+(o|0);e=(1.0-A)*r;l=(1.0-f*A)*r;A=(1.0-(1.0-f)*A)*r;switch(o|0){case 0:{n=e;f=A;e=r;s=8;break e}case 1:{n=e;f=r;e=l;s=8;break e}case 2:{n=A;f=r;s=8;break e}case 3:{n=r;f=l;s=8;break e}case 4:{n=r;f=e;e=A;s=8;break e}case 5:{n=l;f=e;e=r;s=8;break e}default:break e}}else{n=r;f=r;e=r;s=8}}while(0);if((s|0)==8){c[i>>3]=e;c[a>>3]=f;c[t>>3]=n}return}function Ea(e){e=e|0;var A=0,r=0;A=i[e>>0]|0;if(((A<<24>>24!=98?(r=e+1|0,!(A<<24>>24==119|(y1(r,137266,4)|0)==0)):0)?!(A<<24>>24==108|(y1(r,137271,4)|0)==0):0)?(y1(r,137276,8)|0)!=0:0){do{if(A<<24>>24==47){A=C1(r,47)|0;if(!A)e=r;else{if((i[r>>0]|0)!=47){r=(S1(137285,r,4)|0)==0;e=r?A+1|0:e;break}A=t[47370]|0;if((A|0?i[A>>0]|0:0)?S1(137285,A,3)|0:0){e=ya(A,e+2|0)|0;break}e=e+2|0}}else{A=t[47370]|0;if(((A|0)!=0?(i[A>>0]|0)!=0:0)?(S1(137285,A,3)|0)!=0:0)e=ya(A,e)|0}}while(0);e=da(e)|0}return e|0}function Ba(e,A){e=e|0;A=A|0;return N1(t[e>>2]|0,t[A>>2]|0)|0}function ya(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0;a=h;h=h+16|0;i=a;n=U2(e)|0;n=(U2(A)|0)+n|0;r=n+13|0;if((n+3|0)>>>0<(t[47371]|0)>>>0)r=t[47372]|0;else{t[47371]=r;r=AM(t[47372]|0,r)|0;t[47372]=r}t[i>>2]=e;t[i+4>>2]=A;T4(r,137290,i)|0;h=a;return t[47372]|0}function Ca(e){e=e|0;t[47370]=e;return}function Ia(e,A,r,i,a){e=e|0;A=+A;r=+r;i=+i;a=+a;var t=0,n=0;t=h;h=h+208|0;n=t;Za(n,+c[e>>3],+c[e+8>>3],A,r,i,a);e=Ga(n)|0;h=t;return e|0}function Za(e,A,r,i,a,t,n){e=e|0;A=+A;r=+r;i=+i;a=+a;t=+t;n=+n;var f=0,l=0;c[e>>3]=A;c[e+8>>3]=r;l=e+16|0;c[l>>3]=i;f=e+24|0;c[f>>3]=a;c[e+32>>3]=0.0;r=+R(+(+Y(+t)/a),+(+W(+t)/i));c[e+56>>3]=r;a=+R(+(+Y(+n)/a),+(+W(+n)/i));c[e+40>>3]=1.0;c[e+48>>3]=0.0;a=a-+L(+((a-r)*.15915494309189535))*6.283185307179586;c[e+64>>3]=n-t>3.141592653589793&a-r<3.141592653589793?a+6.283185307179586:a;Ya(e);Fa(e);Ma(e);n=+c[l>>3];n=(n-+c[f>>3])/n;c[e+168>>3]=n;c[e+176>>3]=(2.0-n)*n;n=1.0-n;c[e+184>>3]=n;c[e+192>>3]=n*n;return}function Ga(e){e=e|0;var A=0,r=0.0,i=0,a=0.0,t=0.0,n=0.0,f=0.0,l=0,s=0,o=0,u=0,b=0.0,h=0.0,w=0,k=0,d=0.0,v=0.0,g=0.0,m=0.0,p=0.0,E=0.0,B=0.0,y=0.0,C=0.0;k=KF(8)|0;t=+c[e+56>>3];a=+c[e+64>>3]-t;w=1;A=0;while(1){h=a/+(w|0);if(!(A<<24>>24==0&(w|0)<1024))break;e:do{if(!(h<=1.5707963267948966))A=0;else{r=t;i=0;A=1;while(1){if(!(A<<24>>24!=0&(i|0)<(w|0)))break e;b=r+h;A=+La(e,r,b)<=1.0e-05&1;r=b;i=i+1|0}}}while(0);w=w<<1}f=+W(+t);m=+Y(+t);i=e+16|0;v=+c[i>>3];p=v*f;l=e+24|0;r=+c[l>>3];n=r*m;f=r*f;r=+c[e>>3];s=e+40|0;g=+c[s>>3];o=e+48|0;d=+c[o>>3];a=g*p+r-d*n;u=e+8|0;b=+c[u>>3];n=d*p+g*n+b;v=-(m*v);Qa(k,r,b);Da(k,a,n);b=+F(+(h*.5));b=+Y(+h)*.3333333333333333*(+D(+(b*b*3.0+4.0))+-1.0);r=t;t=n;n=d*v+g*f;f=g*v-d*f;A=0;while(1){if((A|0)>=(w|0))break;d=r+h;m=+W(+d);p=+Y(+d);B=+c[i>>3];C=B*m;E=+c[l>>3];g=E*p;m=E*m;E=+c[s>>3];y=+c[o>>3];v=E*C+ +c[e>>3]-y*g;g=y*C+E*g+ +c[u>>3];B=-(p*B);p=E*B-y*m;m=y*B+E*m;za(k,a+f*b,t+n*b,v-p*b,g-m*b,v,g);r=d;a=v;t=g;n=m;f=p;A=A+1|0}Wa(k);return k|0}function La(e,A,r){e=e|0;A=+A;r=+r;var i=0.0,a=0.0,t=0.0,n=0.0,f=0.0;i=r+A;f=+c[e+16>>3];a=+c[e+24>>3]/f;n=+W(+i);t=+W(+(i*2.0));i=+W(+(i*3.0));e=a<.25?10392:10648;return+(((a*.001+4.98)*a+.207)/(a+.0067)*f*+x(+(((+c[e+32>>3]*a+ +c[e+40>>3])*a+ +c[e+48>>3])/(+c[e+56>>3]+a)*n+((+c[e>>3]*a+ +c[e+8>>3])*a+ +c[e+16>>3])/(+c[e+24>>3]+a)+((+c[e+64>>3]*a+ +c[e+72>>3])*a+ +c[e+80>>3])/(+c[e+88>>3]+a)*t+((+c[e+96>>3]*a+ +c[e+104>>3])*a+ +c[e+112>>3])/(+c[e+120>>3]+a)*i+(((+c[e+160>>3]*a+ +c[e+168>>3])*a+ +c[e+176>>3])/(+c[e+184>>3]+a)*n+((+c[e+128>>3]*a+ +c[e+136>>3])*a+ +c[e+144>>3])/(+c[e+152>>3]+a)+((+c[e+192>>3]*a+ +c[e+200>>3])*a+ +c[e+208>>3])/(+c[e+216>>3]+a)*t+((+c[e+224>>3]*a+ +c[e+232>>3])*a+ +c[e+240>>3])/(+c[e+248>>3]+a)*i)*(r-A))))}function Qa(e,A,r){e=e|0;A=+A;r=+r;var i=0;t[47373]=100;i=KF(1600)|0;t[e>>2]=i;c[i>>3]=A;c[i+8>>3]=r;t[e+4>>2]=1;return}function Da(e,A,r){e=e|0;A=+A;r=+r;var i=0,a=0;a=t[e>>2]|0;i=(t[e+4>>2]|0)+-1|0;za(e,+c[a+(i<<4)>>3],+c[a+(i<<4)+8>>3],A,r,A,r);return}function za(e,A,r,i,a,n,f){e=e|0;A=+A;r=+r;i=+i;a=+a;n=+n;f=+f;var l=0,s=0,o=0,u=0;o=e+4|0;l=t[o>>2]|0;s=t[47373]|0;if((l+3|0)<(s|0))e=t[e>>2]|0;else{t[47373]=s<<1;l=Q2(t[e>>2]|0,s<<5)|0;t[e>>2]=l;e=l;l=t[o>>2]|0}c[e+(l<<4)>>3]=A;u=l+1|0;c[e+(l<<4)+8>>3]=r;c[e+(u<<4)>>3]=i;s=l+2|0;c[e+(u<<4)+8>>3]=a;c[e+(s<<4)>>3]=n;t[o>>2]=l+3;c[e+(s<<4)+8>>3]=f;return}function Wa(e){e=e|0;var A=0;A=t[e>>2]|0;Da(e,+c[A>>3],+c[A+8>>3]);t[e>>2]=Q2(t[e>>2]|0,t[e+4>>2]<<4)|0;t[47373]=0;return}function Ya(e){e=e|0;var A=0.0,r=0.0,i=0.0,a=0.0;i=+c[e+16>>3];A=+c[e+24>>3];A=+D(+(i*i-A*A));i=A*+c[e+40>>3];A=A*+c[e+48>>3];a=+c[e>>3];c[e+104>>3]=a-i;r=+c[e+8>>3];c[e+112>>3]=r-A;c[e+120>>3]=a+i;c[e+128>>3]=r+A;return}function Fa(e){e=e|0;var A=0.0,r=0.0,i=0.0,a=0.0,t=0.0,n=0.0,f=0.0,l=0.0;i=+c[e+16>>3];f=+c[e+56>>3];l=+W(+f)*i;A=+c[e+24>>3];f=+Y(+f)*A;n=+c[e+64>>3];i=+W(+n)*i;A=+Y(+n)*A;n=+c[e>>3];r=+c[e+40>>3];a=+c[e+48>>3];c[e+72>>3]=r*l+n-a*f;t=+c[e+8>>3];c[e+80>>3]=a*l+t+r*f;c[e+88>>3]=n+r*i-a*A;c[e+96>>3]=t+a*i+r*A;return}function Ma(e){e=e|0;var A=0.0,r=0.0,i=0.0,a=0.0,t=0.0,n=0.0,f=0.0,l=0.0,s=0.0,o=0.0,u=0.0,b=0;s=+c[e+24>>3];o=+c[e+16>>3];a=s/o;u=+c[e+48>>3];b=+Q(+u)<.1;l=+c[e+40>>3];do{if(b){A=u/l;r=+N(+(A*a));i=-r;if(l<0.0){A=+N(+(A/a));a=i;i=3.141592653589793-r;r=4.71238898038469-A;A=1.5707963267948966-A;break}else{A=+N(+(A/a));a=-3.141592653589793-r;r=1.5707963267948966-A;A=-1.5707963267948966-A;break}}else{A=l/u;r=+N(+(A/a));i=r+1.5707963267948966;if(u<0.0){A=+N(+(A*a));a=r+-1.5707963267948966;r=A+3.141592653589793;break}else{A=+N(+(A*a));a=i;i=r+4.71238898038469;r=A;A=A+-3.141592653589793;break}}}while(0);n=+c[e+56>>3];a=a-+L(+((a-n)*.15915494309189535))*6.283185307179586;A=A-+L(+((A-n)*.15915494309189535))*6.283185307179586;t=i-+L(+((i-n)*.15915494309189535))*6.283185307179586;n=r-+L(+((r-n)*.15915494309189535))*6.283185307179586;f=+c[e+64>>3];if(!(a<=f)){a=+c[e+72>>3];r=+c[e+88>>3];r=a>3]-s*+Y(+a)*u;c[e+136>>3]=r;if(!(A<=f)){a=+c[e+80>>3];i=+c[e+96>>3];i=a>3]+ +Y(+A)*s*l;c[e+144>>3]=i;if(!(t<=f)){t=+c[e+72>>3];A=+c[e+88>>3];A=t>A?t:A}else A=+W(+t)*o*l+ +c[e>>3]-s*+Y(+t)*u;c[e+152>>3]=A-r;if(!(n<=f)){u=+c[e+80>>3];A=+c[e+96>>3];A=u>A?u:A}else A=+W(+n)*o*u+ +c[e+8>>3]+ +Y(+n)*s*l;c[e+160>>3]=A-i;return}function Va(e,A,r){e=e|0;A=A|0;r=r|0;var a=0,n=0.0,f=0,l=0,s=0.0,o=0,u=0;u=h;h=h+80|0;o=u;Na(e);s=+c[r+56>>3];n=+c[r+64>>3];switch(i[r+80>>0]|0){case 116:{n=(+c[r+48>>3]-+Ra(A))*.5+n;a=4;break}case 98:{n=n-(+c[r+48>>3]-+Ra(A))*.5;a=4;break}default:{}}if((a|0)==4)n=n+-1.0;c[o>>3]=s;c[o+8>>3]=n;t[o+20>>2]=t[r+8>>2];t[o+16>>2]=t[r+4>>2];c[o+32>>3]=+c[r+16>>3];l=e+16|0;a=Hw(t[(t[l>>2]|0)+8>>2]|0,137297)|0;r=o+56|0;t[r>>2]=a;f=o+60|0;t[f>>2]=t[(t[l>>2]|0)+212>>2];l=o+64|0;i[l>>0]=0;if(!((a|0)!=0?(i[a>>0]|0)!=0:0))t[r>>2]=137308;if((i[A+4>>0]|0)==1){r=t[A>>2]|0;ii(e,t[(t[e>>2]|0)+336>>2]|0);a=t[r+24>>2]|0;if(!a)$r(e,137314);else $r(e,a);Ja(e,r,o);if(i[l>>0]|0)G2(t[f>>2]|0)}else xa(e,t[A>>2]|0,o);Ha(e);h=u;return}function Na(e){e=e|0;var A=0,r=0,i=0;A=eB(e)|0;r=t[A>>2]|0;e=t[r+4>>2]|0;t[A+4>>2]=e;t[A+12>>2]=t[r+12>>2];switch(e|0){case 2:{e=r+8|0;i=6;break}case 0:{e=r+8|0;i=6;break}case 1:{e=r+8|0;i=6;break}case 3:{e=r+8|0;i=6;break}default:{}}if((i|0)==6)t[A+8>>2]=t[e>>2];t[A+208>>2]=t[r+208>>2];t[A+228>>2]=t[r+228>>2];t[A+244>>2]=t[r+244>>2];i=A+260|0;a[i>>1]=a[i>>1]&-2|a[r+260>>1]&1;return}function Ra(e){e=e|0;var A=0.0,r=0,a=0;switch(i[e+4>>0]|0){case 1:{r=t[e>>2]|0;e=r+72|0;r=r+56|0;a=5;break}case 3:{r=t[e>>2]|0;e=r+24|0;r=r+8|0;a=5;break}case 2:{r=t[e>>2]|0;e=r+32|0;r=r+16|0;a=5;break}default:A=0.0}if((a|0)==5)A=+c[e>>3]-+c[r>>3];return+A}function xa(e,A,r){e=e|0;A=A|0;r=r|0;var n=0,f=0,l=0,s=0,o=0,u=0,b=0.0,w=0.0,k=0,d=0,v=0;u=h;h=h+96|0;l=u+64|0;f=u+32|0;n=u+16|0;s=u;o=a[A+4>>1]|0;if(o<<16>>16>=1){d=A+8|0;w=+c[A+24>>3];b=+c[d>>3];c[s>>3]=(b+w)*.5+ +c[r>>3];c[s+8>>3]=(+c[A+16>>3]+ +c[A+32>>3])*.5+ +c[r+8>>3];k=t[A>>2]|0;v=r+16|0;r=i[A+6>>0]|0;t[n>>2]=t[s>>2];t[n+4>>2]=t[s+4>>2];t[n+8>>2]=t[s+8>>2];t[n+12>>2]=t[s+12>>2];t[f>>2]=t[v>>2];t[f+4>>2]=t[v+4>>2];t[f+8>>2]=t[v+8>>2];t[f+12>>2]=t[v+12>>2];t[f+16>>2]=t[v+16>>2];t[f+20>>2]=t[v+20>>2];t[f+24>>2]=t[v+24>>2];t[f+28>>2]=t[v+28>>2];t[l>>2]=t[d>>2];t[l+4>>2]=t[d+4>>2];t[l+8>>2]=t[d+8>>2];t[l+12>>2]=t[d+12>>2];t[l+16>>2]=t[d+16>>2];t[l+20>>2]=t[d+20>>2];t[l+24>>2]=t[d+24>>2];t[l+28>>2]=t[d+28>>2];et(e,o<<16>>16,k,n,(w-b)*.5,f,l,r)}h=u;return}function Ja(e,A,r){e=e|0;A=A|0;r=r|0;var f=0,l=0,s=0,o=0.0,u=0.0,b=0,w=0,k=0,d=0,v=0,g=0,m=0,p=0,E=0,B=0,y=0;y=h;h=h+176|0;g=y+96|0;p=y+64|0;E=y+136|0;w=y;k=y+128|0;d=A+48|0;t[p>>2]=t[d>>2];t[p+4>>2]=t[d+4>>2];t[p+8>>2]=t[d+8>>2];t[p+12>>2]=t[d+12>>2];t[p+16>>2]=t[d+16>>2];t[p+20>>2]=t[d+20>>2];t[p+24>>2]=t[d+24>>2];t[p+28>>2]=t[d+28>>2];o=+c[r>>3];u=+c[r+8>>3];d=A+84|0;f=t[d>>2]|0;if(!(t[A>>2]|0))B=(t[A+8>>2]|0)!=0;else B=1;m=A+108|0;l=t[m>>2]|0;if(l|0)Pa(r,l,186544);c[p>>3]=+c[p>>3]+o;v=p+16|0;c[v>>3]=+c[v>>3]+o;v=p+8|0;c[v>>3]=+c[v>>3]+u;v=p+24|0;c[v>>3]=+c[v>>3]+u;if(B?(t[e+152>>2]&4|0)==0:0){t[g>>2]=t[p>>2];t[g+4>>2]=t[p+4>>2];t[g+8>>2]=t[p+8>>2];t[g+12>>2]=t[p+12>>2];t[g+16>>2]=t[p+16>>2];t[g+20>>2]=t[p+20>>2];t[g+24>>2]=t[p+24>>2];t[g+28>>2]=t[p+28>>2];v=Xa(e,r,A,g,E)|0}else v=0;b=A+42|0;l=a[b>>1]|0;if(!(l&32)){s=t[A+20>>2]|0;if(s){l=Sa(e,s,t[A+28>>2]|0,l&65535,k)|0;if(!(a[b>>1]&4)){t[g>>2]=t[p>>2];t[g+4>>2]=t[p+4>>2];t[g+8>>2]=t[p+8>>2];t[g+12>>2]=t[p+12>>2];t[g+16>>2]=t[p+16>>2];t[g+20>>2]=t[p+20>>2];t[g+24>>2]=t[p+24>>2];t[g+28>>2]=t[p+28>>2];ni(e,g,l)}else{b=n[A+33>>0]|0;t[g>>2]=t[p>>2];t[g+4>>2]=t[p+4>>2];t[g+8>>2]=t[p+8>>2];t[g+12>>2]=t[p+12>>2];t[g+16>>2]=t[p+16>>2];t[g+20>>2]=t[p+20>>2];t[g+24>>2]=t[p+24>>2];t[g+28>>2]=t[p+28>>2];lN(e,ja(w,g,b)|0,4,4,l)}G2(t[k>>2]|0)}while(1){l=t[f>>2]|0;if(!l)break;Ua(e,l,r);f=f+4|0}f=t[d>>2]|0;ui(e,1.0);l=A+24|0;while(1){s=f+4|0;f=t[f>>2]|0;if(!f)break;if(!(i[f+100>>0]|0)){f=s;continue}Ta(e,f,r,t[l>>2]|0,t[s>>2]|0);f=s}if(i[A+33>>0]|0){t[g>>2]=t[p>>2];t[g+4>>2]=t[p+4>>2];t[g+8>>2]=t[p+8>>2];t[g+12>>2]=t[p+12>>2];t[g+16>>2]=t[p+16>>2];t[g+20>>2]=t[p+20>>2];t[g+24>>2]=t[p+24>>2];t[g+28>>2]=t[p+28>>2];Oa(e,A,g)}}if(v|0)_a(e,E);if((B?t[e+152>>2]&4|0:0)?(t[g>>2]=t[p>>2],t[g+4>>2]=t[p+4>>2],t[g+8>>2]=t[p+8>>2],t[g+12>>2]=t[p+12>>2],t[g+16>>2]=t[p+16>>2],t[g+20>>2]=t[p+20>>2],t[g+24>>2]=t[p+24>>2],t[g+28>>2]=t[p+28>>2],Xa(e,r,A,g,E)|0):0)_a(e,E);if(t[m>>2]|0)qa(r,186544);h=y;return}function Ha(e){e=e|0;var A=0;A=t[e+16>>2]|0;t[A+208>>2]=0;t[A+228>>2]=0;t[A+244>>2]=0;t[A+212>>2]=0;AB(e);return}function Pa(e,A,r){e=e|0;A=A|0;r=r|0;var i=0.0,a=0,n=0,f=0;f=e+16|0;a=t[f>>2]|0;if(a|0){if(!(t[A>>2]|0)){a=0;n=r}else{t[r>>2]=a;a=t[A>>2]|0;n=f}t[n>>2]=a}a=t[e+20>>2]|0;if(a|0){n=A+4|0;if(!(t[n>>2]|0)){a=0;n=r}else{t[r+4>>2]=a;a=t[n>>2]|0;n=f}t[n+4>>2]=a}i=+c[e+32>>3];if(i>=0.0){a=A+16|0;if(!(+c[a>>3]>=0.0))i=-1.0;else{c[r+16>>3]=i;i=+c[a>>3];r=f}c[r+16>>3]=i}return}function Xa(e,A,r,n,f){e=e|0;A=A|0;r=r|0;n=n|0;f=f|0;var l=0,s=0,c=0,o=0,u=0,b=0,w=0,k=0,d=0,v=0,g=0,m=0;m=h;h=h+224|0;u=m+8|0;c=m;g=m+40|0;s=m+184|0;l=m+56|0;o=t[e+16>>2]|0;b=o+208|0;t[f>>2]=t[b>>2];w=o+228|0;t[f+4>>2]=t[w>>2];k=o+244|0;t[f+8>>2]=t[k>>2];d=o+212|0;t[f+12>>2]=t[d>>2];v=o+260|0;i[f+16>>0]=(a[v>>1]<<15&65535)<<16>>16>>15;f=t[r+16>>2]|0;if((f|0)!=0?(i[f>>0]|0)!=0:0)l=0;else{cw(g,128,l);l=A+60|0;f=t[l>>2]|0;if(!f){f=o3(iB(e,t[o+8>>2]|0,g)|0)|0;t[l>>2]=f;i[A+64>>0]=1}bw(g,f)|0;l=t[47374]|0;t[47374]=l+1;t[c>>2]=l;T4(s,137391,c)|0;bw(g,s)|0;l=g+4|0;f=t[l>>2]|0;if(f>>>0>=(t[g+8>>2]|0)>>>0){ow(g,1)|0;f=t[l>>2]|0}i[f>>0]=0;f=t[g>>2]|0;t[l>>2]=f;l=1}f=rB(e,0,t[r>>2]|0,t[r+12>>2]|0,t[r+8>>2]|0,f,t[o+8>>2]|0)|0;if(l)hw(g);do{if(f|0){if((t[b>>2]|0)==0?(a[v>>1]&1)==0:0)break;t[u>>2]=t[n>>2];t[u+4>>2]=t[n+4>>2];t[u+8>>2]=t[n+8>>2];t[u+12>>2]=t[n+12>>2];t[u+16>>2]=t[n+16>>2];t[u+20>>2]=t[n+20>>2];t[u+24>>2]=t[n+24>>2];t[u+28>>2]=t[n+28>>2];cB(e,u);Tr(e,t[b>>2]|0,t[w>>2]|0,t[k>>2]|0,t[d>>2]|0)}}while(0);h=m;return f|0}function Sa(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;var n=0.0,f=0,l=0;l=h;h=h+16|0;f=l;if(!((KY(A,a,f)|0)<<24>>24)){Ai(e,A);A=1}else{Ai(e,t[a>>2]|0);A=t[a+4>>2]|0;n=+s[f>>2];if(!A)ri(e,137314,r,n);else ri(e,A,r,n);A=i>>>1&1|2}$r(e,137379);h=l;return A|0}function ja(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0.0,n=0.0,f=0.0,l=0.0;t[e>>2]=t[A>>2];t[e+4>>2]=t[A+4>>2];t[e+8>>2]=t[A+8>>2];t[e+12>>2]=t[A+12>>2];i=e+32|0;A=A+16|0;t[i>>2]=t[A>>2];t[i+4>>2]=t[A+4>>2];t[i+8>>2]=t[A+8>>2];t[i+12>>2]=t[A+12>>2];if((r|0)>1){l=+(r|0)*.5;f=+c[e>>3]+l;c[e>>3]=f;r=e+8|0;n=+c[r>>3]+l;c[r>>3]=n;a=+c[i>>3]-l;c[i>>3]=a;i=e+40|0;l=+c[i>>3]-l;c[i>>3]=l}else{a=+c[i>>3];n=+c[e+8>>3];f=+c[e>>3];l=+c[e+40>>3]}c[e+16>>3]=a;c[e+24>>3]=n;c[e+48>>3]=f;c[e+56>>3]=l;return e|0}function Ua(e,A,r){e=e|0;A=A|0;r=r|0;var f=0,l=0.0,s=0.0,o=0,u=0,b=0,w=0,k=0,d=0,v=0,g=0,m=0,p=0;p=h;h=h+176|0;d=p+96|0;v=p+136|0;g=p+64|0;w=p;k=p+128|0;m=A+48|0;t[g>>2]=t[m>>2];t[g+4>>2]=t[m+4>>2];t[g+8>>2]=t[m+8>>2];t[g+12>>2]=t[m+12>>2];t[g+16>>2]=t[m+16>>2];t[g+20>>2]=t[m+20>>2];t[g+24>>2]=t[m+24>>2];t[g+28>>2]=t[m+28>>2];l=+c[r>>3];s=+c[r+8>>3];if(!(t[A>>2]|0))m=(t[A+8>>2]|0)!=0;else m=1;c[g>>3]=+c[g>>3]+l;b=g+16|0;c[b>>3]=+c[b>>3]+l;b=g+8|0;c[b>>3]=+c[b>>3]+s;b=g+24|0;c[b>>3]=+c[b>>3]+s;if(m?(t[e+152>>2]&4|0)==0:0){t[d>>2]=t[g>>2];t[d+4>>2]=t[g+4>>2];t[d+8>>2]=t[g+8>>2];t[d+12>>2]=t[g+12>>2];t[d+16>>2]=t[g+16>>2];t[d+20>>2]=t[g+20>>2];t[d+24>>2]=t[g+24>>2];t[d+28>>2]=t[g+28>>2];b=Xa(e,r,A,d,v)|0}else b=0;u=A+42|0;f=a[u>>1]|0;e:do{if(!(f&32)){o=t[A+20>>2]|0;if(o|0){f=Sa(e,o,t[A+28>>2]|0,f&65535,k)|0;if(!(a[u>>1]&4)){t[d>>2]=t[g>>2];t[d+4>>2]=t[g+4>>2];t[d+8>>2]=t[g+8>>2];t[d+12>>2]=t[g+12>>2];t[d+16>>2]=t[g+16>>2];t[d+20>>2]=t[g+20>>2];t[d+24>>2]=t[g+24>>2];t[d+28>>2]=t[g+28>>2];ni(e,d,f)}else{u=n[A+33>>0]|0;t[d>>2]=t[g>>2];t[d+4>>2]=t[g+4>>2];t[d+8>>2]=t[g+8>>2];t[d+12>>2]=t[g+12>>2];t[d+16>>2]=t[g+16>>2];t[d+20>>2]=t[g+20>>2];t[d+24>>2]=t[g+24>>2];t[d+28>>2]=t[g+28>>2];lN(e,ja(w,d,u)|0,4,4,f)}G2(t[k>>2]|0)}if(i[A+33>>0]|0){t[d>>2]=t[g>>2];t[d+4>>2]=t[g+4>>2];t[d+8>>2]=t[g+8>>2];t[d+12>>2]=t[g+12>>2];t[d+16>>2]=t[g+16>>2];t[d+20>>2]=t[g+20>>2];t[d+24>>2]=t[g+24>>2];t[d+28>>2]=t[g+28>>2];Oa(e,A,d)}f=A+88|0;switch(i[A+92>>0]|0){case 1:{Ja(e,t[f>>2]|0,r);break e}case 3:{$a(e,t[f>>2]|0,r);break e}default:{xa(e,t[f>>2]|0,r);break e}}}}while(0);if(b|0)_a(e,v);if((m?t[e+152>>2]&4|0:0)?(t[d>>2]=t[g>>2],t[d+4>>2]=t[g+4>>2],t[d+8>>2]=t[g+8>>2],t[d+12>>2]=t[g+12>>2],t[d+16>>2]=t[g+16>>2],t[d+20>>2]=t[g+20>>2],t[d+24>>2]=t[g+24>>2],t[d+28>>2]=t[g+28>>2],Xa(e,r,A,d,v)|0):0)_a(e,v);h=p;return}function Ta(e,A,r,l,s){e=e|0;A=A|0;r=r|0;l=l|0;s=s|0;var o=0.0,u=0,b=0.0,w=0.0,k=0,d=0.0,v=0.0,g=0.0,m=0.0,p=0,E=0,B=0.0,y=0,C=0,I=0,Z=0,G=0;I=h;h=h+32|0;y=I+16|0;C=I;d=+c[r>>3];B=+c[r+8>>3];k=(l|0)==0?137314:l;Ai(e,k);$r(e,k);g=+c[A+48>>3];b=+c[A+56>>3];m=+c[A+64>>3];w=+c[A+72>>3];v=g+d;d=m+d;B=b+B;k=A+100|0;r=i[k>>0]|0;if((r&1)!=0?(u=t[A+96>>2]|0,((f[A+80>>1]|0)+(f[A+84>>1]|0)|0)<(t[u+104>>2]|0)):0){r=a[A+86>>1]|0;do{if(r<<16>>16)if(((f[A+82>>1]|0)+(r&65535)|0)==(t[u+100>>2]|0)){Z=i[u+32>>0]|0;G=(Z<<24>>24)/2|0;l=(G<<24>>24)+(n[u+33>>0]|0)|0;r=l;l=l&255;o=B-+(G<<24>>24);u=Z;break}else{u=i[u+32>>0]|0;r=0;l=((u<<24>>24)/2|0)<<24>>24;o=B;break}else{G=i[u+32>>0]|0;l=((G<<24>>24)/2|0)<<24>>24;r=l+(n[u+33>>0]|0)|0;o=B;u=G}}while(0);c[C+8>>3]=o-+(l|0);c[C>>3]=d+ +(((u<<24>>24)/2|0)<<24>>24);t[y>>2]=t[C>>2];t[y+4>>2]=t[C+4>>2];t[y+8>>2]=t[C+8>>2];t[y+12>>2]=t[C+12>>2];Ka(e,y,0.0,w-b+ +(r&255|0)+ +(u<<24>>24));r=i[k>>0]|0}if(r&2?(p=a[A+86>>1]|0,E=t[A+96>>2]|0,((f[A+82>>1]|0)+(p&65535)|0)<(t[E+100>>2]|0)):0){r=a[A+84>>1]|0;do{if(!(r<<16>>16)){r=i[E+32>>0]|0;G=(r<<24>>24)/2|0;u=(G<<24>>24)+(n[E+33>>0]|0)|0;l=u&255;u=u&255;o=+(G<<24>>24);c[C>>3]=v-o-+(u|0);if((t[E+104>>2]|0)==(f[A+80>>1]|0)){l=u<<1&255;break}if((s|0)!=0?(a[s+86>>1]|0)!=p<<16>>16:0)l=~~(+(l&255)-m+ +c[E+64>>3]-o)&255}else{if(((f[A+80>>1]|0)+(r&65535)|0)==(t[E+104>>2]|0)){r=i[E+32>>0]|0;G=(r<<24>>24)/2|0;l=(G&255)+(n[E+33>>0]|0)&255;c[C>>3]=v-+(G<<24>>24);break}r=i[E+32>>0]|0;o=+(((r<<24>>24)/2|0)<<24>>24);c[C>>3]=v-o;if((s|0)!=0?(a[s+86>>1]|0)!=p<<16>>16:0)l=~~(+c[E+64>>3]-m-o)&255;else l=0}}while(0);c[C+8>>3]=B-+(((r<<24>>24)/2|0)<<24>>24);t[y>>2]=t[C>>2];t[y+4>>2]=t[C+4>>2];t[y+8>>2]=t[C+8>>2];t[y+12>>2]=t[C+12>>2];Ka(e,y,m-g+ +(l&255)+ +(r<<24>>24),0.0)}h=I;return}function Oa(e,A,r){e=e|0;A=A|0;r=r|0;var f=0,l=0,s=0,o=0,u=0,b=0,w=0,k=0.0;w=h;h=h+160|0;b=w+112|0;u=w;l=w+144|0;o=t[A+24>>2]|0;$r(e,(o|0)==0?137314:o);o=A+42|0;f=a[o>>1]|0;if(!(f&384))ii(e,t[(t[e>>2]|0)+336>>2]|0);else{t[l+4>>2]=0;t[l>>2]=0;f=f&65535;if(!(f&256)){if(f&128|0){f=137320;s=4}}else{f=137327;s=4}if((s|0)==4)t[l>>2]=f;ii(e,l)}s=A+33|0;ui(e,+(n[s>>0]|0));e:do{if(!(a[o>>1]&4)){f=a[A+36>>1]&15360;if(!(f<<16>>16)){f=i[s>>0]|0;if((f&255)>1){k=+(f&255)*.5;c[r>>3]=+c[r>>3]+k;u=r+8|0;c[u>>3]=+c[u>>3]+k;u=r+16|0;c[u>>3]=+c[u>>3]-k;u=r+24|0;c[u>>3]=+c[u>>3]-k}t[b>>2]=t[r>>2];t[b+4>>2]=t[r+4>>2];t[b+8>>2]=t[r+8>>2];t[b+12>>2]=t[r+12>>2];t[b+16>>2]=t[r+16>>2];t[b+20>>2]=t[r+20>>2];t[b+24>>2]=t[r+24>>2];t[b+28>>2]=t[r+28>>2];ni(e,b,0);break}l=u+16|0;o=n[s>>0]|0;t[b>>2]=t[r>>2];t[b+4>>2]=t[r+4>>2];t[b+8>>2]=t[r+8>>2];t[b+12>>2]=t[r+12>>2];t[b+16>>2]=t[r+16>>2];t[b+20>>2]=t[r+20>>2];t[b+24>>2]=t[r+24>>2];t[b+28>>2]=t[r+28>>2];ja(l,b,o)|0;do{switch(((f&65535)+-1024|0)>>>10&4194303|0){case 7:{li(e,l,2);break e}case 3:{li(e,u+32|0,2);break e}case 1:{li(e,u+48|0,2);break e}case 0:{r=u+64|0;t[u>>2]=t[r>>2];t[u+4>>2]=t[r+4>>2];t[u+8>>2]=t[r+8>>2];t[u+12>>2]=t[r+12>>2];li(e,u,2);break e}case 11:{li(e,l,3);break e}case 5:{li(e,u+32|0,3);break e}case 2:{r=u+80|0;t[r>>2]=t[l>>2];t[r+4>>2]=t[l+4>>2];t[r+8>>2]=t[l+8>>2];t[r+12>>2]=t[l+12>>2];li(e,u+48|0,3);break e}case 8:{r=u+64|0;t[u>>2]=t[r>>2];t[u+4>>2]=t[r+4>>2];t[u+8>>2]=t[r+8>>2];t[u+12>>2]=t[r+12>>2];li(e,u,3);break e}case 13:{li(e,l,4);break e}case 6:{r=u+80|0;t[r>>2]=t[l>>2];t[r+4>>2]=t[l+4>>2];t[r+8>>2]=t[l+8>>2];t[r+12>>2]=t[l+12>>2];li(e,u+32|0,4);break e}case 10:{r=u+80|0;t[r>>2]=t[l>>2];t[r+4>>2]=t[l+4>>2];t[r+8>>2]=t[l+8>>2];t[r+12>>2]=t[l+12>>2];r=u+96|0;b=u+32|0;t[r>>2]=t[b>>2];t[r+4>>2]=t[b+4>>2];t[r+8>>2]=t[b+8>>2];t[r+12>>2]=t[b+12>>2];li(e,u+48|0,4);break e}case 12:{r=u+64|0;t[u>>2]=t[r>>2];t[u+4>>2]=t[r+4>>2];t[u+8>>2]=t[r+8>>2];t[u+12>>2]=t[r+12>>2];li(e,u,4);break e}case 9:{li(e,l,2);li(e,u+48|0,2);break e}case 4:{r=u+64|0;t[u>>2]=t[r>>2];t[u+4>>2]=t[r+4>>2];t[u+8>>2]=t[r+8>>2];t[u+12>>2]=t[r+12>>2];li(e,u,2);li(e,u+32|0,2);break e}default:break e}}while(0)}else{o=n[s>>0]|0;t[b>>2]=t[r>>2];t[b+4>>2]=t[r+4>>2];t[b+8>>2]=t[r+8>>2];t[b+12>>2]=t[r+12>>2];t[b+16>>2]=t[r+16>>2];t[b+20>>2]=t[r+20>>2];t[b+24>>2]=t[r+24>>2];t[b+28>>2]=t[r+28>>2];lN(e,ja(u,b,o)|0,4,4,0)}}while(0);h=w;return}function _a(e,A){e=e|0;A=A|0;var r=0,n=0,f=0;f=t[e+16>>2]|0;r=f+208|0;if((t[r>>2]|0)==0?(a[f+260>>1]&1)==0:0)e=0;else{Or(e);e=t[r>>2]|0}if((e|0)!=(t[A>>2]|0)){G2(e);t[r>>2]=t[A>>2]}e=f+228|0;r=t[e>>2]|0;n=A+4|0;if((r|0)!=(t[n>>2]|0)){G2(r);t[e>>2]=t[n>>2]}e=f+244|0;r=t[e>>2]|0;n=A+8|0;if((r|0)!=(t[n>>2]|0)){G2(r);t[e>>2]=t[n>>2]}e=f+212|0;r=t[e>>2]|0;n=A+12|0;if((r|0)!=(t[n>>2]|0)){G2(r);t[e>>2]=t[n>>2]}f=f+260|0;a[f>>1]=a[f>>1]&-2|i[A+16>>0]&1;return}function qa(e,A){e=e|0;A=A|0;var r=0.0,i=0;i=t[A>>2]|0;if(i|0)t[e+16>>2]=i;i=t[A+4>>2]|0;if(i|0)t[e+20>>2]=i;r=+c[A+16>>3];if(r>=0.0)c[e+32>>3]=r;return}function Ka(e,A,r,i){e=e|0;A=A|0;r=+r;i=+i;var a=0,n=0,f=0;a=h;h=h+64|0;n=a+32|0;f=a;t[f>>2]=t[A>>2];t[f+4>>2]=t[A+4>>2];t[f+8>>2]=t[A+8>>2];t[f+12>>2]=t[A+12>>2];c[f+16>>3]=+c[A>>3]+r;c[f+24>>3]=+c[A+8>>3]+i;t[n>>2]=t[f>>2];t[n+4>>2]=t[f+4>>2];t[n+8>>2]=t[f+8>>2];t[n+12>>2]=t[f+12>>2];t[n+16>>2]=t[f+16>>2];t[n+20>>2]=t[f+20>>2];t[n+24>>2]=t[f+24>>2];t[n+28>>2]=t[f+28>>2];ni(e,n,1);h=a;return}function $a(e,A,r){e=e|0;A=A|0;r=r|0;var a=0,n=0,f=0,l=0.0,s=0.0,o=0.0,u=0.0;f=h;h=h+64|0;n=f;s=+c[r>>3];u=s+ +c[A>>3];o=+c[r+8>>3];l=o+ +c[A+8>>3];s=s+ +c[A+16>>3];o=o+ +c[A+24>>3];c[n>>3]=s;c[n+8>>3]=o;c[n+32>>3]=u;c[n+40>>3]=l;c[n+16>>3]=u;c[n+24>>3]=o;c[n+48>>3]=s;c[n+56>>3]=l;a=t[A+36>>2]|0;if(!a)a=t[r+56>>2]|0;r=t[A+32>>2]|0;if(!r)ge(137334,137342,623,137354);if(!(i[r>>0]|0))ge(137368,137342,624,137354);else{ci(e,r,n,4,1,a);h=f;return}}function et(e,A,r,n,f,l,s,o){e=e|0;A=A|0;r=r|0;n=n|0;f=+f;l=l|0;s=s|0;o=o|0;var u=0.0,b=0,w=0,k=0,d=0,v=0,g=0,m=0,p=0,E=0,B=0,y=0,C=0,I=0,Z=0,G=0,L=0,Q=0,D=0,z=0,W=0,Y=0.0,F=0,M=0,V=0,N=0.0,R=0.0,x=0,J=0,H=0,P=0;P=h;h=h+128|0;M=P+104|0;x=P+48|0;J=P+16|0;V=P;F=V;t[F>>2]=0;t[F+4>>2]=0;N=+c[n>>3];R=N-f;Y=N+f;F=V+8|0;c[F>>3]=(+c[s+24>>3]-+c[s+8>>3])*.5+ +c[n+8>>3];_r(e,1);L=J+16|0;Q=J+4|0;D=J+24|0;z=x+4|0;W=x+16|0;v=(o|0)==0;g=x+24|0;m=x+8|0;p=x+32|0;E=x+40|0;B=x+48|0;y=l+16|0;C=l+4|0;I=J+8|0;k=0;while(1){if((k|0)>=(A|0))break;switch(i[r+(k*24|0)+6>>0]|0){case 108:{f=R;break}case 114:{f=Y-+c[r+(k*24|0)+8>>3];break}default:f=N-+c[r+(k*24|0)+8>>3]*.5}c[n>>3]=f;Z=r+(k*24|0)+16|0;c[F>>3]=+c[F>>3]-+c[Z>>3];G=r+(k*24|0)+4|0;w=t[r+(k*24|0)>>2]|0;d=0;while(1){if((d|0)>=(a[G>>1]|0))break;b=w+4|0;o=t[b>>2]|0;if(o){c[L>>3]=+c[(+c[o+16>>3]>0.0?o:l)+16>>3];t[J>>2]=t[((t[o>>2]|0)==0?l:o)>>2];s=t[((t[o+4>>2]|0)==0?l:o)+4>>2]|0;t[Q>>2]=s;o=t[o+24>>2]&127;if(!o)H=12;else o=t[D>>2]&-128|o}else{c[L>>3]=+c[y>>3];t[J>>2]=t[l>>2];s=t[C>>2]|0;t[Q>>2]=s;H=12}if((H|0)==12){H=0;o=t[D>>2]&-128}t[D>>2]=o;$r(e,s);t[x>>2]=t[w>>2];t[z>>2]=J;c[W>>3]=+c[w+16>>3];if(v)u=1.0;else u=+c[w+24>>3];c[g>>3]=u;t[I>>2]=t[(t[b>>2]|0)+8>>2];t[m>>2]=t[w+8>>2];b=w+32|0;c[p>>3]=+c[b>>3];c[E>>3]=+c[Z>>3];i[B>>0]=108;c[V>>3]=f;t[M>>2]=t[V>>2];t[M+4>>2]=t[V+4>>2];t[M+8>>2]=t[V+8>>2];t[M+12>>2]=t[V+12>>2];Kr(e,M,x);u=+c[b>>3]+f;c[n>>3]=u;w=w+56|0;d=d+1|0;f=u}k=k+1|0}qr(e);h=P;return}function At(e){e=e|0;G2(t[e>>2]|0);G2(t[e+4>>2]|0);G2(t[e+8>>2]|0);G2(t[e+16>>2]|0);G2(t[e+12>>2]|0);G2(t[e+20>>2]|0);G2(t[e+24>>2]|0);return}function rt(e){e=e|0;var A=0,r=0,i=0,n=0,f=0,l=0,s=0,c=0;if(e|0){s=e+4|0;r=0;n=t[e>>2]|0;while(1){if((r|0)>=(a[s>>1]|0))break;c=n+4|0;A=0;i=t[n>>2]|0;while(1){if((A|0)>=(a[c>>1]|0))break;G2(t[i>>2]|0);f=t[i+8>>2]|0;if(f|0?(l=t[i+12>>2]|0,l|0):0)F5[l&127](f);A=A+1|0;i=i+56|0}r=r+1|0;n=n+24|0}A=t[e>>2]|0;if(A|0)G2(A);G2(e)}return}function it(e){e=e|0;G2(t[e+32>>2]|0);G2(e);return}function at(e,A){e=e|0;A=A|0;switch(i[e+4>>0]|0){case 1:{tt(t[e>>2]|0);break}case 3:{it(t[e>>2]|0);break}default:rt(t[e>>2]|0)}if(A|0)G2(e);return}function tt(e){e=e|0;var A=0,r=0,i=0;i=e+84|0;if((t[e+100>>2]|0)==-1)Ph(t[i>>2]|0)|0;else{A=t[i>>2]|0;G2(t[e+92>>2]|0);G2(t[e+96>>2]|0);while(1){r=t[A>>2]|0;if(!r)break;nt(r);A=A+4|0}G2(t[i>>2]|0)}At(e);G2(e);return}function nt(e){e=e|0;at(e+88|0,0);At(e);G2(e);return}function ft(e,A,r){e=e|0;A=A|0;r=r|0;var a=0;e=t[(t[(t[e+16>>2]|0)+104>>2]|0)+72>>2]|0;if((i[e+4>>0]|0)!=2?(a=lt(t[e>>2]|0,A)|0,(a|0)!=0):0){t[r>>2]=n[a+35>>0];e=a+48|0}else e=0;return e|0}function lt(e,A){e=e|0;A=A|0;var r=0,i=0;r=t[e+4>>2]|0;if(!((r|0)!=0?(N1(r,A)|0)==0:0))i=3;e:do{if((i|0)==3){r=t[e+84>>2]|0;while(1){e=t[r>>2]|0;if(!e){e=0;break e}e=st(e,A)|0;if(!e)r=r+4|0;else break}}}while(0);return e|0}function st(e,A){e=e|0;A=A|0;var r=0;r=t[e+4>>2]|0;if(!((r|0)!=0?(N1(r,A)|0)==0:0))if((i[e+92>>0]|0)==1)e=lt(t[e+88>>2]|0,A)|0;else e=0;return e|0}function ct(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;return 0}function ot(e){e=e|0;var A=0.0,r=0,n=0,l=0,s=0,o=0,u=0,b=0,h=0,w=0,k=0,d=0;w=e+92|0;t[w>>2]=KF((t[e+100>>2]<<2)+4|0)|0;b=KF((t[e+104>>2]<<2)+4|0)|0;t[e+96>>2]=b;h=e+32|0;u=t[e+84>>2]|0;while(1){o=t[u>>2]|0;if(!o)break;e=a[o+82>>1]|0;A=+c[o+72>>3];if(e<<16>>16==1)n=~~A;else{n=~~((A-+(P((i[h>>0]|0)+-1|0,(e&65535)+-1|0)|0))/+(e&65535));n=(n|0)>1?n:1}l=a[o+80>>1]|0;A=+c[o+64>>3];if(l<<16>>16==1)s=~~A;else{s=~~((A-+(P((i[h>>0]|0)+-1|0,(l&65535)+-1|0)|0))/+(l&65535));s=(s|0)>1?s:1}k=f[o+86>>1]|0;r=(e&65535)+k|0;e=k;while(1){if((e|0)>=(r|0))break;k=(t[w>>2]|0)+(e<<2)|0;d=t[k>>2]|0;t[k>>2]=(d|0)>(n|0)?d:n;e=e+1|0}e=f[o+84>>1]|0;r=(l&65535)+e|0;while(1){if((e|0)>=(r|0))break;d=b+(e<<2)|0;k=t[d>>2]|0;t[d>>2]=(k|0)>(s|0)?k:s;e=e+1|0}u=u+4|0}return}function ut(e){e=e|0;var A=0,r=0;r=h;h=h+16|0;A=r;if(e>>>0<21)e=t[55840+(e<<2)>>2]|0;else{t[A>>2]=e;T4(194959,137395,A)|0;e=194959}h=r;return e|0}function bt(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0,n=0,l=0,s=0,o=0,u=0,b=0,h=0;s=e+104|0;o=e+100|0;l=r+16|0;i=0;a=0;while(1){if((i|0)>(t[s>>2]|0))break;n=gd(r,ut(i)|0,1)|0;Sd(n,137447,304,1)|0;u=n+16|0;t[(t[u>>2]|0)+176>>2]=0;h=KF((t[o>>2]<<2)+4|0)|0;b=t[u>>2]|0;t[b+172>>2]=h;t[b+184>>2]=0;b=KF((t[o>>2]<<2)+4|0)|0;t[(t[u>>2]|0)+180>>2]=b;if(!a)t[(t[l>>2]|0)+192>>2]=n;else t[(t[a+16>>2]|0)+164>>2]=n;i=i+1|0;a=n}l=A+16|0;i=0;a=0;while(1){if((i|0)>(t[o>>2]|0))break;n=gd(A,ut(i)|0,1)|0;Sd(n,137447,304,1)|0;h=n+16|0;t[(t[h>>2]|0)+176>>2]=0;u=KF((t[s>>2]<<2)+4|0)|0;b=t[h>>2]|0;t[b+172>>2]=u;t[b+184>>2]=0;b=KF((t[s>>2]<<2)+4|0)|0;t[(t[h>>2]|0)+180>>2]=b;if(!a)t[(t[l>>2]|0)+192>>2]=n;else t[(t[a+16>>2]|0)+164>>2]=n;i=i+1|0;a=n}i=t[e+84>>2]|0;while(1){a=t[i>>2]|0;if(!a)break;h=a+84|0;b=gd(r,ut(f[h>>1]|0)|0,0)|0;h=gd(r,ut((f[a+80>>1]|0)+(f[h>>1]|0)|0)|0,0)|0;ht(r,b,h,~~+c[a+64>>3]);h=a+86|0;b=gd(A,ut(f[h>>1]|0)|0,0)|0;h=gd(A,ut((f[a+82>>1]|0)+(f[h>>1]|0)|0)|0,0)|0;ht(A,b,h,~~+c[a+72>>3]);i=i+4|0}wt(r);wt(A);return}function ht(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var n=0,l=0;n=lk(e,A,r,0,0)|0;if(!n){l=lk(e,A,r,0,1)|0;Sd(l,137460,176,1)|0;a[(t[l+16>>2]|0)+170>>1]=i;A=A+16|0;e=t[A>>2]|0;n=t[e+180>>2]|0;if(!n)e=$F((t[e+184>>2]<<2)+8|0)|0;else e=AM(n,(t[e+184>>2]<<2)+8|0)|0;i=t[A>>2]|0;t[i+180>>2]=e;i=i+184|0;n=t[i>>2]|0;t[i>>2]=n+1;t[e+(n<<2)>>2]=l;A=t[A>>2]|0;t[(t[A+180>>2]|0)+(t[A+184>>2]<<2)>>2]=0;A=r+16|0;e=t[A>>2]|0;n=t[e+172>>2]|0;if(!n)e=$F((t[e+176>>2]<<2)+8|0)|0;else e=AM(n,(t[e+176>>2]<<2)+8|0)|0;i=t[A>>2]|0;t[i+172>>2]=e;i=i+176|0;r=t[i>>2]|0;t[i>>2]=r+1;t[e+(r<<2)>>2]=l;l=t[A>>2]|0;t[(t[l+172>>2]|0)+(t[l+176>>2]<<2)>>2]=0}else{l=(t[n+16>>2]|0)+170|0;r=f[l>>1]|0;a[l>>1]=(r|0)>(i|0)?r:i}return}function wt(e){e=e|0;var A=0,r=0,i=0,n=0,f=0,l=0;A=t[(t[e+16>>2]|0)+192>>2]|0;while(1){i=A+16|0;f=t[(t[i>>2]|0)+164>>2]|0;if(!f)break;if(lk(e,A,f,0,0)|0){A=f;continue}n=lk(e,A,f,0,1)|0;Sd(n,137460,176,1)|0;a[(t[n+16>>2]|0)+170>>1]=0;A=t[i>>2]|0;r=t[A+180>>2]|0;if(!r)A=$F((t[A+184>>2]<<2)+8|0)|0;else A=AM(r,(t[A+184>>2]<<2)+8|0)|0;l=t[i>>2]|0;t[l+180>>2]=A;l=l+184|0;r=t[l>>2]|0;t[l>>2]=r+1;t[A+(r<<2)>>2]=n;i=t[i>>2]|0;t[(t[i+180>>2]|0)+(t[i+184>>2]<<2)>>2]=0;i=f+16|0;A=t[i>>2]|0;r=t[A+172>>2]|0;if(!r)A=$F((t[A+176>>2]<<2)+8|0)|0;else A=AM(r,(t[A+176>>2]<<2)+8|0)|0;r=t[i>>2]|0;t[r+172>>2]=A;r=r+176|0;l=t[r>>2]|0;t[r>>2]=l+1;t[A+(l<<2)>>2]=n;A=t[i>>2]|0;t[(t[A+172>>2]|0)+(t[A+176>>2]<<2)>>2]=0;A=f}return}function kt(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0,n=0,f=0;n=e+92|0;i=0;a=0;A=t[(t[(t[A+16>>2]|0)+192>>2]|0)+16>>2]|0;while(1){A=t[A+164>>2]|0;if(!A)break;A=t[A+16>>2]|0;f=A+232|0;t[(t[n>>2]|0)+(a<<2)>>2]=(t[f>>2]|0)-i;i=t[f>>2]|0;a=a+1|0}e=e+96|0;i=0;a=0;A=t[(t[(t[r+16>>2]|0)+192>>2]|0)+16>>2]|0;while(1){A=t[A+164>>2]|0;if(!A)break;A=t[A+16>>2]|0;f=A+232|0;t[(t[e>>2]|0)+(a<<2)>>2]=(t[f>>2]|0)-i;i=t[f>>2]|0;a=a+1|0}return}function dt(e){e=e|0;var A=0,r=0,a=0,n=0,f=0;f=h;h=h+16|0;n=f+4|0;A=f;t[A>>2]=t[4647];r=t[e+100>>2]|0;if((r|0)!=1?(a=e+104|0,(t[a>>2]|0)!=1):0){t[e+92>>2]=KF((r<<2)+4|0)|0;t[e+96>>2]=KF((t[a>>2]<<2)+4|0)|0;i[n>>0]=i[A>>0]|0;i[n+1>>0]=i[A+1>>0]|0;i[n+2>>0]=i[A+2>>0]|0;i[n+3>>0]=i[A+3>>0]|0;a=hk(137473,n,0)|0;i[n>>0]=i[A>>0]|0;i[n+1>>0]=i[A+1>>0]|0;i[n+2>>0]=i[A+2>>0]|0;i[n+3>>0]=i[A+3>>0]|0;n=hk(137478,n,0)|0;Sd(a,137483,280,1)|0;Sd(n,137483,280,1)|0;bt(e,a,n);VM(a,2,2147483647)|0;VM(n,2,2147483647)|0;kt(e,a,n);vt(a,n)}else ot(e);h=f;return}function vt(e,A){e=e|0;A=A|0;var r=0,i=0,a=0;r=(t[A+16>>2]|0)+192|0;while(1){r=t[r>>2]|0;if(!r)break;a=r+16|0;r=t[a>>2]|0;i=t[r+172>>2]|0;if(i){G2(i);r=t[a>>2]|0}i=t[r+180>>2]|0;if(i){G2(i);r=t[a>>2]|0}r=r+164|0}vk(e)|0;vk(A)|0;return}function gt(e,A){e=e|0;A=A|0;var r=0,a=0,n=0,f=0,l=0,s=0,o=0,u=0,b=0,w=0,k=0.0,d=0.0;w=h;h=h+272|0;u=w+104|0;b=w+136|0;l=w+72|0;s=w;n=w+144|0;t[s+48>>2]=e;switch(Yd(e)|0){case 0:{r=t[e+60>>2]|0;break}case 1:{r=Bd(e)|0;break}case 2:{r=Bd(t[((t[e>>2]&3|0)==2?e:e+-48|0)+40>>2]|0)|0;break}default:{}}f=s+52|0;t[f>>2]=r;o=t[r+60>>2]|0;c[s+32>>3]=+c[A+16>>3];t[s+16>>2]=t[A+4>>2];t[s+20>>2]=t[A+8>>2];t[s+40>>2]=0;a=Df(t[A>>2]|0,b,s)|0;if(!a){cw(u,128,n);i[A+82>>0]=0;r=o3(mt(e,u)|0)|0;t[A>>2]=r;if((t[A+12>>2]|0)==1)r=pJ(r)|0;else r=vJ(r,t[f>>2]|0)|0;G2(t[A>>2]|0);t[A>>2]=r;xF(t[(t[o+16>>2]|0)+144>>2]|0,A);hw(u);r=t[b>>2]|0}else{r=a+4|0;if((i[r>>0]|0)==1){if((t[(t[a>>2]|0)+24>>2]|0)==0?pt(e)|0:0){f=o3(pt(e)|0)|0;t[(t[a>>2]|0)+24>>2]=f}o=Et(o,t[a>>2]|0,0,s)|0;t[b>>2]=t[b>>2]|o;o=t[a>>2]|0;d=+c[o+64>>3]*.5;k=+c[o+72>>3]*.5;Bt(l,-d,-k,d,k);o=t[a>>2]|0;t[u>>2]=t[l>>2];t[u+4>>2]=t[l+4>>2];t[u+8>>2]=t[l+8>>2];t[u+12>>2]=t[l+12>>2];t[u+16>>2]=t[l+16>>2];t[u+20>>2]=t[l+20>>2];t[u+24>>2]=t[l+24>>2];t[u+28>>2]=t[l+28>>2];yt(o,u,15)}else{Ct(t[(t[o+16>>2]|0)+144>>2]|0,t[a>>2]|0,s);u=t[a>>2]|0;k=+c[u+24>>3]*.5;d=+c[u+32>>3]*.5;Bt(l,-k,-d,k,d);u=(t[a>>2]|0)+8|0;t[u>>2]=t[l>>2];t[u+4>>2]=t[l+4>>2];t[u+8>>2]=t[l+8>>2];t[u+12>>2]=t[l+12>>2];t[u+16>>2]=t[l+16>>2];t[u+20>>2]=t[l+20>>2];t[u+24>>2]=t[l+24>>2];t[u+28>>2]=t[l+28>>2]}c[A+24>>3]=+c[l+16>>3]-+c[l>>3];c[A+32>>3]=+c[l+24>>3]-+c[l+8>>3];t[A+72>>2]=a;if((i[r>>0]|0)==1){G2(t[A>>2]|0);t[A>>2]=o3(141611)|0}r=t[b>>2]|0}h=w;return r|0}function mt(e,A){e=e|0;A=A|0;var r=0;e:do{switch(Yd(e)|0){case 0:{bw(A,Mk(e)|0)|0;break}case 1:{bw(A,Mk(e)|0)|0;break}case 2:{bw(A,Mk(t[((t[e>>2]&3|0)==3?e:e+48|0)+40>>2]|0)|0)|0;r=e+-48|0;bw(A,Mk(t[((t[e>>2]&3|0)==2?e:r)+40>>2]|0)|0)|0;if(!(Bk(Bd(t[((t[e>>2]&3|0)==2?e:r)+40>>2]|0)|0)|0)){bw(A,141747)|0;break e}else{bw(A,137738)|0;break e}}default:{}}}while(0);r=A+4|0;e=t[r>>2]|0;if(e>>>0>=(t[A+8>>2]|0)>>>0){ow(A,1)|0;e=t[r>>2]|0}i[e>>0]=0;A=t[A>>2]|0;t[r>>2]=A;return A|0}function pt(e){e=e|0;var A=0,r=0;A=Hw(e,137729)|0;if(!((A|0)!=0?(i[A>>0]|0)!=0:0))r=3;do{if((r|0)==3){A=Hw(e,140823)|0;if(A|0?i[A>>0]|0:0)break;A=0}}while(0);return A|0}function Et(e,A,r,l){e=e|0;A=A|0;r=r|0;l=l|0;var s=0,o=0,u=0,b=0,w=0,k=0,d=0,v=0,g=0,m=0,p=0,E=0;E=h;h=h+16|0;m=E+8|0;g=E;p=A+108|0;s=t[p>>2]|0;if(s|0)Pa(l,s,186576);t[A+80>>2]=r;s=Lt(e,A,l)|0;d=A+36|0;e=a[d>>1]|0;if(!(e&128))i[A+32>>0]=2;r=A+33|0;if(!(e&32))i[r>>0]=1;dt(A);u=t[A+104>>2]|0;w=i[A+32>>0]|0;e=P(u+1|0,w)|0;b=n[r>>0]<<1;k=t[A+100>>2]|0;w=P(k+1|0,w)|0;o=A+96|0;e=b+e|0;r=0;while(1){if((r|0)>=(u|0))break;e=(t[(t[o>>2]|0)+(r<<2)>>2]|0)+e|0;r=r+1|0}u=A+92|0;r=w+b|0;o=0;while(1){if((o|0)>=(k|0))break;r=(t[(t[u>>2]|0)+(o<<2)>>2]|0)+r|0;o=o+1|0}u=A+38|0;do{if(a[d>>1]&1){d=a[u>>1]|0;o=d&65535;if(d<<16>>16?(v=a[A+40>>1]|0,v<<16>>16):0){if(!((e|0)>(o|0)|(r|0)>(v&65535|0))){r=0;e=0;break}nw(0,137529,g)|0;s=1;r=0;e=0;break}nw(0,137563,m)|0;s=1}}while(0);m=f[u>>1]|0;c[A+64>>3]=+(((e|0)>(m|0)?e:m)|0);m=f[A+40>>1]|0;c[A+72>>3]=+(((r|0)>(m|0)?r:m)|0);if(t[p>>2]|0)qa(l,186576);h=E;return s|0}function Bt(e,A,r,i,a){e=e|0;A=+A;r=+r;i=+i;a=+a;c[e>>3]=A;c[e+8>>3]=r;c[e+16>>3]=i;c[e+24>>3]=a;return}function yt(e,A,r){e=e|0;A=A|0;r=r|0;var f=0,l=0,s=0,o=0.0,u=0.0,b=0,w=0,k=0.0,d=0.0,v=0,g=0,m=0,p=0,E=0,B=0,y=0.0,C=0,I=0,Z=0,G=0,L=0,Q=0,D=0,z=0,W=0,Y=0,F=0.0,M=0;Y=h;h=h+64|0;z=Y+32|0;W=Y;Q=t[e+84>>2]|0;s=t[e+80>>2]|0;if((s|0?(f=t[s+24>>2]|0,f|0):0)?(l=e+24|0,(t[l>>2]|0)==0):0)t[l>>2]=o3(f)|0;D=e+48|0;f=A+16|0;u=+c[f>>3];o=+c[A>>3];s=~~(u-o-+(~~+c[e+64>>3]|0));if((s|0)<=-1)ge(137496,137342,1761,137506);b=A+24|0;y=+c[b>>3];w=A+8|0;k=+c[w>>3];d=+(~~+c[e+72>>3]|0);v=~~(y-k-d);if((v|0)<=-1)ge(137519,137342,1764,137506);g=a[e+36>>1]|0;l=g&65535;e:do{if(l&1){A:do{if((s|0)>0)switch(l&6){case 4:{c[f>>3]=o+d;break A}case 2:{F=+(s|0);c[f>>3]=u+F;o=o+F;c[A>>3]=o;break A}default:{F=+(s>>>1|0);o=o+F;c[A>>3]=o;c[f>>3]=u-F;break A}}}while(0);if((v|0)>0)switch(g&24){case 16:{y=k+d;c[b>>3]=y;v=0;f=0;break e}case 8:{F=+(v|0);y=y+F;c[b>>3]=y;c[w>>3]=k+F;v=0;f=0;break e}default:{F=+(v>>>1|0);c[w>>3]=k+F;y=y-F;c[b>>3]=y;v=0;f=0;break e}}else{v=0;f=0}}else f=s}while(0);u=+(n[e+33>>0]|0);G=e+32|0;m=i[G>>0]|0;k=+(m<<24>>24);L=e+104|0;s=t[L>>2]|0;g=(f|0)/(s|0)|0;b=f-(P(g,s)|0)|0;b=~~(((b|0)>-1?.5:-.5)+ +(b|0));Z=e+96|0;w=m<<24>>24;f=~~(o+u+k);l=0;while(1){if((l|0)>(s|0))break;I=(t[Z>>2]|0)+(l<<2)|0;s=t[I>>2]|0;t[I>>2]=f;f=f+g+((l|0)<(b|0)&1)+s+w|0;l=l+1|0;s=t[L>>2]|0}I=e+100|0;s=t[I>>2]|0;g=(v|0)/(s|0)|0;w=v-(P(g,s)|0)|0;w=~~(((w|0)>-1?.5:-.5)+ +(w|0));C=e+92|0;b=m<<24>>24;f=~~(y-u-k);l=0;while(1){if((l|0)>(s|0))break;B=(t[C>>2]|0)+(l<<2)|0;s=t[B>>2]|0;t[B>>2]=f;f=f-g+(((l|0)<(w|0))<<31>>31)-s-b|0;l=l+1|0;s=t[I>>2]|0}m=(r|0)==0;p=W+16|0;E=W+24|0;B=W+8|0;f=Q;while(1){b=t[f>>2]|0;if(!b)break;s=a[b+84>>1]|0;if(m){l=0;w=a[b+80>>1]|0;v=a[b+86>>1]|0;g=a[b+82>>1]|0}else{l=s<<16>>16==0?8:0;v=a[b+86>>1]|0;l=v<<16>>16==0?l|4:l;w=a[b+80>>1]|0;g=a[b+82>>1]|0;l=(((w&65535)+(s&65535)|0)==(t[L>>2]|0)?l|2:l)|((g&65535)+(v&65535)|0)==(t[I>>2]|0)}M=t[Z>>2]|0;s=s&65535;c[W>>3]=+(t[M+(s<<2)>>2]|0);Q=i[G>>0]|0;c[p>>3]=+((t[M+((w&65535)+s<<2)>>2]|0)-Q|0);w=t[C>>2]|0;c[E>>3]=+(t[w+((v&65535)<<2)>>2]|0);c[B>>3]=+((t[w+((g&65535)+(v&65535)<<2)>>2]|0)+Q|0);t[z>>2]=t[W>>2];t[z+4>>2]=t[W+4>>2];t[z+8>>2]=t[W+8>>2];t[z+12>>2]=t[W+12>>2];t[z+16>>2]=t[W+16>>2];t[z+20>>2]=t[W+20>>2];t[z+24>>2]=t[W+24>>2];t[z+28>>2]=t[W+28>>2];It(b,z,l&r);f=f+4|0}i[e+35>>0]=r;t[D>>2]=t[A>>2];t[D+4>>2]=t[A+4>>2];t[D+8>>2]=t[A+8>>2];t[D+12>>2]=t[A+12>>2];t[D+16>>2]=t[A+16>>2];t[D+20>>2]=t[A+20>>2];t[D+24>>2]=t[A+24>>2];t[D+28>>2]=t[A+28>>2];h=Y;return}function Ct(e,A,r){e=e|0;A=A|0;r=r|0;var n=0,f=0,l=0.0,s=0.0,o=0,u=0,b=0.0,w=0.0,k=0.0,d=0,v=0.0,g=0.0,m=0.0,p=0,E=0,B=0,y=0,C=0,I=0,Z=0,G=0,L=0,Q=0,D=0,z=0,W=0,Y=0,F=0,M=0,V=0,N=0,R=0,x=0,J=0.0,H=0.0,P=0.0;x=h;h=h+112|0;W=x+48|0;Y=x+16|0;F=x;t[Y>>2]=0;t[Y+4>>2]=0;t[Y+8>>2]=0;t[Y+12>>2]=0;t[Y+16>>2]=0;t[Y+20>>2]=0;t[Y+24>>2]=0;t[Y+28>>2]=0;M=A+4|0;V=r+16|0;N=r+32|0;R=Y+16|0;d=a[M>>1]|0;u=d<<16>>16;n=0;l=-1.0;o=0;while(1){if((o|0)>=(u|0)){n=1;break}f=t[A>>2]|0;if((a[f+(o*24|0)+4>>1]|0)>1){n=0;break}f=t[(t[f+(o*24|0)>>2]|0)+4>>2]|0;if(!f){s=+c[N>>3];c[R>>3]=s;f=V}else{if(t[f+24>>2]&127|0){n=0;break}s=+c[(+c[f+16>>3]>0.0?f:V)+16>>3];c[R>>3]=s;f=(t[f>>2]|0)==0?V:f}f=t[f>>2]|0;t[Y>>2]=f;if(!(l==-1.0)){if(s!=l){n=0;break}}else l=s;if(n){if(e1(f,n)|0){n=0;break}}else n=f;o=o+1|0}i[A+6>>0]=n;Q=r+48|0;D=r+20|0;z=Y+4|0;E=r+40|0;B=Y+24|0;y=e+144|0;C=W+4|0;p=F+8|0;I=W+16|0;Z=W+24|0;G=W+8|0;L=W+12|0;r=(n|0)==0;l=0.0;v=0.0;g=0.0;m=0.0;u=0;n=d;while(1){if((u|0)>=(n<<16>>16|0))break;s=0.0;k=0.0;o=0;w=0.0;l=0.0;f=t[A>>2]|0;while(1){if((o|0)>=(a[f+(u*24|0)+4>>1]|0))break;t[W>>2]=UF(t[(t[f+(u*24|0)>>2]|0)+(o*56|0)>>2]|0,t[Q>>2]|0)|0;f=(t[A>>2]|0)+(u*24|0)|0;n=t[(t[f>>2]|0)+(o*56|0)+4>>2]|0;if(!n){c[R>>3]=+c[N>>3];t[Y>>2]=t[V>>2];t[z>>2]=t[D>>2];t[B>>2]=t[B>>2]&-128|t[E>>2]&127}else{n=t[n+24>>2]&127;if(!n)n=t[E>>2]&127;t[B>>2]=t[B>>2]&-128|n;d=t[(t[f>>2]|0)+(o*56|0)+4>>2]|0;c[R>>3]=+c[(+c[d+16>>3]>0.0?d:V)+16>>3];t[Y>>2]=t[((t[d>>2]|0)==0?V:d)>>2];t[z>>2]=t[((t[d+4>>2]|0)==0?V:d)+4>>2]}f=t[y>>2]|0;t[C>>2]=L5[t[f>>2]&63](f,Y,1)|0;ex(F,e,W);H=+c[F>>3];b=+c[p>>3];G2(t[(t[(t[A>>2]|0)+(u*24|0)>>2]|0)+(o*56|0)>>2]|0);f=t[A>>2]|0;d=t[f+(u*24|0)>>2]|0;t[d+(o*56|0)>>2]=t[W>>2];c[d+(o*56|0)+32>>3]=H;c[d+(o*56|0)+16>>3]=+c[I>>3];c[d+(o*56|0)+24>>3]=+c[Z>>3];t[d+(o*56|0)+4>>2]=t[C>>2];t[d+(o*56|0)+8>>2]=t[G>>2];t[d+(o*56|0)+12>>2]=t[L>>2];J=+c[R>>3];P=+c[Z>>3];s=P>s?P:s;k=H+k;o=o+1|0;w=J>w?J:w;l=b>l?b:l}c[f+(u*24|0)+8>>3]=k;n=(u|0)==0;do{if(r)if(n){b=w;s=w-s;n=f;break}else{b=w;s=g-m+w-s;n=f+(u*24|0)|0;break}else{b=l;s=n?w:l;n=f+(u*24|0)|0}}while(0);c[n+16>>3]=s;v=k>v?k:v;g=b+g;m=+c[f+(u*24|0)+16>>3]+m;u=u+1|0;n=a[M>>1]|0}c[A+24>>3]=v;c[A+32>>3]=n<<16>>16==1?l:g;h=x;return}function It(e,A,r){e=e|0;A=A|0;r=r|0;var f=0,l=0,s=0.0,o=0.0,u=0.0,b=0.0,w=0.0,k=0.0,d=0,v=0,g=0,m=0,p=0,E=0,B=0,y=0,C=0.0,I=0.0;y=h;h=h+64|0;p=y+32|0;B=y;l=e+24|0;if((t[l>>2]|0)==0?(f=t[(t[e+96>>2]|0)+24>>2]|0,f|0):0)t[l>>2]=o3(f)|0;g=e+36|0;E=a[g>>1]|0;f=E&65535;e:do{if(f&1){s=+c[e+64>>3];k=+c[e+72>>3];l=A+16|0;o=+c[l>>3];b=+c[A>>3];u=o-b-s;A:do{if(u>0.0)switch(f&6){case 4:{o=b+s;c[l>>3]=o;s=b;break A}case 2:{o=u+o;c[l>>3]=o;s=b+u;c[A>>3]=s;break A}default:{w=u*.5;s=w+b;c[A>>3]=s;o=o-w;c[l>>3]=o;break A}}else s=b}while(0);f=A+24|0;w=+c[f>>3];l=A+8|0;u=+c[l>>3];b=w-u-k;if(b>0.0)switch(E&24){case 16:{b=u+k;c[f>>3]=b;break e}case 8:{k=b+w;c[f>>3]=k;u=u+b;c[l>>3]=u;b=k;break e}default:{b=b*.5;u=b+u;c[l>>3]=u;b=w-b;c[f>>3]=b;break e}}else b=w}else{s=+c[A>>3];u=+c[A+8>>3];o=+c[A+16>>3];b=+c[A+24>>3]}}while(0);v=e+48|0;t[v>>2]=t[A>>2];t[v+4>>2]=t[A+4>>2];t[v+8>>2]=t[A+8>>2];t[v+12>>2]=t[A+12>>2];t[v+16>>2]=t[A+16>>2];t[v+20>>2]=t[A+20>>2];t[v+24>>2]=t[A+24>>2];t[v+28>>2]=t[A+28>>2];i[e+35>>0]=r;I=+(n[e+33>>0]|0);C=+(n[e+34>>0]|0);w=s+I+C;c[B>>3]=w;k=u+I+C;v=B+8|0;c[v>>3]=k;u=o-I-C;A=B+16|0;c[A>>3]=u;b=b-I-C;d=B+24|0;c[d>>3]=b;l=e+88|0;switch(i[e+92>>0]|0){case 1:{E=t[l>>2]|0;t[p>>2]=t[B>>2];t[p+4>>2]=t[B+4>>2];t[p+8>>2]=t[B+8>>2];t[p+12>>2]=t[B+12>>2];t[p+16>>2]=t[B+16>>2];t[p+20>>2]=t[B+20>>2];t[p+24>>2]=t[B+24>>2];t[p+28>>2]=t[B+28>>2];yt(E,p,r);break}case 3:{f=t[l>>2]|0;s=+c[f+24>>3];o=u-w-+c[f+16>>3];e:do{if(o>0.0)switch(E&6){case 4:{c[A>>3]=u-o;break e}case 2:{c[B>>3]=o+w;break e}default:break e}}while(0);s=b-k-s;e:do{if(s>0.0)switch(E&24){case 16:{c[d>>3]=b-s;break e}case 8:{c[v>>3]=s+k;break e}default:break e}}while(0);t[p>>2]=t[B>>2];t[p+4>>2]=t[B+4>>2];t[p+8>>2]=t[B+8>>2];t[p+12>>2]=t[B+12>>2];t[p+16>>2]=t[B+16>>2];t[p+20>>2]=t[B+20>>2];t[p+24>>2]=t[B+24>>2];t[p+28>>2]=t[B+28>>2];Zt(f,p);break}default:{f=t[l>>2]|0;s=+c[f+32>>3];o=u-w-+c[f+24>>3];e:do{if(o>0.0?(m=E&6,m<<16>>16!=6):0)switch(m&7){case 4:{c[A>>3]=u-o;break e}case 2:{c[B>>3]=o+w;break e}default:{I=o*.5;c[B>>3]=I+w;c[A>>3]=u-I;break e}}}while(0);s=b-k-s;e:do{if(s>0.0)switch(E&24){case 16:{c[d>>3]=b-s;break e}case 8:{c[v>>3]=s+k;break e}default:{I=s*.5;c[v>>3]=I+k;c[d>>3]=b-I;break e}}}while(0);E=f+8|0;t[E>>2]=t[B>>2];t[E+4>>2]=t[B+4>>2];t[E+8>>2]=t[B+8>>2];t[E+12>>2]=t[B+12>>2];t[E+16>>2]=t[B+16>>2];t[E+20>>2]=t[B+20>>2];t[E+24>>2]=t[B+24>>2];t[E+28>>2]=t[B+28>>2];B=a[g>>1]&768;Gt(t[l>>2]|0,(B&1023)==512?108:(B&1023)==256?114:110)}}h=y;return}function Zt(e,A){e=e|0;A=A|0;t[e>>2]=t[A>>2];t[e+4>>2]=t[A+4>>2];t[e+8>>2]=t[A+8>>2];t[e+12>>2]=t[A+12>>2];t[e+16>>2]=t[A+16>>2];t[e+20>>2]=t[A+20>>2];t[e+24>>2]=t[A+24>>2];t[e+28>>2]=t[A+28>>2];return}function Gt(e,A){e=e|0;A=A|0;var r=0,n=0,f=0;n=a[e+4>>1]|0;r=0;while(1){if((r|0)>=(n|0))break;f=(t[e>>2]|0)+(r*24|0)+6|0;if(!(i[f>>0]|0))i[f>>0]=A;r=r+1|0}return}function Lt(e,A,r){e=e|0;A=A|0;r=r|0;var n=0,l=0,s=0,c=0,o=0,u=0,b=0,h=0,w=0,k=0,d=0,v=0,g=0,m=0,p=0;o=A+84|0;g=t[o>>2]|0;m=$M()|0;p=Wt()|0;l=0;n=0;c=Sh(g)|0;while(1){if(!c)break;s=Sh(t[c+8>>2]|0)|0;while(1){if(!s)break;s=t[s>>2]|0;l=l+1|0}n=n+1|0;if(i[c+12>>0]|0)Vt(p,n);c=t[c>>2]|0}n=KF((l<<2)+4|0)|0;t[o>>2]=n;l=0;s=0;c=0;k=0;d=Sh(g)|0;while(1){if(!d)break;v=k&65535;w=0;h=Sh(t[d+8>>2]|0)|0;while(1){if(!h)break;b=t[h+8>>2]|0;t[n>>2]=b;c=Qt(e,b,A,r)|0|c;o=Dt(m,k,w,b)|0;a[b+86>>1]=v;a[b+84>>1]=o;o=o+(f[b+80>>1]|0)|0;u=k+(f[b+82>>1]|0)|0;if(Nt(p,u)|0){w=b+100|0;i[w>>0]=i[w>>0]|2}w=o;n=n+4|0;h=t[h>>2]|0;l=(o|0)>(l|0)?o:l;s=(u|0)>(s|0)?u:s}k=k+1|0;d=t[d>>2]|0}t[A+100>>2]=s;t[A+104>>2]=l;Ph(g)|0;Ph(p)|0;rV(m);return c|0}function Qt(e,A,r,l){e=e|0;A=A|0;r=r|0;l=l|0;var s=0.0,o=0.0,u=0,b=0,w=0,k=0,d=0,v=0,g=0,m=0,p=0.0;m=h;h=h+16|0;g=m+8|0;v=m;t[A+96>>2]=r;k=A+36|0;b=a[k>>1]|0;if(!(b&64)){if(!(a[r+36>>1]&64))u=2;else u=i[r+34>>0]|0;i[A+34>>0]=u}if(!(b&32)){u=i[r+88>>0]|0;if(u<<24>>24<=-1)if(!(a[r+36>>1]&32))u=1;else u=i[r+33>>0]|0;i[A+33>>0]=u}u=A+88|0;w=A+92|0;switch(i[w>>0]|0){case 1:{b=Et(e,t[u>>2]|0,A,l)|0;r=t[u>>2]|0;u=b;b=r+64|0;r=r+72|0;break}case 3:{b=zt(t[u>>2]|0,l)|0;r=t[u>>2]|0;u=b;b=r+16|0;r=r+24|0;break}default:{Ct(t[(t[e+16>>2]|0)+144>>2]|0,t[u>>2]|0,l);r=t[u>>2]|0;u=0;b=r+24|0;r=r+32|0}}s=+((n[A+33>>0]|0)+(n[A+34>>0]|0)<<1|0);o=+c[b>>3]+s;s=+c[r>>3]+s;r=A+38|0;do{if(a[k>>1]&1){b=a[r>>1]|0;if(b<<16>>16?(d=a[A+40>>1]|0,d<<16>>16):0){if(!(o>+(b&65535)|s>+(d&65535))){o=0.0;s=0.0;break}if((i[w>>0]|0)==3){o=0.0;s=0.0;break}nw(0,137614,v)|0;u=1;o=0.0;s=0.0;break}nw(0,137647,g)|0;u=1}}while(0);p=+(f[r>>1]|0);c[A+64>>3]=o>p?o:p;o=+(f[A+40>>1]|0);c[A+72>>3]=s>o?s:o;h=m;return u|0}function Dt(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0,t=0,n=0,l=0,s=0;s=i+80|0;l=(f[s>>1]|0)+-1|0;n=0;e:while(1){a=r;while(1){if(n)break e;t=l+a|0;while(1){if((t|0)<(a|0)){r=a;n=1;continue e}if(fV(e,t,A)|0)break;t=t+-1|0}a=t+1|0}}n=i+82|0;a=r;while(1){if((a|0)<(r+(f[s>>1]|0)|0))t=A;else break;while(1){if((t|0)>=((f[n>>1]|0)+A|0))break;tV(e,a,t);t=t+1|0}a=a+1|0}return r|0}function zt(e,A){e=e|0;A=A|0;var r=0.0,a=0.0,n=0,f=0,l=0,s=0,o=0;o=h;h=h+16|0;l=o;f=o+8|0;A=A+52|0;n=e+32|0;Pm(f,t[A>>2]|0,t[n>>2]|0);s=t[f>>2]|0;f=t[f+4>>2]|0;if((f&s|0)==-1){t[l>>2]=t[n>>2];nw(1,137697,l)|0;A=1;a=0.0;r=0.0}else{i[(t[(t[A>>2]|0)+16>>2]|0)+114>>0]=1;A=0;a=+(f|0);r=+(s|0)}t[e>>2]=0;t[e+4>>2]=0;t[e+8>>2]=0;t[e+12>>2]=0;c[e+16>>3]=r;c[e+24>>3]=a;h=o;return A|0}function Wt(){return Uh(55924,t[4581]|0)|0}function Yt(e,A,r){e=e|0;A=A|0;r=r|0;r=KF(12)|0;t[r>>2]=t[A>>2];return r|0}function Ft(e,A,r){e=e|0;A=A|0;r=r|0;G2(A);return}function Mt(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;A=t[A>>2]|0;i=t[r>>2]|0;return((A|0)>(i|0)?1:((A|0)<(i|0))<<31>>31)|0}function Vt(e,A){e=e|0;A=A|0;var r=0,i=0;r=h;h=h+16|0;i=r;t[i>>2]=A;L5[t[e>>2]&63](e,i,1)|0;h=r;return}function Nt(e,A){e=e|0;A=A|0;var r=0,i=0;r=h;h=h+16|0;i=r;t[i>>2]=A;A=(L5[t[e>>2]&63](e,i,512)|0)!=0&1;h=r;return A|0}function Rt(e){e=e|0;var A=0;if(!(t[47375]|0)){A=KF((e<<2)+4|0)|0;t[47375]=A;t[A>>2]=189504;t[47386]=e}t[47387]=0;return}function xt(){G2(t[47375]|0);t[47375]=0;t[47387]=0;return}function Jt(){t[47387]=0;return}function Ht(){var e=0,A=0,r=0;A=t[47387]|0;r=t[47375]|0;e=1;while(1){if((e|0)>(A|0)){e=5;break}if((t[(t[r+(e<<2)>>2]|0)+4>>2]|0)==(e|0))e=e+1|0;else{e=4;break}}if((e|0)==4)ge(138394,137741,59,137747);else if((e|0)==5)return}function Pt(e){e=e|0;var A=0,r=0,i=0,a=0,n=0,f=0;a=t[47375]|0;n=t[a+(e<<2)>>2]|0;f=t[n>>2]|0;while(1){A=(e|0)/2|0;r=t[a+(A<<2)>>2]|0;i=a+(e<<2)|0;if((t[r>>2]|0)>=(f|0))break;t[i>>2]=r;t[r+4>>2]=e;e=A}t[i>>2]=n;t[n+4>>2]=e;return}function Xt(e){e=e|0;var A=0,r=0;r=h;h=h+16|0;A=t[47387]|0;if((A|0)==(t[47386]|0)){nw(1,137755,r)|0;e=1}else{A=A+1|0;t[47387]=A;t[(t[47375]|0)+(A<<2)>>2]=e;Pt(A);Ht();e=0}h=r;return e|0}function St(e){e=e|0;var A=0,r=0,i=0,a=0,n=0,f=0,l=0,s=0,c=0,o=0;i=t[47375]|0;a=t[i+(e<<2)>>2]|0;n=t[a>>2]|0;f=t[47387]|0;l=(f|0)/2|0;while(1){if((e|0)>(l|0))break;r=e<<1;A=t[i+(r<<2)>>2]|0;if((r|0)<(f|0)){o=r|1;s=t[i+(o<<2)>>2]|0;c=(t[A>>2]|0)<(t[s>>2]|0);r=c?o:r;A=c?s:A}if((n|0)>=(t[A>>2]|0))break;t[i+(e<<2)>>2]=A;t[A+4>>2]=e;e=r}t[i+(e<<2)>>2]=a;t[a+4>>2]=e;return}function jt(){var e=0,A=0,r=0,i=0;A=t[47387]|0;if(!A)e=0;else{i=t[47375]|0;r=i+4|0;e=t[r>>2]|0;t[r>>2]=t[i+(A<<2)>>2];A=A+-1|0;t[47387]=A;if(A|0)St(1);Ht()}return e|0}function Ut(e,A){e=e|0;A=A|0;t[e>>2]=A;Pt(t[e+4>>2]|0);Ht();return}function Tt(e,A,r){e=e|0;A=A|0;r=r|0;var a=0,n=0,f=0,l=0,s=0,o=0,u=0,b=0,h=0;u=e+16|0;l=t[u>>2]|0;l=(i[l+((t[r+12>>2]|0)*40|0)+36>>0]|0)!=(i[l+((t[r+16>>2]|0)*40|0)+36>>0]|0);s=~~((+c[A+64>>3]+-3.0-+c[A+48>>3])*.5);o=~~((+c[A+56>>3]+-3.0-+c[A+40>>3])*.5);n=(s|0)<(o|0)?s:o;b=A+4|0;a=0;while(1){e=t[b>>2]|0;if((a|0)>=(e|0)){n=a;break}f=t[A+8+(a<<2)>>2]|0;h=t[u>>2]|0;if((i[h+((t[f+12>>2]|0)*40|0)+36>>0]|0)==(i[h+((t[f+16>>2]|0)*40|0)+36>>0]|0)){n=a;break}Ot(f,n);a=a+1|0}while(1){if((n|0)>=(e|0))break;a=t[A+8+(n<<2)>>2]|0;if(l|(a|0)==(r|0)){Ot(a,i[(t[u>>2]|0)+((t[a+12>>2]|0)*40|0)+36>>0]|0?s:o);e=t[b>>2]|0}n=n+1|0}return}function Ot(e,A){e=e|0;A=A|0;var r=0,i=0;r=e+8|0;i=t[r>>2]|0;t[r>>2]=i+1;if((i|0)>=(A|0)){t[r>>2]=0;c[e>>3]=+c[e>>3]+16384.0}return}function _t(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0,f=0,l=0,s=0,o=0,u=0.0,b=0.0,w=0.0,k=0.0,d=0,v=0,g=0,m=0,p=0,E=0,B=0,y=0.0,C=0.0,I=0.0,Z=0.0,G=0,L=0,Q=0.0;B=h;h=h+112|0;m=B+64|0;g=B+96|0;o=B+32|0;p=B;E=KF(28)|0;A=gk(e)|0;v=E+4|0;t[v>>2]=A;A=KF(A*72|0)|0;d=E+12|0;t[d>>2]=A;i=p+8|0;c[i>>3]=1797693134862315708145274.0e284;c[p>>3]=1797693134862315708145274.0e284;a=p+24|0;c[a>>3]=-1797693134862315708145274.0e284;n=p+16|0;c[n>>3]=-1797693134862315708145274.0e284;f=o+16|0;l=o+8|0;s=o+24|0;r=sd(e)|0;u=1797693134862315708145274.0e284;b=1797693134862315708145274.0e284;w=-1797693134862315708145274.0e284;k=-1797693134862315708145274.0e284;while(1){if(!r)break;G=r+16|0;L=t[G>>2]|0;C=(+c[L+96>>3]+ +c[L+88>>3])*.5;C=C<1.0?1.0:C;y=+c[L+80>>3]*.5;y=y<1.0?1.0:y;Q=+c[L+16>>3];Z=Q-C;c[o>>3]=Z;C=Q+C;c[f>>3]=C;Q=+c[L+24>>3];I=Q-y;c[l>>3]=I;y=Q+y;c[s>>3]=y;Z=+c[(u>3];c[p>>3]=Z;I=+c[(b>3];c[i>>3]=I;C=+c[(w>C?p:o)+16>>3];c[n>>3]=C;y=+c[(k>y?p:o)+24>>3];c[a>>3]=y;L=A+40|0;t[L>>2]=t[o>>2];t[L+4>>2]=t[o+4>>2];t[L+8>>2]=t[o+8>>2];t[L+12>>2]=t[o+12>>2];t[L+16>>2]=t[o+16>>2];t[L+20>>2]=t[o+20>>2];t[L+24>>2]=t[o+24>>2];t[L+28>>2]=t[o+28>>2];t[A>>2]=t[A>>2]|1;t[(t[G>>2]|0)+112>>2]=A;A=A+72|0;r=cd(e,r)|0;u=Z;b=I;w=C;k=y}c[p>>3]=u+-36.0;c[i>>3]=b+-36.0;c[n>>3]=w+36.0;c[a>>3]=k+36.0;L=t[d>>2]|0;a=t[v>>2]|0;t[m>>2]=t[p>>2];t[m+4>>2]=t[p+4>>2];t[m+8>>2]=t[p+8>>2];t[m+12>>2]=t[p+12>>2];t[m+16>>2]=t[p+16>>2];t[m+20>>2]=t[p+20>>2];t[m+24>>2]=t[p+24>>2];t[m+28>>2]=t[p+28>>2];a=fn(L,a,g,m)|0;if(t[47323]&1|0){d=t[d>>2]|0;G=t[v>>2]|0;L=t[g>>2]|0;t[m>>2]=t[p>>2];t[m+4>>2]=t[p+4>>2];t[m+8>>2]=t[p+8>>2];t[m+12>>2]=t[p+12>>2];t[m+16>>2]=t[p+16>>2];t[m+20>>2]=t[p+20>>2];t[m+24>>2]=t[p+24>>2];t[m+28>>2]=t[p+28>>2];qt(d,G,m,a,L)}i=E+8|0;t[i>>2]=KF((t[g>>2]|0)*72|0)|0;t[E>>2]=t[g>>2];r=t[g>>2]|0;A=0;while(1){if((A|0)>=(r|0))break;L=(t[i>>2]|0)+(A*72|0)+40|0;G=a+(A<<5)|0;t[L>>2]=t[G>>2];t[L+4>>2]=t[G+4>>2];t[L+8>>2]=t[G+8>>2];t[L+12>>2]=t[G+12>>2];t[L+16>>2]=t[G+16>>2];t[L+20>>2]=t[G+20>>2];t[L+24>>2]=t[G+24>>2];t[L+28>>2]=t[G+28>>2];A=A+1|0}G2(a);t[m>>2]=t[p>>2];t[m+4>>2]=t[p+4>>2];t[m+8>>2]=t[p+8>>2];t[m+12>>2]=t[p+12>>2];t[m+16>>2]=t[p+16>>2];t[m+20>>2]=t[p+20>>2];t[m+24>>2]=t[p+24>>2];t[m+28>>2]=t[p+28>>2];t[E+16>>2]=Kt(E,m)|0;h=B;return E|0}function qt(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;var n=0.0,f=0,l=0,s=0.0,o=0.0,u=0.0,b=0,w=0,k=0,d=0,v=0,g=0.0,m=0.0,p=0.0;k=h;h=h+128|0;w=k+96|0;b=k+64|0;l=k+32|0;d=k+16|0;v=k;o=+c[r+16>>3];u=+c[r>>3];s=+c[r+24>>3];n=+c[r+8>>3];f=t[15712]|0;Z3(137770,f)|0;t[v>>2]=10;t[v+4>>2]=10;t[v+8>>2]=~~(o+10.0-u);t[v+12>>2]=~~(s+10.0-n);a3(f,138200,v)|0;c[d>>3]=10.0-u;c[d+8>>3]=10.0-n;a3(f,138248,d)|0;Z3(138265,f)|0;r=0;while(1){if((r|0)>=(A|0))break;p=+c[e+(r*72|0)+48>>3];m=+c[e+(r*72|0)+56>>3];g=+c[e+(r*72|0)+64>>3];c[l>>3]=+c[e+(r*72|0)+40>>3];c[l+8>>3]=p;c[l+16>>3]=m;c[l+24>>3]=g;a3(f,138284,l)|0;r=r+1|0}Z3(138302,f)|0;r=0;while(1){if((r|0)>=(a|0))break;g=+c[i+(r<<5)+8>>3];m=+c[i+(r<<5)+16>>3];p=+c[i+(r<<5)+24>>3];c[b>>3]=+c[i+(r<<5)>>3];c[b+8>>3]=g;c[b+16>>3]=m;c[b+24>>3]=p;a3(f,138321,b)|0;r=r+1|0}Z3(138339,f)|0;c[w>>3]=u;c[w+8>>3]=n;c[w+16>>3]=o;c[w+24>>3]=s;a3(f,138321,w)|0;Z3(138086,f)|0;h=k;return}function Kt(e,A){e=e|0;A=A|0;var r=0,i=0.0,a=0,n=0,f=0,l=0,s=0,o=0,u=0,b=0,w=0,k=0,d=0,v=0,g=0,m=0,p=0,E=0,B=0,y=0,C=0,I=0,Z=0,G=0,L=0;I=h;h=h+32|0;g=I+16|0;s=I;E=t[e>>2]|0;y=mr(E<<2|2)|0;C=Uh(55960,t[4581]|0)|0;p=Uh(55996,t[4581]|0)|0;E=KF(E<<7)|0;a=KF(t[e>>2]<<4)|0;B=e+8|0;n=A+16|0;f=s+8|0;l=A+24|0;o=A+8|0;r=0;while(1){if((r|0)>=(t[e>>2]|0))break;u=t[B>>2]|0;b=u+(r*72|0)|0;t[u+(r*72|0)+32>>2]=4;w=u+(r*72|0)+36|0;t[w>>2]=a+(r<<2<<2);k=u+(r*72|0)+40|0;i=+c[u+(r*72|0)+56>>3];if(i<+c[n>>3]){c[s>>3]=i;c[f>>3]=+c[u+(r*72|0)+48>>3];t[g>>2]=t[s>>2];t[g+4>>2]=t[s+4>>2];t[g+8>>2]=t[s+8>>2];t[g+12>>2]=t[s+12>>2];v=$t(y,C,g,E,1)|0;t[v+20>>2]=b;t[t[w>>2]>>2]=v}i=+c[u+(r*72|0)+64>>3];if(i<+c[l>>3]){c[s>>3]=+c[k>>3];c[f>>3]=i;t[g>>2]=t[s>>2];t[g+4>>2]=t[s+4>>2];t[g+8>>2]=t[s+8>>2];t[g+12>>2]=t[s+12>>2];v=$t(y,p,g,E,0)|0;t[v+20>>2]=b;t[(t[w>>2]|0)+4>>2]=v}if(+c[k>>3]>+c[A>>3]){t[g>>2]=t[k>>2];t[g+4>>2]=t[k+4>>2];t[g+8>>2]=t[k+8>>2];t[g+12>>2]=t[k+12>>2];v=$t(y,C,g,E,1)|0;t[v+24>>2]=b;t[(t[w>>2]|0)+8>>2]=v}if(+c[u+(r*72|0)+48>>3]>+c[o>>3]){t[g>>2]=t[k>>2];t[g+4>>2]=t[k+4>>2];t[g+8>>2]=t[k+8>>2];t[g+12>>2]=t[k+12>>2];v=$t(y,p,g,E,0)|0;t[v+24>>2]=b;t[(t[w>>2]|0)+12>>2]=v}r=r+1|0}b=KF(t[y>>2]<<2)|0;d=e+4|0;v=e+12|0;w=g+8|0;o=0;k=0;u=0;while(1){r=t[d>>2]|0;if((u|0)>=(r|0)){A=0;break}n=t[v>>2]|0;f=n+(u*72|0)|0;l=n+(u*72|0)+36|0;t[l>>2]=b+(o<<2);A=n+(u*72|0)+40|0;t[g>>2]=t[A>>2];t[g+4>>2]=t[A+4>>2];t[g+8>>2]=t[A+8>>2];t[g+12>>2]=t[A+12>>2];A=n+(u*72|0)+56|0;s=n+(u*72|0)+32|0;r=L5[t[p>>2]&63](p,g,512)|0;while(1){if(!r)break;if(!(+c[r+8>>3]<+c[A>>3]))break;G=t[r>>2]|0;Z=t[l>>2]|0;a=t[s>>2]|0;t[s>>2]=a+1;t[Z+(a<<2)>>2]=G;t[(t[r>>2]|0)+24>>2]=f;r=L5[t[p>>2]&63](p,r,8)|0}a=n+(u*72|0)+64|0;r=L5[t[C>>2]&63](C,g,512)|0;while(1){if(!r){m=20;break}i=+c[a>>3];if(!(+c[r+16>>3]>2]|0;Z=t[l>>2]|0;G=t[s>>2]|0;t[s>>2]=G+1;t[Z+(G<<2)>>2]=A;t[(t[r>>2]|0)+24>>2]=f;r=L5[t[C>>2]&63](C,r,8)|0}if((m|0)==20){m=0;i=+c[a>>3]}c[w>>3]=i;A=n+(u*72|0)+56|0;r=L5[t[p>>2]&63](p,g,512)|0;while(1){if(!r){m=25;break}i=+c[A>>3];if(!(+c[r+8>>3]>2]|0;Z=t[l>>2]|0;G=t[s>>2]|0;t[s>>2]=G+1;t[Z+(G<<2)>>2]=L;t[(t[r>>2]|0)+20>>2]=f;r=L5[t[p>>2]&63](p,r,8)|0}if((m|0)==25){m=0;i=+c[A>>3]}c[g>>3]=i;c[w>>3]=+c[n+(u*72|0)+48>>3];r=L5[t[C>>2]&63](C,g,512)|0;while(1){if(!r)break;if(!(+c[r+16>>3]<+c[a>>3]))break;Z=t[r>>2]|0;G=t[l>>2]|0;L=t[s>>2]|0;t[s>>2]=L+1;t[G+(L<<2)>>2]=Z;t[(t[r>>2]|0)+20>>2]=f;r=L5[t[C>>2]&63](C,r,8)|0}L=t[s>>2]|0;o=L+o|0;k=(L|0)>(k|0)?L:k;u=u+1|0}while(1){if((A|0)>=(r|0))break;en((t[v>>2]|0)+(A*72|0)|0);A=A+1|0;r=t[d>>2]|0}r=t[y>>2]|0;L=t[y+16>>2]|0;t[L+(r*40|0)+32>>2]=r;r=r+1|0;t[L+(r*40|0)+32>>2]=r;gr(y,k);r=0;while(1){if((r|0)>=(t[e>>2]|0))break;An((t[B>>2]|0)+(r*72|0)|0,y);r=r+1|0}Ph(C)|0;Ph(p)|0;G2(E);rn(y);dr(y);h=I;return y|0}function $t(e,A,r,a,n){e=e|0;A=A|0;r=r|0;a=a|0;n=n|0;var f=0,l=0;f=L5[t[A>>2]&63](A,r,512)|0;do{if(!f){e=pr(e)|0;if(!a)ge(138183,138131,291,138190);else{f=t[e+32>>2]|0;l=a+(f<<5)|0;a=a+(f<<5)+8|0;t[a>>2]=t[r>>2];t[a+4>>2]=t[r+4>>2];t[a+8>>2]=t[r+8>>2];t[a+12>>2]=t[r+12>>2];t[l>>2]=e;i[e+36>>0]=n;L5[t[A>>2]&63](A,l,1)|0;break}}else l=f}while(0);return t[l>>2]|0}function en(e){e=e|0;var A=0,r=0,a=0,n=0,f=0,l=0;e:do{if((+c[e+64>>3]+-3.0-+c[e+48>>3])*.5<2.0){f=t[e+32>>2]|0;l=e+36|0;n=0;while(1){if((n|0)>=(f|0))break e;A=t[(t[l>>2]|0)+(n<<2)>>2]|0;A:do{if(i[A+36>>0]|0){a=t[A+20>>2]|0;if((a|0)==(e|0)){r=t[A+24>>2]|0;A=r;r=t[r>>2]|0;do{t[A>>2]=r|8;A=t[t[A+36>>2]>>2]|0;if(!A)break A;A=t[A+24>>2]|0;r=t[A>>2]|0}while(!(r&1|0))}else{r=a;A=t[a>>2]|0;do{t[r>>2]=A|8;A=t[(t[r+36>>2]|0)+8>>2]|0;if(!A)break A;r=t[A+20>>2]|0;A=t[r>>2]|0}while(!(A&1|0))}}}while(0);n=n+1|0}}}while(0);e:do{if((+c[e+56>>3]+-3.0-+c[e+40>>3])*.5<2.0){f=t[e+32>>2]|0;l=e+36|0;n=0;while(1){if((n|0)>=(f|0))break e;A=t[(t[l>>2]|0)+(n<<2)>>2]|0;A:do{if(!(i[A+36>>0]|0)){a=t[A+20>>2]|0;if((a|0)==(e|0)){r=t[A+24>>2]|0;A=r;r=t[r>>2]|0;do{t[A>>2]=r|16;A=t[(t[A+36>>2]|0)+4>>2]|0;if(!A)break A;A=t[A+24>>2]|0;r=t[A>>2]|0}while(!(r&1|0))}else{r=a;A=t[a>>2]|0;do{t[r>>2]=A|16;A=t[(t[r+36>>2]|0)+12>>2]|0;if(!A)break A;r=t[A+20>>2]|0;A=t[r>>2]|0}while(!(A&1|0))}}}while(0);n=n+1|0}}}while(0);return}function An(e,A){e=e|0;A=A|0;var r=0,i=0,a=0.0,n=0.0,f=0.0,l=0,s=0,o=0,u=0,b=0,h=0,w=0.0,k=0;n=+c[e+56>>3]-+c[e+40>>3];f=+c[e+64>>3]-+c[e+48>>3];a=(f+n)*.5+500.0;if((f+-3.0)*.5<2.0){o=(t[e>>2]&8|0)==0;a=o?16384.0:a;w=o?16384.0:n}else w=n;if((n+-3.0)*.5<2.0){o=(t[e>>2]&16|0)==0;f=o?16384.0:f;a=o?16384.0:a}o=e+36|0;r=t[o>>2]|0;i=t[r+8>>2]|0;if((i|0)!=0?(l=t[r+4>>2]|0,(l|0)!=0):0){l=Er(A,i,l,a)|0;i=e+4|0;r=t[i>>2]|0;t[i>>2]=r+1;t[e+8+(r<<2)>>2]=l;r=t[o>>2]|0}i=t[r+4>>2]|0;if((i|0)!=0?(s=t[r>>2]|0,(s|0)!=0):0){s=Er(A,i,s,a)|0;l=e+4|0;r=t[l>>2]|0;t[l>>2]=r+1;t[e+8+(r<<2)>>2]=s;r=t[o>>2]|0}i=t[r+8>>2]|0;if((i|0)!=0?(u=t[r+12>>2]|0,(u|0)!=0):0){u=Er(A,i,u,a)|0;s=e+4|0;r=t[s>>2]|0;t[s>>2]=r+1;t[e+8+(r<<2)>>2]=u;r=t[o>>2]|0}i=t[r+12>>2]|0;if((i|0)!=0?(b=t[r>>2]|0,(b|0)!=0):0){b=Er(A,i,b,a)|0;u=e+4|0;r=t[u>>2]|0;t[u>>2]=r+1;t[e+8+(r<<2)>>2]=b;r=t[o>>2]|0}i=t[r+4>>2]|0;if((i|0)!=0?(h=t[r+12>>2]|0,(h|0)!=0):0){h=Er(A,i,h,f)|0;b=e+4|0;r=t[b>>2]|0;t[b>>2]=r+1;t[e+8+(r<<2)>>2]=h;r=t[o>>2]|0}i=t[r+8>>2]|0;if(i|0?(k=t[r>>2]|0,k|0):0){A=Er(A,i,k,w)|0;h=e+4|0;k=t[h>>2]|0;t[h>>2]=k+1;t[e+8+(k<<2)>>2]=A}return}function rn(e){e=e|0;var A=0,r=0,i=0,a=0,n=0,f=0,l=0,s=0;s=h;h=h+16|0;l=s+8|0;f=s;a=e+16|0;n=t[15712]|0;i=0;while(1){if((i|0)>=(t[e>>2]|0)){A=10;break}A=t[a>>2]|0;r=A+(i*40|0)+20|0;if((t[r>>2]|0)==0?(t[f>>2]=i,a3(n,138096,f)|0,(t[r>>2]|0)==0):0){A=5;break}A=A+(i*40|0)+24|0;if((t[A>>2]|0)==0?(t[l>>2]=i,a3(n,138148,l)|0,(t[A>>2]|0)==0):0){A=8;break}i=i+1|0}if((A|0)==5)ge(138118,138131,311,138138);else if((A|0)==8)ge(138170,138131,313,138138);else if((A|0)==10){h=s;return}}function an(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0.0,t=0.0;a=+c[A+8>>3];t=+c[r+8>>3];if(!(a>t))if(!(a>3];a=+c[r>>3];if(t>a)e=1;else e=(t>31}else e=-1;else e=1;return e|0}function tn(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0.0,t=0.0;a=+c[A>>3];t=+c[r>>3];if(!(a>t))if(!(a>3];a=+c[r+8>>3];if(t>a)e=1;else e=(t>31}else e=-1;else e=1;return e|0}function nn(e){e=e|0;var A=0,r=0;r=e+8|0;G2(t[(t[r>>2]|0)+36>>2]|0);A=e+12|0;G2(t[(t[A>>2]|0)+36>>2]|0);G2(t[r>>2]|0);G2(t[A>>2]|0);yr(t[e+16>>2]|0);Ph(t[e+20>>2]|0)|0;Ph(t[e+24>>2]|0)|0;G2(e);return}function fn(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0,n=0,f=0,l=0,s=0,c=0,o=0,u=0,b=0,w=0,k=0;w=h;h=h+32|0;f=w;l=A<<2;a=l+4|0;l=l+5|0;b=$F(l*56|0)|0;l=KF(l<<2)|0;n=a*5|1;s=$F(n*72|0)|0;o=n<<5;c=KF(o)|0;o=KF(o)|0;t[f>>2]=t[i>>2];t[f+4>>2]=t[i+4>>2];t[f+8>>2]=t[i+8>>2];t[f+12>>2]=t[i+12>>2];t[f+16>>2]=t[i+16>>2];t[f+20>>2]=t[i+20>>2];t[f+24>>2]=t[i+24>>2];t[f+28>>2]=t[i+28>>2];ln(e,A,f,b,0);f8(173);sn(a,l);gn(a,b,l,n,s)|0;u=cn(a,b,s,0,c)|0;t[f>>2]=t[i>>2];t[f+4>>2]=t[i+4>>2];t[f+8>>2]=t[i+8>>2];t[f+12>>2]=t[i+12>>2];t[f+16>>2]=t[i+16>>2];t[f+20>>2]=t[i+20>>2];t[f+24>>2]=t[i+24>>2];t[f+28>>2]=t[i+28>>2];ln(e,A,f,b,1);sn(a,l);gn(a,b,l,n,s)|0;a=cn(a,b,s,1,o)|0;n=KF(P(u<<5,a)|0)|0;A=0;e=0;while(1){if((A|0)>=(a|0))break;f=o+(A<<5)|0;i=0;while(1){if((i|0)>=(u|0))break;k=e+((on(n+(e<<5)|0,f,c+(i<<5)|0)|0)!=0&1)|0;i=i+1|0;e=k}A=A+1|0}k=AM(n,e<<5)|0;G2(b);G2(l);G2(s);G2(c);G2(o);t[r>>2]=e;h=w;return k|0}function ln(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;var n=0,f=0,l=0,s=0,c=0;s=h;h=h+96|0;f=s+64|0;l=s;t[f>>2]=t[r>>2];t[f+4>>2]=t[r+4>>2];t[f+8>>2]=t[r+8>>2];t[f+12>>2]=t[r+12>>2];t[f+16>>2]=t[r+16>>2];t[f+20>>2]=t[r+20>>2];t[f+24>>2]=t[r+24>>2];t[f+28>>2]=t[r+28>>2];dn(f,a,1,l);r=vn(i,1,l)|0;n=0;while(1){if((n|0)>=(A|0))break;c=e+(n*72|0)+40|0;t[f>>2]=t[c>>2];t[f+4>>2]=t[c+4>>2];t[f+8>>2]=t[c+8>>2];t[f+12>>2]=t[c+12>>2];t[f+16>>2]=t[c+16>>2];t[f+20>>2]=t[c+20>>2];t[f+24>>2]=t[c+24>>2];t[f+28>>2]=t[c+28>>2];dn(f,a,0,l);r=vn(i,r,l)|0;n=n+1|0}h=s;return}function sn(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0,f=0;r=0;while(1){if((r|0)>(e|0))break;t[A+(r<<2)>>2]=r;r=r+1|0}n=e+1|0;r=1;while(1){if((r|0)>(e|0))break;f=~~(+s8()*+(n-r|0)+ +(r|0));i=A+(r<<2)|0;a=A+(f<<2)|0;if((r|0)!=(f|0)){f=t[i>>2]|0;t[i>>2]=t[a>>2];t[a>>2]=f}r=r+1|0}return}function cn(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;var n=0,f=0,l=0,s=0,c=0,o=0,u=0,b=0,h=0;n=e*5|0;s=n+1|0;o=KF(s<<2)|0;t[47388]=KF(s<<4)|0;t[47389]=KF((e*56|0)+56|0)|0;s=KF(e<<2)|0;t[47390]=s;c=0;while(1){if((c|0)>(n|0))break;if(un(r+(c*72|0)|0,A)|0)break;c=c+1|0}f=t[47388]|0;l=t[47389]|0;n=1;while(1){if((n|0)>(e|0))break;t[f+(n<<4)+8>>2]=t[A+(n*56|0)+48>>2];u=A+(n*56|0)+44|0;t[f+(n<<4)+4>>2]=t[u>>2];t[f+(n<<4)>>2]=n;b=l+(n*56|0)|0;h=A+(n*56|0)|0;t[b>>2]=t[h>>2];t[b+4>>2]=t[h+4>>2];t[b+8>>2]=t[h+8>>2];t[b+12>>2]=t[h+12>>2];t[l+(n*56|0)+16>>2]=t[u>>2];t[l+(n*56|0)+32>>2]=n;t[l+(n*56|0)+48>>2]=1;n=n+1|0}t[47391]=e;t[47392]=0;t[s>>2]=1;n=t[r+(c*72|0)+40>>2]|0;if((n|0)<=0){n=t[r+(c*72|0)+48>>2]|0;if((n|0)>0)n=bn(o,a,0,A,r,0,c,n,i,2)|0;else n=0}else n=bn(o,a,0,A,r,0,c,n,i,1)|0;G2(o);G2(t[47388]|0);G2(t[47389]|0);G2(t[47390]|0);return n|0}function on(e,A,r){e=e|0;A=A|0;r=r|0;var i=0.0,a=0.0,t=0.0,n=0.0;n=+c[(+c[A>>3]>+c[r>>3]?A:r)>>3];t=+c[(+c[A+16>>3]<+c[r+16>>3]?A:r)+16>>3];c[e+16>>3]=t;c[e>>3]=n;a=+c[(+c[A+8>>3]>+c[r+8>>3]?A:r)+8>>3];i=+c[(+c[A+24>>3]<+c[r+24>>3]?A:r)+24>>3];c[e+24>>3]=i;c[e+8>>3]=a;return!(n>=t)&!(a>=i)&1|0}function un(e,A){e=e|0;A=A|0;var r=0.0,i=0.0,a=0;a=t[e+4>>2]|0;do{if((t[e+68>>2]|0)!=2?!((a|0)<1|(t[e>>2]|0)<1):0){if(!((t[e+40>>2]|0)<1?(t[e+44>>2]|0)<1:0)){if((t[e+48>>2]|0)>=1){e=0;break}if((t[e+52>>2]|0)>=1){e=0;break}}r=+c[A+(a*56|0)+24>>3];i=+c[A+(a*56|0)+8>>3];if(!(r>i+1.0e-07))if(r>3]>+c[A+(a*56|0)>>3]&1;else e=1}else e=0}while(0);return e|0}function bn(e,A,r,i,a,n,f,l,s,o){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;n=n|0;f=f|0;l=l|0;s=s|0;o=o|0;var u=0,b=0,h=0.0,w=0.0,k=0.0,d=0,v=0,g=0,m=0,p=0,E=0,B=0,y=0,C=0,I=0,Z=0,G=0,L=0,D=0,z=0,W=0,Y=0.0,F=0,M=0.0,V=0,N=0,R=0,x=0,J=0;G=(s|0)==0;Z=f;e:while(1){y=a+(Z*72|0)|0;if((Z|0)<1)break;f=e+(Z<<2)|0;if(t[f>>2]|0)break;t[f>>2]=1;p=a+(Z*72|0)+8|0;g=a+(Z*72|0)+16|0;w=+c[g>>3];E=a+(Z*72|0)+24|0;B=a+(Z*72|0)+32|0;h=+c[B>>3];if((w>h?(I=t[y>>2]|0,Y=+c[i+(I*56|0)>>3],Y==+c[i+(I*56|0)+16>>3]):0)?(I=t[a+(Z*72|0)+4>>2]|0,M=+c[i+(I*56|0)>>3],M==+c[i+(I*56|0)+16>>3]):0){f=A+(r<<5)|0;if(G){c[f>>3]=Y;k=w;w=M}else{c[f>>3]=h;k=-Y;h=-M}c[A+(r<<5)+8>>3]=h;c[A+(r<<5)+16>>3]=w;c[A+(r<<5)+24>>3]=k;r=r+1|0}f=a+(Z*72|0)+40|0;C=t[f>>2]|0;do{if((C|0)<1?(V=a+(Z*72|0)+44|0,(t[V>>2]|0)<1):0){f=a+(Z*72|0)+48|0;b=a+(Z*72|0)+52|0;if((t[f>>2]|0)>0?(N=t[b>>2]|0,(N|0)>0):0){u=t[a+(N*72|0)>>2]|0;o=t[y>>2]|0;if((N|0)==(l|0)){o=hn(n,o,u)|0;r=bn(e,A,r,i,a,n,t[b>>2]|0,Z,s,1)|0;n=o;o=1;break}else{o=hn(n,u,o)|0;r=bn(e,A,r,i,a,n,t[f>>2]|0,Z,s,1)|0;n=o;f=b;o=1;break}}r=bn(e,A,r,i,a,n,C,Z,s,2)|0;r=bn(e,A,r,i,a,n,t[V>>2]|0,Z,s,2)|0;r=bn(e,A,r,i,a,n,t[f>>2]|0,Z,s,1)|0;f=b;o=1}else J=19}while(0);do{if((J|0)==19){J=0;I=a+(Z*72|0)+48|0;d=t[I>>2]|0;if((d|0)<1?(R=a+(Z*72|0)+52|0,(t[R>>2]|0)<1):0){b=a+(Z*72|0)+44|0;if((C|0)>0?(x=t[b>>2]|0,(x|0)>0):0){u=t[a+(Z*72|0)+4>>2]|0;o=t[a+(C*72|0)+4>>2]|0;if((x|0)==(l|0)){o=hn(n,o,u)|0;r=bn(e,A,r,i,a,n,t[b>>2]|0,Z,s,2)|0;n=o;o=2;break}else{o=hn(n,u,o)|0;r=bn(e,A,r,i,a,n,t[f>>2]|0,Z,s,2)|0;n=o;f=b;o=2;break}}r=bn(e,A,r,i,a,n,C,Z,s,2)|0;r=bn(e,A,r,i,a,n,t[b>>2]|0,Z,s,2)|0;r=bn(e,A,r,i,a,n,t[I>>2]|0,Z,s,1)|0;f=R;o=1;break}m=a+(Z*72|0)+44|0;v=t[m>>2]|0;u=(v|0)>0;if((C|0)>0){if(u){if((d|0)>0?(L=a+(Z*72|0)+52|0,D=t[L>>2]|0,(D|0)>0):0){b=t[a+(D*72|0)>>2]|0;u=t[a+(C*72|0)+4>>2]|0;if(!((o|0)==2&(D|0)==(l|0))?!((o|0)==1&(v|0)==(l|0)):0){o=hn(n,b,u)|0;r=bn(e,A,r,i,a,n,t[f>>2]|0,Z,s,2)|0;r=bn(e,A,r,i,a,n,t[I>>2]|0,Z,s,1)|0;r=bn(e,A,r,i,a,o,t[m>>2]|0,Z,s,2)|0;n=o;f=L;o=1;break}o=hn(n,u,b)|0;r=bn(e,A,r,i,a,n,t[m>>2]|0,Z,s,2)|0;r=bn(e,A,r,i,a,n,t[L>>2]|0,Z,s,1)|0;r=bn(e,A,r,i,a,o,t[f>>2]|0,Z,s,2)|0;n=o;f=I;o=1;break}u=t[y>>2]|0;if(+Q(+(+c[B>>3]-+c[i+(u*56|0)+24>>3]))<=1.0e-07?+Q(+(+c[E>>3]-+c[i+(u*56|0)+16>>3]))<=1.0e-07:0){b=t[a+(C*72|0)+4>>2]|0;u=t[i+(u*56|0)+44>>2]|0;if((o|0)==1&(C|0)==(l|0)){o=hn(n,u,b)|0;r=bn(e,A,r,i,a,n,t[f>>2]|0,Z,s,2)|0;r=bn(e,A,r,i,a,o,t[I>>2]|0,Z,s,1)|0;r=bn(e,A,r,i,a,o,t[m>>2]|0,Z,s,2)|0;n=o;f=a+(Z*72|0)+52|0;o=1;break}else{o=hn(n,b,u)|0;r=bn(e,A,r,i,a,n,t[m>>2]|0,Z,s,2)|0;r=bn(e,A,r,i,a,n,t[I>>2]|0,Z,s,1)|0;r=bn(e,A,r,i,a,n,t[a+(Z*72|0)+52>>2]|0,Z,s,1)|0;n=o;o=2;break}}b=t[a+(Z*72|0)+4>>2]|0;u=t[a+(C*72|0)+4>>2]|0;if((o|0)==1&(v|0)==(l|0)){o=hn(n,u,b)|0;r=bn(e,A,r,i,a,n,t[m>>2]|0,Z,s,2)|0;r=bn(e,A,r,i,a,o,t[a+(Z*72|0)+52>>2]|0,Z,s,1)|0;r=bn(e,A,r,i,a,o,t[I>>2]|0,Z,s,1)|0;n=o;o=2;break}else{o=hn(n,b,u)|0;r=bn(e,A,r,i,a,n,t[f>>2]|0,Z,s,2)|0;r=bn(e,A,r,i,a,n,t[I>>2]|0,Z,s,1)|0;r=bn(e,A,r,i,a,n,t[a+(Z*72|0)+52>>2]|0,Z,s,1)|0;n=o;f=m;o=2;break}}}else if(!u)break e;if((d|0)>0?(z=a+(Z*72|0)+52|0,W=t[z>>2]|0,(W|0)>0):0){b=t[y>>2]|0;if(+Q(+(+c[g>>3]-+c[i+(b*56|0)+8>>3]))<=1.0e-07?+Q(+(+c[p>>3]-+c[i+(b*56|0)>>3]))<=1.0e-07:0){u=t[a+(W*72|0)>>2]|0;if((o|0)==2&(d|0)==(l|0)){o=hn(n,u,b)|0;r=bn(e,A,r,i,a,n,t[I>>2]|0,Z,s,1)|0;r=bn(e,A,r,i,a,o,t[f>>2]|0,Z,s,2)|0;r=bn(e,A,r,i,a,o,t[a+(Z*72|0)+44>>2]|0,Z,s,2)|0;n=o;f=z;o=1;break}else{o=hn(n,b,u)|0;r=bn(e,A,r,i,a,n,t[a+(Z*72|0)+44>>2]|0,Z,s,2)|0;r=bn(e,A,r,i,a,n,t[z>>2]|0,Z,s,1)|0;r=bn(e,A,r,i,a,n,t[f>>2]|0,Z,s,2)|0;n=o;f=I;o=1;break}}u=t[a+(W*72|0)>>2]|0;b=t[i+((t[a+(Z*72|0)+4>>2]|0)*56|0)+44>>2]|0;if((o|0)==2&(W|0)==(l|0)){o=hn(n,b,u)|0;r=bn(e,A,r,i,a,n,t[z>>2]|0,Z,s,1)|0;r=bn(e,A,r,i,a,o,t[a+(Z*72|0)+44>>2]|0,Z,s,2)|0;r=bn(e,A,r,i,a,o,t[f>>2]|0,Z,s,2)|0;n=o;f=I;o=1;break}else{o=hn(n,u,b)|0;r=bn(e,A,r,i,a,n,t[f>>2]|0,Z,s,2)|0;r=bn(e,A,r,i,a,n,t[I>>2]|0,Z,s,1)|0;r=bn(e,A,r,i,a,n,t[a+(Z*72|0)+44>>2]|0,Z,s,2)|0;n=o;f=z;o=1;break}}h=+c[g>>3];b=t[y>>2]|0;if(((+Q(+(h-+c[i+(b*56|0)+8>>3]))<=1.0e-07?+Q(+(+c[p>>3]-+c[i+(b*56|0)>>3]))<=1.0e-07:0)?(F=t[a+(Z*72|0)+4>>2]|0,+Q(+(+c[B>>3]-+c[i+(F*56|0)+8>>3]))<=1.0e-07):0)?+Q(+(+c[E>>3]-+c[i+(F*56|0)>>3]))<=1.0e-07:0)if((o|0)==1){o=hn(n,b,F)|0;r=bn(e,A,r,i,a,n,t[f>>2]|0,Z,s,2)|0;r=bn(e,A,r,i,a,n,t[a+(Z*72|0)+44>>2]|0,Z,s,2)|0;r=bn(e,A,r,i,a,o,t[a+(Z*72|0)+52>>2]|0,Z,s,1)|0;n=o;f=I;o=1;break}else{o=hn(n,F,b)|0;r=bn(e,A,r,i,a,n,t[a+(Z*72|0)+52>>2]|0,Z,s,1)|0;r=bn(e,A,r,i,a,n,t[I>>2]|0,Z,s,1)|0;r=bn(e,A,r,i,a,o,t[f>>2]|0,Z,s,2)|0;n=o;f=a+(Z*72|0)+44|0;o=2;break}l=t[a+(Z*72|0)+4>>2]|0;if(((+Q(+(h-+c[i+(l*56|0)+24>>3]))<=1.0e-07?+Q(+(+c[p>>3]-+c[i+(l*56|0)+16>>3]))<=1.0e-07:0)?+Q(+(+c[B>>3]-+c[i+(b*56|0)+24>>3]))<=1.0e-07:0)?+Q(+(+c[E>>3]-+c[i+(b*56|0)+16>>3]))<=1.0e-07:0){u=t[i+(l*56|0)+44>>2]|0;l=t[i+(b*56|0)+44>>2]|0;if((o|0)==1){o=hn(n,l,u)|0;r=bn(e,A,r,i,a,n,t[f>>2]|0,Z,s,2)|0;r=bn(e,A,r,i,a,n,t[a+(Z*72|0)+44>>2]|0,Z,s,2)|0;r=bn(e,A,r,i,a,o,t[a+(Z*72|0)+52>>2]|0,Z,s,1)|0;n=o;f=I;o=1;break}else{o=hn(n,u,l)|0;r=bn(e,A,r,i,a,n,t[a+(Z*72|0)+52>>2]|0,Z,s,1)|0;r=bn(e,A,r,i,a,n,t[I>>2]|0,Z,s,1)|0;r=bn(e,A,r,i,a,o,t[f>>2]|0,Z,s,2)|0;n=o;f=a+(Z*72|0)+44|0;o=2;break}}r=bn(e,A,r,i,a,n,C,Z,s,2)|0;r=bn(e,A,r,i,a,n,t[I>>2]|0,Z,s,1)|0;r=bn(e,A,r,i,a,n,t[a+(Z*72|0)+44>>2]|0,Z,s,2)|0;f=a+(Z*72|0)+52|0;o=1}}while(0);l=Z;Z=t[f>>2]|0}return r|0}function hn(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0,n=0,f=0,l=0,s=0,c=0,o=0,u=0,b=0,w=0,k=0,d=0;a=h;h=h+16|0;d=a+4|0;l=a;i=(t[47392]|0)+1|0;t[47392]=i;o=t[47389]|0;wn(A,r,d,l);d=t[d>>2]|0;f=t[o+(A*56|0)+32+(d<<2)>>2]|0;l=t[o+(r*56|0)+32+(t[l>>2]<<2)>>2]|0;u=t[47391]|0;n=u+1|0;u=u+2|0;t[47391]=u;k=t[47388]|0;t[k+(n<<4)>>2]=A;t[k+(u<<4)>>2]=r;b=k+(f<<4)+4|0;w=k+(n<<4)+4|0;t[w>>2]=t[b>>2];t[k+(t[b>>2]<<4)+8>>2]=n;t[k+(n<<4)+8>>2]=u;t[k+(u<<4)+4>>2]=n;s=k+(l<<4)+8|0;t[k+(u<<4)+8>>2]=t[s>>2];t[k+(t[s>>2]<<4)+4>>2]=u;t[b>>2]=l;t[s>>2]=f;s=o+(A*56|0)+48|0;b=t[s>>2]|0;l=o+(r*56|0)+48|0;c=t[l>>2]|0;t[o+(A*56|0)+16+(d<<2)>>2]=r;t[o+(A*56|0)+32+(b<<2)>>2]=n;t[o+(A*56|0)+16+(b<<2)>>2]=t[k+(t[w>>2]<<4)>>2];t[o+(r*56|0)+32+(c<<2)>>2]=u;t[o+(r*56|0)+16+(c<<2)>>2]=A;t[s>>2]=(t[s>>2]|0)+1;t[l>>2]=(t[l>>2]|0)+1;r=t[47390]|0;t[r+(e<<2)>>2]=f;t[r+(i<<2)>>2]=n;h=a;return i|0}function wn(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0,n=0.0,f=0,l=0,s=0.0,c=0.0,o=0,u=0,b=0;o=t[47389]|0;u=o+(e*56|0)|0;b=o+(A*56|0)|0;a=0;n=-4.0;l=0;while(1){if((l|0)==4)break;f=t[o+(e*56|0)+16+(l<<2)>>2]|0;if((f|0)>=1?(s=+kn(u,o+(f*56|0)|0,b),s>n):0){a=l;n=s}l=l+1|0}t[r>>2]=a;a=0;l=0;n=-4.0;while(1){if((l|0)==4)break;f=t[o+(A*56|0)+16+(l<<2)>>2]|0;if((f|0)>=1?(c=+kn(b,o+(f*56|0)|0,u),c>n):0){a=l;n=c}l=l+1|0}t[i>>2]=a;return}function kn(e,A,r){e=e|0;A=A|0;r=r|0;var i=0.0,a=0.0,t=0.0,n=0.0,f=0.0;n=+c[e>>3];f=+c[A>>3]-n;i=+c[e+8>>3];t=+c[A+8>>3]-i;n=+c[r>>3]-n;i=+c[r+8>>3]-i;a=i*t+n*f;if(!(i*f-n*t>=0.0))i=-a/(+D(+(i*i+n*n))*+D(+(t*t+f*f)))+-2.0;else i=a/(+D(+(i*i+n*n))*+D(+(t*t+f*f)));return+i}function dn(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0,n=0,f=0,l=0,s=0.0,o=0.0;t[i>>2]=t[e>>2];t[i+4>>2]=t[e+4>>2];t[i+8>>2]=t[e+8>>2];t[i+12>>2]=t[e+12>>2];f=i+32|0;l=e+16|0;t[f>>2]=t[l>>2];t[f+4>>2]=t[l+4>>2];t[f+8>>2]=t[l+8>>2];t[f+12>>2]=t[l+12>>2];if(!r){a=e+8|0;n=l;f=e+24|0;r=e}else{a=e+24|0;n=e;f=e+8|0;r=l}s=+c[n>>3];o=+c[f>>3];c[i+16>>3]=+c[r>>3];c[i+24>>3]=o;c[i+48>>3]=s;c[i+56>>3]=+c[a>>3];e:do{if(A|0){r=0;while(1){if((r|0)==4)break e;l=i+(r<<4)+8|0;o=+c[l>>3];A=i+(r<<4)|0;c[l>>3]=+c[A>>3];c[A>>3]=-o;r=r+1|0}}}while(0);return}function vn(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0,n=0,f=0,l=0,s=0,c=0,o=0,u=0,b=0;f=A+3|0;l=A+1|0;s=A+2|0;c=e+(A*56|0)+44|0;o=e+(f*56|0)+44|0;i=0;a=A;while(1){if((a|0)>(f|0))break;do{if((a|0)!=(A|0))if((a|0)==(f|0)){t[o>>2]=A;n=s;break}else{t[e+(a*56|0)+44>>2]=a+1;n=a+-1|0;break}else{t[c>>2]=l;n=f}}while(0);t[e+(a*56|0)+48>>2]=n;t[e+(a*56|0)+32>>2]=0;b=e+(a*56|0)|0;u=r+(i<<4)|0;t[b>>2]=t[u>>2];t[b+4>>2]=t[u+4>>2];t[b+8>>2]=t[u+8>>2];t[b+12>>2]=t[u+12>>2];D6(e+(n*56|0)+16|0,u|0,16)|0;i=i+1|0;a=a+1|0}return A+4|0}function gn(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;var n=0,f=0,l=0,s=0,c=0;t[47393]=i<<1;t[47394]=i;c=KF(i*80|0)|0;t[47395]=1;t[47396]=1;z6(a|0,0,i*72|0)|0;n=mn(t[r+4>>2]|0,A,a,c)|0;i=1;while(1){if((i|0)>(e|0))break;t[A+(i*56|0)+40>>2]=n;t[A+(i*56|0)+36>>2]=n;i=i+1|0}s=pn(e)|0;n=2;l=1;while(1){if((l|0)>(s|0))break;i=En(e,l+-1|0)|0;f=En(e,l)|0;while(1){if((i|0)>=(f|0)){i=1;break}Bn(t[r+(n<<2)>>2]|0,A,a,c);i=i+1|0;n=n+1|0}while(1){if((i|0)>(e|0))break;yn(i,A,a,c);i=i+1|0}l=l+1|0}i=En(e,s)|0;while(1){if((i|0)>=(e|0))break;Bn(t[r+(n<<2)>>2]|0,A,a,c);n=n+1|0;i=i+1|0}G2(c);return t[47395]|0}function mn(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0,n=0,f=0,l=0,s=0,o=0,u=0,b=0,h=0,w=0,k=0,d=0,v=0,g=0;a=Ln()|0;t[i+(a*40|0)>>2]=2;v=i+(a*40|0)+8|0;s=A+(e*56|0)|0;o=A+(e*56|0)+16|0;Wn(v,s,o);b=Ln()|0;t[i+(a*40|0)+36>>2]=b;t[i+(b*40|0)>>2]=3;t[i+(b*40|0)+28>>2]=a;l=Ln()|0;t[i+(a*40|0)+32>>2]=l;t[i+(l*40|0)>>2]=2;d=i+(l*40|0)+8|0;Yn(d,s,o);t[i+(l*40|0)+28>>2]=a;o=Ln()|0;t[i+(l*40|0)+32>>2]=o;t[i+(o*40|0)>>2]=3;t[i+(o*40|0)+28>>2]=l;s=Ln()|0;t[i+(l*40|0)+36>>2]=s;t[i+(s*40|0)>>2]=1;t[i+(s*40|0)+4>>2]=e;t[i+(s*40|0)+28>>2]=l;l=Ln()|0;t[i+(s*40|0)+32>>2]=l;t[i+(l*40|0)>>2]=3;t[i+(l*40|0)+28>>2]=s;n=Ln()|0;t[i+(s*40|0)+36>>2]=n;t[i+(n*40|0)>>2]=3;t[i+(n*40|0)+28>>2]=s;s=Gn(r)|0;f=Gn(r)|0;u=Gn(r)|0;h=Gn(r)|0;w=r+(s*72|0)+8|0;k=r+(f*72|0)+8|0;g=r+(h*72|0)+24|0;t[g>>2]=t[v>>2];t[g+4>>2]=t[v+4>>2];t[g+8>>2]=t[v+8>>2];t[g+12>>2]=t[v+12>>2];D6(k|0,v|0,16)|0;t[w>>2]=t[k>>2];t[w+4>>2]=t[k+4>>2];t[w+8>>2]=t[k+8>>2];t[w+12>>2]=t[k+12>>2];w=r+(s*72|0)+24|0;k=r+(f*72|0)+24|0;v=r+(u*72|0)+8|0;t[v>>2]=t[d>>2];t[v+4>>2]=t[d+4>>2];t[v+8>>2]=t[d+8>>2];t[v+12>>2]=t[d+12>>2];D6(k|0,d|0,16)|0;t[w>>2]=t[k>>2];t[w+4>>2]=t[k+4>>2];t[w+8>>2]=t[k+8>>2];t[w+12>>2]=t[k+12>>2];c[r+(h*72|0)+16>>3]=1073741824.0;c[r+(h*72|0)+8>>3]=1073741824.0;c[r+(u*72|0)+32>>3]=-1073741824.0;c[r+(u*72|0)+24>>3]=-1073741824.0;t[r+(f*72|0)>>2]=e;t[r+(s*72|0)+4>>2]=e;t[r+(f*72|0)+40>>2]=h;t[r+(s*72|0)+40>>2]=h;t[r+(f*72|0)+48>>2]=u;t[r+(s*72|0)+48>>2]=u;t[r+(u*72|0)+40>>2]=s;t[r+(h*72|0)+48>>2]=s;t[r+(u*72|0)+44>>2]=f;t[r+(h*72|0)+52>>2]=f;t[r+(s*72|0)+56>>2]=l;t[r+(f*72|0)+56>>2]=n;t[r+(u*72|0)+56>>2]=o;t[r+(h*72|0)+56>>2]=b;t[r+(f*72|0)+68>>2]=1;t[r+(s*72|0)+68>>2]=1;t[r+(h*72|0)+68>>2]=1;t[r+(u*72|0)+68>>2]=1;t[i+(b*40|0)+24>>2]=h;t[i+(o*40|0)+24>>2]=u;t[i+(l*40|0)+24>>2]=s;t[i+(n*40|0)+24>>2]=f;t[A+(e*56|0)+32>>2]=1;return a|0}function pn(e){e=e|0;var A=0.0;A=+(e|0);e=0;while(1){if(!(A>=1.0))break;A=+t1(A);e=e+1|0}return e+-1|0}function En(e,A){e=e|0;A=A|0;var r=0.0,i=0.0;i=+(e|0);r=i;e=0;while(1){if((e|0)>=(A|0))break;r=+t1(r);e=e+1|0}return~~+H(+(i/r))|0}function Bn(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0,n=0,f=0.0,l=0.0,s=0,o=0,u=0,b=0,w=0,k=0.0,d=0,v=0,g=0,m=0,p=0,E=0,B=0,y=0,C=0,I=0,Z=0,G=0,L=0,D=0,z=0,W=0,Y=0,F=0,M=0,V=0,N=0,R=0,x=0,J=0,H=0,P=0,X=0,S=0,j=0,U=0,T=0,O=0;T=h;h=h+96|0;X=T+32|0;a=T+16|0;S=T;v=X;s=A+(e*56|0)|0;d=v+56|0;do{t[v>>2]=t[s>>2];v=v+4|0;s=s+4|0}while((v|0)<(d|0));j=X+16|0;U=X+24|0;f=+c[U>>3];W=X+8|0;l=+c[W>>3];do{if(!(f>l+1.0e-07)){if(!(f>3]>+c[X>>3]:0){z=4;break}z=(Zn(e,A,1)|0)==0;a=t[X+36>>2]|0;if(z){u=0;z=7}else{a=Cn(X,j,a,A,i)|0;z=20}}else z=4}while(0);if((z|0)==4){t[a>>2]=t[X>>2];t[a+4>>2]=t[X+4>>2];t[a+8>>2]=t[X+8>>2];t[a+12>>2]=t[X+12>>2];t[X>>2]=t[j>>2];t[X+4>>2]=t[j+4>>2];t[X+8>>2]=t[j+8>>2];t[X+12>>2]=t[j+12>>2];t[j>>2]=t[a>>2];t[j+4>>2]=t[a+4>>2];t[j+8>>2]=t[a+8>>2];t[j+12>>2]=t[a+12>>2];L=X+36|0;D=t[L>>2]|0;z=X+40|0;a=t[z>>2]|0;t[L>>2]=a;t[z>>2]=D;if(!(Zn(e,A,2)|0)){u=1;z=7}else{a=Cn(X,j,a,A,i)|0;z=19}}if((z|0)==7){o=Cn(X,j,a,A,i)|0;a=Gn(r)|0;t[r+(a*72|0)+68>>2]=1;v=r+(a*72|0)|0;s=r+(o*72|0)|0;d=v+72|0;do{t[v>>2]=t[s>>2];v=v+4|0;s=s+4|0}while((v|0)<(d|0));k=+c[W>>3];c[r+(a*72|0)+16>>3]=k;c[r+(o*72|0)+32>>3]=k;k=+c[X>>3];c[r+(a*72|0)+8>>3]=k;c[r+(o*72|0)+24>>3]=k;t[r+(o*72|0)+48>>2]=a;t[r+(o*72|0)+52>>2]=0;t[r+(a*72|0)+40>>2]=o;t[r+(a*72|0)+44>>2]=0;n=t[r+(a*72|0)+48>>2]|0;if((n|0)>0){s=r+(n*72|0)+40|0;if((t[s>>2]|0)==(o|0))t[s>>2]=a;n=r+(n*72|0)+44|0;if((t[n>>2]|0)==(o|0))t[n>>2]=a}n=t[r+(a*72|0)+52>>2]|0;if((n|0)>0){s=r+(n*72|0)+40|0;if((t[s>>2]|0)==(o|0))t[s>>2]=a;n=r+(n*72|0)+44|0;if((t[n>>2]|0)==(o|0))t[n>>2]=a}L=Ln()|0;z=Ln()|0;D=r+(o*72|0)+56|0;G=t[D>>2]|0;t[i+(G*40|0)>>2]=2;Z=i+(G*40|0)+8|0;t[Z>>2]=t[X>>2];t[Z+4>>2]=t[X+4>>2];t[Z+8>>2]=t[X+8>>2];t[Z+12>>2]=t[X+12>>2];t[i+(G*40|0)+4>>2]=e;t[i+(G*40|0)+32>>2]=z;t[i+(G*40|0)+36>>2]=L;t[i+(L*40|0)>>2]=3;t[i+(L*40|0)+24>>2]=o;t[i+(L*40|0)+28>>2]=G;t[i+(z*40|0)>>2]=3;t[i+(z*40|0)+24>>2]=a;t[i+(z*40|0)+28>>2]=G;t[D>>2]=L;t[r+(a*72|0)+56>>2]=z;if(u)z=19;else z=20}if((z|0)==19)if(!(Zn(e,A,1)|0)){n=1;z=21}else{n=1;z=32}else if((z|0)==20)if(!(Zn(e,A,2)|0)){n=0;z=21}else{n=0;z=32}if((z|0)==21){b=Cn(j,X,t[X+40>>2]|0,A,i)|0;u=Gn(r)|0;t[r+(u*72|0)+68>>2]=1;v=r+(u*72|0)|0;s=r+(b*72|0)|0;d=v+72|0;do{t[v>>2]=t[s>>2];v=v+4|0;s=s+4|0}while((v|0)<(d|0));k=+c[U>>3];c[r+(u*72|0)+16>>3]=k;c[r+(b*72|0)+32>>3]=k;k=+c[j>>3];c[r+(u*72|0)+8>>3]=k;c[r+(b*72|0)+24>>3]=k;t[r+(b*72|0)+48>>2]=u;t[r+(b*72|0)+52>>2]=0;t[r+(u*72|0)+40>>2]=b;t[r+(u*72|0)+44>>2]=0;s=t[r+(u*72|0)+48>>2]|0;if((s|0)>0){o=r+(s*72|0)+40|0;if((t[o>>2]|0)==(b|0))t[o>>2]=u;s=r+(s*72|0)+44|0;if((t[s>>2]|0)==(b|0))t[s>>2]=u}s=t[r+(u*72|0)+52>>2]|0;if((s|0)>0){o=r+(s*72|0)+40|0;if((t[o>>2]|0)==(b|0))t[o>>2]=u;s=r+(s*72|0)+44|0;if((t[s>>2]|0)==(b|0))t[s>>2]=u}G=Ln()|0;D=Ln()|0;L=r+(b*72|0)+56|0;Z=t[L>>2]|0;t[i+(Z*40|0)>>2]=2;I=i+(Z*40|0)+8|0;t[I>>2]=t[j>>2];t[I+4>>2]=t[j+4>>2];t[I+8>>2]=t[j+8>>2];t[I+12>>2]=t[j+12>>2];t[i+(Z*40|0)+4>>2]=e;t[i+(Z*40|0)+32>>2]=D;t[i+(Z*40|0)+36>>2]=G;t[i+(G*40|0)>>2]=3;t[i+(G*40|0)+24>>2]=b;t[i+(G*40|0)+28>>2]=Z;t[i+(D*40|0)>>2]=3;t[i+(D*40|0)+24>>2]=u;t[i+(D*40|0)+28>>2]=Z;t[L>>2]=G;t[r+(u*72|0)+56>>2]=D;D=a;a=0}else if((z|0)==32){D=a;b=Cn(j,X,t[X+40>>2]|0,A,i)|0;a=1}e:do{if((D|0)>0){G=r+(b*72|0)+24|0;L=r+(b*72|0)+32|0;Z=(a|0)!=0;y=n?A+(e*56|0)+48|0:A+(e*56|0)+44|0;C=S+8|0;n=0;a=0;B=D;A:while(1){s=r+(B*72|0)|0;p=r+(B*72|0)+24|0;if(!(Qn(p,G)|0))break e;o=r+(B*72|0)+56|0;m=t[o>>2]|0;u=Ln()|0;w=Ln()|0;t[i+(m*40|0)>>2]=1;t[i+(m*40|0)+4>>2]=e;t[i+(m*40|0)+32>>2]=u;t[i+(m*40|0)+36>>2]=w;t[i+(u*40|0)>>2]=3;t[i+(u*40|0)+24>>2]=B;t[i+(u*40|0)+28>>2]=m;t[i+(w*40|0)>>2]=3;E=Gn(r)|0;t[i+(w*40|0)+24>>2]=E;I=r+(E*72|0)|0;t[r+(E*72|0)+68>>2]=1;t[i+(w*40|0)+28>>2]=m;n=(B|0)==(D|0)?E:n;m=r+(B*72|0)+32|0;if(+Q(+(+c[m>>3]-+c[L>>3]))<=1.0e-07?+Q(+(+c[p>>3]-+c[G>>3]))<=1.0e-07:0)a=E;v=I;d=v+72|0;do{t[v>>2]=t[s>>2];v=v+4|0;s=s+4|0}while((v|0)<(d|0));t[o>>2]=u;t[r+(E*72|0)+56>>2]=w;g=r+(B*72|0)+48|0;o=r+(B*72|0)+52|0;s=(t[o>>2]|0)<1;do{if((t[g>>2]|0)<1){if(s)break A;v=r+(B*72|0)+40|0;s=t[v>>2]|0;do{if((s|0)>0?(N=r+(B*72|0)+44|0,R=t[N>>2]|0,(R|0)>0):0){d=r+(B*72|0)+60|0;s=t[d>>2]|0;if((s|0)<=0){t[r+(E*72|0)+40>>2]=R;t[r+(E*72|0)+44>>2]=-1;t[N>>2]=-1;t[r+(R*72|0)+48>>2]=E;break}if((t[r+(B*72|0)+64>>2]|0)==1){t[r+(E*72|0)+40>>2]=R;t[N>>2]=-1;t[r+(E*72|0)+44>>2]=s;t[r+((t[v>>2]|0)*72|0)+48>>2]=B;w=E;u=R}else{t[r+(E*72|0)+44>>2]=-1;g=r+(E*72|0)+40|0;t[g>>2]=t[N>>2];u=t[v>>2]|0;t[N>>2]=u;t[v>>2]=s;t[r+(s*72|0)+48>>2]=B;w=B;s=t[g>>2]|0}t[r+(u*72|0)+48>>2]=w;t[r+(s*72|0)+48>>2]=E;t[r+(E*72|0)+60>>2]=0;t[d>>2]=0}else z=77}while(0);do{if((z|0)==77){z=0;u=r+(s*72|0)+48|0;w=t[u>>2]|0;s=r+(s*72|0)+52|0;if((w|0)>0?(t[s>>2]|0)>0:0){s=t[r+(w*72|0)+4>>2]|0;if((s|0)>0?(In(s,A,j)|0)==0:0){t[r+(E*72|0)+44>>2]=-1;t[r+(B*72|0)+44>>2]=-1;t[v>>2]=-1;t[r+((t[r+(E*72|0)+40>>2]|0)*72|0)+52>>2]=E;break}t[r+(B*72|0)+44>>2]=-1;t[r+(E*72|0)+44>>2]=-1;t[r+(E*72|0)+40>>2]=-1;t[r+((t[v>>2]|0)*72|0)+48>>2]=B;break}t[u>>2]=B;t[s>>2]=E}}while(0);if(+Q(+(+c[m>>3]-+c[L>>3]))<=1.0e-07?Z&+Q(+(+c[p>>3]-+c[G>>3]))<=1.0e-07:0){s=t[y>>2]|0;if((s|0)>0?(In(s,A,X)|0)!=0:0){t[r+((t[o>>2]|0)*72|0)+40>>2]=B;u=r+(E*72|0)+52|0;s=E}else{t[r+((t[r+(E*72|0)+52>>2]|0)*72|0)+44>>2]=E;u=o;s=B}t[u>>2]=-1;t[r+(s*72|0)+48>>2]=-1;s=t[o>>2]|0;break}s=t[o>>2]|0;o=r+(s*72|0)+40|0;u=t[o>>2]|0;w=r+(s*72|0)+44|0;if((u|0)>0?(x=t[w>>2]|0,J=(u|0)==(B|0),(x|0)>0):0){t[r+(s*72|0)+60>>2]=J?x:u;t[r+(s*72|0)+64>>2]=J?1:2}t[o>>2]=B;t[w>>2]=E}else{if(!s){f=+c[m>>3];l=+c[W>>3];k=f-l;if(!(+Q(+k)<=1.0e-07)){c[C>>3]=f;f=+c[X>>3];c[S>>3]=(+c[j>>3]-f)*(k/(+c[U>>3]-l))+f;v=(Dn(S,p)|0)!=0}else v=+c[p>>3]>+c[X>>3];d=r+(B*72|0)+40|0;s=t[d>>2]|0;do{if((s|0)>0?(H=r+(B*72|0)+44|0,P=t[H>>2]|0,(P|0)>0):0){w=r+(B*72|0)+60|0;s=t[w>>2]|0;if((s|0)<=0){t[r+(E*72|0)+40>>2]=P;t[r+(E*72|0)+44>>2]=-1;t[H>>2]=-1;t[r+(P*72|0)+48>>2]=E;break}if((t[r+(B*72|0)+64>>2]|0)==1){t[r+(E*72|0)+40>>2]=P;t[H>>2]=-1;t[r+(E*72|0)+44>>2]=s;t[r+((t[d>>2]|0)*72|0)+48>>2]=B;u=E;o=P}else{t[r+(E*72|0)+44>>2]=-1;O=r+(E*72|0)+40|0;t[O>>2]=t[H>>2];o=t[d>>2]|0;t[H>>2]=o;t[d>>2]=s;t[r+(s*72|0)+48>>2]=B;u=B;s=t[O>>2]|0}t[r+(o*72|0)+48>>2]=u;t[r+(s*72|0)+48>>2]=E;t[r+(E*72|0)+60>>2]=0;t[w>>2]=0}else z=106}while(0);do{if((z|0)==106){z=0;o=r+(s*72|0)+48|0;u=t[o>>2]|0;s=r+(s*72|0)+52|0;if((u|0)>0?(t[s>>2]|0)>0:0){s=t[r+(u*72|0)+4>>2]|0;if((s|0)>0?(In(s,A,j)|0)==0:0){t[r+(E*72|0)+44>>2]=-1;t[r+(B*72|0)+44>>2]=-1;t[d>>2]=-1;t[r+((t[r+(E*72|0)+40>>2]|0)*72|0)+52>>2]=E;break}t[r+(B*72|0)+44>>2]=-1;t[r+(E*72|0)+44>>2]=-1;t[r+(E*72|0)+40>>2]=-1;t[r+((t[d>>2]|0)*72|0)+48>>2]=B;break}t[o>>2]=B;t[s>>2]=E}}while(0);if(+Q(+(+c[m>>3]-+c[L>>3]))<=1.0e-07?Z&+Q(+(+c[p>>3]-+c[G>>3]))<=1.0e-07:0){s=t[g>>2]|0;t[r+(s*72|0)+40>>2]=B;t[r+(s*72|0)+44>>2]=-1;s=r+(B*72|0)+52|0;O=t[s>>2]|0;t[r+(O*72|0)+40>>2]=E;t[r+(O*72|0)+44>>2]=-1;t[r+(E*72|0)+48>>2]=O;t[r+(E*72|0)+52>>2]=-1;t[s>>2]=-1;s=-1}else z=116;do{if((z|0)==116){z=0;s=t[g>>2]|0;t[r+(s*72|0)+40>>2]=B;o=r+(s*72|0)+44|0;if(v){t[o>>2]=E;O=r+(B*72|0)+52|0;p=t[O>>2]|0;t[r+(p*72|0)+40>>2]=E;t[r+(p*72|0)+44>>2]=-1;t[O>>2]=-1;break}else{t[o>>2]=-1;s=r+(B*72|0)+52|0;O=t[s>>2]|0;t[r+(O*72|0)+40>>2]=B;t[r+(O*72|0)+44>>2]=E;t[r+(E*72|0)+48>>2]=O;t[r+(E*72|0)+52>>2]=-1;s=t[s>>2]|0;break}}}while(0);break}v=r+(B*72|0)+40|0;s=t[v>>2]|0;do{if((s|0)>0?(Y=r+(B*72|0)+44|0,F=t[Y>>2]|0,(F|0)>0):0){d=r+(B*72|0)+60|0;s=t[d>>2]|0;if((s|0)<=0){t[r+(E*72|0)+40>>2]=F;t[r+(E*72|0)+44>>2]=-1;t[Y>>2]=-1;t[r+(F*72|0)+48>>2]=E;break}if((t[r+(B*72|0)+64>>2]|0)==1){t[r+(E*72|0)+40>>2]=F;t[Y>>2]=-1;t[r+(E*72|0)+44>>2]=s;t[r+((t[v>>2]|0)*72|0)+48>>2]=B;w=E;u=F}else{t[r+(E*72|0)+44>>2]=-1;O=r+(E*72|0)+40|0;t[O>>2]=t[Y>>2];u=t[v>>2]|0;t[Y>>2]=u;t[v>>2]=s;t[r+(s*72|0)+48>>2]=B;w=B;s=t[O>>2]|0}t[r+(u*72|0)+48>>2]=w;t[r+(s*72|0)+48>>2]=E;t[r+(E*72|0)+60>>2]=0;t[d>>2]=0}else z=51}while(0);do{if((z|0)==51){z=0;u=r+(s*72|0)+48|0;w=t[u>>2]|0;s=r+(s*72|0)+52|0;if((w|0)>0?(t[s>>2]|0)>0:0){s=t[r+(w*72|0)+4>>2]|0;if((s|0)>0?(In(s,A,j)|0)==0:0){t[r+(E*72|0)+44>>2]=-1;t[r+(B*72|0)+44>>2]=-1;t[v>>2]=-1;t[r+((t[r+(E*72|0)+40>>2]|0)*72|0)+52>>2]=E;break}t[r+(B*72|0)+44>>2]=-1;t[r+(E*72|0)+44>>2]=-1;t[r+(E*72|0)+40>>2]=-1;t[r+((t[v>>2]|0)*72|0)+48>>2]=B;break}t[u>>2]=B;t[s>>2]=E}}while(0);if(+Q(+(+c[m>>3]-+c[L>>3]))<=1.0e-07?Z&+Q(+(+c[p>>3]-+c[G>>3]))<=1.0e-07:0){s=t[y>>2]|0;if((s|0)>0?(In(s,A,X)|0)!=0:0){t[r+((t[g>>2]|0)*72|0)+40>>2]=B;o=r+(E*72|0)+52|0;s=E}else{t[r+((t[r+(E*72|0)+48>>2]|0)*72|0)+44>>2]=E;s=B}t[o>>2]=-1;t[r+(s*72|0)+48>>2]=-1;s=t[g>>2]|0;break}s=t[g>>2]|0;o=r+(s*72|0)+40|0;u=t[o>>2]|0;w=r+(s*72|0)+44|0;if((u|0)>0?(M=t[w>>2]|0,V=(u|0)==(B|0),(M|0)>0):0){t[r+(s*72|0)+60>>2]=V?M:u;t[r+(s*72|0)+64>>2]=V?1:2}t[o>>2]=B;t[w>>2]=E}}while(0);t[I>>2]=e;t[r+(B*72|0)+4>>2]=e;if((s|0)>0)B=s;else break e}G3(138424,19,1,t[15712]|0)|0}else{n=0;a=0}}while(0);zn(e,D,b,1,r,i);zn(e,n,a,2,r,i);t[A+(e*56|0)+32>>2]=1;h=T;return}function yn(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0,n=0,f=0;if(!(t[A+(e*56|0)+32>>2]|0)){a=A+(e*56|0)|0;n=A+(e*56|0)+16|0;f=A+(e*56|0)+36|0;t[f>>2]=t[r+((Cn(a,n,t[f>>2]|0,A,i)|0)*72|0)+56>>2];e=A+(e*56|0)+40|0;t[e>>2]=t[r+((Cn(n,a,t[e>>2]|0,A,i)|0)*72|0)+56>>2]}return}function Cn(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;var n=0.0,f=0,l=0.0,s=0.0,o=0.0,u=0.0,b=0.0,h=0,w=0.0,k=0,d=0;h=e+8|0;k=A+8|0;e:while(1){A:do{switch(t[a+(r*40|0)>>2]|0){case 3:{d=3;break e}case 2:{n=+c[h>>3];f=a+(r*40|0)+8|0;l=+c[a+(r*40|0)+16>>3];s=l+1.0e-07;do{if(!(n>s)){o=l+-1.0e-07;if(!(n>3]>+c[f>>3]:0)break;if(+Q(+(n-l))<=1.0e-07?(u=+c[f>>3],+Q(+(+c[e>>3]-u))<=1.0e-07):0){n=+c[k>>3];do{if(!(n>s)){if(!(n>3]>u:0)break;r=a+(r*40|0)+32|0;break A}}while(0);r=a+(r*40|0)+36|0;break A}r=a+(r*40|0)+32|0;break A}}while(0);r=a+(r*40|0)+36|0;break}case 1:{n=+c[h>>3];f=t[a+(r*40|0)+4>>2]|0;if(+Q(+(n-+c[i+(f*56|0)+8>>3]))<=1.0e-07?(b=+c[e>>3],+Q(+(b-+c[i+(f*56|0)>>3]))<=1.0e-07):0)l=b;else d=19;do{if((d|0)==19){d=0;if(+Q(+(n-+c[i+(f*56|0)+24>>3]))<=1.0e-07?(w=+c[e>>3],+Q(+(w-+c[i+(f*56|0)+16>>3]))<=1.0e-07):0){l=w;break}if(!(In(f,i,e)|0)){r=a+(r*40|0)+36|0;break A}else{r=a+(r*40|0)+32|0;break A}}}while(0);if(!(+Q(+(n-+c[k>>3]))<=1.0e-07))if(!(In(f,i,A)|0)){r=a+(r*40|0)+36|0;break A}else{r=a+(r*40|0)+32|0;break A}else if(+c[A>>3]>2]|0}if((d|0)==3)return t[a+(r*40|0)+24>>2]|0;else if((d|0)==31){G3(138358,35,1,t[15712]|0)|0;ge(138394,138396,349,138408)}return 0}function In(e,A,r){e=e|0;A=A|0;r=r|0;var i=0.0,a=0.0,t=0,n=0.0,f=0,l=0,s=0.0;t=A+(e*56|0)+16|0;n=+c[A+(e*56|0)+24>>3];f=A+(e*56|0)|0;a=+c[A+(e*56|0)+8>>3];do{if(!(n>a+1.0e-07)){if(!(n>3]>+c[f>>3]:0){l=4;break}i=+c[r+8>>3];if(+Q(+(n-i))<=1.0e-07){i=+c[r>>3]<+c[t>>3]?1.0:-1.0;break}if(!(+Q(+(a-i))<=1.0e-07)){s=+c[t>>3];i=(+c[f>>3]-s)*(i-n)-(+c[r>>3]-s)*(a-n);break}else{i=+c[r>>3]<+c[f>>3]?1.0:-1.0;break}}else l=4}while(0);do{if((l|0)==4){i=+c[r+8>>3];if(+Q(+(n-i))<=1.0e-07){i=+c[r>>3]<+c[t>>3]?1.0:-1.0;break}if(!(+Q(+(a-i))<=1.0e-07)){s=+c[f>>3];i=(+c[t>>3]-s)*(i-a)-(+c[r>>3]-s)*(n-a);break}else{i=+c[r>>3]<+c[f>>3]?1.0:-1.0;break}}}while(0);return i>0.0|0}function Zn(e,A,r){e=e|0;A=A|0;r=r|0;return t[A+((t[((r|0)==1?A+(e*56|0)+48|0:A+(e*56|0)+44|0)>>2]|0)*56|0)+32>>2]|0}function Gn(e){e=e|0;var A=0,r=0,i=0;i=h;h=h+16|0;r=i;A=t[47395]|0;if((A|0)<(t[47394]|0)){t[e+(A*72|0)>>2]=-1;t[e+(A*72|0)+4>>2]=-1;t[e+(A*72|0)+68>>2]=1;t[47395]=A+1;h=i;return A|0}else{i=t[15712]|0;t[r>>2]=A;a3(i,138483,r)|0;ge(138394,138396,88,138521)}return 0}function Ln(){var e=0;e=t[47396]|0;if((e|0)<(t[47393]|0)){t[47396]=e+1;return e|0}else{G3(138444,30,1,t[15712]|0)|0;ge(138394,138396,72,138475)}return 0}function Qn(e,A){e=e|0;A=A|0;var r=0.0,i=0.0;r=+c[e+8>>3];i=+c[A+8>>3];if(!(r>i+1.0e-07))if(r>3]>=+c[A>>3]&1;else e=1;return e|0}function Dn(e,A){e=e|0;A=A|0;var r=0.0,i=0.0;r=+c[e+8>>3];i=+c[A+8>>3];if(!(ri+1.0e-07)e=0;else e=+c[e>>3]<+c[A>>3]&1;else e=1;return e|0}function zn(e,A,r,i,a,n){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;n=n|0;var f=0,l=0,s=0,c=0,o=0,u=0,b=0,h=0,w=0,k=0,d=0;k=a+(r*72|0)+24|0;w=(i|0)==1;e:while(1){h=a+(A*72|0)+24|0;s=a+(A*72|0)+48|0;c=a+(A*72|0)+52|0;o=a+(A*72|0)|0;u=a+(A*72|0)+4|0;b=a+(A*72|0)+56|0;if((A|0)<=0)break;while(1){if(!(Qn(h,k)|0))break e;r=t[s>>2]|0;i=(r|0)>0;do{if(w){if(i?(t[a+(r*72|0)+4>>2]|0)==(e|0):0)break;r=t[c>>2]|0;if((r|0)<=0){A=r;continue e}if((t[a+(r*72|0)+4>>2]|0)!=(e|0)){A=r;continue e}}else{if(i?(t[a+(r*72|0)>>2]|0)==(e|0):0)break;r=t[c>>2]|0;if((r|0)<=0){A=r;continue e}if((t[a+(r*72|0)>>2]|0)!=(e|0)){A=r;continue e}}}while(0);if((t[o>>2]|0)!=(t[a+(r*72|0)>>2]|0)){A=r;continue e}if((t[u>>2]|0)!=(t[a+(r*72|0)+4>>2]|0)){A=r;continue e}d=t[a+(r*72|0)+56>>2]|0;i=t[n+(d*40|0)+28>>2]|0;f=n+(i*40|0)+32|0;l=t[b>>2]|0;if((t[f>>2]|0)==(d|0))t[f>>2]=l;else t[n+(i*40|0)+36>>2]=l;i=t[a+(r*72|0)+48>>2]|0;t[s>>2]=i;do{if((i|0)>0){f=a+(i*72|0)+40|0;if((t[f>>2]|0)==(r|0)){t[f>>2]=A;break}i=a+(i*72|0)+44|0;if((t[i>>2]|0)==(r|0))t[i>>2]=A}}while(0);i=t[a+(r*72|0)+52>>2]|0;t[c>>2]=i;do{if((i|0)>0){f=a+(i*72|0)+40|0;if((t[f>>2]|0)==(r|0)){t[f>>2]=A;break}i=a+(i*72|0)+44|0;if((t[i>>2]|0)==(r|0))t[i>>2]=A}}while(0);d=a+(r*72|0)+24|0;t[h>>2]=t[d>>2];t[h+4>>2]=t[d+4>>2];t[h+8>>2]=t[d+8>>2];t[h+12>>2]=t[d+12>>2];t[a+(r*72|0)+68>>2]=2}}return}function Wn(e,A,r){e=e|0;A=A|0;r=r|0;var i=0.0,a=0.0;i=+c[A+8>>3];a=+c[r+8>>3];do{if(!(i>a+1.0e-07)){if(!(+Q(+(i-a))<=1.0e-07)){t[e>>2]=t[r>>2];t[e+4>>2]=t[r+4>>2];t[e+8>>2]=t[r+8>>2];t[e+12>>2]=t[r+12>>2];break}if(+c[A>>3]>+c[r>>3]+1.0e-07){t[e>>2]=t[A>>2];t[e+4>>2]=t[A+4>>2];t[e+8>>2]=t[A+8>>2];t[e+12>>2]=t[A+12>>2];break}else{t[e>>2]=t[r>>2];t[e+4>>2]=t[r+4>>2];t[e+8>>2]=t[r+8>>2];t[e+12>>2]=t[r+12>>2];break}}else{t[e>>2]=t[A>>2];t[e+4>>2]=t[A+4>>2];t[e+8>>2]=t[A+8>>2];t[e+12>>2]=t[A+12>>2]}}while(0);return}function Yn(e,A,r){e=e|0;A=A|0;r=r|0;var i=0.0,a=0.0;i=+c[A+8>>3];a=+c[r+8>>3];do{if(!(i>2]=t[r>>2];t[e+4>>2]=t[r+4>>2];t[e+8>>2]=t[r+8>>2];t[e+12>>2]=t[r+12>>2];break}if(+c[A>>3]<+c[r>>3]){t[e>>2]=t[A>>2];t[e+4>>2]=t[A+4>>2];t[e+8>>2]=t[A+8>>2];t[e+12>>2]=t[A+12>>2];break}else{t[e>>2]=t[r>>2];t[e+4>>2]=t[r+4>>2];t[e+8>>2]=t[r+8>>2];t[e+12>>2]=t[r+12>>2];break}}else{t[e>>2]=t[A>>2];t[e+4>>2]=t[A+4>>2];t[e+8>>2]=t[A+8>>2];t[e+12>>2]=t[A+12>>2]}}while(0);return}function Fn(e){e=e|0;var A=0;A=KF(8)|0;if(A|0){t[A+4>>2]=e;t[A>>2]=0}return A|0}function Mn(e,A){e=e|0;A=A|0;if(A){A=Fn(A)|0;t[A>>2]=e;e=A}return e|0}function Vn(e){e=e|0;var A=0;do{A=e;e=t[e>>2]|0;G2(A)}while((e|0)!=0);return}function Nn(){var e=0;e=KF(1992)|0;if(e|0)t[e>>2]=Rn(e)|0;return e|0}function Rn(e){e=e|0;var A=0;A=Sn(e)|0;t[A+4>>2]=0;e=e+1972|0;t[e>>2]=(t[e>>2]|0)+1;return A|0}function xn(e){e=e|0;Jn(e,t[e>>2]|0);G2(t[e>>2]|0);G2(e);return 0}function Jn(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0,f=0,l=0;n=e+1980|0;f=e+1912|0;l=e+1936|0;e:do{if((t[A+4>>2]|0)>0){r=0;while(1){if((r|0)==64)break e;i=A+8+(r*20|0)+16|0;a=t[i>>2]|0;if(a|0?(Jn(e,a),G2(t[i>>2]|0),qn(A,r),t[n>>2]=(t[n>>2]|0)+-1,t[f>>2]|0):0)t[l>>2]=(t[l>>2]|0)+1;r=r+1|0}}else{r=0;while(1){if((r|0)==64)break e;if(t[A+8+(r*20|0)+16>>2]|0?(qn(A,r),t[n>>2]=(t[n>>2]|0)+-1,t[f>>2]|0):0)t[l>>2]=(t[l>>2]|0)+1;r=r+1|0}}}while(0);return}function Hn(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0,n=0,f=0,l=0;if(!A)ge(138879,138529,194,138537);i=t[A+4>>2]|0;if((i|0)<=-1)ge(138549,138529,195,138537);if(!r)ge(138821,138529,196,138537);l=e+1952|0;t[l>>2]=(t[l>>2]|0)+1;e:do{if((i|0)>0){l=0;i=0;while(1){if((l|0)==64)break e;a=A+8+(l*20|0)+16|0;if((t[a>>2]|0)!=0?(rf(r,A+8+(l*20|0)|0)|0)!=0:0){n=Hn(e,t[a>>2]|0,r)|0;if(!i)i=n;else{a=i;while(1){f=t[a>>2]|0;if(!f)break;else a=f}t[a>>2]=n}}l=l+1|0}}else{n=0;i=0;while(1){if((n|0)==64)break e;a=A+8+(n*20|0)|0;if((t[A+8+(n*20|0)+16>>2]|0)!=0?(rf(r,a)|0)!=0:0)i=Mn(i,a)|0;n=n+1|0}}}while(0);return i|0}function Pn(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;var n=0,f=0,l=0,s=0,c=0,o=0,u=0,b=0,w=0,k=0;w=h;h=h+64|0;c=w+52|0;o=w+32|0;u=w+16|0;b=w;t[c>>2]=0;if(!((A|0)!=0&(i|0)!=0))ge(138735,138529,247,138563);if((a|0)>-1?(s=t[i>>2]|0,(t[s+4>>2]|0)>=(a|0)):0){n=0;while(1){if((n|0)>=2)break;if((t[A+(n<<2)>>2]|0)>(t[A+(n+2<<2)>>2]|0)){f=8;break}else n=n+1|0}if((f|0)==8)ge(138610,138529,250,138563);l=e+1912|0;n=e+1908|0;f=t[n>>2]|0;if(t[l>>2]|0){k=f|0?e+1924|0:e+1916|0;t[k>>2]=(t[k>>2]|0)+1}if(!f){k=e+1964|0;t[k>>2]=(t[k>>2]|0)+1}if(!(Xn(e,A,r,s,c,a)|0))n=0;else{if(t[l>>2]|0){k=t[n>>2]|0?e+1948|0:e+1944|0;t[k>>2]=(t[k>>2]|0)+1}n=Sn(e)|0;k=e+1976|0;t[k>>2]=(t[k>>2]|0)+1;k=t[i>>2]|0;t[n+4>>2]=(t[k+4>>2]|0)+1;Tn(u,k);t[o>>2]=t[u>>2];t[o+4>>2]=t[u+4>>2];t[o+8>>2]=t[u+8>>2];t[o+12>>2]=t[u+12>>2];k=o+16|0;t[k>>2]=t[i>>2];_n(e,o,n,0)|0;Tn(b,t[c>>2]|0);t[o>>2]=t[b>>2];t[o+4>>2]=t[b+4>>2];t[o+8>>2]=t[b+8>>2];t[o+12>>2]=t[b+12>>2];t[k>>2]=t[c>>2];_n(e,o,n,0)|0;t[i>>2]=n;n=e+1980|0;t[n>>2]=(t[n>>2]|0)+2;n=1}h=w;return n|0}ge(138575,138529,248,138563);return 0}function Xn(e,A,r,i,a,n){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;n=n|0;var f=0,l=0,s=0,c=0,o=0,u=0,b=0,w=0,k=0;k=h;h=h+80|0;o=k+52|0;u=k+48|0;b=k+32|0;w=k+16|0;c=k;t[u>>2]=0;if(!((A|0)!=0&(i|0)!=0&(a|0)!=0))ge(138653,138529,311,138667);if((n|0)>-1?(l=i+4|0,f=t[l>>2]|0,(f|0)>=(n|0)):0){if(t[e+1912>>2]|0){f=t[e+1908>>2]|0?e+1948|0:e+1944|0;t[f>>2]=(t[f>>2]|0)+1;f=t[l>>2]|0}do{if((f|0)>(n|0)){l=On(A,i)|0;f=i+8+(l*20|0)+16|0;l=i+8+(l*20|0)|0;if(!(Xn(e,A,r,t[f>>2]|0,u,n)|0)){Af(b,A,l);t[l>>2]=t[b>>2];t[l+4>>2]=t[b+4>>2];t[l+8>>2]=t[b+8>>2];t[l+12>>2]=t[b+12>>2];s=0;break}else{Tn(w,t[f>>2]|0);t[l>>2]=t[w>>2];t[l+4>>2]=t[w+4>>2];t[l+8>>2]=t[w+8>>2];t[l+12>>2]=t[w+12>>2];s=t[u>>2]|0;t[o+16>>2]=s;Tn(c,s);t[o>>2]=t[c>>2];t[o+4>>2]=t[c+4>>2];t[o+8>>2]=t[c+8>>2];t[o+12>>2]=t[c+12>>2];s=e+1980|0;t[s>>2]=(t[s>>2]|0)+1;s=_n(e,o,i,a)|0;break}}else if((f|0)==(n|0)){t[o>>2]=t[A>>2];t[o+4>>2]=t[A+4>>2];t[o+8>>2]=t[A+8>>2];t[o+12>>2]=t[A+12>>2];t[o+16>>2]=r;s=e+1980|0;t[s>>2]=(t[s>>2]|0)+1;s=_n(e,o,i,a)|0;break}else ge(138712,138529,341,138667)}while(0);h=k;return s|0}ge(138680,138529,312,138667);return 0}function Sn(e){e=e|0;e=e+1968|0;t[e>>2]=(t[e>>2]|0)+1;e=Z2(1288)|0;jn(e);return e|0}function jn(e){e=e|0;var A=0;t[e>>2]=0;t[e+4>>2]=-1;A=0;while(1){if((A|0)==64)break;Un(e+8+(A*20|0)|0);A=A+1|0}return}function Un(e){e=e|0;Kn(e);t[e+16>>2]=0;return}function Tn(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0,f=0,l=0;l=h;h=h+32|0;n=l+16|0;f=l;if(!A)ge(138879,138718,99,138725);Kn(n);r=1;a=0;while(1){if((a|0)==64)break;do{if(t[A+8+(a*20|0)+16>>2]|0){i=A+8+(a*20|0)|0;if(!r){Af(f,n,i);t[n>>2]=t[f>>2];t[n+4>>2]=t[f+4>>2];t[n+8>>2]=t[f+8>>2];t[n+12>>2]=t[f+12>>2];r=0;break}else{t[n>>2]=t[i>>2];t[n+4>>2]=t[i+4>>2];t[n+8>>2]=t[i+8>>2];t[n+12>>2]=t[i+12>>2];r=0;break}}}while(0);a=a+1|0}t[e>>2]=t[n>>2];t[e+4>>2]=t[n+4>>2];t[e+8>>2]=t[n+8>>2];t[e+12>>2]=t[n+12>>2];h=l;return}function On(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0,f=0,l=0,s=0,c=0,o=0,u=0,b=0,w=0;c=h;h=h+32|0;l=c+16|0;s=c;if(!((e|0)!=0&(A|0)!=0))ge(138735,138718,125,138742);r=0;i=0;a=0;n=1;f=0;while(1){if((f|0)==64)break;if(t[A+8+(f*20|0)+16>>2]|0){u=A+8+(f*20|0)|0;w=ef(u)|0;Af(s,e,u);t[l>>2]=t[s>>2];t[l+4>>2]=t[s+4>>2];t[l+8>>2]=t[s+8>>2];t[l+12>>2]=t[s+12>>2];u=(ef(l)|0)-w|0;o=(n|0)!=0|(u|0)<(a|0);b=o|(w|0)<(i|0)&(u|0)==(a|0);r=b?f:r;i=b?w:i;a=b?u:a;n=o?0:n}f=f+1|0}h=c;return r|0}function _n(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0,n=0,f=0;if(!A)ge(138901,138718,167,138753);if(!r)ge(138879,138718,168,138753);do{if((t[r>>2]|0)<64){e=0;while(1){if((e|0)>=64){i=10;break}if(!(t[r+8+(e*20|0)+16>>2]|0)){i=8;break}e=e+1|0}if((i|0)==8){a=r+8+(e*20|0)|0;t[a>>2]=t[A>>2];t[a+4>>2]=t[A+4>>2];t[a+8>>2]=t[A+8>>2];t[a+12>>2]=t[A+12>>2];t[a+16>>2]=t[A+16>>2];a=0;n=r;break}else if((i|0)==10)ge(138763,138718,178,138753)}else{if(t[e+1912>>2]|0){f=t[e+1908>>2]|0?e+1948|0:e+1944|0;t[f>>2]=(t[f>>2]|0)+1}if(!i)ge(138776,138718,187,138753);else{af(e,r,A,i);a=1;n=(t[r+4>>2]|0)==0?e+1972|0:e+1976|0;break}}}while(0);t[n>>2]=(t[n>>2]|0)+1;return a|0}function qn(e,A){e=e|0;A=A|0;if(!((e|0)!=0&A>>>0<64))ge(138780,138718,201,138808);if(!(t[e+8+(A*20|0)+16>>2]|0))ge(139302,138718,202,138808);else{Un(e+8+(A*20|0)|0);t[e>>2]=(t[e>>2]|0)+-1;return}}function Kn(e){e=e|0;var A=0;A=0;while(1){if((A|0)==4)break;t[e+(A<<2)>>2]=0;A=A+1|0}return}function $n(e){e=e|0;var A=0,r=0,i=0;i=h;h=h+16|0;r=i;t[r>>2]=1;t[r+8>>2]=-1;A=1;while(1){if((A|0)==2)break;t[r+(A+2<<2)>>2]=0;t[r+(A<<2)>>2]=0;A=A+1|0}t[e>>2]=t[r>>2];t[e+4>>2]=t[r+4>>2];t[e+8>>2]=t[r+8>>2];t[e+12>>2]=t[r+12>>2];h=i;return}function ef(e){e=e|0;var A=0,r=0,i=0;if(!e)ge(138821,138823,128,138835);e:do{if((t[e>>2]|0)>(t[e+8>>2]|0))A=0;else{A=1;r=0;while(1){if((r|0)==2)break e;i=P(t[e+(r+2<<2)>>2]|0,A)|0;A=i-(t[e+(r<<2)>>2]|0)|0;r=r+1|0}}}while(0);return A|0}function Af(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0,n=0,f=0,l=0,s=0;n=h;h=h+16|0;a=n;if(!((A|0)!=0&(r|0)!=0))ge(138844,138823,195,138852);do{if((t[A>>2]|0)>(t[A+8>>2]|0)){t[e>>2]=t[r>>2];t[e+4>>2]=t[r+4>>2];t[e+8>>2]=t[r+8>>2];t[e+12>>2]=t[r+12>>2]}else{if((t[r>>2]|0)>(t[r+8>>2]|0)){t[e>>2]=t[A>>2];t[e+4>>2]=t[A+4>>2];t[e+8>>2]=t[A+8>>2];t[e+12>>2]=t[A+12>>2];break}else i=0;while(1){if((i|0)==2)break;s=t[A+(i<<2)>>2]|0;f=t[r+(i<<2)>>2]|0;t[a+(i<<2)>>2]=(s|0)<(f|0)?s:f;f=i+2|0;s=t[A+(f<<2)>>2]|0;l=t[r+(f<<2)>>2]|0;t[a+(f<<2)>>2]=(s|0)>(l|0)?s:l;i=i+1|0}t[e>>2]=t[a>>2];t[e+4>>2]=t[a+4>>2];t[e+8>>2]=t[a+8>>2];t[e+12>>2]=t[a+12>>2]}}while(0);h=n;return}function rf(e,A){e=e|0;A=A|0;var r=0,i=0;if((e|0)!=0&(A|0)!=0)r=0;else ge(138864,138823,216,138871);while(1){if((r|0)>=2){r=1;break}i=r+2|0;if((t[e+(r<<2)>>2]|0)>(t[A+(i<<2)>>2]|0)){r=0;break}if((t[A+(r<<2)>>2]|0)>(t[e+(i<<2)>>2]|0)){r=0;break}else r=r+1|0}return r|0}function af(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0,n=0,f=0,l=0;if(!A)ge(138879,138881,40,138891);if(!r)ge(138901,138881,41,138891);l=e+1912|0;if(t[l>>2]|0){f=t[e+1908>>2]|0?e+1932|0:e+1928|0;t[f>>2]=(t[f>>2]|0)+1}n=A+4|0;f=t[n>>2]|0;tf(e,A,r);r=e+1324|0;nf(e);a=ef(e+1852|0)|0;a=(ef(e+1868|0)|0)+a|0;if(t[l>>2]|0?(a|0)!=0&(t[e+1908>>2]|0)==0:0){l=e+1960|0;s[l>>2]=+((t[e+1320>>2]|0)>>>0)/+(a|0)+ +s[l>>2]}l=Sn(e)|0;t[i>>2]=l;t[n>>2]=f;t[l+4>>2]=f;ff(e,A,l,r);if(((t[t[i>>2]>>2]|0)+(t[A>>2]|0)|0)==65)return;else ge(138903,138881,86,138891)}function tf(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0,n=0,f=0,l=0,s=0;f=h;h=h+16|0;n=f;if(!A)ge(138879,138881,106,139290);if(!r)ge(138901,138881,107,139290);else i=0;while(1){if((i|0)>=64)break;if(!(t[A+8+(i*20|0)+16>>2]|0)){a=7;break}s=A+8+(i*20|0)|0;l=e+4+(i*20|0)|0;t[l>>2]=t[s>>2];t[l+4>>2]=t[s+4>>2];t[l+8>>2]=t[s+8>>2];t[l+12>>2]=t[s+12>>2];t[l+16>>2]=t[s+16>>2];i=i+1|0}if((a|0)==7)ge(139302,138881,111,139290);i=e+4|0;s=e+1284|0;t[s>>2]=t[r>>2];t[s+4>>2]=t[r+4>>2];t[s+8>>2]=t[r+8>>2];t[s+12>>2]=t[r+12>>2];t[s+16>>2]=t[r+16>>2];r=e+1304|0;t[r>>2]=t[i>>2];t[r+4>>2]=t[i+4>>2];t[r+8>>2]=t[i+8>>2];t[r+12>>2]=t[i+12>>2];i=1;while(1){if((i|0)==65)break;Af(n,r,e+4+(i*20|0)|0);t[r>>2]=t[n>>2];t[r+4>>2]=t[n+4>>2];t[r+8>>2]=t[n+8>>2];t[r+12>>2]=t[n+12>>2];i=i+1|0}t[e+1320>>2]=ef(r)|0;jn(A);h=f;return}function nf(e){e=e|0;var A=0,r=0,i=0,a=0,n=0,f=0,l=0,s=0,c=0,o=0,u=0,b=0,w=0,k=0,d=0,v=0,g=0,m=0,p=0;m=h;h=h+48|0;l=m+32|0;c=m+16|0;o=m;lf(e);sf(e);k=e+1844|0;v=e+1848|0;g=e+1892|0;u=e+1852|0;b=e+1884|0;w=e+1868|0;s=e+1888|0;a=0;i=0;while(1){r=t[k>>2]|0;A=t[v>>2]|0;if((A+r|0)>=65)break;f=65-(t[g>>2]|0)|0;if((r|0)<(f|0)&(A|0)<(f|0)){n=-1;f=0}else{d=12;break}while(1){if((f|0)==65)break;if(!(t[e+1584+(f<<2)>>2]|0)){p=e+4+(f*20|0)|0;Af(c,p,u);t[l>>2]=t[c>>2];t[l+4>>2]=t[c+4>>2];t[l+8>>2]=t[c+8>>2];t[l+12>>2]=t[c+12>>2];A=ef(l)|0;r=t[b>>2]|0;Af(o,p,w);t[l>>2]=t[o>>2];t[l+4>>2]=t[o+4>>2];t[l+8>>2]=t[o+8>>2];t[l+12>>2]=t[o+12>>2];p=ef(l)|0;A=p-(t[s>>2]|0)+(r-A)|0;r=(A|0)>-1;A=r?A:0-A|0;r=(r^1)&1;if((A|0)<=(n|0))if((A|0)==(n|0)){p=(t[e+1844+(r<<2)>>2]|0)<(t[e+1844+(a<<2)>>2]|0);A=n;r=p?r:a;i=p?f:i}else{A=n;r=a}else i=f}else{A=n;r=a}n=A;f=f+1|0;a=r}cf(e,i,a)}if((d|0)==12){A=(r|0)>=(65-(t[g>>2]|0)|0)&1;r=0;while(1){if((r|0)==65)break;if(!(t[e+1584+(r<<2)>>2]|0))cf(e,r,A);r=r+1|0}r=t[k>>2]|0;A=t[v>>2]|0}if((A+r|0)!=65)ge(139046,138881,210,139132);p=t[g>>2]|0;if((r|0)<(p|0)|(A|0)<(p|0))ge(139143,138881,212,139132);else{h=m;return}}function ff(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0;if(!A)ge(138879,138881,297,138943);if(!r)ge(138953,138881,298,138943);if(!i)ge(138955,138881,299,138943);else a=0;while(1){if((a|0)>=65){i=14;break}i=t[e+1324+(a<<2)>>2]|0;if(i>>>0>=2){i=9;break}switch(i|0){case 0:{_n(e,e+4+(a*20|0)|0,A,0)|0;break}case 1:{_n(e,e+4+(a*20|0)|0,r,0)|0;break}default:{}}a=a+1|0}if((i|0)==9)ge(138957,138881,303,138943);else if((i|0)==14)return}function lf(e){e=e|0;var A=0,r=0,i=0,a=0;r=h;h=h+16|0;i=r;t[e+1848>>2]=0;t[e+1844>>2]=0;A=e+1852|0;a=e+1868|0;$n(i);t[a>>2]=t[i>>2];t[a+4>>2]=t[i+4>>2];t[a+8>>2]=t[i+8>>2];t[a+12>>2]=t[i+12>>2];t[A>>2]=t[i>>2];t[A+4>>2]=t[i+4>>2];t[A+8>>2]=t[i+8>>2];t[A+12>>2]=t[i+12>>2];t[e+1888>>2]=0;t[e+1884>>2]=0;A=0;while(1){if((A|0)==65)break;t[e+1584+(A<<2)>>2]=0;t[e+1324+(A<<2)>>2]=-1;A=A+1|0}h=r;return}function sf(e){e=e|0;var A=0,r=0,i=0,a=0,n=0,f=0,l=0,s=0,c=0,o=0,u=0,b=0,w=0,k=0,d=0;b=h;h=h+304|0;c=b+32|0;o=b+16|0;u=b;A=0;while(1){if((A|0)==65)break;t[c+(A<<2)>>2]=ef(e+4+(A*20|0)|0)|0;A=A+1|0}A=0;r=0;i=0;n=0;e:while(1){if((n|0)==64)break;l=n+1|0;s=e+4+(n*20|0)|0;f=c+(n<<2)|0;a=l;while(1){if((a|0)==65){n=l;continue e}Af(u,s,e+4+(a*20|0)|0);t[o>>2]=t[u>>2];t[o+4>>2]=t[u+4>>2];t[o+8>>2]=t[u+8>>2];t[o+12>>2]=t[u+12>>2];w=ef(o)|0;w=w-(t[f>>2]|0)-(t[c+(a<<2)>>2]|0)|0;k=w>>>0>i>>>0;d=k?a:A;a=a+1|0;A=d;r=k?n:r;i=k?w:i}}cf(e,r,0);cf(e,A,1);h=b;return}function cf(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0,n=0,f=0,l=0;l=h;h=h+16|0;f=l;i=e+1584+(A<<2)|0;if(t[i>>2]|0)ge(139246,138881,257,139281);t[e+1324+(A<<2)>>2]=r;t[i>>2]=1;n=e+1844+(r<<2)|0;a=e+1852+(r<<4)|0;i=e+4+(A*20|0)|0;if(!(t[n>>2]|0)){t[a>>2]=t[i>>2];t[a+4>>2]=t[i+4>>2];t[a+8>>2]=t[i+8>>2];t[a+12>>2]=t[i+12>>2]}else{Af(f,i,a);t[a>>2]=t[f>>2];t[a+4>>2]=t[f+4>>2];t[a+8>>2]=t[f+8>>2];t[a+12>>2]=t[f+12>>2]}t[e+1884+(r<<2)>>2]=ef(a)|0;t[n>>2]=(t[n>>2]|0)+1;h=l;return}function of(){var e=0,A=0,r=0,f=0,l=0,s=0,c=0,o=0,u=0,b=0,w=0,k=0,d=0,v=0,g=0;g=h;h=h+1200|0;d=g+800|0;r=g;t[47397]=0;t[47398]=-2;A=d;l=200;u=r;w=0;k=0;b=d;e:while(1){a[b>>1]=w;if((A+(l<<1)+-2|0)>>>0>b>>>0)c=l;else{o=b-A>>1;e=o+1|0;if(l>>>0>9999){v=95;break}c=l<<1;c=c>>>0<1e4?c:1e4;f=Z2(c*6|3)|0;if(f){Q6(f|0,A|0,e<<1|0)|0;l=f+(c>>>1<<2)|0;Q6(l|0,u|0,e<<2|0)|0;if((A|0)==(d|0)){e=0;A=f}else{G2(A);e=0;A=f}}else{e=4;l=u}s=(e|0)==0;f=A+(o<<1)|0;switch((s?(A+(c<<1)+-2|0)>>>0>f>>>0?0:9:e)&15){case 9:{e=1;v=96;break e}case 4:{v=95;break e}case 0:{r=s?l+(o<<2)|0:r;u=l;b=s?f:b;break}default:{e=0;break e}}}if((w|0)==31){e=0;v=96;break}e=a[65534+(w<<1)>>1]|0;s=e<<16>>16;do{if(e<<16>>16!=-82){f=t[47398]|0;if((f|0)==-2){f=Il()|0;t[47398]=f}if((f|0)>=1)if(f>>>0<296)l=n[139321+f>>0]|0;else l=2;else{t[47398]=0;l=0}f=l+s|0;if(f>>>0<=271?(l|0)==(i[139617+f>>0]|0):0){w=i[139889+f>>0]|0;e=w<<24>>24;if(w<<24>>24<1){f=0-e|0;v=23;break}else{t[47398]=-2;r=r+4|0;t[r>>2]=t[47399];s=(k|0)==0?0:k+-1|0;f=b;break}}else v=22}else v=22}while(0);if((v|0)==22){v=0;w=i[140161+w>>0]|0;f=w&255;if(!(w<<24>>24)){f=t[47398]|0;A:do{switch(k|0){case 0:{t[47397]=(t[47397]|0)+1;zf(143761);f=b;break}case 3:if((f|0)<1)if(!f){e=1;v=96;break e}else{f=b;break A}else{t[47398]=-2;f=b;break A}default:f=b}}while(0);while(1){if(e<<16>>16==8)break;if((f|0)==(A|0)){e=1;v=96;break e}e=f+-2|0;r=r+-4|0;f=e;e=a[65534+(a[e>>1]<<1)>>1]|0}r=r+4|0;t[r>>2]=t[47399];e=1;s=3}else v=23}do{if((v|0)==23){v=0;s=n[140277+f>>0]|0;e=t[r+(1-s<<2)>>2]|0;do{switch(f|0){case 4:{v=26;break e}case 2:{t[47400]=uf(t[r+-4>>2]|0,2)|0;break}case 3:{t[47400]=uf(t[r+-4>>2]|0,1)|0;break}case 5:{e=hf()|0;break}case 8:{wf(t[47401]|0);break}case 9:{kf(t[r>>2]|0);break}case 18:{df(t[r>>2]|0);break}case 19:{vf();break}case 20:{df(t[r>>2]|0);break}case 21:{vf();break}case 22:{df(t[r>>2]|0);break}case 23:{vf();break}case 24:{df(t[r>>2]|0);break}case 25:{vf();break}case 26:{df(t[r>>2]|0);break}case 27:{vf();break}case 28:{df(t[r>>2]|0);break}case 29:{vf();break}case 30:{df(t[r>>2]|0);break}case 31:{vf();break}case 32:{df(t[r>>2]|0);break}case 33:{vf();break}case 34:{e=t[r+-4>>2]|0;break}case 35:{e=t[r>>2]|0;break}case 38:{e=t[47401]|0;l=t[e+4>>2]|0;if(l>>>0>=(t[e+8>>2]|0)>>>0){ow(e,1)|0;l=t[47401]|0;e=l;l=t[l+4>>2]|0}i[l>>0]=0;w=t[e>>2]|0;t[e+4>>2]=w;if(gf(w)|0){v=51;break e}t[(t[r>>2]|0)+80>>2]=t[47402];e=Uh(56032,t[4580]|0)|0;t[(t[r>>2]|0)+84>>2]=e;t[47402]=t[r>>2];t[(t[r>>2]|0)+108>>2]=t[t[47403]>>2];e=t[r>>2]|0;break}case 39:{e=t[47401]|0;l=t[e+4>>2]|0;if(l>>>0>=(t[e+8>>2]|0)>>>0){ow(e,1)|0;l=t[47401]|0;e=l;l=t[l+4>>2]|0}i[l>>0]=0;w=t[e>>2]|0;t[e+4>>2]=w;if(gf(w)|0){v=56;break e}e=t[47402]|0;t[47402]=t[e+80>>2];break}case 40:{e=t[r>>2]|0;break}case 41:{e=t[r+-4>>2]|0;break}case 42:{e=t[r+-4>>2]|0;break}case 43:{e=t[r+-4>>2]|0;break}case 44:{e=t[r+-4>>2]|0;break}case 45:{e=t[r+-4>>2]|0;break}case 48:{e=t[r>>2]|0;break}case 49:{e=t[r>>2]|0;break}case 50:{i[(t[r+-8>>2]|0)+12>>0]=1;e=t[r>>2]|0;break}case 51:{mf();break}case 52:{e=pf()|0;break}case 53:{e=t[r>>2]|0;break}case 54:{e=t[r>>2]|0;break}case 55:{e=(t[r+-8>>2]|0)+100|0;i[e>>0]=i[e>>0]|1;e=t[r>>2]|0;break}case 56:{Ef(t[r+-4>>2]|0,t[r>>2]|0,1);break}case 57:{e=t[r+-12>>2]|0;break}case 58:{Ef(t[r+-4>>2]|0,t[r>>2]|0,2);break}case 59:{e=t[r+-12>>2]|0;break}case 60:{Ef(t[r+-4>>2]|0,t[r>>2]|0,3);break}case 61:{e=t[r+-12>>2]|0;break}case 62:{Ef(t[r>>2]|0,hf()|0,2);break}case 63:{e=t[r+-8>>2]|0;break}case 64:{e=t[r+-4>>2]|0;break}case 65:{e=t[r>>2]|0;break}default:{}}}while(0);l=0-s|0;w=r+(l<<2)|0;l=b+(l<<1)|0;r=w+4|0;t[w+4>>2]=e;e=(n[140449+f>>0]|0)+-41|0;w=a[l>>1]|0;f=w+(a[65766+(e<<1)>>1]|0)|0;if(f>>>0<272?(i[139617+f>>0]|0)==(w|0):0){e=i[139889+f>>0]|0;s=k;f=l;break}e=i[140519+e>>0]|0;s=k;f=l}}while(0);l=c;w=e;k=s;b=f+2|0}if((v|0)==26){bf();e=1;v=96}else if((v|0)==51){zf(140347);bf();e=1;v=96}else if((v|0)==56){zf(140398);bf();e=1;v=96}else if((v|0)==95){zf(140558);e=2;v=96}if((v|0)==96)if((A|0)!=(d|0))G2(A);h=g;return e|0}function uf(e,A){e=e|0;A=A|0;var r=0;r=KF(8)|0;i[r+4>>0]=A;t[r>>2]=e;return r|0}function bf(){var e=0,A=0;e=t[47402]|0;A=t[47400]|0;if(A|0){at(A,1);t[47400]=0}t[14021]=67;while(1){if(!e)break;A=t[e+80>>2]|0;If(e);e=A}t[14021]=56;t[14030]=68;A=t[47405]|0;L5[t[A>>2]&63](A,0,64)|0;t[14030]=56;t[14039]=69;A=t[47406]|0;L5[t[A>>2]&63](A,0,64)|0;t[14039]=56;Lf();return}function hf(){var e=0,A=0,r=0,i=0,n=0,f=0;r=t[47406]|0;i=KF(40)|0;if(Oh(t[47405]|0)|0)kf(0);e=Oh(r)|0;a[i+4>>1]=e;e:do{if(!e)e=r;else{t[i>>2]=KF(e*24|0)|0;e=0;A=L5[t[r>>2]&63](r,0,128)|0;while(1){if(!A){e=r;break e}n=(t[i>>2]|0)+(e*24|0)|0;f=A+8|0;t[n>>2]=t[f>>2];t[n+4>>2]=t[f+4>>2];t[n+8>>2]=t[f+8>>2];t[n+12>>2]=t[f+12>>2];t[n+16>>2]=t[f+16>>2];t[n+20>>2]=t[f+20>>2];e=e+1|0;A=L5[t[r>>2]&63](r,A,8)|0}}}while(0);L5[t[e>>2]&63](r,0,64)|0;return i|0}function wf(e){e=e|0;var A=0,r=0,a=0;r=KF(64)|0;a=e+4|0;A=t[a>>2]|0;if(A>>>0>=(t[e+8>>2]|0)>>>0){ow(e,1)|0;A=t[a>>2]|0}i[A>>0]=0;e=t[e>>2]|0;t[a>>2]=e;t[r+8>>2]=o3(e)|0;t[r+12>>2]=t[t[47403]>>2];a=t[47405]|0;L5[t[a>>2]&63](a,r,1)|0;return}function kf(e){e=e|0;var A=0,r=0,n=0,f=0,l=0,s=0,c=0;l=KF(32)|0;s=t[47405]|0;A=Oh(s)|0;c=l+8|0;i[l+14>>0]=e;e:do{if(!A){t[c>>2]=KF(56)|0;a[l+12>>1]=1;f=o3(195059)|0;c=t[c>>2]|0;t[c>>2]=f;t[c+4>>2]=t[t[47403]>>2]}else{a[l+12>>1]=A;t[c>>2]=KF(A*56|0)|0;e=0;A=Sh(s)|0;while(1){if(!A)break e;r=(t[c>>2]|0)+(e*56|0)|0;n=A+8|0;f=r+56|0;do{t[r>>2]=t[n>>2];r=r+4|0;n=n+4|0}while((r|0)<(f|0));e=e+1|0;A=t[A>>2]|0}}}while(0);L5[t[s>>2]&63](s,0,64)|0;c=t[47406]|0;L5[t[c>>2]&63](c,l,1)|0;return}function df(e){e=e|0;var A=0,r=0.0,i=0,a=0,n=0,f=0,l=0;l=h;h=h+32|0;n=l;f=KF(8)|0;a=t[t[47403]>>2]|0;t[n>>2]=t[e>>2];t[n+4>>2]=t[e+4>>2];t[n+8>>2]=t[e+8>>2];t[n+12>>2]=t[e+12>>2];t[n+16>>2]=t[e+16>>2];t[n+20>>2]=t[e+20>>2];t[n+24>>2]=t[e+24>>2];t[n+28>>2]=t[e+28>>2];if(a|0){e=n+4|0;if((t[e>>2]|0)==0?(A=t[a+4>>2]|0,A|0):0)t[e>>2]=A;e=n+16|0;if(+c[e>>3]<0.0?(r=+c[a+16>>3],r>=0.0):0)c[e>>3]=r;if((t[n>>2]|0)==0?(i=t[a>>2]|0,i|0):0)t[n>>2]=i;e=t[a+24>>2]&127;if(e|0){a=n+24|0;i=t[a>>2]|0;t[a>>2]=i&127|e|i&-128}}a=t[(t[47404]|0)+144>>2]|0;t[f>>2]=L5[t[a>>2]&63](a,n,1)|0;t[f+4>>2]=t[47403];t[47403]=f;h=l;return}function vf(){var e=0,A=0;A=t[47403]|0;e=t[A+4>>2]|0;G2(A);t[47403]=e;return}function gf(e){e=e|0;var A=0;while(1){A=i[e>>0]|0;if(!(A<<24>>24)){e=0;break}if(A<<24>>24==32)e=e+1|0;else{e=1;break}}return e|0}function mf(){var e=0,A=0,r=0;r=Uh(56068,t[4580]|0)|0;e=t[47402]|0;A=KF(16)|0;t[A+8>>2]=r;if(i[e+112>>0]&2)i[A+12>>0]=1;r=t[e+84>>2]|0;L5[t[r>>2]&63](r,A,1)|0;return}function pf(){var e=0;e=t[(t[47402]|0)+84>>2]|0;return L5[t[e>>2]&63](e,0,256)|0}function Ef(e,A,r){e=e|0;A=A|0;r=r|0;var a=0,n=0,f=0;n=KF(16)|0;a=t[47402]|0;f=t[a+84>>2]|0;f=t[(L5[t[f>>2]&63](f,0,256)|0)+8>>2]|0;t[n+8>>2]=e;L5[t[f>>2]&63](f,n,1)|0;i[e+92>>0]=r;if(i[a+112>>0]&1)i[e+100>>0]=1;t[e+88>>2]=A;return}function Bf(e,A,r){e=e|0;A=A|0;r=r|0;G2(A);return}function yf(e,A,r){e=e|0;A=A|0;r=r|0;Ph(t[A+8>>2]|0)|0;G2(A);return}function Cf(e,A,r){e=e|0;A=A|0;r=r|0;Qf(t[A+8>>2]|0);G2(A);return}function If(e){e=e|0;Ph(t[e+84>>2]|0)|0;At(e);G2(e);return}function Zf(e,A,r){e=e|0;A=A|0;r=r|0;G2(t[A+8>>2]|0);G2(A);return}function Gf(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,n=0,f=0;n=A+12|0;e=a[n>>1]|0;if(e<<16>>16){f=A+8|0;r=0;i=t[f>>2]|0;while(1){if((r|0)>=(e<<16>>16|0))break;G2(t[i>>2]|0);r=r+1|0;i=i+56|0;e=a[n>>1]|0}G2(t[f>>2]|0)}G2(A);return}function Lf(){var e=0,A=0;e=t[47403]|0;while(1){A=t[e+4>>2]|0;if(!A)break;G2(e);e=A}return}function Qf(e){e=e|0;var A=0;A=e+88|0;switch(i[e+92>>0]|0){case 1:{If(t[A>>2]|0);break}case 2:{rt(t[A>>2]|0);break}default:{}}At(e);G2(e);return}function Df(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0,n=0;a=h;h=h+160|0;i=a+8|0;n=a;t[n>>2]=0;t[n+4>>2]=0;t[47403]=n;t[47402]=0;t[47400]=0;t[47404]=t[(t[(t[r+52>>2]|0)+16>>2]|0)+144>>2];t[47405]=Uh(56104,t[4580]|0)|0;t[47406]=Uh(56140,t[4580]|0)|0;cw(i,128,a+24|0);t[47401]=i;if(!(Ff(e,i,r)|0)){of()|0;t[A>>2]=Cl()|0;e=t[47400]|0}else{t[A>>2]=2;e=0}Ph(t[47405]|0)|0;Ph(t[47406]|0)|0;t[47405]=0;t[47406]=0;t[47403]=0;hw(i);h=a;return e|0}function zf(e){e=e|0;var A=0,r=0,a=0;r=h;h=h+16|0;A=r;if(!(i[189661]|0)){i[189661]=1;a=Wf()|0;t[A>>2]=e;t[A+4>>2]=a;nw(1,140575,A)|0;Yf()}h=r;return}function Wf(){return ho(t[47407]|0)|0}function Yf(){var e=0,A=0,r=0,a=0;a=h;h=h+16|0;r=a;e=t[47410]|0;t[e+4>>2]=t[e>>2];A=t[47419]|0;if((A|0)>0){uw(e,t[47417]|0,A)|0;e=t[47410]|0}uw(e,t[47416]|0,t[47418]|0)|0;A=t[47410]|0;e=t[A+4>>2]|0;if(e>>>0>=(t[A+8>>2]|0)>>>0){ow(A,1)|0;e=t[47410]|0;A=e;e=t[e+4>>2]|0}t[A+4>>2]=e+1;i[e>>0]=0;e=t[47410]|0;A=t[e>>2]|0;t[e+4>>2]=A;t[r>>2]=A;nw(3,140591,r)|0;h=a;return}function Ff(e,A,r){e=e|0;A=A|0;r=r|0;t[47410]=A;cw(189644,128,0);t[47408]=e;i[189663]=0;i[189660]=0;i[189661]=0;t[47418]=0;t[47419]=0;i[189662]=1;r=r+52|0;A=xs(RF(n[(t[(t[r>>2]|0)+16>>2]|0)+115>>0]|0)|0)|0;t[47407]=A;Ao(A,t[(t[(t[r>>2]|0)+16>>2]|0)+144>>2]|0);ro(t[47407]|0,70,27);io(t[47407]|0,71);return 0}function Mf(e,A,r){e=e|0;A=A|0;r=r|0;do{if(!(N1(A,140603)|0)){t[47399]=xf(r)|0;i[189662]=0;t[47409]=286}else{if(N1(A,140609)|0?N1(A,140612)|0:0){if(!(N1(A,140615)|0)){i[189662]=1;t[47399]=Jf(r)|0;t[47409]=287;break}if(!(N1(A,140623)|0)){t[47399]=Hf(e,r,0)|0;t[47409]=288;break}if(!(N1(A,140628)|0)){t[47399]=Hf(e,0,1)|0;t[47409]=290;break}if(!(N1(A,140644)|0)){t[47399]=Hf(e,0,32)|0;t[47409]=295;break}if(!(N1(A,140630)|0)){t[47399]=Hf(e,0,4)|0;t[47409]=291;break}if(!(N1(A,140632)|0)){t[47399]=Hf(e,0,64)|0;t[47409]=292;break}if(!(N1(A,140634)|0)){t[47399]=Hf(e,0,2)|0;t[47409]=289;break}if(!(N1(A,140636)|0)){t[47399]=Hf(e,0,8)|0;t[47409]=293;break}if(!(N1(A,140640)|0)){t[47399]=Hf(e,0,16)|0;t[47409]=294;break}if(!(N1(A,140646)|0)){Pf(r);t[47409]=283;break}if(!(N1(A,140649)|0)){t[47409]=277;break}if(!(N1(A,140652)|0)){t[47409]=280;break}if(!(N1(A,140655)|0)){t[47399]=Xf(r)|0;t[47409]=285;break}if(!(N1(A,140618)|0)){t[47409]=262;break}else{Rf(A);break}}i[189662]=0;t[47409]=260}}while(0);return}function Vf(e,A){e=e|0;A=A|0;do{if(!(N1(A,140603)|0)){t[47409]=264;i[189662]=1}else{if(N1(A,140609)|0?N1(A,140612)|0:0){if(!(N1(A,140615)|0)){t[47409]=265;i[189662]=0;break}if(!(N1(A,140618)|0)){t[47409]=263;break}if(!(N1(A,140623)|0)){t[47409]=266;break}if(!(N1(A,140628)|0)){t[47409]=270;break}if(!(N1(A,140630)|0)){t[47409]=271;break}if(!(N1(A,140632)|0)){t[47409]=272;break}if(!(N1(A,140634)|0)){t[47409]=269;break}if(!(N1(A,140636)|0)){t[47409]=273;break}if(!(N1(A,140640)|0)){t[47409]=274;break}if(!(N1(A,140644)|0)){t[47409]=275;break}if(!(N1(A,140646)|0)){t[47409]=(t[47409]|0)==283?282:258;break}if(!(N1(A,140649)|0)){t[47409]=(t[47409]|0)==277?276:278;break}if(!(N1(A,140652)|0)){t[47409]=(t[47409]|0)==280?279:281;break}if(!(N1(A,140655)|0)){t[47409]=(t[47409]|0)==285?284:259;break}else{Rf(A);break}}t[47409]=261}}while(0);return}function Nf(e,A,r){e=e|0;A=A|0;r=r|0;var a=0,n=0,f=0;if(i[189662]|0){e=0;while(1){if(!r)break;f=A+1|0;n=i[A>>0]|0;if((n&255)>31){A=t[47410]|0;a=t[A+4>>2]|0;if(a>>>0>=(t[A+8>>2]|0)>>>0){ow(A,1)|0;a=t[47410]|0;A=a;a=t[a+4>>2]|0}t[A+4>>2]=a+1;i[a>>0]=n;e=e+1|0}A=f;r=r+-1|0}if(e|0)t[47409]=267}return}function Rf(e){e=e|0;var A=0,r=0,a=0;A=h;h=h+16|0;r=A;t[47409]=268;i[189661]=1;a=Wf()|0;t[r>>2]=e;t[r+4>>2]=a;nw(1,140659,r)|0;h=A;return}function xf(e){e=e|0;var A=0;A=KF(120)|0;t[A+100>>2]=-1;i[A+88>>0]=-1;Sf(A,56400,22,e,141611);return A|0}function Jf(e){e=e|0;var A=0;A=KF(104)|0;a[A+80>>1]=1;a[A+82>>1]=1;Sf(A,56224,22,e,140965);return A|0}function Hf(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0;a=h;h=h+32|0;i=a;t[i>>2]=0;t[i+4>>2]=0;t[i+8>>2]=0;t[i+12>>2]=0;t[i+16>>2]=0;t[i+20>>2]=0;t[i+24>>2]=0;t[i+28>>2]=0;c[i+16>>3]=-1.0;t[i+24>>2]=r&127;if(A|0)Sf(i,56200,3,A,140816);r=t[e+144>>2]|0;i=L5[t[r>>2]&63](r,i,1)|0;h=a;return i|0}function Pf(e){e=e|0;t[47399]=0;Sf(189596,56192,1,e,140752);return}function Xf(e){e=e|0;var A=0;A=KF(40)|0;Sf(A,56176,2,e,140698);return A|0}function Sf(e,A,r,a,f){e=e|0;A=A|0;r=r|0;a=a|0;f=f|0;var l=0,s=0,c=0,o=0,u=0,b=0;b=h;h=h+16|0;u=b;o=b+8|0;while(1){c=t[a>>2]|0;if(!c)break;l=t[a+4>>2]|0;t[o>>2]=c;s=r8(o,A,r,8,104)|0;if(!s){t[u>>2]=c;t[u+4>>2]=f;nw(0,140704,u)|0;l=1}else{l=Z5[t[s+4>>2]&127](e,l)|0;l=(l|(n[189660]|0))&255}i[189660]=l;a=a+8|0}h=b;return}function jf(e,A){e=e|0;A=A|0;return N1(t[e>>2]|0,t[A>>2]|0)|0}function Uf(e,A){e=e|0;A=A|0;t[e+36>>2]=o3(A)|0;return 0}function Tf(e,A){e=e|0;A=A|0;t[e+32>>2]=o3(A)|0;return 0}function Of(e,A){e=e|0;A=A|0;var r=0,a=0,n=0,f=0,l=0;l=h;h=h+16|0;n=l;a=(z4(i[A>>0]|0)|0)<<24>>24;switch(a|0){case 82:{r=A+1|0;if(!(N1(r,140763)|0)){t[e>>2]=114;r=0}else f=5;break}case 76:{f=6;break}default:{r=A+1|0;f=5}}do{if((f|0)==5)if(!(N1(r,140768)|0))f=6;else{if((a|0)!=67?(N1(r,140772)|0)==0:0){t[n>>2]=A;nw(0,140778,n)|0;r=1;break}t[e>>2]=110;r=0}}while(0);if((f|0)==6){t[e>>2]=108;r=0}h=l;return r|0}function _f(e,A){e=e|0;A=A|0;t[e+4>>2]=A;return 0}function qf(e,A){e=e|0;A=A|0;t[e>>2]=A;return 0}function Kf(e,A){e=e|0;A=A|0;var r=0,i=0;i=h;h=h+16|0;r=i;if(!($f(A,140845,0,255,r)|0)){c[e+16>>3]=+(t[r>>2]|0);e=0}else e=1;h=i;return e|0}function $f(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;var n=0,f=0,l=0,s=0,c=0,o=0;c=h;h=h+48|0;s=c+24|0;l=c+8|0;f=c;o=c+36|0;n=n3(e,o,10)|0;do{if((t[o>>2]|0)!=(e|0)){if((n|0)>(i|0)){t[l>>2]=A;t[l+4>>2]=e;t[l+8>>2]=i;nw(0,140887,l)|0;e=1;break}if((n|0)<(r|0)){t[s>>2]=A;t[s+4>>2]=e;t[s+8>>2]=r;nw(0,140926,s)|0;e=1;break}else{t[a>>2]=n;e=0;break}}else{t[f>>2]=A;t[f+4>>2]=e;nw(0,140856,f)|0;e=1}}while(0);h=c;return e|0}function el(e,A){e=e|0;A=A|0;var r=0,n=0,f=0;f=h;h=h+16|0;r=f;switch((z4(i[A>>0]|0)|0)<<24>>24|0){case 76:{if(!(N1(A+1|0,140768)|0)){e=e+36|0;a[e>>1]=a[e>>1]|4;e=0}else n=9;break}case 82:{if(!(N1(A+1|0,140763)|0)){e=e+36|0;a[e>>1]=a[e>>1]|2;e=0}else n=9;break}case 84:{if(!(N1(A+1|0,141563)|0)){e=e+36|0;a[e>>1]=a[e>>1]|6;e=0}else n=9;break}case 67:{if(!(N1(A+1|0,140772)|0))e=0;else n=9;break}default:n=9}if((n|0)==9){t[r>>2]=A;nw(0,141567,r)|0;e=1}h=f;return e|0}function Al(e,A){e=e|0;A=A|0;var r=0,n=0,f=0;f=h;h=h+16|0;r=f;switch((z4(i[A>>0]|0)|0)<<24>>24|0){case 76:{if(!(N1(A+1|0,140768)|0)){e=e+36|0;a[e>>1]=a[e>>1]|512;e=0}else n=7;break}case 82:{if(!(N1(A+1|0,140763)|0)){e=e+36|0;a[e>>1]=a[e>>1]|256;e=0}else n=7;break}case 67:{if(!(N1(A+1|0,140772)|0))e=0;else n=7;break}default:n=7}if((n|0)==7){t[r>>2]=A;nw(0,141518,r)|0;e=1}h=f;return e|0}function rl(e,A){e=e|0;A=A|0;t[e+20>>2]=o3(A)|0;return 0}function il(e,A){e=e|0;A=A|0;var r=0,n=0;n=h;h=h+16|0;r=n;if(!($f(A,141511,0,255,r)|0)){i[e+33>>0]=t[r>>2];e=e+36|0;a[e>>1]=a[e>>1]|32;e=0}else e=1;h=n;return e|0}function al(e,A){e=e|0;A=A|0;var r=0,n=0;n=h;h=h+16|0;r=n;if(!($f(A,141499,0,255,r)|0)){i[e+34>>0]=t[r>>2];e=e+36|0;a[e>>1]=a[e>>1]|64;e=0}else e=1;h=n;return e|0}function tl(e,A){e=e|0;A=A|0;var r=0,n=0;n=h;h=h+16|0;r=n;if(!($f(A,141487,-128,127,r)|0)){i[e+32>>0]=t[r>>2];e=e+36|0;a[e>>1]=a[e>>1]|128;e=0}else e=1;h=n;return e|0}function nl(e,A){e=e|0;A=A|0;t[e+24>>2]=o3(A)|0;return 0}function fl(e,A){e=e|0;A=A|0;var r=0,i=0,n=0;n=h;h=h+16|0;i=n;r=n+4|0;do{if(!($f(A,141442,0,65535,r)|0)){A=t[r>>2]|0;if(!A){nw(0,141450,i)|0;A=1;break}else{a[e+80>>1]=A;A=0;break}}else A=1}while(0);h=n;return A|0}function ll(e,A){e=e|0;A=A|0;var r=0,i=0,f=0;f=h;h=h+16|0;r=f;switch((z4(n[A>>0]|0)|0)<<24>>24|0){case 84:{if(!(N1(A+1|0,141391)|0)){e=e+36|0;a[e>>1]=a[e>>1]|1;e=0}else i=5;break}case 70:{if(!(N1(A+1|0,141395)|0))e=0;else i=5;break}default:i=5}if((i|0)==5){t[r>>2]=A;nw(0,141400,r)|0;e=1}h=f;return e|0}function sl(e,A){e=e|0;A=A|0;var r=0,i=0;i=h;h=h+16|0;r=i;if(!($f(A,141377,0,360,r)|0)){t[e+28>>2]=t[r>>2]&65535;e=0}else e=1;h=i;return e|0}function cl(e,A){e=e|0;A=A|0;var r=0,i=0;i=h;h=h+16|0;r=i;if(!($f(A,141370,0,65535,r)|0)){a[e+40>>1]=t[r>>2];e=0}else e=1;h=i;return e|0}function ol(e,A){e=e|0;A=A|0;t[e>>2]=o3(A)|0;return 0}function ul(e,A){e=e|0;A=A|0;t[e+16>>2]=o3(A)|0;return 0}function bl(e,A){e=e|0;A=A|0;t[e+4>>2]=o3(A)|0;return 0}function hl(e,A){e=e|0;A=A|0;var r=0,i=0,n=0;n=h;h=h+16|0;i=n;r=n+4|0;do{if(!($f(A,141325,0,65535,r)|0)){A=t[r>>2]|0;if(!A){nw(0,141333,i)|0;A=1;break}else{a[e+82>>1]=A;A=0;break}}else A=1}while(0);h=n;return A|0}function wl(e,A){e=e|0;A=A|0;var r=0,n=0,f=0,l=0,s=0,c=0;c=h;h=h+16|0;l=c;f=0;e:while(1){A:while(1){n=A+1|0;A=i[A>>0]|0;if(!(A<<24>>24))break e;A=A<<24>>24;r=(R1(A)|0)+-98|0;switch(r>>>1|r<<31|0){case 5:{s=5;break A}case 9:{r=2048;break A}case 8:{s=6;break A}case 0:{s=7;break A}default:{}}t[l>>2]=A;t[l+4>>2]=A;nw(0,141272,l)|0;A=n}if((s|0)==5){s=0;r=1024}else if((s|0)==6){s=0;r=4096}else if((s|0)==7){s=0;r=8192}A=n;f=f|r}if(f<<16>>16!=15360){s=e+36|0;a[s>>1]=a[s>>1]|f}h=c;return 0}function kl(e,A){e=e|0;A=A|0;var r=0,n=0,f=0,l=0,s=0,c=0;c=h;h=h+16|0;s=c+8|0;l=c;f=o3(A)|0;n=e+42|0;r=0;A=f;while(1){e=l3(A,141182)|0;if(!e)break;if(((z4(i[e>>0]|0)|0)&255|0)==82){A=e+1|0;if(!(N1(A,141185)|0)){a[n>>1]=a[n>>1]|4;e=r;A=0;r=e;continue}if(!(N1(A,141192)|0)){a[n>>1]=a[n>>1]|2;e=r;A=0;r=e;continue}else{t[l>>2]=e;nw(0,141198,l)|0;r=1;A=0;continue}}if(!(N1(e,141236)|0)){a[n>>1]=a[n>>1]&-385;e=r;A=0;r=e;continue}if(N1(e,141242)|0?N1(e,141252)|0:0){if(!(N1(e,141258)|0)){a[n>>1]=a[n>>1]|128;e=r;A=0;r=e;continue}if(!(N1(e,141265)|0)){a[n>>1]=a[n>>1]|256;e=r;A=0;r=e;continue}else{t[s>>2]=e;nw(0,141198,s)|0;r=1;A=0;continue}}a[n>>1]=a[n>>1]|32;e=r;A=0;r=e}G2(f);h=c;return r|0}function dl(e,A){e=e|0;A=A|0;t[e+8>>2]=o3(A)|0;return 0}function vl(e,A){e=e|0;A=A|0;t[e+12>>2]=o3(A)|0;return 0}function gl(e,A){e=e|0;A=A|0;var r=0,n=0,f=0;f=h;h=h+16|0;r=f;switch((z4(i[A>>0]|0)|0)<<24>>24|0){case 66:{if(!(N1(A+1|0,141128)|0)){e=e+36|0;a[e>>1]=a[e>>1]|16;e=0}else n=7;break}case 84:{if(!(N1(A+1|0,141134)|0)){e=e+36|0;a[e>>1]=a[e>>1]|8;e=0}else n=7;break}case 77:{if(!(N1(A+1|0,141137)|0))e=0;else n=7;break}default:n=7}if((n|0)==7){t[r>>2]=A;nw(0,141143,r)|0;e=1}h=f;return e|0}function ml(e,A){e=e|0;A=A|0;var r=0,i=0;i=h;h=h+16|0;r=i;if(!($f(A,141122,0,65535,r)|0)){a[e+38>>1]=t[r>>2];e=0}else e=1;h=i;return e|0}function pl(e,A){e=e|0;A=A|0;var r=0,n=0,f=0;f=h;h=h+16|0;r=f;switch((z4(i[A>>0]|0)|0)<<24>>24|0){case 76:{if(!(N1(A+1|0,140768)|0)){e=e+36|0;a[e>>1]=a[e>>1]|4;e=0}else n=7;break}case 82:{if(!(N1(A+1|0,140763)|0)){e=e+36|0;a[e>>1]=a[e>>1]|2;e=0}else n=7;break}case 67:{if(!(N1(A+1|0,140772)|0))e=0;else n=7;break}default:n=7}if((n|0)==7){t[r>>2]=A;nw(0,140778,r)|0;e=1}h=f;return e|0}function El(e,A){e=e|0;A=A|0;var r=0,a=0;a=h;h=h+16|0;r=a;if(!($f(A,141720,0,127,r)|0)){i[e+88>>0]=t[r>>2];e=0}else e=1;h=a;return e|0}function Bl(e,A){e=e|0;A=A|0;var r=0,a=0;a=h;h=h+16|0;r=a;if((i[A>>0]|0)==42){e=e+112|0;i[e>>0]=i[e>>0]|1;e=0}else{t[r>>2]=A;nw(0,141680,r)|0;e=1}h=a;return e|0}function yl(e,A){e=e|0;A=A|0;var r=0,a=0;a=h;h=h+16|0;r=a;if((i[A>>0]|0)==42){e=e+112|0;i[e>>0]=i[e>>0]|2;e=0}else{t[r>>2]=A;nw(0,141643,r)|0;e=1}h=a;return e|0}function Cl(){var e=0;e=(i[189661]|i[189660])<<24>>24;js(t[47407]|0);hw(189644);return e|0}function Il(){var e=0,A=0,r=0,a=0,n=0,f=0,l=0,s=0;s=h;h=h+16|0;l=s;t[47409]=0;A=0;e:do{A:do{switch(i[189663]|0){case 2:{e=-1;break e}case 0:{i[189663]=1;f=6;e=141732;A=0;break}default:{e=t[47408]|0;if(!(i[e>>0]|0)){i[189663]=2;f=7;e=141739;break A}else{A=Zl(e)|0;f=A-e|0;break A}}}}while(0);t[47417]=t[47416];t[47419]=t[47418];t[47416]=e;t[47418]=f;r=t[47412]|0;a=r-(t[47411]|0)|0;n=t[47407]|0;if(!a)e=ao(n,e,f,(f|0)==0&1)|0;else{if(r>>>0<(t[47413]|0)>>>0)e=r;else{ow(189644,1)|0;e=t[47412]|0}i[e>>0]=0;e=t[47411]|0;t[47412]=e;e=ao(n,e,a,0)|0}if(!((e|0)!=0|(i[189661]|0)!=0)){n=wo(bo(t[47407]|0)|0)|0;f=Wf()|0;t[l>>2]=n;t[l+4>>2]=f;nw(1,140575,l)|0;Yf();i[189661]=1;t[47409]=268}if(A|0)t[47408]=A;e=t[47409]|0}while((e|0)==0);h=s;return e|0}function Zl(e){e=e|0;var A=0,r=0,a=0,n=0,f=0;f=h;h=h+16|0;a=f;A=e+1|0;r=i[e>>0]|0;e:do{if(r<<24>>24==60){r=i[A>>0]|0;if(r<<24>>24==33)if(!(y1(e+2|0,141747,2)|0)){r=Gl(e+4|0)|0;A=r;r=i[r>>0]|0;n=8}else{r=A;n=5}else n=6;A:while(1)if((n|0)==5){A=r;r=i[r>>0]|0;n=6;continue}else if((n|0)==6){switch(r<<24>>24){case 62:case 0:{n=8;continue A}default:{}}r=A+1|0;n=5;continue}else if((n|0)==8)if(r<<24>>24==62){n=10;break}else{n=9;break}if((n|0)==9){nw(0,141750,a)|0;i[189660]=1;break}else if((n|0)==10){A=A+1|0;break}}else{A=e;e=r;while(1){switch(e<<24>>24){case 60:case 0:break e;case 38:{r=A+1|0;if((i[r>>0]|0)==35)n=15;else r=kJ(r,189644)|0;break}default:n=15}if((n|0)==15){n=0;r=t[47412]|0;if(r>>>0>=(t[47413]|0)>>>0){ow(189644,1)|0;r=t[47412]|0}t[47412]=r+1;i[r>>0]=e;r=A+1|0}A=r;e=i[r>>0]|0}}}while(0);h=f;return A|0}function Gl(e){e=e|0;var A=0,r=0,a=0,t=0,n=0,f=0,l=0,s=0;s=h;h=h+16|0;l=s;t=1;A=e;e:while(1){a=(t|0)==0;r=A;A:while(1){if(a)break e;n=r+1|0;switch(i[r>>0]|0){case 0:{A=n;break e}case 60:{f=5;break A}case 62:{A=-1;break A}default:r=n}}if((f|0)==5){f=0;A=1}t=t+A|0;A=n}r=A+-1|0;do{if(i[r>>0]|0){A=A+-3|0;if(A>>>0>=e>>>0?(y1(A,141747,2)|0)==0:0)break;nw(0,141791,l)|0;i[189660]=1}}while(0);h=s;return r|0}function Ll(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0,f=0,l=0,s=0,c=0,o=0,u=0,b=0,h=0,w=0,k=0,d=0,v=0;r=Z2(28)|0;if(!r)r=0;else{i=0;a=0;while(1){if((i|0)>=(A|0))break;d=(t[(t[e+(i<<2)>>2]|0)+4>>2]|0)+a|0;i=i+1|0;a=d}h=r+8|0;t[h>>2]=Ql(a<<4)|0;w=r+12|0;t[w>>2]=Ql((A<<2)+4|0)|0;i=a<<2;k=r+16|0;t[k>>2]=Ql(i)|0;i=Ql(i)|0;d=r+20|0;t[d>>2]=i;t[r+4>>2]=a;t[r>>2]=A;a=0;f=0;while(1){t[(t[w>>2]|0)+(f<<2)>>2]=a;if((f|0)>=(A|0))break;s=e+(f<<2)|0;b=t[s>>2]|0;c=t[b+4>>2]|0;o=a+-1|0;n=0;l=a;u=c;while(1){if((n|0)>=(u|0))break;u=(t[h>>2]|0)+(l<<4)|0;i=(t[b>>2]|0)+(n<<4)|0;t[u>>2]=t[i>>2];t[u+4>>2]=t[i+4>>2];t[u+8>>2]=t[i+8>>2];t[u+12>>2]=t[i+12>>2];u=l+1|0;t[(t[k>>2]|0)+(l<<2)>>2]=u;i=t[d>>2]|0;t[i+(l<<2)>>2]=l+-1;v=t[s>>2]|0;n=n+1|0;l=u;u=t[v+4>>2]|0;b=v}v=o+c|0;t[(t[k>>2]|0)+(v<<2)>>2]=a;t[i+(a<<2)>>2]=v;a=l;f=f+1|0}Qs(r)}return r|0}function Ql(e){e=e|0;if(!e)e=0;else e=Z2(e)|0;return e|0}function Dl(e){e=e|0;var A=0,r=0;G2(t[e+8>>2]|0);G2(t[e+12>>2]|0);G2(t[e+16>>2]|0);G2(t[e+20>>2]|0);r=e+24|0;A=t[r>>2]|0;if(A|0){G2(t[A>>2]|0);G2(t[r>>2]|0)}G2(e);return}function zl(e,A,r,i,a,n){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;n=n|0;var f=0,l=0,s=0,c=0,o=0,u=0,b=0,w=0;w=h;h=h+32|0;o=w+16|0;s=w;t[o>>2]=t[A>>2];t[o+4>>2]=t[A+4>>2];t[o+8>>2]=t[A+8>>2];t[o+12>>2]=t[A+12>>2];u=Vs(e,r,o)|0;t[o>>2]=t[i>>2];t[o+4>>2]=t[i+4>>2];t[o+8>>2]=t[i+8>>2];t[o+12>>2]=t[i+12>>2];b=Vs(e,a,o)|0;t[s>>2]=t[A>>2];t[s+4>>2]=t[A+4>>2];t[s+8>>2]=t[A+8>>2];t[s+12>>2]=t[A+12>>2];t[o>>2]=t[i>>2];t[o+4>>2]=t[i+4>>2];t[o+8>>2]=t[i+8>>2];t[o+12>>2]=t[i+12>>2];o=ms(s,r,u,o,a,b,e)|0;r=t[e+4>>2]|0;s=r+1|0;a=1;f=r;while(1){f=t[o+(f<<2)>>2]|0;c=a+1|0;if((f|0)==(s|0))break;else a=c}l=Z2(c<<4)|0;f=l+(a<<4)|0;t[f>>2]=t[i>>2];t[f+4>>2]=t[i+4>>2];t[f+8>>2]=t[i+8>>2];t[f+12>>2]=t[i+12>>2];e=e+8|0;while(1){r=t[o+(r<<2)>>2]|0;a=a+-1|0;f=l+(a<<4)|0;if((r|0)==(s|0))break;i=(t[e>>2]|0)+(r<<4)|0;t[f>>2]=t[i>>2];t[f+4>>2]=t[i+4>>2];t[f+8>>2]=t[i+8>>2];t[f+12>>2]=t[i+12>>2]}t[f>>2]=t[A>>2];t[f+4>>2]=t[A+4>>2];t[f+8>>2]=t[A+8>>2];t[f+12>>2]=t[A+12>>2];if(a|0)ge(141809,141816,148,141822);if(u|0)G2(u);if(b|0)G2(b);t[n+4>>2]=c;t[n>>2]=l;G2(o);h=w;return 1}function Wl(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0,f=0,l=0,s=0,c=0,o=0;s=h;h=h+48|0;f=s+32|0;n=s+16|0;a=s;l=t[e>>2]|0;r=t[e+4>>2]|0;i=r+-1|0;e=0;while(1){if((e|0)>=(r|0)){e=1;break}o=l+(((i+e|0)%(r|0)|0)<<4)|0;c=l+(e<<4)|0;t[a>>2]=t[o>>2];t[a+4>>2]=t[o+4>>2];t[a+8>>2]=t[o+8>>2];t[a+12>>2]=t[o+12>>2];t[n>>2]=t[c>>2];t[n+4>>2]=t[c+4>>2];t[n+8>>2]=t[c+8>>2];t[n+12>>2]=t[c+12>>2];t[f>>2]=t[A>>2];t[f+4>>2]=t[A+4>>2];t[f+8>>2]=t[A+8>>2];t[f+12>>2]=t[A+12>>2];if((Is(a,n,f)|0)==1){e=0;break}else e=e+1|0}h=s;return e|0}function Yl(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;var n=0,f=0,l=0,s=0,c=0,o=0,u=0,b=0,w=0,k=0,g=0,m=0;m=h;h=h+64|0;o=m+48|0;c=m+32|0;k=4;s=Z2(40)|0;t[s>>2]=0;u=m+16|0;b=m;w=t[r>>2]|0;l=t[r+4>>2]|0;k=G6(189680,1,s|0,k|0)|0;s=G;d=0;r=d;d=0;if((r|0)!=0&(v|0)!=0){n=L6(t[r>>2]|0,k|0,s|0)|0;if(!n)aA(r|0,v|0);G=v}else n=-1;if((n|0)==1)r=G;else r=0;while(1){if(r|0){r=-1;break}d=0;t[o>>2]=t[i>>2];t[o+4>>2]=t[i+4>>2];t[o+8>>2]=t[i+8>>2];t[o+12>>2]=t[i+12>>2];ue(28,u|0,o|0);r=d;d=0;if((r|0)!=0&(v|0)!=0){n=L6(t[r>>2]|0,k|0,s|0)|0;if(!n)aA(r|0,v|0);G=v}else n=-1;if((n|0)==1){r=G;continue}t[i>>2]=t[u>>2];t[i+4>>2]=t[u+4>>2];t[i+8>>2]=t[u+8>>2];t[i+12>>2]=t[u+12>>2];f=i+16|0;d=0;t[o>>2]=t[f>>2];t[o+4>>2]=t[f+4>>2];t[o+8>>2]=t[f+8>>2];t[o+12>>2]=t[f+12>>2];ue(28,b|0,o|0);r=d;d=0;if((r|0)!=0&(v|0)!=0){n=L6(t[r>>2]|0,k|0,s|0)|0;if(!n)aA(r|0,v|0);G=v}else n=-1;if((n|0)==1){r=G;continue}t[f>>2]=t[b>>2];t[f+4>>2]=t[b+4>>2];t[f+8>>2]=t[b+8>>2];t[f+12>>2]=t[b+12>>2];t[47459]=0;d=0;oe(115,4);r=d;d=0;if((r|0)!=0&(v|0)!=0){n=L6(t[r>>2]|0,k|0,s|0)|0;if(!n)aA(r|0,v|0);G=v}else n=-1;if((n|0)==1){r=G;continue}n=t[47460]|0;r=t[47459]|0;t[47459]=r+1;r=n+(r<<4)|0;t[r>>2]=t[w>>2];t[r+4>>2]=t[w+4>>2];t[r+8>>2]=t[w+8>>2];t[r+12>>2]=t[w+12>>2];d=0;t[c>>2]=t[i>>2];t[c+4>>2]=t[i+4>>2];t[c+8>>2]=t[i+8>>2];t[c+12>>2]=t[i+12>>2];t[o>>2]=t[f>>2];t[o+4>>2]=t[f+4>>2];t[o+8>>2]=t[f+8>>2];t[o+12>>2]=t[f+12>>2];r=le(1,e|0,A|0,w|0,l|0,c|0,o|0)|0;n=d;d=0;if((n|0)!=0&(v|0)!=0){f=L6(t[n>>2]|0,k|0,s|0)|0;if(!f)aA(n|0,v|0);G=v}else f=-1;if((f|0)==1)r=G;else{g=8;break}}if((g|0)==8)if((r|0)==-1)r=-1;else{t[a+4>>2]=t[47459];t[a>>2]=t[47460];r=0}G2(k|0);h=m;return r|0}function Fl(e,A){e=e|0;A=A|0;var r=0.0,i=0,a=0.0,n=0.0,f=0.0;r=+c[A>>3];i=A+8|0;a=+c[i>>3];f=a*a+r*r;n=+D(+f);if(f>1.0e-06){c[A>>3]=r/n;c[i>>3]=a/n}t[e>>2]=t[A>>2];t[e+4>>2]=t[A+4>>2];t[e+8>>2]=t[A+8>>2];t[e+12>>2]=t[A+12>>2];return}function Ml(e){e=e|0;var A=0,r=0,i=0,a=0;a=h;h=h+32|0;i=a+16|0;r=a;if((t[47463]|0)<(e|0)){A=t[47460]|0;if(!A){i=Z2(e<<4)|0;t[47460]=i;if(!i){i=t[15712]|0;t[r>>2]=141831;t[r+4>>2]=531;t[r+8>>2]=141966;a3(i,141839,r)|0;aA(189680,1)}}else{r=Q2(A,e<<4)|0;t[47460]=r;if(!r){r=t[15712]|0;t[i>>2]=141831;t[i+4>>2]=537;t[i+8>>2]=141984;a3(r,141839,i)|0;aA(189680,1)}}t[47463]=e}h=a;return}function Vl(e,A,r,i,a,n){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;n=n|0;var f=0,l=0.0,s=0,o=0.0,u=0,b=0.0,w=0.0,k=0,d=0.0,v=0.0,g=0.0,m=0.0,p=0.0,E=0,B=0,y=0,C=0,I=0,Z=0,G=0,L=0,Q=0,D=0,z=0,W=0,Y=0,F=0,M=0,V=0,N=0,R=0,x=0,J=0,H=0,P=0,X=0,S=0.0,j=0.0,U=0.0,T=0.0;P=h;h=h+336|0;F=P+320|0;Y=P+304|0;E=P+144|0;k=P+128|0;z=P+112|0;W=P+96|0;H=P+80|0;I=P+64|0;G=P+48|0;M=P+32|0;V=P+16|0;N=P;B=P+288|0;y=P+272|0;C=P+256|0;Z=P+240|0;L=P+224|0;Q=P+208|0;R=P+192|0;x=P+176|0;J=P+160|0;f=t[47462]|0;do{if((t[47461]|0)<(i|0)){if(!f){f=Z2(i*40|0)|0;t[47462]=f;if(!f){f=-1;break}}else{f=Q2(f,i*40|0)|0;t[47462]=f;if(!f){f=-1;break}}t[47461]=i;s=6}else s=6}while(0);if((s|0)==6){c[f>>3]=0.0;s=1;l=0.0;while(1){if((s|0)>=(i|0))break;u=r+(s<<4)|0;D=r+(s+-1<<4)|0;t[Y>>2]=t[u>>2];t[Y+4>>2]=t[u+4>>2];t[Y+8>>2]=t[u+8>>2];t[Y+12>>2]=t[u+12>>2];t[F>>2]=t[D>>2];t[F+4>>2]=t[D+4>>2];t[F+8>>2]=t[D+8>>2];t[F+12>>2]=t[D+12>>2];p=+Nl(Y,F)+l;c[f+(s*40|0)>>3]=p;s=s+1|0;l=p}D=i+-1|0;u=f+(D*40|0)|0;s=1;while(1){if((s|0)>=(i|0))break;X=f+(s*40|0)|0;c[X>>3]=+c[X>>3]/+c[u>>3];s=s+1|0}s=0;while(1){if((s|0)>=(i|0))break;X=f+(s*40|0)+8|0;u=f+(s*40|0)|0;p=+Rl(+c[u>>3]);t[F>>2]=t[a>>2];t[F+4>>2]=t[a+4>>2];t[F+8>>2]=t[a+8>>2];t[F+12>>2]=t[a+12>>2];xl(B,F,p);t[X>>2]=t[B>>2];t[X+4>>2]=t[B+4>>2];t[X+8>>2]=t[B+8>>2];t[X+12>>2]=t[B+12>>2];X=f+(s*40|0)+24|0;p=+Jl(+c[u>>3]);t[F>>2]=t[n>>2];t[F+4>>2]=t[n+4>>2];t[F+8>>2]=t[n+8>>2];t[F+12>>2]=t[n+12>>2];xl(y,F,p);t[X>>2]=t[y>>2];t[X+4>>2]=t[y+4>>2];t[X+8>>2]=t[y+8>>2];t[X+12>>2]=t[y+12>>2];s=s+1|0}t[Y>>2]=t[a>>2];t[Y+4>>2]=t[a+4>>2];t[Y+8>>2]=t[a+8>>2];t[Y+12>>2]=t[a+12>>2];t[F>>2]=t[n>>2];t[F+4>>2]=t[n+4>>2];t[F+8>>2]=t[n+8>>2];t[F+12>>2]=t[n+12>>2];Hl(r,i,f,Y,F,z,I,W,G);t[k>>2]=t[z>>2];t[k+4>>2]=t[z+4>>2];t[k+8>>2]=t[z+8>>2];t[k+12>>2]=t[z+12>>2];t[E>>2]=t[I>>2];t[E+4>>2]=t[I+4>>2];t[E+8>>2]=t[I+8>>2];t[E+12>>2]=t[I+12>>2];t[Y>>2]=t[W>>2];t[Y+4>>2]=t[W+4>>2];t[Y+8>>2]=t[W+8>>2];t[Y+12>>2]=t[W+12>>2];t[F>>2]=t[G>>2];t[F+4>>2]=t[G+4>>2];t[F+8>>2]=t[G+8>>2];t[F+12>>2]=t[G+12>>2];if(!(Pl(e,A,k,E,Y,F,r,i)|0)){t[F>>2]=t[I>>2];t[F+4>>2]=t[I+4>>2];t[F+8>>2]=t[I+8>>2];t[F+12>>2]=t[I+12>>2];xl(C,F,.3333333333333333);t[Y>>2]=t[z>>2];t[Y+4>>2]=t[z+4>>2];t[Y+8>>2]=t[z+8>>2];t[Y+12>>2]=t[z+12>>2];t[F>>2]=t[C>>2];t[F+4>>2]=t[C+4>>2];t[F+8>>2]=t[C+8>>2];t[F+12>>2]=t[C+12>>2];Xl(Z,Y,F);p=+c[Z>>3];m=+c[Z+8>>3];t[F>>2]=t[G>>2];t[F+4>>2]=t[G+4>>2];t[F+8>>2]=t[G+8>>2];t[F+12>>2]=t[G+12>>2];xl(L,F,.3333333333333333);t[Y>>2]=t[W>>2];t[Y+4>>2]=t[W+4>>2];t[Y+8>>2]=t[W+8>>2];t[Y+12>>2]=t[W+12>>2];t[F>>2]=t[L>>2];t[F+4>>2]=t[L+4>>2];t[F+8>>2]=t[L+8>>2];t[F+12>>2]=t[L+12>>2];Sl(Q,Y,F);g=+c[Q>>3];w=+c[Q+8>>3];k=t[47462]|0;d=+c[z>>3];v=+c[W>>3];b=+c[z+8>>3];o=+c[W+8>>3];u=H+8|0;f=-1;l=-1.0;s=1;while(1){if((s|0)>=(D|0))break;S=+c[k+(s*40|0)>>3];j=+jl(S);U=+Rl(S);T=+Jl(S);S=+Ul(S);c[H>>3]=U*p+d*j+T*g+v*S;c[u>>3]=T*w+U*m+b*j+o*S;X=r+(s<<4)|0;t[Y>>2]=t[H>>2];t[Y+4>>2]=t[H+4>>2];t[Y+8>>2]=t[H+8>>2];t[Y+12>>2]=t[H+12>>2];t[F>>2]=t[X>>2];t[F+4>>2]=t[X+4>>2];t[F+8>>2]=t[X+8>>2];t[F+12>>2]=t[X+12>>2];S=+Nl(Y,F);X=S>l;f=X?s:f;l=X?S:l;s=s+1|0}X=r+(f<<4)|0;H=r+(f+-1<<4)|0;t[Y>>2]=t[X>>2];t[Y+4>>2]=t[X+4>>2];t[Y+8>>2]=t[X+8>>2];t[Y+12>>2]=t[X+12>>2];t[F>>2]=t[H>>2];t[F+4>>2]=t[H+4>>2];t[F+8>>2]=t[H+8>>2];t[F+12>>2]=t[H+12>>2];Sl(R,Y,F);t[F>>2]=t[R>>2];t[F+4>>2]=t[R+4>>2];t[F+8>>2]=t[R+8>>2];t[F+12>>2]=t[R+12>>2];Fl(V,F);H=f+1|0;R=r+(H<<4)|0;t[Y>>2]=t[R>>2];t[Y+4>>2]=t[R+4>>2];t[Y+8>>2]=t[R+8>>2];t[Y+12>>2]=t[R+12>>2];t[F>>2]=t[X>>2];t[F+4>>2]=t[X+4>>2];t[F+8>>2]=t[X+8>>2];t[F+12>>2]=t[X+12>>2];Sl(x,Y,F);t[F>>2]=t[x>>2];t[F+4>>2]=t[x+4>>2];t[F+8>>2]=t[x+8>>2];t[F+12>>2]=t[x+12>>2];Fl(N,F);t[Y>>2]=t[V>>2];t[Y+4>>2]=t[V+4>>2];t[Y+8>>2]=t[V+8>>2];t[Y+12>>2]=t[V+12>>2];t[F>>2]=t[N>>2];t[F+4>>2]=t[N+4>>2];t[F+8>>2]=t[N+8>>2];t[F+12>>2]=t[N+12>>2];Xl(J,Y,F);t[F>>2]=t[J>>2];t[F+4>>2]=t[J+4>>2];t[F+8>>2]=t[J+8>>2];t[F+12>>2]=t[J+12>>2];Fl(M,F);t[Y>>2]=t[a>>2];t[Y+4>>2]=t[a+4>>2];t[Y+8>>2]=t[a+8>>2];t[Y+12>>2]=t[a+12>>2];t[F>>2]=t[M>>2];t[F+4>>2]=t[M+4>>2];t[F+8>>2]=t[M+8>>2];t[F+12>>2]=t[M+12>>2];Vl(e,A,r,H,Y,F)|0;t[Y>>2]=t[M>>2];t[Y+4>>2]=t[M+4>>2];t[Y+8>>2]=t[M+8>>2];t[Y+12>>2]=t[M+12>>2];t[F>>2]=t[n>>2];t[F+4>>2]=t[n+4>>2];t[F+8>>2]=t[n+8>>2];t[F+12>>2]=t[n+12>>2];Vl(e,A,X,i-f|0,Y,F)|0;f=0}else f=0}h=P;return f|0}function Nl(e,A){e=e|0;A=A|0;var r=0.0,i=0.0;r=+c[A>>3]-+c[e>>3];i=+c[A+8>>3]-+c[e+8>>3];return+ +D(+(i*i+r*r))}function Rl(e){e=+e;var A=0.0;A=1.0-e;return+(A*A*(e*3.0))}function xl(e,A,r){e=e|0;A=A|0;r=+r;var i=0;c[A>>3]=+c[A>>3]*r;i=A+8|0;c[i>>3]=+c[i>>3]*r;t[e>>2]=t[A>>2];t[e+4>>2]=t[A+4>>2];t[e+8>>2]=t[A+8>>2];t[e+12>>2]=t[A+12>>2];return}function Jl(e){e=+e;return+(e*e*3.0*(1.0-e))}function Hl(e,A,r,i,a,n,f,l,s){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;n=n|0;f=f|0;l=l|0;s=s|0;var o=0.0,u=0.0,b=0.0,w=0.0,k=0,d=0,v=0,g=0,m=0,p=0,E=0.0,B=0.0,y=0.0,C=0.0,I=0.0,Z=0,G=0,L=0,Q=0,D=0,z=0,W=0.0,Y=0.0,F=0,M=0,V=0,N=0;z=h;h=h+128|0;Z=z+112|0;p=z+80|0;m=z;d=z+96|0;v=z+64|0;g=z+48|0;G=z+32|0;L=z+16|0;Q=e+(A+-1<<4)|0;k=0;E=0.0;B=0.0;y=0.0;C=0.0;I=0.0;while(1){if((k|0)>=(A|0))break;M=r+(k*40|0)+8|0;t[p>>2]=t[M>>2];t[p+4>>2]=t[M+4>>2];t[p+8>>2]=t[M+8>>2];t[p+12>>2]=t[M+12>>2];t[Z>>2]=t[M>>2];t[Z+4>>2]=t[M+4>>2];t[Z+8>>2]=t[M+8>>2];t[Z+12>>2]=t[M+12>>2];W=+$l(p,Z)+B;F=r+(k*40|0)+24|0;t[p>>2]=t[M>>2];t[p+4>>2]=t[M+4>>2];t[p+8>>2]=t[M+8>>2];t[p+12>>2]=t[M+12>>2];t[Z>>2]=t[F>>2];t[Z+4>>2]=t[F+4>>2];t[Z+8>>2]=t[F+8>>2];t[Z+12>>2]=t[F+12>>2];w=+$l(p,Z)+I;t[p>>2]=t[F>>2];t[p+4>>2]=t[F+4>>2];t[p+8>>2]=t[F+8>>2];t[p+12>>2]=t[F+12>>2];t[Z>>2]=t[F>>2];t[Z+4>>2]=t[F+4>>2];t[Z+8>>2]=t[F+8>>2];t[Z+12>>2]=t[F+12>>2];b=+$l(p,Z)+y;V=e+(k<<4)|0;N=r+(k*40|0)|0;Y=+es(+c[N>>3]);t[Z>>2]=t[e>>2];t[Z+4>>2]=t[e+4>>2];t[Z+8>>2]=t[e+8>>2];t[Z+12>>2]=t[e+12>>2];xl(v,Z,Y);Y=+As(+c[N>>3]);t[Z>>2]=t[Q>>2];t[Z+4>>2]=t[Q+4>>2];t[Z+8>>2]=t[Q+8>>2];t[Z+12>>2]=t[Q+12>>2];xl(g,Z,Y);t[p>>2]=t[v>>2];t[p+4>>2]=t[v+4>>2];t[p+8>>2]=t[v+8>>2];t[p+12>>2]=t[v+12>>2];t[Z>>2]=t[g>>2];t[Z+4>>2]=t[g+4>>2];t[Z+8>>2]=t[g+8>>2];t[Z+12>>2]=t[g+12>>2];Xl(d,p,Z);t[p>>2]=t[V>>2];t[p+4>>2]=t[V+4>>2];t[p+8>>2]=t[V+8>>2];t[p+12>>2]=t[V+12>>2];t[Z>>2]=t[d>>2];t[Z+4>>2]=t[d+4>>2];t[Z+8>>2]=t[d+8>>2];t[Z+12>>2]=t[d+12>>2];Sl(m,p,Z);t[p>>2]=t[M>>2];t[p+4>>2]=t[M+4>>2];t[p+8>>2]=t[M+8>>2];t[p+12>>2]=t[M+12>>2];t[Z>>2]=t[m>>2];t[Z+4>>2]=t[m+4>>2];t[Z+8>>2]=t[m+8>>2];t[Z+12>>2]=t[m+12>>2];Y=+$l(p,Z)+E;t[p>>2]=t[F>>2];t[p+4>>2]=t[F+4>>2];t[p+8>>2]=t[F+8>>2];t[p+12>>2]=t[F+12>>2];t[Z>>2]=t[m>>2];t[Z+4>>2]=t[m+4>>2];t[Z+8>>2]=t[m+8>>2];t[Z+12>>2]=t[m+12>>2];k=k+1|0;E=Y;B=W;y=b;C=+$l(p,Z)+C;I=w}b=y*B-I*I;w=b>=0.0?b:-b;if(!(w>=1.0e-06?(o=(y*E-I*C)/b,u=(B*C-I*E)/b,!(w<1.0e-06|o<=0.0|u<=0.0)):0))D=6;if((D|0)==6){t[p>>2]=t[e>>2];t[p+4>>2]=t[e+4>>2];t[p+8>>2]=t[e+8>>2];t[p+12>>2]=t[e+12>>2];t[Z>>2]=t[Q>>2];t[Z+4>>2]=t[Q+4>>2];t[Z+8>>2]=t[Q+8>>2];t[Z+12>>2]=t[Q+12>>2];o=+Nl(p,Z)*.3333333333333333;u=o}t[n>>2]=t[e>>2];t[n+4>>2]=t[e+4>>2];t[n+8>>2]=t[e+8>>2];t[n+12>>2]=t[e+12>>2];t[Z>>2]=t[i>>2];t[Z+4>>2]=t[i+4>>2];t[Z+8>>2]=t[i+8>>2];t[Z+12>>2]=t[i+12>>2];xl(G,Z,o);t[f>>2]=t[G>>2];t[f+4>>2]=t[G+4>>2];t[f+8>>2]=t[G+8>>2];t[f+12>>2]=t[G+12>>2];t[l>>2]=t[Q>>2];t[l+4>>2]=t[Q+4>>2];t[l+8>>2]=t[Q+8>>2];t[l+12>>2]=t[Q+12>>2];t[Z>>2]=t[a>>2];t[Z+4>>2]=t[a+4>>2];t[Z+8>>2]=t[a+8>>2];t[Z+12>>2]=t[a+12>>2];xl(L,Z,u);t[s>>2]=t[L>>2];t[s+4>>2]=t[L+4>>2];t[s+8>>2]=t[L+8>>2];t[s+12>>2]=t[L+12>>2];h=z;return}function Pl(e,A,r,i,a,n,f,l){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;n=n|0;f=f|0;l=l|0;var s=0.0,o=0.0,u=0.0,b=0.0,w=0.0,k=0,d=0.0,v=0.0,g=0,m=0.0,p=0,E=0.0,B=0,y=0.0,C=0,I=0,Z=0,G=0,L=0.0,Q=0;G=h;h=h+64|0;Z=G;C=(l|0)==2;y=+c[r>>3];m=+c[r+8>>3];p=Z+8|0;E=+c[i>>3];B=Z+16|0;w=+c[i+8>>3];k=Z+24|0;d=+c[a>>3];v=+c[n>>3];g=Z+32|0;b=+c[a+8>>3];u=+c[n+8>>3];i=Z+40|0;a=Z+48|0;n=Z+56|0;r=1;s=4.0;o=4.0;while(1){c[Z>>3]=y;c[p>>3]=m;L=o*.3333333333333333;c[B>>3]=L*E+y;c[k>>3]=L*w+m;L=s*.3333333333333333;c[g>>3]=d-L*v;c[i>>3]=b-L*u;c[a>>3]=d;c[n>>3]=b;if(r?(L=+Tl(Z,4),L<+Tl(f,l)+-.001):0){r=0;break}if(Ol(e,A,Z)|0){I=5;break}if(o==0.0&s==0.0){I=9;break}Q=o>.01;r=0;s=Q?s*.5:0.0;o=Q?o*.5:0.0}e:do{if((I|0)==5){Ml((t[47459]|0)+4|0);i=t[47460]|0;r=1;while(1){if((r|0)==4){r=1;break e}Q=t[47459]|0;c[i+(Q<<4)>>3]=+c[Z+(r<<4)>>3];L=+c[Z+(r<<4)+8>>3];t[47459]=Q+1;c[i+(Q<<4)+8>>3]=L;r=r+1|0}}else if((I|0)==9)if(C){Ml((t[47459]|0)+4|0);i=t[47460]|0;r=1;while(1){if((r|0)==4){r=1;break e}Q=t[47459]|0;c[i+(Q<<4)>>3]=+c[Z+(r<<4)>>3];L=+c[Z+(r<<4)+8>>3];t[47459]=Q+1;c[i+(Q<<4)+8>>3]=L;r=r+1|0}}else r=0}while(0);h=G;return r|0}function Xl(e,A,r){e=e|0;A=A|0;r=r|0;var i=0;c[A>>3]=+c[A>>3]+ +c[r>>3];i=A+8|0;c[i>>3]=+c[i>>3]+ +c[r+8>>3];t[e>>2]=t[A>>2];t[e+4>>2]=t[A+4>>2];t[e+8>>2]=t[A+8>>2];t[e+12>>2]=t[A+12>>2];return}function Sl(e,A,r){e=e|0;A=A|0;r=r|0;var i=0;c[A>>3]=+c[A>>3]-+c[r>>3];i=A+8|0;c[i>>3]=+c[i>>3]-+c[r+8>>3];t[e>>2]=t[A>>2];t[e+4>>2]=t[A+4>>2];t[e+8>>2]=t[A+8>>2];t[e+12>>2]=t[A+12>>2];return}function jl(e){e=+e;e=1.0-e;return+(e*e*e)}function Ul(e){e=+e;return+(e*e*e)}function Tl(e,A){e=e|0;A=A|0;var r=0.0,i=0,a=0.0,t=0.0,n=0;r=0.0;i=1;while(1){if((i|0)>=(A|0))break;n=i+-1|0;a=+c[e+(i<<4)>>3]-+c[e+(n<<4)>>3];t=+c[e+(i<<4)+8>>3]-+c[e+(n<<4)+8>>3];r=+D(+(t*t+a*a))+r;i=i+1|0}return+r}function Ol(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0,n=0,f=0,l=0,s=0,o=0,u=0,b=0.0,w=0.0,k=0.0,d=0.0,v=0.0,g=0,m=0,p=0.0,E=0,B=0.0,y=0,C=0,I=0,Z=0,G=0,L=0.0,Q=0.0;G=h;h=h+64|0;g=G+32|0;m=G;E=m+16|0;y=r+16|0;C=r+32|0;I=r+48|0;Z=r+8|0;n=r+24|0;f=r+40|0;l=r+56|0;s=m+8|0;o=m+24|0;a=0;e:while(1){if((a|0)>=(A|0)){i=1;break}u=e+(a<<5)|0;t[m>>2]=t[u>>2];t[m+4>>2]=t[u+4>>2];t[m+8>>2]=t[u+8>>2];t[m+12>>2]=t[u+12>>2];u=e+(a<<5)+16|0;t[E>>2]=t[u>>2];t[E+4>>2]=t[u+4>>2];t[E+8>>2]=t[u+8>>2];t[E+12>>2]=t[u+12>>2];u=_l(r,m,g)|0;A:do{if((u|0)!=4){b=+c[m>>3];w=+c[s>>3];k=+c[E>>3];d=+c[o>>3];i=0;while(1){if((i|0)>=(u|0))break A;v=+c[g+(i<<3)>>3];if((!(v<1.0e-06|v>.999999)?(B=v*v*v,Q=v*3.0,L=1.0-v,v=Q*v*L,p=L*L,Q=p*Q,L=p*L,p=+c[y>>3]*Q+ +c[r>>3]*L+ +c[C>>3]*v+ +c[I>>3]*B,B=+c[n>>3]*Q+ +c[Z>>3]*L+ +c[f>>3]*v+ +c[l>>3]*B,v=p-b,L=B-w,!(L*L+v*v<.001)):0)?(Q=p-k,L=B-d,!(L*L+Q*Q<.001)):0){i=0;break e}i=i+1|0}}}while(0);a=a+1|0}h=G;return i|0}function _l(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0,n=0.0,f=0,l=0.0,s=0,o=0,u=0,b=0,w=0.0,k=0.0,d=0,v=0,g=0,m=0,p=0;p=h;h=h+96|0;v=p+48|0;g=p+24|0;s=p;m=p+80|0;w=+c[A>>3];n=+c[A+16>>3]-w;k=+c[A+8>>3];l=+c[A+24>>3]-k;t[m>>2]=0;e:do{if(!(n==0.0)){l=l/n;o=e+16|0;u=e+32|0;b=e+48|0;ql(+c[e+8>>3]-+c[e>>3]*l,+c[e+24>>3]-+c[o>>3]*l,+c[e+40>>3]-+c[u>>3]*l,+c[e+56>>3]-+c[b>>3]*l,v);c[v>>3]=l*w-k+ +c[v>>3];i=ps(v,g)|0;if((i|0)==4)A=4;else{a=v+8|0;f=v+16|0;s=v+24|0;n=1.0/n;A=0;while(1){if((A|0)>=(i|0))break;l=+c[g+(A<<3)>>3];if(l>=0.0&l<=1.0?(ql(+c[e>>3],+c[o>>3],+c[u>>3],+c[b>>3],v),k=(+c[v>>3]-w+((+c[s>>3]*l+ +c[f>>3])*l+ +c[a>>3])*l)*n,k>=0.0&k<=1.0):0)Kl(l,r,m);A=A+1|0}A=t[m>>2]|0}}else{ql(+c[e>>3],+c[e+16>>3],+c[e+32>>3],+c[e+48>>3],v);c[v>>3]=+c[v>>3]-w;d=ps(v,g)|0;if(!(l==0.0)){if((d|0)==4){A=4;break}o=e+8|0;u=e+24|0;b=e+40|0;i=e+56|0;a=v+8|0;f=v+16|0;s=v+24|0;n=1.0/l;A=0;while(1){if((A|0)>=(d|0))break;l=+c[g+(A<<3)>>3];if(l>=0.0&l<=1.0?(ql(+c[o>>3],+c[u>>3],+c[b>>3],+c[i>>3],v),w=(+c[v>>3]-k+((+c[s>>3]*l+ +c[f>>3])*l+ +c[a>>3])*l)*n,w>=0.0&w<=1.0):0)Kl(l,r,m);A=A+1|0}A=t[m>>2]|0;break}ql(+c[e+8>>3],+c[e+24>>3],+c[e+40>>3],+c[e+56>>3],v);c[v>>3]=+c[v>>3]-k;f=ps(v,s)|0;A=(f|0)==4;A:do{if((d|0)==4){if(A){A=4;break e}else A=0;while(1){if((A|0)>=(f|0))break A;Kl(+c[s+(A<<3)>>3],r,m);A=A+1|0}}else{if(A){A=0;while(1){if((A|0)>=(d|0))break A;Kl(+c[g+(A<<3)>>3],r,m);A=A+1|0}}else i=0;while(1){if((i|0)>=(d|0))break A;a=g+(i<<3)|0;A=0;while(1){if((A|0)>=(f|0))break;n=+c[a>>3];if(n==+c[s+(A<<3)>>3])Kl(n,r,m);A=A+1|0}i=i+1|0}}}while(0);A=t[m>>2]|0}}while(0);h=p;return A|0}function ql(e,A,r,i,a){e=+e;A=+A;r=+r;i=+i;a=a|0;c[a+24>>3]=i-e+(A-r)*3.0;c[a+16>>3]=(r+e)*3.0-A*6.0;c[a+8>>3]=(A-e)*3.0;c[a>>3]=e;return}function Kl(e,A,r){e=+e;A=A|0;r=r|0;var i=0;if(e>=0.0&e<=1.0){i=t[r>>2]|0;c[A+(i<<3)>>3]=e;t[r>>2]=i+1}return}function $l(e,A){e=e|0;A=A|0;return+(+c[A+8>>3]*+c[e+8>>3]+ +c[A>>3]*+c[e>>3])}function es(e){e=+e;var A=0.0;A=1.0-e;return+(A*A*(A+e*3.0))}function As(e){e=+e;return+(e*e*((1.0-e)*3.0+e))}function rs(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0,n=0,f=0.0,l=0,s=0,o=0,u=0,b=0,w=0,k=0,g=0,m=0,p=0,B=0,y=0,C=0,I=0,Z=0,L=0,Q=0,D=0,z=0,W=0,Y=0.0;W=h;h=h+112|0;Q=W+80|0;L=W+64|0;Z=W+48|0;z=4;D=Z2(40)|0;t[D>>2]=0;p=W+32|0;B=W+16|0;y=W;C=W+96|0;z=G6(189856,1,D|0,z|0)|0;D=G;d=0;i=d;d=0;if((i|0)!=0&(v|0)!=0){a=L6(t[i>>2]|0,z|0,D|0)|0;if(!a)aA(i|0,v|0);G=v}else a=-1;if((a|0)==1)i=G;else i=0;e:while(1){if(i|0){i=-2;break}n=e+4|0;d=0;oe(116,t[n>>2]|0);i=d;d=0;if((i|0)!=0&(v|0)!=0){a=L6(t[i>>2]|0,z|0,D|0)|0;if(!a)aA(i|0,v|0);G=v}else a=-1;if((a|0)==1){i=G;continue}t[47503]=0;t[47504]=0;d=0;oe(117,t[n>>2]<<1|0);i=d;d=0;if((i|0)!=0&(v|0)!=0){a=L6(t[i>>2]|0,z|0,D|0)|0;if(!a)aA(i|0,v|0);G=v}else a=-1;if((a|0)==1){i=G;continue}o=(t[47506]|0)/2|0;t[47507]=o;t[47508]=o+-1;o=t[n>>2]|0;n=t[e>>2]|0;i=0;a=-1;f=E;while(1){if((i|0)>=(o|0))break;Y=+c[n+(i<<4)>>3];m=f>Y;g=m?i:a;i=i+1|0;a=g;f=m?Y:f}m=n+(a<<4)|0;t[B>>2]=t[m>>2];t[B+4>>2]=t[m+4>>2];t[B+8>>2]=t[m+8>>2];t[B+12>>2]=t[m+12>>2];m=n+(((a|0)==0?o:a)+-1<<4)|0;t[p>>2]=t[m>>2];t[p+4>>2]=t[m+4>>2];t[p+8>>2]=t[m+8>>2];t[p+12>>2]=t[m+12>>2];m=n+(((a|0)==(o+-1|0)?0:a+1|0)<<4)|0;t[y>>2]=t[m>>2];t[y+4>>2]=t[m+4>>2];t[y+8>>2]=t[m+8>>2];t[y+12>>2]=t[m+12>>2];Y=+c[B>>3];if((+c[p>>3]==Y?Y==+c[y>>3]:0)?+c[y+8>>3]>+c[B+8>>3]:0)m=15;else m=12;A:do{if((m|0)==12){m=0;d=0;i=te(36,p|0,B|0,y|0)|0;a=d;d=0;if((a|0)!=0&(v|0)!=0){n=L6(t[a>>2]|0,z|0,D|0)|0;if(!n)aA(a|0,v|0);G=v}else n=-1;if((n|0)==1){i=G;continue e}if((i|0)==1){n=t[47510]|0;i=t[47511]|0;a=0;while(1){if((a|0)>=(o|0))break A;l=t[e>>2]|0;if(!(((a|0)>0?(I=a+-1|0,+c[l+(a<<4)>>3]==+c[l+(I<<4)>>3]):0)?+c[l+(a<<4)+8>>3]==+c[l+(I<<4)+8>>3]:0)){g=t[47503]|0;t[n+(g<<3)>>2]=l+(a<<4);t[n+(g<<3)+4>>2]=n+(((g|0)%(o|0)|0)<<3);t[i+(g<<2)>>2]=n+(g<<3);t[47503]=g+1}a=a+1|0}}else m=15}}while(0);A:do{if((m|0)==15){m=0;l=t[47510]|0;i=t[47511]|0;n=o;while(1){a=n+-1|0;if((n|0)<=0)break A;s=t[e>>2]|0;if(((n|0)<(o|0)?+c[s+(a<<4)>>3]==+c[s+(n<<4)>>3]:0)?+c[s+(a<<4)+8>>3]==+c[s+(n<<4)+8>>3]:0){n=a;continue}n=t[47503]|0;t[l+(n<<3)>>2]=s+(a<<4);t[l+(n<<3)+4>>2]=l+(((n|0)%(o|0)|0)<<3);t[i+(n<<2)>>2]=l+(n<<3);t[47503]=n+1;n=a}}}while(0);d=0;ue(29,i|0,t[47503]|0);i=d;d=0;if((i|0)!=0&(v|0)!=0){a=L6(t[i>>2]|0,z|0,D|0)|0;if(!a)aA(i|0,v|0);G=v}else a=-1;if((a|0)==1){i=G;continue}l=0;i=t[47504]|0;A:while(1){if((l|0)>=(i|0)){k=0;break}s=l+1|0;n=s;while(1){if((n|0)>=(i|0)){l=s;continue A}d=0;ue(30,l|0,n|0);i=d;d=0;if((i|0)!=0&(v|0)!=0){a=L6(t[i>>2]|0,z|0,D|0)|0;if(!a)aA(i|0,v|0);G=v}else a=-1;if((a|0)==1){i=G;continue e}n=n+1|0;i=t[47504]|0}}while(1){if((k|0)>=(i|0))break;d=0;a=ie(105,k|0,A|0)|0;n=d;d=0;if((n|0)!=0&(v|0)!=0){l=L6(t[n>>2]|0,z|0,D|0)|0;if(!l)aA(n|0,v|0);G=v}else l=-1;if((l|0)==1){i=G;continue e}if(a|0)break;k=k+1|0}if((k|0)==(i|0)){i=t[15712]|0;d=0;t[Z>>2]=141858;t[Z+4>>2]=192;t[Z+8>>2]=141869;te(32,i|0,141839,Z|0)|0;i=d;d=0;if((i|0)!=0&(v|0)!=0){a=L6(t[i>>2]|0,z|0,D|0)|0;if(!a)aA(i|0,v|0);G=v}else a=-1;if((a|0)==1){i=G;continue}else{m=41;break}}g=A+16|0;s=0;while(1){if((s|0)>=(i|0))break;d=0;a=ie(105,s|0,g|0)|0;n=d;d=0;if((n|0)!=0&(v|0)!=0){l=L6(t[n>>2]|0,z|0,D|0)|0;if(!l)aA(n|0,v|0);G=v}else l=-1;if((l|0)==1){i=G;continue e}if(a|0)break;s=s+1|0}if((s|0)==(i|0)){i=t[15712]|0;d=0;t[L>>2]=141858;t[L+4>>2]=200;t[L+8>>2]=141902;te(32,i|0,141839,L|0)|0;i=d;d=0;if((i|0)!=0&(v|0)!=0){a=L6(t[i>>2]|0,z|0,D|0)|0;if(!a)aA(i|0,v|0);G=v}else a=-1;if((a|0)==1){i=G;continue}else{m=48;break}}d=0;i=ie(106,k|0,s|0)|0;a=d;d=0;if((a|0)!=0&(v|0)!=0){n=L6(t[a>>2]|0,z|0,D|0)|0;if(!n)aA(a|0,v|0);G=v}else n=-1;if((n|0)==1){i=G;continue}if(!i){i=t[15712]|0;d=0;t[Q>>2]=141858;t[Q+4>>2]=207;t[Q+8>>2]=141940;te(32,i|0,141839,Q|0)|0;i=d;d=0;if((i|0)!=0&(v|0)!=0){a=L6(t[i>>2]|0,z|0,D|0)|0;if(!a)aA(i|0,v|0);G=v}else a=-1;if((a|0)==1){i=G;continue}d=0;oe(118,2);i=d;d=0;if((i|0)!=0&(v|0)!=0){a=L6(t[i>>2]|0,z|0,D|0)|0;if(!a)aA(i|0,v|0);G=v}else a=-1;if((a|0)==1){i=G;continue}else{m=53;break}}if((k|0)==(s|0)){d=0;oe(118,2);i=d;d=0;if((i|0)!=0&(v|0)!=0){a=L6(t[i>>2]|0,z|0,D|0)|0;if(!a)aA(i|0,v|0);G=v}else a=-1;if((a|0)==1){i=G;continue}else{m=56;break}}t[C>>2]=A;t[C+4>>2]=0;a=C+8|0;t[a>>2]=g;t[C+12>>2]=0;d=0;ue(31,1,C|0);i=d;d=0;if((i|0)!=0&(v|0)!=0){n=L6(t[i>>2]|0,z|0,D|0)|0;if(!n)aA(i|0,v|0);G=v}else n=-1;if((n|0)==1){i=G;continue}t[47509]=t[47507];b=k;A:while(1){if((b|0)==-1){n=a;i=0;break}w=t[47513]|0;t[w+(b*52|0)>>2]=2;i=0;while(1){if((i|0)>=3){m=65;break}m=t[w+(b*52|0)+4+(i<<4)+12>>2]|0;if(m|0?(t[m>>2]|0)==1:0){m=68;break}i=i+1|0}if((m|0)==65){m=0;if((i|0)==3){i=t[47505]|0;s=t[i+(t[47508]<<2)>>2]|0;d=0;i=te(36,g|0,t[t[i+(t[47507]<<2)>>2]>>2]|0,t[s>>2]|0)|0;n=d;d=0;if((n|0)!=0&(v|0)!=0){l=L6(t[n>>2]|0,z|0,D|0)|0;if(!l)aA(n|0,v|0);G=v}else l=-1;if((l|0)==1){i=G;continue e}l=(i|0)==1;u=l?a:s;l=l?s:a}else m=68}if((m|0)==68){m=0;s=t[w+(b*52|0)+4+(i<<4)>>2]|0;o=t[w+(b*52|0)+4+(i<<4)+4>>2]|0;d=0;i=te(36,t[s>>2]|0,t[t[w+(b*52|0)+4+(((i+1|0)%3|0)<<4)+4>>2]>>2]|0,t[o>>2]|0)|0;n=d;d=0;if((n|0)!=0&(v|0)!=0){l=L6(t[n>>2]|0,z|0,D|0)|0;if(!l)aA(n|0,v|0);G=v}else l=-1;if((l|0)==1){i=G;continue e}l=(i|0)==1;u=l?s:o;l=l?o:s}do{if((b|0)==(k|0)){d=0;ue(31,2,l|0);i=d;d=0;if((i|0)!=0&(v|0)!=0){n=L6(t[i>>2]|0,z|0,D|0)|0;if(!n)aA(i|0,v|0);G=v}else n=-1;if((n|0)==1){i=G;continue e}d=0;ue(31,1,u|0);i=d;d=0;if((i|0)!=0&(v|0)!=0){n=L6(t[i>>2]|0,z|0,D|0)|0;if(!n)aA(i|0,v|0);G=v}else n=-1;if((n|0)==1){i=G;continue e}i=0}else{o=t[47505]|0;if((t[o+(t[47507]<<2)>>2]|0)!=(u|0)?(t[o+(t[47508]<<2)>>2]|0)!=(u|0):0){d=0;l=re(34,u|0)|0;i=d;d=0;if((i|0)!=0&(v|0)!=0){n=L6(t[i>>2]|0,z|0,D|0)|0;if(!n)aA(i|0,v|0);G=v}else n=-1;if((n|0)==1){i=G;continue e}d=0;ue(32,2,l|0);i=d;d=0;if((i|0)!=0&(v|0)!=0){n=L6(t[i>>2]|0,z|0,D|0)|0;if(!n)aA(i|0,v|0);G=v}else n=-1;if((n|0)==1){i=G;continue e}d=0;ue(31,1,u|0);i=d;d=0;if((i|0)!=0&(v|0)!=0){n=L6(t[i>>2]|0,z|0,D|0)|0;if(!n)aA(i|0,v|0);G=v}else n=-1;if((n|0)==1){i=G;continue e}if((l|0)<=(t[47509]|0)){i=0;break}t[47509]=l;i=0;break}d=0;s=re(34,l|0)|0;i=d;d=0;if((i|0)!=0&(v|0)!=0){n=L6(t[i>>2]|0,z|0,D|0)|0;if(!n)aA(i|0,v|0);G=v}else n=-1;if((n|0)==1){i=G;continue e}d=0;ue(32,1,s|0);i=d;d=0;if((i|0)!=0&(v|0)!=0){n=L6(t[i>>2]|0,z|0,D|0)|0;if(!n)aA(i|0,v|0);G=v}else n=-1;if((n|0)==1){i=G;continue e}d=0;ue(31,2,l|0);i=d;d=0;if((i|0)!=0&(v|0)!=0){n=L6(t[i>>2]|0,z|0,D|0)|0;if(!n)aA(i|0,v|0);G=v}else n=-1;if((n|0)==1){i=G;continue e}if((s|0)>=(t[47509]|0)){i=0;break}t[47509]=s;i=0}}while(0);while(1){if((i|0)>=3){b=-1;continue A}n=t[w+(b*52|0)+4+(i<<4)+12>>2]|0;if(n|0?(t[n>>2]|0)==1:0)break;i=i+1|0}b=(n-(t[47513]|0)|0)/52|0}while(1){if(!n)break;n=t[n+4>>2]|0;i=i+1|0}d=0;oe(118,i|0);n=d;d=0;if((n|0)!=0&(v|0)!=0){l=L6(t[n>>2]|0,z|0,D|0)|0;if(!l)aA(n|0,v|0);G=v}else l=-1;if((l|0)==1)i=G;else{m=94;break}}if((m|0)==41)i=-1;else if((m|0)==48)i=-1;else if((m|0)==53){t[r+4>>2]=2;i=t[47512]|0;t[i>>2]=t[A>>2];t[i+4>>2]=t[A+4>>2];t[i+8>>2]=t[A+8>>2];t[i+12>>2]=t[A+12>>2];D=i+16|0;t[D>>2]=t[g>>2];t[D+4>>2]=t[g+4>>2];t[D+8>>2]=t[g+8>>2];t[D+12>>2]=t[g+12>>2];t[r>>2]=i;i=0}else if((m|0)==56){t[r+4>>2]=2;i=t[47512]|0;t[i>>2]=t[A>>2];t[i+4>>2]=t[A+4>>2];t[i+8>>2]=t[A+8>>2];t[i+12>>2]=t[A+12>>2];D=i+16|0;t[D>>2]=t[g>>2];t[D+4>>2]=t[g+4>>2];t[D+8>>2]=t[g+8>>2];t[D+12>>2]=t[g+12>>2];t[r>>2]=i;i=0}else if((m|0)==94){t[r+4>>2]=i;n=t[47512]|0;while(1){i=i+-1|0;if(!a)break;D=n+(i<<4)|0;Q=t[a>>2]|0;t[D>>2]=t[Q>>2];t[D+4>>2]=t[Q+4>>2];t[D+8>>2]=t[Q+8>>2];t[D+12>>2]=t[Q+12>>2];a=t[a+4>>2]|0}t[r>>2]=n;i=0}G2(z|0);h=W;return i|0}function is(e){e=e|0;var A=0,r=0,i=0,a=0,n=0,f=0;f=h;h=h+64|0;i=f+48|0;n=f+32|0;a=f+16|0;r=f;if((t[47516]|0)<(e|0)){A=t[47510]|0;if(!A){n=Z2(e<<3)|0;t[47510]=n;if(!n){n=t[15712]|0;t[r>>2]=141858;t[r+4>>2]=523;t[r+8>>2]=142108;a3(n,141839,r)|0;aA(189856,1)}n=Z2(e<<2)|0;t[47511]=n;if(!n){n=t[15712]|0;t[a>>2]=141858;t[a+4>>2]=527;t[a+8>>2]=142127;a3(n,141839,a)|0;aA(189856,1)}}else{a=Q2(A,e<<3)|0;t[47510]=a;if(!a){a=t[15712]|0;t[n>>2]=141858;t[n+4>>2]=533;t[n+8>>2]=142147;a3(a,141839,n)|0;aA(189856,1)}n=Q2(t[47511]|0,e<<2)|0;t[47511]=n;if(!n){n=t[15712]|0;t[i>>2]=141858;t[i+4>>2]=539;t[i+8>>2]=142167;a3(n,141839,i)|0;aA(189856,1)}}t[47516]=e}h=f;return}function as(e){e=e|0;var A=0,r=0,i=0,a=0;a=h;h=h+32|0;i=a+16|0;r=a;if((t[47506]|0)<(e|0)){A=t[47505]|0;if(!A){i=Z2(e<<2)|0;t[47505]=i;if(!i){i=t[15712]|0;t[r>>2]=141858;t[r+4>>2]=573;t[r+8>>2]=142063;a3(i,141839,r)|0;aA(189856,1)}}else{r=Q2(A,e<<2)|0;t[47505]=r;if(!r){r=t[15712]|0;t[i>>2]=141858;t[i+4>>2]=580;t[i+8>>2]=142085;a3(r,141839,i)|0;aA(189856,1)}}t[47506]=e}h=a;return}function ts(e,A,r){e=e|0;A=A|0;r=r|0;var i=0.0,a=0.0;i=+c[A+8>>3];a=+c[A>>3];i=(+c[r>>3]-a)*(+c[e+8>>3]-i)-(+c[e>>3]-a)*(+c[r+8>>3]-i);return(i>0.0?1:i<0.0?2:3)|0}function ns(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0,f=0,l=0;l=h;h=h+16|0;f=l;e:while(1){if((A|0)>3)i=0;else{A=9;break}while(1){if((i|0)>=(A|0)){A=8;break e}a=i+1|0;r=(a|0)%(A|0)|0;n=(i+2|0)%(A|0)|0;if(!(hs(i,n,e,A)|0))i=a;else break}ws(t[e+(i<<2)>>2]|0,t[e+(r<<2)>>2]|0,t[e+(n<<2)>>2]|0);A=A+-1|0;while(1){if((r|0)>=(A|0))continue e;n=r+1|0;t[e+(r<<2)>>2]=t[e+(n<<2)>>2];r=n}}if((A|0)==8){e=t[15712]|0;t[f>>2]=141858;t[f+4>>2]=324;t[f+8>>2]=142003;a3(e,141839,f)|0}else if((A|0)==9)ws(t[e>>2]|0,t[e+4>>2]|0,t[e+8>>2]|0);h=l;return}function fs(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0,f=0,l=0,s=0,c=0,o=0,u=0,b=0,h=0;l=t[47513]|0;s=l+(e*52|0)|0;c=l+(A*52|0)|0;n=0;while(1){if((n|0)==3)break;o=l+(e*52|0)+4+(n<<4)|0;u=l+(e*52|0)+4+(n<<4)+4|0;b=l+(e*52|0)+4+(n<<4)+12|0;a=0;while(1){if((a|0)==3)break;h=t[t[o>>2]>>2]|0;f=t[t[l+(A*52|0)+4+(a<<4)>>2]>>2]|0;if((h|0)==(f|0)){r=t[t[l+(A*52|0)+4+(a<<4)+4>>2]>>2]|0;if((t[t[u>>2]>>2]|0)==(r|0))i=10;else i=8}else{r=t[t[l+(A*52|0)+4+(a<<4)+4>>2]>>2]|0;i=8}if(((i|0)==8?(i=0,(h|0)==(r|0)):0)?(t[t[u>>2]>>2]|0)==(f|0):0)i=10;if((i|0)==10){t[b>>2]=c;t[l+(A*52|0)+4+(a<<4)+12>>2]=s}a=a+1|0}n=n+1|0}return}function ls(e,A){e=e|0;A=A|0;var r=0,i=0,a=0;a=t[47513]|0;r=0;i=0;while(1){if((i|0)==3)break;r=r+((ts(t[t[a+(e*52|0)+4+(i<<4)>>2]>>2]|0,t[t[a+(e*52|0)+4+(i<<4)+4>>2]>>2]|0,A)|0)!=2&1)|0;i=i+1|0}return((r|0)==3|(r|0)==0)&1|0}function ss(e,A){e=e|0;A=A|0;var r=0,i=0,a=0;r=t[47513]|0;i=r+(e*52|0)|0;e:do{if(!(t[i>>2]|0)){t[i>>2]=1;if((e|0)==(A|0))r=1;else{a=0;while(1){if((a|0)>=3)break;i=t[r+(e*52|0)+4+(a<<4)+12>>2]|0;if(i){if(ss((i-r|0)/52|0,A)|0){r=1;break e}r=t[47513]|0}a=a+1|0}t[r+(e*52|0)>>2]=0;r=0}}else r=0}while(0);return r|0}function cs(e){e=e|0;var A=0,r=0,i=0,a=0;a=h;h=h+32|0;i=a+16|0;r=a;if((t[47514]|0)<(e|0)){A=t[47512]|0;if(!A){i=Z2(e<<4)|0;t[47512]=i;if(!i){i=t[15712]|0;t[r>>2]=141858;t[r+4>>2]=593;t[r+8>>2]=141966;a3(i,141839,r)|0;aA(189856,1)}}else{r=Q2(A,e<<4)|0;t[47512]=r;if(!r){r=t[15712]|0;t[i>>2]=141858;t[i+4>>2]=599;t[i+8>>2]=141984;a3(r,141839,i)|0;aA(189856,1)}}t[47514]=e}h=a;return}function os(e,A){e=e|0;A=A|0;var r=0,i=0,a=0;r=t[47508]|0;i=t[47507]|0;a=(r|0)>=(i|0);if((e|0)==1)if(a){t[A+4>>2]=t[(t[47505]|0)+(i<<2)>>2];e=190028;r=-1}else{e=190028;r=-1}else if(a){t[A+4>>2]=t[(t[47505]|0)+(r<<2)>>2];e=190032;r=1}else{e=190032;r=1}a=(t[e>>2]|0)+r|0;t[e>>2]=a;t[(t[47505]|0)+(a<<2)>>2]=A;return}function us(e){e=e|0;var A=0,r=0,i=0,a=0,n=0;a=t[47509]|0;n=t[47505]|0;A=t[47507]|0;while(1){if((A|0)>=(a|0)){i=4;break}r=A+1|0;if((ts(t[t[n+(r<<2)>>2]>>2]|0,t[t[n+(A<<2)>>2]>>2]|0,t[e>>2]|0)|0)==1)break;else A=r}e:do{if((i|0)==4){A=t[47508]|0;while(1){if((A|0)<=(a|0)){A=a;break e}r=A+-1|0;if((ts(t[t[n+(r<<2)>>2]>>2]|0,t[t[n+(A<<2)>>2]>>2]|0,t[e>>2]|0)|0)==2)break;else A=r}}}while(0);return A|0}function bs(e,A){e=e|0;A=A|0;t[((e|0)==1?190032:190028)>>2]=A;return}function hs(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0,n=0,f=0,l=0,s=0,c=0;a=t[t[r+(((e+-1+i|0)%(i|0)|0)<<2)>>2]>>2]|0;l=t[t[r+(e<<2)>>2]>>2]|0;n=t[t[r+(((e+1|0)%(i|0)|0)<<2)>>2]>>2]|0;c=(ts(a,l,n)|0)==1;s=t[t[r+(A<<2)>>2]>>2]|0;if(c)if((ts(l,s,a)|0)==1){a=ts(s,l,n)|0;n=1;f=5}else a=0;else{a=ts(l,s,n)|0;n=2;f=5}e:do{if((f|0)==5)if((a|0)==(n|0)){a=0;while(1){if((a|0)>=(i|0)){a=1;break e}n=a;a=a+1|0;f=(a|0)%(i|0)|0;if((f|0)==(A|0)|((n|0)==(A|0)|((n|0)==(e|0)|(f|0)==(e|0))))continue;if(ds(l,s,t[t[r+(n<<2)>>2]>>2]|0,t[t[r+(f<<2)>>2]>>2]|0)|0){a=0;break}}}else a=0}while(0);return a|0}function ws(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0,n=0,f=0;i=t[47504]|0;a=t[47515]|0;if((i|0)<(a|0))f=i;else{ks(a+20|0);f=t[47504]|0}n=t[47513]|0;t[47504]=f+1;a=n+(f*52|0)|0;t[a>>2]=0;t[n+(f*52|0)+4>>2]=e;t[n+(f*52|0)+8>>2]=A;t[n+(f*52|0)+16>>2]=0;t[n+(f*52|0)+20>>2]=A;t[n+(f*52|0)+24>>2]=r;t[n+(f*52|0)+32>>2]=0;t[n+(f*52|0)+36>>2]=r;t[n+(f*52|0)+40>>2]=e;t[n+(f*52|0)+48>>2]=0;i=0;while(1){if((i|0)==3)break;t[n+(f*52|0)+4+(i<<4)+8>>2]=a;i=i+1|0}return}function ks(e){e=e|0;var A=0,r=0,i=0,a=0;a=h;h=h+32|0;i=a+16|0;r=a;if((t[47515]|0)<(e|0)){A=t[47513]|0;if(!A){i=Z2(e*52|0)|0;t[47513]=i;if(!i){i=t[15712]|0;t[r>>2]=141858;t[r+4>>2]=552;t[r+8>>2]=142024;a3(i,141839,r)|0;aA(189856,1)}}else{r=Q2(A,e*52|0)|0;t[47513]=r;if(!r){r=t[15712]|0;t[i>>2]=141858;t[i+4>>2]=558;t[i+8>>2]=142043;a3(r,141839,i)|0;aA(189856,1)}}t[47515]=e}h=a;return}function ds(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0,t=0,n=0,f=0;t=ts(e,A,r)|0;if((((t|0)!=3?(n=ts(e,A,i)|0,(n|0)!=3):0)?(f=ts(r,i,e)|0,(f|0)!=3):0)?(a=ts(r,i,A)|0,(a|0)!=3):0)return((t|0)==1^(n|0)==1)&((f|0)==1^(a|0)==1)&1|0;if(((vs(e,A,r)|0)==0?(vs(e,A,i)|0)==0:0)?(vs(r,i,e)|0)==0:0)return(vs(r,i,A)|0)!=0|0;return 1}function vs(e,A,r){e=e|0;A=A|0;r=r|0;var i=0.0,a=0.0,t=0.0,n=0.0;a=+c[e>>3];n=+c[A>>3]-a;t=+c[e+8>>3];i=+c[A+8>>3]-t;a=+c[r>>3]-a;t=+c[r+8>>3]-t;if((ts(e,A,r)|0)==3?t*i+a*n>=0.0:0)e=t*t+a*a<=i*i+n*n&1;else e=0;return e|0}function gs(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0,n=0.0,f=0,l=0.0,s=0,o=0,u=0,b=0,h=0,w=0.0,k=0;u=Z2(r<<2)|0;b=Z2((r<<3)+8|0)|0;h=b+8|0;a=0;while(1){if((a|0)>=(r|0))break;t[u+(a<<2)>>2]=-1;c[h+(a<<3)>>3]=-2147483647.0;a=a+1|0}c[b>>3]=-2147483648.0;e:while(1){if((e|0)==(A|0))break;o=h+(e<<3)|0;l=+c[o>>3];c[o>>3]=l==-2147483647.0?0.0:-l;s=0;a=-1;while(1){if((s|0)>=(r|0)){e=a;continue e}f=h+(s<<3)|0;n=+c[f>>3];if(n<0.0){k=(e|0)<(s|0);w=+c[(t[i+((k?s:e)<<2)>>2]|0)+((k?e:s)<<3)>>3];l=-(w+ +c[o>>3]);if(w!=0.0&n>3]=l;t[u+(s<<2)>>2]=e;n=l}a=n>+c[h+(a<<3)>>3]?s:a}s=s+1|0}}G2(b);return u|0}function ms(e,A,r,i,a,n,f){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;n=n|0;f=f|0;var l=0,s=0,c=0,o=0;s=h;h=h+32|0;c=s+16|0;o=s;l=t[f+4>>2]|0;t[o>>2]=t[e>>2];t[o+4>>2]=t[e+4>>2];t[o+8>>2]=t[e+8>>2];t[o+12>>2]=t[e+12>>2];t[c>>2]=t[i>>2];t[c+4>>2]=t[i+4>>2];t[c+8>>2]=t[i+8>>2];t[c+12>>2]=t[i+12>>2];if(!(Rs(o,A,c,a,f)|0)){e=t[f+24>>2]|0;t[e+(l<<2)>>2]=n;o=l+1|0;t[e+(o<<2)>>2]=r;e=gs(o,l,l+2|0,e)|0}else{e=Z2((l<<2)+8|0)|0;o=l+1|0;t[e+(l<<2)>>2]=o;t[e+(o<<2)>>2]=-1}h=s;return e|0}function ps(e,A){e=e|0;A=A|0;var r=0,i=0.0,a=0.0,t=0.0,n=0.0,f=0.0,l=0;i=+c[e+24>>3];e:do{if(i<1.0e-07&i>-1.0e-07)e=Es(e,A)|0;else{n=+c[e+16>>3]/(i*3.0);t=+c[e+8>>3]/i;a=n*n;i=n*2.0*a-n*t+ +c[e>>3]/i;a=t*.3333333333333333-a;a=a*a*4.0*a;t=i*i+a;if(!(t<0.0)){f=(+D(+t)-i)*.5;a=+u1(f);i=+u1(-i-f)+a;c[A>>3]=i;if(t>0.0)e=1;else{i=i*-.5;c[A+16>>3]=i;e=1;r=7}}else{f=+R(+ +D(+-t),+-i);i=+u1(+D(+-a)*.5)*2.0;c[A>>3]=i*+W(+(f*.3333333333333333));c[A+8>>3]=+W(+((f+6.283185307179586)*.3333333333333333))*i;i=+W(+((f+-6.283185307179586)*.3333333333333333))*i;e=2;r=7}if((r|0)==7){c[A+(e<<3)>>3]=i;e=3}r=0;while(1){if((r|0)>=(e|0))break e;l=A+(r<<3)|0;c[l>>3]=+c[l>>3]-n;r=r+1|0}}}while(0);return e|0}function Es(e,A){e=e|0;A=A|0;var r=0.0,i=0.0;r=+c[e+16>>3];do{if(!(r<1.0e-07&r>-1.0e-07)){i=+c[e+8>>3]/(r*2.0);r=i*i-+c[e>>3]/r;if(!(r<0.0))if(r==0.0){c[A>>3]=-i;e=1;break}else{r=+D(+r)-i;c[A>>3]=r;c[A+8>>3]=i*-2.0-r;e=2;break}else e=0}else e=Bs(e,A)|0}while(0);return e|0}function Bs(e,A){e=e|0;A=A|0;var r=0.0,i=0.0;i=+c[e+8>>3];r=+c[e>>3];if(i<1.0e-07&i>-1.0e-07)e=r<1.0e-07&r>-1.0e-07?4:0;else{c[A>>3]=-r/i;e=1}return e|0}function ys(e){e=e|0;G2(t[e>>2]|0);G2(e);return}function Cs(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0,f=0,l=0,s=0,c=0,o=0,u=0;i=t[e+4>>2]|0;l=(i*3|0)+-2|0;r=t[47518]|0;if((l|0)>(t[47517]|0)){if(!r)r=Z2(l<<4)|0;else r=Q2(r,l<<4)|0;t[47518]=r;t[47517]=l;f=r;n=r}else{f=r;n=r}a=t[e>>2]|0;t[f>>2]=t[a>>2];t[f+4>>2]=t[a+4>>2];t[f+8>>2]=t[a+8>>2];t[f+12>>2]=t[a+12>>2];D6(f+16|0,a|0,16)|0;i=i+-1|0;r=1;e=2;while(1){if((r|0)>=(i|0))break;s=f+(e+2<<4)|0;c=f+(e+1<<4)|0;u=f+(e<<4)|0;o=a+(r<<4)|0;t[u>>2]=t[o>>2];t[u+4>>2]=t[o+4>>2];t[u+8>>2]=t[o+8>>2];t[u+12>>2]=t[o+12>>2];D6(c|0,o|0,16)|0;t[s>>2]=t[c>>2];t[s+4>>2]=t[c+4>>2];t[s+8>>2]=t[c+8>>2];t[s+12>>2]=t[c+12>>2];r=r+1|0;e=e+3|0}o=f+(e<<4)|0;u=a+(r<<4)|0;t[o>>2]=t[u>>2];t[o+4>>2]=t[u+4>>2];t[o+8>>2]=t[u+8>>2];t[o+12>>2]=t[u+12>>2];D6(f+(e+1<<4)|0,u|0,16)|0;t[A+4>>2]=l;t[A>>2]=n;return}function Is(e,A,r){e=e|0;A=A|0;r=r|0;var i=0.0,a=0.0;i=+c[A+8>>3];a=+c[A>>3];i=(+c[r>>3]-a)*(+c[e+8>>3]-i)-(+c[e>>3]-a)*(+c[r+8>>3]-i);return(i>.0001?1:(i<-.0001)<<31>>31)|0}function Zs(e,A,r){e=e|0;A=A|0;r=r|0;var i=0.0,a=0.0,t=0.0;a=+c[e>>3];t=+c[A>>3];if(a!=t){i=+c[r>>3];if(!(a>3];a=+c[r+8>>3];i=+c[A+8>>3];if(!(t>2]=t[e>>2];t[n+4>>2]=t[e+4>>2];t[n+8>>2]=t[e+8>>2];t[n+12>>2]=t[e+12>>2];t[f>>2]=t[A>>2];t[f+4>>2]=t[A+4>>2];t[f+8>>2]=t[A+8>>2];t[f+12>>2]=t[A+12>>2];t[l>>2]=t[r>>2];t[l+4>>2]=t[r+4>>2];t[l+8>>2]=t[r+8>>2];t[l+12>>2]=t[r+12>>2];s=Is(n,f,l)|0;if((s|0)==0?(t[n>>2]=t[e>>2],t[n+4>>2]=t[e+4>>2],t[n+8>>2]=t[e+8>>2],t[n+12>>2]=t[e+12>>2],t[f>>2]=t[A>>2],t[f+4>>2]=t[A+4>>2],t[f+8>>2]=t[A+8>>2],t[f+12>>2]=t[A+12>>2],t[l>>2]=t[r>>2],t[l+4>>2]=t[r+4>>2],t[l+8>>2]=t[r+8>>2],t[l+12>>2]=t[r+12>>2],(Zs(n,f,l)|0)!=0):0)a=1;else c=3;do{if((c|0)==3){t[n>>2]=t[e>>2];t[n+4>>2]=t[e+4>>2];t[n+8>>2]=t[e+8>>2];t[n+12>>2]=t[e+12>>2];t[f>>2]=t[A>>2];t[f+4>>2]=t[A+4>>2];t[f+8>>2]=t[A+8>>2];t[f+12>>2]=t[A+12>>2];t[l>>2]=t[i>>2];t[l+4>>2]=t[i+4>>2];t[l+8>>2]=t[i+8>>2];t[l+12>>2]=t[i+12>>2];a=Is(n,f,l)|0;if((a|0)==0?(t[n>>2]=t[e>>2],t[n+4>>2]=t[e+4>>2],t[n+8>>2]=t[e+8>>2],t[n+12>>2]=t[e+12>>2],t[f>>2]=t[A>>2],t[f+4>>2]=t[A+4>>2],t[f+8>>2]=t[A+8>>2],t[f+12>>2]=t[A+12>>2],t[l>>2]=t[i>>2],t[l+4>>2]=t[i+4>>2],t[l+8>>2]=t[i+8>>2],t[l+12>>2]=t[i+12>>2],Zs(n,f,l)|0):0){a=1;break}t[n>>2]=t[r>>2];t[n+4>>2]=t[r+4>>2];t[n+8>>2]=t[r+8>>2];t[n+12>>2]=t[r+12>>2];t[f>>2]=t[i>>2];t[f+4>>2]=t[i+4>>2];t[f+8>>2]=t[i+8>>2];t[f+12>>2]=t[i+12>>2];t[l>>2]=t[e>>2];t[l+4>>2]=t[e+4>>2];t[l+8>>2]=t[e+8>>2];t[l+12>>2]=t[e+12>>2];e=Is(n,f,l)|0;t[n>>2]=t[r>>2];t[n+4>>2]=t[r+4>>2];t[n+8>>2]=t[r+8>>2];t[n+12>>2]=t[r+12>>2];t[f>>2]=t[i>>2];t[f+4>>2]=t[i+4>>2];t[f+8>>2]=t[i+8>>2];t[f+12>>2]=t[i+12>>2];t[l>>2]=t[A>>2];t[l+4>>2]=t[A+4>>2];t[l+8>>2]=t[A+8>>2];t[l+12>>2]=t[A+12>>2];c=(P(a,s)|0)<0;a=(P(Is(n,f,l)|0,e)|0)>>>31;a=c?a:0}}while(0);h=o;return a|0}function Ls(e,A){e=e|0;A=A|0;var r=0.0,i=0.0;r=+c[e>>3]-+c[A>>3];i=+c[e+8>>3]-+c[A+8>>3];return+(i*i+r*r)}function Qs(e){e=e|0;t[e+24>>2]=Ds(t[e+4>>2]|0)|0;zs(e);return}function Ds(e){e=e|0;var A=0,r=0,i=0,a=0;i=e+2|0;a=Z2(i<<2)|0;A=L2(P(e,e)|0,8)|0;r=0;while(1){if((r|0)>=(e|0))break;t[a+(r<<2)>>2]=A;A=A+(e<<3)|0;r=r+1|0}while(1){if((e|0)>=(i|0))break;t[a+(e<<2)>>2]=0;e=e+1|0}return a|0}function zs(e){e=e|0;var A=0,r=0,i=0,a=0,n=0,f=0,l=0,s=0,o=0,u=0,b=0,w=0,k=0,d=0.0;w=h;h=h+32|0;f=w+16|0;n=w;l=t[e+4>>2]|0;o=t[e+8>>2]|0;u=t[e+16>>2]|0;b=t[e+20>>2]|0;r=t[e+24>>2]|0;A=0;while(1){if((A|0)>=(l|0))break;k=t[b+(A<<2)>>2]|0;i=o+(A<<4)|0;a=o+(k<<4)|0;t[n>>2]=t[i>>2];t[n+4>>2]=t[i+4>>2];t[n+8>>2]=t[i+8>>2];t[n+12>>2]=t[i+12>>2];t[f>>2]=t[a>>2];t[f+4>>2]=t[a+4>>2];t[f+8>>2]=t[a+8>>2];t[f+12>>2]=t[a+12>>2];d=+Ws(n,f);a=t[r+(A<<2)>>2]|0;c[a+(k<<3)>>3]=d;c[(t[r+(k<<2)>>2]|0)+(A<<3)>>3]=d;e=A+-1|0;e=(k|0)==(e|0)?A+-2|0:e;while(1){if((e|0)<=-1)break;if((Ys(A,e,o,u,b)|0?Ys(e,A,o,u,b)|0:0)?(s=o+(e<<4)|0,t[n>>2]=t[i>>2],t[n+4>>2]=t[i+4>>2],t[n+8>>2]=t[i+8>>2],t[n+12>>2]=t[i+12>>2],t[f>>2]=t[s>>2],t[f+4>>2]=t[s+4>>2],t[f+8>>2]=t[s+8>>2],t[f+12>>2]=t[s+12>>2],Fs(n,f,l,l,l,o,u)|0):0){t[n>>2]=t[i>>2];t[n+4>>2]=t[i+4>>2];t[n+8>>2]=t[i+8>>2];t[n+12>>2]=t[i+12>>2];t[f>>2]=t[s>>2];t[f+4>>2]=t[s+4>>2];t[f+8>>2]=t[s+8>>2];t[f+12>>2]=t[s+12>>2];d=+Ws(n,f);c[a+(e<<3)>>3]=d;c[(t[r+(e<<2)>>2]|0)+(A<<3)>>3]=d}e=e+-1|0}A=A+1|0}h=w;return}function Ws(e,A){e=e|0;A=A|0;var r=0.0,i=0,a=0,n=0;i=h;h=h+32|0;a=i+16|0;n=i;t[n>>2]=t[e>>2];t[n+4>>2]=t[e+4>>2];t[n+8>>2]=t[e+8>>2];t[n+12>>2]=t[e+12>>2];t[a>>2]=t[A>>2];t[a+4>>2]=t[A+4>>2];t[a+8>>2]=t[A+8>>2];t[a+12>>2]=t[A+12>>2];r=+D(+ +Ls(n,a));h=i;return+r}function Ys(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;var n=0,f=0,l=0,s=0,c=0,o=0,u=0;n=h;h=h+64|0;f=n+48|0;l=n+32|0;s=n+16|0;c=n;u=r+(t[a+(e<<2)>>2]<<4)|0;o=r+(e<<4)|0;i=r+(t[i+(e<<2)>>2]<<4)|0;a=r+(A<<4)|0;t[c>>2]=t[u>>2];t[c+4>>2]=t[u+4>>2];t[c+8>>2]=t[u+8>>2];t[c+12>>2]=t[u+12>>2];t[s>>2]=t[o>>2];t[s+4>>2]=t[o+4>>2];t[s+8>>2]=t[o+8>>2];t[s+12>>2]=t[o+12>>2];t[l>>2]=t[i>>2];t[l+4>>2]=t[i+4>>2];t[l+8>>2]=t[i+8>>2];t[l+12>>2]=t[i+12>>2];t[f>>2]=t[a>>2];t[f+4>>2]=t[a+4>>2];t[f+8>>2]=t[a+8>>2];t[f+12>>2]=t[a+12>>2];a=Ms(c,s,l,f)|0;h=n;return a|0}function Fs(e,A,r,i,a,n,f){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;n=n|0;f=f|0;var l=0,s=0,c=0,o=0,u=0,b=0,w=0,k=0,d=0;w=h;h=h+64|0;u=w+48|0;o=w+32|0;c=w+16|0;s=w;l=0;while(1){if((l|0)>=(r|0)){b=4;break}d=n+(l<<4)|0;k=n+(t[f+(l<<2)>>2]<<4)|0;t[s>>2]=t[e>>2];t[s+4>>2]=t[e+4>>2];t[s+8>>2]=t[e+8>>2];t[s+12>>2]=t[e+12>>2];t[c>>2]=t[A>>2];t[c+4>>2]=t[A+4>>2];t[c+8>>2]=t[A+8>>2];t[c+12>>2]=t[A+12>>2];t[o>>2]=t[d>>2];t[o+4>>2]=t[d+4>>2];t[o+8>>2]=t[d+8>>2];t[o+12>>2]=t[d+12>>2];t[u>>2]=t[k>>2];t[u+4>>2]=t[k+4>>2];t[u+8>>2]=t[k+8>>2];t[u+12>>2]=t[k+12>>2];if(!(Gs(s,c,o,u)|0))l=l+1|0;else{i=0;break}}e:do{if((b|0)==4)while(1){if((i|0)>=(a|0)){i=1;break e}k=n+(i<<4)|0;d=n+(t[f+(i<<2)>>2]<<4)|0;t[s>>2]=t[e>>2];t[s+4>>2]=t[e+4>>2];t[s+8>>2]=t[e+8>>2];t[s+12>>2]=t[e+12>>2];t[c>>2]=t[A>>2];t[c+4>>2]=t[A+4>>2];t[c+8>>2]=t[A+8>>2];t[c+12>>2]=t[A+12>>2];t[o>>2]=t[k>>2];t[o+4>>2]=t[k+4>>2];t[o+8>>2]=t[k+8>>2];t[o+12>>2]=t[k+12>>2];t[u>>2]=t[d>>2];t[u+4>>2]=t[d+4>>2];t[u+8>>2]=t[d+8>>2];t[u+12>>2]=t[d+12>>2];if(!(Gs(s,c,o,u)|0)){i=i+1|0;b=4}else{i=0;break}}}while(0);h=w;return i|0}function Ms(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0,n=0,f=0,l=0,s=0;n=h;h=h+48|0;f=n+32|0;l=n+16|0;s=n;t[s>>2]=t[i>>2];t[s+4>>2]=t[i+4>>2];t[s+8>>2]=t[i+8>>2];t[s+12>>2]=t[i+12>>2];t[l>>2]=t[e>>2];t[l+4>>2]=t[e+4>>2];t[l+8>>2]=t[e+8>>2];t[l+12>>2]=t[e+12>>2];t[f>>2]=t[A>>2];t[f+4>>2]=t[A+4>>2];t[f+8>>2]=t[A+8>>2];t[f+12>>2]=t[A+12>>2];a=Is(s,l,f)|0;t[s>>2]=t[i>>2];t[s+4>>2]=t[i+4>>2];t[s+8>>2]=t[i+8>>2];t[s+12>>2]=t[i+12>>2];t[l>>2]=t[A>>2];t[l+4>>2]=t[A+4>>2];t[l+8>>2]=t[A+8>>2];t[l+12>>2]=t[A+12>>2];t[f>>2]=t[r>>2];t[f+4>>2]=t[r+4>>2];t[f+8>>2]=t[r+8>>2];t[f+12>>2]=t[r+12>>2];i=Is(s,l,f)|0;t[s>>2]=t[e>>2];t[s+4>>2]=t[e+4>>2];t[s+8>>2]=t[e+8>>2];t[s+12>>2]=t[e+12>>2];t[l>>2]=t[A>>2];t[l+4>>2]=t[A+4>>2];t[l+8>>2]=t[A+8>>2];t[l+12>>2]=t[A+12>>2];t[f>>2]=t[r>>2];t[f+4>>2]=t[r+4>>2];t[f+8>>2]=t[r+8>>2];t[f+12>>2]=t[r+12>>2];r=(Is(s,l,f)|0)>0;h=n;return(r?i|a:i&a)>>>31^1|0}function Vs(e,A,r){e=e|0;A=A|0;r=r|0;var i=0.0,a=0,n=0,f=0,l=0,s=0,o=0,u=0,b=0,w=0,k=0,d=0,v=0,g=0,m=0;v=h;h=h+80|0;l=v+64|0;f=v+48|0;n=v+32|0;s=v+16|0;b=v;w=t[e+4>>2]|0;k=t[e+8>>2]|0;d=t[e+16>>2]|0;o=t[e+20>>2]|0;u=Z2((w<<3)+16|0)|0;if((A|0)==-2222){t[l>>2]=t[r>>2];t[l+4>>2]=t[r+4>>2];t[l+8>>2]=t[r+8>>2];t[l+12>>2]=t[r+12>>2];A=Ns(e,l)|0}if((A|0)>-1){e=t[e+12>>2]|0;a=t[e+(A+1<<2)>>2]|0;e=t[e+(A<<2)>>2]|0}else{a=w;e=w}A=0;while(1){if((A|0)>=(e|0)){A=e;break}m=k+(A<<4)|0;t[b>>2]=t[m>>2];t[b+4>>2]=t[m+4>>2];t[b+8>>2]=t[m+8>>2];t[b+12>>2]=t[m+12>>2];m=k+(t[o+(A<<2)>>2]<<4)|0;g=k+(t[d+(A<<2)>>2]<<4)|0;t[s>>2]=t[m>>2];t[s+4>>2]=t[m+4>>2];t[s+8>>2]=t[m+8>>2];t[s+12>>2]=t[m+12>>2];t[n>>2]=t[b>>2];t[n+4>>2]=t[b+4>>2];t[n+8>>2]=t[b+8>>2];t[n+12>>2]=t[b+12>>2];t[f>>2]=t[g>>2];t[f+4>>2]=t[g+4>>2];t[f+8>>2]=t[g+8>>2];t[f+12>>2]=t[g+12>>2];t[l>>2]=t[r>>2];t[l+4>>2]=t[r+4>>2];t[l+8>>2]=t[r+8>>2];t[l+12>>2]=t[r+12>>2];if((Ms(s,n,f,l)|0)!=0?(t[f>>2]=t[r>>2],t[f+4>>2]=t[r+4>>2],t[f+8>>2]=t[r+8>>2],t[f+12>>2]=t[r+12>>2],t[l>>2]=t[b>>2],t[l+4>>2]=t[b+4>>2],t[l+8>>2]=t[b+8>>2],t[l+12>>2]=t[b+12>>2],(Fs(f,l,e,a,w,k,d)|0)!=0):0){t[f>>2]=t[r>>2];t[f+4>>2]=t[r+4>>2];t[f+8>>2]=t[r+8>>2];t[f+12>>2]=t[r+12>>2];t[l>>2]=t[b>>2];t[l+4>>2]=t[b+4>>2];t[l+8>>2]=t[b+8>>2];t[l+12>>2]=t[b+12>>2];i=+Ws(f,l)}else i=0.0;c[u+(A<<3)>>3]=i;A=A+1|0}while(1){if((A|0)>=(a|0)){A=a;break}c[u+(A<<3)>>3]=0.0;A=A+1|0}while(1){if((A|0)>=(w|0))break;g=k+(A<<4)|0;t[b>>2]=t[g>>2];t[b+4>>2]=t[g+4>>2];t[b+8>>2]=t[g+8>>2];t[b+12>>2]=t[g+12>>2];g=k+(t[o+(A<<2)>>2]<<4)|0;m=k+(t[d+(A<<2)>>2]<<4)|0;t[s>>2]=t[g>>2];t[s+4>>2]=t[g+4>>2];t[s+8>>2]=t[g+8>>2];t[s+12>>2]=t[g+12>>2];t[n>>2]=t[b>>2];t[n+4>>2]=t[b+4>>2];t[n+8>>2]=t[b+8>>2];t[n+12>>2]=t[b+12>>2];t[f>>2]=t[m>>2];t[f+4>>2]=t[m+4>>2];t[f+8>>2]=t[m+8>>2];t[f+12>>2]=t[m+12>>2];t[l>>2]=t[r>>2];t[l+4>>2]=t[r+4>>2];t[l+8>>2]=t[r+8>>2];t[l+12>>2]=t[r+12>>2];if((Ms(s,n,f,l)|0)!=0?(t[f>>2]=t[r>>2],t[f+4>>2]=t[r+4>>2],t[f+8>>2]=t[r+8>>2],t[f+12>>2]=t[r+12>>2],t[l>>2]=t[b>>2],t[l+4>>2]=t[b+4>>2],t[l+8>>2]=t[b+8>>2],t[l+12>>2]=t[b+12>>2],(Fs(f,l,e,a,w,k,d)|0)!=0):0){t[f>>2]=t[r>>2];t[f+4>>2]=t[r+4>>2];t[f+8>>2]=t[r+8>>2];t[f+12>>2]=t[r+12>>2];t[l>>2]=t[b>>2];t[l+4>>2]=t[b+4>>2];t[l+8>>2]=t[b+8>>2];t[l+12>>2]=t[b+12>>2];i=+Ws(f,l)}else i=0.0;c[u+(A<<3)>>3]=i;A=A+1|0}c[u+(w<<3)>>3]=0.0;c[u+(w+1<<3)>>3]=0.0;h=v;return u|0}function Ns(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0,f=0,l=0,s=0,c=0,o=0,u=0,b=0;o=h;h=h+32|0;a=o+8|0;i=o;f=o+24|0;l=e+8|0;s=e+12|0;c=f+4|0;r=0;while(1){if((r|0)>=(t[e>>2]|0)){r=-1111;break}b=t[s>>2]|0;u=t[b+(r<<2)>>2]|0;t[f>>2]=(t[l>>2]|0)+(u<<4);n=r+1|0;t[c>>2]=(t[b+(n<<2)>>2]|0)-u;t[i>>2]=t[f>>2];t[i+4>>2]=t[f+4>>2];t[a>>2]=t[A>>2];t[a+4>>2]=t[A+4>>2];t[a+8>>2]=t[A+8>>2];t[a+12>>2]=t[A+12>>2];if(!(Wl(i,a)|0))r=n;else break}h=o;return r|0}function Rs(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;var n=0,f=0,l=0,s=0,c=0,o=0,u=0,b=0,w=0,k=0,d=0,v=0,g=0;g=h;h=h+64|0;u=g+48|0;o=g+32|0;w=g+16|0;b=g;d=t[a+4>>2]|0;v=t[a+8>>2]|0;k=t[a+16>>2]|0;n=(i|0)<0;do{if((A|0)<0)if(n){n=0;l=0;a=0;f=0}else{A=t[a+12>>2]|0;a=0;f=0;l=i;s=A;A=A+(i<<2)|0;c=9}else{if(n){c=t[a+12>>2]|0;a=0;f=0;l=A;s=c;A=c+(A<<2)|0;c=9;break}n=t[a+12>>2]|0;if((A|0)>(i|0)){a=t[n+(i+1<<2)>>2]|0;f=t[n+(i<<2)>>2]|0;l=A;s=n;A=n+(A<<2)|0;c=9;break}else{a=t[n+(A+1<<2)>>2]|0;f=t[n+(A<<2)>>2]|0;l=i;s=n;A=n+(i<<2)|0;c=9;break}}}while(0);if((c|0)==9){n=t[s+(l+1<<2)>>2]|0;l=t[A>>2]|0}A=0;while(1){if((A|0)>=(f|0)){c=13;break}s=v+(A<<4)|0;i=v+(t[k+(A<<2)>>2]<<4)|0;t[b>>2]=t[e>>2];t[b+4>>2]=t[e+4>>2];t[b+8>>2]=t[e+8>>2];t[b+12>>2]=t[e+12>>2];t[w>>2]=t[r>>2];t[w+4>>2]=t[r+4>>2];t[w+8>>2]=t[r+8>>2];t[w+12>>2]=t[r+12>>2];t[o>>2]=t[s>>2];t[o+4>>2]=t[s+4>>2];t[o+8>>2]=t[s+8>>2];t[o+12>>2]=t[s+12>>2];t[u>>2]=t[i>>2];t[u+4>>2]=t[i+4>>2];t[u+8>>2]=t[i+8>>2];t[u+12>>2]=t[i+12>>2];if(!(Gs(b,w,o,u)|0))A=A+1|0;else{n=0;break}}e:do{if((c|0)==13){while(1){if((a|0)>=(l|0))break;i=v+(a<<4)|0;c=v+(t[k+(a<<2)>>2]<<4)|0;t[b>>2]=t[e>>2];t[b+4>>2]=t[e+4>>2];t[b+8>>2]=t[e+8>>2];t[b+12>>2]=t[e+12>>2];t[w>>2]=t[r>>2];t[w+4>>2]=t[r+4>>2];t[w+8>>2]=t[r+8>>2];t[w+12>>2]=t[r+12>>2];t[o>>2]=t[i>>2];t[o+4>>2]=t[i+4>>2];t[o+8>>2]=t[i+8>>2];t[o+12>>2]=t[i+12>>2];t[u>>2]=t[c>>2];t[u+4>>2]=t[c+4>>2];t[u+8>>2]=t[c+8>>2];t[u+12>>2]=t[c+12>>2];if(!(Gs(b,w,o,u)|0)){a=a+1|0;c=13}else{n=0;break e}}while(1){if((n|0)>=(d|0)){n=1;break e}i=v+(n<<4)|0;c=v+(t[k+(n<<2)>>2]<<4)|0;t[b>>2]=t[e>>2];t[b+4>>2]=t[e+4>>2];t[b+8>>2]=t[e+8>>2];t[b+12>>2]=t[e+12>>2];t[w>>2]=t[r>>2];t[w+4>>2]=t[r+4>>2];t[w+8>>2]=t[r+8>>2];t[w+12>>2]=t[r+12>>2];t[o>>2]=t[i>>2];t[o+4>>2]=t[i+4>>2];t[o+8>>2]=t[i+8>>2];t[o+12>>2]=t[i+12>>2];t[u>>2]=t[c>>2];t[u+4>>2]=t[c+4>>2];t[u+8>>2]=t[c+8>>2];t[u+12>>2]=t[c+12>>2];if(!(Gs(b,w,o,u)|0))n=n+1|0;else{n=0;break}}}}while(0);h=g;return n|0}function xs(e){e=e|0;return Js(e,0,0)|0}function Js(e,A,r){e=e|0;A=A|0;r=r|0;return Hs(e,A,r,0)|0}function Hs(e,A,r,a){e=e|0;A=A|0;r=r|0;a=a|0;var n=0,f=0,l=0,s=0;if(!A){n=Z2(496)|0;if(!n)n=0;else{t[n+12>>2]=35;t[n+16>>2]=107;t[n+20>>2]=105;A=35;f=6}}else{n=I5[t[A>>2]&63](496)|0;if(!n)n=0;else{f=t[A>>2]|0;t[n+12>>2]=f;t[n+16>>2]=t[A+4>>2];t[n+20>>2]=t[A+8>>2];A=f;f=6}}do{if((f|0)==6){t[n+8>>2]=0;t[n+32>>2]=0;t[n+376>>2]=16;s=n+12|0;l=I5[A&63](256)|0;A=n+388|0;t[A>>2]=l;if(!l){F5[t[n+20>>2]&127](n);n=0;break}f=I5[t[s>>2]&63](1024)|0;l=n+44|0;t[l>>2]=f;if(!f){r=n+20|0;F5[t[r>>2]&127](t[A>>2]|0);F5[t[r>>2]&127](n);n=0;break}t[n+48>>2]=f+1024;if(!a){a=Ps(s)|0;t[n+352>>2]=a;if(!a){r=n+20|0;F5[t[r>>2]&127](t[l>>2]|0);F5[t[r>>2]&127](t[A>>2]|0);F5[t[r>>2]&127](n);n=0;break}}else t[n+352>>2]=a;t[n+372>>2]=0;t[n+364>>2]=0;t[n+300>>2]=0;t[n+464>>2]=0;t[n+460>>2]=0;t[n+124>>2]=0;t[n+244>>2]=0;A=n+468|0;i[A>>0]=33;f=n+232|0;i[f>>0]=0;i[n+233>>0]=0;t[n+392>>2]=0;t[n+396>>2]=0;i[n+400>>0]=0;a=n+228|0;t[a>>2]=0;Xs(n+412|0,s);Xs(n+436|0,s);Ss(n,e);if(e|0?(t[a>>2]|0)==0:0){js(n);n=0;break}if(!r){t[n+224>>2]=XK()|0;break}else{i[f>>0]=1;t[n+224>>2]=E0()|0;i[A>>0]=i[r>>0]|0;break}}}while(0);return n|0}function Ps(e){e=e|0;var A=0;A=I5[t[e>>2]&63](188)|0;if(A|0){Xs(A+80|0,e);Xs(A+104|0,e);$c(A,e);$c(A+20|0,e);$c(A+40|0,e);$c(A+60|0,e);i[A+131>>0]=0;$c(A+132|0,e);t[A+152>>2]=0;t[A+156>>2]=0;i[A+160>>0]=0;e=A+164|0;t[e>>2]=0;t[e+4>>2]=0;t[e+8>>2]=0;t[e+12>>2]=0;t[e+16>>2]=0;t[e+20>>2]=0;i[A+128>>0]=1;i[A+129>>0]=0;i[A+130>>0]=0}return A|0}function Xs(e,A){e=e|0;A=A|0;t[e>>2]=0;t[e+4>>2]=0;t[e+8>>2]=0;t[e+12>>2]=0;t[e+16>>2]=0;t[e+20>>2]=A;return}function Ss(e,A){e=e|0;A=A|0;var r=0,n=0,f=0;t[e+276>>2]=56;L0(e+252|0);if(A|0)t[e+228>>2]=ec(A,e+12|0)|0;t[e+356>>2]=0;z$(e+148|0,e+144|0,0)|0;t[e>>2]=0;t[e+4>>2]=0;A=e+116|0;n=e+52|0;f=n+64|0;do{t[n>>2]=0;n=n+4|0}while((n|0)<(f|0));t[A>>2]=e;t[e+120>>2]=0;A=e+128|0;t[A>>2]=0;t[A+4>>2]=0;t[A+8>>2]=0;t[A+12>>2]=0;A=t[e+8>>2]|0;t[e+24>>2]=A;t[e+28>>2]=A;t[e+36>>2]=0;t[e+40>>2]=0;A=e+312|0;n=e+404|0;t[n>>2]=0;t[n+4>>2]=0;n=e+280|0;r=e+304|0;t[n>>2]=0;t[n+4>>2]=0;t[n+8>>2]=0;t[n+12>>2]=0;t[n+16>>2]=0;n=A;f=n+36|0;do{t[n>>2]=0;n=n+4|0}while((n|0)<(f|0));a[A+36>>1]=0;i[r>>0]=1;t[e+308>>2]=0;t[e+360>>2]=0;t[e+368>>2]=0;t[e+380>>2]=0;t[e+236>>2]=0;t[e+248>>2]=0;t[e+240>>2]=0;t[e+472>>2]=0;t[e+476>>2]=0;i[e+484>>0]=0;i[e+485>>0]=0;t[e+488>>2]=0;t[e+492>>2]=0;return}function js(e){e=e|0;var A=0,r=0,a=0,n=0,f=0;if(e|0){r=e+364|0;n=e+20|0;A=t[e+360>>2]|0;while(1){if(!A){A=t[r>>2]|0;if(!A)break;t[r>>2]=0}f=t[A>>2]|0;F5[t[n>>2]&127](t[A+36>>2]|0);Us(t[A+44>>2]|0,e);F5[t[n>>2]&127](A);A=f}r=e+300|0;A=t[e+296>>2]|0;while(1){if(!A){A=t[r>>2]|0;if(!A)break;t[r>>2]=0}f=t[A+8>>2]|0;F5[t[n>>2]&127](A);A=f}Us(t[e+372>>2]|0,e);Us(t[e+368>>2]|0,e);Ts(e+412|0);Ts(e+436|0);A=e+12|0;F5[t[n>>2]&127](t[e+228>>2]|0);if((i[e+484>>0]|0)==0?(a=t[e+352>>2]|0,a|0):0)Os(a,(t[e+472>>2]|0)==0&1,A);F5[t[n>>2]&127](t[e+388>>2]|0);F5[t[n>>2]&127](t[e+460>>2]|0);F5[t[n>>2]&127](t[e+8>>2]|0);F5[t[n>>2]&127](t[e+44>>2]|0);F5[t[n>>2]&127](t[e+392>>2]|0);F5[t[n>>2]&127](t[e+236>>2]|0);A=t[e+248>>2]|0;if(A|0)F5[A&127](t[e+240>>2]|0);F5[t[n>>2]&127](e)}return}function Us(e,A){e=e|0;A=A|0;var r=0;A=A+20|0;while(1){if(!e)break;r=t[e+4>>2]|0;F5[t[A>>2]&127](t[e+16>>2]|0);F5[t[A>>2]&127](e);e=r}return}function Ts(e){e=e|0;var A=0,r=0,i=0;r=e+20|0;A=t[e>>2]|0;while(1){if(!A)break;i=t[A>>2]|0;F5[t[(t[r>>2]|0)+8>>2]&127](A);A=i}A=t[e+4>>2]|0;while(1){if(!A)break;i=t[A>>2]|0;F5[t[(t[r>>2]|0)+8>>2]&127](A);A=i}return}function Os(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0,n=0,f=0;f=h;h=h+16|0;a=f;n=e+20|0;_s(a,n);r=r+8|0;while(1){i=qs(a)|0;if(!i)break;if(!(t[i+16>>2]|0))continue;F5[t[r>>2]&127](t[i+20>>2]|0)}Ks(e);Ks(e+132|0);Ks(n);Ks(e+40|0);Ks(e+60|0);Ts(e+80|0);Ts(e+104|0);if(A<<24>>24){F5[t[r>>2]&127](t[e+184>>2]|0);F5[t[r>>2]&127](t[e+164>>2]|0)}F5[t[r>>2]&127](e);h=f;return}function _s(e,A){e=e|0;A=A|0;var r=0;r=t[A>>2]|0;t[e>>2]=r;t[e+4>>2]=r+(t[A+8>>2]<<2);return}function qs(e){e=e|0;var A=0,r=0,i=0;r=t[e+4>>2]|0;i=t[e>>2]|0;do{if((i|0)==(r|0)){A=0;break}A=i;i=i+4|0;t[e>>2]=i;A=t[A>>2]|0}while(!(A|0));return A|0}function Ks(e){e=e|0;var A=0,r=0,i=0,a=0,n=0;r=e+8|0;i=e+16|0;A=0;while(1){a=t[(t[i>>2]|0)+8>>2]|0;n=t[e>>2]|0;if(A>>>0>=(t[r>>2]|0)>>>0)break;F5[a&127](t[n+(A<<2)>>2]|0);A=A+1|0}F5[a&127](n);return}function $s(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0;a=Ac(e)|0;if(!a){t[e+276>>2]=57;a=rc(e,A,r,i)|0}return a|0}function ec(e,A){e=e|0;A=A|0;var r=0,a=0;r=0;do{a=r;r=r+1|0}while((i[e+a>>0]|0)!=0);A=I5[t[A>>2]&63](r)|0;if(!A)A=0;else Q6(A|0,e|0,r|0)|0;return A|0}function Ac(e){e=e|0;var A=0;A=e+228|0;if(!(L5[(i[e+232>>0]<<24>>24?38:37)&63](e+148|0,e+144|0,t[A>>2]|0)|0))e=Kc(e,t[A>>2]|0)|0;else e=0;return e|0}function rc(e,A,r,a){e=e|0;A=A|0;r=r|0;a=a|0;var n=0,f=0,l=0,s=0;n=h;h=h+16|0;f=n;t[f>>2]=A;s=e+144|0;l=t[s>>2]|0;l=Q5[t[l>>2]&127](l,A,r,f)|0;a=ic(e,t[s>>2]|0,A,r,l,t[f>>2]|0,a,(i[e+480>>0]|0)==0&1)|0;h=n;return a|0}function ic(e,A,r,a,f,l,s,c){e=e|0;A=A|0;r=r|0;a=a|0;f=f|0;l=l|0;s=s|0;c=c|0;var o=0,u=0,b=0,w=0,k=0,d=0,v=0,g=0,m=0,p=0,E=0,B=0,y=0,C=0,I=0,Z=0,G=0,L=0,Q=0,D=0,z=0,W=0,Y=0,F=0,M=0,V=0,N=0,R=0,x=0,J=0,H=0,P=0,X=0,S=0,j=0,U=0,T=0,O=0,_=0,q=0,K=0,$=0,ee=0,Ae=0,re=0,ie=0,ae=0,te=0,ne=0,fe=0,le=0,se=0,ce=0,oe=0,ue=0,be=0,he=0,we=0,ke=0,de=0,ve=0,ge=0,me=0,pe=0,Ee=0,Be=0,ye=0,Ce=0,Ie=0,Ze=0,Ge=0,Le=0,Qe=0,De=0,ze=0;ze=h;h=h+16|0;Le=ze;t[Le>>2]=l;d=t[e+352>>2]|0;v=e+144|0;if((t[v>>2]|0)==(A|0)){w=e+284|0;k=e+288|0;be=e+296|0}else{be=e+296|0;k=t[be>>2]|0;w=k;k=k+4|0}g=c<<24>>24!=0;we=e+252|0;m=e+80|0;p=e+476|0;E=e+84|0;B=e+320|0;y=e+412|0;C=e+316|0;I=e+424|0;Z=e+428|0;G=e+324|0;de=e+4|0;L=e+485|0;Q=d+132|0;D=e+312|0;ge=d+129|0;z=d+128|0;W=d+80|0;Y=d+92|0;F=d+96|0;M=e+136|0;V=e+88|0;N=e+488|0;pe=e+112|0;Ee=d+131|0;Be=e+116|0;ye=d+130|0;Ce=e+108|0;Ie=e+356|0;R=e+340|0;x=e+132|0;J=e+344|0;H=e+348|0;P=e+328|0;X=e+349|0;S=e+420|0;j=d+120|0;U=d+116|0;T=e+92|0;O=e+472|0;_=e+336|0;q=e+332|0;K=e+96|0;$=e+256|0;ee=e+464|0;Ae=e+460|0;re=d+160|0;ie=d+184|0;ae=d+180|0;te=d+164|0;ne=e+128|0;fe=e+12|0;le=e+16|0;se=e+268|0;ce=e+120|0;oe=d+176|0;ue=d+168|0;b=A;u=r;A=f;e:while(1){t[w>>2]=u;r=t[Le>>2]|0;t[k>>2]=r;l=r;A:do{if((A|0)<1){if(g&(A|0)!=0){o=7;break e}switch(A|0){case-1:{l=5;o=280;break e}case 0:{o=9;break e}case-2:{l=6;break e}case-4:{o=10;break e}case-15:{A=15;break A}default:{}}t[Le>>2]=a;A=0-A|0;l=a}}while(0);f=D5[t[we>>2]&127](we,A,u,l,b)|0;A:do{switch(f|0){case 2:{o=58;break e}case-1:{o=184;break e}case 1:{l=ac(e,0,u,t[Le>>2]|0)|0;if(l|0){o=280;break e}l=t[v>>2]|0;break}case 4:{if(!(t[E>>2]|0))l=1;else{o=tc(y,b,u,t[Le>>2]|0)|0;t[C>>2]=o;if(!o){l=1;o=280;break e}t[Z>>2]=t[I>>2];t[G>>2]=0;l=0}t[B>>2]=0;o=274;break}case 7:{l=t[E>>2]|0;if(!l)o=275;else{x5[l&15](t[de>>2]|0,t[C>>2]|0,t[B>>2]|0,t[G>>2]|0,1);t[C>>2]=0;nc(y);l=b}break}case 57:{l=ac(e,1,u,t[Le>>2]|0)|0;if(l|0){o=280;break e}l=t[v>>2]|0;break}case 6:{i[L>>0]=0;o=fc(e,Q,75395,36)|0;t[D>>2]=o;if(!o){l=1;o=280;break e}i[ge>>0]=1;if(!(t[E>>2]|0))o=33;else{if(!(Q5[t[b+52>>2]&127](b,u,t[Le>>2]|0,w)|0)){l=32;o=280;break e}l=t[b+64>>2]|0;l=tc(y,b,u+l|0,(t[Le>>2]|0)+(0-l)|0)|0;if(!l){l=1;o=280;break e}lc(l);t[Z>>2]=t[I>>2];t[G>>2]=l;l=0;o=34}break}case 14:{o=33;break}case 8:{l=t[C>>2]|0;if(!l)l=1;else{x5[t[E>>2]&15](t[de>>2]|0,l,t[B>>2]|0,t[G>>2]|0,0);nc(y);l=0}if(!((t[B>>2]|0)==0?!(i[L>>0]|0):0)){r=i[ge>>0]|0;i[ge>>0]=1;do{if(t[N>>2]|0?t[pe>>2]|0:0){f=fc(e,Q,75395,36)|0;if(!f){l=1;o=280;break e}if(!(i[L>>0]|0))A=f+20|0;else{A=f+20|0;t[A>>2]=t[Ie>>2]}i[Ee>>0]=0;if(!(D5[t[pe>>2]&127](t[Be>>2]|0,0,t[A>>2]|0,t[f+16>>2]|0,t[f+24>>2]|0)|0)){l=21;o=280;break e}if(!(i[Ee>>0]|0)){if(t[B>>2]|0)break;i[ge>>0]=r;break}if(((i[ye>>0]|0)==0?(he=t[Ce>>2]|0,he|0):0)?(I5[he&63](t[de>>2]|0)|0)==0:0){l=22;o=280;break e}}}while(0);i[L>>0]=0}A=t[V>>2]|0;if(!A)o=274;else{F5[A&127](t[de>>2]|0);l=b}break}case 34:{o=cc(e,b,u,t[Le>>2]|0)|0;t[R>>2]=o;if(!o){l=1;o=280;break e}else o=80;break}case 22:{o=oc(e,b,u,t[Le>>2]|0)|0;t[J>>2]=o;if(!o){l=1;o=280;break e}i[H>>0]=0;t[P>>2]=0;i[X>>0]=0;o=80;break}case 23:{i[H>>0]=1;t[P>>2]=142188;o=80;break}case 24:{i[X>>0]=1;t[P>>2]=142194;o=80;break}case 25:{t[P>>2]=142197;o=80;break}case 26:{t[P>>2]=142203;o=80;break}case 27:{t[P>>2]=142210;o=80;break}case 28:{t[P>>2]=142217;o=80;break}case 29:{t[P>>2]=142226;o=80;break}case 30:{t[P>>2]=142234;o=80;break}case 32:case 31:{if((i[z>>0]|0)!=0?(t[x>>2]|0)!=0:0){if(!(uc(y,(t[P>>2]|0)==0?(f|0)==32?142243:142253:142255)|0)){l=1;o=280;break e}if(!(bc(y,b,u,t[Le>>2]|0)|0)){l=1;o=280;break e}t[P>>2]=t[Z>>2];l=b}else o=275;break}case 36:case 35:{if(i[z>>0]|0){if(!(hc(t[R>>2]|0,t[J>>2]|0,i[H>>0]|0,i[X>>0]|0,0,e)|0)){l=1;o=280;break e}if((t[x>>2]|0)!=0?(ke=t[P>>2]|0,(ke|0)!=0):0){switch(i[ke>>0]|0){case 40:{o=93;break}case 78:{if((i[ke+1>>0]|0)==79)o=93;break}default:{}}if((o|0)==93){o=0;l=t[I>>2]|0;if((l|0)==(t[S>>2]|0)){if(!((wc(y)|0)<<24>>24)){l=1;o=280;break e}l=t[I>>2]|0}t[I>>2]=l+1;i[l>>0]=41;l=t[I>>2]|0;if((l|0)==(t[S>>2]|0)){if(!((wc(y)|0)<<24>>24)){l=1;o=280;break e}l=t[I>>2]|0}t[I>>2]=l+1;i[l>>0]=0;t[P>>2]=t[Z>>2];t[Z>>2]=t[I>>2]}t[k>>2]=u;J5[t[x>>2]&15](t[de>>2]|0,t[t[R>>2]>>2]|0,t[t[J>>2]>>2]|0,t[P>>2]|0,0,(f|0)==36&1);nc(y);l=b}else o=275}else o=275;break}case 38:case 37:{if(i[z>>0]|0){l=t[b+64>>2]|0;l=kc(e,b,i[H>>0]|0,u+l|0,(t[Le>>2]|0)+(0-l)|0,W)|0;if(l|0){o=280;break e}A=t[F>>2]|0;t[F>>2]=t[Y>>2];if(!(hc(t[R>>2]|0,t[J>>2]|0,i[H>>0]|0,0,A,e)|0)){l=1;o=280;break e}if((t[x>>2]|0)!=0?(ve=t[P>>2]|0,(ve|0)!=0):0){switch(i[ve>>0]|0){case 40:{o=108;break}case 78:{if((i[ve+1>>0]|0)==79)o=108;break}default:{}}if((o|0)==108){o=0;l=t[I>>2]|0;if((l|0)==(t[S>>2]|0)){if(!((wc(y)|0)<<24>>24)){l=1;o=280;break e}l=t[I>>2]|0}t[I>>2]=l+1;i[l>>0]=41;l=t[I>>2]|0;if((l|0)==(t[S>>2]|0)){if(!((wc(y)|0)<<24>>24)){l=1;o=280;break e}l=t[I>>2]|0}t[I>>2]=l+1;i[l>>0]=0;t[P>>2]=t[Z>>2];t[Z>>2]=t[I>>2]}t[k>>2]=u;J5[t[x>>2]&15](t[de>>2]|0,t[t[R>>2]>>2]|0,t[t[J>>2]>>2]|0,t[P>>2]|0,A,(f|0)==38&1);nc(y);l=b}else o=275}else o=275;break}case 12:{if(i[z>>0]|0){l=t[b+64>>2]|0;l=dc(e,b,u+l|0,(t[Le>>2]|0)+(0-l)|0)|0;A=t[D>>2]|0;r=t[j>>2]|0;if(A){t[A+4>>2]=r;t[(t[D>>2]|0)+8>>2]=(t[U>>2]|0)-(t[j>>2]|0);t[j>>2]=t[U>>2];if(!(t[M>>2]|0))A=1;else{t[k>>2]=u;A=t[D>>2]|0;H5[t[M>>2]&0](t[de>>2]|0,t[A>>2]|0,n[A+33>>0]|0,t[A+4>>2]|0,t[A+8>>2]|0,t[Ie>>2]|0,0,0,0);A=0}}else{t[U>>2]=r;A=1}if(!l){l=A;o=274}else{o=280;break e}}else o=275;break}case 5:{i[L>>0]=0;i[ge>>0]=1;if(!(t[E>>2]|0)){t[B>>2]=75395;l=1}else{o=t[b+64>>2]|0;o=tc(y,b,u+o|0,(t[Le>>2]|0)+(0-o)|0)|0;t[B>>2]=o;if(!o){l=1;o=280;break e}t[Z>>2]=t[I>>2];l=0}if((((i[ye>>0]|0)==0?(t[N>>2]|0)==0:0)?(me=t[Ce>>2]|0,me|0):0)?(I5[me&63](t[de>>2]|0)|0)==0:0){l=22;o=280;break e}if(!(t[D>>2]|0)){A=fc(e,Q,75395,36)|0;t[D>>2]=A;if(!A){l=1;o=280;break e}t[A+24>>2]=0;o=133}else o=133;break}case 13:{l=1;o=133;break}case 15:{if(((i[z>>0]|0)!=0?(t[D>>2]|0)!=0:0)?(t[M>>2]|0)!=0:0){t[k>>2]=u;l=t[D>>2]|0;H5[t[M>>2]&0](t[de>>2]|0,t[l>>2]|0,n[l+33>>0]|0,0,0,t[l+20>>2]|0,t[l+16>>2]|0,t[l+24>>2]|0,0);l=b}else o=275;break}case 16:{if((i[z>>0]|0)!=0?(t[D>>2]|0)!=0:0){f=tc(W,b,u,t[Le>>2]|0)|0;t[(t[D>>2]|0)+28>>2]=f;if(!(t[(t[D>>2]|0)+28>>2]|0)){l=1;o=280;break e}t[F>>2]=t[Y>>2];if(t[T>>2]|0){t[k>>2]=u;l=t[D>>2]|0;J5[t[T>>2]&15](t[de>>2]|0,t[l>>2]|0,t[l+20>>2]|0,t[l+16>>2]|0,t[l+24>>2]|0,t[l+28>>2]|0);l=b;break A}if(t[M>>2]|0){t[k>>2]=u;l=t[D>>2]|0;H5[t[M>>2]&0](t[de>>2]|0,t[l>>2]|0,0,0,0,t[l+20>>2]|0,t[l+16>>2]|0,t[l+24>>2]|0,t[l+28>>2]|0);l=b}else o=275}else o=275;break}case 9:{if(L5[t[b+44>>2]&63](b,u,t[Le>>2]|0)|0){t[D>>2]=0;o=275;break A}if(!(i[z>>0]|0)){t[Y>>2]=t[F>>2];t[D>>2]=0;o=275;break A}l=tc(W,b,u,t[Le>>2]|0)|0;if(!l){l=1;o=280;break e}A=fc(e,d,l,36)|0;t[D>>2]=A;if(!A){l=1;o=280;break e}if((t[A>>2]|0)!=(l|0)){t[Y>>2]=t[F>>2];t[D>>2]=0;o=275;break A}t[F>>2]=t[Y>>2];t[(t[D>>2]|0)+24>>2]=0;i[(t[D>>2]|0)+33>>0]=0;if(!(t[O>>2]|0))l=(t[be>>2]|0)!=0;else l=1;i[(t[D>>2]|0)+34>>0]=(l^1)&1;if(!(t[M>>2]|0))o=275;else l=b;break}case 10:{if(!(i[z>>0]|0)){t[Y>>2]=t[F>>2];t[D>>2]=0;o=275;break A}l=tc(W,b,u,t[Le>>2]|0)|0;if(!l){l=1;o=280;break e}A=fc(e,Q,l,36)|0;t[D>>2]=A;if(!A){l=1;o=280;break e}if((t[A>>2]|0)!=(l|0)){t[Y>>2]=t[F>>2];t[D>>2]=0;o=275;break A}t[F>>2]=t[Y>>2];t[(t[D>>2]|0)+24>>2]=0;i[(t[D>>2]|0)+33>>0]=1;if(!(t[O>>2]|0))l=(t[be>>2]|0)!=0;else l=1;i[(t[D>>2]|0)+34>>0]=(l^1)&1;if(!(t[M>>2]|0))o=275;else l=b;break}case 18:{t[_>>2]=0;t[q>>2]=0;if(!(t[K>>2]|0))o=275;else{u=tc(y,b,u,t[Le>>2]|0)|0;t[q>>2]=u;if(!u){l=1;o=280;break e}t[Z>>2]=t[I>>2];l=b}break}case 21:{if(!(Q5[t[b+52>>2]&127](b,u,t[Le>>2]|0,w)|0)){l=32;o=280;break e}if(!(t[q>>2]|0))o=275;else{l=t[b+64>>2]|0;l=tc(y,b,u+l|0,(t[Le>>2]|0)+(0-l)|0)|0;if(!l){l=1;o=280;break e}lc(l);t[_>>2]=l;t[Z>>2]=t[I>>2];l=b}break}case 19:{if((t[q>>2]|0)!=0?(t[K>>2]|0)!=0:0){l=t[b+64>>2]|0;l=tc(y,b,u+l|0,(t[Le>>2]|0)+(0-l)|0)|0;if(!l){l=1;o=280;break e}t[k>>2]=u;x5[t[K>>2]&15](t[de>>2]|0,t[q>>2]|0,t[Ie>>2]|0,l,t[_>>2]|0);l=0}else l=1;nc(y);o=274;break}case 20:{if((t[_>>2]|0)!=0?(t[K>>2]|0)!=0:0){t[k>>2]=u;x5[t[K>>2]&15](t[de>>2]|0,t[q>>2]|0,t[Ie>>2]|0,0,t[_>>2]|0);l=0}else l=1;nc(y);o=274;break}case 58:{if(t[m>>2]|0)vc(e,b,u,t[Le>>2]|0);l=gc(e,b,Le,a,s,c)|0;if(l|0){o=280;break e}if(!(t[Le>>2]|0)){o=189;break e}else l=b;break}case 44:{l=t[ee>>2]|0;do{if((t[$>>2]|0)>>>0>=l>>>0){if(!l){f=t[fe>>2]|0;t[ee>>2]=32;f=I5[f&63](32)|0;t[Ae>>2]=f;if(!f){o=198;break e}else break}r=t[le>>2]|0;f=t[Ae>>2]|0;l=l<<1;t[ee>>2]=l;l=Z5[r&127](f,l)|0;if(!l){o=193;break e}t[Ae>>2]=l;l=t[ie>>2]|0;if(l|0){l=Z5[t[le>>2]&127](l,t[ee>>2]<<2)|0;if(!l){l=1;o=280;break e}t[ie>>2]=l}}}while(0);i[(t[Ae>>2]|0)+(t[$>>2]|0)>>0]=0;if(i[re>>0]|0){l=pc(e)|0;if((l|0)<0){l=1;o=280;break e}t[(t[ie>>2]|0)+(t[ae>>2]<<2)>>2]=l;t[ae>>2]=(t[ae>>2]|0)+1;t[(t[te>>2]|0)+(l*28|0)>>2]=6;if(t[ne>>2]|0)l=b;else o=275}else o=275;break}case 50:{l=(t[Ae>>2]|0)+(t[$>>2]|0)|0;if((i[l>>0]|0)==124){l=2;o=280;break e}i[l>>0]=44;if((i[re>>0]|0)!=0?(t[ne>>2]|0)!=0:0)l=b;else o=275;break}case 49:{r=t[Ae>>2]|0;A=t[$>>2]|0;l=i[r+A>>0]|0;if(l<<24>>24==44){l=2;o=280;break e}if(l<<24>>24==0&(i[re>>0]|0)!=0?(Ze=(t[te>>2]|0)+((t[(t[ie>>2]|0)+((t[ae>>2]|0)+-1<<2)>>2]|0)*28|0)|0,(t[Ze>>2]|0)!=3):0){t[Ze>>2]=5;l=(t[ne>>2]|0)==0&1;r=t[Ae>>2]|0;A=t[$>>2]|0}else l=1;i[r+A>>0]=124;o=274;break}case 59:case 60:{i[ge>>0]=1;if(t[N>>2]|0){A=t[b+64>>2]|0;A=tc(W,b,u+A|0,(t[Le>>2]|0)+(0-A)|0)|0;if(!A){l=1;o=280;break e}r=fc(e,Q,A,0)|0;t[Y>>2]=t[F>>2];do{if(t[se>>2]|0){if(!(i[ye>>0]|0)){if(i[ge>>0]|0){o=219;break}}else if(t[be>>2]|0){o=219;break}if(!r){l=11;o=280;break e}if(!(i[r+34>>0]|0)){l=24;o=280;break e}}else o=219}while(0);if((o|0)==219?(o=0,(r|0)==0):0){i[z>>0]=i[ye>>0]|0;if((f|0)!=60){o=275;break A}l=t[ce>>2]|0;if(!l){o=275;break A}V5[l&127](t[de>>2]|0,A,1);l=b;break A}l=r+32|0;if(i[l>>0]|0){l=12;o=280;break e}if(t[r+4>>2]|0){l=Ec(e,r,(f|0)==60&1)|0;A=(l|0)==0;if(A){l=(A^1)&1;o=274;break A}else{o=280;break e}}if(!(t[pe>>2]|0)){i[z>>0]=i[ye>>0]|0;o=275;break A}i[Ee>>0]=0;i[l>>0]=1;f=(D5[t[pe>>2]&127](t[Be>>2]|0,0,t[r+20>>2]|0,t[r+16>>2]|0,t[r+24>>2]|0)|0)==0;i[l>>0]=0;if(f){l=21;o=280;break e}A=i[ye>>0]|0;if(!(i[Ee>>0]|0)){i[z>>0]=A;l=b;break A}else l=0}else{A=i[ye>>0]|0;i[z>>0]=A;l=1}if((A<<24>>24==0?(Ge=t[Ce>>2]|0,(Ge|0)!=0):0)?(I5[Ge&63](t[de>>2]|0)|0)==0:0){l=22;o=280;break e}else o=274;break}case 40:{if(!(t[ne>>2]|0))o=275;else{u=cc(e,b,u,t[Le>>2]|0)|0;t[R>>2]=u;if(!u){l=1;o=280;break e}t[ae>>2]=0;t[oe>>2]=0;i[re>>0]=1;l=b}break}case 42:case 41:{if(!(i[re>>0]|0))o=275;else{if(!(t[ne>>2]|0))l=1;else{l=I5[t[fe>>2]&63](20)|0;if(!l){l=1;o=280;break e}o=l+4|0;t[o>>2]=0;t[o+4>>2]=0;t[o+8>>2]=0;t[o+12>>2]=0;t[l>>2]=(f|0)==41?2:1;t[k>>2]=u;V5[t[ne>>2]&127](t[de>>2]|0,t[t[R>>2]>>2]|0,l);l=0}i[re>>0]=0;o=274}break}case 43:{if((i[re>>0]|0)!=0?(t[(t[te>>2]|0)+((t[(t[ie>>2]|0)+((t[ae>>2]|0)+-1<<2)>>2]|0)*28|0)>>2]=3,(t[ne>>2]|0)!=0):0)l=b;else o=275;break}case 51:{A=0;o=247;break}case 53:{A=1;o=247;break}case 52:{A=2;o=247;break}case 54:{A=3;o=247;break}case 45:{r=0;o=258;break}case 47:{r=1;o=258;break}case 46:{r=2;o=258;break}case 48:{r=3;o=258;break}case 55:{if(!(yc(e,b,u,t[Le>>2]|0)|0)){l=1;o=280;break e}else l=b;break}case 56:{if(!(Cc(e,b,u,t[Le>>2]|0)|0)){l=1;o=280;break e}else l=b;break}case 0:{if((A|0)==14)l=b;else o=275;break}case 3:{if(!(t[E>>2]|0))o=275;else l=b;break}case 11:{if((i[z>>0]|0)!=0?(t[M>>2]|0)!=0:0)l=b;else o=275;break}case 17:{if(!(t[K>>2]|0))o=275;else l=b;break}case 33:{if((i[z>>0]|0)!=0?(t[x>>2]|0)!=0:0)l=b;else o=275;break}case 39:{if(!(t[ne>>2]|0))o=275;else l=b;break}default:o=275}}while(0);if((o|0)==33)if(!(Q5[t[b+52>>2]&127](b,u,t[Le>>2]|0,w)|0)){l=32;o=280;break}else{l=1;o=34}else if((o|0)==80){o=0;if((i[z>>0]|0)!=0?(t[x>>2]|0)!=0:0)l=b;else o=275}else if((o|0)==133){o=0;if((i[z>>0]|0)!=0?(t[D>>2]|0)!=0:0){A=t[b+64>>2]|0;A=tc(W,b,u+A|0,(t[Le>>2]|0)+(0-A)|0)|0;t[(t[D>>2]|0)+16>>2]=A;A=t[D>>2]|0;if(!(t[A+16>>2]|0)){l=1;o=280;break}t[A+20>>2]=t[Ie>>2];t[F>>2]=t[Y>>2];if((f|0)==13&(t[M>>2]|0)!=0)l=b;else o=274}else o=274}else if((o|0)==247){o=0;if(i[re>>0]|0){l=t[Le>>2]|0;if(A)l=l+(0-(t[b+64>>2]|0))|0;r=pc(e)|0;if((r|0)<0){l=1;o=280;break}t[(t[te>>2]|0)+(r*28|0)>>2]=4;t[(t[te>>2]|0)+(r*28|0)+4>>2]=A;l=cc(e,b,u,l)|0;if(!l){l=1;o=280;break}A=t[l>>2]|0;t[(t[te>>2]|0)+(r*28|0)+8>>2]=A;l=0;do{f=l;l=l+1|0}while((i[A+f>>0]|0)!=0);t[ue>>2]=(t[ue>>2]|0)+l;if(t[ne>>2]|0)l=b;else o=275}else o=275}else if((o|0)==258)if(i[re>>0]|0){A=(t[ne>>2]|0)==0;l=A&1;o=(t[ae>>2]|0)+-1|0;t[ae>>2]=o;t[(t[te>>2]|0)+((t[(t[ie>>2]|0)+(o<<2)>>2]|0)*28|0)+4>>2]=r;if(!(t[ae>>2]|0)){if(!A){A=Bc(e)|0;if(!A){l=1;o=280;break}t[k>>2]=u;V5[t[ne>>2]&127](t[de>>2]|0,t[t[R>>2]>>2]|0,A)}i[re>>0]=0;t[ue>>2]=0;o=274}else o=274}else o=275;if((o|0)==34){o=0;if((i[z>>0]|0)!=0?(t[D>>2]|0)!=0:0){A=t[b+64>>2]|0;A=tc(W,b,u+A|0,(t[Le>>2]|0)+(0-A)|0)|0;if(!A){l=1;o=280;break}lc(A);t[(t[D>>2]|0)+24>>2]=A;t[F>>2]=t[Y>>2];if((f|0)==14&(t[M>>2]|0)!=0)l=b;else o=274}else o=274}if((o|0)==274){o=0;if(!(l<<24>>24))l=b;else o=275}if((o|0)==275){o=0;if(!(t[m>>2]|0))l=b;else{vc(e,b,u,t[Le>>2]|0);l=b}}switch(t[p>>2]|0){case 3:{o=278;break e}case 2:{l=35;o=280;break e}default:{}}A=t[Le>>2]|0;b=l;u=A;A=Q5[t[l>>2]&127](l,A,a,Le)|0}e:switch(o|0){case 7:{t[s>>2]=u;l=0;break}case 9:{t[w>>2]=r;l=4;break}case 10:{l=(b|0)==(t[v>>2]|0);if(!l?(i[(t[be>>2]|0)+20>>0]|0)==0:0){t[s>>2]=u;l=0;break}if((i[e+484>>0]|0)!=0|l^1)if((D5[t[we>>2]&127](we,-4,a,a,b)|0)==-1)l=29;else{t[s>>2]=u;l=0}else l=3;break}case 58:{do{if((i[L>>0]|0?(Qe=i[ge>>0]|0,i[ge>>0]=1,t[N>>2]|0):0)?t[pe>>2]|0:0){l=fc(e,Q,75395,36)|0;if(!l){l=1;break e}Le=l+20|0;t[Le>>2]=t[Ie>>2];i[Ee>>0]=0;if(!(D5[t[pe>>2]&127](t[Be>>2]|0,0,t[Le>>2]|0,t[l+16>>2]|0,t[l+24>>2]|0)|0)){l=21;break e}if(!(i[Ee>>0]|0)){i[ge>>0]=Qe;break}if(((i[ye>>0]|0)==0?(De=t[Ce>>2]|0,De|0):0)?(I5[De&63](t[de>>2]|0)|0)==0:0){l=22;break e}}}while(0);t[e+276>>2]=58;l=sc(e,u,a,s)|0;break}case 184:{l=(A|0)==28?10:(A|0)==12?17:2;break}case 189:{t[e+276>>2]=59;l=0;break}case 193:{t[ee>>2]=(t[ee>>2]|0)>>>1;l=1;break}case 198:{t[ee>>2]=0;l=1;break}case 278:{t[s>>2]=t[Le>>2];l=0;break}case 280:break}h=ze;return l|0}function ac(e,A,r,a){e=e|0;A=A|0;r=r|0;a=a|0;var n=0,f=0,l=0,s=0,c=0,o=0,u=0,b=0,w=0,k=0;k=h;h=h+32|0;w=k+16|0;o=k+12|0;l=k+8|0;s=k+4|0;c=k;t[w>>2]=0;t[o>>2]=0;t[l>>2]=0;t[c>>2]=-1;u=e+144|0;b=e+284|0;n=(A|0)!=0;e:do{if(W5[(i[e+232>>0]<<24>>24?2:1)&3](A,t[u>>2]|0,r,a,b,l,s,w,o,c)|0){if((t[c>>2]|0)==1&(n^1)?(i[(t[e+352>>2]|0)+130>>0]=1,f=e+488|0,(t[f>>2]|0)==1):0)t[f>>2]=0;f=e+140|0;if(!(t[f>>2]|0))if(!(t[e+80>>2]|0)){r=0;A=0}else{vc(e,t[u>>2]|0,r,a);r=0;A=0}else{A=t[w>>2]|0;if(!A)A=0;else{a=t[u>>2]|0;A=tc(e+436|0,a,A,A+(Z5[t[a+28>>2]&127](a,A)|0)|0)|0;if(!A){A=1;break}t[e+452>>2]=t[e+448>>2]}n=t[l>>2]|0;if(n){l=t[u>>2]|0;n=tc(e+436|0,l,n,(t[s>>2]|0)+(0-(t[l+64>>2]|0))|0)|0;if(!n){A=1;break}}else n=0;R5[t[f>>2]&31](t[e+4>>2]|0,n,A,t[c>>2]|0);r=n}do{if(!(t[e+228>>2]|0)){n=t[o>>2]|0;f=n;if(n|0){c=t[n+64>>2]|0;o=t[u>>2]|0;if((c|0)==(t[o+64>>2]|0)?(c|0)!=2|(n|0)==(o|0):0){t[u>>2]=f;break}t[b>>2]=t[w>>2];A=19;break e}n=t[w>>2]|0;if(n|0){f=e+436|0;if(!A){A=t[u>>2]|0;A=tc(f,A,n,n+(Z5[t[A+28>>2]&127](A,n)|0)|0)|0;if(!A){A=1;break e}}A=Kc(e,A)|0;nc(f);if((A|0)!=18)break e;t[b>>2]=t[w>>2];A=18;break e}}}while(0);if((A|0)!=0|(r|0)!=0){nc(e+436|0);A=0}else A=0}else A=n?31:30}while(0);h=k;return A|0}function tc(e,A,r,a){e=e|0;A=A|0;r=r|0;a=a|0;do{if(!(bc(e,A,r,a)|0))A=0;else{r=e+12|0;A=t[r>>2]|0;if((A|0)==(t[e+8>>2]|0)){if(!((wc(e)|0)<<24>>24)){A=0;break}A=t[r>>2]|0}t[r>>2]=A+1;i[A>>0]=0;A=t[e+16>>2]|0}}while(0);return A|0}function nc(e){e=e|0;var A=0,r=0,i=0,a=0,n=0;i=e+4|0;A=t[i>>2]|0;e:do{if(!A){t[i>>2]=t[e>>2];A=e}else{r=t[e>>2]|0;while(1){if(!r){A=e;break e}n=t[r>>2]|0;t[r>>2]=A;t[i>>2]=r;a=r;r=n;A=a}}}while(0);t[A>>2]=0;t[e+16>>2]=0;t[e+12>>2]=0;t[e+8>>2]=0;return}function fc(e,A,r,a){e=e|0;A=A|0;r=r|0;a=a|0;var f=0,l=0,s=0,c=0,o=0,u=0,b=0,h=0,w=0,k=0,d=0,v=0,g=0,m=0,p=0,E=0,B=0;E=A+8|0;e:do{if(!(t[E>>2]|0))if(a){i[A+4>>0]=6;t[E>>2]=64;f=A+16|0;l=I5[t[t[f>>2]>>2]&63](256)|0;t[A>>2]=l;if(!l){t[E>>2]=0;f=0;break}else{z6(l|0,0,256)|0;s=_c(e,r)|0;s=(t[E>>2]|0)+-1&s;l=A;h=27;break}}else f=0;else{p=_c(e,r)|0;c=t[E>>2]|0;s=c+-1|0;o=t[A>>2]|0;u=p&0-c;m=A+4|0;b=s>>>2;l=0;s=s&p;while(1){f=t[o+(s<<2)>>2]|0;if(!f)break;if((qc(r,t[f>>2]|0)|0)<<24>>24)break e;if(!(l<<24>>24))f=(u>>>((n[m>>0]|0)+-1|0)&b|1)&255;else f=l;g=f&255;l=f;s=s-g+(s>>>0>>0?c:0)|0}if(a){l=i[m>>0]|0;f=l&255;if(!((t[A+12>>2]|0)>>>(f+-1|0))){f=A+16|0;l=A;h=27;break}k=f+1&255;s=l+1&255;v=1<>2]>>2]&63](l)|0;if(g){z6(g|0,0,l|0)|0;w=0-v|0;b=s+-1|0;h=d>>>2;u=0;while(1){if(u>>>0>=(t[E>>2]|0)>>>0)break;l=t[(t[A>>2]|0)+(u<<2)>>2]|0;if(l|0){l=_c(e,t[l>>2]|0)|0;c=((l&w)>>>b&h|1)&255;l=l&d;s=0;while(1){o=g+(l<<2)|0;if(!(t[o>>2]|0))break;o=s<<24>>24==0?c:s;B=o&255;l=l+(l>>>0>>0?v:0)-B|0;s=o}t[o>>2]=t[(t[A>>2]|0)+(u<<2)>>2]}u=u+1|0}F5[t[(t[f>>2]|0)+8>>2]&127](t[A>>2]|0);t[A>>2]=g;i[m>>0]=k;t[E>>2]=v;c=((p&w)>>>b&h|1)&255;l=d&p;s=0;while(1){if(!(t[g+(l<<2)>>2]|0)){s=l;l=A;h=27;break e}B=s<<24>>24==0?c:s;E=B&255;l=l+(l>>>0>>0?v:0)-E|0;s=B}}else f=0}else f=0}}while(0);if((h|0)==27){f=I5[t[t[f>>2]>>2]&63](a)|0;t[(t[l>>2]|0)+(s<<2)>>2]=f;f=t[(t[l>>2]|0)+(s<<2)>>2]|0;if(!f)f=0;else{z6(f|0,0,a|0)|0;t[t[(t[l>>2]|0)+(s<<2)>>2]>>2]=r;f=A+12|0;t[f>>2]=(t[f>>2]|0)+1;f=t[(t[l>>2]|0)+(s<<2)>>2]|0}}return f|0}function lc(e){e=e|0;var A=0,r=0,a=0;a=e;A=e;while(1){r=i[a>>0]|0;if(!(r<<24>>24))break;switch(r<<24>>24|0){case 10:case 13:case 32:{if((A|0)!=(e|0)){if((i[A+-1>>0]|0)!=32){i[A>>0]=32;A=A+1|0}}else A=e;break}default:{i[A>>0]=r;A=A+1|0}}a=a+1|0}if((A|0)!=(e|0)){e=A+-1|0;e=(i[e>>0]|0)==32?e:A}i[e>>0]=0;return}function sc(e,A,r,a){e=e|0;A=A|0;r=r|0;a=a|0;A=Gc(e,0,t[e+144>>2]|0,A,r,a,(i[e+480>>0]|0)==0&1)|0;if((A|0)==0?(Vc(e)|0)<<24>>24==0:0)A=1;return A|0}function cc(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0,n=0;n=t[e+352>>2]|0;A=tc(n+80|0,A,r,i)|0;do{if((A|0)!=0?(a=fc(e,n+20|0,A,24)|0,(a|0)!=0):0)if((t[a>>2]|0)==(A|0)){t[n+96>>2]=t[n+92>>2];if(!(Rc(e,a)|0)){a=0;break}}else t[n+92>>2]=t[n+96>>2];else a=0}while(0);return a|0}function oc(e,A,r,a){e=e|0;A=A|0;r=r|0;a=a|0;var n=0,f=0,l=0,s=0,c=0,o=0,u=0,b=0;u=t[e+352>>2]|0;c=u+80|0;b=u+92|0;f=t[b>>2]|0;o=u+88|0;if((f|0)==(t[o>>2]|0))if(!((wc(c)|0)<<24>>24))n=0;else{f=t[b>>2]|0;l=4}else l=4;e:do{if((l|0)==4){t[b>>2]=f+1;i[f>>0]=0;A=tc(c,A,r,a)|0;if((A|0)!=0?(s=A+1|0,n=fc(e,u+40|0,s,12)|0,(n|0)!=0):0){if((t[n>>2]|0)!=(s|0)){t[b>>2]=t[u+96>>2];break}f=t[b>>2]|0;l=u+96|0;t[l>>2]=f;if(i[e+232>>0]|0){r=i[s>>0]|0;A:do{if(r<<24>>24==120)if((((i[A+2>>0]|0)==109?(i[A+3>>0]|0)==108:0)?(i[A+4>>0]|0)==110:0)?(i[A+5>>0]|0)==115:0){switch(i[A+6>>0]|0){case 0:{f=u+152|0;break}case 58:{f=fc(e,u+60|0,A+7|0,8)|0;break}default:{a=0;A=120;break A}}t[n+4>>2]=f;i[n+9>>0]=1;break e}else{a=0;A=120}else{a=0;A=r}}while(0);A:while(1){switch(A<<24>>24){case 0:break e;case 58:{r=0;break A}default:{}}A=a+1|0;a=A;A=i[s+A>>0]|0}while(1){A=(f|0)==(t[o>>2]|0);if((r|0)>=(a|0))break;if(A){if(!((wc(c)|0)<<24>>24)){n=0;break e}f=t[b>>2]|0}A=i[s+r>>0]|0;t[b>>2]=f+1;i[f>>0]=A;r=r+1|0;f=t[b>>2]|0}if(A){if(!((wc(c)|0)<<24>>24)){n=0;break}f=t[b>>2]|0}t[b>>2]=f+1;i[f>>0]=0;f=fc(e,u+60|0,t[l>>2]|0,8)|0;t[n+4>>2]=f;if(f){A=t[l>>2]|0;if((t[f>>2]|0)==(A|0)){t[l>>2]=t[b>>2];break}else{t[b>>2]=A;break}}else n=0}}else n=0}}while(0);return n|0}function uc(e,A){e=e|0;A=A|0;var r=0,a=0,n=0,f=0,l=0;n=e+12|0;f=e+8|0;while(1){r=i[A>>0]|0;if(!(r<<24>>24)){l=7;break}a=t[n>>2]|0;if((a|0)==(t[f>>2]|0)){if(!((wc(e)|0)<<24>>24)){A=0;break}a=t[n>>2]|0;r=i[A>>0]|0}t[n>>2]=a+1;i[a>>0]=r;A=A+1|0}if((l|0)==7)A=t[e+16>>2]|0;return A|0}function bc(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0,n=0,f=0,l=0;l=h;h=h+16|0;f=l;t[f>>2]=r;n=e+12|0;if((t[n>>2]|0)==0?(wc(e)|0)<<24>>24==0:0)r=0;else a=3;e:do{if((a|0)==3){r=A+56|0;a=e+8|0;while(1){if((D5[t[r>>2]&127](A,f,i,n,t[a>>2]|0)|0)>>>0<2)break;if(!((wc(e)|0)<<24>>24)){r=0;break e}}r=t[e+16>>2]|0}}while(0);h=l;return r|0}function hc(e,A,r,a,n,f){e=e|0;A=A|0;r=r|0;a=a|0;n=n|0;f=f|0;var l=0,s=0,c=0,o=0,u=0,b=0;l=a<<24>>24==0;b=e+12|0;u=t[b>>2]|0;e:do{if(!(l&(n|0)==0)){s=e+20|0;a=0;while(1){if((a|0)>=(u|0))break;if((t[(t[s>>2]|0)+(a*12|0)>>2]|0)==(A|0)){a=1;break e}else a=a+1|0}if((!l?(c=e+8|0,(t[c>>2]|0)==0):0)?(i[A+9>>0]|0)==0:0){t[c>>2]=A;o=9}else o=9}else o=9}while(0);e:do{if((o|0)==9){s=e+16|0;do{if((u|0)==(t[s>>2]|0))if(!u){t[s>>2]=8;a=I5[t[f+12>>2]&63](96)|0;t[e+20>>2]=a;if(a|0)break;t[s>>2]=0;a=0;break e}else{l=e+20|0;a=Z5[t[f+16>>2]&127](t[l>>2]|0,u*24|0)|0;if(!a){a=0;break e}t[s>>2]=u<<1;t[l>>2]=a;break}else a=t[e+20>>2]|0}while(0);f=t[b>>2]|0;t[a+(f*12|0)>>2]=A;t[a+(f*12|0)+8>>2]=n;i[a+(f*12|0)+4>>0]=r;if(!(r<<24>>24))i[A+8>>0]=1;t[b>>2]=(t[b>>2]|0)+1;a=1}}while(0);return a|0}function wc(e){e=e|0;var A=0,r=0,i=0,a=0,n=0,f=0,l=0,s=0,c=0,o=0;A=e+4|0;i=t[A>>2]|0;do{if(i){a=e+16|0;n=t[a>>2]|0;if(!n){t[e>>2]=i;t[A>>2]=t[i>>2];t[i>>2]=0;o=t[e>>2]|0;A=o+8|0;t[a>>2]=A;t[e+8>>2]=(t[o+4>>2]|0)+(o+8);t[e+12>>2]=A;A=1;break}r=e+8|0;if(((t[r>>2]|0)-n|0)<(t[i+4>>2]|0)){c=t[i>>2]|0;t[i>>2]=t[e>>2];o=t[A>>2]|0;t[e>>2]=o;t[A>>2]=c;A=t[a>>2]|0;Q6(o+8|0,A|0,(t[r>>2]|0)-A|0)|0;A=t[e>>2]|0;o=e+12|0;t[o>>2]=(t[o>>2]|0)-(t[a>>2]|0)+(A+8);t[a>>2]=A+8;t[r>>2]=(t[A+4>>2]|0)+(A+8);A=1}else f=6}else f=6}while(0);e:do{if((f|0)==6){i=t[e>>2]|0;c=e+16|0;do{if(!i){l=c;A=t[c>>2]|0}else{s=t[c>>2]|0;A=s;if((s|0)!=(i+8|0)){l=c;break}a=e+8|0;n=(t[a>>2]|0)-A<<1;f=e+12|0;r=(t[f>>2]|0)-A|0;if((n|0)<0){A=0;break e}A=Oc(n)|0;if(!A){A=0;break e}A=Z5[t[(t[e+20>>2]|0)+4>>2]&127](i,A)|0;if(!A){A=0;break e}t[e>>2]=A;t[A+4>>2]=n;A=t[e>>2]|0;t[f>>2]=A+8+r;t[c>>2]=A+8;t[a>>2]=A+8+n;A=1;break e}}while(0);s=e+8|0;A=(t[s>>2]|0)-A|0;if((A|0)>=0){if((A|0)>=1024){A=A<<1;if((A|0)<0){A=0;break}}else A=1024;r=Oc(A)|0;if((r|0)!=0?(o=I5[t[t[e+20>>2]>>2]&63](r)|0,(o|0)!=0):0){t[o+4>>2]=A;t[o>>2]=t[e>>2];t[e>>2]=o;f=e+12|0;e=t[f>>2]|0;i=t[c>>2]|0;r=e;a=i;if((e|0)==(i|0)){n=o+8|0;i=a}else{n=o+8|0;Q6(n|0,i|0,r-a|0)|0;i=t[l>>2]|0;r=t[f>>2]|0}t[f>>2]=o+8+(r-i);t[c>>2]=n;t[s>>2]=o+8+A;A=1}else A=0}else A=0}}while(0);return A|0}function kc(e,A,r,a,n,f){e=e|0;A=A|0;r=r|0;a=a|0;n=n|0;f=f|0;var l=0;e=Tc(e,A,r,a,n,f)|0;do{if(!e){A=f+12|0;e=t[A>>2]|0;if((r<<24>>24==0?(t[f+16>>2]|0)!=(e|0):0)?(l=e+-1|0,(i[l>>0]|0)==32):0){t[A>>2]=l;e=l}if((e|0)==(t[f+8>>2]|0)){if(!((wc(f)|0)<<24>>24)){e=1;break}e=t[A>>2]|0}t[A>>2]=e+1;i[e>>0]=0;e=0}}while(0);return e|0}function dc(e,A,r,a){e=e|0;A=A|0;r=r|0;a=a|0;var n=0,f=0,l=0,s=0,c=0,o=0,u=0,b=0,w=0,k=0,d=0,v=0,g=0,m=0,p=0,E=0,B=0,y=0,C=0,I=0,Z=0,G=0,L=0,Q=0,D=0,z=0,W=0;W=h;h=h+16|0;Z=W;G=W+4|0;n=t[e+352>>2]|0;L=n+104|0;D=e+272|0;Q=t[D>>2]|0;t[D>>2]=1;if((t[L>>2]|0)==0?(wc(L)|0)<<24>>24==0:0)n=1;else{u=A+20|0;b=e+484|0;w=e+144|0;k=e+412|0;d=A+64|0;v=n+132|0;g=e+428|0;m=e+424|0;p=e+224|0;E=e+112|0;o=n+130|0;B=n+128|0;y=n+131|0;C=e+116|0;I=n+112|0;s=n+116|0;c=A+40|0;e:while(1){A:do{switch(Q5[t[u>>2]&127](A,r,a,Z)|0){case-4:{n=0;break e}case-1:{z=37;break e}case 0:{z=39;break e}case 28:{if((i[b>>0]|0)==0?(t[w>>2]|0)==(A|0):0){z=19;break e}n=t[d>>2]|0;n=tc(k,A,r+n|0,(t[Z>>2]|0)+(0-n)|0)|0;if(!n){n=1;break e}f=fc(e,v,n,0)|0;t[m>>2]=t[g>>2];if(!f){z=9;break e}l=f+32|0;if(i[l>>0]|0){z=11;break e}n=f+16|0;if(!(t[n>>2]|0)){i[l>>0]=1;n=t[f+4>>2]|0;n=dc(e,t[p>>2]|0,n,n+(t[f+8>>2]|0)|0)|0;i[l>>0]=0;if(!n)break A;else break e}if(t[E>>2]|0){i[y>>0]=0;i[l>>0]=1;f=(D5[t[E>>2]&127](t[C>>2]|0,0,t[f+20>>2]|0,t[n>>2]|0,t[f+24>>2]|0)|0)==0;i[l>>0]=0;if(f){n=21;break e}if(i[y>>0]|0)break A}i[B>>0]=i[o>>0]|0;break}case 6:case 9:{if(!(bc(L,A,r,t[Z>>2]|0)|0)){n=1;break e}break}case-3:{t[Z>>2]=r+(t[d>>2]|0);z=22;break}case 7:{z=22;break}case 10:{n=Z5[t[c>>2]&127](A,r)|0;if((n|0)<0){z=27;break e}f=vo(n,G)|0;r=0;while(1){if((r|0)>=(f|0))break;n=t[s>>2]|0;if((t[I>>2]|0)==(n|0)){if(!((wc(L)|0)<<24>>24)){n=1;z=35;break e}n=t[s>>2]|0}l=i[G+r>>0]|0;t[s>>2]=n+1;i[n>>0]=l;r=r+1|0}break}default:{z=41;break e}}}while(0);if((z|0)==22){z=0;n=t[s>>2]|0;if((t[I>>2]|0)==(n|0)){if(!((wc(L)|0)<<24>>24)){n=1;break}n=t[s>>2]|0}t[s>>2]=n+1;i[n>>0]=10}r=t[Z>>2]|0}if((z|0)==9){i[B>>0]=i[o>>0]|0;n=0}else if((z|0)==11)if((t[w>>2]|0)==(A|0)){t[e+284>>2]=r;n=12}else n=12;else if((z|0)==19){t[e+284>>2]=r;n=10}else if((z|0)==27)if((t[w>>2]|0)==(A|0)){t[e+284>>2]=r;n=14;z=35}else{n=14;z=35}else if((z|0)==37)if((t[w>>2]|0)==(A|0)){t[e+284>>2]=r;n=4}else n=4;else if((z|0)==39)if((t[w>>2]|0)==(A|0)){t[e+284>>2]=t[Z>>2];n=4}else n=4;else if((z|0)==41)if((t[w>>2]|0)==(A|0)){t[e+284>>2]=r;n=23}else n=23;t[D>>2]=Q}h=W;return n|0}function vc(e,A,r,a){e=e|0;A=A|0;r=r|0;a=a|0;var n=0,f=0,l=0,s=0,c=0,o=0,u=0,b=0,w=0,k=0;w=h;h=h+16|0;u=w;b=w+4|0;t[u>>2]=r;if(!(i[A+68>>0]|0)){if((t[e+144>>2]|0)==(A|0)){n=e+288|0;f=e+284|0}else{f=t[e+296>>2]|0;n=f+4|0}l=e+44|0;s=A+56|0;c=e+48|0;o=e+80|0;r=e+4|0;do{t[b>>2]=t[l>>2];e=D5[t[s>>2]&127](A,u,a,b,t[c>>2]|0)|0;t[n>>2]=t[u>>2];k=t[l>>2]|0;V5[t[o>>2]&127](t[r>>2]|0,k,(t[b>>2]|0)-k|0);t[f>>2]=t[u>>2]}while(e>>>0>1)}else V5[t[e+80>>2]&127](t[e+4>>2]|0,r,a-r|0);h=w;return}function gc(e,A,r,i,a,n){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;n=n|0;var f=0,l=0,s=0,c=0,o=0,u=0;o=h;h=h+16|0;s=o;c=t[r>>2]|0;if((t[e+144>>2]|0)==(A|0)){l=e+284|0;t[l>>2]=c;f=e+288|0}else{l=t[e+296>>2]|0;f=l+4|0}t[l>>2]=c;t[r>>2]=0;u=Q5[t[A+12>>2]&127](A,c,i,s)|0;i=t[s>>2]|0;t[f>>2]=i;switch(u|0){case 42:{if(t[e+80>>2]|0){vc(e,A,c,i);i=t[s>>2]|0}t[r>>2]=i;t[a>>2]=i;i=(t[e+476>>2]|0)==2?35:0;break}case 0:{t[l>>2]=i;i=4;break}case-2:{if(!(n<<24>>24))i=6;else{t[a>>2]=c;i=0}break}case-4:case-1:{if(!(n<<24>>24))i=2;else{t[a>>2]=c;i=0}break}default:{t[l>>2]=i;i=23}}h=o;return i|0}function mc(e,A,r,a){e=e|0;A=A|0;r=r|0;a=a|0;var n=0,f=0;f=h;h=h+16|0;n=f;t[n>>2]=A;A=gc(e,t[e+144>>2]|0,n,r,a,(i[e+480>>0]|0)==0&1)|0;n=t[n>>2]|0;if(!((A|0)!=0|(n|0)==0)){t[e+276>>2]=57;A=rc(e,n,r,a)|0}h=f;return A|0}function pc(e){e=e|0;var A=0,r=0,i=0,a=0,n=0,f=0,l=0,s=0;l=t[e+352>>2]|0;s=l+184|0;if(!(t[s>>2]|0)){A=I5[t[e+12>>2]&63](t[e+464>>2]<<2)|0;t[s>>2]=A;if(!A)A=-1;else{t[A>>2]=0;r=4}}else r=4;do{if((r|0)==4){f=l+176|0;A=t[f>>2]|0;n=l+172|0;r=t[n>>2]|0;a=l+164|0;i=t[a>>2]|0;if(A>>>0>>0)n=i;else{if(!i){A=I5[t[e+12>>2]&63](896)|0;if(!A){A=-1;break}else{r=A;A=32}}else{A=Z5[t[e+16>>2]&127](i,r*56|0)|0;if(!A){A=-1;break}r=A;A=t[n>>2]<<1}t[n>>2]=A;t[a>>2]=r;A=t[f>>2]|0;n=r}t[f>>2]=A+1;r=t[l+180>>2]|0;if(r|0){e=t[(t[s>>2]|0)+(r+-1<<2)>>2]|0;a=n+(e*28|0)+16|0;r=t[a>>2]|0;if(r|0)t[n+(r*28|0)+24>>2]=A;r=n+(e*28|0)+20|0;i=t[r>>2]|0;if(!i)t[n+(e*28|0)+12>>2]=A;t[a>>2]=A;t[r>>2]=i+1}s=n+(A*28|0)+12|0;t[s>>2]=0;t[s+4>>2]=0;t[s+8>>2]=0;t[s+12>>2]=0}}while(0);return A|0}function Ec(e,A,r){e=e|0;A=A|0;r=r|0;var a=0,n=0,f=0,l=0,s=0,c=0,o=0,u=0,b=0,w=0;w=h;h=h+16|0;u=w;b=e+300|0;a=t[b>>2]|0;if(!a){a=I5[t[e+12>>2]&63](24)|0;if(!a)a=1;else{o=a;n=4}}else{t[b>>2]=t[a+8>>2];o=a;n=4}do{if((n|0)==4){f=A+32|0;i[f>>0]=1;l=A+12|0;t[l>>2]=0;s=e+296|0;c=o+8|0;t[c>>2]=t[s>>2];t[s>>2]=o;t[o+12>>2]=A;a=e+308|0;t[o+16>>2]=t[a>>2];i[o+20>>0]=r;t[o>>2]=0;t[o+4>>2]=0;n=t[A+4>>2]|0;r=n+(t[A+8>>2]|0)|0;t[u>>2]=n;if(!(i[A+33>>0]|0))a=Gc(e,t[a>>2]|0,t[e+224>>2]|0,n,r,u,0)|0;else{A=e+224|0;a=t[A>>2]|0;a=Q5[t[a>>2]&127](a,n,r,u)|0;a=ic(e,t[A>>2]|0,n,r,a,t[u>>2]|0,u,0)|0}if(!a){a=t[u>>2]|0;if((r|0)!=(a|0)?(t[e+476>>2]|0)==3:0){t[l>>2]=a-n;t[e+276>>2]=60;a=0;break}i[f>>0]=0;t[s>>2]=t[c>>2];t[c>>2]=t[b>>2];t[b>>2]=o;a=0}}}while(0);h=w;return a|0}function Bc(e){e=e|0;var A=0,r=0,i=0,a=0,n=0;n=h;h=h+16|0;r=n+4|0;i=n;A=t[e+352>>2]|0;a=A+176|0;A=I5[t[e+12>>2]&63](((t[a>>2]|0)*20|0)+(t[A+168>>2]|0)|0)|0;if(!A)A=0;else{t[i>>2]=A+((t[a>>2]|0)*20|0);t[r>>2]=A+20;Zc(e,0,A,r,i)}h=n;return A|0}function yc(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0,n=0,f=0,l=0,s=0;s=e+64|0;if(!(t[s>>2]|0))if(!(t[e+80>>2]|0))r=1;else{vc(e,A,r,i);r=1}else{f=A+64|0;n=r+(t[f>>2]<<1)|0;r=n+(Z5[t[A+28>>2]&127](A,n)|0)|0;a=e+412|0;n=tc(a,A,n,r)|0;if((n|0)!=0?(t[e+428>>2]=t[e+424>>2],l=Z5[t[A+32>>2]&127](A,r)|0,l=tc(a,A,l,i+(0-(t[f>>2]<<1))|0)|0,(l|0)!=0):0){Ic(l);V5[t[s>>2]&127](t[e+4>>2]|0,n,l);nc(a);r=1}else r=0}return r|0}function Cc(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0,n=0,f=0;n=e+68|0;if(!(t[n>>2]|0))if(!(t[e+80>>2]|0))A=1;else{vc(e,A,r,i);A=1}else{a=e+412|0;f=t[A+64>>2]|0;A=tc(a,A,r+(f<<2)|0,i+(P(f,-3)|0)|0)|0;if(!A)A=0;else{Ic(A);M5[t[n>>2]&63](t[e+4>>2]|0,A);nc(a);A=1}}return A|0}function Ic(e){e=e|0;var A=0,r=0,a=0;e:while(1){switch(i[e>>0]|0){case 0:break e;case 13:{r=e;A=13;a=4;break e}default:{}}e=e+1|0}if((a|0)==4){while(1){if(A<<24>>24==13){i[r>>0]=10;a=e+1|0;e=(i[a>>0]|0)==10?e+2|0:a}else{i[r>>0]=A;e=e+1|0}r=r+1|0;A=i[e>>0]|0;if(!(A<<24>>24))break;else a=4}i[r>>0]=0}return}function Zc(e,A,r,a,n){e=e|0;A=A|0;r=r|0;a=a|0;n=n|0;var f=0,l=0,s=0,c=0;c=(t[e+352>>2]|0)+164|0;s=t[(t[c>>2]|0)+(A*28|0)>>2]|0;t[r>>2]=s;t[r+4>>2]=t[(t[c>>2]|0)+(A*28|0)+4>>2];if((s|0)==4){t[r+8>>2]=t[n>>2];A=t[(t[c>>2]|0)+(A*28|0)+8>>2]|0;while(1){s=i[A>>0]|0;c=t[n>>2]|0;t[n>>2]=c+1;i[c>>0]=s;if(!(i[A>>0]|0))break;else A=A+1|0}t[r+12>>2]=0;t[r+16>>2]=0}else{f=t[(t[c>>2]|0)+(A*28|0)+20>>2]|0;l=r+12|0;t[l>>2]=f;s=r+16|0;t[s>>2]=t[a>>2];t[a>>2]=(t[a>>2]|0)+(f*20|0);A=(t[c>>2]|0)+(A*28|0)+12|0;f=0;while(1){A=t[A>>2]|0;if(f>>>0>=(t[l>>2]|0)>>>0)break;Zc(e,A,(t[s>>2]|0)+(f*20|0)|0,a,n);A=(t[c>>2]|0)+(A*28|0)+24|0;f=f+1|0}t[r+8>>2]=0}return}function Gc(e,A,r,a,n,f,l){e=e|0;A=A|0;r=r|0;a=a|0;n=n|0;f=f|0;l=l|0;var s=0,c=0,o=0,u=0,b=0,w=0,k=0,d=0,v=0,g=0,m=0,p=0,E=0,B=0,y=0,C=0,I=0,Z=0,G=0,L=0,Q=0,D=0,z=0,W=0,Y=0,F=0,M=0,V=0,N=0,R=0,x=0,J=0,H=0,P=0,X=0,S=0,j=0,U=0,T=0,O=0,_=0,q=0,K=0,$=0,ee=0,Ae=0,re=0,ie=0,ae=0,te=0,ne=0,fe=0,le=0,se=0,ce=0,oe=0,ue=0,be=0;ue=h;h=h+48|0;se=ue+28|0;ae=ue+32|0;ce=ue+24|0;q=ue;t[se>>2]=a;K=t[e+352>>2]|0;if((t[e+144>>2]|0)==(r|0)){te=e+284|0;_=e+288|0}else{_=t[e+296>>2]|0;te=_;_=_+4|0}t[te>>2]=a;g=r+4|0;ne=e+80|0;m=e+476|0;p=r+44|0;E=r+64|0;B=K+80|0;y=K+96|0;C=K+92|0;I=K+129|0;Z=e+112|0;G=e+116|0;L=e+428|0;Q=e+424|0;D=e+304|0;z=e+120|0;fe=e+4|0;W=K+130|0;$=e+60|0;Y=e+364|0;F=e+12|0;M=e+360|0;V=r+28|0;le=e+308|0;ee=r+56|0;N=e+16|0;R=e+52|0;x=e+412|0;J=e+388|0;H=e+56|0;P=e+232|0;X=e+233|0;S=e+468|0;j=e+104|0;U=e+372|0;T=r+40|0;O=e+72|0;Ae=r+68|0;re=e+44|0;ie=e+48|0;e:while(1){v=t[se>>2]|0;t[ae>>2]=v;v=Q5[t[g>>2]&127](r,v,n,ae)|0;a=t[ae>>2]|0;t[_>>2]=a;c=a;A:do{switch(v|0){case-3:{oe=6;break e}case-4:{oe=15;break e}case 0:{oe=20;break e}case-1:{oe=21;break e}case-2:{oe=23;break e}case 12:{a=17;break e}case-5:{oe=134;break e}case 9:{v=t[E>>2]|0;v=(L5[t[p>>2]&63](r,(t[se>>2]|0)+v|0,c+(0-v)|0)|0)&255;i[ce>>0]=v;do{if(v<<24>>24){a=t[$>>2]|0;if(a|0){V5[a&127](t[fe>>2]|0,ce,1);break}if(t[ne>>2]|0)vc(e,r,t[se>>2]|0,t[ae>>2]|0)}else{s=t[E>>2]|0;s=tc(B,r,(t[se>>2]|0)+s|0,(t[ae>>2]|0)+(0-s)|0)|0;if(!s){a=1;oe=56;break e}c=fc(e,K,s,0)|0;t[C>>2]=t[y>>2];if((i[I>>0]|0)!=0?(i[W>>0]|0)==0:0){if(!c){a=t[z>>2]|0;if(a|0){V5[a&127](t[fe>>2]|0,s,0);break}if(!(t[ne>>2]|0))break;vc(e,r,t[se>>2]|0,t[ae>>2]|0);break}}else{if(!c){a=11;oe=56;break e}if(!(i[c+34>>0]|0)){a=24;oe=56;break e}}a=c+32|0;if(i[a>>0]|0){a=12;oe=56;break e}if(t[c+28>>2]|0){a=15;oe=56;break e}if(!(t[c+4>>2]|0)){if(!(t[Z>>2]|0)){if(!(t[ne>>2]|0))break;vc(e,r,t[se>>2]|0,t[ae>>2]|0);break}i[a>>0]=1;s=Qc(e)|0;i[a>>0]=0;if(!s){a=1;oe=56;break e}if(!(D5[t[Z>>2]&127](t[G>>2]|0,s,t[c+20>>2]|0,t[c+16>>2]|0,t[c+24>>2]|0)|0)){a=21;oe=56;break e}t[Q>>2]=t[L>>2];break}if(i[D>>0]|0){a=Ec(e,c,0)|0;if(!a)break;else{oe=58;break e}}a=t[z>>2]|0;if(!a){if(t[ne>>2]|0)vc(e,r,t[se>>2]|0,t[ae>>2]|0)}else V5[a&127](t[fe>>2]|0,t[c>>2]|0,0);break A}}while(0);break}case 1:case 2:{a=t[Y>>2]|0;if(!a){a=I5[t[F>>2]&63](48)|0;if(!a){a=1;oe=75;break e}s=I5[t[F>>2]&63](32)|0;t[a+36>>2]=s;if(!s){oe=63;break e}t[a+40>>2]=s+32}else t[Y>>2]=t[a>>2];b=a+44|0;t[b>>2]=0;t[a>>2]=t[M>>2];t[M>>2]=a;v=a+12|0;t[a+16>>2]=0;t[a+20>>2]=0;d=(t[se>>2]|0)+(t[E>>2]|0)|0;k=a+4|0;t[k>>2]=d;w=a+8|0;t[w>>2]=Z5[t[V>>2]&127](r,d)|0;t[le>>2]=(t[le>>2]|0)+1;k=t[k>>2]|0;w=k+(t[w>>2]|0)|0;t[q>>2]=k;k=a+36|0;t[ce>>2]=t[k>>2];d=a+40|0;s=t[d>>2]|0;while(1){be=D5[t[ee>>2]&127](r,q,w,ce,s+-1|0)|0;s=t[ce>>2]|0;o=t[k>>2]|0;c=o;u=s-c|0;if((be|0)==1?1:(t[q>>2]|0)>>>0>=w>>>0)break;c=(t[d>>2]|0)-c<<1;s=Z5[t[N>>2]&127](o,c)|0;if(!s){oe=69;break e}t[k>>2]=s;be=s+c|0;t[d>>2]=be;t[ce>>2]=s+u;s=be}t[a+24>>2]=u;t[v>>2]=c;i[s>>0]=0;a=Dc(e,r,t[se>>2]|0,v,b)|0;if(a|0){oe=75;break e}a=t[R>>2]|0;if(!a){if(t[ne>>2]|0)vc(e,r,t[se>>2]|0,t[ae>>2]|0)}else V5[a&127](t[fe>>2]|0,t[v>>2]|0,t[J>>2]|0);nc(x);break}case 3:case 4:{be=(t[se>>2]|0)+(t[E>>2]|0)|0;t[ce>>2]=0;be=tc(x,r,be,be+(Z5[t[V>>2]&127](r,be)|0)|0)|0;t[q>>2]=be;if(!be){a=1;oe=89;break e}t[L>>2]=t[Q>>2];a=Dc(e,r,t[se>>2]|0,q,ce)|0;if(a|0){oe=79;break e}t[L>>2]=t[Q>>2];a=t[R>>2]|0;if(!a)s=1;else{V5[a&127](t[fe>>2]|0,t[q>>2]|0,t[J>>2]|0);s=0}a=t[H>>2]|0;if(!a){if(s|0?t[ne>>2]|0:0)vc(e,r,t[se>>2]|0,t[ae>>2]|0)}else{if(t[R>>2]|0){t[te>>2]=t[_>>2];a=t[H>>2]|0}M5[a&63](t[fe>>2]|0,t[q>>2]|0)}nc(x);zc(e,t[ce>>2]|0);if((t[le>>2]|0)==0?(t[m>>2]&-2|0)!=2:0){oe=92;break e}break}case 5:{if((t[le>>2]|0)==(A|0)){a=13;break e}u=t[M>>2]|0;t[M>>2]=t[u>>2];t[u>>2]=t[Y>>2];t[Y>>2]=u;a=(t[se>>2]|0)+(t[E>>2]<<1)|0;s=Z5[t[V>>2]&127](r,a)|0;if((s|0)!=(t[u+8>>2]|0)){oe=96;break e}if(F4(t[u+4>>2]|0,a,s)|0){oe=96;break e}t[le>>2]=(t[le>>2]|0)+-1;a=t[H>>2]|0;if(!a){if(t[ne>>2]|0)vc(e,r,t[se>>2]|0,t[ae>>2]|0)}else{s=t[u+16>>2]|0;o=u+12|0;if((s|0)!=0&(i[P>>0]|0)!=0){a=(t[o>>2]|0)+(t[u+28>>2]|0)|0;while(1){c=i[s>>0]|0;if(!(c<<24>>24))break;i[a>>0]=c;a=a+1|0;s=s+1|0}s=t[u+20>>2]|0;r:do{if((s|0)!=0&(i[X>>0]|0)!=0){i[a>>0]=i[S>>0]|0;while(1){a=a+1|0;c=i[s>>0]|0;if(!(c<<24>>24))break r;i[a>>0]=c;s=s+1|0}}}while(0);i[a>>0]=0;a=t[H>>2]|0}M5[a&63](t[fe>>2]|0,t[o>>2]|0)}c=u+44|0;while(1){o=t[c>>2]|0;if(!o)break;a=t[j>>2]|0;if(!a){a=o;s=o}else{M5[a&63](t[fe>>2]|0,t[t[o>>2]>>2]|0);a=o;s=t[c>>2]|0}t[c>>2]=t[s+4>>2];t[o+4>>2]=t[U>>2];t[U>>2]=o;t[(t[a>>2]|0)+4>>2]=t[o+8>>2]}if(!(t[le>>2]|0)){oe=117;break e}break}case 10:{a=Z5[t[T>>2]&127](r,t[se>>2]|0)|0;if((a|0)<0){a=14;break e}s=t[$>>2]|0;if(s|0){v=t[fe>>2]|0;be=vo(a,ce)|0;V5[s&127](v,ce,be);break A}if(t[ne>>2]|0)vc(e,r,t[se>>2]|0,t[ae>>2]|0);break}case 7:{a=t[$>>2]|0;if(a|0){i[ce>>0]=10;V5[a&127](t[fe>>2]|0,ce,1);break A}if(t[ne>>2]|0)vc(e,r,t[se>>2]|0,c);break}case 8:{a=t[O>>2]|0;if(!a){if(t[ne>>2]|0)vc(e,r,t[se>>2]|0,c)}else F5[a&127](t[fe>>2]|0);a=Yc(e,r,ae,n,f,l)|0;if(a|0)break e;if(!(t[ae>>2]|0)){oe=133;break e}break}case 6:{s=t[$>>2]|0;if(!s){if(!(t[ne>>2]|0))break A;vc(e,r,t[se>>2]|0,c);break A}if(!(i[Ae>>0]|0))a=c;else{be=t[se>>2]|0;V5[s&127](t[fe>>2]|0,be,a-be|0);break A}while(1){t[ce>>2]=t[re>>2];be=D5[t[ee>>2]&127](r,se,a,ce,t[ie>>2]|0)|0;t[_>>2]=t[se>>2];v=t[re>>2]|0;V5[s&127](t[fe>>2]|0,v,(t[ce>>2]|0)-v|0);if(be>>>0<2)break;t[te>>2]=t[se>>2];a=t[ae>>2]|0}break}case 11:{if(!(yc(e,r,t[se>>2]|0,c)|0)){a=1;break e}break}case 13:{if(!(Cc(e,r,t[se>>2]|0,c)|0)){a=1;break e}break}default:if(t[ne>>2]|0)vc(e,r,t[se>>2]|0,c)}}while(0);be=t[ae>>2]|0;t[se>>2]=be;t[te>>2]=be;switch(t[m>>2]|0){case 2:{a=35;break e}case 3:{oe=160;break e}default:{}}}switch(oe|0){case 6:{if(l<<24>>24){t[f>>2]=t[se>>2];a=0;break}t[_>>2]=n;a=t[$>>2]|0;if(!a){if(t[ne>>2]|0)vc(e,r,t[se>>2]|0,n)}else{i[ce>>0]=10;V5[a&127](t[fe>>2]|0,ce,1)}if(A)if((t[le>>2]|0)==(A|0)){t[f>>2]=n;a=0}else a=13;else a=3;break}case 15:{if(l<<24>>24){t[f>>2]=t[se>>2];a=0;break}if((A|0)>0)if((t[le>>2]|0)==(A|0)){t[f>>2]=t[se>>2];a=0}else a=13;else a=3;break}case 20:{t[te>>2]=a;a=4;break}case 21:{if(!(l<<24>>24))a=5;else{t[f>>2]=t[se>>2];a=0}break}case 23:{if(!(l<<24>>24))a=6;else{t[f>>2]=t[se>>2];a=0}break}case 56:break;case 58:break;case 63:{F5[t[e+20>>2]&127](a);a=1;oe=75;break}case 69:{a=1;oe=75;break}case 79:{zc(e,t[ce>>2]|0);oe=89;break}case 92:{a=Wc(e,t[ae>>2]|0,n,f)|0;break}case 96:{t[te>>2]=a;a=7;break}case 117:{a=Wc(e,t[ae>>2]|0,n,f)|0;break}case 133:{t[e+276>>2]=61;a=0;break}case 134:{if(l<<24>>24){t[f>>2]=t[se>>2];a=0;break}a=t[$>>2]|0;do{if(!a){if(t[ne>>2]|0)vc(e,r,t[se>>2]|0,n)}else if(!(i[Ae>>0]|0)){t[ce>>2]=t[re>>2];D5[t[ee>>2]&127](r,se,n,ce,t[ie>>2]|0)|0;be=t[re>>2]|0;V5[t[$>>2]&127](t[fe>>2]|0,be,(t[ce>>2]|0)-be|0);break}else{be=t[se>>2]|0;V5[a&127](t[fe>>2]|0,be,n-be|0);break}}while(0);if(!A){t[te>>2]=n;a=3;break}if((t[le>>2]|0)==(A|0)){t[f>>2]=n;a=0;break}else{t[te>>2]=n;a=13;break}}case 160:{t[f>>2]=t[ae>>2];a=0;break}}h=ue;return a|0}function Lc(e,A,r,a){e=e|0;A=A|0;r=r|0;a=a|0;var n=0,f=0,l=0,s=0,c=0,o=0,u=0,b=0,w=0,k=0,d=0,v=0;k=h;h=h+16|0;w=k;c=e+296|0;o=t[c>>2]|0;do{if(o){u=t[o+12>>2]|0;f=u+4|0;s=t[f>>2]|0;l=u+12|0;n=s+(t[l>>2]|0)|0;s=s+(t[u+8>>2]|0)|0;t[w>>2]=n;b=u+33|0;if(!(i[b>>0]|0))n=Gc(e,t[o+16>>2]|0,t[e+224>>2]|0,n,s,w,0)|0;else{v=e+224|0;d=t[v>>2]|0;d=Q5[t[d>>2]&127](d,n,s,w)|0;n=ic(e,t[v>>2]|0,n,s,d,t[w>>2]|0,w,0)|0}if(!n){n=t[w>>2]|0;if((s|0)!=(n|0)?(t[e+476>>2]|0)==3:0){t[l>>2]=n-(t[f>>2]|0);n=0;break}i[u+32>>0]=0;v=o+8|0;t[c>>2]=t[v>>2];n=e+300|0;t[v>>2]=t[n>>2];t[n>>2]=o;n=e+276|0;if(!(i[b>>0]|0)){t[n>>2]=58;n=Gc(e,(t[e+472>>2]|0)!=0&1,t[e+144>>2]|0,A,r,a,(i[e+480>>0]|0)==0&1)|0;break}else{t[n>>2]=57;v=e+144|0;n=t[v>>2]|0;n=Q5[t[n>>2]&127](n,A,r,w)|0;n=ic(e,t[v>>2]|0,A,r,n,t[w>>2]|0,a,(i[e+480>>0]|0)==0&1)|0;break}}}else n=23}while(0);h=k;return n|0}function Qc(e){e=e|0;var A=0,r=0,a=0,n=0,f=0,l=0,s=0,c=0,o=0,u=0,b=0,w=0,k=0;k=h;h=h+16|0;u=k;o=t[e+352>>2]|0;f=o+156|0;b=e+412|0;w=e+424|0;e:do{if(!(t[f>>2]|0)){A=0;l=e+420|0;c=e+468|0;s=12}else{A=t[w>>2]|0;l=e+420|0;if((A|0)==(t[l>>2]|0)){if(!((wc(b)|0)<<24>>24)){A=0;break}A=t[w>>2]|0}t[w>>2]=A+1;i[A>>0]=61;n=e+468|0;r=(t[(t[f>>2]|0)+20>>2]|0)+(((i[n>>0]|0)!=0)<<31>>31)|0;a=0;while(1){if((a|0)>=(r|0)){A=1;c=n;s=12;break e}A=t[w>>2]|0;if((A|0)==(t[l>>2]|0)){if(!((wc(b)|0)<<24>>24)){A=0;break e}A=t[w>>2]|0}c=i[(t[(t[f>>2]|0)+16>>2]|0)+a>>0]|0;t[w>>2]=A+1;i[A>>0]=c;a=a+1|0}}}while(0);e:do{if((s|0)==12){_s(u,o+60|0);A:while(1){do{r=qs(u)|0;if(!r)break A;f=r+4|0}while(!(t[f>>2]|0));if(A<<24>>24){A=t[w>>2]|0;if((A|0)==(t[l>>2]|0)){if(!((wc(b)|0)<<24>>24)){A=0;break e}A=t[w>>2]|0}t[w>>2]=A+1;i[A>>0]=12}n=t[r>>2]|0;while(1){r=i[n>>0]|0;A=t[w>>2]|0;a=(A|0)==(t[l>>2]|0);if(!(r<<24>>24))break;if(a){if(!((wc(b)|0)<<24>>24)){A=0;break e}A=t[w>>2]|0;r=i[n>>0]|0}t[w>>2]=A+1;i[A>>0]=r;n=n+1|0}if(a){if(!((wc(b)|0)<<24>>24)){A=0;break e}A=t[w>>2]|0}t[w>>2]=A+1;i[A>>0]=61;a=(t[(t[f>>2]|0)+20>>2]|0)+(((i[c>>0]|0)!=0)<<31>>31)|0;r=0;while(1){if((r|0)>=(a|0)){A=1;continue A}A=t[w>>2]|0;if((A|0)==(t[l>>2]|0)){if(!((wc(b)|0)<<24>>24)){A=0;break e}A=t[w>>2]|0}s=i[(t[(t[f>>2]|0)+16>>2]|0)+r>>0]|0;t[w>>2]=A+1;i[A>>0]=s;r=r+1|0}}_s(u,o);A:while(1){do{r=qs(u)|0;if(!r)break A}while(!(i[r+32>>0]|0));if(A<<24>>24){A=t[w>>2]|0;if((A|0)==(t[l>>2]|0)){if(!((wc(b)|0)<<24>>24)){A=0;break e}A=t[w>>2]|0}t[w>>2]=A+1;i[A>>0]=12}a=t[r>>2]|0;while(1){r=i[a>>0]|0;if(!(r<<24>>24)){A=1;continue A}A=t[w>>2]|0;if((A|0)==(t[l>>2]|0)){if(!((wc(b)|0)<<24>>24)){A=0;break e}A=t[w>>2]|0;r=i[a>>0]|0}t[w>>2]=A+1;i[A>>0]=r;a=a+1|0}}A=t[w>>2]|0;if((A|0)==(t[l>>2]|0)){if(!((wc(b)|0)<<24>>24)){A=0;break}A=t[w>>2]|0}t[w>>2]=A+1;i[A>>0]=0;A=t[e+428>>2]|0}}while(0);h=k;return A|0}function Dc(e,A,r,a,f){e=e|0;A=A|0;r=r|0;a=a|0;f=f|0;var l=0,s=0,c=0,o=0,u=0,b=0,w=0,k=0,d=0,v=0,g=0,m=0,p=0,E=0,B=0,y=0,C=0,I=0,Z=0,G=0,L=0,Q=0,D=0,z=0,W=0,Y=0,F=0,M=0,V=0,N=0,R=0,x=0,J=0;x=h;h=h+80|0;M=x+16|0;V=x;N=t[e+352>>2]|0;c=N+20|0;l=fc(e,c,t[a>>2]|0,0)|0;if(!l){l=Nc(N+80|0,t[a>>2]|0)|0;if((l|0)!=0?(s=fc(e,c,l,24)|0,(s|0)!=0):0)if((i[e+232>>0]|0)!=0?(Rc(e,s)|0)==0:0)l=1;else I=6;else l=1}else{s=l;I=6}e:do{if((I|0)==6){B=t[s+12>>2]|0;c=A+36|0;o=e+376|0;g=e+388|0;m=Q5[t[c>>2]&127](A,r,t[o>>2]|0,t[g>>2]|0)|0;l=m+B|0;u=t[o>>2]|0;if((l|0)>(u|0)){l=l+16|0;t[o>>2]=l;l=Z5[t[e+16>>2]&127](t[g>>2]|0,l<<4)|0;if(!l){t[o>>2]=u;l=1;break}t[g>>2]=l;if((m|0)>(u|0))Q5[t[c>>2]&127](A,r,m,l)|0}F=t[g>>2]|0;d=A+28|0;W=e+412|0;Y=e+428|0;E=s+20|0;k=e+424|0;v=0;w=0;c=0;while(1){if((w|0)>=(m|0))break;b=t[(t[g>>2]|0)+(w<<4)>>2]|0;b=oc(e,A,b,b+(Z5[t[d>>2]&127](A,b)|0)|0)|0;if(!b){l=1;break e}l=(t[b>>2]|0)+-1|0;if(i[l>>0]|0){I=15;break}i[l>>0]=1;r=v+1|0;t[F+(v<<2)>>2]=t[b>>2];u=t[g>>2]|0;if(i[u+(w<<4)+12>>0]|0){z=tc(W,A,t[u+(w<<4)+4>>2]|0,t[u+(w<<4)+8>>2]|0)|0;t[F+(r<<2)>>2]=z;if(!z){l=1;break e}}else{A:do{if(!(i[b+8>>0]|0))l=1;else{l=0;while(1){if((l|0)>=(B|0)){l=1;break A}o=t[E>>2]|0;if((b|0)==(t[o+(l*12|0)>>2]|0))break;l=l+1|0}l=i[o+(l*12|0)+4>>0]|0}}while(0);l=kc(e,A,l,t[u+(w<<4)+4>>2]|0,t[u+(w<<4)+8>>2]|0,W)|0;if(l|0)break e;t[F+(r<<2)>>2]=t[Y>>2]}t[Y>>2]=t[k>>2];l=t[b+4>>2]|0;do{if(l)if(i[b+9>>0]|0){l=xc(e,l,b,t[F+(r<<2)>>2]|0,f)|0;if(!l){l=v;break}else break e}else{i[(t[b>>2]|0)+-1>>0]=2;c=c+1|0;l=v+2|0;break}else l=v+2|0}while(0);v=l;w=w+1|0}if((I|0)==15){if((t[e+144>>2]|0)!=(A|0)){l=8;break}t[e+284>>2]=t[(t[g>>2]|0)+(w<<4)>>2];l=8;break}t[e+380>>2]=v;l=t[s+8>>2]|0;A:do{if((l|0)!=0?(p=t[l>>2]|0,(i[p+-1>>0]|0)!=0):0){l=0;while(1){if((l|0)>=(v|0)){r=0;w=c;z=v;break A}if((t[F+(l<<2)>>2]|0)==(p|0)){I=37;break A}l=l+2|0}}else{l=-1;I=37}}while(0);if((I|0)==37){t[e+384>>2]=l;r=0;w=c;z=v}while(1){if((r|0)>=(B|0))break;l=t[E>>2]|0;u=l+(r*12|0)|0;c=t[u>>2]|0;o=(t[c>>2]|0)+-1|0;A:do{if((i[o>>0]|0)==0?(y=l+(r*12|0)+8|0,C=t[y>>2]|0,(C|0)!=0):0){l=t[c+4>>2]|0;do{if(l)if(i[c+9>>0]|0){l=xc(e,l,c,C,f)|0;if(!l){l=w;c=z;break A}else break e}else{i[o>>0]=2;l=w+1|0;break}else{i[o>>0]=1;l=w}}while(0);t[F+(z<<2)>>2]=t[t[u>>2]>>2];t[F+(z+1<<2)>>2]=t[y>>2];c=z+2|0}else{l=w;c=z}}while(0);r=r+1|0;w=l;z=c}t[F+(z<<2)>>2]=0;A:do{if(!w)l=0;else{b=e+396|0;u=t[b>>2]|0;D=e+400|0;r=i[D>>0]|0;l=r&255;do{if(!(w<<1>>l)){l=1<>24}while((w>>(Q&255)|0)!=0);l=(l&255)>3?l:3;i[D>>0]=l;l=l&255;o=e+392|0;c=Z5[t[e+16>>2]&127](t[o>>2]|0,12<>0]=r;l=1;break e}else{t[o>>2]=c;c=1<>2]|0)+(Q*12|0)>>2]=-1;l=Q}}}while(0);Q=l+-1|0;t[b>>2]=Q;E=N+40|0;B=e+424|0;y=e+420|0;C=c+-1|0;I=0-c|0;Z=C>>>2;G=e+233|0;L=e+468|0;l=0;p=w;r:while(1){while(1){if((l|0)>=(z|0))break A;A=F+(l<<2)|0;u=t[A>>2]|0;r=u+-1|0;if((i[r>>0]|0)==2)break;i[r>>0]=0;l=l+2|0}Jc(e,V);Hc(M,V);i[r>>0]=0;r=fc(e,E,u,0)|0;if(!r){l=1;break}r=t[r+4>>2]|0;if(!r){l=1;break}m=t[r+4>>2]|0;if(!m){l=27;break}k=m+20|0;d=m+16|0;w=0;while(1){r=t[k>>2]|0;b=t[d>>2]|0;if((w|0)>=(r|0))break;b=i[b+w>>0]|0;r=t[B>>2]|0;if((r|0)==(t[y>>2]|0)){if(!((wc(W)|0)<<24>>24)){l=1;break r}r=t[B>>2]|0}t[B>>2]=r+1;i[r>>0]=b;w=w+1|0}Pc(M,b,r);do{g=u;u=u+1|0}while((i[g>>0]|0)!=58);Pc(M,u,Xc(u)|0);while(1){r=t[B>>2]|0;if((r|0)==(t[y>>2]|0)){if(!((wc(W)|0)<<24>>24)){l=1;break r}r=t[B>>2]|0}g=i[u>>0]|0;t[B>>2]=r+1;i[r>>0]=g;if(!(i[u>>0]|0))break;else u=u+1|0}g=Sc(M)|0;k=t[o>>2]|0;d=g&I;u=0;v=C&g;while(1){if((t[k+(v*12|0)>>2]|0)!=(Q|0))break;if((t[k+(v*12|0)+4>>2]|0)==(g|0)){r=t[k+(v*12|0)+8>>2]|0;b=t[Y>>2]|0;while(1){J=i[b>>0]|0;w=J<<24>>24==0;if(w|J<<24>>24!=(i[r>>0]|0))break;r=r+1|0;b=b+1|0}if(w){l=8;break r}}if(!(u<<24>>24))u=(d>>>((n[D>>0]|0)+-1|0)&Z|1)&255;J=u&255;v=v+((v|0)<(J|0)?c:0)-J|0}if(i[G>>0]|0){i[(t[B>>2]|0)+-1>>0]=i[L>>0]|0;r=t[t[m>>2]>>2]|0;while(1){u=t[B>>2]|0;if((u|0)==(t[y>>2]|0)){if(!((wc(W)|0)<<24>>24)){l=1;break r}u=t[B>>2]|0}J=i[r>>0]|0;t[B>>2]=u+1;i[u>>0]=J;if(!(i[r>>0]|0))break;else r=r+1|0}}J=t[Y>>2]|0;t[Y>>2]=t[B>>2];t[A>>2]=J;t[(t[o>>2]|0)+(v*12|0)>>2]=Q;t[(t[o>>2]|0)+(v*12|0)+4>>2]=g;t[(t[o>>2]|0)+(v*12|0)+8>>2]=J;p=p+-1|0;l=l+2|0;if(!p)break A}break e}}while(0);while(1){if((l|0)>=(z|0)){l=f;break}i[(t[F+(l<<2)>>2]|0)+-1>>0]=0;l=l+2|0}while(1){l=t[l>>2]|0;if(!l)break;i[(t[t[l+12>>2]>>2]|0)+-1>>0]=0;l=l+4|0}if(!(i[e+232>>0]|0))l=0;else{l=t[s+4>>2]|0;if(!l){l=t[N+156>>2]|0;if(!l){l=0;break}c=t[a>>2]|0}else{l=t[l+4>>2]|0;if(!l){l=27;break}s=t[a>>2]|0;while(1){c=s+1|0;if((i[s>>0]|0)==58)break;else s=c}}if((i[e+233>>0]|0)!=0?(R=t[t[l>>2]>>2]|0,(R|0)!=0):0){s=0;while(1){o=s+1|0;if(!(i[R+s>>0]|0))break;else s=o}}else o=0;t[a+4>>2]=c;w=l+20|0;t[a+16>>2]=t[w>>2];t[a+8>>2]=t[t[l>>2]>>2];t[a+20>>2]=o;k=0;while(1){d=k+1|0;if(!(i[c+k>>0]|0))break;else k=d}s=t[w>>2]|0;u=d+o+s|0;r=l+24|0;if((u|0)>(t[r>>2]|0)){s=u+24|0;b=I5[t[e+12>>2]&63](s)|0;if(!b){l=1;break}t[r>>2]=s;r=l+16|0;Q6(b|0,t[r>>2]|0,t[w>>2]|0)|0;s=e+360|0;while(1){s=t[s>>2]|0;if(!s)break;u=s+12|0;if((t[u>>2]|0)==(t[r>>2]|0))t[u>>2]=b}F5[t[e+20>>2]&127](t[r>>2]|0);t[r>>2]=b;u=b;s=t[w>>2]|0}else{u=l+16|0;r=u;u=t[u>>2]|0}s=u+s|0;Q6(s|0,c|0,d|0)|0;if(o|0){J=s+k|0;i[J>>0]=i[e+468>>0]|0;Q6(J+1|0,t[t[l>>2]>>2]|0,o|0)|0}t[a>>2]=t[r>>2];l=0}}}while(0);h=x;return l|0}function zc(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0,f=0;i=e+104|0;a=e+372|0;r=e+4|0;while(1){if(!A)break;e=t[i>>2]|0;if(!e)e=A;else{M5[e&63](t[r>>2]|0,t[t[A>>2]>>2]|0);e=A}f=A+4|0;n=t[f>>2]|0;t[f>>2]=t[a>>2];t[a>>2]=A;t[(t[e>>2]|0)+4>>2]=t[A+8>>2];A=n}return}function Wc(e,A,r,a){e=e|0;A=A|0;r=r|0;a=a|0;var n=0,f=0,l=0,s=0,c=0,o=0,u=0,b=0,w=0,k=0,d=0;k=h;h=h+16|0;s=k;t[e+276>>2]=62;c=e+284|0;t[c>>2]=A;o=e+144|0;u=e+288|0;b=e+80|0;l=e+476|0;n=A;e:while(1){t[s>>2]=0;d=t[o>>2]|0;d=Q5[t[d>>2]&127](d,n,r,s)|0;A=t[s>>2]|0;t[u>>2]=A;f=A;switch(d|0){case-15:{w=3;break e}case-4:{w=7;break e}case 0:{w=12;break e}case-1:{w=13;break e}case-2:{w=15;break e}case 15:{if(t[b>>2]|0)vc(e,t[o>>2]|0,n,f);break}case 11:{if(!(yc(e,t[o>>2]|0,n,f)|0)){A=1;break e}break}case 13:{if(!(Cc(e,t[o>>2]|0,n,f)|0)){A=1;break e}break}default:{A=9;break e}}A=t[s>>2]|0;t[c>>2]=A;switch(t[l>>2]|0){case 2:{A=35;break e}case 3:{w=18;break e}default:{}}n=A}do{if((w|0)==3){if(t[b>>2]|0){vc(e,t[o>>2]|0,n,f);if((t[l>>2]|0)==2){A=35;break}A=t[s>>2]|0}t[a>>2]=A;A=0}else if((w|0)==7){t[a>>2]=n;A=0}else if((w|0)==12){t[c>>2]=A;A=4}else if((w|0)==13)if(!(i[e+480>>0]|0)){t[a>>2]=n;A=0}else A=5;else if((w|0)==15)if(!(i[e+480>>0]|0)){t[a>>2]=n;A=0}else A=6;else if((w|0)==18){t[a>>2]=A;A=0}}while(0);h=k;return A|0}function Yc(e,A,r,a,n,f){e=e|0;A=A|0;r=r|0;a=a|0;n=n|0;f=f|0;var l=0,s=0,c=0,o=0,u=0,b=0,w=0,k=0,d=0,v=0,g=0,m=0,p=0,E=0,B=0,y=0,C=0,I=0,Z=0;Z=h;h=h+16|0;y=Z+8|0;C=Z+4|0;B=Z;l=t[r>>2]|0;t[y>>2]=l;if((t[e+144>>2]|0)==(A|0)){v=e+284|0;t[v>>2]=l;g=e+288|0}else{g=t[e+296>>2]|0;v=g;g=g+4|0}t[v>>2]=l;t[r>>2]=0;c=A+8|0;o=e+60|0;m=e+80|0;p=e+4|0;E=e+476|0;u=A+68|0;b=e+44|0;w=A+56|0;k=e+48|0;e:while(1){s=Q5[t[c>>2]&127](A,t[y>>2]|0,a,C)|0;l=t[C>>2]|0;t[g>>2]=l;d=l;A:do{switch(s|0){case 40:{I=6;break e}case 0:{I=23;break e}case-2:{I=24;break e}case-4:case-1:{I=26;break e}case 7:{l=t[o>>2]|0;if(l|0){i[B>>0]=10;V5[l&127](t[p>>2]|0,B,1);break A}if(t[m>>2]|0)vc(e,A,t[y>>2]|0,d);break}case 6:{s=t[o>>2]|0;if(!s){if(!(t[m>>2]|0))break A;vc(e,A,t[y>>2]|0,d);break A}if(!(i[u>>0]|0))l=d;else{d=t[y>>2]|0;V5[s&127](t[p>>2]|0,d,l-d|0);break A}while(1){t[B>>2]=t[b>>2];d=D5[t[w>>2]&127](A,y,l,B,t[k>>2]|0)|0;t[g>>2]=t[C>>2];l=t[b>>2]|0;V5[s&127](t[p>>2]|0,l,(t[B>>2]|0)-l|0);if(d>>>0<2)break;t[v>>2]=t[y>>2];l=t[C>>2]|0}break}default:{I=28;break e}}}while(0);d=t[C>>2]|0;t[y>>2]=d;t[v>>2]=d;switch(t[E>>2]|0){case 3:{I=30;break e}case 2:{l=35;break e}default:{}}}if((I|0)==6){l=t[e+76>>2]|0;if(!l){if(t[m>>2]|0)vc(e,A,t[y>>2]|0,d)}else F5[l&127](t[p>>2]|0);l=t[C>>2]|0;t[r>>2]=l;t[n>>2]=l;l=(t[E>>2]|0)==2?35:0}else if((I|0)==23){t[v>>2]=l;l=4}else if((I|0)==24)if(!(f<<24>>24))l=6;else{t[n>>2]=t[y>>2];l=0}else if((I|0)==26)if(!(f<<24>>24))l=20;else{t[n>>2]=t[y>>2];l=0}else if((I|0)==28){t[v>>2]=l;l=23}else if((I|0)==30){t[n>>2]=t[C>>2];l=0}h=Z;return l|0}function Fc(e,A,r,a){e=e|0;A=A|0;r=r|0;a=a|0;var n=0,f=0;f=h;h=h+16|0;n=f;t[n>>2]=A;A=Yc(e,t[e+144>>2]|0,n,r,a,(i[e+480>>0]|0)==0&1)|0;n=t[n>>2]|0;do{if(!((A|0)!=0|(n|0)==0)){A=e+276|0;if(!(t[e+472>>2]|0)){t[A>>2]=58;A=sc(e,n,r,a)|0;break}else{t[A>>2]=63;A=Mc(e,n,r,a)|0;break}}}while(0);h=f;return A|0}function Mc(e,A,r,a){e=e|0;A=A|0;r=r|0;a=a|0;A=Gc(e,1,t[e+144>>2]|0,A,r,a,(i[e+480>>0]|0)==0&1)|0;if((A|0)==0?(Vc(e)|0)<<24>>24==0:0)A=1;return A|0}function Vc(e){e=e|0;var A=0,r=0,i=0,a=0,n=0,f=0,l=0,s=0,c=0,o=0,u=0;u=e+16|0;e=e+360|0;while(1){e=t[e>>2]|0;if(!e){e=1;break}l=(t[e+24>>2]|0)+1|0;s=e+36|0;a=t[s>>2]|0;i=a+l|0;o=e+4|0;r=t[o>>2]|0;if((r|0)==(i|0)){e=1;break}c=e+8|0;A=t[c>>2]|0;n=A+l|0;f=e+40|0;if((n|0)>((t[f>>2]|0)-a|0)){i=Z5[t[u>>2]&127](a,n)|0;if(!i){e=0;break}A=e+12|0;a=t[s>>2]|0;if((t[A>>2]|0)==(a|0))t[A>>2]=i;A=e+16|0;r=t[A>>2]|0;if(r|0)t[A>>2]=i+(r-a);t[s>>2]=i;t[f>>2]=i+n;i=i+l|0;r=t[o>>2]|0;A=t[c>>2]|0}Q6(i|0,r|0,A|0)|0;t[o>>2]=i}return e|0}function Nc(e,A){e=e|0;A=A|0;var r=0,a=0,n=0,f=0,l=0;a=e+12|0;n=e+8|0;while(1){r=t[a>>2]|0;if((r|0)==(t[n>>2]|0)){if(!((wc(e)|0)<<24>>24)){A=0;break}r=t[a>>2]|0}l=i[A>>0]|0;t[a>>2]=r+1;i[r>>0]=l;if(!(i[A>>0]|0)){f=6;break}else A=A+1|0}if((f|0)==6){l=e+16|0;A=t[l>>2]|0;t[l>>2]=t[a>>2]}return A|0}function Rc(e,A){e=e|0;A=A|0;var r=0,a=0,n=0,f=0,l=0,s=0,c=0,o=0,u=0,b=0;b=t[e+352>>2]|0;s=b+80|0;c=b+92|0;o=b+88|0;u=b+60|0;b=b+96|0;l=A+4|0;f=t[A>>2]|0;e:while(1){switch(i[f>>0]|0){case 0:{r=1;break e}case 58:{n=t[A>>2]|0;while(1){r=t[c>>2]|0;a=(r|0)==(t[o>>2]|0);if((n|0)==(f|0))break;if(a){if(!((wc(s)|0)<<24>>24)){r=0;break e}r=t[c>>2]|0}a=i[n>>0]|0;t[c>>2]=r+1;i[r>>0]=a;n=n+1|0}if(a){if(!((wc(s)|0)<<24>>24)){r=0;break e}r=t[c>>2]|0}t[c>>2]=r+1;i[r>>0]=0;r=fc(e,u,t[b>>2]|0,8)|0;if(!r){r=0;break e}a=t[b>>2]|0;if((t[r>>2]|0)==(a|0))t[b>>2]=t[c>>2];else t[c>>2]=a;t[l>>2]=r;break}default:{}}f=f+1|0}return r|0}function xc(e,A,r,a,n){e=e|0;A=A|0;r=r|0;a=a|0;n=n|0;var f=0,l=0,s=0,c=0,o=0,u=0,b=0,h=0,w=0;c=i[a>>0]|0;l=t[A>>2]|0;f=(l|0)==0;do{if(!(c<<24>>24))if(f){u=0;s=11}else f=28;else if(((!f?(i[l>>0]|0)==120:0)?(i[l+1>>0]|0)==109:0)?(i[l+2>>0]|0)==108:0){f=i[l+3>>0]|0;if((f<<24>>24==110?(i[l+4>>0]|0)==115:0)?(i[l+5>>0]|0)==0:0){f=39;break}u=f<<24>>24==0&1;s=11}else{u=0;s=11}}while(0);e:do{if((s|0)==11){o=u<<24>>24!=0;f=1;l=1;b=0;while(1){s=l<<24>>24!=0;if(!(c<<24>>24))break;do{if(s){if((b|0)<=36?c<<24>>24==(i[142257+b>>0]|0):0)break;l=0}else l=0}while(0);do{if(!(o|f<<24>>24==0)){if((b|0)<=29?c<<24>>24==(i[142294+b>>0]|0):0)break;f=0}}while(0);c=b+1|0;b=c;c=i[a+c>>0]|0}if((u&255|0)!=(s&(b|0)==36&1|0)){f=o?38:40;break}if(!(f<<24>>24!=0&(b|0)==29)){h=e+468|0;b=b+((i[h>>0]|0)!=0&1)|0;f=e+372|0;s=t[f>>2]|0;do{if(!s){f=e+12|0;l=I5[t[f>>2]&63](28)|0;if(!l){f=1;break e}s=b+24|0;u=I5[t[f>>2]&63](s)|0;t[l+16>>2]=u;if(!u){F5[t[e+20>>2]&127](l);f=1;break e}else{t[l+24>>2]=s;s=l;break}}else{l=s+24|0;if((b|0)>(t[l>>2]|0)){c=s+16|0;o=b+24|0;u=Z5[t[e+16>>2]&127](t[c>>2]|0,o)|0;if(!u){f=1;break e}t[c>>2]=u;t[l>>2]=o}t[f>>2]=t[s+4>>2]}}while(0);t[s+20>>2]=b;l=s+16|0;Q6(t[l>>2]|0,a|0,b|0)|0;f=i[h>>0]|0;if(f<<24>>24)i[(t[l>>2]|0)+(b+-1)>>0]=f;t[s>>2]=A;t[s+12>>2]=r;l=A+4|0;t[s+8>>2]=t[l>>2];if((i[a>>0]|0)==0?((t[e+352>>2]|0)+152|0)==(A|0):0)f=0;else f=s;t[l>>2]=f;t[s+4>>2]=t[n>>2];t[n>>2]=s;if((r|0)!=0?(w=t[e+100>>2]|0,(w|0)!=0):0){V5[w&127](t[e+4>>2]|0,t[A>>2]|0,t[l>>2]|0?a:0);f=0}else f=0}else f=40}}while(0);return f|0}function Jc(e,A){e=e|0;A=A|0;var r=0;r=A;t[r>>2]=0;t[r+4>>2]=0;A=A+8|0;t[A>>2]=Uc(e)|0;t[A+4>>2]=0;return}function Hc(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0;r=A;n=t[r+4>>2]^1936682341;i=e;t[i>>2]=t[r>>2]^1886610805;t[i+4>>2]=n;i=A+8|0;n=i;r=t[n+4>>2]^1685025377;a=e+8|0;t[a>>2]=t[n>>2]^1852075885;t[a+4>>2]=r;a=A;A=t[a+4>>2]^1819895653;r=e+16|0;t[r>>2]=t[a>>2]^1852142177;t[r+4>>2]=A;r=t[i+4>>2]^1952801890;A=e+24|0;t[A>>2]=t[i>>2]^2037671283;t[A+4>>2]=r;t[e+40>>2]=e+32;A=e+48|0;t[A>>2]=0;t[A+4>>2]=0;return}function Pc(e,A,r){e=e|0;A=A|0;r=r|0;var a=0,f=0,l=0,s=0,c=0,o=0,u=0,b=0,h=0,w=0,k=0,d=0,v=0,g=0,m=0,p=0,E=0,B=0,y=0,C=0,I=0;b=A+r|0;h=e+40|0;w=e+40|0;k=e+32|0;d=e+33|0;v=e+34|0;g=e+35|0;f=e+36|0;l=e+37|0;s=e+38|0;c=e+39|0;o=e+24|0;u=e+48|0;r=A;do{while(1){a=t[h>>2]|0;if(r>>>0>=b>>>0){A=0;break}if(a>>>0>=w>>>0){A=1;break}A=i[r>>0]|0;t[h>>2]=a+1;i[a>>0]=A;r=r+1|0}if(a>>>0>>0)break;C=n[k>>0]|0;I=C6(n[d>>0]|0|0,0,8)|0;a=G;y=C6(n[v>>0]|0|0,0,16)|0;a=a|G;E=C6(n[g>>0]|0|0,0,24)|0;a=a|G|(n[f>>0]|0);m=C6(n[l>>0]|0|0,0,40)|0;a=a|G;B=C6(n[s>>0]|0|0,0,48)|0;a=a|G;p=C6(n[c>>0]|0|0,0,56)|0;p=I|C|y|E|m|B|p;a=a|G;B=o;m=a^t[B+4>>2];E=o;t[E>>2]=p^t[B>>2];t[E+4>>2]=m;jc(e,2);E=e;a=t[E+4>>2]^a;m=e;t[m>>2]=t[E>>2]^p;t[m+4>>2]=a;t[h>>2]=k;m=u;m=d6(t[m>>2]|0,t[m+4>>2]|0,8,0)|0;a=u;t[a>>2]=m;t[a+4>>2]=G}while(A);return}function Xc(e){e=e|0;var A=0;A=0;while(1){if(!(i[e>>0]|0))break;A=A+1|0;e=e+1|0}return A|0}function Sc(e){e=e|0;var A=0,r=0,i=0,a=0,f=0,l=0;i=e+32|0;f=(t[e+40>>2]|0)-i|0;r=e+48|0;r=d6(t[r>>2]|0,t[r+4>>2]|0,f|0,0)|0;r=C6(r|0,G|0,56)|0;A=G;switch(f<<24>>24|0){case 7:{r=C6(n[e+38>>0]|0|0,0,48)|0|r;A=G|A;a=3;break}case 6:{a=3;break}case 5:{a=4;break}case 4:{a=5;break}case 3:{a=6;break}case 2:{a=7;break}case 1:{a=8;break}default:{}}if((a|0)==3){f=C6(n[e+37>>0]|0|0,0,40)|0;r=f|r;A=G|A;a=4}if((a|0)==4){A=n[e+36>>0]|0|A;a=5}if((a|0)==5){f=C6(n[e+35>>0]|0|0,0,24)|0;r=f|r;A=G|A;a=6}if((a|0)==6){f=C6(n[e+34>>0]|0|0,0,16)|0;r=f|r;A=G|A;a=7}if((a|0)==7){f=C6(n[e+33>>0]|0|0,0,8)|0;A=G|A;r=f|r;a=8}if((a|0)==8)r=r|(n[i>>0]|0);f=e+24|0;l=f;a=t[l+4>>2]^A;i=f;t[i>>2]=t[l>>2]^r;t[i+4>>2]=a;jc(e,2);i=e;A=t[i+4>>2]^A;a=e;t[a>>2]=t[i>>2]^r;t[a+4>>2]=A;a=e+16|0;A=a;r=t[A+4>>2]|0;i=a;t[i>>2]=t[A>>2]^255;t[i+4>>2]=r;jc(e,4);i=e;e=e+8|0;G=t[e+4>>2]^t[i+4>>2]^t[a+4>>2]^t[f+4>>2];return t[e>>2]^t[i>>2]^t[a>>2]^t[f>>2]|0}function jc(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0,f=0,l=0,s=0,c=0,o=0,u=0,b=0,h=0,w=0,k=0;i=e+8|0;a=e+24|0;n=e+16|0;r=0;while(1){if((r|0)>=(A|0))break;f=i;b=t[f>>2]|0;f=t[f+4>>2]|0;h=e;h=d6(t[h>>2]|0,t[h+4>>2]|0,b|0,f|0)|0;c=G;u=C6(b|0,f|0,13)|0;o=G;f=y6(b|0,f|0,51)|0;f=(u|f)^h;o=(o|G)^c;u=a;b=t[u>>2]|0;u=t[u+4>>2]|0;s=n;s=d6(t[s>>2]|0,t[s+4>>2]|0,b|0,u|0)|0;l=G;k=C6(b|0,u|0,16)|0;w=G;u=y6(b|0,u|0,48)|0;u=(k|u)^s;w=(w|G)^l;h=d6(c|0,h|0,u|0,w|0)|0;c=G;k=e;t[k>>2]=h;t[k+4>>2]=c;k=C6(u|0,w|0,21)|0;b=G;w=y6(u|0,w|0,43)|0;u=a;t[u>>2]=(k|w)^h;t[u+4>>2]=(b|G)^c;l=d6(s|0,l|0,f|0,o|0)|0;s=G;u=C6(f|0,o|0,17)|0;c=G;o=y6(f|0,o|0,47)|0;f=i;t[f>>2]=(u|o)^l;t[f+4>>2]=(c|G)^s;f=n;t[f>>2]=s;t[f+4>>2]=l;r=r+1|0}return}function Uc(e){e=e|0;var A=0;while(1){A=t[e+472>>2]|0;if(!A)break;else e=A}return t[e+492>>2]|0}function Tc(e,A,r,a,n,f){e=e|0;A=A|0;r=r|0;a=a|0;n=n|0;f=f|0;var l=0,s=0,c=0,o=0,u=0,b=0,w=0,k=0,d=0,v=0,g=0,m=0,p=0,E=0,B=0,y=0,C=0,I=0,Z=0,G=0,L=0,Q=0,D=0,z=0,W=0,Y=0,F=0,M=0,V=0,N=0;V=h;h=h+16|0;Y=V;F=V+4|0;M=t[e+352>>2]|0;b=A+16|0;w=A+40|0;k=e+144|0;d=e+284|0;v=r<<24>>24==0;g=f+12|0;p=f+16|0;E=f+8|0;B=A+44|0;y=A+64|0;C=e+436|0;I=e+452|0;Z=e+448|0;G=(M+80|0)==(f|0);L=e+268|0;Q=M+130|0;D=M+129|0;z=e+296|0;W=e+224|0;l=0;e:while(1){A:while(1){switch(Q5[t[b>>2]&127](A,a,n,Y)|0){case-4:{l=0;u=61;break e}case 0:{u=4;break e}case-1:{u=6;break e}case 6:{u=21;break A}case-3:{u=22;break A}case 7:case 39:{u=23;break A}case 10:{s=Z5[t[w>>2]&127](A,a)|0;r:do{if((s|0)<0)if((t[k>>2]|0)==(A|0)){t[d>>2]=a;s=1;l=14}else{s=1;l=14}else{if(v&(s|0)==32){c=t[g>>2]|0;if((t[p>>2]|0)==(c|0)){s=4;break}if((i[c+-1>>0]|0)==32){s=4;break}}o=vo(s,F)|0;c=0;while(1){if((c|0)>=(o|0)){s=0;break r}s=t[g>>2]|0;if((s|0)==(t[E>>2]|0)){if(!((wc(f)|0)<<24>>24)){s=1;l=1;break r}s=t[g>>2]|0}N=i[F+c>>0]|0;t[g>>2]=s+1;i[s>>0]=N;c=c+1|0}}}while(0);switch(s&7){case 4:case 0:break A;default:{}}break}case 9:{s=t[y>>2]|0;s=(L5[t[B>>2]&63](A,a+s|0,(t[Y>>2]|0)+(0-s)|0)|0)&255;if(s<<24>>24){u=31;break A}s=t[y>>2]|0;s=tc(C,A,a+s|0,(t[Y>>2]|0)+(0-s)|0)|0;if(!s){l=1;u=61;break e}o=fc(e,M,s,0)|0;t[Z>>2]=t[I>>2];do{if(G){if(!(t[L>>2]|0))if(!o)break A;else break;if(!(i[Q>>0]|0)){s=(o|0)!=0;if(!(i[D>>0]|0)){u=45;break}else{m=s;u=47;break}}else{s=(o|0)!=0;if(!(t[z>>2]|0)){u=45;break}else{m=s;u=47;break}}}else if(!(i[D>>0]|0))if(!o){l=11;u=61;break e}else{u=46;break}else{s=(o|0)!=0;if(!(i[Q>>0]|0)){m=s;u=47;break}else{u=45;break}}}while(0);if((u|0)==45)if(s)u=46;else{l=11;u=61;break e}else if((u|0)==47?(u=0,!m):0)break A;if((u|0)==46?(u=0,(i[o+34>>0]|0)==0):0){l=24;u=61;break e}c=o+32|0;if(i[c>>0]|0){u=49;break e}if(t[o+28>>2]|0){u=52;break e}s=t[o+4>>2]|0;if(!s){u=55;break e}o=s+(t[o+8>>2]|0)|0;i[c>>0]=1;o=Tc(e,t[W>>2]|0,r,s,o,f)|0;i[c>>0]=0;s=(o|0)==0;if(s)break A;else{s=(s^1)&1;l=o}break}default:{u=58;break e}}if(s)break e}if((u|0)==21){u=0;if(!(bc(f,A,a,t[Y>>2]|0)|0)){l=1;u=61;break}}else if((u|0)==22){t[Y>>2]=a+(t[y>>2]|0);u=23}else if((u|0)==31){u=0;a=t[g>>2]|0;if((a|0)==(t[E>>2]|0)){if(!((wc(f)|0)<<24>>24)){l=1;u=61;break}a=t[g>>2]|0}t[g>>2]=a+1;i[a>>0]=s}do{if((u|0)==23){u=0;a=t[g>>2]|0;if(v){if((t[p>>2]|0)==(a|0))break;if((i[a+-1>>0]|0)==32)break}if((a|0)==(t[E>>2]|0)){if(!((wc(f)|0)<<24>>24)){l=1;u=61;break e}a=t[g>>2]|0}t[g>>2]=a+1;i[a>>0]=32}}while(0);a=t[Y>>2]|0}if((u|0)==4)if((t[k>>2]|0)==(A|0)){t[d>>2]=t[Y>>2];l=4;u=61}else{l=4;u=61}else if((u|0)==6)if((t[k>>2]|0)==(A|0)){t[d>>2]=a;l=4;u=61}else{l=4;u=61}else if((u|0)==49)if((t[k>>2]|0)==(A|0)){t[d>>2]=a;l=12;u=61}else{l=12;u=61}else if((u|0)==52)if((t[k>>2]|0)==(A|0)){t[d>>2]=a;l=15;u=61}else{l=15;u=61}else if((u|0)==55)if((t[k>>2]|0)==(A|0)){t[d>>2]=a;l=16;u=61}else{l=16;u=61}else if((u|0)==58)if((t[k>>2]|0)==(A|0)){t[d>>2]=a;l=23;u=61}else{l=23;u=61}h=V;return l|0}function Oc(e){e=e|0;var A=0;A=e+8|0;return((e|0)<1?0:(A|0)>0?A:0)|0}function _c(e,A){e=e|0;A=A|0;var r=0,i=0,a=0;r=h;h=h+80|0;i=r+16|0;a=r;Jc(e,a);Hc(i,a);Pc(i,A,Xc(A)|0);A=Sc(i)|0;h=r;return A|0}function qc(e,A){e=e|0;A=A|0;var r=0;while(1){r=i[e>>0]|0;if(r<<24>>24!=(i[A>>0]|0)){A=0;break}if(!(r<<24>>24)){A=1;break}A=A+1|0;e=e+1|0}return A|0}function Kc(e,A){e=e|0;A=A|0;var r=0,a=0,n=0,f=0,l=0,s=0,c=0;c=h;h=h+1040|0;l=c;a=t[e+124>>2]|0;e:do{if(!a)r=18;else{r=0;while(1){if((r|0)==256)break;t[l+(r<<2)>>2]=-1;r=r+1|0}n=l+1028|0;t[n>>2]=0;s=l+1024|0;t[s>>2]=0;f=l+1032|0;t[f>>2]=0;do{if(L5[a&63](t[e+244>>2]|0,A,l)|0){a=t[e+12>>2]|0;r=go()|0;r=I5[a&63](r)|0;t[e+236>>2]=r;if(!r){r=t[f>>2]|0;if(!r)r=1;else{F5[r&127](t[s>>2]|0);r=1}}else{r=Q5[(i[e+232>>0]<<24>>24?65:64)&127](r,l,t[n>>2]|0,t[s>>2]|0)|0;if(!r)break;t[e+240>>2]=t[s>>2];t[e+248>>2]=t[f>>2];t[e+144>>2]=r;r=0}break e}}while(0);r=t[f>>2]|0;if(r|0)F5[r&127](t[s>>2]|0);r=18}}while(0);h=c;return r|0}function $c(e,A){e=e|0;A=A|0;i[e+4>>0]=0;t[e+8>>2]=0;t[e+12>>2]=0;t[e>>2]=0;t[e+16>>2]=A;return}function eo(e,A){e=e|0;A=A|0;var r=0,a=0,n=0,f=0,l=0,s=0,c=0,o=0,u=0,b=0,h=0,w=0,k=0,d=0,v=0;o=t[e+352>>2]|0;u=e+424|0;b=e+420|0;h=e+412|0;w=e+428|0;k=o+152|0;d=e+368|0;s=o+60|0;c=o+80|0;e:while(1){f=A;A:while(1){if(!(i[A>>0]|0)){A=1;break e}a=i[f>>0]|0;switch(a<<24>>24){case 0:case 12:{v=5;break A}case 61:break A;default:{}}r=t[u>>2]|0;if((r|0)==(t[b>>2]|0)){if(!((wc(h)|0)<<24>>24)){A=0;break e}r=t[u>>2]|0;a=i[f>>0]|0}t[u>>2]=r+1;i[r>>0]=a;f=f+1|0}if((v|0)==5){v=0;A=t[u>>2]|0;if((A|0)==(t[b>>2]|0)){if(!((wc(h)|0)<<24>>24)){A=0;break}A=t[u>>2]|0}t[u>>2]=A+1;i[A>>0]=0;A=fc(e,o,t[w>>2]|0,0)|0;if(A|0)i[A+32>>0]=1;A=(i[f>>0]|0)==0?f:f+1|0;t[u>>2]=t[w>>2];continue}A=t[u>>2]|0;if((t[w>>2]|0)==(A|0))a=k;else{if((A|0)==(t[b>>2]|0)){if(!((wc(h)|0)<<24>>24)){A=0;break}A=t[u>>2]|0}t[u>>2]=A+1;i[A>>0]=0;a=fc(e,s,t[w>>2]|0,8)|0;if(!a){A=0;break}r=t[a>>2]|0;l=t[w>>2]|0;A=l;if((r|0)==(l|0)){l=Nc(c,r)|0;t[a>>2]=l;if(!l){A=0;break}A=t[w>>2]|0}t[u>>2]=A}A:while(1){l=f+1|0;r=i[l>>0]|0;n=(A|0)==(t[b>>2]|0);switch(r<<24>>24){case 0:case 12:break A;default:{}}if(n){if(!((wc(h)|0)<<24>>24)){A=0;break e}A=t[u>>2]|0;r=i[l>>0]|0}t[u>>2]=A+1;i[A>>0]=r;f=l;A=t[u>>2]|0}if(n){if(!((wc(h)|0)<<24>>24)){A=0;break}A=t[u>>2]|0}t[u>>2]=A+1;i[A>>0]=0;if(xc(e,a,0,t[w>>2]|0,d)|0){A=0;break}t[u>>2]=t[w>>2];A=(i[l>>0]|0)==0?l:f+2|0}return A|0}function Ao(e,A){e=e|0;A=A|0;var r=0,i=0;if(e|0?(r=e+4|0,i=(t[r>>2]|0)==(t[e>>2]|0),t[e>>2]=A,i):0)t[r>>2]=A;return}function ro(e,A,r){e=e|0;A=A|0;r=r|0;if(e|0){t[e+52>>2]=A;t[e+56>>2]=r}return}function io(e,A){e=e|0;A=A|0;if(e|0)t[e+60>>2]=A;return}function ao(e,A,r,a){e=e|0;A=A|0;r=r|0;a=a|0;var n=0,f=0,l=0,s=0;n=(e|0)==0;e:do{if(!(n|(r|0)<0)?!((A|0)==0&(r|0)!=0):0){f=e+476|0;switch(t[f>>2]|0){case 3:{t[e+280>>2]=33;n=0;break e}case 2:{t[e+280>>2]=36;n=0;break e}case 0:{if((t[e+472>>2]|0)==0?(to(e)|0)<<24>>24==0:0){t[e+280>>2]=1;n=0;break e}break}default:{}}t[f>>2]=1;if(r|0){n=fo(e,r)|0;if(!n){n=0;break}Q6(n|0,A|0,r|0)|0;n=lo(e,r,a)|0;break}i[e+480>>0]=a;if(!a)n=1;else{n=e+24|0;s=t[n>>2]|0;A=e+292|0;t[A>>2]=s;a=t[e+28>>2]|0;t[e+40>>2]=a;r=e+276|0;a=Q5[t[r>>2]&127](e,s,a,n)|0;t[e+280>>2]=a;if(a|0){t[e+288>>2]=t[e+284>>2];t[r>>2]=66;n=0;break}switch(t[f>>2]|0){case 3:{s=t[e+144>>2]|0;R5[t[s+48>>2]&31](s,t[A>>2]|0,t[n>>2]|0,e+404|0);t[A>>2]=t[n>>2];n=2;break e}case 1:case 0:{t[f>>2]=2;n=1;break e}default:{n=1;break e}}}}else l=3}while(0);if((l|0)==3)if(n)n=0;else{t[e+280>>2]=41;n=0}return n|0}function to(e){e=e|0;var A=0;A=e+492|0;if(!(t[A>>2]|0))t[A>>2]=so()|0;if(!(i[e+232>>0]|0))e=1;else e=eo(e,142324)|0;return e|0}function no(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;return t[e+280>>2]|0}function fo(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0,f=0,l=0,s=0,c=0,o=0,u=0,b=0,h=0,w=0,k=0;e:do{if(!e)r=0;else{if((A|0)<0){t[e+280>>2]=1;r=0;break}switch(t[e+476>>2]|0){case 3:{t[e+280>>2]=33;r=0;break e}case 2:{t[e+280>>2]=36;r=0;break e}default:{u=e+32|0;s=t[u>>2]|0;b=e+28|0;i=t[b>>2]|0;r=i;if((s-i|0)>=(A|0))break e;w=e+24|0;c=t[w>>2]|0;l=i-c|0;i=l+A|0;if((i|0)<0){t[e+280>>2]=1;r=0;break e}o=e+8|0;a=t[o>>2]|0;k=a;n=c-k|0;f=(n|0)>1024;A=f?1024:n;i=A+i|0;do{if((i|0)>(s-k|0)){r=s-c|0;r=(r|0)==0?1024:r;do{r=r<<1}while((r|0)<(i|0)&(r|0)>0);if((r|0)<1){t[e+280>>2]=1;r=0;break e}i=I5[t[e+12>>2]&63](r)|0;if(!i){t[e+280>>2]=1;r=0;break e}t[u>>2]=i+r;r=t[w>>2]|0;if(!r){r=i+(t[b>>2]|0)|0;t[b>>2]=r;t[o>>2]=i;h=22;break}else{k=r;h=k-(t[o>>2]|0)|0;h=(h|0)<1024?h:1024;Q6(i|0,r+(0-h)|0,(t[b>>2]|0)-k+h|0)|0;F5[t[e+20>>2]&127](t[o>>2]|0);t[o>>2]=i;r=i+((t[b>>2]|0)-(t[w>>2]|0))+h|0;t[b>>2]=r;i=i+h|0;h=22;break}}else if(f){i=n-A|0;D6(a|0,a+i|0,A+l|0)|0;i=0-i|0;r=(t[b>>2]|0)+i|0;t[b>>2]=r;i=(t[w>>2]|0)+i|0;h=22}}while(0);if((h|0)==22)t[w>>2]=i;t[e+288>>2]=0;t[e+284>>2]=0;t[e+292>>2]=0;break e}}}}while(0);return r|0}function lo(e,A,r){e=e|0;A=A|0;r=r|0;var a=0,n=0,f=0,l=0,s=0,c=0;e:do{if(!e)A=0;else{a=e+476|0;switch(t[a>>2]|0){case 3:{t[e+280>>2]=33;A=0;break e}case 2:{t[e+280>>2]=36;A=0;break e}case 0:{if((t[e+472>>2]|0)==0?(to(e)|0)<<24>>24==0:0){t[e+280>>2]=1;A=0;break e}break}default:{}}t[a>>2]=1;n=e+24|0;s=t[n>>2]|0;f=e+292|0;t[f>>2]=s;c=e+28|0;l=(t[c>>2]|0)+A|0;t[c>>2]=l;t[e+40>>2]=l;c=e+36|0;t[c>>2]=(t[c>>2]|0)+A;i[e+480>>0]=r;A=e+276|0;l=Q5[t[A>>2]&127](e,s,l,n)|0;t[e+280>>2]=l;if(l|0){t[e+288>>2]=t[e+284>>2];t[A>>2]=66;A=0;break}switch(t[a>>2]|0){case 3:{A=2;break}case 1:case 0:{if(!r)A=1;else{t[a>>2]=2;A=1;break e}break}default:A=1}c=t[e+144>>2]|0;R5[t[c+48>>2]&31](c,t[f>>2]|0,t[n>>2]|0,e+404|0);t[f>>2]=t[n>>2]}}while(0);return A|0}function so(){var e=0,A=0,r=0;A=h;h=h+16|0;e=A;if(!(co(e)|0)){r=uo()|0;r=(D3()|0)^r;t[e>>2]=r;e=oo(142378,P(r,2147483647)|0)|0}else e=oo(142365,t[e>>2]|0)|0;h=A;return e|0}function co(e){e=e|0;var A=0,r=0,i=0,a=0,n=0;a=h;h=h+16|0;i=T2(142365,0,a)|0;if((i|0)<0)A=0;else{A=0;while(1){n=Q3(i,e+A|0,4-A|0)|0;r=n+A|0;if((n|0)>0)if(r>>>0<4)A=r;else{A=1;break}if((t[(R2()|0)>>2]|0)!=4){A=0;break}}U4(i)|0}h=a;return A|0}function oo(e,A){e=e|0;A=A|0;var r=0,i=0,a=0;a=h;h=h+16|0;i=a;r=Te(142443)|0;if(r|0?(e1(r,142463)|0)==0:0){r=t[15712]|0;t[i>>2]=e;t[i+4>>2]=8;t[i+8>>2]=A;t[i+12>>2]=4;a3(r,142465,i)|0}h=a;return A|0}function uo(){var e=0,A=0;A=h;h=h+16|0;e=A;if(!(Oe(e|0,0)|0)){h=A;return t[e+4>>2]|0}else ge(142390,142412,819,142423);return 0}function bo(e){e=e|0;if(!e)e=41;else e=t[e+280>>2]|0;return e|0}function ho(e){e=e|0;var A=0,r=0,i=0,a=0,n=0;if(!e)e=0;else{A=e+284|0;r=t[A>>2]|0;if(r|0?(i=e+292|0,a=t[i>>2]|0,r>>>0>=a>>>0):0){n=t[e+144>>2]|0;R5[t[n+48>>2]&31](n,a,r,e+404|0);t[i>>2]=t[A>>2]}e=(t[e+404>>2]|0)+1|0}return e|0}function wo(e){e=e|0;do{switch(e|0){case 41:{e=142502;break}case 1:{e=143774;break}case 2:{e=143761;break}case 3:{e=143744;break}case 4:{e=143712;break}case 5:{e=143697;break}case 6:{e=143679;break}case 7:{e=143664;break}case 8:{e=143644;break}case 9:{e=143616;break}case 10:{e=143581;break}case 11:{e=143564;break}case 12:{e=143537;break}case 13:{e=143517;break}case 14:{e=143479;break}case 15:{e=143452;break}case 16:{e=143410;break}case 17:{e=143363;break}case 18:{e=143346;break}case 19:{e=143295;break}case 20:{e=143272;break}case 21:{e=143226;break}case 22:{e=143199;break}case 23:{e=143148;break}case 24:{e=143112;break}case 25:{e=143060;break}case 26:{e=143015;break}case 27:{e=143e3;break}case 28:{e=142974;break}case 29:{e=142936;break}case 30:{e=142904;break}case 31:{e=142871;break}case 32:{e=142837;break}case 33:{e=142820;break}case 34:{e=142799;break}case 35:{e=142783;break}case 36:{e=142766;break}case 37:{e=142722;break}case 38:{e=142642;break}case 39:{e=142583;break}case 40:{e=142519;break}default:e=0}}while(0);return e|0}function ko(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,f=0,l=0;r=t[A>>2]|0;i=0;e:while(1){if(r>>>0<=e>>>0)break;f=r+-1|0;a=n[f>>0]|0;do{if((a&248|0)==240)if((i+1|0)>>>0>3){l=5;break e}else i=0;else{if((a&240|0)==224)if((i+1|0)>>>0>2){l=8;break e}else{i=0;break}if((a&224|0)==192)if((i+1|0)>>>0>1){l=11;break e}else{i=0;break}else if(!(a&128))break e;else break}}while(0);r=f;i=i+1|0}if((l|0)==5)r=r+3|0;else if((l|0)==8)r=r+2|0;else if((l|0)==11)r=r+1|0;t[A>>2]=r;return}function vo(e,A){e=e|0;A=A|0;do{if((e|0)>=0){if((e|0)<128){i[A>>0]=e;e=1;break}if((e|0)<2048){i[A>>0]=e>>>6|192;i[A+1>>0]=e&63|128;e=2;break}if((e|0)<65536){i[A>>0]=e>>>12|224;i[A+1>>0]=e>>>6&63|128;i[A+2>>0]=e&63|128;e=3;break}if((e|0)<1114112){i[A>>0]=e>>>18|240;i[A+1>>0]=e>>>12&63|128;i[A+2>>0]=e>>>6&63|128;i[A+3>>0]=e&63|128;e=4}else e=0}else e=0}while(0);return e|0}function go(){return 1908}function mo(e,A,r,f){e=e|0;A=A|0;r=r|0;f=f|0;var l=0,s=0,c=0,o=0,u=0,b=0,h=0,w=0,k=0;l=0;while(1){if((l|0)==364){l=0;break}i[e+l>>0]=i[56576+l>>0]|0;l=l+1|0}e:while(1){if((l|0)>=128){s=5;break}switch(i[56648+l>>0]|0){case 0:case 28:break;default:if((t[A+(l<<2)>>2]|0)!=(l|0)){e=0;break e}}l=l+1|0}e:do{if((s|0)==5){k=e+72|0;u=e+372|0;b=e+884|0;h=(r|0)==0;o=0;while(1){if((o|0)>=256)break;w=t[A+(o<<2)>>2]|0;do{if((w|0)==-1){i[k+o>>0]=1;a[u+(o<<1)>>1]=-1;i[b+(o<<2)>>0]=1;i[b+(o<<2)+1>>0]=0}else{if((w|0)<0){if(h|(w|0)<-4){e=0;break e}i[k+o>>0]=3-w;i[b+(o<<2)>>0]=0;a[u+(o<<1)>>1]=0;break}if((w|0)<128){l=i[56648+w>>0]|0;switch(l<<24>>24){case 0:case 28:break;default:if((w|0)!=(o|0)){e=0;break e}}i[k+o>>0]=l;i[b+(o<<2)>>0]=1;i[b+(o<<2)+1>>0]=w;a[u+(o<<1)>>1]=(w|0)==0?-1:w&65535;break}if((po(w)|0)<0){i[k+o>>0]=0;a[u+(o<<1)>>1]=-1;i[b+(o<<2)>>0]=1;i[b+(o<<2)+1>>0]=0;break}if((w|0)>65535){e=0;break e}l=w>>>8;s=w>>>5&7;c=1<<(w&31);if(!(t[56940+((n[143788+l>>0]<<3|s)<<2)>>2]&c))i[k+o>>0]=t[56940+((n[144044+l>>0]<<3|s)<<2)>>2]&c|0?26:28;else i[k+o>>0]=22;i[b+(o<<2)>>0]=vo(w,b+(o<<2)+1|0)|0;a[u+(o<<1)>>1]=w}}while(0);o=o+1|0}t[e+368>>2]=f;t[e+364>>2]=r;if(!h){t[e+328>>2]=108;t[e+332>>2]=108;t[e+336>>2]=108;t[e+340>>2]=109;t[e+344>>2]=109;t[e+348>>2]=109;t[e+352>>2]=110;t[e+356>>2]=110;t[e+360>>2]=110}t[e+56>>2]=13;t[e+60>>2]=14}}while(0);return e|0}function po(e){e=e|0;var A=0;switch(e>>8|0){case 223:case 222:case 221:case 220:case 219:case 218:case 217:case 216:{e=-1;break}case 0:{if(!(i[56648+e>>0]|0))e=-1;else A=4;break}case 255:{if((e|1|0)==65535)e=-1;else A=4;break}default:A=4}return e|0}function Eo(e,A){e=e|0;A=A|0;e=Z5[t[e+364>>2]&127](t[e+368>>2]|0,A)|0;if(e>>>0>65535)e=0;else e=t[56940+(((n[144044+(e>>>8)>>0]|0)<<3|e>>>5&7)<<2)>>2]&1<<(e&31);return e|0}function Bo(e,A){e=e|0;A=A|0;e=Z5[t[e+364>>2]&127](t[e+368>>2]|0,A)|0;if(e>>>0>65535)e=0;else e=t[56940+(((n[143788+(e>>>8)>>0]|0)<<3|e>>>5&7)<<2)>>2]&1<<(e&31);return e|0}function yo(e,A){e=e|0;A=A|0;e=Z5[t[e+364>>2]&127](t[e+368>>2]|0,A)|0;if(e>>>0>65535)e=1;else e=(po(e)|0)>>>31;return e|0}function Co(e,A,r,a,f){e=e|0;A=A|0;r=r|0;a=a|0;f=f|0;var l=0,s=0,c=0,o=0,u=0,b=0,w=0,k=0,d=0;k=h;h=h+16|0;o=k;u=e+364|0;b=e+884|0;w=e+368|0;c=e+72|0;while(1){l=t[A>>2]|0;if((l|0)==(r|0)){f=0;break}d=n[l>>0]|0;s=b+(d<<2)+1|0;d=i[b+(d<<2)>>0]|0;e=d<<24>>24;if(!(d<<24>>24)){e=vo(Z5[t[u>>2]&127](t[w>>2]|0,l)|0,o)|0;if((e|0)>(f-(t[a>>2]|0)|0)){f=2;break}l=t[A>>2]|0;s=o;l=l+((n[c+(n[l>>0]|0)>>0]|0)+-3)|0}else{if((f-(t[a>>2]|0)|0)<(e|0)){f=2;break}l=l+1|0}t[A>>2]=l;Q6(t[a>>2]|0,s|0,e|0)|0;t[a>>2]=(t[a>>2]|0)+e}h=k;return f|0}function Io(e,A,r,i,f){e=e|0;A=A|0;r=r|0;i=i|0;f=f|0;var l=0,s=0,c=0,o=0,u=0,b=0,h=0;u=e+372|0;b=e+364|0;h=e+368|0;o=e+72|0;while(1){c=t[A>>2]|0;e=c>>>0>>0;l=t[i>>2]|0;if(!(e&l>>>0>>0))break;e=a[u+((n[c>>0]|0)<<1)>>1]|0;if(!(e<<16>>16)){e=(Z5[t[b>>2]&127](t[h>>2]|0,c)|0)&65535;l=t[A>>2]|0;s=(n[o+(n[l>>0]|0)>>0]|0)+-3|0}else{s=1;l=c}t[A>>2]=l+s;c=t[i>>2]|0;t[i>>2]=c+2;a[c>>1]=e}return((l|0)!=(f|0)|e^1?0:2)|0}function Zo(e,A,r,a){e=e|0;A=A|0;r=r|0;a=a|0;var f=0,l=0,s=0,c=0,o=0,u=0,b=0;e:do{if(A>>>0>>0){b=e+72|0;do{switch(i[b+(n[A>>0]|0)>>0]|0){case 12:{f=JK(12,e,A+1|0,r,a)|0;break e}case 13:{f=JK(13,e,A+1|0,r,a)|0;break e}case 2:{f=A+1|0;if((r-f|0)<=0){f=-1;break e}switch(i[b+(n[f>>0]|0)>>0]|0){case 16:{f=HK(e,A+2|0,r,a)|0;break e}case 15:{f=VK(e,A+2|0,r,a)|0;break e}case 7:case 6:case 5:case 29:case 24:case 22:{t[a>>2]=A;f=29;break e}default:{t[a>>2]=f;f=0;break e}}}case 9:{if((A+1|0)==(r|0)){t[a>>2]=r;f=-15;break e}else c=3;break}case 10:case 21:{c=3;break}case 30:{f=DK(e,A+1|0,r,a)|0;break e}case 35:{t[a>>2]=A+1;f=38;break e}case 20:{t[a>>2]=A+1;f=25;break e}case 4:{l=A+1|0;f=r-l|0;if((f|0)<=0){f=-26;break e}if((i[l>>0]|0)==93){if((f|0)<=1){f=-1;break e}if((i[A+2>>0]|0)==62){t[a>>2]=A+3;f=34;break e}}t[a>>2]=l;f=26;break e}case 31:{t[a>>2]=A+1;f=23;break e}case 32:{f=A+1|0;if((r-f|0)<=0){f=-24;break e}switch(i[b+(n[f>>0]|0)>>0]|0){case 33:{t[a>>2]=A+2;f=36;break e}case 15:{t[a>>2]=A+2;f=35;break e}case 34:{t[a>>2]=A+2;f=37;break e}case 32:case 36:case 35:case 11:case 21:case 10:case 9:{t[a>>2]=f;f=24;break e}default:{t[a>>2]=f;f=0;break e}}}case 36:{t[a>>2]=A+1;f=21;break e}case 11:{t[a>>2]=A+1;f=17;break e}case 19:{f=PK(e,A+1|0,r,a)|0;break e}case 5:{if((r-A|0)<2){f=-2;break e}if(!(Z5[t[e+340>>2]&127](e,A)|0))if(!(Z5[t[e+328>>2]&127](e,A)|0)){t[a>>2]=A;f=0;break e}else{f=19;l=2}else{f=18;l=2}break}case 6:{if((r-A|0)<3){f=-2;break e}if(!(Z5[t[e+344>>2]&127](e,A)|0))if(!(Z5[t[e+332>>2]&127](e,A)|0)){t[a>>2]=A;f=0;break e}else{f=19;l=3}else{f=18;l=3}break}case 7:{if((r-A|0)<4){f=-2;break e}if(!(Z5[t[e+348>>2]&127](e,A)|0))if(!(Z5[t[e+336>>2]&127](e,A)|0)){t[a>>2]=A;f=0;break e}else{f=19;l=4}else{f=18;l=4}break}case 24:case 22:{f=18;l=1;break}case 23:case 27:case 26:case 25:{f=19;l=1;break}default:{t[a>>2]=A;f=0;break e}}}while(0);if((c|0)==3){s=r;l=A;A:while(1){f=l;l=l+1|0;if((s-l|0)<=0){c=18;break}switch(i[b+(n[l>>0]|0)>>0]|0){case 10:case 21:continue A;case 9:break;default:{c=17;break A}}if((f+2|0)==(r|0)){c=17;break}}if((c|0)==17){t[a>>2]=l;f=15;break}else if((c|0)==18){t[a>>2]=l;f=15;break}}c=e+328|0;o=e+332|0;u=e+336|0;s=A+l|0;A:while(1){l=r-s|0;if((l|0)<=0){c=99;break}switch(i[b+(n[s>>0]|0)>>0]|0){case 29:{c=56;break A}case 10:case 9:case 21:case 30:case 20:case 36:case 35:case 32:case 11:{c=70;break A}case 34:{c=89;break A}case 33:{c=92;break A}case 15:{c=95;break A}case 27:case 26:case 25:case 24:case 22:{A=f;s=s+1|0;f=A;continue A}case 5:{if((l|0)<2){f=-2;break e}if(!(Z5[t[c>>2]&127](e,s)|0)){c=60;break A}A=f;s=s+2|0;f=A;continue A}case 6:{if((l|0)<3){f=-2;break e}if(!(Z5[t[o>>2]&127](e,s)|0)){c=64;break A}A=f;s=s+3|0;f=A;continue A}case 7:{if((l|0)<4){f=-2;break e}if(!(Z5[t[u>>2]&127](e,s)|0)){c=68;break A}A=f;s=s+4|0;f=A;continue A}case 23:{l=s+1|0;switch(f&63){case 18:break;case 41:{f=19;s=l;continue A}default:{A=f;s=l;f=A;continue A}}f=r-l|0;if((f|0)<=0){f=-1;break e}switch(i[b+(n[l>>0]|0)>>0]|0){case 29:{c=74;break A}case 27:case 26:case 25:case 24:case 22:{f=41;s=s+2|0;continue A}case 5:{if((f|0)<2){f=-2;break e}if(!(Z5[t[c>>2]&127](e,l)|0)){c=78;break A}f=41;s=s+3|0;continue A}case 6:{if((f|0)<3){f=-2;break e}if(!(Z5[t[o>>2]&127](e,l)|0)){c=82;break A}f=41;s=s+4|0;continue A}case 7:{if((f|0)<4){f=-2;break e}if(!(Z5[t[u>>2]&127](e,l)|0)){c=86;break A}f=41;s=s+5|0;continue A}default:{f=19;s=l;continue A}}}default:{c=98;break A}}}switch(c|0){case 56:{t[a>>2]=s;f=0;break e}case 60:{t[a>>2]=s;f=0;break e}case 64:{t[a>>2]=s;f=0;break e}case 68:{t[a>>2]=s;f=0;break e}case 70:{t[a>>2]=s;break e}case 74:{t[a>>2]=l;f=0;break e}case 78:{t[a>>2]=l;f=0;break e}case 82:{t[a>>2]=l;f=0;break e}case 86:{t[a>>2]=l;f=0;break e}case 89:if((f|0)==19){t[a>>2]=s;f=0;break e}else{t[a>>2]=s+1;f=32;break e}case 92:if((f|0)==19){t[a>>2]=s;f=0;break e}else{t[a>>2]=s+1;f=31;break e}case 95:if((f|0)==19){t[a>>2]=s;f=0;break e}else{t[a>>2]=s+1;f=30;break e}case 98:{t[a>>2]=s;f=0;break e}case 99:{f=0-f|0;break e}}}else f=-4}while(0);return f|0}function Go(e,A,r,a){e=e|0;A=A|0;r=r|0;a=a|0;var f=0,l=0,s=0,c=0,o=0,u=0;e:do{if(A>>>0>>0){u=e+72|0;A:do{switch(i[u+(n[A>>0]|0)>>0]|0){case 2:{f=YK(e,A+1|0,r,a)|0;break e}case 3:{f=QK(e,A+1|0,r,a)|0;break e}case 9:{f=A+1|0;if((r-f|0)<=0){f=-3;break e}t[a>>2]=(i[u+(n[f>>0]|0)>>0]|0)==10?A+2|0:f;f=7;break e}case 10:{t[a>>2]=A+1;f=7;break e}case 4:{l=A+1|0;if((r-l|0)<=0){f=-5;break e}if((i[l>>0]|0)==93){f=A+2|0;if((r-f|0)<=0){f=-5;break e}if((i[f>>0]|0)==62){t[a>>2]=f;f=0;break e}else f=r}else f=r;break}case 5:{f=r;if((f-A|0)<2){f=-2;break e}if(!(Z5[t[e+352>>2]&127](e,A)|0)){l=A+2|0;break A}else{t[a>>2]=A;f=0;break e}}case 6:{f=r;if((f-A|0)<3){f=-2;break e}if(!(Z5[t[e+356>>2]&127](e,A)|0)){l=A+3|0;break A}else{t[a>>2]=A;f=0;break e}}case 7:{f=r;if((f-A|0)<4){f=-2;break e}if(!(Z5[t[e+360>>2]&127](e,A)|0)){l=A+4|0;break A}else{t[a>>2]=A;f=0;break e}}case 8:case 1:case 0:{t[a>>2]=A;f=0;break e}default:{l=A+1|0;f=r}}}while(0);s=e+352|0;c=e+356|0;o=e+360|0;A:while(1){r=f-l|0;if((r|0)<=0){r=49;break}switch(i[u+(n[l>>0]|0)>>0]|0){case 10:case 9:case 8:case 1:case 0:case 2:case 3:{r=47;break A}case 5:{if((r|0)<2){r=32;break A}if(Z5[t[s>>2]&127](e,l)|0){r=32;break A}l=l+2|0;continue A}case 6:{if((r|0)<3){r=36;break A}if(Z5[t[c>>2]&127](e,l)|0){r=36;break A}l=l+3|0;continue A}case 7:{if((r|0)<4){r=40;break A}if(Z5[t[o>>2]&127](e,l)|0){r=40;break A}l=l+4|0;continue A}case 4:{if((r|0)<=1){r=47;break A}A=l+1|0;if((i[A>>0]|0)!=93){l=A;continue A}if((r|0)<=2){r=47;break A}l=l+2|0;if((i[l>>0]|0)==62){r=46;break A}else{l=A;continue A}}default:{l=l+1|0;continue A}}}if((r|0)==32){t[a>>2]=l;f=6;break}else if((r|0)==36){t[a>>2]=l;f=6;break}else if((r|0)==40){t[a>>2]=l;f=6;break}else if((r|0)==46){t[a>>2]=l;f=0;break}else if((r|0)==47){t[a>>2]=l;f=6;break}else if((r|0)==49){t[a>>2]=l;f=6;break}}else f=-4}while(0);return f|0}function Lo(e,A,r,a){e=e|0;A=A|0;r=r|0;a=a|0;var f=0,l=0,s=0,c=0,o=0;e:do{if(A>>>0>>0){o=e+72|0;A:do{switch(i[o+(n[A>>0]|0)>>0]|0){case 4:{l=A+1|0;f=r;if((f-l|0)<=0){f=-1;break e}if((i[l>>0]|0)==93){r=A+2|0;if((f-r|0)<=0){f=-1;break e}if((i[r>>0]|0)==62){t[a>>2]=A+3;f=40;break e}}break}case 9:{f=A+1|0;if((r-f|0)<=0){f=-1;break e}t[a>>2]=(i[o+(n[f>>0]|0)>>0]|0)==10?A+2|0:f;f=7;break e}case 10:{t[a>>2]=A+1;f=7;break e}case 5:{f=r;if((f-A|0)<2){f=-2;break e}if(!(Z5[t[e+352>>2]&127](e,A)|0)){l=A+2|0;break A}else{t[a>>2]=A;f=0;break e}}case 6:{f=r;if((f-A|0)<3){f=-2;break e}if(!(Z5[t[e+356>>2]&127](e,A)|0)){l=A+3|0;break A}else{t[a>>2]=A;f=0;break e}}case 7:{f=r;if((f-A|0)<4){f=-2;break e}if(!(Z5[t[e+360>>2]&127](e,A)|0)){l=A+4|0;break A}else{t[a>>2]=A;f=0;break e}}case 8:case 1:case 0:{t[a>>2]=A;f=0;break e}default:{l=A+1|0;f=r}}}while(0);A=e+352|0;s=e+356|0;c=e+360|0;A:while(1){r=f-l|0;if((r|0)<=0){r=39;break}switch(i[o+(n[l>>0]|0)>>0]|0){case 4:case 10:case 9:case 8:case 1:case 0:{r=37;break A}case 5:{if((r|0)<2){r=30;break A}if(!(Z5[t[A>>2]&127](e,l)|0))r=2;else{r=30;break A}break}case 6:{if((r|0)<3){r=33;break A}if(!(Z5[t[s>>2]&127](e,l)|0))r=3;else{r=33;break A}break}case 7:{if((r|0)<4){r=36;break A}if(!(Z5[t[c>>2]&127](e,l)|0))r=4;else{r=36;break A}break}default:r=1}l=l+r|0}if((r|0)==30){t[a>>2]=l;f=6;break}else if((r|0)==33){t[a>>2]=l;f=6;break}else if((r|0)==36){t[a>>2]=l;f=6;break}else if((r|0)==37){t[a>>2]=l;f=6;break}else if((r|0)==39){t[a>>2]=l;f=6;break}}else f=-4}while(0);return f|0}function Qo(e,A,r,i,a,n,f,l,s){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;n=n|0;f=f|0;l=l|0;s=s|0;var o=0,u=0,b=0,h=0,w=0,k=0,d=0,v=0,g=0,m=0;if(!((e|0)>-1&((A|0)>0&(r|0)>0)))ge(95162,94943,843,95188);l=uK(A,r,e,f,l,1)|0;if(!l)ge(95233,94943,847,95188);m=t[l+20>>2]|0;g=t[l+24>>2]|0;u=A+1|0;o=0;while(1){if((o|0)==(u|0))break;t[m+(o<<2)>>2]=0;o=o+1|0}e:do{switch(f|0){case 1:{f=t[l+28>>2]|0;o=0;while(1){if((o|0)>=(e|0)){k=0;break}u=t[i+(o<<2)>>2]|0;if(!((u|0)>-1&(u|0)<(A|0))){v=13;break}d=t[a+(o<<2)>>2]|0;if(!((d|0)>-1&(d|0)<(r|0))){v=13;break}d=m+(u+1<<2)|0;t[d>>2]=(t[d>>2]|0)+1;o=o+1|0}if((v|0)==13)ge(138394,94943,862,95188);while(1){if((k|0)==(A|0)){o=0;break}v=k+1|0;r=m+(v<<2)|0;t[r>>2]=(t[r>>2]|0)+(t[m+(k<<2)>>2]|0);k=v}while(1){if((o|0)==(e|0))break;d=m+(t[i+(o<<2)>>2]<<2)|0;v=t[d>>2]|0;c[f+(v<<3)>>3]=+c[n+(o<<3)>>3];r=t[a+(o<<2)>>2]|0;t[d>>2]=v+1;t[g+(v<<2)>>2]=r;o=o+1|0}while(1){if((A|0)<=0)break e;a=A+-1|0;t[m+(A<<2)>>2]=t[m+(a<<2)>>2];A=a}}case 2:{f=t[l+28>>2]|0;o=0;while(1){if((o|0)>=(e|0)){d=0;break}u=t[i+(o<<2)>>2]|0;if(!((u|0)>-1&(u|0)<(A|0))){v=25;break}k=t[a+(o<<2)>>2]|0;if(!((k|0)>-1&(k|0)<(r|0))){v=25;break}k=m+(u+1<<2)|0;t[k>>2]=(t[k>>2]|0)+1;o=o+1|0}if((v|0)==25)ge(138394,94943,880,95188);while(1){if((d|0)==(A|0)){o=0;break}v=d+1|0;r=m+(v<<2)|0;t[r>>2]=(t[r>>2]|0)+(t[m+(d<<2)>>2]|0);d=v}while(1){if((o|0)==(e|0))break;d=m+(t[i+(o<<2)>>2]<<2)|0;v=t[d>>2]|0;r=v<<1;c[f+(r<<3)>>3]=+c[n>>3];c[f+((r|1)<<3)>>3]=+c[n+8>>3];r=t[a+(o<<2)>>2]|0;t[d>>2]=v+1;t[g+(v<<2)>>2]=r;n=n+16|0;o=o+1|0}while(1){if((A|0)<=0)break e;a=A+-1|0;t[m+(A<<2)>>2]=t[m+(a<<2)>>2];A=a}}case 4:{f=t[l+28>>2]|0;o=0;while(1){if((o|0)>=(e|0)){w=0;break}u=t[i+(o<<2)>>2]|0;if(!((u|0)>-1&(u|0)<(A|0))){v=37;break}d=t[a+(o<<2)>>2]|0;if(!((d|0)>-1&(d|0)<(r|0))){v=37;break}d=m+(u+1<<2)|0;t[d>>2]=(t[d>>2]|0)+1;o=o+1|0}if((v|0)==37)ge(138394,94943,899,95188);while(1){if((w|0)==(A|0)){o=0;break}v=w+1|0;r=m+(v<<2)|0;t[r>>2]=(t[r>>2]|0)+(t[m+(w<<2)>>2]|0);w=v}while(1){if((o|0)==(e|0))break;d=i+(o<<2)|0;t[f+(t[m+(t[d>>2]<<2)>>2]<<2)>>2]=t[n+(o<<2)>>2];r=t[a+(o<<2)>>2]|0;d=m+(t[d>>2]<<2)|0;v=t[d>>2]|0;t[d>>2]=v+1;t[g+(v<<2)>>2]=r;o=o+1|0}while(1){if((A|0)<=0)break e;a=A+-1|0;t[m+(A<<2)>>2]=t[m+(a<<2)>>2];A=a}}case 8:{n=0;while(1){if((n|0)>=(e|0)){b=0;break}o=t[i+(n<<2)>>2]|0;if(!((o|0)>-1&(o|0)<(A|0))){v=48;break}d=t[a+(n<<2)>>2]|0;if(!((d|0)>-1&(d|0)<(r|0))){v=48;break}d=m+(o+1<<2)|0;t[d>>2]=(t[d>>2]|0)+1;n=n+1|0}if((v|0)==48)ge(138394,94943,915,95188);while(1){if((b|0)==(A|0)){n=0;break}v=b+1|0;r=m+(v<<2)|0;t[r>>2]=(t[r>>2]|0)+(t[m+(b<<2)>>2]|0);b=v}while(1){if((n|0)==(e|0))break;r=t[a+(n<<2)>>2]|0;d=m+(t[i+(n<<2)>>2]<<2)|0;v=t[d>>2]|0;t[d>>2]=v+1;t[g+(v<<2)>>2]=r;n=n+1|0}while(1){if((A|0)<=0)break e;a=A+-1|0;t[m+(A<<2)>>2]=t[m+(a<<2)>>2];A=a}}case 16:{o=0;while(1){if((o|0)>=(e|0)){h=0;break}u=t[i+(o<<2)>>2]|0;if(!((u|0)>-1&(u|0)<(A|0))){v=59;break}d=t[a+(o<<2)>>2]|0;if(!((d|0)>-1&(d|0)<(r|0))){v=59;break}d=m+(u+1<<2)|0;t[d>>2]=(t[d>>2]|0)+1;o=o+1|0}if((v|0)==59)ge(138394,94943,930,95188);while(1){if((h|0)==(A|0))break;v=h+1|0;r=m+(v<<2)|0;t[r>>2]=(t[r>>2]|0)+(t[m+(h<<2)>>2]|0);h=v}Q6(t[l+28>>2]|0,n|0,P(t[l+40>>2]|0,e)|0)|0;n=0;while(1){if((n|0)==(e|0))break;r=t[a+(n<<2)>>2]|0;d=m+(t[i+(n<<2)>>2]<<2)|0;v=t[d>>2]|0;t[d>>2]=v+1;t[g+(v<<2)>>2]=r;n=n+1|0}while(1){if((A|0)<=0)break e;a=A+-1|0;t[m+(A<<2)>>2]=t[m+(a<<2)>>2];A=a}}default:ge(138394,94943,944,95188)}}while(0);t[m>>2]=0;t[l+8>>2]=e;if(s)l=Do(l,s)|0;return l|0}function Do(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0,f=0,l=0.0,s=0,o=0,u=0,b=0,h=0,w=0,k=0,d=0,v=0,g=0,m=0,p=0,E=0;g=t[e+20>>2]|0;m=t[e+24>>2]|0;i=t[e+16>>2]|0;d=t[e+4>>2]|0;e:do{if(A){u=d<<2;b=$F(u)|0;r=0;while(1){if((r|0)>=(d|0))break;t[b+(r<<2)>>2]=-1;r=r+1|0}A:do{switch(i|0){case 1:{s=t[e+28>>2]|0;a=0;i=t[g>>2]|0;r=0;r:while(1){if((r|0)>=(t[e>>2]|0)){p=a;E=b;break A}o=r+1|0;u=g+(o<<2)|0;f=g+(r<<2)|0;r=a;while(1){A=t[u>>2]|0;if((i|0)>=(A|0))break;A=m+(i<<2)|0;a=t[A>>2]|0;n=t[b+(a<<2)>>2]|0;if((n|0)<(t[f>>2]|0)){t[m+(r<<2)>>2]=a;c[s+(r<<3)>>3]=+c[s+(i<<3)>>3];t[b+(t[A>>2]<<2)>>2]=r;r=r+1|0}else{if((t[m+(n<<2)>>2]|0)!=(a|0))break r;v=s+(n<<3)|0;c[v>>3]=+c[v>>3]+ +c[s+(i<<3)>>3]}i=i+1|0}t[u>>2]=r;a=r;i=A;r=o}ge(95235,94943,1792,95260);break}case 2:{v=t[e+28>>2]|0;switch(A|0){case 1:{A=t[g>>2]|0;i=0;r=0;r:while(1){if((i|0)>=(t[e>>2]|0)){p=r;E=b;break A}s=i+1|0;o=g+(s<<2)|0;f=g+(i<<2)|0;while(1){i=t[o>>2]|0;if((A|0)>=(i|0))break;i=m+(A<<2)|0;a=t[i>>2]|0;n=t[b+(a<<2)>>2]|0;if((n|0)<(t[f>>2]|0)){t[m+(r<<2)>>2]=a;k=A<<1;d=r<<1;c[v+(d<<3)>>3]=+c[v+(k<<3)>>3];c[v+((d|1)<<3)>>3]=+c[v+((k|1)<<3)>>3];t[b+(t[i>>2]<<2)>>2]=r;r=r+1|0}else{if((t[m+(n<<2)>>2]|0)!=(a|0))break r;k=A<<1;d=n<<1;w=v+(d<<3)|0;c[w>>3]=+c[w>>3]+ +c[v+(k<<3)>>3];d=v+((d|1)<<3)|0;c[d>>3]=+c[d>>3]+ +c[v+((k|1)<<3)>>3]}A=A+1|0}t[o>>2]=r;A=i;i=s}ge(95235,94943,1815,95260);break}case 4:{A=t[g>>2]|0;i=0;r=0;r:while(1){if((i|0)>=(t[e>>2]|0)){p=r;E=b;break A}o=i+1|0;s=g+(o<<2)|0;f=g+(i<<2)|0;while(1){i=t[s>>2]|0;if((A|0)>=(i|0))break;i=m+(A<<2)|0;a=t[i>>2]|0;n=t[b+(a<<2)>>2]|0;if((n|0)<(t[f>>2]|0)){t[m+(r<<2)>>2]=a;k=A<<1;d=r<<1;c[v+(d<<3)>>3]=+c[v+(k<<3)>>3];c[v+((d|1)<<3)>>3]=+c[v+((k|1)<<3)>>3];t[b+(t[i>>2]<<2)>>2]=r;r=r+1|0}else{if((t[m+(n<<2)>>2]|0)!=(a|0))break r;k=A<<1;d=n<<1;w=v+(d<<3)|0;c[w>>3]=+c[w>>3]+ +c[v+(k<<3)>>3];c[v+((d|1)<<3)>>3]=+c[v+((k|1)<<3)>>3]}A=A+1|0}t[s>>2]=r;A=i;i=o}ge(95235,94943,1835,95260);break}case 2:{k=~~+c[v+8>>3];f=t[e>>2]|0;i=k;n=0;r=0;r:while(1){if((n|0)>=(f|0))break;s=n+1|0;o=t[g+(s<<2)>>2]|0;a=r;A=k;r=t[g+(n<<2)>>2]|0;while(1){if((r|0)>=(o|0)){k=A;n=s;r=a;continue r}k=~~+c[v+((a<<1|1)<<3)>>3];a=a+1|0;i=(i|0)>(k|0)?i:k;A=(A|0)<(k|0)?A:k;r=r+1|0}}G2(b);w=i-k+1|0;h=$F(P(w,u)|0)|0;w=P(w,d)|0;r=0;while(1){if((r|0)>=(w|0))break;t[h+(r<<2)>>2]=-1;r=r+1|0}r=0;A=t[g>>2]|0;i=0;r:while(1){if((i|0)>=(t[e>>2]|0)){p=r;E=h;break A}u=i+1|0;b=g+(u<<2)|0;o=g+(i<<2)|0;while(1){i=t[b>>2]|0;if((A|0)>=(i|0))break;i=t[m+(A<<2)>>2]|0;a=A<<1;l=+c[v+((a|1)<<3)>>3];n=(P(~~l-k|0,d)|0)+i|0;f=h+(n<<2)|0;s=t[f>>2]|0;if((s|0)<(t[o>>2]|0)){t[m+(r<<2)>>2]=i;s=r<<1;c[v+(s<<3)>>3]=+c[v+(a<<3)>>3];c[v+((s|1)<<3)>>3]=l;t[f>>2]=r;r=r+1|0}else{if((n|0)>=(w|0)){r=55;break r}if((t[m+(s<<2)>>2]|0)!=(i|0)){r=57;break r}s=s<<1;f=v+(s<<3)|0;c[f>>3]=+c[f>>3]+ +c[v+(a<<3)>>3];c[v+((s|1)<<3)>>3]=l}A=A+1|0}t[b>>2]=r;A=i;i=u}if((r|0)==55)ge(95292,94943,1869,95260);else if((r|0)==57)ge(95313,94943,1870,95260);break}case 3:{a=~~+c[v+8>>3];f=t[e>>2]|0;r=a;i=0;n=0;r:while(1){if((n|0)>=(f|0))break;s=n+1|0;o=t[g+(s<<2)>>2]|0;A=r;r=t[g+(n<<2)>>2]|0;while(1){if((r|0)>=(o|0)){r=A;n=s;continue r}k=~~+c[v+(i<<1<<3)>>3];A=(A|0)>(k|0)?A:k;a=(a|0)>(k|0)?a:k;i=i+1|0;r=r+1|0}}G2(b);i=r-a+1|0;h=$F(P(i,u)|0)|0;i=P(i,d)|0;r=0;while(1){if((r|0)>=(i|0))break;t[h+(r<<2)>>2]=-1;r=r+1|0}r=0;A=t[g>>2]|0;i=0;r:while(1){if((i|0)>=(t[e>>2]|0)){p=r;E=h;break A}u=i+1|0;b=g+(u<<2)|0;o=g+(i<<2)|0;while(1){i=t[b>>2]|0;if((A|0)>=(i|0))break;i=t[m+(A<<2)>>2]|0;n=A<<1;l=+c[v+(n<<3)>>3];f=h+((P(~~l-a|0,d)|0)+i<<2)|0;s=t[f>>2]|0;if((s|0)<(t[o>>2]|0)){t[m+(r<<2)>>2]=i;k=r<<1;c[v+(k<<3)>>3]=l;c[v+((k|1)<<3)>>3]=+c[v+((n|1)<<3)>>3];t[f>>2]=r;r=r+1|0}else{if((t[m+(s<<2)>>2]|0)!=(i|0))break r;k=s<<1;c[v+(k<<3)>>3]=l;k=v+((k|1)<<3)|0;c[k>>3]=+c[k>>3]+ +c[v+((n|1)<<3)>>3]}A=A+1|0}t[b>>2]=r;A=i;i=u}ge(95313,94943,1905,95260);break}default:{p=0;E=b;break A}}break}case 4:{s=t[e+28>>2]|0;i=0;r=0;A=t[g>>2]|0;r:while(1){if((i|0)>=(t[e>>2]|0)){p=r;E=b;break A}o=i+1|0;u=g+(o<<2)|0;f=g+(i<<2)|0;while(1){a=t[u>>2]|0;if((A|0)>=(a|0))break;i=m+(A<<2)|0;a=t[i>>2]|0;n=t[b+(a<<2)>>2]|0;if((n|0)<(t[f>>2]|0)){t[m+(r<<2)>>2]=a;t[s+(r<<2)>>2]=t[s+(A<<2)>>2];t[b+(t[i>>2]<<2)>>2]=r;r=r+1|0}else{if((t[m+(n<<2)>>2]|0)!=(a|0))break r;v=s+(n<<2)|0;t[v>>2]=(t[v>>2]|0)+(t[s+(A<<2)>>2]|0)}A=A+1|0}t[u>>2]=r;i=o;A=a}ge(95235,94943,1929,95260);break}case 8:{i=0;r=0;A=t[g>>2]|0;r:while(1){if((i|0)>=(t[e>>2]|0)){p=r;E=b;break A}s=i+1|0;o=g+(s<<2)|0;f=g+(i<<2)|0;while(1){a=t[o>>2]|0;if((A|0)>=(a|0))break;i=m+(A<<2)|0;a=t[i>>2]|0;n=t[b+(a<<2)>>2]|0;if((n|0)>=(t[f>>2]|0)){if((t[m+(n<<2)>>2]|0)!=(a|0))break r}else{t[m+(r<<2)>>2]=a;t[b+(t[i>>2]<<2)>>2]=r;r=r+1|0}A=A+1|0}t[o>>2]=r;i=s;A=a}ge(95235,94943,1948,95260);break}default:{e=0;break e}}}while(0);t[e+8>>2]=p;G2(E)}}while(0);return e|0}function zo(e,A,r,i,a,t,n){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;t=t|0;n=n|0;if(!i)Wo(e,r,a,n,A,t);else Yo(e,r,a,n,A,t);return}function Wo(e,A,r,i,a,n){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;n=n|0;var f=0,l=0,s=0,o=0,u=0,b=0,h=0,w=0,k=0,d=0,v=0,g=0.0,m=0;if((t[e+32>>2]|0)!=1)ge(94919,94943,1121,95483);if((t[e+16>>2]|0)!=1)ge(95364,94943,1122,95483);w=t[e+28>>2]|0;k=t[e+20>>2]|0;d=t[e+24>>2]|0;v=t[e>>2]|0;h=t[e+4>>2]|0;e=t[r>>2]|0;f=(e|0)!=0;if(!a){if(!f)e=$F(P(i<<3,v)|0)|0;a=0;e:while(1){if((a|0)>=(v|0))break;b=P(a,i)|0;f=0;while(1){if((f|0)>=(i|0))break;c[e+(f+b<<3)>>3]=0.0;f=f+1|0}o=a+1|0;u=t[k+(o<<2)>>2]|0;f=t[k+(a<<2)>>2]|0;while(1){if((f|0)>=(u|0)){a=o;continue e}l=w+(f<<3)|0;s=d+(f<<2)|0;a=0;while(1){if((a|0)>=(i|0))break;g=+c[A+((P(t[s>>2]|0,i)|0)+a<<3)>>3]*+c[l>>3];h=e+(a+b<<3)|0;c[h>>3]=+c[h>>3]+g;a=a+1|0}f=f+1|0}}if(n)Mo(e,v,i)}else{if(!f)e=$F(P(i<<3,h)|0)|0;a=P(h,i)|0;f=0;while(1){if((f|0)>=(a|0)){f=0;break}c[e+(f<<3)>>3]=0.0;f=f+1|0}e:while(1){if((f|0)>=(v|0))break;o=f+1|0;u=t[k+(o<<2)>>2]|0;b=P(f,i)|0;f=t[k+(f<<2)>>2]|0;while(1){if((f|0)>=(u|0)){f=o;continue e}l=w+(f<<3)|0;s=d+(f<<2)|0;a=0;while(1){if((a|0)>=(i|0))break;m=e+((P(t[s>>2]|0,i)|0)+a<<3)|0;c[m>>3]=+c[m>>3]+ +c[A+(a+b<<3)>>3]*+c[l>>3];a=a+1|0}f=f+1|0}}if(n)Mo(e,h,i)}t[r>>2]=e;return}function Yo(e,A,r,i,a,n){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;n=n|0;var f=0,l=0,s=0,c=0,o=0,u=0;u=h;h=h+16|0;o=u;if((t[e+32>>2]|0)!=1)ge(94919,94943,1163,95335);if((t[e+16>>2]|0)!=1)ge(95364,94943,1164,95335);f=t[r>>2]|0;s=t[e>>2]|0;c=t[e+4>>2]|0;l=(f|0)!=0;if(!a){if(!l)f=$F(P(i<<3,s)|0)|0;l=0;while(1){if((l|0)>=(i|0))break;t[o>>2]=f+((P(l,s)|0)<<3);Fo(e,A+((P(l,c)|0)<<3)|0,o,0);l=l+1|0}if(!n)Mo(f,i,s)}else{if(!l)f=$F(P(i<<3,c)|0)|0;l=0;while(1){if((l|0)>=(i|0))break;t[o>>2]=f+((P(l,c)|0)<<3);Fo(e,A+((P(l,s)|0)<<3)|0,o,a);l=l+1|0}if(!n)Mo(f,i,c)}t[r>>2]=f;h=u;return}function Fo(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0,n=0.0,f=0,l=0,s=0,o=0,u=0,b=0,h=0,w=0.0;if((t[e+32>>2]|0)!=1)ge(94919,94943,1222,95392);f=t[e+16>>2]|0;switch(f|0){case 4:case 1:break;default:ge(95421,94943,1223,95392)}b=t[e+20>>2]|0;u=t[e+24>>2]|0;h=t[e>>2]|0;s=t[e+4>>2]|0;l=t[r>>2]|0;e:do{switch(f|0){case 1:{o=t[e+28>>2]|0;e=(i|0)!=0;a=(l|0)!=0;if(!A){if(!e){if(a)a=l;else a=$F(h<<3)|0;e=0;A:while(1){if((e|0)>=(h|0))break e;f=a+(e<<3)|0;c[f>>3]=0.0;l=e+1|0;i=t[b+(l<<2)>>2]|0;e=t[b+(e<<2)>>2]|0;n=0.0;while(1){if((e|0)>=(i|0)){e=l;continue A}w=n+ +c[o+(e<<3)>>3];c[f>>3]=w;e=e+1|0;n=w}}}if(!a)l=$F(s<<3)|0;e=0;while(1){if((e|0)>=(s|0)){e=0;break}c[l+(e<<3)>>3]=0.0;e=e+1|0}A:while(1){if((e|0)>=(h|0)){a=l;break e}a=e+1|0;f=t[b+(a<<2)>>2]|0;e=t[b+(e<<2)>>2]|0;while(1){if((e|0)>=(f|0)){e=a;continue A}A=l+(t[u+(e<<2)>>2]<<3)|0;c[A>>3]=+c[A>>3]+ +c[o+(e<<3)>>3];e=e+1|0}}}else{if(!e){if(a)a=l;else a=$F(h<<3)|0;e=0;A:while(1){if((e|0)>=(h|0))break e;f=a+(e<<3)|0;c[f>>3]=0.0;l=e+1|0;i=t[b+(l<<2)>>2]|0;e=t[b+(e<<2)>>2]|0;n=0.0;while(1){if((e|0)>=(i|0)){e=l;continue A}w=n+ +c[A+(t[u+(e<<2)>>2]<<3)>>3]*+c[o+(e<<3)>>3];c[f>>3]=w;e=e+1|0;n=w}}}if(a)a=l;else a=$F(s<<3)|0;e=0;while(1){if((e|0)>=(s|0)){e=0;break}c[a+(e<<3)>>3]=0.0;e=e+1|0}A:while(1){if((e|0)>=(h|0))break e;f=e+1|0;l=t[b+(f<<2)>>2]|0;i=A+(e<<3)|0;e=t[b+(e<<2)>>2]|0;while(1){if((e|0)>=(l|0)){e=f;continue A}s=a+(t[u+(e<<2)>>2]<<3)|0;c[s>>3]=+c[s>>3]+ +c[i>>3]*+c[o+(e<<3)>>3];e=e+1|0}}}}case 4:{o=t[e+28>>2]|0;e=(i|0)!=0;a=(l|0)!=0;if(!A){if(!e){if(a)a=l;else a=$F(h<<3)|0;e=0;A:while(1){if((e|0)>=(h|0))break e;f=a+(e<<3)|0;c[f>>3]=0.0;l=e+1|0;i=t[b+(l<<2)>>2]|0;e=t[b+(e<<2)>>2]|0;n=0.0;while(1){if((e|0)>=(i|0)){e=l;continue A}w=n+ +(t[o+(e<<2)>>2]|0);c[f>>3]=w;e=e+1|0;n=w}}}if(!a)l=$F(s<<3)|0;e=0;while(1){if((e|0)>=(s|0)){e=0;break}c[l+(e<<3)>>3]=0.0;e=e+1|0}A:while(1){if((e|0)>=(h|0)){a=l;break e}a=e+1|0;f=t[b+(a<<2)>>2]|0;e=t[b+(e<<2)>>2]|0;while(1){if((e|0)>=(f|0)){e=a;continue A}A=l+(t[u+(e<<2)>>2]<<3)|0;c[A>>3]=+c[A>>3]+ +(t[o+(e<<2)>>2]|0);e=e+1|0}}}else{if(!e){if(a)a=l;else a=$F(h<<3)|0;e=0;A:while(1){if((e|0)>=(h|0))break e;f=a+(e<<3)|0;c[f>>3]=0.0;l=e+1|0;i=t[b+(l<<2)>>2]|0;e=t[b+(e<<2)>>2]|0;n=0.0;while(1){if((e|0)>=(i|0)){e=l;continue A}w=n+ +c[A+(t[u+(e<<2)>>2]<<3)>>3]*+(t[o+(e<<2)>>2]|0);c[f>>3]=w;e=e+1|0;n=w}}}if(a)a=l;else a=$F(s<<3)|0;e=0;while(1){if((e|0)>=(s|0)){e=0;break}c[a+(e<<3)>>3]=0.0;e=e+1|0}A:while(1){if((e|0)>=(h|0))break e;f=e+1|0;l=t[b+(f<<2)>>2]|0;i=A+(e<<3)|0;e=t[b+(e<<2)>>2]|0;while(1){if((e|0)>=(l|0)){e=f;continue A}s=a+(t[u+(e<<2)>>2]<<3)|0;c[s>>3]=+c[s>>3]+ +c[i>>3]*+(t[o+(e<<2)>>2]|0);e=e+1|0}}}}default:ge(138394,94943,1315,95392)}}while(0);t[r>>2]=a;return}function Mo(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0,t=0,n=0;i=P(A<<3,r)|0;t=$F(i)|0;Q6(t|0,e|0,i|0)|0;i=0;while(1){if((i|0)>=(A|0))break;n=P(i,r)|0;a=0;while(1){if((a|0)>=(r|0))break;c[e+((P(a,A)|0)+i<<3)>>3]=+c[t+(a+n<<3)>>3];a=a+1|0}i=i+1|0}G2(t);return}function Vo(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0,f=0,l=0,s=0,o=0,u=0,b=0,h=0,w=0,k=0,d=0,v=0,g=0,m=0,p=0,E=0,B=0,y=0,C=0,I=0,Z=0;B=t[e+20>>2]|0;y=t[e+24>>2]|0;C=t[A+20>>2]|0;I=t[A+24>>2]|0;E=t[e+32>>2]|0;if(!((E|0)==1?(E|0)==(t[A+32>>2]|0):0))ge(95005,94943,1408,95512);E=t[e>>2]|0;if(((t[e+4>>2]|0)==(t[A>>2]|0)?(b=t[e+16>>2]|0,(b|0)==(t[A+16>>2]|0)):0)?(u=A+4|0,Z=$F(t[u>>2]<<2)|0,(Z|0)!=0):0){r=0;while(1){if((r|0)>=(t[u>>2]|0)){i=0;r=0;break}t[Z+(r<<2)>>2]=-1;r=r+1|0}e:while(1){if((r|0)>=(E|0))break;l=r+1|0;s=B+(l<<2)|0;o=-2-r|0;f=t[B+(r<<2)>>2]|0;while(1){if((f|0)>=(t[s>>2]|0)){r=l;continue e}a=t[y+(f<<2)>>2]|0;n=C+(a+1<<2)|0;a=t[C+(a<<2)>>2]|0;while(1){if((a|0)>=(t[n>>2]|0))break;r=Z+(t[I+(a<<2)>>2]<<2)|0;if((t[r>>2]|0)!=(o|0)){t[r>>2]=o;i=i+1|0}a=a+1|0}f=f+1|0}}r=aK(E,t[u>>2]|0,i,b,1)|0;e:do{if(!r)r=0;else{g=t[r+20>>2]|0;m=t[r+24>>2]|0;A:do{switch(b|0){case 1:{d=t[e+28>>2]|0;b=t[A+28>>2]|0;A=t[r+28>>2]|0;t[g>>2]=0;i=0;a=0;r:while(1){if((i|0)>=(E|0)){p=a;break A}h=i+1|0;w=B+(h<<2)|0;k=g+(i<<2)|0;e=t[B+(i<<2)>>2]|0;while(1){if((e|0)>=(t[w>>2]|0))break;s=t[y+(e<<2)>>2]|0;o=C+(s+1<<2)|0;u=d+(e<<3)|0;s=t[C+(s<<2)>>2]|0;while(1){if((s|0)>=(t[o>>2]|0))break;i=I+(s<<2)|0;n=t[i>>2]|0;f=Z+(n<<2)|0;l=t[f>>2]|0;if((l|0)<(t[k>>2]|0)){t[f>>2]=a;t[m+(a<<2)>>2]=t[i>>2];c[A+(a<<3)>>3]=+c[b+(s<<3)>>3]*+c[u>>3];a=a+1|0}else{if((t[m+(l<<2)>>2]|0)!=(n|0))break r;v=A+(l<<3)|0;c[v>>3]=+c[v>>3]+ +c[b+(s<<3)>>3]*+c[u>>3]}s=s+1|0}e=e+1|0}t[g+(h<<2)>>2]=a;i=h}ge(95534,94943,1468,95512);break}case 2:{v=t[e+28>>2]|0;A=t[A+28>>2]|0;h=t[r+28>>2]|0;t[g>>2]=0;i=0;a=0;r:while(1){if((i|0)>=(E|0)){p=a;break A}w=i+1|0;k=B+(w<<2)|0;d=g+(i<<2)|0;b=t[B+(i<<2)>>2]|0;while(1){if((b|0)>=(t[k>>2]|0))break;s=t[y+(b<<2)>>2]|0;o=C+(s+1<<2)|0;e=b<<1;u=v+(e<<3)|0;e=v+((e|1)<<3)|0;s=t[C+(s<<2)>>2]|0;while(1){if((s|0)>=(t[o>>2]|0))break;i=I+(s<<2)|0;n=t[i>>2]|0;f=Z+(n<<2)|0;l=t[f>>2]|0;if((l|0)<(t[d>>2]|0)){t[f>>2]=a;t[m+(a<<2)>>2]=t[i>>2];f=s<<1;n=A+(f<<3)|0;f=A+((f|1)<<3)|0;l=a<<1;c[h+(l<<3)>>3]=+c[n>>3]*+c[u>>3]-+c[f>>3]*+c[e>>3];c[h+((l|1)<<3)>>3]=+c[n>>3]*+c[e>>3]+ +c[f>>3]*+c[u>>3];a=a+1|0}else{if((t[m+(l<<2)>>2]|0)!=(n|0))break r;f=s<<1;n=A+(f<<3)|0;f=A+((f|1)<<3)|0;l=l<<1;i=h+(l<<3)|0;c[i>>3]=+c[i>>3]+ +c[n>>3]*+c[u>>3]-+c[f>>3]*+c[e>>3];l=h+((l|1)<<3)|0;c[l>>3]=+c[n>>3]*+c[e>>3]+ +c[f>>3]*+c[u>>3]+ +c[l>>3]}s=s+1|0}b=b+1|0}t[g+(w<<2)>>2]=a;i=w}ge(95534,94943,1497,95512);break}case 4:{d=t[e+28>>2]|0;b=t[A+28>>2]|0;A=t[r+28>>2]|0;t[g>>2]=0;i=0;a=0;r:while(1){if((a|0)>=(E|0)){p=i;break A}h=a+1|0;w=B+(h<<2)|0;k=g+(a<<2)|0;o=t[B+(a<<2)>>2]|0;while(1){if((o|0)>=(t[w>>2]|0))break;s=t[y+(o<<2)>>2]|0;u=C+(s+1<<2)|0;e=d+(o<<2)|0;s=t[C+(s<<2)>>2]|0;while(1){if((s|0)>=(t[u>>2]|0))break;a=I+(s<<2)|0;n=t[a>>2]|0;f=Z+(n<<2)|0;l=t[f>>2]|0;if((l|0)<(t[k>>2]|0)){t[f>>2]=i;t[m+(i<<2)>>2]=t[a>>2];t[A+(i<<2)>>2]=P(t[b+(s<<2)>>2]|0,t[e>>2]|0)|0;i=i+1|0}else{if((t[m+(l<<2)>>2]|0)!=(n|0))break r;f=P(t[b+(s<<2)>>2]|0,t[e>>2]|0)|0;v=A+(l<<2)|0;t[v>>2]=(t[v>>2]|0)+f}s=s+1|0}o=o+1|0}t[g+(h<<2)>>2]=i;a=h}ge(95534,94943,1523,95512);break}case 8:{t[g>>2]=0;i=0;a=0;r:while(1){if((a|0)>=(E|0)){p=i;break A}e=a+1|0;b=B+(e<<2)|0;A=g+(a<<2)|0;o=t[B+(a<<2)>>2]|0;while(1){if((o|0)>=(t[b>>2]|0))break;s=t[y+(o<<2)>>2]|0;u=C+(s+1<<2)|0;s=t[C+(s<<2)>>2]|0;while(1){if((s|0)>=(t[u>>2]|0))break;a=I+(s<<2)|0;n=t[a>>2]|0;f=Z+(n<<2)|0;l=t[f>>2]|0;if((l|0)>=(t[A>>2]|0)){if((t[m+(l<<2)>>2]|0)!=(n|0))break r}else{t[f>>2]=i;t[m+(i<<2)>>2]=t[a>>2];i=i+1|0}s=s+1|0}o=o+1|0}t[g+(e<<2)>>2]=i;a=e}ge(95534,94943,1543,95512);break}default:{iK(r);r=0;break e}}}while(0);t[r+8>>2]=p}}while(0);G2(Z)}else r=0;return r|0}function No(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0,n=0,f=0,l=0,s=0,o=0,u=0,b=0,h=0,w=0,k=0,d=0,v=0,g=0,m=0,p=0,E=0,B=0,y=0,C=0,I=0,Z=0,G=0,L=0,Q=0,D=0,z=0,W=0,Y=0,F=0.0,M=0.0,V=0.0,N=0.0;D=t[e+20>>2]|0;z=t[e+24>>2]|0;W=t[A+20>>2]|0;Z=t[A+24>>2]|0;G=t[r+20>>2]|0;L=t[r+24>>2]|0;Q=t[e+32>>2]|0;if(!((Q|0)==1?(Q|0)==(t[A+32>>2]|0):0))ge(95005,94943,1574,95559);Q=t[e>>2]|0;if(((((t[e+4>>2]|0)==(t[A>>2]|0)?(t[A+4>>2]|0)==(t[r>>2]|0):0)?(k=t[e+16>>2]|0,(k|0)==(t[A+16>>2]|0)):0)?(k|0)==(t[r+16>>2]|0):0)?(w=r+4|0,Y=$F(t[w>>2]<<2)|0,(Y|0)!=0):0){i=0;while(1){if((i|0)>=(t[w>>2]|0)){a=0;i=0;break}t[Y+(i<<2)>>2]=-1;i=i+1|0}e:while(1){if((i|0)>=(Q|0))break;u=i+1|0;b=D+(u<<2)|0;h=-2-i|0;o=t[D+(i<<2)>>2]|0;while(1){if((o|0)>=(t[b>>2]|0)){i=u;continue e}l=t[z+(o<<2)>>2]|0;s=W+(l+1<<2)|0;l=t[W+(l<<2)>>2]|0;while(1){if((l|0)>=(t[s>>2]|0))break;n=t[Z+(l<<2)>>2]|0;f=G+(n+1<<2)|0;n=t[G+(n<<2)>>2]|0;while(1){if((n|0)>=(t[f>>2]|0))break;i=Y+(t[L+(n<<2)>>2]<<2)|0;if((t[i>>2]|0)!=(h|0)){t[i>>2]=h;a=a+1|0}n=n+1|0}l=l+1|0}o=o+1|0}}i=aK(Q,t[w>>2]|0,a,k,1)|0;e:do{if(!i)i=0;else{y=t[i+20>>2]|0;C=t[i+24>>2]|0;A:do{switch(k|0){case 1:{p=t[e+28>>2]|0;m=t[A+28>>2]|0;r=t[r+28>>2]|0;d=t[i+28>>2]|0;t[y>>2]=0;a=0;n=0;r:while(1){if((a|0)>=(Q|0)){I=n;break A}v=a+1|0;g=D+(v<<2)|0;A=y+(a<<2)|0;k=t[D+(a<<2)>>2]|0;while(1){if((k|0)>=(t[g>>2]|0))break;h=t[z+(k<<2)>>2]|0;w=W+(h+1<<2)|0;e=p+(k<<3)|0;h=t[W+(h<<2)>>2]|0;while(1){if((h|0)>=(t[w>>2]|0))break;o=t[Z+(h<<2)>>2]|0;u=G+(o+1<<2)|0;b=m+(h<<3)|0;o=t[G+(o<<2)>>2]|0;while(1){if((o|0)>=(t[u>>2]|0))break;a=L+(o<<2)|0;f=t[a>>2]|0;l=Y+(f<<2)|0;s=t[l>>2]|0;if((s|0)<(t[A>>2]|0)){t[l>>2]=n;t[C+(n<<2)>>2]=t[a>>2];c[d+(n<<3)>>3]=+c[b>>3]*+c[e>>3]*+c[r+(o<<3)>>3];n=n+1|0}else{if((t[C+(s<<2)>>2]|0)!=(f|0))break r;B=d+(s<<3)|0;c[B>>3]=+c[B>>3]+ +c[b>>3]*+c[e>>3]*+c[r+(o<<3)>>3]}o=o+1|0}h=h+1|0}k=k+1|0}t[y+(v<<2)>>2]=n;a=v}ge(95582,94943,1642,95559);break}case 2:{B=t[e+28>>2]|0;E=t[A+28>>2]|0;d=t[r+28>>2]|0;v=t[i+28>>2]|0;t[y>>2]=0;a=0;n=0;r:while(1){if((n|0)>=(Q|0)){I=a;break A}g=n+1|0;m=D+(g<<2)|0;p=y+(n<<2)|0;e=t[D+(n<<2)>>2]|0;while(1){if((e|0)>=(t[m>>2]|0))break;u=t[z+(e<<2)>>2]|0;k=W+(u+1<<2)|0;r=e<<1;A=B+(r<<3)|0;r=B+((r|1)<<3)|0;u=t[W+(u<<2)>>2]|0;while(1){if((u|0)>=(t[k>>2]|0))break;o=t[Z+(u<<2)>>2]|0;b=G+(o+1<<2)|0;w=u<<1;h=E+(w<<3)|0;w=E+((w|1)<<3)|0;o=t[G+(o<<2)>>2]|0;while(1){if((o|0)>=(t[b>>2]|0))break;n=L+(o<<2)|0;f=t[n>>2]|0;l=Y+(f<<2)|0;s=t[l>>2]|0;if((s|0)<(t[p>>2]|0)){t[l>>2]=a;t[C+(a<<2)>>2]=t[n>>2];M=+c[A>>3];V=+c[h>>3];F=+c[r>>3];N=+c[w>>3];l=o<<1;f=d+(l<<3)|0;l=d+((l|1)<<3)|0;s=a<<1;c[v+(s<<3)>>3]=(V*M-N*F)*+c[f>>3]-(N*M+F*V)*+c[l>>3];V=+c[A>>3];F=+c[w>>3];M=+c[r>>3];N=+c[h>>3];c[v+((s|1)<<3)>>3]=(N*M+F*V)*+c[f>>3]+(N*V-M*F)*+c[l>>3];a=a+1|0}else{if((t[C+(s<<2)>>2]|0)!=(f|0))break r;V=+c[A>>3];M=+c[h>>3];N=+c[r>>3];F=+c[w>>3];l=o<<1;f=d+(l<<3)|0;l=d+((l|1)<<3)|0;s=s<<1;n=v+(s<<3)|0;c[n>>3]=+c[n>>3]+(M*V-F*N)*+c[f>>3]-(F*V+N*M)*+c[l>>3];M=+c[A>>3];N=+c[w>>3];V=+c[r>>3];F=+c[h>>3];s=v+((s|1)<<3)|0;c[s>>3]=(F*V+N*M)*+c[f>>3]+(F*M-V*N)*+c[l>>3]+ +c[s>>3]}o=o+1|0}u=u+1|0}e=e+1|0}t[y+(g<<2)>>2]=a;n=g}ge(95582,94943,1674,95559);break}case 4:{p=t[e+28>>2]|0;m=t[A+28>>2]|0;A=t[r+28>>2]|0;r=t[i+28>>2]|0;t[y>>2]=0;a=0;n=0;r:while(1){if((n|0)>=(Q|0)){I=a;break A}d=n+1|0;v=D+(d<<2)|0;g=y+(n<<2)|0;w=t[D+(n<<2)>>2]|0;while(1){if((w|0)>=(t[v>>2]|0))break;u=t[z+(w<<2)>>2]|0;e=W+(u+1<<2)|0;k=p+(w<<2)|0;u=t[W+(u<<2)>>2]|0;while(1){if((u|0)>=(t[e>>2]|0))break;o=t[Z+(u<<2)>>2]|0;b=G+(o+1<<2)|0;h=m+(u<<2)|0;o=t[G+(o<<2)>>2]|0;while(1){if((o|0)>=(t[b>>2]|0))break;n=L+(o<<2)|0;f=t[n>>2]|0;l=Y+(f<<2)|0;s=t[l>>2]|0;if((s|0)<(t[g>>2]|0)){t[l>>2]=a;t[C+(a<<2)>>2]=t[n>>2];E=P(t[h>>2]|0,t[k>>2]|0)|0;E=P(E,t[A+(o<<2)>>2]|0)|0;B=r+(a<<2)|0;t[B>>2]=(t[B>>2]|0)+E;a=a+1|0}else{if((t[C+(s<<2)>>2]|0)!=(f|0))break r;E=P(t[h>>2]|0,t[k>>2]|0)|0;E=P(E,t[A+(o<<2)>>2]|0)|0;B=r+(s<<2)|0;t[B>>2]=(t[B>>2]|0)+E}o=o+1|0}u=u+1|0}w=w+1|0}t[y+(d<<2)>>2]=a;n=d}ge(95582,94943,1706,95559);break}case 8:{t[y>>2]=0;a=0;n=0;r:while(1){if((n|0)>=(Q|0)){I=a;break A}e=n+1|0;k=D+(e<<2)|0;A=y+(n<<2)|0;h=t[D+(n<<2)>>2]|0;while(1){if((h|0)>=(t[k>>2]|0))break;u=t[z+(h<<2)>>2]|0;w=W+(u+1<<2)|0;u=t[W+(u<<2)>>2]|0;while(1){if((u|0)>=(t[w>>2]|0))break;o=t[Z+(u<<2)>>2]|0;b=G+(o+1<<2)|0;o=t[G+(o<<2)>>2]|0;while(1){if((o|0)>=(t[b>>2]|0))break;n=L+(o<<2)|0;f=t[n>>2]|0;l=Y+(f<<2)|0;s=t[l>>2]|0;if((s|0)>=(t[A>>2]|0)){if((t[C+(s<<2)>>2]|0)!=(f|0))break r}else{t[l>>2]=a;t[C+(a<<2)>>2]=t[n>>2];a=a+1|0}o=o+1|0}u=u+1|0}h=h+1|0}t[y+(e<<2)>>2]=a;n=e}ge(95582,94943,1729,95559);break}default:{iK(i);i=0;break e}}}while(0);t[i+8>>2]=I}}while(0);G2(Y)}else i=0;return i|0}function Ro(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;var n=0,f=0,l=0;if((t[e+32>>2]|0)!=2)ge(95100,94943,1971,95607);if((A|0)>=1){f=t[e+8>>2]|0;n=f+A|0;if((n|0)>=(t[e+12>>2]|0))xo(e,n+10|0)|0;l=f<<2;n=A<<2;Q6((t[e+20>>2]|0)+l|0,r|0,n|0)|0;Q6((t[e+24>>2]|0)+l|0,i|0,n|0)|0;n=t[e+40>>2]|0;if(n|0){l=P(n,A)|0;f=P(n,f)|0;Q6((t[e+28>>2]|0)+f|0,a|0,l|0)|0}a=e+4|0;f=0;while(1){if((f|0)>=(A|0))break;n=t[r+(f<<2)>>2]|0;if((n|0)>=(t[e>>2]|0))t[e>>2]=n+1;n=t[i+(f<<2)>>2]|0;if((n|0)>=(t[a>>2]|0))t[a>>2]=n+1;f=f+1|0}l=e+8|0;t[l>>2]=(t[l>>2]|0)+A}return e|0}function xo(e,A){e=e|0;A=A|0;var r=0,i=0,a=0;if((t[e+32>>2]|0)==2){r=e+20|0;a=A<<2;t[r>>2]=AM(t[r>>2]|0,a)|0;r=e+24|0;t[r>>2]=AM(t[r>>2]|0,a)|0;r=t[e+40>>2]|0;if((r|0)>0){a=e+28|0;i=t[a>>2]|0;r=P(r,A)|0;if(!i)r=$F(r)|0;else r=AM(i,r)|0;t[a>>2]=r}}else{r=e+24|0;t[r>>2]=AM(t[r>>2]|0,A<<2)|0;r=t[e+40>>2]|0;if((r|0)>0){a=e+28|0;i=t[a>>2]|0;r=P(r,A)|0;if(!i)r=$F(r)|0;else r=AM(i,r)|0;t[a>>2]=r}}t[e+12>>2]=A;return e|0}function Jo(e){e=e|0;var A=0,r=0.0,i=0,a=0,n=0,f=0,l=0,s=0,o=0,u=0,b=0;e:do{if(!e)e=0;else{o=t[e+20>>2]|0;s=t[e+24>>2]|0;A:do{switch(t[e+16>>2]|0){case 1:{f=t[e+28>>2]|0;i=t[e>>2]|0;A=0;r:while(1){if((A|0)>=(i|0))break A;a=A+1|0;n=t[o+(a<<2)>>2]|0;A=t[o+(A<<2)>>2]|0;r=1.0/+(n-A|0);while(1){if((A|0)>=(n|0)){A=a;continue r}s=f+(A<<3)|0;c[s>>3]=+c[s>>3]*r;A=A+1|0}}}case 2:{a=t[e+28>>2]|0;n=t[e>>2]|0;A=0;r:while(1){if((A|0)>=(n|0))break A;f=A+1|0;l=t[o+(f<<2)>>2]|0;i=t[o+(A<<2)>>2]|0;r=1.0/+(l-i|0);while(1){if((i|0)>=(l|0)){A=f;continue r}if((t[s+(i<<2)>>2]|0)!=(A|0)){u=i<<1;b=a+(u<<3)|0;c[b>>3]=+c[b>>3]*r;u=a+((u|1)<<3)|0;c[u>>3]=+c[u>>3]*r}i=i+1|0}}}case 4:{ge(138394,94943,2192,95648);break}case 8:break;default:{e=0;break e}}}while(0)}}while(0);return e|0}function Ho(e){e=e|0;var A=0,r=0,i=0,a=0,n=0;if((e|0)!=0?(A=e+8|0,r=t[A>>2]|0,i=t[e+4>>2]|0,(i|0)==(t[e>>2]|0)):0){n=t[e+24>>2]|0;e=t[e+20>>2]|0;a=aK(i,i,r,8,1)|0;Q6(t[a+20>>2]|0,e|0,(i<<2)+4|0)|0;Q6(t[a+24>>2]|0,n|0,r<<2|0)|0;t[a+8>>2]=t[A>>2];e=lK(a,1)|0;iK(a);e=hK(e)|0;i=e+8|0;r=$F(t[i>>2]<<3)|0;t[e+28>>2]=r;i=t[i>>2]|0;A=0;while(1){if((A|0)>=(i|0))break;c[r+(A<<3)>>3]=1.0;A=A+1|0}t[e+16>>2]=1;t[e+40>>2]=8}else e=0;return e|0}function Po(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0,n=0,f=0,l=0,s=0,c=0,o=0,u=0,b=0,h=0,w=0,k=0,d=0,v=0,g=0,m=0,p=0;w=t[e+20>>2]|0;k=t[e+24>>2]|0;p=t[e+4>>2]|0;b=t[e>>2]|0;d=p<<2;v=$F(d)|0;g=$F(d+4|0)|0;m=$F(d)|0;d=$F(d)|0;h=g+4|0;e=0;while(1){if((e|0)>=(p|0))break;t[v+(e<<2)>>2]=0;e=e+1|0}t[h>>2]=p;e=0;while(1){if((e|0)>=(p|0)){f=1;c=0;break}t[m+(e<<2)>>2]=-1;e=e+1|0}e:while(1){if((c|0)>=(b|0))break;n=w+(c<<2)|0;o=c+1|0;u=w+(o<<2)|0;e=t[n>>2]|0;while(1){a=t[u>>2]|0;if((e|0)>=(a|0))break;s=h+(t[v+(t[k+(e<<2)>>2]<<2)>>2]<<2)|0;t[s>>2]=(t[s>>2]|0)+-1;e=e+1|0}e=f;s=t[n>>2]|0;while(1){if((s|0)>=(a|0)){f=e;c=o;continue e}f=k+(s<<2)|0;a=v+(t[f>>2]<<2)|0;l=t[a>>2]|0;n=m+(l<<2)|0;if((t[n>>2]|0)<(c|0)){t[n>>2]=c;a=h+(l<<2)|0;if(!(t[a>>2]|0)){t[a>>2]=1;n=e;e=l;a=d+(l<<2)|0}else{t[d+(l<<2)>>2]=e;t[h+(e<<2)>>2]=1;n=e+1|0;a=v+(t[f>>2]<<2)|0}t[a>>2]=e;e=n}else{l=d+(l<<2)|0;t[a>>2]=t[l>>2];l=h+(t[l>>2]<<2)|0;t[l>>2]=(t[l>>2]|0)+1}s=s+1|0;a=t[u>>2]|0}}t[g>>2]=0;e=0;a=0;while(1){if((e|0)>=(f|0))break;w=e+1|0;h=g+(w<<2)|0;k=(t[h>>2]|0)+a|0;t[h>>2]=k;e=w;a=k}t[r>>2]=d;e=0;while(1){if((e|0)>=(p|0)){e=f;break}k=g+(t[v+(e<<2)>>2]<<2)|0;r=t[k>>2]|0;t[k>>2]=r+1;t[d+(r<<2)>>2]=e;e=e+1|0}while(1){if((e|0)<=0)break;p=e+-1|0;t[g+(e<<2)>>2]=t[g+(p<<2)>>2];e=p}t[g>>2]=0;t[i>>2]=g;t[A>>2]=f;G2(m);G2(v);return}function Xo(){return+(+(t8()|0)*4.656612875245797e-10)}function So(e){e=e|0;if((e|0)>1)return(t8()|0)%(e|0)|0|0;else ge(95682,95688,58,95698);return 0}function jo(e){e=e|0;var A=0,r=0,i=0,a=0,n=0;e:do{if((e|0)<1)A=0;else{A=$F(e<<2)|0;r=0;while(1){if((r|0)==(e|0))break;t[A+(r<<2)>>2]=r;r=r+1|0}while(1){if((e|0)<=1)break e;i=So(e)|0;r=e+-1|0;n=A+(r<<2)|0;a=t[n>>2]|0;i=A+(i<<2)|0;t[n>>2]=t[i>>2];t[i>>2]=a;e=r}}}while(0);return A|0}function Uo(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0;i=0;while(1){if((i|0)>=(e|0))break;a=r+(i<<3)|0;c[a>>3]=+c[A+(i<<3)>>3]-+c[a>>3];i=i+1|0}return r|0}function To(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0.0,t=0.0;i=0;a=0.0;while(1){if((i|0)>=(e|0))break;t=+c[r+(i<<3)>>3]*+c[A+(i<<3)>>3]+a;i=i+1|0;a=t}return+a}function Oo(e,A,r,i){e=e|0;A=A|0;r=r|0;i=+i;var a=0,t=0;a=0;while(1){if((a|0)>=(e|0))break;t=r+(a<<3)|0;c[t>>3]=+c[t>>3]*i+ +c[A+(a<<3)>>3];a=a+1|0}return r|0}function _o(e,A,r,i){e=e|0;A=A|0;r=r|0;i=+i;var a=0,t=0;a=0;while(1){if((a|0)>=(e|0))break;t=A+(a<<3)|0;c[t>>3]=+c[r+(a<<3)>>3]*i+ +c[t>>3];a=a+1|0}return A|0}function qo(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0.0,t=0,n=0.0;t=P(r,A)|0;i=P(i,A)|0;a=0.0;r=0;while(1){if((r|0)>=(A|0))break;n=+c[e+(r+t<<3)>>3]-+c[e+(r+i<<3)>>3];a=n*n+a;r=r+1|0}n=+D(+a);return+(n>1.0e-15?n:1.0e-15)}function Ko(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0.0,t=0,n=0.0;t=P(r,A)|0;i=P(i,A)|0;a=0.0;r=0;while(1){if((r|0)>=(A|0))break;n=+c[e+(r+t<<3)>>3]-+c[e+(r+i<<3)>>3];a=n*n+a;r=r+1|0}return+ +D(+a)}function $o(e,A,r){e=e|0;A=A|0;r=r|0;var i=0.0,a=0,t=0.0;i=0.0;a=0;while(1){if((a|0)>=(r|0))break;t=+c[e+(a<<3)>>3]-+c[A+(a<<3)>>3];i=t*t+i;a=a+1|0}return+ +D(+i)}function eu(e,A,r,i,a,t,n){e=+e;A=+A;r=+r;i=+i;a=a|0;t=t|0;n=n|0;var f=0,l=0,s=0,o=0,u=0,b=0,w=0,k=0.0,d=0,v=0.0;w=h;h=h+80|0;u=w+48|0;o=w+24|0;b=w;f=0;while(1){if((f|0)>=(t|0)){l=0;break}k=+c[n+(f<<3)>>3];c[u+(f<<3)>>3]=k;c[o+(f<<3)>>3]=k;f=f+1|0}while(1){if((l|0)>=(a|0))break;s=P(l,t)|0;f=0;while(1){if((f|0)>=(t|0))break;v=+c[n+(f+s<<3)>>3];d=u+(f<<3)|0;k=+c[d>>3];c[d>>3]=v>3];c[d>>3]=v>k?v:k;f=f+1|0}l=l+1|0}k=+c[o>>3]-+c[u>>3];r=k!=0.0?(r-e)/k:1.0;k=+c[o+8>>3]-+c[u+8>>3];v=(i-A)/k;r=k!=0.0?r>3]=e;c[b+8>>3]=A;c[b+16>>3]=0.0;l=0;while(1){if((l|0)>=(a|0))break;s=P(l,t)|0;f=0;while(1){if((f|0)>=(t|0))break;d=n+(f+s<<3)|0;c[d>>3]=(+c[d>>3]-+c[u+(f<<3)>>3])*r+ +c[b+(f<<3)>>3];f=f+1|0}l=l+1|0}h=w;return}function Au(e,A){e=e|0;A=A|0;if((gk(e)|0)==1){e=t[(t[(sd(e)|0)+16>>2]|0)+132>>2]|0;t[e>>2]=0;t[e+4>>2]=0;t[e+8>>2]=0;t[e+12>>2]=0}else{ru(e);if(!((mx(Hw(A,95704)|0)|0)<<24>>24))A=Nb(e,186208)|0;else A=iu(e)|0;Ub(e,A,186208);au(A)}return}function ru(e){e=e|0;var A=0;A=Bd(t[t[(t[(sd(e)|0)+16>>2]|0)+112>>2]>>2]|0)|0;e=t[46925]|0;if((A|0)!=(e|0)){t[46555]=0;t[46925]=A;t[46926]=zw(A,0,95713,0)|0;t[46927]=zw(t[46925]|0,1,95721,0)|0;t[46928]=zw(t[46925]|0,1,95738,0)|0;e=t[46925]|0}t[46929]=Hw(e,95738)|0;zb(186208);t[46554]=1;c[23280]=+wx(t[46925]|0,t[46926]|0,1.0,0.0);t[46556]=t[46927];t[46557]=t[46928];t[46558]=t[46929];return}function iu(e){e=e|0;var A=0,r=0,i=0,a=0;a=h;h=h+144|0;i=a;r=a+8|0;A=t[46555]|0;t[46555]=A+1;t[i>>2]=A;T4(r,96234,i)|0;r=Wb(Rv(e,r,1)|0)|0;i=r+8|0;A=sd(e)|0;while(1){if(!A)break;hd(t[i>>2]|0,A,1)|0;t[(t[(t[A+16>>2]|0)+112>>2]|0)+12>>2]=r;A=cd(e,A)|0}h=a;return r|0}function au(e){e=e|0;jb(e);return}function tu(e,A){e=e|0;A=A|0;var r=0;r=$F(32)|0;t[r>>2]=4;c[r+8>>3]=.75;t[r+16>>2]=1073741824;t[r+20>>2]=1;t[r+24>>2]=e;t[r+28>>2]=A;return r|0}function nu(e){e=e|0;G2(e);return}function fu(e){e=e|0;var A=0,r=0;if(!e)return;r=t[e+8>>2]|0;do{if(r|0){if(t[e>>2]|0){iK(r);A=t[e+12>>2]|0;if(!A)break;iK(A);break}if(t[e+36>>2]|0?(iK(r),A=t[e+12>>2]|0,A|0):0)iK(A)}}while(0);iK(t[e+16>>2]|0);iK(t[e+20>>2]|0);A=t[e+24>>2]|0;if(A|0?(t[e>>2]|0)>0:0)G2(A);fu(t[e+28>>2]|0);G2(e);return}function lu(e,A,r,i,a,n,f,l,s,o){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;n=n|0;f=f|0;l=l|0;s=s|0;o=o|0;var u=0,b=0,w=0,k=0,d=0,v=0,g=0,m=0.0,p=0;p=h;h=h+32|0;u=p+16|0;b=p+12|0;w=p+8|0;k=p+4|0;d=p;t[u>>2]=e;t[b>>2]=0;t[w>>2]=0;t[k>>2]=0;t[d>>2]=0;t[f>>2]=0;t[l>>2]=0;t[A>>2]=0;t[n>>2]=0;t[i>>2]=0;v=s+28|0;g=s+8|0;m=+(t[e+4>>2]|0);a=r;do{su(e,u,a,b,0,d,w,k,s,o);a=t[u>>2]|0;if(!a)break;r=t[a+4>>2]|0;a=t[f>>2]|0;if(!a){t[f>>2]=t[w>>2];t[l>>2]=t[k>>2]}else{e=Vo(a,t[w>>2]|0)|0;iK(t[f>>2]|0);iK(t[w>>2]|0);t[f>>2]=e;e=Vo(t[k>>2]|0,t[l>>2]|0)|0;iK(t[l>>2]|0);iK(t[k>>2]|0);t[l>>2]=e}a=t[A>>2]|0;if(a|0)iK(a);t[A>>2]=t[u>>2];a=t[i>>2]|0;if(a|0)iK(a);a=t[b>>2]|0;t[i>>2]=a;e=t[n>>2]|0;if(e){G2(e);a=t[b>>2]|0}t[n>>2]=t[d>>2];e=t[u>>2]|0;t[d>>2]=0;if(!(+c[g>>3]*m<+(r|0)))break}while((t[v>>2]|0)==1);h=p;return}function su(e,A,r,i,a,n,f,l,s,o){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;n=n|0;f=f|0;l=l|0;s=s|0;o=o|0;var u=0,b=0,w=0,k=0,d=0,v=0,g=0,m=0,p=0,E=0.0,B=0,y=0,C=0,I=0,Z=0,G=0,L=0,Q=0,D=0,z=0,W=0;W=h;h=h+32|0;L=W+28|0;k=W+24|0;Z=W+20|0;Q=W+16|0;b=W+12|0;D=W+8|0;z=W+4|0;p=W;t[L>>2]=0;t[k>>2]=0;t[Q>>2]=0;t[D>>2]=0;t[z>>2]=0;t[A>>2]=0;t[i>>2]=0;t[f>>2]=0;t[l>>2]=0;G=t[e>>2]|0;w=s+24|0;t[o>>2]=t[w>>2];u=t[w>>2]|0;e:do{switch(u|0){case 12:{t[w>>2]=3;t[o>>2]=3;su(e,A,r,i,a,n,f,l,s,o);if((((t[A>>2]|0)==0?(t[w>>2]=4,t[o>>2]=4,su(e,A,r,i,a,n,f,l,s,o),(t[A>>2]|0)==0):0)?(t[w>>2]=6,t[o>>2]=6,su(e,A,r,i,a,n,f,l,s,o),(t[A>>2]|0)==0):0)?(t[w>>2]=9,t[o>>2]=9,su(e,A,r,i,a,n,f,l,s,o),(t[A>>2]|0)==0):0){t[w>>2]=2;t[o>>2]=2;su(e,A,r,i,a,n,f,l,s,o)}t[w>>2]=12;w=0;k=0;s=0;b=0;u=0;o=0;break}case 9:case 10:{r=t[s+20>>2]|0;if((u|0)==9)ku(e,r,Q,b,Z);else du(e,r,Q,b,Z);m=t[e+20>>2]|0;p=t[e+24>>2]|0;g=t[b>>2]|0;if(!(t[s+28>>2]|0)){if((g|0)==(G|0)?1:+c[s+8>>3]*+(G|0)<+(g|0)){w=0;k=0;s=0;b=0;u=0;o=0;break e}}else if((g|0)==(G|0)){w=0;k=0;s=0;b=0;u=0;o=0;break e}if((g|0)>=(t[s>>2]|0)){C=t[Z>>2]|0;y=C<<2;B=$F(y)|0;y=$F(y)|0;C=$F(C<<3)|0;t[Z>>2]=0;v=t[Q>>2]|0;d=0;b=0;A:while(1){if((d|0)>=(G|0))break;r=v+(d<<2)|0;if((t[r>>2]|0)!=-1){t[B+(b<<2)>>2]=d;t[y+(t[Z>>2]<<2)>>2]=t[r>>2];k=t[Z>>2]|0;s=k+1|0;t[Z>>2]=s;c[C+(k<<3)>>3]=1.0;d=d+1|0;b=s;continue}u=t[m+(d<<2)>>2]|0;k=d+1|0;s=m+(k<<2)|0;w=t[s>>2]|0;r=0;o=u;while(1){if((o|0)>=(w|0))break;r=((t[v+(t[p+(o<<2)>>2]<<2)>>2]|0)>>>31^1)+r|0;o=o+1|0}E=1.0/+(r|0);r=w;while(1){if((u|0)>=(r|0)){d=k;continue A}o=p+(u<<2)|0;if((t[v+(t[o>>2]<<2)>>2]|0)>-1){t[B+(b<<2)>>2]=d;t[y+(t[Z>>2]<<2)>>2]=t[v+(t[o>>2]<<2)>>2];r=t[Z>>2]|0;o=r+1|0;t[Z>>2]=o;c[C+(r<<3)>>3]=E;r=t[s>>2]|0}else o=b;u=u+1|0;b=o}}G=kK(b,G,g,B,y,C,1,8)|0;t[f>>2]=G;G=rK(G)|0;t[l>>2]=G;f=No(G,e,t[f>>2]|0)|0;t[A>>2]=f;if(!f){w=C;k=y;s=B;b=B;u=y;o=C}else{Fo(t[l>>2]|0,a,n,0);w=t[A>>2]|0;k=w+36|0;t[k>>2]=t[k>>2]|3;t[A>>2]=hK(w)|0;t[i>>2]=0;w=C;k=y;s=B;b=B;u=y;o=C}}else{w=0;k=0;s=0;b=0;u=0;o=0}break}case 5:{I=26;break}case 1:{o=s+20|0;bu(e,t[o>>2]|0,L,k);r=t[w>>2]|0;if((r|0)==2){r=o;I=24}else I=25;break}case 2:{r=s+20|0;I=24;break}case 3:{cu(e,t[s+20>>2]|0,D,z,p);I=12;break}case 4:{ou(e,t[s+20>>2]|0,D,z,p);I=12;break}case 6:{uu(e,D,z,p);I=12;break}default:{w=0;k=0;s=0;b=0;u=0;o=0}}}while(0);do{if((I|0)==12){d=t[p>>2]|0;if(!(t[s+28>>2]|0)){if((d|0)==(G|0)?1:+c[s+8>>3]*+(G|0)<+(d|0)){w=0;k=0;s=0;b=0;u=0;o=0;break}}else if((d|0)==(G|0)){w=0;k=0;s=0;b=0;u=0;o=0;break}if((d|0)>=(t[s>>2]|0)){g=G<<2;v=$F(g)|0;g=$F(g)|0;m=$F(G<<3)|0;t[Z>>2]=0;b=t[z>>2]|0;w=t[D>>2]|0;u=0;r=0;e:while(1){if((u|0)>=(t[p>>2]|0))break;k=u+1|0;s=b+(k<<2)|0;o=t[b+(u<<2)>>2]|0;while(1){if((o|0)>=(t[s>>2]|0)){u=k;continue e}t[v+(r<<2)>>2]=t[w+(o<<2)>>2];t[g+(t[Z>>2]<<2)>>2]=u;y=t[Z>>2]|0;C=y+1|0;t[Z>>2]=C;c[m+(y<<3)>>3]=1.0;o=o+1|0;r=C}}G=kK(r,G,d,v,g,m,1,8)|0;t[f>>2]=G;t[l>>2]=rK(G)|0;t[i>>2]=0;f=No(t[l>>2]|0,e,t[f>>2]|0)|0;t[A>>2]=f;if(!f){w=m;k=g;s=v;b=v;u=g;o=m}else{Fo(t[l>>2]|0,a,n,0);t[l>>2]=Jo(t[l>>2]|0)|0;w=t[A>>2]|0;k=w+36|0;t[k>>2]=t[k>>2]|3;t[A>>2]=hK(w)|0;w=m;k=g;s=v;b=v;u=g;o=m}}else{w=0;k=0;s=0;b=0;u=0;o=0}}else if((I|0)==24){hu(e,t[r>>2]|0,L,k);r=t[w>>2]|0;I=25}}while(0);if((I|0)==25)if((r|0)==5)I=26;else I=27;if((I|0)==26){wu(e,t[s+20>>2]|0,L,k);I=27}do{if((I|0)==27){r=t[k>>2]|0;if(!(t[s+28>>2]|0)){if((r|0)==(G|0)?1:+c[s+8>>3]*+(G|0)<+(r|0)){w=0;k=0;s=0;b=0;u=0;o=0;break}}else if((r|0)==(G|0)){w=0;k=0;s=0;b=0;u=0;o=0;break}if((r|0)>=(t[s>>2]|0)){v=G<<2;d=$F(v)|0;v=$F(v)|0;g=$F(G<<3)|0;t[Z>>2]=0;k=t[L>>2]|0;r=0;w=0;while(1){if((w|0)>=(G|0))break;o=k+(w<<2)|0;u=t[o>>2]|0;if((u|0)>-1){t[d+(t[Z>>2]<<2)>>2]=w;t[v+(t[Z>>2]<<2)>>2]=r;I=t[Z>>2]|0;b=I+1|0;t[Z>>2]=b;c[g+(I<<3)>>3]=1.0;if((u|0)!=(w|0)){t[d+(b<<2)>>2]=t[o>>2];t[v+(t[Z>>2]<<2)>>2]=r;I=t[Z>>2]|0;t[Z>>2]=I+1;c[g+(I<<3)>>3]=1.0;t[k+(t[o>>2]<<2)>>2]=-1}t[o>>2]=-1;r=r+1|0}w=w+1|0}G=kK(t[Z>>2]|0,G,r,d,v,g,1,8)|0;t[f>>2]=G;G=rK(G)|0;t[l>>2]=G;f=No(G,e,t[f>>2]|0)|0;t[A>>2]=f;if(!f){w=g;k=v;s=d;b=d;u=v;o=g}else{Fo(t[l>>2]|0,a,n,0);t[l>>2]=Jo(t[l>>2]|0)|0;w=t[A>>2]|0;k=w+36|0;t[k>>2]=t[k>>2]|3;t[A>>2]=hK(w)|0;t[i>>2]=0;w=g;k=v;s=d;b=d;u=v;o=g}}else{w=0;k=0;s=0;b=0;u=0;o=0}}}while(0);r=t[L>>2]|0;if(r|0)G2(r);r=t[Q>>2]|0;if(r|0)G2(r);if(s|0)G2(b);if(k|0)G2(u);if(w|0)G2(o);r=t[D>>2]|0;if(r|0)G2(r);r=t[z>>2]|0;if(r|0)G2(r);h=W;return}function cu(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;var n=0,f=0,l=0.0,s=0,o=0,u=0,b=0,h=0.0,w=0,k=0,d=0,v=0,g=0,m=0,p=0,E=0;g=t[e+20>>2]|0;m=t[e+24>>2]|0;E=t[e>>2]|0;p=E<<2;t[r>>2]=$F(p)|0;t[i>>2]=$F(p+4|0)|0;p=$F(p)|0;n=0;while(1){if((n|0)>=(E|0))break;t[p+(n<<2)>>2]=n;n=n+1|0}t[a>>2]=0;d=t[i>>2]|0;t[d>>2]=0;v=t[e+28>>2]|0;e:do{if(!A){n=0;e=0;A:while(1){while(1){if((e|0)>=(E|0)){e=0;l=0.0;A=0;break A}A=e;e=e+1|0;if((t[p+(A<<2)>>2]|0)==-1)continue;A=t[g+(A<<2)>>2]|0;if(((t[g+(e<<2)>>2]|0)-A|0)==1)break}o=t[m+(A<<2)>>2]|0;t[p+(o<<2)>>2]=-1;u=t[r>>2]|0;t[u+(n<<2)>>2]=o;b=g+(o+1<<2)|0;s=t[g+(o<<2)>>2]|0;n=n+1|0;while(1){if((s|0)>=(t[b>>2]|0))break;A=m+(s<<2)|0;f=t[A>>2]|0;if((o|0)!=(f|0)?((t[g+(f+1<<2)>>2]|0)-(t[g+(f<<2)>>2]|0)|0)==1:0){t[p+(f<<2)>>2]=-1;t[u+(n<<2)>>2]=t[A>>2];n=n+1|0}s=s+1|0}A=t[a>>2]|0;f=t[d+(A<<2)>>2]|0;if((n-f|0)<5){i=A+1|0;t[a>>2]=i;t[d+(i<<2)>>2]=n;continue}f=f+1|0;A=A+1|0;t[a>>2]=A;t[d+(A<<2)>>2]=f;A=f;while(1){if(!((f|0)<(n|0)&(A|0)<(n|0)))continue A;i=f+3|0;i=(n|0)<(i|0)?n:i;k=(t[a>>2]|0)+1|0;t[a>>2]=k;t[d+(k<<2)>>2]=i;A=A+1|0;f=i}}A:while(1){do{b=A;while(1){if((b|0)>=(E|0)){e=0;break A}w=p+(b<<2)|0;f=t[w>>2]|0;if((f|0)!=-1)break;b=b+1|0}A=b+1|0;k=t[g+(A<<2)>>2]|0;o=1;u=t[g+(b<<2)>>2]|0;while(1){if((u|0)>=(k|0))break;s=t[m+(u<<2)>>2]|0;if((b|0)!=(s|0)?(t[p+(s<<2)>>2]|0)!=-1:0)if((f|0)!=-1){h=+c[v+(u<<3)>>3];if((o|0)==0?!(h>l):0)o=0;else{o=0;e=s;l=h}}else f=-1;u=u+1|0}}while((o|0)!=0);t[p+(e<<2)>>2]=-1;t[w>>2]=-1;k=t[r>>2]|0;t[k+(n<<2)>>2]=b;i=n+2|0;t[k+(n+1<<2)>>2]=e;k=(t[a>>2]|0)+1|0;t[a>>2]=k;t[d+(k<<2)>>2]=i;n=i}while(1){if((e|0)>=(E|0))break e;if((t[p+(e<<2)>>2]|0)==(e|0)){m=n+1|0;t[(t[r>>2]|0)+(n<<2)>>2]=e;n=(t[a>>2]|0)+1|0;t[a>>2]=n;t[d+(n<<2)>>2]=m;n=m}e=e+1|0}}else{d=jo(E)|0;b=0;n=0;while(1){if((b|0)>=(E|0)){k=0;e=0;l=0.0;break}e=t[d+(b<<2)>>2]|0;A:do{if((t[p+(e<<2)>>2]|0)!=-1?(w=t[g+(e<<2)>>2]|0,((t[g+(e+1<<2)>>2]|0)-w|0)==1):0){s=t[m+(w<<2)>>2]|0;t[p+(s<<2)>>2]=-1;o=t[r>>2]|0;t[o+(n<<2)>>2]=s;u=g+(s+1<<2)|0;f=t[g+(s<<2)>>2]|0;n=n+1|0;while(1){if((f|0)>=(t[u>>2]|0))break;e=m+(f<<2)|0;A=t[e>>2]|0;if((s|0)!=(A|0)?((t[g+(A+1<<2)>>2]|0)-(t[g+(A<<2)>>2]|0)|0)==1:0){t[p+(A<<2)>>2]=-1;t[o+(n<<2)>>2]=t[e>>2];n=n+1|0}f=f+1|0}f=t[i>>2]|0;e=t[a>>2]|0;A=t[f+(e<<2)>>2]|0;if((n-A|0)<5){k=e+1|0;t[a>>2]=k;t[f+(k<<2)>>2]=n;break}A=A+1|0;e=e+1|0;t[a>>2]=e;t[f+(e<<2)>>2]=A;e=A;while(1){if(!((A|0)<(n|0)&(e|0)<(n|0)))break A;k=A+3|0;k=(n|0)<(k|0)?n:k;u=(t[a>>2]|0)+1|0;t[a>>2]=u;t[f+(u<<2)>>2]=k;e=e+1|0;A=k}}}while(0);b=b+1|0}while(1){if((k|0)>=(E|0)){e=0;break}u=t[d+(k<<2)>>2]|0;b=p+(u<<2)|0;A=t[b>>2]|0;if((A|0)!=-1){w=t[g+(u+1<<2)>>2]|0;s=1;o=t[g+(u<<2)>>2]|0;while(1){if((o|0)>=(w|0))break;f=t[m+(o<<2)>>2]|0;if((u|0)!=(f|0)?(t[p+(f<<2)>>2]|0)!=-1:0)if((A|0)!=-1){h=+c[v+(o<<3)>>3];if((s|0)==0?!(h>l):0)s=0;else{s=0;e=f;l=h}}else A=-1;o=o+1|0}if(!s){t[p+(e<<2)>>2]=-1;t[b>>2]=-1;b=t[r>>2]|0;t[b+(n<<2)>>2]=u;w=n+2|0;t[b+(n+1<<2)>>2]=e;b=t[i>>2]|0;n=(t[a>>2]|0)+1|0;t[a>>2]=n;t[b+(n<<2)>>2]=w;n=w}}k=k+1|0}while(1){if((e|0)>=(E|0))break;if((t[p+(e<<2)>>2]|0)==(e|0)){m=n+1|0;t[(t[r>>2]|0)+(n<<2)>>2]=e;g=t[i>>2]|0;n=(t[a>>2]|0)+1|0;t[a>>2]=n;t[g+(n<<2)>>2]=m;n=m}e=e+1|0}G2(d)}}while(0);G2(p);return}function ou(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;var n=0,f=0.0,l=0,s=0,o=0,u=0,b=0.0,w=0,k=0,d=0,v=0,g=0,m=0,p=0,E=0,B=0,y=0,C=0,I=0;I=h;h=h+16|0;k=I+8|0;y=I+4|0;C=I;t[y>>2]=0;t[C>>2]=0;p=t[e+20>>2]|0;m=t[e+24>>2]|0;E=t[e>>2]|0;B=E<<2;t[r>>2]=$F(B)|0;t[i>>2]=$F(B+4|0)|0;B=$F(B)|0;n=0;while(1){if((n|0)>=(E|0))break;t[B+(n<<2)>>2]=n;n=n+1|0}Po(e,k,y,C);t[a>>2]=0;v=t[i>>2]|0;t[v>>2]=0;g=t[e+28>>2]|0;n=0;e=0;e:while(1){s=t[k>>2]|0;o=t[C>>2]|0;do{if((e|0)>=(s|0))break e;u=e;e=e+1|0;w=o+(e<<2)|0;l=t[w>>2]|0;u=t[o+(u<<2)>>2]|0}while((l-u|0)<2);o=t[y>>2]|0;s=t[v+(t[a>>2]<<2)>>2]|0;while(1){if((u|0)>=(l|0))break;d=o+(u<<2)|0;t[B+(t[d>>2]<<2)>>2]=-1;l=n+1|0;t[(t[r>>2]|0)+(n<<2)>>2]=t[d>>2];if((l-s|0)>3){n=(t[a>>2]|0)+1|0;t[a>>2]=n;t[v+(n<<2)>>2]=l;n=l}else n=s;s=n;u=u+1|0;n=l;l=t[w>>2]|0}if((n|0)<=(s|0))continue;d=(t[a>>2]|0)+1|0;t[a>>2]=d;t[v+(d<<2)>>2]=n}e:do{if(!A){e=0;f=0.0;l=0;A:while(1){do{A=l;while(1){if((A|0)>=(E|0)){e=0;break A}k=B+(A<<2)|0;s=t[k>>2]|0;if((s|0)!=-1)break;A=A+1|0}l=A+1|0;d=t[p+(l<<2)>>2]|0;u=1;w=t[p+(A<<2)>>2]|0;while(1){if((w|0)>=(d|0))break;o=t[m+(w<<2)>>2]|0;if((A|0)!=(o|0)?(t[B+(o<<2)>>2]|0)!=-1:0)if((s|0)!=-1){b=+c[g+(w<<3)>>3];if((u|0)==0?!(b>f):0)u=0;else{u=0;e=o;f=b}}else s=-1;w=w+1|0}}while((u|0)!=0);t[B+(e<<2)>>2]=-1;t[k>>2]=-1;d=t[r>>2]|0;t[d+(n<<2)>>2]=A;i=n+2|0;t[d+(n+1<<2)>>2]=e;d=(t[a>>2]|0)+1|0;t[a>>2]=d;t[v+(d<<2)>>2]=i;n=i}while(1){if((e|0)>=(E|0))break e;if((t[B+(e<<2)>>2]|0)==(e|0)){p=n+1|0;t[(t[r>>2]|0)+(n<<2)>>2]=e;n=(t[a>>2]|0)+1|0;t[a>>2]=n;t[v+(n<<2)>>2]=p;n=p}e=e+1|0}}else{v=jo(E)|0;d=0;e=0;f=0.0;while(1){if((d|0)>=(E|0)){e=0;break}w=t[v+(d<<2)>>2]|0;A=B+(w<<2)|0;l=t[A>>2]|0;if((l|0)!=-1){k=t[p+(w+1<<2)>>2]|0;o=1;u=t[p+(w<<2)>>2]|0;while(1){if((u|0)>=(k|0))break;s=t[m+(u<<2)>>2]|0;if((w|0)!=(s|0)?(t[B+(s<<2)>>2]|0)!=-1:0)if((l|0)!=-1){b=+c[g+(u<<3)>>3];if((o|0)==0?!(b>f):0)o=0;else{o=0;e=s;f=b}}else l=-1;u=u+1|0}if(!o){t[B+(e<<2)>>2]=-1;t[A>>2]=-1;A=t[r>>2]|0;t[A+(n<<2)>>2]=w;k=n+2|0;t[A+(n+1<<2)>>2]=e;A=t[i>>2]|0;n=(t[a>>2]|0)+1|0;t[a>>2]=n;t[A+(n<<2)>>2]=k;n=k}}d=d+1|0}while(1){if((e|0)>=(E|0))break;if((t[B+(e<<2)>>2]|0)==(e|0)){p=n+1|0;t[(t[r>>2]|0)+(n<<2)>>2]=e;m=t[i>>2]|0;n=(t[a>>2]|0)+1|0;t[a>>2]=n;t[m+(n<<2)>>2]=p;n=p}e=e+1|0}G2(v)}}while(0);G2(t[y>>2]|0);G2(t[C>>2]|0);G2(B);h=I;return}function uu(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0,n=0,f=0,l=0,s=0,o=0,u=0,b=0,h=0,w=0,k=0,d=0,v=0,g=0,m=0,p=0;d=t[e+20>>2]|0;v=t[e+24>>2]|0;p=t[e>>2]|0;m=p<<2;t[A>>2]=$F(m)|0;t[r>>2]=$F(m+4|0)|0;m=$F(m)|0;k=$F(p<<4)|0;a=0;while(1){if((a|0)>=(p|0))break;t[m+(a<<2)>>2]=a;a=a+1|0}t[i>>2]=0;t[t[r>>2]>>2]=0;w=t[e+28>>2]|0;g=jo(p)|0;a=0;u=0;while(1){if((u|0)>=(p|0)){h=0;break}e=t[g+(u<<2)>>2]|0;e:do{if((t[m+(e<<2)>>2]|0)!=-1?(b=t[d+(e<<2)>>2]|0,((t[d+(e+1<<2)>>2]|0)-b|0)==1):0){l=t[v+(b<<2)>>2]|0;t[m+(l<<2)>>2]=-1;s=t[A>>2]|0;t[s+(a<<2)>>2]=l;o=d+(l+1<<2)|0;f=t[d+(l<<2)>>2]|0;a=a+1|0;while(1){if((f|0)>=(t[o>>2]|0))break;e=v+(f<<2)|0;n=t[e>>2]|0;if((l|0)!=(n|0)?((t[d+(n+1<<2)>>2]|0)-(t[d+(n<<2)>>2]|0)|0)==1:0){t[m+(n<<2)>>2]=-1;t[s+(a<<2)>>2]=t[e>>2];a=a+1|0}f=f+1|0}f=t[r>>2]|0;e=t[i>>2]|0;n=t[f+(e<<2)>>2]|0;if((a-n|0)<5){h=e+1|0;t[i>>2]=h;t[f+(h<<2)>>2]=a;break}n=n+1|0;e=e+1|0;t[i>>2]=e;t[f+(e<<2)>>2]=n;e=n;while(1){if(!((n|0)<(a|0)&(e|0)<(a|0)))break e;h=n+3|0;h=(a|0)<(h|0)?a:h;o=(t[i>>2]|0)+1|0;t[i>>2]=o;t[f+(o<<2)>>2]=h;e=e+1|0;n=h}}}while(0);u=u+1|0}while(1){if((h|0)>=(p|0)){e=0;break}u=t[g+(h<<2)>>2]|0;b=m+(u<<2)|0;e=t[b>>2]|0;if((e|0)!=-1){o=t[d+(u+1<<2)>>2]|0;n=0;s=t[d+(u<<2)>>2]|0;while(1){if((s|0)>=(o|0))break;l=t[v+(s<<2)>>2]|0;if((u|0)!=(l|0)?(t[m+(l<<2)>>2]|0)!=-1:0){f=n<<1;if((e|0)==-1)e=-1;else{c[k+(f<<3)>>3]=+(l|0);c[k+((f|1)<<3)>>3]=+c[w+(s<<3)>>3];n=n+1|0}}s=s+1|0}if((n|0)>0){_4(k,n,16,81);n=(n|0)<3?n:3;e=0;while(1){if((e|0)>=(n|0))break;o=~~+c[k+(e<<1<<3)>>3];t[m+(o<<2)>>2]=-1;t[(t[A>>2]|0)+(a<<2)>>2]=o;e=e+1|0;a=a+1|0}t[b>>2]=-1;b=a+1|0;t[(t[A>>2]|0)+(a<<2)>>2]=u;u=t[r>>2]|0;a=(t[i>>2]|0)+1|0;t[i>>2]=a;t[u+(a<<2)>>2]=b;a=b}}h=h+1|0}while(1){if((e|0)>=(p|0))break;if((t[m+(e<<2)>>2]|0)==(e|0)){v=a+1|0;t[(t[A>>2]|0)+(a<<2)>>2]=e;d=t[r>>2]|0;a=(t[i>>2]|0)+1|0;t[i>>2]=a;t[d+(a<<2)>>2]=v;a=v}e=e+1|0}G2(g);G2(m);return}function bu(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0,n=0,f=0,l=0,s=0,c=0,o=0,u=0,b=0,h=0,w=0,k=0,d=0;w=t[e+20>>2]|0;k=t[e+24>>2]|0;d=t[e>>2]|0;a=t[e+4>>2]|0;c=$F(d<<2)|0;t[r>>2]=c;e=0;while(1){if((e|0)>=(d|0))break;t[c+(e<<2)>>2]=e;e=e+1|0}t[i>>2]=a;e:do{if(!A){a=0;A:while(1){if((a|0)>=(d|0))break e;A=a+1|0;n=w+(A<<2)|0;f=c+(a<<2)|0;l=c+(a<<2)|0;e=t[w+(a<<2)>>2]|0;while(1){if((e|0)>=(t[n>>2]|0)){a=A;continue A}s=k+(e<<2)|0;r=t[s>>2]|0;if(((a|0)!=(r|0)?(h=c+(r<<2)|0,(t[h>>2]|0)==(r|0)):0)?(t[f>>2]|0)==(a|0):0){t[h>>2]=a;t[l>>2]=t[s>>2];t[i>>2]=(t[i>>2]|0)+-1}e=e+1|0}}}else{A=jo(d)|0;e=0;while(1){if((e|0)>=(d|0))break;n=t[A+(e<<2)>>2]|0;f=w+(n+1<<2)|0;a=t[w+(n<<2)>>2]|0;while(1){if((a|0)>=(t[f>>2]|0))break;l=k+(a<<2)|0;s=t[l>>2]|0;if(((n|0)!=(s|0)?(o=t[r>>2]|0,u=o+(s<<2)|0,(t[u>>2]|0)==(s|0)):0)?(b=o+(n<<2)|0,(t[b>>2]|0)==(n|0)):0){t[u>>2]=n;t[b>>2]=t[l>>2];t[i>>2]=(t[i>>2]|0)+-1}a=a+1|0}e=e+1|0}G2(A)}}while(0);return}function hu(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0,n=0,f=0.0,l=0.0,s=0,o=0,u=0,b=0,h=0,w=0,k=0,d=0,v=0,g=0;d=t[e+20>>2]|0;v=t[e+24>>2]|0;g=t[e>>2]|0;n=t[e+4>>2]|0;h=$F(g<<2)|0;t[r>>2]=h;a=0;while(1){if((a|0)>=(g|0))break;t[h+(a<<2)>>2]=a;a=a+1|0}t[i>>2]=n;k=t[e+28>>2]|0;e:do{if(!A){a=0;f=0.0;s=0;while(1){if((s|0)>=(g|0))break e;o=s+1|0;u=t[d+(o<<2)>>2]|0;b=h+(s<<2)|0;n=1;A=t[d+(s<<2)>>2]|0;while(1){if((A|0)>=(u|0))break;e=t[v+(A<<2)>>2]|0;if(((s|0)!=(e|0)?(t[h+(e<<2)>>2]|0)==(e|0):0)?(t[b>>2]|0)==(s|0):0){l=+c[k+(A<<3)>>3];if((n|0)==0?!(l>f):0)n=0;else{n=0;a=e;f=l}}A=A+1|0}if(n|0){s=o;continue}t[h+(a<<2)>>2]=s;t[h+(s<<2)>>2]=a;t[i>>2]=(t[i>>2]|0)+-1;s=o}}else{w=jo(g)|0;h=0;a=0;f=0.0;while(1){if((h|0)>=(g|0))break;s=t[w+(h<<2)>>2]|0;o=t[r>>2]|0;u=o+(s<<2)|0;if((t[u>>2]|0)==(s|0)){b=t[d+(s+1<<2)>>2]|0;A=t[d+(s<<2)>>2]|0;n=1;while(1){if((A|0)>=(b|0))break;e=t[v+(A<<2)>>2]|0;if((s|0)!=(e|0)?(t[o+(e<<2)>>2]|0)==(e|0):0){l=+c[k+(A<<3)>>3];if((n|0)==0?!(l>f):0)n=0;else{n=0;a=e;f=l}}A=A+1|0}if(!n){t[o+(a<<2)>>2]=s;t[u>>2]=a;t[i>>2]=(t[i>>2]|0)+-1}}h=h+1|0}G2(w)}}while(0);return}function wu(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0,n=0,f=0.0,l=0.0,s=0,o=0,u=0,b=0,h=0.0,w=0,k=0,d=0,v=0,g=0,m=0;v=t[e+20>>2]|0;g=t[e+24>>2]|0;m=t[e>>2]|0;n=t[e+4>>2]|0;w=$F(m<<2)|0;t[r>>2]=w;a=0;while(1){if((a|0)>=(m|0))break;t[w+(a<<2)>>2]=a;a=a+1|0}t[i>>2]=n;d=t[e+28>>2]|0;e:do{if(!A){a=0;f=0.0;s=0;while(1){if((s|0)>=(m|0))break e;A=t[v+(s<<2)>>2]|0;o=s+1|0;u=t[v+(o<<2)>>2]|0;b=w+(s<<2)|0;h=+(u-A|0);n=1;while(1){if((A|0)>=(u|0))break;e=t[g+(A<<2)>>2]|0;if(((s|0)!=(e|0)?(t[w+(e<<2)>>2]|0)==(e|0):0)?(t[b>>2]|0)==(s|0):0){l=+c[d+(A<<3)>>3]/(+((t[v+(e+1<<2)>>2]|0)-(t[v+(e<<2)>>2]|0)|0)*h);if((n|0)==0?!(l>f):0)n=0;else{n=0;a=e;f=l}}A=A+1|0}if(n|0){s=o;continue}t[w+(a<<2)>>2]=s;t[w+(s<<2)>>2]=a;t[i>>2]=(t[i>>2]|0)+-1;s=o}}else{k=jo(m)|0;w=0;a=0;f=0.0;while(1){if((w|0)>=(m|0))break;s=t[k+(w<<2)>>2]|0;o=t[r>>2]|0;u=o+(s<<2)|0;if((t[u>>2]|0)==(s|0)){A=t[v+(s<<2)>>2]|0;b=t[v+(s+1<<2)>>2]|0;h=+(b-A|0);n=1;while(1){if((A|0)>=(b|0))break;e=t[g+(A<<2)>>2]|0;if((s|0)!=(e|0)?(t[o+(e<<2)>>2]|0)==(e|0):0){l=+c[d+(A<<3)>>3]/(+((t[v+(e+1<<2)>>2]|0)-(t[v+(e<<2)>>2]|0)|0)*h);if((n|0)==0?!(l>f):0)n=0;else{n=0;a=e;f=l}}A=A+1|0}if(!n){t[o+(a<<2)>>2]=s;t[u>>2]=a;t[i>>2]=(t[i>>2]|0)+-1}}w=w+1|0}G2(k)}}while(0);return}function ku(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;var n=0,f=0,l=0,s=0,c=0,o=0,u=0,b=0;u=t[e+20>>2]|0;b=t[e+24>>2]|0;o=t[e>>2]|0;s=$F(o<<2)|0;t[r>>2]=s;e=0;while(1){if((e|0)>=(o|0))break;t[s+(e<<2)>>2]=-100;e=e+1|0}t[i>>2]=0;t[a>>2]=0;e:do{if(!A){A=0;A:while(1){if((A|0)>=(o|0))break e;if((t[s+(A<<2)>>2]|0)!=-100){A=A+1|0;continue}n=t[i>>2]|0;t[i>>2]=n+1;t[s+(A<<2)>>2]=n;n=A+1|0;f=u+(n<<2)|0;e=t[u+(A<<2)>>2]|0;while(1){if((e|0)>=(t[f>>2]|0)){A=n;continue A}l=t[b+(e<<2)>>2]|0;if((A|0)!=(l|0)){t[s+(l<<2)>>2]=-1;t[a>>2]=(t[a>>2]|0)+1}e=e+1|0}}}else{l=jo(o)|0;f=0;while(1){if((f|0)>=(o|0))break;s=t[l+(f<<2)>>2]|0;c=t[r>>2]|0;e=c+(s<<2)|0;A:do{if((t[e>>2]|0)==-100){A=t[i>>2]|0;t[i>>2]=A+1;t[e>>2]=A;A=u+(s+1<<2)|0;e=t[u+(s<<2)>>2]|0;while(1){if((e|0)>=(t[A>>2]|0))break A;n=t[b+(e<<2)>>2]|0;if((s|0)!=(n|0)){t[c+(n<<2)>>2]=-1;t[a>>2]=(t[a>>2]|0)+1}e=e+1|0}}}while(0);f=f+1|0}G2(l)}}while(0);t[a>>2]=(t[a>>2]|0)+(t[i>>2]|0);return}function du(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;var n=0,f=0,l=0,s=0,c=0,o=0,u=0,b=0,w=0,k=0;k=h;h=h+16|0;u=k+4|0;b=k;w=t[e+20>>2]|0;o=t[e+24>>2]|0;f=t[e>>2]|0;e=$F(f<<2)|0;t[r>>2]=e;n=0;while(1){t[u>>2]=n;if((n|0)>=(f|0))break;t[e+(n<<2)>>2]=-100;n=(t[u>>2]|0)+1|0}t[i>>2]=0;t[a>>2]=0;c=Bu(f,(f<<1)+-2|0)|0;e:do{if(!A){e=0;while(1){t[u>>2]=e;if((e|0)>=(f|0))break e;s=e+1|0;Cu(c,e,(t[w+(s<<2)>>2]|0)-(t[w+(e<<2)>>2]|0)|0)|0;e=s}}else{n=jo(f)|0;e=0;while(1){if((e|0)>=(f|0))break;s=t[n+(e<<2)>>2]|0;t[u>>2]=s;Cu(c,s,(t[w+(s+1<<2)>>2]|0)-(t[w+(s<<2)>>2]|0)|0)|0;e=e+1|0}G2(n)}}while(0);e:while(1){s=(Iu(c,u,b)|0)==0;e=t[i>>2]|0;if(s)break;t[i>>2]=e+1;t[(t[r>>2]|0)+(t[u>>2]<<2)>>2]=e;e=t[u>>2]|0;s=t[w+(e<<2)>>2]|0;while(1){if((s|0)>=(t[w+(e+1<<2)>>2]|0))continue e;l=t[o+(s<<2)>>2]|0;if((e|0)!=(l|0)){A:do{if((t[(t[r>>2]|0)+(l<<2)>>2]|0)==-100){Gu(c,l)|0;t[(t[r>>2]|0)+(l<<2)>>2]=-1;n=w+(l+1<<2)|0;e=t[w+(l<<2)>>2]|0;while(1){if((e|0)>=(t[n>>2]|0))break A;A=o+(e<<2)|0;f=t[A>>2]|0;if((l|0)!=(f|0)?(t[(t[r>>2]|0)+(f<<2)>>2]|0)==-100:0){f=Zu(c,f)|0;t[b>>2]=f;Cu(c,t[A>>2]|0,f+1|0)|0}e=e+1|0}}}while(0);t[a>>2]=(t[a>>2]|0)+1;e=t[u>>2]|0}s=s+1|0}}t[a>>2]=(t[a>>2]|0)+e;yu(c);h=k;return}function vu(e,A){e=e|0;A=A|0;var r=0.0,i=0.0;i=+c[e+8>>3];r=+c[A+8>>3];return(i>r?-1:i>2]|0)==1:0)a=e;else a=Ho(e)|0;do{if(!A)A=0;else{if(sK(A,0)|0?(t[A+16>>2]|0)==1:0)break;A=bK(A,0)|0}}while(0);r=mu(a,A,r)|0;A=pu(r,i)|0;if((a|0)!=(e|0))t[r+36>>2]=1;return A|0}function mu(e,A,r){e=e|0;A=A|0;r=r|0;var i=0;if(!e)e=0;else{i=$F(44)|0;t[i>>2]=0;t[i+4>>2]=t[e+4>>2];t[i+8>>2]=e;t[i+12>>2]=A;t[i+16>>2]=0;t[i+20>>2]=0;t[i+24>>2]=r;t[i+28>>2]=0;t[i+32>>2]=0;t[i+36>>2]=0;e=i}return e|0}function pu(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0,f=0,l=0,s=0,c=0;c=h;h=h+32|0;i=c+20|0;a=c+16|0;n=c+12|0;f=c+8|0;l=c+4|0;s=c;t[a>>2]=0;if((t[e>>2]|0)<((t[A+16>>2]|0)+-1|0)?(lu(t[e+8>>2]|0,l,t[e+12>>2]|0,s,0,a,n,f,A,i),r=t[l>>2]|0,r|0):0){l=t[s>>2]|0;s=mu(r,l,t[a>>2]|0)|0;t[e+28>>2]=s;t[s+40>>2]=t[i>>2];t[s>>2]=(t[e>>2]|0)+1;t[s+4>>2]=t[r>>2];t[s+8>>2]=r;t[s+12>>2]=l;t[s+16>>2]=t[n>>2];t[e+20>>2]=t[f>>2];t[s+32>>2]=e;pu(s,A)|0}h=c;return e|0}function Eu(e){e=e|0;var A=0;while(1){A=t[e+28>>2]|0;if(!A)break;else e=A}return e|0}function Bu(e,A){e=e|0;A=A|0;var r=0,i=0,a=0;a=$F(28)|0;t[a>>2]=0;t[a+4>>2]=e;t[a+8>>2]=A;t[a+12>>2]=-1;i=a+16|0;t[i>>2]=$F((A<<2)+4|0)|0;r=0;while(1){if((r|0)>(A|0))break;t[(t[i>>2]|0)+(r<<2)>>2]=0;r=r+1|0}A=(e<<2)+4|0;i=a+20|0;t[i>>2]=$F(A)|0;r=0;while(1){if((r|0)>(e|0))break;t[(t[i>>2]|0)+(r<<2)>>2]=0;r=r+1|0}A=$F(A)|0;t[a+24>>2]=A;r=0;while(1){if((r|0)>(e|0))break;t[A+(r<<2)>>2]=-999;r=r+1|0}return a|0}function yu(e){e=e|0;var A=0,r=0,i=0,a=0;if(e|0){i=e+16|0;A=t[i>>2]|0;if(A|0){a=e+8|0;r=0;while(1){if((r|0)>(t[a>>2]|0))break;Gb(t[A+(r<<2)>>2]|0,105);r=r+1|0;A=t[i>>2]|0}G2(A)}A=t[e+20>>2]|0;if(A|0)G2(A);G2(t[e+24>>2]|0);G2(e)}return}function Cu(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0,n=0,f=0,l=0,s=0,c=0,o=0;n=e+8|0;s=e+20|0;l=e+24|0;c=e+16|0;if(!e)ge(138953,95743,69,95759);while(1){if((t[n>>2]|0)<(r|0)){f=4;break}i=(t[s>>2]|0)+(A<<2)|0;a=t[i>>2]|0;if(!a)break;o=t[(t[l>>2]|0)+(A<<2)>>2]|0;t[i>>2]=0;t[e>>2]=(t[e>>2]|0)+-1;Db(a,105,(t[c>>2]|0)+(o<<2)|0)}if((f|0)==4)ge(95778,95743,70,95759);t[e>>2]=(t[e>>2]|0)+1;i=e+12|0;if((t[i>>2]|0)<(r|0))t[i>>2]=r;t[(t[l>>2]|0)+(A<<2)>>2]=r;i=$F(4)|0;t[i>>2]=A;a=t[(t[c>>2]|0)+(r<<2)>>2]|0;if(!a)i=Zb(i)|0;else i=Lb(a,i)|0;t[(t[s>>2]|0)+(A<<2)>>2]=i;t[(t[c>>2]|0)+(r<<2)>>2]=i;return e|0}function Iu(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0,n=0;if((e|0)!=0?(t[e>>2]|0)>=1:0){a=e+12|0;i=t[a>>2]|0;t[r>>2]=i;t[e>>2]=(t[e>>2]|0)+-1;r=e+16|0;n=t[(t[r>>2]|0)+(i<<2)>>2]|0;t[A>>2]=t[(Qb(n)|0)>>2];Db(n,105,(t[r>>2]|0)+(i<<2)|0);r=t[r>>2]|0;if(!(t[r+(i<<2)>>2]|0)){while(1){if((i|0)<=-1)break;if(t[r+(i<<2)>>2]|0)break;i=i+-1|0}t[a>>2]=i}i=t[A>>2]|0;t[(t[e+20>>2]|0)+(i<<2)>>2]=0;t[(t[e+24>>2]|0)+(i<<2)>>2]=-999;i=1}else i=0;return i|0}function Zu(e,A){e=e|0;A=A|0;return t[(t[e+24>>2]|0)+(A<<2)>>2]|0}function Gu(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0,f=0;if((e|0)!=0?(i=t[e>>2]|0,(i|0)>=1):0){f=e+24|0;r=t[(t[f>>2]|0)+(A<<2)>>2]|0;t[e>>2]=i+-1;a=e+20|0;i=e+16|0;Db(t[(t[a>>2]|0)+(A<<2)>>2]|0,105,(t[i>>2]|0)+(r<<2)|0);e=e+12|0;if((r|0)==(t[e>>2]|0)?(n=t[i>>2]|0,(t[n+(r<<2)>>2]|0)==0):0){while(1){if((r|0)<=-1)break;if(t[n+(r<<2)>>2]|0)break;r=r+-1|0}t[e>>2]=r}t[(t[a>>2]|0)+(A<<2)>>2]=0;t[(t[f>>2]|0)+(A<<2)>>2]=-999;r=1}else r=0;return r|0}function Lu(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0,n=0.0,f=0,l=0,s=0.0,o=0.0,u=0,b=0.0,h=0,w=0,k=0,d=0,v=0,g=0,m=0,p=0,E=0,B=0,y=0;if(!(sK(e,0)|0))ge(95795,95831,260,95846);E=cK(e)|0;B=t[E+20>>2]|0;y=t[E+24>>2]|0;i=E+16|0;e=E+28|0;if((t[i>>2]|0)==1)p=t[e>>2]|0;else{G2(t[e>>2]|0);t[i>>2]=1;p=$F(t[E+8>>2]<<3)|0;t[e>>2]=p}d=$F(t[E>>2]<<2)|0;e=0;while(1){i=t[E>>2]|0;if((e|0)>=(i|0)){k=0;e=i;break}t[d+(e<<2)>>2]=-1;e=e+1|0}e:while(1){if((k|0)>=(e|0)){n=0.0;s=0.0;a=0;m=0;g=e;break}w=k+1|0;f=B+(w<<2)|0;u=B+(k<<2)|0;l=(t[f>>2]|0)-(t[u>>2]|0)|0;t[d+(k<<2)>>2]=k;i=t[u>>2]|0;while(1){h=t[f>>2]|0;if((i|0)>=(h|0))break;e=t[y+(i<<2)>>2]|0;if((k|0)!=(e|0))t[d+(e<<2)>>2]=k;i=i+1|0}b=+(l|0);i=t[u>>2]|0;while(1){if((i|0)>=(h|0))break;e=t[y+(i<<2)>>2]|0;if((k|0)!=(e|0)){f=t[B+(e+1<<2)>>2]|0;e=t[B+(e<<2)>>2]|0;o=+(f-e|0)+b;while(1){if((e|0)>=(f|0))break;o=(t[d+(t[y+(e<<2)>>2]<<2)>>2]|0)==(k|0)?o+-1.0:o;e=e+1|0}c[p+(i<<3)>>3]=o;if(!(o>0.0)){v=23;break e}}i=i+1|0}k=w;e=t[E>>2]|0}if((v|0)==23)ge(95868,95831,290,95846);while(1){if((m|0)>=(g|0))break;f=m+1|0;l=B+(f<<2)|0;i=t[B+(m<<2)>>2]|0;while(1){if((i|0)>=(t[l>>2]|0))break;e=t[y+(i<<2)>>2]|0;if((m|0)==(e|0))e=a;else{s=+Ko(r,A,m,e)+s;n=+c[p+(i<<3)>>3]+n;e=a+1|0}a=e;i=i+1|0}m=f;g=t[E>>2]|0}b=+(a|0);n=s/(n/b*b);e=0;e:while(1){if((e|0)>=(g|0))break;f=e+1|0;l=t[B+(f<<2)>>2]|0;i=t[B+(e<<2)>>2]|0;while(1){if((i|0)>=(l|0)){e=f;continue e}a=p+(i<<3)|0;if((e|0)!=(t[y+(i<<2)>>2]|0))c[a>>3]=+c[a>>3]*n;i=i+1|0}}return E|0}function Qu(e,A,r,i,a){e=e|0;A=A|0;r=+r;i=i|0;a=a|0;var n=0,f=0,l=0,s=0,o=0,u=0,b=0,h=0.0,w=0,k=0.0,d=0.0,v=0.0,g=0,m=0,p=0,E=0,B=0,y=0,C=0,I=0,Z=0,G=0,L=0,Q=0,W=0,Y=0,F=0,M=0,V=0,N=0,R=0,x=0,J=0,H=0,P=0.0,X=0.0;V=t[e>>2]|0;N=t[e+20>>2]|0;R=t[e+24>>2]|0;if(!(sK(e,0)|0))ge(95795,95831,333,95876);x=Lu(e,A,i)|0;J=$F(56)|0;H=J+32|0;c[H>>3]=1.0;t[J+20>>2]=0;t[J+24>>2]=0;c[J+40>>3]=.01;t[J+48>>2]=~~+D(+ +(t[e>>2]|0));n=V<<3;Y=$F(n)|0;t[J+12>>2]=Y;e=0;while(1){if((e|0)>=(V|0))break;c[Y+(e<<3)>>3]=r;e=e+1|0}F=$F(V<<2)|0;W=$F(n)|0;l=0;while(1){if((l|0)>=(V|0)){b=0;break}s=W+(l<<3)|0;c[s>>3]=0.0;o=l+1|0;u=N+(o<<2)|0;f=t[N+(l<<2)>>2]|0;e=0;r=0.0;while(1){if((f|0)>=(t[u>>2]|0))break;n=t[R+(f<<2)>>2]|0;if((l|0)!=(n|0)){r=+Ko(i,A,l,n);r=+c[s>>3]+r;c[s>>3]=r;e=e+1|0}f=f+1|0}if((e|0)<=0){w=14;break}c[s>>3]=r/+(e|0);l=o}if((w|0)==14)ge(95908,95831,358,95876);while(1){if((b|0)>=(V|0)){e=0;o=0;break}t[F+(b<<2)>>2]=-1;b=b+1|0}e:while(1){if((o|0)>=(V|0))break;t[F+(o<<2)>>2]=o;l=N+(o<<2)|0;u=o+1|0;b=N+(u<<2)|0;f=t[l>>2]|0;while(1){n=t[b>>2]|0;if((f|0)>=(n|0))break;n=F+(t[R+(f<<2)>>2]<<2)|0;if((t[n>>2]|0)!=(o|0)){t[n>>2]=o;e=e+1|0}f=f+1|0}s=t[l>>2]|0;while(1){if((s|0)>=(n|0)){o=u;continue e}f=t[R+(s<<2)>>2]|0;l=N+(f+1<<2)|0;f=t[N+(f<<2)>>2]|0;while(1){if((f|0)>=(t[l>>2]|0))break;n=F+(t[R+(f<<2)>>2]<<2)|0;if((t[n>>2]|0)!=(o|0)){t[n>>2]=o;e=e+1|0}f=f+1|0}s=s+1|0;n=t[b>>2]|0}}n=e+V|0;L=J+4|0;t[L>>2]=aK(V,V,n,1,1)|0;n=aK(V,V,n,1,1)|0;Q=J+8|0;t[Q>>2]=n;e=t[L>>2]|0;do{if(!((n|0)==0|(e|0)==0)){Z=t[e+20>>2]|0;I=t[e+24>>2]|0;y=t[e+28>>2]|0;G=t[n+28>>2]|0;C=t[n+20>>2]|0;g=t[n+24>>2]|0;t[C>>2]=0;t[Z>>2]=0;r=0.0;h=0.0;w=0;f=0;e:while(1){if((w|0)>=(V|0)){w=58;break}m=w+V|0;t[F+(w<<2)>>2]=m;s=N+(w<<2)|0;p=w+1|0;E=N+(p<<2)|0;B=W+(w<<3)|0;k=0.0;d=0.0;l=t[s>>2]|0;while(1){e=t[E>>2]|0;if((l|0)>=(e|0))break;n=t[R+(l<<2)>>2]|0;e=F+(n<<2)|0;if((t[e>>2]|0)!=(m|0)){t[e>>2]=m;t[I+(f<<2)>>2]=n;switch(a|0){case 0:{v=1.0;break}case 1:{v=(+c[W+(n<<3)>>3]+ +c[B>>3])*.5;break}case 2:{v=+z(+ +qo(i,A,w,n),.4);break}default:{w=42;break e}}X=-1.0/(v*v);c[y+(f<<3)>>3]=X;t[g+(f<<2)>>2]=n;P=X*v;b=G+(f<<3)|0;c[b>>3]=P;h=+Ko(i,A,w,n)*P+h;P=+c[b>>3];f=f+1|0;k=X+k;d=P+d;r=P*v+r}l=l+1|0}b=t[s>>2]|0;while(1){if((b|0)>=(e|0))break;s=t[R+(b<<2)>>2]|0;o=N+(s+1<<2)|0;u=W+(s<<3)|0;l=t[N+(s<<2)>>2]|0;while(1){if((l|0)>=(t[o>>2]|0))break;n=R+(l<<2)|0;e=F+(t[n>>2]<<2)|0;if((t[e>>2]|0)!=(m|0)){t[e>>2]=m;switch(a|0){case 0:{v=2.0;break}case 1:{v=(+c[u>>3]*2.0+ +c[B>>3]+ +c[W+(t[n>>2]<<3)>>3])*.5;break}case 2:{v=+z(+ +qo(i,A,w,t[n>>2]|0),.4);break}default:{w=53;break e}}t[I+(f<<2)>>2]=t[n>>2];P=-1.0/(v*v);c[y+(f<<3)>>3]=P;t[g+(f<<2)>>2]=t[n>>2];X=P*v;e=G+(f<<3)|0;c[e>>3]=X;h=+Ko(i,A,t[n>>2]|0,s)*X+h;X=+c[e>>3];f=f+1|0;k=P+k;d=X+d;r=X*v+r}l=l+1|0}b=b+1|0;e=t[E>>2]|0}t[I+(f<<2)>>2]=w;B=Y+(w<<3)|0;X=-(k*+c[B>>3]);c[B>>3]=X;c[y+(f<<3)>>3]=X-k;t[g+(f<<2)>>2]=w;c[G+(f<<3)>>3]=-d;f=f+1|0;t[Z+(p<<2)>>2]=f;t[C+(p<<2)>>2]=f;w=p}if((w|0)==42){G3(95915,29,1,t[15712]|0)|0;ge(138394,95831,418,95876)}else if((w|0)==53){G3(95915,29,1,t[15712]|0)|0;ge(138394,95831,460,95876)}else if((w|0)==58){r=h/r;e=0;while(1){if((e|0)>=(f|0))break;R=G+(e<<3)|0;c[R>>3]=+c[R>>3]*r;e=e+1|0}c[H>>3]=r;t[(t[L>>2]|0)+8>>2]=f;t[(t[Q>>2]|0)+8>>2]=f;G2(F);G2(W);iK(x);M=J;break}}else{Du(J);M=0}}while(0);return M|0}function Du(e){e=e|0;var A=0;if(e|0){A=t[e+4>>2]|0;if(A|0)iK(A);A=t[e+8>>2]|0;if(A|0)iK(A);A=t[e+12>>2]|0;if(A|0)G2(A);A=t[e+20>>2]|0;if(A|0)F5[t[e+16>>2]&127](A);G2(e)}return}function zu(e,A,r,i,a,n){e=e|0;A=A|0;r=+r;i=i|0;a=a|0;n=n|0;var f=0,l=0.0,s=0,o=0.0,u=0.0,b=0.0,h=0.0,w=0.0,k=0.0,d=0,v=0,g=0,m=0,p=0,E=0,B=0,y=0,C=0,I=0,Z=0,G=0,L=0,Q=0,z=0,W=0,Y=0,F=0,M=0,V=0,N=0.0,R=0;M=t[e>>2]|0;if(sK(e,0)|0?(t[e+16>>2]|0)==1:0){s=P(M,A)|0;l=0.0;f=0;while(1){if((f|0)>=(s|0))break;k=+c[i+(f<<3)>>3];l=k*k+l;f=f+1|0}e:do{if(l==0.0){f=0;while(1){if((f|0)>=(s|0))break e;c[i+(f<<3)>>3]=+Xo()*72.0;f=f+1|0}}}while(0);Q=t[e+20>>2]|0;z=t[e+24>>2]|0;W=t[e+28>>2]|0;f=$F(56)|0;F=f+32|0;c[F>>3]=1.0;t[f+20>>2]=0;t[f+24>>2]=0;t[f>>2]=e;c[f+40>>3]=.01;t[f+48>>2]=~~+D(+ +(t[e>>2]|0));Y=$F(M<<3)|0;t[f+12>>2]=Y;s=0;while(1){if((s|0)>=(M|0))break;c[Y+(s<<3)>>3]=r;s=s+1|0}e=(t[e+8>>2]|0)+M|0;G=f+4|0;t[G>>2]=aK(M,M,e,1,1)|0;e=aK(M,M,e,1,1)|0;L=f+8|0;t[L>>2]=e;s=t[G>>2]|0;if(!((e|0)==0|(s|0)==0)){B=t[s+20>>2]|0;y=t[s+24>>2]|0;C=t[e+20>>2]|0;I=t[e+24>>2]|0;p=t[s+28>>2]|0;Z=t[e+28>>2]|0;t[C>>2]=0;t[B>>2]=0;w=0.0;k=0.0;E=0;v=0;e:while(1){if((v|0)>=(M|0))break;g=v+1|0;m=Q+(g<<2)|0;o=0.0;u=0.0;d=t[Q+(v<<2)>>2]|0;h=w;r=k;e=E;while(1){if((d|0)>=(t[m>>2]|0))break;s=t[z+(d<<2)>>2]|0;if((s|0)==(v|0)){l=h;s=e}else{t[y+(e<<2)>>2]=s;b=+c[W+(d<<3)>>3];switch(a|0){case 2:{l=b*b;l=l==0.0?-1.0e5:-1.0/l;break}case 1:{l=b*b==0.0?-1.0e5:-1.0/b;break}case 0:{l=-1.0;break}default:{V=23;break e}}c[p+(e<<3)>>3]=l;t[I+(e<<2)>>2]=s;N=l*b;R=Z+(e<<3)|0;c[R>>3]=N;r=+Ko(i,A,v,s)*N+r;N=+c[R>>3];o=l+o;u=N+u;l=N*b+h;s=e+1|0}d=d+1|0;h=l;e=s}t[y+(e<<2)>>2]=v;E=Y+(v<<3)|0;w=-(o*+c[E>>3]);c[E>>3]=w;c[p+(e<<3)>>3]=w-o;t[I+(e<<2)>>2]=v;c[Z+(e<<3)>>3]=-u;E=e+1|0;t[B+(g<<2)>>2]=E;t[C+(g<<2)>>2]=E;w=h;k=r;v=g}if((V|0)==23)ge(138394,95831,591,96012);l=(n|0)==0?1.0:k/w;if(l==0.0)f=0;else{s=0;while(1){if((s|0)>=(E|0))break;R=Z+(s<<3)|0;c[R>>3]=+c[R>>3]*l;s=s+1|0}c[F>>3]=l;t[(t[G>>2]|0)+8>>2]=E;t[(t[L>>2]|0)+8>>2]=E}}else{Du(f);f=0}return f|0}ge(95945,95831,525,96012);return 0}function Wu(e){e=e|0;Du(e);return}function Yu(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=+a;return+ +Fu(e,A,r,i,a)}function Fu(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=+a;var n=0,f=0,l=0.0,s=0,o=0,u=0,b=0,w=0.0,k=0,d=0.0,v=0.0,g=0,m=0,p=0,E=0,B=0,y=0,C=0,I=0.0,Z=0.0,G=0,L=0,Q=0,z=0,W=0,Y=0,F=0,M=0,V=0,N=0,R=0,x=0,J=0,H=0,X=0,S=0,j=0;S=h;h=h+16|0;J=S+12|0;X=S+8|0;u=S+4|0;s=S;o=t[e+4>>2]|0;f=t[e+8>>2]|0;t[J>>2]=0;t[X>>2]=0;t[u>>2]=0;M=t[e+12>>2]|0;t[s>>2]=0;V=cK(f)|0;N=t[o>>2]|0;R=P(N,A)|0;n=R<<3;H=$F(n)|0;if((H|0)!=0?(x=P(A<<3,N)|0,Q6(H|0,r|0,x|0)|0,F=$F(n)|0,t[X>>2]=F,(F|0)!=0):0){Y=t[f+20>>2]|0;F=t[f+24>>2]|0;L=t[f+28>>2]|0;Q=t[V+28>>2]|0;z=t[o+28>>2]|0;W=e+24|0;switch(t[W>>2]|0){case 1:{Mu(t[e+20>>2]|0,N,A,r,s,u);n=t[s>>2]|0;if(!n){I=0.0;Z=0.0;n=0}else{o=oK(o,n)|0;I=0.0;Z=0.0}break}case 2:{n=t[e+20>>2]|0;I=+c[n+8>>3];Z=+c[n>>3];n=0;break}default:{I=0.0;Z=0.0;n=0}}y=(M|0)==0;C=e+40|0;B=e+48|0;f=t[u>>2]|0;l=1.0;s=0;e:while(1){E=s+1|0;if(!((s|0)<(i|0)&l>a))break;A:do{if((t[W>>2]|0)==4){u=t[X>>2]|0;s=0;while(1){if((s|0)>=(N|0))break A;b=P(s,A)|0;e=0;while(1){if((e|0)>=(A|0))break;c[u+(e+b<<3)>>3]=0.0;e=e+1|0}s=s+1|0}}else{k=0;while(1){if((k|0)>=(N|0))break;m=k+1|0;p=Y+(m<<2)|0;w=0.0;g=t[Y+(k<<2)>>2]|0;s=-1;while(1){if((g|0)>=(t[p>>2]|0))break;u=F+(g<<2)|0;e=t[u>>2]|0;if((k|0)==(e|0))s=g;else{v=+Ko(r,A,k,e);b=L+(g<<3)|0;d=+c[b>>3];if(d==0.0)d=0.0;else{if(v==0.0){d=d/+c[z+(g<<3)>>3]*.0001;e=0;while(1){if((e|0)>=(A|0))break;v=d*(+Xo()+.0001);j=r+((P(t[u>>2]|0,A)|0)+e<<3)|0;c[j>>3]=v+ +c[j>>3];e=e+1|0}v=+Ko(r,A,k,t[u>>2]|0);d=+c[b>>3]}d=d/v}c[Q+(g<<3)>>3]=d;w=d+w}g=g+1|0}if((s|0)<=-1){G=25;break e}c[Q+(s<<3)>>3]=-w;k=m}zo(V,0,r,0,X,0,A)}}while(0);A:do{if(!y){u=t[X>>2]|0;s=0;while(1){if((s|0)>=(N|0))break A;b=M+(s<<3)|0;k=P(s,A)|0;e=0;while(1){if((e|0)>=(A|0))break;p=e+k|0;j=u+(p<<3)|0;c[j>>3]=+c[j>>3]+ +c[H+(p<<3)>>3]*+c[b>>3];e=e+1|0}s=s+1|0}}}while(0);A:do{switch(t[W>>2]|0){case 1:{s=t[X>>2]|0;e=0;while(1){if((e|0)>=(N|0)){G=50;break A}b=P(e,A)|0;u=0;while(1){if((u|0)>=(A|0))break;G=u+b|0;j=s+(G<<3)|0;c[j>>3]=+c[j>>3]+ +c[f+(G<<3)>>3];u=u+1|0}e=e+1|0}}case 2:{Vu(N,A,r,t[X>>2]|0,Z,I);s=t[X>>2]|0;w=+c[C>>3];e=t[B>>2]|0;if((t[W>>2]|0)==2)Nu(o,Z,A,r,s,w,e,J);else G=51;break}default:{s=t[X>>2]|0;G=50}}}while(0);if((G|0)==50){w=+c[C>>3];e=t[B>>2]|0;G=51}if((G|0)==51){G=0;+tb(o,A,r,s,w,e,0,J)}if(t[J>>2]|0)break;l=+Ru(N,A,r,t[X>>2]|0);l=l/+D(+ +To(R,r,r));Q6(r|0,t[X>>2]|0,x|0)|0;s=E}if((G|0)==25)ge(96049,95831,895,96060);iK(V);if(n){iK(n);iK(o)}}else{iK(V);l=1.0;f=0}G2(H);n=t[X>>2]|0;if(n|0)G2(n);if(f|0)G2(f);h=S;return+l}function Mu(e,A,r,i,a,n){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;n=n|0;var f=0,l=0,s=0.0,o=0,u=0,b=0,h=0,w=0,k=0,d=0,v=0.0,g=0,m=0,p=0,E=0.0,B=0,y=0,C=0,I=0,Z=0.0;w=t[e+8>>2]|0;I=t[e+12>>2]|0;B=t[e+16>>2]|0;C=t[e+32>>2]|0;y=t[C+20>>2]|0;C=t[C+24>>2]|0;o=e+20|0;d=t[o>>2]|0;u=e+24|0;k=t[u>>2]|0;b=e+28|0;h=t[b>>2]|0;E=+c[e>>3];e:do{if((w|2|0)==3){if(!d){if((k|0)!=0|(h|0)!=0)ge(96094,95831,692,96111);else{f=0;l=0}while(1){if((f|0)>=(I|0))break;p=t[B+(f<<2)>>2]|0;v=+((t[y+(p+1<<2)>>2]|0)-(t[y+(p<<2)>>2]|0)|0)+1.0;f=f+1|0;l=l+~~(v*v)|0}k=l<<2;d=$F(k)|0;t[o>>2]=d;k=$F(k)|0;t[u>>2]=k;h=$F(l<<3)|0;t[b>>2]=h}m=0;e=0;while(1){if((m|0)>=(I|0))break;w=t[B+(m<<2)>>2]|0;g=y+(w<<2)|0;l=t[g>>2]|0;f=t[C+(l<<2)>>2]|0;l=t[C+(l+1<<2)>>2]|0;A:do{if((f|0)!=(l|0)){Z=+qo(i,r,f,l);Z=Z*Z;b=y+(w+1<<2)|0;v=+((t[b>>2]|0)-(t[g>>2]|0)|0);t[d+(e<<2)>>2]=w;t[k+(e<<2)>>2]=w;c[h+(e<<3)>>3]=E/Z;s=v*v*Z;v=-(E/(Z*v));l=t[g>>2]|0;while(1){e=e+1|0;f=t[b>>2]|0;if((l|0)>=(f|0))break;t[d+(e<<2)>>2]=w;t[k+(e<<2)>>2]=t[C+(l<<2)>>2];c[h+(e<<3)>>3]=v;l=l+1|0}s=E/s;u=t[g>>2]|0;while(1){if((u|0)>=(f|0))break A;o=t[C+(u<<2)>>2]|0;t[d+(e<<2)>>2]=o;t[k+(e<<2)>>2]=w;c[h+(e<<3)>>3]=v;l=t[g>>2]|0;while(1){e=e+1|0;f=t[b>>2]|0;if((l|0)>=(f|0))break;p=t[C+(l<<2)>>2]|0;t[d+(e<<2)>>2]=o;t[k+(e<<2)>>2]=p;c[h+(e<<3)>>3]=s;l=l+1|0}u=u+1|0}}}while(0);m=m+1|0}f=kK(e,A,A,d,k,h,1,8)|0;e=0}else{switch(w|0){case 2:case 4:break;default:{f=0;e=0;break e}}do{if(!d)if((k|0)!=0|(h|0)!=0)ge(96094,95831,734,96111);else{m=I<<2;p=$F(m)|0;t[o>>2]=p;m=$F(m)|0;t[u>>2]=m;g=$F(I<<3)|0;t[b>>2]=g;break}else{g=h;m=k;p=d}}while(0);e=$F(P(A<<3,r)|0)|0;l=P(r,A)|0;f=0;while(1){if((f|0)>=(l|0)){h=0;break}c[e+(f<<3)>>3]=0.0;f=f+1|0}while(1){if((h|0)>=(I|0))break;w=t[B+(h<<2)>>2]|0;o=y+(w<<2)|0;u=t[o>>2]|0;s=+qo(i,r,t[C+(u<<2)>>2]|0,t[C+(u+1<<2)>>2]|0);t[p+(h<<2)>>2]=w;t[m+(h<<2)>>2]=w;s=E/s;c[g+(h<<3)>>3]=s;o=t[o>>2]|0;u=t[y+(w+1<<2)>>2]|0;w=P(w,r)|0;l=o;while(1){if((l|0)>=(u|0))break;b=P(t[C+(l<<2)>>2]|0,r)|0;f=0;while(1){if((f|0)>=(r|0))break;d=e+(f+w<<3)|0;c[d>>3]=+c[d>>3]+ +c[i+(f+b<<3)>>3];f=f+1|0}l=l+1|0}s=s*(1.0/+(u-o|0));f=0;while(1){if((f|0)>=(r|0))break;d=e+(f+w<<3)|0;c[d>>3]=s*+c[d>>3];f=f+1|0}h=h+1|0}f=kK(h,A,A,p,m,g,1,8)|0}}while(0);t[a>>2]=f;t[n>>2]=e;return}function Vu(e,A,r,i,a,t){e=e|0;A=A|0;r=r|0;i=i|0;a=+a;t=+t;var n=0,f=0,l=0,s=0,o=0,u=0,b=0,h=0.0,w=0;t=t*a;n=0;e:while(1){if((n|0)>=(e|0))break;o=n+1|0;u=P(n,A)|0;f=o;while(1){if((f|0)==(e|0)){n=o;continue e}s=P(f,A)|0;a=1.0/+qo(r,A,n,f);l=0;while(1){if((l|0)>=(A|0))break;w=l+u|0;b=l+s|0;h=t*((+c[r+(w<<3)>>3]-+c[r+(b<<3)>>3])*a);w=i+(w<<3)|0;c[w>>3]=h+ +c[w>>3];b=i+(b<<3)|0;c[b>>3]=+c[b>>3]-h;l=l+1|0}f=f+1|0}}return}function Nu(e,A,r,i,a,n,f,l){e=e|0;A=+A;r=r|0;i=i|0;a=a|0;n=+n;f=f|0;l=l|0;var s=0,c=0;c=Tu(e,A)|0;s=$u(e,A)|0;+rb(c,s,t[e>>2]|0,r,i,a,n,f,l);return}function Ru(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0,t=0,n=0.0,f=0.0,l=0,s=0.0,o=0;t=0;f=0.0;while(1){if((t|0)>=(e|0))break;l=P(t,A)|0;a=0;n=0.0;while(1){if((a|0)>=(A|0))break;o=a+l|0;s=+c[i+(o<<3)>>3]-+c[r+(o<<3)>>3];a=a+1|0;n=s*s+n}t=t+1|0;f=+D(+n)+f}return+f}function xu(e,A,r,i,a){e=e|0;A=A|0;r=+r;i=i|0;a=a|0;var n=0,f=0,l=0,s=0.0,o=0,u=0,b=0,h=0,w=0,k=0,d=0,v=0.0,g=0.0,m=0.0,p=0.0,E=0.0,B=0,y=0,C=0,I=0,Z=0,G=0.0,L=0.0;I=t[e>>2]|0;w=t[e+20>>2]|0;k=t[e+24>>2]|0;if(!(sK(e,0)|0))ge(95795,95831,1034,96133);d=I<<3;Z=$F(d)|0;l=0;while(1){if((l|0)>=(I|0))break;u=Z+(l<<3)|0;c[u>>3]=0.0;b=l+1|0;h=w+(b<<2)|0;o=t[w+(l<<2)>>2]|0;n=0;s=0.0;while(1){if((o|0)>=(t[h>>2]|0))break;f=t[k+(o<<2)>>2]|0;if((l|0)!=(f|0)){s=+Ko(i,A,l,f);s=+c[u>>3]+s;c[u>>3]=s;n=n+1|0}o=o+1|0}if((n|0)<=0){C=11;break}c[u>>3]=s/+(n|0);l=b}if((C|0)==11)ge(95908,95831,1046,96133);n=$F(56)|0;y=n+32|0;c[y>>3]=1.0;t[n+20>>2]=0;t[n+24>>2]=0;c[n+40>>3]=.01;t[n+48>>2]=~~+D(+ +(t[e>>2]|0));B=$F(d)|0;t[n+12>>2]=B;f=0;while(1){if((f|0)>=(I|0))break;c[B+(f<<3)>>3]=r;f=f+1|0}do{if((I|0)>2)if(!a){f=fb(I,A,i)|0;break}else{f=nb(I,A,i)|0;break}else f=cK(e)|0}while(0);a=n+4|0;t[a>>2]=oK(e,f)|0;iK(f);l=cK(t[a>>2]|0)|0;t[n+8>>2]=l;f=t[a>>2]|0;if((l|0)==0|(f|0)==0){Ju(n);n=0}else{d=t[f+20>>2]|0;k=t[f+24>>2]|0;w=t[f+28>>2]|0;a=t[l+28>>2]|0;p=0.0;E=0.0;u=0;while(1){if((u|0)>=(I|0))break;h=u+1|0;b=d+(h<<2)|0;m=0.0;r=0.0;l=-1;v=p;g=E;o=t[d+(u<<2)>>2]|0;while(1){if((o|0)>=(t[b>>2]|0))break;f=t[k+(o<<2)>>2]|0;if((f|0)==(u|0)){s=m;f=o}else{G=+z(+ +qo(i,A,u,f),.6);s=1.0/(G*G);c[w+(o<<3)>>3]=s;L=s*G;e=a+(o<<3)|0;c[e>>3]=L;g=L*+Ko(i,A,u,f)+g;L=+c[e>>3];s=s+m;r=L+r;f=l;v=L*G+v}m=s;l=f;o=o+1|0}e=B+(u<<3)|0;s=-(m*+c[e>>3]);c[e>>3]=s;if((l|0)<=-1){C=31;break}c[w+(l<<3)>>3]=s-m;c[a+(l<<3)>>3]=-r;p=v;E=g;u=h}if((C|0)==31)ge(96154,95831,1112,96133);s=E/p;l=t[d+(I<<2)>>2]|0;f=0;while(1){if((f|0)>=(l|0))break;I=a+(f<<3)|0;c[I>>3]=+c[I>>3]*s;f=f+1|0}c[y>>3]=s;G2(Z)}return n|0}function Ju(e){e=e|0;Du(e);return}function Hu(e,A,r){e=e|0;A=A|0;r=r|0;+Fu(e,A,r,50,.001);return}function Pu(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0,n=0,f=0,l=0,s=0.0,o=0,u=0,b=0,h=0,w=0,k=0,d=0,v=0,g=0,m=0,p=0,E=0,B=0,y=0,C=0,I=0,Z=0;C=t[e>>2]|0;I=t[e+20>>2]|0;Z=t[e+24>>2]|0;if(!(sK(e,0)|0))ge(95795,95831,1149,96165);p=Lu(e,A,i)|0;E=t[p+28>>2]|0;e=$F(8)|0;B=$F(C<<2)|0;y=$F(C<<3)|0;f=0;while(1){if((f|0)>=(C|0)){h=0;break}o=y+(f<<3)|0;c[o>>3]=0.0;u=f+1|0;b=I+(u<<2)|0;l=t[I+(f<<2)>>2]|0;a=0;s=0.0;while(1){if((l|0)>=(t[b>>2]|0))break;n=t[Z+(l<<2)>>2]|0;if((f|0)!=(n|0)){s=+Ko(i,A,f,n);s=+c[o>>3]+s;c[o>>3]=s;a=a+1|0}l=l+1|0}if((a|0)<=0){w=11;break}c[o>>3]=s/+(a|0);f=u}if((w|0)==11)ge(95908,95831,1167,96165);while(1){if((h|0)>=(C|0)){u=0;a=0;break}t[B+(h<<2)>>2]=-1;h=h+1|0}e:while(1){if((u|0)>=(C|0))break;t[B+(u<<2)>>2]=u;l=I+(u<<2)|0;b=u+1|0;h=I+(b<<2)|0;f=t[l>>2]|0;while(1){n=t[h>>2]|0;if((f|0)>=(n|0))break;n=B+(t[Z+(f<<2)>>2]<<2)|0;if((t[n>>2]|0)!=(u|0)){t[n>>2]=u;a=a+1|0}f=f+1|0}o=t[l>>2]|0;while(1){if((o|0)>=(n|0)){u=b;continue e}f=t[Z+(o<<2)>>2]|0;l=I+(f+1<<2)|0;f=t[I+(f<<2)>>2]|0;while(1){if((f|0)>=(t[l>>2]|0))break;n=B+(t[Z+(f<<2)>>2]<<2)|0;if((t[n>>2]|0)!=(u|0)){t[n>>2]=u;a=a+1|0}f=f+1|0}o=o+1|0;n=t[h>>2]|0}}i=aK(C,C,a,1,1)|0;t[e>>2]=i;if(!i){Xu(e);e=0}else{w=t[i+20>>2]|0;k=t[i+24>>2]|0;d=t[i+28>>2]|0;t[w>>2]=0;n=0;a=0;while(1){if((n|0)>=(C|0))break;v=n+C|0;t[B+(n<<2)>>2]=v;o=I+(n<<2)|0;g=n+1|0;m=I+(g<<2)|0;A=y+(n<<3)|0;l=t[o>>2]|0;while(1){n=t[m>>2]|0;if((l|0)>=(n|0))break;n=t[Z+(l<<2)>>2]|0;f=B+(n<<2)|0;if((t[f>>2]|0)!=(v|0)){t[f>>2]=v;t[k+(a<<2)>>2]=n;h=d+(a<<3)|0;c[h>>3]=(+c[y+(n<<3)>>3]+ +c[A>>3])*.5;c[h>>3]=+c[E+(l<<3)>>3];a=a+1|0}l=l+1|0}h=t[o>>2]|0;while(1){if((h|0)>=(n|0))break;l=t[Z+(h<<2)>>2]|0;o=I+(l+1<<2)|0;u=y+(l<<3)|0;b=E+(h<<3)|0;l=t[I+(l<<2)>>2]|0;while(1){if((l|0)>=(t[o>>2]|0))break;n=Z+(l<<2)|0;f=B+(t[n>>2]<<2)|0;if((t[f>>2]|0)!=(v|0)){t[f>>2]=v;t[k+(a<<2)>>2]=t[n>>2];f=d+(a<<3)|0;c[f>>3]=(+c[u>>3]*2.0+ +c[A>>3]+ +c[y+(t[n>>2]<<3)>>3])*.5;c[f>>3]=+c[E+(l<<3)>>3]+ +c[b>>3];a=a+1|0}l=l+1|0}h=h+1|0;n=t[m>>2]|0}t[w+(g<<2)>>2]=a;n=g}t[i+8>>2]=a;I=VS()|0;Z=e+4|0;t[Z>>2]=I;Q6(I|0,r|0,168)|0;Z=t[Z>>2]|0;t[Z+16>>2]=0;t[Z+40>>2]=1;I=Z+96|0;c[I>>3]=+c[I>>3]*.5;t[Z+80>>2]=20;G2(B);G2(y);iK(p)}return e|0}function Xu(e){e=e|0;var A=0;if(e|0){A=t[e>>2]|0;if(A|0)iK(A);e=t[e+4>>2]|0;if(e|0)NS(e)}return}function Su(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;var n=0,f=0;n=h;h=h+16|0;f=n;t[f>>2]=0;tj(i,A,t[e>>2]|0,t[e+4>>2]|0,r,a,f);if(!(t[f>>2]|0)){h=n;return}else ge(96184,95831,1262,96190)}function ju(e,A,r,i,a,n){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;n=n|0;var f=0,l=0;t[n>>2]=0;n=t[r+120>>2]|0;e:do{switch(n|0){case 5:case 6:{if((t[A>>2]|0)>2){A=xu(A,e,0.0,a,(n|0)!=6&1)|0;Hu(A,e,a);Ju(A)}break}case 4:{n=0;while(1){if((n|0)==1)break e;l=Pu(A,e,r,a)|0;Su(l,A,i,e,a);Xu(l);n=n+1|0}}case 1:{r=0;f=6;break}case 2:{r=1;f=6;break}case 3:{r=2;f=6;break}default:{}}}while(0);e:do{if((f|0)==6){n=0;while(1){if((n|0)==1)break e;l=Qu(A,e,.05,a,r)|0;+Fu(l,e,a,50,.001);Du(l);n=n+1|0}}}while(0);return}function Uu(e,A,r){e=e|0;A=A|0;r=r|0;var i=0.0,a=0.0,n=0,f=0.0,l=0,s=0;s=h;h=h+16|0;n=s;t[n>>2]=r;l=t[e>>2]|0;e=t[l+8>>2]|0;f=+c[l>>3];l=t[e>>2]|0;Fo(e,A,n,0);e=0;a=0.0;while(1){if((e|0)>=(l|0))break;i=+c[A+(e<<3)>>3]+a;e=e+1|0;a=i}i=+(l|0);r=t[n>>2]|0;e=0;while(1){if((e|0)>=(l|0))break;n=r+(e<<3)|0;c[n>>3]=(+c[A+(e<<3)>>3]*i-a)*f+ +c[n>>3];e=e+1|0}h=s;return r|0}function Tu(e,A){e=e|0;A=+A;var r=0,i=0;r=$F(8)|0;i=$F(16)|0;t[r>>2]=i;c[i>>3]=A;t[i+8>>2]=e;t[r+4>>2]=25;return r|0}function Ou(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0;a=h;h=h+16|0;i=a;t[i>>2]=r;Fo(t[e>>2]|0,A,i,0);h=a;return t[i>>2]|0}function _u(e){e=e|0;var A=0;A=$F(8)|0;t[A>>2]=e;t[A+4>>2]=26;return A|0}function qu(e){e=e|0;if(e|0)G2(e);return}function Ku(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0;a=t[e>>2]|0;i=~~+c[a>>3];a=a+8|0;e=0;while(1){if((e|0)>=(i|0))break;c[r+(e<<3)>>3]=+c[a+(e<<3)>>3]*+c[A+(e<<3)>>3];e=e+1|0}return r|0}function $u(e,A){e=e|0;A=+A;var r=0,i=0,a=0,n=0,f=0,l=0.0,s=0,o=0,u=0,b=0.0,h=0,w=0,k=0.0;u=t[e>>2]|0;h=t[e+20>>2]|0;w=t[e+24>>2]|0;s=t[e+28>>2]|0;o=$F(8)|0;f=$F((u<<3)+8|0)|0;t[o>>2]=f;c[f>>3]=+(u|0);f=f+8|0;k=+(u+-1|0);l=1.0/k;A=k*A;e=0;e:while(1){if((e|0)>=(u|0))break;i=f+(e<<3)|0;c[i>>3]=l;a=e+1|0;n=t[h+(a<<2)>>2]|0;r=t[h+(e<<2)>>2]|0;while(1){if((r|0)>=(n|0)){e=a;continue e}if((e|0)==(t[w+(r<<2)>>2]|0)?(b=+c[s+(r<<3)>>3],(b>=0.0?b:-b)>0.0):0)c[i>>3]=1.0/(b+A);r=r+1|0}}t[o+4>>2]=27;return o|0}function eb(e){e=e|0;var A=0,r=0,i=0,a=0,n=0,f=0,l=0.0,s=0,o=0,u=0,b=0;f=t[e>>2]|0;s=t[e+20>>2]|0;o=t[e+24>>2]|0;u=t[e+28>>2]|0;b=$F(8)|0;r=$F((t[e>>2]<<3)+8|0)|0;t[b>>2]=r;c[r>>3]=+(f|0);r=r+8|0;e=0;e:while(1){if((e|0)>=(f|0))break;i=r+(e<<3)|0;c[i>>3]=1.0;a=e+1|0;n=t[s+(a<<2)>>2]|0;A=t[s+(e<<2)>>2]|0;while(1){if((A|0)>=(n|0)){e=a;continue e}if((e|0)==(t[o+(A<<2)>>2]|0)?(l=+c[u+(A<<3)>>3],(l>=0.0?l:-l)>0.0):0)c[i>>3]=1.0/l;A=A+1|0}}t[b+4>>2]=27;return b|0}function Ab(e){e=e|0;G2(t[e>>2]|0);if(e|0)G2(e);return}function rb(e,A,r,i,a,t,n,f,l){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;t=t|0;n=+n;f=f|0;l=l|0;var s=0.0,o=0,u=0.0,b=0,h=0,w=0;h=r<<3;b=$F(h)|0;h=$F(h)|0;o=0;u=0.0;while(1){if((o|0)<(i|0))l=0;else break;while(1){if((l|0)>=(r|0))break;w=(P(l,i)|0)+o|0;c[b+(l<<3)>>3]=+c[a+(w<<3)>>3];c[h+(l<<3)>>3]=+c[t+(w<<3)>>3];l=l+1|0}s=+ib(e,A,r,b,h,n,f);l=0;while(1){if((l|0)>=(r|0))break;c[t+((P(l,i)|0)+o<<3)>>3]=+c[b+(l<<3)>>3];l=l+1|0}o=o+1|0;u=s+u}G2(b);G2(h);return+u}function ib(e,A,r,i,a,n,f){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;n=+n;f=f|0;var l=0,s=0.0,c=0,o=0,u=0,b=0.0,h=0.0,w=0,k=0,d=0,v=0.0,g=0,m=0;d=t[e+4>>2]|0;w=t[A+4>>2]|0;k=r<<3;l=$F(k)|0;c=$F(k)|0;g=$F(k)|0;o=$F(k)|0;c=L5[d&63](e,i,c)|0;u=Uo(r,a,c)|0;h=+(r|0);v=+D(+ +To(r,u,u))/h;b=v*n;h=1.0/h;u=0;a=g;s=1.0;n=v;while(1){if(!(n>b&(u|0)<(f|0)))break;l=L5[w&63](A,c,l)|0;n=+To(r,c,l);if((u|0)>0)Oo(r,l,a,n/s)|0;else Q6(a|0,l|0,k|0)|0;m=L5[d&63](e,a,o)|0;s=n/+To(r,a,m);_o(r,i,a,s)|0;g=_o(r,c,m,-s)|0;u=u+1|0;s=n;o=m;n=+D(+ +To(r,g,g))*h}G2(l);G2(c);G2(a);G2(o);return+n}function ab(e,A,r,i,a,n){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;n=n|0;var f=0.0,l=0.0,s=0.0,o=0,u=0,b=0,w=0,k=0,d=0,v=0,g=0,m=0,p=0,E=0,B=0,y=0,C=0,I=0,Z=0,G=0;G=h;h=h+16|0;Z=G;y=t[e+4>>2]|0;C=y<<3;I=$F(C)|0;m=$F(C)|0;p=$F(C)|0;E=t[e+20>>2]|0;B=t[e+24>>2]|0;v=t[e+28>>2]|0;g=t[15712]|0;d=0;while(1){if((d|0)<(A|0))n=0;else break;while(1){if((n|0)>=(y|0)){e=0;break}k=(P(n,A)|0)+d|0;c[I+(n<<3)>>3]=+c[r+(k<<3)>>3];c[p+(n<<3)>>3]=+c[i+(k<<3)>>3];n=n+1|0}while(1){if((e|0)<(a|0))u=0;else{n=0;break}while(1){if((u|0)>=(y|0))break;b=t[E+(u<<2)>>2]|0;w=u+1|0;k=t[E+(w<<2)>>2]|0;o=b;l=0.0;f=0.0;while(1){if((o|0)>=(k|0))break;n=t[B+(o<<2)>>2]|0;s=+c[v+(o<<3)>>3];if((n|0)==(u|0))f=s;else l=+c[I+(n<<3)>>3]*s+l;o=o+1|0}if(l==0.0){t[Z>>2]=k-b;a3(g,96212,Z)|0}c[m+(u<<3)>>3]=(+c[p+(u<<3)>>3]-l)/f;u=w}Q6(I|0,m|0,C|0)|0;e=e+1|0}while(1){if((n|0)>=(y|0))break;c[i+((P(n,A)|0)+d<<3)>>3]=+c[I+(n<<3)>>3];n=n+1|0}d=d+1|0}G2(I);G2(m);G2(p);h=G;return i|0}function tb(e,A,r,i,a,n,f,l){e=e|0;A=A|0;r=r|0;i=i|0;a=+a;n=n|0;f=f|0;l=l|0;var s=0;s=t[e>>2]|0;t[l>>2]=0;switch(f|0){case 0:{f=_u(e)|0;l=eb(e)|0;a=+rb(f,l,s,A,r,i,a,n,0);qu(f);Ab(l);break}case 1:{ab(e,A,r,i,n,0)|0;a=0.0;break}default:a=0.0}return+a}function nb(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0,n=0,f=0,l=0,s=0,o=0,u=0,b=0,w=0;b=h;h=h+32|0;s=b;o=b+20|0;a=b+16|0;n=b+12|0;f=b+8|0;c[s>>3]=1.0;l=e<<3;u=$F(l)|0;l=$F(l)|0;A=0;while(1){if((A|0)>=(e|0))break;i=A<<1;c[u+(A<<3)>>3]=+c[r+(i<<3)>>3];c[l+(A<<3)>>3]=+c[r+((i|1)<<3)>>3];A=A+1|0}t[o>>2]=A;if((e|0)>2)r=NU(u,l,e,f)|0;else{t[f>>2]=0;r=0}i=aK(e,e,1,1,2)|0;A=0;while(1){t[o>>2]=A;if((A|0)>=(t[f>>2]|0))break;w=A<<1;t[a>>2]=t[r+(w<<2)>>2];t[n>>2]=t[r+((w|1)<<2)>>2];Ro(i,1,a,n,s)|0;A=(t[o>>2]|0)+1|0}if((e|0)==2){t[a>>2]=0;t[n>>2]=1;Ro(i,1,a,n,s)|0;A=0}else A=0;while(1){t[o>>2]=A;if((A|0)>=(e|0))break;Ro(i,1,o,o,s)|0;A=(t[o>>2]|0)+1|0}e=wK(i)|0;iK(i);w=lK(e,0)|0;iK(e);G2(r);G2(u);G2(l);h=b;return w|0}function fb(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0,n=0,f=0,l=0,s=0,o=0;o=h;h=h+16|0;n=o+8|0;f=o;c[f>>3]=1.0;s=e<<3;l=$F(s)|0;s=$F(s)|0;i=0;while(1){if((i|0)>=(e|0))break;a=P(i,A)|0;c[l+(i<<3)>>3]=+c[r+(a<<3)>>3];c[s+(i<<3)>>3]=+c[r+(a+1<<3)>>3];i=i+1|0}t[n>>2]=i;i=RU(l,s,e,0)|0;a=aK(e,e,1,1,2)|0;A=0;while(1){t[n>>2]=A;if((A|0)<(e|0))r=1;else{A=0;break}while(1){if((r|0)>=(t[i+(A*12|0)>>2]|0))break;Ro(a,1,n,(t[i+(A*12|0)+4>>2]|0)+(r<<2)|0,f)|0;r=r+1|0;A=t[n>>2]|0}A=A+1|0}while(1){t[n>>2]=A;if((A|0)>=(e|0))break;Ro(a,1,n,n,f)|0;A=(t[n>>2]|0)+1|0}f=lK(wK(a)|0,0)|0;iK(a);G2(l);G2(s);xU(i);h=o;return f|0}function lb(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0,t=0;a=h;h=h+16|0;t=a;sb(t,r);cb(e,A,r,t);ob(A,t,i);ub(t);h=a;return}function sb(e,A){e=e|0;A=A|0;t[e>>2]=$F(A<<4)|0;t[e+4>>2]=A;t[e+8>>2]=0;return}function cb(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0,n=0,f=0,l=0,s=0,o=0,u=0,b=0,w=0,k=0,d=0,v=0,g=0,m=0,p=0,E=0,B=0,y=0,C=0,I=0,Z=0,G=0,L=0;L=h;h=h+64|0;d=L+32|0;m=L+48|0;p=L+16|0;E=L;g=A<<2;I=$F(g)|0;G=$F(g)|0;t[p>>2]=0;t[p+4>>2]=0;t[p+8>>2]=0;t[p+12>>2]=0;v=$F(g)|0;g=$F(g)|0;a=0;while(1){if((a|0)>=(A|0))break;t[v+(a<<2)>>2]=a;a=a+1|0}k=A+-1|0;OT(e,v,0,k);a=0;while(1){if((a|0)>=(A|0))break;t[g+(t[v+(a<<2)>>2]<<2)>>2]=a;a=a+1|0}hb(m,e,v,A);a=1;while(1){if((a|0)>=(A|0)){a=0;break}t[I+(t[v+(a<<2)>>2]<<2)>>2]=t[v+(a+-1<<2)>>2];a=a+1|0}while(1){if((a|0)>=(k|0))break;w=a+1|0;t[G+(t[v+(a<<2)>>2]<<2)>>2]=t[v+(w<<2)>>2];a=w}s=i+8|0;o=i+4|0;u=p+4|0;b=E+4|0;w=E+8|0;l=0;while(1){if((l|0)>=(r|0))break;if(!((wb(m,p)|0)<<24>>24))break;a=t[s>>2]|0;A=t[o>>2]|0;if((a|0)<(A|0))A=t[i>>2]|0;else{t[o>>2]=A<<1;A=Q2(t[i>>2]|0,A<<5)|0;t[i>>2]=A;a=t[s>>2]|0}t[s>>2]=a+1;a=A+(a<<4)|0;t[a>>2]=t[p>>2];t[a+4>>2]=t[p+4>>2];t[a+8>>2]=t[p+8>>2];t[a+12>>2]=t[p+12>>2];a=t[p>>2]|0;A=t[g+(a<<2)>>2]|0;n=t[u>>2]|0;f=t[g+(n<<2)>>2]|0;if((A|0)>0?(B=t[v+(A+-1<<2)>>2]|0,y=G+(B<<2)|0,(t[g+(t[y>>2]<<2)>>2]|0)<(f|0)):0){t[E>>2]=B;t[b>>2]=n;c[w>>3]=+c[e+(n<<3)>>3]-+c[e+(B<<3)>>3];t[d>>2]=t[E>>2];t[d+4>>2]=t[E+4>>2];t[d+8>>2]=t[E+8>>2];t[d+12>>2]=t[E+12>>2];kb(m,d);t[y>>2]=n;t[I+(n<<2)>>2]=B}if((f|0)<(k|0)?(C=t[v+(f+1<<2)>>2]|0,Z=I+(C<<2)|0,(t[g+(t[Z>>2]<<2)>>2]|0)>(A|0)):0){t[E>>2]=a;t[b>>2]=C;c[w>>3]=+c[e+(C<<3)>>3]-+c[e+(a<<3)>>3];t[d>>2]=t[E>>2];t[d+4>>2]=t[E+4>>2];t[d+8>>2]=t[E+8>>2];t[d+12>>2]=t[E+12>>2];kb(m,d);t[Z>>2]=a;t[G+(a<<2)>>2]=C}l=l+1|0}G2(I);G2(G);G2(v);G2(g);db(m);h=L;return}function ob(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0,n=0,f=0,l=0,c=0,o=0,u=0,b=0;c=$F(e<<2)|0;o=A+8|0;f=t[o>>2]|0;l=(f<<1)+e|0;n=l<<2;i=$F(n)|0;n=$F(n)|0;a=0;while(1){if((a|0)>=(e|0))break;t[c+(a<<2)>>2]=1;a=a+1|0}a=0;while(1){if((a|0)>=(f|0)){a=0;break}b=t[A>>2]|0;u=t[b+(a<<4)+4>>2]|0;b=c+(t[b+(a<<4)>>2]<<2)|0;t[b>>2]=(t[b>>2]|0)+1;u=c+(u<<2)|0;t[u>>2]=(t[u>>2]|0)+1;a=a+1|0}while(1){if((a|0)>=(l|0))break;s[n+(a<<2)>>2]=1.0;a=a+1|0}f=$F(e*20|0)|0;t[r>>2]=f;a=0;while(1){if((a|0)>=(e|0))break;t[f+(a*20|0)>>2]=1;t[f+(a*20|0)+8>>2]=n;t[f+(a*20|0)+4>>2]=i;t[i>>2]=a;s[n>>2]=0.0;b=t[c+(a<<2)>>2]|0;n=n+(b<<2)|0;i=i+(b<<2)|0;a=a+1|0}G2(c);while(1){i=t[o>>2]|0;if(!i)break;b=i+-1|0;t[o>>2]=b;u=t[A>>2]|0;bb(f,t[u+(b<<4)>>2]|0,t[u+(b<<4)+4>>2]|0)}return}function ub(e){e=e|0;G2(t[e>>2]|0);return}function bb(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0,n=0,f=0,l=0;a=e+(A*20|0)|0;n=t[a>>2]|0;f=t[e+(A*20|0)+4>>2]|0;i=0;while(1){if((i|0)>=(n|0)){l=4;break}if((t[f+(i<<2)>>2]|0)==(r|0))break;else i=i+1|0}if((l|0)==4?(t[a>>2]=n+1,t[f+(n<<2)>>2]=r,f=t[e+(r*20|0)+4>>2]|0,n=e+(r*20|0)|0,l=t[n>>2]|0,t[n>>2]=l+1,t[f+(l<<2)>>2]=A,t[e+8>>2]|0):0){l=t[e+(A*20|0)+8>>2]|0;s[l>>2]=+s[l>>2]+-1.0;l=t[e+(r*20|0)+8>>2]|0;s[l>>2]=+s[l>>2]+-1.0}return}function hb(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0,n=0,f=0,l=0.0,s=0,o=0;a=i+-1|0;t[e+4>>2]=a;t[e+8>>2]=a;t[e>>2]=$F(a<<4)|0;i=0;while(1){if((i|0)>=(a|0))break;o=t[r+(i<<2)>>2]|0;n=i+1|0;s=t[r+(n<<2)>>2]|0;l=+c[A+(s<<3)>>3]-+c[A+(o<<3)>>3];f=t[e>>2]|0;t[f+(i<<4)>>2]=o;t[f+(i<<4)+4>>2]=s;c[f+(i<<4)+8>>3]=l;i=n}i=(a|0)/2|0;while(1){if((i|0)<=-1)break;vb(e,i);i=i+-1|0}return}function wb(e,A){e=e|0;A=A|0;var r=0,i=0;r=e+4|0;if(!(t[r>>2]|0))e=0;else{i=t[e>>2]|0;t[A>>2]=t[i>>2];t[A+4>>2]=t[i+4>>2];t[A+8>>2]=t[i+8>>2];t[A+12>>2]=t[i+12>>2];A=t[e>>2]|0;i=A+((t[r>>2]|0)+-1<<4)|0;t[A>>2]=t[i>>2];t[A+4>>2]=t[i+4>>2];t[A+8>>2]=t[i+8>>2];t[A+12>>2]=t[i+12>>2];t[r>>2]=(t[r>>2]|0)+-1;vb(e,0);e=1}return e|0}function kb(e,A){e=e|0;A=A|0;var r=0,i=0.0,a=0.0,n=0,f=0,l=0,s=0,o=0,u=0;u=h;h=h+16|0;o=u;l=e+4|0;n=t[l>>2]|0;r=e+8|0;if((n|0)==(t[r>>2]|0)){t[r>>2]=n<<1;r=Q2(t[e>>2]|0,n<<5)|0;t[e>>2]=r;s=e;f=t[l>>2]|0}else{s=e;f=n;r=t[e>>2]|0}t[l>>2]=f+1;l=r+(n<<4)|0;t[l>>2]=t[A>>2];t[l+4>>2]=t[A+4>>2];t[l+8>>2]=t[A+8>>2];t[l+12>>2]=t[A+12>>2];while(1){if((n|0)<=0)break;r=t[s>>2]|0;i=+c[r+(n<<4)+8>>3];e=n>>>1;a=+c[r+(e<<4)+8>>3];if(!(i>2]|0}l=r+(n<<4)|0;t[o>>2]=t[l>>2];t[o+4>>2]=t[l+4>>2];t[o+8>>2]=t[l+8>>2];t[o+12>>2]=t[l+12>>2];A=r+(e<<4)|0;t[l>>2]=t[A>>2];t[l+4>>2]=t[A+4>>2];t[l+8>>2]=t[A+8>>2];t[l+12>>2]=t[A+12>>2];l=(t[s>>2]|0)+(e<<4)|0;t[l>>2]=t[o>>2];t[l+4>>2]=t[o+4>>2];t[l+8>>2]=t[o+8>>2];t[l+12>>2]=t[o+12>>2];n=e}h=u;return}function db(e){e=e|0;G2(t[e>>2]|0);return}function vb(e,A){e=e|0;A=A|0;var r=0,i=0.0,a=0.0,n=0,f=0,l=0,s=0,o=0,u=0;o=h;h=h+16|0;f=o;l=e+4|0;while(1){r=A<<1;n=r|1;if((r|0)<(t[l>>2]|0)){u=t[e>>2]|0;i=+c[u+(r<<4)+8>>3];a=+c[u+(A<<4)+8>>3];if(!(i>2]|0)){u=t[e>>2]|0;i=+c[u+(n<<4)+8>>3];a=+c[u+(r<<4)+8>>3];if(!(i>2]|0;u=n+(r<<4)|0;t[f>>2]=t[u>>2];t[f+4>>2]=t[u+4>>2];t[f+8>>2]=t[u+8>>2];t[f+12>>2]=t[u+12>>2];n=n+(A<<4)|0;t[u>>2]=t[n>>2];t[u+4>>2]=t[n+4>>2];t[u+8>>2]=t[n+8>>2];t[u+12>>2]=t[n+12>>2];u=(t[e>>2]|0)+(A<<4)|0;t[u>>2]=t[f>>2];t[u+4>>2]=t[f+4>>2];t[u+8>>2]=t[f+8>>2];t[u+12>>2]=t[f+12>>2];A=r}h=o;return}function gb(e,A,r,i,a,n,f,l){e=e|0;A=A|0;r=+r;i=+i;a=a|0;n=n|0;f=f|0;l=l|0;var s=0,o=0,u=0,b=0.0;o=(a|0)!=0;if(!o){a=$F(A<<3)|0;if(!(_O(e,A,a,A)|0))u=3;else{e=1;u=17}}else u=3;if((u|0)==3){s=KF(A<<2)|0;t[n>>2]=s;e=0;while(1){if((e|0)>=(A|0))break;t[s+(e<<2)>>2]=e;e=e+1|0}e=A+-1|0;OT(a,s,0,e);b=+c[a+(t[s>>2]<<3)>>3];i=(+c[a+(t[s+(e<<2)>>2]<<3)>>3]-b)*i/+(e|0);i=i=(A|0))break;b=+c[a+(t[s+(n<<2)>>2]<<3)>>3];e=e+(b-r>i&1)|0;n=n+1|0;r=b}t[l>>2]=e;e:do{if(!e){s=$F(4)|0;t[f>>2]=s;t[s>>2]=A}else{l=$F(e<<2)|0;t[f>>2]=l;e=0;n=1;while(1){if((n|0)>=(A|0))break e;if(+c[a+(t[s+(n<<2)>>2]<<3)>>3]-+c[a+(t[s+(n+-1<<2)>>2]<<3)>>3]>i){t[l+(e<<2)>>2]=n;e=e+1|0}n=n+1|0}}}while(0);if(o)e=0;else{e=0;u=17}}if((u|0)==17)G2(a);return e|0}function mb(e,A){e=e|0;A=A|0;var r=0,i=0,a=0.0,n=0,f=0,l=0.0,s=0,o=0,u=0,b=0,h=0,w=0,k=0;r=t[46930]|0;if(r|0)sP(r);t[46930]=lP(A,A,0.0)|0;r=t[46931]|0;if(r|0)G2(r);t[46931]=KF(A<<2)|0;r=t[46932]|0;if(r|0)G2(r);b=KF(A<<3)|0;t[46932]=b;h=t[46930]|0;w=t[46931]|0;f=0;while(1){if((f|0)>=(A|0)){i=10;break}i=e+(f<<2)|0;n=h+(f<<2)|0;a=0.0;r=0;while(1){if((r|0)==(A|0))break;l=+c[(t[i>>2]|0)+(r<<3)>>3];c[(t[n>>2]|0)+(r<<3)>>3]=l;l=+Q(+l);a=a>3]=1.0/a;t[w+(f<<2)>>2]=f;f=f+1|0}e:do{if((i|0)==10){u=A+-1|0;r=0;o=0;A:while(1){if((o|0)<(u|0)){i=o;s=r;a=0.0}else break;while(1){if((i|0)>=(A|0))break;e=t[w+(i<<2)>>2]|0;l=+Q(+ +c[(t[h+(e<<2)>>2]|0)+(o<<3)>>3]);l=+c[b+(e<<3)>>3]*l;e=a>2]|0;e=w+(s<<2)|0;t[r>>2]=t[e>>2];t[e>>2]=f}n=t[h+(t[r>>2]<<2)>>2]|0;e=o+1|0;a=1.0/+c[n+(o<<3)>>3];i=e;while(1){if((i|0)>=(A|0)){r=s;o=e;continue A}f=t[h+(t[w+(i<<2)>>2]<<2)>>2]|0;r=f+(o<<3)|0;l=+c[r>>3]*a;c[r>>3]=l;r:do{if(l!=0.0){r=e;while(1){if((r|0)>=(A|0))break r;k=f+(r<<3)|0;c[k>>3]=+c[k>>3]-+c[n+(r<<3)>>3]*l;r=r+1|0}}}while(0);i=i+1|0}}r=+c[(t[h+(t[w+(u<<2)>>2]<<2)>>2]|0)+(u<<3)>>3]!=0.0&1}else if((i|0)==15){c[b+(f<<3)>>3]=0.0;r=0}}while(0);return r|0}function pb(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0.0,n=0,f=0,l=0,s=0,o=0;s=t[46930]|0;o=t[46931]|0;l=0;while(1){if((l|0)>=(r|0)){i=r;break}n=t[o+(l<<2)>>2]|0;f=s+(n<<2)|0;a=0.0;i=0;while(1){if((i|0)==(l|0))break;a=+c[e+(i<<3)>>3]*+c[(t[f>>2]|0)+(i<<3)>>3]+a;i=i+1|0}c[e+(l<<3)>>3]=+c[A+(n<<3)>>3]-a;l=l+1|0}while(1){A=i+-1|0;if((i|0)<=0)break;n=o+(A<<2)|0;a=0.0;while(1){if((i|0)>=(r|0))break;a=+c[e+(i<<3)>>3]*+c[(t[s+(t[n>>2]<<2)>>2]|0)+(i<<3)>>3]+a;i=i+1|0}i=e+(A<<3)|0;c[i>>3]=(+c[i>>3]-a)/+c[(t[s+(t[n>>2]<<2)>>2]|0)+(A<<3)>>3];i=A}return}function Eb(e){e=e|0;var A=0;A=$F(8)|0;t[A>>2]=e;t[A+4>>2]=0;return A|0}function Bb(e,A){e=e|0;A=A|0;var r=0,i=0;if(e|0)do{r=e;e=t[e+4>>2]|0;i=t[r>>2]|0;if(i|0)F5[A&127](i);G2(r)}while((e|0)!=0);return}function yb(e,A){e=e|0;A=A|0;A=Eb(A)|0;t[A+4>>2]=e;return A|0}function Cb(e){e=e|0;return t[e>>2]|0}function Ib(e){e=e|0;return t[e+4>>2]|0}function Zb(e){e=e|0;var A=0;A=$F(12)|0;t[A>>2]=e;t[A+4>>2]=0;t[A+8>>2]=0;return A|0}function Gb(e,A){e=e|0;A=A|0;var r=0,i=0;if(e|0)do{r=e;e=t[e+4>>2]|0;i=t[r>>2]|0;if(i|0)F5[A&127](i);G2(r)}while((e|0)!=0);return}function Lb(e,A){e=e|0;A=A|0;A=Zb(A)|0;if(e|0){t[A+4>>2]=e;t[e+8>>2]=A}return A|0}function Qb(e){e=e|0;return t[e>>2]|0}function Db(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0,n=0;if(e|0){i=t[e+4>>2]|0;a=t[e+8>>2]|0;n=t[e>>2]|0;if(n|0)F5[A&127](n);G2(e);if(i|0)t[i+8>>2]=a;t[(a|0?a+4|0:r)>>2]=i}return}function zb(e){e=e|0;t[e>>2]=0;t[e+4>>2]=0;return}function Wb(e){e=e|0;var A=0;A=KF(64)|0;zb(A+36|0);t[A+8>>2]=e;return A|0}function Yb(e){e=e|0;if(e|0){rh(t[e+32>>2]|0);G2(e)}return}function Fb(e){e=e|0;return gk(t[e+8>>2]|0)|0}function Mb(e,A){e=e|0;A=A|0;var r=0,i=0;t[A+4>>2]=0;r=e+4|0;i=t[r>>2]|0;t[((i|0)==0?e:i+4|0)>>2]=A;t[r>>2]=A;return}function Vb(e,A){e=e|0;A=A|0;var r=0;r=t[e>>2]|0;if(!r){t[e>>2]=A;e=e+4|0}else t[A+4>>2]=r;t[e>>2]=A;return}function Nb(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0,f=0,l=0,s=0,c=0;Rb(e,A);s=t[A>>2]|0;f=t[s+4>>2]|0;while(1){if(!f)break;c=t[f+8>>2]|0;l=sd(c)|0;r=t[(t[l+16>>2]|0)+112>>2]|0;e=t[r+16+4>>2]|0;r=t[r+8>>2]|0;a=l;l=cd(c,l)|0;while(1){if(!l)break;i=t[(t[l+16>>2]|0)+112>>2]|0;n=t[i+16+4>>2]|0;if((n|0)<(e|0)){a=l;r=t[i+8>>2]|0;e=n}l=cd(c,l)|0}l=t[(t[r+16>>2]|0)+112>>2]|0;c=l+4|0;t[c>>2]=t[c>>2]|8;t[f>>2]=a;c=t[f+4>>2]|0;Mb((t[l+12>>2]|0)+36|0,f);f=c}zb(A);return s|0}function Rb(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0,f=0,l=0;l=h;h=h+16|0;f=l;n=l+8|0;i=t[A+24>>2]|0;if(!((i|0)!=0?(r=gd(e,i,0)|0,(r|0)!=0):0))a=3;e:do{if((a|0)==3){i=A+20|0;A:do{if(t[i>>2]|0){r=sd(e)|0;while(1){if(!r)break A;if((gx(t[t[(t[r+16>>2]|0)+112>>2]>>2]|0,t[i>>2]|0,0)|0)<<24>>24)break e;r=cd(e,r)|0}}}while(0);r=sd(e)|0}}while(0);if(0){a=t[15712]|0;t[f>>2]=Mk(r)|0;a3(a,96223,f)|0}t[n+4>>2]=0;t[n>>2]=0;xb(e,r,A,1,n);h=l;return}function xb(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;var n=0,f=0,l=0,s=0,c=0,o=0;o=r+8|0;c=t[o>>2]|0;t[o>>2]=c+1;o=A+16|0;t[(t[(t[o>>2]|0)+112>>2]|0)+16+4>>2]=c;t[(t[(t[o>>2]|0)+112>>2]|0)+24>>2]=c;c=(i|0)==0;s=ek(e,A)|0;while(1){if(!s)break;i=t[s>>2]&3;n=t[((i|0)==2?s:s+-48|0)+40>>2]|0;if((n|0)==(A|0)){i=t[((i|0)==3?s:s+48|0)+40>>2]|0;n=t[(t[s+16>>2]|0)+120>>2]|0;if(!(t[n>>2]|0))t[n>>2]=-1}else{i=t[(t[s+16>>2]|0)+120>>2]|0;if(!(t[i>>2]|0)){t[i>>2]=1;i=n}else i=n}n=i+16|0;f=t[(t[n>>2]|0)+112>>2]|0;l=t[f+16+4>>2]|0;do{if(!l){t[f+8>>2]=A;Jb(a,s);xb(e,i,r,0,a);l=(t[(t[o>>2]|0)+112>>2]|0)+24|0;t[l>>2]=t[(t[(t[((t[l>>2]|0)<(t[(t[(t[n>>2]|0)+112>>2]|0)+24>>2]|0)?A:i)+16>>2]|0)+112>>2]|0)+24>>2];if((t[(t[(t[n>>2]|0)+112>>2]|0)+24>>2]|0)>=(t[(t[(t[o>>2]|0)+112>>2]|0)+16+4>>2]|0)){i=0;do{f=Hb(a)|0;n=(t[t[(t[f+16>>2]|0)+120>>2]>>2]|0)==1;n=t[((t[f>>2]&3|0)==((n?2:3)|0)?f:f+((n?-1:1)*48|0)|0)+40>>2]|0;if(!(t[(t[(t[n+16>>2]|0)+112>>2]|0)+12>>2]|0)){if(!i)i=Pb(e,r)|0;Xb(i,n)}}while((f|0)!=(s|0));if(i|0){if((t[(t[(t[o>>2]|0)+112>>2]|0)+12>>2]|0)==0?(Fb(i)|0)>1:0)Xb(i,A);if(!c?(t[(t[(t[o>>2]|0)+112>>2]|0)+12>>2]|0)==(i|0):0){Vb(r,i);break}Mb(r,i)}}}else{n=t[(t[o>>2]|0)+112>>2]|0;if((t[n+8>>2]|0)!=(i|0)){f=n+24|0;n=t[f>>2]|0;t[f>>2]=(n|0)<(l|0)?n:l}}}while(0);s=Ak(e,s,A)|0}if(!c?(t[(t[(t[o>>2]|0)+112>>2]|0)+12>>2]|0)==0:0){o=Pb(e,r)|0;Xb(o,A);Vb(r,o)}return}function Jb(e,A){e=e|0;A=A|0;t[(t[(t[A+16>>2]|0)+120>>2]|0)+4>>2]=t[e>>2];t[e>>2]=A;A=e+4|0;t[A>>2]=(t[A>>2]|0)+1;return}function Hb(e){e=e|0;var A=0,r=0,i=0;A=t[e>>2]|0;if(!A)ge(138394,96254,65,96266);r=e+4|0;i=t[r>>2]|0;if((i|0)>0){t[e>>2]=t[(t[(t[A+16>>2]|0)+120>>2]|0)+4>>2];t[r>>2]=i+-1;return A|0}else ge(96244,96254,61,96266);return 0}function Pb(e,A){e=e|0;A=A|0;return Wb(Sb(e,A)|0)|0}function Xb(e,A){e=e|0;A=A|0;hd(t[e+8>>2]|0,A,1)|0;t[(t[(t[A+16>>2]|0)+112>>2]|0)+12>>2]=e;return}function Sb(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0;r=h;h=h+144|0;a=r;i=r+8|0;n=A+12|0;A=t[n>>2]|0;t[n>>2]=A+1;t[a>>2]=A;T4(i,96234,a)|0;A=Rv(e,i,1)|0;Sd(A,137483,280,1)|0;h=r;return A|0}function jb(e){e=e|0;var A=0,r=0;A=t[e+36>>2]|0;while(1){if(!A)break;r=t[A+4>>2]|0;jb(A);A=r}Yb(e);return}function Ub(e,A,r){e=e|0;A=A|0;r=r|0;Tb(e,A,+c[r+32>>3]);return}function Tb(e,A,r){e=e|0;A=A|0;r=+r;var i=0,a=0,n=0,f=0;i=A+36|0;a=0;while(1){i=t[i>>2]|0;if(!i)break;Tb(e,i,r);i=i+4|0;a=a+1|0}i=uh(e,A,r)|0;t[A+32>>2]=i;e=sh(i)|0;if((a|0)>0)r=+Ob(a,e,i,A,r);else r=3.141592653589793;if((((e|0)==1?(n=t[A>>2]|0,n|0):0)?t[(t[(t[n+16>>2]|0)+112>>2]|0)+8>>2]|0:0)?(f=A+48|0,c[f>>3]=r,r<0.0):0)c[f>>3]=r+6.283185307179586;return}function Ob(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=+a;var n=0.0,f=0,l=0.0,s=0,o=0,u=0,b=0,w=0,k=0,d=0,v=0,g=0,m=0,p=0;p=h;h=h+48|0;g=p;m=KF(e*56|0)|0;t[g+40>>2]=t[i+36>>2];w=i+16|0;l=+c[w>>3];k=g+8|0;c[k>>3]=l;c[g>>3]=l;t[g+44>>2]=t[i>>2];l=6.283185307179586/+(A|0);c[g+16>>3]=l;d=g+24|0;c[d>>3]=-1.0;v=g+32|0;c[v>>3]=-1.0;s=0;b=0;n=0.0;while(1){f=t[r>>2]|0;if(!f)break;r=t[f>>2]|0;if(!(t[(t[(t[r+16>>2]|0)+112>>2]|0)+4>>2]&8))r=b;else{u=m+(b*56|0)|0;t[u>>2]=r;c[m+(b*56|0)+8>>3]=l*+(s|0);r=b+1|0;n=+_b(u,g,a)}s=s+1|0;b=r;r=f+4|0}e:do{switch(b|0){case 1:{c[m+40>>3]=1.0;r=0;break}case 2:{l=+c[m+64>>3]-+c[m+8>>3];qb(m,m+56|0,l>3.141592653589793?6.283185307179586-l:l);r=0;break}default:{u=m+8|0;o=m;r=0;while(1){if((r|0)>=(b|0)){r=0;break e}r=r+1|0;if((r|0)==(b|0)){f=m;l=+c[u>>3]+6.283185307179586-+c[o+8>>3];s=o+56|0}else{s=o+56|0;f=s;l=+c[o+64>>3]-+c[o+8>>3]}qb(o,f,l);o=s}}}}while(0);while(1){if((r|0)>=(b|0))break;Kb(m+(r*56|0)|0,g,A,a);r=r+1|0}G2(m);if((e|0)==1){a=n+a*.5;$b(i,-a,0.0,0.0);c[w>>3]=+c[w>>3]+a;m=i+56|0;t[m>>2]=t[m>>2]|1}else c[w>>3]=+c[k>>3];h=p;return+((+c[v>>3]+ +c[d>>3])*.5+-3.141592653589793)}function _b(e,A,r){e=e|0;A=A|0;r=+r;var i=0,a=0.0,n=0.0,f=0,l=0,s=0.0;f=0;a=0.0;n=0.0;i=A+40|0;while(1){l=t[i>>2]|0;if(!l)break;i=t[l>>2]|0;if(!i)i=0;else i=t[(t[(t[i+16>>2]|0)+112>>2]|0)+8>>2]|0;if((i|0)==(t[e>>2]|0)){s=+c[l+16>>3];i=f+1|0;a=a+r+s*2.0;n=n>3]=a;t[e+48>>2]=f;c[e+16>>3]=n+r+ +c[A>>3];c[e+24>>3]=n;return+n}function qb(e,A,r){e=e|0;A=A|0;r=+r;var i=0.0,a=0.0;a=+c[A+16>>3];i=+c[e+16>>3];r=(i*+c[A+32>>3]+a*+c[e+32>>3])/(r*2.0*a*i);r=r<1.0?1.0:r;e=e+40|0;if(r>+c[e>>3])c[e>>3]=r;e=A+40|0;if(r>+c[e>>3])c[e>>3]=r;return}function Kb(e,A,r,i){e=e|0;A=A|0;r=r|0;i=+i;var a=0.0,n=0.0,f=0,l=0.0,s=0.0,o=0.0,u=0.0,b=0,h=0,w=0.0,k=0.0,d=0,v=0,g=0,m=0.0,p=0.0,E=0,B=0,y=0.0,C=0,I=0,Z=0,G=0,L=0.0,Q=0.0;C=A+8|0;y=+c[C>>3];I=A+24|0;s=+c[I>>3];Z=A+32|0;l=+c[Z>>3];a=+c[e+16>>3]*+c[e+40>>3];B=(r|0)==1;if(B){p=+c[e+32>>3];n=p*.15915494309189535;n=a>n?a:n;a=n*6.283185307179586-p;if(a>0.0){i=a/+(t[e+48>>2]|0)+i;o=0.0;a=n}else{o=0.0;a=n}}else o=+c[e+8>>3]-+c[e+32>>3]/(a*2.0);k=+c[e+24>>3]+a;d=k>y;v=e+48|0;g=((t[v>>2]|0)+1|0)/2|0;m=1.0/a;p=i/a*.5;E=e+8|0;b=A+40|0;h=0;w=0.0;n=o;while(1){b=t[b>>2]|0;if(!b)break;f=t[b>>2]|0;if(!f)f=0;else f=t[(t[(t[f+16>>2]|0)+112>>2]|0)+8>>2]|0;if((f|0)==(t[e>>2]|0)?(sh(t[b+32>>2]|0)|0)>=1:0){o=+c[b+16>>3];u=o*m;do{if(!B)if((t[v>>2]|0)==1){n=+c[E>>3];break}else{n=n+p+u;break}else{if(n!=0.0)n=(t[v>>2]|0)==2?3.141592653589793:u+n;l=n;s=s<0.0?n:s}}while(0);Q=+W(+n)*a;L=+Y(+n)*a;$b(b,Q,L,+eh(b,Q,L,n));n=(B?(o+i)*m:u+p)+n;h=h+1|0;f=h;o=(h|0)==(g|0)?n:w}else{f=h;o=w}b=b+4|0;h=f;w=o}a=d?k:y;if((r|0)>1?(G=t[e>>2]|0,(G|0)==(t[A+44>>2]|0)):0)c[(t[(t[G+16>>2]|0)+112>>2]|0)+24>>3]=w;c[C>>3]=a;c[I>>3]=s;c[Z>>3]=l;return}function $b(e,A,r,i){e=e|0;A=+A;r=+r;i=+i;var a=0,n=0.0,f=0.0,l=0.0,s=0,o=0,u=0,b=0,h=0.0,w=0.0;u=t[e+8>>2]|0;b=i!=0.0;a=sd(u)|0;while(1){if(!a)break;s=t[(t[a+16>>2]|0)+132>>2]|0;f=+c[s>>3];o=s+8|0;n=+c[o>>3];if(b){h=+W(+i);w=+Y(+i);l=h*f-w*n;n=w*f+h*n}else l=f;c[s>>3]=l+A;c[o>>3]=n+r;a=cd(u,a)|0}a=e+36|0;while(1){a=t[a>>2]|0;if(!a)break;$b(a,A,r,i);a=a+4|0}return}function eh(e,A,r,i){e=e|0;A=+A;r=+r;i=+i;var a=0.0,n=0,f=0,l=0.0,s=0.0,o=0,u=0,b=0,h=0;u=t[e+8>>2]|0;a=+c[e+48>>3];do{if(!(a>=0.0)){if((sh(t[e+32>>2]|0)|0)==2){a=i+-1.5707963267948966;break}o=t[e>>2]|0;b=o+16|0;f=t[(t[b>>2]|0)+132>>2]|0;a=+c[f>>3]+A;s=+c[f+8>>3]+r;a=s*s+a*a;f=sd(u)|0;n=o;while(1){if(!f)break;if((f|0)!=(o|0)?(h=t[(t[f+16>>2]|0)+132>>2]|0,l=+c[h>>3]+A,s=+c[h+8>>3]+r,l=s*s+l*l,l>3];s=+c[e+16>>3]-l;n=t[b>>2]|0;f=t[n+132>>2]|0;a=+c[f>>3];if(a>-s?(t[e+56>>2]&1|0)!=0:0){r=+D(+(r*r+A*A));A=+R(+ +c[f+8>>3],+(a+s));a=+W(+A);a=i+1.5707963267948966-A-+V(+((s-l/a)/r*a));break}else{a=+R(+ +c[f+8>>3],+a);a=i+3.141592653589793-a-+c[(t[n+112>>2]|0)+24>>3];a=a>6.283185307179586?a+-6.283185307179586:a;break}}else a=0.0}else{a=3.141592653589793-a+i;a=a<0.0?a+6.283185307179586:a}}while(0);return+a}function Ah(){return KF(12)|0}function rh(e){e=e|0;var A=0,r=0;if(e|0){A=t[e>>2]|0;while(1){if(!A)break;r=t[A+4>>2]|0;G2(A);A=r}G2(e)}return}function ih(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0;a=ah(r)|0;r=e+8|0;t[r>>2]=(t[r>>2]|0)+1;r=e+4|0;i=t[r>>2]|0;if((A|0)==0|(i|0)==(A|0)){t[(i|0?i+4|0:e)>>2]=a;t[a+8>>2]=i;i=0}else{i=A+4|0;r=t[i>>2]|0;t[i>>2]=a;t[a+8>>2]=A;i=r;r=r+8|0}t[r>>2]=a;t[a+4>>2]=i;return}function ah(e){e=e|0;var A=0;A=KF(12)|0;t[A>>2]=e;return A|0}function th(e){e=e|0;var A=0,r=0,i=0,a=0,n=0;A=t[e>>2]|0;r=A;while(1){if(!A)break;n=A+4|0;i=t[n>>2]|0;a=A+8|0;t[n>>2]=t[a>>2];t[a>>2]=i;A=i}a=e+4|0;n=t[a>>2]|0;t[a>>2]=r;t[e>>2]=n;return e|0}function nh(e,A){e=e|0;A=A|0;var r=0,i=0,a=0;r=t[e>>2]|0;if((r|0)!=(A|0)){a=A+8|0;i=t[a>>2]|0;t[e>>2]=A;t[a>>2]=0;A=e+4|0;e=t[A>>2]|0;t[e+4>>2]=r;t[r+8>>2]=e;t[A>>2]=i;t[i+4>>2]=0}return}function fh(e){e=e|0;var A=0,r=0,i=0;r=Ah()|0;i=r+4|0;A=0;while(1){e=t[e>>2]|0;if(!e)break;ih(r,A,t[e>>2]|0);A=t[i>>2]|0;e=e+4|0}return r|0}function lh(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0,n=0,f=0,l=0,s=0,c=0;a=e;while(1){s=t[a>>2]|0;if(!s){c=6;break}if((t[s>>2]|0)==(A|0))break;a=s+4|0}if((c|0)==6)ge(96270,96277,217,96288);l=s+8|0;a=t[l>>2]|0;n=s+4|0;A=t[n>>2]|0;t[(a|0?a+4|0:e)>>2]=A;f=e+4|0;t[(A|0?A+8|0:f)>>2]=a;A=0;a=e;while(1){a=t[a>>2]|0;if(!a)break;if((t[a>>2]|0)==(r|0)){c=9;break}A=a;a=a+4|0}if((c|0)==9){do{if(!i)if((a|0)==(t[e>>2]|0)){t[e>>2]=s;t[n>>2]=a;t[l>>2]=0;a=a+8|0;break}else{t[A+4>>2]=s;t[l>>2]=A;t[n>>2]=a;a=a+8|0;break}else if((a|0)==(t[f>>2]|0)){t[f>>2]=s;t[n>>2]=0;t[l>>2]=a;a=a+4|0;break}else{t[l>>2]=a;a=a+4|0;t[n>>2]=t[a>>2];t[(t[a>>2]|0)+8>>2]=s;break}}while(0);t[a>>2]=s}return}function sh(e){e=e|0;return t[e+8>>2]|0}function ch(e,A){e=e|0;A=A|0;oh(e,th(A)|0);G2(A);return}function oh(e,A){e=e|0;A=A|0;var r=0,i=0,a=0;r=t[A>>2]|0;if(r|0){i=e+4|0;a=t[i>>2]|0;t[a+4>>2]=r;t[r+8>>2]=a;t[i>>2]=t[A+4>>2];r=e+8|0;t[r>>2]=(t[r>>2]|0)+(t[A+8>>2]|0)}return}function uh(e,A,r){e=e|0;A=A|0;r=+r;var i=0,a=0.0,n=0.0,f=0.0,l=0.0,s=0,o=0,u=0,b=0,h=0.0;u=t[A+8>>2]|0;bh(e,A);o=hh(u)|0;e=kh(wh(o)|0)|0;dh(u,e);u=vh(e,u)|0;e=sh(u)|0;l=+gh(u);s=(e|0)==1;a=+(e|0);f=a*.15915494309189535*(l+r);n=s?0.0:f;e=u;while(1){e=t[e>>2]|0;if(!e)break;if(t[(t[(t[(t[e>>2]|0)+16>>2]|0)+112>>2]|0)+4>>2]&8|0){i=4;break}e=e+4|0}if((i|0)==4)nh(u,e);r=1.0/a;i=0;e=u;while(1){e=t[e>>2]|0;if(!e)break;b=(t[e>>2]|0)+16|0;t[(t[(t[b>>2]|0)+112>>2]|0)+16>>2]=i;c[(t[(t[b>>2]|0)+112>>2]|0)+24>>3]=0.0;a=6.283185307179586*r*+(i|0);h=+W(+a)*n;b=t[(t[b>>2]|0)+132>>2]|0;c[b>>3]=h;c[b+8>>3]=+Y(+a)*n;i=i+1|0;e=e+4|0}h=s?l*.5:f;c[A+16>>3]=h;c[A+24>>3]=h;c[A+48>>3]=-1.0;vk(o)|0;return u|0}function bh(e,A){e=e|0;A=A|0;var r=0,i=0,a=0;a=t[A+8>>2]|0;r=sd(a)|0;while(1){if(!r)break;i=Ow(e,r)|0;while(1){if(!i)break;if((t[(t[(t[(t[((t[i>>2]&3|0)==2?i:i+-48|0)+40>>2]|0)+16>>2]|0)+112>>2]|0)+12>>2]|0)==(A|0))uk(a,i,1)|0;i=qw(e,i)|0}r=cd(a,r)|0}return}function hh(e){e=e|0;var A=0,r=0,i=0,a=0,n=0,f=0,l=0,s=0,c=0;c=h;h=h+16|0;n=c;a=Ch(e,n)|0;n=t[n>>2]|0;l=gk(n)|0;f=Ih(n)|0;l=l+-3|0;i=0;while(1){if((i|0)>=(l|0))break;s=Fh(f)|0;r=ek(n,s)|0;while(1){if(!r)break;A=t[r>>2]&3;e=t[((A|0)==2?r:r+-48|0)+40>>2]|0;if((s|0)==(e|0))e=t[((A|0)==3?r:r+48|0)+40>>2]|0;Yh(f,e);r=Ak(n,r,s)|0}Zh(n,s,a);r=ek(n,s)|0;while(1){if(!r)break;A=t[r>>2]&3;e=t[((A|0)==2?r:r+-48|0)+40>>2]|0;if((s|0)==(e|0))e=t[((A|0)==3?r:r+48|0)+40>>2]|0;A=(t[e+16>>2]|0)+236|0;t[A>>2]=(t[A>>2]|0)+-1;Wh(f,e);r=Ak(n,r,s)|0}Ed(n,s)|0;i=i+1|0}vk(n)|0;zh(f);h=c;return a|0}function wh(e){e=e|0;var A=0,r=0,i=0,a=0;a=h;h=h+144|0;A=a;i=a+8|0;r=t[46933]|0;t[46933]=r+1;t[A>>2]=r;T4(i,96303,A)|0;i=Rv(e,i,1)|0;Sd(i,137483,280,1)|0;A=sd(e)|0;while(1){if(!A)break;hd(i,A,1)|0;r=A+16|0;t[(t[(t[r>>2]|0)+112>>2]|0)+16+12>>2]=0;t[(t[(t[r>>2]|0)+112>>2]|0)+32>>2]=0;r=(t[(t[r>>2]|0)+112>>2]|0)+4|0;t[r>>2]=t[r>>2]&-2;A=cd(e,A)|0}A=sd(e)|0;while(1){if(!A)break;r=t[(t[A+16>>2]|0)+112>>2]|0;if(!(t[r+4>>2]&1)){t[r+16>>2]=0;yh(e,A,i)}A=cd(e,A)|0}h=a;return i|0}function kh(e){e=e|0;var A=0,r=0,i=0,a=0,n=0;if((gk(e)|0)!=1){r=sd(e)|0;while(1){if(!r)break;A=0;i=ek(e,r)|0;while(1){if(!i)break;A=A+1|0;i=Ak(e,i,r)|0}if((A|0)==1)Bh(r,r,0,0);r=cd(e,r)|0}A=0;a=0;r=sd(e)|0;while(1){if(!r)break;n=t[(t[r+16>>2]|0)+112>>2]|0;n=(t[n+32>>2]|0)+(t[n+16+12>>2]|0)|0;i=(n|0)>(A|0);A=i?n:A;a=i?r:a;r=cd(e,r)|0}A=Ah()|0;i=a+16|0;r=(t[(t[i>>2]|0)+112>>2]|0)+16+4|0;while(1){r=t[r>>2]|0;if((r|0)==(a|0))break;ih(A,0,r);r=t[(t[r+16>>2]|0)+112>>2]|0;n=r+4|0;t[n>>2]=t[n>>2]|16;r=r+16|0}ih(A,0,a);n=t[(t[i>>2]|0)+112>>2]|0;e=n+4|0;t[e>>2]=t[e>>2]|16;if(t[n+32>>2]|0){e=Ah()|0;r=(t[(t[i>>2]|0)+112>>2]|0)+24|0;while(1){r=t[r>>2]|0;if((r|0)==(a|0))break;ih(e,0,r);r=t[(t[r+16>>2]|0)+112>>2]|0;n=r+4|0;t[n>>2]=t[n>>2]|16;r=r+16|0}ch(A,e)}}else{A=Ah()|0;n=sd(e)|0;ih(A,0,n);n=(t[(t[n+16>>2]|0)+112>>2]|0)+4|0;t[n>>2]=t[n>>2]|16}return A|0}function dh(e,A){e=e|0;A=A|0;var r=0;r=sd(e)|0;while(1){if(!r)break;if(!(t[(t[(t[r+16>>2]|0)+112>>2]|0)+4>>2]&16))Eh(e,r,A);r=cd(e,r)|0}return}function vh(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0,f=0;n=h;h=h+16|0;a=n;r=mh(e,A)|0;t[a>>2]=r;e:do{if(r){i=0;while(1){if((i|0)>=10)break e;e=ph(e,A,a)|0;f=r;r=t[a>>2]|0;if((f|0)==(r|0)|(r|0)==0)break;else i=i+1|0}}}while(0);h=n;return e|0}function gh(e){e=e|0;var A=0.0,r=0.0,i=0.0,a=0;A=0.0;while(1){e=t[e>>2]|0;if(!e)break;a=t[(t[t[(t[(t[e>>2]|0)+16>>2]|0)+112>>2]>>2]|0)+16>>2]|0;r=+c[a+32>>3];r=r>A?r:A;i=+c[a+40>>3];A=i>r?i:r;e=e+4|0}return+A}function mh(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0,f=0,l=0,s=0,c=0,o=0;c=Mh()|0;i=sd(A)|0;while(1){if(!i)break;r=Ow(A,i)|0;while(1){if(!r)break;t[t[(t[r+16>>2]|0)+120>>2]>>2]=0;r=qw(A,r)|0}i=cd(A,i)|0}s=1;r=0;while(1){f=t[e>>2]|0;if(!f)break;l=t[f>>2]|0;n=ek(A,l)|0;while(1){if(!n)break;a=n+16|0;if((t[t[(t[a>>2]|0)+120>>2]>>2]|0)>0){e=L5[t[c>>2]&63](c,0,128)|0;while(1){if(!e)break;i=t[e+8>>2]|0;if((t[t[(t[i+16>>2]|0)+120>>2]>>2]|0)>(t[t[(t[a>>2]|0)+120>>2]>>2]|0)?(o=t[i>>2]&3,(t[((o|0)==2?i:i+-48|0)+40>>2]|0)!=(l|0)):0)r=r+((t[((o|0)==3?i:i+48|0)+40>>2]|0)!=(l|0)&1)|0;e=L5[t[c>>2]&63](c,e,8)|0}Hh(c,n)}n=Ak(A,n,l)|0}i=ek(A,l)|0;while(1){if(!i)break;e=t[(t[i+16>>2]|0)+120>>2]|0;if(!(t[e>>2]|0)){t[e>>2]=s;Jh(c,i)}i=Ak(A,i,l)|0}e=f+4|0;s=s+1|0}xh(c);return r|0}function ph(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0,n=0,f=0,l=0,s=0,c=0;i=t[r>>2]|0;c=sd(A)|0;e:while(1){if(!c)break;s=ek(A,c)|0;while(1){if(!s)break;n=t[s>>2]&3;a=t[((n|0)==3?s:s+48|0)+40>>2]|0;if((a|0)==(c|0))a=t[((n|0)==2?s:s+-48|0)+40>>2]|0;l=0;while(1){if((l|0)>=2)break;f=fh(e)|0;lh(e,c,a,l);n=mh(e,A)|0;if((n|0)<(i|0)){rh(f);if(!n){i=0;break e}else i=n}else{rh(e);e=f}l=l+1|0}s=Ak(A,s,c)|0}c=cd(A,c)|0}t[r>>2]=i;return e|0}function Eh(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0,n=0,f=0;f=Ah()|0;i=Ow(e,A)|0;while(1){if(!i)break;a=i+-48|0;ih(f,0,t[((t[i>>2]&3|0)==2?i:a)+40>>2]|0);a=(t[(t[(t[((t[i>>2]&3|0)==2?i:a)+40>>2]|0)+16>>2]|0)+112>>2]|0)+4|0;t[a>>2]=t[a>>2]|32;i=qw(e,i)|0}i=Kw(e,A)|0;while(1){if(!i)break;a=i+48|0;ih(f,0,t[((t[i>>2]&3|0)==3?i:a)+40>>2]|0);a=(t[(t[(t[((t[i>>2]&3|0)==3?i:a)+40>>2]|0)+16>>2]|0)+112>>2]|0)+4|0;t[a>>2]=t[a>>2]|32;i=$w(e,i)|0}e:do{if((sh(f)|0)>1){a=r+4|0;e=r;while(1){i=t[e>>2]|0;if(!i){n=13;break e}e=i+4|0;if(!(t[(t[(t[(t[i>>2]|0)+16>>2]|0)+112>>2]|0)+4>>2]&32))continue;if(t[(t[(t[(t[t[((i|0)==(t[a>>2]|0)?r:e)>>2]>>2]|0)+16>>2]|0)+112>>2]|0)+4>>2]&32|0)break}ih(r,i,A)}else n=13}while(0);e:do{if((n|0)==13){A:do{if((sh(f)|0)>0){i=r;while(1){i=t[i>>2]|0;if(!i)break A;if(t[(t[(t[(t[i>>2]|0)+16>>2]|0)+112>>2]|0)+4>>2]&32|0)break;i=i+4|0}ih(r,i,A);break e}}while(0);ih(r,0,A)}}while(0);i=f;while(1){i=t[i>>2]|0;if(!i)break;r=(t[(t[(t[i>>2]|0)+16>>2]|0)+112>>2]|0)+4|0;t[r>>2]=t[r>>2]&-33;i=i+4|0}rh(f);return}function Bh(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0,n=0,f=0,l=0,s=0,c=0;while(1){n=t[(t[(t[A+16>>2]|0)+112>>2]|0)+16>>2]|0;if(!n)break;f=r+1|0;l=n+16|0;s=t[(t[l>>2]|0)+112>>2]|0;A=s+16|0;a=t[A+12>>2]|0;if(a){if((a|0)>(r|0)){c=11;break}A=t[A+4>>2]|0;a=A;if((A|0)==(i|0))A=s;else{r=s+24|0;if(!((t[s+32>>2]|0)!=0?(t[r>>2]|0)==(i|0):0))i=A;t[r>>2]=a;A=t[(t[l>>2]|0)+112>>2]|0;t[A+32>>2]=t[A+16+12>>2];A=t[(t[l>>2]|0)+112>>2]|0}A=A+16|0}t[A+4>>2]=e;t[(t[(t[l>>2]|0)+112>>2]|0)+16+12>>2]=f;A=n;r=f}if((c|0)==11?(t[s+32>>2]|0)<=(r|0):0){t[s+24>>2]=e;t[(t[(t[l>>2]|0)+112>>2]|0)+32>>2]=f}return}function yh(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0,n=0;n=(t[(t[A+16>>2]|0)+112>>2]|0)+4|0;t[n>>2]=t[n>>2]|1;n=ek(e,A)|0;while(1){if(!n)break;a=t[n>>2]&3;i=t[((a|0)==2?n:n+-48|0)+40>>2]|0;if((i|0)==(A|0))i=t[((a|0)==3?n:n+48|0)+40>>2]|0;a=i+16|0;if(!(t[(t[(t[a>>2]|0)+112>>2]|0)+4>>2]&1)){uk(r,n,1)|0;t[(t[(t[a>>2]|0)+112>>2]|0)+16>>2]=A;yh(e,i,r)}n=Ak(e,n,A)|0}return}function Ch(e,A){e=e|0;A=A|0;var r=0,a=0,n=0,f=0,l=0,s=0,c=0,o=0,u=0;c=h;h=h+144|0;s=c+8|0;l=c;r=c+16|0;f=t[46934]|0;t[46934]=f+1;t[l>>2]=f;T4(r,96312,l)|0;l=Rv(e,r,1)|0;Sd(l,137483,280,1)|0;f=t[46934]|0;t[46934]=f+1;t[s>>2]=f;T4(r,96312,s)|0;f=e+24|0;i[s>>0]=i[f>>0]|0;i[s+1>>0]=i[f+1>>0]|0;i[s+2>>0]=i[f+2>>0]|0;i[s+3>>0]=i[f+3>>0]|0;s=hk(r,s,0)|0;r=sd(e)|0;while(1){if(!r)break;hd(l,r,1)|0;f=gd(s,Mk(r)|0,1)|0;Sd(f,137447,304,1)|0;t[(t[(t[r+16>>2]|0)+112>>2]|0)+16>>2]=f;r=cd(e,r)|0}a=sd(e)|0;while(1){if(!a)break;n=t[(t[(t[a+16>>2]|0)+112>>2]|0)+16>>2]|0;f=n+16|0;r=Ow(e,a)|0;while(1){if(!r)break;uk(l,r,1)|0;o=t[(t[(t[(t[((t[r>>2]&3|0)==2?r:r+-48|0)+40>>2]|0)+16>>2]|0)+112>>2]|0)+16>>2]|0;u=lk(s,n,o,0,1)|0;Sd(u,137460,176,1)|0;t[(t[u+16>>2]|0)+116>>2]=r;u=(t[f>>2]|0)+236|0;t[u>>2]=(t[u>>2]|0)+1;o=(t[o+16>>2]|0)+236|0;t[o>>2]=(t[o>>2]|0)+1;r=qw(e,r)|0}a=cd(e,a)|0}t[A>>2]=s;h=c;return l|0}function Ih(e){e=e|0;var A=0,r=0;r=Gh()|0;A=sd(e)|0;while(1){if(!A)break;Wh(r,A);A=cd(e,A)|0}return r|0}function Zh(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0,n=0,f=0,l=0,s=0,c=0,o=0,u=0,b=0,h=0,w=0;u=t[(t[A+16>>2]|0)+236>>2]|0;w=u<<2;h=$F(w)|0;w=$F(w)|0;l=0;o=ek(e,A)|0;b=0;a=0;while(1){if(!o)break;i=t[o>>2]&3;n=t[((i|0)==2?o:o+-48|0)+40>>2]|0;if((n|0)==(A|0))n=t[((i|0)==3?o:o+48|0)+40>>2]|0;f=0;c=ek(e,A)|0;s=l;while(1){if(!c)break;if((c|0)!=(o|0)){l=t[c>>2]&3;i=t[((l|0)==2?c:c+-48|0)+40>>2]|0;if((i|0)==(A|0))i=t[((l|0)==3?c:c+48|0)+40>>2]|0;l=lk(e,n,i,0,0)|0;if(l)if(n>>>0>>0){i=s+1|0;f=l+16|0;l=t[(t[f>>2]|0)+116>>2]|0;if(!l)f=1;else{Ed(r,l)|0;t[(t[f>>2]|0)+116>>2]=0;f=1}}else{f=1;i=s}else i=s}else i=s;c=Ak(e,c,A)|0;s=i}if(!f){t[w+(b<<2)>>2]=n;i=b+1|0}else{t[h+(a<<2)>>2]=n;i=b;a=a+1|0}l=s;o=Ak(e,o,A)|0;b=i}i=u+-1-l|0;e:do{if((i|0)>0){if((i|0)<(b|0))n=0;else{if((i|0)!=(b|0))break;a=t[h>>2]|0;n=a+16|0;i=0;while(1){if((i|0)>=(b|0))break e;u=t[w+(i<<2)>>2]|0;Sd(lk(e,a,u,0,1)|0,137460,176,1)|0;r=(t[n>>2]|0)+236|0;t[r>>2]=(t[r>>2]|0)+1;u=(t[u+16>>2]|0)+236|0;t[u>>2]=(t[u>>2]|0)+1;i=i+1|0}}while(1){if((n|0)>=(b|0)){a=2;break}a=n|1;if((a|0)>=(b|0)){a=2;break}r=t[w+(n<<2)>>2]|0;u=t[w+(a<<2)>>2]|0;Sd(lk(e,r,u,0,1)|0,137460,176,1)|0;r=(t[r+16>>2]|0)+236|0;t[r>>2]=(t[r>>2]|0)+1;u=(t[u+16>>2]|0)+236|0;t[u>>2]=(t[u>>2]|0)+1;n=n+2|0;i=i+-1|0}while(1){if((i|0)<=0)break e;u=t[w>>2]|0;b=t[w+(a<<2)>>2]|0;Sd(lk(e,u,b,0,1)|0,137460,176,1)|0;u=(t[u+16>>2]|0)+236|0;t[u>>2]=(t[u>>2]|0)+1;b=(t[b+16>>2]|0)+236|0;t[b>>2]=(t[b>>2]|0)+1;a=a+1|0;i=i+-1|0}}}while(0);G2(w);G2(h);return}function Gh(){return Uh(18240,t[4581]|0)|0}function Lh(e,A,r){e=e|0;A=A|0;r=r|0;r=$F(16)|0;t[r+12>>2]=0;t[r+8>>2]=t[A+8>>2];return r|0}function Qh(e,A,r){e=e|0;A=A|0;r=r|0;G2(A);return}function Dh(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;A=t[A>>2]|0;i=t[r>>2]|0;return((A|0)<(i|0)?-1:(A|0)>(i|0)&1)|0}function zh(e){e=e|0;Ph(e)|0;return}function Wh(e,A){e=e|0;A=A|0;var r=0,i=0,a=0;r=h;h=h+16|0;a=r;i=A+16|0;t[a+8>>2]=t[(t[i>>2]|0)+236>>2];e=(L5[t[e>>2]&63](e,a,1)|0)+12|0;t[(t[i>>2]|0)+164>>2]=t[e>>2];t[e>>2]=A;h=r;return}function Yh(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0,f=0;f=h;h=h+16|0;n=f;a=A+16|0;t[n+8>>2]=t[(t[a>>2]|0)+236>>2];n=L5[t[e>>2]&63](e,n,4)|0;if(!n)ge(96322,96325,107,96335);i=n+12|0;r=t[i>>2]|0;if((r|0)==(A|0)){A=t[(t[a>>2]|0)+164>>2]|0;t[i>>2]=A;if(!A)L5[t[e>>2]&63](e,n,2)|0}else{do{e=(t[r+16>>2]|0)+164|0;r=t[e>>2]|0;i=(r|0)!=0}while(i&(r|0)!=(A|0));if(i)t[e>>2]=t[(t[r+16>>2]|0)+164>>2]}h=f;return}function Fh(e){e=e|0;var A=0,r=0,i=0,a=0;r=L5[t[e>>2]&63](e,0,128)|0;if(r){a=r+12|0;A=t[a>>2]|0;i=t[(t[A+16>>2]|0)+164>>2]|0;t[a>>2]=i;if(!i)L5[t[e>>2]&63](e,r,2)|0}else A=0;return A|0}function Mh(){return Uh(18276,t[4581]|0)|0}function Vh(e,A,r){e=e|0;A=A|0;r=r|0;r=$F(12)|0;t[r+8>>2]=t[A+8>>2];return r|0}function Nh(e,A,r){e=e|0;A=A|0;r=r|0;G2(A);return}function Rh(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;A=t[A>>2]|0;i=t[r>>2]|0;return(A>>>0>i>>>0?1:(A>>>0>>0)<<31>>31)|0}function xh(e){e=e|0;Ph(e)|0;return}function Jh(e,A){e=e|0;A=A|0;var r=0,i=0;r=h;h=h+16|0;i=r;t[i+8>>2]=A;L5[t[e>>2]&63](e,i,1)|0;h=r;return}function Hh(e,A){e=e|0;A=A|0;var r=0,i=0;r=h;h=h+16|0;i=r;t[i+8>>2]=A;L5[t[e>>2]&63](e,i,2)|0;h=r;return}function Ph(e){e=e|0;var A=0,r=0,i=0,a=0,n=0,f=0;do{if((e|0)!=0?(t[e+24>>2]|0)<=0:0){f=t[e+4>>2]|0;n=f+32|0;A=t[n>>2]|0;if(A){A=Q5[A&127](e,2,0,f)|0;if((A|0)<0){A=-1;break}}else A=0;if(t[e+28>>2]|0)Kh(e,0)|0;a=(A|0)==0;if(a){L5[t[t[e+16>>2]>>2]&63](e,0,64)|0;if((Oh(e)|0)>0){A=-1;break}r=e+8|0;A=t[r>>2]|0;if((t[A+12>>2]|0)>0){i=e+12|0;Q5[t[i>>2]&127](e,t[A+8>>2]|0,0,f)|0;A=t[r>>2]|0}else i=e+12|0;Q5[t[i>>2]&127](e,A,0,f)|0}A=t[e+20>>2]|0;if(A){if(a&(A|0)==1)Q5[t[e+12>>2]&127](e,e,0,f)|0}else G2(e);A=t[n>>2]|0;if(!A)A=0;else{Q5[A&127](e,6,0,f)|0;A=0}}else A=-1}while(0);return A|0}function Xh(e){e=e|0;var A=0,r=0,i=0;i=e+8|0;A=t[i>>2]|0;r=t[A>>2]|0;e:do{if(!(r&12)){if(!(r&3)){r=A+8|0;e=t[r>>2]|0;t[r>>2]=0;break}e=Sh(e)|0;r=t[i>>2]|0;A=t[r+8>>2]|0;r=A+(t[r+12>>2]<<2)|0;while(1){if(A>>>0>=r>>>0)break e;t[A>>2]=0;A=A+4|0}}else e=t[A+4>>2]|0}while(0);i=t[i>>2]|0;t[i>>2]=t[i>>2]&-4097;t[i+16>>2]=0;t[i+4>>2]=0;return e|0}function Sh(e){e=e|0;var A=0,r=0,i=0,a=0,n=0;n=e+8|0;e=t[n>>2]|0;A=t[e>>2]|0;if(!(A&4096)){e:do{if(!(A&3)){if(A&112|0){e=t[e+8>>2]|0;break}e=t[e+4>>2]|0;if(!e)e=0;else{while(1){A=e+4|0;r=t[A>>2]|0;if(!r){i=e;break}t[A>>2]=t[r>>2];t[r>>2]=e;e=r}while(1){A=t[i>>2]|0;if(!A)break e;r=t[A+4>>2]|0;if(!r){i=A;continue}while(1){t[A+4>>2]=t[r>>2];t[r>>2]=A;A=t[r+4>>2]|0;if(!A)break;else{a=r;r=A;A=a}}t[i>>2]=r;i=r}}}else{i=t[e+8>>2]|0;a=i+(t[e+12>>2]<<2)|0;A=0;e=0;while(1){if(i>>>0>=a>>>0)break e;r=t[i>>2]|0;if(r){if(!A){A=r;e=r}else t[A>>2]=r;while(1){r=t[A>>2]|0;if(!r)break;else A=r}t[i>>2]=A}i=i+4|0}}}while(0);n=t[n>>2]|0;t[n+4>>2]=e;t[n>>2]=t[n>>2]|4096}else e=t[e+4>>2]|0;return e|0}function jh(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0,n=0,f=0,l=0,s=0,c=0,o=0,u=0,b=0,h=0,w=0,k=0,d=0,v=0,g=0,m=0;v=e+8|0;if(t[t[v>>2]>>2]&4096|0)Th(e,0)|0;d=t[e+4>>2]|0;u=t[d>>2]|0;b=t[d+4>>2]|0;k=d+8|0;m=t[k>>2]|0;h=t[d+20>>2]|0;w=e+20|0;a=t[w>>2]&-32769;t[w>>2]=a;e:do{if(!A){if(r&384|0){a=t[v>>2]|0;i=t[a+8>>2]|0;if(!i){i=0;break}if(r&256){i=t[i+4>>2]|0;t[a+4>>2]=i;if(!i){i=0;break}}else t[a+4>>2]=i;if((m|0)<0){i=t[i+8>>2]|0;break}else{i=i+(0-m)|0;break}}if(r&4098|0){i=t[v>>2]|0;if(t[i>>2]&144|0){i=0;break}i=t[i+8>>2]|0;if(!i){i=0;break}else{f=i;g=84;break}}if(!(r&64))i=0;else{l=d+16|0;A:do{if((t[l>>2]|0)!=0|(m|0)<0){s=e+12|0;c=(m|0)<0;a=0-m|0;i=t[(t[v>>2]|0)+8>>2]|0;while(1){if(!i)break A;n=t[i>>2]|0;f=t[l>>2]|0;if(f|0){if(c)A=t[i+8>>2]|0;else A=i+a|0;V5[f&127](e,A,d)}if((t[k>>2]|0)>=0){i=n;continue}Q5[t[s>>2]&127](e,i,0,d)|0;i=n}}}while(0);i=t[v>>2]|0;t[i+4>>2]=0;t[i+8>>2]=0;t[(t[v>>2]|0)+16>>2]=0;i=0}}else{if(r&2049|0){n=d+12|0;i=t[n>>2]|0;f=(r&1|0)==0;if(!(f|(i|0)==0)){i=L5[i&63](e,A,d)|0;if(!i){i=0;break}else a=i}else a=A;do{if((m|0)>-1)f=a+m|0;else{i=Q5[t[e+12>>2]&127](e,0,12,d)|0;if(i|0){t[i+8>>2]=a;f=i;break}if(!(t[n>>2]|0)){i=0;break e}i=t[d+16>>2]|0;if(f|(i|0)==0){i=0;break e}V5[i&127](e,a,d);i=0;break e}}while(0);n=t[v>>2]|0;i=t[n>>2]|0;do{if(!(i&128)){if(!(i&16))if(!(i&32)){g=51;break}else{g=48;break}a=t[n+4>>2]|0;i=(a|0)!=0;if(!(r&8192)){if(!i){g=48;break}if((a|0)==(t[n+8>>2]|0)){g=48;break}d=a+4|0;e=t[d>>2]|0;t[f+4>>2]=e;t[e>>2]=f;t[f>>2]=a;t[d>>2]=f;break}else{if(!i){g=51;break}i=t[a>>2]|0;if(!i){g=51;break}t[f>>2]=i;t[i+4>>2]=f;t[f+4>>2]=a;t[a>>2]=f;break}}else if(!(r&8192))g=48;else g=51}while(0);if((g|0)==48){i=t[n+8>>2]|0;t[f>>2]=i;if(!i)i=f;else t[f+4>>2]=t[i+4>>2];t[i+4>>2]=f;t[(t[v>>2]|0)+8>>2]=f}else if((g|0)==51){a=n+8|0;i=t[a>>2]|0;if(!i){t[a>>2]=f;i=f}else{d=i+4|0;t[t[d>>2]>>2]=f;t[f+4>>2]=t[d>>2]}t[i+4>>2]=f;t[f>>2]=0}i=t[v>>2]|0;a=i+16|0;n=t[a>>2]|0;if((n|0)>-1)t[a>>2]=n+1;t[i+4>>2]=f;if((m|0)<0){i=t[f+8>>2]|0;break}else{i=f+(0-m)|0;break}}f=t[v>>2]|0;do{if(!(r&512)){i=t[f+4>>2]|0;if(i|0){if((m|0)<0)n=t[i+8>>2]|0;else n=i+(0-m)|0;if((n|0)==(A|0))break}i=A+u|0;if((b|0)<0){A=t[i>>2]|0;g=68}else{A=i;g=68}}else g=68}while(0);if((g|0)==68){n=(m|0)<0;l=(b|0)<0;s=(h|0)==0;c=(b|0)<1;o=0-m|0;i=f+8|0;do{i=t[i>>2]|0;if(!i){i=0;break e}if(n)a=t[i+8>>2]|0;else a=i+o|0;a=a+u|0;if(l)a=t[a>>2]|0;do{if(s)if(c){a=e1(A,a)|0;break}else{a=F4(A,a,b)|0;break}else a=Q5[h&127](e,A,a,d)|0}while(0)}while((a|0)!=0);a=t[w>>2]|0}t[w>>2]=a|32768;if(!(r&4098)){do{if(!(r&8)){a=t[v>>2]|0;if(!(r&16)){t[a+4>>2]=i;break}if((i|0)==(t[a+8>>2]|0)){t[a+4>>2]=0;i=0;break e}else{i=i+4|0;g=108;break}}else{a=t[v>>2]|0;g=108}}while(0);if((g|0)==108){i=t[i>>2]|0;t[a+4>>2]=i;if(!i){i=0;break}}if((m|0)<0){i=t[i+8>>2]|0;break}else{i=i+(0-m)|0;break}}else{f=i;g=84}}}while(0);if((g|0)==84){i=t[f>>2]|0;if(i){t[i+4>>2]=t[f+4>>2];i=t[f>>2]|0}a=(t[v>>2]|0)+8|0;n=t[a>>2]|0;if((f|0)==(n|0)){t[a>>2]=i;i=t[(t[v>>2]|0)+8>>2]|0;if(i|0)t[i+4>>2]=t[f+4>>2]}else{a=f+4|0;t[t[a>>2]>>2]=i;i=n+4|0;if((f|0)==(t[i>>2]|0))t[i>>2]=t[a>>2]}i=t[v>>2]|0;a=i+4|0;if((f|0)==(t[a>>2]|0))n=t[f>>2]|0;else n=0;t[a>>2]=n;g=i+16|0;t[g>>2]=(t[g>>2]|0)+-1;if((m|0)<0)i=t[f+8>>2]|0;else i=f+(0-m)|0;a=t[d+16>>2]|0;if(!((r&2|0)==0|(a|0)==0))V5[a&127](e,i,d);if((t[k>>2]|0)<0)Q5[t[e+12>>2]&127](e,f,0,d)|0}return i|0}function Uh(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0,f=0,l=0,s=0;s=h;h=h+16|0;n=s;e:do{if((e|0)!=0&(A|0)!=0?(a=Z2(40)|0,(a|0)!=0):0){t[a>>2]=0;t[a+16>>2]=0;t[a+4>>2]=0;Aw(a,e,0)|0;r=a+20|0;l=e+32|0;t[r>>2]=0;t[r+4>>2]=0;t[r+8>>2]=0;t[r+12>>2]=0;t[r+16>>2]=0;r=t[l>>2]|0;do{if(r){t[n>>2]=0;r=Q5[r&127](a,1,n,e)|0;if((r|0)>=0)if(r){i=t[n>>2]|0;if(i|0)if(!(t[A+4>>2]&t[i>>2])){r=a;f=12;break}else{r=a;break}r=e+28|0;if(!(t[r>>2]|0)){r=a;f=12}else{G2(a);i=Q5[t[r>>2]&127](0,0,40,e)|0;if(!i){r=0;break e}t[i>>2]=0;t[i+16>>2]=0;t[i+4>>2]=0;Aw(i,e,0)|0;t[i+20>>2]=1;t[i+24>>2]=0;t[i+32>>2]=0;t[i+28>>2]=0;r=i;a=i;f=11}}else{r=a;f=11}else{r=a;f=12}}else{r=a;f=11}}while(0);if((f|0)==11){i=Q5[t[r+12>>2]&127](r,0,28,e)|0;t[n>>2]=i;if(!i){r=a;f=12}else{t[i>>2]=t[A+4>>2];n=i+4|0;t[n>>2]=0;t[n+4>>2]=0;t[n+8>>2]=0;t[n+12>>2]=0;t[n+16>>2]=0;t[n+20>>2]=0}}if((f|0)==12){G2(r);r=0;break}t[r+8>>2]=i;t[r>>2]=t[A>>2];t[r+16>>2]=A;i=t[l>>2]|0;if(i)Q5[i&127](r,5,a,e)|0}else r=0}while(0);h=s;return r|0}function Th(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0,f=0,l=0,s=0;a=t[t[e+16>>2]>>2]|0;s=e+8|0;n=t[s>>2]|0;f=t[n>>2]|0;r=f&4096;if(!A)if(!r)A=-1;else{i=r;A=t[n+4>>2]|0;l=5}else if(!(t[n+16>>2]|0)){i=0;l=5}else A=-1;e:do{if((l|0)==5){t[n>>2]=f&-4097;if(!(f&3)){r=n+4|0;if(!(f&12)){t[r>>2]=0;r=n+8|0}t[r>>2]=A;if(i|0){A=0;break}t[(t[s>>2]|0)+16>>2]=-1;A=0;break}t[n+4>>2]=0;if(!i){t[n+16>>2]=0;while(1){if(!A){A=0;break e}s=t[A>>2]|0;L5[a&63](e,A,32)|0;A=s}}i=t[n+8>>2]|0;e=i+(t[n+12>>2]<<2)|0;while(1){if(i>>>0>=e>>>0){A=0;break e}r=t[i>>2]|0;if(r){t[i>>2]=A;A=t[r>>2]|0;t[r>>2]=0}i=i+4|0}}}while(0);return A|0}function Oh(e){e=e|0;var A=0,r=0,i=0;A=e+8|0;r=t[A>>2]|0;if(t[r>>2]&4096){Th(e,0)|0;r=t[A>>2]|0}i=r+16|0;e=t[i>>2]|0;do{if((e|0)<0){A=t[r>>2]|0;if(A&12|0){e=_h(t[r+4>>2]|0)|0;t[i>>2]=e;break}if(A&112){e=0;A=r+8|0;while(1){A=t[A>>2]|0;if(!A)break;e=e+1|0}t[i>>2]=e}}}while(0);return e|0}function _h(e){e=e|0;var A=0;if(!e)return 0;else{A=_h(t[e+4>>2]|0)|0;return A+1+(_h(t[e>>2]|0)|0)|0}return 0}function qh(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0,n=0,f=0,l=0,s=0,c=0,o=0,u=0,b=0,w=0,k=0,d=0,v=0,g=0,m=0,p=0,E=0,B=0,y=0,C=0,I=0,Z=0,G=0,L=0,Q=0,D=0,z=0;z=h;h=h+128|0;C=z+120|0;d=z;D=e+8|0;i=t[D>>2]|0;if(t[i>>2]&4096){Th(e,0)|0;i=t[D>>2]|0}Q=t[e+4>>2]|0;I=t[Q>>2]|0;Z=t[Q+4>>2]|0;B=Q+8|0;L=t[B>>2]|0;G=t[Q+20>>2]|0;g=e+20|0;t[g>>2]=t[g>>2]&-32769;f=t[i+4>>2]|0;e:do{if(!A)if((r&448|0)==0|(f|0)==0)i=0;else{if(!(r&64)){A:do{if(!(r&256)){i=f;while(1){a=i+4|0;n=t[a>>2]|0;if(!n)break A;t[a>>2]=t[n>>2];t[n>>2]=i;i=n}}else{i=f;while(1){a=t[i>>2]|0;if(!a)break A;e=a+4|0;t[i>>2]=t[e>>2];t[e>>2]=i;i=a}}}while(0);t[(t[D>>2]|0)+4>>2]=i;if((L|0)<0){i=t[i+8>>2]|0;break}else{i=i+(0-L)|0;break}}A=Q+16|0;if((t[A>>2]|0)!=0|(L|0)<0){s=e+12|0;c=(L|0)<0;l=0-L|0;i=f;do{f=i;while(1){i=f+4|0;a=t[i>>2]|0;if(!a)break;t[i>>2]=t[a>>2];t[a>>2]=f;f=a}i=t[f>>2]|0;a=t[A>>2]|0;if(a|0){if(c)n=t[f+8>>2]|0;else n=f+l|0;V5[a&127](e,n,Q)}if((t[B>>2]|0)<0)Q5[t[s>>2]&127](e,f,0,Q)|0}while((i|0)!=0);i=t[D>>2]|0}t[i+16>>2]=0;t[i+4>>2]=0;i=0}else{y=e+16|0;m=(r&4098|0)==0;A:do{if(m|(t[(t[y>>2]|0)+4>>2]|0)!=8)p=45;else{c=(Z|0)<0;i=A+I|0;if(c)i=t[i>>2]|0;l=(G|0)==0;s=(Z|0)<1;n=L5[t[e>>2]&63](e,A,4)|0;while(1){if(!n){p=45;break A}a=n+I|0;if(c)a=t[a>>2]|0;do{if(l)if(s){a=e1(i,a)|0;break}else{a=F4(i,a,Z)|0;break}else a=Q5[G&127](e,i,a,Q)|0}while(0);if(a|0){p=45;break A}if((n|0)==(A|0))break;n=L5[t[e>>2]&63](e,n,8)|0}f=t[(t[D>>2]|0)+4>>2]|0;t[C>>2]=t[f+4>>2];t[C+4>>2]=t[f>>2];i=C;p=180}}while(0);A:do{if((p|0)==45){do{if(!(r&2565)){if(r&32|0){if((L|0)<0)n=t[A+8>>2]|0;else n=A+(0-L)|0;i=n+I|0;if((Z|0)<0)a=t[i>>2]|0;else a=i;if(!f){i=A;a=C;f=C;p=198;break}else{i=A;v=a;s=A;p=64;break}}if(f){if((L|0)<0)i=t[f+8>>2]|0;else i=f+(0-L)|0;if((i|0)!=(A|0)){a=A+I|0;if((Z|0)<0){n=A;i=0;v=t[a>>2]|0;s=0;p=64}else{n=A;i=0;v=a;s=0;p=64}}else{i=0;n=A;a=C;c=C;s=0;p=141}}else{i=0;n=A;a=C;f=C;p=198}}else{if(!(r&512)){i=A+I|0;if((Z|0)<0)a=t[i>>2]|0;else a=i}else a=A;if(!f){i=0;n=A;a=C;f=C;p=198}else{n=A;i=0;v=a;s=0;p=64}}}while(0);r:do{if((p|0)==64){i:do{if((t[(t[y>>2]|0)+4>>2]|0)==4?(k=t[(t[D>>2]|0)+24>>2]|0,!((r&516|0)==0|(k|0)==0)):0){A=(L|0)<0;o=(Z|0)<0;u=(G|0)==0;b=(Z|0)<1;w=0-L|0;c=0;a=f;while(1){if((c|0)>=(k|0)){a=C;c=C;o=0;break}if(A)l=t[a+8>>2]|0;else l=a+w|0;l=l+I|0;if(o)l=t[l>>2]|0;do{if(u)if(b){l=e1(v,l)|0;break}else{l=F4(v,l,Z)|0;break}else l=Q5[G&127](e,v,l,Q)|0}while(0);if(!l){p=80;break}t[d+(c<<2)>>2]=l;a=t[((l|0)<0?a+4|0:a)>>2]|0;if(!a){i=0;break e}else c=c+1|0}if((p|0)==80)if(A){i=t[a+8>>2]|0;break e}else{i=a+w|0;break e}while(1){if((o|0)>=(k|0))break i;do{if((t[d+(o<<2)>>2]|0)<0){l=f+4|0;A=t[l>>2]|0;if((t[d+((o|1)<<2)>>2]|0)<0){t[l>>2]=t[A>>2];t[A>>2]=f;t[a+4>>2]=A;a=A;f=c;l=A+4|0;break}else{t[c>>2]=A;t[a+4>>2]=f;a=f;f=A;l=A;break}}else{l=t[f>>2]|0;if((t[d+((o|1)<<2)>>2]|0)>0){w=l+4|0;t[f>>2]=t[w>>2];t[w>>2]=f;t[c>>2]=l;f=l;break}else{t[a+4>>2]=l;t[c>>2]=f;a=l;l=l+4|0;break}}}while(0);c=f;o=o+2|0;f=t[l>>2]|0}}else{a=C;c=C}}while(0);u=(L|0)<0;b=(Z|0)<0;w=(G|0)!=0;k=(Z|0)<1;d=0-L|0;l=f;i:while(1){f=l;while(1){if(u)l=t[f+8>>2]|0;else l=f+d|0;l=l+I|0;if(b)l=t[l>>2]|0;do{if(!w)if(k){l=e1(v,l)|0;break}else{l=F4(v,l,Z)|0;break}else l=Q5[G&127](e,v,l,Q)|0}while(0);if(!l){p=140;break i}if((l|0)>=0)break;A=f+4|0;o=t[A>>2]|0;if(!o){p=121;break i}if(u)l=t[o+8>>2]|0;else l=o+d|0;l=l+I|0;if(b)l=t[l>>2]|0;do{if(!w)if(k){l=e1(v,l)|0;break}else{l=F4(v,l,Z)|0;break}else l=Q5[G&127](e,v,l,Q)|0}while(0);if((l|0)>=0){p=118;break}t[A>>2]=t[o>>2];t[o>>2]=f;t[a+4>>2]=o;f=t[o+4>>2]|0;if(!f){a=o;f=c;p=198;break r}else a=o}if((p|0)==118){p=0;if(!l){p=119;break}t[c>>2]=o;t[a+4>>2]=f;l=t[o>>2]|0;if(!l){a=f;f=o;p=198;break r}else{a=f;c=o;continue}}A=t[f>>2]|0;if(!A){p=139;break}if(u)l=t[A+8>>2]|0;else l=A+d|0;l=l+I|0;if(b)l=t[l>>2]|0;do{if(!w)if(k){l=e1(v,l)|0;break}else{l=F4(v,l,Z)|0;break}else l=Q5[G&127](e,v,l,Q)|0}while(0);if((l|0)>0){l=A+4|0;t[f>>2]=t[l>>2];t[l>>2]=f;t[c>>2]=A;l=t[A>>2]|0;if(!l){f=A;p=198;break r}else{c=A;continue}}if(!l){p=137;break}t[a+4>>2]=A;t[c>>2]=f;l=t[A+4>>2]|0;if(!l){a=A;p=198;break r}else{a=A;c=f}}if((p|0)==119){t[a+4>>2]=f;a=f;f=o;p=141;break}else if((p|0)==121){t[a+4>>2]=f;a=f;f=c;p=198;break}else if((p|0)==137){t[c>>2]=f;c=f;f=A;p=141;break}else if((p|0)==139){t[c>>2]=f;p=198;break}else if((p|0)==140)if(!f){f=c;p=198;break}else{p=141;break}}}while(0);do{if((p|0)==141){t[g>>2]=t[g>>2]|32768;l=f+4|0;t[c>>2]=t[l>>2];t[a+4>>2]=t[f>>2];if(!(r&516)){if(r&8|0){t[l>>2]=t[C>>2];t[f>>2]=0;t[C>>2]=f;p=169;break}if(r&16|0){p=C+4|0;t[f>>2]=t[p>>2];t[l>>2]=0;t[p>>2]=f;p=175;break}if(!m){i=a;p=180;break A}if(r&2049|0){if(t[(t[y>>2]|0)+4>>2]&4|0){i=f;break}t[l>>2]=0;i=C+4|0;t[f>>2]=t[i>>2];t[i>>2]=f;i=f;p=205;break}if(!(r&32)){i=0;break e}if(!(t[(t[y>>2]|0)+4>>2]&4)){t[i+4>>2]=0;B=C+4|0;t[i>>2]=t[B>>2];t[B>>2]=s;i=(t[D>>2]|0)+16|0;t[i>>2]=(t[i>>2]|0)+1;i=f;break}i=t[Q+16>>2]|0;if(i|0)V5[i&127](e,n,Q);if((t[B>>2]|0)<0){Q5[t[e+12>>2]&127](e,s,0,Q)|0;i=f}else i=f}else i=f}else if((p|0)==198){t[a+4>>2]=0;t[f>>2]=0;if(!(r&8))if(!(r&16)){if(r&516|0){i=a;break A}if(!(r&2049)){if(!(r&32)){n=0;i=a;break A}B=(t[D>>2]|0)+16|0;t[B>>2]=(t[B>>2]|0)+1}else{i=0;p=205}}else p=175;else p=169}}while(0);if((p|0)==169){f=C+4|0;i=t[f>>2]|0;if(!i){i=a;break}while(1){a=i+4|0;n=t[a>>2]|0;if(!n)break;t[a>>2]=t[n>>2];t[n>>2]=i;i=n}t[f>>2]=t[i>>2]}else if((p|0)==175){i=t[C>>2]|0;if(!i){i=a;break}while(1){a=t[i>>2]|0;if(!a)break;B=a+4|0;t[i>>2]=t[B>>2];t[B>>2]=i;i=a}t[C>>2]=t[i+4>>2]}else if((p|0)==205){l=Q+12|0;f=t[l>>2]|0;s=(r&1|0)==0;if(!(s|(f|0)==0))n=L5[f&63](e,n,Q)|0;do{if(n){if((L|0)>-1){i=n+L|0;p=215;break}i=Q5[t[e+12>>2]&127](e,0,12,Q)|0;if(i|0){t[i+8>>2]=n;break}if((t[l>>2]|0)!=0?(E=t[Q+16>>2]|0,!(s|(E|0)==0)):0){V5[E&127](e,n,Q);p=215}else p=215}else p=215}while(0);if((p|0)==215)if(!i){i=a;break}a=(t[D>>2]|0)+16|0;n=t[a>>2]|0;if((n|0)>-1)t[a>>2]=n+1}t[i+4>>2]=t[C>>2];t[i>>2]=t[C+4>>2];r:do{if(!((r&516|0)==0?1:(t[(t[y>>2]|0)+4>>2]&8|0)==0)){o=(L|0)<0;if(o)a=t[i+8>>2]|0;else a=i+(0-L)|0;u=(Z|0)<0;a=a+I|0;if(u)a=t[a>>2]|0;s=(G|0)==0;c=(Z|0)<1;A=0-L|0;while(1){l=i+4|0;n=t[l>>2]|0;if(!n)break r;while(1){f=t[n>>2]|0;if(!f)break;C=f+4|0;t[n>>2]=t[C>>2];t[C>>2]=n;n=f}t[l>>2]=n;if(o)f=t[n+8>>2]|0;else f=n+A|0;f=f+I|0;if(u)f=t[f>>2]|0;do{if(s)if(c){f=e1(a,f)|0;break}else{f=F4(a,f,Z)|0;break}else f=Q5[G&127](e,a,f,Q)|0}while(0);if(f|0)break r;t[l>>2]=t[n>>2];t[n>>2]=i;i=n}}}while(0);t[(t[D>>2]|0)+4>>2]=i;if((L|0)<0){i=t[i+8>>2]|0;break e}else{i=i+(0-L)|0;break e}}}while(0);if((p|0)==180){if((L|0)<0)n=t[f+8>>2]|0;else n=f+(0-L)|0;a=t[Q+16>>2]|0;if(!((r&2|0)==0|(a|0)==0))V5[a&127](e,n,Q);if((t[B>>2]|0)<0)Q5[t[e+12>>2]&127](e,f,0,Q)|0;e=(t[D>>2]|0)+16|0;Q=t[e>>2]|0;t[e>>2]=(Q|0)<1?-1:Q+-1|0}do{a=i+4|0;i=t[a>>2]|0}while((i|0)!=0);t[a>>2]=t[C>>2];t[(t[D>>2]|0)+4>>2]=t[C+4>>2];i=r&2|0?n:0}}while(0);h=z;return i|0}function Kh(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0;if(t[t[e+8>>2]>>2]&4096|0)Th(e,0)|0;a=(A|0)!=0;if(a){if(t[t[A+8>>2]>>2]&4096|0)Th(A,0)|0;if((t[A+16>>2]|0)==(t[e+16>>2]|0)){r=A;i=7}else A=0}else{r=0;i=7}e:do{if((i|0)==7){while(1){if(!r)break;if((r|0)==(e|0)){A=0;break e}r=t[r+28>>2]|0;i=7}r=e+28|0;i=t[r>>2]|0;if(i|0){n=i+24|0;t[n>>2]=(t[n>>2]|0)+-1}t[e+32>>2]=0;t[r>>2]=0;if(a){t[r>>2]=A;t[e>>2]=28;n=A+24|0;t[n>>2]=(t[n>>2]|0)+1;break}else{t[e>>2]=t[t[e+16>>2]>>2];A=i;break}}}while(0);return A|0}function $h(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0,n=0,f=0,l=0,s=0,c=0,o=0,u=0,b=0,h=0,w=0;e:do{if(!(r&99)){if((r&516|0)==0?(i=t[(t[e+16>>2]|0)+4>>2]|0,!((r&384|0)!=0&(i&12|0)==0)):0){if(i&12|0){if(!(r&408)){i=0;break}h=(r&136|0)!=0;w=(r&272|0)!=0;o=0;a=0;i=0;b=e;while(1){if(!b)break;u=L5[t[t[b+16>>2]>>2]&63](b,A,r)|0;do{if(!u)n=o;else{f=t[b+4>>2]|0;l=t[f+4>>2]|0;s=t[f+20>>2]|0;n=u+(t[f>>2]|0)|0;if((l|0)<0)c=t[n>>2]|0;else c=n;if(i|0){do{if(!s)if((l|0)<1){n=e1(c,a)|0;break}else{n=F4(c,a,l)|0;break}else n=Q5[s&127](b,c,a,f)|0}while(0);if(!(h&(n|0)<0|w&(n|0)>0)){n=o;break}}n=b;a=c;i=u}}while(0);o=n;b=t[b+28>>2]|0}t[e+32>>2]=o;break}if(!(r&24)){i=0;break}s=e+32|0;a=t[s>>2]|0;if(a){i=t[(t[a+4>>2]|0)+8>>2]|0;n=t[(t[a+8>>2]|0)+4>>2]|0;if((i|0)<0)i=t[n+8>>2]|0;else i=n+(0-i)|0;if((i|0)==(A|0))i=A;else{a=e;f=32}}else{a=e;f=32}do{if((f|0)==32){while(1){if(!a){f=33;break}i=L5[t[t[a+16>>2]>>2]&63](a,A,4)|0;if(i|0){f=36;break}a=t[a+28>>2]|0;f=32}if((f|0)==33){t[s>>2]=0;i=0;break e}else if((f|0)==36){t[s>>2]=a;break}}}while(0);l=(r<<4&128^128)+128|0;i=L5[t[t[a+16>>2]>>2]&63](a,i,r)|0;while(1){f=a+16|0;while(1){if(!i)break;else n=e;while(1){if((n|0)==(a|0))break e;if(L5[t[t[n+16>>2]>>2]&63](n,i,4)|0)break;n=t[n+28>>2]|0}i=L5[t[t[f>>2]>>2]&63](a,i,r)|0}a=t[a+28>>2]|0;t[s>>2]=a;if(!a){i=0;break e}i=L5[t[t[a+16>>2]>>2]&63](a,0,l)|0}}else a=e;while(1){if(!a){a=0;i=0;break}i=L5[t[t[a+16>>2]>>2]&63](a,A,r)|0;if(i|0)break;a=t[a+28>>2]|0}t[e+32>>2]=a}else i=L5[t[t[e+16>>2]>>2]&63](e,A,r)|0}while(0);return i|0}function ew(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0,n=0,f=0;n=e+32|0;a=L5[t[e>>2]&63](e,0,128)|0;do{if(!a){i=0;break}f=t[n>>2]|0;i=a;a=L5[t[e>>2]&63](e,a,8)|0;i=L5[A&63]((f|0)==0?e:f,i,r)|0}while((i|0)>=0);return i|0}function Aw(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0,n=0,f=0,l=0,s=0,c=0,o=0,u=0,b=0;a=e+4|0;b=t[a>>2]|0;e:do{if(b)if(A){u=t[t[e+16>>2]>>2]|0;n=e+8|0;if(t[t[n>>2]>>2]&4096|0)Th(e,0)|0;i=t[b+32>>2]|0;if(i|0?(Q5[i&127](e,3,A,b)|0)<0:0){A=0;break}t[a>>2]=A;i=t[A+28>>2]|0;t[e+12>>2]=(i|0)==0?52:i;i=t[t[n>>2]>>2]|0;if(!(i&112)){do{if(!(i&2))if(!(i&3))if(!(r&1))break;else{A=b;break e}else if((r&3|0)==3){A=b;break e}else break;else if(r&2|0){A=b;break e}}while(0);f=Sh(e)|0;i=t[n>>2]|0;o=t[i>>2]|0;t[i>>2]=o&-4097;t[i+4>>2]=0;t[i+16>>2]=0;A:do{if(o&3|0){o=t[i+8>>2]|0;a=o+(t[i+12>>2]<<2)|0;i=o;while(1){if(i>>>0>=a>>>0)break A;t[i>>2]=0;i=i+4|0}}}while(0);l=(r&2|0)==0;s=A+8|0;c=A+4|0;o=A+24|0;while(1){if(!f){A=b;break e}r=t[f>>2]|0;if(l){i=t[s>>2]|0;if((i|0)<0)i=t[f+8>>2]|0;else i=f+(0-i)|0;n=t[c>>2]|0;i=i+(t[A>>2]|0)|0;if((n|0)<0)i=t[i>>2]|0;a=t[o>>2]|0;if(!a)i=iw(0,i,n)|0;else i=L5[a&63](e,i,A)|0;t[f+4>>2]=i}L5[u&63](e,f,32)|0;f=r}}else A=b}else A=b;else{t[a>>2]=A;b=t[A+28>>2]|0;t[e+12>>2]=(b|0)==0?52:b}}while(0);return A|0}function rw(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;e=(r|0)==0;do{if(!A)if(e)e=0;else e=Z2(r)|0;else if(e){G2(A);e=0;break}else{e=Q2(A,r)|0;break}}while(0);return e|0}function iw(e,A,r){e=e|0;A=A|0;r=r|0;var a=0,t=0,f=0;t=A;if((r|0)>=1){f=A+r+-1|0;t=(f>>>0
>>0?A:f)+(1-t)&-2;a=A;while(1){if(a>>>0>=f>>>0)break;e=P(((n[a>>0]|0)<<8)+e+(n[a+1>>0]|0)|0,17109811)|0;a=a+2|0}a=A+t|0;if(a>>>0>f>>>0)A=r;else{A=r;e=P(((n[a>>0]|0)<<8)+e|0,17109811)|0}}else{while(1){a=i[A>>0]|0;if(!(a<<24>>24))break;f=i[A+1>>0]|0;r=P(((a&255)<<8)+e+(f&255)|0,17109811)|0;e=r;A=A+(f<<24>>24?2:1)|0}A=A-t|0}return P(e+A|0,17109811)|0}function aw(e){e=e|0;var A=0;A=t[46935]|0;t[46935]=e;return A|0}function tw(e){e=e|0;var A=0;A=t[46936]|0;t[46936]=e;return A|0}function nw(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0;i=h;h=h+16|0;a=i;t[a>>2]=r;r=fw(e,A,a)|0;h=i;return r|0}function fw(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0,n=0,f=0,l=0;n=h;h=h+16|0;i=n;a=(e|0)==3;f=a?t[46938]|0:(e|0)==2?1:e;t[46938]=f;l=t[46939]|0;t[46939]=l>>>0>f>>>0?l:f;do{if(f>>>0<(t[46936]|0)>>>0){e=t[46937]|0;if(!e){e=c6()|0;t[46937]=e;if(!e){e=1;break}}if(!a){b6(e)|0;e=t[46937]|0}w4(e,A,r)|0;e=0}else{if(t[46935]|0){lw(e,A,r);e=0;break}if(a)e=t[15712]|0;else{l=t[15712]|0;t[i>>2]=(e|0)==1?96349:96355;a3(l,96363,i)|0;e=l}w4(e,A,r)|0;e=0}}while(0);h=n;return e|0}function lw(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0;if((t[46940]|0)==0?(a=Z2(t[4590]|0)|0,t[46940]=a,(a|0)==0):0)Z3(96368,t[15712]|0)|0;else i=4;do{if((i|0)==4){if((e|0)!=3){I5[t[46935]&63]((e|0)==1?96349:96355)|0;I5[t[46935]&63](97027)|0}while(1){e=h4(t[46940]|0,t[4590]|0,A,r)|0;i=t[4590]|0;if((e|0)>-1&(e|0)<(i|0)){i=7;break}i=i<<1;a=e+1|0;a=(i|0)>(a|0)?i:a;t[4590]=a;if(!(Q2(t[46940]|0,a)|0)){i=9;break}}if((i|0)==7){I5[t[46935]&63](t[46940]|0)|0;break}else if((i|0)==9){Z3(96368,t[15712]|0)|0;break}}}while(0);return}function sw(e,A){e=e|0;A=A|0;var r=0,i=0;r=h;h=h+16|0;i=r;t[i>>2]=A;fw(1,e,i)|0;h=r;return}function cw(e,A,r){e=e|0;A=A|0;r=r|0;var a=0;if(!r){r=(A|0)==0?1024:A;A=r;r=Z2(r)|0;a=1}else a=0;t[e+12>>2]=a;t[e>>2]=r;t[e+8>>2]=r+A;t[e+4>>2]=r;i[r>>0]=0;return}function ow(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0,f=0,l=0;f=e+8|0;a=t[e>>2]|0;n=(t[f>>2]|0)-a|0;i=n<<1;n=n+A|0;i=n>>>0>i>>>0?n:i;n=e+4|0;A=a;a=(t[n>>2]|0)-a|0;r=e+12|0;if(!(t[r>>2]|0)){l=Z2(i)|0;Q6(l|0,A|0,a|0)|0;t[r>>2]=1;A=l}else A=Q2(A,i)|0;t[e>>2]=A;t[n>>2]=A+a;t[f>>2]=A+i;return 0}function uw(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0;a=e+4|0;i=t[a>>2]|0;if((i+r|0)>>>0>(t[e+8>>2]|0)>>>0){ow(e,r)|0;i=t[a>>2]|0}Q6(i|0,A|0,r|0)|0;t[a>>2]=(t[a>>2]|0)+r;return r|0}function bw(e,A){e=e|0;A=A|0;return uw(e,A,U2(A)|0)|0}function hw(e){e=e|0;if(t[e+12>>2]|0)G2(t[e>>2]|0);return}function ww(e){e=e|0;var A=0,r=0;A=e+4|0;r=t[A>>2]|0;if(r>>>0>(t[e>>2]|0)>>>0){t[A>>2]=r+-1;e=n[r>>0]|0}else e=-1;return e|0}function kw(e,A,r){e=e|0;A=A|0;r=r|0;fv(t[46942]|0,t[A+8>>2]|0)|0;fv(t[46942]|0,t[A+12>>2]|0)|0;ad(t[46942]|0,A);return}function dw(e,A){e=e|0;A=A|0;var r=0;r=Pd(e,96416,0)|0;if((A|0)!=0&(r|0)==0){vw(e);r=Pd(e,96416,0)|0}return r|0}function vw(e){e=e|0;var A=0,r=0,i=0;i=yd(e)|0;Zg(i,i,107,0,1)|0;r=sd(i)|0;while(1){if(!r)break;mw(e,r);A=Ow(i,r)|0;while(1){if(!A)break;pw(e,A);A=qw(i,A)|0}r=cd(i,r)|0}return}function gw(e){e=e|0;var A=0;A=e+24|0;i[A>>0]=i[A>>0]|64;Iw(e);A=Hv(e)|0;Bw((A|0)==0?e:A,e);return}function mw(e,A){e=e|0;A=A|0;var r=0;r=Ew(A)|0;if(!((r|0)!=0?(t[r+8>>2]|0)!=0:0))Bw(e,A);return}function pw(e,A){e=e|0;A=A|0;var r=0;r=Ew(A)|0;if(!((r|0)!=0?(t[r+8>>2]|0)!=0:0))Bw(e,A);return}function Ew(e){e=e|0;return Pd(e,96404,0)|0}function Bw(e,A){e=e|0;A=A|0;var r=0,i=0,a=0;r=Sd(A,96404,16,0)|0;a=yw(e,t[A>>2]&3)|0;i=r+8|0;e:do{if(!(t[i>>2]|0)){e=yd(e)|0;t[i>>2]=yw(e,t[A>>2]&3)|0;e=Cw(A)|0;r=r+12|0;t[r>>2]=id(Bd(A)|0,((e|0)>4?e:4)<<2)|0;e=L5[t[a>>2]&63](a,0,128)|0;while(1){if(!e)break e;i=Bd(A)|0;i=tv(i,t[e+12>>2]|0)|0;t[(t[r>>2]|0)+(t[e+16>>2]<<2)>>2]=i;e=L5[t[a>>2]&63](a,e,8)|0}}}while(0);return}function yw(e,A){e=e|0;A=A|0;var r=0,i=0;i=h;h=h+16|0;r=i;e=dw(e,0)|0;e:do{if(!e)e=0;else switch(A|0){case 0:{e=t[e+16>>2]|0;break e}case 1:{e=t[e+8>>2]|0;break e}case 2:case 3:{e=t[e+12>>2]|0;break e}default:{t[r>>2]=A;nw(1,96429,r)|0;e=0;break e}}}while(0);h=i;return e|0}function Cw(e){e=e|0;var A=0;A=yd(Bd(e)|0)|0;e=yw(A,t[e>>2]&3)|0;if(!e)e=0;else e=Oh(e)|0;return e|0}function Iw(e){e=e|0;var A=0,r=0,i=0,a=0;r=Sd(e,96416,20,0)|0;i=r+8|0;t[i>>2]=jv(e,18364,t[4589]|0)|0;a=r+12|0;t[a>>2]=jv(e,18364,t[4589]|0)|0;r=r+16|0;t[r>>2]=jv(e,18364,t[4589]|0)|0;A=Hv(e)|0;if(!A){A=t[46941]|0;if(!((A|0)==0|(A|0)==(e|0))){A=dw(A,0)|0;Zw(t[A+8>>2]|0,t[i>>2]|0,e,1);Zw(t[A+12>>2]|0,t[a>>2]|0,e,2);Zw(t[A+16>>2]|0,t[r>>2]|0,e,0)}}else{e=dw(A,0)|0;Kh(t[i>>2]|0,t[e+8>>2]|0)|0;Kh(t[a>>2]|0,t[e+12>>2]|0)|0;Kh(t[r>>2]|0,t[e+16>>2]|0)|0}return}function Zw(e,A,r,a){e=e|0;A=A|0;r=r|0;a=a|0;var n=0,f=0;n=L5[t[e>>2]&63](e,0,128)|0;while(1){if(!n)break;f=Gw(r,t[n+8>>2]|0,t[n+12>>2]|0,t[n+16>>2]|0,a)|0;i[f+22>>0]=i[n+22>>0]|0;i[f+21>>0]=i[n+21>>0]|0;L5[t[A>>2]&63](A,f,1)|0;n=L5[t[e>>2]&63](e,n,8)|0}return}function Gw(e,A,r,a,n){e=e|0;A=A|0;r=r|0;a=a|0;n=n|0;var f=0;f=id(e,24)|0;i[f+20>>0]=n;t[f+8>>2]=tv(e,A)|0;t[f+12>>2]=tv(e,r)|0;t[f+16>>2]=a;return f|0}function Lw(e,A){e=e|0;A=A|0;var r=0,i=0;r=h;h=h+32|0;i=r;t[i+8>>2]=A;A=L5[t[e>>2]&63](e,i,4)|0;h=r;return A|0}function Qw(e,A){e=e|0;A=A|0;var r=0;r=Kh(e,0)|0;A=Lw(e,A)|0;Kh(e,r)|0;return A|0}function Dw(e,A){e=e|0;A=A|0;e=Ew(e)|0;if(!e)e=0;else e=Lw(t[e+8>>2]|0,A)|0;return e|0}function zw(e,A,r,a){e=e|0;A=A|0;r=r|0;a=a|0;var n=0,f=0;f=h;h=h+16|0;n=f;if(!e){e=t[46941]|0;if(!e){i[n>>0]=i[18400]|0;i[n+1>>0]=i[18401]|0;i[n+2>>0]=i[18402]|0;i[n+3>>0]=i[18403]|0;e=hk(0,n,0)|0;t[46941]=e}}if(!a)e=Yw(e,A,r)|0;else e=Ww(e,A,r,a)|0;h=f;return e|0}function Ww(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0,n=0,f=0,l=0;l=yd(e)|0;dw(e,1)|0;n=yw(e,A)|0;a=Qw(n,r)|0;e:do{if(!a){a=Lw(n,r)|0;if(a|0){a=Gw(e,r,i,t[a+16>>2]|0,A)|0;L5[t[n>>2]&63](n,a,1)|0;f=16;break}n=yw(l,A)|0;a=Gw(e,r,i,Oh(n)|0,A)|0;L5[t[n>>2]&63](n,a,1)|0;switch(A|0){case 0:{Zg(l,l,57,a,1)|0;f=16;break e}case 1:{r=sd(l)|0;while(1){if(!r){f=16;break e}Fw(e,r,a);r=cd(l,r)|0}}case 2:case 3:{n=sd(l)|0;while(1){if(!n){f=16;break e}r=Ow(l,n)|0;while(1){if(!r)break;Fw(e,r,a);r=qw(l,r)|0}n=cd(l,n)|0}}default:break e}}else{f=a+12|0;fv(e,t[f>>2]|0)|0;t[f>>2]=tv(e,i)|0;f=16}}while(0);if((f|0)==16)if((A|0)==0&(a|0)!=0)Mw(e,a,i)|0;Zd(e,e,a);return a|0}function Yw(e,A,r){e=e|0;A=A|0;r=r|0;e=yw(e,A)|0;if(!e)e=0;else e=Lw(e,r)|0;return e|0}function Fw(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0,n=0;A=Ew(A)|0;a=r+16|0;i=t[a>>2]|0;if((i|0)>3){n=t[e+64>>2]|0;A=A+12|0;i=i<<2;t[A>>2]=Q5[t[(t[n>>2]|0)+8>>2]&127](t[n+12>>2]|0,t[A>>2]|0,i,i+4|0)|0}else A=A+12|0;n=tv(e,t[r+12>>2]|0)|0;t[(t[A>>2]|0)+(t[a>>2]<<2)>>2]=n;return}function Mw(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0,n=0,f=0,l=0;f=Bd(e)|0;n=(Ew(e)|0)+12|0;l=A+16|0;fv(f,t[(t[n>>2]|0)+(t[l>>2]<<2)>>2]|0)|0;a=tv(f,r)|0;t[(t[n>>2]|0)+(t[l>>2]<<2)>>2]=a;do{if(!(t[e>>2]&3)){i=t[(dw(f,0)|0)+16>>2]|0;a=A+8|0;n=Qw(i,t[a>>2]|0)|0;if(!n){l=Gw(f,t[a>>2]|0,r,t[l>>2]|0,t[e>>2]&3)|0;L5[t[i>>2]&63](i,l,1)|0;break}else{l=n+12|0;fv(f,t[l>>2]|0)|0;t[l>>2]=tv(f,r)|0;break}}}while(0);Zd(f,e,A);return 0}function Vw(e,A,r){e=e|0;A=A|0;r=r|0;e=yw(e,A)|0;do{if(e){A=t[e>>2]|0;if(!r){e=L5[A&63](e,0,128)|0;break}else{e=L5[A&63](e,r,8)|0;break}}else e=0}while(0);return e|0}function Nw(e){e=e|0;var A=0;t[46942]=e;A=Ew(e)|0;if(A|0){Rw(e,A);Ud(e,t[A>>2]|0)|0}A=dw(e,0)|0;if(A)if(((Tv(e,t[A+8>>2]|0)|0)==0?(Tv(e,t[A+12>>2]|0)|0)==0:0)?(Tv(e,t[A+16>>2]|0)|0)==0:0){Ud(e,t[A>>2]|0)|0;A=0}else A=1;else A=0;return A|0}function Rw(e,A){e=e|0;A=A|0;var r=0,i=0,a=0;a=Bd(e)|0;i=Cw(e)|0;A=A+12|0;e=0;while(1){r=t[A>>2]|0;if((e|0)>=(i|0))break;fv(a,t[r+(e<<2)>>2]|0)|0;e=e+1|0}ad(a,r);return}function xw(e){e=e|0;var A=0;A=Ew(e)|0;if(A|0){Rw(e,A);Ud(e,96404)|0}return}function Jw(e){e=e|0;var A=0;A=Ew(e)|0;if(A|0){Rw(e,A);Ud(e,96404)|0}return}function Hw(e,A){e=e|0;A=A|0;A=Dw(e,A)|0;if(!A)A=0;else{e=t[(Ew(e)|0)+12>>2]|0;A=t[e+(t[A+16>>2]<<2)>>2]|0}return A|0}function Pw(e,A){e=e|0;A=A|0;e=t[(Ew(e)|0)+12>>2]|0;return t[e+(t[A+16>>2]<<2)>>2]|0}function Xw(e,A,r){e=e|0;A=A|0;r=r|0;A=Dw(e,A)|0;if(!A)A=-1;else{Mw(e,A,r)|0;A=0}return A|0}function Sw(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0;a=Bd(e)|0;a=zw(a,t[e>>2]&3,A,0)|0;if(!a){a=Bd(e)|0;a=zw(a,t[e>>2]&3,A,i)|0}Mw(e,a,r)|0;return 0}function jw(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0;n=Bd(e)|0;a=t[e>>2]|0;e:do{if(!((t[A>>2]^a)&3)){r=1;i=0;while(1){i=Vw(n,a&3,i)|0;if(!i)break e;r=Dw(A,t[i+8>>2]|0)|0;if(!r){r=1;break e}a=Pw(e,i)|0;Mw(A,r,a)|0;if(lv(a)|0)sv(Pw(A,r)|0);r=0;a=t[e>>2]|0}}else r=1}while(0);return r|0}function Uw(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0,n=0;e=t[A+40>>2]|0;a=t[r+40>>2]|0;if((e|0)==(a|0)){i=(t[A>>2]|0)>>>4;e=(t[r>>2]|0)>>>4;if(i>>>0>=e>>>0)if(i>>>0>e>>>0)e=1;else n=6;else e=-1}else{i=(t[e>>2]|0)>>>4;e=(t[a>>2]|0)>>>4;if(i>>>0>=e>>>0)if(i>>>0>e>>>0)e=1;else n=6;else e=-1}if((n|0)==6)e=0;return e|0}function Tw(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0,n=0,f=0,l=0;e=(t[A+40>>2]|0)+8|0;n=t[e>>2]|0;e=t[e+4>>2]|0;a=(t[r+40>>2]|0)+8|0;i=t[a>>2]|0;a=t[a+4>>2]|0;do{if(!(e>>>0>>0|(e|0)==(a|0)&n>>>0>>0))if(e>>>0>a>>>0|(e|0)==(a|0)&n>>>0>i>>>0)e=1;else{i=A+8|0;e=t[i>>2]|0;i=t[i+4>>2]|0;if(!((e|0)==0&(i|0)==0)?(l=r+8|0,f=t[l>>2]|0,l=t[l+4>>2]|0,!((f|0)==0&(l|0)==0)):0){if(i>>>0>>0|(i|0)==(l|0)&e>>>0>>0){e=-1;break}if(i>>>0>l>>>0|(i|0)==(l|0)&e>>>0>f>>>0){e=1;break}}e=0}else e=-1}while(0);return e|0}function Ow(e,A){e=e|0;A=A|0;var r=0;A=_w(e,A)|0;if(!A)A=0;else{r=e+44|0;e=A+32|0;Th(t[r>>2]|0,t[e>>2]|0)|0;A=t[r>>2]|0;A=L5[t[A>>2]&63](A,0,128)|0;t[e>>2]=Xh(t[r>>2]|0)|0}return A|0}function _w(e,A){e=e|0;A=A|0;var r=0,i=0;i=h;h=h+48|0;r=i;if((t[A+24>>2]|0)==(e|0))e=A+28|0;else{t[r+16>>2]=A;e=t[e+40>>2]|0;e=L5[t[e>>2]&63](e,r,4)|0}h=i;return e|0}function qw(e,A){e=e|0;A=A|0;var r=0,i=0;r=_w(e,t[((t[A>>2]&3|0)==3?A:A+48|0)+40>>2]|0)|0;if(!r)e=0;else{i=e+44|0;r=r+32|0;Th(t[i>>2]|0,t[r>>2]|0)|0;e=t[i>>2]|0;e=L5[t[e>>2]&63](e,A,8)|0;t[r>>2]=Xh(t[i>>2]|0)|0}return e|0}function Kw(e,A){e=e|0;A=A|0;var r=0;A=_w(e,A)|0;if(!A)A=0;else{r=e+44|0;e=A+28|0;Th(t[r>>2]|0,t[e>>2]|0)|0;A=t[r>>2]|0;A=L5[t[A>>2]&63](A,0,128)|0;t[e>>2]=Xh(t[r>>2]|0)|0}return A|0}function $w(e,A){e=e|0;A=A|0;var r=0,i=0;r=_w(e,t[((t[A>>2]&3|0)==2?A:A+-48|0)+40>>2]|0)|0;if(!r)e=0;else{i=e+44|0;r=r+28|0;Th(t[i>>2]|0,t[r>>2]|0)|0;e=t[i>>2]|0;e=L5[t[e>>2]&63](e,A,8)|0;t[r>>2]=Xh(t[i>>2]|0)|0}return e|0}function ek(e,A){e=e|0;A=A|0;var r=0;r=Ow(e,A)|0;if(!r)r=Kw(e,A)|0;return r|0}function Ak(e,A,r){e=e|0;A=A|0;r=r|0;e:do{if((t[A>>2]&3|0)==2){A=qw(e,A)|0;if(!A){A=0;do{if(!A)A=Kw(e,r)|0;else A=$w(e,A)|0;if(!A){A=0;break e}}while((t[A+40>>2]|0)==(r|0))}}else do{A=$w(e,A)|0;if(!A){A=0;break e}}while((t[A+40>>2]|0)==(r|0))}while(0);return A|0}function rk(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0,f=0;f=h;h=h+32|0;i=f+16|0;a=f;if((Ck(e)|0)!=0?(t[a>>2]=0,t[a+4>>2]=0,t[a+8>>2]=0,t[a+12>>2]=0,t[i>>2]=t[a>>2],t[i+4>>2]=t[a+4>>2],t[i+8>>2]=t[a+8>>2],t[i+12>>2]=t[a+12>>2],(nk(e,A,r,i)|0)!=0):0)i=0;else i=((n[e+24>>0]|0)>>>2&1^1)&255|(A|0)!=(r|0);h=f;return i|0}function ik(e,A){e=e|0;A=A|0;tk(e,A);return}function ak(e,A,r,a,n){e=e|0;A=A|0;r=r|0;a=a|0;n=n|0;var f=0,l=0,s=0,c=0,o=0,u=0;hd(e,A,1)|0;hd(e,r,1)|0;f=id(e,96)|0;l=f+48|0;o=dk(e,2)|0;s=t[l>>2]|0;c=t[f>>2]|0;u=f+8|0;t[u>>2]=a;t[u+4>>2]=n;u=f+56|0;t[u>>2]=a;t[u+4>>2]=n;n=o<<4;t[f>>2]=c&12|n|2;t[l>>2]=s&12|n|3;t[f+88>>2]=A;t[f+40>>2]=r;tk(e,f);if(i[e+24>>0]&64){Sd(f,96404,16,0)|0;pw(e,f)}Cd(e,f);return f|0}function tk(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0,f=0,l=0,s=0,c=0,o=0;l=h;h=h+16|0;r=l;f=t[A>>2]&3;n=(f|0)==2?A:A+-48|0;f=(f|0)==3?A:A+48|0;i=t[f+40>>2]|0;a=t[n+40>>2]|0;while(1){if(!e)break;t[r>>2]=t[A>>2];t[r+4>>2]=t[A+4>>2];t[r+8>>2]=t[A+8>>2];t[r+12>>2]=t[A+12>>2];if(nk(e,i,a,r)|0)break;s=_w(e,i)|0;o=e+44|0;fk(t[o>>2]|0,s+32|0,n);c=e+48|0;fk(t[c>>2]|0,s+24|0,n);s=_w(e,a)|0;fk(t[o>>2]|0,s+28|0,f);fk(t[c>>2]|0,s+20|0,f);e=Hv(e)|0}h=l;return}function nk(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0,n=0,f=0;f=h;h=h+48|0;a=f;if(!((A|0)==0|(r|0)==0)?(t[a>>2]=t[i>>2],t[a+4>>2]=t[i+4>>2],t[a+8>>2]=t[i+8>>2],t[a+12>>2]=t[i+12>>2],t[a+40>>2]=A,n=_w(e,r)|0,(n|0)!=0):0){i=e+48|0;n=n+20|0;Th(t[i>>2]|0,t[n>>2]|0)|0;e=t[i>>2]|0;e=L5[t[e>>2]&63](e,a,4)|0;t[n>>2]=Xh(t[i>>2]|0)|0}else e=0;h=f;return e|0}function fk(e,A,r){e=e|0;A=A|0;r=r|0;Th(e,t[A>>2]|0)|0;L5[t[e>>2]&63](e,r,1)|0;t[A>>2]=Xh(e)|0;return}function lk(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;var n=0,f=0,l=0,s=0,c=0,o=0,u=0,b=0;u=h;h=h+48|0;l=u+24|0;c=u+16|0;s=u;do{if(!(Wk(e,2,i,c,0)|0))if(!i){if(a|0?(Ck(e)|0)==0:0){o=18;break}t[s>>2]=0;t[s+4>>2]=0;t[s+8>>2]=0;t[s+12>>2]=0;o=7}else o=17;else{b=s;t[b>>2]=0;t[b+4>>2]=0;b=c;n=t[b+4>>2]|0;o=s+8|0;t[o>>2]=t[b>>2];t[o+4>>2]=n;t[s>>2]=2;o=7}}while(0);e:do{if((o|0)==7){t[l>>2]=t[s>>2];t[l+4>>2]=t[s+4>>2];t[l+8>>2]=t[s+8>>2];t[l+12>>2]=t[s+12>>2];n=nk(e,A,r,l)|0;A:do{if(!n){if(yk(e)|0?(t[l>>2]=t[s>>2],t[l+4>>2]=t[s+4>>2],t[l+8>>2]=t[s+8>>2],t[l+12>>2]=t[s+12>>2],f=nk(e,r,A,l)|0,f|0):0){n=f;break}do{if(a|0){n=yd(e)|0;t[l>>2]=t[s>>2];t[l+4>>2]=t[s+4>>2];t[l+8>>2]=t[s+8>>2];t[l+12>>2]=t[s+12>>2];n=nk(n,A,r,l)|0;if(!n){if(!(yk(e)|0))break;n=yd(e)|0;t[l>>2]=t[s>>2];t[l+4>>2]=t[s+4>>2];t[l+8>>2]=t[s+8>>2];t[l+12>>2]=t[s+12>>2];n=nk(n,r,A,l)|0;if(!n)break}ik(e,n);break A}}while(0);o=17;break e}}while(0)}}while(0);if((o|0)==17)if(!a)n=0;else o=18;if((o|0)==18)if((rk(e,A,r)|0)!=0?(Wk(e,2,i,c,1)|0)!=0:0){n=c;n=ak(e,A,r,t[n>>2]|0,t[n+4>>2]|0)|0;Vk(e,2,n)}else n=0;h=u;return n|0}function sk(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0,n=0,f=0;r=(t[A>>2]&3|0)==3;n=r?A+-48|0:A;r=r?A:A+48|0;A=t[n+40>>2]|0;f=_w(e,t[r+40>>2]|0)|0;a=e+44|0;ck(t[a>>2]|0,f+32|0,n);i=e+48|0;ck(t[i>>2]|0,f+24|0,n);A=_w(e,A)|0;ck(t[a>>2]|0,A+28|0,r);ck(t[i>>2]|0,A+20|0,r);return}function ck(e,A,r){e=e|0;A=A|0;r=r|0;Th(e,t[A>>2]|0)|0;L5[t[e>>2]&63](e,r,2)|0;t[A>>2]=Xh(e)|0;return}function ok(e,A){e=e|0;A=A|0;var r=0,a=0,n=0,f=0;r=h;h=h+16|0;a=r;A=(t[A>>2]&3|0)==2?A:A+-48|0;n=t[A>>2]&3;f=t[((n|0)==3?A:A+48|0)+40>>2]|0;n=t[((n|0)==2?A:A+-48|0)+40>>2]|0;t[a>>2]=t[A>>2];t[a+4>>2]=t[A+4>>2];t[a+8>>2]=t[A+8>>2];t[a+12>>2]=t[A+12>>2];if(nk(e,f,n,a)|0){if((yd(e)|0)==(e|0)){if(i[e+24>>0]&64)Jw(A);Ld(e,A);$d(A);f=A+8|0;Fk(e,2,t[f>>2]|0,t[f+4>>2]|0)}if(!(Zg(e,A,58,0,0)|0))if((yd(e)|0)==(e|0)){ad(e,A);A=0}else A=0;else A=-1}else A=-1;h=r;return A|0}function uk(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0,n=0,f=0;f=h;h=h+16|0;i=f;a=hd(e,t[((t[A>>2]&3|0)==3?A:A+48|0)+40>>2]|0,r)|0;n=hd(e,t[((t[A>>2]&3|0)==2?A:A+-48|0)+40>>2]|0,r)|0;do{if((a|0)!=0&(n|0)!=0){t[i>>2]=t[A>>2];t[i+4>>2]=t[A+4>>2];t[i+8>>2]=t[A+8>>2];t[i+12>>2]=t[A+12>>2];i=nk(e,a,n,i)|0;a=(i|0)==0;if(!((r|0)!=0&a)){if(a)break}else{tk(e,A);i=A}r=t[i>>2]&3;h=f;return((r|0)==(t[A>>2]&3|0)?i:i+(((r|0)==3?-1:1)*48|0)|0)|0}}while(0);h=f;return 0}function bk(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;A=A+8|0;i=r+8|0;i=v6(t[A>>2]|0,t[A+4>>2]|0,t[i>>2]|0,t[i+4>>2]|0)|0;return((i|0)==0?0:i>>31|1)|0}function hk(e,A,r){e=e|0;A=A|0;r=r|0;var a=0,n=0,f=0,l=0,s=0,c=0;f=h;h=h+16|0;n=f;s=wk(r)|0;a=Z5[t[(t[s>>2]|0)+4>>2]&127](t[s+12>>2]|0,72)|0;t[a>>2]=t[a>>2]&-4;l=a+64|0;t[l>>2]=s;c=a+24|0;A=t[A>>2]|0;t[c>>2]=A;i[c>>0]=A&255|8;t[a+60>>2]=a;r=Z5[t[t[s+4>>2]>>2]&127](a,r)|0;t[(t[l>>2]|0)+16>>2]=r;if(Wk(a,0,e,n,1)|0){l=n;s=t[l+4>>2]|0;c=a+8|0;t[c>>2]=t[l>>2];t[c+4>>2]=s}c=kk(a)|0;Vk(c,0,a);h=f;return c|0}function wk(e){e=e|0;var A=0,r=0,a=0,n=0;A=(e|0)!=0;if(A){r=t[e>>2]|0;r=(r|0)==0?18736:r}else r=18736;n=I5[t[r>>2]&63](e)|0;a=Z5[t[r+4>>2]&127](n,80)|0;t[a>>2]=r;t[a+12>>2]=n;if(A){n=t[e+4>>2]|0;t[a+4>>2]=(n|0)==0?18612:n;e=t[e+8>>2]|0;e=(e|0)==0?18712:e}else{t[a+4>>2]=18612;e=18712}t[a+8>>2]=e;i[a+52>>0]=1;return a|0}function kk(e){e=e|0;var A=0,r=0;t[e+36>>2]=jv(e,18792,t[4589]|0)|0;t[e+40>>2]=jv(e,18756,t[4589]|0)|0;A=(yd(e)|0)==(e|0);t[e+44>>2]=jv(e,A?18404:18440,t[4589]|0)|0;A=(yd(e)|0)==(e|0);t[e+48>>2]=jv(e,A?18476:18512,t[4589]|0)|0;t[e+52>>2]=jv(e,18548,t[4589]|0)|0;A=Hv(e)|0;if(!((A|0)!=0?(r=dk(A,0)|0,t[e>>2]=t[e>>2]&15|r<<4,r=t[A+52>>2]|0,L5[t[r>>2]&63](r,e,1)|0,!(i[A+24>>0]&64)):0))gw(e);Cd(e,e);return e|0}function dk(e,A){e=e|0;A=A|0;var r=0;r=(t[e+64>>2]|0)+24+(A<<3)|0;A=r;A=d6(t[A>>2]|0,t[A+4>>2]|0,1,0)|0;e=G;t[r>>2]=A;t[r+4>>2]=e;G=e;return A|0}function vk(e){e=e|0;var A=0,r=0,a=0,n=0;a=Hv(e)|0;n=(a|0)==0;if(n?(A=e+64|0,(t[(t[t[A>>2]>>2]|0)+16>>2]|0)!=0):0){Ld(e,e);n=e+8|0;Fk(e,0,t[n>>2]|0,t[n+4>>2]|0);A=t[A>>2]|0;F5[t[(t[A>>2]|0)+16>>2]&127](t[A+12>>2]|0);A=0}else r=4;do{if((r|0)==4){A=xv(e)|0;while(1){if(!A)break;r=Jv(A)|0;vk(A)|0;A=r}A=sd(e)|0;while(1){if(!A)break;r=cd(e,A)|0;pd(e,A)|0;A=r}jk(e);Ld(e,e);if(((((Tv(e,t[e+40>>2]|0)|0)==0?(Tv(e,t[e+36>>2]|0)|0)==0:0)?(Tv(e,t[e+48>>2]|0)|0)==0:0)?(Tv(e,t[e+44>>2]|0)|0)==0:0)?(Tv(e,t[e+52>>2]|0)|0)==0:0){if(i[e+24>>0]&64?Nw(e)|0:0){A=-1;break}$d(e);r=e+8|0;Fk(e,0,t[r>>2]|0,t[r+4>>2]|0);if(!n){Pv(a,e)|0;ad(a,e);A=0;break}A=e+64|0;while(1){r=t[A>>2]|0;a=t[r+48>>2]|0;if(!a)break;zd(e,t[a>>2]|0)|0}F5[t[(t[r+4>>2]|0)+20>>2]&127](t[r+16>>2]|0);if(!(ev(e)|0)){A=t[A>>2]|0;n=t[A+12>>2]|0;a=(t[A>>2]|0)+12|0;M5[t[a>>2]&63](n,e);M5[t[a>>2]&63](n,A);A=0}else A=-1}else A=-1}}while(0);return A|0}function gk(e){e=e|0;return Oh(t[e+40>>2]|0)|0}function mk(e){e=e|0;var A=0,r=0,i=0;A=0;r=sd(e)|0;while(1){if(!r)break;i=(pk(e,r,0,1)|0)+A|0;A=i;r=cd(e,r)|0}return A|0}function pk(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0;a=_w(e,A)|0;if(a){if(!i)A=0;else A=Ek(t[e+44>>2]|0,a+32|0)|0;if(r)A=(Ek(t[e+44>>2]|0,a+28|0)|0)+A|0}else A=0;return A|0}function Ek(e,A){e=e|0;A=A|0;var r=0;Th(e,t[A>>2]|0)|0;r=Oh(e)|0;t[A>>2]=Xh(e)|0;return r|0}function Bk(e){e=e|0;return i[e+24>>0]&1|0}function yk(e){e=e|0;return(Bk(e)|0)==0|0}function Ck(e){e=e|0;return(n[e+24>>0]|0)>>>1&1|0}function Ik(e,A){e=e|0;A=A|0;return e|0}function Zk(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;if(!r){a=1392;r=t[a>>2]|0;a=t[a+4>>2]|0;t[i>>2]=r;t[i+4>>2]=a;a=d6(r|0,a|0,2,0)|0;i=1392;t[i>>2]=a;t[i+4>>2]=G}else{if(!a)e=rv(e,r)|0;else e=tv(e,r)|0;t[i>>2]=e;t[i+4>>2]=0}return 1}function Gk(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;return 0}function Lk(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;if((r&1|0)==0&0==0)fv(e,r)|0;return}function Qk(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;return((r&1|0)==0&0==0?r:0)|0}function Dk(e){e=e|0;return}function zk(e,A,r){e=e|0;A=A|0;r=r|0;return}function Wk(e,A,r,a,n){e=e|0;A=A|0;r=r|0;a=a|0;n=n|0;var f=0,l=0,s=0;l=(r|0)!=0;do{if(l){if((i[r>>0]|0)!=37?(f=t[e+64>>2]|0,f=D5[t[(t[f+4>>2]|0)+4>>2]&127](t[f+16>>2]|0,A,r,a,n)|0,f|0):0)break;f=Nk(e,A,r,a)|0;if(!f)s=5}else s=5}while(0);if((s|0)==5)if(n){f=t[e+64>>2]|0;f=D5[t[(t[f+4>>2]|0)+4>>2]&127](t[f+16>>2]|0,A,0,a,n)|0;if(l&(f|0)!=0){s=a;Rk(e,A,r,t[s>>2]|0,t[s+4>>2]|0)}}else f=0;return f|0}function Yk(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;e=t[e+64>>2]|0;return Q5[t[(t[e+4>>2]|0)+8>>2]&127](t[e+16>>2]|0,A,r,i)|0}function Fk(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;Xk(e,A,r,i)|0;e=t[e+64>>2]|0;R5[t[(t[e+4>>2]|0)+12>>2]&31](t[e+16>>2]|0,A,r,i);return}function Mk(e){e=e|0;var A=0,r=0,i=0,a=0,n=0,f=0;f=h;h=h+16|0;n=f;r=Bd(e)|0;a=e+8|0;A=a;A=Hk(r,t[e>>2]&3,t[A>>2]|0,t[A+4>>2]|0)|0;do{if(!A){A=t[r+64>>2]|0;r=t[(t[A+4>>2]|0)+16>>2]|0;if(r|0?(i=a,i=Q5[r&127](t[A+16>>2]|0,t[e>>2]&3,t[i>>2]|0,t[i+4>>2]|0)|0,i|0):0){A=i;break}if((t[e>>2]&3|0)==2)A=0;else{i=t[a>>2]|0;a=t[a+4>>2]|0;t[n>>2]=37;A=n+8|0;t[A>>2]=i;t[A+4>>2]=a;T4(194773,96456,n)|0;A=194773}}}while(0);h=f;return A|0}function Vk(e,A,r){e=e|0;A=A|0;r=r|0;e=t[e+64>>2]|0;V5[t[(t[e+4>>2]|0)+24>>2]&127](t[e+16>>2]|0,A,r);return}function Nk(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0,n=0,f=0,l=0;l=h;h=h+32|0;f=l;A=t[(t[e+64>>2]|0)+56+(((A|0)==3?2:A)<<2)>>2]|0;if(((A|0)!=0?(a=rv(e,r)|0,(a|0)!=0):0)?(t[f+24>>2]=a,n=L5[t[A>>2]&63](A,f,4)|0,(n|0)!=0):0){r=n+16|0;f=t[r+4>>2]|0;A=i;t[A>>2]=t[r>>2];t[A+4>>2]=f;A=1}else A=0;h=l;return A|0}function Rk(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;var n=0,f=0;f=id(e,32)|0;n=f+16|0;t[n>>2]=i;t[n+4>>2]=a;t[f+24>>2]=tv(e,r)|0;i=(A|0)==3?2:A;n=e+64|0;r=t[n>>2]|0;A=t[r+56+(i<<2)>>2]|0;if(!A){a=jv(e,18640,t[4589]|0)|0;t[(t[n>>2]|0)+56+(i<<2)>>2]=a;A=t[n>>2]|0}else{a=A;A=r}A=t[A+68+(i<<2)>>2]|0;if(!A){A=jv(e,18676,t[4589]|0)|0;t[(t[n>>2]|0)+68+(i<<2)>>2]=A}L5[t[a>>2]&63](a,f,1)|0;L5[t[A>>2]&63](A,f,1)|0;return}function xk(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;e=A+16|0;A=t[e>>2]|0;e=t[e+4>>2]|0;r=r+16|0;i=t[r>>2]|0;r=t[r+4>>2]|0;return(e>>>0>r>>>0|(e|0)==(r|0)&A>>>0>i>>>0?1:(e>>>0>>0|(e|0)==(r|0)&A>>>0>>0)<<31>>31)|0}function Jk(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;A=t[A+24>>2]|0;i=t[r+24>>2]|0;return(A>>>0>i>>>0?1:(A>>>0>>0)<<31>>31)|0}function Hk(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;e=Pk(e,A,r,i)|0;if(!e)e=0;else e=t[e+24>>2]|0;return e|0}function Pk(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0,n=0;n=h;h=h+32|0;a=n;e=t[(t[e+64>>2]|0)+68+(((A|0)==3?2:A)<<2)>>2]|0;if(!e)e=0;else{A=a+16|0;t[A>>2]=r;t[A+4>>2]=i;e=L5[t[e>>2]&63](e,a,4)|0}h=n;return e|0}function Xk(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0;a=(A|0)==3?2:A;A=Pk(e,a,r,i)|0;if(!A)A=0;else{i=e+64|0;r=t[(t[i>>2]|0)+56+(a<<2)>>2]|0;L5[t[r>>2]&63](r,A,2)|0;i=t[(t[i>>2]|0)+68+(a<<2)>>2]|0;L5[t[i>>2]&63](i,A,2)|0;fv(e,t[A+24>>2]|0)|0;ad(e,A);A=1}return A|0}function Sk(e){e=e|0;var A=0,r=0,a=0,n=0,f=0,l=0;t[46942]=e;n=t[e+64>>2]|0;a=0;while(1){if((a|0)==3)break;f=n+56+(a<<2)|0;A=t[f>>2]|0;e:do{if(A|0){A=L5[t[A>>2]&63](A,0,128)|0;while(1){if(!A)break e;r=t[f>>2]|0;r=L5[t[r>>2]&63](r,A,8)|0;if((i[t[A+24>>2]>>0]|0)!=37){A=r;continue}l=A+16|0;Xk(e,a,t[l>>2]|0,t[l+4>>2]|0)|0;A=r}}}while(0);a=a+1|0}return}function jk(e){e=e|0;t[46942]=e;e=e+64|0;Uk((t[e>>2]|0)+56|0);Uk((t[e>>2]|0)+68|0);return}function Uk(e){e=e|0;var A=0,r=0,i=0;A=0;while(1){if((A|0)==3)break;r=e+(A<<2)|0;i=t[r>>2]|0;if(i|0){Ph(i)|0;t[r>>2]=0}A=A+1|0}return}function Tk(e,A,r){e=e|0;A=A|0;r=r|0;if(!(N4(A,r,e)|0))e=0;else e=U2(A)|0;return e|0}function Ok(e,A){e=e|0;A=A|0;return Z3(A,e)|0}function _k(e){e=e|0;return m3(e)|0}function qk(e){e=e|0;var A=0,r=0,i=0;A=h;h=h+32|0;i=A+12|0;r=A;t[4682]=t[4679];t[4683]=t[4680];t[i>>2]=e;t[i+4>>2]=U2(e)|0;t[i+8>>2]=0;t[r>>2]=18736;t[r+4>>2]=18612;t[r+8>>2]=18724;e=sm(i,r)|0;cv(0);h=A;return e|0}function Kk(e,A,r){e=e|0;A=A|0;r=r|0;var a=0,n=0,f=0,l=0;if((r|0)!=0?(f=e+8|0,a=t[f>>2]|0,(a|0)<(t[e+4>>2]|0)):0){l=(t[e>>2]|0)+a|0;e=0;n=i[l>>0]|0;a=A;A=l;while(1){A=A+1|0;i[a>>0]=n;e=e+1|0;if(!(n<<24>>24!=10&(e|0)<(r|0)))break;n=i[A>>0]|0;if(!(n<<24>>24))break;else a=a+1|0}t[f>>2]=(t[f>>2]|0)+e}else e=0;return e|0}function $k(e){e=e|0;return 0}function ed(e,A){e=e|0;A=A|0;e=Z2(A)|0;z6(e|0,0,A|0)|0;return e|0}function Ad(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;e=Q2(A,i)|0;if(i>>>0>r>>>0)z6(e+r|0,0,i-r|0)|0;return e|0}function rd(e,A){e=e|0;A=A|0;G2(A);return}function id(e,A){e=e|0;A=A|0;var r=0;r=h;h=h+16|0;e=t[e+64>>2]|0;e=Z5[t[(t[e>>2]|0)+4>>2]&127](t[e+12>>2]|0,A)|0;if(!e)nw(1,96462,r)|0;h=r;return e|0}function ad(e,A){e=e|0;A=A|0;if(A|0){e=t[e+64>>2]|0;M5[t[(t[e>>2]|0)+12>>2]&63](t[e+12>>2]|0,A)}return}function td(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;e=(t[A+16>>2]|0)+8|0;A=t[e>>2]|0;e=t[e+4>>2]|0;r=(t[r+16>>2]|0)+8|0;i=t[r>>2]|0;r=t[r+4>>2]|0;return(e>>>0>>0|(e|0)==(r|0)&A>>>0>>0?-1:(e>>>0>r>>>0|(e|0)==(r|0)&A>>>0>i>>>0)&1)|0}function nd(e,A,r){e=e|0;A=A|0;r=r|0;e=t[A+16>>2]|0;if((e+28|0)!=(A|0))ad(t[e+24>>2]|0,A);return}function fd(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;A=(t[t[A+16>>2]>>2]|0)>>>4;i=(t[t[r+16>>2]>>2]|0)>>>4;return(A>>>0>>0?-1:A>>>0>i>>>0&1)|0}function ld(e,A,r){e=e|0;A=A|0;r=r|0;var i=0;i=186256;t[i>>2]=A;t[i+4>>2]=r;t[46947]=186248;e=t[e+40>>2]|0;e=L5[t[e>>2]&63](e,187772,4)|0;if(!e)e=0;else e=t[e+16>>2]|0;return e|0}function sd(e){e=e|0;e=t[e+36>>2]|0;e=L5[t[e>>2]&63](e,0,128)|0;if(!e)e=0;else e=t[e+16>>2]|0;return e|0}function cd(e,A){e=e|0;A=A|0;var r=0;A=_w(e,A)|0;if((A|0)!=0?(r=t[e+36>>2]|0,r=L5[t[r>>2]&63](r,A,8)|0,(r|0)!=0):0)A=t[r+16>>2]|0;else A=0;return A|0}function od(e){e=e|0;e=t[e+36>>2]|0;e=L5[t[e>>2]&63](e,0,256)|0;if(!e)e=0;else e=t[e+16>>2]|0;return e|0}function ud(e,A){e=e|0;A=A|0;var r=0;A=_w(e,A)|0;if((A|0)!=0?(r=t[e+36>>2]|0,r=L5[t[r>>2]&63](r,A,16)|0,(r|0)!=0):0)A=t[r+16>>2]|0;else A=0;return A|0}function bd(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0,t=0;a=ld(e,A,r)|0;do{if((i|0)!=0&(a|0)==0){a=yd(e)|0;if((a|0)!=(e|0)?(t=ld(a,A,r)|0,t|0):0){hd(e,t,1)|0;a=t;break}if(!(Yk(e,1,A,r)|0))a=0;else{a=dk(e,1)|0;a=wd(e,A,r,a,G)|0;kd(e,a);dd(e,a)}}}while(0);return a|0}function hd(e,A,r){e=e|0;A=A|0;r=r|0;var i=0;i=yd(e)|0;if((i|0)==(t[A+24>>2]|0)){i=A+8|0;i=ld(e,t[i>>2]|0,t[i+4>>2]|0)|0;if((r|0)!=0&(i|0)==0){i=Hv(e)|0;if(!i)i=0;else{r=hd(i,A,r)|0;vd(e,r);return r|0}}}else i=0;return i|0}function wd(e,A,r,a,n){e=e|0;A=A|0;r=r|0;a=a|0;n=n|0;var f=0,l=0;n=id(e,64)|0;f=t[n>>2]|0;l=n+8|0;t[l>>2]=A;t[l+4>>2]=r;t[n>>2]=f&12|a<<4|1;t[n+24>>2]=yd(e)|0;if(i[(yd(e)|0)+24>>0]&64)Sd(n,96404,16,0)|0;return n|0}function kd(e,A){e=e|0;A=A|0;do{vd(e,A);e=Hv(e)|0}while((e|0)!=0);return}function dd(e,A){e=e|0;A=A|0;if(i[(yd(e)|0)+24>>0]&64)mw(e,A);Cd(e,A);return}function vd(e,A){e=e|0;A=A|0;var r=0,i=0;i=e+40|0;Oh(t[i>>2]|0)|0;if((yd(e)|0)==(e|0))r=A+28|0;else r=id(e,36)|0;t[r+16>>2]=A;i=t[i>>2]|0;L5[t[i>>2]&63](i,r,1)|0;i=t[e+36>>2]|0;L5[t[i>>2]&63](i,r,1)|0;return}function gd(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0,n=0,f=0,l=0,s=0;s=h;h=h+16|0;n=s;f=yd(e)|0;if(Wk(e,1,A,n,0)|0){i=n;i=ld(e,t[i>>2]|0,t[i+4>>2]|0)|0;if(!i)if(!((r|0)==0|(f|0)==(e|0))?(a=n,a=ld(f,t[a>>2]|0,t[a+4>>2]|0)|0,(a|0)!=0):0)i=hd(e,a,1)|0;else l=6}else l=6;if((l|0)==6)if((r|0)!=0?(Wk(e,1,A,n,1)|0)!=0:0){l=n;f=t[l>>2]|0;l=t[l+4>>2]|0;i=dk(e,1)|0;i=wd(e,f,l,i,G)|0;kd(e,i);dd(e,i);Vk(e,1,i)}else i=0;h=s;return i|0}function md(e,A,r){e=e|0;A=A|0;r=r|0;var i=0;t[46956]=A;r=ek(e,A)|0;while(1){if(!r)break;i=Ak(e,r,A)|0;sk(e,r,0);r=i}i=t[e+40>>2]|0;L5[t[i>>2]&63](i,187808,2)|0;i=t[e+36>>2]|0;L5[t[i>>2]&63](i,187808,2)|0;return}function pd(e,A){e=e|0;A=A|0;var r=0,a=0,n=0;a=A+8|0;r=a;if(ld(e,t[r>>2]|0,t[r+4>>2]|0)|0){if((yd(e)|0)==(e|0)){r=ek(e,A)|0;while(1){if(!r)break;n=Ak(e,r,A)|0;ok(e,r)|0;r=n}if(i[e+24>>0]&64)xw(A);Ld(e,A);$d(A);n=a;Fk(e,1,t[n>>2]|0,t[n+4>>2]|0)}if(!(Zg(e,A,59,0,0)|0))if((yd(e)|0)==(e|0)){ad(e,A);r=0}else r=0;else r=-1}else r=-1;return r|0}function Ed(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0,f=0;f=h;h=h+16|0;i=f;r=t[A>>2]|0;do{if(!(r&3))if((Hv(A)|0)==(e|0)){r=t[A>>2]|0;n=5;break}else{nw(1,96488,i)|0;a=-1;break}else n=5}while(0);e:do{if((n|0)==5)switch(r&3){case 1:{a=pd(e,A)|0;break e}case 2:case 3:{a=ok(e,A)|0;break e}case 0:{a=vk(A)|0;break e}default:{}}}while(0);h=f;return a|0}function Bd(e){e=e|0;var A=0;switch(t[e>>2]&3){case 2:case 3:{A=t[(t[e+40>>2]|0)+24>>2]|0;break}case 1:{A=t[e+24>>2]|0;break}case 0:{A=e;break}default:{}}return A|0}function yd(e){e=e|0;var A=0;switch(t[e>>2]&3){case 2:case 3:{A=(t[e+40>>2]|0)+24|0;break}case 1:{A=e+24|0;break}case 0:{A=e+60|0;break}default:{}}return t[A>>2]|0}function Cd(e,A){e=e|0;A=A|0;var r=0;r=t[e+64>>2]|0;if(!(i[r+52>>0]|0))Fd(e,A,100,0);else Id(e,A,t[r+48>>2]|0);return}function Id(e,A,r){e=e|0;A=A|0;r=r|0;var i=0;e:do{if(r|0){Id(e,A,t[r+8>>2]|0);switch(t[A>>2]&3){case 0:{i=t[r>>2]|0;break}case 1:{i=(t[r>>2]|0)+12|0;break}case 2:{i=(t[r>>2]|0)+24|0;break}default:break e}i=t[i>>2]|0;if(i|0)V5[i&127](e,A,t[r+4>>2]|0)}}while(0);return}function Zd(e,A,r){e=e|0;A=A|0;r=r|0;var a=0;a=t[e+64>>2]|0;if(!(i[a+52>>0]|0))Fd(e,A,101,r);else Gd(e,A,r,t[a+48>>2]|0);return}function Gd(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0;e:do{if(i|0){Gd(e,A,r,t[i+8>>2]|0);switch(t[A>>2]&3){case 0:{a=(t[i>>2]|0)+4|0;break}case 1:{a=(t[i>>2]|0)+16|0;break}case 2:{a=(t[i>>2]|0)+28|0;break}default:break e}a=t[a>>2]|0;if(a|0)R5[a&31](e,A,t[i+4>>2]|0,r)}}while(0);return}function Ld(e,A){e=e|0;A=A|0;var r=0;r=t[e+64>>2]|0;if(!(i[r+52>>0]|0))Fd(e,A,102,0);else Qd(e,A,t[r+48>>2]|0);return}function Qd(e,A,r){e=e|0;A=A|0;r=r|0;var i=0;e:do{if(r|0){Qd(e,A,t[r+8>>2]|0);switch(t[A>>2]&3){case 0:{i=(t[r>>2]|0)+8|0;break}case 1:{i=(t[r>>2]|0)+20|0;break}case 2:{i=(t[r>>2]|0)+32|0;break}default:break e}i=t[i>>2]|0;if(i|0)V5[i&127](e,A,t[r+4>>2]|0)}}while(0);return}function Dd(e,A,r){e=e|0;A=A|0;r=r|0;var i=0;i=id(e,12)|0;t[i>>2]=A;t[i+4>>2]=r;r=(t[e+64>>2]|0)+48|0;t[i+8>>2]=t[r>>2];t[r>>2]=i;return}function zd(e,A){e=e|0;A=A|0;var r=0,i=0,a=0;i=(t[e+64>>2]|0)+48|0;r=t[i>>2]|0;e:do{if(!r)r=-1;else{if((t[r>>2]|0)!=(A|0)){while(1){if(!r){r=-1;break e}i=r+8|0;a=t[i>>2]|0;if((t[a>>2]|0)==(A|0))break;else r=a}if(a)t[i>>2]=t[a+8>>2]}else t[i>>2]=t[r+8>>2];ad(e,r);r=0}}while(0);return r|0}function Wd(e,A){e=e|0;A=A|0;var r=0;r=yd(e)|0;e:do{if((r|0)==(yd(A)|0))switch(t[A>>2]&3){case 0:{while(1){if((A|0)==(e|0)){A=1;break e}A=Hv(A)|0;if(!A){A=0;break}}break}case 1:{A=A+8|0;A=(bd(e,t[A>>2]|0,t[A+4>>2]|0,0)|0)!=0;break e}default:{A=(uk(e,A,0)|0)!=0;break e}}else A=0}while(0);return A&1|0}function Yd(e){e=e|0;return t[e>>2]&3|0}function Fd(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0,t=0,n=0,f=0;f=h;h=h+16|0;n=f;t=Sd(e,96512,44,0)|0;switch(r|0){case 100:{a=Md(t,A,100)|0;if(!(Vd(a,A)|0))Nd(a,e,A,i)|0;break}case 101:{if(((Vd(Md(t,A,100)|0,A)|0)==0?(Vd(Md(t,A,102)|0,A)|0)==0:0)?(a=Md(t,A,101)|0,(Vd(a,A)|0)==0):0)Nd(a,e,A,i)|0;break}case 102:{Rd(Md(t,A,100)|0,A);Rd(Md(t,A,101)|0,A);a=Md(t,A,102)|0;if(!(Vd(a,A)|0))Nd(a,e,A,i)|0;break}default:nw(1,96524,n)|0}h=f;return}function Md(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0,n=0;n=h;h=h+16|0;i=n;e:do{switch(t[A>>2]&3){case 0:switch(r|0){case 100:{r=e+8|0;break e}case 101:{r=e+20|0;break e}case 102:{r=e+32|0;break e}default:{a=14;break e}}case 1:switch(r|0){case 100:{r=e+12|0;break e}case 101:{r=e+24|0;break e}case 102:{r=e+36|0;break e}default:{a=14;break e}}case 2:switch(r|0){case 100:{r=e+16|0;break e}case 101:{r=e+28|0;break e}case 102:{r=e+40|0;break e}default:{a=14;break e}}default:a=14}}while(0);if((a|0)==14){nw(1,96558,i)|0;r=0}e=t[r>>2]|0;if(!e){e=Bd(A)|0;e=jv(e,18828,t[4589]|0)|0;t[r>>2]=e}h=n;return e|0}function Vd(e,A){e=e|0;A=A|0;var r=0,i=0,a=0;r=h;h=h+32|0;i=r;a=xd(A)|0;A=i+8|0;t[A>>2]=a;t[A+4>>2]=G;A=L5[t[e>>2]&63](e,i,4)|0;h=r;return A|0}function Nd(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0,n=0;a=id(Bd(r)|0,32)|0;t[a+20>>2]=r;n=xd(r)|0;r=a+8|0;t[r>>2]=n;t[r+4>>2]=G;t[a+16>>2]=A;if(i|0){n=id(A,8)|0;t[a+24>>2]=n;t[n>>2]=i}L5[t[e>>2]&63](e,a,1)|0;return a|0}function Rd(e,A){e=e|0;A=A|0;A=Vd(e,A)|0;if(A|0)L5[t[e>>2]&63](e,A,2)|0;return}function xd(e){e=e|0;e=e+8|0;G=t[e+4>>2]|0;return t[e>>2]|0}function Jd(e,A,r){e=e|0;A=A|0;r=r|0;Hd(A);ad(t[A+16>>2]|0,A);return}function Hd(e){e=e|0;var A=0,r=0;A=e+16|0;e=t[e+24>>2]|0;while(1){if(!e)break;r=t[e+4>>2]|0;ad(t[A>>2]|0,e);e=r}return}function Pd(e,A,r){e=e|0;A=A|0;r=r|0;var a=0,n=0,f=0,l=0,s=0,c=0;c=h;h=h+16|0;l=c;f=t[e+16>>2]|0;a=f;while(1){if(!a){a=0;break}n=t[a>>2]|0;if((n|0)==(A|0)){s=7;break}if((i[A>>0]|0)==(i[n>>0]|0)?(e1(A,n)|0)==0:0){s=7;break}a=t[a+4>>2]|0;if((a|0)==(f|0)){a=0;break}}do{if((s|0)==7){if(!(t[e>>2]&4)){if((a|0)==(f|0)&(r|0)==0){a=f;break}Xd(e,a,r);break}if(r)if((f|0)==(a|0))a=f;else nw(1,96583,l)|0}}while(0);h=c;return a|0}function Xd(e,A,r){e=e|0;A=A|0;r=r|0;var i=0;t[e+16>>2]=A;i=t[e>>2]|0;r=r<<2&4;t[e>>2]=i&-5|r;if(i&2|0){i=(i&3|0)==3?-1:1;t[e+(i*48|0)+16>>2]=A;i=e+(i*48|0)|0;t[i>>2]=t[i>>2]&-5|r}return}function Sd(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0,n=0,f=0;f=Bd(e)|0;a=Pd(e,A,0)|0;e:do{if((r|0)!=0&(a|0)==0){r=id(f,r)|0;t[r>>2]=tv(f,A)|0;switch(t[e>>2]&3){case 0:{jd(e,r);n=r;break e}case 1:{jd(e,r);n=r;break e}case 2:case 3:{jd(e,r);n=r;break e}default:{}}}else n=a}while(0);if(i|0)Pd(e,A,1)|0;return n|0}function jd(e,A){e=e|0;A=A|0;var r=0,i=0,a=0;r=t[e+16>>2]|0;do{if(r){i=r+4|0;a=t[i>>2]|0;if((a|0)==(r|0)){t[i>>2]=A;i=r;r=A;break}else{t[A+4>>2]=a;i=A;break}}else{i=A;r=A}}while(0);t[r+4>>2]=i;if(!(t[e>>2]&4))Xd(e,A,0);return}function Ud(e,A){e=e|0;A=A|0;var r=0,i=0;i=Bd(e)|0;r=Pd(e,A,0)|0;if(!r)A=-1;else{Td(e,r);if(!(t[e>>2]&3)){Od(i,e,r);A=r}else{Zg(yd(i)|0,e,60,r,0)|0;A=r}fv(i,t[r>>2]|0)|0;ad(i,A);A=0}return A|0}function Td(e,A){e=e|0;A=A|0;var r=0;e=t[e+16>>2]|0;do{r=e+4|0;e=t[r>>2]|0}while((e|0)!=(A|0));t[r>>2]=t[A+4>>2];return}function Od(e,A,r){e=e|0;A=A|0;r=r|0;if((t[A+16>>2]|0)==(r|0)){e=t[r+4>>2]|0;Xd(A,(e|0)==(r|0)?0:e,0)}return}function _d(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;var t=0,n=0;t=(i|0)>-1;n=t?i:0-i|0;e:do{switch(A|0){case 0:{Sd(e,r,n,a)|0;if(!t){A=xv(e)|0;while(1){if(!A)break e;_d(A,0,r,i,a);A=Jv(A)|0}}break}case 3:case 2:case 1:{i=(A|0)==1;A=sd(e)|0;while(1){if(!A)break e;A:do{if(i)Sd(A,r,n,a)|0;else{t=Ow(e,A)|0;while(1){if(!t)break A;Sd(t,r,n,a)|0;t=qw(e,t)|0}}}while(0);A=cd(e,A)|0}}default:{}}}while(0);return}function qd(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0;e:do{switch(A|0){case 0:{Zg(e,e,61,r,1)|0;break}case 3:case 2:case 1:{a=(A|0)==1;i=sd(e)|0;while(1){if(!i)break e;A:do{if(a)Ud(i,r)|0;else{A=Ow(e,i)|0;while(1){if(!A)break A;Ud(A,r)|0;A=qw(e,A)|0}}}while(0);i=cd(e,i)|0}}default:{}}}while(0);return}function Kd(e,A,r){e=e|0;A=A|0;r=r|0;Ud(A,r)|0;return}function $d(e){e=e|0;var A=0,r=0,i=0;r=Bd(e)|0;A=e+16|0;e=t[A>>2]|0;if(e|0)do{i=e;e=t[e+4>>2]|0;fv(r,t[i>>2]|0)|0;ad(r,i)}while((e|0)!=(t[A>>2]|0));t[A>>2]=0;return}function ev(e){e=e|0;return Tv(e,Av(e)|0)|0}function Av(e){e=e|0;var A=0,r=0;if(!e)r=187844;else r=(t[e+64>>2]|0)+20|0;A=t[r>>2]|0;if(!A){A=jv(e,18864,t[4589]|0)|0;t[r>>2]=A;e=186312;t[e>>2]=-2147483648;t[e+4>>2]=0;e=186320;t[e>>2]=2147483647;t[e+4>>2]=-1}return A|0}function rv(e,A){e=e|0;A=A|0;return iv(Av(e)|0,A)|0}function iv(e,A){e=e|0;A=A|0;e=av(e,A)|0;if(!e)e=0;else e=t[e+16>>2]|0;return e|0}function av(e,A){e=e|0;A=A|0;var r=0,i=0;r=h;h=h+32|0;i=r;t[i+16>>2]=A;A=L5[t[e>>2]&63](e,i,4)|0;h=r;return A|0}function tv(e,A){e=e|0;A=A|0;var r=0,i=0;if(!A)r=0;else{i=Av(e)|0;r=av(i,A)|0;if(!r){r=(U2(A)|0)+24|0;if(!e)r=Z2(r)|0;else r=id(e,r)|0;e=r+8|0;t[e>>2]=1;t[e+4>>2]=0;e=r+20|0;$1(e,A)|0;t[r+16>>2]=e;L5[t[i>>2]&63](i,r,1)|0}else{i=r+8|0;A=i;A=d6(t[A>>2]|0,t[A+4>>2]|0,1,0)|0;t[i>>2]=A;t[i+4>>2]=G}r=t[r+16>>2]|0}return r|0}function nv(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0;if(!A)r=0;else{i=Av(e)|0;r=av(i,A)|0;if(!r){r=(U2(A)|0)+24|0;if(!e)r=Z2(r)|0;else r=id(e,r)|0;n=186312;a=t[n+4>>2]|0;e=r+8|0;t[e>>2]=t[n>>2]|1;t[e+4>>2]=a;e=r+20|0;$1(e,A)|0;t[r+16>>2]=e;L5[t[i>>2]&63](i,r,1)|0}else{n=r+8|0;a=n;a=d6(t[a>>2]|0,t[a+4>>2]|0,1,0)|0;t[n>>2]=a;t[n+4>>2]=G}r=t[r+16>>2]|0}return r|0}function fv(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0;if((A|0)!=0?(r=Av(e)|0,i=av(r,A)|0,(i|0)!=0):0)if((t[i+16>>2]|0)==(A|0)?(A=i+8|0,n=A,n=d6(t[n>>2]|0,t[n+4>>2]|0,-1,-1)|0,a=G,A,t[A>>2]=n,t[A+4>>2]=a,A=186320,(n|0)==0&(a|0)==0|(t[A>>2]|0)==0&(t[A+4>>2]|0)==0):0){Uv(e,r,i)|0;e=0}else e=0;else e=-1;return e|0}function lv(e){e=e|0;var A=0;if(!e)e=0;else{e=e+-12|0;A=186312;e=t[A>>2]&t[e>>2]}return e|0}function sv(e){e=e|0;var A=0,r=0,i=0;if(e|0){r=186312;e=e+-12|0;i=e;A=t[i+4>>2]|t[r+4>>2];t[e>>2]=t[i>>2]|t[r>>2];t[e+4>>2]=A}return}function cv(e){e=e|0;t[46966]=e;t[4725]=1;return}function ov(e,A){e=e|0;A=A|0;t[46967]=e;t[46968]=A;t[46969]=0;return}function uv(){var e=0,A=0,r=0,f=0,l=0,s=0,c=0,o=0,u=0,b=0;if(!(t[46970]|0)){t[46970]=1;if(!(t[46971]|0))t[46971]=1;if(!(t[46962]|0))t[46962]=t[15647];if(!(t[46963]|0))t[46963]=t[15679];c=t[46972]|0;if(!((c|0)!=0?(t[c>>2]|0)!=0:0)){bv();c=hv(t[46962]|0,16384)|0;t[t[46972]>>2]=c}wv()}e:while(1){s=t[46973]|0;i[s>>0]=i[194805]|0;e=(t[(t[t[46972]>>2]|0)+28>>2]|0)+(t[46971]|0)|0;A=s;A:while(1){f=A;while(1){A=t[18904+(n[f>>0]<<2)>>2]|0;if(a[63856+(e<<1)>>1]|0){t[46974]=e;t[46975]=f}r:while(1){r=A&255;do{A=r+(a[64042+(e<<1)>>1]|0)|0;if((e|0)==(a[64252+(A<<1)>>1]|0))break r;c=a[64788+(e<<1)>>1]|0;e=c<<16>>16}while(c<<16>>16<=92);A=t[19928+(r<<2)>>2]|0}e=a[64998+(A<<1)>>1]|0;A=f+1|0;if((a[64042+(e<<1)>>1]|0)==219)break;else f=A}r:while(1){c=s;i:while(1){e=a[63856+(e<<1)>>1]|0;if(!(e<<16>>16)){e=a[63856+(t[46974]<<1)>>1]|0;A=t[46975]|0}else e=e<<16>>16;t[46964]=s;l=A;t[46965]=l-c;i[194805]=i[A>>0]|0;i[A>>0]=0;t[46973]=A;a:while(1){switch(e|0){case 1:{u=27;break e}case 12:{u=53;break e}case 13:{u=55;break e}case 14:{u=57;break e}case 15:{u=61;break e}case 16:{u=65;break e}case 17:{u=67;break e}case 18:{u=69;break e}case 19:{u=72;break e}case 20:{u=75;break e}case 21:{u=78;break e}case 23:{u=86;break e}case 33:{u=118;break e}case 39:case 38:case 37:case 36:{o=0;break e}case 2:{u=29;break A}case 3:{u=32;break A}case 4:{u=35;break A}case 5:{u=37;break A}case 6:{u=39;break A}case 7:{u=42;break A}case 8:{u=44;break A}case 9:{u=47;break A}case 10:{u=49;break A}case 11:{u=51;break A}case 22:{u=83;break A}case 24:{u=89;break A}case 25:{u=92;break A}case 26:{u=95;break A}case 27:{u=98;break A}case 28:{u=101;break A}case 29:{u=104;break A}case 30:{u=109;break A}case 31:{u=112;break A}case 32:{u=115;break A}case 34:{u=121;break A}case 0:break a;case 35:break;default:{u=134;break e}}f=t[46964]|0;i[A>>0]=i[194805]|0;e=t[46972]|0;r=t[e>>2]|0;if(!(t[r+44>>2]|0)){b=t[r+16>>2]|0;t[46977]=b;t[r>>2]=t[46962];r=t[e>>2]|0;t[r+44>>2]=1;e=b}else e=t[46977]|0;if((t[46973]|0)>>>0<=((t[r+4>>2]|0)+e|0)>>>0){u=128;break i}switch(yv()|0){case 0:{u=132;break r}case 2:{u=133;break i}case 1:break;default:continue e}t[46973]=t[46964];e=(((t[46971]|0)+-1|0)/2|0)+36|0}i[A>>0]=i[194805]|0;A=t[46975]|0;e=t[46974]|0}if((u|0)==128){u=0;r=l-f|0;f=t[46964]|0;A=f+(r+-1)|0;t[46973]=A;e=Ev()|0;l=Bv(e)|0;s=t[46964]|0;if(!l)continue;else{u=129;break}}else if((u|0)==133){u=0;A=(t[(t[t[46972]>>2]|0)+4>>2]|0)+(t[46977]|0)|0;t[46973]=A;e=Ev()|0;s=t[46964]|0;continue}}if((u|0)==129){u=0;A=f+r|0;t[46973]=A;e=l;continue}else if((u|0)==132){u=0;A=(t[46964]|0)+(l-f+-1)|0;t[46973]=A;e=Ev()|0;s=t[46964]|0;continue}}switch(u|0){case 29:{u=0;e=t[46965]|0;if(e|0)t[(t[t[46972]>>2]|0)+28>>2]=(i[(t[46964]|0)+(e+-1)>>0]|0)==10&1;t[4725]=(t[4725]|0)+1;continue e}case 32:{u=0;e=t[46965]|0;if(e|0)t[(t[t[46972]>>2]|0)+28>>2]=(i[(t[46964]|0)+(e+-1)>>0]|0)==10&1;t[46971]=3;continue e}case 35:{u=0;e=t[46965]|0;if(!e)continue e;t[(t[t[46972]>>2]|0)+28>>2]=(i[(t[46964]|0)+(e+-1)>>0]|0)==10&1;continue e}case 37:{u=0;e=t[46965]|0;if(!e)continue e;t[(t[t[46972]>>2]|0)+28>>2]=(i[(t[46964]|0)+(e+-1)>>0]|0)==10&1;continue e}case 39:{u=0;e=t[46965]|0;if(e|0)t[(t[t[46972]>>2]|0)+28>>2]=(i[(t[46964]|0)+(e+-1)>>0]|0)==10&1;t[46971]=1;continue e}case 42:{u=0;e=t[46965]|0;if(!e)continue e;t[(t[t[46972]>>2]|0)+28>>2]=(i[(t[46964]|0)+(e+-1)>>0]|0)==10&1;continue e}case 44:{u=0;e=t[46965]|0;if(e|0)t[(t[t[46972]>>2]|0)+28>>2]=(i[(t[46964]|0)+(e+-1)>>0]|0)==10&1;kv();continue e}case 47:{u=0;e=t[46965]|0;if(!e)continue e;t[(t[t[46972]>>2]|0)+28>>2]=(i[(t[46964]|0)+(e+-1)>>0]|0)==10&1;continue e}case 49:{u=0;e=t[46965]|0;if(!e)continue e;t[(t[t[46972]>>2]|0)+28>>2]=(i[(t[46964]|0)+(e+-1)>>0]|0)==10&1;continue e}case 51:{u=0;e=t[46965]|0;if(!e)continue e;t[(t[t[46972]>>2]|0)+28>>2]=(i[(t[46964]|0)+(e+-1)>>0]|0)==10&1;continue e}case 83:{u=0;e=t[46965]|0;if(e|0)t[(t[t[46972]>>2]|0)+28>>2]=(i[(t[46964]|0)+(e+-1)>>0]|0)==10&1;t[46971]=5;vv();continue e}case 89:{u=0;e=t[46965]|0;if(e|0)t[(t[t[46972]>>2]|0)+28>>2]=(i[(t[46964]|0)+(e+-1)>>0]|0)==10&1;mv(98744);continue e}case 92:{u=0;e=t[46965]|0;if(e|0)t[(t[t[46972]>>2]|0)+28>>2]=(i[(t[46964]|0)+(e+-1)>>0]|0)==10&1;mv(96616);continue e}case 95:{u=0;e=t[46965]|0;if(e|0)t[(t[t[46972]>>2]|0)+28>>2]=(i[(t[46964]|0)+(e+-1)>>0]|0)==10&1;t[4725]=(t[4725]|0)+1;continue e}case 98:{u=0;A=t[46965]|0;e=t[46964]|0;if(A|0)t[(t[t[46972]>>2]|0)+28>>2]=(i[e+(A+-1)>>0]|0)==10&1;mv(e);continue e}case 101:{u=0;e=t[46965]|0;if(e|0)t[(t[t[46972]>>2]|0)+28>>2]=(i[(t[46964]|0)+(e+-1)>>0]|0)==10&1;t[46971]=7;t[46976]=1;vv();continue e}case 104:{u=0;e=t[46965]|0;if(e|0)t[(t[t[46972]>>2]|0)+28>>2]=(i[(t[46964]|0)+(e+-1)>>0]|0)==10&1;b=(t[46976]|0)+-1|0;t[46976]=b;if(!b){u=108;break e}mv(t[46964]|0);continue e}case 109:{u=0;A=t[46965]|0;e=t[46964]|0;if(A|0)t[(t[t[46972]>>2]|0)+28>>2]=(i[e+(A+-1)>>0]|0)==10&1;t[46976]=(t[46976]|0)+1;mv(e);continue e}case 112:{u=0;A=t[46965]|0;e=t[46964]|0;if(A|0)t[(t[t[46972]>>2]|0)+28>>2]=(i[e+(A+-1)>>0]|0)==10&1;mv(e);t[4725]=(t[4725]|0)+1;continue e}case 115:{u=0;A=t[46965]|0;e=t[46964]|0;if(A|0)t[(t[t[46972]>>2]|0)+28>>2]=(i[e+(A+-1)>>0]|0)==10&1;mv(e);continue e}case 121:{u=0;A=t[46965]|0;e=t[46964]|0;if(A|0)t[(t[t[46972]>>2]|0)+28>>2]=(i[e+(A+-1)>>0]|0)==10&1;G3(e,A,1,t[46963]|0)|0;continue e}}}switch(u|0){case 27:{e=t[46965]|0;if(!e)o=-1;else{t[(t[t[46972]>>2]|0)+28>>2]=(i[(t[46964]|0)+(e+-1)>>0]|0)==10&1;o=-1}break}case 53:{e=t[46965]|0;if(!e)o=259;else{t[(t[t[46972]>>2]|0)+28>>2]=(i[(t[46964]|0)+(e+-1)>>0]|0)==10&1;o=259}break}case 55:{e=t[46965]|0;if(!e)o=260;else{t[(t[t[46972]>>2]|0)+28>>2]=(i[(t[46964]|0)+(e+-1)>>0]|0)==10&1;o=260}break}case 57:{e=t[46965]|0;if(e|0)t[(t[t[46972]>>2]|0)+28>>2]=(i[(t[46964]|0)+(e+-1)>>0]|0)==10&1;if(!(t[46969]|0)){t[46969]=258;o=258}else o=258;break}case 61:{e=t[46965]|0;if(e|0)t[(t[t[46972]>>2]|0)+28>>2]=(i[(t[46964]|0)+(e+-1)>>0]|0)==10&1;if(!(t[46969]|0)){t[46969]=261;o=261}else o=261;break}case 65:{e=t[46965]|0;if(!e)o=263;else{t[(t[t[46972]>>2]|0)+28>>2]=(i[(t[46964]|0)+(e+-1)>>0]|0)==10&1;o=263}break}case 67:{e=t[46965]|0;if(!e)o=262;else{t[(t[t[46972]>>2]|0)+28>>2]=(i[(t[46964]|0)+(e+-1)>>0]|0)==10&1;o=262}break}case 69:{e=t[46965]|0;if(e|0)t[(t[t[46972]>>2]|0)+28>>2]=(i[(t[46964]|0)+(e+-1)>>0]|0)==10&1;o=(t[46969]|0)==261?264:45;break}case 72:{e=t[46965]|0;if(e|0)t[(t[t[46972]>>2]|0)+28>>2]=(i[(t[46964]|0)+(e+-1)>>0]|0)==10&1;o=(t[46969]|0)==258?264:45;break}case 75:{A=t[46965]|0;e=t[46964]|0;if(A|0)t[(t[t[46972]>>2]|0)+28>>2]=(i[e+(A+-1)>>0]|0)==10&1;t[46992]=tv(t[46942]|0,e)|0;o=267;break}case 78:{e=t[46965]|0;if(e|0)t[(t[t[46972]>>2]|0)+28>>2]=(i[(t[46964]|0)+(e+-1)>>0]|0)==10&1;if(dv()|0){u=(t[46965]|0)+-1|0;i[A>>0]=i[194805]|0;b=s+u|0;t[46973]=b;t[46964]=s;t[46965]=u;i[194805]=i[b>>0]|0;i[b>>0]=0;t[46973]=b}t[46992]=tv(t[46942]|0,t[46964]|0)|0;o=267;break}case 86:{e=t[46965]|0;if(e|0)t[(t[t[46972]>>2]|0)+28>>2]=(i[(t[46964]|0)+(e+-1)>>0]|0)==10&1;t[46971]=1;gv();o=268;break}case 108:{t[46971]=1;pv();o=268;break}case 118:{A=t[46965]|0;e=t[46964]|0;if(A|0)t[(t[t[46972]>>2]|0)+28>>2]=(i[e+(A+-1)>>0]|0)==10&1;o=i[e>>0]|0;break}case 134:{Cv(96619);break}}return o|0}function bv(){var e=0,A=0,r=0;A=t[46972]|0;do{if(!A){e=zv(4)|0;t[46972]=e;if(!e)Cv(96977);else{t[e>>2]=0;e=1;r=9;break}}else{e=t[46983]|0;if(0>=(e+-1|0)>>>0){e=e+8|0;A=Iv(A,e<<2)|0;t[46972]=A;if(!A)Cv(96977);else{r=A+(t[46983]<<2)|0;t[r>>2]=0;t[r+4>>2]=0;t[r+8>>2]=0;t[r+12>>2]=0;t[r+16>>2]=0;t[r+20>>2]=0;t[r+24>>2]=0;t[r+28>>2]=0;r=9;break}}}}while(0);if((r|0)==9)t[46983]=e;return}function hv(e,A){e=e|0;A=A|0;var r=0;r=zv(48)|0;if(!r)Cv(96932);t[r+12>>2]=A;A=zv(A+2|0)|0;t[r+4>>2]=A;if(!A)Cv(96932);else{t[r+20>>2]=1;Gv(r,e);return r|0}return 0}function wv(){var e=0,A=0;A=t[46972]|0;e=t[A>>2]|0;t[46977]=t[e+16>>2];e=t[e+8>>2]|0;t[46973]=e;t[46964]=e;t[46962]=t[t[A>>2]>>2];i[194805]=i[e>>0]|0;return}function kv(){var e=0,A=0,r=0,a=0,n=0,f=0,l=0;n=h;h=h+32|0;a=n;A=n+16|0;r=n+12|0;f=t[46964]|0;e=f+1|0;l=(y1(e,96916,4)|0)==0;e=l?f+5|0:e;t[a>>2]=r;t[a+4>>2]=n+20;t[a+8>>2]=A;a=V3(e,96921,a)|0;if((a|0)>0?(t[4725]=(t[r>>2]|0)+-1,(a|0)!=1):0){A=e+(t[A>>2]|0)|0;e=A;e:while(1){r=i[e>>0]|0;switch(r<<24>>24){case 0:case 34:break e;default:{}}e=e+1|0}if((e|0)!=(A|0)&r<<24>>24==34){i[e>>0]=0;Dv(A,e-A|0)}}h=n;return}function dv(){var e=0,A=0,r=0,a=0,n=0,f=0,l=0,s=0,c=0;s=h;h=h+2080|0;l=s+8|0;a=s;e=s+1056|0;A=s+32|0;f=s+16|0;c=i[(t[46964]|0)+((t[46965]|0)+-1)>>0]|0;r=c<<24>>24==46;if(r|((c&255)+-48|0)>>>0<10)if(r?(Qv()|0)!=0:0)n=4;else e=0;else n=4;if((n|0)==4){c=t[46966]|0;cw(f,1024,e);bw(f,96827)|0;bw(f,t[46964]|0)|0;t[a>>2]=t[4725];T4(A,96871,a)|0;bw(f,A)|0;bw(f,(c|0)==0?96821:c)|0;bw(f,96888)|0;A=f+4|0;e=t[A>>2]|0;if(e>>>0>=(t[f+8>>2]|0)>>>0){ow(f,1)|0;e=t[A>>2]|0}i[e>>0]=0;e=t[f>>2]|0;t[A>>2]=e;t[l>>2]=e;nw(0,96913,l)|0;hw(f);e=1}h=s;return e|0}function vv(){var e=0;e=t[46978]|0;if(!e){e=Z2(1024)|0;t[46978]=e;t[46980]=e+1024}t[46979]=e;i[e>>0]=0;return}function gv(){t[46992]=tv(t[46942]|0,t[46978]|0)|0;i[t[46978]>>0]=0;return}function mv(e){e=e|0;var A=0,r=0,a=0,n=0,f=0,l=0;r=t[46979]|0;A=t[46978]|0;if(r>>>0>A>>>0){r=r+-1|0;a=3}e:while(1){if((a|0)==3)t[46979]=r;a=t[46980]|0;n=a;do{f=e;e=e+1|0;f=i[f>>0]|0;l=r;r=r+1|0;i[l>>0]=f;if(!(f<<24>>24))break e}while(r>>>0>>0);t[46979]=r;a=A;l=n-a<<1;A=Q2(A,l)|0;t[46978]=A;t[46980]=A+l;r=A+(r-a)|0;a=3}t[46979]=r;return}function pv(){t[46992]=nv(t[46942]|0,t[46978]|0)|0;i[t[46978]>>0]=0;return}function Ev(){var e=0,A=0,r=0,n=0,f=0;f=t[46973]|0;n=t[46964]|0;A=(t[(t[t[46972]>>2]|0)+28>>2]|0)+(t[46971]|0)|0;while(1){if(n>>>0>=f>>>0)break;e=i[n>>0]|0;if(!(e<<24>>24))e=1;else e=t[18904+((e&255)<<2)>>2]|0;if(a[63856+(A<<1)>>1]|0){t[46974]=A;t[46975]=n}e:while(1){r=e&255;do{e=r+(a[64042+(A<<1)>>1]|0)|0;if((A|0)==(a[64252+(e<<1)>>1]|0))break e;e=a[64788+(A<<1)>>1]|0;A=e<<16>>16}while(e<<16>>16<=92);e=t[19928+(r<<2)>>2]|0}n=n+1|0;A=a[64998+(e<<1)>>1]|0}return A|0}function Bv(e){e=e|0;var A=0;if(a[63856+(e<<1)>>1]|0){A=t[46973]|0;t[46974]=e;t[46975]=A}while(1){A=(a[64042+(e<<1)>>1]|0)+1|0;if((e|0)==(a[64252+(A<<1)>>1]|0))break;e=a[64788+(e<<1)>>1]|0}A=a[64998+(A<<1)>>1]|0;return(A<<16>>16==92?0:A<<16>>16)|0}function yv(){var e=0,A=0,r=0,a=0,n=0,f=0,l=0,s=0,c=0,o=0,u=0,b=0,h=0;s=t[46972]|0;n=t[s>>2]|0;l=t[n+4>>2]|0;a=t[46964]|0;o=t[46973]|0;c=o;if(o>>>0>(l+((t[46977]|0)+1)|0)>>>0)Cv(96674);f=c-a|0;if(!(t[n+40>>2]|0))e=(f|0)==1?1:2;else{o=f+-1|0;f=l;n=0;while(1){if((n|0)>=(o|0))break;i[f>>0]=i[a>>0]|0;f=f+1|0;a=a+1|0;n=n+1|0}a=t[s>>2]|0;do{if((t[a+44>>2]|0)==2){t[46977]=0;t[a+16>>2]=0;r=a;u=17}else{while(1){l=a+12|0;f=t[l>>2]|0;n=f-o+-1|0;if(n|0){u=16;break}n=a+4|0;s=t[n>>2]|0;if(!(t[a+20>>2]|0)){u=12;break}a=f<<1;a=(a|0)==0?(f>>>3)+f|0:a;t[l>>2]=a;a=Iv(s,a+2|0)|0;t[n>>2]=a;if(!a)break;s=a+(c-s)|0;t[46973]=s;a=t[t[46972]>>2]|0;c=s}if((u|0)==12)t[n>>2]=0;else if((u|0)==16){A=L5[t[t[(t[46967]|0)+8>>2]>>2]&63](t[46968]|0,(t[a+4>>2]|0)+o|0,n>>>0<8192?n:8192)|0;r=t[t[46972]>>2]|0;t[46977]=A;t[r+16>>2]=A;if(!A){u=17;break}else{e=0;break}}Cv(96730)}}while(0);do{if((u|0)==17)if(!o){Zv(t[46962]|0);e=1;A=t[46977]|0;r=t[t[46972]>>2]|0;break}else{t[r+44>>2]=2;e=2;A=0;break}}while(0);a=A+o|0;do{if(a>>>0>(t[r+12>>2]|0)>>>0){u=Iv(t[r+4>>2]|0,a+(A>>>1)|0)|0;A=t[46972]|0;t[(t[A>>2]|0)+4>>2]=u;A=t[(t[A>>2]|0)+4>>2]|0;if(!A)Cv(96774);else{b=t[46977]|0;h=A;break}}else{b=A;h=t[r+4>>2]|0}}while(0);b=b+o|0;t[46977]=b;i[h+b>>0]=0;h=t[46972]|0;i[(t[(t[h>>2]|0)+4>>2]|0)+((t[46977]|0)+1)>>0]=0;t[46964]=t[(t[h>>2]|0)+4>>2]}return e|0}function Cv(e){e=e|0;var A=0,r=0;A=h;h=h+16|0;r=t[15712]|0;t[A>>2]=e;a3(r,96670,A)|0;Ue(2)}function Iv(e,A){e=e|0;A=A|0;return Q2(e,A)|0}function Zv(e){e=e|0;var A=0,r=0,i=0;r=t[46972]|0;if((r|0)!=0?(A=t[r>>2]|0,(A|0)!=0):0)i=4;else{bv();A=hv(t[46962]|0,16384)|0;r=t[46972]|0;t[r>>2]=A;if(!r)A=0;else i=4}Gv(A,e);wv();return}function Gv(e,A){e=e|0;A=A|0;var r=0;r=t[(R2()|0)>>2]|0;Lv(e);t[e>>2]=A;t[e+40>>2]=1;A=t[46972]|0;if(!A)A=0;else A=t[A>>2]|0;if((A|0)!=(e|0)){t[e+32>>2]=1;t[e+36>>2]=0}t[e+24>>2]=0;t[(R2()|0)>>2]=r;return}function Lv(e){e=e|0;var A=0;if(e|0){t[e+16>>2]=0;A=e+4|0;i[t[A>>2]>>0]=0;i[(t[A>>2]|0)+1>>0]=0;t[e+8>>2]=t[A>>2];t[e+28>>2]=1;t[e+44>>2]=0;A=t[46972]|0;if(!A)A=0;else A=t[A>>2]|0;if((A|0)==(e|0))wv()}return}function Qv(){var e=0,A=0;A=t[46964]|0;e=(t[46965]|0)+-2|0;while(1){if((e|0)<=-1){e=0;break}if((i[A+e>>0]|0)==46){e=1;break}else e=e+-1|0}return e|0}function Dv(e,A){e=e|0;A=A|0;var r=0;r=t[46981]|0;if((r|0)<(A|0)){if(!r)r=Z2(A+1|0)|0;else r=Q2(t[46982]|0,A+1|0)|0;t[46982]=r;t[46981]=A}else r=t[46982]|0;$1(r,e)|0;t[46966]=t[46982];return}function zv(e){e=e|0;return Z2(e)|0}function Wv(e){e=e|0;var A=0,r=0,a=0,n=0,f=0,l=0,s=0,c=0,o=0;o=h;h=h+2112|0;c=o+32|0;l=o+24|0;f=o+16|0;n=o+8|0;a=o;A=o+56|0;s=o+40|0;cw(s,1024,o+1080|0);r=t[46966]|0;if(r|0){bw(s,r)|0;bw(s,97027)|0}bw(s,e)|0;t[a>>2]=t[4725];T4(A,97030,a)|0;bw(s,A)|0;e:do{if(!(i[t[46964]>>0]|0))switch(((t[46971]|0)+-1|0)/2|0|0){case 2:{t[n>>2]=16384;T4(A,97050,n)|0;bw(s,A)|0;e=t[46978]|0;if(!(i[e>>0]|0))break e;l=U2(e)|0;bw(s,97112)|0;e=t[46978]|0;if((l|0)>80)i[e+80>>0]=0;bw(s,e)|0;break e}case 3:{t[f>>2]=16384;T4(A,97131,f)|0;bw(s,A)|0;e=t[46978]|0;if(!(i[e>>0]|0))break e;l=U2(e)|0;bw(s,97199)|0;e=t[46978]|0;if((l|0)>80)i[e+80>>0]=0;bw(s,e)|0;break e}case 1:{t[l>>2]=16384;T4(A,97218,l)|0;bw(s,A)|0;break e}default:break e}else{bw(s,97042)|0;bw(s,t[46964]|0)|0;A=s+4|0;e=t[A>>2]|0;if(e>>>0>=(t[s+8>>2]|0)>>>0){ow(s,1)|0;e=t[A>>2]|0}t[A>>2]=e+1;i[e>>0]=39}}while(0);r=s+4|0;e=t[r>>2]|0;A=s+8|0;if(e>>>0>=(t[A>>2]|0)>>>0){ow(s,1)|0;e=t[r>>2]|0}t[r>>2]=e+1;i[e>>0]=10;e=t[r>>2]|0;if(e>>>0>=(t[A>>2]|0)>>>0){ow(s,1)|0;e=t[r>>2]|0}i[e>>0]=0;l=t[s>>2]|0;t[r>>2]=l;t[c>>2]=l;nw(1,96913,c)|0;hw(s);h=o;return}function Yv(){Fv(t[46964]|0);return}function Fv(e){e=e|0;var A=0,r=0,a=0,n=0,f=0,l=0,s=0,c=0,o=0,u=0;s=t[46973]|0;i[s>>0]=i[194805]|0;l=t[46972]|0;r=t[l>>2]|0;A=t[r+4>>2]|0;if(s>>>0<(A+2|0)>>>0){a=A+((t[46977]|0)+2)|0;n=A+((t[r+12>>2]|0)+2)|0;c=A;f=r;while(1){if(a>>>0<=c>>>0)break;r=a+-1|0;c=n+-1|0;i[c>>0]=i[r>>0]|0;f=t[l>>2]|0;a=r;n=c;c=t[f+4>>2]|0}r=n-a|0;A=s+r|0;s=t[f+12>>2]|0;t[46977]=s;t[f+16>>2]=s;if(A>>>0<(c+2|0)>>>0)Cv(97277);else{o=e+r|0;u=A}}else{o=e;u=s}e=u+-1|0;i[e>>0]=64;t[46964]=o;i[194805]=i[e>>0]|0;t[46973]=e;return}function Mv(){var e=0;e=t[46972]|0;if(!e)e=0;else e=t[e>>2]|0;Lv(e);return}function Vv(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0,n=0;i=h;h=h+80|0;a=i;n=e+52|0;Ov(e,t[n>>2]|0,18548);e=a+8|0;t[e>>2]=A;t[e+4>>2]=r;r=t[n>>2]|0;r=L5[t[r>>2]&63](r,a,4)|0;h=i;return r|0}function Nv(e,A,r){e=e|0;A=A|0;r=r|0;var a=0,n=0,f=0;a=Vv(e,A,r)|0;if(!a){a=id(e,72)|0;t[a+64>>2]=t[e+64>>2];n=a+24|0;f=t[e+24>>2]|0;t[n>>2]=f;i[n>>0]=f&255&-9;t[a+56>>2]=e;t[a+60>>2]=t[e+60>>2];e=a+8|0;t[e>>2]=A;t[e+4>>2]=r;kk(a)|0}return a|0}function Rv(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0,n=0;n=h;h=h+16|0;a=n;if(!(((A|0)!=0?(Wk(e,0,A,a,0)|0)!=0:0)?(i=a,i=Vv(e,t[i>>2]|0,t[i+4>>2]|0)|0,(i|0)!=0):0))if((r|0)!=0?(Wk(e,0,A,a,1)|0)!=0:0){i=a;i=Nv(e,t[i>>2]|0,t[i+4>>2]|0)|0;Vk(e,0,i)}else i=0;h=n;return i|0}function xv(e){e=e|0;e=t[e+52>>2]|0;return L5[t[e>>2]&63](e,0,128)|0}function Jv(e){e=e|0;var A=0;A=Hv(e)|0;if(!A)e=0;else{A=t[A+52>>2]|0;e=L5[t[A>>2]&63](A,e,8)|0}return e|0}function Hv(e){e=e|0;return t[e+56>>2]|0}function Pv(e,A){e=e|0;A=A|0;e=t[e+52>>2]|0;return L5[t[e>>2]&63](e,A,2)|0}function Xv(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;e=t[46984]|0;i=(A|0)!=0;do{if(!e)if(i){G2(A);e=0;break}else{e=Z2(r)|0;break}else if(i){ad(e,A);e=0;break}else{e=id(e,r)|0;break}}while(0);return e|0}function Sv(e,A,r){e=e|0;A=A|0;r=r|0;e=t[46984]|0;if(!e)G2(A);else ad(e,A);return}function jv(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0;i=A+28|0;a=t[i>>2]|0;t[i>>2]=7;t[46984]=e;r=Uh(A,r)|0;t[i>>2]=a;t[46984]=0;return r|0}function Uv(e,A,r){e=e|0;A=A|0;r=r|0;t[46984]=e;return L5[t[A>>2]&63](A,r,2)|0}function Tv(e,A){e=e|0;A=A|0;var r=0,i=0;r=(Aw(A,0,0)|0)+28|0;i=t[r>>2]|0;t[r>>2]=7;t[46984]=e;if(!(Ph(A)|0)){t[r>>2]=i;t[46984]=0;e=0}else e=1;return e|0}function Ov(e,A,r){e=e|0;A=A|0;r=r|0;if(r|0?(Aw(A,0,0)|0)!=(r|0):0)Aw(A,r,0)|0;return}function _v(e,A){e=e|0;A=A|0;if(!(lv(e)|0))A=Kv(e,A)|0;else qv(e,A)|0;return A|0}function qv(e,A){e=e|0;A=A|0;var r=0,a=0,t=0;i[A>>0]=60;a=A;while(1){r=a+1|0;t=i[e>>0]|0;if(!(t<<24>>24))break;i[r>>0]=t;e=e+1|0;a=r}i[r>>0]=62;i[a+2>>0]=0;return A|0}function Kv(e,A){e=e|0;A=A|0;var r=0,a=0,n=0,f=0,l=0,s=0,c=0,o=0,u=0,b=0,h=0,w=0,k=0;e:do{if((e|0)!=0?(i[e>>0]|0)!=0:0){i[A>>0]=34;o=i[e>>0]|0;k=0;n=((o+-45&255)<2|((o&255)+-48|0)>>>0<10)&1;f=0;l=0;s=0;r=A+1|0;a=e+1|0;A:while(1){c=r;while(1){if(!(o<<24>>24))break A;r=o&255;r:do{if(o<<24>>24==34){i[c>>0]=92;u=n;b=1;c=c+1|0}else{if(!n){b=o<<24>>24>-1&(o<<24>>24!=95&(M1(r)|0)==0);u=0;b=b?1:f;break}switch(o<<24>>24){case 45:{b=(s|0)==0;u=b?n:0;b=b?f:1;break r}case 46:{b=(l|0)==0;u=b?n:0;b=b?f:1;l=l+1|0;break r}default:{b=(r+-48|0)>>>0<10;u=b?n:0;b=b?f:1;break r}}}}while(0);r=c+1|0;i[c>>0]=o;w=a+1|0;h=i[a>>0]|0;s=s+1|0;a=t[5031]|0;if(!a){n=u;f=b;c=r;a=w;o=h;continue}n=h&255;f=h<<24>>24!=0;if((k&f?!(o<<24>>24==92|o<<24>>24>-1&((o+-45&255)>1&(M1(o<<24>>24)|0)==0)^1):0)?!(h<<24>>24>-1&((h+-45&255)>1&(M1(n)|0)==0)):0)break;if((s|0)<(a|0)|f^1){n=u;f=b;c=r;a=w;o=h;continue}if(o<<24>>24==92|o<<24>>24>-1&((M1(o<<24>>24)|0)==0&(o+-45&255)>1)^1){k=1;n=u;f=b;o=h;a=w;continue A}if(h<<24>>24>-1&((h+-45&255)>1&(M1(n)|0)==0)){k=1;n=u;f=b;o=h;a=w;continue A}i[r>>0]=92;i[c+2>>0]=10;n=u;f=1;s=0;c=c+3|0;a=w;o=h}i[r>>0]=92;i[c+2>>0]=10;k=0;n=u;f=1;s=0;o=h;r=c+3|0;a=w}i[c>>0]=34;i[c+1>>0]=0;if(!f){if((s|0)==1?((i[e>>0]|0)+-45&255)<2:0){e=A;break}else r=20128;while(1){a=t[r>>2]|0;if(!a)break e;if(!(N1(a,e)|0)){e=A;break}else r=r+4|0}}else e=A}else e=97309}while(0);return e|0}function $v(e){e=e|0;return _v(e,eg(e)|0)|0}function eg(e){e=e|0;var A=0;A=((U2(e)|0)<<1)+2|0;A=A>>>0>1024?A:1024;e=t[46986]|0;if(A>>>0>(t[46985]|0)>>>0){if(!e)e=Z2(A)|0;else e=Q2(e,A)|0;t[46986]=e;t[46985]=A}return e|0}function Ag(e,A){e=e|0;A=A|0;e=xv(e)|0;while(1){if(!e){e=0;break}if((rg(e)|0)==0?hd(e,A,0)|0:0){e=1;break}e=Jv(e)|0}return e|0}function rg(e){e=e|0;var A=0,r=0,a=0,n=0,f=0,l=0;f=Mk(e)|0;if((f|0)!=0?(i[f>>0]|0)!=37:0)A=0;else r=3;e:do{if((r|0)==3){A=Ew(e)|0;A:do{if(A|0?(a=Ew(Hv(e)|0)|0,a|0):0){f=Oh(t[(Ew(yd(e)|0)|0)+8>>2]|0)|0;n=A+12|0;r=a+12|0;A=0;while(1){if((A|0)>=(f|0))break A;a=t[(t[n>>2]|0)+(A<<2)>>2]|0;if((a|0?(l=t[(t[r>>2]|0)+(A<<2)>>2]|0,l|0):0)?e1(a,l)|0:0){A=0;break e}A=A+1|0}}}while(0);A=dw(e,0)|0;if(A)if((Oh(t[A+8>>2]|0)|0)>0)A=0;else return(Oh(t[A+12>>2]|0)|0)<1|0;else A=1}}while(0);return A|0}function ig(e,A){e=e|0;A=A|0;var r=0,a=0;t[46987]=0;r=Hw(e,97319)|0;if((r|0?((i[r>>0]|0)+-48|0)>>>0<10:0)?(a=n3(r,0,10)|0,(a|0)==0|(a|0)>59):0)t[5031]=a;ag(e,1);if(((tg(e,A,1)|0)!=-1?(ng(e,A)|0)!=-1:0)?(fg(e,A)|0)!=-1:0){t[5031]=128;e=I5[t[(t[(t[e+64>>2]|0)+8>>2]|0)+8>>2]&63](A)|0}else e=-1;return e|0}function ag(e,A){e=e|0;A=A|0;var r=0;t[e>>2]=t[e>>2]&-9;r=xv(e)|0;while(1){if(!r)break;ag(r,0);r=Jv(r)|0}e:do{if(A|0){A=sd(e)|0;while(1){if(!A)break e;t[A>>2]=t[A>>2]&-9;r=Ow(e,A)|0;while(1){if(!r)break;t[r>>2]=t[r>>2]&-9;r=qw(e,r)|0}A=cd(e,A)|0}}}while(0);return}function tg(e,A,r){e=e|0;A=A|0;r=r|0;var a=0,n=0,f=0,l=0,s=0,c=0;if((r|0)==0?(Hv(e)|0)!=0:0){l=0;n=195059;c=109514}else{c=(i[e+24>>0]&1)==0?195059:97363;n=(Ck(e)|0)==0;t[46988]=zw(e,2,111455,0)|0;t[46989]=zw(e,2,111464,0)|0;l=1;n=n?195059:97366}a=Mk(e)|0;if((a|0)!=0?(i[a>>0]|0)!=37:0){f=1;s=102604}else{f=0;s=195059;a=195059}do{if((lg(e,A)|0)!=-1?(sg(e,A,n)|0)!=-1:0){n=(f|0)==0;if(f|l|0){if((sg(e,A,c)|0)==-1){a=-1;break}if((sg(e,A,102597)|0)==-1){a=-1;break}}if(!n?(mg(e,A,a)|0)==-1:0){a=-1;break}if(((sg(e,A,s)|0)!=-1?(sg(e,A,97374)|0)!=-1:0)?(t[46987]=(t[46987]|0)+1,(Cg(e,A,r)|0)!=-1):0){t[e>>2]=t[e>>2]|8;a=0}else a=-1}else a=-1}while(0);return a|0}function ng(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0,f=0,l=0,s=0,c=0;e:do{if((cg(e,A)|0)==-1)r=-1;else{c=dw(yd(e)|0,0)|0;l=(c|0)==0;s=c+12|0;c=c+8|0;f=sd(e)|0;while(1){if(!f){r=0;break e}if(og(e,f,(t[f>>2]|0)>>>4,0)|0){if(l)r=0;else r=t[c>>2]|0;if((ug(f,A,r)|0)==-1){r=-1;break e}}n=Ow(e,f)|0;r=f;while(1){if(!n)break;a=n+-48|0;i=t[((t[n>>2]&3|0)==2?n:a)+40>>2]|0;if((r|0)!=(i|0)?(og(e,i,(t[f>>2]|0)>>>4,0)|0)!=0:0){if(l)r=0;else r=t[c>>2]|0;if((ug(t[((t[n>>2]&3|0)==2?n:a)+40>>2]|0,A,r)|0)==-1){r=-1;break e}r=t[((t[n>>2]&3|0)==2?n:a)+40>>2]|0}if(bg(e,n)|0){if(l)i=0;else i=t[s>>2]|0;if((hg(n,A,i)|0)==-1){r=-1;break e}}n=qw(e,n)|0}f=cd(e,f)|0}}}while(0);return r|0}function fg(e,A){e=e|0;A=A|0;t[46987]=(t[46987]|0)+-1;if((lg(e,A)|0)==-1)e=-1;else e=((sg(e,A,111008)|0)==-1)<<31>>31;return e|0}function lg(e,A){e=e|0;A=A|0;var r=0;r=t[46987]|0;while(1){if((r|0)<=0){r=0;break}if((sg(e,A,153597)|0)==-1){r=-1;break}else r=r+-1|0}return r|0}function sg(e,A,r){e=e|0;A=A|0;r=r|0;return Z5[t[(t[(t[e+64>>2]|0)+8>>2]|0)+4>>2]&127](A,r)|0}function cg(e,A){e=e|0;A=A|0;e=xv(e)|0;while(1){if(!e){e=0;break}if(!(rg(e)|0)){if((tg(e,A,0)|0)==-1){e=-1;break}if((ng(e,A)|0)==-1){e=-1;break}if((fg(e,A)|0)==-1){e=-1;break}}else cg(e,A)|0;e=Jv(e)|0}return e|0}function og(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0;if((Ag(e,A)|0)==0?(Eg(e,A,r,i)|0)!=0:0)if((Bg(e,A)|0)==0?(yg(A)|0)==0:0)a=5;else e=1;else a=5;if((a|0)==5)e=0;return e|0}function ug(e,A,r){e=e|0;A=A|0;r=r|0;var i=0;i=Bd(e)|0;do{if((lg(i,A)|0)!=-1?(wg(e,A)|0)!=-1:0){if((dg(e)|0)==0?(vg(e,A,r)|0)==-1:0){e=-1;break}e=sg(i,A,97330)|0}else e=-1}while(0);return e|0}function bg(e,A){e=e|0;A=A|0;e=xv(e)|0;while(1){if(!e){e=1;break}if((rg(e)|0)==0?uk(e,A,0)|0:0){e=0;break}e=Jv(e)|0}return e|0}function hg(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0,n=0;i=t[e>>2]&3;n=t[((i|0)==3?e:e+48|0)+40>>2]|0;i=t[((i|0)==2?e:e+-48|0)+40>>2]|0;a=Bd(n)|0;do{if((((((lg(a,A)|0)!=-1?(wg(n,A)|0)!=-1:0)?(kg(e,A,t[46988]|0)|0)!=-1:0)?(n=(Bk(Bd(n)|0)|0)!=0,(sg(a,A,n?100079:100084)|0)!=-1):0)?(wg(i,A)|0)!=-1:0)?(kg(e,A,t[46989]|0)|0)!=-1:0){if(!(dg(e)|0)){if((vg(e,A,r)|0)==-1){e=-1;break}}else if((gg(e,A,1)|0)==-1){e=-1;break}e=sg(a,A,97330)|0}else e=-1}while(0);return e|0}function wg(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0,f=0,l=0,s=0;l=h;h=h+32|0;n=l;r=l+8|0;i=Mk(e)|0;a=Bd(e)|0;if(!i){s=e+8|0;e=t[s+4>>2]|0;i=n;t[i>>2]=t[s>>2];t[i+4>>2]=e;T4(r,97350,n)|0;if((sg(a,A,r)|0)==-1)e=-1;else f=4}else if((mg(a,A,i)|0)==-1)e=-1;else f=4;if((f|0)==4)e=0;h=l;return e|0}function kg(e,A,r){e=e|0;A=A|0;r=r|0;var a=0,t=0;e:do{if((r|0)!=0?(a=Bd(e)|0,t=Pw(e,r)|0,(i[t>>0]|0)!=0):0)if((sg(a,A,107984)|0)==-1)e=-1;else{do{if(lv(t)|0){if((mg(a,A,t)|0)==-1){e=-1;break e}}else{e=C1(t,58)|0;if(!e)if((pg(a,A,t,0)|0)==-1){e=-1;break e}else break;i[e>>0]=0;if((pg(a,A,t,0)|0)==-1){e=-1;break e}if((sg(a,A,107984)|0)==-1){e=-1;break e}if((pg(a,A,e+1|0,0)|0)==-1){e=-1;break e}i[e>>0]=58}}while(0);e=0}else e=0}while(0);return e|0}function dg(e){e=e|0;return(t[e>>2]|0)>>>3&1|0}function vg(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0,n=0,f=0,l=0,s=0,c=0;e:do{if(!(t[e>>2]&2)){i=0;c=4}else{switch(gg(e,A,0)|0){case-1:{i=-1;break e}case 0:{i=0;c=4;break e}default:{}}i=1;c=4}}while(0);e:do{if((c|0)==4){a=Ew(e)|0;s=Bd(e)|0;A:do{if(a){l=a+12|0;f=L5[t[r>>2]&63](r,0,128)|0;while(1){if(!f)break A;do{if(t[e>>2]&2){n=t[46988]|0;if(n|0?(t[f+16>>2]|0)==(t[n+16>>2]|0):0)break;n=t[46989]|0;if(!((n|0)!=0?(t[f+16>>2]|0)==(t[n+16>>2]|0):0))c=12}else c=12}while(0);if((c|0)==12){c=0;a=f+16|0;if((t[(t[l>>2]|0)+(t[a>>2]<<2)>>2]|0)!=(t[f+12>>2]|0)){n=i+1|0;if(i){if((sg(s,A,97345)|0)==-1){i=-1;break e}if((lg(s,A)|0)==-1){i=-1;break e}}else{if((lg(s,A)|0)==-1){i=-1;break e}if((sg(s,A,97342)|0)==-1){i=-1;break e}t[46987]=(t[46987]|0)+1}if((mg(s,A,t[f+8>>2]|0)|0)==-1){i=-1;break e}if((sg(s,A,97348)|0)==-1){i=-1;break e}if((mg(s,A,t[(t[l>>2]|0)+(t[a>>2]<<2)>>2]|0)|0)==-1){i=-1;break e}else i=n}}f=L5[t[r>>2]&63](r,f,8)|0}}}while(0);if((i|0)>0){if((sg(s,A,97340)|0)==-1){i=-1;break}t[46987]=(t[46987]|0)+-1}t[e>>2]=t[e>>2]|8;i=0}}while(0);return i|0}function gg(e,A,r){e=e|0;A=A|0;r=r|0;var a=0,t=0;a=Mk(e)|0;e=Bd(e)|0;if((a|0)!=0?(i[a>>0]|0)!=0:0)if((sg(e,A,97333)|0)!=-1?(mg(e,A,a)|0)!=-1:0)if((r|0)!=0?(sg(e,A,97340)|0)==-1:0)e=-1;else{e=1;t=7}else e=-1;else{e=0;t=7}return e|0}function mg(e,A,r){e=e|0;A=A|0;r=r|0;return pg(e,A,r,1)|0}function pg(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;if(!i)r=Kv(r,eg(r)|0)|0;else r=$v(r)|0;return sg(e,A,r)|0}function Eg(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;e:do{if(0>>0|(0==(i|0)?(t[A>>2]|0)>>>4>>>0>>0:0))A=0;else{A=Kw(e,A)|0;while(1){if(!A){A=1;break e}if(0>>0|(0==(i|0)?(t[t[A+40>>2]>>2]|0)>>>4>>>0>>0:0)){A=0;break e}A=$w(e,A)|0}}}while(0);return A|0}function Bg(e,A){e=e|0;A=A|0;if(!(Kw(e,A)|0))e=(Ow(e,A)|0)==0&1;else e=0;return e|0}function yg(e){e=e|0;var A=0,r=0,i=0;e=Ew(e)|0;e:do{if(!e)e=0;else{r=e+8|0;i=t[r>>2]|0;A=e+12|0;e=L5[t[i>>2]&63](i,0,128)|0;while(1){if(!e){e=0;break e}if((t[(t[A>>2]|0)+(t[e+16>>2]<<2)>>2]|0)!=(t[e+12>>2]|0)){e=1;break e}i=t[r>>2]|0;e=L5[t[i>>2]&63](i,e,8)|0}}}while(0);return e|0}function Cg(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0;i=dw(e,0)|0;if(i)if(((Ig(e,A,111494,t[i+16>>2]|0,r)|0)!=-1?(Ig(e,A,111481,t[i+8>>2]|0,r)|0)!=-1:0)?(Ig(e,A,111450,t[i+12>>2]|0,r)|0)!=-1:0)a=5;else e=-1;else a=5;if((a|0)==5)e=0;return e|0}function Ig(e,A,r,a,n){e=e|0;A=A|0;r=r|0;a=a|0;n=n|0;var f=0,l=0,s=0,c=0,o=0,u=0,b=0,h=0;u=(n|0)!=0;if(u)o=0;else o=Kh(a,0)|0;c=(o|0)==0;s=L5[t[a>>2]&63](a,0,128)|0;n=0;while(1){if(!s){b=23;break}l=s+12|0;b=t[l>>2]|0;if((b|0)!=0?(i[b>>0]|0)!=0:0)b=12;else b=7;do{if((b|0)==7){b=0;if(!(i[s+22>>0]|0)){if(!c){f=L5[t[o>>2]&63](o,s,4)|0;h=t[f+12>>2]|0;if(h|0?i[h>>0]|0:0){b=12;break}if(!(i[f+22>>0]|0))b=12}}else b=12}}while(0);if((b|0)==12){b=0;f=n+1|0;if(n){if((sg(e,A,97345)|0)==-1){n=-1;break}if((lg(e,A)|0)==-1){n=-1;break}}else{if((lg(e,A)|0)==-1){n=-1;break}if((sg(e,A,r)|0)==-1){n=-1;break}if((sg(e,A,97342)|0)==-1){n=-1;break}t[46987]=(t[46987]|0)+1}if((mg(e,A,t[s+8>>2]|0)|0)==-1){n=-1;break}if((sg(e,A,97348)|0)==-1){n=-1;break}if((mg(e,A,t[l>>2]|0)|0)==-1){n=-1;break}else n=f}s=L5[t[a>>2]&63](a,s,8)|0}do{if((b|0)==23){if((n|0)>0){t[46987]=(t[46987]|0)+-1;if((n|0)!=1){if((sg(e,A,153599)|0)==-1){n=-1;break}if((lg(e,A)|0)==-1){n=-1;break}}n=(sg(e,A,97377)|0)==-1;if(u|n){n=n<<31>>31;break}}else if(u){n=0;break}Kh(a,o)|0;n=0}}while(0);return n|0}function Zg(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;var n=0;switch(t[A>>2]&3){case 0:{n=82;break}case 1:{n=83;break}case 3:case 2:{n=84;break}default:{}}A=Z5[n&127](e,A)|0;if(!A)A=-1;else{Dg(e,A,r,i,n,a);A=0}return A|0}function Gg(e,A){e=e|0;A=A|0;if((Bd(A)|0)!=(e|0))A=uk(e,A,0)|0;return A|0}function Lg(e,A){e=e|0;A=A|0;if((Bd(A)|0)!=(e|0))A=hd(e,A,0)|0;return A|0}function Qg(e,A){e=e|0;A=A|0;return e|0}function Dg(e,A,r,i,a,t){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;t=t|0;var n=0,f=0,l=0;f=(t|0)!=0;if(f)V5[r&127](e,A,i);n=xv(e)|0;while(1){if(!n)break;l=Z5[a&127](n,A)|0;if(l|0)Dg(n,l,r,i,a,t);n=Jv(n)|0}if(!f)V5[r&127](e,A,i);return}function zg(){var e=0,A=0,r=0,f=0,l=0,s=0,c=0,o=0,u=0,b=0,w=0,k=0,d=0,v=0,g=0;g=h;h=h+1200|0;d=g+800|0;r=g;t[46990]=0;t[46991]=-2;A=d;l=200;u=r;w=0;k=0;b=d;e:while(1){a[b>>1]=w;if((A+(l<<1)+-2|0)>>>0>b>>>0)c=l;else{o=b-A>>1;e=o+1|0;if(l>>>0>9999){v=75;break}c=l<<1;c=c>>>0<1e4?c:1e4;f=Z2(c*6|3)|0;if(f){Q6(f|0,A|0,e<<1|0)|0;l=f+(c>>>1<<2)|0;Q6(l|0,u|0,e<<2|0)|0;if((A|0)==(d|0)){e=0;A=f}else{G2(A);e=0;A=f}}else{e=4;l=u}s=(e|0)==0;f=A+(o<<1)|0;switch((s?(A+(c<<1)+-2|0)>>>0>f>>>0?0:9:e)&15){case 9:{e=1;v=76;break e}case 4:{v=75;break e}case 0:{r=s?l+(o<<2)|0:r;u=l;b=s?f:b;break}default:{e=0;break e}}}if((w|0)==6){e=0;v=76;break}e=i[97381+w>>0]|0;s=e<<24>>24;do{if(e<<24>>24!=-18){f=t[46991]|0;if((f|0)==-2){f=uv()|0;t[46991]=f}if((f|0)>=1)if(f>>>0<269)l=n[97461+f>>0]|0;else l=2;else{t[46991]=0;l=0}f=l+s|0;if(f>>>0<=59?(l|0)==(n[97730+f>>0]|0):0){w=i[97790+f>>0]|0;e=w<<24>>24;if(w<<24>>24<1){f=0-e|0;v=23;break}else{t[46991]=-2;r=r+4|0;t[r>>2]=t[46992];s=(k|0)==0?0:k+-1|0;f=b;break}}else v=22}else v=22}while(0);if((v|0)==22){v=0;w=i[97850+w>>0]|0;f=w&255;if(!(w<<24>>24)){f=t[46991]|0;A:do{switch(k|0){case 0:{t[46990]=(t[46990]|0)+1;Wv(143761);f=b;break}case 3:if((f|0)<1)if(!f){e=1;v=76;break e}else{f=b;break A}else{t[46991]=-2;f=b;break A}default:f=b}}while(0);while(1){if(e<<24>>24==18)break;if((f|0)==(A|0)){e=1;v=76;break e}e=f+-2|0;r=r+-4|0;f=e;e=i[97381+(a[e>>1]|0)>>0]|0}r=r+4|0;t[r>>2]=t[46992];e=1;s=3}else v=23}do{if((v|0)==23){v=0;l=n[97930+f>>0]|0;e=t[r+(1-l<<2)>>2]|0;A:do{switch(f|0){case 2:{Wg();Yg();break}case 3:{if(t[46993]|0){Wg();Yg();vk(t[46993]|0)|0;t[46942]=0;t[46993]=0}break}case 6:{Fg(t[r>>2]|0,t[r+-4>>2]|0,t[r+-8>>2]|0);break}case 7:{e=t[r>>2]|0;break}case 8:{e=0;break}case 9:{e=1;break}case 10:{e=0;break}case 11:{e=0;break}case 12:{e=1;break}case 21:if(!(t[r+-4>>2]|0)){Vg();break A}else{Mg();break A}case 24:{Ng();break}case 25:{Ng();break}case 26:{e=1;break}case 27:{e=0;break}case 30:{Rg(t[r>>2]|0,0,0);break}case 31:{Rg(t[r+-8>>2]|0,t[r>>2]|0,0);break}case 32:{Rg(t[r+-16>>2]|0,t[r+-8>>2]|0,t[r>>2]|0);break}case 33:{xg(t[r+-8>>2]|0,t[r+-4>>2]|0);break}case 34:{xg(258,0);break}case 35:{e=258;break}case 36:{e=259;break}case 37:{e=260;break}case 38:{e=t[r+-4>>2]|0;break}case 39:{e=0;break}case 48:{Jg(t[r+-8>>2]|0,t[r>>2]|0);break}case 49:{Jg(t[r>>2]|0,0);break}case 51:{Hg(t[r>>2]|0);break}case 52:{Pg();break}case 53:{e=t[r>>2]|0;break}case 54:{e=0;break}case 55:{e=0;break}case 59:{e=t[r>>2]|0;break}case 60:{e=t[r>>2]|0;break}case 61:{e=t[r>>2]|0;break}case 62:{e=Xg(t[r+-8>>2]|0,t[r>>2]|0)|0;break}default:{}}}while(0);l=0-l|0;w=r+(l<<2)|0;l=b+(l<<1)|0;r=w+4|0;t[w+4>>2]=e;e=(n[97993+f>>0]|0)+-24|0;w=a[l>>1]|0;f=w+(i[98056+e>>0]|0)|0;if(f>>>0<60?(n[97730+f>>0]|0)==(w|0):0){e=i[97790+f>>0]|0;s=k;f=l;break}e=i[98091+e>>0]|0;s=k;f=l}}while(0);l=c;w=e;k=s;b=f+2|0}if((v|0)==75){Wv(140558);e=2;v=76}if((v|0)==76)if((A|0)!=(d|0))G2(A);h=g;return e|0}function Wg(){var e=0,A=0;e=t[46994]|0;while(1){if(!e)break;Kg(e+8|0);Kg((t[46994]|0)+24|0);Kg((t[46994]|0)+16|0);A=Sg(t[46994]|0)|0;t[46994]=A;e=A}return}function Yg(){Yv();Sk(t[46993]|0);return}function Fg(e,A,r){e=e|0;A=A|0;r=r|0;var a=0,n=0,f=0;f=h;h=h+16|0;n=f;a=t[46993]|0;if(!a){i[187980]=A&1|(r&255)<<1&2|i[187980]&-12|8;a=t[46996]|0;i[n>>0]=i[187980]|0;i[n+1>>0]=i[187981]|0;i[n+2>>0]=i[187982]|0;i[n+3>>0]=i[187983]|0;a=hk(e,n,a)|0;t[46993]=a}t[46942]=a;t[46994]=jg(t[46994]|0,a)|0;fv(0,e)|0;h=f;return}function Mg(){var e=0,A=0,r=0,a=0,n=0,f=0;qg(2);r=t[46994]|0;a=i[98126]|0;f=0;e=r+24|0;while(1){A=t[e>>2]|0;if(!A)break;if(((t[A>>2]|0)==267?(n=t[A+4>>2]|0,(i[n>>0]|0)==a<<24>>24):0)?(e1(n,98126)|0)==0:0)e=t[A+8>>2]|0;else e=f;f=e;e=A+12|0}e=r+16|0;e:while(1){r=t[e>>2]|0;e=r+12|0;if(!(t[e>>2]|0))break;A=r+4|0;if((t[r>>2]|0)==262){r=t[A>>2]|0;A=sd(r)|0;while(1){if(!A)continue e;n=hd(t[t[46994]>>2]|0,A,0)|0;tm(n,0,t[e>>2]|0,f);A=cd(r,A)|0}}else while(1){A=t[A>>2]|0;if(!A)continue e;tm(t[A+4>>2]|0,t[A+8>>2]|0,t[e>>2]|0,f);A=A+12|0}}Kg((t[46994]|0)+8|0);Kg((t[46994]|0)+16|0);Kg((t[46994]|0)+24|0);t[(t[46994]|0)+4>>2]=0;return}function Vg(){var e=0;qg(1);e=(t[46994]|0)+8|0;while(1){e=t[e>>2]|0;if(!e)break;am(t[e+4>>2]|0);e=e+12|0}Kg((t[46994]|0)+8|0);Kg((t[46994]|0)+24|0);Kg((t[46994]|0)+16|0);t[(t[46994]|0)+4>>2]=0;return}function Ng(){var e=0,A=0;e=t[46994]|0;A=t[e+8>>2]|0;if(!A){A=t[e+4>>2]|0;if(!A)A=0;else{A=im(A)|0;e=t[46994]|0}t[e+4>>2]=0}else{A=rm(A)|0;e=t[46994]|0;t[e+12>>2]=0;t[e+8>>2]=0}if(A|0)Tg(e+16|0,A);return}function Rg(e,A,r){e=e|0;A=A|0;r=r|0;if(r)A=em(A,r)|0;r=Am(gd(t[t[46994]>>2]|0,e,1)|0,A)|0;Tg((t[46994]|0)+8|0,r);fv(t[46993]|0,e)|0;return}function xg(e,A){e=e|0;A=A|0;var r=0,a=0,n=0;if(A|0)_g();A=(t[46994]|0)+24|0;while(1){A=t[A>>2]|0;if(!A)break;if(!(t[A+8>>2]|0))_g();A=A+12|0}n=(e|0)==260?2:(e|0)==259&1;qg(n);e=t[46994]|0;A=e+24|0;while(1){a=t[A>>2]|0;if(!a)break;do{if((t[a>>2]|0)!=267){A=t[a+4>>2]|0;r=t[e>>2]|0;if(!((i[A+21>>0]|0)!=0&(r|0)==(t[46993]|0))){A=zw(r,n,t[A+8>>2]|0,t[a+8>>2]|0)|0;e=t[46994]|0;if((t[e>>2]|0)!=(t[46993]|0))break}i[A+22>>0]=1}}while(0);A=a+12|0}Kg(e+24|0);return}function Jg(e,A){e=e|0;A=A|0;A=Ug(e,A)|0;Tg((t[46994]|0)+24|0,A);return}function Hg(e){e=e|0;var A=0;A=t[46994]|0;t[46994]=jg(A,Rv(t[A>>2]|0,e,1)|0)|0;fv(t[46993]|0,e)|0;return}function Pg(){var e=0,A=0;e=t[46994]|0;A=t[e>>2]|0;e=Sg(e)|0;t[46994]=e;t[e+4>>2]=A;return}function Xg(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0;n=h;h=h+1024|0;a=n;r=U2(e)|0;r=r+1+(U2(A)|0)|0;if(r>>>0<1025)r=a;else r=Z2(r)|0;$1(r,e)|0;b3(r,A)|0;i=tv(t[46993]|0,r)|0;fv(t[46993]|0,e)|0;fv(t[46993]|0,A)|0;if((r|0)!=(a|0))G2(r);h=n;return i|0}function Sg(e){e=e|0;var A=0;A=t[(t[46994]|0)+32>>2]|0;ad(t[46993]|0,e);return A|0}function jg(e,A){e=e|0;A=A|0;var r=0;r=id(t[46993]|0,36)|0;t[r+32>>2]=e;t[r>>2]=A;return r|0}function Ug(e,A){e=e|0;A=A|0;return Og(267,e,A)|0}function Tg(e,A){e=e|0;A=A|0;var r=0,i=0;r=e+4|0;i=t[r>>2]|0;if(i|0)t[i+12>>2]=A;t[r>>2]=A;if(!(t[e>>2]|0))t[e>>2]=A;return}function Og(e,A,r){e=e|0;A=A|0;r=r|0;var i=0;i=id(t[46993]|0,16)|0;t[i>>2]=e;t[i+4>>2]=A;t[i+8>>2]=r;return i|0}function _g(){var e=0;e=h;h=h+16|0;nw(0,98130,e)|0;h=e;return}function qg(e){e=e|0;var A=0,r=0,a=0,n=0,f=0;n=(e|0)==2;A=(t[46994]|0)+24|0;while(1){A=t[A>>2]|0;if(!A)break;r=A+4|0;a=t[r>>2]|0;if(!((n?(i[a>>0]|0)==(i[98126]|0):0)?!(e1(a,98126)|0):0)){f=zw(t[t[46994]>>2]|0,e,a,0)|0;t[r>>2]=f;if(!f)t[r>>2]=zw(t[t[46994]>>2]|0,e,a,195059)|0;t[A>>2]=266;fv(t[46993]|0,a)|0}A=A+12|0}return}function Kg(e){e=e|0;$g(t[e>>2]|0);t[e+4>>2]=0;t[e>>2]=0;return}function $g(e){e=e|0;var A=0;while(1){if(!e)break;A=t[e+12>>2]|0;switch(t[e>>2]|0){case 265:{$g(t[e+4>>2]|0);break}case 266:case 267:{fv(t[46993]|0,t[e+8>>2]|0)|0;break}default:{}}ad(t[46993]|0,e);e=A}return}function em(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0,f=0;f=h;h=h+1040|0;a=f;n=f+8|0;r=U2(e)|0;r=r+2+(U2(A)|0)|0;if(r>>>0<1025)i=n;else i=Z2(r)|0;t[a>>2]=e;t[a+4>>2]=A;T4(i,98163,a)|0;r=tv(t[46993]|0,i)|0;fv(t[46993]|0,e)|0;fv(t[46993]|0,A)|0;if((i|0)!=(n|0))G2(i);h=f;return r|0}function Am(e,A){e=e|0;A=A|0;return Og(259,e,A)|0}function rm(e){e=e|0;return Og(265,e,0)|0}function im(e){e=e|0;return Og(262,e,0)|0}function am(e){e=e|0;var A=0,r=0;A=(t[46994]|0)+24|0;while(1){A=t[A>>2]|0;if(!A)break;if((t[A>>2]|0)==266?(r=t[A+4>>2]|0,r|0):0)Mw(e,r,t[A+8>>2]|0)|0;A=A+12|0}return}function tm(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0;a=r+4|0;e:do{if((t[r>>2]|0)==262){r=t[a>>2]|0;a=sd(r)|0;while(1){if(!a)break e;nm(e,A,hd(t[t[46994]>>2]|0,a,0)|0,0,i);a=cd(r,a)|0}}else while(1){a=t[a>>2]|0;if(!a)break e;r=hd(t[t[46994]>>2]|0,t[a+4>>2]|0,0)|0;nm(e,A,r,t[a+8>>2]|0,i);a=a+12|0}}while(0);return}function nm(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;var n=0;r=lk(t[t[46994]>>2]|0,e,r,a,1)|0;if(r|0){n=t[r>>2]&3;a=t[((n|0)==2?r:r+-48|0)+40>>2]|0;e=(a|0)==(e|0)?(t[((n|0)==3?r:r+48|0)+40>>2]|0)!=(a|0):0;fm(r,111455,e?i:A);fm(r,111464,e?A:i);am(r)}return}function fm(e,A,r){e=e|0;A=A|0;r=r|0;var i=0;if(r|0){i=zw(t[t[46994]>>2]|0,2,A,0)|0;if(!i)i=zw(t[t[46994]>>2]|0,2,A,195059)|0;Mw(e,i,r)|0}return}function lm(e,A,r){e=e|0;A=A|0;r=r|0;t[46962]=A;t[46993]=e;t[46942]=0;e=r|0?r:18600;t[46996]=e;ov(e,A);zg()|0;e=t[46942]|0;if(!e){Mv();e=t[46942]|0}return e|0}function sm(e,A){e=e|0;A=A|0;return lm(0,e,A)|0}function cm(e){e=e|0;var A=0,r=0,a=0,n=0,f=0,l=0,s=0,c=0;c=h;h=h+16|0;s=c+8|0;l=c;A=t[e+76>>2]|0;a=t[e>>2]|0;if((A|0)!=0?(r=t[A>>2]|0,(r|0)!=0):0){F5[r&127](e);n=12}else n=4;do{if((n|0)==4)if((t[e+40>>2]|0)==0?(f=e+36|0,(t[f>>2]|0)==0):0){if(i[a+13>>0]|0)om(e);A=e+32|0;r=t[A>>2]|0;if(!r){t[f>>2]=t[15679];n=12;break}a=F3(r,106512)|0;t[f>>2]=a;if(!a){s=t[(t[e+12>>2]|0)+16>>2]|0;f=t[A>>2]|0;A=A1(t[(R2()|0)>>2]|0)|0;t[l>>2]=f;t[l+4>>2]=A;M5[s&63](98169,l);A=1}else n=12}else n=12}while(0);if((n|0)==12)if(!(t[e+152>>2]&1024))A=0;else{M5[t[(t[e+12>>2]|0)+16>>2]&63](98207,s);A=1}h=c;return A|0}function om(e){e=e|0;var A=0,r=0,a=0,n=0,f=0,l=0;f=h;h=h+112|0;r=f;n=f+4|0;A=t[e+24>>2]|0;if(!A)i[n>>0]=0;else{t[r>>2]=A+1;T4(n,98225,r)|0}r=t[e+20>>2]|0;r=r|0?r:98229;A=U2(r)|0;l=U2(n)|0;a=e+52|0;l=A+1+l+(U2(t[a>>2]|0)|0)|0;A=l+11|0;if((t[46997]|0)>>>0<(l+1|0)>>>0){t[46997]=A;A=Q2(t[46998]|0,A)|0;t[46998]=A}else A=t[46998]|0;$1(A,r)|0;b3(t[46998]|0,n)|0;A=t[46998]|0;A=A+(U2(A)|0)|0;i[A>>0]=46;i[A+1>>0]=0;A=o3(t[a>>2]|0)|0;a=t[46998]|0;while(1){r=u3(A,58)|0;if(!r)break;b3(a,r+1|0)|0;l=t[46998]|0;n=l+(U2(l)|0)|0;i[n>>0]=46;i[n+1>>0]=0;i[r>>0]=0;a=l}b3(a,A)|0;G2(A);t[e+32>>2]=t[46998];h=f;return}function um(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0,n=0,f=0;f=h;h=h+16|0;n=f+8|0;a=f;if((A|0)!=0&(r|0)!=0){if(t[e+152>>2]&1024|0){M5[t[(t[e+12>>2]|0)+16>>2]&63](98207,a);Ue(1)}if((bm(e,A,r)|0)==(r|0))i=r;else{a=t[(t[e+12>>2]|0)+16>>2]|0;t[n>>2]=r;M5[a&63](98239,n);Ue(1)}}else i=0;h=f;return i|0}function bm(e,A,r){e=e|0;A=A|0;r=r|0;var a=0,n=0,f=0,l=0,s=0,c=0,o=0,u=0,b=0;b=h;h=h+16|0;u=b;a=t[(t[e>>2]|0)+104>>2]|0;do{if(!a){s=e+40|0;f=t[s>>2]|0;if(!f){r=G3(A,1,r,t[e+36>>2]|0)|0;break}a=e+44|0;l=e+48|0;n=t[l>>2]|0;do{if(((t[a>>2]|0)+-1-n|0)>>>0>>0){n=r+4096+n&-4096;t[a>>2]=n;a=Q2(f,n)|0;t[s>>2]=a;if(!a){M5[t[(t[e+12>>2]|0)+16>>2]&63](98264,u);Ue(1)}else{c=a;o=t[l>>2]|0;break}}else{c=f;o=n}}while(0);Q6(c+o|0,A|0,r|0)|0;u=(t[l>>2]|0)+r|0;t[l>>2]=u;i[(t[s>>2]|0)+u>>0]=0}else r=L5[a&63](e,A,r)|0}while(0);h=b;return r|0}function hm(e,A){e=e|0;A=A|0;var r=0;r=U2(A)|0;A=(um(e,A,r)|0)==(r|0);return(A?1:-1)|0}function wm(e,A){e=e|0;A=A|0;var r=0,a=0;r=h;h=h+16|0;a=r;i[a>>0]=A;e=(um(e,a,1)|0)==1;h=r;return(e?A:-1)|0}function km(e){e=e|0;var A=0;A=t[e+36>>2]|0;if(((A|0)!=0?(i[e+144>>0]|0)==0:0)?(t[(t[e>>2]|0)+104>>2]|0)==0:0)e=m3(A)|0;else e=0;return e|0}function dm(e){e=e|0;var A=0,r=0;A=t[e+76>>2]|0;if(A|0?(r=t[A+4>>2]|0,r|0):0)F5[r&127](e);km(e)|0;return}function vm(e){e=e|0;var A=0,r=0,i=0;i=h;h=h+16|0;r=t[e+76>>2]|0;if(t[e+152>>2]&1024|0){M5[t[(t[e+12>>2]|0)+16>>2]&63](98291,i);Ue(1)}if((r|0)!=0?(A=t[r+8>>2]|0,(A|0)!=0):0)F5[A&127](e);else{km(e)|0;gm(e)}h=i;return}function gm(e){e=e|0;var A=0,r=0,a=0;A=e+32|0;if((t[A>>2]|0?(r=e+36|0,a=t[r>>2]|0,(a|0)!=(t[15679]|0)):0)?(i[e+144>>0]|0)==0:0){if(a|0){k3(a)|0;t[r>>2]=0}t[A>>2]=0}return}function mm(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0,n=0,f=0,l=0;l=h;h=h+1056|0;a=l;f=l+24|0;n=l+8|0;t[n>>2]=r;i=h4(f,1024,A,n)|0;if((i|0)>=0){if((i|0)>1023){i=$F(i+1|0)|0;t[n>>2]=r;a=i;i=O4(i,A,n)|0}else a=f;um(e,a,i)|0;if((a|0)!=(f|0))G2(a)}else{t[a>>2]=A1(t[(R2()|0)>>2]|0)|0;nw(1,98308,a)|0}h=l;return}function pm(e,A){e=e|0;A=+A;var r=0,i=0,a=0;r=h;h=h+16|0;i=r;a=Em(i,A)|0;um(e,a,t[i>>2]|0)|0;h=r;return}function Em(e,A){e=e|0;A=+A;var r=0,a=0,n=0,f=0,l=0,s=0,c=0,o=0;if(!(A<-1.0e15))if(!(A>1.0e15)){A=A*1.0e4;a=~~((A<0.0?-.5:.5)+A);if(!a){a=138394;r=1}else{o=(a|0)<0;c=4;l=0;r=194826;a=o?0-a|0:a;while(1){if(!((a|0)!=0|(c|0)>0))break;n=(a|0)%10|0;s=(a|0)/10|0;f=r+-1|0;if((n|0)==0&l<<24>>24==0)a=0;else{i[f>>0]=n|48;a=1;r=f}if((c|0)==1)if(!(a<<24>>24))a=1;else{r=r+-1|0;i[r>>0]=46;a=1}c=c+-1|0;l=a;a=s}if(o){r=r+-1|0;i[r>>0]=45}a=r;r=194826-r|0}}else{a=98323;r=18}else{a=98322;r=19}t[e>>2]=r;return a|0}function Bm(e,A){e=e|0;A=A|0;var r=0,i=0,a=0;r=h;h=h+16|0;i=r;a=Em(i,+c[A>>3])|0;um(e,a,t[i>>2]|0)|0;um(e,102604,1)|0;A=Em(i,+c[A+8>>3])|0;um(e,A,t[i>>2]|0)|0;h=r;return}function ym(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0,n=0,f=0;n=h;h=h+16|0;a=n;i=0;while(1){f=A+(i<<4)|0;t[a>>2]=t[f>>2];t[a+4>>2]=t[f+4>>2];t[a+8>>2]=t[f+8>>2];t[a+12>>2]=t[f+12>>2];Bm(e,a);i=i+1|0;if((i|0)>=(r|0))break;um(e,102604,1)|0}h=n;return}function Cm(e,A){e=e|0;A=A|0;var r=0;r=KF(392)|0;if(r|0){t[r>>2]=20156;t[r+16>>2]=23;t[r+32>>2]=e;t[r+36>>2]=A}return r|0}function Im(e){e=e|0;var A=0,r=0,i=0,a=0;A=KF(392)|0;r=A;i=e;a=r+40|0;do{t[r>>2]=t[i>>2];r=r+4|0;i=i+4|0}while((r|0)<(a|0));a=A+60|0;i=e+60|0;t[a>>2]=t[i>>2];t[a+4>>2]=t[i+4>>2];t[a+8>>2]=t[i+8>>2];t[a+12>>2]=t[i+12>>2];t[a+16>>2]=t[i+16>>2];a=A+80|0;i=e+80|0;t[a>>2]=t[i>>2];t[a+4>>2]=t[i+4>>2];t[a+8>>2]=t[i+8>>2];t[a+12>>2]=t[i+12>>2];t[a+16>>2]=t[i+16>>2];return A|0}function Zm(e){e=e|0;Ym(e);G2(e);return}function Gm(e,A){e=e|0;A=A|0;var r=0,i=0;i=e+160|0;r=t[i>>2]|0;if(r){i=t[46999]|0;if(i){r=t[i+4>>2]|0;if(!r){r=KF(632)|0;t[(t[46999]|0)+4>>2]=r}}}else{r=KF(632)|0;t[i>>2]=r;t[e+164>>2]=r}t[46999]=r;t[r+32>>2]=A;t[r>>2]=e;return}function Lm(e,A){e=e|0;A=A|0;var r=0,i=0;i=e+160|0;r=t[i>>2]|0;if(r){i=t[47e3]|0;if(i){r=t[i+4>>2]|0;if(!r){r=KF(632)|0;t[(t[47e3]|0)+4>>2]=r}}}else{r=KF(632)|0;t[i>>2]=r;t[e+164>>2]=r}t[47e3]=r;t[r+52>>2]=A;t[r>>2]=e;return(Vm(e,3,A)|0)!=0|0}function Qm(e){e=e|0;var A=0;A=t[e+160>>2]|0;t[e+164>>2]=A;return A|0}function Dm(e){e=e|0;var A=0,r=0,i=0;e=e+164|0;A=t[e>>2]|0;r=t[A+4>>2]|0;if(r|0?(i=r+52|0,(t[i>>2]|0)==0):0)t[i>>2]=t[A+52>>2];t[e>>2]=r;return r|0}function zm(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0;i=e+8|0;a=A+10|0;if((t[i>>2]|0)>(A|0))e=t[e>>2]|0;else{t[i>>2]=a;a=AM(t[e>>2]|0,a<<2)|0;t[e>>2]=a;e=a}t[e+(A<<2)>>2]=r;return}function Wm(e){e=e|0;var A=0;A=t[e>>2]|0;if(A|0)G2(A);t[e>>2]=0;t[e+8>>2]=0;t[e+4>>2]=0;return}function Ym(e){e=e|0;var A=0,r=0,i=0;r=e+160|0;A=t[r>>2]|0;while(1){if(!A)break;i=t[A+4>>2]|0;Wm(A+604|0);Wm(A+592|0);G2(t[A+584>>2]|0);G2(t[A+588>>2]|0);G2(A);A=i}t[47e3]=0;t[46999]=0;t[e+192>>2]=0;t[e+164>>2]=0;t[r>>2]=0;t[e+28>>2]=0;return}function Fm(e,A,r,a,n,f){e=e|0;A=A|0;r=r|0;a=a|0;n=n|0;f=f|0;var l=0,s=0,c=0,o=0,u=0;u=h;h=h+128|0;c=u+64|0;o=u;X4(c,r,63)|0;l=C1(c,58)|0;if(l|0)i[l>>0]=0;e=e+60+(A<<2)|0;while(1){A=t[e>>2]|0;if(!A){A=e;e=0;break}X4(o,t[A+4>>2]|0,63)|0;A=C1(o,58)|0;if(A|0)i[A>>0]=0;if((e1(c,o)|0)<1){s=9;break}e=t[e>>2]|0}while(1){if((s|0)==9){A=e;e=t[e>>2]|0}if(!e)break;X4(o,t[e+4>>2]|0,63)|0;e=C1(o,58)|0;if(e|0)i[e>>0]=0;if(e1(c,o)|0)break;e=t[A>>2]|0;if((t[e+8>>2]|0)<=(a|0))break;s=9}o=$F(20)|0;t[o>>2]=t[A>>2];t[A>>2]=o;t[o+4>>2]=r;t[o+8>>2]=a;t[o+12>>2]=n;t[o+16>>2]=f;h=u;return 1}function Mm(e,A){e=e|0;A=A|0;A=h;h=h+16|0;nw(1,98396,A)|0;h=A;return 0}function Vm(e,A,r){e=e|0;A=A|0;r=r|0;var a=0,n=0,f=0,l=0,s=0,c=0,o=0,u=0,b=0,w=0,k=0,d=0,v=0;v=h;h=h+144|0;d=v;b=v+80|0;w=v+16|0;u=(A+-3|0)>>>0<2?0:A;X4(b,r,63)|0;r=C1(b,58)|0;if(r){a=r+1|0;i[r>>0]=0;r=C1(a,58)|0;if(!r)o=0;else{i[r>>0]=0;o=r+1|0}}else{o=0;a=0}l=(a|0)!=0;s=(o|0)==0;c=(u|0)==(A|0);f=e+60+(A<<2)|0;e:while(1){r=t[f>>2]|0;if(!r){r=0;break}X4(w,t[r+4>>2]|0,63)|0;r=C1(w,58)|0;if(!r)r=0;else{i[r>>0]=0;r=r+1|0}do{if(!(e1(w,b)|0)){n=(r|0)!=0;if(l&n?e1(r,a)|0:0)break;if(!s?e1(o,t[(t[(t[f>>2]|0)+12>>2]|0)+8>>2]|0)|0:0)break;if(c|n^1){k=16;break e}if(Vm(e,u,r)|0){k=16;break e}}}while(0);f=t[f>>2]|0}do{if((k|0)==16){r=t[f>>2]|0;if(r){a=r+16|0;if((t[a>>2]|0)==0?(Mm(0,0)|0,(t[a>>2]|0)==0):0){r=0;break}if((t[e+8>>2]|0)>0){k=t[15712]|0;b=t[r+4>>2]|0;w=t[(t[r+12>>2]|0)+8>>2]|0;t[d>>2]=t[20168+(A<<2)>>2];t[d+4>>2]=b;t[d+8>>2]=w;a3(k,98427,d)|0}}else r=0}}while(0);t[e+80+(A<<2)>>2]=r;h=v;return r|0}function Nm(e,A,r){e=e|0;A=A|0;r=r|0;var a=0,n=0,f=0,l=0;do{if(!r)r=0;else{if(t[5047]|0){cw(188004,0,0);t[5047]=0}f=o3(r)|0;r=C1(f,58)|0;if(r){i[r>>0]=0;a=e+60+(A<<2)|0;r=1;n=a;while(1){e=t[n>>2]|0;if(!e)break;A=o3(t[e+4>>2]|0)|0;e=C1(A,58)|0;if(e|0)i[e>>0]=0;if(!((i[f>>0]|0)!=0?(N1(f,A)|0)!=0:0)){r=t[47002]|0;if(r>>>0>=(t[47003]|0)>>>0){ow(188004,1)|0;r=t[47002]|0}t[47002]=r+1;i[r>>0]=32;bw(188004,t[(t[n>>2]|0)+4>>2]|0)|0;r=t[47002]|0;if(r>>>0>=(t[47003]|0)>>>0){ow(188004,1)|0;r=t[47002]|0}t[47002]=r+1;i[r>>0]=58;bw(188004,t[(t[(t[n>>2]|0)+12>>2]|0)+8>>2]|0)|0;r=0}G2(A);n=t[n>>2]|0}G2(f);if(r<<24>>24){n=0;l=19}}else{G2(f);n=0;a=e+60+(A<<2)|0;r=1;l=19}if((l|0)==19){while(1){e=t[a>>2]|0;if(!e)break;A=o3(t[e+4>>2]|0)|0;e=C1(A,58)|0;if(e|0)i[e>>0]=0;if(!((n|0)!=0?(N1(n,A)|0)==0:0)){r=t[47002]|0;if(r>>>0>=(t[47003]|0)>>>0){ow(188004,1)|0;r=t[47002]|0}t[47002]=r+1;i[r>>0]=32;bw(188004,A)|0;r=0}n=A;a=t[a>>2]|0;l=19}if(r<<24>>24){r=195059;break}}r=t[47002]|0;if(r>>>0>=(t[47003]|0)>>>0){ow(188004,1)|0;r=t[47002]|0}i[r>>0]=0;r=t[47001]|0;t[47002]=r}}while(0);return r|0}function Rm(e){e=e|0;var A=0;if(!e)ge(111208,98444,573,98458);if(!(i[e>>0]|0))ge(111213,98444,574,98458);A=t[47005]|0;if(!A)e=0;else e=L5[t[A>>2]&63](A,e,512)|0;return e|0}function xm(e){e=e|0;var A=0,r=0,a=0,n=0,f=0,l=0,s=0,c=0;c=h;h=h+16|0;s=c+8|0;l=c;if(!e)ge(111312,98444,589,98475);n=e+8|0;r=t[n>>2]|0;if(!r)ge(111315,98444,590,98475);if(!(i[r>>0]|0))ge(111324,98444,591,98475);f=e+20|0;a=t[f>>2]|0;do{if(!a){A=Lx(r)|0;if(!A){t[l>>2]=t[n>>2];nw(0,98499,l)|0;A=0;break}l=F3(A,138821)|0;t[f>>2]=l;if(!l){t[s>>2]=A1(t[(R2()|0)>>2]|0)|0;t[s+4>>2]=A;nw(0,98524,s)|0;A=0;break}A=t[47006]|0;if((A|0)>49){i[e+17>>0]=1;A=1;break}else{t[47006]=A+1;A=1;break}}else{O3(a,0,0)|0;if(!(t[f>>2]|0))ge(98545,98444,614,98475);else A=1}}while(0);h=c;return A|0}function Jm(e){e=e|0;var A=0,r=0;if(i[e+17>>0]|0?(A=e+20|0,r=t[A>>2]|0,r|0):0){k3(r)|0;t[A>>2]=0}return}function Hm(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0.0,n=0.0;if(!A){i=-1;r=-1}else{i=t[A+48>>2]|0;a=+(i|0);if(!i){n=+c[r>>3];a=+c[r+8>>3]}else{c[r+8>>3]=a;c[r>>3]=a;n=a}i=~~(+((t[A+40>>2]|0)*72|0)/n);r=~~(+((t[A+44>>2]|0)*72|0)/a)}t[e>>2]=i;t[e+4>>2]=r;return}function Pm(e,A,r){e=e|0;A=A|0;r=r|0;var a=0,n=0,f=0,l=0,s=0,o=0,u=0.0;o=h;h=h+48|0;a=o+16|0;l=o;s=o+32|0;if((r|0)!=0?(i[r>>0]|0)!=0:0){if((0==0?(n=t[47133]|0,(t[47007]|0)!=(n|0)):0)?(t[47007]=n,f=t[47005]|0,f|0):0){Ph(f)|0;t[47005]=0}u=+c[(t[(t[A+16>>2]|0)+8>>2]|0)+24>>3];u=!(u>=1.0)?96.0:u;c[l+8>>3]=u;c[l>>3]=u;A=Xm(r)|0;t[a>>2]=t[l>>2];t[a+4>>2]=t[l+4>>2];t[a+8>>2]=t[l+8>>2];t[a+12>>2]=t[l+12>>2];Hm(s,A,a);A=t[s>>2]|0;a=t[s+4>>2]|0}else{A=-1;a=-1}t[e>>2]=A;t[e+4>>2]=a;h=o;return}function Xm(e){e=e|0;var A=0,r=0,i=0,a=0;a=h;h=h+16|0;i=a;if(!e)ge(111208,98444,638,98551);if(!(t[47005]|0))t[47005]=Uh(20192,t[4589]|0)|0;A=Rm(e)|0;e:do{if(!A){A=KF(64)|0;if(!A)A=0;else{r=A+8|0;t[r>>2]=tv(0,e)|0;if(!((xm(A)|0)<<24>>24)){Sm(A);A=0;break}if(!(t[A+20>>2]|0))ge(98545,98444,653,98551);do{switch(jm(A)|0){case 0:{e=CN(t[r>>2]|0)|0;t[A+52>>2]=e;if(!e){t[i>>2]=t[r>>2];nw(0,98568,i)|0;Sm(A);A=0;break e}break}case 2:{Um(A);break}case 3:{Tm(A);break}case 1:{Om(A);break}case 4:{_m(A);break}case 6:{qm(A);break}case 11:{Km(A);break}case 8:{$m(A);break}case 5:{ep(A);break}case 12:{Ap(A);break}default:{}}}while(0);Jm(A);i=t[47005]|0;L5[t[i>>2]&63](i,A,1)|0}}else Jm(A)}while(0);h=a;return A|0}function Sm(e){e=e|0;var A=0;A=t[e+8>>2]|0;if(A|0)fv(0,A)|0;G2(e);return}function jm(e){e=e|0;var A=0,r=0,i=0,a=0,n=0,f=0,l=0,s=0;s=h;h=h+224|0;a=s+200|0;n=s;f=e+20|0;A=t[f>>2]|0;e:do{if((A|0)!=0?(t6(a,1,20,A)|0)==20:0){r=0;while(1){if(r>>>0>=10){l=13;break e}if(!(F4(a,t[20228+(r<<4)>>2]|0,t[20228+(r<<4)+4>>2]|0)|0))break;r=r+1|0}i=e+28|0;t[i>>2]=t[20228+(r<<4)+12>>2];A=t[20228+(r<<4)+8>>2]|0;e=e+24|0;t[e>>2]=A;switch(r|0){case 7:break;case 8:{if(F4(a+8|0,98784,4)|0)break e;t[i>>2]=98789;t[e>>2]=11;A=11;break e}default:break e}while(1){if(!(N4(n,200,t[f>>2]|0)|0)){l=11;break}if(!(F4(n,98779,4)|0)){l=8;break}}if((l|0)==8){t[i>>2]=101803;t[e>>2]=8;A=8;break}else if((l|0)==11){A=t[e>>2]|0;break}}else l=13}while(0);if((l|0)==13){t[e+28>>2]=98794;t[e+24>>2]=0;A=0}h=s;return A|0}function Um(e){e=e|0;var A=0,r=0,i=0,a=0;a=h;h=h+16|0;A=a+4|0;r=a;t[e+48>>2]=0;i=e+20|0;O3(t[i>>2]|0,6,0)|0;if((cp(t[i>>2]|0,2,A)|0)<<24>>24?(cp(t[i>>2]|0,2,r)|0)<<24>>24:0){t[e+40>>2]=t[A>>2];t[e+44>>2]=t[r>>2]}h=a;return}function Tm(e){e=e|0;var A=0,r=0,i=0,a=0;a=h;h=h+16|0;A=a+4|0;r=a;t[e+48>>2]=0;i=e+20|0;O3(t[i>>2]|0,16,0)|0;if((rp(t[i>>2]|0,4,A)|0)<<24>>24?(rp(t[i>>2]|0,4,r)|0)<<24>>24:0){t[e+40>>2]=t[A>>2];t[e+44>>2]=t[r>>2]}h=a;return}function Om(e){e=e|0;var A=0,r=0,i=0,a=0,n=0,f=0;f=h;h=h+16|0;A=f+12|0;r=f+8|0;i=f+4|0;a=f;t[e+48>>2]=0;n=e+20|0;O3(t[n>>2]|0,16,0)|0;if((((cp(t[n>>2]|0,2,A)|0)<<24>>24?(cp(t[n>>2]|0,2,r)|0)<<24>>24:0)?(cp(t[n>>2]|0,2,i)|0)<<24>>24:0)?(cp(t[n>>2]|0,2,a)|0)<<24>>24:0){t[e+40>>2]=t[A>>2]<<16|t[r>>2];t[e+44>>2]=t[i>>2]<<16|t[a>>2]}h=f;return}function _m(e){e=e|0;var A=0,r=0,i=0,a=0,n=0,f=0,l=0,s=0,c=0,o=0;o=h;h=h+32|0;A=o+16|0;i=o+12|0;a=o+8|0;f=o+4|0;l=o;t[e+48>>2]=0;s=e+20|0;while(1){if(!((rp(t[s>>2]|0,1,A)|0)<<24>>24))break;r=t[A>>2]|0;if((r|0)==255)continue;if(C1(98767,r)|0)continue;if((r|0)==192){c=6;break}n=t[s>>2]|0;if((r|0)==194){c=11;break}if(!((rp(n,2,i)|0)<<24>>24))break;O3(t[s>>2]|0,(t[i>>2]|0)+-2|0,1)|0}if((c|0)==6){if(((rp(t[s>>2]|0,3,l)|0)<<24>>24?(rp(t[s>>2]|0,2,a)|0)<<24>>24:0)?(rp(t[s>>2]|0,2,f)|0)<<24>>24:0){t[e+44>>2]=t[a>>2];t[e+40>>2]=t[f>>2]}}else if((((c|0)==11?(rp(n,3,l)|0)<<24>>24:0)?(rp(t[s>>2]|0,2,a)|0)<<24>>24:0)?(rp(t[s>>2]|0,2,f)|0)<<24>>24:0){t[e+44>>2]=t[a>>2];t[e+40>>2]=t[f>>2]}h=o;return}function qm(e){e=e|0;var A=0,r=0,i=0,a=0,n=0,f=0,l=0,s=0,c=0,o=0;o=h;h=h+1056|0;s=o;A=o+32|0;i=o+28|0;a=o+24|0;n=o+20|0;f=o+16|0;t[e+48>>2]=72;l=e+20|0;O3(t[l>>2]|0,0,0)|0;while(1){if(!(N4(A,1024,t[l>>2]|0)|0))break;r=R4(A,98752)|0;if(!r)continue;t[s>>2]=i;t[s+4>>2]=a;t[s+8>>2]=n;t[s+12>>2]=f;if((V3(r,104311,s)|0)==4){c=5;break}}if((c|0)==5){s=t[i>>2]|0;t[e+32>>2]=s;c=t[a>>2]|0;t[e+36>>2]=c;t[e+40>>2]=(t[n>>2]|0)-s;t[e+44>>2]=(t[f>>2]|0)-c}h=o;return}function Km(e){e=e|0;var A=0,r=0,i=0,a=0,n=0,f=0;n=h;h=h+16|0;A=n+4|0;r=n;t[e+48>>2]=0;i=e+20|0;O3(t[i>>2]|0,15,0)|0;f=(o6(t[i>>2]|0)|0)==88;a=t[i>>2]|0;if(f){O3(a,24,0)|0;if((cp(t[i>>2]|0,4,A)|0)<<24>>24?(cp(t[i>>2]|0,4,r)|0)<<24>>24:0){t[e+40>>2]=t[A>>2];t[e+44>>2]=t[r>>2]}}else{O3(a,26,0)|0;if((cp(t[i>>2]|0,2,A)|0)<<24>>24?(cp(t[i>>2]|0,2,r)|0)<<24>>24:0){t[e+40>>2]=t[A>>2];t[e+44>>2]=t[r>>2]}}h=n;return}function $m(e){e=e|0;var A=0,r=0,a=0,n=0,f=0,l=0,s=0,o=0,u=0,b=0,w=0,k=0,d=0,v=0,g=0,m=0,p=0,E=0,B=0,y=0,C=0,I=0,Z=0,G=0,L=0,Q=0,D=0;D=h;h=h+352|0;G=D+80|0;Z=D+72|0;Q=D+64|0;L=D+56|0;I=D+48|0;A=D+40|0;v=D+32|0;g=D+24|0;m=D+16|0;p=D+8|0;E=D;B=D+328|0;y=D+128|0;C=D+96|0;if(!(t[47008]|0)){if(b8(188036,98637,1)|0){t[A>>2]=98637;nw(1,98664,A)|0}t[47008]=188036}o=e+20|0;O3(t[o>>2]|0,0,0)|0;u=C+12|0;b=C+20|0;w=C+8|0;k=C+16|0;d=C+4|0;A=0;n=0;a=0;r=0;e:while(1){if(!(N4(y,200,t[o>>2]|0)|0))break;if(n<<24>>24==0|A<<24>>24==0){f=y;s=r}else break;A:while(1){l=a;r:while(1){while(1){if($8(188036,f,4,C,0)|0){a=l;r=s;continue e}i[f+(t[u>>2]|0)>>0]=0;i[f+(t[b>>2]|0)>>0]=0;r=f+(t[w>>2]|0)|0;a=f+(t[k>>2]|0)|0;f=f+((t[d>>2]|0)+1)|0;if(!(e1(r,141116)|0))break;if(!(e1(r,141048)|0))break r;if(e1(r,98711)|0)continue;t[G>>2]=g;t[G+4>>2]=m;t[G+8>>2]=p;t[G+12>>2]=E;if((V3(a,98719,G)|0)==4)break A}t[I>>2]=v;t[I+4>>2]=B;if((V3(a,98701,I)|0)!=2){t[L>>2]=v;if((V3(a,101209,L)|0)==1){r=1;a=sp(+c[v>>3],98708)|0}else{r=n;a=l}}else{r=1;a=sp(+c[v>>3],B)|0}if(!(A<<24>>24)){A=0;n=r;l=a}else{n=r;r=s;continue e}}t[Q>>2]=v;t[Q+4>>2]=B;if((V3(a,98701,Q)|0)!=2){t[Z>>2]=v;if((V3(a,101209,Z)|0)==1){A=1;r=sp(+c[v>>3],98708)|0}else r=s}else{A=1;r=sp(+c[v>>3],B)|0}if(!(n<<24>>24)){n=0;a=l;s=r}else{a=l;continue e}}A=1;n=1;a=~~(+c[p>>3]+1.0-+c[g>>3])>>>0;r=~~(+c[E>>3]+1.0-+c[m>>3])>>>0}t[e+48>>2]=0;t[e+40>>2]=a;t[e+44>>2]=r;h=D;return}function ep(e){e=e|0;var A=0,r=0,i=0,a=0.0,n=0.0;r=h;h=h+32|0;A=r;t[e+48>>2]=0;i=e+20|0;O3(t[i>>2]|0,0,0)|0;if(!(ip(t[i>>2]|0,A)|0)){n=+c[A>>3];t[e+32>>2]=~~n;a=+c[A+8>>3];t[e+36>>2]=~~a;t[e+40>>2]=~~(+c[A+16>>3]-n);t[e+44>>2]=~~(+c[A+24>>3]-a)}h=r;return}function Ap(e){e=e|0;var A=0,r=0,i=0,a=0;a=h;h=h+16|0;A=a+4|0;r=a;t[e+48>>2]=0;i=e+20|0;O3(t[i>>2]|0,6,0)|0;if((rp(t[i>>2]|0,1,A)|0)<<24>>24?(rp(t[i>>2]|0,1,r)|0)<<24>>24:0){t[e+40>>2]=t[A>>2];t[e+44>>2]=t[r>>2]}h=a;return}function rp(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0;t[r>>2]=0;i=0;while(1){if(i>>>0>=A>>>0){i=1;break}a=o6(e)|0;if(w3(e)|0){i=0;break}t[r>>2]=t[r>>2]<<8|a;i=i+1|0}return i|0}function ip(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0,f=0;f=h;h=h+1040|0;r=f;i=f+16|0;while(1){if(!(N4(i,1024,e)|0)){e=1;break}a=R4(i,98627)|0;if(a|0){n=4;break}}if((n|0)==4){t[r+4>>2]=i;t[r>>2]=a+9;t[r+8>>2]=e;e=ap(r,A)|0}h=f;return e|0}function ap(e,A){e=e|0;A=A|0;var r=0,a=0,n=0;n=h;h=h+1024|0;a=n;tp(e);r=i[t[e>>2]>>0]|0;if(!(r<<24>>24))r=(np(e)|0)&255;else r=r<<24>>24;if((((r|0)==91?(t[e>>2]=(t[e>>2]|0)+1,fp(e,a),(lp(a,A)|0)==0):0)?(fp(e,a),(lp(a,A+8|0)|0)==0):0)?(fp(e,a),(lp(a,A+16|0)|0)==0):0){fp(e,a);r=(lp(a,A+24|0)|0)!=0&1}else r=1;h=n;return r|0}function tp(e){e=e|0;var A=0;A=t[e>>2]|0;while(1){A=i[A>>0]|0;if(!(A<<24>>24))A=(np(e)|0)&255;else A=A<<24>>24;if(!((A&255)<<24>>24))break;if(!(I1(A&255)|0))break;A=(t[e>>2]|0)+1|0;t[e>>2]=A}return}function np(e){e=e|0;var A=0;A=e+4|0;if(!(N4(t[A>>2]|0,1024,t[e+8>>2]|0)|0))e=0;else{A=t[A>>2]|0;t[e>>2]=A;e=i[A>>0]|0}return e|0}function fp(e,A){e=e|0;A=A|0;var r=0,a=0,n=0;tp(e);r=0;a=t[e>>2]|0;while(1){a=i[a>>0]|0;if(!(a<<24>>24))n=(np(e)|0)&255;else n=a<<24>>24;a=n<<24>>24;if(!a)break;if(!((a|0)==46|(a+-48|0)>>>0<10))break;i[A+r>>0]=n;r=r+1|0;a=(t[e>>2]|0)+1|0;t[e>>2]=a;if((r|0)==1023){r=1023;break}}i[A+r>>0]=0;return}function lp(e,A){e=e|0;A=A|0;var r=0.0,i=0,a=0;i=h;h=h+16|0;a=i;r=+e8(e,a);if((t[a>>2]|0)==(e|0))e=1;else{c[A>>3]=r;e=0}h=i;return e|0}function sp(e,A){e=+e;A=A|0;var r=0.0;do{if(!(e1(A,98735)|0)){e=e*72.0;r=e;e=e>=0.0?.5:-.5}else{if(!(e1(A,98738)|0)){e=e*.75;r=e;e=e>=0.0?.5:-.5;break}if(!(e1(A,98741)|0)){e=e*12.0;r=e;e=e>=0.0?.5:-.5;break}if(e1(A,98708)|0?e1(A,98744)|0:0)if(!(e1(A,98746)|0)){e=e*28.346456664;r=e;e=e>=0.0?.5:-.5;break}else{A=(e1(A,98749)|0)==0;r=e*2.8346456663999997;return(A?~~(r+(r>=0.0?.5:-.5)):0)|0}r=e>=0.0?.5:-.5}}while(0);return~~(e+r)|0}function cp(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0;t[r>>2]=0;i=0;while(1){if(i>>>0>=A>>>0){i=1;break}a=o6(e)|0;if(w3(e)|0){i=0;break}t[r>>2]=t[r>>2]|a<<(i<<3);i=i+1|0}return i|0}function op(e,A,r){e=e|0;A=A|0;r=r|0;var i=0;e=t[A+20>>2]|0;if(e|0)k3(e)|0;if(t[A+52>>2]|0?(i=t[A+60>>2]|0,i|0):0)F5[i&127](A);G2(A);return}function up(){var e=0;zw(0,1,108224,105493)|0;e=Cm(0,1)|0;ji(e,0);return e|0}function bp(e,A,r){e=e|0;A=A|0;r=r|0;var a=0,n=0,f=0,l=0,s=0,o=0.0,u=0.0,b=0.0,w=0.0;s=h;h=h+304|0;l=s+24|0;f=s+8|0;a=s;n=s+40|0;if((bi(e,r)|0)!=999)if((hi(e,A)|0)==-1)e=-1;else{e=t[A+16>>2]|0;r=e+16|0;if(!(i[(t[e+8>>2]|0)+81>>0]|0)){w=+c[r>>3];b=+c[e+24>>3];u=+c[e+32>>3];o=+c[e+40>>3];t[l>>2]=~~(w+(w>=0.0?.5:-.5));t[l+4>>2]=~~(b+(b>=0.0?.5:-.5));t[l+8>>2]=~~(u+(u>=0.0?.5:-.5));t[l+12>>2]=~~(o+(o>=0.0?.5:-.5));T4(n,98899,l)|0}else{o=+c[e+24>>3];u=+c[r>>3];b=+c[e+40>>3];w=+c[e+32>>3];t[f>>2]=~~(o+(o>=0.0?.5:-.5));t[f+4>>2]=~~(u+(u>=0.0?.5:-.5));t[f+8>>2]=~~(b+(b>=0.0?.5:-.5));t[f+12>>2]=~~(w+(w>=0.0?.5:-.5));T4(n,98899,f)|0}Sw(A,102671,n,195059)|0;e=0}else{e=Nm(e,1,r)|0;t[a>>2]=r;t[a+4>>2]=e;nw(1,111233,a)|0;e=-1}h=s;return e|0}function hp(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0,n=0,f=0,l=0;l=h;h=h+16|0;n=l;a=t[A+60>>2]|0;Lm(e,r)|0;A=t[e+164>>2]|0;t[A+56>>2]=Zr(A,t[A+52>>2]|0)|0;if((Sd(a,137483,0,1)|0)!=0?(t[(t[a+16>>2]|0)+8>>2]|0)!=0:0)f=5;else if(!(t[A+152>>2]&67108864)){sw(98911,n);A=-1}else f=5;if((f|0)==5){t[A+36>>2]=i;if(!i){f=A+152|0;t[f>>2]=t[f>>2]|134217728}f=fF(e,a)|0;Lr(A);Ym(e);A=f}h=l;return A|0}function wp(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0,n=0,f=0,l=0;l=h;h=h+16|0;n=l;a=t[A+60>>2]|0;Lm(e,r)|0;A=t[e+164>>2]|0;t[A+56>>2]=Zr(A,t[A+52>>2]|0)|0;if((Sd(a,137483,0,1)|0)!=0?(t[(t[a+16>>2]|0)+8>>2]|0)!=0:0)f=5;else if(!(t[A+152>>2]&67108864)){sw(98911,n);A=-1}else f=5;if((f|0)==5){Gm(e,i);f=fF(e,a)|0;Lr(A);vm(A);Ym(e);A=f}h=l;return A|0}function kp(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;var n=0,f=0,l=0,s=0,c=0,o=0;o=h;h=h+16|0;f=o+8|0;n=o;A=t[A+60>>2]|0;Lm(e,r)|0;s=t[e+164>>2]|0;t[s+56>>2]=Zr(s,t[s+52>>2]|0)|0;if((Sd(A,137483,0,1)|0)!=0?(t[(t[A+16>>2]|0)+8>>2]|0)!=0:0)c=5;else if(!(t[s+152>>2]&67108864)){sw(98911,n);A=-1}else c=5;do{if((c|0)==5){if(i|0?(l=Z2(4096)|0,t[i>>2]=l,l|0):0){n=s+40|0;t[n>>2]=l;t[s+44>>2]=4096;r=s+48|0;t[r>>2]=0;A=fF(e,A)|0;Lr(s);if(!A){t[i>>2]=t[n>>2];t[a>>2]=t[r>>2]}Ym(e);break}nw(1,98932,f)|0;A=-1}}while(0);h=o;return A|0}function dp(e,A){e=e|0;A=A|0;Xi(e,0,A);return}function vp(e,A,r,a){e=e|0;A=A|0;r=r|0;a=a|0;var n=0,f=0,l=0,s=0,c=0,o=0,u=0,b=0,w=0,k=0,g=0,m=0,p=0,E=0,B=0,y=0,C=0,I=0,Z=0,L=0,Q=0,D=0,z=0,W=0;W=h;h=h+4288|0;Q=W+8|0;L=W;D=4;z=Z2(40)|0;t[z>>2]=0;C=W+4152|0;I=W+4148|0;Z=W+4128|0;s=W+4112|0;c=W+16|0;d=0;l=re(24,e|0)|0;n=d;d=0;if((n|0)!=0&(v|0)!=0){f=L6(t[n>>2]|0,z|0,D|0)|0;if(!f)aA(n|0,v|0);G=v}else f=-1;e:do{if((f|0)!=1){if(!l){t[A>>2]=0;n=0;break}d=0;u=te(29,r|0,I|0,C|0)|0;n=d;d=0;if((n|0)!=0&(v|0)!=0){f=L6(t[n>>2]|0,z|0,D|0)|0;if(!f)aA(n|0,v|0);G=v}else f=-1;if((f|0)!=1){d=0;o=re(23,40)|0;n=d;d=0;if((n|0)!=0&(v|0)!=0){f=L6(t[n>>2]|0,z|0,D|0)|0;if(!f)aA(n|0,v|0);G=v}else f=-1;if((f|0)!=1){d=0;ke(7,Z|0,s|0,c|0,24,85);n=d;d=0;if((n|0)!=0&(v|0)!=0){f=L6(t[n>>2]|0,z|0,D|0)|0;if(!f)aA(n|0,v|0);G=v}else f=-1;if((f|0)!=1){d=0;r=re(25,e|0)|0;n=d;d=0;if((n|0)!=0&(v|0)!=0){f=L6(t[n>>2]|0,z|0,D|0)|0;if(!f)aA(n|0,v|0);G=v}else f=-1;if((f|0)!=1){s=Z+16|0;l=t[s>>2]|0;n=r;while(1){if(!n)break;d=0;ie(l|0,n|0,0)|0;f=d;d=0;if((f|0)!=0&(v|0)!=0){r=L6(t[f>>2]|0,z|0,D|0)|0;if(!r)aA(f|0,v|0);G=v}else r=-1;if((r|0)==1){y=0;B=s;E=o;p=u;n=G;o=15;break e}d=0;n=ie(86,e|0,n|0)|0;f=d;d=0;if((f|0)!=0&(v|0)!=0){r=L6(t[f>>2]|0,z|0,D|0)|0;if(!r)aA(f|0,v|0);G=v}else r=-1;if((r|0)==1){y=0;B=s;E=o;p=u;n=G;o=15;break e}}z=G6(188068,1,z|0,D|0)|0;D=G;d=0;n=d;d=0;if((n|0)!=0&(v|0)!=0){f=L6(t[n>>2]|0,z|0,D|0)|0;if(!f)aA(n|0,v|0);G=v}else f=-1;if((f|0)==1){y=o;B=s;E=o;p=u;n=G;o=15}else{y=o;B=s;E=o;p=u;n=0;o=15}}else{y=0;B=0;E=o;p=u;n=G;o=15}}else{y=0;B=0;E=o;p=u;n=G;o=15}}else{y=0;B=0;E=o;p=u;n=G;o=15}}else{y=0;B=0;E=0;p=u;n=G;o=15}}else{y=0;B=0;E=0;p=0;n=G;o=15}}while(0);do{if((o|0)==15){e:while(1){A:do{if(!n){d=0;r=re(25,e|0)|0;n=d;d=0;if((n|0)!=0&(v|0)!=0){f=L6(t[n>>2]|0,z|0,D|0)|0;if(!f)aA(n|0,v|0);G=v}else f=-1;if((f|0)==1){k=p;g=E;m=B;o=y;n=G;p=k;E=g;B=m;y=o;o=15;continue e}m=p+(t[I>>2]|0)|0;c=0;o=0;s=0;while(1){if(!r)break;d=0;n=ie(t[B>>2]|0,r|0,-1)|0;f=d;d=0;if((f|0)!=0&(v|0)!=0){l=L6(t[f>>2]|0,z|0,D|0)|0;if(!l)aA(f|0,v|0);G=v}else l=-1;if((l|0)==1){k=p;g=E;m=B;o=y;n=G;p=k;E=g;B=m;y=o;o=15;continue e}if((n|0)==0?(i[(t[r+16>>2]|0)+119>>0]|0)==3:0){if(!o){d=0;t[L>>2]=s;te(30,m|0,137395,L|0)|0;n=d;d=0;if((n|0)!=0&(v|0)!=0){f=L6(t[n>>2]|0,z|0,D|0)|0;if(!f)aA(n|0,v|0);G=v}else f=-1;if((f|0)==1){k=p;g=E;m=B;o=y;n=G;p=k;E=g;B=m;y=o;o=15;continue e}d=0;l=te(31,e|0,p|0,1)|0;n=d;d=0;if((n|0)!=0&(v|0)!=0){f=L6(t[n>>2]|0,z|0,D|0)|0;if(!f)aA(n|0,v|0);G=v}else f=-1;if((f|0)==1){k=p;g=E;m=B;o=y;n=G;p=k;E=g;B=m;y=o;o=15;continue e}d=0;ne(53,l|0,137483,280,1)|0;n=d;d=0;if((n|0)!=0&(v|0)!=0){f=L6(t[n>>2]|0,z|0,D|0)|0;if(!f)aA(n|0,v|0);G=v}else f=-1;if((f|0)==1){k=p;g=E;m=B;o=y;n=G;p=k;E=g;B=m;y=o;o=15;continue e}t[y+(s<<2)>>2]=l;c=1;s=s+1|0}else l=o;d=0;ne(54,e|0,r|0,l|0,Z|0)|0;n=d;d=0;if((n|0)!=0&(v|0)!=0){f=L6(t[n>>2]|0,z|0,D|0)|0;if(!f)aA(n|0,v|0);G=v}else f=-1;if((f|0)==1){k=p;g=E;m=B;o=y;n=G;p=k;E=g;B=m;y=o;o=15;continue e}}else l=o;d=0;r=ie(86,e|0,r|0)|0;n=d;d=0;if((n|0)!=0&(v|0)!=0){f=L6(t[n>>2]|0,z|0,D|0)|0;if(!f)aA(n|0,v|0);G=v}else f=-1;if((f|0)==1){k=p;g=E;m=B;o=y;n=G;p=k;E=g;B=m;y=o;o=15;continue e}o=l}d=0;r=re(25,e|0)|0;n=d;d=0;if((n|0)!=0&(v|0)!=0){f=L6(t[n>>2]|0,z|0,D|0)|0;if(!f)aA(n|0,v|0);G=v}else f=-1;if((f|0)==1){k=p;g=E;m=B;o=y;n=G;p=k;E=g;B=m;y=o;o=15;continue e}l=10;u=y;b=E;w=E;g=E;while(1){if(!r){o=0;l=w;r=g;break A}d=0;n=ie(t[B>>2]|0,r|0,-1)|0;f=d;d=0;if((f|0)!=0&(v|0)!=0){o=L6(t[f>>2]|0,z|0,D|0)|0;if(!o)aA(f|0,v|0);G=v}else o=-1;if((o|0)==1){k=p;g=E;m=B;o=y;n=G;p=k;E=g;B=m;y=o;o=15;continue e}if(!n){d=0;t[Q>>2]=s;te(30,m|0,137395,Q|0)|0;n=d;d=0;if((n|0)!=0&(v|0)!=0){f=L6(t[n>>2]|0,z|0,D|0)|0;if(!f)aA(n|0,v|0);G=v}else f=-1;if((f|0)==1){k=p;g=E;m=B;o=y;n=G;p=k;E=g;B=m;y=o;o=15;continue e}d=0;k=te(31,e|0,p|0,1)|0;n=d;d=0;if((n|0)!=0&(v|0)!=0){f=L6(t[n>>2]|0,z|0,D|0)|0;if(!f)aA(n|0,v|0);G=v}else f=-1;if((f|0)==1){k=p;g=E;m=B;o=y;n=G;p=k;E=g;B=m;y=o;o=15;continue e}d=0;ne(53,k|0,137483,280,1)|0;f=d;d=0;if((f|0)!=0&(v|0)!=0){n=L6(t[f>>2]|0,z|0,D|0)|0;if(!n)aA(f|0,v|0);G=v}else n=-1;if((n|0)==1){k=p;g=E;m=B;o=y;n=G;p=k;E=g;B=m;y=o;o=15;continue e}d=0;ne(54,e|0,r|0,k|0,Z|0)|0;n=d;d=0;if((n|0)!=0&(v|0)!=0){f=L6(t[n>>2]|0,z|0,D|0)|0;if(!f)aA(n|0,v|0);G=v}else f=-1;if((f|0)==1){k=p;g=E;m=B;o=y;n=G;p=k;E=g;B=m;y=o;o=15;continue e}if((s|0)==(l|0)){l=s<<1;d=0;o=ie(87,b|0,s<<3|0)|0;n=d;d=0;if((n|0)!=0&(v|0)!=0){f=L6(t[n>>2]|0,z|0,D|0)|0;if(!f)aA(n|0,v|0);G=v}else f=-1;if((f|0)==1){k=p;g=E;m=B;o=y;n=G;p=k;E=g;B=m;y=o;o=15;continue e}n=o;b=o;w=o;f=o}else{n=u;f=g}t[n+(s<<2)>>2]=k;u=n;s=s+1|0;o=f}else o=g;d=0;r=ie(86,e|0,r|0)|0;n=d;d=0;if((n|0)!=0&(v|0)!=0){f=L6(t[n>>2]|0,z|0,D|0)|0;if(!f)aA(n|0,v|0);G=v}else f=-1;if((f|0)==1){k=p;g=E;m=B;o=y;n=G;p=k;E=g;B=m;y=o;o=15;continue e}g=o}}else{o=1;c=0;u=y;s=0;l=E;r=E}}while(0);d=0;oe(108,Z|0);n=d;d=0;if((n|0)!=0&(v|0)!=0){f=L6(t[n>>2]|0,z|0,D|0)|0;if(!f)aA(n|0,v|0);G=v}else f=-1;if((f|0)==1){k=p;g=E;m=B;o=y;n=G;p=k;E=g;B=m;y=o;o=15;continue}if((p|0)!=(C|0)){d=0;oe(105,p|0);n=d;d=0;if((n|0)!=0&(v|0)!=0){f=L6(t[n>>2]|0,z|0,D|0)|0;if(!f)aA(n|0,v|0);G=v}else f=-1;if((f|0)==1){k=p;g=E;m=B;o=y;n=G;p=k;E=g;B=m;y=o;o=15;continue}}if(!o){d=0;n=ie(87,r|0,s<<2|0)|0;f=d;d=0;if((f|0)!=0&(v|0)!=0){r=L6(t[f>>2]|0,z|0,D|0)|0;if(!r)aA(f|0,v|0);G=v}else r=-1;if((r|0)==1){k=p;g=E;m=B;o=y;n=G;p=k;E=g;B=m;y=o;o=15;continue}else{o=58;break}}t[A>>2]=0;n=0;while(1){if((n|0)>=(s|0))break;d=0;re(26,t[u+(n<<2)>>2]|0)|0;f=d;d=0;if((f|0)!=0&(v|0)!=0){r=L6(t[f>>2]|0,z|0,D|0)|0;if(!r)aA(f|0,v|0);G=v}else r=-1;if((r|0)==1){k=p;g=E;m=B;o=y;n=G;p=k;E=g;B=m;y=o;o=15;continue e}n=n+1|0}d=0;oe(105,l|0);n=d;d=0;if((n|0)!=0&(v|0)!=0){f=L6(t[n>>2]|0,z|0,D|0)|0;if(!f)aA(n|0,v|0);G=v}else f=-1;if((f|0)==1){k=p;g=E;m=B;o=y;n=G;p=k;E=g;B=m;y=o;o=15}else{o=56;break}}if((o|0)==56){n=0;break}else if((o|0)==58){t[A>>2]=s;i[a>>0]=c;break}}}while(0);G2(z|0);h=W;return n|0}function gp(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0;if(!((e|0)!=0?(Gp(e)|0)!=0:0))e=98988;i=U2(e)|0;if((i|0)>=104){r=$F(i+25|0)|0;if(!r)r=0;else a=6}else a=6;if((a|0)==6){$1(r,e)|0;t[A>>2]=i}return r|0}function mp(e,A){e=e|0;A=A|0;hd(A,e,1)|0;return}function pp(e,A){e=e|0;A=A|0;var r=0;e=(t[e+16>>2]|0)+157|0;r=i[e>>0]|0;if((A|0)>=0)i[e>>0]=A;return r|0}function Ep(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;t[A>>2]=r;t[A+4>>2]=r+4096;t[A+12>>2]=0;t[A+8>>2]=0;t[e>>2]=A;t[e+4>>2]=A;t[e+8>>2]=r;t[e+12>>2]=i;t[e+16>>2]=a;return}function Bp(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0,n=0,f=0,l=0,s=0,c=0;Ip(i,A);l=i+12|0;s=i+16|0;A=0;e:while(1){c=Zp(i)|0;if(!c)break;A=A+1|0;a=t[l>>2]|0;if(a|0)M5[a&63](c,r);f=ek(e,c)|0;while(1){if(!f)continue e;n=t[f>>2]&3;a=t[((n|0)==3?f:f+48|0)+40>>2]|0;if((a|0)==(c|0))a=t[((n|0)==2?f:f+-48|0)+40>>2]|0;if(!(Z5[t[s>>2]&127](a,-1)|0))Ip(i,a);f=Ak(e,f,c)|0}}return A|0}function yp(e){e=e|0;var A=0;e=t[(t[e>>2]|0)+12>>2]|0;while(1){if(!e)break;A=t[e+12>>2]|0;Cp(e);e=A}return}function Cp(e){e=e|0;G2(t[e>>2]|0);G2(e);return}function Ip(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0,f=0,l=0,s=0,c=0;c=h;h=h+16|0;s=c+8|0;a=c;n=e+8|0;l=e+4|0;r=t[l>>2]|0;if((t[n>>2]|0)==(t[r+4>>2]|0)){r=t[r+12>>2]|0;do{if(!r){i=$F(16)|0;if(!i){nw(1,98969,a)|0;aA(188068,1)}t[i+8>>2]=t[l>>2];t[i+12>>2]=0;r=$F(4e6)|0;t[i>>2]=r;if(!r){nw(1,98969,s)|0;aA(188068,1)}else{t[i+4>>2]=r+4e6;t[(t[l>>2]|0)+12>>2]=i;f=i;break}}else f=r}while(0);t[l>>2]=f;t[n>>2]=t[f>>2]}Z5[t[e+16>>2]&127](A,1)|0;s=t[n>>2]|0;t[n>>2]=s+4;t[s>>2]=A;h=c;return}function Zp(e){e=e|0;var A=0,r=0,i=0,a=0,n=0;a=e+8|0;A=t[a>>2]|0;r=e+4|0;i=t[r>>2]|0;if((A|0)==(t[i>>2]|0))if((i|0)==(t[e>>2]|0))A=0;else{A=t[i+8>>2]|0;t[r>>2]=A;A=t[A+4>>2]|0;t[a>>2]=A;n=4}else n=4;if((n|0)==4){A=A+-4|0;t[a>>2]=A;A=t[A>>2]|0}return A|0}function Gp(e){e=e|0;var A=0;e:while(1){A=e;e=e+1|0;A=i[A>>0]|0;switch(A<<24>>24){case 95:continue e;case 0:{e=1;break e}default:{}}if(!(M1(A&255)|0)){e=0;break}}return e|0}function Lp(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0,n=0,f=0,l=0,s=0,c=0,o=0,u=0,b=0,w=0,k=0,g=0,m=0,p=0,E=0,B=0,y=0,C=0,I=0;I=h;h=h+4272|0;B=I;y=4;C=Z2(40)|0;t[C>>2]=0;m=I+4144|0;p=I+4140|0;E=I+4120|0;f=I+4104|0;l=I+8|0;d=0;a=re(24,e|0)|0;n=d;d=0;if((n|0)!=0&(v|0)!=0){i=L6(t[n>>2]|0,C|0,y|0)|0;if(!i)aA(n|0,v|0);G=v}else i=-1;e:do{if((i|0)!=1)if(a){d=0;c=te(29,r|0,p|0,m|0)|0;i=d;d=0;if((i|0)!=0&(v|0)!=0){r=L6(t[i>>2]|0,C|0,y|0)|0;if(!r)aA(i|0,v|0);G=v}else r=-1;if((r|0)!=1){d=0;s=re(23,40)|0;i=d;d=0;if((i|0)!=0&(v|0)!=0){r=L6(t[i>>2]|0,C|0,y|0)|0;if(!r)aA(i|0,v|0);G=v}else r=-1;if((r|0)!=1){d=0;ke(7,E|0,f|0,l|0,24,85);i=d;d=0;if((i|0)!=0&(v|0)!=0){r=L6(t[i>>2]|0,C|0,y|0)|0;if(!r)aA(i|0,v|0);G=v}else r=-1;if((r|0)!=1){d=0;a=re(25,e|0)|0;i=d;d=0;if((i|0)!=0&(v|0)!=0){r=L6(t[i>>2]|0,C|0,y|0)|0;if(!r)aA(i|0,v|0);G=v}else r=-1;if((r|0)!=1){f=E+16|0;n=t[f>>2]|0;i=a;while(1){if(!i)break;d=0;ie(n|0,i|0,0)|0;r=d;d=0;if((r|0)!=0&(v|0)!=0){a=L6(t[r>>2]|0,C|0,y|0)|0;if(!a)aA(r|0,v|0);G=v}else a=-1;if((a|0)==1){g=f;k=s;w=c;i=G;s=14;break e}d=0;i=ie(86,e|0,i|0)|0;r=d;d=0;if((r|0)!=0&(v|0)!=0){a=L6(t[r>>2]|0,C|0,y|0)|0;if(!a)aA(r|0,v|0);G=v}else a=-1;if((a|0)==1){g=f;k=s;w=c;i=G;s=14;break e}}C=G6(188068,1,C|0,y|0)|0;y=G;d=0;i=d;d=0;if((i|0)!=0&(v|0)!=0){r=L6(t[i>>2]|0,C|0,y|0)|0;if(!r)aA(i|0,v|0);G=v}else r=-1;if((r|0)==1){g=f;k=s;w=c;i=G;s=14}else{g=f;k=s;w=c;i=0;s=14}}else{g=0;k=s;w=c;i=G;s=14}}else{g=0;k=s;w=c;i=G;s=14}}else{g=0;k=s;w=c;i=G;s=14}}else{g=0;k=0;w=c;i=G;s=14}}else{r=0;i=0}else{g=0;k=0;w=0;i=G;s=14}}while(0);e:do{if((s|0)==14){A:while(1){if(i|0){d=0;oe(108,E|0);i=d;d=0;if((i|0)!=0&(v|0)!=0){r=L6(t[i>>2]|0,C|0,y|0)|0;if(!r)aA(i|0,v|0);G=v}else r=-1;if((r|0)==1){u=w;b=k;s=g;i=G;w=u;k=b;g=s;s=14;continue}d=0;oe(105,k|0);i=d;d=0;if((i|0)!=0&(v|0)!=0){r=L6(t[i>>2]|0,C|0,y|0)|0;if(!r)aA(i|0,v|0);G=v}else r=-1;if((r|0)==1){u=w;b=k;s=g;i=G;w=u;k=b;g=s;s=14;continue}if((w|0)==(m|0)){r=0;i=0;break e}d=0;oe(105,w|0);i=d;d=0;if((i|0)!=0&(v|0)!=0){r=L6(t[i>>2]|0,C|0,y|0)|0;if(!r)aA(i|0,v|0);G=v}else r=-1;if((r|0)==1){u=w;b=k;s=g;i=G;w=u;k=b;g=s;s=14;continue}else{s=19;break}}d=0;a=re(25,e|0)|0;i=d;d=0;if((i|0)!=0&(v|0)!=0){r=L6(t[i>>2]|0,C|0,y|0)|0;if(!r)aA(i|0,v|0);G=v}else r=-1;if((r|0)==1){u=w;b=k;s=g;i=G;w=u;k=b;g=s;s=14;continue}b=w+(t[p>>2]|0)|0;f=10;c=k;i=0;s=k;u=k;while(1){if(!a)break;d=0;r=ie(t[g>>2]|0,a|0,-1)|0;n=d;d=0;if((n|0)!=0&(v|0)!=0){l=L6(t[n>>2]|0,C|0,y|0)|0;if(!l)aA(n|0,v|0);G=v}else l=-1;if((l|0)==1){u=w;b=k;s=g;i=G;w=u;k=b;g=s;s=14;continue A}if(!r){d=0;t[B>>2]=i;te(30,b|0,137395,B|0)|0;r=d;d=0;if((r|0)!=0&(v|0)!=0){n=L6(t[r>>2]|0,C|0,y|0)|0;if(!n)aA(r|0,v|0);G=v}else n=-1;if((n|0)==1){u=w;b=k;s=g;i=G;w=u;k=b;g=s;s=14;continue A}d=0;o=te(31,e|0,w|0,1)|0;r=d;d=0;if((r|0)!=0&(v|0)!=0){n=L6(t[r>>2]|0,C|0,y|0)|0;if(!n)aA(r|0,v|0);G=v}else n=-1;if((n|0)==1){u=w;b=k;s=g;i=G;w=u;k=b;g=s;s=14;continue A}d=0;ne(53,o|0,137483,280,1)|0;r=d;d=0;if((r|0)!=0&(v|0)!=0){n=L6(t[r>>2]|0,C|0,y|0)|0;if(!n)aA(r|0,v|0);G=v}else n=-1;if((n|0)==1){u=w;b=k;s=g;i=G;w=u;k=b;g=s;s=14;continue A}d=0;ne(54,e|0,a|0,o|0,E|0)|0;r=d;d=0;if((r|0)!=0&(v|0)!=0){n=L6(t[r>>2]|0,C|0,y|0)|0;if(!n)aA(r|0,v|0);G=v}else n=-1;if((n|0)==1){u=w;b=k;s=g;i=G;w=u;k=b;g=s;s=14;continue A}if((i|0)==(f|0)){f=i<<1;d=0;l=ie(87,s|0,i<<3|0)|0;r=d;d=0;if((r|0)!=0&(v|0)!=0){n=L6(t[r>>2]|0,C|0,y|0)|0;if(!n)aA(r|0,v|0);G=v}else n=-1;if((n|0)==1){u=w;b=k;s=g;i=G;w=u;k=b;g=s;s=14;continue A}n=l;s=l;r=l}else{n=c;r=u}t[n+(i<<2)>>2]=o;i=i+1|0;c=n;l=r}else l=u;d=0;a=ie(86,e|0,a|0)|0;r=d;d=0;if((r|0)!=0&(v|0)!=0){n=L6(t[r>>2]|0,C|0,y|0)|0;if(!n)aA(r|0,v|0);G=v}else n=-1;if((n|0)==1){u=w;b=k;s=g;i=G;w=u;k=b;g=s;s=14;continue A}u=l}d=0;oe(108,E|0);r=d;d=0;if((r|0)!=0&(v|0)!=0){a=L6(t[r>>2]|0,C|0,y|0)|0;if(!a)aA(r|0,v|0);G=v}else a=-1;if((a|0)==1){u=w;b=k;s=g;i=G;w=u;k=b;g=s;s=14;continue}d=0;r=ie(87,u|0,i<<2|0)|0;a=d;d=0;if((a|0)!=0&(v|0)!=0){n=L6(t[a>>2]|0,C|0,y|0)|0;if(!n)aA(a|0,v|0);G=v}else n=-1;if((n|0)==1){u=w;b=k;s=g;i=G;w=u;k=b;g=s;s=14;continue}if((w|0)==(m|0))break e;d=0;oe(105,w|0);a=d;d=0;if((a|0)!=0&(v|0)!=0){n=L6(t[a>>2]|0,C|0,y|0)|0;if(!n)aA(a|0,v|0);G=v}else n=-1;if((n|0)==1){u=w;b=k;s=g;i=G;w=u;k=b;g=s;s=14}else{s=39;break}}if((s|0)==19){r=0;i=0;break}else if((s|0)==39)break}}while(0);t[A>>2]=i;G2(C|0);h=I;return r|0}function Qp(e,A){e=e|0;A=A|0;var r=0,i=0,a=0;r=0;a=sd(e)|0;while(1){if(!a)break;i=Ow(A,a)|0;while(1){if(!i)break;if(hd(e,t[((t[i>>2]&3|0)==2?i:i+-48|0)+40>>2]|0,0)|0){uk(e,i,1)|0;r=r+1|0}i=qw(A,i)|0}a=cd(e,a)|0}return r|0}function Dp(e){e=e|0;e=Pd(e,98993,0)|0;if(!e)ge(98998,99001,529,99010);else return t[e+8>>2]|0;return 0}function zp(e,A,r){e=e|0;A=A|0;r=r|0;var a=0,n=0,f=0,l=0,s=0,c=0,o=0,u=0,b=0,w=0,k=0,d=0,v=0,g=0,m=0,p=0,E=0;m=h;h=h+4320|0;v=m+24|0;d=m+8|0;k=m;g=m+4184|0;w=m+4160|0;a=m+40|0;if(gk(e)|0){_d(e,0,99019,-12,0);_d(e,1,99031,16,0);b=gp(r,a,g)|0;c=Wp(e)|0;o=$F((gk(c)|0)<<2)|0;Ep(w,m+4144|0,m+48|0,24,88);f=sd(c)|0;u=w+16|0;l=b+(t[a>>2]|0)|0;s=t[15712]|0;r=0;while(1){if(!f)break;if(!(Z5[t[u>>2]&127](f,-1)|0)){t[k>>2]=r;T4(l,99933,k)|0;p=Rv(c,b,1)|0;E=Rv(e,b,1)|0;Sd(E,99019,12,0)|0;i[(Pd(E,99019,0)|0)+8>>0]=1;a=Bp(c,f,p,w)|0;Fp(p,E);n=Mp(E)|0;Vp(e,E);t[o+(r<<2)>>2]=E;Ed(c,p)|0;if(0){t[d>>2]=r;t[d+4>>2]=a;t[d+8>>2]=n;a3(s,99043,d)|0}r=r+1|0}f=cd(c,f)|0}if(0){d=gk(e)|0;p=mk(e)|0;E=Mk(e)|0;t[v>>2]=d;t[v+4>>2]=p;t[v+8>>2]=r;t[v+12>>2]=E;a3(s,99073,v)|0}vk(c)|0;qd(e,0,99019);qd(e,1,99031);yp(w);a=AM(o,r<<2)|0;if((b|0)!=(g|0))G2(b)}else{a=0;r=0}t[A>>2]=r;h=m;return a|0}function Wp(e){e=e|0;var A=0,r=0,a=0,n=0,f=0,l=0;l=h;h=h+16|0;f=l;i[f>>0]=i[18596]|0;i[f+1>>0]=i[18597]|0;i[f+2>>0]=i[18598]|0;i[f+3>>0]=i[18599]|0;f=hk(99120,f,0)|0;xp(f,e);A=sd(e)|0;while(1){if(!A)break;if(!(t[(Pd(A,99031,0)|0)+12>>2]|0)){n=gd(f,Mk(A)|0,1)|0;Sd(n,99031,16,1)|0;t[(t[n+16>>2]|0)+12>>2]=A;t[(Pd(A,99031,0)|0)+12>>2]=n}A=cd(e,A)|0}r=sd(e)|0;while(1){if(!r)break;a=t[(Pd(r,99031,0)|0)+12>>2]|0;A=Ow(e,r)|0;while(1){if(!A)break;n=t[(Pd(t[((t[A>>2]&3|0)==2?A:A+-48|0)+40>>2]|0,99031,0)|0)+12>>2]|0;do{if((n|0)!=(a|0))if(n>>>0>a>>>0){lk(f,a,n,0,1)|0;break}else{lk(f,n,a,0,1)|0;break}}while(0);A=qw(e,A)|0}r=cd(e,r)|0}h=l;return f|0}function Yp(e,A){e=e|0;A=A|0;var r=0;e=(t[e+16>>2]|0)+8|0;r=i[e>>0]|0;if((A|0)>=0)i[e>>0]=A;return r|0}function Fp(e,A){e=e|0;A=A|0;var r=0,i=0,a=0;i=sd(e)|0;while(1){if(!i)break;a=t[(t[i+16>>2]|0)+12>>2]|0;e:do{if((t[a>>2]&3|0)==1)hd(A,a,1)|0;else{r=sd(a)|0;while(1){if(!r)break e;hd(A,r,1)|0;r=cd(a,r)|0}}}while(0);i=cd(e,i)|0}return}function Mp(e){e=e|0;return Qp(e,t[e+60>>2]|0)|0}function Vp(e,A){e=e|0;A=A|0;Np(e,A,0);return}function Np(e,A,r){e=e|0;A=A|0;r=r|0;var a=0,t=0,n=0;n=(r|0)==0;e=xv(e)|0;while(1){if(!e)break;if((i[(Pd(e,99019,0)|0)+8>>0]|0)==0?(t=Rp(e,A,r)|0,t|0):0){if(n)a=(y1(Mk(e)|0,108006,7)|0)==0;else a=1;Np(e,t,a&1)}e=Jv(e)|0}return}function Rp(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0,n=0;i=0;n=sd(e)|0;while(1){if(!n)break;a=gd(A,Mk(n)|0,0)|0;if(a){if(!i)i=Rv(A,Mk(e)|0,1)|0;hd(i,a,1)|0}n=cd(e,n)|0}if((r|0)!=0&(i|0)==0)i=Rv(A,Mk(e)|0,1)|0;if(i|0?(Qp(i,e)|0,jw(e,i)|0,(y1(Mk(i)|0,108006,7)|0)==0):0)t[(Sd(i,98993,12,0)|0)+8>>2]=e;return i|0}function xp(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0,f=0,l=0,s=0,c=0;f=h;h=h+16|0;n=f;r=xv(A)|0;i=t[15712]|0;while(1){if(!r)break;e:do{if(!(y1(Mk(r)|0,108006,7)|0)){a=gd(e,Mk(r)|0,1)|0;Sd(a,99031,16,1)|0;t[(t[a+16>>2]|0)+12>>2]=r;A=sd(r)|0;while(1){if(!A)break e;if(t[(Pd(A,99031,0)|0)+12>>2]|0){c=Mk(A)|0;s=Mk(r)|0;l=Mk(t[(Pd(A,99031,0)|0)+12>>2]|0)|0;t[n>>2]=c;t[n+4>>2]=s;t[n+8>>2]=l;a3(i,99123,n)|0}t[(Pd(A,99031,0)|0)+12>>2]=a;A=cd(r,A)|0}}else xp(e,r)}while(0);r=Jv(r)|0}h=f;return}function Jp(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0,t=0,n=0,f=0,l=0,s=0,o=0,u=0,b=0.0;b=+c[e>>3];l=~~(b+(b>=0.0?.5:-.5));b=+c[e+8>>3];e=~~(b+(b>=0.0?.5:-.5));b=+c[A>>3];n=~~(b+(b>=0.0?.5:-.5));b=+c[A+8>>3];t=~~(b+(b>=0.0?.5:-.5));o=n-l|0;f=((o|0)>-1?o:0-o|0)<<1;o=o>>31|1;u=t-e|0;s=((u|0)>-1?u:0-u|0)<<1;u=u>>31|1;e:do{if((f|0)>(s|0)){a=0-f|0;i=s-(f>>1)|0;A=l;while(1){tV(r,A,e);if((A|0)==(n|0))break e;l=(i|0)>-1;i=i+s+(l?a:0)|0;A=A+o|0;e=(l?u:0)+e|0}}else{a=0-s|0;i=l;A=f-(s>>1)|0;while(1){tV(r,i,e);if((e|0)==(t|0))break e;s=(A|0)>-1;i=(s?o:0)+i|0;A=A+f+(s?a:0)|0;e=e+u|0}}}while(0);return}function Hp(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0,n=0,f=0,l=0,s=0,c=0,o=0,u=0;u=h;h=h+16|0;c=u;s=u+4|0;do{if((e|0)<1)r=0;else{a=i+16|0;if((t[a>>2]|0)>>>0<4){r=Pp(e,A,r,i)|0;break}o=$F(e<<5)|0;r=0;while(1){if((r|0)==(e|0))break;n=t[A+(r<<2)>>2]|0;Xx(n);f=o+(r<<5)|0;n=(t[n+16>>2]|0)+16|0;t[f>>2]=t[n>>2];t[f+4>>2]=t[n+4>>2];t[f+8>>2]=t[n+8>>2];t[f+12>>2]=t[n+12>>2];t[f+16>>2]=t[n+16>>2];t[f+20>>2]=t[n+20>>2];t[f+24>>2]=t[n+24>>2];t[f+28>>2]=t[n+28>>2];r=r+1|0}if((t[a>>2]|0)==4){f=i+28|0;e:do{if(t[f>>2]&2|0){a=i+24|0;t[a>>2]=KF(e<<2)|0;r=0;while(1){if((r|0)==(e|0))break e;n=Hw(t[A+(r<<2)>>2]|0,99190)|0;if(n|0?(t[c>>2]=s,n=(V3(n,137395,c)|0)>0,l=t[s>>2]|0,n&(l|0)>-1):0)t[(t[a>>2]|0)+(r<<2)>>2]=l;r=r+1|0}}}while(0);r=Xp(e,o,i)|0;if(t[f>>2]&2)G2(t[i+24>>2]|0)}else r=0;G2(o)}}while(0);h=u;return r|0}function Pp(e,A,r,a){e=e|0;A=A|0;r=r|0;a=a|0;var n=0,f=0,l=0,s=0,o=0,u=0,b=0,w=0,k=0,d=0,v=0,g=0,m=0,p=0,E=0,B=0,y=0,C=0,I=0,Z=0,G=0,L=0,Q=0,D=0,z=0,W=0.0,Y=0.0,F=0.0,M=0.0;z=h;h=h+144|0;Z=z+136|0;I=z+64|0;D=z+48|0;p=z+40|0;m=z;g=z+120|0;B=z+104|0;G=z+96|0;L=t[a+20>>2]|0;t[B>>2]=0;t[B+4>>2]=0;t[B+8>>2]=0;t[B+12>>2]=0;e:do{if((e|0)>=1){b=(L|0)==0;Q=t[15712]|0;w=g+4|0;k=g+8|0;d=g+12|0;y=B+4|0;E=B+8|0;C=B+12|0;u=0;n=0;while(1){if((u|0)==(e|0))break;v=t[A+(u<<2)>>2]|0;Xx(v);if(!b?(i[L+u>>0]|0)!=0:0){o=t[v+16>>2]|0;W=+c[o+16>>3];f=~~(W+(W>=0.0?.5:-.5));t[g>>2]=f;W=+c[o+24>>3];l=~~(W+(W>=0.0?.5:-.5));t[w>>2]=l;W=+c[o+32>>3];s=~~(W+(W>=0.0?.5:-.5));t[k>>2]=s;W=+c[o+40>>3];o=~~(W+(W>=0.0?.5:-.5));t[d>>2]=o;if(!n){t[B>>2]=t[g>>2];t[B+4>>2]=t[g+4>>2];t[B+8>>2]=t[g+8>>2];t[B+12>>2]=t[g+12>>2]}else{t[B>>2]=t[((t[B>>2]|0)>(f|0)?g:B)>>2];t[y>>2]=t[((t[y>>2]|0)>(l|0)?g:B)+4>>2];t[E>>2]=t[((t[E>>2]|0)<(s|0)?g:B)+8>>2];t[C>>2]=t[((t[C>>2]|0)<(o|0)?g:B)+12>>2]}n=n+1|0}if(0>2){o=Mk(v)|0;v=t[v+16>>2]|0;M=+c[v+16>>3];F=+c[v+24>>3];Y=+c[v+32>>3];W=+c[v+40>>3];t[m>>2]=o;c[m+8>>3]=M;c[m+16>>3]=F;c[m+24>>3]=Y;c[m+32>>3]=W;a3(Q,99257,m)|0}u=u+1|0}k=$F(e<<5)|0;n=0;while(1){if((n|0)==(e|0))break;m=k+(n<<5)|0;g=(t[(t[A+(n<<2)>>2]|0)+16>>2]|0)+16|0;t[m>>2]=t[g>>2];t[m+4>>2]=t[g+4>>2];t[m+8>>2]=t[g+8>>2];t[m+12>>2]=t[g+12>>2];t[m+16>>2]=t[g+16>>2];t[m+20>>2]=t[g+20>>2];t[m+24>>2]=t[g+24>>2];t[m+28>>2]=t[g+28>>2];n=n+1|0}b=a+8|0;w=Up(e,k,t[b>>2]|0)|0;if(0){t[p>>2]=w;a3(Q,99285,p)|0}if((w|0)>=1){u=(L|0)!=0;if(u){f=((t[E>>2]|0)+(t[B>>2]|0)|0)/2|0;n=((t[C>>2]|0)+(t[y>>2]|0)|0)/2|0}else{f=0;n=0}t[G+4>>2]=n;t[G>>2]=f;o=KF(e<<4)|0;s=a+16|0;n=0;while(1){if((n|0)>=(e|0))break;f=t[A+(n<<2)>>2]|0;l=o+(n<<4)|0;t[o+(n<<4)+12>>2]=n;if((t[s>>2]|0)==3){B=(t[f+16>>2]|0)+16|0;y=t[b>>2]|0;C=Mk(f)|0;t[I>>2]=t[B>>2];t[I+4>>2]=t[B+4>>2];t[I+8>>2]=t[B+8>>2];t[I+12>>2]=t[B+12>>2];t[I+16>>2]=t[B+16>>2];t[I+20>>2]=t[B+20>>2];t[I+24>>2]=t[B+24>>2];t[I+28>>2]=t[B+28>>2];t[Z>>2]=t[G>>2];t[Z+4>>2]=t[G+4>>2];Tp(I,l,w,y,Z,C)}else{t[Z>>2]=t[G>>2];t[Z+4>>2]=t[G+4>>2];Op(r,f,l,w,a,Z)}n=n+1|0}l=KF(e<<2)|0;n=0;while(1){if((n|0)>=(e|0))break;t[l+(n<<2)>>2]=o+(n<<4);n=n+1|0}_4(l,e,4,89);s=$M()|0;n=KF(e<<3)|0;A:do{if(u){f=0;while(1){if((f|0)>=(e|0)){f=0;break}if(i[L+f>>0]|0){r=t[l+(f<<2)>>2]|0;a=n+(t[r+12>>2]<<3)|0;t[Z>>2]=t[G>>2];t[Z+4>>2]=t[G+4>>2];qp(r,s,a,Z)}f=f+1|0}while(1){if((f|0)>=(e|0))break A;if(!(i[L+f>>0]|0)){G=t[l+(f<<2)>>2]|0;Kp(f,G,s,n+(t[G+12>>2]<<3)|0,w,t[b>>2]|0,k)}f=f+1|0}}else{f=0;while(1){if((f|0)>=(e|0))break A;L=t[l+(f<<2)>>2]|0;Kp(f,L,s,n+(t[L+12>>2]<<3)|0,w,t[b>>2]|0,k);f=f+1|0}}}while(0);G2(l);f=0;while(1){if((f|0)>=(e|0))break;G2(t[o+(f<<4)+4>>2]|0);f=f+1|0}G2(o);rV(s);G2(k);if(0>1){f=0;while(1){if((f|0)>=(e|0))break e;G=t[n+(f<<3)>>2]|0;L=t[n+(f<<3)+4>>2]|0;t[D>>2]=f;t[D+4>>2]=G;t[D+8>>2]=L;a3(Q,99301,D)|0;f=f+1|0}}}else n=0}else n=0}while(0);h=z;return n|0}function Xp(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0,n=0,f=0.0,l=0,s=0,o=0.0,u=0.0,b=0.0,w=0.0,k=0.0,d=0,v=0,g=0,m=0,p=0,E=0,B=0,y=0,C=0;C=h;h=h+16|0;n=C;B=KF(e<<3)|0;a=t[r+4>>2]|0;y=r+28|0;i=(a|0)>0;do{if(!(t[y>>2]&1))if(i){s=1;E=(e+-1+a|0)/(a|0)|0;break}else{a=~~+H(+ +D(+ +(e|0)));s=1;E=(e+-1+a|0)/(a|0)|0;break}else if(i){s=0;E=a;a=(e+-1+a|0)/(a|0)|0;break}else{a=~~+H(+ +D(+ +(e|0)));s=0;E=a;a=(e+-1+a|0)/(a|0)|0;break}}while(0);if(0){p=t[15712]|0;t[n>>2]=s|0?99196:99206;t[n+4>>2]=E;t[n+8>>2]=a;a3(p,99219,n)|0}g=KF((a<<3)+8|0)|0;m=KF((E<<3)+8|0)|0;p=KF(e*24|0)|0;l=r+8|0;i=0;n=p;while(1){if((i|0)>=(e|0))break;w=+c[A+(i<<5)+8>>3];b=+c[A+(i<<5)+24>>3];k=+((t[l>>2]|0)>>>0);c[n>>3]=+c[A+(i<<5)+16>>3]-+c[A+(i<<5)>>3]+k;c[n+8>>3]=b-w+k;t[n+16>>2]=i;i=i+1|0;n=n+24|0}v=KF(e<<2)|0;i=0;while(1){if((i|0)>=(e|0))break;t[v+(i<<2)>>2]=p+(i*24|0);i=i+1|0}i=t[r+24>>2]|0;if(!i){if(!(t[y>>2]&64))_4(v,e,4,91)}else{t[47056]=i;_4(v,e,4,90)}d=(s|0)==0;i=0;n=0;l=0;while(1){if((l|0)>=(e|0)){f=0.0;i=0;break}s=t[v+(l<<2)>>2]|0;r=g+(n<<3)|0;k=+c[r>>3];w=+c[s>>3];c[r>>3]=k>w?k:w;r=m+(i<<3)|0;w=+c[r>>3];k=+c[s+8>>3];c[r>>3]=w>k?w:k;if(d){i=i+1|0;r=(i|0)==(E|0);i=r?0:i;n=n+(r&1)|0}else{n=n+1|0;r=(n|0)==(a|0);i=i+(r&1)|0;n=r?0:n}l=l+1|0}while(1){if((i|0)>(a|0)){f=0.0;i=E;break}r=g+(i<<3)|0;k=+c[r>>3];c[r>>3]=f;f=k+f;i=i+1|0}while(1){if((i|0)<=0)break;r=i+-1|0;k=+c[m+(r<<3)>>3];c[m+(i<<3)>>3]=f;f=k+f;i=r}c[m>>3]=f;i=0;n=0;r=0;while(1){if((r|0)>=(e|0))break;s=t[(t[v+(r<<2)>>2]|0)+16>>2]|0;f=+c[A+(s<<5)>>3];o=-f;w=+c[A+(s<<5)+8>>3];k=-w;u=+c[A+(s<<5)+16>>3];b=+c[A+(s<<5)+24>>3];l=t[y>>2]|0;do{if(!(l&4))if(!(l&8)){f=(o-u+ +c[g+(n<<3)>>3]+ +c[g+(n+1<<3)>>3])*.5;break}else{f=f-u+ +c[g+(n+1<<3)>>3];break}else f=+c[g+(n<<3)>>3]}while(0);t[B+(s<<3)>>2]=~~f;do{if(!(l&16))if(!(l&32)){f=(k-b+ +c[m+(i<<3)>>3]+ +c[m+(i+1<<3)>>3])*.5;break}else{f=+c[m+(i+1<<3)>>3];break}else f=w-b+ +c[m+(i<<3)>>3]}while(0);t[B+(s<<3)+4>>2]=~~f;if(d){i=i+1|0;s=(i|0)==(E|0);i=s?0:i;n=n+(s&1)|0}else{n=n+1|0;s=(n|0)==(a|0);i=i+(s&1)|0;n=s?0:n}r=r+1|0}G2(p);G2(v);G2(g);G2(m);h=C;return B|0}function Sp(e,A){e=e|0;A=A|0;var r=0;r=t[47056]|0;e=t[r+(t[(t[e>>2]|0)+16>>2]<<2)>>2]|0;A=t[r+(t[(t[A>>2]|0)+16>>2]<<2)>>2]|0;return((e|0)>(A|0)?1:((e|0)<(A|0))<<31>>31)|0}function jp(e,A){e=e|0;A=A|0;var r=0.0,i=0.0;e=t[e>>2]|0;A=t[A>>2]|0;i=+c[e>>3]+ +c[e+8>>3];r=+c[A>>3]+ +c[A+8>>3];return(ir)<<31>>31)|0}function Up(e,A,r){e=e|0;A=A|0;r=r|0;var i=0.0,a=0.0,n=0.0,f=0.0,l=0.0,s=0,o=0,u=0.0,b=0.0,w=0,k=0,d=0,v=0;v=h;h=h+96|0;k=v+80|0;d=v+48|0;w=v+8|0;o=v;s=(e*100|0)+-1|0;i=+(r<<1|0);u=0.0;b=0.0;r=0;while(1){if((r|0)>=(e|0))break;l=+c[A+(r<<5)+16>>3]-+c[A+(r<<5)>>3]+i;f=+c[A+(r<<5)+24>>3]-+c[A+(r<<5)+8>>3]+i;u=u-l-f;b=b-f*l;r=r+1|0}f=+(s|0);l=u*u-f*4.0*b;if(!(l<0.0)){i=+D(+l);n=f*2.0;a=(i-u)/n;n=(-u-i)/n;r=~~a;r=(r|0)==0?1:r;if(0>2){o=t[15712]|0;G3(99444,27,1,o)|0;c[w>>3]=f;c[w+8>>3]=u;c[w+16>>3]=b;c[w+24>>3]=l;c[w+32>>3]=i;a3(o,99472,w)|0;t[d>>2]=r;c[d+8>>3]=a;t[d+16>>2]=~~n;c[d+24>>3]=n;a3(o,99498,d)|0;c[k>>3]=(a*f+u)*a+b;c[k+8>>3]=(n*f+u)*n+b;a3(o,99520,k)|0}}else{c[o>>3]=l;nw(1,99417,o)|0;r=-1}h=v;return r|0}function Tp(e,A,r,i,a,n){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;n=n|0;var f=0,l=0,s=0,o=0,u=0.0,b=0.0,w=0.0,k=0.0,d=0,v=0,g=0,m=0,p=0.0,E=0.0;m=h;h=h+32|0;g=m+16|0;v=m;w=+c[e>>3];k=+c[e+8>>3];u=+c[e+16>>3];b=+c[e+24>>3];d=$M()|0;l=t[a>>2]|0;e=l-i|0;s=t[a+4>>2]|0;f=s-i|0;l=i-~~(w+(w>=0.0?.5:-.5))+l+~~(u+(u>=0.0?.5:-.5))|0;s=i-~~(k+(k>=0.0?.5:-.5))+s+~~(b+(b>=0.0?.5:-.5))|0;if((e|0)>-1)a=(e|0)/(r|0)|0;else a=((e+1|0)/(r|0)|0)+-1|0;if((f|0)>-1)o=(f|0)/(r|0)|0;else o=((f+1|0)/(r|0)|0)+-1|0;if((l|0)>-1)l=(l|0)/(r|0)|0;else l=((l+1|0)/(r|0)|0)+-1|0;if((s|0)>-1)f=(s|0)/(r|0)|0;else f=((s+1|0)/(r|0)|0)+-1|0;while(1){if((a|0)>(l|0))break;else e=o;while(1){if((e|0)>(f|0))break;tV(d,a,e);e=e+1|0}a=a+1|0}s=A+4|0;t[s>>2]=sV(d)|0;l=lV(d)|0;o=A+8|0;t[o>>2]=l;E=+(i<<1|0);p=+(r|0);f=~~+H(+((u+E-w)/p));e=~~+H(+((b+E-k)/p));t[A>>2]=e+f;e:do{if(0>2){a=t[15712]|0;t[v>>2]=n;t[v+4>>2]=l;t[v+8>>2]=f;t[v+12>>2]=e;a3(a,99376,v)|0;e=0;while(1){if((e|0)>=(t[o>>2]|0))break e;n=t[s>>2]|0;v=t[n+(e<<3)+4>>2]|0;t[g>>2]=t[n+(e<<3)>>2];t[g+4>>2]=v;a3(a,99403,g)|0;e=e+1|0}}}while(0);rV(d);h=m;return}function Op(e,A,r,i,a,n){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;n=n|0;var f=0,l=0,s=0,o=0,u=0,b=0,w=0,k=0,d=0,v=0,g=0.0,m=0,p=0,E=0,B=0,y=0,C=0,I=0,Z=0,G=0,L=0,Q=0,D=0,z=0,W=0,Y=0,F=0,M=0,V=0,N=0,R=0,x=0,J=0.0,P=0.0;x=h;h=h+128|0;D=x+112|0;Q=x+104|0;R=x+16|0;N=x;W=x+64|0;Y=x+56|0;C=x+40|0;I=x+96|0;y=x+88|0;p=x+24|0;E=x+80|0;B=x+72|0;M=t[a+8>>2]|0;z=t[a+12>>2]|0;G=(e|0)==0?A:e;V=$M()|0;F=A+16|0;Z=t[F>>2]|0;g=+c[Z+16>>3];L=(t[n>>2]|0)-~~(g+(g>=0.0?.5:-.5))|0;g=+c[Z+24>>3];Z=(t[n+4>>2]|0)-~~(g+(g>=0.0?.5:-.5))|0;e:do{if((t[a+16>>2]|0)==1){p=$F((gk(A)|0)<<2)|0;e=0;n=sd(A)|0;while(1){if(!n)break;B=n+16|0;t[p+(e<<2)>>2]=t[(t[B>>2]|0)+112>>2];t[(t[B>>2]|0)+112>>2]=0;e=e+1|0;n=cd(A,n)|0}b=L-M|0;w=Z-M|0;k=L+M|0;d=Z+M|0;u=1;while(1){e=t[F>>2]|0;if((u|0)>(t[e+180>>2]|0))break;o=t[(t[e+184>>2]|0)+(u<<2)>>2]|0;f=t[o+16>>2]|0;g=+c[f+16>>3];e=~~(g+(g>=0.0?.5:-.5));g=+c[f+24>>3];n=~~(g+(g>=0.0?.5:-.5));g=+c[f+32>>3];a=~~(g+(g>=0.0?.5:-.5));g=+c[f+40>>3];f=~~(g+(g>=0.0?.5:-.5));A:do{if((a|0)>(e|0)&(f|0)>(n|0)){e=b+e|0;l=w+n|0;a=k+a|0;s=d+f|0;if((e|0)>-1)n=(e|0)/(i|0)|0;else n=((e+1|0)/(i|0)|0)+-1|0;if((l|0)>-1)l=(l|0)/(i|0)|0;else l=((l+1|0)/(i|0)|0)+-1|0;if((a|0)>-1)f=(a|0)/(i|0)|0;else f=((a+1|0)/(i|0)|0)+-1|0;if((s|0)>-1)a=(s|0)/(i|0)|0;else a=((s+1|0)/(i|0)|0)+-1|0;while(1){if((n|0)>(f|0))break;else e=l;while(1){if((e|0)>(a|0))break;tV(V,n,e);e=e+1|0}n=n+1|0}e=sd(o)|0;while(1){if(!e)break A;t[(t[e+16>>2]|0)+212>>2]=o;e=cd(o,e)|0}}}while(0);u=u+1|0}d=C+8|0;v=W+4|0;g=+(M|0);m=Y+4|0;k=I+4|0;w=y+4|0;b=sd(A)|0;while(1){if(!b)break;Ix(C,b);P=+c[C>>3];J=+c[d>>3];o=L+~~(P+(P>=0.0?.5:-.5))|0;t[W>>2]=o;u=Z+~~(J+(J>=0.0?.5:-.5))|0;t[v>>2]=u;n=b+16|0;e=t[n>>2]|0;A:do{if(!(t[e+212>>2]|0)){t[Y>>2]=~~((+c[e+96>>3]+ +c[e+88>>3])*.5+g);t[m>>2]=~~(+c[e+80>>3]*.5+g);t[Q>>2]=t[W>>2];t[Q+4>>2]=t[W+4>>2];t[D>>2]=t[Y>>2];t[D+4>>2]=t[Y+4>>2];eE(I,Q,D);e=t[I>>2]|0;a=t[k>>2]|0;t[Q>>2]=t[W>>2];t[Q+4>>2]=t[W+4>>2];t[D>>2]=t[Y>>2];t[D+4>>2]=t[Y+4>>2];AE(y,Q,D);f=t[y>>2]|0;l=t[w>>2]|0;if((e|0)>-1)n=(e|0)/(i|0)|0;else n=((e+1|0)/(i|0)|0)+-1|0;if((a|0)>-1)s=(a|0)/(i|0)|0;else s=((a+1|0)/(i|0)|0)+-1|0;if((f|0)>-1)f=(f|0)/(i|0)|0;else f=((f+1|0)/(i|0)|0)+-1|0;if((l|0)>-1)a=(l|0)/(i|0)|0;else a=((l+1|0)/(i|0)|0)+-1|0;while(1){if((n|0)>(f|0))break;else e=s;while(1){if((e|0)>(a|0))break;tV(V,n,e);e=e+1|0}n=n+1|0}if((o|0)>-1)e=(o|0)/(i|0)|0;else e=((o+1|0)/(i|0)|0)+-1|0;t[W>>2]=e;if((u|0)>-1)e=(u|0)/(i|0)|0;else e=((u+1|0)/(i|0)|0)+-1|0;t[v>>2]=e;e=Ow(G,b)|0;while(1){if(!e)break A;t[D>>2]=t[W>>2];t[D+4>>2]=t[W+4>>2];rE(e,D,V,L,Z,i,z);e=qw(G,e)|0}}else{if((o|0)>-1)e=(o|0)/(i|0)|0;else e=((o+1|0)/(i|0)|0)+-1|0;t[W>>2]=e;if((u|0)>-1)e=(u|0)/(i|0)|0;else e=((u+1|0)/(i|0)|0)+-1|0;t[v>>2]=e;e=Ow(G,b)|0;while(1){if(!e)break A;if((t[(t[n>>2]|0)+212>>2]|0)!=(t[(t[(t[((t[e>>2]&3|0)==2?e:e+-48|0)+40>>2]|0)+16>>2]|0)+212>>2]|0)){t[D>>2]=t[W>>2];t[D+4>>2]=t[W+4>>2];rE(e,D,V,L,Z,i,z)}e=qw(G,e)|0}}}while(0);b=cd(A,b)|0}e=0;n=sd(A)|0;while(1){if(!n)break;t[(t[n+16>>2]|0)+112>>2]=t[p+(e<<2)>>2];e=e+1|0;n=cd(A,n)|0}G2(p)}else{d=p+8|0;v=W+4|0;g=+(M|0);m=Y+4|0;k=E+4|0;w=B+4|0;b=sd(A)|0;while(1){if(!b)break e;Ix(p,b);J=+c[p>>3];P=+c[d>>3];o=L+~~(J+(J>=0.0?.5:-.5))|0;t[W>>2]=o;u=Z+~~(P+(P>=0.0?.5:-.5))|0;t[v>>2]=u;e=t[b+16>>2]|0;t[Y>>2]=~~((+c[e+96>>3]+ +c[e+88>>3])*.5+g);t[m>>2]=~~(+c[e+80>>3]*.5+g);t[Q>>2]=t[W>>2];t[Q+4>>2]=t[W+4>>2];t[D>>2]=t[Y>>2];t[D+4>>2]=t[Y+4>>2];eE(E,Q,D);e=t[E>>2]|0;a=t[k>>2]|0;t[Q>>2]=t[W>>2];t[Q+4>>2]=t[W+4>>2];t[D>>2]=t[Y>>2];t[D+4>>2]=t[Y+4>>2];AE(B,Q,D);f=t[B>>2]|0;l=t[w>>2]|0;if((e|0)>-1)n=(e|0)/(i|0)|0;else n=((e+1|0)/(i|0)|0)+-1|0;if((a|0)>-1)s=(a|0)/(i|0)|0;else s=((a+1|0)/(i|0)|0)+-1|0;if((f|0)>-1)f=(f|0)/(i|0)|0;else f=((f+1|0)/(i|0)|0)+-1|0;if((l|0)>-1)a=(l|0)/(i|0)|0;else a=((l+1|0)/(i|0)|0)+-1|0;while(1){if((n|0)>(f|0))break;else e=s;while(1){if((e|0)>(a|0))break;tV(V,n,e);e=e+1|0}n=n+1|0}if((o|0)>-1)e=(o|0)/(i|0)|0;else e=((o+1|0)/(i|0)|0)+-1|0;t[W>>2]=e;if((u|0)>-1)e=(u|0)/(i|0)|0;else e=((u+1|0)/(i|0)|0)+-1|0;t[v>>2]=e;e=Ow(G,b)|0;while(1){if(!e)break;t[D>>2]=t[W>>2];t[D+4>>2]=t[W+4>>2];rE(e,D,V,L,Z,i,z);e=qw(G,e)|0}b=cd(A,b)|0}}}while(0);f=r+4|0;t[f>>2]=sV(V)|0;l=r+8|0;t[l>>2]=lV(V)|0;n=t[F>>2]|0;J=+(M<<1|0);P=+(i|0);e=~~+H(+((+c[n+32>>3]+J-+c[n+16>>3])/P));n=~~+H(+((+c[n+40>>3]+J-+c[n+24>>3])/P));t[r>>2]=n+e;e:do{if(0>2){a=t[15712]|0;r=Mk(A)|0;A=t[l>>2]|0;t[N>>2]=r;t[N+4>>2]=A;t[N+8>>2]=e;t[N+12>>2]=n;a3(a,99376,N)|0;e=0;while(1){if((e|0)>=(t[l>>2]|0))break e;A=t[f>>2]|0;N=t[A+(e<<3)+4>>2]|0;t[R>>2]=t[A+(e<<3)>>2];t[R+4>>2]=N;a3(a,99403,R)|0;e=e+1|0}}}while(0);rV(V);h=x;return}function _p(e,A){e=e|0;A=A|0;return(t[t[A>>2]>>2]|0)-(t[t[e>>2]>>2]|0)|0}function qp(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0,n=0,f=0,l=0,s=0,c=0;s=h;h=h+32|0;f=s+16|0;l=s;c=t[e+4>>2]|0;n=t[e+8>>2]|0;t[r>>2]=0-(t[i>>2]|0);a=r+4|0;t[a>>2]=0-(t[i+4>>2]|0);e=0;i=c;while(1){if((e|0)>=(n|0))break;t[f>>2]=t[i>>2];t[f+4>>2]=t[i+4>>2];iV(A,f);e=e+1|0;i=i+8|0}if(0>1){c=t[15712]|0;A=t[r>>2]|0;r=t[a>>2]|0;t[l>>2]=n;t[l+4>>2]=A;t[l+8>>2]=r;a3(c,99350,l)|0}h=s;return}function Kp(e,A,r,i,a,n,f){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;n=n|0;f=f|0;var l=0,s=0,o=0.0,u=0.0,b=0.0,h=0.0,w=0.0,k=0.0;s=t[A+12>>2]|0;o=+c[f+(s<<5)>>3];u=+c[f+(s<<5)+8>>3];b=+c[f+(s<<5)+16>>3];h=+c[f+(s<<5)+24>>3];if(!((e|0)==0?(k=+(n<<1|0),w=+(a|0),($p((~~+H(+((k-o+b)/w))|0)/-2|0,(~~+H(+((k-u+h)/w))|0)/-2|0,A,r,i,a,f)|0)!=0):0))l=3;e:do{if((l|0)==3?($p(0,0,A,r,i,a,f)|0)==0:0)if((~~+H(+(b-o))|0)<(~~+H(+(h-u))|0)){s=1;while(1){l=0-s|0;e=0;while(1){if((e|0)<=(l|0)){n=l;break}if($p(l,e,A,r,i,a,f)|0)break e;e=e+-1|0}while(1){if((n|0)>=(s|0))break;if($p(n,e,A,r,i,a,f)|0)break e;n=n+1|0}while(1){if((e|0)>=(s|0))break;if($p(n,e,A,r,i,a,f)|0)break e;e=e+1|0}while(1){if((n|0)<=(l|0))break;if($p(n,e,A,r,i,a,f)|0)break e;n=n+-1|0}while(1){if((e|0)<=0)break;if(!($p(n,e,A,r,i,a,f)|0))e=e+-1|0;else break e}s=s+1|0}}else{s=1;while(1){l=0-s|0;e=0;while(1){if((e|0)>=(s|0)){n=l;break}if($p(e,l,A,r,i,a,f)|0)break e;e=e+1|0}while(1){if((n|0)>=(s|0))break;if($p(e,n,A,r,i,a,f)|0)break e;n=n+1|0}while(1){if((e|0)<=(l|0))break;if($p(e,n,A,r,i,a,f)|0)break e;e=e+-1|0}while(1){if((n|0)<=(l|0))break;if($p(e,n,A,r,i,a,f)|0)break e;n=n+-1|0}while(1){if((e|0)>=0)break;if(!($p(e,n,A,r,i,a,f)|0))e=e+1|0;else break e}s=s+1|0}}}while(0);return}function $p(e,A,r,i,a,n,f){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;n=n|0;f=f|0;var l=0,s=0,o=0,u=0,b=0,w=0,k=0,d=0,v=0,g=0,m=0,p=0,E=0.0,B=0.0;g=h;h=h+48|0;d=g+32|0;v=g+8|0;k=g;o=r+4|0;b=t[r+8>>2]|0;w=k+4|0;l=t[o>>2]|0;s=0;while(1){if((s|0)>=(b|0)){u=5;break}p=l;m=t[p+4>>2]|0;t[k>>2]=(t[p>>2]|0)+e;t[w>>2]=m+A;t[d>>2]=t[k>>2];t[d+4>>2]=t[k+4>>2];if(nV(i,d)|0){l=0;break}l=l+8|0;s=s+1|0}if((u|0)==5){r=t[r+12>>2]|0;B=+c[f+(r<<5)>>3];E=+c[f+(r<<5)+8>>3];t[a>>2]=(P(n,e)|0)-~~(B+(B>=0.0?.5:-.5));r=a+4|0;t[r>>2]=(P(n,A)|0)-~~(E+(E>=0.0?.5:-.5));l=t[o>>2]|0;s=0;while(1){if((s|0)>=(b|0))break;m=l;p=t[m+4>>2]|0;t[k>>2]=(t[m>>2]|0)+e;t[w>>2]=p+A;t[d>>2]=t[k>>2];t[d+4>>2]=t[k+4>>2];iV(i,d);l=l+8|0;s=s+1|0}if(0>1){l=t[15712]|0;m=t[a>>2]|0;p=t[r>>2]|0;t[v>>2]=b;t[v+4>>2]=e;t[v+8>>2]=A;t[v+12>>2]=m;t[v+16>>2]=p;a3(l,99316,v)|0;l=1}else l=1}h=g;return l|0}function eE(e,A,r){e=e|0;A=A|0;r=r|0;var i=0;i=(t[A+4>>2]|0)-(t[r+4>>2]|0)|0;t[e>>2]=(t[A>>2]|0)-(t[r>>2]|0);t[e+4>>2]=i;return}function AE(e,A,r){e=e|0;A=A|0;r=r|0;var i=0;i=(t[r+4>>2]|0)+(t[A+4>>2]|0)|0;t[e>>2]=(t[r>>2]|0)+(t[A>>2]|0);t[e+4>>2]=i;return}function rE(e,A,r,i,a,n,f){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;n=n|0;f=f|0;var l=0.0,s=0.0,o=0,u=0,b=0.0,w=0.0,k=0.0,d=0,v=0,g=0,m=0,p=0,E=0,B=0,y=0,C=0,I=0;I=h;h=h+112|0;B=I+96|0;E=I+80|0;d=I+48|0;v=I+32|0;y=I+16|0;C=I;u=I+64|0;c[y>>3]=+(t[A>>2]|0);g=y+8|0;c[g>>3]=+(t[A+4>>2]|0);e:do{if((f|0)!=0?(m=e+16|0,o=t[(t[m>>2]|0)+8>>2]|0,(o|0)!=0):0){k=+(i|0);w=+(a|0);b=1.0/+(n|0);u=C+8|0;f=0;while(1){if((f|0)>=(t[o+4>>2]|0))break e;a=t[o>>2]|0;e=t[a+(f*48|0)>>2]|0;A=t[a+(f*48|0)+4>>2]|0;n=t[a+(f*48|0)+8>>2]|0;i=t[a+(f*48|0)+12>>2]|0;o=a+(f*48|0)+16|0;t[d>>2]=t[o>>2];t[d+4>>2]=t[o+4>>2];t[d+8>>2]=t[o+8>>2];t[d+12>>2]=t[o+12>>2];a=a+(f*48|0)+32|0;t[v>>2]=t[a>>2];t[v+4>>2]=t[a+4>>2];t[v+8>>2]=t[a+8>>2];t[v+12>>2]=t[a+12>>2];if(!n){t[y>>2]=t[e>>2];t[y+4>>2]=t[e+4>>2];t[y+8>>2]=t[e+8>>2];t[y+12>>2]=t[e+12>>2];o=e+16|0;t[C>>2]=t[o>>2];t[C+4>>2]=t[o+4>>2];t[C+8>>2]=t[o+8>>2];t[C+12>>2]=t[o+12>>2];o=2}else{t[y>>2]=t[d>>2];t[y+4>>2]=t[d+4>>2];t[y+8>>2]=t[d+8>>2];t[y+12>>2]=t[d+12>>2];t[C>>2]=t[e>>2];t[C+4>>2]=t[e+4>>2];t[C+8>>2]=t[e+8>>2];t[C+12>>2]=t[e+12>>2];o=1}l=+c[y>>3]+k;c[y>>3]=l;s=+c[g>>3]+w;c[g>>3]=s;if(!(l>=0.0))l=(l+1.0)*b+-1.0;else l=l*b;c[y>>3]=l;if(!(s>=0.0))l=(s+1.0)*b+-1.0;else l=s*b;c[g>>3]=l;l=+c[C>>3]+k;c[C>>3]=l;s=+c[u>>3]+w;c[u>>3]=s;if(!(l>=0.0))l=(l+1.0)*b+-1.0;else l=l*b;c[C>>3]=l;if(!(s>=0.0))l=(s+1.0)*b+-1.0;else l=s*b;c[u>>3]=l;t[E>>2]=t[y>>2];t[E+4>>2]=t[y+4>>2];t[E+8>>2]=t[y+8>>2];t[E+12>>2]=t[y+12>>2];t[B>>2]=t[C>>2];t[B+4>>2]=t[C+4>>2];t[B+8>>2]=t[C+8>>2];t[B+12>>2]=t[C+12>>2];Jp(E,B,r);while(1){if((o|0)>=(A|0))break;t[y>>2]=t[C>>2];t[y+4>>2]=t[C+4>>2];t[y+8>>2]=t[C+8>>2];t[y+12>>2]=t[C+12>>2];n=e+(o<<4)|0;t[C>>2]=t[n>>2];t[C+4>>2]=t[n+4>>2];t[C+8>>2]=t[n+8>>2];t[C+12>>2]=t[n+12>>2];l=+c[C>>3]+k;c[C>>3]=l;s=+c[u>>3]+w;c[u>>3]=s;if(!(l>=0.0))l=(l+1.0)*b+-1.0;else l=l*b;c[C>>3]=l;if(!(s>=0.0))l=(s+1.0)*b+-1.0;else l=s*b;c[u>>3]=l;t[E>>2]=t[y>>2];t[E+4>>2]=t[y+4>>2];t[E+8>>2]=t[y+8>>2];t[E+12>>2]=t[y+12>>2];t[B>>2]=t[C>>2];t[B+4>>2]=t[C+4>>2];t[B+8>>2]=t[C+8>>2];t[B+12>>2]=t[C+12>>2];Jp(E,B,r);o=o+1|0}if(i|0){t[y>>2]=t[C>>2];t[y+4>>2]=t[C+4>>2];t[y+8>>2]=t[C+8>>2];t[y+12>>2]=t[C+12>>2];t[C>>2]=t[v>>2];t[C+4>>2]=t[v+4>>2];t[C+8>>2]=t[v+8>>2];t[C+12>>2]=t[v+12>>2];l=+c[C>>3]+k;c[C>>3]=l;s=+c[u>>3]+w;c[u>>3]=s;if(!(l>=0.0))l=(l+1.0)*b+-1.0;else l=l*b;c[C>>3]=l;if(!(s>=0.0))l=(s+1.0)*b+-1.0;else l=s*b;c[u>>3]=l;t[E>>2]=t[y>>2];t[E+4>>2]=t[y+4>>2];t[E+8>>2]=t[y+8>>2];t[E+12>>2]=t[y+12>>2];t[B>>2]=t[C>>2];t[B+4>>2]=t[C+4>>2];t[B+8>>2]=t[C+8>>2];t[B+12>>2]=t[C+12>>2];Jp(E,B,r)}f=f+1|0;o=t[(t[m>>2]|0)+8>>2]|0}}else p=4}while(0);if((p|0)==4){Ix(u,t[((t[e>>2]&3|0)==2?e:e+-48|0)+40>>2]|0);t[C>>2]=t[u>>2];t[C+4>>2]=t[u+4>>2];t[C+8>>2]=t[u+8>>2];t[C+12>>2]=t[u+12>>2];l=+c[C>>3]+ +(i|0);c[C>>3]=l;o=C+8|0;s=+c[o>>3]+ +(a|0);c[o>>3]=s;if(!(l>=0.0))l=(l+1.0)/+(n|0)+-1.0;else l=l/+(n|0);c[C>>3]=l;if(!(s>=0.0))l=(s+1.0)/+(n|0)+-1.0;else l=s/+(n|0);c[o>>3]=l;t[E>>2]=t[y>>2];t[E+4>>2]=t[y+4>>2];t[E+8>>2]=t[y+8>>2];t[E+12>>2]=t[y+12>>2];t[B>>2]=t[C>>2];t[B+4>>2]=t[C+4>>2];t[B+8>>2]=t[C+8>>2];t[B+12>>2]=t[C+12>>2];Jp(E,B,r)}h=I;return}function iE(e,A,r){e=e|0;A=A|0;r=r|0;e:do{if((e|0)<1)e=0;else switch(t[r+16>>2]|0){case 4:{e=Xp(e,A,r)|0;break e}case 3:{e=aE(e,A,r)|0;break e}default:{e=0;break e}}}while(0);return e|0}function aE(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0,n=0,f=0,l=0,s=0,c=0,o=0,u=0,b=0;u=h;h=h+80|0;n=u+64|0;a=u+24|0;o=u+8|0;i=u;f=u+56|0;s=r+8|0;c=Up(e,A,t[s>>2]|0)|0;if(0){l=t[15712]|0;t[i>>2]=c;a3(l,99285,i)|0}e:do{if((c|0)>=1){t[f+4>>2]=0;t[f>>2]=0;l=KF(e<<4)|0;r=0;while(1){if((r|0)>=(e|0))break;t[l+(r<<4)+12>>2]=r;b=A+(r<<5)|0;i=t[s>>2]|0;t[a>>2]=t[b>>2];t[a+4>>2]=t[b+4>>2];t[a+8>>2]=t[b+8>>2];t[a+12>>2]=t[b+12>>2];t[a+16>>2]=t[b+16>>2];t[a+20>>2]=t[b+20>>2];t[a+24>>2]=t[b+24>>2];t[a+28>>2]=t[b+28>>2];t[n>>2]=t[f>>2];t[n+4>>2]=t[f+4>>2];Tp(a,l+(r<<4)|0,c,i,n,195059);r=r+1|0}a=KF(e<<2)|0;r=0;while(1){if((r|0)>=(e|0))break;t[a+(r<<2)>>2]=l+(r<<4);r=r+1|0}_4(a,e,4,89);n=$M()|0;r=KF(e<<3)|0;i=0;while(1){if((i|0)>=(e|0))break;b=t[a+(i<<2)>>2]|0;Kp(i,b,n,r+(t[b+12>>2]<<3)|0,c,t[s>>2]|0,A);i=i+1|0}G2(a);i=0;while(1){if((i|0)>=(e|0))break;G2(t[l+(i<<4)+4>>2]|0);i=i+1|0}G2(l);rV(n);if(0>1){a=t[15712]|0;i=0;while(1){if((i|0)>=(e|0))break e;A=t[r+(i<<3)>>2]|0;b=t[r+(i<<3)+4>>2]|0;t[o>>2]=i;t[o+4>>2]=A;t[o+8>>2]=b;a3(a,99301,o)|0;i=i+1|0}}}else r=0}while(0);h=u;return r|0}function tE(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;var n=0,f=0,l=0,s=0,o=0,u=0.0,b=0.0,h=0.0,w=0.0,k=0,d=0,v=0,g=0;e:do{if((e|0)<1)a=0-e|0;else{v=(i|0)==0;k=(a|0)==0;l=0;while(1){if((l|0)==(e|0)){a=0;break e}d=t[A+(l<<2)>>2]|0;n=v?d:i;s=t[r+(l<<3)>>2]|0;o=t[r+(l<<3)+4>>2]|0;u=+(s|0);b=u*.013888888888888888;h=+(o|0);w=h*.013888888888888888;f=sd(d)|0;while(1){if(!f)break;a=t[f+16>>2]|0;g=t[a+132>>2]|0;c[g>>3]=+c[g>>3]+b;g=g+8|0;c[g>>3]=+c[g>>3]+w;g=a+16|0;c[g>>3]=+c[g>>3]+u;g=a+24|0;c[g>>3]=+c[g>>3]+h;a=t[a+108>>2]|0;if(a|0){g=a+56|0;c[g>>3]=+c[g>>3]+u;g=a+64|0;c[g>>3]=+c[g>>3]+h}A:do{if(!k){a=Ow(n,f)|0;while(1){if(!a)break A;nE(a,s,o);a=qw(n,a)|0}}}while(0);f=cd(d,f)|0}fE(d,s,o);l=l+1|0}}}while(0);return a|0}function nE(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0,n=0,f=0,l=0.0,s=0,o=0.0,u=0,b=0;i=t[e+16>>2]|0;e=t[i+96>>2]|0;if(e|0){u=e+56|0;c[u>>3]=+c[u>>3]+ +(A|0);u=e+64|0;c[u>>3]=+c[u>>3]+ +(r|0)}e=t[i+108>>2]|0;if(e|0){u=e+56|0;c[u>>3]=+c[u>>3]+ +(A|0);u=e+64|0;c[u>>3]=+c[u>>3]+ +(r|0)}e=t[i+100>>2]|0;if(e|0){u=e+56|0;c[u>>3]=+c[u>>3]+ +(A|0);u=e+64|0;c[u>>3]=+c[u>>3]+ +(r|0)}e=t[i+104>>2]|0;if(e|0){u=e+56|0;c[u>>3]=+c[u>>3]+ +(A|0);u=e+64|0;c[u>>3]=+c[u>>3]+ +(r|0)}u=t[i+8>>2]|0;e:do{if(u|0){o=+(A|0);l=+(r|0);A=t[u+4>>2]|0;e=0;while(1){if((e|0)>=(A|0))break e;s=t[u>>2]|0;r=t[s+(e*48|0)>>2]|0;a=t[s+(e*48|0)+4>>2]|0;n=t[s+(e*48|0)+8>>2]|0;f=t[s+(e*48|0)+12>>2]|0;i=0;while(1){if((i|0)>=(a|0))break;b=r+(i<<4)|0;c[b>>3]=+c[b>>3]+o;b=r+(i<<4)+8|0;c[b>>3]=+c[b>>3]+l;i=i+1|0}if(n|0){b=s+(e*48|0)+16|0;c[b>>3]=+c[b>>3]+o;b=s+(e*48|0)+24|0;c[b>>3]=+c[b>>3]+l}if(f|0){b=s+(e*48|0)+32|0;c[b>>3]=+c[b>>3]+o;b=s+(e*48|0)+40|0;c[b>>3]=+c[b>>3]+l}e=e+1|0}}}while(0);return}function fE(e,A,r){e=e|0;A=A|0;r=r|0;var a=0,n=0.0,f=0.0,l=0,s=0.0,o=0.0,u=0,b=0.0,h=0;l=e+16|0;e=t[l>>2]|0;h=e+16|0;u=e+24|0;a=e+32|0;e=e+40|0;n=+(A|0);o=+c[a>>3]+n;f=+(r|0);b=+c[u>>3]+f;s=+c[e>>3]+f;c[h>>3]=+c[h>>3]+n;c[u>>3]=b;c[a>>3]=o;c[e>>3]=s;e=t[l>>2]|0;a=t[e+12>>2]|0;if((a|0)!=0?(i[a+81>>0]|0)!=0:0){h=a+56|0;c[h>>3]=+c[h>>3]+n;a=a+64|0;c[a>>3]=+c[a>>3]+f;a=1}else a=1;while(1){if((a|0)>(t[e+180>>2]|0))break;fE(t[(t[e+184>>2]|0)+(a<<2)>>2]|0,A,r);a=a+1|0;e=t[l>>2]|0}return}function lE(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0;a=Hp(e,A,r,i)|0;if(!a)e=1;else{e=tE(e,A,a,r,t[i+12>>2]|0)|0;G2(a)}return e|0}function sE(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0,n=0,f=0,l=0,s=0,o=0,u=0,b=0,w=0,k=0,d=0;w=h;h=h+32|0;b=w;u=lE(e,A,r,i)|0;if(!u){Xx(r);o=(t[r+16>>2]|0)+16|0;t[b>>2]=t[o>>2];t[b+4>>2]=t[o+4>>2];t[b+8>>2]=t[o+8>>2];t[b+12>>2]=t[o+12>>2];t[b+16>>2]=t[o+16>>2];t[b+20>>2]=t[o+20>>2];t[b+24>>2]=t[o+24>>2];t[b+28>>2]=t[o+28>>2];a=b+8|0;n=b+16|0;f=b+24|0;i=0;while(1){if((i|0)>=(e|0))break;s=t[(t[A+(i<<2)>>2]|0)+16>>2]|0;l=t[s+180>>2]|0;s=s+184|0;r=1;while(1){if((r|0)>(l|0))break;d=(t[(t[(t[s>>2]|0)+(r<<2)>>2]|0)+16>>2]|0)+16|0;c[b>>3]=+c[(+c[b>>3]<+c[d>>3]?b:d)>>3];d=t[(t[(t[s>>2]|0)+(r<<2)>>2]|0)+16>>2]|0;k=d+16|0;c[a>>3]=+c[(+c[a>>3]<+c[d+24>>3]?b:k)+8>>3];c[n>>3]=+c[(+c[n>>3]>+c[d+32>>3]?b:k)+16>>3];c[f>>3]=+c[(+c[f>>3]>+c[d+40>>3]?b:k)+24>>3];r=r+1|0}i=i+1|0}t[o>>2]=t[b>>2];t[o+4>>2]=t[b+4>>2];t[o+8>>2]=t[b+8>>2];t[o+12>>2]=t[b+12>>2];t[o+16>>2]=t[b+16>>2];t[o+20>>2]=t[b+20>>2];t[o+24>>2]=t[b+24>>2];t[o+28>>2]=t[b+28>>2]}h=w;return u|0}function cE(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0,n=0,f=0;n=h;h=h+16|0;a=n;if(!i)ge(99534,99540,1400,99547);r=oE(e,r,r)|0;t[i+8>>2]=r;if(0){f=t[15712]|0;t[a>>2]=r;a3(f,99559,a)|0}t[i+12>>2]=0;t[i+20>>2]=0;uE(e,A,i)|0;h=n;return t[i+16>>2]|0}function oE(e,A,r){e=e|0;A=A|0;r=r|0;var a=0,n=0,f=0,l=0;l=h;h=h+16|0;f=l;a=l+4|0;n=Hw(e,99689)|0;e:do{if(n){t[f>>2]=a;f=(V3(n,137395,f)|0)==1;e=t[a>>2]|0;if(f&(e|0)>-1)A=e;else{switch(i[n>>0]|0){case 84:case 116:break;default:break e}A=r}}}while(0);h=l;return A|0}function uE(e,A,r){e=e|0;A=A|0;r=r|0;return bE(Hw(e,99572)|0,A,r)|0}function bE(e,A,r){e=e|0;A=A|0;r=r|0;var a=0,n=0,f=0,l=0,o=0,u=0,b=0,w=0,k=0,d=0,v=0,g=0,m=0,p=0.0;m=h;h=h+64|0;d=m+40|0;k=m+32|0;g=m+24|0;v=m+16|0;o=m+8|0;l=m;n=m+48|0;f=m+44|0;if(!r)ge(99534,99540,1292,99581);b=r+28|0;t[b>>2]=0;w=r+16|0;t[w>>2]=A;u=r+4|0;t[u>>2]=0;t[r+24>>2]=0;e:do{if(e|0?(a=i[e>>0]|0,a<<24>>24):0)switch(a<<24>>24|0){case 97:if(!(y1(e,99599,5)|0)){t[w>>2]=4;o=hE(e+5|0,r)|0;t[l>>2]=f;o=(V3(o,137395,l)|0)>0;A=t[f>>2]|0;if(!(o&(A|0)>0))break e;t[u>>2]=A;break e}else{if(y1(e,99605,6)|0)break e;t[w>>2]=5;t[o>>2]=n;o=(V3(e+5|0,99612,o)|0)>0;p=+s[n>>2];s[r>>2]=o&p>0.0?p:1.0;break e}case 99:{if(a<<24>>24!=99)break e;if(e1(e,108006)|0)break e;t[w>>2]=1;break e}case 103:{if(a<<24>>24!=103)break e;if(e1(e,111494)|0)break e;t[w>>2]=3;break e}case 110:{if(a<<24>>24!=110)break e;if(e1(e,111481)|0)break e;t[w>>2]=2;break e}default:break e}}while(0);if(0){A=t[15712]|0;G3(99615,11,1,A)|0;t[v>>2]=wE(t[w>>2]|0)|0;a3(A,99627,v)|0;if((t[w>>2]|0)==5){c[g>>3]=+s[r>>2];a3(A,99640,g)|0}t[k>>2]=t[u>>2];a3(A,99653,k)|0;t[d>>2]=t[b>>2];a3(A,99666,d)|0}h=m;return t[w>>2]|0}function hE(e,A){e=e|0;A=A|0;var r=0,a=0,n=0;e:do{if((i[e>>0]|0)==95){a=A+28|0;r=1;while(1){e=e+1|0;A:while(1){if(!r)break e;A=i[e>>0]|0;if(!(A<<24>>24))break e;switch(A<<24>>24|0){case 99:{n=10;break A}case 105:{n=9;break A}case 117:{n=11;break A}case 116:{n=12;break A}case 98:{A=32;break A}case 108:{n=7;break A}case 114:{n=8;break A}default:r=0}}if((n|0)==7){n=0;A=4}else if((n|0)==8){n=0;A=8}else if((n|0)==9){n=0;A=64}else if((n|0)==10){n=0;A=1}else if((n|0)==11){n=0;A=2}else if((n|0)==12){n=0;A=16}t[a>>2]=t[a>>2]|A}}}while(0);return e|0}function wE(e){e=e|0;switch(e|0){case 1:{e=108006;break}case 2:{e=111481;break}case 3:{e=111494;break}case 4:{e=99599;break}case 5:{e=99605;break}default:e=99679}return e|0}function kE(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0,n=0,f=0,l=0,s=0,c=0,o=0,u=0;u=h;h=h+96|0;c=u;o=u+80|0;do{if(e){if(!i){i=L2(1,20)|0;t[i+4>>2]=r>>>0>80?r:80}r=t[i>>2]|0;s=t[i+4>>2]|0;if(!r){f=100;r=e;l=L2(100,s)|0}else{f=r+100|0;l=Q2(t[i+8>>2]|0,P(f,s)|0)|0;z6(l+(P(s,r)|0)|0,0,s*100|0)|0;r=e}while(1){r=dE(c,r,A,o)|0;if(!r)break;e=t[i>>2]|0;a=f<<1;n=P(f,s)|0;if((e|0)==(f|0)){l=Q2(l,P(a,s)|0)|0;z6(l+n|0,0,n|0)|0;e=t[i>>2]|0}else a=f;e=l+(P(e,s)|0)|0;n=c;f=e+80|0;do{t[e>>2]=t[n>>2];e=e+4|0;n=n+4|0}while((e|0)<(f|0));t[i>>2]=(t[i>>2]|0)+1;f=a}if(t[o>>2]|0){o=i+16|0;t[o>>2]=t[o>>2]|1}r=t[i>>2]|0;if(!r){G2(l);G2(i);i=0;break}else{t[i+8>>2]=Q2(l,P(r,s)|0)|0;break}}}while(0);h=u;return i|0}function dE(e,A,r,a){e=e|0;A=A|0;r=r|0;a=a|0;var n=0,f=0,l=0,s=0;s=h;h=h+80|0;f=s+64|0;l=s;t[a>>2]=0;do{n=i[A>>0]|0;A=A+1|0}while((I1(n)|0)!=0);e:do{switch(n|0){case 69:{t[e>>2]=0;A=vE(A,e+8|0)|0;if(!A){t[a>>2]=1;A=0;break e}if(r)t[e+72>>2]=t[r>>2];break}case 101:{t[e>>2]=1;A=vE(A,e+8|0)|0;if(!A){t[a>>2]=1;A=0;break e}if(r)t[e+72>>2]=t[r>>2];break}case 80:{t[e>>2]=2;A=gE(A,e+8|0)|0;if(!A){t[a>>2]=1;A=0;break e}if(r)t[e+72>>2]=t[r+4>>2];break}case 112:{t[e>>2]=3;A=gE(A,e+8|0)|0;if(!A){t[a>>2]=1;A=0;break e}if(r)t[e+72>>2]=t[r+4>>2];break}case 98:{t[e>>2]=4;A=gE(A,e+8|0)|0;if(!A){t[a>>2]=1;A=0;break e}if(r)t[e+72>>2]=t[r+8>>2];break}case 66:{t[e>>2]=5;A=gE(A,e+8|0)|0;if(!A){t[a>>2]=1;A=0;break e}if(r)t[e+72>>2]=t[r+8>>2];break}case 99:{A=mE(A,f)|0;if(!A){t[a>>2]=1;A=0;break e}n=pE(t[f>>2]|0,l)|0;t[f>>2]=n;if(!n){t[a>>2]=1;A=0;break e}if(!(t[l>>2]|0)){t[e>>2]=9;t[e+8>>2]=t[l+8>>2];if(!r)break e;t[e+72>>2]=t[r+24>>2];break e}else{t[e>>2]=14;a=e+8|0;n=l;f=a+64|0;do{t[a>>2]=t[n>>2];a=a+4|0;n=n+4|0}while((a|0)<(f|0));if(!r)break e;t[e+72>>2]=t[r+40>>2];break e}}case 67:{A=mE(A,f)|0;if(!A){t[a>>2]=1;A=0;break e}n=pE(t[f>>2]|0,l)|0;t[f>>2]=n;if(!n){t[a>>2]=1;A=0;break e}if(!(t[l>>2]|0)){t[e>>2]=8;t[e+8>>2]=t[l+8>>2];if(!r)break e;t[e+72>>2]=t[r+20>>2];break e}else{t[e>>2]=13;a=e+8|0;n=l;f=a+64|0;do{t[a>>2]=t[n>>2];a=a+4|0;n=n+4|0}while((a|0)<(f|0));if(!r)break e;t[e+72>>2]=t[r+40>>2];break e}}case 76:{t[e>>2]=6;A=gE(A,e+8|0)|0;if(!A){t[a>>2]=1;A=0;break e}if(r)t[e+72>>2]=t[r+12>>2];break}case 84:{t[e>>2]=7;A=EE(A,e+8|0)|0;if(!A){t[a>>2]=1;A=0;break e}A=EE(A,e+16|0)|0;if(!A){t[a>>2]=1;A=0;break e}A=BE(A,e+24|0)|0;if(!A){t[a>>2]=1;A=0;break e}A=EE(A,e+32|0)|0;if(!A){t[a>>2]=1;A=0;break e}A=mE(A,e+40|0)|0;if(!A){t[a>>2]=1;A=0;break e}if(r)t[e+72>>2]=t[r+16>>2];break}case 70:{t[e>>2]=10;A=EE(A,e+8|0)|0;if(!A){t[a>>2]=1;A=0;break e}A=mE(A,e+16|0)|0;if(!A){t[a>>2]=1;A=0;break e}if(r)t[e+72>>2]=t[r+28>>2];break}case 83:{t[e>>2]=11;A=mE(A,e+8|0)|0;if(!A){t[a>>2]=1;A=0;break e}if(r)t[e+72>>2]=t[r+32>>2];break}case 73:{t[e>>2]=12;A=vE(A,e+8|0)|0;if(!A){t[a>>2]=1;A=0;break e}A=mE(A,e+40|0)|0;if(!A){t[a>>2]=1;A=0;break e}if(r)t[e+72>>2]=t[r+36>>2];break}case 116:{t[e>>2]=15;A=yE(A,e+8|0)|0;if(!A){t[a>>2]=1;A=0;break e}if(r)t[e+72>>2]=t[r+44>>2];break}case 0:{A=0;break}default:{t[a>>2]=1;A=0}}}while(0);h=s;return A|0}function vE(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0,f=0;f=h;h=h+16|0;i=f;c[A>>3]=+e8(e,i);a=t[i>>2]|0;if(((a|0)!=(e|0)?(c[A+8>>3]=+e8(a,i),n=t[i>>2]|0,(a|0)!=(n|0)):0)?(c[A+16>>3]=+e8(n,i),r=t[i>>2]|0,(n|0)!=(r|0)):0){c[A+24>>3]=+e8(r,i);e=t[i>>2]|0;e=(r|0)==(e|0)?0:e}else e=0;h=f;return e|0}function gE(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0,f=0,l=0,s=0;s=h;h=h+16|0;l=s+4|0;n=s;e=CE(e,l)|0;do{if(e){r=t[l>>2]|0;f=L2(r,24)|0;t[A>>2]=r;i=f;a=0;while(1){if((a|0)>=(r|0)){r=9;break}c[i>>3]=+e8(e,n);r=t[n>>2]|0;if((e|0)==(r|0)){r=5;break}c[i+8>>3]=+e8(r,n);e=t[n>>2]|0;if((r|0)==(e|0)){r=7;break}c[i+16>>3]=0.0;i=i+24|0;r=t[A>>2]|0;a=a+1|0}if((r|0)==5){t[l>>2]=a;G2(f);e=0;break}else if((r|0)==7){t[l>>2]=a;G2(f);e=0;break}else if((r|0)==9){t[l>>2]=a;t[A+4>>2]=f;break}}else e=0}while(0);h=s;return e|0}function mE(e,A){e=e|0;A=A|0;var r=0,a=0,n=0,f=0,l=0,s=0;s=h;h=h+16|0;l=s;e=CE(e,l)|0;a=t[l>>2]|0;do{if(!((e|0)==0|(a|0)<1)){while(1){f=i[e>>0]|0;r=f<<24>>24==0;if(r^f<<24>>24!=45)e=e+1|0;else break}if(!r){f=L2(a+1|0,1)|0;n=f;r=a;while(1){e=e+1|0;if((r|0)<=0){r=9;break}r=i[e>>0]|0;if(!(r<<24>>24)){r=8;break}i[n>>0]=r;r=(t[l>>2]|0)+-1|0;t[l>>2]=r;n=n+1|0}if((r|0)==8){G2(f);e=0;break}else if((r|0)==9){i[n>>0]=0;t[A>>2]=f;break}}else e=0}else e=0}while(0);h=s;return e|0}function pE(e,A){e=e|0;A=A|0;var r=0;r=i[e>>0]|0;switch(r|0){case 91:{e=IE(e+1|0,A)|0;break}case 40:{e=ZE(e+1|0,A)|0;break}case 47:case 35:{t[A>>2]=0;t[A+8>>2]=e;break}default:if(!(M1(r)|0))e=0;else{t[A>>2]=0;t[A+8>>2]=e}}return e|0}function EE(e,A){e=e|0;A=A|0;var r=0,i=0.0,a=0;a=h;h=h+16|0;r=a;i=+e8(e,r);r=t[r>>2]|0;if((r|0)==(e|0))r=0;else c[A>>3]=i;h=a;return r|0}function BE(e,A){e=e|0;A=A|0;var r=0,i=0;r=h;h=h+16|0;i=r;e=CE(e,i)|0;i=t[i>>2]|0;t[A>>2]=(i|0)<0?0:i|0?2:1;h=r;return e|0}function yE(e,A){e=e|0;A=A|0;var r=0,i=0;r=h;h=h+16|0;i=r;t[A>>2]=Z1(e,i,10)|0;A=t[i>>2]|0;h=r;return((A|0)==(e|0)?0:A)|0}function CE(e,A){e=e|0;A=A|0;var r=0,i=0;r=h;h=h+16|0;i=r;t[A>>2]=n3(e,i,10)|0;A=t[i>>2]|0;h=r;return((A|0)==(e|0)?0:A)|0}function IE(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0,f=0,l=0,o=0,u=0,b=0;b=h;h=h+16|0;o=b;t[A>>2]=1;u=A+8|0;n=EE(e,u)|0;do{if(((((n|0)!=0?(f=EE(n,A+16|0)|0,(f|0)!=0):0)?(i=EE(f,A+24|0)|0,(i|0)!=0):0)?(a=EE(i,A+32|0)|0,(a|0)!=0):0)?(l=A+40|0,r=CE(a,l)|0,(r|0)!=0):0){A=t[l>>2]|0;a=L2(A,8)|0;i=0;while(1){if((i|0)>=(A|0)){r=13;break}r=EE(r,o)|0;if(!r){r=9;break}s[a+(i<<3)>>2]=+c[o>>3];r=mE(r,a+(i<<3)+4|0)|0;if(!r){r=12;break}i=i+1|0;A=t[l>>2]|0}if((r|0)==9){G2(a);e=0;break}else if((r|0)==12){G2(a);e=0;break}else if((r|0)==13){t[u+36>>2]=a;break}}else e=0}while(0);h=b;return e|0}function ZE(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0,f=0,l=0,o=0,u=0,b=0,w=0;w=h;h=h+16|0;u=w;t[A>>2]=2;l=EE(e,A+8|0)|0;do{if(((((((l|0)!=0?(o=EE(l,A+16|0)|0,(o|0)!=0):0)?(i=EE(o,A+24|0)|0,(i|0)!=0):0)?(a=EE(i,A+32|0)|0,(a|0)!=0):0)?(n=EE(a,A+40|0)|0,(n|0)!=0):0)?(f=EE(n,A+48|0)|0,(f|0)!=0):0)?(b=A+56|0,r=CE(f,b)|0,(r|0)!=0):0){i=t[b>>2]|0;n=L2(i,8)|0;a=0;while(1){if((a|0)>=(i|0)){r=15;break}r=EE(r,u)|0;if(!r){r=11;break}s[n+(a<<3)>>2]=+c[u>>3];r=mE(r,n+(a<<3)+4|0)|0;if(!r){r=14;break}a=a+1|0;i=t[b>>2]|0}if((r|0)==11){G2(n);e=0;break}else if((r|0)==14){G2(n);e=0;break}else if((r|0)==15){t[A+60>>2]=n;break}}else e=0}while(0);h=w;return e|0}function GE(e,A,r){e=e|0;A=A|0;r=r|0;return kE(e,A,r,0)|0}function LE(e){e=e|0;return GE(e,0,0)|0}function QE(e){e=e|0;var A=0,r=0,i=0,a=0,n=0,f=0;i=t[e+12>>2]|0;if(e|0){a=t[e+8>>2]|0;n=e+4|0;f=(i|0)==0;A=0;while(1){if((A|0)>=(t[e>>2]|0))break;r=a+(P(t[n>>2]|0,A)|0)|0;if(!f)F5[i&127](r);DE(r);A=A+1|0}G2(a);G2(e)}return}function DE(e){e=e|0;switch(t[e>>2]|0){case 3:case 2:{G2(t[e+8+4>>2]|0);break}case 5:case 4:{G2(t[e+8+4>>2]|0);break}case 6:{G2(t[e+8+4>>2]|0);break}case 7:{G2(t[e+40>>2]|0);break}case 9:case 8:{G2(t[e+8>>2]|0);break}case 14:case 13:{zE(e+8|0);break}case 10:{G2(t[e+16>>2]|0);break}case 11:{G2(t[e+8>>2]|0);break}case 12:{G2(t[e+40>>2]|0);break}default:{}}return}function zE(e){e=e|0;var A=0,r=0,i=0;switch(t[e>>2]|0){case 1:{i=e+40|0;A=e+8+36|0;e=0;while(1){r=t[A>>2]|0;if((e|0)>=(t[i>>2]|0))break;G2(t[r+(e<<3)+4>>2]|0);e=e+1|0}G2(r);break}case 2:{i=e+56|0;r=e+60|0;e=0;while(1){A=t[r>>2]|0;if((e|0)>=(t[i>>2]|0))break;G2(t[A+(e<<3)+4>>2]|0);e=e+1|0}G2(A);break}default:{}}return}function WE(e,A,r){e=e|0;A=A|0;r=r|0;var a=0,n=0,f=0,l=0,s=0,c=0,o=0,u=0,b=0;b=h;h=h+16|0;c=b+4|0;u=b;t[A>>2]=0;t[r>>2]=(Bk(Bd(e)|0)|0)!=0&1;a=t[47184]|0;e:do{if(a|0?(f=Pw(e,a)|0,l=i[f>>0]|0,l<<24>>24):0){a=20388;while(1){n=t[a>>2]|0;if(!n)break e;if(l<<24>>24==(i[n>>0]|0)?(e1(f,n)|0)==0:0)break;a=a+12|0}t[A>>2]=t[a+4>>2];t[r>>2]=t[a+8>>2]}}while(0);a=t[47195]|0;if((a|0?(t[r>>2]|0)==1:0)?(s=Pw(e,a)|0,i[s>>0]|0):0)YE(s,r);a=t[47196]|0;if((a|0?(t[A>>2]|0)==1:0)?(o=Pw(e,a)|0,i[o>>0]|0):0)YE(o,A);if(i[(t[e+16>>2]|0)+153>>0]|0){s=e+-48|0;l=Bd(t[((t[e>>2]&3|0)==2?e:s)+40>>2]|0)|0;o=t[e>>2]&3;WE(lk(l,t[((o|0)==2?e:s)+40>>2]|0,t[((o|0)==3?e:e+48|0)+40>>2]|0,0,0)|0,c,u);t[r>>2]=t[c>>2]|t[r>>2];t[A>>2]=t[u>>2]|t[A>>2]}h=b;return}function YE(e,A){e=e|0;A=A|0;var r=0,a=0,n=0,f=0,l=0,s=0,c=0,o=0,u=0,b=0;b=h;h=h+16|0;o=b;c=b+4|0;s=0;r=0;e:while(1){t[A>>2]=r;n=(s|0)<4;f=(s|0)==3;l=(s|0)==0;while(1){if(!(n&(i[e>>0]|0)!=0))break e;t[c>>2]=0;a=FE(e,c)|0;r=t[c>>2]|0;if(!r){u=5;break e}e=(r|0)==8;if(!(f&e)){if(!(l&e))break;if(i[a>>0]|0)break}t[c>>2]=0;e=a}r=t[A>>2]|r<<(s<<3);s=s+1|0;e=a}if((u|0)==5){t[o>>2]=e;nw(0,99694,o)|0}h=b;return}function FE(e,A){e=e|0;A=A|0;var r=0,i=0,a=0;a=h;h=h+16|0;i=a;t[i>>2]=0;r=ME(e,20448,i)|0;if((r|0)==(e|0)){while(1){r=ME(e,20464,i)|0;if((e|0)==(r|0))break;else e=r}r=ME(e,20512,i)|0}e=t[i>>2]|0;if((e|0)!=0&(e&15|0)==0){e=e|1;t[i>>2]=e}t[A>>2]=t[A>>2]|e;h=a;return r|0}function ME(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0,n=0;while(1){i=t[A>>2]|0;if(!i)break;a=U2(i)|0;if(!(y1(e,i,a)|0)){n=4;break}A=A+8|0}if((n|0)==4){t[r>>2]=t[r>>2]|t[A+4>>2];e=e+a|0}return e|0}function VE(e,A){e=e|0;A=A|0;var r=0.0,i=0,a=0,n=0,f=0;n=0;r=0.0;while(1){if((n|0)==4)break;a=A>>(n<<3)&15;i=1400;while(1){if(!(t[i+16>>2]|0))break;if((a|0)==(t[i>>2]|0)){f=6;break}i=i+24|0}if((f|0)==6){f=0;r=+c[i+8>>3]+r}n=n+1|0}return+(r*10.0*+wx(e,t[47188]|0,1.0,0.0))}function NE(e,A,r,i,a,n){e=e|0;A=A|0;r=r|0;i=+i;a=+a;n=n|0;var f=0.0,l=0.0,s=0.0,o=0,u=0.0,b=0,w=0;w=h;h=h+96|0;o=w+80|0;b=w;s=a>4.0?a*.0875:.35;f=+c[r+8>>3];u=f*s;l=+c[r>>3];s=l*s;i=+c[A>>3];l=i+l;c[o>>3]=l;a=+c[A+8>>3];f=f+a;c[o+8>>3]=f;r=b+64|0;if(!(n&32)){t[r>>2]=t[o>>2];t[r+4>>2]=t[o+4>>2];t[r+8>>2]=t[o+8>>2];t[r+12>>2]=t[o+12>>2];t[b>>2]=t[o>>2];t[b+4>>2]=t[o+4>>2];t[b+8>>2]=t[o+8>>2];t[b+12>>2]=t[o+12>>2];o=b+32|0;t[o>>2]=t[A>>2];t[o+4>>2]=t[A+4>>2];t[o+8>>2]=t[A+8>>2];t[o+12>>2]=t[A+12>>2];a=f;i=l}else{t[r>>2]=t[A>>2];t[r+4>>2]=t[A+4>>2];t[r+8>>2]=t[A+8>>2];t[r+12>>2]=t[A+12>>2];t[b>>2]=t[A>>2];t[b+4>>2]=t[A+4>>2];t[b+8>>2]=t[A+8>>2];t[b+12>>2]=t[A+12>>2];A=b+32|0;t[A>>2]=t[o>>2];t[A+4>>2]=t[o+4>>2];t[A+8>>2]=t[o+8>>2];t[A+12>>2]=t[o+12>>2]}c[b+16>>3]=i+u;c[b+24>>3]=a-s;c[b+48>>3]=i-u;c[b+56>>3]=a+s;do{if(!(n&64))if(!(n&128)){ti(e,b+16|0,3,n>>>4&1^1);break}else{ti(e,b+32|0,3,n>>>4&1^1);break}else ti(e,b,3,n>>>4&1^1)}while(0);h=w;return}function RE(e,A,r,i,a,n){e=e|0;A=A|0;r=r|0;i=+i;a=+a;n=n|0;var f=0.0,l=0.0,s=0.0,o=0.0,u=0,b=0.0,w=0.0,k=0.0,d=0.0,v=0.0,g=0.0,m=0.0,p=0.0,E=0,B=0,y=0;B=h;h=h+160|0;u=B+144|0;E=B;k=i*4.0;y=(n&32|0)==0;k=!(k1.0)|y?0.0:(a+-1.0)*.05/i;m=+c[r+8>>3];d=-m;p=k*d;g=+c[r>>3];k=g*k;d=v*d;v=g*v;w=+c[A>>3];i=w+g;c[u>>3]=i;b=+c[A+8>>3];a=m+b;c[u+8>>3]=a;g=g*.5+w;m=m*.5+b;r=E+128|0;if(y){t[r>>2]=t[u>>2];t[r+4>>2]=t[u+4>>2];t[r+8>>2]=t[u+8>>2];t[r+12>>2]=t[u+12>>2];t[E>>2]=t[u>>2];t[E+4>>2]=t[u+4>>2];t[E+8>>2]=t[u+8>>2];t[E+12>>2]=t[u+12>>2];y=E+64|0;t[y>>2]=t[A>>2];t[y+4>>2]=t[A+4>>2];t[y+8>>2]=t[A+8>>2];t[y+12>>2]=t[A+12>>2];f=b;l=w;s=b;o=w;a=b;i=w}else{t[r>>2]=t[A>>2];t[r+4>>2]=t[A+4>>2];t[r+8>>2]=t[A+8>>2];t[r+12>>2]=t[A+12>>2];t[E>>2]=t[A>>2];t[E+4>>2]=t[A+4>>2];t[E+8>>2]=t[A+8>>2];t[E+12>>2]=t[A+12>>2];y=E+64|0;t[y>>2]=t[u>>2];t[y+4>>2]=t[u+4>>2];t[y+8>>2]=t[u+8>>2];t[y+12>>2]=t[u+12>>2];f=a+v;l=i+d;s=a-v;o=i-d}c[E+16>>3]=i-p;c[E+24>>3]=a-k;c[E+32>>3]=g-d;c[E+40>>3]=m-v;c[E+48>>3]=o;c[E+56>>3]=s;c[E+80>>3]=l;c[E+88>>3]=f;c[E+96>>3]=g+d;c[E+104>>3]=m+v;c[E+112>>3]=i+p;c[E+120>>3]=a+k;do{if(!(n&64))if(!(n&128)){ti(e,E,9,1);break}else{ti(e,E+48|0,6,1);break}else ti(e,E,6,1)}while(0);h=B;return}function xE(e,A,r,i,a,n){e=e|0;A=A|0;r=r|0;i=+i;a=+a;n=n|0;var f=0.0,l=0.0,s=0.0,o=0.0,u=0,b=0,w=0,k=0,d=0,v=0.0,g=0.0;k=h;h=h+64|0;w=k;g=+c[r+8>>3];v=+c[r>>3];s=+c[A>>3];i=s+v;o=+c[A+8>>3];a=o+g;f=s+v*.2;l=o+g*.2;s=s+v*.6;o=o+g*.6;c[w>>3]=f-g;c[w+8>>3]=l+v;u=w+16|0;c[u>>3]=f+g;b=w+24|0;c[b>>3]=l-v;c[w+32>>3]=s+g;c[w+40>>3]=o-v;c[w+48>>3]=s-g;c[w+56>>3]=o+v;if(!(n&64)){if(n&128|0){r=2;n=1;d=3}}else{r=3;n=0;d=3}if((d|0)==3){c[w+(n<<4)>>3]=f;c[w+(n<<4)+8>>3]=l;c[w+(r<<4)>>3]=s;c[w+(r<<4)+8>>3]=o}ti(e,w,4,1);t[w>>2]=t[A>>2];t[w+4>>2]=t[A+4>>2];t[w+8>>2]=t[A+8>>2];t[w+12>>2]=t[A+12>>2];c[u>>3]=i;c[b>>3]=a;li(e,w,2);h=k;return}function JE(e,A,r,i,a,n){e=e|0;A=A|0;r=r|0;i=+i;a=+a;n=n|0;var f=0.0,l=0.0,s=0,o=0,u=0,b=0,w=0,k=0.0,d=0.0,v=0.0,g=0.0;b=h;h=h+64|0;u=b;l=+c[r+8>>3];d=l*-.4;f=+c[r>>3];k=f*.4;g=+c[A>>3];i=g+f*.8;v=+c[A+8>>3];a=v+l*.8;f=g+f;l=v+l;c[u>>3]=g+d;s=u+8|0;c[s>>3]=v+k;r=u+16|0;c[r>>3]=g-d;o=u+24|0;c[o>>3]=v-k;c[u+32>>3]=i-d;c[u+40>>3]=a-k;c[u+48>>3]=i+d;c[u+56>>3]=a+k;if(!(n&64)){if(n&128|0){t[r>>2]=t[A>>2];t[r+4>>2]=t[A+4>>2];t[r+8>>2]=t[A+8>>2];t[r+12>>2]=t[A+12>>2];r=2;w=5}}else{t[u>>2]=t[A>>2];t[u+4>>2]=t[A+4>>2];t[u+8>>2]=t[A+8>>2];t[u+12>>2]=t[A+12>>2];r=3;w=5}if((w|0)==5){c[u+(r<<4)>>3]=i;c[u+(r<<4)+8>>3]=a}ti(e,u,4,n>>>4&1^1);c[u>>3]=i;c[s>>3]=a;c[u+16>>3]=f;c[o>>3]=l;li(e,u,2);h=b;return}function HE(e,A,r,i,a,n){e=e|0;A=A|0;r=r|0;i=+i;a=+a;n=n|0;var f=0,l=0,s=0.0,o=0.0,u=0.0,b=0.0,w=0.0,k=0.0;l=h;h=h+80|0;f=l;u=+c[r+8>>3];s=u*-.3333333333333333;w=+c[r>>3];a=w*.3333333333333333;k=+c[A>>3];o=k+w*.5;b=+c[A+8>>3];i=b+u*.5;r=f+64|0;c[f+64>>3]=k+w;c[f+72>>3]=b+u;t[f>>2]=t[r>>2];t[f+4>>2]=t[r+4>>2];t[f+8>>2]=t[r+8>>2];t[f+12>>2]=t[r+12>>2];c[f+16>>3]=o+s;c[f+24>>3]=i+a;r=f+32|0;t[r>>2]=t[A>>2];t[r+4>>2]=t[A+4>>2];t[r+8>>2]=t[A+8>>2];t[r+12>>2]=t[A+12>>2];c[f+48>>3]=o-s;c[f+56>>3]=i-a;do{if(!(n&64)){r=n>>>4&1^1;if(!(n&128)){ti(e,f,4,r);break}else{ti(e,f,3,r);break}}else ti(e,r,3,n>>>4&1^1)}while(0);h=l;return}function PE(e,A,r,i,a,t){e=e|0;A=A|0;r=r|0;i=+i;a=+a;t=t|0;var n=0,f=0,l=0.0,s=0.0,o=0.0;n=h;h=h+32|0;f=n;s=+c[r>>3];a=+c[r+8>>3];i=+D(+(a*a+s*s))*.5;o=+c[A>>3];s=s*.5;c[f>>3]=o+s-i;l=+c[A+8>>3];a=a*.5;c[f+8>>3]=l-i+a;c[f+16>>3]=o+i+s;c[f+24>>3]=l+i+a;ai(e,f,2,t>>>4&1^1);h=n;return}function XE(e,A,r,i,a,n){e=e|0;A=A|0;r=r|0;i=+i;a=+a;n=n|0;var f=0.0,l=0.0,s=0.0,o=0.0,u=0.0,b=0.0,w=0.0,k=0,d=0,v=0,g=0;g=h;h=h+112|0;k=g+48|0;d=g+16|0;v=g;u=a>4.0?a*.125:.5;w=+c[A>>3];b=+c[r>>3];f=+c[A+8>>3];o=+c[r+8>>3];i=o*u;a=b*u;t[d>>2]=t[A>>2];t[d+4>>2]=t[A+4>>2];t[d+8>>2]=t[A+8>>2];t[d+12>>2]=t[A+12>>2];c[d+16>>3]=b+w;c[d+24>>3]=o+f;c[k>>3]=u*(b-o)+w;l=u*(o+b);s=l+f;c[k+8>>3]=s;c[k+48>>3]=l+w;f=u*(o-b)+f;c[k+56>>3]=f;b=i*-.95;o=b+a+w;u=a*1.3333333333333333;if(!(n&32)){i=i*1.3333333333333333;l=a*-.33333333333333326;f=f-i;a=s-i;i=o-u}else{i=i*1.3333333333333333;l=a*2.333333333333333;f=f+i;a=s+i;i=o+u}c[k+16>>3]=i;c[k+24>>3]=a;c[k+32>>3]=l-b+w;c[k+40>>3]=f;li(e,d,2);if(!(n&64)){if(n&128|0)Zx(v,k,3,.5,k,0)}else Zx(v,k,3,.5,0,k);fi(e,k,4,0,0,0);h=g;return}function SE(e,A,r,i,a,n){e=e|0;A=A|0;r=r|0;i=+i;a=+a;n=n|0;var f=0;n=h;h=h+32|0;f=n;i=+c[r>>3]+ +c[A>>3];a=+c[r+8>>3]+ +c[A+8>>3];t[f>>2]=t[A>>2];t[f+4>>2]=t[A+4>>2];t[f+8>>2]=t[A+8>>2];t[f+12>>2]=t[A+12>>2];c[f+16>>3]=i;c[f+24>>3]=a;li(e,f,2);h=n;return}function jE(e,A,r,i,a,n){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;n=n|0;var f=0.0,l=0,s=0,o=0,u=0,b=0.0,w=0.0,k=0,d=0,v=0;u=h;h=h+80|0;l=u+72|0;s=u+8|0;o=u;f=+VE(e,n);f=f*f;c[o>>3]=f;t[a+12>>2]=n;n=a+32|0;e=i+3|0;a=A+(e<<4)|0;t[n>>2]=t[a>>2];t[n+4>>2]=t[a+4>>2];t[n+8>>2]=t[a+8>>2];t[n+12>>2]=t[a+12>>2];if((i|0)>(r|0)?(b=+c[A+(i<<4)>>3]-+c[a>>3],w=+c[A+(i<<4)+8>>3]-+c[A+(e<<4)+8>>3],w*w+b*b>2]=t[d>>2];t[v+4>>2]=t[d+4>>2];t[v+8>>2]=t[d+8>>2];t[v+12>>2]=t[d+12>>2];k=s+32|0;e=A+(i+1<<4)|0;t[k>>2]=t[e>>2];t[k+4>>2]=t[e+4>>2];t[k+8>>2]=t[e+8>>2];t[k+12>>2]=t[e+12>>2];a=s+16|0;r=A+(i+2<<4)|0;t[a>>2]=t[r>>2];t[a+4>>2]=t[r+4>>2];t[a+8>>2]=t[r+8>>2];t[a+12>>2]=t[r+12>>2];t[s>>2]=t[n>>2];t[s+4>>2]=t[n+4>>2];t[s+8>>2]=t[n+8>>2];t[s+12>>2]=t[n+12>>2];t[l>>2]=s;t[l+4>>2]=o;kR(l,92,s,1);t[d>>2]=t[v>>2];t[d+4>>2]=t[v+4>>2];t[d+8>>2]=t[v+8>>2];t[d+12>>2]=t[v+12>>2];t[e>>2]=t[k>>2];t[e+4>>2]=t[k+4>>2];t[e+8>>2]=t[k+8>>2];t[e+12>>2]=t[k+12>>2];t[r>>2]=t[a>>2];t[r+4>>2]=t[a+4>>2];t[r+8>>2]=t[a+8>>2];t[r+12>>2]=t[a+12>>2];o=A+(i+3<<4)|0;t[o>>2]=t[s>>2];t[o+4>>2]=t[s+4>>2];t[o+8>>2]=t[s+8>>2];t[o+12>>2]=t[s+12>>2];h=u;return i|0}function UE(e,A){e=e|0;A=A|0;var r=0.0,i=0.0,a=0;a=t[e>>2]|0;r=+c[A>>3]-+c[a>>3];i=+c[A+8>>3]-+c[a+8>>3];return i*i+r*r<=+c[t[e+4>>2]>>3]|0}function TE(e,A,r,i,a,n){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;n=n|0;var f=0,l=0.0,s=0,o=0,u=0,b=0,w=0.0,k=0.0,d=0,v=0;b=h;h=h+80|0;s=b+72|0;o=b+8|0;u=b;l=+VE(e,n);l=l*l;c[u>>3]=l;t[a+8>>2]=n;a=a+16|0;e=A+(r<<4)|0;t[a>>2]=t[e>>2];t[a+4>>2]=t[e+4>>2];t[a+8>>2]=t[e+8>>2];t[a+12>>2]=t[e+12>>2];if(!((i|0)>(r|0)?(f=r+3|0,w=+c[e>>3]-+c[A+(f<<4)>>3],k=+c[A+(r<<4)+8>>3]-+c[A+(f<<4)+8>>3],k*k+w*w>2]=t[i>>2];t[o+4>>2]=t[i+4>>2];t[o+8>>2]=t[i+8>>2];t[o+12>>2]=t[i+12>>2];n=o+16|0;r=A+(f+2<<4)|0;t[n>>2]=t[r>>2];t[n+4>>2]=t[r+4>>2];t[n+8>>2]=t[r+8>>2];t[n+12>>2]=t[r+12>>2];d=o+32|0;e=A+(f+1<<4)|0;t[d>>2]=t[e>>2];t[d+4>>2]=t[e+4>>2];t[d+8>>2]=t[e+8>>2];t[d+12>>2]=t[e+12>>2];v=o+48|0;t[v>>2]=t[a>>2];t[v+4>>2]=t[a+4>>2];t[v+8>>2]=t[a+8>>2];t[v+12>>2]=t[a+12>>2];t[s>>2]=v;t[s+4>>2]=u;kR(s,92,o,0);u=A+(f<<4)|0;t[u>>2]=t[v>>2];t[u+4>>2]=t[v+4>>2];t[u+8>>2]=t[v+8>>2];t[u+12>>2]=t[v+12>>2];t[e>>2]=t[d>>2];t[e+4>>2]=t[d+4>>2];t[e+8>>2]=t[d+8>>2];t[e+12>>2]=t[d+12>>2];t[r>>2]=t[n>>2];t[r+4>>2]=t[n+4>>2];t[r+8>>2]=t[n+8>>2];t[r+12>>2]=t[n+12>>2];t[i>>2]=t[o>>2];t[i+4>>2]=t[o+4>>2];t[i+8>>2]=t[o+8>>2];t[i+12>>2]=t[o+12>>2];h=b;return f|0}function OE(e,A,r,i,a,n,f){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;n=n|0;f=f|0;var l=0.0,s=0.0,o=0,u=0.0,b=0.0,h=0.0,w=0.0,k=0.0,d=0,v=0.0,g=0.0,m=0,p=0,E=0;m=(n|0)!=0;o=(f|0)!=0;if(!((i|0)==(r|0)&(m&o))){if(o){l=+VE(e,f);s=+c[A+(i<<4)>>3];w=+c[A+(i<<4)+8>>3];o=i+3|0;d=A+(o<<4)|0;b=+c[d>>3];o=A+(o<<4)+8|0;h=+c[o>>3];g=s-b;v=w-h;g=+D(+(v*v+g*g))*.9;l=l>=g?g:l;if(w==h){u=(s>3]=s;c[A+(E<<4)+8>>3]=w;i=A+(i+2<<4)|0;c[d>>3]=u;c[o>>3]=l;t[i>>2]=t[d>>2];t[i+4>>2]=t[d+4>>2];t[i+8>>2]=t[d+8>>2];t[i+12>>2]=t[d+12>>2];t[a+12>>2]=f;c[a+32>>3]=b;c[a+40>>3]=h}if(m){u=+VE(e,n);o=A+(r<<4)|0;s=+c[o>>3];l=+c[A+(r<<4)+8>>3];E=r+3|0;h=+c[A+(E<<4)>>3];w=+c[A+(E<<4)+8>>3];g=s-h;v=l-w;g=+D(+(v*v+g*g))*.9;u=u>=g?g:u;if(l==w){b=(s>3]=b;c[A+(E<<4)+8>>3]=u;t[o>>2]=t[p>>2];t[o+4>>2]=t[p+4>>2];t[o+8>>2]=t[p+8>>2];t[o+12>>2]=t[p+12>>2];p=r+2|0;c[A+(p<<4)>>3]=h;c[A+(p<<4)+8>>3]=w;p=16}}else{d=A+(i<<4)|0;v=+c[d>>3];g=+c[A+(i<<4)+8>>3];o=i+3|0;m=A+(o<<4)|0;s=+c[m>>3];o=A+(o<<4)+8|0;l=+c[o>>3];u=+VE(e,n);k=+VE(e,f);b=v-s;w=g-l;b=+D(+(w*w+b*b));E=!(k+u>=b);b=b*.3333333333333333;u=E?u:b;b=E?k:b;if(g==l){E=v>3]=k;c[A+(E<<4)+8>>3]=h;t[d>>2]=t[p>>2];t[d+4>>2]=t[p+4>>2];t[d+8>>2]=t[p+8>>2];t[d+12>>2]=t[p+12>>2];p=A+(i+2<<4)|0;c[m>>3]=w;c[o>>3]=u;t[p>>2]=t[m>>2];t[p+4>>2]=t[m+4>>2];t[p+8>>2]=t[m+8>>2];t[p+12>>2]=t[m+12>>2];t[a+12>>2]=f;c[a+32>>3]=v;c[a+40>>3]=g;p=16}if((p|0)==16){t[a+8>>2]=n;c[a+16>>3]=s;c[a+24>>3]=l}return}function _E(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=+i;a=a|0;var t=0.0,n=0.0,f=0.0,l=0.0,s=0.0,o=0.0,u=0.0,b=0.0,h=0.0;b=+c[A>>3];s=+c[r>>3]-b;h=+c[A+8>>3];o=+c[r+8>>3]-h;l=i*10.0/(+D(+(s*s+o*o))+.0001);s=l*((s>=0.0?.0001:-.0001)+s);l=((o>=0.0?.0001:-.0001)+o)*l;o=s*.5;u=l*.5;f=b-u;t=h-o;b=u+b;o=h+o;h=f+s;u=t+l;s=b+s;l=o+l;n=h>s?h:s;n=b>n?b:n;i=u>l?u:l;i=o>i?o:i;s=h>3]=f>3]=t>3]=f>n?f:n;c[e+24>>3]=t>i?t:i;return}function qE(e,A,r,i,a,n,f){e=e|0;A=A|0;r=r|0;i=i|0;a=+a;n=+n;f=f|0;var l=0,s=0,o=0,u=0,b=0,w=0,k=0,d=0.0,v=0.0,g=0.0;k=h;h=h+48|0;o=k+32|0;s=k+16|0;w=k;u=(t[e+16>>2]|0)+12|0;b=t[u>>2]|0;t[u>>2]=A;ii(e,t[(t[e>>2]|0)+336>>2]|0);ui(e,n);g=+c[i>>3]-+c[r>>3];A=i+8|0;v=+c[A>>3]-+c[r+8>>3];d=10.0/(+D(+(g*g+v*v))+.0001);c[i>>3]=d*((g>=0.0?.0001:-.0001)+g);c[A>>3]=((v>=0.0?.0001:-.0001)+v)*d;A=0;while(1){if((A|0)>=4)break;l=f>>(A<<3)&255;if(!l)break;t[s>>2]=t[r>>2];t[s+4>>2]=t[r+4>>2];t[s+8>>2]=t[r+8>>2];t[s+12>>2]=t[r+12>>2];t[o>>2]=t[i>>2];t[o+4>>2]=t[i+4>>2];t[o+8>>2]=t[i+8>>2];t[o+12>>2]=t[i+12>>2];KE(w,e,s,o,a,n,l);t[r>>2]=t[w>>2];t[r+4>>2]=t[w+4>>2];t[r+8>>2]=t[w+8>>2];t[r+12>>2]=t[w+12>>2];A=A+1|0}t[u>>2]=b;h=k;return}function KE(e,A,r,i,a,n,f){e=e|0;A=A|0;r=r|0;i=i|0;a=+a;n=+n;f=f|0;var l=0,s=0,o=0,u=0,b=0,w=0,k=0,d=0.0;k=h;h=h+32|0;o=k+16|0;s=k;u=f&15;l=1400;while(1){b=t[l>>2]|0;if(!b)break;if((u|0)==(b|0)){w=4;break}l=l+24|0}if((w|0)==4){d=+c[l+8>>3]*a;c[i>>3]=d*+c[i>>3];b=i+8|0;c[b>>3]=d*+c[b>>3];w=t[l+16>>2]|0;t[s>>2]=t[r>>2];t[s+4>>2]=t[r+4>>2];t[s+8>>2]=t[r+8>>2];t[s+12>>2]=t[r+12>>2];t[o>>2]=t[i>>2];t[o+4>>2]=t[i+4>>2];t[o+8>>2]=t[i+8>>2];t[o+12>>2]=t[i+12>>2];N5[w&15](A,s,o,a,n,f);c[r>>3]=+c[i>>3]+ +c[r>>3];w=r+8|0;c[w>>3]=+c[b>>3]+ +c[w>>3]}t[e>>2]=t[r>>2];t[e+4>>2]=t[r+4>>2];t[e+8>>2]=t[r+8>>2];t[e+12>>2]=t[r+12>>2];h=k;return}function $E(e){e=e|0;var A=0,r=0,a=0,n=0,f=0,l=0;l=h;h=h+16|0;n=l+8|0;a=l;A=Hw(e,99796)|0;if((A|0)!=0?(i[A>>0]|0)!=0:0){r=A;f=5}else{A=Hw(e,99808)|0;if((A|0)!=0?(i[A>>0]|0)!=0:0){r=A;f=5}else A=0}if((f|0)==5){A=GE(r,0,120)|0;if(!A){t[a>>2]=Mk(e)|0;nw(0,99815,a)|0;t[n>>2]=r;nw(3,99868,n)|0}}h=l;return A|0}function eB(e){e=e|0;var A=0,r=0,i=0,a=0,n=0;n=h;h=h+16|0;a=KF(304)|0;if(!a)nw(1,99876,n)|0;i=e+16|0;e=t[i>>2]|0;t[a>>2]=e;t[i>>2]=a;if(!e){t[a+144>>2]=3;t[a+148>>2]=0;c[a+152>>3]=1.0}else{A=a+16|0;r=e+16|0;i=A+40|0;do{t[A>>2]=t[r>>2];A=A+4|0;r=r+4|0}while((A|0)<(i|0));A=a+56|0;r=e+56|0;i=A+40|0;do{t[A>>2]=t[r>>2];A=A+4|0;r=r+4|0}while((A|0)<(i|0));t[a+144>>2]=t[e+144>>2];t[a+148>>2]=t[e+148>>2];c[a+152>>3]=+c[e+152>>3];t[a+136>>2]=t[e+136>>2];A=a+96|0;r=e+96|0;i=A+40|0;do{t[A>>2]=t[r>>2];A=A+4|0;r=r+4|0}while((A|0)<(i|0))}h=n;return a|0}function AB(e){e=e|0;var A=0;e=e+16|0;A=t[e>>2]|0;if(!A)ge(99902,99906,117,99913);else{G2(t[A+212>>2]|0);G2(t[A+208>>2]|0);G2(t[A+216>>2]|0);G2(t[A+220>>2]|0);G2(t[A+224>>2]|0);G2(t[A+228>>2]|0);G2(t[A+232>>2]|0);G2(t[A+236>>2]|0);G2(t[A+240>>2]|0);G2(t[A+244>>2]|0);G2(t[A+248>>2]|0);G2(t[A+252>>2]|0);G2(t[A+256>>2]|0);G2(t[A+272>>2]|0);G2(t[A+284>>2]|0);G2(t[A+280>>2]|0);t[e>>2]=t[A>>2];G2(A);return}}function rB(e,A,r,n,f,l,s){e=e|0;A=A|0;r=r|0;n=n|0;f=f|0;l=l|0;s=s|0;var c=0,o=0;o=t[e+16>>2]|0;c=t[e+152>>2]|0;if((A|0)!=0&(c&32768|0)!=0)t[o+192>>2]=A;if(((c&65536|0)!=0?(t[o+212>>2]=UF(l,s)|0,(r|0)!=0):0)?(i[r>>0]|0)!=0:0){t[o+208>>2]=UF(r,s)|0;e=1}else e=0;do{if(c&4194304){if(n|0?i[n>>0]|0:0){t[o+228>>2]=UF(n,s)|0;e=o+260|0;a[e>>1]=a[e>>1]|1;e=1;break}A=t[o+192>>2]|0;if(A){t[o+228>>2]=o3(A)|0;e=1}}}while(0);if((f|0)!=0&(c&8388608|0)!=0?(i[f>>0]|0)!=0:0){t[o+244>>2]=UF(f,s)|0;e=1}return e|0}function iB(e,A,r){e=e|0;A=A|0;r=r|0;var a=0,n=0,f=0,l=0,s=0;s=h;h=h+80|0;l=s;f=s+8|0;n=t[(t[e>>2]|0)+168>>2]|0;a=t[(t[(t[n+16>>2]|0)+8>>2]|0)+92>>2]|0;aB(e,r);e=Hw(A,141060)|0;if((e|0)!=0?(i[e>>0]|0)!=0:0){bw(r,e)|0;a=r+4|0;e=t[a>>2]|0;if(e>>>0>=(t[r+8>>2]|0)>>>0){ow(r,1)|0;e=t[a>>2]|0}i[e>>0]=0;e=t[r>>2]|0;t[a>>2]=e}else{if((n|0)!=(A|0)&(a|0)!=0){bw(r,a)|0;a=r+4|0;e=t[a>>2]|0;if(e>>>0>=(t[r+8>>2]|0)>>>0){ow(r,1)|0;e=t[a>>2]|0}t[a>>2]=e+1;i[e>>0]=95}switch(Yd(A)|0){case 0:{a=(n|0)==(A|0)?111494:99927;e=(t[A>>2]|0)>>>4;break}case 1:{a=111481;e=(t[A>>2]|0)>>>4;break}case 2:{a=111450;e=(t[A>>2]|0)>>>4;break}default:{a=0;e=0}}bw(r,a)|0;t[l>>2]=e;T4(f,99933,l)|0;bw(r,f)|0;a=r+4|0;e=t[a>>2]|0;if(e>>>0>=(t[r+8>>2]|0)>>>0){ow(r,1)|0;e=t[a>>2]|0}i[e>>0]=0;e=t[r>>2]|0;t[a>>2]=e}h=s;return e|0}function aB(e,A){e=e|0;A=A|0;var r=0,a=0,n=0,f=0,l=0;l=h;h=h+144|0;f=l;n=l+8|0;r=t[e+160>>2]|0;if((r|0)>1?t[e+152>>2]&64|0:0){bw(A,t[(t[(t[e>>2]|0)+308>>2]|0)+(r<<2)>>2]|0)|0;a=A+4|0;r=t[a>>2]|0;if(r>>>0>=(t[A+8>>2]|0)>>>0){ow(A,1)|0;r=t[a>>2]|0}t[a>>2]=r+1;i[r>>0]=95}a=t[e+196>>2]|0;r=t[e+200>>2]|0;if((a|0)>0|(r|0)>0){t[f>>2]=a;t[f+4>>2]=r;T4(n,99937,f)|0;bw(A,n)|0}h=l;return}function tB(e,A,r){e=e|0;A=A|0;r=r|0;var i=0.0,a=0,n=0.0,f=0,l=0.0,o=0.0,u=0,b=0,w=0,k=0,d=0.0,v=0;v=h;h=h+48|0;w=v+16|0;a=v+32|0;k=v;d=+c[(t[e+16>>2]|0)+152>>3];b=nB(r,0,a)|0;if((b+-1|0)>>>0>=2){i=+c[A+16>>3];l=(i+ +c[A>>3])*.5;c[k>>3]=l;n=+c[A+24>>3];o=(n+ +c[A+8>>3])*.5;c[k+8>>3]=o;l=i-l;o=n-o;u=d>.5;if(u)ui(e,.5);f=t[a>>2]|0;n=0.0;a=t[f+8>>2]|0;while(1){r=t[a>>2]|0;if(!r)break;A=a+4|0;if(+s[A>>2]==0.0)i=n;else{Ai(e,r);if(!(t[a+12>>2]|0))i=6.283185307179586;else i=+s[A>>2]*6.283185307179586+n;t[w>>2]=t[k>>2];t[w+4>>2]=t[k+4>>2];t[w+8>>2]=t[k+8>>2];t[w+12>>2]=t[k+12>>2];A=Ia(w,l,o,n,i)|0;fi(e,t[A>>2]|0,t[A+4>>2]|0,0,0,1);ys(A)}n=i;a=a+12|0}if(u)ui(e,d);fB(f)}h=v;return b|0}function nB(e,A,r){e=e|0;A=A|0;r=r|0;var a=0,n=0,f=0,l=0.0,c=0.0,o=0.0,u=0,b=0,w=0,k=0,d=0;d=h;h=h+16|0;b=d+8|0;u=d;k=KF(12)|0;f=o3(e)|0;e:do{if(!A){A=1;a=f;while(1){switch(i[a>>0]|0){case 0:break e;case 58:{A=A+1|0;break}default:{}}a=a+1|0}}}while(0);t[k+4>>2]=f;w=KF((A*12|0)+12|0)|0;t[k+8>>2]=w;o=1.0;n=0;A=0;a=f;while(1){a=l3(a,107984)|0;if(!a){a=20;break}l=+lB(a);if(!(l>=0.0)){a=17;break}c=l-o;if(c>0.0)if((t[5156]|0)!=0?!(c<1.0e-05&c>-1.0e-05):0){t[u>>2]=e;nw(0,99948,u)|0;t[5156]=0;l=o;A=3}else l=o;c=o-l;if(l>0.0)i[w+(n*12|0)+8>>0]=1;if(i[a>>0]|0)t[w+(n*12|0)>>2]=a;a=n+1|0;s[w+(n*12|0)+4>>2]=l;if(c<1.0e-05&c>-1.0e-05){n=a;a=30;break}else{o=c;n=a;a=0}}e:do{if((a|0)==17){if(!(t[5156]|0))A=1;else{t[b>>2]=e;nw(1,99983,b)|0;t[5156]=0;A=2}fB(k)}else if((a|0)==20)if(o>0.0){a=0;f=0;while(1){if((a|0)>=(n|0))break;b=f+(+s[w+(a*12|0)+4>>2]==0.0&1)|0;a=a+1|0;f=b}if((f|0)<=0){a=w+((n+-1|0)*12|0)+4|0;s[a>>2]=o+ +s[a>>2];a=30;break}l=o/+(f|0);a=0;while(1){if((a|0)>=(n|0)){a=30;break e}f=w+(a*12|0)+4|0;if(+s[f>>2]==0.0)s[f>>2]=l;a=a+1|0}}else a=30}while(0);if((a|0)==30){while(1){a=n+-1|0;if((n|0)<=0)break;if(+s[w+(a*12|0)+4>>2]>0.0)break;else n=a}t[w+(n*12|0)>>2]=0;t[k>>2]=n;t[r>>2]=k}h=d;return A|0}function fB(e){e=e|0;G2(t[e+4>>2]|0);G2(t[e+8>>2]|0);G2(e);return}function lB(e){e=e|0;var A=0.0,r=0,a=0,n=0;a=h;h=h+16|0;r=a;e=C1(e,59)|0;if(!e)A=0.0;else{n=e+1|0;i[e>>0]=0;A=+e8(n,r);A=(A>=0.0?(t[r>>2]|0)!=(n|0):0)?A:-1.0}h=a;return+A}function sB(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0.0,n=0,f=0,l=0,o=0.0,u=0.0,b=0,w=0,k=0,d=0,v=0.0,g=0;g=h;h=h+80|0;n=g+64|0;d=g;v=+c[(t[e+16>>2]|0)+152>>3];k=nB(r,0,n)|0;if((k+-1|0)>>>0>=2){if(!i){t[d>>2]=t[A>>2];t[d+4>>2]=t[A+4>>2];t[d+8>>2]=t[A+8>>2];t[d+12>>2]=t[A+12>>2];w=d+16|0;b=A+16|0;t[w>>2]=t[b>>2];t[w+4>>2]=t[b+4>>2];t[w+8>>2]=t[b+8>>2];t[w+12>>2]=t[b+12>>2];w=d+32|0;b=A+32|0;t[w>>2]=t[b>>2];t[w+4>>2]=t[b+4>>2];t[w+8>>2]=t[b+8>>2];t[w+12>>2]=t[b+12>>2];w=d+48|0;b=A+48|0;t[w>>2]=t[b>>2];t[w+4>>2]=t[b+4>>2];t[w+8>>2]=t[b+8>>2];t[w+12>>2]=t[b+12>>2]}else{w=A+32|0;t[d>>2]=t[w>>2];t[d+4>>2]=t[w+4>>2];t[d+8>>2]=t[w+8>>2];t[d+12>>2]=t[w+12>>2];w=d+16|0;b=A+48|0;t[w>>2]=t[b>>2];t[w+4>>2]=t[b+4>>2];t[w+8>>2]=t[b+8>>2];t[w+12>>2]=t[b+12>>2];w=d+32|0;t[w>>2]=t[A>>2];t[w+4>>2]=t[A+4>>2];t[w+8>>2]=t[A+8>>2];t[w+12>>2]=t[A+12>>2];w=d+48|0;b=A+16|0;t[w>>2]=t[b>>2];t[w+4>>2]=t[b+4>>2];t[w+8>>2]=t[b+8>>2];t[w+12>>2]=t[b+12>>2]}l=d+16|0;o=+c[l>>3];a=+c[d>>3];u=o-a;b=d+32|0;c[b>>3]=a;c[l>>3]=a;w=v>.5;if(w)ui(e,.5);n=t[n>>2]|0;f=d+48|0;i=t[n+8>>2]|0;while(1){r=t[i>>2]|0;if(!r)break;A=i+4|0;if(!(+s[A>>2]==0.0)){Ai(e,r);if(!(t[i+12>>2]|0))a=o;else a=u*+s[A>>2]+ +c[d>>3];c[b>>3]=a;c[l>>3]=a;ti(e,d,4,1);a=+c[l>>3];c[f>>3]=a;c[d>>3]=a}i=i+12|0}if(w)ui(e,v);fB(n)}h=g;return k|0}function cB(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0,f=0;r=t[e+16>>2]|0;i=t[e+152>>2]|0;if(i&4259840|0){a=i&131072;n=a>>>16^2;t[r+264>>2]=n;f=r+268|0;t[f>>2]=n+2;n=r+272|0;G2(t[n>>2]|0);r=KF(t[f>>2]<<4)|0;t[n>>2]=r;t[r>>2]=t[A>>2];t[r+4>>2]=t[A+4>>2];t[r+8>>2]=t[A+8>>2];t[r+12>>2]=t[A+12>>2];n=r+16|0;A=A+16|0;t[n>>2]=t[A>>2];t[n+4>>2]=t[A+4>>2];t[n+8>>2]=t[A+8>>2];t[n+12>>2]=t[A+12>>2];if(!(i&8192))Dr(e,r,r,2)|0;if(!a)IF(r)}return}function oB(e,A){e=e|0;A=A|0;var r=0,i=0.0,a=0,t=0,n=0,f=0.0,l=0.0,s=0.0,o=0.0,u=0.0,b=0,w=0,k=0;k=h;h=h+144|0;r=k+80|0;a=k+16|0;t=k;s=+c[A>>3];b=e+16|0;o=+c[b>>3];if(!(((((((((!(s>o)?(u=+c[e>>3],!(s>3],f=+c[e+24>>3],!(i>f)):0)?(l=+c[e+8>>3],!(i>3],!(s>o|s>3],!(s>f|s>3],!(s>o|s>3],!(s>f|s>3],!(s>o|s>3],!(u>f|u>3];if(!(i>+c[b>>3])){if(i<+c[e>>3]){r=e;w=16}}else{r=b;w=16}if((w|0)==16){w=0;c[r>>3]=i}i=+c[A+(a<<4)+8>>3];if(!(i>+c[t>>3])){if(i<+c[n>>3]){r=e;w=19}}else{r=b;w=19}if((w|0)==19){w=0;c[r+8>>3]=i}a=a+1|0}}}while(0);h=k;return}function uB(e){e=e|0;var A=0,r=0,i=0,a=0,n=0.0,f=0,l=0;A=h;h=h+48|0;r=A+32|0;i=A+16|0;a=A;l=e+48|0;f=e+16|0;t[a>>2]=t[e>>2];t[a+4>>2]=t[e+4>>2];t[a+8>>2]=t[e+8>>2];t[a+12>>2]=t[e+12>>2];t[i>>2]=t[l>>2];t[i+4>>2]=t[l+4>>2];t[i+8>>2]=t[l+8>>2];t[i+12>>2]=t[l+12>>2];t[r>>2]=t[f>>2];t[r+4>>2]=t[f+4>>2];t[r+8>>2]=t[f+8>>2];t[r+12>>2]=t[f+12>>2];n=+DF(a,i,r);f=e+32|0;t[a>>2]=t[e>>2];t[a+4>>2]=t[e+4>>2];t[a+8>>2]=t[e+8>>2];t[a+12>>2]=t[e+12>>2];t[i>>2]=t[l>>2];t[i+4>>2]=t[l+4>>2];t[i+8>>2]=t[l+8>>2];t[i+12>>2]=t[l+12>>2];t[r>>2]=t[f>>2];t[r+4>>2]=t[f+4>>2];t[r+8>>2]=t[f+8>>2];t[r+12>>2]=t[f+12>>2];e=n<4.0&+DF(a,i,r)<4.0&1;h=A;return e|0}function bB(e,A){e=e|0;A=A|0;var r=0,a=0,n=0.0,f=0,l=0,s=0,o=0,u=0,b=0,w=0,k=0,d=0,v=0,g=0,m=0,p=0,E=0,B=0,y=0,C=0,I=0,Z=0,G=0,L=0,Q=0,D=0.0,z=0.0,W=0.0,Y=0.0,F=0,M=0;L=h;h=h+272|0;m=L+256|0;p=L+224|0;E=L+192|0;B=L+128|0;y=L+64|0;C=L;I=L+160|0;Z=L+96|0;G=L+32|0;g=t[A+16>>2]|0;v=t[g+144>>2]|0;d=g+16|0;t[B>>2]=t[d>>2];t[B+4>>2]=t[d+4>>2];t[B+8>>2]=t[d+8>>2];t[B+12>>2]=t[d+12>>2];t[B+16>>2]=t[d+16>>2];t[B+20>>2]=t[d+20>>2];t[B+24>>2]=t[d+24>>2];t[B+28>>2]=t[d+28>>2];g=t[(t[g+8>>2]|0)+88>>2]|0;t[C>>2]=0;t[C+4>>2]=0;t[C+8>>2]=0;t[C+12>>2]=0;t[C+16>>2]=0;t[C+20>>2]=0;t[C+24>>2]=0;t[C+28>>2]=0;if(!g){t[e>>2]=t[B>>2];t[e+4>>2]=t[B+4>>2];t[e+8>>2]=t[B+8>>2];t[e+12>>2]=t[B+12>>2];t[e+16>>2]=t[B+16>>2];t[e+20>>2]=t[B+20>>2];t[e+24>>2]=t[B+24>>2];t[e+28>>2]=t[B+28>>2]}else{A=B+16|0;if(+c[B>>3]==+c[A>>3]?(r=B+8|0,a=B+24|0,+c[r>>3]==+c[a>>3]):0){c[r>>3]=1797693134862315708145274.0e284;c[B>>3]=1797693134862315708145274.0e284;c[a>>3]=-1797693134862315708145274.0e284;c[A>>3]=-1797693134862315708145274.0e284}l=p+8|0;s=p+16|0;o=p+24|0;u=y+16|0;b=y+24|0;w=v+144|0;k=E+16|0;d=g+12|0;A=0;a=t[g+8>>2]|0;r=0;n=0.0;f=0;while(1){if((f|0)>=(t[g>>2]|0))break;t[y>>2]=t[C>>2];t[y+4>>2]=t[C+4>>2];t[y+8>>2]=t[C+8>>2];t[y+12>>2]=t[C+12>>2];t[y+16>>2]=t[C+16>>2];t[y+20>>2]=t[C+20>>2];t[y+24>>2]=t[C+24>>2];t[y+28>>2]=t[C+28>>2];switch(t[a>>2]|0){case 1:case 0:{W=+c[a+8>>3];Y=+c[a+24>>3];c[p>>3]=W-Y;D=+c[a+16>>3];z=+c[a+32>>3];c[l>>3]=D-z;c[s>>3]=Y+W;c[o>>3]=z+D;Q=a+80|0;t[Q>>2]=t[p>>2];t[Q+4>>2]=t[p+4>>2];t[Q+8>>2]=t[p+8>>2];t[Q+12>>2]=t[p+12>>2];Q=a+96|0;t[Q>>2]=t[s>>2];t[Q+4>>2]=t[s+4>>2];t[Q+8>>2]=t[s+8>>2];t[Q+12>>2]=t[s+12>>2];t[m>>2]=t[p>>2];t[m+4>>2]=t[p+4>>2];t[m+8>>2]=t[p+8>>2];t[m+12>>2]=t[p+12>>2];hB(B,m);t[m>>2]=t[s>>2];t[m+4>>2]=t[s+4>>2];t[m+8>>2]=t[s+8>>2];t[m+12>>2]=t[s+12>>2];hB(B,m);break}case 3:case 2:{Q=a+80|0;F=a+8|0;wB(I,t[F+4>>2]|0,t[F>>2]|0,B);t[Q>>2]=t[I>>2];t[Q+4>>2]=t[I+4>>2];t[Q+8>>2]=t[I+8>>2];t[Q+12>>2]=t[I+12>>2];t[Q+16>>2]=t[I+16>>2];t[Q+20>>2]=t[I+20>>2];t[Q+24>>2]=t[I+24>>2];t[Q+28>>2]=t[I+28>>2];break}case 5:case 4:{F=a+80|0;Q=a+8|0;wB(Z,t[Q+4>>2]|0,t[Q>>2]|0,B);t[F>>2]=t[Z>>2];t[F+4>>2]=t[Z+4>>2];t[F+8>>2]=t[Z+8>>2];t[F+12>>2]=t[Z+12>>2];t[F+16>>2]=t[Z+16>>2];t[F+20>>2]=t[Z+20>>2];t[F+24>>2]=t[Z+24>>2];t[F+28>>2]=t[Z+28>>2];break}case 6:{F=a+80|0;Q=a+8|0;wB(G,t[Q+4>>2]|0,t[Q>>2]|0,B);t[F>>2]=t[G>>2];t[F+4>>2]=t[G+4>>2];t[F+8>>2]=t[G+8>>2];t[F+12>>2]=t[G+12>>2];t[F+16>>2]=t[G+16>>2];t[F+20>>2]=t[G+20>>2];t[F+24>>2]=t[G+24>>2];t[F+28>>2]=t[G+28>>2];break}case 7:{F=a+112|0;t[F>>2]=KF(56)|0;Q=o3(t[a+40>>2]|0)|0;M=t[F>>2]|0;t[M>>2]=Q;i[M+48>>0]=i[100029+(t[a+24>>2]|0)>>0]|0;t[y>>2]=r;c[u>>3]=n;t[b>>2]=t[b>>2]&-128|A&127;M=t[w>>2]|0;M=L5[t[M>>2]&63](M,y,1)|0;Q=t[F>>2]|0;t[Q+4>>2]=M;ex(m,v,Q);kB(E,+c[a+8>>3],+c[a+16>>3],t[F>>2]|0);F=a+80|0;t[F>>2]=t[E>>2];t[F+4>>2]=t[E+4>>2];t[F+8>>2]=t[E+8>>2];t[F+12>>2]=t[E+12>>2];t[F+16>>2]=t[E+16>>2];t[F+20>>2]=t[E+20>>2];t[F+24>>2]=t[E+24>>2];t[F+28>>2]=t[E+28>>2];t[m>>2]=t[E>>2];t[m+4>>2]=t[E+4>>2];t[m+8>>2]=t[E+8>>2];t[m+12>>2]=t[E+12>>2];hB(B,m);t[m>>2]=t[k>>2];t[m+4>>2]=t[k+4>>2];t[m+8>>2]=t[k+8>>2];t[m+12>>2]=t[k+12>>2];hB(B,m);if(!(t[d>>2]|0))t[d>>2]=109;break}case 10:{r=t[a+16>>2]|0;n=+c[a+8>>3];break}case 15:{A=t[a+8>>2]|0;break}default:{}}a=a+120|0;f=f+1|0}t[e>>2]=t[B>>2];t[e+4>>2]=t[B+4>>2];t[e+8>>2]=t[B+8>>2];t[e+12>>2]=t[B+12>>2];t[e+16>>2]=t[B+16>>2];t[e+20>>2]=t[B+20>>2];t[e+24>>2]=t[B+24>>2];t[e+28>>2]=t[B+28>>2]}h=L;return}function hB(e,A){e=e|0;A=A|0;var r=0.0,i=0;r=+c[A>>3];i=e+16|0;if(r>+c[i>>3])c[i>>3]=r;if(r<+c[e>>3])c[e>>3]=r;r=+c[A+8>>3];A=e+24|0;if(r>+c[A>>3])c[A>>3]=r;A=e+8|0;if(r<+c[A>>3])c[A>>3]=r;return}function wB(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0.0,n=0,f=0,l=0,s=0,o=0,u=0,b=0,w=0,k=0,d=0;d=h;h=h+48|0;s=d+32|0;u=d;a=+c[A>>3];b=u+16|0;c[b>>3]=a;c[u>>3]=a;a=+c[A+8>>3];w=u+24|0;c[w>>3]=a;o=u+8|0;c[o>>3]=a;l=1;while(1){if((l|0)>=(r|0))break;f=A+24|0;a=+c[f>>3];if(!(a<+c[u>>3])){if(a>+c[b>>3]){n=b;k=5}}else{n=u;k=5}if((k|0)==5){k=0;c[n>>3]=a}a=+c[A+32>>3];if(!(a<+c[o>>3])){if(a>+c[w>>3]){A=b;k=8}}else{A=u;k=8}if((k|0)==8){k=0;c[A+8>>3]=a}l=l+1|0;A=f}t[s>>2]=t[u>>2];t[s+4>>2]=t[u+4>>2];t[s+8>>2]=t[u+8>>2];t[s+12>>2]=t[u+12>>2];hB(i,s);t[s>>2]=t[b>>2];t[s+4>>2]=t[b+4>>2];t[s+8>>2]=t[b+8>>2];t[s+12>>2]=t[b+12>>2];hB(i,s);t[e>>2]=t[u>>2];t[e+4>>2]=t[u+4>>2];t[e+8>>2]=t[u+8>>2];t[e+12>>2]=t[u+12>>2];t[e+16>>2]=t[u+16>>2];t[e+20>>2]=t[u+20>>2];t[e+24>>2]=t[u+24>>2];t[e+28>>2]=t[u+28>>2];h=d;return}function kB(e,A,r,a){e=e|0;A=+A;r=+r;a=a|0;var t=0.0,n=0,f=0,l=0,s=0.0,o=0,u=0;u=h;h=h+16|0;f=u+8|0;l=u;t=+c[a+32>>3];s=+c[a+40>>3];switch(i[a+48>>0]|0){case 108:{c[f>>3]=A;t=t+A;n=l;o=5;break}case 110:{t=t*.5;c[f>>3]=A-t;t=t+A;n=l;o=5;break}case 114:{c[l>>3]=A;t=A-t;n=f;o=5;break}default:{A=0.0;t=0.0}}if((o|0)==5){c[n>>3]=t;A=+c[f>>3];t=+c[l>>3]}r=+c[a+16>>3]+r;c[e>>3]=A;c[e+8>>3]=r-s;c[e+16>>3]=t;c[e+24>>3]=r;h=u;return}function dB(e){e=e|0;if((t[e>>2]|0)==7)XF(t[e+112>>2]|0,1);return}function vB(e,A){e=e|0;A=A|0;var r=0,a=0.0,n=0.0,f=0.0,l=0,s=0,o=0,u=0.0;o=h;h=h+16|0;s=o;l=t[e+152>>2]|0;u=+c[e+432>>3];f=+c[e+352>>3]*.013888888888888888;a=f*u;c[e+488>>3]=a;n=+c[e+440>>3];f=f*n;c[e+496>>3]=f;c[e+520>>3]=u*.013888888888888888;r=e+528|0;c[r>>3]=n*.013888888888888888;if(l&4096|0)c[r>>3]=n*-.013888888888888888;r=(t[e+360>>2]|0)==0;u=+((t[e+448>>2]|0)>>>0);n=+((t[e+452>>2]|0)>>>0);c[e+368>>3]=(r?u:n)/a;c[e+376>>3]=(r?n:u)/f;si(e,dx(A,zw(A,0,101522,0)|0,195059)|0);t[e+160>>2]=0;gB(e,A);if(l&2|0)mB(e,A);r=sd(A)|0;while(1){if(!r)break;i[(t[r+16>>2]|0)+116>>0]=0;r=cd(A,r)|0}pB(e,s);while(1){if(!((EB(e)|0)<<24>>24))break;if((BB(e)|0)>1)Mr(e);yB(e);while(1){if(!((CB(e)|0)<<24>>24))break;IB(e,A);ZB(e)}if((BB(e)|0)>1)Vr(e);GB(e,s)}LB(e);h=o;return}function gB(e,A){e=e|0;A=A|0;var r=0;r=eB(e)|0;t[r+4>>2]=0;t[r+8>>2]=A;t[r+12>>2]=0;SY(e,t[(t[A+16>>2]|0)+12>>2]|0,A);zr(e,A);return}function mB(e,A){e=e|0;A=A|0;var r=0,a=0,t=0,n=0;Ai(e,134800);r=Hw(A,140977)|0;if(r|0?i[r>>0]|0:0)Ai(e,r);r=Hw(A,101446)|0;if(r|0?i[r>>0]|0:0)$r(e,r);iF(e,A);n=sd(A)|0;while(1){if(!n)break;r=Hw(n,140823)|0;if(r|0?i[r>>0]|0:0)$r(e,r);r=Hw(n,137729)|0;if(r|0?i[r>>0]|0:0)Ai(e,r);r=Hw(n,101418)|0;do{if(r|0?i[r>>0]|0:0){if(!(C1(r,58)|0)){$r(e,r);break}a=o3(r)|0;r=a;while(1){r=l3(r,107984)|0;if(!r)break;if(!(i[r>>0]|0)){r=0;continue}$r(e,r);r=0}G2(a)}}while(0);r=Hw(n,101446)|0;if(r|0?i[r>>0]|0:0)$r(e,r);t=Ow(A,n)|0;while(1){if(!t)break;r=Hw(t,140823)|0;do{if(r|0?i[r>>0]|0:0){if(!(C1(r,58)|0)){$r(e,r);break}a=o3(r)|0;r=a;while(1){r=l3(r,107984)|0;if(!r)break;if(!(i[r>>0]|0)){r=0;continue}$r(e,r);r=0}G2(a)}}while(0);r=Hw(t,101446)|0;if(r|0?i[r>>0]|0:0)$r(e,r);t=qw(A,t)|0}n=cd(A,n)|0}return}function pB(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0,f=0,l=0;l=h;h=h+16|0;i=l+8|0;n=l;f=t[e>>2]|0;r=t[f+312>>2]|0;a=e+156|0;t[a>>2]=r;f=t[f+316>>2]|0;if(!f)if((r|0)>1?(t[e+152>>2]&64|0)==0:0){t[i>>2]=t[e+52>>2];nw(0,100567,i)|0;t[a>>2]=1;i=1;r=0}else{i=1;r=0}else{r=f+4|0;if((t[f>>2]|0)>1?(t[e+152>>2]&64|0)==0:0){t[n>>2]=t[e+52>>2];nw(0,100567,n)|0;t[f+8>>2]=(t[a>>2]|0)+1}i=t[r>>2]|0;r=f+8|0}t[e+160>>2]=i;t[A>>2]=r;h=l;return}function EB(e){e=e|0;return(t[e+160>>2]|0)<=(t[e+156>>2]|0)|0}function BB(e){e=e|0;var A=0;A=t[(t[e>>2]|0)+316>>2]|0;return t[((A|0)==0?e+156|0:A)>>2]|0}function yB(e){e=e|0;var A=0,r=0;r=e+172|0;A=t[r+4>>2]|0;e=e+196|0;t[e>>2]=t[r>>2];t[e+4>>2]=A;return}function CB(e){e=e|0;var A=0,r=0;r=t[e+196>>2]|0;if(((r|0)>-1?(r|0)<(t[e+164>>2]|0):0)?(A=t[e+200>>2]|0,(A|0)>-1):0)e=(A|0)<(t[e+168>>2]|0)&1;else e=0;return e|0}function IB(e,A){e=e|0;A=A|0;var r=0,n=0,f=0,l=0,s=0,c=0,o=0,u=0,b=0,w=0,k=0;w=h;h=h+176|0;c=w;r=w+48|0;o=w+32|0;u=t[e+16>>2]|0;b=t[e+152>>2]|0;if((t[e+160>>2]|0)<=1?(t[e+196>>2]|0)<=0:0)f=0;else{cw(o,128,r);n=u+212|0;f=t[n>>2]|0;aB(e,o);bw(o,f)|0;l=o+4|0;r=t[l>>2]|0;if(r>>>0>=(t[o+8>>2]|0)>>>0){ow(o,1)|0;r=t[l>>2]|0}i[r>>0]=0;r=t[o>>2]|0;t[l>>2]=r;t[n>>2]=r}Ca(Hw(A,100032)|0);DB(e);Yr(e);$r(e,137314);Ai(e,134800);do{if(b&4259840|0){if((t[u+208>>2]|0)==0?(a[u+260>>1]&1)==0:0)break;if(b&655360){l=b&131072;t[u+264>>2]=l>>>16^2;r=KF((l>>>12^32)+32|0)|0;n=e+288|0;t[r>>2]=t[n>>2];t[r+4>>2]=t[n+4>>2];t[r+8>>2]=t[n+8>>2];t[r+12>>2]=t[n+12>>2];n=r+16|0;k=e+304|0;t[n>>2]=t[k>>2];t[n+4>>2]=t[k+4>>2];t[n+8>>2]=t[k+8>>2];t[n+12>>2]=t[k+12>>2];if(!l){IF(r);n=4}else n=2}else{r=0;n=0}if(!(b&8192))Dr(e,r,r,n)|0;t[u+272>>2]=r;t[u+268>>2]=n}}while(0);if(b&32768|0?(s=t[(t[A+16>>2]|0)+12>>2]|0,s|0):0)t[u+192>>2]=t[s>>2];n=(b&4|0)!=0;do{if(!n){r=u+208|0;if((t[r>>2]|0)==0?(a[u+260>>1]&1)==0:0)break;k=e+256|0;t[c>>2]=t[k>>2];t[c+4>>2]=t[k+4>>2];t[c+8>>2]=t[k+8>>2];t[c+12>>2]=t[k+12>>2];t[c+16>>2]=t[k+16>>2];t[c+20>>2]=t[k+20>>2];t[c+24>>2]=t[k+24>>2];t[c+28>>2]=t[k+28>>2];cB(e,c);Tr(e,t[r>>2]|0,t[u+228>>2]|0,t[u+244>>2]|0,t[u+212>>2]|0)}}while(0);zB(e,A);r=t[(t[A+16>>2]|0)+12>>2]|0;if(r|0)jF(e,4,r);do{if(!n){if((t[u+208>>2]|0)==0?(a[u+260>>1]&1)==0:0)break;Or(e)}}while(0);WB(e,A,b);Fr(e);if(f|0){hw(o);t[u+212>>2]=f}h=w;return}function ZB(e){e=e|0;var A=0,r=0,i=0,a=0,n=0,f=0,l=0,s=0;f=h;h=h+32|0;r=f+24|0;A=f+16|0;s=f+8|0;a=f;n=e+196|0;l=e+188|0;t[A>>2]=t[n>>2];t[A+4>>2]=t[n+4>>2];t[r>>2]=t[l>>2];t[r+4>>2]=t[l+4>>2];QB(s,A,r);l=t[s+4>>2]|0;i=n;t[i>>2]=t[s>>2];t[i+4>>2]=l;if(!((CB(e)|0)<<24>>24)){i=e+180|0;if(!(t[e+184>>2]|0))t[e+200>>2]=t[e+176>>2];else t[n>>2]=t[e+172>>2];t[A>>2]=t[n>>2];t[A+4>>2]=t[n+4>>2];t[r>>2]=t[i>>2];t[r+4>>2]=t[i+4>>2];QB(a,A,r);l=t[a+4>>2]|0;s=n;t[s>>2]=t[a>>2];t[s+4>>2]=l}h=f;return}function GB(e,A){e=e|0;A=A|0;var r=0;r=t[A>>2]|0;if(!r){r=e+160|0;t[r>>2]=(t[r>>2]|0)+1}else{t[e+160>>2]=t[r>>2];t[A>>2]=r+4}return}function LB(e){e=e|0;Wr(e);AB(e);return}function QB(e,A,r){e=e|0;A=A|0;r=r|0;var i=0;i=(t[r+4>>2]|0)+(t[A+4>>2]|0)|0;t[e>>2]=(t[r>>2]|0)+(t[A>>2]|0);t[e+4>>2]=i;return}function DB(e){e=e|0;var A=0.0,r=0.0,i=0.0,a=0,n=0.0,f=0,l=0,s=0,o=0,u=0,b=0.0,w=0,k=0,d=0,v=0,g=0,m=0.0;g=h;h=h+48|0;u=g+32|0;a=g+24|0;l=g+8|0;s=g+16|0;o=g;d=e+196|0;k=t[d>>2]|0;d=t[d+4>>2]|0;w=a;t[w>>2]=k;t[w+4>>2]=d;w=e+164|0;f=t[w>>2]|0;w=t[w+4>>2]|0;v=l;t[v>>2]=f;t[v+4>>2]=w;v=e+360|0;if(!(t[v>>2]|0)){s=k;l=d}else{t[u>>2]=t[a>>2];t[u+4>>2]=t[a+4>>2];rF(s,u);d=s;s=t[d>>2]|0;d=t[d+4>>2]|0;w=a;t[w>>2]=s;t[w+4>>2]=d;t[u>>2]=t[l>>2];t[u+4>>2]=t[l+4>>2];rF(o,u);w=o;f=t[w>>2]|0;w=t[w+4>>2]|0;t[l>>2]=f;t[l+4>>2]=w;l=d}r=+c[e+320>>3];n=r*+(s|0)-+c[e+240>>3];c[e+288>>3]=n;i=+c[e+328>>3];b=i*+(l|0)-+c[e+248>>3];c[e+296>>3]=b;c[e+304>>3]=r+n;c[e+312>>3]=i+b;a=e+472|0;if(!(t[(t[e+12>>2]|0)+28>>2]|0)){d=e+456|0;t[a>>2]=t[d>>2];t[a+4>>2]=t[d+4>>2];t[a+8>>2]=t[d+8>>2];t[a+12>>2]=t[d+12>>2]}else{k=e+456|0;t[a>>2]=t[((t[a>>2]|0)<(t[k>>2]|0)?a:k)>>2];d=e+476|0;t[d>>2]=t[((t[d>>2]|0)<(t[e+460>>2]|0)?a:k)+4>>2];d=e+480|0;t[d>>2]=t[((t[d>>2]|0)>(t[e+464>>2]|0)?a:k)+8>>2];d=e+484|0;t[d>>2]=t[((t[d>>2]|0)>(t[e+468>>2]|0)?a:k)+12>>2]}o=t[e+152>>2]|0;A=+c[e+336>>3];if(!(o&128)){A=(+(s|0)-+(f|0)*.5)*r+A;c[e+256>>3]=A;n=(+(l|0)-+(w|0)*.5)*i+ +c[e+344>>3];b=n;r=r+A;n=n+i}else{r=+c[e+368>>3]*.5;i=A-r;c[e+256>>3]=i;n=+c[e+344>>3];m=+c[e+376>>3]*.5;b=n-m;r=r+A;n=m+n;A=i}c[e+264>>3]=b;c[e+272>>3]=r;c[e+280>>3]=n;if(!(t[v>>2]|0)){i=+c[e+352>>3];c[e+504>>3]=+c[e+384>>3]/i-A;if(!(o&4096)){r=+c[e+392>>3]/i;A=b}else{r=-n;A=+c[e+392>>3]/i}c[e+512>>3]=r-A}else{a=e+384|0;i=+c[e+352>>3];c[e+512>>3]=-n-+c[e+392>>3]/i;if(!(o&4096))r=+c[a>>3]/i;else{r=-r;A=+c[a>>3]/i}c[e+504>>3]=r-A}h=g;return}function zB(e,A){e=e|0;A=A|0;var r=0,a=0.0,n=0,f=0,l=0,c=0,o=0,u=0,b=0,w=0,k=0,d=0,v=0;v=h;h=h+48|0;k=v;b=v+40|0;w=v+36|0;d=v+32|0;r=Hw(A,140977)|0;if(!r){l=1;r=137198}else{f=(i[r>>0]|0)==0;l=f&1;r=f?137198:r}n=t[e+152>>2]|0;f=(i[r>>0]|0)==116;if(!(n&256))if(f){o=(e1(r,137379)|0)==0;c=o?137198:r;o=o?1:l;u=8}else{c=r;o=l;u=8}else if(!(f?!(e1(r,137379)|0):0)){c=r;o=l;u=8}if((u|0)==8?!((o|0)!=0&(n&33554432|0)!=0):0)if(!((KY(c,b,w)|0)<<24>>24)){Ai(e,c);$r(e,137379);d=e+256|0;t[k>>2]=t[d>>2];t[k+4>>2]=t[d+4>>2];t[k+8>>2]=t[d+8>>2];t[k+12>>2]=t[d+12>>2];t[k+16>>2]=t[d+16>>2];t[k+20>>2]=t[d+20>>2];t[k+24>>2]=t[d+24>>2];t[k+28>>2]=t[d+28>>2];ni(e,k,1)}else{t[d>>2]=0;f=t[b>>2]|0;Ai(e,f);$r(e,137379);qY(A,d)|0;r=t[b+4>>2]|0;n=hx(A,t[47143]|0,0,0)|0;a=+s[w>>2];if(!r)ri(e,137314,n,a);else ri(e,r,n,a);d=(t[d>>2]|0)>>>1&1|2;w=e+256|0;t[k>>2]=t[w>>2];t[k+4>>2]=t[w+4>>2];t[k+8>>2]=t[w+8>>2];t[k+12>>2]=t[w+12>>2];t[k+16>>2]=t[w+16>>2];t[k+20>>2]=t[w+20>>2];t[k+24>>2]=t[w+24>>2];t[k+28>>2]=t[w+28>>2];ni(e,k,d);G2(f)}r=t[(t[(t[A+16>>2]|0)+8>>2]|0)+88>>2]|0;if(r|0)eF(e,r);h=v;return}function WB(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0,n=0;n=(t[e>>2]|0)+28|0;t[n>>2]=(t[n>>2]|0)+1;n=(r&4|0)!=0;if(!n)YB(e,A,r);e:do{if(!(r&1)){if(r&16|0){Hr(e);a=sd(A)|0;while(1){if(!a)break;i=Ow(A,a)|0;while(1){if(!i)break;MB(e,i);i=qw(A,i)|0}a=cd(A,a)|0}Pr(e);xr(e);i=sd(A)|0;while(1){if(!i)break;FB(e,i);i=cd(A,i)|0}Jr(e);break}if(!(r&8)){a=sd(A)|0;while(1){if(!a)break e;FB(e,a);i=Ow(A,a)|0;while(1){if(!i)break;FB(e,t[((t[i>>2]&3|0)==2?i:i+-48|0)+40>>2]|0);MB(e,i);i=qw(A,i)|0}a=cd(A,a)|0}}xr(e);i=sd(A)|0;while(1){if(!i)break;if((VB(A,i)|0)<<24>>24)FB(e,i);i=cd(A,i)|0}Jr(e);Hr(e);a=sd(A)|0;while(1){if(!a)break;i=Ow(A,a)|0;while(1){if(!i)break;if((NB(A,i)|0)<<24>>24)MB(e,i);i=qw(A,i)|0}a=cd(A,a)|0}Pr(e)}else{xr(e);i=sd(A)|0;while(1){if(!i)break;FB(e,i);i=cd(A,i)|0}Jr(e);Hr(e);a=sd(A)|0;while(1){if(!a)break;i=Ow(A,a)|0;while(1){if(!i)break;MB(e,i);i=qw(A,i)|0}a=cd(A,a)|0}Pr(e)}}while(0);if(n)YB(e,A,r);return}function YB(e,A,r){e=e|0;A=A|0;r=r|0;var f=0,l=0,o=0,u=0,b=0.0,w=0,k=0,d=0,v=0,g=0,m=0,p=0,E=0,B=0,y=0,C=0,I=0,Z=0,G=0,L=0,Q=0,D=0,z=0,W=0,Y=0,F=0,M=0,V=0,N=0,R=0,x=0,J=0,H=0;J=h;h=h+128|0;E=J+72|0;R=J+64|0;W=J+112|0;Y=J;F=J+104|0;M=A+16|0;V=(r&4|0)!=0;N=e+16|0;B=Y+32|0;y=Y+16|0;I=Y+8|0;Z=Y+24|0;G=Y+48|0;L=Y+40|0;Q=Y+56|0;D=(r&8|0)==0;z=F+4|0;p=1;while(1){f=t[M>>2]|0;if((p|0)>(t[f+180>>2]|0))break;m=t[(t[f+184>>2]|0)+(p<<2)>>2]|0;if((OY(e,m)|0)<<24>>24){if(V)YB(e,m,r);_Y(e,m);d=t[N>>2]|0;v=d+208|0;if(!(t[v>>2]|0))g=(a[d+260>>1]&1)!=0;else g=1;Ca(Hw(m,100032)|0);if(!(V|g^1)){k=(t[m+16>>2]|0)+16|0;t[E>>2]=t[k>>2];t[E+4>>2]=t[k+4>>2];t[E+8>>2]=t[k+8>>2];t[E+12>>2]=t[k+12>>2];t[E+16>>2]=t[k+16>>2];t[E+20>>2]=t[k+20>>2];t[E+24>>2]=t[k+24>>2];t[E+28>>2]=t[k+28>>2];cB(e,E);Tr(e,t[v>>2]|0,t[d+228>>2]|0,t[d+244>>2]|0,t[d+212>>2]|0)}t[W>>2]=0;f=qY(m,W)|0;if(!f)w=0;else{ii(e,f);w=t[W>>2]&1}k=m+16|0;f=n[(t[k>>2]|0)+112>>0]|0;do{if(!(f&1)){if(f&2|0){f=vx(m,0,106256)|0;l=vx(m,0,106264)|0;x=29;break}if(f&8|0){f=vx(m,0,106272)|0;l=vx(m,0,106280)|0;x=29;break}if(f&4|0){f=vx(m,0,106288)|0;l=vx(m,0,106296)|0;x=29;break}f=Hw(m,140823)|0;if(!f)l=0;else l=(i[f>>0]|0)==0?0:f;f=Hw(m,137729)|0;if(!f)f=l;else f=(i[f>>0]|0)==0?l:f;o=Hw(m,101418)|0;if(o)l=(i[o>>0]|0)==0?l:o;if(!((w|0)!=0&(l|0)!=0)){o=Hw(m,140977)|0;if(o|0?i[o>>0]|0:0){l=o;x=29;break}f=(f|0)==0?137314:f;u=(l|0)==0?134800:l;t[F>>2]=0;if(!w)l=0;else x=31}else x=29}else{f=vx(m,0,106240)|0;l=vx(m,0,106248)|0;x=29}}while(0);if((x|0)==29){t[F>>2]=0;f=(f|0)==0?137314:f;u=(l|0)==0?134800:l;x=31}if((x|0)==31){x=0;if(!((KY(u,F,E)|0)<<24>>24)){Ai(e,u);l=1}else{Ai(e,t[F>>2]|0);l=t[z>>2]|0;o=hx(m,t[47143]|0,0,0)|0;b=+s[E>>2];if(!l)ri(e,137314,o,b);else ri(e,l,o,b);l=(t[W>>2]|0)>>>1&1|2}}o=t[47142]|0;if((o|0?(C=Pw(m,o)|0,C|0):0)?i[C>>0]|0:0)ui(e,+wx(m,t[47142]|0,1.0,0.0));w=t[W>>2]|0;do{if(w&4){o=hx(m,t[47141]|0,1,0)|0;if(o|l|0){u=t[k>>2]|0;H=u+16|0;t[Y>>2]=t[H>>2];t[Y+4>>2]=t[H+4>>2];t[Y+8>>2]=t[H+8>>2];t[Y+12>>2]=t[H+12>>2];u=u+32|0;t[B>>2]=t[u>>2];t[B+4>>2]=t[u+4>>2];t[B+8>>2]=t[u+8>>2];t[B+12>>2]=t[u+12>>2];c[y>>3]=+c[B>>3];c[Z>>3]=+c[I>>3];c[G>>3]=+c[Y>>3];c[Q>>3]=+c[L>>3];if(!o)$r(e,137379);else $r(e,f);lN(e,Y,4,w,l)}}else{if(!(w&64)){if(hx(m,t[47141]|0,1,0)|0){$r(e,f);H=(t[k>>2]|0)+16|0;t[E>>2]=t[H>>2];t[E+4>>2]=t[H+4>>2];t[E+8>>2]=t[H+8>>2];t[E+12>>2]=t[H+12>>2];t[E+16>>2]=t[H+16>>2];t[E+20>>2]=t[H+20>>2];t[E+24>>2]=t[H+24>>2];t[E+28>>2]=t[H+28>>2];ni(e,E,l);break}if(!l)break;$r(e,137379);H=(t[k>>2]|0)+16|0;t[E>>2]=t[H>>2];t[E+4>>2]=t[H+4>>2];t[E+8>>2]=t[H+8>>2];t[E+12>>2]=t[H+12>>2];t[E+16>>2]=t[H+16>>2];t[E+20>>2]=t[H+20>>2];t[E+24>>2]=t[H+24>>2];t[E+28>>2]=t[H+28>>2];ni(e,E,l);break}H=t[k>>2]|0;w=H+16|0;t[Y>>2]=t[w>>2];t[Y+4>>2]=t[w+4>>2];t[Y+8>>2]=t[w+8>>2];t[Y+12>>2]=t[w+12>>2];H=H+32|0;t[B>>2]=t[H>>2];t[B+4>>2]=t[H+4>>2];t[B+8>>2]=t[H+8>>2];t[B+12>>2]=t[H+12>>2];c[y>>3]=+c[B>>3];c[Z>>3]=+c[I>>3];c[G>>3]=+c[Y>>3];c[Q>>3]=+c[L>>3];if(!(hx(m,t[47141]|0,1,0)|0))$r(e,137379);else $r(e,f);if((sB(e,Y,u,0)|0)>1){t[R>>2]=Mk(m)|0;nw(3,100400,R)|0}H=(t[k>>2]|0)+16|0;t[E>>2]=t[H>>2];t[E+4>>2]=t[H+4>>2];t[E+8>>2]=t[H+8>>2];t[E+12>>2]=t[H+12>>2];t[E+16>>2]=t[H+16>>2];t[E+20>>2]=t[H+20>>2];t[E+24>>2]=t[H+24>>2];t[E+28>>2]=t[H+28>>2];ni(e,E,0)}}while(0);G2(t[F>>2]|0);f=t[(t[k>>2]|0)+12>>2]|0;if(f|0)jF(e,5,f);if(g){if(V){H=(t[k>>2]|0)+16|0;t[E>>2]=t[H>>2];t[E+4>>2]=t[H+4>>2];t[E+8>>2]=t[H+8>>2];t[E+12>>2]=t[H+12>>2];t[E+16>>2]=t[H+16>>2];t[E+20>>2]=t[H+20>>2];t[E+24>>2]=t[H+24>>2];t[E+28>>2]=t[H+28>>2];cB(e,E);Tr(e,t[v>>2]|0,t[d+228>>2]|0,t[d+244>>2]|0,t[d+212>>2]|0)}Or(e)}e:do{if(!D){l=sd(m)|0;while(1){if(!l)break e;FB(e,l);f=Ow(m,l)|0;while(1){if(!f)break;MB(e,f);f=qw(m,f)|0}l=cd(m,l)|0}}}while(0);$Y(e,A);if(!V)YB(e,m,r)}p=p+1|0}h=J;return}function FB(e,A){e=e|0;A=A|0;var r=0,a=0,n=0,f=0,l=0,s=0,c=0;s=h;h=h+32|0;r=s;f=t[e>>2]|0;l=A+16|0;e:do{if(((t[(t[l>>2]|0)+8>>2]|0?(JY(e,Bd(A)|0,A)|0)<<24>>24:0)?(c=e+256|0,t[r>>2]=t[c>>2],t[r+4>>2]=t[c+4>>2],t[r+8>>2]=t[c+8>>2],t[r+12>>2]=t[c+12>>2],t[r+16>>2]=t[c+16>>2],t[r+20>>2]=t[c+20>>2],t[r+24>>2]=t[c+24>>2],t[r+28>>2]=t[c+28>>2],(HY(A,r)|0)<<24>>24):0)?(a=(t[l>>2]|0)+116|0,n=t[f+28>>2]|0,(n|0)!=(i[a>>0]|0)):0){i[a>>0]=n;si(e,Mk(A)|0);r=dx(A,t[47169]|0,195059)|0;if(i[r>>0]|0)si(e,r);r=dx(A,t[47157]|0,195059)|0;A:do{if(i[r>>0]|0){JB(r)|0;r=188228;while(1){a=r;r=r+4|0;a=t[a>>2]|0;if(!a)break A;if((i[a>>0]|0)!=105)continue;if(!(e1(a,134335)|0))break e}}}while(0);PY(e,A);M5[t[(t[(t[(t[l>>2]|0)+8>>2]|0)+4>>2]|0)+20>>2]&63](e,A);r=t[(t[l>>2]|0)+108>>2]|0;if(r|0?i[r+81>>0]|0:0)jF(e,10,r);XY(e)}}while(0);h=s;return}function MB(e,A){e=e|0;A=A|0;var r=0,a=0,n=0,f=0,l=0;f=h;h=h+32|0;n=f;r=e+256|0;t[n>>2]=t[r>>2];t[n+4>>2]=t[r+4>>2];t[n+8>>2]=t[r+8>>2];t[n+12>>2]=t[r+12>>2];t[n+16>>2]=t[r+16>>2];t[n+20>>2]=t[r+20>>2];t[n+24>>2]=t[r+24>>2];t[n+28>>2]=t[r+28>>2];e:do{if((RB(A,n)|0)<<24>>24?(a=A+-48|0,(xB(e,A)|0)<<24>>24):0){l=A+48|0;r=U2(Mk(t[((t[A>>2]&3|0)==3?A:l)+40>>2]|0)|0)|0;r=Z2(r+3+(U2(Mk(t[((t[A>>2]&3|0)==2?A:a)+40>>2]|0)|0)|0)|0)|0;$1(r,Mk(t[((t[A>>2]&3|0)==3?A:l)+40>>2]|0)|0)|0;l=(Bk(Bd(t[((t[A>>2]&3|0)==2?A:a)+40>>2]|0)|0)|0)==0;n=r+(U2(r)|0)|0;if(l){i[n>>0]=i[141747]|0;i[n+1>>0]=i[141748]|0;i[n+2>>0]=i[141749]|0}else{i[n>>0]=i[137738]|0;i[n+1>>0]=i[137739]|0;i[n+2>>0]=i[137740]|0}b3(r,Mk(t[((t[A>>2]&3|0)==2?A:a)+40>>2]|0)|0)|0;si(e,r);G2(r);r=dx(A,t[47191]|0,195059)|0;if(i[r>>0]|0)si(e,r);r=dx(A,t[47185]|0,195059)|0;A:do{if(!(i[r>>0]|0))r=0;else{JB(r)|0;r=188228;while(1){a=r;r=r+4|0;a=t[a>>2]|0;if(!a){r=188228;break A}if((i[a>>0]|0)!=105)continue;if(!(e1(a,134335)|0))break e}}}while(0);tY(e,A,r);nY(e,A,r);fY(e)}}while(0);h=f;return}function VB(e,A){e=e|0;A=A|0;var r=0,i=0;r=e+16|0;e=1;while(1){i=t[r>>2]|0;if((e|0)>(t[i+180>>2]|0)){e=1;break}if(!(Wd(t[(t[i+184>>2]|0)+(e<<2)>>2]|0,A)|0))e=e+1|0;else{e=0;break}}return e|0}function NB(e,A){e=e|0;A=A|0;var r=0,i=0;r=e+16|0;e=1;while(1){i=t[r>>2]|0;if((e|0)>(t[i+180>>2]|0)){e=1;break}if(!(Wd(t[(t[i+184>>2]|0)+(e<<2)>>2]|0,A)|0))e=e+1|0;else{e=0;break}}return e|0}function RB(e,A){e=e|0;A=A|0;var r=0,a=0,n=0,f=0,l=0,s=0;s=h;h=h+64|0;l=s+32|0;a=s;n=e+16|0;e=t[n>>2]|0;r=t[e+8>>2]|0;if((r|0)!=0?(r=r+8|0,t[a>>2]=t[r>>2],t[a+4>>2]=t[r+4>>2],t[a+8>>2]=t[r+8>>2],t[a+12>>2]=t[r+12>>2],t[a+16>>2]=t[r+16>>2],t[a+20>>2]=t[r+20>>2],t[a+24>>2]=t[r+24>>2],t[a+28>>2]=t[r+28>>2],t[l>>2]=t[A>>2],t[l+4>>2]=t[A+4>>2],t[l+8>>2]=t[A+8>>2],t[l+12>>2]=t[A+12>>2],t[l+16>>2]=t[A+16>>2],t[l+20>>2]=t[A+20>>2],t[l+24>>2]=t[A+24>>2],t[l+28>>2]=t[A+28>>2],(xY(a,l)|0)!=0):0)e=1;else f=3;do{if((f|0)==3){r=t[e+96>>2]|0;if(r){t[l>>2]=t[A>>2];t[l+4>>2]=t[A+4>>2];t[l+8>>2]=t[A+8>>2];t[l+12>>2]=t[A+12>>2];t[l+16>>2]=t[A+16>>2];t[l+20>>2]=t[A+20>>2];t[l+24>>2]=t[A+24>>2];t[l+28>>2]=t[A+28>>2];if((CJ(r,l)|0)<<24>>24){e=1;break}e=t[n>>2]|0}e=t[e+108>>2]|0;if((e|0?i[e+81>>0]|0:0)?(t[l>>2]=t[A>>2],t[l+4>>2]=t[A+4>>2],t[l+8>>2]=t[A+8>>2],t[l+12>>2]=t[A+12>>2],t[l+16>>2]=t[A+16>>2],t[l+20>>2]=t[A+20>>2],t[l+24>>2]=t[A+24>>2],t[l+28>>2]=t[A+28>>2],(CJ(e,l)|0)<<24>>24):0){e=1;break}e=0}}while(0);h=s;return e|0}function xB(e,A){e=e|0;A=A|0;var r=0,a=0;e:do{if((t[e+156>>2]|0)>=2?(r=dx(A,t[47190]|0,195059)|0,(MY(e,r)|0)<<24>>24==0):0)if(!(i[r>>0]|0)){r=0;while(1){if((r|0)>=2){r=0;break e}a=(r|0)==1;a=dx(t[((t[A>>2]&3|0)==((a?2:3)|0)?A:A+((a?-1:1)*48|0)|0)+40>>2]|0,t[47167]|0,195059)|0;if(!(i[a>>0]|0)){r=1;break e}if(!((MY(e,a)|0)<<24>>24))r=r+1|0;else{r=1;break}}}else r=0;else r=1}while(0);return r|0}function JB(e){e=e|0;var A=0,r=0,a=0,n=0,f=0,l=0,s=0,c=0,o=0,u=0,b=0,w=0;w=h;h=h+192|0;b=w+24|0;u=w+16|0;o=w+8|0;c=w;n=w+48|0;s=w+32|0;if(i[100282]|0){cw(188492,128,194826);i[100282]=0}cw(s,128,w+56|0);t[n>>2]=e;f=s+4|0;l=s+8|0;A=0;r=0;e:while(1){a=A;A:while(1)switch(YY(n,s)|0){case 0:{A=21;break e}case 40:if(!(a<<24>>24)){a=1;continue A}else{A=7;break e}case 41:if(!(a<<24>>24)){A=9;break e}else{a=0;continue A}default:break A}if(!(a<<24>>24)){if((r|0)==63){A=12;break}A=t[47124]|0;if(A>>>0>=(t[47125]|0)>>>0){ow(188492,1)|0;A=t[47124]|0}t[47124]=A+1;i[A>>0]=0;t[188228+(r<<2)>>2]=t[47124];r=r+1|0}A=t[f>>2]|0;if(A>>>0>=(t[l>>2]|0)>>>0){ow(s,1)|0;A=t[f>>2]|0}i[A>>0]=0;A=t[s>>2]|0;t[f>>2]=A;bw(188492,A)|0;A=t[47124]|0;if(A>>>0>=(t[47125]|0)>>>0){ow(188492,1)|0;A=t[47124]|0}t[47124]=A+1;i[A>>0]=0;A=a}do{if((A|0)==7){t[c>>2]=e;nw(1,100283,c)|0;t[47057]=0;hw(s)}else if((A|0)==9){t[o>>2]=e;nw(1,100317,o)|0;t[47057]=0;hw(s)}else if((A|0)==12){t[u>>2]=e;nw(0,100345,u)|0;t[47120]=0;hw(s)}else if((A|0)==21){if(a<<24>>24){t[b>>2]=e;nw(1,100368,b)|0;t[47057]=0;hw(s);break}t[188228+(r<<2)>>2]=0;hw(s);A=t[47124]|0;if(A>>>0>=(t[47125]|0)>>>0){ow(188492,1)|0;A=t[47124]|0}i[A>>0]=0;t[47124]=t[47123]}}while(0);h=w;return 188228}function HB(e){e=e|0;var A=0;A=h;h=h+e|0;h=h+15&-16;return A|0}function PB(){return h|0}function XB(e){e=e|0;h=e}function SB(e,A){e=e|0;A=A|0;h=e;w=A}function jB(e,A){e=e|0;A=A|0;if(!d){d=e;v=A}}function UB(e){e=e|0;G=e}function TB(){return G|0}function OB(e){e=e|0;t[46654]=e;return 0}function _B(){return t[46654]|0}function qB(e,A){e=e|0;A=A|0;Pe(0,e|0,A|0)|0;return}function KB(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0,n=0,f=0,l=0;l=h;h=h+16|0;a=l+4|0;n=l;t[a>>2]=0;f=up()|0;dp(f,10976);dp(f,17220);dp(f,17440);tw(1)|0;aw(18)|0;while(1){e=qk(e)|0;i=t[a>>2]|0;if(!e)break;if(i|0){e=195059;continue}bp(f,e,r)|0;kp(f,e,A,a,n)|0;e=195059}h=l;return i|0}function $B(e){e=e|0;var A=0,r=0,i=0,n=0;n=h;h=h+16|0;A=n+4|0;r=n;i=t[(t[e+16>>2]|0)+8>>2]|0;e=e+64|0;switch(t[e>>2]|0){case 0:{KM(i);break}case 1:{if(a[(t[i+16>>2]|0)+136>>1]&1)sJ(i);break}case 4:case 5:case 6:{OM(i,r,A);ry(i,t[r>>2]|0,t[A>>2]|0,t[e>>2]|0);break}default:{}}h=n;return}function ey(e){e=e|0;var A=0,r=0,i=0,a=0;r=t[(t[e+16>>2]|0)+8>>2]|0;if(!(t[46655]|0)){t[46655]=t[4678];t[46656]=57;t[46657]=19}i=r+64|0;a=(t[i>>2]|0)+8|0;A=t[a>>2]|0;t[a>>2]=186620;switch(t[e+64>>2]|0){case 2:{RM(e,r,e,0);break}case 3:{RM(e,r,e,1);break}case 1:case 0:{if(!(t[e+152>>2]&134217728))ig(r,e)|0;break}case 6:case 5:case 4:{Ay(r);if(!(t[e+152>>2]&134217728))ig(r,e)|0;break}default:{}}t[(t[i>>2]|0)+8>>2]=A;return}function Ay(e){e=e|0;var A=0,r=0;A=t[46659]|0;if((A|0)!=(t[46658]|0)){r=t[t[46690]>>2]|0;if(!r){r=wJ(e,0,99808,195059)|0;t[t[46690]>>2]=r;A=t[46659]|0}if(A>>>0>=(t[46660]|0)>>>0){ow(186632,1)|0;A=t[46659]|0}i[A>>0]=0;A=t[46658]|0;t[46659]=A;Mw(e,r,A)|0}if(t[(t[e+16>>2]|0)+12>>2]|0){r=t[(t[46690]|0)+4>>2]|0;A=t[46675]|0;if(A>>>0>=(t[46676]|0)>>>0){ow(186696,1)|0;A=t[46675]|0}i[A>>0]=0;A=t[46674]|0;t[46675]=A;Mw(e,r,A)|0}Sw(e,66753,t[(t[46690]|0)+8236>>2]|0,195059)|0;A=0;while(1){if((A|0)==8)break;hw(186632+(A<<4)|0);A=A+1|0}G2(t[46690]|0);c[1]=1.0;c[5]=1.0;t[46691]=0;t[46695]=0;return}function ry(e,A,r,n){e=e|0;A=A|0;r=r|0;n=n|0;var f=0,l=0,s=0;l=Z2(8240)|0;t[46690]=l;e:do{switch(n|0){case 6:{a[l+8232>>1]=14;n=66769;break}case 5:{a[l+8232>>1]=12;n=66773;break}default:{n=Hw(e,66753)|0;if((n|0?i[n>>0]|0:0)?(f=iy(n)|0,(f&65535)>10):0){l=t[46690]|0;a[l+8232>>1]=f;break e}n=iy(66765)|0;l=t[46690]|0;a[l+8232>>1]=n;n=66765}}}while(0);t[l+8236>>2]=n;s=e+16|0;n=t[s>>2]|0;if(!(t[n+180>>2]|0))f=0;else{f=wJ(e,0,99808,195059)|0;l=t[46690]|0;n=t[s>>2]|0}t[l>>2]=f;if(!(i[n+113>>0]&8))n=0;else n=wJ(e,0,66777,195059)|0;t[(t[46690]|0)+4>>2]=n;l=wJ(e,1,99808,195059)|0;t[(t[46690]|0)+8>>2]=l;l=wJ(e,1,66777,195059)|0;t[(t[46690]|0)+12>>2]=l;l=wJ(e,2,99808,195059)|0;n=t[46690]|0;t[n+16>>2]=l;if(!r)f=0;else{f=wJ(e,2,66785,195059)|0;n=t[46690]|0}t[n+20>>2]=f;if(!A)f=0;else{f=wJ(e,2,66793,195059)|0;n=t[46690]|0}t[n+24>>2]=f;f=i[(t[s>>2]|0)+113>>0]|0;if(!(f&33))l=0;else{l=wJ(e,2,66777,195059)|0;n=t[46690]|0;f=i[(t[s>>2]|0)+113>>0]|0}t[n+28>>2]=l;if(!(f&2))l=0;else{l=wJ(e,2,66801,195059)|0;n=t[46690]|0;f=i[(t[s>>2]|0)+113>>0]|0}t[n+32>>2]=l;if(!(f&4))f=0;else{f=wJ(e,2,66810,195059)|0;n=t[46690]|0}t[n+36>>2]=f;n=0;while(1){if((n|0)==8)break;cw(186632+(n<<4)|0,1024,(t[46690]|0)+40+(n<<10)|0);n=n+1|0}return}function iy(e){e=e|0;var A=0,r=0,a=0,n=0,f=0,l=0,s=0;s=h;h=h+1040|0;f=s;n=s+8|0;a=0;A=e;e:while(1){do{r=A;A=A+1|0;r=i[r>>0]|0;if(!(r<<24>>24))break e}while(((r<<24>>24)+-48|0)>>>0>=10);if((a|0)>=1023){l=7;break}i[n+a>>0]=r;a=a+1|0}if((l|0)==7){t[f>>2]=e;nw(0,66819,f)|0}i[n+a>>0]=0;l=(K3(n)|0)&65535;h=s;return l|0}function ay(e){e=e|0;var A=0,r=0;r=t[(t[e+16>>2]|0)+8>>2]|0;A=t[t[46690]>>2]|0;e=t[46663]|0;if(e>>>0>=(t[46664]|0)>>>0){ow(186648,1)|0;e=t[46663]|0}i[e>>0]=0;e=t[46662]|0;t[46663]=e;Mw(r,A,e)|0;if(t[(t[r+16>>2]|0)+12>>2]|0){A=t[(t[46690]|0)+4>>2]|0;e=t[46679]|0;if(e>>>0>=(t[46680]|0)>>>0){ow(186712,1)|0;e=t[46679]|0}i[e>>0]=0;e=t[46678]|0;t[46679]=e;Mw(r,A,e)|0}c[2]=1.0;c[6]=1.0;t[46692]=0;t[46696]=0;return}function ty(e){e=e|0;var A=0,r=0;r=t[(t[e+16>>2]|0)+8>>2]|0;e=t[46663]|0;if((t[46662]|0)!=(e|0)){A=t[(t[46690]|0)+8>>2]|0;if(e>>>0>=(t[46664]|0)>>>0){ow(186648,1)|0;e=t[46663]|0}i[e>>0]=0;e=t[46662]|0;t[46663]=e;Mw(r,A,e)|0}e=t[46679]|0;if((t[46678]|0)!=(e|0)){A=t[(t[46690]|0)+12>>2]|0;if(e>>>0>=(t[46680]|0)>>>0){ow(186712,1)|0;e=t[46679]|0}i[e>>0]=0;e=t[46678]|0;t[46679]=e;Mw(r,A,e)|0}c[9]=1.0;c[11]=1.0;t[46699]=0;t[46701]=0;return}function ny(e){e=e|0;var A=0,r=0;r=t[(t[e+16>>2]|0)+8>>2]|0;e=t[46663]|0;if((t[46662]|0)!=(e|0)){A=t[(t[46690]|0)+16>>2]|0;if(e>>>0>=(t[46664]|0)>>>0){ow(186648,1)|0;e=t[46663]|0}i[e>>0]=0;e=t[46662]|0;t[46663]=e;Mw(r,A,e)|0}e=t[46667]|0;if((t[46666]|0)!=(e|0)){A=t[(t[46690]|0)+24>>2]|0;if(e>>>0>=(t[46668]|0)>>>0){ow(186664,1)|0;e=t[46667]|0}i[e>>0]=0;e=t[46666]|0;t[46667]=e;Mw(r,A,e)|0}e=t[46671]|0;if((t[46670]|0)!=(e|0)){A=t[(t[46690]|0)+20>>2]|0;if(e>>>0>=(t[46672]|0)>>>0){ow(186680,1)|0;e=t[46671]|0}i[e>>0]=0;e=t[46670]|0;t[46671]=e;Mw(r,A,e)|0}e=t[46679]|0;if((t[46678]|0)!=(e|0)){A=t[(t[46690]|0)+28>>2]|0;if(e>>>0>=(t[46680]|0)>>>0){ow(186712,1)|0;e=t[46679]|0}i[e>>0]=0;e=t[46678]|0;t[46679]=e;Mw(r,A,e)|0}e=t[46683]|0;if((t[46682]|0)!=(e|0)){A=t[(t[46690]|0)+36>>2]|0;if(e>>>0>=(t[46684]|0)>>>0){ow(186728,1)|0;e=t[46683]|0}i[e>>0]=0;e=t[46682]|0;t[46683]=e;Mw(r,A,e)|0}e=t[46687]|0;if((t[46686]|0)!=(e|0)){A=t[(t[46690]|0)+32>>2]|0;if(e>>>0>=(t[46688]|0)>>>0){ow(186744,1)|0;e=t[46687]|0}i[e>>0]=0;e=t[46686]|0;t[46687]=e;Mw(r,A,e)|0}c[10]=1.0;c[12]=1.0;c[3]=1.0;c[4]=1.0;c[7]=1.0;c[8]=1.0;t[46700]=0;t[46702]=0;t[46693]=0;t[46694]=0;t[46697]=0;t[46698]=0;return}function fy(e,A,r){e=e|0;A=A|0;r=r|0;var n=0,f=0,l=0,s=0,o=0,u=0,b=0,w=0,k=0,d=0,v=0,g=0;g=h;h=h+1056|0;l=g+16|0;v=g+8|0;d=g;s=g+32|0;b=t[(t[e+16>>2]|0)+12>>2]|0;w=t[11416+(b<<2)>>2]|0;bw(w,66916)|0;n=r+4|0;ky(s,+c[(t[n>>2]|0)+16>>3]);bw(w,s)|0;gy(e,195059,t[t[n>>2]>>2]|0);by(e);k=i[r+48>>0]|0;k=k<<24>>24==108?-1:k<<24>>24==114&1;n=t[n>>2]|0;if(!n)n=0;else n=t[n+24>>2]&127;f=a[(t[46690]|0)+8232>>1]|0;if((f&65535)>14?(o=t[11464+((f&65535)+-15<<2)>>2]&n,u=186764+(b<<2)|0,(t[u>>2]|0)!=(o|0)):0){t[d>>2]=o;T4(s,66919,d)|0;bw(w,s)|0;t[u>>2]=o}d=A+8|0;c[d>>3]=+c[d>>3]+ +c[r+24>>3];bw(w,66925)|0;t[l>>2]=t[A>>2];t[l+4>>2]=t[A+4>>2];t[l+8>>2]=t[A+8>>2];t[l+12>>2]=t[A+12>>2];wy(w,l);t[v>>2]=k;T4(s,102220,v)|0;bw(w,s)|0;ky(s,+c[r+32>>3]);bw(w,s)|0;gy(e,195059,t[r>>2]|0);h=g;return}function ly(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0,n=0,f=0;f=h;h=h+1040|0;a=f;n=f+16|0;i=t[(t[e+16>>2]|0)+12>>2]|0;uy(e);by(e);if(!r){e=t[11416+(i<<2)>>2]|0;bw(e,66913)|0}else{if((r|1|0)==3)py(e,r,A,2);else Ey(e);e=t[11416+(i<<2)>>2]|0;bw(e,66910)|0}t[a>>2]=t[A>>2];t[a+4>>2]=t[A+4>>2];t[a+8>>2]=t[A+8>>2];t[a+12>>2]=t[A+12>>2];wy(e,a);ky(n,+c[A+16>>3]-+c[A>>3]);bw(e,n)|0;ky(n,+c[A+24>>3]-+c[A+8>>3]);bw(e,n)|0;h=f;return}function sy(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;uy(e);by(e);if(!i)hy(e,112,A,r);else{if((i|1|0)==3)py(e,i,A,r);else Ey(e);hy(e,80,A,r)}return}function cy(e,A,r,i,a,t){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;t=t|0;uy(e);by(e);if(!t)hy(e,66,A,r);else{if((t|1|0)==3)py(e,t,A,r);else Ey(e);hy(e,98,A,r)}return}function oy(e,A,r){e=e|0;A=A|0;r=r|0;uy(e);by(e);hy(e,76,A,r);return}function uy(e){e=e|0;var A=0,r=0,a=0,n=0.0,f=0,l=0,s=0,o=0,u=0;u=h;h=h+1184|0;f=u;a=u+24|0;o=u+8|0;cw(o,1024,u+152|0);l=e+16|0;A=t[l>>2]|0;n=+c[A+152>>3];r=8+(t[A+12>>2]<<3)|0;if(n!=+c[r>>3]){c[r>>3]=n;bw(o,66882)|0;c[f>>3]=+c[(t[l>>2]|0)+152>>3];T4(a,66896,f)|0;dy(a,0);bw(o,a)|0;a=o+4|0;A=t[a>>2]|0;r=o+8|0;if(A>>>0>=(t[r>>2]|0)>>>0){ow(o,1)|0;A=t[a>>2]|0}t[a>>2]=A+1;i[A>>0]=41;A=t[a>>2]|0;if(A>>>0>=(t[r>>2]|0)>>>0){ow(o,1)|0;A=t[a>>2]|0}i[A>>0]=0;A=t[o>>2]|0;t[a>>2]=A;gy(e,66901,A);A=t[l>>2]|0}A=t[A+160>>2]|0;if(A|0){l=o+4|0;s=o+8|0;e:while(1){f=A+4|0;A=t[A>>2]|0;if(!A)break;switch(i[A>>0]|0){case 102:{if(!(e1(A,111101)|0)){A=f;continue e}break}case 98:{if(!(e1(A,111083)|0)){A=f;continue e}break}case 115:{if(!(e1(A,111088)|0)){A=f;continue e}break}default:{}}bw(o,A)|0;do{a=A;A=A+1|0}while((i[a>>0]|0)!=0);if(i[A>>0]|0){r=t[l>>2]|0;if(r>>>0>=(t[s>>2]|0)>>>0){ow(o,1)|0;r=t[l>>2]|0}t[l>>2]=r+1;i[r>>0]=40;a=0;while(1){if(!(i[A>>0]|0))break;if(a|0){r=t[l>>2]|0;if(r>>>0>=(t[s>>2]|0)>>>0){ow(o,1)|0;r=t[l>>2]|0}t[l>>2]=r+1;i[r>>0]=44}bw(o,A)|0;do{r=A;A=A+1|0}while((i[r>>0]|0)!=0);a=a+1|0}A=t[l>>2]|0;if(A>>>0>=(t[s>>2]|0)>>>0){ow(o,1)|0;A=t[l>>2]|0}t[l>>2]=A+1;i[A>>0]=41}A=t[l>>2]|0;if(A>>>0>=(t[s>>2]|0)>>>0){ow(o,1)|0;A=t[l>>2]|0}i[A>>0]=0;A=t[o>>2]|0;t[l>>2]=A;gy(e,66901,A);A=f}hw(o)}h=u;return}function by(e){e=e|0;vy((t[e+16>>2]|0)+16|0);gy(e,75834,193758);return}function hy(e,A,r,a){e=e|0;A=A|0;r=r|0;a=a|0;var n=0,f=0,l=0,s=0,c=0;c=h;h=h+1040|0;s=c;l=c+16|0;f=t[11416+(t[(t[e+16>>2]|0)+12>>2]<<2)>>2]|0;n=f+4|0;e=t[n>>2]|0;if(e>>>0>=(t[f+8>>2]|0)>>>0){ow(f,1)|0;e=t[n>>2]|0}t[n>>2]=e+1;i[e>>0]=A;t[s>>2]=a;T4(l,66846,s)|0;bw(f,l)|0;e=0;while(1){if((e|0)>=(a|0))break;l=r+(e<<4)|0;t[s>>2]=t[l>>2];t[s+4>>2]=t[l+4>>2];t[s+8>>2]=t[l+8>>2];t[s+12>>2]=t[l+12>>2];wy(f,s);e=e+1|0}h=c;return}function wy(e,A){e=e|0;A=A|0;var r=0,i=0;r=h;h=h+1024|0;i=r;ky(i,+c[A>>3]);bw(e,i)|0;ky(i,+NM(+c[A+8>>3]));bw(e,i)|0;h=r;return}function ky(e,A){e=e|0;A=+A;var r=0,i=0;r=h;h=h+16|0;i=r;c[i>>3]=A>-1.0e-08&A<1.0e-08?0.0:A;T4(e,66851,i)|0;dy(e,1);h=r;return}function dy(e,A){e=e|0;A=A|0;var r=0,a=0;r=C1(e,46)|0;if(!r){if(A|0){r=e+(U2(e)|0)|0;a=10}}else{while(1){e=r+1|0;if(!(i[e>>0]|0))break;else r=e}e:while(1){switch(i[r>>0]|0){case 46:{a=5;break e}case 48:break;default:{a=6;break e}}i[r>>0]=0;r=r+-1|0}if((a|0)==5)i[r>>0]=0;else if((a|0)==6)r=r+1|0;if(A|0)a=10}if((a|0)==10){i[r>>0]=32;i[r+1>>0]=0}return}function vy(e){e=e|0;var A=0,r=0,a=0,f=0,l=0,s=0;s=h;h=h+32|0;l=s+16|0;f=s;A=i[e+3>>0]|0;r=n[e>>0]|0;a=n[e+1>>0]|0;e=n[e+2>>0]|0;if(A<<24>>24==-1){t[f>>2]=r;t[f+4>>2]=a;t[f+8>>2]=e;T4(193758,75714,f)|0}else{t[l>>2]=r;t[l+4>>2]=a;t[l+8>>2]=e;t[l+12>>2]=A&255;T4(193758,66864,l)|0}h=s;return}function gy(e,A,r){e=e|0;A=A|0;r=r|0;my(t[11416+(t[(t[e+16>>2]|0)+12>>2]<<2)>>2]|0,A,r);return}function my(e,A,r){e=e|0;A=A|0;r=r|0;var a=0,n=0,f=0,l=0;a=h;h=h+1040|0;f=a;n=a+8|0;l=U2(r)|0;t[f>>2]=A;t[f+4>>2]=l;T4(n,66857,f)|0;bw(e,n)|0;bw(e,r)|0;r=e+4|0;A=t[r>>2]|0;if(A>>>0>=(t[e+8>>2]|0)>>>0){ow(e,1)|0;A=t[r>>2]|0}t[r>>2]=A+1;i[A>>0]=32;h=a;return}function py(e,A,r,a){e=e|0;A=A|0;r=r|0;a=a|0;var n=0.0,l=0,o=0.0,u=0.0,b=0.0,w=0.0,k=0.0,d=0,v=0,g=0,m=0,p=0,E=0,B=0,y=0.0;B=h;h=h+1120|0;g=B+64|0;E=B+80|0;l=B+32|0;d=B+16|0;v=B;m=t[e+16>>2]|0;n=+(t[m+136>>2]|0)*.017453292519943295;if((f[(t[46690]|0)+8232>>1]|0)<14)Ey(e);else{cw(E,1024,B+96|0);p=(A|0)==2;if(p){zJ(r,l,a,n,2);r=E+4|0;A=t[r>>2]|0;if(A>>>0>=(t[E+8>>2]|0)>>>0){ow(E,1)|0;A=t[r>>2]|0}t[r>>2]=A+1;i[A>>0]=91;t[g>>2]=t[l>>2];t[g+4>>2]=t[l+4>>2];t[g+8>>2]=t[l+8>>2];t[g+12>>2]=t[l+12>>2];wy(E,g);v=l+16|0;t[g>>2]=t[v>>2];t[g+4>>2]=t[v+4>>2];t[g+8>>2]=t[v+8>>2];t[g+12>>2]=t[v+12>>2];wy(E,g)}else{zJ(r,l,a,0.0,3);k=+c[l+24>>3];b=+c[l>>3];if(n==0.0){u=+c[l+8>>3];w=k*.25;n=u;o=b}else{w=k*.25;y=w;o=+W(+n)*y+b;u=+c[l+8>>3];n=+Y(+n)*y+u}c[d>>3]=o;c[d+8>>3]=n;c[v>>3]=b;c[v+8>>3]=u;r=E+4|0;A=t[r>>2]|0;if(A>>>0>=(t[E+8>>2]|0)>>>0){ow(E,1)|0;A=t[r>>2]|0}t[r>>2]=A+1;i[A>>0]=40;t[g>>2]=t[d>>2];t[g+4>>2]=t[d+4>>2];t[g+8>>2]=t[d+8>>2];t[g+12>>2]=t[d+12>>2];wy(E,g);By(E,w);t[g>>2]=t[v>>2];t[g+4>>2]=t[v+4>>2];t[g+8>>2]=t[v+8>>2];t[g+12>>2]=t[v+12>>2];wy(E,g);By(E,k)}bw(E,66907)|0;A=m+140|0;n=+s[A>>2];r=m+56|0;if(n>0.0){yy(E,n,r);yy(E,+s[A>>2],m+96|0)}else{yy(E,0.0,r);yy(E,1.0,m+96|0)}ww(E)|0;l=E+4|0;A=t[l>>2]|0;a=E+8|0;r=A>>>0>=(t[a>>2]|0)>>>0;if(p){if(r){ow(E,1)|0;A=t[l>>2]|0}t[l>>2]=A+1;i[A>>0]=93}else{if(r){ow(E,1)|0;A=t[l>>2]|0}t[l>>2]=A+1;i[A>>0]=41}A=t[l>>2]|0;if(A>>>0>=(t[a>>2]|0)>>>0){ow(E,1)|0;A=t[l>>2]|0}i[A>>0]=0;p=t[E>>2]|0;t[l>>2]=p;gy(e,66904,p);hw(E)}h=B;return}function Ey(e){e=e|0;vy((t[e+16>>2]|0)+56|0);gy(e,66904,193758);return}function By(e,A){e=e|0;A=+A;var r=0,i=0;r=h;h=h+1024|0;i=r;ky(i,A);bw(e,i)|0;h=r;return}function yy(e,A,r){e=e|0;A=+A;r=r|0;var i=0,a=0,t=0;i=h;h=h+1040|0;t=i;a=i+8|0;c[t>>3]=A;T4(a,94168,t)|0;dy(a,1);vy(r);my(e,a,193758);h=i;return}function Cy(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0,n=0,f=0;i=h;h=h+1040|0;f=i;a=i+16|0;n=t[11416+(t[(t[e+16>>2]|0)+12>>2]<<2)>>2]|0;bw(n,67013)|0;t[f>>2]=t[r>>2];t[f+4>>2]=t[r+4>>2];t[f+8>>2]=t[r+8>>2];t[f+12>>2]=t[r+12>>2];wy(n,f);ky(a,+c[r+16>>3]-+c[r>>3]);bw(n,a)|0;ky(a,+c[r+24>>3]-+c[r+8>>3]);bw(n,a)|0;gy(e,195059,t[A+8>>2]|0);h=i;return}function Iy(e){e=e|0;var A=0;switch(t[e+64>>2]|0){case 0:{A=Im(t[e>>2]|0)|0;hp(A,t[(t[e+16>>2]|0)+8>>2]|0,67797,0)|0;Zm(A);break}case 1:{KM(t[(t[e>>2]|0)+168>>2]|0);break}default:{}}return}function Zy(e){e=e|0;var A=0,r=0,a=0,n=0;a=h;h=h+16|0;A=a;r=t[(t[e+16>>2]|0)+8>>2]|0;if(!(t[46703]|0)){t[46703]=t[4678];t[46704]=57;t[46705]=19}t[(t[r+64>>2]|0)+8>>2]=186812;Gy(r,1);t[A>>2]=0;i[A+4>>0]=(i[(t[r+16>>2]|0)+115>>0]|0)==1&1;n=t[e+64>>2]|0;i[A+5>>0]=((n|0)==0|(n|0)==3)&1;i[A+6>>0]=0;Ly(r,e,1,A);h=a;return}function Gy(e,A){e=e|0;A=A|0;var r=0;t[e>>2]=t[e>>2]&-9;r=xv(e)|0;while(1){if(!r)break;Gy(r,0);r=Jv(r)|0}e:do{if(A|0){A=sd(e)|0;while(1){if(!A)break e;t[A>>2]=t[A>>2]&-9;r=Ow(e,A)|0;while(1){if(!r)break;t[r>>2]=t[r>>2]&-9;r=qw(e,r)|0}A=cd(e,A)|0}}}while(0);return}function Ly(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0,n=0,f=0,l=0,s=0,c=0,o=0,u=0,b=0,w=0,k=0;k=h;h=h+16|0;w=k+8|0;b=k;u=(r|0)!=0;if(u){o=Uh(11836,t[4581]|0)|0;_d(e,1,141060,12,0);_d(e,2,141060,12,0);_d(e,0,141060,-12,0);a=Qy(e,0,o)|0;s=sd(e)|0;l=0;n=0;while(1){if(!s)break;if(!(y1(Mk(s)|0,108006,7)|0)){c=n;n=Dy(o,Mk(s)|0)|0}else{c=n+1|0;n=n+a|0}t[(Pd(s,141060,0)|0)+8>>2]=n;f=Ow(e,s)|0;n=l;while(1){if(!f)break;t[(Pd(f,141060,0)|0)+8>>2]=n;f=qw(e,f)|0;n=n+1|0}s=cd(e,s)|0;l=n;n=c}Ph(o)|0}else a=0;o=t[i>>2]|0;t[i>>2]=o+1;zy(A,o);hm(A,97374)|0;Wy(e,A,r,i);Yy(e,A,i);hm(A,97345)|0;zy(A,t[i>>2]|0);if(u){t[b>>2]=a;mm(A,67016,b)}else{t[w>>2]=t[(Pd(e,141060,0)|0)+8>>2];mm(A,67036,w)}My(e,A,r,Fy(e,A,r,i)|0,i);Vy(e,A,r,i);hm(A,153599)|0;w=(t[i>>2]|0)+-1|0;t[i>>2]=w;zy(A,w);if(u)hm(A,111008)|0;else hm(A,75357)|0;h=k;return}function Qy(e,A,r){e=e|0;A=A|0;r=r|0;var i=0;if((yd(e)|0)!=(e|0)){i=A+1|0;t[(Pd(e,141060,0)|0)+8>>2]=A;if(!(y1(Mk(e)|0,108006,7)|0)){A=Mk(e)|0;Oy(r,A,t[(Pd(e,141060,0)|0)+8>>2]|0);A=i}else A=i}i=xv(e)|0;while(1){if(!i)break;e=Qy(i,A,r)|0;i=Jv(i)|0;A=e}return A|0}function Dy(e,A){e=e|0;A=A|0;e=L5[t[e>>2]&63](e,A,512)|0;if(!e)e=-1;else e=t[e+12>>2]|0;return e|0}function zy(e,A){e=e|0;A=A|0;while(1){if((A|0)<=0)break;hm(e,90574)|0;A=A+-1|0}return}function Wy(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0,n=0,f=0,l=0,s=0;f=h;h=h+32|0;n=f+16|0;a=f+8|0;l=f;s=Mk(e)|0;zy(A,t[i>>2]|0);t[l>>2]=xy(s,i)|0;mm(A,67124,l);if(r|0){hm(A,97345)|0;zy(A,t[i>>2]|0);s=(Bk(e)|0)!=0;t[a>>2]=s?107652:137308;mm(A,67738,a);zy(A,t[i>>2]|0);s=(Ck(e)|0)!=0;t[n>>2]=s?107652:137308;mm(A,67755,n)}h=f;return}function Yy(e,A,r){e=e|0;A=A|0;r=r|0;var a=0,n=0,f=0,l=0,s=0,c=0,o=0,u=0,b=0;b=h;h=h+16|0;u=b+8|0;o=b;l=yd(e)|0;s=t[e>>2]&3;a=Vw(l,s,0)|0;e:do{if(a|0){c=r+5|0;while(1){if(!a)break e;n=Pw(e,a)|0;do{if(n|0){f=a+8|0;if(!(i[n>>0]|0)){n=t[f>>2]|0;if((i[n>>0]|0)!=108)break;if(e1(n,108224)|0)break}hm(A,97345)|0;zy(A,t[r>>2]|0);t[o>>2]=xy(t[f>>2]|0,r)|0;mm(A,67174,o);if(i[c>>0]|0?Hy(t[f>>2]|0)|0:0){Py(Pw(e,a)|0,A,r);break}t[u>>2]=xy(Pw(e,a)|0,r)|0;mm(A,67181,u)}}while(0);a=Vw(l,s,a)|0}}}while(0);h=b;return}function Fy(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0,n=0,f=0,l=0;l=h;h=h+16|0;f=l;a=xv(e)|0;if(a){hm(A,97345)|0;n=t[i>>2]|0;t[i>>2]=n+1;zy(A,n);n=(r|0)!=0;if(n){hm(A,67098)|0;e=0;r=a}else{hm(A,67158)|0;zy(A,t[i>>2]|0);e=0;r=a}while(1){if(!r)break;if(!e)e=1;else hm(A,97345)|0;if(n)Jy(r,A,i);else{t[f>>2]=t[(Pd(r,141060,0)|0)+8>>2];mm(A,137395,f)}r=Jv(r)|0}if(n)e=1;else{t[i>>2]=(t[i>>2]|0)+-1;hm(A,153599)|0;zy(A,t[i>>2]|0);hm(A,97340)|0;e=1}}else e=0;h=l;return e|0}function My(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;var n=0,f=0;n=sd(e)|0;if(!n){if((r|0)!=0&(i|0)!=0){t[a>>2]=(t[a>>2]|0)+-1;hm(A,153599)|0;zy(A,t[a>>2]|0);hm(A,97340)|0}}else{hm(A,97345)|0;f=(r|0)!=0;if(f)if(!i){i=t[a>>2]|0;t[a>>2]=i+1;zy(A,i);hm(A,67098)|0;i=0}else i=0;else{i=t[a>>2]|0;t[a>>2]=i+1;zy(A,i);hm(A,67112)|0;zy(A,t[a>>2]|0);i=0}while(1){if(!n)break;if(y1(Mk(n)|0,108006,7)|0){do{if(i)if(f){hm(A,97345)|0;break}else{hm(A,100999)|0;break}else i=1}while(0);Ry(n,A,r,a)}n=cd(e,n)|0}t[a>>2]=(t[a>>2]|0)+-1;hm(A,153599)|0;zy(A,t[a>>2]|0);hm(A,97340)|0}return}function Vy(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0,n=0,f=0,l=0;a=sd(e)|0;e:do{if(a|0){while(1){if(!a)break e;if(Ow(e,a)|0)break;a=cd(e,a)|0}hm(A,97345)|0;l=t[i>>2]|0;t[i>>2]=l+1;zy(A,l);hm(A,67048)|0;l=(r|0)!=0;if(l)n=0;else{zy(A,t[i>>2]|0);n=0}while(1){if(!a)break;f=Ow(e,a)|0;while(1){if(!f)break;do{if(n)if(l){hm(A,97345)|0;break}else{hm(A,100999)|0;break}else n=1}while(0);Ny(f,A,r,i);f=qw(e,f)|0}a=cd(e,a)|0}t[i>>2]=(t[i>>2]|0)+-1;hm(A,153599)|0;zy(A,t[i>>2]|0);hm(A,97340)|0}}while(0);return}function Ny(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0,n=0,f=0,l=0,s=0;s=h;h=h+32|0;l=s+24|0;f=s+16|0;n=s+8|0;a=s;if(!r){t[l>>2]=t[(Pd(e,141060,0)|0)+8>>2];mm(A,137395,l)}else{l=t[i>>2]|0;t[i>>2]=l+1;zy(A,l);hm(A,97374)|0;zy(A,t[i>>2]|0);t[a>>2]=t[(Pd(e,141060,0)|0)+8>>2];mm(A,67060,a);zy(A,t[i>>2]|0);t[n>>2]=t[(Pd(t[((t[e>>2]&3|0)==3?e:e+48|0)+40>>2]|0,141060,0)|0)+8>>2];mm(A,67074,n);zy(A,t[i>>2]|0);t[f>>2]=t[(Pd(t[((t[e>>2]&3|0)==2?e:e+-48|0)+40>>2]|0,141060,0)|0)+8>>2];mm(A,67087,f);Yy(e,A,i);hm(A,153599)|0;l=(t[i>>2]|0)+-1|0;t[i>>2]=l;zy(A,l);hm(A,75357)|0}h=s;return}function Ry(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0,n=0,f=0,l=0;l=h;h=h+32|0;f=l+16|0;n=l+8|0;a=l;if(!r){t[f>>2]=t[(Pd(e,141060,0)|0)+8>>2];mm(A,137395,f)}else{f=t[i>>2]|0;t[i>>2]=f+1;zy(A,f);hm(A,97374)|0;zy(A,t[i>>2]|0);t[a>>2]=t[(Pd(e,141060,0)|0)+8>>2];mm(A,67060,a);zy(A,t[i>>2]|0);t[n>>2]=xy(Mk(e)|0,i)|0;mm(A,67124,n);Yy(e,A,i);hm(A,153599)|0;f=(t[i>>2]|0)+-1|0;t[i>>2]=f;zy(A,f);hm(A,75357)|0}h=l;return}function xy(e,A){e=e|0;A=A|0;var r=0,a=0,n=0;n=A+4|0;if(i[n>>0]|0)e=pJ(e)|0;if(!(t[46706]|0)){cw(186824,1024,0);r=e}else r=e;e:while(1){a=i[r>>0]|0;switch(a<<24>>24){case 0:break e;case 34:{bw(186824,67137)|0;break}case 92:{bw(186824,96616)|0;break}case 47:{bw(186824,67140)|0;break}case 8:{bw(186824,67143)|0;break}case 12:{bw(186824,67146)|0;break}case 10:{bw(186824,67149)|0;break}case 13:{bw(186824,67152)|0;break}case 9:{bw(186824,67155)|0;break}default:{A=t[46707]|0;if(A>>>0>=(t[46708]|0)>>>0){ow(186824,1)|0;A=t[46707]|0}t[46707]=A+1;i[A>>0]=a}}r=r+1|0}A=t[46707]|0;if(A>>>0>=(t[46708]|0)>>>0){ow(186824,1)|0;A=t[46707]|0}i[A>>0]=0;A=t[46706]|0;t[46707]=A;if(i[n>>0]|0)G2(e);return A|0}function Jy(e,A,r){e=e|0;A=A|0;r=r|0;Ly(e,A,0,r);e=xv(e)|0;while(1){if(!e)break;hm(A,97345)|0;Jy(e,A,r);e=Jv(e)|0}return}function Hy(e){e=e|0;var A=0;A=e+1|0;e:do{if((i[e>>0]|0)==95){e=(i[A>>0]|0)+-100<<24>>24;switch(((e&255)>>>2|e<<6&255)<<24>>24){case 0:{if(!(e1(A,67695)|0)){e=1;break e}break}case 2:{if(!(e1(A,67701)|0)){e=1;break e}break}case 1:{if(!(e1(A,67708)|0)){e=1;break e}return(e1(A,67722)|0)==0|0}case 4:{if(!(e1(A,67715)|0)){e=1;break e}e=(e1(A,67730)|0)==0&1;break e}default:{e=0;break e}}e=0}else e=0}while(0);return e|0}function Py(e,A,r){e=e|0;A=A|0;r=r|0;var a=0,n=0,f=0,l=0;l=h;h=h+16|0;a=l;do{if(e|0?i[e>>0]|0:0){f=LE(e)|0;if(!f){t[a>>2]=e;nw(0,67186,a)|0;break}hm(A,153599)|0;n=t[r>>2]|0;t[r>>2]=n+1;zy(A,n);hm(A,67213)|0;n=f+8|0;e=0;a=0;while(1){if((a|0)>=(t[f>>2]|0))break;if(!e)e=1;else hm(A,97345)|0;Xy((t[n>>2]|0)+(a*80|0)|0,A,r);a=a+1|0}t[r>>2]=(t[r>>2]|0)+-1;hm(A,153599)|0;zy(A,t[r>>2]|0);hm(A,97340)|0;QE(f)}}while(0);h=l;return}function Xy(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0,n=0,f=0,l=0,s=0,o=0,u=0,b=0,w=0,k=0,d=0,v=0,g=0,m=0,p=0,E=0,B=0,y=0,C=0,I=0,Z=0.0,G=0.0,L=0.0;I=h;h=h+240|0;y=I+224|0;B=I+216|0;E=I+208|0;p=I+200|0;m=I+192|0;g=I+184|0;v=I+176|0;d=I+152|0;k=I+136|0;w=I+128|0;b=I+112|0;u=I+104|0;o=I+96|0;s=I+88|0;l=I+72|0;f=I+48|0;C=I+40|0;n=I+8|0;a=I;i=t[r>>2]|0;t[r>>2]=i+1;zy(A,i);hm(A,97374)|0;zy(A,t[r>>2]|0);i=t[e>>2]|0;e:do{switch(i|0){case 1:case 0:{t[a>>2]=(i|0)==0?69:101;mm(A,67216,a);zy(A,t[r>>2]|0);L=+c[e+16>>3];G=+c[e+24>>3];Z=+c[e+32>>3];c[n>>3]=+c[e+8>>3];c[n+8>>3]=L;c[n+16>>3]=G;c[n+24>>3]=Z;mm(A,67229,n);break}case 3:case 2:{t[C>>2]=(i|0)==2?80:112;mm(A,67216,C);zy(A,t[r>>2]|0);Sy(A,e+8|0);break}case 5:case 4:{t[f>>2]=(i|0)==4?66:98;mm(A,67216,f);zy(A,t[r>>2]|0);Sy(A,e+8|0);break}case 6:{mm(A,67264,I+56|0);zy(A,t[r>>2]|0);Sy(A,e+8|0);break}case 7:{mm(A,67276,I+64|0);zy(A,t[r>>2]|0);L=+c[e+16>>3];c[l>>3]=+c[e+8>>3];c[l+8>>3]=L;mm(A,67288,l);zy(A,t[r>>2]|0);C=t[e+24>>2]|0;t[s>>2]=(C|0)==0?108:(C|0)==1?99:114;mm(A,67310,s);zy(A,t[r>>2]|0);c[o>>3]=+c[e+32>>3];mm(A,67326,o);zy(A,t[r>>2]|0);t[u>>2]=xy(t[e+40>>2]|0,r)|0;mm(A,67343,u);break}case 9:case 8:{t[b>>2]=(i|0)==8?67:99;mm(A,67216,b);zy(A,t[r>>2]|0);mm(A,67357,I+120|0);zy(A,t[r>>2]|0);t[w>>2]=xy(t[e+8>>2]|0,r)|0;mm(A,67374,w);break}case 13:case 14:{t[k>>2]=(i|0)==13?67:99;mm(A,67216,k);zy(A,t[r>>2]|0);switch(t[e+8>>2]|0){case 0:{mm(A,67357,I+144|0);zy(A,t[r>>2]|0);t[d>>2]=xy(t[e+16>>2]|0,r)|0;mm(A,67374,d);break e}case 1:{mm(A,67389,I+160|0);zy(A,t[r>>2]|0);jy(A,e+16|0,r);break e}default:{mm(A,67408,I+168|0);zy(A,t[r>>2]|0);Uy(A,e+16|0,r);break e}}}case 10:{mm(A,67427,v);zy(A,t[r>>2]|0);c[g>>3]=+c[e+8>>3];mm(A,67439,g);zy(A,t[r>>2]|0);t[m>>2]=xy(t[e+16>>2]|0,r)|0;mm(A,67455,m);break}case 11:{mm(A,67469,p);zy(A,t[r>>2]|0);t[E>>2]=xy(t[e+8>>2]|0,r)|0;mm(A,67481,E);break}case 15:{mm(A,67496,B);zy(A,t[r>>2]|0);t[y>>2]=t[e+8>>2];mm(A,67508,y);break}default:{}}}while(0);C=(t[r>>2]|0)+-1|0;t[r>>2]=C;zy(A,C);hm(A,75357)|0;h=I;return}function Sy(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0,f=0,l=0,s=0.0;l=h;h=h+48|0;f=l+32|0;n=l+16|0;a=l+8|0;i=t[A>>2]|0;r=t[A+4>>2]|0;mm(e,67669,l);A=0;while(1){if((A|0)>=(i|0))break;if((A|0)>0)mm(e,100999,a);s=+c[r+(A*24|0)+8>>3];c[n>>3]=+c[r+(A*24|0)>>3];c[n+8>>3]=s;mm(e,67681,n);A=A+1|0}mm(e,67622,f);h=l;return}function jy(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0,n=0.0,f=0;i=h;h=h+32|0;a=i+16|0;f=i;zy(e,t[r>>2]|0);n=+c[A+8>>3];c[f>>3]=+c[A>>3];c[f+8>>3]=n;mm(e,67625,f);zy(e,t[r>>2]|0);n=+c[A+24>>3];c[a>>3]=+c[A+16>>3];c[a+8>>3]=n;mm(e,67647,a);zy(e,t[r>>2]|0);Ty(e,t[A+32>>2]|0,t[A+36>>2]|0,r);h=i;return}function Uy(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0,n=0.0,f=0.0,l=0;i=h;h=h+48|0;a=i+24|0;l=i;zy(e,t[r>>2]|0);n=+c[A+8>>3];f=+c[A+16>>3];c[l>>3]=+c[A>>3];c[l+8>>3]=n;c[l+16>>3]=f;mm(e,67524,l);zy(e,t[r>>2]|0);f=+c[A+32>>3];n=+c[A+40>>3];c[a>>3]=+c[A+24>>3];c[a+8>>3]=f;c[a+16>>3]=n;mm(e,67552,a);zy(e,t[r>>2]|0);Ty(e,t[A+48>>2]|0,t[A+52>>2]|0,r);h=i;return}function Ty(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0,n=0,f=0,l=0,o=0,u=0,b=0.0;o=h;h=h+48|0;l=o+32|0;f=o+16|0;n=o+8|0;mm(e,67580,o);a=0;while(1){if((a|0)>=(A|0))break;if((a|0)>0)mm(e,100999,n);b=+s[r+(a<<3)>>2];u=xy(t[r+(a<<3)+4>>2]|0,i)|0;c[f>>3]=b;t[f+8>>2]=u;mm(e,67591,f);a=a+1|0}mm(e,67622,l);h=o;return}function Oy(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0,n=0;n=h;h=h+16|0;a=n;i=L5[t[e>>2]&63](e,A,512)|0;if(i){if((t[i+12>>2]|0)!=(r|0)){t[a>>2]=A;nw(0,67768,a)|0}}else{a=L2(1,16)|0;t[a+8>>2]=o3(A)|0;t[a+12>>2]=r;L5[t[e>>2]&63](e,a,1)|0}h=n;return}function _y(e,A,r){e=e|0;A=A|0;r=r|0;G2(t[A+8>>2]|0);G2(A);return}function qy(e){e=e|0;var A=0,r=0,i=0,a=0,n=0,f=0,l=0,s=0;A=h;h=h+32|0;r=A+24|0;i=A+16|0;n=A;a=t[e+16>>2]|0;hm(e,68623)|0;s=t[t[e+12>>2]>>2]|0;l=t[s+4>>2]|0;f=t[s+8>>2]|0;t[n>>2]=t[s>>2];t[n+4>>2]=l;t[n+8>>2]=f;mm(e,68633,n);t[i>>2]=Mk(t[a+8>>2]|0)|0;mm(e,68668,i);t[r>>2]=P(t[e+168>>2]|0,t[e+164>>2]|0)|0;mm(e,68681,r);hm(e,68694)|0;hm(e,68704)|0;hm(e,68712)|0;hm(e,68720)|0;hm(e,68728)|0;hm(e,68736)|0;hm(e,68744)|0;hm(e,68748)|0;hm(e,68753)|0;h=A;return}function Ky(e){e=e|0;hm(e,68604)|0;return}function $y(e){e=e|0;t[46710]=2;return}function eC(e){e=e|0;t[46710]=1;return}function AC(e){e=e|0;t[46710]=2;return}function rC(e){e=e|0;t[46710]=0;return}function iC(e){e=e|0;t[46710]=2;return}function aC(e,A,r){e=e|0;A=A|0;r=r|0;var a=0,n=0.0,f=0.0,l=0,s=0.0,o=0,u=0,b=0,w=0,k=0.0,d=0.0,v=0;w=h;h=h+80|0;b=w;o=t[(t[e+16>>2]|0)+16>>2]|0;u=t[46710]|0;a=t[r+4>>2]|0;n=+c[e+352>>3]*+c[a+16>>3];f=t[e+360>>2]|0?1.5707963267948966:0.0;l=t[r>>2]|0;s=n*.3333333333333333*+((U2(l)|0)>>>0);a=t[a+8>>2]|0;if(!a)a=-1;else a=t[a+20>>2]|0;v=i[r+48>>0]|0;d=+c[A>>3];k=+c[A+8>>3];r=hC(l)|0;t[b>>2]=4;t[b+4>>2]=v<<24>>24==108?0:v<<24>>24==114?2:1;t[b+8>>2]=o;t[b+12>>2]=u;t[b+16>>2]=0;t[b+20>>2]=a;c[b+24>>3]=n;c[b+32>>3]=f;t[b+40>>2]=6;c[b+48>>3]=n;c[b+56>>3]=s;t[b+64>>2]=~~(d+(d>=0.0?.5:-.5));t[b+68>>2]=~~(k+(k+-72.0>=0.0?-71.5:-72.5));t[b+72>>2]=r;mm(e,68549,b);h=w;return}function tC(e,A){e=e|0;A=A|0;var r=0,a=0,f=0,l=0,s=0,c=0,o=0,u=0,b=0;u=h;h=h+32|0;s=u;l=u+20|0;o=A+32|0;e:do{switch(t[o>>2]|0){case 5:{r=0;while(1){a=t[12724+(r<<2)>>2]|0;if((r|0)==8)break e;f=t[A>>2]|0;if((i[a>>0]|0)==(i[f>>0]|0)?(e1(a,f)|0)==0:0){c=10;break e}r=r+1|0}}case 1:{a=A+1|0;f=A+2|0;r=(bC(l,n[A>>0]|0,n[a>>0]|0,n[f>>0]|0)|0)+32|0;if(!(t[l>>2]|0))c=10;else{b=n[A>>0]|0;l=n[a>>0]|0;c=n[f>>0]|0;t[s>>2]=0;t[s+4>>2]=r;t[s+8>>2]=b;t[s+12>>2]=l;t[s+16>>2]=c;mm(e,68492,s);c=10}break}default:ge(138394,67889,163,67920)}}while(0);if((c|0)==10)t[A>>2]=r;t[o>>2]=6;h=u;return}function nC(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0,n=0.0,f=0.0,l=0,s=0,o=0.0,u=0.0,b=0.0,w=0,k=0,d=0,v=0,g=0,m=0;i=h;h=h+112|0;a=i+8|0;m=i+104|0;g=i;s=t[e+16>>2]|0;v=~~+c[s+152>>3];d=t[s+16>>2]|0;k=t[s+56>>2]|0;w=t[46710]|0;oC(s,m,g);u=+c[A>>3];s=~~(u+(u>=0.0?.5:-.5));o=+c[A+8>>3];l=~~(o+(o>=0.0?.5:-.5));f=+c[A+16>>3];u=f-u;n=+c[A+24>>3];o=n-o;A=t[m>>2]|0;b=+c[g>>3];t[a>>2]=1;t[a+4>>2]=1;t[a+8>>2]=A;t[a+12>>2]=v;t[a+16>>2]=d;t[a+20>>2]=k;t[a+24>>2]=w;t[a+28>>2]=0;t[a+32>>2]=r|0?20:-1;c[a+40>>3]=b;t[a+48>>2]=0;c[a+56>>3]=0.0;t[a+64>>2]=s;t[a+68>>2]=l;t[a+72>>2]=~~(u+(u>=0.0?.5:-.5));t[a+76>>2]=~~(o+(o>=0.0?.5:-.5));t[a+80>>2]=s;t[a+84>>2]=l;t[a+88>>2]=~~(f+(f>=0.0?.5:-.5));t[a+92>>2]=~~(n+(n>=0.0?.5:-.5));mm(e,68427,a);h=i;return}function fC(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0,n=0,f=0.0,l=0,s=0,o=0,u=0,b=0,w=0,k=0;a=h;h=h+96|0;n=a+8|0;b=a+80|0;w=a;k=t[e+16>>2]|0;u=~~+c[k+152>>3];o=t[k+16>>2]|0;s=t[k+56>>2]|0;l=t[46710]|0;oC(k,b,w);b=t[b>>2]|0;f=+c[w>>3];t[n>>2]=2;t[n+4>>2]=3;t[n+8>>2]=b;t[n+12>>2]=u;t[n+16>>2]=o;t[n+20>>2]=s;t[n+24>>2]=l;t[n+28>>2]=0;t[n+32>>2]=i|0?20:-1;c[n+40>>3]=f;t[n+48>>2]=0;t[n+52>>2]=0;t[n+56>>2]=0;t[n+60>>2]=0;t[n+64>>2]=0;t[n+68>>2]=r+1;mm(e,68331,n);uC(e,A,r,1);h=a;return}function lC(e,A,r,i,a,n){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;n=n|0;var f=0,l=0,s=0,o=0,u=0,b=0,w=0,k=0,d=0,v=0,g=0,m=0,p=0,E=0,B=0,y=0,C=0,I=0,Z=0,G=0,L=0.0,Q=0.0,D=0;G=h;h=h+192|0;Z=G+176|0;C=G+168|0;I=G+104|0;y=G+96|0;f=G+88|0;m=G+180|0;p=G+80|0;E=G+16|0;B=G;a=e+16|0;i=t[a>>2]|0;k=~~+c[i+152>>3];d=t[i+16>>2]|0;v=t[46710]|0;if((r|0)<=3)ge(67882,67889,360,67909);g=Z2((r*140|0)+140|0)|0;oC(i,m,p);if(!n){b=4;l=0;s=-1}else{b=5;l=t[(t[a>>2]|0)+56>>2]|0;s=20}Q=+c[A>>3];u=E+48|0;c[u>>3]=Q;L=+c[A+8>>3];c[E+56>>3]=L;t[f>>2]=~~(Q+(Q>=0.0?.5:-.5));t[f+4>>2]=~~(L+(L>=0.0?.5:-.5));o=B+8|0;i=g+(T4(g,81099,f)|0)|0;w=1;n=0;while(1){f=n+3|0;if((f|0)>=(r|0))break;t[E>>2]=t[u>>2];t[E+4>>2]=t[u+4>>2];t[E+8>>2]=t[u+8>>2];t[E+12>>2]=t[u+12>>2];a=1;while(1){if((a|0)==4){a=1;break}D=a+n|0;c[E+(a<<4)>>3]=+c[A+(D<<4)>>3];c[E+(a<<4)+8>>3]=+c[A+(D<<4)+8>>3];a=a+1|0}while(1){if((a|0)==7)break;Zx(B,E,3,+(a|0)*.16666666666666666,0,0);L=+c[B>>3];Q=+c[o>>3];t[y>>2]=~~(L+(L>=0.0?.5:-.5));t[y+4>>2]=~~(Q+(Q>=0.0?.5:-.5));a=a+1|0;i=i+(T4(i,81099,y)|0)|0}w=w+6|0;n=f}a=t[m>>2]|0;Q=+c[p>>3];t[I>>2]=3;t[I+4>>2]=b;t[I+8>>2]=a;t[I+12>>2]=k;t[I+16>>2]=d;t[I+20>>2]=l;t[I+24>>2]=v;t[I+28>>2]=0;t[I+32>>2]=s;c[I+40>>3]=Q;t[I+48>>2]=0;t[I+52>>2]=0;t[I+56>>2]=0;t[I+60>>2]=w;mm(e,68382,I);t[C>>2]=g;mm(e,81106,C);G2(g);a=w+-1|0;i=0;while(1){if((i|0)>=(w|0))break;t[Z>>2]=((i|0)%(a|0)|0|0)!=0&1;mm(e,81111,Z);i=i+1|0}hm(e,153599)|0;h=G;return}function sC(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0,n=0.0,f=0,l=0,s=0,o=0,u=0,b=0;i=h;h=h+96|0;a=i+8|0;o=i+80|0;u=i;b=t[e+16>>2]|0;s=~~+c[b+152>>3];l=t[b+16>>2]|0;f=t[46710]|0;oC(b,o,u);o=t[o>>2]|0;n=+c[u>>3];t[a>>2]=2;t[a+4>>2]=1;t[a+8>>2]=o;t[a+12>>2]=s;t[a+16>>2]=l;t[a+20>>2]=0;t[a+24>>2]=f;t[a+28>>2]=0;t[a+32>>2]=0;c[a+40>>3]=n;t[a+48>>2]=0;t[a+52>>2]=0;t[a+56>>2]=0;t[a+60>>2]=0;t[a+64>>2]=0;t[a+68>>2]=r;mm(e,68331,a);uC(e,A,r,0);h=i;return}function cC(e,A){e=e|0;A=A|0;var r=0,i=0;r=h;h=h+16|0;i=r;t[i>>2]=A;mm(e,68325,i);h=r;return}function oC(e,A,r){e=e|0;A=A|0;r=r|0;var i=0.0;switch(t[e+144>>2]|0){case 1:{i=10.0;e=1;break}case 2:{i=10.0;e=2;break}default:{i=0.0;e=0}}t[A>>2]=e;c[r>>3]=i;return}function uC(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0,n=0,f=0,l=0,s=0.0,o=0.0;l=h;h=h+16|0;f=l+8|0;n=l;a=0;while(1){if((a|0)>=(r|0))break;o=+c[A+(a<<4)>>3];s=+c[A+(a<<4)+8>>3];t[n>>2]=~~(o+(o>=0.0?.5:-.5));t[n+4>>2]=~~(s+(s>=0.0?.5:-.5));mm(e,81099,n);a=a+1|0}if(i|0){s=+c[A>>3];o=+c[A+8>>3];t[f>>2]=~~(s+(s>=0.0?.5:-.5));t[f+4>>2]=~~(o+(o>=0.0?.5:-.5));mm(e,81099,f)}hm(e,153599)|0;h=l;return}function bC(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var n=0,f=0,l=0,s=0,c=0,o=0,u=0,b=0;t[e>>2]=0;c=t[46711]|0;f=195075;n=0;l=-1;while(1){if((n|0)>=(c|0)){o=6;break}u=(a[190680+(n<<1)>>1]|0)-A|0;b=(a[191192+(n<<1)>>1]|0)-r|0;s=(a[191704+(n<<1)>>1]|0)-i|0;s=(P(b,b)|0)+(P(u,u)|0)+(P(s,s)|0)|0;if((s|0)<(f|0))if(!s)break;else{f=s;l=n}n=n+1|0}if((o|0)==6){t[46711]=c+1;if((c|0)==256)n=l;else{a[190680+(n<<1)>>1]=A;a[191192+(n<<1)>>1]=r;a[191704+(n<<1)>>1]=i;t[e>>2]=1}}return n|0}function hC(e){e=e|0;var A=0,r=0,a=0,n=0,f=0,l=0;l=h;h=h+16|0;f=l;A=t[46712]|0;if(!A){t[46713]=64;A=Z2(64)|0;t[46712]=A;r=0}else r=0;while(1){n=e+1|0;a=i[e>>0]|0;if(!(a<<24>>24))break;e=t[46713]|0;if((r|0)>(e+-8|0)){A=e<<1;t[46713]=A;A=Q2(t[46712]|0,A)|0;t[46712]=A;A=A+r|0}if(a<<24>>24<=-1){i[A>>0]=92;t[f>>2]=a&255;T4(A+1|0,81224,f)|0;e=n;A=A+4|0;r=r+4|0;continue}if(a<<24>>24==92){i[A>>0]=92;r=r+1|0;A=A+1|0}i[A>>0]=a;e=n;A=A+1|0;r=r+1|0}i[A>>0]=0;h=l;return t[46712]|0}function wC(e){e=e|0;var A=0,r=0,a=0;r=t[e+16>>2]|0;switch(t[e+64>>2]|0){case 0:{hm(e,68220)|0;A=r+208|0;r=t[A>>2]|0;if(r|0?i[r>>0]|0:0){hm(e,68234)|0;hm(e,TF(t[A>>2]|0)|0)|0;hm(e,153599)|0}break}case 1:{A=r+208|0;a=t[A>>2]|0;if(a|0?i[a>>0]|0:0){hm(e,68234)|0;hm(e,TF(t[A>>2]|0)|0)|0;hm(e,102604)|0;hm(e,TF(Mk(t[r+8>>2]|0)|0)|0)|0;hm(e,153599)|0}break}case 3:{a=TF(Mk(t[r+8>>2]|0)|0)|0;hm(e,68243)|0;hm(e,a)|0;hm(e,68253)|0;hm(e,a)|0;hm(e,68208)|0;break}default:{}}return}function kC(e){e=e|0;var A=0;A=t[e+16>>2]|0;switch(t[e+64>>2]|0){case 2:{vC(e,t[A+264>>2]|0,t[A+272>>2]|0,t[A+268>>2]|0,t[A+208>>2]|0,t[A+228>>2]|0,t[A+244>>2]|0,t[A+212>>2]|0);break}case 3:{vC(e,t[A+264>>2]|0,t[A+272>>2]|0,t[A+268>>2]|0,t[A+208>>2]|0,t[A+228>>2]|0,t[A+244>>2]|0,t[A+212>>2]|0);hm(e,68212)|0;break}default:{}}return}function dC(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;var n=0;n=t[e+16>>2]|0;vC(e,t[n+264>>2]|0,t[n+272>>2]|0,t[n+268>>2]|0,A,r,i,a);return}function vC(e,A,r,a,n,f,l,s){e=e|0;A=A|0;r=r|0;a=a|0;n=n|0;f=f|0;l=l|0;s=s|0;var o=0,u=0,b=0,w=0,k=0,d=0,v=0,g=0,m=0,p=0,E=0,B=0,y=0,C=0.0;y=h;h=h+128|0;B=y+120|0;m=y+112|0;g=y+96|0;v=y+80|0;d=y+56|0;E=y+48|0;k=y+40|0;p=y+24|0;w=y;e:do{if((r|0)!=0&(a|0)!=0){o=a+10|0;if((t[46714]|0)<(a|0)){t[46714]=o;b=Q2(t[46715]|0,o<<3)|0;t[46715]=b}else b=t[46715]|0;o=0;while(1){if((o|0)>=(a|0))break;C=+c[r+(o<<4)>>3];t[b+(o<<3)>>2]=~~(C+(C>=0.0?.5:-.5));C=+c[r+(o<<4)+8>>3];t[b+(o<<3)+4>>2]=~~(C+(C>=0.0?.5:-.5));o=o+1|0}u=e+64|0;o=t[u>>2]|0;r=(n|0)!=0;if(r&(o|0)==0){if(!(i[n>>0]|0))break;switch(A|0){case 0:{p=t[b>>2]|0;E=t[b+12>>2]|0;B=t[b+8>>2]|0;a=t[b+4>>2]|0;t[w>>2]=n;t[w+4>>2]=p;t[w+8>>2]=E;t[w+12>>2]=B;t[w+16>>2]=a;mm(e,67954,w);break e}case 1:{E=t[b>>2]|0;B=t[b+4>>2]|0;a=(t[b+8>>2]|0)-E|0;t[p>>2]=n;t[p+4>>2]=E;t[p+8>>2]=B;t[p+12>>2]=a;mm(e,67975,p);break e}case 2:{t[k>>2]=n;mm(e,67995,k);o=0;while(1){if((o|0)>=(a|0))break;p=t[46715]|0;B=t[p+(o<<3)+4>>2]|0;t[E>>2]=t[p+(o<<3)>>2];t[E+4>>2]=B;mm(e,68003,E);o=o+1|0}hm(e,153599)|0;break e}default:ge(138394,68010,63,68030)}}if(r&(o|0)==1){if(!(i[n>>0]|0))break;if(!A){E=t[b+12>>2]|0;B=t[b+8>>2]|0;a=t[b+4>>2]|0;t[d>>2]=t[b>>2];t[d+4>>2]=E;t[d+8>>2]=B;t[d+12>>2]=a;t[d+16>>2]=n;t[d+20>>2]=f;mm(e,68047,d);break}else ge(138394,68010,75,68030)}if((o&-2|0)==2){switch(A|0){case 1:{hm(e,68080)|0;break}case 0:{hm(e,68101)|0;break}case 2:{hm(e,68120)|0;break}default:ge(138394,68010,91,68030)}if(s|0?i[s>>0]|0:0){hm(e,73600)|0;hm(e,qF(s)|0)|0;hm(e,98744)|0}if(r?i[n>>0]|0:0){hm(e,68139)|0;hm(e,qF(n)|0)|0;hm(e,98744)|0}if(l|0?i[l>>0]|0:0){hm(e,74559)|0;hm(e,TF(l)|0)|0;hm(e,98744)|0}if(f|0?i[f>>0]|0:0){hm(e,68147)|0;hm(e,TF(f)|0)|0;hm(e,98744)|0}hm(e,68156)|0;hm(e,68164)|0;A:do{switch(A|0){case 1:{a=t[46715]|0;E=t[a>>2]|0;B=t[a+4>>2]|0;a=(t[a+8>>2]|0)-E|0;t[v>>2]=E;t[v+4>>2]=B;t[v+8>>2]=a;mm(e,68174,v);break}case 0:{p=t[46715]|0;E=t[p+12>>2]|0;B=t[p+8>>2]|0;a=t[p+4>>2]|0;t[g>>2]=t[p>>2];t[g+4>>2]=E;t[g+8>>2]=B;t[g+12>>2]=a;mm(e,68183,g);break}case 2:{E=t[46715]|0;o=t[E+4>>2]|0;t[m>>2]=t[E>>2];t[m+4>>2]=o;mm(e,68195,m);o=1;while(1){if((o|0)>=(a|0))break A;p=t[46715]|0;E=t[p+(o<<3)+4>>2]|0;t[B>>2]=t[p+(o<<3)>>2];t[B+4>>2]=E;mm(e,68201,B);o=o+1|0}}default:{}}}while(0);if((t[u>>2]|0)==3){hm(e,73424)|0;break}else{hm(e,68208)|0;break}}}}while(0);h=y;return}function gC(e){e=e|0;var A=0,r=0,i=0,a=0,n=0,f=0,l=0,s=0;A=h;h=h+32|0;r=A+24|0;i=A+16|0;n=A;a=t[e+16>>2]|0;hm(e,68623)|0;s=t[t[e+12>>2]>>2]|0;l=t[s+4>>2]|0;f=t[s+8>>2]|0;t[n>>2]=t[s>>2];t[n+4>>2]=l;t[n+8>>2]=f;mm(e,68633,n);t[i>>2]=Mk(t[a+8>>2]|0)|0;mm(e,68668,i);t[r>>2]=P(t[e+168>>2]|0,t[e+164>>2]|0)|0;mm(e,68681,r);hm(e,68694)|0;hm(e,68704)|0;hm(e,68712)|0;hm(e,68720)|0;hm(e,68728)|0;hm(e,68736)|0;hm(e,68744)|0;hm(e,68748)|0;hm(e,68753)|0;h=A;return}function mC(e){e=e|0;hm(e,68604)|0;return}function pC(e){e=e|0;t[46716]=2;return}function EC(e){e=e|0;t[46716]=1;return}function BC(e){e=e|0;t[46716]=2;return}function yC(e){e=e|0;t[46716]=0;return}function CC(e){e=e|0;t[46716]=2;return}function IC(e,A,r){e=e|0;A=A|0;r=r|0;var a=0,n=0.0,f=0.0,l=0,s=0,o=0,u=0,b=0.0,w=0.0,k=0;u=h;h=h+80|0;o=u;l=t[(t[e+16>>2]|0)+16>>2]|0;s=t[46716]|0;a=t[r+4>>2]|0;n=+c[e+352>>3]*+c[a+16>>3];f=t[e+360>>2]|0?1.5707963267948966:0.0;a=t[a+8>>2]|0;if(!a)a=-1;else a=t[a+20>>2]|0;k=i[r+48>>0]|0;w=+c[A>>3];b=+c[A+8>>3];r=MC(t[r>>2]|0)|0;t[o>>2]=4;t[o+4>>2]=k<<24>>24==108?0:k<<24>>24==114?2:1;t[o+8>>2]=l;t[o+12>>2]=s;t[o+16>>2]=0;t[o+20>>2]=a;c[o+24>>3]=n;c[o+32>>3]=f;t[o+40>>2]=4;c[o+48>>3]=0.0;c[o+56>>3]=0.0;t[o+64>>2]=~~(w+(w>=0.0?.5:-.5));t[o+68>>2]=~~(b+(b>=0.0?.5:-.5));t[o+72>>2]=r;mm(e,68549,o);h=u;return}function ZC(e,A){e=e|0;A=A|0;var r=0,a=0,f=0,l=0,s=0,c=0,o=0,u=0,b=0;u=h;h=h+32|0;s=u;l=u+20|0;o=A+32|0;e:do{switch(t[o>>2]|0){case 5:{r=0;while(1){a=t[12724+(r<<2)>>2]|0;if((r|0)==8)break e;f=t[A>>2]|0;if((i[a>>0]|0)==(i[f>>0]|0)?(e1(a,f)|0)==0:0){c=10;break e}r=r+1|0}}case 1:{a=A+1|0;f=A+2|0;r=(FC(l,n[A>>0]|0,n[a>>0]|0,n[f>>0]|0)|0)+32|0;if(!(t[l>>2]|0))c=10;else{b=n[A>>0]|0;l=n[a>>0]|0;c=n[f>>0]|0;t[s>>2]=0;t[s+4>>2]=r;t[s+8>>2]=b;t[s+12>>2]=l;t[s+16>>2]=c;mm(e,68492,s);c=10}break}case 0:{r=0;c=10;break}default:ge(138394,68513,168,68532)}}while(0);if((c|0)==10)t[A>>2]=r;t[o>>2]=6;h=u;return}function GC(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0,n=0.0,f=0.0,l=0,s=0,o=0.0,u=0.0,b=0.0,w=0,k=0,d=0,v=0,g=0,m=0;i=h;h=h+112|0;a=i+8|0;m=i+104|0;g=i;s=t[e+16>>2]|0;v=~~+c[s+152>>3];d=t[s+16>>2]|0;k=t[s+56>>2]|0;w=t[46716]|0;WC(s,m,g);u=+c[A>>3];s=~~(u+(u>=0.0?.5:-.5));o=+c[A+8>>3];l=~~(o+(o>=0.0?.5:-.5));f=+c[A+16>>3];u=f-u;n=+c[A+24>>3];o=n-o;A=t[m>>2]|0;b=+c[g>>3];t[a>>2]=1;t[a+4>>2]=1;t[a+8>>2]=A;t[a+12>>2]=v;t[a+16>>2]=d;t[a+20>>2]=k;t[a+24>>2]=w;t[a+28>>2]=0;t[a+32>>2]=r|0?20:-1;c[a+40>>3]=b;t[a+48>>2]=0;c[a+56>>3]=0.0;t[a+64>>2]=s;t[a+68>>2]=l;t[a+72>>2]=~~(u+(u>=0.0?.5:-.5));t[a+76>>2]=~~(o+(o>=0.0?.5:-.5));t[a+80>>2]=s;t[a+84>>2]=l;t[a+88>>2]=~~(f+(f>=0.0?.5:-.5));t[a+92>>2]=~~(n+(n>=0.0?.5:-.5));mm(e,68427,a);h=i;return}function LC(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0,n=0,f=0.0,l=0,s=0,o=0,u=0,b=0,w=0,k=0;a=h;h=h+96|0;n=a+8|0;b=a+80|0;w=a;k=t[e+16>>2]|0;u=~~+c[k+152>>3];o=t[k+16>>2]|0;s=t[k+56>>2]|0;l=t[46716]|0;WC(k,b,w);b=t[b>>2]|0;f=+c[w>>3];t[n>>2]=2;t[n+4>>2]=3;t[n+8>>2]=b;t[n+12>>2]=u;t[n+16>>2]=o;t[n+20>>2]=s;t[n+24>>2]=l;t[n+28>>2]=0;t[n+32>>2]=i|0?20:-1;c[n+40>>3]=f;t[n+48>>2]=0;t[n+52>>2]=0;t[n+56>>2]=0;t[n+60>>2]=0;t[n+64>>2]=0;t[n+68>>2]=r+1;mm(e,68331,n);YC(e,A,r,1);h=a;return}function QC(e,A,r,i,a,n){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;n=n|0;var f=0,l=0,s=0,o=0,u=0,b=0,w=0,k=0,d=0,v=0,g=0,m=0,p=0,E=0,B=0,y=0,C=0,I=0,Z=0,G=0,L=0.0,Q=0.0,D=0;G=h;h=h+192|0;Z=G+176|0;C=G+168|0;I=G+104|0;y=G+96|0;a=G+88|0;m=G+180|0;p=G+80|0;E=G+16|0;B=G;i=e+16|0;w=t[i>>2]|0;k=~~+c[w+152>>3];d=t[w+16>>2]|0;v=t[46716]|0;g=Z2((r*140|0)+140|0)|0;WC(w,m,p);if(!n){b=4;l=0;s=-1}else{b=5;l=t[(t[i>>2]|0)+56>>2]|0;s=20}Q=+c[A>>3];u=E+48|0;c[u>>3]=Q;L=+c[A+8>>3];c[E+56>>3]=L;t[a>>2]=~~(Q+(Q>=0.0?.5:-.5));t[a+4>>2]=~~(L+(L>=0.0?.5:-.5));o=B+8|0;i=g+(T4(g,81099,a)|0)|0;w=1;n=0;while(1){f=n+3|0;if((f|0)>=(r|0))break;t[E>>2]=t[u>>2];t[E+4>>2]=t[u+4>>2];t[E+8>>2]=t[u+8>>2];t[E+12>>2]=t[u+12>>2];a=1;while(1){if((a|0)==4){a=1;break}D=a+n|0;c[E+(a<<4)>>3]=+c[A+(D<<4)>>3];c[E+(a<<4)+8>>3]=+c[A+(D<<4)+8>>3];a=a+1|0}while(1){if((a|0)==7)break;Zx(B,E,3,+(a|0)*.16666666666666666,0,0);L=+c[B>>3];Q=+c[o>>3];t[y>>2]=~~(L+(L>=0.0?.5:-.5));t[y+4>>2]=~~(Q+(Q>=0.0?.5:-.5));a=a+1|0;i=i+(T4(i,81099,y)|0)|0}w=w+6|0;n=f}a=t[m>>2]|0;Q=+c[p>>3];t[I>>2]=3;t[I+4>>2]=b;t[I+8>>2]=a;t[I+12>>2]=k;t[I+16>>2]=d;t[I+20>>2]=l;t[I+24>>2]=v;t[I+28>>2]=0;t[I+32>>2]=s;c[I+40>>3]=Q;t[I+48>>2]=0;t[I+52>>2]=0;t[I+56>>2]=0;t[I+60>>2]=w;mm(e,68382,I);t[C>>2]=g;mm(e,81106,C);G2(g);a=w+-1|0;i=0;while(1){if((i|0)>=(w|0))break;t[Z>>2]=((i|0)%(a|0)|0|0)!=0&1;mm(e,81111,Z);i=i+1|0}hm(e,153599)|0;h=G;return}function DC(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0,n=0.0,f=0,l=0,s=0,o=0,u=0,b=0;i=h;h=h+96|0;a=i+8|0;o=i+80|0;u=i;b=t[e+16>>2]|0;s=~~+c[b+152>>3];l=t[b+16>>2]|0;f=t[46716]|0;WC(b,o,u);o=t[o>>2]|0;n=+c[u>>3];t[a>>2]=2;t[a+4>>2]=1;t[a+8>>2]=o;t[a+12>>2]=s;t[a+16>>2]=l;t[a+20>>2]=0;t[a+24>>2]=f;t[a+28>>2]=0;t[a+32>>2]=0;c[a+40>>3]=n;t[a+48>>2]=0;t[a+52>>2]=0;t[a+56>>2]=0;t[a+60>>2]=0;t[a+64>>2]=0;t[a+68>>2]=r;mm(e,68331,a);YC(e,A,r,0);h=i;return}function zC(e,A){e=e|0;A=A|0;var r=0,i=0;r=h;h=h+16|0;i=r;t[i>>2]=A;mm(e,68325,i);h=r;return}function WC(e,A,r){e=e|0;A=A|0;r=r|0;var i=0.0;switch(t[e+144>>2]|0){case 1:{i=10.0;e=1;break}case 2:{i=10.0;e=2;break}default:{i=0.0;e=0}}t[A>>2]=e;c[r>>3]=i;return}function YC(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0,n=0,f=0,l=0,s=0.0,o=0.0;l=h;h=h+16|0;f=l+8|0;n=l;a=0;while(1){if((a|0)>=(r|0))break;o=+c[A+(a<<4)>>3];s=+c[A+(a<<4)+8>>3];t[n>>2]=~~(o+(o>=0.0?.5:-.5));t[n+4>>2]=~~(s+(s>=0.0?.5:-.5));mm(e,81099,n);a=a+1|0}if(i|0){s=+c[A>>3];o=+c[A+8>>3];t[f>>2]=~~(s+(s>=0.0?.5:-.5));t[f+4>>2]=~~(o+(o>=0.0?.5:-.5));mm(e,81099,f)}hm(e,153599)|0;h=l;return}function FC(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var n=0,f=0,l=0,s=0,c=0,o=0,u=0,b=0;t[e>>2]=0;c=t[46717]|0;f=195075;n=0;l=-1;while(1){if((n|0)>=(c|0)){o=6;break}u=(a[192216+(n<<1)>>1]|0)-A|0;b=(a[192728+(n<<1)>>1]|0)-r|0;s=(a[193240+(n<<1)>>1]|0)-i|0;s=(P(b,b)|0)+(P(u,u)|0)+(P(s,s)|0)|0;if((s|0)<(f|0))if(!s)break;else{f=s;l=n}n=n+1|0}if((o|0)==6){t[46717]=c+1;if((c|0)==256)n=l;else{a[192216+(n<<1)>>1]=A;a[192728+(n<<1)>>1]=r;a[193240+(n<<1)>>1]=i;t[e>>2]=1}}return n|0}function MC(e){e=e|0;var A=0,r=0,a=0,n=0,f=0,l=0;l=h;h=h+16|0;f=l;A=t[46718]|0;if(!A){t[46719]=64;A=Z2(64)|0;t[46718]=A;r=0}else r=0;while(1){n=e+1|0;a=i[e>>0]|0;if(!(a<<24>>24))break;e=t[46719]|0;if((r|0)>(e+-8|0)){A=e<<1;t[46719]=A;A=Q2(t[46718]|0,A)|0;t[46718]=A;A=A+r|0}if(a<<24>>24<=-1){i[A>>0]=92;t[f>>2]=a&255;T4(A+1|0,81224,f)|0;e=n;A=A+4|0;r=r+4|0;continue}if(a<<24>>24==92){i[A>>0]=92;r=r+1|0;A=A+1|0}i[A>>0]=a;e=n;A=A+1|0;r=r+1|0}i[A>>0]=0;h=l;return t[46718]|0}function VC(e){e=e|0;var A=0,r=0,i=0,a=0,n=0;r=h;h=h+16|0;A=r;hm(e,73332)|0;if((t[e+64>>2]|0)==2)hm(e,73347)|0;else hm(e,153599)|0;n=t[t[e+12>>2]>>2]|0;a=t[n+4>>2]|0;i=t[n+8>>2]|0;t[A>>2]=t[n>>2];t[A+4>>2]=a;t[A+8>>2]=i;mm(e,73358,A);h=r;return}function NC(e){e=e|0;var A=0,r=0,i=0,a=0,n=0;n=h;h=h+32|0;a=n+8|0;i=n;hm(e,73286)|0;r=e+64|0;A=e+12|0;if((t[r>>2]|0)!=2){t[i>>2]=t[(t[A>>2]|0)+28>>2];mm(e,73297,i)}if((t[(t[A>>2]|0)+20>>2]|0)==0?(t[r>>2]|0)!=2:0){A=t[e+476>>2]|0;r=t[e+480>>2]|0;i=t[e+484>>2]|0;t[a>>2]=t[e+472>>2];t[a+4>>2]=A;t[a+8>>2]=r;t[a+12>>2]=i;mm(e,69666,a)}hm(e,73312)|0;hm(e,73325)|0;h=n;return}function RC(e){e=e|0;var A=0,r=0,a=0,n=0,f=0,l=0,s=0,c=0,o=0,u=0;c=h;h=h+32|0;s=c+24|0;a=c+8|0;l=c;n=t[e+16>>2]|0;i[193768]=0;r=e+12|0;f=n+8|0;if(!(t[(t[r>>2]|0)+28>>2]|0)){t[l>>2]=Mk(t[f>>2]|0)|0;mm(e,69597,l);A=e+64|0;if((t[A>>2]|0)==2)hm(e,69630)|0;else hm(e,69612)|0;do{if(!(t[(t[r>>2]|0)+20>>2]|0))if((t[A>>2]|0)==2){u=t[e+460>>2]|0;o=t[e+464>>2]|0;A=t[e+468>>2]|0;t[a>>2]=t[e+456>>2];t[a+4>>2]=u;t[a+8>>2]=o;t[a+12>>2]=A;mm(e,69666,a);break}else{hm(e,69642)|0;break}}while(0);hm(e,69696)|0;JV(e,t[(t[r>>2]|0)+24>>2]|0,13e3);PV(e);A=t[(t[r>>2]|0)+20>>2]|0;if(A|0){t[l>>2]=t[A>>2];t[l+4>>2]=0;JV(e,0,l)}}t[46720]=(i[(t[(t[f>>2]|0)+16>>2]|0)+115>>0]|0)==1?1:-1;if(!(i[193768]|0)){hm(e,69716)|0;i[193768]=1}A=t[n+208>>2]|0;if(A|0){t[s>>2]=XV(A,t[46720]|0)|0;mm(e,69729,s)}h=c;return}function xC(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0;A=h;h=h+16|0;a=A;t[a>>2]=r;t[a+4>>2]=i;mm(e,69581,a);h=A;return}function JC(e){e=e|0;var A=0,r=0,i=0,a=0,n=0,f=0,l=0,s=0,o=0,u=0,b=0,w=0,k=0,d=0,v=0,g=0,m=0.0,p=0.0,E=0.0;v=h;h=h+144|0;d=v+128|0;k=v+112|0;w=v+72|0;b=v+56|0;u=v+40|0;o=v+32|0;i=v+24|0;A=v+8|0;r=v;a=t[e+456>>2]|0;l=t[e+460>>2]|0;n=t[e+464>>2]|0;f=t[e+468>>2]|0;s=e+12|0;g=(t[(t[s>>2]|0)+28>>2]|0)+1|0;t[r>>2]=g;t[r+4>>2]=g;mm(e,69208,r);if(!(t[(t[s>>2]|0)+20>>2]|0)){t[A>>2]=a;t[A+4>>2]=l;t[A+8>>2]=n;t[A+12>>2]=f;mm(e,69225,A)}r=e+360|0;t[i>>2]=t[r>>2]|0?69259:69269;mm(e,69278,i);A=e+64|0;if((t[A>>2]|0)==1){t[o>>2]=n;t[o+4>>2]=f;mm(e,69303,o)}o=t[e+200>>2]|0;g=t[e+204>>2]|0;t[u>>2]=t[e+196>>2];t[u+4>>2]=o;t[u+8>>2]=g;mm(e,69342,u);if(!(t[(t[s>>2]|0)+20>>2]|0)){t[b>>2]=a;t[b+4>>2]=l;t[b+8>>2]=n-a;t[b+12>>2]=f-l;mm(e,69362,b)}E=+c[e+496>>3];g=t[r>>2]|0;p=+c[e+504>>3];m=+c[e+512>>3];c[w>>3]=+c[e+488>>3];c[w+8>>3]=E;t[w+16>>2]=g;c[w+24>>3]=p;c[w+32>>3]=m;mm(e,69402,w);if((t[A>>2]|0)==1){if((n|0)>14399|(f|0)>14399){g=t[(t[s>>2]|0)+16>>2]|0;t[k>>2]=n;t[k+4>>2]=f;t[k+8>>2]=14400;M5[g&63](69445,k)}t[d>>2]=a;t[d+4>>2]=l;t[d+8>>2]=n;t[d+12>>2]=f;mm(e,69540,d)}h=v;return}function HC(e){e=e|0;var A=0,r=0,i=0;i=h;h=h+16|0;r=i;A=e+12|0;if(t[(t[A>>2]|0)+20>>2]|0){hm(e,69132)|0;JV(e,0,(t[(t[A>>2]|0)+20>>2]|0)+4|0)}hm(e,69149)|0;hm(e,69176)|0;t[r>>2]=t[(t[A>>2]|0)+28>>2];mm(e,69191,r);h=i;return}function PC(e){e=e|0;var A=0,r=0;A=h;h=h+16|0;r=A;t[r>>2]=Mk(t[(t[e+16>>2]|0)+8>>2]|0)|0;mm(e,69125,r);hm(e,69118)|0;h=A;return}function XC(e){e=e|0;hm(e,84552)|0;return}function SC(e){e=e|0;hm(e,69118)|0;return}function jC(e){e=e|0;hm(e,84552)|0;return}function UC(e){e=e|0;hm(e,69118)|0;return}function TC(e){e=e|0;hm(e,84552)|0;return}function OC(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;var n=0;i=h;h=h+16|0;r=i;if(A|0?(n=(t[e+16>>2]|0)+272|0,t[n>>2]|0):0){hm(e,69014)|0;ym(e,t[n>>2]|0,2);hm(e,69025)|0;t[r>>2]=XV(A,t[46720]|0)|0;mm(e,69029,r)}h=i;return}function _C(e,A,r){e=e|0;A=A|0;r=r|0;var a=0,n=0.0,f=0,l=0,s=0,o=0,u=0;o=h;h=h+32|0;l=o+8|0;s=o;a=t[e+16>>2]|0;if(!(+c[a+40>>3]<.5)){iI(e,a+16|0);f=r+4|0;pm(e,+c[(t[f>>2]|0)+16>>3]);t[l>>2]=t[t[f>>2]>>2];mm(e,68973,l);f=XV(t[r>>2]|0,t[46720]|0)|0;switch(i[r+48>>0]|0){case 114:{u=r+32|0;a=u;n=+c[u>>3];break}case 108:{a=r+32|0;n=0.0;break}default:{u=r+32|0;a=u;n=+c[u>>3]*.5}}c[A>>3]=+c[A>>3]-n;u=A+8|0;c[u>>3]=+c[u>>3]+ +c[r+24>>3];t[l>>2]=t[A>>2];t[l+4>>2]=t[A+4>>2];t[l+8>>2]=t[A+8>>2];t[l+12>>2]=t[A+12>>2];Bm(e,l);hm(e,68988)|0;pm(e,+c[a>>3]);t[s>>2]=f;mm(e,68997,s)}h=o;return}function qC(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0,n=0;n=h;h=h+32|0;a=n;t[a>>2]=t[A>>2];t[a+4>>2]=t[A+4>>2];t[a+8>>2]=t[A+8>>2];t[a+12>>2]=t[A+12>>2];c[a+16>>3]=+c[A+16>>3]-+c[A>>3];c[a+24>>3]=+c[A+24>>3]-+c[A+8>>3];A=e+16|0;if(r|0?(i=t[A>>2]|0,+c[i+80>>3]>.5):0){iI(e,i+56|0);ym(e,a,2);hm(e,68931)|0}if(+c[(t[A>>2]|0)+40>>3]>.5){aI(e);iI(e,(t[A>>2]|0)+16|0);ym(e,a,2);hm(e,68951)|0}h=n;return}function KC(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0,n=0,f=0,l=0;l=h;h=h+16|0;f=l;n=e+16|0;if(i|0?(a=t[n>>2]|0,+c[a+80>>3]>.5):0){iI(e,a+56|0);hm(e,68852)|0;t[f>>2]=t[A>>2];t[f+4>>2]=t[A+4>>2];t[f+8>>2]=t[A+8>>2];t[f+12>>2]=t[A+12>>2];Bm(e,f);hm(e,68861)|0;i=1;while(1){if((i|0)>=(r|0))break;a=A+(i<<4)|0;t[f>>2]=t[a>>2];t[f+4>>2]=t[a+4>>2];t[f+8>>2]=t[a+8>>2];t[f+12>>2]=t[a+12>>2];Bm(e,f);hm(e,68870)|0;i=i+1|0}hm(e,68897)|0}if(+c[(t[n>>2]|0)+40>>3]>.5){aI(e);iI(e,(t[n>>2]|0)+16|0);hm(e,68852)|0;t[f>>2]=t[A>>2];t[f+4>>2]=t[A+4>>2];t[f+8>>2]=t[A+8>>2];t[f+12>>2]=t[A+12>>2];Bm(e,f);hm(e,68861)|0;i=1;while(1){if((i|0)>=(r|0))break;n=A+(i<<4)|0;t[f>>2]=t[n>>2];t[f+4>>2]=t[n+4>>2];t[f+8>>2]=t[n+8>>2];t[f+12>>2]=t[n+12>>2];Bm(e,f);hm(e,68870)|0;i=i+1|0}hm(e,68913)|0}h=l;return}function $C(e,A,r,i,a,n){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;n=n|0;var f=0,l=0,s=0;s=h;h=h+16|0;a=s;f=e+16|0;if(n|0?(l=t[f>>2]|0,+c[l+80>>3]>.5):0){iI(e,l+56|0);hm(e,68852)|0;t[a>>2]=t[A>>2];t[a+4>>2]=t[A+4>>2];t[a+8>>2]=t[A+8>>2];t[a+12>>2]=t[A+12>>2];Bm(e,a);hm(e,68861)|0;i=1;while(1){if((i|0)>=(r|0))break;ym(e,A+(i<<4)|0,3);hm(e,68887)|0;i=i+3|0}hm(e,68897)|0}if(+c[(t[f>>2]|0)+40>>3]>.5){aI(e);iI(e,(t[f>>2]|0)+16|0);hm(e,68852)|0;t[a>>2]=t[A>>2];t[a+4>>2]=t[A+4>>2];t[a+8>>2]=t[A+8>>2];t[a+12>>2]=t[A+12>>2];Bm(e,a);hm(e,68861)|0;i=1;while(1){if((i|0)>=(r|0))break;ym(e,A+(i<<4)|0,3);hm(e,68887)|0;i=i+3|0}hm(e,68879)|0}h=s;return}function eI(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0,n=0,f=0;n=h;h=h+16|0;a=n;i=e+16|0;if(+c[(t[i>>2]|0)+40>>3]>.5){aI(e);iI(e,(t[i>>2]|0)+16|0);hm(e,68852)|0;t[a>>2]=t[A>>2];t[a+4>>2]=t[A+4>>2];t[a+8>>2]=t[A+8>>2];t[a+12>>2]=t[A+12>>2];Bm(e,a);hm(e,68861)|0;i=1;while(1){if((i|0)>=(r|0))break;f=A+(i<<4)|0;t[a>>2]=t[f>>2];t[a+4>>2]=t[f+4>>2];t[a+8>>2]=t[f+8>>2];t[a+12>>2]=t[f+12>>2];Bm(e,a);hm(e,68870)|0;i=i+1|0}hm(e,68879)|0}h=n;return}function AI(e,A){e=e|0;A=A|0;hm(e,68849)|0;hm(e,A)|0;hm(e,153599)|0;return}function rI(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;var n=0,f=0,l=0,s=0,o=0,u=0;u=h;h=h+32|0;n=u+16|0;o=u+8|0;s=u;f=e+16|0;if(a|0?(l=t[f>>2]|0,+c[l+80>>3]>.5):0){iI(e,l+56|0);hm(e,84447)|0;ym(e,r,i);hm(e,102604)|0;t[n>>2]=t[r>>2];t[n+4>>2]=t[r+4>>2];t[n+8>>2]=t[r+8>>2];t[n+12>>2]=t[r+12>>2];Bm(e,n);t[s>>2]=i;t[s+4>>2]=A;mm(e,68766,s)}if(+c[(t[f>>2]|0)+40>>3]>.5){aI(e);iI(e,(t[f>>2]|0)+16|0);hm(e,84447)|0;ym(e,r,i);hm(e,102604)|0;t[n>>2]=t[r>>2];t[n+4>>2]=t[r+4>>2];t[n+8>>2]=t[r+8>>2];t[n+12>>2]=t[r+12>>2];Bm(e,n);t[o>>2]=i;t[o+4>>2]=A;mm(e,68782,o)}h=u;return}function iI(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0.0,f=0.0;a=h;h=h+32|0;i=a;if(A|0){switch(t[(t[e+16>>2]|0)+4>>2]|0){case 1:case 0:{r=111494;break}case 2:{r=111481;break}case 3:{r=111450;break}default:r=68818}f=+c[A+8>>3];n=+c[A+16>>3];c[i>>3]=+c[A>>3];c[i+8>>3]=f;c[i+16>>3]=n;t[i+24>>2]=r;mm(e,68825,i)}h=a;return}function aI(e){e=e|0;var A=0,r=0,a=0,n=0,f=0,l=0,s=0,o=0;o=h;h=h+16|0;s=o+8|0;l=o;n=e+16|0;f=t[n>>2]|0;A=t[f+160>>2]|0;pm(e,+c[f+152>>3]);hm(e,68799)|0;while(1){if(!A)break;f=A+4|0;a=t[A>>2]|0;if(!a)break;if(!(e1(a,111088)|0)){A=f;continue}else r=a;while(1){A=r+1|0;if(!(i[r>>0]|0))break;else r=A}e:while(1){if(!(i[A>>0]|0))break;t[l>>2]=A;mm(e,68814,l);while(1){r=A+1|0;if(!(i[A>>0]|0)){A=r;continue e}else A=r}}if(!(e1(a,134335)|0))c[(t[n>>2]|0)+152>>3]=0.0;t[s>>2]=a;mm(e,96670,s);A=f}h=o;return}function tI(e){e=e|0;var A=0;hm(e,74838)|0;A=Hw(t[(t[e>>2]|0)+168>>2]|0,74894)|0;if(A|0?i[A>>0]|0:0){hm(e,74905)|0;hm(e,A)|0;hm(e,74929)|0}hm(e,74950)|0;hm(e,74998)|0;hm(e,75052)|0;A=e+12|0;hm(e,TF(t[t[t[A>>2]>>2]>>2]|0)|0)|0;hm(e,78181)|0;hm(e,TF(t[(t[t[A>>2]>>2]|0)+4>>2]|0)|0)|0;hm(e,78191)|0;hm(e,TF(t[(t[t[A>>2]>>2]|0)+8>>2]|0)|0)|0;hm(e,75434)|0;hm(e,75458)|0;return}function nI(e){e=e|0;var A=0,r=0,a=0,n=0,f=0,l=0.0,s=0.0,o=0.0;f=h;h=h+48|0;n=f+16|0;a=f+8|0;r=f;A=t[e+16>>2]|0;hm(e,74673)|0;A=A+8|0;if(i[(Mk(t[A>>2]|0)|0)>>0]|0){hm(e,75397)|0;hm(e,TF(Mk(t[A>>2]|0)|0)|0)|0}t[r>>2]=P(t[e+168>>2]|0,t[e+164>>2]|0)|0;mm(e,74678,r);r=t[e+452>>2]|0;t[a>>2]=t[e+448>>2];t[a+4>>2]=r;mm(e,74694,a);o=+c[e+392>>3];s=+c[e+400>>3];l=+c[e+408>>3];c[n>>3]=+c[e+384>>3];c[n+8>>3]=o;c[n+16>>3]=s;c[n+24>>3]=l;mm(e,74727,n);hm(e,74758)|0;hm(e,74794)|0;hm(e,76388)|0;h=f;return}function fI(e){e=e|0;hm(e,74665)|0;return}function lI(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;DI(e,A,0,101510,t[(t[e+16>>2]|0)+8>>2]|0);hm(e,76388)|0;return}function sI(e){e=e|0;hm(e,74513)|0;return}function cI(e){e=e|0;var A=0,r=0,a=0,n=0;r=h;h=h+16|0;a=r;n=t[e+16>>2]|0;A=n+8|0;DI(e,t[n+212>>2]|0,0,111494,t[A>>2]|0);hm(e,74617)|0;pm(e,+c[e+488>>3]);hm(e,102604)|0;pm(e,+c[e+496>>3]);t[a>>2]=0-(t[e+360>>2]|0);mm(e,74636,a);pm(e,+c[e+504>>3]);hm(e,102604)|0;pm(e,-+c[e+512>>3]);hm(e,74660)|0;if(i[(Mk(t[A>>2]|0)|0)>>0]|0){hm(e,74569)|0;hm(e,TF(Mk(t[A>>2]|0)|0)|0)|0;hm(e,74577)|0}h=r;return}function oI(e){e=e|0;hm(e,74513)|0;return}function uI(e){e=e|0;var A=0,r=0;r=t[e+16>>2]|0;A=r+8|0;DI(e,t[r+212>>2]|0,0,108006,t[A>>2]|0);hm(e,76388)|0;hm(e,74569)|0;hm(e,TF(Mk(t[A>>2]|0)|0)|0)|0;hm(e,74577)|0;return}function bI(e){e=e|0;hm(e,74513)|0;return}function hI(e){e=e|0;var A=0,r=0,i=0;r=t[e+16>>2]|0;A=t[e+160>>2]|0;if((A|0)>1)A=t[(t[(t[e>>2]|0)+308>>2]|0)+(A<<2)>>2]|0;else A=0;i=r+8|0;DI(e,t[r+212>>2]|0,A,111481,t[i>>2]|0);hm(e,76388)|0;hm(e,74569)|0;hm(e,TF(Mk(t[i>>2]|0)|0)|0)|0;hm(e,74577)|0;return}function wI(e){e=e|0;hm(e,74513)|0;return}function kI(e){e=e|0;var A=0,r=0;r=t[e+16>>2]|0;A=r+8|0;DI(e,t[r+212>>2]|0,0,111450,t[A>>2]|0);hm(e,76388)|0;hm(e,74569)|0;A=UF(102095,t[A>>2]|0)|0;hm(e,TF(A)|0)|0;G2(A);hm(e,74577)|0;return}function dI(e){e=e|0;hm(e,74513)|0;return}function vI(e,A,r,a,t){e=e|0;A=A|0;r=r|0;a=a|0;t=t|0;hm(e,74519)|0;if(t|0){hm(e,74522)|0;hm(e,TF(t)|0)|0;hm(e,98744)|0}hm(e,74412)|0;hm(e,76349)|0;if(A|0?i[A>>0]|0:0){hm(e,74530)|0;hm(e,A)|0;hm(e,98744)|0}if(r|0?i[r>>0]|0:0){hm(e,74544)|0;hm(e,OF(r,1)|0)|0;hm(e,98744)|0}if(a|0?i[a>>0]|0:0){hm(e,74559)|0;hm(e,TF(a)|0)|0;hm(e,98744)|0}hm(e,76388)|0;return}function gI(e){e=e|0;hm(e,76343)|0;hm(e,74513)|0;return}function mI(e,A,r){e=e|0;A=A|0;r=r|0;var f=0,l=0,s=0,o=0,u=0,b=0,w=0,k=0,d=0,v=0,g=0,m=0,p=0,E=0,B=0,y=0,C=0,I=0,Z=0,G=0,L=0,Q=0,D=0,z=0.0,W=0,Y=0,F=0,M=0,V=0,N=0;N=h;h=h+176|0;V=N+160|0;M=N+152|0;D=N+136|0;F=N+128|0;Q=N+120|0;L=N+112|0;G=N+104|0;Z=N+96|0;I=N+88|0;y=N+80|0;E=N+72|0;p=N+64|0;m=N+56|0;g=N+48|0;f=N+40|0;k=N+32|0;v=N+24|0;d=N+16|0;w=N+8|0;b=N;Y=t[e+16>>2]|0;hm(e,74044)|0;switch(i[r+48>>0]|0){case 108:{hm(e,74050)|0;break}case 114:{hm(e,74071)|0;break}default:hm(e,74090)|0}W=A+8|0;z=+c[W>>3]+ +c[r+24>>3];c[W>>3]=z;W=Y+260|0;if(!(a[W>>1]&512)){hm(e,74112)|0;pm(e,+c[A>>3]);hm(e,74117)|0;pm(e,-z);hm(e,98744)|0}B=r+4|0;A=t[B>>2]|0;u=t[A+8>>2]|0;if(u){switch(t[(t[(t[(t[e>>2]|0)+168>>2]|0)+16>>2]|0)+244>>2]|0){case 1:{o=u;A=u+16|0;f=u+8|0;break}case 2:{o=u+24|0;A=u+32|0;f=u+28|0;break}default:{o=u+4|0;A=u+16|0;f=u+8|0}}l=t[A>>2]|0;A=t[f>>2]|0;s=t[u+12>>2]|0;t[b>>2]=t[o>>2];mm(e,74123,b);f=t[u+24>>2]|0;if(f|0){t[w>>2]=f;mm(e,74140,w)}hm(e,98744)|0;if(A|0){t[d>>2]=A;mm(e,74144,d)}if(s|0){t[v>>2]=s;mm(e,74162,v)}if(!l)l=0;else{t[k>>2]=l;mm(e,74181,k)}}else{t[f>>2]=t[A>>2];mm(e,74198,f);l=0;A=0}f=t[B>>2]|0;if(f|0?(C=t[f+24>>2]|0,C&127|0):0){if(!((A|0)!=0|(C&1|0)==0))mm(e,74216,g);if(!((l|0)!=0|(C&2|0)==0))mm(e,74236,m);if(C&100|0){mm(e,74257,p);if(!(C&4))A=0;else{mm(e,105986,E);A=1}if(C&64){t[y>>2]=A|0?100999:195059;mm(e,74276,y);A=1}if(C&32|0){t[I>>2]=A|0?100999:195059;mm(e,74287,I)}mm(e,98744,Z)}if(C&8|0)mm(e,74302,G);if(C&16|0)mm(e,74326,L)}c[Q>>3]=+c[(t[B>>2]|0)+16>>3];mm(e,74348,Q);A=Y+16|0;switch(t[Y+48>>2]|0){case 5:{A=t[A>>2]|0;if(N1(A,137314)|0){t[F>>2]=A;mm(e,74366,F)}break}case 1:{Q=n[A+1>>0]|0;F=n[A+2>>0]|0;t[D>>2]=n[A>>0];t[D+4>>2]=Q;t[D+8>>2]=F;mm(e,74377,D);break}default:ge(138394,73558,486,74399)}hm(e,74412)|0;if(a[W>>1]&512){t[M>>2]=TF(t[Y+212>>2]|0)|0;mm(e,74414,M);hm(e,74463)|0;pm(e,-z);hm(e,74481)|0}hm(e,OF(t[r>>2]|0,1)|0)|0;if(a[W>>1]&512)mm(e,74484,V);hm(e,74504)|0;h=N;return}function pI(e,A,r){e=e|0;A=A|0;r=r|0;var i=0;switch(r|0){case 2:{i=GI(e,A,2)|0;break}case 3:{i=LI(e)|0;break}default:i=0}hm(e,74008)|0;II(e,r,i);hm(e,74017)|0;pm(e,+c[A>>3]);hm(e,74023)|0;r=A+8|0;pm(e,-+c[r>>3]);hm(e,74030)|0;pm(e,+c[A+16>>3]-+c[A>>3]);hm(e,74037)|0;pm(e,+c[A+24>>3]-+c[r>>3]);hm(e,73424)|0;return}function EI(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0;switch(i|0){case 2:{a=GI(e,A,r)|0;break}case 3:{a=LI(e)|0;break}default:a=0}hm(e,73999)|0;II(e,i,a);hm(e,73414)|0;a=0;while(1){if((a|0)>=(r|0))break;pm(e,+c[A+(a<<4)>>3]);hm(e,100999)|0;pm(e,-+c[A+(a<<4)+8>>3]);hm(e,102604)|0;a=a+1|0}pm(e,+c[A>>3]);hm(e,100999)|0;pm(e,-+c[A+8>>3]);hm(e,73424)|0;return}function BI(e,A,r,i,n,f){e=e|0;A=A|0;r=r|0;i=i|0;n=n|0;f=f|0;n=t[e+16>>2]|0;switch(f|0){case 2:{i=GI(e,A,r)|0;break}case 3:{i=LI(e)|0;break}default:i=0}hm(e,73594)|0;if(a[n+260>>1]&512){hm(e,73600)|0;hm(e,TF(t[n+212>>2]|0)|0)|0;hm(e,73606)|0}II(e,f,i);hm(e,73611)|0;QI(e,A,r);hm(e,73424)|0;return}function yI(e,A,r){e=e|0;A=A|0;r=r|0;var i=0;hm(e,73404)|0;II(e,0,0);hm(e,73414)|0;i=0;while(1){if((i|0)>=(r|0))break;pm(e,+c[A+(i<<4)>>3]);hm(e,100999)|0;pm(e,-+c[A+(i<<4)+8>>3]);hm(e,102604)|0;i=i+1|0}hm(e,73424)|0;return}function CI(e,A){e=e|0;A=A|0;hm(e,73398)|0;hm(e,TF(A)|0)|0;hm(e,75458)|0;return}function II(e,A,r){e=e|0;A=A|0;r=r|0;var a=0,n=0,f=0,l=0,s=0,o=0,u=0,b=0,w=0,k=0;k=h;h=h+96|0;s=k+48|0;w=k+40|0;u=k+32|0;b=k+24|0;l=k+16|0;n=k+8|0;a=k;o=t[e+16>>2]|0;hm(e,73429)|0;e:do{switch(A|0){case 2:{t[a>>2]=r;mm(e,73437,a);break}case 3:{t[n>>2]=r;mm(e,73448,n);break}case 0:{hm(e,135709)|0;break}default:{A=o+56|0;a=s;n=A;f=a+40|0;do{t[a>>2]=t[n>>2];a=a+4|0;n=n+4|0}while((a|0)<(f|0));ZI(e,s);if((t[o+88>>2]|0)==1){A=i[A+3>>0]|0;switch(A<<24>>24){case-1:case 0:break e;default:{}}c[l>>3]=+(A&255)*.00392156862745098;mm(e,73459,l)}}}}while(0);hm(e,73478)|0;r=o+16|0;a=s;n=r;f=a+40|0;do{t[a>>2]=t[n>>2];a=a+4|0;n=n+4|0}while((a|0)<(f|0));ZI(e,s);A=o+152|0;if(+c[A>>3]!=1.0){hm(e,73489)|0;pm(e,+c[A>>3])}switch(t[o+144>>2]|0){case 1:{t[b>>2]=73529;mm(e,73506,b);break}case 2:{t[u>>2]=73533;mm(e,73506,u);break}default:{}}e:do{if((t[o+48>>2]|0)==1){A=i[r+3>>0]|0;switch(A<<24>>24){case-1:case 0:break e;default:{}}c[w>>3]=+(A&255)*.00392156862745098;mm(e,73537,w)}}while(0);hm(e,98744)|0;h=k;return}function ZI(e,A){e=e|0;A=A|0;var r=0,a=0,f=0,l=0;a=h;h=h+16|0;r=a;e:do{switch(t[A+32>>2]|0){case 5:{hm(e,t[A>>2]|0)|0;break}case 1:if(!(i[A+3>>0]|0)){hm(e,137379)|0;break e}else{l=n[A+1>>0]|0;f=n[A+2>>0]|0;t[r>>2]=n[A>>0];t[r+4>>2]=l;t[r+8>>2]=f;mm(e,75714,r);break e}default:ge(138394,73558,117,73578)}}while(0);h=a;return}function GI(e,A,r){e=e|0;A=A|0;r=r|0;var a=0.0,n=0,f=0,l=0,o=0,u=0,b=0,w=0,k=0,d=0,v=0,g=0;g=h;h=h+112|0;b=g+64|0;d=g+56|0;u=g+48|0;o=g+40|0;n=g+32|0;l=g;k=t[46722]|0;t[46722]=k+1;w=t[e+16>>2]|0;a=+(t[w+136>>2]|0)*.017453292519943295;t[l>>2]=0;t[l+4>>2]=0;t[l+8>>2]=0;t[l+12>>2]=0;t[l+16>>2]=0;t[l+20>>2]=0;t[l+24>>2]=0;t[l+28>>2]=0;zJ(A,l,r,a,0);t[b>>2]=k;mm(e,73831,b);hm(e,73896)|0;pm(e,+c[l>>3]);hm(e,73901)|0;pm(e,+c[l+8>>3]);hm(e,73908)|0;pm(e,+c[l+16>>3]);hm(e,73915)|0;pm(e,+c[l+24>>3]);hm(e,73922)|0;l=w+140|0;a=+s[l>>2];if(a>0.0){c[n>>3]=a+-.001;mm(e,73927,n)}else hm(e,73703)|0;A=w+56|0;r=b;n=A;f=r+40|0;do{t[r>>2]=t[n>>2];r=r+4|0;n=n+4|0}while((r|0)<(f|0));ZI(e,b);hm(e,73739)|0;e:do{if((t[w+88>>2]|0)==1){A=i[A+3>>0]|0;switch(A<<24>>24){case-1:case 0:{v=7;break e}default:{}}c[o>>3]=+(A&255)*.00392156862745098;mm(e,99612,o)}else v=7}while(0);if((v|0)==7)hm(e,73754)|0;hm(e,73757)|0;a=+s[l>>2];if(a>0.0){c[u>>3]=a;mm(e,73927,u)}else hm(e,73763)|0;A=w+96|0;r=b;n=A;f=r+40|0;do{t[r>>2]=t[n>>2];r=r+4|0;n=n+4|0}while((r|0)<(f|0));ZI(e,b);hm(e,73739)|0;e:do{if((t[w+128>>2]|0)==1){A=i[A+3>>0]|0;switch(A<<24>>24){case-1:case 0:{v=14;break e}default:{}}c[d>>3]=+(A&255)*.00392156862745098;mm(e,99612,d)}else v=14}while(0);if((v|0)==14)hm(e,73754)|0;hm(e,73967)|0;h=g;return k|0}function LI(e){e=e|0;var A=0,r=0.0,a=0,n=0,f=0,l=0,s=0,o=0,u=0,b=0,w=0,k=0,d=0.0;k=h;h=h+64|0;s=k+16|0;b=k+8|0;l=k;u=t[46721]|0;t[46721]=u+1;o=t[e+16>>2]|0;d=+(t[o+136>>2]|0)*.017453292519943295;r=d;if(d==0.0){a=50;A=50}else{a=~~((+W(+r)+1.0)*50.0);A=~~((1.0-+Y(+r))*50.0)}t[s>>2]=u;t[s+4>>2]=a;t[s+8>>2]=A;mm(e,73619,s);hm(e,73703)|0;A=o+56|0;a=s;n=A;f=a+40|0;do{t[a>>2]=t[n>>2];a=a+4|0;n=n+4|0}while((a|0)<(f|0));ZI(e,s);hm(e,73739)|0;e:do{if((t[o+88>>2]|0)==1){A=i[A+3>>0]|0;switch(A<<24>>24){case-1:case 0:{w=6;break e}default:{}}c[l>>3]=+(A&255)*.00392156862745098;mm(e,99612,l)}else w=6}while(0);if((w|0)==6)hm(e,73754)|0;hm(e,73757)|0;hm(e,73763)|0;A=o+96|0;a=s;n=A;f=a+40|0;do{t[a>>2]=t[n>>2];a=a+4|0;n=n+4|0}while((a|0)<(f|0));ZI(e,s);hm(e,73739)|0;e:do{if((t[o+128>>2]|0)==1){A=i[A+3>>0]|0;switch(A<<24>>24){case-1:case 0:{w=10;break e}default:{}}c[b>>3]=+(A&255)*.00392156862745098;mm(e,99612,b)}else w=10}while(0);if((w|0)==10)hm(e,73754)|0;hm(e,73799)|0;h=k;return u|0}function QI(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0,n=0,f=0;f=h;h=h+16|0;n=f;i=77;a=0;while(1){if((a|0)>=(r|0))break;t[n>>2]=i;mm(e,73616,n);pm(e,+c[A+(a<<4)>>3]);hm(e,100999)|0;pm(e,-+c[A+(a<<4)+8>>3]);i=(a|0)==0?67:32;a=a+1|0}h=f;return}function DI(e,A,r,a,n){e=e|0;A=A|0;r=r|0;a=a|0;n=n|0;var f=0,l=0,s=0;s=h;h=h+16|0;l=s+8|0;f=s;hm(e,74587)|0;hm(e,TF(A)|0)|0;if(r|0){t[f>>2]=TF(r)|0;mm(e,74595,f)}t[l>>2]=a;mm(e,74599,l);A=Hw(n,74611)|0;if(A|0?i[A>>0]|0:0){hm(e,102604)|0;hm(e,TF(A)|0)|0}hm(e,98744)|0;h=s;return}function zI(e){e=e|0;var A=0;hm(e,75418)|0;A=e+12|0;hm(e,HI(t[t[t[A>>2]>>2]>>2]|0)|0)|0;hm(e,78181)|0;hm(e,HI(t[(t[t[A>>2]>>2]|0)+4>>2]|0)|0)|0;hm(e,78191)|0;hm(e,HI(t[(t[t[A>>2]>>2]|0)+8>>2]|0)|0)|0;hm(e,75434)|0;return}function WI(e){e=e|0;var A=0,r=0,a=0;a=h;h=h+16|0;r=a;A=t[e+16>>2]|0;hm(e,75395)|0;A=A+8|0;if(i[(Mk(t[A>>2]|0)|0)>>0]|0){hm(e,75397)|0;hm(e,HI(Mk(t[A>>2]|0)|0)|0)|0}t[r>>2]=P(t[e+168>>2]|0,t[e+164>>2]|0)|0;mm(e,75406,r);t[46723]=0;h=a;return}function YI(e){e=e|0;t[46723]=1;return}function FI(e){e=e|0;t[46723]=-1;return}function MI(e,A,r){e=e|0;A=A|0;r=r|0;var a=0,n=0,f=0,l=0,s=0,o=0,u=0;u=h;h=h+48|0;f=u+8|0;o=u;a=t[e+16>>2]|0;if(t[a+144>>2]|0?(s=r+4|0,l=~~(+c[e+352>>3]*+c[(t[s>>2]|0)+16>>3]),l|0):0){PI(e);hm(e,75334)|0;n=A+8|0;c[n>>3]=+c[n>>3]-+(l|0)*.55;t[f>>2]=t[A>>2];t[f+4>>2]=t[A+4>>2];t[f+8>>2]=t[A+8>>2];t[f+12>>2]=t[A+12>>2];Bm(e,f);hm(e,75348)|0;hm(e,t[r>>2]|0)|0;hm(e,75357)|0;hm(e,75155)|0;n=f;A=a+16|0;a=n+40|0;do{t[n>>2]=t[A>>2];n=n+4|0;A=A+4|0}while((n|0)<(a|0));XI(e,f);hm(e,75359)|0;f=t[s>>2]|0;s=t[f+8>>2]|0;s=t[((s|0)==0?f:s+4|0)>>2]|0;hm(e,98744)|0;hm(e,s)|0;hm(e,98744)|0;t[o>>2]=l;mm(e,75368,o);switch(i[r+48>>0]|0){case 108:{hm(e,75373)|0;break}case 114:{hm(e,75384)|0;break}default:{}}SI(e);hm(e,153599)|0}h=u;return}function VI(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0,n=0,f=0,l=0,s=0.0,o=0.0,u=0.0;l=h;h=h+48|0;a=l;n=t[e+16>>2]|0;f=n+144|0;if(t[f>>2]|0){u=+c[A>>3];o=+c[A+24>>3];i=A+8|0;s=+c[i>>3];c[A>>3]=u-+c[A+16>>3]+u;c[i>>3]=s-o+s;PI(e);hm(e,75320)|0;ym(e,A,2);hm(e,75155)|0;do{if(!r)if(!(t[46723]|0)){hm(e,97309)|0;break}else{hm(e,137198)|0;break}else{A=a;r=n+56|0;i=A+40|0;do{t[A>>2]=t[r>>2];A=A+4|0;r=r+4|0}while((A|0)<(i|0));XI(e,a)}}while(0);if((t[46723]|0)==1)t[46723]=0;hm(e,75266)|0;pm(e,+c[n+152>>3]);hm(e,75309)|0;A=a;r=n+16|0;i=A+40|0;do{t[A>>2]=t[r>>2];A=A+4|0;r=r+4|0}while((A|0)<(i|0));XI(e,a);A=t[f>>2]|0;if((A|0)==1){hm(e,75163)|0;A=t[f>>2]|0}if((A|0)==2)hm(e,75172)|0;SI(e);hm(e,153599)|0}h=l;return}function NI(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0,n=0,f=0,l=0;l=h;h=h+48|0;a=l;n=t[e+16>>2]|0;f=n+144|0;if(t[f>>2]|0){PI(e);hm(e,75292)|0;ym(e,A,r);hm(e,75155)|0;do{if(!i)if(!(t[46723]|0)){hm(e,97309)|0;break}else{hm(e,137198)|0;break}else{A=a;r=n+56|0;i=A+40|0;do{t[A>>2]=t[r>>2];A=A+4|0;r=r+4|0}while((A|0)<(i|0));XI(e,a)}}while(0);if((t[46723]|0)==1)t[46723]=0;hm(e,75266)|0;pm(e,+c[n+152>>3]);hm(e,75309)|0;A=a;r=n+16|0;i=A+40|0;do{t[A>>2]=t[r>>2];A=A+4|0;r=r+4|0}while((A|0)<(i|0));XI(e,a);A=t[f>>2]|0;if((A|0)==1){hm(e,75163)|0;A=t[f>>2]|0}if((A|0)==2)hm(e,75172)|0;SI(e);hm(e,153599)|0}h=l;return}function RI(e,A,r,i,a,n){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;n=n|0;var f=0,l=0,s=0,o=0;o=h;h=h+48|0;f=o;l=t[e+16>>2]|0;s=l+144|0;if(t[s>>2]|0){PI(e);hm(e,75141)|0;ym(e,A,r);hm(e,75155)|0;i=f;a=l+16|0;n=i+40|0;do{t[i>>2]=t[a>>2];i=i+4|0;a=a+4|0}while((i|0)<(n|0));XI(e,f);hm(e,75266)|0;pm(e,+c[l+152>>3]);i=t[s>>2]|0;if((i|0)==1){hm(e,75163)|0;i=t[s>>2]|0}if((i|0)==2)hm(e,75172)|0;hm(e,75275)|0;SI(e);hm(e,153599)|0}h=o;return}function xI(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0,n=0,f=0,l=0;l=h;h=h+48|0;n=l;i=t[e+16>>2]|0;f=i+144|0;if(t[f>>2]|0){PI(e);hm(e,75141)|0;ym(e,A,r);hm(e,75155)|0;a=n;A=i+16|0;r=a+40|0;do{t[a>>2]=t[A>>2];a=a+4|0;A=A+4|0}while((a|0)<(r|0));XI(e,n);A=t[f>>2]|0;if((A|0)==1){hm(e,75163)|0;A=t[f>>2]|0}if((A|0)==2)hm(e,75172)|0;SI(e);hm(e,153599)|0}h=l;return}function JI(e,A){e=e|0;A=A|0;hm(e,75138)|0;hm(e,HI(A)|0)|0;hm(e,153599)|0;return}function HI(e){e=e|0;return e|0}function PI(e){e=e|0;if(!(i[e+144>>0]|0))hm(e,75263)|0;else hm(e,t[e+148>>2]|0)|0;return}function XI(e,A){e=e|0;A=A|0;var r=0,a=0,f=0,l=0;a=h;h=h+16|0;r=a;e:do{switch(t[A+32>>2]|0){case 5:{hm(e,t[A>>2]|0)|0;break}case 1:if(!(i[A+3>>0]|0)){hm(e,97309)|0;break e}else{l=n[A+1>>0]|0;f=n[A+2>>0]|0;t[r>>2]=n[A>>0];t[r+4>>2]=l;t[r+8>>2]=f;mm(e,75714,r);break e}default:ge(138394,75181,49,75245)}}while(0);h=a;return}function SI(e){e=e|0;var A=0,r=0,i=0,a=0,n=0,f=0;f=h;h=h+16|0;n=f;a=t[e+16>>2]|0;switch(t[a+12>>2]|0){case 8:{A=1;r=111481;i=a+8|0;break}case 10:{A=0;r=111481;i=a+8|0;break}case 3:case 2:case 9:{A=1;r=111450;i=a+8|0;break}case 7:case 6:case 11:{A=0;r=111450;i=a+8|0;break}case 0:{A=1;r=111494;i=a+8|0;break}case 4:{A=0;r=75217;i=a+8|0;break}case 1:{A=1;r=111494;i=a+8|0;break}case 5:{A=0;r=111494;i=a+8|0;break}default:ge(138394,75181,106,75200)}a=t[(t[i>>2]|0)+8>>2]|0;t[n>>2]=A;t[n+4>>2]=r;t[n+8>>2]=a;mm(e,75229,n);h=f;return}function jI(e){e=e|0;var A=0;hm(e,78153)|0;hm(e,78161)|0;A=e+12|0;hm(e,iZ(t[t[t[A>>2]>>2]>>2]|0)|0)|0;hm(e,78181)|0;hm(e,iZ(t[(t[t[A>>2]>>2]|0)+4>>2]|0)|0)|0;hm(e,78191)|0;hm(e,iZ(t[(t[t[A>>2]>>2]|0)+8>>2]|0)|0)|0;hm(e,78194)|0;return}function UI(e){e=e|0;var A=0,r=0,a=0,n=0,f=0,l=0;l=h;h=h+32|0;f=l+24|0;n=l+16|0;a=l+8|0;r=l;A=t[e+16>>2]|0;t[46727]=~~(+c[e+232>>3]-+c[e+216>>3]);t[46726]=~~(+c[e+224>>3]-+c[e+208>>3]);hm(e,76840)|0;hm(e,76847)|0;A=Mk(t[A+8>>2]|0)|0;if(i[A>>0]|0){hm(e,76916)|0;hm(e,iZ(A)|0)|0;hm(e,76924)|0}t[r>>2]=P(t[e+168>>2]|0,t[e+164>>2]|0)|0;mm(e,76933,r);hm(e,76953)|0;hm(e,76988)|0;hm(e,77016)|0;hm(e,77022)|0;hm(e,77065)|0;hm(e,77106)|0;hm(e,77125)|0;hm(e,77142)|0;hm(e,77190)|0;hm(e,77243)|0;hm(e,77319)|0;hm(e,77395)|0;hm(e,77404)|0;hm(e,77427)|0;hm(e,77454)|0;hm(e,77507)|0;hm(e,77529)|0;hm(e,77574)|0;hm(e,77586)|0;hm(e,77596)|0;hm(e,77622)|0;hm(e,77507)|0;hm(e,77674)|0;hm(e,77574)|0;hm(e,77586)|0;hm(e,77718)|0;hm(e,77427)|0;hm(e,77454)|0;hm(e,77507)|0;hm(e,77674)|0;hm(e,77574)|0;hm(e,77586)|0;hm(e,77596)|0;hm(e,77622)|0;hm(e,77507)|0;hm(e,77529)|0;hm(e,77574)|0;hm(e,77586)|0;hm(e,77731)|0;hm(e,77739)|0;hm(e,77745)|0;hm(e,77759)|0;hm(e,77767)|0;hm(e,77800)|0;r=(t[46727]|0)+10|0;t[a>>2]=t[46726];t[a+4>>2]=r;mm(e,77877,a);hm(e,77907)|0;hm(e,77916)|0;hm(e,77974)|0;hm(e,77984)|0;hm(e,78049)|0;a=t[46727]|0;t[n>>2]=t[46726];t[n+4>>2]=a;mm(e,78086,n);n=t[46727]|0;t[f>>2]=t[46726];t[f+4>>2]=n;mm(e,78114,f);h=l;return}function TI(e){e=e|0;hm(e,76391)|0;hm(e,76403)|0;hm(e,76411)|0;hm(e,76474)|0;hm(e,76403)|0;hm(e,76519)|0;hm(e,76568)|0;hm(e,76622)|0;hm(e,76403)|0;hm(e,76722)|0;hm(e,76771)|0;hm(e,76403)|0;hm(e,76823)|0;return}function OI(e,A,r,a,n){e=e|0;A=A|0;r=r|0;a=a|0;n=n|0;var f=0,l=0,s=0;s=h;h=h+32|0;l=s+16|0;f=s+8|0;n=s;hm(e,76349)|0;if(A|0?i[A>>0]|0:0){t[n>>2]=iZ(A)|0;mm(e,76352,n)}if(r|0?i[r>>0]|0:0){t[f>>2]=iZ(r)|0;mm(e,76363,f)}if(a|0?i[a>>0]|0:0){t[l>>2]=iZ(a)|0;mm(e,76375,l)}hm(e,76388)|0;h=s;return}function _I(e){e=e|0;hm(e,76343)|0;return}function qI(e,A,r){e=e|0;A=A|0;r=r|0;var a=0,f=0.0,l=0.0,s=0.0,o=0.0,u=0,b=0,w=0,k=0,d=0,v=0,g=0,m=0,p=0,E=0,B=0,y=0,C=0,I=0,Z=0.0;I=h;h=h+112|0;y=I+96|0;C=I+88|0;E=I+80|0;k=I+72|0;p=I+64|0;g=I+56|0;v=I+48|0;d=I+40|0;w=I+24|0;b=I+8|0;u=I;B=t[e+16>>2]|0;switch(i[r+48>>0]|0){case 108:{l=+c[A>>3];o=+c[r+32>>3];break}case 114:{o=+c[r+32>>3];l=+c[A>>3]-o;break}default:{o=+c[r+32>>3];l=+c[A>>3]-o*.5}}a=r+40|0;f=+c[a>>3];m=r+4|0;s=+c[(t[m>>2]|0)+16>>3];if(f>3]=f}Z=l+-8.0;s=+((t[46727]|0)>>>0)-+c[A+8>>3]-f+s*.2+(s<12.0?1.4:2.0);mm(e,76005,u);c[b>>3]=Z;c[b+8>>3]=s;mm(e,75942,b);c[w>>3]=l+8.0+o-Z;c[w+8>>3]=f;mm(e,75966,w);hm(e,76040)|0;hm(e,76074)|0;a=t[m>>2]|0;A=t[a+8>>2]|0;if(A){t[d>>2]=t[A+4>>2];mm(e,76164,d);a=t[A+8>>2]|0;if(a|0){t[v>>2]=a;mm(e,76183,v)}a=t[A+12>>2]|0;if(a|0){t[g>>2]=a;mm(e,76200,g)}a=t[A+16>>2]|0;if(a|0){t[p>>2]=a;mm(e,76218,p)}}else{t[k>>2]=t[a>>2];mm(e,76164,k)}c[E>>3]=+c[(t[m>>2]|0)+16>>3];mm(e,76234,E);a=B+16|0;switch(t[B+48>>2]|0){case 5:{a=t[a>>2]|0;if(N1(a,137314)|0){t[C>>2]=a;mm(e,76254,C)}break}case 1:{B=n[a+1>>0]|0;C=n[a+2>>0]|0;t[y>>2]=n[a>>0];t[y+4>>2]=B;t[y+8>>2]=C;mm(e,76264,y);break}default:ge(138394,75728,438,76285)}hm(e,76298)|0;hm(e,iZ(t[r>>2]|0)|0)|0;hm(e,76309)|0;hm(e,76332)|0;h=I;return}function KI(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0,n=0.0,f=0.0,l=0,s=0.0,o=0.0;i=h;h=h+32|0;a=i+16|0;l=i;hm(e,75906)|0;o=+c[A>>3];f=+c[A+16>>3]-o;s=+c[A+24>>3];n=s-+c[A+8>>3];s=+((t[46727]|0)>>>0)-s;c[l>>3]=o-f;c[l+8>>3]=s;mm(e,75942,l);c[a>>3]=f*2.0;c[a+8>>3]=n*2.0;mm(e,75966,a);fZ(e,r);hm(e,75788)|0;tZ(e);hm(e,75994)|0;h=i;return}function $I(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0.0,n=0,f=0.0,l=0,s=0,o=0,u=0;o=h;h=h+48|0;s=o+24|0;l=o+8|0;n=o;hm(e,75511)|0;u=t[46727]|0;t[n>>2]=t[46726];t[n+4>>2]=u;mm(e,75764,n);fZ(e,i);hm(e,75788)|0;tZ(e);hm(e,75791)|0;n=r+-1|0;i=0;while(1){if((i|0)>=(r|0))break;f=+c[A+(i<<4)>>3];a=+((t[46727]|0)>>>0)-+c[A+(i<<4)+8>>3];if(!i){hm(e,75818)|0;c[l>>3]=f;c[l+8>>3]=a;mm(e,75884,l);hm(e,75895)|0}else{c[s>>3]=f;c[s+8>>3]=a;mm(e,75884,s)}if((i|0)==(n|0))hm(e,75898)|0;i=i+1|0}hm(e,75627)|0;h=o;return}function eZ(e,A,r,i,a,n){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;n=n|0;var f=0;a=h;h=h+16|0;i=a;hm(e,75511)|0;f=t[46727]|0;t[i>>2]=t[46726];t[i+4>>2]=f;mm(e,75764,i);fZ(e,n);hm(e,75788)|0;tZ(e);hm(e,75791)|0;lZ(e,A,r);hm(e,75804)|0;h=a;return}function AZ(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0,n=0,f=0,l=0,s=0,o=0.0;s=h;h=h+48|0;l=s+24|0;f=s+8|0;a=s;hm(e,75511)|0;n=t[46727]|0;t[a>>2]=t[46726];t[a+4>>2]=n;mm(e,75548,a);hm(e,75588)|0;a=r+-1|0;n=A+8|0;i=0;while(1){if((i|0)>=(r|0))break;if(!i){hm(e,75600)|0;o=+((t[46727]|0)>>>0)-+c[n>>3];c[f>>3]=+c[A>>3];c[f+8>>3]=o;mm(e,75604,f);hm(e,75615)|0}else{o=+((t[46727]|0)>>>0)-+c[A+(i<<4)+8>>3];c[l>>3]=+c[A+(i<<4)>>3];c[l+8>>3]=o;mm(e,75604,l)}if((i|0)==(a|0))hm(e,75619)|0;i=i+1|0}hm(e,75623)|0;tZ(e);hm(e,75627)|0;h=s;return}function rZ(e,A){e=e|0;A=A|0;hm(e,75446)|0;hm(e,iZ(A)|0)|0;hm(e,75458)|0;return}function iZ(e){e=e|0;var A=0,r=0,a=0,n=0,f=0,l=0,s=0,c=0,o=0,u=0,b=0,w=0,k=0,d=0,v=0,g=0,m=0;m=h;h=h+16|0;r=m;A=t[46724]|0;if(!A){t[46725]=64;A=$F(64)|0;t[46724]=A}v=r+15|0;d=r+14|0;n=0;k=0;b=0;r=0;a=0;e:while(1){u=(b|0)!=0;c=n;w=e;s=r;A:while(1){if(!w){g=32;break e}r=i[w>>0]|0;if(!(r<<24>>24)){g=32;break e}e=t[46725]|0;if((k|0)>(e+-8|0)){A=e<<1;t[46725]=A;A=AM(t[46724]|0,A)|0;t[46724]=A;A=A+k|0;r=i[w>>0]|0}switch(r<<24>>24){case 60:{r=4;e=102153;g=26;break A}case 62:{r=4;e=102136;g=27;break A}case 38:{g=10;break A}case 45:{r=5;e=102147;l=s;break A}default:{}}if(u&r<<24>>24==32){g=12;break}switch(r<<24>>24){case 34:{r=6;e=102116;g=26;break A}case 39:{r=5;e=102141;g=27;break A}default:{}}if(r<<24>>24<0){l=127;e=0}else{r=1;e=w;g=26;break}while(1){n=l&255;f=r&255;if(n>>>0>=f>>>0)break;r=l&f&255;l=n>>>1;e=e+1|0}if((e|0)<=1){n=C6(s|0,a|0,6)|0;n=d6(n|0,G|0,r&255|0,0)|0;a=G;o=c+-1|0;if((c|0)>1){e=o;r=n}else{g=21;break}}else{e=e+-1|0;r=r&255;a=0}c=e;w=w+1|0;s=r}if((g|0)==10){g=0;e=(aZ(w)|0)==0;r=e?5:1;e=e?102130:w;l=s}else if((g|0)==12){g=0;e=(i[b>>0]|0)==32;r=e?6:1;e=e?102123:w;l=s}else if((g|0)==21){g=0;i[v>>0]=59;r=3;f=d;l=n;s=a;while(1){e=E6(l|0,s|0,10,0)|0;n=f+-1|0;i[f>>0]=e|48;e=l;l=p6(l|0,s|0,10,0)|0;a=s;s=G;b=r;r=r+1|0;if((b|0)>11){g=23;break e}if(!(a>>>0>0|(a|0)==0&e>>>0>9))break;else f=n}e=f+-2|0;i[n>>0]=35;i[e>>0]=38;c=o;a=s}else if((g|0)==26){g=0;l=s}else if((g|0)==27){g=0;l=s}f=A+r|0;n=r;while(1){if(!n)break;i[A>>0]=i[e>>0]|0;n=n+-1|0;e=e+1|0;A=A+1|0}n=c;e=w+1|0;k=r+k|0;b=w;A=f;r=l}if((g|0)==23){G3(75464,46,1,t[15712]|0)|0;Ue(1)}else if((g|0)==32){i[A>>0]=0;h=m;return t[46724]|0}return 0}function aZ(e){e=e|0;var A=0,r=0;r=e+1|0;A=i[r>>0]|0;e:do{if(A<<24>>24==35){r=e+2|0;A=i[r>>0]|0;switch(A<<24>>24){case 88:case 120:break;default:{e=r;while(1){r=e+1|0;if((A+-48&255)>=10)break e;e=r;A=i[r>>0]|0}}}r=e+3|0;while(1){A=i[r>>0]|0;if((A+-48&255)>=10)switch(A<<24>>24){case 65:case 66:case 67:case 68:case 69:case 70:case 97:case 98:case 99:case 100:case 101:case 102:break;default:break e}r=r+1|0}}else while(1){e=r+1|0;if(((A&-33)+-65&255)>=26)break e;r=e;A=i[e>>0]|0}}while(0);return A<<24>>24==59|0}function tZ(e){e=e|0;var A=0.0,r=0,i=0,a=0,n=0,f=0,l=0,s=0;s=h;h=h+48|0;r=s+8|0;l=s;f=t[e+16>>2]|0;hm(e,75639)|0;i=r;a=f+16|0;n=i+40|0;do{t[i>>2]=t[a>>2];i=i+4|0;a=a+4|0}while((i|0)<(n|0));nZ(e,r);A=+c[f+152>>3];if(A!=1.0){c[l>>3]=A;mm(e,75657,l)}switch(t[f+144>>2]|0){case 1:{hm(e,75674)|0;break}case 2:{hm(e,75692)|0;break}default:{}}hm(e,75709)|0;h=s;return}function nZ(e,A){e=e|0;A=A|0;var r=0,a=0,f=0,l=0;a=h;h=h+16|0;r=a;e:do{switch(t[A+32>>2]|0){case 5:{hm(e,t[A>>2]|0)|0;break}case 1:if(!(i[A+3>>0]|0)){hm(e,135709)|0;break e}else{l=n[A+1>>0]|0;f=n[A+2>>0]|0;t[r>>2]=n[A>>0];t[r+4>>2]=l;t[r+8>>2]=f;mm(e,75714,r);break e}default:ge(138394,75728,94,75748)}}while(0);h=a;return}function fZ(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0;n=h;h=h+48|0;a=n;if(!A)hm(e,75867)|0;else{r=t[e+16>>2]|0;hm(e,75837)|0;A=a;r=r+56|0;i=A+40|0;do{t[A>>2]=t[r>>2];A=A+4|0;r=r+4|0}while((A|0)<(i|0));nZ(e,a);hm(e,75864)|0}h=n;return}function lZ(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0,n=0,f=0,l=0.0,s=0.0;f=h;h=h+32|0;n=f;i=75818;a=0;while(1){if((a|0)>=(r|0))break;s=+c[A+(a<<4)>>3];l=+((t[46727]|0)>>>0)-+c[A+(a<<4)+8>>3];t[n>>2]=i;c[n+8>>3]=s;c[n+16>>3]=l;mm(e,75821,n);i=(a|0)==0?75834:195059;a=a+1|0}hm(e,98744)|0;h=f;return}function sZ(e){e=e|0;var A=0,r=0,i=0;A=h;h=h+16|0;r=A+8|0;i=A;hm(e,80451)|0;hm(e,80466)|0;hm(e,80505)|0;hm(e,80554)|0;t[i>>2]=137314;t[i+4>>2]=80642;mm(e,80623,i);t[r>>2]=137198;t[r+4>>2]=80648;mm(e,80623,r);h=A;return}function cZ(e){e=e|0;var A=0,r=0,i=0.0,a=0.0,n=0.0,f=0.0,l=0;A=h;h=h+64|0;r=A+8|0;l=A;t[l>>2]=Mk(t[(t[e+16>>2]|0)+8>>2]|0)|0;mm(e,79404,l);f=+c[e+368>>3]*.5*+c[e+488>>3];n=+c[e+376>>3]*.5*+c[e+496>>3];a=+N(+(f*2.0000000949949026e-03))*180.0*.6366197723675814;i=+N(+(n*2.0000000949949026e-03))*180.0*.6366197723675814;c[r>>3]=f;c[r+8>>3]=n;c[r+16>>3]=-500.0;c[r+24>>3]=f;c[r+32>>3]=n;c[r+40>>3]=0.0;c[r+48>>3]=(a>i?a:i)*1.2;mm(e,79426,r);hm(e,79573)|0;hm(e,80403)|0;h=A;return}function oZ(e){e=e|0;hm(e,79387)|0;return}function uZ(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0,n=0;a=h;h=h+16|0;n=a;t[n>>2]=A;t[n+4>>2]=r;t[n+8>>2]=i;mm(e,79357,n);s[46728]=+(P(r,-10)|0);h=a;return}function bZ(e){e=e|0;hm(e,79340)|0;return}function hZ(e){e=e|0;hm(e,79322)|0;return}function wZ(e){e=e|0;hm(e,79306)|0;return}function kZ(e){e=e|0;hm(e,79285)|0;s[46728]=+s[46728]+-2.0;return}function dZ(e){e=e|0;hm(e,79266)|0;return}function vZ(e){e=e|0;var A=0,r=0;A=h;h=h+16|0;r=A;t[r>>2]=Mk(t[(t[e+16>>2]|0)+8>>2]|0)|0;mm(e,79244,r);h=A;return}function gZ(e){e=e|0;hm(e,79228)|0;return}function mZ(e){e=e|0;hm(e,79210)|0;s[46728]=+s[46728]+-5.0;return}function pZ(e){e=e|0;hm(e,79194)|0;s[46728]=+s[46728]+5.0;return}function EZ(e,A,r){e=e|0;A=A|0;r=r|0;var a=0.0,n=0,f=0,l=0,o=0,u=0,b=0,w=0,k=0,d=0,v=0.0,g=0.0,m=0.0;d=h;h=h+144|0;b=d+104|0;k=d+56|0;o=d+32|0;f=d+24|0;u=d;w=r+4|0;n=t[w>>2]|0;a=+c[n+16>>3];n=t[n>>2]|0;t[u>>2]=t[r>>2];c[u+8>>3]=a;t[u+16>>2]=n;mm(e,79040,u);s[46729]=+s[46728]+-9.0;switch(i[r+48>>0]|0){case 108:{a=+c[A>>3];break}case 114:{n=A;a=+c[A>>3]-+c[r+32>>3];l=5;break}default:{n=A;a=+c[A>>3]-+c[r+32>>3]*.5;l=5}}if((l|0)==5)c[n>>3]=a;m=+c[e+488>>3];g=(+c[e+504>>3]+a)*m;v=(+c[e+512>>3]+ +c[A+8>>3])*+c[e+496>>3];c[f>>3]=+c[(t[w>>2]|0)+16>>3]*m;u=GZ(e,79092,f)|0;a=+(t[e+360>>2]|0);c[o>>3]=0.0;c[o+8>>3]=0.0;c[o+16>>3]=a;n=GZ(e,78309,o)|0;a=+s[46729];c[b>>3]=g;c[b+8>>3]=v;c[b+16>>3]=a;A=GZ(e,78341,b)|0;f=b;l=(t[e+16>>2]|0)+16|0;o=f+40|0;do{t[f>>2]=t[l>>2];f=f+4|0;l=l+4|0}while((f|0)<(o|0));b=LZ(e,b,0.0)|0;r=t[r>>2]|0;t[k>>2]=t[t[w>>2]>>2];c[k+8>>3]=.25;c[k+16>>3]=0.0;t[k+24>>2]=r;t[k+28>>2]=79179;t[k+32>>2]=u;t[k+36>>2]=n;t[k+40>>2]=A;t[k+44>>2]=b;k=GZ(e,79104,k)|0;hm(e,k)|0;G2(k);G2(n);G2(b);G2(A);G2(u);h=d;return}function BZ(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0,n=0.0,f=0.0,l=0.0,o=0,u=0,b=0,w=0.0,k=0.0,d=0,v=0,g=0,m=0,p=0,E=0,B=0,y=0,C=0,I=0.0;C=h;h=h+240|0;B=C+192|0;y=C+152|0;g=C+128|0;d=C+104|0;b=C+80|0;u=C+48|0;i=C+24|0;o=C;hm(e,78917)|0;s[46729]=+s[46728]+-6.0;n=+c[A>>3];f=+c[e+488>>3];w=(+c[e+504>>3]+n)*f;I=+c[A+8>>3];l=+c[e+496>>3];k=(+c[e+512>>3]+I)*l;f=(+c[A+16>>3]-n)*f;l=(+c[A+24>>3]-I)*l;v=e+16|0;I=l+f;n=+c[(t[v>>2]|0)+152>>3]/I*2.5;c[o>>3]=f;c[o+8>>3]=I*.25;c[o+16>>3]=l;A=GZ(e,78277,o)|0;o=e+360|0;I=+(t[o>>2]|0);c[i>>3]=90.0;c[i+8>>3]=0.0;c[i+16>>3]=I;i=GZ(e,78309,i)|0;I=+s[46729];c[B>>3]=w;c[B+8>>3]=k;c[B+16>>3]=I;a=GZ(e,78341,B)|0;m=B;p=(t[v>>2]|0)+16|0;E=m+40|0;do{t[m>>2]=t[p>>2];m=m+4|0;p=p+4|0}while((m|0)<(E|0));p=LZ(e,B,0.0)|0;c[u>>3]=1.0;c[u+8>>3]=n;t[u+16>>2]=A;t[u+20>>2]=i;t[u+24>>2]=a;t[u+28>>2]=p;E=GZ(e,78932,u)|0;hm(e,E)|0;G2(A);G2(i);G2(a);G2(p);G2(E);if(r|0){c[b>>3]=f;c[b+8>>3]=l;c[b+16>>3]=1.0;a=GZ(e,78277,b)|0;I=+(t[o>>2]|0);c[d>>3]=0.0;c[d+8>>3]=0.0;c[d+16>>3]=I;i=GZ(e,78309,d)|0;I=+s[46729];c[g>>3]=w;c[g+8>>3]=k;c[g+16>>3]=I;A=GZ(e,78341,g)|0;m=B;p=(t[v>>2]|0)+56|0;E=m+40|0;do{t[m>>2]=t[p>>2];m=m+4|0;p=p+4|0}while((m|0)<(E|0));B=LZ(e,B,0.0)|0;c[y>>3]=0.0;c[y+8>>3]=0.0;c[y+16>>3]=0.0;t[y+24>>2]=a;t[y+28>>2]=i;t[y+32>>2]=A;t[y+36>>2]=B;y=GZ(e,78978,y)|0;hm(e,y)|0;G2(a);G2(i);G2(A);G2(B);G2(y)}h=C;return}function yZ(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0,n=0,f=0,l=0,o=0,u=0,b=0,w=0,k=0,d=0,v=0,g=0,m=0,p=0,E=0,B=0,y=0,C=0,I=0,Z=0,G=0,L=0,Q=0,D=0,z=0,W=0,Y=0,F=0,M=0,V=0.0,N=0,R=0.0;M=h;h=h+336|0;Z=M+296|0;F=M+288|0;Y=M+272|0;W=M+264|0;z=M+240|0;L=M+232|0;I=M+208|0;C=M+184|0;E=M+160|0;p=M+152|0;m=M+136|0;g=M+128|0;v=M+96|0;d=M+88|0;k=M+56|0;a=M+48|0;o=M+24|0;l=M;hm(e,78782)|0;s[46729]=+s[46728]+-2.0;b=e+488|0;w=e+496|0;V=+c[w>>3];c[l>>3]=+c[b>>3];c[l+8>>3]=V;c[l+16>>3]=1.0;l=GZ(e,78277,l)|0;y=e+360|0;V=+(t[y>>2]|0);c[o>>3]=0.0;c[o+8>>3]=0.0;c[o+16>>3]=V;o=GZ(e,78309,o)|0;V=+s[46729]+-2.0;c[Z>>3]=0.0;c[Z+8>>3]=0.0;c[Z+16>>3]=V;u=GZ(e,78341,Z)|0;G=e+16|0;n=Z;f=(t[G>>2]|0)+16|0;B=n+40|0;do{t[n>>2]=t[f>>2];n=n+4|0;f=f+4|0}while((n|0)<(B|0));f=LZ(e,Z,0.0)|0;t[a>>2]=78404;t[a+4>>2]=r+1;Q=e+504|0;D=e+512|0;n=0;a=GZ(e,78373,a)|0;while(1){if((n|0)>=(r|0))break;R=+c[D>>3]+ +c[A+(n<<4)+8>>3];V=+c[(t[G>>2]|0)+152>>3];c[k>>3]=+c[Q>>3]+ +c[A+(n<<4)>>3];c[k+8>>3]=R;c[k+16>>3]=0.0;c[k+24>>3]=V;N=GZ(e,78418,k)|0;t[d>>2]=a;t[d+4>>2]=N;B=GZ(e,78447,d)|0;G2(N);G2(a);n=n+1|0;a=B}V=+c[D>>3]+ +c[A+8>>3];R=+c[(t[G>>2]|0)+152>>3];c[v>>3]=+c[Q>>3]+ +c[A>>3];c[v+8>>3]=V;c[v+16>>3]=0.0;c[v+24>>3]=R;B=GZ(e,78418,v)|0;t[g>>2]=a;t[g+4>>2]=B;N=GZ(e,78447,g)|0;G2(B);G2(a);t[m>>2]=l;t[m+4>>2]=o;t[m+8>>2]=u;t[m+12>>2]=f;B=GZ(e,78797,m)|0;t[p>>2]=N;t[p+4>>2]=B;N=GZ(e,78502,p)|0;G2(B);hm(e,N)|0;G2(l);G2(o);G2(u);G2(f);G2(N);if(i|0){R=+c[w>>3];c[E>>3]=+c[b>>3];c[E+8>>3]=R;c[E+16>>3]=1.0;u=GZ(e,78277,E)|0;R=+(t[y>>2]|0);c[C>>3]=0.0;c[C+8>>3]=0.0;c[C+16>>3]=R;o=GZ(e,78309,C)|0;R=+s[46729]+-2.0;c[I>>3]=0.0;c[I+8>>3]=0.0;c[I+16>>3]=R;l=GZ(e,78341,I)|0;n=Z;f=(t[G>>2]|0)+56|0;B=n+40|0;do{t[n>>2]=t[f>>2];n=n+4|0;f=f+4|0}while((n|0)<(B|0));f=LZ(e,Z,.25)|0;t[L>>2]=r;n=0;a=GZ(e,78842,L)|0;while(1){if((n|0)>=(r|0))break;R=+c[D>>3]+ +c[A+(n<<4)+8>>3];c[z>>3]=+c[Q>>3]+ +c[A+(n<<4)>>3];c[z+8>>3]=R;c[z+16>>3]=0.0;L=GZ(e,78857,z)|0;t[W>>2]=a;t[W+4>>2]=L;N=GZ(e,78879,W)|0;G2(L);G2(a);n=n+1|0;a=N}t[Y>>2]=u;t[Y+4>>2]=o;t[Y+8>>2]=l;t[Y+12>>2]=f;Y=GZ(e,78889,Y)|0;t[F>>2]=a;t[F+4>>2]=Y;N=GZ(e,78502,F)|0;G2(Y);hm(e,N)|0;G2(u);G2(o);G2(l);G2(f);G2(N)}h=M;return}function CZ(e,A,r,i,a,n){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;n=n|0;var f=0,l=0,o=0,u=0,b=0,w=0,k=0,d=0,v=0,g=0,m=0,p=0,E=0,B=0,y=0,C=0,I=0,Z=0,G=0.0,L=0.0;Z=h;h=h+208|0;i=Z+160|0;I=Z+152|0;C=Z+136|0;y=Z+128|0;B=Z+96|0;E=Z+88|0;p=Z+56|0;l=Z+48|0;v=Z+24|0;d=Z;hm(e,78709)|0;s[46729]=+s[46728]+-4.0;G=+c[e+496>>3];c[d>>3]=+c[e+488>>3];c[d+8>>3]=G;c[d+16>>3]=1.0;d=GZ(e,78277,d)|0;G=+(t[e+360>>2]|0);c[v>>3]=0.0;c[v+8>>3]=0.0;c[v+16>>3]=G;v=GZ(e,78309,v)|0;G=+s[46729]+-2.0;c[i>>3]=0.0;c[i+8>>3]=0.0;c[i+16>>3]=G;g=GZ(e,78341,i)|0;m=e+16|0;a=i;n=(t[m>>2]|0)+56|0;f=a+40|0;do{t[a>>2]=t[n>>2];a=a+4|0;n=n+4|0}while((a|0)<(f|0));u=LZ(e,i,0.0)|0;t[l>>2]=78723;t[l+4>>2]=r+2;b=e+504|0;w=e+512|0;k=r+-1|0;o=0;i=GZ(e,78373,l)|0;while(1){if((o|0)>=(r|0))break;a=A+(o<<4)|0;n=A+(o<<4)+8|0;L=+c[w>>3]+ +c[n>>3];G=+c[(t[m>>2]|0)+152>>3];c[p>>3]=+c[b>>3]+ +c[a>>3];c[p+8>>3]=L;c[p+16>>3]=0.0;c[p+24>>3]=G;l=GZ(e,78418,p)|0;t[E>>2]=i;t[E+4>>2]=l;f=GZ(e,78447,E)|0;G2(l);G2(i);if((o|0)==0|(o|0)==(k|0)){G=+c[w>>3]+ +c[n>>3];L=+c[(t[m>>2]|0)+152>>3];c[B>>3]=+c[b>>3]+ +c[a>>3];c[B+8>>3]=G;c[B+16>>3]=0.0;c[B+24>>3]=L;l=GZ(e,78418,B)|0;t[y>>2]=f;t[y+4>>2]=l;i=GZ(e,78447,y)|0;G2(l);G2(f)}else i=f;o=o+1|0}t[C>>2]=d;t[C+4>>2]=v;t[C+8>>2]=g;t[C+12>>2]=u;A=GZ(e,78732,C)|0;t[I>>2]=i;t[I+4>>2]=A;r=GZ(e,78502,I)|0;G2(A);hm(e,r)|0;G2(d);G2(v);G2(g);G2(u);G2(r);h=Z;return}function IZ(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0,n=0,f=0,l=0,o=0,u=0,b=0,w=0,k=0,d=0,v=0,g=0,m=0,p=0,E=0.0,B=0,y=0.0;p=h;h=h+160|0;i=p+120|0;m=p+112|0;g=p+96|0;v=p+88|0;d=p+56|0;o=p+48|0;u=p+24|0;k=p;hm(e,78261)|0;s[46729]=+s[46728]+-6.0;E=+c[e+496>>3];c[k>>3]=+c[e+488>>3];c[k+8>>3]=E;c[k+16>>3]=1.0;k=GZ(e,78277,k)|0;E=+(t[e+360>>2]|0);c[u>>3]=0.0;c[u+8>>3]=0.0;c[u+16>>3]=E;u=GZ(e,78309,u)|0;E=+s[46729];c[i>>3]=0.0;c[i+8>>3]=0.0;c[i+16>>3]=E;b=GZ(e,78341,i)|0;w=e+16|0;a=i;n=(t[w>>2]|0)+16|0;f=a+40|0;do{t[a>>2]=t[n>>2];a=a+4|0;n=n+4|0}while((a|0)<(f|0));n=LZ(e,i,0.0)|0;t[o>>2]=78404;t[o+4>>2]=r;f=e+504|0;l=e+512|0;a=0;i=GZ(e,78373,o)|0;while(1){if((a|0)>=(r|0))break;y=+c[l>>3]+ +c[A+(a<<4)+8>>3];E=+c[(t[w>>2]|0)+152>>3];c[d>>3]=+c[f>>3]+ +c[A+(a<<4)>>3];c[d+8>>3]=y;c[d+16>>3]=0.0;c[d+24>>3]=E;B=GZ(e,78418,d)|0;t[v>>2]=i;t[v+4>>2]=B;o=GZ(e,78447,v)|0;G2(B);G2(i);a=a+1|0;i=o}t[g>>2]=k;t[g+4>>2]=u;t[g+8>>2]=b;t[g+12>>2]=n;g=GZ(e,78456,g)|0;t[m>>2]=i;t[m+4>>2]=g;B=GZ(e,78502,m)|0;G2(g);hm(e,B)|0;G2(k);G2(u);G2(b);G2(n);G2(B);h=p;return}function ZZ(e,A){e=e|0;A=A|0;var r=0,i=0;r=h;h=h+16|0;i=r;t[i>>2]=A;mm(e,78242,i);h=r;return}function GZ(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0,n=0,f=0,l=0;l=h;h=h+1056|0;f=l;i=l+24|0;a=l+8|0;t[a>>2]=r;n=h4(i,1024,A,a)|0;do{if((n|0)>=0)if((n|0)>1023){e=Z2(n+1|0)|0;t[a>>2]=r;O4(e,A,a)|0;break}else{e=o3(i)|0;break}else{e=t[(t[e+12>>2]|0)+16>>2]|0;t[f>>2]=A1(t[(R2()|0)>>2]|0)|0;M5[e&63](78687,f);e=o3(195059)|0}}while(0);h=l;return e|0}function LZ(e,A,r){e=e|0;A=A|0;r=+r;var i=0,a=0,f=0,l=0,s=0,o=0,u=0,b=0,w=0,k=0,d=0.0,v=0.0;k=h;h=h+112|0;b=k+104|0;l=k+96|0;f=k+64|0;u=k+48|0;w=k+32|0;o=k+16|0;s=k;a=t[A+32>>2]|0;e:do{switch(a|0){case 5:{i=t[A>>2]|0;if(!(e1(i,136302)|0)){t[s>>2]=78524;c[s+8>>3]=r;i=GZ(e,78507,s)|0;break e}if(!(e1(i,133432)|0)){t[o>>2]=78528;c[o+8>>3]=r;i=GZ(e,78507,o)|0;break e}if(!(e1(i,131431)|0)){t[w>>2]=78534;c[w+8>>3]=r;i=GZ(e,78507,w)|0;break e}else{t[u>>2]=i;c[u+8>>3]=r;i=GZ(e,78507,u)|0;break e}}case 1:{v=+(n[A+1>>0]|0)*.00390625;d=+(n[A+2>>0]|0)*.00390625;c[f>>3]=+(n[A>>0]|0)*.00390625;c[f+8>>3]=v;c[f+16>>3]=d;c[f+24>>3]=r;i=GZ(e,78539,f)|0;break}default:{w=t[15712]|0;u=t[A>>2]|0;t[l>>2]=a;t[l+4>>2]=u;a3(w,78578,l)|0;ge(138394,78628,436,78648)}}}while(0);t[b>>2]=i;w=GZ(e,78665,b)|0;G2(i);h=k;return w|0}function QZ(e){e=e|0;var A=0,r=0,i=0,a=0,n=0,f=0,l=0,s=0;A=h;h=h+32|0;r=A+24|0;i=A+16|0;n=A;a=t[e+16>>2]|0;f=t[t[e+12>>2]>>2]|0;s=t[f>>2]|0;l=t[f+4>>2]|0;f=t[f+8>>2]|0;t[n>>2]=81094;t[n+4>>2]=s;t[n+8>>2]=l;t[n+12>>2]=f;mm(e,83704,n);a=Mk(t[a+8>>2]|0)|0;t[i>>2]=81094;t[i+4>>2]=a;mm(e,83736,i);t[r>>2]=81094;mm(e,83750,r);h=A;return}function DZ(e){e=e|0;var A=0,r=0;A=h;h=h+16|0;r=A;t[r>>2]=81094;mm(e,83652,r);h=A;return}function zZ(e){e=e|0;var A=0.0,r=0.0,i=0.0,a=0,n=0,f=0,l=0,s=0,o=0,u=0,b=0,w=0,k=0,d=0,v=0,g=0,m=0,p=0,E=0,B=0,y=0,C=0,I=0,Z=0,G=0,L=0,Q=0,D=0,W=0,Y=0,F=0,M=0,V=0,N=0,R=0,x=0,J=0,H=0,P=0,X=0,S=0,j=0,U=0,T=0;T=h;h=h+304|0;U=T+296|0;j=T+288|0;S=T+272|0;P=T+264|0;H=T+256|0;J=T+248|0;x=T+240|0;R=T+232|0;N=T+224|0;V=T+216|0;M=T+208|0;F=T+200|0;Y=T+192|0;W=T+184|0;D=T+176|0;Q=T+168|0;L=T+160|0;G=T+152|0;I=T+144|0;C=T+136|0;y=T+128|0;B=T+120|0;E=T+112|0;p=T+104|0;m=T+96|0;g=T+88|0;v=T+80|0;d=T+72|0;k=T+64|0;w=T+56|0;b=T+48|0;X=T+40|0;Z=T+24|0;u=T+16|0;o=T;n=t[e+456>>2]|0;f=t[e+460>>2]|0;l=t[e+464>>2]|0;s=t[e+468>>2]|0;a=e+360|0;e:do{if(t[4025]|0){switch(t[a>>2]|0){case 90:case 0:break e;default:{}}XZ();t[4025]=0}}while(0);i=(+(s|0)-+(f|0))*.013888888888888888;A=(+(l|0)-+(n|0))*.013888888888888888;s=(t[a>>2]|0)==90;r=s?i:A;i=s?A:i;c[o>>3]=r;c[o+8>>3]=i;mm(e,81281,o);t[u>>2]=81094;mm(e,81296,u);if(r>0.0){A=+l1(r);c[19214]=A;A=A+3.0-+(~~A|0)}else A=3.0;A=+z(10.0,+A);c[19214]=A;c[Z>>3]=A;c[Z+8>>3]=A;mm(e,81465,Z);t[X>>2]=81094;mm(e,81500,X);t[b>>2]=81094;mm(e,81558,b);t[w>>2]=81094;mm(e,81618,w);t[k>>2]=81094;mm(e,81667,k);t[d>>2]=81094;mm(e,81706,d);t[v>>2]=81094;mm(e,81757,v);t[g>>2]=81094;mm(e,81819,g);t[m>>2]=81094;mm(e,81929,m);t[p>>2]=81094;mm(e,82020,p);t[E>>2]=81094;mm(e,82074,E);t[B>>2]=81094;mm(e,82143,B);mm(e,82179,y);t[C>>2]=81094;mm(e,82304,C);t[I>>2]=81094;mm(e,82333,I);mm(e,82373,G);t[L>>2]=81094;mm(e,82466,L);t[Q>>2]=81094;mm(e,82525,Q);t[D>>2]=81094;mm(e,82606,D);mm(e,82676,W);t[Y>>2]=81094;mm(e,82765,Y);t[F>>2]=81094;mm(e,82870,F);t[M>>2]=81094;mm(e,82946,M);t[V>>2]=81094;mm(e,82985,V);t[N>>2]=81094;mm(e,83084,N);t[R>>2]=81094;mm(e,83130,R);mm(e,83219,x);t[J>>2]=81094;mm(e,83260,J);t[H>>2]=81094;mm(e,83343,H);t[P>>2]=81094;mm(e,83444,P);c[S>>3]=i;c[S+8>>3]=r;mm(e,83508,S);mm(e,83536,j);mm(e,83544,U);h=T;return}function WZ(e){e=e|0;var A=0;A=h;h=h+16|0;mm(e,81274,A);h=A;return}function YZ(e,A,r){e=e|0;A=A|0;r=r|0;var a=0,n=0.0,f=0.0,l=0.0,s=0,o=0,u=0.0,b=0,w=0,k=0,d=0;d=h;h=h+48|0;k=d+24|0;w=d+8|0;b=d;switch(i[r+48>>0]|0){case 108:{s=A;f=+c[r+32>>3];l=+c[A>>3];break}case 114:{f=+c[r+32>>3];n=f;a=5;break}default:{f=+c[r+32>>3];n=f*.5;a=5}}if((a|0)==5){l=+c[A>>3]-n;c[A>>3]=l;s=A}o=r+4|0;a=t[o>>2]|0;n=+c[a+16>>3];A=A+8|0;u=+c[A>>3]+n*.004629629629629629;c[A>>3]=u;f=l+f*.006944444444444444;c[s>>3]=f;a=t[a>>2]|0;do{if(a){A=t[46730]|0;if(A|0?(e1(A,a)|0)==0:0)break;t[b>>2]=HZ(a)|0;mm(e,81173,b);b=t[o>>2]|0;t[46730]=t[b>>2];n=+c[b+16>>3]}}while(0);a=~~n;a=(a|0)>1?a:1;if((a|0)!=(t[46731]|0)){l=+c[19214];t[w>>2]=a;c[w+8>>3]=l;mm(e,81181,w);t[46731]=a}t[k>>2]=PZ(t[r>>2]|0)|0;c[k+8>>3]=f;c[k+16>>3]=u;mm(e,81202,k);h=d;return}function FZ(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0,n=0.0,f=0.0,l=0.0,s=0.0;i=h;h=h+48|0;a=i;f=+c[A>>3];s=(+c[A+16>>3]-f)*.027777777777777776;n=+c[A+8>>3];l=(+c[A+24>>3]-n)*.027777777777777776;t[a>>2]=1;t[a+4>>2]=r|0?81115:195059;c[a+8>>3]=s;c[a+16>>3]=l;c[a+24>>3]=f*.013888888888888888;c[a+32>>3]=n*.013888888888888888;mm(e,81121,a);h=i;return}function MZ(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;i=h;h=h+16|0;xZ(t[e+16>>2]|0,i+8|0,i);JZ(e,A,r,1);h=i;return}function VZ(e,A,r,i,a,n){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;n=n|0;var f=0,l=0,s=0,o=0,u=0,b=0,w=0,k=0,d=0,v=0,g=0,m=0.0,p=0.0,E=0;g=h;h=h+128|0;v=g+112|0;k=g+104|0;w=g+96|0;i=g+88|0;u=g+16|0;b=g;s=t[e+16>>2]|0;l=Z2((r*140|0)+140|0)|0;xZ(s,g+116|0,g+80|0);p=+c[A>>3];s=u+48|0;c[s>>3]=p;m=+c[A+8>>3];c[u+56>>3]=m;t[i>>2]=~~(p+(p>=0.0?.5:-.5));t[i+4>>2]=~~(m+(m>=0.0?.5:-.5));f=b+8|0;i=l+(T4(l,81099,i)|0)|0;d=1;n=0;while(1){o=n+3|0;if((o|0)>=(r|0))break;t[u>>2]=t[s>>2];t[u+4>>2]=t[s+4>>2];t[u+8>>2]=t[s+8>>2];t[u+12>>2]=t[s+12>>2];a=1;while(1){if((a|0)==4){a=1;break}E=a+n|0;c[u+(a<<4)>>3]=+c[A+(E<<4)>>3];c[u+(a<<4)+8>>3]=+c[A+(E<<4)+8>>3];a=a+1|0}while(1){if((a|0)==7)break;Zx(b,u,3,+(a|0)*.16666666666666666,0,0);m=+c[b>>3];p=+c[f>>3];t[w>>2]=~~(m+(m>=0.0?.5:-.5));t[w+4>>2]=~~(p+(p>=0.0?.5:-.5));a=a+1|0;i=i+(T4(i,81099,w)|0)|0}d=d+6|0;n=o}t[k>>2]=l;mm(e,81106,k);G2(l);a=d+-1|0;i=0;while(1){if((i|0)>=(d|0))break;t[v>>2]=((i|0)%(a|0)|0|0)!=0&1;mm(e,81111,v);i=i+1|0}hm(e,153599)|0;h=g;return}function NZ(e,A,r){e=e|0;A=A|0;r=r|0;var i=0;i=h;h=h+16|0;xZ(t[e+16>>2]|0,i+8|0,i);JZ(e,A,r,0);h=i;return}function RZ(e,A){e=e|0;A=A|0;var r=0,i=0;r=h;h=h+16|0;i=r;t[i>>2]=81094;t[i+4>>2]=A;mm(e,81087,i);h=r;return}function xZ(e,A,r){e=e|0;A=A|0;r=r|0;var i=0.0;switch(t[e+144>>2]|0){case 1:{i=10.0;e=1;break}case 2:{i=10.0;e=2;break}default:{i=0.0;e=0}}t[A>>2]=e;c[r>>3]=i;return}function JZ(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0,n=0,f=0,l=0,s=0.0,o=0.0;l=h;h=h+16|0;f=l+8|0;n=l;a=0;while(1){if((a|0)>=(r|0))break;o=+c[A+(a<<4)>>3];s=+c[A+(a<<4)+8>>3];t[n>>2]=~~(o+(o>=0.0?.5:-.5));t[n+4>>2]=~~(s+(s>=0.0?.5:-.5));mm(e,81099,n);a=a+1|0}if(i|0){s=+c[A>>3];o=+c[A+8>>3];t[f>>2]=~~(s+(s>=0.0?.5:-.5));t[f+4>>2]=~~(o+(o>=0.0?.5:-.5));mm(e,81099,f)}hm(e,153599)|0;h=l;return}function HZ(e){e=e|0;var A=0,r=0,a=0,n=0,f=0;f=h;h=h+16|0;a=f;e:while(1){A=15828;while(1){r=t[A+4>>2]|0;if(!r)break;if(!(e1(r,e)|0)){n=6;break e}A=A+8|0}t[a>>2]=81255;t[a+4>>2]=e;nw(1,81229,a)|0;A=u3(e,45)|0;if(!A){A=81272;break}i[A>>0]=0}h=f;return A|0}function PZ(e){e=e|0;var A=0,r=0,a=0,n=0,f=0,l=0;l=h;h=h+16|0;f=l;A=t[46732]|0;if(!A){t[46733]=64;A=Z2(64)|0;t[46732]=A;r=0}else r=0;while(1){n=e+1|0;a=i[e>>0]|0;if(!(a<<24>>24))break;e=t[46733]|0;if((r|0)>(e+-8|0)){A=e<<1;t[46733]=A;A=Q2(t[46732]|0,A)|0;t[46732]=A;A=A+r|0}if(a<<24>>24<=-1){i[A>>0]=92;t[f>>2]=a&255;T4(A+1|0,81224,f)|0;e=n;A=A+4|0;r=r+4|0;continue}if(a<<24>>24==92){i[A>>0]=92;r=r+1|0;A=A+1|0}i[A>>0]=a;e=n;A=A+1|0;r=r+1|0}i[A>>0]=0;h=l;return t[46732]|0}function XZ(){var e=0,A=0;e=h;h=h+16|0;A=e;t[A>>2]=81255;t[A+4>>2]=91269;nw(0,83634,A)|0;h=e;return}function SZ(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0,n=0.0,f=0.0,l=0,s=0;i=h;h=h+32|0;a=i+8|0;l=i;A=A+8|0;s=t[A>>2]|0;t[l>>2]=s;t[l+4>>2]=s;mm(e,84223,l);f=(+c[r>>3]+ +c[r+16>>3])*.5;n=(+c[r+8>>3]+ +c[r+24>>3])*.5;t[a>>2]=t[A>>2];c[a+8>>3]=f;c[a+16>>3]=n;mm(e,84265,a);h=i;return}function jZ(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0,n=0.0,f=0.0,l=0.0,s=0.0;i=h;h=h+48|0;a=i;f=+c[r>>3];s=+c[r+16>>3]-f;n=+c[r+24>>3];l=n-+c[r+8>>3];n=+(~~(+c[e+232>>3]-+c[e+216>>3])>>>0)-n;t[a>>2]=t[A+8>>2];c[a+8>>3]=s;c[a+16>>3]=l;c[a+24>>3]=f;c[a+32>>3]=n;mm(e,84310,a);hm(e,84402)|0;h=i;return}function UZ(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;return}function TZ(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0.0,n=0.0,f=0,l=0,s=0,o=0,u=0,b=0,w=0,k=0,d=0,v=0,g=0,m=0.0;g=h;h=h+160|0;v=g+152|0;d=g+136|0;k=g+120|0;s=g+112|0;u=g+104|0;o=g+88|0;l=g+72|0;f=g+64|0;b=g;if(!e)ge(111282,84407,212,84426);if(!A)ge(111312,84407,213,84426);w=A+8|0;if(!(t[w>>2]|0))ge(111315,84407,214,84426);if(t[A+52>>2]|0){t[b>>2]=t[r>>2];t[b+4>>2]=t[r+4>>2];t[b+8>>2]=t[r+8>>2];t[b+12>>2]=t[r+12>>2];A=b+32|0;r=r+16|0;t[A>>2]=t[r>>2];t[A+4>>2]=t[r+4>>2];t[A+8>>2]=t[r+8>>2];t[A+12>>2]=t[r+12>>2];a=+c[b>>3];c[b+16>>3]=a;c[b+24>>3]=+c[b+40>>3];c[b+48>>3]=+c[A>>3];n=+c[b+8>>3];c[b+56>>3]=n;if(i<<24>>24){mm(e,84447,f);A=0;while(1){if((A|0)==4)break;m=+c[b+(A<<4)+8>>3];c[l>>3]=+c[b+(A<<4)>>3];c[l+8>>3]=m;mm(e,84450,l);A=A+1|0}c[o>>3]=a;c[o+8>>3]=n;mm(e,84450,o);o=t[w>>2]|0;t[u>>2]=4;t[u+4>>2]=o;mm(e,84457,u)}mm(e,84447,s);A=0;while(1){if((A|0)==4)break;m=+c[b+(A<<4)+8>>3];c[k>>3]=+c[b+(A<<4)>>3];c[k+8>>3]=m;mm(e,84450,k);A=A+1|0}c[d>>3]=a;c[d+8>>3]=n;mm(e,84450,d);d=t[w>>2]|0;t[v>>2]=4;t[v+4>>2]=d;mm(e,84472,v)}h=g;return}function OZ(e,A,r,a){e=e|0;A=A|0;r=r|0;a=a|0;var n=0,f=0,l=0,s=0,o=0,u=0,b=0,w=0.0;b=h;h=h+112|0;u=b+24|0;o=b+16|0;s=b;f=b+28|0;if(!e)ge(111282,84407,153,84488);if(!A)ge(111312,84407,154,84488);if(!(t[A+8>>2]|0))ge(111315,84407,155,84488);l=A+52|0;if(t[l>>2]|0){a=A+60|0;n=t[a>>2]|0;if((n|0)==100)n=18;else{F5[n&127](A);t[l>>2]=0;t[a>>2]=0;t[A+56>>2]=0;n=10}}else n=10;do{if((n|0)==10){if(!((xm(A)|0)<<24>>24))break;a=l6(t[A+20>>2]|0)|0;if((t[A+24>>2]&-2|0)==6){W3(a,f)|0;f=t[f+36>>2]|0;t[A+56>>2]=f;a=S2(0,f,1,1,a,0)|0;t[l>>2]=a;i[A+16>>0]=1}else a=t[l>>2]|0;if(a|0)t[A+60>>2]=100;Jm(A);if(t[l>>2]|0)n=18}}while(0);if((n|0)==18){w=+c[r+8>>3]-+(t[A+36>>2]|0);c[s>>3]=+c[r>>3]-+(t[A+32>>2]|0);c[s+8>>3]=w;mm(e,84506,s);if(!(i[A+16>>0]|0)){t[o>>2]=t[A+12>>2];mm(e,84537,o)}else HV(e,A);mm(e,84552,u)}h=b;return}function _Z(e){e=e|0;P2(t[e+52>>2]|0,t[e+56>>2]|0)|0;return}function qZ(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0,n=0;n=h;h=h+80|0;a=n+48|0;if(!e)ge(111282,84407,121,84562);i=t[e+16>>2]|0;if(!i)ge(99902,84407,123,84562);if(!A)ge(111312,84407,124,84562);r=A+8|0;if(!(t[r>>2]|0))ge(111315,84407,125,84562);if(!(t[i+8>>2]|0))ge(138879,84407,128,84562);else{mm(e,84582,n);mm(e,84591,n+8|0);mm(e,84618,n+16|0);mm(e,84643,n+24|0);mm(e,84672,n+32|0);mm(e,84700,n+40|0);t[a>>2]=t[r>>2];mm(e,84707,a);mm(e,84746,n+56|0);mm(e,111008,n+64|0);h=n;return}}function KZ(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0,n=0,f=0,l=0,s=0,o=0.0;f=h;h=h+128|0;n=f+80|0;a=f;if(!e)ge(111282,84407,97,84751);if(!A)ge(111312,84407,98,84751);i=t[A+8>>2]|0;if(!i)ge(111315,84407,99,84751);else{o=+c[r>>3];l=~~(o+(o>=0.0?.5:-.5));o=+c[r+8>>3];A=~~(o+(o>=0.0?.5:-.5));o=+c[r+16>>3];s=~~(o+(o>=0.0?.5:-.5));o=+c[r+24>>3];r=~~(o+(o>=0.0?.5:-.5));t[a>>2]=2;t[a+4>>2]=5;t[a+8>>2]=0;t[a+12>>2]=0;t[a+16>>2]=0;t[a+20>>2]=-1;t[a+24>>2]=1;t[a+28>>2]=-1;t[a+32>>2]=0;c[a+40>>3]=0.0;t[a+48>>2]=0;t[a+52>>2]=0;t[a+56>>2]=0;t[a+60>>2]=0;t[a+64>>2]=0;t[a+68>>2]=5;t[a+72>>2]=0;t[a+76>>2]=i;mm(e,84770,a);t[n>>2]=l;t[n+4>>2]=A;t[n+8>>2]=l;t[n+12>>2]=r;t[n+16>>2]=s;t[n+20>>2]=r;t[n+24>>2]=s;t[n+28>>2]=A;t[n+32>>2]=l;t[n+36>>2]=A;mm(e,84828,n);h=f;return}}function $Z(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0.0,n=0.0,f=0.0,l=0.0,s=0,o=0,u=0,b=0;b=h;h=h+96|0;u=b+56|0;o=b+32|0;s=b;f=+c[r>>3];l=+c[r+16>>3]-f;a=+c[r+24>>3];n=a-+c[r+8>>3];if(!e)ge(111282,84407,53,84860);if(!A)ge(111312,84407,54,84860);i=A+8|0;if(!(t[i>>2]|0))ge(111315,84407,55,84860);hm(e,84879)|0;hm(e,t[i>>2]|0)|0;i=e+360|0;a=-a;if(!(t[i>>2]|0)){c[u>>3]=l;c[u+8>>3]=n;c[u+16>>3]=f;c[u+24>>3]=a;mm(e,85008,u)}else{c[s>>3]=n;c[s+8>>3]=l;c[s+16>>3]=f;c[s+24>>3]=a;mm(e,84899,s);t[o>>2]=t[i>>2];c[o+8>>3]=f;c[o+16>>3]=a;mm(e,84978,o)}hm(e,85087)|0;h=b;return}function eG(e){e=e|0;var A=0,r=0;A=sd(e)|0;while(1){if(!A)break;AG(A);A=cd(e,A)|0}r=sd(e)|0;while(1){if(!r)break;A=Ow(e,r)|0;while(1){if(!A)break;rG(A);A=qw(e,A)|0}r=cd(e,r)|0}return}function AG(e){e=e|0;var A=0,r=0;Sd(e,137447,304,1)|0;Fx(e);WJ(e,t[(t[(Bd(e)|0)+16>>2]|0)+116>>2]&1);e=e+16|0;t[(t[e>>2]|0)+176>>2]=0;A=KF(20)|0;r=t[e>>2]|0;t[r+172>>2]=A;t[r+184>>2]=0;r=KF(20)|0;A=t[e>>2]|0;t[A+180>>2]=r;t[A+200>>2]=0;A=KF(12)|0;r=t[e>>2]|0;t[r+196>>2]=A;t[r+192>>2]=0;r=KF(12)|0;A=t[e>>2]|0;t[A+188>>2]=r;t[A+208>>2]=0;A=KF(12)|0;e=t[e>>2]|0;t[e+204>>2]=A;t[e+216>>2]=1;return}function rG(e){e=e|0;var A=0,r=0,n=0,f=0,l=0;Sd(e,137460,176,1)|0;Mx(e)|0;f=hx(e,t[47174]|0,1,0)|0;n=e+16|0;t[(t[n>>2]|0)+156>>2]=f;f=dx(t[((t[e>>2]&3|0)==3?e:e+48|0)+40>>2]|0,t[47168]|0,195059)|0;l=dx(t[((t[e>>2]&3|0)==2?e:e+-48|0)+40>>2]|0,t[47168]|0,195059)|0;A=t[n>>2]|0;r=A+154|0;a[r>>1]=1;a[A+168>>1]=1;if((f|0)==(l|0)&(i[f>>0]|0)!=0){a[r>>1]=1e3;l=A+156|0;t[l>>2]=(t[l>>2]|0)*100}if(Kz(e)|0){l=t[n>>2]|0;a[l+154>>1]=0;t[l+156>>2]=0}l=(hx(e,t[47187]|0,0,0)|0)&255;i[(t[n>>2]|0)+152>>0]=l;l=(hx(e,t[47175]|0,1,0)|0)&65535;a[(t[n>>2]|0)+170>>1]=l;return}function iG(e){e=e|0;var A=0,r=0;aG(t[(t[e+16>>2]|0)+192>>2]|0);r=sd(e)|0;while(1){if(!r)break;A=Ow(e,r)|0;while(1){if(!A)break;bJ(A);A=qw(e,A)|0}tG(r);r=cd(e,r)|0}nG(e);return}function aG(e){e=e|0;var A=0,r=0,a=0,n=0;while(1){if(!e)break;a=e+16|0;n=t[(t[a>>2]|0)+164>>2]|0;fG(e);A=t[a>>2]|0;if((i[A+156>>0]|0)!=1){e=n;continue}r=t[A+180>>2]|0;if(r){G2(r);A=t[a>>2]|0}r=t[A+172>>2]|0;if(r){G2(r);A=t[a>>2]|0}G2(A);G2(e);e=n}return}function tG(e){e=e|0;var A=0,r=0,i=0;i=e+16|0;A=t[i>>2]|0;r=t[A+172>>2]|0;if(r){G2(r);A=t[i>>2]|0}r=t[A+180>>2]|0;if(r){G2(r);A=t[i>>2]|0}r=t[A+188>>2]|0;if(r){G2(r);A=t[i>>2]|0}r=t[A+196>>2]|0;if(r){G2(r);A=t[i>>2]|0}r=t[A+204>>2]|0;if(r){G2(r);A=t[i>>2]|0}SF(t[A+104>>2]|0);SF(t[(t[i>>2]|0)+108>>2]|0);A=t[(t[i>>2]|0)+8>>2]|0;if(A|0)F5[t[(t[A+4>>2]|0)+4>>2]&127](e);Ud(e,137447)|0;return}function nG(e){e=e|0;var A=0,r=0,i=0;A=xv(e)|0;while(1){if(!A)break;nG(A);A=Jv(A)|0}if(Sd(e,137483,0,1)|0){i=e+16|0;A=t[i>>2]|0;r=t[A+184>>2]|0;if(r){G2(r);A=t[i>>2]|0}r=t[A+268>>2]|0;if(r){G2(r);A=t[i>>2]|0}r=t[A+216>>2]|0;if(r){G2(r);A=t[i>>2]|0}do{if(t[A+196>>2]|0){r=a[A+236>>1]|0;while(1){if((r|0)>(a[A+238>>1]|0))break;G2(t[(t[A+196>>2]|0)+(r<<6)+12>>2]|0);r=r+1|0;A=t[i>>2]|0}r=t[A+196>>2]|0;if((a[A+236>>1]|0)==-1){G2(r+-64|0);break}else{G2(r);break}}}while(0);if((yd(e)|0)!=(e|0)){SF(t[(t[i>>2]|0)+12>>2]|0);Ud(e,137483)|0}}return}function fG(e){e=e|0;var A=0,r=0,i=0;i=e+16|0;r=t[i>>2]|0;A=t[r+176>>2]|0;while(1){e=A+-1|0;if((A|0)<=0)break;A=t[(t[r+172>>2]|0)+(e<<2)>>2]|0;EL(A);G2(t[A+16>>2]|0);G2(A);A=e;r=t[i>>2]|0}A=t[r+184>>2]|0;while(1){e=A+-1|0;if((A|0)<=0)break;A=t[(t[(t[i>>2]|0)+180>>2]|0)+(e<<2)>>2]|0;EL(A);G2(t[A+16>>2]|0);G2(A);A=e}return}function lG(e){e=e|0;if(gk(e)|0)sG(e);MV(e);return}function sG(e){e=e|0;var A=0,r=0,i=0,a=0,n=0,f=0;f=h;h=h+48|0;n=f+32|0;a=f;A=oE(e,-1,8)|0;r=uE(e,0,a)|0;cE(e,2,8,a)|0;r=(r|0)==0;i=(A|0)<0;if(i&r)cG(e);else{if(r)t[a+16>>2]=3;else A=i?8:A;t[a+8>>2]=A;t[a+20>>2]=0;i=zp(e,n,0)|0;A=t[n>>2]|0;do{if((A|0)==1){cG(e);A=0}else{if(t[(t[(t[e+16>>2]|0)+8>>2]|0)+84>>2]|0){cG(e);A=0;break}t[a+12>>2]=1;r=0;while(1){if((r|0)>=(A|0))break;A=t[i+(r<<2)>>2]|0;oG(A,e);cG(A);r=r+1|0;A=t[n>>2]|0}uG(e);sE(t[n>>2]|0,i,e,a)|0;bG(e);hG(t[n>>2]|0,i,e);A=0}}while(0);while(1){if((A|0)>=(t[n>>2]|0))break;a=i+(A<<2)|0;G2(t[(t[(t[a>>2]|0)+16>>2]|0)+8>>2]|0);nG(t[a>>2]|0);Ed(e,t[a>>2]|0)|0;A=A+1|0}G2(i)}h=f;return}function cG(e){e=e|0;var A=0,r=0,i=0,n=0,f=0,l=0,s=0,c=0,o=0,u=0;o=h;h=h+48|0;c=o+40|0;r=o;l=hx(e,zw(e,0,85102,0)|0,-1,1)|0;DJ(e,10);A=qz(e,r)|0;kG(e,e);eG(e);i=(l|0)==1;n=r+32|0;f=(l|0)==2;l=(l|0)==3;s=r+28|0;r=r+24|0;while(1){VD(e,A);if(i){A=3;break}if(t[n>>2]|0){nw(0,85108,c)|0;t[r>>2]=0;A=0}UL(e,(A|0)!=0&1);if(f){A=7;break}_Q(e,A);if(l){A=9;break}u=(t[s>>2]|0)+-1|0;t[s>>2]=u;if(!((u|0)!=0&(t[r>>2]|0)!=0)){A=11;break}}if((A|0)==3)dG(e,1);else if((A|0)==7)dG(e,2);else if((A|0)==9)dG(e,2);else if((A|0)==11){if(a[(t[e+16>>2]|0)+136>>1]&16)vG(e);Dz(e);EG(e);if((mx(Hw(e,85199)|0)|0)<<24>>24)CW(e)}h=o;return}function oG(e,A){e=e|0;A=A|0;var r=0,a=0;Sd(e,137483,280,1)|0;r=KF(96)|0;e=t[e+16>>2]|0;t[e+8>>2]=r;A=t[A+16>>2]|0;a=t[A+8>>2]|0;c[r>>3]=+c[a>>3];c[r+24>>3]=+c[a+24>>3];t[e+144>>2]=t[A+144>>2];i[e+115>>0]=i[A+115>>0]|0;t[e+116>>2]=t[A+116>>2];t[e+248>>2]=t[A+248>>2];t[e+252>>2]=t[A+252>>2];t[e+244>>2]=t[A+244>>2];return}function uG(e){e=e|0;var A=0,r=0,i=0;A=KF((gk(e)|0)<<4)|0;r=sd(e)|0;while(1){if(!r)break;i=t[r+16>>2]|0;t[i+132>>2]=A;c[A>>3]=+c[i+16>>3]*.013888888888888888;c[A+8>>3]=+c[i+24>>3]*.013888888888888888;A=A+16|0;r=cd(e,r)|0}return}function bG(e){e=e|0;var A=0,r=0,i=0,a=0;i=t[(t[(sd(e)|0)+16>>2]|0)+132>>2]|0;A=i;r=sd(e)|0;while(1){if(!r)break;a=t[r+16>>2]|0;t[a+132>>2]=0;c[a+16>>3]=+c[A>>3]*72.0;c[a+24>>3]=+c[A+8>>3]*72.0;A=A+16|0;r=cd(e,r)|0}G2(i);return}function hG(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0,n=0,f=0,l=0;i=0;a=0;while(1){if((i|0)>=(e|0))break;l=(t[(t[(t[A+(i<<2)>>2]|0)+16>>2]|0)+180>>2]|0)+a|0;i=i+1|0;a=l}l=r+16|0;t[(t[l>>2]|0)+180>>2]=a;n=KF((a<<2)+4|0)|0;t[(t[l>>2]|0)+184>>2]=n;n=0;i=1;while(1){if((n|0)>=(e|0))break;f=(t[A+(n<<2)>>2]|0)+16|0;a=1;while(1){r=t[f>>2]|0;if((a|0)>(t[r+180>>2]|0))break;r=Dp(t[(t[r+184>>2]|0)+(a<<2)>>2]|0)|0;t[(t[(t[l>>2]|0)+184>>2]|0)+(i<<2)>>2]=r;wG(t[(t[(t[f>>2]|0)+184>>2]|0)+(a<<2)>>2]|0,r);a=a+1|0;i=i+1|0}n=n+1|0}return}function wG(e,A){e=e|0;A=A|0;var r=0,a=0,n=0;Sd(A,137483,280,1)|0;n=A+16|0;A=(t[n>>2]|0)+16|0;a=e+16|0;e=(t[a>>2]|0)+16|0;t[A>>2]=t[e>>2];t[A+4>>2]=t[e+4>>2];t[A+8>>2]=t[e+8>>2];t[A+12>>2]=t[e+12>>2];t[A+16>>2]=t[e+16>>2];t[A+20>>2]=t[e+20>>2];t[A+24>>2]=t[e+24>>2];t[A+28>>2]=t[e+28>>2];e=t[a>>2]|0;A=t[n>>2]|0;i[A+275>>0]=i[e+275>>0]|0;A=A+48|0;e=e+48|0;r=A+64|0;do{t[A>>2]=t[e>>2];A=A+4|0;e=e+4|0}while((A|0)<(r|0));e=t[(t[a>>2]|0)+180>>2]|0;t[(t[n>>2]|0)+180>>2]=e;A=KF((e<<2)+4|0)|0;t[(t[n>>2]|0)+184>>2]=A;A=1;while(1){r=t[a>>2]|0;if((A|0)>(e|0))break;r=Dp(t[(t[r+184>>2]|0)+(A<<2)>>2]|0)|0;t[(t[(t[n>>2]|0)+184>>2]|0)+(A<<2)>>2]=r;wG(t[(t[(t[a>>2]|0)+184>>2]|0)+(A<<2)>>2]|0,r);A=A+1|0}a=r+12|0;t[(t[n>>2]|0)+12>>2]=t[a>>2];t[a>>2]=0;return}function kG(e,A){e=e|0;A=A|0;if((yd(e)|0)!=(e|0))Sd(e,137483,280,1)|0;if((e|0)==(A|0))t[(t[(yd(e)|0)+16>>2]|0)+188>>2]=e;e=xv(e)|0;while(1){if(!e)break;kG(e,A);e=Jv(e)|0}return}function dG(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0,f=0,l=0,s=0,c=0,o=0;o=h;h=h+1040|0;c=o+8|0;s=o;i=o+16|0;a=zw(e,1,87171,195059)|0;n=zw(e,1,85242,195059)|0;f=(A|0)>0;r=(A|0)==1;A=sd(e)|0;while(1){if(!A)break;if(f?(l=A+16|0,t[s>>2]=t[(t[l>>2]|0)+232>>2],T4(i,137395,s)|0,Mw(A,a,i)|0,!r):0){t[c>>2]=t[(t[l>>2]|0)+236>>2];T4(i,137395,c)|0;Mw(A,n,i)|0}A=cd(e,A)|0}h=o;return}function vG(e){e=e|0;var A=0,r=0,i=0;r=Rv(e,86675,0)|0;if(r|0){A=sd(r)|0;while(1){if(!A)break;i=cd(r,A)|0;QL(e,A);gG(e,A);tG(A);pd(e,A)|0;A=i}Pv(e,r)|0}return}function gG(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0,f=0,l=0,s=0;s=t[(t[A+16>>2]|0)+232>>2]|0;l=e+16|0;e=t[(t[l>>2]|0)+196>>2]|0;r=t[e+(s<<6)>>2]|0;f=e+(s<<6)+4|0;n=0;i=0;while(1){if((i|0)>=(r|0)){a=7;break}a=t[(t[f>>2]|0)+(i<<2)>>2]|0;i=i+1|0;if((a|0)==(A|0)){a=4;break}else n=a}if((a|0)==4){while(1){if((i|0)>=(r|0))break;a=t[e+(s<<6)+4>>2]|0;t[a+(i+-1<<2)>>2]=t[a+(i<<2)>>2];a=t[(t[l>>2]|0)+196>>2]|0;i=i+1|0;r=t[a+(s<<6)>>2]|0;e=a;a=4}t[e+(s<<6)>>2]=r+-1}else if((a|0)==7?(n|0)!=(A|0):0)ge(85208,85215,248,85225);return}function mG(e){e=e|0;return t[(t[(yd(e)|0)+16>>2]|0)+188>>2]|0}function pG(e,A){e=e|0;A=A|0;var r=0;r=i[e+28>>0]|0;if(i[A+28>>0]|0)if(r<<24>>24){r=~~(+c[e>>3]-+c[A>>3]);if(!r)r=~~(+c[e+8>>3]-+c[A+8>>3])}else r=-1;else r=r<<24>>24!=0&1;return r|0}function EG(e){e=e|0;BG(e,1);return}function BG(e,A){e=e|0;A=A|0;var r=0,n=0,f=0,l=0,s=0,o=0,u=0,b=0,w=0,k=0,d=0,v=0,g=0,m=0,p=0,E=0,B=0,y=0.0,C=0,I=0,Z=0,G=0,L=0,Q=0,D=0,z=0,W=0,Y=0,F=0,M=0,V=0,N=0,R=0,x=0,J=0,H=0,P=0,X=0,S=0,j=0,U=0,T=0,O=0,_=0,q=0,K=0.0;q=h;h=h+656|0;x=q+592|0;R=q+552|0;r=q+544|0;S=q+96|0;j=q;_=q+632|0;U=e+16|0;O=a[(t[U>>2]|0)+136>>1]&14;J=O&65535;H=S+16|0;t[H>>2]=q+368;P=j+16|0;t[P>>2]=q+192;do{if(O<<16>>16){X=O<<16>>16==4;do{if(X){yG(e);if(!(i[(t[(t[e+60>>2]|0)+16>>2]|0)+113>>0]&1))I=9;else{nw(0,85248,r)|0;I=9}}else if(O<<16>>16==8){yG(e);if(!(i[(t[(t[e+60>>2]|0)+16>>2]|0)+113>>0]&1)){sA(e,0);u=0;o=0;s=0;break}else{CG(e);sA(e,1);u=0;o=0;s=0;break}}else I=9}while(0);if((I|0)==9){BW(e);if(TV()|0)break;T=KF(96)|0;M=t[(t[U>>2]|0)+248>>2]|0;t[_+8>>2]=(M|0)/4|0;t[_+12>>2]=M;s=KF(512)|0;D=_+4|0;t[D>>2]=0;t[_>>2]=0;l=t[U>>2]|0;G=a[l+236>>1]|0;L=0;V=0;N=s;Q=s;o=s;u=s;b=s;W=0;Y=0;e:while(1){if((G|0)>(a[l+238>>1]|0))break;w=t[l+196>>2]|0;f=t[w+(G<<6)>>2]|0;z=f+L|0;n=t[w+(G<<6)+4>>2]|0;r=t[n>>2]|0;if(!r)r=W;else{K=+(W|0);r=t[r+16>>2]|0;y=+c[r+16>>3]-+c[r+88>>3];r=~~(y>K?K:y)}if((f|0)!=0?(F=t[n+(f+-1<<2)>>2]|0,(F|0)!=0):0){y=+(Y|0);n=t[F+16>>2]|0;K=+c[n+96>>3]+ +c[n+16>>3];n=~~(K=(f|0))break;s=t[(t[r+(G<<6)+4>>2]|0)+(B<<2)>>2]|0;E=s+16|0;r=t[E>>2]|0;f=t[r+112>>2]|0;if(f){f=f+16|0;l=t[(t[f>>2]|0)+96>>2]|0;if(!l){I=21;break e}v=l+56|0;r=r+16|0;t[v>>2]=t[r>>2];t[v+4>>2]=t[r+4>>2];t[v+8>>2]=t[r+8>>2];t[v+12>>2]=t[r+12>>2];i[(t[(t[f>>2]|0)+96>>2]|0)+81>>0]=1;r=t[E>>2]|0}if((i[r+156>>0]|0)!=0?(I5[t[17300>>2]&63](s)|0)<<24>>24==0:0){k=g;r=d;l=m;s=p;f=b}else{v=0;k=g;l=m;s=p;I=25}A:do{if((I|0)==25){while(1){I=0;w=t[E>>2]|0;f=t[(t[w+180>>2]|0)+(v<<2)>>2]|0;if(!f)break;switch(i[(t[f+16>>2]|0)+112>>0]|0){case 6:case 4:{r=k;f=d;break}default:{IG(f,1,16,64);r=k+1|0;t[d+(k<<2)>>2]=f;if(!(r&127)){n=AM(n,(k<<2)+516|0)|0;f=n;l=n;s=n;u=n;b=n}else f=d}}v=v+1|0;k=r;d=f;I=25}r=t[w+188>>2]|0;r:do{if(!r)f=b;else{v=0;f=b;while(1){r=t[r+(v<<2)>>2]|0;if(!r)break r;IG(r,2,0,128);b=k+1|0;t[d+(k<<2)>>2]=r;if(!(b&127)){n=AM(f,(k<<2)+516|0)|0;r=n;l=n;s=n;u=n;f=n}else r=d;w=t[E>>2]|0;v=v+1|0;k=b;d=r;r=t[w+188>>2]|0}}}while(0);r=t[w+204>>2]|0;if(!r)r=d;else{if(!(i[w+156>>0]|0)){p=w+96|0;K=+c[p>>3];v=w+240|0;c[p>>3]=+c[v>>3];c[v>>3]=K;v=0;w=d}else{v=0;w=d}while(1){r=t[r+(v<<2)>>2]|0;if(!r){r=w;break A}IG(r,0,0,128);b=k+1|0;t[w+(k<<2)>>2]=r;if(!(b&127)){n=AM(u,(k<<2)+516|0)|0;r=n;l=n;s=n;u=n;f=n}else r=w;v=v+1|0;k=b;w=r;r=t[(t[E>>2]|0)+204>>2]|0}}}}while(0);m=t[U>>2]|0;E=t[m+196>>2]|0;B=B+1|0;g=k;d=r;k=m;m=l;p=s;b=f;f=t[E+(G<<6)>>2]|0;r=E}G=G+1|0;L=z;V=g;N=d;Q=m;l=k;o=p;s=n;W=Z;Y=C}if((I|0)==21)ge(85316,85329,313,85342);t[_>>2]=W;t[D>>2]=Y;_4(Q,V,4,58);t[T+84>>2]=KF((L<<5)+11520|0)|0;t[_+16>>2]=KF(G<<5)|0;e:do{if(O<<16>>16==2){r=(t[U>>2]|0)+192|0;while(1){n=t[r>>2]|0;if(!n)break e;f=n+16|0;r=t[f>>2]|0;if((i[r+156>>0]|0)==1?(t[r+104>>2]|0)!=0:0){GG(n);r=t[f>>2]|0}r=r+164|0}}}while(0);C=j+48|0;I=j+-48|0;Z=S+48|0;G=S+-48|0;y=+(M|0);B=0;e:while(1){if((B|0)>=(V|0))break;p=N+(B<<2)|0;d=t[p>>2]|0;v=LG(d)|0;g=d+16|0;n=t[g>>2]|0;if(!(i[n+44>>0]|0)){n=(i[n+84>>0]|0)==0?v:d;r=n;n=t[n+16>>2]|0}else r=d;f=r+16|0;if(t[n+164>>2]&32){n=t[H>>2]|0;Q6(n|0,t[f>>2]|0,176)|0;u=S;b=r;w=u+48|0;do{t[u>>2]=t[b>>2];u=u+4|0;b=b+4|0}while((u|0)<(w|0));t[H>>2]=n;b=t[r>>2]&3;u=t[S>>2]&3;t[((u|0)==3?S:Z)+40>>2]=t[((b|0)==2?r:r+-48|0)+40>>2];t[((u|0)==2?S:G)+40>>2]=t[((b|0)==3?r:r+48|0)+40>>2];u=n+16|0;b=(t[f>>2]|0)+56|0;w=u+40|0;do{t[u>>2]=t[b>>2];u=u+4|0;b=b+4|0}while((u|0)<(w|0));u=n+56|0;b=(t[f>>2]|0)+16|0;w=u+40|0;do{t[u>>2]=t[b>>2];u=u+4|0;b=b+4|0}while((u|0)<(w|0));i[n+112>>0]=1;t[n+116>>2]=r;r=S}k=r+16|0;E=1;r=B;while(1){m=r+1|0;if((m|0)>=(V|0))break;l=N+(m<<2)|0;r=t[l>>2]|0;if((v|0)!=(LG(r)|0))break;if(!(i[(t[g>>2]|0)+113>>0]|0)){s=r+16|0;n=t[s>>2]|0;if(!(i[n+44>>0]|0)){n=(i[n+84>>0]|0)==0?v:r;r=n;n=t[n+16>>2]|0}f=r+16|0;if(t[n+164>>2]&32){n=t[P>>2]|0;Q6(n|0,t[f>>2]|0,176)|0;u=j;b=r;w=u+48|0;do{t[u>>2]=t[b>>2];u=u+4|0;b=b+4|0}while((u|0)<(w|0));t[P>>2]=n;b=t[r>>2]&3;u=t[j>>2]&3;t[((u|0)==3?j:C)+40>>2]=t[((b|0)==2?r:r+-48|0)+40>>2];t[((u|0)==2?j:I)+40>>2]=t[((b|0)==3?r:r+48|0)+40>>2];u=n+16|0;b=(t[f>>2]|0)+56|0;w=u+40|0;do{t[u>>2]=t[b>>2];u=u+4|0;b=b+4|0}while((u|0)<(w|0));u=n+56|0;b=(t[f>>2]|0)+16|0;w=u+40|0;do{t[u>>2]=t[b>>2];u=u+4|0;b=b+4|0}while((u|0)<(w|0));i[n+112>>0]=1;t[n+116>>2]=r}f=t[k>>2]|0;r=n+16|0;u=R;b=f+16|0;w=u+40|0;do{t[u>>2]=t[b>>2];u=u+4|0;b=b+4|0}while((u|0)<(w|0));u=x;b=r;w=u+40|0;do{t[u>>2]=t[b>>2];u=u+4|0;b=b+4|0}while((u|0)<(w|0));if(pG(R,x)|0)break;r=n+56|0;u=R;b=f+56|0;w=u+40|0;do{t[u>>2]=t[b>>2];u=u+4|0;b=b+4|0}while((u|0)<(w|0));u=x;b=r;w=u+40|0;do{t[u>>2]=t[b>>2];u=u+4|0;b=b+4|0}while((u|0)<(w|0));if(pG(R,x)|0)break;M=t[g>>2]|0;if((t[M+164>>2]&15|0)==2?(t[M+96>>2]|0)!=(t[(t[s>>2]|0)+96>>2]|0):0)break;if(t[(t[(t[l>>2]|0)+16>>2]|0)+164>>2]&64|0)break}E=E+1|0;r=m}if(X){if((E|0)==1)r=x;else r=KF(E<<2)|0;t[r>>2]=LG(t[p>>2]|0)|0;n=1;while(1){if((n|0)>=(E|0))break;t[r+(n<<2)>>2]=t[p+(n<<2)>>2];n=n+1|0}aN(e,r,E,J,17296);if((E|0)>1)G2(r);B=m;continue}r=t[d>>2]&3;M=t[((r|0)==3?d:d+48|0)+40>>2]|0;r=t[((r|0)==2?d:d+-48|0)+40>>2]|0;n=t[M+16>>2]|0;f=t[n+232>>2]|0;if((M|0)!=(r|0))if((f|0)==(t[(t[r+16>>2]|0)+232>>2]|0)){QG(e,_,T,N,B,E,J);B=m;continue}else{DG(e,_,T,N,B,E,J);B=m;continue}r=t[U>>2]|0;do{if((f|0)==(a[r+238>>1]|0))if((f|0)>0){r=~~(+c[(t[(t[t[(t[r+196>>2]|0)+(f+-1<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3]-+c[n+24>>3]);break}else{r=~~+c[n+80>>3];break}else if((f|0)==(a[r+236>>1]|0)){r=~~(+c[n+24>>3]-+c[(t[(t[t[(t[r+196>>2]|0)+(f+1<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3]);break}else{r=t[r+196>>2]|0;K=+c[n+24>>3];M=~~(+c[(t[(t[t[r+(f+-1<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3]-K);r=~~(K-+c[(t[(t[t[r+(f+1<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3]);r=(M|0)<(r|0)?M:r;break}}while(0);GR(T,N,B,E,y,+((r|0)/2|0|0),17296);r=0;while(1){if((r|0)>=(E|0)){B=m;continue e}n=t[(t[(t[N+(r+B<<2)>>2]|0)+16>>2]|0)+96>>2]|0;if(n|0)Hx(e,n);r=r+1|0}}r=(t[U>>2]|0)+192|0;while(1){n=t[r>>2]|0;if(!n)break;f=n+16|0;r=t[f>>2]|0;if((i[r+156>>0]|0)==1?(t[r+104>>2]|0)!=0:0){GG(n);Hx(e,t[(t[f>>2]|0)+104>>2]|0);r=t[f>>2]|0}r=r+164|0}if(!A){u=T;s=T}else{zG(e);u=T;s=T}}e:do{if((t[47197]|0)!=0|(t[47198]|0)!=0?(t[47203]|0)!=0|(t[47202]|0)!=0:0){l=sd(e)|0;while(1){if(!l)break e;A:do{if(t[47197]|0){r=Kw(e,l)|0;while(1){if(!r)break A;n=r+-48|0;f=(t[r>>2]&3|0)==2?r:n;if(t[(t[f+16>>2]|0)+100>>2]|0){MR(f,1)|0;Hx(e,t[(t[((t[r>>2]&3|0)==2?r:n)+16>>2]|0)+100>>2]|0)}r=$w(e,r)|0}}}while(0);A:do{if(t[47198]|0){r=Ow(e,l)|0;while(1){if(!r)break A;n=r+16|0;if(t[(t[n>>2]|0)+104>>2]|0?MR(r,0)|0:0)Hx(e,t[(t[n>>2]|0)+104>>2]|0);r=qw(e,r)|0}}}while(0);l=cd(e,l)|0}}}while(0);switch(O&15){case 4:case 8:break;default:{G2(o);G2(t[u+84>>2]|0);G2(s);G2(t[_+16>>2]|0);OV()}}t[47138]=1;t[47139]=1}}while(0);h=q;return}function yG(e){e=e|0;var A=0,r=0,i=0.0,a=0;A=sd(e)|0;while(1){if(!A)break;r=t[A+16>>2]|0;if(t[r+204>>2]|0){a=r+96|0;i=+c[a>>3];r=r+240|0;c[a>>3]=+c[r>>3];c[r>>3]=i}A=cd(e,A)|0}return}function CG(e){e=e|0;var A=0,r=0,a=0,n=0;A=(t[e+16>>2]|0)+192|0;e:while(1){a=t[A>>2]|0;if(!a){A=12;break}n=a+16|0;A=t[n>>2]|0;do{if((i[A+156>>0]|0)==1){r=t[A+112>>2]|0;if(!r){r=t[A+104>>2]|0;if(!r)break;GG(a);A=r}else{r=t[(t[r+16>>2]|0)+96>>2]|0;if(!r){A=6;break e}a=r+56|0;A=A+16|0;t[a>>2]=t[A>>2];t[a+4>>2]=t[A+4>>2];t[a+8>>2]=t[A+8>>2];t[a+12>>2]=t[A+12>>2];i[r+81>>0]=1;A=r}Hx(e,A);A=t[n>>2]|0}}while(0);A=A+164|0}if((A|0)==6)ge(85516,85329,234,85535);else if((A|0)==12)return}function IG(e,A,r,a){e=e|0;A=A|0;r=r|0;a=a|0;var n=0;do{if(!A){n=t[e>>2]&3;A=t[((n|0)==3?e:e+48|0)+40>>2]|0;n=t[((n|0)==2?e:e+-48|0)+40>>2]|0;if((A|0)!=(n|0)){A=(t[(t[A+16>>2]|0)+232>>2]|0)==(t[(t[n+16>>2]|0)+232>>2]|0)?2:1;break}A=t[e+16>>2]|0;if(!(i[A+44>>0]|0))A=(i[A+84>>0]|0)==0?8:4;else A=4}}while(0);e:do{if(!r)switch(A|0){case 1:{r=t[e>>2]&3;r=(t[(t[(t[((r|0)==3?e:e+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)<(t[(t[(t[((r|0)==2?e:e+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)?16:32;break e}case 2:{r=t[e>>2]&3;r=(t[(t[(t[((r|0)==3?e:e+48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0)<(t[(t[(t[((r|0)==2?e:e+-48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0)?16:32;break e}default:{r=16;break e}}}while(0);t[(t[e+16>>2]|0)+164>>2]=A|a|r;return}function ZG(e,A){e=e|0;A=A|0;var r=0,a=0,n=0,f=0,l=0,s=0,o=0,u=0,b=0,w=0,k=0,d=0,v=0,g=0,m=0,p=0,E=0,B=0,y=0,C=0,I=0,Z=0,G=0,L=0;L=h;h=h+624|0;C=L+584|0;y=L+544|0;v=L+368|0;r=L+192|0;g=L+96|0;p=L;m=g+16|0;t[m>>2]=v;E=p+16|0;t[E>>2]=r;G=t[e>>2]|0;Z=t[A>>2]|0;B=G+16|0;k=t[B>>2]|0;A=t[k+164>>2]|0;a=A&15;I=Z+16|0;e=t[I>>2]|0;n=t[e+164>>2]&15;do{if((n|0)==(a|0)){w=LG(G)|0;d=LG(Z)|0;u=t[w>>2]|0;n=u&3;a=t[(t[((n|0)==3?w:w+48|0)+40>>2]|0)+16>>2]|0;n=t[(t[((n|0)==2?w:w+-48|0)+40>>2]|0)+16>>2]|0;f=(t[a+232>>2]|0)-(t[n+232>>2]|0)|0;b=t[d>>2]|0;o=b&3;s=t[(t[((o|0)==3?d:d+48|0)+40>>2]|0)+16>>2]|0;o=t[(t[((o|0)==2?d:d+-48|0)+40>>2]|0)+16>>2]|0;l=(t[s+232>>2]|0)-(t[o+232>>2]|0)|0;f=(f|0)>-1?f:0-f|0;l=(l|0)>-1?l:0-l|0;if((f|0)!=(l|0)){e=f-l|0;break}n=~~(+c[a+16>>3]-+c[n+16>>3]);n=(n|0)>-1?n:0-n|0;a=~~(+c[s+16>>3]-+c[o+16>>3]);a=(a|0)>-1?a:0-a|0;if((n|0)!=(a|0)){e=n-a|0;break}n=u>>>4;a=b>>>4;if((n|0)!=(a|0)){e=n-a|0;break}if(!(i[k+44>>0]|0)){A=(i[k+84>>0]|0)==0?w:G;n=A;A=t[(t[A+16>>2]|0)+164>>2]|0}else n=G;a=n+16|0;if(A&32){Q6(v|0,t[a>>2]|0,176)|0;f=g;l=n;s=f+48|0;do{t[f>>2]=t[l>>2];f=f+4|0;l=l+4|0}while((f|0)<(s|0));t[m>>2]=v;l=t[n>>2]&3;f=t[g>>2]&3;t[((f|0)==3?g:g+48|0)+40>>2]=t[((l|0)==2?n:n+-48|0)+40>>2];t[((f|0)==2?g:g+-48|0)+40>>2]=t[((l|0)==3?n:n+48|0)+40>>2];f=v+16|0;l=(t[a>>2]|0)+56|0;s=f+40|0;do{t[f>>2]=t[l>>2];f=f+4|0;l=l+4|0}while((f|0)<(s|0));f=v+56|0;l=(t[a>>2]|0)+16|0;s=f+40|0;do{t[f>>2]=t[l>>2];f=f+4|0;l=l+4|0}while((f|0)<(s|0));i[v+112>>0]=1;t[v+116>>2]=n;n=g;e=t[I>>2]|0}if(!(i[e+44>>0]|0)){e=(i[e+84>>0]|0)==0?d:Z;a=e;e=t[e+16>>2]|0}else a=Z;A=a+16|0;if(!(t[e+164>>2]&32))r=e;else{Q6(r|0,t[A>>2]|0,176)|0;f=p;l=a;s=f+48|0;do{t[f>>2]=t[l>>2];f=f+4|0;l=l+4|0}while((f|0)<(s|0));t[E>>2]=r;l=t[a>>2]&3;f=t[p>>2]&3;t[((f|0)==3?p:p+48|0)+40>>2]=t[((l|0)==2?a:a+-48|0)+40>>2];t[((f|0)==2?p:p+-48|0)+40>>2]=t[((l|0)==3?a:a+48|0)+40>>2];f=r+16|0;l=(t[A>>2]|0)+56|0;s=f+40|0;do{t[f>>2]=t[l>>2];f=f+4|0;l=l+4|0}while((f|0)<(s|0));f=r+56|0;l=(t[A>>2]|0)+16|0;s=f+40|0;do{t[f>>2]=t[l>>2];f=f+4|0;l=l+4|0}while((f|0)<(s|0));i[r+112>>0]=1;t[r+116>>2]=a}A=t[n+16>>2]|0;e=r+16|0;f=y;l=A+16|0;s=f+40|0;do{t[f>>2]=t[l>>2];f=f+4|0;l=l+4|0}while((f|0)<(s|0));f=C;l=e;s=f+40|0;do{t[f>>2]=t[l>>2];f=f+4|0;l=l+4|0}while((f|0)<(s|0));e=pG(y,C)|0;if(!e){e=r+56|0;f=y;l=A+56|0;s=f+40|0;do{t[f>>2]=t[l>>2];f=f+4|0;l=l+4|0}while((f|0)<(s|0));f=C;l=e;s=f+40|0;do{t[f>>2]=t[l>>2];f=f+4|0;l=l+4|0}while((f|0)<(s|0));e=pG(y,C)|0;if(!e){A=t[(t[B>>2]|0)+164>>2]&192;e=t[(t[I>>2]|0)+164>>2]&192;if((A|0)==(e|0)){e=((t[G>>2]|0)>>>4)-((t[Z>>2]|0)>>>4)|0;break}else{e=A-e|0;break}}}}else e=n-a|0}while(0);h=L;return e|0}function GG(e){e=e|0;var A=0,r=0,a=0,n=0.0,f=0.0;a=e+16|0;A=t[a>>2]|0;if(t[A+176>>2]|0){A=t[A+180>>2]|0;while(1){A=(t[A>>2]|0)+16|0;r=t[A>>2]|0;if(!(i[r+112>>0]|0))break;else A=r+116|0}r=t[r+96>>2]|0;n=+c[r+24>>3];f=+c[r+32>>3];r=(t[(t[(Bd(e)|0)+16>>2]|0)+116>>2]&1|0)!=0;e=t[a>>2]|0;a=t[(t[A>>2]|0)+96>>2]|0;c[a+56>>3]=(r?f:n)*.5+ +c[e+16>>3];c[a+64>>3]=+c[e+24>>3];i[a+81>>0]=1}return}function LG(e){e=e|0;var A=0,r=0;while(1){A=t[e+16>>2]|0;r=t[A+172>>2]|0;if(!r)break;else e=r}while(1){A=t[A+116>>2]|0;if(!A)break;e=A;A=t[A+16>>2]|0}return e|0}function QG(e,A,r,a,n,f,l){e=e|0;A=A|0;r=r|0;a=a|0;n=n|0;f=f|0;l=l|0;var s=0,o=0.0,u=0,b=0,w=0,k=0,d=0,v=0,g=0,m=0,p=0.0,E=0,B=0,y=0,C=0,I=0,Z=0,G=0.0,L=0.0,Q=0.0,D=0.0,z=0.0;Z=h;h=h+1712|0;B=Z+1664|0;v=Z+1488|0;g=Z+1392|0;I=Z+1696|0;y=Z+696|0;C=Z;w=g+16|0;t[w>>2]=v;k=t[a+(n<<2)>>2]|0;d=k+16|0;s=t[d>>2]|0;m=i[s+113>>0]|0;if(t[s+164>>2]&32){Q6(v|0,s|0,176)|0;s=g;u=k;b=s+48|0;do{t[s>>2]=t[u>>2];s=s+4|0;u=u+4|0}while((s|0)<(b|0));t[w>>2]=v;s=t[g>>2]&3;t[((s|0)==3?g:g+48|0)+40>>2]=t[((t[k>>2]&3|0)==2?k:k+-48|0)+40>>2];t[((s|0)==2?g:g+-48|0)+40>>2]=t[((t[k>>2]&3|0)==3?k:k+48|0)+40>>2];s=v+16|0;u=(t[d>>2]|0)+56|0;b=s+40|0;do{t[s>>2]=t[u>>2];s=s+4|0;u=u+4|0}while((s|0)<(b|0));s=v+56|0;u=(t[d>>2]|0)+16|0;b=s+40|0;do{t[s>>2]=t[u>>2];s=s+4|0;u=u+4|0}while((s|0)<(b|0));i[v+112>>0]=1;t[v+116>>2]=k;k=g}s=1;while(1){if((s|0)>=(f|0)){E=6;break}if(!(i[(t[(t[a+(s+n<<2)>>2]|0)+16>>2]|0)+113>>0]|0))s=s+1|0;else{E=7;break}}e:do{if((E|0)==6)if(!(m<<24>>24)){s=t[k+16>>2]|0;if(t[s+96>>2]|0){rL(e,A,r,k,l);break}if((l|0)==2){I=t[k>>2]&3;iL(t[((I|0)==3?k:k+48|0)+40>>2]|0,t[((I|0)==2?k:k+-48|0)+40>>2]|0,a,n,f,2);break}g=i[s+49>>0]|0;m=i[s+89>>0]|0;if(!(g<<24>>24==1&m<<24>>24!=4)?!(g<<24>>24!=4&m<<24>>24==1):0){w=t[k>>2]&3;b=t[((w|0)==3?k:k+48|0)+40>>2]|0;w=t[((w|0)==2?k:k+-48|0)+40>>2]|0;s=t[b+16>>2]|0;u=t[s+232>>2]|0;if((u|0)>0){m=t[(t[e+16>>2]|0)+196>>2]|0;g=u+~(i[(t[(t[e+60>>2]|0)+16>>2]|0)+113>>0]&1)|0;o=+c[(t[(t[t[m+(g<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3]-+c[m+(g<<6)+16>>3]-+c[s+24>>3]-+c[m+(u<<6)+24>>3]}else o=+(t[(t[e+16>>2]|0)+252>>2]|0);G=+(f+1|0);p=+(t[A+12>>2]|0)/G;o=o/G;tL(e,A,r,b,k,y,1);tL(e,A,r,w,k,C,0);v=y+52|0;g=C+52|0;w=(l|0)==10;k=r+80|0;s=0;while(1){if((s|0)>=(f|0))break e;d=t[a+(s+n<<2)>>2]|0;b=t[v>>2]|0;u=b+-1|0;z=+c[y+56+(u<<5)>>3];D=+c[y+56+(u<<5)+16>>3];Q=+c[y+56+(u<<5)+24>>3];c[19215]=z;c[19216]=Q;s=s+1|0;G=+(s|0);L=p*G;c[19217]=D+L;G=Q+o*G;c[19218]=G;c[19219]=z;c[19220]=G;u=(t[g>>2]|0)+-1|0;z=+c[C+56+(u<<5)+16>>3];c[19221]=z;c[19222]=G+o;Q=+c[C+56+(u<<5)>>3];D=+c[C+56+(u<<5)+24>>3];c[19225]=z;c[19224]=D;c[19223]=Q-L;c[19226]=G;u=0;while(1){if((u|0)>=(b|0)){u=0;break}b=y+56+(u<<5)|0;t[B>>2]=t[b>>2];t[B+4>>2]=t[b+4>>2];t[B+8>>2]=t[b+8>>2];t[B+12>>2]=t[b+12>>2];t[B+16>>2]=t[b+16>>2];t[B+20>>2]=t[b+20>>2];t[B+24>>2]=t[b+24>>2];t[B+28>>2]=t[b+28>>2];ER(r,B);u=u+1|0;b=t[v>>2]|0}while(1){if((u|0)==3)break;l=153720+(u<<5)|0;t[B>>2]=t[l>>2];t[B+4>>2]=t[l+4>>2];t[B+8>>2]=t[l+8>>2];t[B+12>>2]=t[l+12>>2];t[B+16>>2]=t[l+16>>2];t[B+20>>2]=t[l+20>>2];t[B+24>>2]=t[l+24>>2];t[B+28>>2]=t[l+28>>2];ER(r,B);u=u+1|0}b=t[g>>2]|0;while(1){u=b+-1|0;if((b|0)<=0)break;b=C+56+(u<<5)|0;t[B>>2]=t[b>>2];t[B+4>>2]=t[b+4>>2];t[B+8>>2]=t[b+8>>2];t[B+12>>2]=t[b+12>>2];t[B+16>>2]=t[b+16>>2];t[B+20>>2]=t[b+20>>2];t[B+24>>2]=t[b+24>>2];t[B+28>>2]=t[b+28>>2];ER(r,B);b=u}if(w)u=_V(r,I)|0;else u=rN(r,I)|0;b=t[I>>2]|0;if(!b)break e;mR(d,t[((t[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0,u,b,17296);t[k>>2]=0}}aL(e,A,r,a,n,f,k,(l|0)==10&1)}else E=7}while(0);if((E|0)==7)AL(e,a,n,f,k,l);h=Z;return}function DG(e,A,r,a,n,f,l){e=e|0;A=A|0;r=r|0;a=a|0;n=n|0;f=f|0;l=l|0;var s=0,o=0.0,u=0,b=0,w=0,k=0,d=0,v=0,g=0,m=0,p=0,E=0,B=0,y=0,C=0,I=0,Z=0,G=0,L=0,Q=0,D=0,z=0,W=0,Y=0,F=0,M=0,V=0,N=0,R=0,x=0,J=0,H=0,X=0,S=0,j=0,U=0,T=0,O=0,_=0,q=0,K=0,$=0,ee=0,Ae=0,re=0;Ae=h;h=h+2576|0;X=Ae+2528|0;K=Ae+2568|0;s=Ae+2352|0;u=Ae+2176|0;g=Ae+1904|0;_=Ae+1808|0;$=Ae+1712|0;S=Ae+1016|0;j=Ae+320|0;U=Ae+256|0;O=Ae+2564|0;q=Ae+2560|0;C=Ae+288|0;I=Ae+224|0;V=Ae+192|0;N=Ae+160|0;R=Ae+128|0;x=Ae+96|0;J=Ae+64|0;H=Ae+32|0;T=Ae;v=g+16|0;t[v>>2]=s;b=_+16|0;t[b>>2]=u;ee=$+16|0;t[ee>>2]=Ae+2e3;if(!(t[46734]|0)){t[46734]=$F(32e3)|0;t[46735]=$F(32e3)|0;t[46736]=2e3;t[46737]=2e3}m=t[a+(n<<2)>>2]|0;M=t[m>>2]&3;w=m+48|0;k=m+-48|0;M=(t[(t[(t[((M|0)==3?m:w)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(t[(t[(t[((M|0)==2?m:k)+40>>2]|0)+16>>2]|0)+232>>2]|0)|0;d=m+16|0;if((((M|0)>-1?M:0-M|0)|0)<=1){s=t[d>>2]|0;if(!(t[s+164>>2]&32)){M=m;u=0}else{u=t[v>>2]|0;Q6(u|0,s|0,176)|0;E=g;B=m;y=E+48|0;do{t[E>>2]=t[B>>2];E=E+4|0;B=B+4|0}while((E|0)<(y|0));t[v>>2]=u;E=t[g>>2]&3;t[((E|0)==3?g:g+48|0)+40>>2]=t[((t[m>>2]&3|0)==2?m:k)+40>>2];t[((E|0)==2?g:g+-48|0)+40>>2]=t[((t[m>>2]&3|0)==3?m:w)+40>>2];E=u+16|0;B=(t[d>>2]|0)+56|0;y=E+40|0;do{t[E>>2]=t[B>>2];E=E+4|0;B=B+4|0}while((E|0)<(y|0));s=t[v>>2]|0;E=s+56|0;B=(t[d>>2]|0)+16|0;y=E+40|0;do{t[E>>2]=t[B>>2];E=E+4|0;B=B+4|0}while((E|0)<(y|0));i[s+112>>0]=1;u=0;F=12}}else{Q6(s|0,t[d>>2]|0,176)|0;E=g;B=m;y=E+48|0;do{t[E>>2]=t[B>>2];E=E+4|0;B=B+4|0}while((E|0)<(y|0));E=g+48|0;B=w;y=E+48|0;do{t[E>>2]=t[B>>2];E=E+4|0;B=B+4|0}while((E|0)<(y|0));t[v>>2]=s;s=t[d>>2]|0;if(!(t[s+164>>2]&32)){Q6(u|0,s|0,176)|0;E=_;B=m;y=E+48|0;do{t[E>>2]=t[B>>2];E=E+4|0;B=B+4|0}while((E|0)<(y|0));t[b>>2]=u;b=t[g>>2]|0;t[((b&3|0)==3?g:g+48|0)+40>>2]=t[((t[m>>2]&3|0)==3?m:w)+40>>2];E=_+48|0;B=w;y=E+48|0;do{t[E>>2]=t[B>>2];E=E+4|0;B=B+4|0}while((E|0)<(y|0))}else{u=t[b>>2]|0;Q6(u|0,s|0,176)|0;E=_;B=m;y=E+48|0;do{t[E>>2]=t[B>>2];E=E+4|0;B=B+4|0}while((E|0)<(y|0));t[b>>2]=u;E=t[_>>2]&3;t[((E|0)==3?_:_+48|0)+40>>2]=t[((t[m>>2]&3|0)==2?m:k)+40>>2];t[((E|0)==2?_:_+-48|0)+40>>2]=t[((t[m>>2]&3|0)==3?m:w)+40>>2];E=u+16|0;B=(t[d>>2]|0)+56|0;y=E+40|0;do{t[E>>2]=t[B>>2];E=E+4|0;B=B+4|0}while((E|0)<(y|0));s=t[b>>2]|0;E=s+56|0;B=(t[d>>2]|0)+16|0;y=E+40|0;do{t[E>>2]=t[B>>2];E=E+4|0;B=B+4|0}while((E|0)<(y|0));i[s+112>>0]=1;t[s+116>>2]=m;b=t[g>>2]|0;t[((b&3|0)==3?g:g+48|0)+40>>2]=t[((t[m>>2]&3|0)==2?m:k)+40>>2];E=(t[v>>2]|0)+16|0;B=(t[d>>2]|0)+56|0;y=E+40|0;do{t[E>>2]=t[B>>2];E=E+4|0;B=B+4|0}while((E|0)<(y|0))}s=LG(m)|0;while(1){u=t[(t[s+16>>2]|0)+172>>2]|0;if(!u)break;else s=u}t[((b&3|0)==2?g:g+-48|0)+40>>2]=t[((t[s>>2]&3|0)==2?s:s+-48|0)+40>>2];s=t[v>>2]|0;i[s+84>>0]=0;i[s+112>>0]=1;u=s+56|0;t[u>>2]=0;t[u+4>>2]=0;t[u+8>>2]=0;t[u+12>>2]=0;u=1;F=12}if((F|0)==12){t[s+116>>2]=m;M=g}W=(l|0)==2;if(W?(p=FG(e,M,t[46734]|0,K)|0,t[q>>2]=p,(p|0)!=0):0)F=63;else F=15;e:do{if((F|0)==15){z=(l|0)==10;t[q>>2]=0;b=t[M>>2]&3;s=t[((b|0)==3?M:M+48|0)+40>>2]|0;b=t[((b|0)==2?M:M+-48|0)+40>>2]|0;t[K>>2]=b;MG(C,e,A,s,0,M);t[S>>2]=t[C>>2];t[S+4>>2]=t[C+4>>2];t[S+8>>2]=t[C+8>>2];t[S+12>>2]=t[C+12>>2];t[S+16>>2]=t[C+16>>2];t[S+20>>2]=t[C+20>>2];t[S+24>>2]=t[C+24>>2];t[S+28>>2]=t[C+28>>2];t[U>>2]=t[C>>2];t[U+4>>2]=t[C+4>>2];t[U+8>>2]=t[C+8>>2];t[U+12>>2]=t[C+12>>2];t[U+16>>2]=t[C+16>>2];t[U+20>>2]=t[C+20>>2];BR(r,M,1,S,VG(s)|0);Z=S+52|0;Y=(t[Z>>2]|0)+-1|0;L=U+24|0;c[L>>3]=+c[S+56+(Y<<5)+24>>3];Q=U+8|0;c[Q>>3]=+c[S+56+(Y<<5)+8>>3];Y=t[s+16>>2]|0;D=e+16|0;o=+c[Y+24>>3]-+c[(t[(t[D>>2]|0)+196>>2]|0)+(t[Y+232>>2]<<6)+16>>3];t[X>>2]=t[U>>2];t[X+4>>2]=t[U+4>>2];t[X+8>>2]=t[U+8>>2];t[X+12>>2]=t[U+12>>2];t[X+16>>2]=t[U+16>>2];t[X+20>>2]=t[U+20>>2];t[X+24>>2]=t[U+24>>2];t[X+28>>2]=t[U+28>>2];NG(I,X,1,o);t[U>>2]=t[I>>2];t[U+4>>2]=t[I+4>>2];t[U+8>>2]=t[I+8>>2];t[U+12>>2]=t[I+12>>2];t[U+16>>2]=t[I+16>>2];t[U+20>>2]=t[I+20>>2];t[U+24>>2]=t[I+24>>2];t[U+28>>2]=t[I+28>>2];I=U+16|0;if(+c[U>>3]<+c[I>>3]?+c[Q>>3]<+c[L>>3]:0){Y=t[Z>>2]|0;t[Z>>2]=Y+1;Y=S+56+(Y<<5)|0;t[Y>>2]=t[U>>2];t[Y+4>>2]=t[U+4>>2];t[Y+8>>2]=t[U+8>>2];t[Y+12>>2]=t[U+12>>2];t[Y+16>>2]=t[U+16>>2];t[Y+20>>2]=t[U+20>>2];t[Y+24>>2]=t[U+24>>2];t[Y+28>>2]=t[U+28>>2]}E=e+60|0;G=j+52|0;B=r+56|0;y=r+69|0;l=r+16|0;C=r+29|0;Y=M;k=0;d=-1;A:while(1){v=s;g=0;s=0;m=Y;while(1){w=b;p=b;if((i[(t[w+16>>2]|0)+156>>0]|0)!=1)break A;if((I5[t[17300>>2]&63](w)|0)<<24>>24)break A;b=g|1;re=153720+(g<<5)|0;RG(V,A,e,t[(t[v+16>>2]|0)+232>>2]|0);t[re>>2]=t[V>>2];t[re+4>>2]=t[V+4>>2];t[re+8>>2]=t[V+8>>2];t[re+12>>2]=t[V+12>>2];t[re+16>>2]=t[V+16>>2];t[re+20>>2]=t[V+20>>2];t[re+24>>2]=t[V+24>>2];t[re+28>>2]=t[V+28>>2];if(!s){k=xG(w)|0;s=(k|0)<((i[(t[(t[E>>2]|0)+16>>2]|0)+113>>0]<<1&2)+3&255|0);k=s?k:k+-2|0;d=s?d:1;s=(s^1)&1}if(!((s|0)==0|(d|0)>0))break;re=153720+(b<<5)|0;MG(N,e,A,w,m,t[t[(t[w+16>>2]|0)+180>>2]>>2]|0);t[re>>2]=t[N>>2];t[re+4>>2]=t[N+4>>2];t[re+8>>2]=t[N+8>>2];t[re+12>>2]=t[N+12>>2];t[re+16>>2]=t[N+16>>2];t[re+20>>2]=t[N+20>>2];t[re+24>>2]=t[N+24>>2];t[re+28>>2]=t[N+28>>2];re=t[t[(t[p+16>>2]|0)+180>>2]>>2]|0;b=t[re>>2]&3;v=t[((b|0)==3?re:re+48|0)+40>>2]|0;b=t[((b|0)==2?re:re+-48|0)+40>>2]|0;t[K>>2]=b;g=g+2|0;d=d+-1|0;m=re}MG(R,e,A,w,m,t[t[(t[w+16>>2]|0)+180>>2]>>2]|0);t[j>>2]=t[R>>2];t[j+4>>2]=t[R+4>>2];t[j+8>>2]=t[R+8>>2];t[j+12>>2]=t[R+12>>2];t[j+16>>2]=t[R+16>>2];t[j+20>>2]=t[R+20>>2];t[j+24>>2]=t[R+24>>2];t[j+28>>2]=t[R+28>>2];IR(r,m,1,j,VG(t[((t[m>>2]&3|0)==2?m:m+-48|0)+40>>2]|0)|0);re=j+56+((t[G>>2]|0)+-1<<5)|0;g=t[p+16>>2]|0;o=+c[(t[(t[D>>2]|0)+196>>2]|0)+(t[g+232>>2]<<6)+24>>3]+ +c[g+24>>3];t[X>>2]=t[re>>2];t[X+4>>2]=t[re+4>>2];t[X+8>>2]=t[re+8>>2];t[X+12>>2]=t[re+12>>2];t[X+16>>2]=t[re+16>>2];t[X+20>>2]=t[re+20>>2];t[X+24>>2]=t[re+24>>2];t[X+28>>2]=t[re+28>>2];NG(U,X,4,o);if(+c[U>>3]<+c[I>>3]?+c[Q>>3]<+c[L>>3]:0){re=t[G>>2]|0;t[G>>2]=re+1;re=j+56+(re<<5)|0;t[re>>2]=t[U>>2];t[re+4>>2]=t[U+4>>2];t[re+8>>2]=t[U+8>>2];t[re+12>>2]=t[U+12>>2];t[re+16>>2]=t[U+16>>2];t[re+20>>2]=t[U+20>>2];t[re+24>>2]=t[U+24>>2];t[re+28>>2]=t[U+28>>2]}c[B>>3]=1.5707963267948966;i[y>>0]=1;JG(r,Y,m,S,j,b);if(!z){s=rN(r,O)|0;b=t[O>>2]|0;if(W&(b|0)>4){re=s+16|0;t[re>>2]=t[s>>2];t[re+4>>2]=t[s+4>>2];t[re+8>>2]=t[s+8>>2];t[re+12>>2]=t[s+12>>2];re=s+32|0;b=s+(b+-1<<4)|0;t[re>>2]=t[b>>2];t[re+4>>2]=t[b+4>>2];t[re+8>>2]=t[b+8>>2];t[re+12>>2]=t[b+12>>2];D6(s+48|0,b|0,16)|0;t[O>>2]=4;b=4}else F=33}else{s=_V(r,O)|0;b=t[O>>2]|0;F=33}if((F|0)==33){F=0;if(!b)break e}m=t[q>>2]|0;w=m+b|0;if((w|0)>(t[46736]|0)){t[46736]=w<<1;g=AM(t[46734]|0,w<<5)|0;t[46734]=g;b=t[O>>2]|0}else g=t[46734]|0;v=0;w=m;while(1){if((v|0)>=(b|0))break;re=g+(w<<4)|0;m=s+(v<<4)|0;t[re>>2]=t[m>>2];t[re+4>>2]=t[m+4>>2];t[re+8>>2]=t[m+8>>2];t[re+12>>2]=t[m+12>>2];v=v+1|0;w=w+1|0}t[q>>2]=w;b=HG(t[t[(t[p+16>>2]|0)+180>>2]>>2]|0,k,g,q)|0;PG(Y,r);w=t[b>>2]&3;s=t[((w|0)==3?b:b+48|0)+40>>2]|0;w=t[((w|0)==2?b:b+-48|0)+40>>2]|0;t[K>>2]=w;Y=s+16|0;MG(x,e,A,s,t[t[(t[Y>>2]|0)+172>>2]>>2]|0,b);t[S>>2]=t[x>>2];t[S+4>>2]=t[x+4>>2];t[S+8>>2]=t[x+8>>2];t[S+12>>2]=t[x+12>>2];t[S+16>>2]=t[x+16>>2];t[S+20>>2]=t[x+20>>2];t[S+24>>2]=t[x+24>>2];t[S+28>>2]=t[x+28>>2];BR(r,b,1,S,VG(s)|0);re=S+56+((t[Z>>2]|0)+-1<<5)|0;Y=t[Y>>2]|0;o=+c[Y+24>>3]-+c[(t[(t[D>>2]|0)+196>>2]|0)+(t[Y+232>>2]<<6)+16>>3];t[X>>2]=t[re>>2];t[X+4>>2]=t[re+4>>2];t[X+8>>2]=t[re+8>>2];t[X+12>>2]=t[re+12>>2];t[X+16>>2]=t[re+16>>2];t[X+20>>2]=t[re+20>>2];t[X+24>>2]=t[re+24>>2];t[X+28>>2]=t[re+28>>2];NG(U,X,1,o);if(+c[U>>3]<+c[I>>3]?+c[Q>>3]<+c[L>>3]:0){re=t[Z>>2]|0;t[Z>>2]=re+1;re=S+56+(re<<5)|0;t[re>>2]=t[U>>2];t[re+4>>2]=t[U+4>>2];t[re+8>>2]=t[U+8>>2];t[re+12>>2]=t[U+12>>2];t[re+16>>2]=t[U+16>>2];t[re+20>>2]=t[U+20>>2];t[re+24>>2]=t[U+24>>2];t[re+28>>2]=t[U+28>>2]}c[l>>3]=-1.5707963267948966;i[C>>0]=1;Y=b;b=w}s=g|1;d=153720+(g<<5)|0;RG(J,A,e,t[(t[v+16>>2]|0)+232>>2]|0);t[d>>2]=t[J>>2];t[d+4>>2]=t[J+4>>2];t[d+8>>2]=t[J+8>>2];t[d+12>>2]=t[J+12>>2];t[d+16>>2]=t[J+16>>2];t[d+20>>2]=t[J+20>>2];t[d+24>>2]=t[J+24>>2];t[d+28>>2]=t[J+28>>2];MG(H,e,A,w,m,0);t[j>>2]=t[H>>2];t[j+4>>2]=t[H+4>>2];t[j+8>>2]=t[H+8>>2];t[j+12>>2]=t[H+12>>2];t[j+16>>2]=t[H+16>>2];t[j+20>>2]=t[H+20>>2];t[j+24>>2]=t[H+24>>2];t[j+28>>2]=t[H+28>>2];t[U>>2]=t[H>>2];t[U+4>>2]=t[H+4>>2];t[U+8>>2]=t[H+8>>2];t[U+12>>2]=t[H+12>>2];t[U+16>>2]=t[H+16>>2];t[U+20>>2]=t[H+20>>2];t[U+24>>2]=t[H+24>>2];t[U+28>>2]=t[H+28>>2];d=(u|0)!=0;v=m+-48|0;IR(r,d?_:m,1,j,VG(t[((t[m>>2]&3|0)==2?m:v)+40>>2]|0)|0);re=(t[G>>2]|0)+-1|0;c[L>>3]=+c[j+56+(re<<5)+24>>3];c[Q>>3]=+c[j+56+(re<<5)+8>>3];re=t[p+16>>2]|0;o=+c[(t[(t[D>>2]|0)+196>>2]|0)+(t[re+232>>2]<<6)+24>>3]+ +c[re+24>>3];t[X>>2]=t[U>>2];t[X+4>>2]=t[U+4>>2];t[X+8>>2]=t[U+8>>2];t[X+12>>2]=t[U+12>>2];t[X+16>>2]=t[U+16>>2];t[X+20>>2]=t[U+20>>2];t[X+24>>2]=t[U+24>>2];t[X+28>>2]=t[U+28>>2];NG(T,X,4,o);t[U>>2]=t[T>>2];t[U+4>>2]=t[T+4>>2];t[U+8>>2]=t[T+8>>2];t[U+12>>2]=t[T+12>>2];t[U+16>>2]=t[T+16>>2];t[U+20>>2]=t[T+20>>2];t[U+24>>2]=t[T+24>>2];t[U+28>>2]=t[T+28>>2];if(+c[U>>3]<+c[I>>3]?+c[Q>>3]<+c[L>>3]:0){re=t[G>>2]|0;t[G>>2]=re+1;re=j+56+(re<<5)|0;t[re>>2]=t[U>>2];t[re+4>>2]=t[U+4>>2];t[re+8>>2]=t[U+8>>2];t[re+12>>2]=t[U+12>>2];t[re+16>>2]=t[U+16>>2];t[re+20>>2]=t[U+20>>2];t[re+24>>2]=t[U+24>>2];t[re+28>>2]=t[U+28>>2]}JG(r,Y,m,S,j,s);if(z)k=_V(r,O)|0;else k=rN(r,O)|0;s=t[O>>2]|0;if(!(W&(s|0)>4)){if(!s)break}else{re=k+16|0;t[re>>2]=t[k>>2];t[re+4>>2]=t[k+4>>2];t[re+8>>2]=t[k+8>>2];t[re+12>>2]=t[k+12>>2];re=k+32|0;s=k+(s+-1<<4)|0;t[re>>2]=t[s>>2];t[re+4>>2]=t[s+4>>2];t[re+8>>2]=t[s+8>>2];t[re+12>>2]=t[s+12>>2];D6(k+48|0,s|0,16)|0;t[O>>2]=4;s=4}b=t[q>>2]|0;u=b+s|0;if((u|0)>(t[46736]|0)){t[46736]=u<<1;w=AM(t[46734]|0,u<<5)|0;t[46734]=w;s=t[O>>2]|0}else w=t[46734]|0;u=0;while(1){if((u|0)>=(s|0))break;re=w+(b<<4)|0;O=k+(u<<4)|0;t[re>>2]=t[O>>2];t[re+4>>2]=t[O+4>>2];t[re+8>>2]=t[O+8>>2];t[re+12>>2]=t[O+12>>2];u=u+1|0;b=b+1|0}t[q>>2]=b;PG(Y,r);if(d)s=(t[_>>2]&3|0)==2?_:_+-48|0;else s=(t[m>>2]&3|0)==2?m:v;t[K>>2]=t[s+40>>2];p=b;F=63}}while(0);e:do{if((F|0)==63){if((f|0)==1){mR(M,t[K>>2]|0,t[46734]|0,p,17296);break}g=A+12|0;m=p+-1|0;o=+((P(t[g>>2]|0,f+-1|0)|0)/2|0|0);u=t[46734]|0;s=1;while(1){if((s|0)>=(m|0))break;re=u+(s<<4)|0;c[re>>3]=+c[re>>3]-o;s=s+1|0}s=t[46736]|0;if((s|0)>(t[46737]|0)){t[46737]=s;b=AM(t[46735]|0,s<<4)|0;t[46735]=b;u=t[46734]|0}else b=t[46735]|0;s=0;while(1){if((s|0)>=(p|0))break;re=b+(s<<4)|0;A=u+(s<<4)|0;t[re>>2]=t[A>>2];t[re+4>>2]=t[A+4>>2];t[re+8>>2]=t[A+8>>2];t[re+12>>2]=t[A+12>>2];s=s+1|0}mR(M,t[K>>2]|0,b,p,17296);d=$+48|0;v=$+-48|0;k=1;while(1){if((k|0)>=(f|0))break e;b=t[a+(k+n<<2)>>2]|0;w=b+16|0;s=t[w>>2]|0;if(t[s+164>>2]&32){u=t[ee>>2]|0;Q6(u|0,s|0,176)|0;E=$;B=b;y=E+48|0;do{t[E>>2]=t[B>>2];E=E+4|0;B=B+4|0}while((E|0)<(y|0));t[ee>>2]=u;E=t[$>>2]&3;t[((E|0)==3?$:d)+40>>2]=t[((t[b>>2]&3|0)==2?b:b+-48|0)+40>>2];t[((E|0)==2?$:v)+40>>2]=t[((t[b>>2]&3|0)==3?b:b+48|0)+40>>2];E=u+16|0;B=(t[w>>2]|0)+56|0;y=E+40|0;do{t[E>>2]=t[B>>2];E=E+4|0;B=B+4|0}while((E|0)<(y|0));s=t[ee>>2]|0;E=s+56|0;B=(t[w>>2]|0)+16|0;y=E+40|0;do{t[E>>2]=t[B>>2];E=E+4|0;B=B+4|0}while((E|0)<(y|0));i[s+112>>0]=1;t[s+116>>2]=b;b=$}w=t[46734]|0;s=1;while(1){if((s|0)>=(m|0))break;re=w+(s<<4)|0;c[re>>3]=+c[re>>3]+ +(t[g>>2]|0);s=s+1|0}u=t[46735]|0;s=0;while(1){if((s|0)>=(p|0))break;re=u+(s<<4)|0;K=w+(s<<4)|0;t[re>>2]=t[K>>2];t[re+4>>2]=t[K+4>>2];t[re+8>>2]=t[K+8>>2];t[re+12>>2]=t[K+12>>2];s=s+1|0}mR(b,t[((t[b>>2]&3|0)==2?b:b+-48|0)+40>>2]|0,u,p,17296);k=k+1|0}}}while(0);h=Ae;return}function zG(e){e=e|0;var A=0,r=0,i=0;A=sd(e)|0;while(1){if(!A)break;r=Ow(e,A)|0;while(1){if(!r)break;if((I5[t[4324]&63](r)|0)<<24>>24?(i=t[(t[r+16>>2]|0)+8>>2]|0,i|0):0)WG(i);r=qw(e,r)|0}A=cd(e,A)|0}return}function WG(e){e=e|0;var A=0,r=0,i=0,a=0,n=0;a=t[e+4>>2]|0;n=$F(a*48|0)|0;A=n;r=0;i=(t[e>>2]|0)+((a+-1|0)*48|0)|0;while(1){if((r|0)>=(a|0)){A=0;break}YG(i,A);A=A+48|0;r=r+1|0;i=i+-48|0}while(1){r=t[e>>2]|0;if((A|0)>=(a|0))break;G2(t[r+(A*48|0)>>2]|0);A=A+1|0}G2(r);t[e>>2]=n;return}function YG(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0,f=0;n=t[e+4>>2]|0;f=$F(n<<4)|0;r=f;i=0;a=(t[e>>2]|0)+(n+-1<<4)|0;while(1){if((i|0)>=(n|0))break;t[r>>2]=t[a>>2];t[r+4>>2]=t[a+4>>2];t[r+8>>2]=t[a+8>>2];t[r+12>>2]=t[a+12>>2];r=r+16|0;i=i+1|0;a=a+-16|0}t[A>>2]=f;t[A+4>>2]=n;t[A+8>>2]=t[e+12>>2];t[A+12>>2]=t[e+8>>2];f=A+16|0;n=e+32|0;t[f>>2]=t[n>>2];t[f+4>>2]=t[n+4>>2];t[f+8>>2]=t[n+8>>2];t[f+12>>2]=t[n+12>>2];f=A+32|0;n=e+16|0;t[f>>2]=t[n>>2];t[f+4>>2]=t[n+4>>2];t[f+8>>2]=t[n+8>>2];t[f+12>>2]=t[n+12>>2];return}function FG(e,A,r,a){e=e|0;A=A|0;r=r|0;a=a|0;var n=0,f=0.0,l=0.0,s=0.0,o=0,u=0,b=0,w=0,k=0,d=0,v=0,g=0,m=0,p=0,E=0,B=0,y=0;B=h;h=h+96|0;k=B+80|0;v=B+64|0;d=B+48|0;m=B+32|0;p=B+16|0;E=B;o=A;while(1){g=o+16|0;n=t[g>>2]|0;if(!(i[n+112>>0]|0))break;o=t[n+116>>2]|0}n=t[o>>2]&3;b=t[((n|0)==2?o:o+-48|0)+40>>2]|0;n=t[((n|0)==3?o:o+48|0)+40>>2]|0;o=b+16|0;u=n+16|0;y=(t[(t[o>>2]|0)+232>>2]|0)-(t[(t[u>>2]|0)+232>>2]|0)|0;switch(((y|0)>-1?y:0-y|0)|0){case 1:{n=0;break}case 2:{if(!(i[(t[(t[e+60>>2]|0)+16>>2]|0)+113>>0]&1))w=6;else n=0;break}default:w=6}do{if((w|0)==6){if((t[((t[A>>2]&3|0)==3?A:A+48|0)+40>>2]|0)==(n|0)){t[a>>2]=b;y=(t[u>>2]|0)+16|0;w=(t[g>>2]|0)+16|0;t[v>>2]=t[y>>2];t[v+4>>2]=t[y+4>>2];t[v+8>>2]=t[y+8>>2];t[v+12>>2]=t[y+12>>2];t[k>>2]=t[w>>2];t[k+4>>2]=t[w+4>>2];t[k+8>>2]=t[w+8>>2];t[k+12>>2]=t[w+12>>2];$G(m,v,k);w=(t[o>>2]|0)+16|0;y=(t[g>>2]|0)+56|0;t[v>>2]=t[w>>2];t[v+4>>2]=t[w+4>>2];t[v+8>>2]=t[w+8>>2];t[v+12>>2]=t[w+12>>2];t[k>>2]=t[y>>2];t[k+4>>2]=t[y+4>>2];t[k+8>>2]=t[y+8>>2];t[k+12>>2]=t[y+12>>2];$G(p,v,k)}else{t[a>>2]=n;y=(t[o>>2]|0)+16|0;w=(t[g>>2]|0)+56|0;t[v>>2]=t[y>>2];t[v+4>>2]=t[y+4>>2];t[v+8>>2]=t[y+8>>2];t[v+12>>2]=t[y+12>>2];t[k>>2]=t[w>>2];t[k+4>>2]=t[w+4>>2];t[k+8>>2]=t[w+8>>2];t[k+12>>2]=t[w+12>>2];$G(m,v,k);w=(t[u>>2]|0)+16|0;y=(t[g>>2]|0)+16|0;t[v>>2]=t[w>>2];t[v+4>>2]=t[w+4>>2];t[v+8>>2]=t[w+8>>2];t[v+12>>2]=t[w+12>>2];t[k>>2]=t[y>>2];t[k+4>>2]=t[y+4>>2];t[k+8>>2]=t[y+8>>2];t[k+12>>2]=t[y+12>>2];$G(p,v,k)}n=t[(t[g>>2]|0)+96>>2]|0;if(!n){n=r+16|0;t[r>>2]=t[m>>2];t[r+4>>2]=t[m+4>>2];t[r+8>>2]=t[m+8>>2];t[r+12>>2]=t[m+12>>2];t[n>>2]=t[m>>2];t[n+4>>2]=t[m+4>>2];t[n+8>>2]=t[m+8>>2];t[n+12>>2]=t[m+12>>2];n=r+48|0;y=r+32|0;t[y>>2]=t[p>>2];t[y+4>>2]=t[p+4>>2];t[y+8>>2]=t[p+8>>2];t[y+12>>2]=t[p+12>>2];t[n>>2]=t[p>>2];t[n+4>>2]=t[p+4>>2];t[n+8>>2]=t[p+8>>2];t[n+12>>2]=t[p+12>>2];n=4;break}l=+c[n+24>>3];f=+c[n+32>>3];w=(t[(t[(Bd(b)|0)+16>>2]|0)+116>>2]&1|0)==0;s=w?f:l;y=(t[(t[g>>2]|0)+96>>2]|0)+56|0;t[E>>2]=t[y>>2];t[E+4>>2]=t[y+4>>2];t[E+8>>2]=t[y+8>>2];t[E+12>>2]=t[y+12>>2];t[d>>2]=t[p>>2];t[d+4>>2]=t[p+4>>2];t[d+8>>2]=t[p+8>>2];t[d+12>>2]=t[p+12>>2];t[v>>2]=t[m>>2];t[v+4>>2]=t[m+4>>2];t[v+8>>2]=t[m+8>>2];t[v+12>>2]=t[m+12>>2];t[k>>2]=t[y>>2];t[k+4>>2]=t[y+4>>2];t[k+8>>2]=t[y+8>>2];t[k+12>>2]=t[y+12>>2];y=(eL(d,v,k)|0)==0;f=(w?l:f)*.5;l=+c[E>>3];if(y){c[E>>3]=l-f;y=E+8|0;c[y>>3]=+c[y>>3]+s*.5}else{c[E>>3]=l+f;y=E+8|0;c[y>>3]=+c[y>>3]-s*.5}n=r+16|0;t[r>>2]=t[m>>2];t[r+4>>2]=t[m+4>>2];t[r+8>>2]=t[m+8>>2];t[r+12>>2]=t[m+12>>2];t[n>>2]=t[m>>2];t[n+4>>2]=t[m+4>>2];t[n+8>>2]=t[m+8>>2];t[n+12>>2]=t[m+12>>2];n=r+32|0;y=r+48|0;m=r+64|0;t[m>>2]=t[E>>2];t[m+4>>2]=t[E+4>>2];t[m+8>>2]=t[E+8>>2];t[m+12>>2]=t[E+12>>2];t[y>>2]=t[E>>2];t[y+4>>2]=t[E+4>>2];t[y+8>>2]=t[E+8>>2];t[y+12>>2]=t[E+12>>2];t[n>>2]=t[E>>2];t[n+4>>2]=t[E+4>>2];t[n+8>>2]=t[E+8>>2];t[n+12>>2]=t[E+12>>2];n=r+80|0;y=r+96|0;t[y>>2]=t[p>>2];t[y+4>>2]=t[p+4>>2];t[y+8>>2]=t[p+8>>2];t[y+12>>2]=t[p+12>>2];t[n>>2]=t[p>>2];t[n+4>>2]=t[p+4>>2];t[n+8>>2]=t[p+8>>2];t[n+12>>2]=t[p+12>>2];n=7}}while(0);h=B;return n|0}function MG(e,A,r,a,n,f){e=e|0;A=A|0;r=r|0;a=a|0;n=n|0;f=f|0;var l=0.0,s=0,o=0,u=0.0,b=0,h=0.0,w=0.0,k=0;k=t[a+16>>2]|0;w=+c[k+16>>3];l=w-+c[k+88>>3];u=l+-4.0;o=OG(A,a,n,f,-1)|0;if(!o){b=~~(l+(u>=0.0?-3.5:-4.5));s=t[r>>2]|0;s=(s|0)>(b|0)?b:s}else{s=_G(A,a,o)|0;do{if(!s){b=t[o+16>>2]|0;l=+c[b+240>>3]+ +c[b+16>>3];if(!(i[b+156>>0]|0)){l=+(t[(t[A+16>>2]|0)+248>>2]|0)*.5+l;break}else{l=l+ +(t[r+8>>2]|0);break}}else l=+c[(t[s+16>>2]|0)+32>>3]+ +(t[r+8>>2]|0)}while(0);h=l=0.0?.5:-.5))}h=+(s|0);b=(i[k+156>>0]|0)==1;if(b?(t[k+104>>2]|0)!=0:0)u=w+10.0;else u=w+4.0+ +c[k+96>>3];o=OG(A,a,n,f,1)|0;if(!o){a=~~(u+(u>=0.0?.5:-.5));s=t[r+4>>2]|0;s=(s|0)<(a|0)?a:s}else{s=_G(A,a,o)|0;do{if(!s){a=t[o+16>>2]|0;l=+c[a+16>>3]-+c[a+88>>3];if(!(i[a+156>>0]|0)){l=l-+(t[(t[A+16>>2]|0)+248>>2]|0)*.5;break}else{l=l-+(t[r+8>>2]|0);break}}else l=+c[(t[s+16>>2]|0)+16>>3]-+(t[r+8>>2]|0)}while(0);u=l>u?l:u;s=~~(u+(u>=0.0?.5:-.5))}l=+(s|0);if(b?(t[k+104>>2]|0)!=0:0){l=l-+c[k+96>>3];if(l>3];A=t[(t[A+16>>2]|0)+196>>2]|0;k=t[k+232>>2]|0;u=w-+c[A+(k<<6)+16>>3];w=+c[A+(k<<6)+24>>3]+w;c[e>>3]=h;c[e+8>>3]=u;c[e+16>>3]=l;c[e+24>>3]=w;return}function VG(e){e=e|0;e=t[e+16>>2]|0;if((i[e+156>>0]|0)==1)if((t[e+176>>2]|0)>1)e=1;else e=(t[e+184>>2]|0)>1&1;else e=0;return e|0}function NG(e,A,r,i){e=e|0;A=A|0;r=r|0;i=+i;var a=0,n=0;n=h;h=h+32|0;a=n;switch(r|0){case 1:{TG(a,+c[A>>3],i,+c[A+16>>3],+c[A+8>>3]);break}case 4:{TG(a,+c[A>>3],+c[A+24>>3],+c[A+16>>3],i);break}default:{}}t[e>>2]=t[a>>2];t[e+4>>2]=t[a+4>>2];t[e+8>>2]=t[a+8>>2];t[e+12>>2]=t[a+12>>2];t[e+16>>2]=t[a+16>>2];t[e+20>>2]=t[a+20>>2];t[e+24>>2]=t[a+24>>2];t[e+28>>2]=t[a+28>>2];h=n;return}function RG(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0.0,n=0.0,f=0.0,l=0.0,s=0,o=0,u=0,b=0,h=0;o=t[A+16>>2]|0;s=o+(i<<5)|0;l=+c[s>>3];u=o+(i<<5)+8|0;n=+c[u>>3];b=o+(i<<5)+16|0;a=+c[b>>3];o=o+(i<<5)+24|0;f=+c[o>>3];if(l==a){r=t[(t[r+16>>2]|0)+196>>2]|0;h=i+1|0;l=+(t[A>>2]|0);n=+c[r+(h<<6)+24>>3]+ +c[(t[(t[t[r+(h<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3];a=+(t[A+4>>2]|0);f=+c[(t[(t[t[r+(i<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3]-+c[r+(i<<6)+16>>3];c[s>>3]=l;c[u>>3]=n;c[b>>3]=a;c[o>>3]=f}c[e>>3]=l;c[e+8>>3]=n;c[e+16>>3]=a;c[e+24>>3]=f;return}function xG(e){e=e|0;var A=0,r=0;e=t[e+16>>2]|0;r=e+16|0;A=0;while(1){e=t[t[e+180>>2]>>2]|0;e=t[(t[((t[e>>2]&3|0)==2?e:e+-48|0)+40>>2]|0)+16>>2]|0;if((i[e+156>>0]|0)!=1)break;if((t[e+184>>2]|0)!=1)break;if((t[e+176>>2]|0)!=1)break;if(+c[e+16>>3]!=+c[r>>3])break;A=A+1|0}return A|0}function JG(e,A,r,i,a,n){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;n=n|0;var f=0,l=0,s=0,c=0;c=h;h=h+32|0;s=c;f=SG(A,-1)|0;A=SG(A,1)|0;if(!((f|0)!=0?!(VR(f)|0):0))l=3;do{if((l|0)==3){if(A|0?(VR(A)|0)==0:0)break;f=jG(r,-1)|0;A=jG(r,1)|0;if(f|0?(VR(f)|0)==0:0)break;if(A|0?(VR(A)|0)==0:0)break;f=i+52|0;A=0;while(1){if((A|0)>=(t[f>>2]|0))break;r=i+56+(A<<5)|0;t[s>>2]=t[r>>2];t[s+4>>2]=t[r+4>>2];t[s+8>>2]=t[r+8>>2];t[s+12>>2]=t[r+12>>2];t[s+16>>2]=t[r+16>>2];t[s+20>>2]=t[r+20>>2];t[s+24>>2]=t[r+24>>2];t[s+28>>2]=t[r+28>>2];ER(e,s);A=A+1|0}f=t[e+80>>2]|0;l=n+-3|0;A=0;while(1){if((A|0)>=(n|0))break;i=153720+(A<<5)|0;t[s>>2]=t[i>>2];t[s+4>>2]=t[i+4>>2];t[s+8>>2]=t[i+8>>2];t[s+12>>2]=t[i+12>>2];t[s+16>>2]=t[i+16>>2];t[s+20>>2]=t[i+20>>2];t[s+24>>2]=t[i+24>>2];t[s+28>>2]=t[i+28>>2];ER(e,s);A=A+1|0}r=f+1|0;l=l+r|0;f=t[a+52>>2]|0;while(1){A=f+-1|0;if((f|0)<=0)break;f=a+56+(A<<5)|0;t[s>>2]=t[f>>2];t[s+4>>2]=t[f+4>>2];t[s+8>>2]=t[f+8>>2];t[s+12>>2]=t[f+12>>2];t[s+16>>2]=t[f+16>>2];t[s+20>>2]=t[f+20>>2];t[s+24>>2]=t[f+24>>2];t[s+28>>2]=t[f+28>>2];ER(e,s);f=A}UG(e,r,l)}}while(0);h=c;return}function HG(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0,n=0;a=t[i>>2]|0;while(1){if(!A)break;e=t[t[(t[(t[((t[e>>2]&3|0)==2?e:e+-48|0)+40>>2]|0)+16>>2]|0)+180>>2]>>2]|0;A=A+-1|0}t[i>>2]=a+1;n=r+(a<<4)|0;A=r+(a+-1<<4)|0;t[n>>2]=t[A>>2];t[n+4>>2]=t[A+4>>2];t[n+8>>2]=t[A+8>>2];t[n+12>>2]=t[A+12>>2];a=t[i>>2]|0;t[i>>2]=a+1;a=r+(a<<4)|0;t[a>>2]=t[A>>2];t[a+4>>2]=t[A+4>>2];t[a+8>>2]=t[A+8>>2];t[a+12>>2]=t[A+12>>2];a=r+(t[i>>2]<<4)|0;i=(t[(t[((t[e>>2]&3|0)==3?e:e+48|0)+40>>2]|0)+16>>2]|0)+16|0;t[a>>2]=t[i>>2];t[a+4>>2]=t[i+4>>2];t[a+8>>2]=t[i+8>>2];t[a+12>>2]=t[i+12>>2];return e|0}function PG(e,A){e=e|0;A=A|0;var r=0,a=0.0,n=0.0,f=0,l=0,s=0,o=0,u=0;u=A+84|0;o=A+80|0;r=0;A=e;e:while(1){l=t[((t[A>>2]&3|0)==2?A:A+-48|0)+40>>2]|0;s=l+16|0;if((i[(t[s>>2]|0)+156>>0]|0)!=1)break;if((I5[t[17300>>2]&63](l)|0)<<24>>24)break;A=t[o>>2]|0;while(1){if((r|0)>=(A|0))break e;if(!(+c[(t[u>>2]|0)+(r<<5)+8>>3]>+c[(t[s>>2]|0)+24>>3]))break;r=r+1|0}A=t[u>>2]|0;e=t[s>>2]|0;do{if(!(+c[A+(r<<5)+24>>3]<+c[e+24>>3])){n=+c[A+(r<<5)>>3];f=~~n;a=+c[A+(r<<5)+16>>3];if(!(t[e+104>>2]|0)){XG(l,f,~~((a+n)*.5),~~a);break}else{XG(l,f,~~a,~~(+c[e+96>>3]+a));break}}}while(0);A=t[t[(t[s>>2]|0)+180>>2]>>2]|0}return}function XG(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;e=t[e+16>>2]|0;c[e+16>>3]=+(r|0);c[e+88>>3]=+(r-A|0);c[e+96>>3]=+(i-r|0);return}function SG(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0,f=0,l=0;f=t[e>>2]&3;l=t[(t[(t[((f|0)==3?e:e+48|0)+40>>2]|0)+16>>2]|0)+180>>2]|0;f=((f|0)==2?e:e+-48|0)+40|0;n=0;e=0;while(1){i=t[l+(n<<2)>>2]|0;if(!i)break;a=t[(t[(t[((t[i>>2]&3|0)==2?i:i+-48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0;do{if((P(a-(t[(t[(t[f>>2]|0)+16>>2]|0)+236>>2]|0)|0,A)|0)>=1){r=t[i+16>>2]|0;if(!(t[r+8>>2]|0)){r=t[r+116>>2]|0;if(!r)break;if(!(t[(t[r+16>>2]|0)+8>>2]|0))break}if(e|0?(P((t[(t[(t[((t[e>>2]&3|0)==2?e:e+-48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0)-a|0,A)|0)<=0:0)break;e=i}}while(0);n=n+1|0}return e|0}function jG(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0,f=0,l=0;f=t[e>>2]&3;l=t[(t[(t[((f|0)==2?e:e+-48|0)+40>>2]|0)+16>>2]|0)+172>>2]|0;f=((f|0)==3?e:e+48|0)+40|0;n=0;e=0;while(1){i=t[l+(n<<2)>>2]|0;if(!i)break;a=t[(t[(t[((t[i>>2]&3|0)==3?i:i+48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0;do{if((P(a-(t[(t[(t[f>>2]|0)+16>>2]|0)+236>>2]|0)|0,A)|0)>=1){r=t[i+16>>2]|0;if(!(t[r+8>>2]|0)){r=t[r+116>>2]|0;if(!r)break;if(!(t[(t[r+16>>2]|0)+8>>2]|0))break}if(e|0?(P((t[(t[(t[((t[e>>2]&3|0)==3?e:e+48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0)-a|0,A)|0)<=0:0)break;e=i}}while(0);n=n+1|0}return e|0}function UG(e,A,r){e=e|0;A=A|0;r=r|0;var i=0.0,a=0,n=0,f=0,l=0,s=0,o=0,u=0.0;o=e+84|0;f=A+-1|0;while(1){if((f|0)>(r|0))break;a=t[o>>2]|0;l=a+(f<<5)|0;i=+c[l>>3];if(!(f-A&1)){a=a+(f<<5)+16|0;u=+c[a>>3];n=~~((u+i)*.5);if(i>=u){c[l>>3]=+(n+-8|0);c[a>>3]=+(n+8|0)}}else{a=a+(f<<5)+16|0;u=+c[a>>3];n=~~((u+i)*.5);if(i+16.0>u){c[l>>3]=+(n+-8|0);c[a>>3]=+(n+8|0)}}f=f+1|0}s=(t[e+80>>2]|0)+-1|0;n=0;while(1){if((n|0)>=(s|0))break;f=t[o>>2]|0;a=f+(n<<5)|0;l=n+1|0;e=f+(l<<5)|0;if(!((n|0)<(A|0)|(n|0)>(r|0))?(n-A&1|0)==0:0){i=+c[a>>3]+16.0;a=f+(l<<5)+16|0;if(i>+c[a>>3])c[a>>3]=i;i=+c[f+(n<<5)+16>>3]+-16.0;if(!(i<+c[e>>3])){n=l;continue}c[e>>3]=i;n=l;continue}if(!((n|0)<(r|0)&(l|0)>=(A|0))){n=l;continue}if(l-A&1|0){n=l;continue}i=+c[f+(l<<5)+16>>3];if(+c[a>>3]+16.0>i)c[a>>3]=i+-16.0;a=f+(n<<5)+16|0;i=+c[e>>3];if(!(+c[a>>3]+-16.0>3]=i+16.0;n=l}return}function TG(e,A,r,i,a){e=e|0;A=+A;r=+r;i=+i;a=+a;c[e>>3]=A;c[e+8>>3]=r;c[e+16>>3]=i;c[e+24>>3]=a;return}function OG(e,A,r,a,n){e=e|0;A=A|0;r=r|0;a=a|0;n=n|0;var f=0,l=0,s=0,c=0;c=t[(t[e+16>>2]|0)+196>>2]|0;f=t[A+16>>2]|0;s=t[f+232>>2]|0;l=c+(s<<6)|0;s=c+(s<<6)+4|0;f=t[f+236>>2]|0;e:do{f=f+n|0;if((f|0)<=-1){e=0;break}if((f|0)>=(t[l>>2]|0)){e=0;break}e=t[(t[s>>2]|0)+(f<<2)>>2]|0;c=t[e+16>>2]|0;switch(i[c+156>>0]|0){case 0:break e;case 1:{if(t[c+104>>2]|0)break e;break}default:{}}}while((KG(e,A,r,a)|0)<<24>>24!=0);return e|0}function _G(e,A,r){e=e|0;A=A|0;r=r|0;var a=0,n=0,f=0,l=0;A=t[A+16>>2]|0;if(!(i[A+156>>0]|0)){l=t[A+212>>2]|0;f=l}else{l=t[(t[(t[t[A+180>>2]>>2]|0)+16>>2]|0)+116>>2]|0;n=t[l>>2]&3;f=t[(t[(t[((n|0)==2?l:l+-48|0)+40>>2]|0)+16>>2]|0)+212>>2]|0;l=t[(t[(t[((n|0)==3?l:l+48|0)+40>>2]|0)+16>>2]|0)+212>>2]|0}A=t[r+16>>2]|0;if(!(i[A+156>>0]|0)){r=t[A+212>>2]|0;r=(r|0)==(e|0)?0:r;return((r|0)==(f|0)|((r|0)==0|(r|0)==(l|0))?0:r)|0}a=t[(t[(t[t[A+180>>2]>>2]|0)+16>>2]|0)+116>>2]|0;n=t[a>>2]&3;A=t[(t[(t[((n|0)==3?a:a+48|0)+40>>2]|0)+16>>2]|0)+212>>2]|0;A=(A|0)==(e|0)?0:A;if(!(!((A|0)==(f|0)|((A|0)==0|(A|0)==(l|0)))?(qG(A,r)|0)!=0:0)){A=t[(t[(t[((n|0)==2?a:a+-48|0)+40>>2]|0)+16>>2]|0)+212>>2]|0;A=(A|0)==(e|0)?0:A;if((A|0)==(f|0)|((A|0)==0|(A|0)==(l|0)))A=0;else{r=(qG(A,r)|0)==0;return(r?0:A)|0}}return A|0}function qG(e,A){e=e|0;A=A|0;var r=0,i=0.0,a=0.0;r=t[e+16>>2]|0;e=t[A+16>>2]|0;a=+c[e+16>>3];if((+c[r+16>>3]<=a?a<=+c[r+32>>3]:0)?(i=+c[e+24>>3],+c[r+24>>3]<=i):0)e=i<=+c[r+40>>3]&1;else e=0;return e|0}function KG(e,A,r,a){e=e|0;A=A|0;r=r|0;a=a|0;var n=0,f=0,l=0,s=0;l=t[e+16>>2]|0;s=(t[l+236>>2]|0)>(t[(t[A+16>>2]|0)+236>>2]|0);e:do{if((t[l+184>>2]|0)==1){A:do{if(a|0){f=0;e=t[t[l+180>>2]>>2]|0;while(1){if((f|0)>=2)break A;e=t[((t[e>>2]&3|0)==2?e:e+-48|0)+40>>2]|0;A=t[((t[a>>2]&3|0)==2?a:a+-48|0)+40>>2]|0;if((e|0)==(A|0))break A;n=t[e+16>>2]|0;e=t[A+16>>2]|0;if(s^(t[n+236>>2]|0)>(t[e+236>>2]|0)){e=1;break e}if((t[n+184>>2]|0)!=1)break A;if(!(i[n+156>>0]|0))break A;if((t[e+184>>2]|0)!=1)break A;if(!(i[e+156>>0]|0))break A;f=f+1|0;a=t[t[e+180>>2]>>2]|0;e=t[t[n+180>>2]>>2]|0}}}while(0);if(r|0?(t[l+176>>2]|0)==1:0){n=0;A=r;e=t[t[l+172>>2]>>2]|0;while(1){if((n|0)>=2){e=0;break e}e=t[((t[e>>2]&3|0)==3?e:e+48|0)+40>>2]|0;A=t[((t[A>>2]&3|0)==3?A:A+48|0)+40>>2]|0;if((e|0)==(A|0)){e=0;break e}a=t[e+16>>2]|0;e=t[A+16>>2]|0;if(s^(t[a+236>>2]|0)>(t[e+236>>2]|0)){e=1;break e}if((t[a+176>>2]|0)!=1){e=0;break e}if(!(i[a+156>>0]|0)){e=0;break e}if((t[e+176>>2]|0)!=1){e=0;break e}if(!(i[e+156>>0]|0)){e=0;break e}n=n+1|0;A=t[t[e+172>>2]>>2]|0;e=t[t[a+172>>2]>>2]|0}}else e=0}else e=0}while(0);return e|0}function $G(e,A,r){e=e|0;A=A|0;r=r|0;var i=0.0;i=+c[r+8>>3]+ +c[A+8>>3];c[e>>3]=+c[r>>3]+ +c[A>>3];c[e+8>>3]=i;return}function eL(e,A,r){e=e|0;A=A|0;r=r|0;var i=0.0,a=0.0;i=+c[A+8>>3];a=+c[A>>3];return(~~((+c[r>>3]-a)*(+c[e+8>>3]-i)-(+c[e>>3]-a)*(+c[r+8>>3]-i))|0)>0|0}function AL(e,A,r,a,n,f){e=e|0;A=A|0;r=r|0;a=a|0;n=n|0;f=f|0;var l=0,s=0,o=0.0,u=0,b=0,w=0,k=0,d=0,v=0.0,g=0,m=0,p=0.0,E=0.0,B=0,y=0,C=0,I=0,Z=0,G=0,L=0,Q=0,D=0,z=0,W=0,Y=0,F=0,M=0,V=0,N=0,R=0,x=0,J=0,H=0,P=0,X=0,S=0;P=h;h=h+256|0;L=P+232|0;G=P+216|0;J=P+88|0;x=P+80|0;M=P+64|0;V=P+200|0;N=P+184|0;R=P;Q=P+168|0;D=P+152|0;z=P+136|0;W=P+120|0;Y=P+104|0;Z=t[n>>2]&3;F=t[((Z|0)==3?n:n+48|0)+40>>2]|0;Z=t[((Z|0)==2?n:n+-48|0)+40>>2]|0;do{if((oN(F)|0)!=2?(oN(Z)|0)!=2:0){n=0;l=0;s=0;while(1){if((s|0)>=(a|0))break;I=t[(t[A+(s+r<<2)>>2]|0)+16>>2]|0;n=n+((t[I+96>>2]|0)!=0&1)|0;if(!((i[I+44>>0]|0)==0?(i[I+84>>0]|0)==0:0))l=1;s=s+1|0}if(!l)if(!n){iL(F,Z,A,r,a,f);break}else{lL(F,Z,A,r,a,f,n);break}y=KF(156)|0;C=sL(e,y)|0;g=Rv(C,85478,1)|0;Sd(g,137483,280,1)|0;Xw(g,87171,87185)|0;o=+c[(t[Z+16>>2]|0)+16>>3];v=+c[(t[F+16>>2]|0)+16>>3];I=e+16|0;k=(t[(t[I>>2]|0)+116>>2]&1|0)==0;d=k?Z:F;k=k?F:Z;g=cL(g,k)|0;m=cL(C,d)|0;n=0;w=0;while(1){if((w|0)>=(a|0))break;l=A+(w+r<<2)|0;while(1){b=t[l>>2]|0;u=b+16|0;l=t[u>>2]|0;if(!(i[l+112>>0]|0))break;else l=l+116|0}if((t[((t[b>>2]&3|0)==3?b:b+48|0)+40>>2]|0)==(k|0))s=oL(C,g,m,b)|0;else s=oL(C,m,g,b)|0;l=t[u>>2]|0;t[l+120>>2]=s;if(!n)if((i[l+44>>0]|0)==0?(i[l+84>>0]|0)==0:0){t[(t[s+16>>2]|0)+120>>2]=b;n=s}else n=0;w=w+1|0}if(!n)B=lk(C,g,m,0,1)|0;else B=n;Mw(B,t[47174]|0,85482)|0;n=C+16|0;u=t[n>>2]|0;t[u+144>>2]=t[(t[I>>2]|0)+144>>2];t[u+188>>2]=C;DJ(C,f);eG(C);VD(C,0);UL(C,0);_Q(C,0);k=k+16|0;f=t[k>>2]|0;u=t[d+16>>2]|0;d=g+16|0;b=t[d>>2]|0;w=b+16|0;p=+(~~o|0);E=+(~~((+c[(t[m+16>>2]|0)+16>>3]+ +c[w>>3])*.5)|0);o=+(~~v|0);v=+(~~((+c[f+16>>3]-+c[f+96>>3]+ +c[u+16>>3]+ +c[u+88>>3])*.5)|0);u=b+24|0;n=(t[n>>2]|0)+192|0;while(1){l=t[n>>2]|0;if(!l)break;do{if((l|0)!=(g|0)){n=t[l+16>>2]|0;s=n+24|0;if((l|0)==(m|0)){c[s>>3]=o;c[n+16>>3]=E;break}else{c[s>>3]=v;break}}else{c[u>>3]=p;c[w>>3]=E;n=b}}while(0);n=n+164|0}Dz(C);BG(C,0);MV(C);s=t[k>>2]|0;n=t[d>>2]|0;if(!(t[(t[I>>2]|0)+116>>2]&1)){l=n+16|0;o=+c[s+24>>3]-+c[n+24>>3]}else{l=n+24|0;o=+c[n+16>>3]+ +c[s+24>>3]}c[M>>3]=+c[s+16>>3]-+c[l>>3];c[M+8>>3]=o;f=R+16|0;g=R+32|0;m=R+48|0;d=0;while(1){if((d|0)>=(a|0))break;n=A+(d+r<<2)|0;while(1){l=t[n>>2]|0;k=l+16|0;n=t[k>>2]|0;if(!(i[n+112>>0]|0))break;else n=n+116|0}b=t[n+120>>2]|0;w=b+16|0;n=t[w>>2]|0;if(!((b|0)==(B|0)&(t[n+120>>2]|0)==0)){u=t[t[n+8>>2]>>2]|0;b=u+4|0;l=gR(l,t[b>>2]|0)|0;t[l+8>>2]=t[u+8>>2];n=l+16|0;s=u+16|0;X=t[(t[I>>2]|0)+116>>2]&1;t[G>>2]=t[s>>2];t[G+4>>2]=t[s+4>>2];t[G+8>>2]=t[s+8>>2];t[G+12>>2]=t[s+12>>2];t[L>>2]=t[M>>2];t[L+4>>2]=t[M+4>>2];t[L+8>>2]=t[M+8>>2];t[L+12>>2]=t[M+12>>2];uL(V,G,L,X);t[n>>2]=t[V>>2];t[n+4>>2]=t[V+4>>2];t[n+8>>2]=t[V+8>>2];t[n+12>>2]=t[V+12>>2];t[l+12>>2]=t[u+12>>2];n=l+32|0;X=u+32|0;s=t[(t[I>>2]|0)+116>>2]&1;t[G>>2]=t[X>>2];t[G+4>>2]=t[X+4>>2];t[G+8>>2]=t[X+8>>2];t[G+12>>2]=t[X+12>>2];t[L>>2]=t[M>>2];t[L+4>>2]=t[M+4>>2];t[L+8>>2]=t[M+8>>2];t[L+12>>2]=t[M+12>>2];uL(N,G,L,s);t[n>>2]=t[N>>2];t[n+4>>2]=t[N+4>>2];t[n+8>>2]=t[N+8>>2];t[n+12>>2]=t[N+12>>2];n=0;while(1){if((n|0)>=(t[b>>2]|0))break;s=(t[l>>2]|0)+(n<<4)|0;S=(t[u>>2]|0)+(n<<4)|0;X=t[(t[I>>2]|0)+116>>2]&1;t[G>>2]=t[S>>2];t[G+4>>2]=t[S+4>>2];t[G+8>>2]=t[S+8>>2];t[G+12>>2]=t[S+12>>2];t[L>>2]=t[M>>2];t[L+4>>2]=t[M+4>>2];t[L+8>>2]=t[M+8>>2];t[L+12>>2]=t[M+12>>2];uL(Q,G,L,X);t[s>>2]=t[Q>>2];t[s+4>>2]=t[Q+4>>2];t[s+8>>2]=t[Q+8>>2];t[s+12>>2]=t[Q+12>>2];t[R>>2]=t[Q>>2];t[R+4>>2]=t[Q+4>>2];t[R+8>>2]=t[Q+8>>2];t[R+12>>2]=t[Q+12>>2];s=n+1|0;if((s|0)>=(t[b>>2]|0)){H=48;break}X=(t[l>>2]|0)+(s<<4)|0;s=(t[u>>2]|0)+(s<<4)|0;S=t[(t[I>>2]|0)+116>>2]&1;t[G>>2]=t[s>>2];t[G+4>>2]=t[s+4>>2];t[G+8>>2]=t[s+8>>2];t[G+12>>2]=t[s+12>>2];t[L>>2]=t[M>>2];t[L+4>>2]=t[M+4>>2];t[L+8>>2]=t[M+8>>2];t[L+12>>2]=t[M+12>>2];uL(D,G,L,S);t[X>>2]=t[D>>2];t[X+4>>2]=t[D+4>>2];t[X+8>>2]=t[D+8>>2];t[X+12>>2]=t[D+12>>2];t[f>>2]=t[D>>2];t[f+4>>2]=t[D+4>>2];t[f+8>>2]=t[D+8>>2];t[f+12>>2]=t[D+12>>2];X=n+2|0;S=(t[l>>2]|0)+(X<<4)|0;X=(t[u>>2]|0)+(X<<4)|0;s=t[(t[I>>2]|0)+116>>2]&1;t[G>>2]=t[X>>2];t[G+4>>2]=t[X+4>>2];t[G+8>>2]=t[X+8>>2];t[G+12>>2]=t[X+12>>2];t[L>>2]=t[M>>2];t[L+4>>2]=t[M+4>>2];t[L+8>>2]=t[M+8>>2];t[L+12>>2]=t[M+12>>2];uL(z,G,L,s);t[S>>2]=t[z>>2];t[S+4>>2]=t[z+4>>2];t[S+8>>2]=t[z+8>>2];t[S+12>>2]=t[z+12>>2];t[g>>2]=t[z>>2];t[g+4>>2]=t[z+4>>2];t[g+8>>2]=t[z+8>>2];t[g+12>>2]=t[z+12>>2];S=n+3|0;s=(t[u>>2]|0)+(S<<4)|0;X=t[(t[I>>2]|0)+116>>2]&1;t[G>>2]=t[s>>2];t[G+4>>2]=t[s+4>>2];t[G+8>>2]=t[s+8>>2];t[G+12>>2]=t[s+12>>2];t[L>>2]=t[M>>2];t[L+4>>2]=t[M+4>>2];t[L+8>>2]=t[M+8>>2];t[L+12>>2]=t[M+12>>2];uL(W,G,L,X);t[m>>2]=t[W>>2];t[m+4>>2]=t[W+4>>2];t[m+8>>2]=t[W+8>>2];t[m+12>>2]=t[W+12>>2];oB((t[I>>2]|0)+16|0,R);n=S}if((H|0)==48)H=0;n=t[(t[k>>2]|0)+96>>2]|0;if(n|0){S=n+56|0;w=(t[(t[w>>2]|0)+96>>2]|0)+56|0;X=t[(t[I>>2]|0)+116>>2]&1;t[G>>2]=t[w>>2];t[G+4>>2]=t[w+4>>2];t[G+8>>2]=t[w+8>>2];t[G+12>>2]=t[w+12>>2];t[L>>2]=t[M>>2];t[L+4>>2]=t[M+4>>2];t[L+8>>2]=t[M+8>>2];t[L+12>>2]=t[M+12>>2];uL(Y,G,L,X);t[S>>2]=t[Y>>2];t[S+4>>2]=t[Y+4>>2];t[S+8>>2]=t[Y+8>>2];t[S+12>>2]=t[Y+12>>2];S=t[(t[k>>2]|0)+96>>2]|0;i[S+81>>0]=1;Hx(e,S)}}d=d+1|0}bL(C,y)}else H=3}while(0);if((H|0)==3?(t[46738]|0)==0:0){t[46738]=1;nw(0,85355,x)|0;H=Mk(F)|0;X=(Bk(e)|0)!=0;S=Mk(Z)|0;t[J>>2]=H;t[J+4>>2]=X?137738:141747;t[J+8>>2]=S;nw(3,85461,J)|0}h=P;return}function rL(e,A,r,a,n){e=e|0;A=A|0;r=r|0;a=a|0;n=n|0;var f=0,l=0,s=0,o=0,u=0,b=0,w=0,k=0,d=0,v=0,g=0,m=0,p=0,E=0,B=0,y=0,C=0,I=0.0,Z=0.0,G=0.0,L=0.0,Q=0.0;C=h;h=h+1600|0;m=C+1552|0;u=C+1536|0;g=C+840|0;p=C+144|0;E=C+1584|0;l=C+32|0;v=C+16|0;b=C;k=t[a>>2]&3;w=t[((k|0)==3?a:a+48|0)+40>>2]|0;B=a+-48|0;k=t[((k|0)==2?a:B)+40>>2]|0;d=a+16|0;s=t[d>>2]|0;f=t[s+172>>2]|0;while(1){o=t[(t[f+16>>2]|0)+172>>2]|0;if(!o)break;else f=o}s=(t[s+96>>2]|0)+56|0;f=(t[((t[f>>2]&3|0)==3?f:f+48|0)+40>>2]|0)+16|0;o=(t[f>>2]|0)+16|0;t[s>>2]=t[o>>2];t[s+4>>2]=t[o+4>>2];t[s+8>>2]=t[o+8>>2];t[s+12>>2]=t[o+12>>2];s=t[d>>2]|0;i[(t[s+96>>2]|0)+81>>0]=1;if((n|0)!=2){s=t[f>>2]|0;G=+c[s+16>>3];Q=G-+c[s+88>>3];G=+c[s+96>>3]+G;Z=+c[s+24>>3];L=+c[s+80>>3]*.5+Z;s=t[(t[e+16>>2]|0)+196>>2]|0;o=t[w+16>>2]|0;l=t[o+232>>2]|0;Z=+(~~(+(~~(Z-+c[s+(l<<6)+16>>3]-+c[o+24>>3]+ +c[s+(l<<6)+24>>3])|0)*.16666666666666666)|0);Z=L-(Z<5.0?5.0:Z);tL(e,A,r,w,a,g,1);tL(e,A,r,k,a,p,0);l=g+52|0;s=t[l>>2]|0;o=s+-1|0;I=+c[g+56+(o<<5)>>3];c[19215]=I;c[19216]=+c[g+56+(o<<5)+24>>3];c[19217]=Q;c[19218]=Z;c[19219]=I;c[19220]=Z;o=p+52|0;f=(t[o>>2]|0)+-1|0;I=+c[p+56+(f<<5)+16>>3];c[19221]=I;c[19222]=L;c[19223]=G;c[19226]=Z;c[19224]=+c[p+56+(f<<5)+24>>3];c[19225]=I;f=0;while(1){if((f|0)>=(s|0)){f=0;break}s=g+56+(f<<5)|0;t[m>>2]=t[s>>2];t[m+4>>2]=t[s+4>>2];t[m+8>>2]=t[s+8>>2];t[m+12>>2]=t[s+12>>2];t[m+16>>2]=t[s+16>>2];t[m+20>>2]=t[s+20>>2];t[m+24>>2]=t[s+24>>2];t[m+28>>2]=t[s+28>>2];ER(r,m);f=f+1|0;s=t[l>>2]|0}while(1){if((f|0)==3)break;g=153720+(f<<5)|0;t[m>>2]=t[g>>2];t[m+4>>2]=t[g+4>>2];t[m+8>>2]=t[g+8>>2];t[m+12>>2]=t[g+12>>2];t[m+16>>2]=t[g+16>>2];t[m+20>>2]=t[g+20>>2];t[m+24>>2]=t[g+24>>2];t[m+28>>2]=t[g+28>>2];ER(r,m);f=f+1|0}l=t[o>>2]|0;while(1){f=l+-1|0;if((l|0)<=0)break;l=p+56+(f<<5)|0;t[m>>2]=t[l>>2];t[m+4>>2]=t[l+4>>2];t[m+8>>2]=t[l+8>>2];t[m+12>>2]=t[l+12>>2];t[m+16>>2]=t[l+16>>2];t[m+20>>2]=t[l+20>>2];t[m+24>>2]=t[l+24>>2];t[m+28>>2]=t[l+28>>2];ER(r,m);l=f}if((n|0)==10)l=_V(r,E)|0;else l=rN(r,E)|0;f=t[E>>2]|0;if(f|0)y=17}else{f=(t[w+16>>2]|0)+16|0;p=s+16|0;t[u>>2]=t[f>>2];t[u+4>>2]=t[f+4>>2];t[u+8>>2]=t[f+8>>2];t[u+12>>2]=t[f+12>>2];t[m>>2]=t[p>>2];t[m+4>>2]=t[p+4>>2];t[m+8>>2]=t[p+8>>2];t[m+12>>2]=t[p+12>>2];$G(v,u,m);p=(t[k+16>>2]|0)+16|0;f=(t[d>>2]|0)+56|0;t[u>>2]=t[p>>2];t[u+4>>2]=t[p+4>>2];t[u+8>>2]=t[p+8>>2];t[u+12>>2]=t[p+12>>2];t[m>>2]=t[f>>2];t[m+4>>2]=t[f+4>>2];t[m+8>>2]=t[f+8>>2];t[m+12>>2]=t[f+12>>2];$G(b,u,m);f=t[(t[d>>2]|0)+96>>2]|0;L=+c[f+56>>3];Q=+c[f+64>>3]-+c[f+32>>3]*.5;f=l+16|0;t[l>>2]=t[v>>2];t[l+4>>2]=t[v+4>>2];t[l+8>>2]=t[v+8>>2];t[l+12>>2]=t[v+12>>2];t[f>>2]=t[v>>2];t[f+4>>2]=t[v+4>>2];t[f+8>>2]=t[v+8>>2];t[f+12>>2]=t[v+12>>2];f=l+32|0;p=l+48|0;y=l+64|0;c[l+64>>3]=L;c[l+72>>3]=Q;t[p>>2]=t[y>>2];t[p+4>>2]=t[y+4>>2];t[p+8>>2]=t[y+8>>2];t[p+12>>2]=t[y+12>>2];t[f>>2]=t[y>>2];t[f+4>>2]=t[y+4>>2];t[f+8>>2]=t[y+8>>2];t[f+12>>2]=t[y+12>>2];f=l+80|0;y=l+96|0;t[y>>2]=t[b>>2];t[y+4>>2]=t[b+4>>2];t[y+8>>2]=t[b+8>>2];t[y+12>>2]=t[b+12>>2];t[f>>2]=t[b>>2];t[f+4>>2]=t[b+4>>2];t[f+8>>2]=t[b+8>>2];t[f+12>>2]=t[b+12>>2];t[E>>2]=7;f=7;y=17}if((y|0)==17)mR(a,t[((t[a>>2]&3|0)==2?a:B)+40>>2]|0,l,f,17296);h=C;return}function iL(e,A,r,i,a,n){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;n=n|0;var f=0.0,l=0,s=0,o=0,u=0,b=0,w=0,k=0,d=0.0,v=0,g=0.0,m=0,p=0,E=0,B=0,y=0,C=0.0,I=0.0,Z=0.0,G=0.0,L=0.0,Q=0,D=0,z=0,W=0,Y=0,F=0,M=0,V=0,N=0,R=0;R=h;h=h+352|0;B=R+336|0;E=R+320|0;V=R+128|0;m=R+304|0;y=R+288|0;N=R+112|0;Q=R+96|0;D=R+80|0;z=R+64|0;W=R+48|0;Y=R+32|0;F=R+16|0;M=R;e=e+16|0;k=(t[e>>2]|0)+16|0;p=(t[r+(i<<2)>>2]|0)+16|0;v=(t[p>>2]|0)+16|0;t[E>>2]=t[k>>2];t[E+4>>2]=t[k+4>>2];t[E+8>>2]=t[k+8>>2];t[E+12>>2]=t[k+12>>2];t[B>>2]=t[v>>2];t[B+4>>2]=t[v+4>>2];t[B+8>>2]=t[v+8>>2];t[B+12>>2]=t[v+12>>2];$G(m,E,B);G=+c[m>>3];L=+c[m+8>>3];m=(t[A+16>>2]|0)+16|0;p=(t[p>>2]|0)+56|0;t[E>>2]=t[m>>2];t[E+4>>2]=t[m+4>>2];t[E+8>>2]=t[m+8>>2];t[E+12>>2]=t[m+12>>2];t[B>>2]=t[p>>2];t[B+4>>2]=t[p+4>>2];t[B+8>>2]=t[p+8>>2];t[B+12>>2]=t[p+12>>2];$G(y,E,B);I=+c[y>>3];Z=+c[y+8>>3];if((a|0)>1){C=+c[(t[e>>2]|0)+80>>3];f=C*.5;C=C/+(a+-1|0)}else{f=0.0;C=0.0}w=(n|8|0)==10;o=V+8|0;k=V+16|0;d=(I+G*2.0)*.3333333333333333;v=V+32|0;g=(I*2.0+G)*.3333333333333333;u=V+24|0;m=V+48|0;p=V+64|0;E=V+80|0;B=V+96|0;y=V+112|0;s=V+128|0;b=V+136|0;f=L-f;A=0;while(1){if((A|0)>=(a|0))break;l=t[r+(A+i<<2)>>2]|0;c[V>>3]=G;c[o>>3]=L;if(w){fL(N,d,f);t[k>>2]=t[N>>2];t[k+4>>2]=t[N+4>>2];t[k+8>>2]=t[N+8>>2];t[k+12>>2]=t[N+12>>2];fL(Q,g,f);t[v>>2]=t[Q>>2];t[v+4>>2]=t[Q+4>>2];t[v+8>>2]=t[Q+8>>2];t[v+12>>2]=t[Q+12>>2];e=4;n=3}else{c[k>>3]=G;c[u>>3]=L;fL(D,d,f);t[v>>2]=t[D>>2];t[v+4>>2]=t[D+4>>2];t[v+8>>2]=t[D+8>>2];t[v+12>>2]=t[D+12>>2];fL(z,d,f);t[m>>2]=t[z>>2];t[m+4>>2]=t[z+4>>2];t[m+8>>2]=t[z+8>>2];t[m+12>>2]=t[z+12>>2];fL(W,d,f);t[p>>2]=t[W>>2];t[p+4>>2]=t[W+4>>2];t[p+8>>2]=t[W+8>>2];t[p+12>>2]=t[W+12>>2];fL(Y,g,f);t[E>>2]=t[Y>>2];t[E+4>>2]=t[Y+4>>2];t[E+8>>2]=t[Y+8>>2];t[E+12>>2]=t[Y+12>>2];fL(F,g,f);t[B>>2]=t[F>>2];t[B+4>>2]=t[F+4>>2];t[B+8>>2]=t[F+8>>2];t[B+12>>2]=t[F+12>>2];fL(M,g,f);t[y>>2]=t[M>>2];t[y+4>>2]=t[M+4>>2];t[y+8>>2]=t[M+8>>2];t[y+12>>2]=t[M+12>>2];c[s>>3]=I;c[b>>3]=Z;e=10;n=9}c[V+(n<<4)>>3]=I;c[V+(n<<4)+8>>3]=Z;mR(l,t[((t[l>>2]&3|0)==2?l:l+-48|0)+40>>2]|0,V,e,17296);f=f+C;A=A+1|0}h=R;return}function aL(e,A,r,i,n,f,l,s){e=e|0;A=A|0;r=r|0;i=i|0;n=n|0;f=f|0;l=l|0;s=s|0;var o=0,u=0.0,b=0,w=0,k=0,d=0,v=0.0,g=0,m=0,p=0,E=0,B=0,y=0,C=0.0,I=0.0,Z=0.0,G=0.0,L=0.0;B=h;h=h+1440|0;g=B+1392|0;p=B+1424|0;E=B+696|0;m=B;d=t[l>>2]&3;k=t[((d|0)==3?l:l+48|0)+40>>2]|0;d=t[((d|0)==2?l:l+-48|0)+40>>2]|0;o=t[k+16>>2]|0;b=t[o+232>>2]|0;w=t[e+16>>2]|0;if((b|0)<(a[w+238>>1]|0)){y=t[w+196>>2]|0;w=b+1|0;u=+c[o+24>>3]-+c[y+(b<<6)+32>>3]-+c[(t[(t[t[y+(w<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3]-+c[y+(w<<6)+40>>3]}else u=+(t[w+252>>2]|0);C=+(f+1|0);v=+(t[A+12>>2]|0)/C;u=u/C;nL(e,A,r,k,l,E,1);nL(e,A,r,d,l,m,0);d=E+52|0;l=m+52|0;e=(s|0)==0;A=r+80|0;o=0;while(1){if((o|0)>=(f|0))break;k=t[i+(o+n<<2)>>2]|0;w=t[d>>2]|0;b=w+-1|0;L=+c[E+56+(b<<5)>>3];Z=+c[E+56+(b<<5)+8>>3];G=+c[E+56+(b<<5)+16>>3];c[19215]=L;c[19218]=Z;o=o+1|0;C=+(o|0);I=v*C;c[19217]=G+I;C=Z-u*C;c[19216]=C;c[19219]=L;c[19222]=C;b=(t[l>>2]|0)+-1|0;L=+c[m+56+(b<<5)+16>>3];c[19221]=L;c[19220]=C-u;Z=+c[m+56+(b<<5)>>3];G=+c[m+56+(b<<5)+8>>3];c[19225]=L;c[19226]=G;c[19223]=Z-I;c[19224]=C;b=0;while(1){if((b|0)>=(w|0)){b=0;break}w=E+56+(b<<5)|0;t[g>>2]=t[w>>2];t[g+4>>2]=t[w+4>>2];t[g+8>>2]=t[w+8>>2];t[g+12>>2]=t[w+12>>2];t[g+16>>2]=t[w+16>>2];t[g+20>>2]=t[w+20>>2];t[g+24>>2]=t[w+24>>2];t[g+28>>2]=t[w+28>>2];ER(r,g);b=b+1|0;w=t[d>>2]|0}while(1){if((b|0)==3)break;y=153720+(b<<5)|0;t[g>>2]=t[y>>2];t[g+4>>2]=t[y+4>>2];t[g+8>>2]=t[y+8>>2];t[g+12>>2]=t[y+12>>2];t[g+16>>2]=t[y+16>>2];t[g+20>>2]=t[y+20>>2];t[g+24>>2]=t[y+24>>2];t[g+28>>2]=t[y+28>>2];ER(r,g);b=b+1|0}w=t[l>>2]|0;while(1){b=w+-1|0;if((w|0)<=0)break;w=m+56+(b<<5)|0;t[g>>2]=t[w>>2];t[g+4>>2]=t[w+4>>2];t[g+8>>2]=t[w+8>>2];t[g+12>>2]=t[w+12>>2];t[g+16>>2]=t[w+16>>2];t[g+20>>2]=t[w+20>>2];t[g+24>>2]=t[w+24>>2];t[g+28>>2]=t[w+28>>2];ER(r,g);w=b}if(e)b=rN(r,p)|0;else b=_V(r,p)|0;w=t[p>>2]|0;if(!w)break;mR(k,t[((t[k>>2]&3|0)==2?k:k+-48|0)+40>>2]|0,b,w,17296);t[A>>2]=0}h=B;return}function tL(e,A,r,i,a,n,f){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;n=n|0;f=f|0;var l=0,s=0,o=0,u=0,b=0,w=0.0;u=h;h=h+128|0;l=u+96|0;s=u+64|0;b=u+32|0;o=u;MG(b,e,A,i,0,a);t[n>>2]=t[b>>2];t[n+4>>2]=t[b+4>>2];t[n+8>>2]=t[b+8>>2];t[n+12>>2]=t[b+12>>2];t[n+16>>2]=t[b+16>>2];t[n+20>>2]=t[b+20>>2];t[n+24>>2]=t[b+24>>2];t[n+28>>2]=t[b+28>>2];t[s>>2]=t[b>>2];t[s+4>>2]=t[b+4>>2];t[s+8>>2]=t[b+8>>2];t[s+12>>2]=t[b+12>>2];t[s+16>>2]=t[b+16>>2];t[s+20>>2]=t[b+20>>2];t[s+24>>2]=t[b+24>>2];t[s+28>>2]=t[b+28>>2];t[n+48>>2]=4;if(!(f<<24>>24))IR(r,a,2,n,0);else BR(r,a,2,n,0);A=n+52|0;a=(t[A>>2]|0)+-1|0;b=s+24|0;c[b>>3]=+c[n+56+(a<<5)+24>>3];f=s+8|0;c[f>>3]=+c[n+56+(a<<5)+8>>3];i=t[i+16>>2]|0;w=+c[(t[(t[e+16>>2]|0)+196>>2]|0)+(t[i+232>>2]<<6)+24>>3]+ +c[i+24>>3];t[l>>2]=t[s>>2];t[l+4>>2]=t[s+4>>2];t[l+8>>2]=t[s+8>>2];t[l+12>>2]=t[s+12>>2];t[l+16>>2]=t[s+16>>2];t[l+20>>2]=t[s+20>>2];t[l+24>>2]=t[s+24>>2];t[l+28>>2]=t[s+28>>2];NG(o,l,4,w);t[s>>2]=t[o>>2];t[s+4>>2]=t[o+4>>2];t[s+8>>2]=t[o+8>>2];t[s+12>>2]=t[o+12>>2];t[s+16>>2]=t[o+16>>2];t[s+20>>2]=t[o+20>>2];t[s+24>>2]=t[o+24>>2];t[s+28>>2]=t[o+28>>2];if(+c[s>>3]<+c[s+16>>3]?+c[f>>3]<+c[b>>3]:0){b=t[A>>2]|0;t[A>>2]=b+1;b=n+56+(b<<5)|0;t[b>>2]=t[s>>2];t[b+4>>2]=t[s+4>>2];t[b+8>>2]=t[s+8>>2];t[b+12>>2]=t[s+12>>2];t[b+16>>2]=t[s+16>>2];t[b+20>>2]=t[s+20>>2];t[b+24>>2]=t[s+24>>2];t[b+28>>2]=t[s+28>>2]}h=u;return}function nL(e,A,r,i,a,n,f){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;n=n|0;f=f|0;var l=0,s=0,o=0,u=0,b=0,w=0.0;u=h;h=h+128|0;l=u+96|0;s=u+64|0;b=u+32|0;o=u;MG(b,e,A,i,0,a);t[n>>2]=t[b>>2];t[n+4>>2]=t[b+4>>2];t[n+8>>2]=t[b+8>>2];t[n+12>>2]=t[b+12>>2];t[n+16>>2]=t[b+16>>2];t[n+20>>2]=t[b+20>>2];t[n+24>>2]=t[b+24>>2];t[n+28>>2]=t[b+28>>2];t[s>>2]=t[b>>2];t[s+4>>2]=t[b+4>>2];t[s+8>>2]=t[b+8>>2];t[s+12>>2]=t[b+12>>2];t[s+16>>2]=t[b+16>>2];t[s+20>>2]=t[b+20>>2];t[s+24>>2]=t[b+24>>2];t[s+28>>2]=t[b+28>>2];t[n+48>>2]=1;if(!(f<<24>>24))IR(r,a,2,n,0);else BR(r,a,2,n,0);A=n+52|0;a=(t[A>>2]|0)+-1|0;b=s+24|0;c[b>>3]=+c[n+56+(a<<5)+24>>3];f=s+8|0;c[f>>3]=+c[n+56+(a<<5)+8>>3];i=t[i+16>>2]|0;w=+c[i+24>>3]-+c[(t[(t[e+16>>2]|0)+196>>2]|0)+(t[i+232>>2]<<6)+24>>3];t[l>>2]=t[s>>2];t[l+4>>2]=t[s+4>>2];t[l+8>>2]=t[s+8>>2];t[l+12>>2]=t[s+12>>2];t[l+16>>2]=t[s+16>>2];t[l+20>>2]=t[s+20>>2];t[l+24>>2]=t[s+24>>2];t[l+28>>2]=t[s+28>>2];NG(o,l,1,w);t[s>>2]=t[o>>2];t[s+4>>2]=t[o+4>>2];t[s+8>>2]=t[o+8>>2];t[s+12>>2]=t[o+12>>2];t[s+16>>2]=t[o+16>>2];t[s+20>>2]=t[o+20>>2];t[s+24>>2]=t[o+24>>2];t[s+28>>2]=t[o+28>>2];if(+c[s>>3]<+c[s+16>>3]?+c[f>>3]<+c[b>>3]:0){b=t[A>>2]|0;t[A>>2]=b+1;b=n+56+(b<<5)|0;t[b>>2]=t[s>>2];t[b+4>>2]=t[s+4>>2];t[b+8>>2]=t[s+8>>2];t[b+12>>2]=t[s+12>>2];t[b+16>>2]=t[s+16>>2];t[b+20>>2]=t[s+20>>2];t[b+24>>2]=t[s+24>>2];t[b+28>>2]=t[s+28>>2]}h=u;return}function fL(e,A,r){e=e|0;A=+A;r=+r;c[e>>3]=A;c[e+8>>3]=r;return}function lL(e,A,r,a,n,f,l){e=e|0;A=A|0;r=r|0;a=a|0;n=n|0;f=f|0;l=l|0;var s=0,o=0,u=0,b=0,w=0.0,k=0.0,d=0.0,v=0.0,g=0.0,m=0.0,p=0.0,E=0.0,B=0.0,y=0,C=0,I=0.0,Z=0.0,G=0,L=0,Q=0,D=0,z=0,W=0,Y=0,F=0,M=0,V=0,N=0,R=0,x=0,J=0,H=0,P=0,X=0,S=0,j=0,U=0,T=0,O=0,_=0,q=0.0;_=h;h=h+288|0;P=_+256|0;H=_+240|0;J=_+224|0;U=_+280|0;T=_+272|0;O=_+32|0;X=_+16|0;S=_;o=_+208|0;u=_+192|0;b=t[r+(a<<2)>>2]|0;j=KF(n<<2)|0;s=0;while(1){if((s|0)>=(n|0))break;t[j+(s<<2)>>2]=t[r+(s+a<<2)>>2];s=s+1|0}_4(j,n,4,59);r=e+16|0;a=(t[r>>2]|0)+16|0;b=b+16|0;G=(t[b>>2]|0)+16|0;t[H>>2]=t[a>>2];t[H+4>>2]=t[a+4>>2];t[H+8>>2]=t[a+8>>2];t[H+12>>2]=t[a+12>>2];t[P>>2]=t[G>>2];t[P+4>>2]=t[G+4>>2];t[P+8>>2]=t[G+8>>2];t[P+12>>2]=t[G+12>>2];$G(o,H,P);t[X>>2]=t[o>>2];t[X+4>>2]=t[o+4>>2];t[X+8>>2]=t[o+8>>2];t[X+12>>2]=t[o+12>>2];G=A+16|0;a=(t[G>>2]|0)+16|0;b=(t[b>>2]|0)+56|0;t[H>>2]=t[a>>2];t[H+4>>2]=t[a+4>>2];t[H+8>>2]=t[a+8>>2];t[H+12>>2]=t[a+12>>2];t[P>>2]=t[b>>2];t[P+4>>2]=t[b+4>>2];t[P+8>>2]=t[b+8>>2];t[P+12>>2]=t[b+12>>2];$G(u,H,P);t[S>>2]=t[u>>2];t[S+4>>2]=t[u+4>>2];t[S+8>>2]=t[u+8>>2];t[S+12>>2]=t[u+12>>2];E=+c[(t[r>>2]|0)+96>>3]+ +c[X>>3];B=+c[S>>3]-+c[(t[G>>2]|0)+88>>3];m=B+E;p=m*.5;G=t[j>>2]|0;t[O>>2]=t[X>>2];t[O+4>>2]=t[X+4>>2];t[O+8>>2]=t[X+8>>2];t[O+12>>2]=t[X+12>>2];b=O+16|0;t[b>>2]=t[X>>2];t[b+4>>2]=t[X+4>>2];t[b+8>>2]=t[X+8>>2];t[b+12>>2]=t[X+12>>2];r=O+32|0;t[r>>2]=t[S>>2];t[r+4>>2]=t[S+4>>2];t[r+8>>2]=t[S+8>>2];t[r+12>>2]=t[S+12>>2];a=O+48|0;t[a>>2]=t[S>>2];t[a+4>>2]=t[S+4>>2];t[a+8>>2]=t[S+8>>2];t[a+12>>2]=t[S+12>>2];mR(G,t[((t[G>>2]&3|0)==2?G:G+-48|0)+40>>2]|0,O,4,17296);G=t[(t[G+16>>2]|0)+96>>2]|0;c[G+56>>3]=p;C=X+8|0;d=+c[C>>3];v=+c[G+32>>3];c[G+64>>3]=(v+6.0)*.5+d;i[G+81>>0]=1;d=d+3.0;Z=+c[G+24>>3];I=(m-Z)*.5;Z=(Z+m)*.5;G=O+24|0;L=O+40|0;Q=O+56|0;D=O+64|0;z=S+8|0;W=O+72|0;Y=O+80|0;F=O+88|0;M=O+96|0;V=O+104|0;N=O+112|0;R=O+120|0;x=U+4|0;u=(f|0)==6&1;k=0.0;w=0.0;v=v+d;o=1;while(1){if((o|0)>=(l|0)){y=6;break}A=t[j+(o<<2)>>2]|0;if(!(o&1)){t[O>>2]=t[X>>2];t[O+4>>2]=t[X+4>>2];t[O+8>>2]=t[X+8>>2];t[O+12>>2]=t[X+12>>2];c[b>>3]=I;c[G>>3]=+c[C>>3];c[r>>3]=I;c[L>>3]=v;c[a>>3]=Z;c[Q>>3]=v;c[D>>3]=Z;g=+c[z>>3];c[W>>3]=g;q=+c[S>>3];c[Y>>3]=q;c[F>>3]=g;c[M>>3]=q;q=v+6.0;c[V>>3]=q;c[N>>3]=+c[X>>3];c[R>>3]=q;v=+c[(t[(t[A+16>>2]|0)+96>>2]|0)+32>>3];g=q+v*.5;v=q+v}else{s=A+16|0;e=t[(t[s>>2]|0)+96>>2]|0;if((o|0)==1){w=+c[e+24>>3];k=(w+m)*.5;w=(m-w)*.5}d=d+-6.0-+c[e+32>>3];t[O>>2]=t[X>>2];t[O+4>>2]=t[X+4>>2];t[O+8>>2]=t[X+8>>2];t[O+12>>2]=t[X+12>>2];c[b>>3]=+c[X>>3];g=d+-6.0;c[G>>3]=g;c[r>>3]=+c[S>>3];c[L>>3]=g;t[a>>2]=t[S>>2];t[a+4>>2]=t[S+4>>2];t[a+8>>2]=t[S+8>>2];t[a+12>>2]=t[S+12>>2];c[D>>3]=k;c[W>>3]=+c[z>>3];c[Y>>3]=k;c[F>>3]=d;c[M>>3]=w;c[V>>3]=d;c[N>>3]=w;c[R>>3]=+c[C>>3];g=+c[(t[(t[s>>2]|0)+96>>2]|0)+32>>3]*.5+d}t[x>>2]=8;t[U>>2]=O;t[J>>2]=t[X>>2];t[J+4>>2]=t[X+4>>2];t[J+8>>2]=t[X+8>>2];t[J+12>>2]=t[X+12>>2];t[H>>2]=t[S>>2];t[H+4>>2]=t[S+4>>2];t[H+8>>2]=t[S+8>>2];t[H+12>>2]=t[S+12>>2];t[P>>2]=t[U>>2];t[P+4>>2]=t[U+4>>2];s=jV(J,H,P,T,u)|0;e=t[T>>2]|0;if(!e)break;f=t[(t[A+16>>2]|0)+96>>2]|0;c[f+56>>3]=p;c[f+64>>3]=g;i[f+81>>0]=1;mR(A,t[((t[A>>2]&3|0)==2?A:A+-48|0)+40>>2]|0,s,e,17296);o=o+1|0}e:do{if((y|0)==6){p=(B+E*2.0)*.3333333333333333;m=(B*2.0+E)*.3333333333333333;while(1){if((o|0)>=(n|0))break;A=t[j+(o<<2)>>2]|0;if(!(o&1)){t[O>>2]=t[X>>2];t[O+4>>2]=t[X+4>>2];t[O+8>>2]=t[X+8>>2];t[O+12>>2]=t[X+12>>2];c[b>>3]=I;c[G>>3]=+c[C>>3];c[r>>3]=I;c[L>>3]=v;c[a>>3]=Z;c[Q>>3]=v;c[D>>3]=Z;g=+c[z>>3];c[W>>3]=g;q=+c[S>>3];c[Y>>3]=q;c[F>>3]=g;c[M>>3]=q;q=v+6.0;c[V>>3]=q;c[N>>3]=+c[X>>3];v=q;g=w;w=q}else{y=(o|0)==1;g=y?p:w;k=y?m:k;w=d+-6.0;t[O>>2]=t[X>>2];t[O+4>>2]=t[X+4>>2];t[O+8>>2]=t[X+8>>2];t[O+12>>2]=t[X+12>>2];c[b>>3]=+c[X>>3];d=d+-12.0;c[G>>3]=d;c[r>>3]=+c[S>>3];c[L>>3]=d;t[a>>2]=t[S>>2];t[a+4>>2]=t[S+4>>2];t[a+8>>2]=t[S+8>>2];t[a+12>>2]=t[S+12>>2];c[D>>3]=k;c[W>>3]=+c[z>>3];c[Y>>3]=k;c[F>>3]=w;c[M>>3]=g;c[V>>3]=w;c[N>>3]=g;d=w;w=+c[C>>3]}c[R>>3]=w;t[x>>2]=8;t[U>>2]=O;t[J>>2]=t[X>>2];t[J+4>>2]=t[X+4>>2];t[J+8>>2]=t[X+8>>2];t[J+12>>2]=t[X+12>>2];t[H>>2]=t[S>>2];t[H+4>>2]=t[S+4>>2];t[H+8>>2]=t[S+8>>2];t[H+12>>2]=t[S+12>>2];t[P>>2]=t[U>>2];t[P+4>>2]=t[U+4>>2];s=jV(J,H,P,T,u)|0;e=t[T>>2]|0;if(!e)break e;mR(A,t[((t[A>>2]&3|0)==2?A:A+-48|0)+40>>2]|0,s,e,17296);o=o+1|0;w=g}G2(j)}}while(0);h=_;return}function sL(e,A){e=e|0;A=A|0;var r=0,a=0,n=0,f=0,l=0,s=0;n=h;h=h+16|0;a=n;l=(Bk(e)|0)==0;l=l?18592:18584;i[a>>0]=i[l>>0]|0;i[a+1>>0]=i[l+1>>0]|0;i[a+2>>0]=i[l+2>>0]|0;i[a+3>>0]=i[l+3>>0]|0;a=hk(85493,a,0)|0;Sd(a,137483,280,1)|0;zw(a,0,87171,195059)|0;l=KF(96)|0;r=t[a+16>>2]|0;t[r+8>>2]=l;f=t[e+16>>2]|0;s=t[f+8>>2]|0;c[l>>3]=+c[s>>3];c[l+24>>3]=+c[s+24>>3];i[r+115>>0]=i[f+115>>0]|0;t[r+116>>2]=t[f+116>>2]&1^1;t[r+248>>2]=t[f+248>>2];t[r+252>>2]=t[f+252>>2];r=Vw(yd(e)|0,1,0)|0;while(1){if(!r)break;zw(a,1,t[r+8>>2]|0,t[r+12>>2]|0)|0;r=Vw(yd(e)|0,1,r)|0}r=Vw(yd(e)|0,2,0)|0;while(1){if(!r)break;zw(a,2,t[r+8>>2]|0,t[r+12>>2]|0)|0;r=Vw(yd(e)|0,2,r)|0}if(!(zw(a,2,111464,0)|0))zw(a,2,111464,195059)|0;if(!(zw(a,2,111455,0)|0))zw(a,2,111455,195059)|0;hL(a,A);h=n;return a|0}function cL(e,A){e=e|0;A=A|0;var r=0,i=0,a=0;i=h;h=h+16|0;r=i;e=gd(e,Mk(A)|0,1)|0;Sd(e,137447,304,1)|0;jw(A,e)|0;if((oN(A)|0)==2){a=A+16|0;A=$F((U2(t[t[(t[a>>2]|0)+104>>2]>>2]|0)|0)+3|0)|0;t[r>>2]=t[t[(t[a>>2]|0)+104>>2]>>2];T4(A,85488,r)|0;Xw(e,108224,A)|0}h=i;return e|0}function oL(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;r=lk(e,A,r,0,1)|0;Sd(r,137460,176,1)|0;jw(i,r)|0;return r|0}function uL(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0,n=0,f=0,l=0.0;f=h;h=h+32|0;n=f+16|0;a=f;if(i|0){l=+c[A>>3];i=A+8|0;c[A>>3]=+c[i>>3];c[i>>3]=-l}t[a>>2]=t[A>>2];t[a+4>>2]=t[A+4>>2];t[a+8>>2]=t[A+8>>2];t[a+12>>2]=t[A+12>>2];t[n>>2]=t[r>>2];t[n+4>>2]=t[r+4>>2];t[n+8>>2]=t[r+8>>2];t[n+12>>2]=t[r+12>>2];$G(e,a,n);h=f;return}function bL(e,A){e=e|0;A=A|0;t[47189]=t[A>>2];t[47193]=t[A+4>>2];t[47194]=t[A+8>>2];t[47174]=t[A+12>>2];t[47175]=t[A+16>>2];t[47181]=t[A+20>>2];t[47180]=t[A+24>>2];t[47179]=t[A+28>>2];t[47205]=t[A+32>>2];t[47197]=t[A+36>>2];t[47182]=t[A+40>>2];t[47192]=t[A+44>>2];t[47201]=t[A+48>>2];t[47200]=t[A+52>>2];t[47199]=t[A+56>>2];t[47204]=t[A+60>>2];t[47198]=t[A+64>>2];t[47183]=t[A+68>>2];t[47145]=t[A+72>>2];t[47146]=t[A+76>>2];t[47147]=t[A+80>>2];t[47157]=t[A+84>>2];t[47150]=t[A+88>>2];t[47151]=t[A+92>>2];t[47152]=t[A+96>>2];t[47154]=t[A+100>>2];t[47155]=t[A+104>>2];t[47158]=t[A+108>>2];t[47161]=t[A+112>>2];t[47159]=t[A+116>>2];t[47160]=t[A+120>>2];t[47163]=t[A+124>>2];t[47162]=t[A+128>>2];t[47164]=t[A+132>>2];t[47165]=t[A+136>>2];t[47156]=t[A+140>>2];t[47168]=t[A+144>>2];t[47140]=t[A+148>>2];t[47138]=t[A+152>>2];G2(A);iG(e);vk(e)|0;return}function hL(e,A){e=e|0;A=A|0;t[A>>2]=t[47189];t[A+4>>2]=t[47193];t[A+8>>2]=t[47194];t[A+12>>2]=t[47174];t[A+16>>2]=t[47175];t[A+20>>2]=t[47181];t[A+24>>2]=t[47180];t[A+28>>2]=t[47179];t[A+32>>2]=t[47205];t[A+36>>2]=t[47197];t[A+40>>2]=t[47182];t[A+44>>2]=t[47192];t[A+48>>2]=t[47201];t[A+52>>2]=t[47200];t[A+56>>2]=t[47199];t[A+60>>2]=t[47204];t[A+64>>2]=t[47198];t[A+68>>2]=t[47183];t[A+72>>2]=t[47145];t[A+76>>2]=t[47146];t[A+80>>2]=t[47147];t[A+84>>2]=t[47157];t[A+88>>2]=t[47150];t[A+92>>2]=t[47151];t[A+96>>2]=t[47152];t[A+100>>2]=t[47154];t[A+104>>2]=t[47155];t[A+108>>2]=t[47158];t[A+112>>2]=t[47161];t[A+116>>2]=t[47159];t[A+120>>2]=t[47160];t[A+124>>2]=t[47163];t[A+128>>2]=t[47162];t[A+132>>2]=t[47164];t[A+136>>2]=t[47165];t[A+140>>2]=t[47156];t[A+144>>2]=t[47168];t[A+152>>2]=t[47138];t[A+148>>2]=t[47140];t[47189]=0;t[47193]=zw(e,2,87412,0)|0;t[47194]=zw(e,2,87421,0)|0;A=zw(e,2,101541,0)|0;t[47174]=A;if(!A)t[47174]=zw(e,2,101541,195059)|0;t[47175]=0;t[47181]=0;t[47180]=zw(e,2,101437,0)|0;t[47179]=zw(e,2,101428,0)|0;t[47205]=zw(e,2,101717,0)|0;t[47197]=0;t[47182]=zw(e,2,108224,0)|0;t[47192]=zw(e,2,85498,0)|0;t[47201]=0;t[47200]=zw(e,2,101617,0)|0;t[47199]=zw(e,2,101603,0)|0;t[47204]=zw(e,2,101708,0)|0;t[47198]=0;t[47183]=0;t[47145]=zw(e,1,141048,0)|0;t[47146]=zw(e,1,141116,0)|0;t[47147]=zw(e,1,108230,0)|0;t[47157]=0;t[47150]=zw(e,1,101428,0)|0;t[47151]=zw(e,1,101437,0)|0;t[47152]=0;t[47154]=zw(e,1,108224,0)|0;t[47155]=0;t[47158]=0;t[47161]=zw(e,1,101409,0)|0;t[47159]=zw(e,1,141076,0)|0;t[47160]=zw(e,1,101472,0)|0;t[47163]=zw(e,1,101484,0)|0;t[47162]=zw(e,1,101348,0)|0;t[47164]=zw(e,1,101489,0)|0;t[47165]=zw(e,1,85510,0)|0;t[47156]=0;t[47168]=0;t[47140]=zw(e,0,101409,0)|0;return}function wL(e,A){e=e|0;A=A|0;var r=0,i=0.0,a=0.0,n=0.0,f=0.0;r=t[(t[(t[e>>2]|0)+16>>2]|0)+96>>2]|0;e=t[(t[(t[A>>2]|0)+16>>2]|0)+96>>2]|0;A=(e|0)!=0;if(r)if(A?(a=+c[r+24>>3],f=+c[r+32>>3],i=+c[e+24>>3],n=+c[e+32>>3],!(a>i)):0)if(!(an)e=-1;else e=f>2]|0)+116>>2]|0;if(!A)break;else e=A}A=t[e>>2]&3;r=t[(t[((A|0)==2?e:e+-48|0)+40>>2]|0)+16>>2]|0;i=t[r+232>>2]|0;e=t[(t[((A|0)==3?e:e+48|0)+40>>2]|0)+16>>2]|0;A=t[e+232>>2]|0;if((i|0)<=(A|0))if((i|0)<(A|0))e=1;else e=(t[r+236>>2]|0)<(t[e+236>>2]|0)&1;else e=0;return e|0}function dL(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0,f=0;r=h;h=h+16|0;i=r+8|0;a=r;f=(t[e+16>>2]|0)+180|0;n=(t[A+16>>2]|0)+172|0;t[a>>2]=t[f>>2];t[a+4>>2]=t[f+4>>2];t[i>>2]=t[n>>2];t[i+4>>2]=t[n+4>>2];A=vL(e,a,A,i)|0;h=r;return A|0}function vL(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0,n=0;a=t[A+4>>2]|0;e:do{if((a|0)>0?(n=t[i+4>>2]|0,(n|0)>0):0)if((a|0)<(n|0)){a=t[A>>2]|0;i=0;while(1){A=t[a+(i<<2)>>2]|0;if(!A){A=0;break e}if((t[((t[A>>2]&3|0)==2?A:A+-48|0)+40>>2]|0)==(r|0))break;else i=i+1|0}}else{a=t[i>>2]|0;i=0;while(1){A=t[a+(i<<2)>>2]|0;if(!A){A=0;break e}if((t[((t[A>>2]&3|0)==3?A:A+48|0)+40>>2]|0)==(e|0))break;else i=i+1|0}}else A=0}while(0);return A|0}function gL(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0,f=0;r=h;h=h+16|0;i=r+8|0;a=r;f=(t[e+16>>2]|0)+188|0;n=(t[A+16>>2]|0)+196|0;t[a>>2]=t[f>>2];t[a+4>>2]=t[f+4>>2];t[i>>2]=t[n>>2];t[i+4>>2]=t[n+4>>2];A=vL(e,a,A,i)|0;h=r;return A|0}function mL(e){e=e|0;var A=0,r=0,i=0,a=0;i=e+48|0;r=t[(t[((t[e>>2]&3|0)==3?e:i)+40>>2]|0)+16>>2]|0;A=t[r+180>>2]|0;if(!A)A=$F((t[r+184>>2]<<2)+8|0)|0;else A=AM(A,(t[r+184>>2]<<2)+8|0)|0;t[(t[(t[((t[e>>2]&3|0)==3?e:i)+40>>2]|0)+16>>2]|0)+180>>2]=A;a=t[(t[((t[e>>2]&3|0)==3?e:i)+40>>2]|0)+16>>2]|0;r=t[a+180>>2]|0;a=a+184|0;A=t[a>>2]|0;t[a>>2]=A+1;t[r+(A<<2)>>2]=e;i=t[(t[((t[e>>2]&3|0)==3?e:i)+40>>2]|0)+16>>2]|0;t[(t[i+180>>2]|0)+(t[i+184>>2]<<2)>>2]=0;i=e+-48|0;A=t[(t[((t[e>>2]&3|0)==2?e:i)+40>>2]|0)+16>>2]|0;r=t[A+172>>2]|0;if(!r)A=$F((t[A+176>>2]<<2)+8|0)|0;else A=AM(r,(t[A+176>>2]<<2)+8|0)|0;t[(t[(t[((t[e>>2]&3|0)==2?e:i)+40>>2]|0)+16>>2]|0)+172>>2]=A;A=t[(t[((t[e>>2]&3|0)==2?e:i)+40>>2]|0)+16>>2]|0;r=t[A+172>>2]|0;A=A+176|0;a=t[A>>2]|0;t[A>>2]=a+1;t[r+(a<<2)>>2]=e;a=t[(t[((t[e>>2]&3|0)==2?e:i)+40>>2]|0)+16>>2]|0;t[(t[a+172>>2]|0)+(t[a+176>>2]<<2)>>2]=0;return e|0}function pL(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0,f=0,l=0;i=e+4|0;a=t[i>>2]|0;r=0;while(1){if((r|0)>=(a|0))break;n=t[e>>2]|0;f=n+(r<<2)|0;if((t[f>>2]|0)==(A|0)){l=4;break}else r=r+1|0}if((l|0)==4){l=a+-1|0;t[i>>2]=l;t[f>>2]=t[n+(l<<2)>>2];t[(t[e>>2]|0)+(l<<2)>>2]=0}return}function EL(e){e=e|0;if(!e)ge(85551,85561,117,85570);else{pL((t[(t[((t[e>>2]&3|0)==3?e:e+48|0)+40>>2]|0)+16>>2]|0)+180|0,e);pL((t[(t[((t[e>>2]&3|0)==2?e:e+-48|0)+40>>2]|0)+16>>2]|0)+172|0,e);return}}function BL(e){e=e|0;var A=0,r=0,i=0,a=0;i=e+48|0;r=t[(t[((t[e>>2]&3|0)==3?e:i)+40>>2]|0)+16>>2]|0;A=t[r+204>>2]|0;if(!A)A=$F((t[r+208>>2]<<2)+8|0)|0;else A=AM(A,(t[r+208>>2]<<2)+8|0)|0;t[(t[(t[((t[e>>2]&3|0)==3?e:i)+40>>2]|0)+16>>2]|0)+204>>2]=A;a=t[(t[((t[e>>2]&3|0)==3?e:i)+40>>2]|0)+16>>2]|0;A=t[a+204>>2]|0;a=a+208|0;r=t[a>>2]|0;t[a>>2]=r+1;t[A+(r<<2)>>2]=e;i=t[(t[((t[e>>2]&3|0)==3?e:i)+40>>2]|0)+16>>2]|0;t[(t[i+204>>2]|0)+(t[i+208>>2]<<2)>>2]=0;return}function yL(e){e=e|0;CL(e,(t[(t[((t[e>>2]&3|0)==3?e:e+48|0)+40>>2]|0)+16>>2]|0)+204|0);return}function CL(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0,f=0;f=A+4|0;i=t[f>>2]|0;a=t[A>>2]|0;r=0;while(1){if((r|0)>=(i|0)){n=4;break}if((t[a+(r<<2)>>2]|0)==(e|0))break;else r=r+1|0}if((n|0)==4){if(!a)r=$F((i<<2)+8|0)|0;else r=AM(a,(i<<2)+8|0)|0;t[A>>2]=r;a=t[f>>2]|0;n=a+1|0;t[f>>2]=n;t[r+(a<<2)>>2]=e;t[(t[A>>2]|0)+(n<<2)>>2]=0}return}function IL(e,A,r){e=e|0;A=A|0;r=r|0;var n=0,f=0,l=0,s=0,c=0,o=0,u=0,b=0;b=KF(96)|0;n=b+48|0;t[n>>2]=t[n>>2]|3;t[b>>2]=t[b>>2]&-4|2;f=KF(176)|0;u=b+16|0;t[u>>2]=f;t[((t[b>>2]&3|0)==3?b:n)+40>>2]=e;s=b+-48|0;t[((t[b>>2]&3|0)==2?b:s)+40>>2]=A;i[f+112>>0]=1;if(!r){t[f+156>>2]=1;a[f+154>>1]=1;a[f+168>>1]=1;a[f+170>>1]=1}else{t[b>>2]=t[b>>2]&15|t[r>>2]&-16;t[n>>2]=t[n>>2]&15|t[r>>2]&-16;o=r+16|0;l=t[o>>2]|0;a[f+168>>1]=a[l+168>>1]|0;a[f+154>>1]=a[l+154>>1]|0;t[f+156>>2]=t[l+156>>2];a[f+170>>1]=a[l+170>>1]|0;e=t[((t[b>>2]&3|0)==3?b:n)+40>>2]|0;A=t[r>>2]&3;c=r+48|0;if((e|0)!=(t[((A|0)==3?r:c)+40>>2]|0)){n=r+-48|0;if((e|0)==(t[((A|0)==2?r:n)+40>>2]|0)){f=f+16|0;e=l+56|0;A=f+40|0;do{t[f>>2]=t[e>>2];f=f+4|0;e=e+4|0}while((f|0)<(A|0))}}else{f=f+16|0;e=l+16|0;A=f+40|0;do{t[f>>2]=t[e>>2];f=f+4|0;e=e+4|0}while((f|0)<(A|0));n=r+-48|0}e=t[((t[b>>2]&3|0)==2?b:s)+40>>2]|0;A=t[r>>2]&3;if((e|0)!=(t[((A|0)==2?r:n)+40>>2]|0)){if((e|0)==(t[((A|0)==3?r:c)+40>>2]|0)){f=(t[u>>2]|0)+56|0;e=(t[o>>2]|0)+16|0;A=f+40|0;do{t[f>>2]=t[e>>2];f=f+4|0;e=e+4|0}while((f|0)<(A|0))}}else{f=(t[u>>2]|0)+56|0;e=(t[o>>2]|0)+56|0;A=f+40|0;do{t[f>>2]=t[e>>2];f=f+4|0;e=e+4|0}while((f|0)<(A|0))}e=(t[o>>2]|0)+172|0;if(!(t[e>>2]|0))t[e>>2]=b;t[(t[u>>2]|0)+116>>2]=r}return b|0}function ZL(e,A,r){e=e|0;A=A|0;r=r|0;return mL(IL(e,A,r)|0)|0}function GL(e,A){e=e|0;A=A|0;var r=0,i=0,a=0;e=(t[e+16>>2]|0)+192|0;a=t[e>>2]|0;r=t[A+16>>2]|0;t[r+164>>2]=a;i=a;if(a|0)t[(t[i+16>>2]|0)+168>>2]=A;t[e>>2]=A;t[r+168>>2]=0;if((i|0)==(A|0))ge(85587,85561,215,85603);else return}function LL(e,A){e=e|0;A=A|0;var r=0,i=0,a=0;if((e|0)==(A|0))ge(85613,85561,220,85620);a=t[A+16>>2]|0;r=a+164|0;if(t[r>>2]|0)ge(85633,85561,221,85620);i=(t[e+16>>2]|0)+164|0;t[r>>2]=t[i>>2];r=t[i>>2]|0;if(r|0)t[(t[r+16>>2]|0)+168>>2]=A;t[a+168>>2]=e;t[i>>2]=A;return}function QL(e,A){e=e|0;A=A|0;var r=0,i=0;if(!(DL(e,A)|0))ge(85652,85561,231,85673);A=t[A+16>>2]|0;r=t[A+164>>2]|0;i=r;A=A+168|0;if(r|0)t[(t[r+16>>2]|0)+168>>2]=t[A>>2];A=t[A>>2]|0;if(!A)t[(t[e+16>>2]|0)+192>>2]=i;else t[(t[A+16>>2]|0)+164>>2]=i;return}function DL(e,A){e=e|0;A=A|0;e=(t[e+16>>2]|0)+192|0;while(1){e=t[e>>2]|0;if((e|0)==0|(e|0)==(A|0))break;e=(t[e+16>>2]|0)+164|0}return e|0}function zL(e){e=e|0;var A=0,r=0,a=0,n=0;A=KF(64)|0;t[A>>2]=t[A>>2]&-4|1;r=A+16|0;t[r>>2]=KF(304)|0;t[A+24>>2]=yd(e)|0;n=t[r>>2]|0;i[n+156>>0]=1;c[n+96>>3]=1.0;c[n+88>>3]=1.0;c[n+80>>3]=1.0;t[n+216>>2]=1;t[n+176>>2]=0;n=KF(20)|0;a=t[r>>2]|0;t[a+172>>2]=n;t[a+184>>2]=0;a=KF(20)|0;t[(t[r>>2]|0)+180>>2]=a;GL(e,A);e=(t[e+16>>2]|0)+232|0;t[e>>2]=(t[e>>2]|0)+1;return A|0}function WL(e,A){e=e|0;A=A|0;var r=0,a=0,n=0,f=0;n=A+48|0;r=t[(t[((t[A>>2]&3|0)==3?A:n)+40>>2]|0)+16>>2]|0;a=t[r+188>>2]|0;if(!a)r=$F((t[r+192>>2]<<2)+8|0)|0;else r=AM(a,(t[r+192>>2]<<2)+8|0)|0;t[(t[(t[((t[A>>2]&3|0)==3?A:n)+40>>2]|0)+16>>2]|0)+188>>2]=r;f=t[(t[((t[A>>2]&3|0)==3?A:n)+40>>2]|0)+16>>2]|0;a=t[f+188>>2]|0;f=f+192|0;r=t[f>>2]|0;t[f>>2]=r+1;t[a+(r<<2)>>2]=A;n=t[(t[((t[A>>2]&3|0)==3?A:n)+40>>2]|0)+16>>2]|0;t[(t[n+188>>2]|0)+(t[n+192>>2]<<2)>>2]=0;n=A+-48|0;r=t[(t[((t[A>>2]&3|0)==2?A:n)+40>>2]|0)+16>>2]|0;a=t[r+196>>2]|0;if(!a)r=$F((t[r+200>>2]<<2)+8|0)|0;else r=AM(a,(t[r+200>>2]<<2)+8|0)|0;t[(t[(t[((t[A>>2]&3|0)==2?A:n)+40>>2]|0)+16>>2]|0)+196>>2]=r;r=t[(t[((t[A>>2]&3|0)==2?A:n)+40>>2]|0)+16>>2]|0;a=t[r+196>>2]|0;r=r+200|0;f=t[r>>2]|0;t[r>>2]=f+1;t[a+(f<<2)>>2]=A;f=t[(t[((t[A>>2]&3|0)==2?A:n)+40>>2]|0)+16>>2]|0;t[(t[f+196>>2]|0)+(t[f+200>>2]<<2)>>2]=0;i[(t[e+16>>2]|0)+240>>0]=1;i[(t[(mG(e)|0)+16>>2]|0)+240>>0]=1;return}function YL(e){e=e|0;var A=0,r=0;if(!e)ge(85551,85561,269,85690);A=t[(t[e+16>>2]|0)+116>>2]|0;if(A|0?(r=(t[A+16>>2]|0)+172|0,(t[r>>2]|0)==(e|0)):0)t[r>>2]=0;pL((t[(t[((t[e>>2]&3|0)==3?e:e+48|0)+40>>2]|0)+16>>2]|0)+188|0,e);pL((t[(t[((t[e>>2]&3|0)==2?e:e+-48|0)+40>>2]|0)+16>>2]|0)+196|0,e);return}function FL(e,A){e=e|0;A=A|0;var r=0,i=0,a=0;a=h;h=h+16|0;r=(t[e+16>>2]|0)+172|0;i=t[r>>2]|0;do{if((i|0)!=(A|0))if(!i){t[r>>2]=A;ML(e,A);break}else ge(87593,85561,340,85728);else nw(0,85707,a)|0}while(0);h=a;return}function ML(e,A){e=e|0;A=A|0;var r=0,i=0,n=0,l=0;r=(t[A+16>>2]|0)+170|0;l=t[e+16>>2]|0;e=a[l+170>>1]|0;if((f[r>>1]|0)<(e&65535))a[r>>1]=e;i=l+168|0;n=l+154|0;r=l+156|0;e=A;while(1){if(!e)break;A=t[e+16>>2]|0;l=A+168|0;a[l>>1]=(f[l>>1]|0)+(f[i>>1]|0);l=A+154|0;a[l>>1]=(f[l>>1]|0)+(f[n>>1]|0);l=A+156|0;t[l>>2]=(t[l>>2]|0)+(t[r>>2]|0);e=t[A+172>>2]|0}return}function VL(e){e=e|0;var A=0,r=0,n=0,f=0;r=e+16|0;A=t[(t[r>>2]|0)+172>>2]|0;e:while(1){if(!A)break;NL(A,e);f=t[A+16>>2]|0;n=t[f+172>>2]|0;if(!(a[f+168>>1]|0))RL(A);while(1){if((i[(t[A+16>>2]|0)+112>>0]|0)!=1){A=n;continue e}A=t[(t[((t[A>>2]&3|0)==2?A:A+-48|0)+40>>2]|0)+16>>2]|0;if((i[A+156>>0]|0)!=1){A=n;continue e}if((t[A+184>>2]|0)!=1){A=n;continue e}A=t[t[A+180>>2]>>2]|0;NL(A,e)}}t[(t[r>>2]|0)+172>>2]=0;return}function NL(e,A){e=e|0;A=A|0;var r=0;r=t[A+16>>2]|0;A=t[e+16>>2]|0;e=A+168|0;a[e>>1]=(f[e>>1]|0)-(f[r+168>>1]|0);e=A+154|0;a[e>>1]=(f[e>>1]|0)-(f[r+154>>1]|0);A=A+156|0;t[A>>2]=(t[A>>2]|0)-(t[r+156>>2]|0);return}function RL(e){e=e|0;var A=0,r=0,i=0,a=0,n=0;if(!e)ge(85551,85561,128,85741);n=e+48|0;r=0;while(1){A=t[e>>2]|0;i=(t[(t[((A&3|0)==3?e:n)+40>>2]|0)+16>>2]|0)+180|0;a=t[(t[i>>2]|0)+(r<<2)>>2]|0;if(!a)break;if((a|0)==(e|0))pL(i,e);r=r+1|0}n=e+-48|0;a=0;while(1){r=(t[(t[((A&3|0)==2?e:n)+40>>2]|0)+16>>2]|0)+172|0;i=t[(t[r>>2]|0)+(a<<2)>>2]|0;if(!i)break;if((i|0)==(e|0)){pL(r,e);A=t[e>>2]|0}a=a+1|0}return}function xL(e){e=e|0;var A=0,r=0,n=0,f=0,l=0,s=0,c=0,o=0,u=0,b=0,w=0,k=0,d=0,v=0,g=0;w=h;h=h+1040|0;u=w+1032|0;b=w;o=w+8|0;c=e+16|0;e=t[c>>2]|0;s=a[e+236>>1]|0;while(1){if((s|0)>(a[e+238>>1]|0))break;l=t[e+196>>2]|0;f=l+(s<<6)|0;l=l+(s<<6)+4|0;n=0;e=0;while(1){if((n|0)>=(t[f>>2]|0))break;A=t[(t[l>>2]|0)+(n<<2)>>2]|0;r=A+16|0;if(t[(t[r>>2]|0)+112>>2]|0){if(!e){i[u>>0]=i[18588]|0;i[u+1>>0]=i[18589]|0;i[u+2>>0]=i[18590]|0;i[u+3>>0]=i[18591]|0;e=hk(85763,u,0)|0}t[b>>2]=n;T4(o,137395,b)|0;g=gd(e,o,1)|0;Sd(g,91164,24,1)|0;k=t[(t[r>>2]|0)+180>>2]|0;d=t[k>>2]|0;d=t[(t[(t[((t[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0;k=t[k+4>>2]|0;k=t[(t[(t[((t[k>>2]&3|0)==2?k:k+-48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0;v=(d|0)>(k|0);r=t[g+16>>2]|0;t[r+12>>2]=v?k:d;t[r+16>>2]=v?d:k;t[r+20>>2]=A}n=n+1|0}if(e|0){if((gk(e)|0)>1)JL(e,f);vk(e)|0}s=s+1|0;e=t[c>>2]|0}h=w;return}function JL(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0,f=0,l=0,s=0,c=0;r=0;f=sd(e)|0;e:while(1){if(!f)break;l=cd(e,f)|0;s=f+16|0;n=l;while(1){if(!n){f=l;continue e}a=t[n+16>>2]|0;i=t[s>>2]|0;if((t[a+16>>2]|0)>(t[i+12>>2]|0)){if((t[i+16>>2]|0)<=(t[a+12>>2]|0))lk(e,f,n,0,1)|0}else{lk(e,n,f,0,1)|0;r=1}n=cd(e,n)|0}}do{if(r|0){f=Rv(e,85766,1)|0;s=KF((gk(e)|0)<<2)|0;l=KF((gk(e)|0)<<2)|0;a=A+4|0;i=sd(e)|0;e:while(1){if(!i){r=23;break}if((t[(t[i+16>>2]|0)+8>>2]|0)==0?pk(e,i,1,1)|0:0){A:do{if(HL(e,i,f,l)|0){n=gk(f)|0;if((PL(e,f,s)|0)!=(n|0)){r=17;break e}_4(l,n,4,60);r=0;while(1){if((r|0)>=(n|0))break A;A=l+(r<<2)|0;c=t[s+(r<<2)>>2]|0;t[(t[c+16>>2]|0)+236>>2]=t[A>>2];t[(t[a>>2]|0)+(t[A>>2]<<2)>>2]=c;r=r+1|0}}}while(0);SL(f)}i=cd(e,i)|0}if((r|0)==17)ge(85771,85781,265,85792);else if((r|0)==23){G2(s);break}}}while(0);return}function HL(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0,n=0,f=0,l=0,s=0;f=t[A+16>>2]|0;t[f+8>>2]=1;f=t[(t[(t[f+20>>2]|0)+16>>2]|0)+236>>2]|0;t[i+((gk(r)|0)<<2)>>2]=f;hd(r,A,1)|0;f=Ow(e,A)|0;a=0;while(1){if(!f)break;s=t[f>>2]&3;n=t[((s|0)==2?f:f+-48|0)+40>>2]|0;l=t[n+16>>2]|0;a=a+((t[(t[(t[l+20>>2]|0)+16>>2]|0)+236>>2]|0)>(t[(t[(t[(t[(t[((s|0)==3?f:f+48|0)+40>>2]|0)+16>>2]|0)+20>>2]|0)+16>>2]|0)+236>>2]|0)&1)|0;if(!(t[l+8>>2]|0))a=(HL(e,n,r,i)|0)+a|0;f=qw(e,f)|0}f=Kw(e,A)|0;while(1){if(!f)break;l=t[f>>2]&3;n=t[((l|0)==3?f:f+48|0)+40>>2]|0;s=t[n+16>>2]|0;a=a+((t[(t[(t[(t[(t[((l|0)==2?f:f+-48|0)+40>>2]|0)+16>>2]|0)+20>>2]|0)+16>>2]|0)+236>>2]|0)>(t[(t[(t[s+20>>2]|0)+16>>2]|0)+236>>2]|0)&1)|0;if(!(t[s+8>>2]|0))a=(HL(e,n,r,i)|0)+a|0;f=$w(e,f)|0}return a|0}function PL(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0,n=0;a=0;while(1){i=jL(e,A)|0;if(!i)break;t[r+(a<<2)>>2]=t[(t[i+16>>2]|0)+20>>2];pd(A,i)|0;i=Ow(e,i)|0;while(1){if(!i)break;n=qw(e,i)|0;ok(e,i)|0;i=n}a=a+1|0}return a|0}function XL(e,A){e=e|0;A=A|0;return(t[e>>2]|0)-(t[A>>2]|0)|0}function SL(e){e=e|0;var A=0,r=0;A=sd(e)|0;while(1){if(!A)break;r=cd(e,A)|0;pd(e,A)|0;A=r}return}function jL(e,A){e=e|0;A=A|0;var r=0;r=sd(A)|0;while(1){if(!r){r=0;break}if(!(pk(e,r,1,0)|0))break;r=cd(A,r)|0}return r|0}function UL(e,A){e=e|0;A=A|0;var r=0,a=0,n=0,f=0,l=0;TL(e);l=e+16|0;a=0;r=0;while(1){if((a|0)>=(t[(t[l>>2]|0)+220>>2]|0))break;OL(e,a);a=a+1|0;r=(_L(e,0,A)|0)+r|0}qL(e);f=1;while(1){a=t[l>>2]|0;n=t[a+180>>2]|0;if((f|0)>(n|0))break;n=(KL(t[(t[a+184>>2]|0)+(f<<2)>>2]|0,A)|0)+r|0;f=f+1|0;r=n}do{if((n|0)>0){a=Hw(e,85806)|0;if(a|0?(mx(a)|0)<<24>>24==0:0)break;BW(e);i[193769]=1;r=_L(e,2,A)|0}}while(0);$L(e,r);return}function TL(e){e=e|0;var A=0;if(0)lx();i[193769]=0;t[46741]=e;A=((mk(mG(e)|0)|0)<<2)+4|0;t[46740]=KF(A)|0;t[46739]=KF(A)|0;PQ(e);A=e+16|0;if(a[(t[A>>2]|0)+136>>1]&16)XQ(e);aW(e);jW(e,1);SQ(e);nQ(e);A=t[A>>2]|0;t[46742]=a[A+236>>1];t[46743]=a[A+238>>1];return}function OL(e,A){e=e|0;A=A|0;var r=0,i=0,n=0;e=t[e+16>>2]|0;t[e+192>>2]=t[(t[e+216>>2]|0)+(A<<2)>>2];e:do{if((A|0)>0){A=a[e+238>>1]|0;r=e+196|0;e=a[e+236>>1]|0;while(1){if((e|0)>(A|0))break e;i=t[r>>2]|0;n=i+(e<<6)+4|0;i=i+(e<<6)|0;t[n>>2]=(t[n>>2]|0)+(t[i>>2]<<2);t[i>>2]=0;e=e+1|0}}}while(0);return}function _L(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0,n=0,f=0,l=0,s=0,o=0,u=0,b=0;b=h;h=h+32|0;u=b;if((A|0)>1){i=EQ(0)|0;BQ(e)}else i=2147483647;o=t[15712]|0;s=A;a=0;A=i;while(1){if((s|0)>=3)break;a=t[47136]|0;if((s|0)==2)if((i|0)>(A|0)){CQ(e);i=A}else i=A;else{i=(a|0)<4?a:4;if((mG(e)|0)==(e|0))yQ(e,s);if(!s)fQ(e);lQ(e);n=EQ(0)|0;if((n|0)>(A|0)){a=i;i=n}else{BQ(e);a=i;i=n;A=n}}n=0;l=0;while(1){if((l|0)>=(a|0))break;if(0){t[u>>2]=s;t[u+4>>2]=l;t[u+8>>2]=n;t[u+12>>2]=i;t[u+16>>2]=A;a3(o,86199,u)|0}f=n+1|0;if((i|0)==0|(n|0)>=(t[46744]|0))break;IQ(e,l);i=EQ(0)|0;if((i|0)>(A|0))n=f;else{BQ(e);n=+c[23215]*+(A|0)>+(i|0)?0:f;A=i}l=l+1|0}if(!i){i=0;break}else s=s+1|0}if((i|0)>(A|0))CQ(e);if((A|0)>0){ZQ(e,0);i=EQ(0)|0}else i=A;e:do{if(r|0){A=0;while(1){if((A|0)>=(a|0))break e;GQ(e);A=A+1|0}}}while(0);h=b;return i|0}function qL(e){e=e|0;var A=0,r=0,i=0,n=0,f=0,l=0,s=0,c=0,o=0,u=0,b=0,w=0;w=h;h=h+16|0;u=w;pQ(e);c=e+16|0;A=t[c>>2]|0;o=t[15712]|0;s=a[A+236>>1]|0;while(1){if((s|0)>(a[A+238>>1]|0))break;r=t[A+196>>2]|0;i=t[r+(s<<6)+8>>2]|0;t[r+(s<<6)>>2]=i;n=t[r+(s<<6)+12>>2]|0;t[r+(s<<6)+4>>2]=n;l=0;while(1){if((l|0)>=(i|0))break;f=t[n+(l<<2)>>2]|0;if(!f){b=6;break}t[(t[f+16>>2]|0)+236>>2]=l;l=l+1|0}if((b|0)==6){b=0;if(0){r=Mk(e)|0;A=t[(t[(t[c>>2]|0)+196>>2]|0)+(s<<6)>>2]|0;t[u>>2]=r;t[u+4>>2]=s;t[u+8>>2]=l;t[u+12>>2]=A;a3(o,86149,u)|0;A=t[c>>2]|0;r=t[A+196>>2]|0}t[r+(s<<6)>>2]=l}s=s+1|0}h=w;return}function KL(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0;dW(e);nQ(e);fQ(e);lQ(e);a=e+16|0;r=_L(e,2,A)|0;i=1;while(1){n=t[a>>2]|0;if((i|0)>(t[n+180>>2]|0))break;r=(KL(t[(t[n+184>>2]|0)+(i<<2)>>2]|0,A)|0)+r|0;i=i+1|0}sQ(e);return r|0}function $L(e,A){e=e|0;A=A|0;var r=0,n=0,f=0,l=0,s=0,o=0,u=0,b=0,w=0,k=0,d=0.0;k=h;h=h+16|0;w=k;r=t[46739]|0;if(r|0){G2(r);t[46739]=0}r=t[46740]|0;if(r|0){G2(r);t[46740]=0}b=e+16|0;r=1;while(1){n=t[b>>2]|0;if((r|0)>(t[n+180>>2]|0))break;eQ(t[(t[n+184>>2]|0)+(r<<2)>>2]|0);r=r+1|0}u=a[n+236>>1]|0;r=n;while(1){if((u|0)>(a[r+238>>1]|0))break;else o=0;while(1){r=t[r+196>>2]|0;if((o|0)>=(t[r+(u<<6)>>2]|0))break;s=(t[(t[r+(u<<6)+4>>2]|0)+(o<<2)>>2]|0)+16|0;r=t[s>>2]|0;t[r+236>>2]=o;r=t[r+188>>2]|0;e:do{if(r|0){n=0;while(1){f=t[r+(n<<2)>>2]|0;if(!f)break e;l=f+16|0;if((i[(t[l>>2]|0)+112>>0]|0)==4){YL(f);G2(t[l>>2]|0);G2(f);n=n+-1|0;r=t[(t[s>>2]|0)+188>>2]|0}n=n+1|0}}}while(0);o=o+1|0;r=t[b>>2]|0}AQ(t[r+(u<<6)+56>>2]|0);u=u+1|0;r=t[b>>2]|0}if(0){b=t[15712]|0;e=Mk(e)|0;d=+sx();t[w>>2]=e;t[w+4>>2]=A;c[w+8>>3]=d;a3(b,85817,w)|0}h=k;return}function eQ(e){e=e|0;var A=0,r=0,i=0,n=0,f=0,l=0,s=0,c=0;n=e+16|0;A=1;while(1){i=t[n>>2]|0;if((A|0)>(t[i+180>>2]|0))break;eQ(t[(t[i+184>>2]|0)+(A<<2)>>2]|0);A=A+1|0}e:do{if(t[i+268>>2]|0){r=a[i+236>>1]|0;A=i;while(1){if((r|0)>(a[A+238>>1]|0))break e;s=t[(t[A+268>>2]|0)+(r<<2)>>2]|0;l=rQ(e,s,-1)|0;s=rQ(e,s,1)|0;t[(t[(t[n>>2]|0)+268>>2]|0)+(r<<2)>>2]=l;c=t[(t[(t[(mG(e)|0)+16>>2]|0)+196>>2]|0)+(r<<6)+4>>2]|0;l=t[(t[l+16>>2]|0)+236>>2]|0;i=t[n>>2]|0;f=t[i+196>>2]|0;t[f+(r<<6)+4>>2]=c+(l<<2);t[f+(r<<6)>>2]=(t[(t[s+16>>2]|0)+236>>2]|0)+1-l;r=r+1|0;A=i}}}while(0);return}function AQ(e){e=e|0;if(e|0){G2(t[e+8>>2]|0);G2(e)}return}function rQ(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0;i=A;while(1){A=iQ(A,r)|0;if(!A)break;if(aQ(e,A)|0){i=A;continue}a=(tQ(e,A)|0)==0;i=a?i:A}return i|0}function iQ(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0;if(!e)ge(85856,85781,1023,85858);if((A|0)<0){e=t[e+16>>2]|0;i=t[e+236>>2]|0;if((i|0)>0){e=(t[(t[(t[46741]|0)+16>>2]|0)+196>>2]|0)+(t[e+232>>2]<<6)+4|0;r=i+-1|0;a=7}else n=0}else{e=t[e+16>>2]|0;i=t[e+236>>2]|0;e=(t[(t[(t[46741]|0)+16>>2]|0)+196>>2]|0)+(t[e+232>>2]<<6)+4|0;r=i+1|0;a=7}if((a|0)==7){e=t[(t[e>>2]|0)+(r<<2)>>2]|0;if(e)if((P((t[(t[e+16>>2]|0)+236>>2]|0)-i|0,A)|0)>0)n=e;else ge(85867,85781,1029,85858);else n=0}return n|0}function aQ(e,A){e=e|0;A=A|0;if(!(i[(t[A+16>>2]|0)+156>>0]|0))e=(Wd(e,A)|0)!=0&1;else e=0;return e|0}function tQ(e,A){e=e|0;A=A|0;var r=0,a=0;A=t[A+16>>2]|0;if(((i[A+156>>0]|0)==1?(t[A+176>>2]|0)==1:0)?(t[A+184>>2]|0)==1:0){A=t[A+180>>2]|0;while(1){A=t[A>>2]|0;r=t[A+16>>2]|0;if(!(i[r+112>>0]|0))break;else A=r+116|0}if(Wd(e,A)|0)A=1;else a=7}else a=7;if((a|0)==7)A=0;return A|0}function nQ(e){e=e|0;var A=0,r=0,a=0;a=h;h=h+16|0;r=a;A=t[47140]|0;e:do{if((A|0)!=0|(t[47161]|0)!=0){A=dx(e,A,0)|0;if(A|0){switch(i[A>>0]|0){case 0:break e;case 111:{if(!(e1(A,86069)|0)){kQ(e,1);break e}break}case 105:{if(!(e1(A,98735)|0)){kQ(e,0);break e}break}default:{}}t[r>>2]=A;nw(1,86073,r)|0;break}A=xv(e)|0;while(1){if(!A)break;if(!(Az(A)|0))nQ(A);A=Jv(A)|0}if(t[47161]|0)dQ(e)}}while(0);h=a;return}function fQ(e){e=e|0;var A=0,r=0,n=0,f=0,l=0,s=0,c=0;c=e+16|0;A=t[c>>2]|0;s=a[A+236>>1]|0;while(1){if((s|0)>(a[A+238>>1]|0))break;else{r=0;l=0}while(1){n=t[A+196>>2]|0;f=t[n+(s<<6)>>2]|0;if((l|0)>=(f|0))break;n=t[(t[(t[n+(s<<6)+4>>2]|0)+(l<<2)>>2]|0)+16>>2]|0;i[n+158>>0]=0;i[n+157>>0]=0;t[n+284>>2]=l;if((r|0)==0&(t[n+192>>2]|0)>0){r=hQ(f,f)|0;A=t[c>>2]|0;t[(t[A+196>>2]|0)+(s<<6)+56>>2]=r;r=1}l=l+1|0}e:do{if(r){l=0;r=f;while(1){if((l|0)>=(r|0))break e;f=t[(t[n+(s<<6)+4>>2]|0)+(l<<2)>>2]|0;if(!(i[(t[f+16>>2]|0)+157>>0]|0)){wQ(e,f);A=t[c>>2]|0;r=t[A+196>>2]|0;n=r;r=t[r+(s<<6)>>2]|0}l=l+1|0}}}while(0);s=s+1|0}return}function lQ(e){e=e|0;var A=0,r=0,n=0,f=0,l=0,s=0,c=0,o=0,u=0,b=0,h=0,w=0,k=0,d=0,v=0,g=0;v=e+16|0;A=t[v>>2]|0;if(i[A+240>>0]|0){f=0;d=a[A+236>>1]|0;k=0;l=0;e:while(1){if((d|0)>(a[A+238>>1]|0))break;r=t[A+196>>2]|0;n=t[r+(d<<6)>>2]|0;if(!n){n=k;r=l}else{r=t[r+(d<<6)+4>>2]|0;h=t[(t[(t[r>>2]|0)+16>>2]|0)+236>>2]|0;A=0;while(1){if((A|0)>=(n|0))break;i[(t[(t[r+(A<<2)>>2]|0)+16>>2]|0)+157>>0]=0;A=A+1|0}A=(A<<2)+4|0;if(!f)w=$F(A)|0;else w=AM(l,A)|0;u=0;b=0;while(1){A=t[v>>2]|0;r=t[A+196>>2]|0;n=t[r+(d<<6)>>2]|0;if((n|0)<=(b|0))break;s=t[(t[r+(d<<6)+4>>2]|0)+(((t[A+116>>2]&1|0)==0?n+~b|0:b)<<2)>>2]|0;o=s+16|0;A=0;c=0;while(1){l=t[o>>2]|0;if((A|0)>=(t[l+200>>2]|0)){r=0;n=0;A=l;break}l=c+((cQ(e,t[(t[l+196>>2]|0)+(A<<2)>>2]|0)|0)!=0&1)|0;A=A+1|0;c=l}while(1){if((n|0)>=(t[A+192>>2]|0))break;l=r+((cQ(e,t[(t[A+188>>2]|0)+(n<<2)>>2]|0)|0)!=0&1)|0;r=l;n=n+1|0;A=t[o>>2]|0}if(r|c)if((c|0)==0&(i[A+157>>0]|0)==0)A=(oQ(e,s,w+(u<<2)|0,d)|0)+u|0;else A=u;else{t[w+(u<<2)>>2]=s;A=u+1|0}u=A;b=b+1|0}A:do{if(u){r:do{if(!(t[A+116>>2]&1)){r=w;A=w+(u<<2)|0;while(1){A=A+-4|0;if(r>>>0>=A>>>0){n=0;break r}b=t[r>>2]|0;t[r>>2]=t[A>>2];t[A>>2]=b;r=r+4|0}}else n=0}while(0);while(1){A=t[v>>2]|0;l=t[A+196>>2]|0;r=t[l+(d<<6)>>2]|0;if((n|0)>=(r|0)){u=0;n=l;break}b=t[w+(n<<2)>>2]|0;t[(t[l+(d<<6)+4>>2]|0)+(n<<2)>>2]=b;t[(t[b+16>>2]|0)+236>>2]=n+h;n=n+1|0}while(1){if((u|0)>=(r|0))break A;o=(t[(t[n+(d<<6)+4>>2]|0)+(u<<2)>>2]|0)+16|0;l=t[(t[o>>2]|0)+188>>2]|0;if(l){c=0;r=l;while(1){n=t[r+(c<<2)>>2]|0;A=t[v>>2]|0;if(!n)break;s=t[n>>2]&3;l=t[(t[(t[((s|0)==2?n:n+-48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0;s=t[(t[(t[((s|0)==3?n:n+48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0;if(!(t[A+116>>2]&1))if((l|0)<(s|0))g=36;else A=c;else if((l|0)>(s|0))g=36;else A=c;if((g|0)==36){g=0;if(cQ(e,n)|0){g=37;break e}YL(n);uQ(e,n);A=c+-1|0;r=t[(t[o>>2]|0)+188>>2]|0}c=A+1|0}r=t[A+196>>2]|0;n=r;r=t[r+(d<<6)>>2]|0}u=u+1|0}}}while(0);i[(t[(t[(t[46741]|0)+16>>2]|0)+196>>2]|0)+(d<<6)+49>>0]=0;f=w;n=w;r=w}d=d+1|0;k=n;l=r}if((g|0)==37)ge(85915,85781,1561,85954);if(f|0)G2(k)}return}function sQ(e){e=e|0;var A=0,r=0;r=e+16|0;e=t[r>>2]|0;e:do{if(t[e+268>>2]|0){A=a[e+236>>1]|0;while(1){if((A|0)>(a[e+238>>1]|0))break e;t[(t[e+268>>2]|0)+(A<<2)>>2]=t[t[(t[e+196>>2]|0)+(A<<6)+4>>2]>>2];A=A+1|0;e=t[r>>2]|0}}}while(0);return}function cQ(e,A){e=e|0;A=A|0;if((t[(t[A+16>>2]|0)+156>>2]|0)!=0?(bQ(e,t[((t[A>>2]&3|0)==3?A:A+48|0)+40>>2]|0)|0)!=0:0)e=(bQ(e,t[((t[A>>2]&3|0)==2?A:A+-48|0)+40>>2]|0)|0)!=0&1;else e=0;return e|0}function oQ(e,A,r,a){e=e|0;A=A|0;r=r|0;a=a|0;var n=0,f=0,l=0,s=0,c=0,o=0;o=A+16|0;n=t[o>>2]|0;i[n+157>>0]=1;e:do{if((t[n+192>>2]|0)>0){f=0;s=0;while(1){l=t[(t[n+188>>2]|0)+(s<<2)>>2]|0;if(!l)break e;if((cQ(e,l)|0)!=0?(c=t[((t[l>>2]&3|0)==2?l:l+-48|0)+40>>2]|0,(i[(t[c+16>>2]|0)+157>>0]|0)==0):0)f=(oQ(e,c,r+(f<<2)|0,a)|0)+f|0;s=s+1|0;n=t[o>>2]|0}}else f=0}while(0);if((t[n+232>>2]|0)==(a|0)){t[r+(f<<2)>>2]=A;return f+1|0}else ge(85967,85781,1490,85983);return 0}function uQ(e,A){e=e|0;A=A|0;var r=0,a=0,n=0,f=0,l=0,s=0,c=0,o=0,u=0;l=t[A>>2]&3;s=t[((l|0)==2?A:A+-48|0)+40>>2]|0;a=t[(t[s+16>>2]|0)+188>>2]|0;e:do{if(!a){r=A+48|0;u=15}else{o=A+48|0;n=((l|0)==3?A:o)+40|0;r=0;while(1){f=t[a+(r<<2)>>2]|0;if(!f){r=o;u=15;break e}if((t[((t[f>>2]&3|0)==2?f:f+-48|0)+40>>2]|0)==(t[n>>2]|0))break;else r=r+1|0}FL(A,f);r=(t[A+16>>2]|0)+172|0;if(!(t[r>>2]|0))t[r>>2]=f;r=t[f+16>>2]|0;if((i[r+112>>0]|0)==4?(c=r+116|0,(t[c>>2]|0)==0):0)t[c>>2]=A;r=t[(t[((t[A>>2]&3|0)==3?A:o)+40>>2]|0)+16>>2]|0;a=t[r+204>>2]|0;if(!a)r=$F((t[r+208>>2]<<2)+8|0)|0;else r=AM(a,(t[r+208>>2]<<2)+8|0)|0;t[(t[(t[((t[A>>2]&3|0)==3?A:o)+40>>2]|0)+16>>2]|0)+204>>2]=r;l=t[(t[((t[A>>2]&3|0)==3?A:o)+40>>2]|0)+16>>2]|0;s=t[l+204>>2]|0;l=l+208|0;c=t[l>>2]|0;t[l>>2]=c+1;t[s+(c<<2)>>2]=A;A=t[(t[((t[A>>2]&3|0)==3?A:o)+40>>2]|0)+16>>2]|0;t[(t[A+204>>2]|0)+(t[A+208>>2]<<2)>>2]=0}}while(0);if((u|0)==15){u=IL(s,t[((l|0)==3?A:r)+40>>2]|0,A)|0;o=t[A+16>>2]|0;A=t[u+16>>2]|0;i[A+112>>0]=(i[o+112>>0]|0)==4?4:3;t[A+96>>2]=t[o+96>>2];WL(e,u)}return}function bQ(e,A){e=e|0;A=A|0;var r=0;r=aQ(e,A)|0;return tQ(e,A)|0|r|0}function hQ(e,A){e=e|0;A=A|0;var r=0;r=KF(12)|0;t[r>>2]=e;t[r+4>>2]=A;t[r+8>>2]=KF(P(A,e)|0)|0;return r|0}function wQ(e,A){e=e|0;A=A|0;var r=0,a=0,n=0,f=0,l=0,s=0,c=0,o=0,u=0,b=0,h=0,w=0,k=0,d=0;h=A+16|0;o=t[h>>2]|0;c=t[(t[(t[e+16>>2]|0)+196>>2]|0)+(t[o+232>>2]<<6)+56>>2]|0;i[o+157>>0]=1;i[o+158>>0]=1;o=(t[(t[(mG(e)|0)+16>>2]|0)+180>>2]|0)>0;r=t[h>>2]|0;a=t[r+188>>2]|0;e:do{if(a){u=c+4|0;b=c+8|0;A=0;A:while(1){s=t[a+(A<<2)>>2]|0;if(!s){w=r;break e}if(o){if((Wd(e,t[((t[s>>2]&3|0)==3?s:s+48|0)+40>>2]|0)|0)!=0?(Wd(e,t[((t[s>>2]&3|0)==2?s:s+-48|0)+40>>2]|0)|0)!=0:0)k=7}else k=7;do{if((k|0)==7){k=0;f=s+16|0;if(t[(t[f>>2]|0)+156>>2]|0){r=t[s>>2]&3;n=s+-48|0;d=t[(t[((r|0)==2?s:n)+40>>2]|0)+16>>2]|0;l=t[d+284>>2]|0;a=(l|0)<(t[c>>2]|0);if((i[d+158>>0]|0)==1){if(!a){k=10;break A}r=t[(t[(t[((r|0)==3?s:s+48|0)+40>>2]|0)+16>>2]|0)+284>>2]|0;a=t[u>>2]|0;if((r|0)>=(a|0)){k=12;break A}i[(t[b>>2]|0)+((P(a,l)|0)+r)>>0]=1;YL(s);A=A+-1|0;if((i[(t[f>>2]|0)+112>>0]|0)==4)break;uQ(e,s);break}else{if(!a){k=16;break A}r=t[(t[(t[((r|0)==3?s:s+48|0)+40>>2]|0)+16>>2]|0)+284>>2]|0;a=t[u>>2]|0;if((r|0)>=(a|0)){k=18;break A}i[(t[b>>2]|0)+((P(a,r)|0)+l)>>0]=1;r=t[((t[s>>2]&3|0)==2?s:n)+40>>2]|0;if(i[(t[r+16>>2]|0)+157>>0]|0)break;wQ(e,r);break}}}}while(0);a=t[h>>2]|0;A=A+1|0;r=a;a=t[a+188>>2]|0}if((k|0)==10)ge(85993,85781,1251,86025);else if((k|0)==12)ge(86037,85781,1252,86025);else if((k|0)==16)ge(85993,85781,1260,86025);else if((k|0)==18)ge(86037,85781,1261,86025)}else w=r}while(0);i[w+158>>0]=0;return}function kQ(e,A){e=e|0;A=A|0;var r=0;r=sd(e)|0;while(1){if(!r)break;vQ(e,r,A);r=cd(e,r)|0}return}function dQ(e){e=e|0;var A=0,r=0,a=0,n=0,f=0;n=h;h=h+16|0;a=n;A=sd(e)|0;while(1){if(!A)break;r=dx(A,t[47161]|0,0)|0;e:do{if(r|0){switch(i[r>>0]|0){case 0:break e;case 111:{if(!(e1(r,86069)|0)){vQ(e,A,1);break e}break}case 105:{if(!(e1(r,98735)|0)){vQ(e,A,0);break e}break}default:{}}f=Mk(A)|0;t[a>>2]=r;t[a+4>>2]=f;nw(1,86104,a)|0}}while(0);A=cd(e,A)|0}h=n;return}function vQ(e,A,r){e=e|0;A=A|0;r=r|0;var a=0,n=0,f=0,l=0,s=0;s=t[46740]|0;f=A+16|0;a=t[f>>2]|0;e:do{if(!(t[a+212>>2]|0)){l=(r|0)!=0;A:do{if(l){n=0;A=0;r=a;while(1){a=t[(t[r+180>>2]|0)+(n<<2)>>2]|0;if(!a)break A;if(!(gQ(a)|0)){t[s+(A<<2)>>2]=a;A=A+1|0;r=t[f>>2]|0}n=n+1|0}}else{n=0;A=0;r=a;while(1){a=t[(t[r+172>>2]|0)+(n<<2)>>2]|0;if(!a)break A;if(!(gQ(a)|0)){t[s+(A<<2)>>2]=a;A=A+1|0;r=t[f>>2]|0}n=n+1|0}}}while(0);if((A|0)>=2){t[s+(A<<2)>>2]=0;_4(s,A,4,61);f=l?2:3;n=l?-1:1;a=1;while(1){A=t[s+(a<<2)>>2]|0;if(!A)break e;r=t[s+(a+-1<<2)>>2]|0;r=t[((t[r>>2]&3|0)==(f|0)?r:r+(n*48|0)|0)+40>>2]|0;A=t[((t[A>>2]&3|0)==(f|0)?A:A+(n*48|0)|0)+40>>2]|0;if(gL(r,A)|0)break e;l=IL(r,A,0)|0;i[(t[l+16>>2]|0)+112>>0]=4;WL(e,l);a=a+1|0}}}}while(0);return}function gQ(e){e=e|0;var A=0;while(1){A=t[(t[e+16>>2]|0)+116>>2]|0;if(!A)break;else e=A}A=t[e>>2]&3;return(t[(t[(t[((A|0)==3?e:e+48|0)+40>>2]|0)+16>>2]|0)+212>>2]|0)!=(t[(t[(t[((A|0)==2?e:e+-48|0)+40>>2]|0)+16>>2]|0)+212>>2]|0)|0}function mQ(e,A){e=e|0;A=A|0;return((t[t[e>>2]>>2]|0)>>>4)-((t[t[A>>2]>>2]|0)>>>4)|0}function pQ(e){e=e|0;var A=0,r=0,i=0,n=0,f=0,l=0,s=0;i=t[e+16>>2]|0;n=i+220|0;f=t[n>>2]|0;if((f|0)>=2){l=i+216|0;e=0;r=0;while(1){if((r|0)>=(f|0))break;A=t[(t[l>>2]|0)+(r<<2)>>2]|0;if(e|0)t[(t[e+16>>2]|0)+164>>2]=A;s=t[A+16>>2]|0;t[s+168>>2]=e;e=A;A=s;while(1){A=t[A+164>>2]|0;if(!A)break;e=A;A=t[A+16>>2]|0}r=r+1|0}t[n>>2]=1;t[i+192>>2]=t[t[i+216>>2]>>2];a[i+236>>1]=t[46742];a[i+238>>1]=t[46743]}return}function EQ(e){e=e|0;var A=0,r=0,n=0,f=0,l=0,s=0;l=t[46741]|0;s=l+16|0;r=t[s>>2]|0;n=0;f=a[r+236>>1]|0;while(1){if((f|0)>=(a[r+238>>1]|0))break;e=t[r+196>>2]|0;if(!(i[e+(f<<6)+49>>0]|0)){A=JQ(l,f)|0;e=t[s>>2]|0;r=t[e+196>>2]|0;t[r+(f<<6)+52>>2]=A;i[r+(f<<6)+49>>0]=1}else{A=t[e+(f<<6)+52>>2]|0;e=r}n=A+n|0;f=f+1|0;r=e}return n|0}function BQ(e){e=e|0;var A=0,r=0,i=0,n=0,f=0,l=0;e=t[e+16>>2]|0;n=a[e+238>>1]|0;f=e+196|0;e=a[e+236>>1]|0;while(1){if((e|0)>(n|0))break;i=t[f>>2]|0;r=t[i+(e<<6)>>2]|0;i=i+(e<<6)+4|0;A=0;while(1){if((A|0)>=(r|0))break;l=t[(t[(t[i>>2]|0)+(A<<2)>>2]|0)+16>>2]|0;c[l+16>>3]=+(t[l+236>>2]|0);A=A+1|0}e=e+1|0}return}function yQ(e,A){e=e|0;A=A|0;var r=0,n=0,f=0,l=0,s=0,c=0,o=0,u=0,b=0,w=0,k=0,d=0;d=h;h=h+16|0;o=d;u=e+16|0;b=cx(t[(t[u>>2]|0)+232>>2]|0)|0;s=t[u>>2]|0;r=s+192|0;n=r;while(1){n=t[n>>2]|0;if(!n)break;n=t[n+16>>2]|0;i[n+157>>0]=0;n=n+164|0}f=a[s+238>>1]|0;l=s+196|0;n=a[s+236>>1]|0;while(1){if((n|0)>(f|0))break;t[(t[l>>2]|0)+(n<<6)>>2]=0;n=n+1|0}l=(A|0)==0;while(1){n=t[r>>2]|0;if(!n)break;f=n+16|0;r=t[f>>2]|0;if((t[t[(l?r+172|0:r+180|0)>>2]>>2]|0)==0?(c=r+157|0,(i[c>>0]|0)==0):0){i[c>>0]=1;ux(b,n);while(1){r=bx(b)|0;if(!r)break;if((i[(t[r+16>>2]|0)+159>>0]|0)==7){EW(e,r,A,b);continue}else{RQ(e,r);xQ(b,r,A);continue}}r=t[f>>2]|0}r=r+164|0}if(bx(b)|0)nw(1,86312,o)|0;r=t[u>>2]|0;s=a[r+236>>1]|0;while(1){if((s|0)>(a[r+238>>1]|0))break;i[(t[(t[(t[46741]|0)+16>>2]|0)+196>>2]|0)+(s<<6)+49>>0]=0;if((t[r+116>>2]&1|0)!=0?(w=t[r+196>>2]|0,k=t[w+(s<<6)>>2]|0,(k|0)>0):0){n=t[w+(s<<6)+4>>2]|0;f=k+-1|0;l=(f|0)/2|0;r=0;while(1){if((r|0)>(l|0))break;WQ(t[n+(r<<2)>>2]|0,t[n+(f-r<<2)>>2]|0);r=r+1|0}r=t[u>>2]|0}s=s+1|0}if((mG(e)|0)==(e|0)?(EQ(0)|0)>0:0)ZQ(e,0);ox(b);h=d;return}function CQ(e){e=e|0;var A=0,r=0,n=0,f=0,l=0,s=0,o=0,u=0,b=0,h=0;b=e+16|0;e=t[b>>2]|0;r=a[e+236>>1]|0;A=a[e+238>>1]|0;o=A<<16>>16;u=e+196|0;n=r;while(1){if((n|0)>(o|0))break;s=t[u>>2]|0;l=t[s+(n<<6)>>2]|0;s=s+(n<<6)+4|0;f=0;while(1){if((f|0)>=(l|0))break;h=t[(t[(t[s>>2]|0)+(f<<2)>>2]|0)+16>>2]|0;t[h+236>>2]=~~+c[h+16>>3];f=f+1|0}n=n+1|0}while(1){if((r|0)>(A<<16>>16|0))break;i[(t[(t[(t[46741]|0)+16>>2]|0)+196>>2]|0)+(r<<6)+49>>0]=0;h=t[e+196>>2]|0;_4(t[h+(r<<6)+4>>2]|0,t[h+(r<<6)>>2]|0,4,62);h=t[b>>2]|0;r=r+1|0;A=a[h+238>>1]|0;e=h}return}function IQ(e,A){e=e|0;A=A|0;var r=0,i=0,n=0;n=((A|0)%4|0|0)<2&1;r=t[e+16>>2]|0;if(!(A&1)){A=a[r+236>>1]|0;i=1;r=a[r+238>>1]|0;A=(A<<16>>16<=(a[(t[(t[46741]|0)+16>>2]|0)+236>>1]|0)&1)+(A<<16>>16)|0}else{A=a[r+238>>1]|0;i=-1;r=a[r+236>>1]|0;A=((A<<16>>16>=(a[(t[(t[46741]|0)+16>>2]|0)+238>>1]|0))<<31>>31)+(A<<16>>16)|0}r=i+r|0;while(1){if((A|0)==(r|0))break;MQ(e,A,n,(FQ(e,A,A-i|0)|0)&255);A=A+i|0}ZQ(e,n^1);return}function ZQ(e,A){e=e|0;A=A|0;var r=0,n=0,f=0,l=0,s=0,c=0;c=e+16|0;n=t[c>>2]|0;l=a[n+236>>1]|0;s=a[n+238>>1]|0;f=n+196|0;r=l<<16>>16;while(1){if((r|0)>(s|0)){f=l;break}i[(t[f>>2]|0)+(r<<6)+48>>0]=1;r=r+1|0}while(1){r=0;f=f<<16>>16;while(1){if((f|0)>(a[n+238>>1]|0))break;if(i[(t[n+196>>2]|0)+(f<<6)+48>>0]|0){r=(YQ(e,f,A)|0)+r|0;n=t[c>>2]|0}f=f+1|0}if((r|0)<=0)break;f=a[n+236>>1]|0}return}function GQ(e){e=e|0;var A=0,r=0,n=0,f=0,l=0,s=0,c=0,o=0,u=0,b=0,h=0,w=0,k=0;h=e+16|0;A=t[h>>2]|0;b=a[A+238>>1]|0;e:while(1){if((b|0)<(a[A+236>>1]|0)){A=16;break}r=t[A+196>>2]|0;i[r+(b<<6)+48>>0]=0;w=(b|0)>0;k=b+1|0;n=0;A:while(1){o=(t[r+(b<<6)>>2]|0)+-1|0;u=r+(b<<6)+4|0;c=r+(k<<6)|0;while(1){if((n|0)>=(o|0))break A;s=t[u>>2]|0;l=t[s+(n<<2)>>2]|0;n=n+1|0;s=t[s+(n<<2)>>2]|0;if((t[(t[l+16>>2]|0)+236>>2]|0)>=(t[(t[s+16>>2]|0)+236>>2]|0)){A=7;break e}if(LQ(e,l,s)|0)continue;if(w){r=QQ(l,s)|0;f=QQ(s,l)|0}else{r=0;f=0}if((t[c>>2]|0)>0){r=(DQ(l,s)|0)+r|0;f=(DQ(s,l)|0)+f|0}if((f|0)<=(r|0))break}zQ(e,b,l,s);A=t[h>>2]|0;r=t[A+196>>2]|0}b=b+-1|0}if((A|0)==7)ge(86263,85781,721,86289);else if((A|0)==16)return}function LQ(e,A,r){e=e|0;A=A|0;r=r|0;var a=0,n=0,f=0,l=0,s=0,c=0;s=t[A+16>>2]|0;l=t[s+212>>2]|0;a=t[r+16>>2]|0;n=t[a+212>>2]|0;f=(l|0)!=(n|0);do{if(!(i[193769]|0))if((n|0)==0|((l|0)==0|f^1))c=9;else{if((i[s+159>>0]|0)==7?(i[s+156>>0]|0)==1:0){e=0;break}if((i[a+159>>0]|0)==7?(i[a+156>>0]|0)==1:0){e=0;break}e=1}else if(f)e=1;else c=9}while(0);if((c|0)==9){a=t[e+16>>2]|0;e=t[(t[a+196>>2]|0)+(t[s+232>>2]<<6)+56>>2]|0;if(!e)e=0;else{s=(t[a+116>>2]&1|0)==0;c=P(t[e+4>>2]|0,t[(t[(s?A:r)+16>>2]|0)+284>>2]|0)|0;e=i[(t[e+8>>2]|0)+((t[(t[(s?r:A)+16>>2]|0)+284>>2]|0)+c)>>0]|0}}return e|0}function QQ(e,A){e=e|0;A=A|0;var r=0,i=0,n=0,f=0,l=0,s=0,o=0,u=0,b=0;o=e+16|0;l=t[(t[A+16>>2]|0)+172>>2]|0;A=0;while(1){e=t[l>>2]|0;if(!e)break;f=t[e+16>>2]|0;s=a[f+154>>1]|0;n=t[(t[(t[((t[e>>2]&3|0)==3?e:e+48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0;f=f+16|0;i=t[(t[o>>2]|0)+172>>2]|0;e=A;while(1){A=t[i>>2]|0;if(!A)break;r=(t[(t[(t[((t[A>>2]&3|0)==3?A:A+48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0)-n|0;if((r|0)<=0){if((r|0)==0?(u=t[A+16>>2]|0,+c[u+16>>3]>+c[f>>3]):0){A=u;b=9}}else{A=t[A+16>>2]|0;b=9}if((b|0)==9){b=0;e=(P(a[A+154>>1]|0,s)|0)+e|0}i=i+4|0}l=l+4|0;A=e}return A|0}function DQ(e,A){e=e|0;A=A|0;var r=0,i=0,n=0,f=0,l=0,s=0,o=0,u=0,b=0;o=e+16|0;l=t[(t[A+16>>2]|0)+180>>2]|0;A=0;while(1){e=t[l>>2]|0;if(!e)break;f=t[e+16>>2]|0;s=a[f+154>>1]|0;n=t[(t[(t[((t[e>>2]&3|0)==2?e:e+-48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0;f=f+56|0;i=t[(t[o>>2]|0)+180>>2]|0;e=A;while(1){A=t[i>>2]|0;if(!A)break;r=(t[(t[(t[((t[A>>2]&3|0)==2?A:A+-48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0)-n|0;if((r|0)<=0){if((r|0)==0?(u=t[A+16>>2]|0,+c[u+56>>3]>+c[f>>3]):0){A=u;b=9}}else{A=t[A+16>>2]|0;b=9}if((b|0)==9){b=0;e=(P(a[A+154>>1]|0,s)|0)+e|0}i=i+4|0}l=l+4|0;A=e}return A|0}function zQ(e,A,r,a){e=e|0;A=A|0;r=r|0;a=a|0;var n=0,f=0,l=0,s=0,c=0,o=0,u=0,b=0,h=0;l=i[(t[r+16>>2]|0)+156>>0]|0;if(l<<24>>24!=(i[(t[a+16>>2]|0)+156>>0]|0)){s=e+16|0;o=t[(t[s>>2]|0)+196>>2]|0;c=t[o+(A<<6)>>2]|0;o=o+(A<<6)+4|0;e=0;n=0;f=0;while(1){if((e|0)>=(c|0))break;h=(i[(t[(t[(t[o>>2]|0)+(e<<2)>>2]|0)+16>>2]|0)+156>>0]|0)==0;e=e+1|0;n=n+(h&1)|0;f=f+((h^1)&1)|0}l=l<<24>>24==0;f=(n|0)<(f|0)?l?r:a:l?a:r;l=0;e=0;while(1){if((e|0)>=(c|0))break;l=(t[(t[o>>2]|0)+(e<<2)>>2]|0)==(f|0)?e:l;e=e+1|0}h=(i[(t[f+16>>2]|0)+156>>0]|0)==0&1;b=0;n=l;while(1){e=n+-1|0;if((n|0)<=0){u=0;e=l;break}if((i[(t[(t[(t[o>>2]|0)+(e<<2)>>2]|0)+16>>2]|0)+156>>0]|0)!=(h|0)){u=0;e=l;break}b=b+1|0;n=e}while(1){e=e+1|0;if((e|0)>=(c|0))break;if((i[(t[(t[(t[o>>2]|0)+(e<<2)>>2]|0)+16>>2]|0)+156>>0]|0)!=(h|0))break;u=u+1|0}WQ(r,a);s=t[(t[s>>2]|0)+196>>2]|0;c=t[s+(A<<6)>>2]|0;s=s+(A<<6)+4|0;e=0;while(1){if((e|0)>=(c|0)){f=0;n=l;break}l=(t[(t[s>>2]|0)+(e<<2)>>2]|0)==(f|0)?e:l;e=e+1|0}while(1){e=n+-1|0;if((n|0)<=0){n=0;e=l;break}if((i[(t[(t[(t[s>>2]|0)+(e<<2)>>2]|0)+16>>2]|0)+156>>0]|0)!=(h|0)){n=0;e=l;break}f=f+1|0;n=e}while(1){e=e+1|0;if((e|0)>=(c|0))break;if((i[(t[(t[(t[s>>2]|0)+(e<<2)>>2]|0)+16>>2]|0)+156>>0]|0)!=(h|0))break;n=n+1|0}A=f-n|0;h=b-u|0;if((((A|0)>-1?A:0-A|0)|0)>(((h|0)>-1?h:0-h|0)|0))WQ(r,a)}return}function WQ(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0,f=0;a=t[e+16>>2]|0;i=t[a+232>>2]|0;a=a+236|0;r=t[a>>2]|0;n=A+16|0;f=t[(t[n>>2]|0)+236>>2]|0;t[a>>2]=f;a=(t[46741]|0)+16|0;t[(t[(t[(t[a>>2]|0)+196>>2]|0)+(i<<6)+4>>2]|0)+(f<<2)>>2]=e;t[(t[n>>2]|0)+236>>2]=r;t[(t[(t[(t[a>>2]|0)+196>>2]|0)+(i<<6)+4>>2]|0)+(r<<2)>>2]=A;return}function YQ(e,A,r){e=e|0;A=A|0;r=r|0;var n=0,f=0,l=0,s=0,c=0,o=0,u=0,b=0,h=0,w=0,k=0,d=0,v=0;k=e+16|0;b=t[(t[k>>2]|0)+196>>2]|0;i[b+(A<<6)+48>>0]=0;d=(A|0)>0;v=A+1|0;h=(r|0)!=0;w=A+-1|0;n=0;l=0;r=b;e:while(1){o=(t[r+(A<<6)>>2]|0)+-1|0;u=r+(A<<6)+4|0;f=r+(v<<6)|0;b=n;while(1){if((b|0)>=(o|0)){r=17;break e}c=t[u>>2]|0;s=t[c+(b<<2)>>2]|0;b=b+1|0;c=t[c+(b<<2)>>2]|0;if((t[(t[s+16>>2]|0)+236>>2]|0)>=(t[(t[c+16>>2]|0)+236>>2]|0)){r=5;break e}if(LQ(e,s,c)|0)continue;if(d){r=QQ(s,c)|0;n=QQ(c,s)|0}else{r=0;n=0}if((t[f>>2]|0)>0){r=(DQ(s,c)|0)+r|0;n=(DQ(c,s)|0)+n|0}if((r|0)>(n|0))break;if((r|0)==(n|0)&(h&(r|0)>0)){r=n;break}}WQ(s,c);l=r-n+l|0;n=t[(t[(t[46741]|0)+16>>2]|0)+196>>2]|0;i[n+(A<<6)+49>>0]=0;f=t[k>>2]|0;r=t[f+196>>2]|0;i[r+(A<<6)+48>>0]=1;if((a[f+236>>1]|0)<(A|0)){i[n+(w<<6)+49>>0]=0;i[r+(w<<6)+48>>0]=1}if((a[f+238>>1]|0)<=(A|0)){n=b;continue}i[n+(v<<6)+49>>0]=0;i[r+(v<<6)+48>>0]=1;n=b}if((r|0)==5)ge(86263,85781,770,86297);else if((r|0)==17)return l|0;return 0}function FQ(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,f=0.0,l=0,s=0,o=0,u=0,b=0,h=0,w=0,k=0,d=0;w=t[46739]|0;k=e+16|0;e=t[(t[k>>2]|0)+196>>2]|0;d=t[e+(A<<6)+4>>2]|0;b=(r|0)>(A|0);h=w+4|0;u=0;while(1){r=t[e+(A<<6)>>2]|0;if((u|0)>=(r|0)){e=0;l=0;break}o=(t[d+(u<<2)>>2]|0)+16|0;e=t[o>>2]|0;e:do{if(b){s=t[e+180>>2]|0;e=0;l=0;while(1){r=t[s+(l<<2)>>2]|0;if(!r)break e;i=t[r+16>>2]|0;if((a[i+154>>1]|0)>0){t[w+(e<<2)>>2]=t[(t[(t[((t[r>>2]&3|0)==2?r:r+-48|0)+40>>2]|0)+16>>2]|0)+236>>2]<<8|n[i+88>>0];e=e+1|0}l=l+1|0}}else{s=t[e+172>>2]|0;l=0;e=0;while(1){r=t[s+(l<<2)>>2]|0;if(!r)break e;i=t[r+16>>2]|0;if((a[i+154>>1]|0)>0){t[w+(e<<2)>>2]=t[(t[(t[((t[r>>2]&3|0)==3?r:r+48|0)+40>>2]|0)+16>>2]|0)+236>>2]<<8|n[i+48>>0];e=e+1|0}l=l+1|0}}}while(0);e:do{switch(e|0){case 0:{f=-1.0;break}case 1:{f=+(t[w>>2]|0);break}case 2:{f=+(((t[h>>2]|0)+(t[w>>2]|0)|0)/2|0|0);break}default:{_4(w,e,4,60);r=(e|0)/2|0;if(e&1|0){f=+(t[w+(r<<2)>>2]|0);break e}l=t[w+(r<<2)>>2]|0;i=(t[w+(e+-1<<2)>>2]|0)-l|0;e=t[w+(r+-1<<2)>>2]|0;r=e-(t[w>>2]|0)|0;if((r|0)==(i|0)){f=+((e+l|0)/2|0|0);break e}else{f=+(((P(r,l)|0)+(P(e,i)|0)|0)/(r+i|0)|0|0);break e}}}}while(0);c[(t[o>>2]|0)+240>>3]=f;u=u+1|0;e=t[(t[k>>2]|0)+196>>2]|0}while(1){if((l|0)>=(r|0))break;i=t[d+(l<<2)>>2]|0;w=t[i+16>>2]|0;if((t[w+184>>2]|0)==0?(t[w+176>>2]|0)==0:0){e=(VQ(i)|0|e&255)&255;r=t[(t[(t[k>>2]|0)+196>>2]|0)+(A<<6)>>2]|0}l=l+1|0}return e|0}function MQ(e,A,r,a){e=e|0;A=A|0;r=r|0;a=a|0;var n=0,f=0,l=0,s=0,o=0,u=0.0,b=0,h=0,w=0,k=0,d=0,v=0;h=t[(t[e+16>>2]|0)+196>>2]|0;v=t[h+(A<<6)+4>>2]|0;h=t[h+(A<<6)>>2]|0;k=(r|0)!=0;w=(a|r|0)==0;a=0;r=h;h=v+(h<<2)|0;while(1){b=r+-1|0;if((r|0)>0)r=v;else break;e:while(1){A:while(1){if(r>>>0>=h>>>0)break e;while(1){if(r>>>0>=h>>>0)break e;o=t[r>>2]|0;u=+c[(t[o+16>>2]|0)+240>>3];if(!(u<0.0))break;r=r+4|0}s=0;while(1){n=s<<24>>24==0;while(1){r=r+4|0;if(r>>>0>=h>>>0)break e;if(n){n=11;break}f=t[r>>2]|0;if(!(t[(t[f+16>>2]|0)+212>>2]|0)){n=13;break}}if((n|0)==11){f=t[r>>2]|0;l=f}else if((n|0)==13)l=f;if(LQ(e,o,l)|0)continue A;n=t[f+16>>2]|0;if(+c[n+240>>3]>=0.0)break;s=(t[n+212>>2]|0)==0?s:1}n=~~u;s=~~+c[(t[f+16>>2]|0)+240>>3];if((n|0)>(s|0)|k&(n|0)==(s|0))break}WQ(o,l);a=a+1|0}r=b;h=w?h+-4|0:h}if(a|0?(d=t[(t[(t[46741]|0)+16>>2]|0)+196>>2]|0,i[d+(A<<6)+49>>0]=0,(A|0)>0):0)i[d+(A+-1<<6)+49>>0]=0;return}function VQ(e){e=e|0;var A=0.0,r=0,i=0,a=0,n=0;n=t[e+16>>2]|0;if((t[n+200>>2]|0)>0){a=t[n+196>>2]|0;e=t[a>>2]|0;e=t[((t[e>>2]&3|0)==3?e:e+48|0)+40>>2]|0;r=1;while(1){i=t[a+(r<<2)>>2]|0;if(!i)break;i=t[((t[i>>2]&3|0)==3?i:i+48|0)+40>>2]|0;e=(t[(t[i+16>>2]|0)+236>>2]|0)>(t[(t[e+16>>2]|0)+236>>2]|0)?i:e;r=r+1|0}A=+c[(t[e+16>>2]|0)+240>>3];if(!(A>=0.0))e=1;else{c[n+240>>3]=A+1.0;e=0}}else if((t[n+192>>2]|0)>0){i=t[n+188>>2]|0;r=t[i>>2]|0;e=1;r=t[((t[r>>2]&3|0)==2?r:r+-48|0)+40>>2]|0;while(1){a=t[i+(e<<2)>>2]|0;if(!a)break;a=t[((t[a>>2]&3|0)==2?a:a+-48|0)+40>>2]|0;e=e+1|0;r=(t[(t[a+16>>2]|0)+236>>2]|0)<(t[(t[r+16>>2]|0)+236>>2]|0)?a:r}A=+c[(t[r+16>>2]|0)+240>>3];if(A>0.0){c[n+240>>3]=A+-1.0;e=0}else e=1}else e=1;return e|0}function NQ(e,A){e=e|0;A=A|0;return(t[(t[(t[e>>2]|0)+16>>2]|0)+236>>2]|0)-(t[(t[(t[A>>2]|0)+16>>2]|0)+236>>2]|0)|0}function RQ(e,A){e=e|0;A=A|0;var r=0,i=0,n=0,f=0,l=0,s=0,c=0,o=0,u=0,b=0,w=0;w=h;h=h+96|0;b=w+64|0;u=w+48|0;f=w+24|0;i=w;s=A+16|0;c=t[(t[s>>2]|0)+232>>2]|0;o=e+16|0;r=t[(t[o>>2]|0)+196>>2]|0;l=t[r+(c<<6)>>2]|0;do{if((t[r+(c<<6)+8>>2]|0)>=1){t[(t[r+(c<<6)+4>>2]|0)+(l<<2)>>2]=A;t[(t[s>>2]|0)+236>>2]=l;e=t[o>>2]|0;i=t[e+196>>2]|0;r=i+(c<<6)|0;n=t[r>>2]|0;t[r>>2]=n+1;if((n|0)>=(t[i+(c<<6)+8>>2]|0))ge(86377,85781,1346,86413);n=t[(t[(t[(t[46741]|0)+16>>2]|0)+196>>2]|0)+(c<<6)+8>>2]|0;if((l|0)>(n|0)){o=Mk(A)|0;u=t[(t[s>>2]|0)+236>>2]|0;b=t[(t[(t[(t[46741]|0)+16>>2]|0)+196>>2]|0)+(c<<6)+8>>2]|0;t[f>>2]=1359;t[f+4>>2]=o;t[f+8>>2]=u;t[f+12>>2]=c;t[f+16>>2]=b;nw(1,86429,f)|0;break}r=a[e+236>>1]|0;e=a[e+238>>1]|0;if((c|0)<(r|0)|(c|0)>(e<<16>>16|0)){t[u>>2]=1364;t[u+4>>2]=c;t[u+8>>2]=r;t[u+12>>2]=e<<16>>16;nw(1,86502,u)|0;break}if(((t[i+(c<<6)+4>>2]|0)+(l<<2)|0)>>>0>((t[i+(c<<6)+12>>2]|0)+(n<<2)|0)>>>0){l=Mk(A)|0;u=t[(t[o>>2]|0)+196>>2]|0;o=(t[u+(c<<6)+4>>2]|0)+(t[(t[s>>2]|0)+236>>2]<<2)|0;u=(t[u+(c<<6)+12>>2]|0)+(t[(t[(t[(t[46741]|0)+16>>2]|0)+196>>2]|0)+(c<<6)+8>>2]<<2)|0;t[b>>2]=1370;t[b+4>>2]=c;t[b+8>>2]=l;t[b+12>>2]=o;t[b+16>>2]=c;t[b+20>>2]=c;t[b+24>>2]=u;nw(1,86563,b)|0}}else{u=Mk(e)|0;b=Mk(A)|0;t[i>>2]=1339;t[i+4>>2]=u;t[i+8>>2]=b;t[i+12>>2]=c;t[i+16>>2]=l;nw(1,86322,i)|0}}while(0);h=w;return}function xQ(e,A,r){e=e|0;A=A|0;r=r|0;var a=0,n=0,f=0;f=A+16|0;e:do{if(!r){n=0;while(1){A=t[f>>2]|0;if((n|0)>=(t[A+184>>2]|0))break e;A=t[(t[A+180>>2]|0)+(n<<2)>>2]|0;r=A+-48|0;a=(t[(t[((t[A>>2]&3|0)==2?A:r)+40>>2]|0)+16>>2]|0)+157|0;if(!(i[a>>0]|0)){i[a>>0]=1;ux(e,t[((t[A>>2]&3|0)==2?A:r)+40>>2]|0)}n=n+1|0}}else{n=0;while(1){A=t[f>>2]|0;if((n|0)>=(t[A+176>>2]|0))break e;A=t[(t[A+172>>2]|0)+(n<<2)>>2]|0;r=A+48|0;a=(t[(t[((t[A>>2]&3|0)==3?A:r)+40>>2]|0)+16>>2]|0)+157|0;if(!(i[a>>0]|0)){i[a>>0]=1;ux(e,t[((t[A>>2]&3|0)==3?A:r)+40>>2]|0)}n=n+1|0}}}while(0);return}function JQ(e,A){e=e|0;A=A|0;var r=0,n=0,f=0,l=0,s=0,c=0,o=0,u=0,b=0,w=0,k=0,d=0,v=0,g=0,m=0,p=0;p=h;h=h+16|0;m=p;n=e+16|0;r=t[(t[n>>2]|0)+196>>2]|0;v=t[r+(A<<6)+4>>2]|0;g=A+1|0;e=t[(t[(t[(t[46741]|0)+16>>2]|0)+196>>2]|0)+(g<<6)>>2]|0;if((t[46745]|0)>(e|0))k=t[46746]|0;else{e=e+1|0;t[46745]=e;r=t[46746]|0;if(!r)e=$F(e<<2)|0;else e=AM(r,e<<2)|0;t[46746]=e;r=t[(t[n>>2]|0)+196>>2]|0;k=e}d=r+(g<<6)|0;e=0;while(1){if((e|0)>=(t[d>>2]|0))break;t[k+(e<<2)>>2]=0;e=e+1|0}w=r+(A<<6)|0;b=0;f=0;e=0;s=k;while(1){c=t[w>>2]|0;if((b|0)>=(c|0))break;u=t[(t[(t[v+(b<<2)>>2]|0)+16>>2]|0)+180>>2]|0;e:do{if((f|0)>0){o=0;while(1){n=t[u+(o<<2)>>2]|0;if(!n)break e;c=n+16|0;l=t[(t[(t[((t[n>>2]&3|0)==2?n:n+-48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0;while(1){n=l+1|0;if((l|0)>=(f|0))break;l=n;e=(P(t[s+(n<<2)>>2]|0,a[(t[c>>2]|0)+154>>1]|0)|0)+e|0}o=o+1|0}}}while(0);l=0;while(1){n=t[u+(l<<2)>>2]|0;if(!n)break;s=t[(t[(t[((t[n>>2]&3|0)==2?n:n+-48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0;o=k+(s<<2)|0;t[o>>2]=(t[o>>2]|0)+(a[(t[n+16>>2]|0)+154>>1]|0);f=(s|0)>(f|0)?s:f;l=l+1|0;s=k}b=b+1|0}l=r+(A<<6)+4|0;f=0;while(1){if((f|0)>=(c|0))break;n=t[(t[(t[l>>2]|0)+(f<<2)>>2]|0)+16>>2]|0;if(i[n+145>>0]|0){A=n+180|0;t[m>>2]=t[A>>2];t[m+4>>2]=t[A+4>>2];e=(HQ(m,1)|0)+e|0}f=f+1|0}l=t[d>>2]|0;f=r+(g<<6)+4|0;n=0;while(1){if((n|0)>=(l|0))break;r=t[(t[(t[f>>2]|0)+(n<<2)>>2]|0)+16>>2]|0;if(i[r+145>>0]|0){g=r+172|0;t[m>>2]=t[g>>2];t[m+4>>2]=t[g+4>>2];e=(HQ(m,-1)|0)+e|0}n=n+1|0}h=p;return e|0}function HQ(e,A){e=e|0;A=A|0;var r=0,i=0,n=0,f=0,l=0,s=0,o=0,u=0,b=0;b=(A|0)<1;o=t[e>>2]|0;A=0;e=0;e:while(1){u=t[o+(A<<2)>>2]|0;if(!u)break;A=A+1|0;if(b){l=u+48|0;s=u+16|0;f=A;while(1){r=t[o+(f<<2)>>2]|0;if(!r)continue e;i=t[r+16>>2]|0;n=t[s>>2]|0;if((+c[i+56>>3]-+c[n+56>>3])*+((t[(t[(t[((t[r>>2]&3|0)==3?r:r+48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0)-(t[(t[(t[((t[u>>2]&3|0)==3?u:l)+40>>2]|0)+16>>2]|0)+236>>2]|0)|0)<0.0)e=(P(a[i+154>>1]|0,a[n+154>>1]|0)|0)+e|0;f=f+1|0}}else{l=u+-48|0;s=u+16|0;f=A;while(1){r=t[o+(f<<2)>>2]|0;if(!r)continue e;i=t[r+16>>2]|0;n=t[s>>2]|0;if((+c[i+16>>3]-+c[n+16>>3])*+((t[(t[(t[((t[r>>2]&3|0)==2?r:r+-48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0)-(t[(t[(t[((t[u>>2]&3|0)==2?u:l)+40>>2]|0)+16>>2]|0)+236>>2]|0)|0)<0.0)e=(P(a[i+154>>1]|0,a[n+154>>1]|0)|0)+e|0;f=f+1|0}}}return e|0}function PQ(e){e=e|0;var A=0.0,r=0.0;t[46744]=8;t[47136]=24;c[23215]=.995;e=Hw(e,86685)|0;if(e|0?(A=+$3(e),A>0.0):0){r=A*+(t[46744]|0);t[46744]=~~(r>1.0?r:1.0);A=A*+(t[47136]|0);t[47136]=~~(A>1.0?A:1.0)}return}function XQ(e){e=e|0;var A=0,r=0;r=(a[(t[e+16>>2]|0)+238>>1]|0)+2|0;A=KF(r<<2)|0;jQ(e,A,r,0)|0;G2(A);return}function SQ(e){e=e|0;var A=0,r=0,i=0,n=0,f=0,l=0,s=0,c=0;f=e+16|0;l=KF((a[(t[f>>2]|0)+238>>1]<<2)+8|0)|0;n=sd(e)|0;while(1){if(!n)break;i=l+(t[(t[n+16>>2]|0)+232>>2]<<2)|0;t[i>>2]=(t[i>>2]|0)+1;i=Ow(e,n)|0;while(1){if(!i)break;s=t[i>>2]&3;A=t[(t[(t[((s|0)==3?i:i+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0;s=t[(t[(t[((s|0)==2?i:i+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0;c=(A|0)>(s|0);r=c?A:s;A=c?s:A;while(1){A=A+1|0;if((A|0)>=(r|0))break;c=l+(A<<2)|0;t[c>>2]=(t[c>>2]|0)+1}i=qw(e,i)|0}n=cd(e,n)|0}i=KF((a[(t[f>>2]|0)+238>>1]<<6)+128|0)|0;r=t[f>>2]|0;t[r+196>>2]=i;A=a[r+236>>1]|0;while(1){if((A|0)>(a[r+238>>1]|0))break;s=l+(A<<2)|0;r=t[s>>2]|0;t[i+(A<<6)>>2]=r;t[i+(A<<6)+8>>2]=r;s=KF((t[s>>2]<<2)+4|0)|0;r=t[f>>2]|0;c=t[r+196>>2]|0;t[c+(A<<6)+4>>2]=s;t[c+(A<<6)+12>>2]=s;A=A+1|0;i=c}G2(l);return}function jQ(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var n=0,f=0,l=0,s=0,o=0,u=0;u=e+16|0;f=1;while(1){n=t[u>>2]|0;if((f|0)>(t[n+180>>2]|0))break;o=jQ(t[(t[n+184>>2]|0)+(f<<2)>>2]|0,A,r,i)|0;f=f+1|0;i=o}e:do{if((mG(e)|0)!=(e|0)){z6(A|0,0,r<<2|0)|0;n=sd(e)|0;while(1){if(!n)break;s=n+16|0;t[A+(t[(t[s>>2]|0)+232>>2]<<2)>>2]=1;f=Ow(e,n)|0;while(1){if(!f)break;o=f+-48|0;l=t[(t[s>>2]|0)+232>>2]|0;while(1){r=l+1|0;if((l|0)>=(t[(t[(t[((t[f>>2]&3|0)==2?f:o)+40>>2]|0)+16>>2]|0)+232>>2]|0))break;t[A+(r<<2)>>2]=1;l=r}f=qw(e,f)|0}n=cd(e,n)|0}n=t[u>>2]|0;f=a[n+236>>1]|0;while(1){if((f|0)>(a[n+238>>1]|0))break e;if(!(t[A+(f<<2)>>2]|0)){if(!i)i=Rv(mG(e)|0,86675,1)|0;n=gd(i,0,1)|0;Sd(n,137447,304,1)|0;o=n+16|0;l=t[o>>2]|0;t[l+232>>2]=f;c[l+96>>3]=.5;c[l+88>>3]=.5;c[l+80>>3]=1.0;t[l+216>>2]=1;t[l+176>>2]=0;l=KF(20)|0;s=t[o>>2]|0;t[s+172>>2]=l;t[s+184>>2]=0;s=KF(20)|0;t[(t[o>>2]|0)+180>>2]=s;hd(e,n,1)|0;n=t[u>>2]|0}f=f+1|0}}}while(0);return i|0}function UQ(e){e=e|0;var A=0,r=0;sQ(e);A=e+16|0;e=1;while(1){r=t[A>>2]|0;if((e|0)>(t[r+180>>2]|0))break;UQ(t[(t[r+184>>2]|0)+(e<<2)>>2]|0);e=e+1|0}return}function TQ(e){e=e|0;var A=0,r=0;A=t[e>>2]&3;r=OQ(t[((A|0)==3?e:e+48|0)+40>>2]|0)|0;A=t[17308+(r*12|0)+((OQ(t[((A|0)==2?e:e+-48|0)+40>>2]|0)|0)<<2)>>2]|0;e=(t[e+16>>2]|0)+156|0;t[e>>2]=P(t[e>>2]|0,A)|0;return}function OQ(e){e=e|0;e=t[e+16>>2]|0;if((i[e+156>>0]|0)==1)e=2;else e=(i[e+160>>0]|0)<2&1;return e|0}function _Q(e,A){e=e|0;A=A|0;if(t[(t[e+16>>2]|0)+192>>2]|0){BW(e);qQ(e);if(i[194954]|0)VW(e);KQ(e);if(AY(e)|0)qQ(e);$Q(e);if(VM(e,2,eD(e)|0)|0?(AD(e),VM(e,2,eD(e)|0)|0):0)ge(86693,86721,134,86732);rD(e);iD(e,A);aD(e)}return}function qQ(e){e=e|0;var A=0,r=0,n=0,f=0,l=0.0,s=0.0,o=0,u=0,b=0,h=0,w=0,k=0,d=0,v=0,g=0,m=0,p=0,E=0,B=0,y=0.0,C=0.0;p=e+16|0;A=t[p>>2]|0;E=t[A+196>>2]|0;g=a[A+236>>1]|0;while(1){if((g|0)>(a[A+238>>1]|0))break;b=E+(g<<6)|0;h=E+(g<<6)+4|0;w=E+(g<<6)+40|0;k=E+(g<<6)+24|0;d=E+(g<<6)+32|0;v=E+(g<<6)+16|0;u=0;while(1){if((u|0)>=(t[b>>2]|0))break;o=(t[(t[h>>2]|0)+(u<<2)>>2]|0)+16|0;A=t[o>>2]|0;l=+c[A+80>>3]*.5;f=t[A+204>>2]|0;e:do{if(f){n=0;while(1){r=t[f+(n<<2)>>2]|0;if(!r)break e;B=t[r>>2]&3;if((t[((B|0)==3?r:r+48|0)+40>>2]|0)==(t[((B|0)==2?r:r+-48|0)+40>>2]|0)?(m=t[(t[r+16>>2]|0)+96>>2]|0,(m|0)!=0):0){s=+c[m+32>>3]*.5;l=l>s?l:s}n=n+1|0}}}while(0);if(+c[w>>3]>3]=l;c[w>>3]=l}if(+c[d>>3]>3]=l;c[d>>3]=l}r=t[A+212>>2]|0;if(r|0){if((r|0)==(e|0))n=0;else{n=hx(r,t[47144]|0,8,0)|0;A=t[o>>2]|0}f=t[A+232>>2]|0;r=t[r+16>>2]|0;A=r+128|0;l=l+ +(n|0);if((f|0)==(a[r+236>>1]|0)){s=+c[A>>3];c[A>>3]=s>l?s:l}A=r+120|0;if((f|0)==(a[r+238>>1]|0)){s=+c[A>>3];c[A>>3]=s>l?s:l}}u=u+1|0}g=g+1|0;A=t[p>>2]|0}u=DD(e)|0;n=t[p>>2]|0;A=a[n+238>>1]|0;c[(t[(t[t[E+(A<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3]=+c[E+(A<<6)+16>>3];r=a[n+236>>1]|0;f=n+252|0;s=0.0;while(1){o=A+-1|0;if((A|0)<=(r|0))break;y=+c[E+(o<<6)+32>>3]+ +c[E+(A<<6)+40>>3]+ +(t[f>>2]|0);l=+c[E+(A<<6)+24>>3]+8.0+ +c[E+(o<<6)+16>>3];l=y>l?y:l;if((t[E+(o<<6)>>2]|0)>0)c[(t[(t[t[E+(o<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3]=+c[(t[(t[t[E+(A<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3]+l;s=s>l?s:l;A=o}e:do{if((u|0)!=0?(t[n+116>>2]&1|0)!=0:0){zD(e,0);n=t[p>>2]|0;if(i[n+276>>0]|0){A=a[n+238>>1]|0;r=a[n+236>>1]|0;l=+c[(t[(t[t[E+(A<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3];s=0.0;while(1){f=A+-1|0;if((A|0)<=(r|0))break e;C=+c[(t[(t[t[E+(f<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3];y=C-l;l=C;s=s>y?s:y;A=f}}}}while(0);e:do{if(i[n+276>>0]|0){f=a[n+236>>1]|0;r=a[n+238>>1]|0;while(1){A=r+-1|0;if((r|0)<=(f|0))break e;if((t[E+(A<<6)>>2]|0)<=0){r=A;continue}c[(t[(t[t[E+(A<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3]=+c[(t[(t[t[E+(r<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3]+s;r=A}}}while(0);A=n+192|0;while(1){A=t[A>>2]|0;if(!A)break;A=t[A+16>>2]|0;c[A+24>>3]=+c[(t[(t[t[E+(t[A+232>>2]<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3];A=A+164|0}return}function KQ(e){e=e|0;var A=0,r=0,i=0;ZD(e);A=(t[e+16>>2]|0)+192|0;while(1){A=t[A>>2]|0;if(!A)break;i=A+16|0;A=t[i>>2]|0;r=t[A+224>>2]|0;if(r){GD(e,r);A=t[i>>2]|0}r=t[A+228>>2]|0;if(!r)r=A;else{GD(e,r);r=t[i>>2]|0}i=t[r+204>>2]|0;if(i|0){A=0;while(1)if(!(t[i+(A<<2)>>2]|0))break;else A=A+1|0}A=r+164|0}return}function $Q(e){e=e|0;bD(e);hD(e);wD(e);kD(e);dD(e);return}function eD(e){e=e|0;var A=0,r=0.0;A=Hw(e,86921)|0;if(!A)e=2147483647;else{r=+$3(A);e=~~(r*+(gk(e)|0))}return e|0}function AD(e){e=e|0;var A=0,r=0,n=0,f=0,l=0,s=0,c=0,o=0,u=0,b=0,h=0,w=0,k=0,d=0,v=0;d=e+16|0;A=t[d>>2]|0;k=a[A+236>>1]|0;while(1){w=a[A+238>>1]|0;if((k|0)>(w|0)){v=19;break}b=t[A+196>>2]|0;h=b+(k<<6)|0;u=t[h>>2]|0;b=b+(k<<6)+4|0;o=0;r=0;e:while(1){if((o|0)>=(u|0)){v=14;break}r=t[(t[b>>2]|0)+(o<<2)>>2]|0;f=t[r+16>>2]|0;l=t[f+256>>2]|0;A:do{if(l|0){n=0;while(1){s=t[l+(n<<2)>>2]|0;if(!s)break A;c=t[s>>2]&3;if((t[(t[(t[((c|0)==2?s:s+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)>(k|0))break e;if((t[(t[(t[((c|0)==3?s:s+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)>(k|0))break e;else n=n+1|0}}}while(0);f=t[f+248>>2]|0;A:do{if(f|0){n=0;while(1){l=t[f+(n<<2)>>2]|0;if(!l)break A;s=t[l>>2]&3;if((t[(t[(t[((s|0)==3?l:l+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)>(k|0))break e;if((t[(t[(t[((s|0)==2?l:l+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)>(k|0))break e;else n=n+1|0}}}while(0);o=o+1|0}if((v|0)==14){v=0;if(r){r=t[t[b>>2]>>2]|0;A=t[t[h+(((k|0)<(w|0)?1:-1)<<6)+4>>2]>>2]|0;if(!A){v=16;break}h=zL(e)|0;w=h+16|0;i[(t[w>>2]|0)+156>>0]=2;oD(h,r,0.0,0)|0;oD(h,A,0.0,0)|0;t[(t[w>>2]|0)+232>>2]=t[(t[((t[(t[r+16>>2]|0)+232>>2]|0)<(t[(t[A+16>>2]|0)+232>>2]|0)?r:A)+16>>2]|0)+232>>2];A=t[d>>2]|0}}k=k+1|0}if((v|0)==16)ge(86829,86721,111,86832);else if((v|0)==19)return}function rD(e){e=e|0;var A=0,r=0,i=0,n=0,f=0,l=0,s=0;e=t[e+16>>2]|0;f=t[e+196>>2]|0;r=a[e+238>>1]|0;e=a[e+236>>1]|0;while(1){if((e|0)>(r|0))break;i=t[f+(e<<6)>>2]|0;n=f+(e<<6)+4|0;A=0;while(1){if((A|0)>=(i|0))break;s=t[(t[(t[n>>2]|0)+(A<<2)>>2]|0)+16>>2]|0;l=s+232|0;c[s+16>>3]=+(t[l>>2]|0);t[l>>2]=e;A=A+1|0}e=e+1|0}return}function iD(e,A){e=e|0;A=A|0;var r=0,i=0.0,n=0,f=0.0,l=0,s=0,o=0.0,u=0,b=0,h=0,w=0;tD(e,e);n=e+16|0;s=t[n>>2]|0;e:do{if((a[s+238>>1]|0)>0?(l=t[s+8>>2]|0,r=t[l+84>>2]|0,r|0):0){h=~~(+c[s+32>>3]-+c[s+16>>3]);u=~~(+c[s+40>>3]-+c[s+24>>3]);w=(t[s+116>>2]&1|0)==0;b=w?u:h;u=w?h:u;if((r|0)==4){r=nD(e)|0;s=t[n>>2]|0;l=t[s+8>>2]|0}else r=(r|0)==2&1;A:do{if(!(r<<24>>24)){switch(t[l+84>>2]|0){case 5:{i=+c[l+64>>3];if(i<=0.0)break e;f=i/+c[s+32>>3];o=+c[l+72>>3]/+c[s+40>>3];i=f1.0&o>1.0){o=i;break A}else break e}case 1:break;default:break e}f=+c[l+16>>3];i=+(b|0)/+(u|0);if(i>3];if(i<=0.0)break e;f=i/+(u|0);i=+c[l+72>>3]/+(b|0);if(f<1.0|i<1.0)if(f>2]&1|0)==0;f=r?i:o;i=r?o:i;r=s+192|0;while(1){r=t[r>>2]|0;if(!r)break;r=t[r+16>>2]|0;w=r+16|0;o=+c[w>>3]*i;c[w>>3]=+(~~(o+(o>=0.0?.5:-.5))|0);w=r+24|0;o=+c[w>>3]*f;c[w>>3]=+(~~(o+(o>=0.0?.5:-.5))|0);r=r+164|0}fD(e,i,f)}}while(0);if(A|0)lD(e,A);return}function aD(e){e=e|0;var A=0,r=0,a=0,n=0,f=0;f=e+16|0;e=(t[f>>2]|0)+192|0;while(1){e=t[e>>2]|0;if(!e)break;n=e+16|0;A=0;while(1){e=t[n>>2]|0;a=t[e+180>>2]|0;r=t[a+(A<<2)>>2]|0;if(!r)break;G2(t[r+16>>2]|0);G2(r);A=A+1|0}if(a){G2(a);e=t[n>>2]|0}A=t[e+172>>2]|0;if(A){G2(A);e=t[n>>2]|0}a=e+256|0;r=t[a+4>>2]|0;e=e+180|0;t[e>>2]=t[a>>2];t[e+4>>2]=r;e=t[n>>2]|0;r=e+248|0;a=t[r+4>>2]|0;e=e+172|0;t[e>>2]=t[r>>2];t[e+4>>2]=a;e=(t[n>>2]|0)+164|0}e=0;A=t[(t[f>>2]|0)+192>>2]|0;e:while(1){n=(e|0)==0;a=e+16|0;e=A;while(1){if(!e)break e;r=t[e+16>>2]|0;A=t[r+164>>2]|0;if((i[r+156>>0]|0)!=2)continue e;if(n)t[(t[f>>2]|0)+192>>2]=A;else t[(t[a>>2]|0)+164>>2]=A;G2(r);G2(e);e=A}}t[(t[(t[(t[f>>2]|0)+192>>2]|0)+16>>2]|0)+168>>2]=0;return}function tD(e,A){e=e|0;A=A|0;var r=0,i=0,a=0;i=e+16|0;r=1;while(1){a=t[i>>2]|0;if((r|0)>(t[a+180>>2]|0))break;tD(t[(t[a+184>>2]|0)+(r<<2)>>2]|0,A);r=r+1|0}cD(e,A);return}function nD(e){e=e|0;var A=0,r=0,i=0,a=0,n=0,f=0,l=0.0,s=0.0,o=0,u=0.0,b=0.0,w=0.0,k=0.0,d=0,v=0,g=0;v=h;h=h+80|0;i=v+64|0;r=v+48|0;a=v+16|0;o=v;d=v+32|0;e=e+16|0;A=t[(t[e>>2]|0)+8>>2]|0;g=A+48|0;t[a>>2]=t[g>>2];t[a+4>>2]=t[g+4>>2];t[a+8>>2]=t[g+8>>2];t[a+12>>2]=t[g+12>>2];if((!(+c[a>>3]<.001)?(n=a+8|0,!(+c[n>>3]<.001)):0)?(f=A+32|0,t[o>>2]=t[f>>2],t[o+4>>2]=t[f+4>>2],t[o+8>>2]=t[f+8>>2],t[o+12>>2]=t[f+12>>2],t[r>>2]=t[a>>2],t[r+4>>2]=t[a+4>>2],t[r+8>>2]=t[a+8>>2],t[r+12>>2]=t[a+12>>2],t[i>>2]=t[f>>2],t[i+4>>2]=t[f+4>>2],t[i+8>>2]=t[f+8>>2],t[i+12>>2]=t[f+12>>2],sD(d,r,i),t[a>>2]=t[d>>2],t[a+4>>2]=t[d+4>>2],t[a+8>>2]=t[d+8>>2],t[a+12>>2]=t[d+12>>2],t[r>>2]=t[d>>2],t[r+4>>2]=t[d+4>>2],t[r+8>>2]=t[d+8>>2],t[r+12>>2]=t[d+12>>2],t[i>>2]=t[o>>2],t[i+4>>2]=t[o+4>>2],t[i+8>>2]=t[o+8>>2],t[i+12>>2]=t[o+12>>2],sD(a,r,i),f=t[e>>2]|0,l=+c[f+32>>3],s=+c[f+40>>3],u=+c[a>>3],b=u/l,w=+c[n>>3],k=w/s,!(b>=1.0&k>=1.0)):0){b=b.5?b:.5;k=+H(+(b*s/w))*w/s;w=+H(+(b*l/u))*u/l*l;e=t[f+8>>2]|0;c[e+64>>3]=w;c[e+72>>3]=k*s;e=1}else e=0;h=v;return e|0}function fD(e,A,r){e=e|0;A=+A;r=+r;var i=0,a=0;i=e+16|0;e=1;while(1){a=t[i>>2]|0;if((e|0)>(t[a+180>>2]|0))break;fD(t[(t[a+184>>2]|0)+(e<<2)>>2]|0,A,r);e=e+1|0}i=a+16|0;c[i>>3]=+c[i>>3]*A;i=a+24|0;c[i>>3]=+c[i>>3]*r;i=a+32|0;c[i>>3]=+c[i>>3]*A;a=a+40|0;c[a>>3]=+c[a>>3]*r;return}function lD(e,A){e=e|0;A=A|0;var r=0.0,i=0.0,a=0,n=0,f=0.0,l=0,s=0,o=0,u=0;o=h;h=h+32|0;l=o+24|0;n=o+16|0;a=o;u=t[e+16>>2]|0;i=+c[u+32>>3]-+c[u+16>>3];r=+c[u+40>>3]-+c[u+24>>3];f=i/r;if(0){u=t[15712]|0;c[a>>3]=f;c[a+8>>3]=i*.0001*r;a3(u,86745,a)|0;t[n>>2]=Vz(e)|0;a3(u,86770,n)|0}r=+c[A>>3];do{if(!(f>r*1.1)){e=A+24|0;if(!(f<=r*.8)){t[e>>2]=0;s=9;break}t[e>>2]=-1;if(0){G3(86780,34,1,t[15712]|0)|0;s=9}}else{t[A+24>>2]=~~(r*+((t[A+20>>2]|0)-(t[A+16>>2]|0)|0)/f);s=9}}while(0);if((s|0)==9?0:0){u=t[15712]|0;t[l>>2]=t[A+24>>2];a3(u,86815,l)|0}h=o;return}function sD(e,A,r){e=e|0;A=A|0;r=r|0;var i=0.0;i=+c[A+8>>3]-+c[r+8>>3];c[e>>3]=+c[A>>3]-+c[r>>3];c[e+8>>3]=i;return}function cD(e,A){e=e|0;A=A|0;var r=0,n=0.0,f=0.0,l=0,s=0,o=0,u=0.0,b=0,h=0,w=0,k=0,d=0,v=0,g=0,m=0,p=0,E=0,B=0.0;v=(mG(e)|0)==(e|0);p=e+16|0;E=t[p>>2]|0;e:do{if(v){r=a[E+236>>1]|0;e=a[E+238>>1]|0;k=e<<16>>16;d=E+196|0;v=E+196|0;w=r<<16>>16;f=-2147483647.0;n=2147483647.0;while(1){if((w|0)>(k|0))break;l=t[d>>2]|0;h=t[l+(w<<6)>>2]|0;if((h|0)!=0?(g=t[l+(w<<6)+4>>2]|0,m=t[g>>2]|0,(m|0)!=0):0){o=1;l=m;while(1){l=t[l+16>>2]|0;s=i[l+156>>0]|0;if(!((o|0)<(h|0)&s<<24>>24!=0))break;l=t[g+(o<<2)>>2]|0;o=o+1|0}if(!(s<<24>>24)){u=+c[l+16>>3]-+c[l+88>>3];b=n>2]|0)+(w<<6)+4>>2]|0;s=h+-2|0;l=h+-1|0;while(1){l=t[(t[o+(l<<2)>>2]|0)+16>>2]|0;if(!(i[l+156>>0]|0))break;else{l=s;s=s+-1|0}}B=+c[l+96>>3]+ +c[l+16>>3];f=f>B?f:B;n=b?n:u}}w=w+1|0}s=t[E+180>>2]|0;o=E+184|0;l=1;while(1){if((l|0)>(s|0))break e;m=t[(t[(t[o>>2]|0)+(l<<2)>>2]|0)+16>>2]|0;B=+c[m+16>>3]+-8.0;u=+c[m+32>>3]+8.0;l=l+1|0;f=f>u?f:u;n=n>2]|0)+16>>2]|0)+232>>2]|0);n=+(t[(t[(t[E+256>>2]|0)+16>>2]|0)+232>>2]|0);r=a[E+236>>1]|0;e=a[E+238>>1]|0}}while(0);A=t[(t[A+16>>2]|0)+196>>2]|0;u=+c[(t[(t[t[A+(e<<16>>16<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3]-+c[E+120>>3];B=+c[E+128>>3]+ +c[(t[(t[t[A+(r<<16>>16<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3];c[E+16>>3]=n;c[E+24>>3]=u;A=t[p>>2]|0;c[A+32>>3]=f;c[A+40>>3]=B;return}function oD(e,A,r,i){e=e|0;A=A|0;r=+r;i=i|0;var n=0,f=0,l=0,s=0;l=KF(96)|0;s=l+48|0;t[s>>2]=t[s>>2]|3;t[l>>2]=t[l>>2]&-4|2;n=KF(176)|0;f=l+16|0;t[f>>2]=n;t[((t[l>>2]&3|0)==3?l:s)+40>>2]=e;t[((t[l>>2]&3|0)==2?l:l+-48|0)+40>>2]=A;if(r>65535.0){uD(r);r=65535.0;n=t[f>>2]|0}a[n+170>>1]=~~(r+(r>=0.0?.5:-.5));t[n+156>>2]=i;mL(l)|0;return l|0}function uD(e){e=+e;var A=0,r=0;A=h;h=h+16|0;r=A;c[r>>3]=e;t[r+8>>2]=65535;nw(1,86845,r)|0;h=A;return}function bD(e){e=e|0;var A=0,r=0,i=0,a=0;e=(t[e+16>>2]|0)+192|0;while(1){e=t[e>>2]|0;if(!e)break;a=e+16|0;i=t[a>>2]|0;e=i+172|0;r=t[e+4>>2]|0;i=i+248|0;t[i>>2]=t[e>>2];t[i+4>>2]=r;i=t[a>>2]|0;r=i+180|0;e=t[r+4>>2]|0;i=i+256|0;t[i>>2]=t[r>>2];t[i+4>>2]=e;i=t[a>>2]|0;e=t[i+180>>2]|0;r=0;while(1)if(!(t[e+(r<<2)>>2]|0))break;else r=r+1|0;A=t[i+172>>2]|0;e=0;while(1)if(!(t[A+(e<<2)>>2]|0))break;else e=e+1|0;t[i+176>>2]=0;e=KF((e+r<<2)+16|0)|0;i=t[a>>2]|0;t[i+172>>2]=e;t[i+184>>2]=0;i=KF(16)|0;e=t[a>>2]|0;t[e+180>>2]=i;e=e+164|0}return}function hD(e){e=e|0;var A=0,r=0,n=0.0,l=0,s=0,o=0,u=0,b=0,w=0.0,k=0,d=0,v=0,g=0.0,m=0,p=0,E=0,B=0,y=0,C=0,I=0.0,Z=0.0;C=h;h=h+16|0;E=C;B=e+16|0;m=t[B>>2]|0;y=t[m+196>>2]|0;e=(i[(t[(t[e+60>>2]|0)+16>>2]|0)+113>>0]&1)!=0;p=t[m+248>>2]|0;t[E>>2]=p;t[E+4>>2]=e?5:p;p=a[m+236>>1]|0;e=m;while(1){if((p|0)>(a[e+238>>1]|0))break;d=y+(p<<6)+4|0;t[(t[(t[t[d>>2]>>2]|0)+16>>2]|0)+232>>2]=0;v=y+(p<<6)|0;g=+(t[E+((p&1)<<2)>>2]|0);w=0.0;s=0;e:while(1){if((s|0)>=(t[v>>2]|0))break;A=t[d>>2]|0;o=t[A+(s<<2)>>2]|0;m=o+16|0;e=t[m>>2]|0;n=+c[e+96>>3];c[e+240>>3]=n;if((t[e+208>>2]|0)>0){l=0;A=0;while(1){r=t[(t[e+204>>2]|0)+(l<<2)>>2]|0;if(!r)break;k=t[r>>2]&3;if((t[((k|0)==3?r:r+48|0)+40>>2]|0)==(t[((k|0)==2?r:r+-48|0)+40>>2]|0)){A=(ZR(r)|0)+A|0;e=t[m>>2]|0}l=l+1|0}k=e+96|0;n=+c[k>>3]+ +(A|0);c[k>>3]=n;A=t[d>>2]|0}k=s+1|0;A=t[A+(k<<2)>>2]|0;if(A){b=A+16|0;n=n+g+ +c[(t[b>>2]|0)+88>>3];oD(o,A,n,0)|0;e=~~(n+w);t[(t[b>>2]|0)+232>>2]=e;w=+(e|0);e=t[m>>2]|0}A=t[e+112>>2]|0;if(A){l=t[e+256>>2]|0;s=t[l>>2]|0;l=t[l+4>>2]|0;e=(t[(t[(t[((t[s>>2]&3|0)==2?s:s+-48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0)>(t[(t[(t[((t[l>>2]&3|0)==2?l:l+-48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0);r=e?l:s;l=e?s:l;s=A+16|0;e=t[s>>2]|0;n=+((P(t[(t[B>>2]|0)+248>>2]|0,f[e+170>>1]|0)|0)/2|0|0);b=t[r>>2]&3;A=t[((b|0)==2?r:r+-48|0)+40>>2]|0;r=t[((b|0)==3?r:r+48|0)+40>>2]|0;if(!(CD(r,A)|0))oD(A,r,+(~~(+c[(t[A+16>>2]|0)+96>>3]+n+ +c[(t[r+16>>2]|0)+88>>3])|0),t[e+156>>2]|0)|0;e=t[l>>2]&3;A=t[((e|0)==3?l:l+48|0)+40>>2]|0;e=t[((e|0)==2?l:l+-48|0)+40>>2]|0;if(!(CD(e,A)|0)){oD(A,e,+(~~(+c[(t[A+16>>2]|0)+96>>3]+n+ +c[(t[e+16>>2]|0)+88>>3])|0),t[(t[s>>2]|0)+156>>2]|0)|0;b=0}else b=0}else b=0;while(1){e=t[m>>2]|0;if((b|0)>=(t[e+192>>2]|0)){s=k;continue e}o=t[(t[e+188>>2]|0)+(b<<2)>>2]|0;s=t[o>>2]&3;r=t[((s|0)==3?o:o+48|0)+40>>2]|0;s=t[((s|0)==2?o:o+-48|0)+40>>2]|0;l=(t[(t[r+16>>2]|0)+236>>2]|0)<(t[(t[s+16>>2]|0)+236>>2]|0);A=l?r:s;r=l?s:r;n=+c[(t[r+16>>2]|0)+88>>3]+ +c[(t[A+16>>2]|0)+96>>3];s=o+16|0;l=~~(n+ +(P(t[(t[B>>2]|0)+248>>2]|0,f[(t[s>>2]|0)+170>>1]|0)|0));u=dL(A,r)|0;if(!u){e=t[s>>2]|0;if(!(t[e+96>>2]|0))oD(A,r,+(l|0),t[e+156>>2]|0)|0}else{I=+(l|0);e=t[s>>2]|0;Z=+c[e+136>>3];n=n+ +(t[(t[B>>2]|0)+248>>2]|0)+ +(~~(Z+(Z>=0.0?.5:-.5))|0);A=~~(n65535){uD(+(A|0));A=65535;e=t[s>>2]|0}s=t[u+16>>2]|0;l=s+170|0;r=f[l>>1]|0;a[l>>1]=(A|0)<(r|0)?r:A;s=s+156|0;t[s>>2]=t[(t[((t[s>>2]|0)>(t[e+156>>2]|0)?u:o)+16>>2]|0)+156>>2]}b=b+1|0}}p=p+1|0;e=t[B>>2]|0}h=C;return}function wD(e){e=e|0;var A=0,r=0,a=0,n=0,f=0,l=0,s=0,o=0,u=0,b=0;A=(t[e+16>>2]|0)+192|0;while(1){A=t[A>>2]|0;if(!A)break;n=A+16|0;A=t[n>>2]|0;r=t[A+256>>2]|0;e:do{if(r){a=0;while(1){r=t[r+(a<<2)>>2]|0;if(!r)break e;b=zL(e)|0;A=b+16|0;i[(t[A>>2]|0)+156>>0]=2;o=r+16|0;s=t[o>>2]|0;f=~~(+c[s+56>>3]-+c[s+16>>3]);u=(f|0)>0;l=u?0:0-f|0;f=u?f:0;u=r+48|0;oD(b,t[((t[r>>2]&3|0)==3?r:u)+40>>2]|0,+(f+1|0),t[s+156>>2]|0)|0;s=r+-48|0;oD(b,t[((t[r>>2]&3|0)==2?r:s)+40>>2]|0,+(l+1|0),t[(t[o>>2]|0)+156>>2]|0)|0;o=t[r>>2]&3;f=(t[(t[(t[((o|0)==3?r:u)+40>>2]|0)+16>>2]|0)+232>>2]|0)-f|0;r=(t[(t[(t[((o|0)==2?r:s)+40>>2]|0)+16>>2]|0)+232>>2]|0)-l|0;t[(t[A>>2]|0)+232>>2]=((f|0)<(r|0)?f:r)+-1;A=t[n>>2]|0;a=a+1|0;r=t[A+256>>2]|0}}}while(0);A=A+164|0}return}function kD(e){e=e|0;if((t[(t[e+16>>2]|0)+180>>2]|0)>0){mD(e);pD(e);ED(e);BD(e)}return}function dD(e){e=e|0;var A=0.0,r=0.0,i=0,a=0;i=e+16|0;a=t[(t[i>>2]|0)+8>>2]|0;if((t[a+84>>2]|0)==3?(A=+c[a+64>>3],r=+c[a+72>>3],!(r*A<=1.0)):0){vD(e);a=t[i>>2]|0;r=(t[a+116>>2]&1|0)==0?A:r;oD(t[a+256>>2]|0,t[a+260>>2]|0,r<65535.0?r:65535.0,1e3)|0}return}function vD(e){e=e|0;var A=0,r=0,i=0.0,n=0,f=0,l=0,s=0,o=0,u=0;u=h;h=h+16|0;o=u;r=hx(e,t[47144]|0,8,0)|0;gD(e);f=e+16|0;n=t[f>>2]|0;l=t[n+256>>2]|0;s=t[n+260>>2]|0;i=+(r|0);r=a[n+236>>1]|0;while(1){if((r|0)>(a[n+238>>1]|0))break;A=t[n+196>>2]|0;do{if(t[A+(r<<6)>>2]|0){A=t[t[A+(r<<6)+4>>2]>>2]|0;if(!A){t[o>>2]=Mk(e)|0;t[o+4>>2]=r;nw(1,86929,o)|0;break}else{oD(l,A,+c[(t[A+16>>2]|0)+88>>3]+i+ +c[n+96>>3],0)|0;n=t[f>>2]|0;A=t[n+196>>2]|0;A=t[(t[A+(r<<6)+4>>2]|0)+((t[A+(r<<6)>>2]|0)+-1<<2)>>2]|0;oD(A,s,+c[(t[A+16>>2]|0)+96>>3]+i+ +c[n+64>>3],0)|0;break}}}while(0);r=r+1|0;n=t[f>>2]|0}h=u;return}function gD(e){e=e|0;var A=0,r=0,a=0;A=e+16|0;if(!(t[(t[A>>2]|0)+256>>2]|0)){a=zL(mG(e)|0)|0;i[(t[a+16>>2]|0)+156>>0]=2;r=zL(mG(e)|0)|0;i[(t[r+16>>2]|0)+156>>0]=2;if((t[(t[A>>2]|0)+12>>2]|0?(mG(e)|0)!=(e|0):0)?(t[(t[(yd(e)|0)+16>>2]|0)+116>>2]&1|0)==0:0){e=t[A>>2]|0;oD(a,r,+(~~+c[e+48+((+c[e+48>>3]>+c[e+80>>3]?0:2)<<4)>>3]|0),0)|0}A=t[A>>2]|0;t[A+256>>2]=a;t[A+260>>2]=r}return}function mD(e){e=e|0;var A=0,r=0;do{if((mG(e)|0)!=(e|0)){vD(e);e=e+16|0;A=t[e>>2]|0;A=dL(t[A+256>>2]|0,t[A+260>>2]|0)|0;if(!A){r=t[e>>2]|0;oD(t[r+256>>2]|0,t[r+260>>2]|0,1.0,128)|0;break}else{r=(t[A+16>>2]|0)+156|0;t[r>>2]=(t[r>>2]|0)+128;break}}else e=e+16|0}while(0);A=1;while(1){r=t[e>>2]|0;if((A|0)>(t[r+180>>2]|0))break;mD(t[(t[r+184>>2]|0)+(A<<2)>>2]|0);A=A+1|0}return}function pD(e){e=e|0;var A=0,r=0,n=0,f=0,l=0,s=0,o=0,u=0.0,b=0,h=0;s=hx(e,t[47144]|0,8,0)|0;h=e+16|0;A=t[h>>2]|0;u=+(s|0);s=a[A+236>>1]|0;while(1){if((s|0)>(a[A+238>>1]|0)){r=1;break}A=t[A+196>>2]|0;e:do{if(t[A+(s<<6)>>2]|0?(o=t[t[A+(s<<6)+4>>2]>>2]|0,o|0):0){f=o+16|0;r=t[(t[f>>2]|0)+236>>2]|0;while(1){if((r|0)<=0)break;r=r+-1|0;l=t[(t[(t[(t[(mG(e)|0)+16>>2]|0)+196>>2]|0)+(s<<6)+4>>2]|0)+(r<<2)>>2]|0;n=l+16|0;A=t[n>>2]|0;if(!(i[A+156>>0]|0)){b=10;break}if(yD(e,l)|0){b=9;break}}if((b|0)==9){A=t[n>>2]|0;b=10}if((b|0)==10){b=0;oD(l,t[(t[h>>2]|0)+256>>2]|0,+c[A+96>>3]+u,0)|0}r=(t[(t[(t[h>>2]|0)+196>>2]|0)+(s<<6)>>2]|0)+(t[(t[f>>2]|0)+236>>2]|0)|0;while(1){if((r|0)>=(t[(t[(t[(mG(e)|0)+16>>2]|0)+196>>2]|0)+(s<<6)>>2]|0))break e;f=t[(t[(t[(t[(mG(e)|0)+16>>2]|0)+196>>2]|0)+(s<<6)+4>>2]|0)+(r<<2)>>2]|0;n=f+16|0;A=t[n>>2]|0;if(!(i[A+156>>0]|0))break;if(!(yD(e,f)|0))r=r+1|0;else{b=15;break}}if((b|0)==15){b=0;A=t[n>>2]|0}oD(t[(t[h>>2]|0)+260>>2]|0,f,+c[A+88>>3]+u,0)|0}}while(0);s=s+1|0;A=t[h>>2]|0}while(1){if((r|0)>(t[A+180>>2]|0))break;pD(t[(t[A+184>>2]|0)+(r<<2)>>2]|0);r=r+1|0;A=t[h>>2]|0}return}function ED(e){e=e|0;var A=0,r=0.0,i=0,a=0,n=0;i=hx(e,t[47144]|0,8,0)|0;gD(e);A=e+16|0;r=+(i|0);e=1;while(1){i=t[A>>2]|0;if((e|0)>(t[i+180>>2]|0))break;i=t[(t[i+184>>2]|0)+(e<<2)>>2]|0;gD(i);a=t[A>>2]|0;n=i+16|0;oD(t[a+256>>2]|0,t[(t[n>>2]|0)+256>>2]|0,+c[a+96>>3]+r,0)|0;a=t[A>>2]|0;oD(t[(t[n>>2]|0)+260>>2]|0,t[a+260>>2]|0,+c[a+64>>3]+r,0)|0;ED(i);e=e+1|0}return}function BD(e){e=e|0;var A=0,r=0,i=0,n=0,f=0,l=0,s=0,c=0,o=0,u=0.0,b=0,h=0;A=hx(e,t[47144]|0,8,0)|0;b=e+16|0;e=1;while(1){i=t[b>>2]|0;r=t[i+180>>2]|0;if((e|0)>(r|0))break;gD(t[(t[i+184>>2]|0)+(e<<2)>>2]|0);e=e+1|0}u=+(A|0);o=1;e=r;A=i;while(1){if((o|0)>(e|0))break;c=o+1|0;s=c;while(1){r=t[A+184>>2]|0;i=t[r+(o<<2)>>2]|0;if((s|0)>(e|0))break;r=t[r+(s<<2)>>2]|0;n=(a[(t[i+16>>2]|0)+236>>1]|0)>(a[(t[r+16>>2]|0)+236>>1]|0);l=n?r:i;r=n?i:r;i=t[l+16>>2]|0;n=t[r+16>>2]|0;h=a[n+236>>1]|0;f=h<<16>>16;if((a[i+238>>1]|0)>=h<<16>>16){e=(t[(t[(t[t[(t[i+196>>2]|0)+(f<<6)+4>>2]>>2]|0)+16>>2]|0)+236>>2]|0)<(t[(t[(t[t[(t[n+196>>2]|0)+(f<<6)+4>>2]>>2]|0)+16>>2]|0)+236>>2]|0);oD(t[(t[(e?l:r)+16>>2]|0)+260>>2]|0,t[(t[(e?r:l)+16>>2]|0)+256>>2]|0,u,0)|0;e=t[b>>2]|0;A=e;e=t[e+180>>2]|0}s=s+1|0}BD(i);A=t[b>>2]|0;o=c;e=t[A+180>>2]|0}return}function yD(e,A){e=e|0;A=A|0;var r=0;A=t[A+16>>2]|0;if((i[A+156>>0]|0)==1){A=t[t[A+256>>2]>>2]|0;while(1){r=t[(t[A+16>>2]|0)+116>>2]|0;if(!r)break;else A=r}if(!(Wd(e,t[((t[A>>2]&3|0)==3?A:A+48|0)+40>>2]|0)|0))A=(Wd(e,t[((t[A>>2]&3|0)==2?A:A+-48|0)+40>>2]|0)|0)==0&1;else A=0}else A=0;return A|0}function CD(e,A){e=e|0;A=A|0;return ID(e,A)|0}function ID(e,A){e=e|0;A=A|0;var r=0,i=0;e:do{if((e|0)==(A|0))e=1;else{r=t[(t[e+16>>2]|0)+180>>2]|0;e=0;while(1){i=t[r+(e<<2)>>2]|0;if(!i){e=0;break e}if(!(ID(t[((t[i>>2]&3|0)==2?i:i+-48|0)+40>>2]|0,A)|0))e=e+1|0;else{e=1;break}}}}while(0);return e|0}function ZD(e){e=e|0;var A=0,r=0,n=0,f=0,l=0,s=0,c=0;c=e+16|0;e=t[c>>2]|0;s=a[e+236>>1]|0;while(1){if((s|0)>(a[e+238>>1]|0))break;f=t[e+196>>2]|0;n=t[f+(s<<6)>>2]|0;f=f+(s<<6)+4|0;l=0;r=0;while(1){if((r|0)>=(n|0))break;A=t[(t[(t[f>>2]|0)+(r<<2)>>2]|0)+16>>2]|0;t[A+236>>2]=l;if((i[A+159>>0]|0)==6)A=t[A+216>>2]|0;else A=1;l=A+l|0;r=r+1|0}if((l|0)>(n|0)){e=t[f>>2]|0;if(!e)e=$F((l<<2)+4|0)|0;else e=AM(e,(l<<2)+4|0)|0;r=t[(t[c>>2]|0)+196>>2]|0;t[r+(s<<6)+4>>2]=e;A=t[r+(s<<6)>>2]|0;while(1){e=A+-1|0;if((A|0)<=0)break;f=t[r+(s<<6)+4>>2]|0;A=t[f+(e<<2)>>2]|0;t[f+(t[(t[A+16>>2]|0)+236>>2]<<2)>>2]=A;A=e;r=t[(t[c>>2]|0)+196>>2]|0}t[r+(s<<6)>>2]=l;t[(t[r+(s<<6)+4>>2]|0)+(l<<2)>>2]=0;e=t[c>>2]|0}s=s+1|0}return}function GD(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0,f=0,l=0,s=0,o=0,u=0,b=0,w=0;b=h;h=h+48|0;u=b+32|0;o=b+8|0;r=b+24|0;s=b+16|0;l=b;i=A+16|0;a=t[i>>2]|0;e:do{if((t[a+216>>2]|0)>=2){t[o>>2]=~~(+c[a+16>>3]-+c[a+88>>3]);t[o+4>>2]=~~+c[a+24>>3];t[u>>2]=t[o>>2];t[u+4>>2]=t[o+4>>2];LD(r,A,u);n=r;f=t[n+4>>2]|0;r=o;t[r>>2]=t[n>>2];t[r+4>>2]=f;r=t[i>>2]|0;if((t[r+184>>2]|0)>0){l=t[t[r+180>>2]>>2]|0;r=(t[r+236>>2]|0)+1|0;l=Kw(e,t[((t[l>>2]&3|0)==2?l:l+-48|0)+40>>2]|0)|0;while(1){if(!l)break e;f=(t[l>>2]&3|0)==2?l:l+-48|0;i=f+48|0;a=t[((t[f>>2]&3|0)==3?f:i)+40>>2]|0;if((a|0)!=(A|0)?(Ex(a)|0)==(A|0):0){a=t[((t[f>>2]&3|0)==3?f:i)+40>>2]|0;t[u>>2]=t[o>>2];t[u+4>>2]=t[o+4>>2];QD(s,e,a,u,r);a=s;i=t[a+4>>2]|0;n=o;t[n>>2]=t[a>>2];t[n+4>>2]=i;VL(f);n=f+-48|0;i=t[(t[((t[f>>2]&3|0)==2?f:n)+40>>2]|0)+16>>2]|0;a=t[i+172>>2]|0;if(!a)i=$F((t[i+176>>2]<<2)+8|0)|0;else i=AM(a,(t[i+176>>2]<<2)+8|0)|0;t[(t[(t[((t[f>>2]&3|0)==2?f:n)+40>>2]|0)+16>>2]|0)+172>>2]=i;w=t[(t[((t[f>>2]&3|0)==2?f:n)+40>>2]|0)+16>>2]|0;i=t[w+172>>2]|0;w=w+176|0;a=t[w>>2]|0;t[w>>2]=a+1;t[i+(a<<2)>>2]=f;f=t[(t[((t[f>>2]&3|0)==2?f:n)+40>>2]|0)+16>>2]|0;t[(t[f+172>>2]|0)+(t[f+176>>2]<<2)>>2]=0;r=r+1|0}l=$w(e,l)|0}}else{f=t[t[r+172>>2]>>2]|0;r=(t[r+236>>2]|0)+1|0;f=Ow(e,t[((t[f>>2]&3|0)==3?f:f+48|0)+40>>2]|0)|0;while(1){if(!f)break e;i=f+-48|0;a=t[((t[f>>2]&3|0)==2?f:i)+40>>2]|0;if((a|0)!=(A|0)?(Ex(a)|0)==(A|0):0){a=t[((t[f>>2]&3|0)==2?f:i)+40>>2]|0;t[u>>2]=t[o>>2];t[u+4>>2]=t[o+4>>2];QD(l,e,a,u,r);a=l;i=t[a+4>>2]|0;n=o;t[n>>2]=t[a>>2];t[n+4>>2]=i;VL(f);n=f+48|0;i=t[(t[((t[f>>2]&3|0)==3?f:n)+40>>2]|0)+16>>2]|0;a=t[i+180>>2]|0;if(!a)i=$F((t[i+184>>2]<<2)+8|0)|0;else i=AM(a,(t[i+184>>2]<<2)+8|0)|0;t[(t[(t[((t[f>>2]&3|0)==3?f:n)+40>>2]|0)+16>>2]|0)+180>>2]=i;a=t[(t[((t[f>>2]&3|0)==3?f:n)+40>>2]|0)+16>>2]|0;s=t[a+180>>2]|0;a=a+184|0;w=t[a>>2]|0;t[a>>2]=w+1;t[s+(w<<2)>>2]=f;w=t[(t[((t[f>>2]&3|0)==3?f:n)+40>>2]|0)+16>>2]|0;t[(t[w+180>>2]|0)+(t[w+184>>2]<<2)>>2]=0;r=r+1|0}f=qw(e,f)|0}}}}while(0);h=b;return}function LD(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0.0;WJ(A,t[(t[(Bd(A)|0)+16>>2]|0)+116>>2]&1);i=t[A+16>>2]|0;c[i+24>>3]=+(t[r+4>>2]|0);a=+c[i+88>>3]+ +(t[r>>2]|0);c[i+16>>3]=a;a=a+ +c[i+96>>3];t[r>>2]=~~(a+ +(t[(t[(Bd(A)|0)+16>>2]|0)+248>>2]|0));i=r;A=t[i+4>>2]|0;r=e;t[r>>2]=t[i>>2];t[r+4>>2]=A;return}function QD(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;var n=0,f=0,l=0,s=0;l=h;h=h+16|0;f=l;A=mG(A)|0;n=Ex(r)|0;if((n|0)!=(r|0))LL(n,r);s=t[r+16>>2]|0;t[s+236>>2]=a;n=t[(t[n+16>>2]|0)+232>>2]|0;t[s+232>>2]=n;t[(t[(t[(t[A+16>>2]|0)+196>>2]|0)+(n<<6)+4>>2]|0)+(a<<2)>>2]=r;t[f>>2]=t[i>>2];t[f+4>>2]=t[i+4>>2];LD(e,r,f);h=l;return}function DD(e){e=e|0;var A=0.0,r=0.0,i=0,n=0,f=0,l=0.0,s=0,o=0,u=0,b=0.0;u=t[(t[(mG(e)|0)+16>>2]|0)+196>>2]|0;if((mG(e)|0)==(e|0))l=8.0;else l=+(hx(e,t[47144]|0,8,0)|0);o=e+16|0;n=t[o>>2]|0;i=0;s=1;r=+c[n+120>>3];A=+c[n+128>>3];while(1){if((s|0)>(t[n+180>>2]|0))break;f=t[(t[n+184>>2]|0)+(s<<2)>>2]|0;i=DD(f)|0|i;f=t[f+16>>2]|0;n=t[o>>2]|0;if((a[f+238>>1]|0)==(a[n+238>>1]|0)){b=+c[f+120>>3]+l;r=r>b?r:b}if((a[f+236>>1]|0)==(a[n+236>>1]|0)){b=+c[f+128>>3]+l;A=A>b?A:b}s=s+1|0}if((mG(e)|0)!=(e|0)?(t[(t[o>>2]|0)+12>>2]|0)!=0:0)if(!(t[(t[(yd(e)|0)+16>>2]|0)+116>>2]&1)){s=t[o>>2]|0;i=1;r=+c[s+56>>3]+r;A=+c[s+88>>3]+A}else i=1;s=t[o>>2]|0;c[s+120>>3]=r;c[s+128>>3]=A;if((mG(e)|0)!=(e|0)){o=t[o>>2]|0;e=u+(a[o+236>>1]<<6)+24|0;b=+c[e>>3];c[e>>3]=b>A?b:A;u=u+(a[o+238>>1]<<6)+16|0;b=+c[u>>3];c[u>>3]=b>r?b:r}return i|0}function zD(e,A){e=e|0;A=A|0;var r=0,i=0.0,n=0.0,f=0,l=0,s=0.0,o=0,u=0,b=0,h=0,w=0.0,k=0.0;h=t[(t[(mG(e)|0)+16>>2]|0)+196>>2]|0;if((mG(e)|0)==(e|0))r=0;else r=hx(e,t[47144]|0,8,0)|0;o=e+16|0;f=t[o>>2]|0;u=r+A|0;s=+(r|0);l=1;i=+c[f+128>>3];n=+c[f+120>>3];r=f;while(1){if((l|0)>(t[r+180>>2]|0))break;f=t[(t[r+184>>2]|0)+(l<<2)>>2]|0;zD(f,u);f=t[f+16>>2]|0;r=t[o>>2]|0;if((a[f+238>>1]|0)==(a[r+238>>1]|0)){k=+c[f+120>>3]+s;n=n>k?n:k}if((a[f+236>>1]|0)==(a[r+236>>1]|0)){k=+c[f+128>>3]+s;i=i>k?i:k}l=l+1|0}c[r+120>>3]=n;c[r+128>>3]=i;if(((mG(e)|0)!=(e|0)?(b=t[o>>2]|0,t[b+12>>2]|0):0)?(w=-n-i+ +c[b+48+((+c[b+104>>3]>+c[b+72>>3]?3:1)<<4)+8>>3]-+c[(t[(t[t[h+(a[b+236>>1]<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3]+ +c[(t[(t[t[h+(a[b+238>>1]<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3],w>0.0):0)WD(e,~~w,A);if((mG(e)|0)!=(e|0)){b=t[o>>2]|0;u=h+(a[b+236>>1]<<6)+24|0;k=+c[u>>3];w=+c[b+128>>3];c[u>>3]=k>w?k:w;h=h+(a[b+238>>1]<<6)+16|0;w=+c[h>>3];k=+c[b+120>>3];c[h>>3]=w>k?w:k}return}function WD(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,n=0.0,f=0.0,l=0.0,s=0,o=0,u=0,b=0.0,h=0.0,w=0,k=0,d=0;s=t[(mG(e)|0)+16>>2]|0;k=t[s+196>>2]|0;w=t[e+16>>2]|0;e=a[w+238>>1]|0;i=a[w+236>>1]|0;o=(A+1|0)/2|0;u=w+120|0;b=+c[u>>3];h=+(o|0);f=+(r|0);r=~~(h+f+b-+c[k+(e<<6)+16>>3]);if((r|0)>0){n=+(r|0);while(1){if((e|0)<(i|0))break;if((t[k+(e<<6)>>2]|0)>0){d=(t[(t[t[k+(e<<6)+4>>2]>>2]|0)+16>>2]|0)+24|0;c[d>>3]=+c[d>>3]+n}e=e+-1|0}l=+c[w+128>>3];e=r;n=l+ +(A-o|0)}else{l=+c[w+128>>3];e=A-o|0;n=l}e=~~(+(e|0)+f+n-+c[k+(i<<6)+24>>3]);e:do{if((e|0)>0){r=a[s+236>>1]|0;n=+(e|0);while(1){e=i+-1|0;if((i|0)<=(r|0))break e;if((t[k+(e<<6)>>2]|0)<=0){i=e;continue}i=(t[(t[t[k+(e<<6)+4>>2]>>2]|0)+16>>2]|0)+24|0;c[i>>3]=+c[i>>3]+n;i=e}}}while(0);c[w+128>>3]=l+ +(A-o|0);c[u>>3]=b+h;return}function YD(e,A){e=e|0;A=A|0;var r=0,a=0;r=t[e+16>>2]|0;a=i[r+84>>0]|0;e=t[A+16>>2]|0;do{if(a<<24>>24==(i[e+84>>0]|0)){if(+c[r+56>>3]==+c[e+56>>3]){if(!(a<<24>>24==0?1:+c[r+64>>3]==+c[e+64>>3])){e=0;break}}else if(a<<24>>24){e=0;break}if(+c[r+16>>3]==+c[e+16>>3]?+c[r+24>>3]==+c[e+24>>3]:0){e=1;break}e=(i[r+44>>0]|0)==0&1}else e=0}while(0);return e|0}function FD(e){e=e|0;var A=0,r=0,i=0,n=0,f=0,l=0;l=e+16|0;A=t[l>>2]|0;a[A+236>>1]=32767;a[A+238>>1]=-1;A=0;f=sd(e)|0;while(1){r=t[l>>2]|0;if(!f)break;i=r+238|0;n=t[(t[f+16>>2]|0)+232>>2]|0;if((n|0)>(a[i>>1]|0))a[i>>1]=n;r=r+236|0;if((n|0)<(a[r>>1]|0))a[r>>1]=n;if(!A)A=f;else A=(n|0)<(t[(t[A+16>>2]|0)+232>>2]|0)?f:A;f=cd(e,f)|0}t[r+264>>2]=A;return}function MD(e){e=e|0;var A=0,r=0,i=0,a=0,n=0.0;A=Hw(e,86974)|0;if(!A)A=2147483647;else{n=+$3(A);A=~~(n*+(gk(e)|0))}i=e+16|0;r=0;while(1){a=t[i>>2]|0;if((r|0)>=(t[a+220>>2]|0))break;t[a+192>>2]=t[(t[a+216>>2]|0)+(r<<2)>>2];VM(e,(t[a+180>>2]|0)==0&1,A)|0;r=r+1|0}return}function VD(e,A){e=e|0;A=A|0;var r=0,i=0,n=0;i=h;h=h+16|0;r=i;if(!(Hw(e,86983)|0))RD(e,A);else{n=(t[e+16>>2]|0)+136|0;a[n>>1]=a[n>>1]|16;ND(e,A)}if(0){n=t[15712]|0;e=t[e+16>>2]|0;A=a[e+236>>1]|0;t[r>>2]=a[e+238>>1];t[r+4>>2]=A;a3(n,86991,r)|0}h=i;return}function ND(e,A){e=e|0;A=A|0;var r=0,a=0,n=0,f=0,l=0,s=0.0;l=h;h=h+16|0;f=l;t[46747]=0;i[f>>0]=i[18588]|0;i[f+1>>0]=i[18589]|0;i[f+2>>0]=i[18590]|0;i[f+3>>0]=i[18591]|0;f=hk(87201,f,0)|0;Sd(f,87230,280,1)|0;Dd(f,17404,17344);xD(e);r=Hw(e,86974)|0;if(!r)a=2147483647;else{s=+$3(r);a=~~(s*+(gk(e)|0))}rz(e,0);iz(e,f);az(e,f);tz(e,f,0,0);nz(f);n=fz(f)|0;lz(f);if(A|0){_z(f);Nz(f)}r=Hw(e,102586)|0;if(!r)r=-1;else r=K3(r)|0;rM(f,1,a,r)|0;sz(e,f,n);vk(f)|0;h=l;return}function RD(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0,f=0,l=0;n=h;h=h+32|0;a=n+16|0;i=n+8|0;r=n;xD(e);do{if(!A){JD(e,e);$z(e);HD(r,e);f=r;r=t[f+4>>2]|0;A=i;t[A>>2]=t[f>>2];t[A+4>>2]=r;jW(e,0);A=0}else{_z(e);Nz(e);JD(e,e);$z(e);HD(r,e);l=r;r=t[l+4>>2]|0;f=i;t[f>>2]=t[l>>2];t[f+4>>2]=r;jW(e,0);f=t[e+16>>2]|0;if((t[f+220>>2]|0)<=1?(t[f+180>>2]|0)<=0:0)break;t[A+32>>2]=1;A=0}}while(0);Fz(e);t[a>>2]=t[i>>2];t[a+4>>2]=t[i+4>>2];if(PD(e,a)|0)jW(e,0);if(!A)MD(e);else Rz(e,A);XD(e,A);SD(e);h=n;return}function xD(e){e=e|0;var A=0,r=0,n=0;if(i[(t[(t[e+60>>2]|0)+16>>2]|0)+113>>0]&1){r=sd(e)|0;while(1){if(!r)break;A=Ow(e,r)|0;while(1){if(!A)break;n=(t[A+16>>2]|0)+170|0;a[n>>1]=(f[n>>1]|0)<<1;A=qw(e,A)|0}r=cd(e,r)|0}n=(t[e+16>>2]|0)+252|0;t[n>>2]=((t[n>>2]|0)+1|0)/2|0}return}function JD(e,A){e=e|0;A=A|0;var r=0;A=xv(A)|0;while(1){if(!A)break;r=$D(A)|0;do{if(r)if((r|0)==7&(t[47135]|0)==100){OD(e,A);break}else{ez(e,A,r);break}else JD(e,A)}while(0);A=Jv(A)|0}return}function HD(e,A){e=e|0;A=A|0;var r=0,a=0,n=0,f=0,l=0,s=0,c=0;l=A+16|0;r=t[l>>2]|0;A=t[r+228>>2]|0;r=t[r+224>>2]|0;a=(r|0)==0;if(!A)if(a){s=0;c=0}else n=4;else if(a)n=5;else n=4;if((n|0)==4){A=Ex(r)|0;r=t[l>>2]|0;t[r+224>>2]=A;A=t[r+228>>2]|0;if(!A){f=0;A=r;n=12}else n=5}do{if((n|0)==5){A=Ex(A)|0;r=t[l>>2]|0;t[r+228>>2]=A;if(A){r=A+16|0;A=t[r>>2]|0;a=(i[A+159>>0]|0)==5&1;while(1){A=t[t[A+180>>2]>>2]|0;if(!A){n=11;break}f=t[((t[A>>2]&3|0)==2?A:A+-48|0)+40>>2]|0;if((f|0)!=(Ex(f)|0)){n=9;break}Yz(A);A=t[r>>2]|0}if((n|0)==9)ge(87094,87034,346,87126);else if((n|0)==11){f=a;A=t[l>>2]|0;n=12;break}}else{f=0;A=r;n=12}}}while(0);e:do{if((n|0)==12){A=t[A+224>>2]|0;if(!A){s=0;c=f}else{r=A+16|0;A=t[r>>2]|0;a=(i[A+159>>0]|0)==3&1;while(1){A=t[t[A+172>>2]>>2]|0;if(!A){s=a;c=f;break e}l=t[((t[A>>2]&3|0)==3?A:A+48|0)+40>>2]|0;if((l|0)!=(Ex(l)|0))break;Yz(A);A=t[r>>2]|0}ge(87139,87034,353,87126)}}}while(0);t[e>>2]=s;t[e+4>>2]=c;return}function PD(e,A){e=e|0;A=A|0;var r=0,i=0,n=0,f=0,l=0,s=0,c=0,o=0;s=e+16|0;l=t[s>>2]|0;if((t[l+228>>2]|0)==0?(t[l+224>>2]|0)==0:0)A=0;else r=3;e:do{if((r|0)==3){n=sd(e)|0;l=A+4|0;f=t[A>>2]&65535;A=0;while(1){if(!n)break e;if((n|0)==(Ex(n)|0)){i=n+16|0;r=t[i>>2]|0;if((t[r+184>>2]|0)==0?(c=t[(t[s>>2]|0)+228>>2]|0,!((c|0)==0|(n|0)==(c|0))):0){A=ZL(n,c,0)|0;r=t[A+16>>2]|0;a[r+170>>1]=t[l>>2];t[r+156>>2]=0;r=t[i>>2]|0}if((t[r+176>>2]|0)==0?(o=t[(t[s>>2]|0)+224>>2]|0,!((o|0)==0|(n|0)==(o|0))):0){A=ZL(o,n,0)|0;i=t[A+16>>2]|0;a[i+170>>1]=f;t[i+156>>2]=0}}n=cd(e,n)|0}}}while(0);return(A|0)!=0|0}function XD(e,A){e=e|0;A=A|0;var r=0,n=0,f=0,l=0,s=0,c=0;n=sd(e)|0;c=e+16|0;r=t[c>>2]|0;e:do{if(n){a[r+236>>1]=32767;a[r+238>>1]=-1;s=(A|0)==0;while(1){if(!n)break;r=Ex(n)|0;l=t[n+16>>2]|0;A=t[l+232>>2]|0;do{if((r|0)!=(n|0)){if(!s)if(!A)A=0;else break;A=A+(t[(t[r+16>>2]|0)+232>>2]|0)|0;t[l+232>>2]=A}}while(0);r=t[c>>2]|0;f=r+238|0;if((A|0)>(a[f>>1]|0))a[f>>1]=A;r=r+236|0;if((A|0)<(a[r>>1]|0))a[r>>1]=A;switch(i[l+159>>0]|0){case 6:case 0:break;default:yx(n)}n=cd(e,n)|0}if((mG(e)|0)==(e|0)){if((t[47135]|0)==100)A=1;else{TD(e);break}while(1){r=t[c>>2]|0;if((A|0)>(t[r+180>>2]|0))break e;UD(t[(t[r+184>>2]|0)+(A<<2)>>2]|0);A=A+1|0}}}else{a[r+238>>1]=0;a[r+236>>1]=0}}while(0);return}function SD(e){e=e|0;var A=0,r=0,a=0,n=0,f=0,l=0,s=0,c=0,o=0,u=0;s=e+16|0;r=0;while(1){A=t[s>>2]|0;if((r|0)>=(t[A+220>>2]|0))break;l=t[(t[A+216>>2]|0)+(r<<2)>>2]|0;t[A+192>>2]=l;A=l;while(1){if(!A)break;l=A+16|0;jD((t[l>>2]|0)+172|0);jD((t[l>>2]|0)+180|0);l=t[l>>2]|0;i[l+157>>0]=0;A=t[l+164>>2]|0}r=r+1|0}l=sd(e)|0;while(1){if(!l)break;f=Ow(e,l)|0;while(1){if(!f)break;a=f+16|0;A=t[a>>2]|0;n=t[A+172>>2]|0;if((n|0)!=0?(c=n+16|0,(f|0)==(t[(t[c>>2]|0)+116>>2]|0)):0){A=sd(e)|0;while(1){if(!A)break;r=Ow(e,A)|0;while(1){if(!r)break;if((f|0)!=(r|0)?(o=(t[r+16>>2]|0)+172|0,u=t[o>>2]|0,(u|0)!=0&(n|0)==(u|0)):0)t[o>>2]=0;r=qw(e,r)|0}A=cd(e,A)|0}G2(t[c>>2]|0);G2(n);A=t[a>>2]|0}t[A+172>>2]=0;f=qw(e,f)|0}l=cd(e,l)|0}G2(t[(t[s>>2]|0)+216>>2]|0);u=t[s>>2]|0;t[u+216>>2]=0;t[u+220>>2]=0;return}function jD(e){e=e|0;var A=0,r=0;r=e+4|0;A=t[r>>2]|0;while(1){if((A|0)<=-1)break;t[(t[e>>2]|0)+(A<<2)>>2]=0;A=A+-1|0}t[r>>2]=0;return}function UD(e){e=e|0;var A=0,r=0,i=0;A=e+16|0;r=t[A>>2]|0;i=t[(t[(t[r+264>>2]|0)+16>>2]|0)+232>>2]|0;e=r+236|0;a[e>>1]=i+(f[e>>1]|0);e=r+238|0;a[e>>1]=i+(f[e>>1]|0);e=1;while(1){if((e|0)>(t[r+180>>2]|0))break;UD(t[(t[r+184>>2]|0)+(e<<2)>>2]|0);e=e+1|0;r=t[A>>2]|0}return}function TD(e){e=e|0;var A=0;A=xv(mG(e)|0)|0;while(1){if(!A)break;if((i[(t[A+16>>2]|0)+274>>0]|0)==7)OD(e,A);A=Jv(A)|0}return}function OD(e,A){e=e|0;A=A|0;var r=0;r=(t[A+16>>2]|0)+200|0;do{if((t[r>>2]|0)==0?(t[r>>2]=e,_D(e,A),sd(A)|0):0){qD(e,A);if((t[47135]|0)==100){RD(A,0);KD(A);break}else{FD(A);break}}}while(0);return}function _D(e,A){e=e|0;A=A|0;var r=0,a=0,n=0,f=0,l=0,s=0,c=0;f=e+16|0;n=sd(A)|0;while(1){if(!n)break;l=cd(A,n)|0;s=n+16|0;if(!(i[(t[s>>2]|0)+159>>0]|0))a=1;else{Ed(A,n)|0;n=l;continue}while(1){r=t[f>>2]|0;e=t[r+180>>2]|0;if((a|0)>=(e|0))break;if(Wd(t[(t[r+184>>2]|0)+(a<<2)>>2]|0,n)|0){c=7;break}a=a+1|0}if((c|0)==7){c=0;e=t[(t[f>>2]|0)+180>>2]|0}if((a|0)<(e|0))Ed(A,n)|0;t[(t[s>>2]|0)+212>>2]=0;n=l}r=sd(A)|0;while(1){if(!r)break;e=Ow(mG(A)|0,r)|0;while(1){if(!e)break;if(Wd(A,t[((t[e>>2]&3|0)==2?e:e+-48|0)+40>>2]|0)|0)uk(A,e,1)|0;e=qw(mG(A)|0,e)|0}r=cd(A,r)|0}return}function qD(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0;i=e+16|0;r=t[i>>2]|0;n=r+180|0;e=t[n>>2]|0;a=e+1|0;t[n>>2]=a;r=t[r+184>>2]|0;if(!r)e=KF((e<<2)+8|0)|0;else e=eM(r,e+2|0,4,a)|0;t[(t[i>>2]|0)+184>>2]=e;t[e+(a<<2)>>2]=A;VF(A);return}function KD(e){e=e|0;var A=0,r=0,a=0,n=0,f=0;n=t[e+16>>2]|0;A=n+192|0;f=0;while(1){A=t[A>>2]|0;if(!A)break;a=t[A+16>>2]|0;if(!(t[a+232>>2]|0))r=(i[a+156>>0]|0)==0?A:f;else r=f;A=a+164|0;f=r}if(!f)ge(87019,87034,238,87041);t[n+264>>2]=f;A=sd(e)|0;while(1){if(!A){A=13;break}r=A+16|0;if(!((A|0)==(f|0)?1:(t[(t[r>>2]|0)+216>>2]|0)<2)){A=11;break}Bx(A,f)|0;i[(t[r>>2]|0)+159>>0]=7;A=cd(e,A)|0}if((A|0)==11)ge(87056,87034,242,87041);else if((A|0)==13)return}function $D(e){e=e|0;var A=0;if(!(Az(e)|0)){A=zx(Hw(e,87171)|0,17356,17380)|0;i[(t[e+16>>2]|0)+274>>0]=A;e=A}else e=7;return e|0}function ez(e,A,r){e=e|0;A=A|0;r=r|0;var a=0,n=0,f=0,l=0,s=0;n=sd(A)|0;e:do{if(n|0){s=r&255;l=n+16|0;a=n;f=s;while(1){i[(t[a+16>>2]|0)+159>>0]=f;a=cd(A,a)|0;if(!a)break;Bx(n,a)|0;f=i[(t[l>>2]|0)+159>>0]|0}switch(r|0){case 3:case 2:{e=e+16|0;a=t[e>>2]|0;f=t[a+224>>2]|0;if(f){n=Bx(f,n)|0;a=t[e>>2]|0}t[a+224>>2]=n;break}case 5:case 4:{e=e+16|0;a=t[e>>2]|0;f=t[a+228>>2]|0;if(f){n=Bx(f,n)|0;a=t[e>>2]|0}t[a+228>>2]=n;break}default:break e}switch(r|0){case 3:{a=a+224|0;break}case 5:{a=a+228|0;break}default:break e}i[(t[(t[a>>2]|0)+16>>2]|0)+159>>0]=s}}while(0);return}function Az(e){e=e|0;return(y1(Mk(e)|0,108006,7)|0)==0|0}function rz(e,A){e=e|0;A=A|0;var r=0,a=0,n=0,f=0,l=0,s=0,c=0,o=0;o=h;h=h+16|0;n=o;if(!(Bz(e)|0)){do{if(Tx(e)|0)if(!A){t[(t[e+16>>2]|0)+204>>2]=0;A=e;break}else{t[(t[e+16>>2]|0)+204>>2]=(t[(t[A+16>>2]|0)+204>>2]|0)+1;yz(e,A);A=e;break}}while(0);r=xv(e)|0;while(1){if(!r)break;rz(r,A);r=Jv(r)|0}e:do{if(Tx(e)|0){r=sd(e)|0;while(1){if(!r)break e;a=(t[r+16>>2]|0)+212|0;if(!(t[a>>2]|0))t[a>>2]=e;r=cd(e,r)|0}}}while(0);switch(Cz(e)|0){case 3:{A=A+16|0;i[(t[A>>2]|0)+241>>0]=1;c=19;break}case 2:{A=A+16|0;c=19;break}case 5:{A=A+16|0;i[(t[A>>2]|0)+242>>0]=1;c=21;break}case 4:{A=A+16|0;c=21;break}case 1:{Iz(e)|0;break}case 6:break;default:{r=Mk(e)|0;a=Hw(e,87171)|0;t[n>>2]=r;t[n+4>>2]=a;nw(0,87354,n)|0}}if((c|0)==19){c=Iz(e)|0;c=Zz(c,t[(t[A>>2]|0)+208>>2]|0)|0;t[(t[A>>2]|0)+208>>2]=c}else if((c|0)==21){c=Iz(e)|0;c=Zz(c,t[(t[A>>2]|0)+212>>2]|0)|0;t[(t[A>>2]|0)+212>>2]=c}if((Tx(e)|0?(f=e+16|0,l=t[f>>2]|0,s=t[l+208>>2]|0,s|0):0)?(s|0)==(t[l+212>>2]|0):0){s=Iz(e)|0;c=t[f>>2]|0;t[c+208>>2]=s;t[c+212>>2]=s}}h=o;return}function iz(e,A){e=e|0;A=A|0;var r=0,i=0;t[46747]=0;r=sd(e)|0;while(1){if(!r)break;if((cz(r)|0)==(r|0)){i=bz(A,Mk(r)|0)|0;t[(t[r+16>>2]|0)+148>>2]=i}r=cd(e,r)|0}r=sd(e)|0;while(1){if(!r)break;A=r+16|0;if(!(t[(t[A>>2]|0)+148>>2]|0)){i=t[(t[(cz(r)|0)+16>>2]|0)+148>>2]|0;t[(t[A>>2]|0)+148>>2]=i}r=cd(e,r)|0}return}function az(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0,f=0,l=0,s=0,c=0;f=sd(e)|0;while(1){if(!f)break;r=t[(t[f+16>>2]|0)+148>>2]|0;l=Ow(e,f)|0;while(1){if(!l)break;do{if((vz(l)|0)==0?(s=l+-48|0,c=t[(t[(cz(t[((t[l>>2]&3|0)==2?l:s)+40>>2]|0)|0)+16>>2]|0)+148>>2]|0,(r|0)!=(c|0)):0){a=t[l>>2]&3;n=l+48|0;i=((a|0)==3?l:n)+40|0;a=t[(t[(t[((a|0)==2?l:s)+40>>2]|0)+16>>2]|0)+212>>2]|0;if(!(gz(l)|0)){if((dz(t[(t[(t[i>>2]|0)+16>>2]|0)+212>>2]|0)|0)==0?(dz(a)|0)==0:0){mz(A,r,c,l);break}pz(A,r,c,l);break}else{a=cz(t[i>>2]|0)|0;i=t[l>>2]&3;if((a|0)!=(t[(t[(t[(t[(t[((i|0)==3?l:n)+40>>2]|0)+16>>2]|0)+212>>2]|0)+16>>2]|0)+212>>2]|0)?(n=cz(t[((i|0)==2?l:s)+40>>2]|0)|0,(n|0)!=(t[(t[(t[(t[(t[((t[l>>2]&3|0)==2?l:s)+40>>2]|0)+16>>2]|0)+212>>2]|0)+16>>2]|0)+208>>2]|0)):0)i=c;else{i=r;r=c}mz(A,r,i,l);break}}}while(0);l=qw(e,l)|0}f=cd(e,f)|0}return}function tz(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0,n=0;if((Tx(e)|0)!=0?(dz(e)|0)!=0:0){n=sd(e)|0;while(1){if(!n)break;if(!(Kw(e,n)|0)){a=t[(t[(cz(n)|0)+16>>2]|0)+148>>2]|0;if(!r)r=bz(A,87252)|0;lk(A,r,a,0,1)|0}if(!(Ow(e,n)|0)){a=t[(t[(cz(n)|0)+16>>2]|0)+148>>2]|0;if(!i)i=bz(A,87257)|0;lk(A,a,i,0,1)|0}n=cd(e,n)|0}if((i|0)!=0&(r|0)!=0){kz(lk(A,r,i,0,1)|0,0,1e3);a=r}else a=r}else a=r;r=xv(e)|0;while(1){if(!r)break;tz(r,A,a,i);r=Jv(r)|0}return}function nz(e){e=e|0;var A=0,r=0;A=sd(e)|0;while(1){if(!A)break;r=t[A+16>>2]|0;i[r+158>>0]=0;i[r+157>>0]=0;A=cd(e,A)|0}A=sd(e)|0;while(1){if(!A)break;hz(e,A);A=cd(e,A)|0}return}function fz(e){e=e|0;var A=0,r=0,i=0,a=0;A=sd(e)|0;while(1){if(!A)break;t[(t[A+16>>2]|0)+128>>2]=0;A=cd(e,A)|0}A=0;i=sd(e)|0;while(1){if(!i)break;r=A+1|0;if(!(t[(t[i+16>>2]|0)+128>>2]|0)){uz(e,i,r);A=r}i=cd(e,i)|0}e:do{if((A|0)>1){a=bz(e,87246)|0;r=1;i=sd(e)|0;while(1){if(!i)break e;if((t[(t[i+16>>2]|0)+128>>2]|0)==(r|0)){lk(e,a,i,0,1)|0;r=r+1|0}i=cd(e,i)|0}}}while(0);return A|0}function lz(e){e=e|0;var A=0,r=0,i=0,a=0,n=0,f=0,l=0;n=sd(e)|0;while(1){if(!n)break;f=n+16|0;a=Ow(e,n)|0;while(1){if(!a)break;A=t[f>>2]|0;r=t[A+180>>2]|0;if(!r)A=$F((t[A+184>>2]<<2)+8|0)|0;else A=AM(r,(t[A+184>>2]<<2)+8|0)|0;r=t[f>>2]|0;t[r+180>>2]=A;r=r+184|0;i=t[r>>2]|0;t[r>>2]=i+1;t[A+(i<<2)>>2]=a;i=t[f>>2]|0;t[(t[i+180>>2]|0)+(t[i+184>>2]<<2)>>2]=0;i=a+-48|0;A=t[(t[((t[a>>2]&3|0)==2?a:i)+40>>2]|0)+16>>2]|0;r=t[A+172>>2]|0;if(!r)A=$F((t[A+176>>2]<<2)+8|0)|0;else A=AM(r,(t[A+176>>2]<<2)+8|0)|0;t[(t[(t[((t[a>>2]&3|0)==2?a:i)+40>>2]|0)+16>>2]|0)+172>>2]=A;l=t[(t[((t[a>>2]&3|0)==2?a:i)+40>>2]|0)+16>>2]|0;A=t[l+172>>2]|0;l=l+176|0;r=t[l>>2]|0;t[l>>2]=r+1;t[A+(r<<2)>>2]=a;i=t[(t[((t[a>>2]&3|0)==2?a:i)+40>>2]|0)+16>>2]|0;t[(t[i+172>>2]|0)+(t[i+176>>2]<<2)>>2]=0;a=qw(e,a)|0}n=cd(e,n)|0}return}function sz(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,n=0,l=0,s=0,c=0,o=0,u=0,b=0,h=0;b=e+16|0;h=t[b>>2]|0;a[h+236>>1]=32767;a[h+238>>1]=-1;e:do{if((r|0)>1){n=KF((r<<2)+4|0)|0;i=r+1|0;r=1;while(1){if((r|0)==(i|0)){u=n;h=n;break e}t[n+(r<<2)>>2]=32767;r=r+1|0}}else{u=0;h=0}}while(0);l=(u|0)==0;n=sd(e)|0;while(1){if(!n)break;s=t[(t[(t[(cz(n)|0)+16>>2]|0)+148>>2]|0)+16>>2]|0;c=t[s+232>>2]|0;o=t[n+16>>2]|0;t[o+232>>2]=c;r=t[b>>2]|0;i=r+238|0;if((c|0)>(a[i>>1]|0))a[i>>1]=c;r=r+236|0;if((c|0)<(a[r>>1]|0))a[r>>1]=c;if(!l){s=t[s+128>>2]|0;t[o+128>>2]=s;o=u+(s<<2)|0;s=t[o>>2]|0;t[o>>2]=(s|0)<(c|0)?s:c}n=cd(e,n)|0}s=(u|0)!=0;e:do{if(!s){u=a[(t[b>>2]|0)+236>>1]|0;i=u<<16>>16;if(u<<16>>16>0){r=sd(e)|0;while(1){if(!r)break;u=(t[r+16>>2]|0)+232|0;t[u>>2]=(t[u>>2]|0)-i;r=cd(e,r)|0}r=t[b>>2]|0;b=r+236|0;a[b>>1]=(f[b>>1]|0)-i;r=r+238|0;a[r>>1]=(f[r>>1]|0)-i;r=0}else r=0}else{r=sd(e)|0;while(1){if(!r){r=1;break e}o=t[r+16>>2]|0;b=o+232|0;t[b>>2]=(t[b>>2]|0)-(t[u+(t[o+128>>2]<<2)>>2]|0);r=cd(e,r)|0}}}while(0);oz(e,r);l=sd(A)|0;while(1){if(!l)break;i=l+16|0;r=t[i>>2]|0;n=t[r+172>>2]|0;if(n){G2(n);r=t[i>>2]|0}r=t[r+180>>2]|0;if(r|0)G2(r);l=cd(A,l)|0}G2(t[(t[(sd(e)|0)+16>>2]|0)+112>>2]|0);r=sd(e)|0;while(1){if(!r)break;t[(t[r+16>>2]|0)+112>>2]=0;r=cd(e,r)|0}if(s)G2(h);return}function cz(e){e=e|0;var A=0,r=0,i=0;A=e+16|0;r=(t[A>>2]|0)+152|0;i=t[r>>2]|0;if(i){if((i|0)!=(e|0)){i=cz(i)|0;t[(t[A>>2]|0)+152>>2]=i;return i|0}}else t[r>>2]=e;return e|0}function oz(e,A){e=e|0;A=A|0;var r=0,i=0,n=0,f=0,l=0;l=e+16|0;r=1;while(1){i=t[l>>2]|0;if((r|0)>(t[i+180>>2]|0))break;oz(t[(t[i+184>>2]|0)+(r<<2)>>2]|0,0);r=r+1|0}if((A|0)!=0|(t[i+200>>2]|0)!=0){a[i+236>>1]=32767;a[i+238>>1]=-1;r=0;f=sd(e)|0;while(1){if(!f)break;n=t[(t[f+16>>2]|0)+232>>2]|0;A=t[l>>2]|0;i=A+238|0;if((n|0)>(a[i>>1]|0))a[i>>1]=n;A=A+236|0;if((n|0)<(a[A>>1]|0)){a[A>>1]=n;r=f}f=cd(e,f)|0}t[(t[l>>2]|0)+264>>2]=r}return}function uz(e,A,r){e=e|0;A=A|0;r=r|0;var i=0;i=(t[A+16>>2]|0)+128|0;e:do{if(!(t[i>>2]|0)){t[i>>2]=r;i=Ow(e,A)|0;while(1){if(!i)break;uz(e,t[((t[i>>2]&3|0)==2?i:i+-48|0)+40>>2]|0,r);i=qw(e,i)|0}i=Kw(e,A)|0;while(1){if(!i)break e;uz(e,t[((t[i>>2]&3|0)==3?i:i+48|0)+40>>2]|0,r);i=$w(e,i)|0}}}while(0);return}function bz(e,A){e=e|0;A=A|0;var r=0,i=0,a=0;a=gd(e,A,1)|0;A=a+16|0;t[(t[A>>2]|0)+176>>2]=0;i=KF(20)|0;r=t[A>>2]|0;t[r+172>>2]=i;t[r+184>>2]=0;r=KF(20)|0;A=t[A>>2]|0;t[A+180>>2]=r;r=t[46747]|0;i=A+168|0;if(!r){t[i>>2]=0;t[(t[e+16>>2]|0)+192>>2]=a}else{t[i>>2]=r;t[(t[r+16>>2]|0)+164>>2]=a}t[46747]=a;t[A+164>>2]=0;return a|0}function hz(e,A){e=e|0;A=A|0;var r=0,a=0,n=0,f=0;f=A+16|0;r=t[f>>2]|0;a=r+157|0;if(!(i[a>>0]|0)){i[a>>0]=1;i[r+158>>0]=1;A=Ow(e,A)|0;while(1){if(!A)break;r=qw(e,A)|0;a=t[((t[A>>2]&3|0)==2?A:A+-48|0)+40>>2]|0;n=t[a+16>>2]|0;if(i[n+158>>0]|0){wz(e,A);A=r;continue}if(i[n+157>>0]|0){A=r;continue}hz(e,a);A=r}i[(t[f>>2]|0)+158>>0]=0}return}function wz(e,A){e=e|0;A=A|0;var r=0,i=0,a=0;r=t[A>>2]&3;a=A+-48|0;i=A+48|0;r=lk(e,t[((r|0)==2?A:a)+40>>2]|0,t[((r|0)==3?A:i)+40>>2]|0,0,0)|0;if(!r){r=t[A>>2]&3;r=lk(e,t[((r|0)==2?A:a)+40>>2]|0,t[((r|0)==3?A:i)+40>>2]|0,0,1)|0}a=t[A+16>>2]|0;kz(r,f[a+170>>1]|0,t[a+156>>2]|0);Ed(e,A)|0;return}function kz(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,n=0;e=t[e+16>>2]|0;i=e+170|0;n=f[i>>1]|0;a[i>>1]=(n|0)>(A|0)?n:A;A=e+156|0;t[A>>2]=(t[A>>2]|0)+r;return}function dz(e){e=e|0;return(px(Hw(e,87262)|0,0)|0)&255|0}function vz(e){e=e|0;var A=0,r=0;A=t[47189]|0;if((((A|0)!=0?(r=Pw(e,A)|0,(r|0)!=0):0)?(i[r>>0]|0)!=0:0)?(mx(r)|0)<<24>>24==0:0)e=1;else e=0;return e|0}function gz(e){e=e|0;var A=0,r=0;r=t[e>>2]&3;A=t[(t[(t[((r|0)==3?e:e+48|0)+40>>2]|0)+16>>2]|0)+212>>2]|0;e=t[(t[(t[((r|0)==2?e:e+-48|0)+40>>2]|0)+16>>2]|0)+212>>2]|0;if((A|0)==(e|0))return 1;else{r=Ez(A,e)|0;return((r|0)==(A|0)|(r|0)==(e|0))&1|0}return 0}function mz(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0,n=0,l=0,s=0;s=h;h=h+16|0;n=s;a=lk(e,A,r,0,0)|0;if(!a){a=lk(e,r,A,0,0)|0;if(!a){a=lk(e,A,r,0,1)|0;if(!a){A=Mk(A)|0;i=Mk(r)|0;t[n>>2]=A;t[n+4>>2]=i;nw(1,87279,n)|0}else l=4}else l=4}else l=4;if((l|0)==4){l=t[i+16>>2]|0;kz(a,f[l+170>>1]|0,t[l+156>>2]|0)}h=s;return}function pz(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var n=0,l=0,s=0,c=0,o=0,u=0;o=h;h=h+112|0;s=o;l=o+4|0;n=Kw(e,A)|0;while(1){if(!n){c=6;break}u=Ow(e,t[((t[n>>2]&3|0)==3?n:n+48|0)+40>>2]|0)|0;if(u|0?(t[((t[u>>2]&3|0)==2?u:u+-48|0)+40>>2]|0)==(r|0):0)break;n=$w(e,n)|0}if((c|0)==6){u=t[46748]|0;t[46748]=u+1;t[s>>2]=u;T4(l,87270,s)|0;l=bz(e,l)|0;u=lk(e,l,A,0,1)|0;l=lk(e,l,r,0,1)|0;r=t[i+16>>2]|0;c=r+156|0;u=(t[u+16>>2]|0)+156|0;t[u>>2]=(t[u>>2]|0)+((t[c>>2]|0)*1e3|0);u=t[l+16>>2]|0;s=u+170|0;a[s>>1]=a[(t[((f[s>>1]|0)>(f[r+170>>1]|0)?l:i)+16>>2]|0)+170>>1]|0;u=u+156|0;t[u>>2]=(t[u>>2]|0)+(t[c>>2]|0)}h=o;return}function Ez(e,A){e=e|0;A=A|0;var r=0,i=0,a=0;e:while(1){i=e+16|0;while(1){if((e|0)==(A|0))break e;a=t[i>>2]|0;r=t[A+16>>2]|0;if((t[a+204>>2]|0)>=(t[r+204>>2]|0))break;A=t[r+200>>2]|0}e=t[a+200>>2]|0}return e|0}function Bz(e){e=e|0;return(sd(e)|0)==0|0}function yz(e,A){e=e|0;A=A|0;t[(t[e+16>>2]|0)+200>>2]=A;qD(A,e);_D(A,e);return}function Cz(e){e=e|0;var A=0;e=Hw(e,87171)|0;if((e|0)!=0?(i[e>>0]|0)!=0:0)if(e1(e,87181)|0)if(e1(e,87185)|0)if(e1(e,87192)|0)if(e1(e,87196)|0)if(!(e1(e,87176)|0))e=1;else A=8;else e=5;else e=4;else e=3;else e=2;else A=8;if((A|0)==8)e=6;return e|0}function Iz(e){e=e|0;var A=0,r=0;r=sd(e)|0;e:do{if(!r)A=0;else{A=cz(r)|0;while(1){r=cd(e,r)|0;if(!r)break e;Zz(A,r)|0}}}while(0);return A|0}function Zz(e,A){e=e|0;A=A|0;if(A){e=cz(e)|0;t[(t[(cz(A)|0)+16>>2]|0)+152>>2]=e}return e|0}function Gz(e,A,r){e=e|0;A=A|0;r=r|0;Sd(A,87230,t[r>>2]|0,1)|0;return}function Lz(e,A,r){e=e|0;A=A|0;r=r|0;Sd(A,87397,t[r+4>>2]|0,1)|0;return}function Qz(e,A,r){e=e|0;A=A|0;r=r|0;Sd(A,87382,t[r+8>>2]|0,1)|0;return}function Dz(e){e=e|0;var A=0,r=0,a=0,n=0,f=0,l=0,s=0,c=0,o=0,u=0,b=0,w=0;w=h;h=h+240|0;o=w+120|0;u=w;t[47193]=zw(e,2,87412,0)|0;c=zw(e,2,87421,0)|0;t[47194]=c;e:do{if((c|0)!=0|(t[47193]|0)!=0){c=sd(e)|0;while(1){if(!c)break e;s=0;A=0;l=ek(e,c)|0;while(1){if(!l){a=0;break}r=t[l>>2]|0;n=r&3;a=t[((n|0)==2?l:l+-48|0)+40>>2]|0;f=l+48|0;A:do{if((a|0)!=(t[((n|0)==3?l:f)+40>>2]|0)){n=t[47193]|0;do{if((a|0)==(c|0)&(n|0)!=0){a=Pw(l,n)|0;if(!(i[a>>0]|0)){r=t[l>>2]|0;break}else{r=s;A=zz(o,A,c,l,a)|0;break A}}}while(0);a=t[47194]|0;if((a|0?(t[((r&3|0)==3?l:f)+40>>2]|0)==(c|0):0)?(b=Pw(l,a)|0,(i[b>>0]|0)!=0):0)r=zz(u,s,c,l,b)|0;else r=s}else r=s}while(0);s=r;l=Ak(e,l,c)|0}while(1){if((a|0)>=(A|0)){r=0;break}r=o+(a*24|0)+4|0;if((t[o+(a*24|0)+8>>2]|0)>1)Wz(c,r);r=t[r>>2]|0;if(r|0)G2(r);a=a+1|0}while(1){if((r|0)>=(s|0))break;A=u+(r*24|0)+4|0;if((t[u+(r*24|0)+8>>2]|0)>1)Wz(c,A);A=t[A>>2]|0;if(A|0)G2(A);r=r+1|0}c=cd(e,c)|0}}}while(0);h=w;return}function zz(e,A,r,a,n){e=e|0;A=A|0;r=r|0;a=a|0;n=n|0;var f=0.0,l=0,s=0,o=0,u=0,b=0,w=0,k=0,d=0,v=0;w=h;h=h+16|0;s=w;o=w+12|0;u=w+8|0;b=0;while(1){if((b|0)>=(A|0)){l=10;break}l=t[e+(b*24|0)>>2]|0;if((i[l>>0]|0)==(i[n>>0]|0)?(e1(l,n)|0)==0:0){l=5;break}b=b+1|0}do{if((l|0)==5){s=e+(b*24|0)+4|0;l=t[s>>2]|0;if(!l){l=e+(b*24|0)+8|0;n=l;l=$F((t[l>>2]<<2)+8|0)|0}else{k=e+(b*24|0)+8|0;n=k;l=AM(l,(t[k>>2]<<2)+8|0)|0}t[s>>2]=l;d=t[n>>2]|0;k=d+1|0;t[n>>2]=k;t[l+(d<<2)>>2]=a;t[(t[s>>2]|0)+(k<<2)>>2]=0;l=13}else if((l|0)==10)if((A|0)>4){d=Mk(r)|0;t[s>>2]=5;t[s+4>>2]=d;nw(1,87430,s)|0;break}else{v=e+(b*24|0)+8|0;t[v>>2]=0;s=KF(8)|0;d=e+(b*24|0)+4|0;t[d>>2]=s;k=t[v>>2]|0;l=k+1|0;t[v>>2]=l;t[s+(k<<2)>>2]=a;t[(t[d>>2]|0)+(l<<2)>>2]=0;t[e+(b*24|0)>>2]=n;t[e+(b*24|0)+12>>2]=0;c[e+(b*24|0)+16>>3]=0.0;A=A+1|0;l=13;break}}while(0);if((l|0)==13){WE(a,o,u);l=(t[((t[a>>2]&3|0)==2?a:a+-48|0)+40>>2]|0)==(r|0)?t[u>>2]|0:t[o>>2]|0;if(l){d=e+(b*24|0)+12|0;v=t[d>>2]|0;t[d>>2]=v+1;if(!v)f=+VE(a,l);else f=0.0;c[e+(b*24|0)+16>>3]=f}}h=w;return A|0}function Wz(e,A){e=e|0;A=A|0;var r=0,a=0,n=0,f=0,l=0.0,s=0.0,o=0.0,u=0,b=0.0,w=0.0,k=0.0,d=0,v=0,g=0,m=0,p=0,E=0,B=0,y=0.0;B=h;h=h+80|0;g=B+68|0;m=B+64|0;d=B;p=A+4|0;u=t[p>>2]|0;E=e+16|0;f=0;w=0.0;k=0.0;while(1){if((f|0)>=(u|0))break;a=t[(t[A>>2]|0)+(f<<2)>>2]|0;n=t[a>>2]&3;r=t[((n|0)==2?a:a+-48|0)+40>>2]|0;if((r|0)==(e|0))r=t[((n|0)==3?a:a+48|0)+40>>2]|0;n=t[r+16>>2]|0;v=t[E>>2]|0;s=+c[n+16>>3]-+c[v+16>>3];o=+c[n+24>>3]-+c[v+24>>3];b=+g1(s,o);f=f+1|0;w=s/b+w;k=o/b+k}l=+g1(w,k);v=t[E>>2]|0;s=+c[v+16>>3];o=+c[v+24>>3];y=+c[v+96>>3]+ +c[v+88>>3];b=+c[v+80>>3];v=y>b+ +(t[(t[(Bd(e)|0)+16>>2]|0)+252>>2]|0);r=t[E>>2]|0;if(v)b=+c[r+96>>3]+ +c[r+88>>3];else{b=+c[r+80>>3];b=b+ +(t[(t[(Bd(e)|0)+16>>2]|0)+252>>2]|0);r=t[E>>2]|0}y=+c[r+16>>3]+b*(w/l);l=+c[r+24>>3]+b*(k/l);c[d>>3]=s;u=d+8|0;c[u>>3]=o;c[d+16>>3]=(y+s*2.0)*.3333333333333333;c[d+24>>3]=(l+o*2.0)*.3333333333333333;c[d+32>>3]=(y*2.0+s)*.3333333333333333;c[d+40>>3]=(l*2.0+o)*.3333333333333333;c[d+48>>3]=y;c[d+56>>3]=l;dR(e,d);v=t[E>>2]|0;l=+c[d>>3]-+c[v+16>>3];s=+c[u>>3]-+c[v+24>>3];l=+(~~(l+(l>=0.0?.5:-.5))|0);s=+(~~(s+(s>=0.0?.5:-.5))|0);y=+c[v+88>>3];v=~~((y+l)*256.0/(+c[v+96>>3]+y))&255;d=0;while(1){if((d|0)>=(t[p>>2]|0))break;u=t[(t[A>>2]|0)+(d<<2)>>2]|0;WE(u,g,m);while(1){if(!u)break;else n=u;while(1){if(!n){f=u;break}r=t[n>>2]|0;f=n+-48|0;if((t[((r&3|0)==2?n:f)+40>>2]|0)==(e|0)){r=t[n+16>>2]|0;c[r+56>>3]=l;c[r+64>>3]=s;c[r+72>>3]=0.0;t[r+80>>2]=0;i[r+84>>0]=1;i[r+85>>0]=0;i[r+86>>0]=0;i[r+87>>0]=0;i[r+88>>0]=v;i[r+89>>0]=0;t[r+92>>2]=0;r=t[n>>2]|0}a=n+16|0;if((t[((r&3|0)==3?n:n+48|0)+40>>2]|0)==(e|0)){r=t[a>>2]|0;c[r+16>>3]=l;c[r+24>>3]=s;c[r+32>>3]=0.0;t[r+40>>2]=0;i[r+44>>0]=1;i[r+45>>0]=0;i[r+46>>0]=0;i[r+47>>0]=0;i[r+48>>0]=v;i[r+49>>0]=0;t[r+52>>2]=0}if((i[(t[a>>2]|0)+112>>0]|0)!=1){n=0;continue}r=t[(t[((t[n>>2]&3|0)==2?n:f)+40>>2]|0)+16>>2]|0;if((i[r+156>>0]|0)!=1){n=0;continue}if((t[r+184>>2]|0)!=1){n=0;continue}n=t[t[r+180>>2]>>2]|0}while(1){if(!f)break;r=t[f>>2]|0;if((t[((r&3|0)==2?f:f+-48|0)+40>>2]|0)==(e|0)){r=t[f+16>>2]|0;c[r+56>>3]=l;c[r+64>>3]=s;c[r+72>>3]=0.0;t[r+80>>2]=0;i[r+84>>0]=1;i[r+85>>0]=0;i[r+86>>0]=0;i[r+87>>0]=0;i[r+88>>0]=v;i[r+89>>0]=0;t[r+92>>2]=0;r=t[f>>2]|0}a=f+48|0;n=f+16|0;if((t[((r&3|0)==3?f:a)+40>>2]|0)==(e|0)){r=t[n>>2]|0;c[r+16>>3]=l;c[r+24>>3]=s;c[r+32>>3]=0.0;t[r+40>>2]=0;i[r+44>>0]=1;i[r+45>>0]=0;i[r+46>>0]=0;i[r+47>>0]=0;i[r+48>>0]=v;i[r+49>>0]=0;t[r+52>>2]=0}if((i[(t[n>>2]|0)+112>>0]|0)!=1){f=0;continue}r=t[(t[((t[f>>2]&3|0)==3?f:a)+40>>2]|0)+16>>2]|0;if((i[r+156>>0]|0)!=1){f=0;continue}if((t[r+176>>2]|0)!=1){f=0;continue}f=t[t[r+172>>2]>>2]|0}u=t[(t[u+16>>2]|0)+172>>2]|0}d=d+1|0}i[(t[E>>2]|0)+145>>0]=1;h=B;return}function Yz(e){e=e|0;var A=0,r=0,i=0;EL(e);A=t[e>>2]&3;r=e+-48|0;i=e+48|0;A=dL(t[((A|0)==2?e:r)+40>>2]|0,t[((A|0)==3?e:i)+40>>2]|0)|0;if(!A){A=t[e>>2]&3;ZL(t[((A|0)==2?e:r)+40>>2]|0,t[((A|0)==3?e:i)+40>>2]|0,e)|0}else FL(e,A);return}function Fz(e){e=e|0;var A=0,r=0,a=0,n=0;a=e+16|0;r=0;while(1){e=t[a>>2]|0;if((r|0)>=(t[e+220>>2]|0))break;A=t[(t[e+216>>2]|0)+(r<<2)>>2]|0;t[e+192>>2]=A;e=A;A=e;while(1){if(!A)break;n=t[A+16>>2]|0;i[n+157>>0]=0;A=t[n+164>>2]|0}while(1){if(!e)break;Mz(e);e=t[(t[e+16>>2]|0)+164>>2]|0}r=r+1|0}return}function Mz(e){e=e|0;var A=0,r=0,a=0,n=0;n=e+16|0;A=t[n>>2]|0;e=A+157|0;if(!(i[e>>0]|0)){i[e>>0]=1;i[A+158>>0]=1;e=0;while(1){a=t[(t[A+180>>2]|0)+(e<<2)>>2]|0;if(!a)break;A=t[((t[a>>2]&3|0)==2?a:a+-48|0)+40>>2]|0;r=t[A+16>>2]|0;if(!(i[r+158>>0]|0)){if(!(i[r+157>>0]|0))Mz(A)}else{Yz(a);e=e+-1|0}e=e+1|0;A=t[n>>2]|0}i[A+158>>0]=0}return}function Vz(e){e=e|0;var A=0,r=0,i=0,a=0,n=0,f=0;i=sd(e)|0;A=0;while(1){if(!i)break;r=Ow(e,i)|0;while(1){if(!r)break;n=t[r>>2]&3;f=t[(t[(t[((n|0)==2?r:r+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0;n=t[(t[(t[((n|0)==3?r:r+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0;a=f-n|0;r=qw(e,r)|0;A=((f|0)==(n|0)?0:((a|0)>-1?a:0-a|0)+-1|0)+A|0}i=cd(e,i)|0}return A|0}function Nz(e){e=e|0;var A=0,r=0,a=0,n=0;r=sd(e)|0;while(1){if(!r)break;n=t[r+16>>2]|0;a=t[n+176>>2]|0;n=n+172|0;A=0;while(1){if((A|0)>=(a|0))break;i[(t[(t[(t[n>>2]|0)+(A<<2)>>2]|0)+16>>2]|0)+112>>0]=0;A=A+1|0}r=cd(e,r)|0}return}function Rz(e,A){e=e|0;A=A|0;var r=0,i=0.0,a=0.0,n=0,f=0,l=0,s=0,o=0,u=0,b=0,w=0,k=0;k=h;h=h+16|0;b=k;l=t[A+24>>2]|0;xz(e);s=(l|0)==-1;o=A+8|0;f=s^1;u=t[15712]|0;a=1797693134862315708145274.0e284;n=0;while(1){if(!(s|(n|0)<(l|0)))break;r=sd(e)|0;while(1){if(!r)break;t[(t[r+16>>2]|0)+232>>2]=0;r=cd(e,r)|0}MD(e);i=+Jz(e);c[o>>3]=i;if(0){c[b>>3]=i;a3(u,87482,b)|0;i=+c[o>>3]}if(!(!(i<=+c[A>>3])&(!(a<=i)|f))){w=9;break}Hz(e);a=i;n=n+1|0}if((w|0)==9){w=A+20|0;t[A+16>>2]=t[w>>2];t[w>>2]=n}MD(e);Pz(e);Xz();c[o>>3]=+Jz(e);h=k;return}function xz(e){e=e|0;var A=0,r=0,i=0,a=0,n=0,f=0,l=0,s=0,o=0.0,u=0.0,b=0;t[46752]=$F((gk(e)|0)*24|0)|0;t[46751]=0;A=sd(e)|0;while(1){if(!A)break;t[(t[A+16>>2]|0)+120>>2]=-1;A=cd(e,A)|0}f=sd(e)|0;while(1){if(!f)break;l=f+16|0;do{if(!(t[(t[l>>2]|0)+216>>2]|0)){a=KF(4)|0;n=t[46752]|0;s=t[46751]|0;t[n+(s*24|0)>>2]=a;t[a>>2]=f;t[n+(s*24|0)+4>>2]=1;l=t[l>>2]|0;c[n+(s*24|0)+8>>3]=+c[l+32>>3];c[n+(s*24|0)+16>>3]=+c[l+40>>3];t[l+120>>2]=s;t[46751]=s+1}else{n=Ex(f)|0;s=n+16|0;A=t[s>>2]|0;r=t[A+120>>2]|0;if((r|0)>-1){n=t[46752]|0;a=t[n+(r*24|0)>>2]|0;i=n+(r*24|0)+4|0;s=t[i>>2]|0;t[i>>2]=s+1;t[a+(s<<2)>>2]=f;s=t[l>>2]|0;l=n+(r*24|0)+8|0;c[l>>3]=+c[l>>3]+ +c[s+32>>3];l=n+(r*24|0)+16|0;o=+c[l>>3];u=+c[s+40>>3];c[l>>3]=o>2]=r;break}r=KF(t[A+216>>2]<<2)|0;i=t[46752]|0;a=t[46751]|0;A=i+(a*24|0)|0;t[A>>2]=r;t[r>>2]=n;if((n|0)==(f|0)){c[i+(a*24|0)+8>>3]=+c[(t[s>>2]|0)+32>>3];r=1;A=f}else{t[(t[A>>2]|0)+4>>2]=f;b=t[s>>2]|0;A=t[l>>2]|0;c[i+(a*24|0)+8>>3]=+c[A+32>>3]+ +c[b+32>>3];r=2;A=+c[b+40>>3]<+c[A+40>>3]?f:n}t[i+(a*24|0)+4>>2]=r;c[i+(a*24|0)+16>>3]=+c[(t[A+16>>2]|0)+40>>3];t[(t[s>>2]|0)+120>>2]=a;t[(t[l>>2]|0)+120>>2]=a;t[46751]=a+1}}while(0);f=cd(e,f)|0}return}function Jz(e){e=e|0;var A=0.0,r=0.0,i=0,a=0,n=0,f=0.0,l=0.0;Pz(e);n=t[46749]|0;i=t[e+16>>2]|0;A=+(P(t[i+252>>2]|0,n+-1|0)|0);a=t[46750]|0;i=i+248|0;e=0;r=0.0;while(1){if((e|0)>=(n|0))break;f=+c[a+(e*40|0)+24>>3]+ +(P(t[i>>2]|0,t[a+(e*40|0)+16>>2]|0)|0);l=+c[a+(e*40|0)+32>>3]+A;e=e+1|0;A=l;r=r=(gk(e)|0))break;t[(t[46753]|0)+(A<<2)>>2]=A;A=A+1|0}Pz(e);Sz(e);jz(e);return}function Pz(e){e=e|0;var A=0,r=0,i=0,a=0,n=0,f=0,l=0.0,s=0,o=0;t[46749]=0;A=t[46750]|0;if(A|0){i=0;while(1){if((i|0)>=(t[46751]|0))break;r=t[A+(i*40|0)+4>>2]|0;if(r){G2(r);A=t[46750]|0}r=t[A+(i*40|0)+8>>2]|0;if(r){G2(r);A=t[46750]|0}i=i+1|0}G2(A)}t[46750]=KF((t[46751]|0)*40|0)|0;A=0;while(1){r=t[46751]|0;if((A|0)>=(r|0))break;s=KF(r<<2)|0;t[(t[46750]|0)+(A*40|0)+4>>2]=s;s=KF(t[46751]<<2)|0;o=t[46750]|0;t[o+(A*40|0)+8>>2]=s;t[o+(A*40|0)>>2]=A;t[o+(A*40|0)+12>>2]=0;t[o+(A*40|0)+16>>2]=0;o=o+(A*40|0)+24|0;t[o>>2]=0;t[o+4>>2]=0;t[o+8>>2]=0;t[o+12>>2]=0;A=A+1|0}i=sd(e)|0;while(1){if(!i)break;r=Ow(e,i)|0;while(1){if(!r)break;f=t[r>>2]|0;a=r+-48|0;n=t[46750]|0;A=t[(t[(t[((f&3|0)==3?r:r+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0;while(1){A=A+1|0;if((A|0)>=(t[(t[(t[((f&3|0)==2?r:a)+40>>2]|0)+16>>2]|0)+232>>2]|0))break;f=n+(A*40|0)+16|0;t[f>>2]=(t[f>>2]|0)+1;f=t[r>>2]|0}r=qw(e,r)|0}i=cd(e,i)|0}f=t[46751]|0;s=t[46752]|0;o=t[46750]|0;r=e+16|0;A=0;while(1){if((A|0)>=(f|0))break;i=(t[t[s+(A*24|0)>>2]>>2]|0)+16|0;a=t[(t[i>>2]|0)+232>>2]|0;if((a|0)>=(t[46749]|0))t[46749]=a+1;n=o+(a*40|0)+24|0;l=+c[n>>3];c[n>>3]=l+ +c[s+(A*24|0)+8>>3]*72.0+(l>0.0?+(t[(t[r>>2]|0)+248>>2]|0):0.0);n=o+(a*40|0)+32|0;l=+c[s+(A*24|0)+16>>3]*72.0;if(+c[n>>3]>3]=l;t[(t[o+(a*40|0)+4>>2]|0)+(t[o+(a*40|0)+12>>2]<<2)>>2]=s+(A*24|0);e=o+((t[(t[i>>2]|0)+232>>2]|0)*40|0)+12|0;t[e>>2]=(t[e>>2]|0)+1;A=A+1|0}return}function Xz(){var e=0,A=0,r=0,i=0,a=0,n=0,f=0,l=0,s=0,c=0,o=0,u=0;c=t[46749]|0;o=t[46750]|0;s=0;A=0;e=0;while(1){if((s|0)>=(c|0))break;r=o+(s*40|0)|0;l=t[o+(s*40|0)+12>>2]|0;i=(A|0)==0;e:do{if(l)if(!i){if((t[r>>2]|0)>(e|0)){a=o+(s*40|0)+4|0;r=0;while(1){if((r|0)>=(l|0))break e;n=t[(t[a>>2]|0)+(r<<2)>>2]|0;f=t[n+4>>2]|0;i=0;while(1){if((i|0)>=(f|0))break;u=(t[(t[(t[n>>2]|0)+(i<<2)>>2]|0)+16>>2]|0)+232|0;t[u>>2]=(t[u>>2]|0)-A;i=i+1|0}r=r+1|0}}}else A=0;else{if(i)e=t[r>>2]|0;A=A+1|0}}while(0);s=s+1|0}return}function Sz(e){e=e|0;var A=0;A=t[46753]|0;_4(A,gk(e)|0,4,63);return}function jz(e){e=e|0;var A=0.0,r=0,a=0,n=0,f=0,l=0,s=0,o=0,u=0.0,b=0,h=0,w=0,k=0,d=0.0,v=0;l=t[46749]|0;s=t[46750]|0;n=t[46753]|0;f=0;while(1){if((f|0)>=(l|0)){r=0;A=0.0;break}r=t[n+(f<<2)>>2]|0;a=f+1|0;if((t[s+(r*40|0)+12>>2]|0)<2)f=a;else{o=4;break}}if((o|0)==4)if((l|0)>(a|0))A=+c[s+((t[n+(a<<2)>>2]|0)*40|0)+24>>3];else A=0.0;e:do{if((f|0)!=(l|0)){_4(t[s+(r*40|0)+4>>2]|0,t[s+(r*40|0)+12>>2]|0,4,64);n=t[46750]|0;d=+c[n+(r*40|0)+24>>3];d=!(A<=d*.25)&!(A>=d*.75)?A:d*.5;v=t[n+(r*40|0)+12>>2]|0;k=e+16|0;b=0;h=0;A=0.0;a=0;w=0;while(1){if((w|0)>=(a+v|0))break e;do{if(!(t[(t[n+(r*40|0)+8>>2]|0)+(w<<2)>>2]|0)){o=t[(t[n+(r*40|0)+4>>2]|0)+(w<<2)>>2]|0;e=o+8|0;u=+c[e>>3]*72.0+A+(A>0.0?+(t[(t[k>>2]|0)+248>>2]|0):0.0);f=(h|0)!=0;if(!(f&!(u<=d))){l=f?b:o;f=f?h:1;A=u;break}l=b+4|0;s=o+4|0;f=0;while(1){if((f|0)<(t[l>>2]|0))n=0;else break;while(1){if((n|0)>=(t[s>>2]|0))break;i[(t[(ZL(t[(t[b>>2]|0)+(f<<2)>>2]|0,t[(t[o>>2]|0)+(n<<2)>>2]|0,0)|0)+16>>2]|0)+112>>0]=1;n=n+1|0}f=f+1|0}n=t[46750]|0;t[(t[n+(r*40|0)+8>>2]|0)+(w<<2)>>2]=1;l=n+(r*40|0)+12|0;t[l>>2]=(t[l>>2]|0)+-1;l=n+(r*40|0)+16|0;t[l>>2]=(t[l>>2]|0)+1;l=n+(r*40|0)+24|0;c[l>>3]=+c[e>>3]*-72.0-+(t[(t[k>>2]|0)+248>>2]|0)+ +c[l>>3];l=b;f=h}else{l=b;f=h;a=a+1|0}}while(0);b=l;h=f;w=w+1|0}}}while(0);return}function Uz(e,A){e=e|0;A=A|0;e=Tz(t[e>>2]|0)|0;A=Tz(t[A>>2]|0)|0;return((A|0)<(e|0)&1)-((A|0)>(e|0)&1)|0}function Tz(e){e=e|0;var A=0,r=0,i=0,a=0,n=0;a=e+4|0;r=0;A=0;while(1){if((r|0)>=(t[a>>2]|0))break;i=t[(t[e>>2]|0)+(r<<2)>>2]|0;n=Bd(i)|0;i=Ow(n,i)|0;while(1){if(!i)break;i=qw(n,i)|0;A=A+1|0}r=r+1|0}return A|0}function Oz(e,A){e=e|0;A=A|0;var r=0.0,i=0.0,a=0;a=t[46750]|0;i=+c[a+((t[A>>2]|0)*40|0)+24>>3];r=+c[a+((t[e>>2]|0)*40|0)+24>>3];return(i>r&1)-(i>2]|0)+216>>2]=0;A=cd(e,A)|0}return}function qz(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0;n=h;h=h+32|0;a=n+16|0;i=n+8|0;r=n+20|0;t[r>>2]=5;e=Hw(e,99605)|0;if(e|0?(t[i>>2]=n,t[i+4>>2]=r,(V3(e,87497,i)|0)>=1):0)nw(0,87504,a)|0;t[A+24>>2]=0;t[A+32>>2]=0;h=n;return 0}function Kz(e){e=e|0;var A=0,r=0;A=t[47189]|0;if((((A|0)!=0?(r=Pw(e,A)|0,(r|0)!=0):0)?(i[r>>0]|0)!=0:0)?(mx(r)|0)<<24>>24==0:0)e=1;else e=0;return e|0}function $z(e){e=e|0;var A=0,r=0,i=0,a=0,n=0,f=0,l=0;mW(e);A=sd(e)|0;while(1){if(!A)break;r=Ow(e,A)|0;while(1){if(!r)break;do{if(((t[(t[r+16>>2]|0)+172>>2]|0)==0?(Kz(r)|0)==0:0)?(i=r+48|0,a=Ex(t[((t[r>>2]&3|0)==3?r:i)+40>>2]|0)|0,n=r+-48|0,f=Ex(t[((t[r>>2]&3|0)==2?r:n)+40>>2]|0)|0,(a|0)!=(f|0)):0){if((t[(t[a+16>>2]|0)+212>>2]|0)==0?(t[(t[f+16>>2]|0)+212>>2]|0)==0:0){l=dL(a,f)|0;if(!l){ZL(a,f,r)|0;break}else{FL(r,l);break}}l=t[r>>2]&3;eW(e,t[((l|0)==3?r:i)+40>>2]|0,t[((l|0)==2?r:n)+40>>2]|0,r)}}while(0);r=qw(e,r)|0}A=cd(e,A)|0}return}function eW(e,A,r,a){e=e|0;A=A|0;r=r|0;a=a|0;var n=0,l=0,s=0,c=0;s=t[a>>2]&3;n=t[(t[((s|0)==3?a:a+48|0)+40>>2]|0)+16>>2]|0;l=t[n+212>>2]|0;if(!l)c=0;else c=(t[n+232>>2]|0)-(t[(t[(t[(t[l+16>>2]|0)+264>>2]|0)+16>>2]|0)+232>>2]|0)|0;n=t[(t[((s|0)==2?a:a+-48|0)+40>>2]|0)+16>>2]|0;l=t[n+212>>2]|0;if(!l)n=0;else n=(t[(t[(t[(t[l+16>>2]|0)+264>>2]|0)+16>>2]|0)+232>>2]|0)-(t[n+232>>2]|0)|0;s=a+16|0;c=n+c+(f[(t[s>>2]|0)+170>>1]|0)|0;e=zL(e)|0;i[(t[e+16>>2]|0)+156>>0]=2;l=Ex(A)|0;A=Ex(r)|0;r=oD(e,l,(c|0)>0?0.0:+(0-c|0),(t[(t[s>>2]|0)+156>>2]|0)*10|0)|0;t[(t[(oD(e,A,+(((c|0)>0?c:0)|0),t[(t[s>>2]|0)+156>>2]|0)|0)+16>>2]|0)+116>>2]=a;t[(t[r+16>>2]|0)+116>>2]=a;return}function AW(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var n=0,l=0,s=0,c=0;s=t[A>>2]&3;l=(s|0)==3?A:A+48|0;s=(s|0)==2?A:A+-48|0;s=t[(t[(t[((t[(t[(t[l+40>>2]|0)+16>>2]|0)+232>>2]|0)>(t[(t[(t[s+40>>2]|0)+16>>2]|0)+232>>2]|0)?l:s)+40>>2]|0)+16>>2]|0)+232>>2]|0;l=A+16|0;A=(t[l>>2]|0)+172|0;if(t[A>>2]|0)ge(87593,87615,148,87624);t[A>>2]=r;n=(i|0)==0;do{A=t[l>>2]|0;if(n)i=t[r+16>>2]|0;else{i=t[r+16>>2]|0;c=i+168|0;a[c>>1]=(f[c>>1]|0)+(f[A+168>>1]|0)}c=i+154|0;a[c>>1]=(f[c>>1]|0)+(f[A+154>>1]|0);i=i+156|0;t[i>>2]=(t[i>>2]|0)+(t[A+156>>2]|0);A=r+-48|0;i=t[((t[r>>2]&3|0)==2?r:A)+40>>2]|0;if((t[(t[i+16>>2]|0)+232>>2]|0)==(s|0))break;rW(e,i);r=t[t[(t[(t[((t[r>>2]&3|0)==2?r:A)+40>>2]|0)+16>>2]|0)+180>>2]>>2]|0}while((r|0)!=0);return}function rW(e,A){e=e|0;A=A|0;var r=0.0;r=+((t[(t[e+16>>2]|0)+248>>2]|0)/2|0|0);A=t[A+16>>2]|0;e=A+88|0;c[e>>3]=+c[e>>3]+r;A=A+96|0;c[A>>3]=+c[A>>3]+r;return}function iW(e,A){e=e|0;A=A|0;var r=0,i=0;if(((((e|0)!=0&(A|0)!=0?(i=t[e>>2]&3,r=t[A>>2]&3,(t[((i|0)==3?e:e+48|0)+40>>2]|0)==(t[((r|0)==3?A:A+48|0)+40>>2]|0)):0)?(t[((i|0)==2?e:e+-48|0)+40>>2]|0)==(t[((r|0)==2?A:A+-48|0)+40>>2]|0):0)?(t[(t[e+16>>2]|0)+96>>2]|0)==(t[(t[A+16>>2]|0)+96>>2]|0):0)?(YD(e,A)|0)!=0:0)e=1;else e=0;return e|0}function aW(e){e=e|0;var A=0,r=0,a=0,n=0,f=0,l=0,s=0,c=0,o=0,u=0,b=0,h=0,w=0,k=0,d=0;d=e+16|0;A=t[d>>2]|0;t[A+192>>2]=0;t[A+232>>2]=0;mW(e);A=1;while(1){r=t[d>>2]|0;if((A|0)>(t[r+180>>2]|0))break;pW(e,t[(t[r+184>>2]|0)+(A<<2)>>2]|0);A=A+1|0}f=sd(e)|0;while(1){if(!f)break;n=Ow(e,f)|0;while(1){if(!n)break;A=t[n>>2]|0;r=(t[(t[((A&3|0)==2?n:n+-48|0)+40>>2]|0)+16>>2]|0)+160|0;a=i[r>>0]|0;if(a<<24>>24<3){i[r>>0]=a+1<<24>>24;A=t[n>>2]|0}A=(t[(t[((A&3|0)==3?n:n+48|0)+40>>2]|0)+16>>2]|0)+160|0;r=i[A>>0]|0;if(r<<24>>24<3)i[A>>0]=r+1<<24>>24;n=qw(e,n)|0}f=cd(e,f)|0}u=sd(e)|0;while(1){if(!u)break;if((t[(t[u+16>>2]|0)+212>>2]|0)==0?(u|0)==(Ex(u)|0):0){GL(e,u);o=(t[d>>2]|0)+232|0;t[o>>2]=(t[o>>2]|0)+1}A=0;o=Ow(e,u)|0;while(1){if(!o)break;c=o+16|0;f=t[c>>2]|0;e:do{if(!(t[f+172>>2]|0)){if(tW(o)|0){if(!(iW(A,o)|0)){nW(e,o);A=o;break}r=t[(t[A+16>>2]|0)+172>>2]|0;if(r|0){AW(e,o,r,0);BL(o);break}c=t[o>>2]&3;if((t[(t[(t[((c|0)==3?o:o+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)!=(t[(t[(t[((c|0)==2?o:o+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0))break;FL(o,A);BL(o);break}if(A){l=t[o>>2]&3;r=o+48|0;a=t[((l|0)==3?o:r)+40>>2]|0;n=t[A>>2]&3;if((a|0)==(t[((n|0)==3?A:A+48|0)+40>>2]|0)?(b=t[((l|0)==2?o:o+-48|0)+40>>2]|0,(b|0)==(t[((n|0)==2?A:A+-48|0)+40>>2]|0)):0){if((t[(t[a+16>>2]|0)+232>>2]|0)==(t[(t[b+16>>2]|0)+232>>2]|0)){FL(o,A);BL(o);break}if(((t[f+96>>2]|0)==0?(h=A+16|0,(t[(t[h>>2]|0)+96>>2]|0)==0):0)?(YD(o,A)|0)!=0:0)if(!(i[194954]|0)){AW(e,o,t[(t[h>>2]|0)+172>>2]|0,1);BL(o);break}else{i[(t[c>>2]|0)+112>>0]=6;break}else l=r}else l=r}else l=o+48|0;f=t[o>>2]&3;r=t[((f|0)==3?o:l)+40>>2]|0;s=o+-48|0;if((r|0)==(t[((f|0)==2?o:s)+40>>2]|0)){BL(o);A=o;break}r=Ex(r)|0;a=Ex(t[((t[o>>2]&3|0)==2?o:s)+40>>2]|0)|0;f=t[o>>2]&3;if((t[((f|0)==3?o:l)+40>>2]|0)==(r|0)?(t[((f|0)==2?o:s)+40>>2]|0)==(a|0):0){n=t[(t[r+16>>2]|0)+232>>2]|0;f=t[(t[a+16>>2]|0)+232>>2]|0;if((n|0)==(f|0)){WL(e,o);A=o;break}if((f|0)>(n|0)){fW(e,r,a,o);A=o;break}r=lk(e,a,r,0,0)|0;do{if(r|0?(w=t[r>>2]&3,k=t[((w|0)==2?r:r+-48|0)+40>>2]|0,(k|0)!=(t[((t[o>>2]&3|0)==2?o:s)+40>>2]|0)):0){a=r+16|0;if(!(t[(t[a>>2]|0)+172>>2]|0))fW(e,t[((w|0)==3?r:r+48|0)+40>>2]|0,k,r);if((t[(t[c>>2]|0)+96>>2]|0)==0?(t[(t[a>>2]|0)+96>>2]|0)==0:0){if(!(YD(o,r)|0))break;if(!(i[194954]|0)){BL(o);AW(e,o,t[(t[a>>2]|0)+172>>2]|0,1);break e}else{i[(t[c>>2]|0)+112>>0]=6;i[(t[a>>2]|0)+153>>0]=1;break e}}}}while(0);A=t[o>>2]&3;fW(e,t[((A|0)==2?o:s)+40>>2]|0,t[((A|0)==3?o:l)+40>>2]|0,o);A=o}}else A=o}while(0);o=qw(e,o)|0}u=cd(e,u)|0}if((mG(e)|0)!=(e|0)){A=t[(t[d>>2]|0)+216>>2]|0;if(!A)A=$F(4)|0;else A=AM(A,4)|0;d=t[d>>2]|0;t[d+216>>2]=A;t[A>>2]=t[d+192>>2]}return}function tW(e){e=e|0;var A=0;A=t[e>>2]&3;if((i[(t[(t[((A|0)==3?e:e+48|0)+40>>2]|0)+16>>2]|0)+159>>0]|0)==7)e=1;else e=(i[(t[(t[((A|0)==2?e:e+-48|0)+40>>2]|0)+16>>2]|0)+159>>0]|0)==7&1;return e|0}function nW(e,A){e=e|0;A=A|0;var r=0,a=0,n=0,f=0,l=0;a=cW(t[((t[A>>2]&3|0)==3?A:A+48|0)+40>>2]|0)|0;n=cW(t[((t[A>>2]&3|0)==2?A:A+-48|0)+40>>2]|0)|0;l=(t[(t[a+16>>2]|0)+232>>2]|0)>(t[(t[n+16>>2]|0)+232>>2]|0);r=l?a:n;a=l?n:a;n=a+16|0;l=r+16|0;e:do{if((t[(t[n>>2]|0)+212>>2]|0)!=(t[(t[l>>2]|0)+212>>2]|0)){f=dL(a,r)|0;if(f|0){AW(e,A,f,1);break}if((t[(t[n>>2]|0)+232>>2]|0)!=(t[(t[l>>2]|0)+232>>2]|0)){fW(e,a,r,A);r=(t[A+16>>2]|0)+172|0;while(1){r=t[r>>2]|0;if(!r)break e;a=r+-48|0;if((t[(t[(t[((t[r>>2]&3|0)==2?r:a)+40>>2]|0)+16>>2]|0)+232>>2]|0)>(t[(t[l>>2]|0)+232>>2]|0))break e;i[(t[r+16>>2]|0)+112>>0]=5;r=t[(t[(t[((t[r>>2]&3|0)==2?r:a)+40>>2]|0)+16>>2]|0)+180>>2]|0}}}}while(0);return}function fW(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0,n=0,f=0,l=0,s=0,c=0;c=i+16|0;a=t[c>>2]|0;if(!(t[a+96>>2]|0))s=-1;else s=((t[(t[r+16>>2]|0)+232>>2]|0)+(t[(t[A+16>>2]|0)+232>>2]|0)|0)/2|0;if(t[a+172>>2]|0)ge(87636,87615,89,87661);l=r+16|0;f=t[(t[A+16>>2]|0)+232>>2]|0;while(1){n=f+1|0;a=t[(t[l>>2]|0)+232>>2]|0;if((f|0)>=(a|0))break;if((n|0)<(a|0)){if((n|0)==(s|0))a=lW(e,i)|0;else a=sW(e)|0;t[(t[a+16>>2]|0)+232>>2]=n}else a=r;TQ(ZL(A,a,i)|0);f=n;A=a}if(!(t[(t[c>>2]|0)+172>>2]|0))ge(87672,87615,103,87661);else return}function lW(e,A){e=e|0;A=A|0;var r=0.0,a=0.0,n=0,f=0,l=0.0;f=A+16|0;n=t[(t[f>>2]|0)+96>>2]|0;r=+c[n+24>>3];a=+c[n+32>>3];n=zL(e)|0;A=n+16|0;t[(t[A>>2]|0)+104>>2]=t[(t[f>>2]|0)+96>>2];l=+(t[(t[(yd(n)|0)+16>>2]|0)+248>>2]|0);c[(t[A>>2]|0)+88>>3]=l;if(!(i[(t[f>>2]|0)+114>>0]|0)){e=(t[(t[(yd(e)|0)+16>>2]|0)+116>>2]&1|0)==0;f=t[A>>2]|0;c[f+80>>3]=e?a:r;c[f+96>>3]=e?r:a}return n|0}function sW(e){e=e|0;var A=0;A=zL(e)|0;rW(e,A);return A|0}function cW(e){e=e|0;var A=0;A=t[e+16>>2]|0;if((i[A+159>>0]|0)==7)e=t[(t[(t[(t[A+212>>2]|0)+16>>2]|0)+268>>2]|0)+(t[A+232>>2]<<2)>>2]|0;else e=Ex(e)|0;return e|0}function oW(e){e=e|0;var A=0,r=0,i=0,a=0,n=0,f=0,l=0,s=0,c=0,o=0,u=0;s=mG(e)|0;f=sd(e)|0;while(1){if(!f)break;A=ek(s,f)|0;l=0;while(1){if(!A)break;o=Ak(s,A,f)|0;if(Wd(e,A)|0){c=l;A=o;l=c;continue}c=(t[A>>2]&3|0)==2?A:A+-48|0;u=(iW(l,c)|0)==0;i=t[c>>2]&3;A=t[((i|0)==3?c:c+48|0)+40>>2]|0;r=t[(t[A+16>>2]|0)+232>>2]|0;i=t[((i|0)==2?c:c+-48|0)+40>>2]|0;a=t[(t[i+16>>2]|0)+232>>2]|0;n=(r|0)==(a|0);if(!u){t[(t[c+16>>2]|0)+172>>2]=n?l:0;A=t[(t[l+16>>2]|0)+172>>2]|0;if(!A){u=l;A=o;l=u;continue}AW(e,c,A,0);yL(c);u=l;A=o;l=u;continue}if(!n)if((a|0)>(r|0)){uW(A,i,c);A=o;l=c;continue}else{uW(i,A,c);A=o;l=c;continue}A=gL(A,i)|0;if(!A){WL(s,c);A=o;l=c;continue}if((c|0)==(A|0)){u=l;A=o;l=u;continue}yL(c);if(t[(t[c+16>>2]|0)+172>>2]|0){u=l;A=o;l=u;continue}FL(c,A);u=l;A=o;l=u}f=cd(e,f)|0}return}function uW(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0;a=bW(e)|0;i=bW(A)|0;hW(a,i,r,t[(t[r+16>>2]|0)+172>>2]|0,(a|0)==(e|0)&(i|0)==(A|0)?1:5);return}function bW(e){e=e|0;var A=0,r=0,a=0;A=t[e+16>>2]|0;r=t[A+212>>2]|0;if((r|0)!=0?(a=t[r+16>>2]|0,(i[a+272>>0]|0)==0):0)e=t[(t[a+268>>2]|0)+(t[A+232>>2]<<2)>>2]|0;return e|0}function hW(e,A,r,n,f){e=e|0;A=A|0;r=r|0;n=n|0;f=f|0;var l=0,s=0,c=0,o=0,u=0,b=0,h=0;b=e+16|0;c=t[(t[b>>2]|0)+232>>2]|0;h=A+16|0;l=t[(t[h>>2]|0)+232>>2]|0;if((l|0)<=(c|0))ge(87697,87725,81,87735);u=t[n>>2]&3;if(!((t[((u|0)==3?n:n+48|0)+40>>2]|0)==(e|0)?(t[((u|0)==2?n:n+-48|0)+40>>2]|0)==(A|0):0))o=5;e:do{if((o|0)==5){if((a[(t[n+16>>2]|0)+168>>1]|0)>1){t[(t[r+16>>2]|0)+172>>2]=0;if(((l-c|0)==1?(s=dL(e,A)|0,s|0):0)?YD(r,s)|0:0){FL(r,s);if(i[(t[b>>2]|0)+156>>0]|0)break;if(i[(t[h>>2]|0)+156>>0]|0)break;BL(r);break}u=f&255;f=e;o=t[(t[b>>2]|0)+232>>2]|0;while(1){l=t[(t[h>>2]|0)+232>>2]|0;if((o|0)>=(l|0))break e;if((o|0)<(l+-1|0)){l=mG(e)|0;s=n+-48|0;l=wW(l,t[((t[n>>2]&3|0)==2?n:s)+40>>2]|0)|0;c=n}else{l=A;s=n+-48|0;c=n}i[(t[(ZL(f,l,r)|0)+16>>2]|0)+112>>0]=u;b=(t[n+16>>2]|0)+168|0;a[b>>1]=(a[b>>1]|0)+-1<<16>>16;f=l;o=o+1|0;n=t[t[(t[(t[((t[c>>2]&3|0)==2?n:s)+40>>2]|0)+16>>2]|0)+180>>2]>>2]|0}}do{if((l-c|0)==1){n=dL(e,A)|0;if(n|0?YD(r,n)|0:0){t[(t[r+16>>2]|0)+172>>2]=n;u=t[n+16>>2]|0;i[u+112>>0]=f;u=u+168|0;a[u>>1]=(a[u>>1]|0)+1<<16>>16;if(i[(t[b>>2]|0)+156>>0]|0)break;if(i[(t[h>>2]|0)+156>>0]|0)break;BL(r);break}t[(t[r+16>>2]|0)+172>>2]=0;n=ZL(e,A,r)|0;i[(t[n+16>>2]|0)+112>>0]=f}}while(0);l=t[(t[h>>2]|0)+232>>2]|0;if((l-(t[(t[b>>2]|0)+232>>2]|0)|0)>1){if((t[((t[n>>2]&3|0)==3?n:n+48|0)+40>>2]|0)==(e|0))o=l;else{b=r+16|0;t[(t[b>>2]|0)+172>>2]=0;o=ZL(e,t[((t[n>>2]&3|0)==2?n:n+-48|0)+40>>2]|0,r)|0;t[(t[b>>2]|0)+172>>2]=o;EL(n);n=o;o=t[(t[h>>2]|0)+232>>2]|0}while(1){l=t[n>>2]&3;s=t[((l|0)==2?n:n+-48|0)+40>>2]|0;c=t[s+16>>2]|0;if((t[c+232>>2]|0)==(o|0))break;n=t[t[c+180>>2]>>2]|0}if((s|0)!=(A|0)){i[(t[(ZL(t[((l|0)==3?n:n+48|0)+40>>2]|0,A,r)|0)+16>>2]|0)+112>>0]=f;EL(n)}}}}while(0);return}function wW(e,A){e=e|0;A=A|0;var r=0,i=0,a=0;r=A+16|0;A=t[r>>2]|0;i=t[A+232>>2]|0;kW(e,i,t[A+236>>2]|0,2);A=zL(e)|0;r=t[r>>2]|0;a=t[A+16>>2]|0;c[a+88>>3]=+c[r+88>>3];c[a+96>>3]=+c[r+96>>3];t[a+232>>2]=t[r+232>>2];r=(t[r+236>>2]|0)+1|0;t[a+236>>2]=r;t[(t[(t[(t[e+16>>2]|0)+196>>2]|0)+(i<<6)+4>>2]|0)+(r<<2)>>2]=A;return A|0}function kW(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0,n=0,f=0,l=0,s=0;f=e+16|0;a=t[(t[f>>2]|0)+196>>2]|0;l=t[a+(A<<6)+4>>2]|0;e:do{if((i|0)<1){r=r-i|0;while(1){n=r+1|0;e=t[a+(A<<6)>>2]|0;if((n|0)>=(e|0))break;e=t[l+(n<<2)>>2]|0;a=r+i|0;t[(t[e+16>>2]|0)+236>>2]=a;t[l+(a<<2)>>2]=e;r=n;a=t[(t[f>>2]|0)+196>>2]|0}n=i+-1|0;r=n+e|0;while(1){if((r|0)>=(e|0))break e;t[l+(r<<2)>>2]=0;a=t[(t[f>>2]|0)+196>>2]|0;r=r+1|0;e=t[a+(A<<6)>>2]|0}}else{n=i+-1|0;e=t[a+(A<<6)>>2]|0;while(1){e=e+-1|0;if((e|0)<=(r|0))break;s=t[l+(e<<2)>>2]|0;a=n+e|0;t[(t[s+16>>2]|0)+236>>2]=a;t[l+(a<<2)>>2]=s}a=i+r|0;e=r;while(1){e=e+1|0;if((e|0)>=(a|0))break;t[l+(e<<2)>>2]=0}e=t[(t[f>>2]|0)+196>>2]|0;a=e;e=t[e+(A<<6)>>2]|0}}while(0);t[a+(A<<6)>>2]=n+e;return}function dW(e){e=e|0;var A=0;aW(e);A=t[e+16>>2]|0;t[A+220>>2]=1;t[t[A+216>>2]>>2]=t[A+192>>2];SQ(e);yQ(e,0);vW(e);oW(e);gW(e);return}function vW(e){e=e|0;var A=0,r=0,n=0,f=0,l=0,s=0,c=0,o=0,u=0;c=mG(e)|0;o=e+16|0;r=t[o>>2]|0;s=a[r+236>>1]|0;A=s<<16>>16;u=c+16|0;if(s<<16>>16>0)i[(t[(t[u>>2]|0)+196>>2]|0)+(A+-1<<6)+49>>0]=0;s=A;while(1){if((s|0)>(a[r+238>>1]|0))break;l=t[(t[(t[(t[r+268>>2]|0)+(s<<2)>>2]|0)+16>>2]|0)+236>>2]|0;kW(c,s,l,t[(t[r+196>>2]|0)+(s<<6)>>2]|0);n=0;f=l;while(1){r=t[o>>2]|0;A=t[r+196>>2]|0;if((n|0)>=(t[A+(s<<6)>>2]|0))break;A=t[(t[A+(s<<6)+4>>2]|0)+(n<<2)>>2]|0;t[(t[(t[(t[u>>2]|0)+196>>2]|0)+(s<<6)+4>>2]|0)+(f<<2)>>2]=A;r=t[A+16>>2]|0;t[r+236>>2]=f;if((i[r+156>>0]|0)==1)t[A+24>>2]=yd(c)|0;QL(e,A);GL(c,A);r=(t[u>>2]|0)+232|0;t[r>>2]=(t[r>>2]|0)+1;n=n+1|0;f=f+1|0}f=t[(t[u>>2]|0)+196>>2]|0;t[A+(s<<6)+4>>2]=(t[f+(s<<6)+4>>2]|0)+(l<<2);i[f+(s<<6)+49>>0]=0;s=s+1|0}A=t[u>>2]|0;if((s|0)<(a[A+238>>1]|0))i[(t[A+196>>2]|0)+(s<<6)+49>>0]=0;i[r+272>>0]=1;return}function gW(e){e=e|0;var A=0,r=0,i=0,n=0,f=0,l=0;l=e+16|0;A=t[l>>2]|0;f=a[A+236>>1]|0;while(1){if((f|0)>(a[A+238>>1]|0))break;i=t[(t[A+268>>2]|0)+(f<<2)>>2]|0;n=i+16|0;while(1){A=t[n>>2]|0;r=t[t[A+180>>2]>>2]|0;if(!r)break;EL(r)}while(1){A=t[t[A+172>>2]>>2]|0;if(!A)break;EL(A);A=t[n>>2]|0}QL(mG(e)|0,i);t[(t[(t[l>>2]|0)+268>>2]|0)+(f<<2)>>2]=0;f=f+1|0;A=t[l>>2]|0}return}function mW(e){e=e|0;var A=0,r=0,a=0,n=0,f=0,l=0,s=0,c=0,o=0,u=0,b=0;b=h;h=h+16|0;u=b;a=sd(e)|0;while(1){if(!a)break;r=a+16|0;A=t[r>>2]|0;if((i[A+159>>0]|0)==7){yx(a);A=t[r>>2]|0}t[A+212>>2]=0;a=cd(e,a)|0}o=e+16|0;c=1;while(1){A=t[o>>2]|0;if((c|0)>(t[A+180>>2]|0))break;f=t[(t[A+184>>2]|0)+(c<<2)>>2]|0;l=f+16|0;A=sd(f)|0;e:while(1){if(!A)break;s=cd(f,A)|0;r=A+16|0;if(i[(t[r>>2]|0)+159>>0]|0){a=Mk(A)|0;n=Mk(e)|0;t[u>>2]=a;t[u+4>>2]=n;nw(0,87744,u)|0;Ed(f,A)|0;A=s;continue}Cx(A,t[(t[l>>2]|0)+264>>2]|0);n=t[r>>2]|0;t[n+212>>2]=f;i[n+159>>0]=7;n=Ow(f,A)|0;while(1){if(!n){A=s;continue e}A=t[(t[n+16>>2]|0)+172>>2]|0;A:do{if(A|0)do{r=A+-48|0;a=t[(t[((t[A>>2]&3|0)==2?A:r)+40>>2]|0)+16>>2]|0;if((i[a+156>>0]|0)!=1)break A;t[a+212>>2]=f;A=t[t[(t[(t[((t[A>>2]&3|0)==2?A:r)+40>>2]|0)+16>>2]|0)+180>>2]>>2]|0}while((A|0)!=0)}while(0);n=qw(f,n)|0}}c=c+1|0}h=b;return}function pW(e,A){e=e|0;A=A|0;var r=0,n=0,f=0,l=0,s=0,c=0;c=A+16|0;n=KF((a[(t[c>>2]|0)+238>>1]<<2)+8|0)|0;r=t[c>>2]|0;t[r+268>>2]=n;n=0;f=a[r+236>>1]|0;while(1){if((f|0)>(a[r+238>>1]|0))break;r=zL(e)|0;t[(t[(t[c>>2]|0)+268>>2]|0)+(f<<2)>>2]=r;s=t[r+16>>2]|0;t[s+232>>2]=f;i[s+159>>0]=7;t[s+212>>2]=A;if(n|0){s=(t[(ZL(n,r,0)|0)+16>>2]|0)+154|0;a[s>>1]=(a[s>>1]|0)*1e3}n=r;f=f+1|0;r=t[c>>2]|0}s=sd(A)|0;while(1){r=t[c>>2]|0;if(!s)break;f=(t[(t[r+268>>2]|0)+(t[(t[s+16>>2]|0)+232>>2]<<2)>>2]|0)+16|0;r=(t[f>>2]|0)+216|0;t[r>>2]=(t[r>>2]|0)+1;r=Ow(A,s)|0;while(1){if(!r)break;l=t[r>>2]|0;e=r+-48|0;n=t[(t[(t[((l&3|0)==3?r:r+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0;while(1){if((n|0)>=(t[(t[(t[((l&3|0)==2?r:e)+40>>2]|0)+16>>2]|0)+232>>2]|0))break;l=(t[(t[t[(t[f>>2]|0)+180>>2]>>2]|0)+16>>2]|0)+168|0;a[l>>1]=(a[l>>1]|0)+1<<16>>16;n=n+1|0;l=t[r>>2]|0}r=qw(A,r)|0}s=cd(A,s)|0}e=a[r+238>>1]|0;l=r+268|0;r=a[r+236>>1]|0;while(1){if((r|0)>(e|0))break;n=(t[(t[(t[l>>2]|0)+(r<<2)>>2]|0)+16>>2]|0)+216|0;f=t[n>>2]|0;if((f|0)>1)t[n>>2]=f+-1;r=r+1|0}return}function EW(e,A,r,n){e=e|0;A=A|0;r=r|0;n=n|0;var f=0,l=0,s=0,c=0;c=(t[(t[A+16>>2]|0)+212>>2]|0)+16|0;A=t[c>>2]|0;s=r+1|0;if((s|0)!=(i[A+273>>0]|0)){l=a[A+236>>1]|0;while(1){f=a[A+238>>1]|0;if((l|0)>(f<<16>>16|0))break;RQ(e,t[(t[A+268>>2]|0)+(l<<2)>>2]|0);l=l+1|0;A=t[c>>2]|0}l=a[A+236>>1]|0;while(1){if((l|0)>(f<<16>>16|0))break;xQ(n,t[(t[A+268>>2]|0)+(l<<2)>>2]|0,r);e=t[c>>2]|0;l=l+1|0;f=a[e+238>>1]|0;A=e}i[A+273>>0]=s}return}function BW(e){e=e|0;var A=0,r=0,a=0,n=0,f=0;f=sd(e)|0;while(1){if(!f)break;t[(t[f+16>>2]|0)+212>>2]=0;n=Ow(e,f)|0;while(1){if(!n)break;A=t[(t[n+16>>2]|0)+172>>2]|0;e:do{if(A|0)do{r=A+-48|0;a=t[(t[((t[A>>2]&3|0)==2?A:r)+40>>2]|0)+16>>2]|0;if((i[a+156>>0]|0)!=1)break e;t[a+212>>2]=0;A=t[t[(t[(t[((t[A>>2]&3|0)==2?A:r)+40>>2]|0)+16>>2]|0)+180>>2]>>2]|0}while((A|0)!=0)}while(0);n=qw(e,n)|0}f=cd(e,f)|0}yW(e);return}function yW(e){e=e|0;var A=0,r=0,a=0,n=0,f=0,l=0;r=e+16|0;A=1;while(1){a=t[r>>2]|0;if((A|0)>(t[a+180>>2]|0))break;yW(t[(t[a+184>>2]|0)+(A<<2)>>2]|0);A=A+1|0}l=sd(e)|0;while(1){if(!l)break;A=(t[l+16>>2]|0)+212|0;if(!(t[A>>2]|0))t[A>>2]=e;f=Ow(e,l)|0;while(1){if(!f)break;A=t[(t[f+16>>2]|0)+172>>2]|0;e:do{if(A|0)do{r=t[A>>2]|0;n=A+-48|0;a=t[(t[((r&3|0)==2?A:n)+40>>2]|0)+16>>2]|0;if((i[a+156>>0]|0)!=1)break e;a=a+212|0;if(!(t[a>>2]|0)){t[a>>2]=e;r=t[A>>2]|0}A=t[t[(t[(t[((r&3|0)==2?A:n)+40>>2]|0)+16>>2]|0)+180>>2]>>2]|0}while((A|0)!=0)}while(0);f=qw(e,f)|0}l=cd(e,l)|0}return}function CW(e){e=e|0;var A=0,r=0,i=0;i=qx(e)|0;r=sd(e)|0;while(1){if(!r)break;A=Ow(e,r)|0;while(1){if(!A)break;IW(A,i);A=qw(e,A)|0}r=cd(e,r)|0}Ph(i)|0;return}function IW(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0,f=0,l=0,s=0,c=0,o=0,u=0,b=0,w=0,k=0,d=0,v=0,g=0,m=0,p=0,E=0,B=0,y=0,C=0,I=0,Z=0,G=0,L=0,Q=0,D=0,z=0,W=0,Y=0,F=0,M=0,V=0,N=0;N=h;h=h+320|0;W=N+296|0;z=N+280|0;B=N+136|0;E=N+120|0;u=N+104|0;l=N+88|0;a=N+80|0;Q=N+16|0;C=N;s=N+264|0;c=N+248|0;o=N+232|0;b=N+216|0;I=N+200|0;Z=N+184|0;y=N+168|0;L=N+152|0;n=ZW(Hw(e,87798)|0,A)|0;k=ZW(Hw(e,87804)|0,A)|0;d=(k|0)!=0;A=(n|0)!=0;do{if(A|d?(V=e+16|0,i=t[(t[V>>2]|0)+8>>2]|0,i|0):0){if((t[i+4>>2]|0)>1){M=Mk(t[((t[e>>2]&3|0)==3?e:e+48|0)+40>>2]|0)|0;V=Mk(t[((t[e>>2]&3|0)==2?e:e+-48|0)+40>>2]|0)|0;t[a>>2]=M;t[a+4>>2]=V;nw(0,87810,a)|0;break}Y=t[i>>2]|0;i=t[Y+4>>2]|0;w=t[e>>2]&3;v=e+-48|0;g=t[((w|0)==2?e:v)+40>>2]|0;m=e+48|0;w=t[((w|0)==3?e:m)+40>>2]|0;F=$F(48)|0;p=Y+12|0;t[F+12>>2]=t[p>>2];G=Y+8|0;t[F+8>>2]=t[G>>2];do{if(A){f=(t[n+16>>2]|0)+16|0;n=(t[g+16>>2]|0)+16|0;t[W>>2]=t[n>>2];t[W+4>>2]=t[n+4>>2];t[W+8>>2]=t[n+8>>2];t[W+12>>2]=t[n+12>>2];if(!(GW(W,f)|0)){b=Mk(t[((t[e>>2]&3|0)==3?e:m)+40>>2]|0)|0;D=Mk(t[((t[e>>2]&3|0)==2?e:v)+40>>2]|0)|0;M=Hw(e,87798)|0;t[l>>2]=b;t[l+4>>2]=D;t[l+8>>2]=M;nw(0,87851,l)|0;M=26;break}A=t[Y>>2]|0;t[W>>2]=t[A>>2];t[W+4>>2]=t[A+4>>2];t[W+8>>2]=t[A+8>>2];t[W+12>>2]=t[A+12>>2];if(GW(W,f)|0){D=(t[w+16>>2]|0)+16|0;t[W>>2]=t[D>>2];t[W+4>>2]=t[D+4>>2];t[W+8>>2]=t[D+8>>2];t[W+12>>2]=t[D+12>>2];if(GW(W,f)|0){b=Mk(t[((t[e>>2]&3|0)==3?e:m)+40>>2]|0)|0;D=Mk(t[((t[e>>2]&3|0)==2?e:v)+40>>2]|0)|0;M=Hw(e,87798)|0;t[u>>2]=b;t[u+4>>2]=D;t[u+8>>2]=M;nw(0,87894,u)|0;M=26;break}if(!(t[G>>2]|0))ge(87936,87947,369,87958);b=Y+16|0;t[z>>2]=t[A>>2];t[z+4>>2]=t[A+4>>2];t[z+8>>2]=t[A+8>>2];t[z+12>>2]=t[A+12>>2];t[W>>2]=t[b>>2];t[W+4>>2]=t[b+4>>2];t[W+8>>2]=t[b+8>>2];t[W+12>>2]=t[b+12>>2];LW(C,z,W,f);D=(t[Y>>2]|0)+48|0;t[D>>2]=t[C>>2];t[D+4>>2]=t[C+4>>2];t[D+8>>2]=t[C+8>>2];t[D+12>>2]=t[C+12>>2];D=(t[Y>>2]|0)+16|0;t[z>>2]=t[C>>2];t[z+4>>2]=t[C+4>>2];t[z+8>>2]=t[C+8>>2];t[z+12>>2]=t[C+12>>2];t[W>>2]=t[b>>2];t[W+4>>2]=t[b+4>>2];t[W+8>>2]=t[b+8>>2];t[W+12>>2]=t[b+12>>2];QW(s,z,W);t[D>>2]=t[s>>2];t[D+4>>2]=t[s+4>>2];t[D+8>>2]=t[s+8>>2];t[D+12>>2]=t[s+12>>2];D=t[Y>>2]|0;A=D+16|0;t[z>>2]=t[A>>2];t[z+4>>2]=t[A+4>>2];t[z+8>>2]=t[A+8>>2];t[z+12>>2]=t[A+12>>2];t[W>>2]=t[b>>2];t[W+4>>2]=t[b+4>>2];t[W+8>>2]=t[b+8>>2];t[W+12>>2]=t[b+12>>2];QW(c,z,W);t[D>>2]=t[c>>2];t[D+4>>2]=t[c+4>>2];t[D+8>>2]=t[c+8>>2];t[D+12>>2]=t[c+12>>2];D=t[Y>>2]|0;A=D+32|0;D=D+16|0;t[z>>2]=t[D>>2];t[z+4>>2]=t[D+4>>2];t[z+8>>2]=t[D+8>>2];t[z+12>>2]=t[D+12>>2];t[W>>2]=t[C>>2];t[W+4>>2]=t[C+4>>2];t[W+8>>2]=t[C+8>>2];t[W+12>>2]=t[C+12>>2];QW(o,z,W);t[A>>2]=t[o>>2];t[A+4>>2]=t[o+4>>2];t[A+8>>2]=t[o+8>>2];t[A+12>>2]=t[o+12>>2];A=t[p>>2]|0;if(!A){D=3;break}D=(jE(e,t[Y>>2]|0,0,0,F,A)|0)+3|0;break}n=i+-1|0;A=0;while(1){if((A|0)>=(n|0))break;if(DW((t[Y>>2]|0)+(A<<4)|0,f)|0)break;A=A+3|0}i=t[p>>2]|0;a=(i|0)!=0;if((A|0)==(n|0))if(a){D=F+32|0;o=Y+32|0;u=(t[Y>>2]|0)+(n<<4)|0;t[z>>2]=t[o>>2];t[z+4>>2]=t[o+4>>2];t[z+8>>2]=t[o+8>>2];t[z+12>>2]=t[o+12>>2];t[W>>2]=t[u>>2];t[W+4>>2]=t[u+4>>2];t[W+8>>2]=t[u+8>>2];t[W+12>>2]=t[u+12>>2];LW(b,z,W,f);t[D>>2]=t[b>>2];t[D+4>>2]=t[b+4>>2];t[D+8>>2]=t[b+8>>2];t[D+12>>2]=t[b+12>>2];D=n;break}else ge(87975,87947,387,87958);else{if(a)A=jE(e,t[Y>>2]|0,0,A,F,i)|0;D=A+3|0;break}}else M=26}while(0);if((M|0)==26){A=i+-1|0;if(!(t[p>>2]|0))D=A;else{D=F+32|0;b=Y+32|0;t[D>>2]=t[b>>2];t[D+4>>2]=t[b+4>>2];t[D+8>>2]=t[b+8>>2];t[D+12>>2]=t[b+12>>2];D=A}}do{if(d){a=(t[k+16>>2]|0)+16|0;d=(t[w+16>>2]|0)+16|0;t[W>>2]=t[d>>2];t[W+4>>2]=t[d+4>>2];t[W+8>>2]=t[d+8>>2];t[W+12>>2]=t[d+12>>2];if(!(GW(W,a)|0)){z=Mk(t[((t[e>>2]&3|0)==3?e:m)+40>>2]|0)|0;W=Mk(t[((t[e>>2]&3|0)==2?e:v)+40>>2]|0)|0;M=Hw(e,87804)|0;t[E>>2]=z;t[E+4>>2]=W;t[E+8>>2]=M;nw(0,87986,E)|0;M=52;break}A=(t[Y>>2]|0)+(D<<4)|0;t[W>>2]=t[A>>2];t[W+4>>2]=t[A+4>>2];t[W+8>>2]=t[A+8>>2];t[W+12>>2]=t[A+12>>2];if(GW(W,a)|0){Q=(t[g+16>>2]|0)+16|0;t[W>>2]=t[Q>>2];t[W+4>>2]=t[Q+4>>2];t[W+8>>2]=t[Q+8>>2];t[W+12>>2]=t[Q+12>>2];if(GW(W,a)|0){z=Mk(t[((t[e>>2]&3|0)==3?e:m)+40>>2]|0)|0;W=Mk(t[((t[e>>2]&3|0)==2?e:v)+40>>2]|0)|0;M=Hw(e,87804)|0;t[B>>2]=z;t[B+4>>2]=W;t[B+8>>2]=M;nw(0,88029,B)|0;M=52;break}if(!(t[p>>2]|0))ge(87975,87947,429,87958);B=F+32|0;t[z>>2]=t[A>>2];t[z+4>>2]=t[A+4>>2];t[z+8>>2]=t[A+8>>2];t[z+12>>2]=t[A+12>>2];t[W>>2]=t[B>>2];t[W+4>>2]=t[B+4>>2];t[W+8>>2]=t[B+8>>2];t[W+12>>2]=t[B+12>>2];LW(C,z,W,a);r=D+-3|0;Q=(t[Y>>2]|0)+(r<<4)|0;t[Q>>2]=t[C>>2];t[Q+4>>2]=t[C+4>>2];t[Q+8>>2]=t[C+8>>2];t[Q+12>>2]=t[C+12>>2];Q=D+-1|0;A=(t[Y>>2]|0)+(Q<<4)|0;t[z>>2]=t[C>>2];t[z+4>>2]=t[C+4>>2];t[z+8>>2]=t[C+8>>2];t[z+12>>2]=t[C+12>>2];t[W>>2]=t[B>>2];t[W+4>>2]=t[B+4>>2];t[W+8>>2]=t[B+8>>2];t[W+12>>2]=t[B+12>>2];QW(I,z,W);t[A>>2]=t[I>>2];t[A+4>>2]=t[I+4>>2];t[A+8>>2]=t[I+8>>2];t[A+12>>2]=t[I+12>>2];A=t[Y>>2]|0;L=A+(D<<4)|0;A=A+(Q<<4)|0;t[z>>2]=t[A>>2];t[z+4>>2]=t[A+4>>2];t[z+8>>2]=t[A+8>>2];t[z+12>>2]=t[A+12>>2];t[W>>2]=t[B>>2];t[W+4>>2]=t[B+4>>2];t[W+8>>2]=t[B+8>>2];t[W+12>>2]=t[B+12>>2];QW(Z,z,W);t[L>>2]=t[Z>>2];t[L+4>>2]=t[Z+4>>2];t[L+8>>2]=t[Z+8>>2];t[L+12>>2]=t[Z+12>>2];L=t[Y>>2]|0;A=L+(D+-2<<4)|0;Q=L+(Q<<4)|0;t[z>>2]=t[Q>>2];t[z+4>>2]=t[Q+4>>2];t[z+8>>2]=t[Q+8>>2];t[z+12>>2]=t[Q+12>>2];t[W>>2]=t[C>>2];t[W+4>>2]=t[C+4>>2];t[W+8>>2]=t[C+8>>2];t[W+12>>2]=t[C+12>>2];QW(y,z,W);t[A>>2]=t[y>>2];t[A+4>>2]=t[y+4>>2];t[A+8>>2]=t[y+8>>2];t[A+12>>2]=t[y+12>>2];A=t[G>>2]|0;if(!A)break;r=TE(e,t[Y>>2]|0,r,r,F,A)|0;break}i=D;while(1){if((i|0)>0)A=0;else break;while(1){if((A|0)==4)break;Z=Q+(A<<4)|0;I=(t[Y>>2]|0)+(i-A<<4)|0;t[Z>>2]=t[I>>2];t[Z+4>>2]=t[I+4>>2];t[Z+8>>2]=t[I+8>>2];t[Z+12>>2]=t[I+12>>2];A=A+1|0}if(DW(Q,a)|0){A=0;M=43;break}i=i+-3|0}e:do{if((M|0)==43)while(1){M=0;if((A|0)==4)break e;M=(t[Y>>2]|0)+(i-A<<4)|0;Z=Q+(A<<4)|0;t[M>>2]=t[Z>>2];t[M+4>>2]=t[Z+4>>2];t[M+8>>2]=t[Z+8>>2];t[M+12>>2]=t[Z+12>>2];A=A+1|0;M=43}}while(0);if(i|0){r=i+-3|0;A=t[G>>2]|0;if(!A)break;r=TE(e,t[Y>>2]|0,r,D+-3|0,F,A)|0;break}if(!(t[G>>2]|0))ge(87936,87947,452,87958);else{r=F+16|0;Q=Y+16|0;e=t[Y>>2]|0;t[z>>2]=t[Q>>2];t[z+4>>2]=t[Q+4>>2];t[z+8>>2]=t[Q+8>>2];t[z+12>>2]=t[Q+12>>2];t[W>>2]=t[e>>2];t[W+4>>2]=t[e+4>>2];t[W+8>>2]=t[e+8>>2];t[W+12>>2]=t[e+12>>2];LW(L,z,W,a);t[r>>2]=t[L>>2];t[r+4>>2]=t[L+4>>2];t[r+8>>2]=t[L+8>>2];t[r+12>>2]=t[L+12>>2];r=0;break}}else M=52}while(0);if((M|0)==52)if(!(t[G>>2]|0))r=0;else{r=F+16|0;M=Y+16|0;t[r>>2]=t[M>>2];t[r+4>>2]=t[M+4>>2];t[r+8>>2]=t[M+8>>2];t[r+12>>2]=t[M+12>>2];r=0}A=D-r+1|0;i=F+4|0;t[i>>2]=A;t[F>>2]=$F(A<<4)|0;A=0;while(1){if((A|0)>=(t[i>>2]|0))break;M=(t[F>>2]|0)+(A<<4)|0;e=(t[Y>>2]|0)+(r<<4)|0;t[M>>2]=t[e>>2];t[M+4>>2]=t[e+4>>2];t[M+8>>2]=t[e+8>>2];t[M+12>>2]=t[e+12>>2];r=r+1|0;A=A+1|0}G2(t[Y>>2]|0);G2(Y);t[t[(t[V>>2]|0)+8>>2]>>2]=F}}while(0);h=N;return}function ZW(e,A){e=e|0;A=A|0;var r=0,a=0;a=h;h=h+16|0;r=a;if((e|0)!=0?(i[e>>0]|0)!=0:0){A=$x(A,e)|0;if(!A){t[r>>2]=e;nw(0,88149,r)|0;A=0}}else A=0;h=a;return A|0}function GW(e,A){e=e|0;A=A|0;var r=0.0,i=0.0;i=+c[e>>3];if((+c[A>>3]<=i?i<=+c[A+16>>3]:0)?(r=+c[e+8>>3],+c[A+8>>3]<=r):0)e=r<=+c[A+24>>3]&1;else e=0;return e|0}function LW(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0.0,n=0.0,f=0,l=0.0,s=0.0,o=0.0,u=0,b=0.0,w=0.0,k=0.0,d=0.0,v=0.0,g=0.0,m=0,p=0,E=0,B=0,y=0.0,C=0,I=0,Z=0,G=0;G=h;h=h+464|0;u=G+48|0;Z=G+32|0;m=G+16|0;p=G;E=G+364|0;B=G+264|0;C=G+164|0;I=G+64|0;k=+c[A>>3];d=+c[A+8>>3];v=+c[r>>3];g=+c[r+8>>3];t[m>>2]=t[i>>2];t[m+4>>2]=t[i+4>>2];t[m+8>>2]=t[i+8>>2];t[m+12>>2]=t[i+12>>2];i=i+16|0;t[p>>2]=t[i>>2];t[p+4>>2]=t[i+4>>2];t[p+8>>2]=t[i+8>>2];t[p+12>>2]=t[i+12>>2];s=+c[m>>3];if((v=+c[m+8>>3]):0)?a<=+c[p+8>>3]:0){b=a;w=s}else f=4;do{if((f|0)==4){l=+c[p>>3];if(v>l){n=d+ +(~~((l-k)*(d-g)/(k-v))|0);a=+c[m+8>>3];if(n>=a?n<=+c[p+8>>3]:0){b=n;w=l;break}}else a=+c[m+8>>3];if(g=s)|!(o<=l))):0){b=a;w=o;break}a=+c[p+8>>3];if(g>a?(y=k+ +(~~((a-d)*(k-v)/(d-g))|0),!(!(y>=s)|!(y<=l))):0){b=a;w=y;break}t[u>>2]=t[A>>2];t[u+4>>2]=t[A+4>>2];t[u+8>>2]=t[A+8>>2];t[u+12>>2]=t[A+12>>2];E=MW(u,E)|0;t[u>>2]=t[r>>2];t[u+4>>2]=t[r+4>>2];t[u+8>>2]=t[r+8>>2];t[u+12>>2]=t[r+12>>2];B=MW(u,B)|0;t[u>>2]=t[m>>2];t[u+4>>2]=t[m+4>>2];t[u+8>>2]=t[m+8>>2];t[u+12>>2]=t[m+12>>2];C=MW(u,C)|0;t[u>>2]=t[p>>2];t[u+4>>2]=t[p+4>>2];t[u+8>>2]=t[p+8>>2];t[u+12>>2]=t[p+12>>2];I=MW(u,I)|0;t[Z>>2]=E;t[Z+4>>2]=B;t[Z+8>>2]=C;t[Z+12>>2]=I;nw(1,88071,Z)|0;ge(138394,87947,78,88123)}}while(0);c[e>>3]=w;c[e+8>>3]=b;h=G;return}function QW(e,A,r){e=e|0;A=A|0;r=r|0;var i=0.0;i=(+c[r+8>>3]+ +c[A+8>>3])*.5;c[e>>3]=(+c[r>>3]+ +c[A>>3])*.5;c[e+8>>3]=i;return}function DW(e,A){e=e|0;A=A|0;var r=0.0,i=0,a=0.0,n=0,f=0,l=0,s=0,o=0;o=h;h=h+80|0;l=o+16|0;s=o;i=0;while(1){if((i|0)==4)break;f=l+(i<<4)|0;n=e+(i<<4)|0;t[f>>2]=t[n>>2];t[f+4>>2]=t[n+4>>2];t[f+8>>2]=t[n+8>>2];t[f+12>>2]=t[n+12>>2];i=i+1|0}i=A+8|0;f=A+24|0;r=+zW(e,0.0,1.0,+c[A>>3],+c[i>>3],+c[f>>3]);if(r>=0.0&r<2.0)Zx(s,l,3,r,e,0);else r=2.0;n=A+16|0;a=+zW(e,0.0,r>1.0?1.0:r,+c[n>>3],+c[i>>3],+c[f>>3]);if(a>=0.0&a1.0?1.0:r,+c[i>>3],+c[A>>3],+c[n>>3]);if(a>=0.0&a1.0?1.0:r,+c[f>>3],+c[A>>3],+c[n>>3]);if(a>=0.0&a>3]-i))<=.005){A=+c[e+56>>3];A=!(A>=a)|!(A<=t)?-1.0:r;break e}break}default:{}}Zx(f,e,3,.5,l,s);n=(r+A)*.5;A=+zW(l,A,n,i,a,t);if(!(A>=0.0))A=+zW(s,n,r,i,a,t)}}while(0);h=o;return+A}function WW(e,A,r,i,a,t){e=e|0;A=+A;r=+r;i=+i;a=+a;t=+t;var n=0.0,f=0,l=0,s=0,o=0;o=h;h=h+144|0;l=o+80|0;s=o+16|0;f=o;e:do{if(!(A==r)){switch(YW(e,i)|0){case 0:{A=-1.0;break e}case 1:{if(+Q(+(+c[e+56>>3]-i))<=.005){A=+c[e+48>>3];A=!(A>=a)|!(A<=t)?-1.0:r;break e}break}default:{}}Zx(f,e,3,.5,l,s);n=(r+A)*.5;A=+WW(l,A,n,i,a,t);if(!(A>=0.0))A=+WW(s,n,r,i,a,t)}}while(0);h=o;return+A}function YW(e,A){e=e|0;A=+A;var r=0,i=0,a=0,t=0.0,n=0,f=0;t=+c[e+8>>3];a=tA&1;r=1;i=a;a=(a|0)==0&1;while(1){if((r|0)==4)break;t=+c[e+(r<<4)+8>>3];f=tA&1;n=a+((i|0)!=0&(f|0)!=(i|0)&1)|0;r=r+1|0;i=f;a=n}return a|0}function FW(e,A){e=e|0;A=+A;var r=0,i=0,a=0,t=0.0,n=0,f=0;t=+c[e>>3];a=tA&1;r=1;i=a;a=(a|0)==0&1;while(1){if((r|0)==4)break;t=+c[e+(r<<4)>>3];f=tA&1;n=a+((i|0)!=0&(f|0)!=(i|0)&1)|0;r=r+1|0;i=f;a=n}return a|0}function MW(e,A){e=e|0;A=A|0;var r=0,i=0,a=0.0;r=h;h=h+16|0;i=r;a=+c[e+8>>3];c[i>>3]=+c[e>>3];c[i+8>>3]=a;T4(A,88137,i)|0;h=r;return A|0}function VW(e){e=e|0;var A=0,r=0,i=0,n=0,f=0,l=0,s=0,c=0,o=0,u=0,b=0,w=0,k=0,g=0,m=0,p=0;p=h;h=h+16|0;k=p;m=4;g=Z2(40)|0;t[g>>2]=0;w=e+16|0;r=t[w>>2]|0;e:do{if(((a[r+238>>1]|0)-(a[r+236>>1]|0)|0)>=2){o=1;A=r;r=t[r+196>>2]|0;A:while(1){u=o+1|0;if(!(t[r+(u<<6)>>2]|0)){b=15;break}else c=0;while(1){f=t[r+(o<<6)>>2]|0;if((c|0)>=(f|0)){o=u;continue A}s=t[(t[r+(o<<6)+4>>2]|0)+(c<<2)>>2]|0;d=0;A=re(20,s|0)|0;i=d;d=0;if((i|0)!=0&(v|0)!=0){n=L6(t[i>>2]|0,g|0,m|0)|0;if(!n)aA(i|0,v|0);G=v}else n=-1;if((n|0)==1){A=G;break A}if(A<<24>>24){l=c;A=f;while(1){n=l+1|0;if((n|0)>=(A|0))break;d=0;A=ie(65,s|0,t[(t[r+(o<<6)+4>>2]|0)+(n<<2)>>2]|0)|0;r=d;d=0;if((r|0)!=0&(v|0)!=0){i=L6(t[r>>2]|0,g|0,m|0)|0;if(!i)aA(r|0,v|0);G=v}else i=-1;if((i|0)==1){A=G;break A}if(!(A<<24>>24))break;A=t[(t[w>>2]|0)+196>>2]|0;l=n;r=A;A=t[A+(o<<6)>>2]|0}if((n-c|0)>1){d=0;ke(6,e|0,o|0,c|0,l|0,1);A=d;d=0;if((A|0)!=0&(v|0)!=0){r=L6(t[A>>2]|0,g|0,m|0)|0;if(!r)aA(A|0,v|0);G=v}else r=-1;if((r|0)==1){A=G;break A}}}r=t[w>>2]|0;c=c+1|0;A=r;r=t[r+196>>2]|0}}A:do{if((b|0)==15){while(1){if((o|0)>0)c=0;else break;while(1){r=t[A+196>>2]|0;f=t[r+(o<<6)>>2]|0;if((c|0)>=(f|0))break;s=t[(t[r+(o<<6)+4>>2]|0)+(c<<2)>>2]|0;d=0;A=re(21,s|0)|0;i=d;d=0;if((i|0)!=0&(v|0)!=0){n=L6(t[i>>2]|0,g|0,m|0)|0;if(!n)aA(i|0,v|0);G=v}else n=-1;if((n|0)==1){A=G;break A}if(A<<24>>24){l=c;A=f;while(1){n=l+1|0;if((n|0)>=(A|0))break;d=0;A=ie(66,s|0,t[(t[r+(o<<6)+4>>2]|0)+(n<<2)>>2]|0)|0;r=d;d=0;if((r|0)!=0&(v|0)!=0){i=L6(t[r>>2]|0,g|0,m|0)|0;if(!i)aA(r|0,v|0);G=v}else i=-1;if((i|0)==1){A=G;break A}if(!(A<<24>>24))break;A=t[(t[w>>2]|0)+196>>2]|0;l=n;r=A;A=t[A+(o<<6)>>2]|0}if((n-c|0)>1){d=0;ke(6,e|0,o|0,c|0,l|0,0);A=d;d=0;if((A|0)!=0&(v|0)!=0){r=L6(t[A>>2]|0,g|0,m|0)|0;if(!r)aA(A|0,v|0);G=v}else r=-1;if((r|0)==1){A=G;break A}}}c=c+1|0;A=t[w>>2]|0}o=o+-1|0;b=15}g=G6(187016,1,g|0,m|0)|0;m=G;d=0;A=d;d=0;if((A|0)!=0&(v|0)!=0){r=L6(t[A>>2]|0,g|0,m|0)|0;if(!r)aA(A|0,v|0);G=v}else r=-1;if((r|0)==1)A=G;else A=0}}while(0);A:while(1){if(A){d=0;te(20,3,88177,k|0)|0;A=d;d=0;if((A|0)!=0&(v|0)!=0){r=L6(t[A>>2]|0,g|0,m|0)|0;if(!r)aA(A|0,v|0);G=v}else r=-1;if((r|0)==1){A=G;continue}else break}else i=1;while(1){A=t[w>>2]|0;if((i|0)>(t[A+180>>2]|0))break e;d=0;oe(101,t[(t[A+184>>2]|0)+(i<<2)>>2]|0);A=d;d=0;if((A|0)!=0&(v|0)!=0){r=L6(t[A>>2]|0,g|0,m|0)|0;if(!r)aA(A|0,v|0);G=v}else r=-1;if((r|0)==1){A=G;continue A}i=i+1|0}}}}while(0);G2(g|0);h=p;return}function NW(e){e=e|0;e=t[e+16>>2]|0;if(((i[e+156>>0]|0)==1?(t[e+176>>2]|0)==1:0)?(t[e+184>>2]|0)==1:0)e=(t[e+104>>2]|0)==0&1;else e=0;return e|0}function RW(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0,f=0,l=0;l=h;h=h+80|0;f=l+40|0;n=l;i=t[t[(t[e+16>>2]|0)+172>>2]>>2]|0;e=t[t[(t[A+16>>2]|0)+172>>2]>>2]|0;if(((NW(A)|0)<<24>>24!=0?(t[((t[i>>2]&3|0)==3?i:i+48|0)+40>>2]|0)==(t[((t[e>>2]&3|0)==3?e:e+48|0)+40>>2]|0):0)?(SW(i,e)|0)<<24>>24!=0:0){r=(t[e+16>>2]|0)+16|0;a=n;e=(t[i+16>>2]|0)+16|0;A=a+40|0;do{t[a>>2]=t[e>>2];a=a+4|0;e=e+4|0}while((a|0)<(A|0));a=f;e=r;A=a+40|0;do{t[a>>2]=t[e>>2];a=a+4|0;e=e+4|0}while((a|0)<(A|0));e=(pG(n,f)|0)==0&1}else e=0;h=l;return e|0}function xW(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;var n=0,f=0,l=0,s=0,c=0,o=0,u=0,b=0,h=0,w=0,k=0,d=0,v=0,g=0;g=e+16|0;k=t[(t[(t[(t[g>>2]|0)+196>>2]|0)+(A<<6)+4>>2]|0)+(r<<2)>>2]|0;w=r+1|0;u=(a|0)==1;b=k+16|0;o=w;while(1){if((o|0)>(i|0)){n=i;v=w;break}h=t[(t[(t[(t[g>>2]|0)+196>>2]|0)+(A<<6)+4>>2]|0)+(o<<2)>>2]|0;c=h+16|0;e:do{if(u)while(1){r=t[c>>2]|0;s=t[t[r+180>>2]>>2]|0;if(!s)break e;f=t[(t[b>>2]|0)+180>>2]|0;l=s+-48|0;a=0;while(1){r=t[f+(a<<2)>>2]|0;if(!r){d=8;break}if((t[((t[r>>2]&3|0)==2?r:r+-48|0)+40>>2]|0)==(t[((t[s>>2]&3|0)==2?s:l)+40>>2]|0))break;else a=a+1|0}if((d|0)==8){d=0;r=ZL(k,t[((t[s>>2]&3|0)==2?s:l)+40>>2]|0,s)|0}while(1){a=t[t[(t[c>>2]|0)+172>>2]>>2]|0;if(!a)break;FL(a,r);EL(a)}EL(s)}else while(1){r=t[c>>2]|0;s=t[t[r+172>>2]>>2]|0;if(!s)break e;f=t[(t[b>>2]|0)+172>>2]|0;l=s+48|0;a=0;while(1){r=t[f+(a<<2)>>2]|0;if(!r){d=17;break}if((t[((t[r>>2]&3|0)==3?r:r+48|0)+40>>2]|0)==(t[((t[s>>2]&3|0)==3?s:l)+40>>2]|0))break;else a=a+1|0}if((d|0)==17){d=0;r=ZL(t[((t[s>>2]&3|0)==3?s:l)+40>>2]|0,k,s)|0}while(1){a=t[t[(t[c>>2]|0)+180>>2]>>2]|0;if(!a)break;FL(a,r);EL(a)}EL(s)}}while(0);if((t[r+176>>2]|0)!=(0-(t[r+184>>2]|0)|0)){d=23;break}QL(e,h);o=o+1|0}if((d|0)==23)ge(88313,88357,115,88364);while(1){n=n+1|0;r=t[(t[g>>2]|0)+196>>2]|0;a=r+(A<<6)|0;if((n|0)>=(t[a>>2]|0))break;i=t[r+(A<<6)+4>>2]|0;d=t[i+(n<<2)>>2]|0;t[i+(v<<2)>>2]=d;t[(t[d+16>>2]|0)+236>>2]=v;v=v+1|0}t[a>>2]=v;t[(t[r+(A<<6)+4>>2]|0)+(v<<2)>>2]=0;return}function JW(e){e=e|0;e=t[e+16>>2]|0;if(((i[e+156>>0]|0)==1?(t[e+184>>2]|0)==1:0)?(t[e+176>>2]|0)==1:0)e=(t[e+104>>2]|0)==0&1;else e=0;return e|0}function HW(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0,f=0,l=0;l=h;h=h+80|0;f=l+40|0;n=l;i=t[t[(t[e+16>>2]|0)+180>>2]>>2]|0;e=t[t[(t[A+16>>2]|0)+180>>2]>>2]|0;if(((JW(A)|0)<<24>>24!=0?(t[((t[i>>2]&3|0)==2?i:i+-48|0)+40>>2]|0)==(t[((t[e>>2]&3|0)==2?e:e+-48|0)+40>>2]|0):0)?(SW(i,e)|0)<<24>>24!=0:0){r=(t[e+16>>2]|0)+56|0;a=n;e=(t[i+16>>2]|0)+56|0;A=a+40|0;do{t[a>>2]=t[e>>2];a=a+4|0;e=e+4|0}while((a|0)<(A|0));a=f;e=r;A=a+40|0;do{t[a>>2]=t[e>>2];a=a+4|0;e=e+4|0}while((a|0)<(A|0));e=(pG(n,f)|0)==0&1}else e=0;h=l;return e|0}function PW(e){e=e|0;var A=0,r=0,n=0,f=0,l=0,s=0,c=0,o=0,u=0,b=0,w=0,k=0,d=0;d=h;h=h+32|0;w=d+16|0;b=d;o=e+16|0;r=t[o>>2]|0;A=a[r+236>>1]|0;while(1){if((A|0)>(a[r+238>>1]|0))break;t[(t[r+268>>2]|0)+(A<<2)>>2]=0;A=A+1|0;r=t[o>>2]|0}FD(e);s=sd(e)|0;while(1){if(!s)break;XW(e,s);l=Ow(e,s)|0;while(1){if(!l)break;else r=l;while(1){A=t[(t[r+16>>2]|0)+172>>2]|0;if(!A)break;else r=A}f=l+-48|0;while(1){A=r+-48|0;n=t[((t[r>>2]&3|0)==2?r:A)+40>>2]|0;if((t[(t[n+16>>2]|0)+232>>2]|0)>=(t[(t[(t[((t[l>>2]&3|0)==2?l:f)+40>>2]|0)+16>>2]|0)+232>>2]|0))break;XW(e,n);r=t[t[(t[(t[((t[r>>2]&3|0)==2?r:A)+40>>2]|0)+16>>2]|0)+180>>2]>>2]|0}l=qw(e,l)|0}s=cd(e,s)|0}A=t[o>>2]|0;l=a[A+236>>1]|0;while(1){if((l|0)>(a[A+238>>1]|0)){c=1;u=A;break}A=t[(t[A+268>>2]|0)+(l<<2)>>2]|0;s=t[(t[(t[(mG(e)|0)+16>>2]|0)+196>>2]|0)+(l<<6)+4>>2]|0;r=A+16|0;if((t[s+(t[(t[r>>2]|0)+236>>2]<<2)>>2]|0)!=(A|0)){k=17;break}f=t[(t[(t[(mG(e)|0)+16>>2]|0)+196>>2]|0)+(l<<6)+4>>2]|0;A=t[o>>2]|0;r=t[A+196>>2]|0;t[r+(l<<6)+4>>2]=f+(t[(t[(t[(t[A+268>>2]|0)+(l<<2)>>2]|0)+16>>2]|0)+236>>2]<<2);A=-1;f=0;e:while(1){if((f|0)>=(t[r+(l<<6)>>2]|0))break;r=t[(t[r+(l<<6)+4>>2]|0)+(f<<2)>>2]|0;if(!r)break;n=t[r+16>>2]|0;A:do{if(!(i[n+156>>0]|0))if(!(Wd(e,r)|0))break e;else A=f;else{r=t[t[n+172>>2]>>2]|0;while(1){if(!r)break A;n=t[(t[r+16>>2]|0)+116>>2]|0;if(!n)break;else r=n}if(Wd(e,t[((t[r>>2]&3|0)==3?r:r+48|0)+40>>2]|0)|0){s=(Wd(e,t[((t[r>>2]&3|0)==2?r:r+-48|0)+40>>2]|0)|0)==0;A=s?A:f}}}while(0);f=f+1|0;r=t[(t[o>>2]|0)+196>>2]|0}if((A|0)==-1){t[w>>2]=Mk(e)|0;t[w+4>>2]=l;nw(0,88277,w)|0}s=t[o>>2]|0;t[(t[s+196>>2]|0)+(l<<6)>>2]=A+1;l=l+1|0;A=s}if((k|0)==17){w=Mk(A)|0;k=t[(t[r>>2]|0)+236>>2]|0;t[b>>2]=w;t[b+4>>2]=k;t[b+8>>2]=l;nw(1,88219,b)|0;aA(187016,1)}while(1){if((c|0)>(t[u+180>>2]|0))break;PW(t[(t[u+184>>2]|0)+(c<<2)>>2]|0);c=c+1|0;u=t[o>>2]|0}h=d;return}function XW(e,A){e=e|0;A=A|0;var r=0,i=0;r=t[A+16>>2]|0;e=(t[(t[e+16>>2]|0)+268>>2]|0)+(t[r+232>>2]<<2)|0;i=t[e>>2]|0;if(!((i|0)!=0?(t[(t[i+16>>2]|0)+236>>2]|0)<=(t[r+236>>2]|0):0))t[e>>2]=A;return}function SW(e,A){e=e|0;A=A|0;var r=0,a=0;while(1){a=t[e+16>>2]|0;if(!(i[a+112>>0]|0))break;e=t[a+116>>2]|0}while(1){r=t[A+16>>2]|0;if(!(i[r+112>>0]|0))break;A=t[r+116>>2]|0}if((i[a+153>>0]|0)==0?(i[r+153>>0]|0)==0:0){a=t[A>>2]&3;r=t[e>>2]&3;e=(P((t[(t[(t[((r|0)==3?e:e+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(t[(t[(t[((r|0)==2?e:e+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)|0,(t[(t[(t[((a|0)==3?A:A+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(t[(t[(t[((a|0)==2?A:A+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)|0)|0)>0&1}else e=0;return e|0}function jW(e,A){e=e|0;A=A|0;var r=0,a=0,n=0,f=0,l=0,s=0,c=0;c=h;h=h+544|0;s=c+528|0;UW(s,c+512|0,c);r=(i[193770]|0)+1<<24>>24;i[193770]=r<<24>>24==0?1:r;r=t[e+16>>2]|0;t[r+220>>2]=0;t[r+232>>2]=0;r=(A|0)>0;A=sd(e)|0;while(1){if(!A)break;if(r?(f=t[A+16>>2]|0,l=t[f+212>>2]|0,(l|0)!=0):0){n=t[(t[(t[l+16>>2]|0)+268>>2]|0)+(t[f+232>>2]<<2)>>2]|0;a=7}else a=6;if((a|0)==6?(a=0,(A|0)==(Ex(A)|0)):0){n=A;a=7}if((a|0)==7?(0,(i[(t[n+16>>2]|0)+157>>0]|0)!=(i[193770]|0)):0){TW(e);OW(s,e,n);_W(e)}A=cd(e,A)|0}qW(s);h=c;return}function UW(e,A,r){e=e|0;A=A|0;r=r|0;t[A>>2]=r;t[A+4>>2]=r+512;t[A+12>>2]=0;t[A+8>>2]=0;t[e>>2]=A;t[e+4>>2]=A;t[e+8>>2]=r;return}function TW(e){e=e|0;t[(t[e+16>>2]|0)+192>>2]=0;t[46793]=0;return}function OW(e,A,r){e=e|0;A=A|0;r=r|0;var a=0,n=0,f=0,l=0,s=0,c=0,o=0,u=0,b=0,w=0,k=0;k=h;h=h+32|0;w=k;KW(e,r);c=w+8|0;o=w+16|0;u=w+24|0;e:while(1){b=$W(e)|0;if(!b)break;r=b+16|0;if((i[(t[r>>2]|0)+157>>0]|0)==(i[193770]|0))continue;eY(A,b);f=t[r>>2]|0;n=f+180|0;s=t[n+4>>2]|0;l=w;t[l>>2]=t[n>>2];t[l+4>>2]=s;l=f+172|0;s=t[l+4>>2]|0;n=c;t[n>>2]=t[l>>2];t[n+4>>2]=s;n=f+188|0;s=t[n+4>>2]|0;l=o;t[l>>2]=t[n>>2];t[l+4>>2]=s;f=f+196|0;l=t[f+4>>2]|0;s=u;t[s>>2]=t[f>>2];t[s+4>>2]=l;s=3;while(1){if((s|0)<=-1)continue e;r=t[w+(s<<3)>>2]|0;A:do{if(r|0){l=(t[w+(s<<3)+4>>2]|0)+-1|0;f=r+(l<<2)|0;while(1){if((l|0)<=-1)break A;a=t[f>>2]|0;n=t[a>>2]&3;r=t[((n|0)==2?a:a+-48|0)+40>>2]|0;if((r|0)==(b|0))r=t[((n|0)==3?a:a+48|0)+40>>2]|0;if((i[(t[r+16>>2]|0)+157>>0]|0)!=(i[193770]|0)?(r|0)==(Ex(r)|0):0)KW(e,r);f=f+-4|0;l=l+-1|0}}}while(0);s=s+-1|0}}h=k;return}function _W(e){e=e|0;var A=0,r=0,i=0,a=0;r=e+16|0;A=t[r>>2]|0;a=A+220|0;i=t[a>>2]|0;e=i+1|0;t[a>>2]=e;A=t[A+216>>2]|0;if(!A)e=$F(e<<2)|0;else e=AM(A,e<<2)|0;a=t[r>>2]|0;t[a+216>>2]=e;t[e+(i<<2)>>2]=t[a+192>>2];return}function qW(e){e=e|0;var A=0;e=t[(t[e>>2]|0)+12>>2]|0;while(1){if(!e)break;A=t[e+12>>2]|0;G2(t[e>>2]|0);G2(e);e=A}return}function KW(e,A){e=e|0;A=A|0;var r=0,a=0,f=0,l=0,s=0,c=0;c=h;h=h+16|0;f=c+8|0;a=c;s=e+8|0;r=t[s>>2]|0;l=e+4|0;e=t[l>>2]|0;if((r|0)==(t[e+4>>2]|0)){r=t[e+12>>2]|0;if(!r){r=KF(16)|0;if(!r)nw(1,98969,a)|0;t[r+8>>2]=t[l>>2];t[r+12>>2]=0;e=KF(4e6)|0;t[r>>2]=e;if(!e){nw(1,88377,f)|0;e=t[r>>2]|0}t[r+4>>2]=e+4e6;t[(t[l>>2]|0)+12>>2]=r}t[l>>2]=r;r=t[r>>2]|0;t[s>>2]=r}i[(t[A+16>>2]|0)+157>>0]=(n[193770]|0)+1;t[s>>2]=r+4;t[r>>2]=A;h=c;return}function $W(e){e=e|0;var A=0,r=0,i=0,a=0,n=0;a=e+8|0;A=t[a>>2]|0;r=e+4|0;i=t[r>>2]|0;if((A|0)==(t[i>>2]|0))if((i|0)==(t[e>>2]|0))A=0;else{A=t[i+8>>2]|0;t[r>>2]=A;A=t[A+4>>2]|0;t[a>>2]=A;n=4}else n=4;if((n|0)==4){A=A+-4|0;t[a>>2]=A;A=t[A>>2]|0}return A|0}function eY(e,A){e=e|0;A=A|0;var r=0,a=0,n=0;a=t[e+16>>2]|0;n=a+232|0;t[n>>2]=(t[n>>2]|0)+1;n=t[A+16>>2]|0;i[n+157>>0]=i[193770]|0;e=t[46793]|0;r=n+168|0;if(!e){t[r>>2]=0;t[a+192>>2]=A}else{t[r>>2]=e;t[(t[e+16>>2]|0)+164>>2]=A}t[46793]=A;t[n+164>>2]=0;return}function AY(e){e=e|0;var A=0,r=0,a=0,n=0,f=0,l=0,s=0,o=0,u=0,b=0.0,h=0.0;u=e+16|0;A=(t[u>>2]|0)+192|0;while(1){A=t[A>>2]|0;if(!A)break;n=A+16|0;A=t[n>>2]|0;r=t[A+188>>2]|0;e:do{if(!r)a=0;else{a=0;while(1){r=t[r+(a<<2)>>2]|0;if(!r){a=0;break e}rY(r);A=t[n>>2]|0;a=a+1|0;r=t[A+188>>2]|0}}}while(0);while(1){if((a|0)>=(t[A+208>>2]|0))break;r=t[(t[A+204>>2]|0)+(a<<2)>>2]|0;o=t[r>>2]&3;if((t[(t[(t[((o|0)==2?r:r+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)==(t[(t[(t[((o|0)==3?r:r+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)){rY(r);A=t[n>>2]|0}a=a+1|0}A=A+164|0}o=t[u>>2]|0;A=t[o+196>>2]|0;if(!((t[A+56>>2]|0)==0?(t[o+180>>2]|0)<=0:0))f=13;e:do{if((f|0)==13){f=t[A+4>>2]|0;n=0;A:while(1){A=t[f+(n<<2)>>2]|0;if(!A)break e;r=t[(t[A+16>>2]|0)+196>>2]|0;A=0;while(1){a=t[r+(A<<2)>>2]|0;if(!a)break;o=t[a+16>>2]|0;if(t[o+96>>2]|0?(i[o+113>>0]|0)==0:0)break A;A=A+1|0}n=n+1|0}iY(e)}}while(0);UQ(e);r=0;A=(t[u>>2]|0)+192|0;while(1){A=t[A>>2]|0;if(!A)break;o=A+16|0;A=t[o>>2]|0;a=t[A+188>>2]|0;e:do{if(a){s=0;while(1){n=t[a+(s<<2)>>2]|0;if(!n){s=0;break}f=t[n+16>>2]|0;l=t[f+96>>2]|0;do{if(l)if(!(i[f+113>>0]|0)){aY(n);a=t[o>>2]|0;r=1;A=a;a=t[a+188>>2]|0;break}else{c[f+136>>3]=+c[((t[(t[u>>2]|0)+116>>2]&1|0)==0?l+24|0:l+32|0)>>3];break}}while(0);s=s+1|0}while(1){if((s|0)>=(t[A+208>>2]|0))break e;f=t[(t[A+204>>2]|0)+(s<<2)>>2]|0;l=t[f>>2]&3;n=t[((l|0)==3?f:f+48|0)+40>>2]|0;l=t[((l|0)==2?f:f+-48|0)+40>>2]|0;do{if(!((n|0)==(l|0)?1:(t[(t[n+16>>2]|0)+232>>2]|0)!=(t[(t[l+16>>2]|0)+232>>2]|0))){a=f;do{l=t[a+16>>2]|0;a=t[l+172>>2]|0}while((a|0)!=0);a=i[l+113>>0]|0;n=t[f+16>>2]|0;i[n+113>>0]=a;n=t[n+96>>2]|0;if(n)if(!(a<<24>>24)){aY(f);r=1;A=t[o>>2]|0;break}else{h=+c[((t[(t[u>>2]|0)+116>>2]&1|0)==0?n+24|0:n+32|0)>>3];l=l+136|0;b=+c[l>>3];c[l>>3]=h>b?h:b;break}}}while(0);s=s+1|0}}}while(0);A=A+164|0}if(r|0){xL(e);eQ(e)}return r|0}function rY(e){e=e|0;var A=0,r=0,a=0,n=0,f=0,l=0;A=t[e>>2]&3;l=t[((A|0)==3?e:e+48|0)+40>>2]|0;a=l+16|0;n=t[(t[a>>2]|0)+236>>2]|0;A=t[(t[(t[((A|0)==2?e:e+-48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0;f=(n|0)<(A|0);r=f?A:n;l=t[(t[(mG(l)|0)+16>>2]|0)+196>>2]|0;a=l+(t[(t[a>>2]|0)+232>>2]<<6)+4|0;A=f?n:A;e:while(1){A=A+1|0;if((A|0)>=(r|0))break;n=t[(t[(t[a>>2]|0)+(A<<2)>>2]|0)+16>>2]|0;switch(i[n+156>>0]|0){case 0:break e;case 1:break;default:continue e}if(t[n+104>>2]|0)break}if((A|0)==(r|0))do{l=t[e+16>>2]|0;i[l+113>>0]=1;e=t[l+172>>2]|0}while((e|0)!=0);return}function iY(e){e=e|0;var A=0,r=0,i=0,n=0;n=e+16|0;e=t[n>>2]|0;if(a[e+236>>1]|0)ge(88434,88417,190,88453);A=(a[e+238>>1]|0)+3|0;e=t[e+196>>2]|0;if(!e)e=$F(A<<6)|0;else e=AM(e,A<<6)|0;A=e+64|0;e=t[n>>2]|0;t[e+196>>2]=A;e=a[e+238>>1]|0;while(1){if((e|0)<=-1)break;i=e+-1|0;r=A+(e<<6)|0;e=A+(i<<6)|0;A=r+64|0;do{t[r>>2]=t[e>>2];r=r+4|0;e=e+4|0}while((r|0)<(A|0));e=i;A=t[(t[n>>2]|0)+196>>2]|0}t[A+(e<<6)+8>>2]=0;t[A+(e<<6)>>2]=0;r=KF(8)|0;n=t[n>>2]|0;i=t[n+196>>2]|0;t[i+(e<<6)+12>>2]=r;t[i+(e<<6)+4>>2]=r;t[i+(e<<6)+56>>2]=0;c[i+(e<<6)+24>>3]=1.0;c[i+(e<<6)+16>>3]=1.0;c[i+(e<<6)+40>>3]=1.0;c[i+(e<<6)+32>>3]=1.0;n=n+236|0;a[n>>1]=(a[n>>1]|0)+-1<<16>>16;return}function aY(e){e=e|0;var A=0,r=0,a=0.0,n=0,f=0,l=0,s=0,o=0,u=0,b=0,h=0,w=0.0,k=0.0,d=0.0;l=e+16|0;if(t[(t[l>>2]|0)+96>>2]|0){u=e+48|0;s=mG(t[((t[e>>2]&3|0)==3?e:u)+40>>2]|0)|0;A=t[(t[(t[((t[e>>2]&3|0)==3?e:u)+40>>2]|0)+16>>2]|0)+232>>2]|0;o=YJ(s,e)|0;b=s+16|0;r=t[b>>2]|0;n=t[r+196>>2]|0;h=A+-1|0;f=t[t[n+(h<<6)+4>>2]>>2]|0;if(!f)a=+c[n+(A<<6)+24>>3]+ +c[(t[(t[t[n+(A<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3]+ +(t[r+252>>2]|0);else a=+c[(t[f+16>>2]|0)+24>>3]-+c[n+(h<<6)+16>>3];A=FJ(s,h,o)|0;s=t[(t[l>>2]|0)+96>>2]|0;k=+c[s+24>>3];w=+c[s+32>>3];l=(t[(t[b>>2]|0)+116>>2]&1|0)==0;d=l?w:k;n=A+16|0;r=t[n>>2]|0;c[r+80>>3]=d;o=~~(d*.5);w=(l?k:w)*.5;c[r+96>>3]=w;c[r+88>>3]=w;t[r+104>>2]=s;c[r+24>>3]=+(o+~~a|0);r=ZL(A,t[((t[e>>2]&3|0)==3?e:u)+40>>2]|0,e)|0;r=t[r+16>>2]|0;c[r+16>>3]=-+c[(t[n>>2]|0)+88>>3];c[r+56>>3]=+c[(t[(t[((t[e>>2]&3|0)==3?e:u)+40>>2]|0)+16>>2]|0)+96>>3];i[r+112>>0]=4;r=e+-48|0;A=ZL(A,t[((t[e>>2]&3|0)==2?e:r)+40>>2]|0,e)|0;n=t[n>>2]|0;A=t[A+16>>2]|0;c[A+16>>3]=+c[n+96>>3];c[A+56>>3]=+c[(t[(t[((t[e>>2]&3|0)==2?e:r)+40>>2]|0)+16>>2]|0)+88>>3];i[A+112>>0]=4;A=t[(t[b>>2]|0)+196>>2]|0;r=A+(h<<6)+16|0;a=+(o|0);if(+c[r>>3]>3]=a;A=A+(h<<6)+24|0;if(+c[A>>3]>3]=a;t[n+112>>2]=e}return}function tY(e,A,r){e=e|0;A=A|0;r=r|0;var n=0,l=0,s=0,o=0.0,u=0,b=0,w=0,k=0,d=0,v=0,g=0,m=0,p=0,E=0,B=0,y=0,C=0,I=0;I=h;h=h+160|0;y=I+24|0;E=I+20|0;p=I+16|0;b=I;w=I+32|0;B=t[e+152>>2]|0;t[y>>2]=0;t[E>>2]=0;t[p>>2]=0;C=eB(e)|0;t[C+4>>2]=3;t[C+8>>2]=A;t[C+12>>2]=9;g=A+16|0;u=t[(t[g>>2]|0)+96>>2]|0;if((u|0?(i[u+82>>0]|0)==0:0)?(px(Hw(A,100105)|0,0)|0)<<24>>24:0){u=C+260|0;a[u>>1]=a[u>>1]|512}if(r|0?t[(t[g>>2]|0)+8>>2]|0:0)ii(e,r);r=t[47206]|0;if((r|0?(n=Pw(A,r)|0,n|0):0)?i[n>>0]|0:0)ui(e,+wx(A,t[47206]|0,1.0,0.0));do{if(B&16777216|0){r=A+48|0;if((f[(t[(Bd(t[((t[A>>2]&3|0)==3?A:r)+40>>2]|0)|0)+16>>2]|0)+178>>1]|0)>2){o=+c[(t[(t[(t[((t[A>>2]&3|0)==3?A:r)+40>>2]|0)+16>>2]|0)+132>>2]|0)+16>>3]*72.0;c[C+176>>3]=+(~~(o+(o>=0.0?.5:-.5))|0);o=+c[(t[(t[(t[((t[A>>2]&3|0)==2?A:A+-48|0)+40>>2]|0)+16>>2]|0)+132>>2]|0)+16>>3]*72.0;c[C+184>>3]=+(~~(o+(o>=0.0?.5:-.5))|0);break}else{u=C+176|0;t[u>>2]=0;t[u+4>>2]=0;t[u+8>>2]=0;t[u+12>>2]=0;break}}}while(0);if(B&32768|0){u=t[g>>2]|0;r=t[u+96>>2]|0;if(!r)r=t[C+192>>2]|0;else{r=t[r>>2]|0;t[C+192>>2]=r}n=C+196|0;t[n>>2]=r;s=C+204|0;t[s>>2]=r;l=C+200|0;t[l>>2]=r;r=t[u+108>>2]|0;if(r|0)t[n>>2]=t[r>>2];r=t[u+104>>2]|0;if(r|0)t[l>>2]=t[r>>2];r=t[u+100>>2]|0;if(r|0)t[s>>2]=t[r>>2]}if(!(B&65536))l=0;else{cw(b,128,w);t[C+212>>2]=UF(iB(e,A,b)|0,A)|0;hw(b);r=Hw(A,141055)|0;if((r|0)!=0?(i[r>>0]|0)!=0:0)k=31;else{r=Hw(A,111477)|0;if((r|0)!=0?(i[r>>0]|0)!=0:0)k=31;else n=0}if((k|0)==31)n=UF(r,A)|0;r=Hw(A,100118)|0;if((r|0)!=0?(i[r>>0]|0)!=0:0)k=36;else k=34;do{if((k|0)==34){r=Hw(A,100127)|0;if(r|0?i[r>>0]|0:0){k=36;break}if(n|0){r=o3(n)|0;k=39}}}while(0);if((k|0)==36){r=UF(r,A)|0;k=39}if((k|0)==39)t[C+208>>2]=r;r=Hw(A,100135)|0;if((r|0)!=0?(i[r>>0]|0)!=0:0)k=44;else k=42;do{if((k|0)==42){r=Hw(A,100145)|0;if(r|0?i[r>>0]|0:0){k=44;break}if(n|0){r=o3(n)|0;k=47}}}while(0);if((k|0)==44){r=UF(r,A)|0;k=47}if((k|0)==47)t[C+216>>2]=r;r=Hw(A,100154)|0;if((r|0)!=0?(i[r>>0]|0)!=0:0)k=52;else k=50;do{if((k|0)==50){r=Hw(A,100163)|0;if(r|0?i[r>>0]|0:0){k=52;break}if(n|0)t[C+220>>2]=o3(n)|0}}while(0);if((k|0)==52){t[C+220>>2]=UF(r,A)|0;k=C+260|0;a[k>>1]=a[k>>1]|128}r=Hw(A,100171)|0;if((r|0)!=0?(i[r>>0]|0)!=0:0)k=59;else k=57;do{if((k|0)==57){r=Hw(A,100180)|0;if(r|0?i[r>>0]|0:0){k=59;break}if(n|0)t[C+224>>2]=o3(n)|0}}while(0);if((k|0)==59){t[C+224>>2]=UF(r,A)|0;k=C+260|0;a[k>>1]=a[k>>1]|256}l=n}do{if(B&8388608){r=Hw(A,141088)|0;if((r|0)!=0?(i[r>>0]|0)!=0:0)n=UF(r,A)|0;else n=0;r=Hw(A,100188)|0;if((r|0)!=0?(i[r>>0]|0)!=0:0){k=C+260|0;a[k>>1]=a[k>>1]|64;r=UF(r,A)|0;k=72}else k=70;if((k|0)==70?n|0:0){r=o3(n)|0;k=72}if((k|0)==72)t[C+244>>2]=r;r=Hw(A,100199)|0;if((r|0)!=0?(i[r>>0]|0)!=0:0){r=UF(r,A)|0;k=78}else k=76;if((k|0)==76?n|0:0){r=o3(n)|0;k=78}if((k|0)==78)t[C+248>>2]=r;r=Hw(A,100211)|0;if((r|0)!=0?(i[r>>0]|0)!=0:0){t[C+252>>2]=UF(r,A)|0;w=C+260|0;a[w>>1]=a[w>>1]|16}else k=82;if((k|0)==82?n|0:0)t[C+252>>2]=o3(n)|0;r=Hw(A,100222)|0;if(r|0?i[r>>0]|0:0){k=C+260|0;a[k>>1]=a[k>>1]|32;t[C+256>>2]=UF(r,A)|0;break}if(n)t[C+256>>2]=o3(n)|0;else n=0}else n=0}while(0);do{if(B&4194304|0){r=Hw(A,141101)|0;if((r|0)!=0?(i[r>>0]|0)!=0:0)k=94;else k=92;do{if((k|0)==92){r=Hw(A,100233)|0;if(r|0?i[r>>0]|0:0){k=94;break}r=t[C+192>>2]|0;if(r|0)t[C+228>>2]=o3(r)|0}}while(0);if((k|0)==94){w=IY(r,A)|0;t[C+228>>2]=UF(w,A)|0;G2(w);w=C+260|0;a[w>>1]=a[w>>1]|1}r=Hw(A,100245)|0;if((r|0)!=0?(i[r>>0]|0)!=0:0){w=IY(r,A)|0;t[C+232>>2]=UF(w,A)|0;G2(w);w=C+260|0;a[w>>1]=a[w>>1]|8}else k=100;if((k|0)==100?(d=t[C+192>>2]|0,d|0):0)t[C+232>>2]=o3(d)|0;r=Hw(A,100258)|0;if((r|0)!=0?(i[r>>0]|0)!=0:0){d=IY(r,A)|0;t[C+236>>2]=UF(d,A)|0;G2(d);d=C+260|0;a[d>>1]=a[d>>1]|2}else k=105;if((k|0)==105?(v=t[C+200>>2]|0,v|0):0)t[C+236>>2]=o3(v)|0;r=Hw(A,100270)|0;if(r|0?i[r>>0]|0:0){v=IY(r,A)|0;t[C+240>>2]=UF(v,A)|0;G2(v);v=C+260|0;a[v>>1]=a[v>>1]|4;break}r=t[C+204>>2]|0;if(r|0)t[C+240>>2]=o3(r)|0}}while(0);G2(l);G2(n);do{if(B&4259840|0?(m=t[(t[g>>2]|0)+8>>2]|0,m|0):0){if(!(t[C+208>>2]|0)){if((B&524288|0)==0|(t[C+228>>2]|0)==0)break}else if(!(B&524288))break;o=+c[(t[e+16>>2]|0)+152>>3]*.5;o=o>2.0?o:2.0;n=t[m+4>>2]|0;r=0;while(1){if((r|0)>=(n|0))break;ZY(y,E,p,(t[m>>2]|0)+(r*48|0)|0,o);r=r+1|0}l=t[p>>2]|0;t[C+276>>2]=l;s=t[E>>2]|0;t[C+280>>2]=s;if(!(B&8192)){r=0;n=0;while(1){if((n|0)>=(l|0))break;r=(t[s+(n<<2)>>2]|0)+r|0;n=n+1|0}y=t[y>>2]|0;Dr(e,y,y,r)|0;r=y}else r=t[y>>2]|0;t[C+284>>2]=r;t[C+264>>2]=2;t[C+272>>2]=r;t[C+268>>2]=t[s>>2]}}while(0);jr(e,A);r=t[C+208>>2]|0;if(!((r|0)==0?!(a[C+260>>1]&1):0))Tr(e,r,t[C+228>>2]|0,t[C+244>>2]|0,t[C+212>>2]|0);h=I;return}function nY(e,A,r){e=e|0;A=A|0;r=r|0;var a=0,f=0,l=0,s=0,o=0,u=0,b=0,w=0,k=0,d=0,v=0,g=0.0,m=0,p=0,E=0,B=0,y=0,C=0,I=0,Z=0,G=0,L=0,Q=0,D=0,z=0,W=0,Y=0,F=0,M=0,V=0,N=0.0,R=0.0,x=0,J=0,H=0,P=0,X=0;J=h;h=h+240|0;V=J+224|0;M=J+208|0;B=J+128|0;E=J+112|0;x=J+64|0;G=J+48|0;L=J+32|0;Q=J+16|0;D=J;z=J+192|0;W=J+176|0;y=J+160|0;Z=J+144|0;t[Q>>2]=0;t[Q+4>>2]=0;t[Q+8>>2]=0;t[Q+12>>2]=0;N=+c[(t[e+16>>2]|0)+152>>3];Ca(Hw(A,100032)|0);F=A+16|0;e:do{if(t[(t[F>>2]|0)+8>>2]|0){R=+wx(A,t[47188]|0,1.0,0.0);s=dx(A,t[47176]|0,195059)|0;p=(r|0)!=0;A:do{if(p){a=r;while(1){f=a;a=a+4|0;f=t[f>>2]|0;if(!f){b=0;break A}if((i[f>>0]|0)!=116)continue;if(!(e1(f,111117)|0)){b=1;break}}}else b=0}while(0);l=s;k=0;f=0;A:while(1){switch(i[l>>0]|0){case 0:break A;case 58:{a=k+1|0;break}case 59:{a=k;f=f+1|0;break}default:a=k}l=l+1|0;k=a}u=(k|0)!=0;if((f|0)!=0&u)if(!(hY(e,A,r,s,k+1|0,R,N)|0))break;else o=137314;else o=s;a=n[(t[F>>2]|0)+115>>0]|0;if(!(a&1))if(!(a&2))if(!(a&8))if(!(a&4)){f=o;l=vx(A,t[47177]|0,o)|0}else{l=106296;a=106288;s=188712;f=188712;w=18}else{l=106280;a=106272;s=188712;f=188712;w=18}else{l=106264;a=106256;s=188712;f=188712;w=18}else{l=106248;a=106240;s=188712;f=188712;w=18}if((w|0)==18){f=t[f>>2]|0;f=vx(A,f,wY(o,a)|0)|0;a=vx(A,t[s>>2]|0,l)|0;if((f|0)==(o|0)){f=o;l=a}else{$r(e,f);l=a}}if((l|0)!=(o|0))Ai(e,l);if(b<<24>>24){f=(i[f>>0]|0)==0?137314:f;a=(i[l>>0]|0)==0?137314:l;$r(e,137379);Ai(e,f);m=x;d=t[t[(t[F>>2]|0)+8>>2]>>2]|0;v=m+48|0;do{t[m>>2]=t[d>>2];m=m+4|0;d=d+4|0}while((m|0)<(v|0));F=HR(x,kY(A)|0,N,0,0)|0;ti(e,t[F+8>>2]|0,t[F>>2]|0,1);dY(F);$r(e,f);if((a|0)!=(f|0))Ai(e,a);a=t[x+8>>2]|0;if(a|0){Y=x+16|0;F=t[x>>2]|0;t[M>>2]=t[Y>>2];t[M+4>>2]=t[Y+4>>2];t[M+8>>2]=t[Y+8>>2];t[M+12>>2]=t[Y+12>>2];t[V>>2]=t[F>>2];t[V+4>>2]=t[F+4>>2];t[V+8>>2]=t[F+8>>2];t[V+12>>2]=t[F+12>>2];qE(e,2,M,V,R,N,a)}a=t[x+12>>2]|0;if(!a)break;F=x+32|0;x=(t[x>>2]|0)+((t[x+4>>2]|0)+-1<<4)|0;t[M>>2]=t[F>>2];t[M+4>>2]=t[F+4>>2];t[M+8>>2]=t[F+8>>2];t[M+12>>2]=t[F+12>>2];t[V>>2]=t[x>>2];t[V+4>>2]=t[x+4>>2];t[V+8>>2]=t[x+8>>2];t[V+12>>2]=t[x+12>>2];qE(e,3,M,V,R,N,a);break}a=t[F>>2]|0;if(!u){do{if(!(i[a+115>>0]&3)){if(i[f>>0]|0){$r(e,f);Ai(e,l);break}$r(e,137314);if(!(i[l>>0]|0)){Ai(e,137314);break}else{Ai(e,l);break}}}while(0);s=e+152|0;o=x+4|0;u=x+8|0;b=x+12|0;w=x+32|0;k=x+16|0;l=0;while(1){a=t[(t[F>>2]|0)+8>>2]|0;if((l|0)>=(t[a+4>>2]|0))break e;m=x;d=(t[a>>2]|0)+(l*48|0)|0;v=m+48|0;do{t[m>>2]=t[d>>2];m=m+4|0;d=d+4|0}while((m|0)<(v|0));a=t[x>>2]|0;f=t[o>>2]|0;do{if(!(t[s>>2]&16384)){fi(e,a,f,0,0,0);a=t[u>>2]|0;if(a|0){Y=t[x>>2]|0;t[M>>2]=t[k>>2];t[M+4>>2]=t[k+4>>2];t[M+8>>2]=t[k+8>>2];t[M+12>>2]=t[k+12>>2];t[V>>2]=t[Y>>2];t[V+4>>2]=t[Y+4>>2];t[V+8>>2]=t[Y+8>>2];t[V+12>>2]=t[Y+12>>2];qE(e,2,M,V,R,N,a)}a=t[b>>2]|0;if(a|0){Y=(t[x>>2]|0)+((t[o>>2]|0)+-1<<4)|0;t[M>>2]=t[w>>2];t[M+4>>2]=t[w+4>>2];t[M+8>>2]=t[w+8>>2];t[M+12>>2]=t[w+12>>2];t[V>>2]=t[Y>>2];t[V+4>>2]=t[Y+4>>2];t[V+8>>2]=t[Y+8>>2];t[V+12>>2]=t[Y+12>>2];qE(e,3,M,V,R,N,a)}if((t[(t[(t[F>>2]|0)+8>>2]|0)+4>>2]|0)>1){if(!(t[u>>2]|0)){if(!(p&(t[b>>2]|0)!=0))break}else if(!p)break;ii(e,r)}}else fi(e,a,f,t[u>>2]|0,t[b>>2]|0,0)}while(0);l=l+1|0}}Y=t[(t[a+8>>2]|0)+4>>2]|0;I=Y*48|0;C=Z2(I)|0;I=Z2(I)|0;g=+(k+2|0)*.5;p=x+4|0;w=G+8|0;k=L+8|0;A=Q+8|0;r=D+8|0;b=0;while(1){if((b|0)>=(Y|0))break;m=x;d=(t[t[(t[F>>2]|0)+8>>2]>>2]|0)+(b*48|0)|0;v=m+48|0;do{t[m>>2]=t[d>>2];m=m+4|0;d=d+4|0}while((m|0)<(v|0));a=t[p>>2]|0;t[C+(b*48|0)+4>>2]=a;t[I+(b*48|0)+4>>2]=a;u=a<<4;o=Z2(u)|0;t[C+(b*48|0)>>2]=o;u=Z2(u)|0;t[I+(b*48|0)>>2]=u;s=t[x>>2]|0;t[D>>2]=t[s>>2];t[D+4>>2]=t[s+4>>2];t[D+8>>2]=t[s+8>>2];t[D+12>>2]=t[s+12>>2];s=0;while(1){if((s|0)>=(a+-1|0))break;t[G>>2]=t[D>>2];t[G+4>>2]=t[D+4>>2];t[G+8>>2]=t[D+8>>2];t[G+12>>2]=t[D+12>>2];a=s+1|0;l=(t[x>>2]|0)+(a<<4)|0;t[L>>2]=t[l>>2];t[L+4>>2]=t[l+4>>2];t[L+8>>2]=t[l+8>>2];t[L+12>>2]=t[l+12>>2];l=o+(s<<4)|0;if(!s){t[M>>2]=t[G>>2];t[M+4>>2]=t[G+4>>2];t[M+8>>2]=t[G+8>>2];t[M+12>>2]=t[G+12>>2];t[V>>2]=t[L>>2];t[V+4>>2]=t[L+4>>2];t[V+8>>2]=t[L+8>>2];t[V+12>>2]=t[L+12>>2];vY(z,M,V);t[l>>2]=t[z>>2];t[l+4>>2]=t[z+4>>2];t[l+8>>2]=t[z+8>>2];t[l+12>>2]=t[z+12>>2]}else{t[M>>2]=t[Q>>2];t[M+4>>2]=t[Q+4>>2];t[M+8>>2]=t[Q+8>>2];t[M+12>>2]=t[Q+12>>2];t[V>>2]=t[L>>2];t[V+4>>2]=t[L+4>>2];t[V+8>>2]=t[L+8>>2];t[V+12>>2]=t[L+12>>2];vY(W,M,V);t[l>>2]=t[W>>2];t[l+4>>2]=t[W+4>>2];t[l+8>>2]=t[W+8>>2];t[l+12>>2]=t[W+12>>2]}P=t[x>>2]|0;v=s+2|0;X=P+(v<<4)|0;t[Q>>2]=t[X>>2];t[Q+4>>2]=t[X+4>>2];t[Q+8>>2]=t[X+8>>2];t[Q+12>>2]=t[X+12>>2];m=s+3|0;P=P+(m<<4)|0;t[D>>2]=t[P>>2];t[D+4>>2]=t[P+4>>2];t[D+8>>2]=t[P+8>>2];t[D+12>>2]=t[P+12>>2];H=o+(a<<4)|0;d=o+(v<<4)|0;t[E>>2]=t[G>>2];t[E+4>>2]=t[G+4>>2];t[E+8>>2]=t[G+8>>2];t[E+12>>2]=t[G+12>>2];t[B>>2]=t[L>>2];t[B+4>>2]=t[L+4>>2];t[B+8>>2]=t[L+8>>2];t[B+12>>2]=t[L+12>>2];t[M>>2]=t[X>>2];t[M+4>>2]=t[X+4>>2];t[M+8>>2]=t[X+8>>2];t[M+12>>2]=t[X+12>>2];t[V>>2]=t[P>>2];t[V+4>>2]=t[P+4>>2];t[V+8>>2]=t[P+8>>2];t[V+12>>2]=t[P+12>>2];gY(y,E,B,M,V);t[d>>2]=t[y>>2];t[d+4>>2]=t[y+4>>2];t[d+8>>2]=t[y+8>>2];t[d+12>>2]=t[y+12>>2];t[H>>2]=t[y>>2];t[H+4>>2]=t[y+4>>2];t[H+8>>2]=t[y+8>>2];t[H+12>>2]=t[y+12>>2];c[u+(s<<4)>>3]=+c[G>>3]-+c[l>>3]*g;c[u+(s<<4)+8>>3]=+c[w>>3]-+c[o+(s<<4)+8>>3]*g;c[u+(a<<4)>>3]=+c[L>>3]-+c[H>>3]*g;c[u+(a<<4)+8>>3]=+c[k>>3]-+c[o+(a<<4)+8>>3]*g;c[u+(v<<4)>>3]=+c[Q>>3]-+c[d>>3]*g;c[u+(v<<4)+8>>3]=+c[A>>3]-+c[o+(v<<4)+8>>3]*g;s=m;a=t[p>>2]|0}X=o+(s<<4)|0;t[M>>2]=t[Q>>2];t[M+4>>2]=t[Q+4>>2];t[M+8>>2]=t[Q+8>>2];t[M+12>>2]=t[Q+12>>2];t[V>>2]=t[D>>2];t[V+4>>2]=t[D+4>>2];t[V+8>>2]=t[D+8>>2];t[V+12>>2]=t[D+12>>2];vY(Z,M,V);t[X>>2]=t[Z>>2];t[X+4>>2]=t[Z+4>>2];t[X+8>>2]=t[Z+8>>2];t[X+12>>2]=t[Z+12>>2];c[u+(s<<4)>>3]=+c[D>>3]-+c[X>>3]*g;c[u+(s<<4)+8>>3]=+c[r>>3]-+c[o+(s<<4)+8>>3]*g;b=b+1|0}v=o3(f)|0;r=0;d=f;a=f;l=f;f=v;while(1){f=l3(f,107984)|0;if(!f)break;A=(i[f>>0]|0)==0?137314:f;if((A|0)!=(l|0))if(!(i[(t[F>>2]|0)+115>>0]&3)){$r(e,A);Ai(e,A);l=A}else l=A;o=(r|0)==0;u=r>>>0<2;f=0;while(1){if((f|0)>=(Y|0))break;b=t[I+(f*48|0)>>2]|0;w=t[C+(f*48|0)>>2]|0;k=t[I+(f*48|0)+4>>2]|0;s=0;while(1){if((s|0)>=(k|0))break;X=b+(s<<4)|0;c[X>>3]=+c[X>>3]+ +c[w+(s<<4)>>3];X=b+(s<<4)+8|0;c[X>>3]=+c[X>>3]+ +c[w+(s<<4)+8>>3];s=s+1|0}fi(e,b,k,0,0,0);f=f+1|0}r=r+1|0;d=o?A:d;a=u?A:a;f=0}f=t[x+8>>2]|0;if(!f)f=0;else{if(a){if(!(i[(t[F>>2]|0)+115>>0]&3)){$r(e,a);Ai(e,a)}}else a=0;P=x+16|0;X=t[x>>2]|0;t[M>>2]=t[P>>2];t[M+4>>2]=t[P+4>>2];t[M+8>>2]=t[P+8>>2];t[M+12>>2]=t[P+12>>2];t[V>>2]=t[X>>2];t[V+4>>2]=t[X+4>>2];t[V+8>>2]=t[X+8>>2];t[V+12>>2]=t[X+12>>2];qE(e,2,M,V,R,N,f);f=a}l=x+12|0;a=t[l>>2]|0;if(a|0){if((f|0)!=(d|0)?(i[(t[F>>2]|0)+115>>0]&3)==0:0){$r(e,d);Ai(e,d);a=t[l>>2]|0}P=x+32|0;X=(t[x>>2]|0)+((t[p>>2]|0)+-1<<4)|0;t[M>>2]=t[P>>2];t[M+4>>2]=t[P+4>>2];t[M+8>>2]=t[P+8>>2];t[M+12>>2]=t[P+12>>2];t[V>>2]=t[X>>2];t[V+4>>2]=t[X+4>>2];t[V+8>>2]=t[X+8>>2];t[V+12>>2]=t[X+12>>2];qE(e,3,M,V,R,N,a)}G2(v);a=0;while(1){if((a|0)>=(Y|0))break;G2(t[C+(a*48|0)>>2]|0);G2(t[I+(a*48|0)>>2]|0);a=a+1|0}G2(C);G2(I)}}while(0);h=J;return}function fY(e){e=e|0;var A=0,r=0,i=0,n=0,f=0,l=0,s=0,c=0,o=0,u=0,b=0,w=0,k=0,d=0,v=0,g=0,m=0,p=0,E=0,B=0,y=0;B=h;h=h+64|0;d=B+48|0;m=B+32|0;g=B+16|0;v=B;E=t[e+16>>2]|0;p=t[E+8>>2]|0;k=E+208|0;if(!((t[k>>2]|0)==0?!(a[E+260>>1]&1):0))A=3;e:do{if((A|0)==3?(Or(e),w=E+276|0,r=t[w>>2]|0,r|0):0){f=E+280|0;A=t[f>>2]|0;l=E+268|0;s=E+284|0;c=E+272|0;o=E+228|0;u=E+244|0;b=E+212|0;i=t[A>>2]|0;n=1;while(1){if((n|0)>=(r|0))break e;t[l>>2]=t[A+(n<<2)>>2];t[c>>2]=(t[s>>2]|0)+(i<<4);Tr(e,t[k>>2]|0,t[o>>2]|0,t[u>>2]|0,t[b>>2]|0);Or(e);y=t[f>>2]|0;i=(t[y+(n<<2)>>2]|0)+i|0;n=n+1|0;r=t[w>>2]|0;A=y}}}while(0);t[E+268>>2]=0;t[E+272>>2]=0;k=p+16|0;A=t[k>>2]|0;r=t[A+8>>2]|0;if(!r)i=E+260|0;else{w=t[r>>2]|0;A=t[w>>2]|0;y=t[w+8>>2]|0;b=w+16|0;t[g>>2]=t[b>>2];t[g+4>>2]=t[b+4>>2];t[g+8>>2]=t[b+8>>2];t[g+12>>2]=t[b+12>>2];w=w+32|0;t[v>>2]=t[w>>2];t[v+4>>2]=t[w+4>>2];t[v+8>>2]=t[w+8>>2];t[v+12>>2]=t[w+12>>2];if(!y){t[m>>2]=t[A>>2];t[m+4>>2]=t[A+4>>2];t[m+8>>2]=t[A+8>>2];t[m+12>>2]=t[A+12>>2]}else{t[m>>2]=t[g>>2];t[m+4>>2]=t[g+4>>2];t[m+8>>2]=t[g+8>>2];t[m+12>>2]=t[g+12>>2]}i=E+260|0;w=a[i>>1]|0;b=t[E+220>>2]|0;t[d>>2]=t[m>>2];t[d+4>>2]=t[m+4>>2];t[d+8>>2]=t[m+8>>2];t[d+12>>2]=t[m+12>>2];lY(e,d,(w<<8&65535)<<16>>16>>15&255,b,(w<<14&65535)<<16>>16>>15&255);w=t[(t[k>>2]|0)+8>>2]|0;b=t[w>>2]|0;w=(t[w+4>>2]|0)+-1|0;A=t[b+(w*48|0)>>2]|0;r=t[b+(w*48|0)+4>>2]|0;y=t[b+(w*48|0)+12>>2]|0;u=b+(w*48|0)+16|0;t[g>>2]=t[u>>2];t[g+4>>2]=t[u+4>>2];t[g+8>>2]=t[u+8>>2];t[g+12>>2]=t[u+12>>2];g=b+(w*48|0)+32|0;t[v>>2]=t[g>>2];t[v+4>>2]=t[g+4>>2];t[v+8>>2]=t[g+8>>2];t[v+12>>2]=t[g+12>>2];if(!y){y=A+(r+-1<<4)|0;t[m>>2]=t[y>>2];t[m+4>>2]=t[y+4>>2];t[m+8>>2]=t[y+8>>2];t[m+12>>2]=t[y+12>>2]}else{t[m>>2]=t[v>>2];t[m+4>>2]=t[v+4>>2];t[m+8>>2]=t[v+8>>2];t[m+12>>2]=t[v+12>>2]}A=a[i>>1]|0;y=t[E+224>>2]|0;t[d>>2]=t[m>>2];t[d+4>>2]=t[m+4>>2];t[d+8>>2]=t[m+8>>2];t[d+12>>2]=t[m+12>>2];lY(e,d,(A<<7&65535)<<16>>16>>15&255,y,(A<<13&65535)<<16>>16>>15&255);A=t[k>>2]|0}r=t[A+96>>2]|0;n=(a[i>>1]<<12&65535)<<16>>16>>15<<16>>16;o=E+216|0;f=t[o>>2]|0;u=E+232|0;l=t[u>>2]|0;b=E+248|0;s=t[b>>2]|0;w=E+212|0;c=t[w>>2]|0;if(!((mx(dx(p,t[47186]|0,137308)|0)|0)<<24>>24))A=0;else A=t[(t[k>>2]|0)+8>>2]|0;sY(e,r,11,n,f,l,s,c,A);s=t[(t[k>>2]|0)+108>>2]|0;c=(a[i>>1]<<12&65535)<<16>>16>>15<<16>>16;l=t[o>>2]|0;f=t[u>>2]|0;r=t[b>>2]|0;n=t[w>>2]|0;if(!((mx(dx(p,t[47186]|0,137308)|0)|0)<<24>>24))A=0;else A=t[(t[k>>2]|0)+8>>2]|0;sY(e,s,11,c,l,f,r,n,A);sY(e,t[(t[k>>2]|0)+100>>2]|0,7,(a[i>>1]<<13&65535)<<16>>16>>15<<16>>16,t[E+224>>2]|0,t[E+240>>2]|0,t[E+256>>2]|0,t[w>>2]|0,0);sY(e,t[(t[k>>2]|0)+104>>2]|0,6,(a[i>>1]<<14&65535)<<16>>16>>15<<16>>16,t[E+220>>2]|0,t[E+236>>2]|0,t[E+252>>2]|0,t[w>>2]|0,0);Ur(e);AB(e);h=B;return}function lY(e,A,r,i,n){e=e|0;A=A|0;r=r|0;i=i|0;n=n|0;var f=0,l=0,s=0;s=h;h=h+16|0;f=s;l=t[e+16>>2]|0;if(!(r<<24>>24))i=t[l+208>>2]|0;if(!(n<<24>>24==0?(i|0)==0?(a[l+260>>1]&1)==0:0:0)){t[f>>2]=t[A>>2];t[f+4>>2]=t[A+4>>2];t[f+8>>2]=t[A+8>>2];t[f+12>>2]=t[A+12>>2];bY(e,f)}h=s;return}function sY(e,A,r,a,n,f,l,s,c){e=e|0;A=A|0;r=r|0;a=a|0;n=n|0;f=f|0;l=l|0;s=s|0;c=c|0;var o=0,u=0,b=0,w=0,k=0,d=0;d=h;h=h+16|0;b=d;k=t[e+152>>2]|0;if(A|0?i[A+81>>0]|0:0){if(!s)u=0;else{u=KF((U2(s)|0)+11|0)|0;switch(r|0){case 11:{o=108224;break}case 7:{o=101583;break}case 6:{o=101593;break}default:ge(138394,99906,2730,100044)}t[b>>2]=s;t[b+4>>2]=o;T4(u,100060,b)|0}b=e+16|0;s=(t[b>>2]|0)+12|0;w=t[s>>2]|0;t[s>>2]=r;s=(a|0)!=0|(n|0)!=0;o=(k&4|0)==0;if(s&o){cY(e,A);Tr(e,n,f,l,u)}jF(e,r,A);if(c|0)oY(e,A,c);if(s){if(!o){cY(e,A);Tr(e,n,f,l,u)}Or(e)}G2(u);t[(t[b>>2]|0)+12>>2]=w}h=d;return}function cY(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0,f=0,l=0;r=t[e+16>>2]|0;i=t[e+152>>2]|0;if(i&4259840|0){a=i&131072;f=a>>>16^2;t[r+264>>2]=f;l=r+268|0;t[l>>2]=f+2;f=r+272|0;G2(t[f>>2]|0);r=KF(t[l>>2]<<4)|0;t[f>>2]=r;f=A+56|0;l=A+24|0;c[r>>3]=+c[f>>3]-+c[l>>3]*.5;n=A+64|0;A=A+32|0;c[r+8>>3]=+c[n>>3]-+c[A>>3]*.5;c[r+16>>3]=+c[l>>3]*.5+ +c[f>>3];c[r+24>>3]=+c[A>>3]*.5+ +c[n>>3];if(!(i&8192))Dr(e,r,r,2)|0;if(!a)IF(r)}return}function oY(e,A,r){e=e|0;A=A|0;r=r|0;var a=0,n=0,f=0,l=0,s=0,o=0,u=0,b=0,w=0.0;b=h;h=h+96|0;n=b+80|0;f=b+32|0;l=b+16|0;s=b;a=t[A>>2]|0;while(1){o=i[a>>0]|0;if(!(o<<24>>24))break;if(!(I1(o&255)|0)){u=4;break}else a=a+1|0}if((u|0)==4){w=+c[A+24>>3];o=A+56|0;uY(f,+c[o>>3]+w*.5,+c[A+64>>3]-+c[A+32>>3]*.5);u=f+16|0;uY(l,+c[f>>3]-w,+c[f+8>>3]);t[u>>2]=t[l>>2];t[u+4>>2]=t[l+4>>2];t[u+8>>2]=t[l+8>>2];t[u+12>>2]=t[l+12>>2];u=f+32|0;t[n>>2]=t[o>>2];t[n+4>>2]=t[o+4>>2];t[n+8>>2]=t[o+8>>2];t[n+12>>2]=t[o+12>>2];Wx(s,r,n);t[u>>2]=t[s>>2];t[u+4>>2]=t[s+4>>2];t[u+8>>2]=t[s+8>>2];t[u+12>>2]=t[s+12>>2];ii(e,t[(t[e>>2]|0)+336>>2]|0);$r(e,t[A+8>>2]|0);li(e,f,3)}h=b;return}function uY(e,A,r){e=e|0;A=+A;r=+r;c[e>>3]=A;c[e+8>>3]=r;return}function bY(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0.0,f=0.0,l=0,s=0;r=t[e+16>>2]|0;i=t[e+152>>2]|0;if(i&4259840|0){a=i&131072;l=a>>>16^2;t[r+264>>2]=l;s=r+268|0;t[s>>2]=l+2;l=r+272|0;G2(t[l>>2]|0);r=KF(t[s>>2]<<4)|0;t[l>>2]=r;f=+c[A>>3];c[r>>3]=f+-3.0;n=+c[A+8>>3];c[r+8>>3]=n+-3.0;c[r+16>>3]=f+3.0;c[r+24>>3]=n+3.0;if(!(i&8192))Dr(e,r,r,2)|0;if(!a)IF(r)}return}function hY(e,A,r,i,a,n,f){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;n=+n;f=+f;var l=0,c=0,o=0.0,u=0.0,b=0,w=0,k=0,d=0,v=0,g=0,m=0,p=0,E=0,B=0,y=0,C=0,I=0,Z=0,G=0,L=0,Q=0,D=0,z=0,W=0,Y=0,F=0;F=h;h=h+256|0;L=F+224|0;G=F+208|0;l=F+192|0;D=F+144|0;z=F+96|0;W=F+48|0;Q=F;c=F+240|0;i=nB(i,a,c)|0;if((i|0)>1){C=A+48|0;I=Bd(t[((t[A>>2]&3|0)==3?A:C)+40>>2]|0)|0;C=Mk(t[((t[A>>2]&3|0)==3?A:C)+40>>2]|0)|0;I=(Bk(I)|0)!=0;Z=Mk(t[((t[A>>2]&3|0)==2?A:A+-48|0)+40>>2]|0)|0;t[l>>2]=C;t[l+4>>2]=I?100079:100084;t[l+8>>2]=Z;nw(3,100089,l)|0;if((i|0)==2)i=1;else Y=4}else if((i|0)==1)i=1;else Y=4;if((Y|0)==4){Z=A+16|0;d=t[c>>2]|0;v=d+8|0;g=W+4|0;m=D+8|0;p=D+12|0;E=(r|0)!=0;k=(r|0)==0;B=D+32|0;y=D+4|0;C=D+16|0;I=Q+4|0;i=0;w=0;while(1){a=t[(t[Z>>2]|0)+8>>2]|0;if((w|0)>=(t[a+4>>2]|0))break;l=D;a=(t[a>>2]|0)+(w*48|0)|0;A=l+48|0;do{t[l>>2]=t[a>>2];l=l+4|0;a=a+4|0}while((l|0)<(A|0));A=1;o=1.0;b=t[v>>2]|0;e:while(1){a=t[b>>2]|0;if(!a)break;c=b+4|0;u=+s[c>>2];do{if(u<1.0e-05&u>-1.0e-05)a=A;else{$r(e,a);u=+s[c>>2];o=o-u;i=t[b>>2]|0;if(A|0){yY(D,u,W,Q);c=t[W>>2]|0;fi(e,c,t[g>>2]|0,0,0,0);G2(c);if(o<1.0e-05&o>-1.0e-05){Y=11;break e}else{a=0;break}}if(o<1.0e-05&o>-1.0e-05){Y=13;break e}l=z;a=Q;A=l+48|0;do{t[l>>2]=t[a>>2];l=l+4|0;a=a+4|0}while((l|0)<(A|0));u=+s[c>>2];yY(z,u/(o+u),W,Q);G2(t[z>>2]|0);a=t[W>>2]|0;fi(e,a,t[g>>2]|0,0,0,0);G2(a);a=0}}while(0);A=a;b=b+12|0}if((Y|0)==11){Y=0;G2(t[Q>>2]|0)}else if((Y|0)==13){Y=0;b=t[Q>>2]|0;fi(e,b,t[I>>2]|0,0,0,0);G2(b)}if(t[m>>2]|0){$r(e,t[t[v>>2]>>2]|0);Ai(e,t[t[v>>2]>>2]|0);c=t[D>>2]|0;b=t[m>>2]|0;t[G>>2]=t[C>>2];t[G+4>>2]=t[C+4>>2];t[G+8>>2]=t[C+8>>2];t[G+12>>2]=t[C+12>>2];t[L>>2]=t[c>>2];t[L+4>>2]=t[c+4>>2];t[L+8>>2]=t[c+8>>2];t[L+12>>2]=t[c+12>>2];qE(e,2,G,L,n,f,b)}if(t[p>>2]|0){$r(e,i);Ai(e,i);c=(t[D>>2]|0)+((t[y>>2]|0)+-1<<4)|0;b=t[p>>2]|0;t[G>>2]=t[B>>2];t[G+4>>2]=t[B+4>>2];t[G+8>>2]=t[B+8>>2];t[G+12>>2]=t[B+12>>2];t[L>>2]=t[c>>2];t[L+4>>2]=t[c+4>>2];t[L+8>>2]=t[c+8>>2];t[L+12>>2]=t[c+12>>2];qE(e,3,G,L,n,f,b)}do{if((t[(t[(t[Z>>2]|0)+8>>2]|0)+4>>2]|0)>1){if(!(t[m>>2]|0)){if(!(E&(t[p>>2]|0)!=0))break}else if(k)break;ii(e,r)}}while(0);w=w+1|0}fB(d);i=0}h=F;return i|0}function wY(e,A){e=e|0;A=A|0;var r=0,a=0;r=1;e:while(1){switch(i[e>>0]|0){case 0:break e;case 58:{r=r+1|0;break}default:{}}e=e+1|0}a=P((U2(A)|0)+1|0,r)|0;e=a+10|0;if((t[47121]|0)<(a|0)){t[47121]=e;e=Q2(t[47122]|0,e)|0;t[47122]=e}else e=t[47122]|0;$1(e,A)|0;while(1){r=r+-1|0;e=t[47122]|0;if(!r)break;a=e+(U2(e)|0)|0;i[a>>0]=58;i[a+1>>0]=0;b3(e,A)|0}return e|0}function kY(e){e=e|0;var A=0,r=0;A=t[47184]|0;e:do{if(!A)r=7;else{A=Pw(e,A)|0;switch(i[A>>0]|0){case 110:if(!(e1(A,135709)|0)){A=1;break e}else{r=7;break e}case 102:if(!(e1(A,100066)|0)){A=2;break e}else{r=7;break e}case 98:{if(!(e1(A,100074)|0)){A=3;break e}if(!(e1(A,111221)|0)){A=4;break e}else{r=7;break e}}default:{r=7;break e}}}}while(0);if((r|0)==7){A=(Bk(Bd(t[((t[e>>2]&3|0)==2?e:e+-48|0)+40>>2]|0)|0)|0)!=0;A=A?2:1}return A|0}function dY(e){e=e|0;if(e|0){G2(t[e+8>>2]|0);G2(e)}return}function vY(e,A,r){e=e|0;A=A|0;r=r|0;var i=0.0,a=0.0,t=0.0;a=+c[A>>3]-+c[r>>3];t=+c[A+8>>3]-+c[r+8>>3];i=2.0/+D(+(a*a+.0001+t*t));c[e>>3]=i*t;c[e+8>>3]=-(a*i);return}function gY(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;var t=0.0,n=0.0,f=0.0,l=0.0;n=+c[r>>3]-+c[i>>3];f=+c[r+8>>3]-+c[i+8>>3];t=+D(+(f*f+n*n));if(t<.0001){l=+c[A>>3]-+c[a>>3];t=+c[A+8>>3]-+c[a+8>>3];f=t;n=l;t=+D(+(l*l+.0001+t*t))}l=2.0/t;c[e>>3]=f*l;c[e+8>>3]=-(l*n);return}function mY(e,A,r){e=+e;A=+A;r=+r;return+(r*.5*(1.0-e/A))}function pY(e,A,r){e=+e;A=+A;r=+r;return+(r*.5)}function EY(e,A,r){e=+e;A=+A;r=+r;return+(r*.5*(e/A))}function BY(e,A,r){e=+e;A=+A;r=+r;A=e/A;return+((!(A<=.5)?1.0-A:A)*r)}function yY(e,A,r,i){e=e|0;A=+A;r=r|0;i=i|0;var a=0.0,n=0,f=0,l=0,s=0,o=0,u=0,b=0,w=0,k=0.0,d=0,v=0;w=h;h=h+16|0;b=w;u=t[e+4>>2]|0;l=(u+-1|0)/3|0;if((u+-4|0)>>>0<3){t[r+4>>2]=4;t[r>>2]=KF(64)|0;t[i+4>>2]=4;u=KF(64)|0;t[i>>2]=u;Zx(b,t[e>>2]|0,3,A,t[r>>2]|0,u)}else{u=KF(l<<3)|0;n=0;f=t[e>>2]|0;a=0.0;while(1){if((n|0)>=(l|0))break;k=+CY(f);c[u+(n<<3)>>3]=k;n=n+1|0;f=f+48|0;a=k+a}A=a*A;o=0;a=0.0;while(1){if((l|0)<=(o|0))break;a=+c[u+(o<<3)>>3]+a;if(a>=A)break;o=o+1|0}s=o*3|0;n=s+4|0;f=r+4|0;t[f>>2]=n;t[r>>2]=KF(n<<4)|0;n=((l-o|0)*3|0)+1|0;l=i+4|0;t[l>>2]=n;t[i>>2]=KF(n<<4)|0;n=0;while(1){if((n|0)>=(t[f>>2]|0))break;d=(t[r>>2]|0)+(n<<4)|0;v=(t[e>>2]|0)+(n<<4)|0;t[d>>2]=t[v>>2];t[d+4>>2]=t[v+4>>2];t[d+8>>2]=t[v+8>>2];t[d+12>>2]=t[v+12>>2];n=n+1|0}n=n+-4|0;f=0;while(1){if((f|0)>=(t[l>>2]|0))break;v=(t[i>>2]|0)+(f<<4)|0;d=(t[e>>2]|0)+(n<<4)|0;t[v>>2]=t[d>>2];t[v+4>>2]=t[d+4>>2];t[v+8>>2]=t[d+8>>2];t[v+12>>2]=t[d+12>>2];n=n+1|0;f=f+1|0}k=+c[u+(o<<3)>>3];Zx(b,(t[e>>2]|0)+(s<<4)|0,3,(A-a+k)/k,(t[r>>2]|0)+(s<<4)|0,t[i>>2]|0);G2(u)}h=w;return}function CY(e){e=e|0;var A=0.0,r=0.0,i=0.0,a=0.0,t=0.0;a=+c[e+16>>3];i=+c[e>>3]-a;t=+c[e+24>>3];A=+c[e+8>>3]-t;i=+D(+(A*A+i*i));A=+c[e+32>>3];a=a-A;r=+c[e+40>>3];t=t-r;i=+D(+(t*t+a*a))+i;A=A-+c[e+48>>3];r=r-+c[e+56>>3];return+(i+ +D(+(r*r+A*A)))}function IY(e,A){e=e|0;A=A|0;A=yd(A)|0;if((i[(t[A+16>>2]|0)+115>>0]|0)==1)A=pJ(e)|0;else A=vJ(e,A)|0;return WY(A)|0}function ZY(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=+a;var n=0,f=0,l=0,s=0,c=0,o=0,u=0,b=0,w=0,k=0,d=0,v=0;k=h;h=h+1664|0;o=k+1600|0;u=k+800|0;b=k;w=$F(24)|0;t[w+16>>2]=1;s=((t[i+4>>2]|0)+-1|0)/3|0;f=0;l=w;while(1){if((f|0)>=(s|0))break;c=f*3|0;n=0;while(1){if((n|0)==4)break;d=o+(n<<4)|0;v=(t[i>>2]|0)+(n+c<<4)|0;t[d>>2]=t[v>>2];t[d+4>>2]=t[v+4>>2];t[d+8>>2]=t[v+8>>2];t[d+12>>2]=t[v+12>>2];n=n+1|0}f=f+1|0;l=GY(o,l)|0}n=0;f=0;l=w;while(1){if(!l){f=w;n=w;break}s=t[l+16>>2]|0;c=u+(n<<4)|0;i=b+(n<<4)|0;LY(f,l,s,c,i,a);n=n+1|0;if(!((n|0)==50|(s|0)==0)){f=l;l=s;continue}QY(e,A,r,n,u,b);t[u>>2]=t[c>>2];t[u+4>>2]=t[c+4>>2];t[u+8>>2]=t[c+8>>2];t[u+12>>2]=t[c+12>>2];t[b>>2]=t[i>>2];t[b+4>>2]=t[i+4>>2];t[b+8>>2]=t[i+8>>2];t[b+12>>2]=t[i+12>>2];f=l;n=1;l=s}while(1){if(!f)break;v=t[f+16>>2]|0;G2(n);f=v;n=v}h=k;return}function GY(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0;n=h;h=h+144|0;a=n+128|0;r=n+64|0;i=n;if(!(uB(e)|0)){Zx(a,e,3,.5,r,i);r=GY(i,GY(r,A)|0)|0}else{r=A+16|0;if((t[r>>2]|0)==1){t[r>>2]=0;t[A>>2]=t[e>>2];t[A+4>>2]=t[e+4>>2];t[A+8>>2]=t[e+8>>2];t[A+12>>2]=t[e+12>>2]}r=e+48|0;t[a>>2]=t[r>>2];t[a+4>>2]=t[r+4>>2];t[a+8>>2]=t[r+8>>2];t[a+12>>2]=t[r+12>>2];r=zY(a,A)|0}h=n;return r|0}function LY(e,A,r,i,a,n){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;n=+n;var f=0.0,l=0.0,s=0,o=0,u=0,b=0,w=0,k=0,d=0,v=0.0,g=0.0;d=h;h=h+96|0;u=d+80|0;o=d+64|0;s=d+48|0;b=d+32|0;w=d+16|0;k=d;t[b>>2]=t[A>>2];t[b+4>>2]=t[A+4>>2];t[b+8>>2]=t[A+8>>2];t[b+12>>2]=t[A+12>>2];do{if(e){t[w>>2]=t[e>>2];t[w+4>>2]=t[e+4>>2];t[w+8>>2]=t[e+8>>2];t[w+12>>2]=t[e+12>>2];if(!r){f=+c[b>>3];c[k>>3]=f*2.0-+c[w>>3];l=+c[b+8>>3];c[k+8>>3]=l*2.0-+c[w+8>>3];break}else{t[k>>2]=t[r>>2];t[k+4>>2]=t[r+4>>2];t[k+8>>2]=t[r+8>>2];t[k+12>>2]=t[r+12>>2];f=+c[b>>3];l=+c[b+8>>3];break}}else{t[k>>2]=t[r>>2];t[k+4>>2]=t[r+4>>2];t[k+8>>2]=t[r+8>>2];t[k+12>>2]=t[r+12>>2];f=+c[b>>3];c[w>>3]=f*2.0-+c[k>>3];l=+c[b+8>>3];c[w+8>>3]=l*2.0-+c[k+8>>3]}}while(0);t[s>>2]=t[w>>2];t[s+4>>2]=t[w+4>>2];t[s+8>>2]=t[w+8>>2];t[s+12>>2]=t[w+12>>2];t[o>>2]=t[b>>2];t[o+4>>2]=t[b+4>>2];t[o+8>>2]=t[b+8>>2];t[o+12>>2]=t[b+12>>2];t[u>>2]=t[k>>2];t[u+4>>2]=t[k+4>>2];t[u+8>>2]=t[k+8>>2];t[u+12>>2]=t[k+12>>2];g=+DY(s,o,u);v=+W(+g)*n;n=+Y(+g)*n;c[i>>3]=f+v;c[i+8>>3]=l+n;c[a>>3]=f-v;c[a+8>>3]=l-n;h=d;return}function QY(e,A,r,i,a,n){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;n=n|0;var f=0,l=0,s=0,c=0,o=0;l=i<<1;s=t[r>>2]|0;f=0;c=0;while(1){if((f|0)>=(s|0))break;o=(t[(t[A>>2]|0)+(f<<2)>>2]|0)+c|0;f=f+1|0;c=o}o=s+1|0;t[r>>2]=o;o=AM(t[A>>2]|0,o<<2)|0;t[A>>2]=o;t[o+(f<<2)>>2]=l;t[e>>2]=AM(t[e>>2]|0,c+l<<4)|0;A=l+-1+c|0;f=0;while(1){if((f|0)>=(i|0))break;o=(t[e>>2]|0)+(f+c<<4)|0;s=a+(f<<4)|0;t[o>>2]=t[s>>2];t[o+4>>2]=t[s+4>>2];t[o+8>>2]=t[s+8>>2];t[o+12>>2]=t[s+12>>2];o=(t[e>>2]|0)+(A-f<<4)|0;s=n+(f<<4)|0;t[o>>2]=t[s>>2];t[o+4>>2]=t[s+4>>2];t[o+8>>2]=t[s+8>>2];t[o+12>>2]=t[s+12>>2];f=f+1|0}return}function DY(e,A,r){e=e|0;A=A|0;r=r|0;var i=0.0,a=0.0,t=0.0;t=+c[A+8>>3];i=+c[A>>3];a=+R(+(+c[r+8>>3]-t),+(+c[r>>3]-i));i=+R(+(+c[e+8>>3]-t),+(+c[e>>3]-i));a=a-i;return+((a>0.0?a+-6.283185307179586:a)*.5+i)}function zY(e,A){e=e|0;A=A|0;var r=0;r=$F(24)|0;t[r+16>>2]=0;t[r>>2]=t[e>>2];t[r+4>>2]=t[e+4>>2];t[r+8>>2]=t[e+8>>2];t[r+12>>2]=t[e+12>>2];t[A+16>>2]=r;return r|0}function WY(e){e=e|0;var A=0,r=0,a=0,t=0,n=0;A=e;t=e;e:while(1){a=0;while(1){r=A;A=A+1|0;r=i[r>>0]|0;if(!(r<<24>>24))break e;if(a<<24>>24){n=5;break}if(r<<24>>24!=92)break;else a=1}A:do{if((n|0)==5){n=0;switch(r<<24>>24|0){case 114:{r=13;break A}case 108:case 110:{r=10;break A}default:break A}}}while(0);i[t>>0]=r;t=t+1|0}i[t>>0]=0;return e|0}function YY(e,A){e=e|0;A=A|0;var r=0,a=0,n=0,f=0,l=0;r=t[e>>2]|0;while(1){n=i[r>>0]|0;if(!(n<<24>>24)){a=0;break}a=n<<24>>24;if(!(n<<24>>24==44|(I1(a)|0)!=0)){f=5;break}r=r+1|0}e:do{if((f|0)==5){switch(a|0){case 0:{a=0;break e}case 41:case 40:{r=r+1|0;break e}default:{}}f=A+4|0;l=A+8|0;while(1){if((FY(n<<24>>24)|0)<<24>>24){a=1;break e}a=t[f>>2]|0;if(a>>>0>=(t[l>>2]|0)>>>0){ow(A,1)|0;a=t[f>>2]|0}t[f>>2]=a+1;i[a>>0]=n;a=r+1|0;r=a;n=i[a>>0]|0}}}while(0);t[e>>2]=r;return a|0}function FY(e){e=e|0;switch(e|0){case 0:case 44:case 41:case 40:{e=1;break}default:e=0}return e|0}function MY(e,A){e=e|0;A=A|0;return VY(t[e>>2]|0,t[e+160>>2]|0,t[e+156>>2]|0,A)|0}function VY(e,A,r,a){e=e|0;A=A|0;r=r|0;a=a|0;var n=0,f=0,l=0,s=0,c=0,o=0,u=0,b=0;b=h;h=h+160|0;c=b+20|0;o=b+16|0;u=b;t[c>>2]=0;t[o>>2]=0;cw(u,128,b+24|0);bw(u,a)|0;n=u+4|0;a=t[n>>2]|0;if(a>>>0>=(t[u+8>>2]|0)>>>0){ow(u,1)|0;a=t[n>>2]|0}i[a>>0]=0;f=t[u>>2]|0;t[n>>2]=f;l=e+300|0;s=e+296|0;a=0;n=f;e:while(1){if(a){a=1;break}a=c3(n,t[l>>2]|0,c)|0;if(!a){a=0;break}n=c3(a,t[s>>2]|0,o)|0;f=(n|0)!=0;if(f)a=c3(0,t[s>>2]|0,o)|0;else a=0;switch(((a|0)!=0&1)+(f&1)&3){case 2:{n=NY(e,n,0)|0;a=NY(e,a,r)|0;f=(n|0)>(a|0);a=(a&n|0)>-1&(((f?n:a)|0)>=(A|0)&((f?a:n)|0)<=(A|0));n=0;continue e}case 1:{a=(NY(e,n,A)|0)==(A|0);n=0;continue e}default:{a=0;n=0;continue e}}}hw(u);h=b;return a|0}function NY(e,A,r){e=e|0;A=A|0;r=r|0;var a=0,n=0,f=0;f=i[A>>0]|0;if(!(f<<24>>24==97?(e1(A,100396)|0)==0:0))a=3;e:do{if((a|0)==3){if((RY(A)|0)<<24>>24){r=K3(A)|0;break}n=t[e+308>>2]|0;if(!n)r=-1;else{e=t[e+312>>2]|0;r=1;while(1){if((r|0)>(e|0)){r=-1;break e}a=t[n+(r<<2)>>2]|0;if(f<<24>>24==(i[a>>0]|0)?(e1(A,a)|0)==0:0)break e;r=r+1|0}}}}while(0);return r|0}function RY(e){e=e|0;var A=0;while(1){A=i[e>>0]|0;if(!(A<<24>>24)){e=1;break}if(((A&255)+-48|0)>>>0<10)e=e+1|0;else{e=0;break}}return e|0}function xY(e,A){e=e|0;A=A|0;if((+c[e+16>>3]>=+c[A>>3]?+c[A+16>>3]>=+c[e>>3]:0)?+c[e+24>>3]>=+c[A+8>>3]:0)e=+c[A+24>>3]>=+c[e+8>>3]&1;else e=0;return e|0}function JY(e,A,r){e=e|0;A=A|0;r=r|0;var a=0,n=0;e:do{if((t[e+156>>2]|0)>=2?(a=dx(r,t[47167]|0,195059)|0,(MY(e,a)|0)<<24>>24==0):0)if(!(i[a>>0]|0))if(!(ek(A,r)|0))a=1;else{a=ek(A,r)|0;while(1){if(!a){a=0;break e}n=dx(a,t[47190]|0,195059)|0;if(!(i[n>>0]|0)){a=1;break e}if((MY(e,n)|0)<<24>>24){a=1;break e}a=Ak(A,a,r)|0}}else a=0;else a=1}while(0);return a|0}function HY(e,A){e=e|0;A=A|0;var r=0,i=0,a=0;r=h;h=h+64|0;i=r+32|0;a=r;e=(t[e+16>>2]|0)+48|0;t[a>>2]=t[e>>2];t[a+4>>2]=t[e+4>>2];t[a+8>>2]=t[e+8>>2];t[a+12>>2]=t[e+12>>2];t[a+16>>2]=t[e+16>>2];t[a+20>>2]=t[e+20>>2];t[a+24>>2]=t[e+24>>2];t[a+28>>2]=t[e+28>>2];t[i>>2]=t[A>>2];t[i+4>>2]=t[A+4>>2];t[i+8>>2]=t[A+8>>2];t[i+12>>2]=t[A+12>>2];t[i+16>>2]=t[A+16>>2];t[i+20>>2]=t[A+20>>2];t[i+24>>2]=t[A+24>>2];t[i+28>>2]=t[A+28>>2];A=(xY(a,i)|0)&255;h=r;return A|0}function PY(e,A){e=e|0;A=A|0;var r=0.0,i=0,n=0,l=0,s=0,o=0,u=0,b=0,h=0,w=0,k=0.0,d=0,v=0,g=0,m=0.0,p=0.0;d=t[e+152>>2]|0;v=eB(e)|0;t[v+4>>2]=2;t[v+8>>2]=A;t[v+12>>2]=8;if(d&16777216|0){if((f[(t[(Bd(A)|0)+16>>2]|0)+178>>1]|0)>2){r=+c[(t[(t[A+16>>2]|0)+132>>2]|0)+16>>3]*72.0;r=+(~~(r+(r>=0.0?.5:-.5))|0)}else r=0.0;c[v+168>>3]=r}s=A+16|0;SY(e,t[(t[s>>2]|0)+104>>2]|0,A);do{if(d&4259840|0){if((t[v+208>>2]|0)==0?(a[v+260>>1]&1)==0:0)break;w=oN(A)|0;o=t[s>>2]|0;r=+c[o+16>>3];k=+c[o+24>>3];o=jY(A)|0;e:do{if((w|2|0)==3){b=t[(t[s>>2]|0)+12>>2]|0;if(!((UY(b)|0)<<24>>24))i=0;else i=(t[b+4>>2]|o|0)!=0;if(!((d&524288|0)==0|((b|0)==0|i))){n=b+8|0;h=t[n>>2]|0;h=(h|0)<3?1:h;l=b+4|0;u=t[l>>2]|0;u=(u|0)>1?u:1;w=t[b+44>>2]|0;i=Hw(A,102705)|0;if(!i)i=0;else i=K3(i)|0;i=(i+-4|0)>>>0>56?20:i;if(!(t[l>>2]|o)){t[v+264>>2]=0;n=KF(32)|0;i=t[s>>2]|0;p=+c[i+88>>3];c[n>>3]=r-p;m=+c[i+80>>3]*.5;c[n+8>>3]=k-m;c[n+16>>3]=p+r;c[n+24>>3]=m+k;i=2;break}n=t[n>>2]|0;if(((n|0)<3?+c[b+32>>3]==0.0:0)?+c[b+24>>3]==0.0:0){n=v+264|0;if(t[b>>2]|0){t[n>>2]=1;n=KF(32)|0;c[n>>3]=r;c[n+8>>3]=k;i=(u<<1)+-1|0;c[n+16>>3]=+c[w+(i<<4)>>3]+r;c[n+24>>3]=+c[w+(i<<4)+8>>3]+k;i=2;break}t[n>>2]=2;n=(u<<1)+-1|0;n=TY(+c[w+(n<<4)>>3],+c[w+(n<<4)+8>>3],i)|0;l=0;while(1){if((l|0)>=(i|0))break e;w=n+(l<<4)|0;c[w>>3]=+c[w>>3]+r;w=n+(l<<4)+8|0;c[w>>3]=+c[w>>3]+k;l=l+1|0}}u=P(n,u+-1|0)|0;t[v+264>>2]=2;if((n|0)<(i|0)){n=KF(h<<4)|0;i=0;while(1){if((i|0)>=(h|0)){i=h;break e}b=i+u|0;c[n+(i<<4)>>3]=+c[w+(b<<4)>>3]+r;c[n+(i<<4)+8>>3]=+c[w+(b<<4)+8>>3]+k;i=i+1|0}}else{o=(n|0)/(i|0)|0;n=KF(i<<4)|0;l=0;s=0;while(1){if((l|0)>=(i|0))break e;h=s+u|0;c[n+(l<<4)>>3]=+c[w+(h<<4)>>3]+r;c[n+(l<<4)+8>>3]=+c[w+(h<<4)+8>>3]+k;l=l+1|0;s=s+o|0}}}else g=31}else g=31}while(0);if((g|0)==31){t[v+264>>2]=0;n=KF(32)|0;i=t[s>>2]|0;c[n>>3]=r-+c[i+88>>3];p=+c[i+80>>3]*.5;c[n+8>>3]=k-p;c[n+16>>3]=+c[i+96>>3]+r;c[n+24>>3]=p+k;i=2}if(!(d&8192))Dr(e,n,n,i)|0;t[v+272>>2]=n;t[v+268>>2]=i}}while(0);Ca(Hw(A,100032)|0);Xr(e,A);return}function XY(e){e=e|0;Sr(e);AB(e);return}function SY(e,A,r){e=e|0;A=A|0;r=r|0;var a=0,n=0,f=0,l=0,s=0,c=0,o=0;o=h;h=h+144|0;s=o;a=Hw(r,141055)|0;l=Hw(r,141101)|0;c=Hw(r,141088)|0;cw(s,128,o+16|0);if(!A)f=0;else f=t[A>>2]|0;if(!((a|0)!=0?(i[a>>0]|0)!=0:0))a=Hw(r,111477)|0;n=iB(e,r,s)|0;if(!l)A=0;else A=IY(l,r)|0;rB(e,f,a,A,c,n,r)|0;G2(A);hw(s);h=o;return}function jY(e){e=e|0;var A=0,r=0;e=vx(e,t[47157]|0,195059)|0;e:do{if(!(i[e>>0]|0))e=0;else{JB(e)|0;e=0;A=188228;while(1){r=t[A>>2]|0;if(!r)break e;r=(e1(r,111101)|0)==0;e=r?1:e;A=A+4|0}}}while(0);return e|0}function UY(e){e=e|0;var A=0.0;if(((t[e+8>>2]|0)==4?(A=+c[e+16>>3],((~~(A+(A>=0.0?.5:-.5))|0)%90|0|0)==0):0)?+c[e+24>>3]==0.0:0)e=+c[e+32>>3]==0.0&1;else e=0;return e|0}function TY(e,A,r){e=+e;A=+A;r=r|0;var i=0.0,a=0,t=0.0,n=0;t=6.283185307179586/+(r|0);n=KF(r<<4)|0;i=0.0;a=0;while(1){if((a|0)>=(r|0))break;c[n+(a<<4)>>3]=+W(+i)*e;c[n+(a<<4)+8>>3]=+Y(+i)*A;i=i+t;a=a+1|0}return n|0}function OY(e,A){e=e|0;A=A|0;var r=0;e:do{if((t[e+156>>2]|0)>=2?(r=dx(A,zw(A,0,101510,0)|0,195059)|0,(MY(e,r)|0)<<24>>24==0):0)if(!(i[r>>0]|0)){r=sd(A)|0;while(1){if(!r){r=0;break e}if((JY(e,A,r)|0)<<24>>24){r=1;break e}r=cd(A,r)|0}}else r=0;else r=1}while(0);return r|0}function _Y(e,A){e=e|0;A=A|0;var r=0;r=eB(e)|0;t[r+4>>2]=1;t[r+8>>2]=A;t[r+12>>2]=1;SY(e,t[(t[A+16>>2]|0)+12>>2]|0,A);Nr(e,A);return}function qY(e,A){e=e|0;A=A|0;var r=0,a=0,n=0,f=0;e=Hw(e,141082)|0;e:do{if((e|0)!=0?(i[e>>0]|0)!=0:0){JB(e)|0;r=188228;e=0;while(1){while(1){a=t[r>>2]|0;if(!a){r=188228;break e}if(!(e1(a,111101)|0)){n=10;break}if(!(e1(a,106334)|0)){a=r;n=12;break}if(!(e1(a,106341)|0)){a=r;n=14;break}if(!(e1(a,106316)|0)){a=r;n=16;break}r=r+4|0}if((n|0)==10){r=r+4|0;e=e|1;continue}else if((n|0)==12){while(1){f=a;a=a+4|0;n=t[a>>2]|0;t[f>>2]=n;if(!n)break;else n=12}e=e|3;continue}else if((n|0)==14){while(1){n=a;a=a+4|0;f=t[a>>2]|0;t[n>>2]=f;if(!f)break;else n=14}e=e|64;continue}else if((n|0)==16){while(1){n=a;a=a+4|0;f=t[a>>2]|0;t[n>>2]=f;if(!f)break;else n=16}e=e|4;continue}}}else{r=0;e=0}}while(0);t[A>>2]=e;return r|0}function KY(e,A,r){e=e|0;A=A|0;r=r|0;var a=0,n=0,f=0,l=0,c=0,o=0;c=h;h=h+16|0;f=c;l=c+4|0;t[l>>2]=0;o=(nB(e,0,l)|0)==0;l=t[l>>2]|0;if((o?(a=t[l>>2]|0,(a|0)>=2):0)?(n=l+8|0,(t[t[n>>2]>>2]|0)!=0):0){if((a|0)>2)nw(0,100415,f)|0;o=$F((U2(e)|0)+1|0)|0;t[A>>2]=o;$1(o,t[t[n>>2]>>2]|0)|0;if(!(t[(t[n>>2]|0)+12>>2]|0))t[A+4>>2]=0;else{o=t[A>>2]|0;o=o+((U2(o)|0)+1)|0;t[A+4>>2]=o;$1(o,t[(t[n>>2]|0)+12>>2]|0)|0}e=t[n>>2]|0;do{if(!(i[e+8>>0]|0))if(!(i[e+20>>0]|0)){s[r>>2]=0.0;break}else{s[r>>2]=1.0-+s[e+16>>2];break}else t[r>>2]=t[e+4>>2]}while(0);fB(l);e=1}else{t[A>>2]=0;fB(l);e=0}h=c;return e|0}function $Y(e,A){e=e|0;A=A|0;Rr(e,A);AB(e);return}function eF(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0,f=0,l=0.0,o=0.0,u=0,b=0.0,w=0,k=0,d=0,v=0,g=0,m=0,p=0,E=0,B=0,y=0,C=0,I=0;B=h;h=h+96|0;w=B+48|0;v=B+16|0;E=B+8|0;p=B;g=B+80|0;t[g>>2]=1e3;a=$F(16e3)|0;m=e+256|0;i=1;f=1;n=0;k=0;d=t[A+8>>2]|0;while(1){if((k|0)>=(t[A>>2]|0))break;r=t[d>>2]|0;e:do{switch(r|0){case 1:case 0:{u=d+80|0;t[v>>2]=t[u>>2];t[v+4>>2]=t[u+4>>2];t[v+8>>2]=t[u+8>>2];t[v+12>>2]=t[u+12>>2];t[v+16>>2]=t[u+16>>2];t[v+20>>2]=t[u+20>>2];t[v+24>>2]=t[u+24>>2];t[v+28>>2]=t[u+28>>2];t[w>>2]=t[m>>2];t[w+4>>2]=t[m+4>>2];t[w+8>>2]=t[m+8>>2];t[w+12>>2]=t[m+12>>2];t[w+16>>2]=t[m+16>>2];t[w+20>>2]=t[m+20>>2];t[w+24>>2]=t[m+24>>2];t[w+28>>2]=t[m+28>>2];if(!(xY(v,w)|0))r=f;else{C=d+8|0;I=d+24|0;c[a>>3]=+c[C>>3]-+c[I>>3];u=d+16|0;y=d+32|0;c[a+8>>3]=+c[u>>3]-+c[y>>3];c[a+16>>3]=+c[I>>3]+ +c[C>>3];c[a+24>>3]=+c[y>>3]+ +c[u>>3];ai(e,a,2,(r|0)==0?f:0);r=f}break}case 3:case 2:{I=d+80|0;t[v>>2]=t[I>>2];t[v+4>>2]=t[I+4>>2];t[v+8>>2]=t[I+8>>2];t[v+12>>2]=t[I+12>>2];t[v+16>>2]=t[I+16>>2];t[v+20>>2]=t[I+20>>2];t[v+24>>2]=t[I+24>>2];t[v+28>>2]=t[I+28>>2];t[w>>2]=t[m>>2];t[w+4>>2]=t[m+4>>2];t[w+8>>2]=t[m+8>>2];t[w+12>>2]=t[m+12>>2];t[w+16>>2]=t[m+16>>2];t[w+20>>2]=t[m+20>>2];t[w+24>>2]=t[m+24>>2];t[w+28>>2]=t[m+28>>2];if(!(xY(v,w)|0))r=f;else{r=d+8|0;a=AF(a,g,t[r+4>>2]|0,t[r>>2]|0)|0;ti(e,a,t[r>>2]|0,(t[d>>2]|0)==2?f:0);r=f}break}case 5:case 4:{I=d+80|0;t[v>>2]=t[I>>2];t[v+4>>2]=t[I+4>>2];t[v+8>>2]=t[I+8>>2];t[v+12>>2]=t[I+12>>2];t[v+16>>2]=t[I+16>>2];t[v+20>>2]=t[I+20>>2];t[v+24>>2]=t[I+24>>2];t[v+28>>2]=t[I+28>>2];t[w>>2]=t[m>>2];t[w+4>>2]=t[m+4>>2];t[w+8>>2]=t[m+8>>2];t[w+12>>2]=t[m+12>>2];t[w+16>>2]=t[m+16>>2];t[w+20>>2]=t[m+20>>2];t[w+24>>2]=t[m+24>>2];t[w+28>>2]=t[m+28>>2];if(!(xY(v,w)|0))r=f;else{r=d+8|0;a=AF(a,g,t[r+4>>2]|0,t[r>>2]|0)|0;fi(e,a,t[r>>2]|0,0,0,(t[d>>2]|0)==4?f&255:0);r=f}break}case 6:{I=d+80|0;t[v>>2]=t[I>>2];t[v+4>>2]=t[I+4>>2];t[v+8>>2]=t[I+8>>2];t[v+12>>2]=t[I+12>>2];t[v+16>>2]=t[I+16>>2];t[v+20>>2]=t[I+20>>2];t[v+24>>2]=t[I+24>>2];t[v+28>>2]=t[I+28>>2];t[w>>2]=t[m>>2];t[w+4>>2]=t[m+4>>2];t[w+8>>2]=t[m+8>>2];t[w+12>>2]=t[m+12>>2];t[w+16>>2]=t[m+16>>2];t[w+20>>2]=t[m+20>>2];t[w+24>>2]=t[m+24>>2];t[w+28>>2]=t[m+28>>2];if(!(xY(v,w)|0))r=f;else{r=d+8|0;a=AF(a,g,t[r+4>>2]|0,t[r>>2]|0)|0;li(e,a,t[r>>2]|0);r=f}break}case 7:{I=d+80|0;t[v>>2]=t[I>>2];t[v+4>>2]=t[I+4>>2];t[v+8>>2]=t[I+8>>2];t[v+12>>2]=t[I+12>>2];t[v+16>>2]=t[I+16>>2];t[v+20>>2]=t[I+20>>2];t[v+24>>2]=t[I+24>>2];t[v+28>>2]=t[I+28>>2];t[w>>2]=t[m>>2];t[w+4>>2]=t[m+4>>2];t[w+8>>2]=t[m+8>>2];t[w+12>>2]=t[m+12>>2];t[w+16>>2]=t[m+16>>2];t[w+20>>2]=t[m+20>>2];t[w+24>>2]=t[m+24>>2];t[w+28>>2]=t[m+28>>2];if(!(xY(v,w)|0))r=f;else{c[a>>3]=+c[d+8>>3];c[a+8>>3]=+c[d+16>>3];r=t[d+112>>2]|0;t[w>>2]=t[a>>2];t[w+4>>2]=t[a+4>>2];t[w+8>>2]=t[a+8>>2];t[w+12>>2]=t[a+12>>2];Kr(e,w,r);r=f}break}case 8:{Ai(e,t[d+8>>2]|0);r=1;break}case 9:{$r(e,t[d+8>>2]|0);r=1;break}case 13:{if((t[d+8>>2]|0)!=2){r=d+16|0;C=t[r+36>>2]|0;I=t[C+12>>2]|0;b=+s[C+8>>2];r=~~(+R(+(+c[d+40>>3]-+c[d+24>>3]),+(+c[d+32>>3]-+c[r>>3]))*57.29577951308232);Ai(e,t[C+4>>2]|0);ri(e,I,r,b);r=2;break e}I=t[d+68>>2]|0;f=t[I+4>>2]|0;u=t[I+12>>2]|0;b=+s[I+8>>2];l=+c[d+40>>3];o=+c[d+16>>3];if(l==o?+c[d+48>>3]==+c[d+24>>3]:0)r=0;else r=~~(+M(+((o-l)/+c[d+32>>3]))*57.29577951308232);Ai(e,f);ri(e,u,r,b);r=3;break}case 14:{nw(0,100481,p)|0;r=f;break}case 12:{if(!i){i=0;r=f}else{nw(0,100521,E)|0;i=0;r=f}break}case 11:{JB(t[d+8>>2]|0)|0;ii(e,188228);n=188228;r=f;break}default:r=f}}while(0);f=r;k=k+1|0;d=d+120|0}if(n|0)ii(e,t[(t[e>>2]|0)+336>>2]|0);G2(a);h=B;return}function AF(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0,n=0;n=t[A>>2]|0;a=n<<1;a=(a|0)>(i|0)?a:i;if((n|0)<(i|0)){e=AM(e,a<<4)|0;t[A>>2]=a}A=0;while(1){if((A|0)>=(i|0))break;c[e+(A<<4)>>3]=+c[r+(A*24|0)>>3];c[e+(A<<4)+8>>3]=+c[r+(A*24|0)+8>>3];A=A+1|0}return e|0}function rF(e,A){e=e|0;A=A|0;var r=0;r=t[A>>2]|0;t[e>>2]=t[A+4>>2];t[e+4>>2]=r;return}function iF(e,A){e=e|0;A=A|0;var r=0,a=0,n=0;n=A+16|0;a=1;while(1){A=t[n>>2]|0;if((a|0)>(t[A+180>>2]|0))break;r=t[(t[A+184>>2]|0)+(a<<2)>>2]|0;iF(e,r);A=Hw(r,140823)|0;if(A|0?i[A>>0]|0:0)$r(e,A);A=Hw(r,137729)|0;if(A|0?i[A>>0]|0:0)$r(e,A);A=Hw(r,140977)|0;if(A|0?i[A>>0]|0:0)$r(e,A);A=Hw(r,101418)|0;if(A|0?i[A>>0]|0:0)Ai(e,A);A=Hw(r,101446)|0;if(A|0?i[A>>0]|0:0)$r(e,A);a=a+1|0}return}function aF(e){e=e|0;var A=0,r=0,i=0;A=t[47127]|0;if(!A){A=Uh(20628,t[4581]|0)|0;t[47127]=A}if(!(L5[t[A>>2]&63](A,e,4)|0)){r=t[47127]|0;i=t[r>>2]|0;A=o3(e)|0;L5[i&63](r,A,1)|0;A=1}else A=0;return A|0}function tF(e,A,r){e=e|0;A=A|0;r=r|0;G2(A);return}function nF(e){e=e|0;var A=0;A=t[47128]|0;if(!e){if((A|0)>0?(A=A+-1|0,t[47128]=A,(A|0)==0):0){W4(1,t[47129]|0)|0;G2(t[47129]|0)}}else{t[47128]=A+1;if(!A){t[47129]=o3(W4(1,0)|0)|0;W4(1,153563)|0}}return}function fF(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0,f=0,l=0,s=0,o=0,u=0,b=0,w=0,k=0,d=0,v=0,g=0,m=0,p=0.0;m=h;h=h+96|0;d=m+72|0;k=m+56|0;w=m+48|0;g=m+32|0;v=m+24|0;i=m+8|0;r=m;if(0)lx();do{if((Sd(A,137483,0,1)|0)!=0?(b=A+16|0,(t[(t[b>>2]|0)+8>>2]|0)!=0):0){lF(A);sF(e,A);cF(e,A);nF(1);l=e+56|0;s=e+184|0;o=e+192|0;u=e+28|0;f=Qm(e)|0;e:while(1){if(!f){n=33;break}r=t[l>>2]|0;if(!r){t[f+20>>2]=0;r=0}else{t[f+20>>2]=t[r+8>>2];r=t[r+12>>2]|0}t[f+24>>2]=r;t[f+12>>2]=e;t[f+28>>2]=t[s>>2];t[f+620>>2]=25764;t[f+624>>2]=14;if(!(t[(t[b>>2]|0)+8>>2]|0)){n=13;break}i=f+52|0;n=Zr(f,t[i>>2]|0)|0;t[f+56>>2]=n;switch(n|0){case 999:{n=16;break e}case 21:{r=1;break}case 24:{r=520;break}default:r=oF(A)|0}a=f+152|0;t[a>>2]=t[a>>2]|r;r=t[o>>2]|0;do{if(!r)n=24;else{if(t[r+152>>2]&32|0?(e1(t[i>>2]|0,t[r+52>>2]|0)|0)==0:0){r=t[47130]|0;if(!r){n=27;break}t[r+8>>2]=f;t[f+36>>2]=t[r+36>>2];n=29;break}Lr(r);t[o>>2]=0;t[u>>2]=0;n=24}}while(0);if((n|0)==24){t[47130]=0;n=27}if((n|0)==27?(n=0,(Gr(f)|0)==0):0){t[o>>2]=f;n=29}if((n|0)==29){t[f+8>>2]=0;t[f+104>>2]=25876;uF(f);bF(f);hF(f,A);wF(f,A);kF(f,A);if(!(t[a>>2]&128))vB(f,A);t[47130]=f}f=Dm(e)|0}if((n|0)==13){nw(1,100679,v)|0;nF(0);if(!0){r=-1;break}r=t[15712]|0;v=Mk(A)|0;p=+sx();t[g>>2]=v;c[g+8>>3]=p;a3(r,100650,g)|0;r=-1;break}else if((n|0)==16){t[w>>2]=t[i>>2];nw(1,100700,w)|0;nF(0);if(!0){r=-1;break}r=t[15712]|0;g=Mk(A)|0;p=+sx();t[k>>2]=g;c[k+8>>3]=p;a3(r,100650,k)|0;r=-1;break}else if((n|0)==33){nF(0);if(!0){r=0;break}r=t[15712]|0;g=Mk(A)|0;p=+sx();t[d>>2]=g;c[d+8>>3]=p;a3(r,100650,d)|0;r=0;break}}else n=5}while(0);if((n|0)==5){nw(1,100602,r)|0;if(!0)r=-1;else{r=t[15712]|0;g=Mk(A)|0;p=+sx();t[i>>2]=g;c[i+8>>3]=p;a3(r,100650,i)|0;r=-1}}h=m;return r|0}function lF(e){e=e|0;var A=0;A=sd(e)|0;while(1){if(!A)break;pF(e,A);A=cd(e,A)|0}return}function sF(e,A){e=e|0;A=A|0;var r=0,a=0,n=0,f=0,l=0,s=0,o=0,u=0,b=0,w=0.0;b=h;h=h+32|0;s=b+24|0;a=b+16|0;l=b+8|0;u=b;t[e+168>>2]=A;n=e+293|0;i[n>>0]=0;r=Hw(A,105496)|0;if(r|0?(t[a>>2]=l,t[a+4>>2]=u,f=V3(r,105503,a)|0,(f|0)>0):0){w=+c[l>>3]*72.0;r=e+208|0;c[r>>3]=w;c[e+200>>3]=w;if((f|0)!=1)c[r>>3]=+c[u>>3]*72.0;i[n>>0]=1}a=e+292|0;i[a>>0]=0;r=Hw(A,101102)|0;if(r|0?(t[s>>2]=l,t[s+4>>2]=u,o=V3(r,105503,s)|0,(o|0)>0):0){w=+c[l>>3]*72.0;r=e+224|0;c[r>>3]=w;c[e+216>>3]=w;if((o|0)!=1)c[r>>3]=+c[u>>3]*72.0;i[a>>0]=1}r=e+294|0;i[r>>0]=0;a=e+232|0;n=A+16|0;u=(t[(t[n>>2]|0)+8>>2]|0)+48|0;t[a>>2]=t[u>>2];t[a+4>>2]=t[u+4>>2];t[a+8>>2]=t[u+8>>2];t[a+12>>2]=t[u+12>>2];a=t[(t[n>>2]|0)+8>>2]|0;if(+c[a+48>>3]>.001?+c[a+56>>3]>.001:0)i[r>>0]=1;t[e+288>>2]=i[a+81>>0]|0?90:0;r=e+196|0;t[r>>2]=101106;a=Hw(A,101109)|0;if(a|0?i[a>>0]|0:0)t[r>>2]=a;u=e+256|0;o=(t[n>>2]|0)+16|0;t[u>>2]=t[o>>2];t[u+4>>2]=t[o+4>>2];t[u+8>>2]=t[o+8>>2];t[u+12>>2]=t[o+12>>2];t[u+16>>2]=t[o+16>>2];t[u+20>>2]=t[o+20>>2];t[u+24>>2]=t[o+24>>2];t[u+28>>2]=t[o+28>>2];t[47141]=zw(A,0,101472,0)|0;t[47142]=zw(A,0,101463,0)|0;t[e+320>>2]=vx(0,t[47151]|0,107994)|0;c[e+328>>3]=+wx(0,t[47150]|0,14.0,1.0);t[e+336>>2]=20664;t[e+188>>2]=Mk(A)|0;h=b;return}function cF(e,A){e=e|0;A=A|0;var r=0,a=0,n=0;r=e+304|0;a=t[r>>2]|0;if(a|0){G2(a);t[r>>2]=0}a=e+308|0;r=t[a>>2]|0;if(r|0){G2(r);t[a>>2]=0}n=e+316|0;r=t[n>>2]|0;if(r|0){G2(r);t[n>>2]=0}r=Hw(A,100853)|0;if(r){t[e+312>>2]=gF(e,A,r)|0;r=Hw(A,100860)|0;if(r|0?i[r>>0]|0:0)t[n>>2]=mF(e,r)|0}else{t[a>>2]=0;t[e+312>>2]=1}return}function oF(e){e=e|0;e=Hw(e,100821)|0;e:do{if(!e)e=0;else switch(i[e>>0]|0){case 110:{if(!(e1(e+1|0,100833)|0))e=1;else{e=0;break e}break}case 101:{if(!(e1(e+1|0,100843)|0))e=16;else{e=0;break e}break}default:{e=0;break e}}}while(0);return e|0}function uF(e){e=e|0;var A=0.0,r=0;r=t[e>>2]|0;if(!(i[r+292>>0]|0)){if((t[e+56>>2]|0)==300)A=+c[(t[e+68>>2]|0)+8>>3];else A=4.0;c[e+248>>3]=A;c[e+240>>3]=A}else{e=e+240|0;r=r+216|0;t[e>>2]=t[r>>2];t[e+4>>2]=t[r+4>>2];t[e+8>>2]=t[r+8>>2];t[e+12>>2]=t[r+12>>2]}return}function bF(e){e=e|0;var A=0;A=t[e>>2]|0;e:do{if(!(i[A+293>>0]|0))switch(t[e+56>>2]|0){case 300:{A=e+416|0;e=(t[e+84>>2]|0)+8|0;t[A>>2]=t[e>>2];t[A+4>>2]=t[e+4>>2];t[A+8>>2]=t[e+8>>2];t[A+12>>2]=t[e+12>>2];break e}case 30:case 21:case 22:case 4:case 3:case 2:{c[e+424>>3]=36.0;c[e+416>>3]=36.0;break e}default:{A=e+416|0;t[A>>2]=0;t[A+4>>2]=0;t[A+8>>2]=0;t[A+12>>2]=0;break e}}else{e=e+416|0;A=A+200|0;t[e>>2]=t[A>>2];t[e+4>>2]=t[A+4>>2];t[e+8>>2]=t[A+8>>2];t[e+12>>2]=t[A+12>>2]}}while(0);return}function hF(e,A){e=e|0;A=A|0;var r=0.0,a=0;a=t[(t[e>>2]|0)+192>>2]|0;r=+c[(t[(t[A+16>>2]|0)+8>>2]|0)+24>>3];do{if(!(r!=0.0)){if(a|0?i[a+128>>0]|0:0){e=e+432|0;a=a+112|0;t[e>>2]=t[a>>2];t[e+4>>2]=t[a+4>>2];t[e+8>>2]=t[a+8>>2];t[e+12>>2]=t[a+12>>2];break}A=e+432|0;if((t[e+56>>2]|0)==300){e=(t[e+84>>2]|0)+40|0;t[A>>2]=t[e>>2];t[A+4>>2]=t[e+4>>2];t[A+8>>2]=t[e+8>>2];t[A+12>>2]=t[e+12>>2];break}else{c[e+440>>3]=96.0;c[A>>3]=96.0;break}}else{c[e+440>>3]=r;c[e+432>>3]=r}}while(0);return}function wF(e,A){e=e|0;A=A|0;var r=0.0,a=0.0,n=0,f=0.0,l=0.0,s=0.0,o=0,u=0,b=0.0,w=0.0,k=0.0,d=0.0,v=0,g=0,m=0,p=0,E=0,B=0,y=0,C=0,I=0;I=h;h=h+112|0;g=I+80|0;m=I+56|0;v=I+40|0;p=I+32|0;E=I+24|0;B=I+16|0;y=I+8|0;C=I;o=t[e>>2]|0;b=+c[o+272>>3];k=+c[o+280>>3];w=+c[o+256>>3];d=+c[o+264>>3];a=+c[e+240>>3];r=w-a;c[e+208>>3]=r;f=+c[e+248>>3];l=d-f;c[e+216>>3]=l;a=a+b;c[e+224>>3]=a;f=f+k;c[e+232>>3]=f;r=a-r;l=f-l;c[B>>3]=1.0;n=t[(t[A+16>>2]|0)+8>>2]|0;f=+c[n+64>>3];do{if(f>.001?(s=+c[n+72>>3],s>.001):0){r=r==0.0?f:r;a=l==0.0?s:l;if(!(fa&(f>r&(i[n+80>>0]|0)!=0)):0){s=r;l=a;f=1.0;break}u=f/r>3]=f;s=r;l=a}else{s=r;f=1.0}}while(0);a=(w+b)*.5;c[y>>3]=a;r=(d+k)*.5;c[C>>3]=r;t[e+360>>2]=t[o+288>>2];s=f*s;c[p>>3]=s;l=f*l;c[E>>3]=l;n=Hw(A,100752)|0;if(n){o=Z2((U2(n)|0)+1|0)|0;u=Z2((U2(n)|0)+1|0)|0;t[v>>2]=p;t[v+4>>2]=E;t[v+8>>2]=B;t[v+12>>2]=o;do{if((V3(n,100761,v)|0)==4){n=gd(t[A+60>>2]|0,o,0)|0;if(n|0){m=t[n+16>>2]|0;c[y>>3]=+c[m+16>>3];c[C>>3]=+c[m+24>>3]}}else{t[m>>2]=p;t[m+4>>2]=E;t[m+8>>2]=B;t[m+12>>2]=o;t[m+16>>2]=u;if((V3(n,100781,m)|0)!=4){t[g>>2]=p;t[g+4>>2]=E;t[g+8>>2]=B;t[g+12>>2]=y;t[g+16>>2]=C;V3(n,100801,g)|0;break}n=gd(t[A+60>>2]|0,o,0)|0;if(n|0){m=t[n+16>>2]|0;c[y>>3]=+c[m+16>>3];c[C>>3]=+c[m+24>>3]}}}while(0);G2(o);G2(u);s=+c[p>>3];l=+c[E>>3];f=+c[B>>3];a=+c[y>>3];r=+c[C>>3]}c[e+368>>3]=s;c[e+376>>3]=l;c[e+352>>3]=f;c[e+336>>3]=a;c[e+344>>3]=r;h=I;return}function kF(e,A){e=e|0;A=A|0;var r=0,a=0,n=0.0,f=0.0,l=0,s=0.0,o=0.0,u=0.0,b=0.0,w=0,k=0,d=0,v=0,g=0,m=0,p=0,E=0,B=0,y=0,C=0,I=0,Z=0,G=0,L=0,Q=0,D=0,z=0,W=0,Y=0,F=0,M=0,V=0,N=0,R=0.0,x=0.0,J=0.0;N=h;h=h+224|0;F=N+200|0;C=N+168|0;Q=N+144|0;Y=N+120|0;D=N+96|0;z=N+64|0;r=N+184|0;p=N+176|0;E=N+160|0;y=N+136|0;B=N+112|0;I=N+80|0;Z=N+48|0;G=N+32|0;L=N+16|0;M=N+8|0;V=N;m=t[e>>2]|0;t[z>>2]=0;t[z+4>>2]=0;t[z+8>>2]=0;t[z+12>>2]=0;W=e+368|0;t[Y>>2]=t[W>>2];t[Y+4>>2]=t[W+4>>2];t[Y+8>>2]=t[W+8>>2];t[Y+12>>2]=t[W+12>>2];W=e+360|0;if(t[W>>2]|0){t[F>>2]=t[Y>>2];t[F+4>>2]=t[Y+4>>2];t[F+8>>2]=t[Y+8>>2];t[F+12>>2]=t[Y+12>>2];dF(r,F);t[Y>>2]=t[r>>2];t[Y+4>>2]=t[r+4>>2];t[Y+8>>2]=t[r+8>>2];t[Y+12>>2]=t[r+12>>2]}g=e+416|0;t[D>>2]=t[g>>2];t[D+4>>2]=t[g+4>>2];t[D+8>>2]=t[g+8>>2];t[D+12>>2]=t[g+12>>2];if((i[m+294>>0]|0)!=0?(t[e+152>>2]&32|0)!=0:0){f=+c[m+232>>3]-+c[D>>3]*2.0;c[Q>>3]=f;s=+c[m+240>>3]-+c[D+8>>3]*2.0;w=Q+8|0;c[w>>3]=s;if(!(f<.0001)){b=+c[Y>>3];r=~~(b/f);a=e+164|0;t[a>>2]=r;if(b-f*+(r|0)>.0001){r=r+1|0;t[a>>2]=r}}else{t[e+164>>2]=1;r=1}if(!(s<.0001)){n=+c[Y+8>>3];a=~~(n/s);l=e+168|0;t[l>>2]=a;if(n-s*+(a|0)>.0001){a=a+1|0;t[l>>2]=a}}else{t[e+168>>2]=1;a=1;n=+c[Y+8>>3]}t[e+204>>2]=P(a,r)|0;b=+c[(+c[Y>>3]>3];c[Y>>3]=b;r=w;a=Y;o=+c[(n>3];n=b;l=21}else{if(t[e+68>>2]|0){r=t[e+84>>2]|0;f=+c[r+24>>3]-+c[D>>3]*2.0;f=f<0.0?0.0:f;c[Q>>3]=f;b=+c[r+32>>3]-+c[D+8>>3]*2.0;r=Q+8|0;c[r>>3]=b;if(b<0.0){a=Q;l=17}else r=Q}else{c[Q+8>>3]=0.0;a=Q;r=Q;l=17}if((l|0)==17){c[r>>3]=0.0;r=a;f=+c[a>>3]}t[e+204>>2]=1;t[e+168>>2]=1;t[e+164>>2]=1;n=+c[Y>>3];if(f>3]=n;f=n}r=Q+8|0;s=+c[r>>3];o=+c[Y+8>>3];if(s>3]=o;d=r;o=+c[r>>3]}u=+c[D>>3];v=e+432|0;s=+c[v>>3]*.013888888888888888*(u*2.0+f);t[e+448>>2]=~~(s+(s>=0.0?.5:-.5));k=D+8|0;s=+c[k>>3];g=e+440|0;b=+c[g>>3]*.013888888888888888*(s*2.0+o);t[e+452>>2]=~~(b+(b>=0.0?.5:-.5));l=e+188|0;w=e+180|0;r=e+172|0;a=m+196|0;t[r>>2]=0;t[r+4>>2]=0;t[r+8>>2]=0;t[r+12>>2]=0;t[r+16>>2]=0;t[r+20>>2]=0;vF(p,e,i[t[a>>2]>>0]|0);m=p;p=t[m+4>>2]|0;r=w;t[r>>2]=t[m>>2];t[r+4>>2]=p;vF(E,e,i[(t[a>>2]|0)+1>>0]|0);r=E;E=t[r>>2]|0;r=t[r+4>>2]|0;p=l;t[p>>2]=E;t[p+4>>2]=r;E=(t[w>>2]|0)+E|0;if(!((((E|0)>-1?E:0-E|0)|0)==1?(E=(t[e+184>>2]|0)+r|0,(((E|0)>-1?E:0-E|0)|0)==1):0)){vF(y,e,66);p=y;y=t[p+4>>2]|0;E=w;t[E>>2]=t[p>>2];t[E+4>>2]=y;vF(B,e,76);E=B;B=t[E+4>>2]|0;y=l;t[y>>2]=t[E>>2];t[y+4>>2]=B;t[C>>2]=t[a>>2];nw(0,100732,C)|0}if(i[(t[(t[A+16>>2]|0)+8>>2]|0)+82>>0]|0){if(f>n){o=(f-n)*.5;c[z>>3]=o}else o=0.0;f=+c[d>>3];b=+c[Y+8>>3];if(f>b){f=(f-b)*.5;c[z+8>>3]=f}else f=0.0}else{f=0.0;o=0.0}if(!(t[W>>2]|0))l=1;else{t[F>>2]=t[Y>>2];t[F+4>>2]=t[Y+4>>2];t[F+8>>2]=t[Y+8>>2];t[F+12>>2]=t[Y+12>>2];dF(I,F);t[Y>>2]=t[I>>2];t[Y+4>>2]=t[I+4>>2];t[Y+8>>2]=t[I+8>>2];t[Y+12>>2]=t[I+12>>2];t[F>>2]=t[Q>>2];t[F+4>>2]=t[Q+4>>2];t[F+8>>2]=t[Q+8>>2];t[F+12>>2]=t[Q+12>>2];dF(Z,F);t[Q>>2]=t[Z>>2];t[Q+4>>2]=t[Z+4>>2];t[Q+8>>2]=t[Z+8>>2];t[Q+12>>2]=t[Z+12>>2];t[F>>2]=t[D>>2];t[F+4>>2]=t[D+4>>2];t[F+8>>2]=t[D+8>>2];t[F+12>>2]=t[D+12>>2];dF(G,F);t[D>>2]=t[G>>2];t[D+4>>2]=t[G+4>>2];t[D+8>>2]=t[G+8>>2];t[D+12>>2]=t[G+12>>2];t[F>>2]=t[z>>2];t[F+4>>2]=t[z+4>>2];t[F+8>>2]=t[z+8>>2];t[F+12>>2]=t[z+12>>2];dF(L,F);t[z>>2]=t[L>>2];t[z+4>>2]=t[L+4>>2];t[z+8>>2]=t[L+8>>2];t[z+12>>2]=t[L+12>>2];u=+c[D>>3];o=+c[z>>3];s=+c[k>>3];f=+c[z+8>>3];n=+c[Y>>3];l=(t[W>>2]|0)==0}b=o+u;c[e+384>>3]=b;x=f+s;c[e+392>>3]=x;R=o+u+n;c[e+400>>3]=R;J=+c[Y+8>>3];u=f+s+J;c[e+408>>3]=u;o=+c[e+352>>3];c[e+320>>3]=n/o;c[e+328>>3]=J/o;o=+c[v>>3];b=b*.013888888888888888*o;a=e+456|0;t[a>>2]=~~(b+(b>=0.0?.5:-.5));b=+c[g>>3];s=x*.013888888888888888*b;t[e+460>>2]=~~(s+(s>=0.0?.5:-.5));o=R*.013888888888888888*o;r=e+464|0;t[r>>2]=~~(o+(o>=0.0?.5:-.5));b=u*.013888888888888888*b;t[e+468>>2]=~~(b+(b>=0.0?.5:-.5));if(!l){t[F>>2]=t[a>>2];t[F+4>>2]=t[a+4>>2];rF(M,F);Y=M;M=t[Y+4>>2]|0;e=a;t[e>>2]=t[Y>>2];t[e+4>>2]=M;t[F>>2]=t[r>>2];t[F+4>>2]=t[r+4>>2];rF(V,F);e=V;M=t[e+4>>2]|0;V=r;t[V>>2]=t[e>>2];t[V+4>>2]=M}h=N;return}function dF(e,A){e=e|0;A=A|0;var r=0.0;r=+c[A>>3];c[e>>3]=+c[A+8>>3];c[e+8>>3]=r;return}function vF(e,A,r){e=e|0;A=A|0;r=r|0;r=(r<<24>>24)+-66|0;switch(r>>>1|r<<31|0){case 9:{t[A+176>>2]=(t[A+168>>2]|0)+-1;A=0;r=-1;break}case 0:{A=0;r=1;break}case 5:{A=1;r=0;break}case 8:{t[A+172>>2]=(t[A+164>>2]|0)+-1;A=-1;r=0;break}default:{A=0;r=0}}t[e>>2]=A;t[e+4>>2]=r;return}function gF(e,A,r){e=e|0;A=A|0;r=r|0;var a=0,n=0,f=0,l=0,s=0;s=h;h=h+16|0;n=s;a=Hw(A,100973)|0;l=e+296|0;t[l>>2]=(a|0)==0?100982:a;A=Hw(A,100986)|0;a=e+300|0;A=(A|0)==0?100999:A;t[a>>2]=A;A=h3(t[l>>2]|0,A)|0;if(A|0){t[n>>2]=i[A>>0];nw(0,101001,n)|0;t[a>>2]=195059}A=o3(r)|0;t[e+304>>2]=A;f=e+308|0;a=0;e=0;while(1){r=l3(A,t[l>>2]|0)|0;if(!r)break;n=e+1|0;if((e|0)<(a|0))A=t[f>>2]|0;else{a=a+128|0;A=t[f>>2]|0;if(!A)A=$F(a<<2)|0;else A=AM(A,a<<2)|0;t[f>>2]=A}t[A+(n<<2)>>2]=r;e=n;A=0}if(e|0){l=AM(t[f>>2]|0,(e<<2)+8|0)|0;t[f>>2]=l;t[l>>2]=0;t[(t[f>>2]|0)+(e+1<<2)>>2]=0}h=s;return e|0}function mF(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0,f=0,l=0,s=0,c=0;c=h;h=h+16|0;s=c;l=e+312|0;r=$F((t[l>>2]<<2)+8|0)|0;i=0;f=1;while(1){n=t[l>>2]|0;if((f|0)>(n|0))break;a=i+1|0;if((VY(e,f,n,A)|0)<<24>>24){t[r+(a<<2)>>2]=f;i=a}f=f+1|0}if(!i){t[s>>2]=A;nw(0,100872,s)|0;G2(r);r=0}else{t[r>>2]=i;t[r+(i+1<<2)>>2]=(t[l>>2]|0)+1}h=c;return r|0}function pF(e,A){e=e|0;A=A|0;var r=0,i=0.0,a=0.0,n=0.0;r=t[A+16>>2]|0;n=+c[r+16>>3];c[r+48>>3]=n-+c[r+88>>3];i=+c[r+24>>3];a=+c[r+80>>3]*.5;c[r+56>>3]=i-a;c[r+64>>3]=+c[r+96>>3]+n;c[r+72>>3]=a+i;A=Ow(e,A)|0;while(1){if(!A)break;EF(A);A=qw(e,A)|0}return}function EF(e){e=e|0;e=t[(t[e+16>>2]|0)+8>>2]|0;if(e|0)BF(e);return}function BF(e){e=e|0;var A=0,r=0,i=0,a=0,n=0,f=0,l=0,s=0,o=0,u=0,b=0,w=0,k=0,d=0,v=0,g=0,m=0,p=0,E=0,B=0,y=0,C=0,I=0,Z=0,G=0;G=h;h=h+240|0;p=G+192|0;m=G+176|0;E=G+64|0;B=G+32|0;y=G;C=G+144|0;I=G+112|0;Z=e+4|0;if((t[Z>>2]|0)<=0)ge(101140,99906,3994,101154);A=t[e>>2]|0;r=E;i=A;a=r+48|0;do{t[r>>2]=t[i>>2];r=r+4|0;i=i+4|0}while((r|0)<(a|0));r=p;i=A;a=r+48|0;do{t[r>>2]=t[i>>2];r=r+4|0;i=i+4|0}while((r|0)<(a|0));yF(B,p);f=B+8|0;l=y+8|0;s=B+16|0;o=y+16|0;u=B+24|0;b=y+24|0;w=E+8|0;k=E+12|0;d=E+32|0;v=E+4|0;g=E+16|0;n=0;while(1){if((n|0)>=(t[Z>>2]|0))break;if((n|0)>0){A=(t[e>>2]|0)+(n*48|0)|0;r=E;i=A;a=r+48|0;do{t[r>>2]=t[i>>2];r=r+4|0;i=i+4|0}while((r|0)<(a|0));r=p;i=A;a=r+48|0;do{t[r>>2]=t[i>>2];r=r+4|0;i=i+4|0}while((r|0)<(a|0));yF(y,p);c[B>>3]=+c[(+c[B>>3]<+c[y>>3]?B:y)>>3];c[f>>3]=+c[(+c[f>>3]<+c[l>>3]?B:y)+8>>3];c[s>>3]=+c[(+c[s>>3]>+c[o>>3]?B:y)+16>>3];c[u>>3]=+c[(+c[u>>3]>+c[b>>3]?B:y)+24>>3]}A=t[w>>2]|0;if(A|0){a=t[E>>2]|0;t[m>>2]=t[g>>2];t[m+4>>2]=t[g+4>>2];t[m+8>>2]=t[g+8>>2];t[m+12>>2]=t[g+12>>2];t[p>>2]=t[a>>2];t[p+4>>2]=t[a+4>>2];t[p+8>>2]=t[a+8>>2];t[p+12>>2]=t[a+12>>2];_E(C,m,p,1.0,A);t[y>>2]=t[C>>2];t[y+4>>2]=t[C+4>>2];t[y+8>>2]=t[C+8>>2];t[y+12>>2]=t[C+12>>2];t[y+16>>2]=t[C+16>>2];t[y+20>>2]=t[C+20>>2];t[y+24>>2]=t[C+24>>2];t[y+28>>2]=t[C+28>>2];c[B>>3]=+c[(+c[B>>3]<+c[y>>3]?B:y)>>3];c[f>>3]=+c[(+c[f>>3]<+c[l>>3]?B:y)+8>>3];c[s>>3]=+c[(+c[s>>3]>+c[o>>3]?B:y)+16>>3];c[u>>3]=+c[(+c[u>>3]>+c[b>>3]?B:y)+24>>3]}A=t[k>>2]|0;if(A|0){a=(t[E>>2]|0)+((t[v>>2]|0)+-1<<4)|0;t[m>>2]=t[d>>2];t[m+4>>2]=t[d+4>>2];t[m+8>>2]=t[d+8>>2];t[m+12>>2]=t[d+12>>2];t[p>>2]=t[a>>2];t[p+4>>2]=t[a+4>>2];t[p+8>>2]=t[a+8>>2];t[p+12>>2]=t[a+12>>2];_E(I,m,p,1.0,A);t[y>>2]=t[I>>2];t[y+4>>2]=t[I+4>>2];t[y+8>>2]=t[I+8>>2];t[y+12>>2]=t[I+12>>2];t[y+16>>2]=t[I+16>>2];t[y+20>>2]=t[I+20>>2];t[y+24>>2]=t[I+24>>2];t[y+28>>2]=t[I+28>>2];c[B>>3]=+c[(+c[B>>3]<+c[y>>3]?B:y)>>3];c[f>>3]=+c[(+c[f>>3]<+c[l>>3]?B:y)+8>>3];c[s>>3]=+c[(+c[s>>3]>+c[o>>3]?B:y)+16>>3];c[u>>3]=+c[(+c[u>>3]>+c[b>>3]?B:y)+24>>3]}n=n+1|0}Z=e+8|0;t[Z>>2]=t[B>>2];t[Z+4>>2]=t[B+4>>2];t[Z+8>>2]=t[B+8>>2];t[Z+12>>2]=t[B+12>>2];t[Z+16>>2]=t[B+16>>2];t[Z+20>>2]=t[B+20>>2];t[Z+24>>2]=t[B+24>>2];t[Z+28>>2]=t[B+28>>2];h=G;return}function yF(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0,f=0,l=0,s=0,o=0,u=0,b=0.0,w=0.0,k=0.0,d=0.0,v=0.0,g=0;u=h;h=h+48|0;f=u+32|0;l=u;s=t[A+4>>2]|0;if((s|0)<=0)ge(101170,99906,3968,101182);if(((s>>>0)%3|0|0)!=1)ge(101192,99906,3969,101182);o=l+16|0;r=t[A>>2]|0;t[o>>2]=t[r>>2];t[o+4>>2]=t[r+4>>2];t[o+8>>2]=t[r+8>>2];t[o+12>>2]=t[r+12>>2];t[l>>2]=t[r>>2];t[l+4>>2]=t[r+4>>2];t[l+8>>2]=t[r+8>>2];t[l+12>>2]=t[r+12>>2];i=f+8|0;a=l+8|0;n=l+24|0;A=1;while(1){if((A|0)>=(s|0))break;w=+c[r+(A<<4)+8>>3];g=A+1|0;b=+c[r+(g<<4)+8>>3];d=(+c[r+(g<<4)>>3]+ +c[r+(A<<4)>>3])*.5;c[f>>3]=d;w=(b+w)*.5;c[i>>3]=w;b=+c[(+c[l>>3]>3];c[l>>3]=b;v=+c[(+c[a>>3]>3];c[a>>3]=v;d=+c[(+c[o>>3]>d?o:f)>>3];c[o>>3]=d;w=+c[(+c[n>>3]>w?o:f)+8>>3];c[n>>3]=w;g=r+(A+2<<4)|0;t[f>>2]=t[g>>2];t[f+4>>2]=t[g+4>>2];t[f+8>>2]=t[g+8>>2];t[f+12>>2]=t[g+12>>2];k=+c[f>>3];c[l>>3]=+c[(b>3];b=+c[i>>3];c[a>>3]=+c[(v>3];c[o>>3]=+c[(d>k?o:f)>>3];c[n>>3]=+c[(w>b?o:f)+8>>3];A=A+3|0}t[e>>2]=t[l>>2];t[e+4>>2]=t[l+4>>2];t[e+8>>2]=t[l+8>>2];t[e+12>>2]=t[l+12>>2];t[e+16>>2]=t[l+16>>2];t[e+20>>2]=t[l+20>>2];t[e+24>>2]=t[l+24>>2];t[e+28>>2]=t[l+28>>2];h=u;return}function CF(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0.0,t=0.0,n=0.0,f=0,l=0.0,s=0,o=0,u=0.0,b=0.0,h=0.0,w=0.0,k=0.0,d=0.0;k=+c[e>>3];d=+c[r>>3];s=!(k>=d);if((!s?k<=+c[r+16>>3]:0)?(a=+c[e+8>>3],a>=+c[r+8>>3]):0)f=a<=+c[r+24>>3];else f=0;a=+c[A>>3];if((a>=d?a<=+c[r+16>>3]:0)?(t=+c[A+8>>3],t>=+c[r+8>>3]):0){i=t<=+c[r+24>>3];if(!(f^i))if(f&i)i=1;else o=11;else i=0}else if(f)i=0;else o=11;e:do{if((o|0)==11){w=+c[e+8>>3];do{if(k==a){d=+c[r+8>>3];if(!(s|w>=d^+c[A+8>>3]>=d^1)?k<=+c[r+16>>3]:0){i=0;break e}}else{l=+c[A+8>>3];if(w==l){if(!(k>=d^a>=d))break;if(!(w>=+c[r+8>>3]))break;if(!(w<=+c[r+24>>3]))break;else{i=0;break e}}h=(l-w)/(a-k);o=k>3];if(!(!(d>=n)|!(d<=a)|!(t>=u))?t<=+c[r+24>>3]:0){i=0;break e}b=+c[r+16>>3];t=(b-d)*h+t;if(t>=u?!(!(b<=a)|(b>=n?!(t<=+c[r+24>>3]):1)):0){i=0;break e}o=w=d?!(!(u<=t)|(!(u>=n)|!(a<=b))):0){i=0;break e}w=+c[r+24>>3];k=(w-u)/h+a;if(k>=d?!(!(w<=t)|(!(w>=n)|!(k<=b))):0){i=0;break e}}}while(0);i=-1}}while(0);return i|0}function IF(e){e=e|0;var A=0,r=0.0;A=e+16|0;r=+c[A>>3];c[e+32>>3]=r;c[e+48>>3]=r;c[e+40>>3]=+c[e+24>>3];c[e+56>>3]=+c[e+8>>3];c[A>>3]=+c[e>>3];return}function ZF(e,A,r){e=e|0;A=A|0;r=r|0;var i=0.0,a=0.0,n=0.0,f=0.0;if((t[47131]|0)!=(r|0)){p1(+(r|0)*.15915494309189535,186328,186336);t[47131]=r}n=+c[A>>3];i=+c[23292];a=+c[A+8>>3];f=+c[23291];c[e>>3]=i*n-f*a;c[e+8>>3]=f*n+a*i;return}function GF(e,A,r){e=e|0;A=A|0;r=r|0;var i=0.0,a=0,n=0.0,f=0,l=0,s=0;s=h;h=h+16|0;a=s;i=+c[A>>3];f=A+8|0;n=+c[f>>3];e:do{switch(r|0){case 0:{l=11;break}case 90:{c[A>>3]=n;i=-i;l=10;break}case 180:{i=-n;l=10;break}case 270:{c[A>>3]=n;l=10;break}default:{if((r|0)<0){t[a>>2]=t[A>>2];t[a+4>>2]=t[A+4>>2];t[a+8>>2]=t[A+8>>2];t[a+12>>2]=t[A+12>>2];LF(e,a,0-r|0);break e}if((r|0)>360){t[a>>2]=t[A>>2];t[a+4>>2]=t[A+4>>2];t[a+8>>2]=t[A+8>>2];t[a+12>>2]=t[A+12>>2];GF(e,a,(r>>>0)%360|0);break e}else{t[a>>2]=t[A>>2];t[a+4>>2]=t[A+4>>2];t[a+8>>2]=t[A+8>>2];t[a+12>>2]=t[A+12>>2];ZF(e,a,r);break e}}}}while(0);if((l|0)==10){c[f>>3]=i;l=11}if((l|0)==11){t[e>>2]=t[A>>2];t[e+4>>2]=t[A+4>>2];t[e+8>>2]=t[A+8>>2];t[e+12>>2]=t[A+12>>2]}h=s;return}function LF(e,A,r){e=e|0;A=A|0;r=r|0;var i=0.0,a=0,n=0.0,f=0,l=0,s=0;s=h;h=h+16|0;a=s;i=+c[A>>3];f=A+8|0;n=+c[f>>3];e:do{switch(r|0){case 0:{l=11;break}case 90:{c[A>>3]=-n;l=10;break}case 180:{i=-n;l=10;break}case 270:{c[A>>3]=n;l=10;break}default:{if((r|0)<0){t[a>>2]=t[A>>2];t[a+4>>2]=t[A+4>>2];t[a+8>>2]=t[A+8>>2];t[a+12>>2]=t[A+12>>2];GF(e,a,0-r|0);break e}if((r|0)>360){t[a>>2]=t[A>>2];t[a+4>>2]=t[A+4>>2];t[a+8>>2]=t[A+8>>2];t[a+12>>2]=t[A+12>>2];LF(e,a,(r>>>0)%360|0);break e}else{t[a>>2]=t[A>>2];t[a+4>>2]=t[A+4>>2];t[a+8>>2]=t[A+8>>2];t[a+12>>2]=t[A+12>>2];ZF(e,a,360-r|0);break e}}}}while(0);if((l|0)==10){c[f>>3]=i;l=11}if((l|0)==11){t[e>>2]=t[A>>2];t[e+4>>2]=t[A+4>>2];t[e+8>>2]=t[A+8>>2];t[e+12>>2]=t[A+12>>2]}h=s;return}function QF(e,A,r){e=e|0;A=A|0;r=r|0;var i=0.0,a=0.0,t=0.0,n=0.0;n=+c[r>>3];i=+c[r+8>>3];t=i+ +c[A>>3];a=n+ +c[A+24>>3];i=i+ +c[A+16>>3];c[e>>3]=n+ +c[A+8>>3];c[e+8>>3]=t;c[e+16>>3]=a;c[e+24>>3]=i;return}function DF(e,A,r){e=e|0;A=A|0;r=r|0;var i=0.0,a=0.0,t=0.0,n=0.0;t=+c[e>>3];i=+c[A>>3]-t;n=+c[e+8>>3];a=+c[A+8>>3]-n;t=(+c[r+8>>3]-n)*i-(+c[r>>3]-t)*a;t=t*t;return+(t<1.0e-10?0.0:t/(a*a+i*i))}function zF(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0,n=0;n=h;h=h+16|0;a=n+8|0;i=n;e=Hw(e,A)|0;if(e|0?(t[a>>2]=i,(V3(e,101209,a)|0)>0):0)c[r>>3]=+c[i>>3];h=n;return}function WF(e,A){e=e|0;A=A|0;var r=0,a=0.0,n=0,f=0,l=0,s=0,o=0,u=0;u=h;h=h+16|0;n=u+8|0;f=u;r=KF(96)|0;o=e+16|0;t[(t[o>>2]|0)+8>>2]=r;r=Hw(e,101213)|0;if(!r){r=Te(101222)|0;if(r|0)s=3}else s=3;if((s|0)==3)tA(101234,r|0,1)|0;r=(YF(e)|0)&255;i[(t[o>>2]|0)+115>>0]=r;if(0==0?(r=Hw(e,101245)|0,t[47133]=r,(r|0)==0):0)t[47133]=t[47132];a=+wx(e,zw(e,0,101255,0)|0,0.0,0.0);c[t[(t[o>>2]|0)+8>>2]>>3]=a;r=Hw(e,101263)|0;e:do{if(!r)r=0;else{switch(i[r>>0]|0){case 76:{if(!(e1(r,101271)|0)){r=1;break e}break}case 66:{if(!(e1(r,101274)|0)){r=2;break e}break}case 82:{r=(e1(r,101277)|0)==0;r=r?3:0;break e}default:{r=0;break e}}r=0}}while(0);t[(t[o>>2]|0)+116>>2]=r<<2|(A<<24>>24==0?0:r);a=+wx(e,zw(e,0,101280,0)|0,.25,.02);c[f>>3]=a;a=a*72.0;t[(t[o>>2]|0)+248>>2]=~~(a+(a>=0.0?.5:-.5));r=dx(e,zw(e,0,101288,0)|0,0)|0;if(r){t[n>>2]=f;if(V3(r,101209,n)|0){a=+c[f>>3];if(a<.02){c[f>>3]=.02;a=.02}}else{c[f>>3]=.5;a=.5}if(R4(r,101296)|0)i[(t[o>>2]|0)+276>>0]=1}else{c[f>>3]=.5;a=.5}a=a*72.0;t[(t[o>>2]|0)+252>>2]=~~(a+(a>=0.0?.5:-.5));f=(hx(e,zw(e,0,101304,0)|0,0,0)|0)&255;i[(t[o>>2]|0)+243>>0]=f;f=zx(dx(e,zw(e,0,101314,0)|0,0)|0,20676,20692)|0;t[(t[o>>2]|0)+244>>2]=f;FF(e);f=MF(e,101324,(t[(t[o>>2]|0)+8>>2]|0)+64|0)|0;r=t[(t[o>>2]|0)+8>>2]|0;i[r+80>>0]=f;MF(e,101329,r+48|0)|0;r=mx(Hw(e,101334)|0)|0;i[(t[(t[o>>2]|0)+8>>2]|0)+82>>0]=r;r=Hw(e,101341)|0;do{if(!r){r=Hw(e,101348)|0;if(r|0){r=(i[r>>0]|32)<<24>>24==108&1;s=27;break}r=Hw(e,101360)|0;if(r|0){r=mx(r)|0;s=27}}else{r=(K3(r)|0)==90&1;s=27}}while(0);if((s|0)==27)i[(t[(t[o>>2]|0)+8>>2]|0)+81>>0]=r;t[47135]=zx(Hw(e,101370)|0,20708,20724)|0;i[194954]=mx(Hw(e,101382)|0)|0;t[47138]=0;t[47139]=0;c[(t[(t[o>>2]|0)+8>>2]|0)+24>>3]=0.0;r=Hw(e,101394)|0;if((r|0)!=0?(i[r>>0]|0)!=0:0)s=32;else s=30;if(((s|0)==30?(l=Hw(e,101398)|0,l|0):0)?i[l>>0]|0:0){r=l;s=32}if((s|0)==32){a=+$3(r);c[(t[(t[o>>2]|0)+8>>2]|0)+24>>3]=a}VF(e);c[23295]=1.e+37;t[47140]=zw(e,0,101409,0)|0;t[47143]=zw(e,0,141034,0)|0;t[47144]=zw(e,0,105496,0)|0;t[47145]=zw(e,1,141048,0)|0;t[47146]=zw(e,1,141116,0)|0;t[47147]=zw(e,1,108230,0)|0;t[47148]=zw(e,1,140823,0)|0;t[47149]=zw(e,1,101418,0)|0;t[47157]=zw(e,1,141082,0)|0;t[47150]=zw(e,1,101428,0)|0;t[47151]=zw(e,1,101437,0)|0;t[47152]=zw(e,1,101446,0)|0;s=zw(e,1,108224,0)|0;t[47154]=s;if(!s)t[47154]=zw(e,1,108224,105493)|0;t[47155]=zw(e,1,101456,0)|0;t[47158]=zw(e,1,101304,0)|0;t[47172]=zw(e,1,101463,0)|0;t[47161]=zw(e,1,101409,0)|0;t[47153]=zw(e,1,105496,0)|0;t[47159]=zw(e,1,141076,0)|0;t[47160]=zw(e,1,101472,0)|0;t[47163]=zw(e,1,101484,0)|0;t[47162]=zw(e,1,101348,0)|0;t[47164]=zw(e,1,101489,0)|0;t[47165]=zw(e,1,141024,0)|0;t[47166]=zw(e,1,137297,0)|0;t[47156]=zw(e,1,101500,0)|0;t[47167]=zw(e,1,101510,0)|0;t[47168]=zw(e,1,101516,0)|0;t[47169]=zw(e,1,101522,0)|0;t[47170]=zw(e,1,101530,0)|0;t[47171]=zw(e,1,101539,0)|0;t[47173]=zw(e,1,141034,0)|0;t[47174]=zw(e,2,101541,0)|0;t[47176]=zw(e,2,140823,0)|0;t[47177]=zw(e,2,101418,0)|0;t[47179]=zw(e,2,101428,0)|0;t[47180]=zw(e,2,101437,0)|0;t[47181]=zw(e,2,101446,0)|0;t[47182]=zw(e,2,108224,0)|0;t[47183]=zw(e,2,101456,0)|0;t[47192]=zw(e,2,101548,0)|0;t[47184]=zw(e,2,101559,0)|0;t[47195]=zw(e,2,101563,0)|0;t[47196]=zw(e,2,101573,0)|0;t[47197]=zw(e,2,101583,0)|0;t[47198]=zw(e,2,101593,0)|0;t[47199]=zw(e,2,101603,0)|0;t[47200]=zw(e,2,101617,0)|0;t[47201]=zw(e,2,101631,0)|0;t[47202]=zw(e,2,101646,0)|0;t[47203]=zw(e,2,101660,0)|0;t[47175]=zw(e,2,101671,0)|0;t[47187]=zw(e,2,101304,0)|0;t[47185]=zw(e,2,141082,0)|0;t[47186]=zw(e,2,101678,0)|0;t[47188]=zw(e,2,101687,0)|0;t[47189]=zw(e,2,101697,0)|0;t[47190]=zw(e,2,101510,0)|0;t[47191]=zw(e,2,101522,0)|0;t[47204]=zw(e,2,101708,0)|0;t[47205]=zw(e,2,101717,0)|0;t[47206]=zw(e,2,101463,0)|0;r=$E(e)|0;t[(t[(t[o>>2]|0)+8>>2]|0)+88>>2]=r;r=Hw(e,141060)|0;if(r|0?i[r>>0]|0:0){e=UF(r,e)|0;t[(t[(t[o>>2]|0)+8>>2]|0)+92>>2]=e}h=u;return}function YF(e){e=e|0;var A=0,r=0;r=h;h=h+16|0;A=r;e=vx(e,zw(e,0,101807,0)|0,101815)|0;if(((((((N1(e,101821)|0)!=0?(N1(e,101829)|0)!=0:0)?(N1(e,101836)|0)!=0:0)?(N1(e,101839)|0)!=0:0)?(N1(e,101850)|0)!=0:0)?(N1(e,101861)|0)!=0:0)?(N1(e,101871)|0)!=0:0)if((N1(e,101882)|0)!=0?(N1(e,101888)|0)!=0:0)if((N1(e,101815)|0)!=0?(N1(e,101893)|0)!=0:0){t[A>>2]=e;nw(0,101898,A)|0;e=0}else e=0;else e=2;else e=1;h=r;return e|0}function FF(e){e=e|0;var A=0.0,r=0,a=0;r=Hw(e,101765)|0;e:do{if(r|0?(a=i[r>>0]|0,a<<24>>24):0)switch(a<<24>>24|0){case 97:{if(a<<24>>24!=97)break e;if(e1(r,101771)|0)break e;t[(t[(t[e+16>>2]|0)+8>>2]|0)+84>>2]=4;break e}case 99:{if(a<<24>>24!=99)break e;if(e1(r,101776)|0)break e;t[(t[(t[e+16>>2]|0)+8>>2]|0)+84>>2]=3;break e}case 101:{if(a<<24>>24!=101)break e;if(e1(r,101785)|0)break e;t[(t[(t[e+16>>2]|0)+8>>2]|0)+84>>2]=5;break e}case 102:{if(a<<24>>24!=102)break e;if(e1(r,101792)|0)break e;t[(t[(t[e+16>>2]|0)+8>>2]|0)+84>>2]=2;break e}default:{A=+$3(r);if(!(A>0.0))break e;e=t[(t[e+16>>2]|0)+8>>2]|0;t[e+84>>2]=1;c[e+16>>3]=A;break e}}}while(0);return}function MF(e,A,r){e=e|0;A=A|0;r=r|0;var a=0.0,n=0.0,f=0,l=0,s=0,o=0,u=0,b=0;b=h;h=h+48|0;o=b+32|0;f=b+16|0;s=b+8|0;l=b;u=b+40|0;i[u>>0]=0;e=Hw(e,A)|0;do{if(e){t[f>>2]=s;t[f+4>>2]=l;t[f+8>>2]=u;f=(V3(e,101749,f)|0)>1;n=+c[s>>3];a=+c[l>>3];if(f&n>0.0&a>0.0){n=n*72.0;c[r>>3]=+(~~(n+(n>=0.0?.5:-.5))|0);n=a*72.0;c[r+8>>3]=+(~~(n+(n>=0.0?.5:-.5))|0);e=(i[u>>0]|0)==33;break}i[u>>0]=0;t[o>>2]=s;t[o+4>>2]=u;o=(V3(e,101759,o)|0)>0;a=+c[s>>3];if(o&a>0.0){n=a*72.0;n=+(~~(n+(n>=0.0?.5:-.5))|0);c[r>>3]=n;c[r+8>>3]=n;e=(i[u>>0]|0)==33}else e=0}else e=0}while(0);h=b;return e&1|0}function VF(e){e=e|0;var A=0,r=0,a=0.0,n=0.0,f=0;A=Hw(e,108224)|0;do{if(A|0?i[A>>0]|0:0){r=(t[(t[e+60>>2]|0)+16>>2]|0)+113|0;i[r>>0]=i[r>>0]|8;r=(lv(A)|0)!=0;n=+wx(e,zw(e,0,101428,0)|0,14.0,1.0);f=vx(e,zw(e,0,101437,0)|0,107994)|0;A=HF(e,A,r?2:0,n,f,vx(e,zw(e,0,101446,0)|0,137314)|0)|0;f=e+16|0;t[(t[f>>2]|0)+12>>2]=A;A=Hw(e,105628)|0;r=(A|0)!=0;do{if((yd(e)|0)==(e|0)){if(r?(i[A>>0]|0)==116:0){A=1;break}A=0}else{if(r?(i[A>>0]|0)==98:0){A=0;break}A=1}}while(0);r=Hw(e,101726)|0;e:do{if(r)switch(i[r>>0]|0){case 108:{A=A|2;break e}case 114:{A=A|4;break e}default:break e}}while(0);i[(t[f>>2]|0)+275>>0]=A;if((yd(e)|0)!=(e|0)){A=t[(t[f>>2]|0)+12>>2]|0;a=+c[A+24>>3]+16.0;n=+c[A+32>>3]+8.0;e=(t[(t[(yd(e)|0)+16>>2]|0)+116>>2]&1|0)==0;A=t[f>>2]|0;r=i[A+275>>0]<<1&2;if(e){e=r&255;c[A+48+(e<<4)>>3]=a;c[A+48+(e<<4)+8>>3]=n;break}else{e=(r^3)&255;c[A+48+(e<<4)>>3]=n;c[A+48+(e<<4)+8>>3]=a;break}}}}while(0);return}function NF(e){e=e|0;var A=0,r=0,i=0;i=e+16|0;r=t[i>>2]|0;A=t[r+8>>2]|0;do{if(!A)A=r;else{r=t[A+88>>2]|0;if(r){QE(r);r=t[i>>2]|0;A=t[r+8>>2]|0;if(!A){A=r;break}}G2(t[A+92>>2]|0);A=t[i>>2]|0}}while(0);G2(t[A+8>>2]|0);i=t[i>>2]|0;t[i+8>>2]=0;SF(t[i+12>>2]|0);qd(e,0,137483);return}function RF(e){e=e|0;var A=0,r=0;r=h;h=h+16|0;A=r;switch(e|0){case 0:{e=101971;break}case 1:{e=101839;break}case 2:{e=101977;break}default:{t[A>>2]=e;nw(1,101941,A)|0;e=101971}}h=r;return e|0}function xF(e,A){e=e|0;A=A|0;var r=0,a=0,n=0,f=0,l=0,s=0,c=0,o=0;a=t[A>>2]|0;o=A+24|0;t[o>>2]=0;t[o+4>>2]=0;t[o+8>>2]=0;t[o+12>>2]=0;if(i[a>>0]|0){l=$F((U2(a)|0)+1|0)|0;i[l>>0]=0;s=A+12|0;r=l;e:while(1){A:while(1){f=a+1|0;n=i[a>>0]|0;if(!(n<<24>>24))break e;if(!(n<<24>>24==-1|((n&255)<161|(t[s>>2]|0)!=2))){i[r>>0]=n;f=i[f>>0]|0;n=r+2|0;i[r+1>>0]=f;if(!(f<<24>>24)){r=n;break e}else{r=n;a=a+2|0;continue}}switch(n<<24>>24){case 92:break A;case 10:{c=12;break A}default:{}}i[r>>0]=n;r=r+1|0;a=f}if((c|0)==12){c=0;a=r+1|0;i[r>>0]=0;JF(e,A,l,110);r=a;l=a;a=f;continue}n=i[f>>0]|0;switch(n<<24>>24|0){case 114:case 108:case 110:{n=r+1|0;i[r>>0]=0;JF(e,A,l,i[f>>0]|0);r=n;break}default:{i[r>>0]=n;r=r+1|0;n=l}}l=n;a=(i[f>>0]|0)==0?f:a+2|0}if((l|0)!=(r|0)){i[r>>0]=0;JF(e,A,l,110)}A=A+40|0;t[A>>2]=t[o>>2];t[A+4>>2]=t[o+4>>2];t[A+8>>2]=t[o+8>>2];t[A+12>>2]=t[o+12>>2]}return}function JF(e,A,r,n){e=e|0;A=A|0;r=r|0;n=n|0;var f=0.0,l=0.0,s=0,o=0,u=0,b=0,w=0,k=0,d=0,v=0;v=h;h=h+32|0;k=v+16|0;w=v;d=A+76|0;s=a[d>>1]|0;b=A+72|0;o=t[b>>2]|0;if(!o)u=KF((s*56|0)+112|0)|0;else u=eM(o,s+2|0,56,s+1|0)|0;t[b>>2]=u;s=a[d>>1]|0;o=u+(s*56|0)|0;t[o>>2]=r;i[u+(s*56|0)+48>>0]=n;if((r|0)!=0?(i[r>>0]|0)!=0:0){t[46594]=t[A+4>>2];c[23299]=+c[A+16>>3];n=t[e+144>>2]|0;t[u+(s*56|0)+4>>2]=L5[t[n>>2]&63](n,186376,1)|0;ex(w,e,o);l=+c[w>>3];c[k>>3]=l;f=+c[w+8>>3]}else{c[k>>3]=0.0;f=+(~~(+c[A+16>>3]*1.2)|0);c[u+(s*56|0)+40>>3]=f;l=0.0}a[d>>1]=(a[d>>1]|0)+1<<16>>16;d=A+24|0;c[d>>3]=+c[(+c[d>>3]>l?d:k)>>3];d=A+32|0;c[d>>3]=+c[d>>3]+f;h=v;return}function HF(e,A,r,a,f,l){e=e|0;A=A|0;r=r|0;a=+a;f=f|0;l=l|0;var s=0,o=0,u=0,b=0,w=0,k=0,d=0,v=0,g=0,m=0;m=h;h=h+32|0;d=m+16|0;k=m+8|0;w=m;g=KF(88)|0;switch(Yd(e)|0){case 0:{o=0;v=t[e+60>>2]|0;u=e;b=0;break}case 1:{o=0;v=yd(Bd(e)|0)|0;u=0;b=e;break}case 2:{o=e;v=yd(Bd(t[((t[e>>2]&3|0)==2?e:e+-48|0)+40>>2]|0)|0)|0;u=0;b=0;break}default:{o=0;v=0;u=0;b=0}}t[g+4>>2]=f;t[g+8>>2]=l;c[g+16>>3]=a;s=v+16|0;l=g+12|0;t[l>>2]=n[(t[s>>2]|0)+115>>0];e:do{if(r&4){t[g>>2]=o3(A)|0;if(r&2|0)i[g+82>>0]=1}else switch(r|0){case 2:{t[g>>2]=o3(A)|0;i[g+82>>0]=1;if(!(gt(e,g)|0))break e;switch(Yd(e)|0){case 0:{t[w>>2]=Mk(u)|0;nw(3,101983,w)|0;break e}case 1:{t[k>>2]=Mk(b)|0;nw(3,102005,k)|0;break e}case 2:{w=Mk(t[((t[o>>2]&3|0)==3?o:o+48|0)+40>>2]|0)|0;k=(Bk(v)|0)!=0;v=Mk(t[((t[o>>2]&3|0)==2?o:o+-48|0)+40>>2]|0)|0;t[d>>2]=w;t[d+4>>2]=k?137738:141747;t[d+8>>2]=v;nw(3,102026,d)|0;break e}default:break e}}case 0:{f=PF(A,e,0)|0;t[g>>2]=f;if((t[l>>2]|0)==1)f=pJ(f)|0;else f=vJ(f,v)|0;G2(t[g>>2]|0);t[g>>2]=f;xF(t[(t[s>>2]|0)+144>>2]|0,g);break e}default:ge(102053,102069,166,102078)}}while(0);h=m;return g|0}function PF(e,A,r){e=e|0;A=A|0;r=r|0;var a=0,n=0,f=0,l=0,s=0,c=0,o=0,u=0,b=0,h=0,w=0,k=0,d=0,v=0,g=0,m=0,p=0,E=0,B=0,y=0;switch(Yd(A)|0){case 0:{l=Mk(A)|0;n=U2(l)|0;a=t[(t[A+16>>2]|0)+12>>2]|0;if(a){a=t[a>>2]|0;if(!e){p=0;g=2;m=2;v=2;f=2;y=102101;u=102098;s=105493;h=195059;k=195059;w=0;d=0;b=2;E=a;B=102095}else{p=0;g=2;m=2;v=2;f=2;y=102101;u=102098;s=105493;h=195059;k=195059;w=0;d=0;b=U2(a)|0;E=a;B=102095}}else{p=0;g=2;m=2;v=2;f=2;y=102101;u=102098;s=105493;h=195059;k=195059;w=0;d=0;b=2;E=102089;B=102095}break}case 1:{l=Mk(Bd(A)|0)|0;n=U2(l)|0;s=Mk(A)|0;f=U2(s)|0;a=t[(t[A+16>>2]|0)+104>>2]|0;if(a){a=t[a>>2]|0;if(!e){p=0;g=2;m=2;v=2;y=102101;u=102098;h=195059;k=195059;w=0;d=0;b=2;E=a;B=102095}else{p=0;g=2;m=2;v=2;y=102101;u=102098;h=195059;k=195059;w=0;d=0;b=U2(a)|0;E=a;B=102095}}else{p=0;g=2;m=2;v=2;y=102101;u=102098;h=195059;k=195059;w=0;d=0;b=2;E=102089;B=102095}break}case 2:{f=A+48|0;l=Mk(yd(Bd(t[((t[A>>2]&3|0)==3?A:f)+40>>2]|0)|0)|0)|0;n=U2(l)|0;o=Mk(t[((t[A>>2]&3|0)==3?A:f)+40>>2]|0)|0;c=U2(o)|0;a=A+16|0;k=t[(t[a>>2]|0)+52>>2]|0;if(!k)d=0;else d=U2(k)|0;u=Mk(t[((t[A>>2]&3|0)==2?A:A+-48|0)+40>>2]|0)|0;a=t[a>>2]|0;h=t[a+92>>2]|0;if(!h)w=0;else w=U2(h)|0;s=U2(u)|0;a=t[a+96>>2]|0;if(a){a=t[a>>2]|0;if(!e)b=2;else b=U2(a)|0}else{b=2;a=102089}B=(Bk(yd(Bd(t[((t[A>>2]&3|0)==3?A:f)+40>>2]|0)|0)|0)|0)==0;p=1;g=c;m=s;v=c+2+(d|0?d+1|0:0)+s+(w|0?w+1|0:0)|0;f=2;y=o;s=105493;E=a;B=B?141747:137738;break}default:{p=0;g=2;m=2;v=2;f=2;n=2;y=102101;u=102098;s=105493;l=102092;h=195059;k=195059;w=0;d=0;b=2;E=102089;B=102095}}r=(r|0)==0;o=0;a=e;e:while(1){A=a+1|0;A:do{switch(i[a>>0]|0){case 0:break e;case 92:{a=a+2|0;switch(i[A>>0]|0){case 78:{c=f;break A}case 71:{c=n;break A}case 69:{c=v;break A}case 72:{c=m;break A}case 84:{c=g;break A}case 76:{c=b;break A}case 92:{if(!r){c=1;break A}break}default:{}}c=2;break}default:{c=1;a=A}}}while(0);o=o+c|0}v=$F(o+1|0)|0;b=(p|0)==0;o=(d|0)==0;A=(w|0)==0;a=v;n=e;e:while(1){c=n+1|0;f=i[n>>0]|0;switch(f<<24>>24){case 0:break e;case 92:break;default:{i[a>>0]=f;a=a+1|0;n=c;continue e}}f=n+2|0;n=i[c>>0]|0;switch(n<<24>>24|0){case 71:{n=l;while(1){e=i[n>>0]|0;i[a>>0]=e;if(!(e<<24>>24)){n=f;continue e}n=n+1|0;a=a+1|0}}case 78:{n=s;while(1){e=i[n>>0]|0;i[a>>0]=e;if(!(e<<24>>24)){n=f;continue e}n=n+1|0;a=a+1|0}}case 69:{if(b){n=f;continue e}else n=y;while(1){e=i[n>>0]|0;i[a>>0]=e;if(!(e<<24>>24))break;n=n+1|0;a=a+1|0}if(o)n=B;else{i[a>>0]=58;n=k;while(1){a=a+1|0;e=i[n>>0]|0;i[a>>0]=e;if(!(e<<24>>24)){n=B;break}else n=n+1|0}}while(1){e=i[n>>0]|0;i[a>>0]=e;if(!(e<<24>>24)){n=u;break}n=n+1|0;a=a+1|0}while(1){e=i[n>>0]|0;i[a>>0]=e;if(!(e<<24>>24))break;n=n+1|0;a=a+1|0}if(A){n=f;continue e}i[a>>0]=58;n=h;while(1){a=a+1|0;e=i[n>>0]|0;i[a>>0]=e;if(!(e<<24>>24)){n=f;continue e}else n=n+1|0}}case 84:{n=y;while(1){e=i[n>>0]|0;i[a>>0]=e;if(!(e<<24>>24)){n=f;continue e}n=n+1|0;a=a+1|0}}case 72:{n=u;while(1){e=i[n>>0]|0;i[a>>0]=e;if(!(e<<24>>24)){n=f;continue e}a=a+1|0;n=n+1|0}}case 76:{n=E;while(1){e=i[n>>0]|0;i[a>>0]=e;if(!(e<<24>>24)){n=f;continue e}a=a+1|0;n=n+1|0}}case 92:{if(!r){i[a>>0]=92;a=a+1|0;n=f;continue e}break}default:{}}i[a>>0]=92;i[a+1>>0]=n;a=a+2|0;n=f}i[a>>0]=0;return v|0}function XF(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0;if(e|0){r=e;i=0;while(1){if((i|0)>=(A|0))break;if(!i)G2(t[r>>2]|0);n=t[r+8>>2]|0;if(n|0?(a=t[r+12>>2]|0,a|0):0)F5[a&127](n);r=r+56|0;i=i+1|0}G2(e)}return}function SF(e){e=e|0;var A=0;if(e|0){G2(t[e>>2]|0);A=e+72|0;if(i[e+82>>0]|0){A=t[A>>2]|0;if(A|0)at(A,1)}else XF(t[A>>2]|0,a[e+76>>1]|0);G2(e)}return}function jF(e,A,r){e=e|0;A=A|0;r=r|0;var n=0.0,f=0,l=0.0,s=0,o=0,u=0,b=0,w=0,k=0,d=0,v=0,g=0,m=0;m=h;h=h+32|0;k=m+16|0;d=m;s=t[e+16>>2]|0;v=s+12|0;g=t[v>>2]|0;t[v>>2]=A;if(!(i[r+82>>0]|0)){w=r+76|0;if((a[w>>1]|0)>=1){_r(e,0);$r(e,t[r+8>>2]|0);switch(i[r+80>>0]|0){case 116:{l=+c[r+64>>3];n=+c[r+48>>3]*.5+l;break}case 98:{l=+c[r+64>>3];n=+c[r+48>>3]*-.5+l+ +c[r+32>>3];break}default:{l=+c[r+64>>3];n=+c[r+32>>3]*.5+l}}n=n-+c[r+16>>3];b=d+8|0;c[b>>3]=n;if(a[s+260>>1]&512)c[b>>3]=n-l;o=r+72|0;u=r+56|0;f=r+40|0;A=0;while(1){if((A|0)>=(a[w>>1]|0))break;s=t[o>>2]|0;switch(i[s+(A*56|0)+48>>0]|0){case 108:{n=+c[u>>3]-+c[f>>3]*.5;break}case 114:{n=+c[f>>3]*.5+ +c[u>>3];break}default:n=+c[u>>3]}c[d>>3]=n;t[k>>2]=t[d>>2];t[k+4>>2]=t[d+4>>2];t[k+8>>2]=t[d+8>>2];t[k+12>>2]=t[d+12>>2];Kr(e,k,s+(A*56|0)|0);c[b>>3]=+c[b>>3]-+c[(t[o>>2]|0)+(A*56|0)+40>>3];A=A+1|0}qr(e);f=18}}else{Va(e,t[r+72>>2]|0,r);f=18}if((f|0)==18)t[v>>2]=g;h=m;return}function UF(e,A){e=e|0;A=A|0;return PF(e,A,1)|0}function TF(e){e=e|0;return OF(e,0)|0}function OF(e,A){e=e|0;A=A|0;var r=0,a=0,n=0,f=0,l=0,s=0,c=0;r=t[47207]|0;if(!r){t[47208]=64;r=$F(64)|0;t[47207]=r}s=A<<24>>24==0;l=0;a=0;f=e;while(1){if(!f)break;A=i[f>>0]|0;if(!(A<<24>>24))break;e=t[47208]|0;if((l|0)>(e+-8|0)){r=e<<1;t[47208]=r;r=AM(t[47207]|0,r)|0;t[47207]=r;r=r+l|0;A=i[f>>0]|0}e:do{switch(A<<24>>24){case 38:{if(s?(_F(f)|0)!=0:0)c=18;else{a=5;A=102130}break}case 60:{a=4;A=102153;break}case 62:{a=4;A=102136;break}case 45:{a=5;A=102147;break}default:{if((a|0)!=0&A<<24>>24==32)if((i[a>>0]|0)==32){a=6;A=102123;break e}else{c=18;break e}switch(A<<24>>24){case 34:{a=6;A=102116;break e}case 39:{a=5;A=102141;break e}case 10:if(s){c=18;break e}else{a=5;A=102110;break e}default:{c=18;break e}}}}}while(0);if((c|0)==18){c=0;A=s|A<<24>>24!=13;a=A?1:5;A=A?f:102104}n=r+a|0;e=a;while(1){if(!e)break;i[r>>0]=i[A>>0]|0;e=e+-1|0;A=A+1|0;r=r+1|0}e=f;l=a+l|0;r=n;f=f+1|0;a=e}i[r>>0]=0;return t[47207]|0}function _F(e){e=e|0;var A=0,r=0;r=e+1|0;A=i[r>>0]|0;e:do{if(A<<24>>24==35){r=e+2|0;A=i[r>>0]|0;switch(A<<24>>24){case 88:case 120:break;default:{e=r;while(1){r=e+1|0;if((A+-48&255)>=10)break e;e=r;A=i[r>>0]|0}}}r=e+3|0;while(1){A=i[r>>0]|0;if((A+-48&255)>=10)switch(A<<24>>24){case 65:case 66:case 67:case 68:case 69:case 70:case 97:case 98:case 99:case 100:case 101:case 102:break;default:break e}r=r+1|0}}else while(1){e=r+1|0;if(((A&-33)+-65&255)>=26)break e;r=e;A=i[e>>0]|0}}while(0);return A<<24>>24==59|0}function qF(e){e=e|0;var A=0,r=0,a=0,n=0,f=0,l=0,s=0;A=t[47209]|0;if(!A){t[47210]=64;A=$F(64)|0;t[47209]=A;l=0}else l=0;while(1){if(!e)break;r=i[e>>0]|0;if(!(r<<24>>24))break;a=t[47210]|0;if((l|0)>(a+-8|0)){A=a<<1;t[47210]=A;A=AM(t[47209]|0,A)|0;t[47209]=A;A=A+l|0;r=i[e>>0]|0}switch(r<<24>>24){case 38:{if(!(_F(e)|0)){n=5;r=102130}else s=12;break}case 60:{n=4;r=102153;break}case 62:{n=4;r=102136;break}case 34:{n=6;r=102116;break}case 39:{n=5;r=102141;break}default:s=12}if((s|0)==12){s=0;n=1;r=e}f=A+n|0;a=n;while(1){if(!a)break;i[A>>0]=i[r>>0]|0;a=a+-1|0;r=r+1|0;A=A+1|0}l=n+l|0;A=f;e=e+1|0}i[A>>0]=0;return t[47209]|0}function KF(e){e=e|0;var A=0;if(!e)e=0;else{A=$F(e)|0;z6(A|0,0,e|0)|0;e=A}return e|0}function $F(e){e=e|0;if(e){e=Z2(e)|0;if(!e){G3(111740,14,1,t[15712]|0)|0;e=0}}else e=0;return e|0}function eM(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;e=Q2(e,P(r,A)|0)|0;if(!((A|0)!=0&(e|0)==0)){if(A>>>0>i>>>0)z6(e+(P(i,r)|0)|0,0,P(A-i|0,r)|0)|0}else G3(111740,14,1,t[15712]|0)|0;return e|0}function AM(e,A){e=e|0;A=A|0;e=Q2(e,A)|0;if((A|0)!=0&(e|0)==0)G3(111740,14,1,t[15712]|0)|0;return e|0}function rM(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0,n=0,f=0,l=0,s=0.0,o=0,u=0,b=0,w=0,k=0,g=0,m=0;m=h;h=h+80|0;w=m+40|0;b=m+32|0;u=m+24|0;o=m;k=4;g=Z2(40)|0;t[g>>2]=0;a=m+68|0;n=m+64|0;if(0){d=0;be(62,e|0,a|0,n|0);f=d;d=0;if((f|0)!=0&(v|0)!=0){l=L6(t[f>>2]|0,g|0,k|0)|0;if(!l)aA(f|0,v|0);G=v}else l=-1;if((l|0)!=1){l=t[15712]|0;f=t[a>>2]|0;a=t[n>>2]|0;d=0;t[o>>2]=102202;t[o+4>>2]=f;t[o+8>>2]=a;t[o+12>>2]=r;t[o+16>>2]=A;te(32,l|0,102158,o|0)|0;a=d;d=0;if((a|0)!=0&(v|0)!=0){n=L6(t[a>>2]|0,g|0,k|0)|0;if(!n)aA(a|0,v|0);G=v}else n=-1;if((n|0)!=1){d=0;ce(1);a=d;d=0;if((a|0)!=0&(v|0)!=0){n=L6(t[a>>2]|0,g|0,k|0)|0;if(!n)aA(a|0,v|0);G=v}else n=-1;if((n|0)!=1)l=6;else{a=G;l=15}}else{a=G;l=15}}else{a=G;l=15}}else l=6;do{if((l|0)==6){d=0;a=re(27,e|0)|0;n=d;d=0;if((n|0)!=0&(v|0)!=0){f=L6(t[n>>2]|0,g|0,k|0)|0;if(!f)aA(n|0,v|0);G=v}else f=-1;if((f|0)!=1){if(!a){d=0;ce(2);a=d;d=0;if((a|0)!=0&(v|0)!=0){n=L6(t[a>>2]|0,g|0,k|0)|0;if(!n)aA(a|0,v|0);G=v}else n=-1;if((n|0)==1){a=G;l=15;break}}if((r|0)<1){d=0;ce(3);a=d;d=0;if((a|0)!=0&(v|0)!=0){n=L6(t[a>>2]|0,g|0,k|0)|0;if(!n)aA(a|0,v|0);G=v}else n=-1;if((n|0)==1){a=G;l=15;break}a=0;break}else{t[47211]=(i|0)>-1?i:30;g=G6(188848,1,g|0,k|0)|0;k=G;d=0;a=d;d=0;if((a|0)!=0&(v|0)!=0){n=L6(t[a>>2]|0,g|0,k|0)|0;if(!n)aA(a|0,v|0);G=v}else n=-1;if((n|0)==1){a=G;l=15;break}a=0;l=15;break}}else{a=G;l=15}}}while(0);e:do{if((l|0)==15){A:while(1){if(a|0){a=2;break e}d=0;ce(4);a=d;d=0;if((a|0)!=0&(v|0)!=0){n=L6(t[a>>2]|0,g|0,k|0)|0;if(!n)aA(a|0,v|0);G=v}else n=-1;if((n|0)==1){a=G;l=15;continue}e=t[15712]|0;o=0;while(1){d=0;l=Ae(2)|0;a=d;d=0;if((a|0)!=0&(v|0)!=0){n=L6(t[a>>2]|0,g|0,k|0)|0;if(!n)aA(a|0,v|0);G=v}else n=-1;if((n|0)==1){a=G;l=15;continue A}if(!l)break;d=0;a=re(28,l|0)|0;n=d;d=0;if((n|0)!=0&(v|0)!=0){f=L6(t[n>>2]|0,g|0,k|0)|0;if(!f)aA(n|0,v|0);G=v}else f=-1;if((f|0)==1){a=G;l=15;continue A}d=0;ue(25,l|0,a|0);a=d;d=0;if((a|0)!=0&(v|0)!=0){n=L6(t[a>>2]|0,g|0,k|0)|0;if(!n)aA(a|0,v|0);G=v}else n=-1;if((n|0)==1){a=G;l=15;continue A}o=o+1|0;do{if(((o|0)%100|0|0)==0&0!=0){a=(o|0)%1e3|0;if((a|0)==100){d=0;ie(93,102202,e|0)|0;a=d;d=0;if((a|0)!=0&(v|0)!=0){n=L6(t[a>>2]|0,g|0,k|0)|0;if(!n)aA(a|0,v|0);G=v}else n=-1;if((n|0)==1){a=G;l=15;continue A}d=0;t[u>>2]=o;te(32,e|0,102220,u|0)|0;a=d;d=0;if((a|0)!=0&(v|0)!=0){n=L6(t[a>>2]|0,g|0,k|0)|0;if(!n)aA(a|0,v|0);G=v}else n=-1;if((n|0)==1){a=G;l=15;continue A}break}d=0;t[b>>2]=o;te(32,e|0,102220,b|0)|0;n=d;d=0;if((n|0)!=0&(v|0)!=0){f=L6(t[n>>2]|0,g|0,k|0)|0;if(!f)aA(n|0,v|0);G=v}else f=-1;if((f|0)==1){a=G;l=15;continue A}if(!a){d=0;ie(94,10,e|0)|0;a=d;d=0;if((a|0)!=0&(v|0)!=0){n=L6(t[a>>2]|0,g|0,k|0)|0;if(!n)aA(a|0,v|0);G=v}else n=-1;if((n|0)==1){a=G;l=15;continue A}}}}while(0);if((o|0)>=(r|0))break}switch(A|0){case 1:{d=0;ce(5);a=d;d=0;if((a|0)!=0&(v|0)!=0){n=L6(t[a>>2]|0,g|0,k|0)|0;if(!n)aA(a|0,v|0);G=v}else n=-1;if((n|0)==1){a=G;l=15;continue A}break}case 2:{d=0;ce(6);a=d;d=0;if((a|0)!=0&(v|0)!=0){n=L6(t[a>>2]|0,g|0,k|0)|0;if(!n)aA(a|0,v|0);G=v}else n=-1;if((n|0)==1){a=G;l=15;continue A}break}default:{d=0;ce(7);a=d;d=0;if((a|0)!=0&(v|0)!=0){n=L6(t[a>>2]|0,g|0,k|0)|0;if(!n)aA(a|0,v|0);G=v}else n=-1;if((n|0)==1){a=G;l=15;continue A}d=0;ce(3);a=d;d=0;if((a|0)!=0&(v|0)!=0){n=L6(t[a>>2]|0,g|0,k|0)|0;if(!n)aA(a|0,v|0);G=v}else n=-1;if((n|0)==1){a=G;l=15;continue A}}}if(!0){a=0;break e}if((o|0)>99){d=0;ie(94,10,e|0)|0;a=d;d=0;if((a|0)!=0&(v|0)!=0){n=L6(t[a>>2]|0,g|0,k|0)|0;if(!n)aA(a|0,v|0);G=v}else n=-1;if((n|0)==1){a=G;l=15;continue}}a=t[47251]|0;n=t[47252]|0;d=0;s=+K(1);f=d;d=0;if((f|0)!=0&(v|0)!=0){l=L6(t[f>>2]|0,g|0,k|0)|0;if(!l)aA(f|0,v|0);G=v}else l=-1;if((l|0)==1){a=G;l=15;continue}d=0;t[w>>2]=102202;t[w+4>>2]=a;t[w+8>>2]=n;t[w+12>>2]=o;c[w+16>>3]=s;te(32,e|0,102224,w|0)|0;a=d;d=0;if((a|0)!=0&(v|0)!=0){n=L6(t[a>>2]|0,g|0,k|0)|0;if(!n)aA(a|0,v|0);G=v}else n=-1;if((n|0)==1){a=G;l=15}else break}a=0}}while(0);G2(g|0);h=m;return a|0}function iM(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0,n=0,f=0;e=(t[e+16>>2]|0)+192|0;i=0;f=0;while(1){e=t[e>>2]|0;if(!e)break;n=t[e+16>>2]|0;a=t[n+180>>2]|0;e=0;while(1){if(!(t[a+(e<<2)>>2]|0))break;e=e+1|0;i=i+1|0}e=n+164|0;f=f+1|0}t[A>>2]=f;t[r>>2]=i;return}function aM(e){e=e|0;var A=0,r=0,a=0,n=0,l=0,s=0,c=0,o=0;t[47254]=e;t[47261]=0;t[47252]=0;t[47251]=0;l=e+16|0;e=(t[l>>2]|0)+192|0;n=0;r=0;while(1){e=t[e>>2]|0;if(!e)break;a=t[e+16>>2]|0;i[a+157>>0]=0;n=n+1|0;t[47251]=n;A=t[a+180>>2]|0;e=0;while(1){if(!(t[A+(e<<2)>>2]|0))break;c=r+1|0;t[47252]=c;e=e+1|0;r=c}e=a+164|0}e=t[47262]|0;if(!e)e=$F(n<<2)|0;else e=AM(e,n<<2)|0;t[47262]=e;t[47263]=0;e=t[47256]|0;if(!e)e=$F(t[47251]<<2)|0;else e=AM(e,t[47251]<<2)|0;t[47256]=e;t[47255]=0;A=1;e=(t[l>>2]|0)+192|0;while(1){e=t[e>>2]|0;if(!e)break;c=e+16|0;l=t[c>>2]|0;s=l+292|0;t[s>>2]=0;l=t[l+172>>2]|0;n=A;a=0;e=0;while(1){A=t[l+(a<<2)>>2]|0;if(!A)break;r=e+1|0;t[s>>2]=r;e=t[A+16>>2]|0;t[e+160>>2]=0;t[e+164>>2]=-1;if(!n)e=0;else{o=t[A>>2]&3;e=((t[(t[(t[((o|0)==2?A:A+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(t[(t[(t[((o|0)==3?A:A+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)|0)<(f[e+170>>1]|0|0)?0:n}n=e;a=a+1|0;e=r}e=KF((a<<2)+4|0)|0;A=t[c>>2]|0;t[A+264>>2]=e;t[A+268>>2]=0;A=t[A+180>>2]|0;e=0;do{o=e;e=e+1|0}while((t[A+(o<<2)>>2]|0)!=0);A=KF(e<<2)|0;e=t[c>>2]|0;t[e+272>>2]=A;t[e+276>>2]=0;A=n;e=e+164|0}return A|0}function tM(){var e=0,A=0,r=0,i=0,a=0,n=0,l=0,s=0,c=0,o=0,u=0,b=0;b=h;h=h+16|0;u=b+8|0;c=b;o=cx(t[47251]|0)|0;e=(t[(t[47254]|0)+16>>2]|0)+192|0;while(1){A=t[e>>2]|0;if(!A){s=0;break}r=A+16|0;e=t[r>>2]|0;if(!(t[e+292>>2]|0)){ux(o,A);e=t[r>>2]|0}e=e+164|0}while(1){e=bx(o)|0;if(!e)break;l=e+16|0;e=t[l>>2]|0;i=e+232|0;t[i>>2]=0;r=t[e+172>>2]|0;A=0;n=0;while(1){a=t[r+(A<<2)>>2]|0;if(!a){i=0;break}a=(t[(t[(t[((t[a>>2]&3|0)==3?a:a+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)+(f[(t[a+16>>2]|0)+170>>1]|0)|0;a=(n|0)>(a|0)?n:a;t[i>>2]=a;A=A+1|0;n=a}while(1){A=t[(t[e+180>>2]|0)+(i<<2)>>2]|0;if(!A)break;r=A+-48|0;a=(t[(t[((t[A>>2]&3|0)==2?A:r)+40>>2]|0)+16>>2]|0)+292|0;n=t[a>>2]|0;t[a>>2]=n+-1;if((n|0)<2){ux(o,t[((t[A>>2]&3|0)==2?A:r)+40>>2]|0);e=t[l>>2]|0}i=i+1|0}s=s+1|0}e:do{if((s|0)!=(t[47251]|0)){nw(1,102556,c)|0;e=(t[(t[47254]|0)+16>>2]|0)+192|0;while(1){A=t[e>>2]|0;if(!A)break e;r=A+16|0;e=t[r>>2]|0;if(t[e+292>>2]|0){c=Mk(A)|0;e=t[(t[r>>2]|0)+292>>2]|0;t[u>>2]=c;t[u+4>>2]=e;nw(3,102578,u)|0;e=t[r>>2]|0}e=e+164|0}}}while(0);ox(o);h=b;return}function nM(){var e=0,A=0,r=0;e=(t[(t[47254]|0)+16>>2]|0)+192|0;while(1){e=t[e>>2]|0;if(!e)break;r=e+16|0;e=t[r>>2]|0;A=t[e+264>>2]|0;if(A){G2(A);e=t[r>>2]|0}A=t[e+272>>2]|0;if(A){G2(A);e=t[r>>2]|0}i[e+157>>0]=0;e=e+164|0}return}function fM(){var e=0,A=0,r=0,i=0,a=0;e=(t[(t[47254]|0)+16>>2]|0)+192|0;while(1){e=t[e>>2]|0;if(!e)break;e=t[e+16>>2]|0;t[e+280>>2]=0;e=e+164|0}a=KF(t[47251]<<2)|0;i=0;e=(t[(t[47254]|0)+16>>2]|0)+192|0;while(1){A=t[e>>2]|0;if(!A)break;r=A+16|0;e=t[r>>2]|0;if(!(t[e+280>>2]|0)){t[a+(i<<2)>>2]=mM(A)|0;A=i+1|0;e=t[r>>2]|0}else A=i;i=A;e=e+164|0}e=pM(a,i)|0;while(1){if((EM(e)|0)<=1)break;IM(e,t[(CM(yM(BM(e)|0)|0)|0)+8>>2]|0)}G2(e);e=0;while(1){if((e|0)>=(i|0))break;G2(t[a+(e<<2)>>2]|0);e=e+1|0}G2(a);if((t[47255]|0)==((t[47251]|0)+-1|0)){ZM();return}else ge(102301,102331,523,102336)}function lM(){var e=0,A=0,r=0,i=0,a=0,n=0,f=0,l=0,s=0,c=0;l=t[47261]|0;a=t[47255]|0;s=t[47256]|0;c=t[47211]|0;A=0;e=0;n=l;while(1){if((n|0)>=(a|0)){f=8;break}i=t[s+(n<<2)>>2]|0;r=t[(t[i+16>>2]|0)+160>>2]|0;if((r|0)<0){if(!e)e=i;else e=(t[(t[e+16>>2]|0)+160>>2]|0)>(r|0)?i:e;A=A+1|0;if((A|0)>=(c|0))break}i=n+1|0;t[47261]=i;n=i}if((f|0)==8)if((l|0)>0){a=0;while(1){if((a|0)>=(l|0))break;r=t[s+(a<<2)>>2]|0;i=t[(t[r+16>>2]|0)+160>>2]|0;if((i|0)<0){if(!e)e=r;else e=(t[(t[e+16>>2]|0)+160>>2]|0)>(i|0)?r:e;A=A+1|0;if((A|0)>=(c|0))break}a=a+1|0}t[47261]=a}return e|0}function sM(e){e=e|0;var A=0,r=0;A=t[e>>2]&3;r=t[((A|0)==3?e:e+48|0)+40>>2]|0;e=t[((A|0)==2?e:e+-48|0)+40>>2]|0;A=(t[(t[r+16>>2]|0)+288>>2]|0)<(t[(t[e+16>>2]|0)+288>>2]|0);e=A?r:e;t[47257]=0;t[47258]=2147483647;r=t[e+16>>2]|0;t[47259]=t[r+284>>2];t[47260]=t[r+288>>2];if(A)gM(e);else vM(e);return t[47257]|0}function cM(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0,l=0,s=0,c=0,o=0,u=0,b=0;b=h;h=h+16|0;u=b;a=t[A>>2]&3;o=A+-48|0;s=A+48|0;c=A+16|0;a=(t[(t[(t[((a|0)==2?A:o)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(t[(t[(t[((a|0)==3?A:s)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(f[(t[c>>2]|0)+170>>1]|0)|0;do{if((a|0)>0){r=t[e>>2]&3;n=t[((r|0)==3?e:e+48|0)+40>>2]|0;l=t[n+16>>2]|0;if(((t[l+276>>2]|0)+(t[l+268>>2]|0)|0)==1){hM(n,a);break}r=t[((r|0)==2?e:e+-48|0)+40>>2]|0;i=t[r+16>>2]|0;if(((t[i+276>>2]|0)+(t[i+268>>2]|0)|0)==1){hM(r,0-a|0);break}if((t[l+288>>2]|0)<(t[i+288>>2]|0)){hM(n,a);break}else{hM(r,0-a|0);break}}}while(0);r=e+16|0;i=t[(t[r>>2]|0)+160>>2]|0;a=t[A>>2]&3;a=wM(t[((a|0)==3?A:s)+40>>2]|0,t[((a|0)==2?A:o)+40>>2]|0,i,1)|0;l=t[A>>2]&3;if((wM(t[((l|0)==2?A:o)+40>>2]|0,t[((l|0)==3?A:s)+40>>2]|0,i,0)|0)==(a|0)){t[(t[c>>2]|0)+160>>2]=0-i;t[(t[r>>2]|0)+160>>2]=0;kM(e,A);u=t[a+16>>2]|0;dM(a,t[u+280>>2]|0,t[u+284>>2]|0)|0;h=b;return}else{nw(1,102262,u)|0;aA(188848,1)}}function oM(){var e=0,A=0,r=0,a=0,n=0,l=0,s=0,c=0,o=0,u=0,b=0,h=0;bM();u=KF((t[47253]<<2)+4|0)|0;A=t[47253]|0;e=0;while(1){if((e|0)>(A|0))break;t[u+(e<<2)>>2]=0;e=e+1|0}e=(t[(t[47254]|0)+16>>2]|0)+192|0;A=e;while(1){A=t[A>>2]|0;if(!A)break;A=t[A+16>>2]|0;if(!(i[A+156>>0]|0)){o=u+(t[A+232>>2]<<2)|0;t[o>>2]=(t[o>>2]|0)+1}A=A+164|0}while(1){e=t[e>>2]|0;if(!e)break;o=e+16|0;e=t[o>>2]|0;if(!(i[e+156>>0]|0)){n=t[47253]|0;r=t[e+172>>2]|0;c=0;s=0;A=0;while(1){a=t[r+(A<<2)>>2]|0;if(!a)break;b=t[a+16>>2]|0;l=(t[(t[(t[((t[a>>2]&3|0)==3?a:a+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)+(f[b+170>>1]|0)|0;c=(t[b+156>>2]|0)+c|0;s=(s|0)>(l|0)?s:l;A=A+1|0}a=t[e+180>>2]|0;l=0;A=0;while(1){r=t[a+(A<<2)>>2]|0;if(!r)break;h=t[r+16>>2]|0;b=(t[(t[(t[((t[r>>2]&3|0)==2?r:r+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(f[h+170>>1]|0)|0;l=(t[h+156>>2]|0)+l|0;n=(n|0)<(b|0)?n:b;A=A+1|0}A=(s|0)>0?s:0;if((c|0)==(l|0)){a=A;r=A;while(1){A=r+1|0;if((r|0)>=(n|0))break;a=(t[u+(A<<2)>>2]|0)<(t[u+(a<<2)>>2]|0)?A:a;r=A}h=e+232|0;b=u+(t[h>>2]<<2)|0;t[b>>2]=(t[b>>2]|0)+-1;b=u+(a<<2)|0;t[b>>2]=(t[b>>2]|0)+1;t[h>>2]=a}A=t[e+264>>2]|0;if(A){G2(A);e=t[o>>2]|0}A=t[e+272>>2]|0;if(A){G2(A);e=t[o>>2]|0}i[e+157>>0]=0}e=e+164|0}G2(u);return}function uM(){var e=0,A=0,r=0,i=0,a=0,n=0;A=0;while(1){if((A|0)>=(t[47255]|0))break;e=t[(t[47256]|0)+(A<<2)>>2]|0;do{if(((t[(t[e+16>>2]|0)+160>>2]|0)==0?(r=sM(e)|0,r|0):0)?(i=t[r>>2]&3,i=(t[(t[(t[((i|0)==2?r:r+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(t[(t[(t[((i|0)==3?r:r+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(f[(t[r+16>>2]|0)+170>>1]|0)|0,(i|0)>=2):0){n=t[e>>2]&3;a=t[((n|0)==3?e:e+48|0)+40>>2]|0;e=t[((n|0)==2?e:e+-48|0)+40>>2]|0;if((t[(t[a+16>>2]|0)+288>>2]|0)<(t[(t[e+16>>2]|0)+288>>2]|0)){hM(a,i>>>1);break}else{hM(e,(i|0)/-2|0);break}}}while(0);A=A+1|0}nM();return}function bM(){var e=0,A=0,r=0,a=0,n=0,f=0,l=0,s=0;l=h;h=h+16|0;f=l;t[f>>2]=0;t[f>>2]=2147483647;t[47253]=-2147483647;e=(t[(t[47254]|0)+16>>2]|0)+192|0;r=e;n=2147483647;a=-2147483647;while(1){A=t[r>>2]|0;if(!A)break;r=t[A+16>>2]|0;if(!(i[r+156>>0]|0)){s=t[r+232>>2]|0;A=(n|0)<(s|0)?n:s;t[f>>2]=A;a=(a|0)>(s|0)?a:s;t[47253]=a}else A=n;r=r+164|0;n=A}if(n|0){while(1){e=t[e>>2]|0;if(!e)break;e=t[e+16>>2]|0;s=e+232|0;t[s>>2]=(t[s>>2]|0)-n;e=e+164|0}t[47253]=a-n;t[f>>2]=0}h=l;return}function hM(e,A){e=e|0;A=A|0;var r=0,i=0,a=0;a=e+16|0;e=t[a>>2]|0;i=e+232|0;t[i>>2]=(t[i>>2]|0)-A;i=0;while(1){r=t[(t[e+272>>2]|0)+(i<<2)>>2]|0;if(!r){i=0;break}if((r|0)!=(t[e+280>>2]|0)){hM(t[((t[r>>2]&3|0)==2?r:r+-48|0)+40>>2]|0,A);e=t[a>>2]|0}i=i+1|0}while(1){r=t[(t[e+264>>2]|0)+(i<<2)>>2]|0;if(!r)break;if((r|0)!=(t[e+280>>2]|0)){hM(t[((t[r>>2]&3|0)==3?r:r+48|0)+40>>2]|0,A);e=t[a>>2]|0}i=i+1|0}return}function wM(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0,n=0,f=0,l=0,s=0;n=(i|0)==0&1;f=0-r|0;a=t[(t[A+16>>2]|0)+288>>2]|0;A=e;while(1){e=t[A+16>>2]|0;if((t[e+284>>2]|0)<=(a|0)?(a|0)<=(t[e+288>>2]|0):0)break;e=t[e+280>>2]|0;l=e+48|0;s=(t[e+16>>2]|0)+160|0;t[s>>2]=(((A|0)==(t[((t[e>>2]&3|0)==3?e:l)+40>>2]|0)?i:n)|0?r:f)+(t[s>>2]|0);s=t[e>>2]&3;l=t[((s|0)==3?e:l)+40>>2]|0;e=t[((s|0)==2?e:e+-48|0)+40>>2]|0;A=(t[(t[l+16>>2]|0)+288>>2]|0)>(t[(t[e+16>>2]|0)+288>>2]|0)?l:e}return A|0}function kM(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0,f=0,l=0,s=0,c=0;l=e+16|0;i=(t[l>>2]|0)+164|0;t[(t[A+16>>2]|0)+164>>2]=t[i>>2];t[(t[47256]|0)+(t[i>>2]<<2)>>2]=A;t[(t[l>>2]|0)+164>>2]=-1;l=(t[((t[e>>2]&3|0)==3?e:e+48|0)+40>>2]|0)+16|0;i=t[l>>2]|0;n=i+276|0;a=t[n>>2]|0;s=a+-1|0;t[n>>2]=s;n=i+272|0;f=0;while(1){if((f|0)>=(a|0)){c=3;break}r=t[n>>2]|0;if((t[r+(f<<2)>>2]|0)==(e|0))break;f=f+1|0}if((c|0)==3)r=t[i+272>>2]|0;t[r+(f<<2)>>2]=t[r+(s<<2)>>2];t[(t[(t[l>>2]|0)+272>>2]|0)+(s<<2)>>2]=0;l=(t[((t[e>>2]&3|0)==2?e:e+-48|0)+40>>2]|0)+16|0;i=t[l>>2]|0;n=i+268|0;a=t[n>>2]|0;s=a+-1|0;t[n>>2]=s;n=i+264|0;f=0;while(1){if((f|0)>=(a|0)){c=8;break}r=t[n>>2]|0;if((t[r+(f<<2)>>2]|0)==(e|0))break;f=f+1|0}if((c|0)==8)r=t[i+264>>2]|0;t[r+(f<<2)>>2]=t[r+(s<<2)>>2];t[(t[(t[l>>2]|0)+264>>2]|0)+(s<<2)>>2]=0;c=(t[((t[A>>2]&3|0)==3?A:A+48|0)+40>>2]|0)+16|0;e=t[c>>2]|0;s=t[e+272>>2]|0;e=e+276|0;l=t[e>>2]|0;t[e>>2]=l+1;t[s+(l<<2)>>2]=A;c=t[c>>2]|0;t[(t[c+272>>2]|0)+(t[c+276>>2]<<2)>>2]=0;c=(t[((t[A>>2]&3|0)==2?A:A+-48|0)+40>>2]|0)+16|0;l=t[c>>2]|0;s=t[l+264>>2]|0;l=l+268|0;e=t[l>>2]|0;t[l>>2]=e+1;t[s+(e<<2)>>2]=A;c=t[c>>2]|0;t[(t[c+264>>2]|0)+(t[c+268>>2]<<2)>>2]=0;return}function dM(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0,n=0;n=e+16|0;e=t[n>>2]|0;t[e+280>>2]=A;t[e+284>>2]=r;a=0;while(1){i=t[(t[e+272>>2]|0)+(a<<2)>>2]|0;if(!i){a=0;break}if((i|0)!=(A|0)){r=dM(t[((t[i>>2]&3|0)==2?i:i+-48|0)+40>>2]|0,i,r)|0;e=t[n>>2]|0}a=a+1|0}while(1){i=t[(t[e+264>>2]|0)+(a<<2)>>2]|0;if(!i)break;if((i|0)!=(A|0)){r=dM(t[((t[i>>2]&3|0)==3?i:i+48|0)+40>>2]|0,i,r)|0;e=t[n>>2]|0}a=a+1|0}t[e+288>>2]=r;return r+1|0}function vM(e){e=e|0;var A=0,r=0,i=0,a=0,n=0,l=0,s=0;l=e+16|0;a=0;while(1){e=t[l>>2]|0;r=t[(t[e+180>>2]|0)+(a<<2)>>2]|0;if(!r){r=0;break}i=t[r+16>>2]|0;if((t[i+164>>2]|0)<0){e=t[r>>2]&3;A=t[(t[((e|0)==2?r:r+-48|0)+40>>2]|0)+16>>2]|0;s=t[A+288>>2]|0;if((t[47259]|0)>(s|0)|(s|0)>(t[47260]|0)?(n=(t[A+232>>2]|0)-(t[(t[(t[((e|0)==3?r:r+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(f[i+170>>1]|0)|0,(n|0)<(t[47258]|0)|(t[47257]|0)==0):0){t[47257]=r;t[47258]=n}}else{A=t[((t[r>>2]&3|0)==2?r:r+-48|0)+40>>2]|0;if((t[(t[A+16>>2]|0)+288>>2]|0)<(t[e+288>>2]|0))vM(A)}a=a+1|0}while(1){A=t[(t[e+264>>2]|0)+(r<<2)>>2]|0;if(!((A|0)!=0&(t[47258]|0)>0))break;A=t[((t[A>>2]&3|0)==3?A:A+48|0)+40>>2]|0;if((t[(t[A+16>>2]|0)+288>>2]|0)<(t[e+288>>2]|0)){vM(A);e=t[l>>2]|0}r=r+1|0}return}function gM(e){e=e|0;var A=0,r=0,i=0,a=0,n=0,l=0,s=0;l=e+16|0;a=0;while(1){e=t[l>>2]|0;r=t[(t[e+172>>2]|0)+(a<<2)>>2]|0;if(!r){r=0;break}i=t[r+16>>2]|0;if((t[i+164>>2]|0)<0){e=t[r>>2]&3;A=t[(t[((e|0)==3?r:r+48|0)+40>>2]|0)+16>>2]|0;s=t[A+288>>2]|0;if((t[47259]|0)>(s|0)|(s|0)>(t[47260]|0)?(n=(t[(t[(t[((e|0)==2?r:r+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(t[A+232>>2]|0)-(f[i+170>>1]|0)|0,(n|0)<(t[47258]|0)|(t[47257]|0)==0):0){t[47257]=r;t[47258]=n}}else{A=t[((t[r>>2]&3|0)==3?r:r+48|0)+40>>2]|0;if((t[(t[A+16>>2]|0)+288>>2]|0)<(t[e+288>>2]|0))gM(A)}a=a+1|0}while(1){A=t[(t[e+272>>2]|0)+(r<<2)>>2]|0;if(!((A|0)!=0&(t[47258]|0)>0))break;A=t[((t[A>>2]&3|0)==2?A:A+-48|0)+40>>2]|0;if((t[(t[A+16>>2]|0)+288>>2]|0)<(t[e+288>>2]|0)){gM(A);e=t[l>>2]|0}r=r+1|0}return}function mM(e){e=e|0;var A=0;A=KF(16)|0;t[A>>2]=e;t[A+4>>2]=MM(e,A)|0;t[A+12>>2]=A;return A|0}function pM(e,A){e=e|0;A=A|0;var r=0,i=0;i=KF(8)|0;t[i>>2]=e;t[i+4>>2]=A;r=0;while(1){if((r|0)>=(A|0))break;t[(t[e+(r<<2)>>2]|0)+8>>2]=r;r=r+1|0}r=(A|0)/2|0;while(1){if((r|0)<=-1)break;IM(i,r);r=r+-1|0}return i|0}function EM(e){e=e|0;return t[e+4>>2]|0}function BM(e){e=e|0;var A=0,r=0,i=0,a=0;a=t[e>>2]|0;A=t[a>>2]|0;t[A+8>>2]=-1;r=e+4|0;i=(t[r>>2]|0)+-1|0;t[a>>2]=t[a+(i<<2)>>2];a=t[e>>2]|0;t[(t[a>>2]|0)+8>>2]=0;t[a+(i<<2)>>2]=A;t[r>>2]=i;IM(e,0);return A|0}function yM(e){e=e|0;return FM(t[e>>2]|0,0,0)|0}function CM(e){e=e|0;var A=0,r=0,i=0,a=0,n=0,l=0;A=e+16|0;if((t[(t[A>>2]|0)+164>>2]|0)>-1)ge(102350,102331,463,102364);a=e+48|0;r=DM(t[((t[e>>2]&3|0)==3?e:a)+40>>2]|0)|0;l=e+-48|0;i=DM(t[((t[e>>2]&3|0)==2?e:l)+40>>2]|0)|0;n=t[e>>2]&3;A=(t[(t[(t[((n|0)==2?e:l)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(t[(t[(t[((n|0)==3?e:a)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(f[(t[A>>2]|0)+170>>1]|0)|0;if((t[r+8>>2]|0)==-1)zM(t[r>>2]|0,0,A);else zM(t[i>>2]|0,0,0-A|0);WM(e);return YM(r,i)|0}function IM(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0,f=0,l=0;f=t[e>>2]|0;n=t[e+4>>2]|0;while(1){e=A<<1;a=e+2|0;e=e|1;if(!((e|0)<(n|0)?(t[(t[f+(e<<2)>>2]|0)+4>>2]|0)<(t[(t[f+(A<<2)>>2]|0)+4>>2]|0):0))e=A;if((a|0)>=(n|0))break;r=f+(a<<2)|0;i=t[r>>2]|0;if((a|0)==(A|0)?1:(t[i+4>>2]|0)>=(t[(t[f+(e<<2)>>2]|0)+4>>2]|0))break;l=f+(A<<2)|0;e=t[l>>2]|0;t[l>>2]=i;t[r>>2]=e;t[(t[l>>2]|0)+8>>2]=A;t[e+8>>2]=a;A=a}return}function ZM(){dM(t[(t[(t[47254]|0)+16>>2]|0)+192>>2]|0,0,1)|0;GM(t[(t[(t[47254]|0)+16>>2]|0)+192>>2]|0,0);return}function GM(e,A){e=e|0;A=A|0;var r=0,i=0,a=0;a=e+16|0;r=0;while(1){e=t[a>>2]|0;i=t[(t[e+272>>2]|0)+(r<<2)>>2]|0;if(!i){i=0;break}if((i|0)!=(A|0))GM(t[((t[i>>2]&3|0)==2?i:i+-48|0)+40>>2]|0,i);r=r+1|0}while(1){r=t[(t[e+264>>2]|0)+(i<<2)>>2]|0;if(!r)break;if((r|0)!=(A|0)){GM(t[((t[r>>2]&3|0)==3?r:r+48|0)+40>>2]|0,r);e=t[a>>2]|0}i=i+1|0}if(A|0)LM(A);return}function LM(e){e=e|0;var A=0,r=0,i=0,a=0,n=0,f=0,l=0;A=t[e>>2]&3;r=t[((A|0)==3?e:e+48|0)+40>>2]|0;i=t[r+16>>2]|0;if((t[i+280>>2]|0)==(e|0))l=1;else{i=t[((A|0)==2?e:e+-48|0)+40>>2]|0;l=-1;r=i;i=t[i+16>>2]|0}n=t[i+180>>2]|0;A=0;a=0;while(1){f=t[n+(a<<2)>>2]|0;if(!f)break;A=(QM(f,r,l)|0)+A|0;a=a+1|0}n=t[i+172>>2]|0;i=0;while(1){a=t[n+(i<<2)>>2]|0;if(!a)break;A=(QM(a,r,l)|0)+A|0;i=i+1|0}t[(t[e+16>>2]|0)+160>>2]=A;return}function QM(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0,n=0,f=0,l=0;f=t[e>>2]&3;l=(f|0)==3?e:e+48|0;i=t[l+40>>2]|0;if((i|0)==(A|0))i=t[((f|0)==2?e:e+-48|0)+40>>2]|0;n=t[A+16>>2]|0;a=t[(t[i+16>>2]|0)+288>>2]|0;if((t[n+284>>2]|0)<=(a|0)?(a|0)<=(t[n+288>>2]|0):0){a=t[e+16>>2]|0;if((t[a+164>>2]|0)>-1)i=t[a+160>>2]|0;else i=0;n=1;i=i-(t[a+156>>2]|0)|0}else{n=0;i=t[(t[e+16>>2]|0)+156>>2]|0}l=(t[((r|0)>0?(f|0)==2?e:e+-48|0:l)+40>>2]|0)==(A|0)?1:-1;return(((n?l:0-l|0)|0)<0?0-i|0:i)|0}function DM(e){e=e|0;var A=0,r=0;e=t[(t[e+16>>2]|0)+280>>2]|0;while(1){A=e+12|0;r=t[A>>2]|0;if(!((r|0)!=(e|0)&(r|0)!=0))break;e=t[r+12>>2]|0;if(!e){e=r;continue}t[A>>2]=e}return e|0}function zM(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0,n=0,f=0;f=e+16|0;i=t[f>>2]|0;n=i+232|0;t[n>>2]=(t[n>>2]|0)+r;n=0;while(1){a=t[(t[i+264>>2]|0)+(n<<2)>>2]|0;if(!a){n=0;break}a=t[((t[a>>2]&3|0)==3?a:a+48|0)+40>>2]|0;if((a|0)!=(A|0)){zM(a,e,r);i=t[f>>2]|0}n=n+1|0}while(1){a=t[(t[i+272>>2]|0)+(n<<2)>>2]|0;if(!a)break;a=t[((t[a>>2]&3|0)==2?a:a+-48|0)+40>>2]|0;if((a|0)!=(A|0)){zM(a,e,r);i=t[f>>2]|0}n=n+1|0}return}function WM(e){e=e|0;var A=0,r=0,a=0,n=0,f=0,l=0;f=h;h=h+32|0;A=(t[e+16>>2]|0)+164|0;if((t[A>>2]|0)>-1){nw(1,102453,f)|0;aA(188848,1)}n=t[47255]|0;t[A>>2]=n;A=t[47256]|0;t[47255]=n+1;t[A+(n<<2)>>2]=e;A=t[e>>2]|0;n=e+48|0;r=t[((A&3|0)==3?e:n)+40>>2]|0;if(!(i[(t[r+16>>2]|0)+157>>0]|0)){a=t[47262]|0;A=t[47263]|0;t[47263]=A+1;t[a+(A<<2)>>2]=r;A=t[e>>2]|0}a=e+-48|0;r=t[((A&3|0)==2?e:a)+40>>2]|0;if(!(i[(t[r+16>>2]|0)+157>>0]|0)){l=t[47262]|0;A=t[47263]|0;t[47263]=A+1;t[l+(A<<2)>>2]=r;A=t[e>>2]|0}l=(t[((A&3|0)==3?e:n)+40>>2]|0)+16|0;A=t[l>>2]|0;i[A+157>>0]=1;r=t[A+272>>2]|0;A=A+276|0;n=t[A>>2]|0;t[A>>2]=n+1;t[r+(n<<2)>>2]=e;n=t[l>>2]|0;t[(t[n+272>>2]|0)+(t[n+276>>2]<<2)>>2]=0;l=t[l>>2]|0;if(!(t[(t[l+180>>2]|0)+((t[l+276>>2]|0)+-1<<2)>>2]|0)){nw(1,102487,f+8|0)|0;aA(188848,1)}l=(t[((t[e>>2]&3|0)==2?e:a)+40>>2]|0)+16|0;r=t[l>>2]|0;i[r+157>>0]=1;a=t[r+264>>2]|0;r=r+268|0;n=t[r>>2]|0;t[r>>2]=n+1;t[a+(n<<2)>>2]=e;e=t[l>>2]|0;t[(t[e+264>>2]|0)+(t[e+268>>2]<<2)>>2]=0;l=t[l>>2]|0;if(!(t[(t[l+172>>2]|0)+((t[l+268>>2]|0)+-1<<2)>>2]|0)){nw(1,102522,f+16|0)|0;aA(188848,1)}else{h=f;return}}function YM(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0,f=0,l=0,s=0;while(1){n=e+12|0;r=t[n>>2]|0;if((r|0)==0|(r|0)==(e|0))break;else e=r}while(1){a=A+12|0;r=t[a>>2]|0;if((r|0)==0|(r|0)==(A|0))break;else A=r}if((e|0)!=(A|0)){i=t[e+8>>2]|0;r=t[A+8>>2]|0;do{if((i|0)>-1)if((r|0)==-1)f=e;else s=10;else if((r|0)>-1)if((i|0)==-1){f=A;break}else{s=10;break}else ge(102376,102331,327,102423)}while(0);if((s|0)==10)f=(t[A+4>>2]|0)<(t[e+4>>2]|0)?e:A;t[a>>2]=f;t[n>>2]=f;t[f+4>>2]=(t[A+4>>2]|0)+(t[e+4>>2]|0);if((t[f+8>>2]|0)>-1)l=f;else ge(102434,102331,335,102423)}else l=e;return l|0}function FM(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0,n=0,l=0,s=0,c=0,o=0,u=0;o=DM(e)|0;if(r){c=t[r>>2]&3;if(((t[(t[(t[((c|0)==2?r:r+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(t[(t[(t[((c|0)==3?r:r+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)|0)!=(f[(t[r+16>>2]|0)+170>>1]|0|0))i=3}else{r=0;i=3}e:do{if((i|0)==3){c=e+16|0;s=0;while(1){i=t[c>>2]|0;l=t[(t[i+180>>2]|0)+(s<<2)>>2]|0;if(!l){s=0;break}i=l+16|0;a=l+-48|0;n=t[((t[l>>2]&3|0)==2?l:a)+40>>2]|0;do{if((t[(t[i>>2]|0)+164>>2]|0)>-1){if((n|0)!=(A|0))r=FM(n,e,r)|0}else if((DM(n)|0)!=(o|0)){if(r|0?(u=t[l>>2]&3,n=t[r>>2]&3,((t[(t[(t[((u|0)==2?l:a)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(t[(t[(t[((u|0)==3?l:l+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(f[(t[i>>2]|0)+170>>1]|0)|0)>=((t[(t[(t[((n|0)==2?r:r+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(t[(t[(t[((n|0)==3?r:r+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(f[(t[r+16>>2]|0)+170>>1]|0)|0)):0)break;r=l}}while(0);s=s+1|0}while(1){i=t[(t[i+172>>2]|0)+(s<<2)>>2]|0;if(!i)break e;a=i+16|0;n=i+48|0;l=t[((t[i>>2]&3|0)==3?i:n)+40>>2]|0;do{if((t[(t[a>>2]|0)+164>>2]|0)>-1){if((l|0)!=(A|0))r=FM(l,e,r)|0}else if((DM(l)|0)!=(o|0)){if(r|0?(l=t[i>>2]&3,u=t[r>>2]&3,((t[(t[(t[((l|0)==2?i:i+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(t[(t[(t[((l|0)==3?i:n)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(f[(t[a>>2]|0)+170>>1]|0)|0)>=((t[(t[(t[((u|0)==2?r:r+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(t[(t[(t[((u|0)==3?r:r+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(f[(t[r+16>>2]|0)+170>>1]|0)|0)):0)break;r=i}}while(0);s=s+1|0;i=t[c>>2]|0}}}while(0);return r|0}function MM(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0,l=0,s=0,c=0,o=0,u=0,b=0,h=0;o=e+16|0;r=t[o>>2]|0;t[r+280>>2]=A;e=1;n=0;while(1){a=t[(t[r+172>>2]|0)+(n<<2)>>2]|0;if(!a){n=0;break}i=t[a+16>>2]|0;if(((t[i+164>>2]|0)<=-1?(l=t[a>>2]&3,s=a+48|0,c=t[(t[((l|0)==3?a:s)+40>>2]|0)+16>>2]|0,(t[c+280>>2]|0)==0):0)?((t[(t[(t[((l|0)==2?a:a+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(t[c+232>>2]|0)|0)==(f[i+170>>1]|0|0):0){WM(a);e=(MM(t[((t[a>>2]&3|0)==3?a:s)+40>>2]|0,A)|0)+e|0;r=t[o>>2]|0}n=n+1|0}while(1){i=t[(t[r+180>>2]|0)+(n<<2)>>2]|0;if(!i)break;a=t[i+16>>2]|0;if(((t[a+164>>2]|0)<=-1?(u=t[i>>2]&3,b=i+-48|0,h=t[(t[((u|0)==2?i:b)+40>>2]|0)+16>>2]|0,(t[h+280>>2]|0)==0):0)?((t[h+232>>2]|0)-(t[(t[(t[((u|0)==3?i:i+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)|0)==(f[a+170>>1]|0|0):0){WM(i);e=(MM(t[((t[i>>2]&3|0)==2?i:b)+40>>2]|0,A)|0)+e|0;r=t[o>>2]|0}n=n+1|0}return e|0}function VM(e,A,r){e=e|0;A=A|0;r=r|0;var i=0;i=Hw(e,102586)|0;if(!i)i=30;else i=K3(i)|0;return rM(e,A,r,i)|0}function NM(e){e=+e;return+(0==0?e:+c[23301]-e)}function RM(e,A,r,a){e=e|0;A=A|0;r=r|0;a=a|0;var n=0,f=0,l=0,s=0,o=0,u=0,b=0,w=0,k=0,d=0,v=0.0,g=0.0,m=0;d=h;h=h+16|0;k=d;t[47264]=t[(t[(t[A+64>>2]|0)+8>>2]|0)+4>>2];xM(A);f=t[A+16>>2]|0;g=+c[f+32>>3];v=+c[f+40>>3];JM(r,102597,+c[e+352>>3]);JM(r,102604,g*.013888888888888888);JM(r,102604,v*.013888888888888888);HM(r);f=sd(A)|0;while(1){if(!f)break;n=f+16|0;if(!(i[(t[n>>2]|0)+118>>0]|0)){PM(r,102606,$v(Mk(f)|0)|0);w=(t[n>>2]|0)+16|0;t[k>>2]=t[w>>2];t[k+4>>2]=t[w+4>>2];t[k+8>>2]=t[w+8>>2];t[k+12>>2]=t[w+12>>2];XM(r,k);if(!(i[(t[(t[n>>2]|0)+104>>2]|0)+82>>0]|0)){e=Bd(f)|0;e=SM(e,t[t[(t[n>>2]|0)+104>>2]>>2]|0)|0}else e=$v(Pw(f,t[47154]|0)|0)|0;JM(r,102604,+c[(t[n>>2]|0)+32>>3]);JM(r,102604,+c[(t[n>>2]|0)+40>>3]);PM(r,102604,e);PM(r,102604,vx(f,t[47157]|0,111067)|0);PM(r,102604,t[t[(t[n>>2]|0)+8>>2]>>2]|0);PM(r,102604,vx(f,t[47148]|0,137314)|0);e=vx(f,t[47149]|0,195059)|0;if(!(i[e>>0]|0))e=vx(f,t[47148]|0,134800)|0;PM(r,102604,e);HM(r)}f=cd(A,f)|0}b=a<<24>>24==0;u=sd(A)|0;while(1){if(!u)break;o=Ow(A,u)|0;while(1){if(!o)break;if(b){a=195059;l=195059}else{l=Hw(o,111455)|0;a=Hw(o,111464)|0;a=a|0?a:195059;l=l|0?l:195059}w=o+16|0;e=t[w>>2]|0;s=t[e+8>>2]|0;e:do{if(s){f=t[s+4>>2]|0;e=0;n=0;while(1){if((e|0)>=(f|0))break;m=(t[(t[s>>2]|0)+(e*48|0)+4>>2]|0)+n|0;e=e+1|0;n=m}PM(r,0,111450);jM(r,t[((t[o>>2]&3|0)==3?o:o+48|0)+40>>2]|0,l);jM(r,t[((t[o>>2]&3|0)==2?o:o+-48|0)+40>>2]|0,a);UM(r,n);a=0;while(1){e=t[w>>2]|0;n=t[e+8>>2]|0;if((a|0)>=(t[n+4>>2]|0))break e;f=t[n>>2]|0;n=t[f+(a*48|0)>>2]|0;f=t[f+(a*48|0)+4>>2]|0;e=0;while(1){if((e|0)>=(f|0))break;m=n+(e<<4)|0;t[k>>2]=t[m>>2];t[k+4>>2]=t[m+4>>2];t[k+8>>2]=t[m+8>>2];t[k+12>>2]=t[m+12>>2];XM(r,k);e=e+1|0}a=a+1|0}}}while(0);if(t[e+96>>2]|0){m=Bd(t[((t[o>>2]&3|0)==3?o:o+48|0)+40>>2]|0)|0;PM(r,102604,SM(m,t[t[(t[w>>2]|0)+96>>2]>>2]|0)|0);m=(t[(t[w>>2]|0)+96>>2]|0)+56|0;t[k>>2]=t[m>>2];t[k+4>>2]=t[m+4>>2];t[k+8>>2]=t[m+8>>2];t[k+12>>2]=t[m+12>>2];XM(r,k)}PM(r,102604,vx(o,t[47185]|0,111067)|0);PM(r,102604,vx(o,t[47176]|0,137314)|0);HM(r);o=qw(A,o)|0}u=cd(A,u)|0}TM(102612,r);h=d;return}function xM(e){e=e|0;var A=0.0;if(0){e=t[e+16>>2]|0;A=+c[e+24>>3]+ +c[e+40>>3];c[23301]=A;c[23302]=A*.013888888888888888}return}function JM(e,A,r){e=e|0;A=A|0;r=+r;var i=0,a=0,t=0;t=h;h=h+1040|0;a=t;i=t+8|0;if(A|0)TM(A,e);c[a>>3]=r;T4(i,102618,a)|0;TM(i,e);h=t;return}function HM(e){e=e|0;i[194955]=10;Z5[t[47264]&127](e,194955)|0;return}function PM(e,A,r){e=e|0;A=A|0;r=r|0;if(A|0)TM(A,e);TM(r,e);return}function XM(e,A){e=e|0;A=A|0;var r=0.0;JM(e,102604,+c[A>>3]*.013888888888888888);if(!0)r=+c[A+8>>3];else r=+c[23301]-+c[A+8>>3];JM(e,102604,r*.013888888888888888);return}function SM(e,A){e=e|0;A=A|0;var r=0;r=tv(e,A)|0;A=$v(r)|0;fv(e,r)|0;return A|0}function jM(e,A,r){e=e|0;A=A|0;r=r|0;var a=0;if(!(i[(t[A+16>>2]|0)+118>>0]|0))A=$v(Mk(A)|0)|0;else{a=Bd(A)|0;A=SM(a,(C1(Mk(A)|0,58)|0)+1|0)|0}PM(e,102604,A);if(r|0?i[r>>0]|0:0)PM(e,107984,$v(r)|0);return}function UM(e,A){e=e|0;A=A|0;var r=0,i=0,a=0;r=h;h=h+1040|0;a=r;i=r+8|0;TM(102604,e);t[a>>2]=A;T4(i,137395,a)|0;TM(i,e);h=r;return}function TM(e,A){e=e|0;A=A|0;Z5[t[47264]&127](A,e)|0;return}function OM(e,A,r){e=e|0;A=A|0;r=r|0;var n=0,l=0,s=0,o=0.0,u=0,b=0.0,w=0,k=0.0,d=0,v=0,g=0,m=0,p=0,E=0,B=0,y=0,C=0,I=0,Z=0,G=0,L=0,Q=0,D=0,z=0,F=0,M=0,V=0,N=0,R=0,x=0,J=0,H=0,P=0,X=0,S=0,j=0,U=0,T=0,O=0,_=0;_=h;h=h+2288|0;T=_+208|0;U=_+192|0;j=_+176|0;S=_+160|0;X=_+144|0;P=_+128|0;J=_+112|0;x=_+96|0;R=_+80|0;N=_+64|0;V=_+56|0;M=_+48|0;O=_+32|0;H=_+24|0;F=_;Q=_+1264|0;D=_+224|0;z=e+16|0;G=(f[(t[z>>2]|0)+178>>1]|0)>2;nF(1);xM(e);cw(D,1024,_+240|0);wJ(e,1,102623,195059)|0;wJ(e,1,102627,195059)|0;t[47146]=wJ(e,1,141116,195059)|0;t[47145]=wJ(e,1,141048,195059)|0;wJ(e,2,102623,195059)|0;n=i[(t[z>>2]|0)+113>>0]|0;if(n&16){wJ(e,1,102633,195059)|0;n=i[(t[z>>2]|0)+113>>0]|0}if(n&1){wJ(e,2,102637,195059)|0;n=i[(t[z>>2]|0)+113>>0]|0}if(n&32){wJ(e,2,102633,195059)|0;n=i[(t[z>>2]|0)+113>>0]|0}if(n&2){wJ(e,2,102640,195059)|0;n=i[(t[z>>2]|0)+113>>0]|0}if(n&4){wJ(e,2,102648,195059)|0;n=i[(t[z>>2]|0)+113>>0]|0}if(!(n&8)){p=0;E=0;B=0}else{B=wJ(e,0,102637,195059)|0;E=wJ(e,0,102656,195059)|0;p=wJ(e,0,102663,195059)|0}C=wJ(e,0,102671,195059)|0;I=D+4|0;Z=D+8|0;m=0;n=0;y=sd(e)|0;while(1){if(!y)break;g=y+16|0;s=t[g>>2]|0;b=+c[s+16>>3];l=0==0;if(G){if(l)o=+c[s+24>>3];else o=+c[23301]-+c[s+24>>3];k=+c[(t[s+132>>2]|0)+16>>3]*72.0;c[F>>3]=b;c[F+8>>3]=o;c[F+16>>3]=k;T4(Q,102674,F)|0;bw(D,Q)|0;l=3;while(1){if((l|0)>=(f[(t[z>>2]|0)+178>>1]|0))break;c[H>>3]=+c[(t[(t[g>>2]|0)+132>>2]|0)+(l<<3)>>3]*72.0;T4(Q,102689,H)|0;bw(D,Q)|0;l=l+1|0}l=t[I>>2]|0;if(l>>>0>=(t[Z>>2]|0)>>>0){ow(D,1)|0;l=t[I>>2]|0}i[l>>0]=0;v=t[D>>2]|0;t[I>>2]=v;Xw(y,102623,v)|0;v=y}else{if(l)o=+c[s+24>>3];else o=+c[23301]-+c[s+24>>3];c[O>>3]=b;c[O+8>>3]=o;T4(Q,102695,O)|0;Xw(y,102623,Q)|0;v=y}c[M>>3]=+c[(t[g>>2]|0)+80>>3]*.013888888888888888;T4(Q,102618,M)|0;Mw(v,t[47145]|0,Q)|0;l=t[g>>2]|0;c[V>>3]=(+c[l+96>>3]+ +c[l+88>>3])*.013888888888888888;T4(Q,102618,V)|0;Mw(v,t[47146]|0,Q)|0;l=t[g>>2]|0;s=t[l+108>>2]|0;if((s|0)!=0?(i[s+81>>0]|0)!=0:0){k=+c[s+64>>3];k=0==0?k:+c[23301]-k;c[N>>3]=+c[s+56>>3];c[N+8>>3]=k;T4(Q,102695,N)|0;Xw(v,102633,Q)|0;l=t[g>>2]|0}if(e1(t[t[l+8>>2]>>2]|0,106220)|0){if(t[47170]|0?(yN(y)|0)<<24>>24:0){s=t[(t[g>>2]|0)+12>>2]|0;d=s+8|0;l=t[d>>2]|0;if((l|0)<3){l=Hw(v,102705)|0;if(!l)l=8;else l=K3(l)|0;l=(l|0)<3?8:l}w=s+44|0;k=1.0/+(l|0);u=0;while(1){if((u|0)>=(l|0))break;if((u|0)>0){s=t[I>>2]|0;if(s>>>0>=(t[Z>>2]|0)>>>0){ow(D,1)|0;s=t[I>>2]|0}t[I>>2]=s+1;i[s>>0]=32}if((t[d>>2]|0)>2){s=t[w>>2]|0;if(!0)o=+c[s+(u<<4)+8>>3]*.013888888888888888;else o=+c[23302]-+c[s+(u<<4)+8>>3]*.013888888888888888;c[R>>3]=+c[s+(u<<4)>>3]*.013888888888888888;c[R+8>>3]=o;T4(Q,102718,R)|0}else{s=t[g>>2]|0;o=k*+(u|0)*6.283185307179586;b=+c[s+32>>3]*.5*+W(+o);if(!0)o=+c[s+40>>3]*.5*+Y(+o);else o=+c[23302]-+c[s+40>>3]*.5*+Y(+o);c[x>>3]=b;c[x+8>>3]=o;T4(Q,102718,x)|0}bw(D,Q)|0;u=u+1|0}s=t[47170]|0;l=t[I>>2]|0;if(l>>>0>=(t[Z>>2]|0)>>>0){ow(D,1)|0;l=t[I>>2]|0}i[l>>0]=0;g=t[D>>2]|0;t[I>>2]=g;Mw(v,s,g)|0}}else{_M(y,t[l+12>>2]|0,D);ww(D)|0;l=t[I>>2]|0;if(l>>>0>=(t[Z>>2]|0)>>>0){ow(D,1)|0;l=t[I>>2]|0}i[l>>0]=0;g=t[D>>2]|0;t[I>>2]=g;Xw(v,102627,g)|0}e:do{if((t[47138]|0)>0){g=Ow(e,y)|0;l=m;while(1){if(!g)break e;v=g+16|0;s=t[v>>2]|0;do{if((i[s+112>>0]|0)!=6?(L=t[s+8>>2]|0,(L|0)!=0):0){d=0;s=L;while(1){if((d|0)>=(t[s+4>>2]|0))break;if((d|0)>0){s=t[I>>2]|0;if(s>>>0>=(t[Z>>2]|0)>>>0){ow(D,1)|0;s=t[I>>2]|0}t[I>>2]=s+1;i[s>>0]=59;s=t[(t[v>>2]|0)+8>>2]|0}s=t[s>>2]|0;if(t[s+(d*48|0)+8>>2]|0){if(!0)o=+c[s+(d*48|0)+24>>3];else o=+c[23301]-+c[s+(d*48|0)+24>>3];c[J>>3]=+c[s+(d*48|0)+16>>3];c[J+8>>3]=o;T4(Q,102728,J)|0;bw(D,Q)|0;n=1;s=t[t[(t[v>>2]|0)+8>>2]>>2]|0}if(t[s+(d*48|0)+12>>2]|0){if(!0)o=+c[s+(d*48|0)+40>>3];else o=+c[23301]-+c[s+(d*48|0)+40>>3];c[P>>3]=+c[s+(d*48|0)+32>>3];c[P+8>>3]=o;T4(Q,102741,P)|0;bw(D,Q)|0;l=1}w=0;while(1){s=t[(t[v>>2]|0)+8>>2]|0;u=t[s>>2]|0;if((w|0)>=(t[u+(d*48|0)+4>>2]|0))break;if((w|0)>0){s=t[I>>2]|0;if(s>>>0>=(t[Z>>2]|0)>>>0){ow(D,1)|0;s=t[I>>2]|0}t[I>>2]=s+1;i[s>>0]=32;s=t[t[(t[v>>2]|0)+8>>2]>>2]|0}else s=u;m=t[s+(d*48|0)>>2]|0;k=+c[m+(w<<4)+8>>3];k=0==0?k:+c[23301]-k;c[X>>3]=+c[m+(w<<4)>>3];c[X+8>>3]=k;T4(Q,102695,X)|0;bw(D,Q)|0;w=w+1|0}d=d+1|0}s=t[I>>2]|0;if(s>>>0>=(t[Z>>2]|0)>>>0){ow(D,1)|0;s=t[I>>2]|0}i[s>>0]=0;s=t[D>>2]|0;t[I>>2]=s;Xw(g,102623,s)|0;s=t[v>>2]|0;u=t[s+96>>2]|0;if(u){k=+c[u+64>>3];k=0==0?k:+c[23301]-k;c[S>>3]=+c[u+56>>3];c[S+8>>3]=k;T4(Q,102695,S)|0;Xw(g,102637,Q)|0;s=t[v>>2]|0}u=t[s+108>>2]|0;do{if(u){if(!(i[u+81>>0]|0))break;k=+c[u+64>>3];k=0==0?k:+c[23301]-k;c[j>>3]=+c[u+56>>3];c[j+8>>3]=k;T4(Q,102695,j)|0;Xw(g,102633,Q)|0;s=t[v>>2]|0}}while(0);u=t[s+100>>2]|0;if(u){k=+c[u+64>>3];k=0==0?k:+c[23301]-k;c[U>>3]=+c[u+56>>3];c[U+8>>3]=k;T4(Q,102695,U)|0;Xw(g,102640,Q)|0;s=t[v>>2]|0}s=t[s+104>>2]|0;if(!s)break;k=+c[s+64>>3];k=0==0?k:+c[23301]-k;c[T>>3]=+c[s+56>>3];c[T+8>>3]=k;T4(Q,102695,T)|0;Xw(g,102648,Q)|0}}while(0);g=qw(e,g)|0}}else l=m}while(0);m=l;y=cd(e,y)|0}qM(e,C,B,E,p);hw(D);if(a[(t[z>>2]|0)+136>>1]&1)sJ(e);t[A>>2]=n;t[r>>2]=m;nF(0);h=_;return}function _M(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0.0,n=0.0,f=0.0,l=0,s=0,o=0,u=0,b=0.0;u=h;h=h+1056|0;s=u;l=u+32|0;o=A+48|0;if(!(t[o>>2]|0)){i=t[e+16>>2]|0;f=+c[i+16>>3];if(!0){n=+c[i+24>>3];a=n+ +c[A+24>>3];n=n+ +c[A+40>>3]}else{n=+c[i+24>>3];a=+c[23301]-+c[A+24>>3]-n;n=+c[23301]-+c[A+40>>3]-n}b=f+ +c[A+32>>3];c[s>>3]=f+ +c[A+16>>3];c[s+8>>3]=a;c[s+16>>3]=b;c[s+24>>3]=n;T4(l,102779,s)|0;bw(r,l)|0}A=A+56|0;i=0;while(1){if((i|0)>=(t[o>>2]|0))break;_M(e,t[(t[A>>2]|0)+(i<<2)>>2]|0,r);i=i+1|0}h=u;return}function qM(e,A,r,a,n){e=e|0;A=A|0;r=r|0;a=a|0;n=n|0;var f=0,l=0,s=0.0,o=0.0,u=0,b=0,w=0,k=0,d=0,v=0,g=0.0;v=h;h=h+1088|0;b=v+56|0;k=v+48|0;w=v+32|0;l=v;u=v+64|0;d=e+16|0;f=t[d>>2]|0;if(!0){s=+c[f+24>>3];o=+c[f+40>>3]}else{o=+c[23301];s=o-+c[f+24>>3];o=o-+c[f+40>>3]}g=+c[f+32>>3];c[l>>3]=+c[f+16>>3];c[l+8>>3]=s;c[l+16>>3]=g;c[l+24>>3]=o;T4(u,102754,l)|0;Mw(e,A,u)|0;f=t[(t[d>>2]|0)+12>>2]|0;if((f|0)!=0?(i[t[f>>2]>>0]|0)!=0:0){g=+c[f+64>>3];g=0==0?g:+c[23301]-g;c[w>>3]=+c[f+56>>3];c[w+8>>3]=g;T4(u,102695,w)|0;Mw(e,r,u)|0;f=t[(t[d>>2]|0)+12>>2]|0;g=+c[f+32>>3];c[k>>3]=+c[f+24>>3]*.013888888888888888;T4(u,102774,k)|0;Mw(e,a,u)|0;c[b>>3]=g*.013888888888888888;T4(u,102774,b)|0;Mw(e,n,u)|0;f=1}else f=1;while(1){l=t[d>>2]|0;if((f|0)>(t[l+180>>2]|0))break;qM(t[(t[l+184>>2]|0)+(f<<2)>>2]|0,A,r,a,n);f=f+1|0}h=v;return}function KM(e){e=e|0;var A=0;A=h;h=h+16|0;OM(e,A,A+4|0);h=A;return}function $M(){return Uh(20740,t[4581]|0)|0}function eV(e,A,r){e=e|0;A=A|0;r=r|0;G2(A);return}function AV(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;e=t[A>>2]|0;i=t[r>>2]|0;if((e|0)<=(i|0))if((e|0)<(i|0))e=-1;else{A=t[A+4>>2]|0;r=t[r+4>>2]|0;return((A|0)>(r|0)?1:((A|0)<(r|0))<<31>>31)|0}else e=1;return e|0}function rV(e){e=e|0;Ph(e)|0;return}function iV(e,A){e=e|0;A=A|0;var r=0,i=0;r=h;h=h+16|0;i=r;t[i>>2]=t[A>>2];t[i+4>>2]=t[A+4>>2];A=aV(i)|0;if((L5[t[e>>2]&63](e,A,1)|0)!=(A|0))G2(A);h=r;return}function aV(e){e=e|0;var A=0,r=0,i=0;A=KF(16)|0;i=e;r=t[i+4>>2]|0;e=A+8|0;t[e>>2]=t[i>>2];t[e+4>>2]=r;return A|0}function tV(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0,n=0;i=h;h=h+16|0;a=i+8|0;n=i;t[n>>2]=A;t[n+4>>2]=r;t[a>>2]=t[n>>2];t[a+4>>2]=t[n+4>>2];A=aV(a)|0;if((L5[t[e>>2]&63](e,A,1)|0)!=(A|0))G2(A);h=i;return}function nV(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0;r=h;h=h+16|0;i=r;n=A;a=t[n+4>>2]|0;A=i+8|0;t[A>>2]=t[n>>2];t[A+4>>2]=a;A=(L5[t[e>>2]&63](e,i,4)|0)!=0&1;h=r;return A|0}function fV(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0;i=h;h=h+16|0;a=i;t[a+8>>2]=A;t[a+12>>2]=r;r=(L5[t[e>>2]&63](e,a,4)|0)!=0&1;h=i;return r|0}function lV(e){e=e|0;return Oh(e)|0}function sV(e){e=e|0;var A=0,r=0,i=0,a=0,n=0;r=KF((Oh(e)|0)<<3)|0;A=r;e=Sh(e)|0;while(1){if(!e)break;n=e+8|0;a=t[n+4>>2]|0;i=A;t[i>>2]=t[n>>2];t[i+4>>2]=a;A=A+8|0;e=t[e>>2]|0}return r|0}function cV(){var e=0,A=0,r=0,i=0;e=$F(40)|0;A=e;r=20776;i=A+36|0;do{t[A>>2]=t[r>>2];A=A+4|0;r=r+4|0}while((A|0)<(i|0));t[e+36>>2]=0;return Uh(e,t[4581]|0)|0}function oV(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0;r=r+36|0;e=t[r>>2]|0;if(!e)e=$F(20)|0;else t[r>>2]=t[e>>2];a=A+8|0;i=t[a+4>>2]|0;r=e+8|0;t[r>>2]=t[a>>2];t[r+4>>2]=i;t[e+16>>2]=t[A+16>>2];return e|0}function uV(e,A,r){e=e|0;A=A|0;r=r|0;r=r+36|0;t[A>>2]=t[r>>2];t[r>>2]=A;return}function bV(e){e=e|0;L5[t[e>>2]&63](e,0,64)|0;return}function hV(e){e=e|0;var A=0,r=0;A=t[e+4>>2]|0;Ph(e)|0;e=t[A+36>>2]|0;while(1){if(!e)break;r=t[e>>2]|0;G2(e);e=r}G2(A);return}function wV(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0,n=0;a=h;h=h+32|0;n=a;t[n+8>>2]=A;t[n+12>>2]=r;t[n+16>>2]=i;i=t[(L5[t[e>>2]&63](e,n,1)|0)+16>>2]|0;h=a;return i|0}function kV(e,A){e=e|0;A=A|0;var r=0,i=0.0,a=0.0,n=0.0,f=0.0,l=0,s=0,o=0,u=0,b=0,w=0,k=0,d=0,v=0,g=0;g=h;h=h+160|0;k=g+144|0;r=g+48|0;l=g+128|0;s=g+112|0;o=g+96|0;u=g+80|0;b=g+32|0;w=g+16|0;d=g;v=e+16|0;e=t[v>>2]|0;i=+c[e+16>>3];a=+c[e+24>>3];n=+c[e+32>>3];f=+c[e+40>>3];if((A+-1|0)>>>0<2){dV(l,i,f);t[k>>2]=t[l>>2];t[k+4>>2]=t[l+4>>2];t[k+8>>2]=t[l+8>>2];t[k+12>>2]=t[l+12>>2];vV(r,k);w=r+16|0;dV(s,n,a);t[k>>2]=t[s>>2];t[k+4>>2]=t[s+4>>2];t[k+8>>2]=t[s+8>>2];t[k+12>>2]=t[s+12>>2];vV(o,k);t[w>>2]=t[o>>2];t[w+4>>2]=t[o+4>>2];t[w+8>>2]=t[o+8>>2];t[w+12>>2]=t[o+12>>2]}else{dV(u,i,a);t[k>>2]=t[u>>2];t[k+4>>2]=t[u+4>>2];t[k+8>>2]=t[u+8>>2];t[k+12>>2]=t[u+12>>2];vV(r,k);u=r+16|0;dV(b,n,f);t[k>>2]=t[b>>2];t[k+4>>2]=t[b+4>>2];t[k+8>>2]=t[b+8>>2];t[k+12>>2]=t[b+12>>2];vV(w,k);t[u>>2]=t[w>>2];t[u+4>>2]=t[w+4>>2];t[u+8>>2]=t[w+8>>2];t[u+12>>2]=t[w+12>>2]}e=(t[v>>2]|0)+16|0;t[e>>2]=t[r>>2];t[e+4>>2]=t[r+4>>2];t[e+8>>2]=t[r+8>>2];t[e+12>>2]=t[r+12>>2];t[e+16>>2]=t[r+16>>2];t[e+20>>2]=t[r+20>>2];t[e+24>>2]=t[r+24>>2];t[e+28>>2]=t[r+28>>2];e=t[(t[v>>2]|0)+12>>2]|0;if(!e)e=1;else{e=e+56|0;t[k>>2]=t[e>>2];t[k+4>>2]=t[e+4>>2];t[k+8>>2]=t[e+8>>2];t[k+12>>2]=t[e+12>>2];vV(d,k);t[e>>2]=t[d>>2];t[e+4>>2]=t[d+4>>2];t[e+8>>2]=t[d+8>>2];t[e+12>>2]=t[d+12>>2];e=1}while(1){r=t[v>>2]|0;if((e|0)>(t[r+180>>2]|0))break;kV(t[(t[r+184>>2]|0)+(e<<2)>>2]|0,A);e=e+1|0}h=g;return}function dV(e,A,r){e=e|0;A=+A;r=+r;c[e>>3]=A;c[e+8>>3]=r;return}function vV(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0;r=h;h=h+32|0;n=r+16|0;i=r;a=(t[47265]|0)*90|0;t[n>>2]=t[A>>2];t[n+4>>2]=t[A+4>>2];t[n+8>>2]=t[A+8>>2];t[n+12>>2]=t[A+12>>2];LF(i,n,a);t[A>>2]=t[i>>2];t[A+4>>2]=t[i+4>>2];t[A+8>>2]=t[i+8>>2];t[A+12>>2]=t[i+12>>2];c[A>>3]=+c[A>>3]-+c[23303];i=A+8|0;c[i>>3]=+c[i>>3]-+c[23304];t[e>>2]=t[A>>2];t[e+4>>2]=t[A+4>>2];t[e+8>>2]=t[A+8>>2];t[e+12>>2]=t[A+12>>2];h=r;return}function gV(e,A){e=e|0;A=A|0;var r=0,a=0.0,n=0,f=0,l=0.0,s=0.0,o=0,u=0.0,b=0,w=0,k=0,d=0,v=0,g=0,m=0,p=0,E=0;E=h;h=h+1168|0;v=E+144|0;p=E+96|0;m=E+64|0;g=E+48|0;b=E+32|0;w=E+16|0;k=E;t[g>>2]=0;t[g+4>>2]=0;t[g+8>>2]=0;t[g+12>>2]=0;d=e+16|0;o=t[(t[d>>2]|0)+116>>2]|0;t[47265]=o&3;o=o&1;i[194957]=o;if(!(o<<24>>24))pV(e);else mV(e);EV(e);o=t[d>>2]|0;r=t[o+12>>2]|0;do{if(r|0?(i[r+81>>0]|0)==0:0){n=r+24|0;t[g>>2]=t[n>>2];t[g+4>>2]=t[n+4>>2];t[g+8>>2]=t[n+8>>2];t[g+12>>2]=t[n+12>>2];u=+c[g>>3]+16.0;c[g>>3]=u;n=g+8|0;a=+c[n>>3]+8.0;c[n>>3]=a;n=(i[o+275>>0]&1)!=0;if(i[194957]|0){if(n){f=o+32|0;c[f>>3]=+c[f>>3]+a}else{f=o+16|0;c[f>>3]=+c[f>>3]-a}n=o+40|0;a=+c[n>>3];f=o+24|0;l=+c[f>>3];s=a-l;if(!(u>s))break;u=(u-s)*.5;c[f>>3]=l-u;c[n>>3]=a+u;break}f=(t[47265]|0)==0;do{if(n)if(f){f=o+40|0;c[f>>3]=+c[f>>3]+a;break}else{f=o+24|0;c[f>>3]=+c[f>>3]-a;break}else if(f){f=o+24|0;c[f>>3]=+c[f>>3]-a;break}else{f=o+40|0;c[f>>3]=+c[f>>3]+a;break}}while(0);n=o+32|0;a=+c[n>>3];f=o+16|0;l=+c[f>>3];s=a-l;if(u>s){u=(u-s)*.5;c[f>>3]=l-u;c[n>>3]=a+u}}}while(0);if(A){switch(t[47265]|0){case 0:{k=o+16|0;t[46606]=t[k>>2];t[46607]=t[k+4>>2];t[46608]=t[k+8>>2];t[46609]=t[k+12>>2];break}case 1:{dV(b,-+c[o+40>>3],+c[o+16>>3]);t[46606]=t[b>>2];t[46607]=t[b+4>>2];t[46608]=t[b+8>>2];t[46609]=t[b+12>>2];break}case 2:{dV(w,+c[o+16>>3],-+c[o+40>>3]);t[46606]=t[w>>2];t[46607]=t[w+4>>2];t[46608]=t[w+8>>2];t[46609]=t[w+12>>2];break}case 3:{dV(k,+c[o+24>>3],+c[o+16>>3]);t[46606]=t[k>>2];t[46607]=t[k+4>>2];t[46608]=t[k+8>>2];t[46609]=t[k+12>>2];break}default:{}}BV(e);r=t[(t[d>>2]|0)+12>>2]|0}if(r|0?(i[r+81>>0]|0)==0:0){t[v>>2]=t[g>>2];t[v+4>>2]=t[g+4>>2];t[v+8>>2]=t[g+8>>2];t[v+12>>2]=t[g+12>>2];yV(e,v)}if(!0){h=E;return}if(!(i[194957]|0)){u=+c[23304];s=+c[23303];c[p>>3]=u;c[p+8>>3]=s;c[p+16>>3]=u;c[p+24>>3]=s;c[p+32>>3]=-s;c[p+40>>3]=-u;T4(v,103015,p)|0}else{s=+c[23303];u=+c[23304];c[m>>3]=s;c[m+8>>3]=u;c[m+16>>3]=s;c[m+24>>3]=u;T4(v,102800,m)|0}o3(v)|0;iA()}function mV(e){e=e|0;var A=0,r=0.0,a=0.0,n=0,f=0,l=0;l=e+16|0;if(((yd(e)|0)!=(e|0)?(n=t[l>>2]|0,f=t[n+12>>2]|0,(f|0)!=0):0)?(i[f+81>>0]|0)==0:0){A=i[n+275>>0]|0;if(!(A&1)){a=+c[n+16>>3]+ +c[n+96>>3]*.5;e=n+104|0}else{a=+c[n+32>>3]-+c[n+64>>3]*.5;e=n+72|0}r=+c[e>>3];e=A<<24>>24;do{if(!(e&4))if(!(e&2)){r=(+c[n+40>>3]+ +c[n+24>>3])*.5;break}else{r=+c[n+40>>3]-r*.5;break}else r=+c[n+24>>3]+r*.5}while(0);c[f+56>>3]=a;c[f+64>>3]=r;i[(t[(t[l>>2]|0)+12>>2]|0)+81>>0]=1;e=1}else e=1;while(1){A=t[l>>2]|0;if((e|0)>(t[A+180>>2]|0))break;mV(t[(t[A+184>>2]|0)+(e<<2)>>2]|0);e=e+1|0}return}function pV(e){e=e|0;var A=0,r=0.0,a=0.0,n=0.0,f=0,l=0,s=0;s=e+16|0;if(((yd(e)|0)!=(e|0)?(f=t[s>>2]|0,l=t[f+12>>2]|0,(l|0)!=0):0)?(i[l+81>>0]|0)==0:0){A=i[f+275>>0]|0;if(!(A&1)){n=+c[f+24>>3]+ +c[f+56>>3]*.5;e=f+48|0}else{n=+c[f+40>>3]-+c[f+88>>3]*.5;e=f+80|0}a=+c[e>>3];e=A<<24>>24;do{if(!(e&4)){r=+c[f+16>>3];if(!(e&2)){r=(+c[f+32>>3]+r)*.5;break}else{r=r+a*.5;break}}else r=+c[f+32>>3]-a*.5}while(0);c[l+56>>3]=r;c[l+64>>3]=n;i[(t[(t[s>>2]|0)+12>>2]|0)+81>>0]=1;e=1}else e=1;while(1){A=t[s>>2]|0;if((e|0)>(t[A+180>>2]|0))break;pV(t[(t[A+184>>2]|0)+(e<<2)>>2]|0);e=e+1|0}return}function EV(e){e=e|0;var A=0,r=0,f=0,l=0,s=0,c=0,o=0,u=0,b=0,w=0,k=0,d=0,v=0,g=0,m=0,p=0,E=0,B=0,y=0,C=0,I=0,Z=0,G=0,L=0,Q=0,D=0,z=0,W=0,Y=0,F=0,M=0,V=0,N=0,R=0,x=0,J=0,H=0,P=0,X=0;X=h;h=h+544|0;V=X+504|0;P=X+416|0;H=X+376|0;M=X+352|0;F=X+312|0;Y=X+288|0;W=X+248|0;N=X+200|0;Z=X+152|0;x=X+96|0;w=X+488|0;G=X+456|0;L=X+424|0;Q=X+384|0;D=X+360|0;z=X+320|0;E=X+296|0;B=X+256|0;y=X+232|0;C=X+168|0;I=X+136|0;A=X+56|0;R=X+16|0;J=X;b=e+16|0;m=t[b>>2]|0;r=a[m+136>>1]&14;m=n[m+113>>0]|0;if(!((m&54|0)==0?(m&1|0)==0|(t[47139]|0)!=0:0)){m=r<<16>>16==0;u=sd(e)|0;f=0;s=0;l=0;while(1){if(!u)break;r=t[(t[u+16>>2]|0)+108>>2]|0;do{if(r)if(!(i[r+81>>0]|0)){l=l+1|0;break}else{f=f+1|0;break}}while(0);o=Ow(e,u)|0;r=s;while(1){if(!o)break;c=t[o+16>>2]|0;s=t[c+108>>2]|0;do{if(s){if(i[s+81>>0]|0){f=f+1|0;break}if(!m)r=r+((t[c+8>>2]|0)!=0&1)|0}}while(0);s=t[c+100>>2]|0;do{if(s){if(i[s+81>>0]|0){f=f+1|0;break}if(!m)r=r+((t[c+8>>2]|0)!=0&1)|0}}while(0);s=t[c+104>>2]|0;do{if(s){if(i[s+81>>0]|0){f=f+1|0;break}if(!m)r=r+((t[c+8>>2]|0)!=0&1)|0}}while(0);s=t[c+96>>2]|0;do{if(s){if(i[s+81>>0]|0){f=f+1|0;break}if(!m)r=r+((t[c+8>>2]|0)!=0&1)|0}}while(0);o=qw(e,o)|0}u=cd(e,u)|0;s=r}if(!(i[(t[b>>2]|0)+113>>0]&8))b=0;else b=IV(e)|0;g=s+l|0;if(g|0){k=f+s+b+(gk(e)|0)|0;d=KF(k*40|0)|0;v=KF(g*40|0)|0;dV(N,2147483647.0,2147483647.0);r=N+16|0;dV(w,-2147483647.0,-2147483647.0);t[r>>2]=t[w>>2];t[r+4>>2]=t[w+4>>2];t[r+8>>2]=t[w+8>>2];t[r+12>>2]=t[w+12>>2];r=v;l=d;u=sd(e)|0;while(1){if(!u)break;t[V>>2]=t[N>>2];t[V+4>>2]=t[N+4>>2];t[V+8>>2]=t[N+8>>2];t[V+12>>2]=t[N+12>>2];t[V+16>>2]=t[N+16>>2];t[V+20>>2]=t[N+20>>2];t[V+24>>2]=t[N+24>>2];t[V+28>>2]=t[N+28>>2];ZV(G,u,l,V);t[N>>2]=t[G>>2];t[N+4>>2]=t[G+4>>2];t[N+8>>2]=t[G+8>>2];t[N+12>>2]=t[G+12>>2];t[N+16>>2]=t[G+16>>2];t[N+20>>2]=t[G+20>>2];t[N+24>>2]=t[G+24>>2];t[N+28>>2]=t[G+28>>2];f=t[(t[u+16>>2]|0)+108>>2]|0;do{if(f)if(!(i[f+81>>0]|0)){t[V>>2]=t[Z>>2];t[V+4>>2]=t[Z+4>>2];t[V+8>>2]=t[Z+8>>2];t[V+12>>2]=t[Z+12>>2];LV(f,l,r,0,V);r=r+40|0;break}else{l=l+40|0;t[V>>2]=t[N>>2];t[V+4>>2]=t[N+4>>2];t[V+8>>2]=t[N+8>>2];t[V+12>>2]=t[N+12>>2];t[V+16>>2]=t[N+16>>2];t[V+20>>2]=t[N+20>>2];t[V+24>>2]=t[N+24>>2];t[V+28>>2]=t[N+28>>2];GV(L,f,l,V);t[N>>2]=t[L>>2];t[N+4>>2]=t[L+4>>2];t[N+8>>2]=t[L+8>>2];t[N+12>>2]=t[L+12>>2];t[N+16>>2]=t[L+16>>2];t[N+20>>2]=t[L+20>>2];t[N+24>>2]=t[L+24>>2];t[N+28>>2]=t[L+28>>2];break}}while(0);o=Ow(e,u)|0;l=l+40|0;while(1){if(!o)break;c=o+16|0;f=t[c>>2]|0;s=t[f+96>>2]|0;e:do{if(!s)p=52;else{do{if(!(i[s+81>>0]|0)){if(!m?t[f+8>>2]|0:0){NR(D,e,o);t[V>>2]=t[D>>2];t[V+4>>2]=t[D+4>>2];t[V+8>>2]=t[D+8>>2];t[V+12>>2]=t[D+12>>2];LV(s,l,r,1,V);r=r+40|0;break}t[W>>2]=t[s>>2];nw(0,103827,W)|0;break e}else{t[V>>2]=t[N>>2];t[V+4>>2]=t[N+4>>2];t[V+8>>2]=t[N+8>>2];t[V+12>>2]=t[N+12>>2];t[V+16>>2]=t[N+16>>2];t[V+20>>2]=t[N+20>>2];t[V+24>>2]=t[N+24>>2];t[V+28>>2]=t[N+28>>2];GV(Q,s,l,V);t[N>>2]=t[Q>>2];t[N+4>>2]=t[Q+4>>2];t[N+8>>2]=t[Q+8>>2];t[N+12>>2]=t[Q+12>>2];t[N+16>>2]=t[Q+16>>2];t[N+20>>2]=t[Q+20>>2];t[N+24>>2]=t[Q+24>>2];t[N+28>>2]=t[Q+28>>2]}}while(0);l=l+40|0;f=t[c>>2]|0;p=52}}while(0);e:do{if((p|0)==52){p=0;s=t[f+104>>2]|0;if(s){do{if(!(i[s+81>>0]|0)){if(!m?t[f+8>>2]|0:0){QV(E,o);t[V>>2]=t[E>>2];t[V+4>>2]=t[E+4>>2];t[V+8>>2]=t[E+8>>2];t[V+12>>2]=t[E+12>>2];LV(s,l,r,1,V);r=r+40|0;break}t[Y>>2]=t[s>>2];nw(0,103862,Y)|0;break e}else{t[V>>2]=t[N>>2];t[V+4>>2]=t[N+4>>2];t[V+8>>2]=t[N+8>>2];t[V+12>>2]=t[N+12>>2];t[V+16>>2]=t[N+16>>2];t[V+20>>2]=t[N+20>>2];t[V+24>>2]=t[N+24>>2];t[V+28>>2]=t[N+28>>2];GV(z,s,l,V);t[N>>2]=t[z>>2];t[N+4>>2]=t[z+4>>2];t[N+8>>2]=t[z+8>>2];t[N+12>>2]=t[z+12>>2];t[N+16>>2]=t[z+16>>2];t[N+20>>2]=t[z+20>>2];t[N+24>>2]=t[z+24>>2];t[N+28>>2]=t[z+28>>2]}}while(0);l=l+40|0;f=t[c>>2]|0}s=t[f+100>>2]|0;if(s){do{if(!(i[s+81>>0]|0)){if(!m?t[f+8>>2]|0:0){DV(y,o);t[V>>2]=t[y>>2];t[V+4>>2]=t[y+4>>2];t[V+8>>2]=t[y+8>>2];t[V+12>>2]=t[y+12>>2];LV(s,l,r,1,V);r=r+40|0;break}t[F>>2]=t[s>>2];nw(0,103902,F)|0;break e}else{t[V>>2]=t[N>>2];t[V+4>>2]=t[N+4>>2];t[V+8>>2]=t[N+8>>2];t[V+12>>2]=t[N+12>>2];t[V+16>>2]=t[N+16>>2];t[V+20>>2]=t[N+20>>2];t[V+24>>2]=t[N+24>>2];t[V+28>>2]=t[N+28>>2];GV(B,s,l,V);t[N>>2]=t[B>>2];t[N+4>>2]=t[B+4>>2];t[N+8>>2]=t[B+8>>2];t[N+12>>2]=t[B+12>>2];t[N+16>>2]=t[B+16>>2];t[N+20>>2]=t[B+20>>2];t[N+24>>2]=t[B+24>>2];t[N+28>>2]=t[B+28>>2]}}while(0);l=l+40|0;f=t[c>>2]|0}s=t[f+108>>2]|0;if(s){do{if(!(i[s+81>>0]|0)){if(!m?t[f+8>>2]|0:0){NR(I,e,o);t[V>>2]=t[I>>2];t[V+4>>2]=t[I+4>>2];t[V+8>>2]=t[I+8>>2];t[V+12>>2]=t[I+12>>2];LV(s,l,r,1,V);r=r+40|0;break}t[M>>2]=t[s>>2];nw(0,103942,M)|0;break e}else{t[V>>2]=t[N>>2];t[V+4>>2]=t[N+4>>2];t[V+8>>2]=t[N+8>>2];t[V+12>>2]=t[N+12>>2];t[V+16>>2]=t[N+16>>2];t[V+20>>2]=t[N+20>>2];t[V+24>>2]=t[N+24>>2];t[V+28>>2]=t[N+28>>2];GV(C,s,l,V);t[N>>2]=t[C>>2];t[N+4>>2]=t[C+4>>2];t[N+8>>2]=t[C+8>>2];t[N+12>>2]=t[C+12>>2];t[N+16>>2]=t[C+16>>2];t[N+20>>2]=t[C+20>>2];t[N+24>>2]=t[C+24>>2];t[N+28>>2]=t[C+28>>2]}}while(0);l=l+40|0}}}while(0);o=qw(e,o)|0}u=cd(e,u)|0}if(b|0){t[A>>2]=t[N>>2];t[A+4>>2]=t[N+4>>2];t[A+8>>2]=t[N+8>>2];t[A+12>>2]=t[N+12>>2];t[A+16>>2]=t[N+16>>2];t[A+20>>2]=t[N+20>>2];t[A+24>>2]=t[N+24>>2];t[A+28>>2]=t[N+28>>2];t[A+32>>2]=l;f=V;r=f+40|0;do{t[f>>2]=t[A>>2];f=f+4|0;A=A+4|0}while((f|0)<(r|0));zV(R,e,V);t[N>>2]=t[R>>2];t[N+4>>2]=t[R+4>>2];t[N+8>>2]=t[R+8>>2];t[N+12>>2]=t[R+12>>2];t[N+16>>2]=t[R+16>>2];t[N+20>>2]=t[R+20>>2];t[N+24>>2]=t[R+24>>2];t[N+28>>2]=t[R+28>>2]}i[x+32>>0]=gx(e,zw(e,0,103978,0)|0,1)|0;t[x>>2]=t[N>>2];t[x+4>>2]=t[N+4>>2];t[x+8>>2]=t[N+8>>2];t[x+12>>2]=t[N+12>>2];t[x+16>>2]=t[N+16>>2];t[x+20>>2]=t[N+20>>2];t[x+24>>2]=t[N+24>>2];t[x+28>>2]=t[N+28>>2];$i(d,k,v,g,x)|0;if(0)WV(d,k,v,g,x);A=0;r=0;f=v;while(1){if((r|0)>=(g|0))break;if(i[f+36>>0]|0){x=t[f+32>>2]|0;i[x+81>>0]=1;R=x+56|0;YV(J,f);t[R>>2]=t[J>>2];t[R+4>>2]=t[J+4>>2];t[R+8>>2]=t[J+8>>2];t[R+12>>2]=t[J+12>>2];Hx(e,x);A=A+1|0}r=r+1|0;f=f+40|0}if(!0){if((A|0)!=(g|0)){t[P>>2]=A;t[P+4>>2]=g;nw(0,104023,P)|0}}else{P=t[15712]|0;t[H>>2]=A;t[H+4>>2]=g;a3(P,103990,H)|0}G2(d);G2(v)}}h=X;return}function BV(e){e=e|0;var A=0,r=0,i=0,a=0,n=0,f=0,l=0;f=h;h=h+48|0;i=f+32|0;a=f+16|0;n=f;if(+c[23303]!=0.0|+c[23304]!=0.0|(t[47265]|0)!=0){r=sd(e)|0;while(1){if(!r)break;if(t[47265]|0)WJ(r,0);A=r+16|0;l=(t[A>>2]|0)+16|0;t[i>>2]=t[l>>2];t[i+4>>2]=t[l+4>>2];t[i+8>>2]=t[l+8>>2];t[i+12>>2]=t[l+12>>2];vV(a,i);t[l>>2]=t[a>>2];t[l+4>>2]=t[a+4>>2];t[l+8>>2]=t[a+8>>2];t[l+12>>2]=t[a+12>>2];A=t[(t[A>>2]|0)+108>>2]|0;if(A|0){l=A+56|0;t[i>>2]=t[l>>2];t[i+4>>2]=t[l+4>>2];t[i+8>>2]=t[l+8>>2];t[i+12>>2]=t[l+12>>2];vV(n,i);t[l>>2]=t[n>>2];t[l+4>>2]=t[n+4>>2];t[l+8>>2]=t[n+8>>2];t[l+12>>2]=t[n+12>>2]}e:do{if((t[47138]|0)==1){A=Ow(e,r)|0;while(1){if(!A)break e;CV(A);A=qw(e,A)|0}}}while(0);r=cd(e,r)|0}kV(e,t[(t[e+16>>2]|0)+116>>2]&3)}h=f;return}function yV(e,A){e=e|0;A=A|0;var r=0.0,a=0.0,n=0,f=0,l=0;f=e+16|0;l=t[f>>2]|0;n=i[l+275>>0]|0;e=n<<24>>24;do{if(!(e&4)){r=+c[l+16>>3];if(!(e&2)){a=(+c[l+32>>3]+r)*.5;break}else{a=+c[A>>3]*.5+r;break}}else a=+c[l+32>>3]-+c[A>>3]*.5}while(0);if(!(n&1))r=+c[A+8>>3]*.5+ +c[l+24>>3];else r=+c[l+40>>3]-+c[A+8>>3]*.5;l=t[l+12>>2]|0;c[l+56>>3]=a;c[l+64>>3]=r;i[(t[(t[f>>2]|0)+12>>2]|0)+81>>0]=1;return}function CV(e){e=e|0;var A=0,r=0,a=0,n=0,f=0,l=0,s=0,c=0,o=0,u=0,b=0,w=0,k=0,d=0,v=0,g=0;v=h;h=h+144|0;k=v+120|0;r=v+16|0;l=v+104|0;s=v+88|0;c=v+72|0;o=v+56|0;u=v+40|0;b=v+24|0;d=v;w=e+16|0;A=t[w>>2]|0;a=t[A+8>>2]|0;if(!a){if((i[194954]|0)==0?(i[A+112>>0]|0)!=6:0){k=Mk(t[((t[e>>2]&3|0)==3?e:e+48|0)+40>>2]|0)|0;d=Mk(t[((t[e>>2]&3|0)==2?e:e+-48|0)+40>>2]|0)|0;t[r>>2]=k;t[r+4>>2]=d;nw(1,103810,r)|0}}else{f=0;e=a;while(1){if((f|0)>=(t[e+4>>2]|0))break;n=t[e>>2]|0;e=t[n+(f*48|0)>>2]|0;r=t[n+(f*48|0)+4>>2]|0;a=t[n+(f*48|0)+8>>2]|0;n=t[n+(f*48|0)+12>>2]|0;A=0;while(1){if((A|0)>=(r|0))break;g=e+(A<<4)|0;t[k>>2]=t[g>>2];t[k+4>>2]=t[g+4>>2];t[k+8>>2]=t[g+8>>2];t[k+12>>2]=t[g+12>>2];vV(l,k);t[g>>2]=t[l>>2];t[g+4>>2]=t[l+4>>2];t[g+8>>2]=t[l+8>>2];t[g+12>>2]=t[l+12>>2];A=A+1|0}if(a|0){g=(t[t[(t[w>>2]|0)+8>>2]>>2]|0)+(f*48|0)+16|0;t[k>>2]=t[g>>2];t[k+4>>2]=t[g+4>>2];t[k+8>>2]=t[g+8>>2];t[k+12>>2]=t[g+12>>2];vV(s,k);t[g>>2]=t[s>>2];t[g+4>>2]=t[s+4>>2];t[g+8>>2]=t[s+8>>2];t[g+12>>2]=t[s+12>>2]}if(n|0){g=(t[t[(t[w>>2]|0)+8>>2]>>2]|0)+(f*48|0)+32|0;t[k>>2]=t[g>>2];t[k+4>>2]=t[g+4>>2];t[k+8>>2]=t[g+8>>2];t[k+12>>2]=t[g+12>>2];vV(c,k);t[g>>2]=t[c>>2];t[g+4>>2]=t[c+4>>2];t[g+8>>2]=t[c+8>>2];t[g+12>>2]=t[c+12>>2]}A=t[w>>2]|0;f=f+1|0;e=t[A+8>>2]|0}e=t[A+96>>2]|0;if(e){A=e+56|0;t[k>>2]=t[A>>2];t[k+4>>2]=t[A+4>>2];t[k+8>>2]=t[A+8>>2];t[k+12>>2]=t[A+12>>2];vV(o,k);t[A>>2]=t[o>>2];t[A+4>>2]=t[o+4>>2];t[A+8>>2]=t[o+8>>2];t[A+12>>2]=t[o+12>>2];A=t[w>>2]|0}e=t[A+108>>2]|0;if(e){A=e+56|0;t[k>>2]=t[A>>2];t[k+4>>2]=t[A+4>>2];t[k+8>>2]=t[A+8>>2];t[k+12>>2]=t[A+12>>2];vV(u,k);t[A>>2]=t[u>>2];t[A+4>>2]=t[u+4>>2];t[A+8>>2]=t[u+8>>2];t[A+12>>2]=t[u+12>>2];A=t[w>>2]|0}e=t[A+100>>2]|0;if(e){A=e+56|0;t[k>>2]=t[A>>2];t[k+4>>2]=t[A+4>>2];t[k+8>>2]=t[A+8>>2];t[k+12>>2]=t[A+12>>2];vV(b,k);t[A>>2]=t[b>>2];t[A+4>>2]=t[b+4>>2];t[A+8>>2]=t[b+8>>2];t[A+12>>2]=t[b+12>>2];A=t[w>>2]|0}A=t[A+104>>2]|0;if(A|0){g=A+56|0;t[k>>2]=t[g>>2];t[k+4>>2]=t[g+4>>2];t[k+8>>2]=t[g+8>>2];t[k+12>>2]=t[g+12>>2];vV(d,k);t[g>>2]=t[d>>2];t[g+4>>2]=t[d+4>>2];t[g+8>>2]=t[d+8>>2];t[g+12>>2]=t[d+12>>2]}}h=v;return}function IV(e){e=e|0;var A=0,r=0,a=0;a=e+16|0;if((yd(e)|0)!=(e|0)?(A=t[(t[a>>2]|0)+12>>2]|0,(A|0)!=0):0){r=1;e=(i[A+81>>0]|0)!=0&1}else{r=1;e=0}while(1){A=t[a>>2]|0;if((r|0)>(t[A+180>>2]|0))break;A=(IV(t[(t[A+184>>2]|0)+(r<<2)>>2]|0)|0)+e|0;r=r+1|0;e=A}return e|0}function ZV(e,A,r,a){e=e|0;A=A|0;r=r|0;a=a|0;var n=0,f=0,l=0.0,s=0.0,o=0,u=0;n=h;h=h+32|0;f=n;u=(i[194957]|0)==0;A=A+16|0;o=t[A>>2]|0;s=+c[(u?o+32|0:o+40|0)>>3];c[r+16>>3]=s*72.0;l=+c[(u?o+40|0:o+32|0)>>3];c[r+24>>3]=l*72.0;A=(t[A>>2]|0)+16|0;t[r>>2]=t[A>>2];t[r+4>>2]=t[A+4>>2];t[r+8>>2]=t[A+8>>2];t[r+12>>2]=t[A+12>>2];c[r>>3]=+c[r>>3]-s*36.0;A=r+8|0;c[A>>3]=+c[A>>3]-l*36.0;t[f>>2]=t[a>>2];t[f+4>>2]=t[a+4>>2];t[f+8>>2]=t[a+8>>2];t[f+12>>2]=t[a+12>>2];t[f+16>>2]=t[a+16>>2];t[f+20>>2]=t[a+20>>2];t[f+24>>2]=t[a+24>>2];t[f+28>>2]=t[a+28>>2];FV(e,r,f);h=n;return}function GV(e,A,r,a){e=e|0;A=A|0;r=r|0;a=a|0;var n=0,f=0,l=0.0,s=0.0,o=0,u=0;n=h;h=h+32|0;f=n;u=(i[194957]|0)==0;o=A+24|0;s=+c[(u?o:A+32|0)>>3];c[r+16>>3]=s;l=+c[(u?A+32|0:o)>>3];c[r+24>>3]=l;A=A+56|0;t[r>>2]=t[A>>2];t[r+4>>2]=t[A+4>>2];t[r+8>>2]=t[A+8>>2];t[r+12>>2]=t[A+12>>2];c[r>>3]=+c[r>>3]-s*.5;A=r+8|0;c[A>>3]=+c[A>>3]-l*.5;t[f>>2]=t[a>>2];t[f+4>>2]=t[a+4>>2];t[f+8>>2]=t[a+8>>2];t[f+12>>2]=t[a+12>>2];t[f+16>>2]=t[a+16>>2];t[f+20>>2]=t[a+20>>2];t[f+24>>2]=t[a+24>>2];t[f+28>>2]=t[a+28>>2];FV(e,r,f);h=n;return}function LV(e,A,r,a,n){e=e|0;A=A|0;r=r|0;a=a|0;n=n|0;if(a|0){a=A+16|0;t[a>>2]=0;t[a+4>>2]=0;t[a+8>>2]=0;t[a+12>>2]=0;t[A>>2]=t[n>>2];t[A+4>>2]=t[n+4>>2];t[A+8>>2]=t[n+8>>2];t[A+12>>2]=t[n+12>>2]}if(!(i[194957]|0)){n=e+24|0;t[r>>2]=t[n>>2];t[r+4>>2]=t[n+4>>2];t[r+8>>2]=t[n+8>>2];t[r+12>>2]=t[n+12>>2]}else{c[r>>3]=+c[e+32>>3];c[r+8>>3]=+c[e+24>>3]}t[r+32>>2]=e;i[r+36>>0]=0;t[A+32>>2]=r;return}function QV(e,A){e=e|0;A=A|0;A=VR(A)|0;do{if(A){A=t[A>>2]|0;if(!(t[A+8>>2]|0)){A=t[A>>2]|0;t[e>>2]=t[A>>2];t[e+4>>2]=t[A+4>>2];t[e+8>>2]=t[A+8>>2];t[e+12>>2]=t[A+12>>2];break}else{A=A+16|0;t[e>>2]=t[A>>2];t[e+4>>2]=t[A+4>>2];t[e+8>>2]=t[A+8>>2];t[e+12>>2]=t[A+12>>2];break}}else{t[e>>2]=0;t[e+4>>2]=0;t[e+8>>2]=0;t[e+12>>2]=0}}while(0);return}function DV(e,A){e=e|0;A=A|0;var r=0;A=VR(A)|0;do{if(A){r=t[A>>2]|0;A=(t[A+4>>2]|0)+-1|0;if(!(t[r+(A*48|0)+12>>2]|0)){r=(t[r+(A*48|0)>>2]|0)+((t[r+(A*48|0)+4>>2]|0)+-1<<4)|0;t[e>>2]=t[r>>2];t[e+4>>2]=t[r+4>>2];t[e+8>>2]=t[r+8>>2];t[e+12>>2]=t[r+12>>2];break}else{r=r+(A*48|0)+32|0;t[e>>2]=t[r>>2];t[e+4>>2]=t[r+4>>2];t[e+8>>2]=t[r+8>>2];t[e+12>>2]=t[r+12>>2];break}}else{t[e>>2]=0;t[e+4>>2]=0;t[e+8>>2]=0;t[e+12>>2]=0}}while(0);return}function zV(e,A,r){e=e|0;A=A|0;r=r|0;var a=0,n=0,f=0,l=0,s=0,c=0,o=0,u=0,b=0,w=0,k=0;k=h;h=h+112|0;c=k+72|0;u=k+32|0;b=k;w=A+16|0;s=1;while(1){a=t[w>>2]|0;if((s|0)>(t[a+180>>2]|0))break;a=t[(t[a+184>>2]|0)+(s<<2)>>2]|0;n=c;f=r;l=n+40|0;do{t[n>>2]=t[f>>2];n=n+4|0;f=f+4|0}while((n|0)<(l|0));zV(u,a,c);n=r;f=u;l=n+40|0;do{t[n>>2]=t[f>>2];n=n+4|0;f=f+4|0}while((n|0)<(l|0));s=s+1|0}if(((yd(A)|0)!=(A|0)?(o=t[(t[w>>2]|0)+12>>2]|0,o|0):0)?i[o+81>>0]|0:0){w=r+32|0;u=t[w>>2]|0;t[c>>2]=t[r>>2];t[c+4>>2]=t[r+4>>2];t[c+8>>2]=t[r+8>>2];t[c+12>>2]=t[r+12>>2];t[c+16>>2]=t[r+16>>2];t[c+20>>2]=t[r+20>>2];t[c+24>>2]=t[r+24>>2];t[c+28>>2]=t[r+28>>2];GV(b,o,u,c);t[r>>2]=t[b>>2];t[r+4>>2]=t[b+4>>2];t[r+8>>2]=t[b+8>>2];t[r+12>>2]=t[b+12>>2];t[r+16>>2]=t[b+16>>2];t[r+20>>2]=t[b+20>>2];t[r+24>>2]=t[b+24>>2];t[r+28>>2]=t[b+28>>2];t[w>>2]=(t[w>>2]|0)+40}n=e;f=r;l=n+40|0;do{t[n>>2]=t[f>>2];n=n+4|0;f=f+4|0}while((n|0)<(l|0));h=k;return}function WV(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;var f=0.0,l=0.0,s=0.0,o=0.0,u=0,b=0,w=0,k=0,d=0,v=0;v=h;h=h+160|0;d=v+96|0;w=v+48|0;b=v;k=t[15712]|0;u=n[a+32>>0]|0;f=+c[a>>3];l=+c[a+8>>3];s=+c[a+16>>3];o=+c[a+24>>3];t[b>>2]=A;t[b+4>>2]=i;t[b+8>>2]=u;c[b+16>>3]=f;c[b+24>>3]=l;c[b+32>>3]=s;c[b+40>>3]=o;a3(k,104065,b)|0;e:do{if(0>=2){G3(104125,8,1,k)|0;b=0;while(1){if((b|0)>=(A|0))break;a=t[e+32>>2]|0;f=+c[e>>3];l=+c[e+8>>3];s=+c[e+16>>3];o=+c[e+24>>3];if(!a)u=195059;else u=t[t[a+32>>2]>>2]|0;t[w>>2]=b;c[w+8>>3]=f;c[w+16>>3]=l;c[w+24>>3]=s;c[w+32>>3]=o;t[w+40>>2]=a;t[w+44>>2]=u;a3(k,104134,w)|0;b=b+1|0;e=e+40|0}G3(104177,8,1,k)|0;a=0;while(1){if((a|0)>=(i|0))break e;A=n[r+36>>0]|0;f=+c[r+16>>3];l=+c[r+24>>3];s=+c[r>>3];o=+c[r+8>>3];w=t[t[r+32>>2]>>2]|0;t[d>>2]=a;t[d+4>>2]=r;t[d+8>>2]=A;c[d+16>>3]=f;c[d+24>>3]=l;c[d+32>>3]=s;c[d+40>>3]=o;t[d+48>>2]=w;a3(k,104186,d)|0;r=r+40|0;a=a+1|0}}}while(0);h=v;return}function YV(e,A){e=e|0;A=A|0;var r=0.0;r=+c[A+8>>3]*.5+ +c[A+24>>3];c[e>>3]=+c[A>>3]*.5+ +c[A+16>>3];c[e+8>>3]=r;return}function FV(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0,n=0,f=0.0,l=0.0;i=h;h=h+16|0;a=i;l=+c[A>>3];c[r>>3]=+c[(+c[r>>3]>3];n=r+8|0;f=+c[A+8>>3];c[n>>3]=+c[(+c[n>>3]>3];l=+c[A+16>>3]+l;c[a>>3]=l;f=+c[A+24>>3]+f;c[a+8>>3]=f;n=r+16|0;c[n>>3]=+c[(+c[n>>3]>l?n:a)>>3];A=r+24|0;c[A>>3]=+c[(+c[A>>3]>f?n:a)+8>>3];t[e>>2]=t[r>>2];t[e+4>>2]=t[r+4>>2];t[e+8>>2]=t[r+8>>2];t[e+12>>2]=t[r+12>>2];t[e+16>>2]=t[r+16>>2];t[e+20>>2]=t[r+20>>2];t[e+24>>2]=t[r+24>>2];t[e+28>>2]=t[r+28>>2];h=i;return}function MV(e){e=e|0;gV(e,1);return}function VV(e){e=e|0;var A=0,r=0,i=0,a=0,n=0;i=h;h=h+16|0;r=i;A=Lx(Hw(e,105526)|0)|0;if(A){A=NV(A)|0;if(A|0){a=t[A+40>>2]|0;r=t[A+44>>2]|0;n=e+16|0;e=t[n>>2]|0;c[e+32>>3]=+(a|0)*.013888888888888888;c[e+40>>3]=+(r|0)*.013888888888888888;e=KF(12)|0;t[(t[n>>2]|0)+12>>2]=e;t[e>>2]=t[A+12>>2];t[e+4>>2]=((a|0)/-2|0)-(t[A+32>>2]|0);t[e+8>>2]=((r|0)/-2|0)-(t[A+36>>2]|0)}}else{t[r>>2]=Mk(e)|0;nw(0,104234,r)|0}h=i;return}function NV(e){e=e|0;var A=0,r=0,a=0,n=0,f=0,l=0,s=0,c=0,o=0,u=0,b=0,w=0,k=0;w=h;h=h+1152|0;l=w+24|0;f=w+8|0;r=w;a=w+120|0;s=w+44|0;c=w+40|0;o=w+36|0;u=w+32|0;b=w+28|0;A=t[47266]|0;if(!A){A=Uh(20812,t[4581]|0)|0;t[47266]=A}A=L5[t[A>>2]&63](A,e,512)|0;do{if(!A){n=F3(e,138821)|0;if(!n){t[r>>2]=e;nw(0,104283,r)|0;A=0;break}else{A=0;r=0}while(1){if(!(N4(a,1024,n)|0)){a=11;break}t[f>>2]=c;t[f+4>>2]=o;t[f+8>>2]=u;t[f+12>>2]=b;k=(V3(a,104311,f)|0)==4;r=k?1:r;if((i[a>>0]|0)!=37){k=(R4(a,104340)|0)==0;A=k?A:1}if((r|0)!=0&(A|0)!=0){a=12;break}}if((a|0)==11)if(!r){t[l>>2]=e;nw(0,104345,l)|0;A=0}else a=12;if((a|0)==12){k=$F(64)|0;c=t[c>>2]|0;t[k+32>>2]=c;o=t[o>>2]|0;t[k+40>>2]=(t[u>>2]|0)-c;t[k+36>>2]=(t[b>>2]|0)-o;t[k+8>>2]=e;b=t[47267]|0;t[47267]=b+1;t[k+12>>2]=b;W3(l6(n)|0,s)|0;b=t[s+36>>2]|0;u=$F(b+1|0)|0;t[k+52>>2]=u;O3(n,0,0)|0;t6(u,b,1,n)|0;i[u+b>>0]=0;b=t[47266]|0;L5[t[b>>2]&63](b,k,1)|0;i[k+16>>0]=A;A=k}k3(n)|0}}while(0);h=w;return A|0}function RV(e,A,r){e=e|0;A=A|0;r=r|0;G2(t[A+52>>2]|0);return}function xV(e){e=e|0;G2(t[(t[e+16>>2]|0)+12>>2]|0);return}function JV(e,A,r){e=e|0;A=A|0;r=r|0;var a=0,n=0,f=0,l=0,s=0,c=0,o=0,u=0;u=h;h=h+16|0;o=u+8|0;c=u;s=(A|0)!=0;e:do{if(s){f=0;a=0;A:while(1)while(1){if(f)break e;n=t[A+(a<<2)>>2]|0;if(!n){l=6;break e}a=a+1|0;if(!(i[n>>0]|0)){f=1;continue A}}}else l=6}while(0);e:do{if((l|0)==6)while(1){a=t[r>>2]|0;if(!a)break e;hm(e,a)|0;hm(e,153599)|0;r=r+4|0;l=6}}while(0);e:do{if(s){f=0;while(1){a=t[A+(f<<2)>>2]|0;if(!a)break e;do{if(i[a>>0]|0){r=Lx(a)|0;if(!r){t[c>>2]=a;nw(0,104384,c)|0;break}n=F3(r,138821)|0;if(!n){t[o>>2]=r;nw(0,104412,o)|0;break}while(1){a=Gx(n)|0;if(!a)break;hm(e,a)|0}hm(e,153599)|0;k3(n)|0}}while(0);f=f+1|0}}}while(0);h=u;return}function HV(e,A){e=e|0;A=A|0;var r=0,a=0,n=0;A=t[A+52>>2]|0;e:while(1){r=i[A>>0]|0;A:do{switch(r<<24>>24){case 0:break e;case 37:{if((i[A+1>>0]|0)==37){r=A+2|0;if((((S1(r,104440,3)|0)!=0?(S1(r,104444,5)|0)!=0:0)?(S1(r,104450,3)|0)!=0:0)?(S1(r,104454,7)|0)!=0:0){r=37;break A}else n=37;r:while(1){switch(n<<24>>24){case 13:{a=10;break r}case 10:case 0:{a=12;break r}default:{}}n=A+1|0;A=n;n=i[n>>0]|0}if((a|0)==10){r=A+1|0;if((i[r>>0]|0)==10){A=A+2|0;continue e}}else if((a|0)==12)r=A+1|0;A=n<<24>>24==0?A:r;continue e}else r=37;break}default:{}}}while(0);A:while(1){switch(r<<24>>24){case 10:case 13:case 0:break A;default:{}}wm(e,r<<24>>24)|0;n=A+1|0;A=n;r=i[n>>0]|0}a=A+1|0;if(r<<24>>24==13?(i[a>>0]|0)==10:0)A=A+2|0;else A=r<<24>>24==0?A:a;wm(e,10)|0}return}function PV(e){e=e|0;var A=0,r=0,a=0,n=0;a=h;h=h+16|0;r=a;A=t[47266]|0;e:do{if(A|0){A=L5[t[A>>2]&63](A,0,128)|0;while(1){if(!A)break e;if(!(i[A+16>>0]|0)){t[r>>2]=t[A+12>>2];mm(e,104462,r);hm(e,104480)|0;HV(e,A);hm(e,104498)|0;hm(e,104513)|0}n=t[47266]|0;A=L5[t[n>>2]&63](n,A,8)|0}}}while(0);h=a;return}function XV(e,A){e=e|0;A=A|0;var r=0,a=0,n=0,f=0;n=h;h=h+16|0;r=n;e:do{switch(A|0){case 0:{a=e;break}case 1:{a=EJ(e)|0;break}default:{switch(SV(e)|0){case 2:break;case 1:{a=EJ(e)|0;break e}default:{a=e;break e}}if(!(t[47268]|0)){nw(0,104525,r)|0;t[47268]=1;a=e}else a=e}}}while(0);if(!(t[47269]|0))cw(189076,0,0);A=t[47270]|0;if(A>>>0>=(t[47271]|0)>>>0){ow(189076,1)|0;A=t[47270]|0}t[47270]=A+1;i[A>>0]=40;r=a;e:while(1){switch(i[r>>0]|0){case 0:break e;case 92:case 41:case 40:{A=t[47270]|0;if(A>>>0>=(t[47271]|0)>>>0){ow(189076,1)|0;A=t[47270]|0}t[47270]=A+1;i[A>>0]=92;break}default:{}}A=t[47270]|0;if(A>>>0>=(t[47271]|0)>>>0){ow(189076,1)|0;A=t[47270]|0}f=i[r>>0]|0;t[47270]=A+1;i[A>>0]=f;r=r+1|0}A=t[47270]|0;if(A>>>0>=(t[47271]|0)>>>0){ow(189076,1)|0;A=t[47270]|0}t[47270]=A+1;i[A>>0]=41;if((a|0)!=(e|0))G2(a);A=t[47270]|0;if(A>>>0>=(t[47271]|0)>>>0){ow(189076,1)|0;A=t[47270]|0}i[A>>0]=0;f=t[47269]|0;t[47270]=f;h=n;return f|0}function SV(e){e=e|0;var A=0,r=0;A=0;e:while(1){while(1){r=i[e>>0]|0;if(!(r<<24>>24))break e;if((r&255)<127)e=e+1|0;else break}if((r&-4)<<24>>24==-64){A=1;e=e+2|0}else{A=2;break}}return A|0}function jV(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;var n=0,f=0,l=0,s=0,o=0,u=0,b=0,w=0;u=h;h=h+96|0;f=u+80|0;l=u+72|0;o=u+64|0;n=u+32|0;s=u;c[n>>3]=+c[e>>3];c[n+8>>3]=+c[e+8>>3];c[n+16>>3]=+c[A>>3];c[n+24>>3]=+c[A+8>>3];do{if((rs(r,n,l)|0)>=0){if(!a){A=r+4|0;e=t[A>>2]|0;a=t[47274]|0;if((e|0)>(t[47273]|0)){if(!a)e=$F(e<<5)|0;else e=AM(a,e<<5)|0;t[47274]=e;n=t[A>>2]|0;t[47273]=n;a=e}else n=e;A=t[r>>2]|0;e=0;while(1){if((e|0)>=(n|0))break;b=a+(e<<5)|0;r=A+(e<<4)|0;t[b>>2]=t[r>>2];t[b+4>>2]=t[r+4>>2];t[b+8>>2]=t[r+8>>2];t[b+12>>2]=t[r+12>>2];b=a+(e<<5)+16|0;r=e+1|0;w=A+(((r|0)%(n|0)|0)<<4)|0;t[b>>2]=t[w>>2];t[b+4>>2]=t[w+4>>2];t[b+8>>2]=t[w+8>>2];t[b+12>>2]=t[w+12>>2];e=r}t[s>>2]=0;t[s+4>>2]=0;t[s+8>>2]=0;t[s+12>>2]=0;t[s+16>>2]=0;t[s+20>>2]=0;t[s+24>>2]=0;t[s+28>>2]=0;t[f>>2]=t[l>>2];t[f+4>>2]=t[l+4>>2];if((Yl(a,n,f,s,o)|0)<0){e=0;break}}else{t[f>>2]=t[l>>2];t[f+4>>2]=t[l+4>>2];Cs(f,o)}e=o+4|0;if(!(UV(t[e>>2]|0)|0)){n=t[e>>2]|0;e=t[47275]|0;a=t[o>>2]|0;A=0;while(1){if((A|0)>=(n|0))break;w=e+(A<<4)|0;b=a+(A<<4)|0;t[w>>2]=t[b>>2];t[w+4>>2]=t[b+4>>2];t[w+8>>2]=t[b+8>>2];t[w+12>>2]=t[b+12>>2];A=A+1|0}t[i>>2]=n}else e=0}else e=0}while(0);h=u;return e|0}function UV(e){e=e|0;var A=0,r=0,i=0;i=h;h=h+16|0;r=i;A=t[47276]|0;do{if((A|0)<(e|0)){e=e+300-((e|0)%300|0)+A|0;A=AM(t[47275]|0,e<<4)|0;t[47275]=A;if(!A){nw(1,104615,r)|0;e=1;break}else{t[47276]=e;e=0;break}}else e=0}while(0);h=i;return e|0}function TV(){var e=0,A=0,r=0;A=h;h=h+16|0;e=A;r=t[47277]|0;t[47277]=r+1;do{if((r|0)<=0){r=$F(4800)|0;t[47275]=r;if(!r){nw(1,104638,e)|0;e=1;break}t[47276]=300;t[47278]=0;t[47279]=0;if(0){lx();e=0}else e=0}else e=0}while(0);h=A;return e|0}function OV(){var e=0,A=0,r=0,i=0.0,a=0,n=0;A=h;h=h+16|0;e=A;r=t[47277]|0;t[47277]=r+-1;if((r|0)<=1?(G2(t[47275]|0),0):0){r=t[15712]|0;n=t[47278]|0;a=t[47279]|0;i=+sx();t[e>>2]=n;t[e+4>>2]=a;c[e+8>>3]=i;a3(r,104676,e)|0}h=A;return}function _V(e,A){e=e|0;A=A|0;return qV(e,A,0)|0}function qV(e,A,r){e=e|0;A=A|0;r=r|0;var a=0,n=0,f=0,l=0,s=0.0,o=0.0,u=0,b=0,w=0,k=0,d=0,v=0,g=0,m=0,p=0,E=0,B=0,y=0,C=0,I=0,Z=0,G=0,L=0,Q=0,D=0,z=0,F=0,M=0,V=0,N=0,R=0;V=h;h=h+176|0;Q=V+168|0;M=V+128|0;B=V+120|0;p=V+112|0;f=V+104|0;v=V+88|0;u=V+72|0;n=V+64|0;g=V+160|0;z=V+152|0;y=V+144|0;m=V+32|0;E=V;F=V+136|0;t[47278]=(t[47278]|0)+1;D=t[e+80>>2]|0;t[47279]=(t[47279]|0)+D;a=e+88|0;while(1){G=t[a>>2]|0;if(!G){L=4;break}a=t[G+16>>2]|0;if(!(i[a+112>>0]|0)){L=5;break}else a=a+116|0}do{if((L|0)==4){nw(1,104719,n)|0;a=0}else if((L|0)==5){Z=t[e+84>>2]|0;if(!(KV(D,Z,e)|0)){n=D<<3;if((n|0)>(t[47280]|0)){a=t[47281]|0;if(!a)a=$F(D<<7)|0;else a=AM(a,D<<7)|0;t[47281]=a;t[47280]=n}e:do{if((D|0)>1?+c[Z+8>>3]>+c[Z+40>>3]:0){a=0;while(1){if((a|0)==(D|0)){w=1;break e}C=Z+(a<<5)+24|0;o=+c[C>>3];I=Z+(a<<5)+8|0;c[C>>3]=-+c[I>>3];c[I>>3]=-o;a=a+1|0}}else w=0}while(0);d=t[G>>2]&3;C=G+48|0;a=t[((d|0)==3?G:C)+40>>2]|0;I=G+-48|0;if((a|0)==(t[((d|0)==2?G:I)+40>>2]|0)){t[f>>2]=Mk(a)|0;nw(1,104826,f)|0;a=0;break}b=D+-1|0;k=t[47281]|0;d=k;a=0;l=0;e:while(1){if((l|0)>=(D|0)){l=b;u=a;break}if((l|0)>0)n=+c[Z+(l<<5)+8>>3]>+c[Z+(l+-1<<5)+8>>3]?-1:1;else n=0;if((l|0)<(b|0))f=+c[Z+(l+1<<5)+8>>3]>+c[Z+(l<<5)+8>>3]?1:-1;else f=0;A:do{if((n|0)!=(f|0))if((n|0)==1|(f|0)==-1){n=Z+(l<<5)|0;c[k+(a<<4)>>3]=+c[n>>3];f=a+1|0;c[k+(a<<4)+8>>3]=+c[Z+(l<<5)+24>>3];c[k+(f<<4)>>3]=+c[n>>3];n=Z+(l<<5)+8|0;L=29;break}else{n=Z+(l<<5)+16|0;c[k+(a<<4)>>3]=+c[n>>3];f=a+1|0;c[k+(a<<4)+8>>3]=+c[Z+(l<<5)+8>>3];c[k+(f<<4)>>3]=+c[n>>3];n=Z+(l<<5)+24|0;L=29;break}else{switch(n|0){case-1:break A;case 0:break;default:{L=28;break e}}n=Z+(l<<5)|0;c[k+(a<<4)>>3]=+c[n>>3];f=a+1|0;c[k+(a<<4)+8>>3]=+c[Z+(l<<5)+24>>3];c[k+(f<<4)>>3]=+c[n>>3];n=Z+(l<<5)+8|0;L=29}}while(0);if((L|0)==29){L=0;c[k+(f<<4)+8>>3]=+c[n>>3];a=a+2|0}l=l+1|0}if((L|0)==28){t[u>>2]=n;t[u+4>>2]=n;t[u+8>>2]=480;nw(1,104761,u)|0;a=0;break}e:while(1){if((l|0)<=-1)break;if((l|0)<(b|0))a=+c[Z+(l<<5)+8>>3]>+c[Z+(l+1<<5)+8>>3]?-1:1;else a=0;if((l|0)>0)n=+c[Z+(l+-1<<5)+8>>3]>+c[Z+(l<<5)+8>>3]?1:-1;else n=0;A:do{if((a|0)!=(n|0))if((a|0)==1|(n|0)==-1){a=Z+(l<<5)|0;c[k+(u<<4)>>3]=+c[a>>3];n=u+1|0;c[k+(u<<4)+8>>3]=+c[Z+(l<<5)+24>>3];c[k+(n<<4)>>3]=+c[a>>3];a=Z+(l<<5)+8|0;f=2;break}else{a=Z+(l<<5)+16|0;c[k+(u<<4)>>3]=+c[a>>3];n=u+1|0;c[k+(u<<4)+8>>3]=+c[Z+(l<<5)+8>>3];c[k+(n<<4)>>3]=+c[a>>3];a=Z+(l<<5)+24|0;f=2;break}else switch(a|0){case 0:{a=Z+(l<<5)+16|0;c[k+(u<<4)>>3]=+c[a>>3];n=u+1|0;c[k+(u<<4)+8>>3]=+c[Z+(l<<5)+8>>3];c[k+(n<<4)>>3]=+c[a>>3];a=Z+(l<<5)+24|0;f=2;break A}case-1:{R=Z+(l<<5)+16|0;c[k+(u<<4)>>3]=+c[R>>3];a=Z+(l<<5)+8|0;f=u+1|0;c[k+(u<<4)+8>>3]=+c[a>>3];c[k+(f<<4)>>3]=+c[R>>3];R=Z+(l<<5)+24|0;N=u+2|0;c[k+(f<<4)+8>>3]=+c[R>>3];f=Z+(l<<5)|0;c[k+(N<<4)>>3]=+c[f>>3];n=u+3|0;c[k+(N<<4)+8>>3]=+c[R>>3];c[k+(n<<4)>>3]=+c[f>>3];f=4;break A}default:{L=42;break e}}}while(0);c[k+(n<<4)+8>>3]=+c[a>>3];l=l+-1|0;u=u+f|0}if((L|0)==42){t[v>>2]=a;t[v+4>>2]=a;t[v+8>>2]=513;nw(1,104761,v)|0;a=0;break}e:do{if(!w)a=0;else{a=0;while(1){if((a|0)>=(D|0)){a=0;break}N=Z+(a<<5)+24|0;o=+c[N>>3];R=Z+(a<<5)+8|0;c[N>>3]=-+c[R>>3];c[R>>3]=-o;a=a+1|0}while(1){if((a|0)>=(u|0)){a=0;break e}R=k+(a<<4)+8|0;c[R>>3]=-+c[R>>3];a=a+1|0}}}while(0);while(1){if((a|0)>=(D|0))break;c[Z+(a<<5)>>3]=2147483647.0;c[Z+(a<<5)+16>>3]=-2147483648.0;a=a+1|0}t[g>>2]=d;f=g+4|0;t[f>>2]=u;c[m>>3]=+c[e>>3];c[m+8>>3]=+c[e+8>>3];c[m+16>>3]=+c[e+40>>3];c[m+24>>3]=+c[e+48>>3];if((rs(g,m,z)|0)<0){nw(1,104865,p)|0;a=0;break}if(!r){n=t[f>>2]|0;a=t[47274]|0;if((n|0)>(t[47273]|0)){if(!a)a=$F(n<<5)|0;else a=AM(a,n<<5)|0;t[47274]=a;n=t[f>>2]|0;t[47273]=n}l=t[47281]|0;f=0;while(1){if((f|0)>=(n|0))break;N=a+(f<<5)|0;R=l+(f<<4)|0;t[N>>2]=t[R>>2];t[N+4>>2]=t[R+4>>2];t[N+8>>2]=t[R+8>>2];t[N+12>>2]=t[R+12>>2];N=a+(f<<5)+16|0;R=f+1|0;p=l+(((R|0)%(n|0)|0)<<4)|0;t[N>>2]=t[p>>2];t[N+4>>2]=t[p+4>>2];t[N+8>>2]=t[p+8>>2];t[N+12>>2]=t[p+12>>2];f=R}if(!(i[e+29>>0]|0)){s=0.0;o=0.0}else{o=+c[e+16>>3];s=+W(+o);o=+Y(+o)}c[E+8>>3]=o;c[E>>3]=s;if(!(i[e+69>>0]|0)){s=0.0;o=0.0}else{o=+c[e+56>>3];s=-+W(+o);o=-+Y(+o)}c[E+24>>3]=o;c[E+16>>3]=s;t[Q>>2]=t[z>>2];t[Q+4>>2]=t[z+4>>2];if((Yl(a,n,Q,E,y)|0)<0){nw(1,104904,B)|0;a=0;break}}else{t[Q>>2]=t[z>>2];t[Q+4>>2]=t[z+4>>2];Cs(Q,y)}u=y+4|0;if(!(UV(t[u>>2]|0)|0)){a=0;while(1){if((a|0)>=(D|0))break;c[Z+(a<<5)>>3]=2147483647.0;c[Z+(a<<5)+16>>3]=-2147483648.0;a=a+1|0}f=t[u>>2]|0;l=t[47275]|0;n=t[y>>2]|0;a=0;while(1){if((a|0)>=(f|0)){f=1;a=10;n=0;break}R=l+(a<<4)|0;N=n+(a<<4)|0;t[R>>2]=t[N>>2];t[R+4>>2]=t[N+4>>2];t[R+8>>2]=t[N+8>>2];t[R+12>>2]=t[N+12>>2];a=a+1|0}while(1){if(!((n|0)<15&f<<24>>24!=0))break;$V(Z,D,t[47275]|0,t[u>>2]|0,a);l=0;while(1){if((l|0)>=(D|0))break;if(+c[Z+(l<<5)>>3]==2147483647.0){L=82;break}if(+c[Z+(l<<5)+16>>3]==-2147483648.0){L=82;break}l=l+1|0}if((L|0)==82){L=0;R=a<<1;a=R;n=(R|0)>(2147483647/(D|0)|0|0)?15:n}f=(l|0)==(D|0)?0:f;n=n+1|0}if(f<<24>>24){N=Mk(t[((t[G>>2]&3|0)==3?G:C)+40>>2]|0)|0;R=Mk(t[((t[G>>2]&3|0)==2?G:I)+40>>2]|0)|0;t[M>>2]=N;t[M+4>>2]=R;nw(0,104942,M)|0;t[Q>>2]=t[z>>2];t[Q+4>>2]=t[z+4>>2];Cs(Q,F);$V(Z,D,t[F>>2]|0,t[F+4>>2]|0,10);G2(t[F>>2]|0)}t[A>>2]=t[u>>2];a=t[47275]|0}else a=0}else a=0}}while(0);h=V;return a|0}function KV(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0.0,n=0.0,f=0,l=0,s=0,o=0.0,u=0.0,b=0,w=0.0,k=0.0,d=0.0,v=0.0,g=0,m=0,p=0,E=0,B=0,y=0,C=0,I=0,Z=0,G=0,L=0,Q=0,D=0,z=0,W=0,Y=0,F=0,M=0.0,V=0,N=0,R=0,x=0.0,J=0,H=0,P=0;P=h;h=h+32|0;Y=P+16|0;W=P+8|0;s=P;i=0;l=0;while(1){if((l|0)>=(e|0))break;f=A+(l<<5)|0;v=+c[A+(l<<5)+8>>3]-+c[A+(l<<5)+24>>3];if(!((v>=0.0?v:-v)<.01)?(v=+c[f>>3]-+c[A+(l<<5)+16>>3],!((v>=0.0?v:-v)<.01)):0){if((i|0)!=(l|0)){J=A+(i<<5)|0;t[J>>2]=t[f>>2];t[J+4>>2]=t[f+4>>2];t[J+8>>2]=t[f+8>>2];t[J+12>>2]=t[f+12>>2];t[J+16>>2]=t[f+16>>2];t[J+20>>2]=t[f+20>>2];t[J+24>>2]=t[f+24>>2];t[J+28>>2]=t[f+28>>2]}i=i+1|0}l=l+1|0}F=A+16|0;do{if(!(+c[A>>3]>+c[F>>3])?(V=A+8|0,R=A+24|0,!(+c[V>>3]>+c[R>>3])):0){J=i+-1|0;N=t[15712]|0;E=0;while(1){if((E|0)>=(J|0))break;L=E+1|0;Q=A+(L<<5)|0;a=+c[Q>>3];D=A+(L<<5)+16|0;n=+c[D>>3];if(a>n){H=16;break}I=A+(L<<5)+8|0;o=+c[I>>3];Z=A+(L<<5)+24|0;u=+c[Z>>3];if(o>u){H=16;break}z=A+(E<<5)+16|0;p=+c[z>>3]>3]>n;e=m&1;C=A+(E<<5)+24|0;g=+c[C>>3]>3]>u;f=s&1;B=e+i+l+f|0;b=(B|0)!=0;if(!(0==0|b^1)){t[Y>>2]=E;t[Y+4>>2]=L;a3(N,105142,Y)|0;eN(r)}e:do{if(b){if(!p)if(!m)if(!g){if(s){s=0;b=i;i=Z;f=y;H=24}}else{s=f;l=0;b=i;i=I;f=C;H=24}else{s=f;e=0;b=i;i=D;f=G;H=24}else{s=f;b=0;i=Q;f=z;H=24}if((H|0)==24){H=0;E=~~+c[f>>3];c[f>>3]=+c[i>>3];c[i>>3]=+(E|0);f=s;i=b}b=B+-1|0;s=0;while(1){if((s|0)>=(b|0))break e;do{if((i|0)!=1){if((e|0)==1){v=+(~~((+c[D>>3]+ +c[G>>3])*.5+.5)|0);c[D>>3]=v;c[G>>3]=v;e=0;break}if((l|0)==1){v=+(~~((+c[I>>3]+ +c[C>>3])*.5+.5)|0);c[I>>3]=v;c[C>>3]=v;l=0;break}if((f|0)==1){v=+(~~((+c[Z>>3]+ +c[y>>3])*.5+.5)|0);c[Z>>3]=v;c[y>>3]=v;f=0}}else{v=+(~~((+c[Q>>3]+ +c[z>>3])*.5+.5)|0);c[Q>>3]=v;c[z>>3]=v;i=0}}while(0);s=s+1|0}}}while(0);w=+c[G>>3];k=+c[z>>3];d=+c[Q>>3];v=+c[D>>3];f=AN(~~w,~~k,~~d,~~v)|0;u=+c[y>>3];o=+c[C>>3];n=+c[I>>3];a=+c[Z>>3];i=AN(~~u,~~o,~~n,~~a)|0;if(!((f|0)!=0&(i|0)!=0)){E=L;continue}if((f|0)<(i|0)){Z=k-w>v-d;E=k>3]=Z?E?d:v:E?k:w;E=L;continue}else{Z=o-u>a-n;E=o>3]=Z?E?n:a:E?o:u;E=L;continue}}if((H|0)==16){t[W>>2]=L;nw(1,105096,W)|0;eN(r);i=1;break}a=+c[r>>3];n=+c[A>>3];if(!(((!(a+c[F>>3]):0)?(M=+c[r+8>>3],!(M<+c[V>>3])):0)?!(M>+c[R>>3]):0)){if(0){G3(105185,42,1,N)|0;eN(r);n=+c[A>>3];a=+c[r>>3]}if(a>3]=n;else n=a;a=+c[F>>3];if(n>a)c[r>>3]=a;i=r+8|0;n=+c[i>>3];a=+c[V>>3];if(n>3]=a;n=a}a=+c[R>>3];if(n>a)c[i>>3]=a}f=r+40|0;a=+c[f>>3];i=A+(J<<5)|0;n=+c[i>>3];if(((!(a+c[A+(J<<5)+16>>3]):0)?(x=+c[r+48>>3],!(x<+c[A+(J<<5)+8>>3])):0)?!(x>+c[A+(J<<5)+24>>3]):0){i=0;break}if(0){G3(105228,39,1,N)|0;eN(r);n=+c[i>>3];a=+c[f>>3]}if(a>3]=n;a=n}n=+c[A+(J<<5)+16>>3];if(a>n)c[f>>3]=n;i=r+48|0;a=+c[i>>3];n=+c[A+(J<<5)+8>>3];if(a>3]=n;else n=a;a=+c[A+(J<<5)+24>>3];if(n>a){c[i>>3]=a;i=0}else i=0}else H=12}while(0);if((H|0)==12){nw(1,105051,s)|0;eN(r);i=1}h=P;return i|0}function $V(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;var t=0,n=0,f=0,l=0,s=0,o=0,u=0.0,b=0.0,h=0,w=0,k=0,d=0,v=0,g=0.0,m=0,p=0.0,E=0.0,B=0.0,y=0.0,C=0.0;v=P(a,A)|0;g=1.0/+(v|0);a=0;e:while(1){m=a+3|0;if((m|0)>=(i|0))break;h=r+(a<<4)|0;w=r+(a<<4)+8|0;d=a+1|0;k=r+(d<<4)|0;d=r+(d<<4)+8|0;l=a+2|0;f=r+(l<<4)|0;l=r+(l<<4)+8|0;s=r+(m<<4)|0;o=r+(m<<4)+8|0;n=0;while(1){if((n|0)>(v|0)){a=m;continue e}p=g*+(n|0);u=+c[h>>3];b=+c[w>>3];y=+c[k>>3];E=+c[d>>3];C=+c[f>>3];B=+c[l>>3];u=(y-u)*p+u;b=(E-b)*p+b;y=(C-y)*p+y;E=(B-E)*p+E;u=(y-u)*p+u;b=(E-b)*p+b;u=((C-y+(+c[s>>3]-C)*p)*p+y-u)*p+u;b=((B-E+(+c[o>>3]-B)*p)*p+E-b)*p+b;t=0;while(1){if((t|0)>=(A|0))break;if(b<=+c[e+(t<<5)+24>>3]+.0001?b>=+c[e+(t<<5)+8>>3]+-.0001:0){a=e+(t<<5)|0;if(+c[a>>3]>u)c[a>>3]=u;a=e+(t<<5)+16|0;if(+c[a>>3]>3]=u}t=t+1|0}n=n+1|0}}return}function eN(e){e=e|0;var A=0,r=0,a=0,n=0,f=0,l=0,s=0,o=0,u=0.0,b=0.0,w=0.0,k=0.0,d=0;o=h;h=h+112|0;l=o+80|0;s=o+48|0;f=o+8|0;n=o;r=t[15712]|0;a=e+80|0;t[n>>2]=t[a>>2];a3(r,105268,n)|0;n=e+84|0;A=0;while(1){if((A|0)>=(t[a>>2]|0))break;d=t[n>>2]|0;k=+c[d+(A<<5)>>3];w=+c[d+(A<<5)+8>>3];b=+c[d+(A<<5)+16>>3];u=+c[d+(A<<5)+24>>3];t[f>>2]=A;c[f+8>>3]=k;c[f+16>>3]=w;c[f+24>>3]=b;c[f+32>>3]=u;a3(r,105279,f)|0;A=A+1|0}k=+c[e+8>>3];w=+c[e+16>>3];d=i[e+29>>0]|0?105310:105322;c[s>>3]=+c[e>>3];c[s+8>>3]=k;c[s+16>>3]=w;t[s+24>>2]=d;a3(r,105338,s)|0;w=+c[e+48>>3];k=+c[e+56>>3];d=i[e+69>>0]|0?105310:105322;c[l>>3]=+c[e+40>>3];c[l+8>>3]=w;c[l+16>>3]=k;t[l+24>>2]=d;a3(r,105389,l)|0;h=o;return}function AN(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;do{if((A|0)>(r|0)&(i|0)>(e|0)){if(!((r|0)>(e|0)|(i|0)<(e|0))){e=i-e|0;break}if((A|0)<(r|0)|(A|0)>(i|0)){A=A-e|0;e=i-r|0;e=(A|0)<(e|0)?A:e;break}else{e=A-r|0;break}}else e=0}while(0);return e|0}function rN(e,A){e=e|0;A=A|0;return qV(e,A,1)|0}function iN(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0,n=0,f=0,l=0,s=0;s=h;h=h+80|0;n=s;l=1;a=A;while(1){f=a;a=t[(t[a+16>>2]|0)+172>>2]|0;if(!((a|0)!=0&(f|0)!=(a|0)))break;else l=l+1|0}if((l|0)>=21)n=KF(l<<2)|0;f=0;a=A;while(1){if((f|0)>=(l|0))break;t[n+(f<<2)>>2]=a;f=f+1|0;a=t[(t[a+16>>2]|0)+172>>2]|0}aN(e,n,l,r,i);if((l|0)>20)G2(n);h=s;return}function aN(e,A,r,a,n){e=e|0;A=A|0;r=r|0;a=a|0;n=n|0;var f=0,l=0,s=0,o=0.0,u=0.0,b=0.0,w=0.0,k=0.0,d=0,v=0.0,g=0,m=0,p=0,E=0,B=0,y=0,C=0,I=0,Z=0,G=0,L=0,Q=0,z=0,W=0,Y=0,F=0,M=0,V=0.0,N=0.0,R=0.0,x=0,J=0;M=h;h=h+304|0;I=M+272|0;C=M+208|0;z=M+96|0;W=M+32|0;Y=M+16|0;F=M;d=M+192|0;y=M+176|0;f=M+160|0;Z=M+296|0;G=M+288|0;l=t[A>>2]|0;E=t[l>>2]&3;s=l+-48|0;L=t[((E|0)==2?l:s)+40>>2]|0;g=z+16|0;E=(t[(t[((E|0)==3?l:l+48|0)+40>>2]|0)+16>>2]|0)+16|0;B=l+16|0;Q=(t[B>>2]|0)+16|0;t[C>>2]=t[E>>2];t[C+4>>2]=t[E+4>>2];t[C+8>>2]=t[E+8>>2];t[C+12>>2]=t[E+12>>2];t[I>>2]=t[Q>>2];t[I+4>>2]=t[Q+4>>2];t[I+8>>2]=t[Q+8>>2];t[I+12>>2]=t[Q+12>>2];tN(d,C,I);t[z>>2]=t[d>>2];t[z+4>>2]=t[d+4>>2];t[z+8>>2]=t[d+8>>2];t[z+12>>2]=t[d+12>>2];t[g>>2]=t[d>>2];t[g+4>>2]=t[d+4>>2];t[g+8>>2]=t[d+8>>2];t[g+12>>2]=t[d+12>>2];t[Y>>2]=t[d>>2];t[Y+4>>2]=t[d+4>>2];t[Y+8>>2]=t[d+8>>2];t[Y+12>>2]=t[d+12>>2];d=z+32|0;Q=z+48|0;E=(t[L+16>>2]|0)+16|0;B=(t[B>>2]|0)+56|0;t[C>>2]=t[E>>2];t[C+4>>2]=t[E+4>>2];t[C+8>>2]=t[E+8>>2];t[C+12>>2]=t[E+12>>2];t[I>>2]=t[B>>2];t[I+4>>2]=t[B+4>>2];t[I+8>>2]=t[B+8>>2];t[I+12>>2]=t[B+12>>2];tN(y,C,I);t[Q>>2]=t[y>>2];t[Q+4>>2]=t[y+4>>2];t[Q+8>>2]=t[y+8>>2];t[Q+12>>2]=t[y+12>>2];t[d>>2]=t[y>>2];t[d+4>>2]=t[y+4>>2];t[d+8>>2]=t[y+8>>2];t[d+12>>2]=t[y+12>>2];t[F>>2]=t[y>>2];t[F+4>>2]=t[y+4>>2];t[F+8>>2]=t[y+8>>2];t[F+12>>2]=t[y+12>>2];e:do{if((r|0)!=1&(i[194954]|0)==0){o=+c[z>>3];u=+c[Q>>3];V=o-u;b=+c[z+8>>3];w=+c[z+56>>3];v=b-w;k=v*v;if(k+V*V<1.0e-06){t[g>>2]=t[z>>2];t[g+4>>2]=t[z+4>>2];t[g+8>>2]=t[z+8>>2];t[g+12>>2]=t[z+12>>2];t[d>>2]=t[Q>>2];t[d+4>>2]=t[Q+4>>2];t[d+8>>2]=t[Q+8>>2];t[d+12>>2]=t[Q+12>>2];y=z+24|0;B=z+40|0;u=0.0;o=0.0}else{N=u-o;V=+D(+(k+N*N));E=t[(t[(t[e+60>>2]|0)+16>>2]|0)+248>>2]|0;R=+((P(E,r+-1|0)|0)/2|0|0);k=v*R/V;c[g>>3]=k+o;o=N*R/V;y=z+24|0;c[y>>3]=o+b;c[d>>3]=k+u;B=z+40|0;c[B>>3]=w+o;o=+(0-E|0);u=N*o/V;o=v*o/V}a=(a|0)==6;m=G+4|0;p=Z+4|0;l=0;while(1){if((l|0)>=(r|0))break e;E=t[A+(l<<2)>>2]|0;s=E+-48|0;A:do{if((t[((t[E>>2]&3|0)==2?E:s)+40>>2]|0)==(L|0)){t[Y>>2]=t[z>>2];t[Y+4>>2]=t[z+4>>2];t[Y+8>>2]=t[z+8>>2];t[Y+12>>2]=t[z+12>>2];t[F>>2]=t[Q>>2];t[F+4>>2]=t[Q+4>>2];t[F+8>>2]=t[Q+8>>2];t[F+12>>2]=t[Q+12>>2];f=0;while(1){if((f|0)==4)break A;x=W+(f<<4)|0;J=z+(f<<4)|0;t[x>>2]=t[J>>2];t[x+4>>2]=t[J+4>>2];t[x+8>>2]=t[J+8>>2];t[x+12>>2]=t[J+12>>2];f=f+1|0}}else{t[Y>>2]=t[Q>>2];t[Y+4>>2]=t[Q+4>>2];t[Y+8>>2]=t[Q+8>>2];t[Y+12>>2]=t[Q+12>>2];t[F>>2]=t[z>>2];t[F+4>>2]=t[z+4>>2];t[F+8>>2]=t[z+8>>2];t[F+12>>2]=t[z+12>>2];f=0;while(1){if((f|0)==4)break A;J=W+(3-f<<4)|0;x=z+(f<<4)|0;t[J>>2]=t[x>>2];t[J+4>>2]=t[x+4>>2];t[J+8>>2]=t[x+8>>2];t[J+12>>2]=t[x+12>>2];f=f+1|0}}}while(0);if(a){t[m>>2]=4;t[G>>2]=C;f=0;while(1){if((f|0)==4)break;J=C+(f<<4)|0;x=W+(f<<4)|0;t[J>>2]=t[x>>2];t[J+4>>2]=t[x+4>>2];t[J+8>>2]=t[x+8>>2];t[J+12>>2]=t[x+12>>2];f=f+1|0}t[I>>2]=t[G>>2];t[I+4>>2]=t[G+4>>2];Cs(I,Z);mR(E,t[((t[E>>2]&3|0)==2?E:s)+40>>2]|0,t[Z>>2]|0,t[p>>2]|0,n)}else mR(E,t[((t[E>>2]&3|0)==2?E:s)+40>>2]|0,W,4,n);t[C>>2]=t[Y>>2];t[C+4>>2]=t[Y+4>>2];t[C+8>>2]=t[Y+8>>2];t[C+12>>2]=t[Y+12>>2];t[I>>2]=t[F>>2];t[I+4>>2]=t[F+4>>2];t[I+8>>2]=t[F+8>>2];t[I+12>>2]=t[F+12>>2];JR(e,E,C,I);c[g>>3]=+c[g>>3]+o;c[y>>3]=+c[y>>3]+u;c[d>>3]=+c[d>>3]+o;c[B>>3]=+c[B>>3]+u;l=l+1|0}}else{if((a|0)==4){nN(f,e);t[I>>2]=t[f>>2];t[I+4>>2]=t[f+4>>2];t[I+8>>2]=t[f+8>>2];t[I+12>>2]=t[f+12>>2];fN(z,I)}mR(l,t[((t[l>>2]&3|0)==2?l:s)+40>>2]|0,z,4,n);t[C>>2]=t[Y>>2];t[C+4>>2]=t[Y+4>>2];t[C+8>>2]=t[Y+8>>2];t[C+12>>2]=t[Y+12>>2];t[I>>2]=t[F>>2];t[I+4>>2]=t[F+4>>2];t[I+8>>2]=t[F+8>>2];t[I+12>>2]=t[F+12>>2];JR(e,l,C,I)}}while(0);h=M;return}function tN(e,A,r){e=e|0;A=A|0;r=r|0;var i=0.0;i=+c[r+8>>3]+ +c[A+8>>3];c[e>>3]=+c[r>>3]+ +c[A>>3];c[e+8>>3]=i;return}function nN(e,A){e=e|0;A=A|0;A=t[A+16>>2]|0;c[23305]=(+c[A+32>>3]+ +c[A+16>>3])*.5;c[23306]=(+c[A+40>>3]+ +c[A+24>>3])*.5;t[e>>2]=t[46610];t[e+4>>2]=t[46611];t[e+8>>2]=t[46612];t[e+12>>2]=t[46613];return}function fN(e,A){e=e|0;A=A|0;var r=0.0,i=0.0,a=0.0,t=0.0,n=0.0,f=0.0;t=+c[e>>3];i=+c[e+48>>3];f=(i+t)*.5;n=+c[e+8>>3];r=+c[e+56>>3];a=(r+n)*.5;t=i-t;n=r-n;t=+D(+(n*n+t*t))*.2;n=+c[A>>3]-f;r=+c[A+8>>3]-a;i=+D(+(r*r+n*n));if(!(i==0.0)){n=f-n/i*t;f=a-r/i*t;c[e+32>>3]=n;c[e+16>>3]=n;c[e+40>>3]=f;c[e+24>>3]=f}return}function lN(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;var n=0,f=0,l=0,s=0,o=0.0,u=0,b=0.0,w=0,k=0,d=0,v=0,g=0,m=0,p=0,E=0,B=0,y=0,C=0,I=0,Z=0,G=0,L=0,Q=0.0,z=0,W=0.0,Y=0.0,F=0.0;L=h;h=h+208|0;g=L+192|0;v=L+176|0;Z=L+32|0;E=L+16|0;B=L;y=L+160|0;C=L+144|0;m=L+128|0;p=L+112|0;n=i&2130706432;I=(i&8|0)==0?(n|0)==0?4:n:8;if((I|0)==436207616)sN(e,A,r,a);else{G=KF((r<<6)+64|0)|0;w=r+-1|0;k=B+8|0;d=E+8|0;b=12.0;i=0;while(1){if((i|0)>=(r|0))break;u=A+(i<<4)|0;t[E>>2]=t[u>>2];t[E+4>>2]=t[u+4>>2];t[E+8>>2]=t[u+8>>2];t[E+12>>2]=t[u+12>>2];if((i|0)<(w|0)){i=i+1|0;u=A+(i<<4)|0;t[B>>2]=t[u>>2];t[B+4>>2]=t[u+4>>2];t[B+8>>2]=t[u+8>>2];t[B+12>>2]=t[u+12>>2]}else{t[B>>2]=t[A>>2];t[B+4>>2]=t[A+4>>2];t[B+8>>2]=t[A+8>>2];t[B+12>>2]=t[A+12>>2];i=i+1|0}o=+c[B>>3]-+c[E>>3];Q=+c[k>>3]-+c[d>>3];o=+D(+(Q*Q+o*o))*.3333333333333333;b=b=(r|0))break;n=A+(f<<4)|0;t[E>>2]=t[n>>2];t[E+4>>2]=t[n+4>>2];t[E+8>>2]=t[n+8>>2];t[E+12>>2]=t[n+12>>2];if((f|0)<(w|0)){n=A+(f+1<<4)|0;t[B>>2]=t[n>>2];t[B+4>>2]=t[n+4>>2];t[B+8>>2]=t[n+8>>2];t[B+12>>2]=t[n+12>>2]}else{t[B>>2]=t[A>>2];t[B+4>>2]=t[A+4>>2];t[B+8>>2]=t[A+8>>2];t[B+12>>2]=t[A+12>>2]}o=+c[B>>3]-+c[E>>3];Q=+c[k>>3]-+c[d>>3];o=b/+D(+(Q*Q+o*o));o=s?o*.3333333333333333:l?o*.5:o;n=G+(i<<4)|0;if(u){t[v>>2]=t[E>>2];t[v+4>>2]=t[E+4>>2];t[v+8>>2]=t[E+8>>2];t[v+12>>2]=t[E+12>>2];t[g>>2]=t[B>>2];t[g+4>>2]=t[B+4>>2];t[g+8>>2]=t[B+8>>2];t[g+12>>2]=t[B+12>>2];cN(y,o*.5,v,g);t[n>>2]=t[y>>2];t[n+4>>2]=t[y+4>>2];t[n+8>>2]=t[y+8>>2];t[n+12>>2]=t[y+12>>2]}else{t[n>>2]=t[E>>2];t[n+4>>2]=t[E+4>>2];t[n+8>>2]=t[E+8>>2];t[n+12>>2]=t[E+12>>2]}n=G+(i+1<<4)|0;t[v>>2]=t[E>>2];t[v+4>>2]=t[E+4>>2];t[v+8>>2]=t[E+8>>2];t[v+12>>2]=t[E+12>>2];t[g>>2]=t[B>>2];t[g+4>>2]=t[B+4>>2];t[g+8>>2]=t[B+8>>2];t[g+12>>2]=t[B+12>>2];cN(C,o,v,g);t[n>>2]=t[C>>2];t[n+4>>2]=t[C+4>>2];t[n+8>>2]=t[C+8>>2];t[n+12>>2]=t[C+12>>2];n=i+3|0;z=G+(i+2<<4)|0;t[v>>2]=t[E>>2];t[v+4>>2]=t[E+4>>2];t[v+8>>2]=t[E+8>>2];t[v+12>>2]=t[E+12>>2];t[g>>2]=t[B>>2];t[g+4>>2]=t[B+4>>2];t[g+8>>2]=t[B+8>>2];t[g+12>>2]=t[B+12>>2];cN(m,1.0-o,v,g);t[z>>2]=t[m>>2];t[z+4>>2]=t[m+4>>2];t[z+8>>2]=t[m+8>>2];t[z+12>>2]=t[m+12>>2];if(u){z=G+(n<<4)|0;t[v>>2]=t[E>>2];t[v+4>>2]=t[E+4>>2];t[v+8>>2]=t[E+8>>2];t[v+12>>2]=t[E+12>>2];t[g>>2]=t[B>>2];t[g+4>>2]=t[B+4>>2];t[g+8>>2]=t[B+8>>2];t[g+12>>2]=t[B+12>>2];cN(p,1.0-o*.5,v,g);t[z>>2]=t[p>>2];t[z+4>>2]=t[p+4>>2];t[z+8>>2]=t[p+8>>2];t[z+12>>2]=t[p+12>>2];i=i+4|0}else i=n;f=f+1|0}s=G+(i<<4)|0;t[s>>2]=t[G>>2];t[s+4>>2]=t[G+4>>2];t[s+8>>2]=t[G+8>>2];t[s+12>>2]=t[G+12>>2];s=G+(i+1<<4)|0;l=G+16|0;t[s>>2]=t[l>>2];t[s+4>>2]=t[l+4>>2];t[s+8>>2]=t[l+8>>2];t[s+12>>2]=t[l+12>>2];i=G+(i+2<<4)|0;s=G+32|0;t[i>>2]=t[s>>2];t[i+4>>2]=t[s+4>>2];t[i+8>>2]=t[s+8>>2];t[i+12>>2]=t[s+12>>2];i=I&2147483647;e:do{if((i|0)<201326592){if((i|0)>=83886080){if((i|0)<134217728){if((i|0)<100663296){switch(i|0){case 83886080:break;default:break e}if((r|0)==4){z=KF(192)|0;t[z>>2]=t[A>>2];t[z+4>>2]=t[A+4>>2];t[z+8>>2]=t[A+8>>2];t[z+12>>2]=t[A+12>>2];w=z+16|0;g=A+16|0;t[w>>2]=t[g>>2];t[w+4>>2]=t[g+4>>2];t[w+8>>2]=t[g+8>>2];t[w+12>>2]=t[g+12>>2];w=G+48|0;g=G+64|0;b=+c[g>>3];u=z+32|0;c[u>>3]=b;k=G+56|0;d=G+72|0;W=+c[d>>3];C=z+40|0;c[C>>3]=W;Q=+c[w>>3]+b-+c[s>>3];m=z+48|0;c[m>>3]=Q;F=+c[k>>3]+W-+c[G+40>>3];B=z+56|0;c[B>>3]=F;Y=+c[g>>3]+Q-+c[w>>3];w=z+64|0;c[w>>3]=Y;o=+c[d>>3]+F-+c[k>>3];k=z+72|0;c[k>>3]=o;d=z+80|0;c[d>>3]=b+Y-Q;c[z+88>>3]=W+o-F;g=G+96|0;p=G+80|0;F=+c[p>>3];r=z+144|0;c[r>>3]=F;E=G+104|0;v=G+88|0;o=+c[v>>3];c[z+152>>3]=o;W=+c[g>>3]+F-+c[G+112>>3];y=z+128|0;c[y>>3]=W;Q=+c[E>>3]+o-+c[G+120>>3];I=z+136|0;c[I>>3]=Q;Y=+c[p>>3]+W-+c[g>>3];g=z+112|0;c[g>>3]=Y;b=+c[v>>3]+Q-+c[E>>3];E=z+120|0;c[E>>3]=b;v=z+96|0;c[v>>3]=F+Y-W;p=z+104|0;c[p>>3]=o+b-Q;s=z+160|0;l=A+32|0;t[s>>2]=t[l>>2];t[s+4>>2]=t[l+4>>2];t[s+8>>2]=t[l+8>>2];t[s+12>>2]=t[l+12>>2];s=z+176|0;A=A+48|0;t[s>>2]=t[A>>2];t[s+4>>2]=t[A+4>>2];t[s+8>>2]=t[A+8>>2];t[s+12>>2]=t[A+12>>2];ti(e,z,12,a);t[Z>>2]=t[u>>2];t[Z+4>>2]=t[u+4>>2];t[Z+8>>2]=t[u+8>>2];t[Z+12>>2]=t[u+12>>2];Q=+c[u>>3];b=+c[m>>3];Q=Q+Q-b;m=Z+16|0;c[m>>3]=Q;o=+c[C>>3];W=+c[B>>3];o=o+o-W;B=Z+24|0;c[B>>3]=o;C=Z+32|0;c[C>>3]=+c[w>>3]+Q-b;A=Z+40|0;c[A>>3]=+c[k>>3]+o-W;a=Z+48|0;t[a>>2]=t[d>>2];t[a+4>>2]=t[d+4>>2];t[a+8>>2]=t[d+8>>2];t[a+12>>2]=t[d+12>>2];li(e,Z,4);t[Z>>2]=t[v>>2];t[Z+4>>2]=t[v+4>>2];t[Z+8>>2]=t[v+8>>2];t[Z+12>>2]=t[v+12>>2];W=+c[v>>3];o=+c[g>>3];W=W-(o-W);c[m>>3]=W;b=+c[p>>3];Q=+c[E>>3];b=b-(Q-b);c[B>>3]=b;c[C>>3]=+c[y>>3]+W-o;c[A>>3]=+c[I>>3]+b-Q;t[a>>2]=t[r>>2];t[a+4>>2]=t[r+4>>2];t[a+8>>2]=t[r+8>>2];t[a+12>>2]=t[r+12>>2];li(e,Z,4);G2(z);break}else ge(105438,105449,737,105458)}if((i|0)<117440512){switch(i|0){case 100663296:break;default:break e}y=r+5|0;z=KF(y<<4)|0;C=A+16|0;W=+c[C>>3];W=(+c[A>>3]-W)*.625+W;c[z>>3]=W;I=A+40|0;F=+c[I>>3];r=A+24|0;p=G+48|0;E=G+56|0;B=G+72|0;F=(+c[r>>3]-F)*.5+F+(+c[E>>3]-+c[B>>3])*1.5;c[z+8>>3]=F;Y=+c[C>>3];Y=(+c[A>>3]-Y)*.25+Y;c[z+16>>3]=Y;c[z+24>>3]=F;c[z+32>>3]=Y;Q=+c[I>>3];c[z+40>>3]=(+c[r>>3]-Q)*.5+Q;Y=(+c[s>>3]-+c[p>>3])*.5+Y;c[z+48>>3]=Y;Q=+c[I>>3];c[z+56>>3]=(+c[r>>3]-Q)*.5+Q;c[z+64>>3]=Y;Y=+c[I>>3];Y=(+c[r>>3]-Y)*.5+Y+(+c[E>>3]-+c[B>>3]);c[z+72>>3]=Y;c[z+80>>3]=W;c[z+88>>3]=Y;c[z+96>>3]=W;Y=Y-(+c[E>>3]-+c[B>>3])*.25;c[z+104>>3]=Y;c[z+112>>3]=+c[s>>3]+W-+c[p>>3];c[z+120>>3]=(+c[E>>3]-+c[B>>3])*.5+Y;c[z+128>>3]=+c[z>>3];c[z+136>>3]=(+c[E>>3]-+c[B>>3])*.25+F;ti(e,z,y,a);c[Z>>3]=+c[C>>3];F=+c[I>>3];c[Z+8>>3]=(+c[r>>3]-F)*.5+F;c[Z+16>>3]=+c[A>>3];c[Z+24>>3]=(+c[A+8>>3]-+c[A+56>>3])*.5+F;li(e,Z,2);G2(z);break}else{switch(i|0){case 117440512:break;default:break e}r=r+1|0;z=KF(r<<4)|0;c[z>>3]=+c[l>>3];C=G+56|0;I=G+72|0;c[z+8>>3]=+c[G+24>>3]-(+c[C>>3]-+c[I>>3])*.5;c[z+16>>3]=+c[G+48>>3];F=+c[C>>3];c[z+24>>3]=F-(F-+c[I>>3])*.5;c[z+32>>3]=+c[A+32>>3];Z=A+40|0;c[z+40>>3]=(+c[C>>3]-+c[I>>3])*.5+ +c[Z>>3];c[z+48>>3]=+c[l>>3];c[z+56>>3]=(+c[C>>3]-+c[I>>3])*.5+ +c[Z>>3];F=+c[A+8>>3];c[z+72>>3]=F-(F-+c[A+56>>3])*.5;c[z+64>>3]=+c[A>>3];ti(e,z,r,a);G2(z);break}}if((i|0)<167772160)if((i|0)<150994944){switch(i|0){case 134217728:break;default:break e}y=r+4|0;z=KF(y<<4)|0;C=A+16|0;Q=+c[C>>3];B=G+48|0;Q=(+c[A>>3]-Q)*.5+Q+(+c[s>>3]-+c[B>>3])*.25;c[z>>3]=Q;I=A+40|0;F=+c[I>>3];r=A+24|0;F=(+c[r>>3]-F)*.5+F;c[z+8>>3]=F;c[z+16>>3]=Q;p=G+56|0;E=G+72|0;W=(+c[p>>3]-+c[E>>3])*.5+F;c[z+24>>3]=W;Q=(+c[s>>3]-+c[B>>3])*.5+Q;c[z+32>>3]=Q;c[z+40>>3]=W;c[z+48>>3]=Q;Q=(+c[p>>3]-+c[E>>3])*.5+W;c[z+56>>3]=Q;Y=+c[C>>3];Y=(+c[A>>3]-Y)*.5+Y+(+c[s>>3]-+c[B>>3])*-.75;c[z+64>>3]=Y;c[z+72>>3]=Q;c[z+80>>3]=Y;c[z+88>>3]=W;Y=+c[C>>3];Y=(+c[A>>3]-Y)*.5+Y+(+c[s>>3]-+c[B>>3])*-.25;c[z+96>>3]=Y;c[z+104>>3]=W;c[z+112>>3]=Y;c[z+120>>3]=F;ti(e,z,y,a);c[Z>>3]=+c[C>>3];F=+c[I>>3];c[Z+8>>3]=(+c[r>>3]-F)*.5+F;c[Z+16>>3]=+c[A>>3];c[Z+24>>3]=(+c[A+8>>3]-+c[A+56>>3])*.5+F;li(e,Z,2);G2(z);break}else{switch(i|0){case 150994944:break;default:break e}y=r+2|0;z=KF(y<<4)|0;C=A+16|0;W=+c[C>>3];B=G+48|0;W=(+c[A>>3]-W)*.5+W+(+c[s>>3]-+c[B>>3])*.75;c[z>>3]=W;I=A+40|0;F=+c[I>>3];r=A+24|0;F=(+c[r>>3]-F)*.5+F;c[z+8>>3]=F;c[z+16>>3]=W;p=G+56|0;E=G+72|0;W=(+c[p>>3]-+c[E>>3])*.25+F;c[z+24>>3]=W;Y=+c[C>>3];c[z+32>>3]=(+c[A>>3]-Y)*.5+Y+(+c[s>>3]-+c[B>>3])*.25;Y=(+c[p>>3]-+c[E>>3])*.5+W;c[z+40>>3]=Y;Q=+c[C>>3];c[z+48>>3]=(+c[A>>3]-Q)*.5+Q+(+c[s>>3]-+c[B>>3])*-.25;c[z+56>>3]=Y;Y=+c[C>>3];Y=(+c[A>>3]-Y)*.5+Y+(+c[s>>3]-+c[B>>3])*-.75;c[z+64>>3]=Y;c[z+72>>3]=W;c[z+80>>3]=Y;c[z+88>>3]=F;ti(e,z,y,a);c[Z>>3]=+c[C>>3];F=+c[I>>3];c[Z+8>>3]=(+c[r>>3]-F)*.5+F;c[Z+16>>3]=+c[A>>3];c[Z+24>>3]=(+c[A+8>>3]-+c[A+56>>3])*.5+F;li(e,Z,2);G2(z);break}else if((i|0)<184549376){switch(i|0){case 167772160:break;default:break e}y=r+1|0;z=KF(y<<4)|0;C=A+16|0;W=+c[C>>3];p=G+48|0;W=+c[s>>3]+W+(+c[A>>3]-W)*.5-+c[p>>3];c[z>>3]=W;I=A+40|0;F=+c[I>>3];r=A+24|0;E=G+56|0;B=G+72|0;F=(+c[r>>3]-F)*.5+F+(+c[E>>3]-+c[B>>3])*.25;c[z+8>>3]=F;W=W-+c[s>>3]+ +c[p>>3];c[z+16>>3]=W;c[z+24>>3]=+c[E>>3]+F-+c[B>>3];c[z+32>>3]=W;W=(+c[E>>3]-+c[B>>3])*.5+F;c[z+40>>3]=W;Y=+c[C>>3];Y=(+c[A>>3]-Y)*.25+Y;c[z+48>>3]=Y;c[z+56>>3]=W;c[z+64>>3]=Y;c[z+72>>3]=F;ti(e,z,y,a);c[Z>>3]=+c[C>>3];F=+c[I>>3];c[Z+8>>3]=(+c[r>>3]-F)*.5+F;c[Z+16>>3]=+c[A>>3];c[Z+24>>3]=(+c[A+8>>3]-+c[A+56>>3])*.5+F;li(e,Z,2);G2(z);break}else{switch(i|0){case 184549376:break;default:break e}C=r+4|0;z=KF(C<<4)|0;y=A+16|0;W=+c[y>>3];Y=+c[A>>3]-W;m=G+48|0;Y=Y*.125+W+(+c[s>>3]-+c[m>>3]+Y)*.5;c[z>>3]=Y;E=A+40|0;W=+c[E>>3];B=A+24|0;r=G+56|0;p=G+72|0;W=(+c[B>>3]-W)*.5+W+(+c[r>>3]-+c[p>>3])*.25;c[z+8>>3]=W;F=+c[y>>3];F=(+c[A>>3]-F)*.375+F;c[z+16>>3]=F;c[z+24>>3]=W;c[z+32>>3]=F;W=(+c[r>>3]-+c[p>>3])*.5+W;c[z+40>>3]=W;F=F-(+c[s>>3]-+c[m>>3])*.5;c[z+48>>3]=F;c[z+56>>3]=W;I=z+64|0;c[I>>3]=F;F=+c[E>>3];F=(+c[B>>3]-F)*.5+F+(+c[r>>3]-+c[p>>3])*-.25;c[z+72>>3]=F;W=Y-(+c[s>>3]-+c[m>>3])*.5;c[z+80>>3]=W;c[z+88>>3]=F;c[z+96>>3]=W;F=F-(+c[r>>3]-+c[p>>3])*.5;c[z+104>>3]=F;p=z+112|0;c[p>>3]=Y;c[z+120>>3]=F;ti(e,z,C,a);c[Z>>3]=+c[y>>3];F=+c[E>>3];y=Z+8|0;c[y>>3]=(+c[B>>3]-F)*.5+F;C=Z+16|0;c[C>>3]=+c[I>>3];I=A+8|0;r=A+56|0;a=Z+24|0;c[a>>3]=(+c[I>>3]-+c[r>>3])*.5+F;li(e,Z,2);c[Z>>3]=+c[p>>3];F=+c[E>>3];c[y>>3]=(+c[B>>3]-F)*.5+F;c[C>>3]=+c[A>>3];c[a>>3]=(+c[I>>3]-+c[r>>3])*.5+F;li(e,Z,2);G2(z);break}}if((i|0)<33554432){if((i|0)<8){switch(i|0){case 4:break;default:break e}f=$F((r*96|0)+32|0)|0;i=0;n=0;while(1){l=n|1;s=f+(n<<4)|0;if((i|0)>=(r|0))break;A=i<<2;z=G+(A<<4)|0;t[s>>2]=t[z>>2];t[s+4>>2]=t[z+4>>2];t[s+8>>2]=t[z+8>>2];t[s+12>>2]=t[z+12>>2];z=f+(l<<4)|0;Z=G+((A|1)<<4)|0;t[z>>2]=t[Z>>2];t[z+4>>2]=t[Z+4>>2];t[z+8>>2]=t[Z+8>>2];t[z+12>>2]=t[Z+12>>2];z=f+(n+2<<4)|0;t[z>>2]=t[Z>>2];t[z+4>>2]=t[Z+4>>2];t[z+8>>2]=t[Z+8>>2];t[z+12>>2]=t[Z+12>>2];z=f+(n+3<<4)|0;Z=G+((A|2)<<4)|0;t[z>>2]=t[Z>>2];t[z+4>>2]=t[Z+4>>2];t[z+8>>2]=t[Z+8>>2];t[z+12>>2]=t[Z+12>>2];z=f+(n+4<<4)|0;t[z>>2]=t[Z>>2];t[z+4>>2]=t[Z+4>>2];t[z+8>>2]=t[Z+8>>2];t[z+12>>2]=t[Z+12>>2];z=f+(n+5<<4)|0;A=G+((A|3)<<4)|0;t[z>>2]=t[A>>2];t[z+4>>2]=t[A+4>>2];t[z+8>>2]=t[A+8>>2];t[z+12>>2]=t[A+12>>2];i=i+1|0;n=n+6|0}t[s>>2]=t[f>>2];t[s+4>>2]=t[f+4>>2];t[s+8>>2]=t[f+8>>2];t[s+12>>2]=t[f+12>>2];r=f+(l<<4)|0;z=f+16|0;t[r>>2]=t[z>>2];t[r+4>>2]=t[z+4>>2];t[r+8>>2]=t[z+8>>2];t[r+12>>2]=t[z+12>>2];fi(e,z,l,0,0,a&255);G2(f);break}if((i|0)<16777216){switch(i|0){case 8:break;default:break e}ti(e,A,r,a);n=Z+16|0;i=0;while(1){if((i|0)>=(r|0))break e;z=i*3|0;a=G+(z+2<<4)|0;t[Z>>2]=t[a>>2];t[Z+4>>2]=t[a+4>>2];t[Z+8>>2]=t[a+8>>2];t[Z+12>>2]=t[a+12>>2];z=G+(z+4<<4)|0;t[n>>2]=t[z>>2];t[n+4>>2]=t[z+4>>2];t[n+8>>2]=t[z+8>>2];t[n+12>>2]=t[z+12>>2];li(e,Z,2);i=i+1|0}}switch(i|0){case 16777216:break;default:break e}n=r+1|0;f=KF(n<<4)|0;i=1;while(1){if((i|0)>=(r|0))break;z=f+(i<<4)|0;I=A+(i<<4)|0;t[z>>2]=t[I>>2];t[z+4>>2]=t[I+4>>2];t[z+8>>2]=t[I+8>>2];t[z+12>>2]=t[I+12>>2];i=i+1|0}A=r*3|0;I=G+(A+1<<4)|0;t[f>>2]=t[I>>2];t[f+4>>2]=t[I+4>>2];t[f+8>>2]=t[I+8>>2];t[f+12>>2]=t[I+12>>2];r=f+(r<<4)|0;z=G+(A+-1<<4)|0;t[r>>2]=t[z>>2];t[r+4>>2]=t[z+4>>2];t[r+8>>2]=t[z+8>>2];t[r+12>>2]=t[z+12>>2];ti(e,f,n,a);G2(f);t[Z>>2]=t[z>>2];t[Z+4>>2]=t[z+4>>2];t[Z+8>>2]=t[z+8>>2];t[Z+12>>2]=t[z+12>>2];z=Z+16|0;t[z>>2]=t[I>>2];t[z+4>>2]=t[I+4>>2];t[z+8>>2]=t[I+8>>2];t[z+12>>2]=t[I+12>>2];a=Z+32|0;c[a>>3]=+c[Z>>3]+ +c[z>>3]-+c[G+(A<<4)>>3];c[Z+40>>3]=+c[Z+8>>3]+ +c[Z+24>>3]-+c[G+(A<<4)+8>>3];li(e,z,2);t[z>>2]=t[a>>2];t[z+4>>2]=t[a+4>>2];t[z+8>>2]=t[a+8>>2];t[z+12>>2]=t[a+12>>2];li(e,Z,2);break}else{if((i|0)<50331648){switch(i|0){case 33554432:break;default:break e}n=r+2|0;f=KF(n<<4)|0;t[f>>2]=t[A>>2];t[f+4>>2]=t[A+4>>2];t[f+8>>2]=t[A+8>>2];t[f+12>>2]=t[A+12>>2];l=f+16|0;t[l>>2]=t[s>>2];t[l+4>>2]=t[s+4>>2];t[l+8>>2]=t[s+8>>2];t[l+12>>2]=t[s+12>>2];l=G+48|0;r=G+64|0;c[f+32>>3]=(+c[l>>3]-+c[r>>3])*.3333333333333333+ +c[s>>3];z=G+56|0;i=G+72|0;c[f+40>>3]=(+c[z>>3]-+c[i>>3])*.3333333333333333+ +c[G+40>>3];F=+c[l>>3];c[f+48>>3]=(F-+c[r>>3])*.3333333333333333+F;F=+c[z>>3];c[f+56>>3]=(F-+c[i>>3])*.3333333333333333+F;i=4;while(1){if((i|0)>=(n|0))break;z=f+(i<<4)|0;r=A+(i+-2<<4)|0;t[z>>2]=t[r>>2];t[z+4>>2]=t[r+4>>2];t[z+8>>2]=t[r+8>>2];t[z+12>>2]=t[r+12>>2];i=i+1|0}ti(e,f,n,a);G2(f);t[Z>>2]=t[l>>2];t[Z+4>>2]=t[l+4>>2];t[Z+8>>2]=t[l+8>>2];t[Z+12>>2]=t[l+12>>2];z=Z+16|0;t[z>>2]=t[s>>2];t[z+4>>2]=t[s+4>>2];t[z+8>>2]=t[s+8>>2];t[z+12>>2]=t[s+12>>2];li(e,Z,2);break}if((i|0)>=67108864){switch(i|0){case 67108864:break;default:break e}if((r|0)==4){z=KF(96)|0;t[z>>2]=t[A>>2];t[z+4>>2]=t[A+4>>2];t[z+8>>2]=t[A+8>>2];t[z+12>>2]=t[A+12>>2];r=z+16|0;t[r>>2]=t[s>>2];t[r+4>>2]=t[s+4>>2];t[r+8>>2]=t[s+8>>2];t[r+12>>2]=t[s+12>>2];r=z+32|0;I=G+64|0;t[r>>2]=t[I>>2];t[r+4>>2]=t[I+4>>2];t[r+8>>2]=t[I+8>>2];t[r+12>>2]=t[I+12>>2];r=z+48|0;A=A+32|0;t[r>>2]=t[A>>2];t[r+4>>2]=t[A+4>>2];t[r+8>>2]=t[A+8>>2];t[r+12>>2]=t[A+12>>2];A=z+64|0;r=G+128|0;t[A>>2]=t[r>>2];t[A+4>>2]=t[r+4>>2];t[A+8>>2]=t[r+8>>2];t[A+12>>2]=t[r+12>>2];A=z+80|0;C=G+160|0;t[A>>2]=t[C>>2];t[A+4>>2]=t[C+4>>2];t[A+8>>2]=t[C+8>>2];t[A+12>>2]=t[C+12>>2];ti(e,z,6,a);G2(z);c[Z>>3]=+c[G+176>>3]+ +c[l>>3]-+c[G>>3];c[Z+8>>3]=+c[G+184>>3]+ +c[G+24>>3]-+c[G+8>>3];z=Z+16|0;t[z>>2]=t[I>>2];t[z+4>>2]=t[I+4>>2];t[z+8>>2]=t[I+8>>2];t[z+12>>2]=t[I+12>>2];li(e,Z,2);t[z>>2]=t[r>>2];t[z+4>>2]=t[r+4>>2];t[z+8>>2]=t[r+8>>2];t[z+12>>2]=t[r+12>>2];li(e,Z,2);t[z>>2]=t[G>>2];t[z+4>>2]=t[G+4>>2];t[z+8>>2]=t[G+8>>2];t[z+12>>2]=t[G+12>>2];li(e,Z,2);break}else ge(105438,105449,714,105458)}switch(i|0){case 50331648:break;default:break e}n=r+3|0;f=KF(n<<4)|0;t[f>>2]=t[A>>2];t[f+4>>2]=t[A+4>>2];t[f+8>>2]=t[A+8>>2];t[f+12>>2]=t[A+12>>2];F=+c[A>>3];c[f+16>>3]=F-(F-+c[l>>3])*.25;i=G+56|0;F=(+c[i>>3]-+c[G+72>>3])*.3333333333333333+ +c[A+8>>3];c[f+24>>3]=F;Y=+c[A>>3];c[f+32>>3]=Y-(Y-+c[l>>3])*2.0;c[f+40>>3]=F;F=+c[A>>3];c[f+48>>3]=F-(F-+c[l>>3])*2.25;c[f+56>>3]=+c[i>>3];c[f+64>>3]=+c[G+48>>3];c[f+72>>3]=+c[i>>3];i=4;while(1){if((i|0)>=(n|0))break;z=f+(i<<4)|0;r=A+(i+-3<<4)|0;t[z>>2]=t[r>>2];t[z+4>>2]=t[r+4>>2];t[z+8>>2]=t[r+8>>2];t[z+12>>2]=t[r+12>>2];i=i+1|0}ti(e,f,n,a);G2(f);break}}else if((i|0)<318767104){if((i|0)<251658240){if((i|0)<218103808){switch(i|0){case 201326592:break;default:break e}z=r<<4;m=KF(z)|0;p=A+16|0;F=+c[p>>3];c[m>>3]=F;C=A+40|0;Y=+c[C>>3];I=A+24|0;y=G+48|0;E=G+56|0;B=G+72|0;Y=(+c[I>>3]-Y)*.5+Y+(+c[E>>3]-+c[B>>3])*.125;c[m+8>>3]=Y;W=(+c[s>>3]-+c[y>>3])*2.0+F;c[m+16>>3]=W;c[m+24>>3]=Y;c[m+32>>3]=W;Y=(+c[E>>3]-+c[B>>3])*.5+Y;c[m+40>>3]=Y;c[m+48>>3]=F;c[m+56>>3]=Y;ti(e,m,r,a);G2(m);z=KF(z)|0;Y=+c[s>>3]+ +c[p>>3]-+c[y>>3];c[z>>3]=Y;F=+c[C>>3];F=(+c[I>>3]-F)*.5+F+(+c[E>>3]-+c[B>>3])*-.625;c[z+8>>3]=F;W=+c[s>>3]-+c[y>>3]+Y;y=z+16|0;c[y>>3]=W;c[z+24>>3]=F;c[z+32>>3]=W;F=(+c[E>>3]-+c[B>>3])*.5+F;c[z+40>>3]=F;c[z+48>>3]=Y;c[z+56>>3]=F;ti(e,z,r,a);c[Z>>3]=+c[y>>3];F=+c[C>>3];c[Z+8>>3]=(+c[I>>3]-F)*.5+F;c[Z+16>>3]=+c[A>>3];c[Z+24>>3]=(+c[A+8>>3]-+c[A+56>>3])*.5+F;li(e,Z,2);G2(z);break}if((i|0)<234881024){switch(i|0){case 218103808:break;default:break e}z=r<<4;E=KF(z)|0;F=+c[A>>3];c[E>>3]=F;y=A+40|0;Y=+c[y>>3];C=A+24|0;B=G+56|0;I=G+72|0;Y=(+c[C>>3]-Y)*.5+Y+(+c[B>>3]-+c[I>>3])*.125;c[E+8>>3]=Y;c[E+16>>3]=F;W=(+c[B>>3]-+c[I>>3])*.5+Y;c[E+24>>3]=W;F=F-(+c[B>>3]-+c[I>>3])*2.0;c[E+32>>3]=F;c[E+40>>3]=W;c[E+48>>3]=F;c[E+56>>3]=Y;ti(e,E,r,a);G2(E);z=KF(z)|0;Y=+c[A>>3]-+c[s>>3]+ +c[G+48>>3];c[z>>3]=Y;F=+c[y>>3];F=(+c[C>>3]-F)*.5+F+(+c[B>>3]-+c[I>>3])*-.625;c[z+8>>3]=F;c[z+16>>3]=Y;W=(+c[B>>3]-+c[I>>3])*.5+F;c[z+24>>3]=W;Y=Y-(+c[B>>3]-+c[I>>3]);c[z+32>>3]=Y;c[z+40>>3]=W;I=z+48|0;c[I>>3]=Y;c[z+56>>3]=F;ti(e,z,r,a);c[Z>>3]=+c[A+16>>3];F=+c[y>>3];c[Z+8>>3]=(+c[C>>3]-F)*.5+F;c[Z+16>>3]=+c[I>>3];c[Z+24>>3]=(+c[A+8>>3]-+c[A+56>>3])*.5+F;li(e,Z,2);G2(z);break}else{switch(i|0){case 234881024:break;default:break e}z=r<<4;y=KF(z)|0;m=A+16|0;Y=+c[m>>3];p=G+48|0;Y=(+c[A>>3]-Y)*.5+Y+(+c[s>>3]-+c[p>>3])*-1.125;c[y>>3]=Y;E=A+40|0;F=+c[E>>3];B=A+24|0;I=G+56|0;C=G+72|0;F=(+c[B>>3]-F)*.5+F+(+c[I>>3]-+c[C>>3])*.125;c[y+8>>3]=F;W=+c[s>>3]-+c[p>>3]+Y;c[y+16>>3]=W;c[y+24>>3]=F;c[y+32>>3]=W;F=(+c[I>>3]-+c[C>>3])*.5+F;c[y+40>>3]=F;c[y+48>>3]=Y;c[y+56>>3]=F;ti(e,y,r,a);G2(y);y=KF(z)|0;F=+c[m>>3];F=(+c[A>>3]-F)*.5+F+(+c[s>>3]-+c[p>>3])*-1.125;c[y>>3]=F;Y=+c[E>>3];Y=(+c[B>>3]-Y)*.5+Y+(+c[I>>3]-+c[C>>3])*-.625;c[y+8>>3]=Y;W=+c[s>>3]-+c[p>>3]+F;c[y+16>>3]=W;c[y+24>>3]=Y;c[y+32>>3]=W;Y=(+c[I>>3]-+c[C>>3])*.5+Y;c[y+40>>3]=Y;c[y+48>>3]=F;c[y+56>>3]=Y;ti(e,y,r,a);G2(y);y=KF(z)|0;Y=+c[m>>3];Y=(+c[A>>3]-Y)*.5+Y+(+c[s>>3]-+c[p>>3])*.125;c[y>>3]=Y;F=+c[E>>3];F=(+c[B>>3]-F)*.5+F+(+c[I>>3]-+c[C>>3])*-.625;c[y+8>>3]=F;W=+c[s>>3]-+c[p>>3]+Y;c[y+16>>3]=W;c[y+24>>3]=F;c[y+32>>3]=W;F=(+c[I>>3]-+c[C>>3])*.5+F;c[y+40>>3]=F;c[y+48>>3]=Y;c[y+56>>3]=F;ti(e,y,r,a);G2(y);z=KF(z)|0;F=+c[m>>3];F=(+c[A>>3]-F)*.5+F+(+c[s>>3]-+c[p>>3])*.125;c[z>>3]=F;Y=+c[E>>3];Y=(+c[B>>3]-Y)*.5+Y+(+c[I>>3]-+c[C>>3])*.125;c[z+8>>3]=Y;W=+c[s>>3]-+c[p>>3]+F;y=z+16|0;c[y>>3]=W;c[z+24>>3]=Y;c[z+32>>3]=W;Y=(+c[I>>3]-+c[C>>3])*.5+Y;c[z+40>>3]=Y;c[z+48>>3]=F;c[z+56>>3]=Y;ti(e,z,r,a);c[Z>>3]=+c[y>>3];Y=+c[E>>3];y=Z+8|0;c[y>>3]=(+c[B>>3]-Y)*.5+Y;C=Z+16|0;c[C>>3]=+c[A>>3];I=A+8|0;r=A+56|0;a=Z+24|0;c[a>>3]=(+c[I>>3]-+c[r>>3])*.5+Y;li(e,Z,2);Y=+c[m>>3];c[Z>>3]=(+c[A>>3]-Y)*.5+Y+(+c[s>>3]-+c[p>>3])*-1.125;F=+c[E>>3];c[y>>3]=(+c[B>>3]-F)*.5+F;c[C>>3]=Y;c[a>>3]=(+c[I>>3]-+c[r>>3])*.5+F;li(e,Z,2);G2(z);break}}if((i|0)<285212672)if((i|0)<268435456){switch(i|0){case 251658240:break;default:break e}z=r<<4;m=KF(z)|0;p=A+16|0;F=+c[p>>3];y=G+48|0;F=F-+c[s>>3]+(+c[A>>3]-F)*.5+ +c[y>>3];c[m>>3]=F;E=A+40|0;Y=+c[E>>3];B=A+24|0;I=G+56|0;C=G+72|0;Y=(+c[B>>3]-Y)*.5+Y+(+c[I>>3]-+c[C>>3])*.125;c[m+8>>3]=Y;W=(+c[s>>3]-+c[y>>3])*2.0+F;c[m+16>>3]=W;c[m+24>>3]=Y;c[m+32>>3]=W;Y=(+c[I>>3]-+c[C>>3])*.5+Y;c[m+40>>3]=Y;c[m+48>>3]=F;c[m+56>>3]=Y;ti(e,m,r,a);G2(m);z=KF(z)|0;Y=+c[p>>3];Y=Y-+c[s>>3]+(+c[A>>3]-Y)*.5+ +c[y>>3];c[z>>3]=Y;F=+c[E>>3];F=(+c[B>>3]-F)*.5+F+(+c[I>>3]-+c[C>>3])*-.625;c[z+8>>3]=F;W=(+c[s>>3]-+c[y>>3])*2.0+Y;y=z+16|0;c[y>>3]=W;c[z+24>>3]=F;c[z+32>>3]=W;F=(+c[I>>3]-+c[C>>3])*.5+F;c[z+40>>3]=F;c[z+48>>3]=Y;c[z+56>>3]=F;ti(e,z,r,a);c[Z>>3]=+c[y>>3];F=+c[E>>3];y=Z+8|0;c[y>>3]=(+c[B>>3]-F)*.5+F;C=Z+16|0;c[C>>3]=+c[A>>3];I=A+8|0;r=A+56|0;a=Z+24|0;c[a>>3]=(+c[I>>3]-+c[r>>3])*.5+F;li(e,Z,2);c[Z>>3]=+c[p>>3];F=+c[E>>3];c[y>>3]=(+c[B>>3]-F)*.5+F;c[C>>3]=+c[z>>3];c[a>>3]=(+c[I>>3]-+c[r>>3])*.5+F;li(e,Z,2);G2(z);break}else{switch(i|0){case 268435456:break;default:break e}z=KF(r<<4)|0;c[z>>3]=+c[A>>3];p=G+48|0;B=G+56|0;y=G+72|0;c[z+8>>3]=+c[G+24>>3]-(+c[B>>3]-+c[y>>3])*.5;c[z+16>>3]=+c[p>>3];F=+c[B>>3];c[z+24>>3]=F-(F-+c[y>>3])*.5;c[z+32>>3]=+c[A+32>>3];C=A+40|0;c[z+40>>3]=(+c[B>>3]-+c[y>>3])*.5+ +c[C>>3];c[z+48>>3]=+c[A>>3];c[z+56>>3]=(+c[B>>3]-+c[y>>3])*.5+ +c[C>>3];ti(e,z,r,a);E=A+16|0;F=(+c[s>>3]-+c[p>>3])*.25;Y=F+ +c[E>>3];c[Z>>3]=Y;W=+c[C>>3];m=A+24|0;Q=+c[B>>3]-+c[y>>3];W=(+c[m>>3]-W)*.5+W+Q*.125;I=Z+8|0;c[I>>3]=W;r=Z+16|0;c[r>>3]=F+Y;a=Z+24|0;c[a>>3]=W-Q*.25;li(e,Z,2);Q=(+c[s>>3]-+c[p>>3])*.25;W=Q+ +c[E>>3];c[Z>>3]=W;Y=+c[C>>3];F=+c[B>>3]-+c[y>>3];Y=(+c[m>>3]-Y)*.5+Y+F*-.125;c[I>>3]=Y;c[r>>3]=Q+W;c[a>>3]=F*.25+Y;li(e,Z,2);Y=(+c[s>>3]-+c[p>>3])*.25;c[Z>>3]=Y+ +c[E>>3];F=(+c[B>>3]-+c[y>>3])*.75+ +c[C>>3];c[I>>3]=F;c[r>>3]=+c[A>>3]-Y;c[a>>3]=F;li(e,Z,2);G2(z);break}else if((i|0)<301989888){switch(i|0){case 285212672:break;default:break e}y=KF(r<<4)|0;p=A+16|0;Y=+c[p>>3];C=G+48|0;Y=(+c[s>>3]-+c[C>>3]+(+c[A>>3]-Y))*.5+Y;c[y>>3]=Y;E=A+40|0;Q=+c[E>>3];B=A+24|0;Q=(+c[s>>3]-+c[C>>3]+(+c[B>>3]-Q))*.5+Q;c[y+8>>3]=Q;c[y+16>>3]=Y;Y=+c[E>>3];b=+c[s>>3]-+c[C>>3];Y=(+c[B>>3]-Y-b)*.5+Y;c[y+24>>3]=Y;F=+c[p>>3];F=(+c[A>>3]-F-b)*.5+F;c[y+32>>3]=F;c[y+40>>3]=Y;c[y+48>>3]=F;c[y+56>>3]=Q;ti(e,y,r,a);G2(y);Q=+c[p>>3];Q=(+c[A>>3]-Q)*.5+Q;F=+c[s>>3]-+c[C>>3];Y=F*.75;b=Q+Y;c[Z>>3]=b;W=+c[E>>3];W=(+c[B>>3]-W)*.5+W;Y=W+Y;y=Z+8|0;c[y>>3]=Y;I=Z+16|0;c[I>>3]=b;F=F*-.75;W=W+F;z=Z+24|0;c[z>>3]=W;F=Q+F;c[Z+32>>3]=F;c[Z+40>>3]=W;c[Z+48>>3]=F;c[Z+56>>3]=Y;r=Z+64|0;t[r>>2]=t[Z>>2];t[r+4>>2]=t[Z+4>>2];t[r+8>>2]=t[Z+8>>2];t[r+12>>2]=t[Z+12>>2];li(e,Z,5);Y=+c[p>>3];F=+c[A>>3];c[Z>>3]=(F-Y)*.5+Y+(+c[s>>3]-+c[C>>3])*.75;Y=+c[E>>3];c[y>>3]=(+c[B>>3]-Y)*.5+Y;c[I>>3]=F;r=A+8|0;a=A+56|0;c[z>>3]=(+c[r>>3]-+c[a>>3])*.5+Y;li(e,Z,2);Y=+c[p>>3];c[Z>>3]=Y;F=+c[E>>3];c[y>>3]=(+c[B>>3]-F)*.5+F;c[I>>3]=(+c[A>>3]-Y)*.5+Y+(+c[s>>3]-+c[C>>3])*-.75;c[z>>3]=(+c[r>>3]-+c[a>>3])*.5+F;li(e,Z,2);break}else{switch(i|0){case 301989888:break;default:break e}I=r+12|0;z=KF(I<<4)|0;B=A+16|0;o=+c[B>>3];v=G+48|0;o=(+c[A>>3]-o)*.5+o+(+c[s>>3]-+c[v>>3])*.25;c[z>>3]=o;y=A+40|0;Q=+c[y>>3];C=A+24|0;p=G+56|0;E=G+72|0;Q=(+c[p>>3]-+c[E>>3]+(+c[C>>3]-Q))*.5+Q;m=z+8|0;c[m>>3]=Q;c[z+16>>3]=o;Q=(+c[p>>3]-+c[E>>3])*.125+Q;g=z+24|0;c[g>>3]=Q;W=o-(+c[s>>3]-+c[v>>3])*.125;r=z+32|0;c[r>>3]=W;b=(+c[p>>3]-+c[E>>3])*.125+Q;c[z+40>>3]=b;c[z+48>>3]=o;Y=(+c[p>>3]-+c[E>>3])*.125+b;c[z+56>>3]=Y;c[z+64>>3]=o;o=(+c[p>>3]-+c[E>>3])*.125+Y;c[z+72>>3]=o;c[z+80>>3]=W;c[z+88>>3]=o;W=+c[B>>3];W=(+c[A>>3]-W)*.5+W;c[z+96>>3]=W;c[z+104>>3]=Y;F=W-(+c[s>>3]-+c[v>>3])*.125;c[z+112>>3]=F;c[z+120>>3]=o;F=F-(+c[s>>3]-+c[v>>3])*.125;c[z+128>>3]=F;c[z+136>>3]=o;c[z+144>>3]=F;c[z+152>>3]=Y;Y=(+c[s>>3]-+c[v>>3])*.125+F;c[z+160>>3]=Y;c[z+168>>3]=b;c[z+176>>3]=F;c[z+184>>3]=Q;c[z+192>>3]=F;F=+c[m>>3];c[z+200>>3]=F;c[z+208>>3]=Y;c[z+216>>3]=F;m=z+224|0;c[m>>3]=W;c[z+232>>3]=+c[g>>3];c[z+240>>3]=+c[r>>3];c[z+248>>3]=F;ti(e,z,I,a);F=+c[m>>3];c[Z>>3]=F;W=+c[y>>3];W=(+c[C>>3]-W)*.5+W;I=Z+8|0;c[I>>3]=W;r=Z+16|0;c[r>>3]=F;a=Z+24|0;c[a>>3]=(+c[p>>3]-+c[E>>3])*.125+W;li(e,Z,2);W=+c[m>>3];c[Z>>3]=W;F=+c[y>>3];Y=+c[p>>3]-+c[E>>3];F=(+c[C>>3]-F)*.5+F+Y*.25;c[I>>3]=F;c[r>>3]=W;c[a>>3]=Y*.125+F;li(e,Z,2);c[Z>>3]=+c[B>>3];F=+c[y>>3];c[I>>3]=(+c[C>>3]-F)*.5+F;c[r>>3]=+c[A>>3];c[a>>3]=(+c[A+8>>3]-+c[A+56>>3])*.5+F;li(e,Z,2);G2(z);break}}else{if((i|0)<369098752){if((i|0)<335544320){switch(i|0){case 318767104:break;default:break e}I=r+4|0;z=KF(I<<4)|0;B=A+16|0;W=+c[B>>3];r=G+48|0;W=(+c[A>>3]-W)*.5+W+(+c[s>>3]-+c[r>>3])*.125;c[z>>3]=W;y=A+40|0;F=+c[y>>3];C=A+24|0;p=G+56|0;E=G+72|0;F=(+c[p>>3]-+c[E>>3]+(+c[C>>3]-F))*.5+F;c[z+8>>3]=F;b=(+c[s>>3]-+c[r>>3])*.125+W;c[z+16>>3]=b;Y=(+c[p>>3]-+c[E>>3])*.125+F;c[z+24>>3]=Y;c[z+32>>3]=b;b=(+c[p>>3]-+c[E>>3])*.25+Y;c[z+40>>3]=b;c[z+48>>3]=W;Q=(+c[p>>3]-+c[E>>3])*.125+b;c[z+56>>3]=Q;W=W-(+c[s>>3]-+c[r>>3])*.25;c[z+64>>3]=W;c[z+72>>3]=Q;Q=W-(+c[s>>3]-+c[r>>3])*.125;c[z+80>>3]=Q;c[z+88>>3]=b;c[z+96>>3]=Q;c[z+104>>3]=Y;c[z+112>>3]=W;c[z+120>>3]=F;ti(e,z,I,a);F=+c[B>>3];F=(+c[A>>3]-F)*.5+F;c[Z>>3]=F;W=+c[y>>3];W=(+c[C>>3]-W)*.5+W;I=Z+8|0;c[I>>3]=W;r=Z+16|0;c[r>>3]=F;a=Z+24|0;c[a>>3]=(+c[p>>3]-+c[E>>3])*.125+W;li(e,Z,2);W=+c[B>>3];W=(+c[A>>3]-W)*.5+W;c[Z>>3]=W;F=+c[y>>3];Y=+c[p>>3]-+c[E>>3];F=(+c[C>>3]-F)*.5+F+Y*.25;c[I>>3]=F;c[r>>3]=W;c[a>>3]=Y*.125+F;li(e,Z,2);c[Z>>3]=+c[B>>3];F=+c[y>>3];c[I>>3]=(+c[C>>3]-F)*.5+F;c[r>>3]=+c[A>>3];c[a>>3]=(+c[A+8>>3]-+c[A+56>>3])*.5+F;li(e,Z,2);G2(z);break}if((i|0)<352321536){switch(i|0){case 335544320:break;default:break e}B=r+12|0;z=KF(B<<4)|0;y=A+16|0;o=+c[y>>3];m=G+48|0;o=(+c[A>>3]-o)*.5+o+(+c[s>>3]-+c[m>>3])*.25;c[z>>3]=o;C=A+40|0;Q=+c[C>>3];I=A+24|0;v=G+56|0;g=G+72|0;Q=(+c[v>>3]-+c[g>>3]+(+c[I>>3]-Q))*.5+Q;r=z+8|0;c[r>>3]=Q;c[z+16>>3]=o;Q=(+c[v>>3]-+c[g>>3])*.125+Q;p=z+24|0;c[p>>3]=Q;Y=o-(+c[s>>3]-+c[m>>3])*.125;E=z+32|0;c[E>>3]=Y;b=(+c[v>>3]-+c[g>>3])*.125+Q;c[z+40>>3]=b;c[z+48>>3]=o;W=(+c[v>>3]-+c[g>>3])*.125+b;c[z+56>>3]=W;c[z+64>>3]=o;o=(+c[v>>3]-+c[g>>3])*.125+W;c[z+72>>3]=o;c[z+80>>3]=Y;c[z+88>>3]=o;Y=+c[y>>3];Y=(+c[A>>3]-Y)*.5+Y;c[z+96>>3]=Y;c[z+104>>3]=W;F=Y-(+c[s>>3]-+c[m>>3])*.125;c[z+112>>3]=F;c[z+120>>3]=o;F=F-(+c[s>>3]-+c[m>>3])*.125;c[z+128>>3]=F;c[z+136>>3]=o;c[z+144>>3]=F;c[z+152>>3]=W;W=(+c[s>>3]-+c[m>>3])*.125+F;c[z+160>>3]=W;c[z+168>>3]=b;c[z+176>>3]=F;c[z+184>>3]=Q;c[z+192>>3]=F;F=+c[r>>3];c[z+200>>3]=F;c[z+208>>3]=W;c[z+216>>3]=F;r=z+224|0;c[r>>3]=Y;c[z+232>>3]=+c[p>>3];c[z+240>>3]=+c[E>>3];c[z+248>>3]=F;ti(e,z,B,a);t[Z>>2]=t[r>>2];t[Z+4>>2]=t[r+4>>2];t[Z+8>>2]=t[r+8>>2];t[Z+12>>2]=t[r+12>>2];r=Z+16|0;c[r>>3]=+c[Z>>3];F=+c[C>>3];a=Z+24|0;c[a>>3]=(+c[I>>3]-F)*.5+F;li(e,Z,2);c[Z>>3]=+c[y>>3];F=+c[C>>3];c[Z+8>>3]=(+c[I>>3]-F)*.5+F;c[r>>3]=+c[A>>3];c[a>>3]=(+c[A+8>>3]-+c[A+56>>3])*.5+F;li(e,Z,2);G2(z);break}else{switch(i|0){case 352321536:break;default:break e}I=r+4|0;z=KF(I<<4)|0;B=A+16|0;Y=+c[B>>3];E=G+48|0;Y=(+c[A>>3]-Y)*.5+Y+(+c[s>>3]-+c[E>>3])*.125;c[z>>3]=Y;y=A+40|0;F=+c[y>>3];C=A+24|0;m=G+56|0;p=G+72|0;F=(+c[m>>3]-+c[p>>3]+(+c[C>>3]-F))*.5+F;r=z+8|0;c[r>>3]=F;b=(+c[s>>3]-+c[E>>3])*.125+Y;c[z+16>>3]=b;W=(+c[m>>3]-+c[p>>3])*.125+F;c[z+24>>3]=W;c[z+32>>3]=b;b=(+c[m>>3]-+c[p>>3])*.25+W;c[z+40>>3]=b;c[z+48>>3]=Y;Q=(+c[m>>3]-+c[p>>3])*.125+b;c[z+56>>3]=Q;Y=Y-(+c[s>>3]-+c[E>>3])*.25;c[z+64>>3]=Y;c[z+72>>3]=Q;Q=Y-(+c[s>>3]-+c[E>>3])*.125;c[z+80>>3]=Q;c[z+88>>3]=b;c[z+96>>3]=Q;c[z+104>>3]=W;c[z+112>>3]=Y;c[z+120>>3]=F;ti(e,z,I,a);F=+c[B>>3];F=(+c[A>>3]-F)*.5+F;c[Z>>3]=F;I=Z+8|0;c[I>>3]=+c[r>>3];r=Z+16|0;c[r>>3]=F;F=+c[y>>3];a=Z+24|0;c[a>>3]=(+c[C>>3]-F)*.5+F;li(e,Z,2);c[Z>>3]=+c[B>>3];F=+c[y>>3];c[I>>3]=(+c[C>>3]-F)*.5+F;c[r>>3]=+c[A>>3];c[a>>3]=(+c[A+8>>3]-+c[A+56>>3])*.5+F;li(e,Z,2);G2(z);break}}if((i|0)<402653184)if((i|0)<385875968){switch(i|0){case 369098752:break;default:break e}r=r+5|0;z=KF(r<<4)|0;Z=G+48|0;c[z>>3]=+c[l>>3]-(+c[s>>3]-+c[Z>>3])*.5;y=G+56|0;I=G+72|0;c[z+8>>3]=+c[G+24>>3]-(+c[y>>3]-+c[I>>3])*.5;c[z+16>>3]=+c[Z>>3];F=+c[y>>3];c[z+24>>3]=F-(F-+c[I>>3])*.5;c[z+32>>3]=+c[A+32>>3];C=A+40|0;c[z+40>>3]=+c[C>>3];F=+c[s>>3];c[z+48>>3]=(F-+c[Z>>3])*.5+F;c[z+56>>3]=+c[C>>3];F=+c[s>>3];c[z+64>>3]=(F-+c[Z>>3])*.5+F;c[z+72>>3]=(+c[y>>3]-+c[I>>3])*.5+ +c[C>>3];c[z+80>>3]=+c[l>>3]-(+c[s>>3]-+c[Z>>3])*.5;c[z+88>>3]=(+c[y>>3]-+c[I>>3])*.5+ +c[C>>3];c[z+96>>3]=+c[l>>3]-(+c[s>>3]-+c[Z>>3])*.5;C=A+56|0;c[z+104>>3]=+c[C>>3];I=A+8|0;F=+c[I>>3];c[z+120>>3]=F-(F-+c[C>>3])*.5;c[z+112>>3]=+c[A>>3];c[z+136>>3]=+c[I>>3];c[z+128>>3]=+c[l>>3]-(+c[s>>3]-+c[Z>>3])*.5;ti(e,z,r,a);G2(z);break}else{switch(i|0){case 385875968:break;default:break e}r=r+3|0;z=KF(r<<4)|0;Z=G+48|0;c[z>>3]=+c[l>>3]-(+c[s>>3]-+c[Z>>3])*.5;y=G+56|0;I=G+72|0;c[z+8>>3]=+c[G+24>>3]-(+c[y>>3]-+c[I>>3])*.5;c[z+16>>3]=+c[Z>>3];F=+c[y>>3];c[z+24>>3]=F-(F-+c[I>>3])*.5;c[z+32>>3]=+c[A+32>>3];C=A+40|0;c[z+40>>3]=(+c[y>>3]-+c[I>>3])*.5+ +c[C>>3];c[z+48>>3]=+c[l>>3]-(+c[s>>3]-+c[Z>>3])*.5;c[z+56>>3]=(+c[y>>3]-+c[I>>3])*.5+ +c[C>>3];c[z+64>>3]=+c[l>>3]-(+c[s>>3]-+c[Z>>3])*.5;C=A+56|0;c[z+72>>3]=+c[C>>3];I=A+8|0;F=+c[I>>3];c[z+88>>3]=F-(F-+c[C>>3])*.5;c[z+80>>3]=+c[A>>3];c[z+104>>3]=+c[I>>3];c[z+96>>3]=+c[l>>3]-(+c[s>>3]-+c[Z>>3])*.5;ti(e,z,r,a);G2(z);break}else if((i|0)<419430400){switch(i|0){case 402653184:break;default:break e}r=r+3|0;z=KF(r<<4)|0;c[z>>3]=+c[A>>3];y=A+8|0;C=G+48|0;I=G+56|0;Z=G+72|0;c[z+8>>3]=+c[y>>3]-(+c[I>>3]-+c[Z>>3])*.5;F=+c[s>>3];c[z+16>>3]=(F-+c[C>>3])*.5+F;c[z+24>>3]=+c[y>>3]-(+c[I>>3]-+c[Z>>3])*.5;F=+c[s>>3];c[z+32>>3]=(F-+c[C>>3])*.5+F;c[z+40>>3]=+c[G+40>>3];c[z+48>>3]=+c[A+16>>3];F=+c[A+24>>3];y=A+40|0;c[z+56>>3]=F-(F-+c[y>>3])*.5;F=+c[s>>3];c[z+64>>3]=(F-+c[C>>3])*.5+F;c[z+72>>3]=+c[y>>3];c[z+88>>3]=(+c[I>>3]-+c[Z>>3])*.5+ +c[y>>3];F=+c[s>>3];c[z+80>>3]=(F-+c[C>>3])*.5+F;c[z+104>>3]=(+c[I>>3]-+c[Z>>3])*.5+ +c[A+56>>3];c[z+96>>3]=+c[A>>3];ti(e,z,r,a);G2(z);break}else{switch(i|0){case 419430400:break;default:break e}r=r+5|0;z=KF(r<<4)|0;c[z>>3]=+c[A>>3];Z=A+8|0;I=G+48|0;y=G+56|0;C=G+72|0;c[z+8>>3]=+c[Z>>3]-(+c[y>>3]-+c[C>>3])*.5;F=+c[s>>3];c[z+16>>3]=(F-+c[I>>3])*.5+F;c[z+24>>3]=+c[Z>>3]-(+c[y>>3]-+c[C>>3])*.5;F=+c[s>>3];c[z+32>>3]=(F-+c[I>>3])*.5+F;c[z+40>>3]=+c[G+40>>3];c[z+48>>3]=+c[A+16>>3];F=+c[A+24>>3];Z=A+40|0;c[z+56>>3]=F-(F-+c[Z>>3])*.5;F=+c[s>>3];c[z+64>>3]=(F-+c[I>>3])*.5+F;c[z+72>>3]=+c[Z>>3];c[z+88>>3]=(+c[y>>3]-+c[C>>3])*.5+ +c[Z>>3];F=+c[s>>3];c[z+80>>3]=(F-+c[I>>3])*.5+F;Z=A+56|0;c[z+104>>3]=(+c[y>>3]-+c[C>>3])*.5+ +c[Z>>3];c[z+96>>3]=+c[l>>3]-(+c[s>>3]-+c[I>>3])*.5;c[z+112>>3]=+c[l>>3]-(+c[s>>3]-+c[I>>3])*.5;c[z+120>>3]=+c[Z>>3];c[z+128>>3]=+c[A+48>>3];c[z+136>>3]=+c[Z>>3];ti(e,z,r,a);G2(z);break}}}while(0);G2(G)}h=L;return}function sN(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0,n=0,f=0,l=0,s=0.0;a=h;h=h+112|0;n=a;s=+c[A+8>>3]*2.0;t[n>>2]=t[A>>2];t[n+4>>2]=t[A+4>>2];t[n+8>>2]=t[A+8>>2];t[n+12>>2]=t[A+12>>2];c[n+16>>3]=+c[A+16>>3];c[n+24>>3]=s-+c[A+24>>3];c[n+32>>3]=+c[A+32>>3];c[n+40>>3]=s-+c[A+40>>3];c[n+48>>3]=+c[A+48>>3];c[n+56>>3]=s-+c[A+56>>3];c[n+64>>3]=+c[A+64>>3];c[n+72>>3]=s-+c[A+72>>3];c[n+80>>3]=+c[A+80>>3];c[n+88>>3]=s-+c[A+88>>3];f=n+96|0;l=A+96|0;t[f>>2]=t[l>>2];t[f+4>>2]=t[l+4>>2];t[f+8>>2]=t[l+8>>2];t[f+12>>2]=t[l+12>>2];fi(e,A,r,0,0,i&255);fi(e,n,7,0,0,0);h=a;return}function cN(e,A,r,i){e=e|0;A=+A;r=r|0;i=i|0;var a=0.0,t=0.0;t=+c[r>>3];a=+c[r+8>>3];a=(+c[i+8>>3]-a)*A+a;c[e>>3]=(+c[i>>3]-t)*A+t;c[e+8>>3]=a;return}function oN(e){e=e|0;e=t[(t[e+16>>2]|0)+8>>2]|0;if(e){e=t[t[e+4>>2]>>2]|0;if((e|0)!=91)if((e|0)==94)e=2;else return((e|0)==93?3:(e|0)==96?4:0)|0;else e=1}else e=0;return e|0}function uN(e){e=e|0;var A=0,r=0,a=0.0,n=0,f=0,l=0,s=0.0,o=0.0,u=0.0,b=0.0,w=0,k=0.0,d=0.0,v=0.0,g=0.0,m=0.0,p=0.0,E=0.0,B=0.0,y=0.0,C=0.0,I=0,Z=0,G=0,L=0,z=0,F=0,M=0,V=0,N=0,x=0.0,J=0.0,H=0,X=0,S=0.0,j=0.0,U=0.0,T=0,O=0,_=0,q=0,K=0,$=0,ee=0,Ae=0.0;ee=h;h=h+144|0;F=ee+112|0;N=ee+104|0;G=ee+96|0;L=ee+88|0;f=ee+80|0;_=ee+64|0;K=ee+48|0;H=ee+40|0;X=ee+32|0;l=ee+24|0;w=ee+16|0;Z=ee+136|0;I=ee+128|0;M=ee;$=KF(48)|0;q=e+16|0;T=t[(t[(t[q>>2]|0)+8>>2]|0)+8>>2]|0;n=(T|0)==1616;O=t[T>>2]|0;A=t[T+4>>2]|0;r=t[T+8>>2]|0;o=+c[T+16>>3];u=+c[T+32>>3];b=+c[T+24>>3];O=O|(mx(Hw(e,105511)|0)|0)&255;do{if(!n){if(!O){T=t[q>>2]|0;s=+c[T+32>>3]*72.0;a=+c[T+40>>3]*72.0;a=+(~~(a+(a>=0.0?.5:-.5))|0);s=+(~~(s+(s>=0.0?.5:-.5))|0);break}s=+EN(e);if(s>0.0)a=s;else{T=t[q>>2]|0;a=+c[T+32>>3];s=+c[T+40>>3];s=(a=0.0?.5:-.5))|0);a=s}}else{a=0.0;s=0.0}}while(0);T=hx(e,t[47160]|0,A,0)|0;U=+wx(e,t[47162]|0,0.0,-360.0)+o;if(!r){j=+wx(e,t[47163]|0,0.0,-100.0);z=hx(e,t[47159]|0,4,0)|0;S=+wx(e,t[47164]|0,0.0,-100.0)}else{z=r;j=u;S=b}A=t[(t[q>>2]|0)+104>>2]|0;r=A+24|0;t[_>>2]=t[r>>2];t[_+4>>2]=t[r+4>>2];t[_+8>>2]=t[r+8>>2];t[_+12>>2]=t[r+12>>2];k=+c[_>>3];if(k>0.0){if(!n)V=11}else if(!(n|!(+c[_+8>>3]>0.0)))V=11;if((V|0)==11){A=Hw(e,105496)|0;do{if(A){c[w>>3]=0.0;c[l>>3]=0.0;t[f>>2]=l;t[f+4>>2]=w;A=V3(A,105503,f)|0;o=+c[l>>3];if(o<0.0){c[l>>3]=0.0;o=0.0}u=+c[w>>3];if(u<0.0){c[w>>3]=0.0;b=0.0}else b=u;if((A|0)<=0){u=k+16.0;c[_>>3]=u;o=8.0;break}o=o*72.0;o=+(~~(o+(o>=0.0?.5:-.5))<<1|0);u=k+o;c[_>>3]=u;if((A|0)!=1){o=b*72.0;o=+(~~(o+(o>=0.0?.5:-.5))<<1|0)}}else{u=k+16.0;c[_>>3]=u;o=8.0}}while(0);A=_+8|0;c[A>>3]=+c[A>>3]+o;A=t[(t[q>>2]|0)+104>>2]|0;k=u}v=+c[A+24>>3];o=+c[t[(t[(Bd(e)|0)+16>>2]|0)+8>>2]>>3];if(o>0.0){x=o*72.0;x=+(~~(x+(x>=0.0?.5:-.5))|0);J=+BN(k,x);c[_>>3]=J;w=_+8|0;c[w>>3]=+BN(+c[w>>3],x)}else J=k;A=t[(t[q>>2]|0)+8>>2]|0;do{if(!(i[A+12>>0]|0)){r=Hw(e,109025)|0;if((r|0)!=0?(i[r>>0]|0)!=0:0){Pm(I,Bd(e)|0,r);A=t[I>>2]|0;n=t[I+4>>2]|0;if((n&A|0)==-1){A=Mk(e)|0;t[G>>2]=r;t[G+4>>2]=A;nw(0,105587,G)|0;r=0;A=0;break}else{i[(t[(Bd(e)|0)+16>>2]|0)+114>>0]=1;r=A+2|0;A=n+2|0;break}}else{r=0;A=0}}else{A=t[A>>2]|0;if((i[A>>0]|0)==99?(e1(A,105519)|0)==0:0){r=Hw(e,105526)|0;Pm(Z,Bd(e)|0,r);A=t[Z>>2]|0;n=t[Z+4>>2]|0;if((n&A|0)==-1){A=Mk(e)|0;t[L>>2]=r|0?r:105536;t[L+4>>2]=A;nw(0,105542,L)|0;r=0;A=0;break}else{i[(t[(Bd(e)|0)+16>>2]|0)+114>>0]=1;r=A+2|0;A=n+2|0;break}}else{r=0;A=0}}}while(0);x=+(r|0);c[K>>3]=J>x?J:x;x=+c[_+8>>3];d=+(A|0);A=K+8|0;c[A>>3]=x>d?x:d;r=(z|0)<3&(S!=0.0|j!=0.0)?120:z;n=Hw(e,105628)|0;if(!n)f=99;else{f=i[n>>0]|0;f=f<<24>>24==116?116:f<<24>>24==98?98:99}n=t[q>>2]|0;i[(t[n+104>>2]|0)+80>>0]=f;if((r|0)==4?(S==0.0?((~~(U+(U>=0.0?.5:-.5))|0)%90|0|0)==0:0)&j==0.0:0)w=1;else V=39;do{if((V|0)==39){n=t[(t[(t[n+8>>2]|0)+8>>2]|0)+44>>2]|0;if(n|0){w=t[n>>2]|0;t[F>>2]=t[K>>2];t[F+4>>2]=t[K+4>>2];t[F+8>>2]=t[K+8>>2];t[F+12>>2]=t[K+12>>2];M5[w&63](M,F);t[K>>2]=t[M>>2];t[K+4>>2]=t[M+4>>2];t[K+8>>2]=t[M+8>>2];t[K+12>>2]=t[M+12>>2];w=0;break}o=+c[A>>3];u=o*1.4142135623730951;if(a>u&f<<24>>24==99){b=o/a;b=+D(+(1.0/(1.0-b*b)));b=+c[K>>3]*b;c[K>>3]=b}else{b=+c[K>>3]*1.4142135623730951;c[K>>3]=b;c[A>>3]=u;o=u}if((r|0)>2){C=+W(+(3.141592653589793/+(r|0)));c[K>>3]=b/C;c[A>>3]=o/C;w=0}else w=0}}while(0);o=+c[A>>3];n=dx(e,t[47165]|0,137308)|0;if((i[n>>0]|0)==115?(e1(n,108230)|0)==0:0){c[K>>3]=s;c[A>>3]=a;N=$+40|0;t[N>>2]=t[N>>2]|2048}else{if(!((mx(n)|0)<<24>>24)){C=+c[K>>3];s=s>C?s:C;c[K>>3]=s;C=+c[A>>3];a=a>C?a:C}else{V=t[(t[q>>2]|0)+104>>2]|0;if(!(!(s<+c[V+24>>3])?!(a<+c[V+32>>3]):0)){M=Mk(e)|0;V=Mk(Bd(e)|0)|0;t[N>>2]=M;t[N+4>>2]=V;nw(0,105637,N)|0}c[K>>3]=s}c[A>>3]=a}if(!O){C=a;y=s}else{y=s>a?s:a;c[A>>3]=y;c[K>>3]=y;C=y}do{if(!((mx(dx(e,t[47156]|0,137308)|0)|0)<<24>>24)){if(w){a=+c[(J>+c[K>>3]?_:K)>>3];break}a=+c[A>>3];if(x>3]*+D(+(1.0-x*x/(a*a)));a=J>a?J:a}else a=J}else a=J}while(0);n=t[(t[q>>2]|0)+104>>2]|0;c[n+40>>3]=v-k+a;I=$+40|0;if(!(t[I>>2]&2048)){B=+c[A>>3]-o;c[n+48>>3]=(x1;n=l?T:1;e:do{if((r|0)<3){n=KF(n<<5)|0;s=+c[K>>3]*.5;a=+c[A>>3]*.5;c[n>>3]=-s;c[n+8>>3]=-a;c[n+16>>3]=s;c[n+24>>3]=a;if(l){r=1;f=2;while(1){if((r|0)==(T|0))break;y=s+4.0;C=a+4.0;c[n+(f<<4)>>3]=-y;c[n+(f<<4)+8>>3]=-C;X=f|1;c[n+(X<<4)>>3]=y;c[n+(X<<4)+8>>3]=C;r=r+1|0;f=f+2|0;s=y;a=C}c[K>>3]=s*2.0;c[A>>3]=a*2.0;r=2}else r=2}else{n=KF(P(n<<4,r)|0)|0;f=t[(t[(t[(t[q>>2]|0)+8>>2]|0)+8>>2]|0)+44>>2]|0;A:do{if(!f){k=6.283185307179586/+(r|0);g=k*.5;d=+Y(+g);v=+g1(+Q(+j)+ +Q(+S),1.0);g=S*1.4142135623730951/+W(+g);m=j*.5;p1((k+-3.141592653589793)*.5,H,X);p=U*.017453292519943295;s=0.0;a=0.0;o=0.0;f=0;u=+c[X>>3]*.5;b=+c[H>>3]*.5;while(1){if((f|0)>=(r|0))break A;o=o+k;p1(o,H,X);u=+c[X>>3]*d+u;b=+c[H>>3]*d+b;B=(b*g+v)*u+m*b;p1(+R(+b,+B)+p,H,X);B=+g1(B,b);E=+c[X>>3]*B*+c[K>>3];B=+c[H>>3]*B*+c[A>>3];Ae=+Q(+E);a=Ae>a?Ae:a;Ae=+Q(+B);s=Ae>s?Ae:s;c[n+(f<<4)>>3]=E;c[n+(f<<4)+8>>3]=B;if(w)break;else f=f+1|0}Ae=-E;c[n+16>>3]=Ae;c[n+24>>3]=B;c[n+32>>3]=Ae;Ae=-B;c[n+40>>3]=Ae;c[n+48>>3]=E;c[n+56>>3]=Ae}else{M5[t[f+4>>2]&63](n,K);s=+c[A>>3]*.5;a=+c[K>>3]*.5}}while(0);a=a*2.0;s=s*2.0;y=y>a?y:a;c[K>>3]=y;Ae=C>s?C:s;c[A>>3]=Ae;a=y/a;s=Ae/s;f=0;while(1){if((f|0)>=(r|0))break;N=n+(f<<4)|0;e=n+(f<<4)+8|0;Ae=+c[e>>3]*s;c[N>>3]=+c[N>>3]*a;c[e>>3]=Ae;f=f+1|0}if(l){l=r+-1|0;s=+c[n>>3];o=+c[n+8>>3];a=+R(+(o-+c[n+(l<<4)+8>>3]),+(s-+c[n+(l<<4)>>3]));l=0;A:while(1){if((l|0)>=(r|0))break;w=l+1|0;f=(w|0)%(r|0)|0;u=+c[n+(f<<4)>>3];b=+c[n+(f<<4)+8>>3];k=+R(+(b-o),+(u-s));C=(a+3.141592653589793-k)*.5;Ae=4.0/+Y(+C);p1(a-C,H,X);c[H>>3]=+c[H>>3]*Ae;c[X>>3]=+c[X>>3]*Ae;f=1;a=o;while(1){if((f|0)==(T|0)){a=k;l=w;s=u;o=b;continue A}C=+c[X>>3]+s;Ae=+c[H>>3]+a;e=(P(f,r)|0)+l|0;c[n+(e<<4)>>3]=C;c[n+(e<<4)+8>>3]=Ae;f=f+1|0;s=C;a=Ae}}l=P(r,T+-1|0)|0;f=0;while(1){if((f|0)>=(r|0))break e;X=f+l|0;C=+c[n+(X<<4)+8>>3];y=+Q(+ +c[n+(X<<4)>>3])*2.0;Ae=+c[K>>3];c[K>>3]=y>Ae?y:Ae;C=+Q(+C)*2.0;Ae=+c[A>>3];c[A>>3]=C>Ae?C:Ae;f=f+1|0}}}}while(0);t[$>>2]=O;t[$+4>>2]=T;t[$+8>>2]=r;c[$+16>>3]=U;c[$+32>>3]=j;c[$+24>>3]=S;t[$+44>>2]=n;a=+c[K>>3];if(!(t[I>>2]&2048)){r=t[q>>2]|0;c[r+32>>3]=a*.013888888888888888}else{r=t[q>>2]|0;c[r+32>>3]=+c[(J>a?_:K)>>3]*.013888888888888888;A=(x>+c[A>>3]?_:K)+8|0}c[r+40>>3]=+c[A>>3]*.013888888888888888;t[r+12>>2]=$;h=ee;return}function bN(e){e=e|0;var A=0,r=0,i=0,a=0,n=0.0,f=0.0,l=0,s=0,o=0,u=0,b=0;b=h;h=h+64|0;l=b+40|0;i=b+32|0;s=b+16|0;u=b;r=(t[(t[(Bd(e)|0)+16>>2]|0)+116>>2]|0)>>>2&1^1;o=e+16|0;a=t[t[(t[o>>2]|0)+104>>2]>>2]|0;t[47282]=a;a=U2(a)|0;a=KF(((a|0)>1?a:1)+1|0)|0;A=wN(e,r,1,a)|0;if(!A){t[i>>2]=t[t[(t[o>>2]|0)+104>>2]>>2];nw(1,105472,i)|0;t[47282]=105493;A=wN(e,r,1,a)|0}G2(a);kN(l,e,A);r=t[o>>2]|0;f=+c[r+32>>3]*72.0;f=+(~~(f+(f>=0.0?.5:-.5))|0);c[u>>3]=f;n=+c[r+40>>3]*72.0;n=+(~~(n+(n>=0.0?.5:-.5))|0);r=u+8|0;c[r>>3]=n;if(!((mx(dx(e,t[47165]|0,137308)|0)|0)<<24>>24)){f=+c[(+c[A>>3]>f?A:u)>>3];c[u>>3]=f;i=A+8|0;n=+c[(+c[i>>3]>n?A:u)+8>>3];c[r>>3]=n;r=i;i=A}else{r=A+8|0;i=A}e=(mx(dx(e,t[47156]|0,137308)|0)|0)&255;t[l>>2]=t[u>>2];t[l+4>>2]=t[u+4>>2];t[l+8>>2]=t[u+8>>2];t[l+12>>2]=t[u+12>>2];dN(A,l,e);vN(s,f*-.5,n*.5);t[l>>2]=t[s>>2];t[l+4>>2]=t[s+4>>2];t[l+8>>2]=t[s+8>>2];t[l+12>>2]=t[s+12>>2];gN(A,l,15);u=t[o>>2]|0;c[u+32>>3]=+c[i>>3]*.013888888888888888;c[u+40>>3]=(+c[r>>3]+1.0)*.013888888888888888;t[u+12>>2]=A;h=b;return}function hN(e){e=e|0;var A=0.0,r=0,i=0.0,a=0.0,n=0,f=0,l=0,s=0,o=0.0,u=0;l=KF(48)|0;s=e+16|0;n=t[(t[(t[(t[s>>2]|0)+8>>2]|0)+8>>2]|0)+4>>2]|0;a=+wx(e,t[47146]|0,1797693134862315708145274.0e284,0.0);A=+wx(e,t[47145]|0,1797693134862315708145274.0e284,0.0);a=a0.0?a>.0003?a:.0003:a;f=t[s>>2]|0;c[f+40>>3]=a;c[f+32>>3]=a;A=a*72.0;n=hx(e,t[47160]|0,n,0)|0;f=KF((n|0)<1?32:n<<5)|0;a=a*36.0;i=-a;c[f>>3]=i;c[f+8>>3]=i;c[f+16>>3]=a;c[f+24>>3]=a;if((n|0)>1){e=1;r=2;i=a;A=a;while(1){if((e|0)==(n|0))break;o=i+4.0;a=A+4.0;c[f+(r<<4)>>3]=-o;c[f+(r<<4)+8>>3]=-a;u=r|1;c[f+(u<<4)>>3]=o;c[f+(u<<4)+8>>3]=a;e=e+1|0;r=r+2|0;i=o;A=a}A=i*2.0}t[l>>2]=1;t[l+4>>2]=n;t[l+8>>2]=2;u=l+16|0;t[u>>2]=0;t[u+4>>2]=0;t[u+8>>2]=0;t[u+12>>2]=0;t[u+16>>2]=0;t[u+20>>2]=0;t[l+44>>2]=f;o=A*.013888888888888888;u=t[s>>2]|0;c[u+32>>3]=o;c[u+40>>3]=o;t[u+12>>2]=l;return}function wN(e,A,r,a){e=e|0;A=A|0;r=r|0;a=a|0;var n=0,f=0,l=0,s=0,o=0,u=0,b=0,h=0,w=0,k=0,d=0,v=0,g=0,m=0,p=0,E=0,B=0,y=0,C=0,I=0,Z=0,G=0,L=0,Q=0;n=KF(72)|0;b=t[(t[e+16>>2]|0)+104>>2]|0;u=0;f=1;l=t[47282]|0;e:while(1){s=i[l>>0]|0;switch(s<<24>>24){case 0:break e;case 92:{l=l+1|0;s=i[l>>0]|0;switch(s<<24>>24){case 124:case 125:case 123:case 92:{o=u;break}default:Q=4}break}default:Q=4}if((Q|0)==4){Q=0;switch(s<<24>>24){case 123:{o=u+1|0;break}case 125:{o=u+-1|0;break}default:{o=u;f=f+((u|0)==0&s<<24>>24==124&1)|0}}if((o|0)<0)break}u=o;l=l+1|0}Z=n+56|0;t[Z>>2]=KF(f<<2)|0;i[n+64>>0]=A;y=(A|0)==0&1;C=b+82|0;I=a+1|0;p=(r|0)!=0;E=b+16|0;B=b+4|0;m=b+8|0;s=0;u=0;A=0;g=0;o=0;r=0;b=a;f=0;l=0;e:while(1){w=s;s=0;A:while(1){r:while(1){v=r;i:while(1){d=s;h=f;a:while(1){k=u;t:while(1){while(1){if(g){Q=78;break e}u=t[47282]|0;f=i[u>>0]|0;if((f+-1&255)>=31)break;t[47282]=u+1}switch(f<<24>>24|0){case 92:{Q=53;break r}case 0:case 124:case 125:break i;case 60:break a;case 62:break t;case 123:break;default:{s=A;f=u;break r}}f=u+1|0;t[47282]=f;if(o|0){Q=34;break e}if(!(i[f>>0]|0)){Q=34;break e}r=wN(e,y,0,a)|0;t[(t[Z>>2]|0)+(k<<2)>>2]=r;if(!r){Q=36;break e}else{k=k+1|0;o=4}}if(i[C>>0]|0){s=A;f=u;break r}if(!(o&16)){Q=27;break e}if(h>>>0>I>>>0?(G=h+-1|0,(G|0)!=(v|0)):0)f=(i[G>>0]|0)==32?G:h;else f=h;i[f>>0]=0;d=o3(a)|0;t[47282]=(t[47282]|0)+1;u=k;o=o&-17;h=f}if(o&6|0){Q=22;break e}if(i[C>>0]|0){s=A;f=u;break r}t[47282]=u+1;u=k;o=o|18;s=d;v=a;f=a}if(!((o&16|0)==0&(p|f<<24>>24!=0))){Q=38;break e}if(!(o&4)){s=KF(72)|0;t[(t[Z>>2]|0)+(k<<2)>>2]=s;u=k+1|0}else{s=w;u=k}if(d|0)t[s+60>>2]=d;if(!(o&5)){i[a+l>>0]=32;o=o|1;l=l+1|0}f=a+l|0;if(o&1){if((l|0)>1?(L=f+-1|0,(L|0)!=(b|0)):0)f=(i[L>>0]|0)==32?L:f;i[f>>0]=0;b=o3(a)|0;t[s+52>>2]=HF(e,b,i[C>>0]|0?2:0,+c[E>>3],t[B>>2]|0,t[m>>2]|0)|0;i[s+64>>0]=1;b=a;l=0}f=t[47282]|0;switch(i[f>>0]|0){case 0:{g=1;r=v;f=h;continue e}case 125:{Q=51;break e}default:{}}t[47282]=f+1;w=s;o=0;s=0;r=v;f=h}r:do{if((Q|0)==53){Q=0;s=a+l|0;f=u+1|0;switch(i[f>>0]|0){case 0:{s=A;f=u;break r}case 62:case 60:case 124:case 125:case 123:{s=A;break}case 32:{if(!(i[C>>0]|0))s=1;else Q=55;break}default:Q=55}if((Q|0)==55){Q=0;i[s>>0]=92;s=A;o=o|9;l=l+1|0}t[47282]=f}}while(0);A=a+l|0;if(o&4|0?(i[f>>0]|0)!=32:0){Q=59;break e}if(!(o&24))o=(i[f>>0]|0)==32?o:o|9;if(!(o&8))if(!(o&16))r=v;else{u=i[f>>0]|0;A=(s|0)!=0;if(!(A|u<<24>>24!=32))if((h|0)!=(a|0))if((i[h+-1>>0]|0)==32)u=h;else Q=73;else u=a;else Q=73;if((Q|0)==73){Q=0;i[h>>0]=u;u=h+1|0;f=t[47282]|0}r=A?u+-1|0:v;h=u}else{u=i[f>>0]|0;r=(s|0)!=0;if(!((!(r|u<<24>>24!=32)?(i[A+-1>>0]|0)==32:0)?(i[C>>0]|0)==0:0)){i[A>>0]=u;l=l+1|0}if(r){r=v;b=a+l+-1|0}else r=v}f=f+1|0;t[47282]=f;while(1){if((i[f>>0]|0)>=0){u=k;A=s;s=d;f=h;continue A}v=f+1|0;t[47282]=v;i[a+l>>0]=i[f>>0]|0;l=l+1|0;f=v}}}if((Q|0)==22){mN(n,d);n=0}else if((Q|0)==27){mN(n,d);n=0}else if((Q|0)==34){mN(n,d);n=0}else if((Q|0)==36){mN(n,d);n=0}else if((Q|0)==38){mN(n,d);n=0}else if((Q|0)==51){t[47282]=f+1;t[n+48>>2]=u}else if((Q|0)==59){mN(n,d);n=0}else if((Q|0)==78)t[n+48>>2]=k;return n|0}function kN(e,A,r){e=e|0;A=A|0;r=r|0;var a=0.0,n=0.0,f=0.0,l=0,s=0,o=0,u=0,b=0,w=0,k=0,d=0,v=0,g=0,m=0;m=h;h=h+64|0;s=m+48|0;o=m+40|0;u=m+32|0;g=m+16|0;v=m;l=t[r+52>>2]|0;e:do{if(!l){u=g+8|0;b=r+48|0;w=r+56|0;k=r+64|0;d=v+8|0;t[g>>2]=0;t[g+4>>2]=0;t[g+8>>2]=0;t[g+12>>2]=0;l=0;while(1){if((l|0)>=(t[b>>2]|0))break e;kN(v,A,t[(t[w>>2]|0)+(l<<2)>>2]|0);if(!(i[k>>0]|0)){c[u>>3]=+c[u>>3]+ +c[d>>3];s=g;o=+c[g>>3]>+c[v>>3]?g:v}else{c[g>>3]=+c[g>>3]+ +c[v>>3];s=u;o=(+c[u>>3]>+c[d>>3]?g:v)+8|0}c[s>>3]=+c[o>>3];l=l+1|0}}else{n=+c[l+24>>3];a=+c[l+32>>3];if(n>0.0|a>0.0){l=Hw(A,105496)|0;do{if(l){t[s>>2]=o;t[s+4>>2]=u;l=V3(l,105503,s)|0;if((l|0)<=0){f=8.0;n=n+16.0;break}f=+c[o>>3]*72.0;f=+(~~(f+(f>=0.0?.5:-.5))<<1|0);n=n+f;if((l|0)!=1){f=+c[u>>3]*72.0;f=+(~~(f+(f>=0.0?.5:-.5))<<1|0)}}else{f=8.0;n=n+16.0}}while(0);a=f+a}c[g>>3]=n;c[g+8>>3]=a}}while(0);t[r>>2]=t[g>>2];t[r+4>>2]=t[g+4>>2];t[r+8>>2]=t[g+8>>2];t[r+12>>2]=t[g+12>>2];t[e>>2]=t[g>>2];t[e+4>>2]=t[g+4>>2];t[e+8>>2]=t[g+8>>2];t[e+12>>2]=t[g+12>>2];h=m;return}function dN(e,A,r){e=e|0;A=A|0;r=r|0;var a=0.0,n=0,f=0.0,l=0,s=0,o=0,u=0,b=0,w=0,k=0.0,d=0.0,v=0;v=h;h=h+32|0;b=v+16|0;w=v;k=+c[A>>3];f=k-+c[e>>3];d=+c[A+8>>3];a=d-+c[e+8>>3];t[e>>2]=t[A>>2];t[e+4>>2]=t[A+4>>2];t[e+8>>2]=t[A+8>>2];t[e+12>>2]=t[A+12>>2];A=t[e+52>>2]|0;if(!((r|0)!=0|(A|0)==0)){u=A+40|0;c[u>>3]=+c[u>>3]+f;u=A+48|0;c[u>>3]=+c[u>>3]+a}o=e+48|0;A=t[o>>2]|0;e:do{if(A|0){u=e+64|0;a=((i[u>>0]|0)==0?a:f)/+(A|0);s=e+56|0;l=0;while(1){if((l|0)>=(A|0))break e;e=t[(t[s>>2]|0)+(l<<2)>>2]|0;n=l+1|0;A=~~(a*+(n|0))-~~(a*+(l|0))|0;if(!(i[u>>0]|0))vN(w,k,+c[e+8>>3]+ +(A|0));else vN(w,+c[e>>3]+ +(A|0),d);t[b>>2]=t[w>>2];t[b+4>>2]=t[w+4>>2];t[b+8>>2]=t[w+8>>2];t[b+12>>2]=t[w+12>>2];dN(e,b,r);l=n;A=t[o>>2]|0}}}while(0);h=v;return}function vN(e,A,r){e=e|0;A=+A;r=+r;c[e>>3]=A;c[e+8>>3]=r;return}function gN(e,A,r){e=e|0;A=A|0;r=r|0;var a=0,n=0,f=0,l=0,s=0,o=0,u=0,b=0,w=0,k=0,d=0.0,v=0.0;k=h;h=h+48|0;l=k+32|0;u=k+16|0;o=k;i[e+65>>0]=r;s=e+16|0;v=+c[A>>3];w=A+8|0;d=+c[w>>3];vN(u,v,d-+c[e+8>>3]);t[s>>2]=t[u>>2];t[s+4>>2]=t[u+4>>2];t[s+8>>2]=t[u+8>>2];t[s+12>>2]=t[u+12>>2];s=e+32|0;vN(o,+c[e>>3]+v,d);t[s>>2]=t[o>>2];t[s+4>>2]=t[o+4>>2];t[s+8>>2]=t[o+8>>2];t[s+12>>2]=t[o+12>>2];s=t[e+48>>2]|0;o=s+-1|0;u=(r|0)==0;b=e+56|0;f=e+64|0;n=0;while(1){if((n|0)>=(s|0))break;do{if(!u){e=(n|0)==0;a=(n|0)==(o|0);if(!(i[f>>0]|0))if(e){e=a?15:14;break}else{e=a?11:10;break}else if(e){e=a?15:13;break}else{e=a?7:5;break}}else e=0}while(0);a=t[(t[b>>2]|0)+(n<<2)>>2]|0;t[l>>2]=t[A>>2];t[l+4>>2]=t[A+4>>2];t[l+8>>2]=t[A+8>>2];t[l+12>>2]=t[A+12>>2];gN(a,l,e&r);if(!(i[f>>0]|0))c[w>>3]=+c[w>>3]-+c[(t[(t[b>>2]|0)+(n<<2)>>2]|0)+8>>3];else c[A>>3]=+c[t[(t[b>>2]|0)+(n<<2)>>2]>>3]+ +c[A>>3];n=n+1|0}h=k;return}function mN(e,A){e=e|0;A=A|0;pN(e);G2(A);return}function pN(e){e=e|0;var A=0,r=0,i=0;r=e+48|0;i=e+56|0;A=0;while(1){if((A|0)>=(t[r>>2]|0))break;pN(t[(t[i>>2]|0)+(A<<2)>>2]|0);A=A+1|0}G2(t[e+60>>2]|0);SF(t[e+52>>2]|0);G2(t[i>>2]|0);G2(e);return}function EN(e){e=e|0;var A=0.0,r=0.0;r=+wx(e,t[47146]|0,0.0,.01);A=+wx(e,t[47145]|0,0.0,.02);A=(r>A?r:A)*72.0;return+ +(~~(A+(A>=0.0?.5:-.5))|0)}function BN(e,A){e=+e;A=+A;var r=0;r=~~(e/A);return+(+((+(r|0)*A+1.0e-05>2]|0)+8>>2]|0;if(!e)e=0;else e=(t[t[e+4>>2]>>2]|0)==91&1;return e|0}function CN(e){e=e|0;var A=0,r=0,a=0,n=0,f=0;a=t[47283]|0;e:do{if(!a)A=0;else{n=t[47284]|0;r=0;while(1){if((r|0)>=(n|0)){A=0;break e}A=t[a+(r<<2)>>2]|0;f=t[A>>2]|0;if((i[f>>0]|0)==(i[e>>0]|0)?(e1(f,e)|0)==0:0)break e;r=r+1|0}}}while(0);return A|0}function IN(e,A){e=e|0;A=A|0;var r=0,a=0,n=0;if(Lx(Hw(A,105526)|0)|0)if((i[e>>0]|0)==101?(e1(e,105685)|0)==0:0){A=101;n=6}else{e=105519;n=4}else n=4;if((n|0)==4){A=i[e>>0]|0;if(A<<24>>24==99)if(!(e1(e,105519)|0))n=11;else{A=99;n=6}else n=6}e:do{if((n|0)==6){r=20848;while(1){a=t[r>>2]|0;if(!a){n=11;break e}if((i[a>>0]|0)==A<<24>>24?(e1(a,e)|0)==0:0){e=r;break e}r=r+16|0}}}while(0);if((n|0)==11)e=ZN(e)|0;return e|0}function ZN(e){e=e|0;var A=0,r=0,a=0,n=0,f=0;f=h;h=h+16|0;n=f;A=CN(e)|0;if(!A){a=t[47284]|0;A=a+1|0;t[47284]=A;r=t[47283]|0;if(!r)A=$F(A<<2)|0;else A=AM(r,A<<2)|0;t[47283]=A;A=KF(16)|0;t[(t[47283]|0)+(a<<2)>>2]=A;t[A>>2]=t[5212];t[A+4>>2]=t[5213];t[A+8>>2]=t[5214];t[A+12>>2]=t[5215];r=o3(e)|0;t[A>>2]=r;do{if(!0){if((i[e>>0]|0)==99?(e1(e,105519)|0)==0:0){r=1;break}t[n>>2]=t[5212];t[n+4>>2]=r;nw(0,105690,n)|0;r=0}else r=1}while(0);i[A+12>>0]=r}h=f;return A|0}function GN(e,A){e=e|0;A=A|0;var r=0.0,i=0.0;i=+c[A>>3]*.5257311121191336;r=+c[A+8>>3]*.8944271909999159;r=i>r?i:r;c[e>>3]=r*4.97979656976556;c[e+8>>3]=r*4.73606797749979;return}function LN(e,A){e=e|0;A=A|0;var r=0.0,i=0.0,a=0.0,t=0,n=0.0,f=0.0,l=0.0,s=0,o=0,u=0.0;i=+c[A>>3];s=A+8|0;a=+c[s>>3];r=a/i;if(!(r>.9510565162951536))if(r<.9510565162951536){l=i;a=i*.9510565162951536}else l=i;else l=a*1.0514622242382672;i=l*.5257311121191336;n=l*.20081141588622725;f=l*.05020285397155681;r=.3141592653589793;t=0;while(1){if((t|0)>=10)break;c[e+(t<<4)>>3]=+W(+r)*i;c[e+(t<<4)+8>>3]=+Y(+r)*i-f;u=r+.6283185307179586;o=t|1;c[e+(o<<4)>>3]=+W(+u)*n;c[e+(o<<4)+8>>3]=+Y(+u)*n-f;r=r+1.2566370614359172;t=t+2|0}c[A>>3]=l;c[s>>3]=a;return}function QN(e){e=e|0;e=t[(t[e+16>>2]|0)+12>>2]|0;if(e|0){G2(t[e+44>>2]|0);G2(e)}return}function DN(e,A,r,a){e=e|0;A=A|0;r=r|0;a=a|0;var n=0,f=0,l=0,s=0,c=0,o=0,u=0,b=0;b=h;h=h+80|0;c=b+40|0;n=b;u=b+64|0;f=b+56|0;if(!(i[r>>0]|0)){n=4208;f=e+40|0;do{t[e>>2]=t[n>>2];e=e+4|0;n=n+4|0}while((e|0)<(f|0))}else{l=(a|0)==0?106356:a;t[u>>2]=15;s=A+16|0;a=t[s>>2]|0;do{if(i[(t[a+104>>2]|0)+82>>0]|0){a=ft(A,r,u)|0;if(!a){a=t[s>>2]|0;o=8;break}if(SN(A,a,n,l,t[u>>2]|0,0)|0){t[c>>2]=Mk(A)|0;t[c+4>>2]=r;t[c+8>>2]=l;nw(0,106358,c)|0}}else o=8}while(0);if((o|0)==8){if((t[(t[a+8>>2]|0)+8>>2]|0)==1664)f=0;else{t[f>>2]=A;t[f+4>>2]=0}if(SN(A,0,n,r,t[u>>2]|0,f)|0)jN(A,r)}t[n+36>>2]=0;f=e+40|0;do{t[e>>2]=t[n>>2];e=e+4|0;n=n+4|0}while((e|0)<(f|0))}h=b;return}function zN(e,A){e=e|0;A=A|0;var r=0.0,i=0.0,a=0,n=0,f=0,l=0.0,s=0,o=0,u=0,b=0,w=0,k=0,d=0,v=0.0,g=0;d=h;h=h+112|0;u=d+96|0;o=d+80|0;w=d+64|0;s=d+48|0;k=d+32|0;b=d;a=d+16|0;if(!e){t[47287]=0;e=0}else{n=t[e+4>>2]|0;e=t[e>>2]|0;f=(t[(t[(Bd(e)|0)+16>>2]|0)+116>>2]&3)*90|0;t[u>>2]=t[A>>2];t[u+4>>2]=t[A+4>>2];t[u+8>>2]=t[A+8>>2];t[u+12>>2]=t[A+12>>2];LF(a,u,f);t[k>>2]=t[a>>2];t[k+4>>2]=t[a+4>>2];t[k+8>>2]=t[a+8>>2];t[k+12>>2]=t[a+12>>2];e:do{if(n){r=+c[n+8>>3];i=+c[n+24>>3];v=+c[k>>3];if((+c[n>>3]<=v?v<=+c[n+16>>3]:0)?(l=+c[k+8>>3],r<=l):0)e=l<=i&1;else e=0}else{if((e|0)==(t[47287]|0)){a=t[47288]|0;n=t[47290]|0;f=t[47289]|0}else{n=t[(t[e+16>>2]|0)+12>>2]|0;t[47291]=n;f=t[n+44>>2]|0;t[47289]=f;a=t[n+8>>2]|0;t[47288]=a;n=P((t[n+4>>2]|0)+-1|0,a)|0;n=(n|0)>0?n:0;t[47290]=n;t[47287]=e}e=0;A=0;while(1){if((e|0)>=(a|0)){e=1;break e}g=f+(n+e<<4)|0;t[b>>2]=t[g>>2];t[b+4>>2]=t[g+4>>2];t[b+8>>2]=t[g+8>>2];t[b+12>>2]=t[g+12>>2];g=f+(n+((e+4|0)%(a|0)|0)<<4)|0;t[s>>2]=t[k>>2];t[s+4>>2]=t[k+4>>2];t[s+8>>2]=t[k+8>>2];t[s+12>>2]=t[k+12>>2];t[w>>2]=t[46614];t[w+4>>2]=t[46615];t[w+8>>2]=t[46616];t[w+12>>2]=t[46617];t[o>>2]=t[b>>2];t[o+4>>2]=t[b+4>>2];t[o+8>>2]=t[b+8>>2];t[o+12>>2]=t[b+12>>2];t[u>>2]=t[g>>2];t[u+4>>2]=t[g+4>>2];t[u+8>>2]=t[g+8>>2];t[u+12>>2]=t[g+12>>2];A=A+((XN(s,w,o,u)|0)==0&1)|0;if((A|0)==2){e=0;break}else e=e+2|0}}}while(0)}h=d;return e|0}function WN(e,A,r,a,n){e=e|0;A=A|0;r=r|0;a=a|0;n=n|0;r=t[e+16>>2]|0;if((i[(t[r+104>>2]|0)+82>>0]|0)!=0?(i[r+145>>0]|0)!=0:0)e=ct(e,A,0,a,n)|0;else e=0;return e|0}function YN(e,A){e=e|0;A=A|0;var r=0,f=0,l=0.0,o=0,u=0,b=0,w=0,k=0,d=0,v=0,g=0,m=0,p=0,E=0,B=0,y=0,C=0,I=0,Z=0.0,G=0.0,L=0,Q=0,D=0,z=0,W=0,Y=0,F=0,M=0,V=0,N=0,R=0,x=0,J=0,H=0;x=h;h=h+48|0;W=x+24|0;z=x+16|0;I=x+8|0;C=x;V=x+32|0;u=x+28|0;N=t[e+16>>2]|0;R=N+208|0;r=t[R>>2]|0;if((r|0)==0?(a[N+260>>1]&1)==0:0)F=0;else Q=4;if((Q|0)==4)if(!(t[e+152>>2]&4)){Tr(e,r,t[N+228>>2]|0,t[N+244>>2]|0,t[N+212>>2]|0);F=1}else F=1;Y=A+16|0;r=t[Y>>2]|0;d=t[r+12>>2]|0;D=t[d+44>>2]|0;M=t[d+8>>2]|0;d=t[d+4>>2]|0;if((t[47285]|0)<(M|0)){r=M+5|0;t[47285]=r;f=t[47286]|0;if(!f)r=$F(r<<4)|0;else r=AM(f,r<<4)|0;t[47286]=r;r=t[Y>>2]|0}L=(t[r+104>>2]|0)+56|0;r=r+16|0;t[L>>2]=t[r>>2];t[L+4>>2]=t[r+4>>2];t[L+8>>2]=t[r+8>>2];t[L+12>>2]=t[r+12>>2];L=t[Y>>2]|0;Z=+c[L+32>>3]*72.0;Z=(+c[L+96>>3]+ +c[L+88>>3])/+(~~(Z+(Z>=0.0?.5:-.5))|0);G=+c[L+40>>3]*72.0;G=+c[L+80>>3]/+(~~(G+(G>=0.0?.5:-.5))|0);L=FN(e,A)|0;t[V>>2]=0;r=n[(t[Y>>2]|0)+117>>0]|0;do{if(!(r&1)){if(r&2|0){v=vx(A,0,106256)|0;$r(e,v);Ai(e,vx(A,0,106264)|0);f=0;r=1;break}if(r&8|0){v=vx(A,0,106272)|0;$r(e,v);Ai(e,vx(A,0,106280)|0);f=0;r=1;break}if(r&4|0){v=vx(A,0,106288)|0;$r(e,v);Ai(e,vx(A,0,106296)|0);f=0;r=1;break}if(!(L&1))if(!(L&576)){f=0;r=0}else{f=MN(A)|0;r=1}else{f=MN(A)|0;if(!((KY(f,V,u)|0)<<24>>24)){Ai(e,f);r=1}else{Ai(e,t[V>>2]|0);r=t[V+4>>2]|0;o=hx(A,t[47173]|0,0,0)|0;l=+s[u>>2];if(!r)ri(e,137314,o,l);else ri(e,r,o,l);r=(L&2)>>>1|2}}v=VN(e,A)|0}else{v=vx(A,0,106240)|0;$r(e,v);Ai(e,vx(A,0,106248)|0);f=0;r=1}}while(0);o=t[(t[Y>>2]|0)+8>>2]|0;if(i[o+12>>0]|0){o=t[o>>2]|0;if((i[o>>0]|0)==99){o=(e1(o,105519)|0)==0;Q=33}else m=1}else{o=1;Q=33}if((Q|0)==33){o=o^1;if((d|0)!=0|r<<24>>24==0|o)m=o;else{$r(e,137379);d=1;m=0}}p=(M|0)<3;E=(L&512|0)!=0;y=(L&8|0)==0;B=(L&64|0)==0;w=(L&1024|0)==0;k=(L&2130706444|0)==0;g=0;while(1){if((g|0)>=(d|0))break;u=P(g,M)|0;b=t[47286]|0;o=0;while(1){if((o|0)>=(M|0))break;H=o+u|0;l=+c[D+(H<<4)+8>>3];J=t[Y>>2]|0;c[b+(o<<4)>>3]=+c[J+16>>3]+ +c[D+(H<<4)>>3]*Z;c[b+(o<<4)+8>>3]=+c[J+24>>3]+l*G;o=o+1|0}do{if(p){if(E&(g|0)==0?(C1(f,58)|0)!=0:0)if((tB(e,b,f)|0)>1){t[C>>2]=Mk(A)|0;nw(3,106304,C)|0;r=0}else r=0;ai(e,t[47286]|0,M,r&255);if(!y)NN(e,A)}else{if(!B){if((g|0)==0?(sB(e,b,f,1)|0)>1:0){t[I>>2]=Mk(A)|0;nw(3,106304,I)|0}ti(e,t[47286]|0,M,0);break}if(!w){$r(e,137379);ti(e,t[47286]|0,M,r&255);$r(e,v);li(e,(t[47286]|0)+32|0,2);break}r=r&255;if(k){ti(e,b,M,r);break}else{lN(e,b,M,L,r);break}}}while(0);g=g+1|0;r=0}o=t[(t[Y>>2]|0)+8>>2]|0;if(!(i[o+12>>0]|0)){o=Hw(A,109025)|0;if(o|0?i[o>>0]|0:0){b=o;Q=65}}else{o=t[o>>2]|0;if((i[o>>0]|0)==99?(e1(o,105519)|0)==0:0){o=Hw(A,105526)|0;if(o|0?i[o>>0]|0:0){b=o;Q=65}}else{b=o;Q=65}}if((Q|0)==65){u=t[47286]|0;o=0;while(1){if((o|0)>=(M|0))break;l=+c[D+(o<<4)+8>>3];H=t[Y>>2]|0;c[u+(o<<4)>>3]=+c[H+16>>3]+ +c[D+(o<<4)>>3]*Z;c[u+(o<<4)+8>>3]=+c[H+24>>3]+l*G;o=o+1|0}o=r&255;do{if(!(m|r<<24>>24==0)){if(p){if(E&(g|0)==0?(C1(f,58)|0)!=0:0)if((tB(e,u,f)|0)>1){t[z>>2]=Mk(A)|0;nw(3,106304,z)|0;r=0}else r=0;ai(e,t[47286]|0,M,r&255);if(y)break;NN(e,A);break}if(B)if(!(L&12)){ti(e,u,M,o);break}else{lN(e,u,M,L,o);break}else{if((sB(e,u,f,1)|0)>1){t[W>>2]=Mk(A)|0;nw(3,106304,W)|0}ti(e,t[47286]|0,M,0);break}}}while(0);H=t[47286]|0;ci(e,b,H,M,r,dx(A,t[47166]|0,137308)|0)}G2(t[V>>2]|0);jF(e,10,t[(t[Y>>2]|0)+104>>2]|0);if(F){if(t[e+152>>2]&4|0)Tr(e,t[R>>2]|0,t[N+228>>2]|0,t[N+244>>2]|0,t[N+212>>2]|0);Or(e)}h=x;return}function FN(e,A){e=e|0;A=A|0;var r=0,a=0,n=0,f=0;f=h;h=h+16|0;a=f;r=JN(A,a)|0;if(r|0)ii(e,r);r=t[47172]|0;if((r|0?(n=Pw(A,r)|0,n|0):0)?i[n>>0]|0:0)ui(e,+wx(A,t[47172]|0,1.0,0.0));h=f;return t[a>>2]|0}function MN(e){e=e|0;return xN(e,134800)|0}function VN(e,A){e=e|0;A=A|0;A=vx(A,t[47148]|0,195059)|0;A=i[A>>0]|0?A:137314;$r(e,A);return A|0}function NN(e,A){e=e|0;A=A|0;var r=0,i=0,a=0.0,n=0,f=0.0,l=0,s=0,o=0;r=h;h=h+96|0;l=r+80|0;s=r+64|0;i=r+32|0;o=r+16|0;n=r;A=t[A+16>>2]|0;a=+c[A+80>>3];c[o+8>>3]=a*.375;f=+c[A+96>>3];c[o>>3]=f*.6614;A=A+16|0;t[s>>2]=t[o>>2];t[s+4>>2]=t[o+4>>2];t[s+8>>2]=t[o+8>>2];t[s+12>>2]=t[o+12>>2];t[l>>2]=t[A>>2];t[l+4>>2]=t[A+4>>2];t[l+8>>2]=t[A+8>>2];t[l+12>>2]=t[A+12>>2];RN(n,s,l);t[i>>2]=t[n>>2];t[i+4>>2]=t[n+4>>2];t[i+8>>2]=t[n+8>>2];t[i+12>>2]=t[n+12>>2];n=i+8|0;A=i+24|0;c[A>>3]=+c[n>>3];c[i+16>>3]=+c[i>>3]-f*1.3228;li(e,i,2);a=+c[n>>3]-a*.75;c[n>>3]=a;c[A>>3]=a;li(e,i,2);h=r;return}function RN(e,A,r){e=e|0;A=A|0;r=r|0;var i=0.0;i=+c[r+8>>3]+ +c[A+8>>3];c[e>>3]=+c[r>>3]+ +c[A>>3];c[e+8>>3]=i;return}function xN(e,A){e=e|0;A=A|0;var r=0;r=vx(e,t[47149]|0,195059)|0;if(!(i[r>>0]|0)){r=vx(e,t[47148]|0,195059)|0;return((i[r>>0]|0)==0?A:r)|0}else return r|0;return 0}function JN(e,A){e=e|0;A=A|0;var r=0,a=0,n=0,f=0,l=0,s=0;r=vx(e,t[47157]|0,195059)|0;e:do{if(!(i[r>>0]|0)){n=0;r=0}else{n=JB(r)|0;f=n;r=0;A:while(1){a=t[f>>2]|0;if(!a)break e;switch(i[a>>0]|0){case 102:{if(!(e1(a,111101)|0)){f=f+4|0;r=r|1;continue A}break}case 114:{if(!(e1(a,106316)|0)){a=f;do{s=a;a=a+4|0;l=t[a>>2]|0;t[s>>2]=l}while((l|0)!=0);s=f;r=r|4;f=s;continue A}if(!(e1(a,106334)|0)){a=f;do{l=a;a=a+4|0;s=t[a>>2]|0;t[l>>2]=s}while((s|0)!=0);s=f;r=r|3;f=s;continue A}break}case 100:{if(!(e1(a,106324)|0)){a=f;do{l=a;a=a+4|0;s=t[a>>2]|0;t[l>>2]=s}while((s|0)!=0);s=f;r=r|8;f=s;continue A}break}case 105:{if(!(e1(a,134335)|0)){f=f+4|0;r=r|32;continue A}break}case 115:{if((e1(a,106341)|0)==0?HN(e)|0:0){a=f;do{l=a;a=a+4|0;s=t[a>>2]|0;t[l>>2]=s}while((s|0)!=0);s=f;r=r|64;f=s;continue A}break}case 119:{if((e1(a,106349)|0)==0?PN(e)|0:0){a=f;do{l=a;a=a+4|0;s=t[a>>2]|0;t[l>>2]=s}while((s|0)!=0);s=f;r=r|512;f=s;continue A}break}default:{}}f=f+4|0}}}while(0);a=t[(t[(t[e+16>>2]|0)+8>>2]|0)+8>>2]|0;if(a)r=t[a+40>>2]|r;t[A>>2]=r;return n|0}function HN(e){e=e|0;var A=0.0;e=t[(t[(t[e+16>>2]|0)+8>>2]|0)+8>>2]|0;if((((e|0)!=0?(t[e+8>>2]|0)==4:0)?(A=+c[e+16>>3],((~~(A+(A>=0.0?.5:-.5))|0)%90|0|0)==0):0)?+c[e+24>>3]==0.0:0)e=+c[e+32>>3]==0.0&1;else e=0;return e|0}function PN(e){e=e|0;e=t[(t[(t[e+16>>2]|0)+8>>2]|0)+8>>2]|0;if(!e)e=0;else e=(t[e+8>>2]|0)<3&1;return e|0}function XN(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0.0,t=0.0,n=0.0,f=0.0;f=+c[r+8>>3];n=-(+c[i+8>>3]-f);t=+c[r>>3];a=+c[i>>3]-t;t=a*f+t*n;return(+c[e+8>>3]*a+ +c[e>>3]*n-t>=0.0^+c[A>>3]*n-t+ +c[A+8>>3]*a>=0.0^1)&1|0}function SN(e,A,r,a,n,f){e=e|0;A=A|0;r=r|0;a=a|0;n=n|0;f=f|0;var l=0.0,s=0.0,o=0,u=0,b=0,w=0,k=0.0,d=0.0,v=0.0,g=0.0,m=0.0,p=0,E=0,B=0,y=0,C=0,I=0,Z=0,G=0,L=0,Q=0,D=0,z=0,W=0;z=h;h=h+192|0;Z=z+176|0;Q=z+160|0;o=z+144|0;C=z+128|0;I=z+112|0;u=z+96|0;b=z+80|0;w=z+64|0;p=z+48|0;E=z+32|0;B=z+16|0;L=z;if(!A){t[Q>>2]=0;t[Q+4>>2]=0;t[Q+8>>2]=0;t[Q+12>>2]=0;o=(t[(t[(Bd(e)|0)+16>>2]|0)+116>>2]&1|0)==0;G=t[e+16>>2]|0;k=+c[G+80>>3]*.5;l=+c[G+88>>3];g=o?k:l;k=o?l:k;o=0;G=Q;l=0.0;s=-k;d=g;D=Q+8|0;v=0.0;g=-g}else{s=+c[A>>3];g=+c[A+8>>3];k=+c[A+16>>3];d=+c[A+24>>3];vN(o,(k+s)*.5,(d+g)*.5);t[Q>>2]=t[o>>2];t[Q+4>>2]=t[o+4>>2];t[Q+8>>2]=t[o+8>>2];t[Q+12>>2]=t[o+12>>2];W=Q+8|0;o=1;G=Q;l=+c[Q>>3];D=W;v=+c[W>>3]}m=(k>d?k:d)*4.0;e:do{if((a|0)!=0?(y=i[a>>0]|0,y<<24>>24!=0):0){a=a+1|0;switch(y<<24>>24|0){case 99:{w=1;n=0;a=0;u=0;l=0.0;b=0;break e}case 101:{if(i[a>>0]|0){w=1;n=0;a=0;u=0;l=0.0;b=1;break e}if(!f)c[G>>3]=k;else{UN(C,f,v,m);t[Q>>2]=t[C>>2];t[Q+4>>2]=t[C+4>>2];t[Q+8>>2]=t[C+8>>2];t[Q+12>>2]=t[C+12>>2]}w=0;n=n&2;a=0;u=1;l=0.0;b=0;o=1;break e}case 115:{c[D>>3]=g;switch(i[a>>0]|0){case 0:{if(!f)c[G>>3]=l;else{UN(I,f,-m,l);t[Q>>2]=t[I>>2];t[Q+4>>2]=t[I+4>>2];t[Q+8>>2]=t[I+8>>2];t[Q+12>>2]=t[I+12>>2]}w=0;n=n&1;a=0;u=1;l=-1.5707963267948966;b=0;o=1;break e}case 101:{if(!f)c[G>>3]=k;else{UN(u,f,-m,m);t[Q>>2]=t[u>>2];t[Q+4>>2]=t[u+4>>2];t[Q+8>>2]=t[u+8>>2];t[Q+12>>2]=t[u+12>>2]}w=0;n=n&3;a=0;u=1;l=-.7853981633974483;b=0;o=1;break e}case 119:{if(!f)c[G>>3]=s;else{m=-m;UN(b,f,m,m);t[Q>>2]=t[b>>2];t[Q+4>>2]=t[b+4>>2];t[Q+8>>2]=t[b+8>>2];t[Q+12>>2]=t[b+12>>2]}w=0;n=n&9;a=0;u=1;l=-2.356194490192345;b=0;o=1;break e}default:{c[D>>3]=v;w=1;n=0;a=0;u=0;l=0.0;b=1;break e}}}case 119:{if(i[a>>0]|0){w=1;n=0;a=0;u=0;l=0.0;b=1;break e}if(!f)c[G>>3]=s;else{UN(w,f,v,-m);t[Q>>2]=t[w>>2];t[Q+4>>2]=t[w+4>>2];t[Q+8>>2]=t[w+8>>2];t[Q+12>>2]=t[w+12>>2]}w=0;n=n&8;a=0;u=1;l=3.141592653589793;b=0;o=1;break e}case 110:{c[D>>3]=d;switch(i[a>>0]|0){case 0:{if(!f)c[G>>3]=l;else{UN(p,f,m,l);t[Q>>2]=t[p>>2];t[Q+4>>2]=t[p+4>>2];t[Q+8>>2]=t[p+8>>2];t[Q+12>>2]=t[p+12>>2]}w=0;n=n&4;a=0;u=1;l=1.5707963267948966;b=0;o=1;break e}case 101:{if(!f)c[G>>3]=k;else{UN(E,f,m,m);t[Q>>2]=t[E>>2];t[Q+4>>2]=t[E+4>>2];t[Q+8>>2]=t[E+8>>2];t[Q+12>>2]=t[E+12>>2]}w=0;n=n&6;a=0;u=1;l=.7853981633974483;b=0;o=1;break e}case 119:{if(!f)c[G>>3]=s;else{UN(B,f,m,-m);t[Q>>2]=t[B>>2];t[Q+4>>2]=t[B+4>>2];t[Q+8>>2]=t[B+8>>2];t[Q+12>>2]=t[B+12>>2]}w=0;n=n&12;a=0;u=1;l=2.356194490192345;b=0;o=1;break e}default:{c[D>>3]=v;w=1;n=0;a=0;u=0;l=0.0;b=1;break e}}}case 95:{w=1;a=1;u=0;l=0.0;b=0;break e}default:{w=1;n=0;a=0;u=0;l=0.0;b=1;break e}}}else{w=1;n=0;a=0;u=0;l=0.0;b=0}}while(0);W=(t[(t[(Bd(e)|0)+16>>2]|0)+116>>2]&3)*90|0;t[Z>>2]=t[Q>>2];t[Z+4>>2]=t[Q+4>>2];t[Z+8>>2]=t[Q+8>>2];t[Z+12>>2]=t[Q+12>>2];GF(L,Z,W);t[Q>>2]=t[L>>2];t[Q+4>>2]=t[L+4>>2];t[Q+8>>2]=t[L+8>>2];t[Q+12>>2]=t[L+12>>2];if(!(a<<24>>24))n=TN(n,t[(t[(Bd(e)|0)+16>>2]|0)+116>>2]&3)|0;i[r+33>>0]=n;t[r+24>>2]=A;s=+c[G>>3];c[r>>3]=+(~~(s+(s>=0.0?.5:-.5))|0);s=+c[D>>3];c[r+8>>3]=+(~~(s+(s>=0.0?.5:-.5))|0);c[r+16>>3]=+ON(l,t[(t[(Bd(e)|0)+16>>2]|0)+116>>2]&3);s=+c[G>>3];l=+c[D>>3];if(s==0.0&l==0.0)n=-128;else{m=+R(+l,+s);g=m+4.71238898038469;n=~~((!(g>=6.283185307179586)?g:m+-1.5707963267948966)*40.74366543152521)&255}i[r+32>>0]=n;i[r+29>>0]=u;i[r+28>>0]=o;i[r+30>>0]=w;i[r+31>>0]=a;h=z;return b|0}function jN(e,A){e=e|0;A=A|0;var r=0,i=0;r=h;h=h+16|0;i=r;t[i>>2]=Mk(e)|0;t[i+4>>2]=A;nw(0,106419,i)|0;h=r;return}function UN(e,A,r,i){e=e|0;A=A|0;r=+r;i=+i;var a=0,n=0,f=0,l=0,s=0,o=0,u=0,b=0,w=0,k=0;w=h;h=h+128|0;n=w+112|0;l=w+48|0;s=w+16|0;o=w+32|0;u=w;b=t[A>>2]|0;f=t[(t[(Bd(b)|0)+16>>2]|0)+116>>2]&3;c[s>>3]=i;c[s+8>>3]=r;a=(f|0)!=0;if(a){t[n>>2]=t[s>>2];t[n+4>>2]=t[s+4>>2];t[n+8>>2]=t[s+8>>2];t[n+12>>2]=t[s+12>>2];GF(o,n,f*90|0);t[s>>2]=t[o>>2];t[s+4>>2]=t[o+4>>2];t[s+8>>2]=t[o+8>>2];t[s+12>>2]=t[o+12>>2]}o=l+48|0;k=l+32|0;t[l>>2]=0;t[l+4>>2]=0;t[l+8>>2]=0;t[l+12>>2]=0;t[l+16>>2]=0;t[l+20>>2]=0;t[l+24>>2]=0;t[l+28>>2]=0;t[k>>2]=t[s>>2];t[k+4>>2]=t[s+4>>2];t[k+8>>2]=t[s+8>>2];t[k+12>>2]=t[s+12>>2];t[o>>2]=t[s>>2];t[o+4>>2]=t[s+4>>2];t[o+8>>2]=t[s+8>>2];t[o+12>>2]=t[s+12>>2];kR(A,t[(t[(t[(t[b+16>>2]|0)+8>>2]|0)+4>>2]|0)+12>>2]|0,l,1);if(a){t[n>>2]=t[l>>2];t[n+4>>2]=t[l+4>>2];t[n+8>>2]=t[l+8>>2];t[n+12>>2]=t[l+12>>2];LF(u,n,f*90|0);t[l>>2]=t[u>>2];t[l+4>>2]=t[u+4>>2];t[l+8>>2]=t[u+8>>2];t[l+12>>2]=t[u+12>>2]}t[e>>2]=t[l>>2];t[e+4>>2]=t[l+4>>2];t[e+8>>2]=t[l+8>>2];t[e+12>>2]=t[l+12>>2];h=w;return}function TN(e,A){e=e|0;A=A|0;e:do{switch(A|0){case 3:switch(e|0){case 4:{e=2;break e}case 1:{e=8;break e}case 8:{e=1;break e}case 2:{e=4;break e}default:break e}case 2:switch(e|0){case 4:{e=1;break e}case 1:{e=4;break e}default:break e}case 1:switch(e|0){case 4:{e=2;break e}case 1:{e=8;break e}case 8:{e=4;break e}case 2:{e=1;break e}default:break e}default:{}}}while(0);return e|0}function ON(e,A){e=+e;A=A|0;switch(A|0){case 3:{if(!(e==3.141592653589793))if(!(e==2.356194490192345))if(!(e==1.5707963267948966))if(!(e==0.0))if(!(e==-.7853981633974483)){if(e==-1.5707963267948966)e=3.141592653589793}else e=2.356194490192345;else e=1.5707963267948966;else e=0.0;else e=-.7853981633974483;else e=-1.5707963267948966;break}case 2:{e=-e;break}case 1:{e=e+-1.5707963267948966;break}default:{}}return+e}function _N(e,A){e=e|0;A=A|0;var r=0.0,i=0,a=0.0,n=0.0,f=0,l=0,s=0;i=h;h=h+32|0;s=i+16|0;f=i;e=t[e>>2]|0;l=(t[(t[(Bd(e)|0)+16>>2]|0)+116>>2]&3)*90|0;t[s>>2]=t[A>>2];t[s+4>>2]=t[A+4>>2];t[s+8>>2]=t[A+8>>2];t[s+12>>2]=t[A+12>>2];LF(f,s,l);r=+c[f>>3];n=+c[f+8>>3];e=t[e+16>>2]|0;a=+c[e+80>>3]*.5;if(!(!(n>=-a)|!(n<=a))?r>=-+c[e+88>>3]:0)e=r<=+c[e+96>>3]&1;else e=0;h=i;return e|0}function qN(e,A){e=e|0;A=A|0;var r=0,i=0,n=0,f=0,l=0,s=0,o=0,u=0,b=0,w=0.0;u=h;h=h+32|0;o=u;f=t[e+16>>2]|0;l=f+208|0;n=t[l>>2]|0;if(!n)s=(a[f+260>>1]&1)!=0;else s=1;r=A+16|0;A=t[r>>2]|0;i=t[A+12>>2]|0;if(i|0){if(s?(t[e+152>>2]&4|0)==0:0){Tr(e,n,t[f+228>>2]|0,t[f+244>>2]|0,t[f+212>>2]|0);A=t[r>>2]|0}n=t[e+36>>2]|0;w=+c[A+24>>3]+ +(t[i+8>>2]|0);b=t[i>>2]|0;c[o>>3]=+c[A+16>>3]+ +(t[i+4>>2]|0);c[o+8>>3]=w;t[o+16>>2]=b;a3(n,106450,o)|0;n=t[r>>2]|0;o=(t[n+104>>2]|0)+56|0;n=n+16|0;t[o>>2]=t[n>>2];t[o+4>>2]=t[n+4>>2];t[o+8>>2]=t[n+8>>2];t[o+12>>2]=t[n+12>>2];jF(e,10,t[(t[r>>2]|0)+104>>2]|0);if(s){if(t[e+152>>2]&4|0)Tr(e,t[l>>2]|0,t[f+228>>2]|0,t[f+244>>2]|0,t[f+212>>2]|0);Or(e)}}h=u;return}function KN(e){e=e|0;pN(t[(t[e+16>>2]|0)+12>>2]|0);return}function $N(e,A,r,a){e=e|0;A=A|0;r=r|0;a=a|0;var f=0,l=0,s=0,c=0,o=0;o=h;h=h+64|0;c=o+40|0;f=o;if(!(i[r>>0]|0)){f=4208;a=e+40|0;do{t[e>>2]=t[f>>2];e=e+4|0;f=f+4|0}while((e|0)<(a|0))}else{a=(a|0)==0?106356:a;l=t[(t[A+16>>2]|0)+12>>2]|0;s=tR(l,r)|0;if(!s){if(SN(A,l+16|0,f,r,15,0)|0)jN(A,r)}else if(SN(A,s+16|0,f,a,n[s+65>>0]|0,0)|0){t[c>>2]=Mk(A)|0;t[c+4>>2]=r;t[c+8>>2]=a;nw(0,106358,c)|0}a=e+40|0;do{t[e>>2]=t[f>>2];e=e+4|0;f=f+4|0}while((e|0)<(a|0))}h=o;return}function eR(e,A){e=e|0;A=A|0;var r=0.0,i=0.0,a=0,n=0,f=0,l=0.0,s=0,o=0,u=0.0;s=h;h=h+32|0;o=s+16|0;f=s;a=t[e+4>>2]|0;e=t[e>>2]|0;n=(t[(t[(Bd(e)|0)+16>>2]|0)+116>>2]&3)*90|0;t[o>>2]=t[A>>2];t[o+4>>2]=t[A+4>>2];t[o+8>>2]=t[A+8>>2];t[o+12>>2]=t[A+12>>2];LF(f,o,n);t[A>>2]=t[f>>2];t[A+4>>2]=t[f+4>>2];t[A+8>>2]=t[f+8>>2];t[A+12>>2]=t[f+12>>2];if(!a){a=t[(t[e+16>>2]|0)+12>>2]|0;n=a+16|0;e=a+24|0;f=a+32|0;a=a+40|0}else{n=a;e=a+8|0;f=a+16|0;a=a+24|0}i=+c[e>>3];r=+c[a>>3];u=+c[A>>3];if((+c[n>>3]<=u?u<=+c[f>>3]:0)?(l=+c[A+8>>3],i<=l):0)e=l<=r&1;else e=0;h=s;return e|0}function AR(e,A,r,a,n){e=e|0;A=A|0;r=r|0;a=a|0;n=n|0;var f=0.0,l=0.0,s=0,o=0,u=0,b=0,w=0,k=0,d=0,v=0.0,g=0,m=0,p=0.0;m=h;h=h+80|0;d=m+64|0;k=m+32|0;g=m;e:do{if(!(i[A+28>>0]|0))r=0;else{f=+c[A>>3];w=e+16|0;o=t[(t[w>>2]|0)+12>>2]|0;s=o+48|0;o=o+56|0;A=0;while(1){if((A|0)>=(t[s>>2]|0))break e;u=(t[(t[(Bd(e)|0)+16>>2]|0)+116>>2]&1|0)==0;b=t[(t[o>>2]|0)+(A<<2)>>2]|0;l=+(~~+c[(u?b+16|0:b+24|0)>>3]|0);if(f>=l?(v=+(~~+c[(u?b+32|0:b+40|0)>>3]|0),f<=v):0)break;A=A+1|0}if(!(t[(t[(Bd(e)|0)+16>>2]|0)+116>>2]&1)){g=t[w>>2]|0;p=+c[g+16>>3];c[a>>3]=p+l;l=+c[g+24>>3];f=+c[g+80>>3];c[a+8>>3]=l-f*.5;c[a+16>>3]=p+v}else{b=(t[(t[o>>2]|0)+(A<<2)>>2]|0)+16|0;e=(t[w>>2]|0)+16|0;t[k>>2]=t[b>>2];t[k+4>>2]=t[b+4>>2];t[k+8>>2]=t[b+8>>2];t[k+12>>2]=t[b+12>>2];t[k+16>>2]=t[b+16>>2];t[k+20>>2]=t[b+20>>2];t[k+24>>2]=t[b+24>>2];t[k+28>>2]=t[b+28>>2];t[d>>2]=t[e>>2];t[d+4>>2]=t[e+4>>2];t[d+8>>2]=t[e+8>>2];t[d+12>>2]=t[e+12>>2];QF(g,k,d);t[a>>2]=t[g>>2];t[a+4>>2]=t[g+4>>2];t[a+8>>2]=t[g+8>>2];t[a+12>>2]=t[g+12>>2];t[a+16>>2]=t[g+16>>2];t[a+20>>2]=t[g+20>>2];t[a+24>>2]=t[g+24>>2];t[a+28>>2]=t[g+28>>2];g=t[w>>2]|0;f=+c[g+80>>3];l=+c[g+24>>3]}c[a+24>>3]=f*.5+l;t[n>>2]=1}}while(0);h=m;return r|0}function rR(e,A){e=e|0;A=A|0;var r=0,n=0,f=0,l=0.0,o=0,u=0,b=0,w=0,k=0,d=0,v=0,g=0,m=0,p=0,E=0,B=0.0;E=h;h=h+144|0;u=E+96|0;w=E+64|0;d=E;v=E+128|0;g=t[e+16>>2]|0;m=g+208|0;r=t[m>>2]|0;if(!r)p=(a[g+260>>1]&1)!=0;else p=1;o=A+16|0;k=t[o>>2]|0;b=t[k+12>>2]|0;f=b+16|0;t[w>>2]=t[f>>2];t[w+4>>2]=t[f+4>>2];t[w+8>>2]=t[f+8>>2];t[w+12>>2]=t[f+12>>2];t[w+16>>2]=t[f+16>>2];t[w+20>>2]=t[f+20>>2];t[w+24>>2]=t[f+24>>2];t[w+28>>2]=t[f+28>>2];B=+c[k+16>>3];c[w>>3]=+c[w>>3]+B;l=+c[k+24>>3];k=w+8|0;c[k>>3]=+c[k>>3]+l;k=w+16|0;c[k>>3]=+c[k>>3]+B;f=w+24|0;c[f>>3]=+c[f>>3]+l;if(p?(t[e+152>>2]&4|0)==0:0)Tr(e,r,t[g+228>>2]|0,t[g+244>>2]|0,t[g+212>>2]|0);r=FN(e,A)|0;VN(e,A)|0;t[v>>2]=0;if(!(r&1))n=0;else{n=MN(A)|0;if(!((KY(n,v,u)|0)<<24>>24)){Ai(e,n);n=1}else{Ai(e,t[v>>2]|0);n=t[v+4>>2]|0;f=hx(A,t[47173]|0,0,0)|0;l=+s[u>>2];if(!n)ri(e,137314,f,l);else ri(e,n,f,l);n=r>>>1&1|2}}f=t[t[(t[o>>2]|0)+8>>2]>>2]|0;if((i[f>>0]|0)==77){o=(e1(f,106227)|0)==0;r=o?r|4:r}if(!(r&2130706444)){t[u>>2]=t[w>>2];t[u+4>>2]=t[w+4>>2];t[u+8>>2]=t[w+8>>2];t[u+12>>2]=t[w+12>>2];t[u+16>>2]=t[w+16>>2];t[u+20>>2]=t[w+20>>2];t[u+24>>2]=t[w+24>>2];t[u+28>>2]=t[w+28>>2];ni(e,u,n)}else{t[d>>2]=t[w>>2];t[d+4>>2]=t[w+4>>2];t[d+8>>2]=t[w+8>>2];t[d+12>>2]=t[w+12>>2];w=d+32|0;t[w>>2]=t[k>>2];t[w+4>>2]=t[k+4>>2];t[w+8>>2]=t[k+8>>2];t[w+12>>2]=t[k+12>>2];c[d+16>>3]=+c[w>>3];c[d+24>>3]=+c[d+8>>3];c[d+48>>3]=+c[d>>3];c[d+56>>3]=+c[d+40>>3];lN(e,d,4,r,n)}iR(e,A,b);G2(t[v>>2]|0);if(p){if(t[e+152>>2]&4|0)Tr(e,t[m>>2]|0,t[g+228>>2]|0,t[g+244>>2]|0,t[g+212>>2]|0);Or(e)}h=E;return}function iR(e,A,r){e=e|0;A=A|0;r=r|0;var a=0,n=0,f=0,l=0,s=0,o=0,u=0,b=0,w=0,k=0,d=0,v=0,g=0,m=0;m=h;h=h+144|0;w=m+128|0;b=m+112|0;k=m+16|0;d=m;n=m+96|0;f=m+80|0;v=m+64|0;g=m+48|0;l=r+52|0;a=t[l>>2]|0;if(!a)a=A+16|0;else{u=a+56|0;o=r+16|0;a=r+32|0;t[b>>2]=t[o>>2];t[b+4>>2]=t[o+4>>2];t[b+8>>2]=t[o+8>>2];t[b+12>>2]=t[o+12>>2];t[w>>2]=t[a>>2];t[w+4>>2]=t[a+4>>2];t[w+8>>2]=t[a+8>>2];t[w+12>>2]=t[a+12>>2];aR(n,b,w);a=A+16|0;o=(t[a>>2]|0)+16|0;t[b>>2]=t[n>>2];t[b+4>>2]=t[n+4>>2];t[b+8>>2]=t[n+8>>2];t[b+12>>2]=t[n+12>>2];t[w>>2]=t[o>>2];t[w+4>>2]=t[o+4>>2];t[w+8>>2]=t[o+8>>2];t[w+12>>2]=t[o+12>>2];RN(f,b,w);t[u>>2]=t[f>>2];t[u+4>>2]=t[f+4>>2];t[u+8>>2]=t[f+8>>2];t[u+12>>2]=t[f+12>>2];jF(e,10,t[l>>2]|0);VN(e,A)|0}s=(t[a>>2]|0)+16|0;t[d>>2]=t[s>>2];t[d+4>>2]=t[s+4>>2];t[d+8>>2]=t[s+8>>2];t[d+12>>2]=t[s+12>>2];s=r+48|0;o=r+64|0;u=k+16|0;l=r+56|0;r=k+16|0;f=0;while(1){if((f|0)>=(t[s>>2]|0))break;if((f|0)>0){a=(t[l>>2]|0)+(f<<2)|0;n=t[a>>2]|0;if(!(i[o>>0]|0)){n=n+32|0;t[u>>2]=t[n>>2];t[u+4>>2]=t[n+4>>2];t[u+8>>2]=t[n+8>>2];t[u+12>>2]=t[n+12>>2];c[k>>3]=+c[(t[a>>2]|0)+16>>3];a=u;n=0}else{n=n+16|0;t[k>>2]=t[n>>2];t[k+4>>2]=t[n+4>>2];t[k+8>>2]=t[n+8>>2];t[k+12>>2]=t[n+12>>2];c[r>>3]=+c[k>>3];a=(t[a>>2]|0)+32|0;n=1}c[k+(n<<4)+8>>3]=+c[a+8>>3];t[b>>2]=t[k>>2];t[b+4>>2]=t[k+4>>2];t[b+8>>2]=t[k+8>>2];t[b+12>>2]=t[k+12>>2];t[w>>2]=t[d>>2];t[w+4>>2]=t[d+4>>2];t[w+8>>2]=t[d+8>>2];t[w+12>>2]=t[d+12>>2];RN(v,b,w);t[k>>2]=t[v>>2];t[k+4>>2]=t[v+4>>2];t[k+8>>2]=t[v+8>>2];t[k+12>>2]=t[v+12>>2];t[b>>2]=t[u>>2];t[b+4>>2]=t[u+4>>2];t[b+8>>2]=t[u+8>>2];t[b+12>>2]=t[u+12>>2];t[w>>2]=t[d>>2];t[w+4>>2]=t[d+4>>2];t[w+8>>2]=t[d+8>>2];t[w+12>>2]=t[d+12>>2];RN(g,b,w);t[u>>2]=t[g>>2];t[u+4>>2]=t[g+4>>2];t[u+8>>2]=t[g+8>>2];t[u+12>>2]=t[g+12>>2];li(e,k,2)}iR(e,A,t[(t[l>>2]|0)+(f<<2)>>2]|0);f=f+1|0}h=m;return}function aR(e,A,r){e=e|0;A=A|0;r=r|0;var i=0.0;i=(+c[r+8>>3]+ +c[A+8>>3])*.5;c[e>>3]=(+c[r>>3]+ +c[A>>3])*.5;c[e+8>>3]=i;return}function tR(e,A){e=e|0;A=A|0;var r=0,a=0,n=0;r=t[e+60>>2]|0;if(!(((r|0)!=0?(i[r>>0]|0)==(i[A>>0]|0):0)?(e1(r,A)|0)==0:0))a=4;e:do{if((a|0)==4){n=e+56|0;a=t[e+48>>2]|0;r=0;while(1){if((r|0)>=(a|0)){e=0;break e}e=tR(t[(t[n>>2]|0)+(r<<2)>>2]|0,A)|0;if(!e)r=r+1|0;else break}}}while(0);return e|0}function nR(e,A){e=e|0;A=A|0;var r=0;r=A+8|0;c[r>>3]=+c[r>>3]*1.375;t[e>>2]=t[A>>2];t[e+4>>2]=t[A+4>>2];t[e+8>>2]=t[A+8>>2];t[e+12>>2]=t[A+12>>2];return}function fR(e,A){e=e|0;A=A|0;var r=0,i=0.0,a=0.0,n=0.0,f=0.0,l=0.0,s=0.0,o=0.0,u=0.0;s=+c[A>>3];a=s*.5;u=+c[A+8>>3];f=u*.5;c[e>>3]=a;i=u*.40909090909090906;c[e+8>>3]=i;c[e+16>>3]=a;n=u*.4592530909090909;c[e+24>>3]=n;l=s*.275892;c[e+32>>3]=l;c[e+40>>3]=f;c[e+48>>3]=0.0;c[e+56>>3]=f;s=s*-.275892;c[e+64>>3]=s;c[e+72>>3]=f;o=-a;c[e+80>>3]=o;c[e+88>>3]=n;r=e+96|0;c[r>>3]=o;c[e+104>>3]=i;A=e+112|0;t[A>>2]=t[r>>2];t[A+4>>2]=t[r+4>>2];t[A+8>>2]=t[r+8>>2];t[A+12>>2]=t[r+12>>2];A=e+128|0;c[A>>3]=o;c[e+136>>3]=u*-.40909090909090906;r=e+144|0;t[r>>2]=t[A>>2];t[r+4>>2]=t[A+4>>2];t[r+8>>2]=t[A+8>>2];t[r+12>>2]=t[A+12>>2];c[e+160>>3]=o;n=-n;c[e+168>>3]=n;c[e+176>>3]=s;f=-f;c[e+184>>3]=f;c[e+192>>3]=0.0;c[e+200>>3]=f;c[e+208>>3]=l;c[e+216>>3]=f;c[e+224>>3]=a;c[e+232>>3]=n;r=e+240|0;c[r>>3]=a;c[e+248>>3]=-i;A=e+256|0;t[A>>2]=t[r>>2];t[A+4>>2]=t[r+4>>2];t[A+8>>2]=t[r+8>>2];t[A+12>>2]=t[r+12>>2];A=e+288|0;r=e+272|0;t[r>>2]=t[e>>2];t[r+4>>2]=t[e+4>>2];t[r+8>>2]=t[e+8>>2];t[r+12>>2]=t[e+12>>2];t[A>>2]=t[e>>2];t[A+4>>2]=t[e+4>>2];t[A+8>>2]=t[e+8>>2];t[A+12>>2]=t[e+12>>2];return}function lR(e,A){e=e|0;A=A|0;var r=0.0,i=0.0,a=0.0,n=0,f=0.0,l=0,s=0,o=0,u=0,b=0,w=0.0,k=0,d=0,v=0,g=0,m=0,p=0,E=0,B=0;B=h;h=h+144|0;m=B+112|0;g=B+96|0;p=B+80|0;v=B+64|0;E=B+32|0;k=B+16|0;d=B;n=B+48|0;do{if(e){l=t[e+4>>2]|0;s=t[e>>2]|0;b=(t[(t[(Bd(s)|0)+16>>2]|0)+116>>2]&3)*90|0;t[m>>2]=t[A>>2];t[m+4>>2]=t[A+4>>2];t[m+8>>2]=t[A+8>>2];t[m+12>>2]=t[A+12>>2];LF(n,m,b);t[E>>2]=t[n>>2];t[E+4>>2]=t[n+4>>2];t[E+8>>2]=t[n+8>>2];t[E+12>>2]=t[n+12>>2];if(l|0){r=+c[E>>3];if(!(+c[l>>3]<=r)){e=0;break}if(!(r<=+c[l+16>>3])){e=0;break}r=+c[E+8>>3];if(!(+c[l+8>>3]<=r)){e=0;break}e=r<=+c[l+24>>3];break}if((s|0)==(t[47292]|0)){r=+c[23309];i=+c[23310];f=+c[23311]}else{e=s+16|0;A=t[(t[e>>2]|0)+12>>2]|0;t[47293]=A;t[47294]=t[A+44>>2];t[47295]=t[A+8>>2];if(!(t[A+40>>2]&2048)){u=(t[(t[(Bd(s)|0)+16>>2]|0)+116>>2]&1|0)==0;b=t[e>>2]|0;c[(u?186496:186504)>>3]=+c[b+96>>3]+ +c[b+88>>3];c[(u?186504:186496)>>3]=+c[b+80>>3];f=+c[b+32>>3]*72.0;a=+c[b+40>>3]*72.0;a=+(~~(a+(a>=0.0?.5:-.5))|0);f=+(~~(f+(f>=0.0?.5:-.5))|0)}else{Jx(m,A);f=+c[m+16>>3]-+c[m>>3];a=+c[m+24>>3]-+c[m+8>>3];b=(t[(t[(Bd(s)|0)+16>>2]|0)+116>>2]&1|0)==0;c[(b?186496:186504)>>3]=f;c[(b?186504:186496)>>3]=a}r=+c[23312];if(r==0.0){c[23312]=1.0;r=1.0}i=+c[23313];if(i==0.0){c[23313]=1.0;i=1.0}r=f/r;c[23309]=r;i=a/i;c[23310]=i;f=f*.5;c[23311]=f;c[23314]=a*.5;b=P((t[(t[47293]|0)+4>>2]|0)+-1|0,t[47295]|0)|0;t[47296]=(b|0)>0?b:0;t[47292]=s}a=+c[E>>3]*r;c[E>>3]=a;b=E+8|0;r=+c[b>>3]*i;c[b>>3]=r;if(!(+Q(+a)>f)?(i=+Q(+r),w=+c[23314],!(i>w)):0){b=t[47295]|0;if((b|0)<3){e=+g1(a/f,r/w)<1.0;break}A=(t[47297]|0)%(b|0)|0;e=(A+1|0)%(b|0)|0;s=t[47294]|0;o=t[47296]|0;u=s+(o+A<<4)|0;t[k>>2]=t[u>>2];t[k+4>>2]=t[u+4>>2];t[k+8>>2]=t[u+8>>2];t[k+12>>2]=t[u+12>>2];u=s+(o+e<<4)|0;t[d>>2]=t[u>>2];t[d+4>>2]=t[u+4>>2];t[d+8>>2]=t[u+8>>2];t[d+12>>2]=t[u+12>>2];t[v>>2]=t[E>>2];t[v+4>>2]=t[E+4>>2];t[v+8>>2]=t[E+8>>2];t[v+12>>2]=t[E+12>>2];t[p>>2]=t[46630];t[p+4>>2]=t[46631];t[p+8>>2]=t[46632];t[p+12>>2]=t[46633];t[g>>2]=t[k>>2];t[g+4>>2]=t[k+4>>2];t[g+8>>2]=t[k+8>>2];t[g+12>>2]=t[k+12>>2];t[m>>2]=t[u>>2];t[m+4>>2]=t[u+4>>2];t[m+8>>2]=t[u+8>>2];t[m+12>>2]=t[u+12>>2];if(XN(v,p,g,m)|0){t[v>>2]=t[E>>2];t[v+4>>2]=t[E+4>>2];t[v+8>>2]=t[E+8>>2];t[v+12>>2]=t[E+12>>2];t[p>>2]=t[k>>2];t[p+4>>2]=t[k+4>>2];t[p+8>>2]=t[k+8>>2];t[p+12>>2]=t[k+12>>2];t[g>>2]=t[d>>2];t[g+4>>2]=t[d+4>>2];t[g+8>>2]=t[d+8>>2];t[g+12>>2]=t[d+12>>2];t[m>>2]=t[46630];t[m+4>>2]=t[46631];t[m+8>>2]=t[46632];t[m+12>>2]=t[46633];u=(XN(v,p,g,m)|0)!=0;if(u?(t[v>>2]=t[E>>2],t[v+4>>2]=t[E+4>>2],t[v+8>>2]=t[E+8>>2],t[v+12>>2]=t[E+12>>2],t[p>>2]=t[d>>2],t[p+4>>2]=t[d+4>>2],t[p+8>>2]=t[d+8>>2],t[p+12>>2]=t[d+12>>2],t[g>>2]=t[46630],t[g+4>>2]=t[46631],t[g+8>>2]=t[46632],t[g+12>>2]=t[46633],t[m>>2]=t[k>>2],t[m+4>>2]=t[k+4>>2],t[m+8>>2]=t[k+8>>2],t[m+12>>2]=t[k+12>>2],(XN(v,p,g,m)|0)!=0):0){e=1;break}else{l=A;A=1}while(1){if((A|0)>=(b|0)){A=31;break}if(u){n=e;e=(e+1|0)%(b|0)|0}else{n=(l+-1+b|0)%(b|0)|0;e=l}k=s+(o+n<<4)|0;d=s+(o+e<<4)|0;t[v>>2]=t[E>>2];t[v+4>>2]=t[E+4>>2];t[v+8>>2]=t[E+8>>2];t[v+12>>2]=t[E+12>>2];t[p>>2]=t[46630];t[p+4>>2]=t[46631];t[p+8>>2]=t[46632];t[p+12>>2]=t[46633];t[g>>2]=t[k>>2];t[g+4>>2]=t[k+4>>2];t[g+8>>2]=t[k+8>>2];t[g+12>>2]=t[k+12>>2];t[m>>2]=t[d>>2];t[m+4>>2]=t[d+4>>2];t[m+8>>2]=t[d+8>>2];t[m+12>>2]=t[d+12>>2];if(!(XN(v,p,g,m)|0)){A=30;break}else{l=n;A=A+1|0}}if((A|0)==30){t[47297]=n;e=0;break}else if((A|0)==31){t[47297]=l;e=1;break}}else e=0}else e=0}else{t[47292]=0;e=0}}while(0);h=B;return e&1|0}function sR(e,A){e=e|0;A=A|0;var r=0.0,i=0.0,a=0,n=0.0,f=0,l=0,s=0;l=h;h=h+32|0;a=l+16|0;f=l;if(e){e=t[e>>2]|0;s=(t[(t[(Bd(e)|0)+16>>2]|0)+116>>2]&3)*90|0;t[a>>2]=t[A>>2];t[a+4>>2]=t[A+4>>2];t[a+8>>2]=t[A+8>>2];t[a+12>>2]=t[A+12>>2];LF(f,a,s);n=+c[f>>3];i=+c[f+8>>3];if((e|0)==(t[47300]|0))r=+c[23317];else{f=t[(t[e+16>>2]|0)+12>>2]|0;s=(t[f+4>>2]<<1)+-2|0;r=+c[(t[f+44>>2]|0)+((((s|0)>0?s:0)|1)<<4)>>3];c[23317]=r;t[47300]=e}if(+Q(+n)>r|+Q(+i)>r)e=0;else e=+g1(n,i)<=r&1}else{t[47300]=0;e=0}h=l;return e|0}function cR(e,A){e=e|0;A=A|0;var r=0,f=0,l=0,s=0,o=0,u=0,b=0,w=0,k=0,d=0,v=0,g=0,m=0.0,p=0,E=0;g=h;h=h+16|0;l=g;d=t[e+16>>2]|0;v=d+208|0;r=t[v>>2]|0;if((r|0)==0?(a[d+260>>1]&1)==0:0)k=0;else if(!(t[e+152>>2]&4)){Tr(e,r,t[d+228>>2]|0,t[d+244>>2]|0,t[d+212>>2]|0);k=1}else k=1;u=A+16|0;s=t[(t[u>>2]|0)+12>>2]|0;b=t[s+44>>2]|0;w=t[s+8>>2]|0;s=t[s+4>>2]|0;if((t[47298]|0)<(w|0)){r=w+2|0;t[47298]=r;f=t[47299]|0;if(!f)r=$F(r<<4)|0;else r=AM(f,r<<4)|0;t[47299]=r}JN(A,l)|0;if(!(t[l>>2]&32))ii(e,22020);else ii(e,22016);r=t[47172]|0;if(r|0)ui(e,+wx(A,r,1.0,0.0));r=n[(t[u>>2]|0)+117>>0]|0;do{if(!(r&1)){if(r&2|0){$r(e,vx(A,0,106256)|0);r=vx(A,0,106264)|0;Ai(e,r);break}if(r&8|0){$r(e,vx(A,0,106272)|0);r=vx(A,0,106280)|0;Ai(e,r);break}if(!(r&4)){r=xN(A,137314)|0;Ai(e,r);VN(e,A)|0;break}else{$r(e,vx(A,0,106288)|0);r=vx(A,0,106296)|0;Ai(e,r);break}}else{$r(e,vx(A,0,106240)|0);r=vx(A,0,106248)|0;Ai(e,r)}}while(0);if(!s)if(!(i[r>>0]|0))f=1;else{$r(e,r);f=1}else f=s;l=1;A=0;while(1){if((A|0)>=(f|0))break;s=P(A,w)|0;o=t[47299]|0;r=0;while(1){if((r|0)>=(w|0))break;E=r+s|0;m=+c[b+(E<<4)+8>>3];p=t[u>>2]|0;c[o+(r<<4)>>3]=+c[p+16>>3]+ +c[b+(E<<4)>>3];c[o+(r<<4)+8>>3]=+c[p+24>>3]+m;r=r+1|0}ai(e,o,w,l);l=0;A=A+1|0}if(k){if(t[e+152>>2]&4|0)Tr(e,t[v>>2]|0,t[d+228>>2]|0,t[d+244>>2]|0,t[d+212>>2]|0);Or(e)}h=g;return}function oR(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0,f=0;a=h;h=h+48|0;f=a;r=uR(A,r,i)|0;t[f+36>>2]=t[i+36>>2];SN(A,t[i+24>>2]|0,f,r,n[i+33>>0]|0,0)|0;A=f;r=e+40|0;do{t[e>>2]=t[A>>2];e=e+4|0;A=A+4|0}while((e|0)<(r|0));h=a;return}function uR(e,A,r){e=e|0;A=A|0;r=r|0;var a=0,n=0,f=0.0,l=0.0,s=0,o=0.0,u=0.0,b=0,w=0,k=0,d=0,v=0,g=0,m=0,p=0,E=0,B=0,y=0,C=0,I=0.0,Z=0.0,G=0;C=h;h=h+32|0;y=C;n=C+24|0;s=C+16|0;B=t[(t[(t[(Bd(e)|0)+60>>2]|0)+16>>2]|0)+116>>2]&3;a=e+16|0;E=(t[a>>2]|0)+16|0;t[y>>2]=t[E>>2];t[y+4>>2]=t[E+4>>2];t[y+8>>2]=t[E+8>>2];t[y+12>>2]=t[E+12>>2];bR(n,y,B);E=(t[A+16>>2]|0)+16|0;t[y>>2]=t[E>>2];t[y+4>>2]=t[E+4>>2];t[y+8>>2]=t[E+8>>2];t[y+12>>2]=t[E+12>>2];bR(s,y,B);B=i[r+33>>0]|0;y=B&255;e:do{switch(B<<24>>24){case 0:case 15:{A=0;break}default:{A=t[r+24>>2]|0;if(!A){B=(t[(t[(Bd(e)|0)+16>>2]|0)+116>>2]&1|0)==0;E=t[a>>2]|0;Z=+c[E+80>>3]*.5;I=-Z;o=+c[E+88>>3];l=-o;u=B?l:I;f=B?o:Z;o=B?Z:o;l=B?I:l}else{u=+c[A>>3];f=+c[A+16>>3];o=+c[A+24>>3];l=+c[A+8>>3]}B=t[n>>2]|0;p=t[n+4>>2]|0;E=t[s>>2]|0;v=t[s+4>>2]|0;g=~~l;m=~~((f+u)*.5);d=~~f;k=~~((o+l)*.5);w=~~o;b=~~u;n=0;s=0;A=0;r=0;e=0;while(1){if((s|0)==4)break e;if(1<>2]|0;else a=n}else a=n;n=a;s=s+1|0}}}}while(0);h=C;return A|0}function bR(e,A,r){e=e|0;A=A|0;r=r|0;var i=0.0,a=0.0;switch(r|0){case 0:{a=+c[A>>3];i=+c[A+8>>3];break}case 2:{a=+c[A>>3];i=-+c[A+8>>3];break}case 1:{a=-+c[A+8>>3];i=+c[A>>3];break}case 3:{a=+c[A+8>>3];i=+c[A>>3];break}default:{a=0.0;i=0.0}}t[e>>2]=~~(a+(a>=0.0?.5:-.5));t[e+4>>2]=~~(i+(i>=0.0?.5:-.5));return}function hR(e){e=e|0;var A=0,r=0,a=0,n=0,f=0,l=0;l=h;h=h+80|0;a=l+40|0;f=l;n=e+16|0;r=t[n>>2]|0;A=r+16|0;if(i[r+47>>0]|0){r=t[e>>2]&3;oR(a,t[((r|0)==3?e:e+48|0)+40>>2]|0,t[((r|0)==2?e:e+-48|0)+40>>2]|0,A);r=a;a=A+40|0;do{t[A>>2]=t[r>>2];A=A+4|0;r=r+4|0}while((A|0)<(a|0));r=t[n>>2]|0}A=r+56|0;if(i[r+87>>0]|0){r=t[e>>2]&3;oR(f,t[((r|0)==2?e:e+-48|0)+40>>2]|0,t[((r|0)==3?e:e+48|0)+40>>2]|0,A);r=f;a=A+40|0;do{t[A>>2]=t[r>>2];A=A+4|0;r=r+4|0}while((A|0)<(a|0))}h=l;return}function wR(){var e=0,A=0,r=0;e=h;h=h+32|0;A=e+16|0;r=e;t[r>>2]=0;t[r+4>>2]=0;t[r+8>>2]=0;t[r+12>>2]=0;t[A>>2]=t[r>>2];t[A+4>>2]=t[r+4>>2];t[A+8>>2]=t[r+8>>2];t[A+12>>2]=t[r+12>>2];lR(0,A)|0;t[A>>2]=t[r>>2];t[A+4>>2]=t[r+4>>2];t[A+8>>2]=t[r+8>>2];t[A+12>>2]=t[r+12>>2];sR(0,A)|0;t[A>>2]=t[r>>2];t[A+4>>2]=t[r+4>>2];t[A+8>>2]=t[r+8>>2];t[A+12>>2]=t[r+12>>2];zN(0,A)|0;h=e;return}function kR(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0.0,n=0.0,f=0.0,l=0,s=0,o=0,u=0,b=0,w=0.0,k=0,d=0.0,v=0,g=0,m=0,p=0,E=0,B=0,y=0,C=0,I=0;C=h;h=h+192|0;v=C+176|0;B=C+112|0;y=C+48|0;g=C+32|0;m=C+24|0;p=C+16|0;E=C;if(!(i<<24>>24)){s=r+48|0;t[g>>2]=t[s>>2];t[g+4>>2]=t[s+4>>2];t[g+8>>2]=t[s+8>>2];t[g+12>>2]=t[s+12>>2];s=m;o=p;u=B;b=0}else{t[g>>2]=t[r>>2];t[g+4>>2]=t[r+4>>2];t[g+8>>2]=t[r+8>>2];t[g+12>>2]=t[r+12>>2];s=p;o=m;u=0;b=B}c[m>>3]=0.0;c[p>>3]=1.0;k=g+8|0;a=0.0;n=1.0;l=0;w=+c[g>>3];while(1){d=+c[k>>3];a=(a+n)*.5;Zx(E,r,3,a,u,b);t[g>>2]=t[E>>2];t[g+4>>2]=t[E+4>>2];t[g+8>>2]=t[E+8>>2];t[g+12>>2]=t[E+12>>2];t[v>>2]=t[E>>2];t[v+4>>2]=t[E+4>>2];t[v+8>>2]=t[E+8>>2];t[v+12>>2]=t[E+12>>2];e:do{if(!((Z5[A&127](e,v)|0)<<24>>24)){i=0;while(1){if((i|0)==4){i=s;l=1;break e}l=y+(i<<4)|0;I=B+(i<<4)|0;t[l>>2]=t[I>>2];t[l+4>>2]=t[I+4>>2];t[l+8>>2]=t[I+8>>2];t[l+12>>2]=t[I+12>>2];i=i+1|0}}else i=o}while(0);c[i>>3]=a;f=+c[g>>3];w=w-f;if(!((w>=0.0?w:-w)>.5)?(d=d-+c[k>>3],!((d>=0.0?d:-d)>.5)):0)break;a=+c[m>>3];n=+c[p>>3];w=f}e:do{if(!(l<<24>>24)){i=0;while(1){if((i|0)==4)break e;I=r+(i<<4)|0;y=B+(i<<4)|0;t[I>>2]=t[y>>2];t[I+4>>2]=t[y+4>>2];t[I+8>>2]=t[y+8>>2];t[I+12>>2]=t[y+12>>2];i=i+1|0}}else{i=0;while(1){if((i|0)==4)break e;I=r+(i<<4)|0;B=y+(i<<4)|0;t[I>>2]=t[B>>2];t[I+4>>2]=t[B+4>>2];t[I+8>>2]=t[B+8>>2];t[I+12>>2]=t[B+12>>2];i=i+1|0}}}while(0);h=C;return}function dR(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0,f=0,l=0,s=0,o=0,u=0.0;o=h;h=h+48|0;r=o+16|0;i=o;a=o+32|0;n=e+16|0;f=t[n>>2]|0;l=t[f+8>>2]|0;if(l|0?(s=l+4|0,t[(t[s>>2]|0)+12>>2]|0):0){t[a>>2]=e;t[a+4>>2]=0;u=+c[f+96>>3];c[i>>3]=+c[A>>3]-+c[f+16>>3];c[i+8>>3]=+c[A+8>>3]-+c[f+24>>3];s=t[(t[s>>2]|0)+12>>2]|0;t[r>>2]=t[i>>2];t[r+4>>2]=t[i+4>>2];t[r+8>>2]=t[i+8>>2];t[r+12>>2]=t[i+12>>2];s=Z5[s&127](a,r)|0;c[(t[n>>2]|0)+96>>3]=u;vR(a,e,A,s)}h=o;return}function vR(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0,n=0,f=0,l=0,s=0.0,o=0,u=0;u=h;h=h+64|0;o=u;l=A+16|0;n=t[l>>2]|0;s=+c[n+96>>3];f=n+16|0;a=n+24|0;A=0;while(1){if((A|0)==4)break;c[o+(A<<4)>>3]=+c[r+(A<<4)>>3]-+c[f>>3];c[o+(A<<4)+8>>3]=+c[r+(A<<4)+8>>3]-+c[a>>3];A=A+1|0}kR(e,t[(t[(t[n+8>>2]|0)+4>>2]|0)+12>>2]|0,o,i);A=0;while(1){if((A|0)==4)break;i=t[l>>2]|0;c[r+(A<<4)>>3]=+c[i+16>>3]+ +c[o+(A<<4)>>3];c[r+(A<<4)+8>>3]=+c[i+24>>3]+ +c[o+(A<<4)+8>>3];A=A+1|0}c[(t[l>>2]|0)+96>>3]=s;h=u;return}function gR(e,A){e=e|0;A=A|0;var r=0,a=0;while(1){a=e+16|0;e=t[a>>2]|0;if(!(i[e+112>>0]|0))break;e=t[e+116>>2]|0}e=t[e+8>>2]|0;if(!e){e=KF(40)|0;t[(t[a>>2]|0)+8>>2]=e}r=t[e>>2]|0;if(!r)e=$F(((t[e+4>>2]|0)*48|0)+48|0)|0;else e=AM(r,((t[e+4>>2]|0)*48|0)+48|0)|0;a=t[(t[a>>2]|0)+8>>2]|0;t[a>>2]=e;a=a+4|0;r=t[a>>2]|0;t[a>>2]=r+1;a=e+(r*48|0)|0;t[a>>2]=KF(A<<4)|0;t[e+(r*48|0)+4>>2]=A;e=e+(r*48|0)+8|0;r=e+40|0;do{t[e>>2]=0;e=e+4|0}while((e|0)<(r|0));return a|0}function mR(e,A,r,a,f){e=e|0;A=A|0;r=r|0;a=a|0;f=f|0;var l=0,s=0,o=0,u=0,b=0,w=0,k=0,d=0,v=0,g=0,m=0,p=0,E=0,B=0,y=0,C=0,I=0,Z=0,G=0,L=0,Q=0.0,D=0.0;L=h;h=h+96|0;I=L+16|0;m=L;B=L+92|0;y=L+88|0;p=L+80|0;o=t[((t[e>>2]&3|0)==3?e:e+48|0)+40>>2]|0;C=Bd(o)|0;Z=gR(e,a)|0;u=e;while(1){b=t[u+16>>2]|0;if(!(i[b+112>>0]|0))break;u=t[b+116>>2]|0}if((i[f+8>>0]|0)==0?(l=t[o+16>>2]|0,s=t[A+16>>2]|0,(t[l+232>>2]|0)==(t[s+232>>2]|0)):0){w=(t[l+236>>2]|0)>(t[s+236>>2]|0);E=w?o:A;o=w?A:o}else E=A;if((o|0)==(t[((t[u>>2]&3|0)==3?u:u+48|0)+40>>2]|0)){l=b+80|0;s=b+40|0;w=n[b+86>>0]|0;A=n[b+46>>0]|0}else{l=b+40|0;s=b+80|0;w=n[b+46>>0]|0;A=n[b+86>>0]|0}b=t[l>>2]|0;l=t[s>>2]|0;if(((A|0)!=0?(d=o+16|0,k=t[(t[d>>2]|0)+8>>2]|0,(k|0)!=0):0)?(t[(t[k+4>>2]|0)+12>>2]|0)!=0:0){t[p>>2]=o;t[p+4>>2]=l;l=a+-4|0;A=m+8|0;s=0;while(1){if((s|0)>=(l|0))break;u=s+3|0;k=t[d>>2]|0;c[m>>3]=+c[r+(u<<4)>>3]-+c[k+16>>3];c[A>>3]=+c[r+(u<<4)+8>>3]-+c[k+24>>3];k=t[(t[(t[k+8>>2]|0)+4>>2]|0)+12>>2]|0;t[I>>2]=t[m>>2];t[I+4>>2]=t[m+4>>2];t[I+8>>2]=t[m+8>>2];t[I+12>>2]=t[m+12>>2];if(!((Z5[k&127](p,I)|0)<<24>>24))break;else s=u}t[B>>2]=s;vR(p,o,r+(s<<4)|0,1)}else{t[B>>2]=0;s=0}if(((w|0)!=0?(g=E+16|0,v=t[(t[g>>2]|0)+8>>2]|0,(v|0)!=0):0)?(t[(t[v+4>>2]|0)+12>>2]|0)!=0:0){t[p>>2]=E;t[p+4>>2]=b;o=a+-4|0;A=m+8|0;l=o;while(1){if((l|0)<=0)break;a=t[g>>2]|0;c[m>>3]=+c[r+(l<<4)>>3]-+c[a+16>>3];c[A>>3]=+c[r+(l<<4)+8>>3]-+c[a+24>>3];a=t[(t[(t[a+8>>2]|0)+4>>2]|0)+12>>2]|0;t[I>>2]=t[m>>2];t[I+4>>2]=t[m+4>>2];t[I+8>>2]=t[m+8>>2];t[I+12>>2]=t[m+12>>2];if(!((Z5[a&127](p,I)|0)<<24>>24))break;l=l+-3|0}t[y>>2]=l;vR(p,E,r+(l<<4)|0,0)}else{o=a+-4|0;t[y>>2]=o;l=o}while(1){if((s|0)>=(o|0))break;A=s+3|0;Q=+c[r+(s<<4)>>3]-+c[r+(A<<4)>>3];D=+c[r+(s<<4)+8>>3]-+c[r+(A<<4)+8>>3];if(D*D+Q*Q<1.0e-06)s=A;else break}t[B>>2]=s;while(1){if((l|0)<=0)break;p=l+3|0;D=+c[r+(l<<4)>>3]-+c[r+(p<<4)>>3];Q=+c[r+(l<<4)+8>>3]-+c[r+(p<<4)+8>>3];if(!(Q*Q+D*D<1.0e-06))break;l=l+-3|0}t[y>>2]=l;pR(e,E,r,B,y,Z,f);d=t[B>>2]|0;u=t[y>>2]|0;o=u+4|0;u=u+3|0;b=I+16|0;w=I+32|0;k=I+48|0;s=C+16|0;l=d;while(1){if((l|0)>=(o|0))break;C=(t[Z>>2]|0)+(l-d<<4)|0;A=r+(l<<4)|0;t[C>>2]=t[A>>2];t[C+4>>2]=t[A+4>>2];t[C+8>>2]=t[A+8>>2];t[C+12>>2]=t[A+12>>2];t[I>>2]=t[A>>2];t[I+4>>2]=t[A+4>>2];t[I+8>>2]=t[A+8>>2];t[I+12>>2]=t[A+12>>2];A=l+1|0;if((l|0)>=(u|0)){G=38;break}y=(t[Z>>2]|0)+(A-d<<4)|0;C=r+(A<<4)|0;t[y>>2]=t[C>>2];t[y+4>>2]=t[C+4>>2];t[y+8>>2]=t[C+8>>2];t[y+12>>2]=t[C+12>>2];t[b>>2]=t[C>>2];t[b+4>>2]=t[C+4>>2];t[b+8>>2]=t[C+8>>2];t[b+12>>2]=t[C+12>>2];C=l+2|0;y=(t[Z>>2]|0)+(C-d<<4)|0;C=r+(C<<4)|0;t[y>>2]=t[C>>2];t[y+4>>2]=t[C+4>>2];t[y+8>>2]=t[C+8>>2];t[y+12>>2]=t[C+12>>2];t[w>>2]=t[C>>2];t[w+4>>2]=t[C+4>>2];t[w+8>>2]=t[C+8>>2];t[w+12>>2]=t[C+12>>2];C=l+3|0;y=r+(C<<4)|0;t[k>>2]=t[y>>2];t[k+4>>2]=t[y+4>>2];t[k+8>>2]=t[y+8>>2];t[k+12>>2]=t[y+12>>2];oB((t[s>>2]|0)+16|0,I);l=C}t[Z+4>>2]=o-d;h=L;return}function pR(e,A,r,a,n,f,l){e=e|0;A=A|0;r=r|0;a=a|0;n=n|0;f=f|0;l=l|0;var s=0,c=0,o=0,u=0,b=0,w=0;w=h;h=h+16|0;o=w+4|0;u=w;b=e;while(1){s=t[(t[b+16>>2]|0)+116>>2]|0;if(!s)break;else b=s}if(!(i[l+8>>0]|0))s=(I5[t[l>>2]&63](b)|0)&255;else s=0;WE(b,o,u);c=l+4|0;if((I5[t[c>>2]&63](A)|0)<<24>>24)t[u>>2]=0;if((I5[t[c>>2]&63](t[((t[e>>2]&3|0)==3?e:e+48|0)+40>>2]|0)|0)<<24>>24)t[o>>2]=0;if(s|0){A=t[o>>2]|0;t[o>>2]=t[u>>2];t[u>>2]=A}if(!(i[l+9>>0]|0)){s=t[o>>2]|0;if(s|0)t[a>>2]=TE(b,r,t[a>>2]|0,t[n>>2]|0,f,s)|0;s=t[u>>2]|0;if(s|0)t[n>>2]=jE(b,r,t[a>>2]|0,t[n>>2]|0,f,s)|0}else{c=t[u>>2]|0;s=t[o>>2]|0;if(s|c|0)OE(b,r,t[a>>2]|0,t[n>>2]|0,f,s,c)}h=w;return}function ER(e,A){e=e|0;A=A|0;var r=0,i=0;if(+c[A>>3]<+c[A+16>>3]?+c[A+8>>3]<+c[A+24>>3]:0){r=t[e+84>>2]|0;i=e+80|0;e=t[i>>2]|0;t[i>>2]=e+1;e=r+(e<<5)|0;t[e>>2]=t[A>>2];t[e+4>>2]=t[A+4>>2];t[e+8>>2]=t[A+8>>2];t[e+12>>2]=t[A+12>>2];t[e+16>>2]=t[A+16>>2];t[e+20>>2]=t[A+20>>2];t[e+24>>2]=t[A+24>>2];t[e+28>>2]=t[A+28>>2]}return}function BR(e,A,r,a,n){e=e|0;A=A|0;r=r|0;a=a|0;n=n|0;var f=0,l=0,s=0.0,o=0.0,u=0,b=0,w=0,k=0,d=0,v=0,g=0,m=0,p=0,E=0,B=0,y=0.0,C=0.0;B=h;h=h+112|0;m=B+72|0;b=B+56|0;u=B+16|0;k=B;l=t[A>>2]&3;w=A+48|0;E=t[((l|0)==3?A:w)+40>>2]|0;g=A+16|0;d=t[g>>2]|0;f=d+16|0;if(i[d+47>>0]|0){oR(u,E,t[((l|0)==2?A:A+-48|0)+40>>2]|0,f);l=u;u=f+40|0;do{t[f>>2]=t[l>>2];f=f+4|0;l=l+4|0}while((f|0)<(u|0))}d=E+16|0;l=t[d>>2]|0;f=t[l+8>>2]|0;if(!f)u=0;else u=t[(t[f+4>>2]|0)+16>>2]|0;f=l+16|0;l=(t[g>>2]|0)+16|0;t[b>>2]=t[f>>2];t[b+4>>2]=t[f+4>>2];t[b+8>>2]=t[f+8>>2];t[b+12>>2]=t[f+12>>2];t[m>>2]=t[l>>2];t[m+4>>2]=t[l+4>>2];t[m+8>>2]=t[l+8>>2];t[m+12>>2]=t[l+12>>2];yR(k,b,m);t[e>>2]=t[k>>2];t[e+4>>2]=t[k+4>>2];t[e+8>>2]=t[k+8>>2];t[e+12>>2]=t[k+12>>2];if(!(n<<24>>24)){f=t[g>>2]|0;if(!(i[f+45>>0]|0))f=0;else{s=+c[f+32>>3];p=9}}else{s=+CR(t[((t[A>>2]&3|0)==3?A:w)+40>>2]|0);p=9}if((p|0)==9){c[e+16>>3]=s;f=1}i[e+29>>0]=f;t[e+80>>2]=0;t[e+88>>2]=A;k=a+32|0;t[k>>2]=t[e>>2];t[k+4>>2]=t[e+4>>2];t[k+8>>2]=t[e+8>>2];t[k+12>>2]=t[e+12>>2];switch(r|0){case 1:{l=t[d>>2]|0;if((i[l+156>>0]|0)==0?(k=i[(t[g>>2]|0)+49>>0]|0,v=k&255,k<<24>>24!=0):0){t[m>>2]=t[a>>2];t[m+4>>2]=t[a+4>>2];t[m+8>>2]=t[a+8>>2];t[m+12>>2]=t[a+12>>2];t[m+16>>2]=t[a+16>>2];t[m+20>>2]=t[a+20>>2];t[m+24>>2]=t[a+24>>2];t[m+28>>2]=t[a+28>>2];do{if(!(v&4)){if(v&1|0){t[a+48>>2]=1;f=m+24|0;c[f>>3]=+c[(+c[f>>3]>+c[e+8>>3]?m+16|0:e)+8>>3];f=a+56|0;t[f>>2]=t[m>>2];t[f+4>>2]=t[m+4>>2];t[f+8>>2]=t[m+8>>2];t[f+12>>2]=t[m+12>>2];t[f+16>>2]=t[m+16>>2];t[f+20>>2]=t[m+20>>2];t[f+24>>2]=t[m+24>>2];t[f+28>>2]=t[m+28>>2];f=1;break}f=a+48|0;if(!(v&8)){t[f>>2]=2;c[m>>3]=+c[e>>3];c[m+8>>3]=+c[l+24>>3]-+c[l+80>>3]*.5;c[m+24>>3]=+c[e+8>>3];f=a+56|0;t[f>>2]=t[m>>2];t[f+4>>2]=t[m+4>>2];t[f+8>>2]=t[m+8>>2];t[f+12>>2]=t[m+12>>2];t[f+16>>2]=t[m+16>>2];t[f+20>>2]=t[m+20>>2];t[f+24>>2]=t[m+24>>2];t[f+28>>2]=t[m+28>>2];f=1;break}else{t[f>>2]=8;c[m+16>>3]=+c[e>>3];c[m+8>>3]=+c[l+24>>3]-+c[l+80>>3]*.5;c[m+24>>3]=+c[e+8>>3];f=a+56|0;t[f>>2]=t[m>>2];t[f+4>>2]=t[m+4>>2];t[f+8>>2]=t[m+8>>2];t[f+12>>2]=t[m+12>>2];t[f+16>>2]=t[m+16>>2];t[f+20>>2]=t[m+20>>2];t[f+24>>2]=t[m+24>>2];t[f+28>>2]=t[m+28>>2];f=1;break}}else{t[a+48>>2]=4;s=+c[m>>3];if(+c[e>>3]<+c[l+16>>3]){C=s+-1.0;y=+c[e+8>>3];e=m+16|0;s=+c[e>>3];o=+c[l+80>>3]*.5+ +c[l+24>>3];o=o+ +((t[(t[(Bd(E)|0)+16>>2]|0)+252>>2]|0)/2|0|0);f=t[d>>2]|0;c[e>>3]=+c[f+16>>3]-+c[f+88>>3];c[m+24>>3]=y;c[m+8>>3]=+c[f+24>>3]-+c[f+80>>3]*.5;c[m>>3]=C;c[a+56>>3]=C;c[a+64>>3]=y;c[a+72>>3]=s;c[a+80>>3]=o;f=a+88|0;t[f>>2]=t[m>>2];t[f+4>>2]=t[m+4>>2];t[f+8>>2]=t[m+8>>2];t[f+12>>2]=t[m+12>>2];t[f+16>>2]=t[m+16>>2];t[f+20>>2]=t[m+20>>2];t[f+24>>2]=t[m+24>>2];t[f+28>>2]=t[m+28>>2];f=2;break}else{o=+c[e+8>>3];f=m+16|0;y=+c[f>>3]+1.0;C=+c[l+80>>3]*.5+ +c[l+24>>3];C=C+ +((t[(t[(Bd(E)|0)+16>>2]|0)+252>>2]|0)/2|0|0);e=t[d>>2]|0;c[m>>3]=+c[e+96>>3]+ +c[e+16>>3];c[m+24>>3]=o;c[m+8>>3]=+c[e+24>>3]-+c[e+80>>3]*.5;c[f>>3]=y;c[a+56>>3]=s;c[a+64>>3]=o;c[a+72>>3]=y;c[a+80>>3]=C;f=a+88|0;t[f>>2]=t[m>>2];t[f+4>>2]=t[m+4>>2];t[f+8>>2]=t[m+8>>2];t[f+12>>2]=t[m+12>>2];t[f+16>>2]=t[m+16>>2];t[f+20>>2]=t[m+20>>2];t[f+24>>2]=t[m+24>>2];t[f+28>>2]=t[m+28>>2];f=2;break}}}while(0);t[a+52>>2]=f;while(1){f=t[A+16>>2]|0;if(!(i[f+112>>0]|0))break;A=t[f+116>>2]|0}i[((E|0)==(t[((t[A>>2]&3|0)==3?A:A+48|0)+40>>2]|0)?f+16|0:f+56|0)+30>>0]=0}else{l=1;p=47}break}case 2:{v=i[(t[g>>2]|0)+49>>0]|0;l=v&255;if(!(v<<24>>24))p=46;else{t[m>>2]=t[a>>2];t[m+4>>2]=t[a+4>>2];t[m+8>>2]=t[a+8>>2];t[m+12>>2]=t[a+12>>2];t[m+16>>2]=t[a+16>>2];t[m+20>>2]=t[a+20>>2];t[m+24>>2]=t[a+24>>2];t[m+28>>2]=t[a+28>>2];do{if(!(l&4)){if(l&1|0)if((t[a+48>>2]|0)==4){f=t[d>>2]|0;C=+c[f+24>>3]-+c[f+80>>3]*.5;f=m+16|0;y=+c[f>>3]+1.0;s=+c[e>>3];o=C-+((t[(t[(Bd(E)|0)+16>>2]|0)+252>>2]|0)/2|0|0);e=t[d>>2]|0;c[m>>3]=+c[e+96>>3]+ +c[e+16>>3];c[m+8>>3]=C;c[m+24>>3]=+c[e+80>>3]*.5+ +c[e+24>>3];c[f>>3]=y;c[a+56>>3]=s;c[a+64>>3]=o;c[a+72>>3]=y;c[a+80>>3]=C;f=a+88|0;t[f>>2]=t[m>>2];t[f+4>>2]=t[m+4>>2];t[f+8>>2]=t[m+8>>2];t[f+12>>2]=t[m+12>>2];t[f+16>>2]=t[m+16>>2];t[f+20>>2]=t[m+20>>2];t[f+24>>2]=t[m+24>>2];t[f+28>>2]=t[m+28>>2];f=2;break}else{f=m+24|0;c[f>>3]=+c[(+c[f>>3]>+c[e+8>>3]?m+16|0:e)+8>>3];f=a+56|0;t[f>>2]=t[m>>2];t[f+4>>2]=t[m+4>>2];t[f+8>>2]=t[m+8>>2];t[f+12>>2]=t[m+12>>2];t[f+16>>2]=t[m+16>>2];t[f+20>>2]=t[m+20>>2];t[f+24>>2]=t[m+24>>2];t[f+28>>2]=t[m+28>>2];f=1;break}s=+c[e>>3];if(!(l&8)){c[m>>3]=s;r=t[d>>2]|0;s=+c[r+24>>3];o=+c[r+80>>3]*.5;if((t[a+48>>2]|0)==4){c[m+24>>3]=o+s;s=+c[e+8>>3];f=m}else{c[m+8>>3]=s-o;s=+c[e+8>>3]+1.0;f=m+16|0}c[f+8>>3]=s;f=a+56|0;t[f>>2]=t[m>>2];t[f+4>>2]=t[m+4>>2];t[f+8>>2]=t[m+8>>2];t[f+12>>2]=t[m+12>>2];t[f+16>>2]=t[m+16>>2];t[f+20>>2]=t[m+20>>2];t[f+24>>2]=t[m+24>>2];t[f+28>>2]=t[m+28>>2];f=1;break}else{f=m+16|0;c[f>>3]=s+1.0;r=t[d>>2]|0;s=+c[r+24>>3];o=+c[r+80>>3]*.5;if((t[a+48>>2]|0)==4){c[m+24>>3]=o+s;s=+c[e+8>>3]+-1.0;f=m}else{c[m+8>>3]=s-o;s=+c[e+8>>3]+1.0}c[f+8>>3]=s;f=a+56|0;t[f>>2]=t[m>>2];t[f+4>>2]=t[m+4>>2];t[f+8>>2]=t[m+8>>2];t[f+12>>2]=t[m+12>>2];t[f+16>>2]=t[m+16>>2];t[f+20>>2]=t[m+20>>2];t[f+24>>2]=t[m+24>>2];t[f+28>>2]=t[m+28>>2];f=1;break}}else{f=m+8|0;c[f>>3]=+c[(+c[f>>3]<+c[e+8>>3]?m:e)+8>>3];f=a+56|0;t[f>>2]=t[m>>2];t[f+4>>2]=t[m+4>>2];t[f+8>>2]=t[m+8>>2];t[f+12>>2]=t[m+12>>2];t[f+16>>2]=t[m+16>>2];t[f+20>>2]=t[m+20>>2];t[f+24>>2]=t[m+24>>2];t[f+28>>2]=t[m+28>>2];f=1}}while(0);t[a+52>>2]=f;while(1){f=t[A+16>>2]|0;if(!(i[f+112>>0]|0))break;A=t[f+116>>2]|0}i[((E|0)==(t[((t[A>>2]&3|0)==3?A:A+48|0)+40>>2]|0)?f+16|0:f+56|0)+30>>0]=0;t[a+48>>2]=l}break}default:p=46}if((p|0)==46){l=t[a+48>>2]|0;p=47}e:do{if((p|0)==47){if(u){A=a+56|0;f=a+52|0;l=D5[u&127](E,(t[g>>2]|0)+16|0,l,A,f)|0;if(l){t[a+48>>2]=l;break}}else{f=a+52|0;A=a+56|0}t[A>>2]=t[a>>2];t[A+4>>2]=t[a+4>>2];t[A+8>>2]=t[a+8>>2];t[A+12>>2]=t[a+12>>2];t[A+16>>2]=t[a+16>>2];t[A+20>>2]=t[a+20>>2];t[A+24>>2]=t[a+24>>2];t[A+28>>2]=t[a+28>>2];t[f>>2]=1;switch(r|0){case 8:{ge(138394,106514,569,106524);break}case 2:{c[((t[a+48>>2]|0)==4?a+56|0:a+72|0)+8>>3]=+c[e+8>>3];break e}case 1:{c[a+80>>3]=+c[e+8>>3];t[a+48>>2]=1;break e}default:break e}}}while(0);h=B;return}function yR(e,A,r){e=e|0;A=A|0;r=r|0;var i=0.0;i=+c[r+8>>3]+ +c[A+8>>3];c[e>>3]=+c[r>>3]+ +c[A>>3];c[e+8>>3]=i;return}function CR(e){e=e|0;var A=0.0,r=0,i=0,a=0.0,n=0,f=0,l=0,s=0.0,o=0.0;f=t[e+16>>2]|0;l=t[f+172>>2]|0;a=0.0;n=0;while(1){e=t[l+(n<<2)>>2]|0;if(!e)break;a=+c[(t[(t[((t[e>>2]&3|0)==3?e:e+48|0)+40>>2]|0)+16>>2]|0)+16>>3]+a;n=n+1|0}i=t[f+180>>2]|0;A=0.0;e=0;while(1){r=t[i+(e<<2)>>2]|0;if(!r)break;A=+c[(t[(t[((t[r>>2]&3|0)==2?r:r+-48|0)+40>>2]|0)+16>>2]|0)+16>>3]+A;e=e+1|0}s=+c[f+16>>3];o=+c[f+24>>3];l=t[l>>2]|0;a=+R(+(o-+c[(t[(t[((t[l>>2]&3|0)==3?l:l+48|0)+40>>2]|0)+16>>2]|0)+24>>3]),+(s-a/+(n|0)));l=t[i>>2]|0;return+((+R(+(+c[(t[(t[((t[l>>2]&3|0)==2?l:l+-48|0)+40>>2]|0)+16>>2]|0)+24>>3]-o),+(A/+(e|0)-s))+a)*.5)}function IR(e,A,r,a,n){e=e|0;A=A|0;r=r|0;a=a|0;n=n|0;var f=0,l=0,s=0.0,o=0.0,u=0,b=0,w=0,k=0,d=0,v=0,g=0,m=0,p=0,E=0,B=0,y=0,C=0,I=0.0,Z=0.0;C=h;h=h+112|0;E=C+72|0;w=C+56|0;u=C+16|0;g=C;l=t[A>>2]&3;d=A+-48|0;y=t[((l|0)==2?A:d)+40>>2]|0;m=A+16|0;v=t[m>>2]|0;f=v+56|0;if(i[v+87>>0]|0){oR(u,y,t[((l|0)==3?A:A+48|0)+40>>2]|0,f);l=u;u=f+40|0;do{t[f>>2]=t[l>>2];f=f+4|0;l=l+4|0}while((f|0)<(u|0))}v=y+16|0;l=t[v>>2]|0;f=t[l+8>>2]|0;if(!f)b=0;else b=t[(t[f+4>>2]|0)+16>>2]|0;u=e+40|0;f=l+16|0;l=(t[m>>2]|0)+56|0;t[w>>2]=t[f>>2];t[w+4>>2]=t[f+4>>2];t[w+8>>2]=t[f+8>>2];t[w+12>>2]=t[f+12>>2];t[E>>2]=t[l>>2];t[E+4>>2]=t[l+4>>2];t[E+8>>2]=t[l+8>>2];t[E+12>>2]=t[l+12>>2];yR(g,w,E);t[u>>2]=t[g>>2];t[u+4>>2]=t[g+4>>2];t[u+8>>2]=t[g+8>>2];t[u+12>>2]=t[g+12>>2];if(!(n<<24>>24)){f=t[m>>2]|0;if(!(i[f+85>>0]|0))k=0;else{c[e+56>>3]=+c[f+72>>3];k=1}}else{o=+CR(t[((t[A>>2]&3|0)==2?A:d)+40>>2]|0)+3.141592653589793;c[e+56>>3]=o;if(o<6.283185307179586)k=1;else ge(106534,106514,606,106558)}i[e+69>>0]=k;g=a+32|0;t[g>>2]=t[u>>2];t[g+4>>2]=t[u+4>>2];t[g+8>>2]=t[u+8>>2];t[g+12>>2]=t[u+12>>2];switch(r|0){case 1:{l=t[v>>2]|0;if((i[l+156>>0]|0)==0?(g=i[(t[m>>2]|0)+89>>0]|0,p=g&255,g<<24>>24!=0):0){t[E>>2]=t[a>>2];t[E+4>>2]=t[a+4>>2];t[E+8>>2]=t[a+8>>2];t[E+12>>2]=t[a+12>>2];t[E+16>>2]=t[a+16>>2];t[E+20>>2]=t[a+20>>2];t[E+24>>2]=t[a+24>>2];t[E+28>>2]=t[a+28>>2];do{if(!(p&4))if(!(p&1)){f=a+48|0;if(!(p&8)){t[f>>2]=2;c[E>>3]=+c[u>>3];c[E+24>>3]=+c[l+80>>3]*.5+ +c[l+24>>3];c[E+8>>3]=+c[e+48>>3];f=a+56|0;t[f>>2]=t[E>>2];t[f+4>>2]=t[E+4>>2];t[f+8>>2]=t[E+8>>2];t[f+12>>2]=t[E+12>>2];t[f+16>>2]=t[E+16>>2];t[f+20>>2]=t[E+20>>2];t[f+24>>2]=t[E+24>>2];t[f+28>>2]=t[E+28>>2];f=1;break}else{t[f>>2]=8;c[E+16>>3]=+c[u>>3];c[E+24>>3]=+c[l+80>>3]*.5+ +c[l+24>>3];c[E+8>>3]=+c[e+48>>3];f=a+56|0;t[f>>2]=t[E>>2];t[f+4>>2]=t[E+4>>2];t[f+8>>2]=t[E+8>>2];t[f+12>>2]=t[E+12>>2];t[f+16>>2]=t[E+16>>2];t[f+20>>2]=t[E+20>>2];t[f+24>>2]=t[E+24>>2];t[f+28>>2]=t[E+28>>2];f=1;break}}else{t[a+48>>2]=1;s=+c[E>>3];if(+c[u>>3]<+c[l+16>>3]){Z=s+-1.0;o=+c[e+48>>3];e=E+16|0;s=+c[e>>3];I=+c[l+80>>3]*-.5+ +c[l+24>>3];I=I-+((t[(t[(Bd(y)|0)+16>>2]|0)+252>>2]|0)/2|0|0);f=t[v>>2]|0;c[e>>3]=+c[f+16>>3]-+c[f+88>>3];c[E+8>>3]=o;c[E+24>>3]=+c[f+80>>3]*.5+ +c[f+24>>3];c[E>>3]=Z;c[a+56>>3]=Z;c[a+64>>3]=I;c[a+72>>3]=s;c[a+80>>3]=o;f=a+88|0;t[f>>2]=t[E>>2];t[f+4>>2]=t[E+4>>2];t[f+8>>2]=t[E+8>>2];t[f+12>>2]=t[E+12>>2];t[f+16>>2]=t[E+16>>2];t[f+20>>2]=t[E+20>>2];t[f+24>>2]=t[E+24>>2];t[f+28>>2]=t[E+28>>2];f=2;break}else{Z=+c[e+48>>3];f=E+16|0;I=+c[f>>3]+1.0;o=+c[l+80>>3]*-.5+ +c[l+24>>3];o=o-+((t[(t[(Bd(y)|0)+16>>2]|0)+252>>2]|0)/2|0|0);e=t[v>>2]|0;c[E>>3]=+c[e+96>>3]+ +c[e+16>>3];c[E+8>>3]=Z;c[E+24>>3]=+c[e+80>>3]*.5+ +c[e+24>>3];c[f>>3]=I;c[a+56>>3]=s;c[a+64>>3]=o;c[a+72>>3]=I;c[a+80>>3]=Z;f=a+88|0;t[f>>2]=t[E>>2];t[f+4>>2]=t[E+4>>2];t[f+8>>2]=t[E+8>>2];t[f+12>>2]=t[E+12>>2];t[f+16>>2]=t[E+16>>2];t[f+20>>2]=t[E+20>>2];t[f+24>>2]=t[E+24>>2];t[f+28>>2]=t[E+28>>2];f=2;break}}else{t[a+48>>2]=4;f=E+8|0;c[f>>3]=+c[(+c[f>>3]<+c[e+48>>3]?E:u)+8>>3];f=a+56|0;t[f>>2]=t[E>>2];t[f+4>>2]=t[E+4>>2];t[f+8>>2]=t[E+8>>2];t[f+12>>2]=t[E+12>>2];t[f+16>>2]=t[E+16>>2];t[f+20>>2]=t[E+20>>2];t[f+24>>2]=t[E+24>>2];t[f+28>>2]=t[E+28>>2];f=1}}while(0);t[a+52>>2]=f;while(1){f=t[A+16>>2]|0;if(!(i[f+112>>0]|0))break;A=t[f+116>>2]|0}i[((y|0)==(t[((t[A>>2]&3|0)==2?A:A+-48|0)+40>>2]|0)?f+56|0:f+16|0)+30>>0]=0;t[a+48>>2]=p}else{l=4;B=47}break}case 2:{p=i[(t[m>>2]|0)+89>>0]|0;l=p&255;if(!(p<<24>>24))B=46;else{t[E>>2]=t[a>>2];t[E+4>>2]=t[a+4>>2];t[E+8>>2]=t[a+8>>2];t[E+12>>2]=t[a+12>>2];t[E+16>>2]=t[a+16>>2];t[E+20>>2]=t[a+20>>2];t[E+24>>2]=t[a+24>>2];t[E+28>>2]=t[a+28>>2];do{if(!(l&4)){if(l&1|0)if((t[a+48>>2]|0)==4){s=+c[E>>3]+-1.0;f=t[v>>2]|0;Z=+c[f+24>>3]-+c[f+80>>3]*.5;I=+c[u>>3];o=Z-+((t[(t[(Bd(y)|0)+16>>2]|0)+252>>2]|0)/2|0|0);f=t[v>>2]|0;c[E+16>>3]=+c[f+16>>3]+-2.0-+c[f+88>>3];c[E+8>>3]=Z;c[E+24>>3]=+c[f+80>>3]*.5+ +c[f+24>>3];c[E>>3]=s;c[a+56>>3]=s;c[a+64>>3]=o;c[a+72>>3]=I;c[a+80>>3]=Z;f=a+88|0;t[f>>2]=t[E>>2];t[f+4>>2]=t[E+4>>2];t[f+8>>2]=t[E+8>>2];t[f+12>>2]=t[E+12>>2];t[f+16>>2]=t[E+16>>2];t[f+20>>2]=t[E+20>>2];t[f+24>>2]=t[E+24>>2];t[f+28>>2]=t[E+28>>2];f=2;break}else{f=E+24|0;c[f>>3]=+c[(+c[f>>3]>+c[e+8>>3]?E+16|0:e)+8>>3];f=a+56|0;t[f>>2]=t[E>>2];t[f+4>>2]=t[E+4>>2];t[f+8>>2]=t[E+8>>2];t[f+12>>2]=t[E+12>>2];t[f+16>>2]=t[E+16>>2];t[f+20>>2]=t[E+20>>2];t[f+24>>2]=t[E+24>>2];t[f+28>>2]=t[E+28>>2];f=1;break}s=+c[u>>3];if(!(l&8)){c[E>>3]=s+-1.0;r=t[v>>2]|0;s=+c[r+24>>3];o=+c[r+80>>3]*.5;if((t[a+48>>2]|0)==4){c[E+24>>3]=o+s;s=+c[e+48>>3]+-1.0;f=E}else{c[E+8>>3]=s-o;s=+c[e+48>>3];f=E+16|0}c[f+8>>3]=s;f=a+56|0;t[f>>2]=t[E>>2];t[f+4>>2]=t[E+4>>2];t[f+8>>2]=t[E+8>>2];t[f+12>>2]=t[E+12>>2];t[f+16>>2]=t[E+16>>2];t[f+20>>2]=t[E+20>>2];t[f+24>>2]=t[E+24>>2];t[f+28>>2]=t[E+28>>2];f=1;break}else{f=E+16|0;c[f>>3]=s+1.0;r=t[v>>2]|0;s=+c[r+24>>3];o=+c[r+80>>3]*.5;if((t[a+48>>2]|0)==4){c[E+24>>3]=o+s;s=+c[e+48>>3]+-1.0;f=E}else{c[E+8>>3]=s-o;s=+c[e+48>>3]+1.0}c[f+8>>3]=s;f=a+56|0;t[f>>2]=t[E>>2];t[f+4>>2]=t[E+4>>2];t[f+8>>2]=t[E+8>>2];t[f+12>>2]=t[E+12>>2];t[f+16>>2]=t[E+16>>2];t[f+20>>2]=t[E+20>>2];t[f+24>>2]=t[E+24>>2];t[f+28>>2]=t[E+28>>2];f=1;break}}else{f=E+8|0;c[f>>3]=+c[(+c[f>>3]<+c[e+48>>3]?E:u)+8>>3];f=a+56|0;t[f>>2]=t[E>>2];t[f+4>>2]=t[E+4>>2];t[f+8>>2]=t[E+8>>2];t[f+12>>2]=t[E+12>>2];t[f+16>>2]=t[E+16>>2];t[f+20>>2]=t[E+20>>2];t[f+24>>2]=t[E+24>>2];t[f+28>>2]=t[E+28>>2];f=1}}while(0);t[a+52>>2]=f;while(1){f=t[A+16>>2]|0;if(!(i[f+112>>0]|0))break;A=t[f+116>>2]|0}i[((y|0)==(t[((t[A>>2]&3|0)==2?A:A+-48|0)+40>>2]|0)?f+56|0:f+16|0)+30>>0]=0;t[a+48>>2]=l}break}default:B=46}if((B|0)==46){l=t[a+48>>2]|0;B=47}e:do{if((B|0)==47){if(b){A=a+56|0;f=a+52|0;l=D5[b&127](y,(t[m>>2]|0)+56|0,l,A,f)|0;if(l){t[a+48>>2]=l;break}}else{f=a+52|0;A=a+56|0}t[A>>2]=t[a>>2];t[A+4>>2]=t[a+4>>2];t[A+8>>2]=t[a+8>>2];t[A+12>>2]=t[a+12>>2];t[A+16>>2]=t[a+16>>2];t[A+20>>2]=t[a+20>>2];t[A+24>>2]=t[a+24>>2];t[A+28>>2]=t[a+28>>2];t[f>>2]=1;switch(r|0){case 8:{ge(138394,106514,765,106558);break}case 2:{c[((t[a+48>>2]|0)==4?a+56|0:a+72|0)+8>>3]=+c[e+48>>3];break e}case 1:{c[a+64>>3]=+c[e+48>>3];t[a+48>>2]=4;break e}default:break e}}}while(0);h=C;return}function ZR(e){e=e|0;var A=0,r=0,a=0,n=0,f=0,l=0;n=t[e+16>>2]|0;f=t[n+96>>2]|0;if((i[n+44>>0]|0)==0?(i[n+84>>0]|0)==0:0)l=6;else{A=i[n+49>>0]|0;r=A&255;if(((r&8|0)==0?(a=i[n+89>>0]|0,(a&8)==0):0)?(r&5|0)==0?1:A<<24>>24!=a<<24>>24:0)l=6;else e=0}if((l|0)==6)if(!f)e=18;else{e=(t[(t[(Bd(t[((t[e>>2]&3|0)==2?e:e+-48|0)+40>>2]|0)|0)+16>>2]|0)+116>>2]&1|0)!=0;e=~~(+c[(e?f+32|0:f+24|0)>>3]+18.0)}return e|0}function GR(e,A,r,a,n,f,l){e=e|0;A=A|0;r=r|0;a=a|0;n=+n;f=+f;l=l|0;var s=0,c=0,o=0,u=0;e=t[(t[A+(r<<2)>>2]|0)+16>>2]|0;if((i[e+44>>0]|0)==0?(i[e+84>>0]|0)==0:0)o=6;else o=3;do{if((o|0)==3){s=i[e+49>>0]|0;c=s&255;if(!(c&8)){u=i[e+89>>0]|0;if((u&8)==0?(c&5|0)==0?1:s<<24>>24!=u<<24>>24:0){o=6;break}if(!(i[e+89>>0]&8)){if(c&4|0){QR(A,r,a,n,f,l);break}if(!(c&1))ge(138394,106514,1231,106566);else{zR(A,r,a,n,f,l);break}}}if((s&2)==0?(i[e+89>>0]&2)==0:0){DR(A,r,a,n,f,l);break}QR(A,r,a,n,f,l)}}while(0);if((o|0)==6)LR(A,r,a,n,f,l);return}function LR(e,A,r,a,f,l){e=e|0;A=A|0;r=r|0;a=+a;f=+f;l=l|0;var s=0,o=0.0,u=0.0,b=0.0,w=0.0,k=0,d=0,v=0,g=0,m=0,p=0.0,E=0,B=0,y=0,C=0.0,I=0,Z=0,G=0.0,L=0,Q=0.0,D=0.0,z=0.0,W=0.0,Y=0.0,F=0,M=0,V=0,N=0,R=0,x=0,J=0,H=0.0,P=0.0,X=0;J=h;h=h+16080|0;V=J+80|0;N=J+64|0;R=J+48|0;x=J+32|0;F=J+16|0;M=J;Z=t[e+(A<<2)>>2]|0;u=f*.5/+(r|0);u=u>2.0?u:2.0;L=(t[((t[Z>>2]&3|0)==3?Z:Z+48|0)+40>>2]|0)+16|0;I=t[L>>2]|0;G=+c[I+16>>3];W=+c[I+24>>3];Z=t[Z+16>>2]|0;o=+c[Z+16>>3];Q=o+G;D=+c[Z+24>>3]+W;f=+c[Z+56>>3];z=f+G;W=+c[Z+64>>3]+W;s=!(D>=W)?-1:1;w=+c[I+96>>3];switch(WR(n[Z+49>>0]|0,n[Z+89>>0]|0)|0){case 65:case 32:{if(D==W)s=0-s|0;break}default:{}}H=(w-o)*3.0;o=(w-f)*3.0;p=u*+(s|0);m=V+8|0;E=V+16|0;B=V+32|0;y=V+48|0;C=(W+D)*.5;I=V+64|0;Z=V+80|0;v=V+96|0;g=V+104|0;d=0;b=0.0;f=w;u=w=(r|0))break;k=A+1|0;A=t[e+(A<<2)>>2]|0;w=f+a;u=u+a;o=o+a;b=b+p;c[V>>3]=Q;c[m>>3]=D;H=b+D;YR(N,u*.3333333333333333+Q,H);t[E>>2]=t[N>>2];t[E+4>>2]=t[N+4>>2];t[E+8>>2]=t[N+8>>2];t[E+12>>2]=t[N+12>>2];P=w+G;YR(R,P,H);t[B>>2]=t[R>>2];t[B+4>>2]=t[R+4>>2];t[B+8>>2]=t[R+8>>2];t[B+12>>2]=t[R+12>>2];YR(x,P,C);t[y>>2]=t[x>>2];t[y+4>>2]=t[x+4>>2];t[y+8>>2]=t[x+8>>2];t[y+12>>2]=t[x+12>>2];H=W-b;YR(F,P,H);t[I>>2]=t[F>>2];t[I+4>>2]=t[F+4>>2];t[I+8>>2]=t[F+8>>2];t[I+12>>2]=t[F+12>>2];YR(M,o*.3333333333333333+z,H);t[Z>>2]=t[M>>2];t[Z+4>>2]=t[M+4>>2];t[Z+8>>2]=t[M+8>>2];t[Z+12>>2]=t[M+12>>2];c[v>>3]=z;c[g>>3]=W;s=A+16|0;if((t[(t[s>>2]|0)+96>>2]|0)!=0?(X=(t[(t[(Bd(t[((t[A>>2]&3|0)==3?A:A+48|0)+40>>2]|0)|0)+16>>2]|0)+116>>2]&1|0)==0,s=t[(t[s>>2]|0)+96>>2]|0,Y=+c[(X?s+24|0:s+32|0)>>3],X=t[L>>2]|0,c[s+56>>3]=Y*.5+w+ +c[X+16>>3],c[s+64>>3]=+c[X+24>>3],i[s+81>>0]=1,Y>a):0)f=Y+f;else f=w;mR(A,t[((t[A>>2]&3|0)==2?A:A+-48|0)+40>>2]|0,V,7,l);A=k;d=d+1|0}h=J;return}function QR(e,A,r,a,f,l){e=e|0;A=A|0;r=r|0;a=+a;f=+f;l=l|0;var s=0.0,o=0,u=0.0,b=0.0,w=0.0,k=0.0,d=0,v=0.0,g=0,m=0,p=0,E=0,B=0,y=0,C=0,I=0.0,Z=0,G=0,L=0.0,Q=0,D=0.0,z=0.0,W=0.0,Y=0.0,F=0.0,M=0,V=0,N=0,R=0,x=0,J=0,H=0,P=0.0,X=0;H=h;h=h+16080|0;N=H+80|0;R=H+64|0;x=H+48|0;J=H+32|0;M=H+16|0;V=H;G=t[e+(A<<2)>>2]|0;k=a*.5/+(r|0);k=k>2.0?k:2.0;Q=(t[((t[G>>2]&3|0)==3?G:G+48|0)+40>>2]|0)+16|0;o=t[Q>>2]|0;W=+c[o+16>>3];L=+c[o+24>>3];G=t[G+16>>2]|0;s=+c[G+16>>3];w=+c[G+24>>3];D=s+W;z=w+L;a=+c[G+56>>3];b=+c[G+64>>3];W=a+W;Y=b+L;u=!(D>=W)?-1.0:1.0;v=+c[o+80>>3]*.5;switch(WR(n[G+49>>0]|0,n[G+89>>0]|0)|0){case 15:{s=(k-a+ +c[o+96>>3])*u;break}case 38:{s=(a+k+ +c[o+88>>3])*u;break}case 41:{s=(k-s+ +c[o+96>>3])*u;break}case 48:{s=(k-s+ +c[o+96>>3])*u;break}case 58:case 57:case 51:case 47:case 37:case 14:{s=u*.3333333333333333*(s-a+ +c[o+88>>3]+ +c[o+96>>3]);break}case 73:{s=(s+k+ +c[o+88>>3])*u;break}case 83:{s=(+c[o+88>>3]+s)*u;break}case 84:{s=((s-a+ +c[o+88>>3]+ +c[o+96>>3])*.5+k)*u;break}case 85:case 75:case 74:{s=((s-a+ +c[o+88>>3]+ +c[o+96>>3])*.5+k*2.0)*u;break}default:s=0.0}w=(v-w)*3.0;b=(v-b)*3.0;k=u*k;E=N+8|0;B=N+16|0;y=N+32|0;C=N+48|0;I=(W+D)*.5;Z=N+64|0;G=N+80|0;m=N+96|0;p=N+104|0;g=0;a=v;w=v=(r|0))break;d=A+1|0;A=t[e+(A<<2)>>2]|0;b=a+f;w=w+f;u=u+f;s=s+k;c[N>>3]=D;c[E>>3]=z;v=s+D;YR(R,v,w*.3333333333333333+z);t[B>>2]=t[R>>2];t[B+4>>2]=t[R+4>>2];t[B+8>>2]=t[R+8>>2];t[B+12>>2]=t[R+12>>2];P=b+L;YR(x,v,P);t[y>>2]=t[x>>2];t[y+4>>2]=t[x+4>>2];t[y+8>>2]=t[x+8>>2];t[y+12>>2]=t[x+12>>2];YR(J,I,P);t[C>>2]=t[J>>2];t[C+4>>2]=t[J+4>>2];t[C+8>>2]=t[J+8>>2];t[C+12>>2]=t[J+12>>2];v=W-s;YR(M,v,P);t[Z>>2]=t[M>>2];t[Z+4>>2]=t[M+4>>2];t[Z+8>>2]=t[M+8>>2];t[Z+12>>2]=t[M+12>>2];YR(V,v,u*.3333333333333333+Y);t[G>>2]=t[V>>2];t[G+4>>2]=t[V+4>>2];t[G+8>>2]=t[V+8>>2];t[G+12>>2]=t[V+12>>2];c[m>>3]=W;c[p>>3]=Y;o=A+16|0;if((t[(t[o>>2]|0)+96>>2]|0)!=0?(X=(t[(t[(Bd(t[((t[A>>2]&3|0)==3?A:A+48|0)+40>>2]|0)|0)+16>>2]|0)+116>>2]&1|0)==0,o=t[(t[o>>2]|0)+96>>2]|0,F=+c[(X?o+32|0:o+24|0)>>3],X=t[Q>>2]|0,c[o+64>>3]=F*.5+b+ +c[X+24>>3],c[o+56>>3]=+c[X+16>>3],i[o+81>>0]=1,F>f):0)a=F+a;else a=b;mR(A,t[((t[A>>2]&3|0)==2?A:A+-48|0)+40>>2]|0,N,7,l);A=d;g=g+1|0}h=H;return}function DR(e,A,r,a,f,l){e=e|0;A=A|0;r=r|0;a=+a;f=+f;l=l|0;var s=0,o=0.0,u=0.0,b=0.0,w=0.0,k=0,d=0,v=0,g=0,m=0,p=0.0,E=0,B=0,y=0,C=0.0,I=0,Z=0,G=0.0,L=0,Q=0.0,D=0.0,z=0.0,W=0.0,Y=0.0,F=0,M=0,V=0,N=0,R=0,x=0,J=0,H=0.0,P=0.0,X=0;J=h;h=h+16080|0;V=J+80|0;N=J+64|0;R=J+48|0;x=J+32|0;F=J+16|0;M=J;Z=t[e+(A<<2)>>2]|0;u=f*.5/+(r|0);u=u>2.0?u:2.0;L=(t[((t[Z>>2]&3|0)==3?Z:Z+48|0)+40>>2]|0)+16|0;I=t[L>>2]|0;G=+c[I+16>>3];W=+c[I+24>>3];Z=t[Z+16>>2]|0;o=+c[Z+16>>3];Q=o+G;D=+c[Z+24>>3]+W;f=+c[Z+56>>3];z=f+G;W=+c[Z+64>>3]+W;s=!(D>=W)?-1:1;w=+c[I+88>>3];switch(WR(n[Z+49>>0]|0,n[Z+89>>0]|0)|0){case 67:case 12:{if(D==W)s=0-s|0;break}default:{}}H=(o+w)*3.0;o=(f+w)*3.0;p=u*+(s|0);m=V+8|0;E=V+16|0;B=V+32|0;y=V+48|0;C=(W+D)*.5;I=V+64|0;Z=V+80|0;v=V+96|0;g=V+104|0;d=0;b=0.0;f=w;u=w=(r|0))break;k=A+1|0;A=t[e+(A<<2)>>2]|0;w=f+a;u=u+a;o=o+a;b=b+p;c[V>>3]=Q;c[m>>3]=D;H=b+D;YR(N,Q-u*.3333333333333333,H);t[E>>2]=t[N>>2];t[E+4>>2]=t[N+4>>2];t[E+8>>2]=t[N+8>>2];t[E+12>>2]=t[N+12>>2];P=G-w;YR(R,P,H);t[B>>2]=t[R>>2];t[B+4>>2]=t[R+4>>2];t[B+8>>2]=t[R+8>>2];t[B+12>>2]=t[R+12>>2];YR(x,P,C);t[y>>2]=t[x>>2];t[y+4>>2]=t[x+4>>2];t[y+8>>2]=t[x+8>>2];t[y+12>>2]=t[x+12>>2];H=W-b;YR(F,P,H);t[I>>2]=t[F>>2];t[I+4>>2]=t[F+4>>2];t[I+8>>2]=t[F+8>>2];t[I+12>>2]=t[F+12>>2];YR(M,z-o*.3333333333333333,H);t[Z>>2]=t[M>>2];t[Z+4>>2]=t[M+4>>2];t[Z+8>>2]=t[M+8>>2];t[Z+12>>2]=t[M+12>>2];c[v>>3]=z;c[g>>3]=W;s=A+16|0;if((t[(t[s>>2]|0)+96>>2]|0)!=0?(X=(t[(t[(Bd(t[((t[A>>2]&3|0)==3?A:A+48|0)+40>>2]|0)|0)+16>>2]|0)+116>>2]&1|0)==0,s=t[(t[s>>2]|0)+96>>2]|0,Y=+c[(X?s+24|0:s+32|0)>>3],X=t[L>>2]|0,c[s+56>>3]=Y*-.5-w+ +c[X+16>>3],c[s+64>>3]=+c[X+24>>3],i[s+81>>0]=1,Y>a):0)f=Y+f;else f=w;mR(A,t[((t[A>>2]&3|0)==2?A:A+-48|0)+40>>2]|0,V,7,l);A=k;d=d+1|0}h=J;return}function zR(e,A,r,a,f,l){e=e|0;A=A|0;r=r|0;a=+a;f=+f;l=l|0;var s=0.0,o=0.0,u=0.0,b=0.0,w=0,k=0,d=0,v=0,g=0,m=0,p=0.0,E=0,B=0.0,y=0.0,C=0.0,I=0.0,Z=0.0,G=0,L=0,Q=0,D=0.0,z=0,W=0,Y=0.0,F=0,M=0,V=0,N=0,R=0,x=0,J=0,H=0.0,P=0.0,X=0;J=h;h=h+16080|0;V=J+80|0;N=J+64|0;R=J+48|0;x=J+32|0;F=J+16|0;M=J;G=t[e+(A<<2)>>2]|0;Z=a*.5/+(r|0);E=(t[((t[G>>2]&3|0)==3?G:G+48|0)+40>>2]|0)+16|0;L=t[E>>2]|0;C=+c[L+16>>3];p=+c[L+24>>3];G=t[G+16>>2]|0;o=+c[G+24>>3];B=+c[G+16>>3]+C;y=o+p;u=+c[G+64>>3];C=+c[G+56>>3]+C;I=u+p;m=!(B>=C)?-1:1;b=+c[L+80>>3]*.5;G=(WR(n[G+49>>0]|0,n[G+89>>0]|0)|0)==67;o=(o+b)*3.0;u=(u+b)*3.0;Z=(Z>2.0?Z:2.0)*+((G?0-m|0:m)|0);m=V+8|0;G=V+16|0;L=V+32|0;Q=V+48|0;D=(C+B)*.5;z=V+64|0;W=V+80|0;v=V+96|0;g=V+104|0;a=b;s=0.0;o=b=(r|0))break;d=A+1|0;w=t[e+(A<<2)>>2]|0;b=a+f;o=o+f;u=u+f;s=s+Z;c[V>>3]=B;c[m>>3]=y;H=s+B;YR(N,H,y-o*.3333333333333333);t[G>>2]=t[N>>2];t[G+4>>2]=t[N+4>>2];t[G+8>>2]=t[N+8>>2];t[G+12>>2]=t[N+12>>2];P=p-b;YR(R,H,P);t[L>>2]=t[R>>2];t[L+4>>2]=t[R+4>>2];t[L+8>>2]=t[R+8>>2];t[L+12>>2]=t[R+12>>2];YR(x,D,P);t[Q>>2]=t[x>>2];t[Q+4>>2]=t[x+4>>2];t[Q+8>>2]=t[x+8>>2];t[Q+12>>2]=t[x+12>>2];H=C-s;YR(F,H,P);t[z>>2]=t[F>>2];t[z+4>>2]=t[F+4>>2];t[z+8>>2]=t[F+8>>2];t[z+12>>2]=t[F+12>>2];YR(M,H,I-u*.3333333333333333);t[W>>2]=t[M>>2];t[W+4>>2]=t[M+4>>2];t[W+8>>2]=t[M+8>>2];t[W+12>>2]=t[M+12>>2];c[v>>3]=C;c[g>>3]=I;A=w+16|0;if((t[(t[A>>2]|0)+96>>2]|0)!=0?(X=(t[(t[(Bd(t[((t[w>>2]&3|0)==3?w:w+48|0)+40>>2]|0)|0)+16>>2]|0)+116>>2]&1|0)==0,A=t[(t[A>>2]|0)+96>>2]|0,Y=+c[(X?A+32|0:A+24|0)>>3],X=t[E>>2]|0,c[A+64>>3]=Y*-.5-b+ +c[X+24>>3],c[A+56>>3]=+c[X+16>>3],i[A+81>>0]=1,Y>f):0)a=Y+a;else a=b;mR(w,t[((t[w>>2]&3|0)==2?w:w+-48|0)+40>>2]|0,V,7,l);A=d;k=k+1|0}h=J;return}function WR(e,A){e=e|0;A=A|0;var r=0;r=0;while(1){if((r|0)>=8){A=-1;break}if((t[22044+(r<<2)>>2]|0)==(A|0)){A=r;break}r=r+1|0}r=0;while(1){if((r|0)>=8){r=-1;break}if((t[22044+(r<<2)>>2]|0)==(e|0))break;r=r+1|0}if((r|A|0)<0)r=0;else r=t[22076+(r<<5)+(A<<2)>>2]|0;return r|0}function YR(e,A,r){e=e|0;A=+A;r=+r;c[e>>3]=A;c[e+8>>3]=r;return}function FR(e){e=e|0;var A=0,r=0;if((t[47203]|0)!=0|(t[47202]|0)!=0){A=e+16|0;r=t[(t[A>>2]|0)+100>>2]|0;if((r|0?(i[r+81>>0]|0)==0:0)?MR(e,1)|0:0){r=Bd(t[((t[e>>2]&3|0)==3?e:e+48|0)+40>>2]|0)|0;Hx(r,t[(t[A>>2]|0)+100>>2]|0)}r=t[(t[A>>2]|0)+104>>2]|0;if((r|0?(i[r+81>>0]|0)==0:0)?MR(e,0)|0:0){r=Bd(t[((t[e>>2]&3|0)==3?e:e+48|0)+40>>2]|0)|0;Hx(r,t[(t[A>>2]|0)+104>>2]|0)}}return}function MR(e,A){e=e|0;A=A|0;var r=0,a=0.0,n=0.0,f=0,l=0.0,s=0,o=0,u=0,b=0,w=0,k=0,d=0.0;k=h;h=h+96|0;b=k+32|0;o=k+16|0;u=k;f=e+16|0;do{if((i[(t[f>>2]|0)+112>>0]|0)!=6){r=t[47203]|0;if(!((r|0)!=0?(i[(Pw(e,r)|0)>>0]|0)!=0:0)){r=t[47202]|0;if(!r){r=0;break}if(!(i[(Pw(e,r)|0)>>0]|0)){r=0;break}}A=A<<24>>24==0;w=t[f>>2]|0;w=t[(A?w+104|0:w+100|0)>>2]|0;r=VR(e)|0;if(r){s=t[r>>2]|0;do{if(A){if(t[s+8>>2]|0){r=t[s>>2]|0;l=+c[r>>3];n=+c[s+16>>3];r=r+8|0;a=+c[s+24>>3];break}r=t[s>>2]|0;n=+c[r>>3];a=+c[r+8>>3];r=0;while(1){if((r|0)==4)break;u=b+(r<<4)|0;f=(t[s>>2]|0)+(r<<4)|0;t[u>>2]=t[f>>2];t[u+4>>2]=t[f+4>>2];t[u+8>>2]=t[f+8>>2];t[u+12>>2]=t[f+12>>2];r=r+1|0}Zx(o,b,3,.1,0,0);l=+c[o>>3];r=o+8|0}else{A=(t[r+4>>2]|0)+-1|0;f=s+(A*48|0)|0;if(t[s+(A*48|0)+12>>2]|0){b=t[f>>2]|0;r=(t[s+(A*48|0)+4>>2]|0)+-1|0;l=+c[b+(r<<4)>>3];n=+c[s+(A*48|0)+32>>3];r=b+(r<<4)+8|0;a=+c[s+(A*48|0)+40>>3];break}o=t[f>>2]|0;A=s+(A*48|0)+4|0;r=(t[A>>2]|0)+-1|0;n=+c[o+(r<<4)>>3];a=+c[o+(r<<4)+8>>3];r=0;while(1){if((r|0)==4)break;o=b+(r<<4)|0;s=(t[f>>2]|0)+(r+-4+(t[A>>2]|0)<<4)|0;t[o>>2]=t[s>>2];t[o+4>>2]=t[s+4>>2];t[o+8>>2]=t[s+8>>2];t[o+12>>2]=t[s+12>>2];r=r+1|0}Zx(u,b,3,.9,0,0);l=+c[u>>3];r=u+8|0}}while(0);d=+R(+(+c[r>>3]-a),+(l-n));d=+wx(e,t[47203]|0,-25.0,-180.0)*.017453292519943295+d;l=+wx(e,t[47202]|0,1.0,0.0)*10.0;c[w+56>>3]=l*+W(+d)+n;c[w+64>>3]=+Y(+d)*l+a;i[w+81>>0]=1;r=1}else r=0}else r=0}while(0);h=k;return r|0}function VR(e){e=e|0;var A=0,r=0,a=0,n=0,f=0;f=h;h=h+16|0;a=f;A=e;while(1){r=t[A+16>>2]|0;A=t[r+8>>2]|0;if(A|0)break;if(!(i[r+112>>0]|0)){n=5;break}A=t[r+116>>2]|0}if((n|0)==5){n=Mk(t[((t[e>>2]&3|0)==3?e:e+48|0)+40>>2]|0)|0;A=Mk(t[((t[e>>2]&3|0)==2?e:e+-48|0)+40>>2]|0)|0;t[a>>2]=n;t[a+4>>2]=A;nw(1,106579,a)|0;A=0}h=f;return A|0}function NR(e,A,r){e=e|0;A=A|0;r=r|0;var i=0.0,n=0.0,f=0.0,l=0.0,s=0,o=0,u=0,b=0,w=0,k=0,d=0,v=0,g=0.0,m=0.0;v=h;h=h+96|0;o=v+80|0;u=v+64|0;b=v+48|0;w=v+32|0;k=v+16|0;d=v;s=a[(t[A+16>>2]|0)+136>>1]|0;A=r+16|0;RR(t[(t[A>>2]|0)+8>>2]|0,w,k);i=+c[w>>3];n=+c[k>>3];g=i-n;f=+c[w+8>>3];l=+c[k+8>>3];m=f-l;e:do{if(m*m+g*g<1.0e-06){t[b>>2]=t[w>>2];t[b+4>>2]=t[w+4>>2];t[b+8>>2]=t[w+8>>2];t[b+12>>2]=t[w+12>>2]}else switch(s&14){case 4:case 10:{c[u>>3]=(n+i)*.5;c[u+8>>3]=(l+f)*.5;k=t[(t[A>>2]|0)+8>>2]|0;t[o>>2]=t[u>>2];t[o+4>>2]=t[u+4>>2];t[o+8>>2]=t[u+8>>2];t[o+12>>2]=t[u+12>>2];Wx(d,k,o);t[b>>2]=t[d>>2];t[b+4>>2]=t[d+4>>2];t[b+8>>2]=t[d+8>>2];t[b+12>>2]=t[d+12>>2];break e}default:{xR(b,t[(t[A>>2]|0)+8>>2]|0,w,k);break e}}}while(0);t[e>>2]=t[b>>2];t[e+4>>2]=t[b+4>>2];t[e+8>>2]=t[b+8>>2];t[e+12>>2]=t[b+12>>2];h=v;return}function RR(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0,n=0,f=0,l=0,s=0,c=0;f=h;h=h+32|0;n=f+16|0;a=f;s=t[e>>2]|0;i=t[s>>2]|0;l=t[s+8>>2]|0;c=s+16|0;t[n>>2]=t[c>>2];t[n+4>>2]=t[c+4>>2];t[n+8>>2]=t[c+8>>2];t[n+12>>2]=t[c+12>>2];s=s+32|0;t[a>>2]=t[s>>2];t[a+4>>2]=t[s+4>>2];t[a+8>>2]=t[s+8>>2];t[a+12>>2]=t[s+12>>2];if(!l){t[A>>2]=t[i>>2];t[A+4>>2]=t[i+4>>2];t[A+8>>2]=t[i+8>>2];t[A+12>>2]=t[i+12>>2]}else{t[A>>2]=t[n>>2];t[A+4>>2]=t[n+4>>2];t[A+8>>2]=t[n+8>>2];t[A+12>>2]=t[n+12>>2]}l=t[e>>2]|0;s=(t[e+4>>2]|0)+-1|0;i=t[l+(s*48|0)>>2]|0;e=t[l+(s*48|0)+4>>2]|0;c=t[l+(s*48|0)+12>>2]|0;A=l+(s*48|0)+16|0;t[n>>2]=t[A>>2];t[n+4>>2]=t[A+4>>2];t[n+8>>2]=t[A+8>>2];t[n+12>>2]=t[A+12>>2];s=l+(s*48|0)+32|0;t[a>>2]=t[s>>2];t[a+4>>2]=t[s+4>>2];t[a+8>>2]=t[s+8>>2];t[a+12>>2]=t[s+12>>2];if(!c){c=i+(e+-1<<4)|0;t[r>>2]=t[c>>2];t[r+4>>2]=t[c+4>>2];t[r+8>>2]=t[c+8>>2];t[r+12>>2]=t[c+12>>2]}else{t[r>>2]=t[a>>2];t[r+4>>2]=t[a+4>>2];t[r+8>>2]=t[a+8>>2];t[r+12>>2]=t[a+12>>2]}h=f;return}function xR(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0,n=0.0,f=0,l=0,s=0,o=0,u=0.0,b=0.0,h=0.0,w=0.0,k=0.0,d=0,v=0.0;d=t[A+4>>2]|0;n=0.0;a=0;while(1){if((a|0)>=(d|0))break;o=t[A>>2]|0;s=t[o+(a*48|0)>>2]|0;o=t[o+(a*48|0)+4>>2]|0;f=3;l=0;while(1){if((f|0)>=(o|0))break;k=+c[s+(l<<4)>>3]-+c[s+(f<<4)>>3];w=+c[s+(l<<4)+8>>3]-+c[s+(f<<4)+8>>3];f=f+3|0;l=l+3|0;n=+D(+(w*w+k*k))+n}a=a+1|0}o=0;n=n*.5;e:while(1){if((o|0)>=(d|0)){a=15;break}s=t[A>>2]|0;l=t[s+(o*48|0)>>2]|0;s=t[s+(o*48|0)+4>>2]|0;a=3;f=0;while(1){if((a|0)>=(s|0))break;u=+c[l+(f<<4)>>3];w=+c[l+(f<<4)+8>>3];b=+c[l+(a<<4)>>3];h=+c[l+(a<<4)+8>>3];k=u-b;v=w-h;k=+D(+(v*v+k*k));if(k>=n){a=12;break e}a=a+3|0;f=f+3|0;n=n-k}o=o+1|0}if((a|0)==12){c[r>>3]=u;c[r+8>>3]=w;c[i>>3]=b;c[i+8>>3]=h;v=k-n;c[e>>3]=(v*u+b*n)/k;c[e+8>>3]=(v*w+h*n)/k;return}else if((a|0)==15)ge(138712,106514,1316,106641)}function JR(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;FR(A);return}function HR(e,A,r,a,n){e=e|0;A=A|0;r=+r;a=a|0;n=n|0;var f=0.0,l=0.0,s=0.0,o=0.0,u=0.0,b=0,h=0,w=0.0,k=0.0,d=0.0,v=0,g=0.0,m=0,p=0,E=0,B=0,y=0,C=0,I=0,Z=0.0,G=0.0,L=0,Q=0,D=0,z=0,F=0,M=0,V=0;F=PR(e)|0;z=t[F+4>>2]|0;M=t[F>>2]|0;D=z+-1|0;Z=+c[M+(D<<6)+16>>3];G=+(z|0);L=(n|0)==2;Q=(a|0)!=0;b=0;l=0.0;f=0.0;o=0.0;u=0.0;while(1){if((b|0)>=(z|0))break;e=~~+XR(+(b+-1|0),G);I=b+1|0;V=~~+XR(+(I|0),G);h=M+(b<<6)|0;u=+c[h>>3];C=M+(b<<6)+8|0;o=+c[C>>3];v=M+(b<<6)+16|0;g=+c[v>>3];m=M+(b<<6)+24|0;p=M+(b<<6)+32|0;E=M+(b<<6)+40|0;B=M+(b<<6)+48|0;y=M+(b<<6)+56|0;s=+SR(+c[M+(V<<6)+8>>3]-o,+c[M+(V<<6)>>3]-u);k=+SR(+c[M+(e<<6)+8>>3]-o,+c[M+(e<<6)>>3]-u);d=+B5[A&7](g,Z,r);e=(b|0)==0;do{if(e|(b|0)==(D|0))if(e){f=s+1.5707963267948966;if(!L){e=0;w=f;l=d;break}e=0;w=f;l=d;o=o-+Y(+s)*d;u=u-+W(+s)*d;break}else{f=k+-1.5707963267948966;if(!L){e=0;w=f;l=d;break}e=0;w=f;l=d;o=o-+Y(+k)*d;u=u-+W(+k)*d;break}else{w=s-k;w=1.5707963267948966-(w<0.0?w+6.283185307179586:w)*.5;l=+W(+w);l=l==0.0?0.0:d/l;f=s+1.5707963267948966;s=w+f;if(Q|l>d*10.0){k=+XR(k+-1.5707963267948966,6.283185307179586);e=1;w=+XR(f,6.283185307179586);l=d;f=k}else{e=0;w=s;f=s}}}while(0);c[h>>3]=u;c[C>>3]=o;c[v>>3]=g;i[m>>0]=108;c[p>>3]=f;c[E>>3]=l;t[B>>2]=e;c[y>>3]=w;b=I}h=KF(12)|0;e=0;while(1){if((e|0)>=(z|0))break;u=+c[M+(e<<6)>>3];o=+c[M+(e<<6)+8>>3];f=+c[M+(e<<6)+32>>3];l=+c[M+(e<<6)+40>>3];V=t[M+(e<<6)+48>>2]|0;s=+c[M+(e<<6)+56>>3];jR(h,+W(+f)*l+u,+Y(+f)*l+o);if(V|0)UR(u,o,l,1,f,s,a,h);e=e+1|0}b=(n|0)==1;s=f+3.141592653589793;if(b)TR(h,u,o,l,f,s);else{jR(h,+W(+s)*l+u,+Y(+s)*l+o);f=s}e=z+-2|0;s=u;while(1){if((e|0)<=-1)break;u=+c[M+(e<<6)>>3];o=+c[M+(e<<6)+8>>3];l=+c[M+(e<<6)+40>>3];V=t[M+(e<<6)+48>>2]|0;f=+c[M+(e<<6)+32>>3]+3.141592653589793;s=+c[M+(e<<6)+56>>3]+3.141592653589793;jR(h,+W(+s)*l+u,+Y(+s)*l+o);if(V|0)UR(u,o,l,0,f,s,a,h);e=e+-1|0;s=u}if(b)TR(h,s,o,l,f,f+3.141592653589793);OR(F);return h|0}function PR(e){e=e|0;var A=0.0,r=0,i=0,a=0,n=0,f=0,l=0,s=0,c=0,o=0,u=0,b=0,w=0,k=0,d=0,v=0,g=0.0;k=h;h=h+144|0;l=k+128|0;f=k+112|0;s=k+96|0;c=k+64|0;o=k;u=k+80|0;b=_R()|0;w=t[e+4>>2]|0;a=t[e>>2]|0;t[l>>2]=t[a>>2];t[l+4>>2]=t[a+4>>2];t[l+8>>2]=t[a+8>>2];t[l+12>>2]=t[a+12>>2];qR(b,l,0.0);n=o+48|0;t[n>>2]=t[a>>2];t[n+4>>2]=t[a+4>>2];t[n+8>>2]=t[a+8>>2];t[n+12>>2]=t[a+12>>2];r=0;A=0.0;e:while(1){i=r+3|0;if((i|0)>=(w|0))break;t[o>>2]=t[n>>2];t[o+4>>2]=t[n+4>>2];t[o+8>>2]=t[n+8>>2];t[o+12>>2]=t[n+12>>2];e=1;while(1){if((e|0)==4)break;d=o+(e<<4)|0;v=a+(e+r<<4)|0;t[d>>2]=t[v>>2];t[d+4>>2]=t[v+4>>2];t[d+8>>2]=t[v+8>>2];t[d+12>>2]=t[v+12>>2];e=e+1|0}t[s>>2]=t[o>>2];t[s+4>>2]=t[o+4>>2];t[s+8>>2]=t[o+8>>2];t[s+12>>2]=t[o+12>>2];e=1;while(1){if((e|0)==21){r=i;continue e}Zx(u,o,3,+(e|0)*.05,0,0);t[c>>2]=t[u>>2];t[c+4>>2]=t[u+4>>2];t[c+8>>2]=t[u+8>>2];t[c+12>>2]=t[u+12>>2];t[f>>2]=t[s>>2];t[f+4>>2]=t[s+4>>2];t[f+8>>2]=t[s+8>>2];t[f+12>>2]=t[s+12>>2];t[l>>2]=t[u>>2];t[l+4>>2]=t[u+4>>2];t[l+8>>2]=t[u+8>>2];t[l+12>>2]=t[u+12>>2];g=+KR(f,l)+A;t[l>>2]=t[c>>2];t[l+4>>2]=t[c+4>>2];t[l+8>>2]=t[c+8>>2];t[l+12>>2]=t[c+12>>2];qR(b,l,g);t[s>>2]=t[c>>2];t[s+4>>2]=t[c+4>>2];t[s+8>>2]=t[c+8>>2];t[s+12>>2]=t[c+12>>2];e=e+1|0;A=g}}$R(b);h=k;return b|0}function XR(e,A){e=+e;A=+A;var r=0.0;r=e-+L(+(e/A))*A;return+(!(e<0.0)&!(e>=A)?e:r)}function SR(e,A){e=+e;A=+A;if(!(e==0.0&A==0.0)){e=+R(+e,+A);if(!(e>=0.0))e=e+6.283185307179586}else e=0.0;return+e}function jR(e,A,r){e=e|0;A=+A;r=+r;var i=0,a=0;i=t[e>>2]|0;a=e+4|0;if((i|0)<(t[a>>2]|0))a=t[e+8>>2]|0;else{t[a>>2]=2e3;i=e+8|0;a=AM(t[i>>2]|0,32e3)|0;t[i>>2]=a;i=t[e>>2]|0}t[e>>2]=i+1;c[a+(i<<4)>>3]=A;c[a+(i<<4)+8>>3]=r;return}function UR(e,A,r,i,a,t,n,f){e=+e;A=+A;r=+r;i=i|0;a=+a;t=+t;n=n|0;f=f|0;var l=0.0;i=(i|0)==0;l=i?a:t;do{if((n|0)==1){a=(i?t:a)-l;a=!(a<=1.7453292519943296e-03)?a:a+6.283185307179586;if(a<3.141592653589793){TR(f,e,A,r,a+l,l);break}else{jR(f,+W(+l)*r+e,+Y(+l)*r+e);break}}else jR(f,+W(+l)*r+e,+Y(+l)*r+e)}while(0);return}function TR(e,A,r,i,a,t){e=e|0;A=+A;r=+r;i=+i;a=+a;t=+t;var n=0,f=0.0;jR(e,+W(+a)*i+A,+Y(+a)*i+r);e:do{if(!(i==0.0)){while(1){if(!(t>a))break;t=t+-6.283185307179586}t=a-t;while(1){if(!(t>6.283185307179586))break;t=t+-6.283185307179586}t=t*.05263157894736842;n=1;while(1){if((n|0)==20)break e;f=a-t*+(n|0);jR(e,+W(+f)*i+A,+Y(+f)*i+r);n=n+1|0}}}while(0);return}function OR(e){e=e|0;G2(t[e>>2]|0);G2(e);return}function _R(){var e=0;e=KF(12)|0;t[e+4>>2]=0;t[e+8>>2]=2e3;t[e>>2]=KF(128e3)|0;return e|0}function qR(e,A,r){e=e|0;A=A|0;r=+r;var i=0,a=0,n=0,f=0;f=e+4|0;i=t[f>>2]|0;a=e+8|0;n=t[a>>2]|0;if((i|0)<(n|0))e=t[e>>2]|0;else{t[a>>2]=n<<1;i=AM(t[e>>2]|0,n<<7)|0;t[e>>2]=i;e=i;i=t[f>>2]|0}c[e+(i<<6)>>3]=+c[A>>3];c[e+(i<<6)+8>>3]=+c[A+8>>3];t[f>>2]=i+1;c[e+(i<<6)+16>>3]=r;return}function KR(e,A){e=e|0;A=A|0;var r=0.0,i=0.0;r=+c[e>>3]-+c[A>>3];i=+c[e+8>>3]-+c[A+8>>3];return+ +D(+(i*i+r*r))}function $R(e){e=e|0;var A=0;A=t[e+4>>2]|0;if((t[e+8>>2]|0)>(A|0))t[e>>2]=AM(t[e>>2]|0,A<<6)|0;return}function ex(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0,n=0,f=0,l=0,s=0,c=0;c=h;h=h+16|0;s=c+8|0;l=c;n=c+12|0;t[n>>2]=0;f=t[r+4>>2]|0;if(!f)ge(106658,106669,203,106680);i=t[f>>2]|0;if(!i)ge(106694,106669,206,106680);a=f+8|0;if(!(t[a>>2]|0))t[a>>2]=Ax(i)|0;if(!0)i=0;else{i=(aF(t[f>>2]|0)|0)==0;i=i?0:n}if(!((Oi(A,r,i)|0)<<24>>24))rx(r,i);do{if(i|0){a=t[n>>2]|0;A=t[15712]|0;i=t[f>>2]|0;if(!a){t[s>>2]=i;a3(A,106737,s)|0;break}else{t[l>>2]=i;t[l+4>>2]=a;a3(A,106705,l)|0;break}}}while(0);s=r+32|0;t[e>>2]=t[s>>2];t[e+4>>2]=t[s+4>>2];t[e+8>>2]=t[s+8>>2];t[e+12>>2]=t[s+12>>2];h=c;return}function Ax(e){e=e|0;var A=0;A=t[47301]|0;if((A|0)!=0?(N1(A,e)|0)==0:0)e=t[47310]|0;else{G2(A);t[47301]=o3(e)|0;e=r8(189204,22332,35,36,95)|0;t[47310]=e}return e|0}function rx(e,A){e=e|0;A=A|0;var r=0,a=0.0,n=0,f=0.0,l=0,s=0.0;l=t[e+4>>2]|0;r=t[l>>2]|0;f=+c[l+16>>3];l=e+32|0;c[l>>3]=0.0;c[e+40>>3]=f*1.2;c[e+16>>3]=0.0;c[e+24>>3]=f*.1;t[e+8>>2]=0;t[e+12>>2]=0;if(S1(r,106771,4)|0)if((S1(r,106776,5)|0)!=0?(S1(r,106782,9)|0)!=0:0){n=4248;r=106792}else{n=8344;r=106828}else{n=6296;r=106809}if(A|0)t[A>>2]=r;r=t[e>>2]|0;if(r|0){a=0.0;while(1){e=i[r>>0]|0;if(!(e<<24>>24))break;s=a+ +c[n+((e&255)<<3)>>3];c[l>>3]=s;r=r+1|0;a=s}c[l>>3]=a*f}return}function ix(e,A){e=e|0;A=A|0;return N1(t[e>>2]|0,t[A>>2]|0)|0}function ax(e){e=e|0;var A=0;A=e+108|0;t[A>>2]=0;t[e+112>>2]=32;t[e+116>>2]=-1;t[e+120>>2]=33;t[e+124>>2]=63;t[e+128>>2]=55;t[e+132>>2]=0;t[e+136>>2]=0;t[e+140>>2]=0;A=Uh(A,t[4581]|0)|0;t[e+144>>2]=A;return A|0}function tx(e,A,r){e=e|0;A=A|0;r=r|0;r=L2(1,32)|0;e=t[A>>2]|0;if(e|0)t[r>>2]=o3(e)|0;e=t[A+4>>2]|0;if(e|0)t[r+4>>2]=o3(e)|0;t[r+24>>2]=t[A+24>>2]&127;c[r+16>>3]=+c[A+16>>3];t[r+8>>2]=t[A+8>>2];return r|0}function nx(e,A,r){e=e|0;A=A|0;r=r|0;G2(t[A>>2]|0);G2(t[A+4>>2]|0);G2(A);return}function fx(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0.0,n=0.0,f=0,l=0;e=t[A>>2]|0;i=t[r>>2]|0;f=(i|0)==0;if(!e)if(f)l=5;else e=-1;else if(!f){e=e1(e,i)|0;if(!e)l=5}else e=1;do{if((l|0)==5){e=t[A+4>>2]|0;i=t[r+4>>2]|0;f=(i|0)==0;if(!e){if(!f){e=-1;break}}else{if(f){e=1;break}e=e1(e,i)|0;if(e|0)break}e=(t[A+24>>2]&127)-(t[r+24>>2]&127)|0;if(!e){n=+c[A+16>>3];a=+c[r+16>>3];if(na&1}}}while(0);return e|0}function lx(){fA(189244)|0;return}function sx(){var e=0,A=0;A=h;h=h+16|0;e=A;fA(e|0)|0;h=A;return+(+((t[e+4>>2]|0)+(t[e>>2]|0)-(t[47311]|0)-(t[47312]|0)|0)*.016666666666666666)}function cx(e){e=e|0;var A=0,r=0;A=KF(16)|0;e=(e|0)>2?e:2;r=KF(e<<2)|0;t[A>>2]=r;t[A+12>>2]=r;t[A+8>>2]=r;t[A+4>>2]=r+(e<<2);return A|0}function ox(e){e=e|0;G2(t[e>>2]|0);G2(e);return}function ux(e,A){e=e|0;A=A|0;var r=0,i=0;r=e+12|0;i=t[r>>2]|0;t[r>>2]=i+4;t[i>>2]=A;if((t[r>>2]|0)>>>0>=(t[e+4>>2]|0)>>>0)t[r>>2]=t[e>>2];return}function bx(e){e=e|0;var A=0,r=0,i=0;r=e+8|0;A=t[r>>2]|0;if((A|0)!=(t[e+12>>2]|0)){i=A+4|0;t[r>>2]=i;A=t[A>>2]|0;if(i>>>0>=(t[e+4>>2]|0)>>>0)t[r>>2]=t[e>>2]}else A=0;return A|0}function hx(e,A,r,a){e=e|0;A=A|0;r=r|0;a=a|0;var n=0,f=0,l=0;l=h;h=h+16|0;n=l;if(((A|0)!=0?(f=Pw(e,A)|0,(f|0)!=0):0)?(i[f>>0]|0)!=0:0){A=n3(f,n,10)|0;r=(f|0)==(t[n>>2]|0)?r:(A|0)<(a|0)?a:A}h=l;return r|0}function wx(e,A,r,a){e=e|0;A=A|0;r=+r;a=+a;var n=0,f=0,l=0,s=0.0;l=h;h=h+16|0;n=l;if(((e|0)!=0&(A|0)!=0?(f=Pw(e,A)|0,(f|0)!=0):0)?(i[f>>0]|0)!=0:0){s=+e8(f,n);r=(f|0)==(t[n>>2]|0)?r:s0.0)){A=+wx(e,zw(e,0,107638,0)|0,-1.0,0.0);A=A==0.0?72.0:A}return+A}function dx(e,A,r){e=e|0;A=A|0;r=r|0;if((e|0)!=0&(A|0)!=0)r=Pw(e,A)|0;return r|0}function vx(e,A,r){e=e|0;A=A|0;r=r|0;e=dx(e,A,r)|0;if((e|0)!=0?(i[e>>0]|0)!=0:0)r=e;return r|0}function gx(e,A,r){e=e|0;A=A|0;r=r|0;if(!A)e=r&255;else e=mx(Pw(e,A)|0)|0;return e|0}function mx(e){e=e|0;return px(e,0)|0}function px(e,A){e=e|0;A=A|0;var r=0;if((e|0)!=0?(r=i[e>>0]|0,r<<24>>24!=0):0)if((N1(e,137308)|0)!=0?(N1(e,107649)|0)!=0:0)if((N1(e,107652)|0)!=0?(N1(e,107657)|0)!=0:0){if(((r<<24>>24)+-48|0)>>>0<10)A=(K3(e)|0)&255}else A=1;else A=0;return A|0}function Ex(e){e=e|0;var A=0,r=0;while(1){A=(t[e+16>>2]|0)+220|0;r=t[A>>2]|0;if(!((r|0)!=(e|0)&(r|0)!=0))break;e=t[(t[r+16>>2]|0)+220>>2]|0;if(!e){e=r;continue}t[A>>2]=e}return e|0}function Bx(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0,f=0;if((e|0)!=(A|0)){r=t[e+16>>2]|0;i=r+220|0;if(!(t[i>>2]|0)){t[i>>2]=e;t[r+216>>2]=1}else e=Ex(e)|0;r=t[A+16>>2]|0;i=r+220|0;if(!(t[i>>2]|0)){t[i>>2]=A;t[r+216>>2]=1}else{r=Ex(A)|0;A=r;r=t[r+16>>2]|0}n=e+16|0;i=t[n>>2]|0;a=A+16|0;f=(t[i+120>>2]|0)>(t[r+120>>2]|0);e=f?A:e;t[(f?i:r)+220>>2]=e;i=(t[(f?a:n)>>2]|0)+216|0;t[i>>2]=(t[i>>2]|0)+(t[(t[(f?n:a)>>2]|0)+216>>2]|0)}return e|0}function yx(e){e=e|0;e=t[e+16>>2]|0;t[e+216>>2]=1;t[e+220>>2]=0;i[e+159>>0]=0;return}function Cx(e,A){e=e|0;A=A|0;if((Ex(e)|0)==(e|0)){e=t[e+16>>2]|0;t[e+220>>2]=A;A=(t[A+16>>2]|0)+216|0;t[A>>2]=(t[A>>2]|0)+(t[e+216>>2]|0);return}else ge(107669,107661,194,107685)}function Ix(e,A){e=e|0;A=A|0;var r=0.0;A=t[(t[A+16>>2]|0)+132>>2]|0;r=+c[A+8>>3]*72.0;c[e>>3]=+c[A>>3]*72.0;c[e+8>>3]=r;return}function Zx(e,A,r,i,a,n){e=e|0;A=A|0;r=r|0;i=+i;a=a|0;n=n|0;var f=0,l=0,s=0,o=0.0,u=0,b=0,w=0;b=h;h=h+576|0;u=b;f=0;while(1){if((f|0)>(r|0))break;s=u+(f<<4)|0;l=A+(f<<4)|0;t[s>>2]=t[l>>2];t[s+4>>2]=t[l+4>>2];t[s+8>>2]=t[l+8>>2];t[s+12>>2]=t[l+12>>2];f=f+1|0}o=1.0-i;f=1;while(1){if((f|0)>(r|0))break;l=r-f|0;s=f+-1|0;A=0;while(1){if((A|0)>(l|0))break;w=A+1|0;c[u+(f*96|0)+(A<<4)>>3]=+c[u+(s*96|0)+(w<<4)>>3]*i+ +c[u+(s*96|0)+(A<<4)>>3]*o;c[u+(f*96|0)+(A<<4)+8>>3]=+c[u+(s*96|0)+(w<<4)+8>>3]*i+ +c[u+(s*96|0)+(A<<4)+8>>3]*o;A=w}f=f+1|0}e:do{if(a|0){f=0;while(1){if((f|0)>(r|0))break e;w=a+(f<<4)|0;s=u+(f*96|0)|0;t[w>>2]=t[s>>2];t[w+4>>2]=t[s+4>>2];t[w+8>>2]=t[s+8>>2];t[w+12>>2]=t[s+12>>2];f=f+1|0}}}while(0);e:do{if(n|0){f=0;while(1){if((f|0)>(r|0))break e;w=n+(f<<4)|0;a=u+((r-f|0)*96|0)+(f<<4)|0;t[w>>2]=t[a>>2];t[w+4>>2]=t[a+4>>2];t[w+8>>2]=t[a+8>>2];t[w+12>>2]=t[a+12>>2];f=f+1|0}}}while(0);w=u+(r*96|0)|0;t[e>>2]=t[w>>2];t[e+4>>2]=t[w+4>>2];t[e+8>>2]=t[w+8>>2];t[e+12>>2]=t[w+12>>2];h=b;return}function Gx(e){e=e|0;var A=0,r=0,a=0,n=0;r=0;do{A=t[47315]|0;a=A+1024|0;if((A-r|0)<1024){t[47315]=a;a=AM(t[47316]|0,a)|0;t[47316]=a;A=t[47315]|0}else a=t[47316]|0;A=N4(a+r|0,A-r|0,e)|0;if(!A){n=6;break}r=(U2(A)|0)+r|0;A=t[47316]|0}while((i[A+(r+-1)>>0]|0)!=10);if((n|0)==6)A=t[47316]|0;return((r|0)>0?A:0)|0}function Lx(e){e=e|0;var A=0,r=0,a=0;a=h;h=h+16|0;do{if((e|0)!=0?(i[e>>0]|0)!=0:0)if(!0){A=t[47133]|0;r=t[47318]|0;if((t[47317]|0)==(A|0))A=r;else{if(r){G2(t[r>>2]|0);G2(t[47318]|0);t[47318]=0;A=t[47133]|0}t[47317]=A;if(!A)break;if(!(i[A>>0]|0))break;A=Qx(A)|0;t[47318]=A}if(!((i[e>>0]|0)!=47&(A|0)!=0))break;e=Dx(A,t[47319]|0,e)|0;break}else U();else e=0}while(0);h=a;return e|0}function Qx(e){e=e|0;var A=0,r=0,i=0,a=0,n=0;i=0;a=0;n=0;A=o3(e)|0;r=0;while(1){A=l3(A,107984)|0;if(!A)break;e=(n<<2)+8|0;if(!a)e=$F(e)|0;else e=AM(r,e)|0;t[e+(n<<2)>>2]=A;a=U2(A)|0;i=i>>>0>a>>>0?i:a;a=e;n=n+1|0;A=0;r=e}t[a+(n<<2)>>2]=0;t[47319]=i;return a|0}function Dx(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0,n=0,f=0;n=h;h=h+16|0;i=n;f=t[47320]|0;t[47320]=Q2(f,A+2+(U2(r)|0)|0)|0;while(1){A=t[e>>2]|0;if(!A){e=0;break}f=t[47320]|0;t[i>>2]=A;t[i+4>>2]=107982;t[i+8>>2]=r;T4(f,107975,i)|0;if(!(Y3(t[47320]|0,4)|0)){a=4;break}else e=e+4|0}if((a|0)==4)e=t[47320]|0;h=n;return e|0}function zx(e,A,r){e=e|0;A=A|0;r=r|0;var a=0,n=0,f=0;n=(e|0)==0;a=0;while(1){f=t[A+(a<<2)>>2]|0;if(!f)break;if((!n?(i[e>>0]|0)==(i[f>>0]|0):0)?(e1(e,f)|0)==0:0)break;a=a+1|0}return t[r+(a<<2)>>2]|0}function Wx(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0,n=0.0,f=0.0,l=0.0,s=0.0,o=0.0,u=0.0,b=0.0,w=0.0,k=0.0,d=0,v=0,g=0,m=0,p=0,E=0,B=0,y=0,C=0,I=0,Z=0;C=h;h=h+80|0;B=C+16|0;y=C;m=t[A+4>>2]|0;p=t[A>>2]|0;E=r+8|0;a=0;i=-1;n=1.e+38;A=-1;while(1){if((a|0)>=(m|0))break;v=t[p+(a*48|0)>>2]|0;g=t[p+(a*48|0)+4>>2]|0;d=0;while(1){if((d|0)>=(g|0))break;k=+c[v+(d<<4)>>3]-+c[r>>3];w=+c[v+(d<<4)+8>>3]-+c[E>>3];k=w*w+k*k;I=(i|0)==-1|k>2]|0;i=i+(((i|0)==((t[p+(A*48|0)+4>>2]|0)+-1|0))<<31>>31)|0;i=i-((i|0)%3|0)|0;A=0;while(1){if((A|0)==4)break;Z=A+i|0;c[B+(A<<4)>>3]=+c[a+(Z<<4)>>3];c[B+(A<<4)+8>>3]=+c[a+(Z<<4)+8>>3];A=A+1|0}k=+c[r>>3];s=+c[B>>3]-k;b=+c[E>>3];w=+c[B+8>>3]-b;l=+c[B+48>>3]-k;u=+c[B+56>>3]-b;A=y+8|0;n=1.0;f=0.0;l=u*u+l*l;s=w*w+s*s;while(1){w=(n+f)*.5;Zx(y,B,3,w,0,0);o=+c[y>>3];u=+c[A>>3];if(+Q(+(s-l))<1.0)break;if(+Q(+(n-f))<1.0e-05)break;Z=s>3]=o;c[e+8>>3]=u;h=C;return}function Yx(){return 0}function Fx(e){e=e|0;var A=0.0,r=0,a=0,n=0,f=0,l=0,s=0,o=0;A=+wx(e,t[47146]|0,.75,.01);n=e+16|0;c[(t[n>>2]|0)+32>>3]=A;A=+wx(e,t[47145]|0,.5,.02);c[(t[n>>2]|0)+40>>3]=A;o=IN(vx(e,t[47147]|0,107986)|0,e)|0;t[(t[n>>2]|0)+8>>2]=o;o=Pw(e,t[47154]|0)|0;A=+wx(e,t[47150]|0,14.0,1.0);r=vx(e,t[47151]|0,107994)|0;a=vx(e,t[47152]|0,137314)|0;f=(lv(o)|0)!=0;s=(oN(e)|0)==2;f=HF(e,o,(s?4:0)|(f?2:0),A,r,a)|0;t[(t[n>>2]|0)+104>>2]=f;f=t[47155]|0;if((f|0?(l=Pw(e,f)|0,l|0):0)?i[l>>0]|0:0){o=(lv(l)|0)!=0;o=HF(e,l,o?2:0,A,r,a)|0;t[(t[n>>2]|0)+108>>2]=o;o=(t[(Bd(e)|0)+16>>2]|0)+113|0;i[o>>0]=i[o>>0]|16}s=(hx(e,t[47158]|0,0,0)|0)&255;o=t[n>>2]|0;i[o+144>>0]=s;F5[t[t[(t[o+8>>2]|0)+4>>2]>>2]&127](e);return}function Mx(e){e=e|0;var A=0,r=0,a=0,n=0,f=0.0,l=0,s=0,o=0,u=0,b=0,w=0,k=0,d=0,v=0,g=0,m=0,p=0;p=h;h=h+112|0;o=p+96|0;u=p+80|0;v=p+40|0;m=p;d=e+48|0;w=Bd(t[((t[e>>2]&3|0)==3?e:d)+40>>2]|0)|0;n=o+8|0;t[n>>2]=0;b=u+8|0;t[b>>2]=0;A=t[47182]|0;if(((A|0)!=0?(r=Pw(e,A)|0,(r|0)!=0):0)?(i[r>>0]|0)!=0:0){Vx(e,o);g=(lv(r)|0)!=0;f=+c[o>>3];a=t[n>>2]|0;A=t[o+12>>2]|0;r=HF(e,r,g?2:0,f,a,A)|0;g=e+16|0;t[(t[g>>2]|0)+96>>2]=r;r=(t[w+16>>2]|0)+113|0;i[r>>0]=i[r>>0]|1;r=mx(dx(e,t[47192]|0,137308)|0)|0;i[(t[g>>2]|0)+114>>0]=r;g=1;r=a}else{g=0;A=0;f=0.0;r=0}a=t[47183]|0;if((a|0?(l=Pw(e,a)|0,l|0):0)?i[l>>0]|0:0){if(!r){Vx(e,o);f=+c[o>>3];r=t[n>>2]|0;A=t[o+12>>2]|0}n=(lv(l)|0)!=0;l=HF(e,l,n?2:0,f,r,A)|0;t[(t[e+16>>2]|0)+108>>2]=l;l=(t[w+16>>2]|0)+113|0;i[l>>0]=i[l>>0]|32}A=t[47197]|0;if(((A|0)!=0?(s=Pw(e,A)|0,(s|0)!=0):0)?(i[s>>0]|0)!=0:0){Nx(e,o,u);l=(lv(s)|0)!=0;f=+c[u>>3];A=t[b>>2]|0;r=t[u+12>>2]|0;s=HF(e,s,l?2:0,f,A,r)|0;t[(t[e+16>>2]|0)+100>>2]=s;s=(t[w+16>>2]|0)+113|0;i[s>>0]=i[s>>0]|2}else{r=0;f=0.0;A=0}a=t[47198]|0;if((a|0?(k=Pw(e,a)|0,k|0):0)?i[k>>0]|0:0){if(!A){Nx(e,o,u);r=t[u+12>>2]|0;f=+c[u>>3];A=t[b>>2]|0}b=(lv(k)|0)!=0;k=HF(e,k,b?2:0,f,A,r)|0;t[(t[e+16>>2]|0)+104>>2]=k;k=(t[w+16>>2]|0)+113|0;i[k>>0]=i[k>>0]|4}A=Hw(e,111455)|0;A=A|0?A:195059;if(i[A>>0]|0)i[(t[(t[((t[e>>2]&3|0)==3?e:d)+40>>2]|0)+16>>2]|0)+145>>0]=1;n=e+16|0;a=(t[n>>2]|0)+16|0;r=t[((t[e>>2]&3|0)==3?e:d)+40>>2]|0;Rx(v,t[(t[(t[(t[r+16>>2]|0)+8>>2]|0)+4>>2]|0)+8>>2]|0,r,A);A=v;r=a+40|0;do{t[a>>2]=t[A>>2];a=a+4|0;A=A+4|0}while((a|0)<(r|0));if((xx(e,t[47204]|0)|0)<<24>>24)i[(t[n>>2]|0)+46>>0]=0;A=Hw(e,111464)|0;A=A|0?A:195059;if(!(i[A>>0]|0))r=e+-48|0;else{r=e+-48|0;i[(t[(t[((t[e>>2]&3|0)==2?e:r)+40>>2]|0)+16>>2]|0)+145>>0]=1}a=(t[n>>2]|0)+56|0;r=t[((t[e>>2]&3|0)==2?e:r)+40>>2]|0;Rx(m,t[(t[(t[(t[r+16>>2]|0)+8>>2]|0)+4>>2]|0)+8>>2]|0,r,A);A=m;r=a+40|0;do{t[a>>2]=t[A>>2];a=a+4|0;A=A+4|0}while((a|0)<(r|0));if((xx(e,t[47205]|0)|0)<<24>>24)i[(t[n>>2]|0)+86>>0]=0;h=p;return g|0}function Vx(e,A){e=e|0;A=A|0;c[A>>3]=+wx(e,t[47179]|0,14.0,1.0);t[A+8>>2]=vx(e,t[47180]|0,107994)|0;t[A+12>>2]=vx(e,t[47181]|0,137314)|0;return}function Nx(e,A,r){e=e|0;A=A|0;r=r|0;var i=0;i=A+8|0;if(!(t[i>>2]|0))Vx(e,A);c[r>>3]=+wx(e,t[47199]|0,+c[A>>3],1.0);t[r+8>>2]=vx(e,t[47200]|0,t[i>>2]|0)|0;t[r+12>>2]=vx(e,t[47201]|0,t[A+12>>2]|0)|0;return}function Rx(e,A,r,a){e=e|0;A=A|0;r=r|0;a=a|0;var n=0,f=0,l=0,s=0,c=0,o=0;o=h;h=h+128|0;c=o+80|0;f=o+40|0;n=o;if((a|0)!=0?(s=C1(a,58)|0,(s|0)!=0):0){i[s>>0]=0;l=s+1|0;R5[A&31](f,r,a,l);r=c;n=f;A=r+36|0;do{t[r>>2]=t[n>>2];r=r+4|0;n=n+4|0}while((r|0)<(A|0));i[s>>0]=58;a=l}else{R5[A&31](n,r,a,0);r=c;A=r+36|0;do{t[r>>2]=t[n>>2];r=r+4|0;n=n+4|0}while((r|0)<(A|0))}r=e;n=c;A=r+36|0;do{t[r>>2]=t[n>>2];r=r+4|0;n=n+4|0}while((r|0)<(A|0));t[e+36>>2]=a;h=o;return}function xx(e,A){e=e|0;A=A|0;var r=0;if(((A|0)!=0?(r=Pw(e,A)|0,(r|0)!=0):0)?(i[r>>0]|0)!=0:0)e=(mx(r)|0)<<24>>24==0&1;else e=0;return e|0}function Jx(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0,f=0,l=0,s=0,o=0,u=0.0,b=0.0;s=h;h=h+32|0;f=s;l=t[A+8>>2]|0;r=t[A+4>>2]|0;r=(t[A+44>>2]|0)+((P((r|0)>1?r+-1|0:0,l)|0)<<4)|0;i=f+16|0;t[i>>2]=t[r>>2];t[i+4>>2]=t[r+4>>2];t[i+8>>2]=t[r+8>>2];t[i+12>>2]=t[r+12>>2];t[f>>2]=t[r>>2];t[f+4>>2]=t[r+4>>2];t[f+8>>2]=t[r+8>>2];t[f+12>>2]=t[r+12>>2];a=f+8|0;n=f+24|0;A=1;while(1){if((A|0)>=(l|0))break;o=r+(A<<4)|0;b=+c[o>>3];c[f>>3]=+c[(+c[f>>3]>3];u=+c[o+8>>3];c[a>>3]=+c[(+c[a>>3]>3];c[i>>3]=+c[(+c[i>>3]>b?i:o)>>3];c[n>>3]=+c[(+c[n>>3]>u?i:o)+8>>3];A=A+1|0}t[e>>2]=t[f>>2];t[e+4>>2]=t[f+4>>2];t[e+8>>2]=t[f+8>>2];t[e+12>>2]=t[f+12>>2];t[e+16>>2]=t[f+16>>2];t[e+20>>2]=t[f+20>>2];t[e+24>>2]=t[f+24>>2];t[e+28>>2]=t[f+28>>2];h=s;return}function Hx(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0;r=h;h=h+64|0;n=r+32|0;i=r;a=t[e+16>>2]|0;e=a+16|0;a=t[a+116>>2]&1;t[n>>2]=t[e>>2];t[n+4>>2]=t[e+4>>2];t[n+8>>2]=t[e+8>>2];t[n+12>>2]=t[e+12>>2];t[n+16>>2]=t[e+16>>2];t[n+20>>2]=t[e+20>>2];t[n+24>>2]=t[e+24>>2];t[n+28>>2]=t[e+28>>2];Px(i,n,A,a);t[e>>2]=t[i>>2];t[e+4>>2]=t[i+4>>2];t[e+8>>2]=t[i+8>>2];t[e+12>>2]=t[i+12>>2];t[e+16>>2]=t[i+16>>2];t[e+20>>2]=t[i+20>>2];t[e+24>>2]=t[i+24>>2];t[e+28>>2]=t[i+28>>2];h=r;return}function Px(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0.0,n=0.0,f=0.0,l=0,s=0.0,o=0.0,u=0.0;n=+c[r+56>>3];o=+c[r+64>>3];l=i<<24>>24==0;s=+c[r+24>>3];f=+c[r+32>>3];u=(l?s:f)*.5;a=n-u;n=u+n;if(a<+c[A>>3])c[A>>3]=a;i=A+16|0;if(n>+c[i>>3])c[i>>3]=n;n=(l?f:s)*.5;a=o-n;n=n+o;i=A+8|0;if(a<+c[i>>3])c[i>>3]=a;i=A+24|0;if(n>+c[i>>3])c[i>>3]=n;t[e>>2]=t[A>>2];t[e+4>>2]=t[A+4>>2];t[e+8>>2]=t[A+8>>2];t[e+12>>2]=t[A+12>>2];t[e+16>>2]=t[A+16>>2];t[e+20>>2]=t[A+20>>2];t[e+24>>2]=t[A+24>>2];t[e+28>>2]=t[A+28>>2];return}function Xx(e){e=e|0;var A=0,r=0,a=0,n=0,f=0,l=0,s=0,o=0,u=0,b=0,w=0,k=0,d=0,v=0,g=0,m=0,p=0,E=0,B=0,y=0,C=0,I=0,Z=0,G=0,L=0,Q=0,D=0,z=0,W=0,Y=0,F=0,M=0,V=0,N=0.0,R=0.0,x=0.0,J=0.0;V=h;h=h+448|0;W=V+416|0;g=V+384|0;m=V+304|0;M=V+256|0;z=V+192|0;Z=V+144|0;G=V+96|0;A=V+400|0;r=V+368|0;a=V+352|0;n=V+336|0;p=V+288|0;E=V+224|0;B=V+160|0;y=V+112|0;C=V+64|0;I=V+32|0;Y=V;F=e+16|0;if((gk(e)|0)==0?(t[(t[F>>2]|0)+180>>2]|0)==0:0){Sx(A,0.0,0.0);t[M>>2]=t[A>>2];t[M+4>>2]=t[A+4>>2];t[M+8>>2]=t[A+8>>2];t[M+12>>2]=t[A+12>>2];M=M+16|0;Sx(r,0.0,0.0);t[M>>2]=t[r>>2];t[M+4>>2]=t[r+4>>2];t[M+8>>2]=t[r+8>>2];t[M+12>>2]=t[r+12>>2]}else{Sx(a,2147483647.0,2147483647.0);t[M>>2]=t[a>>2];t[M+4>>2]=t[a+4>>2];t[M+8>>2]=t[a+8>>2];t[M+12>>2]=t[a+12>>2];D=M+16|0;Sx(n,-2147483647.0,-2147483647.0);t[D>>2]=t[n>>2];t[D+4>>2]=t[n+4>>2];t[D+8>>2]=t[n+8>>2];t[D+12>>2]=t[n+12>>2];b=G+8|0;w=m+16|0;L=M+8|0;k=m+8|0;Q=M+24|0;d=m+24|0;v=Z+8|0;u=sd(e)|0;while(1){if(!u)break;Ix(Z,u);A=u+16|0;o=t[A>>2]|0;c[G>>3]=(+c[o+96>>3]+ +c[o+88>>3])*.5;c[b>>3]=+c[o+80>>3]*.5;t[g>>2]=t[Z>>2];t[g+4>>2]=t[Z+4>>2];t[g+8>>2]=t[Z+8>>2];t[g+12>>2]=t[Z+12>>2];t[W>>2]=t[G>>2];t[W+4>>2]=t[G+4>>2];t[W+8>>2]=t[G+8>>2];t[W+12>>2]=t[G+12>>2];jx(m,g,W);t[g>>2]=t[Z>>2];t[g+4>>2]=t[Z+4>>2];t[g+8>>2]=t[Z+8>>2];t[g+12>>2]=t[Z+12>>2];t[W>>2]=t[G>>2];t[W+4>>2]=t[G+4>>2];t[W+8>>2]=t[G+8>>2];t[W+12>>2]=t[G+12>>2];Ux(p,g,W);t[w>>2]=t[p>>2];t[w+4>>2]=t[p+4>>2];t[w+8>>2]=t[p+8>>2];t[w+12>>2]=t[p+12>>2];c[M>>3]=+c[(+c[M>>3]<+c[m>>3]?M:m)>>3];c[L>>3]=+c[(+c[L>>3]<+c[k>>3]?M:m)+8>>3];c[D>>3]=+c[(+c[D>>3]>+c[w>>3]?M:m)+16>>3];c[Q>>3]=+c[(+c[Q>>3]>+c[d>>3]?M:m)+24>>3];A=t[(t[A>>2]|0)+108>>2]|0;if(A|0?i[A+81>>0]|0:0){o=t[(t[F>>2]|0)+116>>2]&1;t[W>>2]=t[M>>2];t[W+4>>2]=t[M+4>>2];t[W+8>>2]=t[M+8>>2];t[W+12>>2]=t[M+12>>2];t[W+16>>2]=t[M+16>>2];t[W+20>>2]=t[M+20>>2];t[W+24>>2]=t[M+24>>2];t[W+28>>2]=t[M+28>>2];Px(E,W,A,o);t[M>>2]=t[E>>2];t[M+4>>2]=t[E+4>>2];t[M+8>>2]=t[E+8>>2];t[M+12>>2]=t[E+12>>2];t[M+16>>2]=t[E+16>>2];t[M+20>>2]=t[E+20>>2];t[M+24>>2]=t[E+24>>2];t[M+28>>2]=t[E+28>>2]}o=Ow(e,u)|0;while(1){if(!o)break;s=o+16|0;A=t[s>>2]|0;l=A+8|0;r=t[l>>2]|0;if(r|0){f=0;while(1){if((f|0)<(t[r+4>>2]|0))n=0;else break;while(1){a=t[r>>2]|0;if((n|0)>=(t[a+(f*48|0)+4>>2]|0))break;r=(t[a+(f*48|0)>>2]|0)+(n<<4)|0;t[Z>>2]=t[r>>2];t[Z+4>>2]=t[r+4>>2];t[Z+8>>2]=t[r+8>>2];t[Z+12>>2]=t[r+12>>2];R=+c[Z>>3];c[M>>3]=+c[(+c[M>>3]>3];N=+c[v>>3];c[L>>3]=+c[(+c[L>>3]>3];c[D>>3]=+c[(+c[D>>3]>R?D:Z)>>3];c[Q>>3]=+c[(+c[Q>>3]>N?D:Z)+8>>3];n=n+1|0;r=t[l>>2]|0}f=f+1|0}r=t[A+96>>2]|0;if((r|0)!=0?(i[r+81>>0]|0)!=0:0){A=t[(t[F>>2]|0)+116>>2]&1;t[W>>2]=t[M>>2];t[W+4>>2]=t[M+4>>2];t[W+8>>2]=t[M+8>>2];t[W+12>>2]=t[M+12>>2];t[W+16>>2]=t[M+16>>2];t[W+20>>2]=t[M+20>>2];t[W+24>>2]=t[M+24>>2];t[W+28>>2]=t[M+28>>2];Px(B,W,r,A);t[M>>2]=t[B>>2];t[M+4>>2]=t[B+4>>2];t[M+8>>2]=t[B+8>>2];t[M+12>>2]=t[B+12>>2];t[M+16>>2]=t[B+16>>2];t[M+20>>2]=t[B+20>>2];t[M+24>>2]=t[B+24>>2];t[M+28>>2]=t[B+28>>2];A=t[s>>2]|0}r=t[A+100>>2]|0;if((r|0)!=0?(i[r+81>>0]|0)!=0:0){A=t[(t[F>>2]|0)+116>>2]&1;t[W>>2]=t[M>>2];t[W+4>>2]=t[M+4>>2];t[W+8>>2]=t[M+8>>2];t[W+12>>2]=t[M+12>>2];t[W+16>>2]=t[M+16>>2];t[W+20>>2]=t[M+20>>2];t[W+24>>2]=t[M+24>>2];t[W+28>>2]=t[M+28>>2];Px(y,W,r,A);t[M>>2]=t[y>>2];t[M+4>>2]=t[y+4>>2];t[M+8>>2]=t[y+8>>2];t[M+12>>2]=t[y+12>>2];t[M+16>>2]=t[y+16>>2];t[M+20>>2]=t[y+20>>2];t[M+24>>2]=t[y+24>>2];t[M+28>>2]=t[y+28>>2];A=t[s>>2]|0}r=t[A+104>>2]|0;if((r|0)!=0?(i[r+81>>0]|0)!=0:0){A=t[(t[F>>2]|0)+116>>2]&1;t[W>>2]=t[M>>2];t[W+4>>2]=t[M+4>>2];t[W+8>>2]=t[M+8>>2];t[W+12>>2]=t[M+12>>2];t[W+16>>2]=t[M+16>>2];t[W+20>>2]=t[M+20>>2];t[W+24>>2]=t[M+24>>2];t[W+28>>2]=t[M+28>>2];Px(C,W,r,A);t[M>>2]=t[C>>2];t[M+4>>2]=t[C+4>>2];t[M+8>>2]=t[C+8>>2];t[M+12>>2]=t[C+12>>2];t[M+16>>2]=t[C+16>>2];t[M+20>>2]=t[C+20>>2];t[M+24>>2]=t[C+24>>2];t[M+28>>2]=t[C+28>>2];A=t[s>>2]|0}A=t[A+108>>2]|0;if(A|0?i[A+81>>0]|0:0){s=t[(t[F>>2]|0)+116>>2]&1;t[W>>2]=t[M>>2];t[W+4>>2]=t[M+4>>2];t[W+8>>2]=t[M+8>>2];t[W+12>>2]=t[M+12>>2];t[W+16>>2]=t[M+16>>2];t[W+20>>2]=t[M+20>>2];t[W+24>>2]=t[M+24>>2];t[W+28>>2]=t[M+28>>2];Px(I,W,A,s);t[M>>2]=t[I>>2];t[M+4>>2]=t[I+4>>2];t[M+8>>2]=t[I+8>>2];t[M+12>>2]=t[I+12>>2];t[M+16>>2]=t[I+16>>2];t[M+20>>2]=t[I+20>>2];t[M+24>>2]=t[I+24>>2];t[M+28>>2]=t[I+28>>2]}}o=qw(e,o)|0}u=cd(e,u)|0}A=t[F>>2]|0;a=t[A+180>>2]|0;n=A+184|0;f=z+8|0;l=z+16|0;s=z+24|0;r=1;while(1){if((r|0)>(a|0))break;J=+c[(t[(t[(t[n>>2]|0)+(r<<2)>>2]|0)+16>>2]|0)+16>>3];c[z>>3]=J;G=t[(t[(t[n>>2]|0)+(r<<2)>>2]|0)+16>>2]|0;x=+c[G+24>>3];c[f>>3]=x;N=+c[G+32>>3];c[l>>3]=N;R=+c[G+40>>3];c[s>>3]=R;c[M>>3]=+c[(+c[M>>3]>3];c[L>>3]=+c[(+c[L>>3]>3];c[D>>3]=+c[(+c[D>>3]>N?M:z)+16>>3];c[Q>>3]=+c[(+c[Q>>3]>R?M:z)+24>>3];r=r+1|0}r=t[A+12>>2]|0;if((r|0)!=0?(i[r+81>>0]|0)!=0:0){A=t[A+116>>2]&1;t[W>>2]=t[M>>2];t[W+4>>2]=t[M+4>>2];t[W+8>>2]=t[M+8>>2];t[W+12>>2]=t[M+12>>2];t[W+16>>2]=t[M+16>>2];t[W+20>>2]=t[M+20>>2];t[W+24>>2]=t[M+24>>2];t[W+28>>2]=t[M+28>>2];Px(Y,W,r,A);t[M>>2]=t[Y>>2];t[M+4>>2]=t[Y+4>>2];t[M+8>>2]=t[Y+8>>2];t[M+12>>2]=t[Y+12>>2];t[M+16>>2]=t[Y+16>>2];t[M+20>>2]=t[Y+20>>2];t[M+24>>2]=t[Y+24>>2];t[M+28>>2]=t[Y+28>>2];A=t[F>>2]|0}F=A+16|0;t[F>>2]=t[M>>2];t[F+4>>2]=t[M+4>>2];t[F+8>>2]=t[M+8>>2];t[F+12>>2]=t[M+12>>2];t[F+16>>2]=t[M+16>>2];t[F+20>>2]=t[M+20>>2];t[F+24>>2]=t[M+24>>2];t[F+28>>2]=t[M+28>>2]}h=V;return}function Sx(e,A,r){e=e|0;A=+A;r=+r;c[e>>3]=A;c[e+8>>3]=r;return}function jx(e,A,r){e=e|0;A=A|0;r=r|0;var i=0.0;i=+c[A+8>>3]-+c[r+8>>3];c[e>>3]=+c[A>>3]-+c[r>>3];c[e+8>>3]=i;return}function Ux(e,A,r){e=e|0;A=A|0;r=r|0;var i=0.0;i=+c[r+8>>3]+ +c[A+8>>3];c[e>>3]=+c[r>>3]+ +c[A>>3];c[e+8>>3]=i;return}function Tx(e){e=e|0;if((t[e+60>>2]|0)==(e|0))e=1;else e=(S1(Mk(e)|0,108006,7)|0)==0&1;return e|0}function Ox(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;e:do{if(!a)switch(Yd(A)|0){case 0:{a=zw(e,0,r,195059)|0;break e}case 1:{a=zw(e,1,r,195059)|0;break e}case 2:{a=zw(e,2,r,195059)|0;break e}default:{a=0;break e}}}while(0);Mw(A,a,i)|0;return a|0}function _x(e){e=e|0;var A=0,r=0,n=0,f=0,l=0,s=0,c=0;c=h;h=h+144|0;n=c;l=qx(e)|0;f=Uh(23592,t[4581]|0)|0;s=Rv(e,108014,1)|0;Sd(s,137483,280,1)|0;cw(n,128,c+16|0);A=sd(e)|0;while(1){if(!A)break;e:do{if(!(i[(t[A+16>>2]|0)+118>>0]|0)){r=Ow(e,A)|0;while(1){if(!r)break e;Kx(r,s,n,f,l);r=qw(e,r)|0}}}while(0);A=cd(e,A)|0}hw(n);Ph(f)|0;r=gk(s)|0;A=sd(s)|0;while(1){if(!A)break;f=cd(s,A)|0;Ed(e,A)|0;A=f}vk(s)|0;if(r|0){s=(t[e+16>>2]|0)+136|0;a[s>>1]=a[s>>1]|1}Ph(l)|0;h=c;return r|0}function qx(e){e=e|0;var A=0;A=Uh(23628,t[4581]|0)|0;fJ(e,A);return A|0}function Kx(e,A,r,a,n){e=e|0;A=A|0;r=r|0;a=a|0;n=n|0;var f=0,l=0,s=0,c=0,o=0,u=0,b=0,w=0,k=0,d=0,v=0,g=0;g=h;h=h+48|0;k=g+32|0;w=g+24|0;v=g+16|0;d=g+8|0;c=g;u=t[e>>2]&3;o=t[((u|0)==3?e:e+48|0)+40>>2]|0;u=t[((u|0)==2?e:e+-48|0)+40>>2]|0;do{if(!(i[(t[u+16>>2]|0)+118>>0]|0)){if(!(y1(Mk(o)|0,108006,7)|0))b=$x(n,Mk(o)|0)|0;else b=0;if(!(y1(Mk(u)|0,108006,7)|0))l=$x(n,Mk(u)|0)|0;else l=0;f=(b|0)!=0;s=(l|0)!=0;if(f|s){if((b|0)==(l|0)){d=Mk(o)|0;v=Mk(o)|0;t[c>>2]=d;t[c+4>>2]=v;nw(0,108029,c)|0;break}n=eJ(a,e)|0;if(n|0){AJ(e,t[n+16>>2]|0,t[n+20>>2]|0)|0;break}if(!s)if(!(Wd(b,u)|0)){iJ(a,o,u,AJ(e,rJ(o,b,r,A)|0,u)|0);break}else{d=Mk(u)|0;v=Mk(b)|0;t[k>>2]=d;t[k+4>>2]=v;nw(0,108184,k)|0;break}if(!f)if(!(Wd(l,o)|0)){iJ(a,o,u,AJ(e,o,rJ(u,l,r,A)|0)|0);break}else{d=Mk(o)|0;v=Mk(l)|0;t[w>>2]=d;t[w+4>>2]=v;nw(0,108147,w)|0;break}if(Wd(l,b)|0){k=Mk(b)|0;v=Mk(l)|0;t[d>>2]=k;t[d+4>>2]=v;nw(0,108067,d)|0;break}if(!(Wd(b,l)|0)){v=rJ(o,b,r,A)|0;iJ(a,o,u,AJ(e,v,rJ(u,l,r,A)|0)|0);break}else{k=Mk(l)|0;d=Mk(b)|0;t[v>>2]=k;t[v+4>>2]=d;nw(0,108107,v)|0;break}}}}while(0);h=g;return}function $x(e,A){e=e|0;A=A|0;e=L5[t[e>>2]&63](e,A,512)|0;if(!e)e=0;else e=t[e+12>>2]|0;return e|0}function eJ(e,A){e=e|0;A=A|0;var r=0,i=0,a=0;r=h;h=h+16|0;i=r;a=t[A>>2]&3;t[i>>2]=t[((a|0)==3?A:A+48|0)+40>>2];t[i+4>>2]=t[((a|0)==2?A:A+-48|0)+40>>2];A=L5[t[e>>2]&63](e,i,512)|0;h=r;return A|0}function AJ(e,A,r){e=e|0;A=A|0;r=r|0;r=lk(Bd(A)|0,A,r,0,1)|0;Sd(r,137460,176,1)|0;jw(e,r)|0;return r|0}function rJ(e,A,r,a){e=e|0;A=A|0;r=r|0;a=a|0;var n=0,f=0,l=0,s=0,c=0;c=h;h=h+112|0;n=c;s=c+4|0;bw(r,108221)|0;l=t[47321]|0;t[47321]=l+1;t[n>>2]=l;T4(s,137395,n)|0;bw(r,s)|0;s=r+4|0;n=t[s>>2]|0;l=r+8|0;if(n>>>0>=(t[l>>2]|0)>>>0){ow(r,1)|0;n=t[s>>2]|0}t[s>>2]=n+1;i[n>>0]=58;bw(r,Mk(A)|0)|0;f=yd(A)|0;n=t[s>>2]|0;if(n>>>0>=(t[l>>2]|0)>>>0){ow(r,1)|0;n=t[s>>2]|0}i[n>>0]=0;r=t[r>>2]|0;t[s>>2]=r;s=gd(f,r,1)|0;Sd(s,137447,304,1)|0;i[(t[s+16>>2]|0)+118>>0]=1;hd(A,s,1)|0;hd(a,e,1)|0;a=Bd(s)|0;t[47154]=Ox(a,s,108224,195059,t[47154]|0)|0;a=Bd(s)|0;t[47157]=Ox(a,s,141082,134335,t[47157]|0)|0;a=Bd(s)|0;t[47147]=Ox(a,s,108230,108236,t[47147]|0)|0;h=c;return s|0}function iJ(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0,n=0,f=0,l=0,s=0,c=0,o=0,u=0,b=0;a=h;h=h+32|0;n=a;u=n+8|0;t[u>>2]=A;o=n+12|0;t[o>>2]=r;b=t[i>>2]&3;l=i+48|0;s=n+16|0;t[s>>2]=t[((b|0)==3?i:l)+40>>2];c=i+-48|0;f=n+20|0;t[f>>2]=t[((b|0)==2?i:c)+40>>2];L5[t[e>>2]&63](e,n,1)|0;t[u>>2]=r;t[o>>2]=A;r=t[i>>2]&3;t[s>>2]=t[((r|0)==2?i:c)+40>>2];t[f>>2]=t[((r|0)==3?i:l)+40>>2];L5[t[e>>2]&63](e,n,1)|0;h=a;return}function aJ(e,A,r){e=e|0;A=A|0;r=r|0;r=KF(24)|0;t[r+8>>2]=t[A+8>>2];t[r+12>>2]=t[A+12>>2];t[r+16>>2]=t[A+16>>2];t[r+20>>2]=t[A+20>>2];return r|0}function tJ(e,A,r){e=e|0;A=A|0;r=r|0;G2(A);return}function nJ(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;e=t[A>>2]|0;i=t[r>>2]|0;if(e>>>0>=i>>>0)if(e>>>0>i>>>0)e=1;else{A=t[A+4>>2]|0;r=t[r+4>>2]|0;return(A>>>0>>0?-1:A>>>0>r>>>0&1)|0}else e=-1;return e|0}function fJ(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0,f=0,l=0;f=h;h=h+16|0;n=f;a=e+16|0;i=1;while(1){e=t[a>>2]|0;if((i|0)>(t[e+180>>2]|0))break;e=t[(t[e+184>>2]|0)+(i<<2)>>2]|0;r=Mk(e)|0;if(!(L5[t[A>>2]&63](A,r,512)|0)){l=KF(16)|0;t[l+8>>2]=r;t[l+12>>2]=e;L5[t[A>>2]&63](A,l,1)|0}else{t[n>>2]=r;nw(0,108240,n)|0}fJ(e,A);i=i+1|0}h=f;return}function lJ(e,A,r){e=e|0;A=A|0;r=r|0;G2(A);return}function sJ(e){e=e|0;var A=0,r=0,i=0;i=Rv(e,108014,1)|0;Sd(i,137483,280,1)|0;A=sd(e)|0;while(1){if(!A)break;r=Ow(e,A)|0;while(1){if(!r)break;cJ(r,i);r=qw(e,r)|0}A=cd(e,A)|0}A=sd(i)|0;while(1){if(!A)break;r=cd(i,A)|0;oJ(A);Ed(e,A)|0;A=r}vk(i)|0;return}function cJ(e,A){e=e|0;A=A|0;var r=0,a=0;r=t[e>>2]&3;a=t[((r|0)==3?e:e+48|0)+40>>2]|0;r=t[((r|0)==2?e:e+-48|0)+40>>2]|0;if(!((i[(t[a+16>>2]|0)+118>>0]|0)==0?!(i[(t[r+16>>2]|0)+118>>0]|0):0)){a=uJ(a,A)|0;r=AJ(e,a,uJ(r,A)|0)|0;a=t[e+16>>2]|0;A=a+8|0;r=t[r+16>>2]|0;t[r+8>>2]=t[A>>2];t[A>>2]=0;A=a+96|0;t[r+96>>2]=t[A>>2];t[A>>2]=0;A=a+108|0;t[r+108>>2]=t[A>>2];t[A>>2]=0;A=a+100|0;t[r+100>>2]=t[A>>2];t[A>>2]=0;a=a+104|0;t[r+104>>2]=t[a>>2];t[a>>2]=0;bJ(e)}return}function oJ(e){e=e|0;var A=0,r=0,i=0;i=e+16|0;A=t[i>>2]|0;r=t[A+132>>2]|0;if(r){G2(r);A=t[i>>2]|0}r=t[A+8>>2]|0;if(r){F5[t[(t[r+4>>2]|0)+4>>2]&127](e);A=t[i>>2]|0}SF(t[A+104>>2]|0);SF(t[(t[i>>2]|0)+108>>2]|0);Ud(e,137447)|0;return}function uJ(e,A){e=e|0;A=A|0;var r=0,a=0,n=0;a=Bd(e)|0;e:do{if(i[(t[e+16>>2]|0)+118>>0]|0){hd(A,e,1)|0;e=C1(Mk(e)|0,58)|0;if(!e)ge(111208,107661,1225,108292);A=e+1|0;e=gd(a,A,0)|0;if(!e){e=gd(a,A,1)|0;Sd(e,137447,304,1)|0;A=Vw(a,1,0)|0;while(1){if(!A)break e;n=Pw(e,A)|0;r=t[A+12>>2]|0;if((n|0)!=(r|0))Mw(e,A,r)|0;A=Vw(a,1,A)|0}}}}while(0);return e|0}function bJ(e){e=e|0;var A=0;A=e+16|0;G2(t[(t[A>>2]|0)+144>>2]|0);hJ(e);SF(t[(t[A>>2]|0)+96>>2]|0);SF(t[(t[A>>2]|0)+108>>2]|0);SF(t[(t[A>>2]|0)+100>>2]|0);SF(t[(t[A>>2]|0)+104>>2]|0);Ud(e,137460)|0;return}function hJ(e){e=e|0;var A=0,r=0,i=0;i=e+16|0;e=t[i>>2]|0;A=t[e+8>>2]|0;if(A){r=0;while(1){e=t[A>>2]|0;if((r|0)>=(t[A+4>>2]|0))break;G2(t[e+(r*48|0)>>2]|0);r=r+1|0;A=t[(t[i>>2]|0)+8>>2]|0}G2(e);G2(t[(t[i>>2]|0)+8>>2]|0);e=t[i>>2]|0}t[e+8>>2]=0;return}function wJ(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0;a=zw(e,A,r,0)|0;if(!a)a=zw(e,A,r,i)|0;return a|0}function kJ(e,A){e=e|0;A=A|0;var r=0,a=0,n=0,f=0,l=0,s=0,c=0,o=0,u=0,b=0;b=h;h=h+32|0;l=b;f=b+8|0;s=b+16|0;o=C1(e,59)|0;u=A+4|0;r=t[u>>2]|0;c=A+8|0;if(r>>>0>=(t[c>>2]|0)>>>0){ow(A,1)|0;r=t[u>>2]|0}t[u>>2]=r+1;i[r>>0]=38;if(((o|0)!=0?(a=o-e|0,(a+-2|0)>>>0<=6):0)?(X4(s,e,a)|0,i[s+a>>0]=0,t[f>>2]=s,n=r8(f,23664,252,8,96)|0,(n|0)!=0):0){t[l>>2]=t[n+4>>2];T4(s,137395,l)|0;e=t[u>>2]|0;if(e>>>0>=(t[c>>2]|0)>>>0){ow(A,1)|0;e=t[u>>2]|0}t[u>>2]=e+1;i[e>>0]=35;bw(A,s)|0;e=t[u>>2]|0;if(e>>>0>=(t[c>>2]|0)>>>0){ow(A,1)|0;e=t[u>>2]|0}t[u>>2]=e+1;i[e>>0]=59;e=o+1|0}h=b;return e|0}function dJ(e,A){e=e|0;A=A|0;return e1(t[e>>2]|0,t[A>>2]|0)|0}function vJ(e,A){e=e|0;A=A|0;var r=0,a=0,n=0,f=0,l=0,s=0,c=0,o=0,u=0,b=0,w=0,k=0;k=h;h=h+1072|0;c=k+8|0;s=k;l=k+16|0;b=k+24|0;t[l>>2]=e;if((t[47322]|0)!=(A|0)){t[47322]=A;i[194958]=0}cw(b,1024,k+40|0);w=b+4|0;u=b+8|0;while(1){a=e+1|0;t[l>>2]=a;r=i[e>>0]|0;if(!(r<<24>>24))break;do{if((r&255)<192)if(r<<24>>24==38){a=mJ(l)|0;if(!a)r=38;else{if(a>>>0<127){r=a&255;break}e=t[w>>2]|0;r=e>>>0>=(t[u>>2]|0)>>>0;if(a>>>0<2047){if(r){ow(b,1)|0;e=t[w>>2]|0}t[w>>2]=e+1;i[e>>0]=a>>>6|192;r=(a&63|128)&255;break}if(r){ow(b,1)|0;e=t[w>>2]|0}t[w>>2]=e+1;i[e>>0]=a>>>12|224;e=t[w>>2]|0;if(e>>>0>=(t[u>>2]|0)>>>0){ow(b,1)|0;e=t[w>>2]|0}t[w>>2]=e+1;i[e>>0]=a>>>6&63|128;r=(a&63|128)&255}}else{f=0;o=9}else if((r&255)>=224)if((r&255)>=240)if((r&255)<248){f=3;o=9}else{if(!(i[194958]|0)){t[s>>2]=Mk(A)|0;nw(0,109707,s)|0;i[194958]=1}f=-1;r=gJ(r,b)|0;o=9}else{f=2;o=9}else{f=1;o=9}}while(0);do{if((o|0)==9){o=0;n=0;while(1){if((n|0)>=(f|0)){o=34;break}if((i[a>>0]&-64)<<24>>24!=-128)break;e=t[w>>2]|0;if(e>>>0>=(t[u>>2]|0)>>>0){ow(b,1)|0;e=t[w>>2]|0}t[w>>2]=e+1;i[e>>0]=r;n=n+1|0;r=i[a>>0]|0;a=a+1|0}if((o|0)==34){o=0;t[l>>2]=a;break}t[l>>2]=a;if(!(i[194958]|0)){n=Mk(A)|0;t[c>>2]=f+1;t[c+4>>2]=n;nw(0,109828,c)|0;i[194958]=1}r=gJ(r,b)|0}}while(0);e=t[w>>2]|0;if(e>>>0>=(t[u>>2]|0)>>>0){ow(b,1)|0;e=t[w>>2]|0}t[w>>2]=e+1;i[e>>0]=r;e=t[l>>2]|0}e=t[w>>2]|0;if(e>>>0>=(t[u>>2]|0)>>>0){ow(b,1)|0;e=t[w>>2]|0}i[e>>0]=0;u=t[b>>2]|0;t[w>>2]=u;w=o3(u)|0;hw(b);h=k;return w|0}function gJ(e,A){e=e|0;A=A|0;var r=0,a=0,n=0,f=0,l=0,s=0,c=0;s=h;h=h+16|0;n=s;i[n>>0]=e;i[n+1>>0]=0;n=pJ(n)|0;f=A+4|0;l=A+8|0;r=U2(n)|0;a=n;while(1){if((r|0)<=1)break;e=t[f>>2]|0;if(e>>>0>=(t[l>>2]|0)>>>0){ow(A,1)|0;e=t[f>>2]|0}c=i[a>>0]|0;t[f>>2]=e+1;i[e>>0]=c;r=r+-1|0;a=a+1|0}c=i[a>>0]|0;G2(n);h=s;return c|0}function mJ(e){e=e|0;var A=0,r=0,a=0,n=0,f=0,l=0;l=h;h=h+32|0;f=l;A=l+8|0;r=t[e>>2]|0;e:do{if((i[r>>0]|0)!=35){t[f>>2]=A;n=0;A:while(1){if((n|0)>=8){A=0;break e}a=i[r+n>>0]|0;switch(a<<24>>24){case 0:{A=0;break e}case 59:break A;default:{}}i[A>>0]=a;A=A+1|0;n=n+1|0}i[A>>0]=0;A=r8(f,23664,252,8,96)|0;if(!A)A=0;else{r=r+(n+1)|0;A=t[A+4>>2]|0}}else{f=i[r+1>>0]|0;A=f&255;A:do{if((f|32)<<24>>24==120){f=0;n=2;while(1){if((n|0)>=8){a=f;break A}a=i[r+n>>0]|0;A=a&255;if((a+-65&255)>=6)if((a+-97&255)>=6)if((a+-48&255)<10)a=-48;else{a=f;break A}else a=-87;else a=-55;A=a+A|0;f=A+(f<<4)|0;n=n+1|0}}else{a=0;n=1;while(1){if((n|0)>=8)break A;f=i[r+n>>0]|0;A=f&255;if((f+-48&255)>=10)break A;a=(a*10|0)+-48+A|0;n=n+1|0}}}while(0);A=(A|0)==59;r=A?r+(n+1)|0:r;A=A?a:0}}while(0);t[e>>2]=r;h=l;return A|0}function pJ(e){e=e|0;var A=0,r=0,a=0,n=0,f=0,l=0,s=0,c=0;c=h;h=h+1056|0;n=c;l=c+8|0;t[n>>2]=e;cw(l,1024,c+24|0);s=l+4|0;f=l+8|0;while(1){t[n>>2]=e+1;A=i[e>>0]|0;if(!(A<<24>>24))break;e=A&255;if(A<<24>>24==38){e=mJ(n)|0;if(!e){e=38;a=6}else a=5}else a=5;do{if((a|0)==5){a=0;if(e>>>0<127)a=6;else{A=t[s>>2]|0;r=A>>>0>=(t[f>>2]|0)>>>0;if(e>>>0<2047){if(r){ow(l,1)|0;A=t[s>>2]|0}t[s>>2]=A+1;i[A>>0]=e>>>6|192;A=t[s>>2]|0;if(A>>>0>=(t[f>>2]|0)>>>0){ow(l,1)|0;A=t[s>>2]|0}e=e&63|128;break}if(r){ow(l,1)|0;A=t[s>>2]|0}t[s>>2]=A+1;i[A>>0]=e>>>12|224;A=t[s>>2]|0;if(A>>>0>=(t[f>>2]|0)>>>0){ow(l,1)|0;A=t[s>>2]|0}t[s>>2]=A+1;i[A>>0]=e>>>6&63|128;A=t[s>>2]|0;if(A>>>0>=(t[f>>2]|0)>>>0){ow(l,1)|0;A=t[s>>2]|0}e=e&63|128}}}while(0);if((a|0)==6){A=t[s>>2]|0;if(A>>>0>=(t[f>>2]|0)>>>0){ow(l,1)|0;A=t[s>>2]|0}}t[s>>2]=A+1;i[A>>0]=e;e=t[n>>2]|0}e=t[s>>2]|0;if(e>>>0>=(t[f>>2]|0)>>>0){ow(l,1)|0;e=t[s>>2]|0}i[e>>0]=0;f=t[l>>2]|0;t[s>>2]=f;s=o3(f)|0;hw(l);h=c;return s|0}function EJ(e){e=e|0;var A=0,r=0,a=0,n=0,f=0,l=0;l=h;h=h+1040|0;n=l;cw(n,1024,l+16|0);f=n+4|0;a=n+8|0;while(1){A=e+1|0;r=i[e>>0]|0;if(!(r<<24>>24))break;if((r&255)<127){e=t[f>>2]|0;if(e>>>0>=(t[a>>2]|0)>>>0){ow(n,1)|0;e=t[f>>2]|0}t[f>>2]=e+1;i[e>>0]=r;e=A;continue}else{r=i[A>>0]&63|r<<6&255;A=t[f>>2]|0;if(A>>>0>=(t[a>>2]|0)>>>0){ow(n,1)|0;A=t[f>>2]|0}t[f>>2]=A+1;i[A>>0]=r;e=e+2|0;continue}}e=t[f>>2]|0;if(e>>>0>=(t[a>>2]|0)>>>0){ow(n,1)|0;e=t[f>>2]|0}i[e>>0]=0;a=t[n>>2]|0;t[f>>2]=a;f=o3(a)|0;hw(n);h=l;return f|0}function BJ(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0,f=0,l=0,s=0,o=0,u=0;u=h;h=h+80|0;i=u+48|0;r=u+32|0;a=u+64|0;n=u+16|0;f=u;l=A+16|0;s=e+16|0;o=t[s>>2]|0;if(((+c[l>>3]>=+c[o+48>>3]?+c[o+64>>3]>=+c[A>>3]:0)?+c[A+24>>3]>=+c[o+56>>3]:0)?+c[o+72>>3]>=+c[A+8>>3]:0){o=o+16|0;t[r>>2]=t[l>>2];t[r+4>>2]=t[l+4>>2];t[r+8>>2]=t[l+8>>2];t[r+12>>2]=t[l+12>>2];t[i>>2]=t[A>>2];t[i+4>>2]=t[A+4>>2];t[i+8>>2]=t[A+8>>2];t[i+12>>2]=t[A+12>>2];yJ(n,r,i);t[r>>2]=t[o>>2];t[r+4>>2]=t[o+4>>2];t[r+8>>2]=t[o+8>>2];t[r+12>>2]=t[o+12>>2];t[i>>2]=t[n>>2];t[i+4>>2]=t[n+4>>2];t[i+8>>2]=t[n+8>>2];t[i+12>>2]=t[n+12>>2];jx(f,r,i);t[a>>2]=e;t[a+4>>2]=0;r=t[(t[(t[(t[s>>2]|0)+8>>2]|0)+4>>2]|0)+12>>2]|0;t[i>>2]=t[f>>2];t[i+4>>2]=t[f+4>>2];t[i+8>>2]=t[f+8>>2];t[i+12>>2]=t[f+12>>2];r=Z5[r&127](a,i)|0}else r=0;h=u;return r|0}function yJ(e,A,r){e=e|0;A=A|0;r=r|0;var i=0.0;i=(+c[r+8>>3]+ +c[A+8>>3])*.5;c[e>>3]=(+c[r>>3]+ +c[A>>3])*.5;c[e+8>>3]=i;return}function CJ(e,A){e=e|0;A=A|0;var r=0.0,i=0,a=0.0,n=0,f=0.0,l=0,s=0,o=0,u=0;i=h;h=h+80|0;l=i+64|0;s=i+48|0;o=i;u=i+32|0;n=i+16|0;c[o>>3]=+c[e+24>>3]*.5;c[o+8>>3]=+c[e+32>>3]*.5;e=e+56|0;t[s>>2]=t[e>>2];t[s+4>>2]=t[e+4>>2];t[s+8>>2]=t[e+8>>2];t[s+12>>2]=t[e+12>>2];t[l>>2]=t[o>>2];t[l+4>>2]=t[o+4>>2];t[l+8>>2]=t[o+8>>2];t[l+12>>2]=t[o+12>>2];jx(u,s,l);f=+c[u>>3];a=+c[u+8>>3];t[s>>2]=t[e>>2];t[s+4>>2]=t[e+4>>2];t[s+8>>2]=t[e+8>>2];t[s+12>>2]=t[e+12>>2];t[l>>2]=t[o>>2];t[l+4>>2]=t[o+4>>2];t[l+8>>2]=t[o+8>>2];t[l+12>>2]=t[o+12>>2];Ux(n,s,l);r=+c[n+8>>3];if((+c[A+16>>3]>=f?+c[n>>3]>=+c[A>>3]:0)?+c[A+24>>3]>=a:0)e=r>=+c[A+8>>3]&1;else e=0;h=i;return e|0}function IJ(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0,f=0,l=0,s=0,c=0,o=0,u=0;u=h;h=h+80|0;c=u+48|0;s=u;f=e+16|0;e=t[f>>2]|0;l=t[e+8>>2]|0;e:do{if((l|0)!=0?(n=l+8|0,t[s>>2]=t[n>>2],t[s+4>>2]=t[n+4>>2],t[s+8>>2]=t[n+8>>2],t[s+12>>2]=t[n+12>>2],t[s+16>>2]=t[n+16>>2],t[s+20>>2]=t[n+20>>2],t[s+24>>2]=t[n+24>>2],t[s+28>>2]=t[n+28>>2],t[c>>2]=t[A>>2],t[c+4>>2]=t[A+4>>2],t[c+8>>2]=t[A+8>>2],t[c+12>>2]=t[A+12>>2],t[c+16>>2]=t[A+16>>2],t[c+20>>2]=t[A+20>>2],t[c+24>>2]=t[A+24>>2],t[c+28>>2]=t[A+28>>2],(ZJ(s,c)|0)!=0):0){r=l+4|0;e=0;while(1){if((e|0)>=(t[r>>2]|0))break;i=s;a=(t[l>>2]|0)+(e*48|0)|0;n=i+48|0;do{t[i>>2]=t[a>>2];i=i+4|0;a=a+4|0}while((i|0)<(n|0));t[c>>2]=t[A>>2];t[c+4>>2]=t[A+4>>2];t[c+8>>2]=t[A+8>>2];t[c+12>>2]=t[A+12>>2];t[c+16>>2]=t[A+16>>2];t[c+20>>2]=t[A+20>>2];t[c+24>>2]=t[A+24>>2];t[c+28>>2]=t[A+28>>2];if(!((GJ(s,c)|0)<<24>>24))e=e+1|0;else{e=1;break e}}e=t[f>>2]|0;o=7}else o=7}while(0);do{if((o|0)==7){e=t[e+96>>2]|0;if(e|0?(t[c>>2]=t[A>>2],t[c+4>>2]=t[A+4>>2],t[c+8>>2]=t[A+8>>2],t[c+12>>2]=t[A+12>>2],t[c+16>>2]=t[A+16>>2],t[c+20>>2]=t[A+20>>2],t[c+24>>2]=t[A+24>>2],t[c+28>>2]=t[A+28>>2],(CJ(e,c)|0)<<24>>24):0){e=1;break}e=0}}while(0);h=u;return e|0}function ZJ(e,A){e=e|0;A=A|0;if((+c[e+16>>3]>=+c[A>>3]?+c[A+16>>3]>=+c[e>>3]:0)?+c[e+24>>3]>=+c[A+8>>3]:0)e=+c[A+24>>3]>=+c[e+8>>3]&1;else e=0;return e|0}function GJ(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0,f=0,l=0,s=0,c=0,o=0,u=0;u=h;h=h+96|0;c=u+64|0;s=u+48|0;l=u+32|0;a=u+16|0;n=u;o=e+4|0;r=t[o>>2]|0;if(!r)ge(109937,107661,1637,109945);i=t[e>>2]|0;t[n>>2]=t[i>>2];t[n+4>>2]=t[i+4>>2];t[n+8>>2]=t[i+8>>2];t[n+12>>2]=t[i+12>>2];i=1;while(1){if((i|0)>=(r|0)){f=7;break}r=(t[e>>2]|0)+(i<<4)|0;t[a>>2]=t[r>>2];t[a+4>>2]=t[r+4>>2];t[a+8>>2]=t[r+8>>2];t[a+12>>2]=t[r+12>>2];t[l>>2]=t[r>>2];t[l+4>>2]=t[r+4>>2];t[l+8>>2]=t[r+8>>2];t[l+12>>2]=t[r+12>>2];t[s>>2]=t[n>>2];t[s+4>>2]=t[n+4>>2];t[s+8>>2]=t[n+8>>2];t[s+12>>2]=t[n+12>>2];t[c>>2]=t[A>>2];t[c+4>>2]=t[A+4>>2];t[c+8>>2]=t[A+8>>2];t[c+12>>2]=t[A+12>>2];t[c+16>>2]=t[A+16>>2];t[c+20>>2]=t[A+20>>2];t[c+24>>2]=t[A+24>>2];t[c+28>>2]=t[A+28>>2];if((CF(l,s,c)|0)!=-1){r=1;break}t[n>>2]=t[a>>2];t[n+4>>2]=t[a+4>>2];t[n+8>>2]=t[a+8>>2];t[n+12>>2]=t[a+12>>2];i=i+1|0;r=t[o>>2]|0}do{if((f|0)==7){r=t[e+8>>2]|0;if(r|0?(n=e+16|0,f=t[e>>2]|0,t[l>>2]=t[n>>2],t[l+4>>2]=t[n+4>>2],t[l+8>>2]=t[n+8>>2],t[l+12>>2]=t[n+12>>2],t[s>>2]=t[f>>2],t[s+4>>2]=t[f+4>>2],t[s+8>>2]=t[f+8>>2],t[s+12>>2]=t[f+12>>2],t[c>>2]=t[A>>2],t[c+4>>2]=t[A+4>>2],t[c+8>>2]=t[A+8>>2],t[c+12>>2]=t[A+12>>2],t[c+16>>2]=t[A+16>>2],t[c+20>>2]=t[A+20>>2],t[c+24>>2]=t[A+24>>2],t[c+28>>2]=t[A+28>>2],(LJ(l,s,r,c)|0)<<24>>24):0){r=1;break}r=t[e+12>>2]|0;if(r|0?(f=e+32|0,o=(t[e>>2]|0)+((t[o>>2]|0)+-1<<4)|0,t[l>>2]=t[f>>2],t[l+4>>2]=t[f+4>>2],t[l+8>>2]=t[f+8>>2],t[l+12>>2]=t[f+12>>2],t[s>>2]=t[o>>2],t[s+4>>2]=t[o+4>>2],t[s+8>>2]=t[o+8>>2],t[s+12>>2]=t[o+12>>2],t[c>>2]=t[A>>2],t[c+4>>2]=t[A+4>>2],t[c+8>>2]=t[A+8>>2],t[c+12>>2]=t[A+12>>2],t[c+16>>2]=t[A+16>>2],t[c+20>>2]=t[A+20>>2],t[c+24>>2]=t[A+24>>2],t[c+28>>2]=t[A+28>>2],(LJ(l,s,r,c)|0)<<24>>24):0){r=1;break}r=0}}while(0);h=u;return r|0}function LJ(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0,n=0,f=0,l=0,s=0,o=0,u=0,b=0.0;o=h;h=h+160|0;n=o+144|0;a=o+128|0;u=o+96|0;f=o+64|0;l=o+32|0;s=o;b=+c[i+16>>3];t[a>>2]=t[e>>2];t[a+4>>2]=t[e+4>>2];t[a+8>>2]=t[e+8>>2];t[a+12>>2]=t[e+12>>2];t[n>>2]=t[A>>2];t[n+4>>2]=t[A+4>>2];t[n+8>>2]=t[A+8>>2];t[n+12>>2]=t[A+12>>2];_E(u,a,n,1.0,r);if(((b>=+c[u>>3]?(t[a>>2]=t[e>>2],t[a+4>>2]=t[e+4>>2],t[a+8>>2]=t[e+8>>2],t[a+12>>2]=t[e+12>>2],t[n>>2]=t[A>>2],t[n+4>>2]=t[A+4>>2],t[n+8>>2]=t[A+8>>2],t[n+12>>2]=t[A+12>>2],_E(f,a,n,1.0,r),+c[f+16>>3]>=+c[i>>3]):0)?(b=+c[i+24>>3],t[a>>2]=t[e>>2],t[a+4>>2]=t[e+4>>2],t[a+8>>2]=t[e+8>>2],t[a+12>>2]=t[e+12>>2],t[n>>2]=t[A>>2],t[n+4>>2]=t[A+4>>2],t[n+8>>2]=t[A+8>>2],t[n+12>>2]=t[A+12>>2],_E(l,a,n,1.0,r),b>=+c[l+8>>3]):0)?(t[a>>2]=t[e>>2],t[a+4>>2]=t[e+4>>2],t[a+8>>2]=t[e+8>>2],t[a+12>>2]=t[e+12>>2],t[n>>2]=t[A>>2],t[n+4>>2]=t[A+4>>2],t[n+8>>2]=t[A+8>>2],t[n+12>>2]=t[A+12>>2],_E(s,a,n,1.0,r),+c[s+24>>3]>=+c[i+8>>3]):0)a=1;else a=0;h=o;return a|0}function QJ(e,A){e=e|0;A=A|0;var r=0,a=0,n=0;n=h;h=h+16|0;a=n;e:do{if((e|0)!=0?(r=i[e>>0]|0,r<<24>>24!=0):0){do{switch(r<<24>>24|0){case 48:{A=2;break e}case 57:case 56:case 55:case 54:case 53:case 52:case 51:case 50:case 49:{A=10;break e}case 67:case 99:{r=e+1|0;if(!(N1(r,109960)|0)){A=4;break e}if(!(N1(r,109966)|0)){A=12;break e}break}case 70:case 102:{if(!(N1(e+1|0,109974)|0)){A=2;break e}break}case 76:case 108:{if(!(N1(e+1|0,109979)|0)){A=2;break e}break}case 78:case 110:{r=e+1|0;if(!(N1(r,109983)|0)){A=0;break e}if(!(N1(r,109987)|0)){A=2;break e}break}case 79:case 111:{if(!(N1(e+1|0,109989)|0)){A=8;break e}break}case 80:case 112:{if(!(N1(e+1|0,109994)|0)){A=6;break e}break}case 83:case 115:{if(!(N1(e+1|0,110002)|0)){A=10;break e}break}case 84:case 116:{if(!(N1(e+1|0,110008)|0)){A=10;break e}break}case 89:case 121:{if(!(N1(e+1|0,110012)|0)){A=10;break e}break}default:{}}}while(0);t[a>>2]=e;nw(0,110015,a)|0}}while(0);h=n;return A|0}function DJ(e,A){e=e|0;A=A|0;var r=0;r=Hw(e,110056)|0;if(r)if(!(i[r>>0]|0))A=0;else A=QJ(r,A)|0;e=(t[e+16>>2]|0)+136|0;a[e>>1]=A|f[e>>1];return}function zJ(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=+i;a=a|0;var t=0.0,n=0.0,f=0.0,l=0.0,s=0.0,o=0,u=0,b=0.0,w=0,k=0.0,d=0,v=0.0,g=0,m=0,p=0,E=0;p=h;h=h+32|0;w=p+16|0;d=p;g=a&1;m=a&2;e:do{if((r|0)==2){v=+c[e+16>>3];t=+c[e>>3];l=+c[e+24>>3];f=+c[e+8>>3];t=t-(v-t);c[w>>3]=t;c[d>>3]=v;f=f-(l-f);c[w+8>>3]=f;c[d+8>>3]=l}else{n=+c[e>>3];c[d>>3]=n;c[w>>3]=n;l=+c[e+8>>3];o=d+8|0;c[o>>3]=l;u=w+8|0;c[u>>3]=l;a=0;t=n;f=l;while(1){if((a|0)>=(r|0)){v=n;break e}E=e+(a<<4)|0;k=+c[E>>3];s=+c[(k>3];c[w>>3]=s;v=+c[e+(a<<4)+8>>3];b=+c[(v>3];c[u>>3]=b;k=+c[(k>n?E:d)>>3];c[d>>3]=k;v=+c[(v>l?E:d)+8>>3];c[o>>3]=v;a=a+1|0;t=s;f=b;n=k;l=v}}}while(0);n=(v-t)*.5;k=n+t;b=(l-f)*.5;s=b+f;if(!g){t=l-s;l=i;f=+Y(+l);l=+W(+l);if(!m){n=f*t-s;t=-s-b*f}else{t=f*t;n=s-t;t=t+s}c[A+8>>3]=n;c[A+24>>3]=t;i=l*(v-k);c[A>>3]=k-i;c[A+16>>3]=i+k}else{i=+D(+(b*b+n*n));c[A+8>>3]=m|0?s:-s;c[A>>3]=k;c[A+16>>3]=i*.25;c[A+24>>3]=i}h=p;return}function WJ(e,A){e=e|0;A=A|0;var r=0.0,i=0,a=0;i=e+16|0;a=t[i>>2]|0;if(!(A<<24>>24)){r=+c[a+32>>3]*36.0;c[a+88>>3]=r;e=a+40|0}else{r=+c[a+40>>3]*36.0;c[a+88>>3]=r;e=a+32|0}c[a+96>>3]=r;c[(t[i>>2]|0)+80>>3]=+c[e>>3]*72.0;return}function YJ(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0,f=0,l=0,s=0,c=0,o=0,u=0;u=h;h=h+32|0;s=u+8|0;a=u+4|0;n=u;r=t[A>>2]&3;i=t[((r|0)==3?A:A+48|0)+40>>2]|0;c=(t[(t[i+16>>2]|0)+232>>2]|0)+-1|0;e=t[(t[e+16>>2]|0)+196>>2]|0;f=t[e+(c<<6)+4>>2]|0;e=t[e+(c<<6)>>2]|0;c=s+8|0;t[c>>2]=-1;t[s>>2]=-1;o=s+12|0;t[o>>2]=e;l=s+4|0;t[l>>2]=e;MJ(i,t[((r|0)==2?A:A+-48|0)+40>>2]|0,a,n);a=t[a>>2]|0;n=t[n>>2]|0;r=0;i=e;A=-1;while(1){if((r|0)>=(i|0))break;i=i+-1|0;VJ(t[f+(r<<2)>>2]|0,s,a,n);if((r|0)!=(i|0))VJ(t[f+(i<<2)>>2]|0,s,a,n);e=t[l>>2]|0;A=t[s>>2]|0;if((e-A|0)<2)break;else r=r+1|0}if((A|0)>(e|0))e=(t[o>>2]|0)+(t[c>>2]|0)|0;else e=e+A|0;h=u;return(e+1|0)/2|0|0}function FJ(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0,n=0,f=0,l=0;n=e+16|0;a=t[(t[n>>2]|0)+196>>2]|0;i=a+(A<<6)|0;a=t[a+(A<<6)+4>>2]|0;if(!a)a=$F((t[i>>2]<<2)+8|0)|0;else a=AM(a,(t[i>>2]<<2)+8|0)|0;i=t[(t[n>>2]|0)+196>>2]|0;t[i+(A<<6)+4>>2]=a;i=t[i+(A<<6)>>2]|0;while(1){if((i|0)<=(r|0))break;f=i+-1|0;l=t[a+(f<<2)>>2]|0;t[a+(i<<2)>>2]=l;l=(t[l+16>>2]|0)+236|0;t[l>>2]=(t[l>>2]|0)+1;i=f}f=zL(e)|0;l=a+(r<<2)|0;t[l>>2]=f;f=t[f+16>>2]|0;t[f+236>>2]=r;t[f+232>>2]=A;n=(t[(t[n>>2]|0)+196>>2]|0)+(A<<6)|0;f=(t[n>>2]|0)+1|0;t[n>>2]=f;t[a+(f<<2)>>2]=0;return t[l>>2]|0}function MJ(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0;e=t[(t[e+16>>2]|0)+236>>2]|0;A=t[(t[A+16>>2]|0)+236>>2]|0;a=(e|0)>(A|0);t[r>>2]=a?A:e;t[i>>2]=a?e:A;return}function VJ(e,A,r,a){e=e|0;A=A|0;r=r|0;a=a|0;var n=0,f=0,l=0,s=0,c=0,o=0,u=0;o=h;h=h+16|0;f=o+4|0;n=o;e=t[e+16>>2]|0;do{if((i[e+156>>0]|0)==1){c=t[e+236>>2]|0;if(t[e+176>>2]|0){l=t[e+180>>2]|0;e=0;n=0;f=0;while(1){s=t[l+(f<<2)>>2]|0;if(!s)break;u=t[(t[(t[((t[s>>2]&3|0)==2?s:s+-48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0;s=(u|0)>(r|0);e=s?(u|0)<(a|0)?e:1:e;n=s?n:1;f=f+1|0}if(n<<24>>24!=0&e<<24>>24==0){t[A>>2]=c+1;break}if(!(n<<24>>24==0&e<<24>>24!=0))break;t[A+4>>2]=c+-1;break}if((t[e+184>>2]|0)!=2)ge(88397,88417,63,88424);l=t[e+180>>2]|0;u=t[l>>2]|0;l=t[l+4>>2]|0;MJ(t[((t[u>>2]&3|0)==2?u:u+-48|0)+40>>2]|0,t[((t[l>>2]&3|0)==2?l:l+-48|0)+40>>2]|0,f,n);l=t[n>>2]|0;if((l|0)<=(r|0)){t[A>>2]=c;t[A+8>>2]=c;break}e=t[f>>2]|0;if((e|0)>=(a|0)){t[A+4>>2]=c;t[A+12>>2]=c;break}n=(e|0)<(r|0);f=(l|0)>(a|0);if(!(f&n)){if(!(!n?!((l|0)<(a|0)&(e|0)==(r|0)):0))t[A+8>>2]=c;if(!f?!((l|0)==(a|0)&(e|0)>(r|0)):0)break;t[A+12>>2]=c}}}while(0);h=o;return}function NJ(e){e=e|0;t[47134]=1;aH(e);t[47134]=0;return}function RJ(e){e=e|0;t[47134]=2;aH(e);t[47134]=0;return}function xJ(e){e=e|0;var A=0;Sd(e,137447,304,1)|0;Fx(e);A=KF((f[(t[(Bd(e)|0)+16>>2]|0)+176>>1]|0)<<3)|0;t[(t[e+16>>2]|0)+132>>2]=A;WJ(e,t[(t[(Bd(e)|0)+16>>2]|0)+116>>2]&1);return}function JJ(e,A,r,a){e=e|0;A=A|0;r=r|0;a=a|0;var n=0,f=0,l=0,s=0,o=0,u=0,b=0,w=0,k=0,d=0,v=0,g=0.0,m=0.0;v=h;h=h+64|0;l=v+48|0;b=v+40|0;s=v+24|0;f=v+8|0;k=v+56|0;o=v;do{if((e|0)!=0?(d=r+16|0,w=t[(t[d>>2]|0)+132>>2]|0,n=Pw(r,e)|0,(i[n>>0]|0)!=0):0){i[k>>0]=0;e=w+8|0;if((t[47137]|0)>2?(t[f>>2]=w,t[f+4>>2]=e,t[f+8>>2]=w+16,t[f+12>>2]=k,(V3(n,88535,f)|0)>2):0){i[(t[d>>2]|0)+119>>0]=1;n=t[47137]|0;e:do{if(+c[23293]>0.0){e=0;while(1){if((e|0)>=(n|0))break e;b=w+(e<<3)|0;c[b>>3]=+c[b>>3]/+c[23293];e=e+1|0}}}while(0);if((n|0)>3)gP(r,a,3);if((i[k>>0]|0)!=33){if(!A){e=1;break}if(!((mx(Pw(r,A)|0)|0)<<24>>24)){e=1;break}}i[(t[d>>2]|0)+119>>0]=3;e=1;break}t[s>>2]=w;t[s+4>>2]=e;t[s+8>>2]=k;if((V3(n,101749,s)|0)<=1){t[l>>2]=Mk(r)|0;t[l+4>>2]=n;nw(1,88549,l)|0;e=0;break}i[(t[d>>2]|0)+119>>0]=1;n=t[47137]|0;e:do{if(+c[23293]>0.0){e=0;while(1){if((e|0)>=(n|0))break e;s=w+(e<<3)|0;c[s>>3]=+c[s>>3]/+c[23293];e=e+1|0}}}while(0);do{if((n|0)>2){e=t[47171]|0;if((e|0?(u=Pw(r,e)|0,u|0):0)?(t[b>>2]=o,(V3(u,101209,b)|0)==1):0){m=+c[23293];g=+c[o>>3];c[w+16>>3]=m>0.0?g/m:g;gP(r,a,3);break}mP(r,a)}}while(0);if((i[k>>0]|0)!=33){if(!A){e=1;break}if(!((mx(Pw(r,A)|0)|0)<<24>>24)){e=1;break}}i[(t[d>>2]|0)+119>>0]=3;e=1}else e=0}while(0);h=v;return e|0}function HJ(e){e=e|0;var A=0,r=0;r=sd(e)|0;while(1){if(!r)break;A=Ow(e,r)|0;while(1){if(!A)break;bJ(A);A=qw(e,A)|0}oJ(r);r=cd(e,r)|0}PJ(e);return}function PJ(e){e=e|0;if((t[47134]|0)!=0|(t[46795]|0)<0)dP(e);if((yd(e)|0)!=(e|0))qd(e,0,137483);return}function XJ(e,A){e=e|0;A=A|0;var r=0,a=0,n=0,f=0,l=0,s=0,o=0,u=0,b=0,w=0,k=0;k=h;h=h+48|0;o=k+32|0;b=k;s=zw(e,0,102637,0)|0;r=zw(e,0,102671,0)|0;w=(px(Hw(e,88593)|0,0)|0)<<24>>24!=0;if(!r)r=zw(e,0,102671,195059)|0;kP(e)|0;u=e+16|0;f=0;while(1){l=t[(t[(t[u>>2]|0)+152>>2]|0)+(f<<2)>>2]|0;if(!l){a=12;break}n=l+16|0;a=t[n>>2]|0;if(!(i[a+119>>0]|0)){if(y1(Mk(l)|0,108006,7)|0){a=8;break}a=t[n>>2]|0}a=t[a+108>>2]|0;if(a|0)SJ(l,a,102633);f=f+1|0}e:do{if((a|0)==8){w=Mk(l)|0;r=Mk(e)|0;t[o>>2]=w;t[o+4>>2]=r;nw(1,88605,o)|0;r=-1}else if((a|0)==12){jJ(e,s,r);l=UJ(e)|0;r=t[(t[u>>2]|0)+8>>2]|0;if(!(t[r+88>>2]|0))r=0;else{t[r+84>>2]=0;r=1}n=(A|0)!=0;f=(r|0)!=0;if(!(f|n&(t[47134]|0)==1^1)?(AU(e)|0)!=0:0){a=t[(t[u>>2]|0)+12>>2]|0;if(!a)a=1;else{i[a+81>>0]=0;a=1}}else a=0;Xx(e);if(f){A=(t[u>>2]|0)+16|0;bB(b,e);t[A>>2]=t[b>>2];t[A+4>>2]=t[b+4>>2];t[A+8>>2]=t[b+8>>2];t[A+12>>2]=t[b+12>>2];t[A+16>>2]=t[b+16>>2];t[A+20>>2]=t[b+20>>2];t[A+24>>2]=t[b+24>>2];t[A+28>>2]=t[b+28>>2]}if(!n){t[47138]=1;a=sd(e)|0;while(1){if(!a)break e;w=t[a+16>>2]|0;b=t[w+132>>2]|0;c[w+16>>3]=+c[b>>3]*72.0;c[w+24>>3]=+c[b+8>>3]*72.0;a=cd(e,a)|0}}do{if(!(w|f)){w=t[u>>2]|0;if(!(+c[w+16>>3]!=0.0)?!(+c[w+24>>3]!=0.0):0)break;PH(e)}}while(0);if(!((l|0)!=0&(a|(JH(e)|0)<<24>>24!=0))){if((l|0)==2){t[47138]=1;break}}else TJ(e);xH(e,0)}}while(0);h=k;return r|0}function SJ(e,A,r){e=e|0;A=A|0;r=r|0;var a=0,n=0,f=0,l=0,s=0;s=h;h=h+48|0;l=s+32|0;a=s+24|0;n=s+16|0;f=s;e=Hw(e,r)|0;if(e|0?(t[l>>2]=a,t[l+4>>2]=n,(V3(e,105503,l)|0)==2):0){l=A+56|0;qJ(f,+c[a>>3],+c[n>>3]);t[l>>2]=t[f>>2];t[l+4>>2]=t[f+4>>2];t[l+8>>2]=t[f+8>>2];t[l+12>>2]=t[f+12>>2];i[A+81>>0]=1}h=s;return}function jJ(e,A,r){e=e|0;A=A|0;r=r|0;var a=0,n=0,f=0,l=0,s=0,o=0,u=0;o=h;h=h+48|0;s=o+32|0;a=o+24|0;n=o+16|0;f=o;l=e+16|0;if((A|0?(t[(t[l>>2]|0)+12>>2]|0)!=0:0)?(u=Pw(e,A)|0,t[s>>2]=a,t[s+4>>2]=n,(V3(u,105503,s)|0)==2):0){u=(t[(t[l>>2]|0)+12>>2]|0)+56|0;qJ(f,+c[a>>3],+c[n>>3]);t[u>>2]=t[f>>2];t[u+4>>2]=t[f+4>>2];t[u+8>>2]=t[f+8>>2];t[u+12>>2]=t[f+12>>2];i[(t[(t[l>>2]|0)+12>>2]|0)+81>>0]=1}e:do{if(r|0){a=xv(e)|0;while(1){if(!a)break e;KJ(a,e,A,r);a=Jv(a)|0}}}while(0);h=o;return}function UJ(e){e=e|0;var A=0,r=0,i=0,a=0,n=0;if(mk(e)|0){a=zw(e,2,102623,0)|0;if(!((a|0)==0|(t[47134]|0)<2)){A=0;i=sd(e)|0;while(1){if(!i)break;r=Ow(e,i)|0;while(1){if(!r)break;n=A+((OJ(a,r)|0)!=0&1)|0;r=qw(e,r)|0;A=n}i=cd(e,i)|0}if(A){A=(A|0)==(mk(e)|0);A=A?2:1}else A=0}else A=0}else A=2;return A|0}function TJ(e){e=e|0;var A=0,r=0,i=0;r=sd(e)|0;while(1){if(!r)break;A=Ow(e,r)|0;while(1){if(!A)break;hJ(A);i=A+16|0;SF(t[(t[i>>2]|0)+96>>2]|0);SF(t[(t[i>>2]|0)+108>>2]|0);SF(t[(t[i>>2]|0)+100>>2]|0);SF(t[(t[i>>2]|0)+104>>2]|0);A=qw(e,A)|0}r=cd(e,r)|0}return}function OJ(e,A){e=e|0;A=A|0;var r=0,a=0,n=0.0,f=0.0,l=0.0,s=0.0,o=0,u=0,b=0,w=0,k=0,d=0,v=0,g=0,m=0,p=0,E=0,B=0,y=0,C=0,I=0,Z=0,G=0,L=0;Z=h;h=h+96|0;C=Z+72|0;B=Z+56|0;I=Z+48|0;y=Z+32|0;E=Z+16|0;d=Z+88|0;v=Z+8|0;g=Z;m=Z+84|0;p=Z+80|0;e=Pw(A,e)|0;do{if(i[e>>0]|0){WE(A,m,p);k=1;a=0;r=0;l=0.0;f=0.0;s=0.0;n=0.0;e:while(1){t[E>>2]=v;t[E+4>>2]=g;t[E+8>>2]=d;if((V3(e,88642,E)|0)==2){w=1;e=e+(t[d>>2]|0)|0;f=+c[v>>3];n=+c[g>>3]}else w=r;t[y>>2]=v;t[y+4>>2]=g;t[y+8>>2]=d;if((V3(e,88654,y)|0)==2){b=1;e=e+(t[d>>2]|0)|0;l=+c[v>>3];s=+c[g>>3]}else b=a;o=_J(e)|0;if(!((o|0)>3&((o|0)%3|0|0)==1)){r=8;break}u=$F(o<<4)|0;r=u;a=o;while(1){if(!a)break;t[B>>2]=v;t[B+4>>2]=g;t[B+8>>2]=d;if((V3(e,88724,B)|0)<2){r=13;break e}G=e+(t[d>>2]|0)|0;c[r>>3]=+c[v>>3];c[r+8>>3]=+c[g>>3];r=r+16|0;a=a+-1|0;e=G}while(1){r=i[e>>0]|0;a=e+1|0;if(!(I1(r<<24>>24)|0))break;else e=a}G=r<<24>>24==0;e=G?e:a;k=G?0:k;a=gR(A,o)|0;if(w|0){t[a+8>>2]=t[m>>2];c[a+16>>3]=f;c[a+24>>3]=n}if(b|0){t[a+12>>2]=t[p>>2];c[a+32>>3]=l;c[a+40>>3]=s}r=0;while(1){if((r|0)>=(o|0))break;G=(t[a>>2]|0)+(r<<4)|0;L=u+(r<<4)|0;t[G>>2]=t[L>>2];t[G+4>>2]=t[L+4>>2];t[G+8>>2]=t[L+8>>2];t[G+12>>2]=t[L+12>>2];r=r+1|0}G2(u);if(!k){r=26;break}else{a=b;r=w}}if((r|0)==8){hJ(A);if(i[193771]|0){e=0;break}i[193771]=1;L=Mk(t[((t[A>>2]&3|0)==3?A:A+48|0)+40>>2]|0)|0;e=Mk(t[((t[A>>2]&3|0)==2?A:A+-48|0)+40>>2]|0)|0;t[I>>2]=L;t[I+4>>2]=e;nw(0,88667,I)|0;e=0;break}else if((r|0)==13){if(!(i[193771]|0)){i[193771]=1;G=Mk(t[((t[A>>2]&3|0)==3?A:A+48|0)+40>>2]|0)|0;L=Mk(t[((t[A>>2]&3|0)==2?A:A+-48|0)+40>>2]|0)|0;t[C>>2]=G;t[C+4>>2]=L;nw(0,88734,C)|0}G2(u);hJ(A);e=0;break}else if((r|0)==26){a=A+16|0;e=t[a>>2]|0;r=t[e+96>>2]|0;if(r){SJ(A,r,102637);e=t[a>>2]|0}r=t[e+108>>2]|0;if(r){SJ(A,r,102633);e=t[a>>2]|0}r=t[e+100>>2]|0;if(r){SJ(A,r,102640);e=t[a>>2]|0}e=t[e+104>>2]|0;if(!e){e=1;break}SJ(A,e,102648);e=1;break}}else e=0}while(0);h=Z;return e|0}function _J(e){e=e|0;var A=0,r=0;r=0;do{while(1){A=i[e>>0]|0;if(!(I1(A&255)|0))break;else e=e+1|0}e:do{if(!(A<<24>>24))A=0;else{r=r+1|0;while(1){if(!(A<<24>>24)){A=0;break e}if(A<<24>>24==59|(I1(A&255)|0)!=0)break e;A=e+1|0;e=A;A=i[A>>0]|0}}}while(0)}while((I1(A&255)|0)!=0);return r|0}function qJ(e,A,r){e=e|0;A=+A;r=+r;c[e>>3]=A;c[e+8>>3]=r;return}function KJ(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0,n=0,f=0,l=0;f=h;h=h+32|0;a=f;if((y1(Mk(e)|0,108006,7)|0)==0?($J(e,i,a)|0)!=0:0){Sd(e,137483,280,1)|0;l=(t[e+16>>2]|0)+16|0;t[l>>2]=t[a>>2];t[l+4>>2]=t[a+4>>2];t[l+8>>2]=t[a+8>>2];t[l+12>>2]=t[a+12>>2];t[l+16>>2]=t[a+16>>2];t[l+20>>2]=t[a+20>>2];t[l+24>>2]=t[a+24>>2];t[l+28>>2]=t[a+28>>2];eH(A,e);jJ(e,r,i)}else n=4;e:do{if((n|0)==4){e=xv(e)|0;while(1){if(!e)break e;KJ(e,A,r,i);e=Jv(e)|0}}}while(0);h=f;return}function $J(e,A,r){e=e|0;A=A|0;r=r|0;var i=0.0,a=0.0,n=0,f=0,l=0,s=0;f=h;h=h+48|0;l=f+32|0;n=f;s=Pw(e,A)|0;e=n+8|0;A=n+24|0;t[l>>2]=n;t[l+4>>2]=e;t[l+8>>2]=n+16;t[l+12>>2]=A;if((V3(s,88782,l)|0)==4){i=+c[e>>3];a=+c[A>>3];if(i>a){c[e>>3]=a;c[A>>3]=i}t[r>>2]=t[n>>2];t[r+4>>2]=t[n+4>>2];t[r+8>>2]=t[n+8>>2];t[r+12>>2]=t[n+12>>2];t[r+16>>2]=t[n+16>>2];t[r+20>>2]=t[n+20>>2];t[r+24>>2]=t[n+24>>2];t[r+28>>2]=t[n+28>>2];e=1}else e=0;h=f;return e|0}function eH(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0;i=e+16|0;r=t[i>>2]|0;n=r+180|0;e=t[n>>2]|0;a=e+1|0;t[n>>2]=a;r=t[r+184>>2]|0;if(!r)e=KF((e<<2)+8|0)|0;else e=eM(r,e+2|0,4,a)|0;t[(t[i>>2]|0)+184>>2]=e;t[e+(a<<2)>>2]=A;VF(A);return}function AH(e,A,r){e=e|0;A=A|0;r=r|0;var a=0,f=0,l=0,s=0,c=0,o=0,u=0;u=h;h=h+48|0;o=u+8|0;c=u;l=u+16|0;s=u+12|0;f=Hw(e,88798)|0;do{if((f|0)!=0?(a=i[f>>0]|0,a<<24>>24!=0):0){a=a&255;if(!(V1(a)|0))if((A|0)==2|(a+-48|0)>>>0<10)A=f;else break;else{if(!(y1(f,88804,4)|0)){A=0;break}if(!(y1(f,105511,7)|0)){A=1;break}if(y1(f,88809,6)|0)if((A|0)==2)A=f;else break;else A=f+6|0}if(!(((n[A>>0]|0)+-48|0)>>>0<10?(t[c>>2]=s,(V3(A,99933,c)|0)>=1):0)){c=D3()|0;c=(nA(0)|0)^c;t[s>>2]=c;t[o>>2]=c;T4(l,99933,o)|0;Xw(e,88798,l)|0}t[r>>2]=t[s>>2];A=2}}while(0);h=u;return A|0}function rH(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0;a=h;h=h+16|0;i=a+4|0;t[i>>2]=1;r=AH(e,r,i)|0;if((r|0)!=2&(t[46796]|0)!=0)nw(0,88816,a)|0;if((r|0)==1)iH(e,A);f8(t[i>>2]|0);h=a;return r|0}function iH(e,A){e=e|0;A=A|0;var r=0,a=0.0,n=0.0,f=0.0,l=0,s=0,o=0.0;n=+(A|0);f=6.283185307179586/n;r=sd(e)|0;a=0.0;while(1){if(!r)break;o=+W(+a)*n;l=t[r+16>>2]|0;s=t[l+132>>2]|0;c[s>>3]=o;c[s+8>>3]=+Y(+a)*n;i[l+119>>0]=1;if((t[47137]|0)>2)mP(r,A);r=cd(e,r)|0;a=a+f}return}function aH(e){e=e|0;var A=0,r=0,a=0,n=0,f=0,l=0,s=0,o=0,u=0,b=0,w=0,k=0.0,d=0;d=h;h=h+80|0;A=d+24|0;u=d+32|0;s=d;w=d+28|0;o=d+64|0;k=+c[23293];do{if(t[47134]|0){c[23293]=72.0;tH(e);nH(e);if((XJ(e,1)|0)<0){nw(3,88864,A)|0;break}else{gV(e,0);a=32;break}}else{b=px(Hw(e,88593)|0,0)|0;c[23293]=+kx(e);tH(e);n=fH(e)|0;Ij(e,s,0)|0;f=lH(e)|0;l=uE(e,0,u)|0;A=oE(e,-1,8)|0;t[46795]=A;r=(A|0)<0;do{if(!l){if((n|0)!=0&r){t[46795]=8;t[u+16>>2]=2;a=11;break}t[u+16>>2]=2;if((A|0)<=-1){sH(e,n,f);Lj(e,s)|0;nH(e);if(!(b<<24>>24)){TH(e);break}else{cH(e);break}}else a=11}else if(r){t[46795]=8;a=11}else a=11}while(0);if((a|0)==11){l=vp(e,w,88892,o)|0;A=t[w>>2]|0;do{if((A|0)<=1){sH(e,n,f);Lj(e,s)|0;if(!(b<<24>>24)){TH(e);break}else{cH(e);break}}else{a=b<<24>>24==0;r=0;while(1){if((r|0)>=(A|0))break;A=t[l+(r<<2)>>2]|0;Mp(A)|0;sH(A,n,f);Lj(A,s)|0;DJ(A,2);if(a)TH(A);else cH(A);r=r+1|0;A=t[w>>2]|0}if(!(i[o>>0]|0))r=0;else{r=KF(A)|0;i[r>>0]=1;A=t[w>>2]|0}t[u+8>>2]=t[46795];t[u+20>>2]=r;t[u+12>>2]=1;lE(A,l,e,u)|0;G2(r)}}while(0);Xx(e);nH(e);A=0;while(1){if((A|0)>=(t[w>>2]|0))break;u=t[l+(A<<2)>>2]|0;dP(u);Ud(u,137483)|0;Ed(e,u)|0;A=A+1|0}G2(l)}gV(e,b<<24>>24==0&1);a=32}}while(0);if((a|0)==32)c[23293]=k;h=d;return}function tH(e){e=e|0;var A=0,r=0,i=0,n=0;DJ(e,2);i=hx(e,zw(e,0,91368,0)|0,2,2)|0;A=(hx(e,zw(e,0,91374,0)|0,i,2)|0)&65535;a[(t[(yd(e)|0)+16>>2]|0)+176>>1]=A;A=t[(t[e+60>>2]|0)+16>>2]|0;n=A+176|0;r=a[n>>1]|0;r=(r&65535)<10?r:10;a[n>>1]=r;r=r&65535;t[47137]=r;a[A+178>>1]=(i|0)<(r|0)?i:r;mH(e);return}function nH(e){e=e|0;var A=0,r=0,i=0,a=0;a=h;h=h+1040|0;i=a;r=a+8|0;e:do{if((t[47137]|0)>2&(t[47171]|0)!=0){A=sd(e)|0;while(1){if(!A)break e;c[i>>3]=+c[(t[(t[A+16>>2]|0)+132>>2]|0)+16>>3]*72.0;T4(r,101209,i)|0;Mw(A,t[47171]|0,r)|0;A=cd(e,A)|0}}}while(0);h=a;return}function fH(e){e=e|0;var A=0,r=0,a=0;a=h;h=h+16|0;r=a;A=Hw(e,89577)|0;e:do{if(!A)e=1;else{switch(i[A>>0]|0){case 0:{e=1;break e}case 75:{if(!(e1(A,89582)|0)){e=0;break e}break}case 109:{if(!(e1(A,89585)|0)){e=1;break e}break}case 104:{if(!(e1(A,89591)|0)){e=2;break e}break}default:{}}e=Mk(e)|0;t[r>>2]=A;t[r+4>>2]=e;nw(0,89596,r)|0;e=1}}while(0);h=a;return e|0}function lH(e){e=e|0;var A=0,r=0,a=0,n=0,f=0;f=h;h=h+32|0;n=f+16|0;a=f+8|0;r=f;A=Hw(e,89360)|0;e:do{if(!A)e=0;else{switch(i[A>>0]|0){case 0:{e=0;break e}case 99:{if(!(e1(A,89366)|0)){e=1;break e}break}case 115:{if(!(e1(A,89374)|0)){e=2;break e}if(!(e1(A,89381)|0)){e=0;break e}break}case 109:{if(!(e1(A,89391)|0)){if(zw(e,2,92493,0)|0){e=3;break e}t[r>>2]=Mk(e)|0;nw(0,89395,r)|0;nw(3,89458,a)|0;e=0;break e}break}default:{}}e=Mk(e)|0;t[n>>2]=A;t[n+4>>2]=e;nw(0,89515,n)|0;e=0}}while(0);h=f;return e|0}function sH(e,A,r){e=e|0;A=A|0;r=r|0;var i=0;i=Hw(e,91061)|0;if(!i)if((A|0)==1)i=200;else i=(gk(e)|0)*100|0;else i=K3(i)|0;t[47136]=i;i=cP(e,A)|0;do{if(!((i|0)<2|(t[47136]|0)<0))if(!A){uH(e,i,r);break}else{oH(e,i,A,r,t[47137]|0);break}}while(0);return}function cH(e){e=e|0;Xx(e);xH(e,1);return}function oH(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;var n=0,f=0,l=0,s=0,o=0.0,u=0,b=0,w=0,k=0,d=0,v=0,g=0,m=0;m=h;h=h+64|0;d=m+40|0;b=m+24|0;u=m;w=m+48|0;g=m+44|0;k=(r|0)==2;f=rH(e,A,k?0:2)|0;l=gH(e)|0;s=l|4;v=$F(a<<2)|0;t[v>>2]=$F(P(A<<3,a)|0)|0;n=t[47137]|0;a=1;while(1){if((a|0)>=(n|0))break;t[v+(a<<2)>>2]=(t[v>>2]|0)+((P(a,A)|0)<<3);a=a+1|0}n=(f|0)==0;a=n?s:l;if(0){s=t[15712]|0;l=t[47136]|0;o=+c[23294];t[u>>2]=i;t[u+4>>2]=n&1;t[u+8>>2]=a&3;t[u+12>>2]=l;c[u+16>>3]=o;a3(s,89173,u)|0;G3(89230,15,1,s)|0;lx();G3(89246,13,1,s)|0}u=wH(e,A,w,r,i,g)|0;if(0){s=t[15712]|0;o=+sx();t[b>>2]=A;c[b+8>>3]=o;a3(s,89260,b)|0}if((r|0)!=1){o=+wx(e,zw(e,0,89279,0)|0,0.0,-1797693134862315708145274.0e284);if(k){a=hU(u,A,t[w>>2]|0,v,t[g>>2]|0,t[47137]|0,a,i,t[47136]|0,o)|0;n=12}else n=14}else{a=rP(u,A,t[w>>2]|0,v,t[g>>2]|0,t[47137]|0,a,i,t[47136]|0)|0;n=12}if((n|0)==12)if((a|0)<0)nw(3,89289,d)|0;else n=14;e:do{if((n|0)==14){n=sd(e)|0;while(1){if(!n)break e;s=t[n+16>>2]|0;f=t[s+120>>2]|0;l=t[47137]|0;s=s+132|0;a=0;while(1){if((a|0)>=(l|0))break;c[(t[s>>2]|0)+(a<<3)>>3]=+c[(t[v+(a<<2)>>2]|0)+(f<<3)>>3];a=a+1|0}n=cd(e,n)|0}}}while(0);JU(u);G2(t[v>>2]|0);G2(v);G2(t[g>>2]|0);h=m;return}function uH(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0,n=0,f=0.0,l=0;n=h;h=h+48|0;a=n+32|0;i=n;switch(r|0){case 2:{bH(e,A);break}case 1:{if(!(cU(e,A)|0)){t[i>>2]=Mk(e)|0;nw(0,88902,i)|0;nw(3,93364,n+8|0)|0;nw(3,88954,n+16|0)|0;nw(3,89026,n+24|0)|0;YP(e,A)}break}default:{YP(e,A);if((r|0)==3)hH(e)}}EP(e,A);BP(e,A);if(0){i=t[15712]|0;l=t[47136]|0;f=+c[23294];t[a>>2]=r;t[a+4>>2]=l;c[a+8>>3]=f;a3(i,89064,a)|0;lx()}yP(e,A);h=n;return}function bH(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0,f=0,l=0;l=h;h=h+16|0;n=wH(e,A,l,0,2,0)|0;f=PT(n,A)|0;i=e+16|0;e=0;while(1){if((e|0)>=(A|0))break;a=f+(e<<2)|0;r=0;while(1){if((r|0)==(A|0))break;c[(t[(t[(t[i>>2]|0)+160>>2]|0)+(e<<2)>>2]|0)+(r<<3)>>3]=+(t[(t[a>>2]|0)+(r<<2)>>2]|0);r=r+1|0}e=e+1|0}G2(t[f>>2]|0);G2(f);JU(n);h=l;return}function hH(e){e=e|0;var A=0,r=0,i=0,a=0,n=0,f=0,l=0.0;a=e+16|0;r=sd(e)|0;while(1){if(!r)break;A=Ow(e,r)|0;while(1){if(!A)break;n=t[A>>2]&3;i=(t[t[((n|0)==3?A:A+48|0)+40>>2]>>2]|0)>>>4;n=(t[t[((n|0)==2?A:A+-48|0)+40>>2]>>2]|0)>>>4;if((i|0)!=(n|0)){l=+c[(t[A+16>>2]|0)+136>>3];f=t[(t[a>>2]|0)+160>>2]|0;c[(t[f+(n<<2)>>2]|0)+(i<<3)>>3]=l;c[(t[f+(i<<2)>>2]|0)+(n<<3)>>3]=l}A=qw(e,A)|0}r=cd(e,r)|0}return}function wH(e,A,r,i,a,n){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;n=n|0;var f=0,l=0,o=0,u=0,b=0,h=0.0,w=0,k=0,d=0,v=0,g=0,m=0,p=0,E=0,B=0,y=0,C=0,I=0,Z=0,G=0,L=0,Q=0,D=0,z=0,W=0.0,Y=0;f=mk(e)|0;z=cV()|0;if((a|0)==2){l=0;L=0}else{L=zw(e,2,92493,0)|0;l=(t[47174]|0)!=0&1;L=(L|0)!=0}I=(i|1|0)==3;Q=$F(A*20|0)|0;D=$F(A<<2)|0;o=(f<<1)+A<<2;u=$F(o)|0;C=I|L;if(C)a=$F(o)|0;else a=0;G=(l|0)!=0;if(G)f=$F(o)|0;else f=0;if(I)l=$F(o)|0;else l=0;o=0;B=sd(e)|0;y=0;while(1){if(!B)break;bV(z);if((t[(t[B+16>>2]|0)+120>>2]|0)!=(y|0)){Z=12;break}t[D+(y<<2)>>2]=B;m=Q+(y*20|0)+4|0;t[m>>2]=u;p=Q+(y*20|0)+8|0;t[p>>2]=C?a:0;E=Q+(y*20|0)+12|0;t[E>>2]=G?f:0;t[Q+(y*20|0)+16>>2]=I?l:0;d=1;g=ek(e,B)|0;v=1;k=o;u=u+4|0;a=C?a+4|0:a;f=G?f+4|0:f;l=I?l+4|0:l;while(1){if(!g)break;b=t[g>>2]&3;w=g+-48|0;o=g+48|0;do{if((t[((b|0)==2?g:w)+40>>2]|0)==(t[((b|0)==3?g:o)+40>>2]|0)){b=d;w=v;o=k}else{b=kH(z,g,d)|0;if((b|0)!=(d|0)){if(G){w=(t[E>>2]|0)+(b<<2)|0;s[w>>2]=+c[(t[g+16>>2]|0)+128>>3]+ +s[w>>2]}if(!L){b=d;w=v;o=k;break}b=(t[p>>2]|0)+(b<<2)|0;W=+c[(t[g+16>>2]|0)+136>>3];h=+(~~+s[b>>2]|0);s[b>>2]=W>h?W:h;b=d;w=v;o=k;break}Y=t[g>>2]&3;o=(Y|0)==3?g:o;k=k+1|0;b=d+1|0;d=u+4|0;t[u>>2]=t[(t[(t[((t[o+40>>2]|0)==(B|0)?(Y|0)==2?g:w:o)+40>>2]|0)+16>>2]|0)+120>>2];if(G){s[f>>2]=+c[(t[g+16>>2]|0)+128>>3];f=f+4|0}if(L){o=a+4|0;s[a>>2]=+c[(t[g+16>>2]|0)+136>>3];if(I){a=o;Z=27}else a=o}else if(I){s[a>>2]=1.0;a=a+4|0;Z=27}if((Z|0)==27){Z=0;o=Hw(g,101559)|0;if((o|0)!=0?(y1(o,135709,4)|0)==0:0)h=0.0;else h=(B|0)==(t[((t[g>>2]&3|0)==2?g:w)+40>>2]|0)?1.0:-1.0;s[l>>2]=h;l=l+4|0}w=v+1|0;o=k;u=d}}while(0);d=b;g=Ak(e,g,B)|0;v=w;k=o}t[Q+(y*20|0)>>2]=v;t[t[m>>2]>>2]=y;o=k;B=cd(e,B)|0;y=y+1|0}if((Z|0)==12)ge(89103,89118,819,89130);if(I)dH(Q,A,i,D);b=(o|0)/2|0;e:do{if((b|0)!=(mk(e)|0)){o=(b<<1)+A<<2;l=AM(t[Q+4>>2]|0,o)|0;if(L)a=AM(t[Q+8>>2]|0,o)|0;if(G){u=0;f=AM(t[Q+12>>2]|0,o)|0}else u=0;while(1){if((u|0)>=(A|0))break e;o=t[Q+(u*20|0)>>2]|0;t[Q+(u*20|0)+4>>2]=l;if(L){t[Q+(u*20|0)+8>>2]=a;a=a+(o<<2)|0}if(G){t[Q+(u*20|0)+12>>2]=f;f=f+(o<<2)|0}u=u+1|0;l=l+(o<<2)|0}}}while(0);t[r>>2]=b;if(!n)G2(D);else t[n>>2]=D;hV(z);return Q|0}function kH(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0;a=t[A>>2]&3;i=t[(t[(t[((a|0)==3?A:A+48|0)+40>>2]|0)+16>>2]|0)+120>>2]|0;A=t[(t[(t[((a|0)==2?A:A+-48|0)+40>>2]|0)+16>>2]|0)+120>>2]|0;a=(i|0)>(A|0);return wV(e,a?A:i,a?i:A,r)|0}function dH(e,A,r,a){e=e|0;A=A|0;r=r|0;a=a|0;var n=0,f=0;n=0;while(1){if((n|0)>=(A|0)){n=0;break}f=t[(t[a+(n<<2)>>2]|0)+16>>2]|0;i[f+157>>0]=0;i[f+158>>0]=0;n=n+1|0}while(1){if((n|0)>=(A|0))break;if(!(i[(t[(t[a+(n<<2)>>2]|0)+16>>2]|0)+157>>0]|0))vH(e,n,r,a);n=n+1|0}return}function vH(e,A,r,a){e=e|0;A=A|0;r=r|0;a=a|0;var n=0,f=0,l=0,c=0,o=0,u=0,b=0,h=0.0,w=0,k=0;k=(t[a+(A<<2)>>2]|0)+16|0;o=t[k>>2]|0;i[o+157>>0]=1;i[o+158>>0]=1;o=e+(A*20|0)|0;u=e+(A*20|0)+16|0;b=e+(A*20|0)+4|0;h=(r|0)==3?-1.0:1.0;c=1;e:while(1){if((c|0)>=(t[o>>2]|0)){n=14;break}n=(t[u>>2]|0)+(c<<2)|0;do{if(!(+s[n>>2]==1.0)){w=t[(t[b>>2]|0)+(c<<2)>>2]|0;f=t[(t[a+(w<<2)>>2]|0)+16>>2]|0;if(!(i[f+158>>0]|0)){if(i[f+157>>0]|0)break;vH(e,w,r,a);break}s[n>>2]=h;f=e+(w*20|0)+4|0;l=t[e+(w*20|0)>>2]|0;n=1;while(1){if((n|0)>=(l|0)){n=9;break e}if((t[(t[f>>2]|0)+(n<<2)>>2]|0)==(A|0))break;n=n+1|0}s[(t[e+(w*20|0)+16>>2]|0)+(n<<2)>>2]=-1.0}}while(0);c=c+1|0}if((n|0)==9)ge(89144,89118,721,89164);else if((n|0)==14){i[(t[k>>2]|0)+158>>0]=0;return}}function gH(e){e=e|0;var A=0,r=0;r=h;h=h+16|0;A=r;e=hx(e,zw(e,0,89305,0)|0,2,0)|0;if((e|0)==0|(e|0)>2){t[A>>2]=89305;nw(0,89314,A)|0;e=2}h=r;return e|0}function mH(e){e=e|0;var A=0,r=0,i=0;r=gk(e)|0;t[46796]=zw(e,1,102623,0)|0;i=zw(e,1,90660,0)|0;A=sd(e)|0;while(1){if(!A)break;xJ(A);JJ(t[46796]|0,i,A,r)|0;A=cd(e,A)|0}r=sd(e)|0;while(1){if(!r)break;A=Ow(e,r)|0;while(1){if(!A)break;pH(A);A=qw(e,A)|0}r=cd(e,r)|0}return}function pH(e){e=e|0;var A=0.0;Sd(e,137460,176,1)|0;Mx(e)|0;A=+wx(e,t[47174]|0,1.0,1.0);c[(t[e+16>>2]|0)+128>>3]=A;return}function EH(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,n=0;e=KF(64)|0;r=e+8|0;i=A+8|0;n=r+48|0;do{t[r>>2]=t[i>>2];r=r+4|0;i=i+4|0}while((r|0)<(n|0));A=t[A+56>>2]|0;t[e+56>>2]=A;a[(t[A+16>>2]|0)+168>>1]=1;return e|0}function BH(e,A,r){e=e|0;A=A|0;r=r|0;G2(A);return}function yH(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;e=t[A>>2]|0;i=t[r>>2]|0;if(e>>>0<=i>>>0)if(e>>>0>=i>>>0){i=t[A+24>>2]|0;e=t[r+24>>2]|0;if(i>>>0<=e>>>0)if(i>>>0>=e>>>0){e=~~(+c[A+8>>3]-+c[r+8>>3]);if(!e){e=~~(+c[A+16>>3]-+c[r+16>>3]);if(!e){e=~~(+c[A+32>>3]-+c[r+32>>3]);if(!e)e=~~(+c[A+40>>3]-+c[r+40>>3])}}}else e=-1;else e=1}else e=-1;else e=1;return e|0}function CH(e,A,r){e=e|0;A=A|0;r=r|0;var n=0,f=0,l=0,s=0,c=0,o=0.0;c=h;h=h+16|0;n=c;f=A+16|0;l=a[(t[f>>2]|0)+168>>1]|0;s=l<<16>>16;if(l<<16>>16!=1&(i[194954]|0)==0){l=$F(s<<2)|0;n=0;while(1){if((n|0)>=(s|0))break;t[l+(n<<2)>>2]=A;A=t[(t[A+16>>2]|0)+172>>2]|0;n=n+1|0}o=+(r|0);GR(e,l,0,s,o,o,17792);A=0;while(1){if((A|0)>=(s|0))break;n=t[l+(A<<2)>>2]|0;f=n+16|0;if(t[(t[f>>2]|0)+96>>2]|0){r=Bd(t[((t[n>>2]&3|0)==3?n:n+48|0)+40>>2]|0)|0;Hx(r,t[(t[f>>2]|0)+96>>2]|0)}FR(n);A=A+1|0}G2(l)}else{t[n>>2]=A;o=+(r|0);GR(e,n,0,1,o,o,17792);if(t[(t[f>>2]|0)+96>>2]|0){s=Bd(t[((t[A>>2]&3|0)==3?A:A+48|0)+40>>2]|0)|0;Hx(s,t[(t[f>>2]|0)+96>>2]|0)}FR(A)}h=c;return}function IH(e){e=e|0;return 0}function ZH(e){e=e|0;return 0}function GH(e,A,r){e=e|0;A=A|0;r=r|0;var a=0,n=0,f=0,l=0.0,o=0.0,u=0.0,b=0.0,w=0.0,k=0.0,d=0,v=0.0,g=0,m=0,p=0,E=0.0,B=0.0,y=0.0,C=0,I=0,Z=0,G=0,L=0,Q=0,z=0,F=0,M=0,V=0,N=0,R=0,x=0,J=0,H=0;H=h;h=h+384|0;x=H+368|0;J=H+112|0;f=H+32|0;d=H+336|0;M=H+320|0;V=H+304|0;N=H+288|0;R=H+272|0;n=H+256|0;Q=H+240|0;z=H+224|0;F=H+208|0;g=H+192|0;m=H+176|0;p=H+160|0;C=H+144|0;I=H+128|0;Z=H+96|0;G=H+16|0;L=H;e:do{switch(oN(e)|0){case 3:case 1:{a=KF(8)|0;C=e+16|0;e=t[C>>2]|0;n=t[e+12>>2]|0;do{if(!(r<<24>>24)){e=t[n+8>>2]|0;if((e|0)>2){y=0.0;f=t[n+44>>2]|0;r=0;w=+s[A>>2];k=+s[A+4>>2];break}else{y=+s8()*.01;e=8;f=0;r=1;w=0.0;k=0.0;break}}else if(!(t[n+40>>2]&2048)){k=+c[e+88>>3];w=-k;y=+c[e+80>>3];B=y*-.5;c[f>>3]=w;c[f+8>>3]=B;c[f+16>>3]=k;c[f+24>>3]=B;y=y*.5;c[f+32>>3]=k;c[f+40>>3]=y;c[f+48>>3]=w;c[f+56>>3]=y;y=0.0;e=4;r=0;w=0.0;k=0.0;break}else{Jx(d,n);w=+c[d>>3];B=+c[d+8>>3];k=+c[d+16>>3];y=+c[d+24>>3];c[f>>3]=w;c[f+8>>3]=B;c[f+16>>3]=k;c[f+24>>3]=B;c[f+32>>3]=k;c[f+40>>3]=y;c[f+48>>3]=w;c[f+56>>3]=y;y=0.0;e=4;r=0;w=0.0;k=0.0;break}}while(0);t[a+4>>2]=e;d=KF(e<<4)|0;t[a>>2]=d;v=1.0/+(e|0);g=A+8|0;m=A+4|0;p=(e|0)==4;E=-w;B=-k;n=0;while(1){if((e|0)<=(n|0))break e;do{if(r){l=+(n|0)*6.283185307179586*v+y;o=+W(+l);l=+Y(+l);if(!(i[g>>0]|0)){J=t[C>>2]|0;u=l*+s[m>>2]*+c[J+80>>3];l=o*+s[A>>2]*(+c[J+96>>3]+ +c[J+88>>3])}else{J=t[C>>2]|0;u=(+c[J+80>>3]+ +s[m>>2])*l;l=(+c[J+96>>3]+ +c[J+88>>3]+ +s[A>>2])*o}b=l*.5;l=u*.5}else{if(!(i[g>>0]|0)){b=+c[f+(n<<4)>>3]*w;l=+c[f+(n<<4)+8>>3]*k;break}if(!p){b=+c[f+(n<<4)>>3];l=+c[f+(n<<4)+8>>3];u=+D(+(l*l+b*b));b=(w/u+1.0)*b;l=(k/u+1.0)*l;break}switch(n|0){case 0:{o=k;l=w;break}case 1:{o=k;l=E;break}case 2:{o=B;l=E;break}case 3:{o=B;l=w;break}default:{o=0.0;l=0.0}}b=+c[f+(n<<4)>>3]+l;l=+c[f+(n<<4)+8>>3]+o}}while(0);x=t[C>>2]|0;J=e-n+-1|0;c[d+(J<<4)>>3]=+c[x+16>>3]+b;c[d+(J<<4)+8>>3]=+c[x+24>>3]+l;n=n+1|0}}case 2:{L=e+16|0;a=t[(t[L>>2]|0)+12>>2]|0;l=+c[a+16>>3];b=+c[a+24>>3];o=+c[a+32>>3];u=+c[a+40>>3];a=KF(8)|0;t[a+4>>2]=4;e=KF(64)|0;t[a>>2]=e;L=(t[L>>2]|0)+16|0;t[J>>2]=t[L>>2];t[J+4>>2]=t[L+4>>2];t[J+8>>2]=t[L+8>>2];t[J+12>>2]=t[L+12>>2];if(!(i[A+8>>0]|0)){t[x>>2]=t[J>>2];t[x+4>>2]=t[J+4>>2];t[x+8>>2]=t[J+8>>2];t[x+12>>2]=t[J+12>>2];QH(n,l,b,x,A);t[e>>2]=t[n>>2];t[e+4>>2]=t[n+4>>2];t[e+8>>2]=t[n+8>>2];t[e+12>>2]=t[n+12>>2];R=(t[a>>2]|0)+16|0;t[x>>2]=t[J>>2];t[x+4>>2]=t[J+4>>2];t[x+8>>2]=t[J+8>>2];t[x+12>>2]=t[J+12>>2];QH(Q,l,u,x,A);t[R>>2]=t[Q>>2];t[R+4>>2]=t[Q+4>>2];t[R+8>>2]=t[Q+8>>2];t[R+12>>2]=t[Q+12>>2];R=(t[a>>2]|0)+32|0;t[x>>2]=t[J>>2];t[x+4>>2]=t[J+4>>2];t[x+8>>2]=t[J+8>>2];t[x+12>>2]=t[J+12>>2];QH(z,o,u,x,A);t[R>>2]=t[z>>2];t[R+4>>2]=t[z+4>>2];t[R+8>>2]=t[z+8>>2];t[R+12>>2]=t[z+12>>2];R=(t[a>>2]|0)+48|0;t[x>>2]=t[J>>2];t[x+4>>2]=t[J+4>>2];t[x+8>>2]=t[J+8>>2];t[x+12>>2]=t[J+12>>2];QH(F,o,b,x,A);t[R>>2]=t[F>>2];t[R+4>>2]=t[F+4>>2];t[R+8>>2]=t[F+8>>2];t[R+12>>2]=t[F+12>>2];break e}else{y=l-+s[A>>2];F=A+4|0;B=b-+s[F>>2];t[x>>2]=t[J>>2];t[x+4>>2]=t[J+4>>2];t[x+8>>2]=t[J+8>>2];t[x+12>>2]=t[J+12>>2];LH(M,y,B,x);t[e>>2]=t[M>>2];t[e+4>>2]=t[M+4>>2];t[e+8>>2]=t[M+8>>2];t[e+12>>2]=t[M+12>>2];M=(t[a>>2]|0)+16|0;B=l-+s[A>>2];y=u+ +s[F>>2];t[x>>2]=t[J>>2];t[x+4>>2]=t[J+4>>2];t[x+8>>2]=t[J+8>>2];t[x+12>>2]=t[J+12>>2];LH(V,B,y,x);t[M>>2]=t[V>>2];t[M+4>>2]=t[V+4>>2];t[M+8>>2]=t[V+8>>2];t[M+12>>2]=t[V+12>>2];V=(t[a>>2]|0)+32|0;y=o+ +s[A>>2];B=u+ +s[F>>2];t[x>>2]=t[J>>2];t[x+4>>2]=t[J+4>>2];t[x+8>>2]=t[J+8>>2];t[x+12>>2]=t[J+12>>2];LH(N,y,B,x);t[V>>2]=t[N>>2];t[V+4>>2]=t[N+4>>2];t[V+8>>2]=t[N+8>>2];t[V+12>>2]=t[N+12>>2];N=(t[a>>2]|0)+48|0;B=o+ +s[A>>2];y=b-+s[F>>2];t[x>>2]=t[J>>2];t[x+4>>2]=t[J+4>>2];t[x+8>>2]=t[J+8>>2];t[x+12>>2]=t[J+12>>2];LH(R,B,y,x);t[N>>2]=t[R>>2];t[N+4>>2]=t[R+4>>2];t[N+8>>2]=t[R+8>>2];t[N+12>>2]=t[R+12>>2];break e}}case 4:{e=e+16|0;a=KF(8)|0;t[a+4>>2]=4;n=KF(64)|0;t[a>>2]=n;f=t[e>>2]|0;R=f+16|0;t[J>>2]=t[R>>2];t[J+4>>2]=t[R+4>>2];t[J+8>>2]=t[R+8>>2];t[J+12>>2]=t[R+12>>2];l=-+c[f+88>>3];if(!(i[A+8>>0]|0)){B=-+c[f+80>>3];t[x>>2]=t[J>>2];t[x+4>>2]=t[J+4>>2];t[x+8>>2]=t[J+8>>2];t[x+12>>2]=t[J+12>>2];QH(I,l,B,x,A);t[n>>2]=t[I>>2];t[n+4>>2]=t[I+4>>2];t[n+8>>2]=t[I+8>>2];t[n+12>>2]=t[I+12>>2];R=(t[a>>2]|0)+16|0;N=t[e>>2]|0;B=-+c[N+88>>3];y=+c[N+80>>3];t[x>>2]=t[J>>2];t[x+4>>2]=t[J+4>>2];t[x+8>>2]=t[J+8>>2];t[x+12>>2]=t[J+12>>2];QH(Z,B,y,x,A);t[R>>2]=t[Z>>2];t[R+4>>2]=t[Z+4>>2];t[R+8>>2]=t[Z+8>>2];t[R+12>>2]=t[Z+12>>2];R=(t[a>>2]|0)+32|0;N=t[e>>2]|0;y=+c[N+96>>3];B=+c[N+80>>3];t[x>>2]=t[J>>2];t[x+4>>2]=t[J+4>>2];t[x+8>>2]=t[J+8>>2];t[x+12>>2]=t[J+12>>2];QH(G,y,B,x,A);t[R>>2]=t[G>>2];t[R+4>>2]=t[G+4>>2];t[R+8>>2]=t[G+8>>2];t[R+12>>2]=t[G+12>>2];R=(t[a>>2]|0)+48|0;N=t[e>>2]|0;B=+c[N+96>>3];y=-+c[N+80>>3];t[x>>2]=t[J>>2];t[x+4>>2]=t[J+4>>2];t[x+8>>2]=t[J+8>>2];t[x+12>>2]=t[J+12>>2];QH(L,B,y,x,A);t[R>>2]=t[L>>2];t[R+4>>2]=t[L+4>>2];t[R+8>>2]=t[L+8>>2];t[R+12>>2]=t[L+12>>2];break e}else{y=l-+s[A>>2];N=A+4|0;B=-+c[f+80>>3]-+s[N>>2];t[x>>2]=t[J>>2];t[x+4>>2]=t[J+4>>2];t[x+8>>2]=t[J+8>>2];t[x+12>>2]=t[J+12>>2];LH(g,y,B,x);t[n>>2]=t[g>>2];t[n+4>>2]=t[g+4>>2];t[n+8>>2]=t[g+8>>2];t[n+12>>2]=t[g+12>>2];R=(t[a>>2]|0)+16|0;V=t[e>>2]|0;B=-+c[V+88>>3]-+s[A>>2];y=+c[V+80>>3]+ +s[N>>2];t[x>>2]=t[J>>2];t[x+4>>2]=t[J+4>>2];t[x+8>>2]=t[J+8>>2];t[x+12>>2]=t[J+12>>2];LH(m,B,y,x);t[R>>2]=t[m>>2];t[R+4>>2]=t[m+4>>2];t[R+8>>2]=t[m+8>>2];t[R+12>>2]=t[m+12>>2];R=(t[a>>2]|0)+32|0;V=t[e>>2]|0;y=+c[V+96>>3]+ +s[A>>2];B=+c[V+80>>3]+ +s[N>>2];t[x>>2]=t[J>>2];t[x+4>>2]=t[J+4>>2];t[x+8>>2]=t[J+8>>2];t[x+12>>2]=t[J+12>>2];LH(p,y,B,x);t[R>>2]=t[p>>2];t[R+4>>2]=t[p+4>>2];t[R+8>>2]=t[p+8>>2];t[R+12>>2]=t[p+12>>2];R=(t[a>>2]|0)+48|0;V=t[e>>2]|0;B=+c[V+96>>3]+ +s[A>>2];y=-+c[V+80>>3]-+s[N>>2];t[x>>2]=t[J>>2];t[x+4>>2]=t[J+4>>2];t[x+8>>2]=t[J+8>>2];t[x+12>>2]=t[J+12>>2];LH(C,B,y,x);t[R>>2]=t[C>>2];t[R+4>>2]=t[C+4>>2];t[R+8>>2]=t[C+8>>2];t[R+12>>2]=t[C+12>>2];break e}}default:a=0}}while(0);h=H;return a|0}function LH(e,A,r,i){e=e|0;A=+A;r=+r;i=i|0;r=+c[i+8>>3]+r;c[e>>3]=+c[i>>3]+A;c[e+8>>3]=r;return}function QH(e,A,r,i,a){e=e|0;A=+A;r=+r;i=i|0;a=a|0;r=+s[a+4>>2]*r+ +c[i+8>>3];c[e>>3]=+s[a>>2]*A+ +c[i>>3];c[e+8>>3]=r;return}function DH(e,A,r,i,a,n){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;n=n|0;var f=0,l=0,s=0,c=0,o=0,u=0,b=0,w=0,k=0,d=0;b=h;h=h+112|0;s=b+88|0;l=b+72|0;c=b+32|0;o=b+16|0;u=b;a=b+56|0;n=b+40|0;f=A+48|0;d=(t[(t[((t[A>>2]&3|0)==3?A:f)+40>>2]|0)+16>>2]|0)+16|0;w=A+16|0;k=(t[w>>2]|0)+16|0;t[l>>2]=t[d>>2];t[l+4>>2]=t[d+4>>2];t[l+8>>2]=t[d+8>>2];t[l+12>>2]=t[d+12>>2];t[s>>2]=t[k>>2];t[s+4>>2]=t[k+4>>2];t[s+8>>2]=t[k+8>>2];t[s+12>>2]=t[k+12>>2];zH(a,l,s);t[o>>2]=t[a>>2];t[o+4>>2]=t[a+4>>2];t[o+8>>2]=t[a+8>>2];t[o+12>>2]=t[a+12>>2];a=A+-48|0;k=(t[(t[((t[A>>2]&3|0)==2?A:a)+40>>2]|0)+16>>2]|0)+16|0;w=(t[w>>2]|0)+56|0;t[l>>2]=t[k>>2];t[l+4>>2]=t[k+4>>2];t[l+8>>2]=t[k+8>>2];t[l+12>>2]=t[k+12>>2];t[s>>2]=t[w>>2];t[s+4>>2]=t[w+4>>2];t[s+8>>2]=t[w+8>>2];t[s+12>>2]=t[w+12>>2];zH(n,l,s);t[u>>2]=t[n>>2];t[u+4>>2]=t[n+4>>2];t[u+8>>2]=t[n+8>>2];t[u+12>>2]=t[n+12>>2];if(!i){n=-1111;a=-1111}else{d=t[A>>2]&3;n=t[(t[(t[((d|0)==2?A:a)+40>>2]|0)+16>>2]|0)+288>>2]|0;a=t[(t[(t[((d|0)==3?A:f)+40>>2]|0)+16>>2]|0)+288>>2]|0}t[l>>2]=t[o>>2];t[l+4>>2]=t[o+4>>2];t[l+8>>2]=t[o+8>>2];t[l+12>>2]=t[o+12>>2];t[s>>2]=t[u>>2];t[s+4>>2]=t[u+4>>2];t[s+8>>2]=t[u+8>>2];t[s+12>>2]=t[u+12>>2];zl(r,l,a,s,n,c)|0;w=c;k=t[w+4>>2]|0;d=e;t[d>>2]=t[w>>2];t[d+4>>2]=k;h=b;return}function zH(e,A,r){e=e|0;A=A|0;r=r|0;var i=0.0;i=+c[r+8>>3]+ +c[A+8>>3];c[e>>3]=+c[r>>3]+ +c[A>>3];c[e+8>>3]=i;return}function WH(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;var n=0,f=0,l=0,s=0,c=0,o=0,u=0,b=0,w=0,k=0,d=0,v=0,g=0,m=0,p=0;m=h;h=h+144|0;w=m+104|0;k=m+88|0;b=m+80|0;u=m+72|0;s=m+64|0;v=m+128|0;c=m+32|0;o=m+124|0;g=m+16|0;d=m;l=m+120|0;f=(t[A+16>>2]|0)+144|0;n=t[f>>2]|0;f=t[f+4>>2]|0;p=s;t[p>>2]=n;t[p+4>>2]=f;p=n;t[g>>2]=t[p>>2];t[g+4>>2]=t[p+4>>2];t[g+8>>2]=t[p+8>>2];t[g+12>>2]=t[p+12>>2];f=n+(f+-1<<4)|0;t[d>>2]=t[f>>2];t[d+4>>2]=t[f+4>>2];t[d+8>>2]=t[f+8>>2];t[d+12>>2]=t[f+12>>2];e:do{if(!(a<<24>>24)){n=-1111;a=-1111}else{n=-1111;a=-1111;f=0;while(1){if((f|0)>=(i|0))break e;if((a|0)==-1111){a=t[r+(f<<2)>>2]|0;t[k>>2]=t[a>>2];t[k+4>>2]=t[a+4>>2];t[w>>2]=t[g>>2];t[w+4>>2]=t[g+4>>2];t[w+8>>2]=t[g+8>>2];t[w+12>>2]=t[g+12>>2];a=(Wl(k,w)|0)==0;a=a?-1111:f}if((n|0)==-1111){n=t[r+(f<<2)>>2]|0;t[k>>2]=t[n>>2];t[k+4>>2]=t[n+4>>2];t[w>>2]=t[d>>2];t[w+4>>2]=t[d+4>>2];t[w+8>>2]=t[d+8>>2];t[w+12>>2]=t[d+12>>2];n=(Wl(k,w)|0)==0;n=n?-1111:f}f=f+1|0}}}while(0);YH(r,i,a,n,l,o);t[c>>2]=0;t[c+4>>2]=0;t[c+8>>2]=0;t[c+12>>2]=0;t[c+16>>2]=0;t[c+20>>2]=0;t[c+24>>2]=0;t[c+28>>2]=0;f=t[l>>2]|0;p=t[o>>2]|0;t[w>>2]=t[s>>2];t[w+4>>2]=t[s+4>>2];if((Yl(f,p,w,c,v)|0)<0){g=Mk(t[((t[A>>2]&3|0)==3?A:A+48|0)+40>>2]|0)|0;p=Mk(t[((t[A>>2]&3|0)==2?A:A+-48|0)+40>>2]|0)|0;t[u>>2]=g;t[u+4>>2]=p;nw(1,89657,u)|0}else{if(0>1){n=t[15712]|0;u=Mk(t[((t[A>>2]&3|0)==3?A:A+48|0)+40>>2]|0)|0;a=A+-48|0;p=Mk(t[((t[A>>2]&3|0)==2?A:a)+40>>2]|0)|0;t[b>>2]=u;t[b+4>>2]=p;a3(n,89705,b)|0;n=A}else{a=A+-48|0;n=A}mR(A,t[((t[n>>2]&3|0)==2?A:a)+40>>2]|0,t[v>>2]|0,t[v+4>>2]|0,17792);G2(f);t[k>>2]=t[g>>2];t[k+4>>2]=t[g+4>>2];t[k+8>>2]=t[g+8>>2];t[k+12>>2]=t[g+12>>2];t[w>>2]=t[d>>2];t[w+4>>2]=t[d+4>>2];t[w+8>>2]=t[d+8>>2];t[w+12>>2]=t[d+12>>2];JR(e,A,k,w)}h=m;return}function YH(e,A,r,i,a,n){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;n=n|0;var f=0,l=0,s=0,c=0,o=0,u=0,b=0,h=0,w=0,k=0;l=0;f=0;while(1){if((l|0)>=(A|0))break;if(!((l|0)==(r|0)|(l|0)==(i|0)))f=(t[(t[e+(l<<2)>>2]|0)+4>>2]|0)+f|0;l=l+1|0}h=$F(f<<5)|0;l=0;b=0;while(1){if((b|0)>=(A|0))break;e:do{if(!((b|0)==(r|0)|(b|0)==(i|0))){u=e+(b<<2)|0;o=0;while(1){s=t[u>>2]|0;c=t[s+4>>2]|0;if((o|0)>=(c|0))break e;w=o+1|0;k=h+(l<<5)|0;s=(t[s>>2]|0)+(o<<4)|0;t[k>>2]=t[s>>2];t[k+4>>2]=t[s+4>>2];t[k+8>>2]=t[s+8>>2];t[k+12>>2]=t[s+12>>2];s=h+(l<<5)+16|0;c=(t[t[u>>2]>>2]|0)+(((w|0)<(c|0)?w:0)<<4)|0;t[s>>2]=t[c>>2];t[s+4>>2]=t[c+4>>2];t[s+8>>2]=t[c+8>>2];t[s+12>>2]=t[c+12>>2];o=w;l=l+1|0}}}while(0);b=b+1|0}if((l|0)==(f|0)){t[a>>2]=h;t[n>>2]=f;return}else ge(89719,89726,77,89741)}function FH(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,n=0,f=0,l=0,s=0,c=0,o=0,u=0,b=0,w=0;u=h;h=h+32|0;c=u+12|0;i=u;rU(i,e);t[c>>2]=t[i>>2];t[c+4>>2]=t[i+4>>2];t[c+8>>2]=t[i+8>>2];i=sd(e)|0;while(1){if(!i)break;n=Ow(e,i)|0;while(1){if(!n)break;hR(n);n=qw(e,n)|0}i=cd(e,i)|0}f=Uh(17756,t[4581]|0)|0;i=sd(e)|0;while(1){if(!i)break;n=Ow(e,i)|0;while(1){if(!n)break;if((t[47134]|0)>1?(l=t[n+16>>2]|0,(t[l+8>>2]|0)!=0):0){b=l+168|0;a[b>>1]=(a[b>>1]|0)+1<<16>>16}else o=14;if((o|0)==14?(o=0,s=MH(f,n)|0,(s|0)!=(n|0)):0){b=t[s+16>>2]|0;w=b+168|0;a[w>>1]=(a[w>>1]|0)+1<<16>>16;b=b+172|0;t[(t[n+16>>2]|0)+172>>2]=t[b>>2];t[b>>2]=n}n=qw(e,n)|0}i=cd(e,i)|0}Ph(f)|0;if(!(L5[A&63](e,c,r)|0)){t[47138]=1;i=0}else i=1;h=u;return i|0}function MH(e,A){e=e|0;A=A|0;var r=0,i=0,a=0.0,n=0.0,f=0,l=0.0,s=0.0,o=0.0,u=0.0,b=0,w=0,k=0;k=h;h=h+64|0;w=k;i=t[A>>2]&3;f=t[((i|0)==3?A:A+48|0)+40>>2]|0;i=t[((i|0)==2?A:A+-48|0)+40>>2]|0;do{if(f>>>0>=i>>>0){r=A+16|0;if(f>>>0>i>>>0){r=t[r>>2]|0;b=i;i=f;s=+c[r+16>>3];o=+c[r+24>>3];n=+c[r+56>>3];a=+c[r+64>>3];break}b=t[r>>2]|0;l=+c[b+56>>3];u=+c[b+64>>3];n=+c[b+16>>3];a=+c[b+24>>3];if(!(nl)){r=a>u;if(a>2]|0;b=f;s=+c[r+56>>3];o=+c[r+64>>3];n=+c[r+16>>3];a=+c[r+24>>3]}}while(0);t[w+8>>2]=b;c[w+16>>3]=n;c[w+24>>3]=a;t[w+32>>2]=i;c[w+40>>3]=s;c[w+48>>3]=o;t[w+56>>2]=A;w=t[(L5[t[e>>2]&63](e,w,1)|0)+56>>2]|0;h=k;return w|0}function VH(e,A){e=e|0;A=A|0;return FH(e,21,A)|0}function NH(e,A,r){e=e|0;A=A|0;r=r|0;var n=0,f=0,l=0,o=0,u=0,b=0,w=0,k=0,d=0,v=0,g=0,m=0,p=0,E=0,B=0,y=0,C=0,I=0,Z=0,G=0,L=0,Q=0,D=0,z=0.0,W=0;D=h;h=h+112|0;Z=D+88|0;I=D+72|0;g=D+40|0;k=D+8|0;w=D;m=D+64|0;G=D+48|0;L=D+24|0;n=(t[47134]|0)>1&1;do{if((r|0)>5){v=KF((gk(e)|0)<<2)|0;b=(r|0)==8;u=b&1;o=sd(e)|0;d=0;while(1){if(!o)break;f=GH(o,A,u)|0;l=(t[o+16>>2]|0)+288|0;if(!f){t[l>>2]=-1111;f=d}else{t[l>>2]=d;t[v+(d<<2)>>2]=f;f=d+1|0}o=cd(e,o)|0;d=f}if(v){f=KT(v,d)|0;if(f|0){if(b){y=0;C=v;B=v;E=1;break}y=Ll(v,d)|0;C=v;B=v;E=1;break}if(b){nw(0,89755,w)|0;f=0;y=0;C=v;B=v;E=1;break}else{z=+s[A+4>>2];c[k>>3]=+s[A>>2];c[k+8>>3]=z;nw(0,89833,k)|0;f=0;y=0;C=v;B=v;E=1;break}}else{f=0;y=0;C=0;B=0;E=0}}else{f=0;y=0;C=0;d=0;B=0;E=0}}while(0);if(0){l=t[15712]|0;if((r|0)==8&(f|0)!=0)o=89939;else o=(y|0)==0?89925:(r|0)==10?110056:89915;t[g>>2]=o;a3(l,89956,g)|0}p=(y|0)!=0;e:do{if(!p){if((r|0)==8&(f|0)!=0){sA(e,0);n=1}}else{l=sd(e)|0;while(1){if(!l)break e;f=Ow(e,l)|0;while(1){if(!f)break;g=(t[f+16>>2]|0)+144|0;DH(m,f,y,1,0,0);k=m;v=t[k+4>>2]|0;t[g>>2]=t[k>>2];t[g+4>>2]=v;f=qw(e,f)|0}l=cd(e,l)|0}}}while(0);w=(n|0)==0;k=e+60|0;v=(r|0)==10;n=0;b=sd(e)|0;f=0;while(1){if(!b)break;g=b+16|0;A=Ow(e,b)|0;while(1){if(!A)break;u=t[((t[A>>2]&3|0)==2?A:A+-48|0)+40>>2]|0;l=A+16|0;o=t[l>>2]|0;if(!w?(t[o+8>>2]|0)!=0:0){W=(t[g>>2]|0)+16|0;m=o+16|0;t[I>>2]=t[W>>2];t[I+4>>2]=t[W+4>>2];t[I+8>>2]=t[W+8>>2];t[I+12>>2]=t[W+12>>2];t[Z>>2]=t[m>>2];t[Z+4>>2]=t[m+4>>2];t[Z+8>>2]=t[m+8>>2];t[Z+12>>2]=t[m+12>>2];zH(G,I,Z);u=(t[u+16>>2]|0)+16|0;m=(t[l>>2]|0)+56|0;t[I>>2]=t[u>>2];t[I+4>>2]=t[u+4>>2];t[I+8>>2]=t[u+8>>2];t[I+12>>2]=t[u+12>>2];t[Z>>2]=t[m>>2];t[Z+4>>2]=t[m+4>>2];t[Z+8>>2]=t[m+8>>2];t[Z+12>>2]=t[m+12>>2];zH(L,I,Z);t[I>>2]=t[G>>2];t[I+4>>2]=t[G+4>>2];t[I+8>>2]=t[G+8>>2];t[I+12>>2]=t[G+12>>2];t[Z>>2]=t[L>>2];t[Z+4>>2]=t[L+4>>2];t[Z+8>>2]=t[L+8>>2];t[Z+12>>2]=t[L+12>>2];JR(e,A,I,Z)}else Q=35;e:do{if((Q|0)==35){Q=0;W=a[o+168>>1]|0;l=W<<16>>16;if(W<<16>>16){if((b|0)==(u|0)){if(!n){f=KF(96)|0;t[f+84>>2]=KF(((gk(e)|0)<<5)+11520|0)|0;n=f}CH(n,A,t[(t[(t[k>>2]|0)+16>>2]|0)+248>>2]|0);break}if(!p){iN(e,A,r,17792);break}l=i[194954]|0?1:l;o=A;u=0;while(1){if((u|0)>=(l|0))break e;if(v)WH(e,o,C,d,1);else RH(e,o);o=t[(t[o+16>>2]|0)+172>>2]|0;u=u+1|0}}}}while(0);A=qw(e,A)|0}b=cd(e,b)|0}if(p)Dl(y);if(n|0){G2(t[n+84>>2]|0);G2(f)}if(E){n=0;while(1){if((n|0)>=(d|0))break;G2(t[C+(n<<2)>>2]|0);n=n+1|0}G2(B)}h=D;return 0}function RH(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0,f=0,l=0,s=0,c=0,o=0,u=0,b=0;c=h;h=h+96|0;n=c+64|0;a=c+48|0;r=c+40|0;f=c+80|0;i=c+32|0;l=c+16|0;s=c;o=(t[A+16>>2]|0)+144|0;u=t[o>>2]|0;o=t[o+4>>2]|0;b=i;t[b>>2]=u;t[b+4>>2]=o;b=u;t[l>>2]=t[b>>2];t[l+4>>2]=t[b+4>>2];t[l+8>>2]=t[b+8>>2];t[l+12>>2]=t[b+12>>2];o=u+(o+-1<<4)|0;t[s>>2]=t[o>>2];t[s+4>>2]=t[o+4>>2];t[s+8>>2]=t[o+8>>2];t[s+12>>2]=t[o+12>>2];t[n>>2]=t[i>>2];t[n+4>>2]=t[i+4>>2];Cs(n,f);if(0>1){b=t[15712]|0;o=Mk(t[((t[A>>2]&3|0)==3?A:A+48|0)+40>>2]|0)|0;i=A+-48|0;u=Mk(t[((t[A>>2]&3|0)==2?A:i)+40>>2]|0)|0;t[r>>2]=o;t[r+4>>2]=u;a3(b,89981,r)|0;r=i;i=A}else{r=A+-48|0;i=A}mR(A,t[((t[i>>2]&3|0)==2?A:r)+40>>2]|0,t[f>>2]|0,t[f+4>>2]|0,17792);t[a>>2]=t[l>>2];t[a+4>>2]=t[l+4>>2];t[a+8>>2]=t[l+8>>2];t[a+12>>2]=t[l+12>>2];t[n>>2]=t[s>>2];t[n+4>>2]=t[s+4>>2];t[n+8>>2]=t[s+8>>2];t[n+12>>2]=t[s+12>>2];JR(e,A,a,n);h=c;return}function xH(e,A){e=e|0;A=A|0;var r=0;r=a[(t[e+16>>2]|0)+136>>1]&14;if(A<<24>>24)JH(e)|0;if(r<<16>>16)VH(e,r&65535)|0;return}function JH(e){e=e|0;var A=0,r=0,i=0,a=0;r=HH(e)|0;A=sd(e)|0;while(1){if(!A)break;i=t[A+16>>2]|0;a=t[i+132>>2]|0;c[i+16>>3]=+c[a>>3]*72.0;c[i+24>>3]=+c[a+8>>3]*72.0;A=cd(e,A)|0}return r|0}function HH(e){e=e|0;var A=0,r=0,i=0,a=0.0,n=0.0,f=0.0,l=0,s=0;e:do{if((t[e+60>>2]|0)==(e|0)?(r=e+16|0,i=t[r>>2]|0,(t[(t[i+8>>2]|0)+84>>2]|0)!=0):0){if(!(+c[i+16>>3]!=0.0)?!(+c[i+24>>3]!=0.0):0)A=0;else{PH(e);A=1;i=t[r>>2]|0}l=(t[i+116>>2]&1|0)==0;if(!l){s=i+32|0;f=+c[s>>3];r=i+40|0;c[s>>3]=+c[r>>3];c[r>>3]=f}r=t[i+8>>2]|0;A:do{switch(t[r+84>>2]|0){case 2:{a=+c[r+64>>3];if(a<=0.0)break e;n=a/+c[i+32>>3];a=+c[r+72>>3]/+c[i+40>>3];if(n<1.0|a<1.0)if(n>3];if(a<=0.0)break e;n=a/+c[i+32>>3];a=+c[r+72>>3]/+c[i+40>>3];if(!(n>1.0&a>1.0))break e;a=n>3];a=+c[i+40>>3]/+c[i+32>>3];if(a1){r=sd(e)|0;while(1){if(!r)break A;A=Ow(e,r)|0;while(1){if(!A)break;if(t[(t[A+16>>2]|0)+8>>2]|0)XH(A,a,n);A=qw(e,A)|0}r=cd(e,r)|0}}}while(0);A=sd(e)|0;while(1){if(!A)break;s=t[(t[A+16>>2]|0)+132>>2]|0;c[s>>3]=+c[s>>3]*a;s=s+8|0;c[s>>3]=+c[s>>3]*n;A=cd(e,A)|0}SH(e,a,n);A=1}else A=0}while(0);return A|0}function PH(e){e=e|0;var A=0,r=0,a=0.0,n=0.0,f=0.0,l=0.0,s=0,o=0,u=0,b=0;u=h;h=h+32|0;s=u+16|0;o=u;A=(t[e+16>>2]|0)+16|0;t[o>>2]=t[A>>2];t[o+4>>2]=t[A+4>>2];t[o+8>>2]=t[A+8>>2];t[o+12>>2]=t[A+12>>2];a=+c[o>>3];n=a*.013888888888888888;f=+c[o+8>>3];l=f*.013888888888888888;A=sd(e)|0;while(1){if(!A)break;r=t[A+16>>2]|0;b=t[r+132>>2]|0;c[b>>3]=+c[b>>3]-n;b=b+8|0;c[b>>3]=+c[b>>3]-l;r=t[r+108>>2]|0;if(r|0?i[r+81>>0]|0:0){b=r+56|0;c[b>>3]=+c[b>>3]-a;b=r+64|0;c[b>>3]=+c[b>>3]-f}A=cd(e,A)|0}r=sd(e)|0;while(1){if(!r)break;A=Ow(e,r)|0;while(1){if(!A)break;if(t[(t[A+16>>2]|0)+8>>2]|0){t[s>>2]=t[o>>2];t[s+4>>2]=t[o+4>>2];t[s+8>>2]=t[o+8>>2];t[s+12>>2]=t[o+12>>2];jH(A,s)}A=qw(e,A)|0}r=cd(e,r)|0}t[s>>2]=t[o>>2];t[s+4>>2]=t[o+4>>2];t[s+8>>2]=t[o+8>>2];t[s+12>>2]=t[o+12>>2];UH(e,s);h=u;return}function XH(e,A,r){e=e|0;A=+A;r=+r;var a=0,n=0,f=0,l=0,s=0,o=0,u=0,b=0,h=0.0,w=0,k=0.0,d=0.0,v=0.0,g=0.0,m=0;w=t[e>>2]&3;f=t[(t[(t[((w|0)==2?e:e+-48|0)+40>>2]|0)+16>>2]|0)+132>>2]|0;v=(A+-1.0)*72.0;k=v*+c[f>>3];g=(r+-1.0)*72.0;d=g*+c[f+8>>3];w=t[(t[(t[((w|0)==3?e:e+48|0)+40>>2]|0)+16>>2]|0)+132>>2]|0;v=v*+c[w>>3];g=g*+c[w+8>>3];w=t[e+16>>2]|0;f=t[w+8>>2]|0;l=t[f+4>>2]|0;s=l+-1|0;e=0;f=t[f>>2]|0;while(1){if((e|0)>=(l|0))break;o=t[f+4>>2]|0;u=o+-1|0;b=(e|0)==(s|0);a=0;n=t[f>>2]|0;while(1){if((a|0)>=(o|0))break;do{if(a|e){h=+c[n>>3];if((a|0)==(u|0)&b){c[n>>3]=h+k;m=n+8|0;c[m>>3]=+c[m>>3]+d;break}else{c[n>>3]=h*A;m=n+8|0;c[m>>3]=+c[m>>3]*r;break}}else{c[n>>3]=+c[n>>3]+v;m=n+8|0;c[m>>3]=+c[m>>3]+g}}while(0);a=a+1|0;n=n+16|0}if(t[f+8>>2]|0){m=f+16|0;c[m>>3]=+c[m>>3]+v;m=f+24|0;c[m>>3]=+c[m>>3]+g}if(t[f+12>>2]|0){m=f+32|0;c[m>>3]=+c[m>>3]+k;m=f+40|0;c[m>>3]=+c[m>>3]+d}e=e+1|0;f=f+48|0}e=t[w+96>>2]|0;if(e|0?i[e+81>>0]|0:0){m=e+56|0;c[m>>3]=+c[m>>3]*A;m=e+64|0;c[m>>3]=+c[m>>3]*r}e=t[w+100>>2]|0;if(e|0?i[e+81>>0]|0:0){m=e+56|0;c[m>>3]=+c[m>>3]+k;m=e+64|0;c[m>>3]=+c[m>>3]+d}e=t[w+104>>2]|0;if(e|0?i[e+81>>0]|0:0){m=e+56|0;c[m>>3]=+c[m>>3]+v;m=e+64|0;c[m>>3]=+c[m>>3]+g}return}function SH(e,A,r){e=e|0;A=+A;r=+r;var a=0,n=0,f=0;f=e+16|0;n=t[f>>2]|0;e=n+32|0;c[e>>3]=+c[e>>3]*A;e=n+40|0;c[e>>3]=+c[e>>3]*r;e=n+16|0;c[e>>3]=+c[e>>3]*A;e=n+24|0;c[e>>3]=+c[e>>3]*r;e=t[n+12>>2]|0;if((e|0)!=0?(i[e+81>>0]|0)!=0:0){a=e+56|0;c[a>>3]=+c[a>>3]*A;a=e+64|0;c[a>>3]=+c[a>>3]*r;a=1;e=n}else{a=1;e=n}while(1){if((a|0)>(t[e+180>>2]|0))break;SH(t[(t[e+184>>2]|0)+(a<<2)>>2]|0,A,r);a=a+1|0;e=t[f>>2]|0}return}function jH(e,A){e=e|0;A=A|0;var r=0,a=0,n=0,f=0,l=0,s=0,o=0,u=0;s=t[e+16>>2]|0;e=t[s+8>>2]|0;l=t[e+4>>2]|0;o=A+8|0;e=t[e>>2]|0;n=0;while(1){if((n|0)>=(l|0))break;f=t[e+4>>2]|0;r=t[e>>2]|0;a=0;while(1){if((a|0)>=(f|0))break;c[r>>3]=+c[r>>3]-+c[A>>3];u=r+8|0;c[u>>3]=+c[u>>3]-+c[o>>3];r=r+16|0;a=a+1|0}if(t[e+8>>2]|0){u=e+16|0;c[u>>3]=+c[u>>3]-+c[A>>3];u=e+24|0;c[u>>3]=+c[u>>3]-+c[o>>3]}if(t[e+12>>2]|0){u=e+32|0;c[u>>3]=+c[u>>3]-+c[A>>3];u=e+40|0;c[u>>3]=+c[u>>3]-+c[o>>3]}e=e+48|0;n=n+1|0}e=t[s+96>>2]|0;if(e|0?i[e+81>>0]|0:0){u=e+56|0;c[u>>3]=+c[u>>3]-+c[A>>3];u=e+64|0;c[u>>3]=+c[u>>3]-+c[o>>3]}e=t[s+108>>2]|0;if(e|0?i[e+81>>0]|0:0){u=e+56|0;c[u>>3]=+c[u>>3]-+c[A>>3];u=e+64|0;c[u>>3]=+c[u>>3]-+c[o>>3]}e=t[s+100>>2]|0;if(e|0?i[e+81>>0]|0:0){u=e+56|0;c[u>>3]=+c[u>>3]-+c[A>>3];u=e+64|0;c[u>>3]=+c[u>>3]-+c[o>>3]}e=t[s+104>>2]|0;if(e|0?i[e+81>>0]|0:0){u=e+56|0;c[u>>3]=+c[u>>3]-+c[A>>3];u=e+64|0;c[u>>3]=+c[u>>3]-+c[o>>3]}return}function UH(e,A){e=e|0;A=A|0;var r=0,a=0.0,n=0.0,f=0,l=0,s=0,o=0;s=h;h=h+16|0;l=s;n=+c[A>>3];f=e+16|0;e=t[f>>2]|0;r=e+32|0;c[r>>3]=+c[r>>3]-n;a=+c[A+8>>3];r=e+40|0;c[r>>3]=+c[r>>3]-a;r=e+16|0;c[r>>3]=+c[r>>3]-n;r=e+24|0;c[r>>3]=+c[r>>3]-a;r=t[e+12>>2]|0;if((r|0)!=0?(i[r+81>>0]|0)!=0:0){o=r+56|0;c[o>>3]=+c[o>>3]-n;r=r+64|0;c[r>>3]=+c[r>>3]-a;r=1}else r=1;while(1){if((r|0)>(t[e+180>>2]|0))break;o=t[(t[e+184>>2]|0)+(r<<2)>>2]|0;t[l>>2]=t[A>>2];t[l+4>>2]=t[A+4>>2];t[l+8>>2]=t[A+8>>2];t[l+12>>2]=t[A+12>>2];UH(o,l);r=r+1|0;e=t[f>>2]|0}h=s;return}function TH(e){e=e|0;var A=0,r=0,i=0,a=0.0,n=0.0,f=0,l=0;f=h;h=h+16|0;r=f;Xx(e);i=e+16|0;A=t[i>>2]|0;a=+c[A+16>>3]*.013888888888888888;n=+c[A+24>>3]*.013888888888888888;A=sd(e)|0;while(1){if(!A)break;l=t[(t[A+16>>2]|0)+132>>2]|0;c[l>>3]=+c[l>>3]-a;l=l+8|0;c[l>>3]=+c[l>>3]-n;A=cd(e,A)|0}l=(t[i>>2]|0)+16|0;t[r>>2]=t[l>>2];t[r+4>>2]=t[l+4>>2];t[r+8>>2]=t[l+8>>2];t[r+12>>2]=t[l+12>>2];OH(e,r);xH(e,1);h=f;return}function OH(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0,f=0.0,l=0.0;n=h;h=h+16|0;a=n;r=e+16|0;e=1;while(1){i=t[r>>2]|0;if((e|0)>(t[i+180>>2]|0))break;i=t[(t[i+184>>2]|0)+(e<<2)>>2]|0;t[a>>2]=t[A>>2];t[a+4>>2]=t[A+4>>2];t[a+8>>2]=t[A+8>>2];t[a+12>>2]=t[A+12>>2];OH(i,a);e=e+1|0}l=+c[A>>3];a=i+32|0;c[a>>3]=+c[a>>3]-l;f=+c[A+8>>3];A=i+40|0;c[A>>3]=+c[A>>3]-f;A=i+16|0;c[A>>3]=+c[A>>3]-l;A=i+24|0;c[A>>3]=+c[A>>3]-f;h=n;return}function _H(e,A,r,a,n){e=e|0;A=A|0;r=r|0;a=a|0;n=n|0;var f=0,l=0,s=0,o=0,u=0,b=0,h=0,w=0,k=0.0;w=(r|0)>2;b=0;h=0;l=t[a+4>>2]|0;e=t[a>>2]|0;while(1){if((h|0)>=(A|0)){e=0;break}f=t[(t[n+(h<<2)>>2]|0)+16>>2]|0;o=i[f+119>>0]|0;e:do{if(!(o<<24>>24)){s=e+8|0;c[e>>3]=+s8();f=l+8|0;c[l>>3]=+s8();if(w){e=2;while(1){if((e|0)==(r|0)){l=b;e=s;break e}k=+s8();c[(t[a+(e<<2)>>2]|0)+(h<<3)>>3]=k;e=e+1|0}}else{l=b;e=s}}else{s=t[f+132>>2]|0;u=e+8|0;c[e>>3]=+c[s>>3];f=l+8|0;c[l>>3]=+c[s+8>>3];A:do{if(w){l=2;e=s+16|0;while(1){if((l|0)==(r|0))break A;c[(t[a+(l<<2)>>2]|0)+(h<<3)>>3]=+c[e>>3];l=l+1|0;e=e+8|0}}}while(0);l=(o&255)>1?1:b;e=u}}while(0);b=l;h=h+1|0;l=f}while(1){if((e|0)>=(r|0))break;mO(A,t[a+(e<<2)>>2]|0);e=e+1|0}return b|0}function qH(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0,f=0,l=0,o=0.0,u=0,b=0,h=0,w=0;r=KF(((P(A+1|0,A)|0)/2|0)<<2)|0;b=lP(A,A,0.0)|0;h=lP(A,A,0.0)|0;e:do{if(!(t[e+8>>2]|0)){i=0;while(1){if((i|0)>=(A|0))break e;n=t[e+(i*20|0)>>2]|0;f=e+(i*20|0)+4|0;l=b+(i<<2)|0;a=1;while(1){if((a|0)>=(n|0))break;u=t[(t[f>>2]|0)+(a<<2)>>2]|0;c[(t[b+(u<<2)>>2]|0)+(i<<3)>>3]=-1.0;c[(t[l>>2]|0)+(u<<3)>>3]=-1.0;a=a+1|0}i=i+1|0}}else{i=0;while(1){if((i|0)>=(A|0))break e;n=t[e+(i*20|0)>>2]|0;f=e+(i*20|0)+4|0;l=e+(i*20|0)+8|0;u=b+(i<<2)|0;a=1;while(1){if((a|0)>=(n|0))break;w=t[(t[f>>2]|0)+(a<<2)>>2]|0;o=-1.0/+s[(t[l>>2]|0)+(a<<2)>>2];c[(t[b+(w<<2)>>2]|0)+(i<<3)>>3]=o;c[(t[u>>2]|0)+(w<<3)>>3]=o;a=a+1|0}i=i+1|0}}}while(0);e:do{if(!(sU(A,b,h)|0)){G2(r);r=0}else{a=0;f=0;u=A;while(1){if((f|0)>=(A|0))break e;l=h+(f<<2)|0;i=f;n=a;while(1){if((i|0)==(A|0))break;if((f|0)==(i|0))o=0.0;else{w=t[l>>2]|0;o=+c[(t[h+(i<<2)>>2]|0)+(i<<3)>>3]+ +c[w+(f<<3)>>3]+ +c[w+(i<<3)>>3]*-2.0}s[r+(n<<2)>>2]=o;i=i+1|0;n=n+1|0}a=a+u|0;f=f+1|0;u=u+-1|0}}}while(0);sP(b);sP(h);return r|0}function KH(e,A){e=e|0;A=A|0;var r=0,i=0,a=0.0,n=0,f=0,l=0,o=0,u=0,b=0,w=0,k=0,d=0,v=0.0;d=h;h=h+16|0;k=d;if(t[e+8>>2]|0){r=$H(e,A)|0;a=0.0;i=0;w=0;while(1){if((w|0)>=(A|0))break;i=i+w|0;b=t[e+(w*20|0)>>2]|0;l=e+(w*20|0)+4|0;o=(P(w,A)|0)-i|0;u=e+(w*20|0)+8|0;f=1;while(1){if((f|0)>=(b|0))break;n=t[(t[l>>2]|0)+(f<<2)>>2]|0;if((n|0)>=(w|0)){n=r+(o+n<<2)|0;v=+s[(t[u>>2]|0)+(f<<2)>>2];a=a+ +Q(+(+s[n>>2]-v));s[n>>2]=v}f=f+1|0}w=w+1|0}if(0){A=t[15712]|0;c[k>>3]=a;a3(A,89997,k)|0}}else r=0;h=d;return r|0}function $H(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0,f=0,l=0,s=0,c=0,o=0;o=h;h=h+16|0;f=o;l=KF(((P(A+1|0,A)|0)/2|0)<<2)|0;s=KF(A<<2)|0;fU(f,A);r=0;a=0;c=A;while(1){if((r|0)>=(A|0))break;TU(r,e,A,s);i=r;n=a;while(1){if((i|0)==(A|0))break;t[l+(n<<2)>>2]=t[s+(i<<2)>>2];i=i+1|0;n=n+1|0}r=r+1|0;a=a+c|0;c=c+-1|0}G2(s);lU(f);h=o;return l|0}function eP(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0,f=0,l=0,c=0,o=0,u=0;u=h;h=h+16|0;f=u;l=KF(((P(A+1|0,A)|0)/2|0)<<2)|0;c=KF(A<<2)|0;fU(f,A);r=0;a=0;o=A;while(1){if((r|0)>=(A|0))break;iU(r,e,A,c,f);i=r;n=a;while(1){if((i|0)==(A|0))break;s[l+(n<<2)>>2]=+(t[c+(i<<2)>>2]|0);i=i+1|0;n=n+1|0}r=r+1|0;a=a+o|0;o=o+-1|0}G2(c);lU(f);h=u;return l|0}function AP(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0,f=0,l=0,c=0,o=0.0,u=0,b=0,h=0,w=0,k=0,d=0,v=0.0;d=e+8|0;r=t[d>>2]|0;i=0;a=0;while(1){if((a|0)>=(A|0))break;i=(t[e+(a*20|0)>>2]|0)+i|0;a=a+1|0}a=KF(i<<2)|0;k=KF(A<<2)|0;i=0;while(1){if((i|0)>=(A|0))break;t[k+(i<<2)>>2]=0;i=i+1|0}if(!(t[d>>2]|0)){n=0;while(1){if((n|0)>=(A|0))break;t[e+(n*20|0)+8>>2]=a;NT(e,n,k);f=e+(n*20|0)|0;l=t[f>>2]|0;c=e+(n*20|0)+4|0;o=+(l+-1|0);i=1;while(1){if((i|0)>=(l|0))break;w=t[(t[c>>2]|0)+(i<<2)>>2]|0;v=+((t[e+(w*20|0)>>2]|0)+-1|0)+o;s[a+(i<<2)>>2]=v-+((VT(e,n,w,k)|0)<<1|0);i=i+1|0}RT(e,n,k);a=a+(t[f>>2]<<2)|0;n=n+1|0}a=eP(e,A)|0}else{l=0;while(1){if((l|0)>=(A|0))break;NT(e,l,k);c=e+(l*20|0)|0;u=t[c>>2]|0;b=e+(l*20|0)+4|0;h=u+-2|0;w=e+(l*20|0)+8|0;f=1;while(1){if((f|0)>=(u|0))break;i=t[(t[b>>2]|0)+(f<<2)>>2]|0;n=h+(t[e+(i*20|0)>>2]|0)|0;v=+(n-((VT(e,l,i,k)|0)<<1)|0);o=+s[(t[w>>2]|0)+(f<<2)>>2];if(o>2]=o;f=f+1|0}RT(e,l,k);t[w>>2]=a;a=a+(t[c>>2]<<2)|0;l=l+1|0}a=$H(e,A)|0}G2(k);G2(t[d>>2]|0);t[d>>2]=0;e:do{if(r|0){i=0;while(1){if((i|0)>=(A|0))break e;t[e+(i*20|0)+8>>2]=r;r=r+(t[e+(i*20|0)>>2]<<2)|0;i=i+1|0}}}while(0);return a|0}function rP(e,A,r,i,a,f,l,o,u){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;f=f|0;l=l|0;o=o|0;u=u|0;var b=0,w=0,k=0,d=0.0,v=0,g=0,m=0,p=0.0,E=0,B=0.0,y=0,C=0,I=0,Z=0,G=0,L=0,D=0,z=0,W=0,Y=0,F=0,M=0,V=0,N=0,R=0.0,x=0.0;N=h;h=h+80|0;V=N+56|0;M=N+48|0;I=N+40|0;m=N+32|0;g=N+24|0;v=N+16|0;w=N+8|0;b=N;k=l&4;F=l&3;e:do{if((u|0)<0)r=0;else{if(0)lx();l=(o|0)==2;A:do{if(l){if(0)G3(93290,24,1,t[15712]|0)|0;r=AP(e,A)|0;E=14}else{switch(o|0){case 1:{r=qH(e,A)|0;if(r|0){Y=r;break A}nw(0,93315,b)|0;nw(3,93364,w)|0;E=15;break A}case 3:break;default:{E=15;break A}}if(0)G3(93417,21,1,t[15712]|0)|0;r=KH(e,A)|0;E=14}}while(0);if((E|0)==14)if(!r)E=15;else Y=r;do{if((E|0)==15){if(0)G3(93439,26,1,t[15712]|0)|0;if(!(t[e+8>>2]|0)){Y=eP(e,A)|0;break}else{Y=$H(e,A)|0;break}}}while(0);if(0){W=t[15712]|0;c[v>>3]=+sx();a3(W,93466,v)|0;G3(93478,25,1,W)|0;lx()}A:do{if((A|0)>1&(k|0)!=0)if((iP(e,A,i,f,k,F,l&1)|0)<0){m=0;g=0;r=-1;e=0;v=0;k=0;w=0;b=0;o=0;l=0}else{l=0;while(1){if((l|0)>=(f|0)){y=0;E=35;break A}o=i+(l<<2)|0;d=1.0;r=0;while(1){if((r|0)==(A|0))break;B=+Q(+ +c[(t[o>>2]|0)+(r<<3)>>3]);d=B>d?B:d;r=r+1|0}d=1.0/d;r=0;while(1){if((r|0)==(A|0)){r=0;break}W=(t[o>>2]|0)+(r<<3)|0;c[W>>3]=+c[W>>3]*d;r=r+1|0}while(1){if((r|0)==(A|0))break;B=(+s8()+-.5)*1.0e-06;W=(t[o>>2]|0)+(r<<3)|0;c[W>>3]=+c[W>>3]+B;r=r+1|0}mO(A,t[o>>2]|0);l=l+1|0}}else{y=_H(0,A,f,i,a)|0;E=35}}while(0);A:do{if((E|0)==35){if(0){W=t[15712]|0;c[g>>3]=+sx();a3(W,93504,g)|0}if((A|0)==1|(u|0)==0){r=0;break e}if(0){W=t[15712]|0;c[m>>3]=+sx();a3(W,93466,m)|0;G3(90019,26,1,W)|0;lx()}v=f<<2;W=KF(v)|0;g=A<<2;e=P(g,f)|0;z=KF(e)|0;r=0;while(1){if((r|0)>=(f|0))break;o=z+((P(r,A)|0)<<2)|0;t[W+(r<<2)>>2]=o;b=i+(r<<2)|0;l=0;while(1){if((l|0)>=(A|0))break;s[o+(l<<2)>>2]=+c[(t[b>>2]|0)+(l<<3)>>3];l=l+1|0}r=r+1|0}r:do{if(!F){w=A+-1|0;r=0;d=0.0;b=0;while(1){if((b|0)>=(w|0))break r;k=A-b|0;o=r;l=1;while(1){r=o+1|0;if((l|0)>=(k|0))break;o=r;d=+s[Y+(r<<2)>>2]+d;l=l+1|0}b=b+1|0}}else d=+(A|0)*.5*+(A+-1|0)}while(0);Z=(P(A+1|0,A)|0)/2|0;G=(F|0)==2;if(G)HO(Z,Y);PO(Z,Y);L=A<<3;o=KF(L)|0;z6(o|0,0,L|0)|0;D=A+-1|0;r=0;b=0;while(1){if((b|0)>=(D|0)){r=A;l=0;b=0;break}w=A-b|0;p=0.0;l=1;while(1){r=r+1|0;if((l|0)>=(w|0))break;B=+s[Y+(r<<2)>>2];C=o+(l+b<<3)|0;c[C>>3]=+c[C>>3]-B;p=p+B;l=l+1|0}C=o+(b<<3)|0;c[C>>3]=+c[C>>3]-p;b=b+1|0}while(1){if((l|0)>=(A|0))break;s[Y+(b<<2)>>2]=+c[o+(l<<3)>>3];C=r+b|0;r=r+-1|0;l=l+1|0;b=C}C=KF(v)|0;t[C>>2]=KF(e)|0;r=1;while(1){if((r|0)>=(f|0))break;t[C+(r<<2)>>2]=(t[C>>2]|0)+((P(r,A)|0)<<2);r=r+1|0}w=KF(g)|0;b=KF(g)|0;l=KF(Z<<2)|0;if(0){E=t[15712]|0;c[I>>3]=+sx();a3(E,93466,I)|0;G3(90046,15,1,E)|0;lx()}E=(y|0)==0;y=t[15712]|0;r=0;k=0;B=1797693134862315708145274.0e284;while(1){if(!(k<<24>>24==0&(r|0)<(u|0)))break;z6(o|0,0,L|0)|0;if(G){XO(Z,Y,l);m=0;e=0}else{m=0;e=0}while(1){if((m|0)>=(D|0)){k=A;v=0;e=0;break}g=A-m+-1|0;xO(g,0.0,b);k=0;while(1){if((k|0)>=(f|0))break;I=W+(k<<2)|0;xO(g,+s[(t[I>>2]|0)+(m<<2)>>2],w);FO(g,w,-1.0,(t[I>>2]|0)+(m<<2)+4|0);HO(g,w);YO(g,w,b,b);k=k+1|0}SO(g,b);k=0;while(1){if((k|0)>=(g|0))break;v=b+(k<<2)|0;p=+s[v>>2];if(p>=3402823466385288598117041.0e14|p<0.0)s[v>>2]=0.0;k=k+1|0}k=e+1|0;e=m+1|0;r:do{if(G){p=0.0;v=0;while(1){if((v|0)>=(g|0))break r;I=l+(k<<2)|0;R=+s[I>>2]*+s[b+(v<<2)>>2];s[I>>2]=R;I=o+(e+v<<3)|0;c[I>>3]=+c[I>>3]-R;p=p+R;k=k+1|0;v=v+1|0}}else{p=0.0;v=0;while(1){if((v|0)>=(g|0))break r;R=+s[b+(v<<2)>>2];s[l+(k<<2)>>2]=R;I=o+(e+v<<3)|0;c[I>>3]=+c[I>>3]-R;p=p+R;k=k+1|0;v=v+1|0}}}while(0);I=o+(m<<3)|0;c[I>>3]=+c[I>>3]-p;m=e;e=k}while(1){if((v|0)>=(A|0)){k=0;break}s[l+(e<<2)>>2]=+c[o+(v<<3)>>3];I=k+e|0;k=k+-1|0;v=v+1|0;e=I}while(1){if((k|0)>=(f|0)){p=0.0;k=0;break}zO(l,A,t[W+(k<<2)>>2]|0,t[C+(k<<2)>>2]|0);k=k+1|0}while(1){if((k|0)>=(f|0))break;p=+NO(A,t[W+(k<<2)>>2]|0,t[C+(k<<2)>>2]|0)+p;k=k+1|0}p=p*2.0+d;k=0;while(1){if((k|0)>=(f|0))break;I=W+(k<<2)|0;zO(Y,A,t[I>>2]|0,w);p=p-+NO(A,t[I>>2]|0,w);k=k+1|0}x=B-p;R=+c[23294];k=(p=0.0?x:-x)/B=(f|0))break;g=W+(e<<2)|0;v=t[g>>2]|0;r:do{if(E){if((bU(Y,v,t[C+(e<<2)>>2]|0,A,.001,A)|0)<0){m=C;g=Y;r=-1;e=z;v=W;k=C;break A}}else{VO(A,v,w);if((bU(Y,w,t[C+(e<<2)>>2]|0,A,.001,A)|0)<0){m=C;g=Y;r=-1;e=z;v=W;k=C;break A}else v=0;while(1){if((v|0)>=(A|0))break r;if((n[(t[(t[a+(v<<2)>>2]|0)+16>>2]|0)+119>>0]|0)<=1)t[(t[g>>2]|0)+(v<<2)>>2]=t[w+(v<<2)>>2];v=v+1|0}}}while(0);e=e+1|0}if(((r|0)%5|0|0)==0&0!=0?(c[M>>3]=p,a3(y,90371,M)|0,((r+5|0)%50|0|0)==0):0)u6(10,y)|0;r=r+1|0;B=p}if(!0)k=0;else{R=+aP(W,Y,f,A,F);x=+sx();c[V>>3]=R;t[V+8>>2]=r;c[V+16>>3]=x;a3(y,90062,V)|0;k=0}while(1){if((k|0)>=(f|0)){m=C;g=Y;e=z;v=W;k=C;break A}e=W+(k<<2)|0;g=i+(k<<2)|0;v=0;while(1){if((v|0)>=(A|0))break;c[(t[g>>2]|0)+(v<<3)>>3]=+s[(t[e>>2]|0)+(v<<2)>>2];v=v+1|0}k=k+1|0}}}while(0);G2(e);G2(v);G2(g);if(m|0){G2(t[m>>2]|0);G2(k)}G2(w);G2(b);G2(o);G2(l)}}while(0);h=N;return r|0}function iP(e,A,r,a,n,f,l){e=e|0;A=A|0;r=r|0;a=a|0;n=n|0;f=f|0;l=l|0;var o=0,u=0,b=0,w=0.0,k=0,d=0,v=0.0,g=0,m=0.0,p=0,E=0,B=0,y=0,C=0,I=0,Z=0,G=0,L=0,D=0,z=0,W=0,Y=0,F=0,M=0,V=0,N=0,R=0,x=0,J=0,H=0;H=h;h=h+32|0;b=H+24|0;J=H+8|0;W=H+4|0;R=H;N=(A|0)<50?A:50;x=$F(N<<2)|0;z=A<<3;u=$F(P(z,N)|0)|0;o=0;while(1){if((o|0)>=(N|0))break;t[x+(o<<2)>>2]=u+((P(o,A)|0)<<3);o=o+1|0}L=N<<1;L=(L|0)>50?L:50;L=(L|0)>(A|0)?A:L;t[b>>2]=0;aT(e,A,L,b,l);tT(t[b>>2]|0,A,L);$O(t[b>>2]|0,L,A,x,N);G2(t[t[b>>2]>>2]|0);G2(t[b>>2]|0);L=A<<2;V=$F(L)|0;o=0;while(1){if((o|0)>=(A|0))break;t[V+(o<<2)>>2]=-1;o=o+1|0}fU(J,A);F=t[e+8>>2]|0;Y=(l|0)!=0;if(Y)XT(e,A);Z=$F(L)|0;M=$F(160)|0;u=$F(A*160|0)|0;G=$F(160)|0;o=0;while(1){if((o|0)==40)break;t[G+(o<<2)>>2]=u+((P(o,A)|0)<<2);o=o+1|0}o=(t8()|0)%(A|0)|0;t[V+(o<<2)>>2]=0;t[M>>2]=o;u=t[G>>2]|0;if(Y){HU(o,e,A,u);u=0;b=0}else{iU(o,e,A,u,J);u=0;b=0}while(1){if((b|0)>=(A|0)){d=1;break}D=t[(t[G>>2]|0)+(b<<2)>>2]|0;t[Z+(b<<2)>>2]=D;I=(D|0)>(u|0);o=I?b:o;u=I?D:u;b=b+1|0}while(1){if((d|0)==40){o=0;break}t[V+(o<<2)>>2]=d;t[M+(d<<2)>>2]=o;g=G+(d<<2)|0;u=t[g>>2]|0;if(Y){HU(o,e,A,u);k=0;u=0}else{iU(o,e,A,u,J);k=0;u=0}while(1){if((k|0)>=(A|0))break;b=Z+(k<<2)|0;D=t[b>>2]|0;l=t[(t[g>>2]|0)+(k<<2)>>2]|0;l=(D|0)<(l|0)?D:l;t[b>>2]=l;if((l|0)<=(u|0)){if((l|0)==(u|0)?((t8()|0)%(k+1|0)|0|0)==0:0){u=t[b>>2]|0;o=k}}else{u=l;o=k}k=k+1|0}d=d+1|0}while(1){if((o|0)>=(A|0))break;t[Z+(o<<2)>>2]=-1;o=o+1|0}E=$F(L)|0;D=$F(A<<4)|0;B=A+-1|0;y=B<<2;I=0;b=0;l=0;u=0;C=0;while(1){if((C|0)>=(A|0))break;o=V+(C<<2)|0;e:do{if((t[o>>2]|0)>-1){g=D+(C<<4)+4|0;t[g>>2]=$F(y)|0;p=$F(y)|0;t[D+(C<<4)+8>>2]=p;t[D+(C<<4)>>2]=B;i[D+(C<<4)+12>>0]=1;d=G+(t[o>>2]<<2)|0;o=0;while(1){if((o|0)==(C|0)){k=C;break}t[(t[g>>2]|0)+(o<<2)>>2]=o;t[p+(o<<2)>>2]=t[(t[d>>2]|0)+(o<<2)>>2];o=o+1|0}while(1){o=k+1|0;if((k|0)==(B|0)){o=B;break e}t[(t[g>>2]|0)+(k<<2)>>2]=o;t[p+(k<<2)>>2]=t[(t[d>>2]|0)+(o<<2)>>2];k=o}}else{if((u|0)<40){l=$F(L)|0;b=$F(L)|0;u=A;o=1}else o=0;i[D+(C<<4)+12>>0]=o;t[D+(C<<4)+4>>2]=l;t[D+(C<<4)+8>>2]=b;t[D+(C<<4)>>2]=40;o=0;while(1){if((o|0)==40)break;t[l+(o<<2)>>2]=t[M+(o<<2)>>2];t[b+(o<<2)>>2]=t[(t[G+(o<<2)>>2]|0)+(C<<2)>>2];o=o+1|0}b=b+160|0;l=l+160|0;u=u+-40|0;o=40}}while(0);I=o+I|0;C=C+1|0}G2(Z);G2(E);if(G|0){G2(t[G>>2]|0);G2(G)}G=$F(A*20|0)|0;k=I+A<<2;d=$F(k)|0;p=(f|0)==2;k=$F(k)|0;g=0;while(1){if((g|0)>=(A|0))break;t[G+(g*20|0)+4>>2]=d;t[G+(g*20|0)+8>>2]=k;o=(t[D+(g<<4)>>2]|0)+1|0;E=G+(g*20|0)|0;t[E>>2]=o;b=(t[D+(g<<4)+8>>2]|0)+-4|0;l=D+(g<<4)+4|0;e:do{if(p){w=0.0;u=1;while(1){if((u|0)>=(o|0))break e;t[d+(u<<2)>>2]=t[(t[l>>2]|0)+(u+-1<<2)>>2];m=+(t[b+(u<<2)>>2]|0);m=-1.0/(m*m);s[k+(u<<2)>>2]=m;w=w-m;u=u+1|0;o=t[E>>2]|0}}else{w=0.0;u=1;while(1){if((u|0)>=(o|0))break e;t[d+(u<<2)>>2]=t[(t[l>>2]|0)+(u+-1<<2)>>2];m=-1.0/+(t[b+(u<<2)>>2]|0);s[k+(u<<2)>>2]=m;w=w-m;u=u+1|0;o=t[E>>2]|0}}}while(0);t[d>>2]=g;s[k>>2]=w;L=t[E>>2]|0;k=k+(L<<2)|0;d=d+(L<<2)|0;g=g+1|0}Z=$F(a<<2)|0;t[Z>>2]=$F(P(a<<3,N)|0)|0;o=1;while(1){if((o|0)>=(a|0))break;t[Z+(o<<2)>>2]=(t[Z>>2]|0)+((P(o,N)|0)<<3);o=o+1|0}e:do{if(n){o=0;while(1){if((o|0)>=(a|0))break;b=Z+(o<<2)|0;u=0;while(1){if((u|0)>=(N|0))break;c[(t[b>>2]|0)+(u<<3)>>3]=0.0;u=u+1|0}o=o+1|0}if((a|0)!=2){o=0;while(1){if((o|0)>=(a|0)){o=0;break e}c[(t[Z+(o<<2)>>2]|0)+(o<<3)>>3]=1.0;o=o+1|0}}c[t[Z>>2]>>3]=1.0;o=Z+4|0;if(!((e_(x,N,A,t[o>>2]|0)|0)<<24>>24)){u=t[o>>2]|0;o=0;while(1){if((o|0)>=(N|0))break;c[u+(o<<3)>>3]=0.0;o=o+1|0}c[u+8>>3]=1.0;o=0}else o=0}else{u=0;while(1){if((u|0)>=(a|0)){o=0;break e}b=Z+(u<<2)|0;o=0;while(1){if((o|0)>=(N|0))break;m=+(t8()|0)*4.656612875245797e-10;c[(t[b>>2]|0)+(o<<3)>>3]=m;o=o+1|0}u=u+1|0}}}while(0);while(1){if((o|0)>=(a|0))break;QO(x,A,N,t[Z+(o<<2)>>2]|0,t[r+(o<<2)>>2]|0);o=o+1|0}t[W>>2]=0;t[R>>2]=0;gO(G,x,A,N,W);dO(x,t[W>>2]|0,N,A,N,R);G2(t[t[W>>2]>>2]|0);G2(t[W>>2]|0);C=$F(z)|0;I=$F(N<<3)|0;o=0;u=0;w=+tP(r,D,a,A,f);e:while(1){if((u|0)<50&o<<24>>24==0)B=0;else break;while(1){if((B|0)>=(a|0))break;y=r+(B<<2)|0;b=0;while(1){if((b|0)>=(A|0))break;k=C+(b<<3)|0;c[k>>3]=0.0;d=(t[D+(b<<4)+8>>2]|0)+-4|0;g=t[G+(b*20|0)+4>>2]|0;p=t[G+(b*20|0)+8>>2]|0;E=G+(b*20|0)|0;v=0.0;l=1;while(1){if((l|0)>=(t[E>>2]|0))break;o=t[g+(l<<2)>>2]|0;m=+jT(r,a,b,o);if(m>1.0e-30){m=-(+s[p+(l<<2)>>2]*+(t[d+(l<<2)>>2]|0))/m;c[k>>3]=m*+c[(t[y>>2]|0)+(o<<3)>>3]+ +c[k>>3];v=v-m}l=l+1|0}c[k>>3]=+c[k>>3]+ +c[(t[y>>2]|0)+(b<<3)>>3]*v;b=b+1|0}kO(x,N,A,C,I);o=Z+(B<<2)|0;if(uU(t[R>>2]|0,t[o>>2]|0,I,N,.001,N,0)|0){u=-1;break e}QO(x,A,N,t[o>>2]|0,t[y>>2]|0);B=B+1|0}if(!(u&1)){m=+tP(r,D,a,A,f);w=+Q(+(m-w))/(m+1.0e-10);o=w<+c[23294]&1;w=m}else o=0;u=u+1|0}G2(I);G2(C);if(Y){ST(e,A,F);o=0}else o=0;while(1){if((o|0)>=(A|0))break;if(i[D+(o<<4)+12>>0]|0){G2(t[D+(o<<4)+4>>2]|0);G2(t[D+(o<<4)+8>>2]|0)}o=o+1|0}G2(D);G2(t[G+4>>2]|0);G2(t[G+8>>2]|0);G2(G);G2(V);G2(M);G2(t[Z>>2]|0);G2(Z);o=t[R>>2]|0;if(o|0){G2(t[o>>2]|0);G2(t[R>>2]|0)}G2(t[x>>2]|0);G2(x);lU(J);h=H;return u|0}function aP(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;var n=0.0,f=0.0,l=0,c=0,o=0.0,u=0,b=0,h=0,w=0,k=0,d=0;k=i+-1|0;h=(a|0)==2;n=0.0;a=0;u=0;while(1){if((u|0)>=(k|0))break;w=i-u|0;b=1;while(1){a=a+1|0;if((b|0)>=(w|0))break;c=b+u|0;f=0.0;l=0;while(1){if((l|0)>=(r|0))break;d=t[e+(l<<2)>>2]|0;o=+s[d+(u<<2)>>2]-+s[d+(c<<2)>>2];f=f+o*o;l=l+1|0}f=+D(+f);o=+s[A+(a<<2)>>2];if(h){f=1.0/+D(+o)-f;f=f*f}else{f=1.0/o-f;f=f*f}b=b+1|0;n=f*o+n}u=u+1|0}return+n}function tP(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;var n=0.0,f=0.0,l=0,s=0,o=0,u=0,b=0,h=0,w=0.0,k=0;e:do{if((a|0)==2){n=0.0;o=0;while(1){if((o|0)>=(i|0))break e;b=t[A+(o<<4)>>2]|0;h=A+(o<<4)+4|0;u=A+(o<<4)+8|0;s=0;while(1){if((s|0)>=(b|0))break;l=t[(t[h>>2]|0)+(s<<2)>>2]|0;if((l|0)>(o|0)){f=0.0;a=0;while(1){if((a|0)>=(r|0))break;k=t[e+(a<<2)>>2]|0;w=+c[k+(o<<3)>>3]-+c[k+(l<<3)>>3];f=w*w+f;a=a+1|0}f=+D(+f);w=+(t[(t[u>>2]|0)+(s<<2)>>2]|0);f=w-f;n=f*f/(w*w)+n}s=s+1|0}o=o+1|0}}else{o=0;n=0.0;while(1){if((o|0)>=(i|0))break e;u=t[A+(o<<4)>>2]|0;b=A+(o<<4)+4|0;h=A+(o<<4)+8|0;s=0;while(1){if((s|0)>=(u|0))break;l=t[(t[b>>2]|0)+(s<<2)>>2]|0;if((l|0)>(o|0)){f=0.0;a=0;while(1){if((a|0)>=(r|0))break;k=t[e+(a<<2)>>2]|0;w=+c[k+(o<<3)>>3]-+c[k+(l<<3)>>3];f=w*w+f;a=a+1|0}f=+D(+f);w=+(t[(t[h>>2]|0)+(s<<2)>>2]|0);f=w-f;n=f*f/w+n}s=s+1|0}o=o+1|0}}}while(0);return+n}function nP(e){e=+e;return+(+D(+e)*e)}function fP(e,A,r){e=e|0;A=A|0;r=r|0;var i=0.0,a=0,n=0,f=0.0;n=t[47137]|0;i=0.0;a=0;while(1){if((a|0)>=(n|0))break;f=+c[e+(a<<3)>>3]-+c[A+(a<<3)>>3];c[r+(a<<3)>>3]=f;i=f*f+i;a=a+1|0}return+ +D(+i)}function lP(e,A,r){e=e|0;A=A|0;r=+r;var i=0,a=0,n=0,f=0;f=KF(e<<2)|0;a=0;n=KF(P(e<<3,A)|0)|0;while(1){if((a|0)>=(e|0))break;t[f+(a<<2)>>2]=n;i=0;while(1){if((i|0)>=(A|0))break;c[n+(i<<3)>>3]=r;i=i+1|0}a=a+1|0;n=n+(A<<3)|0}return f|0}function sP(e){e=e|0;if(e|0){G2(t[e>>2]|0);G2(e)}return}function cP(e,A){e=e|0;A=A|0;var r=0.0,a=0.0,n=0,f=0,l=0,s=0,o=0,u=0,b=0,w=0;b=h;h=h+16|0;u=gk(e)|0;o=mk(e)|0;s=zw(e,2,92493,0)|0;e:do{if(!A){c[23294]=+(u|0)*.0001;zF(e,108886,186352);n=Hw(t[e+60>>2]|0,90100)|0;if(!n)r=.99;else r=+$3(n);c[23296]=r;n=KF((u<<2)+4|0)|0;l=e+16|0;t[(t[l>>2]|0)+152>>2]=n;n=0;r=0.0;f=sd(e)|0;while(1){if(!f)break e;t[(t[(t[l>>2]|0)+152>>2]|0)+(n<<2)>>2]=f;w=t[f+16>>2]|0;t[w+120>>2]=n;t[w+124>>2]=-1;a=+bP(e,f,s)+r;n=n+1|0;r=a;f=cd(e,f)|0}}else{c[23294]=.0001;zF(e,108886,186352);n=0;r=0.0;f=sd(e)|0;while(1){if(!f)break e;t[(t[f+16>>2]|0)+120>>2]=n;a=+bP(e,f,s)+r;n=n+1|0;r=a;f=cd(e,f)|0}}}while(0);n=Hw(e,90108)|0;if((n|0)!=0?(i[n>>0]|0)!=0:0){r=+c[23294];a=+$3(n);if(!(r>a))r=a}else r=r/+(((o|0)>1?o:1)|0)*+D(+ +(u|0))+1.0;c[23295]=r;if(!(t[47134]|A)){A=lP(u,u,r)|0;w=e+16|0;t[(t[w>>2]|0)+160>>2]=A;A=lP(u,u,1.0)|0;t[(t[w>>2]|0)+164>>2]=A;A=lP(u,t[47137]|0,1.0)|0;t[(t[w>>2]|0)+168>>2]=A;A=hP(u,u,t[47137]|0)|0;t[(t[w>>2]|0)+172>>2]=A}h=b;return u|0}function oP(e,A,r){e|0;A|0;r|0;var i=0,a=0,n=0,f=0,l=0,s=0;0;0;ek(e,A)|0;e:while(1){if(!s)break;t[s>>2]&3;t[((f|0)==2?s:s+-48|0)+40>>2]|0;t[((f|0)==3?s:s+48|0)+40>>2]|0;do{if((n|0)!=(f|0)){(f|0)==(A|0);if((i|0)!=1){l?n:f;t[r>>2]=a;i+1|0;break}if(!((n|0)==(a|0)&l)?!((n|0)==(A|0)&(f|0)==(a|0)):0){2;break e}else 1}}while(0);Ak(e,s,A)|0}return i|0}function uP(e,A,r){e|0;A|0;r|0;var i=0,a=0,n=0,f=0;h;h=h+16|0;f;e+60|0;e:while(1){A:while(1){if(!A)break e;switch(oP(e,A,a)|0){case 0:{5;break A}case 1:{8;break A}default:0}}if((i|0)==5){if((r|0)==(A|0))cd(e,r)|0;Ed(t[n>>2]|0,A)|0;0;continue}else if((i|0)==8){if((r|0)==(A|0))cd(e,r)|0;Ed(t[n>>2]|0,A)|0;t[a>>2]|0;continue}}h=f;return r|0}function bP(e,A,r){e=e|0;A=A|0;r=r|0;var i=0.0,a=0.0,n=0,f=0,l=0,s=0;s=h;h=h+32|0;f=s+8|0;n=s;A=Ow(e,A)|0;i=0.0;while(1){if(!A)break;switch(wP(A,r,n)|0){case 0:{a=+c[n>>3];break}case 2:{t[f>>2]=Mk(e)|0;c[f+8>>3]=1.0;nw(3,90120,f)|0;l=6;break}default:l=6}if((l|0)==6){l=0;c[n>>3]=1.0;a=1.0}c[(t[A+16>>2]|0)+136>>3]=a;A=qw(e,A)|0;i=a+i}h=s;return+i}function hP(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0,n=0,f=0,l=0,s=0,o=0;l=KF((e<<2)+4|0)|0;s=(A<<2)+4|0;o=r<<3;n=0;while(1){if((n|0)>=(e|0))break;f=l+(n<<2)|0;t[f>>2]=KF(s)|0;a=0;while(1){if((a|0)>=(A|0))break;i=KF(o)|0;t[(t[f>>2]|0)+(a<<2)>>2]=i;i=0;while(1){if((i|0)>=(r|0))break;c[(t[(t[f>>2]|0)+(a<<2)>>2]|0)+(i<<3)>>3]=0.0;i=i+1|0}a=a+1|0}t[(t[f>>2]|0)+(a<<2)>>2]=0;n=n+1|0}t[l+(n<<2)>>2]=0;return l|0}function wP(e,A,r){e=e|0;A=A|0;r=r|0;var a=0,n=0.0,f=0,l=0,s=0;s=h;h=h+16|0;l=s+8|0;f=s;do{if((A|0)!=0?(a=Pw(e,A)|0,(i[a>>0]|0)!=0):0){t[f>>2]=r;if(((V3(a,101209,f)|0)>=1?(n=+c[r>>3],!(n<0.0)):0)?n!=0.0|(t[47134]|0)!=0:0){e=0;break}t[l>>2]=a;nw(0,90147,l)|0;e=2}else e=1}while(0);h=s;return e|0}function kP(e){e=e|0;return cP(e,0)|0}function dP(e){e=e|0;e=e+16|0;G2(t[(t[e>>2]|0)+152>>2]|0);if(!(t[47134]|0)){sP(t[(t[e>>2]|0)+160>>2]|0);sP(t[(t[e>>2]|0)+164>>2]|0);sP(t[(t[e>>2]|0)+168>>2]|0);vP(t[(t[e>>2]|0)+172>>2]|0);t[(t[e>>2]|0)+172>>2]=0}return}function vP(e){e=e|0;var A=0,r=0,i=0,a=0,n=0;if(e|0){a=0;while(1){n=e+(a<<2)|0;A=t[n>>2]|0;if(!A)break;else i=0;while(1){r=t[A+(i<<2)>>2]|0;if(!r)break;G2(r);i=i+1|0;A=t[n>>2]|0}G2(A);a=a+1|0}G2(e)}return}function gP(e,A,r){e=e|0;A=A|0;r=r|0;var i=0.0,a=0.0;i=+(A|0);A=e+16|0;while(1){if((r|0)>=(t[47137]|0))break;a=+s8()*i;c[(t[(t[A>>2]|0)+132>>2]|0)+(r<<3)>>3]=a;r=r+1|0}return}function mP(e,A){e=e|0;A=A|0;gP(e,A,2);return}function pP(e,A){e=e|0;A=A|0;var r=0,i=0.0,a=0.0;i=+(A|0);a=+s8()*i;r=e+16|0;c[t[(t[r>>2]|0)+132>>2]>>3]=a;i=+s8()*i;c[(t[(t[r>>2]|0)+132>>2]|0)+8>>3]=i;if((t[47137]|0)>2)mP(e,A);return}function EP(e,A){e=e|0;A=A|0;var r=0,a=0;a=h;h=h+16|0;r=a;if(0)G3(90165,26,1,t[15712]|0)|0;A=rH(e,A,2)|0;e:do{if((A|0)!=1){if(!(t[46797]|A)){nw(0,90192,r)|0;t[46797]=1}r=e+16|0;A=0;while(1){e=t[(t[(t[r>>2]|0)+152>>2]|0)+(A<<2)>>2]|0;if(!e)break e;if(!(i[(t[e+16>>2]|0)+119>>0]|0))pP(e,1);A=A+1|0}}}while(0);h=a;return}function BP(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0.0,f=0,l=0,s=0,o=0,u=0,b=0,w=0,k=0,d=0.0;k=h;h=h+96|0;w=k+80|0;u=k;if(0){G3(90241,25,1,t[15712]|0)|0;lx()}b=e+16|0;a=t[b>>2]|0;s=t[a+164>>2]|0;a=t[a+160>>2]|0;o=0;while(1){if((o|0)>=(A|0))break;f=a+(o<<2)|0;l=s+(o<<2)|0;i=0;while(1){if((i|0)==(o|0))break;n=+c[(t[f>>2]|0)+(i<<3)>>3];n=1.0/(n*n);r=t[(t[b>>2]|0)+152>>2]|0;r=lk(e,t[r+(o<<2)>>2]|0,t[r+(i<<2)>>2]|0,0,0)|0;if(r)n=+c[(t[r+16>>2]|0)+128>>3]*n;c[(t[s+(i<<2)>>2]|0)+(o<<3)>>3]=n;c[(t[l>>2]|0)+(i<<3)>>3]=n;i=i+1|0}o=o+1|0}e=t[47137]|0;i=0;while(1){if((i|0)<(A|0))r=0;else break;while(1){if((r|0)>=(e|0))break;c[(t[(t[(t[b>>2]|0)+168>>2]|0)+(i<<2)>>2]|0)+(r<<3)>>3]=0.0;r=r+1|0}i=i+1|0}f=0;while(1){r=t[(t[(t[b>>2]|0)+152>>2]|0)+(f<<2)>>2]|0;if(!r)break;e=r+16|0;r=0;while(1){if((r|0)>=(A|0))break;e:do{if((f|0)!=(r|0)){n=+fP(t[(t[e>>2]|0)+132>>2]|0,t[(t[(t[(t[(t[b>>2]|0)+152>>2]|0)+(r<<2)>>2]|0)+16>>2]|0)+132>>2]|0,u);a=t[47137]|0;n=1.0/n;i=0;while(1){if((i|0)>=(a|0))break e;o=t[b>>2]|0;d=+c[u+(i<<3)>>3];d=(d-+c[(t[(t[o+160>>2]|0)+(f<<2)>>2]|0)+(r<<3)>>3]*d*n)*+c[(t[(t[o+164>>2]|0)+(f<<2)>>2]|0)+(r<<3)>>3];c[(t[(t[(t[o+172>>2]|0)+(f<<2)>>2]|0)+(r<<2)>>2]|0)+(i<<3)>>3]=d;o=(t[(t[o+168>>2]|0)+(f<<2)>>2]|0)+(i<<3)|0;c[o>>3]=+c[o>>3]+d;i=i+1|0}}}while(0);r=r+1|0}f=f+1|0}if(0){b=t[15712]|0;c[w>>3]=+sx();a3(b,90267,w)|0}h=k;return}function yP(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0,f=0,l=0.0,s=0;f=h;h=h+32|0;n=f+24|0;a=f+8|0;i=f;l=+c[23294];c[23216]=l*l;while(1){r=CP(e,A)|0;if(!r)break;IP(e,A,r)}if(!0)A=e+16|0;else{r=t[15712]|0;c[i>>3]=+ZP(e,A);a3(r,90277,i)|0;A=e+16|0;s=t[(t[A>>2]|0)+156>>2]|0;i=(s|0)==(t[47136]|0)?90291:195059;l=+sx();t[a>>2]=s;t[a+4>>2]=i;c[a+8>>3]=l;a3(r,90293,a)|0}A=t[(t[A>>2]|0)+156>>2]|0;if((A|0)==(t[47136]|0)){s=Mk(e)|0;t[n>>2]=A;t[n+4>>2]=s;nw(0,90320,n)|0}h=f;return}function CP(e,A){e=e|0;A=A|0;var r=0.0,i=0,a=0,f=0.0,l=0,s=0,o=0,u=0,b=0,w=0,k=0,d=0,v=0.0;d=h;h=h+16|0;k=d;b=(t[46799]|0)+1|0;t[46799]=b;e=t[e+16>>2]|0;if((t[e+156>>2]|0)<(t[47136]|0)){o=t[47137]|0;u=e+152|0;s=e+168|0;e=0;r=0.0;l=0;while(1){if((l|0)>=(A|0))break;a=t[(t[u>>2]|0)+(l<<2)>>2]|0;if((n[(t[a+16>>2]|0)+119>>0]|0)<=1){f=0.0;i=0;while(1){if((i|0)>=(o|0))break;v=+c[(t[(t[s>>2]|0)+(l<<2)>>2]|0)+(i<<3)>>3];f=v*v+f;i=i+1|0}if(f>r){e=a;r=f}}l=l+1|0}if(!(r<+c[23216])){if(0!=0&((b|0)%100|0|0)==0?(w=t[15712]|0,c[k>>3]=+D(+r),a3(w,90371,k)|0,((t[46799]|0)%1e3|0|0)==0):0)u6(10,w)|0}else e=0}else e=0;h=d;return e|0}function IP(e,A,r){e=e|0;A=A|0;r=r|0;var i=0.0,a=0,n=0,f=0,l=0,s=0,o=0,u=0,b=0;b=h;h=h+16|0;u=b;s=r+16|0;o=t[(t[s>>2]|0)+120>>2]|0;a=t[46798]|0;if(!a){n=t[47137]|0;n=$F(P(n<<3,n)|0)|0}else{n=t[47137]|0;n=AM(a,P(n<<3,n)|0)|0}t[46798]=n;GP(e,A,o,n);f=t[47137]|0;l=e+16|0;a=0;while(1){if((a|0)>=(f|0))break;c[185736+(a<<3)>>3]=-+c[(t[(t[(t[l>>2]|0)+168>>2]|0)+(o<<2)>>2]|0)+(a<<3)>>3];a=a+1|0}M_(n,185816,185736,f);a=0;while(1){if((a|0)>=(t[47137]|0))break;i=+c[23296];i=(1.0-i)*2.0*+s8()+i;f=185816+(a<<3)|0;i=i*+c[f>>3];c[f>>3]=i;f=(t[(t[s>>2]|0)+132>>2]|0)+(a<<3)|0;c[f>>3]=+c[f>>3]+i;a=a+1|0}s=(t[l>>2]|0)+156|0;t[s>>2]=(t[s>>2]|0)+1;LP(e,A,o);if(Yx()|0){n=t[47137]|0;i=0.0;a=0;while(1){if((a|0)>=(n|0))break;i=+Q(+ +c[185816+(a<<3)>>3])+i;a=a+1|0}i=+D(+i);o=t[15712]|0;t[u>>2]=Mk(r)|0;c[u+8>>3]=i;a3(o,90362,u)|0}h=b;return}function ZP(e,A){e=e|0;A=A|0;var r=0.0,i=0.0,a=0,n=0,f=0,l=0,s=0,o=0,u=0,b=0,h=0,w=0,k=0,d=0.0;k=A+-1|0;b=e+16|0;h=t[47137]|0;n=0;r=0.0;e:while(1){if((n|0)>=(k|0))break;u=t[b>>2]|0;w=t[u+152>>2]|0;l=n+1|0;s=(t[w+(n<<2)>>2]|0)+16|0;o=u+164|0;u=u+160|0;f=l;while(1){if((f|0)>=(A|0)){n=l;continue e}a=(t[w+(f<<2)>>2]|0)+16|0;e=0;i=0.0;while(1){if((e|0)>=(h|0))break;d=+c[(t[(t[s>>2]|0)+132>>2]|0)+(e<<3)>>3]-+c[(t[(t[a>>2]|0)+132>>2]|0)+(e<<3)>>3];e=e+1|0;i=d*d+i}d=+c[(t[(t[u>>2]|0)+(n<<2)>>2]|0)+(f<<3)>>3];d=((+D(+i)*-2.0+d)*d+i)*+c[(t[(t[o>>2]|0)+(n<<2)>>2]|0)+(f<<3)>>3]+r;f=f+1|0;r=d}}return+r}function GP(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0,n=0,f=0,l=0,s=0,o=0,u=0.0,b=0.0,w=0.0,k=0.0,d=0.0,v=0,g=0,m=0,p=0,E=0,B=0;B=h;h=h+80|0;E=B;p=t[e+16>>2]|0;s=t[p+164>>2]|0;o=t[p+160>>2]|0;p=t[p+152>>2]|0;l=t[p+(r<<2)>>2]|0;n=t[47137]|0;e=0;while(1){if((e|0)>=(n|0))break;f=P(n,e)|0;a=0;while(1){if((a|0)==(n|0))break;c[i+(f+a<<3)>>3]=0.0;a=a+1|0}e=e+1|0}m=t[47137]|0;g=l+16|0;v=s+(r<<2)|0;s=o+(r<<2)|0;l=0;while(1){if((l|0)>=(A|0))break;e:do{if((l|0)!=(r|0)){a=(t[p+(l<<2)>>2]|0)+16|0;d=0.0;e=0;while(1){if((e|0)>=(m|0))break;k=+c[(t[(t[g>>2]|0)+132>>2]|0)+(e<<3)>>3]-+c[(t[(t[a>>2]|0)+132>>2]|0)+(e<<3)>>3];c[E+(e<<3)>>3]=k;d=k*k+d;e=e+1|0}u=1.0/+nP(d);f=0;while(1){if((f|0)>=(m|0))break e;a=(t[v>>2]|0)+(l<<3)|0;n=(t[s>>2]|0)+(l<<3)|0;b=+c[E+(f<<3)>>3];e=0;while(1){w=+c[a>>3];k=+c[n>>3];if((e|0)==(f|0))break;o=i+((P(m,e)|0)+f<<3)|0;c[o>>3]=+c[o>>3]+w*u*k*b*+c[E+(e<<3)>>3];e=e+1|0}o=i+((P(m,f)|0)+f<<3)|0;c[o>>3]=(1.0-k*u*(d-b*b))*w+ +c[o>>3];f=f+1|0}}}while(0);l=l+1|0}a=t[47137]|0;f=1;while(1){if((f|0)>=(a|0))break;n=P(a,f)|0;e=0;while(1){if((e|0)==(f|0))break;c[i+(n+e<<3)>>3]=+c[i+((P(a,e)|0)+f<<3)>>3];e=e+1|0}f=f+1|0}h=B;return}function LP(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0,n=0,f=0.0,l=0,s=0,o=0,u=0,b=0.0,w=0.0,k=0,d=0,v=0;o=h;h=h+80|0;s=o;l=e+16|0;a=t[l>>2]|0;n=t[(t[a+152>>2]|0)+(r<<2)>>2]|0;i=t[47137]|0;a=a+168|0;e=0;while(1){if((e|0)>=(i|0))break;c[(t[(t[a>>2]|0)+(r<<2)>>2]|0)+(e<<3)>>3]=0.0;e=e+1|0}a=n+16|0;e=0;while(1){if((e|0)>=(A|0))break;e:do{if((e|0)!=(r|0)){f=+fP(t[(t[a>>2]|0)+132>>2]|0,t[(t[(t[(t[(t[l>>2]|0)+152>>2]|0)+(e<<2)>>2]|0)+16>>2]|0)+132>>2]|0,s);n=t[47137]|0;f=1.0/f;i=0;while(1){if((i|0)>=(n|0))break e;u=t[l>>2]|0;k=t[u+172>>2]|0;d=(t[(t[k+(r<<2)>>2]|0)+(e<<2)>>2]|0)+(i<<3)|0;b=+c[s+(i<<3)>>3];b=(b-+c[(t[(t[u+160>>2]|0)+(r<<2)>>2]|0)+(e<<3)>>3]*b*f)*+c[(t[(t[u+164>>2]|0)+(r<<2)>>2]|0)+(e<<3)>>3];c[d>>3]=b;u=t[u+168>>2]|0;v=(t[u+(r<<2)>>2]|0)+(i<<3)|0;c[v>>3]=+c[v>>3]+b;k=(t[(t[k+(e<<2)>>2]|0)+(r<<2)>>2]|0)+(i<<3)|0;b=+c[k>>3];w=-+c[d>>3];c[k>>3]=w;u=(t[u+(e<<2)>>2]|0)+(i<<3)|0;c[u>>3]=w-b+ +c[u>>3];i=i+1|0}}}while(0);e=e+1|0}h=o;return}function QP(e){e=e|0;var A=0,r=0,i=0,a=0,n=0,f=0,l=0;r=e+16|0;n=t[46800]|0;A=t[(t[r>>2]|0)+124>>2]|0;while(1){if((A|0)<=0)break;f=(A+-1|0)/2|0;l=n+(f<<2)|0;i=t[l>>2]|0;a=i+16|0;if(+c[(t[a>>2]|0)+136>>3]<=+c[(t[r>>2]|0)+136>>3])break;t[l>>2]=e;t[(t[r>>2]|0)+124>>2]=f;t[n+(A<<2)>>2]=i;t[(t[a>>2]|0)+124>>2]=A;A=f}return}function DP(e){e=e|0;var A=0,r=0,i=0,a=0,n=0,f=0,l=0,s=0,o=0;f=e+16|0;l=t[46801]|0;s=t[46800]|0;n=t[(t[f>>2]|0)+124>>2]|0;while(1){i=n<<1|1;if((i|0)>=(l|0))break;r=i+1|0;if((r|0)<(l|0)){a=t[s+(r<<2)>>2]|0;A=t[s+(i<<2)>>2]|0;if(+c[(t[a+16>>2]|0)+136>>3]<+c[(t[A+16>>2]|0)+136>>3]){i=r;A=a}else o=6}else{A=t[s+(i<<2)>>2]|0;o=6}if((o|0)==6)o=0;r=A+16|0;if(+c[(t[f>>2]|0)+136>>3]<=+c[(t[r>>2]|0)+136>>3])break;t[s+(i<<2)>>2]=e;t[(t[f>>2]|0)+124>>2]=i;t[s+(n<<2)>>2]=A;t[(t[r>>2]|0)+124>>2]=n;n=i}return}function zP(e){e=e|0;var A=0,r=0;A=(t[e+16>>2]|0)+124|0;if((t[A>>2]|0)>=0)ge(90377,90397,643,90405);r=t[46801]|0;t[46801]=r+1;t[A>>2]=r;t[(t[46800]|0)+(r<<2)>>2]=e;if((r|0)>0)QP(e);return}function WP(){var e=0,A=0,r=0,i=0;A=t[46801]|0;if(!A)e=0;else{i=t[46800]|0;e=t[i>>2]|0;r=A+-1|0;t[46801]=r;r=t[i+(r<<2)>>2]|0;t[i>>2]=r;t[(t[r+16>>2]|0)+124>>2]=0;if((A|0)>2)DP(r);t[(t[e+16>>2]|0)+124>>2]=-1}return e|0}function YP(e,A){e=e|0;A=A|0;var r=0,i=0;i=h;h=h+16|0;r=i;t[46800]=KF((A<<2)+4|0)|0;if(0){G3(90419,28,1,t[15712]|0)|0;lx()}A=sd(e)|0;while(1){if(!A)break;FP(e,A);A=cd(e,A)|0}if(0){e=t[15712]|0;c[r>>3]=+sx();a3(e,90267,r)|0}G2(t[46800]|0);h=i;return}function FP(e,A){e=e|0;A=A|0;var r=0,i=0,a=0.0,n=0,f=0,l=0,s=0;i=t[(t[e+16>>2]|0)+152>>2]|0;a=+c[23295];r=0;while(1){n=t[i+(r<<2)>>2]|0;if(!n)break;c[(t[n+16>>2]|0)+136>>3]=a;r=r+1|0}t[46802]=A;s=t[A+16>>2]|0;c[s+136>>3]=0.0;t[s+128>>2]=0;zP(A);e:while(1){s=WP()|0;if(!s)break;r=t[46802]|0;l=s+16|0;if((s|0)!=(r|0))MP(e,r,s,+c[(t[l>>2]|0)+136>>3]);f=ek(e,s)|0;while(1){if(!f)continue e;r=t[f>>2]&3;A=t[((r|0)==3?f:f+48|0)+40>>2]|0;if((A|0)==(s|0))A=t[((r|0)==2?f:f+-48|0)+40>>2]|0;r=t[l>>2]|0;a=+c[(t[f+16>>2]|0)+136>>3]+ +c[r+136>>3];i=t[A+16>>2]|0;n=i+136|0;do{if(+c[n>>3]>a){c[n>>3]=a;if((t[i+124>>2]|0)>-1){QP(A);break}else{t[i+128>>2]=(t[r+128>>2]|0)+1;zP(A);break}}}while(0);f=Ak(e,f,s)|0}}return}function MP(e,A,r,i){e=e|0;A=A|0;r=r|0;i=+i;A=t[(t[A+16>>2]|0)+120>>2]|0;r=t[(t[r+16>>2]|0)+120>>2]|0;e=t[(t[e+16>>2]|0)+160>>2]|0;c[(t[e+(r<<2)>>2]|0)+(A<<3)>>3]=i;c[(t[e+(A<<2)>>2]|0)+(r<<3)>>3]=i;return}function VP(e){e=e|0;DJ(e,2);a[(t[e+16>>2]|0)+176>>1]=2;t[47137]=2;NP(e);return}function NP(e){e=e|0;var A=0,r=0,i=0,a=0;A=gk(e)|0;i=KF(A*56|0)|0;A=KF((A<<2)+4|0)|0;a=e+16|0;t[(t[a>>2]|0)+152>>2]=A;A=sd(e)|0;r=0;while(1){if(!A)break;xJ(A);t[(t[A+16>>2]|0)+112>>2]=i+(r*56|0);t[(t[(t[a>>2]|0)+152>>2]|0)+(r<<2)>>2]=A;A=cd(e,A)|0;r=r+1|0}r=sd(e)|0;while(1){if(!r)break;A=Ow(e,r)|0;while(1){if(!A)break;RP(A);A=qw(e,A)|0}r=cd(e,r)|0}return}function RP(e){e=e|0;var A=0.0;Sd(e,137460,176,1)|0;Mx(e)|0;A=+wx(e,t[47174]|0,1.0,0.0);c[(t[e+16>>2]|0)+128>>3]=A;return}function xP(e){e=e|0;var A=0,r=0,a=0,n=0,f=0,l=0,s=0,o=0,u=0,b=0,w=0,k=0,d=0,v=0,g=0,m=0;m=h;h=h+80|0;o=m+32|0;f=m+24|0;n=m+16|0;l=m;g=m+72|0;w=m+40|0;if(gk(e)|0){VP(e);a=Hw(e,95738)|0;if(a)if(i[a>>0]|0){A=gd(e,a,0)|0;if(!A){t[n>>2]=a;nw(0,90448,n)|0;nw(3,90488,f)|0;A=0;v=1}else v=0}else{A=0;v=1}else{A=0;v=0}u=zw(e,1,95738,0)|0;b=(u|0)!=0;a=Hw(e,140742)|0;if((a|0?i[a>>0]|0:0)?(s=l+8|0,t[o>>2]=l,t[o+4>>2]=s,(V3(a,105503,o)|0)==1):0)c[s>>3]=+c[l>>3];if(gk(e)|0){o=Lp(e,g,0)|0;if((t[g>>2]|0)==1){n=(A|0)!=0;do{if(n)r=A;else{if(b?(r=JP(e,u)|0,r|0):0)break;r=0}}while(0);a=N_(e,r)|0;if(!((r|0)!=0|b^1))Mw(a,u,142463)|0;d=(sd(e)|0)+16|0;G2(t[(t[d>>2]|0)+112>>2]|0);t[(t[d>>2]|0)+112>>2]=0;AU(e)|0;TH(e);A=(v|0)==0|n?A:a}else{cE(e,2,8,w)|0;t[w+12>>2]=0;s=(v|0)==0;l=0;while(1){if((l|0)>=(t[g>>2]|0))break;n=t[o+(l<<2)>>2]|0;r=(A|0)!=0;if(r?(Wd(n,A)|0)!=0:0)a=A;else d=23;do{if((d|0)==23){d=0;if(b?(k=JP(n,u)|0,k|0):0){a=k;break}a=0}}while(0);Mp(n)|0;f=N_(n,a)|0;A=s|r?A:f;if(b?(a|0)==0|(a|0)==(A|0):0)Mw(f,u,142463)|0;AU(n)|0;l=l+1|0}d=(sd(e)|0)+16|0;G2(t[(t[d>>2]|0)+112>>2]|0);t[(t[d>>2]|0)+112>>2]=0;sE(t[g>>2]|0,o,e,w)|0;TH(e)}r=0;while(1){if((r|0)>=(t[g>>2]|0))break;Ed(e,t[o+(r<<2)>>2]|0)|0;r=r+1|0}G2(o)}if(v|0)Xw(e,95738,Mk(A)|0)|0;MV(e)}h=m;return}function JP(e,A){e=e|0;A=A|0;var r=0;r=sd(e)|0;while(1){if(!r){r=0;break}if((mx(Pw(r,A)|0)|0)<<24>>24)break;r=cd(e,r)|0}return r|0}function HP(e){e=e|0;var A=0,r=0;A=sd(e)|0;if(A|0){while(1){if(!A)break;r=Ow(e,A)|0;while(1){if(!r)break;bJ(r);r=qw(e,r)|0}oJ(A);A=cd(e,A)|0}PP(e)}return}function PP(e){e=e|0;G2(t[(t[e+16>>2]|0)+152>>2]|0);if((yd(e)|0)!=(e|0))qd(e,0,137483);return}function XP(e){e=e|0;SP(e);if(!((gk(e)|0)==0?!(t[(t[e+16>>2]|0)+180>>2]|0):0)){eq(e);MV(e)}return}function SP(e){e=e|0;t[47147]=zw(e,1,108230,108236)|0;DJ(e,2);a[(t[e+16>>2]|0)+176>>1]=2;t[47137]=2;jP(e,0);UP(e);return}function jP(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0,f=0,l=0;l=h;h=h+16|0;n=l;f=(A|0)==0;if(f){_P(n);A=n}r=xv(e)|0;while(1){if(!r)break;if(!(y1(Mk(r)|0,108006,7)|0)){Sd(r,137483,280,1)|0;qP(A,r);jP(r,0)}else jP(r,A);r=Jv(r)|0}if(f?(i=t[n+8>>2]|0,a=e+16|0,t[(t[a>>2]|0)+180>>2]=i,i|0):0){f=AM(t[n>>2]|0,(i<<2)+4|0)|0;t[(t[a>>2]|0)+184>>2]=f}h=l;return}function UP(e){e=e|0;var A=0,r=0,i=0,a=0,n=0;a=KF((gk(e)|0)<<2)|0;A=KF(((gk(e)|0)<<2)+4|0)|0;n=e+16|0;t[(t[n>>2]|0)+152>>2]=A;A=sd(e)|0;r=0;while(1){if(!A)break;Sd(A,137447,304,1)|0;t[(t[A+16>>2]|0)+112>>2]=a+(r<<2);t[(t[(t[n>>2]|0)+152>>2]|0)+(r<<2)>>2]=A;TP(A);i=Ow(e,A)|0;while(1){if(!i)break;OP(i);i=qw(e,i)|0}A=cd(e,A)|0;r=r+1|0}return}function TP(e){e=e|0;Xw(e,108230,108236)|0;return}function OP(e){e=e|0;Sd(e,137460,304,1)|0;return}function _P(e){e=e|0;t[e>>2]=0;t[e+4>>2]=0;t[e+8>>2]=0;return}function qP(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0,f=0;n=e+8|0;r=(t[n>>2]|0)+1|0;t[n>>2]=r;i=e+4|0;f=t[i>>2]|0;a=f+10|0;if((r|0)<(f|0))e=t[e>>2]|0;else{t[i>>2]=a;r=AM(t[e>>2]|0,a<<2)|0;t[e>>2]=r;e=r;r=t[n>>2]|0}t[e+(r<<2)>>2]=A;return}function KP(e){e=e|0;var A=0,r=0;A=sd(e)|0;if(A|0){G2(t[(t[A+16>>2]|0)+112>>2]|0);while(1){if(!A)break;r=Ow(e,A)|0;while(1){if(!r)break;bJ(r);r=qw(e,r)|0}oJ(A);A=cd(e,A)|0}$P(e)}return}function $P(e){e=e|0;G2(t[(t[e+16>>2]|0)+152>>2]|0);if((yd(e)|0)!=(e|0))qd(e,0,137483);return}function eX(e){e=e|0;var A=0,r=0,i=0;AX(e);rX(e,0);iX(e,0);aX(e,0);A=t[e+16>>2]|0;if(!(t[(t[A+8>>2]|0)+84>>2]|0)){A=a[A+136>>1]&14;if(A<<16>>16)VH(e,A&65535)|0}else{A=sd(e)|0;while(1){if(!A)break;i=t[A+16>>2]|0;r=t[i+132>>2]|0;c[r>>3]=+c[i+16>>3]*.013888888888888888;c[r+8>>3]=+c[i+24>>3]*.013888888888888888;A=cd(e,A)|0}xH(e,1)}MV(e);return}function AX(e){e=e|0;var A=0,r=0;DJ(e,2);a[(t[e+16>>2]|0)+176>>1]=2;t[47137]=2;A=sd(e)|0;while(1){if(!A)break;xJ(A);A=cd(e,A)|0}r=sd(e)|0;while(1){if(!r)break;A=Ow(e,r)|0;while(1){if(!A)break;Sd(A,137460,176,1)|0;Mx(A)|0;A=qw(e,A)|0}r=cd(e,r)|0}return}function rX(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0,f=0,l=0;l=h;h=h+16|0;n=l;f=(A|0)==0;if(f){sX(n);A=n}r=xv(e)|0;while(1){if(!r)break;if(!(y1(Mk(r)|0,108006,7)|0)){Sd(r,137483,280,1)|0;VF(r);cX(A,r);rX(r,0)}else rX(r,A);r=Jv(r)|0}if(f?(i=t[n+8>>2]|0,a=e+16|0,t[(t[a>>2]|0)+180>>2]=i,i|0):0){f=AM(t[n>>2]|0,(i<<2)+4|0)|0;t[(t[a>>2]|0)+184>>2]=f}h=l;return}function iX(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0,f=0.0,l=0.0,s=0.0,o=0.0,u=0,b=0,w=0,k=0,d=0,v=0,g=0,m=0,p=0,E=0,B=0,y=0,C=0,I=0,Z=0,G=0,L=0,Q=0,D=0,z=0,W=0,Y=0,F=0,M=0,V=0,N=0,R=0,x=0,J=0,H=0;H=h;h=h+448|0;z=H+400|0;D=H+384|0;J=H+344|0;x=H+304|0;R=H+248|0;L=H+192|0;B=H+152|0;y=H+96|0;b=H+72|0;r=H+64|0;Y=H+32|0;F=H;Z=H+416|0;m=H+328|0;E=H+288|0;M=H+232|0;V=H+176|0;N=H+136|0;W=H+80|0;u=t[e+60>>2]|0;if(0>1){tX(A);Q=t[15712]|0;t[r>>2]=Mk(e)|0;a3(Q,90723,r)|0}Q=e+16|0;a=A+1|0;r=1;i=0;while(1){n=t[Q>>2]|0;if((r|0)>(t[n+180>>2]|0))break;G=t[(t[n+184>>2]|0)+(r<<2)>>2]|0;iX(G,a);r=r+1|0;i=(gk(G)|0)+i|0}w=(gk(e)|0)-i|0;r=t[Q>>2]|0;G=(t[r+180>>2]|0)+w|0;p=(G|0)==0;if(p?(t[r+12>>2]|0)==0:0){J=r+16|0;t[J>>2]=0;t[J+4>>2]=0;t[J+8>>2]=0;t[J+12>>2]=0;c[r+40>>3]=18.0;c[r+32>>3]=18.0}else{r=Z+16|0;do{if((cE(e,4,4,Z)|0)>>>0>=3)if((t[r>>2]|0)==4?(t[Z+28>>2]&2|0)!=0:0){i=zw(u,0,99190,0)|0;r=zw(u,1,99190,0)|0;if((i|0)!=0|(r|0)!=0){t[Z+24>>2]=KF(G<<2)|0;break}else{t[b>>2]=Mk(e)|0;nw(0,90577,b)|0;r=0;i=0;break}}else{r=0;i=0}else{t[r>>2]=3;r=0;i=0}}while(0);C=KF(G<<5)|0;I=KF(G<<2)|0;v=Z+24|0;u=(i|0)!=0;d=0;n=1;while(1){a=t[Q>>2]|0;if((n|0)>(t[a+180>>2]|0))break;a=t[(t[a+184>>2]|0)+(n<<2)>>2]|0;g=C+(d<<5)|0;k=(t[a+16>>2]|0)+16|0;t[g>>2]=t[k>>2];t[g+4>>2]=t[k+4>>2];t[g+8>>2]=t[k+8>>2];t[g+12>>2]=t[k+12>>2];t[g+16>>2]=t[k+16>>2];t[g+20>>2]=t[k+20>>2];t[g+24>>2]=t[k+24>>2];t[g+28>>2]=t[k+28>>2];if(u&(t[v>>2]|0)!=0){g=hx(a,i,0,0)|0;t[(t[v>>2]|0)+(d<<2)>>2]=g}t[I+(d<<2)>>2]=a;d=d+1|0;n=n+1|0}e:do{if((w|0)>0){b=Y+16|0;w=Y+24|0;k=(r|0)!=0;u=sd(e)|0;i=d;while(1){if(!u)break e;a=t[u+16>>2]|0;n=a+112|0;if(!(t[n>>2]|0)){t[n>>2]=e;t[Y>>2]=0;t[Y+4>>2]=0;t[Y+8>>2]=0;t[Y+12>>2]=0;c[b>>3]=+c[a+96>>3]+ +c[a+88>>3];c[w>>3]=+c[a+80>>3];g=C+(i<<5)|0;t[g>>2]=t[Y>>2];t[g+4>>2]=t[Y+4>>2];t[g+8>>2]=t[Y+8>>2];t[g+12>>2]=t[Y+12>>2];t[g+16>>2]=t[Y+16>>2];t[g+20>>2]=t[Y+20>>2];t[g+24>>2]=t[Y+24>>2];t[g+28>>2]=t[Y+28>>2];if(k&(t[v>>2]|0)!=0){g=hx(u,r,0,0)|0;t[(t[v>>2]|0)+(i<<2)>>2]=g}t[I+(i<<2)>>2]=u;i=i+1|0}u=cd(e,u)|0}}}while(0);g=iE(G,C,Z)|0;r=t[v>>2]|0;if(r|0)G2(r);nX(F,2147483647.0,2147483647.0);v=F+16|0;nX(m,-2147483647.0,-2147483647.0);t[v>>2]=t[m>>2];t[v+4>>2]=t[m+4>>2];t[v+8>>2]=t[m+8>>2];t[v+12>>2]=t[m+12>>2];n=Y+16|0;u=Y+8|0;b=Y+24|0;w=F+8|0;k=F+24|0;d=t[15712]|0;r=0;while(1){if((r|0)>=(G|0))break;l=+(t[g+(r<<3)>>2]|0);o=+(t[g+(r<<3)+4>>2]|0);i=C+(r<<5)|0;t[Y>>2]=t[i>>2];t[Y+4>>2]=t[i+4>>2];t[Y+8>>2]=t[i+8>>2];t[Y+12>>2]=t[i+12>>2];t[Y+16>>2]=t[i+16>>2];t[Y+20>>2]=t[i+20>>2];t[Y+24>>2]=t[i+24>>2];t[Y+28>>2]=t[i+28>>2];f=+c[Y>>3]+l;c[Y>>3]=f;l=+c[n>>3]+l;c[n>>3]=l;s=+c[u>>3]+o;c[u>>3]=s;o=+c[b>>3]+o;c[b>>3]=o;c[F>>3]=+c[(+c[F>>3]>3];c[w>>3]=+c[(+c[w>>3]>3];c[v>>3]=+c[(+c[v>>3]>l?F:Y)+16>>3];c[k>>3]=+c[(+c[k>>3]>o?F:Y)+24>>3];i=t[I+(r<<2)>>2]|0;a=i+16|0;if((r|0)<(t[(t[Q>>2]|0)+180>>2]|0)){m=(t[a>>2]|0)+16|0;t[m>>2]=t[Y>>2];t[m+4>>2]=t[Y+4>>2];t[m+8>>2]=t[Y+8>>2];t[m+12>>2]=t[Y+12>>2];t[m+16>>2]=t[Y+16>>2];t[m+20>>2]=t[Y+20>>2];t[m+24>>2]=t[Y+24>>2];t[m+28>>2]=t[Y+28>>2];if(0>1){tX(A);t[y>>2]=Mk(i)|0;c[y+8>>3]=f;c[y+16>>3]=s;c[y+24>>3]=l;c[y+32>>3]=o;a3(d,90556,y)|0}}else{m=(t[a>>2]|0)+16|0;t[D>>2]=t[Y>>2];t[D+4>>2]=t[Y+4>>2];t[D+8>>2]=t[Y+8>>2];t[D+12>>2]=t[Y+12>>2];t[z>>2]=t[n>>2];t[z+4>>2]=t[n+4>>2];t[z+8>>2]=t[n+8>>2];t[z+12>>2]=t[n+12>>2];fX(E,D,z);t[m>>2]=t[E>>2];t[m+4>>2]=t[E+4>>2];t[m+8>>2]=t[E+8>>2];t[m+12>>2]=t[E+12>>2];if(0>1){tX(A);m=Mk(i)|0;a=t[a>>2]|0;s=+c[a+16>>3];o=+c[a+24>>3];t[B>>2]=m;c[B+8>>3]=s;c[B+16>>3]=o;a3(d,90544,B)|0}}r=r+1|0}i=t[Q>>2]|0;r=t[i+12>>2]|0;if(r|0){f=+c[r+24>>3];if(p){l=+c[r+32>>3];t[F>>2]=0;t[F+4>>2]=0;t[F+8>>2]=0;t[F+12>>2]=0;c[v>>3]=f;c[k>>3]=l;l=0.0;s=f}else{l=+c[F>>3];s=+c[v>>3]}o=f-(s-l);f=o*.5;if(o>0.0){c[F>>3]=l-f;c[v>>3]=s+f}}if((A|0)>0)f=+((t[Z+8>>2]|0)>>>0)*.5;else f=0.0;l=+c[F>>3]-f;c[F>>3]=l;s=+c[v>>3]+f;c[v>>3]=s;o=-f-+c[i+56>>3]+ +c[w>>3];c[w>>3]=o;f=+c[i+88>>3]+f+ +c[k>>3];c[k>>3]=f;if(0>1){tX(A);t[L>>2]=Mk(e)|0;c[L+8>>3]=l;c[L+16>>3]=o;c[L+24>>3]=s;c[L+32>>3]=f;a3(d,90556,L)|0}r=0;while(1){if((r|0)>=(G|0))break;i=t[I+(r<<2)>>2]|0;a=i+16|0;if((r|0)<(t[(t[Q>>2]|0)+180>>2]|0)){L=(t[a>>2]|0)+16|0;t[Y>>2]=t[L>>2];t[Y+4>>2]=t[L+4>>2];t[Y+8>>2]=t[L+8>>2];t[Y+12>>2]=t[L+12>>2];t[Y+16>>2]=t[L+16>>2];t[Y+20>>2]=t[L+20>>2];t[Y+24>>2]=t[L+24>>2];t[Y+28>>2]=t[L+28>>2];t[D>>2]=t[L>>2];t[D+4>>2]=t[L+4>>2];t[D+8>>2]=t[L+8>>2];t[D+12>>2]=t[L+12>>2];t[z>>2]=t[F>>2];t[z+4>>2]=t[F+4>>2];t[z+8>>2]=t[F+8>>2];t[z+12>>2]=t[F+12>>2];lX(Y,D,z);t[D>>2]=t[n>>2];t[D+4>>2]=t[n+4>>2];t[D+8>>2]=t[n+8>>2];t[D+12>>2]=t[n+12>>2];t[z>>2]=t[F>>2];t[z+4>>2]=t[F+4>>2];t[z+8>>2]=t[F+8>>2];t[z+12>>2]=t[F+12>>2];lX(M,D,z);t[n>>2]=t[M>>2];t[n+4>>2]=t[M+4>>2];t[n+8>>2]=t[M+8>>2];t[n+12>>2]=t[M+12>>2];L=(t[a>>2]|0)+16|0;t[L>>2]=t[Y>>2];t[L+4>>2]=t[Y+4>>2];t[L+8>>2]=t[Y+8>>2];t[L+12>>2]=t[Y+12>>2];t[L+16>>2]=t[Y+16>>2];t[L+20>>2]=t[Y+20>>2];t[L+24>>2]=t[Y+24>>2];t[L+28>>2]=t[Y+28>>2];if(0>1){tX(A);L=Mk(i)|0;f=+c[Y>>3];l=+c[u>>3];s=+c[n>>3];o=+c[b>>3];t[R>>2]=L;c[R+8>>3]=f;c[R+16>>3]=l;c[R+24>>3]=s;c[R+32>>3]=o;a3(d,90556,R)|0}}else{L=(t[a>>2]|0)+16|0;t[D>>2]=t[L>>2];t[D+4>>2]=t[L+4>>2];t[D+8>>2]=t[L+8>>2];t[D+12>>2]=t[L+12>>2];t[z>>2]=t[F>>2];t[z+4>>2]=t[F+4>>2];t[z+8>>2]=t[F+8>>2];t[z+12>>2]=t[F+12>>2];lX(V,D,z);t[L>>2]=t[V>>2];t[L+4>>2]=t[V+4>>2];t[L+8>>2]=t[V+8>>2];t[L+12>>2]=t[V+12>>2];if(0>1){tX(A);L=Mk(i)|0;Z=t[a>>2]|0;s=+c[Z+16>>3];o=+c[Z+24>>3];t[x>>2]=L;c[x+8>>3]=s;c[x+16>>3]=o;a3(d,90544,x)|0}}r=r+1|0}t[D>>2]=t[v>>2];t[D+4>>2]=t[v+4>>2];t[D+8>>2]=t[v+8>>2];t[D+12>>2]=t[v+12>>2];t[z>>2]=t[F>>2];t[z+4>>2]=t[F+4>>2];t[z+8>>2]=t[F+8>>2];t[z+12>>2]=t[F+12>>2];lX(N,D,z);t[v>>2]=t[N>>2];t[v+4>>2]=t[N+4>>2];t[v+8>>2]=t[N+8>>2];t[v+12>>2]=t[N+12>>2];t[D>>2]=t[F>>2];t[D+4>>2]=t[F+4>>2];t[D+8>>2]=t[F+8>>2];t[D+12>>2]=t[F+12>>2];t[z>>2]=t[F>>2];t[z+4>>2]=t[F+4>>2];t[z+8>>2]=t[F+8>>2];t[z+12>>2]=t[F+12>>2];lX(W,D,z);t[F>>2]=t[W>>2];t[F+4>>2]=t[W+4>>2];t[F+8>>2]=t[W+8>>2];t[F+12>>2]=t[W+12>>2];x=(t[Q>>2]|0)+16|0;t[x>>2]=t[F>>2];t[x+4>>2]=t[F+4>>2];t[x+8>>2]=t[F+8>>2];t[x+12>>2]=t[F+12>>2];t[x+16>>2]=t[F+16>>2];t[x+20>>2]=t[F+20>>2];t[x+24>>2]=t[F+24>>2];t[x+28>>2]=t[F+28>>2];if(0>1){tX(A);x=Mk(e)|0;f=+c[F>>3];l=+c[w>>3];s=+c[v>>3];o=+c[k>>3];t[J>>2]=x;c[J+8>>3]=f;c[J+16>>3]=l;c[J+24>>3]=s;c[J+32>>3]=o;a3(d,90556,J)|0}G2(C);G2(I);G2(g)}h=H;return}function aX(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0,f=0,l=0.0,s=0.0,o=0.0,u=0.0,b=0,w=0.0,k=0.0,d=0,v=0,g=0,m=0;g=h;h=h+80|0;v=g+32|0;f=g+8|0;r=g;d=e+16|0;b=t[d>>2]|0;w=+c[b+16>>3];k=+c[b+24>>3];if(0>1){tX(A);b=t[15712]|0;t[r>>2]=Mk(e)|0;a3(b,90529,r)|0}b=(A|0)!=0;e:do{if(b){r=sd(e)|0;i=t[15712]|0;while(1){if(!r)break e;a=r+16|0;n=t[a>>2]|0;if((t[n+112>>2]|0)==(e|0)?(m=n+16|0,c[m>>3]=+c[m>>3]+w,n=n+24|0,c[n>>3]=+c[n>>3]+k,0>1):0){tX(A);m=Mk(r)|0;n=t[a>>2]|0;o=+c[n+16>>3];u=+c[n+24>>3];t[f>>2]=m;c[f+8>>3]=o;c[f+16>>3]=u;a3(i,90544,f)|0}r=cd(e,r)|0}}else i=t[15712]|0}while(0);f=A+1|0;e=1;while(1){r=t[d>>2]|0;if((e|0)>(t[r+180>>2]|0))break;n=t[(t[r+184>>2]|0)+(e<<2)>>2]|0;if(b){a=n+16|0;r=t[a>>2]|0;l=+c[r+16>>3]+w;s=+c[r+24>>3]+k;o=+c[r+32>>3]+w;u=+c[r+40>>3]+k;if(0>1){tX(A);t[v>>2]=Mk(n)|0;c[v+8>>3]=l;c[v+16>>3]=s;c[v+24>>3]=o;c[v+32>>3]=u;a3(i,90556,v)|0;r=t[a>>2]|0}c[r+16>>3]=l;c[r+24>>3]=s;c[r+32>>3]=o;c[r+40>>3]=u}aX(n,f);e=e+1|0}h=g;return}function tX(e){e=e|0;var A=0;A=t[15712]|0;while(1){if((e|0)<=0)break;Z3(90574,A)|0;e=e+-1|0}return}function nX(e,A,r){e=e|0;A=+A;r=+r;c[e>>3]=A;c[e+8>>3]=r;return}function fX(e,A,r){e=e|0;A=A|0;r=r|0;var i=0.0;i=(+c[r+8>>3]+ +c[A+8>>3])*.5;c[e>>3]=(+c[r>>3]+ +c[A>>3])*.5;c[e+8>>3]=i;return}function lX(e,A,r){e=e|0;A=A|0;r=r|0;var i=0.0;i=+c[A+8>>3]-+c[r+8>>3];c[e>>3]=+c[A>>3]-+c[r>>3];c[e+8>>3]=i;return}function sX(e){e=e|0;t[e>>2]=0;t[e+4>>2]=0;t[e+8>>2]=0;return}function cX(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0,f=0;n=e+8|0;r=(t[n>>2]|0)+1|0;t[n>>2]=r;i=e+4|0;f=t[i>>2]|0;a=f+10|0;if((r|0)<(f|0))e=t[e>>2]|0;else{t[i>>2]=a;r=AM(t[e>>2]|0,a<<2)|0;t[e>>2]=r;e=r;r=t[n>>2]|0}t[e+(r<<2)>>2]=A;return}function oX(e){e=e|0;var A=0;A=sd(e)|0;while(1){if(!A)break;oJ(A);A=cd(e,A)|0}uX(e);return}function uX(e){e=e|0;var A=0,r=0,i=0;A=e+16|0;e=1;while(1){i=t[A>>2]|0;r=t[i+184>>2]|0;if((e|0)>(t[i+180>>2]|0))break;i=t[r+(e<<2)>>2]|0;SF(t[(t[i+16>>2]|0)+12>>2]|0);uX(i);e=e+1|0}G2(r);return}function bX(e){e=e|0;var A=0,r=0,i=0;_d(e,1,137447,304,1);_x(e)|0;A=KF(((gk(e)|0)<<2)+4|0)|0;i=e+16|0;t[(t[i>>2]|0)+152>>2]=A;A=0;r=sd(e)|0;while(1){if(!r)break;hX(r);t[(t[(t[i>>2]|0)+152>>2]|0)+(A<<2)>>2]=r;t[(t[r+16>>2]|0)+120>>2]=A;A=A+1|0;r=cd(e,r)|0}i=zw(e,2,92493,0)|0;r=sd(e)|0;while(1){if(!r)break;A=Ow(e,r)|0;while(1){if(!A)break;wX(A,i);A=qw(e,A)|0}r=cd(e,r)|0}kX(e);return}function hX(e){e=e|0;var A=0;Fx(e);A=KF((f[(t[(Bd(e)|0)+16>>2]|0)+176>>1]|0)<<3)|0;t[(t[e+16>>2]|0)+132>>2]=A;WJ(e,t[(t[(Bd(e)|0)+16>>2]|0)+116>>2]&1);return}function wX(e,A){e=e|0;A=A|0;var r=0,i=0.0;Sd(e,137460,176,1)|0;i=+wx(e,t[47174]|0,1.0,0.0);r=e+16|0;c[(t[r>>2]|0)+128>>3]=i;i=+wx(e,A,+c[1371],0.0);c[(t[r>>2]|0)+136>>3]=i;Mx(e)|0;return}function kX(e){e=e|0;var A=0,r=0,a=0,n=0,f=0,l=0,s=0,o=0,u=0,b=0,w=0,k=0,d=0,v=0;d=h;h=h+32|0;k=d+16|0;w=d;o=d+24|0;u=zw(e,1,102623,0)|0;e:do{if(u|0){b=zw(e,1,90660,0)|0;f=e+16|0;l=(b|0)==0;s=t[15712]|0;n=0;while(1){r=t[(t[(t[f>>2]|0)+152>>2]|0)+(n<<2)>>2]|0;if(!r)break e;e=Pw(r,u)|0;do{if(i[e>>0]|0){a=r+16|0;A=t[(t[a>>2]|0)+132>>2]|0;i[o>>0]=0;t[w>>2]=A;t[w+4>>2]=A+8;t[w+8>>2]=o;if((V3(e,101749,w)|0)<=1){t[k>>2]=Mk(r)|0;t[k+4>>2]=e;a3(s,90664,k)|0;break}A:do{if(+c[23293]>0.0){e=0;while(1){if((e|0)==2)break A;v=A+(e<<3)|0;c[v>>3]=+c[v>>3]/+c[23293];e=e+1|0}}}while(0);e=t[a>>2]|0;i[e+119>>0]=1;if((i[o>>0]|0)!=33){if(l)break;if(!((mx(Pw(r,b)|0)|0)<<24>>24))break;e=t[a>>2]|0}i[e+119>>0]=3}}while(0);n=n+1|0}}}while(0);h=d;return}function dX(e){e=e|0;var A=0,r=0;r=sd(e)|0;while(1){if(!r)break;A=Ow(e,r)|0;while(1){if(!A)break;bJ(A);A=qw(e,A)|0}oJ(r);r=cd(e,r)|0}vX(e);return}function vX(e){e=e|0;gX(e);e=e+16|0;G2(t[(t[e>>2]|0)+152>>2]|0);G2(t[(t[e>>2]|0)+140>>2]|0);return}function gX(e){e=e|0;var A=0,r=0,i=0,a=0,n=0;n=e+16|0;a=1;while(1){i=t[n>>2]|0;A=t[i+184>>2]|0;if((a|0)>(t[i+180>>2]|0))break;i=t[A+(a<<2)>>2]|0;A=i+16|0;SF(t[(t[A>>2]|0)+12>>2]|0);r=t[(t[A>>2]|0)+140>>2]|0;if(r|0){G2(t[r>>2]|0);G2(t[(t[A>>2]|0)+140>>2]|0)}gX(i);a=a+1|0}G2(A);if((yd(e)|0)!=(e|0))Ud(e,137483)|0;return}function mX(e,A){e=e|0;A=A|0;t[A+4>>2]=zw(e,0,90716,0)|0;t[A+8>>2]=zw(e,0,141116,0)|0;t[A+12>>2]=zw(e,0,141048,0)|0;t[A>>2]=e;t[A+16>>2]=0;t[A+36>>2]=cE(e,2,4,A+20|0)|0;return}function pX(e){e=e|0;var A=0,r=0;DJ(e,2);A=KF(56)|0;r=e+16|0;t[(t[r>>2]|0)+140>>2]=A;A=(hx(e,zw(e,0,91374,0)|0,2,2)|0)&65535;A=(A&65535)<10?A:10;a[(t[r>>2]|0)+176>>1]=A;t[47137]=A&65535;EX(e,0,e);jX(e);bX(e);return}function EX(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,n=0,f=0,l=0,s=0,c=0,o=0,u=0,b=0,w=0;o=h;h=h+16|0;s=o;c=(A|0)==0;if(c){BX(s);A=s}n=r+16|0;i=xv(e)|0;while(1){if(!i)break;if(!(y1(Mk(i)|0,108006,7)|0)){Sd(i,137483,280,1)|0;u=KF(56)|0;w=t[i+16>>2]|0;t[w+140>>2]=u;b=t[n>>2]|0;a[w+176>>1]=a[b+176>>1]|0;t[u+44>>2]=(t[(t[b+140>>2]|0)+44>>2]|0)+1;t[u+48>>2]=r;yX(A,i);EX(i,0,i)}else EX(i,A,r);i=Jv(i)|0}if(c?(f=t[s+8>>2]|0,l=e+16|0,t[(t[l>>2]|0)+180>>2]=f,f|0):0){w=AM(t[s>>2]|0,(f<<2)+4|0)|0;t[(t[l>>2]|0)+184>>2]=w}h=o;return}function BX(e){e=e|0;t[e>>2]=0;t[e+4>>2]=0;t[e+8>>2]=0;return}function yX(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0,f=0;n=e+8|0;r=(t[n>>2]|0)+1|0;t[n>>2]=r;i=e+4|0;f=t[i>>2]|0;a=f+10|0;if((r|0)<(f|0))e=t[e>>2]|0;else{t[i>>2]=a;r=AM(t[e>>2]|0,a<<2)|0;t[e>>2]=r;e=r;r=t[n>>2]|0}t[e+(r<<2)>>2]=A;return}function CX(e){e=e|0;var A=0,r=0;A=h;h=h+64|0;r=A;mX(e,r);IX(e,r);ZX(e);GX(e,e);LX(e);h=A;return}function IX(e,A){e=e|0;A=A|0;var r=0,a=0,n=0,f=0,l=0,s=0,o=0,u=0,b=0,w=0,k=0,d=0,v=0,g=0.0,m=0.0,p=0,E=0.0,B=0.0;v=h;h=h+64|0;d=v+48|0;r=v+40|0;b=v+56|0;u=v+52|0;o=v;if(0){k=t[15712]|0;t[r>>2]=Mk(e)|0;a3(k,90723,r)|0}r=sd(e)|0;while(1){if(!r)break;t[(t[r+16>>2]|0)+164>>2]=0;r=cd(e,r)|0}w=QX(e,A)|0;k=pq(w,b,u)|0;r=k;while(1){s=r+4|0;a=t[r>>2]|0;if(!a)break;UX(a,o);r=sd(a)|0;while(1){if(!r)break;n=cd(a,r)|0;f=r+16|0;l=t[f>>2]|0;if(t[l+212>>2]|0){p=DX(r,a)|0;IX(p,A);p=t[(t[p+16>>2]|0)+140>>2]|0;m=+c[p+24>>3];l=t[f>>2]|0;c[l+32>>3]=m;g=+c[p+32>>3];c[l+40>>3]=g;m=m*36.0;c[l+88>>3]=m;c[l+96>>3]=m;c[l+80>>3]=g*72.0;r=n;continue}if(t[(t[l+112>>2]|0)+8>>2]|0){r=n;continue}Ed(a,r)|0;r=n}if((gk(a)|0)<=1){r=s;continue}if((t[A>>2]|0)==(e|0))yj(a)|0;nS(a,o);r=s}r=t[b>>2]|0;if((r|0)<=1)if((r|0)==1){Xx(t[k>>2]|0);r=0}else r=0;else{if(!(t[u>>2]|0))a=0;else{a=KF(r)|0;i[a>>0]=1;r=t[b>>2]|0}t[A+40>>2]=a;r=Hp(r,k,0,A+20|0)|0;G2(a)}zX(w,t[b>>2]|0,k,r,e,A);G2(r);a=sd(w)|0;while(1){if(!a)break;n=t[a+16>>2]|0;r=t[n+212>>2]|0;if(!r){r=t[(t[n+112>>2]|0)+8>>2]|0;if(r|0){b=t[n+132>>2]|0;p=t[(t[r+16>>2]|0)+132>>2]|0;c[p>>3]=+c[b>>3];c[p+8>>3]=+c[b+8>>3]}}else{b=t[n+132>>2]|0;B=+c[n+32>>3];E=+c[b>>3]-B*.5;p=t[(t[r+16>>2]|0)+140>>2]|0;c[p+8>>3]=E;g=+c[n+40>>3];m=+c[b+8>>3]-g*.5;c[p+16>>3]=m;c[p+24>>3]=B+E;c[p+32>>3]=g+m}a=cd(w,a)|0}p=(t[(t[e+16>>2]|0)+140>>2]|0)+8|0;b=(t[(t[w+16>>2]|0)+140>>2]|0)+8|0;t[p>>2]=t[b>>2];t[p+4>>2]=t[b+4>>2];t[p+8>>2]=t[b+8>>2];t[p+12>>2]=t[b+12>>2];t[p+16>>2]=t[b+16>>2];t[p+20>>2]=t[b+20>>2];t[p+24>>2]=t[b+24>>2];t[p+28>>2]=t[b+28>>2];WX(w,k);G2(k);if(0){p=t[15712]|0;t[d>>2]=Mk(e)|0;a3(p,90734,d)|0}h=v;return}function ZX(e){e=e|0;var A=0,r=0,a=0.0,n=0.0,f=0.0,l=0.0,s=0;A=sd(e)|0;while(1){if(!A)break;r=t[A+16>>2]|0;if(i[r+118>>0]|0){s=t[(t[(t[r+212>>2]|0)+16>>2]|0)+140>>2]|0;l=+c[s+24>>3]-+c[s+8>>3];f=+c[s+32>>3]-+c[s+16>>3];n=l*36.0;a=f*36.0;s=t[r+132>>2]|0;c[s>>3]=l*.5;c[s+8>>3]=f*.5;c[r+32>>3]=l;c[r+40>>3]=f;c[r+96>>3]=n;c[r+88>>3]=n;c[r+80>>3]=f*72.0;r=t[(t[r+12>>2]|0)+44>>2]|0;c[r>>3]=n;c[r+8>>3]=a;f=-n;c[r+16>>3]=f;c[r+24>>3]=a;c[r+32>>3]=f;a=-a;c[r+40>>3]=a;c[r+48>>3]=n;c[r+56>>3]=a}A=cd(e,A)|0}return}function GX(e,A){e=e|0;A=A|0;var r=0,i=0,a=0.0,n=0.0,f=0,l=0,s=0.0,o=0,u=0.0,b=0,h=0.0,w=0;f=e+16|0;l=t[(t[f>>2]|0)+140>>2]|0;a=+c[l+8>>3];n=+c[l+16>>3];l=(e|0)!=(A|0);e:do{if(l){r=sd(e)|0;while(1){if(!r){e=1;break e}i=t[r+16>>2]|0;if((t[i+212>>2]|0)==(e|0)){i=t[i+132>>2]|0;c[i>>3]=+c[i>>3]+a;i=i+8|0;c[i>>3]=+c[i>>3]+n}r=cd(e,r)|0}}else e=1}while(0);while(1){r=t[f>>2]|0;if((e|0)>(t[r+180>>2]|0))break;r=t[(t[r+184>>2]|0)+(e<<2)>>2]|0;if(l){i=t[(t[r+16>>2]|0)+140>>2]|0;w=i+8|0;b=i+16|0;o=i+24|0;i=i+32|0;h=+c[b>>3]+n;u=+c[o>>3]+a;s=+c[i>>3]+n;c[w>>3]=+c[w>>3]+a;c[b>>3]=h;c[o>>3]=u;c[i>>3]=s}GX(r,A);e=e+1|0}return}function LX(e){e=e|0;var A=0,r=0,i=0.0,a=0.0,n=0.0;A=e+16|0;e=t[A>>2]|0;r=t[e+140>>2]|0;n=+c[r+16>>3]*72.0;a=+c[r+24>>3]*72.0;i=+c[r+32>>3]*72.0;c[e+16>>3]=+c[r+8>>3]*72.0;c[e+24>>3]=n;c[e+32>>3]=a;c[e+40>>3]=i;e=1;while(1){r=t[A>>2]|0;if((e|0)>(t[r+180>>2]|0))break;LX(t[(t[r+184>>2]|0)+(e<<2)>>2]|0);e=e+1|0}return}function QX(e,A){e=e|0;A=A|0;var r=0,n=0,f=0,l=0,s=0,o=0,u=0,b=0,w=0,k=0,d=0,v=0,g=0,m=0,p=0,E=0,B=0,y=0;y=h;h=h+160|0;v=y+24|0;g=y+8|0;n=y;r=y+56|0;E=A+16|0;B=t[E>>2]|0;t[E>>2]=B+1;t[v>>2]=B;T4(r,90796,v)|0;if(0>1){B=t[15712]|0;E=Mk(e)|0;t[n>>2]=r;t[n+4>>2]=E;a3(B,90803,n)|0}i[v>>0]=i[18588]|0;i[v+1>>0]=i[18589]|0;i[v+2>>0]=i[18590]|0;i[v+3>>0]=i[18591]|0;B=hk(91156,v,0)|0;Sd(B,137483,280,1)|0;p=KF(56)|0;E=B+16|0;b=t[E>>2]|0;t[b+140>>2]=p;p=e+16|0;a[b+176>>1]=a[(t[p>>2]|0)+176>>1]|0;RX(e,B,92507);RX(e,B,93112);RX(e,B,91202);b=A+4|0;w=v+16|0;k=v+8|0;d=v+24|0;l=0;u=1;while(1){r=t[p>>2]|0;if((u|0)>(t[r+180>>2]|0))break;t[v>>2]=t[332];t[v+4>>2]=t[333];t[v+8>>2]=t[334];t[v+12>>2]=t[335];t[v+16>>2]=t[336];t[v+20>>2]=t[337];t[v+24>>2]=t[338];t[v+28>>2]=t[339];n=t[(t[r+184>>2]|0)+(u<<2)>>2]|0;VF(n);f=xX(B,Mk(n)|0)|0;s=f+16|0;r=t[s>>2]|0;t[r+212>>2]=n;o=l+1|0;t[r+120>>2]=l;if(t[b>>2]|0)JX(n,f,A,v);r=sd(n)|0;while(1){if(!r)break;t[(t[r+16>>2]|0)+164>>2]=f;r=cd(n,r)|0}r=t[s>>2]|0;if(i[r+119>>0]|0){s=t[r+132>>2]|0;c[s>>3]=(+c[w>>3]+ +c[v>>3])*.5;c[s+8>>3]=(+c[d>>3]+ +c[k>>3])*.5}l=o;u=u+1|0}s=sd(e)|0;while(1){if(!s)break;r=s+16|0;n=t[r>>2]|0;if(!(t[n+164>>2]|0)){f=n+212|0;v=t[f>>2]|0;if(v|0?(v|0)!=(t[(t[(t[p>>2]|0)+140>>2]|0)+48>>2]|0):0){m=18;break}t[f>>2]=e;if(!(i[n+118>>0]|0)){f=xX(B,Mk(s)|0)|0;n=t[r>>2]|0;t[n+164>>2]=f;f=t[f+16>>2]|0;t[f+120>>2]=l;c[f+32>>3]=+c[n+32>>3];c[f+40>>3]=+c[n+40>>3];c[f+88>>3]=+c[n+88>>3];c[f+96>>3]=+c[n+96>>3];c[f+80>>3]=+c[n+80>>3];t[f+8>>2]=t[n+8>>2];t[f+12>>2]=t[n+12>>2];r=i[n+119>>0]|0;if(r<<24>>24){A=t[n+132>>2]|0;v=t[f+132>>2]|0;c[v>>3]=+c[A>>3];c[v+8>>3]=+c[A+8>>3];i[f+119>>0]=r}t[(t[f+112>>2]|0)+8>>2]=s;r=l+1|0}else r=l}else r=l;s=cd(e,s)|0;l=r}if((m|0)==18){A=Mk(s)|0;v=Mk(e)|0;m=Mk(t[(t[r>>2]|0)+212>>2]|0)|0;t[g>>2]=A;t[g+4>>2]=v;t[g+8>>2]=m;nw(1,90826,g)|0;aA(187212,1)}o=sd(e)|0;while(1){if(!o)break;u=t[(t[o+16>>2]|0)+164>>2]|0;b=u+16|0;f=Ow(e,o)|0;while(1){if(!f)break;r=t[(t[(t[((t[f>>2]&3|0)==2?f:f+-48|0)+40>>2]|0)+16>>2]|0)+164>>2]|0;if((r|0)!=(u|0)){if(r>>>0>u>>>0)s=lk(B,u,r,0,1)|0;else s=lk(B,r,u,0,1)|0;Sd(s,137460,176,1)|0;n=t[f+16>>2]|0;m=t[s+16>>2]|0;c[m+136>>3]=+c[n+136>>3];c[m+128>>3]=+c[n+128>>3];r=t[(t[r+16>>2]|0)+112>>2]|0;n=r+4|0;t[n>>2]=(t[n>>2]|0)+1;n=t[(t[b>>2]|0)+112>>2]|0;g=n+4|0;t[g>>2]=(t[g>>2]|0)+1;if(!(t[m+172>>2]|0)){t[r>>2]=(t[r>>2]|0)+1;t[n>>2]=(t[n>>2]|0)+1}HX(s,f)}f=qw(e,f)|0}o=cd(e,o)|0}r=t[(t[p>>2]|0)+140>>2]|0;n=t[r>>2]|0;if(n|0){f=KF((t[r+4>>2]<<4)+16|0)|0;t[t[(t[E>>2]|0)+140>>2]>>2]=f;r=0;while(1){if(!(t[n>>2]|0))break;o=t[(t[(t[n+4>>2]|0)+16>>2]|0)+164>>2]|0;if(o){PX(e,n);u=xX(B,193772)|0;b=u+16|0;t[(t[b>>2]|0)+120>>2]=l;if(u>>>0>o>>>0)s=lk(B,o,u,0,1)|0;else s=lk(B,u,o,0,1)|0;Sd(s,137460,176,1)|0;m=t[n>>2]|0;g=t[m+16>>2]|0;p=t[s+16>>2]|0;c[p+136>>3]=+c[g+136>>3];c[p+128>>3]=+c[g+128>>3];HX(s,m);m=t[(t[b>>2]|0)+112>>2]|0;p=m+4|0;t[p>>2]=(t[p>>2]|0)+1;p=t[(t[o+16>>2]|0)+112>>2]|0;g=p+4|0;t[g>>2]=(t[g>>2]|0)+1;t[m>>2]=(t[m>>2]|0)+1;t[p>>2]=(t[p>>2]|0)+1;t[f+4>>2]=u;c[f+8>>3]=+c[n+8>>3];t[f>>2]=s;r=r+1|0;f=f+16|0;l=l+1|0}n=n+16|0}t[(t[(t[E>>2]|0)+140>>2]|0)+4>>2]=r}h=y;return B|0}function DX(e,A){e=e|0;A=A|0;var r=0.0,i=0,a=0,n=0,f=0,l=0,s=0,o=0;o=t[e+16>>2]|0;s=t[o+212>>2]|0;o=t[(t[o+112>>2]|0)+4>>2]|0;do{if(o|0){l=KF((o<<4)+16|0)|0;a=MX(e,A)|0;n=a+8|0;A=0;i=a;while(1){if(!(t[i>>2]|0))break;f=i+24|0;if(!(t[f>>2]|0))r=+c[n>>3]+6.283185307179586;else r=+c[i+32>>3];A=VX(e,i,l,A,r)|0;i=f}if((A|0)==(o|0)){e=t[(t[s+16>>2]|0)+140>>2]|0;t[e>>2]=l;t[e+4>>2]=o;G2(a);break}else ge(90742,90752,766,90761)}}while(0);return s|0}function zX(e,A,r,i,a,n){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;n=n|0;var f=0.0,l=0,s=0.0,o=0,u=0,b=0,w=0,k=0,d=0,v=0,g=0,m=0,p=0,E=0,B=0,y=0,C=0,I=0,Z=0,G=0,L=0,Q=0,D=0,z=0.0,W=0.0;Z=h;h=h+32|0;B=Z+16|0;I=Z;o=t[n+8>>2]|0;l=t[n+12>>2]|0;y=(t[n>>2]|0)==(a|0);C=(A|0)!=0;e:do{if(C){w=t[(t[r>>2]|0)+16>>2]|0;s=+c[w+16>>3];o=~~(s+(s>=0.0?.5:-.5));t[I>>2]=o;s=+c[w+24>>3];n=~~(s+(s>=0.0?.5:-.5));m=I+4|0;t[m>>2]=n;s=+c[w+32>>3];u=~~(s+(s>=0.0?.5:-.5));p=I+8|0;t[p>>2]=u;s=+c[w+40>>3];w=~~(s+(s>=0.0?.5:-.5));E=I+12|0;t[E>>2]=w;if((A|0)>1){k=t[i>>2]|0;g=t[i+4>>2]|0;o=k+o|0;t[I>>2]=o;A=g+n|0;t[m>>2]=A;u=k+u|0;t[p>>2]=u;k=B+4|0;d=B+8|0;v=B+12|0;b=i;n=r;g=g+w|0;w=A;while(1){n=n+4|0;l=b+8|0;t[E>>2]=g;A=t[n>>2]|0;if(!A){l=0;d=w;v=g;break e}Q=t[A+16>>2]|0;z=+c[Q+16>>3];f=+c[Q+24>>3];s=+c[Q+32>>3];W=+c[Q+40>>3];Q=~~(W+(W>=0.0?.5:-.5));t[v>>2]=Q;A=t[l>>2]|0;D=t[b+12>>2]|0;L=A+~~(z+(z>=0.0?.5:-.5))|0;t[B>>2]=L;G=D+~~(f+(f>=0.0?.5:-.5))|0;t[k>>2]=G;A=A+~~(s+(s>=0.0?.5:-.5))|0;t[d>>2]=A;Q=D+Q|0;t[v>>2]=Q;L=t[((o|0)<(L|0)?I:B)>>2]|0;t[I>>2]=L;G=t[((w|0)<(G|0)?I:B)+4>>2]|0;t[m>>2]=G;A=t[((u|0)>(A|0)?I:B)+8>>2]|0;t[p>>2]=A;b=l;g=t[((g|0)>(Q|0)?I:B)+12>>2]|0;o=L;w=G;u=A}}else{l=0;d=n;v=w}}else{t[I>>2]=0;t[I+4>>2]=0;u=hx(a,o,54,3)|0;t[I+8>>2]=u;v=hx(a,l,36,3)|0;t[I+12>>2]=v;l=1;o=0;d=0}}while(0);A=a+16|0;b=t[A>>2]|0;n=t[b+12>>2]|0;if(n){W=+c[n+24>>3];n=o-u+~~(W+(W>=0.0?.5:-.5))|0;if((n|0)>0){n=n>>>1;o=o-n|0;t[I>>2]=o;u=u+n|0;t[I+8>>2]=u;n=0}else n=0}else n=l;if(y|(n|0)!=0){l=0;n=b}else{l=hx(e,t[47144]|0,8,0)|0;n=t[A>>2]|0}k=l-o|0;w=~~(+c[n+56>>3]+ +(l-d|0));t[I>>2]=0;t[I+4>>2]=0;b=k+l+u|0;t[I+8>>2]=b;A=~~(+c[n+88>>3]+ +(l+w|0)+ +(v|0));t[I+12>>2]=A;e:do{if(C){n=i;A:while(1){u=r+4|0;l=t[r>>2]|0;if(!l)break e;if(!n){o=0;r=k;n=w}else{o=n+8|0;r=(t[n>>2]|0)+k|0;n=(t[n+4>>2]|0)+w|0}s=+(r|0)*.013888888888888888;f=+(n|0)*.013888888888888888;r=sd(l)|0;while(1){if(!r){r=u;n=o;continue A}D=t[(t[r+16>>2]|0)+132>>2]|0;c[D>>3]=+c[D>>3]+s;D=D+8|0;c[D>>3]=+c[D>>3]+f;r=cd(l,r)|0}}}}while(0);D=t[(t[e+16>>2]|0)+140>>2]|0;Q=D+8|0;t[Q>>2]=0;t[Q+4>>2]=0;t[Q+8>>2]=0;t[Q+12>>2]=0;c[D+24>>3]=+(b|0)*.013888888888888888;c[D+32>>3]=+(A|0)*.013888888888888888;h=Z;return}function WX(e,A){e=e|0;A=A|0;var r=0,i=0;while(1){r=t[A>>2]|0;if(!r)break;YX(r);Ud(r,137483)|0;A=A+4|0}A=t[t[(t[e+16>>2]|0)+140>>2]>>2]|0;if(A|0)G2(A);YX(e);Ud(e,137483)|0;r=sd(e)|0;while(1){if(!r)break;i=cd(e,r)|0;A=Ow(e,r)|0;while(1){if(!A)break;G2(t[(t[A+16>>2]|0)+172>>2]|0);Ud(A,137460)|0;A=qw(e,A)|0}FX(r);r=i}vk(e)|0;return}function YX(e){e=e|0;G2(t[(t[e+16>>2]|0)+140>>2]|0);return}function FX(e){e=e|0;var A=0;A=e+16|0;G2(t[(t[A>>2]|0)+112>>2]|0);G2(t[(t[A>>2]|0)+132>>2]|0);Ud(e,137447)|0;return}function MX(e,A){e=e|0;A=A|0;var r=0.0,i=0,a=0,n=0.0,f=0,l=0,s=0,o=0,u=0;s=e+16|0;o=t[t[(t[s>>2]|0)+112>>2]>>2]|0;u=KF((o*24|0)+24|0)|0;f=0;l=ek(A,e)|0;while(1){if(!l)break;a=t[l>>2]&3;i=t[((a|0)==2?l:l+-48|0)+40>>2]|0;if((i|0)==(e|0))i=t[((a|0)==3?l:l+48|0)+40>>2]|0;i=t[(t[i+16>>2]|0)+132>>2]|0;a=t[(t[s>>2]|0)+132>>2]|0;n=+c[i>>3]-+c[a>>3];r=+c[i+8>>3]-+c[a+8>>3];t[u+(f*24|0)>>2]=l;c[u+(f*24|0)+8>>3]=+R(+r,+n);c[u+(f*24|0)+16>>3]=r*r+n*n;f=f+1|0;l=Ak(A,l,e)|0}if((f|0)!=(o|0))ge(90775,90752,642,90784);_4(u,o,24,67);e:do{if((o|0)>1){l=o+-1|0;i=0;A:while(1){if((i|0)>=(l|0))break e;n=+c[u+(i*24|0)+8>>3];a=i+1|0;f=a;while(1){if((f|0)>=(o|0))break;if(!(+c[u+(f*24|0)+8>>3]==n))break;f=f+1|0}if((f|0)==(a|0)){i=a;continue}if((f|0)==(o|0))r=3.141592653589793;else r=+c[u+(f*24|0)+8>>3];r=(r-n)/+(f-i|0);r=r>.03490658503988659?.03490658503988659:r;n=0.0;while(1){if((i|0)>=(f|0))continue A;s=u+(i*24|0)+8|0;c[s>>3]=+c[s>>3]+n;n=n+r;i=i+1|0}}}}while(0);return u|0}function VX(e,A,r,i,n){e=e|0;A=A|0;r=r|0;i=i|0;n=+n;var f=0,l=0,s=0,o=0.0,u=0,b=0,h=0,w=0.0,k=0;s=t[A>>2]|0;b=t[s+16>>2]|0;u=a[b+168>>1]|0;h=u<<16>>16;l=t[s>>2]&3;f=t[((l|0)==2?s:s+-48|0)+40>>2]|0;if((f|0)==(e|0))f=t[((l|0)==3?s:s+48|0)+40>>2]|0;w=+c[A+8>>3];n=(n-w)/+(u<<16>>16);n=n>.03490658503988659?.03490658503988659:n;u=f>>>0>e>>>0;o=u?n:-n;A=u?1:-1;s=0;f=t[b+172>>2]|0;l=u?i:i+-1+h|0;n=u?w:n*+(h+-1|0)+w;while(1){if((s|0)>=(h|0))break;b=t[f>>2]|0;t[r+(l<<4)>>2]=b;u=t[b>>2]&3;k=(u|0)==3?b:b+48|0;t[r+(l<<4)+4>>2]=t[((t[(t[(t[k+40>>2]|0)+16>>2]|0)+164>>2]|0)==(e|0)?k:(u|0)==2?b:b+-48|0)+40>>2];c[r+(l<<4)+8>>3]=n;s=s+1|0;f=f+4|0;l=l+A|0;n=n+o}return h+i|0}function NX(e,A){e=e|0;A=A|0;var r=0.0,i=0.0;r=+c[e+8>>3];i=+c[A+8>>3];if(!(r>i))if(!(r>3];r=+c[A+16>>3];if(i>r)e=1;else e=(i>31}else e=-1;else e=1;return e|0}function RX(e,A,r){e=e|0;A=A|0;r=r|0;var i=0;i=zw(e,0,r,0)|0;do{if(i|0){e=Pw(e,i)|0;i=zw(A,0,r,0)|0;if(!i){zw(A,0,r,e)|0;break}else{Mw(A,i,e)|0;break}}}while(0);return}function xX(e,A){e=e|0;A=A|0;var r=0,i=0;A=gd(e,A,1)|0;Sd(A,137447,304,1)|0;i=KF(32)|0;r=A+16|0;t[(t[r>>2]|0)+112>>2]=i;e=$F((f[(t[e+16>>2]|0)+176>>1]|0)<<3)|0;t[(t[r>>2]|0)+132>>2]=e;return A|0}function JX(e,A,r,a){e=e|0;A=A|0;r=r|0;a=a|0;var n=0.0,f=0,l=0,s=0,o=0,u=0,b=0,w=0,k=0;k=h;h=h+80|0;u=k+56|0;o=k+32|0;w=k;b=k+64|0;f=t[r+4>>2]|0;s=Pw(e,f)|0;do{if(i[s>>0]|0){if((t[r>>2]|0)!=(e|0)){r=Pw(Hv(e)|0,f)|0;if((r|0)==(s|0))break;if(!(e1(s,r)|0))break}i[b>>0]=0;r=w+8|0;f=w+16|0;l=w+24|0;t[o>>2]=w;t[o+4>>2]=r;t[o+8>>2]=f;t[o+12>>2]=l;t[o+16>>2]=b;if((V3(s,90937,o)|0)<=3){t[u>>2]=Mk(e)|0;t[u+4>>2]=s;nw(0,90955,u)|0;break}n=+c[23293];if(n>0.0){c[w>>3]=+c[w>>3]/n;c[r>>3]=+c[r>>3]/n;c[f>>3]=+c[f>>3]/n;c[l>>3]=+c[l>>3]/n}r=i[b>>0]|0;if(r<<24>>24==33)i[(t[A+16>>2]|0)+119>>0]=3;else i[(t[A+16>>2]|0)+119>>0]=r<<24>>24==63?2:1;t[a>>2]=t[w>>2];t[a+4>>2]=t[w+4>>2];t[a+8>>2]=t[w+8>>2];t[a+12>>2]=t[w+12>>2];t[a+16>>2]=t[w+16>>2];t[a+20>>2]=t[w+20>>2];t[a+24>>2]=t[w+24>>2];t[a+28>>2]=t[w+28>>2]}}while(0);h=k;return}function HX(e,A){e=e|0;A=A|0;var r=0,i=0,n=0;n=e+16|0;i=t[n>>2]|0;e=a[i+168>>1]|0;i=t[i+172>>2]|0;if(!i){e=e<<16>>16;r=e;e=$F((e<<2)+4|0)|0}else{e=e<<16>>16;r=e;e=AM(i,(e<<2)+4|0)|0}t[e+(r<<2)>>2]=A;A=t[n>>2]|0;t[A+172>>2]=e;A=A+168|0;a[A>>1]=(a[A>>1]|0)+1<<16>>16;return}function PX(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0,f=0,l=0,s=0;l=h;h=h+48|0;f=l+24|0;n=l;i=t[A>>2]|0;r=t[i>>2]&3;a=t[((r|0)==2?i:i+-48|0)+40>>2]|0;r=t[((r|0)==3?i:i+48|0)+40>>2]|0;A=U2(Mk(e)|0)|0;s=U2(Mk(a)|0)|0;s=(A+8+s+(U2(Mk(r)|0)|0)|0)>999;A=Mk(e)|0;if(s){r=Mk(r)|0;s=Mk(a)|0;f=(t[i>>2]|0)>>>4;t[n>>2]=A;t[n+4>>2]=r;t[n+8>>2]=s;s=n+16|0;t[s>>2]=f;t[s+4>>2]=0;T4(193772,90895,n)|0}else{r=t[(t[r+16>>2]|0)+120>>2]|0;s=t[(t[a+16>>2]|0)+120>>2]|0;n=(t[i>>2]|0)>>>4;t[f>>2]=A;t[f+4>>2]=r;t[f+8>>2]=s;s=f+16|0;t[s>>2]=n;t[s+4>>2]=0;T4(193772,90914,f)|0}h=l;return}function XX(e){e=e|0;var A=0,r=0,i=0.0,n=0.0,f=0,l=0,s=0;l=4;f=Z2(40)|0;t[f>>2]=0;n=+c[23293];d=0;i=+ee(1,e|0);A=d;d=0;if((A|0)!=0&(v|0)!=0){r=L6(t[A>>2]|0,f|0,l|0)|0;if(!r)aA(A|0,v|0);G=v}else r=-1;if((r|0)!=1){c[23293]=i;d=0;oe(102,e|0);A=d;d=0;if((A|0)!=0&(v|0)!=0){r=L6(t[A>>2]|0,f|0,l|0)|0;if(!r)aA(A|0,v|0);G=v}else r=-1;if((r|0)!=1){f=G6(187212,1,f|0,l|0)|0;l=G;d=0;r=d;d=0;if((r|0)!=0&(v|0)!=0){A=L6(t[r>>2]|0,f|0,l|0)|0;if(!A)aA(r|0,v|0);G=v}else A=-1;if((A|0)!=1)A=0;else A=G}else A=G}else A=G;while(1){if(A|0)break;d=0;oe(103,e|0);A=d;d=0;if((A|0)!=0&(v|0)!=0){r=L6(t[A>>2]|0,f|0,l|0)|0;if(!r)aA(A|0,v|0);G=v}else r=-1;if((r|0)==1){A=G;continue}d=0;re(22,e|0)|0;A=d;d=0;if((A|0)!=0&(v|0)!=0){r=L6(t[A>>2]|0,f|0,l|0)|0;if(!r)aA(A|0,v|0);G=v}else r=-1;if((r|0)==1){A=G;continue}if(a[(t[e+16>>2]|0)+136>>1]&14){d=0;oe(104,e|0);A=d;d=0;if((A|0)!=0&(v|0)!=0){r=L6(t[A>>2]|0,f|0,l|0)|0;if(!r)aA(A|0,v|0);G=v}else r=-1;if((r|0)==1){A=G;continue}}d=0;ue(22,e|0,0);A=d;d=0;if((A|0)!=0&(v|0)!=0){r=L6(t[A>>2]|0,f|0,l|0)|0;if(!r)aA(A|0,v|0);G=v}else r=-1;if((r|0)==1)A=G;else{s=12;break}}if((s|0)==12)c[23293]=n;G2(f|0);return}function SX(e){e=e|0;var A=0,r=0,i=0,n=0,f=0,l=0;l=h;h=h+16|0;n=l;r=e+16|0;i=a[(t[r>>2]|0)+136>>1]&14;A=i&65535;if((i&65535)>8){if(i<<16>>16==12){if(FH(e,22,10)|0){t[47134]=2;f=5}}else f=5;do{if((f|0)==5)if(!(a[(t[r>>2]|0)+136>>1]&1)){VH(e,A)|0;break}else{nw(0,90998,n)|0;A=2;break}}while(0);t[47134]=0}if((t[47138]|0)<1)VH(e,A)|0;h=l;return}function jX(e){e=e|0;var A=0.0,r=0.0,i=0;i=h;h=h+16|0;t[46474]=1;t[46475]=1;t[46477]=-1;t[46479]=50;c[23245]=0.0;c[23240]=0.0;c[23241]=1.0;t[46478]=hx(e,zw(e,0,91061,0)|0,600,0)|0;r=+wx(e,zw(e,0,91202,0)|0,.3,0.0);c[23242]=r;c[1371]=r;if(-1.0==-1.0)A=+wx(e,zw(e,0,91069,0)|0,-1.0,0.0);else A=-1.0;c[23243]=A;t[46476]=1;e=AH(e,2,185904)|0;t[46488]=e;if(!e){nw(0,91072,i)|0;t[46476]=2}t[46504]=(P(t[46478]|0,t[46479]|0)|0)/100|0;r=+c[23242];c[23247]=r*r;if(t[46474]|0){A=+c[23245];if(A<=0.0){A=r*3.0;c[23245]=A}c[23246]=A*A}h=i;return}function UX(e,A){e=e|0;A=A|0;var r=0,i=0.0,a=0.0,n=0,f=0,l=0;l=h;h=h+16|0;r=l;n=t[t[(t[e+16>>2]|0)+140>>2]>>2]|0;f=TX(e,A)|0;OX(r,e,n);i=+c[r>>3];a=+c[r+8>>3];e:do{if(!(t[46474]|0)){A=0;while(1){if((A|0)>=(t[46505]|0))break e;KX(e,+_X(A),n);A=A+1|0}}else{r=Bq(gk(e)|0)|0;Gq(r,gk(e)|0);A=0;while(1){if((A|0)>=(t[46505]|0))break;qX(e,+_X(A),n,r);A=A+1|0}Qq(r)}}while(0);e:do{if(i!=0.0|a!=0.0){A=sd(e)|0;while(1){if(!A)break e;n=t[(t[A+16>>2]|0)+132>>2]|0;c[n>>3]=+c[n>>3]+i;n=n+8|0;c[n>>3]=+c[n>>3]+a;A=cd(e,A)|0}}}while(0);if(f|0)$X();h=l;return}function TX(e,A){e=e|0;A=A|0;var r=0.0,i=0,a=0,n=0,f=0,l=0;if(+c[23243]==-1.0){f=gk(e)|0;r=+c[23242];c[23243]=+c[23241]*.2*r*+D(+ +(f|0));f=1}else{f=0;r=+c[23242]}n=t[46504]|0;c[A+8>>3]=+_X(n);c[A+16>>3]=r;c[A+24>>3]=+c[23240];i=t[46478]|0;e=i-n|0;t[A>>2]=e;a=t[46477]|0;do{if((a|0)>-1){if((a|0)<=(n|0)){t[46505]=a;e=0;l=10;break}if((a|0)<=(i|0)){t[46505]=n;e=a-n|0;l=10}}else{t[46505]=n;l=10}}while(0);if((l|0)==10)t[A+32>>2]=e;return f|0}function OX(e,A,r){e=e|0;A=A|0;r=r|0;var a=0,n=0,f=0.0,l=0.0,s=0,o=0.0,u=0.0,b=0,h=0.0,w=0.0,k=0,d=0,v=0.0,g=0.0,m=0,p=0,E=0.0,B=0,y=0,C=0;p=gk(A)|0;B=t[(t[(t[A+16>>2]|0)+140>>2]|0)+4>>2]|0;m=sd(A)|0;k=0;d=0;n=0;s=0;b=0;while(1){if(!m)break;a=t[m+16>>2]|0;if(!(i[a+119>>0]|0))a=d;else{a=t[a+132>>2]|0;f=+c[a>>3];if(!k){s=~~f;n=~~+c[a+8>>3];b=n;a=s}else{w=+(d|0);v=+c[a+8>>3];g=+(n|0);E=+(s|0);h=+(b|0);b=~~(v>h?v:h);a=~~(fE?f:E)}k=k+1|0}m=cd(A,m)|0;d=a}f=+c[23242]*(+D(+ +(p-B|0))+1.0);v=f*.6;c[23249]=v;c[23248]=v;if((k|0)!=1)if((k|0)>1){g=+(s+d|0)*.5;E=+(b+n|0)*.5;h=+(s-d|0);w=h*1.2;o=+(b-n|0);u=o*1.2;f=f*2.4*v;l=u*w/f;do{if(!(l>=1.0)){if(l>0.0){f=+D(+l)*2.0;l=w/f;c[23248]=l;f=u/f;C=20;break}if(w>0.0){l=h*.6;c[23248]=l;f=f/w*.5;C=20;break}if(u>0.0){l=f/u*.5;c[23248]=l;f=o*.6;C=20}else{f=v;l=v}}else{l=h*.6;c[23248]=l;f=o*.6;C=20}}while(0);if((C|0)==20)c[23249]=f;v=+R(+f,+l);l=l/+W(+v);c[23248]=l;f=f/+Y(+v);c[23249]=f}else{g=0.0;E=0.0;l=v;f=v}else{g=+(d|0);E=+(n|0);l=v;f=v}c[23250]=l*l;c[23251]=f*f;if((t[46488]|0)==2)a=t[46476]|0;else{a=D3()|0;a=(nA(0)|0)^a}f8(a);e:do{if(!r){r=sd(A)|0;if(!k)while(1){if(!r)break e;v=+c[23248];v=(+s8()*2.0+-1.0)*v;C=r+16|0;c[t[(t[C>>2]|0)+132>>2]>>3]=v;v=+c[23249];v=(+s8()*2.0+-1.0)*v;c[(t[(t[C>>2]|0)+132>>2]|0)+8>>3]=v;r=cd(A,r)|0}while(1){if(!r)break e;a=r+16|0;n=t[a>>2]|0;if(!(i[n+119>>0]|0)){v=+c[23248];v=(+s8()*2.0+-1.0)*v;c[t[(t[a>>2]|0)+132>>2]>>3]=v;v=+c[23249];v=(+s8()*2.0+-1.0)*v;c[(t[(t[a>>2]|0)+132>>2]|0)+8>>3]=v}else{C=t[n+132>>2]|0;c[C>>3]=+c[C>>3]-g;C=C+8|0;c[C>>3]=+c[C>>3]-E}r=cd(A,r)|0}}else{while(1){if(!(t[r>>2]|0))break;m=r+8|0;v=+W(+ +c[m>>3])*+c[23248]+g;B=t[(t[r+4>>2]|0)+16>>2]|0;p=t[B+132>>2]|0;c[p>>3]=v;c[p+8>>3]=+Y(+ +c[m>>3])*+c[23249]+E;i[B+119>>0]=1;r=r+16|0}o=g*.1;u=E*.1;d=sd(A)|0;while(1){if(!d)break e;k=d+16|0;r=t[k>>2]|0;if(!((t[(t[r+112>>2]|0)+8>>2]|0)==0?!(t[r+212>>2]|0):0))C=32;do{if((C|0)==32){C=0;if(i[r+119>>0]|0){B=t[r+132>>2]|0;c[B>>3]=+c[B>>3]-g;B=B+8|0;c[B>>3]=+c[B>>3]-E;break}b=ek(A,d)|0;r=0;l=0.0;f=0.0;while(1){if(!b)break;s=t[b>>2]&3;a=(s|0)==2?b:b+-48|0;n=t[a+40>>2]|0;s=(s|0)==3?b:b+48|0;do{if((n|0)!=(t[s+40>>2]|0)?(y=t[(t[((n|0)==(d|0)?s:a)+40>>2]|0)+16>>2]|0,(i[y+119>>0]|0)!=0):0)if(!r){B=t[y+132>>2]|0;r=1;l=+c[B>>3];f=+c[B+8>>3];break}else{w=+(r|0);B=t[y+132>>2]|0;r=r+1|0;v=+(r|0);l=(+c[B>>3]+l*w)/v;f=(+c[B+8>>3]+f*w)/v;break}}while(0);b=Ak(A,b,d)|0}do{if((r|0)<=1)if((r|0)==1){a=t[k>>2]|0;r=t[a+132>>2]|0;c[r>>3]=l*.98+o;f=f*.9+u;break}else{f=+s8()*6.283185307179586;v=+s8()*.9;w=v*+c[23248]*+W(+f);a=t[k>>2]|0;r=t[a+132>>2]|0;c[r>>3]=w;f=+c[23249]*v*+Y(+f);break}else{a=t[k>>2]|0;r=t[a+132>>2]|0;c[r>>3]=l}}while(0);c[r+8>>3]=f;i[a+119>>0]=1}}while(0);d=cd(A,d)|0}}}while(0);c[e>>3]=g;c[e+8>>3]=E;return}function _X(e){e=e|0;var A=0;A=t[46478]|0;return+(+c[23243]*+(A-e|0)/+(A|0))}function qX(e,A,r,i){e=e|0;A=+A;r=r|0;i=i|0;var a=0,n=0,f=0,l=0.0;if(!(A<=0.0)){Lq(i);a=sd(e)|0;while(1){if(!a)break;f=t[a+16>>2]|0;n=(t[f+112>>2]|0)+16|0;t[n>>2]=0;t[n+4>>2]=0;t[n+8>>2]=0;t[n+12>>2]=0;f=t[f+132>>2]|0;l=+c[23245];n=~~+L(+(+c[f>>3]/l));zq(i,n,~~+L(+(+c[f+8>>3]/l)),a);a=cd(e,a)|0}n=sd(e)|0;while(1){if(!n)break;a=Ow(e,n)|0;while(1){if(!a)break;f=t[((t[a>>2]&3|0)==2?a:a+-48|0)+40>>2]|0;if((n|0)!=(f|0))AS(n,f,a);a=qw(e,a)|0}n=cd(e,n)|0}Yq(i,23);rS(e,A,r)}return}function KX(e,A,r){e=e|0;A=+A;r=r|0;var i=0,a=0,n=0;if(!(A<=0.0)){i=sd(e)|0;while(1){if(!i)break;n=(t[(t[i+16>>2]|0)+112>>2]|0)+16|0;t[n>>2]=0;t[n+4>>2]=0;t[n+8>>2]=0;t[n+12>>2]=0;i=cd(e,i)|0}n=sd(e)|0;while(1){if(!n)break;else i=n;while(1){i=cd(e,i)|0;if(!i)break;eS(n,i)}i=Ow(e,n)|0;while(1){if(!i)break;a=t[((t[i>>2]&3|0)==2?i:i+-48|0)+40>>2]|0;if((n|0)!=(a|0))AS(n,a,i);i=qw(e,i)|0}n=cd(e,n)|0}rS(e,A,r)}return}function $X(){c[23243]=-1.0;return}function eS(e,A){e=e|0;A=A|0;var r=0.0,i=0.0,a=0,n=0;n=t[(t[A+16>>2]|0)+132>>2]|0;a=t[(t[e+16>>2]|0)+132>>2]|0;r=+c[n>>3]-+c[a>>3];i=+c[n+8>>3]-+c[a+8>>3];iS(e,A,r,i,i*i+r*r);return}function AS(e,A,r){e=e|0;A=A|0;r=r|0;var i=0.0,a=0.0,n=0.0,f=0.0,l=0,s=0;l=A+16|0;s=t[(t[l>>2]|0)+132>>2]|0;e=e+16|0;A=t[(t[e>>2]|0)+132>>2]|0;i=+c[s>>3]-+c[A>>3];a=+c[s+8>>3]-+c[A+8>>3];n=i;f=a;i=i*i;a=a*a;while(1){i=i+a;if(!(i==0.0))break;i=+(5-((t8()|0)%10|0)|0);a=+(5-((t8()|0)%10|0)|0);n=i;f=a;i=i*i;a=a*a}a=+D(+i);A=t[r+16>>2]|0;i=+c[A+128>>3];if(!(t[46475]|0))i=i*a/+c[A+136>>3];else i=(a-+c[A+136>>3])*i/a;n=i*n;s=t[(t[l>>2]|0)+112>>2]|0;l=s+16|0;c[l>>3]=+c[l>>3]-n;f=i*f;s=s+24|0;c[s>>3]=+c[s>>3]-f;s=t[(t[e>>2]|0)+112>>2]|0;l=s+16|0;c[l>>3]=+c[l>>3]+n;s=s+24|0;c[s>>3]=+c[s>>3]+f;return}function rS(e,A,r){e=e|0;A=+A;r=r|0;var a=0.0,n=0.0,f=0.0,l=0.0,s=0,o=0,u=0,b=0,h=0.0;h=A*A;b=(r|0)==0;u=sd(e)|0;while(1){if(!u)break;o=t[u+16>>2]|0;if(!(i[o+119>>0]&2)){s=t[o+112>>2]|0;a=+c[s+16>>3];f=+c[s+24>>3];n=f*f+a*a;if(n>2]|0;l=+c[r>>3]+a;a=+c[r+8>>3]+f}else{n=A/+D(+n);r=t[o+132>>2]|0;l=+c[r>>3]+n*a;a=+c[r+8>>3]+n*f}do{if(!b){n=+D(+(a*a/+c[23251]+l*l/+c[23250]));if((t[s+8>>2]|0)==0?(t[o+212>>2]|0)==0:0){c[r>>3]=l/n;a=a/n;break}if(!(n>=1.0)){c[r>>3]=l;break}else{c[r>>3]=l*.95/n;a=a*.95/n;break}}else c[r>>3]=l}while(0);c[r+8>>3]=a}u=cd(e,u)|0}return}function iS(e,A,r,i,a){e=e|0;A=A|0;r=+r;i=+i;a=+a;var n=0.0,f=0,l=0;n=r;r=a;while(1){if(!(r==0.0))break;r=+(5-((t8()|0)%10|0)|0);i=+(5-((t8()|0)%10|0)|0);n=r;r=i*i+r*r}if(!(t[46475]|0))r=+c[23247]/r;else{a=+D(+r);r=+c[23247]/(a*r)}l=t[e+16>>2]|0;e=t[l+112>>2]|0;if(((t[e+8>>2]|0)==0?(t[l+212>>2]|0)==0:0)?(f=t[A+16>>2]|0,(t[(t[f+112>>2]|0)+8>>2]|0)==0):0)r=(t[f+212>>2]|0)==0?r*10.0:r;a=r*n;l=t[(t[A+16>>2]|0)+112>>2]|0;A=l+16|0;c[A>>3]=+c[A>>3]+a;n=r*i;l=l+24|0;c[l>>3]=+c[l>>3]+n;l=e+16|0;c[l>>3]=+c[l>>3]-a;l=e+24|0;c[l>>3]=+c[l>>3]-n;return}function aS(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0,n=0,f=0;a=t[A+8>>2]|0;n=t[A>>2]|0;i=t[A+4>>2]|0;A=a;while(1){if(!A)break;e=a;while(1){if(!e)break;if((A|0)!=(e|0))eS(t[A>>2]|0,t[e>>2]|0);e=t[e+4>>2]|0}A=t[A+4>>2]|0}f=n+-1|0;e=i+-1|0;tS(r,f,e,a);tS(r,f,i,a);A=i+1|0;tS(r,f,A,a);tS(r,n,e,a);tS(r,n,A,a);n=n+1|0;tS(r,n,e,a);tS(r,n,i,a);tS(r,n,A,a);return 0}function tS(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0.0,n=0.0,f=0.0,l=0,s=0,o=0,u=0;e=Fq(e,A,r)|0;if((i|0)!=0&(e|0)!=0){s=e+8|0;do{r=t[i>>2]|0;l=r+16|0;e=s;while(1){e=t[e>>2]|0;if(!e)break;A=t[e>>2]|0;u=t[(t[A+16>>2]|0)+132>>2]|0;o=t[(t[l>>2]|0)+132>>2]|0;a=+c[u>>3]-+c[o>>3];n=+c[u+8>>3]-+c[o+8>>3];f=n*n+a*a;if(f<+c[23246])iS(r,A,a,n,f);e=e+4|0}i=t[i+4>>2]|0}while((i|0)!=0)}return}function nS(e,A){e=e|0;A=A|0;var r=0,a=0,n=0,f=0,l=0;f=h;h=h+16|0;n=f;r=Hw(e,92507)|0;if(0)G3(91116,8,1,t[15712]|0)|0;if(!((r|0)!=0?(i[r>>0]|0)!=0:0))r=91125;a=C1(r,58)|0;do{if(!a)a=0;else{if((a|0)!=(r|0)?((i[r>>0]|0)+-48|0)>>>0>=10:0){a=0;break}l=K3(r)|0;r=a+1|0;a=(l|0)>0?l:0}}while(0);if(0){l=t[15712]|0;t[n>>2]=a;t[n+4>>2]=r;a3(l,91133,n)|0}if(!((a|0)!=0?!(fS(e,A,a)|0):0))eU(e,r)|0;h=f;return}function fS(e,A,r){e=e|0;A=A|0;r=r|0;var a=0,n=0,f=0,l=0,o=0.0,u=0.0,b=0.0,w=0.0,k=0.0,d=0,v=0,g=0;g=h;h=h+64|0;d=g;f=g+40|0;v=gk(e)|0;l=mk(e)|0;Kj(f,e);t[46842]=t[f>>2];t[46843]=t[f+4>>2];t[46844]=t[f+8>>2];if(i[187376]|0){s[46842]=+s[46842]*.013888888888888888;s[46843]=+s[46843]*.013888888888888888}a=lS(e)|0;e:do{if(!a)a=0;else{f=d;n=f+40|0;do{t[f>>2]=t[A>>2];f=f+4|0;A=A+4|0}while((f|0)<(n|0));f=d+16|0;k=+c[f>>3];b=+(l|0)*2.0;w=1.0/+(P(v+-1|0,v)|0);n=0;u=k;while(1){if(!((a|0)!=0&(n|0)<(r|0)))break e;sS(v,d);o=+c[23253]*+c[170];c[23254]=o;c[23255]=b*o*w;A=0;while(1){if((A|0)>=(t[46512]|0))break;o=+cS(A);if(o<=0.0)break;a=oS(e,o)|0;if(!a){a=0;break}else A=A+1|0}o=u+k;c[f>>3]=o;n=n+1|0;u=o}}}while(0);h=g;return a|0}function lS(e){e=e|0;var A=0,r=0,i=0,a=0;A=0;a=sd(e)|0;while(1){if(!a)break;else i=a;while(1){r=cd(e,i)|0;if(!r)break;i=r;A=(hS(a,r)|0)+A|0}a=cd(e,a)|0}return A|0}function sS(e,A){e=e|0;A=A|0;var r=0.0,i=0.0,a=0.0;i=+c[A+16>>3];c[171]=i;t[344]=t[A>>2];a=+c[A+8>>3];c[23257]=a;t[46512]=t[A+32>>2];r=+c[A+24>>3];if(r>0.0)c[170]=r;c[23253]=i*i;if(a==0.0)c[23257]=+D(+ +(e|0))*.2*i;return}function cS(e){e=e|0;var A=0;A=t[344]|0;return+(+c[23257]*+(A-e|0)/+(A|0))}function oS(e,A){e=e|0;A=+A;var r=0,a=0,n=0,f=0.0,l=0,s=0.0,o=0.0,u=0.0;r=sd(e)|0;while(1){if(!r)break;l=(t[(t[r+16>>2]|0)+112>>2]|0)+16|0;t[l>>2]=0;t[l+4>>2]=0;t[l+8>>2]=0;t[l+12>>2]=0;r=cd(e,r)|0}r=0;l=sd(e)|0;while(1){if(!l)break;else n=l;while(1){a=cd(e,n)|0;if(!a)break;n=a;r=(uS(l,a)|0)+r|0}a=Ow(e,l)|0;while(1){if(!a)break;bS(l,t[((t[a>>2]&3|0)==2?a:a+-48|0)+40>>2]|0);a=qw(e,a)|0}l=cd(e,l)|0}e:do{if(!r)r=0;else{u=A*A;n=sd(e)|0;while(1){if(!n)break e;a=t[n+16>>2]|0;if((i[a+119>>0]|0)!=3){l=t[a+112>>2]|0;s=+c[l+16>>3];f=+c[l+24>>3];o=f*f+s*s;if(o>2]|0;c[a>>3]=+c[a>>3]+s}else{o=+D(+o);a=t[a+132>>2]|0;c[a>>3]=+c[a>>3]+s*A/o;f=f*A/o}l=a+8|0;c[l>>3]=+c[l>>3]+f}n=cd(e,n)|0}}}while(0);return r|0}function uS(e,A){e=e|0;A=A|0;var r=0.0,i=0.0,a=0,n=0;n=t[(t[A+16>>2]|0)+132>>2]|0;a=t[(t[e+16>>2]|0)+132>>2]|0;r=+c[n>>3]-+c[a>>3];i=+c[n+8>>3]-+c[a+8>>3];return kS(e,A,r,i,i*i+r*r)|0}function bS(e,A){e=e|0;A=A|0;var r=0.0,i=0.0,a=0,n=0.0,f=0,l=0.0,s=0.0,o=0,u=0;if(!(hS(e,A)|0)){f=t[A+16>>2]|0;u=t[f+132>>2]|0;a=t[e+16>>2]|0;o=t[a+132>>2]|0;i=+c[u>>3]-+c[o>>3];r=+c[u+8>>3]-+c[o+8>>3];n=+D(+(r*r+i*i));l=+wS(e);l=+wS(A)+l;s=n-l;n=s*s/((+c[171]+l)*n);i=n*i;A=t[f+112>>2]|0;e=A+16|0;c[e>>3]=+c[e>>3]-i;r=n*r;A=A+24|0;c[A>>3]=+c[A>>3]-r;A=t[a+112>>2]|0;e=A+16|0;c[e>>3]=+c[e>>3]+i;A=A+24|0;c[A>>3]=+c[A>>3]+r}return}function hS(e,A){e=e|0;A=A|0;var r=0.0,a=0.0,n=0.0,f=0.0,l=0,o=0;l=t[A+16>>2]|0;o=t[l+132>>2]|0;A=t[e+16>>2]|0;e=t[A+132>>2]|0;n=+c[o>>3]-+c[e>>3];f=+c[o+8>>3]-+c[e+8>>3];f=f<0.0?-f:f;e=(i[187376]|0)==0;r=+c[A+32>>3];if(e){a=+s[46842];r=r*.5*a;a=+c[l+32>>3]*.5*a}else{a=+s[46842];r=r*.5+a;a=+c[l+32>>3]*.5+a}if(!((n<0.0?-n:n)<=a+r))A=0;else{r=+c[A+40>>3];if(e){n=+s[46843];a=r*.5*n;r=+c[l+40>>3]*.5*n}else{n=+s[46843];a=r*.5+n;r=+c[l+40>>3]*.5+n}A=f<=r+a&1}return A|0}function wS(e){e=e|0;var A=0.0,r=0.0;e=t[e+16>>2]|0;A=+c[e+32>>3];if(!(i[187376]|0)){r=A*.5*+s[46842];A=+c[e+40>>3]*.5*+s[46843]}else{r=A*.5+ +s[46842];A=+c[e+40>>3]*.5+ +s[46843]}return+ +D(+(A*A+r*r))}function kS(e,A,r,i,a){e=e|0;A=A|0;r=+r;i=+i;a=+a;var n=0,f=0;while(1){if(!(a==0.0))break;a=+(5-((t8()|0)%10|0)|0);i=+(5-((t8()|0)%10|0)|0);r=a;a=i*i+a*a}n=hS(e,A)|0;a=((n|0)==0?+c[23255]:+c[23254])/a;r=a*r;A=t[(t[A+16>>2]|0)+112>>2]|0;f=A+16|0;c[f>>3]=+c[f>>3]+r;a=a*i;A=A+24|0;c[A>>3]=+c[A>>3]+a;A=t[(t[e+16>>2]|0)+112>>2]|0;e=A+16|0;c[e>>3]=+c[e>>3]-r;A=A+24|0;c[A>>3]=+c[A>>3]-a;return n|0}function dS(e){e=e|0;DJ(e,2);a[(t[e+16>>2]|0)+176>>1]=2;t[47137]=2;vS(e);return}function vS(e){e=e|0;var A=0,r=0,i=0,a=0;i=KF((gk(e)|0)<<2)|0;A=KF(((gk(e)|0)<<2)+4|0)|0;a=e+16|0;t[(t[a>>2]|0)+152>>2]=A;A=sd(e)|0;r=0;while(1){if(!A)break;xJ(A);t[(t[A+16>>2]|0)+112>>2]=i+(r<<2);t[(t[(t[a>>2]|0)+152>>2]|0)+(r<<2)>>2]=A;A=cd(e,A)|0;r=r+1|0}r=sd(e)|0;while(1){if(!r)break;A=Ow(e,r)|0;while(1){if(!A)break;gS(A);A=qw(e,A)|0}r=cd(e,r)|0}return}function gS(e){e=e|0;var A=0.0;Sd(e,137460,176,1)|0;Mx(e)|0;A=+wx(e,t[47174]|0,1.0,0.0);c[(t[e+16>>2]|0)+128>>3]=A;return}function mS(e,A){e=e|0;A=A|0;var r=0,a=0,n=0,f=0,l=0,s=0,c=0,o=0,u=0;u=h;h=h+16|0;o=u+4|0;c=u;i[o>>0]=i[18596]|0;i[o+1>>0]=i[18597]|0;i[o+2>>0]=i[18598]|0;i[o+3>>0]=i[18599]|0;o=hk(91156,o,0)|0;Sd(o,91164,280,1)|0;t[(t[e+16>>2]|0)+140>>2]=o;r=sd(e)|0;while(1){if(!r)break;a=r+16|0;if(!(t[t[(t[a>>2]|0)+112>>2]>>2]|0)){s=pS(o,Mk(r)|0,r)|0;t[t[(t[a>>2]|0)+112>>2]>>2]=s}r=cd(e,r)|0}a=sd(e)|0;while(1){if(!a)break;r=Ow(e,a)|0;while(1){if(!r)break;f=t[r>>2]&3;n=t[t[(t[(t[((f|0)==3?r:r+48|0)+40>>2]|0)+16>>2]|0)+112>>2]>>2]|0;f=t[t[(t[(t[((f|0)==2?r:r+-48|0)+40>>2]|0)+16>>2]|0)+112>>2]>>2]|0;if((n|0)!=(f|0))Sd(lk(o,n,f,0,1)|0,137460,176,1)|0;r=qw(e,r)|0}a=cd(e,a)|0}s=Lp(o,c,0)|0;a=0;while(1){if((a|0)>=(t[c>>2]|0))break;f=t[s+(a<<2)>>2]|0;r=sd(f)|0;while(1){if(!r)break;n=Ow(e,t[t[(t[r+16>>2]|0)+112>>2]>>2]|0)|0;while(1){if(!n)break;l=t[t[(t[(t[((t[n>>2]&3|0)==2?n:n+-48|0)+40>>2]|0)+16>>2]|0)+112>>2]>>2]|0;if((r|0)!=(l|0)){l=lk(o,r,l,0,1)|0;Sd(l,137460,176,1)|0;uk(f,l,1)|0}n=qw(e,n)|0}r=cd(f,r)|0}a=a+1|0}r=sd(o)|0;while(1){if(!r)break;a=Ow(o,r)|0;while(1){if(!a)break;e=KF(8)|0;t[(t[a+16>>2]|0)+120>>2]=e;a=qw(o,a)|0}r=cd(o,r)|0}t[A>>2]=t[c>>2];h=u;return s|0}function pS(e,A,r){e=e|0;A=A|0;r=r|0;var i=0;A=gd(e,A,1)|0;Sd(A,137447,304,1)|0;i=KF(40)|0;e=A+16|0;t[(t[e>>2]|0)+112>>2]=i;i=KF(t[47137]<<3)|0;e=t[e>>2]|0;t[e+132>>2]=i;i=t[r+16>>2]|0;c[e+88>>3]=+c[i+88>>3];c[e+96>>3]=+c[i+96>>3];c[e+80>>3]=+c[i+80>>3];t[t[e+112>>2]>>2]=r;return A|0}function ES(e){e=e|0;var A=0,r=0,i=0,a=0,n=0,f=0,l=0;f=h;h=h+48|0;A=f+32|0;i=f;if(gk(e)|0){n=mS(e,A)|0;a=t[A>>2]|0;A=t[n>>2]|0;if((a|0)==1){Au(A,e);BS(t[n>>2]|0);AU(e)|0}else{r=t[A+60>>2]|0;cE(e,2,8,i)|0;A=0;while(1){if((A|0)>=(a|0))break;l=t[n+(A<<2)>>2]|0;Au(l,e);AU(l)|0;A=A+1|0}sE(a,n,r,i)|0;A=0;while(1){if((A|0)>=(a|0))break;BS(t[n+(A<<2)>>2]|0);A=A+1|0}}G2(n)}h=f;return}function BS(e){e=e|0;var A=0,r=0,i=0;A=sd(e)|0;while(1){if(!A)break;r=t[A+16>>2]|0;i=t[r+132>>2]|0;r=t[(t[(t[t[r+112>>2]>>2]|0)+16>>2]|0)+132>>2]|0;c[r>>3]=+c[i>>3];c[r+8>>3]=+c[i+8>>3];A=cd(e,A)|0}return}function yS(e){e=e|0;if(gk(e)|0){dS(e);ES(e);G2(t[(t[(sd(e)|0)+16>>2]|0)+112>>2]|0);TH(e);MV(e)}return}function CS(e){e=e|0;var A=0,r=0,i=0;A=sd(e)|0;if(A|0){i=e+16|0;IS(t[(t[i>>2]|0)+140>>2]|0);while(1){if(!A)break;r=Ow(e,A)|0;while(1){if(!r)break;bJ(r);r=qw(e,r)|0}oJ(A);A=cd(e,A)|0}G2(t[(t[i>>2]|0)+152>>2]|0);if((yd(e)|0)!=(e|0))qd(e,0,137483)}return}function IS(e){e=e|0;var A=0,r=0;r=sd(e)|0;while(1){if(!r)break;A=Ow(e,r)|0;while(1){if(!A)break;G2(t[(t[A+16>>2]|0)+120>>2]|0);A=qw(e,A)|0}A=r+16|0;G2(t[(t[A>>2]|0)+112>>2]|0);G2(t[(t[A>>2]|0)+132>>2]|0);r=cd(e,r)|0}vk(e)|0;return}function ZS(e){e=e|0;var A=0,r=0.0,a=0.0,n=0,f=0,l=0,o=0,u=0,b=0,w=0,k=0,d=0,v=0;v=h;h=h+112|0;o=v+40|0;u=v+16|0;d=v+100|0;b=v;f=v+88|0;w=v+56|0;GS(e);n=(t[47137]|0)==2;A=n&1;if(gk(e)|0){k=VS()|0;LS(e,k);Ij(e,u,0)|0;if(n&(t[u>>2]|0)==18){t[k+124>>2]=t[u+8>>2];c[k+144>>3]=+c[u+16>>3];Kj(f,e);if(!(i[f+8>>0]|0)){a=.05555555555555555;r=.05555555555555555}else{a=+s[f+4>>2]*.013888888888888888;r=+s[f>>2]*.013888888888888888}c[b>>3]=r;c[b+8>>3]=a;A=0}else t[k+124>>2]=-1;if(0)RS(k);l=Lp(e,d,0)|0;if((t[d>>2]|0)==1){t[o>>2]=t[b>>2];t[o+4>>2]=t[b+4>>2];t[o+8>>2]=t[b+8>>2];t[o+12>>2]=t[b+12>>2];QS(e,k,o);if(A|0)Lj(e,u)|0;TH(e);A=0}else{cE(e,2,8,w)|0;t[w+12>>2]=1;f=(A|0)==0;n=0;while(1){A=t[d>>2]|0;if((n|0)>=(A|0))break;A=t[l+(n<<2)>>2]|0;Mp(A)|0;t[o>>2]=t[b>>2];t[o+4>>2]=t[b+4>>2];t[o+8>>2]=t[b+8>>2];t[o+12>>2]=t[b+12>>2];QS(A,k,o);if(!f)Lj(A,u)|0;DJ(A,2);TH(A);n=n+1|0}sE(A,l,e,w)|0;A=0}while(1){if((A|0)>=(t[d>>2]|0))break;Ed(e,t[l+(A<<2)>>2]|0)|0;A=A+1|0}G2(l);NS(k)}MV(e);h=v;return}function GS(e){e=e|0;var A=0,r=0;DJ(e,2);A=hx(e,zw(e,0,91368,0)|0,2,2)|0;r=(hx(e,zw(e,0,91374,0)|0,A,2)|0)&65535;a[(t[(yd(e)|0)+16>>2]|0)+176>>1]=r;if((f[(t[(yd(e)|0)+16>>2]|0)+176>>1]|0)<10)r=a[(t[(yd(e)|0)+16>>2]|0)+176>>1]|0;else r=10;a[(t[(yd(e)|0)+16>>2]|0)+176>>1]=r;r=r&65535;t[47137]=r;a[(t[(yd(e)|0)+16>>2]|0)+178>>1]=(A|0)<(r|0)?A:r;YS(e);return}function LS(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0;n=h;h=h+16|0;a=n+8|0;r=n+12|0;i=A+108|0;t[r>>2]=t[i>>2];if((AH(e,2,r)|0)!=2)nw(0,91169,n)|0;t[i>>2]=t[r>>2];c[A+24>>3]=+wx(e,zw(e,0,91202,0)|0,-1.0,0.0);c[A>>3]=-+wx(e,zw(e,0,91204,0)|0,1.0001234,0.0);t[A+40>>2]=hx(e,zw(e,0,91219,0)|0,2147483647,0)|0;t[A+120>>2]=zS(e,zw(e,0,91226,0)|0)|0;t[A+132>>2]=WS(e,zw(e,0,91236,0)|0)|0;t[A+136>>2]=0;t[A+112>>2]=(px(Hw(e,91245)|0,0)|0)&255;t[A+128>>2]=(px(Hw(e,91254)|0,1)|0)&255;c[A+152>>3]=+wx(e,zw(e,0,91269,0)|0,0.0,-1797693134862315708145274.0e284);r=hx(e,zw(e,0,91278,0)|0,0,0)|0;e=A+160|0;t[e>>2]=r;if((r|0)>4){t[a>>2]=r;nw(0,91291,a)|0;t[e>>2]=0}h=n;return}function QS(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0,n=0,f=0,l=0,s=0,o=0,u=0,b=0,w=0,k=0;k=h;h=h+48|0;a=k;u=k+32|0;l=k+28|0;n=k+24|0;w=k+20|0;b=k+16|0;t[n>>2]=0;t[w>>2]=0;t[b>>2]=0;f=A+136|0;i=t[47137]|0;if((t[f>>2]|0)==1)o=Bj(e,i,b)|0;else o=Bj(e,i,0)|0;do{if((t[A+124>>2]|0)>-1)if((t[A+160>>2]|0)>0){t[a>>2]=t[r>>2];t[a+4>>2]=t[r+4>>2];t[a+8>>2]=t[r+8>>2];t[a+12>>2]=t[r+12>>2];s=Ej(e,a,n,w)|0;break}else{t[a>>2]=t[r>>2];t[a+4>>2]=t[r+4>>2];t[a+8>>2]=t[r+8>>2];t[a+12>>2]=t[r+12>>2];s=Ej(e,a,0,0)|0;break}else s=0}while(0);i=DS(e)|0;t[u>>2]=i;switch(t[f>>2]|0){case 1:case 0:{sj(t[47137]|0,o,t[b>>2]|0,A,0,s,i,t[n>>2]|0,t[w>>2]|0,l);break}case 5:{pj(t[47137]|0,o,i,l);break}case 4:{i=t[b>>2]|0;if(!i)i=Ho(o)|0;else i=bK(i,0)|0;t[b>>2]=i;kj(t[47137]|0,o,i,u,1,200,.001,l);break}default:{}}i=sd(e)|0;while(1){if(!i)break;r=t[47137]|0;n=t[i+16>>2]|0;A=(t[u>>2]|0)+((P(t[n+120>>2]|0,r)|0)<<3)|0;n=n+132|0;a=0;while(1){if((a|0)>=(r|0))break;c[(t[n>>2]|0)+(a<<3)>>3]=+c[A+(a<<3)>>3];a=a+1|0}i=cd(e,i)|0}G2(s);G2(t[u>>2]|0);iK(o);i=t[b>>2]|0;if(i|0)iK(i);i=t[w>>2]|0;if(i|0)G2(i);h=k;return}function DS(e){e=e|0;var A=0,r=0,a=0,n=0,f=0,l=0;l=t[47137]|0;l=KF(P(l<<3,gk(e)|0)|0)|0;e:do{if(zw(e,1,102623,0)|0){a=sd(e)|0;while(1){if(!a)break e;A=t[a+16>>2]|0;A:do{if(i[A+119>>0]|0){n=t[47137]|0;f=P(n,t[A+120>>2]|0)|0;r=A+132|0;A=0;while(1){if((A|0)>=(n|0))break A;c[l+(f+A<<3)>>3]=+c[(t[r>>2]|0)+(A<<3)>>3];A=A+1|0}}}while(0);a=cd(e,a)|0}}}while(0);return l|0}function zS(e,A){e=e|0;A=A|0;do{if(A){e=Pw(e,A)|0;A=i[e>>0]|0;if((A+-48|0)>>>0<10){e=K3(e)|0;e=(e|0)<5?e:0;break}if(V1(A)|0)if(N1(e,91330)|0)if(N1(e,91339)|0)if(N1(e,135709)|0)if(!(N1(e,91350)|0))e=3;else{e=(N1(e,91361)|0)==0;e=e?4:0}else e=0;else e=1;else e=2;else e=0}else e=0}while(0);return e|0}function WS(e,A){e=e|0;A=A|0;do{if(A){e=Pw(e,A)|0;A=i[e>>0]|0;if((A+-48|0)>>>0<10){e=K3(e)|0;e=e>>>0<3?e:1;break}if(V1(A)|0)if((N1(e,135709)|0)!=0?(N1(e,137308)|0)!=0:0)if(((N1(e,99730)|0)!=0?(N1(e,107652)|0)!=0:0)?(N1(e,107657)|0)!=0:0){e=(N1(e,91325)|0)==0;e=e?2:1}else e=1;else e=0;else e=1}else e=1}while(0);return e|0}function YS(e){e=e|0;var A=0,r=0;A=sd(e)|0;while(1){if(!A)break;xJ(A);A=cd(e,A)|0}r=sd(e)|0;while(1){if(!r)break;A=Ow(e,r)|0;while(1){if(!A)break;FS(A);A=qw(e,A)|0}r=cd(e,r)|0}return}function FS(e){e=e|0;Sd(e,137460,176,1)|0;Mx(e)|0;return}function MS(e){e=e|0;var A=0,r=0;r=sd(e)|0;while(1){if(!r)break;A=Ow(e,r)|0;while(1){if(!A)break;bJ(A);A=qw(e,A)|0}oJ(r);r=cd(e,r)|0}return}function VS(){var e=0,A=0;e=$F(168)|0;c[e>>3]=-1.0001234;c[e+8>>3]=1.0;t[e+16>>2]=1;c[e+24>>3]=-1.0;c[e+32>>3]=.2;t[e+40>>2]=0;t[e+44>>2]=4;t[e+48>>2]=1;t[e+52>>2]=45;t[e+56>>2]=10;c[e+64>>3]=.6;c[e+72>>3]=.001;t[e+80>>2]=500;c[e+88>>3]=.9;c[e+96>>3]=.1;t[e+104>>2]=1;t[e+108>>2]=123;A=e+112|0;t[A>>2]=0;t[A+4>>2]=0;t[A+8>>2]=0;t[A+12>>2]=0;t[e+128>>2]=1;t[e+132>>2]=3;t[e+136>>2]=0;c[e+144>>3]=-4.0;c[e+152>>3]=0.0;t[e+160>>2]=0;return e|0}function NS(e){e=e|0;G2(e);return}function RS(e){e=e|0;var A=0,r=0,i=0,a=0,n=0,f=0.0,l=0,s=0,o=0,u=0,b=0,w=0,k=0,d=0;A=h;h=h+176|0;r=A+160|0;a=A+152|0;n=A+128|0;s=A+112|0;l=A+88|0;o=A+64|0;u=A+56|0;b=A+40|0;k=A+24|0;w=A+16|0;d=A;i=t[15712]|0;G3(91378,27,1,i)|0;f=+c[e+8>>3];c[d>>3]=+c[e>>3];c[d+8>>3]=f;a3(i,91406,d)|0;d=t[e+108>>2]|0;t[w>>2]=t[e+16>>2];t[w+4>>2]=d;a3(i,91457,w)|0;f=+c[e+32>>3];c[k>>3]=+c[e+24>>3];c[k+8>>3]=f;a3(i,91484,k)|0;k=t[e+44>>2]|0;w=t[e+48>>2]|0;t[b>>2]=t[e+40>>2];t[b+4>>2]=k;t[b+8>>2]=w;a3(i,91507,b)|0;b=t[e+56>>2]|0;t[u>>2]=t[e+52>>2];t[u+4>>2]=b;a3(i,91558,u)|0;f=+c[e+72>>3];u=t[e+80>>2]|0;c[o>>3]=+c[e+64>>3];c[o+8>>3]=f;t[o+16>>2]=u;a3(i,91591,o)|0;f=+c[e+96>>3];o=t[e+104>>2]|0;c[l>>3]=+c[e+88>>3];c[l+8>>3]=f;t[l+16>>2]=o;a3(i,91649,l)|0;l=t[e+116>>2]|0;f=+c[e+152>>3];t[s>>2]=t[e+112>>2];t[s+4>>2]=l;c[s+8>>3]=f;a3(i,91695,s)|0;s=t[e+124>>2]|0;l=t[e+128>>2]|0;f=+c[e+144>>3];t[n>>2]=t[17804+(t[e+120>>2]<<2)>>2];t[n+4>>2]=s;t[n+8>>2]=l;c[n+16>>3]=f;a3(i,91748,n)|0;n=t[17848+(t[e+136>>2]<<2)>>2]|0;t[a>>2]=t[17832+(t[e+132>>2]<<2)>>2];t[a+4>>2]=n;a3(i,91813,a)|0;t[r>>2]=t[e+160>>2];a3(i,91843,r)|0;h=A;return}function xS(e){e=e|0;G2(e);return}function JS(e){e=e|0;var A=0;A=$F(184)|0;t[A>>2]=e;t[A+176>>2]=0;return A|0}function HS(e,A){e=e|0;A=+A;var r=0,i=0,a=0;i=t[e>>2]|0;c[e+8+(i<<3)>>3]=A;a=e+176|0;e:do{switch(t[a>>2]|0){case 0:{r=t[e>>2]|0;if((r|0)==20){t[a>>2]=-1;r=19}else{t[a>>2]=1;r=(r|0)>19?20:r+1|0}t[e>>2]=r;break}case 1:{r=t[e>>2]|0;if((r|0)<20?+c[e+8+(i+-1<<3)>>3]>A:0){t[e>>2]=r+1;break e}else{t[e>>2]=r+-1;t[a>>2]=-1;break e}}default:{r=t[e>>2]|0;if((r|0)>0?+c[e+8+(i+1<<3)>>3]>A:0){t[e>>2]=r+-1;break e}else{t[e>>2]=r+1;t[a>>2]=1;break e}}}}while(0);return}function PS(e){e=e|0;return t[e>>2]|0}function XS(e,A,r){e=e|0;A=A|0;r=r|0;var i=0.0,a=0.0,n=0,f=0,l=0,s=0,o=0,u=0,b=0,h=0,w=0,k=0.0;h=t[e+20>>2]|0;w=t[e+24>>2]|0;u=t[e>>2]|0;b=t[h+(u<<2)>>2]|0;if(!b)i=1.0;else{e=0;i=0.0;e:while(1){if((e|0)>=(u|0))break;l=e+1|0;s=t[h+(l<<2)>>2]|0;o=P(e,A)|0;f=t[h+(e<<2)>>2]|0;while(1){if((f|0)>=(s|0)){e=l;continue e}n=w+(f<<2)|0;e=0;a=0.0;while(1){if((e|0)>=(A|0))break;k=+c[r+(e+o<<3)>>3]-+c[r+((P(t[n>>2]|0,A)|0)<<3)>>3];e=e+1|0;a=k*k+a}f=f+1|0;i=+D(+a)+i}}i=i/+(b|0)}return+i}function SS(e,A,r){e=e|0;A=A|0;r=r|0;var i=0;i=A+10|0;if((t[r>>2]|0)<=(A|0)){t[r>>2]=i;t[e>>2]=AM(t[e>>2]|0,i<<3)|0}return}function jS(e,A,r){e=e|0;A=A|0;r=r|0;var i=0;i=A+10|0;if((t[r>>2]|0)<=(A|0)){t[r>>2]=i;t[e>>2]=AM(t[e>>2]|0,i<<2)|0}return}function US(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0.0,t=0.0,n=0.0,f=0,l=0,s=0;s=h;h=h+16|0;l=s;f=P(i,A)|0;A=P(r,A)|0;i=0;while(1){if((i|0)==2)break;c[l+(i<<3)>>3]=+c[e+(i+f<<3)>>3]-+c[e+(i+A<<3)>>3];i=i+1|0}n=+c[l>>3];t=+c[l+8>>3];do{if(!((n>=0.0?n:-n)<=(t>=0.0?t:-t)*1.0e-05)){a=+N(+(t/n));if(n>0.0){if(!(t<0.0))break;a=a+6.283185307179586;break}else{if(!(n<0.0))break;a=a+3.141592653589793;break}}else a=t>0.0?1.5707963267948966:4.71238898038469}while(0);h=s;return+a}function TS(e,A){e=e|0;A=A|0;var r=0.0,i=0.0;i=+c[e>>3];r=+c[A>>3];return(i>r?1:(i>31)|0}function OS(e,A,r,i,a,n){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;n=n|0;var f=0,l=0.0,s=0,o=0,u=0.0,b=0,w=0.0,k=0.0,d=0,v=0,g=0,m=0,p=0.0,E=0,B=0,y=0,C=0.0,I=0.0,Z=0,G=0,L=0,Q=0,W=0,Y=0,F=0,M=0,V=0,N=0.0,R=0,x=0,J=0,H=0.0,X=0,S=0.0,j=0,U=0,T=0,O=0,_=0,q=0,K=0,$=0,ee=0.0;K=h;h=h+80|0;q=K+32|0;_=K;w=+c[r>>3];o=r+24|0;u=+c[o>>3];b=r+32|0;l=+c[b>>3];H=+c[r+72>>3];X=t[r+80>>2]|0;S=+c[r+88>>3];k=+c[r+96>>3];j=t[r+104>>2]|0;U=r+56|0;f=t[U>>2]|0;do{if(!((A|0)==0|(X|0)<1)?(T=t[A+4>>2]|0,!((e|0)<1|(T|0)<1)):0){J=t[A>>2]|0;O=JS(f)|0;t[n>>2]=0;if((J|0)!=(T|0)){t[n>>2]=-100;xS(O);t[U>>2]=f;break}R=lK(A,1)|0;x=t[R+20>>2]|0;J=t[R+24>>2]|0;e:do{if(t[r+16>>2]|0){a8(t[r+108>>2]|0);s=P(T,e)|0;f=0;while(1){if((f|0)>=(s|0))break e;c[a+(f<<3)>>3]=+Xo();f=f+1|0}}}while(0);if(u<0.0){u=+XS(R,e,a);c[o>>3]=u}if(l<0.0){c[b>>3]=.2;l=.2}if(w>=0.0){c[r>>3]=-1.0;w=-1.0}N=+z(+u,+(1.0-w));I=+z(+l,+((2.0-w)*.3333333333333333))/u;Z=P(T,e<<3)|0;G=$F(Z)|0;L=$F(Z)|0;Q=r+116|0;W=r+64|0;Y=t[15712]|0;F=R+8|0;M=_+8|0;V=_+16|0;y=0;C=0.0;p=k;while(1){Q6(G|0,a|0,Z|0)|0;E=PS(O)|0;B=Tq(e,T,E,a,(t[Q>>2]|0)==0?0:i)|0;Pq(B,L,a,+c[W>>3],w,N,_,n);o=0;e:while(1){if((o|0)>=(T|0)){k=0.0;s=0;break}b=P(o,e)|0;d=L+(b<<3)|0;v=o+1|0;g=x+(v<<2)|0;s=t[x+(o<<2)>>2]|0;while(1){if((s|0)>=(t[g>>2]|0)){o=v;continue e}m=J+(s<<2)|0;f=t[m>>2]|0;A:do{if((f|0)!=(o|0)){l=+Ko(a,e,o,f)*I;f=0;while(1){if((f|0)>=(e|0))break A;k=l*(+c[a+(f+b<<3)>>3]-+c[a+((P(t[m>>2]|0,e)|0)+f<<3)>>3]);$=d+(f<<3)|0;c[$>>3]=+c[$>>3]-k;f=f+1|0}}}while(0);s=s+1|0}}while(1){if((s|0)>=(T|0))break;o=P(s,e)|0;b=L+(o<<3)|0;l=0.0;f=0;while(1){if((f|0)>=(e|0))break;ee=+c[b+(f<<3)>>3];l=ee*ee+l;f=f+1|0}l=+D(+l);k=l+k;e:do{if(l>0.0){l=1.0/l;f=0;while(1){if((f|0)>=(e|0)){f=0;break e}$=b+(f<<3)|0;c[$>>3]=+c[$>>3]*l;f=f+1|0}}else f=0}while(0);while(1){if((f|0)>=(e|0))break;$=a+(f+o<<3)|0;c[$>>3]=+c[$>>3]+ +c[b+(f<<3)>>3]*p;f=f+1|0}s=s+1|0}y=y+1|0;if(!B){if(0){$=t[F>>2]|0;t[q>>2]=y;c[q+8>>3]=p;c[q+16>>3]=k;t[q+24>>2]=$;c[q+32>>3]=u;a3(Y,92099,q)|0}}else{AK(B);HS(O,+c[M>>3]*.85+ +c[_>>3]+ +c[V>>3]*3.3)}p=+_S(j,p,k,C,S);if(!((y|0)<(X|0)&p>H))break;else C=k}if(t[r+112>>2]|0)qS(e,R,a);xS(O);t[U>>2]=E;G2(G);if((R|0)!=(A|0))iK(R);G2(L)}}while(0);h=K;return}function _S(e,A,r,i,a){e=e|0;A=+A;r=+r;i=+i;a=+a;do{if(e){if(r>=i){A=a*A;break}if(!(i*.95>2]|0;G=t[A+20>>2]|0;g=t[A+24>>2]|0;t[p>>2]=10;t[I>>2]=10;m=$F(Z<<2)|0;a=$F(80)|0;t[y>>2]=a;i=$F(40)|0;t[C>>2]=i;A=0;while(1){if((A|0)>=(Z|0)){u=0;d=a;s=i;b=i;o=a;break}t[m+(A<<2)>>2]=0;A=A+1|0}while(1){if((u|0)>=(Z|0))break;A=t[G+(u<<2)>>2]|0;e:do{if((((t[G+(u+1<<2)>>2]|0)-A|0)==1?(t[m+(u<<2)>>2]|0)==0:0)?(E=t[g+(A<<2)>>2]|0,B=m+(E<<2)|0,(t[B>>2]|0)==0):0){t[B>>2]=1;k=G+(E+1<<2)|0;u=0;v=0;n=0.0;w=t[G+(E<<2)>>2]|0;s=b;A=d;while(1){if((w|0)>=(t[k>>2]|0))break;i=g+(w<<2)|0;a=t[i>>2]|0;if(((t[G+(a+1<<2)>>2]|0)-(t[G+(a<<2)>>2]|0)|0)==1){t[m+(a<<2)>>2]=1;jS(C,v,p);n=+Ko(r,e,E,t[i>>2]|0)+n;s=t[C>>2]|0;t[s+(v<<2)>>2]=t[i>>2];i=u;a=v+1|0}else{SS(y,u,I);l=+US(r,e,E,t[i>>2]|0);A=t[y>>2]|0;c[A+(u<<3)>>3]=l;i=u+1|0;a=v;o=A}u=i;v=a;w=w+1|0}l=n/+(v|0);if((u|0)>0){KS(u,o);A=o}n=(v|0)>1?6.283185307179586/+(v+-1|0):0.0;i=0;f=0.0;while(1){if((i|0)>=(v|0)){b=s;a=s;break e}$S(r,e,l,f,E,t[s+(i<<2)>>2]|0);i=i+1|0;f=f+n}}else{i=u;a=s;A=d}}while(0);u=i+1|0;d=A;s=a}G2(m);G2(d);G2(s);h=L;return}function KS(e,A){e=e|0;A=A|0;_4(A,e,8,68);return}function $S(e,A,r,i,a,t){e=e|0;A=A|0;r=+r;i=+i;a=a|0;t=t|0;var n=0.0;n=+W(+i)*r;a=P(a,A)|0;t=P(t,A)|0;c[e+(t<<3)>>3]=n+ +c[e+(a<<3)>>3];i=+Y(+i)*r;c[e+(t+1<<3)>>3]=i+ +c[e+(a+1<<3)>>3];return}function ej(e,A,r,i,a,n){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;n=n|0;var f=0,l=0,s=0.0,o=0.0,u=0,b=0,h=0.0,w=0,k=0,d=0.0,v=0,g=0,m=0,p=0,E=0,B=0,y=0,C=0.0,I=0,Z=0.0,G=0.0,L=0,Q=0,W=0,Y=0,F=0,M=0,V=0,N=0,R=0,x=0.0,J=0,H=0.0,X=0,S=0,j=0,U=0,T=0.0;h=+c[r>>3];u=r+24|0;o=+c[u>>3];b=r+32|0;s=+c[b>>3];x=+c[r+72>>3];J=t[r+80>>2]|0;H=+c[r+88>>3];d=+c[r+96>>3];X=t[r+104>>2]|0;f=t[r+56>>2]|0;G3(92198,32,1,t[15712]|0)|0;if(!((A|0)==0|(J|0)<1)?(S=t[A>>2]|0,l=t[A+4>>2]|0,!((e|0)<1|(l|0)<1)):0){w=e<<3;j=$F(P(w,l)|0)|0;if((l|0)<(t[r+52>>2]|0)){Y=0;F=0;M=0;V=0;N=0;R=0}else{JS(f)|0;V=$F(e*80|0)|0;N=$F(80)|0;R=$F(80)|0;Y=R;F=N;M=V}t[n>>2]=0;if((S|0)==(l|0)){L=lK(A,1)|0;Q=t[L+20>>2]|0;W=t[L+24>>2]|0;e:do{if(t[r+16>>2]|0){a8(t[r+108>>2]|0);l=P(S,e)|0;f=0;while(1){if((f|0)>=(l|0))break e;c[a+(f<<3)>>3]=+Xo();f=f+1|0}}}while(0);if(o<0.0){o=+XS(L,e,a);c[u>>3]=o}if(s<0.0){c[b>>3]=.2;s=.2}if(h>=0.0){c[r>>3]=-1.0;h=-1.0}Z=1.0-h;G=+z(+o,+Z);C=+z(+s,+((2.0-h)*.3333333333333333))/o;I=$F(w)|0;m=P(S,w)|0;p=$F(m)|0;E=P(S,e)|0;B=r+116|0;y=(i|0)!=0;g=h==-1.0;v=0;h=0.0;while(1){f=0;while(1){if((f|0)>=(E|0))break;c[j+(f<<3)>>3]=0.0;f=f+1|0}Q6(p|0,a|0,m|0)|0;w=0;while(1){if((w|0)<(S|0))f=0;else{b=0;break}while(1){if((f|0)>=(e|0))break;c[I+(f<<3)>>3]=0.0;f=f+1|0}b=P(w,e)|0;e:do{if(y&(t[B>>2]|0)!=0){f=0;while(1){if((f|0)==(S|0)){f=0;break e}A:do{if((f|0)!=(w|0)){o=+qo(a,e,w,f);n=i+(f<<3)|0;u=P(f,e)|0;s=+z(+o,+Z);s=1.0/(g?o*o:s);l=0;while(1){if((l|0)>=(e|0))break A;k=I+(l<<3)|0;c[k>>3]=+c[n>>3]*G*(+c[a+(l+b<<3)>>3]-+c[a+(l+u<<3)>>3])*s+ +c[k>>3];l=l+1|0}}}while(0);f=f+1|0}}else{f=0;while(1){if((f|0)==(S|0)){f=0;break e}A:do{if((f|0)!=(w|0)){o=+qo(a,e,w,f);n=P(f,e)|0;s=+z(+o,+Z);s=1.0/(g?o*o:s);l=0;while(1){if((l|0)>=(e|0))break A;k=I+(l<<3)|0;c[k>>3]=(+c[a+(l+b<<3)>>3]-+c[a+(l+n<<3)>>3])*G*s+ +c[k>>3];l=l+1|0}}}while(0);f=f+1|0}}}while(0);while(1){if((f|0)>=(e|0))break;k=j+(f+b<<3)|0;c[k>>3]=+c[k>>3]+ +c[I+(f<<3)>>3];f=f+1|0}w=w+1|0}e:while(1){if((b|0)<(S|0))f=0;else{o=0.0;l=0;break}while(1){if((f|0)>=(e|0))break;c[I+(f<<3)>>3]=0.0;f=f+1|0}w=b+1|0;n=Q+(w<<2)|0;k=P(b,e)|0;l=t[Q+(b<<2)>>2]|0;while(1){if((l|0)>=(t[n>>2]|0)){f=0;break}u=W+(l<<2)|0;f=t[u>>2]|0;A:do{if((f|0)!=(b|0)){s=+Ko(a,e,b,f)*C;f=0;while(1){if((f|0)>=(e|0))break A;o=s*(+c[a+(f+k<<3)>>3]-+c[a+((P(t[u>>2]|0,e)|0)+f<<3)>>3]);U=I+(f<<3)|0;c[U>>3]=+c[U>>3]-o;f=f+1|0}}}while(0);l=l+1|0}while(1){if((f|0)>=(e|0)){b=w;continue e}U=j+(f+k<<3)|0;c[U>>3]=+c[U>>3]+ +c[I+(f<<3)>>3];f=f+1|0}}while(1){if((l|0)>=(S|0))break;n=P(l,e)|0;f=0;while(1){if((f|0)>=(e|0)){s=0.0;f=0;break}c[I+(f<<3)>>3]=+c[j+(f+n<<3)>>3];f=f+1|0}while(1){if((f|0)>=(e|0))break;T=+c[I+(f<<3)>>3];s=T*T+s;f=f+1|0}s=+D(+s);o=s+o;e:do{if(s>0.0){s=1.0/s;f=0;while(1){if((f|0)>=(e|0)){f=0;break e}U=I+(f<<3)|0;c[U>>3]=+c[U>>3]*s;f=f+1|0}}else f=0}while(0);while(1){if((f|0)>=(e|0))break;U=a+(f+n<<3)|0;c[U>>3]=+c[U>>3]+ +c[I+(f<<3)>>3]*d;f=f+1|0}l=l+1|0}v=v+1|0;d=+_S(X,d,o,h,H);if(!((v|0)<(J|0)&d>x))break;else h=o}if(t[r+112>>2]|0)qS(e,L,a);G2(p);if((L|0)!=(A|0))iK(L);G2(I)}else t[n>>2]=-100;if(M|0)G2(V);if(F|0)G2(N);if(Y|0)G2(R);G2(j)}return}function Aj(e,A,r,i,a,n){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;n=n|0;var f=0,l=0,s=0,o=0,u=0,b=0,w=0,k=0.0,d=0.0,v=0.0,g=0.0,m=0.0,p=0,E=0,B=0,y=0,C=0,I=0,Z=0,G=0.0,L=0,Q=0,W=0.0,Y=0.0,F=0,M=0,V=0,N=0,R=0.0,x=0.0,J=0,H=0,X=0,S=0,j=0,U=0.0,T=0,O=0.0,_=0,q=0,K=0,$=0,ee=0,Ae=0,re=0,ie=0,ae=0,te=0,ne=0,fe=0.0,le=0;ne=h;h=h+32|0;K=ne+24|0;$=ne+20|0;ie=ne+16|0;ae=ne+12|0;te=ne+8|0;j=ne;v=+c[r>>3];s=r+24|0;d=+c[s>>3];o=r+32|0;k=+c[o>>3];U=+c[r+72>>3];T=t[r+80>>2]|0;O=+c[r+88>>3];g=+c[r+96>>3];_=t[r+104>>2]|0;t[K>>2]=0;t[$>>2]=10;t[ie>>2]=0;t[ae>>2]=0;t[te>>2]=0;c[j>>3]=0.0;re=r+56|0;u=t[re>>2]|0;if(!((A|0)==0|(T|0)<1)?(q=t[A>>2]|0,f=t[A+4>>2]|0,!((e|0)<1|(f|0)<1)):0){if((f|0)<(t[r+52>>2]|0)){Ae=0;ee=0}else{Ae=JS(u)|0;t[ie>>2]=$F(e*80|0)|0;t[ae>>2]=$F(80)|0;t[te>>2]=$F(80)|0;ee=1}t[n>>2]=0;e:do{if((q|0)==(f|0)){b=lK(A,1)|0;J=t[b+20>>2]|0;H=t[b+24>>2]|0;A:do{if(t[r+16>>2]|0){a8(t[r+108>>2]|0);l=P(q,e)|0;f=0;while(1){if((f|0)>=(l|0))break A;c[a+(f<<3)>>3]=+Xo();f=f+1|0}}}while(0);if(d<0.0){d=+XS(b,e,a);c[s>>3]=d}if(k<0.0){c[o>>3]=.2;k=.2}if(v>=0.0){c[r>>3]=-1.0;v=-1.0}R=1.0-v;x=+z(+d,+R);Y=+z(+k,+((2.0-v)*.3333333333333333))/d;F=e<<3;X=$F(F)|0;F=P(q,F)|0;S=$F(F)|0;M=(ee|0)!=0;V=r+116|0;N=r+64|0;L=v==-1.0;Q=(i|0)!=0;W=1.0/+(q|0);f=0;Z=0;G=0.0;while(1){Z=Z+1|0;Q6(S|0,a|0,F|0)|0;if(M){f=PS(Ae)|0;u=f;f=Tq(e,q,f,a,(t[V>>2]|0)==0?0:i)|0}m=0.0;v=0.0;p=0;d=0.0;A:while(1){if((p|0)<(q|0))l=0;else break;while(1){if((l|0)>=(e|0))break;c[X+(l<<3)>>3]=0.0;l=l+1|0}C=p+1|0;o=J+(C<<2)|0;I=P(p,e)|0;s=t[J+(p<<2)>>2]|0;while(1){if((s|0)>=(t[o>>2]|0))break;w=H+(s<<2)|0;l=t[w>>2]|0;r:do{if((l|0)!=(p|0)){k=+Ko(a,e,p,l)*Y;l=0;while(1){if((l|0)>=(e|0))break r;fe=k*(+c[a+(l+I<<3)>>3]-+c[a+((P(t[w>>2]|0,e)|0)+l<<3)>>3]);y=X+(l<<3)|0;c[y>>3]=+c[y>>3]-fe;l=l+1|0}}}while(0);s=s+1|0}r:do{if(!M)if(Q&(t[V>>2]|0)!=0){l=0;while(1){if((l|0)==(q|0))break r;i:do{if((l|0)!=(p|0)){fe=+qo(a,e,p,l);o=i+(l<<3)|0;w=P(l,e)|0;k=+z(+fe,+R);k=1.0/(L?fe*fe:k);s=0;while(1){if((s|0)>=(e|0))break i;y=X+(s<<3)|0;c[y>>3]=+c[o>>3]*x*(+c[a+(s+I<<3)>>3]-+c[a+(s+w<<3)>>3])*k+ +c[y>>3];s=s+1|0}}}while(0);l=l+1|0}}else{l=0;while(1){if((l|0)==(q|0))break r;i:do{if((l|0)!=(p|0)){fe=+qo(a,e,p,l);o=P(l,e)|0;k=+z(+fe,+R);k=1.0/(L?fe*fe:k);s=0;while(1){if((s|0)>=(e|0))break i;y=X+(s<<3)|0;c[y>>3]=(+c[a+(s+I<<3)>>3]-+c[a+(s+o<<3)>>3])*x*k+ +c[y>>3];s=s+1|0}}}while(0);l=l+1|0}}else{Hq(f,+c[N>>3],a+(I<<3)|0,p,K,$,ie,ae,te,j,n);m=+c[j>>3]+m;y=t[K>>2]|0;v=v+ +(y|0);if(t[n>>2]|0){o=X;s=S;f=X;l=S;w=67;break e}o=t[te>>2]|0;w=t[ae>>2]|0;p=t[ie>>2]|0;l=0;while(1){if((l|0)>=(y|0))break r;fe=+c[o+(l<<3)>>3];fe=fe>1.0e-15?fe:1.0e-15;E=w+(l<<3)|0;B=P(l,e)|0;k=+z(+fe,+R);k=1.0/(L?fe*fe:k);s=0;while(1){if((s|0)>=(e|0))break;le=X+(s<<3)|0;c[le>>3]=+c[E>>3]*x*(+c[a+(s+I<<3)>>3]-+c[p+(s+B<<3)>>3])*k+ +c[le>>3];s=s+1|0}l=l+1|0}}}while(0);k=0.0;l=0;while(1){if((l|0)>=(e|0))break;fe=+c[X+(l<<3)>>3];k=fe*fe+k;l=l+1|0}k=+D(+k);d=k+d;r:do{if(k>0.0){k=1.0/k;l=0;while(1){if((l|0)>=(e|0)){l=0;break r}le=X+(l<<3)|0;c[le>>3]=+c[le>>3]*k;l=l+1|0}}else l=0}while(0);while(1){if((l|0)>=(e|0)){p=C;continue A}le=a+(l+I<<3)|0;c[le>>3]=+c[le>>3]+ +c[X+(l<<3)>>3]*g;l=l+1|0}}if(f|0){AK(f);HS(Ae,v*W*5.0+m*W)}g=+_S(_,g,d,G,O);if(!((Z|0)<(T|0)&g>U))break;else G=d}if(!(t[r+112>>2]|0)){o=X;s=S;l=S;f=X;w=66}else{qS(e,b,a);o=X;s=S;l=S;f=X;w=66}}else{t[n>>2]=-100;b=A;o=0;s=0;l=0;f=0;w=66}}while(0);if((w|0)==66)if(ee)w=67;if((w|0)==67){xS(Ae);t[re>>2]=u}if(s|0)G2(l);if((b|0)!=(A|0))iK(b);if(o|0)G2(f);f=t[ie>>2]|0;if(f|0)G2(f);f=t[ae>>2]|0;if(f|0)G2(f);f=t[te>>2]|0;if(f|0)G2(f)}h=ne;return}function rj(e,A,r,i,a,n,f,l){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;n=n|0;f=+f;l=l|0;var s=0,o=0,u=0,b=0,w=0.0,k=0,d=0.0,v=0,g=0.0,m=0.0,p=0.0,E=0,B=0,y=0.0,C=0,I=0,Z=0.0,G=0,L=0.0,Q=0.0,W=0,Y=0,F=0,M=0,V=0,N=0,R=0,x=0,J=0,H=0,X=0,S=0,j=0,U=0,T=0,O=0,_=0.0,q=0,K=0.0,$=0,ee=0,Ae=0,re=0,ie=0,ae=0,te=0,ne=0,fe=0.0,le=0;ne=h;h=h+48|0;b=ne+8|0;Ae=ne+40|0;re=ne+36|0;T=ne+32|0;ae=ne+28|0;te=ne+24|0;O=ne;w=+c[i>>3];k=i+32|0;d=+c[k>>3];_=+c[i+72>>3];q=t[i+80>>2]|0;K=+c[i+88>>3];g=+c[i+96>>3];$=t[i+104>>2]|0;t[Ae>>2]=0;t[re>>2]=10;t[T>>2]=0;t[ae>>2]=0;t[te>>2]=0;c[O>>3]=0.0;if(!((A|0)==0|(q|0)<1)?(ee=t[A>>2]|0,u=t[A+4>>2]|0,!((e|0)<1|(u|0)<1)):0){if((t[i+132>>2]|0)!=0?(u|0)>=(t[i+52>>2]|0):0){o=$F(e*80|0)|0;t[T>>2]=o;t[ae>>2]=$F(80)|0;t[te>>2]=$F(80)|0;v=1;s=o}else{v=0;s=0;o=0}t[l>>2]=0;if((ee|0)==(u|0)){U=lK(A,1)|0;if(!r){j=0;s=U}else{j=t[r+28>>2]|0;s=r}S=t[s+24>>2]|0;X=t[s+20>>2]|0;if(f<0.0){Q=+ij(ee,X,j);L=+(t[X+(ee<<2)>>2]|0);Z=+(ee|0);f=L/(Z*Z-L)*f/+z(+Q,+(w+1.0));H=t[15712]|0;c[b>>3]=Q;c[b+8>>3]=f;a3(H,92231,b)|0}e:do{if(t[i+16>>2]|0){G3(92253,24,1,t[15712]|0)|0;a8(t[i+108>>2]|0);o=P(ee,e)|0;s=0;while(1){if((s|0)>=(o|0))break e;c[n+(s<<3)>>3]=+Xo();s=s+1|0}}}while(0);aj(ee,e,n,X,S,j);if(d<0.0)c[k>>3]=.2;if(w>=0.0){c[i>>3]=-1.0;w=-1.0}J=e<<3;x=$F(J)|0;J=P(ee,J)|0;H=$F(J)|0;Y=(v|0)!=0;F=i+116|0;M=(j|0)==0;V=i+8|0;N=(a|0)!=0;R=w==-1.0;Q=1.0-w;W=i+64|0;s=0;G=0;L=0.0;w=1.0;Z=g;e:while(1){G=G+1|0;Q6(H|0,n|0,J|0)|0;if(Y)s=Tq(e,ee,10,n,(t[F>>2]|0)==0?0:a)|0;v=0;g=0.0;A:while(1){if((v|0)<(ee|0))o=0;else break;while(1){if((o|0)>=(e|0))break;c[x+(o<<3)>>3]=0.0;o=o+1|0}I=v+1|0;k=X+(I<<2)|0;C=P(v,e)|0;b=t[X+(v<<2)>>2]|0;while(1){if((b|0)>=(t[k>>2]|0))break;r=S+(b<<2)|0;o=t[r>>2]|0;r:do{if((o|0)!=(v|0)){y=+qo(n,e,v,o);if(!M)w=+c[j+(b<<3)>>3];d=+c[V>>3];i:do{if(!(d==2.0))if(d==1.0){d=(y-w)*(1.0/(w*w));m=1.0/y;o=0;while(1){if((o|0)>=(e|0))break i;p=d*(+c[n+(o+C<<3)>>3]-+c[n+((P(t[r>>2]|0,e)|0)+o<<3)>>3])*m;B=x+(o<<3)|0;c[B>>3]=+c[B>>3]-p;o=o+1|0}}else{d=1.0/+z(+w,+(d+1.0));m=y-w;p=1.0/y;o=0;while(1){if((o|0)>=(e|0))break i;fe=+c[n+(o+C<<3)>>3]-+c[n+((P(t[r>>2]|0,e)|0)+o<<3)>>3];fe=d*fe*+z(+m,+ +c[V>>3])*p;B=x+(o<<3)|0;c[B>>3]=+c[B>>3]-fe;o=o+1|0}}else{d=y-w;d=d*d*(1.0/(w*w*w));m=1.0/y;o=0;while(1){if((o|0)>=(e|0))break i;fe=d*(+c[n+(o+C<<3)>>3]-+c[n+((P(t[r>>2]|0,e)|0)+o<<3)>>3])*m;B=x+(o<<3)|0;c[B>>3]=+c[B>>3]-fe;o=o+1|0}}}while(0);if(N&(t[F>>2]|0)!=0){u=a+(b<<3)|0;d=+z(+y,+Q);d=1.0/(R?y*y:d);o=0;while(1){if((o|0)>=(e|0))break r;fe=+c[u>>3]*f*(+c[n+(o+C<<3)>>3]-+c[n+((P(t[r>>2]|0,e)|0)+o<<3)>>3])*d;B=x+(o<<3)|0;c[B>>3]=+c[B>>3]-fe;o=o+1|0}}else{d=+z(+y,+Q);d=1.0/(R?y*y:d);o=0;while(1){if((o|0)>=(e|0))break r;fe=(+c[n+(o+C<<3)>>3]-+c[n+((P(t[r>>2]|0,e)|0)+o<<3)>>3])*f*d;B=x+(o<<3)|0;c[B>>3]=+c[B>>3]-fe;o=o+1|0}}}}while(0);b=b+1|0}r:do{if(!Y)if(N&(t[F>>2]|0)!=0){o=0;while(1){if((o|0)==(ee|0)){d=0.0;o=0;break r}i:do{if((o|0)!=(v|0)){fe=+qo(n,e,v,o);r=a+(o<<3)|0;b=P(o,e)|0;d=+z(+fe,+Q);d=1.0/(R?fe*fe:d);u=0;while(1){if((u|0)>=(e|0))break i;B=x+(u<<3)|0;c[B>>3]=+c[r>>3]*f*(+c[n+(u+C<<3)>>3]-+c[n+(u+b<<3)>>3])*d+ +c[B>>3];u=u+1|0}}}while(0);o=o+1|0}}else{o=0;while(1){if((o|0)==(ee|0)){d=0.0;o=0;break r}i:do{if((o|0)!=(v|0)){fe=+qo(n,e,v,o);r=P(o,e)|0;d=+z(+fe,+Q);d=1.0/(R?fe*fe:d);u=0;while(1){if((u|0)>=(e|0))break i;B=x+(u<<3)|0;c[B>>3]=(+c[n+(u+C<<3)>>3]-+c[n+(u+r<<3)>>3])*f*d+ +c[B>>3];u=u+1|0}}}while(0);o=o+1|0}}else{Hq(s,+c[W>>3],n+(C<<3)|0,v,Ae,re,T,ae,te,O,l);r=t[Ae>>2]|0;if(t[l>>2]|0)break e;b=t[te>>2]|0;k=t[ae>>2]|0;v=t[T>>2]|0;o=0;while(1){if((o|0)>=(r|0)){d=0.0;o=0;break r}fe=+c[b+(o<<3)>>3];fe=fe>1.0e-15?fe:1.0e-15;E=k+(o<<3)|0;B=P(o,e)|0;d=+z(+fe,+Q);d=1.0/(R?fe*fe:d);u=0;while(1){if((u|0)>=(e|0))break;le=x+(u<<3)|0;c[le>>3]=+c[E>>3]*f*(+c[n+(u+C<<3)>>3]-+c[v+(u+B<<3)>>3])*d+ +c[le>>3];u=u+1|0}o=o+1|0}}}while(0);while(1){if((o|0)>=(e|0))break;fe=+c[x+(o<<3)>>3];d=fe*fe+d;o=o+1|0}d=+D(+d);g=d+g;r:do{if(d>0.0){d=1.0/d;o=0;while(1){if((o|0)>=(e|0)){o=0;break r}le=x+(o<<3)|0;c[le>>3]=+c[le>>3]*d;o=o+1|0}}else o=0}while(0);while(1){if((o|0)>=(e|0)){v=I;continue A}le=n+(o+C<<3)|0;c[le>>3]=+c[le>>3]+ +c[x+(o<<3)>>3]*Z;o=o+1|0}}if(s|0)AK(s);Z=+_S($,Z,g,L,K);if(!((G|0)<(q|0)&Z>_)){ie=83;break}else L=g}if((ie|0)==83?t[i+112>>2]|0:0)qS(e,U,n);G2(H);if((U|0)!=(A|0))iK(U);G2(x);s=t[T>>2]|0;o=s}else t[l>>2]=-100;if(o|0)G2(s);s=t[ae>>2]|0;if(s|0)G2(s);s=t[te>>2]|0;if(s|0)G2(s)}h=ne;return}function ij(e,A,r){e=e|0;A=A|0;r=r|0;var i=0.0,a=0,n=0,f=0,l=0.0;if(!r)i=1.0;else{a=0;i=0.0;e:while(1){if((a|0)>=(e|0))break;n=a+1|0;f=t[A+(n<<2)>>2]|0;a=t[A+(a<<2)>>2]|0;while(1){if((a|0)>=(f|0)){a=n;continue e}l=+c[r+(a<<3)>>3]+i;a=a+1|0;i=l}}i=i/+(t[A+(e<<2)>>2]|0)}return+i}function aj(e,A,r,i,a,n){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;n=n|0;var f=0,l=0,s=0.0,o=0.0,u=0.0,b=0.0,w=0.0,k=0,d=0,v=0,g=0,m=0,p=0,E=0.0;p=h;h=h+16|0;m=p;g=(n|0)==0;s=0.0;o=0.0;u=1.0;l=0;e:while(1){if((l|0)>=(e|0))break;d=l+1|0;v=i+(d<<2)|0;k=t[i+(l<<2)>>2]|0;while(1){if((k|0)>=(t[v>>2]|0)){l=d;continue e}f=t[a+(k<<2)>>2]|0;A:do{if((f|0)!=(l|0)){b=+qo(r,A,l,f);if(!g)u=+c[n+(k<<3)>>3];E=1.0/(u*u);w=u*b*E;b=b*b*E;f=0;while(1){if((f|0)>=(A|0))break A;f=f+1|0;s=s+b;o=o+w}}}while(0);k=k+1|0}}s=o/s;l=P(A,e)|0;f=0;while(1){if((f|0)>=(l|0))break;A=r+(f<<3)|0;c[A>>3]=+c[A>>3]*s;f=f+1|0}r=t[15712]|0;c[m>>3]=s;a3(r,92278,m)|0;h=p;return}function tj(e,A,r,i,a,n,f){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;n=n|0;f=f|0;var l=0,s=0,o=0,u=0.0,b=0.0,w=0,k=0,d=0.0,v=0,g=0,m=0,p=0.0,E=0,B=0,y=0,C=0.0,I=0,Z=0,G=0,L=0,Q=0.0,W=0,Y=0.0,F=0,M=0,V=0,N=0.0,R=0.0,x=0,J=0,H=0,X=0,S=0,j=0,U=0,T=0.0,O=0,_=0.0,q=0,K=0,$=0,ee=0,Ae=0,re=0,ie=0,ae=0,te=0,ne=0.0,fe=0.0,le=0;te=h;h=h+32|0;$=te+24|0;ee=te+20|0;Ae=te+16|0;ie=te+12|0;ae=te+8|0;U=te;d=+c[i>>3];w=i+24|0;b=+c[w>>3];k=i+32|0;u=+c[k>>3];T=+c[i+72>>3];O=t[i+80>>2]|0;_=+c[i+88>>3];p=+c[i+96>>3];q=t[i+104>>2]|0;t[$>>2]=0;t[ee>>2]=10;t[Ae>>2]=0;t[ie>>2]=0;t[ae>>2]=0;c[U>>3]=0.0;if(!((A|0)==0|(O|0)<1)?(K=t[A>>2]|0,o=t[A+4>>2]|0,!((e|0)<1|(o|0)<1)):0){if((o|0)<(t[i+52>>2]|0)){v=0;l=0;s=0}else{s=$F(e*80|0)|0;t[Ae>>2]=s;t[ie>>2]=$F(80)|0;t[ae>>2]=$F(80)|0;v=1;l=s}t[f>>2]=0;if((K|0)==(o|0)){J=lK(A,1)|0;H=t[J+20>>2]|0;X=t[J+24>>2]|0;S=t[r+20>>2]|0;j=t[r+24>>2]|0;x=t[r+28>>2]|0;e:do{if(t[i+16>>2]|0){a8(t[i+108>>2]|0);s=P(K,e)|0;l=0;while(1){if((l|0)>=(s|0))break e;c[n+(l<<3)>>3]=+Xo();l=l+1|0}}}while(0);if(b<0.0){b=+XS(J,e,n);c[w>>3]=b}if(u<0.0){c[k>>3]=.2;u=.2}if(d>=0.0){c[i>>3]=-1.0;d=-1.0}N=1.0-d;R=+z(+b,+N);Y=+z(+u,+((2.0-d)*.3333333333333333))/b;M=e<<3;F=$F(M)|0;M=P(K,M)|0;V=$F(M)|0;G=(v|0)!=0;L=i+116|0;Q=Y*.2;W=i+64|0;I=d==-1.0;Z=(a|0)!=0;l=0;y=0;C=0.0;e:while(1){y=y+1|0;Q6(V|0,n|0,M|0)|0;if(G)l=Tq(e,K,10,n,(t[L>>2]|0)==0?0:a)|0;v=0;b=0.0;A:while(1){if((v|0)<(K|0))s=0;else break;while(1){if((s|0)>=(e|0))break;c[F+(s<<3)>>3]=0.0;s=s+1|0}E=v+1|0;r=H+(E<<2)|0;B=P(v,e)|0;o=t[H+(v<<2)>>2]|0;while(1){if((o|0)>=(t[r>>2]|0))break;w=X+(o<<2)|0;s=t[w>>2]|0;r:do{if((s|0)!=(v|0)){u=+Ko(n,e,v,s)*Y;s=0;while(1){if((s|0)>=(e|0))break r;d=u*(+c[n+(s+B<<3)>>3]-+c[n+((P(t[w>>2]|0,e)|0)+s<<3)>>3]);m=F+(s<<3)|0;c[m>>3]=+c[m>>3]-d;s=s+1|0}}}while(0);o=o+1|0}w=S+(E<<2)|0;r=t[S+(v<<2)>>2]|0;while(1){if((r|0)>=(t[w>>2]|0))break;k=j+(r<<2)|0;s=t[k>>2]|0;r:do{if((s|0)!=(v|0)){u=+qo(n,e,v,s);o=x+(r<<3)|0;d=1.0/u;s=0;while(1){if((s|0)>=(e|0))break r;fe=+c[o>>3];ne=u-fe;ne=ne*ne*Q*(+c[n+(s+B<<3)>>3]-+c[n+((P(t[k>>2]|0,e)|0)+s<<3)>>3])*d;m=F+(s<<3)|0;c[m>>3]=(u>3];s=s+1|0}}}while(0);r=r+1|0}r:do{if(!G)if(Z&(t[L>>2]|0)!=0){s=0;while(1){if((s|0)==(K|0)){u=0.0;s=0;break r}i:do{if((s|0)!=(v|0)){fe=+qo(n,e,v,s);r=a+(s<<3)|0;w=P(s,e)|0;u=+z(+fe,+N);u=1.0/(I?fe*fe:u);o=0;while(1){if((o|0)>=(e|0))break i;m=F+(o<<3)|0;c[m>>3]=+c[r>>3]*R*(+c[n+(o+B<<3)>>3]-+c[n+(o+w<<3)>>3])*u+ +c[m>>3];o=o+1|0}}}while(0);s=s+1|0}}else{s=0;while(1){if((s|0)==(K|0)){u=0.0;s=0;break r}i:do{if((s|0)!=(v|0)){fe=+qo(n,e,v,s);r=P(s,e)|0;u=+z(+fe,+N);u=1.0/(I?fe*fe:u);o=0;while(1){if((o|0)>=(e|0))break i;m=F+(o<<3)|0;c[m>>3]=(+c[n+(o+B<<3)>>3]-+c[n+(o+r<<3)>>3])*R*u+ +c[m>>3];o=o+1|0}}}while(0);s=s+1|0}}else{Hq(l,+c[W>>3],n+(B<<3)|0,v,$,ee,Ae,ie,ae,U,f);r=t[$>>2]|0;if(t[f>>2]|0)break e;w=t[ae>>2]|0;k=t[ie>>2]|0;v=t[Ae>>2]|0;s=0;while(1){if((s|0)>=(r|0)){u=0.0;s=0;break r}fe=+c[w+(s<<3)>>3];fe=fe>1.0e-15?fe:1.0e-15;g=k+(s<<3)|0;m=P(s,e)|0;u=+z(+fe,+N);u=1.0/(I?fe*fe:u);o=0;while(1){if((o|0)>=(e|0))break;le=F+(o<<3)|0;c[le>>3]=+c[g>>3]*R*(+c[n+(o+B<<3)>>3]-+c[v+(o+m<<3)>>3])*u+ +c[le>>3];o=o+1|0}s=s+1|0}}}while(0);while(1){if((s|0)>=(e|0))break;fe=+c[F+(s<<3)>>3];u=fe*fe+u;s=s+1|0}u=+D(+u);b=u+b;r:do{if(u>0.0){u=1.0/u;s=0;while(1){if((s|0)>=(e|0)){s=0;break r}le=F+(s<<3)|0;c[le>>3]=+c[le>>3]*u;s=s+1|0}}else s=0}while(0);while(1){if((s|0)>=(e|0)){v=E;continue A}le=n+(s+B<<3)|0;c[le>>3]=+c[le>>3]+ +c[F+(s<<3)>>3]*p;s=s+1|0}}if(l|0)AK(l);p=+_S(q,p,b,C,_);if(!((y|0)<(O|0)&p>T)){re=70;break}else C=b}if((re|0)==70?t[i+112>>2]|0:0)qS(e,J,n);G2(V);if((J|0)!=(A|0))iK(J);G2(F);l=t[Ae>>2]|0;s=l}else t[f>>2]=-100;if(s|0)G2(l);l=t[ie>>2]|0;if(l|0)G2(l);l=t[ae>>2]|0;if(l|0)G2(l)}h=te;return}function nj(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0.0,n=0,f=0,l=0,s=0,o=0,u=0,b=0,h=0,w=0,k=0;b=t[A+20>>2]|0;h=t[A+24>>2]|0;w=$F(e<<3)|0;u=t[A>>2]|0;s=0;e:while(1){if((s|0)<(u|0))A=0;else break;while(1){if((A|0)>=(e|0))break;c[w+(A<<3)>>3]=0.0;A=A+1|0}o=s+1|0;l=t[b+(o<<2)>>2]|0;f=t[b+(s<<2)>>2]|0;A=0;while(1){if((f|0)>=(l|0))break;i=t[h+(f<<2)>>2]|0;if((i|0)!=(s|0)){n=P(i,e)|0;i=0;while(1){if((i|0)>=(e|0))break;k=w+(i<<3)|0;c[k>>3]=+c[k>>3]+ +c[r+(n+i<<3)>>3];i=i+1|0}A=A+1|0}f=f+1|0}if((A|0)<=0){s=o;continue}a=.5/+(A|0);i=P(s,e)|0;A=0;while(1){if((A|0)>=(e|0)){s=o;continue e}k=r+(A+i<<3)|0;c[k>>3]=+c[w+(A<<3)>>3]*a+ +c[k>>3]*.5;A=A+1|0}}G2(w);return}function fj(e){e=e|0;var A=0,r=0,i=0,a=0,n=0,f=0,l=0,s=0,c=0,o=0.0;l=t[e+20>>2]|0;s=t[e+24>>2]|0;f=t[e>>2]|0;c=$F((f<<2)+4|0)|0;e=0;while(1){if((e|0)>(f|0)){r=0;i=0;break}t[c+(e<<2)>>2]=0;e=e+1|0}while(1){if((i|0)>=(f|0))break;a=i+1|0;n=t[l+(a<<2)>>2]|0;e=0;A=t[l+(i<<2)>>2]|0;while(1){if((A|0)>=(n|0))break;e=e+((i|0)!=(t[s+(A<<2)>>2]|0)&1)|0;A=A+1|0}n=c+(e<<2)|0;i=(t[n>>2]|0)+1|0;t[n>>2]=i;r=(r|0)>(i|0)?r:i;i=a}o=+(t[c+4>>2]|0);if(+(r|0)*.8=(n|0)){a=0;break}c[u+(a<<3)>>3]=0.0;a=a+1|0}while(1){if((a|0)>=(A|0)){n=0;break}c[l+(a<<3)>>3]=0.0;a=a+1|0}while(1){if((n|0)>=(e|0))break;f=P(n,A)|0;a=0;while(1){if((a|0)>=(A|0))break;o=l+(a<<3)|0;c[o>>3]=+c[o>>3]+ +c[r+(a+f<<3)>>3];a=a+1|0}n=n+1|0}i=1.0/+(e|0);a=0;while(1){if((a|0)>=(A|0)){n=0;break}o=l+(a<<3)|0;c[o>>3]=+c[o>>3]*i;a=a+1|0}while(1){if((n|0)>=(e|0)){f=0;break}f=P(n,A)|0;a=0;while(1){if((a|0)>=(A|0))break;o=r+(a+f<<3)|0;c[o>>3]=+c[o>>3]-+c[l+(a<<3)>>3];a=a+1|0}n=n+1|0}while(1){if((f|0)>=(e|0))break;l=P(f,A)|0;n=0;while(1){if((n|0)>=(A|0))break;s=r+(n+l<<3)|0;o=P(n,A)|0;a=0;while(1){if((a|0)==(A|0))break;w=u+(a+o<<3)|0;c[w>>3]=+c[w>>3]+ +c[r+(a+l<<3)>>3]*+c[s>>3];a=a+1|0}n=n+1|0}f=f+1|0}i=+c[u+8>>3];if(i==0.0)i=0.0;else{k=+c[u>>3];t=+c[u+24>>3];i=-(t-k-+D(+(k*k+i*i*4.0+(k*-2.0+t)*t)))/(i*2.0)}t=+D(+(i*i+1.0));i=i/t;t=1.0/t;a=0;while(1){if((a|0)>=(e|0))break;w=P(a,A)|0;u=r+(w<<3)|0;k=+c[u>>3];w=r+(w+1<<3)|0;d=+c[w>>3];c[u>>3]=d*t+k*i;c[w>>3]=d*i-k*t;a=a+1|0}h=b;return}function sj(e,A,r,i,a,t,n,f,l,s){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;t=t|0;n=n|0;f=f|0;l=l|0;s=s|0;cj(e,A,r,i,a,t,n,f,l,s);return}function cj(e,A,r,i,a,n,f,l,s,o){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;n=n|0;f=f|0;l=l|0;s=s|0;o=o|0;var u=0.0,b=0,w=0,k=0,d=0,v=0,g=0,m=0,p=0,E=0,B=0,y=0,C=0,I=0,Z=0,G=0,L=0,Q=0,D=0,z=0,W=0,Y=0,F=0,M=0,V=0,N=0;N=h;h=h+192|0;Y=N+176|0;W=N+168|0;M=N;Q6(M|0,i|0,168)|0;t[o>>2]=0;do{if(A|0?(V=t[A+4>>2]|0,!((e|0)<1|(V|0)<1)):0){if((sK(A,0)|0)!=0?(t[A+16>>2]|0)==1:0){if((t[i+136>>2]|0)==1)b=hK(r)|0;else b=r;F=hK(A)|0}else g=5;do{if((g|0)==5)if((t[i+136>>2]|0)==1){F=bK(A,0)|0;b=bK(r,0)|0;break}else{F=Ho(A)|0;b=r;break}}while(0);z=i+160|0;w=t[z>>2]|0;if((w|0)==3){if((l|0)>0)g=14}else if((l|0)>0&(w|0)==4)g=14;if((g|0)==14){r=$F(P(e<<3,t[F>>2]|0)|0)|0;V=oj(F,l,s)|0;sj(e,V,0,i,0,0,r,0,0,o);uj(e,F,l,s,f,r);KO(e,F,f,n,t[i+124>>2]|0,+c[i+144>>3],t[z>>2]|0,l,s);iK(V);G2(r);if((F|0)==(A|0))break;iK(F);break}Q=tu(t[i+44>>2]|0,t[i+48>>2]|0)|0;t[Q+16>>2]=t[i+40>>2];D=gu(F,b,a,Q)|0;k=Eu(D)|0;if(!(t[k+32>>2]|0))d=f;else d=$F(P(e<<3,t[k+4>>2]|0)|0)|0;w=fj(F)|0;if(+c[i>>3]==-1.0001234)c[i>>3]=(w|0)==0?-1.0:-1.8;p=i+136|0;E=i+24|0;B=i+16|0;y=i+104|0;C=i+96|0;I=e<<3;Z=i+132|0;G=t[15712]|0;L=i+80|0;while(1){e:do{switch(t[p>>2]|0){case 0:{switch(t[Z>>2]|0){case 0:{ej(e,t[k+8>>2]|0,i,t[k+24>>2]|0,d,o);break e}case 2:{w=k+8|0;g=29;break}case 3:{w=k+8|0;v=t[w>>2]|0;if((t[v>>2]|0)>1e4)if(!0)g=29;else{t[W>>2]=1e4;a3(G,92299,W)|0;g=29}else g=30;break}default:{v=t[k+8>>2]|0;g=30}}if((g|0)==29){OS(e,t[w>>2]|0,i,t[k+24>>2]|0,d,o);break e}else if((g|0)==30){Aj(e,v,i,t[k+24>>2]|0,d,o);break e}break}case 1:{c[C>>3]=1.0;t[y>>2]=1;m=(t[k+28>>2]|0)==0;u=m?.5:.05;t[L>>2]=m?500:100;m=(t[k+32>>2]|0)==0;w=k+8|0;v=k+12|0;g=k+24|0;rj(e,t[w>>2]|0,t[v>>2]|0,i,t[g>>2]|0,d,u,o);if(m){t[B>>2]=0;c[C>>3]=.05;t[y>>2]=0;rj(e,t[w>>2]|0,t[v>>2]|0,i,t[g>>2]|0,d,u*.5,o);rj(e,t[w>>2]|0,t[v>>2]|0,i,t[g>>2]|0,d,u*.125,o);rj(e,t[w>>2]|0,t[v>>2]|0,i,t[g>>2]|0,d,u*.03125,o)}break}default:{}}}while(0);g=t[k+32>>2]|0;if(!g){g=39;break}if(t[o>>2]|0){g=35;break}m=t[k+16>>2]|0;w=t[k+40>>2]|0;if(!(t[g+32>>2]|0))v=f;else v=$F(P(I,t[g+4>>2]|0)|0)|0;bj(e,t[g+8>>2]|0,m,t[g+20>>2]|0,d,v,w,+c[E>>3]*.001);G2(d);t[B>>2]=0;c[E>>3]=+c[E>>3]*.75;t[y>>2]=0;c[C>>3]=((t[(t[g+28>>2]|0)+40>>2]|0)+-9|0)>>>0<2?1.0:.1;k=g;d=v}if((g|0)==35)G2(d);else if((g|0)==39){ju(e,F,i,a,f,o);if(0){t[Y>>2]=t[i+124>>2];a3(G,92362,Y)|0}if((e|0)==2)lj(V,2,f);u=+c[i+152>>3];if(u!=0.0)hj(V,e,f,u);KO(e,F,f,n,t[i+124>>2]|0,+c[i+144>>3],t[z>>2]|0,l,s)}Q6(i|0,M|0,168)|0;if((F|0)!=(A|0))iK(F);if(!((b|0)==0|(b|0)==(r|0)))iK(b);nu(Q);fu(D)}}while(0);h=N;return}function oj(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0,n=0,f=0,l=0,s=0,c=0,o=0,u=0,b=0,w=0,k=0,d=0,v=0,g=0,m=0,p=0,E=0,B=0,y=0;y=h;h=h+16|0;B=y;m=t[e+20>>2]|0;p=t[e+24>>2]|0;E=$F(t[e>>2]<<2)|0;i=0;while(1){if((i|0)>=(t[e>>2]|0)){i=0;break}t[E+(i<<2)>>2]=1;i=i+1|0}while(1){if((i|0)>=(A|0)){i=0;r=0;break}t[E+(t[r+(i<<2)>>2]<<2)>>2]=-1;i=i+1|0}while(1){o=t[e>>2]|0;if((r|0)>=(o|0)){r=0;A=0;break}A=E+(r<<2)|0;if((t[A>>2]|0)>0){t[A>>2]=i;i=i+1|0}r=r+1|0}e:while(1){while(1){if((A|0)>=(o|0))break e;if((t[E+(A<<2)>>2]|0)>=0)break;A=A+1|0}s=A+1|0;c=t[m+(s<<2)>>2]|0;l=t[m+(A<<2)>>2]|0;while(1){if((l|0)>=(c|0)){A=s;continue e}a=t[p+(l<<2)>>2]|0;A:do{if((t[E+(a<<2)>>2]|0)>-1)r=r+1|0;else{f=t[m+(a+1<<2)>>2]|0;n=t[m+(a<<2)>>2]|0;while(1){if((n|0)>=(f|0))break A;a=t[p+(n<<2)>>2]|0;if((a|0)!=(A|0))r=((t[E+(a<<2)>>2]|0)>>>31^1)+r|0;n=n+1|0}}}while(0);l=l+1|0}}A=r<<2;if((r|0)>0){d=$F(A)|0;v=$F(A)|0;w=v;k=d}else{w=0;k=0;d=0;v=0}g=t[15712]|0;A=0;a=0;e:while(1){r=t[e>>2]|0;while(1){if((A|0)>=(r|0))break e;b=E+(A<<2)|0;if((t[b>>2]|0)>=0)break;A=A+1|0}o=A+1|0;u=m+(o<<2)|0;c=t[m+(A<<2)>>2]|0;r=a;while(1){if((c|0)>=(t[u>>2]|0)){A=o;a=r;continue e}a=p+(c<<2)|0;n=t[a>>2]|0;A:do{if((t[E+(n<<2)>>2]|0)>-1){t[k+(r<<2)>>2]=t[b>>2];t[w+(r<<2)>>2]=t[E+(t[a>>2]<<2)>>2];r=r+1|0}else{s=m+(n+1<<2)|0;l=t[m+(n<<2)>>2]|0;while(1){if((l|0)>=(t[s>>2]|0))break A;a=p+(l<<2)|0;f=t[a>>2]|0;do{if((f|0)!=(A|0)?(t[E+(f<<2)>>2]|0)>-1:0){t[k+(r<<2)>>2]=t[b>>2];f=r+1|0;t[w+(r<<2)>>2]=t[E+(t[a>>2]<<2)>>2];n=t[b>>2]|0;r=t[E+(t[a>>2]<<2)>>2]|0;if((n|0)!=68)if((r|0)==68)r=68;else{r=f;break}t[B>>2]=n;t[B+4>>2]=r;a3(g,92380,B)|0;r=f}}while(0);l=l+1|0}}}while(0);c=c+1|0}}B=kK(a,i,i,k,w,0,8,8)|0;G2(d);G2(v);G2(E);h=y;return B|0}function uj(e,A,r,i,a,n){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;n=n|0;var f=0,l=0,s=0.0,o=0,u=0,b=0,h=0,w=0,k=0;w=$F(t[A>>2]<<2)|0;f=0;while(1){if((f|0)>=(t[A>>2]|0)){f=0;break}t[w+(f<<2)>>2]=1;f=f+1|0}while(1){if((f|0)>=(r|0)){f=0;o=0;break}l=t[i+(f<<2)>>2]|0;if((l|0)>-1?(l|0)<(t[A>>2]|0):0)t[w+(l<<2)>>2]=-1;f=f+1|0}while(1){b=t[A>>2]|0;if((o|0)>=(b|0)){o=0;break}l=w+(o<<2)|0;if((t[l>>2]|0)>-1){t[l>>2]=f;f=f+1|0}o=o+1|0}while(1){if((o|0)>=(b|0))break;f=t[w+(o<<2)>>2]|0;e:do{if((f|0)>-1){u=P(o,e)|0;l=P(f,e)|0;f=0;while(1){if((f|0)>=(e|0))break e;c[a+(f+u<<3)>>3]=+c[n+(l+f<<3)>>3];f=f+1|0}}}while(0);o=o+1|0}h=A+20|0;n=A+24|0;b=0;while(1){if((b|0)>=(r|0))break;A=t[i+(b<<2)>>2]|0;f=t[h>>2]|0;o=t[f+(A+1<<2)>>2]|0;f=t[f+(A<<2)>>2]|0;u=o-f|0;A=P(A,e)|0;l=0;while(1){if((l|0)>=(e|0))break;c[a+(l+A<<3)>>3]=0.0;l=l+1|0}while(1){if((f|0)<(o|0))l=0;else break;while(1){if((l|0)>=(e|0))break;s=+c[a+((P(t[(t[n>>2]|0)+(f<<2)>>2]|0,e)|0)+l<<3)>>3];k=a+(l+A<<3)|0;c[k>>3]=+c[k>>3]+s;l=l+1|0}f=f+1|0}s=1.0/+(u|0);f=0;while(1){if((f|0)>=(e|0))break;k=a+(f+A<<3)|0;c[k>>3]=+c[k>>3]*s;f=f+1|0}b=b+1|0}G2(w);return}function bj(e,A,r,i,a,n,f,l){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;n=n|0;f=f|0;l=+l;var s=0,o=0,u=0,b=0,w=0,k=0.0;b=h;h=h+16|0;u=b;t[u>>2]=n;zo(r,0,a,0,u,0,e);e:do{if((f+-1|0)>>>0<6){nj(e,A,t[u>>2]|0);s=t[i>>2]|0;o=t[i+20>>2]|0;n=t[i+24>>2]|0;A=0;A:while(1){if((A|0)>=(s|0))break e;f=A+1|0;i=o+(f<<2)|0;A=t[o+(A<<2)>>2]|0;r:while(1){A=A+1|0;if((A|0)>=(t[i>>2]|0)){A=f;continue A}a=n+(A<<2)|0;r=0;while(1){if((r|0)>=(e|0))continue r;k=(+Xo()+-.5)*l;w=(t[u>>2]|0)+((P(t[a>>2]|0,e)|0)+r<<3)|0;c[w>>3]=+c[w>>3]+k;r=r+1|0}}}}}while(0);h=b;return}function hj(e,A,r,i){e=e|0;A=A|0;r=r|0;i=+i;var a=0,t=0.0,n=0,f=0,l=0,s=0,o=0,u=0.0,b=0.0;s=h;h=h+16|0;l=s;a=0;while(1){if((a|0)>=(A|0)){n=0;break}c[l+(a<<3)>>3]=0.0;a=a+1|0}while(1){if((n|0)>=(e|0))break;f=P(n,A)|0;a=0;while(1){if((a|0)>=(A|0))break;o=l+(a<<3)|0;c[o>>3]=+c[o>>3]+ +c[r+(a+f<<3)>>3];a=a+1|0}n=n+1|0}t=1.0/+(e|0);a=0;while(1){if((a|0)>=(A|0)){n=0;break}o=l+(a<<3)|0;c[o>>3]=+c[o>>3]*t;a=a+1|0}while(1){if((n|0)>=(e|0))break;f=P(n,A)|0;a=0;while(1){if((a|0)>=(A|0))break;o=r+(a+f<<3)|0;c[o>>3]=+c[o>>3]-+c[l+(a<<3)>>3];a=a+1|0}n=n+1|0}i=i*-.017453277777777776;t=+W(+i);i=+Y(+i);a=0;while(1){if((a|0)>=(e|0))break;o=P(a,A)|0;l=r+(o<<3)|0;u=+c[l>>3];o=r+(o+1<<3)|0;b=+c[o>>3];c[l>>3]=b*i+u*t;c[o>>3]=b*t-u*i;a=a+1|0}h=s;return}function wj(e,A,r,i,a,n,f){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;n=+n;f=f|0;var l=0,s=0,o=0,u=0;u=(sK(A,0)|0)==0;l=(t[A+16>>2]|0)==1;if(u)if(l)l=hK(lK(A,0)|0)|0;else s=5;else if(l)l=A;else s=5;if((s|0)==5)l=Ho(A)|0;u=hK(l)|0;t[f>>2]=0;l=t[u>>2]|0;if(!r){$F(P(e<<3,l)|0)|0;iA()}o=zu(u,e,0.0,t[r>>2]|0,(i|0)==0?0:2,1)|0;if(!o)t[f>>2]=-1;else{c[o+40>>3]=.1;t[o+24>>2]=5;+Yu(o,e,t[r>>2]|0,a,n);s=P(l,e)|0;i=o+32|0;l=0;while(1){if((l|0)>=(s|0))break;f=(t[r>>2]|0)+(l<<3)|0;c[f>>3]=+c[f>>3]/+c[i>>3];l=l+1|0}Wu(o)}if((u|0)!=(A|0))iK(u);return}function kj(e,A,r,i,a,t,n,f){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;t=t|0;n=+n;f=f|0;wj(e,r,i,a,t,n,f);return}function dj(e,A,r,i,a,n){e=e|0;A=A|0;r=r|0;i=+i;a=+a;n=n|0;var f=0,l=0,s=0,o=0,u=0,b=0,h=0,w=0,k=0,d=0,v=0,g=0,m=0,p=0,E=0,B=0.0;p=t[A>>2]|0;E=t[A+20>>2]|0;g=t[A+24>>2]|0;m=t[A+28>>2]|0;if(!(sK(A,0)|0))ge(95795,92387,37,92404);e=$F(56)|0;s=e+20|0;t[s>>2]=0;t[e+24>>2]=2;t[e+12>>2]=0;l=$F(16)|0;t[s>>2]=l;c[l>>3]=i;c[l+8>>3]=a;t[e+16>>2]=105;c[e+40>>3]=.01;t[e+48>>2]=~~+D(+ +(t[A>>2]|0));l=A+8|0;s=e+4|0;t[s>>2]=aK(p,p,(t[l>>2]|0)+p|0,1,1)|0;l=aK(p,p,(t[l>>2]|0)+p|0,1,1)|0;t[e+8>>2]=l;s=t[s>>2]|0;o=t[s+28>>2]|0;u=t[l+28>>2]|0;if((l|0)==0|(s|0)==0){Du(e);e=0}else{b=t[s+20>>2]|0;h=t[s+24>>2]|0;w=t[l+20>>2]|0;k=t[l+24>>2]|0;t[w>>2]=0;t[b>>2]=0;A=0;r=0;while(1){if((A|0)>=(p|0))break;d=A+1|0;v=E+(d<<2)|0;i=0.0;a=0.0;f=t[E+(A<<2)>>2]|0;while(1){if((f|0)>=(t[v>>2]|0))break;n=t[g+(f<<2)>>2]|0;if((n|0)!=(A|0)){B=+c[m+(f<<3)>>3];B=B>=0.0?B:-B;B=B>.01?B:.01;t[h+(r<<2)>>2]=n;t[k+(r<<2)>>2]=n;n=o+(r<<3)|0;c[n>>3]=-1.0;c[u+(r<<3)>>3]=-B;i=+c[n>>3]+i;a=a-B;r=r+1|0}f=f+1|0}t[h+(r<<2)>>2]=A;t[k+(r<<2)>>2]=A;c[o+(r<<3)>>3]=-i;c[u+(r<<3)>>3]=-a;r=r+1|0;t[b+(d<<2)>>2]=r;t[w+(d<<2)>>2]=r;A=d}t[s+8>>2]=r;t[l+8>>2]=r}return e|0}function vj(e){e=e|0;Du(e);return}function gj(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;return+ +Fu(e,A,r,i,.001)}function mj(e,A){e=e|0;A=+A;var r=0,i=0,a=0,n=0;if((t[e+16>>2]|0)==1)r=lK(e,0)|0;else r=Ho(e)|0;a=t[r+28>>2]|0;e:do{if(A!=1.0){i=t[r+8>>2]|0;e=0;while(1){if((e|0)>=(i|0))break e;n=a+(e<<3)|0;c[n>>3]=+c[n>>3]*A;e=e+1|0}}}while(0);return r|0}function pj(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0,n=0,f=0,l=0,s=0,o=0.0;l=t[A>>2]|0;t[i>>2]=0;s=P(l,e)|0;i=0;while(1){if((i|0)>=(s|0)){i=1;a=1;break}c[r+(i<<3)>>3]=+Xo()*100.0;i=i+1|0}while(1){if((a|0)>=(l|0))break;f=P(a,e)|0;n=0;while(1){if((n|0)>=(e|0))break;o=+c[r+(n<<3)>>3]-+c[r+(n+f<<3)>>3];if((o>=0.0?o:-o)>1.0e-16){i=0;a=l;break}else n=n+1|0}a=a+1|0}e:do{if(i|0){a8(1);i=0;while(1){if((i|0)>=(s|0))break e;c[r+(i<<3)>>3]=+Xo()*100.0;i=i+1|0}}}while(0);i=mj(A,1.0)|0;if(!(sK(i,0)|0))ge(92430,92387,164,92466);else{s=dj(0,i,0,101.0e5,100.0,0)|0;+gj(s,e,r,300);vj(s);s=dj(0,i,0,101.0e3,100.0,0)|0;+gj(s,e,r,300);vj(s);s=dj(0,i,0,1010.0,100.0,0)|0;+gj(s,e,r,300);vj(s);s=dj(0,i,0,10.1,100.0,0)|0;+gj(s,e,r,300);vj(s);eu(0.0,0.0,490.0,700.0,t[A>>2]|0,e,r);iK(i);return}}function Ej(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0,n=0,f=0,l=0,s=0,o=0,u=0;s=$F((gk(e)|0)<<4)|0;f=(i|0)!=0;l=A+8|0;n=sd(e)|0;a=0;while(1){if(!n)break;if(f)a=a+((y1(Mk(n)|0,92481,11)|0)==0&1)|0;u=t[n+16>>2]|0;o=t[u+120>>2]<<1;c[s+(o<<3)>>3]=+c[u+32>>3]*.5+ +c[A>>3];c[s+((o|1)<<3)>>3]=+c[u+40>>3]*.5+ +c[l>>3];n=cd(e,n)|0}if(f&(a|0)!=0){A=$F(a<<2)|0;n=sd(e)|0;a=0;while(1){if(!n)break;if(!(y1(Mk(n)|0,92481,11)|0)){t[A+(a<<2)>>2]=t[(t[n+16>>2]|0)+120>>2];a=a+1|0}n=cd(e,n)|0}t[i>>2]=A;t[r>>2]=a}return s|0}function Bj(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0.0,n=0,f=0,l=0,s=0,o=0,u=0,b=0,w=0,k=0,d=0,v=0,g=0,m=0,p=0,E=0,B=0,y=0,C=0,I=0;C=h;h=h+32|0;E=C+16|0;p=C+8|0;m=C;if(e){B=gk(e)|0;y=mk(e)|0;A=sd(e)|0;i=0;while(1){if(!A)break;t[(t[A+16>>2]|0)+120>>2]=i;A=cd(e,A)|0;i=i+1|0}d=y<<2;k=$F(d)|0;d=$F(d)|0;A=y<<3;v=$F(A)|0;b=zw(e,2,101541,0)|0;g=(r|0)!=0;if(g){i=zw(e,2,92493,0)|0;w=KF(A)|0;u=w}else{u=0;i=0;w=0}l=(b|0)==0;s=(i|0)==0;f=sd(e)|0;A=0;while(1){if(!f)break;o=t[(t[f+16>>2]|0)+120>>2]|0;n=Ow(e,f)|0;while(1){if(!n)break;t[k+(A<<2)>>2]=o;t[d+(A<<2)>>2]=t[(t[(t[((t[n>>2]&3|0)==2?n:n+-48|0)+40>>2]|0)+16>>2]|0)+120>>2];if(!l?(I=Pw(n,b)|0,t[p>>2]=m,(V3(I,101209,p)|0)==1):0)a=+c[m>>3];else{c[m>>3]=1.0;a=1.0}c[v+(A<<3)>>3]=a;if(!s){I=Pw(n,i)|0;t[E>>2]=m;if((V3(I,101209,E)|0)==1)a=+c[m>>3];else{c[m>>3]=1.0;a=1.0}c[u+(A<<3)>>3]=a}n=qw(e,n)|0;A=A+1|0}f=cd(e,f)|0}A=kK(y,B,B,k,d,v,1,8)|0;if(g)t[r>>2]=kK(y,B,B,k,d,w,1,8)|0;G2(k);G2(d);G2(v);if(u)G2(w)}else A=0;h=C;return A|0}function yj(e){e=e|0;var A=0,r=0,i=0.0,a=0,n=0.0,f=0.0,l=0.0,s=0,o=0,u=0,b=0.0,w=0.0;o=h;h=h+16|0;s=o;e:do{if(Cj(e,s)|0){A=t[(t[(sd(e)|0)+16>>2]|0)+132>>2]|0;n=+c[A>>3];i=+c[A+8>>3];A=sd(e)|0;while(1){if(!A)break;a=t[(t[A+16>>2]|0)+132>>2]|0;c[a>>3]=+c[a>>3]-n;a=a+8|0;c[a>>3]=+c[a>>3]-i;A=cd(e,A)|0}A=(n!=0.0|i!=0.0)&1;r=sd(e)|0;while(1){if(!r)break e;a=Ow(e,r)|0;if(a|0)break;r=cd(e,r)|0}u=t[a>>2]&3;r=t[(t[(t[((u|0)==2?a:a+-48|0)+40>>2]|0)+16>>2]|0)+132>>2]|0;a=t[(t[(t[((u|0)==3?a:a+48|0)+40>>2]|0)+16>>2]|0)+132>>2]|0;f=+c[a+8>>3];l=+c[a>>3];i=+R(+(+c[r+8>>3]-f),+(+c[r>>3]-l));i=+c[s>>3]-i;c[s>>3]=i;if(i!=0.0){n=+W(+i);i=+Y(+i);A=sd(e)|0;while(1){if(!A){A=1;break e}s=t[(t[A+16>>2]|0)+132>>2]|0;w=+c[s>>3]-l;u=s+8|0;b=+c[u>>3]-f;c[s>>3]=w*n+l-b*i;c[u>>3]=w*i+f+b*n;A=cd(e,A)|0}}}else A=0}while(0);h=o;return A|0}function Cj(e,A){e=e|0;A=A|0;var r=0.0,a=0,n=0;n=h;h=h+16|0;a=n;e=Hw(e,92497)|0;do{if((e|0)!=0?(i[e>>0]|0)!=0:0){r=+e8(e,a);if((t[a>>2]|0)==(e|0))if(!((mx(e)|0)<<24>>24)){e=0;break}else r=0.0;while(1){if(!(r>180.0))break;r=r+-360.0}while(1){if(!(r<=-180.0))break;r=r+360.0}c[A>>3]=r*.017453292519943295;e=1}else e=0}while(0);h=n;return e|0}function Ij(e,A,r){e=e|0;A=A|0;r=r|0;var i=0;i=Hw(e,92507)|0;return Zj(e,(i|0)==0?r|0?r:195059:i,A)|0}function Zj(e,A,r){e=e|0;A=A|0;r=r|0;var a=0,n=0,f=0,l=0,s=0,o=0,u=0,b=0.0;u=h;h=h+32|0;o=u+16|0;l=u+8|0;f=u;if((A|0)!=0?(i[A>>0]|0)!=0:0){a=17896;while(1){n=t[a+4>>2]|0;if(!n)break;if(!(S1(A,n,t[a+8>>2]|0)|0)){s=6;break}a=a+16|0}if((s|0)==6){if(!(t[a+12>>2]|0)){t[f>>2]=n;nw(0,92515,f)|0;a=17896}f=t[a>>2]|0;t[r>>2]=f;t[r+4>>2]=t[a+12>>2];if((f|0)==18)Gj(e,A+(t[a+8>>2]|0)|0,r)}if(!(t[a+4>>2]|0)){a=px(A,63)|0;if(a<<24>>24==63){t[l>>2]=A;nw(0,92557,l)|0;a=0}else a=a&255;a=(a|0)==0;t[r>>2]=a&1;a=a?92604:135709;s=15}}else{t[r>>2]=0;a=135709;s=15}if((s|0)==15)t[r+4>>2]=a;if(0){s=t[15712]|0;l=t[r+8>>2]|0;b=+c[r+16>>3];t[o>>2]=t[r+4>>2];t[o+4>>2]=l;c[o+8>>3]=b;a3(s,92612,o)|0}h=u;return r|0}function Gj(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0,n=0;i=h;h=h+16|0;a=i;n=i+4|0;t[a>>2]=n;a=(V3(A,137395,a)|0)>0;A=t[n>>2]|0;t[r+8>>2]=a&(A|0)>-1?A:1e3;c[r+16>>3]=+wx(e,zw(e,0,92648,0)|0,-4.0,-1.0e10);h=i;return}function Lj(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0,f=0,l=0,s=0;f=h;h=h+16|0;n=f+8|0;a=f;do{if((gk(e)|0)>=2){r=yj(e)|0;r=(Qj(e)|0)+r|0;i=t[A>>2]|0;if(i){if(0){i=t[15712]|0;s=Mk(e)|0;l=t[A+4>>2]|0;t[a>>2]=s;t[a+4>>2]=l;a3(i,92977,a)|0;i=t[A>>2]|0}if(i>>>0>2){switch(i|0){case 3:{i=DU(e,1)|0;break}case 4:{i=DU(e,0)|0;break}case 6:case 5:{i=0;break}case 10:case 9:case 7:case 8:case 14:case 13:case 11:case 12:{wU(e,i)|0;i=0;break}case 15:{i=DU(e,-1)|0;break}default:{t[n>>2]=t[A+4>>2];nw(0,93e3,n)|0;i=0}}r=i+r|0;break}if(Dj(e)|0){zj();G2(t[46845]|0);t[46845]=0;break}Wj(e);if((t[A>>2]|0)==2)i=Yj()|0;else i=Fj()|0;if(i|0)Mj();zj();G2(t[46845]|0);t[46845]=0;r=i+r|0}}else r=0}while(0);h=f;return r|0}function Qj(e){e=e|0;var A=0,r=0.0,i=0,a=0,n=0.0,f=0,l=0,s=0,o=0;o=h;h=h+48|0;f=o+24|0;a=o+16|0;l=o;A=Hw(e,140742)|0;e:do{if(((A|0)!=0?(s=l+8|0,t[a>>2]=l,t[a+4>>2]=s,i=V3(A,105503,a)|0,(i|0)!=0):0)?(n=+c[l>>3],!(+Q(+n)<1.0e-09)):0){if((i|0)!=1){r=+c[s>>3];if(+Q(+r)<1.0e-09){A=0;break}}else{c[s>>3]=n;r=n}if(!(r==1.0&n==1.0)){if(0){a=t[15712]|0;c[f>>3]=n;c[f+8>>3]=r;a3(a,93160,f)|0}A=sd(e)|0;while(1){if(!A){A=1;break e}f=t[(t[A+16>>2]|0)+132>>2]|0;c[f>>3]=+c[f>>3]*+c[l>>3];f=f+8|0;c[f>>3]=+c[f>>3]*+c[s>>3];A=cd(e,A)|0}}else A=0}else A=0}while(0);h=o;return A|0}function Dj(e){e=e|0;var A=0,r=0,a=0,n=0.0,f=0.0,l=0,o=0,u=0,b=0;u=h;h=h+16|0;l=u;t[46854]=gk(e)|0;nT();t[46869]=$F((t[46854]|0)*96|0)|0;a=sd(e)|0;A=t[46869]|0;Kj(l,e);n=+s[l>>2];f=+s[l+4>>2];l=(i[l+8>>0]|0)==0;f=l?f:f*.013888888888888888;n=l?n:n*.013888888888888888;l=l?2:1;r=0;while(1){if((r|0)>=(t[46854]|0)){A=0;break}b=t[(t[a+16>>2]|0)+132>>2]|0;c[A+8>>3]=+c[b>>3];c[A+16>>3]=+c[b+8>>3];if(G5[l&3](A+40|0,a,n,f)|0){o=4;break}t[A+24>>2]=r;t[A+28>>2]=1;t[A>>2]=a;t[A+88>>2]=0;A=A+96|0;r=r+1|0;a=cd(e,a)|0}if((o|0)==4){G2(t[46869]|0);t[46869]=0;A=1}h=u;return A|0}function zj(){var e=0,A=0;e=t[46869]|0;A=0;while(1){if((A|0)>=(t[46854]|0))break;r_(e+40|0);e=e+96|0;A=A+1|0}A_();YT();G2(t[46869]|0);return}function Wj(e){e=e|0;var A=0,r=0,a=0,n=0.0,f=0.0,l=0.0,s=0.0,o=0,u=0,b=0,w=0,k=0.0,d=0.0,v=0.0,g=0.0;b=h;h=h+32|0;o=b+16|0;u=b;w=t[46869]|0;f=+c[w+8>>3];s=+c[w+16>>3];a=t[46854]|0;A=w;r=1;n=+c[w+40>>3]+f;f=+c[w+56>>3]+f;l=+c[w+48>>3]+s;s=+c[w+64>>3]+s;while(1){if((r|0)>=(a|0))break;v=+c[A+104>>3];k=+c[A+112>>3];g=+c[A+136>>3]+v;d=+c[A+144>>3]+k;v=+c[A+152>>3]+v;k=+c[A+160>>3]+k;A=A+96|0;r=r+1|0;n=gf?v:f;l=ds?k:s}A=Hw(e,93100)|0;if(A|0?i[A>>0]|0:0)c[173]=+$3(A);v=+c[173];g=v*(s-l);v=v*(f-n);c[o>>3]=n-v;c[o+8>>3]=l-g;c[u>>3]=v+f;c[u+8>>3]=g+s;Xj(o,u);h=b;return}function Yj(){var e=0,A=0,r=0,i=0;r=h;h=h+16|0;A=r;if(Vj(0)|0){Nj();e=0;do{qj();e=e+1|0}while((Vj(e)|0)!=0);if(!0)e=1;else{i=t[15712]|0;t[A>>2]=e;a3(i,93028,A)|0;e=1}}else e=0;h=r;return e|0}function Fj(){var e=0,A=0,r=0,i=0,a=0,n=0,f=0,l=0;l=h;h=h+16|0;f=l+8|0;n=l;A=Vj(0)|0;if(!A)e=0;else{Nj();Rj(0);V_(0,1);e=0;i=0;r=0;while(1){Jj();r=r+1|0;a=Vj(r)|0;if(!a)break;A=(a|0)<(A|0)?0:i+1|0;t[46846]=1;if(A){Hj();e=e+1|0}Rj(1);V_(0,1);i=A;A=a}if(0){a=t[15712]|0;t[n>>2]=r;a3(a,93028,n)|0;t[f>>2]=e;a3(a,93055,f)|0}Pj();e=1}h=l;return e|0}function Mj(){var e=0,A=0,r=0,i=0;r=t[46854]|0;e=t[46869]|0;A=0;while(1){if((A|0)>=(r|0))break;i=t[(t[(t[e>>2]|0)+16>>2]|0)+132>>2]|0;c[i>>3]=+c[e+8>>3];c[i+8>>3]=+c[e+16>>3];e=e+96|0;A=A+1|0}return}function Vj(e){e=e|0;var A=0,r=0,i=0,a=0,n=0,f=0,l=0,s=0,c=0,o=0,u=0,b=0,w=0,k=0;k=h;h=h+48|0;b=k+24|0;u=k+8|0;w=k;r=t[46869]|0;i=t[46854]|0;A=0;while(1){if((A|0)>=(i|0)){a=0;A=0;break}t[r+(A*96|0)+32>>2]=0;A=A+1|0}e:while(1){if((A|0)>=(i+-1|0))break;o=r+96|0;A=A+1|0;s=r+8|0;c=r+40|0;l=r+32|0;n=o;f=A;while(1){if((f|0)>=(i|0)){r=o;continue e}i=n+8|0;t[u>>2]=t[s>>2];t[u+4>>2]=t[s+4>>2];t[u+8>>2]=t[s+8>>2];t[u+12>>2]=t[s+12>>2];t[b>>2]=t[i>>2];t[b+4>>2]=t[i+4>>2];t[b+8>>2]=t[i+8>>2];t[b+12>>2]=t[i+12>>2];if(!(o_(u,c,b,n+40|0)|0))r=a;else{t[l>>2]=1;t[n+32>>2]=1;r=a+1|0}n=n+96|0;f=f+1|0;a=r;i=t[46854]|0}}if(0>1){b=t[15712]|0;t[w>>2]=e;t[w+4>>2]=a;a3(b,93081,w)|0}h=k;return a|0}function Nj(){var e=0,A=0,r=0,i=0.0,a=0,n=0.0,f=0,l=0,s=0,o=0,u=0,b=0;Oj();s=t[46848]|0;o=t[46869]|0;e=t[46845]|0;e:while(1){f=e;if(e>>>0>=s>>>0)break;A=e+4|0;if(A>>>0>=s>>>0){e=A;continue}a=t[A>>2]|0;r=t[e>>2]|0;n=+c[r>>3];if(+c[a>>3]!=n){e=A;continue}i=+c[r+8>>3];if(+c[a+8>>3]!=i){e=A;continue}l=e+8|0;a=2;while(1){if(l>>>0>=s>>>0)break;r=t[l>>2]|0;if(!(+c[r>>3]==n)){u=11;break}if(!(+c[r+8>>3]==i)){u=11;break}l=l+4|0;a=a+1|0}if((u|0)==11){u=0;r=t[l>>2]|0;if(+c[r+8>>3]==i){i=(+c[r>>3]-n)/+(a|0);r=(((l>>>0>A>>>0?l:A)+-1+(0-f)|0)>>>2)+1|0;e=1;while(1){if((e|0)==(r|0)){e=l;continue e}f=t[A>>2]|0;c[f>>3]=+c[f>>3]+i*+(e|0);e=e+1|0;A=A+4|0}}}while(1){if(A>>>0>=l>>>0){e=l;continue e}a=t[e>>2]|0;b=t[a+16>>2]|0;f=t[A>>2]|0;r=t[f+16>>2]|0;c[f>>3]=(+c[o+(b*96|0)+56>>3]-+c[o+(b*96|0)+40>>3]+ +c[o+(r*96|0)+56>>3]-+c[o+(r*96|0)+40>>3])*.5+ +c[a>>3];A=A+4|0;e=e+4|0}}return}function Rj(e){e=e|0;var A=0.0,r=0.0,i=0.0,a=0,n=0.0,f=0,l=0,s=0;if(e|0)Oj();f=t[46845]|0;l=t[f>>2]|0;r=+c[l>>3];c[23272]=r;s=t[46854]|0;a=1;n=+c[l>>3];while(1){if((a|0)>=(s|0))break;e=t[f+(a<<2)>>2]|0;A=+c[e>>3];if(A>3]}else{i=A;A=r}a=a+1|0;r=A;n=i>n?i:n}i=+c[l+8>>3];c[23273]=i;c[23275]=+c[(t[f+(s+-1<<2)>>2]|0)+8>>3]-i;c[23274]=n-r;return}function xj(){var e=0;e=t[46847]|0;if(e>>>0<(t[46848]|0)>>>0){t[46847]=e+4;e=t[e>>2]|0}else e=0;return e|0}function Jj(){var e=0,A=0,r=0;e=t[46869]|0;Sj();r=(t[46846]|0)==0;A=0;while(1){if((A|0)>=(t[46854]|0))break;if(!(r?!(t[e+32>>2]|0):0))jj(e);e=e+96|0;A=A+1|0}return}function Hj(){var e=0,A=0,r=0,i=0.0,a=0.0,t=0.0,n=0.0,f=0.0,l=0.0;e=h;h=h+32|0;r=e+16|0;A=e;l=+c[23268];f=+c[23266];n=+c[23269];a=+c[23267];i=(f-a)*.05;t=(l-n)*.05;c[A>>3]=t+l;c[A+8>>3]=f+i;c[r>>3]=n-t;c[r+8>>3]=a-i;Xj(r,A);h=e;return}function Pj(){gT();pT();B_();$U();return}function Xj(e,A){e=e|0;A=A|0;var r=0.0,i=0.0,a=0.0,t=0.0;t=+c[e>>3];c[23269]=t;a=+c[A>>3];c[23268]=a;r=+c[e+8>>3];c[23267]=r;i=+c[A+8>>3];c[23266]=i;c[23258]=t;c[23260]=t;c[23262]=a;c[23264]=a;c[23265]=i;c[23261]=i;c[23263]=r;c[23259]=r;return}function Sj(){var e=0,A=0.0,r=0.0,i=0.0,a=0.0,n=0,f=0,l=0,s=0,o=0,u=0,b=0,h=0,w=0,k=0,d=0.0,v=0.0,g=0.0,m=0.0;u=t[46869]|0;n=u+8|0;a=+fT(n,186064);i=+fT(n,186080);r=+fT(n,186096);e=1;A=+fT(n,186112);n=u;f=u;l=u;s=u;while(1){o=u+96|0;if((e|0)>=(t[46854]|0))break;k=u+104|0;d=+fT(k,186064);b=d>2]|0;b=s+8|0;A=0.0;r=0.0;i=0.0;s=t[s>>2]|0;while(1){a=t[s>>2]|0;if(!a)break;v=s+8|0;d=a+8|0;t[n>>2]=t[b>>2];t[n+4>>2]=t[b+4>>2];t[n+8>>2]=t[b+8>>2];t[n+12>>2]=t[b+12>>2];t[f>>2]=t[v>>2];t[f+4>>2]=t[v+4>>2];t[f+8>>2]=t[v+8>>2];t[f+12>>2]=t[v+12>>2];t[l>>2]=t[d>>2];t[l+4>>2]=t[d+4>>2];t[l+8>>2]=t[d+8>>2];t[l+12>>2]=t[d+12>>2];k=+Uj(n,f,l);t[n>>2]=t[b>>2];t[n+4>>2]=t[b+4>>2];t[n+8>>2]=t[b+8>>2];t[n+12>>2]=t[b+12>>2];t[f>>2]=t[v>>2];t[f+4>>2]=t[v+4>>2];t[f+8>>2]=t[v+8>>2];t[f+12>>2]=t[v+12>>2];t[l>>2]=t[d>>2];t[l+4>>2]=t[d+4>>2];t[l+8>>2]=t[d+8>>2];t[l+12>>2]=t[d+12>>2];Tj(n,f,l,o,u);A=+c[u>>3]*k+A;r=+c[o>>3]*k+r;i=k+i;s=a}c[e+8>>3]=r/i;c[e+16>>3]=A/i;h=w;return}function Uj(e,A,r){e=e|0;A=A|0;r=r|0;var i=0.0,a=0.0,t=0.0;i=+c[A+8>>3];t=+c[r+8>>3];a=+c[e+8>>3];return+(+Q(+((t-a)*+c[A>>3]+(i-t)*+c[e>>3]+ +c[r>>3]*(a-i)))*.5)}function Tj(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;c[i>>3]=(+c[A>>3]+ +c[e>>3]+ +c[r>>3])*.3333333333333333;c[a>>3]=(+c[A+8>>3]+ +c[e+8>>3]+ +c[r+8>>3])*.3333333333333333;return}function Oj(){var e=0,A=0,r=0,i=0;e=t[46845]|0;if(!e){e=$F(t[46854]<<2)|0;t[46845]=e;t[46848]=e+(t[46854]<<2)}r=t[46869]|0;YT();i=t[46854]|0;A=0;while(1){if((A|0)>=(i|0))break;t[e>>2]=r+8;t[r+88>>2]=0;t[r+28>>2]=1;r=r+96|0;e=e+4|0;A=A+1|0}_4(t[46845]|0,i,4,69);t[46847]=t[46845];return}function _j(e,A){e=e|0;A=A|0;var r=0.0,i=0.0;e=t[e>>2]|0;A=t[A>>2]|0;r=+c[e+8>>3];i=+c[A+8>>3];if(!(ri)){i=+c[e>>3];r=+c[A>>3];if(ir&1}else e=1;else e=-1;return e|0}function qj(){var e=0,A=0,r=0,i=0;r=t[46854]|0;e=0;A=t[46869]|0;while(1){if((e|0)>=(r|0))break;i=A+8|0;c[i>>3]=+c[i>>3]*1.05;i=A+16|0;c[i>>3]=+c[i>>3]*1.05;e=e+1|0;A=A+96|0}return}function Kj(e,A){e=e|0;A=A|0;var r=0,a=0,f=0,l=0,o=0,u=0.0,b=0.0;o=h;h=h+48|0;l=o;f=o+24|0;r=Hw(A,93112)|0;if(!((r|0)!=0?($j(r,f,1.0,0.0)|0)!=0:0))a=3;do{if((a|0)==3){A=Hw(A,93116)|0;if(A|0?$j(A,f,.800000011920929,4.0)|0:0)break;s[f+4>>2]=4.0;s[f>>2]=4.0;i[f+8>>0]=1}}while(0);if(0){a=t[15712]|0;b=+s[f>>2];u=+s[f+4>>2];t[l>>2]=n[f+8>>0];c[l+8>>3]=b;c[l+16>>3]=u;a3(a,93121,l)|0}t[e>>2]=t[f>>2];t[e+4>>2]=t[f+4>>2];t[e+8>>2]=t[f+8>>2];h=o;return}function $j(e,A,r,a){e=e|0;A=A|0;r=+r;a=+a;var n=0,f=0,l=0,c=0,o=0,u=0,b=0,w=0,k=0.0;b=h;h=h+16|0;o=b;l=b+12|0;c=b+8|0;while(1){n=i[e>>0]|0;f=e+1|0;if(!(I1(n<<24>>24)|0))break;else e=f}w=n<<24>>24==43;n=A+8|0;i[n>>0]=w&1;t[o>>2]=l;t[o+4>>2]=c;switch(V3(w?f:e,93154,o)|0){case 0:{e=0;break}case 1:{t[c>>2]=t[l>>2];u=5;break}default:u=5}if((u|0)==5){do{if(i[n>>0]|0){if(r>1.0){k=+s[l>>2]/r;s[A>>2]=k>a?a:k;r=+s[c>>2]/r;r=r>a?a:r;break}if(r<1.0){k=+s[l>>2]/r;s[A>>2]=k>2]/r;r=r>2]=t[l>>2];r=+s[c>>2];break}}else{s[A>>2]=+s[l>>2]/r+1.0;r=+s[c>>2]/r+1.0}}while(0);s[A+4>>2]=r;e=1}h=b;return e|0}function eU(e,A){e=e|0;A=A|0;var r=0,i=0;i=h;h=h+32|0;r=i;if((gk(e)|0)<2)e=0;else{Zj(e,A,r)|0;e=Lj(e,r)|0}h=i;return e|0}function AU(e){e=e|0;return eU(e,Hw(e,92507)|0)|0}function rU(e,A){e=e|0;A=A|0;var r=0,a=0,f=0,l=0,o=0,u=0.0,b=0.0;o=h;h=h+48|0;l=o;f=o+24|0;r=Hw(A,93116)|0;if(!((r|0)!=0?($j(r,f,1.0,0.0)|0)!=0:0))a=3;do{if((a|0)==3){A=Hw(A,93112)|0;if(A|0?$j(A,f,1.25,3.200000047683716)|0:0)break;s[f+4>>2]=3.200000047683716;s[f>>2]=3.200000047683716;i[f+8>>0]=1}}while(0);if(0){a=t[15712]|0;b=+s[f>>2];u=+s[f+4>>2];t[l>>2]=n[f+8>>0];c[l+8>>3]=b;c[l+16>>3]=u;a3(a,93183,l)|0}t[e>>2]=t[f>>2];t[e+4>>2]=t[f+4>>2];t[e+8>>2]=t[f+8>>2];h=o;return}function iU(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;var n=0,f=0,l=0,c=0,o=0,u=0,b=0,w=0;w=h;h=h+16|0;b=w;n=0;while(1){if((n|0)>=(r|0))break;t[i+(n<<2)>>2]=-1;n=n+1|0}t[i+(e<<2)>>2]=0;aU(a,e);e:do{if(!(t[A+8>>2]|0)){n=2147483647;A:while(1){if(!((tU(a,b)|0)<<24>>24))break e;l=t[b>>2]|0;n=t[i+(l<<2)>>2]|0;f=A+(l*20|0)|0;l=A+(l*20|0)+4|0;c=n+1|0;e=1;while(1){if((e|0)>=(t[f>>2]|0))continue A;o=t[(t[l>>2]|0)+(e<<2)>>2]|0;u=i+(o<<2)|0;if((t[u>>2]|0)<0){t[u>>2]=c;nU(a,o)|0}e=e+1|0}}}else{n=2147483647;A:while(1){if(!((tU(a,b)|0)<<24>>24))break e;c=t[b>>2]|0;n=t[i+(c<<2)>>2]|0;f=A+(c*20|0)|0;l=A+(c*20|0)+4|0;c=A+(c*20|0)+8|0;e=1;while(1){if((e|0)>=(t[f>>2]|0))continue A;o=t[(t[l>>2]|0)+(e<<2)>>2]|0;u=i+(o<<2)|0;if((t[u>>2]|0)<0){t[u>>2]=n+~~+s[(t[c>>2]|0)+(e<<2)>>2];nU(a,o)|0}e=e+1|0}}}}while(0);e=n+10|0;n=0;while(1){if((n|0)>=(r|0))break;f=i+(n<<2)|0;if((t[f>>2]|0)<0)t[f>>2]=e;n=n+1|0}h=w;return}function aU(e,A){e=e|0;A=A|0;t[t[e>>2]>>2]=A;t[e+12>>2]=0;t[e+8>>2]=1;return}function tU(e,A){e=e|0;A=A|0;var r=0,i=0;r=e+12|0;i=t[r>>2]|0;if((i|0)<(t[e+8>>2]|0)){e=t[e>>2]|0;t[r>>2]=i+1;t[A>>2]=t[e+(i<<2)>>2];e=1}else e=0;return e|0}function nU(e,A){e=e|0;A=A|0;var r=0,i=0;r=e+8|0;i=t[r>>2]|0;if((i|0)<(t[e+4>>2]|0)){e=t[e>>2]|0;t[r>>2]=i+1;t[e+(i<<2)>>2]=A;e=1}else e=0;return e|0}function fU(e,A){e=e|0;A=A|0;t[e>>2]=$F(A<<2)|0;t[e+4>>2]=A;t[e+8>>2]=0;t[e+12>>2]=0;return}function lU(e){e=e|0;G2(t[e>>2]|0);return}function sU(e,A,r){e=e|0;A=A|0;r=r|0;var i=0.0,a=0,n=0,f=0;if(!0)n=0;else{G3(93216,25,1,t[15712]|0)|0;n=0}while(1){if((n|0)>=(e|0))break;f=A+(n<<2)|0;a=0;i=0.0;while(1){if((a|0)==(e|0))break;if((n|0)!=(a|0))i=+c[(t[f>>2]|0)+(a<<3)>>3]+i;a=a+1|0}c[(t[f>>2]|0)+(n<<3)>>3]=-i;n=n+1|0}return sO(A,r,e+-1|0)|0}function cU(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0,f=0,l=0,s=0,o=0.0;l=lP(A,A,0.0)|0;s=lP(A,A,0.0)|0;i=sd(e)|0;while(1){if(!i)break;r=ek(e,i)|0;while(1){if(!r)break;n=t[r>>2]&3;a=(t[t[((n|0)==3?r:r+48|0)+40>>2]>>2]|0)>>>4;n=(t[t[((n|0)==2?r:r+-48|0)+40>>2]>>2]|0)>>>4;if((a|0)!=(n|0)){o=-1.0/+c[(t[r+16>>2]|0)+136>>3];c[(t[l+(n<<2)>>2]|0)+(a<<3)>>3]=o;c[(t[l+(a<<2)>>2]|0)+(n<<3)>>3]=o}r=Ak(e,r,i)|0}i=cd(e,i)|0}f=sU(A,l,s)|0;e:do{if(f|0){a=e+16|0;i=0;while(1){if((i|0)>=(A|0))break e;n=s+(i<<2)|0;r=0;while(1){if((r|0)==(A|0))break;e=t[n>>2]|0;c[(t[(t[(t[a>>2]|0)+160>>2]|0)+(i<<2)>>2]|0)+(r<<3)>>3]=+c[(t[s+(r<<2)>>2]|0)+(r<<3)>>3]+ +c[e+(i<<3)>>3]+ +c[e+(r<<3)>>3]*-2.0;r=r+1|0}i=i+1|0}}}while(0);sP(l);sP(s);return f|0}function oU(e,A,r,i,a,t){e=e|0;A=A|0;r=r|0;i=i|0;a=+a;t=t|0;var n=0.0,f=0.0,l=0,s=0,c=0,o=0,u=0,b=0,w=0,k=0,d=0,v=0;v=h;h=h+16|0;s=v;u=i<<3;b=$F(u)|0;w=$F(u)|0;k=$F(u)|0;c=$F(u)|0;o=$F(u)|0;u=$F(u)|0;ZO(i,r,u);mO(i,u);mO(i,A);EO(e,i,A,c);yO(i,u,c,b);ZO(i,b,w);l=t+-1|0;r=0;n=+GO(i,b,b);while(1){if((r|0)>=(t|0)){r=0;break}if(!(+LO(i,b)>a)){r=0;break}EO(e,i,w,k);f=+GO(i,w,k);if(f==0.0){r=0;break}f=n/f;IO(i,w,f,o);CO(i,A,o,A);if((r|0)<(l|0)){IO(i,k,f,k);yO(i,b,k,b);f=+GO(i,b,b);if(n==0.0){d=7;break}IO(i,w,f/n,w);CO(i,b,w,w);n=f}r=r+1|0}if((d|0)==7){nw(1,93242,s)|0;r=1}G2(b);G2(w);G2(k);G2(c);G2(o);G2(u);h=v;return r|0}function uU(e,A,r,i,a,t,n){e=e|0;A=A|0;r=r|0;i=i|0;a=+a;t=t|0;n=n|0;var f=0.0,l=0.0,s=0,c=0,o=0,u=0,b=0,w=0,k=0,d=0,v=0;v=h;h=h+16|0;s=v;b=i<<3;w=$F(b)|0;k=$F(b)|0;c=$F(b)|0;o=$F(b)|0;u=$F(b)|0;b=$F(b)|0;ZO(i,r,b);if(n<<24>>24){mO(i,b);mO(i,A)}BO(e,i,A,o);yO(i,b,o,w);ZO(i,w,k);n=t+-1|0;r=0;f=+GO(i,w,w);while(1){if((r|0)>=(t|0)){r=0;break}if(!(+LO(i,w)>a)){r=0;break}BO(e,i,k,c);l=+GO(i,k,c);if(l==0.0){r=0;break}l=f/l;IO(i,k,l,u);CO(i,A,u,A);if((r|0)<(n|0)){IO(i,c,l,c);yO(i,w,c,w);l=+GO(i,w,w);if(f==0.0){d=9;break}IO(i,k,l/f,k);CO(i,w,k,k);f=l}r=r+1|0}if((d|0)==9){nw(1,93242,s)|0;r=1}G2(w);G2(k);G2(c);G2(o);G2(u);G2(b);h=v;return r|0}function bU(e,A,r,i,a,t){e=e|0;A=A|0;r=r|0;i=i|0;a=+a;t=t|0;var n=0.0,f=0.0,l=0,s=0,c=0,o=0,u=0,b=0,w=0,k=0;k=h;h=h+16|0;s=k;c=i<<2;o=KF(c)|0;u=KF(c)|0;b=KF(c)|0;c=KF(c)|0;DO(i,A);DO(i,r);zO(e,i,A,c);DO(i,c);WO(i,r,c,o);VO(i,o,u);l=t+-1|0;r=0;n=+NO(i,o,o);while(1){if((r|0)>=(t|0)){r=0;break}if(!(+JO(i,o)>a)){r=0;break}DO(i,u);DO(i,A);DO(i,o);zO(e,i,u,b);DO(i,b);f=+NO(i,u,b);if(f==0.0){r=0;break}f=n/f;FO(i,A,f,u);if((r|0)<(l|0)){FO(i,o,-f,b);f=+NO(i,o,o);if(n==0.0){w=7;break}MO(i,u,f/n,u);YO(i,o,u,u);n=f}r=r+1|0}if((w|0)==7){nw(1,93242,s)|0;r=1}G2(o);G2(u);G2(b);G2(c);h=k;return r|0}function hU(e,A,r,i,a,n,f,l,o,u){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;n=n|0;f=f|0;l=l|0;o=o|0;u=+u;var b=0,w=0,k=0.0,d=0,v=0,g=0,m=0,p=0.0,E=0,B=0,y=0,C=0,I=0.0,Z=0,G=0,L=0,D=0,z=0,W=0,Y=0,F=0,M=0,V=0,N=0,R=0.0;N=h;h=h+48|0;D=N+24|0;L=N+16|0;G=N+8|0;Z=N;F=N+40|0;M=N+36|0;W=N+32|0;v=f&4;t[F>>2]=0;t[M>>2]=0;e:do{if(t[e+16>>2]|0){w=0;b=0;while(1){if((w|0)>=(A|0))break;g=t[e+(w*20|0)>>2]|0;m=e+(w*20|0)+16|0;d=1;while(1){if((d|0)>=(g|0))break;if(!(b<<24>>24))b=+s[(t[m>>2]|0)+(d<<2)>>2]!=0.0;else b=1;d=d+1|0;b=b&1}w=w+1|0}if(b<<24>>24){C=(v|0)!=0;if(C){d=i+4|0;A:do{if((n|0)>2){b=n+-1|0;if((rP(e,A,r,d,a,b,f,l,15)|0)<0){b=-1;break e}w=i+(b<<2)|0;b=0;while(1){if((b|0)>=(A|0))break A;c[(t[w>>2]|0)+(b<<3)>>3]=+c[(t[d>>2]|0)+(b<<3)>>3];b=b+1|0}}}while(0);y=t[i>>2]|0;E=t[d>>2]|0;if((_O(e,A,E,A)|0)==0?(gb(e,A,.01,.1,E,F,M,W)|0)==0:0){B=t[W>>2]|0;if((B|0)<1){b=rP(e,A,r,i,a,n,f,l,o)|0;break}A:do{if(u>0.0){v=t[F>>2]|0;g=t[M>>2]|0;m=B+-1|0;k=0.0;d=0;while(1){if((d|0)>=(B|0))break A;b=t[g+(d<<2)>>2]|0;I=u-k-+c[E+(t[v+(b<<2)>>2]<<3)>>3]+ +c[E+(t[v+(b+-1<<2)>>2]<<3)>>3];k=(I<0.0?0.0:I)+k;if((d|0)<(m|0))w=t[g+(d+1<<2)>>2]|0;else w=A;while(1){if((b|0)>=(w|0))break;Y=E+(t[v+(b<<2)>>2]<<3)|0;c[Y>>3]=+c[Y>>3]+k;b=b+1|0}d=d+1|0}}}while(0);if((n|0)==2?(L_(e,A,E,y,+c[23294])|0)!=0:0){w=0;b=-1}else V=33}else{w=0;b=-1}}else{_H(e,A,n,i,a)|0;if(!(gb(e,A,.01,.1,0,F,M,W)|0))V=33;else{w=0;b=-1}}A:do{if((V|0)==33){if((A|0)==1){b=0;break e}Y=$F(t[W>>2]<<2)|0;if(!o){b=0;break e}if(0)lx();switch(l|0){case 2:{if(0)G3(93290,24,1,t[15712]|0)|0;b=AP(e,A)|0;V=46;break}case 1:{b=qH(e,A)|0;if(!b){nw(0,93315,Z)|0;nw(3,93364,G)|0;V=47}else z=b;break}case 3:{if(0)G3(93417,21,1,t[15712]|0)|0;b=KH(e,A)|0;V=46;break}default:V=47}if((V|0)==46)if(!b)V=47;else z=b;if((V|0)==47){if(0)G3(93439,26,1,t[15712]|0)|0;z=eP(e,A)|0}if(0){e=t[15712]|0;c[L>>3]=+sx();a3(e,93466,L)|0;G3(93478,25,1,e)|0;lx()}e=A+-1|0;y=(P(e,A)|0)/2|0;L=y+A|0;r:do{if(!C){k=1.0;w=0;while(1){if((w|0)>=(n|0))break;d=i+(w<<2)|0;b=0;while(1){if((b|0)>=(A|0))break;I=+Q(+ +c[(t[d>>2]|0)+(b<<3)>>3]);k=I>k?I:k;b=b+1|0}w=w+1|0}k=1.0/k;w=0;while(1){if((w|0)>=(n|0))break r;d=i+(w<<2)|0;b=0;while(1){if((b|0)>=(A|0))break;G=(t[d>>2]|0)+(b<<3)|0;c[G>>3]=+c[G>>3]*(10.0*k);b=b+1|0}w=w+1|0}}}while(0);r:do{if(u>0.0){p=+(y|0);b=0;k=0.0;v=0;i:while(1){if((v|0)>=(e|0))break;g=v+1|0;d=b;w=g;while(1){b=d+1|0;if((w|0)>=(A|0)){v=g;continue i}I=+jT(i,n,v,w);d=b;k=I/+s[z+(b<<2)>>2]+k;w=w+1|0}}k=k/p;b=0;while(1){if((b|0)>=(L|0)){b=0;break r}G=z+(b<<2)|0;s[G>>2]=+s[G>>2]*k;b=b+1|0}}else b=0}while(0);while(1){if((b|0)>=(n|0))break;mO(A,t[i+(b<<2)>>2]|0);b=b+1|0}w=t[i+4>>2]|0;k=+c[w>>3];b=0;while(1){if((b|0)>=(A|0))break;G=w+(b<<3)|0;c[G>>3]=+c[G>>3]-k;b=b+1|0}m=n<<2;G=$F(m)|0;B=A<<2;E=P(B,n)|0;d=$F(E)|0;b=0;while(1){if((b|0)>=(n|0))break;v=d+((P(b,A)|0)<<2)|0;t[G+(b<<2)>>2]=v;g=i+(b<<2)|0;w=0;while(1){if((w|0)>=(A|0))break;s[v+(w<<2)>>2]=+c[(t[g>>2]|0)+(w<<3)>>3];w=w+1|0}b=b+1|0}p=+(y|0);if(0){Z=t[15712]|0;c[D>>3]=+sx();a3(Z,93504,D)|0}HO(L,z);PO(L,z);Z=$F(A<<3)|0;RO(A,0.0,Z);b=0;d=0;while(1){if((d|0)>=(e|0)){b=A;w=0;d=0;break}v=A-d|0;k=0.0;w=1;while(1){b=b+1|0;if((w|0)>=(v|0))break;I=+s[z+(b<<2)>>2];D=Z+(w+d<<3)|0;c[D>>3]=+c[D>>3]-I;k=k+I;w=w+1|0}D=Z+(d<<3)|0;c[D>>3]=+c[D>>3]-k;d=d+1|0}while(1){if((w|0)>=(A|0))break;s[z+(d<<2)>>2]=+c[Z+(w<<3)>>3];D=b+d|0;b=b+-1|0;w=w+1|0;d=D}l=$F(m)|0;t[l>>2]=$F(E)|0;b=1;while(1){if((b|0)>=(n|0))break;t[l+(b<<2)>>2]=(t[l>>2]|0)+((P(b,A)|0)<<2);b=b+1|0}C=$F(B)|0;a=$F(B)|0;f=$F(L<<2)|0;w=d_(z,A)|0;r=E_(z,A,t[F>>2]|0,t[M>>2]|0,t[W>>2]|0)|0;y=l+4|0;d=0;I=1797693134862315708145274.0e284;b=0;while(1){if(!(d<<24>>24==0&(b|0)<(o|0)))break;RO(A,0.0,Z);XO(L,z,f);E=0;g=0;while(1){if((E|0)>=(e|0)){d=0;v=A;g=0;break}B=A-E+-1|0;xO(A,0.0,a);d=0;while(1){if((d|0)>=(n|0))break;W=G+(d<<2)|0;xO(B,+s[(t[W>>2]|0)+(E<<2)>>2],C);FO(B,C,-1.0,(t[W>>2]|0)+(E<<2)+4|0);HO(B,C);YO(B,C,a,a);d=d+1|0}SO(B,a);d=0;while(1){if((d|0)>=(B|0))break;v=a+(d<<2)|0;k=+s[v>>2];if(k>=3402823466385288598117041.0e14|k<0.0)s[v>>2]=0.0;d=d+1|0}m=E+1|0;k=0.0;d=g;v=0;while(1){d=d+1|0;if((v|0)>=(B|0))break;W=f+(d<<2)|0;R=+s[W>>2]*+s[a+(v<<2)>>2];s[W>>2]=R;W=Z+(m+v<<3)|0;c[W>>3]=+c[W>>3]-R;k=k+R;v=v+1|0}g=Z+(E<<3)|0;c[g>>3]=+c[g>>3]-k;E=m;g=d}while(1){if((d|0)>=(A|0)){d=0;break}s[f+(g<<2)>>2]=+c[Z+(d<<3)>>3];W=v+g|0;d=d+1|0;v=v+-1|0;g=W}while(1){if((d|0)>=(n|0)){k=0.0;d=0;break}zO(f,A,t[G+(d<<2)>>2]|0,t[l+(d<<2)>>2]|0);d=d+1|0}while(1){if((d|0)>=(n|0))break;k=+NO(A,t[G+(d<<2)>>2]|0,t[l+(d<<2)>>2]|0)+k;d=d+1|0}k=k*2.0+p;d=0;while(1){if((d|0)>=(n|0))break;W=G+(d<<2)|0;zO(z,A,t[W>>2]|0,C);k=k-+NO(A,t[W>>2]|0,C);d=d+1|0}R=+Q(+(k-I))/+Q(+(I+1.0e-10));d=((b|0)>1&k>I|R<+c[23294])&1;v=0;while(1){if((v|0)>=(n|0))break;if((v|0)!=1){if(bU(z,t[G+(v<<2)>>2]|0,t[l+(v<<2)>>2]|0,A,.001,A)|0){b=-1;break A}}else v_(r,t[y>>2]|0,G,n,1,15,Y,u)|0;v=v+1|0}I=k;b=b+1|0}G2(Y);p_(r);if(G|0){d=0;while(1){if((d|0)>=(n|0))break;g=G+(d<<2)|0;m=i+(d<<2)|0;v=0;while(1){if((v|0)>=(A|0))break;c[(t[m>>2]|0)+(v<<3)>>3]=+s[(t[g>>2]|0)+(v<<2)>>2];v=v+1|0}d=d+1|0}G2(t[G>>2]|0);G2(G)}if(l|0){G2(t[l>>2]|0);G2(l)}G2(C);G2(a);G2(Z);G2(z);G2(f)}}while(0);G2(t[F>>2]|0);G2(t[M>>2]|0);if(w){G2(t[w>>2]|0);G2(w)}}else V=10}else V=10}while(0);if((V|0)==10)b=rP(e,A,r,i,a,n,f,l,o)|0;h=N;return b|0}function wU(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0,f=0,l=0,s=0,o=0;o=h;h=h+48|0;a=o+24|0;n=o+12|0;r=o;f=gk(e)|0;s=$F(f*48|0)|0;Kj(r,e);t[n>>2]=t[r>>2];t[n+4>>2]=t[r+4>>2];t[n+8>>2]=t[r+8>>2];r=sd(e)|0;i=s;while(1){if(!r)break;t[a>>2]=t[n>>2];t[a+4>>2]=t[n+4>>2];t[a+8>>2]=t[n+8>>2];kU(r,i,a);r=cd(e,r)|0;i=i+48|0}e:do{if(!(dU(s,f)|0))r=0;else{switch(A|0){case 9:{gU(e,s,f,70,1);pU(e,s,f,71,1);r=0;i=s;break}case 10:{pU(e,s,f,71,1);gU(e,s,f,70,1);r=0;i=s;break}case 7:{gU(e,s,f,72,1);pU(e,s,f,71,1);l=9;break}case 8:{l=9;break}case 13:{l=10;break}case 14:{pU(e,s,f,71,0);gU(e,s,f,70,0);r=0;i=s;break}case 12:{pU(e,s,f,73,0);gU(e,s,f,70,0);r=0;i=s;break}default:{gU(e,s,f,72,0);pU(e,s,f,71,0);r=0;i=s}}if((l|0)==9){pU(e,s,f,73,1);gU(e,s,f,70,1);l=10}if((l|0)==10){gU(e,s,f,70,0);pU(e,s,f,71,0);r=0;i=s}while(1){if((r|0)>=(f|0)){r=1;break e}n=t[i+16>>2]|0;l=t[(t[(t[i+20>>2]|0)+16>>2]|0)+132>>2]|0;c[l>>3]=+(t[i+12>>2]|0)*1.3888888888888887e-03;c[l+8>>3]=+(n|0)*1.3888888888888887e-03;r=r+1|0;i=i+48|0}}}while(0);G2(s);h=o;return r|0}function kU(e,A,r){e=e|0;A=A|0;r=r|0;var a=0,n=0,f=0,l=0,o=0.0,u=0.0;a=t[e+16>>2]|0;l=t[a+132>>2]|0;o=+c[l>>3]*720.0;f=~~(o+(o>=0.0?.5:-.5));o=+c[l+8>>3]*720.0;l=~~(o+(o>=0.0?.5:-.5));if(!(i[r+8>>0]|0)){u=+c[a+32>>3]*72.0*(+s[r>>2]*5.0);o=+c[a+40>>3]*72.0*(+s[r+4>>2]*5.0);n=~~(u+(u>=0.0?.5:-.5));a=~~(o+(o>=0.0?.5:-.5))}else{o=+c[a+32>>3]*36.0;u=+c[a+40>>3]*36.0;n=~~((+s[r>>2]+ +(~~(o+(o>=0.0?.5:-.5))|0))*10.0);a=~~((+s[r+4>>2]+ +(~~(u+(u>=0.0?.5:-.5))|0))*10.0)}t[A+12>>2]=f;t[A+16>>2]=l;t[A+20>>2]=e;t[A+32>>2]=f-n;t[A+36>>2]=l-a;t[A+40>>2]=n+f;t[A+44>>2]=a+l;return}function dU(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0,f=0,l=0,s=0,c=0;c=A+-1|0;r=0;e:while(1){if((r|0)>=(c|0)){e=0;break}s=e+48|0;r=r+1|0;n=e+32|0;f=e+40|0;l=e+36|0;a=e+44|0;e=s;i=r;while(1){if((i|0)>=(A|0)){e=s;continue e}if((((t[n>>2]|0)<=(t[e+40>>2]|0)?(t[e+32>>2]|0)<=(t[f>>2]|0):0)?(t[l>>2]|0)<=(t[e+44>>2]|0):0)?(t[e+36>>2]|0)<=(t[a>>2]|0):0){e=1;break e}e=e+48|0;i=i+1|0}}return e|0}function vU(e,A){e=e|0;A=A|0;if((t[e+36>>2]|0)>(t[A+44>>2]|0))e=0;else e=(t[A+36>>2]|0)<=(t[e+44>>2]|0)&1;return e|0}function gU(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;var n=0,f=0,l=0;l=Uh(18168,t[4584]|0)|0;n=A;f=0;while(1){if((f|0)>=(r|0))break;t[n+8>>2]=t[n+12>>2];L5[t[l>>2]&63](l,n,1)|0;n=n+48|0;f=f+1|0}if(!a)f=ZU(e,l,i,74)|0;else f=IU(l,i,74)|0;VM(f,2,2147483647)|0;n=0;while(1){if((n|0)>=(r|0))break;a=A+12|0;e=t[(t[(t[A+24>>2]|0)+16>>2]|0)+232>>2]|0;i=e-(t[a>>2]|0)|0;t[a>>2]=e;a=A+32|0;t[a>>2]=(t[a>>2]|0)+i;a=A+40|0;t[a>>2]=(t[a>>2]|0)+i;A=A+48|0;n=n+1|0}GU(f);Ph(l)|0;return}function mU(e,A){e=e|0;A=A|0;if((t[e+32>>2]|0)>(t[A+40>>2]|0))e=0;else e=(t[A+32>>2]|0)<=(t[e+40>>2]|0)&1;return e|0}function pU(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;var n=0,f=0,l=0;l=Uh(18168,t[4584]|0)|0;n=A;f=0;while(1){if((f|0)>=(r|0))break;t[n+8>>2]=t[n+16>>2];L5[t[l>>2]&63](l,n,1)|0;n=n+48|0;f=f+1|0}if(!a)f=ZU(e,l,i,75)|0;else f=IU(l,i,75)|0;VM(f,2,2147483647)|0;n=0;while(1){if((n|0)>=(r|0))break;a=A+16|0;e=t[(t[(t[A+24>>2]|0)+16>>2]|0)+232>>2]|0;i=e-(t[a>>2]|0)|0;t[a>>2]=e;a=A+36|0;t[a>>2]=(t[a>>2]|0)+i;a=A+44|0;t[a>>2]=(t[a>>2]|0)+i;A=A+48|0;n=n+1|0}GU(f);Ph(l)|0;return}function EU(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0;r=e+32|0;i=A+32|0;if((t[e+36>>2]|0)<=(t[A+44>>2]|0)?(t[A+36>>2]|0)<=(t[e+44>>2]|0):0)if((t[e+40>>2]|0)<(t[i>>2]|0))e=1;else{n=CU(r,i)|0;n=n-(t[A+12>>2]|0)+(t[e+12>>2]|0)|0;A=t[A+16>>2]|0;e=t[e+16>>2]|0;a=(A|0)<(e|0);i=yU(r,i)|0;e=(n|0)<=(i-(a?e:A)+(a?A:e)|0)&1}else e=0;return e|0}function BU(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0;r=e+32|0;i=A+32|0;if((t[r>>2]|0)<=(t[A+40>>2]|0)?(t[i>>2]|0)<=(t[e+40>>2]|0):0)if((t[e+44>>2]|0)<(t[A+36>>2]|0))e=1;else{n=yU(r,i)|0;n=n-(t[A+16>>2]|0)+(t[e+16>>2]|0)|0;A=t[A+12>>2]|0;e=t[e+12>>2]|0;a=(A|0)<(e|0);i=CU(r,i)|0;e=(n|0)<=(i-(a?e:A)+(a?A:e)|0)&1}else e=0;return e|0}function yU(e,A){e=e|0;A=A|0;return((t[e+12>>2]|0)-(t[e+4>>2]|0)+(t[A+12>>2]|0)-(t[A+4>>2]|0)|0)/2|0|0}function CU(e,A){e=e|0;A=A|0;return((t[e+8>>2]|0)-(t[e>>2]|0)+(t[A+8>>2]|0)-(t[A>>2]|0)|0)/2|0|0}function IU(e,A,r){e=e|0;A=A|0;r=r|0;var n=0,f=0,l=0,s=0,c=0,o=0,u=0,b=0,w=0,k=0,d=0,v=0,g=0,m=0,p=0,E=0,B=0;B=h;h=h+16|0;p=B;i[p>>0]=i[18588]|0;i[p+1>>0]=i[18589]|0;i[p+2>>0]=i[18590]|0;i[p+3>>0]=i[18591]|0;E=hk(93515,p,0)|0;Sd(E,137483,280,1)|0;n=Sh(e)|0;f=-2147483647;m=0;while(1){if(!n)break;v=t[n+8>>2]|0;g=m+((f|0)!=(v|0)&1)|0;n=t[n>>2]|0;f=v;m=g}v=E+16|0;g=(m<<3)+-4|0;u=0;s=0;n=0;f=0;o=0;d=Sh(e)|0;l=-2147483647;while(1){if(!d)break;k=t[d+8>>2]|0;if((l|0)!=(k|0)){w=gd(E,Mk(t[d+20>>2]|0)|0,1)|0;Sd(w,137447,304,1)|0;b=w+16|0;n=t[b>>2]|0;t[n+112>>2]=d;if(!f){t[(t[v>>2]|0)+192>>2]=w;u=w}else{t[(t[u+16>>2]|0)+164>>2]=w;u=f}t[n+176>>2]=0;c=s+1|0;l=KF(c<<2)|0;t[(t[b>>2]|0)+172>>2]=l;if(!o){s=c;c=w;o=w;n=w;f=u;l=k}else{l=o+16|0;t[(t[l>>2]|0)+184>>2]=0;s=KF((o|0)==(u|0)?g:m-s<<2)|0;t[(t[l>>2]|0)+180>>2]=s;s=lk(E,o,w,0,1)|0;Sd(s,137460,176,1)|0;n=t[s+16>>2]|0;a[n+170>>1]=10;t[n+156>>2]=1;n=t[l>>2]|0;f=t[n+180>>2]|0;if(!f)n=$F((t[n+184>>2]<<2)+8|0)|0;else n=AM(f,(t[n+184>>2]<<2)+8|0)|0;o=t[l>>2]|0;t[o+180>>2]=n;o=o+184|0;f=t[o>>2]|0;t[o>>2]=f+1;t[n+(f<<2)>>2]=s;n=t[l>>2]|0;t[(t[n+180>>2]|0)+(t[n+184>>2]<<2)>>2]=0;n=t[b>>2]|0;f=t[n+172>>2]|0;if(!f)n=$F((t[n+176>>2]<<2)+8|0)|0;else n=AM(f,(t[n+176>>2]<<2)+8|0)|0;f=t[b>>2]|0;t[f+172>>2]=n;f=f+176|0;o=t[f>>2]|0;t[f>>2]=o+1;t[n+(o<<2)>>2]=s;s=t[b>>2]|0;t[(t[s+172>>2]|0)+(t[s+176>>2]<<2)>>2]=0;s=c;c=w;o=w;n=w;f=u;l=k}}else{c=n;n=u}t[d+24>>2]=c;u=n;n=c;d=t[d>>2]|0}o=o+16|0;t[(t[o>>2]|0)+184>>2]=0;n=KF(4)|0;t[(t[o>>2]|0)+180>>2]=n;i[p>>0]=i[18588]|0;i[p+1>>0]=i[18589]|0;i[p+2>>0]=i[18590]|0;i[p+3>>0]=i[18591]|0;o=hk(93562,p,0)|0;n=Sh(e)|0;while(1){if(!n)break;p=gd(o,Mk(t[n+20>>2]|0)|0,1)|0;Sd(p,137447,304,1)|0;t[n+28>>2]=p;t[(t[p+16>>2]|0)+112>>2]=n;n=t[n>>2]|0}n=0;c=Sh(e)|0;f=-2147483647;e:while(1){if(!c)break;s=t[c+8>>2]|0;A:do{if((f|0)==(s|0))s=f;else{n=c;while(1){n=t[n>>2]|0;if(!n)break e;if((t[n+8>>2]|0)!=(s|0))break A}}}while(0);l=c+28|0;f=n;while(1){if(!f)break;if(Z5[A&127](c,f)|0)lk(o,t[l>>2]|0,t[f+28>>2]|0,0,1)|0;f=t[f>>2]|0}c=t[c>>2]|0;f=s}LU(o,E,r);vk(o)|0;h=B;return E|0}function ZU(e,A,r,n){e=e|0;A=A|0;r=r|0;n=n|0;var f=0,l=0,s=0,c=0,o=0,u=0,b=0,w=0,k=0,d=0,v=0,g=0;v=h;h=h+16|0;d=v;i[d>>0]=i[18588]|0;i[d+1>>0]=i[18589]|0;i[d+2>>0]=i[18590]|0;i[d+3>>0]=i[18591]|0;d=hk(93515,d,0)|0;Sd(d,137483,280,1)|0;c=d+16|0;f=Sh(A)|0;l=0;while(1){if(!f)break;s=gd(d,Mk(t[f+20>>2]|0)|0,1)|0;Sd(s,137447,304,1)|0;w=s+16|0;u=t[w>>2]|0;t[u+112>>2]=f;t[f+24>>2]=s;t[u+176>>2]=0;u=KF(4)|0;b=t[w>>2]|0;t[b+172>>2]=u;t[b+184>>2]=0;b=KF(4)|0;t[(t[w>>2]|0)+180>>2]=b;if(!l)t[(t[c>>2]|0)+192>>2]=s;else t[(t[l+16>>2]|0)+164>>2]=s;f=t[f>>2]|0;l=s}o=Sh(A)|0;e:while(1){if(!o)break;u=o+32|0;b=o+24|0;w=o+20|0;f=o;while(1){f=t[f>>2]|0;if(!f)break;if(Z5[r&127](o,f)|0){l=Z5[n&127](u,f+32|0)|0;s=lk(d,t[b>>2]|0,t[f+24>>2]|0,0,1)|0;Sd(s,137460,176,1)|0;if((l|0)>=65536){k=13;break e}c=s+16|0;g=t[c>>2]|0;a[g+170>>1]=l;t[g+156>>2]=1;if(s|0?lk(e,t[w>>2]|0,t[f+20>>2]|0,0,0)|0:0)t[(t[c>>2]|0)+156>>2]=100}}o=t[o>>2]|0}if((k|0)==13)ge(93518,93534,254,93547);o=Sh(A)|0;while(1){if(!o)break;c=t[o+24>>2]|0;u=c+16|0;c=Ow(d,c)|0;while(1){if(!c)break;f=t[u>>2]|0;l=t[f+180>>2]|0;if(!l)f=$F((t[f+184>>2]<<2)+8|0)|0;else f=AM(l,(t[f+184>>2]<<2)+8|0)|0;l=t[u>>2]|0;t[l+180>>2]=f;l=l+184|0;s=t[l>>2]|0;t[l>>2]=s+1;t[f+(s<<2)>>2]=c;s=t[u>>2]|0;t[(t[s+180>>2]|0)+(t[s+184>>2]<<2)>>2]=0;s=c+-48|0;f=t[(t[((t[c>>2]&3|0)==2?c:s)+40>>2]|0)+16>>2]|0;l=t[f+172>>2]|0;if(!l)f=$F((t[f+176>>2]<<2)+8|0)|0;else f=AM(l,(t[f+176>>2]<<2)+8|0)|0;t[(t[(t[((t[c>>2]&3|0)==2?c:s)+40>>2]|0)+16>>2]|0)+172>>2]=f;n=t[(t[((t[c>>2]&3|0)==2?c:s)+40>>2]|0)+16>>2]|0;k=t[n+172>>2]|0;n=n+176|0;g=t[n>>2]|0;t[n>>2]=g+1;t[k+(g<<2)>>2]=c;g=t[(t[((t[c>>2]&3|0)==2?c:s)+40>>2]|0)+16>>2]|0;t[(t[g+172>>2]|0)+(t[g+176>>2]<<2)>>2]=0;c=qw(d,c)|0}o=t[o>>2]|0}h=v;return d|0}function GU(e){e=e|0;var A=0,r=0,i=0,a=0;a=sd(e)|0;while(1){if(!a)break;r=a+16|0;A=t[r>>2]|0;i=t[A+172>>2]|0;if(i){G2(i);A=t[r>>2]|0}A=t[A+180>>2]|0;if(A|0)G2(A);a=cd(e,a)|0}vk(e)|0;return}function LU(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,n=0,f=0,l=0,s=0,c=0,o=0,u=0,b=0,h=0,w=0,k=0;c=sd(e)|0;while(1){if(!c)break;b=t[(t[c+16>>2]|0)+112>>2]|0;u=t[b+24>>2]|0;b=b+32|0;h=u+16|0;o=Ow(e,c)|0;while(1){if(!o)break;f=t[(t[(t[((t[o>>2]&3|0)==2?o:o+-48|0)+40>>2]|0)+16>>2]|0)+112>>2]|0;w=Z5[r&127](b,f+32|0)|0;f=t[f+24>>2]|0;l=lk(A,u,f,0,1)|0;Sd(l,137460,176,1)|0;s=l+16|0;i=t[s>>2]|0;t[i+156>>2]=1;n=a[i+170>>1]|0;if((w|0)>(n&65535|0)){if(!(n<<16>>16)){i=t[h>>2]|0;n=t[i+180>>2]|0;if(!n)i=$F((t[i+184>>2]<<2)+8|0)|0;else i=AM(n,(t[i+184>>2]<<2)+8|0)|0;k=t[h>>2]|0;t[k+180>>2]=i;k=k+184|0;n=t[k>>2]|0;t[k>>2]=n+1;t[i+(n<<2)>>2]=l;i=t[h>>2]|0;t[(t[i+180>>2]|0)+(t[i+184>>2]<<2)>>2]=0;f=f+16|0;i=t[f>>2]|0;n=t[i+172>>2]|0;if(!n)i=$F((t[i+176>>2]<<2)+8|0)|0;else i=AM(n,(t[i+176>>2]<<2)+8|0)|0;n=t[f>>2]|0;t[n+172>>2]=i;n=n+176|0;k=t[n>>2]|0;t[n>>2]=k+1;t[i+(k<<2)>>2]=l;i=t[f>>2]|0;t[(t[i+172>>2]|0)+(t[i+176>>2]<<2)>>2]=0;i=t[s>>2]|0}a[i+170>>1]=w}o=qw(e,o)|0}c=cd(e,c)|0}return}function QU(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;return(t[A>>2]|0)-(t[r>>2]|0)|0}function DU(e,A){e=e|0;A=A|0;var r=0,a=0,n=0.0,f=0.0,l=0.0,o=0.0,u=0.0,b=0.0,w=0,k=0,d=0,v=0,g=0,m=0,p=0,E=0,B=0,y=0,C=0.0,I=0.0;y=h;h=h+64|0;m=y+24|0;v=y+16|0;d=y+52|0;k=y+40|0;g=y;E=gk(e)|0;B=$F(E*72|0)|0;Kj(k,e);l=+s[k>>2];o=+s[k+4>>2];k=(i[k+8>>0]|0)!=0;l=k?l*.013888888888888888:l;o=k?o*.013888888888888888:o;u=l*.5;b=o*.5;r=B;a=sd(e)|0;while(1){if(!a)break;w=t[a+16>>2]|0;n=+c[w+32>>3];if(k){f=+c[w+40>>3]*.5+o;n=n*.5+l}else{f=b*+c[w+40>>3];n=u*n}w=t[w+132>>2]|0;I=+c[w>>3];c[r>>3]=I;C=+c[w+8>>3];c[r+8>>3]=C;c[r+16>>3]=I-n;c[r+24>>3]=C-f;c[r+32>>3]=I+n;c[r+40>>3]=C+f;c[r+48>>3]=n;c[r+56>>3]=f;t[r+64>>2]=a;r=r+72|0;a=cd(e,a)|0}do{if((A|0)<0){n=+zU(B,E);if(n==0.0){G2(B);r=0;break}if(!0){l=n;f=n;p=19}else{p=t[15712]|0;c[v>>3]=n;a3(p,93565,v)|0;l=n;f=n;p=19}}else{a=WU(B,E,d)|0;r=t[d>>2]|0;if(!r){G2(a);G2(B);r=0;break}if(!A){FU(g,a,r);n=+c[g>>3];f=+c[g+8>>3]}else{f=+YU(a,r);n=f}G2(a);if(!0){l=n;p=19}else{p=t[15712]|0;c[m>>3]=n;c[m+8>>3]=f;a3(p,93579,m)|0;l=n;p=19}}}while(0);if((p|0)==19){r=0;a=B;while(1){if((r|0)>=(E|0))break;p=t[(t[(t[a+64>>2]|0)+16>>2]|0)+132>>2]|0;c[p>>3]=+c[a>>3]*l;c[p+8>>3]=+c[a+8>>3]*f;r=r+1|0;a=a+72|0}G2(B);r=1}h=y;return r|0}function zU(e,A){e=e|0;A=A|0;var r=0.0,i=0,a=0.0,t=0.0,n=0.0,f=0,l=0,s=0,o=0,u=0,b=0,h=0,w=0,k=0,d=0;r=0.0;i=0;e:while(1){if((i|0)>=(A|0))break;d=e+72|0;i=i+1|0;u=e+16|0;b=e+8|0;h=e+56|0;w=e+48|0;k=e+32|0;s=e+24|0;o=e+40|0;f=i;l=d;while(1){if((f|0)>=(A|0)){e=d;continue e}if(((+c[u>>3]<=+c[l+32>>3]?+c[l+16>>3]<=+c[k>>3]:0)?+c[s>>3]<=+c[l+40>>3]:0)?+c[l+24>>3]<=+c[o>>3]:0){r=0.0;break e}a=+c[e>>3];t=+c[l>>3];if(a==t)n=E;else{n=+Q(+(a-t));n=(+c[l+48>>3]+ +c[w>>3])/n}a=+c[b>>3];t=+c[l+8>>3];if(a==t)a=E;else{a=+Q(+(a-t));a=(+c[l+56>>3]+ +c[h>>3])/a}n=ar?n:r}}return+r}function WU(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0.0,n=0.0,f=0,l=0.0,s=0,o=0,u=0,b=0,h=0,w=0,k=0,d=0,v=0,g=0,m=0,p=0,B=0,y=0,C=0,I=0;s=$F((A<<4)+16|0)|0;u=0;i=0;b=s;h=A;f=s;e:while(1){if((i|0)>=(A|0))break;C=e+72|0;i=i+1|0;y=e+16|0;d=e+32|0;v=e+24|0;g=e+40|0;m=e+8|0;p=e+56|0;B=e+48|0;w=i;k=C;o=f;while(1){if((w|0)==(A|0)){e=C;f=o;continue e}if(((+c[y>>3]<=+c[k+32>>3]?+c[k+16>>3]<=+c[d>>3]:0)?+c[v>>3]<=+c[k+40>>3]:0)?+c[k+24>>3]<=+c[g>>3]:0){f=h+A|0;if((u|0)==(h|0)){s=AM(s,(f<<4)+16|0)|0;b=s;o=s}else f=h;a=+c[e>>3];n=+c[k>>3];if(!(a==n)){a=(+c[k+48>>3]+ +c[B>>3])/+Q(+(a-n));if(a<1.0){a=1.0;I=13}}else{a=E;I=13}if((I|0)==13)I=0;n=+c[m>>3];l=+c[k+8>>3];if(!(n==l)){n=(+c[k+56>>3]+ +c[p>>3])/+Q(+(n-l));if(n<1.0){n=1.0;I=16}}else{n=E;I=16}if((I|0)==16)I=0;u=u+1|0;c[b+(u<<4)>>3]=a;c[b+(u<<4)+8>>3]=n}else f=h;w=w+1|0;k=k+72|0;h=f}}I=AM(f,(u<<4)+16|0)|0;t[r>>2]=u;return I|0}function YU(e,A){e=e|0;A=A|0;var r=0,i=0,a=0.0,t=0.0,n=0.0;i=1;a=0.0;while(1){r=e+16|0;if((i|0)>(A|0))break;n=+c[r>>3];t=+c[e+24>>3];t=na?t:a;e=r}return+a}function FU(e,A,r){e=e|0;A=A|0;r=r|0;var i=0.0,a=0,t=0,n=0,f=0.0;c[A>>3]=1.0;c[A+8>>3]=E;_4(A+16|0,r,16,76);n=$F((r<<4)+16|0)|0;c[n+(r<<4)>>3]=+c[A+(r<<4)>>3];t=r;i=1.0;while(1){c[n+(t<<4)+8>>3]=i;a=t+-1|0;if((t|0)<=0){i=E;a=0;t=0;break}c[n+(a<<4)>>3]=+c[A+(a<<4)>>3];f=+c[(+c[A+(t<<4)+8>>3]>i?A:n)+(t<<4)+8>>3];t=a;i=f}while(1){if((t|0)>(r|0))break;f=+c[n+(t<<4)+8>>3]*+c[n+(t<<4)>>3];A=f>3];c[e>>3]=+c[n+(a<<4)>>3];c[e+8>>3]=f;return}else ge(93596,93534,832,93616)}function MU(e,A){e=e|0;A=A|0;var r=0.0,i=0.0;r=+c[e>>3];i=+c[A>>3];if(!(ri)){i=+c[e+8>>3];r=+c[A+8>>3];if(ir&1}else e=1;else e=-1;return e|0}function VU(e,A,r){e=e|0;A=A|0;r=r|0;r=h;h=h+16|0;A=r;t[A>>2]=93631;nw(1,93681,A)|0;h=r;return 0}function NU(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;i=h;h=h+16|0;r=i;t[r>>2]=93631;nw(1,93709,r)|0;h=i;return 0}function RU(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0;e:do{switch(r|0){case 2:{i=$F(16)|0;a=$F(24)|0;t[a+8>>2]=0;t[a+4>>2]=i;t[a>>2]=2;t[i>>2]=0;t[i+4>>2]=1;r=i+8|0;t[a+16>>2]=r;t[a+20>>2]=0;t[a+12>>2]=2;t[r>>2]=1;t[i+12>>2]=0;break}case 1:{i=$F(4)|0;a=$F(12)|0;t[a+8>>2]=0;t[a+4>>2]=i;t[a>>2]=1;t[i>>2]=0;break}default:{VU(0,0,0)|0;e=(r|0)>0;if(!i){if(!e){a=0;break e}iA()}else{if(!e){a=0;break e}iA()}}}}while(0);return a|0}function xU(e){e=e|0;var A=0;if(e|0){A=t[e+4>>2]|0;if(A|0)G2(A);A=t[e+8>>2]|0;if(A|0)G2(A);G2(e)}return}function JU(e){e=e|0;var A=0;if(e|0){A=t[e+4>>2]|0;if(A|0)G2(A);A=t[e+8>>2]|0;if(A|0)G2(A);A=t[e+16>>2]|0;if(A|0)G2(A);G2(e)}return}function HU(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0,n=0,f=0,l=0,c=0,o=0,u=0,b=0;b=h;h=h+16|0;u=b+8|0;o=b;c=Q2(t[46849]|0,r<<2)|0;t[46849]=c;a=0;while(1){if((a|0)>=(r|0))break;t[i+(a<<2)>>2]=2147483647;a=a+1|0}t[i+(e<<2)>>2]=0;n=A+(e*20|0)|0;f=A+(e*20|0)+8|0;l=A+(e*20|0)+4|0;a=1;while(1){if((a|0)>=(t[n>>2]|0))break;t[i+(t[(t[l>>2]|0)+(a<<2)>>2]<<2)>>2]=~~+s[(t[f>>2]|0)+(a<<2)>>2];a=a+1|0}PU(u,e,c,i,r);f=-2147483639;while(1){if(!((XU(u,o,t[46849]|0,i)|0)<<24>>24)){a=0;break}a=t[o>>2]|0;e=t[i+(a<<2)>>2]|0;if((e|0)==2147483647){a=0;break}f=A+(a*20|0)|0;l=A+(a*20|0)+4|0;n=A+(a*20|0)+8|0;a=1;while(1){if((a|0)>=(t[f>>2]|0))break;SU(u,t[(t[l>>2]|0)+(a<<2)>>2]|0,e+~~+s[(t[n>>2]|0)+(a<<2)>>2]|0,t[46849]|0,i);a=a+1|0}f=e+10|0}while(1){if((a|0)>=(r|0))break;n=i+(a<<2)|0;if((t[n>>2]|0)==2147483647)t[n>>2]=f;a=a+1|0}jU(u);h=b;return}function PU(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;var n=0,f=0,l=0,s=0;if((a|0)==1)l=0;else l=$F((a<<2)+-4|0)|0;t[e>>2]=l;s=a+-1|0;t[e+4>>2]=s;n=0;f=0;while(1){if((f|0)>=(a|0))break;if((f|0)!=(A|0)){t[l+(n<<2)>>2]=f;t[r+(f<<2)>>2]=n;n=n+1|0}f=f+1|0}n=(s|0)/2|0;while(1){if((n|0)<=-1)break;UU(e,n,r,i);n=n+-1|0}return}function XU(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0,n=0;a=e+4|0;if(!(t[a>>2]|0))e=0;else{n=t[e>>2]|0;t[A>>2]=t[n>>2];A=t[n+((t[a>>2]|0)+-1<<2)>>2]|0;t[n>>2]=A;t[r+(A<<2)>>2]=0;t[a>>2]=(t[a>>2]|0)+-1;UU(e,0,r,i);e=1}return e|0}function SU(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;var n=0,f=0,l=0,s=0;n=a+(A<<2)|0;if((t[n>>2]|0)>(r|0)){s=i+(A<<2)|0;l=t[s>>2]|0;t[n>>2]=r;n=t[e>>2]|0;e=l;while(1){if((e|0)<=0)break;f=e>>>1;l=t[n+(f<<2)>>2]|0;if((t[a+(l<<2)>>2]|0)<=(r|0))break;t[n+(e<<2)>>2]=l;t[i+(l<<2)>>2]=e;e=f}t[n+(e<<2)>>2]=A;t[s>>2]=e}return}function jU(e){e=e|0;e=t[e>>2]|0;if(e|0)G2(e);return}function UU(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0,n=0,f=0,l=0,s=0;l=e+4|0;while(1){a=A<<1;n=a|1;f=t[l>>2]|0;if(!((a|0)<(f|0)?(s=t[e>>2]|0,(t[i+(t[s+(a<<2)>>2]<<2)>>2]|0)<(t[i+(t[s+(A<<2)>>2]<<2)>>2]|0)):0))a=A;if((n|0)<(f|0)){s=t[e>>2]|0;a=(t[i+(t[s+(n<<2)>>2]<<2)>>2]|0)<(t[i+(t[s+(a<<2)>>2]<<2)>>2]|0)?n:a}if((a|0)==(A|0))break;s=t[e>>2]|0;f=s+(a<<2)|0;n=t[f>>2]|0;s=s+(A<<2)|0;t[f>>2]=t[s>>2];t[s>>2]=n;t[r+(t[f>>2]<<2)>>2]=a;t[r+(t[s>>2]<<2)>>2]=A;A=a}return}function TU(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0,n=0,f=0,l=0,c=0.0,o=0,u=0,b=0,w=0;w=h;h=h+16|0;o=w+8|0;u=w;t[u>>2]=0;b=$F(r<<2)|0;a=0;while(1){if((a|0)>=(r|0))break;s[i+(a<<2)>>2]=3402823466385288598117041.0e14;a=a+1|0}s[i+(e<<2)>>2]=0.0;n=t[A+(e*20|0)>>2]|0;f=A+(e*20|0)+8|0;l=A+(e*20|0)+4|0;a=1;while(1){if((a|0)>=(n|0))break;t[i+(t[(t[l>>2]|0)+(a<<2)>>2]<<2)>>2]=t[(t[f>>2]|0)+(a<<2)>>2];a=a+1|0}OU(o,e,b,i,r);e:while(1){if(!((_U(o,u,b,i)|0)<<24>>24))break;a=t[u>>2]|0;c=+s[i+(a<<2)>>2];if(c==3402823466385288598117041.0e14)break;f=A+(a*20|0)|0;l=A+(a*20|0)+4|0;n=A+(a*20|0)+8|0;a=1;while(1){if((a|0)>=(t[f>>2]|0))continue e;qU(o,t[(t[l>>2]|0)+(a<<2)>>2]|0,+s[(t[n>>2]|0)+(a<<2)>>2]+c,b,i);a=a+1|0}}jU(o);G2(b);h=w;return}function OU(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;var n=0,f=0,l=0,s=0;l=a+-1|0;s=$F(l<<2)|0;t[e>>2]=s;t[e+4>>2]=l;n=0;f=0;while(1){if((f|0)>=(a|0))break;if((f|0)!=(A|0)){t[s+(n<<2)>>2]=f;t[r+(f<<2)>>2]=n;n=n+1|0}f=f+1|0}n=(l|0)/2|0;while(1){if((n|0)<=-1)break;KU(e,n,r,i);n=n+-1|0}return}function _U(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0,n=0;a=e+4|0;if(!(t[a>>2]|0))e=0;else{n=t[e>>2]|0;t[A>>2]=t[n>>2];A=t[n+((t[a>>2]|0)+-1<<2)>>2]|0;t[n>>2]=A;t[r+(A<<2)>>2]=0;t[a>>2]=(t[a>>2]|0)+-1;KU(e,0,r,i);e=1}return e|0}function qU(e,A,r,i,a){e=e|0;A=A|0;r=+r;i=i|0;a=a|0;var n=0,f=0,l=0,c=0;n=a+(A<<2)|0;if(!(+s[n>>2]<=r)){c=i+(A<<2)|0;l=t[c>>2]|0;s[n>>2]=r;n=t[e>>2]|0;e=l;while(1){if((e|0)<=0)break;f=e>>>1;l=t[n+(f<<2)>>2]|0;if(!(+s[a+(l<<2)>>2]>r))break;t[n+(e<<2)>>2]=l;t[i+(l<<2)>>2]=e;e=f}t[n+(e<<2)>>2]=A;t[c>>2]=e}return}function KU(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0,n=0,f=0,l=0,c=0;l=e+4|0;while(1){a=A<<1;n=a|1;f=t[l>>2]|0;if(!((a|0)<(f|0)?(c=t[e>>2]|0,+s[i+(t[c+(a<<2)>>2]<<2)>>2]<+s[i+(t[c+(A<<2)>>2]<<2)>>2]):0))a=A;if((n|0)<(f|0)?(c=t[e>>2]|0,+s[i+(t[c+(n<<2)>>2]<<2)>>2]<+s[i+(t[c+(a<<2)>>2]<<2)>>2]):0)a=n;if((a|0)==(A|0))break;c=t[e>>2]|0;f=c+(a<<2)|0;n=t[f>>2]|0;c=c+(A<<2)|0;t[f>>2]=t[c>>2];t[c>>2]=n;t[r+(t[f>>2]<<2)>>2]=a;t[r+(t[c>>2]<<2)>>2]=A;A=a}return}function $U(){jO(187400,48);t[46853]=0;return}function eT(e,A){e=e|0;A=A|0;var r=0.0,i=0.0,a=0.0,n=0.0,f=0;f=TO(187400)|0;t[f+32>>2]=e;t[f+36>>2]=A;G_(e);G_(A);t[f+24>>2]=0;t[f+28>>2]=0;a=+c[e>>3];n=+c[A>>3]-a;i=+c[e+8>>3];r=+c[A+8>>3]-i;a=r*i+n*a+(r*r+n*n)*.5;A=f+16|0;c[A>>3]=a;if((n>0.0?n:-n)>(r>0.0?r:-r)){c[f>>3]=1.0;i=r/n;r=n;e=f+8|0}else{c[f+8>>3]=1.0;i=n/r;e=f}c[e>>3]=i;c[A>>3]=a/r;A=t[46853]|0;t[f+40>>2]=A;t[46853]=A+1;return f|0}function AT(e){e=e|0;var A=0,r=0,i=0.0,a=0.0,n=0.0,f=0.0,l=0.0,s=0.0,o=0.0,u=0;o=+c[e>>3];e:do{if(o==1.0){if(!(+c[e+8>>3]>=0.0)){A=t[e+28>>2]|0;r=t[e+24>>2]|0;if(!r)u=9;else u=5}else{A=t[e+24>>2]|0;r=t[e+28>>2]|0;if(!r)u=9;else u=5}do{if((u|0)==5){i=+c[r+8>>3];if(i>+c[23266])break e;a=+c[23267];if(!(i>=a)){f=a;i=+c[e+16>>3]-+c[e+8>>3]*a;break}else{f=i;i=+c[r>>3];break}}else if((u|0)==9){a=+c[23267];f=a;i=+c[e+16>>3]-+c[e+8>>3]*a}}while(0);do{if(A){n=+c[A+8>>3];if(n>3]-+c[e+8>>3]*a;break}else{a=+c[A>>3];break}}else{a=+c[23266];n=a;a=+c[e+16>>3]-+c[e+8>>3]*a}}while(0);l=+c[23268];A=i>l;r=a>l;s=+c[23269];if(!(A&r|i>3]-l)/+c[e+8>>3];i=l}if(i>3]-s)/+c[e+8>>3];i=s}if(r){n=(+c[e+16>>3]-l)/+c[e+8>>3];a=l}if(a>3]-s)/+c[e+8>>3];a=s;u=46}else u=46}}else{r=t[e+28>>2]|0;A=t[e+24>>2]|0;do{if(A){i=+c[A>>3];if(i>+c[23268])break e;n=+c[23269];if(!(i>=n)){f=+c[e+16>>3]-n*o;i=n;break}else{f=+c[A+8>>3];break}}else{n=+c[23269];f=+c[e+16>>3]-n*o;i=n}}while(0);do{if(r){a=+c[r>>3];if(a>3]-o*l;a=l;break}else{n=+c[r+8>>3];break}}else{a=+c[23268];n=+c[e+16>>3]-o*a}}while(0);l=+c[23266];A=f>l;r=n>l;s=+c[23267];if(!(A&r|f>3]-l)/o}if(f>3]-s)/o}if(r){n=l;a=(+c[e+16>>3]-l)/o}if(n>3]-s)/o;u=46}else u=46}}}while(0);if((u|0)==46)rT(e,i,f,a,n);return}function rT(e,A,r,i,a){e=e|0;A=+A;r=+r;i=+i;a=+a;var n=0;n=e+32|0;FT(t[n>>2]|0,A,r);FT(t[n>>2]|0,i,a);e=e+36|0;FT(t[e>>2]|0,A,r);FT(t[e>>2]|0,i,a);return}function iT(e,A,r){e=e|0;A=A|0;r=r|0;t[e+24+(A<<2)>>2]=r;G_(r);if(t[e+24+(1-A<<2)>>2]|0){AT(e);Z_(t[e+32>>2]|0);Z_(t[e+36>>2]|0);OO(e,187400)}return}function aT(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;var n=0,f=0,l=0,s=0,c=0,o=0,u=0,b=0,w=0,k=0,d=0,v=0;w=h;h=h+16|0;b=w;o=A<<2;f=$F(P(o,r)|0)|0;n=t[i>>2]|0;o=$F(o)|0;u=t[e+8>>2]|0;if(n|0){G2(t[n>>2]|0);G2(n)}c=$F(r<<2)|0;t[i>>2]=c;n=0;while(1){if((n|0)>=(r|0))break;t[c+(n<<2)>>2]=f+((P(n,A)|0)<<2);n=n+1|0}s=(a|0)!=0;if(s)XT(e,A);i=(t8()|0)%(A|0)|0;fU(b,A);n=t[c>>2]|0;if(s){HU(i,e,A,n);a=0;n=0}else{iU(i,e,A,n,b);a=0;n=0}while(1){if((n|0)>=(A|0)){l=1;break}f=t[(t[c>>2]|0)+(n<<2)>>2]|0;t[o+(n<<2)>>2]=f;l=(f|0)>(a|0);a=l?f:a;i=l?n:i;n=n+1|0}while(1){if((l|0)>=(r|0))break;f=c+(l<<2)|0;n=t[f>>2]|0;if(s){HU(i,e,A,n);n=0;a=0}else{iU(i,e,A,n,b);n=0;a=0}while(1){if((n|0)>=(A|0))break;v=o+(n<<2)|0;k=t[v>>2]|0;d=t[(t[f>>2]|0)+(n<<2)>>2]|0;d=(k|0)<(d|0)?k:d;t[v>>2]=d;v=(d|0)>(a|0);k=v?n:i;n=n+1|0;a=v?d:a;i=k}l=l+1|0}G2(o);if(s)ST(e,A,u);h=w;return}function tT(e,A,r){e=e|0;A=A|0;r=r|0;var i=0.0,a=0,n=0,f=0,l=0.0,s=0,c=0;l=1.0/+(A|0);f=0;while(1){if((f|0)>=(r|0))break;s=e+(f<<2)|0;i=0.0;a=0;while(1){if((a|0)>=(A|0))break;i=i+ +(t[(t[s>>2]|0)+(a<<2)>>2]|0);a=a+1|0}n=~~(i*l);a=0;while(1){if((a|0)>=(A|0))break;c=(t[s>>2]|0)+(a<<2)|0;t[c>>2]=(t[c>>2]|0)-n;a=a+1|0}f=f+1|0}return}function nT(){t[46855]=~~+D(+ +((t[46854]|0)+4|0));return}function fT(e,A){e=e|0;A=A|0;var r=0.0,i=0.0;r=+c[e>>3]-+c[A>>3];i=+c[e+8>>3]-+c[A+8>>3];return+(i*i+r*r)}function lT(e,A,r){e=e|0;A=A|0;r=r|0;c[e>>3]=+c[A>>3]-+c[r>>3];c[e+8>>3]=+c[A+8>>3]-+c[r+8>>3];return}function sT(e,A,r){e=e|0;A=A|0;r=r|0;c[e>>3]=+c[r>>3]+ +c[A>>3];c[e+8>>3]=+c[r+8>>3]+ +c[A+8>>3];return}function cT(e,A,r){e=e|0;A=A|0;r=r|0;var i=0.0,a=0.0;i=+c[A+8>>3];a=+c[A>>3];return+((+c[r>>3]-a)*(+c[e+8>>3]-i)-(+c[e>>3]-a)*(+c[r+8>>3]-i))}function oT(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0,n=0,f=0;i=h;h=h+48|0;a=i+32|0;n=i+16|0;f=i;t[f>>2]=t[e>>2];t[f+4>>2]=t[e+4>>2];t[f+8>>2]=t[e+8>>2];t[f+12>>2]=t[e+12>>2];t[n>>2]=t[A>>2];t[n+4>>2]=t[A+4>>2];t[n+8>>2]=t[A+8>>2];t[n+12>>2]=t[A+12>>2];t[a>>2]=t[r>>2];t[a+4>>2]=t[r+4>>2];t[a+8>>2]=t[r+8>>2];t[a+12>>2]=t[r+12>>2];r=+cT(f,n,a)>0.0&1;h=i;return r|0}function uT(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;var t=0.0,n=0.0,f=0.0,l=0.0,s=0.0,o=0.0,u=0.0,b=0.0,h=0.0,w=0.0,k=0.0;h=+c[e>>3];w=+c[i+8>>3];k=+c[r+8>>3];u=(w-k)*h;b=+c[A>>3];o=+c[i>>3];s=+c[A+8>>3];f=+c[e+8>>3];l=s-f;t=+c[r>>3];n=u+b*(k-w)+l*o+t*(f-s);if(n==0.0)i=0;else{w=(t*(f-w)+u+(k-f)*o)/n;k=-(t*l+((k-s)*h+(f-k)*b))/n;c[a>>3]=w*(b-h)+h;c[a+8>>3]=l*w+f;i=k<=1.0&(k>=0.0&(w>=0.0&w<=1.0))&1}return i|0}function bT(e,A,r){e=e|0;A=A|0;r=+r;var i=0,a=0,n=0.0,f=0;t[e+20>>2]=A;G_(A);f=e+24|0;c[f>>3]=+c[A+8>>3]+r;i=t[46856]|0;i=i+((hT(e)|0)*40|0)|0;while(1){a=i+32|0;i=t[a>>2]|0;if(!i)break;r=+c[f>>3];n=+c[i+24>>3];if(r>n)continue;if(!(r==n))break;if(!(+c[A>>3]>+c[t[i+20>>2]>>3]))break}t[e+32>>2]=i;t[a>>2]=e;t[46857]=(t[46857]|0)+1;return}function hT(e){e=e|0;var A=0.0,r=0,i=0.0;r=t[46858]|0;i=+(r|0);A=(+c[e+24>>3]-+c[23273])/+c[23275]*i;do{if(!(A<0.0))if(!(A>=i)){e=~~A;break}else{e=r+-1|0;break}else e=0}while(0);if((e|0)<(t[46859]|0))t[46859]=e;return e|0}function wT(e){e=e|0;var A=0,r=0,i=0;r=e+20|0;if(t[r>>2]|0){A=t[46856]|0;A=A+((hT(e)|0)*40|0)|0;do{i=A+32|0;A=t[i>>2]|0}while((A|0)!=(e|0));t[i>>2]=t[e+32>>2];t[46857]=(t[46857]|0)+-1;Z_(t[r>>2]|0);t[r>>2]=0}return}function kT(){return(t[46857]|0)==0|0}function dT(e){e=e|0;var A=0,r=0,i=0,a=0.0;A=t[46856]|0;r=t[46859]|0;while(1){i=t[A+(r*40|0)+32>>2]|0;if(i|0)break;i=r+1|0;t[46859]=i;r=i}a=+c[i+24>>3];c[e>>3]=+c[t[i+20>>2]>>3];c[e+8>>3]=a;return}function vT(){var e=0,A=0;A=(t[46856]|0)+((t[46859]|0)*40|0)+32|0;e=t[A>>2]|0;t[A>>2]=t[e+32>>2];t[46857]=(t[46857]|0)+-1;return e|0}function gT(){G2(t[46856]|0);t[46856]=0;return}function mT(){var e=0,A=0,r=0;t[46857]=0;t[46859]=0;e=t[46855]|0;A=e<<2;t[46858]=A;r=t[46856]|0;if(!r){r=$F(e*160|0)|0;t[46856]=r;A=t[46858]|0}e=0;while(1){if((e|0)>=(A|0))break;t[r+(e*40|0)+32>>2]=0;e=e+1|0}return}function pT(){jO(187448,40);G2(t[46865]|0);t[46865]=0;return}function ET(){var e=0,A=0,r=0;jO(187448,40);e=t[46855]|0;A=e<<1;t[46866]=A;r=t[46865]|0;if(!r){r=$F(e<<3)|0;t[46865]=r;A=t[46866]|0}e=0;while(1){if((e|0)>=(A|0))break;t[r+(e<<2)>>2]=0;e=e+1|0}t[46860]=BT(0,0)|0;t[46861]=BT(0,0)|0;t[t[46860]>>2]=0;r=t[46861]|0;A=t[46860]|0;t[A+4>>2]=r;t[r>>2]=A;t[(t[46861]|0)+4>>2]=0;r=t[46865]|0;t[r>>2]=t[46860];t[r+((t[46866]|0)+-1<<2)>>2]=t[46861];return}function BT(e,A){e=e|0;A=A|0;var r=0;r=TO(187448)|0;t[r+8>>2]=e;i[r+16>>0]=A;t[r+32>>2]=0;t[r+20>>2]=0;t[r+12>>2]=0;return r|0}function yT(e,A){e=e|0;A=A|0;var r=0,a=0.0,n=0.0,f=0,l=0.0,s=0,o=0.0,u=0.0,b=0.0,h=0,w=0.0,k=0.0;f=t[e+8>>2]|0;s=t[A+8>>2]|0;do{if((!((f|0)==0|(s|0)==0)?(h=t[f+36>>2]|0,r=t[s+36>>2]|0,(h|0)!=(r|0)):0)?(l=+c[f>>3],a=+c[s+8>>3],n=+c[f+8>>3],o=+c[s>>3],u=a*l-o*n,!(u>-1.0e-10&u<1.0e-10)):0){w=+c[f+16>>3];k=+c[s+16>>3];b=(w*a-k*n)/u;l=(k*l-w*o)/u;a=+c[h+8>>3];n=+c[r+8>>3];do{if(a>3]<+c[r>>3]:0){r=h;break}e=A}}while(0);e=i[e+16>>0]|0;if(!(b>=+c[r>>3])){if(e<<24>>24==1){e=0;break}}else if(!(e<<24>>24)){e=0;break}e=y_()|0;t[e+20>>2]=0;c[e>>3]=b;c[e+8>>3]=l}else e=0}while(0);return e|0}function CT(e,A){e=e|0;A=A|0;var r=0.0,a=0,n=0.0,f=0.0,l=0.0,s=0,o=0.0,u=0,b=0,h=0.0,w=0;b=t[e+8>>2]|0;s=t[b+36>>2]|0;o=+c[A>>3];h=+c[s>>3];u=o>h;w=i[e+16>>0]|0;if(u)if(!(w<<24>>24))e=1;else a=4;else if(w<<24>>24==1)e=0;else a=4;if((a|0)==4){r=+c[b>>3];e:do{if(r==1.0){r=+c[A+8>>3];n=r-+c[s+8>>3];f=o-h;l=+c[b+8>>3];A=l<0.0;do{if(u?l>=0.0:A){if(n>=l*f){e=1;break e}}else{e=l*r+o>+c[b+16>>3];if(A)if(e){e=0;break e}else break;else if(e)break;else{e=0;break e}}}while(0);h=h-+c[t[b+32>>2]>>3];e=l*(f*f-n*n)>3]-o*r;l=+c[A+8>>3]-f;h=o-h;o=f-+c[s+8>>3];e=l*l>o*o+h*h}}while(0);e=(e^w<<24>>24!=0)&1}return e|0}function IT(e,A){e=e|0;A=A|0;t[A>>2]=e;e=e+4|0;t[A+4>>2]=t[e>>2];t[t[e>>2]>>2]=A;t[e>>2]=A;return}function ZT(e){e=e|0;var A=0,r=0,i=0,a=0,n=0;a=t[46866]|0;A=~~((+c[e>>3]-+c[23272])/+c[23274]*+(a|0));A=(A|0)>0?A:0;a=(A|0)<(a|0)?A:a+-1|0;A=GT(a)|0;if(!A){r=1;while(1){A=GT(a-r|0)|0;if(A|0)break;A=GT(r+a|0)|0;if(A|0)break;r=r+1|0}t[46867]=(t[46867]|0)+r}t[46868]=(t[46868]|0)+1;i=t[46860]|0;r=t[46861]|0;e:do{if((A|0)==(i|0))n=9;else{if((A|0)!=(r|0)?(CT(A,e)|0)!=0:0){n=9;break}while(1){A=t[A>>2]|0;if((A|0)==(i|0))break e;if(CT(A,e)|0){i=A;break}}}}while(0);if((n|0)==9){while(1){A=t[A+4>>2]|0;if((A|0)==(r|0))break;if(!(CT(A,e)|0))break;else n=9}i=t[A>>2]|0}if((a|0)>0?(a|0)<((t[46866]|0)+-1|0):0){A=(t[46865]|0)+(a<<2)|0;r=t[A>>2]|0;if(r|0){n=r+12|0;t[n>>2]=(t[n>>2]|0)+-1}t[A>>2]=i;n=i+12|0;t[n>>2]=(t[n>>2]|0)+1}return i|0}function GT(e){e=e|0;var A=0,r=0;if((e|0)>-1&(t[46866]|0)>(e|0)?(r=(t[46865]|0)+(e<<2)|0,A=t[r>>2]|0,(A|0)!=0):0){if((t[A+8>>2]|0)==(-2|0)){t[r>>2]=0;e=A+12|0;r=(t[e>>2]|0)+-1|0;t[e>>2]=r;if(!r){OO(A,187448);A=0}else A=0}}else A=0;return A|0}function LT(e){e=e|0;var A=0,r=0;A=e+4|0;r=t[e>>2]|0;t[r+4>>2]=t[A>>2];t[t[A>>2]>>2]=r;t[e+8>>2]=-2;return}function QT(e){e=e|0;return t[e+4>>2]|0}function DT(e){e=e|0;return t[e>>2]|0}function zT(e){e=e|0;var A=0;A=t[e+8>>2]|0;if(!A)e=187672;else e=(i[e+16>>0]|0)==0?A+32|0:A+36|0;return t[e>>2]|0}function WT(e){e=e|0;var A=0;A=t[e+8>>2]|0;if(!A)e=187672;else e=(i[e+16>>0]|0)==0?A+36|0:A+32|0;return t[e>>2]|0}function YT(){jO(187480,24);return}function FT(e,A,r){e=e|0;A=+A;r=+r;var i=0,a=0,n=0,f=0,l=0;l=h;h=h+32|0;f=l;n=(t[46869]|0)+((t[e+16>>2]|0)*96|0)+88|0;a=t[n>>2]|0;c[f+8>>3]=A;c[f+16>>3]=r;i=MT(e,f,a)|0;do{if(i|0){if((i|0)<0){f=TO(187480)|0;c[f+8>>3]=A;c[f+16>>3]=r;t[f>>2]=a;t[n>>2]=f;break}while(1){i=t[a>>2]|0;n=MT(e,f,i)|0;if((n|0)>0)a=i;else break}if(n|0){f=TO(187480)|0;c[f+8>>3]=A;c[f+16>>3]=r;t[a>>2]=f;t[f>>2]=i}}}while(0);h=l;return}function MT(e,A,r){e=e|0;A=A|0;r=r|0;var i=0.0,a=0.0,t=0.0,n=0.0,f=0.0,l=0.0,s=0.0;do{if(r){a=+c[A+8>>3];f=+c[r+8>>3];i=+c[A+16>>3];t=+c[r+16>>3];if(!(a==f&i==t)){s=+c[e>>3];l=a-s;a=+c[e+8>>3];n=i-a;f=f-s;i=t-a;if(!(l>=0.0)){if(f>=0.0){A=1;break}a=i/f;i=n/l;if(ia){A=1;break}A=l>f?-1:1;break}if(!(f<0.0)){A=f>0.0;if(!(l>0.0)){if(A){A=!(n<=0.0)?1:-1;break}if(n0.0?-1:1;break}a=i/f;i=n/l;if(ia){A=1;break}A=l>2]|0;r=e+(r*20|0)+4|0;A=1;e=0;while(1){if((A|0)>=(a|0))break;n=e+((t[i+(t[(t[r>>2]|0)+(A<<2)>>2]<<2)>>2]|0)>0&1)|0;A=A+1|0;e=n}return e|0}function NT(e,A,r){e=e|0;A=A|0;r=r|0;var i=0;i=e+(A*20|0)|0;A=e+(A*20|0)+4|0;e=1;while(1){if((e|0)>=(t[i>>2]|0))break;t[r+(t[(t[A>>2]|0)+(e<<2)>>2]<<2)>>2]=1;e=e+1|0}return}function RT(e,A,r){e=e|0;A=A|0;r=r|0;var i=0;i=e+(A*20|0)|0;A=e+(A*20|0)+4|0;e=1;while(1){if((e|0)>=(t[i>>2]|0))break;t[r+(t[(t[A>>2]|0)+(e<<2)>>2]<<2)>>2]=0;e=e+1|0}return}function xT(e,A){e=e|0;A=A|0;if(!(t[e+8>>2]|0))e=HT(e,A)|0;else e=JT(e,A)|0;return e|0}function JT(e,A){e=e|0;A=A|0;var r=0,i=0,a=0;a=A<<2;i=$F(P(a,A)|0)|0;a=$F(a)|0;r=0;while(1){if((r|0)>=(A|0)){r=0;break}t[a+(r<<2)>>2]=i+((P(r,A)|0)<<2);r=r+1|0}while(1){if((r|0)>=(A|0))break;HU(r,e,A,t[a+(r<<2)>>2]|0);r=r+1|0}return a|0}function HT(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0,f=0;f=h;h=h+16|0;a=f;n=A<<2;i=$F(P(n,A)|0)|0;n=$F(n)|0;r=0;while(1){if((r|0)>=(A|0))break;t[n+(r<<2)>>2]=i+((P(r,A)|0)<<2);r=r+1|0}fU(a,A);r=0;while(1){if((r|0)>=(A|0))break;iU(r,e,A,t[n+(r<<2)>>2]|0,a);r=r+1|0}lU(a);h=f;return n|0}function PT(e,A){e=e|0;A=A|0;var r=0,i=0;i=t[e+8>>2]|0;XT(e,A);r=JT(e,A)|0;ST(e,A,i);return r|0}function XT(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0,f=0,l=0,c=0,o=0,u=0,b=0;o=$F(A<<2)|0;r=0;i=0;while(1){if((r|0)>=(A|0))break;c=(t[e+(r*20|0)>>2]|0)+i|0;r=r+1|0;i=c}i=$F(i<<2)|0;r=0;while(1){if((r|0)>=(A|0))break;t[o+(r<<2)>>2]=0;r=r+1|0}a=0;while(1){if((a|0)>=(A|0))break;t[e+(a*20|0)+8>>2]=i;NT(e,a,o);n=e+(a*20|0)|0;f=t[n>>2]|0;l=e+(a*20|0)+4|0;c=f+-2|0;r=1;while(1){if((r|0)>=(f|0))break;u=t[(t[l>>2]|0)+(r<<2)>>2]|0;b=t[e+(u*20|0)>>2]|0;s[i+(r<<2)>>2]=+(c+b-((VT(e,0,u,o)|0)<<1)|0);r=r+1|0}RT(e,a,o);i=i+(t[n>>2]<<2)|0;a=a+1|0}G2(o);return}function ST(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0;i=e+8|0;G2(t[i>>2]|0);t[i>>2]=0;e:do{if(r|0){i=0;while(1){if((i|0)>=(A|0))break e;t[e+(i*20|0)+8>>2]=r;a=r+(t[e+(i*20|0)>>2]<<2)|0;i=i+1|0;r=a}}}while(0);return}function jT(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0,n=0.0,f=0.0,l=0;a=0;n=0.0;while(1){if((a|0)>=(A|0))break;l=t[e+(a<<2)>>2]|0;f=+c[l+(r<<3)>>3]-+c[l+(i<<3)>>3];a=a+1|0;n=f*f+n}return+ +D(+n)}function UT(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;if((i|0)>(r|0)){t[46873]=e;_4(A+(r<<2)|0,1-r+i|0,4,77)}return}function TT(e,A){e=e|0;A=A|0;var r=0.0,i=0.0,a=0;a=t[46873]|0;i=+s[a+(t[e>>2]<<2)>>2];r=+s[a+(t[A>>2]<<2)>>2];return(ir&1)|0}function OT(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0,n=0,f=0;f=h;h=h+16|0;a=f;if((r|0)<(i|0)){_T(e,A,r,i,a);n=t[a>>2]|0;a=n+-1|0;OT(e,A,r,a);n=n+1|0;OT(e,A,n,i);if(!(qT(e,A,r,a)|0))OT(e,A,r,a);if(!(qT(e,A,n,i)|0))OT(e,A,n,i)}h=f;return}function _T(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;var n=0,f=0,l=0,s=0,o=0.0,u=0,b=0;n=t8()|0;n=A+(((((t8()|0)<<16|n)>>>0)%((1-r+i|0)>>>0)|0)+r<<2)|0;l=t[n>>2]|0;s=A+(r<<2)|0;t[n>>2]=t[s>>2];t[s>>2]=l;o=+c[e+(l<<3)>>3];n=r+1|0;r=i;e:while(1){if((n|0)>=(r|0))break;while(1){if((n|0)>=(r|0))break;if(!(+c[e+(t[A+(n<<2)>>2]<<3)>>3]<=o))break;n=n+1|0}while(1){if((n|0)>=(r|0))continue e;i=A+(r<<2)|0;f=t[i>>2]|0;if(!(+c[e+(f<<3)>>3]>o))break;r=r+-1|0}b=A+(n<<2)|0;u=t[b>>2]|0;t[b>>2]=f;t[i>>2]=u;n=n+1|0;r=r+-1|0}b=n+((+c[e+(t[A+(n<<2)>>2]<<3)>>3]>o)<<31>>31)|0;t[a>>2]=b;b=A+(b<<2)|0;t[s>>2]=t[b>>2];t[b>>2]=l;return}function qT(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0,n=0;n=1;while(1){a=r+1|0;if(!((r|0)<(i|0)&(n|0)!=0))break;n=+c[e+(t[A+(r<<2)>>2]<<3)>>3]>+c[e+(t[A+(a<<2)>>2]<<3)>>3]?0:n;r=a}return n|0}function KT(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0.0,f=0.0,l=0.0,s=0.0,o=0,u=0,b=0,w=0,k=0,g=0,m=0,p=0,E=0,B=0,y=0.0,C=0.0;B=h;h=h+16|0;p=4;E=Z2(40)|0;t[E>>2]=0;g=B;d=0;m=re(23,A*40|0)|0;r=d;d=0;if((r|0)!=0&(v|0)!=0){i=L6(t[r>>2]|0,E|0,p|0)|0;if(!i)aA(r|0,v|0);G=v}else i=-1;if((i|0)!=1){r=0;w=0;while(1){if((r|0)>=(A|0))break;k=(t[(t[e+(r<<2)>>2]|0)+4>>2]|0)+w|0;r=r+1|0;w=k}d=0;k=re(23,w*24|0)|0;r=d;d=0;if((r|0)!=0&(v|0)!=0){i=L6(t[r>>2]|0,E|0,p|0)|0;if(!i)aA(r|0,v|0);G=v}else i=-1;if((i|0)!=1){r=0;o=0;while(1){if((o|0)>=(A|0))break;u=m+(o*40|0)|0;t[u>>2]=k+(r*24|0);b=e+(o<<2)|0;a=0;n=1797693134862315708145274.0e284;f=-1797693134862315708145274.0e284;l=-1797693134862315708145274.0e284;s=1797693134862315708145274.0e284;while(1){i=t[b>>2]|0;if((a|0)>=(t[i+4>>2]|0))break;i=t[i>>2]|0;C=+c[i+(a<<4)>>3];y=+c[i+(a<<4)+8>>3];c[k+(r*24|0)>>3]=C;c[k+(r*24|0)+8>>3]=y;t[k+(r*24|0)+16>>2]=u;t[k+(r*24|0)+20>>2]=0;a=a+1|0;r=r+1|0;n=nC?f:C;l=l>y?l:y;s=s>2]=k+((r+-1|0)*24|0);c[m+(o*40|0)+8>>3]=n;c[m+(o*40|0)+16>>3]=s;c[m+(o*40|0)+24>>3]=f;c[m+(o*40|0)+32>>3]=l;o=o+1|0}t[g>>2]=w;t[g+4>>2]=A;E=G6(187496,1,E|0,p|0)|0;p=G;d=0;r=d;d=0;if((r|0)!=0&(v|0)!=0){i=L6(t[r>>2]|0,E|0,p|0)|0;if(!i)aA(r|0,v|0);G=v}else i=-1;if((i|0)==1){r=G;b=k;o=k;u=m}else{r=0;b=k;o=k;u=m}}else{r=G;b=0;o=k;u=m}}else{r=G;b=0;o=0;u=0}while(1){if(r|0){d=0;oe(105,m|0);r=d;d=0;if((r|0)!=0&(v|0)!=0){i=L6(t[r>>2]|0,E|0,p|0)|0;if(!i)aA(r|0,v|0);G=v}else i=-1;if((i|0)==1){a=u;w=o;k=b;r=G;u=a;o=w;b=k;continue}d=0;oe(105,o|0);r=d;d=0;if((r|0)!=0&(v|0)!=0){i=L6(t[r>>2]|0,E|0,p|0)|0;if(!i)aA(r|0,v|0);G=v}else i=-1;if((i|0)==1){a=u;w=o;k=b;r=G;u=a;o=w;b=k;continue}else{i=17;break}}d=0;r=ie(78,b|0,g|0)|0;i=d;d=0;if((i|0)!=0&(v|0)!=0){a=L6(t[i>>2]|0,E|0,p|0)|0;if(!a)aA(i|0,v|0);G=v}else a=-1;if((a|0)==1){a=u;w=o;k=b;r=G;u=a;o=w;b=k;continue}if(!r){d=0;r=te(24,e|0,A|0,u|0)|0;i=d;d=0;if((i|0)!=0&(v|0)!=0){a=L6(t[i>>2]|0,E|0,p|0)|0;if(!a)aA(i|0,v|0);G=v}else a=-1;if((a|0)==1){a=u;w=o;k=b;r=G;u=a;o=w;b=k;continue}}d=0;oe(105,m|0);i=d;d=0;if((i|0)!=0&(v|0)!=0){a=L6(t[i>>2]|0,E|0,p|0)|0;if(!a)aA(i|0,v|0);G=v}else a=-1;if((a|0)==1){a=u;w=o;k=b;r=G;u=a;o=w;b=k;continue}d=0;oe(105,o|0);i=d;d=0;if((i|0)!=0&(v|0)!=0){a=L6(t[i>>2]|0,E|0,p|0)|0;if(!a)aA(i|0,v|0);G=v}else a=-1;if((a|0)==1){a=u;w=o;k=b;r=G;u=a;o=w;b=k}else{i=24;break}}if((i|0)==17)r=0;else if((i|0)==24)r=(r|0)==0&1;G2(E|0);h=B;return r|0}function $T(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0,f=0,l=0,s=0,c=0,o=0,u=0,b=0,w=0,k=0,d=0,v=0,g=0,m=0,p=0;p=h;h=h+16|0;k=p;b=p+8|0;w=p+4|0;t[A+8>>2]=0;m=$F(t[A>>2]<<2)|0;a=t[A>>2]|0;i=0;while(1){if((i|0)>=(a|0))break;t[m+(i<<2)>>2]=e+(i*24|0);i=i+1|0}_4(m,a,4,79);o=0;n=0;a=0;f=0;e:while(1){if((o|0)>=(t[A>>2]|0)){v=0;r=n;g=f;break}u=m+(o<<2)|0;i=t[u>>2]|0;t[b>>2]=i;e=t[i+16>>2]|0;if((t[e>>2]|0)==(i|0))i=t[e+4>>2]|0;else i=i+-24|0;t[w>>2]=i;c=0;e=n;s=f;while(1){if((c|0)>=2)break;switch(AO(b,w)|0){case-1:{n=0;f=e;while(1){if((n|0)>=(s|0))break;l=rO(t[f>>2]|0,i)|0;if(l|0){v=l;r=e;g=s;break e}n=n+1|0;f=t[f+4>>2]|0}n=$F(12)|0;if(!s){a=0;e=n}else t[a+4>>2]=n;t[n+8>>2]=a;t[n>>2]=i;t[n+4>>2]=0;t[i+20>>2]=n;f=s+1|0;break}case 1:{i=i+20|0;n=t[i>>2]|0;if(!n){d=19;break e}do{if((s|0)!=1){if((n|0)==(e|0)){e=t[e+4>>2]|0;t[e+8>>2]=0;break}if((n|0)==(a|0)){a=t[a+8>>2]|0;t[a+4>>2]=0;break}else{l=n+4|0;f=t[n+8>>2]|0;t[f+4>>2]=t[l>>2];t[(t[l>>2]|0)+8>>2]=f;break}}else{e=0;a=0}}while(0);G2(n);t[i>>2]=0;n=a;f=s+-1|0;break}default:{n=a;f=s}}i=t[u>>2]|0;a=t[i+16>>2]|0;if((i|0)==(t[a+4>>2]|0))a=t[a>>2]|0;else a=i+24|0;t[w>>2]=a;c=c+1|0;a=n;s=f}o=o+1|0;n=e;f=s}if((d|0)==19){nw(1,93727,k)|0;aA(187496,1)}i=0;while(1){if((i|0)>=(g|0))break;d=t[r+4>>2]|0;G2(r);i=i+1|0;r=d}G2(m);h=p;return v|0}function eO(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0.0,n=0,f=0,l=0.0,s=0.0,o=0,u=0,b=0,w=0,k=0,d=0.0,v=0.0,g=0.0,m=0,p=0.0,E=0.0,B=0.0,y=0.0,C=0,I=0,Z=0,G=0,L=0,Q=0.0;L=h;h=h+48|0;b=L+24|0;u=L+16|0;m=L;i=0;e:while(1){if((i|0)>=(A|0)){i=0;break}C=t[e+(i<<2)>>2]|0;I=t[C>>2]|0;t[m>>2]=t[I>>2];t[m+4>>2]=t[I+4>>2];t[m+8>>2]=t[I+8>>2];t[m+12>>2]=t[I+12>>2];I=i+1|0;Z=r+(i*40|0)+8|0;w=r+(i*40|0)+24|0;k=r+(i*40|0)+32|0;n=r+(i*40|0)+16|0;i=I;while(1){if((i|0)>=(A|0)){i=I;continue e}f=t[e+(i<<2)>>2]|0;l=+c[Z>>3];s=+c[r+(i*40|0)+24>>3];o=!(l<=s);a=+c[r+(i*40|0)+8>>3];if((((!(o|!(l>=a))?(d=+c[n>>3],v=+c[r+(i*40|0)+32>>3],d<=v):0)?(g=+c[r+(i*40|0)+16>>3],d>=g):0)?(Q=+c[w>>3],!(!(Q<=s)|!(Q>=a))):0)?(Q=+c[k>>3],!(!(Q<=v)|!(Q>=g))):0){t[u>>2]=t[f>>2];t[u+4>>2]=t[f+4>>2];t[b>>2]=t[m>>2];t[b+4>>2]=t[m+4>>2];t[b+8>>2]=t[m+8>>2];t[b+12>>2]=t[m+12>>2];if(Wl(u,b)|0){i=1;break e}}else G=11;if((((((G|0)==11?(G=0,p=+c[w>>3],!(!(a<=p)|!(a>=l))):0)?(E=+c[r+(i*40|0)+16>>3],B=+c[k>>3],E<=B):0)?(y=+c[n>>3],!(!(E>=y)|(!(s<=p)|o))):0)?(Q=+c[r+(i*40|0)+32>>3],!(!(Q<=B)|!(Q>=y))):0)?(o=t[f>>2]|0,t[u>>2]=t[C>>2],t[u+4>>2]=t[C+4>>2],t[b>>2]=t[o>>2],t[b+4>>2]=t[o+4>>2],t[b+8>>2]=t[o+8>>2],t[b+12>>2]=t[o+12>>2],Wl(u,b)|0):0){i=1;break e}i=i+1|0}}h=L;return i|0}function AO(e,A){e=e|0;A=A|0;var r=0.0,i=0;i=t[e>>2]|0;e=t[A>>2]|0;r=+c[i>>3]-+c[e>>3];if(!(r!=0.0)){r=+c[i+8>>3]-+c[e+8>>3];if(r==0.0)e=0;else e=r>0.0?1:-1}else e=r>0.0?1:-1;return e|0}function rO(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0,f=0,l=0,s=0,o=0;o=h;h=h+64|0;n=o+32|0;f=o+24|0;l=o+16|0;s=o;a=o+48|0;iO(e,A,a);r=a+8|0;i=t[r>>2]|0;do{if((i|0)>0)r=0;else{if((i|0)<0){iO(A,e,a);r=t[r>>2]|0;if((r|0)>0){r=0;break}if((r|0)<0)r=3;else{r=t[a>>2]|0;r=aO(A,e,(r|0)>-1?r:0-r|0)|0}if(!(tO(e,A,f,l,r)|0)){r=0;break}}else{r=t[a>>2]|0;if((r|0)==(t[a+4>>2]|0)){r=aO(e,A,0)|0;r=(aO(e,A,(r|0)<=(aO(e,A,1)|0)&1)|0)<<1}else r=aO(e,A,(r|0)>-1?r:0-r|0)|0;if(!(tO(e,A,f,l,r)|0)){r=0;break}}c[s>>3]=+c[f>>3];c[s+8>>3]=+c[l>>3];t[n>>2]=t[s>>2];t[n+4>>2]=t[s+4>>2];t[n+8>>2]=t[s+8>>2];t[n+12>>2]=t[s+12>>2];r=nO(e,A,n)|0}}while(0);h=o;return r|0}function iO(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0.0,n=0.0,f=0.0,l=0.0,s=0.0,o=0.0;f=+c[e>>3];l=+c[e+8>>3];i=t[e+16>>2]|0;if((t[i+4>>2]|0)==(e|0)){e=t[i>>2]|0;i=e}else{i=e+24|0;e=e+24|0}n=+c[i>>3]-f;a=+c[e+8>>3]-l;i=t[A+16>>2]|0;if((t[i+4>>2]|0)==(A|0)){e=t[i>>2]|0;i=e}else{i=A+24|0;e=A+24|0}s=+c[i>>3]-f;o=+c[e+8>>3]-l;l=(+c[A+8>>3]-l)*n-(+c[A>>3]-f)*a;A=l==0.0?0:l>0.0?1:-1;t[r>>2]=A;l=o*n-s*a;e=l==0.0?0:l>0.0?1:-1;t[r+4>>2]=e;t[r+8>>2]=P(e,A)|0;return}function aO(e,A,r){e=e|0;A=A|0;r=r|0;var i=0.0,a=0,n=0.0,f=0.0,l=0.0,s=0.0,o=0.0;s=+c[e>>3];o=+c[e+8>>3];a=t[e+16>>2]|0;if((t[a+4>>2]|0)==(e|0))e=t[a>>2]|0;else e=e+24|0;l=+c[e>>3];f=+c[e+8>>3];do{if(r){e=t[A+16>>2]|0;if((t[e+4>>2]|0)==(A|0)){A=t[e>>2]|0;break}else{A=A+24|0;break}}}while(0);n=+c[A>>3];i=+c[A+8>>3];if(s==l)if(s==n)A=(lO(o,i,f)|0)!=-1&1;else A=0;else A=lO(s,n,l)|0;return A|0}function tO(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;var n=0,f=0.0,l=0.0,s=0.0,o=0.0,u=0.0,b=0.0,h=0.0,w=0.0;e:do{if((a|0)<1)n=0;else{b=+c[e>>3];w=+c[e+8>>3];n=t[e+16>>2]|0;if((t[n+4>>2]|0)==(e|0))n=t[n>>2]|0;else n=e+24|0;o=+c[n>>3];l=+c[n+8>>3];u=+c[A>>3];h=+c[A+8>>3];n=t[A+16>>2]|0;if((t[n+4>>2]|0)==(A|0))n=t[n>>2]|0;else n=A+24|0;s=+c[n>>3];f=+c[n+8>>3];A:do{switch(a|0){case 3:{if(b==o){c[r>>3]=b;f=(h-f)/(u-s)*(b-s)+f;break A}if(u==s){c[r>>3]=u;f=(w-l)/(b-o)*(u-o)+l;break A}else{s=(h-f)/(u-s);o=(w-l)/(b-o);h=h-s*u;w=w-o*b;f=s-o;c[r>>3]=(w-h)/f;f=(s*w-h*o)/f;break A}}case 2:{if((aO(e,A,0)|0)==-1)if((aO(A,e,1)|0)==-1){a=(aO(A,e,0)|0)==-1;o=a?o:b;s=u;l=a?l:w;f=h}else{o=s;s=u;l=f;f=h}else if((aO(e,A,1)|0)!=-1)if((aO(A,e,0)|0)==-1){s=b;f=w}else{n=0;break e}else{o=u;l=h}c[r>>3]=(s+o)*.5;f=(f+l)*.5;break}case 1:if((h-w)*(b-o)==(u-b)*(w-l)){c[r>>3]=u;f=h;break A}else{c[r>>3]=s;break A}default:{n=1;break e}}}while(0);c[i>>3]=f;n=1}}while(0);return n|0}function nO(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0.0,n=0.0,f=0.0,l=0.0,s=0.0,o=0.0,u=0.0,b=0.0,w=0.0,k=0,d=0,v=0;v=h;h=h+16|0;k=v;b=+c[e>>3];w=+c[e+8>>3];i=t[e+16>>2]|0;if((t[i+4>>2]|0)==(e|0))i=t[i>>2]|0;else i=e+24|0;o=+c[i>>3];l=+c[i+8>>3];s=+c[A>>3];u=+c[A+8>>3];i=t[A+16>>2]|0;if((t[i+4>>2]|0)==(A|0))i=t[i>>2]|0;else i=A+24|0;f=+c[i>>3];n=+c[i+8>>3];e:do{if(!(b!=o&s!=f)){do{if(b==o){a=+c[r>>3];if(b==a?w==+c[r+8>>3]:0)break;if(!(o==a)){d=18;break e}if(!(l==+c[r+8>>3])){d=18;break e}}}while(0);if(s==f){a=+c[r>>3];if(s==a?u==+c[r+8>>3]:0){i=0;break}if(f==a?n==+c[r+8>>3]:0)i=0;else d=18}else i=0}else d=18}while(0);if((d|0)==18)if(0>1){i=t[15712]|0;w=+c[r+8>>3];c[k>>3]=+c[r>>3];c[k+8>>3]=w;a3(i,93756,k)|0;fO(1,e);fO(2,A);i=1}else i=1;h=v;return i|0}function fO(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0.0,f=0.0,l=0,s=0,o=0.0,u=0.0;s=h;h=h+48|0;l=s;a=t[15712]|0;n=+c[A>>3];f=+c[A+8>>3];r=t[A+16>>2]|0;if((t[r+4>>2]|0)==(A|0)){r=t[r>>2]|0;i=r}else{i=A+24|0;r=A+24|0}u=+c[i>>3];o=+c[r+8>>3];t[l>>2]=e;c[l+8>>3]=n;c[l+16>>3]=f;c[l+24>>3]=u;c[l+32>>3]=o;a3(a,93784,l)|0;h=s;return}function lO(e,A,r){e=+e;A=+A;r=+r;return(e==A|A==r?0:(e>3]=0.0;i=i+1|0}c[a+(e<<3)>>3]=1.0;pb(t[A+(e<<2)>>2]|0,a,r);e=e+1|0}G2(a);a=0;while(1){if((a|0)>=(r|0)){e=1;break e}i=A+(a<<2)|0;e=0;while(1){if((e|0)==(a|0))break;l=(t[i>>2]|0)+(e<<3)|0;f=+c[l>>3];n=(t[A+(e<<2)>>2]|0)+(a<<3)|0;c[l>>3]=+c[n>>3];c[n>>3]=f;e=e+1|0}a=a+1|0}}}while(0);return e|0}function cO(e,A,r,i,a,n){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;n=n|0;var f=0,l=0.0,s=0,o=0.0,u=0,b=0,h=0,w=0,k=0,d=0,v=0;k=A<<3;w=$F(k)|0;k=$F(k)|0;d=A*30|0;b=(r|0)<(A|0)?r:A;h=A+-1|0;u=(n|0)==0;r=0;f=0;e:while(1){if((f|0)>=(b|0))break;s=t[i+(f<<2)>>2]|0;do{A:do{if(u)r=0;else{r=0;while(1){if((r|0)==(A|0)){r=0;break A}c[s+(r<<3)>>3]=+((t8()|0)%100|0|0);r=r+1|0}}}while(0);while(1){if((r|0)==(f|0))break;n=t[i+(r<<2)>>2]|0;uO(s,0,h,-+oO(n,0,h,s),n);r=r+1|0}l=+bO(s,0,h)}while(l<1.0e-10);hO(s,0,h,1.0/l,s);r=0;do{wO(k,0,h,s);kO(e,A,A,s,w);wO(s,0,h,w);n=0;while(1){if((n|0)==(f|0))break;v=t[i+(n<<2)>>2]|0;uO(s,0,h,-+oO(v,0,h,s),v);n=n+1|0}v=r;r=r+1|0;l=+bO(s,0,h);if(!((v|0)<(d|0)&!(l<1.0e-10)))break e;hO(s,0,h,1.0/l,s);o=+oO(s,0,h,k)}while(+Q(+o)<.999);c[a+(f<<3)>>3]=o*l;f=f+1|0}while(1){if((f|0)>=(b|0))break;s=t[i+(f<<2)>>2]|0;n=0;while(1){if((n|0)>=(A|0)){n=0;break}c[s+(n<<3)>>3]=+((t8()|0)%100|0|0);n=n+1|0}while(1){if((n|0)>=(f|0))break;v=t[i+(n<<2)>>2]|0;uO(s,0,h,-+oO(v,0,h,s),v);n=n+1|0}hO(s,0,h,1.0/+bO(s,0,h),s);c[a+(f<<3)>>3]=0.0;f=f+1|0}u=b+-1|0;f=0;while(1){if((f|0)>=(u|0))break;e=a+(f<<3)|0;A=f+1|0;l=+c[e>>3];n=f;s=A;while(1){if((s|0)>=(b|0))break;o=+c[a+(s<<3)>>3];v=l>2]|0);v=i+(n<<2)|0;wO(t[s>>2]|0,0,h,t[v>>2]|0);wO(t[v>>2]|0,0,h,w);c[a+(n<<3)>>3]=+c[e>>3];c[e>>3]=l;f=A}G2(w);G2(k);return(r|0)<=(d|0)|0}function oO(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0,t=0.0;t=0.0;a=1-A+r|0;i=i+(A<<3)|0;r=e+(A<<3)|0;while(1){if(!a)break;t=+c[i>>3]*+c[r>>3]+t;a=a+-1|0;i=i+8|0;r=r+8|0}return+t}function uO(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=+i;a=a|0;var t=0;t=1-A+r|0;a=a+(A<<3)|0;r=e+(A<<3)|0;while(1){if(!t)break;c[r>>3]=+c[r>>3]+ +c[a>>3]*i;t=t+-1|0;a=a+8|0;r=r+8|0}return}function bO(e,A,r){e=e|0;A=A|0;r=r|0;return+ +D(+ +oO(e,A,r,e))}function hO(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=+i;a=a|0;var t=0;t=1-A+r|0;a=a+(A<<3)|0;r=e+(A<<3)|0;while(1){if(!t)break;c[r>>3]=+c[a>>3]*i;t=t+-1|0;a=a+8|0;r=r+8|0}return}function wO(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0;a=1-A+r|0;i=i+(A<<3)|0;r=e+(A<<3)|0;while(1){if(!a)break;c[r>>3]=+c[i>>3];a=a+-1|0;i=i+8|0;r=r+8|0}return}function kO(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;var n=0.0,f=0,l=0,s=0;l=0;while(1){if((l|0)>=(A|0))break;s=e+(l<<2)|0;n=0.0;f=0;while(1){if((f|0)>=(r|0))break;n=+c[i+(f<<3)>>3]*+c[(t[s>>2]|0)+(f<<3)>>3]+n;f=f+1|0}c[a+(l<<3)>>3]=n;l=l+1|0}return}function dO(e,A,r,i,a,n){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;n=n|0;var f=0,l=0,o=0.0,u=0,b=0,h=0,w=0.0;l=t[n>>2]|0;if(!l){h=r<<2;f=Z2(P(h,a)|0)|0;h=Z2(h)|0}else{h=r<<2;f=Q2(t[l>>2]|0,P(h,a)|0)|0;h=Q2(l,h)|0}t[n>>2]=h;l=0;while(1){if((l|0)>=(r|0)){n=0;break}t[h+(l<<2)>>2]=f;l=l+1|0;f=f+(a<<2)|0}while(1){if((n|0)>=(r|0))break;u=e+(n<<2)|0;b=h+(n<<2)|0;l=0;while(1){if((l|0)<(a|0)){f=0;o=0.0}else break;while(1){if((f|0)>=(i|0))break;w=+c[(t[u>>2]|0)+(f<<3)>>3]*+s[(t[A+(f<<2)>>2]|0)+(l<<2)>>2]+o;f=f+1|0;o=w}s[(t[b>>2]|0)+(l<<2)>>2]=o;l=l+1|0}n=n+1|0}return}function vO(e,A,r,i,a,n){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;n=n|0;var f=0,l=0,o=0.0,u=0,b=0,h=0;l=t[n>>2]|0;if(!l){f=Z2(P(r<<3,a)|0)|0;h=Z2(r<<2)|0}else{f=Q2(t[l>>2]|0,P(r<<3,a)|0)|0;h=Q2(l,r<<2)|0}t[n>>2]=h;l=0;while(1){if((l|0)>=(r|0)){n=0;break}t[h+(l<<2)>>2]=f;l=l+1|0;f=f+(a<<3)|0}while(1){if((n|0)>=(r|0))break;u=e+(n<<2)|0;b=h+(n<<2)|0;l=0;while(1){if((l|0)<(a|0)){o=0.0;f=0}else break;while(1){if((f|0)>=(i|0))break;o=+c[(t[u>>2]|0)+(f<<3)>>3]*+s[(t[A+(f<<2)>>2]|0)+(l<<2)>>2]+o;f=f+1|0}c[(t[b>>2]|0)+(l<<3)>>3]=o;l=l+1|0}n=n+1|0}return}function gO(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;var n=0,f=0,l=0.0,o=0,u=0,b=0,h=0,w=0,k=0;f=t[a>>2]|0;if(!f){n=Z2(P(r*20|0,i)|0)|0;k=Z2(r<<2)|0}else{n=Q2(t[f>>2]|0,P(r*20|0,i)|0)|0;k=Q2(f,r<<2)|0}t[a>>2]=k;f=0;while(1){if((f|0)>=(r|0)){a=0;break}t[k+(f<<2)>>2]=n;f=f+1|0;n=n+(i<<2)|0}while(1){if((a|0)>=(r|0))break;o=t[e+(a*20|0)+4>>2]|0;u=t[e+(a*20|0)+8>>2]|0;b=t[e+(a*20|0)>>2]|0;h=k+(a<<2)|0;n=0;while(1){if((n|0)>=(i|0))break;w=A+(n<<2)|0;l=0.0;f=0;while(1){if((f|0)>=(b|0))break;l=+c[(t[w>>2]|0)+(t[o+(f<<2)>>2]<<3)>>3]*+s[u+(f<<2)>>2]+l;f=f+1|0}s[(t[h>>2]|0)+(n<<2)>>2]=l;n=n+1|0}a=a+1|0}return}function mO(e,A){e=e|0;A=A|0;var r=0.0,i=0,a=0;r=0.0;i=A;a=e;while(1){if(!a)break;r=+c[i>>3]+r;i=i+8|0;a=a+-1|0}r=r/+(e|0);while(1){if(!e)break;c[A>>3]=+c[A>>3]-r;A=A+8|0;e=e+-1|0}return}function pO(e,A){e=e|0;A=A|0;var r=0;r=0;while(1){if((r|0)>=(e|0))break;c[A+(r<<3)>>3]=+((t8()|0)%500|0|0);r=r+1|0}mO(e,A);return}function EO(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0.0,n=0,f=0,l=0,o=0,u=0;f=0;while(1){if((f|0)>=(A|0))break;l=t[e+(f*20|0)>>2]|0;o=e+(f*20|0)+8|0;u=e+(f*20|0)+4|0;a=0.0;n=0;while(1){if((n|0)>=(l|0))break;a=+c[r+(t[(t[u>>2]|0)+(n<<2)>>2]<<3)>>3]*+s[(t[o>>2]|0)+(n<<2)>>2]+a;n=n+1|0}c[i+(f<<3)>>3]=a;f=f+1|0}return}function BO(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0.0,n=0,f=0,l=0;f=0;while(1){if((f|0)>=(A|0))break;l=e+(f<<2)|0;a=0.0;n=0;while(1){if((n|0)==(A|0))break;a=+c[r+(n<<3)>>3]*+s[(t[l>>2]|0)+(n<<2)>>2]+a;n=n+1|0}c[i+(f<<3)>>3]=a;f=f+1|0}return}function yO(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0;a=0;while(1){if((a|0)>=(e|0))break;c[i+(a<<3)>>3]=+c[A+(a<<3)>>3]-+c[r+(a<<3)>>3];a=a+1|0}return}function CO(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0;a=0;while(1){if((a|0)>=(e|0))break;c[i+(a<<3)>>3]=+c[r+(a<<3)>>3]+ +c[A+(a<<3)>>3];a=a+1|0}return}function IO(e,A,r,i){e=e|0;A=A|0;r=+r;i=i|0;var a=0;a=0;while(1){if((a|0)>=(e|0))break;c[i+(a<<3)>>3]=+c[A+(a<<3)>>3]*r;a=a+1|0}return}function ZO(e,A,r){e=e|0;A=A|0;r=r|0;var i=0;i=0;while(1){if((i|0)>=(e|0))break;c[r+(i<<3)>>3]=+c[A+(i<<3)>>3];i=i+1|0}return}function GO(e,A,r){e=e|0;A=A|0;r=r|0;var i=0.0,a=0;i=0.0;a=0;while(1){if((a|0)>=(e|0))break;i=+c[r+(a<<3)>>3]*+c[A+(a<<3)>>3]+i;a=a+1|0}return+i}function LO(e,A){e=e|0;A=A|0;var r=0,i=0.0,a=0.0;r=0;i=-1.e+50;while(1){if((r|0)>=(e|0))break;a=+Q(+ +c[A+(r<<3)>>3]);r=r+1|0;i=a>i?a:i}return+i}function QO(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;var n=0.0,f=0,l=0;l=0;while(1){if((l|0)<(A|0)){n=0.0;f=0}else break;while(1){if((f|0)>=(r|0))break;n=+c[i+(f<<3)>>3]*+c[(t[e+(f<<2)>>2]|0)+(l<<3)>>3]+n;f=f+1|0}c[a+(l<<3)>>3]=n;l=l+1|0}return}function DO(e,A){e=e|0;A=A|0;var r=0.0,i=0,a=0;r=0.0;i=A;a=e;while(1){if(!a)break;r=+s[i>>2]+r;i=i+4|0;a=a+-1|0}r=r/+(e|0);while(1){if(!e)break;s[A>>2]=+s[A>>2]-r;A=A+4|0;e=e+-1|0}return}function zO(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0,t=0.0,n=0,f=0,l=0,c=0,o=0.0,u=0,b=0.0,h=0,w=0.0;a=0;while(1){if((a|0)>=(A|0)){n=0;l=0;u=A;break}s[i+(a<<2)>>2]=0.0;a=a+1|0}while(1){if((l|0)>=(A|0))break;o=+s[r+(l<<2)>>2];c=l+1|0;t=+s[e+(n<<2)>>2]*o;f=c;a=n;while(1){a=a+1|0;if((f|0)==(A|0))break;w=+s[e+(a<<2)>>2];b=+s[r+(f<<2)>>2]*w+t;h=i+(f<<2)|0;s[h>>2]=+s[h>>2]+w*o;t=b;f=f+1|0}h=i+(l<<2)|0;s[h>>2]=+s[h>>2]+t;n=n+u|0;l=c;u=u+-1|0}return}function WO(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0;a=0;while(1){if((a|0)>=(e|0))break;s[i+(a<<2)>>2]=+s[A+(a<<2)>>2]-+s[r+(a<<2)>>2];a=a+1|0}return}function YO(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0;a=0;while(1){if((a|0)>=(e|0))break;s[i+(a<<2)>>2]=+s[r+(a<<2)>>2]+ +s[A+(a<<2)>>2];a=a+1|0}return}function FO(e,A,r,i){e=e|0;A=A|0;r=+r;i=i|0;var a=0,t=0;a=0;while(1){if((a|0)>=(e|0))break;t=A+(a<<2)|0;s[t>>2]=+s[i+(a<<2)>>2]*r+ +s[t>>2];a=a+1|0}return}function MO(e,A,r,i){e=e|0;A=A|0;r=+r;i=i|0;var a=0;a=0;while(1){if((a|0)>=(e|0))break;s[i+(a<<2)>>2]=+s[A+(a<<2)>>2]*r;a=a+1|0}return}function VO(e,A,r){e=e|0;A=A|0;r=r|0;var i=0;i=0;while(1){if((i|0)>=(e|0))break;t[r+(i<<2)>>2]=t[A+(i<<2)>>2];i=i+1|0}return}function NO(e,A,r){e=e|0;A=A|0;r=r|0;var i=0.0,a=0;i=0.0;a=0;while(1){if((a|0)>=(e|0))break;i=i+ +s[r+(a<<2)>>2]*+s[A+(a<<2)>>2];a=a+1|0}return+i}function RO(e,A,r){e=e|0;A=+A;r=r|0;var i=0;i=0;while(1){if((i|0)>=(e|0))break;c[r+(i<<3)>>3]=A;i=i+1|0}return}function xO(e,A,r){e=e|0;A=+A;r=r|0;var i=0;i=0;while(1){if((i|0)>=(e|0))break;s[r+(i<<2)>>2]=A;i=i+1|0}return}function JO(e,A){e=e|0;A=A|0;var r=0.0,i=0,a=0.0;r=-1000000015047466219876688.0e6;i=0;while(1){if((i|0)>=(e|0))break;a=+Q(+ +s[A+(i<<2)>>2]);r=a>r?a:r;i=i+1|0}return+r}function HO(e,A){e=e|0;A=A|0;var r=0,i=0,a=0.0;r=0;while(1){if((r|0)>=(e|0))break;i=A+(r<<2)|0;a=+s[i>>2];s[i>>2]=a*a;r=r+1|0}return}function PO(e,A){e=e|0;A=A|0;var r=0,i=0,a=0.0;r=0;while(1){if((r|0)>=(e|0))break;i=A+(r<<2)|0;a=+s[i>>2];if(a!=0.0)s[i>>2]=1.0/a;r=r+1|0}return}function XO(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0.0;i=0;while(1){if((i|0)>=(e|0))break;a=+s[A+(i<<2)>>2];if(a>=0.0)s[r+(i<<2)>>2]=+D(+a);i=i+1|0}return}function SO(e,A){e=e|0;A=A|0;var r=0,i=0,a=0.0;r=0;while(1){if((r|0)>=(e|0))break;i=A+(r<<2)|0;a=+s[i>>2];if(a>0.0)s[i>>2]=1.0/+D(+a);r=r+1|0}return}function jO(e,A){e=e|0;A=A|0;var r=0;t[e>>2]=0;if(A&3)if(!(4%(A>>>0)|0))A=4;else A=P(4/((UO(A)|0)>>>0)|0,A)|0;t[e+8>>2]=A;e=e+4|0;A=t[e>>2]|0;e:do{if(A|0)while(1){if(!A)break e;r=t[A>>2]|0;G2(t[A+4>>2]|0);G2(A);A=r}}while(0);t[e>>2]=0;return}function UO(e){e=e|0;var A=0,r=0;r=4;e:while(1){A=r;while(1){if((A|0)==(e|0))break e;if((A|0)<=(e|0))break;A=A-e|0}r=A;e=e-A|0}return e|0}function TO(e){e=e|0;var A=0,r=0,i=0,a=0;A=t[e>>2]|0;if(!A){r=t[e+8>>2]|0;i=$F(8)|0;a=$F(P(t[46855]|0,r)|0)|0;t[i+4>>2]=a;A=0;while(1){if((A|0)>=(t[46855]|0))break;OO(a+(P(A,r)|0)|0,e);A=A+1|0}A=e+4|0;t[i>>2]=t[A>>2];t[A>>2]=i;A=t[e>>2]|0}t[e>>2]=t[A>>2];return A|0}function OO(e,A){e=e|0;A=A|0;t[e>>2]=t[A>>2];t[A>>2]=e;return}function _O(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0,n=0,f=0,l=0,c=0,o=0,u=0;u=KF(A<<3)|0;o=e+8|0;a=t[o>>2]|0;qO(e,A,u);pO(A,r);n=0;f=0;while(1){if((f|0)>=(A|0))break;n=(t[e+(f*20|0)>>2]|0)+n|0;f=f+1|0}n=$F(n<<2)|0;l=0;while(1){if((l|0)>=(A|0))break;t[e+(l*20|0)+8>>2]=n;c=t[e+(l*20|0)>>2]|0;s[n>>2]=+(1-c|0);f=1;while(1){if((f|0)>=(c|0))break;s[n+(f<<2)>>2]=1.0;f=f+1|0}n=n+(c<<2)|0;l=l+1|0}f=oU(e,r,u,A,.001,i)|0;G2(t[o>>2]|0);n=0;while(1){if((n|0)>=(A|0))break;t[e+(n*20|0)+8>>2]=a;a=a+(t[e+(n*20|0)>>2]<<2)|0;n=n+1|0}G2(u);return f>>>31|0}function qO(e,A,r){e=e|0;A=A|0;r=r|0;var i=0.0,a=0,n=0,f=0,l=0,o=0,u=0;l=e+16|0;n=0;while(1){if((n|0)>=(A|0))break;if(t[l>>2]|0){o=t[e+(n*20|0)>>2]|0;u=e+(n*20|0)+8|0;f=e+(n*20|0)+16|0;i=0.0;a=1;while(1){if((a|0)>=(o|0))break;i=i+ +s[(t[f>>2]|0)+(a<<2)>>2]*+s[(t[u>>2]|0)+(a<<2)>>2];a=a+1|0}c[r+(n<<3)>>3]=i}n=n+1|0}return}function KO(e,A,r,i,a,n,f,l,s){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;n=n|0;f=+f;l=l|0;s=s|0;e=h;h=h+16|0;if(!(t[46913]|0)){t[46913]=1;nw(1,93820,e)|0}h=e;return}function $O(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;var n=0,f=0,l=0.0,s=0,o=0,u=0,b=0,h=0,w=0,k=0,d=0,v=0.0;d=$F(a<<2)|0;f=A<<3;n=0;while(1){if((n|0)>=(a|0))break;t[d+(n<<2)>>2]=$F(f)|0;n=n+1|0}w=$F(a<<3)|0;k=$F(A<<2)|0;n=$F(P(f,A)|0)|0;f=0;while(1){if((f|0)>=(A|0))break;t[k+(f<<2)>>2]=n;n=n+(A<<3)|0;f=f+1|0}s=0;h=1;while(1){if((s|0)>=(A|0))break;o=e+(s<<2)|0;u=k+(s<<2)|0;f=0;while(1){if((f|0)==(h|0))break;b=e+(f<<2)|0;n=0;l=0.0;while(1){if((n|0)>=(r|0))break;v=l+ +(P(t[(t[b>>2]|0)+(n<<2)>>2]|0,t[(t[o>>2]|0)+(n<<2)>>2]|0)|0);n=n+1|0;l=v}c[(t[k+(f<<2)>>2]|0)+(s<<3)>>3]=l;c[(t[u>>2]|0)+(f<<3)>>3]=l;f=f+1|0}s=s+1|0;h=h+1|0}cO(k,A,a,d,w,1)|0;f=0;while(1){if((f|0)>=(a|0)){n=0;break}o=d+(f<<2)|0;u=i+(f<<2)|0;s=0;while(1){if((s|0)<(r|0)){n=0;l=0.0}else break;while(1){if((n|0)>=(A|0))break;v=+c[(t[o>>2]|0)+(n<<3)>>3]*+(t[(t[e+(n<<2)>>2]|0)+(s<<2)>>2]|0)+l;n=n+1|0;l=v}c[(t[u>>2]|0)+(s<<3)>>3]=l;s=s+1|0}f=f+1|0}while(1){if((n|0)>=(a|0))break;G2(t[d+(n<<2)>>2]|0);n=n+1|0}G2(d);G2(w);G2(t[k>>2]|0);G2(k);return}function e_(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0,n=0,f=0,l=0,s=0;a=h;h=h+32|0;n=a+16|0;s=a+20|0;l=a+12|0;f=a+8|0;t[n>>2]=i;t[l>>2]=0;t[f>>2]=0;lb(t[e>>2]|0,r,r<<2,s);gO(t[s>>2]|0,e,r,A,l);vO(e,t[l>>2]|0,A,r,A,f);G2(t[t[l>>2]>>2]|0);G2(t[l>>2]|0);i=(cO(t[f>>2]|0,A,1,n,a,1)|0)&255;h=a;return i|0}function A_(){t[46914]=0;G2(t[46915]|0);G2(t[46916]|0);G2(t[46917]|0);t[46915]=0;t[46916]=0;t[46917]=0;return}function r_(e){e=e|0;G2(t[e+36>>2]|0);return}function i_(e,A,r,a){e=e|0;A=A|0;r=+r;a=+a;var n=0,f=0,l=0,s=0,o=0,u=0,b=0,w=0,k=0,d=0,v=0.0,g=0.0,m=0.0,p=0.0;d=h;h=h+80|0;b=d+64|0;k=d+68|0;f=d+48|0;l=d+32|0;s=d+16|0;o=d;u=A+16|0;n=t[u>>2]|0;e:do{if(!(t[n+212>>2]|0))switch(oN(A)|0){case 1:{n=t[u>>2]|0;l=t[n+12>>2]|0;s=t[l+8>>2]|0;t[k>>2]=s;n=t[t[n+8>>2]>>2]|0;switch(i[n>>0]|0){case 98:{if(!(e1(n,108236)|0))w=11;else w=8;break}case 112:{if((e1(n,105721)|0)==0?(a_(t[l+44>>2]|0,s)|0)!=0:0)w=11;else w=8;break}default:w=8}do{if((w|0)==8)if((s|0)<3){t[e+40>>2]=(t[l>>2]|0)==0?0:2;w=17;break}else{n=e+40|0;t[n>>2]=0;break}else if((w|0)==11){n=e+40|0;t[n>>2]=1;if((s|0)<=2)w=17}}while(0);if((w|0)==17){f=t_(A,k,r,a)|0;w=21;break e}f=$F(s<<4)|0;l=l+44|0;if((t[n>>2]|0)==1){w=t[l>>2]|0;v=r;c[f>>3]=+c[w>>3]*.013888888888888888+v;r=a;c[f+8>>3]=+c[w+8>>3]*.013888888888888888+r;c[f+16>>3]=+c[w+16>>3]*.013888888888888888-v;c[f+24>>3]=+c[w+24>>3]*.013888888888888888+r;c[f+32>>3]=+c[w+32>>3]*.013888888888888888-v;c[f+40>>3]=+c[w+40>>3]*.013888888888888888-r;c[f+48>>3]=+c[w+48>>3]*.013888888888888888+v;c[f+56>>3]=+c[w+56>>3]*.013888888888888888-r;w=21;break e}n=0;while(1){if((n|0)>=(s|0)){w=21;break e}w=t[l>>2]|0;m=+c[w+(n<<4)>>3];v=+c[w+(n<<4)+8>>3];g=+D(+(v*v+m*m));c[f+(n<<4)>>3]=(r/g+1.0)*m*.013888888888888888;c[f+(n<<4)+8>>3]=(a/g+1.0)*v*.013888888888888888;n=n+1|0}}case 2:{t[k>>2]=4;w=$F(64)|0;A=t[(t[u>>2]|0)+12>>2]|0;p=+c[A+32>>3];g=+c[A+40>>3];b=~~+c[A+16>>3];A=~~+c[A+24>>3];m=-r;v=-a;n_(f,b,A,m,v);t[w>>2]=t[f>>2];t[w+4>>2]=t[f+4>>2];t[w+8>>2]=t[f+8>>2];t[w+12>>2]=t[f+12>>2];f=w+16|0;u=~~p;n_(l,u,A,r,v);t[f>>2]=t[l>>2];t[f+4>>2]=t[l+4>>2];t[f+8>>2]=t[l+8>>2];t[f+12>>2]=t[l+12>>2];f=w+32|0;A=~~g;n_(s,u,A,r,a);t[f>>2]=t[s>>2];t[f+4>>2]=t[s+4>>2];t[f+8>>2]=t[s+8>>2];t[f+12>>2]=t[s+12>>2];f=w+48|0;n_(o,b,A,m,a);t[f>>2]=t[o>>2];t[f+4>>2]=t[o+4>>2];t[f+8>>2]=t[o+8>>2];t[f+12>>2]=t[o+12>>2];t[e+40>>2]=1;f=w;w=21;break e}case 3:{t[e+40>>2]=2;f=t_(A,k,r,a)|0;w=21;break e}default:{t[b>>2]=t[t[(t[u>>2]|0)+8>>2]>>2];nw(1,93883,b)|0;n=1;break e}}else{t[k>>2]=4;m=+c[n+32>>3]*.5+r;p=+c[n+40>>3]*.5+a;t[e+40>>2]=1;f=$F(64)|0;c[f>>3]=m;c[f+8>>3]=p;g=-m;c[f+16>>3]=g;c[f+24>>3]=p;c[f+32>>3]=g;p=-p;c[f+40>>3]=p;c[f+48>>3]=m;c[f+56>>3]=p;w=21}}while(0);if((w|0)==21){t[e+36>>2]=f;n=t[k>>2]|0;t[e+32>>2]=n;f_(f,n,e,e+16|0);if((n|0)>(t[46914]|0)){t[46914]=n;n=0}else n=0}h=d;return n|0}function a_(e,A){e=e|0;A=A|0;var r=0.0,i=0.0;do{if((A|0)==4){r=+c[e+8>>3];A=e+16|0;i=+c[e+24>>3];if(r==i){if(!(+c[e+40>>3]==+c[e+56>>3])){A=0;break}if(!(+c[e>>3]==+c[e+48>>3])){A=0;break}A=+c[A>>3]==+c[e+32>>3];break}if((+c[e>>3]==+c[A>>3]?+c[e+32>>3]==+c[e+48>>3]:0)?r==+c[e+56>>3]:0)A=i==+c[e+40>>3];else A=0}else A=0}while(0);return A&1|0}function t_(e,A,r,i){e=e|0;A=A|0;r=+r;i=+i;var a=0,n=0.0,f=0,l=0,s=0.0,o=0;a=Hw(e,102705)|0;if(!a)a=0;else a=K3(a)|0;f=(a|0)<3?20:a;l=$F(f<<4)|0;e=e+16|0;n=1.0/+(f|0);a=0;while(1){if((a|0)>=(f|0))break;o=t[e>>2]|0;s=n*+(a|0)*6.283185307179586;c[l+(a<<4)>>3]=(+c[o+32>>3]*.5+r)*+W(+s);c[l+(a<<4)+8>>3]=(+c[o+40>>3]*.5+i)*+Y(+s);a=a+1|0}t[A>>2]=f;return l|0}function n_(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=+i;a=+a;c[e>>3]=+(A|0)*.013888888888888888+i;c[e+8>>3]=+(r|0)*.013888888888888888+a;return}function f_(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0,t=0.0,n=0.0,f=0.0,l=0.0,s=0,o=0.0,u=0.0;l=+c[e>>3];f=+c[e+8>>3];a=1;t=f;n=l;while(1){if((a|0)>=(A|0))break;s=e+16|0;o=+c[s>>3];u=+c[e+24>>3];a=a+1|0;t=u>t?u:t;n=o>n?o:n;f=u>3]=l;c[r+8>>3]=f;c[i>>3]=n;c[i+8>>3]=t;return}function l_(e,A,r,a){e=e|0;A=A|0;r=+r;a=+a;var n=0,f=0,l=0,s=0,o=0,u=0,b=0,w=0,k=0,d=0,v=0.0,g=0.0,m=0.0,p=0.0;d=h;h=h+80|0;u=d+64|0;w=d+68|0;f=d+48|0;l=d+32|0;s=d+16|0;o=d;b=A+16|0;n=t[b>>2]|0;e:do{if(!(t[n+212>>2]|0))switch(oN(A)|0){case 1:{o=t[(t[b>>2]|0)+12>>2]|0;u=o+8|0;s=t[u>>2]|0;t[w>>2]=s;A:do{if((s|0)>2){f=$F(s<<4)|0;l=o+44|0;n=0;while(1){if((n|0)>=(s|0))break A;A=t[l>>2]|0;c[f+(n<<4)>>3]=+c[A+(n<<4)>>3]*.013888888888888888;c[f+(n<<4)+8>>3]=+c[A+(n<<4)+8>>3]*.013888888888888888;n=n+1|0}}else f=t_(A,w,0.0,0.0)|0}while(0);n=t[t[(t[b>>2]|0)+8>>2]>>2]|0;switch(i[n>>0]|0){case 98:{if(!(e1(n,108236)|0))n=1;else k=13;break}case 112:{if((e1(n,105721)|0)==0?(a_(f,t[w>>2]|0)|0)!=0:0)n=1;else k=13;break}default:k=13}do{if((k|0)==13){if((t[u>>2]|0)<3?t[o>>2]|0:0){n=2;break}n=0}}while(0);t[e+40>>2]=n;k=20;break e}case 2:{t[w>>2]=4;k=$F(64)|0;b=t[(t[b>>2]|0)+12>>2]|0;g=+c[b+16>>3];p=+c[b+24>>3];m=+c[b+32>>3];v=+c[b+40>>3];s_(f,g,p);t[k>>2]=t[f>>2];t[k+4>>2]=t[f+4>>2];t[k+8>>2]=t[f+8>>2];t[k+12>>2]=t[f+12>>2];f=k+16|0;s_(l,m,p);t[f>>2]=t[l>>2];t[f+4>>2]=t[l+4>>2];t[f+8>>2]=t[l+8>>2];t[f+12>>2]=t[l+12>>2];f=k+32|0;s_(s,m,v);t[f>>2]=t[s>>2];t[f+4>>2]=t[s+4>>2];t[f+8>>2]=t[s+8>>2];t[f+12>>2]=t[s+12>>2];f=k+48|0;s_(o,g,v);t[f>>2]=t[o>>2];t[f+4>>2]=t[o+4>>2];t[f+8>>2]=t[o+8>>2];t[f+12>>2]=t[o+12>>2];t[e+40>>2]=1;f=k;k=20;break e}case 3:{t[e+40>>2]=2;f=t_(A,w,0.0,0.0)|0;k=20;break e}default:{t[u>>2]=t[t[(t[b>>2]|0)+8>>2]>>2];nw(1,93919,u)|0;n=1;break e}}else{t[w>>2]=4;m=+c[n+32>>3]*.5;p=+c[n+40>>3]*.5;t[e+40>>2]=1;f=$F(64)|0;c[f>>3]=m;c[f+8>>3]=p;g=-m;c[f+16>>3]=g;c[f+24>>3]=p;c[f+32>>3]=g;p=-p;c[f+40>>3]=p;c[f+48>>3]=m;c[f+56>>3]=p;k=20}}while(0);if((k|0)==20){n=t[w>>2]|0;if(r!=1.0|a!=1.0)c_(f,n,r,a);t[e+36>>2]=f;t[e+32>>2]=n;f_(f,n,e,e+16|0);if((n|0)>(t[46914]|0)){t[46914]=n;n=0}else n=0}h=d;return n|0}function s_(e,A,r){e=e|0;A=+A;r=+r;c[e>>3]=A*.013888888888888888;c[e+8>>3]=r*.013888888888888888;return}function c_(e,A,r,i){e=e|0;A=A|0;r=+r;i=+i;var a=0,t=0;a=0;while(1){if((a|0)>=(A|0))break;c[e>>3]=+c[e>>3]*r;t=e+8|0;c[t>>3]=+c[t>>3]*i;e=e+16|0;a=a+1|0}return}function o_(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0,n=0,f=0,l=0,s=0,o=0,u=0,b=0,w=0,k=0,d=0,v=0.0,g=0.0,m=0.0,p=0;d=h;h=h+128|0;b=d+112|0;u=d+96|0;o=d+80|0;a=d+64|0;w=d+48|0;k=d+32|0;l=d+16|0;s=d;t[u>>2]=t[e>>2];t[u+4>>2]=t[e+4>>2];t[u+8>>2]=t[e+8>>2];t[u+12>>2]=t[e+12>>2];t[b>>2]=t[A>>2];t[b+4>>2]=t[A+4>>2];t[b+8>>2]=t[A+8>>2];t[b+12>>2]=t[A+12>>2];sT(w,u,b);n=A+16|0;t[u>>2]=t[e>>2];t[u+4>>2]=t[e+4>>2];t[u+8>>2]=t[e+8>>2];t[u+12>>2]=t[e+12>>2];t[b>>2]=t[n>>2];t[b+4>>2]=t[n+4>>2];t[b+8>>2]=t[n+8>>2];t[b+12>>2]=t[n+12>>2];sT(k,u,b);t[u>>2]=t[r>>2];t[u+4>>2]=t[r+4>>2];t[u+8>>2]=t[r+8>>2];t[u+12>>2]=t[r+12>>2];t[b>>2]=t[i>>2];t[b+4>>2]=t[i+4>>2];t[b+8>>2]=t[i+8>>2];t[b+12>>2]=t[i+12>>2];sT(l,u,b);f=i+16|0;t[u>>2]=t[r>>2];t[u+4>>2]=t[r+4>>2];t[u+8>>2]=t[r+8>>2];t[u+12>>2]=t[r+12>>2];t[b>>2]=t[f>>2];t[b+4>>2]=t[f+4>>2];t[b+8>>2]=t[f+8>>2];t[b+12>>2]=t[f+12>>2];sT(s,u,b);t[a>>2]=t[w>>2];t[a+4>>2]=t[w+4>>2];t[a+8>>2]=t[w+8>>2];t[a+12>>2]=t[w+12>>2];t[o>>2]=t[k>>2];t[o+4>>2]=t[k+4>>2];t[o+8>>2]=t[k+8>>2];t[o+12>>2]=t[k+12>>2];t[u>>2]=t[l>>2];t[u+4>>2]=t[l+4>>2];t[u+8>>2]=t[l+8>>2];t[u+12>>2]=t[l+12>>2];t[b>>2]=t[s>>2];t[b+4>>2]=t[s+4>>2];t[b+8>>2]=t[s+8>>2];t[b+12>>2]=t[s+12>>2];do{if(u_(a,o,u,b)|0){a=t[A+40>>2]|0;if(a&1|0?t[i+40>>2]&1|0:0){a=1;break}if(a&2|0?t[i+40>>2]&2|0:0){v=+c[n>>3]-+c[A>>3]+ +c[f>>3]-+c[i>>3];g=+c[e>>3]-+c[r>>3];m=+c[e+8>>3]-+c[r+8>>3];a=!(m*m+g*g>v*v*.25);break}a=t[46915]|0;if(!a){t[46915]=$F(t[46914]<<4)|0;f=$F(t[46914]<<4)|0;t[46916]=f;a=t[46915]|0}else f=t[46916]|0;p=t[A+36>>2]|0;A=A+32|0;n=t[A>>2]|0;t[b>>2]=t[e>>2];t[b+4>>2]=t[e+4>>2];t[b+8>>2]=t[e+8>>2];t[b+12>>2]=t[e+12>>2];b_(p,n,b,a);e=t[i+36>>2]|0;n=i+32|0;i=t[n>>2]|0;t[b>>2]=t[r>>2];t[b+4>>2]=t[r+4>>2];t[b+8>>2]=t[r+8>>2];t[b+12>>2]=t[r+12>>2];b_(e,i,b,f);if(!(h_(a,f,t[A>>2]|0,t[n>>2]|0)|0)){a=t[46915]|0;t[o>>2]=t[a>>2];t[o+4>>2]=t[a+4>>2];t[o+8>>2]=t[a+8>>2];t[o+12>>2]=t[a+12>>2];t[u>>2]=t[l>>2];t[u+4>>2]=t[l+4>>2];t[u+8>>2]=t[l+8>>2];t[u+12>>2]=t[l+12>>2];t[b>>2]=t[s>>2];t[b+4>>2]=t[s+4>>2];t[b+8>>2]=t[s+8>>2];t[b+12>>2]=t[s+12>>2];if(w_(o,u,b)|0?(s=t[46916]|0,p=t[n>>2]|0,t[b>>2]=t[a>>2],t[b+4>>2]=t[a+4>>2],t[b+8>>2]=t[a+8>>2],t[b+12>>2]=t[a+12>>2],k_(s,p,b)|0):0){a=1;break}a=t[46916]|0;t[o>>2]=t[a>>2];t[o+4>>2]=t[a+4>>2];t[o+8>>2]=t[a+8>>2];t[o+12>>2]=t[a+12>>2];t[u>>2]=t[w>>2];t[u+4>>2]=t[w+4>>2];t[u+8>>2]=t[w+8>>2];t[u+12>>2]=t[w+12>>2];t[b>>2]=t[k>>2];t[b+4>>2]=t[k+4>>2];t[b+8>>2]=t[k+8>>2];t[b+12>>2]=t[k+12>>2];if(!(w_(o,u,b)|0))a=0;else{k=t[46915]|0;p=t[A>>2]|0;t[b>>2]=t[a>>2];t[b+4>>2]=t[a+4>>2];t[b+8>>2]=t[a+8>>2];t[b+12>>2]=t[a+12>>2];a=(k_(k,p,b)|0)!=0}}else a=1}else a=0}while(0);h=d;return a&1|0}function u_(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;if((+c[e>>3]<=+c[i>>3]?+c[r>>3]<=+c[A>>3]:0)?+c[e+8>>3]<=+c[i+8>>3]:0)e=+c[r+8>>3]<=+c[A+8>>3]&1;else e=0;return e|0}function b_(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0,t=0;t=r+8|0;a=0;while(1){if((a|0)>=(A|0))break;c[i>>3]=+c[r>>3]+ +c[e>>3];c[i+8>>3]=+c[t>>3]+ +c[e+8>>3];a=a+1|0;e=e+16|0;i=i+16|0}return}function h_(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0,n=0,f=0,l=0,s=0.0,c=0,o=0,u=0,b=0,w=0,k=0,d=0,v=0,g=0,m=0,p=0,E=0,B=0,y=0,C=0,I=0,Z=0,G=0;I=h;h=h+112|0;v=I+96|0;d=I+80|0;k=I+64|0;w=I+48|0;m=I+32|0;p=I+16|0;E=I;B=r+-1|0;y=i+-1|0;C=r<<1;g=i<<1;a=0;n=0;f=0;l=0;while(1){Z=e+(a<<4)|0;G=e+(((B+a|0)%(r|0)|0)<<4)|0;t[d>>2]=t[Z>>2];t[d+4>>2]=t[Z+4>>2];t[d+8>>2]=t[Z+8>>2];t[d+12>>2]=t[Z+12>>2];t[v>>2]=t[G>>2];t[v+4>>2]=t[G+4>>2];t[v+8>>2]=t[G+8>>2];t[v+12>>2]=t[G+12>>2];lT(m,d,v);b=A+(n<<4)|0;u=A+(((y+n|0)%(i|0)|0)<<4)|0;t[d>>2]=t[b>>2];t[d+4>>2]=t[b+4>>2];t[d+8>>2]=t[b+8>>2];t[d+12>>2]=t[b+12>>2];t[v>>2]=t[u>>2];t[v+4>>2]=t[u+4>>2];t[v+8>>2]=t[u+8>>2];t[v+12>>2]=t[u+12>>2];lT(p,d,v);t[k>>2]=t[46540];t[k+4>>2]=t[46541];t[k+8>>2]=t[46542];t[k+12>>2]=t[46543];t[d>>2]=t[m>>2];t[d+4>>2]=t[m+4>>2];t[d+8>>2]=t[m+8>>2];t[d+12>>2]=t[m+12>>2];t[v>>2]=t[p>>2];t[v+4>>2]=t[p+4>>2];t[v+8>>2]=t[p+8>>2];t[v+12>>2]=t[p+12>>2];s=+cT(k,d,v);t[k>>2]=t[G>>2];t[k+4>>2]=t[G+4>>2];t[k+8>>2]=t[G+8>>2];t[k+12>>2]=t[G+12>>2];t[d>>2]=t[Z>>2];t[d+4>>2]=t[Z+4>>2];t[d+8>>2]=t[Z+8>>2];t[d+12>>2]=t[Z+12>>2];t[v>>2]=t[b>>2];t[v+4>>2]=t[b+4>>2];t[v+8>>2]=t[b+8>>2];t[v+12>>2]=t[b+12>>2];c=oT(k,d,v)|0;t[k>>2]=t[u>>2];t[k+4>>2]=t[u+4>>2];t[k+8>>2]=t[u+8>>2];t[k+12>>2]=t[u+12>>2];t[d>>2]=t[b>>2];t[d+4>>2]=t[b+4>>2];t[d+8>>2]=t[b+8>>2];t[d+12>>2]=t[b+12>>2];t[v>>2]=t[Z>>2];t[v+4>>2]=t[Z+4>>2];t[v+8>>2]=t[Z+8>>2];t[v+12>>2]=t[Z+12>>2];o=oT(k,d,v)|0;t[w>>2]=t[G>>2];t[w+4>>2]=t[G+4>>2];t[w+8>>2]=t[G+8>>2];t[w+12>>2]=t[G+12>>2];t[k>>2]=t[Z>>2];t[k+4>>2]=t[Z+4>>2];t[k+8>>2]=t[Z+8>>2];t[k+12>>2]=t[Z+12>>2];t[d>>2]=t[u>>2];t[d+4>>2]=t[u+4>>2];t[d+8>>2]=t[u+8>>2];t[d+12>>2]=t[u+12>>2];t[v>>2]=t[b>>2];t[v+4>>2]=t[b+4>>2];t[v+8>>2]=t[b+8>>2];t[v+12>>2]=t[b+12>>2];if(uT(w,k,d,v,E)|0){a=1;break}u=(c|0)==0;b=(o|0)==0;do{if(s!=0.0|(o|c|0)!=0)if(!(s>=0.0))if(b){a=(a+1|0)%(r|0)|0;f=f+1|0;break}else{n=(n+1|0)%(i|0)|0;l=l+1|0;break}else if(u){n=(n+1|0)%(i|0)|0;l=l+1|0;break}else{a=(a+1|0)%(r|0)|0;f=f+1|0;break}else{a=(a+1|0)%(r|0)|0;f=f+1|0}}while(0);if(!((l|0)<(g|0)&((f|0)<(C|0)&((l|0)<(i|0)|(f|0)<(r|0))))){a=0;break}}h=I;return a|0}function w_(e,A,r){e=e|0;A=A|0;r=r|0;var i=0.0,a=0.0;a=+c[e>>3];if((a<=+c[r>>3]?a>=+c[A>>3]:0)?(i=+c[e+8>>3],i<=+c[r+8>>3]):0)e=i>=+c[A+8>>3]&1;else e=0;return e|0}function k_(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0.0,n=0,f=0,l=0.0,s=0.0,o=0;i=t[46917]|0;if(!i){i=$F(t[46914]<<4)|0;t[46917]=i}f=r+8|0;n=0;while(1){if((n|0)>=(A|0))break;c[i+(n<<4)>>3]=+c[e+(n<<4)>>3]-+c[r>>3];c[i+(n<<4)+8>>3]=+c[e+(n<<4)+8>>3]-+c[f>>3];n=n+1|0}r=A+-1|0;a=0.0;e=0;e:while(1){if((e|0)>=(A|0)){o=19;break}n=(r+e|0)%(A|0)|0;l=+c[i+(e<<4)+8>>3];f=l==0.0;if(f?+c[i+(n<<4)+8>>3]==0.0:0){if(+c[i+(n<<4)>>3]*+c[i+(e<<4)>>3]<0.0){i=1;break}}else o=11;do{if((o|0)==11){o=0;s=+c[i+(n<<4)+8>>3];if(!(l>=0.0)|!(s<=0.0)?!(s>=0.0)|!(l<=0.0):0)break;l=(s*+c[i+(e<<4)>>3]-l*+c[i+(n<<4)>>3])/(s-l);if(l==0.0){i=1;break e}if(l>0.0)if(s==0.0|f){a=a+.5;break}else{a=a+1.0;break}}}while(0);e=e+1|0}if((o|0)==19)i=((~~a|0)%2|0|0)==1&1;return i|0}function d_(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0,f=0,l=0,s=0,c=0;s=$F(A<<2)|0;l=P(A,A)|0;r=$F(l<<2)|0;t[s>>2]=r;xO(l,0.0,r);r=1;while(1){if((r|0)>=(A|0)){r=0;n=0;l=A;break}t[s+(r<<2)>>2]=(t[s>>2]|0)+((P(r,A)|0)<<2);r=r+1|0}while(1){if((n|0)>=(A|0))break;f=s+(n<<2)|0;i=n;a=r;while(1){if((i|0)==(A|0))break;c=t[e+(a<<2)>>2]|0;t[(t[f>>2]|0)+(i<<2)>>2]=c;t[(t[s+(i<<2)>>2]|0)+(n<<2)>>2]=c;i=i+1|0;a=a+1|0}r=r+l|0;n=n+1|0;l=l+-1|0}return s|0}function v_(e,A,r,i,a,n,f,l){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;n=n|0;f=f|0;l=+l;var c=0.0,o=0.0,u=0.0,b=0,h=0,w=0,k=0.0,d=0,v=0.0,g=0,m=0,p=0,E=0,B=0,y=0.0,C=0,I=0,Z=0,G=0,L=0,D=0,z=0,W=0,Y=0,F=0,M=0,V=0,N=0,R=0.0;N=t[r+(a<<2)>>2]|0;Z=t[e+4>>2]|0;G=t[e>>2]|0;L=t[e+48>>2]|0;D=t[e+52>>2]|0;z=t[e+56>>2]|0;e:do{if((n|0)<1)r=0;else{m_(N,Z,L,D,z,l);W=t[e+28>>2]|0;Y=t[e+32>>2]|0;F=t[e+36>>2]|0;M=t[e+12>>2]|0;V=t[e+16>>2]|0;a=0;i=0;r=-1;while(1){if((a|0)>=(Z|0))break;if((a|0)>=(i|0)){r=r+1|0;if((r|0)==(z|0)){i=Z;r=z}else i=t[D+(r<<2)>>2]|0}t[V+(t[L+(a<<2)>>2]<<2)>>2]=r;a=a+1|0}C=t[e+40>>2]|0;I=Y+(Z+-1<<2)|0;r=0;i=0;while(1){if(i<<24>>24==0&(r|0)<(n|0)){c=-1.0e9;a=0;i=1}else break e;A:while(1){B=a;while(1){if((B|0)>=(Z|0))break A;a=t[L+(B<<2)>>2]|0;y=+s[N+(a<<2)>>2];o=y;E=B;u=0.0;while(1){s[C+(a<<2)>>2]=u;a=E+1|0;if((a|0)>=(Z|0)){p=0;break}o=(t[V+(a<<2)>>2]|0)>(t[V+(E<<2)>>2]|0)?o+l:o;e=t[L+(a<<2)>>2]|0;u=+s[N+(e<<2)>>2];if(+Q(+(u-o))>1.0e-09){p=1;break}E=a;u=u-y;a=e}b=B;while(1){if((b|0)>(E|0)){e=0;h=B;break}h=t[L+(b<<2)>>2]|0;w=t[G+(h<<2)>>2]|0;e=0;o=-+s[A+(h<<2)>>2];while(1){if((e|0)>=(Z|0))break;if((e|0)!=(h|0))o=+s[N+(e<<2)>>2]*+s[w+(e<<2)>>2]+o;e=e+1|0}s[W+(h<<2)>>2]=o/-+s[w+(h<<2)>>2]-+s[C+(h<<2)>>2];b=b+1|0}r:while(1){if((h|0)>(E|0)){u=0.0;k=0.0;d=0;break}b=t[V+(t[L+(h<<2)>>2]<<2)>>2]|0;if((b|0)==(z|0))d=a;else{d=t[D+(b<<2)>>2]|0;d=(a|0)<(d|0)?a:d}w=h;while(1){if((w|0)>=(d|0)){w=h;break}b=t[L+(w<<2)>>2]|0;if(+s[W+(b<<2)>>2]>2]=b;e=e+1|0}w=w+1|0}while(1){if((w|0)>=(d|0))break;b=t[L+(w<<2)>>2]|0;if(+s[W+(b<<2)>>2]==y){t[M+(e<<2)>>2]=b;e=e+1|0}w=w+1|0}while(1){if((h|0)>=(d|0)){h=d;continue r}b=t[L+(h<<2)>>2]|0;if(+s[W+(b<<2)>>2]>y){t[M+(e<<2)>>2]=b;e=e+1|0}h=h+1|0}}while(1){if((d|0)>=(e|0))break;h=t[M+(d<<2)>>2]|0;w=t[G+(h<<2)>>2]|0;o=0.0;b=0;while(1){if((b|0)==(d|0))break;o=o-+s[w+(t[M+(b<<2)>>2]<<2)>>2];b=b+1|0}R=o*2.0;m=w+(h<<2)|0;v=+s[m>>2];o=R+u;v=(R*y+u*k-+s[W+(h<<2)>>2]*v)/(o-v);s[Y+(d<<2)>>2]=v;u=o-+s[m>>2];k=v;d=d+1|0}w=(e|0)==(Z|0);if(w)s[I>>2]=y;m=e+-1|0;u=0.0;k=0.0;h=m;while(1){if((h|0)<=-1)break;d=t[M+(h<<2)>>2]|0;g=t[G+(d<<2)>>2]|0;o=0.0;b=h;while(1){b=b+1|0;if((b|0)>=(e|0))break;o=o-+s[g+(t[M+(b<<2)>>2]<<2)>>2]}o=o*2.0;g=g+(d<<2)|0;R=+s[g>>2];v=o+u;R=(o*y+u*k-+s[W+(d<<2)>>2]*R)/(v-R);s[F+(h<<2)>>2]=R;u=v-+s[g>>2];k=R;h=h+-1|0}if(w){s[F>>2]=y;v=0.0;b=-1;w=0}else{v=0.0;b=-1;w=0}while(1){if((e|0)<=(w|0))break;k=+s[F+(w<<2)>>2];if((w|0)>0)o=+s[Y+(w+-1<<2)>>2];else o=k;do{if(ky;if(kv;v=g?R:v;b=g?w:b;w=w+1|0}if((b|0)>-1)break;if(p?(t[V+(t[L+(a<<2)>>2]<<2)>>2]|0)>(t[V+(t[L+(E<<2)>>2]<<2)>>2]|0):0){c=+s[N+(t[M+(m<<2)>>2]<<2)>>2]+l;B=a;continue}c=+s[N+(t[M+(m<<2)>>2]<<2)>>2];B=a}u=+s[F+(b<<2)>>2];if(!b)k=u;else k=+s[Y+(b+-1<<2)>>2];if(p){g=t[L+(a<<2)>>2]|0;o=+s[N+(g<<2)>>2];o=((t[V+(g<<2)>>2]|0)>(t[V+(t[L+(E<<2)>>2]<<2)>>2]|0)?o-l:o)-+s[C+(t[M+(m<<2)>>2]<<2)>>2]}else o=1.0e9;o=uc?k:c;do{if(oy;if(o=(b|0))break;g=t[M+(h<<2)>>2]|0;s[N+(g<<2)>>2]=+s[C+(g<<2)>>2]+o;h=h+1|0}while(1){if((b|0)>=(e|0))break;g=t[M+(b<<2)>>2]|0;s[N+(g<<2)>>2]=+s[C+(g<<2)>>2]+u;b=b+1|0}if(p?(t[V+(t[L+(a<<2)>>2]<<2)>>2]|0)>(t[V+(t[L+(E<<2)>>2]<<2)>>2]|0):0)c=+s[N+(t[M+(m<<2)>>2]<<2)>>2]+l;else c=+s[N+(t[M+(m<<2)>>2]<<2)>>2];e=B;while(1){if((e|0)>(E|0))break;t[L+(e<<2)>>2]=t[M+(e-B<<2)>>2];e=e+1|0}if(i<<24>>24!=0?+Q(+(o-y))<.01:0)i=+Q(+(u-y))<.01;else i=0;i=i&1}DO(Z,N);g_(N,L,D,z,f);r=r+1|0}}}while(0);return r|0}function g_(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;var n=0;n=0;while(1){if((n|0)>=(i|0))break;t[a+(n<<2)>>2]=t[e+(t[A+((t[r+(n<<2)>>2]|0)+-1<<2)>>2]<<2)>>2];n=n+1|0}return}function m_(e,A,r,i,a,n){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;n=+n;var f=0.0,l=0,c=0,o=0,u=0;f=-1.0e9;c=0;l=-1;u=0;while(1){if((u|0)>=(A|0))break;if((u|0)<(c|0))o=c;else{l=l+1|0;if((l|0)==(a|0))c=A;else c=t[i+(l<<2)>>2]|0;if((u|0)>0)f=+s[e+(t[r+(u+-1<<2)>>2]<<2)>>2]+n;else f=-1.0e9;UT(e,r,u,c+-1|0);o=c}c=e+(t[r+(u<<2)>>2]<<2)|0;if(+s[c>>2]>2]=f;c=o;u=u+1|0}return}function p_(e){e=e|0;G2(t[t[e>>2]>>2]|0);G2(t[e>>2]|0);G2(t[e+8>>2]|0);G2(t[e+28>>2]|0);G2(t[e+32>>2]|0);G2(t[e+36>>2]|0);G2(t[e+40>>2]|0);G2(t[e+12>>2]|0);G2(t[e+16>>2]|0);G2(t[e+20>>2]|0);G2(t[e+24>>2]|0);G2(e);return}function E_(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;var n=0,f=0,l=0,s=0,c=0,o=0;c=$F(60)|0;t[c>>2]=0;o=c+4|0;t[o>>2]=A;t[c+48>>2]=r;t[c+52>>2]=i;t[c+56>>2]=a;t[c>>2]=d_(e,A)|0;l=A<<2;s=$F(l)|0;t[c+8>>2]=s;f=0;A=0;e=-1;while(1){if((f|0)>=(t[o>>2]|0))break;n=e+1|0;if((f|0)>=(A|0)){A=t[((n|0)==(a|0)?o:i+(n<<2)|0)>>2]|0;e=n}t[s+(t[r+(f<<2)>>2]<<2)>>2]=e;f=f+1|0}t[c+28>>2]=$F(l)|0;t[c+32>>2]=$F(l)|0;t[c+36>>2]=$F(l)|0;t[c+40>>2]=$F(l)|0;t[c+12>>2]=$F(l)|0;t[c+16>>2]=$F(l)|0;t[c+20>>2]=$F(l)|0;t[c+24>>2]=$F(l)|0;return c|0}function B_(){jO(187676,24);t[46922]=0;return}function y_(){return TO(187676)|0}function C_(e,A){e=e|0;A=A|0;var r=0.0,i=0.0;r=+c[e>>3]-+c[A>>3];i=+c[e+8>>3]-+c[A+8>>3];return+ +D(+(i*i+r*r))}function I_(e){e=e|0;var A=0;A=t[46922]|0;t[e+16>>2]=A;t[46922]=A+1;return}function Z_(e){e=e|0;var A=0,r=0;r=e+20|0;A=(t[r>>2]|0)+-1|0;t[r>>2]=A;if(!A)OO(e,187676);return}function G_(e){e=e|0;e=e+20|0;t[e>>2]=(t[e>>2]|0)+1;return}function L_(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=+a;var n=0.0,f=0,l=0,o=0,u=0.0,b=0,w=0.0,k=0,d=0.0,v=0,g=0,m=0,p=0,E=0,B=0,y=0;B=h;h=h+16|0;b=B;t[b>>2]=i;k=A<<2;p=$F(k)|0;o=A<<3;E=$F(o)|0;m=xT(e,A)|0;e=0;while(1){if((e|0)>=(A|0))break;l=m+(e<<2)|0;f=0;while(1){if((f|0)==(A|0))break;v=(t[l>>2]|0)+(f<<2)|0;t[v>>2]=t[v>>2]<<8;f=f+1|0}e=e+1|0}if(!r)ge(93952,93960,283,93974);v=$F(o)|0;e=0;while(1){if((e|0)>=(A|0))break;c[v+(e<<3)>>3]=+c[r+(e<<3)>>3];e=e+1|0}Q_(v,A);n=0.0;u=0.0;o=1;while(1){if((o|0)>=(A|0))break;f=m+(o<<2)|0;l=r+(o<<3)|0;e=0;while(1){if((e|0)==(o|0))break;y=t[(t[f>>2]|0)+(e<<2)>>2]|0;d=+c[l>>3]-+c[r+(e<<3)>>3];n=d*d*(1.0/+(P(y,y)|0))+n;u=+Q(+d)*(1.0/+(y|0))+u;e=e+1|0}o=o+1|0}d=u/n;e=0;while(1){if((e|0)>=(A|0))break;y=r+(e<<3)|0;c[y>>3]=+c[y>>3]*d;e=e+1|0}D_(A,b,a,r,m);l=$F(P(k,A)|0)|0;f=0;while(1){if((f|0)>=(A|0)){l=1;break}o=l+((P(f,A)|0)<<2)|0;t[p+(f<<2)>>2]=o;b=m+(f<<2)|0;n=0.0;e=0;while(1){if((e|0)==(A|0))break;if((e|0)!=(f|0)){w=+(t[(t[b>>2]|0)+(e<<2)>>2]|0);w=-1.0/(w*w);s[o+(e<<2)>>2]=w;n=n-w}e=e+1|0}s[o+(f<<2)>>2]=n;f=f+1|0}while(1){if((l|0)>=(A|0)){f=0;break}n=+c[r+(l<<3)>>3];f=m+(l<<2)|0;e=0;while(1){if((e|0)==(l|0))break;y=(t[f>>2]|0)+(e<<2)|0;u=+(t[y>>2]|0);w=n-+c[r+(e<<3)>>3];w=u*u-w*w;k=~~+D(+w);k=w>0.0?k:0;t[(t[m+(e<<2)>>2]|0)+(l<<2)>>2]=k;t[y>>2]=k;e=e+1|0}l=l+1|0}while(1){if((f|0)>=(A|0)){k=0;e=0;break}u=+c[i+(f<<3)>>3];o=E+(f<<3)|0;c[o>>3]=0.0;b=m+(f<<2)|0;l=p+(f<<2)|0;e=0;n=0.0;while(1){if((e|0)==(A|0))break;if((e|0)!=(f|0)){w=+s[(t[l>>2]|0)+(e<<2)>>2]*+(t[(t[b>>2]|0)+(e<<2)>>2]|0);n=n+(u>=+c[i+(e<<3)>>3]?-w:w);c[o>>3]=n}e=e+1|0}f=f+1|0}while(1){if(!(e<<24>>24==0&(k|0)<200)){g=42;break}if((uU(p,i,E,A,a,A,1)|0)<0){e=1;break}else{e=1;b=0}while(1){if((b|0)>=(A|0))break;w=+c[i+(b<<3)>>3];l=m+(b<<2)|0;o=p+(b<<2)|0;n=0.0;f=0;while(1){if((f|0)==(A|0))break;do{if((f|0)!=(b|0)){u=+s[(t[o>>2]|0)+(f<<2)>>2]*+(t[(t[l>>2]|0)+(f<<2)>>2]|0);if(!(w>=+c[i+(f<<3)>>3])){n=n+u;break}else{n=n+-u;break}}}while(0);f=f+1|0}f=E+(b<<3)|0;w=+c[f>>3];if(n!=w?+Q(+(1.0-n/w))>1.0e-05:0){c[f>>3]=n;e=0}b=b+1|0}k=k+1|0}e:do{if((g|0)==42){n=1.0/d;e=0;while(1){if((e|0)>=(A|0)){e=0;break e}y=r+(e<<3)|0;c[y>>3]=+c[y>>3]*n;y=i+(e<<3)|0;c[y>>3]=+c[y>>3]*n;e=e+1|0}}}while(0);G2(t[m>>2]|0);G2(m);G2(t[p>>2]|0);G2(p);G2(v);G2(E);h=B;return e|0}function Q_(e,A){e=e|0;A=A|0;var r=0,i=0.0,a=0.0,t=0;r=0;i=0.0;while(1){if((r|0)>=(A|0))break;a=+c[e+(r<<3)>>3]+i;r=r+1|0;i=a}i=i/+(A|0);r=0;while(1){if((r|0)>=(A|0))break;t=e+(r<<3)|0;c[t>>3]=+c[t>>3]-i;r=r+1|0}t=A+-1|0;hO(e,0,t,1.0/+bO(e,0,t),e);return}function D_(e,A,r,i,a){e=e|0;A=A|0;r=+r;i=i|0;a=a|0;var n=0,f=0,l=0,s=0,o=0,u=0;s=z_(a,e)|0;o=$F(8)|0;if(!i){a=0;l=0}else{n=$F(e<<3)|0;a=0;while(1){if((a|0)>=(e|0))break;c[n+(a<<3)>>3]=+c[i+(a<<3)>>3];a=a+1|0}Q_(n,e);a=n;l=n}W_(s,e,A,o,a,r);i=0;while(1){if((i|0)==1)break;n=o+(i<<3)|0;f=A+(i<<2)|0;a=0;while(1){if((a|0)>=(e|0))break;r=+D(+ +Q(+ +c[n>>3]));u=(t[f>>2]|0)+(a<<3)|0;c[u>>3]=+c[u>>3]*r;a=a+1|0}i=i+1|0}G2(t[s>>2]|0);G2(s);G2(o);G2(l);return}function z_(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0.0,f=0,l=0,c=0,o=0,u=0,b=0,w=0.0;b=h;h=h+16|0;a=b;u=A<<2;i=$F(P(u,A)|0)|0;u=$F(u)|0;r=0;while(1){if((r|0)>=(A|0))break;t[u+(r<<2)>>2]=i+((P(r,A)|0)<<2);r=r+1|0}o=F_(e,A,a)|0;n=+s[a>>2];i=0;c=1;while(1){if((i|0)>=(A|0))break;a=e+(i<<2)|0;f=o+(i<<2)|0;l=u+(i<<2)|0;r=0;while(1){if((r|0)==(c|0))break;w=+(t[(t[a>>2]|0)+(r<<2)>>2]|0);w=+s[o+(r<<2)>>2]+ +s[f>>2]-w*w-n;s[(t[l>>2]|0)+(r<<2)>>2]=w;s[(t[u+(r<<2)>>2]|0)+(i<<2)>>2]=w;r=r+1|0}i=i+1|0;c=c+1|0}G2(o);h=b;return u|0}function W_(e,A,r,i,a,n){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;n=+n;var f=0,l=0,s=0,o=0,u=0.0,b=0.0,h=0,w=0,k=0,d=0,v=0;d=A<<3;k=$F(d)|0;d=$F(d)|0;b=1.0-n;h=(A|0)<1?A:1;w=A+-1|0;s=(a|0)==0;l=0;e:while(1){if((l|0)>=(h|0))break;o=t[r+(l<<2)>>2]|0;do{f=0;while(1){if((f|0)==(A|0))break;c[o+(f<<3)>>3]=+((t8()|0)%100|0|0);f=f+1|0}if(s)f=0;else{uO(o,0,w,-+oO(a,0,w,o),a);f=0}while(1){if((f|0)==(l|0))break;v=r+(f<<2)|0;u=-+oO(t[v>>2]|0,0,w,o);uO(o,0,w,u,t[v>>2]|0);f=f+1|0}n=+bO(o,0,w)}while(n<1.0e-10);hO(o,0,w,1.0/n,o);do{wO(d,0,w,o);Y_(e,A,A,o,k,a);wO(o,0,w,k);f=0;while(1){if((f|0)==(l|0))break;v=r+(f<<2)|0;u=-+oO(t[v>>2]|0,0,w,o);uO(o,0,w,u,t[v>>2]|0);f=f+1|0}n=+bO(o,0,w);if(n<1.0e-10)break e;hO(o,0,w,1.0/n,o);u=+oO(o,0,w,d)}while(+Q(+u)>3]=u*n;l=l+1|0}while(1){if((l|0)>=(h|0))break;s=t[r+(l<<2)>>2]|0;f=0;while(1){if((f|0)>=(A|0)){f=0;break}c[s+(f<<3)>>3]=+((t8()|0)%100|0|0);f=f+1|0}while(1){if((f|0)>=(l|0))break;v=r+(f<<2)|0;b=-+oO(t[v>>2]|0,0,w,s);uO(s,0,w,b,t[v>>2]|0);f=f+1|0}hO(s,0,w,1.0/+bO(s,0,w),s);c[i+(l<<3)>>3]=0.0;l=l+1|0}o=h+-1|0;l=0;while(1){if((l|0)>=(o|0))break;e=i+(l<<3)|0;a=l+1|0;n=+c[e>>3];f=l;s=a;while(1){if((s|0)>=(h|0))break;b=+c[i+(s<<3)>>3];v=n>2]|0);v=r+(f<<2)|0;wO(t[A>>2]|0,0,w,t[v>>2]|0);wO(t[v>>2]|0,0,w,k);c[i+(f<<3)>>3]=+c[e>>3];c[e>>3]=n;l=a}G2(k);G2(d);return}function Y_(e,A,r,i,a,n){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;n=n|0;var f=0,l=0.0,o=0,u=0;f=0;while(1){if((f|0)>=(A|0))break;u=e+(f<<2)|0;l=0.0;o=0;while(1){if((o|0)>=(r|0))break;l=+c[i+(o<<3)>>3]*+s[(t[u>>2]|0)+(o<<2)>>2]+l;o=o+1|0}c[a+(f<<3)>>3]=l;f=f+1|0}f=A+-1|0;if(n|0)uO(a,0,f,-+oO(a,0,f,n),n);return}function F_(e,A,r){e=e|0;A=A|0;r=r|0;var i=0.0,a=0.0,n=0,f=0,l=0,c=0.0,o=0,u=0.0;l=$F(A<<2)|0;c=1.0/+(A|0);i=0.0;f=0;while(1){if((f|0)>=(A|0))break;o=e+(f<<2)|0;a=0.0;n=0;while(1){if((n|0)==(A|0))break;u=+(t[(t[o>>2]|0)+(n<<2)>>2]|0);u=u*u;a=u+a;n=n+1|0;i=u+i}s[l+(f<<2)>>2]=c*a;f=f+1|0}s[r>>2]=i/+(P(A,A)|0);return l|0}function M_(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0,t=0.0,n=0,f=0,l=0,s=0,o=0,u=0,b=0,h=0,w=0,k=0,d=0,v=0,g=0.0,m=0;k=P(i,i)|0;d=$F(k<<3)|0;v=$F(i<<3)|0;a=0;while(1){if((a|0)>=(i|0))break;c[v+(a<<3)>>3]=+c[r+(a<<3)>>3];a=a+1|0}a=0;while(1){if((a|0)>=(k|0))break;c[d+(a<<3)>>3]=+c[e+(a<<3)>>3];a=a+1|0}w=i+-1|0;n=0;h=0;e:while(1){if((h|0)<(w|0)){t=0.0;a=h}else{o=21;break}while(1){if((a|0)>=(i|0))break;g=+Q(+ +c[e+((P(a,i)|0)+h<<3)>>3]);u=g=(i|0))break;o=e+(a+f<<3)|0;g=+c[o>>3];u=e+(a+b<<3)|0;c[o>>3]=+c[u>>3];c[u>>3]=g;a=a+1|0}u=r+(n<<3)|0;g=+c[u>>3];l=r+(h<<3)|0;c[u>>3]=+c[l>>3];c[l>>3]=g;u=h+1|0;s=e+(b+h<<3)|0;a=u;while(1){if((a|0)>=(i|0)){h=u;continue e}o=P(a,i)|0;t=+c[e+(o+h<<3)>>3]/+c[s>>3];f=r+(a<<3)|0;c[f>>3]=+c[f>>3]-+c[l>>3]*t;f=0;while(1){if((f|0)>=(i|0))break;m=e+(f+o<<3)|0;c[m>>3]=+c[m>>3]-+c[e+(f+b<<3)>>3]*t;f=f+1|0}a=a+1|0}}if((o|0)==21){t=+c[e+(k+-1<<3)>>3];if(+Q(+t)<1.0e-10)o=33;else{c[A+(w<<3)>>3]=+c[r+(w<<3)>>3]/t;a=0;while(1){if((a|0)>=(w|0)){a=0;break}n=i-a|0;f=n+-2|0;t=+c[r+(f<<3)>>3];l=A+(f<<3)|0;c[l>>3]=t;s=P(f,i)|0;n=n+-1|0;while(1){if((n|0)>=(i|0))break;g=t-+c[A+(n<<3)>>3]*+c[e+(n+s<<3)>>3];c[l>>3]=g;n=n+1|0;t=g}c[l>>3]=t/+c[e+(s+f<<3)>>3];a=a+1|0}while(1){if((a|0)>=(i|0)){a=0;break}c[r+(a<<3)>>3]=+c[v+(a<<3)>>3];a=a+1|0}while(1){if((a|0)>=(k|0))break;c[e+(a<<3)>>3]=+c[d+(a<<3)>>3];a=a+1|0}G2(d);G2(v)}}if((o|0)==33){s6(93989)|0;G2(d);G2(v)}return}function V_(e,A){e=e|0;A=A|0;var r=0.0,a=0.0,n=0.0,f=0,l=0,s=0,o=0,u=0,b=0,w=0,k=0,d=0,v=0,g=0,m=0,p=0;v=h;h=h+16|0;d=v;$U();B_();mT();t[46918]=C5[A&3]()|0;ET();k=d+8|0;w=C5[A&3]()|0;r=0.0;a=0.0;e:while(1){u=(w|0)==0;b=w+8|0;while(1){if(!(kT()|0)){dT(d);r=+c[d>>3];a=+c[k>>3]}if(!u){if(kT()|0)break;n=+c[b>>3];if(n>3]>2]|0;I_(l);iT(t[g+8>>2]|0,i[g+16>>0]|0,l);iT(t[p+8>>2]|0,i[p+16>>0]|0,l);LT(g);wT(p);LT(p);p=+c[o+8>>3]>+c[m+8>>3];g=p&1;s=p?m:o;m=eT(s,p?o:m)|0;o=BT(m,g)|0;IT(e,o);iT(m,(g^1)&255,l);Z_(l);l=yT(e,o)|0;if(l|0){wT(e);bT(e,l,+C_(l,s))}e=yT(o,f)|0;if(!e)continue;bT(o,e,+C_(e,s))}e=ZT(w)|0;s=QT(e)|0;f=eT(WT(e)|0,w)|0;o=BT(f,0)|0;IT(e,o);l=yT(e,o)|0;if(l|0){wT(e);bT(e,l,+C_(l,w))}f=BT(f,1)|0;IT(o,f);e=yT(f,s)|0;if(e|0)bT(f,e,+C_(e,w));w=C5[A&3]()|0}e=t[46860]|0;while(1){e=QT(e)|0;if((e|0)==(t[46861]|0))break;AT(t[e+8>>2]|0)}h=v;return}function N_(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0,f=0;n=h;h=h+16|0;a=n+8|0;i=n;do{if((gk(e)|0)!=1){R_(e);if(!A)A=x_(e)|0;r=J_(e,A)|0;if(0){f=t[15712]|0;t[i>>2]=Mk(A)|0;t[i+4>>2]=r;a3(f,94005,i)|0}if((r|0)<0){nw(1,94039,a)|0;break}else{H_(e);P_(e,A);X_(e,A);S_(e,r);break}}else{f=t[(t[(sd(e)|0)+16>>2]|0)+132>>2]|0;t[f>>2]=0;t[f+4>>2]=0;t[f+8>>2]=0;t[f+12>>2]=0}}while(0);h=n;return A|0}function R_(e){e=e|0;var A=0,r=0,i=0,a=0,n=0;r=gk(e)|0;r=P(r,r)|0;A=sd(e)|0;while(1){if(!A)break;i=A+16|0;a=t[(t[i>>2]|0)+112>>2]|0;n=a+24|0;t[n>>2]=r;t[n+4>>2]=0;c[a+48>>3]=10.0;a=($_(e,A)|0)==0;i=t[(t[i>>2]|0)+112>>2]|0;t[i>>2]=a?r:0;t[i+4>>2]=a?0:0;A=cd(e,A)|0}return}function x_(e){e=e|0;var A=0,r=0,i=0,a=0,n=0,f=0;i=(gk(e)|0)<3;A=sd(e)|0;e:do{if(!i){while(1){if(!A)break;i=t[(t[A+16>>2]|0)+112>>2]|0;if((t[i>>2]|0)==0&(t[i+4>>2]|0)==0)K_(e,A,0);A=cd(e,A)|0}r=0;A=0;i=sd(e)|0;while(1){if(!i)break e;f=t[(t[i+16>>2]|0)+112>>2]|0;n=t[f>>2]|0;f=t[f+4>>2]|0;a=((r|0)<0)<<31>>31;a=f>>>0>a>>>0|(f|0)==(a|0)&n>>>0>r>>>0;r=a?n:r;A=a?i:A;i=cd(e,i)|0}}}while(0);return A|0}function J_(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0,f=0,l=0;r=t[(t[A+16>>2]|0)+112>>2]|0;a=r+24|0;i=t[a>>2]|0;t[a>>2]=0;t[a+4>>2]=0;t[r+32>>2]=0;O_(e,A);r=sd(e)|0;i=B6(0,i|0,32)|0;a=G;A=0;while(1){if(!r)break;f=(t[(t[r+16>>2]|0)+112>>2]|0)+24|0;n=t[f>>2]|0;f=t[f+4>>2]|0;if((n|0)==(i|0)&(f|0)==(a|0)){A=-1;break}l=((A|0)<0)<<31>>31;A=f>>>0>l>>>0|(f|0)==(l|0)&n>>>0>A>>>0?n:A;r=cd(e,r)|0}return A|0}function H_(e){e=e|0;var A=0,r=0,i=0,a=0;r=sd(e)|0;while(1){if(!r)break;A=t[(t[r+16>>2]|0)+112>>2]|0;i=A+16|0;e:do{if((t[i>>2]|0)==0&(t[i+4>>2]|0)==0)while(1){i=A+8|0;a=i;a=d6(t[a>>2]|0,t[a+4>>2]|0,1,0)|0;t[i>>2]=a;t[i+4>>2]=G;A=t[A+32>>2]|0;if(!A)break e;A=t[(t[A+16>>2]|0)+112>>2]|0}}while(0);r=cd(e,r)|0}return}function P_(e,A){e=e|0;A=A|0;c[(t[(t[A+16>>2]|0)+112>>2]|0)+40>>3]=6.283185307179586;T_(e,A);return}function X_(e,A){e=e|0;A=A|0;c[(t[(t[A+16>>2]|0)+112>>2]|0)+48>>3]=0.0;U_(e,A);return}function S_(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0,f=0,l=0.0,s=0.0;f=h;h=h+16|0;a=f;n=j_(e,A)|0;if(0){i=t[15712]|0;Z3(94095,i)|0;r=0;while(1){if((r|0)>(A|0))break;c[a>>3]=+c[n+(r<<3)>>3];a3(i,94114,a)|0;r=r+1|0}Z3(153599,i)|0}r=sd(e)|0;while(1){if(!r)break;a=t[r+16>>2]|0;i=t[a+112>>2]|0;l=+c[n+(t[i+24>>2]<<3)>>3];i=i+48|0;s=+W(+ +c[i>>3])*l;a=t[a+132>>2]|0;c[a>>3]=s;c[a+8>>3]=+Y(+ +c[i>>3])*l;r=cd(e,r)|0}G2(n);h=f;return}function j_(e,A){e=e|0;A=A|0;var r=0.0,a=0.0,n=0,f=0.0,l=0,s=0,o=0,u=0;u=h;h=h+16|0;s=u;o=KF((A<<3)+8|0)|0;e=dx(e,zw(t[e+60>>2]|0,0,101288,0)|0,0)|0;e:do{if(!e){a=1.0;r=0.0;e=1}else{f=0.0;r=0.0;n=1;A:while(1){if((n|0)>(A|0)){a=f;e=n;break e}a=+e8(e,s);if(!(a>0.0)){a=f;e=n;break e}f=a>.02?a:.02;r=f+r;l=n+1|0;c[o+(n<<3)>>3]=r;e=t[s>>2]|0;while(1){n=i[e>>0]|0;if(!(n<<24>>24)){n=l;continue A}if(!(n<<24>>24==58|(I1(n<<24>>24)|0)!=0)){n=l;continue A}e=e+1|0}}}}while(0);while(1){if((e|0)>(A|0))break;f=r+a;c[o+(e<<3)>>3]=f;e=e+1|0;r=f}h=u;return o|0}function U_(e,A){e=e|0;A=A|0;var r=0,i=0.0,a=0,n=0,f=0,l=0.0;r=t[(t[A+16>>2]|0)+112>>2]|0;if(!(t[r+32>>2]|0))i=0.0;else i=+c[r+48>>3]-+c[r+40>>3]*.5;n=ek(e,A)|0;while(1){if(!n)break;r=t[n>>2]&3;a=t[((r|0)==3?n:n+48|0)+40>>2]|0;if((a|0)==(A|0))a=t[((r|0)==2?n:n+-48|0)+40>>2]|0;r=t[(t[a+16>>2]|0)+112>>2]|0;if((t[r+32>>2]|0)==(A|0)?(f=r+48|0,!(+c[f>>3]!=10.0)):0){l=+c[r+40>>3];c[f>>3]=l*.5+i;i=l+i;r=r+16|0;if(!((t[r>>2]|0)==0&(t[r+4>>2]|0)==0))U_(e,a)}n=Ak(e,n,A)|0}return}function T_(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0.0,f=0,l=0;i=t[(t[A+16>>2]|0)+112>>2]|0;a=i+8|0;n=+c[i+40>>3]/(+((t[a>>2]|0)>>>0)+4294967296.0*+((t[a+4>>2]|0)>>>0));a=ek(e,A)|0;while(1){if(!a)break;i=t[a>>2]&3;r=t[((i|0)==3?a:a+48|0)+40>>2]|0;if((r|0)==(A|0))r=t[((i|0)==2?a:a+-48|0)+40>>2]|0;i=t[(t[r+16>>2]|0)+112>>2]|0;if(((t[i+32>>2]|0)==(A|0)?(f=i+40|0,!(+c[f>>3]!=0.0)):0)?(l=i+8|0,c[f>>3]=n*(+((t[l>>2]|0)>>>0)+4294967296.0*+((t[l+4>>2]|0)>>>0)),i=i+16|0,!((t[i>>2]|0)==0&(t[i+4>>2]|0)==0)):0)T_(e,r);a=Ak(e,a,A)|0}return}function O_(e,A){e=e|0;A=A|0;var r=0,a=0,n=0,f=0,l=0,s=0,c=0,o=0,u=0,b=0,w=0,k=0,d=0;w=h;h=h+16|0;u=w;b=zw(e,2,101541,0)|0;t[u+4>>2]=0;t[u>>2]=0;__(u,A);s=(b|0)==0;e:while(1){c=q_(u)|0;if(!c)break;o=c+16|0;f=t[(t[(t[o>>2]|0)+112>>2]|0)+24>>2]|0;n=ek(e,c)|0;f=d6(0,f|0,0,1)|0;f=B6(f|0,G|0,32)|0;l=G;while(1){if(!n)continue e;if(!((!s?(i[(Pw(n,b)|0)>>0]|0)==48:0)?!(e1(Pw(n,b)|0,138394)|0):0)){A=t[n>>2]&3;r=t[((A|0)==3?n:n+48|0)+40>>2]|0;if((r|0)==(c|0))r=t[((A|0)==2?n:n+-48|0)+40>>2]|0;A=t[(t[r+16>>2]|0)+112>>2]|0;a=A+24|0;k=a;d=t[k+4>>2]|0;if(l>>>0>>0|((l|0)==(d|0)?f>>>0<(t[k>>2]|0)>>>0:0)){d=a;t[d>>2]=f;t[d+4>>2]=l;t[A+32>>2]=c;d=(t[(t[o>>2]|0)+112>>2]|0)+16|0;k=d;k=d6(t[k>>2]|0,t[k+4>>2]|0,1,0)|0;t[d>>2]=k;t[d+4>>2]=G;__(u,r)}}n=Ak(e,n,c)|0}}h=w;return}function __(e,A){e=e|0;A=A|0;var r=0,i=0;r=KF(8)|0;t[r>>2]=A;A=e+4|0;i=t[A>>2]|0;t[((i|0)==0?e:i+4|0)>>2]=r;t[A>>2]=r;return}function q_(e){e=e|0;var A=0,r=0;r=t[e>>2]|0;if(r){A=t[r>>2]|0;t[e>>2]=t[r+4>>2];G2(r);if(!(t[e>>2]|0))t[e+4>>2]=0}else A=0;return A|0}function K_(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0,n=0,f=0,l=0,s=0,c=0;f=t[t[(t[A+16>>2]|0)+112>>2]>>2]|0;n=ek(e,A)|0;f=d6(0,f|0,0,1)|0;f=B6(f|0,G|0,32)|0;l=G;while(1){if(!n)break;a=t[n>>2]&3;i=t[((a|0)==3?n:n+48|0)+40>>2]|0;if((i|0)==(A|0))i=t[((a|0)==2?n:n+-48|0)+40>>2]|0;if((i|0)!=(r|0)?(s=t[(t[i+16>>2]|0)+112>>2]|0,a=s,c=t[a+4>>2]|0,l>>>0>>0|((l|0)==(c|0)?f>>>0<(t[a>>2]|0)>>>0:0)):0){c=s;t[c>>2]=f;t[c+4>>2]=l;K_(e,i,A)}n=Ak(e,n,A)|0}return}function $_(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0;a=0;n=ek(e,A)|0;while(1){if(!n){r=1;break}i=t[n>>2]&3;r=t[((i|0)==3?n:n+48|0)+40>>2]|0;if((r|0)==(A|0))r=t[((i|0)==2?n:n+-48|0)+40>>2]|0;if((r|0)!=(A|0)){if(a)if((a|0)==(r|0))r=a;else{r=0;break}}else r=a;a=r;n=Ak(e,n,A)|0}return r|0}function eq(e){e=e|0;var A=0,r=0,i=0,a=0.0,n=0;A=h;h=h+32|0;i=A;r=zw(e,1,94122,0)|0;n=zw(e,0,94122,0)|0;e=Aq(e,n,r,zw(e,0,94127,0)|0)|0;r=e+16|0;a=+D(+(+c[e>>3]+.1));uq(i,0.0,0.0,a,a);t[r>>2]=t[i>>2];t[r+4>>2]=t[i+4>>2];t[r+8>>2]=t[i+8>>2];t[r+12>>2]=t[i+12>>2];t[r+16>>2]=t[i+16>>2];t[r+20>>2]=t[i+20>>2];t[r+24>>2]=t[i+24>>2];t[r+28>>2]=t[i+28>>2];rq(e);iq(e);aq(e);h=A;return}function Aq(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0.0,n=0,f=0,l=0,s=0,o=0,u=0,b=0,h=0;h=KF(72)|0;t[h+60>>2]=0;t[h+56>>2]=e;s=e+16|0;a=0.0;o=0;f=1;l=0;u=0;while(1){n=t[s>>2]|0;if((f|0)>(t[n+180>>2]|0))break;n=Aq(t[(t[n+184>>2]|0)+(f<<2)>>2]|0,A,r,i)|0;a=+c[n>>3]+a;if(l|0)t[l+52>>2]=n;o=o+1|0;f=f+1|0;l=n;u=(u|0)==0?n:u}b=sd(e)|0;n=u;while(1){if(!b)break;f=b+16|0;if(!(t[t[(t[f>>2]|0)+112>>2]>>2]|0)){s=fq(b,r)|0;a=+c[s>>3]+a;if(l|0)t[l+52>>2]=s;t[t[(t[f>>2]|0)+112>>2]>>2]=e;f=o+1|0;l=s;n=(n|0)==0?s:n}else f=o;b=cd(e,b)|0;o=f}t[h+64>>2]=o;if(!o)a=+sq(e,A);else{c[h+8>>3]=a;a=+lq(h,i)}c[h>>3]=a;t[h+48>>2]=n;return h|0}function rq(e){e=e|0;var A=0,r=0,i=0,a=0,n=0.0,f=0,l=0,s=0,o=0,u=0,b=0,w=0,k=0.0,d=0.0,v=0.0,g=0.0,m=0.0;w=h;h=h+176|0;a=w+144|0;u=w+64|0;s=w+32|0;f=w;b=t[e+64>>2]|0;e:do{if(b|0){o=KF(b<<2)|0;A=e+48|0;i=0;r=A;while(1){r=t[r>>2]|0;if((i|0)>=(b|0))break;t[o+(i<<2)>>2]=r;i=i+1|0;r=r+52|0}_4(o,b,4,80);l=KF(b<<3)|0;r=0;while(1){if((r|0)>=(b|0))break;c[l+(r<<3)>>3]=+c[t[o+(r<<2)>>2]>>3];r=r+1|0}n=+c[e+8>>3];if(+c[e>>3]==n){f=e+16|0;t[a>>2]=t[f>>2];t[a+4>>2]=t[f+4>>2];t[a+8>>2]=t[f+8>>2];t[a+12>>2]=t[f+12>>2];t[a+16>>2]=t[f+16>>2];t[a+20>>2]=t[f+20>>2];t[a+24>>2]=t[f+24>>2];t[a+28>>2]=t[f+28>>2];f=cq(b,l,a)|0}else{k=+c[e+40>>3];d=+c[e+32>>3];c[f>>3]=+c[e+16>>3];c[f+8>>3]=+c[e+24>>3];v=k-d;n=(d+k-+D(+(n*4.0+v*v)))*.5;c[f+16>>3]=d-n;c[f+24>>3]=k-n;t[a>>2]=t[f>>2];t[a+4>>2]=t[f+4>>2];t[a+8>>2]=t[f+8>>2];t[a+12>>2]=t[f+12>>2];t[a+16>>2]=t[f+16>>2];t[a+20>>2]=t[f+20>>2];t[a+24>>2]=t[f+24>>2];t[a+28>>2]=t[f+28>>2];f=cq(b,l,a)|0}if(0){a=t[15712]|0;k=+c[e+24>>3];d=+c[e+32>>3];v=+c[e+40>>3];c[s>>3]=+c[e+16>>3];c[s+8>>3]=k;c[s+16>>3]=d;c[s+24>>3]=v;a3(a,94174,s)|0}i=t[15712]|0;r=0;while(1){if((r|0)>=(b|0))break;s=(t[o+(r<<2)>>2]|0)+16|0;a=f+(r<<5)|0;t[s>>2]=t[a>>2];t[s+4>>2]=t[a+4>>2];t[s+8>>2]=t[a+8>>2];t[s+12>>2]=t[a+12>>2];t[s+16>>2]=t[a+16>>2];t[s+20>>2]=t[a+20>>2];t[s+24>>2]=t[a+24>>2];t[s+28>>2]=t[a+28>>2];if(0){n=+c[a>>3];d=+c[f+(r<<5)+16>>3];m=d*.5;k=+c[f+(r<<5)+8>>3];v=+c[f+(r<<5)+24>>3];g=v*.5;c[u>>3]=+c[l+(r<<3)>>3];c[u+8>>3]=n-m;c[u+16>>3]=k-g;c[u+24>>3]=m+n;c[u+32>>3]=g+k;c[u+40>>3]=v*d;c[u+48>>3]=n;c[u+56>>3]=k;c[u+64>>3]=d;c[u+72>>3]=v;a3(i,94191,u)|0}r=r+1|0}G2(o);G2(l);G2(f);r=0;while(1){A=t[A>>2]|0;if((r|0)>=(b|0))break e;if(!(t[A+60>>2]|0))rq(A);A=A+52|0;r=r+1|0}}}while(0);h=w;return}function iq(e){e=e|0;var A=0,r=0,i=0,a=0,n=0.0,f=0.0,l=0,s=0.0,o=0.0;a=h;h=h+48|0;i=a;if(t[e+60>>2]|0){s=+c[e+24>>3];f=+c[e+32>>3];n=+c[e+40>>3];A=t[e+56>>2]|0;r=A+16|0;l=t[r>>2]|0;c[l+16>>3]=+c[e+16>>3];c[l+24>>3]=s;e=t[r>>2]|0;c[e+32>>3]=f*.013888888888888888;c[e+40>>3]=n*.013888888888888888;WJ(A,t[(t[(Bd(A)|0)+16>>2]|0)+116>>2]&1);tq(A);if(0){l=t[15712]|0;e=Mk(A)|0;r=t[r>>2]|0;o=+c[r+16>>3];n=+c[r+24>>3];f=+c[r+80>>3];s=+c[r+96>>3]+ +c[r+88>>3];t[i>>2]=e;c[i+8>>3]=o;c[i+16>>3]=n;c[i+24>>3]=f;c[i+32>>3]=s;a3(l,94133,i)|0}}else{A=e+48|0;while(1){A=t[A>>2]|0;if(!A)break;iq(A);A=A+52|0}f=+c[e+32>>3];o=+c[e+40>>3];n=+c[e+16>>3]-f*.5;s=+c[e+24>>3]-o*.5;l=t[(t[e+56>>2]|0)+16>>2]|0;c[l+16>>3]=n;c[l+24>>3]=s;c[l+32>>3]=n+f;c[l+40>>3]=s+o}h=a;return}function aq(e){e=e|0;var A=0,r=0,i=0;i=t[e+64>>2]|0;A=e+48|0;r=0;while(1){A=t[A>>2]|0;if((r|0)>=(i|0))break;aq(A);A=A+52|0;r=r+1|0}G2(e);return}function tq(e){e=e|0;var A=0,r=0,a=0,n=0;n=h;h=h+48|0;a=n;A=n+8|0;r=t[47150]|0;if(r|0?(i[(Pw(e,r)|0)>>0]|0)==0:0){c[a>>3]=+c[(t[e+16>>2]|0)+80>>3]*.7;T4(A,94168,a)|0;Mw(e,t[47150]|0,A)|0}Fx(e);h=n;return}function nq(e,A){e=e|0;A=A|0;var r=0.0;r=+c[t[e>>2]>>3]-+c[t[A>>2]>>3];return(r<0.0?1:(r>0.0)<<31>>31)|0}function fq(e,A){e=e|0;A=A|0;var r=0;r=KF(72)|0;c[r>>3]=+sq(e,A);t[r+60>>2]=1;t[r+56>>2]=e;return r|0}function lq(e,A){e=e|0;A=A|0;var r=0.0;r=+wx(t[e+56>>2]|0,A,0.0,0.0);if(r==0.0)r=+c[e+8>>3];else{r=+D(+ +c[e+8>>3])+r*2.0;r=r*r}return+r}function sq(e,A){e=e|0;A=A|0;var r=0.0;r=+wx(e,A,1.0,0.0);return+(r==0.0?1.0e3:r*1.0e3)}function cq(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0.0,n=0,f=0,l=0.0;f=h;h=h+32|0;n=f;i=0;a=0.0;while(1){if((i|0)>=(e|0))break;l=+c[A+(i<<3)>>3]+a;i=i+1|0;a=l}if(a>+c[r+24>>3]*+c[r+16>>3]+.001)i=0;else{i=KF(e<<5)|0;t[n>>2]=t[r>>2];t[n+4>>2]=t[r+4>>2];t[n+8>>2]=t[r+8>>2];t[n+12>>2]=t[r+12>>2];t[n+16>>2]=t[r+16>>2];t[n+20>>2]=t[r+20>>2];t[n+24>>2]=t[r+24>>2];t[n+28>>2]=t[r+28>>2];oq(e,A,i,0,0.0,1.0,0.0,1.0,n)}h=f;return i|0}function oq(e,A,r,i,a,n,f,l,s){e=e|0;A=A|0;r=r|0;i=i|0;a=+a;n=+n;f=+f;l=+l;s=s|0;var o=0,u=0.0,b=0.0,w=0,k=0.0,d=0.0,v=0.0,g=0.0,m=0,p=0.0,E=0,B=0,y=0,C=0,I=0,Z=0.0;C=h;h=h+112|0;y=C+72|0;m=C+40|0;w=C+32|0;o=C;E=s+16|0;k=+c[E>>3];B=s+24|0;d=+c[B>>3];p=+c[s+16+((!(k>3];do{if((e|0)>=1){if(0){I=t[15712]|0;Z=+c[s+8>>3];c[o>>3]=+c[s>>3];c[o+8>>3]=k;c[o+16>>3]=Z;c[o+24>>3]=d;a3(I,94228,o)|0;t[w>>2]=i;a3(I,94274,w)|0}if(!i){f=+c[A>>3];Z=p*p;p=f/Z;Z=Z/f;t[y>>2]=t[s>>2];t[y+4>>2]=t[s+4>>2];t[y+8>>2]=t[s+8>>2];t[y+12>>2]=t[s+12>>2];t[y+16>>2]=t[s+16>>2];t[y+20>>2]=t[s+20>>2];t[y+24>>2]=t[s+24>>2];t[y+28>>2]=t[s+28>>2];oq(e,A,r,1,f,f,f,p>Z?p:Z,y);break}if((e|0)>(i|0)?(g=+c[A+(i<<3)>>3],u=gn?n:g,g=g+f,b=g/p,b=b*b,Z=b/v,b=u/b,b=Z>b?Z:b,b<=l):0){t[y>>2]=t[s>>2];t[y+4>>2]=t[s+4>>2];t[y+8>>2]=t[s+8>>2];t[y+12>>2]=t[s+12>>2];t[y+16>>2]=t[s+16>>2];t[y+20>>2]=t[s+20>>2];t[y+24>>2]=t[s+24>>2];t[y+28>>2]=t[s+28>>2];oq(e,A,r,i+1|0,u,v,g,b,y);break}k=f/p;if(0){I=t[15712]|0;t[m>>2]=i;c[m+8>>3]=f;c[m+16>>3]=p;c[m+24>>3]=k;a3(I,94299,m)|0}u=+c[E>>3];if(p==u){b=1.0/k;w=s+8|0;u=+c[s>>3]-u*.5;o=0;while(1){if((o|0)>=(i|0))break;c[r+(o<<5)+24>>3]=k;Z=+c[A+(o<<3)>>3]*b;c[r+(o<<5)+16>>3]=Z;c[r+(o<<5)+8>>3]=(+c[B>>3]-k)*.5+ +c[w>>3];c[r+(o<<5)>>3]=Z*.5+u;u=Z+u;o=o+1|0}c[w>>3]=+c[w>>3]-k*.5;o=1}else{b=1.0/k;u=+c[B>>3]*.5+ +c[s+8>>3];o=0;while(1){if((o|0)>=(i|0))break;c[r+(o<<5)+16>>3]=k;Z=+c[A+(o<<3)>>3]*b;c[r+(o<<5)+24>>3]=Z;c[r+(o<<5)>>3]=(k-+c[E>>3])*.5+ +c[s>>3];c[r+(o<<5)+8>>3]=u-Z*.5;u=u-Z;o=o+1|0}c[s>>3]=+c[s>>3]+k*.5;o=0}I=s+16+(o<<3)|0;c[I>>3]=+c[I>>3]-k;t[y>>2]=t[s>>2];t[y+4>>2]=t[s+4>>2];t[y+8>>2]=t[s+8>>2];t[y+12>>2]=t[s+12>>2];t[y+16>>2]=t[s+16>>2];t[y+20>>2]=t[s+20>>2];t[y+24>>2]=t[s+24>>2];t[y+28>>2]=t[s+28>>2];oq(e-i|0,A+(i<<3)|0,r+(i<<5)|0,0,0.0,0.0,0.0,1.0,y)}}while(0);h=C;return}function uq(e,A,r,i,a){e=e|0;A=+A;r=+r;i=+i;a=+a;c[e>>3]=A;c[e+8>>3]=r;c[e+16>>3]=i;c[e+24>>3]=a;return}function bq(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,n=0,f=0,l=0,o=0.0,u=0.0,b=0.0,w=0.0,k=0,d=0,v=0,g=0,m=0,p=0,E=0,B=0,y=0,C=0,I=0,Z=0,G=0,L=0,Q=0,D=0,z=0,W=0;L=h;h=h+96|0;G=L+48|0;Z=L+24|0;I=L+16|0;C=L+8|0;m=L+80|0;p=L;E=e+16|0;B=A+4|0;y=m+4|0;v=sd(e)|0;r=0;i=0;n=0;f=0;while(1){if(!v)break;g=Ow(e,v)|0;k=r;d=f;while(1){if(!g)break;r=(a[(t[g+16>>2]|0)+168>>1]|0)==0;do{if((v|0)==(t[((t[g>>2]&3|0)==2?g:g+-48|0)+40>>2]|0))if(r){f=k;r=d}else{if(!i){r=KF(96)|0;t[r+84>>2]=KF(((gk(e)|0)<<5)+11520|0)|0;i=r}else r=d;CH(i,g,t[(t[E>>2]|0)+248>>2]|0);f=k}else if(!r){n=hq(g,A)|0;f=n+8|0;if(KT(t[f>>2]|0,t[n>>2]|0)|0){l=Ll(t[f>>2]|0,t[n>>2]|0)|0;if(!l){nw(0,94352,C)|0;f=1;r=d;break}else r=g;while(1){if(!r)break;Q=r+16|0;D=(t[Q>>2]|0)+144|0;DH(p,r,l,0,t[f>>2]|0,t[n>>2]|0);W=p;z=t[W+4>>2]|0;t[D>>2]=t[W>>2];t[D+4>>2]=z;WH(e,r,t[f>>2]|0,t[n>>2]|0,0);r=t[(t[Q>>2]|0)+172>>2]|0}wq(n);f=k;r=d;break}if(!k){Kj(m,e);r=oE(e,8,8)|0;nw(0,94436,I)|0;u=+(r|0);b=+s[A>>2];w=+s[B>>2];if(!(b>=u)&!(w>=u)){o=+s[m>>2];u=+s[y>>2];if(!(!(o<=b)&!(u<=w))){c[G>>3]=o;c[G+8>>3]=u;c[G+16>>3]=b;c[G+24>>3]=w;nw(3,94552,G)|0}}else{t[Z>>2]=r;c[Z+8>>3]=b;c[Z+16>>3]=w;nw(3,94502,Z)|0}f=1;r=d}else{f=k;r=d}}else{f=k;r=d}}while(0);g=qw(e,g)|0;k=f;d=r}v=cd(e,v)|0;r=k;f=d}kq(n);if(i|0){G2(t[i+84>>2]|0);G2(f)}h=L;return r|0}function hq(e,A){e=e|0;A=A|0;var r=0,a=0,n=0,f=0,l=0,s=0,c=0,o=0,u=0,b=0,w=0,k=0;w=h;h=h+16|0;o=w+4|0;u=w;r=t[e>>2]&3;a=t[((r|0)==2?e:e+-48|0)+40>>2]|0;r=t[((r|0)==3?e:e+48|0)+40>>2]|0;k=a+16|0;f=t[(t[k>>2]|0)+212>>2]|0;t[o>>2]=f;l=r+16|0;n=t[(t[l>>2]|0)+212>>2]|0;t[u>>2]=n;c=KF(12)|0;e=f;s=n;if(i[(t[k>>2]|0)+118>>0]|0){e=t[(t[(t[e+16>>2]|0)+140>>2]|0)+48>>2]|0;t[o>>2]=e;a=f;f=e}if(!(i[(t[l>>2]|0)+118>>0]|0))l=s;else{l=t[(t[(t[s+16>>2]|0)+140>>2]|0)+48>>2]|0;t[u>>2]=l;r=n;n=l}f=t[(t[(t[f+16>>2]|0)+140>>2]|0)+44>>2]|0;n=t[(t[(t[n+16>>2]|0)+140>>2]|0)+44>>2]|0;if((f|0)<=(n|0))if((n|0)>(f|0)){dq(c,n,r,f,u,A);e=t[u>>2]|0;n=e;r=u;b=11}else f=l;else{dq(c,f,a,n,o,A);e=t[o>>2]|0;a=e;n=r;r=o;b=11}while(1){if((b|0)==11){t[r>>2]=t[(t[(t[e+16>>2]|0)+140>>2]|0)+48>>2];r=n;e=t[o>>2]|0;f=t[u>>2]|0}if((e|0)==(f|0))break;vq(c,e,0,a,A);vq(c,f,r,0,A);t[o>>2]=t[(t[(t[e+16>>2]|0)+140>>2]|0)+48>>2];a=e;n=f;r=u;e=f;b=11}vq(c,f,r,a,A);h=w;return c|0}function wq(e){e=e|0;t[e>>2]=0;return}function kq(e){e=e|0;if(e|0){G2(t[e+8>>2]|0);G2(e)}return}function dq(e,A,r,i,a,n){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;n=n|0;var f=0,l=0;l=a;while(1){f=t[l>>2]|0;if((A|0)<=(i|0))break;vq(e,f,r,0,n);A=A+-1|0;l=(t[(t[f+16>>2]|0)+140>>2]|0)+48|0;r=f}t[a>>2]=r;return}function vq(e,A,r,a,n){e=e|0;A=A|0;r=r|0;a=a|0;n=n|0;var f=0,l=0;f=sd(A)|0;while(1){if(!f)break;l=t[f+16>>2]|0;if(!((f|0)==(a|0)|((f|0)==(r|0)?1:(t[l+212>>2]|0)!=(A|0)))?(i[l+118>>0]|0)==0:0)gq(e,GH(f,n,0)|0);f=cd(A,f)|0}l=A+16|0;A=1;while(1){f=t[l>>2]|0;if((A|0)>(t[f+180>>2]|0))break;f=t[(t[f+184>>2]|0)+(A<<2)>>2]|0;if(!((f|0)==(r|0)|(f|0)==(a|0)))gq(e,mq(f,n)|0);A=A+1|0}return}function gq(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0;i=e+4|0;a=t[i>>2]|0;n=e+8|0;r=t[n>>2]|0;do{if((a|0)==(t[e>>2]|0))if(!r){r=$F(400)|0;t[n>>2]=r;t[i>>2]=100;break}else{t[i>>2]=a<<1;r=AM(r,a<<3)|0;t[n>>2]=r;break}}while(0);n=t[e>>2]|0;t[e>>2]=n+1;t[r+(n<<2)>>2]=A;return}function mq(e,A){e=e|0;A=A|0;var r=0.0,a=0.0,n=0.0,f=0.0,l=0.0,o=0.0,u=0,b=0.0,h=0.0,w=0.0;u=KF(8)|0;e=t[e+16>>2]|0;r=+c[e+16>>3];o=+c[e+24>>3];a=+c[e+32>>3];l=+c[e+40>>3];t[u+4>>2]=4;e=KF(64)|0;t[u>>2]=e;if(!(i[A+8>>0]|0)){w=+s[A>>2];h=+s[A+4>>2];n=(a+r)*.5*(w+-1.0);b=(l+o)*.5*(h+-1.0);f=r*w-n;n=a*w-n;a=l*h-b;r=o*h-b}else{n=+s[A>>2];w=+s[A+4>>2];f=r-n;n=a+n;a=l+w;r=o-w}c[e>>3]=f;c[e+8>>3]=r;c[e+16>>3]=f;c[e+24>>3]=a;c[e+32>>3]=n;c[e+40>>3]=a;c[e+48>>3]=n;c[e+56>>3]=r;return u|0}function pq(e,A,r){e=e|0;A=A|0;r=r|0;var a=0,n=0,f=0,l=0,s=0,c=0,o=0,u=0,b=0,w=0;b=h;h=h+160|0;u=b+16|0;s=b+8|0;n=b;c=b+24|0;o=KF(gk(e)|0)|0;f=e+16|0;a=t[t[(t[f>>2]|0)+140>>2]>>2]|0;e:do{if(!a){n=0;a=0}else{w=Mk(e)|0;l=t[46923]|0;t[n>>2]=w;t[n+4>>2]=l;T4(c,94612,n)|0;l=Rv(e,c,1)|0;Sd(l,137483,280,1)|0;n=KF(56)|0;t[(t[l+16>>2]|0)+140>>2]=n;t[n>>2]=a;t[n+4>>2]=t[(t[(t[f>>2]|0)+140>>2]|0)+4>>2];while(1){n=t[a+4>>2]|0;if(!n){n=l;a=1;break e}if(!(i[o+(t[(t[n+16>>2]|0)+120>>2]|0)>>0]|0))Eq(e,n,l,o);a=a+16|0}}}while(0);f=0;l=sd(e)|0;while(1){if(!l)break;w=t[l+16>>2]|0;if((i[o+(t[w+120>>2]|0)>>0]|0)==0?(i[w+119>>0]|0)==3:0){if(!n){w=Mk(e)|0;n=(t[46923]|0)+a|0;t[s>>2]=w;t[s+4>>2]=n;T4(c,94612,s)|0;n=Rv(e,c,1)|0;Sd(n,137483,280,1)|0;w=KF(56)|0;t[(t[n+16>>2]|0)+140>>2]=w;a=a+1|0}Eq(e,l,n,o);f=1}l=cd(e,l)|0}if(n|0)Mp(n)|0;n=sd(e)|0;while(1){if(!n)break;if(!(i[o+(t[(t[n+16>>2]|0)+120>>2]|0)>>0]|0)){s=Mk(e)|0;w=(t[46923]|0)+a|0;t[u>>2]=s;t[u+4>>2]=w;T4(c,94620,u)|0;w=Rv(e,c,1)|0;Sd(w,137483,280,1)|0;s=KF(56)|0;t[(t[w+16>>2]|0)+140>>2]=s;Eq(e,n,w,o);Mp(w)|0;a=a+1|0}n=cd(e,n)|0}G2(o);t[46923]=(t[46923]|0)+a;if(A|0)t[A>>2]=a;if(r|0)t[r>>2]=f;l=KF((a<<2)+4|0)|0;f=l;n=xv(e)|0;while(1){if(!n)break;t[f>>2]=n;f=f+4|0;n=Jv(n)|0;a=a+-1|0}if(!a){t[f>>2]=0;h=b;return l|0}else ge(94628,94639,134,94646);return 0}function Eq(e,A,r,a){e=e|0;A=A|0;r=r|0;a=a|0;var n=0,f=0,l=0;i[a+(t[(t[A+16>>2]|0)+120>>2]|0)>>0]=1;hd(r,A,1)|0;l=ek(e,A)|0;while(1){if(!l)break;f=t[l>>2]&3;n=t[((f|0)==3?l:l+48|0)+40>>2]|0;if((n|0)==(A|0))n=t[((f|0)==2?l:l+-48|0)+40>>2]|0;if(!(i[a+(t[(t[n+16>>2]|0)+120>>2]|0)>>0]|0))Eq(e,n,r,a);l=Ak(e,l,A)|0}return}function Bq(e){e=e|0;var A=0;A=$F(24)|0;t[46924]=A;t[A>>2]=Uh(18204,t[4581]|0)|0;t[A+16>>2]=0;t[A+12>>2]=0;t[A+4>>2]=yq(e)|0;return A|0}function yq(e){e=e|0;var A=0,r=0;A=$F(16)|0;t[A+12>>2]=0;r=$F(e*20|0)|0;t[A>>2]=r;t[A+8>>2]=r+(e*20|0);t[A+4>>2]=r;return A|0}function Cq(e,A,r){e=e|0;A=A|0;r=r|0;r=Zq(t[46924]|0)|0;t[r>>2]=t[A>>2];t[r+4>>2]=t[A+4>>2];t[r+8>>2]=0;return r|0}function Iq(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;e=(t[A>>2]|0)-(t[r>>2]|0)|0;if(!e)e=(t[A+4>>2]|0)-(t[r+4>>2]|0)|0;return e|0}function Zq(e){e=e|0;var A=0,r=0,i=0,a=0;a=e+8|0;e=t[a>>2]|0;A=t[e+4>>2]|0;if((A|0)==(t[e+8>>2]|0)){r=e+12|0;i=t[r>>2]|0;if(!i){e=yq(((A-(t[e>>2]|0)|0)/20|0)<<1)|0;t[r>>2]=e}else e=i;t[a>>2]=e;A=t[e>>2]|0;t[e+4>>2]=A}t[e+4>>2]=A+20;return A|0}function Gq(e,A){e=e|0;A=A|0;var r=0,i=0,a=0;a=e+12|0;r=t[a>>2]|0;if((r|0)<(A|0)){i=r<<1;i=(i|0)<(A|0)?A:i;A=e+16|0;r=t[A>>2]|0;if(r|0)G2(r);t[A>>2]=$F(i<<3)|0;t[a>>2]=i}return}function Lq(e){e=e|0;var A=0;A=t[e>>2]|0;L5[t[A>>2]&63](A,0,64)|0;t[e+20>>2]=t[e+16>>2];A=t[e+4>>2]|0;t[e+8>>2]=A;t[A+4>>2]=t[A>>2];return}function Qq(e){e=e|0;Ph(t[e>>2]|0)|0;Dq(t[e+4>>2]|0);G2(t[e+16>>2]|0);G2(e);return}function Dq(e){e=e|0;var A=0;while(1){if(!e)break;A=t[e+12>>2]|0;G2(t[e>>2]|0);G2(e);e=A}return}function zq(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0,n=0,f=0,l=0;n=h;h=h+32|0;a=n;f=n+12|0;t[f>>2]=A;t[f+4>>2]=r;l=t[e>>2]|0;f=(L5[t[l>>2]&63](l,f,1)|0)+8|0;t[f>>2]=Wq(e,i,t[f>>2]|0)|0;if(0>2){l=t[15712]|0;f=Mk(i)|0;t[a>>2]=A;t[a+4>>2]=r;t[a+8>>2]=f;a3(l,94656,a)|0}h=n;return}function Wq(e,A,r){e=e|0;A=A|0;r=r|0;var i=0;i=e+20|0;e=t[i>>2]|0;t[i>>2]=e+8;t[e>>2]=A;t[e+4>>2]=r;return e|0}function Yq(e,A){e=e|0;A=A|0;ew(t[e>>2]|0,A,e)|0;return}function Fq(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0;i=h;h=h+32|0;a=i;t[a>>2]=A;t[a+4>>2]=r;r=t[e>>2]|0;r=L5[t[r>>2]&63](r,a,4)|0;h=i;return r|0}function Mq(e){e=e|0;G2(t[e+8>>2]|0);G2(e);return}function Vq(e){e=e|0;return+ +c[e>>3]}function Nq(e){e=e|0;return t[e+8>>2]|0}function Rq(e){e=e|0;return~~+c[e+16>>3]|0}function xq(e,A,r,i,a,n){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;n=n|0;A=t[A>>2]|0;if((A|0)>=(t[r>>2]|0)){A=A+10|0;t[r>>2]=A;t[i>>2]=AM(t[i>>2]|0,P(e<<3,A)|0)|0;t[a>>2]=AM(t[a>>2]|0,t[r>>2]<<3)|0;t[n>>2]=AM(t[n>>2]|0,t[r>>2]<<3)|0}return}function Jq(e,A,r,i,a,n,f,l,s,o,u){e=e|0;A=+A;r=r|0;i=i|0;a=a|0;n=n|0;f=f|0;l=l|0;s=s|0;o=o|0;u=u|0;var b=0,h=0,w=0,k=0,d=0.0;c[o>>3]=+c[o>>3]+1.0;e:do{if(e|0){k=t[e+16>>2]|0;b=t[e+40>>2]|0;if(b|0)do{xq(k,a,n,f,l,s);if((Rq(Cb(b)|0)|0)!=(i|0)){w=Nq(Cb(b)|0)|0;h=0;while(1){if((h|0)>=(k|0))break;c[(t[f>>2]|0)+((P(t[a>>2]|0,k)|0)+h<<3)>>3]=+c[w+(h<<3)>>3];h=h+1|0}d=+Vq(Cb(b)|0);c[(t[l>>2]|0)+(t[a>>2]<<3)>>3]=d;d=+$o(r,w,k);w=t[a>>2]|0;c[(t[s>>2]|0)+(w<<3)>>3]=d;t[a>>2]=w+1}b=Ib(b)|0}while((b|0)!=0);w=e+36|0;if(t[w>>2]|0){d=+$o(t[e+20>>2]|0,r,k);if(!(+c[e+24>>3]=(h|0))break e;Jq(t[(t[w>>2]|0)+(b<<2)>>2]|0,A,r,i,a,n,f,l,s,o,u);b=b+1|0}}xq(k,a,n,f,l,s);h=e+32|0;b=0;while(1){if((b|0)>=(k|0))break;c[(t[f>>2]|0)+((P(t[a>>2]|0,k)|0)+b<<3)>>3]=+c[(t[h>>2]|0)+(b<<3)>>3];b=b+1|0}c[(t[l>>2]|0)+(t[a>>2]<<3)>>3]=+c[e+8>>3];d=+$o(t[h>>2]|0,r,k);l=t[a>>2]|0;c[(t[s>>2]|0)+(l<<3)>>3]=d;t[a>>2]=l+1}}}while(0);return}function Hq(e,A,r,i,a,n,f,l,s,o,u){e=e|0;A=+A;r=r|0;i=i|0;a=a|0;n=n|0;f=f|0;l=l|0;s=s|0;o=o|0;u=u|0;var b=0;b=t[e+16>>2]|0;c[o>>3]=0.0;t[a>>2]=0;t[u>>2]=0;t[n>>2]=10;if(!(t[f>>2]|0))t[f>>2]=$F(b*80|0)|0;if(!(t[l>>2]|0))t[l>>2]=$F(t[n>>2]<<3)|0;if(!(t[s>>2]|0))t[s>>2]=$F(t[n>>2]<<3)|0;Jq(e,A,r,i,a,n,f,l,s,o,u);return}function Pq(e,A,r,i,a,n,f,l){e=e|0;A=A|0;r=r|0;i=+i;a=+a;n=+n;f=f|0;l=l|0;var s=0,o=0,u=0;u=t[e>>2]|0;o=t[e+16>>2]|0;s=0;while(1){if((s|0)==4)break;c[f+(s<<3)>>3]=0.0;s=s+1|0}t[l>>2]=0;o=P(o,u)|0;s=0;while(1){if((s|0)>=(o|0))break;c[A+(s<<3)>>3]=0.0;s=s+1|0}Xq(e,e,r,A,i,a,n,f);Sq(e,A,f);i=1.0/+(u|0);s=0;while(1){if((s|0)==4)break;u=f+(s<<3)|0;c[u>>3]=+c[u>>3]*i;s=s+1|0}return}function Xq(e,A,r,i,a,n,f,l){e=e|0;A=A|0;r=r|0;i=i|0;a=+a;n=+n;f=+f;l=l|0;var s=0,o=0.0,u=0,b=0.0,h=0,w=0,k=0,d=0.0,v=0,g=0,m=0,p=0,E=0,B=0;e:do{if((e|0)!=0&(A|0)!=0){if((t[e>>2]|0)>0?(t[A>>2]|0)>0:0){E=t[e+16>>2]|0;w=t[e+40>>2]|0;p=A+40|0;h=t[p>>2]|0;s=e+32|0;u=A+32|0;d=+$o(t[s>>2]|0,t[u>>2]|0,E);o=+c[e+24>>3];b=+c[A+24>>3];if(b+o>3]=+c[l>>3]+1.0;k=t[s>>2]|0;b=+c[e+8>>3];w=jq(e,E)|0;h=t[u>>2]|0;o=+c[A+8>>3];u=jq(A,E)|0;if(!(d>0.0))ge(94798,94681,191,94764);b=b*f*o;o=+z(+d,+(1.0-n));o=1.0/(n==-1.0?d*d:o);s=0;while(1){if((s|0)>=(E|0))break e;f=b*(+c[k+(s<<3)>>3]-+c[h+(s<<3)>>3])*o;i=w+(s<<3)|0;c[i>>3]=f+ +c[i>>3];i=u+(s<<3)|0;c[i>>3]=+c[i>>3]-f;s=s+1|0}}u=(w|0)!=0;s=(h|0)!=0;m=(e|0)==(A|0);if(u&s){v=l+8|0;g=n==-1.0;a=1.0-n;u=w;while(1){if(!u)break e;w=Nq(Cb(u)|0)|0;d=+Vq(Cb(u)|0);k=Rq(Cb(u)|0)|0;e=Uq(i,k,u,E)|0;d=d*f;h=t[p>>2]|0;while(1){if(!h)break;A=Nq(Cb(h)|0)|0;o=+Vq(Cb(h)|0);s=Rq(Cb(h)|0)|0;l=Uq(i,s,h,E)|0;A:do{if(!((k|0)==(s|0)|m&(s|0)<(k|0))){c[v>>3]=+c[v>>3]+1.0;n=+qo(r,E,k,s);o=d*o;b=+z(+n,+a);b=1.0/(g?n*n:b);s=0;while(1){if((s|0)>=(E|0))break A;n=o*(+c[w+(s<<3)>>3]-+c[A+(s<<3)>>3])*b;B=e+(s<<3)|0;c[B>>3]=n+ +c[B>>3];B=l+(s<<3)|0;c[B>>3]=+c[B>>3]-n;s=s+1|0}}}while(0);h=Ib(h)|0}u=Ib(u)|0}}if(m){k=1<=(k|0))break e;w=t[(t[h>>2]|0)+(u<<2)>>2]|0;s=u;while(1){if((s|0)==(k|0))break;Xq(w,t[(t[h>>2]|0)+(s<<2)>>2]|0,r,i,a,n,f,l);s=s+1|0}u=u+1|0}}if(!(u|!(o>b))){h=1<=(h|0))break e;Xq(t[(t[u>>2]|0)+(s<<2)>>2]|0,A,r,i,a,n,f,l);s=s+1|0}}if(!(s|!(b>o))){h=1<=(h|0))break e;Xq(t[(t[u>>2]|0)+(s<<2)>>2]|0,e,r,i,a,n,f,l);s=s+1|0}}if(!u){h=1<=(h|0))break e;Xq(t[(t[u>>2]|0)+(s<<2)>>2]|0,A,r,i,a,n,f,l);s=s+1|0}}if(s)ge(138394,94681,273,94764);h=1<=(h|0))break e;Xq(t[(t[u>>2]|0)+(s<<2)>>2]|0,e,r,i,a,n,f,l);s=s+1|0}}ge(94739,94681,175,94764)}}while(0);return}function Sq(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0,n=0.0,f=0.0,l=0,s=0,o=0,u=0,b=0,h=0;i=t[e+40>>2]|0;u=t[e+16>>2]|0;n=+c[e+8>>3];b=jq(e,u)|0;if(!(n>0.0))ge(94673,94681,289,94692);o=r+16|0;c[o>>3]=+c[o>>3]+1.0;e:do{if(!i){o=1<=(o|0))break e;a=t[(t[s>>2]|0)+(e<<2)>>2]|0;if(a|0){if((t[a>>2]|0)<=0)break;l=jq(a,u)|0;f=+c[a+8>>3]*n;i=0;while(1){if((i|0)>=(u|0))break;h=l+(i<<3)|0;c[h>>3]=+c[h>>3]+ +c[b+(i<<3)>>3]*f;i=i+1|0}Sq(a,A,r)}e=e+1|0}ge(94728,94681,307,94692)}else{f=1.0/n;while(1){if(!i)break e;a=Uq(A,Rq(Cb(i)|0)|0,i,u)|0;n=+Vq(Cb(i)|0)*f;e=0;while(1){if((e|0)>=(u|0))break;h=a+(e<<3)|0;c[h>>3]=+c[h>>3]+ +c[b+(e<<3)>>3]*n;e=e+1|0}i=Ib(i)|0}}}while(0);return}function jq(e,A){e=e|0;A=A|0;var r=0;r=e+48|0;e=t[r>>2]|0;e:do{if(!e){e=$F(A<<3)|0;t[r>>2]=e;r=0;while(1){if((r|0)>=(A|0))break e;c[e+(r<<3)>>3]=0.0;r=r+1|0}}}while(0);return e|0}function Uq(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0;a=t[(Cb(r)|0)+24>>2]|0;if(!a){a=e+((P(i,A)|0)<<3)|0;t[(Cb(r)|0)+24>>2]=a;a=t[(Cb(r)|0)+24>>2]|0}return a|0}function Tq(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;var t=0,n=0,f=0.0,l=0,s=0,o=0,u=0,b=0,h=0.0,w=0;u=e<<3;s=$F(u)|0;o=$F(u)|0;u=$F(u)|0;if((s|0)!=0&(o|0)!=0&(u|0)!=0){t=0;while(1){if((t|0)>=(e|0)){t=0;break}c[s+(t<<3)>>3]=+c[i+(t<<3)>>3];t=t+1|0}while(1){if((t|0)>=(e|0)){n=1;break}c[o+(t<<3)>>3]=+c[i+(t<<3)>>3];t=t+1|0}while(1){if((n|0)>=(A|0))break;l=P(n,e)|0;t=0;while(1){if((t|0)>=(e|0))break;b=s+(t<<3)|0;f=+c[b>>3];w=i+(t+l<<3)|0;h=+c[w>>3];c[b>>3]=f>3];f=+c[w>>3];c[b>>3]=h>f?h:f;t=t+1|0}n=n+1|0}f=+c[o>>3]-+c[s>>3];t=0;while(1){if((t|0)>=(e|0))break;w=s+(t<<3)|0;b=o+(t<<3)|0;c[u+(t<<3)>>3]=(+c[b>>3]+ +c[w>>3])*.5;h=+c[b>>3]-+c[w>>3];f=f>h?f:h;t=t+1|0}t=Oq(e,u,f==0.0?5.2e-06:f*.52,r)|0;e:do{if(!a){n=0;while(1){if((n|0)>=(A|0))break e;t=_q(t,i+((P(n,e)|0)<<3)|0,1.0,n)|0;n=n+1|0}}else{n=0;while(1){if((n|0)>=(A|0))break e;w=i+((P(n,e)|0)<<3)|0;t=_q(t,w,+c[a+(n<<3)>>3],n)|0;n=n+1|0}}}while(0);G2(s);G2(o);G2(u)}else{G2(s);G2(o);G2(u);t=0}return t|0}function Oq(e,A,r,i){e=e|0;A=A|0;r=+r;i=i|0;var a=0,n=0,f=0;n=$F(56)|0;t[n+16>>2]=e;t[n>>2]=0;f=$F(e<<3)|0;t[n+20>>2]=f;a=0;while(1){if((a|0)>=(e|0))break;c[f+(a<<3)>>3]=+c[A+(a<<3)>>3];a=a+1|0}if(r>0.0){c[n+24>>3]=r;c[n+8>>3]=0.0;t[n+32>>2]=0;t[n+36>>2]=0;t[n+40>>2]=0;t[n+44>>2]=i;t[n+48>>2]=0;return n|0}else ge(94896,94681,410,94906);return 0}function _q(e,A,r,i){e=e|0;A=A|0;r=+r;i=i|0;if(!e)e=0;else qq(e,A,r,i,0)|0;return e|0}function qq(e,A,r,i,a){e=e|0;A=A|0;r=+r;i=i|0;a=a|0;var n=0,f=0,l=0,s=0.0,o=0.0,u=0,b=0,h=0,w=0,k=0,d=0,v=0,g=0;g=e+16|0;d=t[g>>2]|0;v=t[e+44>>2]|0;u=t[e>>2]|0;do{if(!u){t[e>>2]=1;c[e+8>>3]=r;l=$F(d<<3)|0;t[e+32>>2]=l;f=t[g>>2]|0;n=0;while(1){if((n|0)>=(f|0))break;c[l+(n<<3)>>3]=+c[A+(n<<3)>>3];n=n+1|0}n=Kq(f,r,A,i)|0;f=e+40|0;if(!(t[f>>2]|0)){t[f>>2]=Eb(n)|0;break}else ge(94807,94681,502,94815)}else{if((v|0)<=(a|0)){if(t[e+36>>2]|0)ge(94881,94681,541,94815);n=u+1|0;t[e>>2]=n;f=e+8|0;c[f>>3]=+c[f>>3]+r;f=e+32|0;s=+(n|0);o=1.0/+(u+2|0);n=0;while(1){if((n|0)>=(d|0))break;k=(t[f>>2]|0)+(n<<3)|0;c[k>>3]=(+c[k>>3]*s+ +c[A+(n<<3)>>3])*o;n=n+1|0}n=Kq(d,r,A,i)|0;f=e+40|0;l=t[f>>2]|0;if(!l)ge(94891,94681,547,94815);else{t[f>>2]=yb(l,n)|0;break}}f=e+8|0;c[f>>3]=+c[f>>3]+r;f=e+32|0;o=+(u|0);s=1.0/+(u+1|0);n=0;while(1){if((n|0)>=(d|0))break;k=(t[f>>2]|0)+(n<<3)|0;c[k>>3]=(+c[k>>3]*o+ +c[A+(n<<3)>>3])*s;n=n+1|0}k=e+36|0;w=1<>2]|0)){t[k>>2]=$F(w<<2)|0;n=0;while(1){if((n|0)>=(w|0))break e;t[(t[k>>2]|0)+(n<<2)>>2]=0;n=n+1|0}}}while(0);b=e+20|0;n=t[b>>2]|0;l=$q(d,n,A)|0;if(!((l|0)<(w|0)&(l|0)>-1))ge(94837,94681,515,94815);f=t[(t[k>>2]|0)+(l<<2)>>2]|0;if(!f){f=eK(t[g>>2]|0,n,+c[e+24>>3]*.5,v,l)|0;t[(t[k>>2]|0)+(l<<2)>>2]=f;f=t[(t[k>>2]|0)+(l<<2)>>2]|0}h=a+1|0;i=qq(f,A,r,i,h)|0;t[(t[k>>2]|0)+(l<<2)>>2]=i;if(!(t[(t[k>>2]|0)+(l<<2)>>2]|0))ge(94860,94681,519,94815);A=e+40|0;n=t[A>>2]|0;do{if(n|0){u=Rq(Cb(n)|0)|0;if((t[e>>2]|0)!=1)ge(94871,94681,523,94815);a=Nq(Cb(t[A>>2]|0)|0)|0;s=+Vq(Cb(t[A>>2]|0)|0);f=t[b>>2]|0;l=$q(d,f,a)|0;if(!((l|0)<(w|0)&(l|0)>-1))ge(94837,94681,527,94815);n=t[(t[k>>2]|0)+(l<<2)>>2]|0;if(!n){n=eK(t[g>>2]|0,f,+c[e+24>>3]*.5,v,l)|0;t[(t[k>>2]|0)+(l<<2)>>2]=n;n=t[(t[k>>2]|0)+(l<<2)>>2]|0}g=qq(n,a,s,u,h)|0;t[(t[k>>2]|0)+(l<<2)>>2]=g;if(!(t[(t[k>>2]|0)+(l<<2)>>2]|0))ge(94860,94681,532,94815);else{Bb(t[A>>2]|0,106);t[A>>2]=0;break}}}while(0);t[e>>2]=(t[e>>2]|0)+1}}while(0);return e|0}function Kq(e,A,r,i){e=e|0;A=+A;r=r|0;i=i|0;var a=0,n=0;n=$F(32)|0;c[n>>3]=A;a=$F(e<<3)|0;t[n+8>>2]=a;c[n+16>>3]=+(i|0);i=0;while(1){if((i|0)>=(e|0))break;c[a+(i<<3)>>3]=+c[r+(i<<3)>>3];i=i+1|0}t[n+24>>2]=0;return n|0}function $q(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0;a=0;while(1){i=e+-1|0;if((e|0)<=0)break;e=i;a=a<<1|!(+c[r+(i<<3)>>3]-+c[A+(i<<3)>>3]<0.0)&1}return a|0}function eK(e,A,r,i,a){e=e|0;A=A|0;r=+r;i=i|0;a=a|0;var n=0,f=0,l=0.0;n=Oq(e,A,r,i)|0;f=t[n+20>>2]|0;l=-r;i=0;A=a;while(1){if((i|0)>=(e|0))break;a=f+(i<<3)|0;c[a>>3]=+c[a>>3]+((A&1|0)==0?l:r);i=i+1|0;A=(A|0)/2|0}return n|0}function AK(e){e=e|0;var A=0,r=0,i=0,a=0,n=0;if(e|0){A=t[e+16>>2]|0;G2(t[e+20>>2]|0);G2(t[e+32>>2]|0);G2(t[e+48>>2]|0);n=e+36|0;i=t[n>>2]|0;if(i|0){a=1<=(a|0))break;AK(t[A+(r<<2)>>2]|0);r=r+1|0;A=t[n>>2]|0}G2(A)}Bb(t[e+40>>2]|0,106);G2(e)}return}function rK(e){e=e|0;var A=0,r=0,i=0,a=0,n=0,f=0,l=0,s=0,o=0,u=0,b=0,h=0,w=0,k=0.0,d=0,v=0,g=0;e:do{if(!e)A=0;else{o=t[e+20>>2]|0;u=t[e+24>>2]|0;r=t[e+8>>2]|0;b=t[e>>2]|0;i=t[e+4>>2]|0;f=e+16|0;if((t[e+32>>2]|0)!=1)ge(94919,94943,76,94958);A=aK(i,b,r,t[f>>2]|0,1)|0;t[A+8>>2]=r;h=t[A+20>>2]|0;s=t[A+24>>2]|0;r=0;while(1){if((r|0)>(i|0)){r=0;break}t[h+(r<<2)>>2]=0;r=r+1|0}A:while(1){if((r|0)>=(b|0)){r=0;break}a=r+1|0;n=o+(a<<2)|0;r=t[o+(r<<2)>>2]|0;while(1){if((r|0)>=(t[n>>2]|0)){r=a;continue A}l=h+((t[u+(r<<2)>>2]|0)+1<<2)|0;t[l>>2]=(t[l>>2]|0)+1;r=r+1|0}}while(1){if((r|0)>=(i|0))break;l=r+1|0;n=h+(l<<2)|0;t[n>>2]=(t[n>>2]|0)+(t[h+(r<<2)>>2]|0);r=l}A:do{switch(t[f>>2]|0){case 1:{n=t[e+28>>2]|0;e=t[A+28>>2]|0;a=0;r:while(1){if((a|0)>=(b|0))break A;f=a+1|0;l=o+(f<<2)|0;r=t[o+(a<<2)>>2]|0;while(1){if((r|0)>=(t[l>>2]|0)){a=f;continue r}d=u+(r<<2)|0;t[s+(t[h+(t[d>>2]<<2)>>2]<<2)>>2]=a;k=+c[n+(r<<3)>>3];d=h+(t[d>>2]<<2)|0;w=t[d>>2]|0;t[d>>2]=w+1;c[e+(w<<3)>>3]=k;r=r+1|0}}}case 2:{n=t[e+28>>2]|0;e=t[A+28>>2]|0;a=0;r:while(1){if((a|0)>=(b|0))break A;f=a+1|0;l=o+(f<<2)|0;r=t[o+(a<<2)>>2]|0;while(1){if((r|0)>=(t[l>>2]|0)){a=f;continue r}d=u+(r<<2)|0;t[s+(t[h+(t[d>>2]<<2)>>2]<<2)>>2]=a;g=r<<1;d=h+(t[d>>2]<<2)|0;w=t[d>>2]|0;v=w<<1;c[e+(v<<3)>>3]=+c[n+(g<<3)>>3];c[e+((v|1)<<3)>>3]=+c[n+((g|1)<<3)>>3];t[d>>2]=w+1;r=r+1|0}}}case 4:{n=t[e+28>>2]|0;e=t[A+28>>2]|0;a=0;r:while(1){if((a|0)>=(b|0))break A;f=a+1|0;l=o+(f<<2)|0;r=t[o+(a<<2)>>2]|0;while(1){if((r|0)>=(t[l>>2]|0)){a=f;continue r}d=u+(r<<2)|0;t[s+(t[h+(t[d>>2]<<2)>>2]<<2)>>2]=a;v=t[n+(r<<2)>>2]|0;d=h+(t[d>>2]<<2)|0;g=t[d>>2]|0;t[d>>2]=g+1;t[e+(g<<2)>>2]=v;r=r+1|0}}}case 8:{a=0;r:while(1){if((a|0)>=(b|0))break A;n=a+1|0;e=o+(n<<2)|0;r=t[o+(a<<2)>>2]|0;while(1){if((r|0)>=(t[e>>2]|0)){a=n;continue r}v=h+(t[u+(r<<2)>>2]<<2)|0;g=t[v>>2]|0;t[v>>2]=g+1;t[s+(g<<2)>>2]=a;r=r+1|0}}}case 16:{iK(A);A=0;break e}default:{iK(A);A=0;break e}}}while(0);while(1){r=i+-1|0;if((i|0)<=0)break;t[h+(i<<2)>>2]=t[h+(r<<2)>>2];i=r}t[h>>2]=0}}while(0);return A|0}function iK(e){e=e|0;var A=0;if(e|0){A=t[e+20>>2]|0;if(A|0)G2(A);A=t[e+24>>2]|0;if(A|0)G2(A);G2(t[e+28>>2]|0);G2(e)}return}function aK(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;e=nK(e,A,i,tK(i)|0,a)|0;if((r|0)>0)fK(e,r)|0;return e|0}function tK(e){e=e|0;switch(e|0){case 1:{e=8;break}case 2:{e=16;break}case 4:{e=4;break}case 8:{e=0;break}case 16:{e=0;break}default:e=0}return e|0}function nK(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;var n=0;n=$F(44)|0;t[n>>2]=e;t[n+4>>2]=A;t[n+8>>2]=0;t[n+12>>2]=0;t[n+16>>2]=r;t[n+40>>2]=i;if((a|0)==2)e=0;else e=$F((e<<2)+4|0)|0;t[n+20>>2]=e;t[n+24>>2]=0;t[n+28>>2]=0;t[n+32>>2]=a;t[n+36>>2]=0;return n|0}function fK(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0,f=0;f=t[e+32>>2]|0;a=e+28|0;t[a>>2]=0;r=A<<2;i=$F(r)|0;if((f|0)!=2){t[e+24>>2]=i;r=t[e+40>>2]|0;if((A|0)!=0&(r|0)>0)n=4}else{t[e+20>>2]=i;t[e+24>>2]=$F(r)|0;r=t[e+40>>2]|0;n=4}if((n|0)==4)t[a>>2]=$F(P(r,A)|0)|0;t[e+12>>2]=A;return e|0}function lK(e,A){e=e|0;A=A|0;if(!(sK(e,A)|0)){A=rK(e)|0;if(!A)A=0;else{e=oK(e,A)|0;iK(A);A=e+36|0;t[A>>2]=t[A>>2]|3;A=e}}else A=cK(e)|0;return A|0}function sK(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0,f=0,l=0,s=0,o=0,u=0,b=0,h=0,w=0,k=0,d=0,v=0,g=0,m=0.0;if(e){if((t[e+32>>2]|0)!=1)ge(94919,94943,187,95074);v=e+36|0;r=t[v>>2]|0;if((r&2|0)==0?(w=(A|0)!=0,(r&1|0)==0|w^1):0)if((t[e>>2]|0)==(t[e+4>>2]|0)?(g=rK(e)|0,(g|0)!=0):0){s=t[e+20>>2]|0;o=t[e+24>>2]|0;u=t[g+20>>2]|0;b=t[g+24>>2]|0;h=t[e>>2]|0;k=$F(h<<2)|0;A=0;while(1){if((A|0)>=(h|0))break;t[k+(A<<2)>>2]=-1;A=A+1|0}e:do{switch((w?8:t[e+16>>2]|0)|0){case 1:{n=t[e+28>>2]|0;f=t[g+28>>2]|0;A=0;while(1){if((A|0)>(h|0)){r=0;break}if((t[s+(A<<2)>>2]|0)==(t[u+(A<<2)>>2]|0))A=A+1|0;else{A=0;break e}}A:while(1){if((r|0)>=(h|0)){d=54;break e}i=s+(r<<2)|0;a=r+1|0;e=s+(a<<2)|0;A=t[i>>2]|0;while(1){if((A|0)>=(t[e>>2]|0))break;t[k+(t[o+(A<<2)>>2]<<2)>>2]=A;A=A+1|0}A=t[u+(r<<2)>>2]|0;e=t[u+(a<<2)>>2]|0;r=A;while(1){if((r|0)>=(e|0))break;if((t[k+(t[b+(r<<2)>>2]<<2)>>2]|0)<(t[i>>2]|0)){A=0;break e}else r=r+1|0}while(1){if((A|0)>=(e|0)){r=a;continue A}m=+c[f+(A<<3)>>3]-+c[n+(t[k+(t[b+(A<<2)>>2]<<2)>>2]<<3)>>3];if((m>=0.0?m:-m)>1.0e-07){A=0;break e}else A=A+1|0}}}case 2:{f=t[e+28>>2]|0;l=t[g+28>>2]|0;A=0;while(1){if((A|0)>(h|0)){r=0;break}if((t[s+(A<<2)>>2]|0)==(t[u+(A<<2)>>2]|0))A=A+1|0;else{A=0;break e}}A:while(1){if((r|0)>=(h|0)){d=54;break e}a=s+(r<<2)|0;n=r+1|0;e=s+(n<<2)|0;A=t[a>>2]|0;while(1){if((A|0)>=(t[e>>2]|0))break;t[k+(t[o+(A<<2)>>2]<<2)>>2]=A;A=A+1|0}r=t[u+(r<<2)>>2]|0;i=t[u+(n<<2)>>2]|0;A=r;while(1){if((A|0)>=(i|0)){A=r;break}if((t[k+(t[b+(A<<2)>>2]<<2)>>2]|0)<(t[a>>2]|0)){A=0;break e}else A=A+1|0}while(1){if((A|0)>=(i|0)){r=n;continue A}r=A<<1;e=t[k+(t[b+(A<<2)>>2]<<2)>>2]<<1;m=+c[l+(r<<3)>>3]-+c[f+(e<<3)>>3];if((m>=0.0?m:-m)>1.0e-07){A=0;break e}m=+c[l+((r|1)<<3)>>3]-+c[f+((e|1)<<3)>>3];if((m>=0.0?m:-m)>1.0e-07){A=0;break e}else A=A+1|0}}}case 4:{a=t[e+28>>2]|0;n=t[g+28>>2]|0;A=0;A:while(1){if((A|0)>=(h|0)){d=54;break e}i=s+(A<<2)|0;f=A+1|0;e=s+(f<<2)|0;r=t[i>>2]|0;while(1){if((r|0)>=(t[e>>2]|0))break;t[k+(t[o+(r<<2)>>2]<<2)>>2]=r;r=r+1|0}A=t[u+(A<<2)>>2]|0;e=t[u+(f<<2)>>2]|0;r=A;while(1){if((r|0)>=(e|0))break;if((t[k+(t[b+(r<<2)>>2]<<2)>>2]|0)<(t[i>>2]|0)){A=0;break e}else r=r+1|0}while(1){if((A|0)>=(e|0)){A=f;continue A}if((t[n+(A<<2)>>2]|0)==(t[a+(t[k+(t[b+(A<<2)>>2]<<2)>>2]<<2)>>2]|0))A=A+1|0;else{A=0;break e}}}}case 8:{e=0;A:while(1){if((e|0)>=(h|0)){d=54;break e}i=s+(e<<2)|0;a=e+1|0;r=s+(a<<2)|0;A=t[i>>2]|0;while(1){if((A|0)>=(t[r>>2]|0))break;t[k+(t[o+(A<<2)>>2]<<2)>>2]=A;A=A+1|0}r=t[u+(a<<2)>>2]|0;A=t[u+(e<<2)>>2]|0;while(1){if((A|0)>=(r|0)){e=a;continue A}if((t[k+(t[b+(A<<2)>>2]<<2)>>2]|0)<(t[i>>2]|0)){A=0;break e}else A=A+1|0}}}default:A=0}}while(0);if((d|0)==54){r=t[v>>2]|0;if(w)A=1;else{t[v>>2]=r|2;A=3}t[v>>2]=A|r;A=1}G2(k);iK(g)}else A=0;else A=1}else A=0;return A|0}function cK(e){e=e|0;var A=0,r=0,i=0,a=0;if(!e)A=0;else{i=e+8|0;a=e+40|0;A=uK(t[e>>2]|0,t[e+4>>2]|0,t[i>>2]|0,t[e+16>>2]|0,t[a>>2]|0,t[e+32>>2]|0)|0;r=e+20|0;Q6(t[A+20>>2]|0,t[r>>2]|0,(t[e>>2]<<2)+4|0)|0;Q6(t[A+24>>2]|0,t[e+24>>2]|0,t[(t[r>>2]|0)+(t[e>>2]<<2)>>2]<<2|0)|0;r=t[e+28>>2]|0;if(r|0)Q6(t[A+28>>2]|0,r|0,P(t[i>>2]|0,t[a>>2]|0)|0)|0;t[A+36>>2]=t[e+36>>2];t[A+8>>2]=t[i>>2]}return A|0}function oK(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0,f=0,l=0,s=0,o=0,u=0,b=0,h=0,w=0,k=0,d=0,v=0,g=0,m=0,p=0;w=t[e+20>>2]|0;d=t[e+24>>2]|0;v=t[A+20>>2]|0;g=t[A+24>>2]|0;if(!((e|0)!=0&(A|0)!=0))ge(94981,94943,973,94988);k=t[e+32>>2]|0;if(!((k|0)==1?(k|0)==(t[A+32>>2]|0):0))ge(95005,94943,974,94988);i=e+16|0;r=t[i>>2]|0;if((r|0)!=(t[A+16>>2]|0))ge(95055,94943,975,94988);h=t[e>>2]|0;a=t[e+4>>2]|0;if(((h|0)==(t[A>>2]|0)?(a|0)==(t[A+4>>2]|0):0)?(m=aK(h,a,(t[A+8>>2]|0)+(t[e+8>>2]|0)|0,r,1)|0,m|0):0){u=t[m+20>>2]|0;b=t[m+24>>2]|0;k=$F(a<<2)|0;r=0;while(1){if((r|0)>=(a|0))break;t[k+(r<<2)>>2]=-1;r=r+1|0}t[u>>2]=0;e:do{switch(t[i>>2]|0){case 1:{o=t[e+28>>2]|0;f=t[A+28>>2]|0;l=t[m+28>>2]|0;r=0;a=0;while(1){if((a|0)>=(h|0))break e;s=a+1|0;i=w+(s<<2)|0;e=t[w+(a<<2)>>2]|0;while(1){if((e|0)>=(t[i>>2]|0))break;n=d+(e<<2)|0;t[k+(t[n>>2]<<2)>>2]=r;t[b+(r<<2)>>2]=t[n>>2];c[l+(r<<3)>>3]=+c[o+(e<<3)>>3];e=e+1|0;r=r+1|0}A=v+(s<<2)|0;n=u+(a<<2)|0;a=t[v+(a<<2)>>2]|0;while(1){if((a|0)>=(t[A>>2]|0))break;e=t[g+(a<<2)>>2]|0;i=t[k+(e<<2)>>2]|0;if((i|0)<(t[n>>2]|0)){t[b+(r<<2)>>2]=e;c[l+(r<<3)>>3]=+c[f+(a<<3)>>3];r=r+1|0}else{i=l+(i<<3)|0;c[i>>3]=+c[i>>3]+ +c[f+(a<<3)>>3]}a=a+1|0}t[u+(s<<2)>>2]=r;a=s}}case 2:{o=t[e+28>>2]|0;s=t[A+28>>2]|0;f=t[m+28>>2]|0;a=0;r=0;while(1){if((a|0)>=(h|0))break e;l=a+1|0;i=w+(l<<2)|0;e=t[w+(a<<2)>>2]|0;while(1){if((e|0)>=(t[i>>2]|0))break;A=d+(e<<2)|0;t[k+(t[A>>2]<<2)>>2]=r;t[b+(r<<2)>>2]=t[A>>2];A=e<<1;n=r<<1;c[f+(n<<3)>>3]=+c[o+(A<<3)>>3];c[f+((n|1)<<3)>>3]=+c[o+((A|1)<<3)>>3];e=e+1|0;r=r+1|0}A=v+(l<<2)|0;n=u+(a<<2)|0;a=t[v+(a<<2)>>2]|0;while(1){if((a|0)>=(t[A>>2]|0))break;e=t[g+(a<<2)>>2]|0;i=t[k+(e<<2)>>2]|0;if((i|0)<(t[n>>2]|0)){t[b+(r<<2)>>2]=e;e=a<<1;i=r<<1;c[f+(i<<3)>>3]=+c[s+(e<<3)>>3];c[f+((i|1)<<3)>>3]=+c[s+((e|1)<<3)>>3];r=r+1|0}else{e=a<<1;i=i<<1;p=f+(i<<3)|0;c[p>>3]=+c[p>>3]+ +c[s+(e<<3)>>3];i=f+((i|1)<<3)|0;c[i>>3]=+c[i>>3]+ +c[s+((e|1)<<3)>>3]}a=a+1|0}t[u+(l<<2)>>2]=r;a=l}}case 4:{o=t[e+28>>2]|0;f=t[A+28>>2]|0;l=t[m+28>>2]|0;a=0;r=0;while(1){if((a|0)>=(h|0))break e;s=a+1|0;i=w+(s<<2)|0;e=t[w+(a<<2)>>2]|0;while(1){if((e|0)>=(t[i>>2]|0))break;p=d+(e<<2)|0;t[k+(t[p>>2]<<2)>>2]=r;t[b+(r<<2)>>2]=t[p>>2];t[l+(r<<2)>>2]=t[o+(e<<2)>>2];e=e+1|0;r=r+1|0}A=v+(s<<2)|0;n=u+(a<<2)|0;a=t[v+(a<<2)>>2]|0;while(1){if((a|0)>=(t[A>>2]|0))break;e=t[g+(a<<2)>>2]|0;i=t[k+(e<<2)>>2]|0;if((i|0)<(t[n>>2]|0)){t[b+(r<<2)>>2]=e;t[l+(r<<2)>>2]=t[f+(a<<2)>>2];r=r+1|0}else{p=l+(i<<2)|0;t[p>>2]=(t[p>>2]|0)+(t[f+(a<<2)>>2]|0)}a=a+1|0}t[u+(s<<2)>>2]=r;a=s}}case 8:{r=0;a=0;while(1){if((a|0)>=(h|0))break e;f=a+1|0;i=w+(f<<2)|0;e=t[w+(a<<2)>>2]|0;while(1){if((e|0)>=(t[i>>2]|0))break;p=d+(e<<2)|0;t[k+(t[p>>2]<<2)>>2]=r;t[b+(r<<2)>>2]=t[p>>2];r=r+1|0;e=e+1|0}A=v+(f<<2)|0;n=u+(a<<2)|0;i=t[v+(a<<2)>>2]|0;while(1){if((i|0)>=(t[A>>2]|0))break;e=t[g+(i<<2)>>2]|0;if((t[k+(e<<2)>>2]|0)<(t[n>>2]|0)){t[b+(r<<2)>>2]=e;r=r+1|0}i=i+1|0}t[u+(f<<2)>>2]=r;a=f}}default:r=0}}while(0);t[m+8>>2]=r;G2(k);return m|0}return 0}function uK(e,A,r,i,a,t){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;t=t|0;e=nK(e,A,i,a,t)|0;if((r|0)>0)fK(e,r)|0;return e|0}function bK(e,A){e=e|0;A=A|0;var r=0;if(!(sK(e,A)|0)){A=rK(e)|0;if(!A)A=0;else{r=oK(e,A)|0;iK(A);A=r+36|0;t[A>>2]=t[A>>2]|3;A=r;r=5}}else{A=cK(e)|0;r=5}if((r|0)==5)A=hK(A)|0;return A|0}function hK(e){e=e|0;var A=0,r=0,i=0,a=0,n=0,f=0,l=0,s=0,o=0,u=0;e:do{if(!e)e=0;else{s=t[e+20>>2]|0;o=t[e+24>>2]|0;r=t[s>>2]|0;A:do{switch(t[e+16>>2]|0){case 1:{l=t[e+28>>2]|0;f=0;A=0;while(1){if((f|0)>=(t[e>>2]|0))break A;a=f+1|0;n=s+(a<<2)|0;while(1){i=t[n>>2]|0;if((r|0)>=(i|0))break;i=t[o+(r<<2)>>2]|0;if((i|0)!=(f|0)){t[o+(A<<2)>>2]=i;c[l+(A<<3)>>3]=+c[l+(r<<3)>>3];A=A+1|0}r=r+1|0}t[n>>2]=A;f=a;r=i}}case 2:{l=t[e+28>>2]|0;f=0;A=0;while(1){if((f|0)>=(t[e>>2]|0))break A;a=f+1|0;n=s+(a<<2)|0;while(1){i=t[n>>2]|0;if((r|0)>=(i|0))break;i=t[o+(r<<2)>>2]|0;if((i|0)!=(f|0)){t[o+(A<<2)>>2]=i;u=r<<1;i=A<<1;c[l+(i<<3)>>3]=+c[l+(u<<3)>>3];c[l+((i|1)<<3)>>3]=+c[l+((u|1)<<3)>>3];A=A+1|0}r=r+1|0}t[n>>2]=A;f=a;r=i}}case 4:{l=t[e+28>>2]|0;f=0;A=0;while(1){if((f|0)>=(t[e>>2]|0))break A;a=f+1|0;n=s+(a<<2)|0;while(1){i=t[n>>2]|0;if((r|0)>=(i|0))break;i=t[o+(r<<2)>>2]|0;if((i|0)!=(f|0)){t[o+(A<<2)>>2]=i;t[l+(A<<2)>>2]=t[l+(r<<2)>>2];A=A+1|0}r=r+1|0}t[n>>2]=A;f=a;r=i}}case 8:{f=0;A=0;while(1){if((f|0)>=(t[e>>2]|0))break A;a=f+1|0;n=s+(a<<2)|0;while(1){i=t[n>>2]|0;if((r|0)>=(i|0))break;i=t[o+(r<<2)>>2]|0;if((i|0)!=(f|0)){t[o+(A<<2)>>2]=i;A=A+1|0}r=r+1|0}t[n>>2]=A;f=a;r=i}}default:{e=0;break e}}}while(0);t[e+8>>2]=A}}while(0);return e|0}function wK(e){e=e|0;if((t[e+32>>2]|0)==2)return kK(t[e+8>>2]|0,t[e>>2]|0,t[e+4>>2]|0,t[e+20>>2]|0,t[e+24>>2]|0,t[e+28>>2]|0,t[e+16>>2]|0,t[e+40>>2]|0)|0;else ge(95100,94943,803,95126);return 0}function kK(e,A,r,i,a,t,n,f){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;t=t|0;n=n|0;f=f|0;return Qo(e,A,r,i,a,t,n,f,1)|0}function dK(e,A,r,a){e=e|0;A=A|0;r=r|0;a=a|0;var f=0,l=0,s=0,c=0,o=0,u=0,b=0,h=0;s=e+72|0;c=e+352|0;o=e+356|0;u=e+360|0;l=0;e:while(1){f=r-A|0;if((f|0)<=0){r=-1;break}switch(i[s+(n[A>>0]|0)>>0]|0){case 8:case 1:case 0:{b=16;break e}case 5:{if((f|0)<2){r=-2;break e}if(Z5[t[c>>2]&127](e,A)|0){b=6;break e}f=l;A=A+2|0;l=f;continue e}case 6:{if((f|0)<3){r=-2;break e}if(Z5[t[o>>2]&127](e,A)|0){b=10;break e}f=l;A=A+3|0;l=f;continue e}case 7:{if((f|0)<4){r=-2;break e}if(Z5[t[u>>2]&127](e,A)|0){b=14;break e}f=l;A=A+4|0;l=f;continue e}case 2:{f=A+1|0;if((r-f|0)<=0){r=-1;break e}if((i[f>>0]|0)!=33){h=l;A=f;l=h;continue e}f=A+2|0;if((r-f|0)<=0){r=-1;break e}h=(i[f>>0]|0)==91;l=l+(h&1)|0;A=h?A+3|0:f;continue e}case 4:{f=A+1|0;if((r-f|0)<=0){r=-1;break e}if((i[f>>0]|0)!=93){h=l;A=f;l=h;continue e}f=A+2|0;if((r-f|0)<=0){r=-1;break e}if((i[f>>0]|0)!=62){h=l;A=f;l=h;continue e}A=A+3|0;if(!l){b=26;break e}l=l+-1|0;continue e}default:{h=l;A=A+1|0;l=h;continue e}}}if((b|0)==6){t[a>>2]=A;r=0}else if((b|0)==10){t[a>>2]=A;r=0}else if((b|0)==14){t[a>>2]=A;r=0}else if((b|0)==16){t[a>>2]=A;r=0}else if((b|0)==26){t[a>>2]=A;r=42}return r|0}function vK(e,A,r,a){e=e|0;A=A|0;r=r|0;a=a|0;var f=0,l=0,s=0,c=0,o=0;do{if(A>>>0>>0){c=r;if((c-A|0)>0){o=e+72|0;l=A;e:while(1){if((c-l|0)<=0){s=24;break}switch(i[o+(n[l>>0]|0)>>0]|0){case 3:{s=8;break e}case 2:{s=11;break e}case 10:{s=12;break e}case 9:{s=15;break e}case 21:{s=19;break e}case 5:{f=2;break}case 6:{f=3;break}case 7:{f=4;break}default:f=1}l=l+f|0}if((s|0)==8)if((l|0)==(A|0)){f=QK(e,A+1|0,r,a)|0;break}else{t[a>>2]=l;f=6;break}else if((s|0)==11){t[a>>2]=l;f=0;break}else if((s|0)==12)if((l|0)==(A|0)){t[a>>2]=A+1;f=7;break}else{t[a>>2]=l;f=6;break}else if((s|0)==15){if((l|0)!=(A|0)){t[a>>2]=l;f=6;break}f=A+1|0;if((c-f|0)<=0){f=-3;break}t[a>>2]=(i[o+(n[f>>0]|0)>>0]|0)==10?A+2|0:f;f=7;break}else if((s|0)==19)if((l|0)==(A|0)){t[a>>2]=A+1;f=39;break}else{t[a>>2]=l;f=6;break}else if((s|0)==24){t[a>>2]=l;f=6;break}}else f=-1}else f=-4}while(0);return f|0}function gK(e,A,r,a){e=e|0;A=A|0;r=r|0;a=a|0;var f=0,l=0,s=0,c=0,o=0;do{if(A>>>0>>0){c=r;if((c-A|0)>0){o=e+72|0;l=A;e:while(1){if((c-l|0)<=0){s=23;break}switch(i[o+(n[l>>0]|0)>>0]|0){case 3:{s=8;break e}case 30:{s=11;break e}case 10:{s=14;break e}case 9:{s=17;break e}case 5:{f=2;break}case 6:{f=3;break}case 7:{f=4;break}default:f=1}l=l+f|0}if((s|0)==8)if((l|0)==(A|0)){f=QK(e,A+1|0,r,a)|0;break}else{t[a>>2]=l;f=6;break}else if((s|0)==11)if((l|0)==(A|0)){f=DK(e,A+1|0,r,a)|0;f=(f|0)==22?0:f;break}else{t[a>>2]=l;f=6;break}else if((s|0)==14)if((l|0)==(A|0)){t[a>>2]=A+1;f=7;break}else{t[a>>2]=l;f=6;break}else if((s|0)==17){if((l|0)!=(A|0)){t[a>>2]=l;f=6;break}f=A+1|0;if((c-f|0)<=0){f=-3;break}t[a>>2]=(i[o+(n[f>>0]|0)>>0]|0)==10?A+2|0:f;f=7;break}else if((s|0)==23){t[a>>2]=l;f=6;break}}else f=-1}else f=-4}while(0);return f|0}function mK(e,A,r,a){e=e|0;A=A|0;r=r|0;a=a|0;var t=0,n=0;t=r;e=A;while(1){A=i[a>>0]|0;if(!(A<<24>>24)){n=6;break}if((t-e|0)<1){e=0;break}if((i[e>>0]|0)!=A<<24>>24){e=0;break}a=a+1|0;e=e+1|0}if((n|0)==6)e=(e|0)==(r|0)&1;return e|0}function pK(e,A){e=e|0;A=A|0;var r=0,a=0;a=e+72|0;e=A;e:while(1){switch(i[a+(n[e>>0]|0)>>0]|0){case 5:{r=2;break}case 6:{r=3;break}case 7:{r=4;break}case 27:case 26:case 25:case 24:case 23:case 22:case 29:{r=1;break}default:break e}e=e+r|0}return e-A|0}function EK(e,A){e=e|0;A=A|0;e=e+72|0;e:while(1){switch(i[e+(n[A>>0]|0)>>0]|0){case 21:case 9:case 10:break;default:break e}A=A+1|0}return A|0}function BK(e,A,r,a){e=e|0;A=A|0;r=r|0;a=a|0;var f=0,l=0,s=0,c=0,o=0,u=0,b=0,h=0;o=e+72|0;s=0;c=0;e=1;e:while(1){f=A+1|0;l=i[f>>0]|0;do{switch(i[o+(l&255)>>0]|0){case 5:{if(!e)if((c|0)<(r|0)){t[a+(c<<4)>>2]=f;i[a+(c<<4)+12>>0]=1;e=1}else e=1;f=c;l=s;A=A+2|0;c=f;s=l;continue e}case 6:{if(!e)if((c|0)<(r|0)){t[a+(c<<4)>>2]=f;i[a+(c<<4)+12>>0]=1;e=1}else e=1;f=c;l=s;A=A+3|0;c=f;s=l;continue e}case 7:{if(!e)if((c|0)<(r|0)){t[a+(c<<4)>>2]=f;i[a+(c<<4)+12>>0]=1;e=1}else e=1;f=c;l=s;A=A+4|0;c=f;s=l;continue e}case 24:case 22:case 29:{if(e|0){h=e;b=c;l=s;A=f;e=h;c=b;s=l;continue e}if((c|0)>=(r|0)){b=c;h=s;e=1;A=f;c=b;s=h;continue e}t[a+(c<<4)>>2]=f;i[a+(c<<4)+12>>0]=1;b=c;h=s;e=1;A=f;c=b;s=h;continue e}case 12:{if((e|0)!=2){if((c|0)>=(r|0)){h=c;s=12;e=2;A=f;c=h;continue e}t[a+(c<<4)+4>>2]=A+2;h=c;s=12;e=2;A=f;c=h;continue e}if((s|0)!=12){b=c;h=s;e=2;A=f;c=b;s=h;continue e}if((c|0)<(r|0))t[a+(c<<4)+8>>2]=f;s=12;c=c+1|0;e=0;A=f;continue e}case 13:{if((e|0)!=2){if((c|0)>=(r|0)){h=c;s=13;e=2;A=f;c=h;continue e}t[a+(c<<4)+4>>2]=A+2;h=c;s=13;e=2;A=f;c=h;continue e}if((s|0)!=13){b=c;h=s;e=2;A=f;c=b;s=h;continue e}if((c|0)<(r|0))t[a+(c<<4)+8>>2]=f;s=13;c=c+1|0;e=0;A=f;continue e}case 3:{if((c|0)>=(r|0)){l=e;b=c;h=s;A=f;e=l;c=b;s=h;continue e}i[a+(c<<4)+12>>0]=0;l=e;b=c;h=s;A=f;e=l;c=b;s=h;continue e}case 21:{switch(e|0){case 1:{b=c;h=s;e=0;A=f;c=b;s=h;continue e}case 2:break;default:{l=e;b=c;h=s;A=f;e=l;c=b;s=h;continue e}}if((c|0)>=(r|0)){b=c;h=s;e=2;A=f;c=b;s=h;continue e}e=a+(c<<4)+12|0;if(!(i[e>>0]|0)){b=c;h=s;e=2;A=f;c=b;s=h;continue e}if(((l<<24>>24==32?(f|0)!=(t[a+(c<<4)+4>>2]|0):0)?(u=i[A+2>>0]|0,u<<24>>24!=32):0)?(s|0)!=(n[o+(u&255)>>0]|0):0){b=c;h=s;e=2;A=f;c=b;s=h;continue e}i[e>>0]=0;b=c;h=s;e=2;A=f;c=b;s=h;continue e}case 10:case 9:{switch(e|0){case 1:{b=c;h=s;e=0;A=f;c=b;s=h;continue e}case 2:break;default:{l=e;b=c;h=s;A=f;e=l;c=b;s=h;continue e}}if((c|0)>=(r|0)){b=c;h=s;e=2;A=f;c=b;s=h;continue e}i[a+(c<<4)+12>>0]=0;b=c;h=s;e=2;A=f;c=b;s=h;continue e}case 17:case 11:if((e|0)==2){b=c;h=s;e=2;A=f;c=b;s=h;continue e}else break e;default:{l=e;b=c;h=s;A=f;e=l;c=b;s=h;continue e}}}while(0)}return c|0}function yK(e,A){e=e|0;A=A|0;var r=0,a=0;e=A+2|0;r=i[e>>0]|0;e:do{if(r<<24>>24==120){r=A+3|0;e=0;while(1){A:while(1){a=i[r>>0]|0;A=a<<24>>24;if(a<<24>>24==59){a=14;break e}switch(A|0){case 57:case 56:case 55:case 54:case 53:case 52:case 51:case 50:case 49:case 48:{a=7;break A}case 70:case 69:case 68:case 67:case 66:case 65:{a=8;break A}case 102:case 101:case 100:case 99:case 98:case 97:{a=9;break A}default:{}}r=r+1|0}if((a|0)==7){a=0;e=A+-48|e<<4}else if((a|0)==8){a=0;e=(e<<4)+-55+A|0}else if((a|0)==9){a=0;e=(e<<4)+-87+A|0}if((e|0)<1114112)r=r+1|0;else{e=-1;break}}}else{A=e;e=0;while(1){if(r<<24>>24==59){a=14;break e}e=(r<<24>>24)+-48+(e*10|0)|0;if((e|0)>=1114112){e=-1;break e}r=A+1|0;A=r;r=i[r>>0]|0}}}while(0);if((a|0)==14)e=po(e)|0;return e|0}function CK(e,A,r){e=e|0;A=A|0;r=r|0;var a=0;e:do{switch(r-A|0){case 2:{if((i[A+1>>0]|0)==116){e=i[A>>0]|0;e=e<<24>>24==108?60:e<<24>>24==103?62:0}else a=14;break}case 3:{if(((i[A>>0]|0)==97?(i[A+1>>0]|0)==109:0)?(i[A+2>>0]|0)==112:0)e=38;else a=14;break}case 4:switch(i[A>>0]|0){case 113:{if((i[A+1>>0]|0)!=117){a=14;break e}if((i[A+2>>0]|0)!=111){a=14;break e}if((i[A+3>>0]|0)==116){e=34;break e}else{a=14;break e}}case 97:{if((i[A+1>>0]|0)!=112){a=14;break e}if((i[A+2>>0]|0)!=111){a=14;break e}if((i[A+3>>0]|0)==115){e=39;break e}else{a=14;break e}}default:{a=14;break e}}default:a=14}}while(0);if((a|0)==14)e=0;return e|0}function IK(e,A,r,a){e=e|0;A=A|0;r=r|0;a=a|0;var f=0,l=0;f=e+72|0;l=a+4|0;while(1){if((r-A|0)<=0)break;switch(i[f+(n[A>>0]|0)>>0]|0){case 5:{A=A+2|0;break}case 6:{A=A+3|0;break}case 7:{A=A+4|0;break}case 10:{t[l>>2]=-1;t[a>>2]=(t[a>>2]|0)+1;A=A+1|0;break}case 9:{t[a>>2]=(t[a>>2]|0)+1;e=A+1|0;if((r-e|0)>0)A=(i[f+(n[e>>0]|0)>>0]|0)==10?A+2|0:e;else A=e;t[l>>2]=-1;break}default:A=A+1|0}t[l>>2]=(t[l>>2]|0)+1}return}function ZK(e,A,r,a){e=e|0;A=A|0;r=r|0;a=a|0;var n=0,f=0;n=r+-1|0;e=e+72|0;e:while(1){A=A+1|0;if((n-A|0)<=0){A=1;break}r=i[A>>0]|0;switch(i[e+(r&255)>>0]|0){case 23:case 19:case 30:case 33:case 16:case 18:case 10:case 9:case 15:case 14:case 17:case 35:case 34:case 32:case 31:case 13:case 27:case 24:case 25:continue e;case 21:if(r<<24>>24==9){f=7;break e}else continue e;case 22:case 26:{if(r<<24>>24>=0)continue e;break}default:{}}switch(r<<24>>24|0){case 64:case 36:break;default:{f=7;break e}}}if((f|0)==7){t[a>>2]=A;A=0}return A|0}function GK(e,A,r,a,f){e=e|0;A=A|0;r=r|0;a=a|0;f=f|0;var l=0,s=0,c=0;l=f;while(1){s=t[A>>2]|0;if((s|0)==(r|0)){e=0;break}c=n[s>>0]|0;e=t[a>>2]|0;if(!(c&128)){if((e|0)==(f|0)){e=2;break}t[A>>2]=s+1;s=i[s>>0]|0;c=t[a>>2]|0;t[a>>2]=c+1;i[c>>0]=s;continue}else{if((l-e|0)<2){e=2;break}t[a>>2]=e+1;i[e>>0]=c>>>6|192;s=t[a>>2]|0;t[a>>2]=s+1;i[s>>0]=c&63|128;t[A>>2]=(t[A>>2]|0)+1;continue}}return e|0}function LK(e,A,r,i,f){e=e|0;A=A|0;r=r|0;i=i|0;f=f|0;var l=0,s=0;while(1){e=t[A>>2]|0;l=e>>>0>>0;s=t[i>>2]|0;if(!(l&s>>>0>>0))break;t[A>>2]=e+1;l=n[e>>0]|0;s=t[i>>2]|0;t[i>>2]=s+2;a[s>>1]=l}return((s|0)!=(f|0)|l^1?0:2)|0}function QK(e,A,r,a){e=e|0;A=A|0;r=r|0;a=a|0;var f=0,l=0,s=0,c=0,o=0;c=r;f=c-A|0;e:do{if((f|0)>0){o=e+72|0;switch(i[o+(n[A>>0]|0)>>0]|0){case 29:{t[a>>2]=A;r=0;break e}case 24:case 22:{r=1;break}case 5:{if((f|0)<2){r=-2;break e}if(!(Z5[t[e+340>>2]&127](e,A)|0)){t[a>>2]=A;r=0;break e}else r=2;break}case 6:{if((f|0)<3){r=-2;break e}if(!(Z5[t[e+344>>2]&127](e,A)|0)){t[a>>2]=A;r=0;break e}else r=3;break}case 7:{if((f|0)<4){r=-2;break e}if(!(Z5[t[e+348>>2]&127](e,A)|0)){t[a>>2]=A;r=0;break e}else r=4;break}case 19:{r=zK(e,A+1|0,r,a)|0;break e}default:{t[a>>2]=A;r=0;break e}}f=e+328|0;l=e+332|0;s=e+336|0;A=A+r|0;A:while(1){r=c-A|0;if((r|0)<=0){r=-1;break e}switch(i[o+(n[A>>0]|0)>>0]|0){case 29:{f=18;break A}case 18:{f=29;break A}case 27:case 26:case 25:case 24:case 22:{r=1;break}case 5:{if((r|0)<2){r=-2;break e}if(!(Z5[t[f>>2]&127](e,A)|0)){f=21;break A}else r=2;break}case 6:{if((r|0)<3){r=-2;break e}if(!(Z5[t[l>>2]&127](e,A)|0)){f=24;break A}else r=3;break}case 7:{if((r|0)<4){r=-2;break e}if(!(Z5[t[s>>2]&127](e,A)|0)){f=27;break A}else r=4;break}default:{f=30;break A}}A=A+r|0}if((f|0)==18){t[a>>2]=A;r=0;break}else if((f|0)==21){t[a>>2]=A;r=0;break}else if((f|0)==24){t[a>>2]=A;r=0;break}else if((f|0)==27){t[a>>2]=A;r=0;break}else if((f|0)==29){t[a>>2]=A+1;r=9;break}else if((f|0)==30){t[a>>2]=A;r=0;break}}else r=-1}while(0);return r|0}function DK(e,A,r,a){e=e|0;A=A|0;r=r|0;a=a|0;var f=0,l=0,s=0,c=0,o=0;f=r-A|0;e:do{if((f|0)>0){o=e+72|0;switch(i[o+(n[A>>0]|0)>>0]|0){case 29:{t[a>>2]=A;r=0;break e}case 24:case 22:{f=1;break}case 5:{if((f|0)<2){r=-2;break e}if(!(Z5[t[e+340>>2]&127](e,A)|0)){t[a>>2]=A;r=0;break e}else f=2;break}case 6:{if((f|0)<3){r=-2;break e}if(!(Z5[t[e+344>>2]&127](e,A)|0)){t[a>>2]=A;r=0;break e}else f=3;break}case 7:{if((f|0)<4){r=-2;break e}if(!(Z5[t[e+348>>2]&127](e,A)|0)){t[a>>2]=A;r=0;break e}else f=4;break}case 30:case 9:case 10:case 21:{t[a>>2]=A;r=22;break e}default:{t[a>>2]=A;r=0;break e}}l=e+328|0;s=e+332|0;c=e+336|0;A=A+f|0;A:while(1){f=r-A|0;if((f|0)<=0){r=-1;break e}switch(i[o+(n[A>>0]|0)>>0]|0){case 29:{f=18;break A}case 18:{f=29;break A}case 27:case 26:case 25:case 24:case 22:{f=1;break}case 5:{if((f|0)<2){r=-2;break e}if(!(Z5[t[l>>2]&127](e,A)|0)){f=21;break A}else f=2;break}case 6:{if((f|0)<3){r=-2;break e}if(!(Z5[t[s>>2]&127](e,A)|0)){f=24;break A}else f=3;break}case 7:{if((f|0)<4){r=-2;break e}if(!(Z5[t[c>>2]&127](e,A)|0)){f=27;break A}else f=4;break}default:{f=30;break A}}A=A+f|0}if((f|0)==18){t[a>>2]=A;r=0;break}else if((f|0)==21){t[a>>2]=A;r=0;break}else if((f|0)==24){t[a>>2]=A;r=0;break}else if((f|0)==27){t[a>>2]=A;r=0;break}else if((f|0)==29){t[a>>2]=A+1;r=28;break}else if((f|0)==30){t[a>>2]=A;r=0;break}}else r=-1}while(0);return r|0}function zK(e,A,r,a){e=e|0;A=A|0;r=r|0;a=a|0;var f=0,l=0;l=r;e:do{if((l-A|0)>0){f=i[A>>0]|0;if(f<<24>>24==120){e=WK(e,A+1|0,r,a)|0;break}r=e+72|0;if((i[r+(f&255)>>0]|0)!=25){t[a>>2]=A;e=0;break}A:while(1){e=A+1|0;if((l-e|0)<=0){e=-1;break e}switch(i[r+(n[e>>0]|0)>>0]|0){case 25:{A=e;break}case 18:{r=8;break A}default:{r=9;break A}}}if((r|0)==8){t[a>>2]=A+2;e=10;break}else if((r|0)==9){t[a>>2]=e;e=0;break}}else e=-1}while(0);return e|0}function WK(e,A,r,a){e=e|0;A=A|0;r=r|0;a=a|0;var f=0;e:do{if((r-A|0)>0){e=e+72|0;if((i[e+(n[A>>0]|0)>>0]&-2)<<24>>24!=24){t[a>>2]=A;r=0;break}A:while(1){f=A+1|0;if((r-f|0)<=0){r=-1;break e}switch(i[e+(n[f>>0]|0)>>0]|0){case 24:case 25:{A=f;break}case 18:{e=6;break A}default:{e=7;break A}}}if((e|0)==6){t[a>>2]=A+2;r=10;break}else if((e|0)==7){t[a>>2]=f;r=0;break}}else r=-1}while(0);return r|0}function YK(e,A,r,a){e=e|0;A=A|0;r=r|0;a=a|0;var f=0,l=0,s=0,c=0,o=0,u=0,b=0,h=0,w=0,k=0,d=0;k=r;f=k-A|0;e:do{if((f|0)>0){w=e+72|0;switch(i[w+(n[A>>0]|0)>>0]|0){case 29:{t[a>>2]=A;f=0;break e}case 24:case 22:{f=1;break}case 5:{if((f|0)<2){f=-2;break e}if(!(Z5[t[e+340>>2]&127](e,A)|0)){t[a>>2]=A;f=0;break e}else f=2;break}case 6:{if((f|0)<3){f=-2;break e}if(!(Z5[t[e+344>>2]&127](e,A)|0)){t[a>>2]=A;f=0;break e}else f=3;break}case 7:{if((f|0)<4){f=-2;break e}if(!(Z5[t[e+348>>2]&127](e,A)|0)){t[a>>2]=A;f=0;break e}else f=4;break}case 16:{f=A+1|0;if((k-f|0)<=0){f=-1;break e}switch(i[w+(n[f>>0]|0)>>0]|0){case 27:{f=FK(e,A+2|0,r,a)|0;break e}case 20:{f=MK(A+2|0,r,a)|0;break e}default:{t[a>>2]=f;f=0;break e}}}case 15:{f=VK(e,A+1|0,r,a)|0;break e}case 17:{f=NK(e,A+1|0,r,a)|0;break e}default:{t[a>>2]=A;f=0;break e}}s=e+328|0;c=e+332|0;o=e+336|0;u=e+340|0;b=e+344|0;h=e+348|0;l=0;f=A+f|0;A:while(1){A=k-f|0;if((A|0)<=0){f=-1;break e}r:do{switch(i[w+(n[f>>0]|0)>>0]|0){case 29:{d=24;break A}case 10:case 9:case 21:{d=50;break A}case 11:{d=64;break A}case 17:break A;case 27:case 26:case 25:case 24:case 22:{A=1;break}case 5:{if((A|0)<2){f=-2;break e}if(!(Z5[t[s>>2]&127](e,f)|0)){d=27;break A}else A=2;break}case 6:{if((A|0)<3){f=-2;break e}if(!(Z5[t[c>>2]&127](e,f)|0)){d=30;break A}else A=3;break}case 7:{if((A|0)<4){f=-2;break e}if(!(Z5[t[o>>2]&127](e,f)|0)){d=33;break A}else A=4;break}case 23:{if(l|0){d=35;break A}l=f+1|0;A=k-l|0;if((A|0)<=0){f=-1;break e}switch(i[w+(n[l>>0]|0)>>0]|0){case 29:{d=38;break A}case 24:case 22:{l=1;A=2;break r}case 5:{if((A|0)<2){f=-2;break e}if(!(Z5[t[u>>2]&127](e,l)|0)){d=42;break A}else{l=1;A=3;break r}}case 6:{if((A|0)<3){f=-2;break e}if(!(Z5[t[b>>2]&127](e,l)|0)){d=45;break A}else{l=1;A=4;break r}}case 7:{if((A|0)<4){f=-2;break e}if(!(Z5[t[h>>2]&127](e,l)|0)){d=48;break A}else{l=1;A=5;break r}}default:{d=49;break A}}}default:{d=69;break A}}}while(0);f=f+A|0}A:switch(d|0){case 24:{t[a>>2]=f;f=0;break e}case 27:{t[a>>2]=f;f=0;break e}case 30:{t[a>>2]=f;f=0;break e}case 33:{t[a>>2]=f;f=0;break e}case 35:{t[a>>2]=f;f=0;break e}case 38:{t[a>>2]=l;f=0;break e}case 42:{t[a>>2]=l;f=0;break e}case 45:{t[a>>2]=l;f=0;break e}case 48:{t[a>>2]=l;f=0;break e}case 49:{t[a>>2]=l;f=0;break e}case 50:{r:while(1){d=0;l=f+1|0;A=k-l|0;if((A|0)<=0){f=-1;break e}switch(i[w+(n[l>>0]|0)>>0]|0){case 11:{f=l;d=64;break A}case 17:{f=l;break A}case 10:case 9:case 21:{f=l;d=50;break}case 29:{d=52;break r}case 24:case 22:{l=2;break r}case 5:{d=53;break r}case 6:{d=56;break r}case 7:{d=59;break r}default:{d=62;break r}}}if((d|0)==52){t[a>>2]=l;f=0;break e}else if((d|0)==53){if((A|0)<2){f=-2;break e}if(!(Z5[t[u>>2]&127](e,l)|0)){t[a>>2]=l;f=0;break e}else l=3}else if((d|0)==56){if((A|0)<3){f=-2;break e}if(!(Z5[t[b>>2]&127](e,l)|0)){t[a>>2]=l;f=0;break e}else l=4}else if((d|0)==59){if((A|0)<4){f=-2;break e}if(!(Z5[t[h>>2]&127](e,l)|0)){t[a>>2]=l;f=0;break e}else l=5}else if((d|0)==62){t[a>>2]=l;f=0;break e}f=RK(e,f+l|0,r,a)|0;break e}case 69:{t[a>>2]=f;f=0;break e}}if((d|0)==64){t[a>>2]=f+1;f=2;break}l=f+1|0;if((k-l|0)>0)if((i[l>>0]|0)==62){t[a>>2]=f+2;f=4;break}else{t[a>>2]=l;f=0;break}else f=-1}else f=-1}while(0);return f|0}function FK(e,A,r,a){e=e|0;A=A|0;r=r|0;a=a|0;var f=0,l=0,s=0,c=0,o=0;e:do{if((r-A|0)>0){if((i[A>>0]|0)!=45){t[a>>2]=A;r=0;break}f=e+72|0;l=e+352|0;s=e+356|0;c=e+360|0;o=A+1|0;A:while(1){A=r-o|0;if((A|0)<=0){r=-1;break e}switch(i[f+(n[o>>0]|0)>>0]|0){case 8:case 1:case 0:{A=19;break A}case 5:{if((A|0)<2){r=-2;break e}if(Z5[t[l>>2]&127](e,o)|0){A=9;break A}o=o+2|0;continue A}case 6:{if((A|0)<3){r=-2;break e}if(Z5[t[s>>2]&127](e,o)|0){A=13;break A}o=o+3|0;continue A}case 7:{if((A|0)<4){r=-2;break e}if(Z5[t[c>>2]&127](e,o)|0){A=17;break A}o=o+4|0;continue A}case 27:{A=o+1|0;if((r-A|0)<=0){r=-1;break e}if((i[A>>0]|0)==45){A=22;break A}else{o=A;continue A}}default:{o=o+1|0;continue A}}}if((A|0)==9){t[a>>2]=o;r=0;break}else if((A|0)==13){t[a>>2]=o;r=0;break}else if((A|0)==17){t[a>>2]=o;r=0;break}else if((A|0)==19){t[a>>2]=o;r=0;break}else if((A|0)==22){A=o+2|0;if((r-A|0)<=0){r=-1;break}if((i[A>>0]|0)==62){t[a>>2]=o+3;r=13;break}else{t[a>>2]=A;r=0;break}}}else r=-1}while(0);return r|0}function MK(e,A,r){e=e|0;A=A|0;r=r|0;if((A-e|0)>5){A=0;while(1){if((A|0)>=6){A=8;break}if((i[e>>0]|0)!=(i[144300+A>>0]|0)){A=0;break}A=A+1|0;e=e+1|0}t[r>>2]=e}else A=-1;return A|0}function VK(e,A,r,a){e=e|0;A=A|0;r=r|0;a=a|0;var f=0,l=0,s=0,c=0,o=0,u=0,b=0,w=0,k=0;k=h;h=h+16|0;w=k;b=r;r=b-A|0;e:do{if((r|0)>0){u=e+72|0;switch(i[u+(n[A>>0]|0)>>0]|0){case 29:{t[a>>2]=A;r=0;break e}case 24:case 22:{r=1;break}case 5:{if((r|0)<2){r=-2;break e}if(!(Z5[t[e+340>>2]&127](e,A)|0)){t[a>>2]=A;r=0;break e}else r=2;break}case 6:{if((r|0)<3){r=-2;break e}if(!(Z5[t[e+344>>2]&127](e,A)|0)){t[a>>2]=A;r=0;break e}else r=3;break}case 7:{if((r|0)<4){r=-2;break e}if(!(Z5[t[e+348>>2]&127](e,A)|0)){t[a>>2]=A;r=0;break e}else r=4;break}default:{t[a>>2]=A;r=0;break e}}l=e+328|0;s=e+332|0;c=e+336|0;r=A+r|0;A:while(1){f=b-r|0;if((f|0)<=0){r=-1;break e}switch(i[u+(n[r>>0]|0)>>0]|0){case 29:{o=17;break A}case 10:case 9:case 21:{o=28;break A}case 15:{o=50;break A}case 27:case 26:case 25:case 24:case 22:{f=1;break}case 5:{if((f|0)<2){r=-2;break e}if(!(Z5[t[l>>2]&127](e,r)|0)){o=20;break A}else f=2;break}case 6:{if((f|0)<3){r=-2;break e}if(!(Z5[t[s>>2]&127](e,r)|0)){o=23;break A}else f=3;break}case 7:{if((f|0)<4){r=-2;break e}if(!(Z5[t[c>>2]&127](e,r)|0)){o=26;break A}else f=4;break}default:break A}r=r+f|0}if((o|0)==17){t[a>>2]=r;r=0;break}else if((o|0)==20){t[a>>2]=r;r=0;break}else if((o|0)==23){t[a>>2]=r;r=0;break}else if((o|0)==26){t[a>>2]=r;r=0;break}else if((o|0)==28){if(!(xK(A,r,w)|0)){t[a>>2]=r;r=0;break}l=e+352|0;s=e+356|0;c=e+360|0;f=r+1|0;A:while(1){r=b-f|0;if((r|0)<=0){r=-1;break e}switch(i[u+(n[f>>0]|0)>>0]|0){case 8:case 1:case 0:{o=45;break A}case 5:{if((r|0)<2){r=-2;break e}if(Z5[t[l>>2]&127](e,f)|0){o=35;break A}f=f+2|0;continue A}case 6:{if((r|0)<3){r=-2;break e}if(Z5[t[s>>2]&127](e,f)|0){o=39;break A}f=f+3|0;continue A}case 7:{if((r|0)<4){r=-2;break e}if(Z5[t[c>>2]&127](e,f)|0){o=43;break A}f=f+4|0;continue A}case 15:{r=f+1|0;if((b-r|0)<=0){r=-1;break e}if((i[r>>0]|0)==62){o=48;break A}else{f=r;continue A}}default:{f=f+1|0;continue A}}}if((o|0)==35){t[a>>2]=f;r=0;break}else if((o|0)==39){t[a>>2]=f;r=0;break}else if((o|0)==43){t[a>>2]=f;r=0;break}else if((o|0)==45){t[a>>2]=f;r=0;break}else if((o|0)==48){t[a>>2]=f+2;r=t[w>>2]|0;break}}else if((o|0)==50){if(!(xK(A,r,w)|0)){t[a>>2]=r;r=0;break}f=r+1|0;if((b-f|0)<=0){r=-1;break}if((i[f>>0]|0)==62){t[a>>2]=r+2;r=t[w>>2]|0;break}else r=f}t[a>>2]=r;r=0}else r=-1}while(0);h=k;return r|0}function NK(e,A,r,a){e=e|0;A=A|0;r=r|0;a=a|0;var f=0,l=0,s=0,c=0,o=0;f=r-A|0;e:do{if((f|0)>0){o=e+72|0;switch(i[o+(n[A>>0]|0)>>0]|0){case 29:{t[a>>2]=A;r=0;break e}case 24:case 22:{f=1;break}case 5:{if((f|0)<2){r=-2;break e}if(!(Z5[t[e+340>>2]&127](e,A)|0)){t[a>>2]=A;r=0;break e}else f=2;break}case 6:{if((f|0)<3){r=-2;break e}if(!(Z5[t[e+344>>2]&127](e,A)|0)){t[a>>2]=A;r=0;break e}else f=3;break}case 7:{if((f|0)<4){r=-2;break e}if(!(Z5[t[e+348>>2]&127](e,A)|0)){t[a>>2]=A;r=0;break e}else f=4;break}default:{t[a>>2]=A;r=0;break e}}l=e+328|0;s=e+332|0;c=e+336|0;f=A+f|0;A:while(1){A=r-f|0;if((A|0)<=0){r=-1;break e}switch(i[o+(n[f>>0]|0)>>0]|0){case 29:{l=17;break A}case 10:case 9:case 21:{l=27;break A}case 11:{l=32;break A}case 23:case 27:case 26:case 25:case 24:case 22:{A=1;break}case 5:{if((A|0)<2){r=-2;break e}if(!(Z5[t[l>>2]&127](e,f)|0)){l=20;break A}else A=2;break}case 6:{if((A|0)<3){r=-2;break e}if(!(Z5[t[s>>2]&127](e,f)|0)){l=23;break A}else A=3;break}case 7:{if((A|0)<4){r=-2;break e}if(!(Z5[t[c>>2]&127](e,f)|0)){l=26;break A}else A=4;break}default:{l=33;break A}}f=f+A|0}if((l|0)==17){t[a>>2]=f;r=0;break}else if((l|0)==20){t[a>>2]=f;r=0;break}else if((l|0)==23){t[a>>2]=f;r=0;break}else if((l|0)==26){t[a>>2]=f;r=0;break}else if((l|0)==27){A:while(1){A=f+1|0;if((r-A|0)<=0){r=-1;break e}switch(i[o+(n[A>>0]|0)>>0]|0){case 10:case 9:case 21:{f=A;l=27;break}case 11:{l=29;break A}default:{l=30;break A}}}if((l|0)==29){t[a>>2]=f+2;r=5;break}else if((l|0)==30){t[a>>2]=A;r=0;break}}else if((l|0)==32){t[a>>2]=f+1;r=5;break}else if((l|0)==33){t[a>>2]=f;r=0;break}}else r=-1}while(0);return r|0}function RK(e,A,r,a){e=e|0;A=A|0;r=r|0;a=a|0;var f=0,l=0,s=0,c=0,o=0,u=0,b=0,w=0,k=0,d=0,v=0,g=0,m=0,p=0,E=0,B=0,y=0;y=h;h=h+16|0;p=y;t[p>>2]=A;E=r;d=e+72|0;v=e+328|0;g=e+332|0;m=e+336|0;c=e+340|0;o=e+344|0;u=e+348|0;b=e+352|0;w=e+356|0;k=e+360|0;l=0;e:while(1){f=E-A|0;if((f|0)<=0){A=-1;break}A:do{switch(i[d+(n[A>>0]|0)>>0]|0){case 29:{B=4;break e}case 27:case 26:case 25:case 24:case 22:{f=A+1|0;t[p>>2]=f;s=l;A=f;l=s;continue e}case 5:{if((f|0)<2){A=-2;break e}if(!(Z5[t[v>>2]&127](e,A)|0)){B=8;break e}f=A+2|0;t[p>>2]=f;s=l;A=f;l=s;continue e}case 6:{if((f|0)<3){A=-2;break e}if(!(Z5[t[g>>2]&127](e,A)|0)){B=12;break e}f=A+3|0;t[p>>2]=f;s=l;A=f;l=s;continue e}case 7:{if((f|0)<4){A=-2;break e}if(!(Z5[t[m>>2]&127](e,A)|0)){B=16;break e}f=A+4|0;t[p>>2]=f;s=l;A=f;l=s;continue e}case 23:{if(l|0){B=19;break e}f=A+1|0;t[p>>2]=f;l=E-f|0;if((l|0)<=0){A=-1;break e}switch(i[d+(n[f>>0]|0)>>0]|0){case 29:{B=22;break e}case 24:case 22:{s=A+2|0;t[p>>2]=s;l=1;A=s;continue e}case 5:{if((l|0)<2){A=-2;break e}if(!(Z5[t[c>>2]&127](e,f)|0)){B=26;break e}s=A+3|0;t[p>>2]=s;l=1;A=s;continue e}case 6:{if((l|0)<3){A=-2;break e}if(!(Z5[t[o>>2]&127](e,f)|0)){B=30;break e}s=A+4|0;t[p>>2]=s;l=1;A=s;continue e}case 7:{if((l|0)<4){A=-2;break e}if(!(Z5[t[u>>2]&127](e,f)|0)){B=34;break e}s=A+5|0;t[p>>2]=s;l=1;A=s;continue e}default:{B=36;break e}}}case 10:case 9:case 21:while(1){A=A+1|0;t[p>>2]=A;if((E-A|0)<=0){A=-1;break e}switch(i[d+(n[A>>0]|0)>>0]|0){case 14:break A;case 9:case 10:case 21:break;default:{B=39;break e}}}case 14:break;default:{B=92;break e}}}while(0);while(1){f=A+1|0;t[p>>2]=f;if((E-f|0)<=0){A=-1;break e}s=i[d+(n[f>>0]|0)>>0]|0;if((s|1)<<24>>24==13)break;switch(s<<24>>24){case 9:case 10:case 21:{A=f;break}default:{B=43;break e}}}A=A+2|0;t[p>>2]=A;A:while(1){f=E-A|0;if((f|0)<=0){A=-1;break e}l=i[d+(n[A>>0]|0)>>0]|0;if(l<<24>>24==s<<24>>24)break;switch(l<<24>>24){case 8:case 1:case 0:{B=60;break e}case 2:{B=65;break e}case 5:{if((f|0)<2){A=-2;break e}if(Z5[t[b>>2]&127](e,A)|0){B=50;break e}l=A+2|0;t[p>>2]=l;A=l;continue A}case 6:{if((f|0)<3){A=-2;break e}if(Z5[t[w>>2]&127](e,A)|0){B=54;break e}l=A+3|0;t[p>>2]=l;A=l;continue A}case 7:{if((f|0)<4){A=-2;break e}if(Z5[t[k>>2]&127](e,A)|0){B=58;break e}l=A+4|0;t[p>>2]=l;A=l;continue A}case 3:{A=QK(e,A+1|0,r,p)|0;if((A|0)<1){B=63;break e}A=t[p>>2]|0;continue A}default:{l=A+1|0;t[p>>2]=l;A=l;continue A}}}f=A+1|0;t[p>>2]=f;if((E-f|0)<=0){A=-1;break}switch(i[d+(n[f>>0]|0)>>0]|0){case 11:{B=86;break e}case 17:{B=87;break e}case 10:case 9:case 21:{A=f;break}default:{B=69;break e}}A:while(1){f=A+1|0;t[p>>2]=f;l=E-f|0;if((l|0)<=0){A=-1;break e}switch(i[d+(n[f>>0]|0)>>0]|0){case 29:{B=72;break e}case 11:{B=86;break e}case 17:{B=87;break e}case 10:case 9:case 21:{A=f;break}case 24:case 22:{B=73;break A}case 5:{B=74;break A}case 6:{B=78;break A}case 7:{B=82;break A}default:{B=91;break e}}}if((B|0)==73){B=0;A=A+2|0;t[p>>2]=A;l=0;continue}else if((B|0)==74){B=0;if((l|0)<2){A=-2;break}if(!(Z5[t[c>>2]&127](e,f)|0)){B=76;break}A=A+3|0;t[p>>2]=A;l=0;continue}else if((B|0)==78){B=0;if((l|0)<3){A=-2;break}if(!(Z5[t[o>>2]&127](e,f)|0)){B=80;break}A=A+4|0;t[p>>2]=A;l=0;continue}else if((B|0)==82){B=0;if((l|0)<4){A=-2;break}if(!(Z5[t[u>>2]&127](e,f)|0)){B=84;break}A=A+5|0;t[p>>2]=A;l=0;continue}}switch(B|0){case 4:{t[a>>2]=A;A=0;break}case 8:{t[a>>2]=A;A=0;break}case 12:{t[a>>2]=A;A=0;break}case 16:{t[a>>2]=A;A=0;break}case 19:{t[a>>2]=A;A=0;break}case 22:{t[a>>2]=f;A=0;break}case 26:{t[a>>2]=f;A=0;break}case 30:{t[a>>2]=f;A=0;break}case 34:{t[a>>2]=f;A=0;break}case 36:{t[a>>2]=f;A=0;break}case 39:{t[a>>2]=A;A=0;break}case 43:{t[a>>2]=f;A=0;break}case 50:{t[a>>2]=A;A=0;break}case 54:{t[a>>2]=A;A=0;break}case 58:{t[a>>2]=A;A=0;break}case 60:{t[a>>2]=A;A=0;break}case 63:{if(!A){t[a>>2]=t[p>>2];A=0}break}case 65:{t[a>>2]=A;A=0;break}case 69:{t[a>>2]=f;A=0;break}case 72:{t[a>>2]=f;A=0;break}case 76:{t[a>>2]=f;A=0;break}case 80:{t[a>>2]=f;A=0;break}case 84:{t[a>>2]=f;A=0;break}case 86:{t[a>>2]=A+2;A=1;break}case 87:{A=f+1|0;t[p>>2]=A;if((E-A|0)>0)if((i[A>>0]|0)==62){t[a>>2]=f+2;A=3;break}else{t[a>>2]=A;A=0;break}else A=-1;break}case 91:{t[a>>2]=f;A=0;break}case 92:{t[a>>2]=A;A=0;break}}h=y;return A|0}function xK(e,A,r){e=e|0;A=A|0;r=r|0;t[r>>2]=11;e:do{if((A-e|0)==3){switch(i[e>>0]|0){case 120:{A=0;break}case 88:{A=1;break}default:{A=1;break e}}switch(i[e+1>>0]|0){case 109:break;case 77:{A=1;break}default:{A=1;break e}}switch(i[e+2>>0]|0){case 108:break;case 76:{A=0;break e}default:{A=1;break e}}if(!A){t[r>>2]=12;A=1}else A=0}else A=1}while(0);return A|0}function JK(e,A,r,a,f){e=e|0;A=A|0;r=r|0;a=a|0;f=f|0;var l=0,s=0,c=0,o=0,u=0,b=0,h=0;c=A+72|0;o=A+352|0;u=A+356|0;b=A+360|0;e:while(1){l=a-r|0;if((l|0)<=0){a=-1;break}s=i[c+(n[r>>0]|0)>>0]|0;switch(s<<24>>24){case 8:case 1:case 0:{h=16;break e}case 5:{if((l|0)<2){a=-2;break e}if(Z5[t[o>>2]&127](A,r)|0){h=6;break e}r=r+2|0;continue e}case 6:{if((l|0)<3){a=-2;break e}if(Z5[t[u>>2]&127](A,r)|0){h=10;break e}r=r+3|0;continue e}case 7:{if((l|0)<4){a=-2;break e}if(Z5[t[b>>2]&127](A,r)|0){h=14;break e}r=r+4|0;continue e}case 13:case 12:{r=r+1|0;if((s&255|0)==(e|0)){h=18;break e}else continue e}default:{r=r+1|0;continue e}}}e:do{if((h|0)==6){t[f>>2]=r;a=0}else if((h|0)==10){t[f>>2]=r;a=0}else if((h|0)==14){t[f>>2]=r;a=0}else if((h|0)==16){t[f>>2]=r;a=0}else if((h|0)==18)if((a-r|0)>0){t[f>>2]=r;switch(i[c+(n[r>>0]|0)>>0]|0){case 20:case 30:case 11:case 10:case 9:case 21:{a=27;break e}default:{}}a=0}else a=-27}while(0);return a|0}function HK(e,A,r,a){e=e|0;A=A|0;r=r|0;a=a|0;var f=0,l=0,s=0;f=r;e:do{if((f-A|0)>0){l=e+72|0;switch(i[l+(n[A>>0]|0)>>0]|0){case 27:{e=FK(e,A+1|0,r,a)|0;break e}case 20:{t[a>>2]=A+1;e=33;break e}case 24:case 22:{A:while(1){e=A+1|0;r=f-e|0;if((r|0)<=0){e=-1;break e}switch(i[l+(n[e>>0]|0)>>0]|0){case 24:case 22:{A=e;break}case 30:{s=8;break A}case 10:case 9:case 21:break A;default:{s=12;break A}}}if((s|0)==12){t[a>>2]=e;e=0;break e}A:do{if((s|0)==8){if((r|0)<=1){e=-1;break e}switch(i[l+(n[A+2>>0]|0)>>0]|0){case 30:case 10:case 9:case 21:break;default:break A}t[a>>2]=e;e=0;break e}}while(0);t[a>>2]=e;e=16;break e}default:{t[a>>2]=A;e=0;break e}}}else e=-1}while(0);return e|0}function PK(e,A,r,a){e=e|0;A=A|0;r=r|0;a=a|0;var f=0,l=0,s=0,c=0,o=0;f=r-A|0;e:do{if((f|0)>0){o=e+72|0;switch(i[o+(n[A>>0]|0)>>0]|0){case 29:{t[a>>2]=A;r=0;break e}case 24:case 22:{f=1;break}case 5:{if((f|0)<2){r=-2;break e}if(!(Z5[t[e+340>>2]&127](e,A)|0)){t[a>>2]=A;r=0;break e}else f=2;break}case 6:{if((f|0)<3){r=-2;break e}if(!(Z5[t[e+344>>2]&127](e,A)|0)){t[a>>2]=A;r=0;break e}else f=3;break}case 7:{if((f|0)<4){r=-2;break e}if(!(Z5[t[e+348>>2]&127](e,A)|0)){t[a>>2]=A;r=0;break e}else f=4;break}default:{t[a>>2]=A;r=0;break e}}l=e+328|0;s=e+332|0;c=e+336|0;A=A+f|0;A:while(1){f=r-A|0;if((f|0)<=0){r=-20;break e}switch(i[o+(n[A>>0]|0)>>0]|0){case 29:{f=17;break A}case 36:case 30:case 11:case 32:case 21:case 10:case 9:{f=28;break A}case 27:case 26:case 25:case 24:case 22:{f=1;break}case 5:{if((f|0)<2){r=-2;break e}if(!(Z5[t[l>>2]&127](e,A)|0)){f=20;break A}else f=2;break}case 6:{if((f|0)<3){r=-2;break e}if(!(Z5[t[s>>2]&127](e,A)|0)){f=23;break A}else f=3;break}case 7:{if((f|0)<4){r=-2;break e}if(!(Z5[t[c>>2]&127](e,A)|0)){f=26;break A}else f=4;break}default:{f=29;break A}}A=A+f|0}if((f|0)==17){t[a>>2]=A;r=0;break}else if((f|0)==20){t[a>>2]=A;r=0;break}else if((f|0)==23){t[a>>2]=A;r=0;break}else if((f|0)==26){t[a>>2]=A;r=0;break}else if((f|0)==28){t[a>>2]=A;r=20;break}else if((f|0)==29){t[a>>2]=A;r=0;break}}else r=-1}while(0);return r|0}function XK(){return 58220}function SK(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;var n=0,f=0,l=0;l=h;h=h+16|0;n=l;t[n>>2]=r;f=t[A>>2]|0;e=a-(t[i>>2]|0)|0;if((r-f|0)>(e|0)){e=f+e|0;t[n>>2]=e;a=1}else{a=0;e=r}ko(f,n);f=t[n>>2]|0;r=t[A>>2]|0;n=f-r|0;Q6(t[i>>2]|0,r|0,n|0)|0;t[A>>2]=(t[A>>2]|0)+n;t[i>>2]=(t[i>>2]|0)+n;h=l;return(a?2:f>>>0>>0&1)|0}function jK(e,A,r,n,f){e=e|0;A=A|0;r=r|0;n=n|0;f=f|0;var l=0,s=0,c=0,o=0,u=0,b=0,h=0;s=e+72|0;c=r;o=f;u=t[A>>2]|0;b=t[n>>2]|0;e:while(1){e=u>>>0>>0;if(!(b>>>0>>0&e)){h=12;break}e=i[u>>0]|0;l=e&255;switch(i[s+l>>0]|0){case 5:{if((c-u|0)<2){e=1;break e}a[b>>1]=(e&31)<<6|i[u+1>>0]&63;u=u+2|0;b=b+2|0;continue e}case 6:{if((c-u|0)<3){e=1;break e}a[b>>1]=(i[u+1>>0]&63)<<6|l<<12|i[u+2>>0]&63;u=u+3|0;b=b+2|0;continue e}case 7:{if((o-b|0)<4){e=2;break e}if((c-u|0)<4){e=1;break e}l=((i[u+1>>0]&63)<<12|(e&7)<<18|(i[u+2>>0]&63)<<6|i[u+3>>0]&63)+-65536|0;a[b>>1]=l>>>10|55296;a[b+2>>1]=l&1023|56320;u=u+4|0;b=b+4|0;continue e}default:{a[b>>1]=e<<24>>24;u=u+1|0;b=b+2|0;continue e}}}if((h|0)==12)e=e?2:0;t[A>>2]=u;t[n>>2]=b;return e|0}function UK(e,A){e=e|0;A=A|0;e=n[A>>0]|0;A=n[A+1>>0]|0;return 1<<(A&31)&t[56940+(((n[144044+(e>>>2&7)>>0]|0)<<3|e<<1&6|A>>>5&1)<<2)>>2]|0}function TK(e,A){e=e|0;A=A|0;var r=0;r=n[A+1>>0]|0;e=n[A+2>>0]|0;return 1<<(e&31)&t[56940+(((n[144044+(r>>>2&15|i[A>>0]<<4&255)>>0]|0)<<3|r<<1&6|e>>>5&1)<<2)>>2]|0}function OK(e,A){e=e|0;A=A|0;return 0}function _K(e,A){e=e|0;A=A|0;e=n[A>>0]|0;A=n[A+1>>0]|0;return 1<<(A&31)&t[56940+(((n[143788+(e>>>2&7)>>0]|0)<<3|e<<1&6|A>>>5&1)<<2)>>2]|0}function qK(e,A){e=e|0;A=A|0;var r=0;r=n[A+1>>0]|0;e=n[A+2>>0]|0;return 1<<(e&31)&t[56940+(((n[143788+(r>>>2&15|i[A>>0]<<4&255)>>0]|0)<<3|r<<1&6|e>>>5&1)<<2)>>2]|0}function KK(e,A){e=e|0;A=A|0;if((n[A>>0]|0)<194)return 1;else{A=n[A+1>>0]|0;return A>>>7^1|(A&192|0)==192|0}return 0}function $K(e,A){e=e|0;A=A|0;var r=0;e=i[A+2>>0]|0;do{if(e<<24>>24>-1)e=1;else{r=i[A>>0]|0;if(r<<24>>24==-17?(i[A+1>>0]|0)==-65:0)if((e&255)>189){e=1;break}else{e=191;A=-65}else{if((e&255)>191){e=1;break}A=i[A+1>>0]|0;e=A&255;if(r<<24>>24==-32){e=(A&255)<160|(e&192|0)==192;break}}e=(e&128|0)==0?1:r<<24>>24==-19?(A&255)>159:(e&192|0)==192}}while(0);return e&1|0}function e$(e,A){e=e|0;A=A|0;var r=0;r=n[A+3>>0]|0;do{if(!((r&128|0)==0|(r&192|0)==192)?(r=n[A+2>>0]|0,!((r&128|0)==0|(r&192|0)==192)):0){r=i[A>>0]|0;e=i[A+1>>0]|0;A=e&255;if(r<<24>>24==-16){e=(e&255)<144|(A&192|0)==192;break}else{e=(A&128|0)==0?1:r<<24>>24==-12?(e&255)>143:(A&192|0)==192;break}}else e=1}while(0);return e&1|0}function A$(e,A,r,a){e=e|0;A=A|0;r=r|0;a=a|0;var f=0,l=0,s=0,c=0,o=0,u=0;e:do{if(A>>>0>>0){l=A;u=r-l|0;c=(u&1|0)==0;u=u&-2;o=(u|0)==0;u=c|o?r:A+u|0;if(c|o^1){r=i[A+1>>0]|0;if(!(r<<24>>24)){f=i[A>>0]|0;s=f;f=n[e+72+(f&255)>>0]|0}else{f=i[A>>0]|0;s=f;f=d$(r,f)|0}do{switch(f|0){case 12:{r=L$(12,e,A+2|0,u,a)|0;break e}case 13:{r=L$(13,e,A+2|0,u,a)|0;break e}case 2:{f=A+2|0;if((u-f|0)<=1){r=-1;break e}r=i[A+3>>0]|0;if(!(r<<24>>24))r=n[e+72+(n[f>>0]|0)>>0]|0;else r=d$(r,i[f>>0]|0)|0;switch(r|0){case 16:{r=Q$(e,A+4|0,u,a)|0;break e}case 15:{r=C$(e,A+4|0,u,a)|0;break e}case 7:case 6:case 5:case 29:case 24:case 22:{t[a>>2]=A;r=29;break e}default:{t[a>>2]=f;r=0;break e}}}case 9:{if((A+2|0)==(u|0)){t[a>>2]=u;r=-15;break e}else l=7;break}case 10:case 21:{l=7;break}case 30:{r=g$(e,A+2|0,u,a)|0;break e}case 35:{t[a>>2]=A+2;r=38;break e}case 20:{t[a>>2]=A+2;r=25;break e}case 4:{f=A+2|0;r=u-f|0;if((r|0)<=1){r=-26;break e}if((i[A+3>>0]|0)==0?(i[f>>0]|0)==93:0){if((r|0)<=3){r=-1;break e}if((i[A+5>>0]|0)==0?(i[A+4>>0]|0)==62:0){t[a>>2]=A+6;r=34;break e}}t[a>>2]=f;r=26;break e}case 31:{t[a>>2]=A+2;r=23;break e}case 32:{f=A+2|0;if((u-f|0)<=1){r=-24;break e}r=i[A+3>>0]|0;if(!(r<<24>>24))r=n[e+72+(n[f>>0]|0)>>0]|0;else r=d$(r,i[f>>0]|0)|0;switch(r|0){case 33:{t[a>>2]=A+4;r=36;break e}case 15:{t[a>>2]=A+4;r=35;break e}case 34:{t[a>>2]=A+4;r=37;break e}case 32:case 36:case 35:case 11:case 21:case 10:case 9:{t[a>>2]=f;r=24;break e}default:{t[a>>2]=f;r=0;break e}}}case 36:{t[a>>2]=A+2;r=21;break e}case 11:{t[a>>2]=A+2;r=17;break e}case 19:{r=D$(e,A+2|0,u,a)|0;break e}case 5:{if((u-l|0)<2){r=-2;break e}t[a>>2]=A;r=0;break e}case 6:{if((u-l|0)<3){r=-2;break e}t[a>>2]=A;r=0;break e}case 7:{if((u-l|0)<4){r=-2;break e}t[a>>2]=A;r=0;break e}case 24:case 22:{r=18;l=61;break}case 23:case 27:case 26:case 25:{r=19;l=61;break}case 29:{l=r&255;f=s&255;r=f>>>5;f=1<<(f&31);if(!(f&t[56940+((r|n[143788+l>>0]<<3)<<2)>>2]))if(!(t[56940+((n[144044+l>>0]<<3|r)<<2)>>2]&f))l=64;else{r=19;l=61}else{r=18;l=61}break}default:l=64}}while(0);if((l|0)==7){c=u;e=e+72|0;s=A;A:while(1){l=s;s=s+2|0;if((c-s|0)<=1){l=28;break}r=i[l+3>>0]|0;f=i[s>>0]|0;if(!(r<<24>>24))r=n[e+(f&255)>>0]|0;else r=d$(r,f)|0;switch(r|0){case 10:case 21:continue A;case 9:break;default:{l=27;break A}}if((l+4|0)==(u|0)){l=27;break}}if((l|0)==27){t[a>>2]=s;r=15;break}else if((l|0)==28){t[a>>2]=s;r=15;break}}else if((l|0)==61){o=e+72|0;f=A+2|0;A:while(1){A=r&255;r:while(1){c=u-f|0;if((c|0)<=1){l=104;break A}l=i[f+1>>0]|0;s=i[f>>0]|0;if(!(l<<24>>24))e=n[o+(s&255)>>0]|0;else e=d$(l,s)|0;switch(e|0){case 5:{l=73;break A}case 6:{l=74;break A}case 7:{l=76;break A}case 10:case 9:case 21:case 30:case 20:case 36:case 35:case 32:case 11:{l=78;break A}case 34:{l=94;break A}case 33:{l=97;break A}case 15:{l=100;break A}case 29:{c=s&255;if(!(1<<(c&31)&t[56940+((c>>>5|n[144044+(l&255)>>0]<<3)<<2)>>2])){l=71;break A}break}case 27:case 26:case 25:case 24:case 22:break;case 23:{c=f+2|0;switch(A&63){case 41:{r=19;f=c;continue A}case 18:break r;default:{f=c;continue r}}}default:{l=103;break A}}f=f+2|0}e=u-c|0;if((e|0)<=1){r=-1;break e}r=i[f+3>>0]|0;l=i[c>>0]|0;if(!(r<<24>>24))s=n[o+(l&255)>>0]|0;else s=d$(r,l)|0;switch(s|0){case 5:{l=89;break A}case 6:{l=90;break A}case 7:{l=92;break A}case 29:{A=l&255;if(!(1<<(A&31)&t[56940+((A>>>5|n[144044+(r&255)>>0]<<3)<<2)>>2])){l=87;break A}break}case 27:case 26:case 25:case 24:case 22:break;default:{r=19;f=c;continue A}}r=41;f=f+4|0}switch(l|0){case 71:{t[a>>2]=f;r=0;break e}case 73:{t[a>>2]=f;r=0;break e}case 74:{if((c|0)<3){r=-2;break e}t[a>>2]=f;r=0;break e}case 76:{if((c|0)<4){r=-2;break e}t[a>>2]=f;r=0;break e}case 78:{t[a>>2]=f;break e}case 87:{t[a>>2]=c;r=0;break e}case 89:{t[a>>2]=c;r=0;break e}case 90:{if((e|0)<3){r=-2;break e}t[a>>2]=c;r=0;break e}case 92:{if((e|0)<4){r=-2;break e}t[a>>2]=c;r=0;break e}case 94:if((r|0)==19){t[a>>2]=f;r=0;break e}else{t[a>>2]=f+2;r=32;break e}case 97:if((r|0)==19){t[a>>2]=f;r=0;break e}else{t[a>>2]=f+2;r=31;break e}case 100:if((r|0)==19){t[a>>2]=f;r=0;break e}else{t[a>>2]=f+2;r=30;break e}case 103:{t[a>>2]=f;r=0;break e}case 104:{r=0-r|0;break e}}}else if((l|0)==64){t[a>>2]=A;r=0;break}}else r=-1}else r=-4}while(0);return r|0}function r$(e,A,r,a){e=e|0;A=A|0;r=r|0;a=a|0;var f=0,l=0,s=0,c=0;e:do{if(A>>>0>>0){f=A;l=r-f|0;c=(l&1|0)==0;l=l&-2;s=(l|0)==0;l=c|s?r:A+l|0;if(c|s^1){r=i[A+1>>0]|0;if(!(r<<24>>24))r=n[e+72+(n[A>>0]|0)>>0]|0;else r=d$(r,i[A>>0]|0)|0;do{switch(r|0){case 2:{r=E$(e,A+2|0,l,a)|0;break e}case 3:{r=v$(e,A+2|0,l,a)|0;break e}case 9:{f=A+2|0;if((l-f|0)<=1){r=-3;break e}r=i[A+3>>0]|0;if(!(r<<24>>24))r=n[e+72+(n[f>>0]|0)>>0]|0;else r=d$(r,i[f>>0]|0)|0;t[a>>2]=(r|0)==10?A+4|0:f;r=7;break e}case 10:{t[a>>2]=A+2;r=7;break e}case 4:{f=A+2|0;if((l-f|0)<=1){r=-5;break e}if((i[A+3>>0]|0)==0?(i[f>>0]|0)==93:0){r=A+4|0;if((l-r|0)<=1){r=-5;break e}if((i[A+5>>0]|0)==0?(i[r>>0]|0)==62:0){t[a>>2]=r;r=0;break e}else r=l}else r=l;break}case 5:{r=l;if((r-f|0)<2){r=-2;break e}f=A+2|0;break}case 6:{r=l;if((r-f|0)<3){r=-2;break e}f=A+3|0;break}case 7:{r=l;if((r-f|0)<4){r=-2;break e}f=A+4|0;break}case 8:case 1:case 0:{t[a>>2]=A;r=0;break e}default:{f=A+2|0;r=l}}}while(0);s=e+72|0;e=f;A:while(1){A=r-e|0;if((A|0)<=1){f=52;break}f=i[e+1>>0]|0;l=i[e>>0]|0;if(!(f<<24>>24))f=n[s+(l&255)>>0]|0;else f=d$(f,l)|0;switch(f|0){case 10:case 9:case 8:case 1:case 0:case 2:case 3:{f=50;break A}case 5:{e=e+2|0;continue A}case 6:{if((A|0)<3){f=38;break A}e=e+3|0;continue A}case 7:{if((A|0)<4){f=41;break A}e=e+4|0;continue A}case 4:{if((A|0)<=3){f=50;break A}f=e+2|0;if(i[e+3>>0]|0){e=f;continue A}if((i[f>>0]|0)!=93){e=f;continue A}if((A|0)<=5){f=50;break A}l=e+4|0;if(i[e+5>>0]|0){e=f;continue A}if((i[l>>0]|0)==62){f=49;break A}else{e=f;continue A}}default:{e=e+2|0;continue A}}}if((f|0)==38){t[a>>2]=e;r=6;break}else if((f|0)==41){t[a>>2]=e;r=6;break}else if((f|0)==49){t[a>>2]=l;r=0;break}else if((f|0)==50){t[a>>2]=e;r=6;break}else if((f|0)==52){t[a>>2]=e;r=6;break}}else r=-1}else r=-4}while(0);return r|0}function i$(e,A,r,a){e=e|0;A=A|0;r=r|0;a=a|0;var f=0,l=0,s=0,c=0;e:do{if(A>>>0>>0){f=A;l=r-f|0;c=(l&1|0)==0;l=l&-2;s=(l|0)==0;l=c|s?r:A+l|0;if(c|s^1){r=i[A+1>>0]|0;if(!(r<<24>>24))r=n[e+72+(n[A>>0]|0)>>0]|0;else r=d$(r,i[A>>0]|0)|0;switch(r|0){case 4:{f=A+2|0;if((l-f|0)<=1){r=-1;break e}if((i[A+3>>0]|0)==0?(i[f>>0]|0)==93:0){r=A+4|0;if((l-r|0)<=1){r=-1;break e}if((i[A+5>>0]|0)==0?(i[r>>0]|0)==62:0){t[a>>2]=A+6;r=40;break e}}break}case 9:{f=A+2|0;if((l-f|0)<=1){r=-1;break e}r=i[A+3>>0]|0;if(!(r<<24>>24))r=n[e+72+(n[f>>0]|0)>>0]|0;else r=d$(r,i[f>>0]|0)|0;t[a>>2]=(r|0)==10?A+4|0:f;r=7;break e}case 10:{t[a>>2]=A+2;r=7;break e}case 5:{r=l;if((r-f|0)<2){r=-2;break e}f=A+2|0;l=r;break}case 6:{r=l;if((r-f|0)<3){r=-2;break e}f=A+3|0;l=r;break}case 7:{r=l;if((r-f|0)<4){r=-2;break e}f=A+4|0;l=r;break}case 8:case 1:case 0:{t[a>>2]=A;r=0;break e}default:f=A+2|0}s=e+72|0;e=f;A:while(1){A=l-e|0;if((A|0)<=1){f=40;break}r=i[e+1>>0]|0;f=i[e>>0]|0;if(!(r<<24>>24))r=n[s+(f&255)>>0]|0;else r=d$(r,f)|0;switch(r|0){case 10:case 9:case 8:case 1:case 0:case 4:{f=38;break A}case 6:{if((A|0)<3){f=35;break A}else r=3;break}case 7:{if((A|0)<4){f=37;break A}else r=4;break}default:r=2}e=e+r|0}if((f|0)==35){t[a>>2]=e;r=6;break}else if((f|0)==37){t[a>>2]=e;r=6;break}else if((f|0)==38){t[a>>2]=e;r=6;break}else if((f|0)==40){t[a>>2]=e;r=6;break}}else r=-1}else r=-4}while(0);return r|0}function a$(e,A,r,a){e=e|0;A=A|0;r=r|0;a=a|0;var f=0,l=0,s=0,c=0,o=0;c=r-A|0;c=(c&1|0)==0?r:A+(c&-2)|0;s=e+72|0;l=0;r=A;e:while(1){f=c-r|0;if((f|0)<=1){r=-1;break}e=i[r+1>>0]|0;A=i[r>>0]|0;if(!(e<<24>>24))e=n[s+(A&255)>>0]|0;else e=d$(e,A)|0;switch(e|0){case 8:case 1:case 0:{o=12;break e}case 5:{f=l;r=r+2|0;l=f;continue e}case 6:{if((f|0)<3){r=-2;break e}f=l;r=r+3|0;l=f;continue e}case 7:{if((f|0)<4){r=-2;break e}f=l;r=r+4|0;l=f;continue e}case 2:{e=r+2|0;if((c-e|0)<=1){r=-1;break e}if(i[r+3>>0]|0){f=l;r=e;l=f;continue e}if((i[e>>0]|0)!=33){f=l;r=e;l=f;continue e}e=r+4|0;if((c-e|0)<=1){r=-1;break e}if(i[r+5>>0]|0){f=l;r=e;l=f;continue e}f=(i[e>>0]|0)==91;l=l+(f&1)|0;r=f?r+6|0:e;continue e}case 4:{e=r+2|0;if((c-e|0)<=1){r=-1;break e}if(i[r+3>>0]|0){f=l;r=e;l=f;continue e}if((i[e>>0]|0)!=93){f=l;r=e;l=f;continue e}e=r+4|0;if((c-e|0)<=1){r=-1;break e}if(i[r+5>>0]|0){f=l;r=e;l=f;continue e}if((i[e>>0]|0)!=62){f=l;r=e;l=f;continue e}r=r+6|0;if(!l){o=26;break e}l=l+-1|0;continue e}default:{f=l;r=r+2|0;l=f;continue e}}}if((o|0)==12){t[a>>2]=r;r=0}else if((o|0)==26){t[a>>2]=r;r=42}return r|0}function t$(e,A,r,a){e=e|0;A=A|0;r=r|0;a=a|0;var f=0,l=0,s=0,c=0,o=0;do{if(A>>>0>>0){c=r;if((c-A|0)>1){o=e+72|0;s=A;e:while(1){if((c-s|0)<=1){l=30;break}f=i[s+1>>0]|0;l=i[s>>0]|0;if(!(f<<24>>24))f=n[o+(l&255)>>0]|0;else f=d$(f,l)|0;switch(f|0){case 3:{l=11;break e}case 2:{l=14;break e}case 10:{l=15;break e}case 9:{l=18;break e}case 21:{l=25;break e}case 5:{f=2;break}case 6:{f=3;break}case 7:{f=4;break}default:f=2}s=s+f|0}if((l|0)==11)if((s|0)==(A|0)){f=v$(e,A+2|0,r,a)|0;break}else{t[a>>2]=s;f=6;break}else if((l|0)==14){t[a>>2]=s;f=0;break}else if((l|0)==15)if((s|0)==(A|0)){t[a>>2]=A+2;f=7;break}else{t[a>>2]=s;f=6;break}else if((l|0)==18){if((s|0)!=(A|0)){t[a>>2]=s;f=6;break}s=A+2|0;if((c-s|0)<=1){f=-3;break}f=i[A+3>>0]|0;l=i[s>>0]|0;if(!(f<<24>>24))f=n[o+(l&255)>>0]|0;else f=d$(f,l)|0;t[a>>2]=(f|0)==10?A+4|0:s;f=7;break}else if((l|0)==25)if((s|0)==(A|0)){t[a>>2]=A+2;f=39;break}else{t[a>>2]=s;f=6;break}else if((l|0)==30){t[a>>2]=s;f=6;break}}else f=-1}else f=-4}while(0);return f|0}function n$(e,A,r,a){e=e|0;A=A|0;r=r|0;a=a|0;var f=0,l=0,s=0,c=0,o=0;do{if(A>>>0>>0){c=r;if((c-A|0)>1){o=e+72|0;s=A;e:while(1){if((c-s|0)<=1){l=29;break}f=i[s+1>>0]|0;l=i[s>>0]|0;if(!(f<<24>>24))f=n[o+(l&255)>>0]|0;else f=d$(f,l)|0;switch(f|0){case 3:{l=11;break e}case 30:{l=14;break e}case 10:{l=17;break e}case 9:{l=20;break e}case 5:{f=2;break}case 6:{f=3;break}case 7:{f=4;break}default:f=2}s=s+f|0}if((l|0)==11)if((s|0)==(A|0)){f=v$(e,A+2|0,r,a)|0;break}else{t[a>>2]=s;f=6;break}else if((l|0)==14)if((s|0)==(A|0)){f=g$(e,A+2|0,r,a)|0;f=(f|0)==22?0:f;break}else{t[a>>2]=s;f=6;break}else if((l|0)==17)if((s|0)==(A|0)){t[a>>2]=A+2;f=7;break}else{t[a>>2]=s;f=6;break}else if((l|0)==20){if((s|0)!=(A|0)){t[a>>2]=s;f=6;break}s=A+2|0;if((c-s|0)<=1){f=-3;break}f=i[A+3>>0]|0;l=i[s>>0]|0;if(!(f<<24>>24))f=n[o+(l&255)>>0]|0;else f=d$(f,l)|0;t[a>>2]=(f|0)==10?A+4|0:s;f=7;break}else if((l|0)==29){t[a>>2]=s;f=6;break}}else f=-1}else f=-4}while(0);return f|0}function f$(e,A,r,a){e=e|0;A=A|0;r=r|0;a=a|0;var t=0,n=0;t=r;e=A;while(1){A=i[a>>0]|0;if(!(A<<24>>24)){n=7;break}if((t-e|0)<2){e=0;break}if(i[e+1>>0]|0){e=0;break}if((i[e>>0]|0)!=A<<24>>24){e=0;break}a=a+1|0;e=e+2|0}if((n|0)==7)e=(e|0)==(r|0)&1;return e|0}function l$(e,A){e=e|0;A=A|0;var r=0,a=0,t=0;t=e+72|0;a=A;e:while(1){e=i[a+1>>0]|0;r=i[a>>0]|0;if(!(e<<24>>24))e=n[t+(r&255)>>0]|0;else e=d$(e,r)|0;switch(e|0){case 5:{e=2;break}case 6:{e=3;break}case 7:{e=4;break}case 27:case 26:case 25:case 24:case 23:case 22:case 29:{e=2;break}default:break e}a=a+e|0}return a-A|0}function s$(e,A){e=e|0;A=A|0;var r=0,a=0;a=e+72|0;e:while(1){e=i[A+1>>0]|0;r=i[A>>0]|0;if(!(e<<24>>24))e=n[a+(r&255)>>0]|0;else e=d$(e,r)|0;switch(e|0){case 21:case 9:case 10:break;default:break e}A=A+2|0}return A|0}function c$(e,A,r,a){e=e|0;A=A|0;r=r|0;a=a|0;var f=0,l=0,s=0,c=0,o=0,u=0,b=0,h=0;h=e+72|0;u=0;b=0;e=1;e:while(1){o=A+2|0;l=A+3|0;f=i[l>>0]|0;s=f<<24>>24==0;c=i[o>>0]|0;if(s)f=n[h+(c&255)>>0]|0;else f=d$(f,c)|0;do{switch(f|0){case 5:{if(e|0){l=e;s=b;c=u;A=o;e=l;b=s;u=c;continue e}if((b|0)>=(r|0)){s=b;c=u;e=1;A=o;b=s;u=c;continue e}t[a+(b<<4)>>2]=o;i[a+(b<<4)+12>>0]=1;s=b;c=u;e=1;A=o;b=s;u=c;continue e}case 6:{if(e|0){s=e;c=b;o=u;A=l;e=s;b=c;u=o;continue e}if((b|0)>=(r|0)){c=b;o=u;e=1;A=l;b=c;u=o;continue e}t[a+(b<<4)>>2]=o;i[a+(b<<4)+12>>0]=1;c=b;o=u;e=1;A=l;b=c;u=o;continue e}case 7:{if(!e)if((b|0)<(r|0)){t[a+(b<<4)>>2]=o;i[a+(b<<4)+12>>0]=1;e=1}else e=1;c=b;o=u;A=A+4|0;b=c;u=o;continue e}case 24:case 22:case 29:{if(e|0){l=e;s=b;c=u;A=o;e=l;b=s;u=c;continue e}if((b|0)>=(r|0)){s=b;c=u;e=1;A=o;b=s;u=c;continue e}t[a+(b<<4)>>2]=o;i[a+(b<<4)+12>>0]=1;s=b;c=u;e=1;A=o;b=s;u=c;continue e}case 12:{if((e|0)!=2){if((b|0)>=(r|0)){c=b;u=12;e=2;A=o;b=c;continue e}t[a+(b<<4)+4>>2]=A+4;c=b;u=12;e=2;A=o;b=c;continue e}if((u|0)!=12){s=b;c=u;e=2;A=o;b=s;u=c;continue e}if((b|0)<(r|0))t[a+(b<<4)+8>>2]=o;u=12;b=b+1|0;e=0;A=o;continue e}case 13:{if((e|0)!=2){if((b|0)>=(r|0)){c=b;u=13;e=2;A=o;b=c;continue e}t[a+(b<<4)+4>>2]=A+4;c=b;u=13;e=2;A=o;b=c;continue e}if((u|0)!=13){s=b;c=u;e=2;A=o;b=s;u=c;continue e}if((b|0)<(r|0))t[a+(b<<4)+8>>2]=o;u=13;b=b+1|0;e=0;A=o;continue e}case 3:{if((b|0)>=(r|0)){l=e;s=b;c=u;A=o;e=l;b=s;u=c;continue e}i[a+(b<<4)+12>>0]=0;l=e;s=b;c=u;A=o;e=l;b=s;u=c;continue e}case 21:{switch(e|0){case 1:{s=b;c=u;e=0;A=o;b=s;u=c;continue e}case 2:break;default:{l=e;s=b;c=u;A=o;e=l;b=s;u=c;continue e}}if((b|0)>=(r|0)){s=b;c=u;e=2;A=o;b=s;u=c;continue e}l=a+(b<<4)+12|0;if(!(i[l>>0]|0)){s=b;c=u;e=2;A=o;b=s;u=c;continue e}do{if(s&(o|0)!=(t[a+(b<<4)+4>>2]|0)&c<<24>>24==32){f=i[A+5>>0]|0;e=i[A+4>>0]|0;if(!(f<<24>>24)){if(e<<24>>24==32)break;e=n[h+(e&255)>>0]|0}else e=d$(f,e)|0;if((e|0)!=(u|0)){s=b;c=u;e=2;A=o;b=s;u=c;continue e}}}while(0);i[l>>0]=0;s=b;c=u;e=2;A=o;b=s;u=c;continue e}case 10:case 9:{switch(e|0){case 1:{s=b;c=u;e=0;A=o;b=s;u=c;continue e}case 2:break;default:{l=e;s=b;c=u;A=o;e=l;b=s;u=c;continue e}}if((b|0)>=(r|0)){s=b;c=u;e=2;A=o;b=s;u=c;continue e}i[a+(b<<4)+12>>0]=0;s=b;c=u;e=2;A=o;b=s;u=c;continue e}case 17:case 11:if((e|0)==2){s=b;c=u;e=2;A=o;b=s;u=c;continue e}else break e;default:{l=e;s=b;c=u;A=o;e=l;b=s;u=c;continue e}}}while(0)}return b|0}function o$(e,A){e=e|0;A=A|0;var r=0,a=0;e=A+4|0;e:do{if((i[A+5>>0]|0)==0?(i[e>>0]|0)==120:0){A=A+6|0;e=0;while(1){A:while(1){if(!(i[A+1>>0]|0)){r=i[A>>0]|0;if(r<<24>>24==59){a=17;break e}r=r<<24>>24;switch(r|0){case 57:case 56:case 55:case 54:case 53:case 52:case 51:case 50:case 49:case 48:{a=8;break A}case 70:case 69:case 68:case 67:case 66:case 65:{a=9;break A}case 102:case 101:case 100:case 99:case 98:case 97:{a=10;break A}default:{}}}A=A+2|0}if((a|0)==8){a=0;e=r+-48|e<<4}else if((a|0)==9){a=0;e=(e<<4)+-55+r|0}else if((a|0)==10){a=0;e=(e<<4)+-87+r|0}if((e|0)<1114112)A=A+2|0;else{e=-1;break}}}else{r=e;e=0;a=13}}while(0);e:do{if((a|0)==13)while(1){a=0;if(!(i[r+1>>0]|0)){A=i[r>>0]|0;if(A<<24>>24==59){a=17;break e}A=A<<24>>24}else A=-1;e=(e*10|0)+-48+A|0;if((e|0)>=1114112){e=-1;break}else{r=r+2|0;a=13}}}while(0);if((a|0)==17)e=po(e)|0;return e|0}function u$(e,A,r){e=e|0;A=A|0;r=r|0;var a=0;e:do{switch((r-A|0)/2|0|0){case 2:{if((i[A+3>>0]|0)==0?(i[A+2>>0]|0)==116:0){if(!(i[A+1>>0]|0))e=i[A>>0]|0;else e=-1;e=(e|0)==108?60:(e|0)==103?62:0}else a=27;break}case 3:{if((((((i[A+1>>0]|0)==0?(i[A>>0]|0)==97:0)?(i[A+3>>0]|0)==0:0)?(i[A+2>>0]|0)==109:0)?(i[A+5>>0]|0)==0:0)?(i[A+4>>0]|0)==112:0)e=38;else a=27;break}case 4:{if(!(i[A+1>>0]|0))switch(i[A>>0]|0){case 113:{if(i[A+3>>0]|0){a=27;break e}if((i[A+2>>0]|0)!=117){a=27;break e}if(i[A+5>>0]|0){a=27;break e}if((i[A+4>>0]|0)!=111){a=27;break e}if(i[A+7>>0]|0){a=27;break e}if((i[A+6>>0]|0)==116){e=34;break e}else{a=27;break e}}case 97:{if(i[A+3>>0]|0){a=27;break e}if((i[A+2>>0]|0)!=112){a=27;break e}if(i[A+5>>0]|0){a=27;break e}if((i[A+4>>0]|0)!=111){a=27;break e}if(i[A+7>>0]|0){a=27;break e}if((i[A+6>>0]|0)==115){e=39;break e}else{a=27;break e}}default:{a=27;break e}}else a=27;break}default:a=27}}while(0);if((a|0)==27)e=0;return e|0}function b$(e,A,r,a){e=e|0;A=A|0;r=r|0;a=a|0;var f=0,l=0,s=0,c=0;s=e+72|0;c=a+4|0;while(1){if((r-A|0)<=1)break;e=i[A+1>>0]|0;f=i[A>>0]|0;if(!(e<<24>>24))e=n[s+(f&255)>>0]|0;else e=d$(e,f)|0;switch(e|0){case 5:{A=A+2|0;break}case 6:{A=A+3|0;break}case 7:{A=A+4|0;break}case 10:{t[c>>2]=-1;t[a>>2]=(t[a>>2]|0)+1;A=A+2|0;break}case 9:{t[a>>2]=(t[a>>2]|0)+1;l=A+2|0;if((r-l|0)>1){e=i[A+3>>0]|0;f=i[l>>0]|0;if(!(e<<24>>24))e=n[s+(f&255)>>0]|0;else e=d$(e,f)|0;A=(e|0)==10?A+4|0:l}else A=l;t[c>>2]=-1;break}default:A=A+2|0}t[c>>2]=(t[c>>2]|0)+1}return}function h$(e,A,r,a){e=e|0;A=A|0;r=r|0;a=a|0;var f=0,l=0,s=0,c=0;s=r+-2|0;l=e+72|0;r=A;e:while(1){f=r+2|0;if((s-f|0)<=1){r=1;break}r=i[r+3>>0]|0;e=r<<24>>24==0;A=i[f>>0]|0;if(e)r=n[l+(A&255)>>0]|0;else r=d$(r,A)|0;switch(r|0){case 23:case 19:case 30:case 33:case 16:case 18:case 10:case 9:case 15:case 14:case 17:case 35:case 34:case 32:case 31:case 13:case 27:case 24:case 25:{r=f;continue e}case 21:if(e&A<<24>>24==9){c=12;break e}else{r=f;continue e}case 22:case 26:{if(!e){c=12;break e}if(A<<24>>24>=0){r=f;continue e}break}default:if(!e){c=12;break e}}switch(A<<24>>24|0){case 64:case 36:{r=f;break}default:{c=12;break e}}}if((c|0)==12){t[a>>2]=f;r=0}return r|0}function w$(e,A,r,a,f){e=e|0;A=A|0;r=r|0;a=a|0;f=f|0;var l=0,s=0,c=0,o=0,u=0,b=0,h=0;s=t[A>>2]|0;c=s+(r-s&-2)|0;o=c;u=f;e:while(1){if(s>>>0>=c>>>0){e=0;break}l=i[s>>0]|0;e=i[s+1>>0]|0;r=e&255;switch(e<<24>>24){case 0:{if(l<<24>>24>-1){e=t[a>>2]|0;if((e|0)==(f|0)){e=2;break e}t[a>>2]=e+1;i[e>>0]=l;e=s}else b=7;break}case 7:case 6:case 5:case 4:case 3:case 2:case 1:{b=7;break}case-37:case-38:case-39:case-40:{e=t[a>>2]|0;if((u-e|0)<4){e=2;break e}if((o-s|0)<4){e=1;break e}h=l&255;l=(r<<2&12|h>>>6)+1|0;t[a>>2]=e+1;i[e>>0]=l>>>2|240;e=t[a>>2]|0;t[a>>2]=e+1;i[e>>0]=h>>>2&15|l<<4&48|128;e=s+2|0;l=n[e>>0]|0;r=(h<<4&48|l>>>6|i[s+3>>0]<<2&12|128)&255;s=t[a>>2]|0;t[a>>2]=s+1;i[s>>0]=r;s=t[a>>2]|0;t[a>>2]=s+1;i[s>>0]=l&63|128;break}default:{e=t[a>>2]|0;if((u-e|0)<3){e=2;break e}t[a>>2]=e+1;i[e>>0]=r>>>4|224;h=l&255;e=t[a>>2]|0;t[a>>2]=e+1;i[e>>0]=h>>>6|r<<2&60|128;e=t[a>>2]|0;t[a>>2]=e+1;i[e>>0]=h&63|128;e=s}}if((b|0)==7){b=0;e=t[a>>2]|0;if((u-e|0)<2){e=2;break}h=l&255;t[a>>2]=e+1;i[e>>0]=h>>>6|r<<2|192;e=t[a>>2]|0;t[a>>2]=e+1;i[e>>0]=h&63|128;e=s}s=e+2|0}t[A>>2]=s;return e|0}function k$(e,A,r,f,l){e=e|0;A=A|0;r=r|0;f=f|0;l=l|0;var s=0,c=0,o=0;s=t[A>>2]|0;o=r-s&-2;e=s+o|0;if((o|0)>(l-(t[f>>2]|0)|0)){c=e+-2|0;r=(i[c+1>>0]&-8)<<24>>24==-40;o=r&1;e=r?c:e}else o=0;r=s;while(1){s=r>>>0>>0;c=t[f>>2]|0;if(!(s&c>>>0>>0))break;s=((n[r+1>>0]|0)<<8|(n[r>>0]|0))&65535;t[f>>2]=c+2;a[c>>1]=s;c=(t[A>>2]|0)+2|0;t[A>>2]=c;r=c}return((c|0)!=(l|0)|s^1?o:2)|0}function d$(e,A){e=e|0;A=A|0;var r=0;switch(e<<24>>24){case-37:case-38:case-39:case-40:{e=7;break}case-33:case-34:case-35:case-36:{e=8;break}case-1:{if((A&255)>253)e=0;else r=4;break}default:r=4}if((r|0)==4)e=29;return e|0}function v$(e,A,r,a){e=e|0;A=A|0;r=r|0;a=a|0;var f=0,l=0,s=0,c=0,o=0;o=r;s=o-A|0;e:do{if((s|0)>1){c=i[A+1>>0]|0;if(!(c<<24>>24)){l=i[A>>0]|0;f=n[e+72+(l&255)>>0]|0}else{l=i[A>>0]|0;f=d$(c,l)|0}switch(f|0){case 29:{s=l&255;if(!(1<<(s&31)&t[56940+((s>>>5|(n[143788+(c&255)>>0]|0)<<3)<<2)>>2])){t[a>>2]=A;e=0;break e}break}case 24:case 22:break;case 5:{t[a>>2]=A;e=0;break e}case 6:{if((s|0)<3){e=-2;break e}t[a>>2]=A;e=0;break e}case 7:{if((s|0)<4){e=-2;break e}t[a>>2]=A;e=0;break e}case 19:{e=m$(e,A+2|0,r,a)|0;break e}default:{t[a>>2]=A;e=0;break e}}c=e+72|0;s=A;A:while(1){l=s+2|0;A=o-l|0;if((A|0)<=1){e=-1;break e}e=i[s+3>>0]|0;f=i[l>>0]|0;if(!(e<<24>>24))r=n[c+(f&255)>>0]|0;else r=d$(e,f)|0;switch(r|0){case 27:case 26:case 25:case 24:case 22:{s=l;continue A}case 5:{f=23;break A}case 6:{f=24;break A}case 7:{f=26;break A}case 18:{f=28;break A}case 29:break;default:{f=29;break A}}A=f&255;if(!(1<<(A&31)&t[56940+((A>>>5|(n[144044+(e&255)>>0]|0)<<3)<<2)>>2])){f=22;break}else s=l}if((f|0)==22){t[a>>2]=l;e=0;break}else if((f|0)==23){t[a>>2]=l;e=0;break}else if((f|0)==24){if((A|0)<3){e=-2;break}t[a>>2]=l;e=0;break}else if((f|0)==26){if((A|0)<4){e=-2;break}t[a>>2]=l;e=0;break}else if((f|0)==28){t[a>>2]=s+4;e=9;break}else if((f|0)==29){t[a>>2]=l;e=0;break}}else e=-1}while(0);return e|0}function g$(e,A,r,a){e=e|0;A=A|0;r=r|0;a=a|0;var f=0,l=0,s=0,c=0,o=0;s=r-A|0;e:do{if((s|0)>1){c=i[A+1>>0]|0;if(!(c<<24>>24)){l=i[A>>0]|0;f=n[e+72+(l&255)>>0]|0}else{l=i[A>>0]|0;f=d$(c,l)|0}switch(f|0){case 29:{o=l&255;if(!(1<<(o&31)&t[56940+((o>>>5|(n[143788+(c&255)>>0]|0)<<3)<<2)>>2])){t[a>>2]=A;r=0;break e}break}case 24:case 22:break;case 5:{t[a>>2]=A;r=0;break e}case 6:{if((s|0)<3){r=-2;break e}t[a>>2]=A;r=0;break e}case 7:{if((s|0)<4){r=-2;break e}t[a>>2]=A;r=0;break e}case 30:case 9:case 10:case 21:{t[a>>2]=A;r=22;break e}default:{t[a>>2]=A;r=0;break e}}o=e+72|0;e=A;A:while(1){c=e+2|0;A=r-c|0;if((A|0)<=1){r=-1;break e}f=i[e+3>>0]|0;l=i[c>>0]|0;if(!(f<<24>>24))s=n[o+(l&255)>>0]|0;else s=d$(f,l)|0;switch(s|0){case 27:case 26:case 25:case 24:case 22:{e=c;continue A}case 5:{f=23;break A}case 6:{f=24;break A}case 7:{f=26;break A}case 18:{f=28;break A}case 29:break;default:{f=29;break A}}A=l&255;if(!(1<<(A&31)&t[56940+((A>>>5|(n[144044+(f&255)>>0]|0)<<3)<<2)>>2])){f=22;break}else e=c}if((f|0)==22){t[a>>2]=c;r=0;break}else if((f|0)==23){t[a>>2]=c;r=0;break}else if((f|0)==24){if((A|0)<3){r=-2;break}t[a>>2]=c;r=0;break}else if((f|0)==26){if((A|0)<4){r=-2;break}t[a>>2]=c;r=0;break}else if((f|0)==28){t[a>>2]=e+4;r=28;break}else if((f|0)==29){t[a>>2]=c;r=0;break}}else r=-1}while(0);return r|0}function m$(e,A,r,a){e=e|0;A=A|0;r=r|0;a=a|0;var f=0,l=0,s=0,c=0;c=r;e:do{if((c-A|0)>1){l=i[A+1>>0]|0;f=i[A>>0]|0;do{if(!(l<<24>>24))if(f<<24>>24==120){f=p$(e,A+2|0,r,a)|0;break e}else{f=n[e+72+(f&255)>>0]|0;break}else f=d$(l,f)|0}while(0);if((f|0)!=25){t[a>>2]=A;f=0;break}s=e+72|0;e=A;A:while(1){l=e+2|0;if((c-l|0)<=1){f=-1;break e}f=i[e+3>>0]|0;r=i[l>>0]|0;if(!(f<<24>>24))f=n[s+(r&255)>>0]|0;else f=d$(f,r)|0;switch(f|0){case 25:{e=l;break}case 18:{r=15;break A}default:{r=16;break A}}}if((r|0)==15){t[a>>2]=e+4;f=10;break}else if((r|0)==16){t[a>>2]=l;f=0;break}}else f=-1}while(0);return f|0}function p$(e,A,r,a){e=e|0;A=A|0;r=r|0;a=a|0;var f=0,l=0,s=0;e:do{if((r-A|0)>1){f=i[A+1>>0]|0;if(!(f<<24>>24))f=n[e+72+(n[A>>0]|0)>>0]|0;else f=d$(f,i[A>>0]|0)|0;if((f&-2|0)!=24){t[a>>2]=A;r=0;break}s=e+72|0;A:while(1){l=A+2|0;if((r-l|0)<=1){r=-1;break e}f=i[A+3>>0]|0;e=i[l>>0]|0;if(!(f<<24>>24))f=n[s+(e&255)>>0]|0;else f=d$(f,e)|0;switch(f|0){case 24:case 25:{A=l;break}case 18:{f=13;break A}default:{f=14;break A}}}if((f|0)==13){t[a>>2]=A+4;r=10;break}else if((f|0)==14){t[a>>2]=l;r=0;break}}else r=-1}while(0);return r|0}function E$(e,A,r,a){e=e|0;A=A|0;r=r|0;a=a|0;var f=0,l=0,s=0,c=0,o=0,u=0,b=0,h=0;h=r;s=h-A|0;e:do{if((s|0)>1){c=i[A+1>>0]|0;if(!(c<<24>>24)){l=i[A>>0]|0;f=n[e+72+(l&255)>>0]|0}else{l=i[A>>0]|0;f=d$(c,l)|0}switch(f|0){case 29:{u=l&255;if(!(1<<(u&31)&t[56940+((u>>>5|n[143788+(c&255)>>0]<<3)<<2)>>2])){t[a>>2]=A;f=0;break e}break}case 24:case 22:break;case 5:{t[a>>2]=A;f=0;break e}case 6:{if((s|0)<3){f=-2;break e}t[a>>2]=A;f=0;break e}case 7:{if((s|0)<4){f=-2;break e}t[a>>2]=A;f=0;break e}case 16:{l=A+2|0;if((h-l|0)<=1){f=-1;break e}f=i[A+3>>0]|0;if(!(f<<24>>24))f=n[e+72+(n[l>>0]|0)>>0]|0;else f=d$(f,i[l>>0]|0)|0;switch(f|0){case 27:{f=B$(e,A+4|0,r,a)|0;break e}case 20:{f=y$(A+4|0,r,a)|0;break e}default:{t[a>>2]=l;f=0;break e}}}case 15:{f=C$(e,A+2|0,r,a)|0;break e}case 17:{f=I$(e,A+2|0,r,a)|0;break e}default:{t[a>>2]=A;f=0;break e}}u=e+72|0;o=0;f=A+2|0;A:while(1){r:while(1){l=h-f|0;if((l|0)<=1){f=-1;break e}s=i[f+1>>0]|0;c=i[f>>0]|0;if(!(s<<24>>24))A=n[u+(c&255)>>0]|0;else A=d$(s,c)|0;switch(A|0){case 5:{b=34;break A}case 6:{b=35;break A}case 7:{b=37;break A}case 10:case 9:case 21:{b=55;break A}case 11:{b=69;break A}case 17:break A;case 23:break r;case 29:{A=c&255;if(!(1<<(A&31)&t[56940+((A>>>5|n[144044+(s&255)>>0]<<3)<<2)>>2])){b=32;break A}break}case 27:case 26:case 25:case 24:case 22:break;default:{b=75;break A}}f=f+2|0}if(o|0){b=40;break}c=f+2|0;A=h-c|0;if((A|0)<=1){f=-1;break e}o=i[f+3>>0]|0;l=i[c>>0]|0;if(!(o<<24>>24))s=n[u+(l&255)>>0]|0;else s=d$(o,l)|0;switch(s|0){case 5:{b=49;break A}case 6:{b=50;break A}case 7:{b=52;break A}case 29:{A=l&255;if(!(1<<(A&31)&t[56940+((A>>>5|n[143788+(o&255)>>0]<<3)<<2)>>2])){b=47;break A}break}case 24:case 22:break;default:{b=54;break A}}o=1;f=f+4|0}A:switch(b|0){case 32:{t[a>>2]=f;f=0;break e}case 34:{t[a>>2]=f;f=0;break e}case 35:{if((l|0)<3){f=-2;break e}t[a>>2]=f;f=0;break e}case 37:{if((l|0)<4){f=-2;break e}t[a>>2]=f;f=0;break e}case 40:{t[a>>2]=f;f=0;break e}case 47:{t[a>>2]=c;f=0;break e}case 49:{t[a>>2]=c;f=0;break e}case 50:{if((A|0)<3){f=-2;break e}t[a>>2]=c;f=0;break e}case 52:{if((A|0)<4){f=-2;break e}t[a>>2]=c;f=0;break e}case 54:{t[a>>2]=c;f=0;break e}case 55:{r:while(1){b=0;l=f+2|0;s=h-l|0;if((s|0)<=1){f=-1;break e}c=i[f+3>>0]|0;A=i[l>>0]|0;if(!(c<<24>>24))o=n[u+(A&255)>>0]|0;else o=d$(c,A)|0;switch(o|0){case 11:{f=l;b=69;break A}case 17:{f=l;break A}case 10:case 9:case 21:{f=l;b=55;break}case 29:{b=60;break r}case 24:case 22:break r;case 5:{b=63;break r}case 6:{b=64;break r}case 7:{b=66;break r}default:{b=68;break r}}}if((b|0)==60){h=A&255;if(!(1<<(h&31)&t[56940+((h>>>5|n[143788+(c&255)>>0]<<3)<<2)>>2])){t[a>>2]=l;f=0;break e}}else if((b|0)==63){t[a>>2]=l;f=0;break e}else if((b|0)==64){if((s|0)<3){f=-2;break e}t[a>>2]=l;f=0;break e}else if((b|0)==66){if((s|0)<4){f=-2;break e}t[a>>2]=l;f=0;break e}else if((b|0)==68){t[a>>2]=l;f=0;break e}f=Z$(e,f+4|0,r,a)|0;break e}case 75:{t[a>>2]=f;f=0;break e}}if((b|0)==69){t[a>>2]=f+2;f=2;break}l=f+2|0;if((h-l|0)>1){if((i[f+3>>0]|0)==0?(i[l>>0]|0)==62:0){t[a>>2]=f+4;f=4;break}t[a>>2]=l;f=0}else f=-1}else f=-1}while(0);return f|0}function B$(e,A,r,a){e=e|0;A=A|0;r=r|0;a=a|0;var f=0,l=0,s=0,c=0;s=r;e:do{if((s-A|0)>1){if((i[A+1>>0]|0)==0?(i[A>>0]|0)==45:0){l=e+72|0;f=A+2|0;A:while(1){A=s-f|0;if((A|0)<=1){r=-1;break e}r=i[f+1>>0]|0;e=i[f>>0]|0;if(!(r<<24>>24))r=n[l+(e&255)>>0]|0;else r=d$(r,e)|0;switch(r|0){case 8:case 1:case 0:{c=16;break A}case 5:{f=f+2|0;continue A}case 6:{if((A|0)<3){r=-2;break e}f=f+3|0;continue A}case 7:{if((A|0)<4){r=-2;break e}f=f+4|0;continue A}case 27:{r=f+2|0;if((s-r|0)<=1){r=-1;break e}if(i[f+3>>0]|0){f=r;continue A}if((i[r>>0]|0)==45)break A;else{f=r;continue A}}default:{f=f+2|0;continue A}}}if((c|0)==16){t[a>>2]=f;r=0;break}r=f+4|0;if((s-r|0)<=1){r=-1;break}if((i[f+5>>0]|0)==0?(i[r>>0]|0)==62:0){t[a>>2]=f+6;r=13;break}t[a>>2]=r;r=0;break}t[a>>2]=A;r=0}else r=-1}while(0);return r|0}function y$(e,A,r){e=e|0;A=A|0;r=r|0;if((A-e|0)>11){A=0;while(1){if((A|0)>=6){A=8;break}if(i[e+1>>0]|0){A=0;break}if((i[e>>0]|0)!=(i[144300+A>>0]|0)){A=0;break}A=A+1|0;e=e+2|0}t[r>>2]=e}else A=-1;return A|0}function C$(e,A,r,a){e=e|0;A=A|0;r=r|0;a=a|0;var f=0,l=0,s=0,c=0,o=0,u=0,b=0,w=0,k=0;k=h;h=h+16|0;w=k;b=r;s=b-A|0;e:do{if((s|0)>1){r=i[A+1>>0]|0;if(!(r<<24>>24)){l=i[A>>0]|0;f=n[e+72+(l&255)>>0]|0}else{l=i[A>>0]|0;f=d$(r,l)|0}switch(f|0){case 29:{o=l&255;if(!(1<<(o&31)&t[56940+((o>>>5|n[143788+(r&255)>>0]<<3)<<2)>>2])){t[a>>2]=A;r=0;break e}break}case 24:case 22:break;case 5:{t[a>>2]=A;r=0;break e}case 6:{if((s|0)<3){r=-2;break e}t[a>>2]=A;r=0;break e}case 7:{if((s|0)<4){r=-2;break e}t[a>>2]=A;r=0;break e}default:{t[a>>2]=A;r=0;break e}}o=e+72|0;c=A;A:while(1){r=c+2|0;f=b-r|0;if((f|0)<=1){r=-1;break e}l=i[c+3>>0]|0;s=i[r>>0]|0;if(!(l<<24>>24))e=n[o+(s&255)>>0]|0;else e=d$(l,s)|0;switch(e|0){case 27:case 26:case 25:case 24:case 22:{c=r;continue A}case 5:{u=22;break A}case 6:{u=23;break A}case 7:{u=25;break A}case 10:case 9:case 21:{u=27;break A}case 15:{u=46;break A}case 29:break;default:break A}c=s&255;if(!(1<<(c&31)&t[56940+((c>>>5|n[144044+(l&255)>>0]<<3)<<2)>>2])){u=21;break}else c=r}if((u|0)==21){t[a>>2]=r;r=0;break}else if((u|0)==22){t[a>>2]=r;r=0;break}else if((u|0)==23){if((f|0)<3){r=-2;break}t[a>>2]=r;r=0;break}else if((u|0)==25){if((f|0)<4){r=-2;break}t[a>>2]=r;r=0;break}else if((u|0)==27){if(!(G$(A,r,w)|0)){t[a>>2]=r;r=0;break}s=c+4|0;A:while(1){l=b-s|0;if((l|0)<=1){r=-1;break e}r=i[s+1>>0]|0;f=i[s>>0]|0;if(!(r<<24>>24))r=n[o+(f&255)>>0]|0;else r=d$(r,f)|0;switch(r|0){case 8:case 1:case 0:{u=40;break A}case 5:{s=s+2|0;continue A}case 6:{if((l|0)<3){r=-2;break e}s=s+3|0;continue A}case 7:{if((l|0)<4){r=-2;break e}s=s+4|0;continue A}case 15:{r=s+2|0;if((b-r|0)<=1){r=-1;break e}if(i[s+3>>0]|0){s=r;continue A}if((i[r>>0]|0)==62){u=44;break A}else{s=r;continue A}}default:{s=s+2|0;continue A}}}if((u|0)==40){t[a>>2]=s;r=0;break}else if((u|0)==44){t[a>>2]=s+4;r=t[w>>2]|0;break}}else if((u|0)==46){if(!(G$(A,r,w)|0)){t[a>>2]=r;r=0;break}r=c+4|0;if((b-r|0)<=1){r=-1;break}if((i[c+5>>0]|0)==0?(i[r>>0]|0)==62:0){t[a>>2]=c+6;r=t[w>>2]|0;break}}t[a>>2]=r;r=0}else r=-1}while(0);h=k;return r|0}function I$(e,A,r,a){e=e|0;A=A|0;r=r|0;a=a|0;var f=0,l=0,s=0,c=0,o=0;s=r-A|0;e:do{if((s|0)>1){c=i[A+1>>0]|0;if(!(c<<24>>24)){l=i[A>>0]|0;f=n[e+72+(l&255)>>0]|0}else{l=i[A>>0]|0;f=d$(c,l)|0}switch(f|0){case 29:{o=l&255;if(!(1<<(o&31)&t[56940+((o>>>5|(n[143788+(c&255)>>0]|0)<<3)<<2)>>2])){t[a>>2]=A;r=0;break e}break}case 24:case 22:break;case 5:{t[a>>2]=A;r=0;break e}case 6:{if((s|0)<3){r=-2;break e}t[a>>2]=A;r=0;break e}case 7:{if((s|0)<4){r=-2;break e}t[a>>2]=A;r=0;break e}default:{t[a>>2]=A;r=0;break e}}o=e+72|0;e=A;A:while(1){s=e+2|0;A=r-s|0;if((A|0)<=1){r=-1;break e}f=i[e+3>>0]|0;l=i[s>>0]|0;if(!(f<<24>>24))c=n[o+(l&255)>>0]|0;else c=d$(f,l)|0;switch(c|0){case 23:case 27:case 26:case 25:case 24:case 22:{e=s;continue A}case 5:{f=22;break A}case 6:{f=23;break A}case 7:{f=25;break A}case 10:case 9:case 21:{f=27;break A}case 11:{f=34;break A}case 29:break;default:{f=35;break A}}A=l&255;if(!(1<<(A&31)&t[56940+((A>>>5|(n[144044+(f&255)>>0]|0)<<3)<<2)>>2])){f=21;break}else e=s}if((f|0)==21){t[a>>2]=s;r=0;break}else if((f|0)==22){t[a>>2]=s;r=0;break}else if((f|0)==23){if((A|0)<3){r=-2;break}t[a>>2]=s;r=0;break}else if((f|0)==25){if((A|0)<4){r=-2;break}t[a>>2]=s;r=0;break}else if((f|0)==27){A:while(1){c=s+2|0;if((r-c|0)<=1){r=-1;break e}f=i[s+3>>0]|0;l=i[c>>0]|0;if(!(f<<24>>24))f=n[o+(l&255)>>0]|0;else f=d$(f,l)|0;switch(f|0){case 10:case 9:case 21:{s=c;f=27;break}case 11:{f=32;break A}default:{f=33;break A}}}if((f|0)==32){t[a>>2]=s+4;r=5;break}else if((f|0)==33){t[a>>2]=c;r=0;break}}else if((f|0)==34){t[a>>2]=e+4;r=5;break}else if((f|0)==35){t[a>>2]=s;r=0;break}}else r=-1}while(0);return r|0}function Z$(e,A,r,a){e=e|0;A=A|0;r=r|0;a=a|0;var f=0,l=0,s=0,c=0,o=0,u=0,b=0,w=0,k=0,d=0,v=0;v=h;h=h+16|0;k=v;t[k>>2]=A;d=r;b=e+72|0;f=0;e:while(1){A:while(1){o=d-A|0;if((o|0)<=1){A=-1;break e}l=i[A+1>>0]|0;s=i[A>>0]|0;if(!(l<<24>>24))c=n[b+(s&255)>>0]|0;else c=d$(l,s)|0;switch(c|0){case 5:{w=11;break e}case 6:{w=12;break e}case 7:{w=14;break e}case 23:{w=16;break A}case 10:case 9:case 21:{w=31;break A}case 14:{w=37;break A}case 29:{u=s&255;if(!(1<<(u&31)&t[56940+((u>>>5|n[144044+(l&255)>>0]<<3)<<2)>>2])){w=9;break e}break}case 27:case 26:case 25:case 24:case 22:break;default:{w=89;break e}}u=A+2|0;t[k>>2]=u;A=u}A:do{if((w|0)==16){w=0;if(f|0){w=17;break e}f=A+2|0;t[k>>2]=f;l=f;s=d-l|0;if((s|0)<=1){A=-1;break e}c=i[A+3>>0]|0;o=i[f>>0]|0;if(!(c<<24>>24))u=n[b+(o&255)>>0]|0;else u=d$(c,o)|0;switch(u|0){case 5:{w=25;break e}case 6:{w=26;break e}case 7:{w=28;break e}case 24:case 22:{f=1;break A}case 29:break;default:{w=30;break e}}u=o&255;if(!(1<<(u&31)&t[56940+((u>>>5|n[143788+(c&255)>>0]<<3)<<2)>>2])){w=24;break e}else f=1}else if((w|0)==31)while(1){w=0;l=A+2|0;t[k>>2]=l;s=l;if((d-s|0)<=1){A=-1;break e}A=i[A+3>>0]|0;f=i[l>>0]|0;if(!(A<<24>>24))A=n[b+(f&255)>>0]|0;else A=d$(A,f)|0;switch(A|0){case 14:{A=l;w=37;break A}case 9:case 10:case 21:{A=l;w=31;break}default:{w=36;break e}}}}while(0);A:do{if((w|0)==37){while(1){w=0;s=A+2|0;t[k>>2]=s;c=s;if((d-c|0)<=1){A=-1;break e}f=i[A+3>>0]|0;l=i[s>>0]|0;if(!(f<<24>>24))o=n[b+(l&255)>>0]|0;else o=d$(f,l)|0;if((o|1|0)==13)break;switch(o|0){case 9:case 10:case 21:{A=s;w=37;break}default:{w=43;break e}}}A=A+4|0;t[k>>2]=A;r:while(1){s=d-A|0;if((s|0)<=1){A=-1;break e}f=i[A+1>>0]|0;l=i[A>>0]|0;if(!(f<<24>>24))f=n[b+(l&255)>>0]|0;else f=d$(f,l)|0;if((f|0)==(o|0))break;switch(f|0){case 8:case 1:case 0:{w=56;break e}case 2:{w=61;break e}case 5:{u=A+2|0;t[k>>2]=u;A=u;continue r}case 6:{if((s|0)<3){A=-2;break e}u=A+3|0;t[k>>2]=u;A=u;continue r}case 7:{if((s|0)<4){A=-2;break e}u=A+4|0;t[k>>2]=u;A=u;continue r}case 3:{A=v$(e,A+2|0,r,k)|0;if((A|0)<1){w=59;break e}A=t[k>>2]|0;continue r}default:{u=A+2|0;t[k>>2]=u;A=u;continue r}}}l=A+2|0;t[k>>2]=l;c=l;if((d-c|0)<=1){A=-1;break e}f=i[A+3>>0]|0;s=i[l>>0]|0;if(!(f<<24>>24))f=n[b+(s&255)>>0]|0;else f=d$(f,s)|0;switch(f|0){case 11:{w=81;break e}case 17:{w=82;break e}case 10:case 9:case 21:{A=l;break}default:{w=68;break e}}r:while(1){l=A+2|0;t[k>>2]=l;f=l;s=d-f|0;if((s|0)<=1){A=-1;break e}c=i[A+3>>0]|0;o=i[l>>0]|0;if(!(c<<24>>24))u=n[b+(o&255)>>0]|0;else u=d$(c,o)|0;switch(u|0){case 5:{w=76;break e}case 6:{w=77;break e}case 7:{w=79;break e}case 11:{w=81;break e}case 17:{w=82;break e}case 24:case 22:{f=0;break A}case 10:case 9:case 21:{A=l;break}case 29:break r;default:{w=87;break e}}}u=o&255;if(!(1<<(u&31)&t[56940+((u>>>5|n[143788+(c&255)>>0]<<3)<<2)>>2])){w=75;break e}else f=0}}while(0);A=A+4|0;t[k>>2]=A}switch(w|0){case 9:{t[a>>2]=A;A=0;break}case 11:{t[a>>2]=A;A=0;break}case 12:{if((o|0)<3)A=-2;else{t[a>>2]=A;A=0}break}case 14:{if((o|0)<4)A=-2;else{t[a>>2]=A;A=0}break}case 17:{t[a>>2]=A;A=0;break}case 24:{t[a>>2]=f;A=0;break}case 25:{t[a>>2]=f;A=0;break}case 26:{if((s|0)<3)A=-2;else{t[a>>2]=f;A=0}break}case 28:{if((s|0)<4)A=-2;else{t[a>>2]=f;A=0}break}case 30:{t[a>>2]=l;A=0;break}case 36:{t[a>>2]=s;A=0;break}case 43:{t[a>>2]=c;A=0;break}case 56:{t[a>>2]=A;A=0;break}case 59:{if(!A){t[a>>2]=t[k>>2];A=0}break}case 61:{t[a>>2]=A;A=0;break}case 68:{t[a>>2]=c;A=0;break}case 75:{t[a>>2]=l;A=0;break}case 76:{t[a>>2]=l;A=0;break}case 77:{if((s|0)<3)A=-2;else{t[a>>2]=l;A=0}break}case 79:{if((s|0)<4)A=-2;else{t[a>>2]=l;A=0}break}case 81:{t[a>>2]=A+4;A=1;break}case 82:{f=l+2|0;t[k>>2]=f;A=f;if((d-A|0)>1){if((i[l+3>>0]|0)==0?(i[f>>0]|0)==62:0){t[a>>2]=l+4;A=3;break}t[a>>2]=A;A=0}else A=-1;break}case 87:{t[a>>2]=f;A=0;break}case 89:{t[a>>2]=A;A=0;break}}h=v;return A|0}function G$(e,A,r){e=e|0;A=A|0;r=r|0;t[r>>2]=11;e:do{if((A-e|0)==6?(i[e+1>>0]|0)==0:0){switch(i[e>>0]|0){case 120:{A=0;break}case 88:{A=1;break}default:{A=1;break e}}if(!(i[e+3>>0]|0)){switch(i[e+2>>0]|0){case 109:break;case 77:{A=1;break}default:{A=1;break e}}if(!(i[e+5>>0]|0)){switch(i[e+4>>0]|0){case 108:break;case 76:{A=0;break e}default:{A=1;break e}}if(!A){t[r>>2]=12;A=1}else A=0}else A=1}else A=1}else A=1}while(0);return A|0}function L$(e,A,r,a,f){e=e|0;A=A|0;r=r|0;a=a|0;f=f|0;var l=0,s=0,c=0,o=0;c=A+72|0;e:while(1){A:while(1){s=a-r|0;if((s|0)<=1){r=-1;break e}A=i[r+1>>0]|0;l=i[r>>0]|0;if(!(A<<24>>24))A=n[c+(l&255)>>0]|0;else A=d$(A,l)|0;switch(A|0){case 8:case 1:case 0:{o=10;break e}case 6:{o=9;break A}case 7:{o=19;break A}case 5:{r=r+2|0;continue A}case 13:case 12:{l=r+2|0;if((A|0)==(e|0)){o=12;break e}else{r=l;continue A}}default:{r=r+2|0;continue A}}}if((o|0)==9){o=0;if((s|0)<3){r=-2;break}else{r=r+3|0;continue}}else if((o|0)==19){o=0;if((s|0)<4){r=-2;break}else{r=r+4|0;continue}}}e:do{if((o|0)==10){t[f>>2]=r;r=0}else if((o|0)==12)if((a-l|0)>1){t[f>>2]=l;a=i[r+3>>0]|0;r=i[l>>0]|0;if(!(a<<24>>24))r=n[c+(r&255)>>0]|0;else r=d$(a,r)|0;switch(r|0){case 20:case 30:case 11:case 10:case 9:case 21:{r=27;break e}default:{}}r=0}else r=-27}while(0);return r|0}function Q$(e,A,r,a){e=e|0;A=A|0;r=r|0;a=a|0;var f=0,l=0,s=0,c=0,o=0;c=r;e:do{if((c-A|0)>1){f=i[A+1>>0]|0;if(!(f<<24>>24))f=n[e+72+(n[A>>0]|0)>>0]|0;else f=d$(f,i[A>>0]|0)|0;switch(f|0){case 27:{f=B$(e,A+2|0,r,a)|0;break e}case 20:{t[a>>2]=A+2;f=33;break e}case 24:case 22:{s=e+72|0;A:while(1){l=A+2|0;r=c-l|0;if((r|0)<=1){f=-1;break e}f=i[A+3>>0]|0;e=i[l>>0]|0;if(!(f<<24>>24))f=n[s+(e&255)>>0]|0;else f=d$(f,e)|0;switch(f|0){case 24:case 22:{A=l;break}case 30:{o=15;break A}case 10:case 9:case 21:break A;default:{o=22;break A}}}if((o|0)==22){t[a>>2]=l;f=0;break e}A:do{if((o|0)==15){if((r|0)<=3){f=-1;break e}e=i[A+5>>0]|0;f=i[A+4>>0]|0;if(!(e<<24>>24))f=n[s+(f&255)>>0]|0;else f=d$(e,f)|0;switch(f|0){case 30:case 10:case 9:case 21:break;default:break A}t[a>>2]=l;f=0;break e}}while(0);t[a>>2]=l;f=16;break e}default:{t[a>>2]=A;f=0;break e}}}else f=-1}while(0);return f|0}function D$(e,A,r,a){e=e|0;A=A|0;r=r|0;a=a|0;var f=0,l=0,s=0,c=0;s=r-A|0;e:do{if((s|0)>1){c=i[A+1>>0]|0;if(!(c<<24>>24)){l=i[A>>0]|0;f=n[e+72+(l&255)>>0]|0}else{l=i[A>>0]|0;f=d$(c,l)|0}switch(f|0){case 29:{s=l&255;if(!(1<<(s&31)&t[56940+((s>>>5|(n[143788+(c&255)>>0]|0)<<3)<<2)>>2])){t[a>>2]=A;r=0;break e}break}case 24:case 22:break;case 5:{t[a>>2]=A;r=0;break e}case 6:{if((s|0)<3){r=-2;break e}t[a>>2]=A;r=0;break e}case 7:{if((s|0)<4){r=-2;break e}t[a>>2]=A;r=0;break e}default:{t[a>>2]=A;r=0;break e}}e=e+72|0;c=A;A:while(1){f=c;c=c+2|0;A=r-c|0;if((A|0)<=1){r=-20;break e}f=i[f+3>>0]|0;l=i[c>>0]|0;if(!(f<<24>>24))s=n[e+(l&255)>>0]|0;else s=d$(f,l)|0;switch(s|0){case 27:case 26:case 25:case 24:case 22:continue A;case 5:{f=22;break A}case 6:{f=23;break A}case 7:{f=25;break A}case 36:case 30:case 11:case 32:case 21:case 10:case 9:{f=27;break A}case 29:break;default:{f=28;break A}}A=l&255;if(!(1<<(A&31)&t[56940+((A>>>5|(n[144044+(f&255)>>0]|0)<<3)<<2)>>2])){f=21;break}}if((f|0)==21){t[a>>2]=c;r=0;break}else if((f|0)==22){t[a>>2]=c;r=0;break}else if((f|0)==23){if((A|0)<3){r=-2;break}t[a>>2]=c;r=0;break}else if((f|0)==25){if((A|0)<4){r=-2;break}t[a>>2]=c;r=0;break}else if((f|0)==27){t[a>>2]=c;r=20;break}else if((f|0)==28){t[a>>2]=c;r=0;break}}else r=-1}while(0);return r|0}function z$(e,A,r){e=e|0;A=A|0;r=r|0;r=W$(r)|0;if((r|0)==-1)r=0;else{i[e+69>>0]=r;t[e>>2]=67;t[e+4>>2]=68;t[e+48>>2]=31;t[e+72>>2]=A;t[A>>2]=e;r=1}return r|0}function W$(e){e=e|0;var A=0;e:do{if(!e)A=6;else{A=0;while(1){if((A|0)>=6){A=-1;break e}if(w0(e,t[60068+(A<<2)>>2]|0)|0)break e;A=A+1|0}}}while(0);return A|0}function Y$(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;return V$(58948,e,0,A,r,i)|0}function F$(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;return V$(58948,e,1,A,r,i)|0}function M$(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;IK(58584,A,r,i);return}function V$(e,A,r,a,n,f){e=e|0;A=A|0;r=r|0;a=a|0;n=n|0;f=f|0;var l=0,s=0,c=0,o=0;e:do{if(a>>>0>>0){o=t[A+72>>2]|0;l=a+1|0;A:do{if((l|0)==(n|0)){l=i[A+69>>0]|0;if(((l<<24>>24)+-3|0)>>>0<3){l=-1;break e}switch(i[a>>0]|0){case 60:case 0:{l=-1;break e}case-17:case-1:case-2:break;default:break A}if(!((r|0)==1&l<<24>>24==0)){l=-1;break e}}else{c=i[a>>0]|0;l=i[l>>0]|0;s=((c&255)<<8|l&255)&65535;r:do{if(s<<16>>16<-2){if(s<<16>>16>=-257){switch(s<<16>>16){case-257:break;default:break r}if((r|0)==1&(i[A+69>>0]|0)==0)break A;t[f>>2]=a+2;t[o>>2]=t[e+16>>2];l=14;break e}switch(s<<16>>16){case-4165:break;default:break r}if((r|0)==1)switch(i[A+69>>0]|0){case 0:case 3:case 4:case 5:break A;default:{}}l=a+2|0;if((l|0)==(n|0)){l=-1;break e}if((i[l>>0]|0)!=-65)break A;t[f>>2]=a+3;t[o>>2]=t[e+8>>2];l=14;break e}else{if(s<<16>>16<15360){switch(s<<16>>16){case-2:break;default:break r}if((r|0)==1&(i[A+69>>0]|0)==0)break A;t[f>>2]=a+2;t[o>>2]=t[e+20>>2];l=14;break e}switch(s<<16>>16){case 15360:break;default:break r}l=i[A+69>>0]|0;if(l<<24>>24==4){if((r|0)==1)break A}else if((r|0)==1&l<<24>>24==3)break A;l=t[e+20>>2]|0;t[o>>2]=l;l=Q5[t[l+(r<<2)>>2]&127](l,a,n,f)|0;break e}}while(0);if(c<<24>>24){if((r|0)==1|l<<24>>24!=0)break;l=t[e+20>>2]|0;t[o>>2]=l;l=Q5[t[l+(r<<2)>>2]&127](l,a,n,f)|0;break e}if((r|0)==1?(i[A+69>>0]|0)==5:0)break;l=t[e+16>>2]|0;t[o>>2]=l;l=Q5[t[l+(r<<2)>>2]&127](l,a,n,f)|0;break e}}while(0);l=t[e+(i[A+69>>0]<<2)>>2]|0;t[o>>2]=l;l=Q5[t[l+(r<<2)>>2]&127](l,a,n,f)|0}else l=-4}while(0);return l|0}function N$(e,A,r,a){e=e|0;A=A|0;r=r|0;a=a|0;var f=0,l=0,s=0,c=0,o=0,u=0;e:do{if(A>>>0>>0){l=A;u=r-l|0;c=(u&1|0)==0;u=u&-2;o=(u|0)==0;u=c|o?r:A+u|0;if(c|o^1){r=i[A>>0]|0;if(!(r<<24>>24)){f=i[A+1>>0]|0;s=f;f=n[e+72+(f&255)>>0]|0}else{f=i[A+1>>0]|0;s=f;f=d$(r,f)|0}do{switch(f|0){case 12:{r=o0(12,e,A+2|0,u,a)|0;break e}case 13:{r=o0(13,e,A+2|0,u,a)|0;break e}case 2:{f=A+2|0;if((u-f|0)<=1){r=-1;break e}r=i[f>>0]|0;if(!(r<<24>>24))r=n[e+72+(n[A+3>>0]|0)>>0]|0;else r=d$(r,i[A+3>>0]|0)|0;switch(r|0){case 16:{r=u0(e,A+4|0,u,a)|0;break e}case 15:{r=f0(e,A+4|0,u,a)|0;break e}case 7:case 6:case 5:case 29:case 24:case 22:{t[a>>2]=A;r=29;break e}default:{t[a>>2]=f;r=0;break e}}}case 9:{if((A+2|0)==(u|0)){t[a>>2]=u;r=-15;break e}else l=7;break}case 10:case 21:{l=7;break}case 30:{r=A0(e,A+2|0,u,a)|0;break e}case 35:{t[a>>2]=A+2;r=38;break e}case 20:{t[a>>2]=A+2;r=25;break e}case 4:{f=A+2|0;r=u-f|0;if((r|0)<=1){r=-26;break e}if((i[f>>0]|0)==0?(i[A+3>>0]|0)==93:0){if((r|0)<=3){r=-1;break e}if((i[A+4>>0]|0)==0?(i[A+5>>0]|0)==62:0){t[a>>2]=A+6;r=34;break e}}t[a>>2]=f;r=26;break e}case 31:{t[a>>2]=A+2;r=23;break e}case 32:{f=A+2|0;if((u-f|0)<=1){r=-24;break e}r=i[f>>0]|0;if(!(r<<24>>24))r=n[e+72+(n[A+3>>0]|0)>>0]|0;else r=d$(r,i[A+3>>0]|0)|0;switch(r|0){case 33:{t[a>>2]=A+4;r=36;break e}case 15:{t[a>>2]=A+4;r=35;break e}case 34:{t[a>>2]=A+4;r=37;break e}case 32:case 36:case 35:case 11:case 21:case 10:case 9:{t[a>>2]=f;r=24;break e}default:{t[a>>2]=f;r=0;break e}}}case 36:{t[a>>2]=A+2;r=21;break e}case 11:{t[a>>2]=A+2;r=17;break e}case 19:{r=b0(e,A+2|0,u,a)|0;break e}case 5:{if((u-l|0)<2){r=-2;break e}t[a>>2]=A;r=0;break e}case 6:{if((u-l|0)<3){r=-2;break e}t[a>>2]=A;r=0;break e}case 7:{if((u-l|0)<4){r=-2;break e}t[a>>2]=A;r=0;break e}case 24:case 22:{r=18;l=61;break}case 23:case 27:case 26:case 25:{r=19;l=61;break}case 29:{l=r&255;f=s&255;r=f>>>5;f=1<<(f&31);if(!(f&t[56940+((r|n[143788+l>>0]<<3)<<2)>>2]))if(!(t[56940+((n[144044+l>>0]<<3|r)<<2)>>2]&f))l=64;else{r=19;l=61}else{r=18;l=61}break}default:l=64}}while(0);if((l|0)==7){c=u;e=e+72|0;s=A;A:while(1){l=s;s=s+2|0;if((c-s|0)<=1){l=28;break}r=i[s>>0]|0;f=i[l+3>>0]|0;if(!(r<<24>>24))r=n[e+(f&255)>>0]|0;else r=d$(r,f)|0;switch(r|0){case 10:case 21:continue A;case 9:break;default:{l=27;break A}}if((l+4|0)==(u|0)){l=27;break}}if((l|0)==27){t[a>>2]=s;r=15;break}else if((l|0)==28){t[a>>2]=s;r=15;break}}else if((l|0)==61){o=e+72|0;f=A+2|0;A:while(1){A=r&255;r:while(1){c=u-f|0;if((c|0)<=1){l=104;break A}l=i[f>>0]|0;s=i[f+1>>0]|0;if(!(l<<24>>24))e=n[o+(s&255)>>0]|0;else e=d$(l,s)|0;switch(e|0){case 5:{l=73;break A}case 6:{l=74;break A}case 7:{l=76;break A}case 10:case 9:case 21:case 30:case 20:case 36:case 35:case 32:case 11:{l=78;break A}case 34:{l=94;break A}case 33:{l=97;break A}case 15:{l=100;break A}case 29:{c=s&255;if(!(1<<(c&31)&t[56940+((c>>>5|n[144044+(l&255)>>0]<<3)<<2)>>2])){l=71;break A}break}case 27:case 26:case 25:case 24:case 22:break;case 23:{c=f+2|0;switch(A&63){case 41:{r=19;f=c;continue A}case 18:break r;default:{f=c;continue r}}}default:{l=103;break A}}f=f+2|0}e=u-c|0;if((e|0)<=1){r=-1;break e}r=i[c>>0]|0;l=i[f+3>>0]|0;if(!(r<<24>>24))s=n[o+(l&255)>>0]|0;else s=d$(r,l)|0;switch(s|0){case 5:{l=89;break A}case 6:{l=90;break A}case 7:{l=92;break A}case 29:{A=l&255;if(!(1<<(A&31)&t[56940+((A>>>5|n[144044+(r&255)>>0]<<3)<<2)>>2])){l=87;break A}break}case 27:case 26:case 25:case 24:case 22:break;default:{r=19;f=c;continue A}}r=41;f=f+4|0}switch(l|0){case 71:{t[a>>2]=f;r=0;break e}case 73:{t[a>>2]=f;r=0;break e}case 74:{if((c|0)<3){r=-2;break e}t[a>>2]=f;r=0;break e}case 76:{if((c|0)<4){r=-2;break e}t[a>>2]=f;r=0;break e}case 78:{t[a>>2]=f;break e}case 87:{t[a>>2]=c;r=0;break e}case 89:{t[a>>2]=c;r=0;break e}case 90:{if((e|0)<3){r=-2;break e}t[a>>2]=c;r=0;break e}case 92:{if((e|0)<4){r=-2;break e}t[a>>2]=c;r=0;break e}case 94:if((r|0)==19){t[a>>2]=f;r=0;break e}else{t[a>>2]=f+2;r=32;break e}case 97:if((r|0)==19){t[a>>2]=f;r=0;break e}else{t[a>>2]=f+2;r=31;break e}case 100:if((r|0)==19){t[a>>2]=f;r=0;break e}else{t[a>>2]=f+2;r=30;break e}case 103:{t[a>>2]=f;r=0;break e}case 104:{r=0-r|0;break e}}}else if((l|0)==64){t[a>>2]=A;r=0;break}}else r=-1}else r=-4}while(0);return r|0}function R$(e,A,r,a){e=e|0;A=A|0;r=r|0;a=a|0;var f=0,l=0,s=0,c=0;e:do{if(A>>>0>>0){f=A;l=r-f|0;c=(l&1|0)==0;l=l&-2;s=(l|0)==0;l=c|s?r:A+l|0;if(c|s^1){r=i[A>>0]|0;if(!(r<<24>>24))r=n[e+72+(n[A+1>>0]|0)>>0]|0;else r=d$(r,i[A+1>>0]|0)|0;do{switch(r|0){case 2:{r=a0(e,A+2|0,l,a)|0;break e}case 3:{r=e0(e,A+2|0,l,a)|0;break e}case 9:{f=A+2|0;if((l-f|0)<=1){r=-3;break e}r=i[f>>0]|0;if(!(r<<24>>24))r=n[e+72+(n[A+3>>0]|0)>>0]|0;else r=d$(r,i[A+3>>0]|0)|0;t[a>>2]=(r|0)==10?A+4|0:f;r=7;break e}case 10:{t[a>>2]=A+2;r=7;break e}case 4:{f=A+2|0;if((l-f|0)<=1){r=-5;break e}if((i[f>>0]|0)==0?(i[A+3>>0]|0)==93:0){r=A+4|0;if((l-r|0)<=1){r=-5;break e}if((i[r>>0]|0)==0?(i[A+5>>0]|0)==62:0){t[a>>2]=r;r=0;break e}else r=l}else r=l;break}case 5:{r=l;if((r-f|0)<2){r=-2;break e}f=A+2|0;break}case 6:{r=l;if((r-f|0)<3){r=-2;break e}f=A+3|0;break}case 7:{r=l;if((r-f|0)<4){r=-2;break e}f=A+4|0;break}case 8:case 1:case 0:{t[a>>2]=A;r=0;break e}default:{f=A+2|0;r=l}}}while(0);s=e+72|0;e=f;A:while(1){A=r-e|0;if((A|0)<=1){f=52;break}f=i[e>>0]|0;l=i[e+1>>0]|0;if(!(f<<24>>24))f=n[s+(l&255)>>0]|0;else f=d$(f,l)|0;switch(f|0){case 10:case 9:case 8:case 1:case 0:case 2:case 3:{f=50;break A}case 5:{e=e+2|0;continue A}case 6:{if((A|0)<3){f=38;break A}e=e+3|0;continue A}case 7:{if((A|0)<4){f=41;break A}e=e+4|0;continue A}case 4:{if((A|0)<=3){f=50;break A}f=e+2|0;if(i[f>>0]|0){e=f;continue A}if((i[e+3>>0]|0)!=93){e=f;continue A}if((A|0)<=5){f=50;break A}l=e+4|0;if(i[l>>0]|0){e=f;continue A}if((i[e+5>>0]|0)==62){f=49;break A}else{e=f;continue A}}default:{e=e+2|0;continue A}}}if((f|0)==38){t[a>>2]=e;r=6;break}else if((f|0)==41){t[a>>2]=e;r=6;break}else if((f|0)==49){t[a>>2]=l;r=0;break}else if((f|0)==50){t[a>>2]=e;r=6;break}else if((f|0)==52){t[a>>2]=e;r=6;break}}else r=-1}else r=-4}while(0);return r|0}function x$(e,A,r,a){e=e|0;A=A|0;r=r|0;a=a|0;var f=0,l=0,s=0,c=0;e:do{if(A>>>0>>0){f=A;l=r-f|0;c=(l&1|0)==0;l=l&-2;s=(l|0)==0;l=c|s?r:A+l|0;if(c|s^1){r=i[A>>0]|0;if(!(r<<24>>24))r=n[e+72+(n[A+1>>0]|0)>>0]|0;else r=d$(r,i[A+1>>0]|0)|0;switch(r|0){case 4:{f=A+2|0;if((l-f|0)<=1){r=-1;break e}if((i[f>>0]|0)==0?(i[A+3>>0]|0)==93:0){r=A+4|0;if((l-r|0)<=1){r=-1;break e}if((i[r>>0]|0)==0?(i[A+5>>0]|0)==62:0){t[a>>2]=A+6;r=40;break e}}break}case 9:{f=A+2|0;if((l-f|0)<=1){r=-1;break e}r=i[f>>0]|0;if(!(r<<24>>24))r=n[e+72+(n[A+3>>0]|0)>>0]|0;else r=d$(r,i[A+3>>0]|0)|0;t[a>>2]=(r|0)==10?A+4|0:f;r=7;break e}case 10:{t[a>>2]=A+2;r=7;break e}case 5:{r=l;if((r-f|0)<2){r=-2;break e}f=A+2|0;l=r;break}case 6:{r=l;if((r-f|0)<3){r=-2;break e}f=A+3|0;l=r;break}case 7:{r=l;if((r-f|0)<4){r=-2;break e}f=A+4|0;l=r;break}case 8:case 1:case 0:{t[a>>2]=A;r=0;break e}default:f=A+2|0}s=e+72|0;e=f;A:while(1){A=l-e|0;if((A|0)<=1){f=40;break}r=i[e>>0]|0;f=i[e+1>>0]|0;if(!(r<<24>>24))r=n[s+(f&255)>>0]|0;else r=d$(r,f)|0;switch(r|0){case 10:case 9:case 8:case 1:case 0:case 4:{f=38;break A}case 6:{if((A|0)<3){f=35;break A}else r=3;break}case 7:{if((A|0)<4){f=37;break A}else r=4;break}default:r=2}e=e+r|0}if((f|0)==35){t[a>>2]=e;r=6;break}else if((f|0)==37){t[a>>2]=e;r=6;break}else if((f|0)==38){t[a>>2]=e;r=6;break}else if((f|0)==40){t[a>>2]=e;r=6;break}}else r=-1}else r=-4}while(0);return r|0}function J$(e,A,r,a){e=e|0;A=A|0;r=r|0;a=a|0;var f=0,l=0,s=0,c=0,o=0;c=r-A|0;c=(c&1|0)==0?r:A+(c&-2)|0;s=e+72|0;l=0;r=A;e:while(1){f=c-r|0;if((f|0)<=1){r=-1;break}e=i[r>>0]|0;A=i[r+1>>0]|0;if(!(e<<24>>24))e=n[s+(A&255)>>0]|0;else e=d$(e,A)|0;switch(e|0){case 8:case 1:case 0:{o=12;break e}case 5:{f=l;r=r+2|0;l=f;continue e}case 6:{if((f|0)<3){r=-2;break e}f=l;r=r+3|0;l=f;continue e}case 7:{if((f|0)<4){r=-2;break e}f=l;r=r+4|0;l=f;continue e}case 2:{e=r+2|0;if((c-e|0)<=1){r=-1;break e}if(i[e>>0]|0){f=l;r=e;l=f;continue e}if((i[r+3>>0]|0)!=33){f=l;r=e;l=f;continue e}e=r+4|0;if((c-e|0)<=1){r=-1;break e}if(i[e>>0]|0){f=l;r=e;l=f;continue e}f=(i[r+5>>0]|0)==91;l=l+(f&1)|0;r=f?r+6|0:e;continue e}case 4:{e=r+2|0;if((c-e|0)<=1){r=-1;break e}if(i[e>>0]|0){f=l;r=e;l=f;continue e}if((i[r+3>>0]|0)!=93){f=l;r=e;l=f;continue e}e=r+4|0;if((c-e|0)<=1){r=-1;break e}if(i[e>>0]|0){f=l;r=e;l=f;continue e}if((i[r+5>>0]|0)!=62){f=l;r=e;l=f;continue e}r=r+6|0;if(!l){o=26;break e}l=l+-1|0;continue e}default:{f=l;r=r+2|0;l=f;continue e}}}if((o|0)==12){t[a>>2]=r;r=0}else if((o|0)==26){t[a>>2]=r;r=42}return r|0}function H$(e,A,r,a){e=e|0;A=A|0;r=r|0;a=a|0;var f=0,l=0,s=0,c=0,o=0;do{if(A>>>0>>0){c=r;if((c-A|0)>1){o=e+72|0;s=A;e:while(1){if((c-s|0)<=1){l=30;break}f=i[s>>0]|0;l=i[s+1>>0]|0;if(!(f<<24>>24))f=n[o+(l&255)>>0]|0;else f=d$(f,l)|0;switch(f|0){case 3:{l=11;break e}case 2:{l=14;break e}case 10:{l=15;break e}case 9:{l=18;break e}case 21:{l=25;break e}case 5:{f=2;break}case 6:{f=3;break}case 7:{f=4;break}default:f=2}s=s+f|0}if((l|0)==11)if((s|0)==(A|0)){f=e0(e,A+2|0,r,a)|0;break}else{t[a>>2]=s;f=6;break}else if((l|0)==14){t[a>>2]=s;f=0;break}else if((l|0)==15)if((s|0)==(A|0)){t[a>>2]=A+2;f=7;break}else{t[a>>2]=s;f=6;break}else if((l|0)==18){if((s|0)!=(A|0)){t[a>>2]=s;f=6;break}s=A+2|0;if((c-s|0)<=1){f=-3;break}f=i[s>>0]|0;l=i[A+3>>0]|0;if(!(f<<24>>24))f=n[o+(l&255)>>0]|0;else f=d$(f,l)|0;t[a>>2]=(f|0)==10?A+4|0:s;f=7;break}else if((l|0)==25)if((s|0)==(A|0)){t[a>>2]=A+2;f=39;break}else{t[a>>2]=s;f=6;break}else if((l|0)==30){t[a>>2]=s;f=6;break}}else f=-1}else f=-4}while(0);return f|0}function P$(e,A,r,a){e=e|0;A=A|0;r=r|0;a=a|0;var f=0,l=0,s=0,c=0,o=0;do{if(A>>>0>>0){c=r;if((c-A|0)>1){o=e+72|0;s=A;e:while(1){if((c-s|0)<=1){l=29;break}f=i[s>>0]|0;l=i[s+1>>0]|0;if(!(f<<24>>24))f=n[o+(l&255)>>0]|0;else f=d$(f,l)|0;switch(f|0){case 3:{l=11;break e}case 30:{l=14;break e}case 10:{l=17;break e}case 9:{l=20;break e}case 5:{f=2;break}case 6:{f=3;break}case 7:{f=4;break}default:f=2}s=s+f|0}if((l|0)==11)if((s|0)==(A|0)){f=e0(e,A+2|0,r,a)|0;break}else{t[a>>2]=s;f=6;break}else if((l|0)==14)if((s|0)==(A|0)){f=A0(e,A+2|0,r,a)|0;f=(f|0)==22?0:f;break}else{t[a>>2]=s;f=6;break}else if((l|0)==17)if((s|0)==(A|0)){t[a>>2]=A+2;f=7;break}else{t[a>>2]=s;f=6;break}else if((l|0)==20){if((s|0)!=(A|0)){t[a>>2]=s;f=6;break}s=A+2|0;if((c-s|0)<=1){f=-3;break}f=i[s>>0]|0;l=i[A+3>>0]|0;if(!(f<<24>>24))f=n[o+(l&255)>>0]|0;else f=d$(f,l)|0;t[a>>2]=(f|0)==10?A+4|0:s;f=7;break}else if((l|0)==29){t[a>>2]=s;f=6;break}}else f=-1}else f=-4}while(0);return f|0}function X$(e,A,r,a){e=e|0;A=A|0;r=r|0;a=a|0;var t=0,n=0;t=r;e=A;while(1){A=i[a>>0]|0;if(!(A<<24>>24)){n=7;break}if((t-e|0)<2){e=0;break}if(i[e>>0]|0){e=0;break}if((i[e+1>>0]|0)!=A<<24>>24){e=0;break}a=a+1|0;e=e+2|0}if((n|0)==7)e=(e|0)==(r|0)&1;return e|0}function S$(e,A){e=e|0;A=A|0;var r=0,a=0,t=0;t=e+72|0;a=A;e:while(1){e=i[a>>0]|0;r=i[a+1>>0]|0;if(!(e<<24>>24))e=n[t+(r&255)>>0]|0;else e=d$(e,r)|0;switch(e|0){case 5:{e=2;break}case 6:{e=3;break}case 7:{e=4;break}case 27:case 26:case 25:case 24:case 23:case 22:case 29:{e=2;break}default:break e}a=a+e|0}return a-A|0}function j$(e,A){e=e|0;A=A|0;var r=0,a=0;a=e+72|0;e:while(1){e=i[A>>0]|0;r=i[A+1>>0]|0;if(!(e<<24>>24))e=n[a+(r&255)>>0]|0;else e=d$(e,r)|0;switch(e|0){case 21:case 9:case 10:break;default:break e}A=A+2|0}return A|0}function U$(e,A,r,a){e=e|0;A=A|0;r=r|0;a=a|0;var f=0,l=0,s=0,c=0,o=0,u=0,b=0,h=0;h=e+72|0;u=0;b=0;e=1;e:while(1){o=A+2|0;f=i[o>>0]|0;s=f<<24>>24==0;l=A+3|0;c=i[l>>0]|0;if(s)f=n[h+(c&255)>>0]|0;else f=d$(f,c)|0;do{switch(f|0){case 5:{if(e|0){l=e;s=b;c=u;A=o;e=l;b=s;u=c;continue e}if((b|0)>=(r|0)){s=b;c=u;e=1;A=o;b=s;u=c;continue e}t[a+(b<<4)>>2]=o;i[a+(b<<4)+12>>0]=1;s=b;c=u;e=1;A=o;b=s;u=c;continue e}case 6:{if(e|0){s=e;c=b;o=u;A=l;e=s;b=c;u=o;continue e}if((b|0)>=(r|0)){c=b;o=u;e=1;A=l;b=c;u=o;continue e}t[a+(b<<4)>>2]=o;i[a+(b<<4)+12>>0]=1;c=b;o=u;e=1;A=l;b=c;u=o;continue e}case 7:{if(!e)if((b|0)<(r|0)){t[a+(b<<4)>>2]=o;i[a+(b<<4)+12>>0]=1;e=1}else e=1;c=b;o=u;A=A+4|0;b=c;u=o;continue e}case 24:case 22:case 29:{if(e|0){l=e;s=b;c=u;A=o;e=l;b=s;u=c;continue e}if((b|0)>=(r|0)){s=b;c=u;e=1;A=o;b=s;u=c;continue e}t[a+(b<<4)>>2]=o;i[a+(b<<4)+12>>0]=1;s=b;c=u;e=1;A=o;b=s;u=c;continue e}case 12:{if((e|0)!=2){if((b|0)>=(r|0)){c=b;u=12;e=2;A=o;b=c;continue e}t[a+(b<<4)+4>>2]=A+4;c=b;u=12;e=2;A=o;b=c;continue e}if((u|0)!=12){s=b;c=u;e=2;A=o;b=s;u=c;continue e}if((b|0)<(r|0))t[a+(b<<4)+8>>2]=o;u=12;b=b+1|0;e=0;A=o;continue e}case 13:{if((e|0)!=2){if((b|0)>=(r|0)){c=b;u=13;e=2;A=o;b=c;continue e}t[a+(b<<4)+4>>2]=A+4;c=b;u=13;e=2;A=o;b=c;continue e}if((u|0)!=13){s=b;c=u;e=2;A=o;b=s;u=c;continue e}if((b|0)<(r|0))t[a+(b<<4)+8>>2]=o;u=13;b=b+1|0;e=0;A=o;continue e}case 3:{if((b|0)>=(r|0)){l=e;s=b;c=u;A=o;e=l;b=s;u=c;continue e}i[a+(b<<4)+12>>0]=0;l=e;s=b;c=u;A=o;e=l;b=s;u=c;continue e}case 21:{switch(e|0){case 1:{s=b;c=u;e=0;A=o;b=s;u=c;continue e}case 2:break;default:{l=e;s=b;c=u;A=o;e=l;b=s;u=c;continue e}}if((b|0)>=(r|0)){s=b;c=u;e=2;A=o;b=s;u=c;continue e}l=a+(b<<4)+12|0;if(!(i[l>>0]|0)){s=b;c=u;e=2;A=o;b=s;u=c;continue e}do{if(s&(o|0)!=(t[a+(b<<4)+4>>2]|0)&c<<24>>24==32){f=i[A+4>>0]|0;e=i[A+5>>0]|0;if(!(f<<24>>24)){if(e<<24>>24==32)break;e=n[h+(e&255)>>0]|0}else e=d$(f,e)|0;if((e|0)!=(u|0)){s=b;c=u;e=2;A=o;b=s;u=c;continue e}}}while(0);i[l>>0]=0;s=b;c=u;e=2;A=o;b=s;u=c;continue e}case 10:case 9:{switch(e|0){case 1:{s=b;c=u;e=0;A=o;b=s;u=c;continue e}case 2:break;default:{l=e;s=b;c=u;A=o;e=l;b=s;u=c;continue e}}if((b|0)>=(r|0)){s=b;c=u;e=2;A=o;b=s;u=c;continue e}i[a+(b<<4)+12>>0]=0;s=b;c=u;e=2;A=o;b=s;u=c;continue e}case 17:case 11:if((e|0)==2){s=b;c=u;e=2;A=o;b=s;u=c;continue e}else break e;default:{l=e;s=b;c=u;A=o;e=l;b=s;u=c;continue e}}}while(0)}return b|0}function T$(e,A){e=e|0;A=A|0;var r=0,a=0;e=A+4|0;e:do{if(!(i[e>>0]|0))if((i[A+5>>0]|0)==120){A=A+6|0;e=0;while(1){A:while(1){if(!(i[A>>0]|0)){r=i[A+1>>0]|0;if(r<<24>>24==59){a=18;break e}r=r<<24>>24;switch(r|0){case 57:case 56:case 55:case 54:case 53:case 52:case 51:case 50:case 49:case 48:{a=8;break A}case 70:case 69:case 68:case 67:case 66:case 65:{a=9;break A}case 102:case 101:case 100:case 99:case 98:case 97:{a=10;break A}default:{}}}A=A+2|0}if((a|0)==8)e=r+-48|e<<4;else if((a|0)==9)e=(e<<4)+-55+r|0;else if((a|0)==10)e=(e<<4)+-87+r|0;if((e|0)<1114112)A=A+2|0;else{e=-1;a=19;break}}}else{A=e;e=0;a=13}else{r=e;e=0;A=-1;a=16}}while(0);while(1)if((a|0)==13){if(i[A>>0]|0){r=A;A=-1;a=16;continue}if((i[A+1>>0]|0)==59){a=18;continue}r=A;A=i[A+1>>0]|0;a=16;continue}else if((a|0)==16){e=(e*10|0)+-48+A|0;if((e|0)>=1114112){e=-1;a=19;continue}A=r+2|0;a=13;continue}else if((a|0)==18){e=po(e)|0;a=19;continue}else if((a|0)==19)return e|0;return 0}function O$(e,A,r){e=e|0;A=A|0;r=r|0;var a=0;e:do{switch((r-A|0)/2|0|0){case 2:{if((i[A+2>>0]|0)==0?(i[A+3>>0]|0)==116:0){if(!(i[A>>0]|0))e=i[A+1>>0]|0;else e=-1;e=(e|0)==108?60:(e|0)==103?62:0}else a=27;break}case 3:{if((((((i[A>>0]|0)==0?(i[A+1>>0]|0)==97:0)?(i[A+2>>0]|0)==0:0)?(i[A+3>>0]|0)==109:0)?(i[A+4>>0]|0)==0:0)?(i[A+5>>0]|0)==112:0)e=38;else a=27;break}case 4:{if(!(i[A>>0]|0))switch(i[A+1>>0]|0){case 113:{if(i[A+2>>0]|0){a=27;break e}if((i[A+3>>0]|0)!=117){a=27;break e}if(i[A+4>>0]|0){a=27;break e}if((i[A+5>>0]|0)!=111){a=27;break e}if(i[A+6>>0]|0){a=27;break e}if((i[A+7>>0]|0)==116){e=34;break e}else{a=27;break e}}case 97:{if(i[A+2>>0]|0){a=27;break e}if((i[A+3>>0]|0)!=112){a=27;break e}if(i[A+4>>0]|0){a=27;break e}if((i[A+5>>0]|0)!=111){a=27;break e}if(i[A+6>>0]|0){a=27;break e}if((i[A+7>>0]|0)==115){e=39;break e}else{a=27;break e}}default:{a=27;break e}}else a=27;break}default:a=27}}while(0);if((a|0)==27)e=0;return e|0}function _$(e,A,r,a){e=e|0;A=A|0;r=r|0;a=a|0;var f=0,l=0,s=0,c=0;s=e+72|0;c=a+4|0;while(1){if((r-A|0)<=1)break;e=i[A>>0]|0;f=i[A+1>>0]|0;if(!(e<<24>>24))e=n[s+(f&255)>>0]|0;else e=d$(e,f)|0;switch(e|0){case 5:{A=A+2|0;break}case 6:{A=A+3|0;break}case 7:{A=A+4|0;break}case 10:{t[c>>2]=-1;t[a>>2]=(t[a>>2]|0)+1;A=A+2|0;break}case 9:{t[a>>2]=(t[a>>2]|0)+1;l=A+2|0;if((r-l|0)>1){e=i[l>>0]|0;f=i[A+3>>0]|0;if(!(e<<24>>24))e=n[s+(f&255)>>0]|0;else e=d$(e,f)|0;A=(e|0)==10?A+4|0:l}else A=l;t[c>>2]=-1;break}default:A=A+2|0}t[c>>2]=(t[c>>2]|0)+1}return}function q$(e,A,r,a){e=e|0;A=A|0;r=r|0;a=a|0;var f=0,l=0,s=0,c=0,o=0;c=r+-2|0;s=e+72|0;e:while(1){f=A+2|0;if((c-f|0)<=1){r=1;break}r=i[f>>0]|0;l=r<<24>>24==0;e=i[A+3>>0]|0;if(l)r=n[s+(e&255)>>0]|0;else r=d$(r,e)|0;switch(r|0){case 23:case 19:case 30:case 33:case 16:case 18:case 10:case 9:case 15:case 14:case 17:case 35:case 34:case 32:case 31:case 13:case 27:case 24:case 25:{A=f;continue e}case 21:if(l&e<<24>>24==9){o=12;break e}else{A=f;continue e}case 22:case 26:{if(!l){o=12;break e}if(e<<24>>24>=0){A=f;continue e}break}default:if(!l){o=12;break e}}switch(e<<24>>24|0){case 64:case 36:{A=f;break}default:{o=12;break e}}}if((o|0)==12){t[a>>2]=f;r=0}return r|0}function K$(e,A,r,a,f){e=e|0;A=A|0;r=r|0;a=a|0;f=f|0;var l=0,s=0,c=0,o=0,u=0,b=0,h=0;s=t[A>>2]|0;c=s+(r-s&-2)|0;o=c;u=f;e:while(1){if(s>>>0>=c>>>0){e=0;break}l=i[s+1>>0]|0;e=i[s>>0]|0;r=e&255;switch(e<<24>>24){case 0:{if(l<<24>>24>-1){e=t[a>>2]|0;if((e|0)==(f|0)){e=2;break e}t[a>>2]=e+1;i[e>>0]=l;e=s}else b=7;break}case 7:case 6:case 5:case 4:case 3:case 2:case 1:{b=7;break}case-37:case-38:case-39:case-40:{e=t[a>>2]|0;if((u-e|0)<4){e=2;break e}if((o-s|0)<4){e=1;break e}h=l&255;l=(r<<2&12|h>>>6)+1|0;t[a>>2]=e+1;i[e>>0]=l>>>2|240;e=t[a>>2]|0;t[a>>2]=e+1;i[e>>0]=h>>>2&15|l<<4&48|128;e=s+2|0;l=n[s+3>>0]|0;r=(h<<4&48|l>>>6|i[e>>0]<<2&12|128)&255;s=t[a>>2]|0;t[a>>2]=s+1;i[s>>0]=r;s=t[a>>2]|0;t[a>>2]=s+1;i[s>>0]=l&63|128;break}default:{e=t[a>>2]|0;if((u-e|0)<3){e=2;break e}t[a>>2]=e+1;i[e>>0]=r>>>4|224;h=l&255;e=t[a>>2]|0;t[a>>2]=e+1;i[e>>0]=h>>>6|r<<2&60|128;e=t[a>>2]|0;t[a>>2]=e+1;i[e>>0]=h&63|128;e=s}}if((b|0)==7){b=0;e=t[a>>2]|0;if((u-e|0)<2){e=2;break}h=l&255;t[a>>2]=e+1;i[e>>0]=h>>>6|r<<2|192;e=t[a>>2]|0;t[a>>2]=e+1;i[e>>0]=h&63|128;e=s}s=e+2|0}t[A>>2]=s;return e|0}function $$(e,A,r,f,l){e=e|0;A=A|0;r=r|0;f=f|0;l=l|0;var s=0,c=0,o=0;s=t[A>>2]|0;o=r-s&-2;e=s+o|0;if((o|0)>(l-(t[f>>2]|0)|0)){c=e+-2|0;r=(i[c>>0]&-8)<<24>>24==-40;o=r&1;e=r?c:e}else o=0;r=s;while(1){s=r>>>0>>0;c=t[f>>2]|0;if(!(s&c>>>0>>0))break;s=((n[r>>0]|0)<<8|(n[r+1>>0]|0))&65535;t[f>>2]=c+2;a[c>>1]=s;c=(t[A>>2]|0)+2|0;t[A>>2]=c;r=c}return((c|0)!=(l|0)|s^1?o:2)|0}function e0(e,A,r,a){e=e|0;A=A|0;r=r|0;a=a|0;var f=0,l=0,s=0,c=0,o=0;o=r;s=o-A|0;e:do{if((s|0)>1){c=i[A>>0]|0;if(!(c<<24>>24)){l=i[A+1>>0]|0;f=n[e+72+(l&255)>>0]|0}else{l=i[A+1>>0]|0;f=d$(c,l)|0}switch(f|0){case 29:{s=l&255;if(!(1<<(s&31)&t[56940+((s>>>5|(n[143788+(c&255)>>0]|0)<<3)<<2)>>2])){t[a>>2]=A;e=0;break e}break}case 24:case 22:break;case 5:{t[a>>2]=A;e=0;break e}case 6:{if((s|0)<3){e=-2;break e}t[a>>2]=A;e=0;break e}case 7:{if((s|0)<4){e=-2;break e}t[a>>2]=A;e=0;break e}case 19:{e=r0(e,A+2|0,r,a)|0;break e}default:{t[a>>2]=A;e=0;break e}}c=e+72|0;s=A;A:while(1){l=s+2|0;A=o-l|0;if((A|0)<=1){e=-1;break e}e=i[l>>0]|0;r=i[s+3>>0]|0;if(!(e<<24>>24))f=n[c+(r&255)>>0]|0;else f=d$(e,r)|0;switch(f|0){case 27:case 26:case 25:case 24:case 22:{s=l;continue A}case 5:{r=23;break A}case 6:{r=24;break A}case 7:{r=26;break A}case 18:{r=28;break A}case 29:break;default:{r=29;break A}}A=r&255;if(!(1<<(A&31)&t[56940+((A>>>5|(n[144044+(e&255)>>0]|0)<<3)<<2)>>2])){r=22;break}else s=l}if((r|0)==22){t[a>>2]=l;e=0;break}else if((r|0)==23){t[a>>2]=l;e=0;break}else if((r|0)==24){if((A|0)<3){e=-2;break}t[a>>2]=l;e=0;break}else if((r|0)==26){if((A|0)<4){e=-2;break}t[a>>2]=l;e=0;break}else if((r|0)==28){t[a>>2]=s+4;e=9;break}else if((r|0)==29){t[a>>2]=l;e=0;break}}else e=-1}while(0);return e|0}function A0(e,A,r,a){e=e|0;A=A|0;r=r|0;a=a|0;var f=0,l=0,s=0,c=0,o=0;s=r-A|0;e:do{if((s|0)>1){c=i[A>>0]|0;if(!(c<<24>>24)){l=i[A+1>>0]|0;f=n[e+72+(l&255)>>0]|0}else{l=i[A+1>>0]|0;f=d$(c,l)|0}switch(f|0){case 29:{o=l&255;if(!(1<<(o&31)&t[56940+((o>>>5|(n[143788+(c&255)>>0]|0)<<3)<<2)>>2])){t[a>>2]=A;r=0;break e}break}case 24:case 22:break;case 5:{t[a>>2]=A;r=0;break e}case 6:{if((s|0)<3){r=-2;break e}t[a>>2]=A;r=0;break e}case 7:{if((s|0)<4){r=-2;break e}t[a>>2]=A;r=0;break e}case 30:case 9:case 10:case 21:{t[a>>2]=A;r=22;break e}default:{t[a>>2]=A;r=0;break e}}o=e+72|0;e=A;A:while(1){c=e+2|0;A=r-c|0;if((A|0)<=1){r=-1;break e}f=i[c>>0]|0;l=i[e+3>>0]|0;if(!(f<<24>>24))s=n[o+(l&255)>>0]|0;else s=d$(f,l)|0;switch(s|0){case 27:case 26:case 25:case 24:case 22:{e=c;continue A}case 5:{f=23;break A}case 6:{f=24;break A}case 7:{f=26;break A}case 18:{f=28;break A}case 29:break;default:{f=29;break A}}A=l&255;if(!(1<<(A&31)&t[56940+((A>>>5|(n[144044+(f&255)>>0]|0)<<3)<<2)>>2])){f=22;break}else e=c}if((f|0)==22){t[a>>2]=c;r=0;break}else if((f|0)==23){t[a>>2]=c;r=0;break}else if((f|0)==24){if((A|0)<3){r=-2;break}t[a>>2]=c;r=0;break}else if((f|0)==26){if((A|0)<4){r=-2;break}t[a>>2]=c;r=0;break}else if((f|0)==28){t[a>>2]=e+4;r=28;break}else if((f|0)==29){t[a>>2]=c;r=0;break}}else r=-1}while(0);return r|0}function r0(e,A,r,a){e=e|0;A=A|0;r=r|0;a=a|0;var f=0,l=0,s=0,c=0;c=r;e:do{if((c-A|0)>1){l=i[A>>0]|0;f=i[A+1>>0]|0;do{if(!(l<<24>>24))if(f<<24>>24==120){f=i0(e,A+2|0,r,a)|0;break e}else{f=n[e+72+(f&255)>>0]|0;break}else f=d$(l,f)|0}while(0);if((f|0)!=25){t[a>>2]=A;f=0;break}s=e+72|0;e=A;A:while(1){l=e+2|0;if((c-l|0)<=1){f=-1;break e}f=i[l>>0]|0;r=i[e+3>>0]|0;if(!(f<<24>>24))f=n[s+(r&255)>>0]|0;else f=d$(f,r)|0;switch(f|0){case 25:{e=l;break}case 18:{r=15;break A}default:{r=16;break A}}}if((r|0)==15){t[a>>2]=e+4;f=10;break}else if((r|0)==16){t[a>>2]=l;f=0;break}}else f=-1}while(0);return f|0}function i0(e,A,r,a){e=e|0;A=A|0;r=r|0;a=a|0;var f=0,l=0,s=0;e:do{if((r-A|0)>1){f=i[A>>0]|0;if(!(f<<24>>24))f=n[e+72+(n[A+1>>0]|0)>>0]|0;else f=d$(f,i[A+1>>0]|0)|0;if((f&-2|0)!=24){t[a>>2]=A;r=0;break}s=e+72|0;A:while(1){l=A+2|0;if((r-l|0)<=1){r=-1;break e}f=i[l>>0]|0;e=i[A+3>>0]|0;if(!(f<<24>>24))f=n[s+(e&255)>>0]|0;else f=d$(f,e)|0;switch(f|0){case 24:case 25:{A=l;break}case 18:{f=13;break A}default:{f=14;break A}}}if((f|0)==13){t[a>>2]=A+4;r=10;break}else if((f|0)==14){t[a>>2]=l;r=0;break}}else r=-1}while(0);return r|0}function a0(e,A,r,a){e=e|0;A=A|0;r=r|0;a=a|0;var f=0,l=0,s=0,c=0,o=0,u=0,b=0,h=0;h=r;s=h-A|0;e:do{if((s|0)>1){c=i[A>>0]|0;if(!(c<<24>>24)){l=i[A+1>>0]|0;f=n[e+72+(l&255)>>0]|0}else{l=i[A+1>>0]|0;f=d$(c,l)|0}switch(f|0){case 29:{u=l&255;if(!(1<<(u&31)&t[56940+((u>>>5|n[143788+(c&255)>>0]<<3)<<2)>>2])){t[a>>2]=A;f=0;break e}break}case 24:case 22:break;case 5:{t[a>>2]=A;f=0;break e}case 6:{if((s|0)<3){f=-2;break e}t[a>>2]=A;f=0;break e}case 7:{if((s|0)<4){f=-2;break e}t[a>>2]=A;f=0;break e}case 16:{l=A+2|0;if((h-l|0)<=1){f=-1;break e}f=i[l>>0]|0;if(!(f<<24>>24))f=n[e+72+(n[A+3>>0]|0)>>0]|0;else f=d$(f,i[A+3>>0]|0)|0;switch(f|0){case 27:{f=t0(e,A+4|0,r,a)|0;break e}case 20:{f=n0(A+4|0,r,a)|0;break e}default:{t[a>>2]=l;f=0;break e}}}case 15:{f=f0(e,A+2|0,r,a)|0;break e}case 17:{f=l0(e,A+2|0,r,a)|0;break e}default:{t[a>>2]=A;f=0;break e}}u=e+72|0;o=0;f=A+2|0;A:while(1){r:while(1){l=h-f|0;if((l|0)<=1){f=-1;break e}s=i[f>>0]|0;c=i[f+1>>0]|0;if(!(s<<24>>24))A=n[u+(c&255)>>0]|0;else A=d$(s,c)|0;switch(A|0){case 5:{b=34;break A}case 6:{b=35;break A}case 7:{b=37;break A}case 10:case 9:case 21:{b=55;break A}case 11:{b=69;break A}case 17:break A;case 23:break r;case 29:{A=c&255;if(!(1<<(A&31)&t[56940+((A>>>5|n[144044+(s&255)>>0]<<3)<<2)>>2])){b=32;break A}break}case 27:case 26:case 25:case 24:case 22:break;default:{b=75;break A}}f=f+2|0}if(o|0){b=40;break}A=f+2|0;o=h-A|0;if((o|0)<=1){f=-1;break e}l=i[A>>0]|0;s=i[f+3>>0]|0;if(!(l<<24>>24))c=n[u+(s&255)>>0]|0;else c=d$(l,s)|0;switch(c|0){case 5:{b=49;break A}case 6:{b=50;break A}case 7:{b=52;break A}case 29:{o=s&255;if(!(1<<(o&31)&t[56940+((o>>>5|n[143788+(l&255)>>0]<<3)<<2)>>2])){b=47;break A}break}case 24:case 22:break;default:{b=54;break A}}o=1;f=f+4|0}A:switch(b|0){case 32:{t[a>>2]=f;f=0;break e}case 34:{t[a>>2]=f;f=0;break e}case 35:{if((l|0)<3){f=-2;break e}t[a>>2]=f;f=0;break e}case 37:{if((l|0)<4){f=-2;break e}t[a>>2]=f;f=0;break e}case 40:{t[a>>2]=f;f=0;break e}case 47:{t[a>>2]=A;f=0;break e}case 49:{t[a>>2]=A;f=0;break e}case 50:{if((o|0)<3){f=-2;break e}t[a>>2]=A;f=0;break e}case 52:{if((o|0)<4){f=-2;break e}t[a>>2]=A;f=0;break e}case 54:{t[a>>2]=A;f=0;break e}case 55:{r:while(1){b=0;l=f+2|0;s=h-l|0;if((s|0)<=1){f=-1;break e}c=i[l>>0]|0;A=i[f+3>>0]|0;if(!(c<<24>>24))o=n[u+(A&255)>>0]|0;else o=d$(c,A)|0;switch(o|0){case 11:{f=l;b=69;break A}case 17:{f=l;break A}case 10:case 9:case 21:{f=l;b=55;break}case 29:{b=60;break r}case 24:case 22:break r;case 5:{b=63;break r}case 6:{b=64;break r}case 7:{b=66;break r}default:{b=68;break r}}}if((b|0)==60){h=A&255;if(!(1<<(h&31)&t[56940+((h>>>5|n[143788+(c&255)>>0]<<3)<<2)>>2])){t[a>>2]=l;f=0;break e}}else if((b|0)==63){t[a>>2]=l;f=0;break e}else if((b|0)==64){if((s|0)<3){f=-2;break e}t[a>>2]=l;f=0;break e}else if((b|0)==66){if((s|0)<4){f=-2;break e}t[a>>2]=l;f=0;break e}else if((b|0)==68){t[a>>2]=l;f=0;break e}f=s0(e,f+4|0,r,a)|0;break e}case 75:{t[a>>2]=f;f=0;break e}}if((b|0)==69){t[a>>2]=f+2;f=2;break}l=f+2|0;if((h-l|0)>1){if((i[l>>0]|0)==0?(i[f+3>>0]|0)==62:0){t[a>>2]=f+4;f=4;break}t[a>>2]=l;f=0}else f=-1}else f=-1}while(0);return f|0}function t0(e,A,r,a){e=e|0;A=A|0;r=r|0;a=a|0;var f=0,l=0,s=0,c=0;s=r;e:do{if((s-A|0)>1){if((i[A>>0]|0)==0?(i[A+1>>0]|0)==45:0){l=e+72|0;f=A+2|0;A:while(1){A=s-f|0;if((A|0)<=1){r=-1;break e}r=i[f>>0]|0;e=i[f+1>>0]|0;if(!(r<<24>>24))r=n[l+(e&255)>>0]|0;else r=d$(r,e)|0;switch(r|0){case 8:case 1:case 0:{c=16;break A}case 5:{f=f+2|0;continue A}case 6:{if((A|0)<3){r=-2;break e}f=f+3|0;continue A}case 7:{if((A|0)<4){r=-2;break e}f=f+4|0;continue A}case 27:{r=f+2|0;if((s-r|0)<=1){r=-1;break e}if(i[r>>0]|0){f=r;continue A}if((i[f+3>>0]|0)==45)break A;else{f=r;continue A}}default:{f=f+2|0;continue A}}}if((c|0)==16){t[a>>2]=f;r=0;break}r=f+4|0;if((s-r|0)<=1){r=-1;break}if((i[r>>0]|0)==0?(i[f+5>>0]|0)==62:0){t[a>>2]=f+6;r=13;break}t[a>>2]=r;r=0;break}t[a>>2]=A;r=0}else r=-1}while(0);return r|0}function n0(e,A,r){e=e|0;A=A|0;r=r|0;if((A-e|0)>11){A=0;while(1){if((A|0)>=6){A=8;break}if(i[e>>0]|0){A=0;break}if((i[e+1>>0]|0)!=(i[144300+A>>0]|0)){A=0;break}A=A+1|0;e=e+2|0}t[r>>2]=e}else A=-1;return A|0}function f0(e,A,r,a){e=e|0;A=A|0;r=r|0;a=a|0;var f=0,l=0,s=0,c=0,o=0,u=0,b=0,w=0,k=0;k=h;h=h+16|0;w=k;b=r;l=b-A|0;e:do{if((l|0)>1){s=i[A>>0]|0;if(!(s<<24>>24)){f=i[A+1>>0]|0;r=n[e+72+(f&255)>>0]|0}else{f=i[A+1>>0]|0;r=d$(s,f)|0}switch(r|0){case 29:{o=f&255;if(!(1<<(o&31)&t[56940+((o>>>5|n[143788+(s&255)>>0]<<3)<<2)>>2])){t[a>>2]=A;r=0;break e}break}case 24:case 22:break;case 5:{t[a>>2]=A;r=0;break e}case 6:{if((l|0)<3){r=-2;break e}t[a>>2]=A;r=0;break e}case 7:{if((l|0)<4){r=-2;break e}t[a>>2]=A;r=0;break e}default:{t[a>>2]=A;r=0;break e}}o=e+72|0;c=A;A:while(1){r=c+2|0;f=b-r|0;if((f|0)<=1){r=-1;break e}l=i[r>>0]|0;s=i[c+3>>0]|0;if(!(l<<24>>24))e=n[o+(s&255)>>0]|0;else e=d$(l,s)|0;switch(e|0){case 27:case 26:case 25:case 24:case 22:{c=r;continue A}case 5:{u=22;break A}case 6:{u=23;break A}case 7:{u=25;break A}case 10:case 9:case 21:{u=27;break A}case 15:{u=46;break A}case 29:break;default:break A}c=s&255;if(!(1<<(c&31)&t[56940+((c>>>5|n[144044+(l&255)>>0]<<3)<<2)>>2])){u=21;break}else c=r}if((u|0)==21){t[a>>2]=r;r=0;break}else if((u|0)==22){t[a>>2]=r;r=0;break}else if((u|0)==23){if((f|0)<3){r=-2;break}t[a>>2]=r;r=0;break}else if((u|0)==25){if((f|0)<4){r=-2;break}t[a>>2]=r;r=0;break}else if((u|0)==27){if(!(c0(A,r,w)|0)){t[a>>2]=r;r=0;break}s=c+4|0;A:while(1){l=b-s|0;if((l|0)<=1){r=-1;break e}r=i[s>>0]|0;f=i[s+1>>0]|0;if(!(r<<24>>24))r=n[o+(f&255)>>0]|0;else r=d$(r,f)|0;switch(r|0){case 8:case 1:case 0:{u=40;break A}case 5:{s=s+2|0;continue A}case 6:{if((l|0)<3){r=-2;break e}s=s+3|0;continue A}case 7:{if((l|0)<4){r=-2;break e}s=s+4|0;continue A}case 15:{r=s+2|0;if((b-r|0)<=1){r=-1;break e}if(i[r>>0]|0){s=r;continue A}if((i[s+3>>0]|0)==62){u=44;break A}else{s=r;continue A}}default:{s=s+2|0;continue A}}}if((u|0)==40){t[a>>2]=s;r=0;break}else if((u|0)==44){t[a>>2]=s+4;r=t[w>>2]|0;break}}else if((u|0)==46){if(!(c0(A,r,w)|0)){t[a>>2]=r;r=0;break}r=c+4|0;if((b-r|0)<=1){r=-1;break}if((i[r>>0]|0)==0?(i[c+5>>0]|0)==62:0){t[a>>2]=c+6;r=t[w>>2]|0;break}}t[a>>2]=r;r=0}else r=-1}while(0);h=k;return r|0}function l0(e,A,r,a){e=e|0;A=A|0;r=r|0;a=a|0;var f=0,l=0,s=0,c=0,o=0;s=r-A|0;e:do{if((s|0)>1){c=i[A>>0]|0;if(!(c<<24>>24)){l=i[A+1>>0]|0;f=n[e+72+(l&255)>>0]|0}else{l=i[A+1>>0]|0;f=d$(c,l)|0}switch(f|0){case 29:{o=l&255;if(!(1<<(o&31)&t[56940+((o>>>5|(n[143788+(c&255)>>0]|0)<<3)<<2)>>2])){t[a>>2]=A;r=0;break e}break}case 24:case 22:break;case 5:{t[a>>2]=A;r=0;break e}case 6:{if((s|0)<3){r=-2;break e}t[a>>2]=A;r=0;break e}case 7:{if((s|0)<4){r=-2;break e}t[a>>2]=A;r=0;break e}default:{t[a>>2]=A;r=0;break e}}o=e+72|0;e=A;A:while(1){s=e+2|0;A=r-s|0;if((A|0)<=1){r=-1;break e}f=i[s>>0]|0;l=i[e+3>>0]|0;if(!(f<<24>>24))c=n[o+(l&255)>>0]|0;else c=d$(f,l)|0;switch(c|0){case 23:case 27:case 26:case 25:case 24:case 22:{e=s;continue A}case 5:{f=22;break A}case 6:{f=23;break A}case 7:{f=25;break A}case 10:case 9:case 21:{f=27;break A}case 11:{f=34;break A}case 29:break;default:{f=35;break A}}A=l&255;if(!(1<<(A&31)&t[56940+((A>>>5|(n[144044+(f&255)>>0]|0)<<3)<<2)>>2])){f=21;break}else e=s}if((f|0)==21){t[a>>2]=s;r=0;break}else if((f|0)==22){t[a>>2]=s;r=0;break}else if((f|0)==23){if((A|0)<3){r=-2;break}t[a>>2]=s;r=0;break}else if((f|0)==25){if((A|0)<4){r=-2;break}t[a>>2]=s;r=0;break}else if((f|0)==27){A:while(1){c=s+2|0;if((r-c|0)<=1){r=-1;break e}f=i[c>>0]|0;l=i[s+3>>0]|0;if(!(f<<24>>24))f=n[o+(l&255)>>0]|0;else f=d$(f,l)|0;switch(f|0){case 10:case 9:case 21:{s=c;f=27;break}case 11:{f=32;break A}default:{f=33;break A}}}if((f|0)==32){t[a>>2]=s+4;r=5;break}else if((f|0)==33){t[a>>2]=c;r=0;break}}else if((f|0)==34){t[a>>2]=e+4;r=5;break}else if((f|0)==35){t[a>>2]=s;r=0;break}}else r=-1}while(0);return r|0}function s0(e,A,r,a){e=e|0;A=A|0;r=r|0;a=a|0;var f=0,l=0,s=0,c=0,o=0,u=0,b=0,w=0,k=0,d=0,v=0;v=h;h=h+16|0;k=v;t[k>>2]=A;d=r;b=e+72|0;f=0;e:while(1){A:while(1){o=d-A|0;if((o|0)<=1){A=-1;break e}l=i[A>>0]|0;s=i[A+1>>0]|0;if(!(l<<24>>24))c=n[b+(s&255)>>0]|0;else c=d$(l,s)|0;switch(c|0){case 5:{w=11;break e}case 6:{w=12;break e}case 7:{w=14;break e}case 23:{w=16;break A}case 10:case 9:case 21:{w=31;break A}case 14:{w=37;break A}case 29:{u=s&255;if(!(1<<(u&31)&t[56940+((u>>>5|n[144044+(l&255)>>0]<<3)<<2)>>2])){w=9;break e}break}case 27:case 26:case 25:case 24:case 22:break;default:{w=89;break e}}u=A+2|0;t[k>>2]=u;A=u}A:do{if((w|0)==16){w=0;if(f|0){w=17;break e}f=A+2|0;t[k>>2]=f;l=f;s=d-l|0;if((s|0)<=1){A=-1;break e}c=i[f>>0]|0;o=i[A+3>>0]|0;if(!(c<<24>>24))u=n[b+(o&255)>>0]|0;else u=d$(c,o)|0;switch(u|0){case 5:{w=25;break e}case 6:{w=26;break e}case 7:{w=28;break e}case 24:case 22:{f=1;break A}case 29:break;default:{w=30;break e}}u=o&255;if(!(1<<(u&31)&t[56940+((u>>>5|n[143788+(c&255)>>0]<<3)<<2)>>2])){w=24;break e}else f=1}else if((w|0)==31)while(1){w=0;l=A+2|0;t[k>>2]=l;s=l;if((d-s|0)<=1){A=-1;break e}f=i[l>>0]|0;A=i[A+3>>0]|0;if(!(f<<24>>24))A=n[b+(A&255)>>0]|0;else A=d$(f,A)|0;switch(A|0){case 14:{A=l;w=37;break A}case 9:case 10:case 21:{A=l;w=31;break}default:{w=36;break e}}}}while(0);A:do{if((w|0)==37){while(1){w=0;s=A+2|0;t[k>>2]=s;c=s;if((d-c|0)<=1){A=-1;break e}f=i[s>>0]|0;l=i[A+3>>0]|0;if(!(f<<24>>24))o=n[b+(l&255)>>0]|0;else o=d$(f,l)|0;if((o|1|0)==13)break;switch(o|0){case 9:case 10:case 21:{A=s;w=37;break}default:{w=43;break e}}}A=A+4|0;t[k>>2]=A;r:while(1){s=d-A|0;if((s|0)<=1){A=-1;break e}f=i[A>>0]|0;l=i[A+1>>0]|0;if(!(f<<24>>24))f=n[b+(l&255)>>0]|0;else f=d$(f,l)|0;if((f|0)==(o|0))break;switch(f|0){case 8:case 1:case 0:{w=56;break e}case 2:{w=61;break e}case 5:{u=A+2|0;t[k>>2]=u;A=u;continue r}case 6:{if((s|0)<3){A=-2;break e}u=A+3|0;t[k>>2]=u;A=u;continue r}case 7:{if((s|0)<4){A=-2;break e}u=A+4|0;t[k>>2]=u;A=u;continue r}case 3:{A=e0(e,A+2|0,r,k)|0;if((A|0)<1){w=59;break e}A=t[k>>2]|0;continue r}default:{u=A+2|0;t[k>>2]=u;A=u;continue r}}}l=A+2|0;t[k>>2]=l;c=l;if((d-c|0)<=1){A=-1;break e}f=i[l>>0]|0;s=i[A+3>>0]|0;if(!(f<<24>>24))f=n[b+(s&255)>>0]|0;else f=d$(f,s)|0;switch(f|0){case 11:{w=81;break e}case 17:{w=82;break e}case 10:case 9:case 21:{A=l;break}default:{w=68;break e}}r:while(1){l=A+2|0;t[k>>2]=l;f=l;s=d-f|0;if((s|0)<=1){A=-1;break e}c=i[l>>0]|0;o=i[A+3>>0]|0;if(!(c<<24>>24))u=n[b+(o&255)>>0]|0;else u=d$(c,o)|0;switch(u|0){case 5:{w=76;break e}case 6:{w=77;break e}case 7:{w=79;break e}case 11:{w=81;break e}case 17:{w=82;break e}case 24:case 22:{f=0;break A}case 10:case 9:case 21:{A=l;break}case 29:break r;default:{w=87;break e}}}u=o&255;if(!(1<<(u&31)&t[56940+((u>>>5|n[143788+(c&255)>>0]<<3)<<2)>>2])){w=75;break e}else f=0}}while(0);A=A+4|0;t[k>>2]=A}switch(w|0){case 9:{t[a>>2]=A;A=0;break}case 11:{t[a>>2]=A;A=0;break}case 12:{if((o|0)<3)A=-2;else{t[a>>2]=A;A=0}break}case 14:{if((o|0)<4)A=-2;else{t[a>>2]=A;A=0}break}case 17:{t[a>>2]=A;A=0;break}case 24:{t[a>>2]=f;A=0;break}case 25:{t[a>>2]=f;A=0;break}case 26:{if((s|0)<3)A=-2;else{t[a>>2]=f;A=0}break}case 28:{if((s|0)<4)A=-2;else{t[a>>2]=f;A=0}break}case 30:{t[a>>2]=l;A=0;break}case 36:{t[a>>2]=s;A=0;break}case 43:{t[a>>2]=c;A=0;break}case 56:{t[a>>2]=A;A=0;break}case 59:{if(!A){t[a>>2]=t[k>>2];A=0}break}case 61:{t[a>>2]=A;A=0;break}case 68:{t[a>>2]=c;A=0;break}case 75:{t[a>>2]=l;A=0;break}case 76:{t[a>>2]=l;A=0;break}case 77:{if((s|0)<3)A=-2;else{t[a>>2]=l;A=0}break}case 79:{if((s|0)<4)A=-2;else{t[a>>2]=l;A=0}break}case 81:{t[a>>2]=A+4;A=1;break}case 82:{f=l+2|0;t[k>>2]=f;A=f;if((d-A|0)>1){if((i[f>>0]|0)==0?(i[l+3>>0]|0)==62:0){t[a>>2]=l+4;A=3;break}t[a>>2]=A;A=0}else A=-1;break}case 87:{t[a>>2]=f;A=0;break}case 89:{t[a>>2]=A;A=0;break}}h=v;return A|0}function c0(e,A,r){e=e|0;A=A|0;r=r|0;t[r>>2]=11;e:do{if((A-e|0)==6?(i[e>>0]|0)==0:0){switch(i[e+1>>0]|0){case 120:{A=0;break}case 88:{A=1;break}default:{A=1;break e}}if(!(i[e+2>>0]|0)){switch(i[e+3>>0]|0){case 109:break;case 77:{A=1;break}default:{A=1;break e}}if(!(i[e+4>>0]|0)){switch(i[e+5>>0]|0){case 108:break;case 76:{A=0;break e}default:{A=1;break e}}if(!A){t[r>>2]=12;A=1}else A=0}else A=1}else A=1}else A=1}while(0);return A|0}function o0(e,A,r,a,f){e=e|0;A=A|0;r=r|0;a=a|0;f=f|0;var l=0,s=0,c=0,o=0;c=A+72|0;e:while(1){A:while(1){s=a-r|0;if((s|0)<=1){r=-1;break e}A=i[r>>0]|0;l=i[r+1>>0]|0;if(!(A<<24>>24))l=n[c+(l&255)>>0]|0;else l=d$(A,l)|0;switch(l|0){case 8:case 1:case 0:{o=10;break e}case 6:{o=9;break A}case 7:{o=19;break A}case 5:{r=r+2|0;continue A}case 13:case 12:{A=r+2|0;if((l|0)==(e|0)){o=12;break e}else{r=A;continue A}}default:{r=r+2|0;continue A}}}if((o|0)==9){o=0;if((s|0)<3){r=-2;break}else{r=r+3|0;continue}}else if((o|0)==19){o=0;if((s|0)<4){r=-2;break}else{r=r+4|0;continue}}}e:do{if((o|0)==10){t[f>>2]=r;r=0}else if((o|0)==12)if((a-A|0)>1){t[f>>2]=A;a=i[A>>0]|0;r=i[r+3>>0]|0;if(!(a<<24>>24))r=n[c+(r&255)>>0]|0;else r=d$(a,r)|0;switch(r|0){case 20:case 30:case 11:case 10:case 9:case 21:{r=27;break e}default:{}}r=0}else r=-27}while(0);return r|0}function u0(e,A,r,a){e=e|0;A=A|0;r=r|0;a=a|0;var f=0,l=0,s=0,c=0,o=0;c=r;e:do{if((c-A|0)>1){f=i[A>>0]|0;if(!(f<<24>>24))f=n[e+72+(n[A+1>>0]|0)>>0]|0;else f=d$(f,i[A+1>>0]|0)|0;switch(f|0){case 27:{f=t0(e,A+2|0,r,a)|0;break e}case 20:{t[a>>2]=A+2;f=33;break e}case 24:case 22:{s=e+72|0;A:while(1){l=A+2|0;r=c-l|0;if((r|0)<=1){f=-1;break e}f=i[l>>0]|0;e=i[A+3>>0]|0;if(!(f<<24>>24))f=n[s+(e&255)>>0]|0;else f=d$(f,e)|0;switch(f|0){case 24:case 22:{A=l;break}case 30:{o=15;break A}case 10:case 9:case 21:break A;default:{o=22;break A}}}if((o|0)==22){t[a>>2]=l;f=0;break e}A:do{if((o|0)==15){if((r|0)<=3){f=-1;break e}e=i[A+4>>0]|0;f=i[A+5>>0]|0;if(!(e<<24>>24))f=n[s+(f&255)>>0]|0;else f=d$(e,f)|0;switch(f|0){case 30:case 10:case 9:case 21:break;default:break A}t[a>>2]=l;f=0;break e}}while(0);t[a>>2]=l;f=16;break e}default:{t[a>>2]=A;f=0;break e}}}else f=-1}while(0);return f|0}function b0(e,A,r,a){e=e|0;A=A|0;r=r|0;a=a|0;var f=0,l=0,s=0,c=0;s=r-A|0;e:do{if((s|0)>1){c=i[A>>0]|0;if(!(c<<24>>24)){l=i[A+1>>0]|0;f=n[e+72+(l&255)>>0]|0}else{l=i[A+1>>0]|0;f=d$(c,l)|0}switch(f|0){case 29:{s=l&255;if(!(1<<(s&31)&t[56940+((s>>>5|(n[143788+(c&255)>>0]|0)<<3)<<2)>>2])){t[a>>2]=A;r=0;break e}break}case 24:case 22:break;case 5:{t[a>>2]=A;r=0;break e}case 6:{if((s|0)<3){r=-2;break e}t[a>>2]=A;r=0;break e}case 7:{if((s|0)<4){r=-2;break e}t[a>>2]=A;r=0;break e}default:{t[a>>2]=A;r=0;break e}}e=e+72|0;c=A;A:while(1){f=c;c=c+2|0;A=r-c|0;if((A|0)<=1){r=-20;break e}s=i[c>>0]|0;f=i[f+3>>0]|0;if(!(s<<24>>24))l=n[e+(f&255)>>0]|0;else l=d$(s,f)|0;switch(l|0){case 27:case 26:case 25:case 24:case 22:continue A;case 5:{f=22;break A}case 6:{f=23;break A}case 7:{f=25;break A}case 36:case 30:case 11:case 32:case 21:case 10:case 9:{f=27;break A}case 29:break;default:{f=28;break A}}A=f&255;if(!(1<<(A&31)&t[56940+((A>>>5|(n[144044+(s&255)>>0]|0)<<3)<<2)>>2])){f=21;break}}if((f|0)==21){t[a>>2]=c;r=0;break}else if((f|0)==22){t[a>>2]=c;r=0;break}else if((f|0)==23){if((A|0)<3){r=-2;break}t[a>>2]=c;r=0;break}else if((f|0)==25){if((A|0)<4){r=-2;break}t[a>>2]=c;r=0;break}else if((f|0)==27){t[a>>2]=c;r=20;break}else if((f|0)==28){t[a>>2]=c;r=0;break}}else r=-1}while(0);return r|0}function h0(e,A,r,a,n){e=e|0;A=A|0;r=r|0;a=a|0;n=n|0;var f=0,l=0;while(1){e=t[A>>2]|0;f=e>>>0>>0;l=t[a>>2]|0;if(!(f&l>>>0>>0))break;t[A>>2]=e+1;f=i[e>>0]|0;l=t[a>>2]|0;t[a>>2]=l+1;i[l>>0]=f}return((l|0)!=(n|0)|f^1?0:2)|0}function w0(e,A){e=e|0;A=A|0;var r=0,a=0,t=0,n=0;e:while(1){t=i[e>>0]|0;n=i[A>>0]|0;t=(t+-97&255)<26?(t&255)+224&255:t;switch((t<<24>>24==((n+-97&255)<26?(n&255)+224&255:n)<<24>>24?t<<24>>24==0?2:0:1)&3){case 0:{A=A+1|0;e=e+1|0;break}case 1:{a=3;break e}case 2:{r=1;break e}default:{a=5;break e}}}if((a|0)==3)r=0;return r|0}function k0(e,A,r,i,a,t,n,f,l,s){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;t=t|0;n=n|0;f=f|0;l=l|0;s=s|0;return v0(39,e,A,r,i,a,t,n,f,l,s)|0}function d0(e,A,r){e=e|0;A=A|0;r=r|0;var a=0,n=0,f=0,l=0;f=h;h=h+144|0;l=f+4|0;a=f+8|0;n=f;t[l>>2]=A;t[n>>2]=a;D5[t[e+56>>2]&127](e,l,r,n,a+127|0)|0;do{if((t[l>>2]|0)==(r|0)){i[t[n>>2]>>0]=0;if(w0(a,144315)|0?(t[e+64>>2]|0)==2:0)break;e=W$(a)|0;if((e|0)!=-1)e=t[58948+(e<<2)>>2]|0;else e=0}else e=0}while(0);h=f;return e|0}function v0(e,A,r,i,a,n,f,l,s,c,o){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;n=n|0;f=f|0;l=l|0;s=s|0;c=c|0;o=o|0;var u=0,b=0,w=0,k=0,d=0,v=0,g=0,m=0,p=0;p=h;h=h+16|0;g=p+8|0;k=p+12|0;b=p+4|0;w=p;t[k>>2]=0;t[b>>2]=0;t[w>>2]=0;m=r+64|0;v=t[m>>2]|0;d=i+(v*5|0)|0;t[g>>2]=d;v=a+(0-(v<<1))|0;d=(g0(r,d,v,b,w,k,g)|0)!=0;u=t[b>>2]|0;i=u;e:do{if(d&(u|0)!=0){d=r+24|0;a=t[w>>2]|0;do{if(!(Q5[t[d>>2]&127](r,u,a,144340)|0)){if(!A){t[n>>2]=i;i=0;break e}}else{if(f|0)t[f>>2]=t[k>>2];if(!l)i=t[g>>2]|0;else{i=t[g>>2]|0;t[l>>2]=i}if(!(g0(r,i,v,b,w,k,g)|0)){t[n>>2]=t[g>>2];i=0;break e}a=t[b>>2]|0;if(a|0){i=a;u=a;a=t[w>>2]|0;break}if(!A){i=1;break e}t[n>>2]=t[g>>2];i=0;break e}}while(0);if(Q5[t[d>>2]&127](r,u,a,144348)|0){a=t[k>>2]|0;i=a;if((((m0(r,a,v)|0)&-33)+-65|0)>>>0>=26){t[n>>2]=i;i=0;break}if(s|0)t[s>>2]=i;i=t[g>>2]|0;if(c|0)t[c>>2]=L5[e&63](r,a,i+(0-(t[m>>2]|0))|0)|0;if(!(g0(r,i,v,b,w,k,g)|0)){t[n>>2]=t[g>>2];i=0;break}i=t[b>>2]|0;if(!i){i=1;break}u=i;a=t[w>>2]|0}if((A|0)!=0|(Q5[t[d>>2]&127](r,u,a,144357)|0)==0){t[n>>2]=i;i=0;break}a=t[k>>2]|0;i=t[g>>2]|0;u=a;if(!(Q5[t[d>>2]&127](r,a,i+(0-(t[m>>2]|0))|0,107657)|0)){if(!(Q5[t[d>>2]&127](r,a,i+(0-(t[m>>2]|0))|0,107649)|0)){t[n>>2]=u;i=0;break}if(o)t[o>>2]=0}else if(o)t[o>>2]=1;while(1){if(!(p0(m0(r,i,v)|0)|0))break;i=i+(t[m>>2]|0)|0}t[g>>2]=i;if((i|0)==(v|0))i=1;else{t[n>>2]=i;i=0}}else{t[n>>2]=t[g>>2];i=0}}while(0);h=p;return i|0}function g0(e,A,r,i,a,n,f){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;n=n|0;f=f|0;var l=0,s=0;e:do{if((A|0)!=(r|0)){if(!(p0(m0(e,A,r)|0)|0)){t[f>>2]=A;A=0;break}s=e+64|0;do{A=A+(t[s>>2]|0)|0}while((p0(m0(e,A,r)|0)|0)!=0);if((A|0)==(r|0)){t[i>>2]=0;A=1;break}t[i>>2]=A;A:while(1){l=m0(e,A,r)|0;switch(l|0){case-1:{l=11;break A}case 61:{l=12;break A}default:{}}if(p0(l)|0){l=14;break}A=A+(t[s>>2]|0)|0}if((l|0)==11){t[f>>2]=A;A=0;break}else if((l|0)==12)t[a>>2]=A;else if((l|0)==14){t[a>>2]=A;do{A=A+(t[s>>2]|0)|0;l=m0(e,A,r)|0}while((p0(l)|0)!=0);if((l|0)!=61){t[f>>2]=A;A=0;break}}if((A|0)==(t[i>>2]|0)){t[f>>2]=A;A=0;break}do{A=A+(t[s>>2]|0)|0;l=m0(e,A,r)|0}while((p0(l)|0)!=0);switch(l|0){case 34:case 39:break;default:{t[f>>2]=A;A=0;break e}}a=A+(t[s>>2]|0)|0;t[n>>2]=a;A=l<<24>>24;A:while(1){l=m0(e,a,r)|0;if((l|0)==(A|0)){l=30;break}if((l+-48|0)>>>0>9&((l&-33)+-65|0)>>>0>25)switch(l|0){case 45:case 46:case 95:break;default:{l=28;break A}}a=a+(t[s>>2]|0)|0}if((l|0)==28){t[f>>2]=a;A=0;break}else if((l|0)==30){t[f>>2]=a+(t[s>>2]|0);A=1;break}}else{t[i>>2]=0;A=1}}while(0);return A|0}function m0(e,A,r){e=e|0;A=A|0;r=r|0;var a=0,n=0,f=0,l=0;f=h;h=h+16|0;l=f+4|0;a=f+8|0;n=f;t[l>>2]=A;t[n>>2]=a;D5[t[e+56>>2]&127](e,l,r,n,a+1|0)|0;h=f;return((t[n>>2]|0)==(a|0)?-1:i[a>>0]|0)|0}function p0(e){e=e|0;switch(e|0){case 9:case 10:case 13:case 32:{e=1;break}default:e=0}return e|0}function E0(){return 60092}function B0(e,A,r){e=e|0;A=A|0;r=r|0;r=W$(r)|0;if((r|0)==-1)r=0;else{i[e+69>>0]=r;t[e>>2]=69;t[e+4>>2]=70;t[e+48>>2]=31;t[e+72>>2]=A;t[A>>2]=e;r=1}return r|0}function y0(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;return V$(60456,e,0,A,r,i)|0}function C0(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;return V$(60456,e,1,A,r,i)|0}function I0(e,A,r,i,a,t,n,f,l,s){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;t=t|0;n=n|0;f=f|0;l=l|0;s=s|0;return v0(40,e,A,r,i,a,t,n,f,l,s)|0}function Z0(e,A,r){e=e|0;A=A|0;r=r|0;var a=0,n=0,f=0,l=0;f=h;h=h+144|0;l=f+4|0;a=f+8|0;n=f;t[l>>2]=A;t[n>>2]=a;D5[t[e+56>>2]&127](e,l,r,n,a+127|0)|0;do{if((t[l>>2]|0)==(r|0)){i[t[n>>2]>>0]=0;if(w0(a,144315)|0?(t[e+64>>2]|0)==2:0)break;e=W$(a)|0;if((e|0)!=-1)e=t[60456+(e<<2)>>2]|0;else e=0}else e=0}while(0);h=f;return e|0}function G0(e,A,r,a){e=e|0;A=A|0;r=r|0;a=a|0;e=mo(e,A,r,a)|0;if(e|0)i[e+72+58>>0]=23;return e|0}function L0(e){e=e|0;t[e>>2]=15;t[e+16>>2]=1;t[e+12>>2]=0;t[e+20>>2]=0;return}function Q0(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;var n=0;switch(A|0){case 15:{t[e>>2]=16;e=0;break}case 12:{t[e>>2]=16;e=1;break}case 11:{t[e>>2]=16;e=55;break}case 13:{t[e>>2]=16;e=56;break}case 14:{e=0;break}case 16:{if(!(Q5[t[a+24>>2]&127](a,r+(t[a+64>>2]<<1)|0,i,144368)|0))n=9;else{t[e>>2]=17;e=3}break}case 29:{t[e>>2]=18;e=2;break}default:n=9}if((n|0)==9)e=Y0(e,A)|0;return e|0}function D0(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;var n=0;switch(A|0){case 14:case 15:{e=0;break}case 11:{e=55;break}case 13:{e=56;break}case 16:{if(!(Q5[t[a+24>>2]&127](a,r+(t[a+64>>2]<<1)|0,i,144368)|0))n=7;else{t[e>>2]=17;e=3}break}case 29:{t[e>>2]=18;e=2;break}default:n=7}if((n|0)==7)e=Y0(e,A)|0;return e|0}function z0(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;switch(A|0){case 15:{e=3;break}case 41:case 18:{t[e>>2]=19;e=4;break}default:e=Y0(e,A)|0}return e|0}function W0(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;return 0}function Y0(e,A){e=e|0;A=A|0;if((A|0)==28&(t[e+16>>2]|0)==0)e=59;else{t[e>>2]=18;e=-1}return e|0}function F0(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;var n=0,f=0;e:do{switch(A|0){case 15:{e=3;break}case 25:{t[e>>2]=20;e=7;break}case 17:{t[e>>2]=21;e=8;break}case 18:{n=a+24|0;if(Q5[t[n>>2]&127](a,r,i,144376)|0){t[e>>2]=22;e=3;break e}if(!(Q5[t[n>>2]&127](a,r,i,144383)|0))f=8;else{t[e>>2]=23;e=3}break}default:f=8}}while(0);if((f|0)==8)e=Y0(e,A)|0;return e|0}function M0(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;var n=0,f=0,l=0;e:do{switch(A|0){case-4:case 15:{e=0;break}case 16:{n=a+24|0;f=a+64|0;if(Q5[t[n>>2]&127](a,r+(t[f>>2]<<1)|0,i,144390)|0){t[e>>2]=24;e=11;break e}if(Q5[t[n>>2]&127](a,r+(t[f>>2]<<1)|0,i,144397)|0){t[e>>2]=25;e=33;break e}if(Q5[t[n>>2]&127](a,r+(t[f>>2]<<1)|0,i,144405)|0){t[e>>2]=26;e=39;break e}if(!(Q5[t[n>>2]&127](a,r+(t[f>>2]<<1)|0,i,144413)|0))l=14;else{t[e>>2]=27;e=17}break}case 11:{e=55;break}case 13:{e=56;break}case 28:{e=60;break}case 26:{t[e>>2]=28;e=3;break}default:l=14}}while(0);if((l|0)==14)e=Y0(e,A)|0;return e|0}function V0(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;a=A+-11|0;switch(a>>>1|a<<31|0){case 2:{e=0;break}case 0:{e=55;break}case 1:{e=56;break}case 9:{t[e>>2]=18;e=2;break}default:e=Y0(e,A)|0}return e|0}function N0(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;switch(A|0){case 15:{e=3;break}case 27:{t[e>>2]=29;e=5;break}default:e=Y0(e,A)|0}return e|0}function R0(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;switch(A|0){case 15:{e=3;break}case 27:{t[e>>2]=22;e=6;break}default:e=Y0(e,A)|0}return e|0}function x0(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;switch(A|0){case 15:{e=3;break}case 25:{t[e>>2]=20;e=7;break}case 17:{t[e>>2]=21;e=8;break}default:e=Y0(e,A)|0}return e|0}function J0(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;switch(A|0){case 15:{e=11;break}case 22:{t[e>>2]=30;e=11;break}case 18:{t[e>>2]=31;e=9;break}default:e=Y0(e,A)|0}return e|0}function H0(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;switch(A|0){case 15:{e=33;break}case 41:case 18:{t[e>>2]=32;e=34;break}default:e=Y0(e,A)|0}return e|0}function P0(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;switch(A|0){case 15:{e=39;break}case 41:case 18:{t[e>>2]=33;e=40;break}default:e=Y0(e,A)|0}return e|0}function X0(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;switch(A|0){case 15:{e=17;break}case 18:{t[e>>2]=34;e=18;break}default:e=Y0(e,A)|0}return e|0}function S0(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;switch(A|0){case 15:{e=3;break}case 17:{t[e>>2]=21;e=8;break}default:e=Y0(e,A)|0}return e|0}function j0(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;var n=0,f=0;e:do{switch(A|0){case 15:{e=17;break}case 18:{n=a+24|0;if(Q5[t[n>>2]&127](a,r,i,144376)|0){t[e>>2]=35;e=17;break e}if(!(Q5[t[n>>2]&127](a,r,i,144383)|0))f=6;else{t[e>>2]=36;e=17}break}default:f=6}}while(0);if((f|0)==6)e=Y0(e,A)|0;return e|0}function U0(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;switch(A|0){case 15:{e=17;break}case 27:{t[e>>2]=37;t[e+8>>2]=17;e=19;break}default:e=Y0(e,A)|0}return e|0}function T0(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;switch(A|0){case 15:{e=17;break}case 27:{t[e>>2]=38;e=21;break}default:e=Y0(e,A)|0}return e|0}function O0(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;switch(A|0){case 15:{e=17;break}case 27:{t[e>>2]=37;t[e+8>>2]=17;e=19;break}case 17:{t[e>>2]=t[e+16>>2]|0?20:39;e=20;break}default:e=Y0(e,A)|0}return e|0}function _0(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;switch(A|0){case 15:{e=t[e+8>>2]|0;break}case 17:{t[e>>2]=t[e+16>>2]|0?20:39;e=t[e+8>>2]|0;break}default:e=Y0(e,A)|0}return e|0}function q0(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;var n=0;switch(A|0){case 33:{t[e>>2]=40;r=0;break}case 34:{r=e+12|0;i=t[r>>2]|0;if(!i)n=7;else{t[r>>2]=i+-1;r=0}break}case 15:{r=0;break}case 26:{n=7;break}case-4:{if(!(t[e+12>>2]|0))r=0;else n=7;break}default:r=M0(e,A,r,i,a)|0}if((n|0)==7)r=Y0(e,A)|0;return r|0}function K0(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;var n=0,f=0;e:do{switch(A|0){case 15:{e=0;break}case 18:{n=a+24|0;if(Q5[t[n>>2]&127](a,r,i,144422)|0){t[e>>2]=41;e=0;break e}if(!(Q5[t[n>>2]&127](a,r,i,144430)|0))f=6;else{t[e>>2]=42;e=0}break}default:f=6}}while(0);if((f|0)==6)e=Y0(e,A)|0;return e|0}function $0(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;switch(A|0){case 15:{e=0;break}case 25:{t[e>>2]=39;e=e+12|0;t[e>>2]=(t[e>>2]|0)+1;e=0;break}default:e=Y0(e,A)|0}return e|0}function e2(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;switch(A|0){case 15:{e=0;break}case 25:{t[e>>2]=39;e=58;break}default:e=Y0(e,A)|0}return e|0}function A2(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;var n=0,f=0;e:do{switch(A|0){case 15:{e=39;break}case 18:{n=a+24|0;if(Q5[t[n>>2]&127](a,r,i,144437)|0){t[e>>2]=37;t[e+8>>2]=39;e=42;break e}if(!(Q5[t[n>>2]&127](a,r,i,144443)|0))f=7;else{t[e>>2]=37;t[e+8>>2]=39;e=41}break}case 23:{t[e>>2]=43;t[e+4>>2]=1;e=44;break}default:f=7}}while(0);if((f|0)==7)e=Y0(e,A)|0;return e|0}function r2(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;var n=0;switch(A|0){case 15:{e=39;break}case 20:{if(!(Q5[t[a+24>>2]&127](a,r+(t[a+64>>2]|0)|0,i,144447)|0))n=9;else{t[e>>2]=44;e=43}break}case 23:{t[e+4>>2]=2;t[e>>2]=45;e=44;break}case 41:case 18:{t[e>>2]=46;e=51;break}case 30:{t[e>>2]=46;e=53;break}case 31:{t[e>>2]=46;e=52;break}case 32:{t[e>>2]=46;e=54;break}default:n=9}if((n|0)==9)e=Y0(e,A)|0;return e|0}function i2(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;switch(A|0){case 15:{e=39;break}case 24:{t[e>>2]=37;t[e+8>>2]=39;e=45;break}case 36:{t[e>>2]=37;t[e+8>>2]=39;e=46;break}case 21:{t[e>>2]=47;e=39;break}default:e=Y0(e,A)|0}return e|0}function a2(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;switch(A|0){case 15:{e=39;break}case 23:{e=e+4|0;t[e>>2]=(t[e>>2]|0)+1;e=44;break}case 41:case 18:{t[e>>2]=46;e=51;break}case 30:{t[e>>2]=46;e=53;break}case 31:{t[e>>2]=46;e=52;break}case 32:{t[e>>2]=46;e=54;break}default:e=Y0(e,A)|0}return e|0}function t2(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;switch(A|0){case 15:{e=39;break}case 24:{i=e+4|0;a=(t[i>>2]|0)+-1|0;t[i>>2]=a;if(!a){t[e>>2]=37;t[e+8>>2]=39;e=45}else e=45;break}case 36:{i=e+4|0;a=(t[i>>2]|0)+-1|0;t[i>>2]=a;if(!a){t[e>>2]=37;t[e+8>>2]=39;e=46}else e=46;break}case 35:{i=e+4|0;a=(t[i>>2]|0)+-1|0;t[i>>2]=a;if(!a){t[e>>2]=37;t[e+8>>2]=39;e=47}else e=47;break}case 37:{i=e+4|0;a=(t[i>>2]|0)+-1|0;t[i>>2]=a;if(!a){t[e>>2]=37;t[e+8>>2]=39;e=48}else e=48;break}case 38:{t[e>>2]=45;e=50;break}case 21:{t[e>>2]=45;e=49;break}default:e=Y0(e,A)|0}return e|0}function n2(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;switch(A|0){case 15:{e=39;break}case 41:case 18:{t[e>>2]=48;e=51;break}default:e=Y0(e,A)|0}return e|0}function f2(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;switch(A|0){case 15:{e=39;break}case 36:{t[e>>2]=37;t[e+8>>2]=39;e=46;break}case 21:{t[e>>2]=47;e=39;break}default:e=Y0(e,A)|0}return e|0}function l2(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;switch(A|0){case 15:{e=33;break}case 17:{t[e>>2]=t[e+16>>2]|0?20:39;e=33;break}case 41:case 18:{t[e>>2]=49;e=22;break}default:e=Y0(e,A)|0}return e|0}function s2(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;var n=0,f=0,l=0,s=0;e:do{switch(A|0){case 15:{n=33;break}case 18:{f=a+24|0;n=0;while(1){l=t[f>>2]|0;if((n|0)>=8)break;if(Q5[l&127](a,r,i,t[62304+(n<<2)>>2]|0)|0){s=6;break}n=n+1|0}if((s|0)==6){t[e>>2]=50;n=n+23|0;break e}if(!(Q5[l&127](a,r,i,144413)|0))s=10;else{t[e>>2]=51;n=33}break}case 23:{t[e>>2]=52;n=33;break}default:s=10}}while(0);if((s|0)==10)n=Y0(e,A)|0;return n|0}function c2(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;var n=0,f=0,l=0;e:do{switch(A|0){case 15:{e=33;break}case 20:{n=a+24|0;f=a+64|0;if(Q5[t[n>>2]&127](a,r+(t[f>>2]|0)|0,i,144454)|0){t[e>>2]=32;e=35;break e}if(Q5[t[n>>2]&127](a,r+(t[f>>2]|0)|0,i,144462)|0){t[e>>2]=32;e=36;break e}if(!(Q5[t[n>>2]&127](a,r+(t[f>>2]|0)|0,i,144471)|0))l=9;else{t[e>>2]=53;e=33}break}case 27:{t[e>>2]=32;e=37;break}default:l=9}}while(0);if((l|0)==9)e=Y0(e,A)|0;return e|0}function o2(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;switch(A|0){case 15:{e=33;break}case 23:{t[e>>2]=54;e=33;break}default:e=Y0(e,A)|0}return e|0}function u2(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;switch(A|0){case 15:{e=33;break}case 41:case 18:case 19:{t[e>>2]=55;e=31;break}default:e=Y0(e,A)|0}return e|0}function b2(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;switch(A|0){case 15:{e=33;break}case 24:{t[e>>2]=50;e=33;break}case 21:{t[e>>2]=52;e=33;break}default:e=Y0(e,A)|0}return e|0}function h2(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;switch(A|0){case 15:{e=33;break}case 18:{t[e>>2]=56;e=32;break}default:e=Y0(e,A)|0}return e|0}function w2(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;switch(A|0){case 15:{e=33;break}case 24:{t[e>>2]=50;e=33;break}case 21:{t[e>>2]=54;e=33;break}default:e=Y0(e,A)|0}return e|0}function k2(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;switch(A|0){case 15:{e=33;break}case 27:{t[e>>2]=32;e=38;break}default:e=Y0(e,A)|0}return e|0}function d2(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;switch(A|0){case 15:{e=11;break}case 18:{t[e>>2]=57;e=10;break}default:e=Y0(e,A)|0}return e|0}function v2(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;var n=0,f=0;e:do{switch(A|0){case 15:{e=11;break}case 18:{n=a+24|0;if(Q5[t[n>>2]&127](a,r,i,144376)|0){t[e>>2]=58;e=11;break e}if(!(Q5[t[n>>2]&127](a,r,i,144383)|0))f=7;else{t[e>>2]=59;e=11}break}case 27:{t[e>>2]=37;t[e+8>>2]=11;e=12;break}default:f=7}}while(0);if((f|0)==7)e=Y0(e,A)|0;return e|0}function g2(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;switch(A|0){case 15:{e=11;break}case 27:{t[e>>2]=60;e=13;break}default:e=Y0(e,A)|0}return e|0}function m2(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;switch(A|0){case 15:{e=11;break}case 27:{t[e>>2]=58;e=14;break}default:e=Y0(e,A)|0}return e|0}function p2(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;var n=0;switch(A|0){case 15:{e=11;break}case 17:{t[e>>2]=t[e+16>>2]|0?20:39;e=15;break}case 18:{if(!(Q5[t[a+24>>2]&127](a,r,i,144525)|0))n=5;else{t[e>>2]=61;e=11}break}default:n=5}if((n|0)==5)e=Y0(e,A)|0;return e|0}function E2(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;switch(A|0){case 15:{e=11;break}case 18:{t[e>>2]=37;t[e+8>>2]=11;e=16;break}default:e=Y0(e,A)|0}return e|0}function B2(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;var n=0,f=0;e:do{switch(A|0){case 15:{e=11;break}case 18:{n=a+24|0;if(Q5[t[n>>2]&127](a,r,i,144376)|0){t[e>>2]=62;e=11;break e}if(!(Q5[t[n>>2]&127](a,r,i,144383)|0))f=7;else{t[e>>2]=63;e=11}break}case 27:{t[e>>2]=37;t[e+8>>2]=11;e=12;break}default:f=7}}while(0);if((f|0)==7)e=Y0(e,A)|0;return e|0}function y2(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;switch(A|0){case 15:{e=11;break}case 27:{t[e>>2]=64;e=13;break}default:e=Y0(e,A)|0}return e|0}function C2(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;switch(A|0){case 15:{e=11;break}case 27:{t[e>>2]=62;e=14;break}default:e=Y0(e,A)|0}return e|0}function I2(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;switch(A|0){case 15:{e=11;break}case 17:{t[e>>2]=t[e+16>>2]|0?20:39;e=15;break}default:e=Y0(e,A)|0}return e|0}function Z2(e){e=e|0;var A=0,r=0,i=0,a=0,n=0,f=0,l=0,s=0,c=0,o=0,u=0,b=0,w=0,k=0,d=0,v=0,g=0,m=0,p=0,E=0,B=0;B=h;h=h+16|0;w=B;do{if(e>>>0<245){o=e>>>0<11?16:e+11&-8;e=o>>>3;b=t[47519]|0;r=b>>>e;if(r&3|0){A=(r&1^1)+e|0;e=190116+(A<<1<<2)|0;r=e+8|0;i=t[r>>2]|0;a=i+8|0;n=t[a>>2]|0;if((n|0)==(e|0))t[47519]=b&~(1<>2]=e;t[r>>2]=n}E=A<<3;t[i+4>>2]=E|3;E=i+E+4|0;t[E>>2]=t[E>>2]|1;E=a;h=B;return E|0}u=t[47521]|0;if(o>>>0>u>>>0){if(r|0){A=2<>>12&16;A=A>>>l;r=A>>>5&8;A=A>>>r;n=A>>>2&4;A=A>>>n;e=A>>>1&2;A=A>>>e;i=A>>>1&1;i=(r|l|n|e|i)+(A>>>i)|0;A=190116+(i<<1<<2)|0;e=A+8|0;n=t[e>>2]|0;l=n+8|0;r=t[l>>2]|0;if((r|0)==(A|0)){e=b&~(1<>2]=A;t[e>>2]=r;e=b}E=i<<3;f=E-o|0;t[n+4>>2]=o|3;a=n+o|0;t[a+4>>2]=f|1;t[n+E>>2]=f;if(u|0){i=t[47524]|0;A=u>>>3;r=190116+(A<<1<<2)|0;A=1<>2]|0}t[e>>2]=i;t[A+12>>2]=i;t[i+8>>2]=A;t[i+12>>2]=r}t[47521]=f;t[47524]=a;E=l;h=B;return E|0}s=t[47520]|0;if(s){r=(s&0-s)+-1|0;l=r>>>12&16;r=r>>>l;f=r>>>5&8;r=r>>>f;c=r>>>2&4;r=r>>>c;i=r>>>1&2;r=r>>>i;e=r>>>1&1;e=t[190380+((f|l|c|i|e)+(r>>>e)<<2)>>2]|0;r=(t[e+4>>2]&-8)-o|0;i=t[e+16+(((t[e+16>>2]|0)==0&1)<<2)>>2]|0;if(!i){c=e;f=r}else{do{l=(t[i+4>>2]&-8)-o|0;c=l>>>0>>0;r=c?l:r;e=c?i:e;i=t[i+16+(((t[i+16>>2]|0)==0&1)<<2)>>2]|0}while((i|0)!=0);c=e;f=r}l=c+o|0;if(l>>>0>c>>>0){a=t[c+24>>2]|0;A=t[c+12>>2]|0;do{if((A|0)==(c|0)){e=c+20|0;A=t[e>>2]|0;if(!A){e=c+16|0;A=t[e>>2]|0;if(!A){r=0;break}}while(1){r=A+20|0;i=t[r>>2]|0;if(i|0){A=i;e=r;continue}r=A+16|0;i=t[r>>2]|0;if(!i)break;else{A=i;e=r}}t[e>>2]=0;r=A}else{r=t[c+8>>2]|0;t[r+12>>2]=A;t[A+8>>2]=r;r=A}}while(0);do{if(a|0){A=t[c+28>>2]|0;e=190380+(A<<2)|0;if((c|0)==(t[e>>2]|0)){t[e>>2]=r;if(!r){t[47520]=s&~(1<>2]|0)!=(c|0)&1)<<2)>>2]=r;if(!r)break}t[r+24>>2]=a;A=t[c+16>>2]|0;if(A|0){t[r+16>>2]=A;t[A+24>>2]=r}A=t[c+20>>2]|0;if(A|0){t[r+20>>2]=A;t[A+24>>2]=r}}}while(0);if(f>>>0<16){E=f+o|0;t[c+4>>2]=E|3;E=c+E+4|0;t[E>>2]=t[E>>2]|1}else{t[c+4>>2]=o|3;t[l+4>>2]=f|1;t[l+f>>2]=f;if(u|0){i=t[47524]|0;A=u>>>3;r=190116+(A<<1<<2)|0;A=1<>2]|0}t[e>>2]=i;t[A+12>>2]=i;t[i+8>>2]=A;t[i+12>>2]=r}t[47521]=f;t[47524]=l}E=c+8|0;h=B;return E|0}else u=o}else u=o}else u=o}else if(e>>>0<=4294967231){e=e+11|0;o=e&-8;c=t[47520]|0;if(c){i=0-o|0;e=e>>>8;if(e)if(o>>>0>16777215)s=31;else{b=(e+1048320|0)>>>16&8;p=e<>>16&4;p=p<>>16&2;s=14-(u|b|s)+(p<>>15)|0;s=o>>>(s+7|0)&1|s<<1}else s=0;r=t[190380+(s<<2)>>2]|0;e:do{if(!r){r=0;e=0;p=57}else{e=0;l=r;f=o<<((s|0)==31?0:25-(s>>>1)|0);r=0;while(1){a=(t[l+4>>2]&-8)-o|0;if(a>>>0>>0)if(!a){i=0;r=l;e=l;p=61;break e}else{e=l;i=a}a=t[l+20>>2]|0;l=t[l+16+(f>>>31<<2)>>2]|0;r=(a|0)==0|(a|0)==(l|0)?r:a;a=(l|0)==0;if(a){p=57;break}else f=f<<((a^1)&1)}}}while(0);if((p|0)==57){if((r|0)==0&(e|0)==0){e=2<>>12&16;b=b>>>l;f=b>>>5&8;b=b>>>f;s=b>>>2&4;b=b>>>s;u=b>>>1&2;b=b>>>u;r=b>>>1&1;e=0;r=t[190380+((f|l|s|u|r)+(b>>>r)<<2)>>2]|0}if(!r){l=e;f=i}else p=61}if((p|0)==61)while(1){p=0;u=(t[r+4>>2]&-8)-o|0;b=u>>>0>>0;i=b?u:i;e=b?r:e;r=t[r+16+(((t[r+16>>2]|0)==0&1)<<2)>>2]|0;if(!r){l=e;f=i;break}else p=61}if((l|0)!=0?f>>>0<((t[47521]|0)-o|0)>>>0:0){n=l+o|0;if(n>>>0<=l>>>0){E=0;h=B;return E|0}a=t[l+24>>2]|0;A=t[l+12>>2]|0;do{if((A|0)==(l|0)){e=l+20|0;A=t[e>>2]|0;if(!A){e=l+16|0;A=t[e>>2]|0;if(!A){A=0;break}}while(1){r=A+20|0;i=t[r>>2]|0;if(i|0){A=i;e=r;continue}r=A+16|0;i=t[r>>2]|0;if(!i)break;else{A=i;e=r}}t[e>>2]=0}else{E=t[l+8>>2]|0;t[E+12>>2]=A;t[A+8>>2]=E}}while(0);do{if(a){e=t[l+28>>2]|0;r=190380+(e<<2)|0;if((l|0)==(t[r>>2]|0)){t[r>>2]=A;if(!A){i=c&~(1<>2]|0)!=(l|0)&1)<<2)>>2]=A;if(!A){i=c;break}}t[A+24>>2]=a;e=t[l+16>>2]|0;if(e|0){t[A+16>>2]=e;t[e+24>>2]=A}e=t[l+20>>2]|0;if(e){t[A+20>>2]=e;t[e+24>>2]=A;i=c}else i=c}else i=c}while(0);do{if(f>>>0>=16){t[l+4>>2]=o|3;t[n+4>>2]=f|1;t[n+f>>2]=f;A=f>>>3;if(f>>>0<256){r=190116+(A<<1<<2)|0;e=t[47519]|0;A=1<>2]|0}t[e>>2]=n;t[A+12>>2]=n;t[n+8>>2]=A;t[n+12>>2]=r;break}A=f>>>8;if(A)if(f>>>0>16777215)A=31;else{p=(A+1048320|0)>>>16&8;E=A<>>16&4;E=E<>>16&2;A=14-(m|p|A)+(E<>>15)|0;A=f>>>(A+7|0)&1|A<<1}else A=0;r=190380+(A<<2)|0;t[n+28>>2]=A;e=n+16|0;t[e+4>>2]=0;t[e>>2]=0;e=1<>2]=n;t[n+24>>2]=r;t[n+12>>2]=n;t[n+8>>2]=n;break}e=f<<((A|0)==31?0:25-(A>>>1)|0);r=t[r>>2]|0;while(1){if((t[r+4>>2]&-8|0)==(f|0)){p=97;break}i=r+16+(e>>>31<<2)|0;A=t[i>>2]|0;if(!A){p=96;break}else{e=e<<1;r=A}}if((p|0)==96){t[i>>2]=n;t[n+24>>2]=r;t[n+12>>2]=n;t[n+8>>2]=n;break}else if((p|0)==97){p=r+8|0;E=t[p>>2]|0;t[E+12>>2]=n;t[p>>2]=n;t[n+8>>2]=E;t[n+12>>2]=r;t[n+24>>2]=0;break}}else{E=f+o|0;t[l+4>>2]=E|3;E=l+E+4|0;t[E>>2]=t[E>>2]|1}}while(0);E=l+8|0;h=B;return E|0}else u=o}else u=o}else u=-1}while(0);r=t[47521]|0;if(r>>>0>=u>>>0){A=r-u|0;e=t[47524]|0;if(A>>>0>15){E=e+u|0;t[47524]=E;t[47521]=A;t[E+4>>2]=A|1;t[e+r>>2]=A;t[e+4>>2]=u|3}else{t[47521]=0;t[47524]=0;t[e+4>>2]=r|3;E=e+r+4|0;t[E>>2]=t[E>>2]|1}E=e+8|0;h=B;return E|0}l=t[47522]|0;if(l>>>0>u>>>0){m=l-u|0;t[47522]=m;E=t[47525]|0;p=E+u|0;t[47525]=p;t[p+4>>2]=m|1;t[E+4>>2]=u|3;E=E+8|0;h=B;return E|0}if(!(t[47637]|0)){t[47639]=4096;t[47638]=4096;t[47640]=-1;t[47641]=-1;t[47642]=0;t[47630]=0;t[47637]=w&-16^1431655768;e=4096}else e=t[47639]|0;s=u+48|0;c=u+47|0;f=e+c|0;a=0-e|0;o=f&a;if(o>>>0<=u>>>0){E=0;h=B;return E|0}e=t[47629]|0;if(e|0?(b=t[47627]|0,w=b+o|0,w>>>0<=b>>>0|w>>>0>e>>>0):0){E=0;h=B;return E|0}e:do{if(!(t[47630]&4)){r=t[47525]|0;A:do{if(r){i=190524;while(1){e=t[i>>2]|0;if(e>>>0<=r>>>0?(v=i+4|0,(e+(t[v>>2]|0)|0)>>>0>r>>>0):0)break;e=t[i+8>>2]|0;if(!e){p=118;break A}else i=e}A=f-l&a;if(A>>>0<2147483647){e=W6(A|0)|0;if((e|0)==((t[i>>2]|0)+(t[v>>2]|0)|0)){if((e|0)!=(-1|0)){f=A;n=e;p=135;break e}}else{i=e;p=126}}else A=0}else p=118}while(0);do{if((p|0)==118){r=W6(0)|0;if((r|0)!=(-1|0)?(A=r,k=t[47638]|0,d=k+-1|0,A=((d&A|0)==0?0:(d+A&0-k)-A|0)+o|0,k=t[47627]|0,d=A+k|0,A>>>0>u>>>0&A>>>0<2147483647):0){v=t[47629]|0;if(v|0?d>>>0<=k>>>0|d>>>0>v>>>0:0){A=0;break}e=W6(A|0)|0;if((e|0)==(r|0)){f=A;n=r;p=135;break e}else{i=e;p=126}}else A=0}}while(0);do{if((p|0)==126){r=0-A|0;if(!(s>>>0>A>>>0&(A>>>0<2147483647&(i|0)!=(-1|0))))if((i|0)==(-1|0)){A=0;break}else{f=A;n=i;p=135;break e}e=t[47639]|0;e=c-A+e&0-e;if(e>>>0>=2147483647){f=A;n=i;p=135;break e}if((W6(e|0)|0)==(-1|0)){W6(r|0)|0;A=0;break}else{f=e+A|0;n=i;p=135;break e}}}while(0);t[47630]=t[47630]|4;p=133}else{A=0;p=133}}while(0);if(((p|0)==133?o>>>0<2147483647:0)?(n=W6(o|0)|0,v=W6(0)|0,g=v-n|0,m=g>>>0>(u+40|0)>>>0,!((n|0)==(-1|0)|m^1|n>>>0>>0&((n|0)!=(-1|0)&(v|0)!=(-1|0))^1)):0){f=m?g:A;p=135}if((p|0)==135){A=(t[47627]|0)+f|0;t[47627]=A;if(A>>>0>(t[47628]|0)>>>0)t[47628]=A;s=t[47525]|0;do{if(s){A=190524;while(1){e=t[A>>2]|0;r=A+4|0;i=t[r>>2]|0;if((n|0)==(e+i|0)){p=143;break}a=t[A+8>>2]|0;if(!a)break;else A=a}if(((p|0)==143?(t[A+12>>2]&8|0)==0:0)?n>>>0>s>>>0&e>>>0<=s>>>0:0){t[r>>2]=i+f;E=(t[47522]|0)+f|0;m=s+8|0;m=(m&7|0)==0?0:0-m&7;p=s+m|0;m=E-m|0;t[47525]=p;t[47522]=m;t[p+4>>2]=m|1;t[s+E+4>>2]=40;t[47526]=t[47641];break}if(n>>>0<(t[47523]|0)>>>0)t[47523]=n;e=n+f|0;A=190524;while(1){if((t[A>>2]|0)==(e|0)){p=151;break}A=t[A+8>>2]|0;if(!A){e=190524;break}}if((p|0)==151)if(!(t[A+12>>2]&8)){t[A>>2]=n;o=A+4|0;t[o>>2]=(t[o>>2]|0)+f;o=n+8|0;o=n+((o&7|0)==0?0:0-o&7)|0;A=e+8|0;A=e+((A&7|0)==0?0:0-A&7)|0;c=o+u|0;l=A-o-u|0;t[o+4>>2]=u|3;do{if((s|0)!=(A|0)){if((t[47524]|0)==(A|0)){E=(t[47521]|0)+l|0;t[47521]=E;t[47524]=c;t[c+4>>2]=E|1;t[c+E>>2]=E;break}e=t[A+4>>2]|0;if((e&3|0)==1){f=e&-8;i=e>>>3;e:do{if(e>>>0<256){e=t[A+8>>2]|0;r=t[A+12>>2]|0;if((r|0)==(e|0)){t[47519]=t[47519]&~(1<>2]=r;t[r+8>>2]=e;break}}else{n=t[A+24>>2]|0;e=t[A+12>>2]|0;do{if((e|0)==(A|0)){i=A+16|0;r=i+4|0;e=t[r>>2]|0;if(!e){e=t[i>>2]|0;if(!e){e=0;break}else r=i}while(1){i=e+20|0;a=t[i>>2]|0;if(a|0){e=a;r=i;continue}i=e+16|0;a=t[i>>2]|0;if(!a)break;else{e=a;r=i}}t[r>>2]=0}else{E=t[A+8>>2]|0;t[E+12>>2]=e;t[e+8>>2]=E}}while(0);if(!n)break;r=t[A+28>>2]|0;i=190380+(r<<2)|0;do{if((t[i>>2]|0)!=(A|0)){t[n+16+(((t[n+16>>2]|0)!=(A|0)&1)<<2)>>2]=e;if(!e)break e}else{t[i>>2]=e;if(e|0)break;t[47520]=t[47520]&~(1<>2]=n;r=A+16|0;i=t[r>>2]|0;if(i|0){t[e+16>>2]=i;t[i+24>>2]=e}r=t[r+4>>2]|0;if(!r)break;t[e+20>>2]=r;t[r+24>>2]=e}}while(0);A=A+f|0;a=f+l|0}else a=l;A=A+4|0;t[A>>2]=t[A>>2]&-2;t[c+4>>2]=a|1;t[c+a>>2]=a;A=a>>>3;if(a>>>0<256){r=190116+(A<<1<<2)|0;e=t[47519]|0;A=1<>2]|0}t[e>>2]=c;t[A+12>>2]=c;t[c+8>>2]=A;t[c+12>>2]=r;break}A=a>>>8;do{if(!A)A=0;else{if(a>>>0>16777215){A=31;break}p=(A+1048320|0)>>>16&8;E=A<>>16&4;E=E<>>16&2;A=14-(m|p|A)+(E<>>15)|0;A=a>>>(A+7|0)&1|A<<1}}while(0);i=190380+(A<<2)|0;t[c+28>>2]=A;e=c+16|0;t[e+4>>2]=0;t[e>>2]=0;e=t[47520]|0;r=1<>2]=c;t[c+24>>2]=i;t[c+12>>2]=c;t[c+8>>2]=c;break}e=a<<((A|0)==31?0:25-(A>>>1)|0);r=t[i>>2]|0;while(1){if((t[r+4>>2]&-8|0)==(a|0)){p=192;break}i=r+16+(e>>>31<<2)|0;A=t[i>>2]|0;if(!A){p=191;break}else{e=e<<1;r=A}}if((p|0)==191){t[i>>2]=c;t[c+24>>2]=r;t[c+12>>2]=c;t[c+8>>2]=c;break}else if((p|0)==192){p=r+8|0;E=t[p>>2]|0;t[E+12>>2]=c;t[p>>2]=c;t[c+8>>2]=E;t[c+12>>2]=r;t[c+24>>2]=0;break}}else{E=(t[47522]|0)+l|0;t[47522]=E;t[47525]=c;t[c+4>>2]=E|1}}while(0);E=o+8|0;h=B;return E|0}else e=190524;while(1){A=t[e>>2]|0;if(A>>>0<=s>>>0?(E=A+(t[e+4>>2]|0)|0,E>>>0>s>>>0):0)break;e=t[e+8>>2]|0}a=E+-47|0;e=a+8|0;e=a+((e&7|0)==0?0:0-e&7)|0;a=s+16|0;e=e>>>0>>0?s:e;A=e+8|0;r=f+-40|0;m=n+8|0;m=(m&7|0)==0?0:0-m&7;p=n+m|0;m=r-m|0;t[47525]=p;t[47522]=m;t[p+4>>2]=m|1;t[n+r+4>>2]=40;t[47526]=t[47641];r=e+4|0;t[r>>2]=27;t[A>>2]=t[47631];t[A+4>>2]=t[47632];t[A+8>>2]=t[47633];t[A+12>>2]=t[47634];t[47631]=n;t[47632]=f;t[47634]=0;t[47633]=A;A=e+24|0;do{p=A;A=A+4|0;t[A>>2]=7}while((p+8|0)>>>0>>0);if((e|0)!=(s|0)){n=e-s|0;t[r>>2]=t[r>>2]&-2;t[s+4>>2]=n|1;t[e>>2]=n;A=n>>>3;if(n>>>0<256){r=190116+(A<<1<<2)|0;e=t[47519]|0;A=1<>2]|0}t[e>>2]=s;t[A+12>>2]=s;t[s+8>>2]=A;t[s+12>>2]=r;break}A=n>>>8;if(A)if(n>>>0>16777215)r=31;else{p=(A+1048320|0)>>>16&8;E=A<>>16&4;E=E<>>16&2;r=14-(m|p|r)+(E<>>15)|0;r=n>>>(r+7|0)&1|r<<1}else r=0;i=190380+(r<<2)|0;t[s+28>>2]=r;t[s+20>>2]=0;t[a>>2]=0;A=t[47520]|0;e=1<>2]=s;t[s+24>>2]=i;t[s+12>>2]=s;t[s+8>>2]=s;break}e=n<<((r|0)==31?0:25-(r>>>1)|0);r=t[i>>2]|0;while(1){if((t[r+4>>2]&-8|0)==(n|0)){p=213;break}i=r+16+(e>>>31<<2)|0;A=t[i>>2]|0;if(!A){p=212;break}else{e=e<<1;r=A}}if((p|0)==212){t[i>>2]=s;t[s+24>>2]=r;t[s+12>>2]=s;t[s+8>>2]=s;break}else if((p|0)==213){p=r+8|0;E=t[p>>2]|0;t[E+12>>2]=s;t[p>>2]=s;t[s+8>>2]=E;t[s+12>>2]=r;t[s+24>>2]=0;break}}}else{E=t[47523]|0;if((E|0)==0|n>>>0>>0)t[47523]=n;t[47631]=n;t[47632]=f;t[47634]=0;t[47528]=t[47637];t[47527]=-1;t[47532]=190116;t[47531]=190116;t[47534]=190124;t[47533]=190124;t[47536]=190132;t[47535]=190132;t[47538]=190140;t[47537]=190140;t[47540]=190148;t[47539]=190148;t[47542]=190156;t[47541]=190156;t[47544]=190164;t[47543]=190164;t[47546]=190172;t[47545]=190172;t[47548]=190180;t[47547]=190180;t[47550]=190188;t[47549]=190188;t[47552]=190196;t[47551]=190196;t[47554]=190204;t[47553]=190204;t[47556]=190212;t[47555]=190212;t[47558]=190220;t[47557]=190220;t[47560]=190228;t[47559]=190228;t[47562]=190236;t[47561]=190236;t[47564]=190244;t[47563]=190244;t[47566]=190252;t[47565]=190252;t[47568]=190260;t[47567]=190260;t[47570]=190268;t[47569]=190268;t[47572]=190276;t[47571]=190276;t[47574]=190284;t[47573]=190284;t[47576]=190292;t[47575]=190292;t[47578]=190300;t[47577]=190300;t[47580]=190308;t[47579]=190308;t[47582]=190316;t[47581]=190316;t[47584]=190324;t[47583]=190324;t[47586]=190332;t[47585]=190332;t[47588]=190340;t[47587]=190340;t[47590]=190348;t[47589]=190348;t[47592]=190356;t[47591]=190356;t[47594]=190364;t[47593]=190364;E=f+-40|0;m=n+8|0;m=(m&7|0)==0?0:0-m&7;p=n+m|0;m=E-m|0;t[47525]=p;t[47522]=m;t[p+4>>2]=m|1;t[n+E+4>>2]=40;t[47526]=t[47641]}}while(0);A=t[47522]|0;if(A>>>0>u>>>0){m=A-u|0;t[47522]=m;E=t[47525]|0;p=E+u|0;t[47525]=p;t[p+4>>2]=m|1;t[E+4>>2]=u|3;E=E+8|0;h=B;return E|0}}t[(R2()|0)>>2]=12;E=0;h=B;return E|0}function G2(e){e=e|0;var A=0,r=0,i=0,a=0,n=0,f=0,l=0,s=0;if(!e)return;r=e+-8|0;a=t[47523]|0;e=t[e+-4>>2]|0;A=e&-8;s=r+A|0;do{if(!(e&1)){i=t[r>>2]|0;if(!(e&3))return;f=r+(0-i)|0;n=i+A|0;if(f>>>0>>0)return;if((t[47524]|0)==(f|0)){e=s+4|0;A=t[e>>2]|0;if((A&3|0)!=3){l=f;A=n;break}t[47521]=n;t[e>>2]=A&-2;t[f+4>>2]=n|1;t[f+n>>2]=n;return}r=i>>>3;if(i>>>0<256){e=t[f+8>>2]|0;A=t[f+12>>2]|0;if((A|0)==(e|0)){t[47519]=t[47519]&~(1<>2]=A;t[A+8>>2]=e;l=f;A=n;break}}a=t[f+24>>2]|0;e=t[f+12>>2]|0;do{if((e|0)==(f|0)){r=f+16|0;A=r+4|0;e=t[A>>2]|0;if(!e){e=t[r>>2]|0;if(!e){e=0;break}else A=r}while(1){r=e+20|0;i=t[r>>2]|0;if(i|0){e=i;A=r;continue}r=e+16|0;i=t[r>>2]|0;if(!i)break;else{e=i;A=r}}t[A>>2]=0}else{l=t[f+8>>2]|0;t[l+12>>2]=e;t[e+8>>2]=l}}while(0);if(a){A=t[f+28>>2]|0;r=190380+(A<<2)|0;if((t[r>>2]|0)==(f|0)){t[r>>2]=e;if(!e){t[47520]=t[47520]&~(1<>2]|0)!=(f|0)&1)<<2)>>2]=e;if(!e){l=f;A=n;break}}t[e+24>>2]=a;A=f+16|0;r=t[A>>2]|0;if(r|0){t[e+16>>2]=r;t[r+24>>2]=e}A=t[A+4>>2]|0;if(A){t[e+20>>2]=A;t[A+24>>2]=e;l=f;A=n}else{l=f;A=n}}else{l=f;A=n}}else{l=r;f=r}}while(0);if(f>>>0>=s>>>0)return;e=s+4|0;i=t[e>>2]|0;if(!(i&1))return;if(!(i&2)){if((t[47525]|0)==(s|0)){s=(t[47522]|0)+A|0;t[47522]=s;t[47525]=l;t[l+4>>2]=s|1;if((l|0)!=(t[47524]|0))return;t[47524]=0;t[47521]=0;return}if((t[47524]|0)==(s|0)){s=(t[47521]|0)+A|0;t[47521]=s;t[47524]=f;t[l+4>>2]=s|1;t[f+s>>2]=s;return}a=(i&-8)+A|0;r=i>>>3;do{if(i>>>0<256){A=t[s+8>>2]|0;e=t[s+12>>2]|0;if((e|0)==(A|0)){t[47519]=t[47519]&~(1<>2]=e;t[e+8>>2]=A;break}}else{n=t[s+24>>2]|0;e=t[s+12>>2]|0;do{if((e|0)==(s|0)){r=s+16|0;A=r+4|0;e=t[A>>2]|0;if(!e){e=t[r>>2]|0;if(!e){r=0;break}else A=r}while(1){r=e+20|0;i=t[r>>2]|0;if(i|0){e=i;A=r;continue}r=e+16|0;i=t[r>>2]|0;if(!i)break;else{e=i;A=r}}t[A>>2]=0;r=e}else{r=t[s+8>>2]|0;t[r+12>>2]=e;t[e+8>>2]=r;r=e}}while(0);if(n|0){e=t[s+28>>2]|0;A=190380+(e<<2)|0;if((t[A>>2]|0)==(s|0)){t[A>>2]=r;if(!r){t[47520]=t[47520]&~(1<>2]|0)!=(s|0)&1)<<2)>>2]=r;if(!r)break}t[r+24>>2]=n;e=s+16|0;A=t[e>>2]|0;if(A|0){t[r+16>>2]=A;t[A+24>>2]=r}e=t[e+4>>2]|0;if(e|0){t[r+20>>2]=e;t[e+24>>2]=r}}}}while(0);t[l+4>>2]=a|1;t[f+a>>2]=a;if((l|0)==(t[47524]|0)){t[47521]=a;return}}else{t[e>>2]=i&-2;t[l+4>>2]=A|1;t[f+A>>2]=A;a=A}e=a>>>3;if(a>>>0<256){r=190116+(e<<1<<2)|0;A=t[47519]|0;e=1<>2]|0}t[A>>2]=l;t[e+12>>2]=l;t[l+8>>2]=e;t[l+12>>2]=r;return}e=a>>>8;if(e)if(a>>>0>16777215)e=31;else{f=(e+1048320|0)>>>16&8;s=e<>>16&4;s=s<>>16&2;e=14-(n|f|e)+(s<>>15)|0;e=a>>>(e+7|0)&1|e<<1}else e=0;i=190380+(e<<2)|0;t[l+28>>2]=e;t[l+20>>2]=0;t[l+16>>2]=0;A=t[47520]|0;r=1<>>1)|0);r=t[i>>2]|0;while(1){if((t[r+4>>2]&-8|0)==(a|0)){e=73;break}i=r+16+(A>>>31<<2)|0;e=t[i>>2]|0;if(!e){e=72;break}else{A=A<<1;r=e}}if((e|0)==72){t[i>>2]=l;t[l+24>>2]=r;t[l+12>>2]=l;t[l+8>>2]=l;break}else if((e|0)==73){f=r+8|0;s=t[f>>2]|0;t[s+12>>2]=l;t[f>>2]=l;t[l+8>>2]=s;t[l+12>>2]=r;t[l+24>>2]=0;break}}else{t[47520]=A|r;t[i>>2]=l;t[l+24>>2]=i;t[l+12>>2]=l;t[l+8>>2]=l}}while(0);s=(t[47527]|0)+-1|0;t[47527]=s;if(!s)e=190532;else return;while(1){e=t[e>>2]|0;if(!e)break;else e=e+8|0}t[47527]=-1;return}function L2(e,A){e=e|0;A=A|0;var r=0;if(e){r=P(A,e)|0;if((A|e)>>>0>65535)r=((r>>>0)/(e>>>0)|0|0)==(A|0)?r:-1}else r=0;e=Z2(r)|0;if(!e)return e|0;if(!(t[e+-4>>2]&3))return e|0;z6(e|0,0,r|0)|0;return e|0}function Q2(e,A){e=e|0;A=A|0;var r=0,i=0;if(!e){A=Z2(A)|0;return A|0}if(A>>>0>4294967231){t[(R2()|0)>>2]=12;A=0;return A|0}r=D2(e+-8|0,A>>>0<11?16:A+11&-8)|0;if(r|0){A=r+8|0;return A|0}r=Z2(A)|0;if(!r){A=0;return A|0}i=t[e+-4>>2]|0;i=(i&-8)-((i&3|0)==0?8:4)|0;Q6(r|0,e|0,(i>>>0>>0?i:A)|0)|0;G2(e);A=r;return A|0}function D2(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0,f=0,l=0,s=0,c=0,o=0,u=0;o=e+4|0;u=t[o>>2]|0;r=u&-8;l=e+r|0;if(!(u&3)){if(A>>>0<256){e=0;return e|0}if(r>>>0>=(A+4|0)>>>0?(r-A|0)>>>0<=t[47639]<<1>>>0:0)return e|0;e=0;return e|0}if(r>>>0>=A>>>0){r=r-A|0;if(r>>>0<=15)return e|0;c=e+A|0;t[o>>2]=u&1|A|2;t[c+4>>2]=r|3;u=l+4|0;t[u>>2]=t[u>>2]|1;z2(c,r);return e|0}if((t[47525]|0)==(l|0)){c=(t[47522]|0)+r|0;r=c-A|0;i=e+A|0;if(c>>>0<=A>>>0){e=0;return e|0}t[o>>2]=u&1|A|2;t[i+4>>2]=r|1;t[47525]=i;t[47522]=r;return e|0}if((t[47524]|0)==(l|0)){i=(t[47521]|0)+r|0;if(i>>>0>>0){e=0;return e|0}r=i-A|0;if(r>>>0>15){c=e+A|0;i=e+i|0;t[o>>2]=u&1|A|2;t[c+4>>2]=r|1;t[i>>2]=r;i=i+4|0;t[i>>2]=t[i>>2]&-2;i=c}else{t[o>>2]=u&1|i|2;i=e+i+4|0;t[i>>2]=t[i>>2]|1;i=0;r=0}t[47521]=r;t[47524]=i;return e|0}i=t[l+4>>2]|0;if(i&2|0){e=0;return e|0}s=(i&-8)+r|0;if(s>>>0>>0){e=0;return e|0}c=s-A|0;a=i>>>3;do{if(i>>>0<256){i=t[l+8>>2]|0;r=t[l+12>>2]|0;if((r|0)==(i|0)){t[47519]=t[47519]&~(1<>2]=r;t[r+8>>2]=i;break}}else{f=t[l+24>>2]|0;r=t[l+12>>2]|0;do{if((r|0)==(l|0)){a=l+16|0;i=a+4|0;r=t[i>>2]|0;if(!r){r=t[a>>2]|0;if(!r){a=0;break}else n=a}else n=i;while(1){a=r+20|0;i=t[a>>2]|0;if(i|0){r=i;n=a;continue}i=r+16|0;a=t[i>>2]|0;if(!a)break;else{r=a;n=i}}t[n>>2]=0;a=r}else{a=t[l+8>>2]|0;t[a+12>>2]=r;t[r+8>>2]=a;a=r}}while(0);if(f|0){r=t[l+28>>2]|0;i=190380+(r<<2)|0;if((t[i>>2]|0)==(l|0)){t[i>>2]=a;if(!a){t[47520]=t[47520]&~(1<>2]|0)!=(l|0)&1)<<2)>>2]=a;if(!a)break}t[a+24>>2]=f;r=l+16|0;i=t[r>>2]|0;if(i|0){t[a+16>>2]=i;t[i+24>>2]=a}r=t[r+4>>2]|0;if(r|0){t[a+20>>2]=r;t[r+24>>2]=a}}}}while(0);if(c>>>0<16){t[o>>2]=s|u&1|2;u=e+s+4|0;t[u>>2]=t[u>>2]|1;return e|0}else{l=e+A|0;t[o>>2]=u&1|A|2;t[l+4>>2]=c|3;u=e+s+4|0;t[u>>2]=t[u>>2]|1;z2(l,c);return e|0}return 0}function z2(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0,f=0,l=0;l=e+A|0;r=t[e+4>>2]|0;do{if(!(r&1)){a=t[e>>2]|0;if(!(r&3))return;f=e+(0-a)|0;A=a+A|0;if((t[47524]|0)==(f|0)){e=l+4|0;r=t[e>>2]|0;if((r&3|0)!=3)break;t[47521]=A;t[e>>2]=r&-2;t[f+4>>2]=A|1;t[l>>2]=A;return}i=a>>>3;if(a>>>0<256){e=t[f+8>>2]|0;r=t[f+12>>2]|0;if((r|0)==(e|0)){t[47519]=t[47519]&~(1<>2]=r;t[r+8>>2]=e;break}}n=t[f+24>>2]|0;e=t[f+12>>2]|0;do{if((e|0)==(f|0)){i=f+16|0;r=i+4|0;e=t[r>>2]|0;if(!e){e=t[i>>2]|0;if(!e){e=0;break}else r=i}while(1){i=e+20|0;a=t[i>>2]|0;if(a|0){e=a;r=i;continue}i=e+16|0;a=t[i>>2]|0;if(!a)break;else{e=a;r=i}}t[r>>2]=0}else{a=t[f+8>>2]|0;t[a+12>>2]=e;t[e+8>>2]=a}}while(0);if(n){r=t[f+28>>2]|0;i=190380+(r<<2)|0;if((t[i>>2]|0)==(f|0)){t[i>>2]=e;if(!e){t[47520]=t[47520]&~(1<>2]|0)!=(f|0)&1)<<2)>>2]=e;if(!e)break}t[e+24>>2]=n;r=f+16|0;i=t[r>>2]|0;if(i|0){t[e+16>>2]=i;t[i+24>>2]=e}r=t[r+4>>2]|0;if(r){t[e+20>>2]=r;t[r+24>>2]=e}}}else f=e}while(0);e=l+4|0;i=t[e>>2]|0;if(!(i&2)){if((t[47525]|0)==(l|0)){l=(t[47522]|0)+A|0;t[47522]=l;t[47525]=f;t[f+4>>2]=l|1;if((f|0)!=(t[47524]|0))return;t[47524]=0;t[47521]=0;return}if((t[47524]|0)==(l|0)){l=(t[47521]|0)+A|0;t[47521]=l;t[47524]=f;t[f+4>>2]=l|1;t[f+l>>2]=l;return}a=(i&-8)+A|0;r=i>>>3;do{if(i>>>0<256){e=t[l+8>>2]|0;A=t[l+12>>2]|0;if((A|0)==(e|0)){t[47519]=t[47519]&~(1<>2]=A;t[A+8>>2]=e;break}}else{n=t[l+24>>2]|0;A=t[l+12>>2]|0;do{if((A|0)==(l|0)){r=l+16|0;e=r+4|0;A=t[e>>2]|0;if(!A){A=t[r>>2]|0;if(!A){r=0;break}else e=r}while(1){r=A+20|0;i=t[r>>2]|0;if(i|0){A=i;e=r;continue}r=A+16|0;i=t[r>>2]|0;if(!i)break;else{A=i;e=r}}t[e>>2]=0;r=A}else{r=t[l+8>>2]|0;t[r+12>>2]=A;t[A+8>>2]=r;r=A}}while(0);if(n|0){A=t[l+28>>2]|0;e=190380+(A<<2)|0;if((t[e>>2]|0)==(l|0)){t[e>>2]=r;if(!r){t[47520]=t[47520]&~(1<>2]|0)!=(l|0)&1)<<2)>>2]=r;if(!r)break}t[r+24>>2]=n;A=l+16|0;e=t[A>>2]|0;if(e|0){t[r+16>>2]=e;t[e+24>>2]=r}A=t[A+4>>2]|0;if(A|0){t[r+20>>2]=A;t[A+24>>2]=r}}}}while(0);t[f+4>>2]=a|1;t[f+a>>2]=a;if((f|0)==(t[47524]|0)){t[47521]=a;return}}else{t[e>>2]=i&-2;t[f+4>>2]=A|1;t[f+A>>2]=A;a=A}A=a>>>3;if(a>>>0<256){r=190116+(A<<1<<2)|0;e=t[47519]|0;A=1<>2]|0}t[e>>2]=f;t[A+12>>2]=f;t[f+8>>2]=A;t[f+12>>2]=r;return}A=a>>>8;if(A)if(a>>>0>16777215)A=31;else{n=(A+1048320|0)>>>16&8;l=A<>>16&4;l=l<>>16&2;A=14-(i|n|A)+(l<>>15)|0;A=a>>>(A+7|0)&1|A<<1}else A=0;i=190380+(A<<2)|0;t[f+28>>2]=A;t[f+20>>2]=0;t[f+16>>2]=0;e=t[47520]|0;r=1<>2]=f;t[f+24>>2]=i;t[f+12>>2]=f;t[f+8>>2]=f;return}e=a<<((A|0)==31?0:25-(A>>>1)|0);r=t[i>>2]|0;while(1){if((t[r+4>>2]&-8|0)==(a|0)){A=69;break}i=r+16+(e>>>31<<2)|0;A=t[i>>2]|0;if(!A){A=68;break}else{e=e<<1;r=A}}if((A|0)==68){t[i>>2]=f;t[f+24>>2]=r;t[f+12>>2]=f;t[f+8>>2]=f;return}else if((A|0)==69){n=r+8|0;l=t[n>>2]|0;t[l+12>>2]=f;t[n>>2]=f;t[f+8>>2]=l;t[f+12>>2]=r;t[f+24>>2]=0;return}}function W2(e,A){e=e|0;A=A|0;if(e>>>0<9){A=Z2(A)|0;return A|0}else{A=Y2(e,A)|0;return A|0}return 0}function Y2(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0,f=0,l=0;e=e>>>0>16?e:16;if(e+-1&e){r=16;while(1)if(r>>>0>>0)r=r<<1;else{e=r;break}}if((-64-e|0)>>>0<=A>>>0){t[(R2()|0)>>2]=12;f=0;return f|0}n=A>>>0<11?16:A+11&-8;r=Z2(n+12+e|0)|0;if(!r){f=0;return f|0}a=r+-8|0;do{if(e+-1&r){i=(r+e+-1&0-e)+-8|0;A=a;i=(i-A|0)>>>0>15?i:i+e|0;A=i-A|0;e=r+-4|0;l=t[e>>2]|0;r=(l&-8)-A|0;if(!(l&3)){t[i>>2]=(t[a>>2]|0)+A;t[i+4>>2]=r;e=i;A=i;break}else{l=i+4|0;t[l>>2]=r|t[l>>2]&1|2;r=i+r+4|0;t[r>>2]=t[r>>2]|1;t[e>>2]=A|t[e>>2]&1|2;t[l>>2]=t[l>>2]|1;z2(a,A);e=i;A=i;break}}else{e=a;A=a}}while(0);e=e+4|0;r=t[e>>2]|0;if(r&3|0?(f=r&-8,f>>>0>(n+16|0)>>>0):0){l=f-n|0;a=A+n|0;t[e>>2]=n|r&1|2;t[a+4>>2]=l|3;f=A+f+4|0;t[f>>2]=t[f>>2]|1;z2(a,l)}l=A+8|0;return l|0}function F2(e){e=e|0;var A=0,r=0;A=h;h=h+16|0;r=A;t[r>>2]=x2(t[e+60>>2]|0)|0;e=N2(Ne(6,r|0)|0)|0;h=A;return e|0}function M2(e,A,r){e=e|0;A=A|0;r=r|0;var a=0,n=0,f=0,l=0,s=0,c=0,o=0;c=h;h=h+32|0;a=c;l=c+16|0;t[l>>2]=A;n=l+4|0;s=e+48|0;o=t[s>>2]|0;t[n>>2]=r-((o|0)!=0&1);f=e+44|0;t[l+8>>2]=t[f>>2];t[l+12>>2]=o;t[a>>2]=t[e+60>>2];t[a+4>>2]=l;t[a+8>>2]=2;a=N2(Ze(145,a|0)|0)|0;if((a|0)>=1){l=t[n>>2]|0;if(a>>>0>l>>>0){n=t[f>>2]|0;f=e+4|0;t[f>>2]=n;t[e+8>>2]=n+(a-l);if(!(t[s>>2]|0))a=r;else{t[f>>2]=n+1;i[A+(r+-1)>>0]=i[n>>0]|0;a=r}}}else t[e>>2]=t[e>>2]|a&48^16;h=c;return a|0}function V2(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0,n=0;a=h;h=h+32|0;n=a;i=a+20|0;t[n>>2]=t[e+60>>2];t[n+4>>2]=0;t[n+8>>2]=A;t[n+12>>2]=i;t[n+16>>2]=r;if((N2(Ie(140,n|0)|0)|0)<0){t[i>>2]=-1;e=-1}else e=t[i>>2]|0;h=a;return e|0}function N2(e){e=e|0;if(e>>>0>4294963200){t[(R2()|0)>>2]=0-e;e=-1}return e|0}function R2(){return 190572}function x2(e){e=e|0;return e|0}function J2(e,A,r){e=e|0;A=A|0;r=r|0;var a=0,n=0;n=h;h=h+32|0;a=n;t[e+36>>2]=18;if((t[e>>2]&64|0)==0?(t[a>>2]=t[e+60>>2],t[a+4>>2]=21523,t[a+8>>2]=n+16,Ve(54,a|0)|0):0)i[e+75>>0]=-1;a=H2(e,A,r)|0;h=n;return a|0}function H2(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0,n=0,f=0,l=0,s=0,c=0,o=0,u=0,b=0,w=0;u=h;h=h+48|0;c=u+16|0;n=u;a=u+32|0;l=e+28|0;i=t[l>>2]|0;t[a>>2]=i;s=e+20|0;i=(t[s>>2]|0)-i|0;t[a+4>>2]=i;t[a+8>>2]=A;t[a+12>>2]=r;i=i+r|0;f=e+60|0;t[n>>2]=t[f>>2];t[n+4>>2]=a;t[n+8>>2]=2;n=N2(Ge(146,n|0)|0)|0;e:do{if((i|0)!=(n|0)){A=2;while(1){if((n|0)<0)break;i=i-n|0;w=t[a+4>>2]|0;b=n>>>0>w>>>0;a=b?a+8|0:a;A=A+(b<<31>>31)|0;w=n-(b?w:0)|0;t[a>>2]=(t[a>>2]|0)+w;b=a+4|0;t[b>>2]=(t[b>>2]|0)-w;t[c>>2]=t[f>>2];t[c+4>>2]=a;t[c+8>>2]=A;n=N2(Ge(146,c|0)|0)|0;if((i|0)==(n|0)){o=3;break e}}t[e+16>>2]=0;t[l>>2]=0;t[s>>2]=0;t[e>>2]=t[e>>2]|32;if((A|0)==2)r=0;else r=r-(t[a+4>>2]|0)|0}else o=3}while(0);if((o|0)==3){w=t[e+44>>2]|0;t[e+16>>2]=w+(t[e+48>>2]|0);t[l>>2]=w;t[s>>2]=w}h=u;return r|0}function P2(e,A){e=e|0;A=A|0;var r=0,i=0;r=h;h=h+16|0;i=r;t[i>>2]=e;t[i+4>>2]=A;A=N2(Re(91,i|0)|0)|0;h=r;return A|0}function X2(){return}function S2(e,A,r,i,a,n){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;n=n|0;var f=0,l=0;l=h;h=h+32|0;f=l;do{if((n&4095|0)==0&(((n|0)<0)<<31>>31&-4096|0)==0){if(A>>>0>2147483646){t[(R2()|0)>>2]=12;e=-1;break}t[f>>2]=e;t[f+4>>2]=A;t[f+8>>2]=r;t[f+12>>2]=i;t[f+16>>2]=a;t[f+20>>2]=n>>12;e=N2(Le(192,f|0)|0)|0}else{t[(R2()|0)>>2]=22;e=-1}}while(0);h=l;return e|0}function j2(e,A){e=e|0;A=A|0;var r=0,a=0,n=0;a=A&255;e:do{if(!a)e=e+(U2(e)|0)|0;else{if(e&3){r=A&255;do{n=i[e>>0]|0;if(n<<24>>24==0?1:n<<24>>24==r<<24>>24)break e;e=e+1|0}while((e&3|0)!=0)}a=P(a,16843009)|0;r=t[e>>2]|0;A:do{if(!((r&-2139062144^-2139062144)&r+-16843009))do{n=r^a;if((n&-2139062144^-2139062144)&n+-16843009|0)break A;e=e+4|0;r=t[e>>2]|0}while(!((r&-2139062144^-2139062144)&r+-16843009|0))}while(0);r=A&255;while(1){n=i[e>>0]|0;if(n<<24>>24==0?1:n<<24>>24==r<<24>>24)break;else e=e+1|0}}}while(0);return e|0}function U2(e){e=e|0;var A=0,r=0,a=0;a=e;e:do{if(!(a&3))r=4;else{A=a;while(1){if(!(i[e>>0]|0)){e=A;break e}e=e+1|0;A=e;if(!(A&3)){r=4;break}}}}while(0);if((r|0)==4){while(1){A=t[e>>2]|0;if(!((A&-2139062144^-2139062144)&A+-16843009))e=e+4|0;else break}if((A&255)<<24>>24)do{e=e+1|0}while((i[e>>0]|0)!=0)}return e-a|0}function T2(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0,n=0,f=0,l=0;f=h;h=h+48|0;n=f+16|0;a=f;i=f+32|0;if(!(A&4194368))i=0;else{t[i>>2]=r;l=(t[i>>2]|0)+(4-1)&~(4-1);r=t[l>>2]|0;t[i>>2]=l+4;i=r}t[a>>2]=e;t[a+4>>2]=A|32768;t[a+8>>2]=i;i=Me(5,a|0)|0;if(!((A&524288|0)==0|(i|0)<0)){t[n>>2]=i;t[n+4>>2]=2;t[n+8>>2]=1;We(221,n|0)|0}l=N2(i)|0;h=f;return l|0}function O2(e,A){e=e|0;A=A|0;var r=0,a=0;a=0;while(1){if((n[144531+a>>0]|0)==(e|0)){e=2;break}r=a+1|0;if((r|0)==87){r=144619;a=87;e=5;break}else a=r}if((e|0)==2)if(!a)r=144619;else{r=144619;e=5}if((e|0)==5)while(1){do{e=r;r=r+1|0}while((i[e>>0]|0)!=0);a=a+-1|0;if(!a)break;else e=5}return _2(r,t[A+20>>2]|0)|0}function _2(e,A){e=e|0;A=A|0;return q2(e,A)|0}function q2(e,A){e=e|0;A=A|0;if(!A)A=0;else A=K2(t[A>>2]|0,t[A+4>>2]|0,e)|0;return(A|0?A:e)|0}function K2(e,A,r){e=e|0;A=A|0;r=r|0;var a=0,n=0,f=0,l=0,s=0,c=0,o=0,u=0,b=0,h=0;h=(t[e>>2]|0)+1794895138|0;f=$2(t[e+8>>2]|0,h)|0;a=$2(t[e+12>>2]|0,h)|0;n=$2(t[e+16>>2]|0,h)|0;e:do{if((f>>>0>>2>>>0?(b=A-(f<<2)|0,a>>>0>>0&n>>>0>>0):0)?((n|a)&3|0)==0:0){b=a>>>2;u=n>>>2;o=0;while(1){s=f>>>1;c=o+s|0;l=c<<1;n=l+b|0;a=$2(t[e+(n<<2)>>2]|0,h)|0;n=$2(t[e+(n+1<<2)>>2]|0,h)|0;if(!(n>>>0>>0&a>>>0<(A-n|0)>>>0)){a=0;break e}if(i[e+(n+a)>>0]|0){a=0;break e}a=e1(r,e+n|0)|0;if(!a)break;a=(a|0)<0;if((f|0)==1){a=0;break e}else{o=a?o:c;f=a?s:f-s|0}}a=l+u|0;n=$2(t[e+(a<<2)>>2]|0,h)|0;a=$2(t[e+(a+1<<2)>>2]|0,h)|0;if(a>>>0>>0&n>>>0<(A-a|0)>>>0)a=(i[e+(a+n)>>0]|0)==0?e+a|0:0;else a=0}else a=0}while(0);return a|0}function $2(e,A){e=e|0;A=A|0;var r=0;r=Z6(e|0)|0;return((A|0)==0?e:r)|0}function e1(e,A){e=e|0;A=A|0;var r=0,a=0;r=i[e>>0]|0;a=i[A>>0]|0;if(r<<24>>24==0?1:r<<24>>24!=a<<24>>24)e=a;else{do{e=e+1|0;A=A+1|0;r=i[e>>0]|0;a=i[A>>0]|0}while(!(r<<24>>24==0?1:r<<24>>24!=a<<24>>24));e=a}return(r&255)-(e&255)|0}function A1(e){e=e|0;return O2(e,t[(r1()|0)+188>>2]|0)|0}function r1(){return i1()|0}function i1(){return 62976}function a1(e,A,r){e=+e;A=+A;r=r|0;var i=0.0,a=0.0,t=0.0;t=e*e;i=t*(t*t)*(t*1.58969099521155e-10+-2.5050760253406863e-08)+(t*(t*2.7557313707070068e-06+-1.984126982985795e-04)+.00833333333332249);a=t*e;if(!r)e=a*(t*i+-.16666666666666632)+e;else e=e-(a*.16666666666666632+(t*(A*.5-a*i)-A));return+e}function t1(e){e=+e;var A=0,r=0,i=0,a=0,n=0.0,f=0.0,l=0.0,s=0.0,o=0.0;c[u>>3]=e;A=t[u>>2]|0;r=t[u+4>>2]|0;i=(r|0)<0;do{if(i|r>>>0<1048576){if((A|0)==0&(r&2147483647|0)==0){e=-1.0/(e*e);break}if(i){e=(e-e)/0.0;break}else{c[u>>3]=e*18014398509481984.0;r=t[u+4>>2]|0;i=-1077;A=t[u>>2]|0;a=9;break}}else if(r>>>0<=2146435071)if((A|0)==0&0==0&(r|0)==1072693248)e=0.0;else{i=-1023;a=9}}while(0);if((a|0)==9){a=r+614242|0;t[u>>2]=A;t[u+4>>2]=(a&1048575)+1072079006;o=+c[u>>3]+-1.0;l=o*(o*.5);f=o/(o+2.0);s=f*f;n=s*s;c[u>>3]=o-l;r=t[u+4>>2]|0;t[u>>2]=0;t[u+4>>2]=r;e=+c[u>>3];n=o-e-l+f*(l+(n*(n*(n*.15313837699209373+.22222198432149784)+.3999999999940942)+s*(n*(n*(n*.14798198605116586+.1818357216161805)+.2857142874366239)+.6666666666666735)));s=e*1.4426950407214463;l=+(i+(a>>>20)|0);f=s+l;e=f+(s+(l-f)+(n*1.4426950407214463+(n+e)*1.6751713164886512e-10))}return+e}function n1(e,A){e=+e;A=A|0;var r=0,i=0,a=0;c[u>>3]=e;r=t[u>>2]|0;i=t[u+4>>2]|0;a=y6(r|0,i|0,52)|0;switch(a&2047){case 0:{if(e!=0.0){e=+n1(e*18446744073709551616.0,A);r=(t[A>>2]|0)+-64|0}else r=0;t[A>>2]=r;break}case 2047:break;default:{t[A>>2]=(a&2047)+-1022;t[u>>2]=r;t[u+4>>2]=i&-2146435073|1071644672;e=+c[u>>3]}}return+e}function f1(e,A){e=+e;A=+A;var r=0.0,i=0.0,a=0.0,t=0.0;r=e*e;i=r*r;a=r*.5;t=1.0-a;return+(t+(1.0-t-a+(r*(r*(r*(r*2.480158728947673e-05+-.001388888888887411)+.0416666666666666)+i*i*(r*(2.087572321298175e-09-r*1.1359647557788195e-11)+-2.7557314351390663e-07))-e*A)))}function l1(e){e=+e;var A=0,r=0,i=0,a=0,n=0.0,f=0.0,l=0.0,s=0.0,o=0.0;c[u>>3]=e;A=t[u>>2]|0;r=t[u+4>>2]|0;i=(r|0)<0;do{if(i|r>>>0<1048576){if((A|0)==0&(r&2147483647|0)==0){e=-1.0/(e*e);break}if(i){e=(e-e)/0.0;break}else{c[u>>3]=e*18014398509481984.0;r=t[u+4>>2]|0;i=-1077;A=t[u>>2]|0;a=9;break}}else if(r>>>0<=2146435071)if((A|0)==0&0==0&(r|0)==1072693248)e=0.0;else{i=-1023;a=9}}while(0);if((a|0)==9){a=r+614242|0;t[u>>2]=A;t[u+4>>2]=(a&1048575)+1072079006;l=+c[u>>3]+-1.0;f=l*(l*.5);s=l/(l+2.0);o=s*s;n=o*o;c[u>>3]=l-f;r=t[u+4>>2]|0;t[u>>2]=0;t[u+4>>2]=r;e=+c[u>>3];n=l-e-f+s*(f+(n*(n*(n*.15313837699209373+.22222198432149784)+.3999999999940942)+o*(n*(n*(n*.14798198605116586+.1818357216161805)+.2857142874366239)+.6666666666666735)));o=e*.4342944818781689;f=+(i+(a>>>20)|0);s=f*.30102999566361177;l=s+o;e=l+(o+(s-l)+(n*.4342944818781689+(f*3.694239077158931e-13+(n+e)*2.5082946711645275e-11)))}return+e}function s1(e,A){e=+e;A=A|0;var r=0,i=0.0,a=0.0,n=0.0,f=0,l=0.0,s=0,o=0,b=0,w=0,k=0,d=0,v=0.0;d=h;h=h+48|0;s=d+16|0;o=d;c[u>>3]=e;r=t[u>>2]|0;f=t[u+4>>2]|0;b=y6(r|0,f|0,63)|0;k=f&2147483647;do{if(k>>>0<1074752123)if((f&1048575|0)!=598523){r=(b|0)!=0;if(k>>>0<1073928573)if(r){n=e+1.5707963267341256;l=n+6.077100506506192e-11;c[A>>3]=l;c[A+8>>3]=n-l+6.077100506506192e-11;r=-1;break}else{n=e+-1.5707963267341256;l=n+-6.077100506506192e-11;c[A>>3]=l;c[A+8>>3]=n-l+-6.077100506506192e-11;r=1;break}else if(r){n=e+3.1415926534682512;l=n+1.2154201013012384e-10;c[A>>3]=l;c[A+8>>3]=n-l+1.2154201013012384e-10;r=-2;break}else{n=e+-3.1415926534682512;l=n+-1.2154201013012384e-10;c[A>>3]=l;c[A+8>>3]=n-l+-1.2154201013012384e-10;r=2;break}}else w=21;else{if(k>>>0<1075594812)if(k>>>0<1075183037){if((k|0)==1074977148){w=21;break}if(!b){n=e+-4.712388980202377;l=n+-1.8231301519518578e-10;c[A>>3]=l;c[A+8>>3]=n-l+-1.8231301519518578e-10;r=3;break}else{n=e+4.712388980202377;l=n+1.8231301519518578e-10;c[A>>3]=l;c[A+8>>3]=n-l+1.8231301519518578e-10;r=-3;break}}else{if((k|0)==1075388923){w=21;break}if(!b){n=e+-6.2831853069365025;l=n+-2.430840202602477e-10;c[A>>3]=l;c[A+8>>3]=n-l+-2.430840202602477e-10;r=4;break}else{n=e+6.2831853069365025;l=n+2.430840202602477e-10;c[A>>3]=l;c[A+8>>3]=n-l+2.430840202602477e-10;r=-4;break}}if(k>>>0>=1094263291){if(k>>>0>2146435071){l=e-e;c[A+8>>3]=l;c[A>>3]=l;r=0;break}t[u>>2]=r;t[u+4>>2]=f&1048575|1096810496;e=+c[u>>3];r=0;do{l=+(~~e|0);c[s+(r<<3)>>3]=l;e=(e-l)*16777216.0;r=r+1|0}while((r|0)!=2);c[s+16>>3]=e;if(e==0.0){r=1;while(1)if(+c[s+(r<<3)>>3]==0.0)r=r+-1|0;else break}else r=2;r=c1(s,o,(k>>>20)+-1046|0,r+1|0,1)|0;e=+c[o>>3];if(!b){c[A>>3]=e;c[A+8>>3]=+c[o+8>>3];break}else{c[A>>3]=-e;c[A+8>>3]=-+c[o+8>>3];r=0-r|0;break}}else w=21}}while(0);if((w|0)==21){n=e*.6366197723675814+6755399441055744.0+-6755399441055744.0;r=~~n;i=e-n*1.5707963267341256;a=n*6.077100506506192e-11;e=i-a;c[A>>3]=e;c[u>>3]=e;w=y6(t[u>>2]|0,t[u+4>>2]|0,52)|0;f=k>>>20;if((f-(w&2047)|0)>16){a=n*6.077100506303966e-11;l=i-a;a=n*2.0222662487959506e-21-(i-l-a);e=l-a;c[A>>3]=e;c[u>>3]=e;k=y6(t[u>>2]|0,t[u+4>>2]|0,52)|0;v=n*2.0222662487111665e-21;i=l-v;n=n*8.4784276603689e-32-(l-i-v);if((f-(k&2047)|0)>49){e=i-n;c[A>>3]=e;a=n}else i=l}c[A+8>>3]=i-e-a}h=d;return r|0}function c1(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;var n=0.0,f=0.0,l=0,s=0,o=0,u=0,b=0,w=0,k=0,d=0,v=0,g=0,m=0,p=0,E=0,B=0,y=0,C=0,I=0,Z=0,G=0,Q=0,D=0,z=0,W=0,Y=0.0;W=h;h=h+560|0;Z=W+480|0;C=W+320|0;z=W+160|0;Q=W;G=t[63220+(a<<2)>>2]|0;w=i+-1|0;y=(r+-3|0)/24|0;y=(y|0)>0?y:0;I=P(y,-24)|0;l=r+-24+I|0;if((G+w|0)>=0){u=G+i|0;s=y-w|0;o=0;while(1){if((s|0)<0)n=0.0;else n=+(t[63236+(s<<2)>>2]|0);c[C+(o<<3)>>3]=n;o=o+1|0;if((o|0)==(u|0))break;else s=s+1|0}}b=(i|0)>0;u=0;while(1){if(b){o=u+w|0;n=0.0;s=0;do{n=n+ +c[e+(s<<3)>>3]*+c[C+(o-s<<3)>>3];s=s+1|0}while((s|0)!=(i|0))}else n=0.0;c[Q+(u<<3)>>3]=n;if((u|0)<(G|0))u=u+1|0;else break}g=(l|0)>0;m=24-l|0;p=23-l|0;E=(i|0)>0;B=(l|0)==0;s=G;e:while(1){n=+c[Q+(s<<3)>>3];b=(s|0)>0;if(b){o=s;u=0;while(1){f=+(~~(n*5.9604644775390625e-08)|0);t[Z+(u<<2)>>2]=~~(n-f*16777216.0);v=o;o=o+-1|0;n=+c[Q+(o<<3)>>3]+f;if((v|0)<=1)break;else u=u+1|0}}n=+o1(n,l);n=n-+L(+(n*.125))*8.0;o=~~n;n=n-+(o|0);do{if(!g)if(!B)if(!(n>=.5)){w=0;v=o;break}else{u=2;D=20;break}else{u=t[Z+(s+-1<<2)>>2]>>23;D=19;break}else{v=Z+(s+-1<<2)|0;u=t[v>>2]|0;D=u>>m;u=u-(D<>2]=u;u=u>>p;o=D+o|0;D=19}}while(0);if((D|0)==19){D=0;if((u|0)>0)D=20;else{w=u;v=o}}if((D|0)==20){D=0;v=o+1|0;if(b){o=0;d=0;do{w=Z+(d<<2)|0;k=t[w>>2]|0;if(!o)if(!k)o=0;else{o=1;b=16777216;D=23}else{b=16777215;D=23}if((D|0)==23){D=0;t[w>>2]=b-k}d=d+1|0}while((d|0)!=(s|0))}else o=0;A:do{if(g){switch(l|0){case 1:{b=8388607;break}case 2:{b=4194303;break}default:break A}d=Z+(s+-1<<2)|0;t[d>>2]=t[d>>2]&b}}while(0);if((u|0)==2){n=1.0-n;if(!o)w=2;else{w=2;n=n-+o1(1.0,l)}}else w=u}if(!(n==0.0)){D=42;break}if((s|0)>(G|0)){o=0;u=s;do{u=u+-1|0;o=t[Z+(u<<2)>>2]|o}while((u|0)>(G|0));if(o){D=41;break}else o=1}else o=1;while(1)if(!(t[Z+(G-o<<2)>>2]|0))o=o+1|0;else break;b=o+s|0;if((o|0)<=0){s=b;continue}while(1){u=s+1|0;o=s+i|0;c[C+(o<<3)>>3]=+(t[63236+(u+y<<2)>>2]|0);if(E){n=0.0;s=0;do{n=n+ +c[e+(s<<3)>>3]*+c[C+(o-s<<3)>>3];s=s+1|0}while((s|0)!=(i|0))}else n=0.0;c[Q+(u<<3)>>3]=n;if((u|0)<(b|0))s=u;else{s=b;continue e}}}if((D|0)==41)while(1){D=0;l=l+-24|0;s=s+-1|0;if(!(t[Z+(s<<2)>>2]|0))D=41;else{b=s;break}}else if((D|0)==42){n=+o1(n,0-l|0);if(n>=16777216.0){f=+(~~(n*5.9604644775390625e-08)|0);t[Z+(s<<2)>>2]=~~(n-f*16777216.0);l=I+r|0;s=s+1|0;n=f}t[Z+(s<<2)>>2]=~~n;b=s}u=(b|0)>-1;if(u){n=+o1(1.0,l);l=b;while(1){c[Q+(l<<3)>>3]=n*+(t[Z+(l<<2)>>2]|0);if((l|0)>0){n=n*5.9604644775390625e-08;l=l+-1|0}else break}if(u){s=b;while(1){o=b-s|0;l=0;n=0.0;while(1){n=n+ +c[10904+(l<<3)>>3]*+c[Q+(l+s<<3)>>3];if((l|0)>=(G|0)|(l|0)>=(o|0))break;else l=l+1|0}c[z+(o<<3)>>3]=n;if((s|0)>0)s=s+-1|0;else break}}}switch(a|0){case 0:{if(u){n=0.0;l=b;while(1){n=n+ +c[z+(l<<3)>>3];if((l|0)>0)l=l+-1|0;else break}}else n=0.0;f=(w|0)==0?n:-n;D=73;break}case 2:case 1:{if(u){n=0.0;l=b;while(1){n=n+ +c[z+(l<<3)>>3];if((l|0)>0)l=l+-1|0;else break}}else n=0.0;s=(w|0)==0;c[A>>3]=s?n:-n;n=+c[z>>3]-n;if((b|0)>=1){l=1;while(1){n=n+ +c[z+(l<<3)>>3];if((l|0)==(b|0))break;else l=l+1|0}}f=s?n:-n;A=A+8|0;D=73;break}case 3:{if((b|0)>0){l=b;n=+c[z+(b<<3)>>3];do{D=l;l=l+-1|0;Q=z+(l<<3)|0;f=+c[Q>>3];Y=n;n=f+n;c[z+(D<<3)>>3]=Y+(f-n);c[Q>>3]=n}while((D|0)>1);s=(b|0)>1;if(s){l=b;n=+c[z+(b<<3)>>3];do{D=l;l=l+-1|0;Q=z+(l<<3)|0;Y=+c[Q>>3];f=n;n=Y+n;c[z+(D<<3)>>3]=f+(Y-n);c[Q>>3]=n}while((D|0)>2);if(s){l=b;f=0.0;while(1){f=f+ +c[z+(l<<3)>>3];if((l|0)>2)l=l+-1|0;else break}}else f=0.0}else f=0.0}else f=0.0;n=+c[z>>3];if(!w){c[A>>3]=n;n=+c[z+8>>3]}else{c[A>>3]=-n;f=-f;n=-+c[z+8>>3]}c[A+8>>3]=n;A=A+16|0;D=73;break}default:{}}if((D|0)==73)c[A>>3]=f;h=W;return v&7|0}function o1(e,A){e=+e;A=A|0;var r=0,i=0;if((A|0)<=1023){if((A|0)<-1022){e=e*2.2250738585072014e-308;i=(A|0)<-2044;r=A+2044|0;e=i?e*2.2250738585072014e-308:e;A=i?(r|0)>-1022?r:-1022:A+1022|0}}else{e=e*8988465674311579538646525.0e283;r=(A|0)>2046;i=A+-2046|0;e=r?e*8988465674311579538646525.0e283:e;A=r?(i|0)<1023?i:1023:A+-1023|0}r=C6(A+1023|0,0,52)|0;i=G;t[u>>2]=r;t[u+4>>2]=i;return+(e*+c[u>>3])}function u1(e){e=+e;var A=0,r=0,i=0,a=0.0,n=0.0;c[u>>3]=e;r=t[u+4>>2]|0;A=r&2147483647;do{if(A>>>0>2146435071)e=e+e;else{if(A>>>0<1048576){c[u>>3]=e*18014398509481984.0;r=t[u+4>>2]|0;A=r&2147483647;if(!A)break;else i=696219795}else i=715094163;t[u>>2]=0;t[u+4>>2]=((A>>>0)/3|0)+i|r&-2147483648;a=+c[u>>3];n=a*a*(a/e);c[u>>3]=(n*(n*n)*(n*.14599619288661245+-.758397934778766)+(n*(n*1.6214297201053545+-1.8849797954337717)+1.87595182427177))*a;r=d6(t[u>>2]|0,t[u+4>>2]|0,-2147483648,0)|0;i=G;t[u>>2]=r&-1073741824;t[u+4>>2]=i;a=+c[u>>3];e=e/(a*a);e=(e-a)/(a+a+e)*a+a}}while(0);return+e}function b1(e,A){e=+e;A=+A;var r=0,i=0;c[u>>3]=e;i=t[u>>2]|0;r=t[u+4>>2]|0;c[u>>3]=A;r=t[u+4>>2]&-2147483648|r&2147483647;t[u>>2]=i;t[u+4>>2]=r;return+ +c[u>>3]}function h1(e,A){e=+e;A=+A;return+ +b1(e,A)}function w1(e,A){e=+e;A=A|0;return+ +o1(e,A)}function k1(e,A){e=+e;A=+A;return+ +d1(e,A)}function d1(e,A){e=+e;A=+A;var r=0,i=0,a=0,n=0,f=0,l=0,s=0,o=0,b=0,h=0,w=0,k=0;c[u>>3]=e;f=t[u>>2]|0;s=t[u+4>>2]|0;c[u>>3]=A;b=t[u>>2]|0;h=t[u+4>>2]|0;i=y6(f|0,s|0,52)|0;i=i&2047;o=y6(b|0,h|0,52)|0;o=o&2047;w=s&-2147483648;n=C6(b|0,h|0,1)|0;l=G;e:do{if(!((n|0)==0&(l|0)==0)?(a=v1(A)|0,r=G&2147483647,!((i|0)==2047|(r>>>0>2146435072|(r|0)==2146435072&a>>>0>0))):0){r=C6(f|0,s|0,1)|0;a=G;if(!(a>>>0>l>>>0|(a|0)==(l|0)&r>>>0>n>>>0))return+((r|0)==(n|0)&(a|0)==(l|0)?e*0.0:e);if(!i){r=C6(f|0,s|0,12)|0;a=G;if((a|0)>-1|(a|0)==-1&r>>>0>4294967295){i=0;do{i=i+-1|0;r=C6(r|0,a|0,1)|0;a=G}while((a|0)>-1|(a|0)==-1&r>>>0>4294967295)}else i=0;f=C6(f|0,s|0,1-i|0)|0;n=G}else n=s&1048575|1048576;if(!o){a=C6(b|0,h|0,12)|0;l=G;if((l|0)>-1|(l|0)==-1&a>>>0>4294967295){r=0;do{r=r+-1|0;a=C6(a|0,l|0,1)|0;l=G}while((l|0)>-1|(l|0)==-1&a>>>0>4294967295)}else r=0;b=C6(b|0,h|0,1-r|0)|0;o=r;s=G}else s=h&1048575|1048576;a=v6(f|0,n|0,b|0,s|0)|0;r=G;l=(r|0)>-1|(r|0)==-1&a>>>0>4294967295;A:do{if((i|0)>(o|0)){while(1){if(l){if((a|0)==0&(r|0)==0)break}else{a=f;r=n}f=C6(a|0,r|0,1)|0;n=G;i=i+-1|0;a=v6(f|0,n|0,b|0,s|0)|0;r=G;l=(r|0)>-1|(r|0)==-1&a>>>0>4294967295;if((i|0)<=(o|0))break A}A=e*0.0;break e}}while(0);if(l){if((a|0)==0&(r|0)==0){A=e*0.0;break}}else{r=n;a=f}if(r>>>0<1048576|(r|0)==1048576&a>>>0<0)do{a=C6(a|0,r|0,1)|0;r=G;i=i+-1|0}while(r>>>0<1048576|(r|0)==1048576&a>>>0<0);if((i|0)>0){h=d6(a|0,r|0,0,-1048576)|0;r=G;i=C6(i|0,0,52)|0;r=r|G;i=h|i}else{i=y6(a|0,r|0,1-i|0)|0;r=G}t[u>>2]=i;t[u+4>>2]=r|w;A=+c[u>>3]}else k=3}while(0);if((k|0)==3){A=e*A;A=A/A}return+A}function v1(e){e=+e;var A=0;c[u>>3]=e;A=t[u>>2]|0;G=t[u+4>>2]|0;return A|0}function g1(e,A){e=+e;A=+A;var r=0.0,i=0,a=0,n=0,f=0,l=0.0,s=0,o=0,b=0,w=0,k=0,d=0,v=0,g=0;k=h;h=h+32|0;s=k+24|0;o=k+16|0;b=k+8|0;w=k;c[u>>3]=e;g=t[u>>2]|0;n=t[u+4>>2]|0;c[u>>3]=A;i=t[u>>2]|0;n=n&2147483647;a=t[u+4>>2]&2147483647;f=n>>>0>>0|(n|0)==(a|0)&g>>>0>>0;v=f?i:g;d=f?a:n;i=f?g:i;a=f?n:a;n=y6(v|0,d|0,52)|0;f=y6(i|0,a|0,52)|0;t[u>>2]=v;t[u+4>>2]=d;e=+c[u>>3];t[u>>2]=i;t[u+4>>2]=a;l=+c[u>>3];do{if((f|0)!=2047){if(!((i|0)==0&(a|0)==0|(n|0)==2047)){if((n-f|0)>64){e=e+l;break}if((n|0)>1533){r=5260135901548373507240989.0e186;A=e*1.90109156629516e-211;e=l*1.90109156629516e-211}else{g=(f|0)<573;r=g?1.90109156629516e-211:1.0;A=g?e*5260135901548373507240989.0e186:e;e=g?l*5260135901548373507240989.0e186:l}m1(s,o,A);m1(b,w,e);e=r*+D(+(+c[w>>3]+ +c[o>>3]+ +c[b>>3]+ +c[s>>3]))}}else e=l}while(0);h=k;return+e}function m1(e,A,r){e=e|0;A=A|0;r=+r;var i=0.0,a=0.0;a=r*134217729.0;a=a+(r-a);i=r-a;r=r*r;c[e>>3]=r;c[A>>3]=i*i+(a*a-r+a*2.0*i);return}function p1(e,A,r){e=+e;A=A|0;r=r|0;var i=0.0,a=0,n=0,f=0.0,l=0,s=0;l=h;h=h+16|0;n=l;c[u>>3]=e;a=t[u+4>>2]&2147483647;do{if(a>>>0<1072243196)if(a>>>0<1044816030){c[A>>3]=e;c[r>>3]=1.0;break}else{c[A>>3]=+a1(e,0.0,0);c[r>>3]=+f1(e,0.0);break}else{if(a>>>0>2146435071){f=e-e;c[r>>3]=f;c[A>>3]=f;break}a=s1(e,n)|0;s=n+8|0;i=+a1(+c[n>>3],+c[s>>3],1);e=+f1(+c[n>>3],+c[s>>3]);switch(a&3){case 0:{c[A>>3]=i;f=e;break}case 1:{c[A>>3]=e;f=-i;break}case 2:{c[A>>3]=-i;f=-e;break}case 3:{c[A>>3]=-e;f=i;break}default:{}}c[r>>3]=f}}while(0);h=l;return}function E1(e,A){e=+e;A=A|0;return+ +n1(e,A)}function B1(e){e=e|0;if(e>>>0<131072)e=(n[146423+((n[146423+(e>>>8)>>0]|0)<<5|e>>>3&31)>>0]|0)>>>(e&7)&1;else e=0;return e|0}function y1(e,A,r){e=e|0;A=A|0;r=r|0;var a=0,t=0;if(!r)a=0;else{a=i[e>>0]|0;e:do{if(!(a<<24>>24))a=0;else while(1){r=r+-1|0;t=i[A>>0]|0;if(!(a<<24>>24==t<<24>>24&((r|0)!=0&t<<24>>24!=0)))break e;e=e+1|0;A=A+1|0;a=i[e>>0]|0;if(!(a<<24>>24)){a=0;break}}}while(0);a=(a&255)-(n[A>>0]|0)|0}return a|0}function C1(e,A){e=e|0;A=A|0;e=j2(e,A)|0;return((i[e>>0]|0)==(A&255)<<24>>24?e:0)|0}function I1(e){e=e|0;return((e|0)==32|(e+-9|0)>>>0<5)&1|0}function Z1(e,A,r){e=e|0;A=A|0;r=r|0;r=L1(e,A,r,-1,0)|0;return r|0}function G1(e,A,r){e=e|0;A=A|0;r=r|0;var a=0,n=0,f=0,l=0;f=A&255;a=(r|0)!=0;e:do{if(a&(e&3|0)!=0){n=A&255;while(1){if((i[e>>0]|0)==n<<24>>24){l=6;break e}e=e+1|0;r=r+-1|0;a=(r|0)!=0;if(!(a&(e&3|0)!=0)){l=5;break}}}else l=5}while(0);if((l|0)==5)if(a)l=6;else r=0;e:do{if((l|0)==6){n=A&255;if((i[e>>0]|0)!=n<<24>>24){a=P(f,16843009)|0;A:do{if(r>>>0>3)while(1){f=t[e>>2]^a;if((f&-2139062144^-2139062144)&f+-16843009|0)break;e=e+4|0;r=r+-4|0;if(r>>>0<=3){l=11;break A}}else l=11}while(0);if((l|0)==11)if(!r){r=0;break}while(1){if((i[e>>0]|0)==n<<24>>24)break e;e=e+1|0;r=r+-1|0;if(!r){r=0;break}}}}}while(0);return(r|0?e:0)|0}function L1(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;var n=0,f=0,l=0,s=0;s=h;h=h+128|0;f=s;t[f>>2]=0;l=f+4|0;t[l>>2]=e;t[f+44>>2]=e;n=f+8|0;t[n>>2]=(e|0)<0?-1:e+2147483647|0;t[f+76>>2]=-1;Q1(f,0);r=D1(f,r,1,i,a)|0;if(A|0)t[A>>2]=e+((t[l>>2]|0)+(t[f+108>>2]|0)-(t[n>>2]|0));h=s;return r|0}function Q1(e,A){e=e|0;A=A|0;var r=0,i=0,a=0;t[e+104>>2]=A;r=t[e+8>>2]|0;i=t[e+4>>2]|0;a=r-i|0;t[e+108>>2]=a;t[e+100>>2]=(A|0)!=0&(a|0)>(A|0)?i+A|0:r;return}function D1(e,A,r,a,f){e=e|0;A=A|0;r=r|0;a=a|0;f=f|0;var l=0,s=0,c=0,o=0,u=0,b=0,h=0,w=0,k=0,d=0;e:do{if(A>>>0>36){t[(R2()|0)>>2]=22;f=0;a=0}else{d=e+4|0;k=e+100|0;do{l=t[d>>2]|0;if(l>>>0<(t[k>>2]|0)>>>0){t[d>>2]=l+1;l=n[l>>0]|0}else l=z1(e)|0}while((I1(l)|0)!=0);A:do{switch(l|0){case 43:case 45:{l=((l|0)==45)<<31>>31;s=t[d>>2]|0;if(s>>>0<(t[k>>2]|0)>>>0){t[d>>2]=s+1;w=l;l=n[s>>0]|0;break A}else{w=l;l=z1(e)|0;break A}}default:w=0}}while(0);s=(A|0)==0;do{if((A|16|0)==16&(l|0)==48){l=t[d>>2]|0;if(l>>>0<(t[k>>2]|0)>>>0){t[d>>2]=l+1;l=n[l>>0]|0}else l=z1(e)|0;if((l|32|0)!=120)if(s){A=8;b=46;break}else{b=32;break}l=t[d>>2]|0;if(l>>>0<(t[k>>2]|0)>>>0){t[d>>2]=l+1;l=n[l>>0]|0}else l=z1(e)|0;if((n[149592+l>>0]|0)>15){a=(t[k>>2]|0)==0;if(!a)t[d>>2]=(t[d>>2]|0)+-1;if(!r){Q1(e,0);f=0;a=0;break e}if(a){f=0;a=0;break e}t[d>>2]=(t[d>>2]|0)+-1;f=0;a=0;break e}else{A=16;b=46}}else{A=s?10:A;if(A>>>0>(n[149592+l>>0]|0)>>>0)b=32;else{if(t[k>>2]|0)t[d>>2]=(t[d>>2]|0)+-1;Q1(e,0);t[(R2()|0)>>2]=22;f=0;a=0;break e}}}while(0);A:do{if((b|0)==32)if((A|0)==10){A=l+-48|0;if(A>>>0<10){l=0;s=A;do{l=(l*10|0)+s|0;A=t[d>>2]|0;if(A>>>0<(t[k>>2]|0)>>>0){t[d>>2]=A+1;A=n[A>>0]|0}else A=z1(e)|0;s=A+-48|0}while(s>>>0<10&l>>>0<429496729);r=0}else{A=l;l=0;r=0}c=A+-48|0;if(c>>>0<10){s=A;do{A=k6(l|0,r|0,10,0)|0;o=G;u=((c|0)<0)<<31>>31;h=~u;if(o>>>0>h>>>0|(o|0)==(h|0)&A>>>0>~c>>>0){A=10;b=72;break A}l=d6(A|0,o|0,c|0,u|0)|0;r=G;A=t[d>>2]|0;if(A>>>0<(t[k>>2]|0)>>>0){t[d>>2]=A+1;s=n[A>>0]|0}else s=z1(e)|0;c=s+-48|0}while(c>>>0<10&(r>>>0<429496729|(r|0)==429496729&l>>>0<2576980378));if(c>>>0>9){s=w;A=r}else{A=10;b=72}}else{s=w;A=r}}else b=46}while(0);A:do{if((b|0)==46){if(!(A+-1&A)){b=i[149848+((A*23|0)>>>5&7)>>0]|0;r=i[149592+l>>0]|0;s=r&255;if(A>>>0>s>>>0){l=0;c=s;do{l=c|l<>2]|0;if(s>>>0<(t[k>>2]|0)>>>0){t[d>>2]=s+1;s=n[s>>0]|0}else s=z1(e)|0;r=i[149592+s>>0]|0;c=r&255}while(l>>>0<134217728&A>>>0>c>>>0);c=0}else{s=l;c=0;l=0}o=y6(-1,-1,b|0)|0;u=G;if(A>>>0<=(r&255)>>>0|(u>>>0>>0|(u|0)==(c|0)&o>>>0>>0)){r=c;b=72;break}else s=c;while(1){l=C6(l|0,s|0,b|0)|0;c=G;l=l|r&255;s=t[d>>2]|0;if(s>>>0<(t[k>>2]|0)>>>0){t[d>>2]=s+1;s=n[s>>0]|0}else s=z1(e)|0;r=i[149592+s>>0]|0;if(A>>>0<=(r&255)>>>0|(c>>>0>u>>>0|(c|0)==(u|0)&l>>>0>o>>>0)){r=c;b=72;break A}else s=c}}r=i[149592+l>>0]|0;s=r&255;if(A>>>0>s>>>0){l=0;c=s;do{l=c+(P(l,A)|0)|0;s=t[d>>2]|0;if(s>>>0<(t[k>>2]|0)>>>0){t[d>>2]=s+1;s=n[s>>0]|0}else s=z1(e)|0;r=i[149592+s>>0]|0;c=r&255}while(l>>>0<119304647&A>>>0>c>>>0);c=0}else{s=l;l=0;c=0}if(A>>>0>(r&255)>>>0){b=p6(-1,-1,A|0,0)|0;h=G;u=c;while(1){if(u>>>0>h>>>0|(u|0)==(h|0)&l>>>0>b>>>0){r=u;b=72;break A}c=k6(l|0,u|0,A|0,0)|0;o=G;r=r&255;if(o>>>0>4294967295|(o|0)==-1&c>>>0>~r>>>0){r=u;b=72;break A}l=d6(c|0,o|0,r|0,0)|0;c=G;s=t[d>>2]|0;if(s>>>0<(t[k>>2]|0)>>>0){t[d>>2]=s+1;s=n[s>>0]|0}else s=z1(e)|0;r=i[149592+s>>0]|0;if(A>>>0<=(r&255)>>>0){r=c;b=72;break}else u=c}}else{r=c;b=72}}}while(0);if((b|0)==72)if(A>>>0>(n[149592+s>>0]|0)>>>0){do{l=t[d>>2]|0;if(l>>>0<(t[k>>2]|0)>>>0){t[d>>2]=l+1;l=n[l>>0]|0}else l=z1(e)|0}while(A>>>0>(n[149592+l>>0]|0)>>>0);t[(R2()|0)>>2]=34;s=(a&1|0)==0&0==0?w:0;A=f;l=a}else{s=w;A=r}if(t[k>>2]|0)t[d>>2]=(t[d>>2]|0)+-1;if(!(A>>>0>>0|(A|0)==(f|0)&l>>>0>>0)){if(!((a&1|0)!=0|0!=0|(s|0)!=0)){t[(R2()|0)>>2]=34;a=d6(a|0,f|0,-1,-1)|0;f=G;break}if(A>>>0>f>>>0|(A|0)==(f|0)&l>>>0>a>>>0){t[(R2()|0)>>2]=34;break}}a=((s|0)<0)<<31>>31;a=v6(l^s|0,A^a|0,s|0,a|0)|0;f=G}}while(0);G=f;return a|0}function z1(e){e=e|0;var A=0,r=0,a=0,f=0,l=0,s=0;r=e+104|0;f=t[r>>2]|0;if((f|0)!=0?(t[e+108>>2]|0)>=(f|0):0)l=4;else{A=W1(e)|0;if((A|0)>=0){a=t[r>>2]|0;r=e+8|0;if(a){s=t[r>>2]|0;f=t[e+4>>2]|0;r=a-(t[e+108>>2]|0)|0;a=s;if((s-f|0)<(r|0))r=a;else r=f+(r+-1)|0}else{a=t[r>>2]|0;r=a}t[e+100>>2]=r;r=e+4|0;if(!a)r=t[r>>2]|0;else{r=t[r>>2]|0;s=e+108|0;t[s>>2]=a+1-r+(t[s>>2]|0)}r=r+-1|0;if((A|0)!=(n[r>>0]|0|0))i[r>>0]=A}else l=4}if((l|0)==4){t[e+100>>2]=0;A=-1}return A|0}function W1(e){e=e|0;var A=0,r=0;r=h;h=h+16|0;A=r;if((Y1(e)|0)==0?(L5[t[e+32>>2]&63](e,A,1)|0)==1:0)e=n[A>>0]|0;else e=-1;h=r;return e|0}function Y1(e){e=e|0;var A=0,r=0;A=e+74|0;r=i[A>>0]|0;i[A>>0]=r+255|r;A=e+20|0;r=e+28|0;if((t[A>>2]|0)>>>0>(t[r>>2]|0)>>>0)L5[t[e+36>>2]&63](e,0,0)|0;t[e+16>>2]=0;t[r>>2]=0;t[A>>2]=0;A=t[e>>2]|0;if(!(A&4)){r=(t[e+44>>2]|0)+(t[e+48>>2]|0)|0;t[e+8>>2]=r;t[e+4>>2]=r;A=A<<27>>31}else{t[e>>2]=A|32;A=-1}return A|0}function F1(e){e=e|0;return(e+-48|0)>>>0<10|0}function M1(e){e=e|0;return((e+-48|0)>>>0<10|(V1(e)|0)!=0)&1|0}function V1(e){e=e|0;return((e|32)+-97|0)>>>0<26|0}function N1(e,A){e=e|0;A=A|0;var r=0,a=0,t=0;r=i[e>>0]|0;e:do{if(!(r<<24>>24))r=0;else{t=r&255;while(1){a=i[A>>0]|0;if(!(a<<24>>24))break e;if(r<<24>>24!=a<<24>>24?(t=R1(t)|0,(t|0)!=(R1(a&255)|0)):0)break e;e=e+1|0;A=A+1|0;r=i[e>>0]|0;if(!(r<<24>>24)){r=0;break}else t=r&255}}}while(0);t=R1(r&255)|0;return t-(R1(n[A>>0]|0)|0)|0}function R1(e){e=e|0;var A=0;A=(x1(e)|0)==0;return(A?e:e|32)|0}function x1(e){e=e|0;return(e+-65|0)>>>0<26|0}function J1(e){e=e|0;return H1(e,0)|0}function H1(e,A){e=e|0;A=A|0;var r=0,t=0,l=0,s=0,c=0,o=0,u=0;c=(A<<1)+-1|0;o=A+-1|0;e:do{if(!((e+-43008|0)>>>0<22272|((e+-11776|0)>>>0<30784|((e+-1536|0)>>>0<2560|(P1(e)|0)==0)))){r=(A|0)!=0;if(r&(e+-4256|0)>>>0<46){if((e|0)>4293)switch(e|0){case 4295:case 4301:break;default:break e}e=e+7264|0;break}if((e+-11520|0)>>>0<38&(r^1)){e=e+-7264|0;break}else r=0;do{l=i[66346+(r<<2)+2>>0]|0;s=l<<24>>24;t=e-(f[66346+(r<<2)>>1]|0)|0;if((t-(o&s)|0)>>>0<(n[66346+(r<<2)+3>>0]|0)>>>0){u=11;break}r=r+1|0}while((r|0)!=61);if((u|0)==11)if(l<<24>>24==1){e=A+e-(t&1)|0;break}else{e=(P(c,s)|0)+e|0;break}l=1-A|0;r=a[65858+(l<<1)>>1]|0;A:do{if(r<<16>>16){t=0;while(1){if((r&65535|0)==(e|0))break;t=t+1|0;r=a[65858+(t<<2)+(l<<1)>>1]|0;if(!(r<<16>>16))break A}e=f[65858+(t<<2)+(A<<1)>>1]|0;break e}}while(0);return((e+-66600+(A*40|0)|0)>>>0<40?e+-40+(A*80|0)|0:e)|0}}while(0);return e|0}function P1(e){e=e|0;if(e>>>0<131072)e=(n[149857+((n[149857+(e>>>8)>>0]|0)<<5|e>>>3&31)>>0]|0)>>>(e&7)&1;else e=e>>>0<196606&1;return e|0}function X1(e){e=e|0;var A=0;A=e;while(1)if(!(t[A>>2]|0))break;else A=A+4|0;return A-e>>2|0}function S1(e,A,r){e=e|0;A=A|0;r=r|0;var a=0,t=0,f=0;if(!r)e=0;else{a=i[e>>0]|0;e:do{if(!(a<<24>>24))e=0;else{f=e;e=a;a=a&255;while(1){r=r+-1|0;t=i[A>>0]|0;if(!((r|0)!=0&t<<24>>24!=0))break e;if(e<<24>>24!=t<<24>>24?(a=R1(a)|0,(a|0)!=(R1(t&255)|0)):0)break e;f=f+1|0;A=A+1|0;a=i[f>>0]|0;if(!(a<<24>>24)){e=0;break}else{e=a;a=a&255}}}}while(0);e=R1(e&255)|0;e=e-(R1(n[A>>0]|0)|0)|0}return e|0}function j1(e){e=e|0;if(e>>>0>=255)if((e+-57344|0)>>>0<8185|(e>>>0<8232|(e+-8234|0)>>>0<47062))e=1;else return(e&65534|0)!=65534&(e+-65532|0)>>>0<1048580&1|0;else e=(e+1&127)>>>0>32&1;return e|0}function U1(e,A,r,a){e=e|0;A=A|0;r=r|0;a=a|0;var n=0,f=0,l=0,s=0,c=0,o=0;c=h;h=h+16|0;n=c;l=(a|0)==0?190640:a;a=t[l>>2]|0;e:do{if(!A)if(!a)a=0;else s=17;else{f=(e|0)==0?n:e;if(!r)a=-2;else{if(!a){a=i[A>>0]|0;if(a<<24>>24>-1){t[f>>2]=a&255;a=a<<24>>24!=0&1;break}n=(t[t[(q1()|0)+188>>2]>>2]|0)==0;a=i[A>>0]|0;if(n){t[f>>2]=a<<24>>24&57343;a=1;break}a=(a&255)+-194|0;if(a>>>0>50){s=17;break}a=t[62384+(a<<2)>>2]|0;n=r+-1|0;if(n){A=A+1|0;s=11}}else{n=r;s=11}A:do{if((s|0)==11){e=i[A>>0]|0;o=(e&255)>>>3;if((o+-16|o+(a>>26))>>>0>7){s=17;break e}while(1){A=A+1|0;a=(e&255)+-128|a<<6;n=n+-1|0;if((a|0)>=0)break;if(!n)break A;e=i[A>>0]|0;if((e&-64)<<24>>24!=-128){s=17;break e}}t[l>>2]=0;t[f>>2]=a;a=r-n|0;break e}}while(0);t[l>>2]=a;a=-2}}}while(0);if((s|0)==17){t[l>>2]=0;t[(R2()|0)>>2]=84;a=-1}h=c;return a|0}function T1(e,A){e=e|0;A=A|0;if(!e)e=0;else e=O1(e,A,0)|0;return e|0}function O1(e,A,r){e=e|0;A=A|0;r=r|0;do{if(e){if(A>>>0<128){i[e>>0]=A;e=1;break}if(!(t[t[(_1()|0)+188>>2]>>2]|0))if((A&-128|0)==57216){i[e>>0]=A;e=1;break}else{t[(R2()|0)>>2]=84;e=-1;break}if(A>>>0<2048){i[e>>0]=A>>>6|192;i[e+1>>0]=A&63|128;e=2;break}if(A>>>0<55296|(A&-8192|0)==57344){i[e>>0]=A>>>12|224;i[e+1>>0]=A>>>6&63|128;i[e+2>>0]=A&63|128;e=3;break}if((A+-65536|0)>>>0<1048576){i[e>>0]=A>>>18|240;i[e+1>>0]=A>>>12&63|128;i[e+2>>0]=A>>>6&63|128;i[e+3>>0]=A&63|128;e=4;break}else{t[(R2()|0)>>2]=84;e=-1;break}}else e=1}while(0);return e|0}function _1(){return i1()|0}function q1(){return i1()|0}function K1(e,A){e=e|0;A=A|0;var r=0,a=0,n=0,f=0,l=0,s=0,c=0,o=0,u=0,b=0,w=0;w=h;h=h+272|0;u=w+8|0;b=w;do{if(!(i[A>>0]|0)){A=Te(152833)|0;if(A|0?i[A>>0]|0:0)break;A=Te(152840+(e*12|0)|0)|0;if(A|0?i[A>>0]|0:0)break;A=Te(152912)|0;if(A|0?i[A>>0]|0:0)break;A=152917}}while(0);r=0;e:do{switch(i[A+r>>0]|0){case 47:case 0:break e;default:{}}r=r+1|0}while(r>>>0<15);a=i[A>>0]|0;if(a<<24>>24!=46?(i[A+r>>0]|0)==0:0)if(a<<24>>24==67)o=15;else{c=A;o=16}else{A=152917;o=15}if((o|0)==15)if(!(i[A+1>>0]|0))o=18;else{c=A;o=16}e:do{if((o|0)==16)if((e1(c,152917)|0)!=0?(e1(c,152925)|0)!=0:0){A=t[47661]|0;if(A|0)do{if(!(e1(c,A+8|0)|0))break e;A=t[A+24>>2]|0}while((A|0)!=0);Ee(190648);A=t[47661]|0;A:do{if(A|0){while(1){if(!(e1(c,A+8|0)|0))break;A=t[A+24>>2]|0;if(!A)break A}xe(190648);break e}}while(0);A:do{if(((t[47646]|0)==0?(n=Te(152931)|0,(n|0)!=0):0)?(i[n>>0]|0)!=0:0){l=254-r|0;s=r+1|0;a=n;while(1){f=j2(a,58)|0;A=i[f>>0]|0;n=f-a+((A<<24>>24!=0)<<31>>31)|0;if(n>>>0>>0){Q6(u|0,a|0,n|0)|0;a=u+n|0;i[a>>0]=47;Q6(a+1|0,c|0,r|0)|0;i[u+(s+n)>>0]=0;a=Be(u|0,b|0)|0;if(a|0)break;A=i[f>>0]|0}a=f+(A<<24>>24!=0&1)|0;if(!(i[a>>0]|0)){o=41;break A}}A=Z2(28)|0;if(!A){P2(a,t[b>>2]|0)|0;o=41;break}else{t[A>>2]=a;t[A+4>>2]=t[b>>2];b=A+8|0;Q6(b|0,c|0,r|0)|0;i[b+r>>0]=0;t[A+24>>2]=t[47661];t[47661]=A;break}}else o=41}while(0);if((o|0)==41){A=Z2(28)|0;if(A){t[A>>2]=t[15584];t[A+4>>2]=t[15585];b=A+8|0;Q6(b|0,c|0,r|0)|0;i[b+r>>0]=0;t[A+24>>2]=t[47661];t[47661]=A}}xe(190648);A=(e|0)==0&(A|0)==0?62336:A}else{A=c;o=18}}while(0);do{if((o|0)==18){if((e|0)==0?(i[A+1>>0]|0)==46:0){A=62336;break}A=0}}while(0);h=w;return A|0}function $1(e,A){e=e|0;A=A|0;e4(e,A)|0;return e|0}function e4(e,A){e=e|0;A=A|0;var r=0,a=0;r=A;e:do{if(!((r^e)&3)){if(r&3)do{r=i[A>>0]|0;i[e>>0]=r;if(!(r<<24>>24))break e;A=A+1|0;e=e+1|0}while((A&3|0)!=0);r=t[A>>2]|0;if(!((r&-2139062144^-2139062144)&r+-16843009)){a=e;while(1){A=A+4|0;e=a+4|0;t[a>>2]=r;r=t[A>>2]|0;if((r&-2139062144^-2139062144)&r+-16843009|0)break;else a=e}}a=8}else a=8}while(0);if((a|0)==8){a=i[A>>0]|0;i[e>>0]=a;if(a<<24>>24)do{A=A+1|0;e=e+1|0;a=i[A>>0]|0;i[e>>0]=a}while(a<<24>>24!=0)}return e|0}function A4(e){e=e|0;return((e|0)==32|(e|0)==9)&1|0}function r4(e){e=e|0;if(!e)e=0;else e=(i4(63500,e)|0)!=0&1;return e|0}function i4(e,A){e=e|0;A=A|0;var r=0;if(!A)e=e+((X1(e)|0)<<2)|0;else{while(1){r=t[e>>2]|0;if((r|0)==0|(r|0)==(A|0))break;else e=e+4|0}e=r|0?e:0}return e|0}function a4(e,A){e=e|0;A=A|0;do{switch(A|0){case 1:{e=t4(e)|0;break}case 2:{e=P1(e)|0;break}case 3:{e=n4(e)|0;break}case 4:{e=f4(e)|0;break}case 5:{e=F1(e)|0;break}case 6:{e=l4(e)|0;break}case 7:{e=s4(e)|0;break}case 8:{e=j1(e)|0;break}case 9:{e=B1(e)|0;break}case 10:{e=r4(e)|0;break}case 11:{e=c4(e)|0;break}case 12:{e=o4(e)|0;break}default:e=0}}while(0);return e|0}function t4(e){e=e|0;if(!(F1(e)|0))e=(P1(e)|0)!=0&1;else e=1;return e|0}function n4(e){e=e|0;return A4(e)|0}function f4(e){e=e|0;return((e+-65529|0)>>>0<3|((e&-2|0)==8232|(e>>>0<32|(e+-127|0)>>>0<33)))&1|0}function l4(e){e=e|0;if(!(r4(e)|0))e=(j1(e)|0)!=0&1;else e=0;return e|0}function s4(e){e=e|0;return(J1(e)|0)!=(e|0)|0}function c4(e){e=e|0;return(u4(e)|0)!=(e|0)|0}function o4(e){e=e|0;return((e+-48|0)>>>0<10|((e|32)+-97|0)>>>0<6)&1|0}function u4(e){e=e|0;return H1(e,1)|0}function b4(e){e=e|0;return(e+-97|0)>>>0<26|0}function h4(e,A,r,a){e=e|0;A=A|0;r=r|0;a=a|0;var n=0,f=0,l=0,s=0,c=0,o=0,u=0;u=h;h=h+128|0;n=u+124|0;o=u;f=o;l=63588;s=f+124|0;do{t[f>>2]=t[l>>2];f=f+4|0;l=l+4|0}while((f|0)<(s|0));if((A+-1|0)>>>0>2147483646)if(!A){e=n;A=1;c=4}else{t[(R2()|0)>>2]=75;A=-1}else c=4;if((c|0)==4){c=-2-e|0;c=A>>>0>c>>>0?c:A;t[o+48>>2]=c;n=o+20|0;t[n>>2]=e;t[o+44>>2]=e;A=e+c|0;e=o+16|0;t[e>>2]=A;t[o+28>>2]=A;A=w4(o,r,a)|0;if(c){o=t[n>>2]|0;i[o+(((o|0)==(t[e>>2]|0))<<31>>31)>>0]=0}}h=u;return A|0}function w4(e,A,r){e=e|0;A=A|0;r=r|0;var a=0,n=0,f=0,l=0,s=0,c=0,o=0,u=0,b=0,w=0,k=0,d=0,v=0;v=h;h=h+224|0;u=v+120|0;w=v+80|0;k=v;d=v+136|0;a=w;n=a+40|0;do{t[a>>2]=0;a=a+4|0}while((a|0)<(n|0));t[u>>2]=t[r>>2];if((k4(0,A,u,k,w)|0)<0)r=-1;else{if((t[e+76>>2]|0)>-1)b=d4(e)|0;else b=0;r=t[e>>2]|0;o=r&32;if((i[e+74>>0]|0)<1)t[e>>2]=r&-33;a=e+48|0;if(!(t[a>>2]|0)){n=e+44|0;f=t[n>>2]|0;t[n>>2]=d;l=e+28|0;t[l>>2]=d;s=e+20|0;t[s>>2]=d;t[a>>2]=80;c=e+16|0;t[c>>2]=d+80;r=k4(e,A,u,k,w)|0;if(f){L5[t[e+36>>2]&63](e,0,0)|0;r=(t[s>>2]|0)==0?-1:r;t[n>>2]=f;t[a>>2]=0;t[c>>2]=0;t[l>>2]=0;t[s>>2]=0}}else r=k4(e,A,u,k,w)|0;a=t[e>>2]|0;t[e>>2]=a|o;if(b|0)v4(e);r=(a&32|0)==0?r:-1}h=v;return r|0}function k4(e,A,r,n,f){e=e|0;A=A|0;r=r|0;n=n|0;f=f|0;var l=0,s=0,o=0,u=0,b=0,w=0,k=0,d=0,v=0,g=0,m=0,p=0,E=0,B=0,y=0,C=0,I=0,Z=0,L=0,Q=0,D=0,z=0,W=0;W=h;h=h+64|0;L=W+16|0;Q=W;I=W+24|0;D=W+8|0;z=W+20|0;t[L>>2]=A;B=(e|0)!=0;y=I+40|0;C=y;I=I+39|0;Z=D+4|0;s=0;l=0;w=0;e:while(1){do{if((l|0)>-1)if((s|0)>(2147483647-l|0)){t[(R2()|0)>>2]=75;l=-1;break}else{l=s+l|0;break}}while(0);s=i[A>>0]|0;if(!(s<<24>>24)){E=86;break}else o=A;A:while(1){switch(s<<24>>24){case 37:{s=o;E=9;break A}case 0:{s=o;break A}default:{}}p=o+1|0;t[L>>2]=p;s=i[p>>0]|0;o=p}A:do{if((E|0)==9)while(1){E=0;if((i[o+1>>0]|0)!=37)break A;s=s+1|0;o=o+2|0;t[L>>2]=o;if((i[o>>0]|0)==37)E=9;else break}}while(0);s=s-A|0;if(B)g4(e,A,s);if(s|0){A=o;continue}u=o+1|0;s=(i[u>>0]|0)+-48|0;if(s>>>0<10){p=(i[o+2>>0]|0)==36;g=p?s:-1;w=p?1:w;u=p?o+3|0:u}else g=-1;t[L>>2]=u;s=i[u>>0]|0;p=(s<<24>>24)+-32|0;if(p>>>0>31|(1<>24)+-32|o;u=u+1|0;t[L>>2]=u;s=i[u>>0]|0;p=(s<<24>>24)+-32|0}while(!(p>>>0>31|(1<>24==42){b=u+1|0;s=(i[b>>0]|0)+-48|0;if(s>>>0<10?(i[u+2>>0]|0)==36:0){t[f+(s<<2)>>2]=10;s=t[n+((i[b>>0]|0)+-48<<3)>>2]|0;w=1;u=u+3|0}else{if(w|0){l=-1;break}if(B){w=(t[r>>2]|0)+(4-1)&~(4-1);s=t[w>>2]|0;t[r>>2]=w+4;w=0;u=b}else{s=0;w=0;u=b}}t[L>>2]=u;m=(s|0)<0;s=m?0-s|0:s;m=m?o|8192:o}else{s=m4(L)|0;if((s|0)<0){l=-1;break}m=o;u=t[L>>2]|0}do{if((i[u>>0]|0)==46){if((i[u+1>>0]|0)!=42){t[L>>2]=u+1;o=m4(L)|0;u=t[L>>2]|0;break}b=u+2|0;o=(i[b>>0]|0)+-48|0;if(o>>>0<10?(i[u+3>>0]|0)==36:0){t[f+(o<<2)>>2]=10;o=t[n+((i[b>>0]|0)+-48<<3)>>2]|0;u=u+4|0;t[L>>2]=u;break}if(w|0){l=-1;break e}if(B){p=(t[r>>2]|0)+(4-1)&~(4-1);o=t[p>>2]|0;t[r>>2]=p+4}else o=0;t[L>>2]=b;u=b}else o=-1}while(0);v=0;while(1){if(((i[u>>0]|0)+-65|0)>>>0>57){l=-1;break e}p=u+1|0;t[L>>2]=p;b=i[(i[u>>0]|0)+-65+(152944+(v*58|0))>>0]|0;k=b&255;if((k+-1|0)>>>0<8){v=k;u=p}else break}if(!(b<<24>>24)){l=-1;break}d=(g|0)>-1;do{if(b<<24>>24==19)if(d){l=-1;break e}else E=48;else{if(d){t[f+(g<<2)>>2]=k;d=n+(g<<3)|0;g=t[d+4>>2]|0;E=Q;t[E>>2]=t[d>>2];t[E+4>>2]=g;E=48;break}if(!B){l=0;break e}p4(Q,k,r)}}while(0);if((E|0)==48?(E=0,!B):0){s=0;A=p;continue}u=i[u>>0]|0;u=(v|0)!=0&(u&15|0)==3?u&-33:u;g=m&-65537;m=(m&8192|0)==0?m:g;A:do{switch(u|0){case 110:switch((v&255)<<24>>24){case 0:{t[t[Q>>2]>>2]=l;s=0;A=p;continue e}case 1:{t[t[Q>>2]>>2]=l;s=0;A=p;continue e}case 2:{s=t[Q>>2]|0;t[s>>2]=l;t[s+4>>2]=((l|0)<0)<<31>>31;s=0;A=p;continue e}case 3:{a[t[Q>>2]>>1]=l;s=0;A=p;continue e}case 4:{i[t[Q>>2]>>0]=l;s=0;A=p;continue e}case 6:{t[t[Q>>2]>>2]=l;s=0;A=p;continue e}case 7:{s=t[Q>>2]|0;t[s>>2]=l;t[s+4>>2]=((l|0)<0)<<31>>31;s=0;A=p;continue e}default:{s=0;A=p;continue e}}case 112:{u=120;o=o>>>0>8?o:8;A=m|8;E=60;break}case 88:case 120:{A=m;E=60;break}case 111:{u=Q;A=t[u>>2]|0;u=t[u+4>>2]|0;d=B4(A,u,y)|0;v=C-d|0;b=0;k=153408;o=(m&8|0)==0|(o|0)>(v|0)?o:v+1|0;v=m;E=66;break}case 105:case 100:{u=Q;A=t[u>>2]|0;u=t[u+4>>2]|0;if((u|0)<0){A=v6(0,0,A|0,u|0)|0;u=G;b=Q;t[b>>2]=A;t[b+4>>2]=u;b=1;k=153408;E=65;break A}else{b=(m&2049|0)!=0&1;k=(m&2048|0)==0?(m&1|0)==0?153408:153410:153409;E=65;break A}}case 117:{u=Q;b=0;k=153408;A=t[u>>2]|0;u=t[u+4>>2]|0;E=65;break}case 99:{i[I>>0]=t[Q>>2];A=I;b=0;k=153408;d=y;u=1;o=g;break}case 109:{u=A1(t[(R2()|0)>>2]|0)|0;E=70;break}case 115:{u=t[Q>>2]|0;u=u|0?u:153418;E=70;break}case 67:{t[D>>2]=t[Q>>2];t[Z>>2]=0;t[Q>>2]=D;d=-1;u=D;E=74;break}case 83:{A=t[Q>>2]|0;if(!o){C4(e,32,s,0,m);A=0;E=83}else{d=o;u=A;E=74}break}case 65:case 71:case 70:case 69:case 97:case 103:case 102:case 101:{s=I4(e,+c[Q>>3],s,o,m,u)|0;A=p;continue e}default:{b=0;k=153408;d=y;u=o;o=m}}}while(0);A:do{if((E|0)==60){m=Q;g=t[m>>2]|0;m=t[m+4>>2]|0;d=E4(g,m,y,u&32)|0;k=(A&8|0)==0|(g|0)==0&(m|0)==0;b=k?0:2;k=k?153408:153408+(u>>4)|0;v=A;A=g;u=m;E=66}else if((E|0)==65){d=y4(A,u,y)|0;v=m;E=66}else if((E|0)==70){E=0;m=G1(u,0,o)|0;v=(m|0)==0;A=u;b=0;k=153408;d=v?u+o|0:m;u=v?o:m-u|0;o=g}else if((E|0)==74){E=0;k=u;A=0;o=0;while(1){b=t[k>>2]|0;if(!b)break;o=T1(z,b)|0;if((o|0)<0|o>>>0>(d-A|0)>>>0)break;A=o+A|0;if(d>>>0>A>>>0)k=k+4|0;else break}if((o|0)<0){l=-1;break e}C4(e,32,s,A,m);if(!A){A=0;E=83}else{b=0;while(1){o=t[u>>2]|0;if(!o){E=83;break A}o=T1(z,o)|0;b=o+b|0;if((b|0)>(A|0)){E=83;break A}g4(e,z,o);if(b>>>0>=A>>>0){E=83;break}else u=u+4|0}}}}while(0);if((E|0)==66){E=0;u=(A|0)!=0|(u|0)!=0;m=(o|0)!=0|u;u=C-d+((u^1)&1)|0;A=m?d:y;d=y;u=m?(o|0)>(u|0)?o:u:o;o=(o|0)>-1?v&-65537:v}else if((E|0)==83){E=0;C4(e,32,s,A,m^8192);s=(s|0)>(A|0)?s:A;A=p;continue}g=d-A|0;v=(u|0)<(g|0)?g:u;m=v+b|0;s=(s|0)<(m|0)?m:s;C4(e,32,s,m,o);g4(e,k,b);C4(e,48,s,m,o^65536);C4(e,48,v,g,0);g4(e,A,g);C4(e,32,s,m,o^8192);A=p}e:do{if((E|0)==86)if(!e)if(w){l=1;while(1){A=t[f+(l<<2)>>2]|0;if(!A)break;p4(n+(l<<3)|0,A,r);A=l+1|0;if((l|0)<9)l=A;else{l=A;break}}if((l|0)<10)while(1){if(t[f+(l<<2)>>2]|0){l=-1;break e}if((l|0)<9)l=l+1|0;else{l=1;break}}else l=1}else l=0}while(0);h=W;return l|0}function d4(e){e=e|0;return 0}function v4(e){e=e|0;return}function g4(e,A,r){e=e|0;A=A|0;r=r|0;if(!(t[e>>2]&32))G4(A,r,e)|0;return}function m4(e){e=e|0;var A=0,r=0,a=0;r=t[e>>2]|0;a=(i[r>>0]|0)+-48|0;if(a>>>0<10){A=0;do{A=a+(A*10|0)|0;r=r+1|0;t[e>>2]=r;a=(i[r>>0]|0)+-48|0}while(a>>>0<10)}else A=0;return A|0}function p4(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0,n=0.0;e:do{if(A>>>0<=20)do{switch(A|0){case 9:{i=(t[r>>2]|0)+(4-1)&~(4-1);A=t[i>>2]|0;t[r>>2]=i+4;t[e>>2]=A;break e}case 10:{i=(t[r>>2]|0)+(4-1)&~(4-1);A=t[i>>2]|0;t[r>>2]=i+4;i=e;t[i>>2]=A;t[i+4>>2]=((A|0)<0)<<31>>31;break e}case 11:{i=(t[r>>2]|0)+(4-1)&~(4-1);A=t[i>>2]|0;t[r>>2]=i+4;i=e;t[i>>2]=A;t[i+4>>2]=0;break e}case 12:{i=(t[r>>2]|0)+(8-1)&~(8-1);A=i;a=t[A>>2]|0;A=t[A+4>>2]|0;t[r>>2]=i+8;i=e;t[i>>2]=a;t[i+4>>2]=A;break e}case 13:{a=(t[r>>2]|0)+(4-1)&~(4-1);i=t[a>>2]|0;t[r>>2]=a+4;i=(i&65535)<<16>>16;a=e;t[a>>2]=i;t[a+4>>2]=((i|0)<0)<<31>>31;break e}case 14:{a=(t[r>>2]|0)+(4-1)&~(4-1);i=t[a>>2]|0;t[r>>2]=a+4;a=e;t[a>>2]=i&65535;t[a+4>>2]=0;break e}case 15:{a=(t[r>>2]|0)+(4-1)&~(4-1);i=t[a>>2]|0;t[r>>2]=a+4;i=(i&255)<<24>>24;a=e;t[a>>2]=i;t[a+4>>2]=((i|0)<0)<<31>>31;break e}case 16:{a=(t[r>>2]|0)+(4-1)&~(4-1);i=t[a>>2]|0;t[r>>2]=a+4;a=e;t[a>>2]=i&255;t[a+4>>2]=0;break e}case 17:{a=(t[r>>2]|0)+(8-1)&~(8-1);n=+c[a>>3];t[r>>2]=a+8;c[e>>3]=n;break e}case 18:{a=(t[r>>2]|0)+(8-1)&~(8-1);n=+c[a>>3];t[r>>2]=a+8;c[e>>3]=n;break e}default:break e}}while(0)}while(0);return}function E4(e,A,r,a){e=e|0;A=A|0;r=r|0;a=a|0;if(!((e|0)==0&(A|0)==0))do{r=r+-1|0;i[r>>0]=n[153456+(e&15)>>0]|0|a;e=y6(e|0,A|0,4)|0;A=G}while(!((e|0)==0&(A|0)==0));return r|0}function B4(e,A,r){e=e|0;A=A|0;r=r|0;if(!((e|0)==0&(A|0)==0))do{r=r+-1|0;i[r>>0]=e&7|48;e=y6(e|0,A|0,3)|0;A=G}while(!((e|0)==0&(A|0)==0));return r|0}function y4(e,A,r){e=e|0;A=A|0;r=r|0;var a=0;if(A>>>0>0|(A|0)==0&e>>>0>4294967295){while(1){a=E6(e|0,A|0,10,0)|0;r=r+-1|0;i[r>>0]=a&255|48;a=e;e=p6(e|0,A|0,10,0)|0;if(!(A>>>0>9|(A|0)==9&a>>>0>4294967295))break;else A=G}A=e}else A=e;if(A)while(1){r=r+-1|0;i[r>>0]=(A>>>0)%10|0|48;if(A>>>0<10)break;else A=(A>>>0)/10|0}return r|0}function C4(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;var t=0,n=0;n=h;h=h+256|0;t=n;if((r|0)>(i|0)&(a&73728|0)==0){a=r-i|0;z6(t|0,A|0,(a>>>0<256?a:256)|0)|0;if(a>>>0>255){A=r-i|0;do{g4(e,t,256);a=a+-256|0}while(a>>>0>255);a=A&255}g4(e,t,a)}h=n;return}function I4(e,A,r,a,f,l){e=e|0;A=+A;r=r|0;a=a|0;f=f|0;l=l|0;var s=0,c=0,o=0,u=0,b=0,w=0,k=0,d=0.0,v=0,g=0,m=0,p=0,E=0,B=0,y=0,C=0,I=0,Z=0,L=0,Q=0,D=0,z=0,W=0;W=h;h=h+560|0;o=W+8|0;m=W;z=W+524|0;D=z;u=W+512|0;t[m>>2]=0;Q=u+12|0;Z4(A)|0;if((G|0)<0){A=-A;Z=1;I=153425}else{Z=(f&2049|0)!=0&1;I=(f&2048|0)==0?(f&1|0)==0?153426:153431:153428}Z4(A)|0;do{if(0==0&(G&2146435072|0)==2146435072){z=(l&32|0)!=0;s=Z+3|0;C4(e,32,r,s,f&-65537);g4(e,I,Z);g4(e,A!=A|0.0!=0.0?z?153593:153452:z?153444:153448,3);C4(e,32,r,s,f^8192)}else{d=+E1(A,m)*2.0;s=d!=0.0;if(s)t[m>>2]=(t[m>>2]|0)+-1;E=l|32;if((E|0)==97){w=l&32;v=(w|0)==0?I:I+9|0;k=Z|2;s=12-a|0;do{if(!(a>>>0>11|(s|0)==0)){A=8.0;do{s=s+-1|0;A=A*16.0}while((s|0)!=0);if((i[v>>0]|0)==45){A=-(A+(-d-A));break}else{A=d+A-A;break}}else A=d}while(0);c=t[m>>2]|0;s=(c|0)<0?0-c|0:c;s=y4(s,((s|0)<0)<<31>>31,Q)|0;if((s|0)==(Q|0)){s=u+11|0;i[s>>0]=48}i[s+-1>>0]=(c>>31&2)+43;b=s+-2|0;i[b>>0]=l+15;o=(a|0)<1;u=(f&8|0)==0;s=z;do{L=~~A;c=s+1|0;i[s>>0]=w|n[153456+L>>0];A=(A-+(L|0))*16.0;if((c-D|0)==1?!(u&(o&A==0.0)):0){i[c>>0]=46;s=s+2|0}else s=c}while(A!=0.0);if((a|0)!=0?(-2-D+s|0)<(a|0):0){c=s-D|0;s=a+2|0}else{s=s-D|0;c=s}Q=Q-b|0;D=Q+k+s|0;C4(e,32,r,D,f);g4(e,v,k);C4(e,48,r,D,f^65536);g4(e,z,c);C4(e,48,s-c|0,0,0);g4(e,b,Q);C4(e,32,r,D,f^8192);s=D;break}c=(a|0)<0?6:a;if(s){s=(t[m>>2]|0)+-28|0;t[m>>2]=s;A=d*268435456.0}else{A=d;s=t[m>>2]|0}L=(s|0)<0?o:o+288|0;o=L;do{y=~~A>>>0;t[o>>2]=y;o=o+4|0;A=(A-+(y>>>0))*1.0e9}while(A!=0.0);if((s|0)>0){u=L;w=o;while(1){b=(s|0)<29?s:29;s=w+-4|0;if(s>>>0>=u>>>0){o=0;do{B=C6(t[s>>2]|0,0,b|0)|0;B=d6(B|0,G|0,o|0,0)|0;y=G;p=E6(B|0,y|0,1e9,0)|0;t[s>>2]=p;o=p6(B|0,y|0,1e9,0)|0;s=s+-4|0}while(s>>>0>=u>>>0);if(o){u=u+-4|0;t[u>>2]=o}}o=w;while(1){if(o>>>0<=u>>>0)break;s=o+-4|0;if(!(t[s>>2]|0))o=s;else break}s=(t[m>>2]|0)-b|0;t[m>>2]=s;if((s|0)>0)w=o;else break}}else u=L;if((s|0)<0){a=((c+25|0)/9|0)+1|0;g=(E|0)==102;do{v=0-s|0;v=(v|0)<9?v:9;if(u>>>0>>0){b=(1<>>v;k=0;s=u;do{y=t[s>>2]|0;t[s>>2]=(y>>>v)+k;k=P(y&b,w)|0;s=s+4|0}while(s>>>0>>0);s=(t[u>>2]|0)==0?u+4|0:u;if(!k){u=s;s=o}else{t[o>>2]=k;u=s;s=o+4|0}}else{u=(t[u>>2]|0)==0?u+4|0:u;s=o}o=g?L:u;o=(s-o>>2|0)>(a|0)?o+(a<<2)|0:s;s=(t[m>>2]|0)+v|0;t[m>>2]=s}while((s|0)<0);s=u;a=o}else{s=u;a=o}y=L;if(s>>>0>>0){o=(y-s>>2)*9|0;b=t[s>>2]|0;if(b>>>0>=10){u=10;do{u=u*10|0;o=o+1|0}while(b>>>0>=u>>>0)}}else o=0;g=(E|0)==103;p=(c|0)!=0;u=c-((E|0)!=102?o:0)+((p&g)<<31>>31)|0;if((u|0)<(((a-y>>2)*9|0)+-9|0)){u=u+9216|0;v=L+4+(((u|0)/9|0)+-1024<<2)|0;u=(u|0)%9|0;if((u|0)<8){b=10;while(1){b=b*10|0;if((u|0)<7)u=u+1|0;else break}}else b=10;w=t[v>>2]|0;k=(w>>>0)%(b>>>0)|0;u=(v+4|0)==(a|0);if(!(u&(k|0)==0)){d=(((w>>>0)/(b>>>0)|0)&1|0)==0?9007199254740992.0:9007199254740994.0;B=(b|0)/2|0;A=k>>>0>>0?.5:u&(k|0)==(B|0)?1.0:1.5;if(Z){B=(i[I>>0]|0)==45;A=B?-A:A;d=B?-d:d}u=w-k|0;t[v>>2]=u;if(d+A!=d){B=u+b|0;t[v>>2]=B;if(B>>>0>999999999){o=v;while(1){u=o+-4|0;t[o>>2]=0;if(u>>>0>>0){s=s+-4|0;t[s>>2]=0}B=(t[u>>2]|0)+1|0;t[u>>2]=B;if(B>>>0>999999999)o=u;else break}}else u=v;o=(y-s>>2)*9|0;w=t[s>>2]|0;if(w>>>0>=10){b=10;do{b=b*10|0;o=o+1|0}while(w>>>0>=b>>>0)}}else u=v}else u=v;u=u+4|0;u=a>>>0>u>>>0?u:a;B=s}else{u=a;B=s}E=u;while(1){if(E>>>0<=B>>>0){m=0;break}s=E+-4|0;if(!(t[s>>2]|0))E=s;else{m=1;break}}a=0-o|0;do{if(g){s=c+((p^1)&1)|0;if((s|0)>(o|0)&(o|0)>-5){b=l+-1|0;c=s+-1-o|0}else{b=l+-2|0;c=s+-1|0}s=f&8;if(!s){if(m?(C=t[E+-4>>2]|0,(C|0)!=0):0)if(!((C>>>0)%10|0)){u=0;s=10;do{s=s*10|0;u=u+1|0}while(!((C>>>0)%(s>>>0)|0|0))}else u=0;else u=9;s=((E-y>>2)*9|0)+-9|0;if((b|32|0)==102){v=s-u|0;v=(v|0)>0?v:0;c=(c|0)<(v|0)?c:v;v=0;break}else{v=s+o-u|0;v=(v|0)>0?v:0;c=(c|0)<(v|0)?c:v;v=0;break}}else v=s}else{b=l;v=f&8}}while(0);g=c|v;w=(g|0)!=0&1;k=(b|32|0)==102;if(k){p=0;s=(o|0)>0?o:0}else{s=(o|0)<0?a:o;s=y4(s,((s|0)<0)<<31>>31,Q)|0;u=Q;if((u-s|0)<2)do{s=s+-1|0;i[s>>0]=48}while((u-s|0)<2);i[s+-1>>0]=(o>>31&2)+43;s=s+-2|0;i[s>>0]=b;p=s;s=u-s|0}s=Z+1+c+w+s|0;C4(e,32,r,s,f);g4(e,I,Z);C4(e,48,r,s,f^65536);if(k){b=B>>>0>L>>>0?L:B;v=z+9|0;w=v;k=z+8|0;u=b;do{o=y4(t[u>>2]|0,0,v)|0;if((u|0)==(b|0)){if((o|0)==(v|0)){i[k>>0]=48;o=k}}else if(o>>>0>z>>>0){z6(z|0,48,o-D|0)|0;do{o=o+-1|0}while(o>>>0>z>>>0)}g4(e,o,w-o|0);u=u+4|0}while(u>>>0<=L>>>0);if(g|0)g4(e,153472,1);if(u>>>0>>0&(c|0)>0)while(1){o=y4(t[u>>2]|0,0,v)|0;if(o>>>0>z>>>0){z6(z|0,48,o-D|0)|0;do{o=o+-1|0}while(o>>>0>z>>>0)}g4(e,o,(c|0)<9?c:9);u=u+4|0;o=c+-9|0;if(!(u>>>0>>0&(c|0)>9)){c=o;break}else c=o}C4(e,48,c+9|0,9,0)}else{g=m?E:B+4|0;if((c|0)>-1){m=z+9|0;v=(v|0)==0;a=m;w=0-D|0;k=z+8|0;b=B;do{o=y4(t[b>>2]|0,0,m)|0;if((o|0)==(m|0)){i[k>>0]=48;o=k}do{if((b|0)==(B|0)){u=o+1|0;g4(e,o,1);if(v&(c|0)<1){o=u;break}g4(e,153472,1);o=u}else{if(o>>>0<=z>>>0)break;z6(z|0,48,o+w|0)|0;do{o=o+-1|0}while(o>>>0>z>>>0)}}while(0);D=a-o|0;g4(e,o,(c|0)>(D|0)?D:c);c=c-D|0;b=b+4|0}while(b>>>0>>0&(c|0)>-1)}C4(e,48,c+18|0,18,0);g4(e,p,Q-p|0)}C4(e,32,r,s,f^8192)}}while(0);h=W;return((s|0)<(r|0)?r:s)|0}function Z4(e){e=+e;var A=0;c[u>>3]=e;A=t[u>>2]|0;G=t[u+4>>2]|0;return A|0}function G4(e,A,r){e=e|0;A=A|0;r=r|0;var a=0,n=0,f=0,l=0,s=0;a=r+16|0;n=t[a>>2]|0;if(!n)if(!(L4(r)|0)){n=t[a>>2]|0;f=5}else a=0;else f=5;e:do{if((f|0)==5){s=r+20|0;l=t[s>>2]|0;a=l;if((n-l|0)>>>0>>0){a=L5[t[r+36>>2]&63](r,e,A)|0;break}A:do{if((i[r+75>>0]|0)>-1){l=A;while(1){if(!l){f=0;n=e;break A}n=l+-1|0;if((i[e+n>>0]|0)==10)break;else l=n}a=L5[t[r+36>>2]&63](r,e,l)|0;if(a>>>0>>0)break e;f=l;n=e+l|0;A=A-l|0;a=t[s>>2]|0}else{f=0;n=e}}while(0);Q6(a|0,n|0,A|0)|0;t[s>>2]=(t[s>>2]|0)+A;a=f+A|0}}while(0);return a|0}function L4(e){e=e|0;var A=0,r=0;A=e+74|0;r=i[A>>0]|0;i[A>>0]=r+255|r;A=t[e>>2]|0;if(!(A&8)){t[e+8>>2]=0;t[e+4>>2]=0;r=t[e+44>>2]|0;t[e+28>>2]=r;t[e+20>>2]=r;t[e+16>>2]=r+(t[e+48>>2]|0);e=0}else{t[e>>2]=A|32;e=-1}return e|0}function Q4(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0;i=e+20|0;a=t[i>>2]|0;e=(t[e+16>>2]|0)-a|0;e=e>>>0>r>>>0?r:e;Q6(a|0,A|0,e|0)|0;t[i>>2]=(t[i>>2]|0)+e;return r|0}function D4(e){e=e|0;var A=0,r=0,a=0,t=0;a=i[e>>0]|0;A=1;r=153474;t=97;while(1){if(a<<24>>24==t<<24>>24?(e1(e,r)|0)==0:0)break;r=r+6|0;t=i[r>>0]|0;if(!(t<<24>>24)){A=0;break}else A=A+1|0}return A|0}function z4(e){e=e|0;var A=0;A=(b4(e)|0)==0;return(A?e:e&95)|0}function W4(e,A){e=e|0;A=A|0;var r=0,a=0,n=0,f=0;f=h;h=h+16|0;n=f;do{if(e>>>0>6)A=0;else{Ee(190656);if((e|0)!=6){A=Y4(e,A)|0;xe(190656);break}if(!A){A=197132;e=0}else{e=n;r=153547;a=e+16|0;do{i[e>>0]=i[r>>0]|0;e=e+1|0;r=r+1|0}while((e|0)<(a|0));a=0;do{e=j2(A,59)|0;r=e-A|0;if((r|0)<16){Q6(n|0,A|0,r|0)|0;i[n+r>>0]=0;A=(i[e>>0]|0)==0?A:e+1|0}Y4(a,n)|0;a=a+1|0}while((a|0)!=6);A=197132;e=0}while(1){a=t[190616+(e<<2)>>2]|0;a=a|0?a+8|0:153563;r=U2(a)|0;Q6(A|0,a|0,r|0)|0;a=A+r|0;i[a>>0]=59;e=e+1|0;if((e|0)==6)break;else A=A+(r+1)|0}i[a>>0]=0;xe(190656);A=197132}}while(0);h=f;return A|0}function Y4(e,A){e=e|0;A=A|0;if(!A)e=t[190616+(e<<2)>>2]|0;else{A=K1(e,A)|0;t[190616+(e<<2)>>2]=A;e=A}return(e|0?e+8|0:153563)|0}function F4(e,A,r){e=e|0;A=A|0;r=r|0;var a=0,t=0;e:do{if(!r)e=0;else{while(1){a=i[e>>0]|0;t=i[A>>0]|0;if(a<<24>>24!=t<<24>>24)break;r=r+-1|0;if(!r){e=0;break e}else{e=e+1|0;A=A+1|0}}e=(a&255)-(t&255)|0}}while(0);return e|0}function M4(e){e=e|0;return V4(e)|0}function V4(e){e=e|0;return I6(e|0)|0}function N4(e,A,r){e=e|0;A=A|0;r=r|0;var a=0,f=0,l=0,s=0,c=0,o=0,u=0,b=0,h=0,w=0;if((t[r+76>>2]|0)>-1)u=d4(r)|0;else u=0;a=A+-1|0;if((A|0)<2){b=r+74|0;o=i[b>>0]|0;i[b>>0]=o+255|o;if(u|0)v4(r);if(!a)i[e>>0]=0;else e=0}else{e:do{if(a){c=r+4|0;o=r+8|0;A=e;while(1){f=t[c>>2]|0;h=f;w=(t[o>>2]|0)-h|0;l=G1(f,10,w)|0;s=(l|0)==0;l=s?w:1-h+l|0;l=l>>>0>>0?l:a;Q6(A|0,f|0,l|0)|0;f=(t[c>>2]|0)+l|0;t[c>>2]=f;A=A+l|0;l=a-l|0;if(!(s&(l|0)!=0)){b=17;break e}if(f>>>0>=(t[o>>2]|0)>>>0){a=W1(r)|0;if((a|0)<0)break;else s=a}else{t[c>>2]=f+1;s=n[f>>0]|0}a=l+-1|0;f=A+1|0;i[A>>0]=s;if(!((a|0)!=0&(s&255|0)!=10)){A=f;b=17;break e}else A=f}if((A|0)!=(e|0)?(t[r>>2]&16|0)!=0:0)b=17;else e=0}else{A=e;b=17}}while(0);if((b|0)==17)if(!e)e=0;else i[A>>0]=0;if(u)v4(r)}return e|0}function R4(e,A){e=e|0;A=A|0;var r=0;r=i[A>>0]|0;do{if(r<<24>>24){e=C1(e,r<<24>>24)|0;if(e){if(i[A+1>>0]|0)if(i[e+1>>0]|0){if(!(i[A+2>>0]|0)){e=x4(e,A)|0;break}if(i[e+2>>0]|0){if(!(i[A+3>>0]|0)){e=J4(e,A)|0;break}if(i[e+3>>0]|0)if(!(i[A+4>>0]|0)){e=H4(e,A)|0;break}else{e=P4(e,A)|0;break}else e=0}else e=0}else e=0}else e=0}}while(0);return e|0}function x4(e,A){e=e|0;A=A|0;var r=0,a=0,t=0;t=(n[A>>0]|0)<<8|(n[A+1>>0]|0);a=n[e>>0]|0;while(1){A=e+1|0;r=i[A>>0]|0;if(!(r<<24>>24))break;a=a<<8&65280|r&255;if((a|0)==(t|0))break;else e=A}return(r<<24>>24?e:0)|0}function J4(e,A){e=e|0;A=A|0;var r=0,a=0;a=(n[A+1>>0]|0)<<16|(n[A>>0]|0)<<24|(n[A+2>>0]|0)<<8;r=e+2|0;A=i[r>>0]|0;e=(n[e+1>>0]|0)<<16|(n[e>>0]|0)<<24|(A&255)<<8;if(!((e|0)==(a|0)|A<<24>>24==0))do{r=r+1|0;A=i[r>>0]|0;e=(e|A&255)<<8}while(!((e|0)==(a|0)|A<<24>>24==0));return(A<<24>>24?r+-2|0:0)|0}function H4(e,A){e=e|0;A=A|0;var r=0,a=0;a=(n[A+1>>0]|0)<<16|(n[A>>0]|0)<<24|(n[A+2>>0]|0)<<8|(n[A+3>>0]|0);A=e+3|0;r=i[A>>0]|0;e=(n[e+1>>0]|0)<<16|(n[e>>0]|0)<<24|(n[e+2>>0]|0)<<8|r&255;if(!(r<<24>>24==0|(e|0)==(a|0)))do{A=A+1|0;r=i[A>>0]|0;e=e<<8|r&255}while(!(r<<24>>24==0|(e|0)==(a|0)));return(r<<24>>24?A+-3|0:0)|0}function P4(e,A){e=e|0;A=A|0;var r=0,a=0,n=0,f=0,l=0,s=0,c=0,o=0,u=0,b=0,w=0,k=0,d=0,v=0,g=0,m=0,p=0;p=h;h=h+1056|0;g=p+1024|0;m=p;t[g>>2]=0;t[g+4>>2]=0;t[g+8>>2]=0;t[g+12>>2]=0;t[g+16>>2]=0;t[g+20>>2]=0;t[g+24>>2]=0;t[g+28>>2]=0;r=i[A>>0]|0;e:do{if(r<<24>>24){v=0;do{if(!(i[e+v>>0]|0)){r=0;break e}d=g+(((r&255)>>>5&255)<<2)|0;t[d>>2]=t[d>>2]|1<<(r&31);v=v+1|0;t[m+((r&255)<<2)>>2]=v;r=i[A+v>>0]|0}while(r<<24>>24!=0);o=v>>>0>1;if(o){a=0;c=-1;n=1;A:while(1){f=1;r=a;while(1){a=n;r:while(1){s=1;while(1){n=i[A+(s+c)>>0]|0;l=i[A+a>>0]|0;if(n<<24>>24!=l<<24>>24)break r;if((s|0)==(f|0))break;s=s+1|0;a=s+r|0;if(a>>>0>=v>>>0){u=f;r=c;break A}}r=f+r|0;a=r+1|0;if(a>>>0>=v>>>0){u=f;r=c;break A}}f=a-c|0;if((n&255)<=(l&255))break;n=a+1|0;if(n>>>0>=v>>>0){u=f;r=c;break A}else r=a}n=r+2|0;if(n>>>0>=v>>>0){u=1;break}else{a=r+1|0;c=r}}if(o){f=0;o=-1;l=1;while(1){a=1;n=f;while(1){f=l;A:while(1){c=1;while(1){l=i[A+(c+o)>>0]|0;s=i[A+f>>0]|0;if(l<<24>>24!=s<<24>>24)break A;if((c|0)==(a|0))break;c=c+1|0;f=c+n|0;if(f>>>0>=v>>>0){l=u;n=o;f=26;break e}}n=a+n|0;f=n+1|0;if(f>>>0>=v>>>0){l=u;n=o;f=26;break e}}a=f-o|0;if((l&255)>=(s&255))break;l=f+1|0;if(l>>>0>=v>>>0){l=u;n=o;f=26;break e}else n=f}l=n+2|0;if(l>>>0>=v>>>0){l=u;a=1;f=26;break}else{f=n+1|0;o=n}}}else{l=u;a=1;n=-1;f=26}}else{l=1;r=-1;a=1;n=-1;f=26}}else{l=1;r=-1;v=0;a=1;n=-1;f=26}}while(0);e:do{if((f|0)==26){k=(n+1|0)>>>0>(r+1|0)>>>0;a=k?a:l;k=k?n:r;d=k+1|0;if(!(F4(A,A+a|0,d)|0))w=v-a|0;else{a=v-k+-1|0;w=0;a=(k>>>0>a>>>0?k:a)+1|0}c=v|63;o=v+-1|0;u=(w|0)!=0;b=v-a|0;r=e;s=0;n=e;while(1){f=r;do{if((n-f|0)>>>0>>0){l=G1(n,0,c)|0;if(l)if((l-f|0)>>>0>>0){r=0;break e}else break;else{l=n+c|0;break}}else l=n}while(0);n=i[r+o>>0]|0;A:do{if(!(1<<(n&31)&t[g+(((n&255)>>>5&255)<<2)>>2])){f=0;n=v}else{n=v-(t[m+((n&255)<<2)>>2]|0)|0;if(n|0){f=0;n=u&(s|0)!=0&n>>>0>>0?b:n;break}n=d>>>0>s>>>0?d:s;f=i[A+n>>0]|0;r:do{if(!(f<<24>>24))n=d;else{while(1){if(f<<24>>24!=(i[r+n>>0]|0))break;n=n+1|0;f=i[A+n>>0]|0;if(!(f<<24>>24)){n=d;break r}}f=0;n=n-k|0;break A}}while(0);while(1){if(n>>>0<=s>>>0)break e;n=n+-1|0;if((i[A+n>>0]|0)!=(i[r+n>>0]|0)){f=w;n=a;break}}}}while(0);r=r+n|0;s=f;n=l}}}while(0);h=p;return r|0}function X4(e,A,r){e=e|0;A=A|0;r=r|0;S4(e,A,r)|0;return e|0}function S4(e,A,r){e=e|0;A=A|0;r=r|0;var a=0,n=0,f=0;n=A;e:do{if(!((n^e)&3)){a=(r|0)!=0;if(a&(n&3|0)!=0)do{n=i[A>>0]|0;i[e>>0]=n;if(!(n<<24>>24))break e;r=r+-1|0;A=A+1|0;e=e+1|0;a=(r|0)!=0}while(a&(A&3|0)!=0);if(a){if(i[A>>0]|0){A:do{if(r>>>0>3){a=A;while(1){A=t[a>>2]|0;if((A&-2139062144^-2139062144)&A+-16843009|0){A=a;break A}t[e>>2]=A;r=r+-4|0;A=a+4|0;e=e+4|0;if(r>>>0>3)a=A;else break}}}while(0);f=11}}else r=0}else f=11}while(0);e:do{if((f|0)==11)if(!r)r=0;else while(1){f=i[A>>0]|0;i[e>>0]=f;if(!(f<<24>>24))break e;r=r+-1|0;e=e+1|0;if(!r){r=0;break}else A=A+1|0}}while(0);z6(e|0,0,r|0)|0;return e|0}function j4(e,A){e=e|0;A=A|0;var r=0,a=0,n=0,f=0;n=h;h=h+32|0;a=n;t[a>>2]=0;t[a+4>>2]=0;t[a+8>>2]=0;t[a+12>>2]=0;t[a+16>>2]=0;t[a+20>>2]=0;t[a+24>>2]=0;t[a+28>>2]=0;r=i[A>>0]|0;do{if(!(r<<24>>24))A=0;else{if(!(i[A+1>>0]|0)){A=e;while(1)if((i[A>>0]|0)==r<<24>>24)A=A+1|0;else break;A=A-e|0;break}do{f=a+(((r&255)>>>5&255)<<2)|0;t[f>>2]=t[f>>2]|1<<(r&31);A=A+1|0;r=i[A>>0]|0}while(r<<24>>24!=0);r=i[e>>0]|0;e:do{if(!(r<<24>>24))A=e;else{A=e;do{if(!(t[a+(((r&255)>>>5&255)<<2)>>2]&1<<(r&31)))break e;A=A+1|0;r=i[A>>0]|0}while(r<<24>>24!=0)}}while(0);A=A-e|0}}while(0);h=n;return A|0}function U4(e){e=e|0;var A=0,r=0;A=h;h=h+16|0;r=A;t[r>>2]=x2(e)|0;e=Ne(6,r|0)|0;e=N2((e|0)==-4?0:e)|0;h=A;return e|0}function T4(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0;i=h;h=h+16|0;a=i;t[a>>2]=r;r=O4(e,A,a)|0;h=i;return r|0}function O4(e,A,r){e=e|0;A=A|0;r=r|0;return h4(e,2147483647,A,r)|0}function _4(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0,n=0,f=0,l=0,s=0,c=0,o=0,u=0;o=h;h=h+208|0;s=o+8|0;c=o;f=P(r,A)|0;l=c;t[l>>2]=1;t[l+4>>2]=0;e:do{if(f|0){l=0-r|0;t[s+4>>2]=r;t[s>>2]=r;a=2;A=r;n=r;while(1){A=A+r+n|0;t[s+(a<<2)>>2]=A;if(A>>>0>>0){u=n;a=a+1|0;n=A;A=u}else break}n=e+f+l|0;if(n>>>0>e>>>0){f=n;a=1;A=1;do{do{if((A&3|0)!=3){A=a+-1|0;if((t[s+(A<<2)>>2]|0)>>>0<(f-e|0)>>>0)q4(e,r,i,a,s);else $4(e,r,i,c,a,0,s);if((a|0)==1){e3(c,1);a=0;break}else{e3(c,A);a=1;break}}else{q4(e,r,i,a,s);K4(c,2);a=a+2|0}}while(0);A=t[c>>2]|1;t[c>>2]=A;e=e+r|0}while(e>>>0>>0)}else{a=1;A=1}$4(e,r,i,c,a,0,s);n=c+4|0;while(1){if((a|0)==1&(A|0)==1){if(!(t[n>>2]|0))break e}else if((a|0)>=2){e3(c,2);u=a+-2|0;t[c>>2]=t[c>>2]^7;K4(c,1);$4(e+(0-(t[s+(u<<2)>>2]|0))+l|0,r,i,c,a+-1|0,1,s);e3(c,1);A=t[c>>2]|1;t[c>>2]=A;f=e+l|0;$4(f,r,i,c,u,1,s);e=f;a=u;continue}A=A3(c)|0;K4(c,A);e=e+l|0;a=A+a|0;A=t[c>>2]|0}}}while(0);h=o;return}function q4(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;var n=0,f=0,l=0,s=0,c=0,o=0,u=0;u=h;h=h+240|0;o=u;t[o>>2]=e;e:do{if((i|0)>1){c=0-A|0;n=e;s=i;i=1;while(1){f=n+c|0;l=s+-2|0;n=f+(0-(t[a+(l<<2)>>2]|0))|0;if((Z5[r&127](e,n)|0)>-1?(Z5[r&127](e,f)|0)>-1:0)break e;e=i+1|0;i=o+(i<<2)|0;if((Z5[r&127](n,f)|0)>-1){t[i>>2]=n;i=s+-1|0}else{t[i>>2]=f;n=f;i=l}if((i|0)<=1){i=e;break e}s=i;i=e;e=t[o>>2]|0}}else i=1}while(0);i3(A,o,i);h=u;return}function K4(e,A){e=e|0;A=A|0;var r=0,i=0,a=0;a=e+4|0;if(A>>>0>31){i=t[a>>2]|0;t[e>>2]=i;t[a>>2]=0;A=A+-32|0;r=0}else{r=t[a>>2]|0;i=t[e>>2]|0}t[e>>2]=r<<32-A|i>>>A;t[a>>2]=r>>>A;return}function $4(e,A,r,i,a,n,f){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;n=n|0;f=f|0;var l=0,s=0,c=0,o=0,u=0,b=0,w=0,k=0;w=h;h=h+240|0;u=w+232|0;b=w;k=t[i>>2]|0;t[u>>2]=k;s=t[i+4>>2]|0;c=u+4|0;t[c>>2]=s;t[b>>2]=e;e:do{if((k|0)!=1|(s|0)!=0?(o=0-A|0,l=e+(0-(t[f+(a<<2)>>2]|0))|0,(Z5[r&127](l,e)|0)>=1):0){i=1;n=(n|0)==0;s=l;while(1){if(n&(a|0)>1){n=e+o|0;l=t[f+(a+-2<<2)>>2]|0;if((Z5[r&127](n,s)|0)>-1){l=10;break e}if((Z5[r&127](n+(0-l)|0,s)|0)>-1){l=10;break e}}n=i+1|0;t[b+(i<<2)>>2]=s;k=A3(u)|0;K4(u,k);a=k+a|0;if(!((t[u>>2]|0)!=1|(t[c>>2]|0)!=0)){i=n;e=s;l=10;break e}e=s+(0-(t[f+(a<<2)>>2]|0))|0;if((Z5[r&127](e,t[b>>2]|0)|0)<1){e=s;i=n;n=0;l=9;break}else{k=s;i=n;n=1;s=e;e=k}}}else{i=1;l=9}}while(0);if((l|0)==9?(n|0)==0:0)l=10;if((l|0)==10){i3(A,b,i);q4(e,A,r,a,f)}h=w;return}function e3(e,A){e=e|0;A=A|0;var r=0,i=0,a=0;a=e+4|0;if(A>>>0>31){i=t[e>>2]|0;t[a>>2]=i;t[e>>2]=0;A=A+-32|0;r=0}else{r=t[e>>2]|0;i=t[a>>2]|0}t[a>>2]=r>>>(32-A|0)|i<>2]=r<>2]|0)+-1|0)|0;if(!A){A=r3(t[e+4>>2]|0)|0;return((A|0)==0?0:A+32|0)|0}else return A|0;return 0}function r3(e){e=e|0;var A=0;if(e)if(!(e&1)){A=e;e=0;do{e=e+1|0;A=A>>>1}while(!(A&1|0))}else e=0;else e=32;return e|0}function i3(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0,n=0,f=0,l=0;f=h;h=h+256|0;i=f;e:do{if((r|0)>=2?(n=A+(r<<2)|0,t[n>>2]=i,e|0):0)while(1){a=e>>>0<256?e:256;Q6(i|0,t[A>>2]|0,a|0)|0;i=0;do{l=A+(i<<2)|0;i=i+1|0;Q6(t[l>>2]|0,t[A+(i<<2)>>2]|0,a|0)|0;t[l>>2]=(t[l>>2]|0)+a}while((i|0)!=(r|0));e=e-a|0;if(!e)break e;i=t[n>>2]|0}}while(0);h=f;return}function a3(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0;i=h;h=h+16|0;a=i;t[a>>2]=r;r=w4(e,A,a)|0;h=i;return r|0}function t3(e){e=e|0;var A=0,r=0,a=0;a=h;h=h+16|0;r=a;pe(0,r|0)|0;A=0;r=(t[r+4>>2]|0)*65537^(r>>>4)+e;while(1){i[e+A>>0]=(r&15)+65|r<<1&32;A=A+1|0;if((A|0)==6)break;else r=r>>>5}h=a;return e|0}function n3(e,A,r){e=e|0;A=A|0;r=r|0;r=L1(e,A,r,-2147483648,0)|0;return r|0}function f3(e,A){e=e|0;A=A|0;var r=0,a=0,n=0,f=0,l=0;f=h;h=h+32|0;a=f;r=i[A>>0]|0;e:do{if(r<<24>>24!=0?(i[A+1>>0]|0)!=0:0){t[a>>2]=0;t[a+4>>2]=0;t[a+8>>2]=0;t[a+12>>2]=0;t[a+16>>2]=0;t[a+20>>2]=0;t[a+24>>2]=0;t[a+28>>2]=0;do{l=a+(((r&255)>>>5&255)<<2)|0;t[l>>2]=t[l>>2]|1<<(r&31);A=A+1|0;r=i[A>>0]|0}while(r<<24>>24!=0);r=i[e>>0]|0;if(!(r<<24>>24))A=e;else{A=e;do{if(t[a+(((r&255)>>>5&255)<<2)>>2]&1<<(r&31)|0)break e;A=A+1|0;r=i[A>>0]|0}while(r<<24>>24!=0)}}else n=3}while(0);if((n|0)==3)A=j2(e,r<<24>>24)|0;h=f;return A-e|0}function l3(e,A){e=e|0;A=A|0;var r=0;if(!e){e=t[47666]|0;if(!e)e=0;else r=3}else r=3;do{if((r|0)==3){e=e+(j4(e,A)|0)|0;if(!(i[e>>0]|0)){t[47666]=0;e=0;break}A=e+(f3(e,A)|0)|0;t[47666]=A;if(!(i[A>>0]|0)){t[47666]=0;break}else{t[47666]=A+1;i[A>>0]=0;break}}}while(0);return e|0}function s3(e,A,r){e=e|0;A=A|0;r=r|0;var a=0;a=A&255;do{if(!r){A=0;break}r=r+-1|0;A=e+r|0}while((i[A>>0]|0)!=a<<24>>24);return A|0}function c3(e,A,r){e=e|0;A=A|0;r=r|0;var a=0;if(!e){e=t[r>>2]|0;if(!e)e=0;else a=3}else a=3;do{if((a|0)==3){e=e+(j4(e,A)|0)|0;if(!(i[e>>0]|0)){t[r>>2]=0;e=0;break}A=e+(f3(e,A)|0)|0;t[r>>2]=A;if(!(i[A>>0]|0)){t[r>>2]=0;break}else{t[r>>2]=A+1;i[A>>0]=0;break}}}while(0);return e|0}function o3(e){e=e|0;var A=0,r=0;r=(U2(e)|0)+1|0;A=Z2(r)|0;if(!A)A=0;else Q6(A|0,e|0,r|0)|0;return A|0}function u3(e,A){e=e|0;A=A|0;return s3(e,A,(U2(e)|0)+1|0)|0}function b3(e,A){e=e|0;A=A|0;$1(e+(U2(e)|0)|0,A)|0;return e|0}function h3(e,A){e=e|0;A=A|0;A=e+(f3(e,A)|0)|0;return(i[A>>0]|0?A:0)|0}function w3(e){e=e|0;var A=0;if((t[e+76>>2]|0)>-1){A=(d4(e)|0)==0;e=(t[e>>2]|0)>>>4&1}else e=(t[e>>2]|0)>>>4&1;return e|0}function k3(e){e=e|0;var A=0,r=0,i=0,a=0,n=0;if((t[e+76>>2]|0)>-1)a=d4(e)|0;else a=0;d3(e);n=(t[e>>2]&1|0)!=0;if(!n){i=v3()|0;r=t[e+52>>2]|0;A=e+56|0;if(r|0)t[r+56>>2]=t[A>>2];A=t[A>>2]|0;if(A|0)t[A+52>>2]=r;if((t[i>>2]|0)==(e|0))t[i>>2]=A;g3()}A=m3(e)|0;A=I5[t[e+12>>2]&63](e)|0|A;r=t[e+92>>2]|0;if(r|0)G2(r);if(n){if(a|0)v4(e)}else G2(e);return A|0}function d3(e){e=e|0;var A=0;if(t[e+68>>2]|0){A=t[e+116>>2]|0;e=e+112|0;if(A|0)t[A+112>>2]=t[e>>2];e=t[e>>2]|0;if(!e)e=(E3()|0)+232|0;else e=e+116|0;t[e>>2]=A}return}function v3(){Ee(190668);return 190676}function g3(){xe(190668);return}function m3(e){e=e|0;var A=0,r=0;do{if(e){if((t[e+76>>2]|0)<=-1){A=p3(e)|0;break}r=(d4(e)|0)==0;A=p3(e)|0;if(!r)v4(e)}else{if(!(t[15711]|0))A=0;else A=m3(t[15711]|0)|0;e=t[(v3()|0)>>2]|0;if(e)do{if((t[e+76>>2]|0)>-1)r=d4(e)|0;else r=0;if((t[e+20>>2]|0)>>>0>(t[e+28>>2]|0)>>>0)A=p3(e)|0|A;if(r|0)v4(e);e=t[e+56>>2]|0}while((e|0)!=0);g3()}}while(0);return A|0}function p3(e){e=e|0;var A=0,r=0,i=0,a=0,n=0,f=0;A=e+20|0;f=e+28|0;if((t[A>>2]|0)>>>0>(t[f>>2]|0)>>>0?(L5[t[e+36>>2]&63](e,0,0)|0,(t[A>>2]|0)==0):0)e=-1;else{r=e+4|0;i=t[r>>2]|0;a=e+8|0;n=t[a>>2]|0;if(i>>>0>>0)L5[t[e+40>>2]&63](e,i-n|0,1)|0;t[e+16>>2]=0;t[f>>2]=0;t[A>>2]=0;t[a>>2]=0;t[r>>2]=0;e=0}return e|0}function E3(){return i1()|0}function B3(e,A){e=e|0;A=A|0;var r=0,a=0,n=0,f=0,l=0,s=0,c=0,o=0,u=0,b=0;b=h;h=h+64|0;u=b+40|0;c=b+24|0;s=b+16|0;n=b;o=b+56|0;a=i[A>>0]|0;if(G1(153580,a<<24>>24,4)|0){r=Z2(1156)|0;if(!r)r=0;else{f=r;l=f+124|0;do{t[f>>2]=0;f=f+4|0}while((f|0)<(l|0));if(!(C1(A,43)|0))t[r>>2]=a<<24>>24==114?8:4;if(C1(A,101)|0){t[n>>2]=e;t[n+4>>2]=2;t[n+8>>2]=1;We(221,n|0)|0;a=i[A>>0]|0}if(a<<24>>24==97){t[s>>2]=e;t[s+4>>2]=3;a=We(221,s|0)|0;if(!(a&1024)){t[c>>2]=e;t[c+4>>2]=4;t[c+8>>2]=a|1024;We(221,c|0)|0}A=t[r>>2]|128;t[r>>2]=A}else A=t[r>>2]|0;t[r+60>>2]=e;t[r+44>>2]=r+132;t[r+48>>2]=1024;a=r+75|0;i[a>>0]=-1;if((A&8|0)==0?(t[u>>2]=e,t[u+4>>2]=21523,t[u+8>>2]=o,(Ve(54,u|0)|0)==0):0)i[a>>0]=10;t[r+32>>2]=15;t[r+36>>2]=18;t[r+40>>2]=16;t[r+12>>2]=17;if(!(t[47645]|0))t[r+76>>2]=-1;y3(r)|0}}else{t[(R2()|0)>>2]=22;r=0}h=b;return r|0}function y3(e){e=e|0;var A=0,r=0;A=v3()|0;t[e+56>>2]=t[A>>2];r=t[A>>2]|0;if(r|0)t[r+52>>2]=e;t[A>>2]=e;g3();return e|0}function C3(e,A,r){e=e|0;A=A|0;r=r|0;var a=0,f=0,l=0,s=0;s=h;h=h+16|0;a=s;e:do{if(!A)e=0;else{do{if(r|0){l=(e|0)==0?a:e;e=i[A>>0]|0;if(e<<24>>24>-1){t[l>>2]=e&255;e=e<<24>>24!=0&1;break e}f=(t[t[(I3()|0)+188>>2]>>2]|0)==0;e=i[A>>0]|0;if(f){t[l>>2]=e<<24>>24&57343;e=1;break e}e=(e&255)+-194|0;if(e>>>0<=50){a=A+1|0;f=t[62384+(e<<2)>>2]|0;if(r>>>0<4?f&-2147483648>>>((r*6|0)+-6|0)|0:0)break;e=n[a>>0]|0;r=e>>>3;if((r+-16|r+(f>>26))>>>0<=7){e=e+-128|f<<6;if((e|0)>=0){t[l>>2]=e;e=2;break e}a=(n[A+2>>0]|0)+-128|0;if(a>>>0<=63){a=a|e<<6;if((a|0)>=0){t[l>>2]=a;e=3;break e}e=(n[A+3>>0]|0)+-128|0;if(e>>>0<=63){t[l>>2]=e|a<<6;e=4;break e}}}}}}while(0);t[(R2()|0)>>2]=84;e=-1}}while(0);h=s;return e|0}function I3(){return i1()|0}function Z3(e,A){e=e|0;A=A|0;var r=0;r=U2(e)|0;return((G3(e,1,r,A)|0)!=(r|0))<<31>>31|0}function G3(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0,n=0;a=P(r,A)|0;r=(A|0)==0?0:r;if((t[i+76>>2]|0)>-1){n=(d4(i)|0)==0;e=G4(e,a,i)|0;if(!n)v4(i)}else e=G4(e,a,i)|0;if((e|0)!=(a|0))r=(e>>>0)/(A>>>0)|0;return r|0}function L3(e,A){e=e|0;A=A|0;var r=0,a=0,f=0,l=0,s=0,c=0,o=0;o=h;h=h+16|0;s=o;c=A&255;i[s>>0]=c;a=e+16|0;f=t[a>>2]|0;if(!f)if(!(L4(e)|0)){f=t[a>>2]|0;l=4}else r=-1;else l=4;do{if((l|0)==4){l=e+20|0;a=t[l>>2]|0;if(a>>>0>>0?(r=A&255,(r|0)!=(i[e+75>>0]|0)):0){t[l>>2]=a+1;i[a>>0]=c;break}if((L5[t[e+36>>2]&63](e,s,1)|0)==1)r=n[s>>0]|0;else r=-1}}while(0);h=o;return r|0}function Q3(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0;i=h;h=h+16|0;a=i;t[a>>2]=e;t[a+4>>2]=A;t[a+8>>2]=r;r=N2(Ye(3,a|0)|0)|0;h=i;return r|0}function D3(){var e=0,A=0;A=h;h=h+16|0;e=ze(20,A|0)|0;h=A;return e|0}function z3(e,A){e=e|0;A=A|0;var r=0,a=0,t=0;r=e;a=153565;t=r+15|0;do{i[r>>0]=i[a>>0]|0;r=r+1|0;a=a+1|0}while((r|0)<(t|0));if(!A){i[e+14>>0]=48;i[e+15>>0]=0}else{a=A;r=14;while(1){r=r+1|0;if(a>>>0<10)break;else a=(a>>>0)/10|0}i[e+r>>0]=0;while(1){r=r+-1|0;i[e+r>>0]=(A>>>0)%10|0|48;if(A>>>0<10)break;else A=(A>>>0)/10|0}}return}function W3(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0;n=h;h=h+48|0;a=n+40|0;i=n+8|0;r=n;t[r>>2]=e;t[r+4>>2]=A;r=De(197,r|0)|0;if((r|0)==-9?(t[i>>2]=e,t[i+4>>2]=1,(We(221,i|0)|0)>=0):0){z3(i,e);t[a>>2]=i;t[a+4>>2]=A;A=N2(Qe(195,a|0)|0)|0}else A=N2(r)|0;h=n;return A|0}function Y3(e,A){e=e|0;A=A|0;var r=0,i=0;r=h;h=h+16|0;i=r;t[i>>2]=e;t[i+4>>2]=A;A=N2(Fe(33,i|0)|0)|0;h=r;return A|0}function F3(e,A){e=e|0;A=A|0;var r=0,a=0,n=0,f=0,l=0;l=h;h=h+48|0;f=l+32|0;n=l+16|0;r=l;if(G1(153580,i[A>>0]|0,4)|0){a=M3(A)|0;t[r>>2]=e;t[r+4>>2]=a|32768;t[r+8>>2]=438;r=N2(Me(5,r|0)|0)|0;if((r|0)>=0){if(a&524288|0){t[n>>2]=r;t[n+4>>2]=2;t[n+8>>2]=1;We(221,n|0)|0}e=B3(r,A)|0;if(!e){t[f>>2]=r;Ne(6,f|0)|0;e=0}}else e=0}else{t[(R2()|0)>>2]=22;e=0}h=l;return e|0}function M3(e){e=e|0;var A=0,r=0,a=0;r=(C1(e,43)|0)==0;A=i[e>>0]|0;r=r?A<<24>>24!=114&1:2;a=(C1(e,120)|0)==0;r=a?r:r|128;e=(C1(e,101)|0)==0;e=e?r:r|524288;e=A<<24>>24==114?e:e|64;e=A<<24>>24==119?e|512:e;return(A<<24>>24==97?e|1024:e)|0}function V3(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0;i=h;h=h+16|0;a=i;t[a>>2]=r;r=N3(e,A,a)|0;h=i;return r|0}function N3(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0,n=0,f=0;n=h;h=h+128|0;i=n;a=i;f=a+124|0;do{t[a>>2]=0;a=a+4|0}while((a|0)<(f|0));t[i+32>>2]=41;t[i+44>>2]=e;t[i+76>>2]=-1;t[i+84>>2]=e;f=x3(i,A,r)|0;h=n;return f|0}function R3(e,A,r){e=e|0;A=A|0;r=r|0;return T3(e,A,r)|0}function x3(e,A,r){e=e|0;A=A|0;r=r|0;var a=0,f=0,l=0,o=0,u=0,b=0.0,w=0,k=0,d=0,v=0,g=0,m=0,p=0,E=0,B=0,y=0,C=0,I=0,Z=0,L=0,Q=0,D=0,z=0,W=0,Y=0,F=0,M=0,V=0,N=0,R=0,x=0,J=0;J=h;h=h+288|0;F=J+8|0;M=J+17|0;V=J;N=J+16|0;if((t[e+76>>2]|0)>-1)x=d4(e)|0;else x=0;a=i[A>>0]|0;e:do{if(a<<24>>24){I=e+4|0;Z=e+100|0;L=e+108|0;Q=e+8|0;D=M+10|0;z=M+33|0;C=F+4|0;W=M+1|0;Y=M+1|0;o=A;g=0;A=0;l=0;f=0;A:while(1){r:do{if(!(I1(a&255)|0)){a=a<<24>>24==37;i:do{if(a){w=o+1|0;u=i[w>>0]|0;a:do{switch(u<<24>>24){case 37:break i;case 42:{y=0;o=o+2|0;break}default:{a=(u&255)+-48|0;if(a>>>0<10?(i[o+2>>0]|0)==36:0){y=J3(r,a)|0;o=o+3|0;break a}o=(t[r>>2]|0)+(4-1)&~(4-1);y=t[o>>2]|0;t[r>>2]=o+4;o=w}}}while(0);a=i[o>>0]|0;u=a&255;if((u+-48|0)>>>0<10){w=0;do{w=(w*10|0)+-48+u|0;o=o+1|0;a=i[o>>0]|0;u=a&255}while((u+-48|0)>>>0<10)}else w=0;a=a<<24>>24==109;B=(y|0)!=0;l=a?0:l;f=a?0:f;o=a?o+1|0:o;a=B&a;u=o+1|0;switch(i[o>>0]|0){case 104:{E=(i[u>>0]|0)==104;k=E?-2:-1;o=E?o+2|0:u;break}case 108:{E=(i[u>>0]|0)==108;k=E?3:1;o=E?o+2|0:u;break}case 106:{k=3;o=u;break}case 116:case 122:{k=1;o=u;break}case 76:{k=2;o=u;break}case 110:case 112:case 67:case 83:case 91:case 99:case 115:case 88:case 71:case 70:case 69:case 65:case 103:case 102:case 101:case 97:case 120:case 117:case 111:case 105:case 100:{k=0;break}default:{R=135;break A}}v=n[o>>0]|0;m=(v&47|0)==3;v=m?v|32:v;m=m?1:k;d=v&255;switch(d<<24>>24){case 99:{w=(w|0)>1?w:1;E=g;break}case 91:{E=g;break}case 110:{H3(y,m,g,((g|0)<0)<<31>>31);u=g;break r}default:{Q1(e,0);do{u=t[I>>2]|0;if(u>>>0<(t[Z>>2]|0)>>>0){t[I>>2]=u+1;u=n[u>>0]|0}else u=z1(e)|0}while((I1(u)|0)!=0);if(!(t[Z>>2]|0))u=t[I>>2]|0;else{u=(t[I>>2]|0)+-1|0;t[I>>2]=u}E=(t[L>>2]|0)+g+u-(t[Q>>2]|0)|0}}Q1(e,w);u=t[I>>2]|0;k=t[Z>>2]|0;if(u>>>0>>0)t[I>>2]=u+1;else{if((z1(e)|0)<0){R=135;break A}k=t[Z>>2]|0}if(k|0)t[I>>2]=(t[I>>2]|0)+-1;a:do{switch(d<<24>>24){case 91:case 99:case 115:{p=(v|0)==99;t:do{if((v|16|0)==115){z6(W|0,-1,256)|0;i[M>>0]=0;if((v|0)==115){i[z>>0]=0;i[D>>0]=0;i[D+1>>0]=0;i[D+2>>0]=0;i[D+3>>0]=0;i[D+4>>0]=0}}else{v=o+1|0;u=(i[v>>0]|0)==94;g=u&1;o=u?o+2|0:v;z6(Y|0,u&1|0,256)|0;i[M>>0]=0;u=i[o>>0]|0;switch(u<<24>>24){case 45:{u=46;R=63;break}case 93:{u=94;R=63;break}default:{}}while(1){if((R|0)==63){R=0;i[M+u>>0]=g^1;u=o+1|0;o=u;u=i[u>>0]|0}n:do{switch(u<<24>>24){case 0:{R=135;break A}case 93:break t;case 45:{v=o+1|0;u=i[v>>0]|0;switch(u<<24>>24){case 93:case 0:{u=45;break n}default:{}}o=i[o+-1>>0]|0;if((o&255)<(u&255)){d=(g^1)&255;o=o&255;do{o=o+1|0;i[M+o>>0]=d;u=i[v>>0]|0}while((o|0)<(u&255|0));o=v}else o=v;break}default:{}}}while(0);u=(u&255)+1|0;R=63}}}while(0);u=p?w+1|0:31;v=(m|0)==1;t:do{if(v){if(a){f=Z2(u<<2)|0;if(!f){l=0;f=0;a=1;R=135;break A}}else f=y;t[F>>2]=0;t[C>>2]=0;d=u;l=0;n:while(1){k=(f|0)==0;do{f:while(1){u=t[I>>2]|0;if(u>>>0<(t[Z>>2]|0)>>>0){t[I>>2]=u+1;u=n[u>>0]|0}else u=z1(e)|0;if(!(i[M+(u+1)>>0]|0))break n;i[N>>0]=u;switch(U1(V,N,1,F)|0){case-1:{l=0;R=135;break A}case-2:break;default:break f}}if(!k){t[f+(l<<2)>>2]=t[V>>2];l=l+1|0}}while(!(a&(l|0)==(d|0)));l=d<<1|1;u=Q2(f,l<<2)|0;if(!u){l=0;a=1;R=135;break A}else{m=d;d=l;f=u;l=m}}if(!(P3(F)|0)){l=0;R=135;break A}else{u=l;l=0;d=f}}else{if(a){l=Z2(u)|0;if(!l){l=0;f=0;a=1;R=135;break A}else{k=u;f=0}while(1){do{u=t[I>>2]|0;if(u>>>0<(t[Z>>2]|0)>>>0){t[I>>2]=u+1;u=n[u>>0]|0}else u=z1(e)|0;if(!(i[M+(u+1)>>0]|0)){u=f;d=0;f=0;break t}i[l+f>>0]=u;f=f+1|0}while((f|0)!=(k|0));f=k<<1|1;u=Q2(l,f)|0;if(!u){f=0;a=1;R=135;break A}else{m=k;k=f;l=u;f=m}}}if(!y){l=k;while(1){f=t[I>>2]|0;if(f>>>0>>0){t[I>>2]=f+1;f=n[f>>0]|0}else f=z1(e)|0;if(!(i[M+(f+1)>>0]|0)){u=0;l=0;d=0;f=0;break t}l=t[Z>>2]|0}}else{u=0;l=k;while(1){f=t[I>>2]|0;if(f>>>0>>0){t[I>>2]=f+1;f=n[f>>0]|0}else f=z1(e)|0;if(!(i[M+(f+1)>>0]|0)){l=y;d=0;f=0;break t}i[y+u>>0]=f;u=u+1|0;l=t[Z>>2]|0}}}}while(0);if(!(t[Z>>2]|0))k=t[I>>2]|0;else{k=(t[I>>2]|0)+-1|0;t[I>>2]=k}k=k-(t[Q>>2]|0)+(t[L>>2]|0)|0;if(!k){R=137;break A}if(!((k|0)==(w|0)|p^1)){R=137;break A}do{if(a)if(v){t[y>>2]=d;break}else{t[y>>2]=l;break}}while(0);if(!p){if(d|0)t[d+(u<<2)>>2]=0;if(!l){l=0;break a}i[l+u>>0]=0}break}case 120:case 88:case 112:{u=16;R=123;break}case 111:{u=8;R=123;break}case 117:case 100:{u=10;R=123;break}case 105:{u=0;R=123;break}case 71:case 103:case 70:case 102:case 69:case 101:case 65:case 97:{b=+X3(e,m,0);if((t[L>>2]|0)==((t[Q>>2]|0)-(t[I>>2]|0)|0)){R=137;break A}if(y)switch(m|0){case 0:{s[y>>2]=b;break a}case 1:{c[y>>3]=b;break a}case 2:{c[y>>3]=b;break a}default:break a}break}default:{}}}while(0);do{if((R|0)==123){R=0;u=D1(e,u,0,-1,-1)|0;if((t[L>>2]|0)==((t[Q>>2]|0)-(t[I>>2]|0)|0)){R=137;break A}if(B&(v|0)==112){t[y>>2]=u;break}else{H3(y,m,u,G);break}}}while(0);A=A+(B&1)|0;u=(t[L>>2]|0)+E+(t[I>>2]|0)-(t[Q>>2]|0)|0;break r}}while(0);o=o+(a&1)|0;Q1(e,0);a=t[I>>2]|0;if(a>>>0<(t[Z>>2]|0)>>>0){t[I>>2]=a+1;a=n[a>>0]|0}else a=z1(e)|0;if((a|0)!=(n[o>>0]|0)){R=22;break A}u=g+1|0}else{while(1){a=o+1|0;if(!(I1(n[a>>0]|0)|0))break;else o=a}Q1(e,0);do{a=t[I>>2]|0;if(a>>>0<(t[Z>>2]|0)>>>0){t[I>>2]=a+1;a=n[a>>0]|0}else a=z1(e)|0}while((I1(a)|0)!=0);if(!(t[Z>>2]|0))a=t[I>>2]|0;else{a=(t[I>>2]|0)+-1|0;t[I>>2]=a}u=(t[L>>2]|0)+g+a-(t[Q>>2]|0)|0}}while(0);o=o+1|0;a=i[o>>0]|0;if(!(a<<24>>24))break e;else g=u}if((R|0)==22){if(t[Z>>2]|0)t[I>>2]=(t[I>>2]|0)+-1;if((A|0)!=0|(a|0)>-1)break;else{a=0;R=136}}else if((R|0)==135){a=a&1;if(!A)R=136}else if((R|0)==137)a=a&1;if((R|0)==136)A=-1;if(a){G2(l);G2(f)}}else A=0}while(0);if(x|0)v4(e);h=J;return A|0}function J3(e,A){e=e|0;A=A|0;var r=0,i=0,a=0;i=h;h=h+16|0;r=i;t[r>>2]=t[e>>2];while(1){a=(t[r>>2]|0)+(4-1)&~(4-1);e=t[a>>2]|0;t[r>>2]=a+4;if(A>>>0>1)A=A+-1|0;else break}h=i;return e|0}function H3(e,A,r,n){e=e|0;A=A|0;r=r|0;n=n|0;e:do{if(e|0)switch(A|0){case-2:{i[e>>0]=r;break e}case-1:{a[e>>1]=r;break e}case 0:{t[e>>2]=r;break e}case 1:{t[e>>2]=r;break e}case 3:{A=e;t[A>>2]=r;t[A+4>>2]=n;break e}default:break e}}while(0);return}function P3(e){e=e|0;if(!e)e=1;else e=(t[e>>2]|0)==0&1;return e|0}function X3(e,A,r){e=e|0;A=A|0;r=r|0;var a=0.0,f=0,l=0,s=0,c=0,o=0,u=0,b=0,h=0;switch(A|0){case 0:{o=-149;u=24;s=4;break}case 1:{o=-1074;u=53;s=4;break}case 2:{o=-1074;u=53;s=4;break}default:a=0.0}e:do{if((s|0)==4){h=e+4|0;b=e+100|0;do{A=t[h>>2]|0;if(A>>>0<(t[b>>2]|0)>>>0){t[h>>2]=A+1;A=n[A>>0]|0}else A=z1(e)|0}while((I1(A)|0)!=0);A:do{switch(A|0){case 43:case 45:{l=1-(((A|0)==45&1)<<1)|0;A=t[h>>2]|0;if(A>>>0<(t[b>>2]|0)>>>0){t[h>>2]=A+1;f=n[A>>0]|0;break A}else{f=z1(e)|0;break A}}default:{f=A;l=1}}}while(0);A=0;do{if((f|32|0)!=(i[153584+A>>0]|0))break;do{if(A>>>0<7){f=t[h>>2]|0;if(f>>>0<(t[b>>2]|0)>>>0){t[h>>2]=f+1;f=n[f>>0]|0;break}else{f=z1(e)|0;break}}}while(0);A=A+1|0}while(A>>>0<8);A:do{switch(A|0){case 8:break;case 3:{s=23;break}default:{c=(r|0)!=0;if(c&A>>>0>3)if((A|0)==8)break A;else{s=23;break A}r:do{if(!A){A=0;do{if((f|32|0)!=(i[153593+A>>0]|0))break r;do{if(A>>>0<2){f=t[h>>2]|0;if(f>>>0<(t[b>>2]|0)>>>0){t[h>>2]=f+1;f=n[f>>0]|0;break}else{f=z1(e)|0;break}}}while(0);A=A+1|0}while(A>>>0<3)}}while(0);switch(A|0){case 3:{A=t[h>>2]|0;if(A>>>0<(t[b>>2]|0)>>>0){t[h>>2]=A+1;A=n[A>>0]|0}else A=z1(e)|0;if((A|0)==40)A=1;else{if(!(t[b>>2]|0)){a=p;break e}t[h>>2]=(t[h>>2]|0)+-1;a=p;break e}while(1){f=t[h>>2]|0;if(f>>>0<(t[b>>2]|0)>>>0){t[h>>2]=f+1;f=n[f>>0]|0}else f=z1(e)|0;if(!((f+-48|0)>>>0<10|(f+-65|0)>>>0<26)?!((f|0)==95|(f+-97|0)>>>0<26):0)break;A=A+1|0}if((f|0)==41){a=p;break e}f=(t[b>>2]|0)==0;if(!f)t[h>>2]=(t[h>>2]|0)+-1;if(!c){t[(R2()|0)>>2]=22;Q1(e,0);a=0.0;break e}if(!A){a=p;break e}while(1){A=A+-1|0;if(!f)t[h>>2]=(t[h>>2]|0)+-1;if(!A){a=p;break e}}}case 0:{if((f|0)==48){A=t[h>>2]|0;if(A>>>0<(t[b>>2]|0)>>>0){t[h>>2]=A+1;A=n[A>>0]|0}else A=z1(e)|0;if((A|32|0)==120){a=+S3(e,u,o,l,r);break e}if(!(t[b>>2]|0))A=48;else{t[h>>2]=(t[h>>2]|0)+-1;A=48}}else A=f;a=+j3(e,A,u,o,l,r);break e}default:{if(t[b>>2]|0)t[h>>2]=(t[h>>2]|0)+-1;t[(R2()|0)>>2]=22;Q1(e,0);a=0.0;break e}}}}}while(0);if((s|0)==23){f=(t[b>>2]|0)==0;if(!f)t[h>>2]=(t[h>>2]|0)+-1;if((r|0)!=0&A>>>0>3)do{if(!f)t[h>>2]=(t[h>>2]|0)+-1;A=A+-1|0}while(A>>>0>3)}a=+(l|0)*E}}while(0);return+a}function S3(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;var f=0.0,l=0,s=0,c=0.0,o=0,u=0,b=0,h=0.0,w=0,k=0,d=0,v=0,g=0,m=0,p=0,E=0,B=0,y=0;y=e+4|0;l=t[y>>2]|0;B=e+100|0;if(l>>>0<(t[B>>2]|0)>>>0){t[y>>2]=l+1;s=n[l>>0]|0;o=0}else{s=z1(e)|0;o=0}e:while(1){switch(s|0){case 46:{E=8;break e}case 48:break;default:{v=0;b=0;h=1.0;f=0.0;l=0;u=s;g=o;p=0;m=0;o=0;s=0;break e}}l=t[y>>2]|0;if(l>>>0<(t[B>>2]|0)>>>0){t[y>>2]=l+1;s=n[l>>0]|0;o=1;continue}else{s=z1(e)|0;o=1;continue}}if((E|0)==8){l=t[y>>2]|0;if(l>>>0<(t[B>>2]|0)>>>0){t[y>>2]=l+1;s=n[l>>0]|0}else s=z1(e)|0;if((s|0)==48){o=0;s=0;do{l=t[y>>2]|0;if(l>>>0<(t[B>>2]|0)>>>0){t[y>>2]=l+1;u=n[l>>0]|0}else u=z1(e)|0;o=d6(o|0,s|0,-1,-1)|0;s=G}while((u|0)==48);v=1;b=0;h=1.0;f=0.0;l=0;g=1;p=0;m=0}else{v=1;b=0;h=1.0;f=0.0;l=0;u=s;g=o;p=0;m=0;o=0;s=0}}while(1){k=u+-48|0;w=u|32;if(k>>>0>=10){d=(u|0)==46;if(!(d|(w+-97|0)>>>0<6))break;if(d)if(!v){v=1;c=h;d=g;o=m;s=p;k=m;w=p}else{u=46;break}else E=20}else E=20;if((E|0)==20){E=0;u=(u|0)>57?w+-87|0:k;do{if(!((p|0)<0|(p|0)==0&m>>>0<8))if((p|0)<0|(p|0)==0&m>>>0<14){h=h*.0625;c=h;f=f+h*+(u|0);break}else{g=(b|0)!=0|(u|0)==0;b=g?b:1;c=h;f=g?f:f+h*.5;break}else{c=h;l=u+(l<<4)|0}}while(0);k=d6(m|0,p|0,1,0)|0;d=1;w=G}u=t[y>>2]|0;if(u>>>0<(t[B>>2]|0)>>>0){t[y>>2]=u+1;h=c;u=n[u>>0]|0;g=d;p=w;m=k;continue}else{h=c;u=z1(e)|0;g=d;p=w;m=k;continue}}do{if(!g){l=(t[B>>2]|0)==0;if(!l)t[y>>2]=(t[y>>2]|0)+-1;if(a){if(!l)t[y>>2]=(t[y>>2]|0)+-1;if(!((v|0)==0|l))t[y>>2]=(t[y>>2]|0)+-1}else Q1(e,0);f=+(i|0)*0.0}else{w=(v|0)==0;k=w?m:o;w=w?p:s;if((p|0)<0|(p|0)==0&m>>>0<8){o=m;s=p;while(1){l=l<<4;E=o;o=d6(o|0,s|0,1,0)|0;if(!((s|0)<0|(s|0)==0&E>>>0<7)){b=l;break}else s=G}}else b=l;if((u|32|0)==112){s=U3(e,a)|0;l=G;if((s|0)==0&(l|0)==-2147483648){if(!a){Q1(e,0);f=0.0;break}if(!(t[B>>2]|0)){s=0;l=0}else{t[y>>2]=(t[y>>2]|0)+-1;s=0;l=0}}}else if(!(t[B>>2]|0)){s=0;l=0}else{t[y>>2]=(t[y>>2]|0)+-1;s=0;l=0}o=C6(k|0,w|0,2)|0;o=d6(o|0,G|0,-32,-1)|0;o=d6(o|0,G|0,s|0,l|0)|0;l=G;if(!b){f=+(i|0)*0.0;break}y=0-r|0;a=((y|0)<0)<<31>>31;if((l|0)>(a|0)|(l|0)==(a|0)&o>>>0>y>>>0){t[(R2()|0)>>2]=34;f=+(i|0)*1797693134862315708145274.0e284*1797693134862315708145274.0e284;break}y=r+-106|0;a=((y|0)<0)<<31>>31;if((l|0)<(a|0)|(l|0)==(a|0)&o>>>0>>0){t[(R2()|0)>>2]=34;f=+(i|0)*2.2250738585072014e-308*2.2250738585072014e-308;break}if((b|0)>-1){s=b;do{y=!(f>=.5);s=s<<1|(y^1)&1;f=f+(y?f:f+-1.0);o=d6(o|0,l|0,-1,-1)|0;l=G}while((s|0)>-1);h=f;u=s}else{h=f;u=b}y=((A|0)<0)<<31>>31;r=v6(32,0,r|0,((r|0)<0)<<31>>31|0)|0;l=d6(r|0,G|0,o|0,l|0)|0;r=G;if((r|0)<(y|0)|(r|0)==(y|0)&l>>>0>>0)if((l|0)>0)E=59;else{s=0;l=84;E=61}else{l=A;E=59}if((E|0)==59)if((l|0)<53){s=l;l=84-l|0;E=61}else{c=0.0;f=+(i|0)}if((E|0)==61){f=+(i|0);c=+h1(+o1(1.0,l),f);l=s}i=(u&1|0)==0&(h!=0.0&(l|0)<32);f=(i?0.0:h)*f+(c+f*+((u+(i&1)|0)>>>0))-c;if(!(f!=0.0))t[(R2()|0)>>2]=34;f=+w1(f,o)}}while(0);return+f}function j3(e,A,r,i,a,f){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;f=f|0;var l=0.0,s=0.0,c=0,o=0,u=0,b=0,w=0,k=0,d=0.0,v=0.0,g=0.0,m=0,p=0,E=0,B=0,y=0,C=0,I=0,Z=0,L=0,D=0,z=0,W=0,Y=0,F=0,M=0.0;F=h;h=h+512|0;z=F;W=i+r|0;Y=0-W|0;Z=e+4|0;L=e+100|0;c=0;e:while(1){switch(A|0){case 46:{C=6;break e}case 48:break;default:{p=0;w=c;k=0;b=0;break e}}A=t[Z>>2]|0;if(A>>>0<(t[L>>2]|0)>>>0){t[Z>>2]=A+1;A=n[A>>0]|0;c=1;continue}else{A=z1(e)|0;c=1;continue}}if((C|0)==6){A=t[Z>>2]|0;if(A>>>0<(t[L>>2]|0)>>>0){t[Z>>2]=A+1;A=n[A>>0]|0}else A=z1(e)|0;if((A|0)==48){c=0;A=0;while(1){c=d6(c|0,A|0,-1,-1)|0;b=G;A=t[Z>>2]|0;if(A>>>0<(t[L>>2]|0)>>>0){t[Z>>2]=A+1;A=n[A>>0]|0}else A=z1(e)|0;if((A|0)==48)A=b;else{p=1;w=1;k=c;break}}}else{p=1;w=c;k=0;b=0}}t[z>>2]=0;u=A+-48|0;o=(A|0)==46;e:do{if(o|u>>>0<10){I=z+496|0;E=0;c=0;m=0;B=p;y=w;C=u;w=0;u=0;A:while(1){do{if(o)if(!B){B=1;k=w;b=u}else break A;else{w=d6(w|0,u|0,1,0)|0;u=G;p=(A|0)!=48;if((c|0)>=125){if(!p)break;t[I>>2]=t[I>>2]|1;break}o=z+(c<<2)|0;if(!E)A=C;else A=A+-48+((t[o>>2]|0)*10|0)|0;t[o>>2]=A;E=E+1|0;y=(E|0)==9;E=y?0:E;c=c+(y&1)|0;m=p?w:m;y=1}}while(0);A=t[Z>>2]|0;if(A>>>0<(t[L>>2]|0)>>>0){t[Z>>2]=A+1;A=n[A>>0]|0}else A=z1(e)|0;C=A+-48|0;o=(A|0)==46;if(!(o|C>>>0<10)){p=B;o=y;C=29;break e}}A=E;o=(y|0)!=0;C=37}else{E=0;c=0;m=0;o=w;w=0;u=0;C=29}}while(0);do{if((C|0)==29){I=(p|0)==0;k=I?w:k;b=I?u:b;o=(o|0)!=0;if(!(o&(A|32|0)==101))if((A|0)>-1){A=E;C=37;break}else{A=E;C=39;break}o=U3(e,f)|0;A=G;if((o|0)==0&(A|0)==-2147483648){if(!f){Q1(e,0);l=0.0;break}if(!(t[L>>2]|0)){o=0;A=0}else{t[Z>>2]=(t[Z>>2]|0)+-1;o=0;A=0}}y=d6(o|0,A|0,k|0,b|0)|0;A=E;b=G;C=41}}while(0);if((C|0)==37)if(t[L>>2]|0){t[Z>>2]=(t[Z>>2]|0)+-1;if(o){y=k;C=41}else C=40}else C=39;if((C|0)==39)if(o){y=k;C=41}else C=40;do{if((C|0)==40){t[(R2()|0)>>2]=22;Q1(e,0);l=0.0}else if((C|0)==41){o=t[z>>2]|0;if(!o){l=+(a|0)*0.0;break}if(((u|0)<0|(u|0)==0&w>>>0<10)&((y|0)==(w|0)&(b|0)==(u|0))?(r|0)>30|(o>>>r|0)==0:0){l=+(a|0)*+(o>>>0);break}e=(i|0)/-2|0;L=((e|0)<0)<<31>>31;if((b|0)>(L|0)|(b|0)==(L|0)&y>>>0>e>>>0){t[(R2()|0)>>2]=34;l=+(a|0)*1797693134862315708145274.0e284*1797693134862315708145274.0e284;break}e=i+-106|0;L=((e|0)<0)<<31>>31;if((b|0)<(L|0)|(b|0)==(L|0)&y>>>0>>0){t[(R2()|0)>>2]=34;l=+(a|0)*2.2250738585072014e-308*2.2250738585072014e-308;break}if(A){if((A|0)<9){u=z+(c<<2)|0;o=t[u>>2]|0;while(1){o=o*10|0;if((A|0)>=8)break;else A=A+1|0}t[u>>2]=o}c=c+1|0}if((m|0)<9?(m|0)<=(y|0)&(y|0)<18:0){if((y|0)==9){l=+(a|0)*+((t[z>>2]|0)>>>0);break}if((y|0)<9){l=+(a|0)*+((t[z>>2]|0)>>>0)/+(t[63712+(8-y<<2)>>2]|0);break}e=r+27+(P(y,-3)|0)|0;A=t[z>>2]|0;if((e|0)>30|(A>>>e|0)==0){l=+(a|0)*+(A>>>0)*+(t[63712+(y+-10<<2)>>2]|0);break}}A=(y|0)%9|0;if(!A){A=0;u=0}else{m=(y|0)>-1?A:A+9|0;w=t[63712+(8-m<<2)>>2]|0;if(c){k=1e9/(w|0)|0;u=0;b=0;o=y;A=0;do{Z=z+(A<<2)|0;L=t[Z>>2]|0;e=((L>>>0)/(w>>>0)|0)+u|0;t[Z>>2]=e;u=P(k,(L>>>0)%(w>>>0)|0)|0;e=(A|0)==(b|0)&(e|0)==0;o=e?o+-9|0:o;b=e?b+1&127:b;A=A+1|0}while((A|0)!=(c|0));if(!u)u=b;else{t[z+(c<<2)>>2]=u;u=b;c=c+1|0}}else{u=0;c=0;o=y}A=0;y=9-m+o|0}e:while(1){m=(y|0)<18;p=(y|0)==18;E=z+(u<<2)|0;while(1){if(!m){if(!p){o=y;break e}if((t[E>>2]|0)>>>0>=9007199){o=18;break e}}o=0;B=c;c=c+127|0;while(1){b=c&127;w=z+(b<<2)|0;c=C6(t[w>>2]|0,0,29)|0;c=d6(c|0,G|0,o|0,0)|0;o=G;if(o>>>0>0|(o|0)==0&c>>>0>1e9){k=p6(c|0,o|0,1e9,0)|0;c=E6(c|0,o|0,1e9,0)|0}else k=0;t[w>>2]=c;e=(b|0)==(u|0);B=(c|0)==0&(((b|0)!=(B+127&127|0)|e)^1)?b:B;if(e)break;else{o=k;c=b+-1|0}}A=A+-29|0;if(k|0)break;else c=B}u=u+127&127;c=B+127&127;o=z+((B+126&127)<<2)|0;if((u|0)==(B|0))t[o>>2]=t[o>>2]|t[z+(c<<2)>>2];else c=B;t[z+(u<<2)>>2]=k;y=y+9|0}e:while(1){E=c+1&127;B=z+((c+127&127)<<2)|0;while(1){k=(o|0)==18;p=(o|0)>27?9:1;y=u;while(1){w=0;while(1){u=w+y&127;if((u|0)==(c|0)){D=2;C=88;break}u=t[z+(u<<2)>>2]|0;b=t[63744+(w<<2)>>2]|0;if(u>>>0>>0){D=2;C=88;break}if(u>>>0>b>>>0)break;u=w+1|0;if((w|0)<1)w=u;else{D=u;C=88;break}}if((C|0)==88?(C=0,k&(D|0)==2):0){l=0.0;b=0;break e}A=p+A|0;if((y|0)==(c|0))y=c;else break}k=(1<>>p;w=0;u=y;b=y;do{Z=z+(b<<2)|0;L=t[Z>>2]|0;e=(L>>>p)+w|0;t[Z>>2]=e;w=P(L&k,m)|0;e=(b|0)==(u|0)&(e|0)==0;o=e?o+-9|0:o;u=e?u+1&127:u;b=b+1&127}while((b|0)!=(c|0));if(!w)continue;if((E|0)!=(u|0))break;t[B>>2]=t[B>>2]|1}t[z+(c<<2)>>2]=w;c=E}do{u=b+y&127;o=c+1&127;if((u|0)==(c|0)){t[z+(o+-1<<2)>>2]=0;c=o}l=l*1.0e9+ +((t[z+(u<<2)>>2]|0)>>>0);b=b+1|0}while((b|0)!=2);g=+(a|0);s=l*g;b=A+53|0;w=b-i|0;k=(w|0)<(r|0);u=k?(w|0)>0?w:0:r;if((u|0)<53){M=+h1(+o1(1.0,105-u|0),s);d=+k1(s,+o1(1.0,53-u|0));v=M;l=d;d=M+(s-d)}else{v=0.0;l=0.0;d=s}o=y+2&127;if((o|0)!=(c|0)){o=t[z+(o<<2)>>2]|0;do{if(o>>>0>=5e8){if((o|0)!=5e8){l=g*.75+l;break}if((y+3&127|0)==(c|0)){l=g*.5+l;break}else{l=g*.75+l;break}}else{if((o|0)==0?(y+3&127|0)==(c|0):0)break;l=g*.25+l}}while(0);if((53-u|0)>1?!(+k1(l,1.0)!=0.0):0)s=l+1.0;else s=l}else s=l;l=d+s-v;do{if((b&2147483647|0)>(-2-W|0)){W=!(+Q(+l)>=9007199254740992.0);A=A+((W^1)&1)|0;l=W?l:l*.5;if((A+50|0)<=(Y|0)?!(s!=0.0&(k&((u|0)!=(w|0)|W))):0)break;t[(R2()|0)>>2]=34}}while(0);l=+w1(l,A)}}while(0);h=F;return+l}function U3(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,f=0,l=0;f=e+4|0;r=t[f>>2]|0;l=e+100|0;if(r>>>0<(t[l>>2]|0)>>>0){t[f>>2]=r+1;r=n[r>>0]|0}else r=z1(e)|0;switch(r|0){case 43:case 45:{i=(r|0)==45&1;r=t[f>>2]|0;if(r>>>0<(t[l>>2]|0)>>>0){t[f>>2]=r+1;r=n[r>>0]|0}else r=z1(e)|0;if((A|0)!=0&(r+-48|0)>>>0>9?(t[l>>2]|0)!=0:0)t[f>>2]=(t[f>>2]|0)+-1;break}default:i=0}if((r+-48|0)>>>0>9)if(!(t[l>>2]|0)){i=-2147483648;r=0}else{t[f>>2]=(t[f>>2]|0)+-1;i=-2147483648;r=0}else{a=0;do{a=r+-48+(a*10|0)|0;r=t[f>>2]|0;if(r>>>0<(t[l>>2]|0)>>>0){t[f>>2]=r+1;r=n[r>>0]|0}else r=z1(e)|0}while((r+-48|0)>>>0<10&(a|0)<214748364);A=((a|0)<0)<<31>>31;if((r+-48|0)>>>0<10)do{A=k6(a|0,A|0,10,0)|0;a=G;r=d6(r|0,((r|0)<0)<<31>>31|0,-48,-1)|0;a=d6(r|0,G|0,A|0,a|0)|0;A=G;r=t[f>>2]|0;if(r>>>0<(t[l>>2]|0)>>>0){t[f>>2]=r+1;r=n[r>>0]|0}else r=z1(e)|0}while((r+-48|0)>>>0<10&((A|0)<21474836|(A|0)==21474836&a>>>0<2061584302));if((r+-48|0)>>>0<10)do{r=t[f>>2]|0;if(r>>>0<(t[l>>2]|0)>>>0){t[f>>2]=r+1;r=n[r>>0]|0}else r=z1(e)|0}while((r+-48|0)>>>0<10);if(t[l>>2]|0)t[f>>2]=(t[f>>2]|0)+-1;l=(i|0)!=0;r=v6(0,0,a|0,A|0)|0;i=l?G:A;r=l?r:a}G=i;return r|0}function T3(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0,n=0,f=0;i=e+84|0;n=t[i>>2]|0;f=r+256|0;a=G1(n,0,f)|0;a=(a|0)==0?f:a-n|0;r=a>>>0>>0?a:r;Q6(A|0,n|0,r|0)|0;t[e+4>>2]=n+r;A=n+a|0;t[e+8>>2]=A;t[i>>2]=A;return r|0}function O3(e,A,r){e=e|0;A=A|0;r=r|0;return _3(e,A,r)|0}function _3(e,A,r){e=e|0;A=A|0;r=r|0;var i=0;if((t[e+76>>2]|0)>-1){i=(d4(e)|0)==0;A=q3(e,A,r)|0;if(!i)v4(e)}else A=q3(e,A,r)|0;return A|0}function q3(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0;if((r|0)==1)A=A-(t[e+8>>2]|0)+(t[e+4>>2]|0)|0;i=e+20|0;a=e+28|0;if((t[i>>2]|0)>>>0>(t[a>>2]|0)>>>0?(L5[t[e+36>>2]&63](e,0,0)|0,(t[i>>2]|0)==0):0)A=-1;else{t[e+16>>2]=0;t[a>>2]=0;t[i>>2]=0;if((L5[t[e+40>>2]&63](e,A,r)|0)<0)A=-1;else{t[e+8>>2]=0;t[e+4>>2]=0;t[e>>2]=t[e>>2]&-17;A=0}}return A|0}function K3(e){e=e|0;var A=0,r=0,a=0,t=0,n=0,f=0;while(1){a=i[e>>0]|0;A=a<<24>>24;t=e+1|0;if(!(I1(A)|0))break;else e=t}switch(A|0){case 45:{e=1;n=5;break}case 43:{e=0;n=5;break}default:{f=0;r=e;e=a}}if((n|0)==5){f=e;r=t;e=i[t>>0]|0}A=(e<<24>>24)+-48|0;if(A>>>0<10){e=0;do{r=r+1|0;e=(e*10|0)-A|0;A=(i[r>>0]|0)+-48|0}while(A>>>0<10)}else e=0;return(f|0?e:0-e|0)|0}function $3(e){e=e|0;return+ +e8(e,0)}function e8(e,A){e=e|0;A=A|0;return+ +A8(e,A,1)}function A8(e,A,r){e=e|0;A=A|0;r=r|0;var i=0.0,a=0,n=0,f=0,l=0;l=h;h=h+128|0;f=l;a=f;n=a+124|0;do{t[a>>2]=0;a=a+4|0}while((a|0)<(n|0));a=f+4|0;t[a>>2]=e;n=f+8|0;t[n>>2]=-1;t[f+44>>2]=e;t[f+76>>2]=-1;Q1(f,0);i=+X3(f,r,1);r=(t[a>>2]|0)-(t[n>>2]|0)+(t[f+108>>2]|0)|0;if(A|0)t[A>>2]=r|0?e+r|0:e;h=l;return+i}function r8(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;var t=0,n=0,f=0;e:do{if(!r)A=0;else{f=A;while(1){n=r>>>1;A=f+(P(n,i)|0)|0;t=Z5[a&127](e,A)|0;if(!t)break e;if((r|0)==1){A=0;break e}t=(t|0)<0;r=t?n:r-n|0;if(!r){A=0;break}else f=t?f:A}}}while(0);return A|0}function i8(e,A){e=e|0;A=A|0;var r=0,i=0,t=0;t=e+2|0;i=e+4|0;r=k6((f[A+2>>1]|0)<<16|(f[A>>1]|0)|0,f[A+4>>1]|0|0,(f[t>>1]|0)<<16|(f[e>>1]|0)|0,f[i>>1]|0|0)|0;A=d6(r|0,G|0,f[A+6>>1]|0|0,0)|0;r=G;a[e>>1]=A;e=y6(A|0,r|0,16)|0;a[t>>1]=e;a[i>>1]=r;G=r&65535;return A|0}function a8(e){e=e|0;var A=0;A=186608;t[A>>2]=e+-1;t[A+4>>2]=0;return}function t8(){var e=0,A=0,r=0;A=186608;A=k6(t[A>>2]|0,t[A+4>>2]|0,1284865837,1481765933)|0;A=d6(A|0,G|0,1,0)|0;e=G;r=186608;t[r>>2]=A;t[r+4>>2]=e;e=y6(A|0,e|0,33)|0;return e|0}function n8(e){e=e|0;a[96876]=a[32922]|0;a[96877]=a[32923]|0;a[96878]=a[32924]|0;a[32922]=a[e>>1]|0;a[32923]=a[e+2>>1]|0;a[32924]=a[e+4>>1]|0;return 193752}function f8(e){e=e|0;var A=0,r=0;A=h;h=h+16|0;r=A;a[r>>1]=13070;a[r+2>>1]=e;a[r+4>>1]=e>>>16;n8(r)|0;h=A;return}function l8(e){e=e|0;var A=0;A=i8(e,65850)|0;A=C6(A|0,G|0,4)|0;e=G|1072693248;t[u>>2]=A;t[u+4>>2]=e;return+(+c[u>>3]+-1.0)}function s8(){return+ +l8(65844)}function c8(e,A){e=e|0;A=A|0;if(!e)A=L2(1,24)|0;else{t[A>>2]=0;t[A+4>>2]=0;t[A+8>>2]=0;t[A+12>>2]=0;t[A+16>>2]=0;t[A+20>>2]=0}return A|0}function o8(e){e=e|0;var A=0,r=0;A=t[e>>2]|0;if(A|0)do{G2(t[A>>2]|0);r=A;A=t[A+4>>2]|0;G2(r)}while((A|0)!=0);G2(e);return}function u8(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;var n=0,f=0,l=0,s=0,c=0;f=e+16|0;e:do{if(!(t[f>>2]|0)){c=e+12|0;n=t[c>>2]|0;if(n>>>0>>0){do{if(A)if(!r){t[f>>2]=1;A=0;break e}else{f=e+8|0;t[f>>2]=r;n=1024;A=r;break}else{n=a<<3;n=n>>>0>1024?n:1024;s=Z2(8)|0;if(!s){t[f>>2]=1;A=0;break e}A=Z2(n)|0;t[s>>2]=A;r=A;if(!A){G2(s);t[f>>2]=1;A=0;break e}t[s+4>>2]=0;f=e+4|0;l=t[f>>2]|0;if(l|0)t[l+4>>2]=s;if(!(t[e>>2]|0))t[e>>2]=s;t[f>>2]=s;f=e+8|0;t[f>>2]=r}}while(0);t[c>>2]=n}else{f=e+8|0;A=t[f>>2]|0;r=A}r=r+a&3;r=((r|0)==0?0:4-r|0)+a|0;t[f>>2]=A+r;t[c>>2]=n-r;if(i)z6(A|0,0,r|0)|0}else A=0}while(0);return A|0}function b8(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0,n=0,f=0,l=0,s=0,c=0,o=0,u=0,b=0,w=0,k=0,d=0,v=0,g=0,m=0,p=0,E=0;p=h;h=h+48|0;l=p;g=h8()|0;e:do{if(!g)A=12;else{m=c8(0,0)|0;if(!m){w8(g);A=12;break}i=l+8|0;t[i>>2]=0;t[i+4>>2]=0;t[i+8>>2]=0;t[i+12>>2]=0;t[i+16>>2]=0;t[l>>2]=m;t[l+4>>2]=g;t[l+16>>2]=A;t[l+32>>2]=r;i=l+28|0;t[i>>2]=-1;A=k8(l)|0;A:do{if(!A){f=l+20|0;a=t[f>>2]|0;t[e>>2]=a+-1;s=t[l+8>>2]|0;A=t[i>>2]|0;if((A|0)<(a|0)){n=L2(1,68)|0;if(n){d=A>>>31^1;t[n+60>>2]=d;t[n+28>>2]=a;if((r&8|0)==0|(d|0)!=0){A=d8(0,g,s,n)|0;if(A|0){f=0;l=0;a=0;i=0;break}a=t[n+40>>2]|0;if((a|0)>0){A=(a<<2)+4|0;i=Z2(A)|0;if(!i){f=0;l=0;A=12;a=0;i=0;break}t[n+32>>2]=i;z6(i|0,-1,A|0)|0}else i=0;d=L2(a<<1|1,4)|0;t[n+36>>2]=d;if(!d){f=0;l=0;A=12;a=0;i=0;break}A=L2(t[f>>2]|0,12)|0;if(!A){f=0;l=0;A=12;a=0;i=0;break}t[n+16>>2]=A;A=d8(m,g,s,n)|0;if(!A)A=i;else{f=0;l=0;a=0;i=0;break}}else A=0;d=l+24|0;A=v8(m,g,s,d,A)|0;if(!A){A=t[d>>2]|0;t[d>>2]=A+1;A=g8(m,0,0,A)|0;if((A|0)!=0?(v=m8(m,s,A)|0,(v|0)!=0):0){A=p8(m,g,v)|0;if(!A){i=t[d>>2]|0;A=i<<2;w=Z2(A)|0;if(w){k=Z2(A)|0;if(k){if((i|0)>0)z6(w|0,0,i<<2|0)|0;E8(v,0,w,0)|0;a=t[d>>2]|0;if((a|0)>0){A=0;i=0;do{t[k+(i<<2)>>2]=A;b=w+(i<<2)|0;A=A+1+(t[b>>2]|0)|0;t[b>>2]=0;i=i+1|0}while((i|0)<(a|0));o=A}else o=0;u=L2(o+1|0,32)|0;if(u){t[n>>2]=u;b=n+4|0;t[b>>2]=o;A=E8(v,u,w,k)|0;if(!A){t[n+20>>2]=0;a=v+24|0;A=t[a>>2]|0;i=0;while(1){i=i+1|0;if((t[A>>2]|0)<=-1)break;else A=A+32|0}c=L2(i,32)|0;if(!c){f=w;l=k;A=12;a=w;i=k}else{t[n+8>>2]=c;i=t[a>>2]|0;a=t[i>>2]|0;if((a|0)>-1){A=0;do{t[c+(A<<5)+8>>2]=u+(t[k+(a<<2)>>2]<<5);t[c+(A<<5)+12>>2]=a;l=c+(A<<5)+16|0;t[l>>2]=0;s=i+12|0;f=t[s>>2]|0;if(f|0){a=0;do{E=a;a=a+1|0}while((t[f+(E<<2)>>2]|0)>-1);a=a<<2;f=Z2(a)|0;t[l>>2]=f;if(!f){f=w;l=k;A=12;a=w;i=k;break A}Q6(f|0,t[s>>2]|0,a|0)|0}t[c+(A<<5)+20>>2]=t[i+16>>2];A=A+1|0;i=i+32|0;a=t[i>>2]|0}while((a|0)>-1)}else A=0;t[c+(A<<5)+8>>2]=0;t[b>>2]=o;t[n+12>>2]=u+(t[k+(t[t[v+28>>2]>>2]<<2)>>2]<<5);t[n+52>>2]=t[d>>2];t[n+56>>2]=r;o8(m);w8(g);G2(w);G2(k);t[e+4>>2]=n;A=0;break e}}else{f=w;l=k;a=w;i=k}}else{f=w;l=k;A=12;a=w;i=k}}else{f=w;l=k;A=12;a=w;i=0}}else{f=w;l=0;A=12;a=0;i=0}}else{f=0;l=0;a=0;i=0}}else{f=0;l=0;A=12;a=0;i=0}}else{f=0;l=0;a=0;i=0}}else{f=0;l=0;A=12;a=0;i=0}}else{n=0;f=0;l=0;A=6;a=0;i=0}}else{n=0;f=0;l=0;a=0;i=0}}while(0);o8(m);w8(g);if(f|0)G2(a);if(l|0)G2(i);t[e+4>>2]=n;B8(e)}}while(0);h=p;return A|0}function h8(){var e=0,A=0;e=Z2(20)|0;do{if(e){A=Z2(2048)|0;t[e+16>>2]=A;if(!A){G2(e);e=0;break}else{t[e>>2]=512;t[e+4>>2]=1024e3;t[e+8>>2]=128;t[e+12>>2]=0;break}}}while(0);return e|0}function w8(e){e=e|0;G2(t[e+16>>2]|0);G2(e);return}function k8(e){e=e|0;var A=0,r=0,a=0,n=0,f=0,l=0,s=0,c=0,o=0,u=0,b=0,w=0,k=0,d=0,v=0,g=0,m=0;m=h;h=h+16|0;w=m+4|0;k=m;d=t[e+32>>2]&1;v=e+16|0;r=t[v>>2]|0;g=t[e+4>>2]|0;A=Z8(g,0)|0;e:do{if(!A){o=(d|0)!=0;u=e+8|0;b=e+12|0;A=0;c=1;A:while(1){n=0;f=A;a=0;r:while(1){A=i[r>>0]|0;if(o){if(A<<24>>24==40)break;if((f|0)!=0&A<<24>>24==41)s=13;else s=14}else if(A<<24>>24==92)switch(i[r+1>>0]|0){case 40:break r;case 41:{s=13;break}default:s=14}else s=14;if((s|0)==13){s=0;l=g8(t[e>>2]|0,-1,-1,-1)|0;t[u>>2]=l;if(!l){A=12;break e}else l=a}else if((s|0)==14){s=0;A=H8(e,r)|0;if(A|0)break e;l=a;r=t[b>>2]|0}i:while(1){a:while(1){A=i[r>>0]|0;switch(A<<24>>24){case 42:case 92:break;default:{if(!o)break a;switch(A<<24>>24){case 123:case 63:case 43:break;default:break a}}}A=A<<24>>24==92;if(o&A)break;a=r+1|0;if(A)switch(i[a>>0]|0){case 123:case 63:case 43:break;default:break a}r=A?a:r;if((!o?(r|0)==((t[v>>2]|0)+1|0):0)?(i[r+-1>>0]|0)==94:0)break;if((i[r>>0]|0)==123){r=P8(r+1|0,d,w,k)|0;if(!r){s=28;break A}A=t[k>>2]|0;a=t[e>>2]|0;if(!A)A=g8(a,-1,-1,-1)|0;else s=36}else{t[w>>2]=0;t[k>>2]=-1;A=i[r>>0]|0;if(A<<24>>24==43){t[w>>2]=1;A=i[r>>0]|0}if(A<<24>>24==63){t[k>>2]=1;A=1}else A=-1;r=r+1|0;a=t[e>>2]|0;s=36}if((s|0)==36){s=0;A=V8(a,t[u>>2]|0,t[w>>2]|0,A,0)|0}t[u>>2]=A;if(!A){A=12;break e}}A=m8(t[e>>2]|0,n,t[u>>2]|0)|0;a=i[r>>0]|0;a:do{if(o){if(a<<24>>24==124){s=40;break i}if((f|0)!=0&a<<24>>24==41|a<<24>>24==0)s=47;else{n=A;a=l;continue r}}else{switch(a<<24>>24){case 0:{s=47;break a}case 92:break;default:{n=A;a=l;continue r}}switch(i[r+1>>0]|0){case 124:case 41:break;default:{n=A;a=l;continue r}}A=N8(t[e>>2]|0,l,A)|0;if((i[r+1>>0]|0)==124){a=2;break i}if(!f){A=8;break e}r=r+2|0;a=92}}while(0);if((s|0)==47){s=0;A=N8(t[e>>2]|0,l,A)|0;r=a<<24>>24==41?r+1|0:r}A=X8(e,A,G8(g)|0)|0;if(A|0)break e;A=a<<24>>24==0;a=(f|0)<1;if(a&A){s=50;break A}if(a|A){A=8;break e}n=L8(g)|0;f=f+-1|0;l=L8(g)|0}if((s|0)==40){a=1;A=N8(t[e>>2]|0,l,A)|0}n=0;r=r+a|0;a=A}A=I8(g,a)|0;if(A|0)break e;A=I8(g,n)|0;if(A|0)break e;A=Z8(g,c)|0;if(A|0)break e;A=f+1|0;c=c+1|0;r=o?r+1|0:r+2|0}if((s|0)==28){A=10;break}else if((s|0)==50){t[e+20>>2]=c;A=0;break}}}while(0);h=m;return A|0}function d8(e,A,r,a){e=e|0;A=A|0;r=r|0;a=a|0;var n=0,f=0,l=0,s=0,c=0,o=0,u=0,b=0,h=0,w=0,k=0,d=0,v=0,g=0,m=0,p=0,E=0,B=0,y=0,C=0,I=0;B=C8(A)|0;y=(e|0)==0|(a|0)==0;if(!y){t[a+48>>2]=0;t[t[a+36>>2]>>2]=-1}f=t[a+28>>2]|0;C=Z2((f<<3)+8|0)|0;do{if(!C)n=12;else{t[C>>2]=-1;I=Z2((f<<2)+4|0)|0;if(!I){G2(C);n=12;break}t[I>>2]=-1;n=0;while(1)if(n>>>0>f>>>0)break;else n=n+1|0;I8(A,r)|0;n=Z8(A,0)|0;e:do{if((n|0)!=0|(C8(A)|0)<=(B|0)){r=C;b=0;f=0;u=0;o=-1}else{m=a+32|0;p=a+36|0;E=a+16|0;r=C;b=0;f=0;u=0;g=1;o=-1;v=0;while(1){A:do{switch(G8(A)|0){case 6:{l=G8(A)|0;n=0;do{s=r+(n<<2)|0;n=n+1|0}while((t[s>>2]|0)>-1);t[s>>2]=l<<1|1;t[r+(n<<2)>>2]=-1;n=0;while(1)if((t[I+(n<<2)>>2]|0)>-1)n=n+1|0;else break;t[I+(n+-1<<2)>>2]=-1;n=0;s=g;l=v;break}case 0:{k=L8(A)|0;d=k+12|0;s=t[d>>2]|0;if((s|0)>-1){n=0;do{l=r+(n<<2)|0;n=n+1|0}while((t[l>>2]|0)>-1);t[l>>2]=s<<1;t[r+(n<<2)>>2]=-1;if(!y){n=0;while(1)if((t[I+(n<<2)>>2]|0)>-1)n=n+1|0;else break;l=(t[E>>2]|0)+(s*12|0)+8|0;t[l>>2]=0;if((n|0)>0){n=Z2((n<<2)+4|0)|0;if(!n){n=12;s=g;l=v;break A}t[l>>2]=n;l=t[I>>2]|0;if((l|0)>-1){c=0;s=n;do{t[s>>2]=l;c=c+1|0;l=t[I+(c<<2)>>2]|0;s=n+(c<<2)|0}while((l|0)>-1);n=s}t[n>>2]=-1}}n=Z8(A,t[d>>2]|0)|0;if(n|0){s=g;l=v;break A}n=Z8(A,6)|0;if(n|0){s=g;l=v;break A}}r:do{switch(t[k>>2]|0){case 0:{w=t[t[k+4>>2]>>2]|0;if((w|0)>-1|(w|0)==-4?(t[r>>2]|0)>-1:0){if(y){t[k+20>>2]=1;n=0}else{n=R8(e,k,u)|0;t[(t[m>>2]|0)+(u<<2)>>2]=v;if((o|0)>-1){s=t[p>>2]|0;l=0;while(1){c=s+(l<<2)|0;h=l+1|0;if((t[c>>2]|0)>-1)l=h;else break}t[c>>2]=u;t[s+(h<<2)>>2]=o;t[s+(l+2<<2)>>2]=-1;f=f+1|0;o=-1}x8(r,a,u)}t[r>>2]=-1;w=g+1|0;h=v;b=b+1|0;u=g}else{w=g;n=0;h=v}break}case 1:{s=t[k+4>>2]|0;c=t[s>>2]|0;s=t[s+4>>2]|0;n=I8(A,k)|0;if(!n){n=Z8(A,5)|0;if(!n){n=I8(A,s)|0;if(!n){n=Z8(A,0)|0;if(!n){l=c+20|0;n=Z8(A,(t[l>>2]|0)+g|0)|0;if(!n){if((t[l>>2]|0)>0){l=(t[s+20>>2]|0)>0;n=l?g:-1;l=g+(l&1)|0}else{n=-1;l=g}n=Z8(A,n)|0;if(!n){n=Z8(A,4)|0;if(!n){n=I8(A,c)|0;if(!n){w=l;n=Z8(A,0)|0;h=v}else{w=l;h=v}}else{w=l;h=v}}else{w=l;h=v}}else{w=g;h=v}}else{w=g;h=v}}else{w=g;h=v}}else{w=g;h=v}}else{w=g;h=v}break}case 2:{l=t[k+4>>2]|0;if(y){if((t[r>>2]|0)>-1)n=1;else n=(i[l+12>>0]&1)!=0;n=Z8(A,n&1)|0;if(n|0){w=g;h=v;break r}}else{n=Z8(A,u)|0;if(n|0){w=g;h=v;break r}n=Z8(A,i[l+12>>0]&1)|0;if(n|0){w=g;h=v;break r}}n=I8(A,k)|0;if(!n){n=Z8(A,1)|0;if(!n){n=I8(A,t[l>>2]|0)|0;if(!n){n=Z8(A,0)|0;if(!n){if((t[r>>2]|0)<=-1?(i[l+12>>0]&1)==0:0){w=g;n=0;h=0;break r}if(y)n=0;else{n=R8(e,k,u)|0;t[(t[m>>2]|0)+(u<<2)>>2]=(i[l+12>>0]&1)==0?v:1;if((o|0)>-1){s=t[p>>2]|0;l=0;while(1){c=s+(l<<2)|0;h=l+1|0;if((t[c>>2]|0)>-1)l=h;else break}t[c>>2]=u;t[s+(h<<2)>>2]=o;t[s+(l+2<<2)>>2]=-1;f=f+1|0;o=-1}x8(r,a,u)}t[r>>2]=-1;w=g+1|0;h=0;b=b+1|0;u=g}else{w=g;h=v}}else{w=g;h=v}}else{w=g;h=v}}else{w=g;h=v}break}case 3:{s=t[k+4>>2]|0;c=t[s>>2]|0;s=t[s+4>>2]|0;l=(t[r>>2]|0)>-1;w=g+1|0;n=Z8(A,l?w:g)|0;if(!n){n=Z8(A,l?g:u)|0;if(!n){n=I8(A,r)|0;if(!n){n=Z8(A,(t[r>>2]|0)>>>31^1)|0;if(!n){n=I8(A,k)|0;if(!n){n=I8(A,s)|0;if(!n){n=I8(A,c)|0;if(!n){n=Z8(A,3)|0;if(!n){n=I8(A,s)|0;if(!n){n=Z8(A,0)|0;if(!n){n=Z8(A,2)|0;if(n|0){w=g;h=v;break r}n=I8(A,c)|0;if(n|0){w=g;h=v;break r}n=Z8(A,0)|0;if(n|0){w=g;h=v;break r}if((t[r>>2]|0)>-1){if(y)n=0;else{n=R8(e,k,u)|0;t[(t[m>>2]|0)+(u<<2)>>2]=v;if((o|0)>-1){s=t[p>>2]|0;l=0;while(1){c=s+(l<<2)|0;h=l+1|0;if((t[c>>2]|0)>-1)l=h;else break}t[c>>2]=u;t[s+(h<<2)>>2]=o;t[s+(l+2<<2)>>2]=-1;f=f+1|0;o=-1}x8(r,a,u)}t[r>>2]=-1;b=b+1|0;u=g;l=w}else{n=0;l=g}g=(t[k+16>>2]|0)>0;w=g?l+2|0:l;h=v;u=g?l+1|0:u}else{w=g;h=v}}else{w=g;h=v}}else{w=g;h=v}}else{w=g;h=v}}else{w=g;h=v}}else{w=g;h=v}}else{w=g;h=v}}else{w=g;h=v}}else{w=g;h=v}}else{w=g;h=v}break}default:{w=g;n=0;h=v}}}while(0);s=t[d>>2]|0;if((s|0)>-1){l=0;do{c=I+(l<<2)|0;l=l+1|0}while((t[c>>2]|0)>-1);t[c>>2]=s;t[I+(l<<2)>>2]=-1;s=w;l=h}else{s=w;l=h}break}case 1:{n=L8(A)|0;if(y){l=t[(t[t[n+4>>2]>>2]|0)+20>>2]|0;t[n+20>>2]=(G8(A)|0)+l;l=0;o=-1}else{k=G8(A)|0;d=G8(A)|0;l=k;o=(k|0)==0?o:d}n=0;s=g;l=y?v:(l|0)==0&1;break}case 4:{l=G8(A)|0;s=G8(A)|0;n=0;u=(l|0)>-1?l:u;l=v;break}case 5:{n=L8(A)|0;if(y){s=t[n+4>>2]|0;t[n+20>>2]=(t[(t[s+4>>2]|0)+20>>2]|0)+(t[(t[s>>2]|0)+20>>2]|0);n=0;s=g;l=v}else{n=0;s=g;l=v}break}case 2:{while(1)if((t[r>>2]|0)>-1)r=r+4|0;else{n=0;s=g;l=v;break}break}case 3:{s=L8(A)|0;h=L8(A)|0;n=L8(A)|0;r=G8(A)|0;if(y){d=t[n+4>>2]|0;v=n+16|0;t[n+20>>2]=(t[(t[d>>2]|0)+20>>2]|0)+r+(t[(t[d+4>>2]|0)+20>>2]|0)+((t[v>>2]|0)>0?2:0);n=v}else n=n+16|0;r=L8(A)|0;l=G8(A)|0;c=G8(A)|0;if((t[n>>2]|0)>0){if(y)n=0;else{n=J8(e,s,l)|0;t[(t[m>>2]|0)+(l<<2)>>2]=1;if(!n)n=J8(e,h,c)|0;t[(t[m>>2]|0)+(c<<2)>>2]=1}b=b+2|0;s=g;l=1}else{n=0;s=g;l=1}break}default:{n=0;s=g;l=v}}}while(0);if((n|0)!=0|(C8(A)|0)<=(B|0))break e;else{g=s;v=l}}}}while(0);if(!y?(x8(r,a,u),(o|0)>-1):0){l=t[a+36>>2]|0;r=0;while(1){s=l+(r<<2)|0;c=r+1|0;if((t[s>>2]|0)>-1)r=c;else break}t[s>>2]=u;t[l+(c<<2)>>2]=o;t[l+(r+2<<2)>>2]=-1;f=f+1|0}t[a+48>>2]=b;t[a+40>>2]=b;t[a+44>>2]=f;G2(C);G2(I)}}while(0);return n|0}function v8(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;var n=0,f=0,l=0,s=0,c=0,o=0,u=0,b=0,w=0,k=0,d=0,v=0,g=0,m=0,p=0,E=0,B=0,y=0;y=h;h=h+16|0;g=y+12|0;B=y+8|0;m=y+4|0;p=y;E=C8(A)|0;t[g>>2]=0;t[B>>2]=0;r=I8(A,r)|0;e:do{if(!r){r=Z8(A,0)|0;if(!r){A:do{if((C8(A)|0)>(E|0)){n=0;l=0;s=0;r:while(1){k=G8(A)|0;d=L8(A)|0;i:do{switch(k|0){case 0:{switch(t[d>>2]|0){case 0:{r=t[d+4>>2]|0;d=t[r>>2]|0;if(!((d|0)>-1|(d|0)==-4)){r=s;break i}d=r+8|0;r=(t[d>>2]|0)+s|0;t[d>>2]=r;if((r|0)<=(t[B>>2]|0)){r=s;break i}t[B>>2]=r;r=s;break i}case 3:{f=t[d+4>>2]|0;r=I8(A,t[f+4>>2]|0)|0;if(r|0)break A;r=Z8(A,0)|0;if(r|0)break A;r=I8(A,t[f>>2]|0)|0;if(r|0)break A;break}case 1:{f=t[d+4>>2]|0;r=I8(A,t[f+4>>2]|0)|0;if(r|0)break A;r=Z8(A,0)|0;if(r|0)break A;r=I8(A,t[f>>2]|0)|0;if(r|0)break A;break}case 2:{f=t[d+4>>2]|0;r=Z8(A,s)|0;if(r|0)break A;r=I8(A,d)|0;if(r|0)break A;r=Z8(A,1)|0;if(r|0)break A;r=I8(A,t[f>>2]|0)|0;if(r|0)break A;r=Z8(A,0)|0;if(r|0)break A;if((t[f+4>>2]|0)<=1?(t[f+8>>2]|0)<=1:0)r=s;else{t[g>>2]=0;r=0}l=l+1|0;break i}default:{r=s;break i}}r=Z8(A,0)|0;if(!r)r=s;else break A;break}case 1:{w=d+4|0;b=t[w>>2]|0;k=G8(A)|0;t[g>>2]=k;u=b+4|0;s=t[u>>2]|0;if((s|0)<=1)if((t[b+8>>2]|0)>1){t[m>>2]=0;if((s|0)>0)v=30;else{r=k;f=0;v=37}}else r=k;else{t[m>>2]=0;v=30}a:do{if((v|0)==30){r=M8(e,A,t[b>>2]|0,(s|0)>1?1:2,g,a,p,B)|0;if(!r){f=0;c=k;o=1}else{v=34;break r}while(1){r=t[p>>2]|0;if(!f)f=r;else f=m8(e,f,r)|0;if(!f){r=12;v=34;break r}s=t[u>>2]|0;if((o|0)>=(s|0)){r=c;v=37;break a}c=t[g>>2]|0;o=o+1|0;r=M8(e,A,t[b>>2]|0,(o|0)<(s|0)?1:2,g,a,p,B)|0;if(r|0){v=34;break r}}}}while(0);if((v|0)==37){v=0;u=b+8|0;c=t[u>>2]|0;if((c|0)==-1){c=t[g>>2]|0;r=M8(e,A,t[b>>2]|0,0,g,0,m,B)|0;if(r|0)break r;s=V8(e,t[m>>2]|0,0,-1,0)|0;t[m>>2]=s;if(!s){r=12;break r}else r=c}else if((s|0)<(c|0)){c=s;s=0;while(1){o=t[g>>2]|0;r=M8(e,A,t[b>>2]|0,0,g,0,p,B)|0;if(r|0){v=49;break r}if(!s){r=t[p>>2]|0;t[m>>2]=r}else{r=m8(e,t[p>>2]|0,s)|0;t[m>>2]=r}if(!r){r=12;v=49;break r}s=g8(e,-1,-1,-1)|0;if(!s){r=12;v=49;break r}s=N8(e,s,r)|0;t[m>>2]=s;if(!s){r=12;v=49;break r}c=c+1|0;if((c|0)>=(t[u>>2]|0)){r=o;break}}}else s=0;t[g>>2]=r;if(f){if(s){f=m8(e,f,s)|0;v=54}}else{f=s;v=54}if((v|0)==54){v=0;if(!f){r=12;break r}}t[w>>2]=t[f+4>>2];t[d>>2]=t[f>>2]}l=l+-1|0;f=r-k+n|0;if(!l){t[g>>2]=f;n=f;l=0;r=f}else n=f;break}default:r=s}}while(0);if((C8(A)|0)>(E|0))s=r;else{r=0;break A}}break e}else{r=0;n=0}}while(0);E=(t[i>>2]|0)+n|0;B=t[B>>2]|0;t[i>>2]=(B|0)>(E|0)?B:E}}}while(0);h=y;return r|0}function g8(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0;a=u8(e,0,0,1,20)|0;e=F8(e,0,a)|0;if(!e)e=0;else{t[a>>2]=A;t[a+4>>2]=r;t[a+8>>2]=i}return e|0}function m8(e,A,r){e=e|0;A=A|0;r=r|0;var i=0;if(A){i=u8(e,0,0,1,8)|0;e=F8(e,1,i)|0;if(!e)r=0;else{t[i>>2]=A;t[i+4>>2]=r;t[e+16>>2]=(t[r+16>>2]|0)+(t[A+16>>2]|0);r=e}}return r|0}function p8(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0,n=0,f=0,l=0,s=0,c=0,o=0,u=0,b=0;b=h;h=h+16|0;s=b+4|0;c=b;o=C8(A)|0;r=I8(A,r)|0;e:do{if(!r){r=Z8(A,0)|0;if(!r)if((C8(A)|0)>(o|0)){A:while(1){f=G8(A)|0;l=L8(A)|0;r:do{switch(f|0){case 0:switch(t[l>>2]|0){case 0:{n=t[l+4>>2]|0;a=t[n>>2]|0;if((a|0)==-4){t[l+8>>2]=0;r=n+8|0;f=Q8(e,t[r>>2]|0,0,1114111,0,0,-1)|0;t[l+24>>2]=f;if(!f){r=12;break e}f=Q8(e,t[r>>2]|0,0,1114111,0,0,t[n+4>>2]|0)|0;t[l+28>>2]=f;if(!f){r=12;break e}else break r}r=l+8|0;if((a|0)<0){t[r>>2]=1;f=D8(e)|0;t[l+24>>2]=f;if(!f){r=12;break e}f=D8(e)|0;t[l+28>>2]=f;if(!f){r=12;break e}else break r}else{t[r>>2]=0;r=n+8|0;i=n+4|0;f=Q8(e,t[r>>2]|0,a,t[i>>2]|0,0,0,-1)|0;t[l+24>>2]=f;if(!f){r=12;break e}f=Q8(e,t[r>>2]|0,t[n>>2]|0,t[i>>2]|0,t[n+12>>2]|0,t[n+16>>2]|0,-1)|0;t[l+28>>2]=f;if(!f){r=12;break e}else break r}}case 3:{r=I8(A,l)|0;if(r|0)break e;r=Z8(A,1)|0;if(r|0)break e;i=l+4|0;r=I8(A,t[(t[i>>2]|0)+4>>2]|0)|0;if(r|0)break e;r=Z8(A,0)|0;if(r|0)break e;r=I8(A,t[t[i>>2]>>2]|0)|0;if(r|0)break e;r=Z8(A,0)|0;if(!r)break r;else break e}case 1:{r=I8(A,l)|0;if(r|0)break e;r=Z8(A,2)|0;if(r|0)break e;i=l+4|0;r=I8(A,t[(t[i>>2]|0)+4>>2]|0)|0;if(r|0)break e;r=Z8(A,0)|0;if(r|0)break e;r=I8(A,t[t[i>>2]>>2]|0)|0;if(r|0)break e;r=Z8(A,0)|0;if(!r)break r;else break e}case 2:{r=I8(A,l)|0;if(r|0)break e;r=Z8(A,3)|0;if(r|0)break e;r=I8(A,t[t[l+4>>2]>>2]|0)|0;if(r|0)break e;r=Z8(A,0)|0;if(!r)break r;else break e}default:break r}case 1:{r=t[l+4>>2]|0;i=t[r>>2]|0;a=r+4|0;n=t[a>>2]|0;if(!(t[i+8>>2]|0))f=(t[n+8>>2]|0)!=0;else f=1;t[l+8>>2]=f&1;f=z8(e,t[i+24>>2]|0,t[n+24>>2]|0,0,0)|0;t[l+24>>2]=f;if(!f){r=12;break e}f=z8(e,t[(t[r>>2]|0)+28>>2]|0,t[(t[a>>2]|0)+28>>2]|0,0,0)|0;t[l+28>>2]=f;if(!f){r=12;break e}break}case 3:{f=t[l+4>>2]|0;r=t[f>>2]|0;if(!(t[f+4>>2]|0))i=1;else i=(t[r+8>>2]|0)!=0&1;t[l+8>>2]=i;t[l+24>>2]=t[r+24>>2];t[l+28>>2]=t[r+28>>2];break}case 2:{n=t[l+4>>2]|0;r=t[n>>2]|0;i=r+8|0;if(!(t[i>>2]|0))a=0;else a=(t[(t[n+4>>2]|0)+8>>2]|0)!=0;t[l+8>>2]=a&1;if(t[i>>2]|0){r=W8(A,r,0,0,s)|0;if(r|0)break A;i=Z2((t[s>>2]<<2)+4|0)|0;if(!i){r=12;break A}t[i>>2]=-1;t[c>>2]=0;r=W8(A,t[n>>2]|0,i,c,0)|0;if(r|0){u=45;break A}r=n+4|0;f=l+24|0;t[f>>2]=z8(e,t[(t[r>>2]|0)+24>>2]|0,t[(t[n>>2]|0)+24>>2]|0,i,t[c>>2]|0)|0;G2(i);if(!(t[f>>2]|0)){r=12;break A}else a=r}else{t[l+24>>2]=t[r+24>>2];a=n+4|0}r=t[a>>2]|0;if(t[r+8>>2]|0){r=W8(A,r,0,0,s)|0;if(r|0)break A;i=Z2((t[s>>2]<<2)+4|0)|0;if(!i){r=12;break A}t[i>>2]=-1;t[c>>2]=0;r=W8(A,t[a>>2]|0,i,c,0)|0;if(r|0){u=52;break A}l=l+28|0;t[l>>2]=z8(e,t[(t[n>>2]|0)+28>>2]|0,t[(t[a>>2]|0)+28>>2]|0,i,t[c>>2]|0)|0;G2(i);if(!(t[l>>2]|0)){r=12;break A}}else t[l+28>>2]=t[r+28>>2];break}default:{}}}while(0);if((C8(A)|0)<=(o|0)){r=0;break e}}if((u|0)==45)G2(i);else if((u|0)==52)G2(i)}else r=0}}while(0);h=b;return r|0}function E8(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0,n=0,f=0;e:while(1){switch(t[e>>2]|0){case 2:{e=t[e+4>>2]|0;if((t[e+8>>2]|0)==-1?(f=t[e>>2]|0,f=y8(t[f+28>>2]|0,t[f+24>>2]|0,A,r,i)|0,(f|0)!=0):0){e=f;break e}break}case 3:{a=t[e+4>>2]|0;e=E8(t[a>>2]|0,A,r,i)|0;if(e|0)break e;e=a+4|0;break}case 1:{a=t[e+4>>2]|0;n=a+4|0;e=y8(t[(t[a>>2]|0)+28>>2]|0,t[(t[n>>2]|0)+24>>2]|0,A,r,i)|0;if(e|0)break e;e=E8(t[a>>2]|0,A,r,i)|0;if(!e)e=n;else break e;break}default:{e=0;break e}}e=t[e>>2]|0}return e|0}function B8(e){e=e|0;var A=0,r=0,i=0,a=0,n=0,f=0;f=t[e+4>>2]|0;if(f|0){i=f+4|0;e=t[f>>2]|0;if(t[i>>2]|0){r=0;do{if(t[e+(r<<5)+8>>2]|0){A=t[e+(r<<5)+16>>2]|0;if(A){G2(A);e=t[f>>2]|0}A=t[e+(r<<5)+28>>2]|0;if(A){G2(A);e=t[f>>2]|0}}r=r+1|0}while(r>>>0<(t[i>>2]|0)>>>0)}if(e|0)G2(e);r=f+8|0;e=t[r>>2]|0;if(e|0){if(t[e+8>>2]|0){while(1){A=t[e+16>>2]|0;if(A|0)G2(A);if(!(t[e+40>>2]|0))break;else e=e+32|0}e=t[r>>2]|0}G2(e)}a=f+16|0;e=t[a>>2]|0;if(e|0){n=f+28|0;A=t[n>>2]|0;if(A){i=0;do{r=t[e+(i*12|0)+8>>2]|0;if(r){G2(r);A=t[n>>2]|0;e=t[a>>2]|0}i=i+1|0}while(i>>>0>>0)}G2(e)}e=t[f+32>>2]|0;if(e|0)G2(e);e=t[f+20>>2]|0;if(e|0)G2(e);e=t[f+36>>2]|0;if(e|0)G2(e);G2(f)}return}function y8(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;var n=0,f=0,l=0,s=0,c=0,o=0,u=0,b=0,h=0,w=0,k=0,d=0,v=0,g=0,m=0,p=0,E=0,B=0,y=0;n=t[e>>2]|0;f=(n|0)>-1;e:do{if(!r)if(f){f=A+32|0;do{if((t[A>>2]|0)>-1?(y=i+(n<<2)|0,t[y>>2]=(t[y>>2]|0)+1,(t[f>>2]|0)>-1):0){n=f;do{y=i+(t[e>>2]<<2)|0;t[y>>2]=(t[y>>2]|0)+1;n=n+32|0}while((t[n>>2]|0)>-1)}e=e+32|0;n=t[e>>2]|0}while((n|0)>-1);n=0}else n=0;else if(f)while(1){f=t[A>>2]|0;A:do{if((f|0)>-1){w=e+4|0;k=e+8|0;d=e+16|0;v=e+20|0;g=e+24|0;m=e+28|0;p=e+12|0;i=-1;n=A;while(1){h=f;while(1){if((h|0)!=(i|0))break;n=n+32|0;f=t[n>>2]|0;if((f|0)>-1)h=f;else break A}o=r+(t[a+(t[e>>2]<<2)>>2]<<5)|0;while(1){f=o+8|0;if(!(t[f>>2]|0))break;else o=o+32|0}t[o+40>>2]=0;t[o>>2]=t[w>>2];t[o+4>>2]=t[k>>2];t[f>>2]=r+(t[a+(h<<2)>>2]<<5);t[o+12>>2]=h;f=t[v>>2]|0;i=t[n+16>>2]|t[d>>2]|(f|0?4:0)|(t[g>>2]|0?8:0);l=o+20|0;t[l>>2]=i;s=t[m>>2]|0;if((s|0)>-1){t[l>>2]=i|256;f=s}t[o+24>>2]=f;i=t[g>>2]|0;if(!i)t[o+28>>2]=0;else{f=0;do{b=f;f=f+1|0}while((t[i+(b<<2)>>2]|0)!=0);f=Z2(f<<2)|0;t[o+28>>2]=f;if(!f){n=12;break e}c=t[g>>2]|0;i=t[c>>2]|0;if(i){s=0;l=f;do{t[l>>2]=i;s=s+1|0;i=t[c+(s<<2)>>2]|0;l=f+(s<<2)|0}while((i|0)!=0);f=l}t[f>>2]=0}i=t[p>>2]|0;if(!i)f=0;else{f=0;while(1)if((t[i+(f<<2)>>2]|0)>-1)f=f+1|0;else break}c=n+12|0;l=t[c>>2]|0;if(!l)i=0;else{i=0;while(1)if((t[l+(i<<2)>>2]|0)>-1)i=i+1|0;else break}s=o+16|0;l=t[s>>2]|0;if(l|0)G2(l);t[s>>2]=0;f=i+f|0;if((f|0)>0){b=Z2((f<<2)+4|0)|0;t[s>>2]=b;if(!b){n=12;break e}i=t[p>>2]|0;if((i|0)!=0?(E=t[i>>2]|0,(E|0)>-1):0){f=0;l=E;do{t[b+(f<<2)>>2]=l;f=f+1|0;l=t[i+(f<<2)>>2]|0}while((l|0)>-1);u=f}else u=0;s=t[c>>2]|0;if((s|0)!=0?(B=t[s>>2]|0,(B|0)>-1):0){c=(u|0)>0;f=u;l=0;o=B;do{r:do{if(c){i=0;while(1){if((t[b+(i<<2)>>2]|0)==(o|0))break r;i=i+1|0;if((i|0)>=(u|0)){y=39;break}}}else y=39}while(0);if((y|0)==39){y=0;t[b+(f<<2)>>2]=o;f=f+1|0}l=l+1|0;o=t[s+(l<<2)>>2]|0}while((o|0)>-1)}else f=u;t[b+(f<<2)>>2]=-1}n=n+32|0;f=t[n>>2]|0;if((f|0)<=-1)break;else i=h}}}while(0);e=e+32|0;if((t[e>>2]|0)<=-1){n=0;break}}else n=0}while(0);return n|0}function C8(e){e=e|0;return t[e+12>>2]|0}function I8(e,A){e=e|0;A=A|0;var r=0,i=0,a=0;r=h;h=h+16|0;i=r+4|0;a=r;t[a>>2]=A;t[i>>2]=t[a>>2];A=Y8(e,i)|0;h=r;return A|0}function Z8(e,A){e=e|0;A=A|0;var r=0,i=0,a=0;r=h;h=h+16|0;i=r+4|0;a=r;t[a>>2]=A;t[i>>2]=t[a>>2];A=Y8(e,i)|0;h=r;return A|0}function G8(e){e=e|0;var A=0,r=0;A=t[e+16>>2]|0;r=e+12|0;e=(t[r>>2]|0)+-1|0;t[r>>2]=e;return t[A+(e<<2)>>2]|0}function L8(e){e=e|0;var A=0,r=0;A=t[e+16>>2]|0;r=e+12|0;e=(t[r>>2]|0)+-1|0;t[r>>2]=e;return t[A+(e<<2)>>2]|0}function Q8(e,A,r,i,a,n,f){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;n=n|0;f=f|0;e=u8(e,0,0,1,64)|0;if(!e)e=0;else{t[e>>2]=A;t[e+4>>2]=r;t[e+8>>2]=i;t[e+20>>2]=a;t[e+24>>2]=n;t[e+28>>2]=f;t[e+32>>2]=-1;t[e+36>>2]=-1;t[e+40>>2]=-1}return e|0}function D8(e){e=e|0;e=u8(e,0,0,1,32)|0;if(!e)e=0;else{t[e>>2]=-1;t[e+4>>2]=-1;t[e+8>>2]=-1}return e|0}function z8(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;var n=0,f=0,l=0,s=0,c=0,o=0,u=0,b=0,h=0;h=(i|0)==0;if(h)b=0;else{n=0;while(1)if((t[i+(n<<2)>>2]|0)>-1)n=n+1|0;else{b=n;break}}f=0;while(1)if((t[A+(f<<5)>>2]|0)>-1)f=f+1|0;else{n=0;break}while(1)if((t[r+(n<<5)>>2]|0)>-1)n=n+1|0;else break;n=u8(e,0,0,1,(n+f<<5)+32|0)|0;e:do{if(!n)n=0;else{f=t[A>>2]|0;if((f|0)>-1){u=(b|0)>0;l=0;while(1){t[n+(l<<5)>>2]=f;t[n+(l<<5)+4>>2]=t[A+(l<<5)+4>>2];t[n+(l<<5)+8>>2]=t[A+(l<<5)+8>>2];t[n+(l<<5)+16>>2]=t[A+(l<<5)+16>>2]|a;t[n+(l<<5)+20>>2]=t[A+(l<<5)+20>>2];t[n+(l<<5)+24>>2]=t[A+(l<<5)+24>>2];t[n+(l<<5)+28>>2]=t[A+(l<<5)+28>>2];o=A+(l<<5)+12|0;s=t[o>>2]|0;f=(s|0)==0;if(h&f)f=0;else{if(f)c=0;else{f=0;while(1)if((t[s+(f<<2)>>2]|0)>-1)f=f+1|0;else{c=f;break}}f=u8(e,0,0,0,(c+b<<2)+4|0)|0;if(!f){n=0;break e}if((c|0)>0){o=t[o>>2]|0;s=0;do{t[f+(s<<2)>>2]=t[o+(s<<2)>>2];s=s+1|0}while((s|0)!=(c|0))}else c=0;if(u){s=0;do{t[f+(s+c<<2)>>2]=t[i+(s<<2)>>2];s=s+1|0}while((s|0)!=(b|0));s=b}else s=0;t[f+(s+c<<2)>>2]=-1}t[n+(l<<5)+12>>2]=f;l=l+1|0;f=t[A+(l<<5)>>2]|0;if((f|0)<=-1){b=l;break}}}else b=0;l=t[r>>2]|0;f=n+(b<<5)|0;if((l|0)>-1){u=0;o=b;do{t[f>>2]=l;t[n+(o<<5)+4>>2]=t[r+(u<<5)+4>>2];t[n+(o<<5)+8>>2]=t[r+(u<<5)+8>>2];t[n+(o<<5)+16>>2]=t[r+(u<<5)+16>>2];t[n+(o<<5)+20>>2]=t[r+(u<<5)+20>>2];t[n+(o<<5)+24>>2]=t[r+(u<<5)+24>>2];t[n+(o<<5)+28>>2]=t[r+(u<<5)+28>>2];s=r+(u<<5)+12|0;f=t[s>>2]|0;if(!f)f=0;else{l=0;while(1)if((t[f+(l<<2)>>2]|0)>-1)l=l+1|0;else break;f=u8(e,0,0,0,(l<<2)+4|0)|0;if(!f){n=0;break e}if((l|0)>0){c=t[s>>2]|0;s=0;do{t[f+(s<<2)>>2]=t[c+(s<<2)>>2];s=s+1|0}while((s|0)!=(l|0))}else l=0;t[f+(l<<2)>>2]=-1}t[n+(o<<5)+12>>2]=f;u=u+1|0;l=t[r+(u<<5)>>2]|0;o=u+b|0;f=n+(o<<5)|0}while((l|0)>-1)}t[f>>2]=-1}}while(0);return n|0}function W8(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;var n=0,f=0,l=0,s=0,c=0,o=0,u=0,b=0,h=0,w=0;h=C8(e)|0;w=(a|0)!=0;if(w)t[a>>2]=0;A=I8(e,A)|0;e:do{if(!A){u=(r|0)==0;o=(i|0)==0;if((C8(e)|0)>(h|0))while(1){A=L8(e)|0;A:do{switch(t[A>>2]|0){case 0:{A=t[A+4>>2]|0;switch(t[A>>2]|0){case-3:break;case-2:{if(o)break A;t[i>>2]=t[i>>2]|t[A+4>>2];break A}default:break A}f=t[A+4>>2]|0;if((f|0)>-1){r:do{if(!u){A=0;while(1){l=r+(A<<2)|0;s=t[l>>2]|0;if((s|0)<=-1)break;if((s|0)==(f|0))break r;else A=A+1|0}t[l>>2]=f;t[r+(A+1<<2)>>2]=-1}}while(0);if(w)t[a>>2]=(t[a>>2]|0)+1}break}case 3:{A=t[A+4>>2]|0;f=t[A>>2]|0;if(t[f+8>>2]|0){c=f;b=6;break A}A=t[A+4>>2]|0;if(t[A+8>>2]|0){c=A;b=6}break}case 1:{A=t[A+4>>2]|0;f=I8(e,t[A>>2]|0)|0;if(f|0){n=f;break e}c=t[A+4>>2]|0;b=6;break}case 2:{A=t[t[A+4>>2]>>2]|0;if(t[A+8>>2]|0){c=A;b=6}break}default:{}}}while(0);if((b|0)==6?(b=0,n=I8(e,c)|0,n|0):0)break e;if((C8(e)|0)<=(h|0)){n=0;break e}}else n=0}else n=A}while(0);return n|0}function Y8(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,n=0,f=0,l=0,s=0,c=0;c=h;h=h+16|0;n=c;r=e+12|0;i=t[r>>2]|0;s=t[e>>2]|0;if((i|0)>=(s|0)){r=t[e+4>>2]|0;if((s|0)<(r|0)?(a=(t[e+8>>2]|0)+s|0,a=(a|0)>(r|0)?r:a,f=e+16|0,l=Q2(t[f>>2]|0,a<<2)|0,(l|0)!=0):0){t[e>>2]=a;t[f>>2]=l;t[n>>2]=t[A>>2];Y8(e,n)|0;r=0}else r=12}else{t[(t[e+16>>2]|0)+(i<<2)>>2]=t[A>>2];t[r>>2]=(t[r>>2]|0)+1;r=0}h=c;return r|0}function F8(e,A,r){e=e|0;A=A|0;r=r|0;e=u8(e,0,0,1,32)|0;if((r|0)!=0&(e|0)!=0){t[e+4>>2]=r;t[e>>2]=A;t[e+8>>2]=-1;t[e+12>>2]=-1}else e=0;return e|0}function M8(e,A,r,a,n,f,l,s){e=e|0;A=A|0;r=r|0;a=a|0;n=n|0;f=f|0;l=l|0;s=s|0;var c=0,o=0,u=0,b=0,h=0,w=0,k=0,d=0;d=C8(A)|0;I8(A,r)|0;r=Z8(A,0)|0;e:do{if(!r){k=(a&1|0)==0;w=(a&2|0)!=0;h=0;o=1;r=l;while(1){if((C8(A)|0)>(d|0))b=r;else{a=h;r=0;break e}A:while(1){r:while(1){switch(G8(A)|0){case 1:{l=7;break r}case 0:{r=L8(A)|0;switch(t[r>>2]|0){case 0:{l=9;break A}case 3:{l=19;break A}case 1:{l=26;break A}case 2:{l=33;break r}default:{}}break}default:{}}if((C8(A)|0)<=(d|0)){a=h;r=0;break e}}if((l|0)==7)r=L8(A)|0;else if((l|0)==33){a=t[r+4>>2]|0;r=I8(A,t[a>>2]|0)|0;if(r|0){a=h;break e}r=Z8(A,0)|0;if(r|0){a=h;break e}r=V8(e,t[a>>2]|0,t[a+4>>2]|0,t[a+8>>2]|0,i[a+12>>0]&1)|0;t[b>>2]=r;if(!r){a=h;r=12;break e}r=t[r+4>>2]|0}if((C8(A)|0)>(d|0))b=r;else{a=h;r=0;break e}}if((l|0)==9){u=t[r+4>>2]|0;l=t[u+8>>2]|0;a=t[u>>2]|0;r=t[u+4>>2]|0;if(!((a|0)>-1|(a|0)==-4))if(k|(a|0)!=-3)if((a|0)==-3)if(w&(o|0)!=0){t[f+(r<<2)>>2]=1;a=-3;c=h;o=0}else{a=-3;c=h}else c=h;else{r=-1;a=-1;l=-1;c=h}else{l=(t[n>>2]|0)+l|0;c=h+1|0}r=g8(e,a,r,l)|0;t[b>>2]=r;if(!r)r=12;else{r=t[r+4>>2]|0;t[r+12>>2]=t[u+12>>2];t[r+16>>2]=t[u+16>>2];r=0}if((l|0)>(t[s>>2]|0)){t[s>>2]=l;a=b}else a=b}else if((l|0)==19){l=t[r+4>>2]|0;a=l+4|0;r=N8(e,t[l>>2]|0,t[a>>2]|0)|0;t[b>>2]=r;if(!r){a=h;r=12;break e}u=t[r+4>>2]|0;r=I8(A,t[a>>2]|0)|0;if(r|0){a=h;break e}r=Z8(A,0)|0;if(r|0){a=h;break e}r=I8(A,u+4|0)|0;if(r|0){a=h;break e}r=Z8(A,1)|0;if(r|0){a=h;break e}r=I8(A,t[l>>2]|0)|0;if(r|0){a=h;break e}c=h;a=u;r=Z8(A,0)|0}else if((l|0)==26){u=t[r+4>>2]|0;l=u+4|0;r=m8(e,t[u>>2]|0,t[l>>2]|0)|0;t[b>>2]=r;if(!r){a=h;r=12;break e}a=t[r+4>>2]|0;t[a>>2]=0;c=a+4|0;t[c>>2]=0;r=I8(A,t[l>>2]|0)|0;if(r|0){a=h;break e}r=Z8(A,0)|0;if(r|0){a=h;break e}r=I8(A,c)|0;if(r|0){a=h;break e}r=Z8(A,1)|0;if(r|0){a=h;break e}r=I8(A,t[u>>2]|0)|0;if(r|0){a=h;break e}c=h;r=Z8(A,0)|0}if(!r){h=c;r=a}else{a=c;break}}}else a=0}while(0);t[n>>2]=(t[n>>2]|0)+a;return r|0}function V8(e,A,r,a,n){e=e|0;A=A|0;r=r|0;a=a|0;n=n|0;var f=0;f=u8(e,0,0,1,16)|0;e=F8(e,2,f)|0;if(!e)e=0;else{t[f>>2]=A;t[f+4>>2]=r;t[f+8>>2]=a;f=f+12|0;i[f>>0]=i[f>>0]&-2|n&1;t[e+16>>2]=t[A+16>>2]}return e|0}function N8(e,A,r){e=e|0;A=A|0;r=r|0;var i=0;if(A){i=u8(e,0,0,1,8)|0;e=F8(e,3,i)|0;if((r|0)!=0&(e|0)!=0){t[i>>2]=A;t[i+4>>2]=r;t[e+16>>2]=(t[r+16>>2]|0)+(t[A+16>>2]|0);r=e}else r=0}return r|0}function R8(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0;i=u8(e,0,0,0,8)|0;if(((i|0)!=0?(r=g8(e,-3,r,-1)|0,t[i>>2]=r,(r|0)!=0):0)?(a=u8(e,0,0,0,32)|0,t[i+4>>2]=a,(a|0)!=0):0){e=A+4|0;t[a+4>>2]=t[e>>2];t[a>>2]=t[A>>2];t[a+8>>2]=-1;t[a+12>>2]=-1;a=a+16|0;t[a>>2]=0;t[a+4>>2]=0;t[a+8>>2]=0;t[a+12>>2]=0;t[e>>2]=i;t[A>>2]=1;e=0}else e=12;return e|0}function x8(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0,n=0;a=t[e>>2]|0;if((a|0)>-1){n=t[A+16>>2]|0;i=0;A=a;do{a=A>>>1;t[((A&1|0)==0?n+(a*12|0)|0:n+(a*12|0)+4|0)>>2]=r;i=i+1|0;A=t[e+(i<<2)>>2]|0}while((A|0)>-1)}t[e>>2]=-1;return}function J8(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0;i=u8(e,0,0,0,8)|0;if(((i|0)!=0?(r=g8(e,-3,r,-1)|0,t[i+4>>2]=r,(r|0)!=0):0)?(a=u8(e,0,0,0,32)|0,t[i>>2]=a,(a|0)!=0):0){e=A+4|0;t[a+4>>2]=t[e>>2];t[a>>2]=t[A>>2];t[a+8>>2]=-1;t[a+12>>2]=-1;a=a+16|0;t[a>>2]=0;t[a+4>>2]=0;t[a+8>>2]=0;t[a+12>>2]=0;t[e>>2]=i;t[A>>2]=1;e=0}else e=12;return e|0}function H8(e,A){e=e|0;A=A|0;var r=0,a=0,n=0,f=0,l=0,s=0,c=0,o=0,u=0;o=h;h=h+16|0;s=o;l=e+32|0;f=t[l>>2]|0;n=f&1;e:do{switch(i[A>>0]|0){case 91:{r=j8(e,A+1|0)|0;break}case 92:{r=A+1|0;a=U8(r)|0;if(a|0){r=H8(e,a)|0;t[e+12>>2]=A+2;break e}a=i[r>>0]|0;switch(a|0){case 0:{r=5;break e}case 98:{a=g8(t[e>>2]|0,-2,64,-1)|0;break}case 66:{a=g8(t[e>>2]|0,-2,128,-1)|0;break}case 60:{a=g8(t[e>>2]|0,-2,16,-1)|0;break}case 62:{a=g8(t[e>>2]|0,-2,32,-1)|0;break}case 120:{f=A+2|0;l=(i[f>>0]|0)==123;n=l?8:2;f=l?A+3|0:f;r=0;a=0;do{A=T8(i[f+r>>0]|0)|0;if((A|0)<0)break;a=A+(a<<4)|0;r=r+1|0}while((a|0)<1114112&(r|0)<(n|0));r=f+r|0;if(l){if((i[r>>0]|0)!=125){r=9;break e}r=r+1|0}s=t[e>>2]|0;l=e+24|0;c=t[l>>2]|0;t[l>>2]=c+1;a=g8(s,a,a,c)|0;r=r+-1|0;break}case 63:case 43:case 123:if(!n){r=13;break e}else{c=37;break e}case 124:{if(n|0){c=37;break e}r=g8(t[e>>2]|0,-1,-1,-1)|0;c=45;break e}default:{if(!((n|0)==0&(a+-49|0)>>>0<9)){c=37;break e}s=a+-48|0;c=t[e>>2]|0;l=e+24|0;a=t[l>>2]|0;t[l>>2]=a+1;a=g8(c,-4,s,a)|0;c=e+28|0;l=t[c>>2]|0;t[c>>2]=(s|0)<(l|0)?l:s}}A=r+1|0;r=a;c=45;break}case 46:{r=t[e>>2]|0;n=e+24|0;a=t[n>>2]|0;t[n>>2]=a+1;if(f&4){a=g8(r,0,9,a)|0;c=t[e>>2]|0;r=t[n>>2]|0;t[n>>2]=r+1;r=g8(c,11,1114111,r)|0;if((a|0)!=0&(r|0)!=0)r=N8(t[e>>2]|0,a,r)|0;else r=0}else r=g8(r,0,1114111,a)|0;A=A+1|0;c=45;break}case 94:{if((n|0)==0?(t[e+16>>2]|0)!=(A|0):0){r=A;c=37;break e}A=A+1|0;r=g8(t[e>>2]|0,-2,1,-1)|0;c=45;break}case 36:{r=A+1|0;if((n|0)==0?i[r>>0]|0:0){r=A;c=37;break e}A=r;r=g8(t[e>>2]|0,-2,2,-1)|0;c=45;break}case 63:case 43:case 123:case 42:{if(!n){r=A;c=37}else r=13;break}case 124:{if(!n){r=A;c=37}else c=36;break}case 0:{c=36;break}default:{r=A;c=37}}}while(0);if((c|0)==36){r=g8(t[e>>2]|0,-1,-1,-1)|0;c=45}else if((c|0)==37){f=C3(s,r,-1)|0;if((f|0)<0)r=2;else{do{if(t[l>>2]&2){if((c4(t[s>>2]|0)|0)==0?(s4(t[s>>2]|0)|0)==0:0){c=43;break}l=t[e>>2]|0;u=J1(t[s>>2]|0)|0;n=J1(t[s>>2]|0)|0;a=e+24|0;n=g8(l,u,n,t[a>>2]|0)|0;u=t[e>>2]|0;l=u4(t[s>>2]|0)|0;A=u4(t[s>>2]|0)|0;A=g8(u,l,A,t[a>>2]|0)|0;if((n|0)!=0&(A|0)!=0)n=N8(t[e>>2]|0,n,A)|0;else n=0}else c=43}while(0);if((c|0)==43){n=t[s>>2]|0;a=e+24|0;n=g8(t[e>>2]|0,n,n,t[a>>2]|0)|0}t[a>>2]=(t[a>>2]|0)+1;A=r+f|0;r=n;c=45}}if((c|0)==45)if(!r)r=12;else{t[e+8>>2]=r;t[e+12>>2]=A;r=0}h=o;return r|0}function P8(e,A,r,a){e=e|0;A=A|0;r=r|0;a=a|0;var n=0,f=0,l=0,s=0;s=h;h=h+16|0;l=s+4|0;n=s;e=S8(e,l)|0;if((i[e>>0]|0)==44){e=S8(e+1|0,n)|0;f=t[n>>2]|0;n=t[l>>2]|0}else{l=t[l>>2]|0;t[n>>2]=l;f=l;n=l}do{if(!(n>>>0>255|((f|0)>255|(f|0)>-1&(f|0)<(n|0)))){if(!A)if((i[e>>0]|0)==92)e=e+1|0;else{e=0;break}if((i[e>>0]|0)==125){t[r>>2]=n;t[a>>2]=f;e=e+1|0}else e=0}else e=0}while(0);h=s;return e|0}function X8(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0,n=0;if((t[A+12>>2]|0)>-1){i=g8(t[e>>2]|0,-1,-1,-1)|0;if((i|0)!=0?(a=m8(t[e>>2]|0,i,A)|0,(a|0)!=0):0){i=t[A+16>>2]|0;t[a+16>>2]=i;n=6}else i=12}else{a=A;i=t[A+16>>2]|0;n=6}if((n|0)==6){t[a+12>>2]=r;t[a+16>>2]=i+1;t[e+8>>2]=a;i=0}return i|0}function S8(e,A){e=e|0;A=A|0;var r=0,a=0,n=0;t[A>>2]=-1;if(((i[e>>0]|0)+-48|0)>>>0<10){t[A>>2]=0;r=e;n=0;a=i[e>>0]|0;while(1){n=(n*10|0)+-48+(a<<24>>24)|0;t[A>>2]=n;e=r+1|0;a=i[e>>0]|0;if((n|0)>255|((a<<24>>24)+-48|0)>>>0>9)break;else r=e}}return e|0}function j8(e,A){e=e|0;A=A|0;var r=0,a=0,n=0,f=0,l=0,s=0,c=0,o=0,u=0,b=0,w=0,k=0,d=0,v=0;v=h;h=h+288|0;r=v+264|0;n=v;t[r>>2]=t[e>>2];f=r+8|0;t[f>>2]=0;t[r+12>>2]=32;w=Z2(128)|0;d=r+4|0;t[d>>2]=w;if(!w)A=12;else{a=n+4|0;t[a>>2]=0;w=(i[A>>0]|0)==94;t[n>>2]=w&1;A=O8(e,w?A+1|0:A,r,n)|0;e:do{if(!A){w=(t[n>>2]|0)==0;if(!w){_4(t[d>>2]|0,t[f>>2]|0,4,111);A=q8(r)|0;if(!A){A=12;r=0;break}t[A>>2]=1114112;t[A+4>>2]=1114112;t[A+8>>2]=-1;A=t[a>>2]|0;if(A){r=A<<2;a=u8(t[e>>2]|0,0,0,0,r+4|0)|0;if(!a){A=12;r=0;break}Q6(a|0,n+8|0,r|0)|0;t[a+(A<<2)>>2]=0}else a=0}else a=0;o=t[f>>2]|0;if((o|0)>0){u=t[d>>2]|0;b=e+24|0;r=0;A=0;c=0;while(1){s=t[u+(c<<2)>>2]|0;n=t[s>>2]|0;f=s+4|0;l=t[f>>2]|0;do{if(!w)if((n|0)>(A|0)){t[s>>2]=A;t[f>>2]=n+-1;A=l+1|0;k=14;break}else{s=l+1|0;A=(s|0)>=(A|0)?s:A;break}else k=14}while(0);if((k|0)==14){k=0;t[s+8>>2]=t[b>>2];t[s+16>>2]=a;s=F8(t[e>>2]|0,0,s)|0;r=N8(t[e>>2]|0,r,s)|0;if(!r){A=12;r=0;break e}}c=c+1|0;if((c|0)>=(o|0)){A=0;break}}}else{A=0;r=0}}else r=0}while(0);G2(t[d>>2]|0);d=e+24|0;t[d>>2]=(t[d>>2]|0)+1;t[e+8>>2]=r}h=v;return A|0}function U8(e){e=e|0;var A=0;A=i[e>>0]|0;e=0;while(1){if((i[63752+(e<<3)>>0]|0)==A<<24>>24)break;e=e+1|0;if((e|0)==12){e=12;break}}return t[63752+(e<<3)+4>>2]|0}function T8(e){e=e|0;var A=0;A=e+-48|0;if(A>>>0<10)return A|0;else{A=e|32;return((A+-97|0)>>>0<6?A+-87|0:-1)|0}return 0}function O8(e,A,r,a){e=e|0;A=A|0;r=r|0;a=a|0;var n=0,f=0,l=0,s=0,c=0,o=0,u=0,b=0,w=0,k=0,d=0,v=0,g=0;g=h;h=h+32|0;b=g;k=g+4|0;l=C3(b,A,-1)|0;n=i[A>>0]|0;e:do{if((l|0)>=1){d=a+4|0;u=e+32|0;f=A;s=l;A:while(1){l=(f|0)==(A|0);if(!(l|n<<24>>24!=93)){v=5;break}r:do{if(!(l|n<<24>>24!=45)){switch(i[f+1>>0]|0){case 93:break r;case 45:break;default:{n=11;break e}}if((i[f+2>>0]|0)==93){n=11;break e}}}while(0);r:do{if(n<<24>>24==91){switch(i[f+1>>0]|0){case 61:case 46:{n=3;break e}case 58:break;default:{v=17;break r}}l=f+2|0;n=0;i:while(1){switch(i[l+n>>0]|0){case 0:{v=16;break A}case 58:break i;default:{}}if((n|0)<13)n=n+1|0;else{v=16;break A}}Q6(k|0,l|0,n|0)|0;i[k+n>>0]=0;s=D4(k)|0;if(!s){v=16;break A}f=l+(n+2)|0;if((i[l+(n+1)>>0]|0)!=93){v=16;break A}if(!(t[a>>2]|0)){n=1114111;o=0;c=1;v=25}else{n=t[d>>2]|0;if((n|0)>63){n=12;break e}t[d>>2]=n+1;t[a+8+(n<<2)>>2]=s}}else v=17}while(0);if((v|0)==17){v=0;l=t[b>>2]|0;f=f+s|0;if((i[f>>0]|0)==45?(w=f+1|0,(i[w>>0]|0)!=93):0){f=C3(b,w,-1)|0;n=t[b>>2]|0;if((f|0)<1|(l|0)>(n|0)){n=11;break e}s=0;o=l;f=w+f|0;c=0;v=25}else{s=0;n=l;o=l;c=0;v=25}}if((v|0)==25){v=0;l=q8(r)|0;if(!l){n=12;break e}t[l>>2]=o;t[l+4>>2]=n;t[l+12>>2]=s;t[l+8>>2]=-1;if(!(c|(t[u>>2]&2|0)==0)?(K8(r,o,n)|0)!=0:0){n=12;break e}}s=C3(b,f,-1)|0;n=i[f>>0]|0;if((s|0)<1){v=3;break e}}if((v|0)==5){t[e+12>>2]=f+1;n=0;break}else if((v|0)==16){n=4;break}}else v=3}while(0);if((v|0)==3)n=n<<24>>24?2:7;h=g;return n|0}function _8(e,A){e=e|0;A=A|0;return(t[t[e>>2]>>2]|0)-(t[t[A>>2]>>2]|0)|0}function q8(e){e=e|0;var A=0,r=0,i=0,a=0,n=0,f=0,l=0;f=e+8|0;r=t[f>>2]|0;i=e+12|0;a=t[i>>2]|0;if((r|0)>=(a|0))if((a|0)<=32767?(t[i>>2]=a<<1,n=e+4|0,A=Q2(t[n>>2]|0,a<<3)|0,(A|0)!=0):0){t[n>>2]=A;r=t[f>>2]|0;l=6}else A=0;else{A=t[e+4>>2]|0;l=6}if((l|0)==6){t[f>>2]=r+1;l=u8(t[e>>2]|0,0,0,1,20)|0;t[A+(r<<2)>>2]=l;A=l}return A|0}function K8(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0,n=0,f=0;e:do{if((A|0)>(r|0))A=0;else while(1){A:do{if(!(s4(A)|0)){if(!(c4(A)|0)){A=A+1|0;break}a=u4(A)|0;i=a;while(1){n=A+1|0;i=i+1|0;if((A|0)>=(r|0)){f=a;A=n;n=12;break A}if((u4(n)|0)==(i|0))A=n;else{f=a;A=n;n=12;break}}}else{a=J1(A)|0;i=a;while(1){n=A+1|0;i=i+1|0;if((A|0)>=(r|0)){f=a;A=n;n=12;break A}if((J1(n)|0)==(i|0))A=n;else{f=a;A=n;n=12;break}}}}while(0);if((n|0)==12){n=0;a=q8(e)|0;if(!a){A=-1;break e}t[a>>2]=f;t[a+4>>2]=i+-1;t[a+8>>2]=-1}if((A|0)>(r|0)){A=0;break}}}while(0);return A|0}function $8(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;var n=0,f=0,l=0,s=0,c=0,o=0,u=0;u=h;h=h+16|0;c=u;l=t[e+4>>2]|0;s=l+56|0;f=(t[s>>2]&8|0)==0?r:0;e=t[l+40>>2]|0;if((e|0)>0&(f|0)!=0){e=Z2(e<<2)|0;if(!e)e=12;else{n=e;r=e;o=3}}else{n=0;r=0;o=3}if((o|0)==3){if(!(t[l+60>>2]|0))e=A6(l,A,n,a,c)|0;else e=e6(l,A,n,a,c)|0;if(!e)r6(f,i,t[s>>2]|0,l,n,t[c>>2]|0);if(n)G2(r)}h=u;return e|0}function e6(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;var n=0,f=0,l=0,s=0,c=0,o=0,u=0,b=0,w=0,k=0,d=0,v=0,g=0,m=0,p=0,E=0,B=0,y=0,C=0,I=0,Z=0,G=0,L=0,Q=0,D=0,z=0,W=0,Y=0,F=0,M=0,V=0,N=0,R=0,x=0,J=0,H=0,P=0,X=0,S=0,j=0,U=0;U=h;h=h+16|0;S=U;t[S>>2]=0;b=i&1;P=i&2;X=e+56|0;u=t[X>>2]&4;j=c8(0,0)|0;e:do{if(j){w=u8(j,0,0,0,32)|0;if(!w){o8(j);i=12;break}t[w+24>>2]=0;t[w+28>>2]=0;H=e+40|0;k=t[H>>2]|0;if(k){i=Z2(k<<2)|0;if(!i){o=0;c=0;s=i;i=12;l=0;f=0;n=0}else{s=i;l=i;G=6}}else{s=0;l=0;G=6}A:do{if((G|0)==6){i=t[e+28>>2]|0;if(i){i=Z2(i<<3)|0;if(!i){o=i;c=0;i=12;f=0;n=0;break}else{o=i;f=i}}else{o=0;f=0}J=e+52|0;i=t[J>>2]|0;if(i){i=Z2(i<<2)|0;if(!i){c=i;i=12;n=0;break}else{c=i;n=i}}else{c=0;n=0}M=e+8|0;V=e+12|0;N=(r|0)==0;R=(r|0)!=0;x=e+32|0;F=(u|0)!=0;Y=(b|0)==0;v=A;i=1;d=-1;p=-1;u=k;Z=0;r:while(1){if((u|0)>0){b=0;do{t[s+(b<<2)>>2]=-1;if(!N){t[r+(b<<2)>>2]=-1;u=t[H>>2]|0}b=b+1|0}while((b|0)<(u|0))}u=t[J>>2]|0;if((u|0)>0)z6(n|0,0,u<<2|0)|0;z=i+d|0;i=C3(S,v,4)|0;if((i|0)<1)if((i|0)<0){i=1;break A}else i=1;D=v+i|0;W=t[S>>2]|0;u=t[M>>2]|0;b=u+8|0;if(t[b>>2]|0){E=(z|0)!=0;B=(Z|0)==95;y=(z|0)==0;I=F&(Z|0)==10;C=(z|0)<1&Y;m=u;u=0;g=0;v=b;while(1){d=m+20|0;b=t[d>>2]|0;i:do{if(b)if((b&1|0)==0|C|I){if(b&2|0?(Q=t[S>>2]|0,!((Q|P|0)==0|F&(Q|0)==10)):0){k=g;break}do{if(b&16|0){if(B){k=g;break i}if(t4(Z)|0){k=g;break i}b=t[S>>2]|0;if((b|0)==95)break;if(!(t4(b)|0)){k=g;break i}}}while(0);b=t[d>>2]|0;if(b&32){if(B){b=t[S>>2]|0;if((b|0)==95){k=g;break}}else{Q=(t4(Z)|0)==0;b=t[S>>2]|0;if(Q|(b|0)==95){k=g;break}}if(t4(b)|0){k=g;break}b=t[d>>2]|0}k=t[S>>2]|0;do{if((k|0)!=0&(E&(b&64|0)!=0)){if(B)b=1;else{b=(t4(Z)|0)!=0;k=t[S>>2]|0}if((k|0)==95)if(b){k=g;break i}else break;else if(b^(t4(k)|0)!=0)break;else{k=g;break i}}}while(0);if(!(t[d>>2]&128)){G=49;break}b=t[S>>2]|0;if(y|(b|0)==0){k=g;break}if(B)k=1;else{k=(t4(Z)|0)!=0;b=t[S>>2]|0}if((b|0)==95)if(k){G=49;break}else{k=g;break}else if(k^(t4(b)|0)!=0){k=g;break}else{G=49;break}}else k=g;else G=49}while(0);do{if((G|0)==49){G=0;if(!g){u=t[m+16>>2]|0;k=t[v>>2]|0;break}k=w+28|0;b=t[k>>2]|0;if(!b){b=u8(j,0,0,0,32)|0;if(!b){G=53;break r}t[b+24>>2]=w;t[b+28>>2]=0;Q=u8(j,0,0,0,t[H>>2]<<2)|0;t[b+20>>2]=Q;if(!Q){G=60;break r}t[k>>2]=b;w=b}else w=b;t[w>>2]=z;t[w+4>>2]=D;t[w+8>>2]=t[v>>2];t[w+12>>2]=t[m+12>>2];t[w+16>>2]=t[S>>2];if((t[H>>2]|0)>0){k=t[w+20>>2]|0;b=0;do{t[k+(b<<2)>>2]=t[s+(b<<2)>>2];b=b+1|0}while((b|0)<(t[H>>2]|0))}b=t[m+16>>2]|0;if(!b)k=g;else{k=t[b>>2]|0;if((k|0)<=-1){k=g;break}d=t[w+20>>2]|0;do{b=b+4|0;t[d+(k<<2)>>2]=z;k=t[b>>2]|0}while((k|0)>-1);k=g}}}while(0);v=m+40|0;if(!(t[v>>2]|0))break;else{m=m+32|0;g=k}}if(u){b=t[u>>2]|0;if((b|0)>-1)do{t[s+(b<<2)>>2]=z;u=u+4|0;b=t[u>>2]|0}while((b|0)>-1)}else u=0;if(!k)G=171;else{v=z;d=D;E=k;B=u;G=79}}else{u=0;G=171}i:while(1){if((G|0)==79){if((E|0)==(t[V>>2]|0)){if((p|0)>=(v|0)){if(!(R&(p|0)==(v|0))){u=B;G=171;continue}u=t[H>>2]|0;if(!(a6(u,t[x>>2]|0,s,r)|0)){u=B;G=171;continue}}else{if(N){p=v;u=B;G=171;continue}u=t[H>>2]|0}if((u|0)>0)u=0;else{p=v;u=B;G=171;continue}while(1){t[r+(u<<2)>>2]=t[s+(u<<2)>>2];u=u+1|0;if((u|0)>=(t[H>>2]|0)){p=v;u=B;G=171;continue i}}}m=E+8|0;if((t[m>>2]|0)!=0?(t[E+20>>2]&256|0)!=0:0){b=t[E+24>>2]|0;r6(b+1|0,o,t[X>>2]&-9,e,s,v);Q=t[o+(b<<3)>>2]|0;b=(t[o+(b<<3)+4>>2]|0)-Q|0;if(y1(A+Q|0,d+-1|0,b)|0){u=B;G=171;continue}Q=(b|0)==0;u=Q&1;k=t[E+12>>2]|0;if(Q?t[c+(k<<2)>>2]|0:0){u=B;G=171;continue}t[c+(k<<2)>>2]=u;b=b+-1|0;d=d+b|0;b=b+v|0;k=t[S>>2]|0;u=C3(S,d,4)|0;if((u|0)<1)if((u|0)<0){i=1;break A}else u=1;L=d+u|0;Q=u}else{k=t[S>>2]|0;if(!k){u=B;G=171;continue}u=C3(S,d,4)|0;if((u|0)<1)if((u|0)<0){i=1;break A}else u=1;b=v;L=d+u|0;Q=u}v=b+i|0;if(!(t[m>>2]|0)){i=Q;u=B;G=171;continue}y=(v|0)!=0;C=(k|0)==95;I=(v|0)==0;G=F&(k|0)==10;Z=(v|0)<1&Y;g=0;u=B;while(1){a:do{if((t[E>>2]|0)>>>0<=k>>>0){if((t[E+4>>2]|0)>>>0>>0)break;d=E+20|0;i=t[d>>2]|0;do{if(i|0){if(!((i&1|0)==0|Z|G))break a;if(i&2|0?(B=t[S>>2]|0,!((B|P|0)==0|F&(B|0)==10)):0)break a;do{if(i&16|0){if(C)break a;if(t4(k)|0)break a;i=t[S>>2]|0;if((i|0)==95)break;if(!(t4(i)|0))break a}}while(0);i=t[d>>2]|0;if(i&32){if(C){i=t[S>>2]|0;if((i|0)==95)break a}else{B=(t4(k)|0)==0;i=t[S>>2]|0;if(B|(i|0)==95)break a}if(t4(i)|0)break a;i=t[d>>2]|0}b=t[S>>2]|0;do{if((b|0)!=0&(y&(i&64|0)!=0)){if(C)i=1;else{i=(t4(k)|0)!=0;b=t[S>>2]|0}if((b|0)==95)if(i)break a;else break;else if(i^(t4(b)|0)!=0)break;else break a}}while(0);do{if(t[d>>2]&128|0){i=t[S>>2]|0;if(I|(i|0)==0)break a;if(C)b=1;else{b=(t4(k)|0)!=0;i=t[S>>2]|0}if((i|0)==95)if(b)break;else break a;else if(b^(t4(i)|0)!=0)break a;else break}}while(0);i=t[d>>2]|0;do{if(i&4){if(t[X>>2]&2|0)break;if(!(a4(k,t[E+24>>2]|0)|0))break a;i=t[d>>2]|0}}while(0);do{if(i&4|0){if(!(t[X>>2]&2))break;B=u4(k)|0;i=E+24|0;if(a4(B,t[i>>2]|0)|0)break;B=J1(k)|0;if(!(a4(B,t[i>>2]|0)|0))break a}}while(0);if(!(t[d>>2]&8))break;if(i6(t[E+28>>2]|0,k,t[X>>2]&2)|0)break a}}while(0);if(!g){g=t[m>>2]|0;u=t[E+16>>2]|0;break}b=w+28|0;i=t[b>>2]|0;if(!i){i=u8(j,0,0,0,32)|0;if(!i){G=145;break r}t[i+24>>2]=w;t[i+28>>2]=0;B=u8(j,0,0,0,t[H>>2]<<2)|0;t[i+20>>2]=B;if(!B){G=152;break r}t[b>>2]=i;w=i}else w=i;t[w>>2]=v;t[w+4>>2]=L;t[w+8>>2]=t[m>>2];t[w+12>>2]=t[E+12>>2];t[w+16>>2]=t[S>>2];if((t[H>>2]|0)>0){b=t[w+20>>2]|0;i=0;do{t[b+(i<<2)>>2]=t[s+(i<<2)>>2];i=i+1|0}while((i|0)<(t[H>>2]|0))}i=t[E+16>>2]|0;if(!i)break;b=t[i>>2]|0;if((b|0)<=-1)break;d=t[w+20>>2]|0;do{t[d+(b<<2)>>2]=v;i=i+4|0;b=t[i>>2]|0}while((b|0)>-1)}}while(0);m=E+40|0;if(!(t[m>>2]|0))break;else E=E+32|0}if(!g){i=Q;G=171;continue}if(u){i=t[u>>2]|0;if((i|0)>-1){do{u=u+4|0;t[s+(i<<2)>>2]=v;i=t[u>>2]|0}while((i|0)>-1);k=p;b=L;i=Q}else{k=p;b=L;i=Q}}else{k=p;b=L;i=Q;u=0}}else if((G|0)==171){G=0;d=t[w+24>>2]|0;if(!d)break;g=t[w+8>>2]|0;if(t[g+20>>2]&256|0)t[c+(t[w+12>>2]<<2)>>2]=0;v=t[w>>2]|0;m=t[w+4>>2]|0;t[S>>2]=t[w+16>>2];k=t[H>>2]|0;if((k|0)>0){w=t[w+20>>2]|0;b=0;do{t[s+(b<<2)>>2]=t[w+(b<<2)>>2];b=b+1|0}while((b|0)<(k|0));w=d;k=p;b=m}else{w=d;k=p;b=m}}d=b;p=k;E=g;B=u;G=79}u=(p|0)>-1;if(u|(t[S>>2]|0)==0){G=180;break}t[S>>2]=W;v=D;d=z;u=t[H>>2]|0;Z=W}if((G|0)==53){o8(j);if(s|0)G2(l);if(o|0)G2(f);if(!c){i=12;break e}G2(n);i=12;break e}else if((G|0)==60){o8(j);if(s|0)G2(l);if(o|0)G2(f);if(!c){i=12;break e}G2(n);i=12;break e}else if((G|0)==145){o8(j);if(s|0)G2(l);if(o|0)G2(f);if(!c){i=12;break e}G2(n);i=12;break e}else if((G|0)==152){o8(j);if(s|0)G2(l);if(o|0)G2(f);if(!c){i=12;break e}G2(n);i=12;break e}else if((G|0)==180){t[a>>2]=p;i=(u^1)&1;break}}}while(0);o8(j);if(s|0)G2(l);if(o|0)G2(f);if(c)G2(n)}else i=12}while(0);h=U;return i|0}function A6(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;var n=0,f=0,l=0,s=0,c=0,o=0,u=0,b=0,w=0,k=0,d=0,v=0,g=0,m=0,p=0,E=0,B=0,y=0,C=0,I=0,Z=0,G=0,L=0,Q=0,D=0,z=0,W=0,Y=0,F=0,M=0,V=0,N=0,R=0,x=0,J=0,H=0,X=0,S=0,j=0,U=0,T=0;T=h;h=h+16|0;S=T;t[S>>2]=0;c=i&1;J=i&2;H=e+56|0;s=t[H>>2]&4;if(!r)R=0;else R=t[e+40>>2]|0;x=R<<2;l=t[e+52>>2]|0;f=l<<3;n=f+8|0;i=x+12+f+(n+(P(x,l)|0)<<1)|0;j=Z2(i)|0;if(!j)i=12;else{z6(j|0,0,i|0)|0;i=j+x|0;o=i&3;o=i+((o|0)==0?0:4-o|0)|0;i=o+n|0;u=i&3;u=i+((u|0)==0?0:4-u|0)|0;i=u+n|0;N=i&3;N=i+((N|0)==0?0:4-N|0)|0;i=N+f|0;n=i&3;f=(l|0)>0;if(f){i=i+((n|0)==0?0:4-n|0)|0;n=0;while(1){t[u+(n<<3)+4>>2]=i;i=i+x|0;t[o+(n<<3)+4>>2]=i;n=n+1|0;if((n|0)>=(l|0))break;else i=i+x|0}if(f){i=0;do{t[N+(i<<3)>>2]=-1;i=i+1|0}while((i|0)<(l|0))}}i=C3(S,A,4)|0;if((i|0)<1)if((i|0)<0)i=1;else{l=1;U=11}else{l=i;U=11}e:do{if((U|0)==11){V=e+8|0;M=(s|0)!=0;Q=(c|0)==0;D=(R|0)>0;z=e+12|0;W=(R|0)<1;Y=e+44|0;F=e+32|0;G=e+36|0;L=(R|0)==0;f=0;p=A+l|0;m=0;s=0;i=-1;n=o;I=j;B=o;E=u;while(1){if((i|0)<0){e=t[V>>2]|0;c=e+8|0;A:do{if(t[c>>2]|0){w=(m|0)!=0;k=(f|0)==95;d=(m|0)==0;g=M&(f|0)==10;v=(m|0)<1&Q;while(1){r:while(1){b=e+12|0;if((t[N+(t[b>>2]<<3)>>2]|0)>=(m|0))break;u=e+20|0;A=t[u>>2]|0;if(!A){U=46;break}i:do{if((A&1|0)==0|v|g){if(A&2|0?(Z=t[S>>2]|0,!((Z|J|0)==0|M&(Z|0)==10)):0)break;do{if(A&16|0){if(k)break i;if(t4(f)|0)break i;A=t[S>>2]|0;if((A|0)==95)break;if(!(t4(A)|0))break i}}while(0);A=t[u>>2]|0;if(A&32){if(k){A=t[S>>2]|0;if((A|0)==95)break}else{Z=(t4(f)|0)==0;A=t[S>>2]|0;if(Z|(A|0)==95)break}if(t4(A)|0)break;A=t[u>>2]|0}o=t[S>>2]|0;do{if((o|0)!=0&(w&(A&64|0)!=0)){if(k)A=1;else{A=(t4(f)|0)!=0;o=t[S>>2]|0}if((o|0)==95)if(A)break i;else break;else if(A^(t4(o)|0)!=0)break;else break i}}while(0);if(!(t[u>>2]&128)){U=46;break r}A=t[S>>2]|0;if(d|(A|0)==0)break;if(k)o=1;else{o=(t4(f)|0)!=0;A=t[S>>2]|0}if((A|0)==95)if(o){U=46;break r}else break;else if(o^(t4(A)|0)!=0)break;else{U=46;break r}}}while(0);c=e+40|0;if(!(t[c>>2]|0))break A;else e=e+32|0}if((U|0)==46){U=0;t[n>>2]=t[c>>2];if(D)z6(t[n+4>>2]|0,-1,x|0)|0;c=t[e+16>>2]|0;if(c|0?(X=t[c>>2]|0,(X|0)>-1):0){o=n+4|0;A=X;do{if((A|0)<(R|0))t[(t[o>>2]|0)+(A<<2)>>2]=m;c=c+4|0;A=t[c>>2]|0}while((A|0)>-1)}c=(t[n>>2]|0)!=(t[z>>2]|0);if(c|W){s=c?s:1;i=c?i:m;c=n+4|0}else{c=n+4|0;s=t[c>>2]|0;i=0;do{t[r+(i<<2)>>2]=t[s+(i<<2)>>2];i=i+1|0}while((i|0)!=(R|0));s=1;i=m}Z=t[b>>2]|0;t[N+(Z<<3)>>2]=m;t[N+(Z<<3)+4>>2]=c;n=n+8|0}c=e+40|0;if(!(t[c>>2]|0))break;else e=e+32|0}}}while(0);t[n>>2]=0;n=t[S>>2]|0;if(!n)break;else f=n}else{if(L)break;f=t[S>>2]|0;if(!((n|0)!=(B|0)&(f|0)!=0))break}Z=m+l|0;n=C3(S,p,4)|0;if((n|0)<1)if((n|0)<0){i=1;break e}else l=1;else l=n;C=p+l|0;if((s|0)!=0&(t[Y>>2]|0)!=0){if(!(t[B>>2]|0))n=E;else{b=t[G>>2]|0;w=t[b>>2]|0;k=(w|0)>-1;u=B;n=E;do{o=u+4|0;A:do{if(k){c=0;A=w;do{e=t[b+((c|1)<<2)>>2]|0;if((A|0)>=(R|0))break A;s=t[o>>2]|0;if((t[s+(e<<2)>>2]|0)==(t[r+(e<<2)>>2]|0)?(t[s+(A<<2)>>2]|0)<(t[r+(A<<2)>>2]|0):0)break A;c=c+2|0;A=t[b+(c<<2)>>2]|0}while((A|0)>-1);c=o;U=75}else{c=o;s=t[o>>2]|0;U=75}}while(0);if((U|0)==75){U=0;t[n>>2]=t[u>>2];p=n+4|0;y=t[p>>2]|0;t[p>>2]=s;t[c>>2]=y;n=n+8|0}u=u+8|0}while((t[u>>2]|0)!=0)}t[n>>2]=0;y=B;s=0}else{y=E;E=B}c=t[E>>2]|0;if(!c){c=I;n=y}else{d=(Z|0)!=0;v=(f|0)==95;g=(Z|0)==0;p=M&(f|0)==10;m=(Z|0)<1&Q;k=E;e=I;n=y;while(1){A=c+8|0;if(t[A>>2]|0){w=k+4|0;b=e;u=A;while(1){A:do{if((t[c>>2]|0)>>>0<=f>>>0?(t[c+4>>2]|0)>>>0>=f>>>0:0){o=c+20|0;e=t[o>>2]|0;do{if(e|0){if(!((e&1|0)==0|m|p)){e=b;break A}if(e&2|0?(I=t[S>>2]|0,!((I|J|0)==0|M&(I|0)==10)):0){e=b;break A}do{if(e&16|0){if(v){e=b;break A}if(t4(f)|0){e=b;break A}e=t[S>>2]|0;if((e|0)==95)break;if(!(t4(e)|0)){e=b;break A}}}while(0);e=t[o>>2]|0;if(e&32){if(v){e=t[S>>2]|0;if((e|0)==95){e=b;break A}}else{I=(t4(f)|0)==0;e=t[S>>2]|0;if(I|(e|0)==95){e=b;break A}}if(t4(e)|0){e=b;break A}e=t[o>>2]|0}A=t[S>>2]|0;do{if((A|0)!=0&(d&(e&64|0)!=0)){if(v)e=1;else{e=(t4(f)|0)!=0;A=t[S>>2]|0}if((A|0)==95)if(e){e=b;break A}else break;else if(e^(t4(A)|0)!=0)break;else{e=b;break A}}}while(0);do{if(t[o>>2]&128|0){e=t[S>>2]|0;if(g|(e|0)==0){e=b;break A}if(v)A=1;else{A=(t4(f)|0)!=0;e=t[S>>2]|0}if((e|0)==95)if(A)break;else{e=b;break A}else if(A^(t4(e)|0)!=0){e=b;break A}else break}}while(0);e=t[o>>2]|0;do{if(e&4){if(t[H>>2]&2|0)break;if(!(a4(f,t[c+24>>2]|0)|0)){e=b;break A}e=t[o>>2]|0}}while(0);do{if(e&4|0){if(!(t[H>>2]&2))break;I=u4(f)|0;e=c+24|0;if(a4(I,t[e>>2]|0)|0)break;I=J1(f)|0;if(!(a4(I,t[e>>2]|0)|0)){e=b;break A}}}while(0);if(!(t[o>>2]&8))break;if(i6(t[c+28>>2]|0,f,t[H>>2]&2)|0){e=b;break A}}}while(0);if(D){A=t[w>>2]|0;e=0;do{t[b+(e<<2)>>2]=t[A+(e<<2)>>2];e=e+1|0}while((e|0)!=(R|0))}e=t[c+16>>2]|0;do{if(e|0){A=t[e>>2]|0;if((A|0)<=-1)break;do{if((A|0)<(R|0))t[b+(A<<2)>>2]=Z;e=e+4|0;A=t[e>>2]|0}while((A|0)>-1)}}while(0);e=t[c+12>>2]|0;A=N+(e<<3)|0;if((t[A>>2]|0)>=(Z|0)){e=t[N+(e<<3)+4>>2]|0;A=t[e>>2]|0;if(!(a6(R,t[F>>2]|0,b,A)|0)){e=b;break}t[e>>2]=b;if((t[u>>2]|0)!=(t[z>>2]|0)){e=A;break}if(D)i=0;else{s=1;e=A;i=Z;break}while(1){t[r+(i<<2)>>2]=t[b+(i<<2)>>2];i=i+1|0;if((i|0)==(R|0)){s=1;e=A;i=Z;break A}}}I=t[u>>2]|0;t[n>>2]=I;B=n+4|0;o=t[B>>2]|0;t[B>>2]=b;t[A>>2]=Z;t[N+(e<<3)+4>>2]=B;do{if((t[z>>2]|0)==(I|0)){if((i|0)==-1)if(D)i=0;else{i=Z;s=1;break}else{if(!D)break;if((t[b>>2]|0)>(t[r>>2]|0))break;else i=0}do{t[r+(i<<2)>>2]=t[b+(i<<2)>>2];i=i+1|0}while((i|0)<(R|0));i=Z;s=1}}while(0);e=o;n=n+8|0}else e=b}while(0);u=c+40|0;if(!(t[u>>2]|0))break;else{c=c+32|0;b=e}}}k=k+8|0;c=t[k>>2]|0;if(!c){c=e;break}}}t[n>>2]=0;p=C;m=Z;I=c;B=y}t[a>>2]=i;i=i>>>31}}while(0);G2(j)}h=T;return i|0}function r6(e,A,r,i,a,n){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;n=n|0;var f=0,l=0,s=0,c=0,o=0,u=0,b=0,h=0;if((r&8|0)==0&(n|0)>-1?(u=t[i+16>>2]|0,b=t[i+28>>2]|0,o=(e|0)!=0&(b|0)!=0,o):0){c=t[i+48>>2]|0;s=0;do{r=t[u+(s*12|0)>>2]|0;if((r|0)==(c|0))l=n;else l=t[a+(r<<2)>>2]|0;f=A+(s<<3)|0;t[f>>2]=l;r=t[u+(s*12|0)+4>>2]|0;if((r|0)==(c|0))r=n;else r=t[a+(r<<2)>>2]|0;i=A+(s<<3)+4|0;t[i>>2]=r;if((r|0)==-1|(l|0)==-1){t[i>>2]=-1;t[f>>2]=-1}s=s+1|0}while(s>>>0>>0&s>>>0>>0);if(o){r=0;do{l=A+(r<<3)+4|0;s=t[u+(r*12|0)+8>>2]|0;if(s|0?(h=t[s>>2]|0,(h|0)>-1):0){c=A+(r<<3)|0;f=0;a=h;i=t[c>>2]|0;do{if(!((i|0)>=(t[A+(a<<3)>>2]|0)?(t[l>>2]|0)<=(t[A+(a<<3)+4>>2]|0):0)){t[l>>2]=-1;t[c>>2]=-1;i=-1}f=f+1|0;a=t[s+(f<<2)>>2]|0}while((a|0)>-1)}r=r+1|0}while(r>>>0>>0&r>>>0>>0)}else r=0}else r=0;if(r>>>0>>0)z6(A+(r<<3)|0,-1,e-r<<3|0)|0;return}function i6(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0;i=t[e>>2]|0;e:do{if(!i)r=0;else{a=(r|0)==0;r=i;while(1){if(a){if(a4(A,r)|0){r=1;break e}}else{i=J1(A)|0;if(a4(i,t[e>>2]|0)|0){r=1;break e}i=u4(A)|0;if(a4(i,t[e>>2]|0)|0){r=1;break e}}e=e+4|0;r=t[e>>2]|0;if(!r){r=0;break}}}}while(0);return r|0}function a6(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0,n=0,f=0;e:do{if((e|0)>0){a=0;while(1){f=t[r+(a<<2)>>2]|0;n=t[i+(a<<2)>>2]|0;if(!(t[A+(a<<2)>>2]|0)){if((f|0)<(n|0)){a=1;break e}if((f|0)>(n|0)){a=0;break e}}else{if((f|0)>(n|0)){a=1;break e}if((f|0)<(n|0)){a=0;break e}}a=a+1|0;if((a|0)>=(e|0)){a=0;break}}}else a=0}while(0);return a|0}function t6(e,A,r,a){e=e|0;A=A|0;r=r|0;a=a|0;var n=0,f=0,l=0,s=0,c=0,o=0,u=0;c=P(r,A)|0;r=(A|0)==0?0:r;if((t[a+76>>2]|0)>-1)s=d4(a)|0;else s=0;n=a+74|0;f=i[n>>0]|0;i[n>>0]=f+255|f;n=a+4|0;f=t[n>>2]|0;u=(t[a+8>>2]|0)-f|0;l=u>>>0>>0?u:c;if((u|0)>0){Q6(e|0,f|0,l|0)|0;t[n>>2]=f+l;n=c-l|0;e=e+l|0}else n=c;e:do{if(!n)o=13;else{l=a+32|0;while(1){if(Y1(a)|0)break;f=L5[t[l>>2]&63](a,e,n)|0;if((f+1|0)>>>0<2)break;n=n-f|0;if(!n){o=13;break e}else e=e+f|0}if(s|0)v4(a);r=((c-n|0)>>>0)/(A>>>0)|0}}while(0);if((o|0)==13)if(s)v4(a);return r|0}function n6(e){e=e|0;var A=0;if((t[e+76>>2]|0)>-1){A=(d4(e)|0)==0;e=f6(e)|0}else e=f6(e)|0;return e|0}function f6(e){e=e|0;var A=0;if(!(t[e>>2]&128))A=1;else A=(t[e+20>>2]|0)>>>0>(t[e+28>>2]|0)>>>0?2:1;A=L5[t[e+40>>2]&63](e,0,A)|0;if((A|0)>=0)A=A-(t[e+8>>2]|0)+(t[e+4>>2]|0)+(t[e+20>>2]|0)-(t[e+28>>2]|0)|0;return A|0}function l6(e){e=e|0;(t[e+76>>2]|0)>-1?d4(e)|0:0;return t[e+60>>2]|0}function s6(e){e=e|0;var A=0,r=0,a=0,n=0;a=t[15679]|0;if((t[a+76>>2]|0)>-1)n=d4(a)|0;else n=0;do{if((Z3(e,a)|0)<0)e=-1;else{if((i[a+75>>0]|0)!=10?(A=a+20|0,r=t[A>>2]|0,r>>>0<(t[a+16>>2]|0)>>>0):0){t[A>>2]=r+1;i[r>>0]=10;e=0;break}e=(L3(a,10)|0)>>31}}while(0);if(n|0)v4(a);return e|0}function c6(){var e=0,A=0,r=0,a=0,n=0,f=0,l=0,s=0,c=0;c=h;h=h+48|0;l=c+24|0;f=c+16|0;n=c;A=c+28|0;e=A;r=153686;a=e+20|0;do{i[e>>0]=i[r>>0]|0;e=e+1|0;r=r+1|0}while((e|0)<(a|0));r=A+13|0;e=0;while(1){t3(r)|0;t[n>>2]=A;t[n+4>>2]=32962;t[n+8>>2]=384;a=N2(Me(5,n|0)|0)|0;if((a|0)>-1){s=4;break}if((e|0)<99)e=e+1|0;else{e=0;break}}if((s|0)==4){t[f>>2]=A;Ce(10,f|0)|0;e=B3(a,153706)|0;if(!e){t[l>>2]=a;Ne(6,l|0)|0;e=0}}h=c;return e|0}function o6(e){e=e|0;var A=0,r=0,i=0;if((t[e+76>>2]|0)>=0?(d4(e)|0)!=0:0){A=e+4|0;r=t[A>>2]|0;if(r>>>0<(t[e+8>>2]|0)>>>0){t[A>>2]=r+1;A=n[r>>0]|0}else A=W1(e)|0}else i=3;do{if((i|0)==3){A=e+4|0;r=t[A>>2]|0;if(r>>>0<(t[e+8>>2]|0)>>>0){t[A>>2]=r+1;A=n[r>>0]|0;break}else{A=W1(e)|0;break}}}while(0);return A|0}function u6(e,A){e=e|0;A=A|0;var r=0,a=0,n=0,f=0,l=0,s=0,c=0;if((t[A+76>>2]|0)>=0?(d4(A)|0)!=0:0){a=e&255;r=e&255;if((r|0)!=(i[A+75>>0]|0)?(l=A+20|0,s=t[l>>2]|0,s>>>0<(t[A+16>>2]|0)>>>0):0){t[l>>2]=s+1;i[s>>0]=a}else r=L3(A,e)|0;v4(A)}else c=3;do{if((c|0)==3){a=e&255;r=e&255;if((r|0)!=(i[A+75>>0]|0)?(n=A+20|0,f=t[n>>2]|0,f>>>0<(t[A+16>>2]|0)>>>0):0){t[n>>2]=f+1;i[f>>0]=a;break}r=L3(A,e)|0}}while(0);return r|0}function b6(e){e=e|0;return n6(e)|0}function h6(){}function w6(e,A){e=e|0;A=A|0;var r=0,i=0,a=0,t=0;t=e&65535;a=A&65535;r=P(a,t)|0;i=e>>>16;e=(r>>>16)+(P(a,i)|0)|0;a=A>>>16;A=P(a,t)|0;return(G=(e>>>16)+(P(a,i)|0)+(((e&65535)+A|0)>>>16)|0,e+A<<16|r&65535|0)|0}function k6(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0,t=0;a=e;t=r;r=w6(a,t)|0;e=G;return(G=(P(A,t)|0)+(P(i,a)|0)+e|e&0,r|0|0)|0}function d6(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;r=e+r>>>0;return(G=A+i+(r>>>0>>0|0)>>>0,r|0)|0}function v6(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;i=A-i-(r>>>0>e>>>0|0)>>>0;return(G=i,e-r>>>0|0)|0}function g6(e){e=e|0;var A=0;A=i[k+(e&255)>>0]|0;if((A|0)<8)return A|0;A=i[k+(e>>8&255)>>0]|0;if((A|0)<8)return A+8|0;A=i[k+(e>>16&255)>>0]|0;if((A|0)<8)return A+16|0;return(i[k+(e>>>24)>>0]|0)+24|0}function m6(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;var n=0,f=0,l=0,s=0,c=0,o=0,u=0,b=0,h=0,w=0;o=e;s=A;c=s;f=r;b=i;l=b;if(!c){n=(a|0)!=0;if(!l){if(n){t[a>>2]=(o>>>0)%(f>>>0);t[a+4>>2]=0}b=0;a=(o>>>0)/(f>>>0)>>>0;return(G=b,a)|0}else{if(!n){b=0;a=0;return(G=b,a)|0}t[a>>2]=e|0;t[a+4>>2]=A&0;b=0;a=0;return(G=b,a)|0}}n=(l|0)==0;do{if(f){if(!n){n=(j(l|0)|0)-(j(c|0)|0)|0;if(n>>>0<=31){u=n+1|0;l=31-n|0;A=n-31>>31;f=u;e=o>>>(u>>>0)&A|c<>>(u>>>0)&A;n=0;l=o<>2]=e|0;t[a+4>>2]=s|A&0;b=0;a=0;return(G=b,a)|0}n=f-1|0;if(n&f|0){l=(j(f|0)|0)+33-(j(c|0)|0)|0;w=64-l|0;u=32-l|0;s=u>>31;h=l-32|0;A=h>>31;f=l;e=u-1>>31&c>>>(h>>>0)|(c<>>(l>>>0))&A;A=A&c>>>(l>>>0);n=o<>>(h>>>0))&s|o<>31;break}if(a|0){t[a>>2]=n&o;t[a+4>>2]=0}if((f|0)==1){h=s|A&0;w=e|0|0;return(G=h,w)|0}else{w=g6(f|0)|0;h=c>>>(w>>>0)|0;w=c<<32-w|o>>>(w>>>0)|0;return(G=h,w)|0}}else{if(n){if(a|0){t[a>>2]=(c>>>0)%(f>>>0);t[a+4>>2]=0}h=0;w=(c>>>0)/(f>>>0)>>>0;return(G=h,w)|0}if(!o){if(a|0){t[a>>2]=0;t[a+4>>2]=(c>>>0)%(l>>>0)}h=0;w=(c>>>0)/(l>>>0)>>>0;return(G=h,w)|0}n=l-1|0;if(!(n&l)){if(a|0){t[a>>2]=e|0;t[a+4>>2]=n&c|A&0}h=0;w=c>>>((g6(l|0)|0)>>>0);return(G=h,w)|0}n=(j(l|0)|0)-(j(c|0)|0)|0;if(n>>>0<=30){A=n+1|0;l=31-n|0;f=A;e=c<>>(A>>>0);A=c>>>(A>>>0);n=0;l=o<>2]=e|0;t[a+4>>2]=s|A&0;h=0;w=0;return(G=h,w)|0}}while(0);if(!f){c=l;s=0;l=0}else{u=r|0|0;o=b|i&0;c=d6(u|0,o|0,-1,-1)|0;r=G;s=l;l=0;do{i=s;s=n>>>31|s<<1;n=l|n<<1;i=e<<1|i>>>31|0;b=e>>>31|A<<1|0;v6(c|0,r|0,i|0,b|0)|0;w=G;h=w>>31|((w|0)<0?-1:0)<<1;l=h&1;e=v6(i|0,b|0,h&u|0,(((w|0)<0?-1:0)>>31|((w|0)<0?-1:0)<<1)&o|0)|0;A=G;f=f-1|0}while((f|0)!=0);c=s;s=0}f=0;if(a|0){t[a>>2]=e;t[a+4>>2]=A}h=(n|0)>>>31|(c|f)<<1|(f<<1|n>>>31)&0|s;w=(n<<1|0>>>31)&-2|l;return(G=h,w)|0}function p6(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;return m6(e,A,r,i,0)|0}function E6(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0,n=0;n=h;h=h+16|0;a=n|0;m6(e,A,r,i,a)|0;h=n;return(G=t[a+4>>2]|0,t[a>>2]|0)|0}function B6(e,A,r){e=e|0;A=A|0;r=r|0;if((r|0)<32){G=A>>r;return e>>>r|(A&(1<>r-32|0}function y6(e,A,r){e=e|0;A=A|0;r=r|0;if((r|0)<32){G=A>>>r;return e>>>r|(A&(1<>>r-32|0}function C6(e,A,r){e=e|0;A=A|0;r=r|0;if((r|0)<32){G=A<>>32-r;return e<>8&255|0}function Z6(e){e=e|0;return(e&255)<<24|(e>>8&255)<<16|(e>>16&255)<<8|e>>>24|0}function G6(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;var a=0;g=g+1|0;t[e>>2]=g;while((a|0)<(i|0)){if(!(t[r+(a<<3)>>2]|0)){t[r+(a<<3)>>2]=g;t[r+((a<<3)+4)>>2]=A;t[r+((a<<3)+8)>>2]=0;G=i;return r|0}a=a+1|0}i=i*2|0;r=Q2(r|0,8*(i+1|0)|0)|0;r=G6(e|0,A|0,r|0,i|0)|0;G=i;return r|0}function L6(e,A,r){e=e|0;A=A|0;r=r|0;var i=0,a=0;while((a|0)<(r|0)){i=t[A+(a<<3)>>2]|0;if(!i)break;if((i|0)==(e|0))return t[A+((a<<3)+4)>>2]|0;a=a+1|0}return 0}function Q6(e,A,r){e=e|0;A=A|0;r=r|0;var a=0,n=0,f=0;if((r|0)>=8192)return je(e|0,A|0,r|0)|0;f=e|0;n=e+r|0;if((e&3)==(A&3)){while(e&3){if(!r)return f|0;i[e>>0]=i[A>>0]|0;e=e+1|0;A=A+1|0;r=r-1|0}r=n&-4|0;a=r-64|0;while((e|0)<=(a|0)){t[e>>2]=t[A>>2];t[e+4>>2]=t[A+4>>2];t[e+8>>2]=t[A+8>>2];t[e+12>>2]=t[A+12>>2];t[e+16>>2]=t[A+16>>2];t[e+20>>2]=t[A+20>>2];t[e+24>>2]=t[A+24>>2];t[e+28>>2]=t[A+28>>2];t[e+32>>2]=t[A+32>>2];t[e+36>>2]=t[A+36>>2];t[e+40>>2]=t[A+40>>2];t[e+44>>2]=t[A+44>>2];t[e+48>>2]=t[A+48>>2];t[e+52>>2]=t[A+52>>2];t[e+56>>2]=t[A+56>>2];t[e+60>>2]=t[A+60>>2];e=e+64|0;A=A+64|0}while((e|0)<(r|0)){t[e>>2]=t[A>>2];e=e+4|0;A=A+4|0}}else{r=n-4|0;while((e|0)<(r|0)){i[e>>0]=i[A>>0]|0;i[e+1>>0]=i[A+1>>0]|0;i[e+2>>0]=i[A+2>>0]|0;i[e+3>>0]=i[A+3>>0]|0;e=e+4|0;A=A+4|0}}while((e|0)<(n|0)){i[e>>0]=i[A>>0]|0;e=e+1|0;A=A+1|0}return f|0}function D6(e,A,r){e=e|0;A=A|0;r=r|0;var a=0;if((A|0)<(e|0)&(e|0)<(A+r|0)){a=e;A=A+r|0;e=e+r|0;while((r|0)>0){e=e-1|0;A=A-1|0;r=r-1|0;i[e>>0]=i[A>>0]|0}e=a}else Q6(e,A,r)|0;return e|0}function z6(e,A,r){e=e|0;A=A|0;r=r|0;var a=0,n=0,f=0,l=0;f=e+r|0;A=A&255;if((r|0)>=67){while(e&3){i[e>>0]=A;e=e+1|0}a=f&-4|0;n=a-64|0;l=A|A<<8|A<<16|A<<24;while((e|0)<=(n|0)){t[e>>2]=l;t[e+4>>2]=l;t[e+8>>2]=l;t[e+12>>2]=l;t[e+16>>2]=l;t[e+20>>2]=l;t[e+24>>2]=l;t[e+28>>2]=l;t[e+32>>2]=l;t[e+36>>2]=l;t[e+40>>2]=l;t[e+44>>2]=l;t[e+48>>2]=l;t[e+52>>2]=l;t[e+56>>2]=l;t[e+60>>2]=l;e=e+64|0}while((e|0)<(a|0)){t[e>>2]=l;e=e+4|0}}while((e|0)<(f|0)){i[e>>0]=A;e=e+1|0}return f-r|0}function W6(e){e=e|0;var A=0,r=0;r=e+15&-16|0;A=t[o>>2]|0;e=A+r|0;if((r|0)>0&(e|0)<(A|0)|(e|0)<0){q()|0;ye(12);return-1}t[o>>2]=e;if((e|0)>(_()|0)?(O()|0)==0:0){t[o>>2]=A;ye(12);return-1}return A|0}function Y6(e){e=e|0;return+E5[e&1]()}function F6(e,A,r,i){e=e|0;A=+A;r=+r;i=+i;return+B5[e&7](+A,+r,+i)}function M6(e,A){e=e|0;A=A|0;return+y5[e&1](A|0)}function V6(e){e=e|0;return C5[e&3]()|0}function N6(e,A){e=e|0;A=A|0;return I5[e&63](A|0)|0}function R6(e,A,r){e=e|0;A=A|0;r=r|0;return Z5[e&127](A|0,r|0)|0}function x6(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=+i;a=+a;return G5[e&3](A|0,r|0,+i,+a)|0}function J6(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;return L5[e&63](A|0,r|0,i|0)|0}function H6(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;return Q5[e&127](A|0,r|0,i|0,a|0)|0}function P6(e,A,r,i,a,t){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;t=t|0;return D5[e&127](A|0,r|0,i|0,a|0,t|0)|0}function X6(e,A,r,i,a,t,n){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;t=t|0;n=n|0;return z5[e&1](A|0,r|0,i|0,a|0,t|0,n|0)|0}function S6(e,A,r,i,a,t,n,f,l,s,c){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;t=t|0;n=n|0;f=f|0;l=l|0;s=s|0;c=c|0;return W5[e&3](A|0,r|0,i|0,a|0,t|0,n|0,f|0,l|0,s|0,c|0)|0}function j6(e){e=e|0;Y5[e&15]()}function U6(e,A){e=e|0;A=A|0;F5[e&127](A|0)}function T6(e,A,r){e=e|0;A=A|0;r=r|0;M5[e&63](A|0,r|0)}function O6(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;V5[e&127](A|0,r|0,i|0)}function _6(e,A,r,i,a,t,n){e=e|0;A=A|0;r=r|0;i=i|0;a=+a;t=+t;n=n|0;N5[e&15](A|0,r|0,i|0,+a,+t,n|0)}function q6(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;R5[e&31](A|0,r|0,i|0,a|0)}function K6(e,A,r,i,a,t){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;t=t|0;x5[e&15](A|0,r|0,i|0,a|0,t|0)}function $6(e,A,r,i,a,t,n){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;t=t|0;n=n|0;J5[e&15](A|0,r|0,i|0,a|0,t|0,n|0)}function e5(e,A,r,i,a,t,n,f,l,s){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;t=t|0;n=n|0;f=f|0;l=l|0;s=s|0;H5[e&0](A|0,r|0,i|0,a|0,t|0,n|0,f|0,l|0,s|0)}function A5(){U(0);return 0.0}function r5(e,A,r){e=+e;A=+A;r=+r;U(1);return 0.0}function i5(e){e=e|0;U(2);return 0.0}function a5(){U(3);return 0}function t5(e){e=e|0;U(4);return 0}function n5(e,A){e=e|0;A=A|0;U(5);return 0}function f5(e,A,r,i){e=e|0;A=A|0;r=+r;i=+i;U(6);return 0}function l5(e,A,r){e=e|0;A=A|0;r=r|0;U(7);return 0}function s5(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;U(8);return 0}function c5(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;U(9);return 0}function o5(e,A,r,i,a,t){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;t=t|0;U(10);return 0}function u5(e,A,r,i,a,t,n,f,l,s){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;t=t|0;n=n|0;f=f|0;l=l|0;s=s|0;U(11);return 0}function b5(){U(12)}function h5(e){e=e|0;U(13)}function w5(e,A){e=e|0;A=A|0;U(14)}function k5(e,A,r){e=e|0;A=A|0;r=r|0;U(15)}function d5(e,A,r,i,a,t){e=e|0;A=A|0;r=r|0;i=+i;a=+a;t=t|0;U(16)}function v5(e,A,r,i){e=e|0;A=A|0;r=r|0;i=i|0;U(17)}function g5(e,A,r,i,a){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;U(18)}function m5(e,A,r,i,a,t){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;t=t|0;U(19)}function p5(e,A,r,i,a,t,n,f,l){e=e|0;A=A|0;r=r|0;i=i|0;a=a|0;t=t|0;n=n|0;f=f|0;l=l|0;U(20)}var E5=[A5,sx];var B5=[r5,pY,mY,EY,BY,r5,r5,r5];var y5=[i5,kx];var C5=[a5,xj,lM,$M];var I5=[t5,kL,VG,IH,ZH,_k,$k,CA,IA,di,vi,gi,mi,pi,Ei,Bi,yi,F2,OB,km,NW,JW,JH,$F,gk,sd,vk,aM,sM,mk,oA,KF,kA,dA,us,Z2,t5,t5,t5,t5,t5,t5,t5,t5,t5,t5,t5,t5,t5,t5,t5,t5,t5,t5,t5,t5,t5,t5,t5,t5,t5,t5,t5,t5];var Z5=[n5,Ik,Ok,ed,lR,sR,eR,_N,zN,Uf,Tf,Of,_f,qf,Kf,el,Al,rl,il,al,tl,nl,fl,ll,sl,cl,ol,ul,bl,hl,wl,kl,dl,vl,gl,ml,pl,El,Bl,yl,pK,EK,yK,UK,TK,OK,_K,qK,KK,$K,e$,S$,j$,T$,l$,s$,o$,hm,ZG,wL,XL,mQ,NQ,Oz,Uz,RW,HW,NX,TS,_j,vU,mU,EU,BU,CU,yU,MU,TT,$T,AO,nq,vu,Qg,Lg,Gg,pp,cd,AM,Yp,_p,Sp,jp,UE,Z3,u6,ix,dJ,Hw,_t,Ow,qw,uA,e1,Ba,jf,ls,ss,Q2,Eo,Bo,yo,_8,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5];var G5=[f5,i_,l_,f5];var L5=[l5,EH,Cq,Lh,Vh,jh,qh,Tk,Kk,oV,aJ,Yt,CK,O$,u$,M2,V2,J2,H2,Q4,nw,NH,bq,aS,eO,Uu,Ou,Ku,$h,gp,T4,Rv,a3,tx,fV,Cr,ts,z$,B0,d0,Z0,R3,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5];var Q5=[s5,yH,QU,Iq,Dh,Rh,Uw,Xv,Tw,bk,Gk,Qk,Jk,xk,Ad,td,fd,AV,nJ,er,KA,_i,Mt,tn,an,Zo,Go,Lo,dK,vK,gK,mK,BK,ZK,N$,R$,x$,J$,H$,P$,X$,U$,q$,A$,r$,i$,a$,t$,n$,f$,c$,h$,rw,Sd,Bp,fx,$s,rc,sc,mc,Lc,Fc,Wc,Mc,mo,G0,no,Y$,F$,y0,C0,s5,s5,s5,s5,s5,s5,s5,s5,s5,s5,s5,s5,s5,s5,s5,s5,s5,s5,s5,s5,s5,s5,s5,s5,s5,s5,s5,s5,s5,s5,s5,s5,s5,s5,s5,s5,s5,s5,s5,s5,s5,s5,s5,s5,s5,s5,s5,s5,s5,s5,s5,s5,s5,s5,s5,s5,s5];var D5=[c5,Zk,WN,AR,GK,LK,SK,jK,h0,K$,$$,w$,k$,Co,Io,Q0,D0,z0,W0,F0,M0,V0,N0,R0,J0,H0,P0,X0,S0,x0,d2,v2,l2,A2,j0,U0,T0,_0,O0,q0,K0,$0,e2,r2,i2,a2,t2,n2,f2,s2,c2,o2,u2,k2,h2,b2,w2,B2,g2,m2,p2,E2,y2,C2,I2,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5];var z5=[o5,Vl];var W5=[u5,k0,I0,u5];var Y5=[b5,lx,tM,nM,fM,oM,uM,bM,xt,b5,b5,b5,b5,b5,b5,b5];var F5=[h5,$B,ey,ay,ty,ny,Iy,Zy,qy,Ky,$y,eC,AC,rC,iC,wC,kC,gC,mC,pC,EC,BC,yC,CC,VC,NC,RC,JC,HC,PC,XC,SC,jC,UC,TC,tI,nI,fI,sI,cI,oI,uI,bI,hI,wI,kI,dI,gI,zI,WI,YI,FI,jI,UI,TI,_I,sZ,cZ,oZ,bZ,hZ,wZ,kZ,dZ,vZ,gZ,mZ,pZ,QZ,DZ,zZ,WZ,lG,iG,aH,HJ,XX,dX,ZS,MS,xP,HP,yS,CS,NJ,RJ,XP,KP,eX,oX,Dk,uN,QN,hN,bN,KN,VV,xV,Ci,Qi,_Z,PW,pX,CX,SX,G2,Mq,gw,yp,dB,Rt,vr,gA,rV,nn,Ml,is,as,cs,h5,h5,h5,h5,h5,h5,h5,h5,h5];var M5=[w5,tC,cC,ZC,zC,AI,CI,JI,rZ,ZZ,RZ,rd,YN,cR,rR,qN,GN,LN,nR,fR,Gi,zi,gV,sw,mp,cM,cA,Vf,Fl,ns,fs,os,bs,w5,w5,w5,w5,w5,w5,w5,w5,w5,w5,w5,w5,w5,w5,w5,w5,w5,w5,w5,w5,w5,w5,w5,w5,w5,w5,w5,w5,w5,w5,w5];var V5=[k5,fy,ly,oy,_y,aC,nC,sC,IC,GC,DC,_C,qC,eI,mI,pI,yI,MI,VI,xI,qI,KI,AZ,EZ,BZ,IZ,YZ,FZ,NZ,Gz,Lz,Qz,BH,Qh,Nh,kw,zk,nd,Jd,Sv,op,tF,eV,uV,RV,tJ,lJ,$A,qA,Ii,Zi,Li,Di,Wi,Ft,yf,Bf,Fw,sk,md,Od,Kd,iM,nx,tV,hA,vA,Cf,Zf,Gf,Mf,Nf,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5];var N5=[d5,NE,RE,xE,JE,HE,PE,XE,SE,d5,d5,d5,d5,d5,d5,d5];var R5=[v5,sy,fC,LC,xC,KC,lI,EI,NI,$I,uZ,yZ,MZ,$Z,KZ,qZ,OZ,TZ,UZ,Cy,jZ,SZ,Lk,DN,$N,IK,_$,b$,_4,bA,wA,M$];var x5=[g5,dC,OC,rI,vI,OI,xW,Ep,mA,g5,g5,g5,g5,g5,g5,g5];var J5=[m5,cy,lC,QC,$C,BI,RI,eZ,CZ,VZ,pA,m5,m5,m5,m5,m5];var H5=[p5];return{___errno_location:R2,___muldi3:k6,___udivdi3:p6,___uremdi3:E6,_bitshift64Ashr:B6,_bitshift64Lshr:y6,_bitshift64Shl:C6,_dtextract:Xh,_free:G2,_htons:M4,_i64Add:d6,_i64Subtract:v6,_llvm_bswap_i16:I6,_llvm_bswap_i32:Z6,_malloc:Z2,_memalign:W2,_memcpy:Q6,_memmove:D6,_memset:z6,_realloc:Q2,_saveSetjmp:G6,_sbrk:W6,_testSetjmp:L6,_vizCreateFile:qB,_vizLastErrorMessage:_B,_vizRenderFromString:KB,dynCall_d:Y6,dynCall_dddd:F6,dynCall_di:M6,dynCall_i:V6,dynCall_ii:N6,dynCall_iii:R6,dynCall_iiidd:x6,dynCall_iiii:J6,dynCall_iiiii:H6,dynCall_iiiiii:P6,dynCall_iiiiiii:X6,dynCall_iiiiiiiiiii:S6,dynCall_v:j6,dynCall_vi:U6,dynCall_vii:T6,dynCall_viii:O6,dynCall_viiiddi:_6,dynCall_viiii:q6,dynCall_viiiii:K6,dynCall_viiiiii:$6,dynCall_viiiiiiiii:e5,establishStackSpace:SB,getTempRet0:TB,runPostSets:h6,setTempRet0:UB,setThrew:jB,stackAlloc:HB,stackRestore:XB,stackSave:PB}}(A.asmGlobalArg,A.asmLibraryArg,N),dr=(A.___errno_location=kr.___errno_location,A.___muldi3=kr.___muldi3,A.___udivdi3=kr.___udivdi3,A.___uremdi3=kr.___uremdi3,A._bitshift64Ashr=kr._bitshift64Ashr,A._bitshift64Lshr=kr._bitshift64Lshr,A._bitshift64Shl=kr._bitshift64Shl,A._dtextract=kr._dtextract,A._free=kr._free),vr=(A._htons=kr._htons,A._i64Add=kr._i64Add,A._i64Subtract=kr._i64Subtract,A._llvm_bswap_i16=kr._llvm_bswap_i16,A._llvm_bswap_i32=kr._llvm_bswap_i32,A._malloc=kr._malloc),gr=A._memalign=kr._memalign,mr=(A._memcpy=kr._memcpy,A._memmove=kr._memmove,A._memset=kr._memset),pr=(A._realloc=kr._realloc,A._saveSetjmp=kr._saveSetjmp,A._sbrk=kr._sbrk,A._testSetjmp=kr._testSetjmp,A._vizCreateFile=kr._vizCreateFile,A._vizLastErrorMessage=kr._vizLastErrorMessage,A._vizRenderFromString=kr._vizRenderFromString,A.establishStackSpace=kr.establishStackSpace,A.getTempRet0=kr.getTempRet0,A.runPostSets=kr.runPostSets,A.setTempRet0=kr.setTempRet0,A.setThrew=kr.setThrew,A.stackAlloc=kr.stackAlloc),Er=A.stackRestore=kr.stackRestore,Br=A.stackSave=kr.stackSave;if(A.dynCall_d=kr.dynCall_d,A.dynCall_dddd=kr.dynCall_dddd,A.dynCall_di=kr.dynCall_di,A.dynCall_i=kr.dynCall_i,A.dynCall_ii=kr.dynCall_ii,A.dynCall_iii=kr.dynCall_iii,A.dynCall_iiidd=kr.dynCall_iiidd,A.dynCall_iiii=kr.dynCall_iiii,A.dynCall_iiiii=kr.dynCall_iiiii,A.dynCall_iiiiii=kr.dynCall_iiiiii,A.dynCall_iiiiiii=kr.dynCall_iiiiiii,A.dynCall_iiiiiiiiiii=kr.dynCall_iiiiiiiiiii,A.dynCall_v=kr.dynCall_v,A.dynCall_vi=kr.dynCall_vi,A.dynCall_vii=kr.dynCall_vii,A.dynCall_viii=kr.dynCall_viii,A.dynCall_viiiddi=kr.dynCall_viiiddi,A.dynCall_viiii=kr.dynCall_viiii,A.dynCall_viiiii=kr.dynCall_viiiii,A.dynCall_viiiiii=kr.dynCall_viiiiii,A.dynCall_viiiiiiiii=kr.dynCall_viiiiiiiii,A.asm=kr,A.ccall=E,A.Pointer_stringify=Z,A.UTF8ToString=Q,ze)if(Ye(ze)||("function"==typeof A.locateFile?ze=A.locateFile(ze):A.memoryInitializerPrefixURL&&(ze=A.memoryInitializerPrefixURL+ze)),s||c){var yr=A.readBinary(ze);x.set(yr,k)}else{Qe();var Cr=function(e){e.byteLength&&(e=new Uint8Array(e)),x.set(e,k),A.memoryInitializerRequest&&delete A.memoryInitializerRequest.response,De()};function Ir(){A.readAsync(ze,Cr,(function(){throw"could not load memory initializer "+ze}))}var Zr=UA(ze);if(Zr)Cr(Zr.buffer);else if(A.memoryInitializerRequest){function Gr(){var e=A.memoryInitializerRequest,r=e.response;if(200!==e.status&&0!==e.status){var i=UA(A.memoryInitializerRequestURL);if(!i)return console.warn("a problem seems to have happened with Module.memoryInitializerRequest, status: "+e.status+", retrying "+ze),void Ir();r=i.buffer}Cr(r)}A.memoryInitializerRequest.response?setTimeout(Gr,0):A.memoryInitializerRequest.addEventListener("load",Gr)}else Ir()}function Lr(e){this.name="ExitStatus",this.message="Program terminated with exit("+e+")",this.status=e}function Qr(e){function r(){A.calledRun||(A.calledRun=!0,d||(be(),he(),A.onRuntimeInitialized&&A.onRuntimeInitialized(),ke()))}e=e||A.arguments,Ze>0||(ue(),Ze>0||A.calledRun||(A.setStatus?(A.setStatus("Running..."),setTimeout((function(){setTimeout((function(){A.setStatus("")}),1),r()}),1)):r()))}function Dr(e,r){r&&A.noExitRuntime&&0===e||(A.noExitRuntime||(d=!0,T=wr,we(),A.onExit&&A.onExit(e)),s&&process.exit(e),A.quit(e,new Lr(e)))}function zr(e){throw A.onAbort&&A.onAbort(e),void 0!==e?(A.print(e),A.printErr(e),e=JSON.stringify(e)):e="",d=!0,"abort("+e+"). Build with -s ASSERTIONS=1 for more info."}if(Lr.prototype=new Error,Lr.prototype.constructor=Lr,Le=function e(){A.calledRun||Qr(),A.calledRun||(Le=e)},A.run=Qr,A.exit=Dr,A.abort=zr,A.preInit)for("function"==typeof A.preInit&&(A.preInit=[A.preInit]);A.preInit.length>0;)A.preInit.pop()();return A.noExitRuntime=!0,Qr(),A}({TOTAL_MEMORY:t});for(f=0;f1?window.devicePixelRatio:1);var i=new Image;try{if("object"==typeof fabric&&fabric.loadSVGFromString)fabric.loadSVGFromString(e,(function(e,a){if(0==e.length){if(void 0!==r)return void r(new Error("Error loading SVG with Fabric"));throw new Error("Error loading SVG with Fabric")}var t=document.createElement("canvas");t.width=a.width,t.height=a.height;var n=new fabric.Canvas(t,{enableRetinaScaling:!1}),f=fabric.util.groupSVGElements(e,a);n.add(f).renderAll(),i.src=n.toDataURL({multiplier:A}),i.width=a.width,i.height=a.height,void 0!==r&&r(null,i)}));else{var a=new Image;a.onload=function(){var e=document.createElement("canvas");e.width=a.width*A,e.height=a.height*A,e.getContext("2d").drawImage(a,0,0,e.width,e.height),i.src=e.toDataURL("image/png"),i.width=a.width,i.height=a.height,void 0!==r&&r(null,i)},a.onerror=function(e){var A;if(A="error"in e?e.error:new Error("Error loading SVG"),void 0===r)throw A;r(A)},a.src="data:image/svg+xml;base64,"+btoa(encodeURIComponent(e).replace(/%([0-9A-F]{2})/g,(function(e,A){return String.fromCharCode("0x"+A)})))}}catch(e){if(void 0===r)throw e;r(e)}if(void 0===r)return i},i.svgXmlToPngBase64=function(e,A,r){i.svgXmlToPngImageElement(e,A,(function(e,A){e?r(e):r(null,A.src.slice("data:image/png;base64,".length))}))},e.exports=i}()},6417:e=>{"use strict";e.exports=require("crypto")},5747:e=>{"use strict";e.exports=require("fs")},5622:e=>{"use strict";e.exports=require("path")}},A={};function r(i){if(A[i])return A[i].exports;var a=A[i]={id:i,loaded:!1,exports:{}};return e[i].call(a.exports,a,a.exports,r),a.loaded=!0,a.exports}return r.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),r(8138)})(); \ No newline at end of file diff --git a/resources/fsm/utils/tree-sitter.js b/resources/fsm/utils/tree-sitter.js new file mode 100644 index 0000000..e433281 --- /dev/null +++ b/resources/fsm/utils/tree-sitter.js @@ -0,0 +1 @@ +var Module=void 0!==Module?Module:{};!function(e,t){"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?module.exports=t():window.TreeSitter=t()}(0,function(){var e,t={};for(e in Module)Module.hasOwnProperty(e)&&(t[e]=Module[e]);var n,r,o=[],s="./this.program",i=function(e,t){throw t},a=!1,_=!1;a="object"==typeof window,_="function"==typeof importScripts,n="object"==typeof process&&"object"==typeof process.versions&&"string"==typeof process.versions.node,r=!a&&!n&&!_;var u,l,d,c,f="";n?(f=_?require("path").dirname(f)+"/":__dirname+"/",u=function(e,t){return d||(d=require("fs")),c||(c=require("path")),e=c.normalize(e),d.readFileSync(e,t?null:"utf8")},l=function(e){var t=u(e,!0);return t.buffer||(t=new Uint8Array(t)),O(t.buffer),t},process.argv.length>1&&(s=process.argv[1].replace(/\\/g,"/")),o=process.argv.slice(2),"undefined"!=typeof module&&(module.exports=Module),process.on("uncaughtException",function(e){if(!(e instanceof rt))throw e}),process.on("unhandledRejection",we),i=function(e){process.exit(e)},Module.inspect=function(){return"[Emscripten Module object]"}):r?("undefined"!=typeof read&&(u=function(e){return read(e)}),l=function(e){var t;return"function"==typeof readbuffer?new Uint8Array(readbuffer(e)):(O("object"==typeof(t=read(e,"binary"))),t)},"undefined"!=typeof scriptArgs?o=scriptArgs:void 0!==arguments&&(o=arguments),"function"==typeof quit&&(i=function(e){quit(e)}),"undefined"!=typeof print&&("undefined"==typeof console&&(console={}),console.log=print,console.warn=console.error="undefined"!=typeof printErr?printErr:print)):(a||_)&&(_?f=self.location.href:document.currentScript&&(f=document.currentScript.src),f=0!==f.indexOf("blob:")?f.substr(0,f.lastIndexOf("/")+1):"",u=function(e){var t=new XMLHttpRequest;return t.open("GET",e,!1),t.send(null),t.responseText},_&&(l=function(e){var t=new XMLHttpRequest;return t.open("GET",e,!1),t.responseType="arraybuffer",t.send(null),new Uint8Array(t.response)}),function(e,t,n){var r=new XMLHttpRequest;r.open("GET",e,!0),r.responseType="arraybuffer",r.onload=function(){200==r.status||0==r.status&&r.response?t(r.response):n()},r.onerror=n,r.send(null)});var m=Module.print||console.log.bind(console),p=Module.printErr||console.warn.bind(console);for(e in t)t.hasOwnProperty(e)&&(Module[e]=t[e]);t=null,Module.arguments&&(o=Module.arguments),Module.thisProgram&&(s=Module.thisProgram),Module.quit&&(i=Module.quit);var h=16;function g(e){var t=Q[te>>2],n=t+e+15&-16;return Q[te>>2]=n,t}function y(e,t){return t||(t=h),Math.ceil(e/t)*t}function w(e){switch(e){case"i1":case"i8":return 1;case"i16":return 2;case"i32":return 4;case"i64":return 8;case"float":return 4;case"double":return 8;default:if("*"===e[e.length-1])return 4;if("i"===e[0]){var t=Number(e.substr(1));return O(t%8==0,"getNativeTypeSize invalid bits "+t+", type "+e),t/8}return 0}}var M={"f64-rem":function(e,t){return e%t},debugger:function(){}},b={nextHandle:1,loadedLibs:{"-1":{refcount:1/0,name:"__self__",module:Module,global:!0}},loadedLibNames:{__self__:-1}};function E(e,t){t=t||{global:!0,nodelete:!0};var n,r=b.loadedLibNames[e];if(r)return n=b.loadedLibs[r],t.global&&!n.global&&(n.global=!0,"loading"!==n.module&&a(n.module)),t.nodelete&&n.refcount!==1/0&&(n.refcount=1/0),n.refcount++,t.loadAsync?Promise.resolve(r):r;function o(e){if(t.fs){var n=t.fs.readFile(e,{encoding:"binary"});return n instanceof Uint8Array||(n=new Uint8Array(lib_data)),t.loadAsync?Promise.resolve(n):n}return t.loadAsync?(r=e,fetch(r,{credentials:"same-origin"}).then(function(e){if(!e.ok)throw"failed to load binary file at '"+r+"'";return e.arrayBuffer()}).then(function(e){return new Uint8Array(e)})):l(e);var r}function s(e){return I(e,t)}function i(){if(void 0!==Module.preloadedWasm&&void 0!==Module.preloadedWasm[e]){var n=Module.preloadedWasm[e];return t.loadAsync?Promise.resolve(n):n}return t.loadAsync?o(e).then(function(e){return s(e)}):s(o(e))}function a(e){for(var t in e)if(e.hasOwnProperty(t)){var n=t;"_"===t[0]&&(Module.hasOwnProperty(n)||(Module[n]=e[t]))}}function _(e){n.global&&a(e),n.module=e}return r=b.nextHandle++,n={refcount:t.nodelete?1/0:1,name:e,module:"loading",global:t.global},b.loadedLibNames[e]=r,b.loadedLibs[r]=n,t.loadAsync?i().then(function(e){return _(e),r}):(_(i()),r)}function v(e,t,n,r){var o={};for(var s in e){var i=e[s];"object"==typeof i&&(i=i.value),"number"==typeof i&&(i+=t),o[s]=i,r&&(r[s]=i)}return o}function I(e,t){O(1836278016==new Uint32Array(new Uint8Array(e.subarray(0,24)).buffer)[0],"need to see wasm magic number"),O(0===e[8],"need the dylink section to be first");var n=9;function r(){for(var t=0,r=1;;){var o=e[n++];if(t+=(127&o)*r,r*=128,!(128&o))break}return t}r();O(6===e[n]),O(e[++n]==="d".charCodeAt(0)),O(e[++n]==="y".charCodeAt(0)),O(e[++n]==="l".charCodeAt(0)),O(e[++n]==="i".charCodeAt(0)),O(e[++n]==="n".charCodeAt(0)),O(e[++n]==="k".charCodeAt(0)),n++;for(var o=r(),s=r(),i=r(),a=r(),_=r(),u=[],l=0;l<_;++l){var d=r(),c=e.subarray(n,n+d);n+=d;var f=j(c,0);u.push(f)}function m(){s=Math.pow(2,s),a=Math.pow(2,a),s=Math.max(s,h);var n=y(Z(o+s),s),r=Ge,_=F,u=_.length,l=_;_.grow(i),O(_===l);for(var d=n;d=0,a=0;return e[t]=function(){if(!a){var e=f(r,0,i);a=C(e,s)}return a}}return t.startsWith("invoke_")?e[t]=invoke_X:e[t]=function(){return f(t).apply(null,arguments)}}}),g={global:{NaN:NaN,Infinity:1/0},"global.Math":Math,env:p,wasi_snapshot_preview1:p,asm2wasm:M};function w(e,t){var r=v(e.exports,n,0,t),o=r.__post_instantiate;return o&&(_e?o():se.push(o)),r}return t.loadAsync?WebAssembly.instantiate(e,g).then(function(e){return w(e.instance,c)}):w(new WebAssembly.Instance(new WebAssembly.Module(e),g),c)}return t.loadAsync?Promise.all(u.map(function(e){return E(e,t)})).then(function(){return m()}):(u.forEach(function(e){E(e,t)}),m())}Module.loadWebAssemblyModule=I,Module.registerFunctions=function(e,t){e.forEach(function(e){Module["FUNCTION_TABLE_"+e]||(Module["FUNCTION_TABLE_"+e]=[])});var n=alignFunctionTables(),r=alignFunctionTables(t),o=n+r;e.forEach(function(e){var r=t["FUNCTION_TABLE_"+e],s=Module["FUNCTION_TABLE_"+e];O(r!==s),O(s.length===n);for(var i=0;i>0]=t;break;case"i16":V[e>>1]=t;break;case"i32":Q[e>>2]=t;break;case"i64":Ae=[t>>>0,(Se=t,+le(Se)>=1?Se>0?(0|fe(+ce(Se/4294967296),4294967295))>>>0:~~+de((Se-+(~~Se>>>0))/4294967296)>>>0:0)],Q[e>>2]=Ae[0],Q[e+4>>2]=Ae[1];break;case"float":Y[e>>2]=t;break;case"double":J[e>>3]=t;break;default:we("invalid type for setValue: "+n)}}function L(e,t,n){switch("*"===(t=t||"i8").charAt(t.length-1)&&(t="i32"),t){case"i1":case"i8":return G[e>>0];case"i16":return V[e>>1];case"i32":case"i64":return Q[e>>2];case"float":return Y[e>>2];case"double":return J[e>>3];default:we("invalid type for getValue: "+t)}return null}T=y(T,16),Module.wasmBinary&&(x=Module.wasmBinary),Module.noExitRuntime&&(P=Module.noExitRuntime),"object"!=typeof WebAssembly&&p("no native wasm support detected");var F=new WebAssembly.Table({initial:16,element:"anyfunc"}),W=!1;function O(e,t){e||we("Assertion failed: "+t)}var $=3;function Z(e){return _e?Ye(e):g(e)}var U="undefined"!=typeof TextDecoder?new TextDecoder("utf8"):void 0;function j(e,t,n){for(var r=t+n,o=t;e[o]&&!(o>=r);)++o;if(o-t>16&&e.subarray&&U)return U.decode(e.subarray(t,o));for(var s="";t>10,56320|1023&u)}}else s+=String.fromCharCode((31&i)<<6|a)}else s+=String.fromCharCode(i)}return s}function D(e,t){return e?j(X,e,t):""}function B(e,t,n,r){if(!(r>0))return 0;for(var o=n,s=n+r-1,i=0;i=55296&&a<=57343)a=65536+((1023&a)<<10)|1023&e.charCodeAt(++i);if(a<=127){if(n>=s)break;t[n++]=a}else if(a<=2047){if(n+1>=s)break;t[n++]=192|a>>6,t[n++]=128|63&a}else if(a<=65535){if(n+2>=s)break;t[n++]=224|a>>12,t[n++]=128|a>>6&63,t[n++]=128|63&a}else{if(n+3>=s)break;t[n++]=240|a>>18,t[n++]=128|a>>12&63,t[n++]=128|a>>6&63,t[n++]=128|63&a}}return t[n]=0,n-o}function H(e){for(var t=0,n=0;n=55296&&r<=57343&&(r=65536+((1023&r)<<10)|1023&e.charCodeAt(++n)),r<=127?++t:t+=r<=2047?2:r<=65535?3:4}return t}function z(e){var t=H(e)+1,n=Je(t);return B(e,G,n,t),n}var K,G,X,V,Q,Y,J;function ee(e){K=e,Module.HEAP8=G=new Int8Array(e),Module.HEAP16=V=new Int16Array(e),Module.HEAP32=Q=new Int32Array(e),Module.HEAPU8=X=new Uint8Array(e),Module.HEAPU16=new Uint16Array(e),Module.HEAPU32=new Uint32Array(e),Module.HEAPF32=Y=new Float32Array(e),Module.HEAPF64=J=new Float64Array(e)}var te=7856,ne=Module.INITIAL_MEMORY||33554432;function re(e){for(;e.length>0;){var t=e.shift();if("function"!=typeof t){var n=t.func;"number"==typeof n?void 0===t.arg?Module.dynCall_v(n):Module.dynCall_vi(n,t.arg):n(void 0===t.arg?null:t.arg)}else t(Module)}}(k=Module.wasmMemory?Module.wasmMemory:new WebAssembly.Memory({initial:ne/65536,maximum:32768}))&&(K=k.buffer),ne=K.byteLength,ee(K),Q[te>>2]=5250928;var oe=[],se=[],ie=[],ae=[],_e=!1;function ue(e){oe.unshift(e)}var le=Math.abs,de=Math.ceil,ce=Math.floor,fe=Math.min,me=0,pe=null,he=null;function ge(e){me++,Module.monitorRunDependencies&&Module.monitorRunDependencies(me)}function ye(e){if(me--,Module.monitorRunDependencies&&Module.monitorRunDependencies(me),0==me&&(null!==pe&&(clearInterval(pe),pe=null),he)){var t=he;he=null,t()}}function we(e){throw Module.onAbort&&Module.onAbort(e),m(e+=""),p(e),W=!0,1,e="abort("+e+"). Build with -s ASSERTIONS=1 for more info.",new WebAssembly.RuntimeError(e)}function Me(e,t){return String.prototype.startsWith?e.startsWith(t):0===e.indexOf(t)}Module.preloadedImages={},Module.preloadedAudios={},Module.preloadedWasm={},ue(function(){if(Module.dynamicLibraries&&Module.dynamicLibraries.length>0&&!l)return ge(),void Promise.all(Module.dynamicLibraries.map(function(e){return E(e,{loadAsync:!0,global:!0,nodelete:!0})})).then(function(){ye()});var e;(e=Module.dynamicLibraries)&&e.forEach(function(e){E(e,{global:!0,nodelete:!0})})});var be="data:application/octet-stream;base64,";function Ee(e){return Me(e,be)}var ve="file://";function Ie(e){return Me(e,ve)}var Ne,Se,Ae,Ce="../resources/tree-sitter/tree-sitter.wasm";function xe(){try{if(x)return new Uint8Array(x);if(l)return l(Ce);throw"both async and sync fetching of the wasm failed"}catch(e){we(e)}}Ee(Ce)||(Ne=Ce,Ce=Module.locateFile?Module.locateFile(Ne,f):f+Ne),Module.asm=function(){var e={env:Ge,wasi_snapshot_preview1:Ge,global:{NaN:NaN,Infinity:1/0},"global.Math":Math,asm2wasm:M};function t(e,t){var n=e.exports;n=v(n,T),Module.asm=n,ye()}function n(e){t(e.instance)}function r(t){return(x||!a&&!_||"function"!=typeof fetch||Ie(Ce)?new Promise(function(e,t){e(xe())}):fetch(Ce,{credentials:"same-origin"}).then(function(e){if(!e.ok)throw"failed to load wasm binary file at '"+Ce+"'";return e.arrayBuffer()}).catch(function(){return xe()})).then(function(t){return WebAssembly.instantiate(t,e)}).then(t,function(e){p("failed to asynchronously prepare wasm: "+e),we(e)})}if(ge(),Module.instantiateWasm)try{return Module.instantiateWasm(e,t)}catch(e){return p("Module.instantiateWasm callback failed with error: "+e),!1}return function(){if(x||"function"!=typeof WebAssembly.instantiateStreaming||Ee(Ce)||Ie(Ce)||"function"!=typeof fetch)return r(n);fetch(Ce,{credentials:"same-origin"}).then(function(t){return WebAssembly.instantiateStreaming(t,e).then(n,function(e){p("wasm streaming compile failed: "+e),p("falling back to ArrayBuffer instantiation"),r(n)})})}(),{}},se.push({func:function(){Qe()}});var Pe;function ke(){we()}Module._abort=ke,Pe=n?function(){var e=process.hrtime();return 1e3*e[0]+e[1]/1e6}:"undefined"!=typeof dateNow?dateNow:function(){return performance.now()};var Re=!0;function Te(){return X.length}function qe(e){try{return k.grow(e-K.byteLength+65535>>>16),ee(k.buffer),1}catch(e){}}function Le(e,t,n){if(Et){const e=D(n);Et(e,0!==t)}}var Fe=T;function We(e){return e|=0,mftCall_X(e)}function Oe(e){return e|=0,0|mftCall_i(e)}function $e(e,t){return e|=0,t|=0,0|mftCall_ii(e,0|t)}function Ze(e,t,n,r,o,s,i){return e|=0,t|=0,n=+n,r|=0,o|=0,s|=0,i|=0,0|mftCall_iidiiii(e,0|t,+n,0|r,0|o,0|s,0|i)}function Ue(e,t,n){return e|=0,t|=0,n|=0,0|mftCall_iii(e,0|t,0|n)}function je(e,t,n,r){return e|=0,t|=0,n|=0,r|=0,0|mftCall_iiii(e,0|t,0|n,0|r)}function De(e,t,n,r,o){return e|=0,t|=0,n|=0,r|=0,o|=0,0|mftCall_iiiii(e,0|t,0|n,0|r,0|o)}function Be(e){e|=0,mftCall_v(e)}function He(e,t){e|=0,t|=0,mftCall_vi(e,0|t)}function ze(e,t,n){e|=0,t|=0,n|=0,mftCall_vii(e,0|t,0|n)}function Ke(e,t,n,r){e|=0,t|=0,n|=0,r|=0,mftCall_viii(e,0|t,0|n,0|r)}var Ge={STACKTOP:8048,__memory_base:1024,__table_base:0,_abort:ke,_clock_gettime:function(e,t){var n,r;if(0===e)n=Date.now();else{if(1!==e&&4!==e||!Re)return r=28,Q[Ve()>>2]=r,-1;n=Pe()}return Q[t>>2]=n/1e3|0,Q[t+4>>2]=n%1e3*1e3*1e3|0,0},_emscripten_get_heap_size:Te,_emscripten_memcpy_big:function(e,t,n){X.copyWithin(e,t,t+n)},_emscripten_resize_heap:function(e){e>>>=0;var t=Te();if(e>2147483648)return!1;for(var n,r,o=1;o<=4;o*=2){var s=t*(1+.2/o);if(s=Math.min(s,e+100663296),qe(Math.min(2147483648,((n=Math.max(16777216,e,s))%(r=65536)>0&&(n+=r-n%r),n))))return!0}return!1},_exit:function(e){st(e)},_tree_sitter_parse_callback:function(e,t,n,r,o){var s=bt(t,{row:n,column:r});"string"==typeof s?(q(o,s.length,"i32"),function(e,t,n){if(void 0===n&&(n=2147483647),n<2)return 0;for(var r=(n-=2)<2*e.length?n/2:e.length,o=0;o>1]=s,t+=2}V[t>>1]=0}(s,e,10240)):q(o,0,"i32")},abort:we,fb:0,fp$_tree_sitter_log_callback$viii:function(){if(!Module.fp$_tree_sitter_log_callback$viii){var e=C(Module._tree_sitter_log_callback||Le,"viii");Module.fp$_tree_sitter_log_callback$viii=e}return Module.fp$_tree_sitter_log_callback$viii},gb:Fe,getTempRet0:function(){return R},memory:k,setTempRet0:function(e){R=e},table:F,tempDoublePtr:8032},Xe=Module.asm({},Ge,K);Module.asm=Xe;Module.__ZNKSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE4copyEPcmm=function(){return Module.asm.__ZNKSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE4copyEPcmm.apply(null,arguments)},Module.__ZNKSt3__220__vector_base_commonILb1EE20__throw_length_errorEv=function(){return Module.asm.__ZNKSt3__220__vector_base_commonILb1EE20__throw_length_errorEv.apply(null,arguments)},Module.__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6__initEPKcm=function(){return Module.asm.__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6__initEPKcm.apply(null,arguments)},Module.__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE7reserveEm=function(){return Module.asm.__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE7reserveEm.apply(null,arguments)},Module.__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE9__grow_byEmmmmmm=function(){return Module.asm.__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE9__grow_byEmmmmmm.apply(null,arguments)},Module.__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE9push_backEc=function(){return Module.asm.__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE9push_backEc.apply(null,arguments)},Module.__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC2ERKS5_=function(){return Module.asm.__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC2ERKS5_.apply(null,arguments)},Module.__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev=function(){return Module.asm.__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev.apply(null,arguments)},Module.__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE9push_backEw=function(){return Module.asm.__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE9push_backEw.apply(null,arguments)},Module.__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev=function(){return Module.asm.__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev.apply(null,arguments)},Module.__ZdlPv=function(){return Module.asm.__ZdlPv.apply(null,arguments)},Module.__Znwm=function(){return Module.asm.__Znwm.apply(null,arguments)};var Ve=Module.___errno_location=function(){return Module.asm.___errno_location.apply(null,arguments)},Qe=Module.__apply_relocations=function(){return Module.asm.__apply_relocations.apply(null,arguments)},Ye=(Module._calloc=function(){return Module.asm._calloc.apply(null,arguments)},Module._free=function(){return Module.asm._free.apply(null,arguments)},Module._iswalnum=function(){return Module.asm._iswalnum.apply(null,arguments)},Module._iswalpha=function(){return Module.asm._iswalpha.apply(null,arguments)},Module._iswdigit=function(){return Module.asm._iswdigit.apply(null,arguments)},Module._iswlower=function(){return Module.asm._iswlower.apply(null,arguments)},Module._iswspace=function(){return Module.asm._iswspace.apply(null,arguments)},Module._malloc=function(){return Module.asm._malloc.apply(null,arguments)}),Je=(Module._memchr=function(){return Module.asm._memchr.apply(null,arguments)},Module._memcmp=function(){return Module.asm._memcmp.apply(null,arguments)},Module._memcpy=function(){return Module.asm._memcpy.apply(null,arguments)},Module._strlen=function(){return Module.asm._strlen.apply(null,arguments)},Module._towupper=function(){return Module.asm._towupper.apply(null,arguments)},Module._ts_init=function(){return Module.asm._ts_init.apply(null,arguments)},Module._ts_language_field_count=function(){return Module.asm._ts_language_field_count.apply(null,arguments)},Module._ts_language_field_name_for_id=function(){return Module.asm._ts_language_field_name_for_id.apply(null,arguments)},Module._ts_language_symbol_count=function(){return Module.asm._ts_language_symbol_count.apply(null,arguments)},Module._ts_language_symbol_name=function(){return Module.asm._ts_language_symbol_name.apply(null,arguments)},Module._ts_language_symbol_type=function(){return Module.asm._ts_language_symbol_type.apply(null,arguments)},Module._ts_language_version=function(){return Module.asm._ts_language_version.apply(null,arguments)},Module._ts_node_child_by_field_id_wasm=function(){return Module.asm._ts_node_child_by_field_id_wasm.apply(null,arguments)},Module._ts_node_child_count_wasm=function(){return Module.asm._ts_node_child_count_wasm.apply(null,arguments)},Module._ts_node_child_wasm=function(){return Module.asm._ts_node_child_wasm.apply(null,arguments)},Module._ts_node_children_wasm=function(){return Module.asm._ts_node_children_wasm.apply(null,arguments)},Module._ts_node_descendant_for_index_wasm=function(){return Module.asm._ts_node_descendant_for_index_wasm.apply(null,arguments)},Module._ts_node_descendant_for_position_wasm=function(){return Module.asm._ts_node_descendant_for_position_wasm.apply(null,arguments)},Module._ts_node_descendants_of_type_wasm=function(){return Module.asm._ts_node_descendants_of_type_wasm.apply(null,arguments)},Module._ts_node_end_index_wasm=function(){return Module.asm._ts_node_end_index_wasm.apply(null,arguments)},Module._ts_node_end_point_wasm=function(){return Module.asm._ts_node_end_point_wasm.apply(null,arguments)},Module._ts_node_has_changes_wasm=function(){return Module.asm._ts_node_has_changes_wasm.apply(null,arguments)},Module._ts_node_has_error_wasm=function(){return Module.asm._ts_node_has_error_wasm.apply(null,arguments)},Module._ts_node_is_missing_wasm=function(){return Module.asm._ts_node_is_missing_wasm.apply(null,arguments)},Module._ts_node_is_named_wasm=function(){return Module.asm._ts_node_is_named_wasm.apply(null,arguments)},Module._ts_node_named_child_count_wasm=function(){return Module.asm._ts_node_named_child_count_wasm.apply(null,arguments)},Module._ts_node_named_child_wasm=function(){return Module.asm._ts_node_named_child_wasm.apply(null,arguments)},Module._ts_node_named_children_wasm=function(){return Module.asm._ts_node_named_children_wasm.apply(null,arguments)},Module._ts_node_named_descendant_for_index_wasm=function(){return Module.asm._ts_node_named_descendant_for_index_wasm.apply(null,arguments)},Module._ts_node_named_descendant_for_position_wasm=function(){return Module.asm._ts_node_named_descendant_for_position_wasm.apply(null,arguments)},Module._ts_node_next_named_sibling_wasm=function(){return Module.asm._ts_node_next_named_sibling_wasm.apply(null,arguments)},Module._ts_node_next_sibling_wasm=function(){return Module.asm._ts_node_next_sibling_wasm.apply(null,arguments)},Module._ts_node_parent_wasm=function(){return Module.asm._ts_node_parent_wasm.apply(null,arguments)},Module._ts_node_prev_named_sibling_wasm=function(){return Module.asm._ts_node_prev_named_sibling_wasm.apply(null,arguments)},Module._ts_node_prev_sibling_wasm=function(){return Module.asm._ts_node_prev_sibling_wasm.apply(null,arguments)},Module._ts_node_start_index_wasm=function(){return Module.asm._ts_node_start_index_wasm.apply(null,arguments)},Module._ts_node_start_point_wasm=function(){return Module.asm._ts_node_start_point_wasm.apply(null,arguments)},Module._ts_node_symbol_wasm=function(){return Module.asm._ts_node_symbol_wasm.apply(null,arguments)},Module._ts_node_to_string_wasm=function(){return Module.asm._ts_node_to_string_wasm.apply(null,arguments)},Module._ts_parser_delete=function(){return Module.asm._ts_parser_delete.apply(null,arguments)},Module._ts_parser_enable_logger_wasm=function(){return Module.asm._ts_parser_enable_logger_wasm.apply(null,arguments)},Module._ts_parser_new_wasm=function(){return Module.asm._ts_parser_new_wasm.apply(null,arguments)},Module._ts_parser_parse_wasm=function(){return Module.asm._ts_parser_parse_wasm.apply(null,arguments)},Module._ts_parser_set_language=function(){return Module.asm._ts_parser_set_language.apply(null,arguments)},Module._ts_parser_set_timeout_micros=function(){return Module.asm._ts_parser_set_timeout_micros.apply(null,arguments)},Module._ts_parser_timeout_micros=function(){return Module.asm._ts_parser_timeout_micros.apply(null,arguments)},Module._ts_query_capture_count=function(){return Module.asm._ts_query_capture_count.apply(null,arguments)},Module._ts_query_capture_name_for_id=function(){return Module.asm._ts_query_capture_name_for_id.apply(null,arguments)},Module._ts_query_captures_wasm=function(){return Module.asm._ts_query_captures_wasm.apply(null,arguments)},Module._ts_query_delete=function(){return Module.asm._ts_query_delete.apply(null,arguments)},Module._ts_query_matches_wasm=function(){return Module.asm._ts_query_matches_wasm.apply(null,arguments)},Module._ts_query_new=function(){return Module.asm._ts_query_new.apply(null,arguments)},Module._ts_query_pattern_count=function(){return Module.asm._ts_query_pattern_count.apply(null,arguments)},Module._ts_query_predicates_for_pattern=function(){return Module.asm._ts_query_predicates_for_pattern.apply(null,arguments)},Module._ts_query_string_count=function(){return Module.asm._ts_query_string_count.apply(null,arguments)},Module._ts_query_string_value_for_id=function(){return Module.asm._ts_query_string_value_for_id.apply(null,arguments)},Module._ts_tree_cursor_current_field_id_wasm=function(){return Module.asm._ts_tree_cursor_current_field_id_wasm.apply(null,arguments)},Module._ts_tree_cursor_current_node_id_wasm=function(){return Module.asm._ts_tree_cursor_current_node_id_wasm.apply(null,arguments)},Module._ts_tree_cursor_current_node_is_missing_wasm=function(){return Module.asm._ts_tree_cursor_current_node_is_missing_wasm.apply(null,arguments)},Module._ts_tree_cursor_current_node_is_named_wasm=function(){return Module.asm._ts_tree_cursor_current_node_is_named_wasm.apply(null,arguments)},Module._ts_tree_cursor_current_node_type_id_wasm=function(){return Module.asm._ts_tree_cursor_current_node_type_id_wasm.apply(null,arguments)},Module._ts_tree_cursor_current_node_wasm=function(){return Module.asm._ts_tree_cursor_current_node_wasm.apply(null,arguments)},Module._ts_tree_cursor_delete_wasm=function(){return Module.asm._ts_tree_cursor_delete_wasm.apply(null,arguments)},Module._ts_tree_cursor_end_index_wasm=function(){return Module.asm._ts_tree_cursor_end_index_wasm.apply(null,arguments)},Module._ts_tree_cursor_end_position_wasm=function(){return Module.asm._ts_tree_cursor_end_position_wasm.apply(null,arguments)},Module._ts_tree_cursor_goto_first_child_wasm=function(){return Module.asm._ts_tree_cursor_goto_first_child_wasm.apply(null,arguments)},Module._ts_tree_cursor_goto_next_sibling_wasm=function(){return Module.asm._ts_tree_cursor_goto_next_sibling_wasm.apply(null,arguments)},Module._ts_tree_cursor_goto_parent_wasm=function(){return Module.asm._ts_tree_cursor_goto_parent_wasm.apply(null,arguments)},Module._ts_tree_cursor_new_wasm=function(){return Module.asm._ts_tree_cursor_new_wasm.apply(null,arguments)},Module._ts_tree_cursor_reset_wasm=function(){return Module.asm._ts_tree_cursor_reset_wasm.apply(null,arguments)},Module._ts_tree_cursor_start_index_wasm=function(){return Module.asm._ts_tree_cursor_start_index_wasm.apply(null,arguments)},Module._ts_tree_cursor_start_position_wasm=function(){return Module.asm._ts_tree_cursor_start_position_wasm.apply(null,arguments)},Module._ts_tree_delete=function(){return Module.asm._ts_tree_delete.apply(null,arguments)},Module._ts_tree_edit_wasm=function(){return Module.asm._ts_tree_edit_wasm.apply(null,arguments)},Module._ts_tree_get_changed_ranges_wasm=function(){return Module.asm._ts_tree_get_changed_ranges_wasm.apply(null,arguments)},Module._ts_tree_root_node_wasm=function(){return Module.asm._ts_tree_root_node_wasm.apply(null,arguments)},Module.stackAlloc=function(){return Module.asm.stackAlloc.apply(null,arguments)}),We=Module.dynCall_X=function(){return Module.asm.dynCall_X.apply(null,arguments)},Oe=Module.dynCall_i=function(){return Module.asm.dynCall_i.apply(null,arguments)},$e=Module.dynCall_ii=function(){return Module.asm.dynCall_ii.apply(null,arguments)},Ze=Module.dynCall_iidiiii=function(){return Module.asm.dynCall_iidiiii.apply(null,arguments)},Ue=Module.dynCall_iii=function(){return Module.asm.dynCall_iii.apply(null,arguments)},je=Module.dynCall_iiii=function(){return Module.asm.dynCall_iiii.apply(null,arguments)},De=Module.dynCall_iiiii=function(){return Module.asm.dynCall_iiiii.apply(null,arguments)},Be=Module.dynCall_v=function(){return Module.asm.dynCall_v.apply(null,arguments)},He=Module.dynCall_vi=function(){return Module.asm.dynCall_vi.apply(null,arguments)},ze=Module.dynCall_vii=function(){return Module.asm.dynCall_vii.apply(null,arguments)},Ke=Module.dynCall_viii=function(){return Module.asm.dynCall_viii.apply(null,arguments)};Module.dynCall_X=We,Module.dynCall_i=Oe,Module.dynCall_ii=$e,Module.dynCall_iidiiii=Ze,Module.dynCall_iii=Ue,Module.dynCall_iiii=je,Module.dynCall_iiiii=De,Module.dynCall_v=Be,Module.dynCall_vi=He,Module.dynCall_vii=ze,Module.dynCall_viii=Ke;var et,tt={};for(var nt in tt)Module["_"+nt]=Fe+tt[nt];for(var nt in Module.NAMED_GLOBALS=tt,tt)!function(e){var t=Module["_"+e];Module["g$_"+e]=function(){return t}}(nt);function rt(e){this.name="ExitStatus",this.message="Program terminated with exit("+e+")",this.status=e}Module.__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC1ERKS5_=Module.__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC2ERKS5_,Module.__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev=Module.__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev,Module.__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED1Ev=Module.__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev,Module.asm=Xe,Module.allocate=function(e,t,n,r){var o,s;"number"==typeof e?(o=!0,s=e):(o=!1,s=e.length);var i,a="string"==typeof t?t:null;if(i=n==$?r:[Ye,Je,g][n](Math.max(s,a?1:t.length)),o){var _;for(r=i,O(0==(3&i)),_=i+(-4&s);r<_;r+=4)Q[r>>2]=0;for(_=i+s;r<_;)G[r++>>0]=0;return i}if("i8"===a)return e.subarray||e.slice?X.set(e,i):X.set(new Uint8Array(e),i),i;for(var u,l,d,c=0;c>2]=z(s);for(var o=1;o>2)+o]=z(e[o-1]);Q[(r>>2)+n]=0;try{st(t(n,r),!0)}catch(e){if(e instanceof rt)return;if("unwind"==e)return void(P=!0);var a=e;e&&"object"==typeof e&&e.stack&&(a=[e,e.stack]),p("exception thrown: "+a),i(1,e)}finally{!0}}}(e),function(){if(Module.postRun)for("function"==typeof Module.postRun&&(Module.postRun=[Module.postRun]);Module.postRun.length;)e=Module.postRun.shift(),ae.unshift(e);var e;re(ae)}()))}e=e||o,me>0||(!function(){if(Module.preRun)for("function"==typeof Module.preRun&&(Module.preRun=[Module.preRun]);Module.preRun.length;)ue(Module.preRun.shift());re(oe)}(),me>0||(Module.setStatus?(Module.setStatus("Running..."),setTimeout(function(){setTimeout(function(){Module.setStatus("")},1),t()},1)):t()))}function st(e,t){t&&P&&0===e||(P||(W=!0,e,!0,Module.onExit&&Module.onExit(e)),i(e,new rt(e)))}if(he=function e(){et||ot(),et||(he=e)},Module.run=ot,Module.preInit)for("function"==typeof Module.preInit&&(Module.preInit=[Module.preInit]);Module.preInit.length>0;)Module.preInit.pop()();var it=!0;Module.noInitialRun&&(it=!1),P=!0,ot();const at=Module,_t={},ut=4,lt=5*ut,dt=2*ut,ct=2*ut+2*dt,ft={row:0,column:0},mt=/[\w-.]*/g,pt=1,ht=2,gt=/^_?tree_sitter_\w+/;var yt,wt,Mt,bt,Et,vt=new Promise(e=>{Module.onRuntimeInitialized=e}).then(()=>{Mt=at._ts_init(),yt=L(Mt,"i32"),wt=L(Mt+ut,"i32")});class Parser{static init(){return vt}constructor(){if(null==Mt)throw new Error("You must first call Parser.init() and wait for it to resolve.");at._ts_parser_new_wasm(),this[0]=L(Mt,"i32"),this[1]=L(Mt+ut,"i32")}delete(){at._ts_parser_delete(this[0]),at._free(this[1]),this[0]=0,this[1]=0}setLanguage(e){let t;if(e){if(e.constructor!==Language)throw new Error("Argument must be a Language");{t=e[0];const n=at._ts_language_version(t);if(ne.slice(t,r));else{if("function"!=typeof e)throw new Error("Argument must be a string or a function");bt=e}this.logCallback?(Et=this.logCallback,at._ts_parser_enable_logger_wasm(this[0],1)):(Et=null,at._ts_parser_enable_logger_wasm(this[0],0));let r=0,o=0;if(n&&n.includedRanges){r=n.includedRanges.length;let e=o=at._calloc(r,ct);for(let t=0;t0){let e=n;for(let n=0;n0){let n=t;for(let t=0;t0){let n=t;for(let t=0;t0){let e=a;for(let t=0;t>0];if(!n)return t;t+=String.fromCharCode(n)}}(e);return at._free(e),t}}class TreeCursor{constructor(e,t){St(e),this.tree=t,kt(this)}delete(){Pt(this),at._ts_tree_cursor_delete_wasm(this.tree[0]),this[0]=this[1]=this[2]=0}reset(e){Ct(e),Pt(this,Mt+lt),at._ts_tree_cursor_reset_wasm(this.tree[0]),kt(this)}get nodeType(){return this.tree.language.types[this.nodeTypeId]||"ERROR"}get nodeTypeId(){return Pt(this),at._ts_tree_cursor_current_node_type_id_wasm(this.tree[0])}get nodeId(){return Pt(this),at._ts_tree_cursor_current_node_id_wasm(this.tree[0])}get nodeIsNamed(){return Pt(this),1===at._ts_tree_cursor_current_node_is_named_wasm(this.tree[0])}get nodeIsMissing(){return Pt(this),1===at._ts_tree_cursor_current_node_is_missing_wasm(this.tree[0])}get nodeText(){Pt(this);const e=at._ts_tree_cursor_start_index_wasm(this.tree[0]),t=at._ts_tree_cursor_end_index_wasm(this.tree[0]);return It(this.tree,e,t)}get startPosition(){return Pt(this),at._ts_tree_cursor_start_position_wasm(this.tree[0]),Tt(Mt)}get endPosition(){return Pt(this),at._ts_tree_cursor_end_position_wasm(this.tree[0]),Tt(Mt)}get startIndex(){return Pt(this),at._ts_tree_cursor_start_index_wasm(this.tree[0])}get endIndex(){return Pt(this),at._ts_tree_cursor_end_index_wasm(this.tree[0])}currentNode(){return Pt(this),at._ts_tree_cursor_current_node_wasm(this.tree[0]),xt(this.tree)}currentFieldId(){return Pt(this),at._ts_tree_cursor_current_field_id_wasm(this.tree[0])}currentFieldName(){return this.tree.language.fields[this.currentFieldId()]}gotoFirstChild(){Pt(this);const e=at._ts_tree_cursor_goto_first_child_wasm(this.tree[0]);return kt(this),1===e}gotoNextSibling(){Pt(this);const e=at._ts_tree_cursor_goto_next_sibling_wasm(this.tree[0]);return kt(this),1===e}gotoParent(){Pt(this);const e=at._ts_tree_cursor_goto_parent_wasm(this.tree[0]);return kt(this),1===e}}class Language{constructor(e,t){St(e),this[0]=t,this.types=new Array(at._ts_language_symbol_count(this[0]));for(let e=0,t=this.types.length;e0){if("string"!==o[0].type)throw new Error("Predicates must begin with a literal value");const t=o[0].value;let n=!0;switch(t){case"not-eq?":n=!1;case"eq?":if(3!==o.length)throw new Error(`Wrong number of arguments to \`#eq?\` predicate. Expected 2, got ${o.length-1}`);if("capture"!==o[1].type)throw new Error(`First argument of \`#eq?\` predicate must be a capture. Got "${o[1].value}"`);if("capture"===o[2].type){const t=o[1].name,r=o[2].name;f[e].push(function(e){let o,s;for(const n of e)n.name===t&&(o=n.node),n.name===r&&(s=n.node);return o.text===s.text===n})}else{const t=o[1].name,r=o[2].value;f[e].push(function(e){for(const o of e)if(o.name===t)return o.node.text===r===n;return!1})}break;case"match?":if(3!==o.length)throw new Error(`Wrong number of arguments to \`#match?\` predicate. Expected 2, got ${o.length-1}.`);if("capture"!==o[1].type)throw new Error(`First argument of \`#match?\` predicate must be a capture. Got "${o[1].value}".`);if("string"!==o[2].type)throw new Error(`Second argument of \`#match?\` predicate must be a string. Got @${o[2].value}.`);const r=o[1].name,s=new RegExp(o[2].value);f[e].push(function(e){for(const t of e)if(t.name===r)return s.test(t.node.text);return!1});break;case"set!":if(o.length<2||o.length>3)throw new Error(`Wrong number of arguments to \`#set!\` predicate. Expected 1 or 2. Got ${o.length-1}.`);if(o.some(e=>"string"!==e.type))throw new Error('Arguments to `#set!` predicate must be a strings.".');u[e]||(u[e]={}),u[e][o[1].value]=o[2]?o[2].value:null;break;case"is?":case"is-not?":if(o.length<2||o.length>3)throw new Error(`Wrong number of arguments to \`#${t}\` predicate. Expected 1 or 2. Got ${o.length-1}.`);if(o.some(e=>"string"!==e.type))throw new Error(`Arguments to \`#${t}\` predicate must be a strings.".`);const i="is?"===t?l:d;i[e]||(i[e]={}),i[e][o[1].value]=o[2]?o[2].value:null;break;default:c[e].push({operator:t,operands:o.slice(1)})}o.length=0}}Object.freeze(u[e]),Object.freeze(l[e]),Object.freeze(d[e])}return at._free(n),new Query(_t,r,a,f,c,Object.freeze(u),Object.freeze(l),Object.freeze(d))}static load(e){let t;if("undefined"!=typeof process&&process.versions&&process.versions.node){const n=require("fs");t=Promise.resolve(n.readFileSync(e))}else t=fetch(e).then(e=>e.arrayBuffer().then(t=>{if(e.ok)return new Uint8Array(t);{const n=new TextDecoder("utf-8").decode(t);throw new Error(`Language.load failed with status ${e.status}.\n\n${n}`)}}));return t.then(e=>I(e,{loadAsync:!0})).then(e=>{const t=Object.keys(e),n=t.find(e=>gt.test(e)&&!e.includes("external_scanner_"));n||console.log(`Couldn't find language function in WASM file. Symbols:\n${JSON.stringify(t,null,2)}`);const r=e[n]();return new Language(_t,r)})}}class Query{constructor(e,t,n,r,o,s,i,a){St(e),this[0]=t,this.captureNames=n,this.textPredicates=r,this.predicates=o,this.setProperties=s,this.assertedProperties=i,this.refutedProperties=a}delete(){at._ts_query_delete(this[0]),this[0]=0}matches(e,t,n){t||(t=ft),n||(n=ft),Ct(e),at._ts_query_matches_wasm(this[0],e.tree[0],t.row,t.column,n.row,n.column);const r=L(Mt,"i32"),o=L(Mt+ut,"i32"),s=new Array(r);let i=o;for(let t=0;te(o))){s[t]={pattern:n,captures:o};const e=this.setProperties[n];e&&(s[t].setProperties=e);const r=this.assertedProperties[n];r&&(s[t].assertedProperties=r);const i=this.refutedProperties[n];i&&(s[t].refutedProperties=i)}}return at._free(o),s}captures(e,t,n){t||(t=ft),n||(n=ft),Ct(e),at._ts_query_captures_wasm(this[0],e.tree[0],t.row,t.column,n.row,n.column);const r=L(Mt,"i32"),o=L(Mt+ut,"i32"),s=[],i=[];let a=o;for(let t=0;te(i))){const e=i[r],n=this.setProperties[t];n&&(e.setProperties=n);const o=this.assertedProperties[t];o&&(e.assertedProperties=o);const a=this.refutedProperties[t];a&&(e.refutedProperties=a),s.push(e)}}return at._free(o),s}predicatesForPattern(e){return this.predicates[e]}}function It(e,t,n){const r=n-t;let o=e.textCallback(t,null,n);for(t+=o.length;t0))break;t+=r.length,o+=r}return t>n&&(o=o.slice(0,r)),o}function Nt(e,t,n,r){for(let o=0,s=r.length;o { + const message = event.data; // The JSON data our extension sen + switch (message.command) { + case 'update': + update_graph(message.svg, message.stms); + break; + case 'clear': + clear(); + break; + } +}); + +let graph = []; +let div = []; +let stms = []; + +function update_graph(svgs, stms_i) { + stms = stms_i; + const el = document.querySelector('body'); + // get scroll position in px + let last_scroll_left = el.scrollLeft; + let last_scroll_top = el.scrollTop; + + let message = document.getElementById("message"); + message.innerHTML = `#State machines ${svgs.length}`; + + delete_graph(); + if (svgs === undefined) { + return; + } + for (let i = 0; i < svgs.length; ++i) { + create_graph(svgs[i].svg, `svg_${i}`, i); + } + + // set scroll position in px + el.scrollLeft = last_scroll_left; + el.scrollTop = last_scroll_top; +} + +function create_graph(svg, name, index) { + let embed = document.createElementNS("http://www.w3.org/2000/svg", "svg"); + embed.setAttribute('style', 'width: 100%; height: 720px;'); + embed.setAttribute('type', 'image/svg+xml'); + embed.innerHTML = svg; + embed.id = name; + + //Add div + var elem = document.createElement('div'); + elem.style.width = "100%"; + elem.style.heigh = "500px"; + elem.style.border = "1px solid black"; + div.push(elem); + + document.body.appendChild(elem); + + //Add svg + elem.appendChild(embed); + + let pan_zoom = svgPanZoom(`#${name}`, pan_config); + pan_zoom.center(); + pan_zoom.resize(); + + let countries = embed.childNodes; + for (let i = 0; i < countries.length; i++) { + countries[i].addEventListener('click', e => { + let parent_target = e.target.parentNode; + let childs = parent_target.childNodes; + for (let i = 0; i < childs.length; ++i) { + let child = childs[i]; + if (child.tagName === 'title') { + let state_name = child.textContent; + let state_machine_index_i = index; + for (let j = 0; j < childs.length; ++j) { + let child_0 = childs[j]; + if (child_0.tagName === 'polygon' && check_state(state_machine_index_i, state_name) === true) { + uncheck_all(); + child_0.style = "fill:#d0fdf7"; + go_to_code_state(state_machine_index_i, state_name); + } + } + } + } + }); + + countries[i].addEventListener('click', e => { + let state_machine_index_i = index; + let parent_target = e.target.parentNode; + let childs = parent_target.childNodes; + for (let i = 0; i < childs.length; ++i) { + let child = childs[i]; + let transtion = child.textContent.split('->'); + + if (child.tagName === 'title' && transtion.length === 2) { + let text_count = 0; + let condition = ''; + let child_match; + let child_match_0; + for (let j = 0; j < childs.length; ++j) { + let child_0 = childs[j]; + if (child_0.tagName === 'text') { + if (text_count === 0) { + condition = child_0.textContent; + } + else { + condition += '\n' + child_0.textContent; + } + text_count += 1; + } + else if (child_0.tagName === 'polygon') { + child_match = child_0; + } + else if (child_0.tagName === 'path') { + child_match_0 = child_0; + } + } + if (text_count >= 0) { + uncheck_all(); + child_match.style = "fill:#0024b9;stroke:#0024b9"; + child_match_0.style = "stroke:#0024b9"; + go_to_condition(state_machine_index_i, transtion, condition); + } + } + } + }); + + } + graph.push(embed); + document.body.contentEditable = false; +} + +function uncheck_all() { + for (let i = 0; i < graph.length; i++) { + search_in_tree(graph[i], 'polygon'); + search_in_tree(graph[i], 'path'); + } +} + +function check_state(stm_index, state) { + let states = stms[stm_index].states; + for (let i = 0; i < states.length; ++i) { + if (states[i].name.replace(/\"/g, '').replace(/\'/g, '') === state) { + return true; + } + } + return false; +} + + +function search_in_tree(element, matchingTitle) { + let match = undefined; + function recursive_searchTree(element, matchingTitle) { + let type = element.tagName; + if (type === matchingTitle) { + if (element.style !== undefined && element.style.fill === 'rgb(208, 253, 247)') { + element.style = "fill:transparent"; + } + else if (element.style !== undefined && element.style.fill === 'rgb(0, 36, 185)' + && element.style.stroke === 'rgb(0, 36, 185)') { + element.style = "fill:#000000;stroke:#000000"; + } + else if (element.style !== undefined && element.style.stroke === 'rgb(0, 36, 185)') { + element.style = "fill:none;stroke:#000000"; + } + match = element; + } else if (element !== null) { + let i; + let result = null; + let childs = element.childNodes; + for (i = 0; result === null && i < childs.length; i++) { + result = recursive_searchTree(childs[i], matchingTitle); + if (result !== null) { + break; + } + } + return result; + } + return null; + } + recursive_searchTree(element, matchingTitle); + return match; +} + + +function go_to_code_state(stm_index, state) { + vscode.postMessage({ + command: 'go_to_state', + stm_index: stm_index, + state: state + }); +} + + +function go_to_condition(stm_index, transition, condition) { + vscode.postMessage({ + command: 'go_to_condition', + stm_index: stm_index, + transition: transition, + condition: condition + }); +} + +function delete_graph() { + if (graph === undefined) { + return; + } + for (let i = 0; i < graph.length; ++i) { + svgPanZoom(graph[i]).destroy(); + if (div[i].parentNode !== null) { + div[i].parentNode.removeChild(div[i]); + } + } +} + +let pan_config = { + zoomEnabled: true, + controlIconsEnabled: true, + fit: true, + center: true, +}; + +document.getElementById("export-as-svg").onclick = () => { + export_message("svg"); +}; + +function export_message(message) { + vscode.postMessage({ + command: 'export', + text: message + }); +} \ No newline at end of file diff --git a/resources/fsm/view/fsm_viewer.html b/resources/fsm/view/fsm_viewer.html new file mode 100644 index 0000000..05cc912 --- /dev/null +++ b/resources/fsm/view/fsm_viewer.html @@ -0,0 +1,38 @@ + + + + + + + Dependencies viewer + + + + + +
+ + + + +
+
+ +
+
+ +
+
+
+
+

+
+
+
+
+ + + \ No newline at end of file diff --git a/resources/netlist/img/icon/cells.png b/resources/netlist/img/icon/cells.png new file mode 100644 index 0000000000000000000000000000000000000000..20750209306f6a4b974bb78b32c0ba9ca1fba80e GIT binary patch literal 479 zcmV<50U-W~P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0dz@3K~y+T&62xH z15pr$&zy~sT)Y(;Sq)kXR^oypSlZY|d;)E(VrdaUQkt~-3TkN{z{WsAKzxXpi@^j< z78CZ2GrK3rDhBQJTV`kf8P3m~Va1;VI*;V(+&TgfJ6dWmH=itC@YlcqQ!Bx;8476W zVjh(2YSy{|z=A|5a?JtU0EE?8varuu@{6fXMH_*(QSXP*Hk!4pb*$SDjs!!H3nD)1 zn#;g|7{ALeO_FnjgBocXFQR)qs;vNREeH4wMuI4|6*>z_i8ugk>9Wg@26W$B5D=Fr zcR5I#RL*%_-x4d?b%#<$AUzDgrkfG(-R$v7+dtFaF2f1@ih%?igP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0iQ`kK~y+TrIEi& z15pgelj{$=se{l~QO9dh5Uhh}7Z(>NcNamS>Y%H;i~a+4?c}Z?_ydGaijxl7f(mL| z5JBA9ckPRLcWJ%SI!HedUXpJv_mT&_f^xPoM9FBdMyp^+g0X_ZT*OY7ndpo8QyApP#?G<7wIgdcI67udK%>@xcxRMlK2CmDYhf4|D zM?j(#UfzU+rZ~?{F1U%~8o?M5t%=-8yq3sDtM;;l9Sl3k1s>~2LKk-gBWTj=?56nr z%<|qKtTPoX8Xrb!a?nvumWyMAIL_w{AstpikLT_Pe64A|{xfRY;d77MPFV`#Ml-0I zjw0Y97w)6h8w8XG@}9P}15J2ajueiKaq+jL{ivqSe%?#@8dylFxMMFF<3IFE+E2Kt zv!C`-(g4Xih($ literal 0 HcmV?d00001 diff --git a/resources/netlist/img/icon/port.png b/resources/netlist/img/icon/port.png new file mode 100644 index 0000000000000000000000000000000000000000..b4c20f8de2ef6cb7f1a5a45641bb95e071a3a12a GIT binary patch literal 473 zcmV;~0Ve*5P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0d7e|K~y+Tm6E+m z13?hSXZAphL7zb+Vk3%GK8Oz>Vq>F~U}3FEBX(9|VeX8DjUQO15JV84AmnTS@&~W2SGDOe4i}-`NnVr3x`_Jq`KXR=~N=%or81=E>r`Z(KWh|)PqWJ8NwLjnv z0m%tzvOZCM)U61K3i#tHA`bE|Qf&iOOLkBD%Aq+^2N)KHk#EsNL!f#Zjy3xacmUal{bJ$Xo#j=+l?V6&u~l-%X{ZlY P00000NkvXXu0mjfCr-%$ literal 0 HcmV?d00001 diff --git a/resources/netlist/img/line_conn.gif b/resources/netlist/img/line_conn.gif new file mode 100644 index 0000000000000000000000000000000000000000..d561d36a915776730eb3069cee4c949f027667ed GIT binary patch literal 45 xcmZ?wbhEHbT_)p@)n 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 X3wf1`XyoU;TL_tNiW1dgpn(4aGkUu% literal 0 HcmV?d00001 diff --git a/resources/netlist/index.d.ts b/resources/netlist/index.d.ts new file mode 100644 index 0000000..e69de29 diff --git a/resources/netlist/index.js b/resources/netlist/index.js new file mode 100644 index 0000000..56ac596 --- /dev/null +++ b/resources/netlist/index.js @@ -0,0 +1,148 @@ +const os = require('os'); +const fs = require("../HDLfilesys"); + +const kernel = require("./kernel"); + +class Operation { + constructor() { + this.kernel = null; + this.vrfs = null; + } + + async launch() { + this.kernel = await kernel(); + this.vrfs = new fs.vrfs(this.kernel); + this.vrfs.diskMount(); + } + + /** + * @state finish-test + * @descriptionCn 直接执行指令 + * @param {String} command + */ + exec(command) { + this.kernel.ccall('run', '', ['string'], [command]); + } + + /** + * @state finish-test + * @descriptionCn 输出帮助界面 + */ + printHelp() { + this.kernel.TTY.message = ''; + this.exec("help"); + return this.kernel.TTY.message; + } + + /** + * @state finish-test + * @descriptionCn 设置内置log输出的使能 + * @param {Boolean} params (true : 打开内置log输出 | false : 关闭内置log输出) + */ + setInnerOutput(params) { + this.kernel.TTY.innerOutput = params; + } + + /** + * @state finish-test + * @descriptionCn 设置message的回调函数 + * @param {*} callback 对message操作的回调函数 + */ + setMessageCallback(callback) { + this.kernel.TTY.innerOutput = false; + this.kernel.TTY.callbackOutput = true; + this.kernel.TTY.callback = callback; + } + + /** + * @state finish-test + * @descriptionCn 导入文件到工程之中(仅适用于nodefs) 默认支持sv且覆盖 + * @param {Array} files 数组形式输入 输入所需导入工程的文件数组 + * @returns {String} 导入过程中所输出的日志(仅适用与message回调关闭的时候) + */ + load(files) { + this.kernel.TTY.message = ""; + const command = 'read_verilog -sv -formal -overwrite'; + for (let i = 0; i < files.length; i++) { + const file = files[i]; + if (os.platform().toLowerCase() === 'win32') { + console.log(this.kernel.FS.readdir('/')); + this.exec(`${command} /${file}`); + } else { + this.exec(`${command} /host/${file}`); + } + } + + return this.kernel.TTY.message; + } + + synth(options) { + options.argu = options.argu ? options.argu : ''; + let command = ''; + switch (options.type) { + case 'json': + command = 'write_json'; + break; + case 'verilog': + command = 'write_verilog'; + break; + case 'aiger': + command = 'write_aiger'; + break; + case 'blif': + command = 'write_blif'; + break; + case 'edif': + command = 'write_edif'; + break; + default: break; + } + this.exec(`${command} ${options.argu} /${options.path}`); + } + + /** + * @descriptionCn 以指定的模式导出设计 + * @param {{ + * path : '' // 在虚拟文件系统中存放的路径 + * type : '' // 指定的模式 + * argu : '' // 指定导出的参数 + * }} options + * @returns {String} 设计的内容 + */ + export(options) { + options.path = options.path ? options.path : 'output'; + options.argu = options.argu ? options.argu : ''; + + let command = ''; + switch (options.type) { + case 'json': + command = 'write_json'; + break; + case 'verilog': + command = 'write_verilog'; + break; + case 'aiger': + command = 'write_aiger'; + break; + case 'blif': + command = 'write_blif'; + break; + case 'edif': + command = 'write_edif'; + break; + default: break; + } + this.exec(`${command} ${options.argu} /${options.path}`); + return this.vrfs.readFileToText(options.path); + } + + reset() { + this.exec('design -reset'); + } + + exit() { + this.kernel = null; + this.vrfs = null; + } +} +module.exports = operation; \ No newline at end of file diff --git a/resources/netlist/kernel/index.js b/resources/netlist/kernel/index.js new file mode 100644 index 0000000..0978b01 --- /dev/null +++ b/resources/netlist/kernel/index.js @@ -0,0 +1,53 @@ + +var Module = (() => { + var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined; + if (typeof __filename !== 'undefined') _scriptDir = _scriptDir || __filename; + return ( +function(Module) { + Module = Module || {}; + +var Module=typeof Module!="undefined"?Module:{};var readyPromiseResolve,readyPromiseReject;Module["ready"]=new Promise(function(resolve,reject){readyPromiseResolve=resolve;readyPromiseReject=reject});var moduleOverrides=Object.assign({},Module);var arguments_=[];var thisProgram="./this.program";var quit_=(status,toThrow)=>{throw toThrow};var ENVIRONMENT_IS_WEB=typeof window=="object";var ENVIRONMENT_IS_WORKER=typeof importScripts=="function";var ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string";var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;function logExceptionOnExit(e){if(e instanceof ExitStatus)return;let toLog=e;err("exiting due to exception: "+toLog)}var fs;var nodePath;var requireNodeFS;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require("path").dirname(scriptDirectory)+"/"}else{scriptDirectory=__dirname+"/"}requireNodeFS=()=>{if(!nodePath){fs=require("fs");nodePath=require("path")}};read_=function shell_read(filename,binary){requireNodeFS();filename=nodePath["normalize"](filename);return fs.readFileSync(filename,binary?undefined:"utf8")};readBinary=filename=>{var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}return ret};readAsync=(filename,onload,onerror)=>{requireNodeFS();filename=nodePath["normalize"](filename);fs.readFile(filename,function(err,data){if(err)onerror(err);else onload(data.buffer)})};if(process["argv"].length>1){thisProgram=process["argv"][1].replace(/\\/g,"/")}arguments_=process["argv"].slice(2);quit_=(status,toThrow)=>{if(keepRuntimeAlive()){process["exitCode"]=status;throw toThrow}logExceptionOnExit(toThrow);process["exit"](status)};Module["inspect"]=function(){return"[Emscripten Module object]"}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptDir){scriptDirectory=_scriptDir}if(scriptDirectory.indexOf("blob:")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,"").lastIndexOf("/")+1)}else{scriptDirectory=""}{read_=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=(url,onload,onerror)=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=()=>{if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=title=>document.title=title}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.warn.bind(console);Object.assign(Module,moduleOverrides);moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["quit"])quit_=Module["quit"];var wasmBinary;if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];var noExitRuntime=Module["noExitRuntime"]||true;if(typeof WebAssembly!="object"){abort("no native wasm support detected")}var wasmMemory;var ABORT=false;var EXITSTATUS;function assert(condition,text){if(!condition){abort(text)}}var UTF8Decoder=typeof TextDecoder!="undefined"?new TextDecoder("utf8"):undefined;function UTF8ArrayToString(heapOrArray,idx,maxBytesToRead){var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heapOrArray[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.subarray(idx,endPtr))}var str="";while(idx>10,56320|ch&1023)}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&c<=57343){len+=4;++i}else{len+=3}}return len}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module["HEAP8"]=HEAP8=new Int8Array(buf);Module["HEAP16"]=HEAP16=new Int16Array(buf);Module["HEAP32"]=HEAP32=new Int32Array(buf);Module["HEAPU8"]=HEAPU8=new Uint8Array(buf);Module["HEAPU16"]=HEAPU16=new Uint16Array(buf);Module["HEAPU32"]=HEAPU32=new Uint32Array(buf);Module["HEAPF32"]=HEAPF32=new Float32Array(buf);Module["HEAPF64"]=HEAPF64=new Float64Array(buf)}var INITIAL_MEMORY=Module["INITIAL_MEMORY"]||536870912;var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;function keepRuntimeAlive(){return noExitRuntime}function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;if(!Module["noFSInit"]&&!FS.init.initialized)FS.init();FS.ignorePermissions=false;TTY.init();callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnInit(cb){__ATINIT__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function getUniqueRunDependency(id){return id}function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}function abort(what){{if(Module["onAbort"]){Module["onAbort"](what)}}what="Aborted("+what+")";err(what);ABORT=true;EXITSTATUS=1;what+=". Build with -sASSERTIONS for more info.";var e=new WebAssembly.RuntimeError(what);readyPromiseReject(e);throw e}var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return filename.startsWith(dataURIPrefix)}function isFileURI(filename){return filename.startsWith("file://")}var wasmBinaryFile;wasmBinaryFile="../resources/kernel/kernel.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(file){try{if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}throw"both async and sync fetching of the wasm failed"}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch=="function"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){if(!response["ok"]){throw"failed to load wasm binary file at '"+wasmBinaryFile+"'"}return response["arrayBuffer"]()}).catch(function(){return getBinary(wasmBinaryFile)})}else{if(readAsync){return new Promise(function(resolve,reject){readAsync(wasmBinaryFile,function(response){resolve(new Uint8Array(response))},reject)})}}}return Promise.resolve().then(function(){return getBinary(wasmBinaryFile)})}function createWasm(){var info={"a":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module["asm"]=exports;wasmMemory=Module["asm"]["_"];updateGlobalBufferAndViews(wasmMemory.buffer);wasmTable=Module["asm"]["ea"];addOnInit(Module["asm"]["$"]);removeRunDependency("wasm-instantiate")}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){receiveInstance(result["instance"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(function(instance){return instance}).then(receiver,function(reason){err("failed to asynchronously prepare wasm: "+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&!ENVIRONMENT_IS_NODE&&typeof fetch=="function"){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiationResult,function(reason){err("wasm streaming compile failed: "+reason);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(receiveInstantiationResult)})})}else{return instantiateArrayBuffer(receiveInstantiationResult)}}if(Module["instantiateWasm"]){try{var exports=Module["instantiateWasm"](info,receiveInstance);return exports}catch(e){err("Module.instantiateWasm callback failed with error: "+e);return false}}instantiateAsync().catch(readyPromiseReject);return{}}var tempDouble;var tempI64;var ASM_CONSTS={773592:()=>{if(ENVIRONMENT_IS_NODE){FS.mkdir("/hostcwd");FS.mount(NODEFS,{root:"."},"/hostcwd");FS.mkdir("/hostfs");FS.mount(NODEFS,{root:"/"},"/hostfs")}}};function ExitStatus(status){this.name="ExitStatus";this.message="Program terminated with exit("+status+")";this.status=status}function callRuntimeCallbacks(callbacks){while(callbacks.length>0){callbacks.shift()(Module)}}function handleException(e){if(e instanceof ExitStatus||e=="unwind"){return EXITSTATUS}quit_(1,e)}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}function __ZN3abc12Abc_RealMainEiPPc(){err("missing function: _ZN3abc12Abc_RealMainEiPPc");abort(-1)}function __ZN5Yosys6FfData10arst_to_srEv(){err("missing function: _ZN5Yosys6FfData10arst_to_srEv");abort(-1)}function __ZN5Yosys6FfData10unmap_srstEv(){err("missing function: _ZN5Yosys6FfData10unmap_srstEv");abort(-1)}function __ZN5Yosys6FfData11aload_to_srEv(){err("missing function: _ZN5Yosys6FfData11aload_to_srEv");abort(-1)}function __ZN5Yosys6FfData12add_dummy_ceEv(){err("missing function: _ZN5Yosys6FfData12add_dummy_ceEv");abort(-1)}function __ZN5Yosys6FfData12add_dummy_srEv(){err("missing function: _ZN5Yosys6FfData12add_dummy_srEv");abort(-1)}function __ZN5Yosys6FfData13add_dummy_clkEv(){err("missing function: _ZN5Yosys6FfData13add_dummy_clkEv");abort(-1)}function __ZN5Yosys6FfData13arst_to_aloadEv(){err("missing function: _ZN5Yosys6FfData13arst_to_aloadEv");abort(-1)}function __ZN5Yosys6FfData13flip_rst_bitsERKNS_7hashlib4poolIiNS1_8hash_opsIiEEEE(){err("missing function: _ZN5Yosys6FfData13flip_rst_bitsERKNS_7hashlib4poolIiNS1_8hash_opsIiEEEE");abort(-1)}function __ZN5Yosys6FfData14add_dummy_arstEv(){err("missing function: _ZN5Yosys6FfData14add_dummy_arstEv");abort(-1)}function __ZN5Yosys6FfData14add_dummy_srstEv(){err("missing function: _ZN5Yosys6FfData14add_dummy_srstEv");abort(-1)}function __ZN5Yosys6FfData15add_dummy_aloadEv(){err("missing function: _ZN5Yosys6FfData15add_dummy_aloadEv");abort(-1)}function __ZN5Yosys6FfData20convert_ce_over_srstEb(){err("missing function: _ZN5Yosys6FfData20convert_ce_over_srstEb");abort(-1)}function __ZN5Yosys6FfData4emitEv(){err("missing function: _ZN5Yosys6FfData4emitEv");abort(-1)}function __ZN5Yosys6FfData5sliceERKNSt3__26vectorIiNS1_9allocatorIiEEEE(){err("missing function: _ZN5Yosys6FfData5sliceERKNSt3__26vectorIiNS1_9allocatorIiEEEE");abort(-1)}function __ZN5Yosys6FfData6removeEv(){err("missing function: _ZN5Yosys6FfData6removeEv");abort(-1)}function __ZN5Yosys6FfData8unmap_ceEv(){err("missing function: _ZN5Yosys6FfData8unmap_ceEv");abort(-1)}function __ZN5Yosys6FfData9flip_bitsERKNS_7hashlib4poolIiNS1_8hash_opsIiEEEE(){err("missing function: _ZN5Yosys6FfData9flip_bitsERKNS_7hashlib4poolIiNS1_8hash_opsIiEEEE");abort(-1)}function __ZN5Yosys6FfDataC1EPNS_10FfInitValsEPNS_5RTLIL4CellE(){err("missing function: _ZN5Yosys6FfDataC1EPNS_10FfInitValsEPNS_5RTLIL4CellE");abort(-1)}function ___assert_fail(condition,filename,line,func){abort("Assertion failed: "+UTF8ToString(condition)+", at: "+[filename?UTF8ToString(filename):"unknown filename",line,func?UTF8ToString(func):"unknown function"])}var wasmTableMirror=[];function getWasmTableEntry(funcPtr){var func=wasmTableMirror[funcPtr];if(!func){if(funcPtr>=wasmTableMirror.length)wasmTableMirror.length=funcPtr+1;wasmTableMirror[funcPtr]=func=wasmTable.get(funcPtr)}return func}function ___call_sighandler(fp,sig){getWasmTableEntry(fp)(sig)}function ___cxa_allocate_exception(size){return _malloc(size+24)+24}function ExceptionInfo(excPtr){this.excPtr=excPtr;this.ptr=excPtr-24;this.set_type=function(type){HEAPU32[this.ptr+4>>2]=type};this.get_type=function(){return HEAPU32[this.ptr+4>>2]};this.set_destructor=function(destructor){HEAPU32[this.ptr+8>>2]=destructor};this.get_destructor=function(){return HEAPU32[this.ptr+8>>2]};this.set_refcount=function(refcount){HEAP32[this.ptr>>2]=refcount};this.set_caught=function(caught){caught=caught?1:0;HEAP8[this.ptr+12>>0]=caught};this.get_caught=function(){return HEAP8[this.ptr+12>>0]!=0};this.set_rethrown=function(rethrown){rethrown=rethrown?1:0;HEAP8[this.ptr+13>>0]=rethrown};this.get_rethrown=function(){return HEAP8[this.ptr+13>>0]!=0};this.init=function(type,destructor){this.set_adjusted_ptr(0);this.set_type(type);this.set_destructor(destructor);this.set_refcount(0);this.set_caught(false);this.set_rethrown(false)};this.add_ref=function(){var value=HEAP32[this.ptr>>2];HEAP32[this.ptr>>2]=value+1};this.release_ref=function(){var prev=HEAP32[this.ptr>>2];HEAP32[this.ptr>>2]=prev-1;return prev===1};this.set_adjusted_ptr=function(adjustedPtr){HEAPU32[this.ptr+16>>2]=adjustedPtr};this.get_adjusted_ptr=function(){return HEAPU32[this.ptr+16>>2]};this.get_exception_ptr=function(){var isPointer=___cxa_is_pointer_type(this.get_type());if(isPointer){return HEAPU32[this.excPtr>>2]}var adjusted=this.get_adjusted_ptr();if(adjusted!==0)return adjusted;return this.excPtr}}var exceptionLast=0;var uncaughtExceptionCount=0;function ___cxa_throw(ptr,type,destructor){var info=new ExceptionInfo(ptr);info.init(type,destructor);exceptionLast=ptr;uncaughtExceptionCount++;throw ptr}var PATH={isAbs:path=>path.charAt(0)==="/",splitPath:filename=>{var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:(parts,allowAboveRoot)=>{var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift("..")}}return parts},normalize:path=>{var isAbsolute=PATH.isAbs(path),trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(p=>!!p),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:path=>{var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return"."}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:path=>{if(path==="/")return"/";path=PATH.normalize(path);path=path.replace(/\/$/,"");var lastSlash=path.lastIndexOf("/");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))},join2:(l,r)=>{return PATH.normalize(l+"/"+r)}};function getRandomDevice(){if(typeof crypto=="object"&&typeof crypto["getRandomValues"]=="function"){var randomBuffer=new Uint8Array(1);return()=>{crypto.getRandomValues(randomBuffer);return randomBuffer[0]}}else if(ENVIRONMENT_IS_NODE){try{var crypto_module=require("crypto");return()=>crypto_module["randomBytes"](1)[0]}catch(e){}}return()=>abort("randomDevice")}var PATH_FS={resolve:function(){var resolvedPath="",resolvedAbsolute=false;for(var i=arguments.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?arguments[i]:FS.cwd();if(typeof path!="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){return""}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=PATH.isAbs(path)}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(p=>!!p),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:(from,to)=>{from=PATH_FS.resolve(from).substr(1);to=PATH_FS.resolve(to).substr(1);function trim(arr){var start=0;for(;start=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}var TTY={ttys:[],callbackOutput : false,innerOutput : true,message : '',callback : function (log, mode) {},callbackOutput : false,innerOutput : true,message : '',callback : function (log, mode) {},callbackOutput : false,innerOutput : true,message : '',callback : function (log, mode) {},callbackOutput : false,innerOutput : true,message : '',callback : function (log, mode) {},callbackOutput : false,innerOutput : true,message : '',callback : function (log, mode) {},callbackOutput : false,innerOutput : true,message : '',callback : function (log, mode) {},callbackOutput : false,innerOutput : true,message : '',callback : function (log, mode) {},callbackOutput : false,innerOutput : true,message : '',callback : function (log, mode) {},init:function(){},shutdown:function(){},register:function(dev,ops){TTY.ttys[dev]={input:[],output:[],ops:ops};FS.registerDevice(dev,TTY.stream_ops)},stream_ops:{open:function(stream){var tty=TTY.ttys[stream.node.rdev];if(!tty){throw new FS.ErrnoError(43)}stream.tty=tty;stream.seekable=false},close:function(stream){stream.tty.ops.flush(stream.tty)},flush:function(stream){stream.tty.ops.flush(stream.tty)},read:function(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.get_char){throw new FS.ErrnoError(60)}var bytesRead=0;for(var i=0;i0){result=buf.slice(0,bytesRead).toString("utf-8")}else{result=null}}else if(typeof window!="undefined"&&typeof window.prompt=="function"){result=window.prompt("Input: ");if(result!==null){result+="\n"}}else if(typeof readline=="function"){result=readline();if(result!==null){result+="\n"}}if(!result){return null}tty.input=intArrayFromString(result,true)}return tty.input.shift()}, +put_char:function(tty,val){ + if(val===null||val===10){ + let log = UTF8ArrayToString(tty.output, 0); + if(TTY.callbackOutput) { + TTY.callback(log, "message"); + } + if(TTY.innerOutput) { + out(log); + } + TTY.message = TTY.message + log + "\n"; + tty.output = [] + }else{ + if(val!=0)tty.output.push(val) + } +} +,flush:function(tty){if(tty.output&&tty.output.length>0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}}},default_tty1_ops:{ +put_char:function(tty,val){ + if(val===null||val===10){ + let error = UTF8ArrayToString(tty.output, 0); + if(TTY.callbackOutput) { + TTY.callback(error, "error"); + } + if(TTY.innerOutput) { + err(error); + } + TTY.message = TTY.message + error + "\n"; + tty.output = [] + }else{ + if(val!=0)tty.output.push(val) + } +} +,flush:function(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};function mmapAlloc(size){abort()}var MEMFS={ops_table:null,mount:function(mount){return MEMFS.createNode(null,"/",16384|511,0)},createNode:function(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(63)}if(!MEMFS.ops_table){MEMFS.ops_table={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}}}var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.timestamp=Date.now();if(parent){parent.contents[name]=node;parent.timestamp=node.timestamp}return node},getFileDataAsTypedArray:function(node){if(!node.contents)return new Uint8Array(0);if(node.contents.subarray)return node.contents.subarray(0,node.usedBytes);return new Uint8Array(node.contents)},expandFileStorage:function(node,newCapacity){var prevCapacity=node.contents?node.contents.length:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity>>0);if(prevCapacity!=0)newCapacity=Math.max(newCapacity,256);var oldContents=node.contents;node.contents=new Uint8Array(newCapacity);if(node.usedBytes>0)node.contents.set(oldContents.subarray(0,node.usedBytes),0)},resizeFileStorage:function(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0}else{var oldContents=node.contents;node.contents=new Uint8Array(newSize);if(oldContents){node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)))}node.usedBytes=newSize}},node_ops:{getattr:function(node){var attr={};attr.dev=FS.isChrdev(node.mode)?node.id:1;attr.ino=node.id;attr.mode=node.mode;attr.nlink=1;attr.uid=0;attr.gid=0;attr.rdev=node.rdev;if(FS.isDir(node.mode)){attr.size=4096}else if(FS.isFile(node.mode)){attr.size=node.usedBytes}else if(FS.isLink(node.mode)){attr.size=node.link.length}else{attr.size=0}attr.atime=new Date(node.timestamp);attr.mtime=new Date(node.timestamp);attr.ctime=new Date(node.timestamp);attr.blksize=4096;attr.blocks=Math.ceil(attr.size/attr.blksize);return attr},setattr:function(node,attr){if(attr.mode!==undefined){node.mode=attr.mode}if(attr.timestamp!==undefined){node.timestamp=attr.timestamp}if(attr.size!==undefined){MEMFS.resizeFileStorage(node,attr.size)}},lookup:function(parent,name){throw FS.genericErrors[44]},mknod:function(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename:function(old_node,new_dir,new_name){if(FS.isDir(old_node.mode)){var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(new_node){for(var i in new_node.contents){throw new FS.ErrnoError(55)}}}delete old_node.parent.contents[old_node.name];old_node.parent.timestamp=Date.now();old_node.name=new_name;new_dir.contents[new_name]=old_node;new_dir.timestamp=old_node.parent.timestamp;old_node.parent=new_dir},unlink:function(parent,name){delete parent.contents[name];parent.timestamp=Date.now()},rmdir:function(parent,name){var node=FS.lookupNode(parent,name);for(var i in node.contents){throw new FS.ErrnoError(55)}delete parent.contents[name];parent.timestamp=Date.now()},readdir:function(node){var entries=[".",".."];for(var key in node.contents){if(!node.contents.hasOwnProperty(key)){continue}entries.push(key)}return entries},symlink:function(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink:function(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read:function(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i0||position+length{assert(arrayBuffer,'Loading data file "'+url+'" failed (no arrayBuffer).');onload(new Uint8Array(arrayBuffer));if(dep)removeRunDependency(dep)},event=>{if(onerror){onerror()}else{throw'Loading data file "'+url+'" failed.'}});if(dep)addRunDependency(dep)}var ERRNO_CODES={};var NODEFS={isWindows:false,staticInit:()=>{NODEFS.isWindows=!!process.platform.match(/^win/);var flags=process["binding"]("constants");if(flags["fs"]){flags=flags["fs"]}NODEFS.flagsForNodeMap={1024:flags["O_APPEND"],64:flags["O_CREAT"],128:flags["O_EXCL"],256:flags["O_NOCTTY"],0:flags["O_RDONLY"],2:flags["O_RDWR"],4096:flags["O_SYNC"],512:flags["O_TRUNC"],1:flags["O_WRONLY"],131072:flags["O_NOFOLLOW"]}},convertNodeCode:e=>{var code=e.code;return ERRNO_CODES[code]},mount:mount=>{return NODEFS.createNode(null,"/",NODEFS.getMode(mount.opts.root),0)},createNode:(parent,name,mode,dev)=>{if(!FS.isDir(mode)&&!FS.isFile(mode)&&!FS.isLink(mode)){throw new FS.ErrnoError(28)}var node=FS.createNode(parent,name,mode);node.node_ops=NODEFS.node_ops;node.stream_ops=NODEFS.stream_ops;return node},getMode:path=>{var stat;try{stat=fs.lstatSync(path);if(NODEFS.isWindows){stat.mode=stat.mode|(stat.mode&292)>>2}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(NODEFS.convertNodeCode(e))}return stat.mode},realPath:node=>{var parts=[];while(node.parent!==node){parts.push(node.name);node=node.parent}parts.push(node.mount.opts.root);parts.reverse();return PATH.join.apply(null,parts)},flagsForNode:flags=>{flags&=~2097152;flags&=~2048;flags&=~32768;flags&=~524288;flags&=~65536;var newFlags=0;for(var k in NODEFS.flagsForNodeMap){if(flags&k){newFlags|=NODEFS.flagsForNodeMap[k];flags^=k}}if(flags){throw new FS.ErrnoError(28)}return newFlags},node_ops:{getattr:node=>{var path=NODEFS.realPath(node);var stat;try{stat=fs.lstatSync(path)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(NODEFS.convertNodeCode(e))}if(NODEFS.isWindows&&!stat.blksize){stat.blksize=4096}if(NODEFS.isWindows&&!stat.blocks){stat.blocks=(stat.size+stat.blksize-1)/stat.blksize|0}return{dev:stat.dev,ino:stat.ino,mode:stat.mode,nlink:stat.nlink,uid:stat.uid,gid:stat.gid,rdev:stat.rdev,size:stat.size,atime:stat.atime,mtime:stat.mtime,ctime:stat.ctime,blksize:stat.blksize,blocks:stat.blocks}},setattr:(node,attr)=>{var path=NODEFS.realPath(node);try{if(attr.mode!==undefined){fs.chmodSync(path,attr.mode);node.mode=attr.mode}if(attr.timestamp!==undefined){var date=new Date(attr.timestamp);fs.utimesSync(path,date,date)}if(attr.size!==undefined){fs.truncateSync(path,attr.size)}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(NODEFS.convertNodeCode(e))}},lookup:(parent,name)=>{var path=PATH.join2(NODEFS.realPath(parent),name);var mode=NODEFS.getMode(path);return NODEFS.createNode(parent,name,mode)},mknod:(parent,name,mode,dev)=>{var node=NODEFS.createNode(parent,name,mode,dev);var path=NODEFS.realPath(node);try{if(FS.isDir(node.mode)){fs.mkdirSync(path,node.mode)}else{fs.writeFileSync(path,"",{mode:node.mode})}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(NODEFS.convertNodeCode(e))}return node},rename:(oldNode,newDir,newName)=>{var oldPath=NODEFS.realPath(oldNode);var newPath=PATH.join2(NODEFS.realPath(newDir),newName);try{fs.renameSync(oldPath,newPath)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(NODEFS.convertNodeCode(e))}oldNode.name=newName},unlink:(parent,name)=>{var path=PATH.join2(NODEFS.realPath(parent),name);try{fs.unlinkSync(path)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(NODEFS.convertNodeCode(e))}},rmdir:(parent,name)=>{var path=PATH.join2(NODEFS.realPath(parent),name);try{fs.rmdirSync(path)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(NODEFS.convertNodeCode(e))}},readdir:node=>{var path=NODEFS.realPath(node);try{return fs.readdirSync(path)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(NODEFS.convertNodeCode(e))}},symlink:(parent,newName,oldPath)=>{var newPath=PATH.join2(NODEFS.realPath(parent),newName);try{fs.symlinkSync(oldPath,newPath)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(NODEFS.convertNodeCode(e))}},readlink:node=>{var path=NODEFS.realPath(node);try{path=fs.readlinkSync(path);path=nodePath.relative(nodePath.resolve(node.mount.opts.root),path);return path}catch(e){if(!e.code)throw e;if(e.code==="UNKNOWN")throw new FS.ErrnoError(28);throw new FS.ErrnoError(NODEFS.convertNodeCode(e))}}},stream_ops:{open:stream=>{var path=NODEFS.realPath(stream.node);try{if(FS.isFile(stream.node.mode)){stream.nfd=fs.openSync(path,NODEFS.flagsForNode(stream.flags))}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(NODEFS.convertNodeCode(e))}},close:stream=>{try{if(FS.isFile(stream.node.mode)&&stream.nfd){fs.closeSync(stream.nfd)}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(NODEFS.convertNodeCode(e))}},read:(stream,buffer,offset,length,position)=>{if(length===0)return 0;try{return fs.readSync(stream.nfd,Buffer.from(buffer.buffer),offset,length,position)}catch(e){throw new FS.ErrnoError(NODEFS.convertNodeCode(e))}},write:(stream,buffer,offset,length,position)=>{try{return fs.writeSync(stream.nfd,Buffer.from(buffer.buffer),offset,length,position)}catch(e){throw new FS.ErrnoError(NODEFS.convertNodeCode(e))}},llseek:(stream,offset,whence)=>{var position=offset;if(whence===1){position+=stream.position}else if(whence===2){if(FS.isFile(stream.node.mode)){try{var stat=fs.fstatSync(stream.nfd);position+=stat.size}catch(e){throw new FS.ErrnoError(NODEFS.convertNodeCode(e))}}}if(position<0){throw new FS.ErrnoError(28)}return position},mmap:(stream,length,position,prot,flags)=>{if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(43)}var ptr=mmapAlloc(length);NODEFS.stream_ops.read(stream,HEAP8,ptr,length,position);return{ptr:ptr,allocated:true}},msync:(stream,buffer,offset,length,mmapFlags)=>{if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(43)}if(mmapFlags&2){return 0}var bytesWritten=NODEFS.stream_ops.write(stream,buffer,0,length,offset,false);return 0}}};var FS={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,lookupPath:(path,opts={})=>{path=PATH_FS.resolve(FS.cwd(),path);if(!path)return{path:"",node:null};var defaults={follow_mount:true,recurse_count:0};opts=Object.assign(defaults,opts);if(opts.recurse_count>8){throw new FS.ErrnoError(32)}var parts=PATH.normalizeArray(path.split("/").filter(p=>!!p),false);var current=FS.root;var current_path="/";for(var i=0;i40){throw new FS.ErrnoError(32)}}}}return{path:current_path,node:current}},getPath:node=>{var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!=="/"?mount+"/"+path:mount+path}path=path?node.name+"/"+path:node.name;node=node.parent}},hashName:(parentid,name)=>{var hash=0;for(var i=0;i>>0)%FS.nameTable.length},hashAddNode:node=>{var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode:node=>{var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}},lookupNode:(parent,name)=>{var errCode=FS.mayLookup(parent);if(errCode){throw new FS.ErrnoError(errCode,parent)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)},createNode:(parent,name,mode,rdev)=>{var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode:node=>{FS.hashRemoveNode(node)},isRoot:node=>{return node===node.parent},isMountpoint:node=>{return!!node.mounted},isFile:mode=>{return(mode&61440)===32768},isDir:mode=>{return(mode&61440)===16384},isLink:mode=>{return(mode&61440)===40960},isChrdev:mode=>{return(mode&61440)===8192},isBlkdev:mode=>{return(mode&61440)===24576},isFIFO:mode=>{return(mode&61440)===4096},isSocket:mode=>{return(mode&49152)===49152},flagModes:{"r":0,"r+":2,"w":577,"w+":578,"a":1089,"a+":1090},modeStringToFlags:str=>{var flags=FS.flagModes[str];if(typeof flags=="undefined"){throw new Error("Unknown file open mode: "+str)}return flags},flagsToPermissionString:flag=>{var perms=["r","w","rw"][flag&3];if(flag&512){perms+="w"}return perms},nodePermissions:(node,perms)=>{if(FS.ignorePermissions){return 0}if(perms.includes("r")&&!(node.mode&292)){return 2}else if(perms.includes("w")&&!(node.mode&146)){return 2}else if(perms.includes("x")&&!(node.mode&73)){return 2}return 0},mayLookup:dir=>{var errCode=FS.nodePermissions(dir,"x");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate:(dir,name)=>{try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,"wx")},mayDelete:(dir,name,isdir)=>{var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var errCode=FS.nodePermissions(dir,"wx");if(errCode){return errCode}if(isdir){if(!FS.isDir(node.mode)){return 54}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return 10}}else{if(FS.isDir(node.mode)){return 31}}return 0},mayOpen:(node,flags)=>{if(!node){return 44}if(FS.isLink(node.mode)){return 32}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!=="r"||flags&512){return 31}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))},MAX_OPEN_FDS:4096,nextfd:(fd_start=0,fd_end=FS.MAX_OPEN_FDS)=>{for(var fd=fd_start;fd<=fd_end;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStream:fd=>FS.streams[fd],createStream:(stream,fd_start,fd_end)=>{if(!FS.FSStream){FS.FSStream=function(){this.shared={}};FS.FSStream.prototype={};Object.defineProperties(FS.FSStream.prototype,{object:{get:function(){return this.node},set:function(val){this.node=val}},isRead:{get:function(){return(this.flags&2097155)!==1}},isWrite:{get:function(){return(this.flags&2097155)!==0}},isAppend:{get:function(){return this.flags&1024}},flags:{get:function(){return this.shared.flags},set:function(val){this.shared.flags=val}},position:{get:function(){return this.shared.position},set:function(val){this.shared.position=val}}})}stream=Object.assign(new FS.FSStream,stream);var fd=FS.nextfd(fd_start,fd_end);stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream:fd=>{FS.streams[fd]=null},chrdev_stream_ops:{open:stream=>{var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;if(stream.stream_ops.open){stream.stream_ops.open(stream)}},llseek:()=>{throw new FS.ErrnoError(70)}},major:dev=>dev>>8,minor:dev=>dev&255,makedev:(ma,mi)=>ma<<8|mi,registerDevice:(dev,ops)=>{FS.devices[dev]={stream_ops:ops}},getDevice:dev=>FS.devices[dev],getMounts:mount=>{var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push.apply(check,m.mounts)}return mounts},syncfs:(populate,callback)=>{if(typeof populate=="function"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){err("warning: "+FS.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work")}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(errCode){FS.syncFSRequests--;return callback(errCode)}function done(errCode){if(errCode){if(!done.errored){done.errored=true;return doCallback(errCode)}return}if(++completed>=mounts.length){doCallback(null)}}mounts.forEach(mount=>{if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)})},mount:(type,opts,mountpoint)=>{var root=mountpoint==="/";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(10)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}}var mount={type:type,opts:opts,mountpoint:mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot},unmount:mountpoint=>{var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(28)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach(hash=>{var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.includes(current.mount)){FS.destroyNode(current)}current=next}});node.mounted=null;var idx=node.mount.mounts.indexOf(mount);node.mount.mounts.splice(idx,1)},lookup:(parent,name)=>{return parent.node_ops.lookup(parent,name)},mknod:(path,mode,dev)=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name==="."||name===".."){throw new FS.ErrnoError(28)}var errCode=FS.mayCreate(parent,name);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(63)}return parent.node_ops.mknod(parent,name,mode,dev)},create:(path,mode)=>{mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir:(path,mode)=>{mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree:(path,mode)=>{var dirs=path.split("/");var d="";for(var i=0;i{if(typeof dev=="undefined"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)},symlink:(oldpath,newpath)=>{if(!PATH_FS.resolve(oldpath)){throw new FS.ErrnoError(44)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var newname=PATH.basename(newpath);var errCode=FS.mayCreate(parent,newname);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(63)}return parent.node_ops.symlink(parent,newname,oldpath)},rename:(old_path,new_path)=>{var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node;if(!old_dir||!new_dir)throw new FS.ErrnoError(44);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(75)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH_FS.relative(old_path,new_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(28)}relative=PATH_FS.relative(new_path,old_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(55)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var errCode=FS.mayDelete(old_dir,old_name,isdir);if(errCode){throw new FS.ErrnoError(errCode)}errCode=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(errCode){throw new FS.ErrnoError(errCode)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(63)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(10)}if(new_dir!==old_dir){errCode=FS.nodePermissions(old_dir,"w");if(errCode){throw new FS.ErrnoError(errCode)}}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name)}catch(e){throw e}finally{FS.hashAddNode(old_node)}},rmdir:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,true);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node)},readdir:path=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node.node_ops.readdir){throw new FS.ErrnoError(54)}return node.node_ops.readdir(node)},unlink:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,false);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.unlink(parent,name);FS.destroyNode(node)},readlink:path=>{var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(44)}if(!link.node_ops.readlink){throw new FS.ErrnoError(28)}return PATH_FS.resolve(FS.getPath(link.parent),link.node_ops.readlink(link))},stat:(path,dontFollow)=>{var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;if(!node){throw new FS.ErrnoError(44)}if(!node.node_ops.getattr){throw new FS.ErrnoError(63)}return node.node_ops.getattr(node)},lstat:path=>{return FS.stat(path,true)},chmod:(path,mode,dontFollow)=>{var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{mode:mode&4095|node.mode&~4095,timestamp:Date.now()})},lchmod:(path,mode)=>{FS.chmod(path,mode,true)},fchmod:(fd,mode)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chmod(stream.node,mode)},chown:(path,uid,gid,dontFollow)=>{var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{timestamp:Date.now()})},lchown:(path,uid,gid)=>{FS.chown(path,uid,gid,true)},fchown:(fd,uid,gid)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chown(stream.node,uid,gid)},truncate:(path,len)=>{if(len<0){throw new FS.ErrnoError(28)}var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}if(FS.isDir(node.mode)){throw new FS.ErrnoError(31)}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(28)}var errCode=FS.nodePermissions(node,"w");if(errCode){throw new FS.ErrnoError(errCode)}node.node_ops.setattr(node,{size:len,timestamp:Date.now()})},ftruncate:(fd,len)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(28)}FS.truncate(stream.node,len)},utime:(path,atime,mtime)=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;node.node_ops.setattr(node,{timestamp:Math.max(atime,mtime)})},open:(path,flags,mode)=>{if(path===""){throw new FS.ErrnoError(44)}flags=typeof flags=="string"?FS.modeStringToFlags(flags):flags;mode=typeof mode=="undefined"?438:mode;if(flags&64){mode=mode&4095|32768}else{mode=0}var node;if(typeof path=="object"){node=path}else{path=PATH.normalize(path);try{var lookup=FS.lookupPath(path,{follow:!(flags&131072)});node=lookup.node}catch(e){}}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(20)}}else{node=FS.mknod(path,mode,0);created=true}}if(!node){throw new FS.ErrnoError(44)}if(FS.isChrdev(node.mode)){flags&=~512}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}if(!created){var errCode=FS.mayOpen(node,flags);if(errCode){throw new FS.ErrnoError(errCode)}}if(flags&512&&!created){FS.truncate(node,0)}flags&=~(128|512|131072);var stream=FS.createStream({node:node,path:FS.getPath(node),flags:flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false});if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(Module["logReadFiles"]&&!(flags&1)){if(!FS.readFiles)FS.readFiles={};if(!(path in FS.readFiles)){FS.readFiles[path]=1}}return stream},close:stream=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}stream.fd=null},isClosed:stream=>{return stream.fd===null},llseek:(stream,offset,whence)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(70)}if(whence!=0&&whence!=1&&whence!=2){throw new FS.ErrnoError(28)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position},read:(stream,buffer,offset,length,position)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.read){throw new FS.ErrnoError(28)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead},write:(stream,buffer,offset,length,position,canOwn)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.write){throw new FS.ErrnoError(28)}if(stream.seekable&&stream.flags&1024){FS.llseek(stream,0,2)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;return bytesWritten},allocate:(stream,offset,length)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(offset<0||length<=0){throw new FS.ErrnoError(28)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(!FS.isFile(stream.node.mode)&&!FS.isDir(stream.node.mode)){throw new FS.ErrnoError(43)}if(!stream.stream_ops.allocate){throw new FS.ErrnoError(138)}stream.stream_ops.allocate(stream,offset,length)},mmap:(stream,length,position,prot,flags)=>{if((prot&2)!==0&&(flags&2)===0&&(stream.flags&2097155)!==2){throw new FS.ErrnoError(2)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(2)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(43)}return stream.stream_ops.mmap(stream,length,position,prot,flags)},msync:(stream,buffer,offset,length,mmapFlags)=>{if(!stream||!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)},munmap:stream=>0,ioctl:(stream,cmd,arg)=>{if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(59)}return stream.stream_ops.ioctl(stream,cmd,arg)},readFile:(path,opts={})=>{opts.flags=opts.flags||0;opts.encoding=opts.encoding||"binary";if(opts.encoding!=="utf8"&&opts.encoding!=="binary"){throw new Error('Invalid encoding type "'+opts.encoding+'"')}var ret;var stream=FS.open(path,opts.flags);var stat=FS.stat(path);var length=stat.size;var buf=new Uint8Array(length);FS.read(stream,buf,0,length,0);if(opts.encoding==="utf8"){ret=UTF8ArrayToString(buf,0)}else if(opts.encoding==="binary"){ret=buf}FS.close(stream);return ret},writeFile:(path,data,opts={})=>{opts.flags=opts.flags||577;var stream=FS.open(path,opts.flags,opts.mode);if(typeof data=="string"){var buf=new Uint8Array(lengthBytesUTF8(data)+1);var actualNumBytes=stringToUTF8Array(data,buf,0,buf.length);FS.write(stream,buf,0,actualNumBytes,undefined,opts.canOwn)}else if(ArrayBuffer.isView(data)){FS.write(stream,data,0,data.byteLength,undefined,opts.canOwn)}else{throw new Error("Unsupported data type")}FS.close(stream)},cwd:()=>FS.currentPath,chdir:path=>{var lookup=FS.lookupPath(path,{follow:true});if(lookup.node===null){throw new FS.ErrnoError(44)}if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(54)}var errCode=FS.nodePermissions(lookup.node,"x");if(errCode){throw new FS.ErrnoError(errCode)}FS.currentPath=lookup.path},createDefaultDirectories:()=>{FS.mkdir("/tmp");FS.mkdir("/home");FS.mkdir("/home/web_user")},createDefaultDevices:()=>{FS.mkdir("/dev");FS.registerDevice(FS.makedev(1,3),{read:()=>0,write:(stream,buffer,offset,length,pos)=>length});FS.mkdev("/dev/null",FS.makedev(1,3));TTY.register(FS.makedev(5,0),TTY.default_tty_ops);TTY.register(FS.makedev(6,0),TTY.default_tty1_ops);FS.mkdev("/dev/tty",FS.makedev(5,0));FS.mkdev("/dev/tty1",FS.makedev(6,0));var random_device=getRandomDevice();FS.createDevice("/dev","random",random_device);FS.createDevice("/dev","urandom",random_device);FS.mkdir("/dev/shm");FS.mkdir("/dev/shm/tmp")},createSpecialDirectories:()=>{FS.mkdir("/proc");var proc_self=FS.mkdir("/proc/self");FS.mkdir("/proc/self/fd");FS.mount({mount:()=>{var node=FS.createNode(proc_self,"fd",16384|511,73);node.node_ops={lookup:(parent,name)=>{var fd=+name;var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);var ret={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>stream.path}};ret.parent=ret;return ret}};return node}},{},"/proc/self/fd")},createStandardStreams:()=>{if(Module["stdin"]){FS.createDevice("/dev","stdin",Module["stdin"])}else{FS.symlink("/dev/tty","/dev/stdin")}if(Module["stdout"]){FS.createDevice("/dev","stdout",null,Module["stdout"])}else{FS.symlink("/dev/tty","/dev/stdout")}if(Module["stderr"]){FS.createDevice("/dev","stderr",null,Module["stderr"])}else{FS.symlink("/dev/tty1","/dev/stderr")}var stdin=FS.open("/dev/stdin",0);var stdout=FS.open("/dev/stdout",1);var stderr=FS.open("/dev/stderr",1)},ensureErrnoError:()=>{if(FS.ErrnoError)return;FS.ErrnoError=function ErrnoError(errno,node){this.node=node;this.setErrno=function(errno){this.errno=errno};this.setErrno(errno);this.message="FS error"};FS.ErrnoError.prototype=new Error;FS.ErrnoError.prototype.constructor=FS.ErrnoError;[44].forEach(code=>{FS.genericErrors[code]=new FS.ErrnoError(code);FS.genericErrors[code].stack=""})},staticInit:()=>{FS.ensureErrnoError();FS.nameTable=new Array(4096);FS.mount(MEMFS,{},"/");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={"MEMFS":MEMFS,"NODEFS":NODEFS}},init:(input,output,error)=>{FS.init.initialized=true;FS.ensureErrnoError();Module["stdin"]=input||Module["stdin"];Module["stdout"]=output||Module["stdout"];Module["stderr"]=error||Module["stderr"];FS.createStandardStreams()},quit:()=>{FS.init.initialized=false;for(var i=0;i{var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode},findObject:(path,dontResolveLastLink)=>{var ret=FS.analyzePath(path,dontResolveLastLink);if(!ret.exists){return null}return ret.object},analyzePath:(path,dontResolveLastLink)=>{try{var lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});path=lookup.path}catch(e){}var ret={isRoot:false,exists:false,error:0,name:null,path:null,object:null,parentExists:false,parentPath:null,parentObject:null};try{var lookup=FS.lookupPath(path,{parent:true});ret.parentExists=true;ret.parentPath=lookup.path;ret.parentObject=lookup.node;ret.name=PATH.basename(path);lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});ret.exists=true;ret.path=lookup.path;ret.object=lookup.node;ret.name=lookup.node.name;ret.isRoot=lookup.path==="/"}catch(e){ret.error=e.errno}return ret},createPath:(parent,path,canRead,canWrite)=>{parent=typeof parent=="string"?parent:FS.getPath(parent);var parts=path.split("/").reverse();while(parts.length){var part=parts.pop();if(!part)continue;var current=PATH.join2(parent,part);try{FS.mkdir(current)}catch(e){}parent=current}return current},createFile:(parent,name,properties,canRead,canWrite)=>{var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(canRead,canWrite);return FS.create(path,mode)},createDataFile:(parent,name,data,canRead,canWrite,canOwn)=>{var path=name;if(parent){parent=typeof parent=="string"?parent:FS.getPath(parent);path=name?PATH.join2(parent,name):parent}var mode=FS.getMode(canRead,canWrite);var node=FS.create(path,mode);if(data){if(typeof data=="string"){var arr=new Array(data.length);for(var i=0,len=data.length;i{var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(!!input,!!output);if(!FS.createDevice.major)FS.createDevice.major=64;var dev=FS.makedev(FS.createDevice.major++,0);FS.registerDevice(dev,{open:stream=>{stream.seekable=false},close:stream=>{if(output&&output.buffer&&output.buffer.length){output(10)}},read:(stream,buffer,offset,length,pos)=>{var bytesRead=0;for(var i=0;i{for(var i=0;i{if(obj.isDevice||obj.isFolder||obj.link||obj.contents)return true;if(typeof XMLHttpRequest!="undefined"){throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.")}else if(read_){try{obj.contents=intArrayFromString(read_(obj.url),true);obj.usedBytes=obj.contents.length}catch(e){throw new FS.ErrnoError(29)}}else{throw new Error("Cannot load without read() or XMLHttpRequest.")}},createLazyFile:(parent,name,url,canRead,canWrite)=>{function LazyUint8Array(){this.lengthKnown=false;this.chunks=[]}LazyUint8Array.prototype.get=function LazyUint8Array_get(idx){if(idx>this.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]};LazyUint8Array.prototype.setDataGetter=function LazyUint8Array_setDataGetter(getter){this.getter=getter};LazyUint8Array.prototype.cacheLength=function LazyUint8Array_cacheLength(){var xhr=new XMLHttpRequest;xhr.open("HEAD",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);var datalength=Number(xhr.getResponseHeader("Content-length"));var header;var hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&header==="bytes";var usesGzip=(header=xhr.getResponseHeader("Content-Encoding"))&&header==="gzip";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=(from,to)=>{if(from>to)throw new Error("invalid range ("+from+", "+to+") or no bytes requested!");if(to>datalength-1)throw new Error("only "+datalength+" bytes available! programmer error!");var xhr=new XMLHttpRequest;xhr.open("GET",url,false);if(datalength!==chunkSize)xhr.setRequestHeader("Range","bytes="+from+"-"+to);xhr.responseType="arraybuffer";if(xhr.overrideMimeType){xhr.overrideMimeType("text/plain; charset=x-user-defined")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}return intArrayFromString(xhr.responseText||"",true)};var lazyArray=this;lazyArray.setDataGetter(chunkNum=>{var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]=="undefined"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]=="undefined")throw new Error("doXHR failed!");return lazyArray.chunks[chunkNum]});if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;out("LazyFiles on gzip forces download of the whole file when length is accessed")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true};if(typeof XMLHttpRequest!="undefined"){if(!ENVIRONMENT_IS_WORKER)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var lazyArray=new LazyUint8Array;Object.defineProperties(lazyArray,{length:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._length}},chunkSize:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}});var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url:url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperties(node,{usedBytes:{get:function(){return this.contents.length}}});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach(key=>{var fn=node.stream_ops[key];stream_ops[key]=function forceLoadLazyFile(){FS.forceLoadFile(node);return fn.apply(null,arguments)}});function writeChunks(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);if(contents.slice){for(var i=0;i{FS.forceLoadFile(node);return writeChunks(stream,buffer,offset,length,position)};stream_ops.mmap=(stream,length,position,prot,flags)=>{FS.forceLoadFile(node);var ptr=mmapAlloc(length);if(!ptr){throw new FS.ErrnoError(48)}writeChunks(stream,HEAP8,ptr,length,position);return{ptr:ptr,allocated:true}};node.stream_ops=stream_ops;return node},createPreloadedFile:(parent,name,url,canRead,canWrite,onload,onerror,dontCreateFile,canOwn,preFinish)=>{var fullname=name?PATH_FS.resolve(PATH.join2(parent,name)):parent;var dep=getUniqueRunDependency("cp "+fullname);function processData(byteArray){function finish(byteArray){if(preFinish)preFinish();if(!dontCreateFile){FS.createDataFile(parent,name,byteArray,canRead,canWrite,canOwn)}if(onload)onload();removeRunDependency(dep)}if(Browser.handledByPreloadPlugin(byteArray,fullname,finish,()=>{if(onerror)onerror();removeRunDependency(dep)})){return}finish(byteArray)}addRunDependency(dep);if(typeof url=="string"){asyncLoad(url,byteArray=>processData(byteArray),onerror)}else{processData(url)}},indexedDB:()=>{return window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB},DB_NAME:()=>{return"EM_FS_"+window.location.pathname},DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:(paths,onload,onerror)=>{onload=onload||(()=>{});onerror=onerror||(()=>{});var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=()=>{out("creating db");var db=openRequest.result;db.createObjectStore(FS.DB_STORE_NAME)};openRequest.onsuccess=()=>{var db=openRequest.result;var transaction=db.transaction([FS.DB_STORE_NAME],"readwrite");var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(path=>{var putRequest=files.put(FS.analyzePath(path).object.contents,path);putRequest.onsuccess=()=>{ok++;if(ok+fail==total)finish()};putRequest.onerror=()=>{fail++;if(ok+fail==total)finish()}});transaction.onerror=onerror};openRequest.onerror=onerror},loadFilesFromDB:(paths,onload,onerror)=>{onload=onload||(()=>{});onerror=onerror||(()=>{});var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=onerror;openRequest.onsuccess=()=>{var db=openRequest.result;try{var transaction=db.transaction([FS.DB_STORE_NAME],"readonly")}catch(e){onerror(e);return}var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(path=>{var getRequest=files.get(path);getRequest.onsuccess=()=>{if(FS.analyzePath(path).exists){FS.unlink(path)}FS.createDataFile(PATH.dirname(path),PATH.basename(path),getRequest.result,true,true,true);ok++;if(ok+fail==total)finish()};getRequest.onerror=()=>{fail++;if(ok+fail==total)finish()}});transaction.onerror=onerror};openRequest.onerror=onerror}};var SYSCALLS={DEFAULT_POLLMASK:5,calculateAt:function(dirfd,path,allowEmpty){if(PATH.isAbs(path)){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=FS.getStream(dirfd);if(!dirstream)throw new FS.ErrnoError(8);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return PATH.join2(dir,path)},doStat:function(func,path,buf){try{var stat=func(path)}catch(e){if(e&&e.node&&PATH.normalize(path)!==PATH.normalize(FS.getPath(e.node))){return-54}throw e}HEAP32[buf>>2]=stat.dev;HEAP32[buf+4>>2]=0;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAP32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;HEAP32[buf+32>>2]=0;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+40>>2]=tempI64[0],HEAP32[buf+44>>2]=tempI64[1];HEAP32[buf+48>>2]=4096;HEAP32[buf+52>>2]=stat.blocks;tempI64=[Math.floor(stat.atime.getTime()/1e3)>>>0,(tempDouble=Math.floor(stat.atime.getTime()/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+56>>2]=tempI64[0],HEAP32[buf+60>>2]=tempI64[1];HEAP32[buf+64>>2]=0;tempI64=[Math.floor(stat.mtime.getTime()/1e3)>>>0,(tempDouble=Math.floor(stat.mtime.getTime()/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+72>>2]=tempI64[0],HEAP32[buf+76>>2]=tempI64[1];HEAP32[buf+80>>2]=0;tempI64=[Math.floor(stat.ctime.getTime()/1e3)>>>0,(tempDouble=Math.floor(stat.ctime.getTime()/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+88>>2]=tempI64[0],HEAP32[buf+92>>2]=tempI64[1];HEAP32[buf+96>>2]=0;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+104>>2]=tempI64[0],HEAP32[buf+108>>2]=tempI64[1];return 0},doMsync:function(addr,stream,len,flags,offset){var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},getStreamFromFD:function(fd){var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);return stream}};function ___syscall_chdir(path){try{path=SYSCALLS.getStr(path);FS.chdir(path);return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_faccessat(dirfd,path,amode,flags){try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);if(amode&~7){return-28}var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node){return-44}var perms="";if(amode&4)perms+="r";if(amode&2)perms+="w";if(amode&1)perms+="x";if(perms&&FS.nodePermissions(node,perms)){return-2}return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function setErrNo(value){HEAP32[___errno_location()>>2]=value;return value}function ___syscall_fcntl64(fd,cmd,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(cmd){case 0:{var arg=SYSCALLS.get();if(arg<0){return-28}var newStream;newStream=FS.createStream(stream,arg);return newStream.fd}case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=SYSCALLS.get();stream.flags|=arg;return 0}case 5:{var arg=SYSCALLS.get();var offset=0;HEAP16[arg+offset>>1]=2;return 0}case 6:case 7:return 0;case 16:case 8:return-28;case 9:setErrNo(28);return-1;default:{return-28}}}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_getdents64(fd,dirp,count){try{var stream=SYSCALLS.getStreamFromFD(fd);if(!stream.getdents){stream.getdents=FS.readdir(stream.path)}var struct_size=280;var pos=0;var off=FS.llseek(stream,0,1);var idx=Math.floor(off/struct_size);while(idx>>0,(tempDouble=id,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[dirp+pos>>2]=tempI64[0],HEAP32[dirp+pos+4>>2]=tempI64[1];tempI64=[(idx+1)*struct_size>>>0,(tempDouble=(idx+1)*struct_size,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[dirp+pos+8>>2]=tempI64[0],HEAP32[dirp+pos+12>>2]=tempI64[1];HEAP16[dirp+pos+16>>1]=280;HEAP8[dirp+pos+18>>0]=type;stringToUTF8(name,dirp+pos+19,256);pos+=struct_size;idx+=1}FS.llseek(stream,idx*struct_size,0);return pos}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_ioctl(fd,op,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(op){case 21509:case 21505:{if(!stream.tty)return-59;return 0}case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:{if(!stream.tty)return-59;return 0}case 21519:{if(!stream.tty)return-59;var argp=SYSCALLS.get();HEAP32[argp>>2]=0;return 0}case 21520:{if(!stream.tty)return-59;return-28}case 21531:{var argp=SYSCALLS.get();return FS.ioctl(stream,op,argp)}case 21523:{if(!stream.tty)return-59;return 0}case 21524:{if(!stream.tty)return-59;return 0}default:abort("bad ioctl syscall "+op)}}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_lstat64(path,buf){try{path=SYSCALLS.getStr(path);return SYSCALLS.doStat(FS.lstat,path,buf)}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_mkdirat(dirfd,path,mode){try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);path=PATH.normalize(path);if(path[path.length-1]==="/")path=path.substr(0,path.length-1);FS.mkdir(path,mode,0);return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_newfstatat(dirfd,path,buf,flags){try{path=SYSCALLS.getStr(path);var nofollow=flags&256;var allowEmpty=flags&4096;flags=flags&~4352;path=SYSCALLS.calculateAt(dirfd,path,allowEmpty);return SYSCALLS.doStat(nofollow?FS.lstat:FS.stat,path,buf)}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_openat(dirfd,path,flags,varargs){SYSCALLS.varargs=varargs;try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);var mode=varargs?SYSCALLS.get():0;return FS.open(path,flags,mode).fd}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_rmdir(path){try{path=SYSCALLS.getStr(path);FS.rmdir(path);return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_stat64(path,buf){try{path=SYSCALLS.getStr(path);return SYSCALLS.doStat(FS.stat,path,buf)}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_unlinkat(dirfd,path,flags){try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);if(flags===0){FS.unlink(path)}else if(flags===512){FS.rmdir(path)}else{abort("Invalid flags passed to unlinkat")}return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function __emscripten_date_now(){return Date.now()}function readI53FromI64(ptr){return HEAPU32[ptr>>2]+HEAP32[ptr+4>>2]*4294967296}function __localtime_js(time,tmPtr){var date=new Date(readI53FromI64(time)*1e3);HEAP32[tmPtr>>2]=date.getSeconds();HEAP32[tmPtr+4>>2]=date.getMinutes();HEAP32[tmPtr+8>>2]=date.getHours();HEAP32[tmPtr+12>>2]=date.getDate();HEAP32[tmPtr+16>>2]=date.getMonth();HEAP32[tmPtr+20>>2]=date.getFullYear()-1900;HEAP32[tmPtr+24>>2]=date.getDay();var start=new Date(date.getFullYear(),0,1);var yday=(date.getTime()-start.getTime())/(1e3*60*60*24)|0;HEAP32[tmPtr+28>>2]=yday;HEAP32[tmPtr+36>>2]=-(date.getTimezoneOffset()*60);var summerOffset=new Date(date.getFullYear(),6,1).getTimezoneOffset();var winterOffset=start.getTimezoneOffset();var dst=(summerOffset!=winterOffset&&date.getTimezoneOffset()==Math.min(winterOffset,summerOffset))|0;HEAP32[tmPtr+32>>2]=dst}function allocateUTF8(str){var size=lengthBytesUTF8(str)+1;var ret=_malloc(size);if(ret)stringToUTF8Array(str,HEAP8,ret,size);return ret}function _tzset_impl(timezone,daylight,tzname){var currentYear=(new Date).getFullYear();var winter=new Date(currentYear,0,1);var summer=new Date(currentYear,6,1);var winterOffset=winter.getTimezoneOffset();var summerOffset=summer.getTimezoneOffset();var stdTimezoneOffset=Math.max(winterOffset,summerOffset);HEAP32[timezone>>2]=stdTimezoneOffset*60;HEAP32[daylight>>2]=Number(winterOffset!=summerOffset);function extractZone(date){var match=date.toTimeString().match(/\(([A-Za-z ]+)\)$/);return match?match[1]:"GMT"}var winterName=extractZone(winter);var summerName=extractZone(summer);var winterNamePtr=allocateUTF8(winterName);var summerNamePtr=allocateUTF8(summerName);if(summerOffset>2]=winterNamePtr;HEAPU32[tzname+4>>2]=summerNamePtr}else{HEAPU32[tzname>>2]=summerNamePtr;HEAPU32[tzname+4>>2]=winterNamePtr}}function __tzset_js(timezone,daylight,tzname){if(__tzset_js.called)return;__tzset_js.called=true;_tzset_impl(timezone,daylight,tzname)}function _abort(){abort("")}var readAsmConstArgsArray=[];function readAsmConstArgs(sigPtr,buf){readAsmConstArgsArray.length=0;var ch;buf>>=2;while(ch=HEAPU8[sigPtr++]){buf+=ch!=105&buf;readAsmConstArgsArray.push(ch==105?HEAP32[buf]:HEAPF64[buf++>>1]);++buf}return readAsmConstArgsArray}function _emscripten_asm_const_int(code,sigPtr,argbuf){var args=readAsmConstArgs(sigPtr,argbuf);return ASM_CONSTS[code].apply(null,args)}function _emscripten_memcpy_big(dest,src,num){HEAPU8.copyWithin(dest,src,src+num)}function getHeapMax(){return 2147483648}function emscripten_realloc_buffer(size){try{wasmMemory.grow(size-buffer.byteLength+65535>>>16);updateGlobalBufferAndViews(wasmMemory.buffer);return 1}catch(e){}}function _emscripten_resize_heap(requestedSize){var oldSize=HEAPU8.length;requestedSize=requestedSize>>>0;var maxHeapSize=getHeapMax();if(requestedSize>maxHeapSize){return false}let alignUp=(x,multiple)=>x+(multiple-x%multiple)%multiple;for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=emscripten_realloc_buffer(newSize);if(replacement){return true}}return false}var ENV={};function getExecutableName(){return thisProgram||"./this.program"}function getEnvStrings(){if(!getEnvStrings.strings){var lang=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8";var env={"USER":"web_user","LOGNAME":"web_user","PATH":"/","PWD":"/","HOME":"/home/web_user","LANG":lang,"_":getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(x+"="+env[x])}getEnvStrings.strings=strings}return getEnvStrings.strings}function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i>0]=str.charCodeAt(i)}if(!dontAddNull)HEAP8[buffer>>0]=0}function _environ_get(__environ,environ_buf){var bufSize=0;getEnvStrings().forEach(function(string,i){var ptr=environ_buf+bufSize;HEAPU32[__environ+i*4>>2]=ptr;writeAsciiToMemory(string,ptr);bufSize+=string.length+1});return 0}function _environ_sizes_get(penviron_count,penviron_buf_size){var strings=getEnvStrings();HEAPU32[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(function(string){bufSize+=string.length+1});HEAPU32[penviron_buf_size>>2]=bufSize;return 0}function _proc_exit(code){EXITSTATUS=code;if(!keepRuntimeAlive()){if(Module["onExit"])Module["onExit"](code);ABORT=true}quit_(code,new ExitStatus(code))}function exitJS(status,implicit){EXITSTATUS=status;_proc_exit(status)}var _exit=exitJS;function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _fd_fdstat_get(fd,pbuf){try{var stream=SYSCALLS.getStreamFromFD(fd);var type=stream.tty?2:FS.isDir(stream.mode)?3:FS.isLink(stream.mode)?7:4;HEAP8[pbuf>>0]=type;return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function doReadv(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function convertI32PairToI53Checked(lo,hi){return hi+2097152>>>0<4194305-!!lo?(lo>>>0)+hi*4294967296:NaN}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){try{var offset=convertI32PairToI53Checked(offset_low,offset_high);if(isNaN(offset))return 61;var stream=SYSCALLS.getStreamFromFD(fd);FS.llseek(stream,offset,whence);tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[newOffset>>2]=tempI64[0],HEAP32[newOffset+4>>2]=tempI64[1];if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function doWritev(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr}return ret}function _fd_write(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=doWritev(stream,iov,iovcnt);HEAPU32[pnum>>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function __isLeapYear(year){return year%4===0&&(year%100!==0||year%400===0)}function __arraySum(array,index){var sum=0;for(var i=0;i<=index;sum+=array[i++]){}return sum}var __MONTH_DAYS_LEAP=[31,29,31,30,31,30,31,31,30,31,30,31];var __MONTH_DAYS_REGULAR=[31,28,31,30,31,30,31,31,30,31,30,31];function __addDays(date,days){var newDate=new Date(date.getTime());while(days>0){var leap=__isLeapYear(newDate.getFullYear());var currentMonth=newDate.getMonth();var daysInCurrentMonth=(leap?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR)[currentMonth];if(days>daysInCurrentMonth-newDate.getDate()){days-=daysInCurrentMonth-newDate.getDate()+1;newDate.setDate(1);if(currentMonth<11){newDate.setMonth(currentMonth+1)}else{newDate.setMonth(0);newDate.setFullYear(newDate.getFullYear()+1)}}else{newDate.setDate(newDate.getDate()+days);return newDate}}return newDate}function _strftime(s,maxsize,format,tm){var tm_zone=HEAP32[tm+40>>2];var date={tm_sec:HEAP32[tm>>2],tm_min:HEAP32[tm+4>>2],tm_hour:HEAP32[tm+8>>2],tm_mday:HEAP32[tm+12>>2],tm_mon:HEAP32[tm+16>>2],tm_year:HEAP32[tm+20>>2],tm_wday:HEAP32[tm+24>>2],tm_yday:HEAP32[tm+28>>2],tm_isdst:HEAP32[tm+32>>2],tm_gmtoff:HEAP32[tm+36>>2],tm_zone:tm_zone?UTF8ToString(tm_zone):""};var pattern=UTF8ToString(format);var EXPANSION_RULES_1={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var rule in EXPANSION_RULES_1){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_1[rule])}var WEEKDAYS=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];var MONTHS=["January","February","March","April","May","June","July","August","September","October","November","December"];function leadingSomething(value,digits,character){var str=typeof value=="number"?value.toString():value||"";while(str.length0?1:0}var compare;if((compare=sgn(date1.getFullYear()-date2.getFullYear()))===0){if((compare=sgn(date1.getMonth()-date2.getMonth()))===0){compare=sgn(date1.getDate()-date2.getDate())}}return compare}function getFirstWeekStartDate(janFourth){switch(janFourth.getDay()){case 0:return new Date(janFourth.getFullYear()-1,11,29);case 1:return janFourth;case 2:return new Date(janFourth.getFullYear(),0,3);case 3:return new Date(janFourth.getFullYear(),0,2);case 4:return new Date(janFourth.getFullYear(),0,1);case 5:return new Date(janFourth.getFullYear()-1,11,31);case 6:return new Date(janFourth.getFullYear()-1,11,30)}}function getWeekBasedYear(date){var thisDate=__addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);var janFourthThisYear=new Date(thisDate.getFullYear(),0,4);var janFourthNextYear=new Date(thisDate.getFullYear()+1,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);if(compareByDay(firstWeekStartThisYear,thisDate)<=0){if(compareByDay(firstWeekStartNextYear,thisDate)<=0){return thisDate.getFullYear()+1}return thisDate.getFullYear()}return thisDate.getFullYear()-1}var EXPANSION_RULES_2={"%a":function(date){return WEEKDAYS[date.tm_wday].substring(0,3)},"%A":function(date){return WEEKDAYS[date.tm_wday]},"%b":function(date){return MONTHS[date.tm_mon].substring(0,3)},"%B":function(date){return MONTHS[date.tm_mon]},"%C":function(date){var year=date.tm_year+1900;return leadingNulls(year/100|0,2)},"%d":function(date){return leadingNulls(date.tm_mday,2)},"%e":function(date){return leadingSomething(date.tm_mday,2," ")},"%g":function(date){return getWeekBasedYear(date).toString().substring(2)},"%G":function(date){return getWeekBasedYear(date)},"%H":function(date){return leadingNulls(date.tm_hour,2)},"%I":function(date){var twelveHour=date.tm_hour;if(twelveHour==0)twelveHour=12;else if(twelveHour>12)twelveHour-=12;return leadingNulls(twelveHour,2)},"%j":function(date){return leadingNulls(date.tm_mday+__arraySum(__isLeapYear(date.tm_year+1900)?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,date.tm_mon-1),3)},"%m":function(date){return leadingNulls(date.tm_mon+1,2)},"%M":function(date){return leadingNulls(date.tm_min,2)},"%n":function(){return"\n"},"%p":function(date){if(date.tm_hour>=0&&date.tm_hour<12){return"AM"}return"PM"},"%S":function(date){return leadingNulls(date.tm_sec,2)},"%t":function(){return"\t"},"%u":function(date){return date.tm_wday||7},"%U":function(date){var days=date.tm_yday+7-date.tm_wday;return leadingNulls(Math.floor(days/7),2)},"%V":function(date){var val=Math.floor((date.tm_yday+7-(date.tm_wday+6)%7)/7);if((date.tm_wday+371-date.tm_yday-2)%7<=2){val++}if(!val){val=52;var dec31=(date.tm_wday+7-date.tm_yday-1)%7;if(dec31==4||dec31==5&&__isLeapYear(date.tm_year%400-1)){val++}}else if(val==53){var jan1=(date.tm_wday+371-date.tm_yday)%7;if(jan1!=4&&(jan1!=3||!__isLeapYear(date.tm_year)))val=1}return leadingNulls(val,2)},"%w":function(date){return date.tm_wday},"%W":function(date){var days=date.tm_yday+7-(date.tm_wday+6)%7;return leadingNulls(Math.floor(days/7),2)},"%y":function(date){return(date.tm_year+1900).toString().substring(2)},"%Y":function(date){return date.tm_year+1900},"%z":function(date){var off=date.tm_gmtoff;var ahead=off>=0;off=Math.abs(off)/60;off=off/60*100+off%60;return(ahead?"+":"-")+String("0000"+off).slice(-4)},"%Z":function(date){return date.tm_zone},"%%":function(){return"%"}};pattern=pattern.replace(/%%/g,"\0\0");for(var rule in EXPANSION_RULES_2){if(pattern.includes(rule)){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_2[rule](date))}}pattern=pattern.replace(/\0\0/g,"%");var bytes=intArrayFromString(pattern,false);if(bytes.length>maxsize){return 0}writeArrayToMemory(bytes,s);return bytes.length-1}function _strftime_l(s,maxsize,format,tm){return _strftime(s,maxsize,format,tm)}function allocateUTF8OnStack(str){var size=lengthBytesUTF8(str)+1;var ret=stackAlloc(size);stringToUTF8Array(str,HEAP8,ret,size);return ret}function getCFunc(ident){var func=Module["_"+ident];return func}function ccall(ident,returnType,argTypes,args,opts){var toC={"string":str=>{var ret=0;if(str!==null&&str!==undefined&&str!==0){var len=(str.length<<2)+1;ret=stackAlloc(len);stringToUTF8(str,ret,len)}return ret},"array":arr=>{var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}};function convertReturnValue(ret){if(returnType==="string"){return UTF8ToString(ret)}if(returnType==="boolean")return Boolean(ret);return ret}var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;itype==="number");var numericRet=returnType!=="string";if(numericRet&&numericArgs&&!opts){return getCFunc(ident)}return function(){return ccall(ident,returnType,argTypes,arguments,opts)}}var FSNode=function(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.mounted=null;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.node_ops={};this.stream_ops={};this.rdev=rdev};var readMode=292|73;var writeMode=146;Object.defineProperties(FSNode.prototype,{read:{get:function(){return(this.mode&readMode)===readMode},set:function(val){val?this.mode|=readMode:this.mode&=~readMode}},write:{get:function(){return(this.mode&writeMode)===writeMode},set:function(val){val?this.mode|=writeMode:this.mode&=~writeMode}},isFolder:{get:function(){return FS.isDir(this.mode)}},isDevice:{get:function(){return FS.isChrdev(this.mode)}}});FS.FSNode=FSNode;FS.staticInit();if(ENVIRONMENT_IS_NODE){requireNodeFS();NODEFS.staticInit()}ERRNO_CODES={"EPERM":63,"ENOENT":44,"ESRCH":71,"EINTR":27,"EIO":29,"ENXIO":60,"E2BIG":1,"ENOEXEC":45,"EBADF":8,"ECHILD":12,"EAGAIN":6,"EWOULDBLOCK":6,"ENOMEM":48,"EACCES":2,"EFAULT":21,"ENOTBLK":105,"EBUSY":10,"EEXIST":20,"EXDEV":75,"ENODEV":43,"ENOTDIR":54,"EISDIR":31,"EINVAL":28,"ENFILE":41,"EMFILE":33,"ENOTTY":59,"ETXTBSY":74,"EFBIG":22,"ENOSPC":51,"ESPIPE":70,"EROFS":69,"EMLINK":34,"EPIPE":64,"EDOM":18,"ERANGE":68,"ENOMSG":49,"EIDRM":24,"ECHRNG":106,"EL2NSYNC":156,"EL3HLT":107,"EL3RST":108,"ELNRNG":109,"EUNATCH":110,"ENOCSI":111,"EL2HLT":112,"EDEADLK":16,"ENOLCK":46,"EBADE":113,"EBADR":114,"EXFULL":115,"ENOANO":104,"EBADRQC":103,"EBADSLT":102,"EDEADLOCK":16,"EBFONT":101,"ENOSTR":100,"ENODATA":116,"ETIME":117,"ENOSR":118,"ENONET":119,"ENOPKG":120,"EREMOTE":121,"ENOLINK":47,"EADV":122,"ESRMNT":123,"ECOMM":124,"EPROTO":65,"EMULTIHOP":36,"EDOTDOT":125,"EBADMSG":9,"ENOTUNIQ":126,"EBADFD":127,"EREMCHG":128,"ELIBACC":129,"ELIBBAD":130,"ELIBSCN":131,"ELIBMAX":132,"ELIBEXEC":133,"ENOSYS":52,"ENOTEMPTY":55,"ENAMETOOLONG":37,"ELOOP":32,"EOPNOTSUPP":138,"EPFNOSUPPORT":139,"ECONNRESET":15,"ENOBUFS":42,"EAFNOSUPPORT":5,"EPROTOTYPE":67,"ENOTSOCK":57,"ENOPROTOOPT":50,"ESHUTDOWN":140,"ECONNREFUSED":14,"EADDRINUSE":3,"ECONNABORTED":13,"ENETUNREACH":40,"ENETDOWN":38,"ETIMEDOUT":73,"EHOSTDOWN":142,"EHOSTUNREACH":23,"EINPROGRESS":26,"EALREADY":7,"EDESTADDRREQ":17,"EMSGSIZE":35,"EPROTONOSUPPORT":66,"ESOCKTNOSUPPORT":137,"EADDRNOTAVAIL":4,"ENETRESET":39,"EISCONN":30,"ENOTCONN":53,"ETOOMANYREFS":141,"EUSERS":136,"EDQUOT":19,"ESTALE":72,"ENOTSUP":138,"ENOMEDIUM":148,"EILSEQ":25,"EOVERFLOW":61,"ECANCELED":11,"ENOTRECOVERABLE":56,"EOWNERDEAD":62,"ESTRPIPE":135};var asmLibraryArg={"D":__ZN3abc12Abc_RealMainEiPPc,"r":__ZN5Yosys6FfData10arst_to_srEv,"i":__ZN5Yosys6FfData10unmap_srstEv,"s":__ZN5Yosys6FfData11aload_to_srEv,"k":__ZN5Yosys6FfData12add_dummy_ceEv,"z":__ZN5Yosys6FfData12add_dummy_srEv,"m":__ZN5Yosys6FfData13add_dummy_clkEv,"B":__ZN5Yosys6FfData13arst_to_aloadEv,"y":__ZN5Yosys6FfData13flip_rst_bitsERKNS_7hashlib4poolIiNS1_8hash_opsIiEEEE,"p":__ZN5Yosys6FfData14add_dummy_arstEv,"q":__ZN5Yosys6FfData14add_dummy_srstEv,"o":__ZN5Yosys6FfData15add_dummy_aloadEv,"A":__ZN5Yosys6FfData20convert_ce_over_srstEb,"d":__ZN5Yosys6FfData4emitEv,"j":__ZN5Yosys6FfData5sliceERKNSt3__26vectorIiNS1_9allocatorIiEEEE,"h":__ZN5Yosys6FfData6removeEv,"f":__ZN5Yosys6FfData8unmap_ceEv,"C":__ZN5Yosys6FfData9flip_bitsERKNS_7hashlib4poolIiNS1_8hash_opsIiEEEE,"e":__ZN5Yosys6FfDataC1EPNS_10FfInitValsEPNS_5RTLIL4CellE,"c":___assert_fail,"K":___call_sighandler,"b":___cxa_allocate_exception,"a":___cxa_throw,"X":___syscall_chdir,"Y":___syscall_faccessat,"v":___syscall_fcntl64,"J":___syscall_getdents64,"T":___syscall_ioctl,"M":___syscall_lstat64,"L":___syscall_mkdirat,"N":___syscall_newfstatat,"w":___syscall_openat,"t":___syscall_rmdir,"O":___syscall_stat64,"I":___syscall_unlinkat,"x":__emscripten_date_now,"U":__localtime_js,"V":__tzset_js,"g":_abort,"Z":_emscripten_asm_const_int,"W":_emscripten_memcpy_big,"H":_emscripten_resize_heap,"Q":_environ_get,"R":_environ_sizes_get,"l":_exit,"n":_fd_close,"P":_fd_fdstat_get,"S":_fd_read,"F":_fd_seek,"u":_fd_write,"E":_strftime,"G":_strftime_l};var asm=createWasm();var ___wasm_call_ctors=Module["___wasm_call_ctors"]=function(){return(___wasm_call_ctors=Module["___wasm_call_ctors"]=Module["asm"]["$"]).apply(null,arguments)};var _main=Module["_main"]=function(){return(_main=Module["_main"]=Module["asm"]["aa"]).apply(null,arguments)};var _run=Module["_run"]=function(){return(_run=Module["_run"]=Module["asm"]["ba"]).apply(null,arguments)};var _errmsg=Module["_errmsg"]=function(){return(_errmsg=Module["_errmsg"]=Module["asm"]["ca"]).apply(null,arguments)};var _prompt=Module["_prompt"]=function(){return(_prompt=Module["_prompt"]=Module["asm"]["da"]).apply(null,arguments)};var ___errno_location=Module["___errno_location"]=function(){return(___errno_location=Module["___errno_location"]=Module["asm"]["fa"]).apply(null,arguments)};var _memset=Module["_memset"]=function(){return(_memset=Module["_memset"]=Module["asm"]["ga"]).apply(null,arguments)};var _malloc=Module["_malloc"]=function(){return(_malloc=Module["_malloc"]=Module["asm"]["ha"]).apply(null,arguments)};var stackSave=Module["stackSave"]=function(){return(stackSave=Module["stackSave"]=Module["asm"]["ia"]).apply(null,arguments)};var stackRestore=Module["stackRestore"]=function(){return(stackRestore=Module["stackRestore"]=Module["asm"]["ja"]).apply(null,arguments)};var stackAlloc=Module["stackAlloc"]=function(){return(stackAlloc=Module["stackAlloc"]=Module["asm"]["ka"]).apply(null,arguments)};var ___cxa_is_pointer_type=Module["___cxa_is_pointer_type"]=function(){return(___cxa_is_pointer_type=Module["___cxa_is_pointer_type"]=Module["asm"]["la"]).apply(null,arguments)};Module["ccall"]=ccall;Module["cwrap"]=cwrap;Module["FS"]=FS;Module["TTY"]=TTY;Module["TTY"]=TTY;Module["TTY"]=TTY;Module["TTY"]=TTY;Module["TTY"]=TTY;Module["TTY"]=TTY;Module["TTY"]=TTY;Module["TTY"]=TTY;Module["NODEFS"]=NODEFS;var calledRun;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function callMain(args){var entryFunction=Module["_main"];args=args||[];args.unshift(thisProgram);var argc=args.length;var argv=stackAlloc((argc+1)*4);var argv_ptr=argv>>2;args.forEach(arg=>{HEAP32[argv_ptr++]=allocateUTF8OnStack(arg)});HEAP32[argv_ptr]=0;try{var ret=entryFunction(argc,argv);exitJS(ret,true);return ret}catch(e){return handleException(e)}}function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();preMain();readyPromiseResolve(Module);if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();if(shouldRunNow)callMain(args);postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}var shouldRunNow=true;if(Module["noInitialRun"])shouldRunNow=false;run(); + + + return Module.ready +} +); +})(); +if (typeof exports === 'object' && typeof module === 'object') + module.exports = Module; +else if (typeof define === 'function' && define['amd']) + define([], function() { return Module; }); +else if (typeof exports === 'object') + exports["Module"] = Module; diff --git a/resources/netlist/netlist_view.js b/resources/netlist/netlist_view.js new file mode 100644 index 0000000..81012b9 --- /dev/null +++ b/resources/netlist/netlist_view.js @@ -0,0 +1,36724 @@ +(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.netlistsvg = f()}})(function(){var define,module,exports;return (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i 0) { + throw new Error('Invalid string. Length must be a multiple of 4') + } + + // Trim off extra bytes after placeholder bytes are found + // See: https://github.com/beatgammit/base64-js/issues/42 + var validLen = b64.indexOf('=') + if (validLen === -1) validLen = len + + var placeHoldersLen = validLen === len + ? 0 + : 4 - (validLen % 4) + + return [validLen, placeHoldersLen] +} + +// base64 is 4/3 + up to two characters of the original data +function byteLength (b64) { + var lens = getLens(b64) + var validLen = lens[0] + var placeHoldersLen = lens[1] + return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen +} + +function _byteLength (b64, validLen, placeHoldersLen) { + return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen +} + +function toByteArray (b64) { + var tmp + var lens = getLens(b64) + var validLen = lens[0] + var placeHoldersLen = lens[1] + + var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen)) + + var curByte = 0 + + // if there are placeholders, only get up to the last complete 4 chars + var len = placeHoldersLen > 0 + ? validLen - 4 + : validLen + + var i + for (i = 0; i < len; i += 4) { + tmp = + (revLookup[b64.charCodeAt(i)] << 18) | + (revLookup[b64.charCodeAt(i + 1)] << 12) | + (revLookup[b64.charCodeAt(i + 2)] << 6) | + revLookup[b64.charCodeAt(i + 3)] + arr[curByte++] = (tmp >> 16) & 0xFF + arr[curByte++] = (tmp >> 8) & 0xFF + arr[curByte++] = tmp & 0xFF + } + + if (placeHoldersLen === 2) { + tmp = + (revLookup[b64.charCodeAt(i)] << 2) | + (revLookup[b64.charCodeAt(i + 1)] >> 4) + arr[curByte++] = tmp & 0xFF + } + + if (placeHoldersLen === 1) { + tmp = + (revLookup[b64.charCodeAt(i)] << 10) | + (revLookup[b64.charCodeAt(i + 1)] << 4) | + (revLookup[b64.charCodeAt(i + 2)] >> 2) + arr[curByte++] = (tmp >> 8) & 0xFF + arr[curByte++] = tmp & 0xFF + } + + return arr +} + +function tripletToBase64 (num) { + return lookup[num >> 18 & 0x3F] + + lookup[num >> 12 & 0x3F] + + lookup[num >> 6 & 0x3F] + + lookup[num & 0x3F] +} + +function encodeChunk (uint8, start, end) { + var tmp + var output = [] + for (var i = start; i < end; i += 3) { + tmp = + ((uint8[i] << 16) & 0xFF0000) + + ((uint8[i + 1] << 8) & 0xFF00) + + (uint8[i + 2] & 0xFF) + output.push(tripletToBase64(tmp)) + } + return output.join('') +} + +function fromByteArray (uint8) { + var tmp + var len = uint8.length + var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes + var parts = [] + var maxChunkLength = 16383 // must be multiple of 3 + + // go through the array every three bytes, we'll deal with trailing stuff later + for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) { + parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength))) + } + + // pad the end with zeros, but make sure to not forget the extra bytes + if (extraBytes === 1) { + tmp = uint8[len - 1] + parts.push( + lookup[tmp >> 2] + + lookup[(tmp << 4) & 0x3F] + + '==' + ) + } else if (extraBytes === 2) { + tmp = (uint8[len - 2] << 8) + uint8[len - 1] + parts.push( + lookup[tmp >> 10] + + lookup[(tmp >> 4) & 0x3F] + + lookup[(tmp << 2) & 0x3F] + + '=' + ) + } + + return parts.join('') +} + +},{}],2:[function(require,module,exports){ + +},{}],3:[function(require,module,exports){ +(function (Buffer){(function (){ +/*! + * The buffer module from node.js, for the browser. + * + * @author Feross Aboukhadijeh + * @license MIT + */ +/* eslint-disable no-proto */ + +'use strict' + +var base64 = require('base64-js') +var ieee754 = require('ieee754') + +exports.Buffer = Buffer +exports.SlowBuffer = SlowBuffer +exports.INSPECT_MAX_BYTES = 50 + +var K_MAX_LENGTH = 0x7fffffff +exports.kMaxLength = K_MAX_LENGTH + +/** + * If `Buffer.TYPED_ARRAY_SUPPORT`: + * === true Use Uint8Array implementation (fastest) + * === false Print warning and recommend using `buffer` v4.x which has an Object + * implementation (most compatible, even IE6) + * + * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+, + * Opera 11.6+, iOS 4.2+. + * + * We report that the browser does not support typed arrays if the are not subclassable + * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array` + * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support + * for __proto__ and has a buggy typed array implementation. + */ +Buffer.TYPED_ARRAY_SUPPORT = typedArraySupport() + +if (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' && + typeof console.error === 'function') { + console.error( + 'This browser lacks typed array (Uint8Array) support which is required by ' + + '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.' + ) +} + +function typedArraySupport () { + // Can typed array instances can be augmented? + try { + var arr = new Uint8Array(1) + arr.__proto__ = { __proto__: Uint8Array.prototype, foo: function () { return 42 } } + return arr.foo() === 42 + } catch (e) { + return false + } +} + +Object.defineProperty(Buffer.prototype, 'parent', { + enumerable: true, + get: function () { + if (!Buffer.isBuffer(this)) return undefined + return this.buffer + } +}) + +Object.defineProperty(Buffer.prototype, 'offset', { + enumerable: true, + get: function () { + if (!Buffer.isBuffer(this)) return undefined + return this.byteOffset + } +}) + +function createBuffer (length) { + if (length > K_MAX_LENGTH) { + throw new RangeError('The value "' + length + '" is invalid for option "size"') + } + // Return an augmented `Uint8Array` instance + var buf = new Uint8Array(length) + buf.__proto__ = Buffer.prototype + return buf +} + +/** + * The Buffer constructor returns instances of `Uint8Array` that have their + * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of + * `Uint8Array`, so the returned instances will have all the node `Buffer` methods + * and the `Uint8Array` methods. Square bracket notation works as expected -- it + * returns a single octet. + * + * The `Uint8Array` prototype remains unmodified. + */ + +function Buffer (arg, encodingOrOffset, length) { + // Common case. + if (typeof arg === 'number') { + if (typeof encodingOrOffset === 'string') { + throw new TypeError( + 'The "string" argument must be of type string. Received type number' + ) + } + return allocUnsafe(arg) + } + return from(arg, encodingOrOffset, length) +} + +// Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97 +if (typeof Symbol !== 'undefined' && Symbol.species != null && + Buffer[Symbol.species] === Buffer) { + Object.defineProperty(Buffer, Symbol.species, { + value: null, + configurable: true, + enumerable: false, + writable: false + }) +} + +Buffer.poolSize = 8192 // not used by this implementation + +function from (value, encodingOrOffset, length) { + if (typeof value === 'string') { + return fromString(value, encodingOrOffset) + } + + if (ArrayBuffer.isView(value)) { + return fromArrayLike(value) + } + + if (value == null) { + throw TypeError( + 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' + + 'or Array-like Object. Received type ' + (typeof value) + ) + } + + if (isInstance(value, ArrayBuffer) || + (value && isInstance(value.buffer, ArrayBuffer))) { + return fromArrayBuffer(value, encodingOrOffset, length) + } + + if (typeof value === 'number') { + throw new TypeError( + 'The "value" argument must not be of type number. Received type number' + ) + } + + var valueOf = value.valueOf && value.valueOf() + if (valueOf != null && valueOf !== value) { + return Buffer.from(valueOf, encodingOrOffset, length) + } + + var b = fromObject(value) + if (b) return b + + if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null && + typeof value[Symbol.toPrimitive] === 'function') { + return Buffer.from( + value[Symbol.toPrimitive]('string'), encodingOrOffset, length + ) + } + + throw new TypeError( + 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' + + 'or Array-like Object. Received type ' + (typeof value) + ) +} + +/** + * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError + * if value is a number. + * Buffer.from(str[, encoding]) + * Buffer.from(array) + * Buffer.from(buffer) + * Buffer.from(arrayBuffer[, byteOffset[, length]]) + **/ +Buffer.from = function (value, encodingOrOffset, length) { + return from(value, encodingOrOffset, length) +} + +// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug: +// https://github.com/feross/buffer/pull/148 +Buffer.prototype.__proto__ = Uint8Array.prototype +Buffer.__proto__ = Uint8Array + +function assertSize (size) { + if (typeof size !== 'number') { + throw new TypeError('"size" argument must be of type number') + } else if (size < 0) { + throw new RangeError('The value "' + size + '" is invalid for option "size"') + } +} + +function alloc (size, fill, encoding) { + assertSize(size) + if (size <= 0) { + return createBuffer(size) + } + if (fill !== undefined) { + // Only pay attention to encoding if it's a string. This + // prevents accidentally sending in a number that would + // be interpretted as a start offset. + return typeof encoding === 'string' + ? createBuffer(size).fill(fill, encoding) + : createBuffer(size).fill(fill) + } + return createBuffer(size) +} + +/** + * Creates a new filled Buffer instance. + * alloc(size[, fill[, encoding]]) + **/ +Buffer.alloc = function (size, fill, encoding) { + return alloc(size, fill, encoding) +} + +function allocUnsafe (size) { + assertSize(size) + return createBuffer(size < 0 ? 0 : checked(size) | 0) +} + +/** + * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance. + * */ +Buffer.allocUnsafe = function (size) { + return allocUnsafe(size) +} +/** + * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance. + */ +Buffer.allocUnsafeSlow = function (size) { + return allocUnsafe(size) +} + +function fromString (string, encoding) { + if (typeof encoding !== 'string' || encoding === '') { + encoding = 'utf8' + } + + if (!Buffer.isEncoding(encoding)) { + throw new TypeError('Unknown encoding: ' + encoding) + } + + var length = byteLength(string, encoding) | 0 + var buf = createBuffer(length) + + var actual = buf.write(string, encoding) + + if (actual !== length) { + // Writing a hex string, for example, that contains invalid characters will + // cause everything after the first invalid character to be ignored. (e.g. + // 'abxxcd' will be treated as 'ab') + buf = buf.slice(0, actual) + } + + return buf +} + +function fromArrayLike (array) { + var length = array.length < 0 ? 0 : checked(array.length) | 0 + var buf = createBuffer(length) + for (var i = 0; i < length; i += 1) { + buf[i] = array[i] & 255 + } + return buf +} + +function fromArrayBuffer (array, byteOffset, length) { + if (byteOffset < 0 || array.byteLength < byteOffset) { + throw new RangeError('"offset" is outside of buffer bounds') + } + + if (array.byteLength < byteOffset + (length || 0)) { + throw new RangeError('"length" is outside of buffer bounds') + } + + var buf + if (byteOffset === undefined && length === undefined) { + buf = new Uint8Array(array) + } else if (length === undefined) { + buf = new Uint8Array(array, byteOffset) + } else { + buf = new Uint8Array(array, byteOffset, length) + } + + // Return an augmented `Uint8Array` instance + buf.__proto__ = Buffer.prototype + return buf +} + +function fromObject (obj) { + if (Buffer.isBuffer(obj)) { + var len = checked(obj.length) | 0 + var buf = createBuffer(len) + + if (buf.length === 0) { + return buf + } + + obj.copy(buf, 0, 0, len) + return buf + } + + if (obj.length !== undefined) { + if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) { + return createBuffer(0) + } + return fromArrayLike(obj) + } + + if (obj.type === 'Buffer' && Array.isArray(obj.data)) { + return fromArrayLike(obj.data) + } +} + +function checked (length) { + // Note: cannot use `length < K_MAX_LENGTH` here because that fails when + // length is NaN (which is otherwise coerced to zero.) + if (length >= K_MAX_LENGTH) { + throw new RangeError('Attempt to allocate Buffer larger than maximum ' + + 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes') + } + return length | 0 +} + +function SlowBuffer (length) { + if (+length != length) { // eslint-disable-line eqeqeq + length = 0 + } + return Buffer.alloc(+length) +} + +Buffer.isBuffer = function isBuffer (b) { + return b != null && b._isBuffer === true && + b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false +} + +Buffer.compare = function compare (a, b) { + if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength) + if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength) + if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) { + throw new TypeError( + 'The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array' + ) + } + + if (a === b) return 0 + + var x = a.length + var y = b.length + + for (var i = 0, len = Math.min(x, y); i < len; ++i) { + if (a[i] !== b[i]) { + x = a[i] + y = b[i] + break + } + } + + if (x < y) return -1 + if (y < x) return 1 + return 0 +} + +Buffer.isEncoding = function isEncoding (encoding) { + switch (String(encoding).toLowerCase()) { + case 'hex': + case 'utf8': + case 'utf-8': + case 'ascii': + case 'latin1': + case 'binary': + case 'base64': + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return true + default: + return false + } +} + +Buffer.concat = function concat (list, length) { + if (!Array.isArray(list)) { + throw new TypeError('"list" argument must be an Array of Buffers') + } + + if (list.length === 0) { + return Buffer.alloc(0) + } + + var i + if (length === undefined) { + length = 0 + for (i = 0; i < list.length; ++i) { + length += list[i].length + } + } + + var buffer = Buffer.allocUnsafe(length) + var pos = 0 + for (i = 0; i < list.length; ++i) { + var buf = list[i] + if (isInstance(buf, Uint8Array)) { + buf = Buffer.from(buf) + } + if (!Buffer.isBuffer(buf)) { + throw new TypeError('"list" argument must be an Array of Buffers') + } + buf.copy(buffer, pos) + pos += buf.length + } + return buffer +} + +function byteLength (string, encoding) { + if (Buffer.isBuffer(string)) { + return string.length + } + if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) { + return string.byteLength + } + if (typeof string !== 'string') { + throw new TypeError( + 'The "string" argument must be one of type string, Buffer, or ArrayBuffer. ' + + 'Received type ' + typeof string + ) + } + + var len = string.length + var mustMatch = (arguments.length > 2 && arguments[2] === true) + if (!mustMatch && len === 0) return 0 + + // Use a for loop to avoid recursion + var loweredCase = false + for (;;) { + switch (encoding) { + case 'ascii': + case 'latin1': + case 'binary': + return len + case 'utf8': + case 'utf-8': + return utf8ToBytes(string).length + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return len * 2 + case 'hex': + return len >>> 1 + case 'base64': + return base64ToBytes(string).length + default: + if (loweredCase) { + return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8 + } + encoding = ('' + encoding).toLowerCase() + loweredCase = true + } + } +} +Buffer.byteLength = byteLength + +function slowToString (encoding, start, end) { + var loweredCase = false + + // No need to verify that "this.length <= MAX_UINT32" since it's a read-only + // property of a typed array. + + // This behaves neither like String nor Uint8Array in that we set start/end + // to their upper/lower bounds if the value passed is out of range. + // undefined is handled specially as per ECMA-262 6th Edition, + // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization. + if (start === undefined || start < 0) { + start = 0 + } + // Return early if start > this.length. Done here to prevent potential uint32 + // coercion fail below. + if (start > this.length) { + return '' + } + + if (end === undefined || end > this.length) { + end = this.length + } + + if (end <= 0) { + return '' + } + + // Force coersion to uint32. This will also coerce falsey/NaN values to 0. + end >>>= 0 + start >>>= 0 + + if (end <= start) { + return '' + } + + if (!encoding) encoding = 'utf8' + + while (true) { + switch (encoding) { + case 'hex': + return hexSlice(this, start, end) + + case 'utf8': + case 'utf-8': + return utf8Slice(this, start, end) + + case 'ascii': + return asciiSlice(this, start, end) + + case 'latin1': + case 'binary': + return latin1Slice(this, start, end) + + case 'base64': + return base64Slice(this, start, end) + + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return utf16leSlice(this, start, end) + + default: + if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding) + encoding = (encoding + '').toLowerCase() + loweredCase = true + } + } +} + +// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package) +// to detect a Buffer instance. It's not possible to use `instanceof Buffer` +// reliably in a browserify context because there could be multiple different +// copies of the 'buffer' package in use. This method works even for Buffer +// instances that were created from another copy of the `buffer` package. +// See: https://github.com/feross/buffer/issues/154 +Buffer.prototype._isBuffer = true + +function swap (b, n, m) { + var i = b[n] + b[n] = b[m] + b[m] = i +} + +Buffer.prototype.swap16 = function swap16 () { + var len = this.length + if (len % 2 !== 0) { + throw new RangeError('Buffer size must be a multiple of 16-bits') + } + for (var i = 0; i < len; i += 2) { + swap(this, i, i + 1) + } + return this +} + +Buffer.prototype.swap32 = function swap32 () { + var len = this.length + if (len % 4 !== 0) { + throw new RangeError('Buffer size must be a multiple of 32-bits') + } + for (var i = 0; i < len; i += 4) { + swap(this, i, i + 3) + swap(this, i + 1, i + 2) + } + return this +} + +Buffer.prototype.swap64 = function swap64 () { + var len = this.length + if (len % 8 !== 0) { + throw new RangeError('Buffer size must be a multiple of 64-bits') + } + for (var i = 0; i < len; i += 8) { + swap(this, i, i + 7) + swap(this, i + 1, i + 6) + swap(this, i + 2, i + 5) + swap(this, i + 3, i + 4) + } + return this +} + +Buffer.prototype.toString = function toString () { + var length = this.length + if (length === 0) return '' + if (arguments.length === 0) return utf8Slice(this, 0, length) + return slowToString.apply(this, arguments) +} + +Buffer.prototype.toLocaleString = Buffer.prototype.toString + +Buffer.prototype.equals = function equals (b) { + if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer') + if (this === b) return true + return Buffer.compare(this, b) === 0 +} + +Buffer.prototype.inspect = function inspect () { + var str = '' + var max = exports.INSPECT_MAX_BYTES + str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim() + if (this.length > max) str += ' ... ' + return '' +} + +Buffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) { + if (isInstance(target, Uint8Array)) { + target = Buffer.from(target, target.offset, target.byteLength) + } + if (!Buffer.isBuffer(target)) { + throw new TypeError( + 'The "target" argument must be one of type Buffer or Uint8Array. ' + + 'Received type ' + (typeof target) + ) + } + + if (start === undefined) { + start = 0 + } + if (end === undefined) { + end = target ? target.length : 0 + } + if (thisStart === undefined) { + thisStart = 0 + } + if (thisEnd === undefined) { + thisEnd = this.length + } + + if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) { + throw new RangeError('out of range index') + } + + if (thisStart >= thisEnd && start >= end) { + return 0 + } + if (thisStart >= thisEnd) { + return -1 + } + if (start >= end) { + return 1 + } + + start >>>= 0 + end >>>= 0 + thisStart >>>= 0 + thisEnd >>>= 0 + + if (this === target) return 0 + + var x = thisEnd - thisStart + var y = end - start + var len = Math.min(x, y) + + var thisCopy = this.slice(thisStart, thisEnd) + var targetCopy = target.slice(start, end) + + for (var i = 0; i < len; ++i) { + if (thisCopy[i] !== targetCopy[i]) { + x = thisCopy[i] + y = targetCopy[i] + break + } + } + + if (x < y) return -1 + if (y < x) return 1 + return 0 +} + +// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`, +// OR the last index of `val` in `buffer` at offset <= `byteOffset`. +// +// Arguments: +// - buffer - a Buffer to search +// - val - a string, Buffer, or number +// - byteOffset - an index into `buffer`; will be clamped to an int32 +// - encoding - an optional encoding, relevant is val is a string +// - dir - true for indexOf, false for lastIndexOf +function bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) { + // Empty buffer means no match + if (buffer.length === 0) return -1 + + // Normalize byteOffset + if (typeof byteOffset === 'string') { + encoding = byteOffset + byteOffset = 0 + } else if (byteOffset > 0x7fffffff) { + byteOffset = 0x7fffffff + } else if (byteOffset < -0x80000000) { + byteOffset = -0x80000000 + } + byteOffset = +byteOffset // Coerce to Number. + if (numberIsNaN(byteOffset)) { + // byteOffset: it it's undefined, null, NaN, "foo", etc, search whole buffer + byteOffset = dir ? 0 : (buffer.length - 1) + } + + // Normalize byteOffset: negative offsets start from the end of the buffer + if (byteOffset < 0) byteOffset = buffer.length + byteOffset + if (byteOffset >= buffer.length) { + if (dir) return -1 + else byteOffset = buffer.length - 1 + } else if (byteOffset < 0) { + if (dir) byteOffset = 0 + else return -1 + } + + // Normalize val + if (typeof val === 'string') { + val = Buffer.from(val, encoding) + } + + // Finally, search either indexOf (if dir is true) or lastIndexOf + if (Buffer.isBuffer(val)) { + // Special case: looking for empty string/buffer always fails + if (val.length === 0) { + return -1 + } + return arrayIndexOf(buffer, val, byteOffset, encoding, dir) + } else if (typeof val === 'number') { + val = val & 0xFF // Search for a byte value [0-255] + if (typeof Uint8Array.prototype.indexOf === 'function') { + if (dir) { + return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset) + } else { + return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset) + } + } + return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir) + } + + throw new TypeError('val must be string, number or Buffer') +} + +function arrayIndexOf (arr, val, byteOffset, encoding, dir) { + var indexSize = 1 + var arrLength = arr.length + var valLength = val.length + + if (encoding !== undefined) { + encoding = String(encoding).toLowerCase() + if (encoding === 'ucs2' || encoding === 'ucs-2' || + encoding === 'utf16le' || encoding === 'utf-16le') { + if (arr.length < 2 || val.length < 2) { + return -1 + } + indexSize = 2 + arrLength /= 2 + valLength /= 2 + byteOffset /= 2 + } + } + + function read (buf, i) { + if (indexSize === 1) { + return buf[i] + } else { + return buf.readUInt16BE(i * indexSize) + } + } + + var i + if (dir) { + var foundIndex = -1 + for (i = byteOffset; i < arrLength; i++) { + if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) { + if (foundIndex === -1) foundIndex = i + if (i - foundIndex + 1 === valLength) return foundIndex * indexSize + } else { + if (foundIndex !== -1) i -= i - foundIndex + foundIndex = -1 + } + } + } else { + if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength + for (i = byteOffset; i >= 0; i--) { + var found = true + for (var j = 0; j < valLength; j++) { + if (read(arr, i + j) !== read(val, j)) { + found = false + break + } + } + if (found) return i + } + } + + return -1 +} + +Buffer.prototype.includes = function includes (val, byteOffset, encoding) { + return this.indexOf(val, byteOffset, encoding) !== -1 +} + +Buffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) { + return bidirectionalIndexOf(this, val, byteOffset, encoding, true) +} + +Buffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) { + return bidirectionalIndexOf(this, val, byteOffset, encoding, false) +} + +function hexWrite (buf, string, offset, length) { + offset = Number(offset) || 0 + var remaining = buf.length - offset + if (!length) { + length = remaining + } else { + length = Number(length) + if (length > remaining) { + length = remaining + } + } + + var strLen = string.length + + if (length > strLen / 2) { + length = strLen / 2 + } + for (var i = 0; i < length; ++i) { + var parsed = parseInt(string.substr(i * 2, 2), 16) + if (numberIsNaN(parsed)) return i + buf[offset + i] = parsed + } + return i +} + +function utf8Write (buf, string, offset, length) { + return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length) +} + +function asciiWrite (buf, string, offset, length) { + return blitBuffer(asciiToBytes(string), buf, offset, length) +} + +function latin1Write (buf, string, offset, length) { + return asciiWrite(buf, string, offset, length) +} + +function base64Write (buf, string, offset, length) { + return blitBuffer(base64ToBytes(string), buf, offset, length) +} + +function ucs2Write (buf, string, offset, length) { + return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length) +} + +Buffer.prototype.write = function write (string, offset, length, encoding) { + // Buffer#write(string) + if (offset === undefined) { + encoding = 'utf8' + length = this.length + offset = 0 + // Buffer#write(string, encoding) + } else if (length === undefined && typeof offset === 'string') { + encoding = offset + length = this.length + offset = 0 + // Buffer#write(string, offset[, length][, encoding]) + } else if (isFinite(offset)) { + offset = offset >>> 0 + if (isFinite(length)) { + length = length >>> 0 + if (encoding === undefined) encoding = 'utf8' + } else { + encoding = length + length = undefined + } + } else { + throw new Error( + 'Buffer.write(string, encoding, offset[, length]) is no longer supported' + ) + } + + var remaining = this.length - offset + if (length === undefined || length > remaining) length = remaining + + if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) { + throw new RangeError('Attempt to write outside buffer bounds') + } + + if (!encoding) encoding = 'utf8' + + var loweredCase = false + for (;;) { + switch (encoding) { + case 'hex': + return hexWrite(this, string, offset, length) + + case 'utf8': + case 'utf-8': + return utf8Write(this, string, offset, length) + + case 'ascii': + return asciiWrite(this, string, offset, length) + + case 'latin1': + case 'binary': + return latin1Write(this, string, offset, length) + + case 'base64': + // Warning: maxLength not taken into account in base64Write + return base64Write(this, string, offset, length) + + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return ucs2Write(this, string, offset, length) + + default: + if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding) + encoding = ('' + encoding).toLowerCase() + loweredCase = true + } + } +} + +Buffer.prototype.toJSON = function toJSON () { + return { + type: 'Buffer', + data: Array.prototype.slice.call(this._arr || this, 0) + } +} + +function base64Slice (buf, start, end) { + if (start === 0 && end === buf.length) { + return base64.fromByteArray(buf) + } else { + return base64.fromByteArray(buf.slice(start, end)) + } +} + +function utf8Slice (buf, start, end) { + end = Math.min(buf.length, end) + var res = [] + + var i = start + while (i < end) { + var firstByte = buf[i] + var codePoint = null + var bytesPerSequence = (firstByte > 0xEF) ? 4 + : (firstByte > 0xDF) ? 3 + : (firstByte > 0xBF) ? 2 + : 1 + + if (i + bytesPerSequence <= end) { + var secondByte, thirdByte, fourthByte, tempCodePoint + + switch (bytesPerSequence) { + case 1: + if (firstByte < 0x80) { + codePoint = firstByte + } + break + case 2: + secondByte = buf[i + 1] + if ((secondByte & 0xC0) === 0x80) { + tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F) + if (tempCodePoint > 0x7F) { + codePoint = tempCodePoint + } + } + break + case 3: + secondByte = buf[i + 1] + thirdByte = buf[i + 2] + if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) { + tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F) + if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) { + codePoint = tempCodePoint + } + } + break + case 4: + secondByte = buf[i + 1] + thirdByte = buf[i + 2] + fourthByte = buf[i + 3] + if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) { + tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F) + if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) { + codePoint = tempCodePoint + } + } + } + } + + if (codePoint === null) { + // we did not generate a valid codePoint so insert a + // replacement char (U+FFFD) and advance only 1 byte + codePoint = 0xFFFD + bytesPerSequence = 1 + } else if (codePoint > 0xFFFF) { + // encode to utf16 (surrogate pair dance) + codePoint -= 0x10000 + res.push(codePoint >>> 10 & 0x3FF | 0xD800) + codePoint = 0xDC00 | codePoint & 0x3FF + } + + res.push(codePoint) + i += bytesPerSequence + } + + return decodeCodePointsArray(res) +} + +// Based on http://stackoverflow.com/a/22747272/680742, the browser with +// the lowest limit is Chrome, with 0x10000 args. +// We go 1 magnitude less, for safety +var MAX_ARGUMENTS_LENGTH = 0x1000 + +function decodeCodePointsArray (codePoints) { + var len = codePoints.length + if (len <= MAX_ARGUMENTS_LENGTH) { + return String.fromCharCode.apply(String, codePoints) // avoid extra slice() + } + + // Decode in chunks to avoid "call stack size exceeded". + var res = '' + var i = 0 + while (i < len) { + res += String.fromCharCode.apply( + String, + codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH) + ) + } + return res +} + +function asciiSlice (buf, start, end) { + var ret = '' + end = Math.min(buf.length, end) + + for (var i = start; i < end; ++i) { + ret += String.fromCharCode(buf[i] & 0x7F) + } + return ret +} + +function latin1Slice (buf, start, end) { + var ret = '' + end = Math.min(buf.length, end) + + for (var i = start; i < end; ++i) { + ret += String.fromCharCode(buf[i]) + } + return ret +} + +function hexSlice (buf, start, end) { + var len = buf.length + + if (!start || start < 0) start = 0 + if (!end || end < 0 || end > len) end = len + + var out = '' + for (var i = start; i < end; ++i) { + out += toHex(buf[i]) + } + return out +} + +function utf16leSlice (buf, start, end) { + var bytes = buf.slice(start, end) + var res = '' + for (var i = 0; i < bytes.length; i += 2) { + res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256)) + } + return res +} + +Buffer.prototype.slice = function slice (start, end) { + var len = this.length + start = ~~start + end = end === undefined ? len : ~~end + + if (start < 0) { + start += len + if (start < 0) start = 0 + } else if (start > len) { + start = len + } + + if (end < 0) { + end += len + if (end < 0) end = 0 + } else if (end > len) { + end = len + } + + if (end < start) end = start + + var newBuf = this.subarray(start, end) + // Return an augmented `Uint8Array` instance + newBuf.__proto__ = Buffer.prototype + return newBuf +} + +/* + * Need to make sure that buffer isn't trying to write out of bounds. + */ +function checkOffset (offset, ext, length) { + if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint') + if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length') +} + +Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) { + offset = offset >>> 0 + byteLength = byteLength >>> 0 + if (!noAssert) checkOffset(offset, byteLength, this.length) + + var val = this[offset] + var mul = 1 + var i = 0 + while (++i < byteLength && (mul *= 0x100)) { + val += this[offset + i] * mul + } + + return val +} + +Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) { + offset = offset >>> 0 + byteLength = byteLength >>> 0 + if (!noAssert) { + checkOffset(offset, byteLength, this.length) + } + + var val = this[offset + --byteLength] + var mul = 1 + while (byteLength > 0 && (mul *= 0x100)) { + val += this[offset + --byteLength] * mul + } + + return val +} + +Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) { + offset = offset >>> 0 + if (!noAssert) checkOffset(offset, 1, this.length) + return this[offset] +} + +Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) { + offset = offset >>> 0 + if (!noAssert) checkOffset(offset, 2, this.length) + return this[offset] | (this[offset + 1] << 8) +} + +Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) { + offset = offset >>> 0 + if (!noAssert) checkOffset(offset, 2, this.length) + return (this[offset] << 8) | this[offset + 1] +} + +Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) { + offset = offset >>> 0 + if (!noAssert) checkOffset(offset, 4, this.length) + + return ((this[offset]) | + (this[offset + 1] << 8) | + (this[offset + 2] << 16)) + + (this[offset + 3] * 0x1000000) +} + +Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) { + offset = offset >>> 0 + if (!noAssert) checkOffset(offset, 4, this.length) + + return (this[offset] * 0x1000000) + + ((this[offset + 1] << 16) | + (this[offset + 2] << 8) | + this[offset + 3]) +} + +Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) { + offset = offset >>> 0 + byteLength = byteLength >>> 0 + if (!noAssert) checkOffset(offset, byteLength, this.length) + + var val = this[offset] + var mul = 1 + var i = 0 + while (++i < byteLength && (mul *= 0x100)) { + val += this[offset + i] * mul + } + mul *= 0x80 + + if (val >= mul) val -= Math.pow(2, 8 * byteLength) + + return val +} + +Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) { + offset = offset >>> 0 + byteLength = byteLength >>> 0 + if (!noAssert) checkOffset(offset, byteLength, this.length) + + var i = byteLength + var mul = 1 + var val = this[offset + --i] + while (i > 0 && (mul *= 0x100)) { + val += this[offset + --i] * mul + } + mul *= 0x80 + + if (val >= mul) val -= Math.pow(2, 8 * byteLength) + + return val +} + +Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) { + offset = offset >>> 0 + if (!noAssert) checkOffset(offset, 1, this.length) + if (!(this[offset] & 0x80)) return (this[offset]) + return ((0xff - this[offset] + 1) * -1) +} + +Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) { + offset = offset >>> 0 + if (!noAssert) checkOffset(offset, 2, this.length) + var val = this[offset] | (this[offset + 1] << 8) + return (val & 0x8000) ? val | 0xFFFF0000 : val +} + +Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) { + offset = offset >>> 0 + if (!noAssert) checkOffset(offset, 2, this.length) + var val = this[offset + 1] | (this[offset] << 8) + return (val & 0x8000) ? val | 0xFFFF0000 : val +} + +Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) { + offset = offset >>> 0 + if (!noAssert) checkOffset(offset, 4, this.length) + + return (this[offset]) | + (this[offset + 1] << 8) | + (this[offset + 2] << 16) | + (this[offset + 3] << 24) +} + +Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) { + offset = offset >>> 0 + if (!noAssert) checkOffset(offset, 4, this.length) + + return (this[offset] << 24) | + (this[offset + 1] << 16) | + (this[offset + 2] << 8) | + (this[offset + 3]) +} + +Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) { + offset = offset >>> 0 + if (!noAssert) checkOffset(offset, 4, this.length) + return ieee754.read(this, offset, true, 23, 4) +} + +Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) { + offset = offset >>> 0 + if (!noAssert) checkOffset(offset, 4, this.length) + return ieee754.read(this, offset, false, 23, 4) +} + +Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) { + offset = offset >>> 0 + if (!noAssert) checkOffset(offset, 8, this.length) + return ieee754.read(this, offset, true, 52, 8) +} + +Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) { + offset = offset >>> 0 + if (!noAssert) checkOffset(offset, 8, this.length) + return ieee754.read(this, offset, false, 52, 8) +} + +function checkInt (buf, value, offset, ext, max, min) { + if (!Buffer.isBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance') + if (value > max || value < min) throw new RangeError('"value" argument is out of bounds') + if (offset + ext > buf.length) throw new RangeError('Index out of range') +} + +Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) { + value = +value + offset = offset >>> 0 + byteLength = byteLength >>> 0 + if (!noAssert) { + var maxBytes = Math.pow(2, 8 * byteLength) - 1 + checkInt(this, value, offset, byteLength, maxBytes, 0) + } + + var mul = 1 + var i = 0 + this[offset] = value & 0xFF + while (++i < byteLength && (mul *= 0x100)) { + this[offset + i] = (value / mul) & 0xFF + } + + return offset + byteLength +} + +Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) { + value = +value + offset = offset >>> 0 + byteLength = byteLength >>> 0 + if (!noAssert) { + var maxBytes = Math.pow(2, 8 * byteLength) - 1 + checkInt(this, value, offset, byteLength, maxBytes, 0) + } + + var i = byteLength - 1 + var mul = 1 + this[offset + i] = value & 0xFF + while (--i >= 0 && (mul *= 0x100)) { + this[offset + i] = (value / mul) & 0xFF + } + + return offset + byteLength +} + +Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) { + value = +value + offset = offset >>> 0 + if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0) + this[offset] = (value & 0xff) + return offset + 1 +} + +Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) { + value = +value + offset = offset >>> 0 + if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0) + this[offset] = (value & 0xff) + this[offset + 1] = (value >>> 8) + return offset + 2 +} + +Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) { + value = +value + offset = offset >>> 0 + if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0) + this[offset] = (value >>> 8) + this[offset + 1] = (value & 0xff) + return offset + 2 +} + +Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) { + value = +value + offset = offset >>> 0 + if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0) + this[offset + 3] = (value >>> 24) + this[offset + 2] = (value >>> 16) + this[offset + 1] = (value >>> 8) + this[offset] = (value & 0xff) + return offset + 4 +} + +Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) { + value = +value + offset = offset >>> 0 + if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0) + this[offset] = (value >>> 24) + this[offset + 1] = (value >>> 16) + this[offset + 2] = (value >>> 8) + this[offset + 3] = (value & 0xff) + return offset + 4 +} + +Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) { + value = +value + offset = offset >>> 0 + if (!noAssert) { + var limit = Math.pow(2, (8 * byteLength) - 1) + + checkInt(this, value, offset, byteLength, limit - 1, -limit) + } + + var i = 0 + var mul = 1 + var sub = 0 + this[offset] = value & 0xFF + while (++i < byteLength && (mul *= 0x100)) { + if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) { + sub = 1 + } + this[offset + i] = ((value / mul) >> 0) - sub & 0xFF + } + + return offset + byteLength +} + +Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) { + value = +value + offset = offset >>> 0 + if (!noAssert) { + var limit = Math.pow(2, (8 * byteLength) - 1) + + checkInt(this, value, offset, byteLength, limit - 1, -limit) + } + + var i = byteLength - 1 + var mul = 1 + var sub = 0 + this[offset + i] = value & 0xFF + while (--i >= 0 && (mul *= 0x100)) { + if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) { + sub = 1 + } + this[offset + i] = ((value / mul) >> 0) - sub & 0xFF + } + + return offset + byteLength +} + +Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) { + value = +value + offset = offset >>> 0 + if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80) + if (value < 0) value = 0xff + value + 1 + this[offset] = (value & 0xff) + return offset + 1 +} + +Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) { + value = +value + offset = offset >>> 0 + if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000) + this[offset] = (value & 0xff) + this[offset + 1] = (value >>> 8) + return offset + 2 +} + +Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) { + value = +value + offset = offset >>> 0 + if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000) + this[offset] = (value >>> 8) + this[offset + 1] = (value & 0xff) + return offset + 2 +} + +Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) { + value = +value + offset = offset >>> 0 + if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000) + this[offset] = (value & 0xff) + this[offset + 1] = (value >>> 8) + this[offset + 2] = (value >>> 16) + this[offset + 3] = (value >>> 24) + return offset + 4 +} + +Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) { + value = +value + offset = offset >>> 0 + if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000) + if (value < 0) value = 0xffffffff + value + 1 + this[offset] = (value >>> 24) + this[offset + 1] = (value >>> 16) + this[offset + 2] = (value >>> 8) + this[offset + 3] = (value & 0xff) + return offset + 4 +} + +function checkIEEE754 (buf, value, offset, ext, max, min) { + if (offset + ext > buf.length) throw new RangeError('Index out of range') + if (offset < 0) throw new RangeError('Index out of range') +} + +function writeFloat (buf, value, offset, littleEndian, noAssert) { + value = +value + offset = offset >>> 0 + if (!noAssert) { + checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38) + } + ieee754.write(buf, value, offset, littleEndian, 23, 4) + return offset + 4 +} + +Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) { + return writeFloat(this, value, offset, true, noAssert) +} + +Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) { + return writeFloat(this, value, offset, false, noAssert) +} + +function writeDouble (buf, value, offset, littleEndian, noAssert) { + value = +value + offset = offset >>> 0 + if (!noAssert) { + checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308) + } + ieee754.write(buf, value, offset, littleEndian, 52, 8) + return offset + 8 +} + +Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) { + return writeDouble(this, value, offset, true, noAssert) +} + +Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) { + return writeDouble(this, value, offset, false, noAssert) +} + +// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length) +Buffer.prototype.copy = function copy (target, targetStart, start, end) { + if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer') + if (!start) start = 0 + if (!end && end !== 0) end = this.length + if (targetStart >= target.length) targetStart = target.length + if (!targetStart) targetStart = 0 + if (end > 0 && end < start) end = start + + // Copy 0 bytes; we're done + if (end === start) return 0 + if (target.length === 0 || this.length === 0) return 0 + + // Fatal error conditions + if (targetStart < 0) { + throw new RangeError('targetStart out of bounds') + } + if (start < 0 || start >= this.length) throw new RangeError('Index out of range') + if (end < 0) throw new RangeError('sourceEnd out of bounds') + + // Are we oob? + if (end > this.length) end = this.length + if (target.length - targetStart < end - start) { + end = target.length - targetStart + start + } + + var len = end - start + + if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') { + // Use built-in when available, missing from IE11 + this.copyWithin(targetStart, start, end) + } else if (this === target && start < targetStart && targetStart < end) { + // descending copy from end + for (var i = len - 1; i >= 0; --i) { + target[i + targetStart] = this[i + start] + } + } else { + Uint8Array.prototype.set.call( + target, + this.subarray(start, end), + targetStart + ) + } + + return len +} + +// Usage: +// buffer.fill(number[, offset[, end]]) +// buffer.fill(buffer[, offset[, end]]) +// buffer.fill(string[, offset[, end]][, encoding]) +Buffer.prototype.fill = function fill (val, start, end, encoding) { + // Handle string cases: + if (typeof val === 'string') { + if (typeof start === 'string') { + encoding = start + start = 0 + end = this.length + } else if (typeof end === 'string') { + encoding = end + end = this.length + } + if (encoding !== undefined && typeof encoding !== 'string') { + throw new TypeError('encoding must be a string') + } + if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) { + throw new TypeError('Unknown encoding: ' + encoding) + } + if (val.length === 1) { + var code = val.charCodeAt(0) + if ((encoding === 'utf8' && code < 128) || + encoding === 'latin1') { + // Fast path: If `val` fits into a single byte, use that numeric value. + val = code + } + } + } else if (typeof val === 'number') { + val = val & 255 + } + + // Invalid ranges are not set to a default, so can range check early. + if (start < 0 || this.length < start || this.length < end) { + throw new RangeError('Out of range index') + } + + if (end <= start) { + return this + } + + start = start >>> 0 + end = end === undefined ? this.length : end >>> 0 + + if (!val) val = 0 + + var i + if (typeof val === 'number') { + for (i = start; i < end; ++i) { + this[i] = val + } + } else { + var bytes = Buffer.isBuffer(val) + ? val + : Buffer.from(val, encoding) + var len = bytes.length + if (len === 0) { + throw new TypeError('The value "' + val + + '" is invalid for argument "value"') + } + for (i = 0; i < end - start; ++i) { + this[i + start] = bytes[i % len] + } + } + + return this +} + +// HELPER FUNCTIONS +// ================ + +var INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g + +function base64clean (str) { + // Node takes equal signs as end of the Base64 encoding + str = str.split('=')[0] + // Node strips out invalid characters like \n and \t from the string, base64-js does not + str = str.trim().replace(INVALID_BASE64_RE, '') + // Node converts strings with length < 2 to '' + if (str.length < 2) return '' + // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not + while (str.length % 4 !== 0) { + str = str + '=' + } + return str +} + +function toHex (n) { + if (n < 16) return '0' + n.toString(16) + return n.toString(16) +} + +function utf8ToBytes (string, units) { + units = units || Infinity + var codePoint + var length = string.length + var leadSurrogate = null + var bytes = [] + + for (var i = 0; i < length; ++i) { + codePoint = string.charCodeAt(i) + + // is surrogate component + if (codePoint > 0xD7FF && codePoint < 0xE000) { + // last char was a lead + if (!leadSurrogate) { + // no lead yet + if (codePoint > 0xDBFF) { + // unexpected trail + if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) + continue + } else if (i + 1 === length) { + // unpaired lead + if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) + continue + } + + // valid lead + leadSurrogate = codePoint + + continue + } + + // 2 leads in a row + if (codePoint < 0xDC00) { + if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) + leadSurrogate = codePoint + continue + } + + // valid surrogate pair + codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000 + } else if (leadSurrogate) { + // valid bmp char, but last char was a lead + if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) + } + + leadSurrogate = null + + // encode utf8 + if (codePoint < 0x80) { + if ((units -= 1) < 0) break + bytes.push(codePoint) + } else if (codePoint < 0x800) { + if ((units -= 2) < 0) break + bytes.push( + codePoint >> 0x6 | 0xC0, + codePoint & 0x3F | 0x80 + ) + } else if (codePoint < 0x10000) { + if ((units -= 3) < 0) break + bytes.push( + codePoint >> 0xC | 0xE0, + codePoint >> 0x6 & 0x3F | 0x80, + codePoint & 0x3F | 0x80 + ) + } else if (codePoint < 0x110000) { + if ((units -= 4) < 0) break + bytes.push( + codePoint >> 0x12 | 0xF0, + codePoint >> 0xC & 0x3F | 0x80, + codePoint >> 0x6 & 0x3F | 0x80, + codePoint & 0x3F | 0x80 + ) + } else { + throw new Error('Invalid code point') + } + } + + return bytes +} + +function asciiToBytes (str) { + var byteArray = [] + for (var i = 0; i < str.length; ++i) { + // Node's code seems to be doing this and not & 0x7F.. + byteArray.push(str.charCodeAt(i) & 0xFF) + } + return byteArray +} + +function utf16leToBytes (str, units) { + var c, hi, lo + var byteArray = [] + for (var i = 0; i < str.length; ++i) { + if ((units -= 2) < 0) break + + c = str.charCodeAt(i) + hi = c >> 8 + lo = c % 256 + byteArray.push(lo) + byteArray.push(hi) + } + + return byteArray +} + +function base64ToBytes (str) { + return base64.toByteArray(base64clean(str)) +} + +function blitBuffer (src, dst, offset, length) { + for (var i = 0; i < length; ++i) { + if ((i + offset >= dst.length) || (i >= src.length)) break + dst[i + offset] = src[i] + } + return i +} + +// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass +// the `instanceof` check but they should be treated as of that type. +// See: https://github.com/feross/buffer/issues/166 +function isInstance (obj, type) { + return obj instanceof type || + (obj != null && obj.constructor != null && obj.constructor.name != null && + obj.constructor.name === type.name) +} +function numberIsNaN (obj) { + // For IE11 support + return obj !== obj // eslint-disable-line no-self-compare +} + +}).call(this)}).call(this,require("buffer").Buffer) +},{"base64-js":1,"buffer":3,"ieee754":5}],4:[function(require,module,exports){ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +'use strict'; + +var R = typeof Reflect === 'object' ? Reflect : null +var ReflectApply = R && typeof R.apply === 'function' + ? R.apply + : function ReflectApply(target, receiver, args) { + return Function.prototype.apply.call(target, receiver, args); + } + +var ReflectOwnKeys +if (R && typeof R.ownKeys === 'function') { + ReflectOwnKeys = R.ownKeys +} else if (Object.getOwnPropertySymbols) { + ReflectOwnKeys = function ReflectOwnKeys(target) { + return Object.getOwnPropertyNames(target) + .concat(Object.getOwnPropertySymbols(target)); + }; +} else { + ReflectOwnKeys = function ReflectOwnKeys(target) { + return Object.getOwnPropertyNames(target); + }; +} + +function ProcessEmitWarning(warning) { + if (console && console.warn) console.warn(warning); +} + +var NumberIsNaN = Number.isNaN || function NumberIsNaN(value) { + return value !== value; +} + +function EventEmitter() { + EventEmitter.init.call(this); +} +module.exports = EventEmitter; +module.exports.once = once; + +// Backwards-compat with node 0.10.x +EventEmitter.EventEmitter = EventEmitter; + +EventEmitter.prototype._events = undefined; +EventEmitter.prototype._eventsCount = 0; +EventEmitter.prototype._maxListeners = undefined; + +// By default EventEmitters will print a warning if more than 10 listeners are +// added to it. This is a useful default which helps finding memory leaks. +var defaultMaxListeners = 10; + +function checkListener(listener) { + if (typeof listener !== 'function') { + throw new TypeError('The "listener" argument must be of type Function. Received type ' + typeof listener); + } +} + +Object.defineProperty(EventEmitter, 'defaultMaxListeners', { + enumerable: true, + get: function() { + return defaultMaxListeners; + }, + set: function(arg) { + if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) { + throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received ' + arg + '.'); + } + defaultMaxListeners = arg; + } +}); + +EventEmitter.init = function() { + + if (this._events === undefined || + this._events === Object.getPrototypeOf(this)._events) { + this._events = Object.create(null); + this._eventsCount = 0; + } + + this._maxListeners = this._maxListeners || undefined; +}; + +// Obviously not all Emitters should be limited to 10. This function allows +// that to be increased. Set to zero for unlimited. +EventEmitter.prototype.setMaxListeners = function setMaxListeners(n) { + if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) { + throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received ' + n + '.'); + } + this._maxListeners = n; + return this; +}; + +function _getMaxListeners(that) { + if (that._maxListeners === undefined) + return EventEmitter.defaultMaxListeners; + return that._maxListeners; +} + +EventEmitter.prototype.getMaxListeners = function getMaxListeners() { + return _getMaxListeners(this); +}; + +EventEmitter.prototype.emit = function emit(type) { + var args = []; + for (var i = 1; i < arguments.length; i++) args.push(arguments[i]); + var doError = (type === 'error'); + + var events = this._events; + if (events !== undefined) + doError = (doError && events.error === undefined); + else if (!doError) + return false; + + // If there is no 'error' event listener then throw. + if (doError) { + var er; + if (args.length > 0) + er = args[0]; + if (er instanceof Error) { + // Note: The comments on the `throw` lines are intentional, they show + // up in Node's output if this results in an unhandled exception. + throw er; // Unhandled 'error' event + } + // At least give some kind of context to the user + var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : '')); + err.context = er; + throw err; // Unhandled 'error' event + } + + var handler = events[type]; + + if (handler === undefined) + return false; + + if (typeof handler === 'function') { + ReflectApply(handler, this, args); + } else { + var len = handler.length; + var listeners = arrayClone(handler, len); + for (var i = 0; i < len; ++i) + ReflectApply(listeners[i], this, args); + } + + return true; +}; + +function _addListener(target, type, listener, prepend) { + var m; + var events; + var existing; + + checkListener(listener); + + events = target._events; + if (events === undefined) { + events = target._events = Object.create(null); + target._eventsCount = 0; + } else { + // To avoid recursion in the case that type === "newListener"! Before + // adding it to the listeners, first emit "newListener". + if (events.newListener !== undefined) { + target.emit('newListener', type, + listener.listener ? listener.listener : listener); + + // Re-assign `events` because a newListener handler could have caused the + // this._events to be assigned to a new object + events = target._events; + } + existing = events[type]; + } + + if (existing === undefined) { + // Optimize the case of one listener. Don't need the extra array object. + existing = events[type] = listener; + ++target._eventsCount; + } else { + if (typeof existing === 'function') { + // Adding the second element, need to change to array. + existing = events[type] = + prepend ? [listener, existing] : [existing, listener]; + // If we've already got an array, just append. + } else if (prepend) { + existing.unshift(listener); + } else { + existing.push(listener); + } + + // Check for listener leak + m = _getMaxListeners(target); + if (m > 0 && existing.length > m && !existing.warned) { + existing.warned = true; + // No error code for this since it is a Warning + // eslint-disable-next-line no-restricted-syntax + var w = new Error('Possible EventEmitter memory leak detected. ' + + existing.length + ' ' + String(type) + ' listeners ' + + 'added. Use emitter.setMaxListeners() to ' + + 'increase limit'); + w.name = 'MaxListenersExceededWarning'; + w.emitter = target; + w.type = type; + w.count = existing.length; + ProcessEmitWarning(w); + } + } + + return target; +} + +EventEmitter.prototype.addListener = function addListener(type, listener) { + return _addListener(this, type, listener, false); +}; + +EventEmitter.prototype.on = EventEmitter.prototype.addListener; + +EventEmitter.prototype.prependListener = + function prependListener(type, listener) { + return _addListener(this, type, listener, true); + }; + +function onceWrapper() { + if (!this.fired) { + this.target.removeListener(this.type, this.wrapFn); + this.fired = true; + if (arguments.length === 0) + return this.listener.call(this.target); + return this.listener.apply(this.target, arguments); + } +} + +function _onceWrap(target, type, listener) { + var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener }; + var wrapped = onceWrapper.bind(state); + wrapped.listener = listener; + state.wrapFn = wrapped; + return wrapped; +} + +EventEmitter.prototype.once = function once(type, listener) { + checkListener(listener); + this.on(type, _onceWrap(this, type, listener)); + return this; +}; + +EventEmitter.prototype.prependOnceListener = + function prependOnceListener(type, listener) { + checkListener(listener); + this.prependListener(type, _onceWrap(this, type, listener)); + return this; + }; + +// Emits a 'removeListener' event if and only if the listener was removed. +EventEmitter.prototype.removeListener = + function removeListener(type, listener) { + var list, events, position, i, originalListener; + + checkListener(listener); + + events = this._events; + if (events === undefined) + return this; + + list = events[type]; + if (list === undefined) + return this; + + if (list === listener || list.listener === listener) { + if (--this._eventsCount === 0) + this._events = Object.create(null); + else { + delete events[type]; + if (events.removeListener) + this.emit('removeListener', type, list.listener || listener); + } + } else if (typeof list !== 'function') { + position = -1; + + for (i = list.length - 1; i >= 0; i--) { + if (list[i] === listener || list[i].listener === listener) { + originalListener = list[i].listener; + position = i; + break; + } + } + + if (position < 0) + return this; + + if (position === 0) + list.shift(); + else { + spliceOne(list, position); + } + + if (list.length === 1) + events[type] = list[0]; + + if (events.removeListener !== undefined) + this.emit('removeListener', type, originalListener || listener); + } + + return this; + }; + +EventEmitter.prototype.off = EventEmitter.prototype.removeListener; + +EventEmitter.prototype.removeAllListeners = + function removeAllListeners(type) { + var listeners, events, i; + + events = this._events; + if (events === undefined) + return this; + + // not listening for removeListener, no need to emit + if (events.removeListener === undefined) { + if (arguments.length === 0) { + this._events = Object.create(null); + this._eventsCount = 0; + } else if (events[type] !== undefined) { + if (--this._eventsCount === 0) + this._events = Object.create(null); + else + delete events[type]; + } + return this; + } + + // emit removeListener for all listeners on all events + if (arguments.length === 0) { + var keys = Object.keys(events); + var key; + for (i = 0; i < keys.length; ++i) { + key = keys[i]; + if (key === 'removeListener') continue; + this.removeAllListeners(key); + } + this.removeAllListeners('removeListener'); + this._events = Object.create(null); + this._eventsCount = 0; + return this; + } + + listeners = events[type]; + + if (typeof listeners === 'function') { + this.removeListener(type, listeners); + } else if (listeners !== undefined) { + // LIFO order + for (i = listeners.length - 1; i >= 0; i--) { + this.removeListener(type, listeners[i]); + } + } + + return this; + }; + +function _listeners(target, type, unwrap) { + var events = target._events; + + if (events === undefined) + return []; + + var evlistener = events[type]; + if (evlistener === undefined) + return []; + + if (typeof evlistener === 'function') + return unwrap ? [evlistener.listener || evlistener] : [evlistener]; + + return unwrap ? + unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length); +} + +EventEmitter.prototype.listeners = function listeners(type) { + return _listeners(this, type, true); +}; + +EventEmitter.prototype.rawListeners = function rawListeners(type) { + return _listeners(this, type, false); +}; + +EventEmitter.listenerCount = function(emitter, type) { + if (typeof emitter.listenerCount === 'function') { + return emitter.listenerCount(type); + } else { + return listenerCount.call(emitter, type); + } +}; + +EventEmitter.prototype.listenerCount = listenerCount; +function listenerCount(type) { + var events = this._events; + + if (events !== undefined) { + var evlistener = events[type]; + + if (typeof evlistener === 'function') { + return 1; + } else if (evlistener !== undefined) { + return evlistener.length; + } + } + + return 0; +} + +EventEmitter.prototype.eventNames = function eventNames() { + return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : []; +}; + +function arrayClone(arr, n) { + var copy = new Array(n); + for (var i = 0; i < n; ++i) + copy[i] = arr[i]; + return copy; +} + +function spliceOne(list, index) { + for (; index + 1 < list.length; index++) + list[index] = list[index + 1]; + list.pop(); +} + +function unwrapListeners(arr) { + var ret = new Array(arr.length); + for (var i = 0; i < ret.length; ++i) { + ret[i] = arr[i].listener || arr[i]; + } + return ret; +} + +function once(emitter, name) { + return new Promise(function (resolve, reject) { + function errorListener(err) { + emitter.removeListener(name, resolver); + reject(err); + } + + function resolver() { + if (typeof emitter.removeListener === 'function') { + emitter.removeListener('error', errorListener); + } + resolve([].slice.call(arguments)); + }; + + eventTargetAgnosticAddListener(emitter, name, resolver, { once: true }); + if (name !== 'error') { + addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true }); + } + }); +} + +function addErrorHandlerIfEventEmitter(emitter, handler, flags) { + if (typeof emitter.on === 'function') { + eventTargetAgnosticAddListener(emitter, 'error', handler, flags); + } +} + +function eventTargetAgnosticAddListener(emitter, name, listener, flags) { + if (typeof emitter.on === 'function') { + if (flags.once) { + emitter.once(name, listener); + } else { + emitter.on(name, listener); + } + } else if (typeof emitter.addEventListener === 'function') { + // EventTarget does not have `error` event semantics like Node + // EventEmitters, we do not listen for `error` events here. + emitter.addEventListener(name, function wrapListener(arg) { + // IE does not have builtin `{ once: true }` support so we + // have to do it manually. + if (flags.once) { + emitter.removeEventListener(name, wrapListener); + } + listener(arg); + }); + } else { + throw new TypeError('The "emitter" argument must be of type EventEmitter. Received type ' + typeof emitter); + } +} + +},{}],5:[function(require,module,exports){ +/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */ +exports.read = function (buffer, offset, isLE, mLen, nBytes) { + var e, m + var eLen = (nBytes * 8) - mLen - 1 + var eMax = (1 << eLen) - 1 + var eBias = eMax >> 1 + var nBits = -7 + var i = isLE ? (nBytes - 1) : 0 + var d = isLE ? -1 : 1 + var s = buffer[offset + i] + + i += d + + e = s & ((1 << (-nBits)) - 1) + s >>= (-nBits) + nBits += eLen + for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {} + + m = e & ((1 << (-nBits)) - 1) + e >>= (-nBits) + nBits += mLen + for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {} + + if (e === 0) { + e = 1 - eBias + } else if (e === eMax) { + return m ? NaN : ((s ? -1 : 1) * Infinity) + } else { + m = m + Math.pow(2, mLen) + e = e - eBias + } + return (s ? -1 : 1) * m * Math.pow(2, e - mLen) +} + +exports.write = function (buffer, value, offset, isLE, mLen, nBytes) { + var e, m, c + var eLen = (nBytes * 8) - mLen - 1 + var eMax = (1 << eLen) - 1 + var eBias = eMax >> 1 + var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0) + var i = isLE ? 0 : (nBytes - 1) + var d = isLE ? 1 : -1 + var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0 + + value = Math.abs(value) + + if (isNaN(value) || value === Infinity) { + m = isNaN(value) ? 1 : 0 + e = eMax + } else { + e = Math.floor(Math.log(value) / Math.LN2) + if (value * (c = Math.pow(2, -e)) < 1) { + e-- + c *= 2 + } + if (e + eBias >= 1) { + value += rt / c + } else { + value += rt * Math.pow(2, 1 - eBias) + } + if (value * c >= 2) { + e++ + c /= 2 + } + + if (e + eBias >= eMax) { + m = 0 + e = eMax + } else if (e + eBias >= 1) { + m = ((value * c) - 1) * Math.pow(2, mLen) + e = e + eBias + } else { + m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen) + e = 0 + } + } + + for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {} + + e = (e << mLen) | m + eLen += mLen + for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {} + + buffer[offset + i - d] |= s * 128 +} + +},{}],6:[function(require,module,exports){ +if (typeof Object.create === 'function') { + // implementation from standard node.js 'util' module + module.exports = function inherits(ctor, superCtor) { + if (superCtor) { + ctor.super_ = superCtor + ctor.prototype = Object.create(superCtor.prototype, { + constructor: { + value: ctor, + enumerable: false, + writable: true, + configurable: true + } + }) + } + }; +} else { + // old school shim for old browsers + module.exports = function inherits(ctor, superCtor) { + if (superCtor) { + ctor.super_ = superCtor + var TempCtor = function () {} + TempCtor.prototype = superCtor.prototype + ctor.prototype = new TempCtor() + ctor.prototype.constructor = ctor + } + } +} + +},{}],7:[function(require,module,exports){ +// shim for using process in browser +var process = module.exports = {}; + +// cached from whatever global is present so that test runners that stub it +// don't break things. But we need to wrap it in a try catch in case it is +// wrapped in strict mode code which doesn't define any globals. It's inside a +// function because try/catches deoptimize in certain engines. + +var cachedSetTimeout; +var cachedClearTimeout; + +function defaultSetTimout() { + throw new Error('setTimeout has not been defined'); +} +function defaultClearTimeout () { + throw new Error('clearTimeout has not been defined'); +} +(function () { + try { + if (typeof setTimeout === 'function') { + cachedSetTimeout = setTimeout; + } else { + cachedSetTimeout = defaultSetTimout; + } + } catch (e) { + cachedSetTimeout = defaultSetTimout; + } + try { + if (typeof clearTimeout === 'function') { + cachedClearTimeout = clearTimeout; + } else { + cachedClearTimeout = defaultClearTimeout; + } + } catch (e) { + cachedClearTimeout = defaultClearTimeout; + } +} ()) +function runTimeout(fun) { + if (cachedSetTimeout === setTimeout) { + //normal enviroments in sane situations + return setTimeout(fun, 0); + } + // if setTimeout wasn't available but was latter defined + if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) { + cachedSetTimeout = setTimeout; + return setTimeout(fun, 0); + } + try { + // when when somebody has screwed with setTimeout but no I.E. maddness + return cachedSetTimeout(fun, 0); + } catch(e){ + try { + // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally + return cachedSetTimeout.call(null, fun, 0); + } catch(e){ + // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error + return cachedSetTimeout.call(this, fun, 0); + } + } + + +} +function runClearTimeout(marker) { + if (cachedClearTimeout === clearTimeout) { + //normal enviroments in sane situations + return clearTimeout(marker); + } + // if clearTimeout wasn't available but was latter defined + if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) { + cachedClearTimeout = clearTimeout; + return clearTimeout(marker); + } + try { + // when when somebody has screwed with setTimeout but no I.E. maddness + return cachedClearTimeout(marker); + } catch (e){ + try { + // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally + return cachedClearTimeout.call(null, marker); + } catch (e){ + // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error. + // Some versions of I.E. have different rules for clearTimeout vs setTimeout + return cachedClearTimeout.call(this, marker); + } + } + + + +} +var queue = []; +var draining = false; +var currentQueue; +var queueIndex = -1; + +function cleanUpNextTick() { + if (!draining || !currentQueue) { + return; + } + draining = false; + if (currentQueue.length) { + queue = currentQueue.concat(queue); + } else { + queueIndex = -1; + } + if (queue.length) { + drainQueue(); + } +} + +function drainQueue() { + if (draining) { + return; + } + var timeout = runTimeout(cleanUpNextTick); + draining = true; + + var len = queue.length; + while(len) { + currentQueue = queue; + queue = []; + while (++queueIndex < len) { + if (currentQueue) { + currentQueue[queueIndex].run(); + } + } + queueIndex = -1; + len = queue.length; + } + currentQueue = null; + draining = false; + runClearTimeout(timeout); +} + +process.nextTick = function (fun) { + var args = new Array(arguments.length - 1); + if (arguments.length > 1) { + for (var i = 1; i < arguments.length; i++) { + args[i - 1] = arguments[i]; + } + } + queue.push(new Item(fun, args)); + if (queue.length === 1 && !draining) { + runTimeout(drainQueue); + } +}; + +// v8 likes predictible objects +function Item(fun, array) { + this.fun = fun; + this.array = array; +} +Item.prototype.run = function () { + this.fun.apply(null, this.array); +}; +process.title = 'browser'; +process.browser = true; +process.env = {}; +process.argv = []; +process.version = ''; // empty string to avoid regexp issues +process.versions = {}; + +function noop() {} + +process.on = noop; +process.addListener = noop; +process.once = noop; +process.off = noop; +process.removeListener = noop; +process.removeAllListeners = noop; +process.emit = noop; +process.prependListener = noop; +process.prependOnceListener = noop; + +process.listeners = function (name) { return [] } + +process.binding = function (name) { + throw new Error('process.binding is not supported'); +}; + +process.cwd = function () { return '/' }; +process.chdir = function (dir) { + throw new Error('process.chdir is not supported'); +}; +process.umask = function() { return 0; }; + +},{}],8:[function(require,module,exports){ +/*! safe-buffer. MIT License. Feross Aboukhadijeh */ +/* eslint-disable node/no-deprecated-api */ +var buffer = require('buffer') +var Buffer = buffer.Buffer + +// alternative to using Object.keys for old browsers +function copyProps (src, dst) { + for (var key in src) { + dst[key] = src[key] + } +} +if (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) { + module.exports = buffer +} else { + // Copy properties from require('buffer') + copyProps(buffer, exports) + exports.Buffer = SafeBuffer +} + +function SafeBuffer (arg, encodingOrOffset, length) { + return Buffer(arg, encodingOrOffset, length) +} + +SafeBuffer.prototype = Object.create(Buffer.prototype) + +// Copy static methods from Buffer +copyProps(Buffer, SafeBuffer) + +SafeBuffer.from = function (arg, encodingOrOffset, length) { + if (typeof arg === 'number') { + throw new TypeError('Argument must not be a number') + } + return Buffer(arg, encodingOrOffset, length) +} + +SafeBuffer.alloc = function (size, fill, encoding) { + if (typeof size !== 'number') { + throw new TypeError('Argument must be a number') + } + var buf = Buffer(size) + if (fill !== undefined) { + if (typeof encoding === 'string') { + buf.fill(fill, encoding) + } else { + buf.fill(fill) + } + } else { + buf.fill(0) + } + return buf +} + +SafeBuffer.allocUnsafe = function (size) { + if (typeof size !== 'number') { + throw new TypeError('Argument must be a number') + } + return Buffer(size) +} + +SafeBuffer.allocUnsafeSlow = function (size) { + if (typeof size !== 'number') { + throw new TypeError('Argument must be a number') + } + return buffer.SlowBuffer(size) +} + +},{"buffer":3}],9:[function(require,module,exports){ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +module.exports = Stream; + +var EE = require('events').EventEmitter; +var inherits = require('inherits'); + +inherits(Stream, EE); +Stream.Readable = require('readable-stream/lib/_stream_readable.js'); +Stream.Writable = require('readable-stream/lib/_stream_writable.js'); +Stream.Duplex = require('readable-stream/lib/_stream_duplex.js'); +Stream.Transform = require('readable-stream/lib/_stream_transform.js'); +Stream.PassThrough = require('readable-stream/lib/_stream_passthrough.js'); +Stream.finished = require('readable-stream/lib/internal/streams/end-of-stream.js') +Stream.pipeline = require('readable-stream/lib/internal/streams/pipeline.js') + +// Backwards-compat with node 0.4.x +Stream.Stream = Stream; + + + +// old-style streams. Note that the pipe method (the only relevant +// part of this class) is overridden in the Readable class. + +function Stream() { + EE.call(this); +} + +Stream.prototype.pipe = function(dest, options) { + var source = this; + + function ondata(chunk) { + if (dest.writable) { + if (false === dest.write(chunk) && source.pause) { + source.pause(); + } + } + } + + source.on('data', ondata); + + function ondrain() { + if (source.readable && source.resume) { + source.resume(); + } + } + + dest.on('drain', ondrain); + + // If the 'end' option is not supplied, dest.end() will be called when + // source gets the 'end' or 'close' events. Only dest.end() once. + if (!dest._isStdio && (!options || options.end !== false)) { + source.on('end', onend); + source.on('close', onclose); + } + + var didOnEnd = false; + function onend() { + if (didOnEnd) return; + didOnEnd = true; + + dest.end(); + } + + + function onclose() { + if (didOnEnd) return; + didOnEnd = true; + + if (typeof dest.destroy === 'function') dest.destroy(); + } + + // don't leave dangling pipes when there are errors. + function onerror(er) { + cleanup(); + if (EE.listenerCount(this, 'error') === 0) { + throw er; // Unhandled stream error in pipe. + } + } + + source.on('error', onerror); + dest.on('error', onerror); + + // remove all the event listeners that were added. + function cleanup() { + source.removeListener('data', ondata); + dest.removeListener('drain', ondrain); + + source.removeListener('end', onend); + source.removeListener('close', onclose); + + source.removeListener('error', onerror); + dest.removeListener('error', onerror); + + source.removeListener('end', cleanup); + source.removeListener('close', cleanup); + + dest.removeListener('close', cleanup); + } + + source.on('end', cleanup); + source.on('close', cleanup); + + dest.on('close', cleanup); + + dest.emit('pipe', source); + + // Allow for unix-like usage: A.pipe(B).pipe(C) + return dest; +}; + +},{"events":4,"inherits":6,"readable-stream/lib/_stream_duplex.js":11,"readable-stream/lib/_stream_passthrough.js":12,"readable-stream/lib/_stream_readable.js":13,"readable-stream/lib/_stream_transform.js":14,"readable-stream/lib/_stream_writable.js":15,"readable-stream/lib/internal/streams/end-of-stream.js":19,"readable-stream/lib/internal/streams/pipeline.js":21}],10:[function(require,module,exports){ +'use strict'; + +function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; } + +var codes = {}; + +function createErrorType(code, message, Base) { + if (!Base) { + Base = Error; + } + + function getMessage(arg1, arg2, arg3) { + if (typeof message === 'string') { + return message; + } else { + return message(arg1, arg2, arg3); + } + } + + var NodeError = + /*#__PURE__*/ + function (_Base) { + _inheritsLoose(NodeError, _Base); + + function NodeError(arg1, arg2, arg3) { + return _Base.call(this, getMessage(arg1, arg2, arg3)) || this; + } + + return NodeError; + }(Base); + + NodeError.prototype.name = Base.name; + NodeError.prototype.code = code; + codes[code] = NodeError; +} // https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js + + +function oneOf(expected, thing) { + if (Array.isArray(expected)) { + var len = expected.length; + expected = expected.map(function (i) { + return String(i); + }); + + if (len > 2) { + return "one of ".concat(thing, " ").concat(expected.slice(0, len - 1).join(', '), ", or ") + expected[len - 1]; + } else if (len === 2) { + return "one of ".concat(thing, " ").concat(expected[0], " or ").concat(expected[1]); + } else { + return "of ".concat(thing, " ").concat(expected[0]); + } + } else { + return "of ".concat(thing, " ").concat(String(expected)); + } +} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith + + +function startsWith(str, search, pos) { + return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search; +} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith + + +function endsWith(str, search, this_len) { + if (this_len === undefined || this_len > str.length) { + this_len = str.length; + } + + return str.substring(this_len - search.length, this_len) === search; +} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes + + +function includes(str, search, start) { + if (typeof start !== 'number') { + start = 0; + } + + if (start + search.length > str.length) { + return false; + } else { + return str.indexOf(search, start) !== -1; + } +} + +createErrorType('ERR_INVALID_OPT_VALUE', function (name, value) { + return 'The value "' + value + '" is invalid for option "' + name + '"'; +}, TypeError); +createErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) { + // determiner: 'must be' or 'must not be' + var determiner; + + if (typeof expected === 'string' && startsWith(expected, 'not ')) { + determiner = 'must not be'; + expected = expected.replace(/^not /, ''); + } else { + determiner = 'must be'; + } + + var msg; + + if (endsWith(name, ' argument')) { + // For cases like 'first argument' + msg = "The ".concat(name, " ").concat(determiner, " ").concat(oneOf(expected, 'type')); + } else { + var type = includes(name, '.') ? 'property' : 'argument'; + msg = "The \"".concat(name, "\" ").concat(type, " ").concat(determiner, " ").concat(oneOf(expected, 'type')); + } + + msg += ". Received type ".concat(typeof actual); + return msg; +}, TypeError); +createErrorType('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF'); +createErrorType('ERR_METHOD_NOT_IMPLEMENTED', function (name) { + return 'The ' + name + ' method is not implemented'; +}); +createErrorType('ERR_STREAM_PREMATURE_CLOSE', 'Premature close'); +createErrorType('ERR_STREAM_DESTROYED', function (name) { + return 'Cannot call ' + name + ' after a stream was destroyed'; +}); +createErrorType('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times'); +createErrorType('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable'); +createErrorType('ERR_STREAM_WRITE_AFTER_END', 'write after end'); +createErrorType('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError); +createErrorType('ERR_UNKNOWN_ENCODING', function (arg) { + return 'Unknown encoding: ' + arg; +}, TypeError); +createErrorType('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event'); +module.exports.codes = codes; + +},{}],11:[function(require,module,exports){ +(function (process){(function (){ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. +// a duplex stream is just a stream that is both readable and writable. +// Since JS doesn't have multiple prototypal inheritance, this class +// prototypally inherits from Readable, and then parasitically from +// Writable. +'use strict'; +/**/ + +var objectKeys = Object.keys || function (obj) { + var keys = []; + + for (var key in obj) { + keys.push(key); + } + + return keys; +}; +/**/ + + +module.exports = Duplex; + +var Readable = require('./_stream_readable'); + +var Writable = require('./_stream_writable'); + +require('inherits')(Duplex, Readable); + +{ + // Allow the keys array to be GC'ed. + var keys = objectKeys(Writable.prototype); + + for (var v = 0; v < keys.length; v++) { + var method = keys[v]; + if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method]; + } +} + +function Duplex(options) { + if (!(this instanceof Duplex)) return new Duplex(options); + Readable.call(this, options); + Writable.call(this, options); + this.allowHalfOpen = true; + + if (options) { + if (options.readable === false) this.readable = false; + if (options.writable === false) this.writable = false; + + if (options.allowHalfOpen === false) { + this.allowHalfOpen = false; + this.once('end', onend); + } + } +} + +Object.defineProperty(Duplex.prototype, 'writableHighWaterMark', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._writableState.highWaterMark; + } +}); +Object.defineProperty(Duplex.prototype, 'writableBuffer', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._writableState && this._writableState.getBuffer(); + } +}); +Object.defineProperty(Duplex.prototype, 'writableLength', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._writableState.length; + } +}); // the no-half-open enforcer + +function onend() { + // If the writable side ended, then we're ok. + if (this._writableState.ended) return; // no more data can be written. + // But allow more writes to happen in this tick. + + process.nextTick(onEndNT, this); +} + +function onEndNT(self) { + self.end(); +} + +Object.defineProperty(Duplex.prototype, 'destroyed', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + if (this._readableState === undefined || this._writableState === undefined) { + return false; + } + + return this._readableState.destroyed && this._writableState.destroyed; + }, + set: function set(value) { + // we ignore the value if the stream + // has not been initialized yet + if (this._readableState === undefined || this._writableState === undefined) { + return; + } // backward compatibility, the user is explicitly + // managing destroyed + + + this._readableState.destroyed = value; + this._writableState.destroyed = value; + } +}); +}).call(this)}).call(this,require('_process')) +},{"./_stream_readable":13,"./_stream_writable":15,"_process":7,"inherits":6}],12:[function(require,module,exports){ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. +// a passthrough stream. +// basically just the most minimal sort of Transform stream. +// Every written chunk gets output as-is. +'use strict'; + +module.exports = PassThrough; + +var Transform = require('./_stream_transform'); + +require('inherits')(PassThrough, Transform); + +function PassThrough(options) { + if (!(this instanceof PassThrough)) return new PassThrough(options); + Transform.call(this, options); +} + +PassThrough.prototype._transform = function (chunk, encoding, cb) { + cb(null, chunk); +}; +},{"./_stream_transform":14,"inherits":6}],13:[function(require,module,exports){ +(function (process,global){(function (){ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. +'use strict'; + +module.exports = Readable; +/**/ + +var Duplex; +/**/ + +Readable.ReadableState = ReadableState; +/**/ + +var EE = require('events').EventEmitter; + +var EElistenerCount = function EElistenerCount(emitter, type) { + return emitter.listeners(type).length; +}; +/**/ + +/**/ + + +var Stream = require('./internal/streams/stream'); +/**/ + + +var Buffer = require('buffer').Buffer; + +var OurUint8Array = global.Uint8Array || function () {}; + +function _uint8ArrayToBuffer(chunk) { + return Buffer.from(chunk); +} + +function _isUint8Array(obj) { + return Buffer.isBuffer(obj) || obj instanceof OurUint8Array; +} +/**/ + + +var debugUtil = require('util'); + +var debug; + +if (debugUtil && debugUtil.debuglog) { + debug = debugUtil.debuglog('stream'); +} else { + debug = function debug() {}; +} +/**/ + + +var BufferList = require('./internal/streams/buffer_list'); + +var destroyImpl = require('./internal/streams/destroy'); + +var _require = require('./internal/streams/state'), + getHighWaterMark = _require.getHighWaterMark; + +var _require$codes = require('../errors').codes, + ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE, + ERR_STREAM_PUSH_AFTER_EOF = _require$codes.ERR_STREAM_PUSH_AFTER_EOF, + ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED, + ERR_STREAM_UNSHIFT_AFTER_END_EVENT = _require$codes.ERR_STREAM_UNSHIFT_AFTER_END_EVENT; // Lazy loaded to improve the startup performance. + + +var StringDecoder; +var createReadableStreamAsyncIterator; +var from; + +require('inherits')(Readable, Stream); + +var errorOrDestroy = destroyImpl.errorOrDestroy; +var kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume']; + +function prependListener(emitter, event, fn) { + // Sadly this is not cacheable as some libraries bundle their own + // event emitter implementation with them. + if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn); // This is a hack to make sure that our error handler is attached before any + // userland ones. NEVER DO THIS. This is here only because this code needs + // to continue to work with older versions of Node.js that do not include + // the prependListener() method. The goal is to eventually remove this hack. + + if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (Array.isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]]; +} + +function ReadableState(options, stream, isDuplex) { + Duplex = Duplex || require('./_stream_duplex'); + options = options || {}; // Duplex streams are both readable and writable, but share + // the same options object. + // However, some cases require setting options to different + // values for the readable and the writable sides of the duplex stream. + // These options can be provided separately as readableXXX and writableXXX. + + if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag. Used to make read(n) ignore n and to + // make all the buffer merging and length checks go away + + this.objectMode = !!options.objectMode; + if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode; // the point at which it stops calling _read() to fill the buffer + // Note: 0 is a valid value, means "don't call _read preemptively ever" + + this.highWaterMark = getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex); // A linked list is used to store data chunks instead of an array because the + // linked list can remove elements from the beginning faster than + // array.shift() + + this.buffer = new BufferList(); + this.length = 0; + this.pipes = null; + this.pipesCount = 0; + this.flowing = null; + this.ended = false; + this.endEmitted = false; + this.reading = false; // a flag to be able to tell if the event 'readable'/'data' is emitted + // immediately, or on a later tick. We set this to true at first, because + // any actions that shouldn't happen until "later" should generally also + // not happen before the first read call. + + this.sync = true; // whenever we return null, then we set a flag to say + // that we're awaiting a 'readable' event emission. + + this.needReadable = false; + this.emittedReadable = false; + this.readableListening = false; + this.resumeScheduled = false; + this.paused = true; // Should close be emitted on destroy. Defaults to true. + + this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'end' (and potentially 'finish') + + this.autoDestroy = !!options.autoDestroy; // has it been destroyed + + this.destroyed = false; // Crypto is kind of old and crusty. Historically, its default string + // encoding is 'binary' so we have to make this configurable. + // Everything else in the universe uses 'utf8', though. + + this.defaultEncoding = options.defaultEncoding || 'utf8'; // the number of writers that are awaiting a drain event in .pipe()s + + this.awaitDrain = 0; // if true, a maybeReadMore has been scheduled + + this.readingMore = false; + this.decoder = null; + this.encoding = null; + + if (options.encoding) { + if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder; + this.decoder = new StringDecoder(options.encoding); + this.encoding = options.encoding; + } +} + +function Readable(options) { + Duplex = Duplex || require('./_stream_duplex'); + if (!(this instanceof Readable)) return new Readable(options); // Checking for a Stream.Duplex instance is faster here instead of inside + // the ReadableState constructor, at least with V8 6.5 + + var isDuplex = this instanceof Duplex; + this._readableState = new ReadableState(options, this, isDuplex); // legacy + + this.readable = true; + + if (options) { + if (typeof options.read === 'function') this._read = options.read; + if (typeof options.destroy === 'function') this._destroy = options.destroy; + } + + Stream.call(this); +} + +Object.defineProperty(Readable.prototype, 'destroyed', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + if (this._readableState === undefined) { + return false; + } + + return this._readableState.destroyed; + }, + set: function set(value) { + // we ignore the value if the stream + // has not been initialized yet + if (!this._readableState) { + return; + } // backward compatibility, the user is explicitly + // managing destroyed + + + this._readableState.destroyed = value; + } +}); +Readable.prototype.destroy = destroyImpl.destroy; +Readable.prototype._undestroy = destroyImpl.undestroy; + +Readable.prototype._destroy = function (err, cb) { + cb(err); +}; // Manually shove something into the read() buffer. +// This returns true if the highWaterMark has not been hit yet, +// similar to how Writable.write() returns true if you should +// write() some more. + + +Readable.prototype.push = function (chunk, encoding) { + var state = this._readableState; + var skipChunkCheck; + + if (!state.objectMode) { + if (typeof chunk === 'string') { + encoding = encoding || state.defaultEncoding; + + if (encoding !== state.encoding) { + chunk = Buffer.from(chunk, encoding); + encoding = ''; + } + + skipChunkCheck = true; + } + } else { + skipChunkCheck = true; + } + + return readableAddChunk(this, chunk, encoding, false, skipChunkCheck); +}; // Unshift should *always* be something directly out of read() + + +Readable.prototype.unshift = function (chunk) { + return readableAddChunk(this, chunk, null, true, false); +}; + +function readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) { + debug('readableAddChunk', chunk); + var state = stream._readableState; + + if (chunk === null) { + state.reading = false; + onEofChunk(stream, state); + } else { + var er; + if (!skipChunkCheck) er = chunkInvalid(state, chunk); + + if (er) { + errorOrDestroy(stream, er); + } else if (state.objectMode || chunk && chunk.length > 0) { + if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) { + chunk = _uint8ArrayToBuffer(chunk); + } + + if (addToFront) { + if (state.endEmitted) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT());else addChunk(stream, state, chunk, true); + } else if (state.ended) { + errorOrDestroy(stream, new ERR_STREAM_PUSH_AFTER_EOF()); + } else if (state.destroyed) { + return false; + } else { + state.reading = false; + + if (state.decoder && !encoding) { + chunk = state.decoder.write(chunk); + if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state); + } else { + addChunk(stream, state, chunk, false); + } + } + } else if (!addToFront) { + state.reading = false; + maybeReadMore(stream, state); + } + } // We can push more data if we are below the highWaterMark. + // Also, if we have no data yet, we can stand some more bytes. + // This is to work around cases where hwm=0, such as the repl. + + + return !state.ended && (state.length < state.highWaterMark || state.length === 0); +} + +function addChunk(stream, state, chunk, addToFront) { + if (state.flowing && state.length === 0 && !state.sync) { + state.awaitDrain = 0; + stream.emit('data', chunk); + } else { + // update the buffer info. + state.length += state.objectMode ? 1 : chunk.length; + if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk); + if (state.needReadable) emitReadable(stream); + } + + maybeReadMore(stream, state); +} + +function chunkInvalid(state, chunk) { + var er; + + if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) { + er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk); + } + + return er; +} + +Readable.prototype.isPaused = function () { + return this._readableState.flowing === false; +}; // backwards compatibility. + + +Readable.prototype.setEncoding = function (enc) { + if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder; + var decoder = new StringDecoder(enc); + this._readableState.decoder = decoder; // If setEncoding(null), decoder.encoding equals utf8 + + this._readableState.encoding = this._readableState.decoder.encoding; // Iterate over current buffer to convert already stored Buffers: + + var p = this._readableState.buffer.head; + var content = ''; + + while (p !== null) { + content += decoder.write(p.data); + p = p.next; + } + + this._readableState.buffer.clear(); + + if (content !== '') this._readableState.buffer.push(content); + this._readableState.length = content.length; + return this; +}; // Don't raise the hwm > 1GB + + +var MAX_HWM = 0x40000000; + +function computeNewHighWaterMark(n) { + if (n >= MAX_HWM) { + // TODO(ronag): Throw ERR_VALUE_OUT_OF_RANGE. + n = MAX_HWM; + } else { + // Get the next highest power of 2 to prevent increasing hwm excessively in + // tiny amounts + n--; + n |= n >>> 1; + n |= n >>> 2; + n |= n >>> 4; + n |= n >>> 8; + n |= n >>> 16; + n++; + } + + return n; +} // This function is designed to be inlinable, so please take care when making +// changes to the function body. + + +function howMuchToRead(n, state) { + if (n <= 0 || state.length === 0 && state.ended) return 0; + if (state.objectMode) return 1; + + if (n !== n) { + // Only flow one buffer at a time + if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length; + } // If we're asking for more than the current hwm, then raise the hwm. + + + if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n); + if (n <= state.length) return n; // Don't have enough + + if (!state.ended) { + state.needReadable = true; + return 0; + } + + return state.length; +} // you can override either this method, or the async _read(n) below. + + +Readable.prototype.read = function (n) { + debug('read', n); + n = parseInt(n, 10); + var state = this._readableState; + var nOrig = n; + if (n !== 0) state.emittedReadable = false; // if we're doing read(0) to trigger a readable event, but we + // already have a bunch of data in the buffer, then just trigger + // the 'readable' event and move on. + + if (n === 0 && state.needReadable && ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended)) { + debug('read: emitReadable', state.length, state.ended); + if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this); + return null; + } + + n = howMuchToRead(n, state); // if we've ended, and we're now clear, then finish it up. + + if (n === 0 && state.ended) { + if (state.length === 0) endReadable(this); + return null; + } // All the actual chunk generation logic needs to be + // *below* the call to _read. The reason is that in certain + // synthetic stream cases, such as passthrough streams, _read + // may be a completely synchronous operation which may change + // the state of the read buffer, providing enough data when + // before there was *not* enough. + // + // So, the steps are: + // 1. Figure out what the state of things will be after we do + // a read from the buffer. + // + // 2. If that resulting state will trigger a _read, then call _read. + // Note that this may be asynchronous, or synchronous. Yes, it is + // deeply ugly to write APIs this way, but that still doesn't mean + // that the Readable class should behave improperly, as streams are + // designed to be sync/async agnostic. + // Take note if the _read call is sync or async (ie, if the read call + // has returned yet), so that we know whether or not it's safe to emit + // 'readable' etc. + // + // 3. Actually pull the requested chunks out of the buffer and return. + // if we need a readable event, then we need to do some reading. + + + var doRead = state.needReadable; + debug('need readable', doRead); // if we currently have less than the highWaterMark, then also read some + + if (state.length === 0 || state.length - n < state.highWaterMark) { + doRead = true; + debug('length less than watermark', doRead); + } // however, if we've ended, then there's no point, and if we're already + // reading, then it's unnecessary. + + + if (state.ended || state.reading) { + doRead = false; + debug('reading or ended', doRead); + } else if (doRead) { + debug('do read'); + state.reading = true; + state.sync = true; // if the length is currently zero, then we *need* a readable event. + + if (state.length === 0) state.needReadable = true; // call internal read method + + this._read(state.highWaterMark); + + state.sync = false; // If _read pushed data synchronously, then `reading` will be false, + // and we need to re-evaluate how much data we can return to the user. + + if (!state.reading) n = howMuchToRead(nOrig, state); + } + + var ret; + if (n > 0) ret = fromList(n, state);else ret = null; + + if (ret === null) { + state.needReadable = state.length <= state.highWaterMark; + n = 0; + } else { + state.length -= n; + state.awaitDrain = 0; + } + + if (state.length === 0) { + // If we have nothing in the buffer, then we want to know + // as soon as we *do* get something into the buffer. + if (!state.ended) state.needReadable = true; // If we tried to read() past the EOF, then emit end on the next tick. + + if (nOrig !== n && state.ended) endReadable(this); + } + + if (ret !== null) this.emit('data', ret); + return ret; +}; + +function onEofChunk(stream, state) { + debug('onEofChunk'); + if (state.ended) return; + + if (state.decoder) { + var chunk = state.decoder.end(); + + if (chunk && chunk.length) { + state.buffer.push(chunk); + state.length += state.objectMode ? 1 : chunk.length; + } + } + + state.ended = true; + + if (state.sync) { + // if we are sync, wait until next tick to emit the data. + // Otherwise we risk emitting data in the flow() + // the readable code triggers during a read() call + emitReadable(stream); + } else { + // emit 'readable' now to make sure it gets picked up. + state.needReadable = false; + + if (!state.emittedReadable) { + state.emittedReadable = true; + emitReadable_(stream); + } + } +} // Don't emit readable right away in sync mode, because this can trigger +// another read() call => stack overflow. This way, it might trigger +// a nextTick recursion warning, but that's not so bad. + + +function emitReadable(stream) { + var state = stream._readableState; + debug('emitReadable', state.needReadable, state.emittedReadable); + state.needReadable = false; + + if (!state.emittedReadable) { + debug('emitReadable', state.flowing); + state.emittedReadable = true; + process.nextTick(emitReadable_, stream); + } +} + +function emitReadable_(stream) { + var state = stream._readableState; + debug('emitReadable_', state.destroyed, state.length, state.ended); + + if (!state.destroyed && (state.length || state.ended)) { + stream.emit('readable'); + state.emittedReadable = false; + } // The stream needs another readable event if + // 1. It is not flowing, as the flow mechanism will take + // care of it. + // 2. It is not ended. + // 3. It is below the highWaterMark, so we can schedule + // another readable later. + + + state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark; + flow(stream); +} // at this point, the user has presumably seen the 'readable' event, +// and called read() to consume some data. that may have triggered +// in turn another _read(n) call, in which case reading = true if +// it's in progress. +// However, if we're not ended, or reading, and the length < hwm, +// then go ahead and try to read some more preemptively. + + +function maybeReadMore(stream, state) { + if (!state.readingMore) { + state.readingMore = true; + process.nextTick(maybeReadMore_, stream, state); + } +} + +function maybeReadMore_(stream, state) { + // Attempt to read more data if we should. + // + // The conditions for reading more data are (one of): + // - Not enough data buffered (state.length < state.highWaterMark). The loop + // is responsible for filling the buffer with enough data if such data + // is available. If highWaterMark is 0 and we are not in the flowing mode + // we should _not_ attempt to buffer any extra data. We'll get more data + // when the stream consumer calls read() instead. + // - No data in the buffer, and the stream is in flowing mode. In this mode + // the loop below is responsible for ensuring read() is called. Failing to + // call read here would abort the flow and there's no other mechanism for + // continuing the flow if the stream consumer has just subscribed to the + // 'data' event. + // + // In addition to the above conditions to keep reading data, the following + // conditions prevent the data from being read: + // - The stream has ended (state.ended). + // - There is already a pending 'read' operation (state.reading). This is a + // case where the the stream has called the implementation defined _read() + // method, but they are processing the call asynchronously and have _not_ + // called push() with new data. In this case we skip performing more + // read()s. The execution ends in this method again after the _read() ends + // up calling push() with more data. + while (!state.reading && !state.ended && (state.length < state.highWaterMark || state.flowing && state.length === 0)) { + var len = state.length; + debug('maybeReadMore read 0'); + stream.read(0); + if (len === state.length) // didn't get any data, stop spinning. + break; + } + + state.readingMore = false; +} // abstract method. to be overridden in specific implementation classes. +// call cb(er, data) where data is <= n in length. +// for virtual (non-string, non-buffer) streams, "length" is somewhat +// arbitrary, and perhaps not very meaningful. + + +Readable.prototype._read = function (n) { + errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED('_read()')); +}; + +Readable.prototype.pipe = function (dest, pipeOpts) { + var src = this; + var state = this._readableState; + + switch (state.pipesCount) { + case 0: + state.pipes = dest; + break; + + case 1: + state.pipes = [state.pipes, dest]; + break; + + default: + state.pipes.push(dest); + break; + } + + state.pipesCount += 1; + debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts); + var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr; + var endFn = doEnd ? onend : unpipe; + if (state.endEmitted) process.nextTick(endFn);else src.once('end', endFn); + dest.on('unpipe', onunpipe); + + function onunpipe(readable, unpipeInfo) { + debug('onunpipe'); + + if (readable === src) { + if (unpipeInfo && unpipeInfo.hasUnpiped === false) { + unpipeInfo.hasUnpiped = true; + cleanup(); + } + } + } + + function onend() { + debug('onend'); + dest.end(); + } // when the dest drains, it reduces the awaitDrain counter + // on the source. This would be more elegant with a .once() + // handler in flow(), but adding and removing repeatedly is + // too slow. + + + var ondrain = pipeOnDrain(src); + dest.on('drain', ondrain); + var cleanedUp = false; + + function cleanup() { + debug('cleanup'); // cleanup event handlers once the pipe is broken + + dest.removeListener('close', onclose); + dest.removeListener('finish', onfinish); + dest.removeListener('drain', ondrain); + dest.removeListener('error', onerror); + dest.removeListener('unpipe', onunpipe); + src.removeListener('end', onend); + src.removeListener('end', unpipe); + src.removeListener('data', ondata); + cleanedUp = true; // if the reader is waiting for a drain event from this + // specific writer, then it would cause it to never start + // flowing again. + // So, if this is awaiting a drain, then we just call it now. + // If we don't know, then assume that we are waiting for one. + + if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain(); + } + + src.on('data', ondata); + + function ondata(chunk) { + debug('ondata'); + var ret = dest.write(chunk); + debug('dest.write', ret); + + if (ret === false) { + // If the user unpiped during `dest.write()`, it is possible + // to get stuck in a permanently paused state if that write + // also returned false. + // => Check whether `dest` is still a piping destination. + if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) { + debug('false write response, pause', state.awaitDrain); + state.awaitDrain++; + } + + src.pause(); + } + } // if the dest has an error, then stop piping into it. + // however, don't suppress the throwing behavior for this. + + + function onerror(er) { + debug('onerror', er); + unpipe(); + dest.removeListener('error', onerror); + if (EElistenerCount(dest, 'error') === 0) errorOrDestroy(dest, er); + } // Make sure our error handler is attached before userland ones. + + + prependListener(dest, 'error', onerror); // Both close and finish should trigger unpipe, but only once. + + function onclose() { + dest.removeListener('finish', onfinish); + unpipe(); + } + + dest.once('close', onclose); + + function onfinish() { + debug('onfinish'); + dest.removeListener('close', onclose); + unpipe(); + } + + dest.once('finish', onfinish); + + function unpipe() { + debug('unpipe'); + src.unpipe(dest); + } // tell the dest that it's being piped to + + + dest.emit('pipe', src); // start the flow if it hasn't been started already. + + if (!state.flowing) { + debug('pipe resume'); + src.resume(); + } + + return dest; +}; + +function pipeOnDrain(src) { + return function pipeOnDrainFunctionResult() { + var state = src._readableState; + debug('pipeOnDrain', state.awaitDrain); + if (state.awaitDrain) state.awaitDrain--; + + if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) { + state.flowing = true; + flow(src); + } + }; +} + +Readable.prototype.unpipe = function (dest) { + var state = this._readableState; + var unpipeInfo = { + hasUnpiped: false + }; // if we're not piping anywhere, then do nothing. + + if (state.pipesCount === 0) return this; // just one destination. most common case. + + if (state.pipesCount === 1) { + // passed in one, but it's not the right one. + if (dest && dest !== state.pipes) return this; + if (!dest) dest = state.pipes; // got a match. + + state.pipes = null; + state.pipesCount = 0; + state.flowing = false; + if (dest) dest.emit('unpipe', this, unpipeInfo); + return this; + } // slow case. multiple pipe destinations. + + + if (!dest) { + // remove all. + var dests = state.pipes; + var len = state.pipesCount; + state.pipes = null; + state.pipesCount = 0; + state.flowing = false; + + for (var i = 0; i < len; i++) { + dests[i].emit('unpipe', this, { + hasUnpiped: false + }); + } + + return this; + } // try to find the right one. + + + var index = indexOf(state.pipes, dest); + if (index === -1) return this; + state.pipes.splice(index, 1); + state.pipesCount -= 1; + if (state.pipesCount === 1) state.pipes = state.pipes[0]; + dest.emit('unpipe', this, unpipeInfo); + return this; +}; // set up data events if they are asked for +// Ensure readable listeners eventually get something + + +Readable.prototype.on = function (ev, fn) { + var res = Stream.prototype.on.call(this, ev, fn); + var state = this._readableState; + + if (ev === 'data') { + // update readableListening so that resume() may be a no-op + // a few lines down. This is needed to support once('readable'). + state.readableListening = this.listenerCount('readable') > 0; // Try start flowing on next tick if stream isn't explicitly paused + + if (state.flowing !== false) this.resume(); + } else if (ev === 'readable') { + if (!state.endEmitted && !state.readableListening) { + state.readableListening = state.needReadable = true; + state.flowing = false; + state.emittedReadable = false; + debug('on readable', state.length, state.reading); + + if (state.length) { + emitReadable(this); + } else if (!state.reading) { + process.nextTick(nReadingNextTick, this); + } + } + } + + return res; +}; + +Readable.prototype.addListener = Readable.prototype.on; + +Readable.prototype.removeListener = function (ev, fn) { + var res = Stream.prototype.removeListener.call(this, ev, fn); + + if (ev === 'readable') { + // We need to check if there is someone still listening to + // readable and reset the state. However this needs to happen + // after readable has been emitted but before I/O (nextTick) to + // support once('readable', fn) cycles. This means that calling + // resume within the same tick will have no + // effect. + process.nextTick(updateReadableListening, this); + } + + return res; +}; + +Readable.prototype.removeAllListeners = function (ev) { + var res = Stream.prototype.removeAllListeners.apply(this, arguments); + + if (ev === 'readable' || ev === undefined) { + // We need to check if there is someone still listening to + // readable and reset the state. However this needs to happen + // after readable has been emitted but before I/O (nextTick) to + // support once('readable', fn) cycles. This means that calling + // resume within the same tick will have no + // effect. + process.nextTick(updateReadableListening, this); + } + + return res; +}; + +function updateReadableListening(self) { + var state = self._readableState; + state.readableListening = self.listenerCount('readable') > 0; + + if (state.resumeScheduled && !state.paused) { + // flowing needs to be set to true now, otherwise + // the upcoming resume will not flow. + state.flowing = true; // crude way to check if we should resume + } else if (self.listenerCount('data') > 0) { + self.resume(); + } +} + +function nReadingNextTick(self) { + debug('readable nexttick read 0'); + self.read(0); +} // pause() and resume() are remnants of the legacy readable stream API +// If the user uses them, then switch into old mode. + + +Readable.prototype.resume = function () { + var state = this._readableState; + + if (!state.flowing) { + debug('resume'); // we flow only if there is no one listening + // for readable, but we still have to call + // resume() + + state.flowing = !state.readableListening; + resume(this, state); + } + + state.paused = false; + return this; +}; + +function resume(stream, state) { + if (!state.resumeScheduled) { + state.resumeScheduled = true; + process.nextTick(resume_, stream, state); + } +} + +function resume_(stream, state) { + debug('resume', state.reading); + + if (!state.reading) { + stream.read(0); + } + + state.resumeScheduled = false; + stream.emit('resume'); + flow(stream); + if (state.flowing && !state.reading) stream.read(0); +} + +Readable.prototype.pause = function () { + debug('call pause flowing=%j', this._readableState.flowing); + + if (this._readableState.flowing !== false) { + debug('pause'); + this._readableState.flowing = false; + this.emit('pause'); + } + + this._readableState.paused = true; + return this; +}; + +function flow(stream) { + var state = stream._readableState; + debug('flow', state.flowing); + + while (state.flowing && stream.read() !== null) { + ; + } +} // wrap an old-style stream as the async data source. +// This is *not* part of the readable stream interface. +// It is an ugly unfortunate mess of history. + + +Readable.prototype.wrap = function (stream) { + var _this = this; + + var state = this._readableState; + var paused = false; + stream.on('end', function () { + debug('wrapped end'); + + if (state.decoder && !state.ended) { + var chunk = state.decoder.end(); + if (chunk && chunk.length) _this.push(chunk); + } + + _this.push(null); + }); + stream.on('data', function (chunk) { + debug('wrapped data'); + if (state.decoder) chunk = state.decoder.write(chunk); // don't skip over falsy values in objectMode + + if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return; + + var ret = _this.push(chunk); + + if (!ret) { + paused = true; + stream.pause(); + } + }); // proxy all the other methods. + // important when wrapping filters and duplexes. + + for (var i in stream) { + if (this[i] === undefined && typeof stream[i] === 'function') { + this[i] = function methodWrap(method) { + return function methodWrapReturnFunction() { + return stream[method].apply(stream, arguments); + }; + }(i); + } + } // proxy certain important events. + + + for (var n = 0; n < kProxyEvents.length; n++) { + stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n])); + } // when we try to consume some more bytes, simply unpause the + // underlying stream. + + + this._read = function (n) { + debug('wrapped _read', n); + + if (paused) { + paused = false; + stream.resume(); + } + }; + + return this; +}; + +if (typeof Symbol === 'function') { + Readable.prototype[Symbol.asyncIterator] = function () { + if (createReadableStreamAsyncIterator === undefined) { + createReadableStreamAsyncIterator = require('./internal/streams/async_iterator'); + } + + return createReadableStreamAsyncIterator(this); + }; +} + +Object.defineProperty(Readable.prototype, 'readableHighWaterMark', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._readableState.highWaterMark; + } +}); +Object.defineProperty(Readable.prototype, 'readableBuffer', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._readableState && this._readableState.buffer; + } +}); +Object.defineProperty(Readable.prototype, 'readableFlowing', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._readableState.flowing; + }, + set: function set(state) { + if (this._readableState) { + this._readableState.flowing = state; + } + } +}); // exposed for testing purposes only. + +Readable._fromList = fromList; +Object.defineProperty(Readable.prototype, 'readableLength', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._readableState.length; + } +}); // Pluck off n bytes from an array of buffers. +// Length is the combined lengths of all the buffers in the list. +// This function is designed to be inlinable, so please take care when making +// changes to the function body. + +function fromList(n, state) { + // nothing buffered + if (state.length === 0) return null; + var ret; + if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) { + // read it all, truncate the list + if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.first();else ret = state.buffer.concat(state.length); + state.buffer.clear(); + } else { + // read part of list + ret = state.buffer.consume(n, state.decoder); + } + return ret; +} + +function endReadable(stream) { + var state = stream._readableState; + debug('endReadable', state.endEmitted); + + if (!state.endEmitted) { + state.ended = true; + process.nextTick(endReadableNT, state, stream); + } +} + +function endReadableNT(state, stream) { + debug('endReadableNT', state.endEmitted, state.length); // Check that we didn't get one last unshift. + + if (!state.endEmitted && state.length === 0) { + state.endEmitted = true; + stream.readable = false; + stream.emit('end'); + + if (state.autoDestroy) { + // In case of duplex streams we need a way to detect + // if the writable side is ready for autoDestroy as well + var wState = stream._writableState; + + if (!wState || wState.autoDestroy && wState.finished) { + stream.destroy(); + } + } + } +} + +if (typeof Symbol === 'function') { + Readable.from = function (iterable, opts) { + if (from === undefined) { + from = require('./internal/streams/from'); + } + + return from(Readable, iterable, opts); + }; +} + +function indexOf(xs, x) { + for (var i = 0, l = xs.length; i < l; i++) { + if (xs[i] === x) return i; + } + + return -1; +} +}).call(this)}).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"../errors":10,"./_stream_duplex":11,"./internal/streams/async_iterator":16,"./internal/streams/buffer_list":17,"./internal/streams/destroy":18,"./internal/streams/from":20,"./internal/streams/state":22,"./internal/streams/stream":23,"_process":7,"buffer":3,"events":4,"inherits":6,"string_decoder/":24,"util":2}],14:[function(require,module,exports){ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. +// a transform stream is a readable/writable stream where you do +// something with the data. Sometimes it's called a "filter", +// but that's not a great name for it, since that implies a thing where +// some bits pass through, and others are simply ignored. (That would +// be a valid example of a transform, of course.) +// +// While the output is causally related to the input, it's not a +// necessarily symmetric or synchronous transformation. For example, +// a zlib stream might take multiple plain-text writes(), and then +// emit a single compressed chunk some time in the future. +// +// Here's how this works: +// +// The Transform stream has all the aspects of the readable and writable +// stream classes. When you write(chunk), that calls _write(chunk,cb) +// internally, and returns false if there's a lot of pending writes +// buffered up. When you call read(), that calls _read(n) until +// there's enough pending readable data buffered up. +// +// In a transform stream, the written data is placed in a buffer. When +// _read(n) is called, it transforms the queued up data, calling the +// buffered _write cb's as it consumes chunks. If consuming a single +// written chunk would result in multiple output chunks, then the first +// outputted bit calls the readcb, and subsequent chunks just go into +// the read buffer, and will cause it to emit 'readable' if necessary. +// +// This way, back-pressure is actually determined by the reading side, +// since _read has to be called to start processing a new chunk. However, +// a pathological inflate type of transform can cause excessive buffering +// here. For example, imagine a stream where every byte of input is +// interpreted as an integer from 0-255, and then results in that many +// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in +// 1kb of data being output. In this case, you could write a very small +// amount of input, and end up with a very large amount of output. In +// such a pathological inflating mechanism, there'd be no way to tell +// the system to stop doing the transform. A single 4MB write could +// cause the system to run out of memory. +// +// However, even in such a pathological case, only a single written chunk +// would be consumed, and then the rest would wait (un-transformed) until +// the results of the previous transformed chunk were consumed. +'use strict'; + +module.exports = Transform; + +var _require$codes = require('../errors').codes, + ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED, + ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK, + ERR_TRANSFORM_ALREADY_TRANSFORMING = _require$codes.ERR_TRANSFORM_ALREADY_TRANSFORMING, + ERR_TRANSFORM_WITH_LENGTH_0 = _require$codes.ERR_TRANSFORM_WITH_LENGTH_0; + +var Duplex = require('./_stream_duplex'); + +require('inherits')(Transform, Duplex); + +function afterTransform(er, data) { + var ts = this._transformState; + ts.transforming = false; + var cb = ts.writecb; + + if (cb === null) { + return this.emit('error', new ERR_MULTIPLE_CALLBACK()); + } + + ts.writechunk = null; + ts.writecb = null; + if (data != null) // single equals check for both `null` and `undefined` + this.push(data); + cb(er); + var rs = this._readableState; + rs.reading = false; + + if (rs.needReadable || rs.length < rs.highWaterMark) { + this._read(rs.highWaterMark); + } +} + +function Transform(options) { + if (!(this instanceof Transform)) return new Transform(options); + Duplex.call(this, options); + this._transformState = { + afterTransform: afterTransform.bind(this), + needTransform: false, + transforming: false, + writecb: null, + writechunk: null, + writeencoding: null + }; // start out asking for a readable event once data is transformed. + + this._readableState.needReadable = true; // we have implemented the _read method, and done the other things + // that Readable wants before the first _read call, so unset the + // sync guard flag. + + this._readableState.sync = false; + + if (options) { + if (typeof options.transform === 'function') this._transform = options.transform; + if (typeof options.flush === 'function') this._flush = options.flush; + } // When the writable side finishes, then flush out anything remaining. + + + this.on('prefinish', prefinish); +} + +function prefinish() { + var _this = this; + + if (typeof this._flush === 'function' && !this._readableState.destroyed) { + this._flush(function (er, data) { + done(_this, er, data); + }); + } else { + done(this, null, null); + } +} + +Transform.prototype.push = function (chunk, encoding) { + this._transformState.needTransform = false; + return Duplex.prototype.push.call(this, chunk, encoding); +}; // This is the part where you do stuff! +// override this function in implementation classes. +// 'chunk' is an input chunk. +// +// Call `push(newChunk)` to pass along transformed output +// to the readable side. You may call 'push' zero or more times. +// +// Call `cb(err)` when you are done with this chunk. If you pass +// an error, then that'll put the hurt on the whole operation. If you +// never call cb(), then you'll never get another chunk. + + +Transform.prototype._transform = function (chunk, encoding, cb) { + cb(new ERR_METHOD_NOT_IMPLEMENTED('_transform()')); +}; + +Transform.prototype._write = function (chunk, encoding, cb) { + var ts = this._transformState; + ts.writecb = cb; + ts.writechunk = chunk; + ts.writeencoding = encoding; + + if (!ts.transforming) { + var rs = this._readableState; + if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark); + } +}; // Doesn't matter what the args are here. +// _transform does all the work. +// That we got here means that the readable side wants more data. + + +Transform.prototype._read = function (n) { + var ts = this._transformState; + + if (ts.writechunk !== null && !ts.transforming) { + ts.transforming = true; + + this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform); + } else { + // mark that we need a transform, so that any data that comes in + // will get processed, now that we've asked for it. + ts.needTransform = true; + } +}; + +Transform.prototype._destroy = function (err, cb) { + Duplex.prototype._destroy.call(this, err, function (err2) { + cb(err2); + }); +}; + +function done(stream, er, data) { + if (er) return stream.emit('error', er); + if (data != null) // single equals check for both `null` and `undefined` + stream.push(data); // TODO(BridgeAR): Write a test for these two error cases + // if there's nothing in the write buffer, then that means + // that nothing more will ever be provided + + if (stream._writableState.length) throw new ERR_TRANSFORM_WITH_LENGTH_0(); + if (stream._transformState.transforming) throw new ERR_TRANSFORM_ALREADY_TRANSFORMING(); + return stream.push(null); +} +},{"../errors":10,"./_stream_duplex":11,"inherits":6}],15:[function(require,module,exports){ +(function (process,global){(function (){ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. +// A bit simpler than readable streams. +// Implement an async ._write(chunk, encoding, cb), and it'll handle all +// the drain event emission and buffering. +'use strict'; + +module.exports = Writable; +/* */ + +function WriteReq(chunk, encoding, cb) { + this.chunk = chunk; + this.encoding = encoding; + this.callback = cb; + this.next = null; +} // It seems a linked list but it is not +// there will be only 2 of these for each stream + + +function CorkedRequest(state) { + var _this = this; + + this.next = null; + this.entry = null; + + this.finish = function () { + onCorkedFinish(_this, state); + }; +} +/* */ + +/**/ + + +var Duplex; +/**/ + +Writable.WritableState = WritableState; +/**/ + +var internalUtil = { + deprecate: require('util-deprecate') +}; +/**/ + +/**/ + +var Stream = require('./internal/streams/stream'); +/**/ + + +var Buffer = require('buffer').Buffer; + +var OurUint8Array = global.Uint8Array || function () {}; + +function _uint8ArrayToBuffer(chunk) { + return Buffer.from(chunk); +} + +function _isUint8Array(obj) { + return Buffer.isBuffer(obj) || obj instanceof OurUint8Array; +} + +var destroyImpl = require('./internal/streams/destroy'); + +var _require = require('./internal/streams/state'), + getHighWaterMark = _require.getHighWaterMark; + +var _require$codes = require('../errors').codes, + ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE, + ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED, + ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK, + ERR_STREAM_CANNOT_PIPE = _require$codes.ERR_STREAM_CANNOT_PIPE, + ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED, + ERR_STREAM_NULL_VALUES = _require$codes.ERR_STREAM_NULL_VALUES, + ERR_STREAM_WRITE_AFTER_END = _require$codes.ERR_STREAM_WRITE_AFTER_END, + ERR_UNKNOWN_ENCODING = _require$codes.ERR_UNKNOWN_ENCODING; + +var errorOrDestroy = destroyImpl.errorOrDestroy; + +require('inherits')(Writable, Stream); + +function nop() {} + +function WritableState(options, stream, isDuplex) { + Duplex = Duplex || require('./_stream_duplex'); + options = options || {}; // Duplex streams are both readable and writable, but share + // the same options object. + // However, some cases require setting options to different + // values for the readable and the writable sides of the duplex stream, + // e.g. options.readableObjectMode vs. options.writableObjectMode, etc. + + if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag to indicate whether or not this stream + // contains buffers or objects. + + this.objectMode = !!options.objectMode; + if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode; // the point at which write() starts returning false + // Note: 0 is a valid value, means that we always return false if + // the entire buffer is not flushed immediately on write() + + this.highWaterMark = getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex); // if _final has been called + + this.finalCalled = false; // drain event flag. + + this.needDrain = false; // at the start of calling end() + + this.ending = false; // when end() has been called, and returned + + this.ended = false; // when 'finish' is emitted + + this.finished = false; // has it been destroyed + + this.destroyed = false; // should we decode strings into buffers before passing to _write? + // this is here so that some node-core streams can optimize string + // handling at a lower level. + + var noDecode = options.decodeStrings === false; + this.decodeStrings = !noDecode; // Crypto is kind of old and crusty. Historically, its default string + // encoding is 'binary' so we have to make this configurable. + // Everything else in the universe uses 'utf8', though. + + this.defaultEncoding = options.defaultEncoding || 'utf8'; // not an actual buffer we keep track of, but a measurement + // of how much we're waiting to get pushed to some underlying + // socket or file. + + this.length = 0; // a flag to see when we're in the middle of a write. + + this.writing = false; // when true all writes will be buffered until .uncork() call + + this.corked = 0; // a flag to be able to tell if the onwrite cb is called immediately, + // or on a later tick. We set this to true at first, because any + // actions that shouldn't happen until "later" should generally also + // not happen before the first write call. + + this.sync = true; // a flag to know if we're processing previously buffered items, which + // may call the _write() callback in the same tick, so that we don't + // end up in an overlapped onwrite situation. + + this.bufferProcessing = false; // the callback that's passed to _write(chunk,cb) + + this.onwrite = function (er) { + onwrite(stream, er); + }; // the callback that the user supplies to write(chunk,encoding,cb) + + + this.writecb = null; // the amount that is being written when _write is called. + + this.writelen = 0; + this.bufferedRequest = null; + this.lastBufferedRequest = null; // number of pending user-supplied write callbacks + // this must be 0 before 'finish' can be emitted + + this.pendingcb = 0; // emit prefinish if the only thing we're waiting for is _write cbs + // This is relevant for synchronous Transform streams + + this.prefinished = false; // True if the error was already emitted and should not be thrown again + + this.errorEmitted = false; // Should close be emitted on destroy. Defaults to true. + + this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'finish' (and potentially 'end') + + this.autoDestroy = !!options.autoDestroy; // count buffered requests + + this.bufferedRequestCount = 0; // allocate the first CorkedRequest, there is always + // one allocated and free to use, and we maintain at most two + + this.corkedRequestsFree = new CorkedRequest(this); +} + +WritableState.prototype.getBuffer = function getBuffer() { + var current = this.bufferedRequest; + var out = []; + + while (current) { + out.push(current); + current = current.next; + } + + return out; +}; + +(function () { + try { + Object.defineProperty(WritableState.prototype, 'buffer', { + get: internalUtil.deprecate(function writableStateBufferGetter() { + return this.getBuffer(); + }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003') + }); + } catch (_) {} +})(); // Test _writableState for inheritance to account for Duplex streams, +// whose prototype chain only points to Readable. + + +var realHasInstance; + +if (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') { + realHasInstance = Function.prototype[Symbol.hasInstance]; + Object.defineProperty(Writable, Symbol.hasInstance, { + value: function value(object) { + if (realHasInstance.call(this, object)) return true; + if (this !== Writable) return false; + return object && object._writableState instanceof WritableState; + } + }); +} else { + realHasInstance = function realHasInstance(object) { + return object instanceof this; + }; +} + +function Writable(options) { + Duplex = Duplex || require('./_stream_duplex'); // Writable ctor is applied to Duplexes, too. + // `realHasInstance` is necessary because using plain `instanceof` + // would return false, as no `_writableState` property is attached. + // Trying to use the custom `instanceof` for Writable here will also break the + // Node.js LazyTransform implementation, which has a non-trivial getter for + // `_writableState` that would lead to infinite recursion. + // Checking for a Stream.Duplex instance is faster here instead of inside + // the WritableState constructor, at least with V8 6.5 + + var isDuplex = this instanceof Duplex; + if (!isDuplex && !realHasInstance.call(Writable, this)) return new Writable(options); + this._writableState = new WritableState(options, this, isDuplex); // legacy. + + this.writable = true; + + if (options) { + if (typeof options.write === 'function') this._write = options.write; + if (typeof options.writev === 'function') this._writev = options.writev; + if (typeof options.destroy === 'function') this._destroy = options.destroy; + if (typeof options.final === 'function') this._final = options.final; + } + + Stream.call(this); +} // Otherwise people can pipe Writable streams, which is just wrong. + + +Writable.prototype.pipe = function () { + errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE()); +}; + +function writeAfterEnd(stream, cb) { + var er = new ERR_STREAM_WRITE_AFTER_END(); // TODO: defer error events consistently everywhere, not just the cb + + errorOrDestroy(stream, er); + process.nextTick(cb, er); +} // Checks that a user-supplied chunk is valid, especially for the particular +// mode the stream is in. Currently this means that `null` is never accepted +// and undefined/non-string values are only allowed in object mode. + + +function validChunk(stream, state, chunk, cb) { + var er; + + if (chunk === null) { + er = new ERR_STREAM_NULL_VALUES(); + } else if (typeof chunk !== 'string' && !state.objectMode) { + er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer'], chunk); + } + + if (er) { + errorOrDestroy(stream, er); + process.nextTick(cb, er); + return false; + } + + return true; +} + +Writable.prototype.write = function (chunk, encoding, cb) { + var state = this._writableState; + var ret = false; + + var isBuf = !state.objectMode && _isUint8Array(chunk); + + if (isBuf && !Buffer.isBuffer(chunk)) { + chunk = _uint8ArrayToBuffer(chunk); + } + + if (typeof encoding === 'function') { + cb = encoding; + encoding = null; + } + + if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding; + if (typeof cb !== 'function') cb = nop; + if (state.ending) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) { + state.pendingcb++; + ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb); + } + return ret; +}; + +Writable.prototype.cork = function () { + this._writableState.corked++; +}; + +Writable.prototype.uncork = function () { + var state = this._writableState; + + if (state.corked) { + state.corked--; + if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state); + } +}; + +Writable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) { + // node::ParseEncoding() requires lower case. + if (typeof encoding === 'string') encoding = encoding.toLowerCase(); + if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new ERR_UNKNOWN_ENCODING(encoding); + this._writableState.defaultEncoding = encoding; + return this; +}; + +Object.defineProperty(Writable.prototype, 'writableBuffer', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._writableState && this._writableState.getBuffer(); + } +}); + +function decodeChunk(state, chunk, encoding) { + if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') { + chunk = Buffer.from(chunk, encoding); + } + + return chunk; +} + +Object.defineProperty(Writable.prototype, 'writableHighWaterMark', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._writableState.highWaterMark; + } +}); // if we're already writing something, then just put this +// in the queue, and wait our turn. Otherwise, call _write +// If we return false, then we need a drain event, so set that flag. + +function writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) { + if (!isBuf) { + var newChunk = decodeChunk(state, chunk, encoding); + + if (chunk !== newChunk) { + isBuf = true; + encoding = 'buffer'; + chunk = newChunk; + } + } + + var len = state.objectMode ? 1 : chunk.length; + state.length += len; + var ret = state.length < state.highWaterMark; // we must ensure that previous needDrain will not be reset to false. + + if (!ret) state.needDrain = true; + + if (state.writing || state.corked) { + var last = state.lastBufferedRequest; + state.lastBufferedRequest = { + chunk: chunk, + encoding: encoding, + isBuf: isBuf, + callback: cb, + next: null + }; + + if (last) { + last.next = state.lastBufferedRequest; + } else { + state.bufferedRequest = state.lastBufferedRequest; + } + + state.bufferedRequestCount += 1; + } else { + doWrite(stream, state, false, len, chunk, encoding, cb); + } + + return ret; +} + +function doWrite(stream, state, writev, len, chunk, encoding, cb) { + state.writelen = len; + state.writecb = cb; + state.writing = true; + state.sync = true; + if (state.destroyed) state.onwrite(new ERR_STREAM_DESTROYED('write'));else if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite); + state.sync = false; +} + +function onwriteError(stream, state, sync, er, cb) { + --state.pendingcb; + + if (sync) { + // defer the callback if we are being called synchronously + // to avoid piling up things on the stack + process.nextTick(cb, er); // this can emit finish, and it will always happen + // after error + + process.nextTick(finishMaybe, stream, state); + stream._writableState.errorEmitted = true; + errorOrDestroy(stream, er); + } else { + // the caller expect this to happen before if + // it is async + cb(er); + stream._writableState.errorEmitted = true; + errorOrDestroy(stream, er); // this can emit finish, but finish must + // always follow error + + finishMaybe(stream, state); + } +} + +function onwriteStateUpdate(state) { + state.writing = false; + state.writecb = null; + state.length -= state.writelen; + state.writelen = 0; +} + +function onwrite(stream, er) { + var state = stream._writableState; + var sync = state.sync; + var cb = state.writecb; + if (typeof cb !== 'function') throw new ERR_MULTIPLE_CALLBACK(); + onwriteStateUpdate(state); + if (er) onwriteError(stream, state, sync, er, cb);else { + // Check if we're actually ready to finish, but don't emit yet + var finished = needFinish(state) || stream.destroyed; + + if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) { + clearBuffer(stream, state); + } + + if (sync) { + process.nextTick(afterWrite, stream, state, finished, cb); + } else { + afterWrite(stream, state, finished, cb); + } + } +} + +function afterWrite(stream, state, finished, cb) { + if (!finished) onwriteDrain(stream, state); + state.pendingcb--; + cb(); + finishMaybe(stream, state); +} // Must force callback to be called on nextTick, so that we don't +// emit 'drain' before the write() consumer gets the 'false' return +// value, and has a chance to attach a 'drain' listener. + + +function onwriteDrain(stream, state) { + if (state.length === 0 && state.needDrain) { + state.needDrain = false; + stream.emit('drain'); + } +} // if there's something in the buffer waiting, then process it + + +function clearBuffer(stream, state) { + state.bufferProcessing = true; + var entry = state.bufferedRequest; + + if (stream._writev && entry && entry.next) { + // Fast case, write everything using _writev() + var l = state.bufferedRequestCount; + var buffer = new Array(l); + var holder = state.corkedRequestsFree; + holder.entry = entry; + var count = 0; + var allBuffers = true; + + while (entry) { + buffer[count] = entry; + if (!entry.isBuf) allBuffers = false; + entry = entry.next; + count += 1; + } + + buffer.allBuffers = allBuffers; + doWrite(stream, state, true, state.length, buffer, '', holder.finish); // doWrite is almost always async, defer these to save a bit of time + // as the hot path ends with doWrite + + state.pendingcb++; + state.lastBufferedRequest = null; + + if (holder.next) { + state.corkedRequestsFree = holder.next; + holder.next = null; + } else { + state.corkedRequestsFree = new CorkedRequest(state); + } + + state.bufferedRequestCount = 0; + } else { + // Slow case, write chunks one-by-one + while (entry) { + var chunk = entry.chunk; + var encoding = entry.encoding; + var cb = entry.callback; + var len = state.objectMode ? 1 : chunk.length; + doWrite(stream, state, false, len, chunk, encoding, cb); + entry = entry.next; + state.bufferedRequestCount--; // if we didn't call the onwrite immediately, then + // it means that we need to wait until it does. + // also, that means that the chunk and cb are currently + // being processed, so move the buffer counter past them. + + if (state.writing) { + break; + } + } + + if (entry === null) state.lastBufferedRequest = null; + } + + state.bufferedRequest = entry; + state.bufferProcessing = false; +} + +Writable.prototype._write = function (chunk, encoding, cb) { + cb(new ERR_METHOD_NOT_IMPLEMENTED('_write()')); +}; + +Writable.prototype._writev = null; + +Writable.prototype.end = function (chunk, encoding, cb) { + var state = this._writableState; + + if (typeof chunk === 'function') { + cb = chunk; + chunk = null; + encoding = null; + } else if (typeof encoding === 'function') { + cb = encoding; + encoding = null; + } + + if (chunk !== null && chunk !== undefined) this.write(chunk, encoding); // .end() fully uncorks + + if (state.corked) { + state.corked = 1; + this.uncork(); + } // ignore unnecessary end() calls. + + + if (!state.ending) endWritable(this, state, cb); + return this; +}; + +Object.defineProperty(Writable.prototype, 'writableLength', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._writableState.length; + } +}); + +function needFinish(state) { + return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing; +} + +function callFinal(stream, state) { + stream._final(function (err) { + state.pendingcb--; + + if (err) { + errorOrDestroy(stream, err); + } + + state.prefinished = true; + stream.emit('prefinish'); + finishMaybe(stream, state); + }); +} + +function prefinish(stream, state) { + if (!state.prefinished && !state.finalCalled) { + if (typeof stream._final === 'function' && !state.destroyed) { + state.pendingcb++; + state.finalCalled = true; + process.nextTick(callFinal, stream, state); + } else { + state.prefinished = true; + stream.emit('prefinish'); + } + } +} + +function finishMaybe(stream, state) { + var need = needFinish(state); + + if (need) { + prefinish(stream, state); + + if (state.pendingcb === 0) { + state.finished = true; + stream.emit('finish'); + + if (state.autoDestroy) { + // In case of duplex streams we need a way to detect + // if the readable side is ready for autoDestroy as well + var rState = stream._readableState; + + if (!rState || rState.autoDestroy && rState.endEmitted) { + stream.destroy(); + } + } + } + } + + return need; +} + +function endWritable(stream, state, cb) { + state.ending = true; + finishMaybe(stream, state); + + if (cb) { + if (state.finished) process.nextTick(cb);else stream.once('finish', cb); + } + + state.ended = true; + stream.writable = false; +} + +function onCorkedFinish(corkReq, state, err) { + var entry = corkReq.entry; + corkReq.entry = null; + + while (entry) { + var cb = entry.callback; + state.pendingcb--; + cb(err); + entry = entry.next; + } // reuse the free corkReq. + + + state.corkedRequestsFree.next = corkReq; +} + +Object.defineProperty(Writable.prototype, 'destroyed', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + if (this._writableState === undefined) { + return false; + } + + return this._writableState.destroyed; + }, + set: function set(value) { + // we ignore the value if the stream + // has not been initialized yet + if (!this._writableState) { + return; + } // backward compatibility, the user is explicitly + // managing destroyed + + + this._writableState.destroyed = value; + } +}); +Writable.prototype.destroy = destroyImpl.destroy; +Writable.prototype._undestroy = destroyImpl.undestroy; + +Writable.prototype._destroy = function (err, cb) { + cb(err); +}; +}).call(this)}).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"../errors":10,"./_stream_duplex":11,"./internal/streams/destroy":18,"./internal/streams/state":22,"./internal/streams/stream":23,"_process":7,"buffer":3,"inherits":6,"util-deprecate":25}],16:[function(require,module,exports){ +(function (process){(function (){ +'use strict'; + +var _Object$setPrototypeO; + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +var finished = require('./end-of-stream'); + +var kLastResolve = Symbol('lastResolve'); +var kLastReject = Symbol('lastReject'); +var kError = Symbol('error'); +var kEnded = Symbol('ended'); +var kLastPromise = Symbol('lastPromise'); +var kHandlePromise = Symbol('handlePromise'); +var kStream = Symbol('stream'); + +function createIterResult(value, done) { + return { + value: value, + done: done + }; +} + +function readAndResolve(iter) { + var resolve = iter[kLastResolve]; + + if (resolve !== null) { + var data = iter[kStream].read(); // we defer if data is null + // we can be expecting either 'end' or + // 'error' + + if (data !== null) { + iter[kLastPromise] = null; + iter[kLastResolve] = null; + iter[kLastReject] = null; + resolve(createIterResult(data, false)); + } + } +} + +function onReadable(iter) { + // we wait for the next tick, because it might + // emit an error with process.nextTick + process.nextTick(readAndResolve, iter); +} + +function wrapForNext(lastPromise, iter) { + return function (resolve, reject) { + lastPromise.then(function () { + if (iter[kEnded]) { + resolve(createIterResult(undefined, true)); + return; + } + + iter[kHandlePromise](resolve, reject); + }, reject); + }; +} + +var AsyncIteratorPrototype = Object.getPrototypeOf(function () {}); +var ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = { + get stream() { + return this[kStream]; + }, + + next: function next() { + var _this = this; + + // if we have detected an error in the meanwhile + // reject straight away + var error = this[kError]; + + if (error !== null) { + return Promise.reject(error); + } + + if (this[kEnded]) { + return Promise.resolve(createIterResult(undefined, true)); + } + + if (this[kStream].destroyed) { + // We need to defer via nextTick because if .destroy(err) is + // called, the error will be emitted via nextTick, and + // we cannot guarantee that there is no error lingering around + // waiting to be emitted. + return new Promise(function (resolve, reject) { + process.nextTick(function () { + if (_this[kError]) { + reject(_this[kError]); + } else { + resolve(createIterResult(undefined, true)); + } + }); + }); + } // if we have multiple next() calls + // we will wait for the previous Promise to finish + // this logic is optimized to support for await loops, + // where next() is only called once at a time + + + var lastPromise = this[kLastPromise]; + var promise; + + if (lastPromise) { + promise = new Promise(wrapForNext(lastPromise, this)); + } else { + // fast path needed to support multiple this.push() + // without triggering the next() queue + var data = this[kStream].read(); + + if (data !== null) { + return Promise.resolve(createIterResult(data, false)); + } + + promise = new Promise(this[kHandlePromise]); + } + + this[kLastPromise] = promise; + return promise; + } +}, _defineProperty(_Object$setPrototypeO, Symbol.asyncIterator, function () { + return this; +}), _defineProperty(_Object$setPrototypeO, "return", function _return() { + var _this2 = this; + + // destroy(err, cb) is a private API + // we can guarantee we have that here, because we control the + // Readable class this is attached to + return new Promise(function (resolve, reject) { + _this2[kStream].destroy(null, function (err) { + if (err) { + reject(err); + return; + } + + resolve(createIterResult(undefined, true)); + }); + }); +}), _Object$setPrototypeO), AsyncIteratorPrototype); + +var createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator(stream) { + var _Object$create; + + var iterator = Object.create(ReadableStreamAsyncIteratorPrototype, (_Object$create = {}, _defineProperty(_Object$create, kStream, { + value: stream, + writable: true + }), _defineProperty(_Object$create, kLastResolve, { + value: null, + writable: true + }), _defineProperty(_Object$create, kLastReject, { + value: null, + writable: true + }), _defineProperty(_Object$create, kError, { + value: null, + writable: true + }), _defineProperty(_Object$create, kEnded, { + value: stream._readableState.endEmitted, + writable: true + }), _defineProperty(_Object$create, kHandlePromise, { + value: function value(resolve, reject) { + var data = iterator[kStream].read(); + + if (data) { + iterator[kLastPromise] = null; + iterator[kLastResolve] = null; + iterator[kLastReject] = null; + resolve(createIterResult(data, false)); + } else { + iterator[kLastResolve] = resolve; + iterator[kLastReject] = reject; + } + }, + writable: true + }), _Object$create)); + iterator[kLastPromise] = null; + finished(stream, function (err) { + if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') { + var reject = iterator[kLastReject]; // reject if we are waiting for data in the Promise + // returned by next() and store the error + + if (reject !== null) { + iterator[kLastPromise] = null; + iterator[kLastResolve] = null; + iterator[kLastReject] = null; + reject(err); + } + + iterator[kError] = err; + return; + } + + var resolve = iterator[kLastResolve]; + + if (resolve !== null) { + iterator[kLastPromise] = null; + iterator[kLastResolve] = null; + iterator[kLastReject] = null; + resolve(createIterResult(undefined, true)); + } + + iterator[kEnded] = true; + }); + stream.on('readable', onReadable.bind(null, iterator)); + return iterator; +}; + +module.exports = createReadableStreamAsyncIterator; +}).call(this)}).call(this,require('_process')) +},{"./end-of-stream":19,"_process":7}],17:[function(require,module,exports){ +'use strict'; + +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } + +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +var _require = require('buffer'), + Buffer = _require.Buffer; + +var _require2 = require('util'), + inspect = _require2.inspect; + +var custom = inspect && inspect.custom || 'inspect'; + +function copyBuffer(src, target, offset) { + Buffer.prototype.copy.call(src, target, offset); +} + +module.exports = +/*#__PURE__*/ +function () { + function BufferList() { + _classCallCheck(this, BufferList); + + this.head = null; + this.tail = null; + this.length = 0; + } + + _createClass(BufferList, [{ + key: "push", + value: function push(v) { + var entry = { + data: v, + next: null + }; + if (this.length > 0) this.tail.next = entry;else this.head = entry; + this.tail = entry; + ++this.length; + } + }, { + key: "unshift", + value: function unshift(v) { + var entry = { + data: v, + next: this.head + }; + if (this.length === 0) this.tail = entry; + this.head = entry; + ++this.length; + } + }, { + key: "shift", + value: function shift() { + if (this.length === 0) return; + var ret = this.head.data; + if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next; + --this.length; + return ret; + } + }, { + key: "clear", + value: function clear() { + this.head = this.tail = null; + this.length = 0; + } + }, { + key: "join", + value: function join(s) { + if (this.length === 0) return ''; + var p = this.head; + var ret = '' + p.data; + + while (p = p.next) { + ret += s + p.data; + } + + return ret; + } + }, { + key: "concat", + value: function concat(n) { + if (this.length === 0) return Buffer.alloc(0); + var ret = Buffer.allocUnsafe(n >>> 0); + var p = this.head; + var i = 0; + + while (p) { + copyBuffer(p.data, ret, i); + i += p.data.length; + p = p.next; + } + + return ret; + } // Consumes a specified amount of bytes or characters from the buffered data. + + }, { + key: "consume", + value: function consume(n, hasStrings) { + var ret; + + if (n < this.head.data.length) { + // `slice` is the same for buffers and strings. + ret = this.head.data.slice(0, n); + this.head.data = this.head.data.slice(n); + } else if (n === this.head.data.length) { + // First chunk is a perfect match. + ret = this.shift(); + } else { + // Result spans more than one buffer. + ret = hasStrings ? this._getString(n) : this._getBuffer(n); + } + + return ret; + } + }, { + key: "first", + value: function first() { + return this.head.data; + } // Consumes a specified amount of characters from the buffered data. + + }, { + key: "_getString", + value: function _getString(n) { + var p = this.head; + var c = 1; + var ret = p.data; + n -= ret.length; + + while (p = p.next) { + var str = p.data; + var nb = n > str.length ? str.length : n; + if (nb === str.length) ret += str;else ret += str.slice(0, n); + n -= nb; + + if (n === 0) { + if (nb === str.length) { + ++c; + if (p.next) this.head = p.next;else this.head = this.tail = null; + } else { + this.head = p; + p.data = str.slice(nb); + } + + break; + } + + ++c; + } + + this.length -= c; + return ret; + } // Consumes a specified amount of bytes from the buffered data. + + }, { + key: "_getBuffer", + value: function _getBuffer(n) { + var ret = Buffer.allocUnsafe(n); + var p = this.head; + var c = 1; + p.data.copy(ret); + n -= p.data.length; + + while (p = p.next) { + var buf = p.data; + var nb = n > buf.length ? buf.length : n; + buf.copy(ret, ret.length - n, 0, nb); + n -= nb; + + if (n === 0) { + if (nb === buf.length) { + ++c; + if (p.next) this.head = p.next;else this.head = this.tail = null; + } else { + this.head = p; + p.data = buf.slice(nb); + } + + break; + } + + ++c; + } + + this.length -= c; + return ret; + } // Make sure the linked list only shows the minimal necessary information. + + }, { + key: custom, + value: function value(_, options) { + return inspect(this, _objectSpread({}, options, { + // Only inspect one level. + depth: 0, + // It should not recurse. + customInspect: false + })); + } + }]); + + return BufferList; +}(); +},{"buffer":3,"util":2}],18:[function(require,module,exports){ +(function (process){(function (){ +'use strict'; // undocumented cb() API, needed for core, not for public API + +function destroy(err, cb) { + var _this = this; + + var readableDestroyed = this._readableState && this._readableState.destroyed; + var writableDestroyed = this._writableState && this._writableState.destroyed; + + if (readableDestroyed || writableDestroyed) { + if (cb) { + cb(err); + } else if (err) { + if (!this._writableState) { + process.nextTick(emitErrorNT, this, err); + } else if (!this._writableState.errorEmitted) { + this._writableState.errorEmitted = true; + process.nextTick(emitErrorNT, this, err); + } + } + + return this; + } // we set destroyed to true before firing error callbacks in order + // to make it re-entrance safe in case destroy() is called within callbacks + + + if (this._readableState) { + this._readableState.destroyed = true; + } // if this is a duplex stream mark the writable part as destroyed as well + + + if (this._writableState) { + this._writableState.destroyed = true; + } + + this._destroy(err || null, function (err) { + if (!cb && err) { + if (!_this._writableState) { + process.nextTick(emitErrorAndCloseNT, _this, err); + } else if (!_this._writableState.errorEmitted) { + _this._writableState.errorEmitted = true; + process.nextTick(emitErrorAndCloseNT, _this, err); + } else { + process.nextTick(emitCloseNT, _this); + } + } else if (cb) { + process.nextTick(emitCloseNT, _this); + cb(err); + } else { + process.nextTick(emitCloseNT, _this); + } + }); + + return this; +} + +function emitErrorAndCloseNT(self, err) { + emitErrorNT(self, err); + emitCloseNT(self); +} + +function emitCloseNT(self) { + if (self._writableState && !self._writableState.emitClose) return; + if (self._readableState && !self._readableState.emitClose) return; + self.emit('close'); +} + +function undestroy() { + if (this._readableState) { + this._readableState.destroyed = false; + this._readableState.reading = false; + this._readableState.ended = false; + this._readableState.endEmitted = false; + } + + if (this._writableState) { + this._writableState.destroyed = false; + this._writableState.ended = false; + this._writableState.ending = false; + this._writableState.finalCalled = false; + this._writableState.prefinished = false; + this._writableState.finished = false; + this._writableState.errorEmitted = false; + } +} + +function emitErrorNT(self, err) { + self.emit('error', err); +} + +function errorOrDestroy(stream, err) { + // We have tests that rely on errors being emitted + // in the same tick, so changing this is semver major. + // For now when you opt-in to autoDestroy we allow + // the error to be emitted nextTick. In a future + // semver major update we should change the default to this. + var rState = stream._readableState; + var wState = stream._writableState; + if (rState && rState.autoDestroy || wState && wState.autoDestroy) stream.destroy(err);else stream.emit('error', err); +} + +module.exports = { + destroy: destroy, + undestroy: undestroy, + errorOrDestroy: errorOrDestroy +}; +}).call(this)}).call(this,require('_process')) +},{"_process":7}],19:[function(require,module,exports){ +// Ported from https://github.com/mafintosh/end-of-stream with +// permission from the author, Mathias Buus (@mafintosh). +'use strict'; + +var ERR_STREAM_PREMATURE_CLOSE = require('../../../errors').codes.ERR_STREAM_PREMATURE_CLOSE; + +function once(callback) { + var called = false; + return function () { + if (called) return; + called = true; + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + callback.apply(this, args); + }; +} + +function noop() {} + +function isRequest(stream) { + return stream.setHeader && typeof stream.abort === 'function'; +} + +function eos(stream, opts, callback) { + if (typeof opts === 'function') return eos(stream, null, opts); + if (!opts) opts = {}; + callback = once(callback || noop); + var readable = opts.readable || opts.readable !== false && stream.readable; + var writable = opts.writable || opts.writable !== false && stream.writable; + + var onlegacyfinish = function onlegacyfinish() { + if (!stream.writable) onfinish(); + }; + + var writableEnded = stream._writableState && stream._writableState.finished; + + var onfinish = function onfinish() { + writable = false; + writableEnded = true; + if (!readable) callback.call(stream); + }; + + var readableEnded = stream._readableState && stream._readableState.endEmitted; + + var onend = function onend() { + readable = false; + readableEnded = true; + if (!writable) callback.call(stream); + }; + + var onerror = function onerror(err) { + callback.call(stream, err); + }; + + var onclose = function onclose() { + var err; + + if (readable && !readableEnded) { + if (!stream._readableState || !stream._readableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE(); + return callback.call(stream, err); + } + + if (writable && !writableEnded) { + if (!stream._writableState || !stream._writableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE(); + return callback.call(stream, err); + } + }; + + var onrequest = function onrequest() { + stream.req.on('finish', onfinish); + }; + + if (isRequest(stream)) { + stream.on('complete', onfinish); + stream.on('abort', onclose); + if (stream.req) onrequest();else stream.on('request', onrequest); + } else if (writable && !stream._writableState) { + // legacy streams + stream.on('end', onlegacyfinish); + stream.on('close', onlegacyfinish); + } + + stream.on('end', onend); + stream.on('finish', onfinish); + if (opts.error !== false) stream.on('error', onerror); + stream.on('close', onclose); + return function () { + stream.removeListener('complete', onfinish); + stream.removeListener('abort', onclose); + stream.removeListener('request', onrequest); + if (stream.req) stream.req.removeListener('finish', onfinish); + stream.removeListener('end', onlegacyfinish); + stream.removeListener('close', onlegacyfinish); + stream.removeListener('finish', onfinish); + stream.removeListener('end', onend); + stream.removeListener('error', onerror); + stream.removeListener('close', onclose); + }; +} + +module.exports = eos; +},{"../../../errors":10}],20:[function(require,module,exports){ +module.exports = function () { + throw new Error('Readable.from is not available in the browser') +}; + +},{}],21:[function(require,module,exports){ +// Ported from https://github.com/mafintosh/pump with +// permission from the author, Mathias Buus (@mafintosh). +'use strict'; + +var eos; + +function once(callback) { + var called = false; + return function () { + if (called) return; + called = true; + callback.apply(void 0, arguments); + }; +} + +var _require$codes = require('../../../errors').codes, + ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS, + ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED; + +function noop(err) { + // Rethrow the error if it exists to avoid swallowing it + if (err) throw err; +} + +function isRequest(stream) { + return stream.setHeader && typeof stream.abort === 'function'; +} + +function destroyer(stream, reading, writing, callback) { + callback = once(callback); + var closed = false; + stream.on('close', function () { + closed = true; + }); + if (eos === undefined) eos = require('./end-of-stream'); + eos(stream, { + readable: reading, + writable: writing + }, function (err) { + if (err) return callback(err); + closed = true; + callback(); + }); + var destroyed = false; + return function (err) { + if (closed) return; + if (destroyed) return; + destroyed = true; // request.destroy just do .end - .abort is what we want + + if (isRequest(stream)) return stream.abort(); + if (typeof stream.destroy === 'function') return stream.destroy(); + callback(err || new ERR_STREAM_DESTROYED('pipe')); + }; +} + +function call(fn) { + fn(); +} + +function pipe(from, to) { + return from.pipe(to); +} + +function popCallback(streams) { + if (!streams.length) return noop; + if (typeof streams[streams.length - 1] !== 'function') return noop; + return streams.pop(); +} + +function pipeline() { + for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) { + streams[_key] = arguments[_key]; + } + + var callback = popCallback(streams); + if (Array.isArray(streams[0])) streams = streams[0]; + + if (streams.length < 2) { + throw new ERR_MISSING_ARGS('streams'); + } + + var error; + var destroys = streams.map(function (stream, i) { + var reading = i < streams.length - 1; + var writing = i > 0; + return destroyer(stream, reading, writing, function (err) { + if (!error) error = err; + if (err) destroys.forEach(call); + if (reading) return; + destroys.forEach(call); + callback(error); + }); + }); + return streams.reduce(pipe); +} + +module.exports = pipeline; +},{"../../../errors":10,"./end-of-stream":19}],22:[function(require,module,exports){ +'use strict'; + +var ERR_INVALID_OPT_VALUE = require('../../../errors').codes.ERR_INVALID_OPT_VALUE; + +function highWaterMarkFrom(options, isDuplex, duplexKey) { + return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null; +} + +function getHighWaterMark(state, options, duplexKey, isDuplex) { + var hwm = highWaterMarkFrom(options, isDuplex, duplexKey); + + if (hwm != null) { + if (!(isFinite(hwm) && Math.floor(hwm) === hwm) || hwm < 0) { + var name = isDuplex ? duplexKey : 'highWaterMark'; + throw new ERR_INVALID_OPT_VALUE(name, hwm); + } + + return Math.floor(hwm); + } // Default value + + + return state.objectMode ? 16 : 16 * 1024; +} + +module.exports = { + getHighWaterMark: getHighWaterMark +}; +},{"../../../errors":10}],23:[function(require,module,exports){ +module.exports = require('events').EventEmitter; + +},{"events":4}],24:[function(require,module,exports){ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +'use strict'; + +/**/ + +var Buffer = require('safe-buffer').Buffer; +/**/ + +var isEncoding = Buffer.isEncoding || function (encoding) { + encoding = '' + encoding; + switch (encoding && encoding.toLowerCase()) { + case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw': + return true; + default: + return false; + } +}; + +function _normalizeEncoding(enc) { + if (!enc) return 'utf8'; + var retried; + while (true) { + switch (enc) { + case 'utf8': + case 'utf-8': + return 'utf8'; + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return 'utf16le'; + case 'latin1': + case 'binary': + return 'latin1'; + case 'base64': + case 'ascii': + case 'hex': + return enc; + default: + if (retried) return; // undefined + enc = ('' + enc).toLowerCase(); + retried = true; + } + } +}; + +// Do not cache `Buffer.isEncoding` when checking encoding names as some +// modules monkey-patch it to support additional encodings +function normalizeEncoding(enc) { + var nenc = _normalizeEncoding(enc); + if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc); + return nenc || enc; +} + +// StringDecoder provides an interface for efficiently splitting a series of +// buffers into a series of JS strings without breaking apart multi-byte +// characters. +exports.StringDecoder = StringDecoder; +function StringDecoder(encoding) { + this.encoding = normalizeEncoding(encoding); + var nb; + switch (this.encoding) { + case 'utf16le': + this.text = utf16Text; + this.end = utf16End; + nb = 4; + break; + case 'utf8': + this.fillLast = utf8FillLast; + nb = 4; + break; + case 'base64': + this.text = base64Text; + this.end = base64End; + nb = 3; + break; + default: + this.write = simpleWrite; + this.end = simpleEnd; + return; + } + this.lastNeed = 0; + this.lastTotal = 0; + this.lastChar = Buffer.allocUnsafe(nb); +} + +StringDecoder.prototype.write = function (buf) { + if (buf.length === 0) return ''; + var r; + var i; + if (this.lastNeed) { + r = this.fillLast(buf); + if (r === undefined) return ''; + i = this.lastNeed; + this.lastNeed = 0; + } else { + i = 0; + } + if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i); + return r || ''; +}; + +StringDecoder.prototype.end = utf8End; + +// Returns only complete characters in a Buffer +StringDecoder.prototype.text = utf8Text; + +// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer +StringDecoder.prototype.fillLast = function (buf) { + if (this.lastNeed <= buf.length) { + buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed); + return this.lastChar.toString(this.encoding, 0, this.lastTotal); + } + buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length); + this.lastNeed -= buf.length; +}; + +// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a +// continuation byte. If an invalid byte is detected, -2 is returned. +function utf8CheckByte(byte) { + if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4; + return byte >> 6 === 0x02 ? -1 : -2; +} + +// Checks at most 3 bytes at the end of a Buffer in order to detect an +// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4) +// needed to complete the UTF-8 character (if applicable) are returned. +function utf8CheckIncomplete(self, buf, i) { + var j = buf.length - 1; + if (j < i) return 0; + var nb = utf8CheckByte(buf[j]); + if (nb >= 0) { + if (nb > 0) self.lastNeed = nb - 1; + return nb; + } + if (--j < i || nb === -2) return 0; + nb = utf8CheckByte(buf[j]); + if (nb >= 0) { + if (nb > 0) self.lastNeed = nb - 2; + return nb; + } + if (--j < i || nb === -2) return 0; + nb = utf8CheckByte(buf[j]); + if (nb >= 0) { + if (nb > 0) { + if (nb === 2) nb = 0;else self.lastNeed = nb - 3; + } + return nb; + } + return 0; +} + +// Validates as many continuation bytes for a multi-byte UTF-8 character as +// needed or are available. If we see a non-continuation byte where we expect +// one, we "replace" the validated continuation bytes we've seen so far with +// a single UTF-8 replacement character ('\ufffd'), to match v8's UTF-8 decoding +// behavior. The continuation byte check is included three times in the case +// where all of the continuation bytes for a character exist in the same buffer. +// It is also done this way as a slight performance increase instead of using a +// loop. +function utf8CheckExtraBytes(self, buf, p) { + if ((buf[0] & 0xC0) !== 0x80) { + self.lastNeed = 0; + return '\ufffd'; + } + if (self.lastNeed > 1 && buf.length > 1) { + if ((buf[1] & 0xC0) !== 0x80) { + self.lastNeed = 1; + return '\ufffd'; + } + if (self.lastNeed > 2 && buf.length > 2) { + if ((buf[2] & 0xC0) !== 0x80) { + self.lastNeed = 2; + return '\ufffd'; + } + } + } +} + +// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer. +function utf8FillLast(buf) { + var p = this.lastTotal - this.lastNeed; + var r = utf8CheckExtraBytes(this, buf, p); + if (r !== undefined) return r; + if (this.lastNeed <= buf.length) { + buf.copy(this.lastChar, p, 0, this.lastNeed); + return this.lastChar.toString(this.encoding, 0, this.lastTotal); + } + buf.copy(this.lastChar, p, 0, buf.length); + this.lastNeed -= buf.length; +} + +// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a +// partial character, the character's bytes are buffered until the required +// number of bytes are available. +function utf8Text(buf, i) { + var total = utf8CheckIncomplete(this, buf, i); + if (!this.lastNeed) return buf.toString('utf8', i); + this.lastTotal = total; + var end = buf.length - (total - this.lastNeed); + buf.copy(this.lastChar, 0, end); + return buf.toString('utf8', i, end); +} + +// For UTF-8, a replacement character is added when ending on a partial +// character. +function utf8End(buf) { + var r = buf && buf.length ? this.write(buf) : ''; + if (this.lastNeed) return r + '\ufffd'; + return r; +} + +// UTF-16LE typically needs two bytes per character, but even if we have an even +// number of bytes available, we need to check if we end on a leading/high +// surrogate. In that case, we need to wait for the next two bytes in order to +// decode the last character properly. +function utf16Text(buf, i) { + if ((buf.length - i) % 2 === 0) { + var r = buf.toString('utf16le', i); + if (r) { + var c = r.charCodeAt(r.length - 1); + if (c >= 0xD800 && c <= 0xDBFF) { + this.lastNeed = 2; + this.lastTotal = 4; + this.lastChar[0] = buf[buf.length - 2]; + this.lastChar[1] = buf[buf.length - 1]; + return r.slice(0, -1); + } + } + return r; + } + this.lastNeed = 1; + this.lastTotal = 2; + this.lastChar[0] = buf[buf.length - 1]; + return buf.toString('utf16le', i, buf.length - 1); +} + +// For UTF-16LE we do not explicitly append special replacement characters if we +// end on a partial character, we simply let v8 handle that. +function utf16End(buf) { + var r = buf && buf.length ? this.write(buf) : ''; + if (this.lastNeed) { + var end = this.lastTotal - this.lastNeed; + return r + this.lastChar.toString('utf16le', 0, end); + } + return r; +} + +function base64Text(buf, i) { + var n = (buf.length - i) % 3; + if (n === 0) return buf.toString('base64', i); + this.lastNeed = 3 - n; + this.lastTotal = 3; + if (n === 1) { + this.lastChar[0] = buf[buf.length - 1]; + } else { + this.lastChar[0] = buf[buf.length - 2]; + this.lastChar[1] = buf[buf.length - 1]; + } + return buf.toString('base64', i, buf.length - n); +} + +function base64End(buf) { + var r = buf && buf.length ? this.write(buf) : ''; + if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed); + return r; +} + +// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex) +function simpleWrite(buf) { + return buf.toString(this.encoding); +} + +function simpleEnd(buf) { + return buf && buf.length ? this.write(buf) : ''; +} +},{"safe-buffer":8}],25:[function(require,module,exports){ +(function (global){(function (){ + +/** + * Module exports. + */ + +module.exports = deprecate; + +/** + * Mark that a method should not be used. + * Returns a modified function which warns once by default. + * + * If `localStorage.noDeprecation = true` is set, then it is a no-op. + * + * If `localStorage.throwDeprecation = true` is set, then deprecated functions + * will throw an Error when invoked. + * + * If `localStorage.traceDeprecation = true` is set, then deprecated functions + * will invoke `console.trace()` instead of `console.error()`. + * + * @param {Function} fn - the function to deprecate + * @param {String} msg - the string to print to the console when `fn` is invoked + * @returns {Function} a new "deprecated" version of `fn` + * @api public + */ + +function deprecate (fn, msg) { + if (config('noDeprecation')) { + return fn; + } + + var warned = false; + function deprecated() { + if (!warned) { + if (config('throwDeprecation')) { + throw new Error(msg); + } else if (config('traceDeprecation')) { + console.trace(msg); + } else { + console.warn(msg); + } + warned = true; + } + return fn.apply(this, arguments); + } + + return deprecated; +} + +/** + * Checks `localStorage` for boolean values for the given `name`. + * + * @param {String} name + * @returns {Boolean} + * @api private + */ + +function config (name) { + // accessing global.localStorage can trigger a DOMException in sandboxed iframes + try { + if (!global.localStorage) return false; + } catch (_) { + return false; + } + var val = global.localStorage[name]; + if (null == val) return false; + return String(val).toLowerCase() === 'true'; +} + +}).call(this)}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{}],26:[function(require,module,exports){ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +var FlatModule_1 = require("./FlatModule"); +var YosysModel_1 = require("./YosysModel"); +var Skin_1 = require("./Skin"); +var Port_1 = require("./Port"); +var _ = require("lodash"); +var clone = require("clone"); +var onml = require("onml"); +var Cell = /** @class */ (function () { + function Cell(key, type, inputPorts, outputPorts, attributes) { + var _this = this; + this.key = key; + this.type = type; + this.inputPorts = inputPorts; + this.outputPorts = outputPorts; + this.attributes = attributes || {}; + inputPorts.forEach(function (ip) { + ip.parentNode = _this; + }); + outputPorts.forEach(function (op) { + op.parentNode = _this; + }); + } + /** + * creates a Cell from a Yosys Port + * @param yPort the Yosys Port with our port data + * @param name the name of the port + */ + Cell.fromPort = function (yPort, name) { + var isInput = yPort.direction === YosysModel_1.default.Direction.Input; + if (isInput) { + return new Cell(name, '$_inputExt_', [], [new Port_1.Port('Y', yPort.bits)], {}); + } + return new Cell(name, '$_outputExt_', [new Port_1.Port('A', yPort.bits)], [], {}); + }; + Cell.fromYosysCell = function (yCell, name) { + this.setAlternateCellType(yCell); + var template = Skin_1.default.findSkinType(yCell.type); + var templateInputPids = Skin_1.default.getInputPids(template); + var templateOutputPids = Skin_1.default.getOutputPids(template); + var ports = _.map(yCell.connections, function (conn, portName) { + return new Port_1.Port(portName, conn); + }); + var inputPorts = ports.filter(function (port) { return port.keyIn(templateInputPids); }); + var outputPorts = ports.filter(function (port) { return port.keyIn(templateOutputPids); }); + if (inputPorts.length + outputPorts.length !== ports.length) { + var inputPids_1 = YosysModel_1.default.getInputPortPids(yCell); + var outputPids_1 = YosysModel_1.default.getOutputPortPids(yCell); + inputPorts = ports.filter(function (port) { return port.keyIn(inputPids_1); }); + outputPorts = ports.filter(function (port) { return port.keyIn(outputPids_1); }); + } + return new Cell(name, yCell.type, inputPorts, outputPorts, yCell.attributes); + }; + Cell.fromConstantInfo = function (name, constants) { + return new Cell(name, '$_constant_', [], [new Port_1.Port('Y', constants)], {}); + }; + /** + * creates a join cell + * @param target string name of net (starts and ends with and delimited by commas) + * @param sources list of index strings (one number, or two numbers separated by a colon) + */ + Cell.fromJoinInfo = function (target, sources) { + var signalStrs = target.slice(1, -1).split(','); + var signals = signalStrs.map(function (ss) { return Number(ss); }); + var joinOutPorts = [new Port_1.Port('Y', signals)]; + var inPorts = sources.map(function (name) { + return new Port_1.Port(name, getBits(signals, name)); + }); + return new Cell('$join$' + target, '$_join_', inPorts, joinOutPorts, {}); + }; + /** + * creates a split cell + * @param source string name of net (starts and ends with and delimited by commas) + * @param targets list of index strings (one number, or two numbers separated by a colon) + */ + Cell.fromSplitInfo = function (source, targets) { + // turn string into array of signal names + var sigStrs = source.slice(1, -1).split(','); + // convert the signals into actual numbers + // after running constant pass, all signals should be numbers + var signals = sigStrs.map(function (s) { return Number(s); }); + var inPorts = [new Port_1.Port('A', signals)]; + var splitOutPorts = targets.map(function (name) { + var sigs = getBits(signals, name); + return new Port_1.Port(name, sigs); + }); + return new Cell('$split$' + source, '$_split_', inPorts, splitOutPorts, {}); + }; + // Set cells to alternate types/tags based on their parameters + Cell.setAlternateCellType = function (yCell) { + if ('parameters' in yCell) { + // if it has a WIDTH parameter greater than one + // and doesn't have an address parameter (not a memory cell) + if ('WIDTH' in yCell.parameters && + yCell.parameters.WIDTH > 1 && + !('ADDR' in yCell.parameters)) { + // turn into a bus version + yCell.type = yCell.type + '-bus'; + } + } + }; + Object.defineProperty(Cell.prototype, "Type", { + get: function () { + return this.type; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(Cell.prototype, "Key", { + get: function () { + return this.key; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(Cell.prototype, "InputPorts", { + get: function () { + return this.inputPorts; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(Cell.prototype, "OutputPorts", { + get: function () { + return this.outputPorts; + }, + enumerable: false, + configurable: true + }); + Cell.prototype.maxOutVal = function (atLeast) { + var maxVal = _.max(this.outputPorts.map(function (op) { return op.maxVal(); })); + return _.max([maxVal, atLeast]); + }; + Cell.prototype.findConstants = function (sigsByConstantName, maxNum, constantCollector) { + this.inputPorts.forEach(function (ip) { + maxNum = ip.findConstants(sigsByConstantName, maxNum, constantCollector); + }); + return maxNum; + }; + Cell.prototype.inputPortVals = function () { + return this.inputPorts.map(function (port) { return port.valString(); }); + }; + Cell.prototype.outputPortVals = function () { + return this.outputPorts.map(function (port) { return port.valString(); }); + }; + Cell.prototype.collectPortsByDirection = function (ridersByNet, driversByNet, lateralsByNet, genericsLaterals) { + var template = Skin_1.default.findSkinType(this.type); + var lateralPids = Skin_1.default.getLateralPortPids(template); + // find all ports connected to the same net + this.inputPorts.forEach(function (port) { + var isLateral = port.keyIn(lateralPids); + if (isLateral || (template[1]['s:type'] === 'generic' && genericsLaterals)) { + FlatModule_1.addToDefaultDict(lateralsByNet, port.valString(), port); + } + else { + FlatModule_1.addToDefaultDict(ridersByNet, port.valString(), port); + } + }); + this.outputPorts.forEach(function (port) { + var isLateral = port.keyIn(lateralPids); + if (isLateral || (template[1]['s:type'] === 'generic' && genericsLaterals)) { + FlatModule_1.addToDefaultDict(lateralsByNet, port.valString(), port); + } + else { + FlatModule_1.addToDefaultDict(driversByNet, port.valString(), port); + } + }); + }; + Cell.prototype.getValueAttribute = function () { + if (this.attributes && this.attributes.value) { + return this.attributes.value; + } + return null; + }; + Cell.prototype.getTemplate = function () { + return Skin_1.default.findSkinType(this.type); + }; + Cell.prototype.buildElkChild = function () { + var _this = this; + var template = this.getTemplate(); + var type = template[1]['s:type']; + var layoutAttrs = { 'org.eclipse.elk.portConstraints': 'FIXED_POS' }; + var fixedPosX = null; + var fixedPosY = null; + for (var attr in this.attributes) { + if (attr.startsWith('org.eclipse.elk')) { + if (attr === 'org.eclipse.elk.x') { + fixedPosX = this.attributes[attr]; + continue; + } + if (attr === 'org.eclipse.elk.y') { + fixedPosY = this.attributes[attr]; + continue; + } + layoutAttrs[attr] = this.attributes[attr]; + } + } + if (type === 'join' || + type === 'split' || + type === 'generic') { + var inTemplates_1 = Skin_1.default.getPortsWithPrefix(template, 'in'); + var outTemplates_1 = Skin_1.default.getPortsWithPrefix(template, 'out'); + var inPorts = this.inputPorts.map(function (ip, i) { + return ip.getGenericElkPort(i, inTemplates_1, 'in'); + }); + var outPorts = this.outputPorts.map(function (op, i) { + return op.getGenericElkPort(i, outTemplates_1, 'out'); + }); + var cell = { + id: this.key, + width: Number(template[1]['s:width']), + height: Number(this.getGenericHeight()), + ports: inPorts.concat(outPorts), + layoutOptions: layoutAttrs, + labels: [], + }; + if (fixedPosX) { + cell.x = fixedPosX; + } + if (fixedPosY) { + cell.y = fixedPosY; + } + this.addLabels(template, cell); + return cell; + } + var ports = Skin_1.default.getPortsWithPrefix(template, '').map(function (tp) { + return { + id: _this.key + '.' + tp[1]['s:pid'], + width: 0, + height: 0, + x: Number(tp[1]['s:x']), + y: Number(tp[1]['s:y']), + }; + }); + var nodeWidth = Number(template[1]['s:width']); + var ret = { + id: this.key, + width: nodeWidth, + height: Number(template[1]['s:height']), + ports: ports, + layoutOptions: layoutAttrs, + labels: [], + }; + if (fixedPosX) { + ret.x = fixedPosX; + } + if (fixedPosY) { + ret.y = fixedPosY; + } + this.addLabels(template, ret); + return ret; + }; + Cell.prototype.render = function (cell) { + var template = this.getTemplate(); + var tempclone = clone(template); + for (var _i = 0, _a = cell.labels; _i < _a.length; _i++) { + var label = _a[_i]; + var labelIDSplit = label.id.split('.'); + var attrName = labelIDSplit[labelIDSplit.length - 1]; + setTextAttribute(tempclone, attrName, label.text); + } + for (var i = 2; i < tempclone.length; i++) { + var node = tempclone[i]; + if (node[0] === 'text' && node[1]['s:attribute']) { + var attrib = node[1]['s:attribute']; + if (!(attrib in this.attributes)) { + node[2] = ''; + } + } + } + tempclone[1].id = 'cell_' + this.key; + tempclone[1].transform = 'translate(' + cell.x + ',' + cell.y + ')'; + if (this.type === '$_split_') { + setGenericSize(tempclone, Number(this.getGenericHeight())); + var outPorts_1 = Skin_1.default.getPortsWithPrefix(template, 'out'); + var gap_1 = Number(outPorts_1[1][1]['s:y']) - Number(outPorts_1[0][1]['s:y']); + var startY_1 = Number(outPorts_1[0][1]['s:y']); + tempclone.pop(); + tempclone.pop(); + this.outputPorts.forEach(function (op, i) { + var portClone = clone(outPorts_1[0]); + portClone[portClone.length - 1][2] = op.Key; + portClone[1].transform = 'translate(' + outPorts_1[1][1]['s:x'] + ',' + + (startY_1 + i * gap_1) + ')'; + tempclone.push(portClone); + }); + } + else if (this.type === '$_join_') { + setGenericSize(tempclone, Number(this.getGenericHeight())); + var inPorts_1 = Skin_1.default.getPortsWithPrefix(template, 'in'); + var gap_2 = Number(inPorts_1[1][1]['s:y']) - Number(inPorts_1[0][1]['s:y']); + var startY_2 = Number(inPorts_1[0][1]['s:y']); + tempclone.pop(); + tempclone.pop(); + this.inputPorts.forEach(function (port, i) { + var portClone = clone(inPorts_1[0]); + portClone[portClone.length - 1][2] = port.Key; + portClone[1].transform = 'translate(' + inPorts_1[1][1]['s:x'] + ',' + + (startY_2 + i * gap_2) + ')'; + tempclone.push(portClone); + }); + } + else if (template[1]['s:type'] === 'generic') { + setGenericSize(tempclone, Number(this.getGenericHeight())); + var inPorts_2 = Skin_1.default.getPortsWithPrefix(template, 'in'); + var ingap_1 = Number(inPorts_2[1][1]['s:y']) - Number(inPorts_2[0][1]['s:y']); + var instartY_1 = Number(inPorts_2[0][1]['s:y']); + var outPorts_2 = Skin_1.default.getPortsWithPrefix(template, 'out'); + var outgap_1 = Number(outPorts_2[1][1]['s:y']) - Number(outPorts_2[0][1]['s:y']); + var outstartY_1 = Number(outPorts_2[0][1]['s:y']); + tempclone.pop(); + tempclone.pop(); + tempclone.pop(); + tempclone.pop(); + this.inputPorts.forEach(function (port, i) { + var portClone = clone(inPorts_2[0]); + portClone[portClone.length - 1][2] = port.Key; + portClone[1].transform = 'translate(' + inPorts_2[1][1]['s:x'] + ',' + + (instartY_1 + i * ingap_1) + ')'; + portClone[1].id = 'port_' + port.parentNode.Key + '~' + port.Key; + tempclone.push(portClone); + }); + this.outputPorts.forEach(function (port, i) { + var portClone = clone(outPorts_2[0]); + portClone[portClone.length - 1][2] = port.Key; + portClone[1].transform = 'translate(' + outPorts_2[1][1]['s:x'] + ',' + + (outstartY_1 + i * outgap_1) + ')'; + portClone[1].id = 'port_' + port.parentNode.Key + '~' + port.Key; + tempclone.push(portClone); + }); + // first child of generic must be a text node. + tempclone[2][2] = this.type; + } + setClass(tempclone, '$cell_id', 'cell_' + this.key); + return tempclone; + }; + Cell.prototype.addLabels = function (template, cell) { + var _this = this; + onml.traverse(template, { + enter: function (node) { + if (node.name === 'text' && node.attr['s:attribute']) { + var attrName = node.attr['s:attribute']; + var newString = void 0; + if (attrName === 'ref' || attrName === 'id') { + if (_this.type === '$_constant_' && _this.key.length > 3) { + var num = parseInt(_this.key, 2); + newString = '0x' + num.toString(16); + } + else { + newString = _this.key; + } + _this.attributes[attrName] = _this.key; + } + else if (attrName in _this.attributes) { + newString = _this.attributes[attrName]; + } + else { + return; + } + cell.labels.push({ + id: _this.key + '.label.' + attrName, + text: newString, + x: node.attr.x, + y: node.attr.y - 6, + height: 11, + width: (6 * newString.length), + }); + } + }, + }); + }; + Cell.prototype.getGenericHeight = function () { + var template = this.getTemplate(); + var inPorts = Skin_1.default.getPortsWithPrefix(template, 'in'); + var outPorts = Skin_1.default.getPortsWithPrefix(template, 'out'); + if (this.inputPorts.length > this.outputPorts.length) { + var gap = Number(inPorts[1][1]['s:y']) - Number(inPorts[0][1]['s:y']); + return Number(template[1]['s:height']) + gap * (this.inputPorts.length - 2); + } + if (outPorts.length > 1) { + var gap = Number(outPorts[1][1]['s:y']) - Number(outPorts[0][1]['s:y']); + return Number(template[1]['s:height']) + gap * (this.outputPorts.length - 2); + } + return Number(template[1]['s:height']); + }; + return Cell; +}()); +exports.default = Cell; +function setGenericSize(tempclone, height) { + onml.traverse(tempclone, { + enter: function (node) { + if (node.name === 'rect' && node.attr['s:generic'] === 'body') { + node.attr.height = height; + } + }, + }); +} +function setTextAttribute(tempclone, attribute, value) { + onml.traverse(tempclone, { + enter: function (node) { + if (node.name === 'text' && node.attr['s:attribute'] === attribute) { + node.full[2] = value; + } + }, + }); +} +function setClass(tempclone, searchKey, className) { + onml.traverse(tempclone, { + enter: function (node) { + var currentClass = node.attr.class; + if (currentClass && currentClass.includes(searchKey)) { + node.attr.class = currentClass.replace(searchKey, className); + } + }, + }); +} +function getBits(signals, indicesString) { + var index = indicesString.indexOf(':'); + // is it the whole thing? + if (index === -1) { + return [signals[Number(indicesString)]]; + } + else { + var start = indicesString.slice(0, index); + var end = indicesString.slice(index + 1); + var slice = signals.slice(Number(start), Number(end) + 1); + return slice; + } +} + +},{"./FlatModule":27,"./Port":28,"./Skin":29,"./YosysModel":30,"clone":98,"lodash":102,"onml":104}],27:[function(require,module,exports){ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.removeDups = exports.addToDefaultDict = exports.arrayToBitstring = exports.FlatModule = void 0; +var Skin_1 = require("./Skin"); +var Cell_1 = require("./Cell"); +var _ = require("lodash"); +var FlatModule = /** @class */ (function () { + function FlatModule(netlist) { + var _this = this; + this.moduleName = null; + _.forEach(netlist.modules, function (mod, name) { + if (mod.attributes && Number(mod.attributes.top) === 1) { + _this.moduleName = name; + } + }); + // Otherwise default the first one in the file... + if (this.moduleName == null) { + + this.moduleName = Object.keys(netlist.modules)[0]; + } + var top = netlist.modules[this.moduleName]; + var ports = _.map(top.ports, Cell_1.default.fromPort); + var cells = _.map(top.cells, function (c, key) { return Cell_1.default.fromYosysCell(c, key); }); + this.nodes = cells.concat(ports); + // populated by createWires + this.wires = []; + } + // converts input ports with constant assignments to constant nodes + FlatModule.prototype.addConstants = function () { + // find the maximum signal number + var maxNum = this.nodes.reduce((function (acc, v) { return v.maxOutVal(acc); }), -1); + // add constants to nodes + var signalsByConstantName = {}; + var cells = []; + this.nodes.forEach(function (n) { + maxNum = n.findConstants(signalsByConstantName, maxNum, cells); + }); + this.nodes = this.nodes.concat(cells); + }; + // solves for minimal bus splits and joins and adds them to module + FlatModule.prototype.addSplitsJoins = function () { + var allInputs = _.flatMap(this.nodes, function (n) { return n.inputPortVals(); }); + var allOutputs = _.flatMap(this.nodes, function (n) { return n.outputPortVals(); }); + var allInputsCopy = allInputs.slice(); + var splits = {}; + var joins = {}; + allInputs.forEach(function (input) { + gather(allOutputs, allInputsCopy, input, 0, input.length, splits, joins); + }); + this.nodes = this.nodes.concat(_.map(joins, function (joinOutput, joinInputs) { + return Cell_1.default.fromJoinInfo(joinInputs, joinOutput); + })).concat(_.map(splits, function (splitOutputs, splitInput) { + return Cell_1.default.fromSplitInfo(splitInput, splitOutputs); + })); + }; + // search through all the ports to find all of the wires + FlatModule.prototype.createWires = function () { + var layoutProps = Skin_1.default.getProperties(); + var ridersByNet = {}; + var driversByNet = {}; + var lateralsByNet = {}; + this.nodes.forEach(function (n) { + n.collectPortsByDirection(ridersByNet, driversByNet, lateralsByNet, layoutProps.genericsLaterals); + }); + // list of unique nets + var nets = removeDups(_.keys(ridersByNet).concat(_.keys(driversByNet)).concat(_.keys(lateralsByNet))); + var wires = nets.map(function (net) { + var drivers = driversByNet[net] || []; + var riders = ridersByNet[net] || []; + var laterals = lateralsByNet[net] || []; + var wire = { netName: net, drivers: drivers, riders: riders, laterals: laterals }; + drivers.concat(riders).concat(laterals).forEach(function (port) { + port.wire = wire; + }); + return wire; + }); + this.wires = wires; + }; + return FlatModule; +}()); +exports.FlatModule = FlatModule; +// returns a string that represents the values of the array of integers +// [1, 2, 3] -> ',1,2,3,' +function arrayToBitstring(bitArray) { + var ret = ''; + bitArray.forEach(function (bit) { + var sbit = String(bit); + if (ret === '') { + ret = sbit; + } + else { + ret += ',' + sbit; + } + }); + return ',' + ret + ','; +} +exports.arrayToBitstring = arrayToBitstring; +// returns whether needle is a substring of haystack +function arrayContains(needle, haystack) { + return (haystack.indexOf(needle) > -1); +} +// returns the index of the string that contains a substring +// given arrhaystack, an array of strings +function indexOfContains(needle, arrhaystack) { + return _.findIndex(arrhaystack, function (haystack) { + return arrayContains(needle, haystack); + }); +} +function addToDefaultDict(dict, key, value) { + if (dict[key] === undefined) { + dict[key] = [value]; + } + else { + dict[key].push(value); + } +} +exports.addToDefaultDict = addToDefaultDict; +// string (for labels), that represents an index +// or range of indices. +function getIndicesString(bitstring, query, start) { + var splitStart = _.max([bitstring.indexOf(query), start]); + var startIndex = bitstring.substring(0, splitStart).split(',').length - 1; + var endIndex = startIndex + query.split(',').length - 3; + if (startIndex === endIndex) { + return String(startIndex); + } + else { + return String(startIndex) + ':' + String(endIndex); + } +} +// gather splits and joins +function gather(inputs, // all inputs +outputs, // all outputs +toSolve, // an input array we are trying to solve +start, // index of toSolve to start from +end, // index of toSolve to end at +splits, // container collecting the splits +joins) { + // remove myself from outputs list if present + var outputIndex = outputs.indexOf(toSolve); + if (outputIndex !== -1) { + outputs.splice(outputIndex, 1); + } + // This toSolve is compconste + if (start >= toSolve.length || end - start < 2) { + return; + } + var query = toSolve.slice(start, end); + // are there are perfect matches? + if (arrayContains(query, inputs)) { + if (query !== toSolve) { + addToDefaultDict(joins, toSolve, getIndicesString(toSolve, query, start)); + } + gather(inputs, outputs, toSolve, end - 1, toSolve.length, splits, joins); + return; + } + var index = indexOfContains(query, inputs); + // are there any partial matches? + if (index !== -1) { + if (query !== toSolve) { + addToDefaultDict(joins, toSolve, getIndicesString(toSolve, query, start)); + } + // found a split + addToDefaultDict(splits, inputs[index], getIndicesString(inputs[index], query, 0)); + // we can match to this now + inputs.push(query); + gather(inputs, outputs, toSolve, end - 1, toSolve.length, splits, joins); + return; + } + // are there any output matches? + if (indexOfContains(query, outputs) !== -1) { + if (query !== toSolve) { + // add to join + addToDefaultDict(joins, toSolve, getIndicesString(toSolve, query, start)); + } + // gather without outputs + gather(inputs, [], query, 0, query.length, splits, joins); + inputs.push(query); + return; + } + gather(inputs, outputs, toSolve, start, start + query.slice(0, -1).lastIndexOf(',') + 1, splits, joins); +} +function removeDups(inStrs) { + var map = {}; + inStrs.forEach(function (str) { + map[str] = true; + }); + return _.keys(map); +} +exports.removeDups = removeDups; + +},{"./Cell":26,"./Skin":29,"lodash":102}],28:[function(require,module,exports){ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Port = void 0; +var Cell_1 = require("./Cell"); +var _ = require("lodash"); +var Port = /** @class */ (function () { + function Port(key, value) { + this.key = key; + this.value = value; + } + Object.defineProperty(Port.prototype, "Key", { + get: function () { + return this.key; + }, + enumerable: false, + configurable: true + }); + Port.prototype.keyIn = function (pids) { + return _.includes(pids, this.key); + }; + Port.prototype.maxVal = function () { + return _.max(_.map(this.value, function (v) { return Number(v); })); + }; + Port.prototype.valString = function () { + return ',' + this.value.join() + ','; + }; + Port.prototype.findConstants = function (sigsByConstantName, maxNum, constantCollector) { + var _this = this; + var constNameCollector = ''; + var constNumCollector = []; + var portSigs = this.value; + portSigs.forEach(function (portSig, portSigIndex) { + // is constant? + if (portSig === '0' || portSig === '1') { + maxNum += 1; + constNameCollector += portSig; + // replace the constant with new signal num + portSigs[portSigIndex] = maxNum; + constNumCollector.push(maxNum); + // string of constants ended before end of p.value + } + else if (constNumCollector.length > 0) { + _this.assignConstant(constNameCollector, constNumCollector, portSigIndex, sigsByConstantName, constantCollector); + // reset name and num collectors + constNameCollector = ''; + constNumCollector = []; + } + }); + if (constNumCollector.length > 0) { + this.assignConstant(constNameCollector, constNumCollector, portSigs.length, sigsByConstantName, constantCollector); + } + return maxNum; + }; + Port.prototype.getGenericElkPort = function (index, templatePorts, dir) { + var nkey = this.parentNode.Key; + var type = this.parentNode.getTemplate()[1]['s:type']; + if (index === 0) { + var ret = { + id: nkey + '.' + this.key, + width: 1, + height: 1, + x: Number(templatePorts[0][1]['s:x']), + y: Number(templatePorts[0][1]['s:y']), + }; + if ((type === 'generic' || type === 'join') && dir === 'in') { + ret.labels = [{ + id: nkey + '.' + this.key + '.label', + text: this.key, + x: Number(templatePorts[0][2][1].x) - 10, + y: Number(templatePorts[0][2][1].y) - 6, + width: (6 * this.key.length), + height: 11, + }]; + } + if ((type === 'generic' || type === 'split') && dir === 'out') { + ret.labels = [{ + id: nkey + '.' + this.key + '.label', + text: this.key, + x: Number(templatePorts[0][2][1].x) - 10, + y: Number(templatePorts[0][2][1].y) - 6, + width: (6 * this.key.length), + height: 11, + }]; + } + return ret; + } + else { + var gap = Number(templatePorts[1][1]['s:y']) - Number(templatePorts[0][1]['s:y']); + var ret = { + id: nkey + '.' + this.key, + width: 1, + height: 1, + x: Number(templatePorts[0][1]['s:x']), + y: (index) * gap + Number(templatePorts[0][1]['s:y']), + }; + if (type === 'generic') { + ret.labels = [{ + id: nkey + '.' + this.key + '.label', + text: this.key, + x: Number(templatePorts[0][2][1].x) - 10, + y: Number(templatePorts[0][2][1].y) - 6, + width: (6 * this.key.length), + height: 11, + }]; + } + return ret; + } + }; + Port.prototype.assignConstant = function (nameCollector, constants, currIndex, signalsByConstantName, constantCollector) { + var _this = this; + // we've been appending to nameCollector, so reverse to get const name + var constName = nameCollector.split('').reverse().join(''); + // if the constant has already been used + if (signalsByConstantName.hasOwnProperty(constName)) { + var constSigs = signalsByConstantName[constName]; + // go back and fix signal values + var constLength_1 = constSigs.length; + constSigs.forEach(function (constSig, constIndex) { + // i is where in port_signals we need to update + var i = currIndex - constLength_1 + constIndex; + _this.value[i] = constSig; + }); + } + else { + constantCollector.push(Cell_1.default.fromConstantInfo(constName, constants)); + signalsByConstantName[constName] = constants; + } + }; + return Port; +}()); +exports.Port = Port; + +},{"./Cell":26,"lodash":102}],29:[function(require,module,exports){ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Skin = void 0; +var onml = require("onml"); +var _ = require("lodash"); +var Skin; +(function (Skin) { + Skin.skin = null; + function getPortsWithPrefix(template, prefix) { + var ports = _.filter(template, function (e) { + try { + if (e instanceof Array && e[0] === 'g') { + return e[1]['s:pid'].startsWith(prefix); + } + } + catch (exception) { + // Do nothing if the SVG group doesn't have a pin id. + } + }); + return ports; + } + Skin.getPortsWithPrefix = getPortsWithPrefix; + function filterPortPids(template, filter) { + var ports = _.filter(template, function (element) { + var tag = element[0]; + if (element instanceof Array && tag === 'g') { + var attrs = element[1]; + return filter(attrs); + } + return false; + }); + return ports.map(function (port) { + return port[1]['s:pid']; + }); + } + function getInputPids(template) { + return filterPortPids(template, function (attrs) { + if (attrs['s:position']) { + return attrs['s:position'] === 'top'; + } + return false; + }); + } + Skin.getInputPids = getInputPids; + function getOutputPids(template) { + return filterPortPids(template, function (attrs) { + if (attrs['s:position']) { + return attrs['s:position'] === 'bottom'; + } + return false; + }); + } + Skin.getOutputPids = getOutputPids; + function getLateralPortPids(template) { + return filterPortPids(template, function (attrs) { + if (attrs['s:dir']) { + return attrs['s:dir'] === 'lateral'; + } + if (attrs['s:position']) { + return attrs['s:position'] === 'left' || + attrs['s:position'] === 'right'; + } + return false; + }); + } + Skin.getLateralPortPids = getLateralPortPids; + function findSkinType(type) { + var ret = null; + onml.traverse(Skin.skin, { + enter: function (node, parent) { + if (node.name === 's:alias' && node.attr.val === type) { + ret = parent; + } + }, + }); + if (ret == null) { + onml.traverse(Skin.skin, { + enter: function (node) { + if (node.attr['s:type'] === 'generic') { + ret = node; + } + }, + }); + } + return ret.full; + } + Skin.findSkinType = findSkinType; + function getLowPriorityAliases() { + var ret = []; + onml.t(Skin.skin, { + enter: function (node) { + if (node.name === 's:low_priority_alias') { + ret.push(node.attr.value); + } + }, + }); + return ret; + } + Skin.getLowPriorityAliases = getLowPriorityAliases; + function getProperties() { + var vals; + onml.t(Skin.skin, { + enter: function (node) { + if (node.name === 's:properties') { + vals = _.mapValues(node.attr, function (val) { + if (!isNaN(Number(val))) { + return Number(val); + } + if (val === 'true') { + return true; + } + if (val === 'false') { + return false; + } + return val; + }); + } + else if (node.name === 's:layoutEngine') { + vals.layoutEngine = node.attr; + } + }, + }); + if (!vals.layoutEngine) { + vals.layoutEngine = {}; + } + return vals; + } + Skin.getProperties = getProperties; +})(Skin = exports.Skin || (exports.Skin = {})); +exports.default = Skin; + +},{"lodash":102,"onml":104}],30:[function(require,module,exports){ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +var Yosys; +(function (Yosys) { + var ConstantVal; + (function (ConstantVal) { + ConstantVal["Zero"] = "0"; + ConstantVal["One"] = "1"; + ConstantVal["X"] = "x"; + })(ConstantVal || (ConstantVal = {})); + var Direction; + (function (Direction) { + Direction["Input"] = "input"; + Direction["Output"] = "output"; + })(Direction = Yosys.Direction || (Yosys.Direction = {})); + function getInputPortPids(cell) { + if (cell.port_directions) { + return Object.keys(cell.port_directions).filter(function (k) { + return cell.port_directions[k] === Direction.Input; + }); + } + return []; + } + Yosys.getInputPortPids = getInputPortPids; + function getOutputPortPids(cell) { + if (cell.port_directions) { + return Object.keys(cell.port_directions).filter(function (k) { + return cell.port_directions[k] === Direction.Output; + }); + } + return []; + } + Yosys.getOutputPortPids = getOutputPortPids; + var HideName; + (function (HideName) { + HideName[HideName["Hide"] = 0] = "Hide"; + HideName[HideName["NoHide"] = 1] = "NoHide"; + })(HideName || (HideName = {})); +})(Yosys || (Yosys = {})); +exports.default = Yosys; + +},{}],31:[function(require,module,exports){ +"use strict"; +var __spreadArrays = (this && this.__spreadArrays) || function () { + for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length; + for (var r = Array(s), k = 0, i = 0; i < il; i++) + for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) + r[k] = a[j]; + return r; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.removeDummyEdges = void 0; +var elkGraph_1 = require("./elkGraph"); +var Skin_1 = require("./Skin"); +var _ = require("lodash"); +var onml = require("onml"); +var WireDirection; +(function (WireDirection) { + WireDirection[WireDirection["Up"] = 0] = "Up"; + WireDirection[WireDirection["Down"] = 1] = "Down"; + WireDirection[WireDirection["Left"] = 2] = "Left"; + WireDirection[WireDirection["Right"] = 3] = "Right"; +})(WireDirection || (WireDirection = {})); +function drawModule(g, module) { + var nodes = module.nodes.map(function (n) { + var kchild = _.find(g.children, function (c) { return c.id === n.Key; }); + return n.render(kchild); + }); + removeDummyEdges(g); + var lines = _.flatMap(g.edges, function (e) { + var netId = elkGraph_1.ElkModel.wireNameLookup[e.id]; + var numWires = netId.split(',').length - 2; + var lineStyle = 'stroke-width: ' + (numWires > 1 ? 2 : 1); + var netName = 'net_' + netId.slice(1, netId.length - 1) + ' width_' + numWires; + return _.flatMap(e.sections, function (s) { + var startPoint = s.startPoint; + s.bendPoints = s.bendPoints || []; + var bends = s.bendPoints.map(function (b) { + var l = ['line', { + x1: startPoint.x, + x2: b.x, + y1: startPoint.y, + y2: b.y, + class: netName, + style: lineStyle, + }]; + startPoint = b; + return l; + }); + if (e.junctionPoints) { + var circles = e.junctionPoints.map(function (j) { + return ['circle', { + cx: j.x, + cy: j.y, + r: (numWires > 1 ? 3 : 2), + style: 'fill:#000', + class: netName, + }]; + }); + bends = bends.concat(circles); + } + var line = [['line', { + x1: startPoint.x, + x2: s.endPoint.x, + y1: startPoint.y, + y2: s.endPoint.y, + class: netName, + style: lineStyle, + }]]; + return bends.concat(line); + }); + }); + var labels; + for (var index in g.edges) { + if (g.edges.hasOwnProperty(index)) { + var e = g.edges[index]; + var netId = elkGraph_1.ElkModel.wireNameLookup[e.id]; + var numWires = netId.split(',').length - 2; + var netName = 'net_' + netId.slice(1, netId.length - 1) + + ' width_' + numWires + + ' busLabel_' + numWires; + if (e.labels !== undefined && + e.labels[0] !== undefined && + e.labels[0].text !== undefined) { + var label = [ + ['rect', + { + x: e.labels[0].x + 1, + y: e.labels[0].y - 1, + width: (e.labels[0].text.length + 2) * 6 - 2, + height: 9, + class: netName, + style: 'fill: white; stroke: none', + }, + ], ['text', + { + x: e.labels[0].x, + y: e.labels[0].y + 7, + class: netName, + }, + '/' + e.labels[0].text + '/', + ], + ]; + if (labels !== undefined) { + labels = labels.concat(label); + } + else { + labels = label; + } + } + } + } + if (labels !== undefined && labels.length > 0) { + lines = lines.concat(labels); + } + var svgAttrs = Skin_1.default.skin[1]; + svgAttrs.width = g.width.toString(); + svgAttrs.height = g.height.toString(); + var styles = ['style', {}, '']; + onml.t(Skin_1.default.skin, { + enter: function (node) { + if (node.name === 'style') { + styles[2] += node.full[2]; + } + }, + }); + var elements = __spreadArrays([styles], nodes, lines); + var ret = __spreadArrays(['svg', svgAttrs], elements); + return onml.s(ret); +} +exports.default = drawModule; +function which_dir(start, end) { + if (end.x === start.x && end.y === start.y) { + throw new Error('start and end are the same'); + } + if (end.x !== start.x && end.y !== start.y) { + throw new Error('start and end arent orthogonal'); + } + if (end.x > start.x) { + return WireDirection.Right; + } + if (end.x < start.x) { + return WireDirection.Left; + } + if (end.y > start.y) { + return WireDirection.Down; + } + if (end.y < start.y) { + return WireDirection.Up; + } + throw new Error('unexpected direction'); +} +function findBendNearDummy(net, dummyIsSource, dummyLoc) { + var candidates = net.map(function (edge) { + var bends = edge.sections[0].bendPoints || [null]; + if (dummyIsSource) { + return _.first(bends); + } + else { + return _.last(bends); + } + }).filter(function (p) { return p !== null; }); + return _.minBy(candidates, function (pt) { + return Math.abs(dummyLoc.x - pt.x) + Math.abs(dummyLoc.y - pt.y); + }); +} +function removeDummyEdges(g) { + // go through each edge group for each dummy + var dummyNum = 0; + var _loop_1 = function () { + var dummyId = '$d_' + String(dummyNum); + // find all edges connected to this dummy + var edgeGroup = _.filter(g.edges, function (e) { + return e.source === dummyId || e.target === dummyId; + }); + if (edgeGroup.length === 0) { + return "break"; + } + var dummyIsSource; + var dummyLoc = void 0; + var firstEdge = edgeGroup[0]; + if (firstEdge.source === dummyId) { + dummyIsSource = true; + dummyLoc = firstEdge.sections[0].startPoint; + } + else { + dummyIsSource = false; + dummyLoc = firstEdge.sections[0].endPoint; + } + var newEnd = findBendNearDummy(edgeGroup, dummyIsSource, dummyLoc); + for (var _i = 0, edgeGroup_1 = edgeGroup; _i < edgeGroup_1.length; _i++) { + var edge = edgeGroup_1[_i]; + var e = edge; + var section = e.sections[0]; + if (dummyIsSource) { + section.startPoint = newEnd; + if (section.bendPoints) { + section.bendPoints.shift(); + } + } + else { + section.endPoint = newEnd; + if (section.bendPoints) { + section.bendPoints.pop(); + } + } + } + // delete junction point if necessary + var directions = new Set(_.flatMap(edgeGroup, function (edge) { + var section = edge.sections[0]; + if (dummyIsSource) { + // get first bend or endPoint + if (section.bendPoints && section.bendPoints.length > 0) { + return [section.bendPoints[0]]; + } + return section.endPoint; + } + else { + if (section.bendPoints && section.bendPoints.length > 0) { + return [_.last(section.bendPoints)]; + } + return section.startPoint; + } + }).map(function (pt) { + if (pt.x > newEnd.x) { + return WireDirection.Right; + } + if (pt.x < newEnd.x) { + return WireDirection.Left; + } + if (pt.y > newEnd.y) { + return WireDirection.Down; + } + return WireDirection.Up; + })); + if (directions.size < 3) { + // remove junctions at newEnd + edgeGroup.forEach(function (edge) { + if (edge.junctionPoints) { + edge.junctionPoints = edge.junctionPoints.filter(function (junct) { + return !_.isEqual(junct, newEnd); + }); + } + }); + } + dummyNum += 1; + }; + // loop until we can't find an edge group or we hit 10,000 + while (dummyNum < 10000) { + var state_1 = _loop_1(); + if (state_1 === "break") + break; + } +} +exports.removeDummyEdges = removeDummyEdges; + +},{"./Skin":29,"./elkGraph":32,"lodash":102,"onml":104}],32:[function(require,module,exports){ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.buildElkGraph = exports.ElkModel = void 0; +var _ = require("lodash"); +var ElkModel; +(function (ElkModel) { + ElkModel.wireNameLookup = {}; + ElkModel.dummyNum = 0; + ElkModel.edgeIndex = 0; +})(ElkModel = exports.ElkModel || (exports.ElkModel = {})); +function buildElkGraph(module) { + var children = module.nodes.map(function (n) { + return n.buildElkChild(); + }); + ElkModel.edgeIndex = 0; + ElkModel.dummyNum = 0; + var edges = _.flatMap(module.wires, function (w) { + var numWires = w.netName.split(',').length - 2; + // at least one driver and at least one rider and no laterals + if (w.drivers.length > 0 && w.riders.length > 0 && w.laterals.length === 0) { + var ret = []; + route(w.drivers, w.riders, ret, numWires); + return ret; + // at least one driver or rider and at least one lateral + } + else if (w.drivers.concat(w.riders).length > 0 && w.laterals.length > 0) { + var ret = []; + route(w.drivers, w.laterals, ret, numWires); + route(w.laterals, w.riders, ret, numWires); + return ret; + // at least two drivers and no riders + } + else if (w.riders.length === 0 && w.drivers.length > 1) { + // create a dummy node and add it to children + var dummyId_1 = addDummy(children); + ElkModel.dummyNum += 1; + var dummyEdges = w.drivers.map(function (driver) { + var sourceParentKey = driver.parentNode.Key; + var id = 'e' + String(ElkModel.edgeIndex); + ElkModel.edgeIndex += 1; + var d = { + id: id, + source: sourceParentKey, + sourcePort: sourceParentKey + '.' + driver.key, + target: dummyId_1, + targetPort: dummyId_1 + '.p', + }; + ElkModel.wireNameLookup[id] = driver.wire.netName; + return d; + }); + return dummyEdges; + // at least one rider and no drivers + } + else if (w.riders.length > 1 && w.drivers.length === 0) { + // create a dummy node and add it to children + var dummyId_2 = addDummy(children); + ElkModel.dummyNum += 1; + var dummyEdges = w.riders.map(function (rider) { + var sourceParentKey = rider.parentNode.Key; + var id = 'e' + String(ElkModel.edgeIndex); + ElkModel.edgeIndex += 1; + var edge = { + id: id, + source: dummyId_2, + sourcePort: dummyId_2 + '.p', + target: sourceParentKey, + targetPort: sourceParentKey + '.' + rider.key, + }; + ElkModel.wireNameLookup[id] = rider.wire.netName; + return edge; + }); + return dummyEdges; + } + else if (w.laterals.length > 1) { + var source_1 = w.laterals[0]; + var sourceParentKey_1 = source_1.parentNode.Key; + var lateralEdges = w.laterals.slice(1).map(function (lateral) { + var lateralParentKey = lateral.parentNode.Key; + var id = 'e' + String(ElkModel.edgeIndex); + ElkModel.edgeIndex += 1; + var edge = { + id: id, + source: sourceParentKey_1, + sourcePort: sourceParentKey_1 + '.' + source_1.key, + target: lateralParentKey, + targetPort: lateralParentKey + '.' + lateral.key, + }; + ElkModel.wireNameLookup[id] = lateral.wire.netName; + return edge; + }); + return lateralEdges; + } + // for only one driver or only one rider, don't create any edges + return []; + }); + return { + id: module.moduleName, + children: children, + edges: edges, + }; +} +exports.buildElkGraph = buildElkGraph; +function addDummy(children) { + var dummyId = '$d_' + String(ElkModel.dummyNum); + var child = { + id: dummyId, + width: 0, + height: 0, + ports: [{ + id: dummyId + '.p', + width: 0, + height: 0, + }], + layoutOptions: { 'org.eclipse.elk.portConstraints': 'FIXED_SIDE' }, + }; + children.push(child); + return dummyId; +} +function route(sourcePorts, targetPorts, edges, numWires) { + var newEdges = (_.flatMap(sourcePorts, function (sourcePort) { + var sourceParentKey = sourcePort.parentNode.key; + var sourceKey = sourceParentKey + '.' + sourcePort.key; + var edgeLabel; + if (numWires > 1) { + edgeLabel = [{ + id: '', + text: String(numWires), + width: 4, + height: 6, + x: 0, + y: 0, + layoutOptions: { + 'org.eclipse.elk.edgeLabels.inline': true, + }, + }]; + } + return targetPorts.map(function (targetPort) { + var targetParentKey = targetPort.parentNode.key; + var targetKey = targetParentKey + '.' + targetPort.key; + var id = 'e' + ElkModel.edgeIndex; + var edge = { + id: id, + labels: edgeLabel, + sources: [sourceKey], + targets: [targetKey], + }; + ElkModel.wireNameLookup[id] = targetPort.wire.netName; + if (sourcePort.parentNode.type !== '$dff') { + edge.layoutOptions = { 'org.eclipse.elk.layered.priority.direction': 10, + 'org.eclipse.elk.edge.thickness': (numWires > 1 ? 2 : 1) }; + } + else { + edge.layoutOptions = { 'org.eclipse.elk.edge.thickness': (numWires > 1 ? 2 : 1) }; + } + ElkModel.edgeIndex += 1; + return edge; + }); + })); + edges.push.apply(edges, newEdges); +} + +},{"lodash":102}],33:[function(require,module,exports){ +(function (global){(function (){ +'use strict'; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.render = exports.dumpLayout = void 0; +var ELK = (typeof window !== "undefined" ? window['ELK'] : typeof global !== "undefined" ? global['ELK'] : null); +var onml = require("onml"); +var FlatModule_1 = require("./FlatModule"); +var Skin_1 = require("./Skin"); +var elkGraph_1 = require("./elkGraph"); +var drawModule_1 = require("./drawModule"); +var elk = new ELK(); + +function createFlatModule(skinData, yosysNetlist) { + Skin_1.default.skin = onml.p(skinData); + var layoutProps = Skin_1.default.getProperties(); + var flatModule = new FlatModule_1.FlatModule(yosysNetlist); + // this can be skipped if there are no 0's or 1's + if (layoutProps.constants !== false) { + flatModule.addConstants(); + } + // this can be skipped if there are no splits or joins + if (layoutProps.splitsAndJoins !== false) { + flatModule.addSplitsJoins(); + } + flatModule.createWires(); + return flatModule; +} +exports.createFlatModule = createFlatModule; + +function dumpLayout(skinData, yosysNetlist, prelayout, done) { + var flatModule = createFlatModule(skinData, yosysNetlist); + var kgraph = elkGraph_1.buildElkGraph(flatModule); + if (prelayout) { + done(null, JSON.stringify(kgraph, null, 2)); + return; + } + var layoutProps = Skin_1.default.getProperties(); + var promise = elk.layout(kgraph, { layoutOptions: layoutProps.layoutEngine }); + promise.then(function (graph) { + done(null, JSON.stringify(graph, null, 2)); + }).catch(function (reason) { + throw Error(reason); + }); +} +exports.dumpLayout = dumpLayout; + +function render(skinData, yosysNetlist, done, elkData) { + var flatModule = createFlatModule(skinData, yosysNetlist); + var kgraph = elkGraph_1.buildElkGraph(flatModule); + var layoutProps = Skin_1.default.getProperties(); + var promise; + // if we already have a layout then use it + if (elkData) { + promise = new Promise(function (resolve) { + drawModule_1.default(elkData, flatModule); + resolve(); + }); + } + else { + // otherwise use ELK to generate the layout + promise = elk.layout(kgraph, { layoutOptions: layoutProps.layoutEngine }) + .then(function (g) { return drawModule_1.default(g, flatModule); }) + // tslint:disable-next-line:no-console + .catch(function (e) { console.error(e); }); + } + // support legacy callback style + if (typeof done === 'function') { + promise.then(function (output) { + done(null, output); + return output; + }).catch(function (reason) { + throw Error(reason); + }); + } + return promise; +} +exports.render = render; + +}).call(this)}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"./FlatModule":27,"./Skin":29,"./drawModule":31,"./elkGraph":32,"onml":104}],34:[function(require,module,exports){ +(function (Buffer){(function (){ +const lib = require('../built'); + +const json5 = require('json5'); +const Ajv = require('ajv'); +var ajv = new Ajv({allErrors: true}); +require('ajv-errors')(ajv); + +const schema = Buffer("ewogICJkZXNjcmlwdGlvbiI6ICJKU09OIFNjaGVtYSBZb3N5cyBuZXRsaXN0cyBKU09OIGZvcm1hdCIsCiAgInR5cGUiOiAib2JqZWN0IiwKICAvLyBhbiBlbXB0eSBvYmplY3QgaXMgaW52YWxpZAogICJyZXF1aXJlZCI6IFsibW9kdWxlcyJdLAogICJlcnJvck1lc3NhZ2UiOiB7CiAgICAidHlwZSI6ICJuZXRsaXN0IG11c3QgYmUgYSBKU09OIG9iamVjdCIsCiAgICAicmVxdWlyZWQiOiAibmV0bGlzdCBtdXN0IGhhdmUgYSBtb2R1bGVzIHByb3BlcnR5IgogIH0sCiAgInByb3BlcnRpZXMiOiB7CiAgICAibW9kdWxlcyI6IHsKICAgICAgInR5cGUiOiAib2JqZWN0IiwKICAgICAgLy8gdGhlcmUgbXVzdCBiZSBhdCBsZWFzdCBvbmUgbW9kdWxlCiAgICAgICJtaW5Qcm9wZXJ0aWVzIjogMSwKICAgICAgICAiZXJyb3JNZXNzYWdlIjogewogICAgICAgICAgInR5cGUiOiAibmV0bGlzdCBtb2R1bGVzIG11c3QgYmUgb2JqZWN0cyIsCiAgICAgICAgICAibWluUHJvcGVydGllcyI6ICJuZXRsaXN0IG11c3QgaGF2ZSBhdCBsZWFzdCBvbmUgbW9kdWxlIgogICAgICAgIH0sCiAgICAgICJhZGRpdGlvbmFsUHJvcGVydGllcyI6IHsKICAgICAgICAidHlwZSI6ICJvYmplY3QiLAogICAgICAgICJwcm9wZXJ0aWVzIjogewogICAgICAgICAgInBvcnRzIjogewogICAgICAgICAgICAidHlwZSI6ICJvYmplY3QiLAogICAgICAgICAgICAiYWRkaXRpb25hbFByb3BlcnRpZXMiOiB7CiAgICAgICAgICAgICAgInR5cGUiOiAib2JqZWN0IiwKICAgICAgICAgICAgICAvLyBhbGwgcG9ydHMgbXVzdCBoYXZlIGJpdHMgYW5kIGEgZGlyZWN0aW9uCiAgICAgICAgICAgICAgInJlcXVpcmVkIjogWyJkaXJlY3Rpb24iLCAiYml0cyJdLAogICAgICAgICAgICAgICJwcm9wZXJ0aWVzIjogewogICAgICAgICAgICAgICAgImRpcmVjdGlvbiI6IHsKICAgICAgICAgICAgICAgICAgImVudW0iOiBbImlucHV0IiwgIm91dHB1dCIsICJpbm91dCJdCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgImJpdHMiOiB7CiAgICAgICAgICAgICAgICAgICJ0eXBlIjogImFycmF5IiwKICAgICAgICAgICAgICAgICAgLy8gYml0cyBjYW4gYmUgdGhlIHN0cmluZyAiMCIsICIxIiwgIngiLCAieiIsIG9yIGEgbnVtYmVyLgogICAgICAgICAgICAgICAgICAiaXRlbXMiOiB7CiAgICAgICAgICAgICAgICAgICAgIm9uZU9mIjpbeyJ0eXBlIjoibnVtYmVyIn0sIHsiZW51bSI6WyIwIiwiMSIsIngiLCJ6Il19XQogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICB9LAogICAgICAgICAgImNlbGxzIjogewogICAgICAgICAgICAidHlwZSI6ICJvYmplY3QiLAogICAgICAgICAgICAiYWRkaXRpb25hbFByb3BlcnRpZXMiOiB7CiAgICAgICAgICAgICAgInR5cGUiOiAib2JqZWN0IiwKICAgICAgICAgICAgICAvLyBhbGwgY2VsbHMgbXVzdCBoYXZlIGEgdHlwZSBhbmQgY29ubmVjdGlvbnMKICAgICAgICAgICAgICAicmVxdWlyZWQiOiBbCiAgICAgICAgICAgICAgICAidHlwZSIsCiAgICAgICAgICAgICAgICAiY29ubmVjdGlvbnMiCiAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAicHJvcGVydGllcyI6IHsKICAgICAgICAgICAgICAgICJ0eXBlIjp7InR5cGUiOiJzdHJpbmcifSwKICAgICAgICAgICAgICAgICJjb25uZWN0aW9ucyI6IHsKICAgICAgICAgICAgICAgICAgInR5cGUiOiAib2JqZWN0IiwKICAgICAgICAgICAgICAgICAgImFkZGl0aW9uYWxQcm9wZXJ0aWVzIjogewogICAgICAgICAgICAgICAgICAgICJ0eXBlIjoiYXJyYXkiLAogICAgICAgICAgICAgICAgICAgICJpdGVtcyI6IHsKICAgICAgICAgICAgICAgICAgICAgICJvbmVPZiI6W3sidHlwZSI6Im51bWJlciJ9LCB7ImVudW0iOlsiMCIsIjEiLCJ4IiwieiJdfV0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAvLyBwb3J0IGRpcmVjdGlvbnMgYXJlIG9wdGlvbmFsCiAgICAgICAgICAgICAgICAicG9ydF9kaXJlY3Rpb25zIjp7CiAgICAgICAgICAgICAgICAgICJ0eXBlIjogIm9iamVjdCIsCiAgICAgICAgICAgICAgICAgICJhZGRpdGlvbmFsUHJvcGVydGllcyI6IHsKICAgICAgICAgICAgICAgICAgICAiZW51bSI6IFsiaW5wdXQiLCAib3V0cHV0IiwgImlub3V0Il0KICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIC8vIG5ldGxpc3RzdmcgZG9lc24ndCB1c2UgdGhlc2UgeWV0CiAgICAgICAgICAgICAgICAiaGlkZV9uYW1lIjogeyJlbnVtIjpbMCwgMV19LAogICAgICAgICAgICAgICAgInBhcmFtZXRlcnMiOiB7InR5cGUiOiAib2JqZWN0In0sCiAgICAgICAgICAgICAgICAiYXR0cmlidXRlcyI6IHsidHlwZSI6ICJvYmplY3QifQogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgfSwKICAgICAgICAgIC8vIG5vdCB5ZXQgdXNlZCBieSBuZXRsaXN0c3ZnCiAgICAgICAgICAibmV0bmFtZXMiOiB7CiAgICAgICAgICAgICJ0eXBlIjogIm9iamVjdCIsCiAgICAgICAgICAgICJhZGRpdGlvbmFsUHJvcGVydGllcyI6IHsKICAgICAgICAgICAgICAidHlwZSI6ICJvYmplY3QiLAogICAgICAgICAgICAgICJwcm9wZXJ0aWVzIjogewogICAgICAgICAgICAgICAgImJpdHMiOiB7CiAgICAgICAgICAgICAgICAgICJ0eXBlIjogImFycmF5IiwKICAgICAgICAgICAgICAgICAgLy8gYml0cyBjYW4gYmUgdGhlIHN0cmluZyAiMCIsICIxIiwgIngiLCAieiIsIG9yIGEgbnVtYmVyLgogICAgICAgICAgICAgICAgICAiaXRlbXMiOiB7CiAgICAgICAgICAgICAgICAgICAgIm9uZU9mIjogW3sidHlwZSI6ICJudW1iZXIifSwgeyJlbnVtIjogWyIwIiwgIjEiLCAieCIsICJ6Il19XQogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgImhpZGVfbmFtZSI6IHsiZW51bSI6IFswLCAxXX0sCiAgICAgICAgICAgICAgICAiYXR0cmlidXRlcyI6IHsidHlwZSI6ICJvYmplY3QifQogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgfSwKICAgICAgICAgICJhdHRyaWJ1dGVzIjogewogICAgICAgICAgICAidHlwZSI6ICJvYmplY3QiLAogICAgICAgICAgICAicHJvcGVydGllcyI6IHsKICAgICAgICAgICAgICAidG9wIjogeyJlbnVtIjogWzAsIDEsICIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsICIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMSJdfQogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICAvLyB0aGVyZSBtdXN0IGVpdGhlciBiZSBwb3J0cyBvciBjZWxscyBhdHRyaWJ1dGUKICAgICAgICAiYW55T2YiOiBbeyJyZXF1aXJlZCI6IFsicG9ydHMiXX0seyJyZXF1aXJlZCI6IFsiY2VsbHMiXX1dCiAgICAgIH0KICAgIH0KICB9Cn0K","base64"); +const analog = "\n \n \n \n\n\n\n\n \n name\n \n \n\n\n\n\t \n\t name\n\t \n\t \n\t\n\n\n \n name\n \n \n\n\n\n\n\n input\n \n \n \n\n\n\n output\n \n \n \n\n\n\n\n\n \n X1\n Xk\n \n \n \n \n\n\n\n \n X1\n Xk\n \n \n \n \n\n\n\n \n X1\n Xu\n \n \n \n \n\n\n\n \n X1\n Xu\n \n \n \n \n\n\n\n \n X1\n XpF\n \n \n \n \n\n\n\n \n X1\n XpF\n \n \n \n \n\n\n\n\n\n \n X1\n XV\n \n \n \n \n \n\n\n\n \n X1\n XA\n \n \n \n \n \n\n\n\n\n\n \n X1\n \n \n \n \n\n\n\n \n X1\n \n \n \n \n\n\n\n \n X1\n \n \n \n \n \n \n\n\n\n \n X1\n \n \n \n \n \n \n\n\n\n \n X1\n \n \n \n \n \n \n \n \n \n\n\n\n \n X1\n \n \n \n \n \n \n \n \n \n\n\n\n\n\n \n X1\n \n \n \n \n \n \n \n \n \n\n\n\n \n X1\n \n \n \n \n \n \n \n \n \n\n\n\n\n\n generic\n \n \n out0\n \n \n out1\n \n \n in0\n \n \n in1\n \n\n\n\n\n\n \n X1\n \n \n \n \n \n \n \n \n \n\n\n\n \n X1\n \n \n \n \n\n\n\n \n X1\n \n \n \n \n \n \n \n \n\n\n\n"; +const digital = "\n\n \n \n\n\n\n \n \n \n\n \n\n 0\n 1\n \n \n \n \n\n\n\n \n \n \n\n \n \n \n\n A\n B\n \n \n \n \n\n\n\n\n \n \n \n \n\n \n\n \n \n \n\n and\n\n\n\n \n \n \n \n\n \n \n\n \n \n \n\n nand\n\n\n\n\n \n \n \n \n \n\n \n \n\n \n \n \n\n or\n\n\n\n \n \n \n \n\n \n \n \n\n \n \n \n\n nor\n\n\n\n\n \n \n \n\n \n \n\n \n \n \n\n xor\n\n\n \n \n \n\n \n \n \n\n \n \n \n\n nxor\n\n\n\n\n \n \n \n\n \n \n\n \n \n\n\n\n \n \n\n \n \n \n\n \n\n \n \n \n\n\n\n\n \n\n \n \n \n\n \n \n \n\n\n\n \n\n \n \n \n\n \n \n\n\n\n \n\n \n \n\n \n \n \n\n\n \n\n \n \n\n \n \n\n\n \n \n\n \n \n \n\n \n \n \n\n\n \n \n\n \n \n \n \n\n \n \n \n\n\n \n\n \n \n \n\n \n \n \n\n\n \n\n \n \n\n \n \n \n\n\n \n\n \n \n \n \n\n \n \n \n\n\n \n\n \n \n \n\n \n \n \n\n\n\n\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n\n \n \n \n \n \n \n\n D\n Q\n CLK\n dff\n\n\n \n \n \n\n \n \n \n \n\n \n \n \n \n\n \n \n \n \n\n \n \n \n \n \n \n\n D\n Q\n CLK\n dffs\n\n\n \n \n\n \n \n \n\n \n \n \n \n\n D\n Q\n CLK\n dffn\n\n\n \n \n\n \n \n \n \n \n\n \n \n \n \n\n D\n Q\n CLK\n dffns\n\n\n\n\n \n \n \n \n\n \n\n \n\n \n \n \n \n\n D\n Q\n EN\n dla\n\n\n \n \n \n \n\n \n\n \n \n \n\n \n \n \n \n\n D\n Q\n EN\n dlas\n\n\n \n \n\n \n\n \n\n \n \n \n\n D\n Q\n EN\n dlan\n\n\n \n \n\n \n\n \n \n \n\n \n \n \n\n D\n Q\n EN\n dlans\n\n\n\n\n \n\n \n \n \n\n \n \n \n \n\n\n \n\n \n \n \n \n\n \n \n \n\n\n \n\n \n \n \n \n\n \n \n \n\n\n \n\n \n \n \n\n \n \n \n\n\n\n\n \n\n \n \n \n \n \n\n \n \n \n\n\n \n\n \n \n \n \n \n\n \n \n \n\n\n \n\n \n \n \n \n \n \n \n\n \n \n \n\n\n \n\n \n \n \n \n \n \n \n\n \n \n \n\n\n\n\n input\n \n \n \n\n\n output\n \n \n\n \n\n\n constant\n\n \n \n\n \n\n\n\n \n \n\n \n \n hi:lo\n \n \n hi:lo\n \n\n\n\n \n \n \n \n hi:lo\n \n \n hi:lo\n \n\n\n\n\n\n\n generic\n \n \n \n\n \n out0\n \n \n out1\n \n \n in0\n \n \n in1\n \n\n\n"; + +function render(skinData, netlistData, cb) { + // 检测输入的json数据是否合法 + var valid = ajv.validate(json5.parse(schema), netlistData); + if (!valid) { + throw Error(JSON.stringify(ajv.errors, null, 2)); + } + return lib.render(skinData, netlistData, cb); +} + +var example = { + "creator": "Yosys 0.10.0 (git sha1 be9d50d, clang 6.0.0-1ubuntu2 -fPIC -Os)", + "modules": { + "Main": { + "attributes": { + "cells_not_processed": "00000000000000000000000000000001", + "src": "./example.v:25.1-44.10" + }, + "ports": { + "a": { + "direction": "input", + "bits": [2] + }, + "b": { + "direction": "input", + "bits": [3] + }, + "c": { + "direction": "input", + "bits": [4] + }, + "Qus": { + "direction": "output", + "bits": [5] + }, + "Qs": { + "direction": "output", + "bits": [6] + } + }, + "cells": { + "simplified": { + "hide_name": 0, + "type": "Simplified", + "parameters": { + }, + "attributes": { + "module_not_derived": "00000000000000000000000000000001", + "src": "./example.v:37.14-42.4" + }, + "port_directions": { + "Q": "output", + "a": "input", + "b": "input", + "c": "input" + }, + "connections": { + "Q": [6], + "a": [2], + "b": [3], + "c": [4] + } + }, + "unsimplified": { + "hide_name": 0, + "type": "Unsimplified", + "parameters": { + }, + "attributes": { + "module_not_derived": "00000000000000000000000000000001", + "src": "./example.v:30.16-35.4" + }, + "port_directions": { + "Q": "output", + "a": "input", + "b": "input", + "c": "input" + }, + "connections": { + "Q": [5], + "a": [2], + "b": [3], + "c": [4] + } + } + }, + "netnames": { + "Qs": { + "hide_name": 0, + "bits": [6], + "attributes": { + "src": "./example.v:27.15-27.17" + } + }, + "Qus": { + "hide_name": 0, + "bits": [5], + "attributes": { + "src": "./example.v:27.10-27.13" + } + }, + "a": { + "hide_name": 0, + "bits": [2], + "attributes": { + "src": "./example.v:26.9-26.10" + } + }, + "b": { + "hide_name": 0, + "bits": [3], + "attributes": { + "src": "./example.v:26.12-26.13" + } + }, + "c": { + "hide_name": 0, + "bits": [4], + "attributes": { + "src": "./example.v:26.15-26.16" + } + } + } + }, + "Simplified": { + "attributes": { + "cells_not_processed": "00000000000000000000000000000001", + "src": "./example.v:11.1-23.10" + }, + "ports": { + "a": { + "direction": "input", + "bits": [2] + }, + "b": { + "direction": "input", + "bits": [3] + }, + "c": { + "direction": "input", + "bits": [4] + }, + "Q": { + "direction": "output", + "bits": [5] + } + }, + "cells": { + "$and$./example.v:22$7": { + "hide_name": 1, + "type": "$and", + "parameters": { + "A_SIGNED": "00000000000000000000000000000000", + "A_WIDTH": "00000000000000000000000000000001", + "B_SIGNED": "00000000000000000000000000000000", + "B_WIDTH": "00000000000000000000000000000001", + "Y_WIDTH": "00000000000000000000000000000001" + }, + "attributes": { + "src": "./example.v:22.14-22.25" + }, + "port_directions": { + "A": "input", + "B": "input", + "Y": "output" + }, + "connections": { + "A": [3], + "B": [6], + "Y": [5] + } + }, + "$or$./example.v:22$6": { + "hide_name": 1, + "type": "$or", + "parameters": { + "A_SIGNED": "00000000000000000000000000000000", + "A_WIDTH": "00000000000000000000000000000001", + "B_SIGNED": "00000000000000000000000000000000", + "B_WIDTH": "00000000000000000000000000000001", + "Y_WIDTH": "00000000000000000000000000000001" + }, + "attributes": { + "src": "./example.v:22.19-22.24" + }, + "port_directions": { + "A": "input", + "B": "input", + "Y": "output" + }, + "connections": { + "A": [2], + "B": [4], + "Y": [6] + } + } + }, + "netnames": { + "$or$./example.v:22$6_Y": { + "hide_name": 1, + "bits": [6], + "attributes": { + "src": "./example.v:22.19-22.24" + } + }, + "Q": { + "hide_name": 0, + "bits": [5], + "attributes": { + "src": "./example.v:13.10-13.11" + } + }, + "a": { + "hide_name": 0, + "bits": [2], + "attributes": { + "src": "./example.v:12.9-12.10" + } + }, + "b": { + "hide_name": 0, + "bits": [3], + "attributes": { + "src": "./example.v:12.12-12.13" + } + }, + "c": { + "hide_name": 0, + "bits": [4], + "attributes": { + "src": "./example.v:12.15-12.16" + } + } + } + }, + "Unsimplified": { + "attributes": { + "cells_not_processed": "00000000000000000000000000000001", + "src": "./example.v:4.1-9.10" + }, + "ports": { + "a": { + "direction": "input", + "bits": [2] + }, + "b": { + "direction": "input", + "bits": [3] + }, + "c": { + "direction": "input", + "bits": [4] + }, + "Q": { + "direction": "output", + "bits": [5] + } + }, + "cells": { + "$and$./example.v:8$1": { + "hide_name": 1, + "type": "$and", + "parameters": { + "A_SIGNED": "00000000000000000000000000000000", + "A_WIDTH": "00000000000000000000000000000001", + "B_SIGNED": "00000000000000000000000000000000", + "B_WIDTH": "00000000000000000000000000000001", + "Y_WIDTH": "00000000000000000000000000000001" + }, + "attributes": { + "src": "./example.v:8.14-8.19" + }, + "port_directions": { + "A": "input", + "B": "input", + "Y": "output" + }, + "connections": { + "A": [2], + "B": [3], + "Y": [6] + } + }, + "$and$./example.v:8$2": { + "hide_name": 1, + "type": "$and", + "parameters": { + "A_SIGNED": "00000000000000000000000000000000", + "A_WIDTH": "00000000000000000000000000000001", + "B_SIGNED": "00000000000000000000000000000000", + "B_WIDTH": "00000000000000000000000000000001", + "Y_WIDTH": "00000000000000000000000000000001" + }, + "attributes": { + "src": "./example.v:8.24-8.29" + }, + "port_directions": { + "A": "input", + "B": "input", + "Y": "output" + }, + "connections": { + "A": [3], + "B": [4], + "Y": [7] + } + }, + "$and$./example.v:8$4": { + "hide_name": 1, + "type": "$and", + "parameters": { + "A_SIGNED": "00000000000000000000000000000000", + "A_WIDTH": "00000000000000000000000000000001", + "B_SIGNED": "00000000000000000000000000000000", + "B_WIDTH": "00000000000000000000000000000001", + "Y_WIDTH": "00000000000000000000000000000001" + }, + "attributes": { + "src": "./example.v:8.23-8.40" + }, + "port_directions": { + "A": "input", + "B": "input", + "Y": "output" + }, + "connections": { + "A": [7], + "B": [8], + "Y": [9] + } + }, + "$or$./example.v:8$3": { + "hide_name": 1, + "type": "$or", + "parameters": { + "A_SIGNED": "00000000000000000000000000000000", + "A_WIDTH": "00000000000000000000000000000001", + "B_SIGNED": "00000000000000000000000000000000", + "B_WIDTH": "00000000000000000000000000000001", + "Y_WIDTH": "00000000000000000000000000000001" + }, + "attributes": { + "src": "./example.v:8.34-8.39" + }, + "port_directions": { + "A": "input", + "B": "input", + "Y": "output" + }, + "connections": { + "A": [3], + "B": [4], + "Y": [8] + } + }, + "$or$./example.v:8$5": { + "hide_name": 1, + "type": "$or", + "parameters": { + "A_SIGNED": "00000000000000000000000000000000", + "A_WIDTH": "00000000000000000000000000000001", + "B_SIGNED": "00000000000000000000000000000000", + "B_WIDTH": "00000000000000000000000000000001", + "Y_WIDTH": "00000000000000000000000000000001" + }, + "attributes": { + "src": "./example.v:8.14-8.41" + }, + "port_directions": { + "A": "input", + "B": "input", + "Y": "output" + }, + "connections": { + "A": [6], + "B": [9], + "Y": [5] + } + } + }, + "netnames": { + "$and$./example.v:8$1_Y": { + "hide_name": 1, + "bits": [6], + "attributes": { + "src": "./example.v:8.14-8.19" + } + }, + "$and$./example.v:8$2_Y": { + "hide_name": 1, + "bits": [7], + "attributes": { + "src": "./example.v:8.24-8.29" + } + }, + "$and$./example.v:8$4_Y": { + "hide_name": 1, + "bits": [9], + "attributes": { + "src": "./example.v:8.23-8.40" + } + }, + "$or$./example.v:8$3_Y": { + "hide_name": 1, + "bits": [8], + "attributes": { + "src": "./example.v:8.34-8.39" + } + }, + "Q": { + "hide_name": 0, + "bits": [5], + "attributes": { + "src": "./example.v:6.10-6.11" + } + }, + "a": { + "hide_name": 0, + "bits": [2], + "attributes": { + "src": "./example.v:5.9-5.10" + } + }, + "b": { + "hide_name": 0, + "bits": [3], + "attributes": { + "src": "./example.v:5.12-5.13" + } + }, + "c": { + "hide_name": 0, + "bits": [4], + "attributes": { + "src": "./example.v:5.15-5.16" + } + } + } + } + } +}; + +module.exports = { + render: render, + parser: lib.createFlatModule, + example: example, + digitalSkin: digital, + analogSkin: analog +}; +}).call(this)}).call(this,require("buffer").Buffer) +},{"../built":33,"ajv":36,"ajv-errors":35,"buffer":3,"json5":101}],35:[function(require,module,exports){ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const ajv_1 = require("ajv"); +const codegen_1 = require("ajv/dist/compile/codegen"); +const code_1 = require("ajv/dist/compile/codegen/code"); +const validate_1 = require("ajv/dist/compile/validate"); +const errors_1 = require("ajv/dist/compile/errors"); +const names_1 = require("ajv/dist/compile/names"); +const keyword = "errorMessage"; +const used = new ajv_1.Name("emUsed"); +const KEYWORD_PROPERTY_PARAMS = { + required: "missingProperty", + dependencies: "property", + dependentRequired: "property", +}; +const INTERPOLATION = /\$\{[^}]+\}/; +const INTERPOLATION_REPLACE = /\$\{([^}]+)\}/g; +const EMPTY_STR = /^""\s*\+\s*|\s*\+\s*""$/g; +function errorMessage(options) { + return { + keyword, + schemaType: ["string", "object"], + post: true, + code(cxt) { + const { gen, data, schema, schemaValue, it } = cxt; + if (it.createErrors === false) + return; + const sch = schema; + const instancePath = codegen_1.strConcat(names_1.default.instancePath, it.errorPath); + gen.if(ajv_1._ `${names_1.default.errors} > 0`, () => { + if (typeof sch == "object") { + const [kwdPropErrors, kwdErrors] = keywordErrorsConfig(sch); + if (kwdErrors) + processKeywordErrors(kwdErrors); + if (kwdPropErrors) + processKeywordPropErrors(kwdPropErrors); + processChildErrors(childErrorsConfig(sch)); + } + const schMessage = typeof sch == "string" ? sch : sch._; + if (schMessage) + processAllErrors(schMessage); + if (!options.keepErrors) + removeUsedErrors(); + }); + function childErrorsConfig({ properties, items }) { + const errors = {}; + if (properties) { + errors.props = {}; + for (const p in properties) + errors.props[p] = []; + } + if (items) { + errors.items = {}; + for (let i = 0; i < items.length; i++) + errors.items[i] = []; + } + return errors; + } + function keywordErrorsConfig(emSchema) { + let propErrors; + let errors; + for (const k in emSchema) { + if (k === "properties" || k === "items") + continue; + const kwdSch = emSchema[k]; + if (typeof kwdSch == "object") { + propErrors || (propErrors = {}); + const errMap = (propErrors[k] = {}); + for (const p in kwdSch) + errMap[p] = []; + } + else { + errors || (errors = {}); + errors[k] = []; + } + } + return [propErrors, errors]; + } + function processKeywordErrors(kwdErrors) { + const kwdErrs = gen.const("emErrors", ajv_1.stringify(kwdErrors)); + const templates = gen.const("templates", getTemplatesCode(kwdErrors, schema)); + gen.forOf("err", names_1.default.vErrors, (err) => gen.if(matchKeywordError(err, kwdErrs), () => gen.code(ajv_1._ `${kwdErrs}[${err}.keyword].push(${err})`).assign(ajv_1._ `${err}.${used}`, true))); + const { singleError } = options; + if (singleError) { + const message = gen.let("message", ajv_1._ `""`); + const paramsErrors = gen.let("paramsErrors", ajv_1._ `[]`); + loopErrors((key) => { + gen.if(message, () => gen.code(ajv_1._ `${message} += ${typeof singleError == "string" ? singleError : ";"}`)); + gen.code(ajv_1._ `${message} += ${errMessage(key)}`); + gen.assign(paramsErrors, ajv_1._ `${paramsErrors}.concat(${kwdErrs}[${key}])`); + }); + errors_1.reportError(cxt, { message, params: ajv_1._ `{errors: ${paramsErrors}}` }); + } + else { + loopErrors((key) => errors_1.reportError(cxt, { + message: errMessage(key), + params: ajv_1._ `{errors: ${kwdErrs}[${key}]}`, + })); + } + function loopErrors(body) { + gen.forIn("key", kwdErrs, (key) => gen.if(ajv_1._ `${kwdErrs}[${key}].length`, () => body(key))); + } + function errMessage(key) { + return ajv_1._ `${key} in ${templates} ? ${templates}[${key}]() : ${schemaValue}[${key}]`; + } + } + function processKeywordPropErrors(kwdPropErrors) { + const kwdErrs = gen.const("emErrors", ajv_1.stringify(kwdPropErrors)); + const templatesCode = []; + for (const k in kwdPropErrors) { + templatesCode.push([ + k, + getTemplatesCode(kwdPropErrors[k], schema[k]), + ]); + } + const templates = gen.const("templates", gen.object(...templatesCode)); + const kwdPropParams = gen.scopeValue("obj", { + ref: KEYWORD_PROPERTY_PARAMS, + code: ajv_1.stringify(KEYWORD_PROPERTY_PARAMS), + }); + const propParam = gen.let("emPropParams"); + const paramsErrors = gen.let("emParamsErrors"); + gen.forOf("err", names_1.default.vErrors, (err) => gen.if(matchKeywordError(err, kwdErrs), () => { + gen.assign(propParam, ajv_1._ `${kwdPropParams}[${err}.keyword]`); + gen.assign(paramsErrors, ajv_1._ `${kwdErrs}[${err}.keyword][${err}.params[${propParam}]]`); + gen.if(paramsErrors, () => gen.code(ajv_1._ `${paramsErrors}.push(${err})`).assign(ajv_1._ `${err}.${used}`, true)); + })); + gen.forIn("key", kwdErrs, (key) => gen.forIn("keyProp", ajv_1._ `${kwdErrs}[${key}]`, (keyProp) => { + gen.assign(paramsErrors, ajv_1._ `${kwdErrs}[${key}][${keyProp}]`); + gen.if(ajv_1._ `${paramsErrors}.length`, () => { + const tmpl = gen.const("tmpl", ajv_1._ `${templates}[${key}] && ${templates}[${key}][${keyProp}]`); + errors_1.reportError(cxt, { + message: ajv_1._ `${tmpl} ? ${tmpl}() : ${schemaValue}[${key}][${keyProp}]`, + params: ajv_1._ `{errors: ${paramsErrors}}`, + }); + }); + })); + } + function processChildErrors(childErrors) { + const { props, items } = childErrors; + if (!props && !items) + return; + const isObj = ajv_1._ `typeof ${data} == "object"`; + const isArr = ajv_1._ `Array.isArray(${data})`; + const childErrs = gen.let("emErrors"); + let childKwd; + let childProp; + const templates = gen.let("templates"); + if (props && items) { + childKwd = gen.let("emChildKwd"); + gen.if(isObj); + gen.if(isArr, () => { + init(items, schema.items); + gen.assign(childKwd, ajv_1.str `items`); + }, () => { + init(props, schema.properties); + gen.assign(childKwd, ajv_1.str `properties`); + }); + childProp = ajv_1._ `[${childKwd}]`; + } + else if (items) { + gen.if(isArr); + init(items, schema.items); + childProp = ajv_1._ `.items`; + } + else if (props) { + gen.if(codegen_1.and(isObj, codegen_1.not(isArr))); + init(props, schema.properties); + childProp = ajv_1._ `.properties`; + } + gen.forOf("err", names_1.default.vErrors, (err) => ifMatchesChildError(err, childErrs, (child) => gen.code(ajv_1._ `${childErrs}[${child}].push(${err})`).assign(ajv_1._ `${err}.${used}`, true))); + gen.forIn("key", childErrs, (key) => gen.if(ajv_1._ `${childErrs}[${key}].length`, () => { + errors_1.reportError(cxt, { + message: ajv_1._ `${key} in ${templates} ? ${templates}[${key}]() : ${schemaValue}${childProp}[${key}]`, + params: ajv_1._ `{errors: ${childErrs}[${key}]}`, + }); + gen.assign(ajv_1._ `${names_1.default.vErrors}[${names_1.default.errors}-1].instancePath`, ajv_1._ `${instancePath} + "/" + ${key}.replace(/~/g, "~0").replace(/\\//g, "~1")`); + })); + gen.endIf(); + function init(children, msgs) { + gen.assign(childErrs, ajv_1.stringify(children)); + gen.assign(templates, getTemplatesCode(children, msgs)); + } + } + function processAllErrors(schMessage) { + const errs = gen.const("emErrs", ajv_1._ `[]`); + gen.forOf("err", names_1.default.vErrors, (err) => gen.if(matchAnyError(err), () => gen.code(ajv_1._ `${errs}.push(${err})`).assign(ajv_1._ `${err}.${used}`, true))); + gen.if(ajv_1._ `${errs}.length`, () => errors_1.reportError(cxt, { + message: templateExpr(schMessage), + params: ajv_1._ `{errors: ${errs}}`, + })); + } + function removeUsedErrors() { + const errs = gen.const("emErrs", ajv_1._ `[]`); + gen.forOf("err", names_1.default.vErrors, (err) => gen.if(ajv_1._ `!${err}.${used}`, () => gen.code(ajv_1._ `${errs}.push(${err})`))); + gen.assign(names_1.default.vErrors, errs).assign(names_1.default.errors, ajv_1._ `${errs}.length`); + } + function matchKeywordError(err, kwdErrs) { + return codegen_1.and(ajv_1._ `${err}.keyword !== ${keyword}`, ajv_1._ `!${err}.${used}`, ajv_1._ `${err}.instancePath === ${instancePath}`, ajv_1._ `${err}.keyword in ${kwdErrs}`, + // TODO match the end of the string? + ajv_1._ `${err}.schemaPath.indexOf(${it.errSchemaPath}) === 0`, ajv_1._ `/^\\/[^\\/]*$/.test(${err}.schemaPath.slice(${it.errSchemaPath.length}))`); + } + function ifMatchesChildError(err, childErrs, thenBody) { + gen.if(codegen_1.and(ajv_1._ `${err}.keyword !== ${keyword}`, ajv_1._ `!${err}.${used}`, ajv_1._ `${err}.instancePath.indexOf(${instancePath}) === 0`), () => { + const childRegex = gen.scopeValue("pattern", { + ref: /^\/([^/]*)(?:\/|$)/, + code: ajv_1._ `new RegExp("^\\\/([^/]*)(?:\\\/|$)")`, + }); + const matches = gen.const("emMatches", ajv_1._ `${childRegex}.exec(${err}.instancePath.slice(${instancePath}.length))`); + const child = gen.const("emChild", ajv_1._ `${matches} && ${matches}[1].replace(/~1/g, "/").replace(/~0/g, "~")`); + gen.if(ajv_1._ `${child} !== undefined && ${child} in ${childErrs}`, () => thenBody(child)); + }); + } + function matchAnyError(err) { + return codegen_1.and(ajv_1._ `${err}.keyword !== ${keyword}`, ajv_1._ `!${err}.${used}`, codegen_1.or(ajv_1._ `${err}.instancePath === ${instancePath}`, codegen_1.and(ajv_1._ `${err}.instancePath.indexOf(${instancePath}) === 0`, ajv_1._ `${err}.instancePath[${instancePath}.length] === "/"`)), ajv_1._ `${err}.schemaPath.indexOf(${it.errSchemaPath}) === 0`, ajv_1._ `${err}.schemaPath[${it.errSchemaPath}.length] === "/"`); + } + function getTemplatesCode(keys, msgs) { + const templatesCode = []; + for (const k in keys) { + const msg = msgs[k]; + if (INTERPOLATION.test(msg)) + templatesCode.push([k, templateFunc(msg)]); + } + return gen.object(...templatesCode); + } + function templateExpr(msg) { + if (!INTERPOLATION.test(msg)) + return ajv_1.stringify(msg); + return new code_1._Code(code_1.safeStringify(msg) + .replace(INTERPOLATION_REPLACE, (_s, ptr) => `" + JSON.stringify(${validate_1.getData(ptr, it)}) + "`) + .replace(EMPTY_STR, "")); + } + function templateFunc(msg) { + return ajv_1._ `function(){return ${templateExpr(msg)}}`; + } + }, + metaSchema: { + anyOf: [ + { type: "string" }, + { + type: "object", + properties: { + properties: { $ref: "#/$defs/stringMap" }, + items: { $ref: "#/$defs/stringList" }, + required: { $ref: "#/$defs/stringOrMap" }, + dependencies: { $ref: "#/$defs/stringOrMap" }, + }, + additionalProperties: { type: "string" }, + }, + ], + $defs: { + stringMap: { + type: "object", + additionalProperties: { type: "string" }, + }, + stringOrMap: { + anyOf: [{ type: "string" }, { $ref: "#/$defs/stringMap" }], + }, + stringList: { type: "array", items: { type: "string" } }, + }, + }, + }; +} +const ajvErrors = (ajv, options = {}) => { + if (!ajv.opts.allErrors) + throw new Error("ajv-errors: Ajv option allErrors must be true"); + if (ajv.opts.jsPropertySyntax) { + throw new Error("ajv-errors: ajv option jsPropertySyntax is not supported"); + } + return ajv.addKeyword(errorMessage(options)); +}; +exports.default = ajvErrors; +module.exports = ajvErrors; +module.exports.default = ajvErrors; + +},{"ajv":36,"ajv/dist/compile/codegen":38,"ajv/dist/compile/codegen/code":37,"ajv/dist/compile/errors":40,"ajv/dist/compile/names":42,"ajv/dist/compile/validate":51}],36:[function(require,module,exports){ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.CodeGen = exports.Name = exports.nil = exports.stringify = exports.str = exports._ = exports.KeywordCxt = void 0; +const core_1 = require("./core"); +const draft7_1 = require("./vocabularies/draft7"); +const discriminator_1 = require("./vocabularies/discriminator"); +const draft7MetaSchema = require("./refs/json-schema-draft-07.json"); +const META_SUPPORT_DATA = ["/properties"]; +const META_SCHEMA_ID = "http://json-schema.org/draft-07/schema"; +class Ajv extends core_1.default { + _addVocabularies() { + super._addVocabularies(); + draft7_1.default.forEach((v) => this.addVocabulary(v)); + if (this.opts.discriminator) + this.addKeyword(discriminator_1.default); + } + _addDefaultMetaSchema() { + super._addDefaultMetaSchema(); + if (!this.opts.meta) + return; + const metaSchema = this.opts.$data + ? this.$dataMetaSchema(draft7MetaSchema, META_SUPPORT_DATA) + : draft7MetaSchema; + this.addMetaSchema(metaSchema, META_SCHEMA_ID, false); + this.refs["http://json-schema.org/schema"] = META_SCHEMA_ID; + } + defaultMeta() { + return (this.opts.defaultMeta = + super.defaultMeta() || (this.getSchema(META_SCHEMA_ID) ? META_SCHEMA_ID : undefined)); + } +} +module.exports = exports = Ajv; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.default = Ajv; +var validate_1 = require("./compile/validate"); +Object.defineProperty(exports, "KeywordCxt", { enumerable: true, get: function () { return validate_1.KeywordCxt; } }); +var codegen_1 = require("./compile/codegen"); +Object.defineProperty(exports, "_", { enumerable: true, get: function () { return codegen_1._; } }); +Object.defineProperty(exports, "str", { enumerable: true, get: function () { return codegen_1.str; } }); +Object.defineProperty(exports, "stringify", { enumerable: true, get: function () { return codegen_1.stringify; } }); +Object.defineProperty(exports, "nil", { enumerable: true, get: function () { return codegen_1.nil; } }); +Object.defineProperty(exports, "Name", { enumerable: true, get: function () { return codegen_1.Name; } }); +Object.defineProperty(exports, "CodeGen", { enumerable: true, get: function () { return codegen_1.CodeGen; } }); + +},{"./compile/codegen":38,"./compile/validate":51,"./core":54,"./refs/json-schema-draft-07.json":56,"./vocabularies/discriminator":81,"./vocabularies/draft7":83}],37:[function(require,module,exports){ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.regexpCode = exports.getProperty = exports.safeStringify = exports.stringify = exports.strConcat = exports.addCodeArg = exports.str = exports._ = exports.nil = exports._Code = exports.Name = exports.IDENTIFIER = exports._CodeOrName = void 0; +class _CodeOrName { +} +exports._CodeOrName = _CodeOrName; +exports.IDENTIFIER = /^[a-z$_][a-z$_0-9]*$/i; +class Name extends _CodeOrName { + constructor(s) { + super(); + if (!exports.IDENTIFIER.test(s)) + throw new Error("CodeGen: name must be a valid identifier"); + this.str = s; + } + toString() { + return this.str; + } + emptyStr() { + return false; + } + get names() { + return { [this.str]: 1 }; + } +} +exports.Name = Name; +class _Code extends _CodeOrName { + constructor(code) { + super(); + this._items = typeof code === "string" ? [code] : code; + } + toString() { + return this.str; + } + emptyStr() { + if (this._items.length > 1) + return false; + const item = this._items[0]; + return item === "" || item === '""'; + } + get str() { + var _a; + return ((_a = this._str) !== null && _a !== void 0 ? _a : (this._str = this._items.reduce((s, c) => `${s}${c}`, ""))); + } + get names() { + var _a; + return ((_a = this._names) !== null && _a !== void 0 ? _a : (this._names = this._items.reduce((names, c) => { + if (c instanceof Name) + names[c.str] = (names[c.str] || 0) + 1; + return names; + }, {}))); + } +} +exports._Code = _Code; +exports.nil = new _Code(""); +function _(strs, ...args) { + const code = [strs[0]]; + let i = 0; + while (i < args.length) { + addCodeArg(code, args[i]); + code.push(strs[++i]); + } + return new _Code(code); +} +exports._ = _; +const plus = new _Code("+"); +function str(strs, ...args) { + const expr = [safeStringify(strs[0])]; + let i = 0; + while (i < args.length) { + expr.push(plus); + addCodeArg(expr, args[i]); + expr.push(plus, safeStringify(strs[++i])); + } + optimize(expr); + return new _Code(expr); +} +exports.str = str; +function addCodeArg(code, arg) { + if (arg instanceof _Code) + code.push(...arg._items); + else if (arg instanceof Name) + code.push(arg); + else + code.push(interpolate(arg)); +} +exports.addCodeArg = addCodeArg; +function optimize(expr) { + let i = 1; + while (i < expr.length - 1) { + if (expr[i] === plus) { + const res = mergeExprItems(expr[i - 1], expr[i + 1]); + if (res !== undefined) { + expr.splice(i - 1, 3, res); + continue; + } + expr[i++] = "+"; + } + i++; + } +} +function mergeExprItems(a, b) { + if (b === '""') + return a; + if (a === '""') + return b; + if (typeof a == "string") { + if (b instanceof Name || a[a.length - 1] !== '"') + return; + if (typeof b != "string") + return `${a.slice(0, -1)}${b}"`; + if (b[0] === '"') + return a.slice(0, -1) + b.slice(1); + return; + } + if (typeof b == "string" && b[0] === '"' && !(a instanceof Name)) + return `"${a}${b.slice(1)}`; + return; +} +function strConcat(c1, c2) { + return c2.emptyStr() ? c1 : c1.emptyStr() ? c2 : str `${c1}${c2}`; +} +exports.strConcat = strConcat; +// TODO do not allow arrays here +function interpolate(x) { + return typeof x == "number" || typeof x == "boolean" || x === null + ? x + : safeStringify(Array.isArray(x) ? x.join(",") : x); +} +function stringify(x) { + return new _Code(safeStringify(x)); +} +exports.stringify = stringify; +function safeStringify(x) { + return JSON.stringify(x) + .replace(/\u2028/g, "\\u2028") + .replace(/\u2029/g, "\\u2029"); +} +exports.safeStringify = safeStringify; +function getProperty(key) { + return typeof key == "string" && exports.IDENTIFIER.test(key) ? new _Code(`.${key}`) : _ `[${key}]`; +} +exports.getProperty = getProperty; +function regexpCode(rx) { + return new _Code(rx.toString()); +} +exports.regexpCode = regexpCode; + +},{}],38:[function(require,module,exports){ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.or = exports.and = exports.not = exports.CodeGen = exports.operators = exports.varKinds = exports.ValueScopeName = exports.ValueScope = exports.Scope = exports.Name = exports.regexpCode = exports.stringify = exports.getProperty = exports.nil = exports.strConcat = exports.str = exports._ = void 0; +const code_1 = require("./code"); +const scope_1 = require("./scope"); +var code_2 = require("./code"); +Object.defineProperty(exports, "_", { enumerable: true, get: function () { return code_2._; } }); +Object.defineProperty(exports, "str", { enumerable: true, get: function () { return code_2.str; } }); +Object.defineProperty(exports, "strConcat", { enumerable: true, get: function () { return code_2.strConcat; } }); +Object.defineProperty(exports, "nil", { enumerable: true, get: function () { return code_2.nil; } }); +Object.defineProperty(exports, "getProperty", { enumerable: true, get: function () { return code_2.getProperty; } }); +Object.defineProperty(exports, "stringify", { enumerable: true, get: function () { return code_2.stringify; } }); +Object.defineProperty(exports, "regexpCode", { enumerable: true, get: function () { return code_2.regexpCode; } }); +Object.defineProperty(exports, "Name", { enumerable: true, get: function () { return code_2.Name; } }); +var scope_2 = require("./scope"); +Object.defineProperty(exports, "Scope", { enumerable: true, get: function () { return scope_2.Scope; } }); +Object.defineProperty(exports, "ValueScope", { enumerable: true, get: function () { return scope_2.ValueScope; } }); +Object.defineProperty(exports, "ValueScopeName", { enumerable: true, get: function () { return scope_2.ValueScopeName; } }); +Object.defineProperty(exports, "varKinds", { enumerable: true, get: function () { return scope_2.varKinds; } }); +exports.operators = { + GT: new code_1._Code(">"), + GTE: new code_1._Code(">="), + LT: new code_1._Code("<"), + LTE: new code_1._Code("<="), + EQ: new code_1._Code("==="), + NEQ: new code_1._Code("!=="), + NOT: new code_1._Code("!"), + OR: new code_1._Code("||"), + AND: new code_1._Code("&&"), + ADD: new code_1._Code("+"), +}; +class Node { + optimizeNodes() { + return this; + } + optimizeNames(_names, _constants) { + return this; + } +} +class Def extends Node { + constructor(varKind, name, rhs) { + super(); + this.varKind = varKind; + this.name = name; + this.rhs = rhs; + } + render({ es5, _n }) { + const varKind = es5 ? scope_1.varKinds.var : this.varKind; + const rhs = this.rhs === undefined ? "" : ` = ${this.rhs}`; + return `${varKind} ${this.name}${rhs};` + _n; + } + optimizeNames(names, constants) { + if (!names[this.name.str]) + return; + if (this.rhs) + this.rhs = optimizeExpr(this.rhs, names, constants); + return this; + } + get names() { + return this.rhs instanceof code_1._CodeOrName ? this.rhs.names : {}; + } +} +class Assign extends Node { + constructor(lhs, rhs, sideEffects) { + super(); + this.lhs = lhs; + this.rhs = rhs; + this.sideEffects = sideEffects; + } + render({ _n }) { + return `${this.lhs} = ${this.rhs};` + _n; + } + optimizeNames(names, constants) { + if (this.lhs instanceof code_1.Name && !names[this.lhs.str] && !this.sideEffects) + return; + this.rhs = optimizeExpr(this.rhs, names, constants); + return this; + } + get names() { + const names = this.lhs instanceof code_1.Name ? {} : { ...this.lhs.names }; + return addExprNames(names, this.rhs); + } +} +class AssignOp extends Assign { + constructor(lhs, op, rhs, sideEffects) { + super(lhs, rhs, sideEffects); + this.op = op; + } + render({ _n }) { + return `${this.lhs} ${this.op}= ${this.rhs};` + _n; + } +} +class Label extends Node { + constructor(label) { + super(); + this.label = label; + this.names = {}; + } + render({ _n }) { + return `${this.label}:` + _n; + } +} +class Break extends Node { + constructor(label) { + super(); + this.label = label; + this.names = {}; + } + render({ _n }) { + const label = this.label ? ` ${this.label}` : ""; + return `break${label};` + _n; + } +} +class Throw extends Node { + constructor(error) { + super(); + this.error = error; + } + render({ _n }) { + return `throw ${this.error};` + _n; + } + get names() { + return this.error.names; + } +} +class AnyCode extends Node { + constructor(code) { + super(); + this.code = code; + } + render({ _n }) { + return `${this.code};` + _n; + } + optimizeNodes() { + return `${this.code}` ? this : undefined; + } + optimizeNames(names, constants) { + this.code = optimizeExpr(this.code, names, constants); + return this; + } + get names() { + return this.code instanceof code_1._CodeOrName ? this.code.names : {}; + } +} +class ParentNode extends Node { + constructor(nodes = []) { + super(); + this.nodes = nodes; + } + render(opts) { + return this.nodes.reduce((code, n) => code + n.render(opts), ""); + } + optimizeNodes() { + const { nodes } = this; + let i = nodes.length; + while (i--) { + const n = nodes[i].optimizeNodes(); + if (Array.isArray(n)) + nodes.splice(i, 1, ...n); + else if (n) + nodes[i] = n; + else + nodes.splice(i, 1); + } + return nodes.length > 0 ? this : undefined; + } + optimizeNames(names, constants) { + const { nodes } = this; + let i = nodes.length; + while (i--) { + // iterating backwards improves 1-pass optimization + const n = nodes[i]; + if (n.optimizeNames(names, constants)) + continue; + subtractNames(names, n.names); + nodes.splice(i, 1); + } + return nodes.length > 0 ? this : undefined; + } + get names() { + return this.nodes.reduce((names, n) => addNames(names, n.names), {}); + } +} +class BlockNode extends ParentNode { + render(opts) { + return "{" + opts._n + super.render(opts) + "}" + opts._n; + } +} +class Root extends ParentNode { +} +class Else extends BlockNode { +} +Else.kind = "else"; +class If extends BlockNode { + constructor(condition, nodes) { + super(nodes); + this.condition = condition; + } + render(opts) { + let code = `if(${this.condition})` + super.render(opts); + if (this.else) + code += "else " + this.else.render(opts); + return code; + } + optimizeNodes() { + super.optimizeNodes(); + const cond = this.condition; + if (cond === true) + return this.nodes; // else is ignored here + let e = this.else; + if (e) { + const ns = e.optimizeNodes(); + e = this.else = Array.isArray(ns) ? new Else(ns) : ns; + } + if (e) { + if (cond === false) + return e instanceof If ? e : e.nodes; + if (this.nodes.length) + return this; + return new If(not(cond), e instanceof If ? [e] : e.nodes); + } + if (cond === false || !this.nodes.length) + return undefined; + return this; + } + optimizeNames(names, constants) { + var _a; + this.else = (_a = this.else) === null || _a === void 0 ? void 0 : _a.optimizeNames(names, constants); + if (!(super.optimizeNames(names, constants) || this.else)) + return; + this.condition = optimizeExpr(this.condition, names, constants); + return this; + } + get names() { + const names = super.names; + addExprNames(names, this.condition); + if (this.else) + addNames(names, this.else.names); + return names; + } +} +If.kind = "if"; +class For extends BlockNode { +} +For.kind = "for"; +class ForLoop extends For { + constructor(iteration) { + super(); + this.iteration = iteration; + } + render(opts) { + return `for(${this.iteration})` + super.render(opts); + } + optimizeNames(names, constants) { + if (!super.optimizeNames(names, constants)) + return; + this.iteration = optimizeExpr(this.iteration, names, constants); + return this; + } + get names() { + return addNames(super.names, this.iteration.names); + } +} +class ForRange extends For { + constructor(varKind, name, from, to) { + super(); + this.varKind = varKind; + this.name = name; + this.from = from; + this.to = to; + } + render(opts) { + const varKind = opts.es5 ? scope_1.varKinds.var : this.varKind; + const { name, from, to } = this; + return `for(${varKind} ${name}=${from}; ${name}<${to}; ${name}++)` + super.render(opts); + } + get names() { + const names = addExprNames(super.names, this.from); + return addExprNames(names, this.to); + } +} +class ForIter extends For { + constructor(loop, varKind, name, iterable) { + super(); + this.loop = loop; + this.varKind = varKind; + this.name = name; + this.iterable = iterable; + } + render(opts) { + return `for(${this.varKind} ${this.name} ${this.loop} ${this.iterable})` + super.render(opts); + } + optimizeNames(names, constants) { + if (!super.optimizeNames(names, constants)) + return; + this.iterable = optimizeExpr(this.iterable, names, constants); + return this; + } + get names() { + return addNames(super.names, this.iterable.names); + } +} +class Func extends BlockNode { + constructor(name, args, async) { + super(); + this.name = name; + this.args = args; + this.async = async; + } + render(opts) { + const _async = this.async ? "async " : ""; + return `${_async}function ${this.name}(${this.args})` + super.render(opts); + } +} +Func.kind = "func"; +class Return extends ParentNode { + render(opts) { + return "return " + super.render(opts); + } +} +Return.kind = "return"; +class Try extends BlockNode { + render(opts) { + let code = "try" + super.render(opts); + if (this.catch) + code += this.catch.render(opts); + if (this.finally) + code += this.finally.render(opts); + return code; + } + optimizeNodes() { + var _a, _b; + super.optimizeNodes(); + (_a = this.catch) === null || _a === void 0 ? void 0 : _a.optimizeNodes(); + (_b = this.finally) === null || _b === void 0 ? void 0 : _b.optimizeNodes(); + return this; + } + optimizeNames(names, constants) { + var _a, _b; + super.optimizeNames(names, constants); + (_a = this.catch) === null || _a === void 0 ? void 0 : _a.optimizeNames(names, constants); + (_b = this.finally) === null || _b === void 0 ? void 0 : _b.optimizeNames(names, constants); + return this; + } + get names() { + const names = super.names; + if (this.catch) + addNames(names, this.catch.names); + if (this.finally) + addNames(names, this.finally.names); + return names; + } +} +class Catch extends BlockNode { + constructor(error) { + super(); + this.error = error; + } + render(opts) { + return `catch(${this.error})` + super.render(opts); + } +} +Catch.kind = "catch"; +class Finally extends BlockNode { + render(opts) { + return "finally" + super.render(opts); + } +} +Finally.kind = "finally"; +class CodeGen { + constructor(extScope, opts = {}) { + this._values = {}; + this._blockStarts = []; + this._constants = {}; + this.opts = { ...opts, _n: opts.lines ? "\n" : "" }; + this._extScope = extScope; + this._scope = new scope_1.Scope({ parent: extScope }); + this._nodes = [new Root()]; + } + toString() { + return this._root.render(this.opts); + } + // returns unique name in the internal scope + name(prefix) { + return this._scope.name(prefix); + } + // reserves unique name in the external scope + scopeName(prefix) { + return this._extScope.name(prefix); + } + // reserves unique name in the external scope and assigns value to it + scopeValue(prefixOrName, value) { + const name = this._extScope.value(prefixOrName, value); + const vs = this._values[name.prefix] || (this._values[name.prefix] = new Set()); + vs.add(name); + return name; + } + getScopeValue(prefix, keyOrRef) { + return this._extScope.getValue(prefix, keyOrRef); + } + // return code that assigns values in the external scope to the names that are used internally + // (same names that were returned by gen.scopeName or gen.scopeValue) + scopeRefs(scopeName) { + return this._extScope.scopeRefs(scopeName, this._values); + } + scopeCode() { + return this._extScope.scopeCode(this._values); + } + _def(varKind, nameOrPrefix, rhs, constant) { + const name = this._scope.toName(nameOrPrefix); + if (rhs !== undefined && constant) + this._constants[name.str] = rhs; + this._leafNode(new Def(varKind, name, rhs)); + return name; + } + // `const` declaration (`var` in es5 mode) + const(nameOrPrefix, rhs, _constant) { + return this._def(scope_1.varKinds.const, nameOrPrefix, rhs, _constant); + } + // `let` declaration with optional assignment (`var` in es5 mode) + let(nameOrPrefix, rhs, _constant) { + return this._def(scope_1.varKinds.let, nameOrPrefix, rhs, _constant); + } + // `var` declaration with optional assignment + var(nameOrPrefix, rhs, _constant) { + return this._def(scope_1.varKinds.var, nameOrPrefix, rhs, _constant); + } + // assignment code + assign(lhs, rhs, sideEffects) { + return this._leafNode(new Assign(lhs, rhs, sideEffects)); + } + // `+=` code + add(lhs, rhs) { + return this._leafNode(new AssignOp(lhs, exports.operators.ADD, rhs)); + } + // appends passed SafeExpr to code or executes Block + code(c) { + if (typeof c == "function") + c(); + else if (c !== code_1.nil) + this._leafNode(new AnyCode(c)); + return this; + } + // returns code for object literal for the passed argument list of key-value pairs + object(...keyValues) { + const code = ["{"]; + for (const [key, value] of keyValues) { + if (code.length > 1) + code.push(","); + code.push(key); + if (key !== value || this.opts.es5) { + code.push(":"); + (0, code_1.addCodeArg)(code, value); + } + } + code.push("}"); + return new code_1._Code(code); + } + // `if` clause (or statement if `thenBody` and, optionally, `elseBody` are passed) + if(condition, thenBody, elseBody) { + this._blockNode(new If(condition)); + if (thenBody && elseBody) { + this.code(thenBody).else().code(elseBody).endIf(); + } + else if (thenBody) { + this.code(thenBody).endIf(); + } + else if (elseBody) { + throw new Error('CodeGen: "else" body without "then" body'); + } + return this; + } + // `else if` clause - invalid without `if` or after `else` clauses + elseIf(condition) { + return this._elseNode(new If(condition)); + } + // `else` clause - only valid after `if` or `else if` clauses + else() { + return this._elseNode(new Else()); + } + // end `if` statement (needed if gen.if was used only with condition) + endIf() { + return this._endBlockNode(If, Else); + } + _for(node, forBody) { + this._blockNode(node); + if (forBody) + this.code(forBody).endFor(); + return this; + } + // a generic `for` clause (or statement if `forBody` is passed) + for(iteration, forBody) { + return this._for(new ForLoop(iteration), forBody); + } + // `for` statement for a range of values + forRange(nameOrPrefix, from, to, forBody, varKind = this.opts.es5 ? scope_1.varKinds.var : scope_1.varKinds.let) { + const name = this._scope.toName(nameOrPrefix); + return this._for(new ForRange(varKind, name, from, to), () => forBody(name)); + } + // `for-of` statement (in es5 mode replace with a normal for loop) + forOf(nameOrPrefix, iterable, forBody, varKind = scope_1.varKinds.const) { + const name = this._scope.toName(nameOrPrefix); + if (this.opts.es5) { + const arr = iterable instanceof code_1.Name ? iterable : this.var("_arr", iterable); + return this.forRange("_i", 0, (0, code_1._) `${arr}.length`, (i) => { + this.var(name, (0, code_1._) `${arr}[${i}]`); + forBody(name); + }); + } + return this._for(new ForIter("of", varKind, name, iterable), () => forBody(name)); + } + // `for-in` statement. + // With option `ownProperties` replaced with a `for-of` loop for object keys + forIn(nameOrPrefix, obj, forBody, varKind = this.opts.es5 ? scope_1.varKinds.var : scope_1.varKinds.const) { + if (this.opts.ownProperties) { + return this.forOf(nameOrPrefix, (0, code_1._) `Object.keys(${obj})`, forBody); + } + const name = this._scope.toName(nameOrPrefix); + return this._for(new ForIter("in", varKind, name, obj), () => forBody(name)); + } + // end `for` loop + endFor() { + return this._endBlockNode(For); + } + // `label` statement + label(label) { + return this._leafNode(new Label(label)); + } + // `break` statement + break(label) { + return this._leafNode(new Break(label)); + } + // `return` statement + return(value) { + const node = new Return(); + this._blockNode(node); + this.code(value); + if (node.nodes.length !== 1) + throw new Error('CodeGen: "return" should have one node'); + return this._endBlockNode(Return); + } + // `try` statement + try(tryBody, catchCode, finallyCode) { + if (!catchCode && !finallyCode) + throw new Error('CodeGen: "try" without "catch" and "finally"'); + const node = new Try(); + this._blockNode(node); + this.code(tryBody); + if (catchCode) { + const error = this.name("e"); + this._currNode = node.catch = new Catch(error); + catchCode(error); + } + if (finallyCode) { + this._currNode = node.finally = new Finally(); + this.code(finallyCode); + } + return this._endBlockNode(Catch, Finally); + } + // `throw` statement + throw(error) { + return this._leafNode(new Throw(error)); + } + // start self-balancing block + block(body, nodeCount) { + this._blockStarts.push(this._nodes.length); + if (body) + this.code(body).endBlock(nodeCount); + return this; + } + // end the current self-balancing block + endBlock(nodeCount) { + const len = this._blockStarts.pop(); + if (len === undefined) + throw new Error("CodeGen: not in self-balancing block"); + const toClose = this._nodes.length - len; + if (toClose < 0 || (nodeCount !== undefined && toClose !== nodeCount)) { + throw new Error(`CodeGen: wrong number of nodes: ${toClose} vs ${nodeCount} expected`); + } + this._nodes.length = len; + return this; + } + // `function` heading (or definition if funcBody is passed) + func(name, args = code_1.nil, async, funcBody) { + this._blockNode(new Func(name, args, async)); + if (funcBody) + this.code(funcBody).endFunc(); + return this; + } + // end function definition + endFunc() { + return this._endBlockNode(Func); + } + optimize(n = 1) { + while (n-- > 0) { + this._root.optimizeNodes(); + this._root.optimizeNames(this._root.names, this._constants); + } + } + _leafNode(node) { + this._currNode.nodes.push(node); + return this; + } + _blockNode(node) { + this._currNode.nodes.push(node); + this._nodes.push(node); + } + _endBlockNode(N1, N2) { + const n = this._currNode; + if (n instanceof N1 || (N2 && n instanceof N2)) { + this._nodes.pop(); + return this; + } + throw new Error(`CodeGen: not in block "${N2 ? `${N1.kind}/${N2.kind}` : N1.kind}"`); + } + _elseNode(node) { + const n = this._currNode; + if (!(n instanceof If)) { + throw new Error('CodeGen: "else" without "if"'); + } + this._currNode = n.else = node; + return this; + } + get _root() { + return this._nodes[0]; + } + get _currNode() { + const ns = this._nodes; + return ns[ns.length - 1]; + } + set _currNode(node) { + const ns = this._nodes; + ns[ns.length - 1] = node; + } +} +exports.CodeGen = CodeGen; +function addNames(names, from) { + for (const n in from) + names[n] = (names[n] || 0) + (from[n] || 0); + return names; +} +function addExprNames(names, from) { + return from instanceof code_1._CodeOrName ? addNames(names, from.names) : names; +} +function optimizeExpr(expr, names, constants) { + if (expr instanceof code_1.Name) + return replaceName(expr); + if (!canOptimize(expr)) + return expr; + return new code_1._Code(expr._items.reduce((items, c) => { + if (c instanceof code_1.Name) + c = replaceName(c); + if (c instanceof code_1._Code) + items.push(...c._items); + else + items.push(c); + return items; + }, [])); + function replaceName(n) { + const c = constants[n.str]; + if (c === undefined || names[n.str] !== 1) + return n; + delete names[n.str]; + return c; + } + function canOptimize(e) { + return (e instanceof code_1._Code && + e._items.some((c) => c instanceof code_1.Name && names[c.str] === 1 && constants[c.str] !== undefined)); + } +} +function subtractNames(names, from) { + for (const n in from) + names[n] = (names[n] || 0) - (from[n] || 0); +} +function not(x) { + return typeof x == "boolean" || typeof x == "number" || x === null ? !x : (0, code_1._) `!${par(x)}`; +} +exports.not = not; +const andCode = mappend(exports.operators.AND); +// boolean AND (&&) expression with the passed arguments +function and(...args) { + return args.reduce(andCode); +} +exports.and = and; +const orCode = mappend(exports.operators.OR); +// boolean OR (||) expression with the passed arguments +function or(...args) { + return args.reduce(orCode); +} +exports.or = or; +function mappend(op) { + return (x, y) => (x === code_1.nil ? y : y === code_1.nil ? x : (0, code_1._) `${par(x)} ${op} ${par(y)}`); +} +function par(x) { + return x instanceof code_1.Name ? x : (0, code_1._) `(${x})`; +} + +},{"./code":37,"./scope":39}],39:[function(require,module,exports){ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ValueScope = exports.ValueScopeName = exports.Scope = exports.varKinds = exports.UsedValueState = void 0; +const code_1 = require("./code"); +class ValueError extends Error { + constructor(name) { + super(`CodeGen: "code" for ${name} not defined`); + this.value = name.value; + } +} +var UsedValueState; +(function (UsedValueState) { + UsedValueState[UsedValueState["Started"] = 0] = "Started"; + UsedValueState[UsedValueState["Completed"] = 1] = "Completed"; +})(UsedValueState = exports.UsedValueState || (exports.UsedValueState = {})); +exports.varKinds = { + const: new code_1.Name("const"), + let: new code_1.Name("let"), + var: new code_1.Name("var"), +}; +class Scope { + constructor({ prefixes, parent } = {}) { + this._names = {}; + this._prefixes = prefixes; + this._parent = parent; + } + toName(nameOrPrefix) { + return nameOrPrefix instanceof code_1.Name ? nameOrPrefix : this.name(nameOrPrefix); + } + name(prefix) { + return new code_1.Name(this._newName(prefix)); + } + _newName(prefix) { + const ng = this._names[prefix] || this._nameGroup(prefix); + return `${prefix}${ng.index++}`; + } + _nameGroup(prefix) { + var _a, _b; + if (((_b = (_a = this._parent) === null || _a === void 0 ? void 0 : _a._prefixes) === null || _b === void 0 ? void 0 : _b.has(prefix)) || (this._prefixes && !this._prefixes.has(prefix))) { + throw new Error(`CodeGen: prefix "${prefix}" is not allowed in this scope`); + } + return (this._names[prefix] = { prefix, index: 0 }); + } +} +exports.Scope = Scope; +class ValueScopeName extends code_1.Name { + constructor(prefix, nameStr) { + super(nameStr); + this.prefix = prefix; + } + setValue(value, { property, itemIndex }) { + this.value = value; + this.scopePath = (0, code_1._) `.${new code_1.Name(property)}[${itemIndex}]`; + } +} +exports.ValueScopeName = ValueScopeName; +const line = (0, code_1._) `\n`; +class ValueScope extends Scope { + constructor(opts) { + super(opts); + this._values = {}; + this._scope = opts.scope; + this.opts = { ...opts, _n: opts.lines ? line : code_1.nil }; + } + get() { + return this._scope; + } + name(prefix) { + return new ValueScopeName(prefix, this._newName(prefix)); + } + value(nameOrPrefix, value) { + var _a; + if (value.ref === undefined) + throw new Error("CodeGen: ref must be passed in value"); + const name = this.toName(nameOrPrefix); + const { prefix } = name; + const valueKey = (_a = value.key) !== null && _a !== void 0 ? _a : value.ref; + let vs = this._values[prefix]; + if (vs) { + const _name = vs.get(valueKey); + if (_name) + return _name; + } + else { + vs = this._values[prefix] = new Map(); + } + vs.set(valueKey, name); + const s = this._scope[prefix] || (this._scope[prefix] = []); + const itemIndex = s.length; + s[itemIndex] = value.ref; + name.setValue(value, { property: prefix, itemIndex }); + return name; + } + getValue(prefix, keyOrRef) { + const vs = this._values[prefix]; + if (!vs) + return; + return vs.get(keyOrRef); + } + scopeRefs(scopeName, values = this._values) { + return this._reduceValues(values, (name) => { + if (name.scopePath === undefined) + throw new Error(`CodeGen: name "${name}" has no value`); + return (0, code_1._) `${scopeName}${name.scopePath}`; + }); + } + scopeCode(values = this._values, usedValues, getCode) { + return this._reduceValues(values, (name) => { + if (name.value === undefined) + throw new Error(`CodeGen: name "${name}" has no value`); + return name.value.code; + }, usedValues, getCode); + } + _reduceValues(values, valueCode, usedValues = {}, getCode) { + let code = code_1.nil; + for (const prefix in values) { + const vs = values[prefix]; + if (!vs) + continue; + const nameSet = (usedValues[prefix] = usedValues[prefix] || new Map()); + vs.forEach((name) => { + if (nameSet.has(name)) + return; + nameSet.set(name, UsedValueState.Started); + let c = valueCode(name); + if (c) { + const def = this.opts.es5 ? exports.varKinds.var : exports.varKinds.const; + code = (0, code_1._) `${code}${def} ${name} = ${c};${this.opts._n}`; + } + else if ((c = getCode === null || getCode === void 0 ? void 0 : getCode(name))) { + code = (0, code_1._) `${code}${c}${this.opts._n}`; + } + else { + throw new ValueError(name); + } + nameSet.set(name, UsedValueState.Completed); + }); + } + return code; + } +} +exports.ValueScope = ValueScope; + +},{"./code":37}],40:[function(require,module,exports){ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.extendErrors = exports.resetErrorsCount = exports.reportExtraError = exports.reportError = exports.keyword$DataError = exports.keywordError = void 0; +const codegen_1 = require("./codegen"); +const util_1 = require("./util"); +const names_1 = require("./names"); +exports.keywordError = { + message: ({ keyword }) => (0, codegen_1.str) `must pass "${keyword}" keyword validation`, +}; +exports.keyword$DataError = { + message: ({ keyword, schemaType }) => schemaType + ? (0, codegen_1.str) `"${keyword}" keyword must be ${schemaType} ($data)` + : (0, codegen_1.str) `"${keyword}" keyword is invalid ($data)`, +}; +function reportError(cxt, error = exports.keywordError, errorPaths, overrideAllErrors) { + const { it } = cxt; + const { gen, compositeRule, allErrors } = it; + const errObj = errorObjectCode(cxt, error, errorPaths); + if (overrideAllErrors !== null && overrideAllErrors !== void 0 ? overrideAllErrors : (compositeRule || allErrors)) { + addError(gen, errObj); + } + else { + returnErrors(it, (0, codegen_1._) `[${errObj}]`); + } +} +exports.reportError = reportError; +function reportExtraError(cxt, error = exports.keywordError, errorPaths) { + const { it } = cxt; + const { gen, compositeRule, allErrors } = it; + const errObj = errorObjectCode(cxt, error, errorPaths); + addError(gen, errObj); + if (!(compositeRule || allErrors)) { + returnErrors(it, names_1.default.vErrors); + } +} +exports.reportExtraError = reportExtraError; +function resetErrorsCount(gen, errsCount) { + gen.assign(names_1.default.errors, errsCount); + gen.if((0, codegen_1._) `${names_1.default.vErrors} !== null`, () => gen.if(errsCount, () => gen.assign((0, codegen_1._) `${names_1.default.vErrors}.length`, errsCount), () => gen.assign(names_1.default.vErrors, null))); +} +exports.resetErrorsCount = resetErrorsCount; +function extendErrors({ gen, keyword, schemaValue, data, errsCount, it, }) { + /* istanbul ignore if */ + if (errsCount === undefined) + throw new Error("ajv implementation error"); + const err = gen.name("err"); + gen.forRange("i", errsCount, names_1.default.errors, (i) => { + gen.const(err, (0, codegen_1._) `${names_1.default.vErrors}[${i}]`); + gen.if((0, codegen_1._) `${err}.instancePath === undefined`, () => gen.assign((0, codegen_1._) `${err}.instancePath`, (0, codegen_1.strConcat)(names_1.default.instancePath, it.errorPath))); + gen.assign((0, codegen_1._) `${err}.schemaPath`, (0, codegen_1.str) `${it.errSchemaPath}/${keyword}`); + if (it.opts.verbose) { + gen.assign((0, codegen_1._) `${err}.schema`, schemaValue); + gen.assign((0, codegen_1._) `${err}.data`, data); + } + }); +} +exports.extendErrors = extendErrors; +function addError(gen, errObj) { + const err = gen.const("err", errObj); + gen.if((0, codegen_1._) `${names_1.default.vErrors} === null`, () => gen.assign(names_1.default.vErrors, (0, codegen_1._) `[${err}]`), (0, codegen_1._) `${names_1.default.vErrors}.push(${err})`); + gen.code((0, codegen_1._) `${names_1.default.errors}++`); +} +function returnErrors(it, errs) { + const { gen, validateName, schemaEnv } = it; + if (schemaEnv.$async) { + gen.throw((0, codegen_1._) `new ${it.ValidationError}(${errs})`); + } + else { + gen.assign((0, codegen_1._) `${validateName}.errors`, errs); + gen.return(false); + } +} +const E = { + keyword: new codegen_1.Name("keyword"), + schemaPath: new codegen_1.Name("schemaPath"), + params: new codegen_1.Name("params"), + propertyName: new codegen_1.Name("propertyName"), + message: new codegen_1.Name("message"), + schema: new codegen_1.Name("schema"), + parentSchema: new codegen_1.Name("parentSchema"), +}; +function errorObjectCode(cxt, error, errorPaths) { + const { createErrors } = cxt.it; + if (createErrors === false) + return (0, codegen_1._) `{}`; + return errorObject(cxt, error, errorPaths); +} +function errorObject(cxt, error, errorPaths = {}) { + const { gen, it } = cxt; + const keyValues = [ + errorInstancePath(it, errorPaths), + errorSchemaPath(cxt, errorPaths), + ]; + extraErrorProps(cxt, error, keyValues); + return gen.object(...keyValues); +} +function errorInstancePath({ errorPath }, { instancePath }) { + const instPath = instancePath + ? (0, codegen_1.str) `${errorPath}${(0, util_1.getErrorPath)(instancePath, util_1.Type.Str)}` + : errorPath; + return [names_1.default.instancePath, (0, codegen_1.strConcat)(names_1.default.instancePath, instPath)]; +} +function errorSchemaPath({ keyword, it: { errSchemaPath } }, { schemaPath, parentSchema }) { + let schPath = parentSchema ? errSchemaPath : (0, codegen_1.str) `${errSchemaPath}/${keyword}`; + if (schemaPath) { + schPath = (0, codegen_1.str) `${schPath}${(0, util_1.getErrorPath)(schemaPath, util_1.Type.Str)}`; + } + return [E.schemaPath, schPath]; +} +function extraErrorProps(cxt, { params, message }, keyValues) { + const { keyword, data, schemaValue, it } = cxt; + const { opts, propertyName, topSchemaRef, schemaPath } = it; + keyValues.push([E.keyword, keyword], [E.params, typeof params == "function" ? params(cxt) : params || (0, codegen_1._) `{}`]); + if (opts.messages) { + keyValues.push([E.message, typeof message == "function" ? message(cxt) : message]); + } + if (opts.verbose) { + keyValues.push([E.schema, schemaValue], [E.parentSchema, (0, codegen_1._) `${topSchemaRef}${schemaPath}`], [names_1.default.data, data]); + } + if (propertyName) + keyValues.push([E.propertyName, propertyName]); +} + +},{"./codegen":38,"./names":42,"./util":46}],41:[function(require,module,exports){ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.resolveSchema = exports.getCompilingSchema = exports.resolveRef = exports.compileSchema = exports.SchemaEnv = void 0; +const codegen_1 = require("./codegen"); +const validation_error_1 = require("../runtime/validation_error"); +const names_1 = require("./names"); +const resolve_1 = require("./resolve"); +const util_1 = require("./util"); +const validate_1 = require("./validate"); +const URI = require("uri-js"); +class SchemaEnv { + constructor(env) { + var _a; + this.refs = {}; + this.dynamicAnchors = {}; + let schema; + if (typeof env.schema == "object") + schema = env.schema; + this.schema = env.schema; + this.schemaId = env.schemaId; + this.root = env.root || this; + this.baseId = (_a = env.baseId) !== null && _a !== void 0 ? _a : (0, resolve_1.normalizeId)(schema === null || schema === void 0 ? void 0 : schema[env.schemaId || "$id"]); + this.schemaPath = env.schemaPath; + this.localRefs = env.localRefs; + this.meta = env.meta; + this.$async = schema === null || schema === void 0 ? void 0 : schema.$async; + this.refs = {}; + } +} +exports.SchemaEnv = SchemaEnv; +// let codeSize = 0 +// let nodeCount = 0 +// Compiles schema in SchemaEnv +function compileSchema(sch) { + // TODO refactor - remove compilations + const _sch = getCompilingSchema.call(this, sch); + if (_sch) + return _sch; + const rootId = (0, resolve_1.getFullPath)(sch.root.baseId); // TODO if getFullPath removed 1 tests fails + const { es5, lines } = this.opts.code; + const { ownProperties } = this.opts; + const gen = new codegen_1.CodeGen(this.scope, { es5, lines, ownProperties }); + let _ValidationError; + if (sch.$async) { + _ValidationError = gen.scopeValue("Error", { + ref: validation_error_1.default, + code: (0, codegen_1._) `require("ajv/dist/runtime/validation_error").default`, + }); + } + const validateName = gen.scopeName("validate"); + sch.validateName = validateName; + const schemaCxt = { + gen, + allErrors: this.opts.allErrors, + data: names_1.default.data, + parentData: names_1.default.parentData, + parentDataProperty: names_1.default.parentDataProperty, + dataNames: [names_1.default.data], + dataPathArr: [codegen_1.nil], + dataLevel: 0, + dataTypes: [], + definedProperties: new Set(), + topSchemaRef: gen.scopeValue("schema", this.opts.code.source === true + ? { ref: sch.schema, code: (0, codegen_1.stringify)(sch.schema) } + : { ref: sch.schema }), + validateName, + ValidationError: _ValidationError, + schema: sch.schema, + schemaEnv: sch, + rootId, + baseId: sch.baseId || rootId, + schemaPath: codegen_1.nil, + errSchemaPath: sch.schemaPath || (this.opts.jtd ? "" : "#"), + errorPath: (0, codegen_1._) `""`, + opts: this.opts, + self: this, + }; + let sourceCode; + try { + this._compilations.add(sch); + (0, validate_1.validateFunctionCode)(schemaCxt); + gen.optimize(this.opts.code.optimize); + // gen.optimize(1) + const validateCode = gen.toString(); + sourceCode = `${gen.scopeRefs(names_1.default.scope)}return ${validateCode}`; + // console.log((codeSize += sourceCode.length), (nodeCount += gen.nodeCount)) + if (this.opts.code.process) + sourceCode = this.opts.code.process(sourceCode, sch); + // console.log("\n\n\n *** \n", sourceCode) + const makeValidate = new Function(`${names_1.default.self}`, `${names_1.default.scope}`, sourceCode); + const validate = makeValidate(this, this.scope.get()); + this.scope.value(validateName, { ref: validate }); + validate.errors = null; + validate.schema = sch.schema; + validate.schemaEnv = sch; + if (sch.$async) + validate.$async = true; + if (this.opts.code.source === true) { + validate.source = { validateName, validateCode, scopeValues: gen._values }; + } + if (this.opts.unevaluated) { + const { props, items } = schemaCxt; + validate.evaluated = { + props: props instanceof codegen_1.Name ? undefined : props, + items: items instanceof codegen_1.Name ? undefined : items, + dynamicProps: props instanceof codegen_1.Name, + dynamicItems: items instanceof codegen_1.Name, + }; + if (validate.source) + validate.source.evaluated = (0, codegen_1.stringify)(validate.evaluated); + } + sch.validate = validate; + return sch; + } + catch (e) { + delete sch.validate; + delete sch.validateName; + if (sourceCode) + this.logger.error("Error compiling schema, function code:", sourceCode); + // console.log("\n\n\n *** \n", sourceCode, this.opts) + throw e; + } + finally { + this._compilations.delete(sch); + } +} +exports.compileSchema = compileSchema; +function resolveRef(root, baseId, ref) { + var _a; + ref = (0, resolve_1.resolveUrl)(baseId, ref); + const schOrFunc = root.refs[ref]; + if (schOrFunc) + return schOrFunc; + let _sch = resolve.call(this, root, ref); + if (_sch === undefined) { + const schema = (_a = root.localRefs) === null || _a === void 0 ? void 0 : _a[ref]; // TODO maybe localRefs should hold SchemaEnv + const { schemaId } = this.opts; + if (schema) + _sch = new SchemaEnv({ schema, schemaId, root, baseId }); + } + if (_sch === undefined) + return; + return (root.refs[ref] = inlineOrCompile.call(this, _sch)); +} +exports.resolveRef = resolveRef; +function inlineOrCompile(sch) { + if ((0, resolve_1.inlineRef)(sch.schema, this.opts.inlineRefs)) + return sch.schema; + return sch.validate ? sch : compileSchema.call(this, sch); +} +// Index of schema compilation in the currently compiled list +function getCompilingSchema(schEnv) { + for (const sch of this._compilations) { + if (sameSchemaEnv(sch, schEnv)) + return sch; + } +} +exports.getCompilingSchema = getCompilingSchema; +function sameSchemaEnv(s1, s2) { + return s1.schema === s2.schema && s1.root === s2.root && s1.baseId === s2.baseId; +} +// resolve and compile the references ($ref) +// TODO returns AnySchemaObject (if the schema can be inlined) or validation function +function resolve(root, // information about the root schema for the current schema +ref // reference to resolve +) { + let sch; + while (typeof (sch = this.refs[ref]) == "string") + ref = sch; + return sch || this.schemas[ref] || resolveSchema.call(this, root, ref); +} +// Resolve schema, its root and baseId +function resolveSchema(root, // root object with properties schema, refs TODO below SchemaEnv is assigned to it +ref // reference to resolve +) { + const p = URI.parse(ref); + const refPath = (0, resolve_1._getFullPath)(p); + let baseId = (0, resolve_1.getFullPath)(root.baseId); + // TODO `Object.keys(root.schema).length > 0` should not be needed - but removing breaks 2 tests + if (Object.keys(root.schema).length > 0 && refPath === baseId) { + return getJsonPointer.call(this, p, root); + } + const id = (0, resolve_1.normalizeId)(refPath); + const schOrRef = this.refs[id] || this.schemas[id]; + if (typeof schOrRef == "string") { + const sch = resolveSchema.call(this, root, schOrRef); + if (typeof (sch === null || sch === void 0 ? void 0 : sch.schema) !== "object") + return; + return getJsonPointer.call(this, p, sch); + } + if (typeof (schOrRef === null || schOrRef === void 0 ? void 0 : schOrRef.schema) !== "object") + return; + if (!schOrRef.validate) + compileSchema.call(this, schOrRef); + if (id === (0, resolve_1.normalizeId)(ref)) { + const { schema } = schOrRef; + const { schemaId } = this.opts; + const schId = schema[schemaId]; + if (schId) + baseId = (0, resolve_1.resolveUrl)(baseId, schId); + return new SchemaEnv({ schema, schemaId, root, baseId }); + } + return getJsonPointer.call(this, p, schOrRef); +} +exports.resolveSchema = resolveSchema; +const PREVENT_SCOPE_CHANGE = new Set([ + "properties", + "patternProperties", + "enum", + "dependencies", + "definitions", +]); +function getJsonPointer(parsedRef, { baseId, schema, root }) { + var _a; + if (((_a = parsedRef.fragment) === null || _a === void 0 ? void 0 : _a[0]) !== "/") + return; + for (const part of parsedRef.fragment.slice(1).split("/")) { + if (typeof schema === "boolean") + return; + const partSchema = schema[(0, util_1.unescapeFragment)(part)]; + if (partSchema === undefined) + return; + schema = partSchema; + // TODO PREVENT_SCOPE_CHANGE could be defined in keyword def? + const schId = typeof schema === "object" && schema[this.opts.schemaId]; + if (!PREVENT_SCOPE_CHANGE.has(part) && schId) { + baseId = (0, resolve_1.resolveUrl)(baseId, schId); + } + } + let env; + if (typeof schema != "boolean" && schema.$ref && !(0, util_1.schemaHasRulesButRef)(schema, this.RULES)) { + const $ref = (0, resolve_1.resolveUrl)(baseId, schema.$ref); + env = resolveSchema.call(this, root, $ref); + } + // even though resolution failed we need to return SchemaEnv to throw exception + // so that compileAsync loads missing schema. + const { schemaId } = this.opts; + env = env || new SchemaEnv({ schema, schemaId, root, baseId }); + if (env.schema !== env.root.schema) + return env; + return undefined; +} + +},{"../runtime/validation_error":59,"./codegen":38,"./names":42,"./resolve":44,"./util":46,"./validate":51,"uri-js":111}],42:[function(require,module,exports){ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const codegen_1 = require("./codegen"); +const names = { + // validation function arguments + data: new codegen_1.Name("data"), + // args passed from referencing schema + valCxt: new codegen_1.Name("valCxt"), + instancePath: new codegen_1.Name("instancePath"), + parentData: new codegen_1.Name("parentData"), + parentDataProperty: new codegen_1.Name("parentDataProperty"), + rootData: new codegen_1.Name("rootData"), + dynamicAnchors: new codegen_1.Name("dynamicAnchors"), + // function scoped variables + vErrors: new codegen_1.Name("vErrors"), + errors: new codegen_1.Name("errors"), + this: new codegen_1.Name("this"), + // "globals" + self: new codegen_1.Name("self"), + scope: new codegen_1.Name("scope"), + // JTD serialize/parse name for JSON string and position + json: new codegen_1.Name("json"), + jsonPos: new codegen_1.Name("jsonPos"), + jsonLen: new codegen_1.Name("jsonLen"), + jsonPart: new codegen_1.Name("jsonPart"), +}; +exports.default = names; + +},{"./codegen":38}],43:[function(require,module,exports){ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const resolve_1 = require("./resolve"); +class MissingRefError extends Error { + constructor(baseId, ref, msg) { + super(msg || `can't resolve reference ${ref} from id ${baseId}`); + this.missingRef = (0, resolve_1.resolveUrl)(baseId, ref); + this.missingSchema = (0, resolve_1.normalizeId)((0, resolve_1.getFullPath)(this.missingRef)); + } +} +exports.default = MissingRefError; + +},{"./resolve":44}],44:[function(require,module,exports){ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getSchemaRefs = exports.resolveUrl = exports.normalizeId = exports._getFullPath = exports.getFullPath = exports.inlineRef = void 0; +const util_1 = require("./util"); +const equal = require("fast-deep-equal"); +const traverse = require("json-schema-traverse"); +const URI = require("uri-js"); +// TODO refactor to use keyword definitions +const SIMPLE_INLINED = new Set([ + "type", + "format", + "pattern", + "maxLength", + "minLength", + "maxProperties", + "minProperties", + "maxItems", + "minItems", + "maximum", + "minimum", + "uniqueItems", + "multipleOf", + "required", + "enum", + "const", +]); +function inlineRef(schema, limit = true) { + if (typeof schema == "boolean") + return true; + if (limit === true) + return !hasRef(schema); + if (!limit) + return false; + return countKeys(schema) <= limit; +} +exports.inlineRef = inlineRef; +const REF_KEYWORDS = new Set([ + "$ref", + "$recursiveRef", + "$recursiveAnchor", + "$dynamicRef", + "$dynamicAnchor", +]); +function hasRef(schema) { + for (const key in schema) { + if (REF_KEYWORDS.has(key)) + return true; + const sch = schema[key]; + if (Array.isArray(sch) && sch.some(hasRef)) + return true; + if (typeof sch == "object" && hasRef(sch)) + return true; + } + return false; +} +function countKeys(schema) { + let count = 0; + for (const key in schema) { + if (key === "$ref") + return Infinity; + count++; + if (SIMPLE_INLINED.has(key)) + continue; + if (typeof schema[key] == "object") { + (0, util_1.eachItem)(schema[key], (sch) => (count += countKeys(sch))); + } + if (count === Infinity) + return Infinity; + } + return count; +} +function getFullPath(id = "", normalize) { + if (normalize !== false) + id = normalizeId(id); + const p = URI.parse(id); + return _getFullPath(p); +} +exports.getFullPath = getFullPath; +function _getFullPath(p) { + return URI.serialize(p).split("#")[0] + "#"; +} +exports._getFullPath = _getFullPath; +const TRAILING_SLASH_HASH = /#\/?$/; +function normalizeId(id) { + return id ? id.replace(TRAILING_SLASH_HASH, "") : ""; +} +exports.normalizeId = normalizeId; +function resolveUrl(baseId, id) { + id = normalizeId(id); + return URI.resolve(baseId, id); +} +exports.resolveUrl = resolveUrl; +const ANCHOR = /^[a-z_][-a-z0-9._]*$/i; +function getSchemaRefs(schema, baseId) { + if (typeof schema == "boolean") + return {}; + const { schemaId } = this.opts; + const schId = normalizeId(schema[schemaId] || baseId); + const baseIds = { "": schId }; + const pathPrefix = getFullPath(schId, false); + const localRefs = {}; + const schemaRefs = new Set(); + traverse(schema, { allKeys: true }, (sch, jsonPtr, _, parentJsonPtr) => { + if (parentJsonPtr === undefined) + return; + const fullPath = pathPrefix + jsonPtr; + let baseId = baseIds[parentJsonPtr]; + if (typeof sch[schemaId] == "string") + baseId = addRef.call(this, sch[schemaId]); + addAnchor.call(this, sch.$anchor); + addAnchor.call(this, sch.$dynamicAnchor); + baseIds[jsonPtr] = baseId; + function addRef(ref) { + ref = normalizeId(baseId ? URI.resolve(baseId, ref) : ref); + if (schemaRefs.has(ref)) + throw ambiguos(ref); + schemaRefs.add(ref); + let schOrRef = this.refs[ref]; + if (typeof schOrRef == "string") + schOrRef = this.refs[schOrRef]; + if (typeof schOrRef == "object") { + checkAmbiguosRef(sch, schOrRef.schema, ref); + } + else if (ref !== normalizeId(fullPath)) { + if (ref[0] === "#") { + checkAmbiguosRef(sch, localRefs[ref], ref); + localRefs[ref] = sch; + } + else { + this.refs[ref] = fullPath; + } + } + return ref; + } + function addAnchor(anchor) { + if (typeof anchor == "string") { + if (!ANCHOR.test(anchor)) + throw new Error(`invalid anchor "${anchor}"`); + addRef.call(this, `#${anchor}`); + } + } + }); + return localRefs; + function checkAmbiguosRef(sch1, sch2, ref) { + if (sch2 !== undefined && !equal(sch1, sch2)) + throw ambiguos(ref); + } + function ambiguos(ref) { + return new Error(`reference "${ref}" resolves to more than one schema`); + } +} +exports.getSchemaRefs = getSchemaRefs; + +},{"./util":46,"fast-deep-equal":99,"json-schema-traverse":100,"uri-js":111}],45:[function(require,module,exports){ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getRules = exports.isJSONType = void 0; +const _jsonTypes = ["string", "number", "integer", "boolean", "null", "object", "array"]; +const jsonTypes = new Set(_jsonTypes); +function isJSONType(x) { + return typeof x == "string" && jsonTypes.has(x); +} +exports.isJSONType = isJSONType; +function getRules() { + const groups = { + number: { type: "number", rules: [] }, + string: { type: "string", rules: [] }, + array: { type: "array", rules: [] }, + object: { type: "object", rules: [] }, + }; + return { + types: { ...groups, integer: true, boolean: true, null: true }, + rules: [{ rules: [] }, groups.number, groups.string, groups.array, groups.object], + post: { rules: [] }, + all: {}, + keywords: {}, + }; +} +exports.getRules = getRules; + +},{}],46:[function(require,module,exports){ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.checkStrictMode = exports.getErrorPath = exports.Type = exports.useFunc = exports.setEvaluated = exports.evaluatedPropsToName = exports.mergeEvaluated = exports.eachItem = exports.unescapeJsonPointer = exports.escapeJsonPointer = exports.escapeFragment = exports.unescapeFragment = exports.schemaRefOrVal = exports.schemaHasRulesButRef = exports.schemaHasRules = exports.checkUnknownRules = exports.alwaysValidSchema = exports.toHash = void 0; +const codegen_1 = require("./codegen"); +const code_1 = require("./codegen/code"); +// TODO refactor to use Set +function toHash(arr) { + const hash = {}; + for (const item of arr) + hash[item] = true; + return hash; +} +exports.toHash = toHash; +function alwaysValidSchema(it, schema) { + if (typeof schema == "boolean") + return schema; + if (Object.keys(schema).length === 0) + return true; + checkUnknownRules(it, schema); + return !schemaHasRules(schema, it.self.RULES.all); +} +exports.alwaysValidSchema = alwaysValidSchema; +function checkUnknownRules(it, schema = it.schema) { + const { opts, self } = it; + if (!opts.strictSchema) + return; + if (typeof schema === "boolean") + return; + const rules = self.RULES.keywords; + for (const key in schema) { + if (!rules[key]) + checkStrictMode(it, `unknown keyword: "${key}"`); + } +} +exports.checkUnknownRules = checkUnknownRules; +function schemaHasRules(schema, rules) { + if (typeof schema == "boolean") + return !schema; + for (const key in schema) + if (rules[key]) + return true; + return false; +} +exports.schemaHasRules = schemaHasRules; +function schemaHasRulesButRef(schema, RULES) { + if (typeof schema == "boolean") + return !schema; + for (const key in schema) + if (key !== "$ref" && RULES.all[key]) + return true; + return false; +} +exports.schemaHasRulesButRef = schemaHasRulesButRef; +function schemaRefOrVal({ topSchemaRef, schemaPath }, schema, keyword, $data) { + if (!$data) { + if (typeof schema == "number" || typeof schema == "boolean") + return schema; + if (typeof schema == "string") + return (0, codegen_1._) `${schema}`; + } + return (0, codegen_1._) `${topSchemaRef}${schemaPath}${(0, codegen_1.getProperty)(keyword)}`; +} +exports.schemaRefOrVal = schemaRefOrVal; +function unescapeFragment(str) { + return unescapeJsonPointer(decodeURIComponent(str)); +} +exports.unescapeFragment = unescapeFragment; +function escapeFragment(str) { + return encodeURIComponent(escapeJsonPointer(str)); +} +exports.escapeFragment = escapeFragment; +function escapeJsonPointer(str) { + if (typeof str == "number") + return `${str}`; + return str.replace(/~/g, "~0").replace(/\//g, "~1"); +} +exports.escapeJsonPointer = escapeJsonPointer; +function unescapeJsonPointer(str) { + return str.replace(/~1/g, "/").replace(/~0/g, "~"); +} +exports.unescapeJsonPointer = unescapeJsonPointer; +function eachItem(xs, f) { + if (Array.isArray(xs)) { + for (const x of xs) + f(x); + } + else { + f(xs); + } +} +exports.eachItem = eachItem; +function makeMergeEvaluated({ mergeNames, mergeToName, mergeValues, resultToName, }) { + return (gen, from, to, toName) => { + const res = to === undefined + ? from + : to instanceof codegen_1.Name + ? (from instanceof codegen_1.Name ? mergeNames(gen, from, to) : mergeToName(gen, from, to), to) + : from instanceof codegen_1.Name + ? (mergeToName(gen, to, from), from) + : mergeValues(from, to); + return toName === codegen_1.Name && !(res instanceof codegen_1.Name) ? resultToName(gen, res) : res; + }; +} +exports.mergeEvaluated = { + props: makeMergeEvaluated({ + mergeNames: (gen, from, to) => gen.if((0, codegen_1._) `${to} !== true && ${from} !== undefined`, () => { + gen.if((0, codegen_1._) `${from} === true`, () => gen.assign(to, true), () => gen.assign(to, (0, codegen_1._) `${to} || {}`).code((0, codegen_1._) `Object.assign(${to}, ${from})`)); + }), + mergeToName: (gen, from, to) => gen.if((0, codegen_1._) `${to} !== true`, () => { + if (from === true) { + gen.assign(to, true); + } + else { + gen.assign(to, (0, codegen_1._) `${to} || {}`); + setEvaluated(gen, to, from); + } + }), + mergeValues: (from, to) => (from === true ? true : { ...from, ...to }), + resultToName: evaluatedPropsToName, + }), + items: makeMergeEvaluated({ + mergeNames: (gen, from, to) => gen.if((0, codegen_1._) `${to} !== true && ${from} !== undefined`, () => gen.assign(to, (0, codegen_1._) `${from} === true ? true : ${to} > ${from} ? ${to} : ${from}`)), + mergeToName: (gen, from, to) => gen.if((0, codegen_1._) `${to} !== true`, () => gen.assign(to, from === true ? true : (0, codegen_1._) `${to} > ${from} ? ${to} : ${from}`)), + mergeValues: (from, to) => (from === true ? true : Math.max(from, to)), + resultToName: (gen, items) => gen.var("items", items), + }), +}; +function evaluatedPropsToName(gen, ps) { + if (ps === true) + return gen.var("props", true); + const props = gen.var("props", (0, codegen_1._) `{}`); + if (ps !== undefined) + setEvaluated(gen, props, ps); + return props; +} +exports.evaluatedPropsToName = evaluatedPropsToName; +function setEvaluated(gen, props, ps) { + Object.keys(ps).forEach((p) => gen.assign((0, codegen_1._) `${props}${(0, codegen_1.getProperty)(p)}`, true)); +} +exports.setEvaluated = setEvaluated; +const snippets = {}; +function useFunc(gen, f) { + return gen.scopeValue("func", { + ref: f, + code: snippets[f.code] || (snippets[f.code] = new code_1._Code(f.code)), + }); +} +exports.useFunc = useFunc; +var Type; +(function (Type) { + Type[Type["Num"] = 0] = "Num"; + Type[Type["Str"] = 1] = "Str"; +})(Type = exports.Type || (exports.Type = {})); +function getErrorPath(dataProp, dataPropType, jsPropertySyntax) { + // let path + if (dataProp instanceof codegen_1.Name) { + const isNumber = dataPropType === Type.Num; + return jsPropertySyntax + ? isNumber + ? (0, codegen_1._) `"[" + ${dataProp} + "]"` + : (0, codegen_1._) `"['" + ${dataProp} + "']"` + : isNumber + ? (0, codegen_1._) `"/" + ${dataProp}` + : (0, codegen_1._) `"/" + ${dataProp}.replace(/~/g, "~0").replace(/\\//g, "~1")`; // TODO maybe use global escapePointer + } + return jsPropertySyntax ? (0, codegen_1.getProperty)(dataProp).toString() : "/" + escapeJsonPointer(dataProp); +} +exports.getErrorPath = getErrorPath; +function checkStrictMode(it, msg, mode = it.opts.strictSchema) { + if (!mode) + return; + msg = `strict mode: ${msg}`; + if (mode === true) + throw new Error(msg); + it.self.logger.warn(msg); +} +exports.checkStrictMode = checkStrictMode; + +},{"./codegen":38,"./codegen/code":37}],47:[function(require,module,exports){ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.shouldUseRule = exports.shouldUseGroup = exports.schemaHasRulesForType = void 0; +function schemaHasRulesForType({ schema, self }, type) { + const group = self.RULES.types[type]; + return group && group !== true && shouldUseGroup(schema, group); +} +exports.schemaHasRulesForType = schemaHasRulesForType; +function shouldUseGroup(schema, group) { + return group.rules.some((rule) => shouldUseRule(schema, rule)); +} +exports.shouldUseGroup = shouldUseGroup; +function shouldUseRule(schema, rule) { + var _a; + return (schema[rule.keyword] !== undefined || + ((_a = rule.definition.implements) === null || _a === void 0 ? void 0 : _a.some((kwd) => schema[kwd] !== undefined))); +} +exports.shouldUseRule = shouldUseRule; + +},{}],48:[function(require,module,exports){ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.boolOrEmptySchema = exports.topBoolOrEmptySchema = void 0; +const errors_1 = require("../errors"); +const codegen_1 = require("../codegen"); +const names_1 = require("../names"); +const boolError = { + message: "boolean schema is false", +}; +function topBoolOrEmptySchema(it) { + const { gen, schema, validateName } = it; + if (schema === false) { + falseSchemaError(it, false); + } + else if (typeof schema == "object" && schema.$async === true) { + gen.return(names_1.default.data); + } + else { + gen.assign((0, codegen_1._) `${validateName}.errors`, null); + gen.return(true); + } +} +exports.topBoolOrEmptySchema = topBoolOrEmptySchema; +function boolOrEmptySchema(it, valid) { + const { gen, schema } = it; + if (schema === false) { + gen.var(valid, false); // TODO var + falseSchemaError(it); + } + else { + gen.var(valid, true); // TODO var + } +} +exports.boolOrEmptySchema = boolOrEmptySchema; +function falseSchemaError(it, overrideAllErrors) { + const { gen, data } = it; + // TODO maybe some other interface should be used for non-keyword validation errors... + const cxt = { + gen, + keyword: "false schema", + data, + schema: false, + schemaCode: false, + schemaValue: false, + params: {}, + it, + }; + (0, errors_1.reportError)(cxt, boolError, undefined, overrideAllErrors); +} + +},{"../codegen":38,"../errors":40,"../names":42}],49:[function(require,module,exports){ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.reportTypeError = exports.checkDataTypes = exports.checkDataType = exports.coerceAndCheckDataType = exports.getJSONTypes = exports.getSchemaTypes = exports.DataType = void 0; +const rules_1 = require("../rules"); +const applicability_1 = require("./applicability"); +const errors_1 = require("../errors"); +const codegen_1 = require("../codegen"); +const util_1 = require("../util"); +var DataType; +(function (DataType) { + DataType[DataType["Correct"] = 0] = "Correct"; + DataType[DataType["Wrong"] = 1] = "Wrong"; +})(DataType = exports.DataType || (exports.DataType = {})); +function getSchemaTypes(schema) { + const types = getJSONTypes(schema.type); + const hasNull = types.includes("null"); + if (hasNull) { + if (schema.nullable === false) + throw new Error("type: null contradicts nullable: false"); + } + else { + if (!types.length && schema.nullable !== undefined) { + throw new Error('"nullable" cannot be used without "type"'); + } + if (schema.nullable === true) + types.push("null"); + } + return types; +} +exports.getSchemaTypes = getSchemaTypes; +function getJSONTypes(ts) { + const types = Array.isArray(ts) ? ts : ts ? [ts] : []; + if (types.every(rules_1.isJSONType)) + return types; + throw new Error("type must be JSONType or JSONType[]: " + types.join(",")); +} +exports.getJSONTypes = getJSONTypes; +function coerceAndCheckDataType(it, types) { + const { gen, data, opts } = it; + const coerceTo = coerceToTypes(types, opts.coerceTypes); + const checkTypes = types.length > 0 && + !(coerceTo.length === 0 && types.length === 1 && (0, applicability_1.schemaHasRulesForType)(it, types[0])); + if (checkTypes) { + const wrongType = checkDataTypes(types, data, opts.strictNumbers, DataType.Wrong); + gen.if(wrongType, () => { + if (coerceTo.length) + coerceData(it, types, coerceTo); + else + reportTypeError(it); + }); + } + return checkTypes; +} +exports.coerceAndCheckDataType = coerceAndCheckDataType; +const COERCIBLE = new Set(["string", "number", "integer", "boolean", "null"]); +function coerceToTypes(types, coerceTypes) { + return coerceTypes + ? types.filter((t) => COERCIBLE.has(t) || (coerceTypes === "array" && t === "array")) + : []; +} +function coerceData(it, types, coerceTo) { + const { gen, data, opts } = it; + const dataType = gen.let("dataType", (0, codegen_1._) `typeof ${data}`); + const coerced = gen.let("coerced", (0, codegen_1._) `undefined`); + if (opts.coerceTypes === "array") { + gen.if((0, codegen_1._) `${dataType} == 'object' && Array.isArray(${data}) && ${data}.length == 1`, () => gen + .assign(data, (0, codegen_1._) `${data}[0]`) + .assign(dataType, (0, codegen_1._) `typeof ${data}`) + .if(checkDataTypes(types, data, opts.strictNumbers), () => gen.assign(coerced, data))); + } + gen.if((0, codegen_1._) `${coerced} !== undefined`); + for (const t of coerceTo) { + if (COERCIBLE.has(t) || (t === "array" && opts.coerceTypes === "array")) { + coerceSpecificType(t); + } + } + gen.else(); + reportTypeError(it); + gen.endIf(); + gen.if((0, codegen_1._) `${coerced} !== undefined`, () => { + gen.assign(data, coerced); + assignParentData(it, coerced); + }); + function coerceSpecificType(t) { + switch (t) { + case "string": + gen + .elseIf((0, codegen_1._) `${dataType} == "number" || ${dataType} == "boolean"`) + .assign(coerced, (0, codegen_1._) `"" + ${data}`) + .elseIf((0, codegen_1._) `${data} === null`) + .assign(coerced, (0, codegen_1._) `""`); + return; + case "number": + gen + .elseIf((0, codegen_1._) `${dataType} == "boolean" || ${data} === null + || (${dataType} == "string" && ${data} && ${data} == +${data})`) + .assign(coerced, (0, codegen_1._) `+${data}`); + return; + case "integer": + gen + .elseIf((0, codegen_1._) `${dataType} === "boolean" || ${data} === null + || (${dataType} === "string" && ${data} && ${data} == +${data} && !(${data} % 1))`) + .assign(coerced, (0, codegen_1._) `+${data}`); + return; + case "boolean": + gen + .elseIf((0, codegen_1._) `${data} === "false" || ${data} === 0 || ${data} === null`) + .assign(coerced, false) + .elseIf((0, codegen_1._) `${data} === "true" || ${data} === 1`) + .assign(coerced, true); + return; + case "null": + gen.elseIf((0, codegen_1._) `${data} === "" || ${data} === 0 || ${data} === false`); + gen.assign(coerced, null); + return; + case "array": + gen + .elseIf((0, codegen_1._) `${dataType} === "string" || ${dataType} === "number" + || ${dataType} === "boolean" || ${data} === null`) + .assign(coerced, (0, codegen_1._) `[${data}]`); + } + } +} +function assignParentData({ gen, parentData, parentDataProperty }, expr) { + // TODO use gen.property + gen.if((0, codegen_1._) `${parentData} !== undefined`, () => gen.assign((0, codegen_1._) `${parentData}[${parentDataProperty}]`, expr)); +} +function checkDataType(dataType, data, strictNums, correct = DataType.Correct) { + const EQ = correct === DataType.Correct ? codegen_1.operators.EQ : codegen_1.operators.NEQ; + let cond; + switch (dataType) { + case "null": + return (0, codegen_1._) `${data} ${EQ} null`; + case "array": + cond = (0, codegen_1._) `Array.isArray(${data})`; + break; + case "object": + cond = (0, codegen_1._) `${data} && typeof ${data} == "object" && !Array.isArray(${data})`; + break; + case "integer": + cond = numCond((0, codegen_1._) `!(${data} % 1) && !isNaN(${data})`); + break; + case "number": + cond = numCond(); + break; + default: + return (0, codegen_1._) `typeof ${data} ${EQ} ${dataType}`; + } + return correct === DataType.Correct ? cond : (0, codegen_1.not)(cond); + function numCond(_cond = codegen_1.nil) { + return (0, codegen_1.and)((0, codegen_1._) `typeof ${data} == "number"`, _cond, strictNums ? (0, codegen_1._) `isFinite(${data})` : codegen_1.nil); + } +} +exports.checkDataType = checkDataType; +function checkDataTypes(dataTypes, data, strictNums, correct) { + if (dataTypes.length === 1) { + return checkDataType(dataTypes[0], data, strictNums, correct); + } + let cond; + const types = (0, util_1.toHash)(dataTypes); + if (types.array && types.object) { + const notObj = (0, codegen_1._) `typeof ${data} != "object"`; + cond = types.null ? notObj : (0, codegen_1._) `!${data} || ${notObj}`; + delete types.null; + delete types.array; + delete types.object; + } + else { + cond = codegen_1.nil; + } + if (types.number) + delete types.integer; + for (const t in types) + cond = (0, codegen_1.and)(cond, checkDataType(t, data, strictNums, correct)); + return cond; +} +exports.checkDataTypes = checkDataTypes; +const typeError = { + message: ({ schema }) => `must be ${schema}`, + params: ({ schema, schemaValue }) => typeof schema == "string" ? (0, codegen_1._) `{type: ${schema}}` : (0, codegen_1._) `{type: ${schemaValue}}`, +}; +function reportTypeError(it) { + const cxt = getTypeErrorContext(it); + (0, errors_1.reportError)(cxt, typeError); +} +exports.reportTypeError = reportTypeError; +function getTypeErrorContext(it) { + const { gen, data, schema } = it; + const schemaCode = (0, util_1.schemaRefOrVal)(it, schema, "type"); + return { + gen, + keyword: "type", + data, + schema: schema.type, + schemaCode, + schemaValue: schemaCode, + parentSchema: schema, + params: {}, + it, + }; +} + +},{"../codegen":38,"../errors":40,"../rules":45,"../util":46,"./applicability":47}],50:[function(require,module,exports){ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.assignDefaults = void 0; +const codegen_1 = require("../codegen"); +const util_1 = require("../util"); +function assignDefaults(it, ty) { + const { properties, items } = it.schema; + if (ty === "object" && properties) { + for (const key in properties) { + assignDefault(it, key, properties[key].default); + } + } + else if (ty === "array" && Array.isArray(items)) { + items.forEach((sch, i) => assignDefault(it, i, sch.default)); + } +} +exports.assignDefaults = assignDefaults; +function assignDefault(it, prop, defaultValue) { + const { gen, compositeRule, data, opts } = it; + if (defaultValue === undefined) + return; + const childData = (0, codegen_1._) `${data}${(0, codegen_1.getProperty)(prop)}`; + if (compositeRule) { + (0, util_1.checkStrictMode)(it, `default is ignored for: ${childData}`); + return; + } + let condition = (0, codegen_1._) `${childData} === undefined`; + if (opts.useDefaults === "empty") { + condition = (0, codegen_1._) `${condition} || ${childData} === null || ${childData} === ""`; + } + // `${childData} === undefined` + + // (opts.useDefaults === "empty" ? ` || ${childData} === null || ${childData} === ""` : "") + gen.if(condition, (0, codegen_1._) `${childData} = ${(0, codegen_1.stringify)(defaultValue)}`); +} + +},{"../codegen":38,"../util":46}],51:[function(require,module,exports){ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getData = exports.KeywordCxt = exports.validateFunctionCode = void 0; +const boolSchema_1 = require("./boolSchema"); +const dataType_1 = require("./dataType"); +const applicability_1 = require("./applicability"); +const dataType_2 = require("./dataType"); +const defaults_1 = require("./defaults"); +const keyword_1 = require("./keyword"); +const subschema_1 = require("./subschema"); +const codegen_1 = require("../codegen"); +const names_1 = require("../names"); +const resolve_1 = require("../resolve"); +const util_1 = require("../util"); +const errors_1 = require("../errors"); +// schema compilation - generates validation function, subschemaCode (below) is used for subschemas +function validateFunctionCode(it) { + if (isSchemaObj(it)) { + checkKeywords(it); + if (schemaCxtHasRules(it)) { + topSchemaObjCode(it); + return; + } + } + validateFunction(it, () => (0, boolSchema_1.topBoolOrEmptySchema)(it)); +} +exports.validateFunctionCode = validateFunctionCode; +function validateFunction({ gen, validateName, schema, schemaEnv, opts }, body) { + if (opts.code.es5) { + gen.func(validateName, (0, codegen_1._) `${names_1.default.data}, ${names_1.default.valCxt}`, schemaEnv.$async, () => { + gen.code((0, codegen_1._) `"use strict"; ${funcSourceUrl(schema, opts)}`); + destructureValCxtES5(gen, opts); + gen.code(body); + }); + } + else { + gen.func(validateName, (0, codegen_1._) `${names_1.default.data}, ${destructureValCxt(opts)}`, schemaEnv.$async, () => gen.code(funcSourceUrl(schema, opts)).code(body)); + } +} +function destructureValCxt(opts) { + return (0, codegen_1._) `{${names_1.default.instancePath}="", ${names_1.default.parentData}, ${names_1.default.parentDataProperty}, ${names_1.default.rootData}=${names_1.default.data}${opts.dynamicRef ? (0, codegen_1._) `, ${names_1.default.dynamicAnchors}={}` : codegen_1.nil}}={}`; +} +function destructureValCxtES5(gen, opts) { + gen.if(names_1.default.valCxt, () => { + gen.var(names_1.default.instancePath, (0, codegen_1._) `${names_1.default.valCxt}.${names_1.default.instancePath}`); + gen.var(names_1.default.parentData, (0, codegen_1._) `${names_1.default.valCxt}.${names_1.default.parentData}`); + gen.var(names_1.default.parentDataProperty, (0, codegen_1._) `${names_1.default.valCxt}.${names_1.default.parentDataProperty}`); + gen.var(names_1.default.rootData, (0, codegen_1._) `${names_1.default.valCxt}.${names_1.default.rootData}`); + if (opts.dynamicRef) + gen.var(names_1.default.dynamicAnchors, (0, codegen_1._) `${names_1.default.valCxt}.${names_1.default.dynamicAnchors}`); + }, () => { + gen.var(names_1.default.instancePath, (0, codegen_1._) `""`); + gen.var(names_1.default.parentData, (0, codegen_1._) `undefined`); + gen.var(names_1.default.parentDataProperty, (0, codegen_1._) `undefined`); + gen.var(names_1.default.rootData, names_1.default.data); + if (opts.dynamicRef) + gen.var(names_1.default.dynamicAnchors, (0, codegen_1._) `{}`); + }); +} +function topSchemaObjCode(it) { + const { schema, opts, gen } = it; + validateFunction(it, () => { + if (opts.$comment && schema.$comment) + commentKeyword(it); + checkNoDefault(it); + gen.let(names_1.default.vErrors, null); + gen.let(names_1.default.errors, 0); + if (opts.unevaluated) + resetEvaluated(it); + typeAndKeywords(it); + returnResults(it); + }); + return; +} +function resetEvaluated(it) { + // TODO maybe some hook to execute it in the end to check whether props/items are Name, as in assignEvaluated + const { gen, validateName } = it; + it.evaluated = gen.const("evaluated", (0, codegen_1._) `${validateName}.evaluated`); + gen.if((0, codegen_1._) `${it.evaluated}.dynamicProps`, () => gen.assign((0, codegen_1._) `${it.evaluated}.props`, (0, codegen_1._) `undefined`)); + gen.if((0, codegen_1._) `${it.evaluated}.dynamicItems`, () => gen.assign((0, codegen_1._) `${it.evaluated}.items`, (0, codegen_1._) `undefined`)); +} +function funcSourceUrl(schema, opts) { + const schId = typeof schema == "object" && schema[opts.schemaId]; + return schId && (opts.code.source || opts.code.process) ? (0, codegen_1._) `/*# sourceURL=${schId} */` : codegen_1.nil; +} +// schema compilation - this function is used recursively to generate code for sub-schemas +function subschemaCode(it, valid) { + if (isSchemaObj(it)) { + checkKeywords(it); + if (schemaCxtHasRules(it)) { + subSchemaObjCode(it, valid); + return; + } + } + (0, boolSchema_1.boolOrEmptySchema)(it, valid); +} +function schemaCxtHasRules({ schema, self }) { + if (typeof schema == "boolean") + return !schema; + for (const key in schema) + if (self.RULES.all[key]) + return true; + return false; +} +function isSchemaObj(it) { + return typeof it.schema != "boolean"; +} +function subSchemaObjCode(it, valid) { + const { schema, gen, opts } = it; + if (opts.$comment && schema.$comment) + commentKeyword(it); + updateContext(it); + checkAsyncSchema(it); + const errsCount = gen.const("_errs", names_1.default.errors); + typeAndKeywords(it, errsCount); + // TODO var + gen.var(valid, (0, codegen_1._) `${errsCount} === ${names_1.default.errors}`); +} +function checkKeywords(it) { + (0, util_1.checkUnknownRules)(it); + checkRefsAndKeywords(it); +} +function typeAndKeywords(it, errsCount) { + if (it.opts.jtd) + return schemaKeywords(it, [], false, errsCount); + const types = (0, dataType_1.getSchemaTypes)(it.schema); + const checkedTypes = (0, dataType_1.coerceAndCheckDataType)(it, types); + schemaKeywords(it, types, !checkedTypes, errsCount); +} +function checkRefsAndKeywords(it) { + const { schema, errSchemaPath, opts, self } = it; + if (schema.$ref && opts.ignoreKeywordsWithRef && (0, util_1.schemaHasRulesButRef)(schema, self.RULES)) { + self.logger.warn(`$ref: keywords ignored in schema at path "${errSchemaPath}"`); + } +} +function checkNoDefault(it) { + const { schema, opts } = it; + if (schema.default !== undefined && opts.useDefaults && opts.strictSchema) { + (0, util_1.checkStrictMode)(it, "default is ignored in the schema root"); + } +} +function updateContext(it) { + const schId = it.schema[it.opts.schemaId]; + if (schId) + it.baseId = (0, resolve_1.resolveUrl)(it.baseId, schId); +} +function checkAsyncSchema(it) { + if (it.schema.$async && !it.schemaEnv.$async) + throw new Error("async schema in sync schema"); +} +function commentKeyword({ gen, schemaEnv, schema, errSchemaPath, opts }) { + const msg = schema.$comment; + if (opts.$comment === true) { + gen.code((0, codegen_1._) `${names_1.default.self}.logger.log(${msg})`); + } + else if (typeof opts.$comment == "function") { + const schemaPath = (0, codegen_1.str) `${errSchemaPath}/$comment`; + const rootName = gen.scopeValue("root", { ref: schemaEnv.root }); + gen.code((0, codegen_1._) `${names_1.default.self}.opts.$comment(${msg}, ${schemaPath}, ${rootName}.schema)`); + } +} +function returnResults(it) { + const { gen, schemaEnv, validateName, ValidationError, opts } = it; + if (schemaEnv.$async) { + // TODO assign unevaluated + gen.if((0, codegen_1._) `${names_1.default.errors} === 0`, () => gen.return(names_1.default.data), () => gen.throw((0, codegen_1._) `new ${ValidationError}(${names_1.default.vErrors})`)); + } + else { + gen.assign((0, codegen_1._) `${validateName}.errors`, names_1.default.vErrors); + if (opts.unevaluated) + assignEvaluated(it); + gen.return((0, codegen_1._) `${names_1.default.errors} === 0`); + } +} +function assignEvaluated({ gen, evaluated, props, items }) { + if (props instanceof codegen_1.Name) + gen.assign((0, codegen_1._) `${evaluated}.props`, props); + if (items instanceof codegen_1.Name) + gen.assign((0, codegen_1._) `${evaluated}.items`, items); +} +function schemaKeywords(it, types, typeErrors, errsCount) { + const { gen, schema, data, allErrors, opts, self } = it; + const { RULES } = self; + if (schema.$ref && (opts.ignoreKeywordsWithRef || !(0, util_1.schemaHasRulesButRef)(schema, RULES))) { + gen.block(() => keywordCode(it, "$ref", RULES.all.$ref.definition)); // TODO typecast + return; + } + if (!opts.jtd) + checkStrictTypes(it, types); + gen.block(() => { + for (const group of RULES.rules) + groupKeywords(group); + groupKeywords(RULES.post); + }); + function groupKeywords(group) { + if (!(0, applicability_1.shouldUseGroup)(schema, group)) + return; + if (group.type) { + gen.if((0, dataType_2.checkDataType)(group.type, data, opts.strictNumbers)); + iterateKeywords(it, group); + if (types.length === 1 && types[0] === group.type && typeErrors) { + gen.else(); + (0, dataType_2.reportTypeError)(it); + } + gen.endIf(); + } + else { + iterateKeywords(it, group); + } + // TODO make it "ok" call? + if (!allErrors) + gen.if((0, codegen_1._) `${names_1.default.errors} === ${errsCount || 0}`); + } +} +function iterateKeywords(it, group) { + const { gen, schema, opts: { useDefaults }, } = it; + if (useDefaults) + (0, defaults_1.assignDefaults)(it, group.type); + gen.block(() => { + for (const rule of group.rules) { + if ((0, applicability_1.shouldUseRule)(schema, rule)) { + keywordCode(it, rule.keyword, rule.definition, group.type); + } + } + }); +} +function checkStrictTypes(it, types) { + if (it.schemaEnv.meta || !it.opts.strictTypes) + return; + checkContextTypes(it, types); + if (!it.opts.allowUnionTypes) + checkMultipleTypes(it, types); + checkKeywordTypes(it, it.dataTypes); +} +function checkContextTypes(it, types) { + if (!types.length) + return; + if (!it.dataTypes.length) { + it.dataTypes = types; + return; + } + types.forEach((t) => { + if (!includesType(it.dataTypes, t)) { + strictTypesError(it, `type "${t}" not allowed by context "${it.dataTypes.join(",")}"`); + } + }); + it.dataTypes = it.dataTypes.filter((t) => includesType(types, t)); +} +function checkMultipleTypes(it, ts) { + if (ts.length > 1 && !(ts.length === 2 && ts.includes("null"))) { + strictTypesError(it, "use allowUnionTypes to allow union type keyword"); + } +} +function checkKeywordTypes(it, ts) { + const rules = it.self.RULES.all; + for (const keyword in rules) { + const rule = rules[keyword]; + if (typeof rule == "object" && (0, applicability_1.shouldUseRule)(it.schema, rule)) { + const { type } = rule.definition; + if (type.length && !type.some((t) => hasApplicableType(ts, t))) { + strictTypesError(it, `missing type "${type.join(",")}" for keyword "${keyword}"`); + } + } + } +} +function hasApplicableType(schTs, kwdT) { + return schTs.includes(kwdT) || (kwdT === "number" && schTs.includes("integer")); +} +function includesType(ts, t) { + return ts.includes(t) || (t === "integer" && ts.includes("number")); +} +function strictTypesError(it, msg) { + const schemaPath = it.schemaEnv.baseId + it.errSchemaPath; + msg += ` at "${schemaPath}" (strictTypes)`; + (0, util_1.checkStrictMode)(it, msg, it.opts.strictTypes); +} +class KeywordCxt { + constructor(it, def, keyword) { + (0, keyword_1.validateKeywordUsage)(it, def, keyword); + this.gen = it.gen; + this.allErrors = it.allErrors; + this.keyword = keyword; + this.data = it.data; + this.schema = it.schema[keyword]; + this.$data = def.$data && it.opts.$data && this.schema && this.schema.$data; + this.schemaValue = (0, util_1.schemaRefOrVal)(it, this.schema, keyword, this.$data); + this.schemaType = def.schemaType; + this.parentSchema = it.schema; + this.params = {}; + this.it = it; + this.def = def; + if (this.$data) { + this.schemaCode = it.gen.const("vSchema", getData(this.$data, it)); + } + else { + this.schemaCode = this.schemaValue; + if (!(0, keyword_1.validSchemaType)(this.schema, def.schemaType, def.allowUndefined)) { + throw new Error(`${keyword} value must be ${JSON.stringify(def.schemaType)}`); + } + } + if ("code" in def ? def.trackErrors : def.errors !== false) { + this.errsCount = it.gen.const("_errs", names_1.default.errors); + } + } + result(condition, successAction, failAction) { + this.failResult((0, codegen_1.not)(condition), successAction, failAction); + } + failResult(condition, successAction, failAction) { + this.gen.if(condition); + if (failAction) + failAction(); + else + this.error(); + if (successAction) { + this.gen.else(); + successAction(); + if (this.allErrors) + this.gen.endIf(); + } + else { + if (this.allErrors) + this.gen.endIf(); + else + this.gen.else(); + } + } + pass(condition, failAction) { + this.failResult((0, codegen_1.not)(condition), undefined, failAction); + } + fail(condition) { + if (condition === undefined) { + this.error(); + if (!this.allErrors) + this.gen.if(false); // this branch will be removed by gen.optimize + return; + } + this.gen.if(condition); + this.error(); + if (this.allErrors) + this.gen.endIf(); + else + this.gen.else(); + } + fail$data(condition) { + if (!this.$data) + return this.fail(condition); + const { schemaCode } = this; + this.fail((0, codegen_1._) `${schemaCode} !== undefined && (${(0, codegen_1.or)(this.invalid$data(), condition)})`); + } + error(append, errorParams, errorPaths) { + if (errorParams) { + this.setParams(errorParams); + this._error(append, errorPaths); + this.setParams({}); + return; + } + this._error(append, errorPaths); + } + _error(append, errorPaths) { + ; + (append ? errors_1.reportExtraError : errors_1.reportError)(this, this.def.error, errorPaths); + } + $dataError() { + (0, errors_1.reportError)(this, this.def.$dataError || errors_1.keyword$DataError); + } + reset() { + if (this.errsCount === undefined) + throw new Error('add "trackErrors" to keyword definition'); + (0, errors_1.resetErrorsCount)(this.gen, this.errsCount); + } + ok(cond) { + if (!this.allErrors) + this.gen.if(cond); + } + setParams(obj, assign) { + if (assign) + Object.assign(this.params, obj); + else + this.params = obj; + } + block$data(valid, codeBlock, $dataValid = codegen_1.nil) { + this.gen.block(() => { + this.check$data(valid, $dataValid); + codeBlock(); + }); + } + check$data(valid = codegen_1.nil, $dataValid = codegen_1.nil) { + if (!this.$data) + return; + const { gen, schemaCode, schemaType, def } = this; + gen.if((0, codegen_1.or)((0, codegen_1._) `${schemaCode} === undefined`, $dataValid)); + if (valid !== codegen_1.nil) + gen.assign(valid, true); + if (schemaType.length || def.validateSchema) { + gen.elseIf(this.invalid$data()); + this.$dataError(); + if (valid !== codegen_1.nil) + gen.assign(valid, false); + } + gen.else(); + } + invalid$data() { + const { gen, schemaCode, schemaType, def, it } = this; + return (0, codegen_1.or)(wrong$DataType(), invalid$DataSchema()); + function wrong$DataType() { + if (schemaType.length) { + /* istanbul ignore if */ + if (!(schemaCode instanceof codegen_1.Name)) + throw new Error("ajv implementation error"); + const st = Array.isArray(schemaType) ? schemaType : [schemaType]; + return (0, codegen_1._) `${(0, dataType_2.checkDataTypes)(st, schemaCode, it.opts.strictNumbers, dataType_2.DataType.Wrong)}`; + } + return codegen_1.nil; + } + function invalid$DataSchema() { + if (def.validateSchema) { + const validateSchemaRef = gen.scopeValue("validate$data", { ref: def.validateSchema }); // TODO value.code for standalone + return (0, codegen_1._) `!${validateSchemaRef}(${schemaCode})`; + } + return codegen_1.nil; + } + } + subschema(appl, valid) { + const subschema = (0, subschema_1.getSubschema)(this.it, appl); + (0, subschema_1.extendSubschemaData)(subschema, this.it, appl); + (0, subschema_1.extendSubschemaMode)(subschema, appl); + const nextContext = { ...this.it, ...subschema, items: undefined, props: undefined }; + subschemaCode(nextContext, valid); + return nextContext; + } + mergeEvaluated(schemaCxt, toName) { + const { it, gen } = this; + if (!it.opts.unevaluated) + return; + if (it.props !== true && schemaCxt.props !== undefined) { + it.props = util_1.mergeEvaluated.props(gen, schemaCxt.props, it.props, toName); + } + if (it.items !== true && schemaCxt.items !== undefined) { + it.items = util_1.mergeEvaluated.items(gen, schemaCxt.items, it.items, toName); + } + } + mergeValidEvaluated(schemaCxt, valid) { + const { it, gen } = this; + if (it.opts.unevaluated && (it.props !== true || it.items !== true)) { + gen.if(valid, () => this.mergeEvaluated(schemaCxt, codegen_1.Name)); + return true; + } + } +} +exports.KeywordCxt = KeywordCxt; +function keywordCode(it, keyword, def, ruleType) { + const cxt = new KeywordCxt(it, def, keyword); + if ("code" in def) { + def.code(cxt, ruleType); + } + else if (cxt.$data && def.validate) { + (0, keyword_1.funcKeywordCode)(cxt, def); + } + else if ("macro" in def) { + (0, keyword_1.macroKeywordCode)(cxt, def); + } + else if (def.compile || def.validate) { + (0, keyword_1.funcKeywordCode)(cxt, def); + } +} +const JSON_POINTER = /^\/(?:[^~]|~0|~1)*$/; +const RELATIVE_JSON_POINTER = /^([0-9]+)(#|\/(?:[^~]|~0|~1)*)?$/; +function getData($data, { dataLevel, dataNames, dataPathArr }) { + let jsonPointer; + let data; + if ($data === "") + return names_1.default.rootData; + if ($data[0] === "/") { + if (!JSON_POINTER.test($data)) + throw new Error(`Invalid JSON-pointer: ${$data}`); + jsonPointer = $data; + data = names_1.default.rootData; + } + else { + const matches = RELATIVE_JSON_POINTER.exec($data); + if (!matches) + throw new Error(`Invalid JSON-pointer: ${$data}`); + const up = +matches[1]; + jsonPointer = matches[2]; + if (jsonPointer === "#") { + if (up >= dataLevel) + throw new Error(errorMsg("property/index", up)); + return dataPathArr[dataLevel - up]; + } + if (up > dataLevel) + throw new Error(errorMsg("data", up)); + data = dataNames[dataLevel - up]; + if (!jsonPointer) + return data; + } + let expr = data; + const segments = jsonPointer.split("/"); + for (const segment of segments) { + if (segment) { + data = (0, codegen_1._) `${data}${(0, codegen_1.getProperty)((0, util_1.unescapeJsonPointer)(segment))}`; + expr = (0, codegen_1._) `${expr} && ${data}`; + } + } + return expr; + function errorMsg(pointerType, up) { + return `Cannot access ${pointerType} ${up} levels up, current level is ${dataLevel}`; + } +} +exports.getData = getData; + +},{"../codegen":38,"../errors":40,"../names":42,"../resolve":44,"../util":46,"./applicability":47,"./boolSchema":48,"./dataType":49,"./defaults":50,"./keyword":52,"./subschema":53}],52:[function(require,module,exports){ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.validateKeywordUsage = exports.validSchemaType = exports.funcKeywordCode = exports.macroKeywordCode = void 0; +const codegen_1 = require("../codegen"); +const names_1 = require("../names"); +const code_1 = require("../../vocabularies/code"); +const errors_1 = require("../errors"); +function macroKeywordCode(cxt, def) { + const { gen, keyword, schema, parentSchema, it } = cxt; + const macroSchema = def.macro.call(it.self, schema, parentSchema, it); + const schemaRef = useKeyword(gen, keyword, macroSchema); + if (it.opts.validateSchema !== false) + it.self.validateSchema(macroSchema, true); + const valid = gen.name("valid"); + cxt.subschema({ + schema: macroSchema, + schemaPath: codegen_1.nil, + errSchemaPath: `${it.errSchemaPath}/${keyword}`, + topSchemaRef: schemaRef, + compositeRule: true, + }, valid); + cxt.pass(valid, () => cxt.error(true)); +} +exports.macroKeywordCode = macroKeywordCode; +function funcKeywordCode(cxt, def) { + var _a; + const { gen, keyword, schema, parentSchema, $data, it } = cxt; + checkAsyncKeyword(it, def); + const validate = !$data && def.compile ? def.compile.call(it.self, schema, parentSchema, it) : def.validate; + const validateRef = useKeyword(gen, keyword, validate); + const valid = gen.let("valid"); + cxt.block$data(valid, validateKeyword); + cxt.ok((_a = def.valid) !== null && _a !== void 0 ? _a : valid); + function validateKeyword() { + if (def.errors === false) { + assignValid(); + if (def.modifying) + modifyData(cxt); + reportErrs(() => cxt.error()); + } + else { + const ruleErrs = def.async ? validateAsync() : validateSync(); + if (def.modifying) + modifyData(cxt); + reportErrs(() => addErrs(cxt, ruleErrs)); + } + } + function validateAsync() { + const ruleErrs = gen.let("ruleErrs", null); + gen.try(() => assignValid((0, codegen_1._) `await `), (e) => gen.assign(valid, false).if((0, codegen_1._) `${e} instanceof ${it.ValidationError}`, () => gen.assign(ruleErrs, (0, codegen_1._) `${e}.errors`), () => gen.throw(e))); + return ruleErrs; + } + function validateSync() { + const validateErrs = (0, codegen_1._) `${validateRef}.errors`; + gen.assign(validateErrs, null); + assignValid(codegen_1.nil); + return validateErrs; + } + function assignValid(_await = def.async ? (0, codegen_1._) `await ` : codegen_1.nil) { + const passCxt = it.opts.passContext ? names_1.default.this : names_1.default.self; + const passSchema = !(("compile" in def && !$data) || def.schema === false); + gen.assign(valid, (0, codegen_1._) `${_await}${(0, code_1.callValidateCode)(cxt, validateRef, passCxt, passSchema)}`, def.modifying); + } + function reportErrs(errors) { + var _a; + gen.if((0, codegen_1.not)((_a = def.valid) !== null && _a !== void 0 ? _a : valid), errors); + } +} +exports.funcKeywordCode = funcKeywordCode; +function modifyData(cxt) { + const { gen, data, it } = cxt; + gen.if(it.parentData, () => gen.assign(data, (0, codegen_1._) `${it.parentData}[${it.parentDataProperty}]`)); +} +function addErrs(cxt, errs) { + const { gen } = cxt; + gen.if((0, codegen_1._) `Array.isArray(${errs})`, () => { + gen + .assign(names_1.default.vErrors, (0, codegen_1._) `${names_1.default.vErrors} === null ? ${errs} : ${names_1.default.vErrors}.concat(${errs})`) + .assign(names_1.default.errors, (0, codegen_1._) `${names_1.default.vErrors}.length`); + (0, errors_1.extendErrors)(cxt); + }, () => cxt.error()); +} +function checkAsyncKeyword({ schemaEnv }, def) { + if (def.async && !schemaEnv.$async) + throw new Error("async keyword in sync schema"); +} +function useKeyword(gen, keyword, result) { + if (result === undefined) + throw new Error(`keyword "${keyword}" failed to compile`); + return gen.scopeValue("keyword", typeof result == "function" ? { ref: result } : { ref: result, code: (0, codegen_1.stringify)(result) }); +} +function validSchemaType(schema, schemaType, allowUndefined = false) { + // TODO add tests + return (!schemaType.length || + schemaType.some((st) => st === "array" + ? Array.isArray(schema) + : st === "object" + ? schema && typeof schema == "object" && !Array.isArray(schema) + : typeof schema == st || (allowUndefined && typeof schema == "undefined"))); +} +exports.validSchemaType = validSchemaType; +function validateKeywordUsage({ schema, opts, self, errSchemaPath }, def, keyword) { + /* istanbul ignore if */ + if (Array.isArray(def.keyword) ? !def.keyword.includes(keyword) : def.keyword !== keyword) { + throw new Error("ajv implementation error"); + } + const deps = def.dependencies; + if (deps === null || deps === void 0 ? void 0 : deps.some((kwd) => !Object.prototype.hasOwnProperty.call(schema, kwd))) { + throw new Error(`parent schema must have dependencies of ${keyword}: ${deps.join(",")}`); + } + if (def.validateSchema) { + const valid = def.validateSchema(schema[keyword]); + if (!valid) { + const msg = `keyword "${keyword}" value is invalid at path "${errSchemaPath}": ` + + self.errorsText(def.validateSchema.errors); + if (opts.validateSchema === "log") + self.logger.error(msg); + else + throw new Error(msg); + } + } +} +exports.validateKeywordUsage = validateKeywordUsage; + +},{"../../vocabularies/code":77,"../codegen":38,"../errors":40,"../names":42}],53:[function(require,module,exports){ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.extendSubschemaMode = exports.extendSubschemaData = exports.getSubschema = void 0; +const codegen_1 = require("../codegen"); +const util_1 = require("../util"); +function getSubschema(it, { keyword, schemaProp, schema, schemaPath, errSchemaPath, topSchemaRef }) { + if (keyword !== undefined && schema !== undefined) { + throw new Error('both "keyword" and "schema" passed, only one allowed'); + } + if (keyword !== undefined) { + const sch = it.schema[keyword]; + return schemaProp === undefined + ? { + schema: sch, + schemaPath: (0, codegen_1._) `${it.schemaPath}${(0, codegen_1.getProperty)(keyword)}`, + errSchemaPath: `${it.errSchemaPath}/${keyword}`, + } + : { + schema: sch[schemaProp], + schemaPath: (0, codegen_1._) `${it.schemaPath}${(0, codegen_1.getProperty)(keyword)}${(0, codegen_1.getProperty)(schemaProp)}`, + errSchemaPath: `${it.errSchemaPath}/${keyword}/${(0, util_1.escapeFragment)(schemaProp)}`, + }; + } + if (schema !== undefined) { + if (schemaPath === undefined || errSchemaPath === undefined || topSchemaRef === undefined) { + throw new Error('"schemaPath", "errSchemaPath" and "topSchemaRef" are required with "schema"'); + } + return { + schema, + schemaPath, + topSchemaRef, + errSchemaPath, + }; + } + throw new Error('either "keyword" or "schema" must be passed'); +} +exports.getSubschema = getSubschema; +function extendSubschemaData(subschema, it, { dataProp, dataPropType: dpType, data, dataTypes, propertyName }) { + if (data !== undefined && dataProp !== undefined) { + throw new Error('both "data" and "dataProp" passed, only one allowed'); + } + const { gen } = it; + if (dataProp !== undefined) { + const { errorPath, dataPathArr, opts } = it; + const nextData = gen.let("data", (0, codegen_1._) `${it.data}${(0, codegen_1.getProperty)(dataProp)}`, true); + dataContextProps(nextData); + subschema.errorPath = (0, codegen_1.str) `${errorPath}${(0, util_1.getErrorPath)(dataProp, dpType, opts.jsPropertySyntax)}`; + subschema.parentDataProperty = (0, codegen_1._) `${dataProp}`; + subschema.dataPathArr = [...dataPathArr, subschema.parentDataProperty]; + } + if (data !== undefined) { + const nextData = data instanceof codegen_1.Name ? data : gen.let("data", data, true); // replaceable if used once? + dataContextProps(nextData); + if (propertyName !== undefined) + subschema.propertyName = propertyName; + // TODO something is possibly wrong here with not changing parentDataProperty and not appending dataPathArr + } + if (dataTypes) + subschema.dataTypes = dataTypes; + function dataContextProps(_nextData) { + subschema.data = _nextData; + subschema.dataLevel = it.dataLevel + 1; + subschema.dataTypes = []; + it.definedProperties = new Set(); + subschema.parentData = it.data; + subschema.dataNames = [...it.dataNames, _nextData]; + } +} +exports.extendSubschemaData = extendSubschemaData; +function extendSubschemaMode(subschema, { jtdDiscriminator, jtdMetadata, compositeRule, createErrors, allErrors }) { + if (compositeRule !== undefined) + subschema.compositeRule = compositeRule; + if (createErrors !== undefined) + subschema.createErrors = createErrors; + if (allErrors !== undefined) + subschema.allErrors = allErrors; + subschema.jtdDiscriminator = jtdDiscriminator; // not inherited + subschema.jtdMetadata = jtdMetadata; // not inherited +} +exports.extendSubschemaMode = extendSubschemaMode; + +},{"../codegen":38,"../util":46}],54:[function(require,module,exports){ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.CodeGen = exports.Name = exports.nil = exports.stringify = exports.str = exports._ = exports.KeywordCxt = void 0; +var validate_1 = require("./compile/validate"); +Object.defineProperty(exports, "KeywordCxt", { enumerable: true, get: function () { return validate_1.KeywordCxt; } }); +var codegen_1 = require("./compile/codegen"); +Object.defineProperty(exports, "_", { enumerable: true, get: function () { return codegen_1._; } }); +Object.defineProperty(exports, "str", { enumerable: true, get: function () { return codegen_1.str; } }); +Object.defineProperty(exports, "stringify", { enumerable: true, get: function () { return codegen_1.stringify; } }); +Object.defineProperty(exports, "nil", { enumerable: true, get: function () { return codegen_1.nil; } }); +Object.defineProperty(exports, "Name", { enumerable: true, get: function () { return codegen_1.Name; } }); +Object.defineProperty(exports, "CodeGen", { enumerable: true, get: function () { return codegen_1.CodeGen; } }); +const validation_error_1 = require("./runtime/validation_error"); +const ref_error_1 = require("./compile/ref_error"); +const rules_1 = require("./compile/rules"); +const compile_1 = require("./compile"); +const codegen_2 = require("./compile/codegen"); +const resolve_1 = require("./compile/resolve"); +const dataType_1 = require("./compile/validate/dataType"); +const util_1 = require("./compile/util"); +const $dataRefSchema = require("./refs/data.json"); +const defaultRegExp = (str, flags) => new RegExp(str, flags); +defaultRegExp.code = "new RegExp"; +const META_IGNORE_OPTIONS = ["removeAdditional", "useDefaults", "coerceTypes"]; +const EXT_SCOPE_NAMES = new Set([ + "validate", + "serialize", + "parse", + "wrapper", + "root", + "schema", + "keyword", + "pattern", + "formats", + "validate$data", + "func", + "obj", + "Error", +]); +const removedOptions = { + errorDataPath: "", + format: "`validateFormats: false` can be used instead.", + nullable: '"nullable" keyword is supported by default.', + jsonPointers: "Deprecated jsPropertySyntax can be used instead.", + extendRefs: "Deprecated ignoreKeywordsWithRef can be used instead.", + missingRefs: "Pass empty schema with $id that should be ignored to ajv.addSchema.", + processCode: "Use option `code: {process: (code, schemaEnv: object) => string}`", + sourceCode: "Use option `code: {source: true}`", + strictDefaults: "It is default now, see option `strict`.", + strictKeywords: "It is default now, see option `strict`.", + uniqueItems: '"uniqueItems" keyword is always validated.', + unknownFormats: "Disable strict mode or pass `true` to `ajv.addFormat` (or `formats` option).", + cache: "Map is used as cache, schema object as key.", + serialize: "Map is used as cache, schema object as key.", + ajvErrors: "It is default now.", +}; +const deprecatedOptions = { + ignoreKeywordsWithRef: "", + jsPropertySyntax: "", + unicode: '"minLength"/"maxLength" account for unicode characters by default.', +}; +const MAX_EXPRESSION = 200; +// eslint-disable-next-line complexity +function requiredOptions(o) { + var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z; + const s = o.strict; + const _optz = (_a = o.code) === null || _a === void 0 ? void 0 : _a.optimize; + const optimize = _optz === true || _optz === undefined ? 1 : _optz || 0; + const regExp = (_c = (_b = o.code) === null || _b === void 0 ? void 0 : _b.regExp) !== null && _c !== void 0 ? _c : defaultRegExp; + return { + strictSchema: (_e = (_d = o.strictSchema) !== null && _d !== void 0 ? _d : s) !== null && _e !== void 0 ? _e : true, + strictNumbers: (_g = (_f = o.strictNumbers) !== null && _f !== void 0 ? _f : s) !== null && _g !== void 0 ? _g : true, + strictTypes: (_j = (_h = o.strictTypes) !== null && _h !== void 0 ? _h : s) !== null && _j !== void 0 ? _j : "log", + strictTuples: (_l = (_k = o.strictTuples) !== null && _k !== void 0 ? _k : s) !== null && _l !== void 0 ? _l : "log", + strictRequired: (_o = (_m = o.strictRequired) !== null && _m !== void 0 ? _m : s) !== null && _o !== void 0 ? _o : false, + code: o.code ? { ...o.code, optimize, regExp } : { optimize, regExp }, + loopRequired: (_p = o.loopRequired) !== null && _p !== void 0 ? _p : MAX_EXPRESSION, + loopEnum: (_q = o.loopEnum) !== null && _q !== void 0 ? _q : MAX_EXPRESSION, + meta: (_r = o.meta) !== null && _r !== void 0 ? _r : true, + messages: (_s = o.messages) !== null && _s !== void 0 ? _s : true, + inlineRefs: (_t = o.inlineRefs) !== null && _t !== void 0 ? _t : true, + schemaId: (_u = o.schemaId) !== null && _u !== void 0 ? _u : "$id", + addUsedSchema: (_v = o.addUsedSchema) !== null && _v !== void 0 ? _v : true, + validateSchema: (_w = o.validateSchema) !== null && _w !== void 0 ? _w : true, + validateFormats: (_x = o.validateFormats) !== null && _x !== void 0 ? _x : true, + unicodeRegExp: (_y = o.unicodeRegExp) !== null && _y !== void 0 ? _y : true, + int32range: (_z = o.int32range) !== null && _z !== void 0 ? _z : true, + }; +} +class Ajv { + constructor(opts = {}) { + this.schemas = {}; + this.refs = {}; + this.formats = {}; + this._compilations = new Set(); + this._loading = {}; + this._cache = new Map(); + opts = this.opts = { ...opts, ...requiredOptions(opts) }; + const { es5, lines } = this.opts.code; + this.scope = new codegen_2.ValueScope({ scope: {}, prefixes: EXT_SCOPE_NAMES, es5, lines }); + this.logger = getLogger(opts.logger); + const formatOpt = opts.validateFormats; + opts.validateFormats = false; + this.RULES = (0, rules_1.getRules)(); + checkOptions.call(this, removedOptions, opts, "NOT SUPPORTED"); + checkOptions.call(this, deprecatedOptions, opts, "DEPRECATED", "warn"); + this._metaOpts = getMetaSchemaOptions.call(this); + if (opts.formats) + addInitialFormats.call(this); + this._addVocabularies(); + this._addDefaultMetaSchema(); + if (opts.keywords) + addInitialKeywords.call(this, opts.keywords); + if (typeof opts.meta == "object") + this.addMetaSchema(opts.meta); + addInitialSchemas.call(this); + opts.validateFormats = formatOpt; + } + _addVocabularies() { + this.addKeyword("$async"); + } + _addDefaultMetaSchema() { + const { $data, meta, schemaId } = this.opts; + let _dataRefSchema = $dataRefSchema; + if (schemaId === "id") { + _dataRefSchema = { ...$dataRefSchema }; + _dataRefSchema.id = _dataRefSchema.$id; + delete _dataRefSchema.$id; + } + if (meta && $data) + this.addMetaSchema(_dataRefSchema, _dataRefSchema[schemaId], false); + } + defaultMeta() { + const { meta, schemaId } = this.opts; + return (this.opts.defaultMeta = typeof meta == "object" ? meta[schemaId] || meta : undefined); + } + validate(schemaKeyRef, // key, ref or schema object + data // to be validated + ) { + let v; + if (typeof schemaKeyRef == "string") { + v = this.getSchema(schemaKeyRef); + if (!v) + throw new Error(`no schema with key or ref "${schemaKeyRef}"`); + } + else { + v = this.compile(schemaKeyRef); + } + const valid = v(data); + if (!("$async" in v)) + this.errors = v.errors; + return valid; + } + compile(schema, _meta) { + const sch = this._addSchema(schema, _meta); + return (sch.validate || this._compileSchemaEnv(sch)); + } + compileAsync(schema, meta) { + if (typeof this.opts.loadSchema != "function") { + throw new Error("options.loadSchema should be a function"); + } + const { loadSchema } = this.opts; + return runCompileAsync.call(this, schema, meta); + async function runCompileAsync(_schema, _meta) { + await loadMetaSchema.call(this, _schema.$schema); + const sch = this._addSchema(_schema, _meta); + return sch.validate || _compileAsync.call(this, sch); + } + async function loadMetaSchema($ref) { + if ($ref && !this.getSchema($ref)) { + await runCompileAsync.call(this, { $ref }, true); + } + } + async function _compileAsync(sch) { + try { + return this._compileSchemaEnv(sch); + } + catch (e) { + if (!(e instanceof ref_error_1.default)) + throw e; + checkLoaded.call(this, e); + await loadMissingSchema.call(this, e.missingSchema); + return _compileAsync.call(this, sch); + } + } + function checkLoaded({ missingSchema: ref, missingRef }) { + if (this.refs[ref]) { + throw new Error(`AnySchema ${ref} is loaded but ${missingRef} cannot be resolved`); + } + } + async function loadMissingSchema(ref) { + const _schema = await _loadSchema.call(this, ref); + if (!this.refs[ref]) + await loadMetaSchema.call(this, _schema.$schema); + if (!this.refs[ref]) + this.addSchema(_schema, ref, meta); + } + async function _loadSchema(ref) { + const p = this._loading[ref]; + if (p) + return p; + try { + return await (this._loading[ref] = loadSchema(ref)); + } + finally { + delete this._loading[ref]; + } + } + } + // Adds schema to the instance + addSchema(schema, // If array is passed, `key` will be ignored + key, // Optional schema key. Can be passed to `validate` method instead of schema object or id/ref. One schema per instance can have empty `id` and `key`. + _meta, // true if schema is a meta-schema. Used internally, addMetaSchema should be used instead. + _validateSchema = this.opts.validateSchema // false to skip schema validation. Used internally, option validateSchema should be used instead. + ) { + if (Array.isArray(schema)) { + for (const sch of schema) + this.addSchema(sch, undefined, _meta, _validateSchema); + return this; + } + let id; + if (typeof schema === "object") { + const { schemaId } = this.opts; + id = schema[schemaId]; + if (id !== undefined && typeof id != "string") { + throw new Error(`schema ${schemaId} must be string`); + } + } + key = (0, resolve_1.normalizeId)(key || id); + this._checkUnique(key); + this.schemas[key] = this._addSchema(schema, _meta, key, _validateSchema, true); + return this; + } + // Add schema that will be used to validate other schemas + // options in META_IGNORE_OPTIONS are alway set to false + addMetaSchema(schema, key, // schema key + _validateSchema = this.opts.validateSchema // false to skip schema validation, can be used to override validateSchema option for meta-schema + ) { + this.addSchema(schema, key, true, _validateSchema); + return this; + } + // Validate schema against its meta-schema + validateSchema(schema, throwOrLogError) { + if (typeof schema == "boolean") + return true; + let $schema; + $schema = schema.$schema; + if ($schema !== undefined && typeof $schema != "string") { + throw new Error("$schema must be a string"); + } + $schema = $schema || this.opts.defaultMeta || this.defaultMeta(); + if (!$schema) { + this.logger.warn("meta-schema not available"); + this.errors = null; + return true; + } + const valid = this.validate($schema, schema); + if (!valid && throwOrLogError) { + const message = "schema is invalid: " + this.errorsText(); + if (this.opts.validateSchema === "log") + this.logger.error(message); + else + throw new Error(message); + } + return valid; + } + // Get compiled schema by `key` or `ref`. + // (`key` that was passed to `addSchema` or full schema reference - `schema.$id` or resolved id) + getSchema(keyRef) { + let sch; + while (typeof (sch = getSchEnv.call(this, keyRef)) == "string") + keyRef = sch; + if (sch === undefined) { + const { schemaId } = this.opts; + const root = new compile_1.SchemaEnv({ schema: {}, schemaId }); + sch = compile_1.resolveSchema.call(this, root, keyRef); + if (!sch) + return; + this.refs[keyRef] = sch; + } + return (sch.validate || this._compileSchemaEnv(sch)); + } + // Remove cached schema(s). + // If no parameter is passed all schemas but meta-schemas are removed. + // If RegExp is passed all schemas with key/id matching pattern but meta-schemas are removed. + // Even if schema is referenced by other schemas it still can be removed as other schemas have local references. + removeSchema(schemaKeyRef) { + if (schemaKeyRef instanceof RegExp) { + this._removeAllSchemas(this.schemas, schemaKeyRef); + this._removeAllSchemas(this.refs, schemaKeyRef); + return this; + } + switch (typeof schemaKeyRef) { + case "undefined": + this._removeAllSchemas(this.schemas); + this._removeAllSchemas(this.refs); + this._cache.clear(); + return this; + case "string": { + const sch = getSchEnv.call(this, schemaKeyRef); + if (typeof sch == "object") + this._cache.delete(sch.schema); + delete this.schemas[schemaKeyRef]; + delete this.refs[schemaKeyRef]; + return this; + } + case "object": { + const cacheKey = schemaKeyRef; + this._cache.delete(cacheKey); + let id = schemaKeyRef[this.opts.schemaId]; + if (id) { + id = (0, resolve_1.normalizeId)(id); + delete this.schemas[id]; + delete this.refs[id]; + } + return this; + } + default: + throw new Error("ajv.removeSchema: invalid parameter"); + } + } + // add "vocabulary" - a collection of keywords + addVocabulary(definitions) { + for (const def of definitions) + this.addKeyword(def); + return this; + } + addKeyword(kwdOrDef, def // deprecated + ) { + let keyword; + if (typeof kwdOrDef == "string") { + keyword = kwdOrDef; + if (typeof def == "object") { + this.logger.warn("these parameters are deprecated, see docs for addKeyword"); + def.keyword = keyword; + } + } + else if (typeof kwdOrDef == "object" && def === undefined) { + def = kwdOrDef; + keyword = def.keyword; + if (Array.isArray(keyword) && !keyword.length) { + throw new Error("addKeywords: keyword must be string or non-empty array"); + } + } + else { + throw new Error("invalid addKeywords parameters"); + } + checkKeyword.call(this, keyword, def); + if (!def) { + (0, util_1.eachItem)(keyword, (kwd) => addRule.call(this, kwd)); + return this; + } + keywordMetaschema.call(this, def); + const definition = { + ...def, + type: (0, dataType_1.getJSONTypes)(def.type), + schemaType: (0, dataType_1.getJSONTypes)(def.schemaType), + }; + (0, util_1.eachItem)(keyword, definition.type.length === 0 + ? (k) => addRule.call(this, k, definition) + : (k) => definition.type.forEach((t) => addRule.call(this, k, definition, t))); + return this; + } + getKeyword(keyword) { + const rule = this.RULES.all[keyword]; + return typeof rule == "object" ? rule.definition : !!rule; + } + // Remove keyword + removeKeyword(keyword) { + // TODO return type should be Ajv + const { RULES } = this; + delete RULES.keywords[keyword]; + delete RULES.all[keyword]; + for (const group of RULES.rules) { + const i = group.rules.findIndex((rule) => rule.keyword === keyword); + if (i >= 0) + group.rules.splice(i, 1); + } + return this; + } + // Add format + addFormat(name, format) { + if (typeof format == "string") + format = new RegExp(format); + this.formats[name] = format; + return this; + } + errorsText(errors = this.errors, // optional array of validation errors + { separator = ", ", dataVar = "data" } = {} // optional options with properties `separator` and `dataVar` + ) { + if (!errors || errors.length === 0) + return "No errors"; + return errors + .map((e) => `${dataVar}${e.instancePath} ${e.message}`) + .reduce((text, msg) => text + separator + msg); + } + $dataMetaSchema(metaSchema, keywordsJsonPointers) { + const rules = this.RULES.all; + metaSchema = JSON.parse(JSON.stringify(metaSchema)); + for (const jsonPointer of keywordsJsonPointers) { + const segments = jsonPointer.split("/").slice(1); // first segment is an empty string + let keywords = metaSchema; + for (const seg of segments) + keywords = keywords[seg]; + for (const key in rules) { + const rule = rules[key]; + if (typeof rule != "object") + continue; + const { $data } = rule.definition; + const schema = keywords[key]; + if ($data && schema) + keywords[key] = schemaOrData(schema); + } + } + return metaSchema; + } + _removeAllSchemas(schemas, regex) { + for (const keyRef in schemas) { + const sch = schemas[keyRef]; + if (!regex || regex.test(keyRef)) { + if (typeof sch == "string") { + delete schemas[keyRef]; + } + else if (sch && !sch.meta) { + this._cache.delete(sch.schema); + delete schemas[keyRef]; + } + } + } + } + _addSchema(schema, meta, baseId, validateSchema = this.opts.validateSchema, addSchema = this.opts.addUsedSchema) { + let id; + const { schemaId } = this.opts; + if (typeof schema == "object") { + id = schema[schemaId]; + } + else { + if (this.opts.jtd) + throw new Error("schema must be object"); + else if (typeof schema != "boolean") + throw new Error("schema must be object or boolean"); + } + let sch = this._cache.get(schema); + if (sch !== undefined) + return sch; + baseId = (0, resolve_1.normalizeId)(id || baseId); + const localRefs = resolve_1.getSchemaRefs.call(this, schema, baseId); + sch = new compile_1.SchemaEnv({ schema, schemaId, meta, baseId, localRefs }); + this._cache.set(sch.schema, sch); + if (addSchema && !baseId.startsWith("#")) { + // TODO atm it is allowed to overwrite schemas without id (instead of not adding them) + if (baseId) + this._checkUnique(baseId); + this.refs[baseId] = sch; + } + if (validateSchema) + this.validateSchema(schema, true); + return sch; + } + _checkUnique(id) { + if (this.schemas[id] || this.refs[id]) { + throw new Error(`schema with key or id "${id}" already exists`); + } + } + _compileSchemaEnv(sch) { + if (sch.meta) + this._compileMetaSchema(sch); + else + compile_1.compileSchema.call(this, sch); + /* istanbul ignore if */ + if (!sch.validate) + throw new Error("ajv implementation error"); + return sch.validate; + } + _compileMetaSchema(sch) { + const currentOpts = this.opts; + this.opts = this._metaOpts; + try { + compile_1.compileSchema.call(this, sch); + } + finally { + this.opts = currentOpts; + } + } +} +exports.default = Ajv; +Ajv.ValidationError = validation_error_1.default; +Ajv.MissingRefError = ref_error_1.default; +function checkOptions(checkOpts, options, msg, log = "error") { + for (const key in checkOpts) { + const opt = key; + if (opt in options) + this.logger[log](`${msg}: option ${key}. ${checkOpts[opt]}`); + } +} +function getSchEnv(keyRef) { + keyRef = (0, resolve_1.normalizeId)(keyRef); // TODO tests fail without this line + return this.schemas[keyRef] || this.refs[keyRef]; +} +function addInitialSchemas() { + const optsSchemas = this.opts.schemas; + if (!optsSchemas) + return; + if (Array.isArray(optsSchemas)) + this.addSchema(optsSchemas); + else + for (const key in optsSchemas) + this.addSchema(optsSchemas[key], key); +} +function addInitialFormats() { + for (const name in this.opts.formats) { + const format = this.opts.formats[name]; + if (format) + this.addFormat(name, format); + } +} +function addInitialKeywords(defs) { + if (Array.isArray(defs)) { + this.addVocabulary(defs); + return; + } + this.logger.warn("keywords option as map is deprecated, pass array"); + for (const keyword in defs) { + const def = defs[keyword]; + if (!def.keyword) + def.keyword = keyword; + this.addKeyword(def); + } +} +function getMetaSchemaOptions() { + const metaOpts = { ...this.opts }; + for (const opt of META_IGNORE_OPTIONS) + delete metaOpts[opt]; + return metaOpts; +} +const noLogs = { log() { }, warn() { }, error() { } }; +function getLogger(logger) { + if (logger === false) + return noLogs; + if (logger === undefined) + return console; + if (logger.log && logger.warn && logger.error) + return logger; + throw new Error("logger must implement log, warn and error methods"); +} +const KEYWORD_NAME = /^[a-z_$][a-z0-9_$:-]*$/i; +function checkKeyword(keyword, def) { + const { RULES } = this; + (0, util_1.eachItem)(keyword, (kwd) => { + if (RULES.keywords[kwd]) + throw new Error(`Keyword ${kwd} is already defined`); + if (!KEYWORD_NAME.test(kwd)) + throw new Error(`Keyword ${kwd} has invalid name`); + }); + if (!def) + return; + if (def.$data && !("code" in def || "validate" in def)) { + throw new Error('$data keyword must have "code" or "validate" function'); + } +} +function addRule(keyword, definition, dataType) { + var _a; + const post = definition === null || definition === void 0 ? void 0 : definition.post; + if (dataType && post) + throw new Error('keyword with "post" flag cannot have "type"'); + const { RULES } = this; + let ruleGroup = post ? RULES.post : RULES.rules.find(({ type: t }) => t === dataType); + if (!ruleGroup) { + ruleGroup = { type: dataType, rules: [] }; + RULES.rules.push(ruleGroup); + } + RULES.keywords[keyword] = true; + if (!definition) + return; + const rule = { + keyword, + definition: { + ...definition, + type: (0, dataType_1.getJSONTypes)(definition.type), + schemaType: (0, dataType_1.getJSONTypes)(definition.schemaType), + }, + }; + if (definition.before) + addBeforeRule.call(this, ruleGroup, rule, definition.before); + else + ruleGroup.rules.push(rule); + RULES.all[keyword] = rule; + (_a = definition.implements) === null || _a === void 0 ? void 0 : _a.forEach((kwd) => this.addKeyword(kwd)); +} +function addBeforeRule(ruleGroup, rule, before) { + const i = ruleGroup.rules.findIndex((_rule) => _rule.keyword === before); + if (i >= 0) { + ruleGroup.rules.splice(i, 0, rule); + } + else { + ruleGroup.rules.push(rule); + this.logger.warn(`rule ${before} is not defined`); + } +} +function keywordMetaschema(def) { + let { metaSchema } = def; + if (metaSchema === undefined) + return; + if (def.$data && this.opts.$data) + metaSchema = schemaOrData(metaSchema); + def.validateSchema = this.compile(metaSchema, true); +} +const $dataRef = { + $ref: "https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#", +}; +function schemaOrData(schema) { + return { anyOf: [schema, $dataRef] }; +} + +},{"./compile":41,"./compile/codegen":38,"./compile/ref_error":43,"./compile/resolve":44,"./compile/rules":45,"./compile/util":46,"./compile/validate":51,"./compile/validate/dataType":49,"./refs/data.json":55,"./runtime/validation_error":59}],55:[function(require,module,exports){ +module.exports={ + "$id": "https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#", + "description": "Meta-schema for $data reference (JSON AnySchema extension proposal)", + "type": "object", + "required": ["$data"], + "properties": { + "$data": { + "type": "string", + "anyOf": [{"format": "relative-json-pointer"}, {"format": "json-pointer"}] + } + }, + "additionalProperties": false +} + +},{}],56:[function(require,module,exports){ +module.exports={ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "http://json-schema.org/draft-07/schema#", + "title": "Core schema meta-schema", + "definitions": { + "schemaArray": { + "type": "array", + "minItems": 1, + "items": {"$ref": "#"} + }, + "nonNegativeInteger": { + "type": "integer", + "minimum": 0 + }, + "nonNegativeIntegerDefault0": { + "allOf": [{"$ref": "#/definitions/nonNegativeInteger"}, {"default": 0}] + }, + "simpleTypes": { + "enum": ["array", "boolean", "integer", "null", "number", "object", "string"] + }, + "stringArray": { + "type": "array", + "items": {"type": "string"}, + "uniqueItems": true, + "default": [] + } + }, + "type": ["object", "boolean"], + "properties": { + "$id": { + "type": "string", + "format": "uri-reference" + }, + "$schema": { + "type": "string", + "format": "uri" + }, + "$ref": { + "type": "string", + "format": "uri-reference" + }, + "$comment": { + "type": "string" + }, + "title": { + "type": "string" + }, + "description": { + "type": "string" + }, + "default": true, + "readOnly": { + "type": "boolean", + "default": false + }, + "examples": { + "type": "array", + "items": true + }, + "multipleOf": { + "type": "number", + "exclusiveMinimum": 0 + }, + "maximum": { + "type": "number" + }, + "exclusiveMaximum": { + "type": "number" + }, + "minimum": { + "type": "number" + }, + "exclusiveMinimum": { + "type": "number" + }, + "maxLength": {"$ref": "#/definitions/nonNegativeInteger"}, + "minLength": {"$ref": "#/definitions/nonNegativeIntegerDefault0"}, + "pattern": { + "type": "string", + "format": "regex" + }, + "additionalItems": {"$ref": "#"}, + "items": { + "anyOf": [{"$ref": "#"}, {"$ref": "#/definitions/schemaArray"}], + "default": true + }, + "maxItems": {"$ref": "#/definitions/nonNegativeInteger"}, + "minItems": {"$ref": "#/definitions/nonNegativeIntegerDefault0"}, + "uniqueItems": { + "type": "boolean", + "default": false + }, + "contains": {"$ref": "#"}, + "maxProperties": {"$ref": "#/definitions/nonNegativeInteger"}, + "minProperties": {"$ref": "#/definitions/nonNegativeIntegerDefault0"}, + "required": {"$ref": "#/definitions/stringArray"}, + "additionalProperties": {"$ref": "#"}, + "definitions": { + "type": "object", + "additionalProperties": {"$ref": "#"}, + "default": {} + }, + "properties": { + "type": "object", + "additionalProperties": {"$ref": "#"}, + "default": {} + }, + "patternProperties": { + "type": "object", + "additionalProperties": {"$ref": "#"}, + "propertyNames": {"format": "regex"}, + "default": {} + }, + "dependencies": { + "type": "object", + "additionalProperties": { + "anyOf": [{"$ref": "#"}, {"$ref": "#/definitions/stringArray"}] + } + }, + "propertyNames": {"$ref": "#"}, + "const": true, + "enum": { + "type": "array", + "items": true, + "minItems": 1, + "uniqueItems": true + }, + "type": { + "anyOf": [ + {"$ref": "#/definitions/simpleTypes"}, + { + "type": "array", + "items": {"$ref": "#/definitions/simpleTypes"}, + "minItems": 1, + "uniqueItems": true + } + ] + }, + "format": {"type": "string"}, + "contentMediaType": {"type": "string"}, + "contentEncoding": {"type": "string"}, + "if": {"$ref": "#"}, + "then": {"$ref": "#"}, + "else": {"$ref": "#"}, + "allOf": {"$ref": "#/definitions/schemaArray"}, + "anyOf": {"$ref": "#/definitions/schemaArray"}, + "oneOf": {"$ref": "#/definitions/schemaArray"}, + "not": {"$ref": "#"} + }, + "default": true +} + +},{}],57:[function(require,module,exports){ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +// https://github.com/ajv-validator/ajv/issues/889 +const equal = require("fast-deep-equal"); +equal.code = 'require("ajv/dist/runtime/equal").default'; +exports.default = equal; + +},{"fast-deep-equal":99}],58:[function(require,module,exports){ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +// https://mathiasbynens.be/notes/javascript-encoding +// https://github.com/bestiejs/punycode.js - punycode.ucs2.decode +function ucs2length(str) { + const len = str.length; + let length = 0; + let pos = 0; + let value; + while (pos < len) { + length++; + value = str.charCodeAt(pos++); + if (value >= 0xd800 && value <= 0xdbff && pos < len) { + // high surrogate, and there is a next character + value = str.charCodeAt(pos); + if ((value & 0xfc00) === 0xdc00) + pos++; // low surrogate + } + } + return length; +} +exports.default = ucs2length; +ucs2length.code = 'require("ajv/dist/runtime/ucs2length").default'; + +},{}],59:[function(require,module,exports){ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +class ValidationError extends Error { + constructor(errors) { + super("validation failed"); + this.errors = errors; + this.ajv = this.validation = true; + } +} +exports.default = ValidationError; + +},{}],60:[function(require,module,exports){ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.validateAdditionalItems = void 0; +const codegen_1 = require("../../compile/codegen"); +const util_1 = require("../../compile/util"); +const error = { + message: ({ params: { len } }) => (0, codegen_1.str) `must NOT have more than ${len} items`, + params: ({ params: { len } }) => (0, codegen_1._) `{limit: ${len}}`, +}; +const def = { + keyword: "additionalItems", + type: "array", + schemaType: ["boolean", "object"], + before: "uniqueItems", + error, + code(cxt) { + const { parentSchema, it } = cxt; + const { items } = parentSchema; + if (!Array.isArray(items)) { + (0, util_1.checkStrictMode)(it, '"additionalItems" is ignored when "items" is not an array of schemas'); + return; + } + validateAdditionalItems(cxt, items); + }, +}; +function validateAdditionalItems(cxt, items) { + const { gen, schema, data, keyword, it } = cxt; + it.items = true; + const len = gen.const("len", (0, codegen_1._) `${data}.length`); + if (schema === false) { + cxt.setParams({ len: items.length }); + cxt.pass((0, codegen_1._) `${len} <= ${items.length}`); + } + else if (typeof schema == "object" && !(0, util_1.alwaysValidSchema)(it, schema)) { + const valid = gen.var("valid", (0, codegen_1._) `${len} <= ${items.length}`); // TODO var + gen.if((0, codegen_1.not)(valid), () => validateItems(valid)); + cxt.ok(valid); + } + function validateItems(valid) { + gen.forRange("i", items.length, len, (i) => { + cxt.subschema({ keyword, dataProp: i, dataPropType: util_1.Type.Num }, valid); + if (!it.allErrors) + gen.if((0, codegen_1.not)(valid), () => gen.break()); + }); + } +} +exports.validateAdditionalItems = validateAdditionalItems; +exports.default = def; + +},{"../../compile/codegen":38,"../../compile/util":46}],61:[function(require,module,exports){ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const code_1 = require("../code"); +const codegen_1 = require("../../compile/codegen"); +const names_1 = require("../../compile/names"); +const util_1 = require("../../compile/util"); +const error = { + message: "must NOT have additional properties", + params: ({ params }) => (0, codegen_1._) `{additionalProperty: ${params.additionalProperty}}`, +}; +const def = { + keyword: "additionalProperties", + type: ["object"], + schemaType: ["boolean", "object"], + allowUndefined: true, + trackErrors: true, + error, + code(cxt) { + const { gen, schema, parentSchema, data, errsCount, it } = cxt; + /* istanbul ignore if */ + if (!errsCount) + throw new Error("ajv implementation error"); + const { allErrors, opts } = it; + it.props = true; + if (opts.removeAdditional !== "all" && (0, util_1.alwaysValidSchema)(it, schema)) + return; + const props = (0, code_1.allSchemaProperties)(parentSchema.properties); + const patProps = (0, code_1.allSchemaProperties)(parentSchema.patternProperties); + checkAdditionalProperties(); + cxt.ok((0, codegen_1._) `${errsCount} === ${names_1.default.errors}`); + function checkAdditionalProperties() { + gen.forIn("key", data, (key) => { + if (!props.length && !patProps.length) + additionalPropertyCode(key); + else + gen.if(isAdditional(key), () => additionalPropertyCode(key)); + }); + } + function isAdditional(key) { + let definedProp; + if (props.length > 8) { + // TODO maybe an option instead of hard-coded 8? + const propsSchema = (0, util_1.schemaRefOrVal)(it, parentSchema.properties, "properties"); + definedProp = (0, code_1.isOwnProperty)(gen, propsSchema, key); + } + else if (props.length) { + definedProp = (0, codegen_1.or)(...props.map((p) => (0, codegen_1._) `${key} === ${p}`)); + } + else { + definedProp = codegen_1.nil; + } + if (patProps.length) { + definedProp = (0, codegen_1.or)(definedProp, ...patProps.map((p) => (0, codegen_1._) `${(0, code_1.usePattern)(cxt, p)}.test(${key})`)); + } + return (0, codegen_1.not)(definedProp); + } + function deleteAdditional(key) { + gen.code((0, codegen_1._) `delete ${data}[${key}]`); + } + function additionalPropertyCode(key) { + if (opts.removeAdditional === "all" || (opts.removeAdditional && schema === false)) { + deleteAdditional(key); + return; + } + if (schema === false) { + cxt.setParams({ additionalProperty: key }); + cxt.error(); + if (!allErrors) + gen.break(); + return; + } + if (typeof schema == "object" && !(0, util_1.alwaysValidSchema)(it, schema)) { + const valid = gen.name("valid"); + if (opts.removeAdditional === "failing") { + applyAdditionalSchema(key, valid, false); + gen.if((0, codegen_1.not)(valid), () => { + cxt.reset(); + deleteAdditional(key); + }); + } + else { + applyAdditionalSchema(key, valid); + if (!allErrors) + gen.if((0, codegen_1.not)(valid), () => gen.break()); + } + } + } + function applyAdditionalSchema(key, valid, errors) { + const subschema = { + keyword: "additionalProperties", + dataProp: key, + dataPropType: util_1.Type.Str, + }; + if (errors === false) { + Object.assign(subschema, { + compositeRule: true, + createErrors: false, + allErrors: false, + }); + } + cxt.subschema(subschema, valid); + } + }, +}; +exports.default = def; + +},{"../../compile/codegen":38,"../../compile/names":42,"../../compile/util":46,"../code":77}],62:[function(require,module,exports){ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const util_1 = require("../../compile/util"); +const def = { + keyword: "allOf", + schemaType: "array", + code(cxt) { + const { gen, schema, it } = cxt; + /* istanbul ignore if */ + if (!Array.isArray(schema)) + throw new Error("ajv implementation error"); + const valid = gen.name("valid"); + schema.forEach((sch, i) => { + if ((0, util_1.alwaysValidSchema)(it, sch)) + return; + const schCxt = cxt.subschema({ keyword: "allOf", schemaProp: i }, valid); + cxt.ok(valid); + cxt.mergeEvaluated(schCxt); + }); + }, +}; +exports.default = def; + +},{"../../compile/util":46}],63:[function(require,module,exports){ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const code_1 = require("../code"); +const def = { + keyword: "anyOf", + schemaType: "array", + trackErrors: true, + code: code_1.validateUnion, + error: { message: "must match a schema in anyOf" }, +}; +exports.default = def; + +},{"../code":77}],64:[function(require,module,exports){ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const codegen_1 = require("../../compile/codegen"); +const util_1 = require("../../compile/util"); +const error = { + message: ({ params: { min, max } }) => max === undefined + ? (0, codegen_1.str) `must contain at least ${min} valid item(s)` + : (0, codegen_1.str) `must contain at least ${min} and no more than ${max} valid item(s)`, + params: ({ params: { min, max } }) => max === undefined ? (0, codegen_1._) `{minContains: ${min}}` : (0, codegen_1._) `{minContains: ${min}, maxContains: ${max}}`, +}; +const def = { + keyword: "contains", + type: "array", + schemaType: ["object", "boolean"], + before: "uniqueItems", + trackErrors: true, + error, + code(cxt) { + const { gen, schema, parentSchema, data, it } = cxt; + let min; + let max; + const { minContains, maxContains } = parentSchema; + if (it.opts.next) { + min = minContains === undefined ? 1 : minContains; + max = maxContains; + } + else { + min = 1; + } + const len = gen.const("len", (0, codegen_1._) `${data}.length`); + cxt.setParams({ min, max }); + if (max === undefined && min === 0) { + (0, util_1.checkStrictMode)(it, `"minContains" == 0 without "maxContains": "contains" keyword ignored`); + return; + } + if (max !== undefined && min > max) { + (0, util_1.checkStrictMode)(it, `"minContains" > "maxContains" is always invalid`); + cxt.fail(); + return; + } + if ((0, util_1.alwaysValidSchema)(it, schema)) { + let cond = (0, codegen_1._) `${len} >= ${min}`; + if (max !== undefined) + cond = (0, codegen_1._) `${cond} && ${len} <= ${max}`; + cxt.pass(cond); + return; + } + it.items = true; + const valid = gen.name("valid"); + if (max === undefined && min === 1) { + validateItems(valid, () => gen.if(valid, () => gen.break())); + } + else if (min === 0) { + gen.let(valid, true); + if (max !== undefined) + gen.if((0, codegen_1._) `${data}.length > 0`, validateItemsWithCount); + } + else { + gen.let(valid, false); + validateItemsWithCount(); + } + cxt.result(valid, () => cxt.reset()); + function validateItemsWithCount() { + const schValid = gen.name("_valid"); + const count = gen.let("count", 0); + validateItems(schValid, () => gen.if(schValid, () => checkLimits(count))); + } + function validateItems(_valid, block) { + gen.forRange("i", 0, len, (i) => { + cxt.subschema({ + keyword: "contains", + dataProp: i, + dataPropType: util_1.Type.Num, + compositeRule: true, + }, _valid); + block(); + }); + } + function checkLimits(count) { + gen.code((0, codegen_1._) `${count}++`); + if (max === undefined) { + gen.if((0, codegen_1._) `${count} >= ${min}`, () => gen.assign(valid, true).break()); + } + else { + gen.if((0, codegen_1._) `${count} > ${max}`, () => gen.assign(valid, false).break()); + if (min === 1) + gen.assign(valid, true); + else + gen.if((0, codegen_1._) `${count} >= ${min}`, () => gen.assign(valid, true)); + } + } + }, +}; +exports.default = def; + +},{"../../compile/codegen":38,"../../compile/util":46}],65:[function(require,module,exports){ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.validateSchemaDeps = exports.validatePropertyDeps = exports.error = void 0; +const codegen_1 = require("../../compile/codegen"); +const util_1 = require("../../compile/util"); +const code_1 = require("../code"); +exports.error = { + message: ({ params: { property, depsCount, deps } }) => { + const property_ies = depsCount === 1 ? "property" : "properties"; + return (0, codegen_1.str) `must have ${property_ies} ${deps} when property ${property} is present`; + }, + params: ({ params: { property, depsCount, deps, missingProperty } }) => (0, codegen_1._) `{property: ${property}, + missingProperty: ${missingProperty}, + depsCount: ${depsCount}, + deps: ${deps}}`, // TODO change to reference +}; +const def = { + keyword: "dependencies", + type: "object", + schemaType: "object", + error: exports.error, + code(cxt) { + const [propDeps, schDeps] = splitDependencies(cxt); + validatePropertyDeps(cxt, propDeps); + validateSchemaDeps(cxt, schDeps); + }, +}; +function splitDependencies({ schema }) { + const propertyDeps = {}; + const schemaDeps = {}; + for (const key in schema) { + if (key === "__proto__") + continue; + const deps = Array.isArray(schema[key]) ? propertyDeps : schemaDeps; + deps[key] = schema[key]; + } + return [propertyDeps, schemaDeps]; +} +function validatePropertyDeps(cxt, propertyDeps = cxt.schema) { + const { gen, data, it } = cxt; + if (Object.keys(propertyDeps).length === 0) + return; + const missing = gen.let("missing"); + for (const prop in propertyDeps) { + const deps = propertyDeps[prop]; + if (deps.length === 0) + continue; + const hasProperty = (0, code_1.propertyInData)(gen, data, prop, it.opts.ownProperties); + cxt.setParams({ + property: prop, + depsCount: deps.length, + deps: deps.join(", "), + }); + if (it.allErrors) { + gen.if(hasProperty, () => { + for (const depProp of deps) { + (0, code_1.checkReportMissingProp)(cxt, depProp); + } + }); + } + else { + gen.if((0, codegen_1._) `${hasProperty} && (${(0, code_1.checkMissingProp)(cxt, deps, missing)})`); + (0, code_1.reportMissingProp)(cxt, missing); + gen.else(); + } + } +} +exports.validatePropertyDeps = validatePropertyDeps; +function validateSchemaDeps(cxt, schemaDeps = cxt.schema) { + const { gen, data, keyword, it } = cxt; + const valid = gen.name("valid"); + for (const prop in schemaDeps) { + if ((0, util_1.alwaysValidSchema)(it, schemaDeps[prop])) + continue; + gen.if((0, code_1.propertyInData)(gen, data, prop, it.opts.ownProperties), () => { + const schCxt = cxt.subschema({ keyword, schemaProp: prop }, valid); + cxt.mergeValidEvaluated(schCxt, valid); + }, () => gen.var(valid, true) // TODO var + ); + cxt.ok(valid); + } +} +exports.validateSchemaDeps = validateSchemaDeps; +exports.default = def; + +},{"../../compile/codegen":38,"../../compile/util":46,"../code":77}],66:[function(require,module,exports){ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const codegen_1 = require("../../compile/codegen"); +const util_1 = require("../../compile/util"); +const error = { + message: ({ params }) => (0, codegen_1.str) `must match "${params.ifClause}" schema`, + params: ({ params }) => (0, codegen_1._) `{failingKeyword: ${params.ifClause}}`, +}; +const def = { + keyword: "if", + schemaType: ["object", "boolean"], + trackErrors: true, + error, + code(cxt) { + const { gen, parentSchema, it } = cxt; + if (parentSchema.then === undefined && parentSchema.else === undefined) { + (0, util_1.checkStrictMode)(it, '"if" without "then" and "else" is ignored'); + } + const hasThen = hasSchema(it, "then"); + const hasElse = hasSchema(it, "else"); + if (!hasThen && !hasElse) + return; + const valid = gen.let("valid", true); + const schValid = gen.name("_valid"); + validateIf(); + cxt.reset(); + if (hasThen && hasElse) { + const ifClause = gen.let("ifClause"); + cxt.setParams({ ifClause }); + gen.if(schValid, validateClause("then", ifClause), validateClause("else", ifClause)); + } + else if (hasThen) { + gen.if(schValid, validateClause("then")); + } + else { + gen.if((0, codegen_1.not)(schValid), validateClause("else")); + } + cxt.pass(valid, () => cxt.error(true)); + function validateIf() { + const schCxt = cxt.subschema({ + keyword: "if", + compositeRule: true, + createErrors: false, + allErrors: false, + }, schValid); + cxt.mergeEvaluated(schCxt); + } + function validateClause(keyword, ifClause) { + return () => { + const schCxt = cxt.subschema({ keyword }, schValid); + gen.assign(valid, schValid); + cxt.mergeValidEvaluated(schCxt, valid); + if (ifClause) + gen.assign(ifClause, (0, codegen_1._) `${keyword}`); + else + cxt.setParams({ ifClause: keyword }); + }; + } + }, +}; +function hasSchema(it, keyword) { + const schema = it.schema[keyword]; + return schema !== undefined && !(0, util_1.alwaysValidSchema)(it, schema); +} +exports.default = def; + +},{"../../compile/codegen":38,"../../compile/util":46}],67:[function(require,module,exports){ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const additionalItems_1 = require("./additionalItems"); +const prefixItems_1 = require("./prefixItems"); +const items_1 = require("./items"); +const items2020_1 = require("./items2020"); +const contains_1 = require("./contains"); +const dependencies_1 = require("./dependencies"); +const propertyNames_1 = require("./propertyNames"); +const additionalProperties_1 = require("./additionalProperties"); +const properties_1 = require("./properties"); +const patternProperties_1 = require("./patternProperties"); +const not_1 = require("./not"); +const anyOf_1 = require("./anyOf"); +const oneOf_1 = require("./oneOf"); +const allOf_1 = require("./allOf"); +const if_1 = require("./if"); +const thenElse_1 = require("./thenElse"); +function getApplicator(draft2020 = false) { + const applicator = [ + // any + not_1.default, + anyOf_1.default, + oneOf_1.default, + allOf_1.default, + if_1.default, + thenElse_1.default, + // object + propertyNames_1.default, + additionalProperties_1.default, + dependencies_1.default, + properties_1.default, + patternProperties_1.default, + ]; + // array + if (draft2020) + applicator.push(prefixItems_1.default, items2020_1.default); + else + applicator.push(additionalItems_1.default, items_1.default); + applicator.push(contains_1.default); + return applicator; +} +exports.default = getApplicator; + +},{"./additionalItems":60,"./additionalProperties":61,"./allOf":62,"./anyOf":63,"./contains":64,"./dependencies":65,"./if":66,"./items":68,"./items2020":69,"./not":70,"./oneOf":71,"./patternProperties":72,"./prefixItems":73,"./properties":74,"./propertyNames":75,"./thenElse":76}],68:[function(require,module,exports){ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.validateTuple = void 0; +const codegen_1 = require("../../compile/codegen"); +const util_1 = require("../../compile/util"); +const code_1 = require("../code"); +const def = { + keyword: "items", + type: "array", + schemaType: ["object", "array", "boolean"], + before: "uniqueItems", + code(cxt) { + const { schema, it } = cxt; + if (Array.isArray(schema)) + return validateTuple(cxt, "additionalItems", schema); + it.items = true; + if ((0, util_1.alwaysValidSchema)(it, schema)) + return; + cxt.ok((0, code_1.validateArray)(cxt)); + }, +}; +function validateTuple(cxt, extraItems, schArr = cxt.schema) { + const { gen, parentSchema, data, keyword, it } = cxt; + checkStrictTuple(parentSchema); + if (it.opts.unevaluated && schArr.length && it.items !== true) { + it.items = util_1.mergeEvaluated.items(gen, schArr.length, it.items); + } + const valid = gen.name("valid"); + const len = gen.const("len", (0, codegen_1._) `${data}.length`); + schArr.forEach((sch, i) => { + if ((0, util_1.alwaysValidSchema)(it, sch)) + return; + gen.if((0, codegen_1._) `${len} > ${i}`, () => cxt.subschema({ + keyword, + schemaProp: i, + dataProp: i, + }, valid)); + cxt.ok(valid); + }); + function checkStrictTuple(sch) { + const { opts, errSchemaPath } = it; + const l = schArr.length; + const fullTuple = l === sch.minItems && (l === sch.maxItems || sch[extraItems] === false); + if (opts.strictTuples && !fullTuple) { + const msg = `"${keyword}" is ${l}-tuple, but minItems or maxItems/${extraItems} are not specified or different at path "${errSchemaPath}"`; + (0, util_1.checkStrictMode)(it, msg, opts.strictTuples); + } + } +} +exports.validateTuple = validateTuple; +exports.default = def; + +},{"../../compile/codegen":38,"../../compile/util":46,"../code":77}],69:[function(require,module,exports){ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const codegen_1 = require("../../compile/codegen"); +const util_1 = require("../../compile/util"); +const code_1 = require("../code"); +const additionalItems_1 = require("./additionalItems"); +const error = { + message: ({ params: { len } }) => (0, codegen_1.str) `must NOT have more than ${len} items`, + params: ({ params: { len } }) => (0, codegen_1._) `{limit: ${len}}`, +}; +const def = { + keyword: "items", + type: "array", + schemaType: ["object", "boolean"], + before: "uniqueItems", + error, + code(cxt) { + const { schema, parentSchema, it } = cxt; + const { prefixItems } = parentSchema; + it.items = true; + if ((0, util_1.alwaysValidSchema)(it, schema)) + return; + if (prefixItems) + (0, additionalItems_1.validateAdditionalItems)(cxt, prefixItems); + else + cxt.ok((0, code_1.validateArray)(cxt)); + }, +}; +exports.default = def; + +},{"../../compile/codegen":38,"../../compile/util":46,"../code":77,"./additionalItems":60}],70:[function(require,module,exports){ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const util_1 = require("../../compile/util"); +const def = { + keyword: "not", + schemaType: ["object", "boolean"], + trackErrors: true, + code(cxt) { + const { gen, schema, it } = cxt; + if ((0, util_1.alwaysValidSchema)(it, schema)) { + cxt.fail(); + return; + } + const valid = gen.name("valid"); + cxt.subschema({ + keyword: "not", + compositeRule: true, + createErrors: false, + allErrors: false, + }, valid); + cxt.failResult(valid, () => cxt.reset(), () => cxt.error()); + }, + error: { message: "must NOT be valid" }, +}; +exports.default = def; + +},{"../../compile/util":46}],71:[function(require,module,exports){ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const codegen_1 = require("../../compile/codegen"); +const util_1 = require("../../compile/util"); +const error = { + message: "must match exactly one schema in oneOf", + params: ({ params }) => (0, codegen_1._) `{passingSchemas: ${params.passing}}`, +}; +const def = { + keyword: "oneOf", + schemaType: "array", + trackErrors: true, + error, + code(cxt) { + const { gen, schema, parentSchema, it } = cxt; + /* istanbul ignore if */ + if (!Array.isArray(schema)) + throw new Error("ajv implementation error"); + if (it.opts.discriminator && parentSchema.discriminator) + return; + const schArr = schema; + const valid = gen.let("valid", false); + const passing = gen.let("passing", null); + const schValid = gen.name("_valid"); + cxt.setParams({ passing }); + // TODO possibly fail straight away (with warning or exception) if there are two empty always valid schemas + gen.block(validateOneOf); + cxt.result(valid, () => cxt.reset(), () => cxt.error(true)); + function validateOneOf() { + schArr.forEach((sch, i) => { + let schCxt; + if ((0, util_1.alwaysValidSchema)(it, sch)) { + gen.var(schValid, true); + } + else { + schCxt = cxt.subschema({ + keyword: "oneOf", + schemaProp: i, + compositeRule: true, + }, schValid); + } + if (i > 0) { + gen + .if((0, codegen_1._) `${schValid} && ${valid}`) + .assign(valid, false) + .assign(passing, (0, codegen_1._) `[${passing}, ${i}]`) + .else(); + } + gen.if(schValid, () => { + gen.assign(valid, true); + gen.assign(passing, i); + if (schCxt) + cxt.mergeEvaluated(schCxt, codegen_1.Name); + }); + }); + } + }, +}; +exports.default = def; + +},{"../../compile/codegen":38,"../../compile/util":46}],72:[function(require,module,exports){ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const code_1 = require("../code"); +const codegen_1 = require("../../compile/codegen"); +const util_1 = require("../../compile/util"); +const util_2 = require("../../compile/util"); +const def = { + keyword: "patternProperties", + type: "object", + schemaType: "object", + code(cxt) { + const { gen, schema, data, parentSchema, it } = cxt; + const { opts } = it; + const patterns = (0, code_1.allSchemaProperties)(schema); + const alwaysValidPatterns = patterns.filter((p) => (0, util_1.alwaysValidSchema)(it, schema[p])); + if (patterns.length === 0 || + (alwaysValidPatterns.length === patterns.length && + (!it.opts.unevaluated || it.props === true))) { + return; + } + const checkProperties = opts.strictSchema && !opts.allowMatchingProperties && parentSchema.properties; + const valid = gen.name("valid"); + if (it.props !== true && !(it.props instanceof codegen_1.Name)) { + it.props = (0, util_2.evaluatedPropsToName)(gen, it.props); + } + const { props } = it; + validatePatternProperties(); + function validatePatternProperties() { + for (const pat of patterns) { + if (checkProperties) + checkMatchingProperties(pat); + if (it.allErrors) { + validateProperties(pat); + } + else { + gen.var(valid, true); // TODO var + validateProperties(pat); + gen.if(valid); + } + } + } + function checkMatchingProperties(pat) { + for (const prop in checkProperties) { + if (new RegExp(pat).test(prop)) { + (0, util_1.checkStrictMode)(it, `property ${prop} matches pattern ${pat} (use allowMatchingProperties)`); + } + } + } + function validateProperties(pat) { + gen.forIn("key", data, (key) => { + gen.if((0, codegen_1._) `${(0, code_1.usePattern)(cxt, pat)}.test(${key})`, () => { + const alwaysValid = alwaysValidPatterns.includes(pat); + if (!alwaysValid) { + cxt.subschema({ + keyword: "patternProperties", + schemaProp: pat, + dataProp: key, + dataPropType: util_2.Type.Str, + }, valid); + } + if (it.opts.unevaluated && props !== true) { + gen.assign((0, codegen_1._) `${props}[${key}]`, true); + } + else if (!alwaysValid && !it.allErrors) { + // can short-circuit if `unevaluatedProperties` is not supported (opts.next === false) + // or if all properties were evaluated (props === true) + gen.if((0, codegen_1.not)(valid), () => gen.break()); + } + }); + }); + } + }, +}; +exports.default = def; + +},{"../../compile/codegen":38,"../../compile/util":46,"../code":77}],73:[function(require,module,exports){ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const items_1 = require("./items"); +const def = { + keyword: "prefixItems", + type: "array", + schemaType: ["array"], + before: "uniqueItems", + code: (cxt) => (0, items_1.validateTuple)(cxt, "items"), +}; +exports.default = def; + +},{"./items":68}],74:[function(require,module,exports){ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const validate_1 = require("../../compile/validate"); +const code_1 = require("../code"); +const util_1 = require("../../compile/util"); +const additionalProperties_1 = require("./additionalProperties"); +const def = { + keyword: "properties", + type: "object", + schemaType: "object", + code(cxt) { + const { gen, schema, parentSchema, data, it } = cxt; + if (it.opts.removeAdditional === "all" && parentSchema.additionalProperties === undefined) { + additionalProperties_1.default.code(new validate_1.KeywordCxt(it, additionalProperties_1.default, "additionalProperties")); + } + const allProps = (0, code_1.allSchemaProperties)(schema); + for (const prop of allProps) { + it.definedProperties.add(prop); + } + if (it.opts.unevaluated && allProps.length && it.props !== true) { + it.props = util_1.mergeEvaluated.props(gen, (0, util_1.toHash)(allProps), it.props); + } + const properties = allProps.filter((p) => !(0, util_1.alwaysValidSchema)(it, schema[p])); + if (properties.length === 0) + return; + const valid = gen.name("valid"); + for (const prop of properties) { + if (hasDefault(prop)) { + applyPropertySchema(prop); + } + else { + gen.if((0, code_1.propertyInData)(gen, data, prop, it.opts.ownProperties)); + applyPropertySchema(prop); + if (!it.allErrors) + gen.else().var(valid, true); + gen.endIf(); + } + cxt.it.definedProperties.add(prop); + cxt.ok(valid); + } + function hasDefault(prop) { + return it.opts.useDefaults && !it.compositeRule && schema[prop].default !== undefined; + } + function applyPropertySchema(prop) { + cxt.subschema({ + keyword: "properties", + schemaProp: prop, + dataProp: prop, + }, valid); + } + }, +}; +exports.default = def; + +},{"../../compile/util":46,"../../compile/validate":51,"../code":77,"./additionalProperties":61}],75:[function(require,module,exports){ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const codegen_1 = require("../../compile/codegen"); +const util_1 = require("../../compile/util"); +const error = { + message: "property name must be valid", + params: ({ params }) => (0, codegen_1._) `{propertyName: ${params.propertyName}}`, +}; +const def = { + keyword: "propertyNames", + type: "object", + schemaType: ["object", "boolean"], + error, + code(cxt) { + const { gen, schema, data, it } = cxt; + if ((0, util_1.alwaysValidSchema)(it, schema)) + return; + const valid = gen.name("valid"); + gen.forIn("key", data, (key) => { + cxt.setParams({ propertyName: key }); + cxt.subschema({ + keyword: "propertyNames", + data: key, + dataTypes: ["string"], + propertyName: key, + compositeRule: true, + }, valid); + gen.if((0, codegen_1.not)(valid), () => { + cxt.error(true); + if (!it.allErrors) + gen.break(); + }); + }); + cxt.ok(valid); + }, +}; +exports.default = def; + +},{"../../compile/codegen":38,"../../compile/util":46}],76:[function(require,module,exports){ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const util_1 = require("../../compile/util"); +const def = { + keyword: ["then", "else"], + schemaType: ["object", "boolean"], + code({ keyword, parentSchema, it }) { + if (parentSchema.if === undefined) + (0, util_1.checkStrictMode)(it, `"${keyword}" without "if" is ignored`); + }, +}; +exports.default = def; + +},{"../../compile/util":46}],77:[function(require,module,exports){ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.validateUnion = exports.validateArray = exports.usePattern = exports.callValidateCode = exports.schemaProperties = exports.allSchemaProperties = exports.noPropertyInData = exports.propertyInData = exports.isOwnProperty = exports.hasPropFunc = exports.reportMissingProp = exports.checkMissingProp = exports.checkReportMissingProp = void 0; +const codegen_1 = require("../compile/codegen"); +const util_1 = require("../compile/util"); +const names_1 = require("../compile/names"); +const util_2 = require("../compile/util"); +function checkReportMissingProp(cxt, prop) { + const { gen, data, it } = cxt; + gen.if(noPropertyInData(gen, data, prop, it.opts.ownProperties), () => { + cxt.setParams({ missingProperty: (0, codegen_1._) `${prop}` }, true); + cxt.error(); + }); +} +exports.checkReportMissingProp = checkReportMissingProp; +function checkMissingProp({ gen, data, it: { opts } }, properties, missing) { + return (0, codegen_1.or)(...properties.map((prop) => (0, codegen_1.and)(noPropertyInData(gen, data, prop, opts.ownProperties), (0, codegen_1._) `${missing} = ${prop}`))); +} +exports.checkMissingProp = checkMissingProp; +function reportMissingProp(cxt, missing) { + cxt.setParams({ missingProperty: missing }, true); + cxt.error(); +} +exports.reportMissingProp = reportMissingProp; +function hasPropFunc(gen) { + return gen.scopeValue("func", { + // eslint-disable-next-line @typescript-eslint/unbound-method + ref: Object.prototype.hasOwnProperty, + code: (0, codegen_1._) `Object.prototype.hasOwnProperty`, + }); +} +exports.hasPropFunc = hasPropFunc; +function isOwnProperty(gen, data, property) { + return (0, codegen_1._) `${hasPropFunc(gen)}.call(${data}, ${property})`; +} +exports.isOwnProperty = isOwnProperty; +function propertyInData(gen, data, property, ownProperties) { + const cond = (0, codegen_1._) `${data}${(0, codegen_1.getProperty)(property)} !== undefined`; + return ownProperties ? (0, codegen_1._) `${cond} && ${isOwnProperty(gen, data, property)}` : cond; +} +exports.propertyInData = propertyInData; +function noPropertyInData(gen, data, property, ownProperties) { + const cond = (0, codegen_1._) `${data}${(0, codegen_1.getProperty)(property)} === undefined`; + return ownProperties ? (0, codegen_1.or)(cond, (0, codegen_1.not)(isOwnProperty(gen, data, property))) : cond; +} +exports.noPropertyInData = noPropertyInData; +function allSchemaProperties(schemaMap) { + return schemaMap ? Object.keys(schemaMap).filter((p) => p !== "__proto__") : []; +} +exports.allSchemaProperties = allSchemaProperties; +function schemaProperties(it, schemaMap) { + return allSchemaProperties(schemaMap).filter((p) => !(0, util_1.alwaysValidSchema)(it, schemaMap[p])); +} +exports.schemaProperties = schemaProperties; +function callValidateCode({ schemaCode, data, it: { gen, topSchemaRef, schemaPath, errorPath }, it }, func, context, passSchema) { + const dataAndSchema = passSchema ? (0, codegen_1._) `${schemaCode}, ${data}, ${topSchemaRef}${schemaPath}` : data; + const valCxt = [ + [names_1.default.instancePath, (0, codegen_1.strConcat)(names_1.default.instancePath, errorPath)], + [names_1.default.parentData, it.parentData], + [names_1.default.parentDataProperty, it.parentDataProperty], + [names_1.default.rootData, names_1.default.rootData], + ]; + if (it.opts.dynamicRef) + valCxt.push([names_1.default.dynamicAnchors, names_1.default.dynamicAnchors]); + const args = (0, codegen_1._) `${dataAndSchema}, ${gen.object(...valCxt)}`; + return context !== codegen_1.nil ? (0, codegen_1._) `${func}.call(${context}, ${args})` : (0, codegen_1._) `${func}(${args})`; +} +exports.callValidateCode = callValidateCode; +const newRegExp = (0, codegen_1._) `new RegExp`; +function usePattern({ gen, it: { opts } }, pattern) { + const u = opts.unicodeRegExp ? "u" : ""; + const { regExp } = opts.code; + return gen.scopeValue("pattern", { + key: pattern, + ref: regExp(pattern, u), + code: (0, codegen_1._) `${regExp.code === "new RegExp" ? newRegExp : (0, util_2.useFunc)(gen, regExp)}(${pattern}, ${u})`, + }); +} +exports.usePattern = usePattern; +function validateArray(cxt) { + const { gen, data, keyword, it } = cxt; + const valid = gen.name("valid"); + if (it.allErrors) { + const validArr = gen.let("valid", true); + validateItems(() => gen.assign(validArr, false)); + return validArr; + } + gen.var(valid, true); + validateItems(() => gen.break()); + return valid; + function validateItems(notValid) { + const len = gen.const("len", (0, codegen_1._) `${data}.length`); + gen.forRange("i", 0, len, (i) => { + cxt.subschema({ + keyword, + dataProp: i, + dataPropType: util_1.Type.Num, + }, valid); + gen.if((0, codegen_1.not)(valid), notValid); + }); + } +} +exports.validateArray = validateArray; +function validateUnion(cxt) { + const { gen, schema, keyword, it } = cxt; + /* istanbul ignore if */ + if (!Array.isArray(schema)) + throw new Error("ajv implementation error"); + const alwaysValid = schema.some((sch) => (0, util_1.alwaysValidSchema)(it, sch)); + if (alwaysValid && !it.opts.unevaluated) + return; + const valid = gen.let("valid", false); + const schValid = gen.name("_valid"); + gen.block(() => schema.forEach((_sch, i) => { + const schCxt = cxt.subschema({ + keyword, + schemaProp: i, + compositeRule: true, + }, schValid); + gen.assign(valid, (0, codegen_1._) `${valid} || ${schValid}`); + const merged = cxt.mergeValidEvaluated(schCxt, schValid); + // can short-circuit if `unevaluatedProperties/Items` not supported (opts.unevaluated !== true) + // or if all properties and items were evaluated (it.props === true && it.items === true) + if (!merged) + gen.if((0, codegen_1.not)(valid)); + })); + cxt.result(valid, () => cxt.reset(), () => cxt.error(true)); +} +exports.validateUnion = validateUnion; + +},{"../compile/codegen":38,"../compile/names":42,"../compile/util":46}],78:[function(require,module,exports){ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const def = { + keyword: "id", + code() { + throw new Error('NOT SUPPORTED: keyword "id", use "$id" for schema ID'); + }, +}; +exports.default = def; + +},{}],79:[function(require,module,exports){ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const id_1 = require("./id"); +const ref_1 = require("./ref"); +const core = [ + "$schema", + "$id", + "$defs", + "$vocabulary", + { keyword: "$comment" }, + "definitions", + id_1.default, + ref_1.default, +]; +exports.default = core; + +},{"./id":78,"./ref":80}],80:[function(require,module,exports){ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.callRef = exports.getValidate = void 0; +const ref_error_1 = require("../../compile/ref_error"); +const code_1 = require("../code"); +const codegen_1 = require("../../compile/codegen"); +const names_1 = require("../../compile/names"); +const compile_1 = require("../../compile"); +const util_1 = require("../../compile/util"); +const def = { + keyword: "$ref", + schemaType: "string", + code(cxt) { + const { gen, schema: $ref, it } = cxt; + const { baseId, schemaEnv: env, validateName, opts, self } = it; + const { root } = env; + if (($ref === "#" || $ref === "#/") && baseId === root.baseId) + return callRootRef(); + const schOrEnv = compile_1.resolveRef.call(self, root, baseId, $ref); + if (schOrEnv === undefined) + throw new ref_error_1.default(baseId, $ref); + if (schOrEnv instanceof compile_1.SchemaEnv) + return callValidate(schOrEnv); + return inlineRefSchema(schOrEnv); + function callRootRef() { + if (env === root) + return callRef(cxt, validateName, env, env.$async); + const rootName = gen.scopeValue("root", { ref: root }); + return callRef(cxt, (0, codegen_1._) `${rootName}.validate`, root, root.$async); + } + function callValidate(sch) { + const v = getValidate(cxt, sch); + callRef(cxt, v, sch, sch.$async); + } + function inlineRefSchema(sch) { + const schName = gen.scopeValue("schema", opts.code.source === true ? { ref: sch, code: (0, codegen_1.stringify)(sch) } : { ref: sch }); + const valid = gen.name("valid"); + const schCxt = cxt.subschema({ + schema: sch, + dataTypes: [], + schemaPath: codegen_1.nil, + topSchemaRef: schName, + errSchemaPath: $ref, + }, valid); + cxt.mergeEvaluated(schCxt); + cxt.ok(valid); + } + }, +}; +function getValidate(cxt, sch) { + const { gen } = cxt; + return sch.validate + ? gen.scopeValue("validate", { ref: sch.validate }) + : (0, codegen_1._) `${gen.scopeValue("wrapper", { ref: sch })}.validate`; +} +exports.getValidate = getValidate; +function callRef(cxt, v, sch, $async) { + const { gen, it } = cxt; + const { allErrors, schemaEnv: env, opts } = it; + const passCxt = opts.passContext ? names_1.default.this : codegen_1.nil; + if ($async) + callAsyncRef(); + else + callSyncRef(); + function callAsyncRef() { + if (!env.$async) + throw new Error("async schema referenced by sync schema"); + const valid = gen.let("valid"); + gen.try(() => { + gen.code((0, codegen_1._) `await ${(0, code_1.callValidateCode)(cxt, v, passCxt)}`); + addEvaluatedFrom(v); // TODO will not work with async, it has to be returned with the result + if (!allErrors) + gen.assign(valid, true); + }, (e) => { + gen.if((0, codegen_1._) `!(${e} instanceof ${it.ValidationError})`, () => gen.throw(e)); + addErrorsFrom(e); + if (!allErrors) + gen.assign(valid, false); + }); + cxt.ok(valid); + } + function callSyncRef() { + cxt.result((0, code_1.callValidateCode)(cxt, v, passCxt), () => addEvaluatedFrom(v), () => addErrorsFrom(v)); + } + function addErrorsFrom(source) { + const errs = (0, codegen_1._) `${source}.errors`; + gen.assign(names_1.default.vErrors, (0, codegen_1._) `${names_1.default.vErrors} === null ? ${errs} : ${names_1.default.vErrors}.concat(${errs})`); // TODO tagged + gen.assign(names_1.default.errors, (0, codegen_1._) `${names_1.default.vErrors}.length`); + } + function addEvaluatedFrom(source) { + var _a; + if (!it.opts.unevaluated) + return; + const schEvaluated = (_a = sch === null || sch === void 0 ? void 0 : sch.validate) === null || _a === void 0 ? void 0 : _a.evaluated; + // TODO refactor + if (it.props !== true) { + if (schEvaluated && !schEvaluated.dynamicProps) { + if (schEvaluated.props !== undefined) { + it.props = util_1.mergeEvaluated.props(gen, schEvaluated.props, it.props); + } + } + else { + const props = gen.var("props", (0, codegen_1._) `${source}.evaluated.props`); + it.props = util_1.mergeEvaluated.props(gen, props, it.props, codegen_1.Name); + } + } + if (it.items !== true) { + if (schEvaluated && !schEvaluated.dynamicItems) { + if (schEvaluated.items !== undefined) { + it.items = util_1.mergeEvaluated.items(gen, schEvaluated.items, it.items); + } + } + else { + const items = gen.var("items", (0, codegen_1._) `${source}.evaluated.items`); + it.items = util_1.mergeEvaluated.items(gen, items, it.items, codegen_1.Name); + } + } + } +} +exports.callRef = callRef; +exports.default = def; + +},{"../../compile":41,"../../compile/codegen":38,"../../compile/names":42,"../../compile/ref_error":43,"../../compile/util":46,"../code":77}],81:[function(require,module,exports){ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const codegen_1 = require("../../compile/codegen"); +const types_1 = require("../discriminator/types"); +const error = { + message: ({ params: { discrError, tagName } }) => discrError === types_1.DiscrError.Tag + ? `tag "${tagName}" must be string` + : `value of tag "${tagName}" must be in oneOf`, + params: ({ params: { discrError, tag, tagName } }) => (0, codegen_1._) `{error: ${discrError}, tag: ${tagName}, tagValue: ${tag}}`, +}; +const def = { + keyword: "discriminator", + type: "object", + schemaType: "object", + error, + code(cxt) { + const { gen, data, schema, parentSchema, it } = cxt; + const { oneOf } = parentSchema; + if (!it.opts.discriminator) { + throw new Error("discriminator: requires discriminator option"); + } + const tagName = schema.propertyName; + if (typeof tagName != "string") + throw new Error("discriminator: requires propertyName"); + if (schema.mapping) + throw new Error("discriminator: mapping is not supported"); + if (!oneOf) + throw new Error("discriminator: requires oneOf keyword"); + const valid = gen.let("valid", false); + const tag = gen.const("tag", (0, codegen_1._) `${data}${(0, codegen_1.getProperty)(tagName)}`); + gen.if((0, codegen_1._) `typeof ${tag} == "string"`, () => validateMapping(), () => cxt.error(false, { discrError: types_1.DiscrError.Tag, tag, tagName })); + cxt.ok(valid); + function validateMapping() { + const mapping = getMapping(); + gen.if(false); + for (const tagValue in mapping) { + gen.elseIf((0, codegen_1._) `${tag} === ${tagValue}`); + gen.assign(valid, applyTagSchema(mapping[tagValue])); + } + gen.else(); + cxt.error(false, { discrError: types_1.DiscrError.Mapping, tag, tagName }); + gen.endIf(); + } + function applyTagSchema(schemaProp) { + const _valid = gen.name("valid"); + const schCxt = cxt.subschema({ keyword: "oneOf", schemaProp }, _valid); + cxt.mergeEvaluated(schCxt, codegen_1.Name); + return _valid; + } + function getMapping() { + var _a; + const oneOfMapping = {}; + const topRequired = hasRequired(parentSchema); + let tagRequired = true; + for (let i = 0; i < oneOf.length; i++) { + const sch = oneOf[i]; + const propSch = (_a = sch.properties) === null || _a === void 0 ? void 0 : _a[tagName]; + if (typeof propSch != "object") { + throw new Error(`discriminator: oneOf schemas must have "properties/${tagName}"`); + } + tagRequired = tagRequired && (topRequired || hasRequired(sch)); + addMappings(propSch, i); + } + if (!tagRequired) + throw new Error(`discriminator: "${tagName}" must be required`); + return oneOfMapping; + function hasRequired({ required }) { + return Array.isArray(required) && required.includes(tagName); + } + function addMappings(sch, i) { + if (sch.const) { + addMapping(sch.const, i); + } + else if (sch.enum) { + for (const tagValue of sch.enum) { + addMapping(tagValue, i); + } + } + else { + throw new Error(`discriminator: "properties/${tagName}" must have "const" or "enum"`); + } + } + function addMapping(tagValue, i) { + if (typeof tagValue != "string" || tagValue in oneOfMapping) { + throw new Error(`discriminator: "${tagName}" values must be unique strings`); + } + oneOfMapping[tagValue] = i; + } + } + }, +}; +exports.default = def; + +},{"../../compile/codegen":38,"../discriminator/types":82}],82:[function(require,module,exports){ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.DiscrError = void 0; +var DiscrError; +(function (DiscrError) { + DiscrError["Tag"] = "tag"; + DiscrError["Mapping"] = "mapping"; +})(DiscrError = exports.DiscrError || (exports.DiscrError = {})); + +},{}],83:[function(require,module,exports){ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const core_1 = require("./core"); +const validation_1 = require("./validation"); +const applicator_1 = require("./applicator"); +const format_1 = require("./format"); +const metadata_1 = require("./metadata"); +const draft7Vocabularies = [ + core_1.default, + validation_1.default, + (0, applicator_1.default)(), + format_1.default, + metadata_1.metadataVocabulary, + metadata_1.contentVocabulary, +]; +exports.default = draft7Vocabularies; + +},{"./applicator":67,"./core":79,"./format":85,"./metadata":86,"./validation":89}],84:[function(require,module,exports){ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const codegen_1 = require("../../compile/codegen"); +const error = { + message: ({ schemaCode }) => (0, codegen_1.str) `must match format "${schemaCode}"`, + params: ({ schemaCode }) => (0, codegen_1._) `{format: ${schemaCode}}`, +}; +const def = { + keyword: "format", + type: ["number", "string"], + schemaType: "string", + $data: true, + error, + code(cxt, ruleType) { + const { gen, data, $data, schema, schemaCode, it } = cxt; + const { opts, errSchemaPath, schemaEnv, self } = it; + if (!opts.validateFormats) + return; + if ($data) + validate$DataFormat(); + else + validateFormat(); + function validate$DataFormat() { + const fmts = gen.scopeValue("formats", { + ref: self.formats, + code: opts.code.formats, + }); + const fDef = gen.const("fDef", (0, codegen_1._) `${fmts}[${schemaCode}]`); + const fType = gen.let("fType"); + const format = gen.let("format"); + // TODO simplify + gen.if((0, codegen_1._) `typeof ${fDef} == "object" && !(${fDef} instanceof RegExp)`, () => gen.assign(fType, (0, codegen_1._) `${fDef}.type || "string"`).assign(format, (0, codegen_1._) `${fDef}.validate`), () => gen.assign(fType, (0, codegen_1._) `"string"`).assign(format, fDef)); + cxt.fail$data((0, codegen_1.or)(unknownFmt(), invalidFmt())); + function unknownFmt() { + if (opts.strictSchema === false) + return codegen_1.nil; + return (0, codegen_1._) `${schemaCode} && !${format}`; + } + function invalidFmt() { + const callFormat = schemaEnv.$async + ? (0, codegen_1._) `(${fDef}.async ? await ${format}(${data}) : ${format}(${data}))` + : (0, codegen_1._) `${format}(${data})`; + const validData = (0, codegen_1._) `(typeof ${format} == "function" ? ${callFormat} : ${format}.test(${data}))`; + return (0, codegen_1._) `${format} && ${format} !== true && ${fType} === ${ruleType} && !${validData}`; + } + } + function validateFormat() { + const formatDef = self.formats[schema]; + if (!formatDef) { + unknownFormat(); + return; + } + if (formatDef === true) + return; + const [fmtType, format, fmtRef] = getFormat(formatDef); + if (fmtType === ruleType) + cxt.pass(validCondition()); + function unknownFormat() { + if (opts.strictSchema === false) { + self.logger.warn(unknownMsg()); + return; + } + throw new Error(unknownMsg()); + function unknownMsg() { + return `unknown format "${schema}" ignored in schema at path "${errSchemaPath}"`; + } + } + function getFormat(fmtDef) { + const code = fmtDef instanceof RegExp + ? (0, codegen_1.regexpCode)(fmtDef) + : opts.code.formats + ? (0, codegen_1._) `${opts.code.formats}${(0, codegen_1.getProperty)(schema)}` + : undefined; + const fmt = gen.scopeValue("formats", { key: schema, ref: fmtDef, code }); + if (typeof fmtDef == "object" && !(fmtDef instanceof RegExp)) { + return [fmtDef.type || "string", fmtDef.validate, (0, codegen_1._) `${fmt}.validate`]; + } + return ["string", fmtDef, fmt]; + } + function validCondition() { + if (typeof formatDef == "object" && !(formatDef instanceof RegExp) && formatDef.async) { + if (!schemaEnv.$async) + throw new Error("async format in sync schema"); + return (0, codegen_1._) `await ${fmtRef}(${data})`; + } + return typeof format == "function" ? (0, codegen_1._) `${fmtRef}(${data})` : (0, codegen_1._) `${fmtRef}.test(${data})`; + } + } + }, +}; +exports.default = def; + +},{"../../compile/codegen":38}],85:[function(require,module,exports){ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const format_1 = require("./format"); +const format = [format_1.default]; +exports.default = format; + +},{"./format":84}],86:[function(require,module,exports){ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.contentVocabulary = exports.metadataVocabulary = void 0; +exports.metadataVocabulary = [ + "title", + "description", + "default", + "deprecated", + "readOnly", + "writeOnly", + "examples", +]; +exports.contentVocabulary = [ + "contentMediaType", + "contentEncoding", + "contentSchema", +]; + +},{}],87:[function(require,module,exports){ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const codegen_1 = require("../../compile/codegen"); +const util_1 = require("../../compile/util"); +const equal_1 = require("../../runtime/equal"); +const error = { + message: "must be equal to constant", + params: ({ schemaCode }) => (0, codegen_1._) `{allowedValue: ${schemaCode}}`, +}; +const def = { + keyword: "const", + $data: true, + error, + code(cxt) { + const { gen, data, $data, schemaCode, schema } = cxt; + if ($data || (schema && typeof schema == "object")) { + cxt.fail$data((0, codegen_1._) `!${(0, util_1.useFunc)(gen, equal_1.default)}(${data}, ${schemaCode})`); + } + else { + cxt.fail((0, codegen_1._) `${schema} !== ${data}`); + } + }, +}; +exports.default = def; + +},{"../../compile/codegen":38,"../../compile/util":46,"../../runtime/equal":57}],88:[function(require,module,exports){ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const codegen_1 = require("../../compile/codegen"); +const util_1 = require("../../compile/util"); +const equal_1 = require("../../runtime/equal"); +const error = { + message: "must be equal to one of the allowed values", + params: ({ schemaCode }) => (0, codegen_1._) `{allowedValues: ${schemaCode}}`, +}; +const def = { + keyword: "enum", + schemaType: "array", + $data: true, + error, + code(cxt) { + const { gen, data, $data, schema, schemaCode, it } = cxt; + if (!$data && schema.length === 0) + throw new Error("enum must have non-empty array"); + const useLoop = schema.length >= it.opts.loopEnum; + const eql = (0, util_1.useFunc)(gen, equal_1.default); + let valid; + if (useLoop || $data) { + valid = gen.let("valid"); + cxt.block$data(valid, loopEnum); + } + else { + /* istanbul ignore if */ + if (!Array.isArray(schema)) + throw new Error("ajv implementation error"); + const vSchema = gen.const("vSchema", schemaCode); + valid = (0, codegen_1.or)(...schema.map((_x, i) => equalCode(vSchema, i))); + } + cxt.pass(valid); + function loopEnum() { + gen.assign(valid, false); + gen.forOf("v", schemaCode, (v) => gen.if((0, codegen_1._) `${eql}(${data}, ${v})`, () => gen.assign(valid, true).break())); + } + function equalCode(vSchema, i) { + const sch = schema[i]; + return typeof sch === "object" && sch !== null + ? (0, codegen_1._) `${eql}(${data}, ${vSchema}[${i}])` + : (0, codegen_1._) `${data} === ${sch}`; + } + }, +}; +exports.default = def; + +},{"../../compile/codegen":38,"../../compile/util":46,"../../runtime/equal":57}],89:[function(require,module,exports){ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const limitNumber_1 = require("./limitNumber"); +const multipleOf_1 = require("./multipleOf"); +const limitLength_1 = require("./limitLength"); +const pattern_1 = require("./pattern"); +const limitProperties_1 = require("./limitProperties"); +const required_1 = require("./required"); +const limitItems_1 = require("./limitItems"); +const uniqueItems_1 = require("./uniqueItems"); +const const_1 = require("./const"); +const enum_1 = require("./enum"); +const validation = [ + // number + limitNumber_1.default, + multipleOf_1.default, + // string + limitLength_1.default, + pattern_1.default, + // object + limitProperties_1.default, + required_1.default, + // array + limitItems_1.default, + uniqueItems_1.default, + // any + { keyword: "type", schemaType: ["string", "array"] }, + { keyword: "nullable", schemaType: "boolean" }, + const_1.default, + enum_1.default, +]; +exports.default = validation; + +},{"./const":87,"./enum":88,"./limitItems":90,"./limitLength":91,"./limitNumber":92,"./limitProperties":93,"./multipleOf":94,"./pattern":95,"./required":96,"./uniqueItems":97}],90:[function(require,module,exports){ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const codegen_1 = require("../../compile/codegen"); +const error = { + message({ keyword, schemaCode }) { + const comp = keyword === "maxItems" ? "more" : "fewer"; + return (0, codegen_1.str) `must NOT have ${comp} than ${schemaCode} items`; + }, + params: ({ schemaCode }) => (0, codegen_1._) `{limit: ${schemaCode}}`, +}; +const def = { + keyword: ["maxItems", "minItems"], + type: "array", + schemaType: "number", + $data: true, + error, + code(cxt) { + const { keyword, data, schemaCode } = cxt; + const op = keyword === "maxItems" ? codegen_1.operators.GT : codegen_1.operators.LT; + cxt.fail$data((0, codegen_1._) `${data}.length ${op} ${schemaCode}`); + }, +}; +exports.default = def; + +},{"../../compile/codegen":38}],91:[function(require,module,exports){ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const codegen_1 = require("../../compile/codegen"); +const util_1 = require("../../compile/util"); +const ucs2length_1 = require("../../runtime/ucs2length"); +const error = { + message({ keyword, schemaCode }) { + const comp = keyword === "maxLength" ? "more" : "fewer"; + return (0, codegen_1.str) `must NOT have ${comp} than ${schemaCode} characters`; + }, + params: ({ schemaCode }) => (0, codegen_1._) `{limit: ${schemaCode}}`, +}; +const def = { + keyword: ["maxLength", "minLength"], + type: "string", + schemaType: "number", + $data: true, + error, + code(cxt) { + const { keyword, data, schemaCode, it } = cxt; + const op = keyword === "maxLength" ? codegen_1.operators.GT : codegen_1.operators.LT; + const len = it.opts.unicode === false ? (0, codegen_1._) `${data}.length` : (0, codegen_1._) `${(0, util_1.useFunc)(cxt.gen, ucs2length_1.default)}(${data})`; + cxt.fail$data((0, codegen_1._) `${len} ${op} ${schemaCode}`); + }, +}; +exports.default = def; + +},{"../../compile/codegen":38,"../../compile/util":46,"../../runtime/ucs2length":58}],92:[function(require,module,exports){ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const codegen_1 = require("../../compile/codegen"); +const ops = codegen_1.operators; +const KWDs = { + maximum: { okStr: "<=", ok: ops.LTE, fail: ops.GT }, + minimum: { okStr: ">=", ok: ops.GTE, fail: ops.LT }, + exclusiveMaximum: { okStr: "<", ok: ops.LT, fail: ops.GTE }, + exclusiveMinimum: { okStr: ">", ok: ops.GT, fail: ops.LTE }, +}; +const error = { + message: ({ keyword, schemaCode }) => (0, codegen_1.str) `must be ${KWDs[keyword].okStr} ${schemaCode}`, + params: ({ keyword, schemaCode }) => (0, codegen_1._) `{comparison: ${KWDs[keyword].okStr}, limit: ${schemaCode}}`, +}; +const def = { + keyword: Object.keys(KWDs), + type: "number", + schemaType: "number", + $data: true, + error, + code(cxt) { + const { keyword, data, schemaCode } = cxt; + cxt.fail$data((0, codegen_1._) `${data} ${KWDs[keyword].fail} ${schemaCode} || isNaN(${data})`); + }, +}; +exports.default = def; + +},{"../../compile/codegen":38}],93:[function(require,module,exports){ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const codegen_1 = require("../../compile/codegen"); +const error = { + message({ keyword, schemaCode }) { + const comp = keyword === "maxProperties" ? "more" : "fewer"; + return (0, codegen_1.str) `must NOT have ${comp} than ${schemaCode} items`; + }, + params: ({ schemaCode }) => (0, codegen_1._) `{limit: ${schemaCode}}`, +}; +const def = { + keyword: ["maxProperties", "minProperties"], + type: "object", + schemaType: "number", + $data: true, + error, + code(cxt) { + const { keyword, data, schemaCode } = cxt; + const op = keyword === "maxProperties" ? codegen_1.operators.GT : codegen_1.operators.LT; + cxt.fail$data((0, codegen_1._) `Object.keys(${data}).length ${op} ${schemaCode}`); + }, +}; +exports.default = def; + +},{"../../compile/codegen":38}],94:[function(require,module,exports){ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const codegen_1 = require("../../compile/codegen"); +const error = { + message: ({ schemaCode }) => (0, codegen_1.str) `must be multiple of ${schemaCode}`, + params: ({ schemaCode }) => (0, codegen_1._) `{multipleOf: ${schemaCode}}`, +}; +const def = { + keyword: "multipleOf", + type: "number", + schemaType: "number", + $data: true, + error, + code(cxt) { + const { gen, data, schemaCode, it } = cxt; + // const bdt = bad$DataType(schemaCode, def.schemaType, $data) + const prec = it.opts.multipleOfPrecision; + const res = gen.let("res"); + const invalid = prec + ? (0, codegen_1._) `Math.abs(Math.round(${res}) - ${res}) > 1e-${prec}` + : (0, codegen_1._) `${res} !== parseInt(${res})`; + cxt.fail$data((0, codegen_1._) `(${schemaCode} === 0 || (${res} = ${data}/${schemaCode}, ${invalid}))`); + }, +}; +exports.default = def; + +},{"../../compile/codegen":38}],95:[function(require,module,exports){ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const code_1 = require("../code"); +const codegen_1 = require("../../compile/codegen"); +const error = { + message: ({ schemaCode }) => (0, codegen_1.str) `must match pattern "${schemaCode}"`, + params: ({ schemaCode }) => (0, codegen_1._) `{pattern: ${schemaCode}}`, +}; +const def = { + keyword: "pattern", + type: "string", + schemaType: "string", + $data: true, + error, + code(cxt) { + const { data, $data, schema, schemaCode, it } = cxt; + // TODO regexp should be wrapped in try/catchs + const u = it.opts.unicodeRegExp ? "u" : ""; + const regExp = $data ? (0, codegen_1._) `(new RegExp(${schemaCode}, ${u}))` : (0, code_1.usePattern)(cxt, schema); + cxt.fail$data((0, codegen_1._) `!${regExp}.test(${data})`); + }, +}; +exports.default = def; + +},{"../../compile/codegen":38,"../code":77}],96:[function(require,module,exports){ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const code_1 = require("../code"); +const codegen_1 = require("../../compile/codegen"); +const util_1 = require("../../compile/util"); +const error = { + message: ({ params: { missingProperty } }) => (0, codegen_1.str) `must have required property '${missingProperty}'`, + params: ({ params: { missingProperty } }) => (0, codegen_1._) `{missingProperty: ${missingProperty}}`, +}; +const def = { + keyword: "required", + type: "object", + schemaType: "array", + $data: true, + error, + code(cxt) { + const { gen, schema, schemaCode, data, $data, it } = cxt; + const { opts } = it; + if (!$data && schema.length === 0) + return; + const useLoop = schema.length >= opts.loopRequired; + if (it.allErrors) + allErrorsMode(); + else + exitOnErrorMode(); + if (opts.strictRequired) { + const props = cxt.parentSchema.properties; + const { definedProperties } = cxt.it; + for (const requiredKey of schema) { + if ((props === null || props === void 0 ? void 0 : props[requiredKey]) === undefined && !definedProperties.has(requiredKey)) { + const schemaPath = it.schemaEnv.baseId + it.errSchemaPath; + const msg = `required property "${requiredKey}" is not defined at "${schemaPath}" (strictRequired)`; + (0, util_1.checkStrictMode)(it, msg, it.opts.strictRequired); + } + } + } + function allErrorsMode() { + if (useLoop || $data) { + cxt.block$data(codegen_1.nil, loopAllRequired); + } + else { + for (const prop of schema) { + (0, code_1.checkReportMissingProp)(cxt, prop); + } + } + } + function exitOnErrorMode() { + const missing = gen.let("missing"); + if (useLoop || $data) { + const valid = gen.let("valid", true); + cxt.block$data(valid, () => loopUntilMissing(missing, valid)); + cxt.ok(valid); + } + else { + gen.if((0, code_1.checkMissingProp)(cxt, schema, missing)); + (0, code_1.reportMissingProp)(cxt, missing); + gen.else(); + } + } + function loopAllRequired() { + gen.forOf("prop", schemaCode, (prop) => { + cxt.setParams({ missingProperty: prop }); + gen.if((0, code_1.noPropertyInData)(gen, data, prop, opts.ownProperties), () => cxt.error()); + }); + } + function loopUntilMissing(missing, valid) { + cxt.setParams({ missingProperty: missing }); + gen.forOf(missing, schemaCode, () => { + gen.assign(valid, (0, code_1.propertyInData)(gen, data, missing, opts.ownProperties)); + gen.if((0, codegen_1.not)(valid), () => { + cxt.error(); + gen.break(); + }); + }, codegen_1.nil); + } + }, +}; +exports.default = def; + +},{"../../compile/codegen":38,"../../compile/util":46,"../code":77}],97:[function(require,module,exports){ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const dataType_1 = require("../../compile/validate/dataType"); +const codegen_1 = require("../../compile/codegen"); +const util_1 = require("../../compile/util"); +const equal_1 = require("../../runtime/equal"); +const error = { + message: ({ params: { i, j } }) => (0, codegen_1.str) `must NOT have duplicate items (items ## ${j} and ${i} are identical)`, + params: ({ params: { i, j } }) => (0, codegen_1._) `{i: ${i}, j: ${j}}`, +}; +const def = { + keyword: "uniqueItems", + type: "array", + schemaType: "boolean", + $data: true, + error, + code(cxt) { + const { gen, data, $data, schema, parentSchema, schemaCode, it } = cxt; + if (!$data && !schema) + return; + const valid = gen.let("valid"); + const itemTypes = parentSchema.items ? (0, dataType_1.getSchemaTypes)(parentSchema.items) : []; + cxt.block$data(valid, validateUniqueItems, (0, codegen_1._) `${schemaCode} === false`); + cxt.ok(valid); + function validateUniqueItems() { + const i = gen.let("i", (0, codegen_1._) `${data}.length`); + const j = gen.let("j"); + cxt.setParams({ i, j }); + gen.assign(valid, true); + gen.if((0, codegen_1._) `${i} > 1`, () => (canOptimize() ? loopN : loopN2)(i, j)); + } + function canOptimize() { + return itemTypes.length > 0 && !itemTypes.some((t) => t === "object" || t === "array"); + } + function loopN(i, j) { + const item = gen.name("item"); + const wrongType = (0, dataType_1.checkDataTypes)(itemTypes, item, it.opts.strictNumbers, dataType_1.DataType.Wrong); + const indices = gen.const("indices", (0, codegen_1._) `{}`); + gen.for((0, codegen_1._) `;${i}--;`, () => { + gen.let(item, (0, codegen_1._) `${data}[${i}]`); + gen.if(wrongType, (0, codegen_1._) `continue`); + if (itemTypes.length > 1) + gen.if((0, codegen_1._) `typeof ${item} == "string"`, (0, codegen_1._) `${item} += "_"`); + gen + .if((0, codegen_1._) `typeof ${indices}[${item}] == "number"`, () => { + gen.assign(j, (0, codegen_1._) `${indices}[${item}]`); + cxt.error(); + gen.assign(valid, false).break(); + }) + .code((0, codegen_1._) `${indices}[${item}] = ${i}`); + }); + } + function loopN2(i, j) { + const eql = (0, util_1.useFunc)(gen, equal_1.default); + const outer = gen.name("outer"); + gen.label(outer).for((0, codegen_1._) `;${i}--;`, () => gen.for((0, codegen_1._) `${j} = ${i}; ${j}--;`, () => gen.if((0, codegen_1._) `${eql}(${data}[${i}], ${data}[${j}])`, () => { + cxt.error(); + gen.assign(valid, false).break(outer); + }))); + } + }, +}; +exports.default = def; + +},{"../../compile/codegen":38,"../../compile/util":46,"../../compile/validate/dataType":49,"../../runtime/equal":57}],98:[function(require,module,exports){ +(function (Buffer){(function (){ +var clone = (function() { +'use strict'; + +function _instanceof(obj, type) { + return type != null && obj instanceof type; +} + +var nativeMap; +try { + nativeMap = Map; +} catch(_) { + // maybe a reference error because no `Map`. Give it a dummy value that no + // value will ever be an instanceof. + nativeMap = function() {}; +} + +var nativeSet; +try { + nativeSet = Set; +} catch(_) { + nativeSet = function() {}; +} + +var nativePromise; +try { + nativePromise = Promise; +} catch(_) { + nativePromise = function() {}; +} + +/** + * Clones (copies) an Object using deep copying. + * + * This function supports circular references by default, but if you are certain + * there are no circular references in your object, you can save some CPU time + * by calling clone(obj, false). + * + * Caution: if `circular` is false and `parent` contains circular references, + * your program may enter an infinite loop and crash. + * + * @param `parent` - the object to be cloned + * @param `circular` - set to true if the object to be cloned may contain + * circular references. (optional - true by default) + * @param `depth` - set to a number if the object is only to be cloned to + * a particular depth. (optional - defaults to Infinity) + * @param `prototype` - sets the prototype to be used when cloning an object. + * (optional - defaults to parent prototype). + * @param `includeNonEnumerable` - set to true if the non-enumerable properties + * should be cloned as well. Non-enumerable properties on the prototype + * chain will be ignored. (optional - false by default) +*/ +function clone(parent, circular, depth, prototype, includeNonEnumerable) { + if (typeof circular === 'object') { + depth = circular.depth; + prototype = circular.prototype; + includeNonEnumerable = circular.includeNonEnumerable; + circular = circular.circular; + } + // maintain two arrays for circular references, where corresponding parents + // and children have the same index + var allParents = []; + var allChildren = []; + + var useBuffer = typeof Buffer != 'undefined'; + + if (typeof circular == 'undefined') + circular = true; + + if (typeof depth == 'undefined') + depth = Infinity; + + // recurse this function so we don't reset allParents and allChildren + function _clone(parent, depth) { + // cloning null always returns null + if (parent === null) + return null; + + if (depth === 0) + return parent; + + var child; + var proto; + if (typeof parent != 'object') { + return parent; + } + + if (_instanceof(parent, nativeMap)) { + child = new nativeMap(); + } else if (_instanceof(parent, nativeSet)) { + child = new nativeSet(); + } else if (_instanceof(parent, nativePromise)) { + child = new nativePromise(function (resolve, reject) { + parent.then(function(value) { + resolve(_clone(value, depth - 1)); + }, function(err) { + reject(_clone(err, depth - 1)); + }); + }); + } else if (clone.__isArray(parent)) { + child = []; + } else if (clone.__isRegExp(parent)) { + child = new RegExp(parent.source, __getRegExpFlags(parent)); + if (parent.lastIndex) child.lastIndex = parent.lastIndex; + } else if (clone.__isDate(parent)) { + child = new Date(parent.getTime()); + } else if (useBuffer && Buffer.isBuffer(parent)) { + if (Buffer.allocUnsafe) { + // Node.js >= 4.5.0 + child = Buffer.allocUnsafe(parent.length); + } else { + // Older Node.js versions + child = new Buffer(parent.length); + } + parent.copy(child); + return child; + } else if (_instanceof(parent, Error)) { + child = Object.create(parent); + } else { + if (typeof prototype == 'undefined') { + proto = Object.getPrototypeOf(parent); + child = Object.create(proto); + } + else { + child = Object.create(prototype); + proto = prototype; + } + } + + if (circular) { + var index = allParents.indexOf(parent); + + if (index != -1) { + return allChildren[index]; + } + allParents.push(parent); + allChildren.push(child); + } + + if (_instanceof(parent, nativeMap)) { + parent.forEach(function(value, key) { + var keyChild = _clone(key, depth - 1); + var valueChild = _clone(value, depth - 1); + child.set(keyChild, valueChild); + }); + } + if (_instanceof(parent, nativeSet)) { + parent.forEach(function(value) { + var entryChild = _clone(value, depth - 1); + child.add(entryChild); + }); + } + + for (var i in parent) { + var attrs; + if (proto) { + attrs = Object.getOwnPropertyDescriptor(proto, i); + } + + if (attrs && attrs.set == null) { + continue; + } + child[i] = _clone(parent[i], depth - 1); + } + + if (Object.getOwnPropertySymbols) { + var symbols = Object.getOwnPropertySymbols(parent); + for (var i = 0; i < symbols.length; i++) { + // Don't need to worry about cloning a symbol because it is a primitive, + // like a number or string. + var symbol = symbols[i]; + var descriptor = Object.getOwnPropertyDescriptor(parent, symbol); + if (descriptor && !descriptor.enumerable && !includeNonEnumerable) { + continue; + } + child[symbol] = _clone(parent[symbol], depth - 1); + if (!descriptor.enumerable) { + Object.defineProperty(child, symbol, { + enumerable: false + }); + } + } + } + + if (includeNonEnumerable) { + var allPropertyNames = Object.getOwnPropertyNames(parent); + for (var i = 0; i < allPropertyNames.length; i++) { + var propertyName = allPropertyNames[i]; + var descriptor = Object.getOwnPropertyDescriptor(parent, propertyName); + if (descriptor && descriptor.enumerable) { + continue; + } + child[propertyName] = _clone(parent[propertyName], depth - 1); + Object.defineProperty(child, propertyName, { + enumerable: false + }); + } + } + + return child; + } + + return _clone(parent, depth); +} + +/** + * Simple flat clone using prototype, accepts only objects, usefull for property + * override on FLAT configuration object (no nested props). + * + * USE WITH CAUTION! This may not behave as you wish if you do not know how this + * works. + */ +clone.clonePrototype = function clonePrototype(parent) { + if (parent === null) + return null; + + var c = function () {}; + c.prototype = parent; + return new c(); +}; + +// private utility functions + +function __objToStr(o) { + return Object.prototype.toString.call(o); +} +clone.__objToStr = __objToStr; + +function __isDate(o) { + return typeof o === 'object' && __objToStr(o) === '[object Date]'; +} +clone.__isDate = __isDate; + +function __isArray(o) { + return typeof o === 'object' && __objToStr(o) === '[object Array]'; +} +clone.__isArray = __isArray; + +function __isRegExp(o) { + return typeof o === 'object' && __objToStr(o) === '[object RegExp]'; +} +clone.__isRegExp = __isRegExp; + +function __getRegExpFlags(re) { + var flags = ''; + if (re.global) flags += 'g'; + if (re.ignoreCase) flags += 'i'; + if (re.multiline) flags += 'm'; + return flags; +} +clone.__getRegExpFlags = __getRegExpFlags; + +return clone; +})(); + +if (typeof module === 'object' && module.exports) { + module.exports = clone; +} + +}).call(this)}).call(this,require("buffer").Buffer) +},{"buffer":3}],99:[function(require,module,exports){ +'use strict'; + +// do not edit .js files directly - edit src/index.jst + + + +module.exports = function equal(a, b) { + if (a === b) return true; + + if (a && b && typeof a == 'object' && typeof b == 'object') { + if (a.constructor !== b.constructor) return false; + + var length, i, keys; + if (Array.isArray(a)) { + length = a.length; + if (length != b.length) return false; + for (i = length; i-- !== 0;) + if (!equal(a[i], b[i])) return false; + return true; + } + + + + if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags; + if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf(); + if (a.toString !== Object.prototype.toString) return a.toString() === b.toString(); + + keys = Object.keys(a); + length = keys.length; + if (length !== Object.keys(b).length) return false; + + for (i = length; i-- !== 0;) + if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false; + + for (i = length; i-- !== 0;) { + var key = keys[i]; + + if (!equal(a[key], b[key])) return false; + } + + return true; + } + + // true if both NaN, false otherwise + return a!==a && b!==b; +}; + +},{}],100:[function(require,module,exports){ +'use strict'; + +var traverse = module.exports = function (schema, opts, cb) { + // Legacy support for v0.3.1 and earlier. + if (typeof opts == 'function') { + cb = opts; + opts = {}; + } + + cb = opts.cb || cb; + var pre = (typeof cb == 'function') ? cb : cb.pre || function() {}; + var post = cb.post || function() {}; + + _traverse(opts, pre, post, schema, '', schema); +}; + + +traverse.keywords = { + additionalItems: true, + items: true, + contains: true, + additionalProperties: true, + propertyNames: true, + not: true, + if: true, + then: true, + else: true +}; + +traverse.arrayKeywords = { + items: true, + allOf: true, + anyOf: true, + oneOf: true +}; + +traverse.propsKeywords = { + $defs: true, + definitions: true, + properties: true, + patternProperties: true, + dependencies: true +}; + +traverse.skipKeywords = { + default: true, + enum: true, + const: true, + required: true, + maximum: true, + minimum: true, + exclusiveMaximum: true, + exclusiveMinimum: true, + multipleOf: true, + maxLength: true, + minLength: true, + pattern: true, + format: true, + maxItems: true, + minItems: true, + uniqueItems: true, + maxProperties: true, + minProperties: true +}; + + +function _traverse(opts, pre, post, schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex) { + if (schema && typeof schema == 'object' && !Array.isArray(schema)) { + pre(schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex); + for (var key in schema) { + var sch = schema[key]; + if (Array.isArray(sch)) { + if (key in traverse.arrayKeywords) { + for (var i=0; i 0 ? floor : ceil)(it); + }; + + // 7.2.1 RequireObjectCoercible(argument) + var _defined = function (it) { + if (it == undefined) { throw TypeError("Can't call method on " + it); } + return it; + }; + + // true -> String#at + // false -> String#codePointAt + var _stringAt = function (TO_STRING) { + return function (that, pos) { + var s = String(_defined(that)); + var i = _toInteger(pos); + var l = s.length; + var a, b; + if (i < 0 || i >= l) { return TO_STRING ? '' : undefined; } + a = s.charCodeAt(i); + return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff + ? TO_STRING ? s.charAt(i) : a + : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000; + }; + }; + + var $at = _stringAt(false); + _export(_export.P, 'String', { + // 21.1.3.3 String.prototype.codePointAt(pos) + codePointAt: function codePointAt(pos) { + return $at(this, pos); + } + }); + + var codePointAt = _core.String.codePointAt; + + var max = Math.max; + var min = Math.min; + var _toAbsoluteIndex = function (index, length) { + index = _toInteger(index); + return index < 0 ? max(index + length, 0) : min(index, length); + }; + + var fromCharCode = String.fromCharCode; + var $fromCodePoint = String.fromCodePoint; + + // length should be 1, old FF problem + _export(_export.S + _export.F * (!!$fromCodePoint && $fromCodePoint.length != 1), 'String', { + // 21.1.2.2 String.fromCodePoint(...codePoints) + fromCodePoint: function fromCodePoint(x) { + var arguments$1 = arguments; + // eslint-disable-line no-unused-vars + var res = []; + var aLen = arguments.length; + var i = 0; + var code; + while (aLen > i) { + code = +arguments$1[i++]; + if (_toAbsoluteIndex(code, 0x10ffff) !== code) { throw RangeError(code + ' is not a valid code point'); } + res.push(code < 0x10000 + ? fromCharCode(code) + : fromCharCode(((code -= 0x10000) >> 10) + 0xd800, code % 0x400 + 0xdc00) + ); + } return res.join(''); + } + }); + + var fromCodePoint = _core.String.fromCodePoint; + + // This is a generated file. Do not edit. + var Space_Separator = /[\u1680\u2000-\u200A\u202F\u205F\u3000]/; + var ID_Start = /[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDF00-\uDF19]|\uD806[\uDCA0-\uDCDF\uDCFF\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE83\uDE86-\uDE89\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50\uDF93-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]/; + var ID_Continue = /[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u08D4-\u08E1\u08E3-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u09FC\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0AF9-\u0AFF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C80-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D00-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D54-\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19D9\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1CD0-\u1CD2\u1CD4-\u1CF9\u1D00-\u1DF9\u1DFB-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u2E2F\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099\u309A\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C5\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDDFD\uDE80-\uDE9C\uDEA0-\uDED0\uDEE0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE38-\uDE3A\uDE3F\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE6\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC00-\uDC46\uDC66-\uDC6F\uDC7F-\uDCBA\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDCA-\uDDCC\uDDD0-\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE37\uDE3E\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF00-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3C-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF50\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC00-\uDC4A\uDC50-\uDC59\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDDD8-\uDDDD\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB7\uDEC0-\uDEC9\uDF00-\uDF19\uDF1D-\uDF2B\uDF30-\uDF39]|\uD806[\uDCA0-\uDCE9\uDCFF\uDE00-\uDE3E\uDE47\uDE50-\uDE83\uDE86-\uDE99\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC36\uDC38-\uDC40\uDC50-\uDC59\uDC72-\uDC8F\uDC92-\uDCA7\uDCA9-\uDCB6\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD36\uDD3A\uDD3C\uDD3D\uDD3F-\uDD47\uDD50-\uDD59]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDEF0-\uDEF4\uDF00-\uDF36\uDF40-\uDF43\uDF50-\uDF59\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50-\uDF7E\uDF8F-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD838[\uDC00-\uDC06\uDC08-\uDC18\uDC1B-\uDC21\uDC23\uDC24\uDC26-\uDC2A]|\uD83A[\uDC00-\uDCC4\uDCD0-\uDCD6\uDD00-\uDD4A\uDD50-\uDD59]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uDB40[\uDD00-\uDDEF]/; + + var unicode = { + Space_Separator: Space_Separator, + ID_Start: ID_Start, + ID_Continue: ID_Continue + }; + + var util = { + isSpaceSeparator: function isSpaceSeparator (c) { + return typeof c === 'string' && unicode.Space_Separator.test(c) + }, + + isIdStartChar: function isIdStartChar (c) { + return typeof c === 'string' && ( + (c >= 'a' && c <= 'z') || + (c >= 'A' && c <= 'Z') || + (c === '$') || (c === '_') || + unicode.ID_Start.test(c) + ) + }, + + isIdContinueChar: function isIdContinueChar (c) { + return typeof c === 'string' && ( + (c >= 'a' && c <= 'z') || + (c >= 'A' && c <= 'Z') || + (c >= '0' && c <= '9') || + (c === '$') || (c === '_') || + (c === '\u200C') || (c === '\u200D') || + unicode.ID_Continue.test(c) + ) + }, + + isDigit: function isDigit (c) { + return typeof c === 'string' && /[0-9]/.test(c) + }, + + isHexDigit: function isHexDigit (c) { + return typeof c === 'string' && /[0-9A-Fa-f]/.test(c) + }, + }; + + var source; + var parseState; + var stack; + var pos; + var line; + var column; + var token; + var key; + var root; + + var parse = function parse (text, reviver) { + source = String(text); + parseState = 'start'; + stack = []; + pos = 0; + line = 1; + column = 0; + token = undefined; + key = undefined; + root = undefined; + + do { + token = lex(); + + // This code is unreachable. + // if (!parseStates[parseState]) { + // throw invalidParseState() + // } + + parseStates[parseState](); + } while (token.type !== 'eof') + + if (typeof reviver === 'function') { + return internalize({'': root}, '', reviver) + } + + return root + }; + + function internalize (holder, name, reviver) { + var value = holder[name]; + if (value != null && typeof value === 'object') { + for (var key in value) { + var replacement = internalize(value, key, reviver); + if (replacement === undefined) { + delete value[key]; + } else { + value[key] = replacement; + } + } + } + + return reviver.call(holder, name, value) + } + + var lexState; + var buffer; + var doubleQuote; + var sign; + var c; + + function lex () { + lexState = 'default'; + buffer = ''; + doubleQuote = false; + sign = 1; + + for (;;) { + c = peek(); + + // This code is unreachable. + // if (!lexStates[lexState]) { + // throw invalidLexState(lexState) + // } + + var token = lexStates[lexState](); + if (token) { + return token + } + } + } + + function peek () { + if (source[pos]) { + return String.fromCodePoint(source.codePointAt(pos)) + } + } + + function read () { + var c = peek(); + + if (c === '\n') { + line++; + column = 0; + } else if (c) { + column += c.length; + } else { + column++; + } + + if (c) { + pos += c.length; + } + + return c + } + + var lexStates = { + default: function default$1 () { + switch (c) { + case '\t': + case '\v': + case '\f': + case ' ': + case '\u00A0': + case '\uFEFF': + case '\n': + case '\r': + case '\u2028': + case '\u2029': + read(); + return + + case '/': + read(); + lexState = 'comment'; + return + + case undefined: + read(); + return newToken('eof') + } + + if (util.isSpaceSeparator(c)) { + read(); + return + } + + // This code is unreachable. + // if (!lexStates[parseState]) { + // throw invalidLexState(parseState) + // } + + return lexStates[parseState]() + }, + + comment: function comment () { + switch (c) { + case '*': + read(); + lexState = 'multiLineComment'; + return + + case '/': + read(); + lexState = 'singleLineComment'; + return + } + + throw invalidChar(read()) + }, + + multiLineComment: function multiLineComment () { + switch (c) { + case '*': + read(); + lexState = 'multiLineCommentAsterisk'; + return + + case undefined: + throw invalidChar(read()) + } + + read(); + }, + + multiLineCommentAsterisk: function multiLineCommentAsterisk () { + switch (c) { + case '*': + read(); + return + + case '/': + read(); + lexState = 'default'; + return + + case undefined: + throw invalidChar(read()) + } + + read(); + lexState = 'multiLineComment'; + }, + + singleLineComment: function singleLineComment () { + switch (c) { + case '\n': + case '\r': + case '\u2028': + case '\u2029': + read(); + lexState = 'default'; + return + + case undefined: + read(); + return newToken('eof') + } + + read(); + }, + + value: function value () { + switch (c) { + case '{': + case '[': + return newToken('punctuator', read()) + + case 'n': + read(); + literal('ull'); + return newToken('null', null) + + case 't': + read(); + literal('rue'); + return newToken('boolean', true) + + case 'f': + read(); + literal('alse'); + return newToken('boolean', false) + + case '-': + case '+': + if (read() === '-') { + sign = -1; + } + + lexState = 'sign'; + return + + case '.': + buffer = read(); + lexState = 'decimalPointLeading'; + return + + case '0': + buffer = read(); + lexState = 'zero'; + return + + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + buffer = read(); + lexState = 'decimalInteger'; + return + + case 'I': + read(); + literal('nfinity'); + return newToken('numeric', Infinity) + + case 'N': + read(); + literal('aN'); + return newToken('numeric', NaN) + + case '"': + case "'": + doubleQuote = (read() === '"'); + buffer = ''; + lexState = 'string'; + return + } + + throw invalidChar(read()) + }, + + identifierNameStartEscape: function identifierNameStartEscape () { + if (c !== 'u') { + throw invalidChar(read()) + } + + read(); + var u = unicodeEscape(); + switch (u) { + case '$': + case '_': + break + + default: + if (!util.isIdStartChar(u)) { + throw invalidIdentifier() + } + + break + } + + buffer += u; + lexState = 'identifierName'; + }, + + identifierName: function identifierName () { + switch (c) { + case '$': + case '_': + case '\u200C': + case '\u200D': + buffer += read(); + return + + case '\\': + read(); + lexState = 'identifierNameEscape'; + return + } + + if (util.isIdContinueChar(c)) { + buffer += read(); + return + } + + return newToken('identifier', buffer) + }, + + identifierNameEscape: function identifierNameEscape () { + if (c !== 'u') { + throw invalidChar(read()) + } + + read(); + var u = unicodeEscape(); + switch (u) { + case '$': + case '_': + case '\u200C': + case '\u200D': + break + + default: + if (!util.isIdContinueChar(u)) { + throw invalidIdentifier() + } + + break + } + + buffer += u; + lexState = 'identifierName'; + }, + + sign: function sign$1 () { + switch (c) { + case '.': + buffer = read(); + lexState = 'decimalPointLeading'; + return + + case '0': + buffer = read(); + lexState = 'zero'; + return + + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + buffer = read(); + lexState = 'decimalInteger'; + return + + case 'I': + read(); + literal('nfinity'); + return newToken('numeric', sign * Infinity) + + case 'N': + read(); + literal('aN'); + return newToken('numeric', NaN) + } + + throw invalidChar(read()) + }, + + zero: function zero () { + switch (c) { + case '.': + buffer += read(); + lexState = 'decimalPoint'; + return + + case 'e': + case 'E': + buffer += read(); + lexState = 'decimalExponent'; + return + + case 'x': + case 'X': + buffer += read(); + lexState = 'hexadecimal'; + return + } + + return newToken('numeric', sign * 0) + }, + + decimalInteger: function decimalInteger () { + switch (c) { + case '.': + buffer += read(); + lexState = 'decimalPoint'; + return + + case 'e': + case 'E': + buffer += read(); + lexState = 'decimalExponent'; + return + } + + if (util.isDigit(c)) { + buffer += read(); + return + } + + return newToken('numeric', sign * Number(buffer)) + }, + + decimalPointLeading: function decimalPointLeading () { + if (util.isDigit(c)) { + buffer += read(); + lexState = 'decimalFraction'; + return + } + + throw invalidChar(read()) + }, + + decimalPoint: function decimalPoint () { + switch (c) { + case 'e': + case 'E': + buffer += read(); + lexState = 'decimalExponent'; + return + } + + if (util.isDigit(c)) { + buffer += read(); + lexState = 'decimalFraction'; + return + } + + return newToken('numeric', sign * Number(buffer)) + }, + + decimalFraction: function decimalFraction () { + switch (c) { + case 'e': + case 'E': + buffer += read(); + lexState = 'decimalExponent'; + return + } + + if (util.isDigit(c)) { + buffer += read(); + return + } + + return newToken('numeric', sign * Number(buffer)) + }, + + decimalExponent: function decimalExponent () { + switch (c) { + case '+': + case '-': + buffer += read(); + lexState = 'decimalExponentSign'; + return + } + + if (util.isDigit(c)) { + buffer += read(); + lexState = 'decimalExponentInteger'; + return + } + + throw invalidChar(read()) + }, + + decimalExponentSign: function decimalExponentSign () { + if (util.isDigit(c)) { + buffer += read(); + lexState = 'decimalExponentInteger'; + return + } + + throw invalidChar(read()) + }, + + decimalExponentInteger: function decimalExponentInteger () { + if (util.isDigit(c)) { + buffer += read(); + return + } + + return newToken('numeric', sign * Number(buffer)) + }, + + hexadecimal: function hexadecimal () { + if (util.isHexDigit(c)) { + buffer += read(); + lexState = 'hexadecimalInteger'; + return + } + + throw invalidChar(read()) + }, + + hexadecimalInteger: function hexadecimalInteger () { + if (util.isHexDigit(c)) { + buffer += read(); + return + } + + return newToken('numeric', sign * Number(buffer)) + }, + + string: function string () { + switch (c) { + case '\\': + read(); + buffer += escape(); + return + + case '"': + if (doubleQuote) { + read(); + return newToken('string', buffer) + } + + buffer += read(); + return + + case "'": + if (!doubleQuote) { + read(); + return newToken('string', buffer) + } + + buffer += read(); + return + + case '\n': + case '\r': + throw invalidChar(read()) + + case '\u2028': + case '\u2029': + separatorChar(c); + break + + case undefined: + throw invalidChar(read()) + } + + buffer += read(); + }, + + start: function start () { + switch (c) { + case '{': + case '[': + return newToken('punctuator', read()) + + // This code is unreachable since the default lexState handles eof. + // case undefined: + // return newToken('eof') + } + + lexState = 'value'; + }, + + beforePropertyName: function beforePropertyName () { + switch (c) { + case '$': + case '_': + buffer = read(); + lexState = 'identifierName'; + return + + case '\\': + read(); + lexState = 'identifierNameStartEscape'; + return + + case '}': + return newToken('punctuator', read()) + + case '"': + case "'": + doubleQuote = (read() === '"'); + lexState = 'string'; + return + } + + if (util.isIdStartChar(c)) { + buffer += read(); + lexState = 'identifierName'; + return + } + + throw invalidChar(read()) + }, + + afterPropertyName: function afterPropertyName () { + if (c === ':') { + return newToken('punctuator', read()) + } + + throw invalidChar(read()) + }, + + beforePropertyValue: function beforePropertyValue () { + lexState = 'value'; + }, + + afterPropertyValue: function afterPropertyValue () { + switch (c) { + case ',': + case '}': + return newToken('punctuator', read()) + } + + throw invalidChar(read()) + }, + + beforeArrayValue: function beforeArrayValue () { + if (c === ']') { + return newToken('punctuator', read()) + } + + lexState = 'value'; + }, + + afterArrayValue: function afterArrayValue () { + switch (c) { + case ',': + case ']': + return newToken('punctuator', read()) + } + + throw invalidChar(read()) + }, + + end: function end () { + // This code is unreachable since it's handled by the default lexState. + // if (c === undefined) { + // read() + // return newToken('eof') + // } + + throw invalidChar(read()) + }, + }; + + function newToken (type, value) { + return { + type: type, + value: value, + line: line, + column: column, + } + } + + function literal (s) { + for (var i = 0, list = s; i < list.length; i += 1) { + var c = list[i]; + + var p = peek(); + + if (p !== c) { + throw invalidChar(read()) + } + + read(); + } + } + + function escape () { + var c = peek(); + switch (c) { + case 'b': + read(); + return '\b' + + case 'f': + read(); + return '\f' + + case 'n': + read(); + return '\n' + + case 'r': + read(); + return '\r' + + case 't': + read(); + return '\t' + + case 'v': + read(); + return '\v' + + case '0': + read(); + if (util.isDigit(peek())) { + throw invalidChar(read()) + } + + return '\0' + + case 'x': + read(); + return hexEscape() + + case 'u': + read(); + return unicodeEscape() + + case '\n': + case '\u2028': + case '\u2029': + read(); + return '' + + case '\r': + read(); + if (peek() === '\n') { + read(); + } + + return '' + + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + throw invalidChar(read()) + + case undefined: + throw invalidChar(read()) + } + + return read() + } + + function hexEscape () { + var buffer = ''; + var c = peek(); + + if (!util.isHexDigit(c)) { + throw invalidChar(read()) + } + + buffer += read(); + + c = peek(); + if (!util.isHexDigit(c)) { + throw invalidChar(read()) + } + + buffer += read(); + + return String.fromCodePoint(parseInt(buffer, 16)) + } + + function unicodeEscape () { + var buffer = ''; + var count = 4; + + while (count-- > 0) { + var c = peek(); + if (!util.isHexDigit(c)) { + throw invalidChar(read()) + } + + buffer += read(); + } + + return String.fromCodePoint(parseInt(buffer, 16)) + } + + var parseStates = { + start: function start () { + if (token.type === 'eof') { + throw invalidEOF() + } + + push(); + }, + + beforePropertyName: function beforePropertyName () { + switch (token.type) { + case 'identifier': + case 'string': + key = token.value; + parseState = 'afterPropertyName'; + return + + case 'punctuator': + // This code is unreachable since it's handled by the lexState. + // if (token.value !== '}') { + // throw invalidToken() + // } + + pop(); + return + + case 'eof': + throw invalidEOF() + } + + // This code is unreachable since it's handled by the lexState. + // throw invalidToken() + }, + + afterPropertyName: function afterPropertyName () { + // This code is unreachable since it's handled by the lexState. + // if (token.type !== 'punctuator' || token.value !== ':') { + // throw invalidToken() + // } + + if (token.type === 'eof') { + throw invalidEOF() + } + + parseState = 'beforePropertyValue'; + }, + + beforePropertyValue: function beforePropertyValue () { + if (token.type === 'eof') { + throw invalidEOF() + } + + push(); + }, + + beforeArrayValue: function beforeArrayValue () { + if (token.type === 'eof') { + throw invalidEOF() + } + + if (token.type === 'punctuator' && token.value === ']') { + pop(); + return + } + + push(); + }, + + afterPropertyValue: function afterPropertyValue () { + // This code is unreachable since it's handled by the lexState. + // if (token.type !== 'punctuator') { + // throw invalidToken() + // } + + if (token.type === 'eof') { + throw invalidEOF() + } + + switch (token.value) { + case ',': + parseState = 'beforePropertyName'; + return + + case '}': + pop(); + } + + // This code is unreachable since it's handled by the lexState. + // throw invalidToken() + }, + + afterArrayValue: function afterArrayValue () { + // This code is unreachable since it's handled by the lexState. + // if (token.type !== 'punctuator') { + // throw invalidToken() + // } + + if (token.type === 'eof') { + throw invalidEOF() + } + + switch (token.value) { + case ',': + parseState = 'beforeArrayValue'; + return + + case ']': + pop(); + } + + // This code is unreachable since it's handled by the lexState. + // throw invalidToken() + }, + + end: function end () { + // This code is unreachable since it's handled by the lexState. + // if (token.type !== 'eof') { + // throw invalidToken() + // } + }, + }; + + function push () { + var value; + + switch (token.type) { + case 'punctuator': + switch (token.value) { + case '{': + value = {}; + break + + case '[': + value = []; + break + } + + break + + case 'null': + case 'boolean': + case 'numeric': + case 'string': + value = token.value; + break + + // This code is unreachable. + // default: + // throw invalidToken() + } + + if (root === undefined) { + root = value; + } else { + var parent = stack[stack.length - 1]; + if (Array.isArray(parent)) { + parent.push(value); + } else { + parent[key] = value; + } + } + + if (value !== null && typeof value === 'object') { + stack.push(value); + + if (Array.isArray(value)) { + parseState = 'beforeArrayValue'; + } else { + parseState = 'beforePropertyName'; + } + } else { + var current = stack[stack.length - 1]; + if (current == null) { + parseState = 'end'; + } else if (Array.isArray(current)) { + parseState = 'afterArrayValue'; + } else { + parseState = 'afterPropertyValue'; + } + } + } + + function pop () { + stack.pop(); + + var current = stack[stack.length - 1]; + if (current == null) { + parseState = 'end'; + } else if (Array.isArray(current)) { + parseState = 'afterArrayValue'; + } else { + parseState = 'afterPropertyValue'; + } + } + + // This code is unreachable. + // function invalidParseState () { + // return new Error(`JSON5: invalid parse state '${parseState}'`) + // } + + // This code is unreachable. + // function invalidLexState (state) { + // return new Error(`JSON5: invalid lex state '${state}'`) + // } + + function invalidChar (c) { + if (c === undefined) { + return syntaxError(("JSON5: invalid end of input at " + line + ":" + column)) + } + + return syntaxError(("JSON5: invalid character '" + (formatChar(c)) + "' at " + line + ":" + column)) + } + + function invalidEOF () { + return syntaxError(("JSON5: invalid end of input at " + line + ":" + column)) + } + + // This code is unreachable. + // function invalidToken () { + // if (token.type === 'eof') { + // return syntaxError(`JSON5: invalid end of input at ${line}:${column}`) + // } + + // const c = String.fromCodePoint(token.value.codePointAt(0)) + // return syntaxError(`JSON5: invalid character '${formatChar(c)}' at ${line}:${column}`) + // } + + function invalidIdentifier () { + column -= 5; + return syntaxError(("JSON5: invalid identifier character at " + line + ":" + column)) + } + + function separatorChar (c) { + console.warn(("JSON5: '" + (formatChar(c)) + "' in strings is not valid ECMAScript; consider escaping")); + } + + function formatChar (c) { + var replacements = { + "'": "\\'", + '"': '\\"', + '\\': '\\\\', + '\b': '\\b', + '\f': '\\f', + '\n': '\\n', + '\r': '\\r', + '\t': '\\t', + '\v': '\\v', + '\0': '\\0', + '\u2028': '\\u2028', + '\u2029': '\\u2029', + }; + + if (replacements[c]) { + return replacements[c] + } + + if (c < ' ') { + var hexString = c.charCodeAt(0).toString(16); + return '\\x' + ('00' + hexString).substring(hexString.length) + } + + return c + } + + function syntaxError (message) { + var err = new SyntaxError(message); + err.lineNumber = line; + err.columnNumber = column; + return err + } + + var stringify = function stringify (value, replacer, space) { + var stack = []; + var indent = ''; + var propertyList; + var replacerFunc; + var gap = ''; + var quote; + + if ( + replacer != null && + typeof replacer === 'object' && + !Array.isArray(replacer) + ) { + space = replacer.space; + quote = replacer.quote; + replacer = replacer.replacer; + } + + if (typeof replacer === 'function') { + replacerFunc = replacer; + } else if (Array.isArray(replacer)) { + propertyList = []; + for (var i = 0, list = replacer; i < list.length; i += 1) { + var v = list[i]; + + var item = (void 0); + + if (typeof v === 'string') { + item = v; + } else if ( + typeof v === 'number' || + v instanceof String || + v instanceof Number + ) { + item = String(v); + } + + if (item !== undefined && propertyList.indexOf(item) < 0) { + propertyList.push(item); + } + } + } + + if (space instanceof Number) { + space = Number(space); + } else if (space instanceof String) { + space = String(space); + } + + if (typeof space === 'number') { + if (space > 0) { + space = Math.min(10, Math.floor(space)); + gap = ' '.substr(0, space); + } + } else if (typeof space === 'string') { + gap = space.substr(0, 10); + } + + return serializeProperty('', {'': value}) + + function serializeProperty (key, holder) { + var value = holder[key]; + if (value != null) { + if (typeof value.toJSON5 === 'function') { + value = value.toJSON5(key); + } else if (typeof value.toJSON === 'function') { + value = value.toJSON(key); + } + } + + if (replacerFunc) { + value = replacerFunc.call(holder, key, value); + } + + if (value instanceof Number) { + value = Number(value); + } else if (value instanceof String) { + value = String(value); + } else if (value instanceof Boolean) { + value = value.valueOf(); + } + + switch (value) { + case null: return 'null' + case true: return 'true' + case false: return 'false' + } + + if (typeof value === 'string') { + return quoteString(value, false) + } + + if (typeof value === 'number') { + return String(value) + } + + if (typeof value === 'object') { + return Array.isArray(value) ? serializeArray(value) : serializeObject(value) + } + + return undefined + } + + function quoteString (value) { + var quotes = { + "'": 0.1, + '"': 0.2, + }; + + var replacements = { + "'": "\\'", + '"': '\\"', + '\\': '\\\\', + '\b': '\\b', + '\f': '\\f', + '\n': '\\n', + '\r': '\\r', + '\t': '\\t', + '\v': '\\v', + '\0': '\\0', + '\u2028': '\\u2028', + '\u2029': '\\u2029', + }; + + var product = ''; + + for (var i = 0; i < value.length; i++) { + var c = value[i]; + switch (c) { + case "'": + case '"': + quotes[c]++; + product += c; + continue + + case '\0': + if (util.isDigit(value[i + 1])) { + product += '\\x00'; + continue + } + } + + if (replacements[c]) { + product += replacements[c]; + continue + } + + if (c < ' ') { + var hexString = c.charCodeAt(0).toString(16); + product += '\\x' + ('00' + hexString).substring(hexString.length); + continue + } + + product += c; + } + + var quoteChar = quote || Object.keys(quotes).reduce(function (a, b) { return (quotes[a] < quotes[b]) ? a : b; }); + + product = product.replace(new RegExp(quoteChar, 'g'), replacements[quoteChar]); + + return quoteChar + product + quoteChar + } + + function serializeObject (value) { + if (stack.indexOf(value) >= 0) { + throw TypeError('Converting circular structure to JSON5') + } + + stack.push(value); + + var stepback = indent; + indent = indent + gap; + + var keys = propertyList || Object.keys(value); + var partial = []; + for (var i = 0, list = keys; i < list.length; i += 1) { + var key = list[i]; + + var propertyString = serializeProperty(key, value); + if (propertyString !== undefined) { + var member = serializeKey(key) + ':'; + if (gap !== '') { + member += ' '; + } + member += propertyString; + partial.push(member); + } + } + + var final; + if (partial.length === 0) { + final = '{}'; + } else { + var properties; + if (gap === '') { + properties = partial.join(','); + final = '{' + properties + '}'; + } else { + var separator = ',\n' + indent; + properties = partial.join(separator); + final = '{\n' + indent + properties + ',\n' + stepback + '}'; + } + } + + stack.pop(); + indent = stepback; + return final + } + + function serializeKey (key) { + if (key.length === 0) { + return quoteString(key, true) + } + + var firstChar = String.fromCodePoint(key.codePointAt(0)); + if (!util.isIdStartChar(firstChar)) { + return quoteString(key, true) + } + + for (var i = firstChar.length; i < key.length; i++) { + if (!util.isIdContinueChar(String.fromCodePoint(key.codePointAt(i)))) { + return quoteString(key, true) + } + } + + return key + } + + function serializeArray (value) { + if (stack.indexOf(value) >= 0) { + throw TypeError('Converting circular structure to JSON5') + } + + stack.push(value); + + var stepback = indent; + indent = indent + gap; + + var partial = []; + for (var i = 0; i < value.length; i++) { + var propertyString = serializeProperty(String(i), value); + partial.push((propertyString !== undefined) ? propertyString : 'null'); + } + + var final; + if (partial.length === 0) { + final = '[]'; + } else { + if (gap === '') { + var properties = partial.join(','); + final = '[' + properties + ']'; + } else { + var separator = ',\n' + indent; + var properties$1 = partial.join(separator); + final = '[\n' + indent + properties$1 + ',\n' + stepback + ']'; + } + } + + stack.pop(); + indent = stepback; + return final + } + }; + + var JSON5 = { + parse: parse, + stringify: stringify, + }; + + var lib = JSON5; + + var es5 = lib; + + return es5; + +}))); + +},{}],102:[function(require,module,exports){ +(function (global){(function (){ +/** + * @license + * Lodash + * Copyright OpenJS Foundation and other contributors + * Released under MIT license + * Based on Underscore.js 1.8.3 + * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + */ +;(function() { + + /** Used as a safe reference for `undefined` in pre-ES5 environments. */ + var undefined; + + /** Used as the semantic version number. */ + var VERSION = '4.17.21'; + + /** Used as the size to enable large array optimizations. */ + var LARGE_ARRAY_SIZE = 200; + + /** Error message constants. */ + var CORE_ERROR_TEXT = 'Unsupported core-js use. Try https://npms.io/search?q=ponyfill.', + FUNC_ERROR_TEXT = 'Expected a function', + INVALID_TEMPL_VAR_ERROR_TEXT = 'Invalid `variable` option passed into `_.template`'; + + /** Used to stand-in for `undefined` hash values. */ + var HASH_UNDEFINED = '__lodash_hash_undefined__'; + + /** Used as the maximum memoize cache size. */ + var MAX_MEMOIZE_SIZE = 500; + + /** Used as the internal argument placeholder. */ + var PLACEHOLDER = '__lodash_placeholder__'; + + /** Used to compose bitmasks for cloning. */ + var CLONE_DEEP_FLAG = 1, + CLONE_FLAT_FLAG = 2, + CLONE_SYMBOLS_FLAG = 4; + + /** Used to compose bitmasks for value comparisons. */ + var COMPARE_PARTIAL_FLAG = 1, + COMPARE_UNORDERED_FLAG = 2; + + /** Used to compose bitmasks for function metadata. */ + var WRAP_BIND_FLAG = 1, + WRAP_BIND_KEY_FLAG = 2, + WRAP_CURRY_BOUND_FLAG = 4, + WRAP_CURRY_FLAG = 8, + WRAP_CURRY_RIGHT_FLAG = 16, + WRAP_PARTIAL_FLAG = 32, + WRAP_PARTIAL_RIGHT_FLAG = 64, + WRAP_ARY_FLAG = 128, + WRAP_REARG_FLAG = 256, + WRAP_FLIP_FLAG = 512; + + /** Used as default options for `_.truncate`. */ + var DEFAULT_TRUNC_LENGTH = 30, + DEFAULT_TRUNC_OMISSION = '...'; + + /** Used to detect hot functions by number of calls within a span of milliseconds. */ + var HOT_COUNT = 800, + HOT_SPAN = 16; + + /** Used to indicate the type of lazy iteratees. */ + var LAZY_FILTER_FLAG = 1, + LAZY_MAP_FLAG = 2, + LAZY_WHILE_FLAG = 3; + + /** Used as references for various `Number` constants. */ + var INFINITY = 1 / 0, + MAX_SAFE_INTEGER = 9007199254740991, + MAX_INTEGER = 1.7976931348623157e+308, + NAN = 0 / 0; + + /** Used as references for the maximum length and index of an array. */ + var MAX_ARRAY_LENGTH = 4294967295, + MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1, + HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1; + + /** Used to associate wrap methods with their bit flags. */ + var wrapFlags = [ + ['ary', WRAP_ARY_FLAG], + ['bind', WRAP_BIND_FLAG], + ['bindKey', WRAP_BIND_KEY_FLAG], + ['curry', WRAP_CURRY_FLAG], + ['curryRight', WRAP_CURRY_RIGHT_FLAG], + ['flip', WRAP_FLIP_FLAG], + ['partial', WRAP_PARTIAL_FLAG], + ['partialRight', WRAP_PARTIAL_RIGHT_FLAG], + ['rearg', WRAP_REARG_FLAG] + ]; + + /** `Object#toString` result references. */ + var argsTag = '[object Arguments]', + arrayTag = '[object Array]', + asyncTag = '[object AsyncFunction]', + boolTag = '[object Boolean]', + dateTag = '[object Date]', + domExcTag = '[object DOMException]', + errorTag = '[object Error]', + funcTag = '[object Function]', + genTag = '[object GeneratorFunction]', + mapTag = '[object Map]', + numberTag = '[object Number]', + nullTag = '[object Null]', + objectTag = '[object Object]', + promiseTag = '[object Promise]', + proxyTag = '[object Proxy]', + regexpTag = '[object RegExp]', + setTag = '[object Set]', + stringTag = '[object String]', + symbolTag = '[object Symbol]', + undefinedTag = '[object Undefined]', + weakMapTag = '[object WeakMap]', + weakSetTag = '[object WeakSet]'; + + var arrayBufferTag = '[object ArrayBuffer]', + dataViewTag = '[object DataView]', + float32Tag = '[object Float32Array]', + float64Tag = '[object Float64Array]', + int8Tag = '[object Int8Array]', + int16Tag = '[object Int16Array]', + int32Tag = '[object Int32Array]', + uint8Tag = '[object Uint8Array]', + uint8ClampedTag = '[object Uint8ClampedArray]', + uint16Tag = '[object Uint16Array]', + uint32Tag = '[object Uint32Array]'; + + /** Used to match empty string literals in compiled template source. */ + var reEmptyStringLeading = /\b__p \+= '';/g, + reEmptyStringMiddle = /\b(__p \+=) '' \+/g, + reEmptyStringTrailing = /(__e\(.*?\)|\b__t\)) \+\n'';/g; + + /** Used to match HTML entities and HTML characters. */ + var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g, + reUnescapedHtml = /[&<>"']/g, + reHasEscapedHtml = RegExp(reEscapedHtml.source), + reHasUnescapedHtml = RegExp(reUnescapedHtml.source); + + /** Used to match template delimiters. */ + var reEscape = /<%-([\s\S]+?)%>/g, + reEvaluate = /<%([\s\S]+?)%>/g, + reInterpolate = /<%=([\s\S]+?)%>/g; + + /** Used to match property names within property paths. */ + var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, + reIsPlainProp = /^\w*$/, + rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g; + + /** + * Used to match `RegExp` + * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns). + */ + var reRegExpChar = /[\\^$.*+?()[\]{}|]/g, + reHasRegExpChar = RegExp(reRegExpChar.source); + + /** Used to match leading whitespace. */ + var reTrimStart = /^\s+/; + + /** Used to match a single whitespace character. */ + var reWhitespace = /\s/; + + /** Used to match wrap detail comments. */ + var reWrapComment = /\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/, + reWrapDetails = /\{\n\/\* \[wrapped with (.+)\] \*/, + reSplitDetails = /,? & /; + + /** Used to match words composed of alphanumeric characters. */ + var reAsciiWord = /[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g; + + /** + * Used to validate the `validate` option in `_.template` variable. + * + * Forbids characters which could potentially change the meaning of the function argument definition: + * - "()," (modification of function parameters) + * - "=" (default value) + * - "[]{}" (destructuring of function parameters) + * - "/" (beginning of a comment) + * - whitespace + */ + var reForbiddenIdentifierChars = /[()=,{}\[\]\/\s]/; + + /** Used to match backslashes in property paths. */ + var reEscapeChar = /\\(\\)?/g; + + /** + * Used to match + * [ES template delimiters](http://ecma-international.org/ecma-262/7.0/#sec-template-literal-lexical-components). + */ + var reEsTemplate = /\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g; + + /** Used to match `RegExp` flags from their coerced string values. */ + var reFlags = /\w*$/; + + /** Used to detect bad signed hexadecimal string values. */ + var reIsBadHex = /^[-+]0x[0-9a-f]+$/i; + + /** Used to detect binary string values. */ + var reIsBinary = /^0b[01]+$/i; + + /** Used to detect host constructors (Safari). */ + var reIsHostCtor = /^\[object .+?Constructor\]$/; + + /** Used to detect octal string values. */ + var reIsOctal = /^0o[0-7]+$/i; + + /** Used to detect unsigned integer values. */ + var reIsUint = /^(?:0|[1-9]\d*)$/; + + /** Used to match Latin Unicode letters (excluding mathematical operators). */ + var reLatin = /[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g; + + /** Used to ensure capturing order of template delimiters. */ + var reNoMatch = /($^)/; + + /** Used to match unescaped characters in compiled string literals. */ + var reUnescapedString = /['\n\r\u2028\u2029\\]/g; + + /** Used to compose unicode character classes. */ + var rsAstralRange = '\\ud800-\\udfff', + rsComboMarksRange = '\\u0300-\\u036f', + reComboHalfMarksRange = '\\ufe20-\\ufe2f', + rsComboSymbolsRange = '\\u20d0-\\u20ff', + rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange, + rsDingbatRange = '\\u2700-\\u27bf', + rsLowerRange = 'a-z\\xdf-\\xf6\\xf8-\\xff', + rsMathOpRange = '\\xac\\xb1\\xd7\\xf7', + rsNonCharRange = '\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf', + rsPunctuationRange = '\\u2000-\\u206f', + rsSpaceRange = ' \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000', + rsUpperRange = 'A-Z\\xc0-\\xd6\\xd8-\\xde', + rsVarRange = '\\ufe0e\\ufe0f', + rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange; + + /** Used to compose unicode capture groups. */ + var rsApos = "['\u2019]", + rsAstral = '[' + rsAstralRange + ']', + rsBreak = '[' + rsBreakRange + ']', + rsCombo = '[' + rsComboRange + ']', + rsDigits = '\\d+', + rsDingbat = '[' + rsDingbatRange + ']', + rsLower = '[' + rsLowerRange + ']', + rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']', + rsFitz = '\\ud83c[\\udffb-\\udfff]', + rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')', + rsNonAstral = '[^' + rsAstralRange + ']', + rsRegional = '(?:\\ud83c[\\udde6-\\uddff]){2}', + rsSurrPair = '[\\ud800-\\udbff][\\udc00-\\udfff]', + rsUpper = '[' + rsUpperRange + ']', + rsZWJ = '\\u200d'; + + /** Used to compose unicode regexes. */ + var rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')', + rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')', + rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?', + rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?', + reOptMod = rsModifier + '?', + rsOptVar = '[' + rsVarRange + ']?', + rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*', + rsOrdLower = '\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])', + rsOrdUpper = '\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])', + rsSeq = rsOptVar + reOptMod + rsOptJoin, + rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq, + rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')'; + + /** Used to match apostrophes. */ + var reApos = RegExp(rsApos, 'g'); + + /** + * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and + * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols). + */ + var reComboMark = RegExp(rsCombo, 'g'); + + /** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */ + var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g'); + + /** Used to match complex or compound words. */ + var reUnicodeWord = RegExp([ + rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')', + rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')', + rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower, + rsUpper + '+' + rsOptContrUpper, + rsOrdUpper, + rsOrdLower, + rsDigits, + rsEmoji + ].join('|'), 'g'); + + /** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */ + var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']'); + + /** Used to detect strings that need a more robust regexp to match words. */ + var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/; + + /** Used to assign default `context` object properties. */ + var contextProps = [ + 'Array', 'Buffer', 'DataView', 'Date', 'Error', 'Float32Array', 'Float64Array', + 'Function', 'Int8Array', 'Int16Array', 'Int32Array', 'Map', 'Math', 'Object', + 'Promise', 'RegExp', 'Set', 'String', 'Symbol', 'TypeError', 'Uint8Array', + 'Uint8ClampedArray', 'Uint16Array', 'Uint32Array', 'WeakMap', + '_', 'clearTimeout', 'isFinite', 'parseInt', 'setTimeout' + ]; + + /** Used to make template sourceURLs easier to identify. */ + var templateCounter = -1; + + /** Used to identify `toStringTag` values of typed arrays. */ + var typedArrayTags = {}; + typedArrayTags[float32Tag] = typedArrayTags[float64Tag] = + typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = + typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = + typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = + typedArrayTags[uint32Tag] = true; + typedArrayTags[argsTag] = typedArrayTags[arrayTag] = + typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = + typedArrayTags[dataViewTag] = typedArrayTags[dateTag] = + typedArrayTags[errorTag] = typedArrayTags[funcTag] = + typedArrayTags[mapTag] = typedArrayTags[numberTag] = + typedArrayTags[objectTag] = typedArrayTags[regexpTag] = + typedArrayTags[setTag] = typedArrayTags[stringTag] = + typedArrayTags[weakMapTag] = false; + + /** Used to identify `toStringTag` values supported by `_.clone`. */ + var cloneableTags = {}; + cloneableTags[argsTag] = cloneableTags[arrayTag] = + cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] = + cloneableTags[boolTag] = cloneableTags[dateTag] = + cloneableTags[float32Tag] = cloneableTags[float64Tag] = + cloneableTags[int8Tag] = cloneableTags[int16Tag] = + cloneableTags[int32Tag] = cloneableTags[mapTag] = + cloneableTags[numberTag] = cloneableTags[objectTag] = + cloneableTags[regexpTag] = cloneableTags[setTag] = + cloneableTags[stringTag] = cloneableTags[symbolTag] = + cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] = + cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true; + cloneableTags[errorTag] = cloneableTags[funcTag] = + cloneableTags[weakMapTag] = false; + + /** Used to map Latin Unicode letters to basic Latin letters. */ + var deburredLetters = { + // Latin-1 Supplement block. + '\xc0': 'A', '\xc1': 'A', '\xc2': 'A', '\xc3': 'A', '\xc4': 'A', '\xc5': 'A', + '\xe0': 'a', '\xe1': 'a', '\xe2': 'a', '\xe3': 'a', '\xe4': 'a', '\xe5': 'a', + '\xc7': 'C', '\xe7': 'c', + '\xd0': 'D', '\xf0': 'd', + '\xc8': 'E', '\xc9': 'E', '\xca': 'E', '\xcb': 'E', + '\xe8': 'e', '\xe9': 'e', '\xea': 'e', '\xeb': 'e', + '\xcc': 'I', '\xcd': 'I', '\xce': 'I', '\xcf': 'I', + '\xec': 'i', '\xed': 'i', '\xee': 'i', '\xef': 'i', + '\xd1': 'N', '\xf1': 'n', + '\xd2': 'O', '\xd3': 'O', '\xd4': 'O', '\xd5': 'O', '\xd6': 'O', '\xd8': 'O', + '\xf2': 'o', '\xf3': 'o', '\xf4': 'o', '\xf5': 'o', '\xf6': 'o', '\xf8': 'o', + '\xd9': 'U', '\xda': 'U', '\xdb': 'U', '\xdc': 'U', + '\xf9': 'u', '\xfa': 'u', '\xfb': 'u', '\xfc': 'u', + '\xdd': 'Y', '\xfd': 'y', '\xff': 'y', + '\xc6': 'Ae', '\xe6': 'ae', + '\xde': 'Th', '\xfe': 'th', + '\xdf': 'ss', + // Latin Extended-A block. + '\u0100': 'A', '\u0102': 'A', '\u0104': 'A', + '\u0101': 'a', '\u0103': 'a', '\u0105': 'a', + '\u0106': 'C', '\u0108': 'C', '\u010a': 'C', '\u010c': 'C', + '\u0107': 'c', '\u0109': 'c', '\u010b': 'c', '\u010d': 'c', + '\u010e': 'D', '\u0110': 'D', '\u010f': 'd', '\u0111': 'd', + '\u0112': 'E', '\u0114': 'E', '\u0116': 'E', '\u0118': 'E', '\u011a': 'E', + '\u0113': 'e', '\u0115': 'e', '\u0117': 'e', '\u0119': 'e', '\u011b': 'e', + '\u011c': 'G', '\u011e': 'G', '\u0120': 'G', '\u0122': 'G', + '\u011d': 'g', '\u011f': 'g', '\u0121': 'g', '\u0123': 'g', + '\u0124': 'H', '\u0126': 'H', '\u0125': 'h', '\u0127': 'h', + '\u0128': 'I', '\u012a': 'I', '\u012c': 'I', '\u012e': 'I', '\u0130': 'I', + '\u0129': 'i', '\u012b': 'i', '\u012d': 'i', '\u012f': 'i', '\u0131': 'i', + '\u0134': 'J', '\u0135': 'j', + '\u0136': 'K', '\u0137': 'k', '\u0138': 'k', + '\u0139': 'L', '\u013b': 'L', '\u013d': 'L', '\u013f': 'L', '\u0141': 'L', + '\u013a': 'l', '\u013c': 'l', '\u013e': 'l', '\u0140': 'l', '\u0142': 'l', + '\u0143': 'N', '\u0145': 'N', '\u0147': 'N', '\u014a': 'N', + '\u0144': 'n', '\u0146': 'n', '\u0148': 'n', '\u014b': 'n', + '\u014c': 'O', '\u014e': 'O', '\u0150': 'O', + '\u014d': 'o', '\u014f': 'o', '\u0151': 'o', + '\u0154': 'R', '\u0156': 'R', '\u0158': 'R', + '\u0155': 'r', '\u0157': 'r', '\u0159': 'r', + '\u015a': 'S', '\u015c': 'S', '\u015e': 'S', '\u0160': 'S', + '\u015b': 's', '\u015d': 's', '\u015f': 's', '\u0161': 's', + '\u0162': 'T', '\u0164': 'T', '\u0166': 'T', + '\u0163': 't', '\u0165': 't', '\u0167': 't', + '\u0168': 'U', '\u016a': 'U', '\u016c': 'U', '\u016e': 'U', '\u0170': 'U', '\u0172': 'U', + '\u0169': 'u', '\u016b': 'u', '\u016d': 'u', '\u016f': 'u', '\u0171': 'u', '\u0173': 'u', + '\u0174': 'W', '\u0175': 'w', + '\u0176': 'Y', '\u0177': 'y', '\u0178': 'Y', + '\u0179': 'Z', '\u017b': 'Z', '\u017d': 'Z', + '\u017a': 'z', '\u017c': 'z', '\u017e': 'z', + '\u0132': 'IJ', '\u0133': 'ij', + '\u0152': 'Oe', '\u0153': 'oe', + '\u0149': "'n", '\u017f': 's' + }; + + /** Used to map characters to HTML entities. */ + var htmlEscapes = { + '&': '&', + '<': '<', + '>': '>', + '"': '"', + "'": ''' + }; + + /** Used to map HTML entities to characters. */ + var htmlUnescapes = { + '&': '&', + '<': '<', + '>': '>', + '"': '"', + ''': "'" + }; + + /** Used to escape characters for inclusion in compiled string literals. */ + var stringEscapes = { + '\\': '\\', + "'": "'", + '\n': 'n', + '\r': 'r', + '\u2028': 'u2028', + '\u2029': 'u2029' + }; + + /** Built-in method references without a dependency on `root`. */ + var freeParseFloat = parseFloat, + freeParseInt = parseInt; + + /** Detect free variable `global` from Node.js. */ + var freeGlobal = typeof global == 'object' && global && global.Object === Object && global; + + /** Detect free variable `self`. */ + var freeSelf = typeof self == 'object' && self && self.Object === Object && self; + + /** Used as a reference to the global object. */ + var root = freeGlobal || freeSelf || Function('return this')(); + + /** Detect free variable `exports`. */ + var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports; + + /** Detect free variable `module`. */ + var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module; + + /** Detect the popular CommonJS extension `module.exports`. */ + var moduleExports = freeModule && freeModule.exports === freeExports; + + /** Detect free variable `process` from Node.js. */ + var freeProcess = moduleExports && freeGlobal.process; + + /** Used to access faster Node.js helpers. */ + var nodeUtil = (function() { + try { + // Use `util.types` for Node.js 10+. + var types = freeModule && freeModule.require && freeModule.require('util').types; + + if (types) { + return types; + } + + // Legacy `process.binding('util')` for Node.js < 10. + return freeProcess && freeProcess.binding && freeProcess.binding('util'); + } catch (e) {} + }()); + + /* Node.js helper references. */ + var nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer, + nodeIsDate = nodeUtil && nodeUtil.isDate, + nodeIsMap = nodeUtil && nodeUtil.isMap, + nodeIsRegExp = nodeUtil && nodeUtil.isRegExp, + nodeIsSet = nodeUtil && nodeUtil.isSet, + nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray; + + /*--------------------------------------------------------------------------*/ + + /** + * A faster alternative to `Function#apply`, this function invokes `func` + * with the `this` binding of `thisArg` and the arguments of `args`. + * + * @private + * @param {Function} func The function to invoke. + * @param {*} thisArg The `this` binding of `func`. + * @param {Array} args The arguments to invoke `func` with. + * @returns {*} Returns the result of `func`. + */ + function apply(func, thisArg, args) { + switch (args.length) { + case 0: return func.call(thisArg); + case 1: return func.call(thisArg, args[0]); + case 2: return func.call(thisArg, args[0], args[1]); + case 3: return func.call(thisArg, args[0], args[1], args[2]); + } + return func.apply(thisArg, args); + } + + /** + * A specialized version of `baseAggregator` for arrays. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} setter The function to set `accumulator` values. + * @param {Function} iteratee The iteratee to transform keys. + * @param {Object} accumulator The initial aggregated object. + * @returns {Function} Returns `accumulator`. + */ + function arrayAggregator(array, setter, iteratee, accumulator) { + var index = -1, + length = array == null ? 0 : array.length; + + while (++index < length) { + var value = array[index]; + setter(accumulator, value, iteratee(value), array); + } + return accumulator; + } + + /** + * A specialized version of `_.forEach` for arrays without support for + * iteratee shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array} Returns `array`. + */ + function arrayEach(array, iteratee) { + var index = -1, + length = array == null ? 0 : array.length; + + while (++index < length) { + if (iteratee(array[index], index, array) === false) { + break; + } + } + return array; + } + + /** + * A specialized version of `_.forEachRight` for arrays without support for + * iteratee shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array} Returns `array`. + */ + function arrayEachRight(array, iteratee) { + var length = array == null ? 0 : array.length; + + while (length--) { + if (iteratee(array[length], length, array) === false) { + break; + } + } + return array; + } + + /** + * A specialized version of `_.every` for arrays without support for + * iteratee shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} predicate The function invoked per iteration. + * @returns {boolean} Returns `true` if all elements pass the predicate check, + * else `false`. + */ + function arrayEvery(array, predicate) { + var index = -1, + length = array == null ? 0 : array.length; + + while (++index < length) { + if (!predicate(array[index], index, array)) { + return false; + } + } + return true; + } + + /** + * A specialized version of `_.filter` for arrays without support for + * iteratee shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} predicate The function invoked per iteration. + * @returns {Array} Returns the new filtered array. + */ + function arrayFilter(array, predicate) { + var index = -1, + length = array == null ? 0 : array.length, + resIndex = 0, + result = []; + + while (++index < length) { + var value = array[index]; + if (predicate(value, index, array)) { + result[resIndex++] = value; + } + } + return result; + } + + /** + * A specialized version of `_.includes` for arrays without support for + * specifying an index to search from. + * + * @private + * @param {Array} [array] The array to inspect. + * @param {*} target The value to search for. + * @returns {boolean} Returns `true` if `target` is found, else `false`. + */ + function arrayIncludes(array, value) { + var length = array == null ? 0 : array.length; + return !!length && baseIndexOf(array, value, 0) > -1; + } + + /** + * This function is like `arrayIncludes` except that it accepts a comparator. + * + * @private + * @param {Array} [array] The array to inspect. + * @param {*} target The value to search for. + * @param {Function} comparator The comparator invoked per element. + * @returns {boolean} Returns `true` if `target` is found, else `false`. + */ + function arrayIncludesWith(array, value, comparator) { + var index = -1, + length = array == null ? 0 : array.length; + + while (++index < length) { + if (comparator(value, array[index])) { + return true; + } + } + return false; + } + + /** + * A specialized version of `_.map` for arrays without support for iteratee + * shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array} Returns the new mapped array. + */ + function arrayMap(array, iteratee) { + var index = -1, + length = array == null ? 0 : array.length, + result = Array(length); + + while (++index < length) { + result[index] = iteratee(array[index], index, array); + } + return result; + } + + /** + * Appends the elements of `values` to `array`. + * + * @private + * @param {Array} array The array to modify. + * @param {Array} values The values to append. + * @returns {Array} Returns `array`. + */ + function arrayPush(array, values) { + var index = -1, + length = values.length, + offset = array.length; + + while (++index < length) { + array[offset + index] = values[index]; + } + return array; + } + + /** + * A specialized version of `_.reduce` for arrays without support for + * iteratee shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @param {*} [accumulator] The initial value. + * @param {boolean} [initAccum] Specify using the first element of `array` as + * the initial value. + * @returns {*} Returns the accumulated value. + */ + function arrayReduce(array, iteratee, accumulator, initAccum) { + var index = -1, + length = array == null ? 0 : array.length; + + if (initAccum && length) { + accumulator = array[++index]; + } + while (++index < length) { + accumulator = iteratee(accumulator, array[index], index, array); + } + return accumulator; + } + + /** + * A specialized version of `_.reduceRight` for arrays without support for + * iteratee shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @param {*} [accumulator] The initial value. + * @param {boolean} [initAccum] Specify using the last element of `array` as + * the initial value. + * @returns {*} Returns the accumulated value. + */ + function arrayReduceRight(array, iteratee, accumulator, initAccum) { + var length = array == null ? 0 : array.length; + if (initAccum && length) { + accumulator = array[--length]; + } + while (length--) { + accumulator = iteratee(accumulator, array[length], length, array); + } + return accumulator; + } + + /** + * A specialized version of `_.some` for arrays without support for iteratee + * shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} predicate The function invoked per iteration. + * @returns {boolean} Returns `true` if any element passes the predicate check, + * else `false`. + */ + function arraySome(array, predicate) { + var index = -1, + length = array == null ? 0 : array.length; + + while (++index < length) { + if (predicate(array[index], index, array)) { + return true; + } + } + return false; + } + + /** + * Gets the size of an ASCII `string`. + * + * @private + * @param {string} string The string inspect. + * @returns {number} Returns the string size. + */ + var asciiSize = baseProperty('length'); + + /** + * Converts an ASCII `string` to an array. + * + * @private + * @param {string} string The string to convert. + * @returns {Array} Returns the converted array. + */ + function asciiToArray(string) { + return string.split(''); + } + + /** + * Splits an ASCII `string` into an array of its words. + * + * @private + * @param {string} The string to inspect. + * @returns {Array} Returns the words of `string`. + */ + function asciiWords(string) { + return string.match(reAsciiWord) || []; + } + + /** + * The base implementation of methods like `_.findKey` and `_.findLastKey`, + * without support for iteratee shorthands, which iterates over `collection` + * using `eachFunc`. + * + * @private + * @param {Array|Object} collection The collection to inspect. + * @param {Function} predicate The function invoked per iteration. + * @param {Function} eachFunc The function to iterate over `collection`. + * @returns {*} Returns the found element or its key, else `undefined`. + */ + function baseFindKey(collection, predicate, eachFunc) { + var result; + eachFunc(collection, function(value, key, collection) { + if (predicate(value, key, collection)) { + result = key; + return false; + } + }); + return result; + } + + /** + * The base implementation of `_.findIndex` and `_.findLastIndex` without + * support for iteratee shorthands. + * + * @private + * @param {Array} array The array to inspect. + * @param {Function} predicate The function invoked per iteration. + * @param {number} fromIndex The index to search from. + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {number} Returns the index of the matched value, else `-1`. + */ + function baseFindIndex(array, predicate, fromIndex, fromRight) { + var length = array.length, + index = fromIndex + (fromRight ? 1 : -1); + + while ((fromRight ? index-- : ++index < length)) { + if (predicate(array[index], index, array)) { + return index; + } + } + return -1; + } + + /** + * The base implementation of `_.indexOf` without `fromIndex` bounds checks. + * + * @private + * @param {Array} array The array to inspect. + * @param {*} value The value to search for. + * @param {number} fromIndex The index to search from. + * @returns {number} Returns the index of the matched value, else `-1`. + */ + function baseIndexOf(array, value, fromIndex) { + return value === value + ? strictIndexOf(array, value, fromIndex) + : baseFindIndex(array, baseIsNaN, fromIndex); + } + + /** + * This function is like `baseIndexOf` except that it accepts a comparator. + * + * @private + * @param {Array} array The array to inspect. + * @param {*} value The value to search for. + * @param {number} fromIndex The index to search from. + * @param {Function} comparator The comparator invoked per element. + * @returns {number} Returns the index of the matched value, else `-1`. + */ + function baseIndexOfWith(array, value, fromIndex, comparator) { + var index = fromIndex - 1, + length = array.length; + + while (++index < length) { + if (comparator(array[index], value)) { + return index; + } + } + return -1; + } + + /** + * The base implementation of `_.isNaN` without support for number objects. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`. + */ + function baseIsNaN(value) { + return value !== value; + } + + /** + * The base implementation of `_.mean` and `_.meanBy` without support for + * iteratee shorthands. + * + * @private + * @param {Array} array The array to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {number} Returns the mean. + */ + function baseMean(array, iteratee) { + var length = array == null ? 0 : array.length; + return length ? (baseSum(array, iteratee) / length) : NAN; + } + + /** + * The base implementation of `_.property` without support for deep paths. + * + * @private + * @param {string} key The key of the property to get. + * @returns {Function} Returns the new accessor function. + */ + function baseProperty(key) { + return function(object) { + return object == null ? undefined : object[key]; + }; + } + + /** + * The base implementation of `_.propertyOf` without support for deep paths. + * + * @private + * @param {Object} object The object to query. + * @returns {Function} Returns the new accessor function. + */ + function basePropertyOf(object) { + return function(key) { + return object == null ? undefined : object[key]; + }; + } + + /** + * The base implementation of `_.reduce` and `_.reduceRight`, without support + * for iteratee shorthands, which iterates over `collection` using `eachFunc`. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @param {*} accumulator The initial value. + * @param {boolean} initAccum Specify using the first or last element of + * `collection` as the initial value. + * @param {Function} eachFunc The function to iterate over `collection`. + * @returns {*} Returns the accumulated value. + */ + function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) { + eachFunc(collection, function(value, index, collection) { + accumulator = initAccum + ? (initAccum = false, value) + : iteratee(accumulator, value, index, collection); + }); + return accumulator; + } + + /** + * The base implementation of `_.sortBy` which uses `comparer` to define the + * sort order of `array` and replaces criteria objects with their corresponding + * values. + * + * @private + * @param {Array} array The array to sort. + * @param {Function} comparer The function to define sort order. + * @returns {Array} Returns `array`. + */ + function baseSortBy(array, comparer) { + var length = array.length; + + array.sort(comparer); + while (length--) { + array[length] = array[length].value; + } + return array; + } + + /** + * The base implementation of `_.sum` and `_.sumBy` without support for + * iteratee shorthands. + * + * @private + * @param {Array} array The array to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {number} Returns the sum. + */ + function baseSum(array, iteratee) { + var result, + index = -1, + length = array.length; + + while (++index < length) { + var current = iteratee(array[index]); + if (current !== undefined) { + result = result === undefined ? current : (result + current); + } + } + return result; + } + + /** + * The base implementation of `_.times` without support for iteratee shorthands + * or max array length checks. + * + * @private + * @param {number} n The number of times to invoke `iteratee`. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array} Returns the array of results. + */ + function baseTimes(n, iteratee) { + var index = -1, + result = Array(n); + + while (++index < n) { + result[index] = iteratee(index); + } + return result; + } + + /** + * The base implementation of `_.toPairs` and `_.toPairsIn` which creates an array + * of key-value pairs for `object` corresponding to the property names of `props`. + * + * @private + * @param {Object} object The object to query. + * @param {Array} props The property names to get values for. + * @returns {Object} Returns the key-value pairs. + */ + function baseToPairs(object, props) { + return arrayMap(props, function(key) { + return [key, object[key]]; + }); + } + + /** + * The base implementation of `_.trim`. + * + * @private + * @param {string} string The string to trim. + * @returns {string} Returns the trimmed string. + */ + function baseTrim(string) { + return string + ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '') + : string; + } + + /** + * The base implementation of `_.unary` without support for storing metadata. + * + * @private + * @param {Function} func The function to cap arguments for. + * @returns {Function} Returns the new capped function. + */ + function baseUnary(func) { + return function(value) { + return func(value); + }; + } + + /** + * The base implementation of `_.values` and `_.valuesIn` which creates an + * array of `object` property values corresponding to the property names + * of `props`. + * + * @private + * @param {Object} object The object to query. + * @param {Array} props The property names to get values for. + * @returns {Object} Returns the array of property values. + */ + function baseValues(object, props) { + return arrayMap(props, function(key) { + return object[key]; + }); + } + + /** + * Checks if a `cache` value for `key` exists. + * + * @private + * @param {Object} cache The cache to query. + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ + function cacheHas(cache, key) { + return cache.has(key); + } + + /** + * Used by `_.trim` and `_.trimStart` to get the index of the first string symbol + * that is not found in the character symbols. + * + * @private + * @param {Array} strSymbols The string symbols to inspect. + * @param {Array} chrSymbols The character symbols to find. + * @returns {number} Returns the index of the first unmatched string symbol. + */ + function charsStartIndex(strSymbols, chrSymbols) { + var index = -1, + length = strSymbols.length; + + while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {} + return index; + } + + /** + * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol + * that is not found in the character symbols. + * + * @private + * @param {Array} strSymbols The string symbols to inspect. + * @param {Array} chrSymbols The character symbols to find. + * @returns {number} Returns the index of the last unmatched string symbol. + */ + function charsEndIndex(strSymbols, chrSymbols) { + var index = strSymbols.length; + + while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {} + return index; + } + + /** + * Gets the number of `placeholder` occurrences in `array`. + * + * @private + * @param {Array} array The array to inspect. + * @param {*} placeholder The placeholder to search for. + * @returns {number} Returns the placeholder count. + */ + function countHolders(array, placeholder) { + var length = array.length, + result = 0; + + while (length--) { + if (array[length] === placeholder) { + ++result; + } + } + return result; + } + + /** + * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A + * letters to basic Latin letters. + * + * @private + * @param {string} letter The matched letter to deburr. + * @returns {string} Returns the deburred letter. + */ + var deburrLetter = basePropertyOf(deburredLetters); + + /** + * Used by `_.escape` to convert characters to HTML entities. + * + * @private + * @param {string} chr The matched character to escape. + * @returns {string} Returns the escaped character. + */ + var escapeHtmlChar = basePropertyOf(htmlEscapes); + + /** + * Used by `_.template` to escape characters for inclusion in compiled string literals. + * + * @private + * @param {string} chr The matched character to escape. + * @returns {string} Returns the escaped character. + */ + function escapeStringChar(chr) { + return '\\' + stringEscapes[chr]; + } + + /** + * Gets the value at `key` of `object`. + * + * @private + * @param {Object} [object] The object to query. + * @param {string} key The key of the property to get. + * @returns {*} Returns the property value. + */ + function getValue(object, key) { + return object == null ? undefined : object[key]; + } + + /** + * Checks if `string` contains Unicode symbols. + * + * @private + * @param {string} string The string to inspect. + * @returns {boolean} Returns `true` if a symbol is found, else `false`. + */ + function hasUnicode(string) { + return reHasUnicode.test(string); + } + + /** + * Checks if `string` contains a word composed of Unicode symbols. + * + * @private + * @param {string} string The string to inspect. + * @returns {boolean} Returns `true` if a word is found, else `false`. + */ + function hasUnicodeWord(string) { + return reHasUnicodeWord.test(string); + } + + /** + * Converts `iterator` to an array. + * + * @private + * @param {Object} iterator The iterator to convert. + * @returns {Array} Returns the converted array. + */ + function iteratorToArray(iterator) { + var data, + result = []; + + while (!(data = iterator.next()).done) { + result.push(data.value); + } + return result; + } + + /** + * Converts `map` to its key-value pairs. + * + * @private + * @param {Object} map The map to convert. + * @returns {Array} Returns the key-value pairs. + */ + function mapToArray(map) { + var index = -1, + result = Array(map.size); + + map.forEach(function(value, key) { + result[++index] = [key, value]; + }); + return result; + } + + /** + * Creates a unary function that invokes `func` with its argument transformed. + * + * @private + * @param {Function} func The function to wrap. + * @param {Function} transform The argument transform. + * @returns {Function} Returns the new function. + */ + function overArg(func, transform) { + return function(arg) { + return func(transform(arg)); + }; + } + + /** + * Replaces all `placeholder` elements in `array` with an internal placeholder + * and returns an array of their indexes. + * + * @private + * @param {Array} array The array to modify. + * @param {*} placeholder The placeholder to replace. + * @returns {Array} Returns the new array of placeholder indexes. + */ + function replaceHolders(array, placeholder) { + var index = -1, + length = array.length, + resIndex = 0, + result = []; + + while (++index < length) { + var value = array[index]; + if (value === placeholder || value === PLACEHOLDER) { + array[index] = PLACEHOLDER; + result[resIndex++] = index; + } + } + return result; + } + + /** + * Converts `set` to an array of its values. + * + * @private + * @param {Object} set The set to convert. + * @returns {Array} Returns the values. + */ + function setToArray(set) { + var index = -1, + result = Array(set.size); + + set.forEach(function(value) { + result[++index] = value; + }); + return result; + } + + /** + * Converts `set` to its value-value pairs. + * + * @private + * @param {Object} set The set to convert. + * @returns {Array} Returns the value-value pairs. + */ + function setToPairs(set) { + var index = -1, + result = Array(set.size); + + set.forEach(function(value) { + result[++index] = [value, value]; + }); + return result; + } + + /** + * A specialized version of `_.indexOf` which performs strict equality + * comparisons of values, i.e. `===`. + * + * @private + * @param {Array} array The array to inspect. + * @param {*} value The value to search for. + * @param {number} fromIndex The index to search from. + * @returns {number} Returns the index of the matched value, else `-1`. + */ + function strictIndexOf(array, value, fromIndex) { + var index = fromIndex - 1, + length = array.length; + + while (++index < length) { + if (array[index] === value) { + return index; + } + } + return -1; + } + + /** + * A specialized version of `_.lastIndexOf` which performs strict equality + * comparisons of values, i.e. `===`. + * + * @private + * @param {Array} array The array to inspect. + * @param {*} value The value to search for. + * @param {number} fromIndex The index to search from. + * @returns {number} Returns the index of the matched value, else `-1`. + */ + function strictLastIndexOf(array, value, fromIndex) { + var index = fromIndex + 1; + while (index--) { + if (array[index] === value) { + return index; + } + } + return index; + } + + /** + * Gets the number of symbols in `string`. + * + * @private + * @param {string} string The string to inspect. + * @returns {number} Returns the string size. + */ + function stringSize(string) { + return hasUnicode(string) + ? unicodeSize(string) + : asciiSize(string); + } + + /** + * Converts `string` to an array. + * + * @private + * @param {string} string The string to convert. + * @returns {Array} Returns the converted array. + */ + function stringToArray(string) { + return hasUnicode(string) + ? unicodeToArray(string) + : asciiToArray(string); + } + + /** + * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace + * character of `string`. + * + * @private + * @param {string} string The string to inspect. + * @returns {number} Returns the index of the last non-whitespace character. + */ + function trimmedEndIndex(string) { + var index = string.length; + + while (index-- && reWhitespace.test(string.charAt(index))) {} + return index; + } + + /** + * Used by `_.unescape` to convert HTML entities to characters. + * + * @private + * @param {string} chr The matched character to unescape. + * @returns {string} Returns the unescaped character. + */ + var unescapeHtmlChar = basePropertyOf(htmlUnescapes); + + /** + * Gets the size of a Unicode `string`. + * + * @private + * @param {string} string The string inspect. + * @returns {number} Returns the string size. + */ + function unicodeSize(string) { + var result = reUnicode.lastIndex = 0; + while (reUnicode.test(string)) { + ++result; + } + return result; + } + + /** + * Converts a Unicode `string` to an array. + * + * @private + * @param {string} string The string to convert. + * @returns {Array} Returns the converted array. + */ + function unicodeToArray(string) { + return string.match(reUnicode) || []; + } + + /** + * Splits a Unicode `string` into an array of its words. + * + * @private + * @param {string} The string to inspect. + * @returns {Array} Returns the words of `string`. + */ + function unicodeWords(string) { + return string.match(reUnicodeWord) || []; + } + + /*--------------------------------------------------------------------------*/ + + /** + * Create a new pristine `lodash` function using the `context` object. + * + * @static + * @memberOf _ + * @since 1.1.0 + * @category Util + * @param {Object} [context=root] The context object. + * @returns {Function} Returns a new `lodash` function. + * @example + * + * _.mixin({ 'foo': _.constant('foo') }); + * + * var lodash = _.runInContext(); + * lodash.mixin({ 'bar': lodash.constant('bar') }); + * + * _.isFunction(_.foo); + * // => true + * _.isFunction(_.bar); + * // => false + * + * lodash.isFunction(lodash.foo); + * // => false + * lodash.isFunction(lodash.bar); + * // => true + * + * // Create a suped-up `defer` in Node.js. + * var defer = _.runInContext({ 'setTimeout': setImmediate }).defer; + */ + var runInContext = (function runInContext(context) { + context = context == null ? root : _.defaults(root.Object(), context, _.pick(root, contextProps)); + + /** Built-in constructor references. */ + var Array = context.Array, + Date = context.Date, + Error = context.Error, + Function = context.Function, + Math = context.Math, + Object = context.Object, + RegExp = context.RegExp, + String = context.String, + TypeError = context.TypeError; + + /** Used for built-in method references. */ + var arrayProto = Array.prototype, + funcProto = Function.prototype, + objectProto = Object.prototype; + + /** Used to detect overreaching core-js shims. */ + var coreJsData = context['__core-js_shared__']; + + /** Used to resolve the decompiled source of functions. */ + var funcToString = funcProto.toString; + + /** Used to check objects for own properties. */ + var hasOwnProperty = objectProto.hasOwnProperty; + + /** Used to generate unique IDs. */ + var idCounter = 0; + + /** Used to detect methods masquerading as native. */ + var maskSrcKey = (function() { + var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || ''); + return uid ? ('Symbol(src)_1.' + uid) : ''; + }()); + + /** + * Used to resolve the + * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) + * of values. + */ + var nativeObjectToString = objectProto.toString; + + /** Used to infer the `Object` constructor. */ + var objectCtorString = funcToString.call(Object); + + /** Used to restore the original `_` reference in `_.noConflict`. */ + var oldDash = root._; + + /** Used to detect if a method is native. */ + var reIsNative = RegExp('^' + + funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&') + .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$' + ); + + /** Built-in value references. */ + var Buffer = moduleExports ? context.Buffer : undefined, + Symbol = context.Symbol, + Uint8Array = context.Uint8Array, + allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined, + getPrototype = overArg(Object.getPrototypeOf, Object), + objectCreate = Object.create, + propertyIsEnumerable = objectProto.propertyIsEnumerable, + splice = arrayProto.splice, + spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined, + symIterator = Symbol ? Symbol.iterator : undefined, + symToStringTag = Symbol ? Symbol.toStringTag : undefined; + + var defineProperty = (function() { + try { + var func = getNative(Object, 'defineProperty'); + func({}, '', {}); + return func; + } catch (e) {} + }()); + + /** Mocked built-ins. */ + var ctxClearTimeout = context.clearTimeout !== root.clearTimeout && context.clearTimeout, + ctxNow = Date && Date.now !== root.Date.now && Date.now, + ctxSetTimeout = context.setTimeout !== root.setTimeout && context.setTimeout; + + /* Built-in method references for those with the same name as other `lodash` methods. */ + var nativeCeil = Math.ceil, + nativeFloor = Math.floor, + nativeGetSymbols = Object.getOwnPropertySymbols, + nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined, + nativeIsFinite = context.isFinite, + nativeJoin = arrayProto.join, + nativeKeys = overArg(Object.keys, Object), + nativeMax = Math.max, + nativeMin = Math.min, + nativeNow = Date.now, + nativeParseInt = context.parseInt, + nativeRandom = Math.random, + nativeReverse = arrayProto.reverse; + + /* Built-in method references that are verified to be native. */ + var DataView = getNative(context, 'DataView'), + Map = getNative(context, 'Map'), + Promise = getNative(context, 'Promise'), + Set = getNative(context, 'Set'), + WeakMap = getNative(context, 'WeakMap'), + nativeCreate = getNative(Object, 'create'); + + /** Used to store function metadata. */ + var metaMap = WeakMap && new WeakMap; + + /** Used to lookup unminified function names. */ + var realNames = {}; + + /** Used to detect maps, sets, and weakmaps. */ + var dataViewCtorString = toSource(DataView), + mapCtorString = toSource(Map), + promiseCtorString = toSource(Promise), + setCtorString = toSource(Set), + weakMapCtorString = toSource(WeakMap); + + /** Used to convert symbols to primitives and strings. */ + var symbolProto = Symbol ? Symbol.prototype : undefined, + symbolValueOf = symbolProto ? symbolProto.valueOf : undefined, + symbolToString = symbolProto ? symbolProto.toString : undefined; + + /*------------------------------------------------------------------------*/ + + /** + * Creates a `lodash` object which wraps `value` to enable implicit method + * chain sequences. Methods that operate on and return arrays, collections, + * and functions can be chained together. Methods that retrieve a single value + * or may return a primitive value will automatically end the chain sequence + * and return the unwrapped value. Otherwise, the value must be unwrapped + * with `_#value`. + * + * Explicit chain sequences, which must be unwrapped with `_#value`, may be + * enabled using `_.chain`. + * + * The execution of chained methods is lazy, that is, it's deferred until + * `_#value` is implicitly or explicitly called. + * + * Lazy evaluation allows several methods to support shortcut fusion. + * Shortcut fusion is an optimization to merge iteratee calls; this avoids + * the creation of intermediate arrays and can greatly reduce the number of + * iteratee executions. Sections of a chain sequence qualify for shortcut + * fusion if the section is applied to an array and iteratees accept only + * one argument. The heuristic for whether a section qualifies for shortcut + * fusion is subject to change. + * + * Chaining is supported in custom builds as long as the `_#value` method is + * directly or indirectly included in the build. + * + * In addition to lodash methods, wrappers have `Array` and `String` methods. + * + * The wrapper `Array` methods are: + * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift` + * + * The wrapper `String` methods are: + * `replace` and `split` + * + * The wrapper methods that support shortcut fusion are: + * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`, + * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`, + * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray` + * + * The chainable wrapper methods are: + * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`, + * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`, + * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`, + * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`, + * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`, + * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`, + * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`, + * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`, + * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`, + * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`, + * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`, + * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`, + * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`, + * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`, + * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`, + * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`, + * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`, + * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`, + * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`, + * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`, + * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`, + * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`, + * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`, + * `zipObject`, `zipObjectDeep`, and `zipWith` + * + * The wrapper methods that are **not** chainable by default are: + * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`, + * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`, + * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`, + * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`, + * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`, + * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`, + * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`, + * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`, + * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`, + * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`, + * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`, + * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`, + * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`, + * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`, + * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`, + * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`, + * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`, + * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`, + * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`, + * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`, + * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`, + * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`, + * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`, + * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`, + * `upperFirst`, `value`, and `words` + * + * @name _ + * @constructor + * @category Seq + * @param {*} value The value to wrap in a `lodash` instance. + * @returns {Object} Returns the new `lodash` wrapper instance. + * @example + * + * function square(n) { + * return n * n; + * } + * + * var wrapped = _([1, 2, 3]); + * + * // Returns an unwrapped value. + * wrapped.reduce(_.add); + * // => 6 + * + * // Returns a wrapped value. + * var squares = wrapped.map(square); + * + * _.isArray(squares); + * // => false + * + * _.isArray(squares.value()); + * // => true + */ + function lodash(value) { + if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) { + if (value instanceof LodashWrapper) { + return value; + } + if (hasOwnProperty.call(value, '__wrapped__')) { + return wrapperClone(value); + } + } + return new LodashWrapper(value); + } + + /** + * The base implementation of `_.create` without support for assigning + * properties to the created object. + * + * @private + * @param {Object} proto The object to inherit from. + * @returns {Object} Returns the new object. + */ + var baseCreate = (function() { + function object() {} + return function(proto) { + if (!isObject(proto)) { + return {}; + } + if (objectCreate) { + return objectCreate(proto); + } + object.prototype = proto; + var result = new object; + object.prototype = undefined; + return result; + }; + }()); + + /** + * The function whose prototype chain sequence wrappers inherit from. + * + * @private + */ + function baseLodash() { + // No operation performed. + } + + /** + * The base constructor for creating `lodash` wrapper objects. + * + * @private + * @param {*} value The value to wrap. + * @param {boolean} [chainAll] Enable explicit method chain sequences. + */ + function LodashWrapper(value, chainAll) { + this.__wrapped__ = value; + this.__actions__ = []; + this.__chain__ = !!chainAll; + this.__index__ = 0; + this.__values__ = undefined; + } + + /** + * By default, the template delimiters used by lodash are like those in + * embedded Ruby (ERB) as well as ES2015 template strings. Change the + * following template settings to use alternative delimiters. + * + * @static + * @memberOf _ + * @type {Object} + */ + lodash.templateSettings = { + + /** + * Used to detect `data` property values to be HTML-escaped. + * + * @memberOf _.templateSettings + * @type {RegExp} + */ + 'escape': reEscape, + + /** + * Used to detect code to be evaluated. + * + * @memberOf _.templateSettings + * @type {RegExp} + */ + 'evaluate': reEvaluate, + + /** + * Used to detect `data` property values to inject. + * + * @memberOf _.templateSettings + * @type {RegExp} + */ + 'interpolate': reInterpolate, + + /** + * Used to reference the data object in the template text. + * + * @memberOf _.templateSettings + * @type {string} + */ + 'variable': '', + + /** + * Used to import variables into the compiled template. + * + * @memberOf _.templateSettings + * @type {Object} + */ + 'imports': { + + /** + * A reference to the `lodash` function. + * + * @memberOf _.templateSettings.imports + * @type {Function} + */ + '_': lodash + } + }; + + // Ensure wrappers are instances of `baseLodash`. + lodash.prototype = baseLodash.prototype; + lodash.prototype.constructor = lodash; + + LodashWrapper.prototype = baseCreate(baseLodash.prototype); + LodashWrapper.prototype.constructor = LodashWrapper; + + /*------------------------------------------------------------------------*/ + + /** + * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation. + * + * @private + * @constructor + * @param {*} value The value to wrap. + */ + function LazyWrapper(value) { + this.__wrapped__ = value; + this.__actions__ = []; + this.__dir__ = 1; + this.__filtered__ = false; + this.__iteratees__ = []; + this.__takeCount__ = MAX_ARRAY_LENGTH; + this.__views__ = []; + } + + /** + * Creates a clone of the lazy wrapper object. + * + * @private + * @name clone + * @memberOf LazyWrapper + * @returns {Object} Returns the cloned `LazyWrapper` object. + */ + function lazyClone() { + var result = new LazyWrapper(this.__wrapped__); + result.__actions__ = copyArray(this.__actions__); + result.__dir__ = this.__dir__; + result.__filtered__ = this.__filtered__; + result.__iteratees__ = copyArray(this.__iteratees__); + result.__takeCount__ = this.__takeCount__; + result.__views__ = copyArray(this.__views__); + return result; + } + + /** + * Reverses the direction of lazy iteration. + * + * @private + * @name reverse + * @memberOf LazyWrapper + * @returns {Object} Returns the new reversed `LazyWrapper` object. + */ + function lazyReverse() { + if (this.__filtered__) { + var result = new LazyWrapper(this); + result.__dir__ = -1; + result.__filtered__ = true; + } else { + result = this.clone(); + result.__dir__ *= -1; + } + return result; + } + + /** + * Extracts the unwrapped value from its lazy wrapper. + * + * @private + * @name value + * @memberOf LazyWrapper + * @returns {*} Returns the unwrapped value. + */ + function lazyValue() { + var array = this.__wrapped__.value(), + dir = this.__dir__, + isArr = isArray(array), + isRight = dir < 0, + arrLength = isArr ? array.length : 0, + view = getView(0, arrLength, this.__views__), + start = view.start, + end = view.end, + length = end - start, + index = isRight ? end : (start - 1), + iteratees = this.__iteratees__, + iterLength = iteratees.length, + resIndex = 0, + takeCount = nativeMin(length, this.__takeCount__); + + if (!isArr || (!isRight && arrLength == length && takeCount == length)) { + return baseWrapperValue(array, this.__actions__); + } + var result = []; + + outer: + while (length-- && resIndex < takeCount) { + index += dir; + + var iterIndex = -1, + value = array[index]; + + while (++iterIndex < iterLength) { + var data = iteratees[iterIndex], + iteratee = data.iteratee, + type = data.type, + computed = iteratee(value); + + if (type == LAZY_MAP_FLAG) { + value = computed; + } else if (!computed) { + if (type == LAZY_FILTER_FLAG) { + continue outer; + } else { + break outer; + } + } + } + result[resIndex++] = value; + } + return result; + } + + // Ensure `LazyWrapper` is an instance of `baseLodash`. + LazyWrapper.prototype = baseCreate(baseLodash.prototype); + LazyWrapper.prototype.constructor = LazyWrapper; + + /*------------------------------------------------------------------------*/ + + /** + * Creates a hash object. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ + function Hash(entries) { + var index = -1, + length = entries == null ? 0 : entries.length; + + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } + } + + /** + * Removes all key-value entries from the hash. + * + * @private + * @name clear + * @memberOf Hash + */ + function hashClear() { + this.__data__ = nativeCreate ? nativeCreate(null) : {}; + this.size = 0; + } + + /** + * Removes `key` and its value from the hash. + * + * @private + * @name delete + * @memberOf Hash + * @param {Object} hash The hash to modify. + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ + function hashDelete(key) { + var result = this.has(key) && delete this.__data__[key]; + this.size -= result ? 1 : 0; + return result; + } + + /** + * Gets the hash value for `key`. + * + * @private + * @name get + * @memberOf Hash + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ + function hashGet(key) { + var data = this.__data__; + if (nativeCreate) { + var result = data[key]; + return result === HASH_UNDEFINED ? undefined : result; + } + return hasOwnProperty.call(data, key) ? data[key] : undefined; + } + + /** + * Checks if a hash value for `key` exists. + * + * @private + * @name has + * @memberOf Hash + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ + function hashHas(key) { + var data = this.__data__; + return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key); + } + + /** + * Sets the hash `key` to `value`. + * + * @private + * @name set + * @memberOf Hash + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the hash instance. + */ + function hashSet(key, value) { + var data = this.__data__; + this.size += this.has(key) ? 0 : 1; + data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value; + return this; + } + + // Add methods to `Hash`. + Hash.prototype.clear = hashClear; + Hash.prototype['delete'] = hashDelete; + Hash.prototype.get = hashGet; + Hash.prototype.has = hashHas; + Hash.prototype.set = hashSet; + + /*------------------------------------------------------------------------*/ + + /** + * Creates an list cache object. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ + function ListCache(entries) { + var index = -1, + length = entries == null ? 0 : entries.length; + + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } + } + + /** + * Removes all key-value entries from the list cache. + * + * @private + * @name clear + * @memberOf ListCache + */ + function listCacheClear() { + this.__data__ = []; + this.size = 0; + } + + /** + * Removes `key` and its value from the list cache. + * + * @private + * @name delete + * @memberOf ListCache + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ + function listCacheDelete(key) { + var data = this.__data__, + index = assocIndexOf(data, key); + + if (index < 0) { + return false; + } + var lastIndex = data.length - 1; + if (index == lastIndex) { + data.pop(); + } else { + splice.call(data, index, 1); + } + --this.size; + return true; + } + + /** + * Gets the list cache value for `key`. + * + * @private + * @name get + * @memberOf ListCache + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ + function listCacheGet(key) { + var data = this.__data__, + index = assocIndexOf(data, key); + + return index < 0 ? undefined : data[index][1]; + } + + /** + * Checks if a list cache value for `key` exists. + * + * @private + * @name has + * @memberOf ListCache + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ + function listCacheHas(key) { + return assocIndexOf(this.__data__, key) > -1; + } + + /** + * Sets the list cache `key` to `value`. + * + * @private + * @name set + * @memberOf ListCache + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the list cache instance. + */ + function listCacheSet(key, value) { + var data = this.__data__, + index = assocIndexOf(data, key); + + if (index < 0) { + ++this.size; + data.push([key, value]); + } else { + data[index][1] = value; + } + return this; + } + + // Add methods to `ListCache`. + ListCache.prototype.clear = listCacheClear; + ListCache.prototype['delete'] = listCacheDelete; + ListCache.prototype.get = listCacheGet; + ListCache.prototype.has = listCacheHas; + ListCache.prototype.set = listCacheSet; + + /*------------------------------------------------------------------------*/ + + /** + * Creates a map cache object to store key-value pairs. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ + function MapCache(entries) { + var index = -1, + length = entries == null ? 0 : entries.length; + + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } + } + + /** + * Removes all key-value entries from the map. + * + * @private + * @name clear + * @memberOf MapCache + */ + function mapCacheClear() { + this.size = 0; + this.__data__ = { + 'hash': new Hash, + 'map': new (Map || ListCache), + 'string': new Hash + }; + } + + /** + * Removes `key` and its value from the map. + * + * @private + * @name delete + * @memberOf MapCache + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ + function mapCacheDelete(key) { + var result = getMapData(this, key)['delete'](key); + this.size -= result ? 1 : 0; + return result; + } + + /** + * Gets the map value for `key`. + * + * @private + * @name get + * @memberOf MapCache + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ + function mapCacheGet(key) { + return getMapData(this, key).get(key); + } + + /** + * Checks if a map value for `key` exists. + * + * @private + * @name has + * @memberOf MapCache + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ + function mapCacheHas(key) { + return getMapData(this, key).has(key); + } + + /** + * Sets the map `key` to `value`. + * + * @private + * @name set + * @memberOf MapCache + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the map cache instance. + */ + function mapCacheSet(key, value) { + var data = getMapData(this, key), + size = data.size; + + data.set(key, value); + this.size += data.size == size ? 0 : 1; + return this; + } + + // Add methods to `MapCache`. + MapCache.prototype.clear = mapCacheClear; + MapCache.prototype['delete'] = mapCacheDelete; + MapCache.prototype.get = mapCacheGet; + MapCache.prototype.has = mapCacheHas; + MapCache.prototype.set = mapCacheSet; + + /*------------------------------------------------------------------------*/ + + /** + * + * Creates an array cache object to store unique values. + * + * @private + * @constructor + * @param {Array} [values] The values to cache. + */ + function SetCache(values) { + var index = -1, + length = values == null ? 0 : values.length; + + this.__data__ = new MapCache; + while (++index < length) { + this.add(values[index]); + } + } + + /** + * Adds `value` to the array cache. + * + * @private + * @name add + * @memberOf SetCache + * @alias push + * @param {*} value The value to cache. + * @returns {Object} Returns the cache instance. + */ + function setCacheAdd(value) { + this.__data__.set(value, HASH_UNDEFINED); + return this; + } + + /** + * Checks if `value` is in the array cache. + * + * @private + * @name has + * @memberOf SetCache + * @param {*} value The value to search for. + * @returns {number} Returns `true` if `value` is found, else `false`. + */ + function setCacheHas(value) { + return this.__data__.has(value); + } + + // Add methods to `SetCache`. + SetCache.prototype.add = SetCache.prototype.push = setCacheAdd; + SetCache.prototype.has = setCacheHas; + + /*------------------------------------------------------------------------*/ + + /** + * Creates a stack cache object to store key-value pairs. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ + function Stack(entries) { + var data = this.__data__ = new ListCache(entries); + this.size = data.size; + } + + /** + * Removes all key-value entries from the stack. + * + * @private + * @name clear + * @memberOf Stack + */ + function stackClear() { + this.__data__ = new ListCache; + this.size = 0; + } + + /** + * Removes `key` and its value from the stack. + * + * @private + * @name delete + * @memberOf Stack + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ + function stackDelete(key) { + var data = this.__data__, + result = data['delete'](key); + + this.size = data.size; + return result; + } + + /** + * Gets the stack value for `key`. + * + * @private + * @name get + * @memberOf Stack + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ + function stackGet(key) { + return this.__data__.get(key); + } + + /** + * Checks if a stack value for `key` exists. + * + * @private + * @name has + * @memberOf Stack + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ + function stackHas(key) { + return this.__data__.has(key); + } + + /** + * Sets the stack `key` to `value`. + * + * @private + * @name set + * @memberOf Stack + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the stack cache instance. + */ + function stackSet(key, value) { + var data = this.__data__; + if (data instanceof ListCache) { + var pairs = data.__data__; + if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) { + pairs.push([key, value]); + this.size = ++data.size; + return this; + } + data = this.__data__ = new MapCache(pairs); + } + data.set(key, value); + this.size = data.size; + return this; + } + + // Add methods to `Stack`. + Stack.prototype.clear = stackClear; + Stack.prototype['delete'] = stackDelete; + Stack.prototype.get = stackGet; + Stack.prototype.has = stackHas; + Stack.prototype.set = stackSet; + + /*------------------------------------------------------------------------*/ + + /** + * Creates an array of the enumerable property names of the array-like `value`. + * + * @private + * @param {*} value The value to query. + * @param {boolean} inherited Specify returning inherited property names. + * @returns {Array} Returns the array of property names. + */ + function arrayLikeKeys(value, inherited) { + var isArr = isArray(value), + isArg = !isArr && isArguments(value), + isBuff = !isArr && !isArg && isBuffer(value), + isType = !isArr && !isArg && !isBuff && isTypedArray(value), + skipIndexes = isArr || isArg || isBuff || isType, + result = skipIndexes ? baseTimes(value.length, String) : [], + length = result.length; + + for (var key in value) { + if ((inherited || hasOwnProperty.call(value, key)) && + !(skipIndexes && ( + // Safari 9 has enumerable `arguments.length` in strict mode. + key == 'length' || + // Node.js 0.10 has enumerable non-index properties on buffers. + (isBuff && (key == 'offset' || key == 'parent')) || + // PhantomJS 2 has enumerable non-index properties on typed arrays. + (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) || + // Skip index properties. + isIndex(key, length) + ))) { + result.push(key); + } + } + return result; + } + + /** + * A specialized version of `_.sample` for arrays. + * + * @private + * @param {Array} array The array to sample. + * @returns {*} Returns the random element. + */ + function arraySample(array) { + var length = array.length; + return length ? array[baseRandom(0, length - 1)] : undefined; + } + + /** + * A specialized version of `_.sampleSize` for arrays. + * + * @private + * @param {Array} array The array to sample. + * @param {number} n The number of elements to sample. + * @returns {Array} Returns the random elements. + */ + function arraySampleSize(array, n) { + return shuffleSelf(copyArray(array), baseClamp(n, 0, array.length)); + } + + /** + * A specialized version of `_.shuffle` for arrays. + * + * @private + * @param {Array} array The array to shuffle. + * @returns {Array} Returns the new shuffled array. + */ + function arrayShuffle(array) { + return shuffleSelf(copyArray(array)); + } + + /** + * This function is like `assignValue` except that it doesn't assign + * `undefined` values. + * + * @private + * @param {Object} object The object to modify. + * @param {string} key The key of the property to assign. + * @param {*} value The value to assign. + */ + function assignMergeValue(object, key, value) { + if ((value !== undefined && !eq(object[key], value)) || + (value === undefined && !(key in object))) { + baseAssignValue(object, key, value); + } + } + + /** + * Assigns `value` to `key` of `object` if the existing value is not equivalent + * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * for equality comparisons. + * + * @private + * @param {Object} object The object to modify. + * @param {string} key The key of the property to assign. + * @param {*} value The value to assign. + */ + function assignValue(object, key, value) { + var objValue = object[key]; + if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) || + (value === undefined && !(key in object))) { + baseAssignValue(object, key, value); + } + } + + /** + * Gets the index at which the `key` is found in `array` of key-value pairs. + * + * @private + * @param {Array} array The array to inspect. + * @param {*} key The key to search for. + * @returns {number} Returns the index of the matched value, else `-1`. + */ + function assocIndexOf(array, key) { + var length = array.length; + while (length--) { + if (eq(array[length][0], key)) { + return length; + } + } + return -1; + } + + /** + * Aggregates elements of `collection` on `accumulator` with keys transformed + * by `iteratee` and values set by `setter`. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} setter The function to set `accumulator` values. + * @param {Function} iteratee The iteratee to transform keys. + * @param {Object} accumulator The initial aggregated object. + * @returns {Function} Returns `accumulator`. + */ + function baseAggregator(collection, setter, iteratee, accumulator) { + baseEach(collection, function(value, key, collection) { + setter(accumulator, value, iteratee(value), collection); + }); + return accumulator; + } + + /** + * The base implementation of `_.assign` without support for multiple sources + * or `customizer` functions. + * + * @private + * @param {Object} object The destination object. + * @param {Object} source The source object. + * @returns {Object} Returns `object`. + */ + function baseAssign(object, source) { + return object && copyObject(source, keys(source), object); + } + + /** + * The base implementation of `_.assignIn` without support for multiple sources + * or `customizer` functions. + * + * @private + * @param {Object} object The destination object. + * @param {Object} source The source object. + * @returns {Object} Returns `object`. + */ + function baseAssignIn(object, source) { + return object && copyObject(source, keysIn(source), object); + } + + /** + * The base implementation of `assignValue` and `assignMergeValue` without + * value checks. + * + * @private + * @param {Object} object The object to modify. + * @param {string} key The key of the property to assign. + * @param {*} value The value to assign. + */ + function baseAssignValue(object, key, value) { + if (key == '__proto__' && defineProperty) { + defineProperty(object, key, { + 'configurable': true, + 'enumerable': true, + 'value': value, + 'writable': true + }); + } else { + object[key] = value; + } + } + + /** + * The base implementation of `_.at` without support for individual paths. + * + * @private + * @param {Object} object The object to iterate over. + * @param {string[]} paths The property paths to pick. + * @returns {Array} Returns the picked elements. + */ + function baseAt(object, paths) { + var index = -1, + length = paths.length, + result = Array(length), + skip = object == null; + + while (++index < length) { + result[index] = skip ? undefined : get(object, paths[index]); + } + return result; + } + + /** + * The base implementation of `_.clamp` which doesn't coerce arguments. + * + * @private + * @param {number} number The number to clamp. + * @param {number} [lower] The lower bound. + * @param {number} upper The upper bound. + * @returns {number} Returns the clamped number. + */ + function baseClamp(number, lower, upper) { + if (number === number) { + if (upper !== undefined) { + number = number <= upper ? number : upper; + } + if (lower !== undefined) { + number = number >= lower ? number : lower; + } + } + return number; + } + + /** + * The base implementation of `_.clone` and `_.cloneDeep` which tracks + * traversed objects. + * + * @private + * @param {*} value The value to clone. + * @param {boolean} bitmask The bitmask flags. + * 1 - Deep clone + * 2 - Flatten inherited properties + * 4 - Clone symbols + * @param {Function} [customizer] The function to customize cloning. + * @param {string} [key] The key of `value`. + * @param {Object} [object] The parent object of `value`. + * @param {Object} [stack] Tracks traversed objects and their clone counterparts. + * @returns {*} Returns the cloned value. + */ + function baseClone(value, bitmask, customizer, key, object, stack) { + var result, + isDeep = bitmask & CLONE_DEEP_FLAG, + isFlat = bitmask & CLONE_FLAT_FLAG, + isFull = bitmask & CLONE_SYMBOLS_FLAG; + + if (customizer) { + result = object ? customizer(value, key, object, stack) : customizer(value); + } + if (result !== undefined) { + return result; + } + if (!isObject(value)) { + return value; + } + var isArr = isArray(value); + if (isArr) { + result = initCloneArray(value); + if (!isDeep) { + return copyArray(value, result); + } + } else { + var tag = getTag(value), + isFunc = tag == funcTag || tag == genTag; + + if (isBuffer(value)) { + return cloneBuffer(value, isDeep); + } + if (tag == objectTag || tag == argsTag || (isFunc && !object)) { + result = (isFlat || isFunc) ? {} : initCloneObject(value); + if (!isDeep) { + return isFlat + ? copySymbolsIn(value, baseAssignIn(result, value)) + : copySymbols(value, baseAssign(result, value)); + } + } else { + if (!cloneableTags[tag]) { + return object ? value : {}; + } + result = initCloneByTag(value, tag, isDeep); + } + } + // Check for circular references and return its corresponding clone. + stack || (stack = new Stack); + var stacked = stack.get(value); + if (stacked) { + return stacked; + } + stack.set(value, result); + + if (isSet(value)) { + value.forEach(function(subValue) { + result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack)); + }); + } else if (isMap(value)) { + value.forEach(function(subValue, key) { + result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack)); + }); + } + + var keysFunc = isFull + ? (isFlat ? getAllKeysIn : getAllKeys) + : (isFlat ? keysIn : keys); + + var props = isArr ? undefined : keysFunc(value); + arrayEach(props || value, function(subValue, key) { + if (props) { + key = subValue; + subValue = value[key]; + } + // Recursively populate clone (susceptible to call stack limits). + assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack)); + }); + return result; + } + + /** + * The base implementation of `_.conforms` which doesn't clone `source`. + * + * @private + * @param {Object} source The object of property predicates to conform to. + * @returns {Function} Returns the new spec function. + */ + function baseConforms(source) { + var props = keys(source); + return function(object) { + return baseConformsTo(object, source, props); + }; + } + + /** + * The base implementation of `_.conformsTo` which accepts `props` to check. + * + * @private + * @param {Object} object The object to inspect. + * @param {Object} source The object of property predicates to conform to. + * @returns {boolean} Returns `true` if `object` conforms, else `false`. + */ + function baseConformsTo(object, source, props) { + var length = props.length; + if (object == null) { + return !length; + } + object = Object(object); + while (length--) { + var key = props[length], + predicate = source[key], + value = object[key]; + + if ((value === undefined && !(key in object)) || !predicate(value)) { + return false; + } + } + return true; + } + + /** + * The base implementation of `_.delay` and `_.defer` which accepts `args` + * to provide to `func`. + * + * @private + * @param {Function} func The function to delay. + * @param {number} wait The number of milliseconds to delay invocation. + * @param {Array} args The arguments to provide to `func`. + * @returns {number|Object} Returns the timer id or timeout object. + */ + function baseDelay(func, wait, args) { + if (typeof func != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + return setTimeout(function() { func.apply(undefined, args); }, wait); + } + + /** + * The base implementation of methods like `_.difference` without support + * for excluding multiple arrays or iteratee shorthands. + * + * @private + * @param {Array} array The array to inspect. + * @param {Array} values The values to exclude. + * @param {Function} [iteratee] The iteratee invoked per element. + * @param {Function} [comparator] The comparator invoked per element. + * @returns {Array} Returns the new array of filtered values. + */ + function baseDifference(array, values, iteratee, comparator) { + var index = -1, + includes = arrayIncludes, + isCommon = true, + length = array.length, + result = [], + valuesLength = values.length; + + if (!length) { + return result; + } + if (iteratee) { + values = arrayMap(values, baseUnary(iteratee)); + } + if (comparator) { + includes = arrayIncludesWith; + isCommon = false; + } + else if (values.length >= LARGE_ARRAY_SIZE) { + includes = cacheHas; + isCommon = false; + values = new SetCache(values); + } + outer: + while (++index < length) { + var value = array[index], + computed = iteratee == null ? value : iteratee(value); + + value = (comparator || value !== 0) ? value : 0; + if (isCommon && computed === computed) { + var valuesIndex = valuesLength; + while (valuesIndex--) { + if (values[valuesIndex] === computed) { + continue outer; + } + } + result.push(value); + } + else if (!includes(values, computed, comparator)) { + result.push(value); + } + } + return result; + } + + /** + * The base implementation of `_.forEach` without support for iteratee shorthands. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array|Object} Returns `collection`. + */ + var baseEach = createBaseEach(baseForOwn); + + /** + * The base implementation of `_.forEachRight` without support for iteratee shorthands. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array|Object} Returns `collection`. + */ + var baseEachRight = createBaseEach(baseForOwnRight, true); + + /** + * The base implementation of `_.every` without support for iteratee shorthands. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} predicate The function invoked per iteration. + * @returns {boolean} Returns `true` if all elements pass the predicate check, + * else `false` + */ + function baseEvery(collection, predicate) { + var result = true; + baseEach(collection, function(value, index, collection) { + result = !!predicate(value, index, collection); + return result; + }); + return result; + } + + /** + * The base implementation of methods like `_.max` and `_.min` which accepts a + * `comparator` to determine the extremum value. + * + * @private + * @param {Array} array The array to iterate over. + * @param {Function} iteratee The iteratee invoked per iteration. + * @param {Function} comparator The comparator used to compare values. + * @returns {*} Returns the extremum value. + */ + function baseExtremum(array, iteratee, comparator) { + var index = -1, + length = array.length; + + while (++index < length) { + var value = array[index], + current = iteratee(value); + + if (current != null && (computed === undefined + ? (current === current && !isSymbol(current)) + : comparator(current, computed) + )) { + var computed = current, + result = value; + } + } + return result; + } + + /** + * The base implementation of `_.fill` without an iteratee call guard. + * + * @private + * @param {Array} array The array to fill. + * @param {*} value The value to fill `array` with. + * @param {number} [start=0] The start position. + * @param {number} [end=array.length] The end position. + * @returns {Array} Returns `array`. + */ + function baseFill(array, value, start, end) { + var length = array.length; + + start = toInteger(start); + if (start < 0) { + start = -start > length ? 0 : (length + start); + } + end = (end === undefined || end > length) ? length : toInteger(end); + if (end < 0) { + end += length; + } + end = start > end ? 0 : toLength(end); + while (start < end) { + array[start++] = value; + } + return array; + } + + /** + * The base implementation of `_.filter` without support for iteratee shorthands. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} predicate The function invoked per iteration. + * @returns {Array} Returns the new filtered array. + */ + function baseFilter(collection, predicate) { + var result = []; + baseEach(collection, function(value, index, collection) { + if (predicate(value, index, collection)) { + result.push(value); + } + }); + return result; + } + + /** + * The base implementation of `_.flatten` with support for restricting flattening. + * + * @private + * @param {Array} array The array to flatten. + * @param {number} depth The maximum recursion depth. + * @param {boolean} [predicate=isFlattenable] The function invoked per iteration. + * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks. + * @param {Array} [result=[]] The initial result value. + * @returns {Array} Returns the new flattened array. + */ + function baseFlatten(array, depth, predicate, isStrict, result) { + var index = -1, + length = array.length; + + predicate || (predicate = isFlattenable); + result || (result = []); + + while (++index < length) { + var value = array[index]; + if (depth > 0 && predicate(value)) { + if (depth > 1) { + // Recursively flatten arrays (susceptible to call stack limits). + baseFlatten(value, depth - 1, predicate, isStrict, result); + } else { + arrayPush(result, value); + } + } else if (!isStrict) { + result[result.length] = value; + } + } + return result; + } + + /** + * The base implementation of `baseForOwn` which iterates over `object` + * properties returned by `keysFunc` and invokes `iteratee` for each property. + * Iteratee functions may exit iteration early by explicitly returning `false`. + * + * @private + * @param {Object} object The object to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @param {Function} keysFunc The function to get the keys of `object`. + * @returns {Object} Returns `object`. + */ + var baseFor = createBaseFor(); + + /** + * This function is like `baseFor` except that it iterates over properties + * in the opposite order. + * + * @private + * @param {Object} object The object to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @param {Function} keysFunc The function to get the keys of `object`. + * @returns {Object} Returns `object`. + */ + var baseForRight = createBaseFor(true); + + /** + * The base implementation of `_.forOwn` without support for iteratee shorthands. + * + * @private + * @param {Object} object The object to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Object} Returns `object`. + */ + function baseForOwn(object, iteratee) { + return object && baseFor(object, iteratee, keys); + } + + /** + * The base implementation of `_.forOwnRight` without support for iteratee shorthands. + * + * @private + * @param {Object} object The object to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Object} Returns `object`. + */ + function baseForOwnRight(object, iteratee) { + return object && baseForRight(object, iteratee, keys); + } + + /** + * The base implementation of `_.functions` which creates an array of + * `object` function property names filtered from `props`. + * + * @private + * @param {Object} object The object to inspect. + * @param {Array} props The property names to filter. + * @returns {Array} Returns the function names. + */ + function baseFunctions(object, props) { + return arrayFilter(props, function(key) { + return isFunction(object[key]); + }); + } + + /** + * The base implementation of `_.get` without support for default values. + * + * @private + * @param {Object} object The object to query. + * @param {Array|string} path The path of the property to get. + * @returns {*} Returns the resolved value. + */ + function baseGet(object, path) { + path = castPath(path, object); + + var index = 0, + length = path.length; + + while (object != null && index < length) { + object = object[toKey(path[index++])]; + } + return (index && index == length) ? object : undefined; + } + + /** + * The base implementation of `getAllKeys` and `getAllKeysIn` which uses + * `keysFunc` and `symbolsFunc` to get the enumerable property names and + * symbols of `object`. + * + * @private + * @param {Object} object The object to query. + * @param {Function} keysFunc The function to get the keys of `object`. + * @param {Function} symbolsFunc The function to get the symbols of `object`. + * @returns {Array} Returns the array of property names and symbols. + */ + function baseGetAllKeys(object, keysFunc, symbolsFunc) { + var result = keysFunc(object); + return isArray(object) ? result : arrayPush(result, symbolsFunc(object)); + } + + /** + * The base implementation of `getTag` without fallbacks for buggy environments. + * + * @private + * @param {*} value The value to query. + * @returns {string} Returns the `toStringTag`. + */ + function baseGetTag(value) { + if (value == null) { + return value === undefined ? undefinedTag : nullTag; + } + return (symToStringTag && symToStringTag in Object(value)) + ? getRawTag(value) + : objectToString(value); + } + + /** + * The base implementation of `_.gt` which doesn't coerce arguments. + * + * @private + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if `value` is greater than `other`, + * else `false`. + */ + function baseGt(value, other) { + return value > other; + } + + /** + * The base implementation of `_.has` without support for deep paths. + * + * @private + * @param {Object} [object] The object to query. + * @param {Array|string} key The key to check. + * @returns {boolean} Returns `true` if `key` exists, else `false`. + */ + function baseHas(object, key) { + return object != null && hasOwnProperty.call(object, key); + } + + /** + * The base implementation of `_.hasIn` without support for deep paths. + * + * @private + * @param {Object} [object] The object to query. + * @param {Array|string} key The key to check. + * @returns {boolean} Returns `true` if `key` exists, else `false`. + */ + function baseHasIn(object, key) { + return object != null && key in Object(object); + } + + /** + * The base implementation of `_.inRange` which doesn't coerce arguments. + * + * @private + * @param {number} number The number to check. + * @param {number} start The start of the range. + * @param {number} end The end of the range. + * @returns {boolean} Returns `true` if `number` is in the range, else `false`. + */ + function baseInRange(number, start, end) { + return number >= nativeMin(start, end) && number < nativeMax(start, end); + } + + /** + * The base implementation of methods like `_.intersection`, without support + * for iteratee shorthands, that accepts an array of arrays to inspect. + * + * @private + * @param {Array} arrays The arrays to inspect. + * @param {Function} [iteratee] The iteratee invoked per element. + * @param {Function} [comparator] The comparator invoked per element. + * @returns {Array} Returns the new array of shared values. + */ + function baseIntersection(arrays, iteratee, comparator) { + var includes = comparator ? arrayIncludesWith : arrayIncludes, + length = arrays[0].length, + othLength = arrays.length, + othIndex = othLength, + caches = Array(othLength), + maxLength = Infinity, + result = []; + + while (othIndex--) { + var array = arrays[othIndex]; + if (othIndex && iteratee) { + array = arrayMap(array, baseUnary(iteratee)); + } + maxLength = nativeMin(array.length, maxLength); + caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120)) + ? new SetCache(othIndex && array) + : undefined; + } + array = arrays[0]; + + var index = -1, + seen = caches[0]; + + outer: + while (++index < length && result.length < maxLength) { + var value = array[index], + computed = iteratee ? iteratee(value) : value; + + value = (comparator || value !== 0) ? value : 0; + if (!(seen + ? cacheHas(seen, computed) + : includes(result, computed, comparator) + )) { + othIndex = othLength; + while (--othIndex) { + var cache = caches[othIndex]; + if (!(cache + ? cacheHas(cache, computed) + : includes(arrays[othIndex], computed, comparator)) + ) { + continue outer; + } + } + if (seen) { + seen.push(computed); + } + result.push(value); + } + } + return result; + } + + /** + * The base implementation of `_.invert` and `_.invertBy` which inverts + * `object` with values transformed by `iteratee` and set by `setter`. + * + * @private + * @param {Object} object The object to iterate over. + * @param {Function} setter The function to set `accumulator` values. + * @param {Function} iteratee The iteratee to transform values. + * @param {Object} accumulator The initial inverted object. + * @returns {Function} Returns `accumulator`. + */ + function baseInverter(object, setter, iteratee, accumulator) { + baseForOwn(object, function(value, key, object) { + setter(accumulator, iteratee(value), key, object); + }); + return accumulator; + } + + /** + * The base implementation of `_.invoke` without support for individual + * method arguments. + * + * @private + * @param {Object} object The object to query. + * @param {Array|string} path The path of the method to invoke. + * @param {Array} args The arguments to invoke the method with. + * @returns {*} Returns the result of the invoked method. + */ + function baseInvoke(object, path, args) { + path = castPath(path, object); + object = parent(object, path); + var func = object == null ? object : object[toKey(last(path))]; + return func == null ? undefined : apply(func, object, args); + } + + /** + * The base implementation of `_.isArguments`. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an `arguments` object, + */ + function baseIsArguments(value) { + return isObjectLike(value) && baseGetTag(value) == argsTag; + } + + /** + * The base implementation of `_.isArrayBuffer` without Node.js optimizations. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`. + */ + function baseIsArrayBuffer(value) { + return isObjectLike(value) && baseGetTag(value) == arrayBufferTag; + } + + /** + * The base implementation of `_.isDate` without Node.js optimizations. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a date object, else `false`. + */ + function baseIsDate(value) { + return isObjectLike(value) && baseGetTag(value) == dateTag; + } + + /** + * The base implementation of `_.isEqual` which supports partial comparisons + * and tracks traversed objects. + * + * @private + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @param {boolean} bitmask The bitmask flags. + * 1 - Unordered comparison + * 2 - Partial comparison + * @param {Function} [customizer] The function to customize comparisons. + * @param {Object} [stack] Tracks traversed `value` and `other` objects. + * @returns {boolean} Returns `true` if the values are equivalent, else `false`. + */ + function baseIsEqual(value, other, bitmask, customizer, stack) { + if (value === other) { + return true; + } + if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) { + return value !== value && other !== other; + } + return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack); + } + + /** + * A specialized version of `baseIsEqual` for arrays and objects which performs + * deep comparisons and tracks traversed objects enabling objects with circular + * references to be compared. + * + * @private + * @param {Object} object The object to compare. + * @param {Object} other The other object to compare. + * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. + * @param {Function} customizer The function to customize comparisons. + * @param {Function} equalFunc The function to determine equivalents of values. + * @param {Object} [stack] Tracks traversed `object` and `other` objects. + * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. + */ + function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) { + var objIsArr = isArray(object), + othIsArr = isArray(other), + objTag = objIsArr ? arrayTag : getTag(object), + othTag = othIsArr ? arrayTag : getTag(other); + + objTag = objTag == argsTag ? objectTag : objTag; + othTag = othTag == argsTag ? objectTag : othTag; + + var objIsObj = objTag == objectTag, + othIsObj = othTag == objectTag, + isSameTag = objTag == othTag; + + if (isSameTag && isBuffer(object)) { + if (!isBuffer(other)) { + return false; + } + objIsArr = true; + objIsObj = false; + } + if (isSameTag && !objIsObj) { + stack || (stack = new Stack); + return (objIsArr || isTypedArray(object)) + ? equalArrays(object, other, bitmask, customizer, equalFunc, stack) + : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack); + } + if (!(bitmask & COMPARE_PARTIAL_FLAG)) { + var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'), + othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__'); + + if (objIsWrapped || othIsWrapped) { + var objUnwrapped = objIsWrapped ? object.value() : object, + othUnwrapped = othIsWrapped ? other.value() : other; + + stack || (stack = new Stack); + return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack); + } + } + if (!isSameTag) { + return false; + } + stack || (stack = new Stack); + return equalObjects(object, other, bitmask, customizer, equalFunc, stack); + } + + /** + * The base implementation of `_.isMap` without Node.js optimizations. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a map, else `false`. + */ + function baseIsMap(value) { + return isObjectLike(value) && getTag(value) == mapTag; + } + + /** + * The base implementation of `_.isMatch` without support for iteratee shorthands. + * + * @private + * @param {Object} object The object to inspect. + * @param {Object} source The object of property values to match. + * @param {Array} matchData The property names, values, and compare flags to match. + * @param {Function} [customizer] The function to customize comparisons. + * @returns {boolean} Returns `true` if `object` is a match, else `false`. + */ + function baseIsMatch(object, source, matchData, customizer) { + var index = matchData.length, + length = index, + noCustomizer = !customizer; + + if (object == null) { + return !length; + } + object = Object(object); + while (index--) { + var data = matchData[index]; + if ((noCustomizer && data[2]) + ? data[1] !== object[data[0]] + : !(data[0] in object) + ) { + return false; + } + } + while (++index < length) { + data = matchData[index]; + var key = data[0], + objValue = object[key], + srcValue = data[1]; + + if (noCustomizer && data[2]) { + if (objValue === undefined && !(key in object)) { + return false; + } + } else { + var stack = new Stack; + if (customizer) { + var result = customizer(objValue, srcValue, key, object, source, stack); + } + if (!(result === undefined + ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack) + : result + )) { + return false; + } + } + } + return true; + } + + /** + * The base implementation of `_.isNative` without bad shim checks. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a native function, + * else `false`. + */ + function baseIsNative(value) { + if (!isObject(value) || isMasked(value)) { + return false; + } + var pattern = isFunction(value) ? reIsNative : reIsHostCtor; + return pattern.test(toSource(value)); + } + + /** + * The base implementation of `_.isRegExp` without Node.js optimizations. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a regexp, else `false`. + */ + function baseIsRegExp(value) { + return isObjectLike(value) && baseGetTag(value) == regexpTag; + } + + /** + * The base implementation of `_.isSet` without Node.js optimizations. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a set, else `false`. + */ + function baseIsSet(value) { + return isObjectLike(value) && getTag(value) == setTag; + } + + /** + * The base implementation of `_.isTypedArray` without Node.js optimizations. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a typed array, else `false`. + */ + function baseIsTypedArray(value) { + return isObjectLike(value) && + isLength(value.length) && !!typedArrayTags[baseGetTag(value)]; + } + + /** + * The base implementation of `_.iteratee`. + * + * @private + * @param {*} [value=_.identity] The value to convert to an iteratee. + * @returns {Function} Returns the iteratee. + */ + function baseIteratee(value) { + // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9. + // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details. + if (typeof value == 'function') { + return value; + } + if (value == null) { + return identity; + } + if (typeof value == 'object') { + return isArray(value) + ? baseMatchesProperty(value[0], value[1]) + : baseMatches(value); + } + return property(value); + } + + /** + * The base implementation of `_.keys` which doesn't treat sparse arrays as dense. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + */ + function baseKeys(object) { + if (!isPrototype(object)) { + return nativeKeys(object); + } + var result = []; + for (var key in Object(object)) { + if (hasOwnProperty.call(object, key) && key != 'constructor') { + result.push(key); + } + } + return result; + } + + /** + * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + */ + function baseKeysIn(object) { + if (!isObject(object)) { + return nativeKeysIn(object); + } + var isProto = isPrototype(object), + result = []; + + for (var key in object) { + if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) { + result.push(key); + } + } + return result; + } + + /** + * The base implementation of `_.lt` which doesn't coerce arguments. + * + * @private + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if `value` is less than `other`, + * else `false`. + */ + function baseLt(value, other) { + return value < other; + } + + /** + * The base implementation of `_.map` without support for iteratee shorthands. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array} Returns the new mapped array. + */ + function baseMap(collection, iteratee) { + var index = -1, + result = isArrayLike(collection) ? Array(collection.length) : []; + + baseEach(collection, function(value, key, collection) { + result[++index] = iteratee(value, key, collection); + }); + return result; + } + + /** + * The base implementation of `_.matches` which doesn't clone `source`. + * + * @private + * @param {Object} source The object of property values to match. + * @returns {Function} Returns the new spec function. + */ + function baseMatches(source) { + var matchData = getMatchData(source); + if (matchData.length == 1 && matchData[0][2]) { + return matchesStrictComparable(matchData[0][0], matchData[0][1]); + } + return function(object) { + return object === source || baseIsMatch(object, source, matchData); + }; + } + + /** + * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`. + * + * @private + * @param {string} path The path of the property to get. + * @param {*} srcValue The value to match. + * @returns {Function} Returns the new spec function. + */ + function baseMatchesProperty(path, srcValue) { + if (isKey(path) && isStrictComparable(srcValue)) { + return matchesStrictComparable(toKey(path), srcValue); + } + return function(object) { + var objValue = get(object, path); + return (objValue === undefined && objValue === srcValue) + ? hasIn(object, path) + : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG); + }; + } + + /** + * The base implementation of `_.merge` without support for multiple sources. + * + * @private + * @param {Object} object The destination object. + * @param {Object} source The source object. + * @param {number} srcIndex The index of `source`. + * @param {Function} [customizer] The function to customize merged values. + * @param {Object} [stack] Tracks traversed source values and their merged + * counterparts. + */ + function baseMerge(object, source, srcIndex, customizer, stack) { + if (object === source) { + return; + } + baseFor(source, function(srcValue, key) { + stack || (stack = new Stack); + if (isObject(srcValue)) { + baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack); + } + else { + var newValue = customizer + ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack) + : undefined; + + if (newValue === undefined) { + newValue = srcValue; + } + assignMergeValue(object, key, newValue); + } + }, keysIn); + } + + /** + * A specialized version of `baseMerge` for arrays and objects which performs + * deep merges and tracks traversed objects enabling objects with circular + * references to be merged. + * + * @private + * @param {Object} object The destination object. + * @param {Object} source The source object. + * @param {string} key The key of the value to merge. + * @param {number} srcIndex The index of `source`. + * @param {Function} mergeFunc The function to merge values. + * @param {Function} [customizer] The function to customize assigned values. + * @param {Object} [stack] Tracks traversed source values and their merged + * counterparts. + */ + function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) { + var objValue = safeGet(object, key), + srcValue = safeGet(source, key), + stacked = stack.get(srcValue); + + if (stacked) { + assignMergeValue(object, key, stacked); + return; + } + var newValue = customizer + ? customizer(objValue, srcValue, (key + ''), object, source, stack) + : undefined; + + var isCommon = newValue === undefined; + + if (isCommon) { + var isArr = isArray(srcValue), + isBuff = !isArr && isBuffer(srcValue), + isTyped = !isArr && !isBuff && isTypedArray(srcValue); + + newValue = srcValue; + if (isArr || isBuff || isTyped) { + if (isArray(objValue)) { + newValue = objValue; + } + else if (isArrayLikeObject(objValue)) { + newValue = copyArray(objValue); + } + else if (isBuff) { + isCommon = false; + newValue = cloneBuffer(srcValue, true); + } + else if (isTyped) { + isCommon = false; + newValue = cloneTypedArray(srcValue, true); + } + else { + newValue = []; + } + } + else if (isPlainObject(srcValue) || isArguments(srcValue)) { + newValue = objValue; + if (isArguments(objValue)) { + newValue = toPlainObject(objValue); + } + else if (!isObject(objValue) || isFunction(objValue)) { + newValue = initCloneObject(srcValue); + } + } + else { + isCommon = false; + } + } + if (isCommon) { + // Recursively merge objects and arrays (susceptible to call stack limits). + stack.set(srcValue, newValue); + mergeFunc(newValue, srcValue, srcIndex, customizer, stack); + stack['delete'](srcValue); + } + assignMergeValue(object, key, newValue); + } + + /** + * The base implementation of `_.nth` which doesn't coerce arguments. + * + * @private + * @param {Array} array The array to query. + * @param {number} n The index of the element to return. + * @returns {*} Returns the nth element of `array`. + */ + function baseNth(array, n) { + var length = array.length; + if (!length) { + return; + } + n += n < 0 ? length : 0; + return isIndex(n, length) ? array[n] : undefined; + } + + /** + * The base implementation of `_.orderBy` without param guards. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by. + * @param {string[]} orders The sort orders of `iteratees`. + * @returns {Array} Returns the new sorted array. + */ + function baseOrderBy(collection, iteratees, orders) { + if (iteratees.length) { + iteratees = arrayMap(iteratees, function(iteratee) { + if (isArray(iteratee)) { + return function(value) { + return baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee); + } + } + return iteratee; + }); + } else { + iteratees = [identity]; + } + + var index = -1; + iteratees = arrayMap(iteratees, baseUnary(getIteratee())); + + var result = baseMap(collection, function(value, key, collection) { + var criteria = arrayMap(iteratees, function(iteratee) { + return iteratee(value); + }); + return { 'criteria': criteria, 'index': ++index, 'value': value }; + }); + + return baseSortBy(result, function(object, other) { + return compareMultiple(object, other, orders); + }); + } + + /** + * The base implementation of `_.pick` without support for individual + * property identifiers. + * + * @private + * @param {Object} object The source object. + * @param {string[]} paths The property paths to pick. + * @returns {Object} Returns the new object. + */ + function basePick(object, paths) { + return basePickBy(object, paths, function(value, path) { + return hasIn(object, path); + }); + } + + /** + * The base implementation of `_.pickBy` without support for iteratee shorthands. + * + * @private + * @param {Object} object The source object. + * @param {string[]} paths The property paths to pick. + * @param {Function} predicate The function invoked per property. + * @returns {Object} Returns the new object. + */ + function basePickBy(object, paths, predicate) { + var index = -1, + length = paths.length, + result = {}; + + while (++index < length) { + var path = paths[index], + value = baseGet(object, path); + + if (predicate(value, path)) { + baseSet(result, castPath(path, object), value); + } + } + return result; + } + + /** + * A specialized version of `baseProperty` which supports deep paths. + * + * @private + * @param {Array|string} path The path of the property to get. + * @returns {Function} Returns the new accessor function. + */ + function basePropertyDeep(path) { + return function(object) { + return baseGet(object, path); + }; + } + + /** + * The base implementation of `_.pullAllBy` without support for iteratee + * shorthands. + * + * @private + * @param {Array} array The array to modify. + * @param {Array} values The values to remove. + * @param {Function} [iteratee] The iteratee invoked per element. + * @param {Function} [comparator] The comparator invoked per element. + * @returns {Array} Returns `array`. + */ + function basePullAll(array, values, iteratee, comparator) { + var indexOf = comparator ? baseIndexOfWith : baseIndexOf, + index = -1, + length = values.length, + seen = array; + + if (array === values) { + values = copyArray(values); + } + if (iteratee) { + seen = arrayMap(array, baseUnary(iteratee)); + } + while (++index < length) { + var fromIndex = 0, + value = values[index], + computed = iteratee ? iteratee(value) : value; + + while ((fromIndex = indexOf(seen, computed, fromIndex, comparator)) > -1) { + if (seen !== array) { + splice.call(seen, fromIndex, 1); + } + splice.call(array, fromIndex, 1); + } + } + return array; + } + + /** + * The base implementation of `_.pullAt` without support for individual + * indexes or capturing the removed elements. + * + * @private + * @param {Array} array The array to modify. + * @param {number[]} indexes The indexes of elements to remove. + * @returns {Array} Returns `array`. + */ + function basePullAt(array, indexes) { + var length = array ? indexes.length : 0, + lastIndex = length - 1; + + while (length--) { + var index = indexes[length]; + if (length == lastIndex || index !== previous) { + var previous = index; + if (isIndex(index)) { + splice.call(array, index, 1); + } else { + baseUnset(array, index); + } + } + } + return array; + } + + /** + * The base implementation of `_.random` without support for returning + * floating-point numbers. + * + * @private + * @param {number} lower The lower bound. + * @param {number} upper The upper bound. + * @returns {number} Returns the random number. + */ + function baseRandom(lower, upper) { + return lower + nativeFloor(nativeRandom() * (upper - lower + 1)); + } + + /** + * The base implementation of `_.range` and `_.rangeRight` which doesn't + * coerce arguments. + * + * @private + * @param {number} start The start of the range. + * @param {number} end The end of the range. + * @param {number} step The value to increment or decrement by. + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {Array} Returns the range of numbers. + */ + function baseRange(start, end, step, fromRight) { + var index = -1, + length = nativeMax(nativeCeil((end - start) / (step || 1)), 0), + result = Array(length); + + while (length--) { + result[fromRight ? length : ++index] = start; + start += step; + } + return result; + } + + /** + * The base implementation of `_.repeat` which doesn't coerce arguments. + * + * @private + * @param {string} string The string to repeat. + * @param {number} n The number of times to repeat the string. + * @returns {string} Returns the repeated string. + */ + function baseRepeat(string, n) { + var result = ''; + if (!string || n < 1 || n > MAX_SAFE_INTEGER) { + return result; + } + // Leverage the exponentiation by squaring algorithm for a faster repeat. + // See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details. + do { + if (n % 2) { + result += string; + } + n = nativeFloor(n / 2); + if (n) { + string += string; + } + } while (n); + + return result; + } + + /** + * The base implementation of `_.rest` which doesn't validate or coerce arguments. + * + * @private + * @param {Function} func The function to apply a rest parameter to. + * @param {number} [start=func.length-1] The start position of the rest parameter. + * @returns {Function} Returns the new function. + */ + function baseRest(func, start) { + return setToString(overRest(func, start, identity), func + ''); + } + + /** + * The base implementation of `_.sample`. + * + * @private + * @param {Array|Object} collection The collection to sample. + * @returns {*} Returns the random element. + */ + function baseSample(collection) { + return arraySample(values(collection)); + } + + /** + * The base implementation of `_.sampleSize` without param guards. + * + * @private + * @param {Array|Object} collection The collection to sample. + * @param {number} n The number of elements to sample. + * @returns {Array} Returns the random elements. + */ + function baseSampleSize(collection, n) { + var array = values(collection); + return shuffleSelf(array, baseClamp(n, 0, array.length)); + } + + /** + * The base implementation of `_.set`. + * + * @private + * @param {Object} object The object to modify. + * @param {Array|string} path The path of the property to set. + * @param {*} value The value to set. + * @param {Function} [customizer] The function to customize path creation. + * @returns {Object} Returns `object`. + */ + function baseSet(object, path, value, customizer) { + if (!isObject(object)) { + return object; + } + path = castPath(path, object); + + var index = -1, + length = path.length, + lastIndex = length - 1, + nested = object; + + while (nested != null && ++index < length) { + var key = toKey(path[index]), + newValue = value; + + if (key === '__proto__' || key === 'constructor' || key === 'prototype') { + return object; + } + + if (index != lastIndex) { + var objValue = nested[key]; + newValue = customizer ? customizer(objValue, key, nested) : undefined; + if (newValue === undefined) { + newValue = isObject(objValue) + ? objValue + : (isIndex(path[index + 1]) ? [] : {}); + } + } + assignValue(nested, key, newValue); + nested = nested[key]; + } + return object; + } + + /** + * The base implementation of `setData` without support for hot loop shorting. + * + * @private + * @param {Function} func The function to associate metadata with. + * @param {*} data The metadata. + * @returns {Function} Returns `func`. + */ + var baseSetData = !metaMap ? identity : function(func, data) { + metaMap.set(func, data); + return func; + }; + + /** + * The base implementation of `setToString` without support for hot loop shorting. + * + * @private + * @param {Function} func The function to modify. + * @param {Function} string The `toString` result. + * @returns {Function} Returns `func`. + */ + var baseSetToString = !defineProperty ? identity : function(func, string) { + return defineProperty(func, 'toString', { + 'configurable': true, + 'enumerable': false, + 'value': constant(string), + 'writable': true + }); + }; + + /** + * The base implementation of `_.shuffle`. + * + * @private + * @param {Array|Object} collection The collection to shuffle. + * @returns {Array} Returns the new shuffled array. + */ + function baseShuffle(collection) { + return shuffleSelf(values(collection)); + } + + /** + * The base implementation of `_.slice` without an iteratee call guard. + * + * @private + * @param {Array} array The array to slice. + * @param {number} [start=0] The start position. + * @param {number} [end=array.length] The end position. + * @returns {Array} Returns the slice of `array`. + */ + function baseSlice(array, start, end) { + var index = -1, + length = array.length; + + if (start < 0) { + start = -start > length ? 0 : (length + start); + } + end = end > length ? length : end; + if (end < 0) { + end += length; + } + length = start > end ? 0 : ((end - start) >>> 0); + start >>>= 0; + + var result = Array(length); + while (++index < length) { + result[index] = array[index + start]; + } + return result; + } + + /** + * The base implementation of `_.some` without support for iteratee shorthands. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} predicate The function invoked per iteration. + * @returns {boolean} Returns `true` if any element passes the predicate check, + * else `false`. + */ + function baseSome(collection, predicate) { + var result; + + baseEach(collection, function(value, index, collection) { + result = predicate(value, index, collection); + return !result; + }); + return !!result; + } + + /** + * The base implementation of `_.sortedIndex` and `_.sortedLastIndex` which + * performs a binary search of `array` to determine the index at which `value` + * should be inserted into `array` in order to maintain its sort order. + * + * @private + * @param {Array} array The sorted array to inspect. + * @param {*} value The value to evaluate. + * @param {boolean} [retHighest] Specify returning the highest qualified index. + * @returns {number} Returns the index at which `value` should be inserted + * into `array`. + */ + function baseSortedIndex(array, value, retHighest) { + var low = 0, + high = array == null ? low : array.length; + + if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) { + while (low < high) { + var mid = (low + high) >>> 1, + computed = array[mid]; + + if (computed !== null && !isSymbol(computed) && + (retHighest ? (computed <= value) : (computed < value))) { + low = mid + 1; + } else { + high = mid; + } + } + return high; + } + return baseSortedIndexBy(array, value, identity, retHighest); + } + + /** + * The base implementation of `_.sortedIndexBy` and `_.sortedLastIndexBy` + * which invokes `iteratee` for `value` and each element of `array` to compute + * their sort ranking. The iteratee is invoked with one argument; (value). + * + * @private + * @param {Array} array The sorted array to inspect. + * @param {*} value The value to evaluate. + * @param {Function} iteratee The iteratee invoked per element. + * @param {boolean} [retHighest] Specify returning the highest qualified index. + * @returns {number} Returns the index at which `value` should be inserted + * into `array`. + */ + function baseSortedIndexBy(array, value, iteratee, retHighest) { + var low = 0, + high = array == null ? 0 : array.length; + if (high === 0) { + return 0; + } + + value = iteratee(value); + var valIsNaN = value !== value, + valIsNull = value === null, + valIsSymbol = isSymbol(value), + valIsUndefined = value === undefined; + + while (low < high) { + var mid = nativeFloor((low + high) / 2), + computed = iteratee(array[mid]), + othIsDefined = computed !== undefined, + othIsNull = computed === null, + othIsReflexive = computed === computed, + othIsSymbol = isSymbol(computed); + + if (valIsNaN) { + var setLow = retHighest || othIsReflexive; + } else if (valIsUndefined) { + setLow = othIsReflexive && (retHighest || othIsDefined); + } else if (valIsNull) { + setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull); + } else if (valIsSymbol) { + setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol); + } else if (othIsNull || othIsSymbol) { + setLow = false; + } else { + setLow = retHighest ? (computed <= value) : (computed < value); + } + if (setLow) { + low = mid + 1; + } else { + high = mid; + } + } + return nativeMin(high, MAX_ARRAY_INDEX); + } + + /** + * The base implementation of `_.sortedUniq` and `_.sortedUniqBy` without + * support for iteratee shorthands. + * + * @private + * @param {Array} array The array to inspect. + * @param {Function} [iteratee] The iteratee invoked per element. + * @returns {Array} Returns the new duplicate free array. + */ + function baseSortedUniq(array, iteratee) { + var index = -1, + length = array.length, + resIndex = 0, + result = []; + + while (++index < length) { + var value = array[index], + computed = iteratee ? iteratee(value) : value; + + if (!index || !eq(computed, seen)) { + var seen = computed; + result[resIndex++] = value === 0 ? 0 : value; + } + } + return result; + } + + /** + * The base implementation of `_.toNumber` which doesn't ensure correct + * conversions of binary, hexadecimal, or octal string values. + * + * @private + * @param {*} value The value to process. + * @returns {number} Returns the number. + */ + function baseToNumber(value) { + if (typeof value == 'number') { + return value; + } + if (isSymbol(value)) { + return NAN; + } + return +value; + } + + /** + * The base implementation of `_.toString` which doesn't convert nullish + * values to empty strings. + * + * @private + * @param {*} value The value to process. + * @returns {string} Returns the string. + */ + function baseToString(value) { + // Exit early for strings to avoid a performance hit in some environments. + if (typeof value == 'string') { + return value; + } + if (isArray(value)) { + // Recursively convert values (susceptible to call stack limits). + return arrayMap(value, baseToString) + ''; + } + if (isSymbol(value)) { + return symbolToString ? symbolToString.call(value) : ''; + } + var result = (value + ''); + return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result; + } + + /** + * The base implementation of `_.uniqBy` without support for iteratee shorthands. + * + * @private + * @param {Array} array The array to inspect. + * @param {Function} [iteratee] The iteratee invoked per element. + * @param {Function} [comparator] The comparator invoked per element. + * @returns {Array} Returns the new duplicate free array. + */ + function baseUniq(array, iteratee, comparator) { + var index = -1, + includes = arrayIncludes, + length = array.length, + isCommon = true, + result = [], + seen = result; + + if (comparator) { + isCommon = false; + includes = arrayIncludesWith; + } + else if (length >= LARGE_ARRAY_SIZE) { + var set = iteratee ? null : createSet(array); + if (set) { + return setToArray(set); + } + isCommon = false; + includes = cacheHas; + seen = new SetCache; + } + else { + seen = iteratee ? [] : result; + } + outer: + while (++index < length) { + var value = array[index], + computed = iteratee ? iteratee(value) : value; + + value = (comparator || value !== 0) ? value : 0; + if (isCommon && computed === computed) { + var seenIndex = seen.length; + while (seenIndex--) { + if (seen[seenIndex] === computed) { + continue outer; + } + } + if (iteratee) { + seen.push(computed); + } + result.push(value); + } + else if (!includes(seen, computed, comparator)) { + if (seen !== result) { + seen.push(computed); + } + result.push(value); + } + } + return result; + } + + /** + * The base implementation of `_.unset`. + * + * @private + * @param {Object} object The object to modify. + * @param {Array|string} path The property path to unset. + * @returns {boolean} Returns `true` if the property is deleted, else `false`. + */ + function baseUnset(object, path) { + path = castPath(path, object); + object = parent(object, path); + return object == null || delete object[toKey(last(path))]; + } + + /** + * The base implementation of `_.update`. + * + * @private + * @param {Object} object The object to modify. + * @param {Array|string} path The path of the property to update. + * @param {Function} updater The function to produce the updated value. + * @param {Function} [customizer] The function to customize path creation. + * @returns {Object} Returns `object`. + */ + function baseUpdate(object, path, updater, customizer) { + return baseSet(object, path, updater(baseGet(object, path)), customizer); + } + + /** + * The base implementation of methods like `_.dropWhile` and `_.takeWhile` + * without support for iteratee shorthands. + * + * @private + * @param {Array} array The array to query. + * @param {Function} predicate The function invoked per iteration. + * @param {boolean} [isDrop] Specify dropping elements instead of taking them. + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {Array} Returns the slice of `array`. + */ + function baseWhile(array, predicate, isDrop, fromRight) { + var length = array.length, + index = fromRight ? length : -1; + + while ((fromRight ? index-- : ++index < length) && + predicate(array[index], index, array)) {} + + return isDrop + ? baseSlice(array, (fromRight ? 0 : index), (fromRight ? index + 1 : length)) + : baseSlice(array, (fromRight ? index + 1 : 0), (fromRight ? length : index)); + } + + /** + * The base implementation of `wrapperValue` which returns the result of + * performing a sequence of actions on the unwrapped `value`, where each + * successive action is supplied the return value of the previous. + * + * @private + * @param {*} value The unwrapped value. + * @param {Array} actions Actions to perform to resolve the unwrapped value. + * @returns {*} Returns the resolved value. + */ + function baseWrapperValue(value, actions) { + var result = value; + if (result instanceof LazyWrapper) { + result = result.value(); + } + return arrayReduce(actions, function(result, action) { + return action.func.apply(action.thisArg, arrayPush([result], action.args)); + }, result); + } + + /** + * The base implementation of methods like `_.xor`, without support for + * iteratee shorthands, that accepts an array of arrays to inspect. + * + * @private + * @param {Array} arrays The arrays to inspect. + * @param {Function} [iteratee] The iteratee invoked per element. + * @param {Function} [comparator] The comparator invoked per element. + * @returns {Array} Returns the new array of values. + */ + function baseXor(arrays, iteratee, comparator) { + var length = arrays.length; + if (length < 2) { + return length ? baseUniq(arrays[0]) : []; + } + var index = -1, + result = Array(length); + + while (++index < length) { + var array = arrays[index], + othIndex = -1; + + while (++othIndex < length) { + if (othIndex != index) { + result[index] = baseDifference(result[index] || array, arrays[othIndex], iteratee, comparator); + } + } + } + return baseUniq(baseFlatten(result, 1), iteratee, comparator); + } + + /** + * This base implementation of `_.zipObject` which assigns values using `assignFunc`. + * + * @private + * @param {Array} props The property identifiers. + * @param {Array} values The property values. + * @param {Function} assignFunc The function to assign values. + * @returns {Object} Returns the new object. + */ + function baseZipObject(props, values, assignFunc) { + var index = -1, + length = props.length, + valsLength = values.length, + result = {}; + + while (++index < length) { + var value = index < valsLength ? values[index] : undefined; + assignFunc(result, props[index], value); + } + return result; + } + + /** + * Casts `value` to an empty array if it's not an array like object. + * + * @private + * @param {*} value The value to inspect. + * @returns {Array|Object} Returns the cast array-like object. + */ + function castArrayLikeObject(value) { + return isArrayLikeObject(value) ? value : []; + } + + /** + * Casts `value` to `identity` if it's not a function. + * + * @private + * @param {*} value The value to inspect. + * @returns {Function} Returns cast function. + */ + function castFunction(value) { + return typeof value == 'function' ? value : identity; + } + + /** + * Casts `value` to a path array if it's not one. + * + * @private + * @param {*} value The value to inspect. + * @param {Object} [object] The object to query keys on. + * @returns {Array} Returns the cast property path array. + */ + function castPath(value, object) { + if (isArray(value)) { + return value; + } + return isKey(value, object) ? [value] : stringToPath(toString(value)); + } + + /** + * A `baseRest` alias which can be replaced with `identity` by module + * replacement plugins. + * + * @private + * @type {Function} + * @param {Function} func The function to apply a rest parameter to. + * @returns {Function} Returns the new function. + */ + var castRest = baseRest; + + /** + * Casts `array` to a slice if it's needed. + * + * @private + * @param {Array} array The array to inspect. + * @param {number} start The start position. + * @param {number} [end=array.length] The end position. + * @returns {Array} Returns the cast slice. + */ + function castSlice(array, start, end) { + var length = array.length; + end = end === undefined ? length : end; + return (!start && end >= length) ? array : baseSlice(array, start, end); + } + + /** + * A simple wrapper around the global [`clearTimeout`](https://mdn.io/clearTimeout). + * + * @private + * @param {number|Object} id The timer id or timeout object of the timer to clear. + */ + var clearTimeout = ctxClearTimeout || function(id) { + return root.clearTimeout(id); + }; + + /** + * Creates a clone of `buffer`. + * + * @private + * @param {Buffer} buffer The buffer to clone. + * @param {boolean} [isDeep] Specify a deep clone. + * @returns {Buffer} Returns the cloned buffer. + */ + function cloneBuffer(buffer, isDeep) { + if (isDeep) { + return buffer.slice(); + } + var length = buffer.length, + result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length); + + buffer.copy(result); + return result; + } + + /** + * Creates a clone of `arrayBuffer`. + * + * @private + * @param {ArrayBuffer} arrayBuffer The array buffer to clone. + * @returns {ArrayBuffer} Returns the cloned array buffer. + */ + function cloneArrayBuffer(arrayBuffer) { + var result = new arrayBuffer.constructor(arrayBuffer.byteLength); + new Uint8Array(result).set(new Uint8Array(arrayBuffer)); + return result; + } + + /** + * Creates a clone of `dataView`. + * + * @private + * @param {Object} dataView The data view to clone. + * @param {boolean} [isDeep] Specify a deep clone. + * @returns {Object} Returns the cloned data view. + */ + function cloneDataView(dataView, isDeep) { + var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer; + return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength); + } + + /** + * Creates a clone of `regexp`. + * + * @private + * @param {Object} regexp The regexp to clone. + * @returns {Object} Returns the cloned regexp. + */ + function cloneRegExp(regexp) { + var result = new regexp.constructor(regexp.source, reFlags.exec(regexp)); + result.lastIndex = regexp.lastIndex; + return result; + } + + /** + * Creates a clone of the `symbol` object. + * + * @private + * @param {Object} symbol The symbol object to clone. + * @returns {Object} Returns the cloned symbol object. + */ + function cloneSymbol(symbol) { + return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {}; + } + + /** + * Creates a clone of `typedArray`. + * + * @private + * @param {Object} typedArray The typed array to clone. + * @param {boolean} [isDeep] Specify a deep clone. + * @returns {Object} Returns the cloned typed array. + */ + function cloneTypedArray(typedArray, isDeep) { + var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer; + return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length); + } + + /** + * Compares values to sort them in ascending order. + * + * @private + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {number} Returns the sort order indicator for `value`. + */ + function compareAscending(value, other) { + if (value !== other) { + var valIsDefined = value !== undefined, + valIsNull = value === null, + valIsReflexive = value === value, + valIsSymbol = isSymbol(value); + + var othIsDefined = other !== undefined, + othIsNull = other === null, + othIsReflexive = other === other, + othIsSymbol = isSymbol(other); + + if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) || + (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) || + (valIsNull && othIsDefined && othIsReflexive) || + (!valIsDefined && othIsReflexive) || + !valIsReflexive) { + return 1; + } + if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) || + (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) || + (othIsNull && valIsDefined && valIsReflexive) || + (!othIsDefined && valIsReflexive) || + !othIsReflexive) { + return -1; + } + } + return 0; + } + + /** + * Used by `_.orderBy` to compare multiple properties of a value to another + * and stable sort them. + * + * If `orders` is unspecified, all values are sorted in ascending order. Otherwise, + * specify an order of "desc" for descending or "asc" for ascending sort order + * of corresponding values. + * + * @private + * @param {Object} object The object to compare. + * @param {Object} other The other object to compare. + * @param {boolean[]|string[]} orders The order to sort by for each property. + * @returns {number} Returns the sort order indicator for `object`. + */ + function compareMultiple(object, other, orders) { + var index = -1, + objCriteria = object.criteria, + othCriteria = other.criteria, + length = objCriteria.length, + ordersLength = orders.length; + + while (++index < length) { + var result = compareAscending(objCriteria[index], othCriteria[index]); + if (result) { + if (index >= ordersLength) { + return result; + } + var order = orders[index]; + return result * (order == 'desc' ? -1 : 1); + } + } + // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications + // that causes it, under certain circumstances, to provide the same value for + // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247 + // for more details. + // + // This also ensures a stable sort in V8 and other engines. + // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details. + return object.index - other.index; + } + + /** + * Creates an array that is the composition of partially applied arguments, + * placeholders, and provided arguments into a single array of arguments. + * + * @private + * @param {Array} args The provided arguments. + * @param {Array} partials The arguments to prepend to those provided. + * @param {Array} holders The `partials` placeholder indexes. + * @params {boolean} [isCurried] Specify composing for a curried function. + * @returns {Array} Returns the new array of composed arguments. + */ + function composeArgs(args, partials, holders, isCurried) { + var argsIndex = -1, + argsLength = args.length, + holdersLength = holders.length, + leftIndex = -1, + leftLength = partials.length, + rangeLength = nativeMax(argsLength - holdersLength, 0), + result = Array(leftLength + rangeLength), + isUncurried = !isCurried; + + while (++leftIndex < leftLength) { + result[leftIndex] = partials[leftIndex]; + } + while (++argsIndex < holdersLength) { + if (isUncurried || argsIndex < argsLength) { + result[holders[argsIndex]] = args[argsIndex]; + } + } + while (rangeLength--) { + result[leftIndex++] = args[argsIndex++]; + } + return result; + } + + /** + * This function is like `composeArgs` except that the arguments composition + * is tailored for `_.partialRight`. + * + * @private + * @param {Array} args The provided arguments. + * @param {Array} partials The arguments to append to those provided. + * @param {Array} holders The `partials` placeholder indexes. + * @params {boolean} [isCurried] Specify composing for a curried function. + * @returns {Array} Returns the new array of composed arguments. + */ + function composeArgsRight(args, partials, holders, isCurried) { + var argsIndex = -1, + argsLength = args.length, + holdersIndex = -1, + holdersLength = holders.length, + rightIndex = -1, + rightLength = partials.length, + rangeLength = nativeMax(argsLength - holdersLength, 0), + result = Array(rangeLength + rightLength), + isUncurried = !isCurried; + + while (++argsIndex < rangeLength) { + result[argsIndex] = args[argsIndex]; + } + var offset = argsIndex; + while (++rightIndex < rightLength) { + result[offset + rightIndex] = partials[rightIndex]; + } + while (++holdersIndex < holdersLength) { + if (isUncurried || argsIndex < argsLength) { + result[offset + holders[holdersIndex]] = args[argsIndex++]; + } + } + return result; + } + + /** + * Copies the values of `source` to `array`. + * + * @private + * @param {Array} source The array to copy values from. + * @param {Array} [array=[]] The array to copy values to. + * @returns {Array} Returns `array`. + */ + function copyArray(source, array) { + var index = -1, + length = source.length; + + array || (array = Array(length)); + while (++index < length) { + array[index] = source[index]; + } + return array; + } + + /** + * Copies properties of `source` to `object`. + * + * @private + * @param {Object} source The object to copy properties from. + * @param {Array} props The property identifiers to copy. + * @param {Object} [object={}] The object to copy properties to. + * @param {Function} [customizer] The function to customize copied values. + * @returns {Object} Returns `object`. + */ + function copyObject(source, props, object, customizer) { + var isNew = !object; + object || (object = {}); + + var index = -1, + length = props.length; + + while (++index < length) { + var key = props[index]; + + var newValue = customizer + ? customizer(object[key], source[key], key, object, source) + : undefined; + + if (newValue === undefined) { + newValue = source[key]; + } + if (isNew) { + baseAssignValue(object, key, newValue); + } else { + assignValue(object, key, newValue); + } + } + return object; + } + + /** + * Copies own symbols of `source` to `object`. + * + * @private + * @param {Object} source The object to copy symbols from. + * @param {Object} [object={}] The object to copy symbols to. + * @returns {Object} Returns `object`. + */ + function copySymbols(source, object) { + return copyObject(source, getSymbols(source), object); + } + + /** + * Copies own and inherited symbols of `source` to `object`. + * + * @private + * @param {Object} source The object to copy symbols from. + * @param {Object} [object={}] The object to copy symbols to. + * @returns {Object} Returns `object`. + */ + function copySymbolsIn(source, object) { + return copyObject(source, getSymbolsIn(source), object); + } + + /** + * Creates a function like `_.groupBy`. + * + * @private + * @param {Function} setter The function to set accumulator values. + * @param {Function} [initializer] The accumulator object initializer. + * @returns {Function} Returns the new aggregator function. + */ + function createAggregator(setter, initializer) { + return function(collection, iteratee) { + var func = isArray(collection) ? arrayAggregator : baseAggregator, + accumulator = initializer ? initializer() : {}; + + return func(collection, setter, getIteratee(iteratee, 2), accumulator); + }; + } + + /** + * Creates a function like `_.assign`. + * + * @private + * @param {Function} assigner The function to assign values. + * @returns {Function} Returns the new assigner function. + */ + function createAssigner(assigner) { + return baseRest(function(object, sources) { + var index = -1, + length = sources.length, + customizer = length > 1 ? sources[length - 1] : undefined, + guard = length > 2 ? sources[2] : undefined; + + customizer = (assigner.length > 3 && typeof customizer == 'function') + ? (length--, customizer) + : undefined; + + if (guard && isIterateeCall(sources[0], sources[1], guard)) { + customizer = length < 3 ? undefined : customizer; + length = 1; + } + object = Object(object); + while (++index < length) { + var source = sources[index]; + if (source) { + assigner(object, source, index, customizer); + } + } + return object; + }); + } + + /** + * Creates a `baseEach` or `baseEachRight` function. + * + * @private + * @param {Function} eachFunc The function to iterate over a collection. + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {Function} Returns the new base function. + */ + function createBaseEach(eachFunc, fromRight) { + return function(collection, iteratee) { + if (collection == null) { + return collection; + } + if (!isArrayLike(collection)) { + return eachFunc(collection, iteratee); + } + var length = collection.length, + index = fromRight ? length : -1, + iterable = Object(collection); + + while ((fromRight ? index-- : ++index < length)) { + if (iteratee(iterable[index], index, iterable) === false) { + break; + } + } + return collection; + }; + } + + /** + * Creates a base function for methods like `_.forIn` and `_.forOwn`. + * + * @private + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {Function} Returns the new base function. + */ + function createBaseFor(fromRight) { + return function(object, iteratee, keysFunc) { + var index = -1, + iterable = Object(object), + props = keysFunc(object), + length = props.length; + + while (length--) { + var key = props[fromRight ? length : ++index]; + if (iteratee(iterable[key], key, iterable) === false) { + break; + } + } + return object; + }; + } + + /** + * Creates a function that wraps `func` to invoke it with the optional `this` + * binding of `thisArg`. + * + * @private + * @param {Function} func The function to wrap. + * @param {number} bitmask The bitmask flags. See `createWrap` for more details. + * @param {*} [thisArg] The `this` binding of `func`. + * @returns {Function} Returns the new wrapped function. + */ + function createBind(func, bitmask, thisArg) { + var isBind = bitmask & WRAP_BIND_FLAG, + Ctor = createCtor(func); + + function wrapper() { + var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func; + return fn.apply(isBind ? thisArg : this, arguments); + } + return wrapper; + } + + /** + * Creates a function like `_.lowerFirst`. + * + * @private + * @param {string} methodName The name of the `String` case method to use. + * @returns {Function} Returns the new case function. + */ + function createCaseFirst(methodName) { + return function(string) { + string = toString(string); + + var strSymbols = hasUnicode(string) + ? stringToArray(string) + : undefined; + + var chr = strSymbols + ? strSymbols[0] + : string.charAt(0); + + var trailing = strSymbols + ? castSlice(strSymbols, 1).join('') + : string.slice(1); + + return chr[methodName]() + trailing; + }; + } + + /** + * Creates a function like `_.camelCase`. + * + * @private + * @param {Function} callback The function to combine each word. + * @returns {Function} Returns the new compounder function. + */ + function createCompounder(callback) { + return function(string) { + return arrayReduce(words(deburr(string).replace(reApos, '')), callback, ''); + }; + } + + /** + * Creates a function that produces an instance of `Ctor` regardless of + * whether it was invoked as part of a `new` expression or by `call` or `apply`. + * + * @private + * @param {Function} Ctor The constructor to wrap. + * @returns {Function} Returns the new wrapped function. + */ + function createCtor(Ctor) { + return function() { + // Use a `switch` statement to work with class constructors. See + // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist + // for more details. + var args = arguments; + switch (args.length) { + case 0: return new Ctor; + case 1: return new Ctor(args[0]); + case 2: return new Ctor(args[0], args[1]); + case 3: return new Ctor(args[0], args[1], args[2]); + case 4: return new Ctor(args[0], args[1], args[2], args[3]); + case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]); + case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]); + case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]); + } + var thisBinding = baseCreate(Ctor.prototype), + result = Ctor.apply(thisBinding, args); + + // Mimic the constructor's `return` behavior. + // See https://es5.github.io/#x13.2.2 for more details. + return isObject(result) ? result : thisBinding; + }; + } + + /** + * Creates a function that wraps `func` to enable currying. + * + * @private + * @param {Function} func The function to wrap. + * @param {number} bitmask The bitmask flags. See `createWrap` for more details. + * @param {number} arity The arity of `func`. + * @returns {Function} Returns the new wrapped function. + */ + function createCurry(func, bitmask, arity) { + var Ctor = createCtor(func); + + function wrapper() { + var length = arguments.length, + args = Array(length), + index = length, + placeholder = getHolder(wrapper); + + while (index--) { + args[index] = arguments[index]; + } + var holders = (length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder) + ? [] + : replaceHolders(args, placeholder); + + length -= holders.length; + if (length < arity) { + return createRecurry( + func, bitmask, createHybrid, wrapper.placeholder, undefined, + args, holders, undefined, undefined, arity - length); + } + var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func; + return apply(fn, this, args); + } + return wrapper; + } + + /** + * Creates a `_.find` or `_.findLast` function. + * + * @private + * @param {Function} findIndexFunc The function to find the collection index. + * @returns {Function} Returns the new find function. + */ + function createFind(findIndexFunc) { + return function(collection, predicate, fromIndex) { + var iterable = Object(collection); + if (!isArrayLike(collection)) { + var iteratee = getIteratee(predicate, 3); + collection = keys(collection); + predicate = function(key) { return iteratee(iterable[key], key, iterable); }; + } + var index = findIndexFunc(collection, predicate, fromIndex); + return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined; + }; + } + + /** + * Creates a `_.flow` or `_.flowRight` function. + * + * @private + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {Function} Returns the new flow function. + */ + function createFlow(fromRight) { + return flatRest(function(funcs) { + var length = funcs.length, + index = length, + prereq = LodashWrapper.prototype.thru; + + if (fromRight) { + funcs.reverse(); + } + while (index--) { + var func = funcs[index]; + if (typeof func != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + if (prereq && !wrapper && getFuncName(func) == 'wrapper') { + var wrapper = new LodashWrapper([], true); + } + } + index = wrapper ? index : length; + while (++index < length) { + func = funcs[index]; + + var funcName = getFuncName(func), + data = funcName == 'wrapper' ? getData(func) : undefined; + + if (data && isLaziable(data[0]) && + data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) && + !data[4].length && data[9] == 1 + ) { + wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]); + } else { + wrapper = (func.length == 1 && isLaziable(func)) + ? wrapper[funcName]() + : wrapper.thru(func); + } + } + return function() { + var args = arguments, + value = args[0]; + + if (wrapper && args.length == 1 && isArray(value)) { + return wrapper.plant(value).value(); + } + var index = 0, + result = length ? funcs[index].apply(this, args) : value; + + while (++index < length) { + result = funcs[index].call(this, result); + } + return result; + }; + }); + } + + /** + * Creates a function that wraps `func` to invoke it with optional `this` + * binding of `thisArg`, partial application, and currying. + * + * @private + * @param {Function|string} func The function or method name to wrap. + * @param {number} bitmask The bitmask flags. See `createWrap` for more details. + * @param {*} [thisArg] The `this` binding of `func`. + * @param {Array} [partials] The arguments to prepend to those provided to + * the new function. + * @param {Array} [holders] The `partials` placeholder indexes. + * @param {Array} [partialsRight] The arguments to append to those provided + * to the new function. + * @param {Array} [holdersRight] The `partialsRight` placeholder indexes. + * @param {Array} [argPos] The argument positions of the new function. + * @param {number} [ary] The arity cap of `func`. + * @param {number} [arity] The arity of `func`. + * @returns {Function} Returns the new wrapped function. + */ + function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) { + var isAry = bitmask & WRAP_ARY_FLAG, + isBind = bitmask & WRAP_BIND_FLAG, + isBindKey = bitmask & WRAP_BIND_KEY_FLAG, + isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG), + isFlip = bitmask & WRAP_FLIP_FLAG, + Ctor = isBindKey ? undefined : createCtor(func); + + function wrapper() { + var length = arguments.length, + args = Array(length), + index = length; + + while (index--) { + args[index] = arguments[index]; + } + if (isCurried) { + var placeholder = getHolder(wrapper), + holdersCount = countHolders(args, placeholder); + } + if (partials) { + args = composeArgs(args, partials, holders, isCurried); + } + if (partialsRight) { + args = composeArgsRight(args, partialsRight, holdersRight, isCurried); + } + length -= holdersCount; + if (isCurried && length < arity) { + var newHolders = replaceHolders(args, placeholder); + return createRecurry( + func, bitmask, createHybrid, wrapper.placeholder, thisArg, + args, newHolders, argPos, ary, arity - length + ); + } + var thisBinding = isBind ? thisArg : this, + fn = isBindKey ? thisBinding[func] : func; + + length = args.length; + if (argPos) { + args = reorder(args, argPos); + } else if (isFlip && length > 1) { + args.reverse(); + } + if (isAry && ary < length) { + args.length = ary; + } + if (this && this !== root && this instanceof wrapper) { + fn = Ctor || createCtor(fn); + } + return fn.apply(thisBinding, args); + } + return wrapper; + } + + /** + * Creates a function like `_.invertBy`. + * + * @private + * @param {Function} setter The function to set accumulator values. + * @param {Function} toIteratee The function to resolve iteratees. + * @returns {Function} Returns the new inverter function. + */ + function createInverter(setter, toIteratee) { + return function(object, iteratee) { + return baseInverter(object, setter, toIteratee(iteratee), {}); + }; + } + + /** + * Creates a function that performs a mathematical operation on two values. + * + * @private + * @param {Function} operator The function to perform the operation. + * @param {number} [defaultValue] The value used for `undefined` arguments. + * @returns {Function} Returns the new mathematical operation function. + */ + function createMathOperation(operator, defaultValue) { + return function(value, other) { + var result; + if (value === undefined && other === undefined) { + return defaultValue; + } + if (value !== undefined) { + result = value; + } + if (other !== undefined) { + if (result === undefined) { + return other; + } + if (typeof value == 'string' || typeof other == 'string') { + value = baseToString(value); + other = baseToString(other); + } else { + value = baseToNumber(value); + other = baseToNumber(other); + } + result = operator(value, other); + } + return result; + }; + } + + /** + * Creates a function like `_.over`. + * + * @private + * @param {Function} arrayFunc The function to iterate over iteratees. + * @returns {Function} Returns the new over function. + */ + function createOver(arrayFunc) { + return flatRest(function(iteratees) { + iteratees = arrayMap(iteratees, baseUnary(getIteratee())); + return baseRest(function(args) { + var thisArg = this; + return arrayFunc(iteratees, function(iteratee) { + return apply(iteratee, thisArg, args); + }); + }); + }); + } + + /** + * Creates the padding for `string` based on `length`. The `chars` string + * is truncated if the number of characters exceeds `length`. + * + * @private + * @param {number} length The padding length. + * @param {string} [chars=' '] The string used as padding. + * @returns {string} Returns the padding for `string`. + */ + function createPadding(length, chars) { + chars = chars === undefined ? ' ' : baseToString(chars); + + var charsLength = chars.length; + if (charsLength < 2) { + return charsLength ? baseRepeat(chars, length) : chars; + } + var result = baseRepeat(chars, nativeCeil(length / stringSize(chars))); + return hasUnicode(chars) + ? castSlice(stringToArray(result), 0, length).join('') + : result.slice(0, length); + } + + /** + * Creates a function that wraps `func` to invoke it with the `this` binding + * of `thisArg` and `partials` prepended to the arguments it receives. + * + * @private + * @param {Function} func The function to wrap. + * @param {number} bitmask The bitmask flags. See `createWrap` for more details. + * @param {*} thisArg The `this` binding of `func`. + * @param {Array} partials The arguments to prepend to those provided to + * the new function. + * @returns {Function} Returns the new wrapped function. + */ + function createPartial(func, bitmask, thisArg, partials) { + var isBind = bitmask & WRAP_BIND_FLAG, + Ctor = createCtor(func); + + function wrapper() { + var argsIndex = -1, + argsLength = arguments.length, + leftIndex = -1, + leftLength = partials.length, + args = Array(leftLength + argsLength), + fn = (this && this !== root && this instanceof wrapper) ? Ctor : func; + + while (++leftIndex < leftLength) { + args[leftIndex] = partials[leftIndex]; + } + while (argsLength--) { + args[leftIndex++] = arguments[++argsIndex]; + } + return apply(fn, isBind ? thisArg : this, args); + } + return wrapper; + } + + /** + * Creates a `_.range` or `_.rangeRight` function. + * + * @private + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {Function} Returns the new range function. + */ + function createRange(fromRight) { + return function(start, end, step) { + if (step && typeof step != 'number' && isIterateeCall(start, end, step)) { + end = step = undefined; + } + // Ensure the sign of `-0` is preserved. + start = toFinite(start); + if (end === undefined) { + end = start; + start = 0; + } else { + end = toFinite(end); + } + step = step === undefined ? (start < end ? 1 : -1) : toFinite(step); + return baseRange(start, end, step, fromRight); + }; + } + + /** + * Creates a function that performs a relational operation on two values. + * + * @private + * @param {Function} operator The function to perform the operation. + * @returns {Function} Returns the new relational operation function. + */ + function createRelationalOperation(operator) { + return function(value, other) { + if (!(typeof value == 'string' && typeof other == 'string')) { + value = toNumber(value); + other = toNumber(other); + } + return operator(value, other); + }; + } + + /** + * Creates a function that wraps `func` to continue currying. + * + * @private + * @param {Function} func The function to wrap. + * @param {number} bitmask The bitmask flags. See `createWrap` for more details. + * @param {Function} wrapFunc The function to create the `func` wrapper. + * @param {*} placeholder The placeholder value. + * @param {*} [thisArg] The `this` binding of `func`. + * @param {Array} [partials] The arguments to prepend to those provided to + * the new function. + * @param {Array} [holders] The `partials` placeholder indexes. + * @param {Array} [argPos] The argument positions of the new function. + * @param {number} [ary] The arity cap of `func`. + * @param {number} [arity] The arity of `func`. + * @returns {Function} Returns the new wrapped function. + */ + function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) { + var isCurry = bitmask & WRAP_CURRY_FLAG, + newHolders = isCurry ? holders : undefined, + newHoldersRight = isCurry ? undefined : holders, + newPartials = isCurry ? partials : undefined, + newPartialsRight = isCurry ? undefined : partials; + + bitmask |= (isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG); + bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG); + + if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) { + bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG); + } + var newData = [ + func, bitmask, thisArg, newPartials, newHolders, newPartialsRight, + newHoldersRight, argPos, ary, arity + ]; + + var result = wrapFunc.apply(undefined, newData); + if (isLaziable(func)) { + setData(result, newData); + } + result.placeholder = placeholder; + return setWrapToString(result, func, bitmask); + } + + /** + * Creates a function like `_.round`. + * + * @private + * @param {string} methodName The name of the `Math` method to use when rounding. + * @returns {Function} Returns the new round function. + */ + function createRound(methodName) { + var func = Math[methodName]; + return function(number, precision) { + number = toNumber(number); + precision = precision == null ? 0 : nativeMin(toInteger(precision), 292); + if (precision && nativeIsFinite(number)) { + // Shift with exponential notation to avoid floating-point issues. + // See [MDN](https://mdn.io/round#Examples) for more details. + var pair = (toString(number) + 'e').split('e'), + value = func(pair[0] + 'e' + (+pair[1] + precision)); + + pair = (toString(value) + 'e').split('e'); + return +(pair[0] + 'e' + (+pair[1] - precision)); + } + return func(number); + }; + } + + /** + * Creates a set object of `values`. + * + * @private + * @param {Array} values The values to add to the set. + * @returns {Object} Returns the new set. + */ + var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) { + return new Set(values); + }; + + /** + * Creates a `_.toPairs` or `_.toPairsIn` function. + * + * @private + * @param {Function} keysFunc The function to get the keys of a given object. + * @returns {Function} Returns the new pairs function. + */ + function createToPairs(keysFunc) { + return function(object) { + var tag = getTag(object); + if (tag == mapTag) { + return mapToArray(object); + } + if (tag == setTag) { + return setToPairs(object); + } + return baseToPairs(object, keysFunc(object)); + }; + } + + /** + * Creates a function that either curries or invokes `func` with optional + * `this` binding and partially applied arguments. + * + * @private + * @param {Function|string} func The function or method name to wrap. + * @param {number} bitmask The bitmask flags. + * 1 - `_.bind` + * 2 - `_.bindKey` + * 4 - `_.curry` or `_.curryRight` of a bound function + * 8 - `_.curry` + * 16 - `_.curryRight` + * 32 - `_.partial` + * 64 - `_.partialRight` + * 128 - `_.rearg` + * 256 - `_.ary` + * 512 - `_.flip` + * @param {*} [thisArg] The `this` binding of `func`. + * @param {Array} [partials] The arguments to be partially applied. + * @param {Array} [holders] The `partials` placeholder indexes. + * @param {Array} [argPos] The argument positions of the new function. + * @param {number} [ary] The arity cap of `func`. + * @param {number} [arity] The arity of `func`. + * @returns {Function} Returns the new wrapped function. + */ + function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) { + var isBindKey = bitmask & WRAP_BIND_KEY_FLAG; + if (!isBindKey && typeof func != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + var length = partials ? partials.length : 0; + if (!length) { + bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG); + partials = holders = undefined; + } + ary = ary === undefined ? ary : nativeMax(toInteger(ary), 0); + arity = arity === undefined ? arity : toInteger(arity); + length -= holders ? holders.length : 0; + + if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) { + var partialsRight = partials, + holdersRight = holders; + + partials = holders = undefined; + } + var data = isBindKey ? undefined : getData(func); + + var newData = [ + func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, + argPos, ary, arity + ]; + + if (data) { + mergeData(newData, data); + } + func = newData[0]; + bitmask = newData[1]; + thisArg = newData[2]; + partials = newData[3]; + holders = newData[4]; + arity = newData[9] = newData[9] === undefined + ? (isBindKey ? 0 : func.length) + : nativeMax(newData[9] - length, 0); + + if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) { + bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG); + } + if (!bitmask || bitmask == WRAP_BIND_FLAG) { + var result = createBind(func, bitmask, thisArg); + } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) { + result = createCurry(func, bitmask, arity); + } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) { + result = createPartial(func, bitmask, thisArg, partials); + } else { + result = createHybrid.apply(undefined, newData); + } + var setter = data ? baseSetData : setData; + return setWrapToString(setter(result, newData), func, bitmask); + } + + /** + * Used by `_.defaults` to customize its `_.assignIn` use to assign properties + * of source objects to the destination object for all destination properties + * that resolve to `undefined`. + * + * @private + * @param {*} objValue The destination value. + * @param {*} srcValue The source value. + * @param {string} key The key of the property to assign. + * @param {Object} object The parent object of `objValue`. + * @returns {*} Returns the value to assign. + */ + function customDefaultsAssignIn(objValue, srcValue, key, object) { + if (objValue === undefined || + (eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key))) { + return srcValue; + } + return objValue; + } + + /** + * Used by `_.defaultsDeep` to customize its `_.merge` use to merge source + * objects into destination objects that are passed thru. + * + * @private + * @param {*} objValue The destination value. + * @param {*} srcValue The source value. + * @param {string} key The key of the property to merge. + * @param {Object} object The parent object of `objValue`. + * @param {Object} source The parent object of `srcValue`. + * @param {Object} [stack] Tracks traversed source values and their merged + * counterparts. + * @returns {*} Returns the value to assign. + */ + function customDefaultsMerge(objValue, srcValue, key, object, source, stack) { + if (isObject(objValue) && isObject(srcValue)) { + // Recursively merge objects and arrays (susceptible to call stack limits). + stack.set(srcValue, objValue); + baseMerge(objValue, srcValue, undefined, customDefaultsMerge, stack); + stack['delete'](srcValue); + } + return objValue; + } + + /** + * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain + * objects. + * + * @private + * @param {*} value The value to inspect. + * @param {string} key The key of the property to inspect. + * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`. + */ + function customOmitClone(value) { + return isPlainObject(value) ? undefined : value; + } + + /** + * A specialized version of `baseIsEqualDeep` for arrays with support for + * partial deep comparisons. + * + * @private + * @param {Array} array The array to compare. + * @param {Array} other The other array to compare. + * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. + * @param {Function} customizer The function to customize comparisons. + * @param {Function} equalFunc The function to determine equivalents of values. + * @param {Object} stack Tracks traversed `array` and `other` objects. + * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`. + */ + function equalArrays(array, other, bitmask, customizer, equalFunc, stack) { + var isPartial = bitmask & COMPARE_PARTIAL_FLAG, + arrLength = array.length, + othLength = other.length; + + if (arrLength != othLength && !(isPartial && othLength > arrLength)) { + return false; + } + // Check that cyclic values are equal. + var arrStacked = stack.get(array); + var othStacked = stack.get(other); + if (arrStacked && othStacked) { + return arrStacked == other && othStacked == array; + } + var index = -1, + result = true, + seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined; + + stack.set(array, other); + stack.set(other, array); + + // Ignore non-index properties. + while (++index < arrLength) { + var arrValue = array[index], + othValue = other[index]; + + if (customizer) { + var compared = isPartial + ? customizer(othValue, arrValue, index, other, array, stack) + : customizer(arrValue, othValue, index, array, other, stack); + } + if (compared !== undefined) { + if (compared) { + continue; + } + result = false; + break; + } + // Recursively compare arrays (susceptible to call stack limits). + if (seen) { + if (!arraySome(other, function(othValue, othIndex) { + if (!cacheHas(seen, othIndex) && + (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) { + return seen.push(othIndex); + } + })) { + result = false; + break; + } + } else if (!( + arrValue === othValue || + equalFunc(arrValue, othValue, bitmask, customizer, stack) + )) { + result = false; + break; + } + } + stack['delete'](array); + stack['delete'](other); + return result; + } + + /** + * A specialized version of `baseIsEqualDeep` for comparing objects of + * the same `toStringTag`. + * + * **Note:** This function only supports comparing values with tags of + * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`. + * + * @private + * @param {Object} object The object to compare. + * @param {Object} other The other object to compare. + * @param {string} tag The `toStringTag` of the objects to compare. + * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. + * @param {Function} customizer The function to customize comparisons. + * @param {Function} equalFunc The function to determine equivalents of values. + * @param {Object} stack Tracks traversed `object` and `other` objects. + * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. + */ + function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) { + switch (tag) { + case dataViewTag: + if ((object.byteLength != other.byteLength) || + (object.byteOffset != other.byteOffset)) { + return false; + } + object = object.buffer; + other = other.buffer; + + case arrayBufferTag: + if ((object.byteLength != other.byteLength) || + !equalFunc(new Uint8Array(object), new Uint8Array(other))) { + return false; + } + return true; + + case boolTag: + case dateTag: + case numberTag: + // Coerce booleans to `1` or `0` and dates to milliseconds. + // Invalid dates are coerced to `NaN`. + return eq(+object, +other); + + case errorTag: + return object.name == other.name && object.message == other.message; + + case regexpTag: + case stringTag: + // Coerce regexes to strings and treat strings, primitives and objects, + // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring + // for more details. + return object == (other + ''); + + case mapTag: + var convert = mapToArray; + + case setTag: + var isPartial = bitmask & COMPARE_PARTIAL_FLAG; + convert || (convert = setToArray); + + if (object.size != other.size && !isPartial) { + return false; + } + // Assume cyclic values are equal. + var stacked = stack.get(object); + if (stacked) { + return stacked == other; + } + bitmask |= COMPARE_UNORDERED_FLAG; + + // Recursively compare objects (susceptible to call stack limits). + stack.set(object, other); + var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack); + stack['delete'](object); + return result; + + case symbolTag: + if (symbolValueOf) { + return symbolValueOf.call(object) == symbolValueOf.call(other); + } + } + return false; + } + + /** + * A specialized version of `baseIsEqualDeep` for objects with support for + * partial deep comparisons. + * + * @private + * @param {Object} object The object to compare. + * @param {Object} other The other object to compare. + * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. + * @param {Function} customizer The function to customize comparisons. + * @param {Function} equalFunc The function to determine equivalents of values. + * @param {Object} stack Tracks traversed `object` and `other` objects. + * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. + */ + function equalObjects(object, other, bitmask, customizer, equalFunc, stack) { + var isPartial = bitmask & COMPARE_PARTIAL_FLAG, + objProps = getAllKeys(object), + objLength = objProps.length, + othProps = getAllKeys(other), + othLength = othProps.length; + + if (objLength != othLength && !isPartial) { + return false; + } + var index = objLength; + while (index--) { + var key = objProps[index]; + if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) { + return false; + } + } + // Check that cyclic values are equal. + var objStacked = stack.get(object); + var othStacked = stack.get(other); + if (objStacked && othStacked) { + return objStacked == other && othStacked == object; + } + var result = true; + stack.set(object, other); + stack.set(other, object); + + var skipCtor = isPartial; + while (++index < objLength) { + key = objProps[index]; + var objValue = object[key], + othValue = other[key]; + + if (customizer) { + var compared = isPartial + ? customizer(othValue, objValue, key, other, object, stack) + : customizer(objValue, othValue, key, object, other, stack); + } + // Recursively compare objects (susceptible to call stack limits). + if (!(compared === undefined + ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack)) + : compared + )) { + result = false; + break; + } + skipCtor || (skipCtor = key == 'constructor'); + } + if (result && !skipCtor) { + var objCtor = object.constructor, + othCtor = other.constructor; + + // Non `Object` object instances with different constructors are not equal. + if (objCtor != othCtor && + ('constructor' in object && 'constructor' in other) && + !(typeof objCtor == 'function' && objCtor instanceof objCtor && + typeof othCtor == 'function' && othCtor instanceof othCtor)) { + result = false; + } + } + stack['delete'](object); + stack['delete'](other); + return result; + } + + /** + * A specialized version of `baseRest` which flattens the rest array. + * + * @private + * @param {Function} func The function to apply a rest parameter to. + * @returns {Function} Returns the new function. + */ + function flatRest(func) { + return setToString(overRest(func, undefined, flatten), func + ''); + } + + /** + * Creates an array of own enumerable property names and symbols of `object`. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names and symbols. + */ + function getAllKeys(object) { + return baseGetAllKeys(object, keys, getSymbols); + } + + /** + * Creates an array of own and inherited enumerable property names and + * symbols of `object`. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names and symbols. + */ + function getAllKeysIn(object) { + return baseGetAllKeys(object, keysIn, getSymbolsIn); + } + + /** + * Gets metadata for `func`. + * + * @private + * @param {Function} func The function to query. + * @returns {*} Returns the metadata for `func`. + */ + var getData = !metaMap ? noop : function(func) { + return metaMap.get(func); + }; + + /** + * Gets the name of `func`. + * + * @private + * @param {Function} func The function to query. + * @returns {string} Returns the function name. + */ + function getFuncName(func) { + var result = (func.name + ''), + array = realNames[result], + length = hasOwnProperty.call(realNames, result) ? array.length : 0; + + while (length--) { + var data = array[length], + otherFunc = data.func; + if (otherFunc == null || otherFunc == func) { + return data.name; + } + } + return result; + } + + /** + * Gets the argument placeholder value for `func`. + * + * @private + * @param {Function} func The function to inspect. + * @returns {*} Returns the placeholder value. + */ + function getHolder(func) { + var object = hasOwnProperty.call(lodash, 'placeholder') ? lodash : func; + return object.placeholder; + } + + /** + * Gets the appropriate "iteratee" function. If `_.iteratee` is customized, + * this function returns the custom method, otherwise it returns `baseIteratee`. + * If arguments are provided, the chosen function is invoked with them and + * its result is returned. + * + * @private + * @param {*} [value] The value to convert to an iteratee. + * @param {number} [arity] The arity of the created iteratee. + * @returns {Function} Returns the chosen function or its result. + */ + function getIteratee() { + var result = lodash.iteratee || iteratee; + result = result === iteratee ? baseIteratee : result; + return arguments.length ? result(arguments[0], arguments[1]) : result; + } + + /** + * Gets the data for `map`. + * + * @private + * @param {Object} map The map to query. + * @param {string} key The reference key. + * @returns {*} Returns the map data. + */ + function getMapData(map, key) { + var data = map.__data__; + return isKeyable(key) + ? data[typeof key == 'string' ? 'string' : 'hash'] + : data.map; + } + + /** + * Gets the property names, values, and compare flags of `object`. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the match data of `object`. + */ + function getMatchData(object) { + var result = keys(object), + length = result.length; + + while (length--) { + var key = result[length], + value = object[key]; + + result[length] = [key, value, isStrictComparable(value)]; + } + return result; + } + + /** + * Gets the native function at `key` of `object`. + * + * @private + * @param {Object} object The object to query. + * @param {string} key The key of the method to get. + * @returns {*} Returns the function if it's native, else `undefined`. + */ + function getNative(object, key) { + var value = getValue(object, key); + return baseIsNative(value) ? value : undefined; + } + + /** + * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values. + * + * @private + * @param {*} value The value to query. + * @returns {string} Returns the raw `toStringTag`. + */ + function getRawTag(value) { + var isOwn = hasOwnProperty.call(value, symToStringTag), + tag = value[symToStringTag]; + + try { + value[symToStringTag] = undefined; + var unmasked = true; + } catch (e) {} + + var result = nativeObjectToString.call(value); + if (unmasked) { + if (isOwn) { + value[symToStringTag] = tag; + } else { + delete value[symToStringTag]; + } + } + return result; + } + + /** + * Creates an array of the own enumerable symbols of `object`. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of symbols. + */ + var getSymbols = !nativeGetSymbols ? stubArray : function(object) { + if (object == null) { + return []; + } + object = Object(object); + return arrayFilter(nativeGetSymbols(object), function(symbol) { + return propertyIsEnumerable.call(object, symbol); + }); + }; + + /** + * Creates an array of the own and inherited enumerable symbols of `object`. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of symbols. + */ + var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) { + var result = []; + while (object) { + arrayPush(result, getSymbols(object)); + object = getPrototype(object); + } + return result; + }; + + /** + * Gets the `toStringTag` of `value`. + * + * @private + * @param {*} value The value to query. + * @returns {string} Returns the `toStringTag`. + */ + var getTag = baseGetTag; + + // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6. + if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) || + (Map && getTag(new Map) != mapTag) || + (Promise && getTag(Promise.resolve()) != promiseTag) || + (Set && getTag(new Set) != setTag) || + (WeakMap && getTag(new WeakMap) != weakMapTag)) { + getTag = function(value) { + var result = baseGetTag(value), + Ctor = result == objectTag ? value.constructor : undefined, + ctorString = Ctor ? toSource(Ctor) : ''; + + if (ctorString) { + switch (ctorString) { + case dataViewCtorString: return dataViewTag; + case mapCtorString: return mapTag; + case promiseCtorString: return promiseTag; + case setCtorString: return setTag; + case weakMapCtorString: return weakMapTag; + } + } + return result; + }; + } + + /** + * Gets the view, applying any `transforms` to the `start` and `end` positions. + * + * @private + * @param {number} start The start of the view. + * @param {number} end The end of the view. + * @param {Array} transforms The transformations to apply to the view. + * @returns {Object} Returns an object containing the `start` and `end` + * positions of the view. + */ + function getView(start, end, transforms) { + var index = -1, + length = transforms.length; + + while (++index < length) { + var data = transforms[index], + size = data.size; + + switch (data.type) { + case 'drop': start += size; break; + case 'dropRight': end -= size; break; + case 'take': end = nativeMin(end, start + size); break; + case 'takeRight': start = nativeMax(start, end - size); break; + } + } + return { 'start': start, 'end': end }; + } + + /** + * Extracts wrapper details from the `source` body comment. + * + * @private + * @param {string} source The source to inspect. + * @returns {Array} Returns the wrapper details. + */ + function getWrapDetails(source) { + var match = source.match(reWrapDetails); + return match ? match[1].split(reSplitDetails) : []; + } + + /** + * Checks if `path` exists on `object`. + * + * @private + * @param {Object} object The object to query. + * @param {Array|string} path The path to check. + * @param {Function} hasFunc The function to check properties. + * @returns {boolean} Returns `true` if `path` exists, else `false`. + */ + function hasPath(object, path, hasFunc) { + path = castPath(path, object); + + var index = -1, + length = path.length, + result = false; + + while (++index < length) { + var key = toKey(path[index]); + if (!(result = object != null && hasFunc(object, key))) { + break; + } + object = object[key]; + } + if (result || ++index != length) { + return result; + } + length = object == null ? 0 : object.length; + return !!length && isLength(length) && isIndex(key, length) && + (isArray(object) || isArguments(object)); + } + + /** + * Initializes an array clone. + * + * @private + * @param {Array} array The array to clone. + * @returns {Array} Returns the initialized clone. + */ + function initCloneArray(array) { + var length = array.length, + result = new array.constructor(length); + + // Add properties assigned by `RegExp#exec`. + if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) { + result.index = array.index; + result.input = array.input; + } + return result; + } + + /** + * Initializes an object clone. + * + * @private + * @param {Object} object The object to clone. + * @returns {Object} Returns the initialized clone. + */ + function initCloneObject(object) { + return (typeof object.constructor == 'function' && !isPrototype(object)) + ? baseCreate(getPrototype(object)) + : {}; + } + + /** + * Initializes an object clone based on its `toStringTag`. + * + * **Note:** This function only supports cloning values with tags of + * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`. + * + * @private + * @param {Object} object The object to clone. + * @param {string} tag The `toStringTag` of the object to clone. + * @param {boolean} [isDeep] Specify a deep clone. + * @returns {Object} Returns the initialized clone. + */ + function initCloneByTag(object, tag, isDeep) { + var Ctor = object.constructor; + switch (tag) { + case arrayBufferTag: + return cloneArrayBuffer(object); + + case boolTag: + case dateTag: + return new Ctor(+object); + + case dataViewTag: + return cloneDataView(object, isDeep); + + case float32Tag: case float64Tag: + case int8Tag: case int16Tag: case int32Tag: + case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag: + return cloneTypedArray(object, isDeep); + + case mapTag: + return new Ctor; + + case numberTag: + case stringTag: + return new Ctor(object); + + case regexpTag: + return cloneRegExp(object); + + case setTag: + return new Ctor; + + case symbolTag: + return cloneSymbol(object); + } + } + + /** + * Inserts wrapper `details` in a comment at the top of the `source` body. + * + * @private + * @param {string} source The source to modify. + * @returns {Array} details The details to insert. + * @returns {string} Returns the modified source. + */ + function insertWrapDetails(source, details) { + var length = details.length; + if (!length) { + return source; + } + var lastIndex = length - 1; + details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex]; + details = details.join(length > 2 ? ', ' : ' '); + return source.replace(reWrapComment, '{\n/* [wrapped with ' + details + '] */\n'); + } + + /** + * Checks if `value` is a flattenable `arguments` object or array. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is flattenable, else `false`. + */ + function isFlattenable(value) { + return isArray(value) || isArguments(value) || + !!(spreadableSymbol && value && value[spreadableSymbol]); + } + + /** + * Checks if `value` is a valid array-like index. + * + * @private + * @param {*} value The value to check. + * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index. + * @returns {boolean} Returns `true` if `value` is a valid index, else `false`. + */ + function isIndex(value, length) { + var type = typeof value; + length = length == null ? MAX_SAFE_INTEGER : length; + + return !!length && + (type == 'number' || + (type != 'symbol' && reIsUint.test(value))) && + (value > -1 && value % 1 == 0 && value < length); + } + + /** + * Checks if the given arguments are from an iteratee call. + * + * @private + * @param {*} value The potential iteratee value argument. + * @param {*} index The potential iteratee index or key argument. + * @param {*} object The potential iteratee object argument. + * @returns {boolean} Returns `true` if the arguments are from an iteratee call, + * else `false`. + */ + function isIterateeCall(value, index, object) { + if (!isObject(object)) { + return false; + } + var type = typeof index; + if (type == 'number' + ? (isArrayLike(object) && isIndex(index, object.length)) + : (type == 'string' && index in object) + ) { + return eq(object[index], value); + } + return false; + } + + /** + * Checks if `value` is a property name and not a property path. + * + * @private + * @param {*} value The value to check. + * @param {Object} [object] The object to query keys on. + * @returns {boolean} Returns `true` if `value` is a property name, else `false`. + */ + function isKey(value, object) { + if (isArray(value)) { + return false; + } + var type = typeof value; + if (type == 'number' || type == 'symbol' || type == 'boolean' || + value == null || isSymbol(value)) { + return true; + } + return reIsPlainProp.test(value) || !reIsDeepProp.test(value) || + (object != null && value in Object(object)); + } + + /** + * Checks if `value` is suitable for use as unique object key. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is suitable, else `false`. + */ + function isKeyable(value) { + var type = typeof value; + return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean') + ? (value !== '__proto__') + : (value === null); + } + + /** + * Checks if `func` has a lazy counterpart. + * + * @private + * @param {Function} func The function to check. + * @returns {boolean} Returns `true` if `func` has a lazy counterpart, + * else `false`. + */ + function isLaziable(func) { + var funcName = getFuncName(func), + other = lodash[funcName]; + + if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) { + return false; + } + if (func === other) { + return true; + } + var data = getData(other); + return !!data && func === data[0]; + } + + /** + * Checks if `func` has its source masked. + * + * @private + * @param {Function} func The function to check. + * @returns {boolean} Returns `true` if `func` is masked, else `false`. + */ + function isMasked(func) { + return !!maskSrcKey && (maskSrcKey in func); + } + + /** + * Checks if `func` is capable of being masked. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `func` is maskable, else `false`. + */ + var isMaskable = coreJsData ? isFunction : stubFalse; + + /** + * Checks if `value` is likely a prototype object. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a prototype, else `false`. + */ + function isPrototype(value) { + var Ctor = value && value.constructor, + proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto; + + return value === proto; + } + + /** + * Checks if `value` is suitable for strict equality comparisons, i.e. `===`. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` if suitable for strict + * equality comparisons, else `false`. + */ + function isStrictComparable(value) { + return value === value && !isObject(value); + } + + /** + * A specialized version of `matchesProperty` for source values suitable + * for strict equality comparisons, i.e. `===`. + * + * @private + * @param {string} key The key of the property to get. + * @param {*} srcValue The value to match. + * @returns {Function} Returns the new spec function. + */ + function matchesStrictComparable(key, srcValue) { + return function(object) { + if (object == null) { + return false; + } + return object[key] === srcValue && + (srcValue !== undefined || (key in Object(object))); + }; + } + + /** + * A specialized version of `_.memoize` which clears the memoized function's + * cache when it exceeds `MAX_MEMOIZE_SIZE`. + * + * @private + * @param {Function} func The function to have its output memoized. + * @returns {Function} Returns the new memoized function. + */ + function memoizeCapped(func) { + var result = memoize(func, function(key) { + if (cache.size === MAX_MEMOIZE_SIZE) { + cache.clear(); + } + return key; + }); + + var cache = result.cache; + return result; + } + + /** + * Merges the function metadata of `source` into `data`. + * + * Merging metadata reduces the number of wrappers used to invoke a function. + * This is possible because methods like `_.bind`, `_.curry`, and `_.partial` + * may be applied regardless of execution order. Methods like `_.ary` and + * `_.rearg` modify function arguments, making the order in which they are + * executed important, preventing the merging of metadata. However, we make + * an exception for a safe combined case where curried functions have `_.ary` + * and or `_.rearg` applied. + * + * @private + * @param {Array} data The destination metadata. + * @param {Array} source The source metadata. + * @returns {Array} Returns `data`. + */ + function mergeData(data, source) { + var bitmask = data[1], + srcBitmask = source[1], + newBitmask = bitmask | srcBitmask, + isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG); + + var isCombo = + ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_CURRY_FLAG)) || + ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_REARG_FLAG) && (data[7].length <= source[8])) || + ((srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG)) && (source[7].length <= source[8]) && (bitmask == WRAP_CURRY_FLAG)); + + // Exit early if metadata can't be merged. + if (!(isCommon || isCombo)) { + return data; + } + // Use source `thisArg` if available. + if (srcBitmask & WRAP_BIND_FLAG) { + data[2] = source[2]; + // Set when currying a bound function. + newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG; + } + // Compose partial arguments. + var value = source[3]; + if (value) { + var partials = data[3]; + data[3] = partials ? composeArgs(partials, value, source[4]) : value; + data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4]; + } + // Compose partial right arguments. + value = source[5]; + if (value) { + partials = data[5]; + data[5] = partials ? composeArgsRight(partials, value, source[6]) : value; + data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6]; + } + // Use source `argPos` if available. + value = source[7]; + if (value) { + data[7] = value; + } + // Use source `ary` if it's smaller. + if (srcBitmask & WRAP_ARY_FLAG) { + data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]); + } + // Use source `arity` if one is not provided. + if (data[9] == null) { + data[9] = source[9]; + } + // Use source `func` and merge bitmasks. + data[0] = source[0]; + data[1] = newBitmask; + + return data; + } + + /** + * This function is like + * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys) + * except that it includes inherited enumerable properties. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + */ + function nativeKeysIn(object) { + var result = []; + if (object != null) { + for (var key in Object(object)) { + result.push(key); + } + } + return result; + } + + /** + * Converts `value` to a string using `Object.prototype.toString`. + * + * @private + * @param {*} value The value to convert. + * @returns {string} Returns the converted string. + */ + function objectToString(value) { + return nativeObjectToString.call(value); + } + + /** + * A specialized version of `baseRest` which transforms the rest array. + * + * @private + * @param {Function} func The function to apply a rest parameter to. + * @param {number} [start=func.length-1] The start position of the rest parameter. + * @param {Function} transform The rest array transform. + * @returns {Function} Returns the new function. + */ + function overRest(func, start, transform) { + start = nativeMax(start === undefined ? (func.length - 1) : start, 0); + return function() { + var args = arguments, + index = -1, + length = nativeMax(args.length - start, 0), + array = Array(length); + + while (++index < length) { + array[index] = args[start + index]; + } + index = -1; + var otherArgs = Array(start + 1); + while (++index < start) { + otherArgs[index] = args[index]; + } + otherArgs[start] = transform(array); + return apply(func, this, otherArgs); + }; + } + + /** + * Gets the parent value at `path` of `object`. + * + * @private + * @param {Object} object The object to query. + * @param {Array} path The path to get the parent value of. + * @returns {*} Returns the parent value. + */ + function parent(object, path) { + return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1)); + } + + /** + * Reorder `array` according to the specified indexes where the element at + * the first index is assigned as the first element, the element at + * the second index is assigned as the second element, and so on. + * + * @private + * @param {Array} array The array to reorder. + * @param {Array} indexes The arranged array indexes. + * @returns {Array} Returns `array`. + */ + function reorder(array, indexes) { + var arrLength = array.length, + length = nativeMin(indexes.length, arrLength), + oldArray = copyArray(array); + + while (length--) { + var index = indexes[length]; + array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined; + } + return array; + } + + /** + * Gets the value at `key`, unless `key` is "__proto__" or "constructor". + * + * @private + * @param {Object} object The object to query. + * @param {string} key The key of the property to get. + * @returns {*} Returns the property value. + */ + function safeGet(object, key) { + if (key === 'constructor' && typeof object[key] === 'function') { + return; + } + + if (key == '__proto__') { + return; + } + + return object[key]; + } + + /** + * Sets metadata for `func`. + * + * **Note:** If this function becomes hot, i.e. is invoked a lot in a short + * period of time, it will trip its breaker and transition to an identity + * function to avoid garbage collection pauses in V8. See + * [V8 issue 2070](https://bugs.chromium.org/p/v8/issues/detail?id=2070) + * for more details. + * + * @private + * @param {Function} func The function to associate metadata with. + * @param {*} data The metadata. + * @returns {Function} Returns `func`. + */ + var setData = shortOut(baseSetData); + + /** + * A simple wrapper around the global [`setTimeout`](https://mdn.io/setTimeout). + * + * @private + * @param {Function} func The function to delay. + * @param {number} wait The number of milliseconds to delay invocation. + * @returns {number|Object} Returns the timer id or timeout object. + */ + var setTimeout = ctxSetTimeout || function(func, wait) { + return root.setTimeout(func, wait); + }; + + /** + * Sets the `toString` method of `func` to return `string`. + * + * @private + * @param {Function} func The function to modify. + * @param {Function} string The `toString` result. + * @returns {Function} Returns `func`. + */ + var setToString = shortOut(baseSetToString); + + /** + * Sets the `toString` method of `wrapper` to mimic the source of `reference` + * with wrapper details in a comment at the top of the source body. + * + * @private + * @param {Function} wrapper The function to modify. + * @param {Function} reference The reference function. + * @param {number} bitmask The bitmask flags. See `createWrap` for more details. + * @returns {Function} Returns `wrapper`. + */ + function setWrapToString(wrapper, reference, bitmask) { + var source = (reference + ''); + return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask))); + } + + /** + * Creates a function that'll short out and invoke `identity` instead + * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN` + * milliseconds. + * + * @private + * @param {Function} func The function to restrict. + * @returns {Function} Returns the new shortable function. + */ + function shortOut(func) { + var count = 0, + lastCalled = 0; + + return function() { + var stamp = nativeNow(), + remaining = HOT_SPAN - (stamp - lastCalled); + + lastCalled = stamp; + if (remaining > 0) { + if (++count >= HOT_COUNT) { + return arguments[0]; + } + } else { + count = 0; + } + return func.apply(undefined, arguments); + }; + } + + /** + * A specialized version of `_.shuffle` which mutates and sets the size of `array`. + * + * @private + * @param {Array} array The array to shuffle. + * @param {number} [size=array.length] The size of `array`. + * @returns {Array} Returns `array`. + */ + function shuffleSelf(array, size) { + var index = -1, + length = array.length, + lastIndex = length - 1; + + size = size === undefined ? length : size; + while (++index < size) { + var rand = baseRandom(index, lastIndex), + value = array[rand]; + + array[rand] = array[index]; + array[index] = value; + } + array.length = size; + return array; + } + + /** + * Converts `string` to a property path array. + * + * @private + * @param {string} string The string to convert. + * @returns {Array} Returns the property path array. + */ + var stringToPath = memoizeCapped(function(string) { + var result = []; + if (string.charCodeAt(0) === 46 /* . */) { + result.push(''); + } + string.replace(rePropName, function(match, number, quote, subString) { + result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match)); + }); + return result; + }); + + /** + * Converts `value` to a string key if it's not a string or symbol. + * + * @private + * @param {*} value The value to inspect. + * @returns {string|symbol} Returns the key. + */ + function toKey(value) { + if (typeof value == 'string' || isSymbol(value)) { + return value; + } + var result = (value + ''); + return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result; + } + + /** + * Converts `func` to its source code. + * + * @private + * @param {Function} func The function to convert. + * @returns {string} Returns the source code. + */ + function toSource(func) { + if (func != null) { + try { + return funcToString.call(func); + } catch (e) {} + try { + return (func + ''); + } catch (e) {} + } + return ''; + } + + /** + * Updates wrapper `details` based on `bitmask` flags. + * + * @private + * @returns {Array} details The details to modify. + * @param {number} bitmask The bitmask flags. See `createWrap` for more details. + * @returns {Array} Returns `details`. + */ + function updateWrapDetails(details, bitmask) { + arrayEach(wrapFlags, function(pair) { + var value = '_.' + pair[0]; + if ((bitmask & pair[1]) && !arrayIncludes(details, value)) { + details.push(value); + } + }); + return details.sort(); + } + + /** + * Creates a clone of `wrapper`. + * + * @private + * @param {Object} wrapper The wrapper to clone. + * @returns {Object} Returns the cloned wrapper. + */ + function wrapperClone(wrapper) { + if (wrapper instanceof LazyWrapper) { + return wrapper.clone(); + } + var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__); + result.__actions__ = copyArray(wrapper.__actions__); + result.__index__ = wrapper.__index__; + result.__values__ = wrapper.__values__; + return result; + } + + /*------------------------------------------------------------------------*/ + + /** + * Creates an array of elements split into groups the length of `size`. + * If `array` can't be split evenly, the final chunk will be the remaining + * elements. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Array + * @param {Array} array The array to process. + * @param {number} [size=1] The length of each chunk + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {Array} Returns the new array of chunks. + * @example + * + * _.chunk(['a', 'b', 'c', 'd'], 2); + * // => [['a', 'b'], ['c', 'd']] + * + * _.chunk(['a', 'b', 'c', 'd'], 3); + * // => [['a', 'b', 'c'], ['d']] + */ + function chunk(array, size, guard) { + if ((guard ? isIterateeCall(array, size, guard) : size === undefined)) { + size = 1; + } else { + size = nativeMax(toInteger(size), 0); + } + var length = array == null ? 0 : array.length; + if (!length || size < 1) { + return []; + } + var index = 0, + resIndex = 0, + result = Array(nativeCeil(length / size)); + + while (index < length) { + result[resIndex++] = baseSlice(array, index, (index += size)); + } + return result; + } + + /** + * Creates an array with all falsey values removed. The values `false`, `null`, + * `0`, `""`, `undefined`, and `NaN` are falsey. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {Array} array The array to compact. + * @returns {Array} Returns the new array of filtered values. + * @example + * + * _.compact([0, 1, false, 2, '', 3]); + * // => [1, 2, 3] + */ + function compact(array) { + var index = -1, + length = array == null ? 0 : array.length, + resIndex = 0, + result = []; + + while (++index < length) { + var value = array[index]; + if (value) { + result[resIndex++] = value; + } + } + return result; + } + + /** + * Creates a new array concatenating `array` with any additional arrays + * and/or values. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to concatenate. + * @param {...*} [values] The values to concatenate. + * @returns {Array} Returns the new concatenated array. + * @example + * + * var array = [1]; + * var other = _.concat(array, 2, [3], [[4]]); + * + * console.log(other); + * // => [1, 2, 3, [4]] + * + * console.log(array); + * // => [1] + */ + function concat() { + var length = arguments.length; + if (!length) { + return []; + } + var args = Array(length - 1), + array = arguments[0], + index = length; + + while (index--) { + args[index - 1] = arguments[index]; + } + return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1)); + } + + /** + * Creates an array of `array` values not included in the other given arrays + * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * for equality comparisons. The order and references of result values are + * determined by the first array. + * + * **Note:** Unlike `_.pullAll`, this method returns a new array. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {...Array} [values] The values to exclude. + * @returns {Array} Returns the new array of filtered values. + * @see _.without, _.xor + * @example + * + * _.difference([2, 1], [2, 3]); + * // => [1] + */ + var difference = baseRest(function(array, values) { + return isArrayLikeObject(array) + ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true)) + : []; + }); + + /** + * This method is like `_.difference` except that it accepts `iteratee` which + * is invoked for each element of `array` and `values` to generate the criterion + * by which they're compared. The order and references of result values are + * determined by the first array. The iteratee is invoked with one argument: + * (value). + * + * **Note:** Unlike `_.pullAllBy`, this method returns a new array. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {...Array} [values] The values to exclude. + * @param {Function} [iteratee=_.identity] The iteratee invoked per element. + * @returns {Array} Returns the new array of filtered values. + * @example + * + * _.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor); + * // => [1.2] + * + * // The `_.property` iteratee shorthand. + * _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x'); + * // => [{ 'x': 2 }] + */ + var differenceBy = baseRest(function(array, values) { + var iteratee = last(values); + if (isArrayLikeObject(iteratee)) { + iteratee = undefined; + } + return isArrayLikeObject(array) + ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), getIteratee(iteratee, 2)) + : []; + }); + + /** + * This method is like `_.difference` except that it accepts `comparator` + * which is invoked to compare elements of `array` to `values`. The order and + * references of result values are determined by the first array. The comparator + * is invoked with two arguments: (arrVal, othVal). + * + * **Note:** Unlike `_.pullAllWith`, this method returns a new array. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {...Array} [values] The values to exclude. + * @param {Function} [comparator] The comparator invoked per element. + * @returns {Array} Returns the new array of filtered values. + * @example + * + * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]; + * + * _.differenceWith(objects, [{ 'x': 1, 'y': 2 }], _.isEqual); + * // => [{ 'x': 2, 'y': 1 }] + */ + var differenceWith = baseRest(function(array, values) { + var comparator = last(values); + if (isArrayLikeObject(comparator)) { + comparator = undefined; + } + return isArrayLikeObject(array) + ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), undefined, comparator) + : []; + }); + + /** + * Creates a slice of `array` with `n` elements dropped from the beginning. + * + * @static + * @memberOf _ + * @since 0.5.0 + * @category Array + * @param {Array} array The array to query. + * @param {number} [n=1] The number of elements to drop. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {Array} Returns the slice of `array`. + * @example + * + * _.drop([1, 2, 3]); + * // => [2, 3] + * + * _.drop([1, 2, 3], 2); + * // => [3] + * + * _.drop([1, 2, 3], 5); + * // => [] + * + * _.drop([1, 2, 3], 0); + * // => [1, 2, 3] + */ + function drop(array, n, guard) { + var length = array == null ? 0 : array.length; + if (!length) { + return []; + } + n = (guard || n === undefined) ? 1 : toInteger(n); + return baseSlice(array, n < 0 ? 0 : n, length); + } + + /** + * Creates a slice of `array` with `n` elements dropped from the end. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Array + * @param {Array} array The array to query. + * @param {number} [n=1] The number of elements to drop. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {Array} Returns the slice of `array`. + * @example + * + * _.dropRight([1, 2, 3]); + * // => [1, 2] + * + * _.dropRight([1, 2, 3], 2); + * // => [1] + * + * _.dropRight([1, 2, 3], 5); + * // => [] + * + * _.dropRight([1, 2, 3], 0); + * // => [1, 2, 3] + */ + function dropRight(array, n, guard) { + var length = array == null ? 0 : array.length; + if (!length) { + return []; + } + n = (guard || n === undefined) ? 1 : toInteger(n); + n = length - n; + return baseSlice(array, 0, n < 0 ? 0 : n); + } + + /** + * Creates a slice of `array` excluding elements dropped from the end. + * Elements are dropped until `predicate` returns falsey. The predicate is + * invoked with three arguments: (value, index, array). + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Array + * @param {Array} array The array to query. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @returns {Array} Returns the slice of `array`. + * @example + * + * var users = [ + * { 'user': 'barney', 'active': true }, + * { 'user': 'fred', 'active': false }, + * { 'user': 'pebbles', 'active': false } + * ]; + * + * _.dropRightWhile(users, function(o) { return !o.active; }); + * // => objects for ['barney'] + * + * // The `_.matches` iteratee shorthand. + * _.dropRightWhile(users, { 'user': 'pebbles', 'active': false }); + * // => objects for ['barney', 'fred'] + * + * // The `_.matchesProperty` iteratee shorthand. + * _.dropRightWhile(users, ['active', false]); + * // => objects for ['barney'] + * + * // The `_.property` iteratee shorthand. + * _.dropRightWhile(users, 'active'); + * // => objects for ['barney', 'fred', 'pebbles'] + */ + function dropRightWhile(array, predicate) { + return (array && array.length) + ? baseWhile(array, getIteratee(predicate, 3), true, true) + : []; + } + + /** + * Creates a slice of `array` excluding elements dropped from the beginning. + * Elements are dropped until `predicate` returns falsey. The predicate is + * invoked with three arguments: (value, index, array). + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Array + * @param {Array} array The array to query. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @returns {Array} Returns the slice of `array`. + * @example + * + * var users = [ + * { 'user': 'barney', 'active': false }, + * { 'user': 'fred', 'active': false }, + * { 'user': 'pebbles', 'active': true } + * ]; + * + * _.dropWhile(users, function(o) { return !o.active; }); + * // => objects for ['pebbles'] + * + * // The `_.matches` iteratee shorthand. + * _.dropWhile(users, { 'user': 'barney', 'active': false }); + * // => objects for ['fred', 'pebbles'] + * + * // The `_.matchesProperty` iteratee shorthand. + * _.dropWhile(users, ['active', false]); + * // => objects for ['pebbles'] + * + * // The `_.property` iteratee shorthand. + * _.dropWhile(users, 'active'); + * // => objects for ['barney', 'fred', 'pebbles'] + */ + function dropWhile(array, predicate) { + return (array && array.length) + ? baseWhile(array, getIteratee(predicate, 3), true) + : []; + } + + /** + * Fills elements of `array` with `value` from `start` up to, but not + * including, `end`. + * + * **Note:** This method mutates `array`. + * + * @static + * @memberOf _ + * @since 3.2.0 + * @category Array + * @param {Array} array The array to fill. + * @param {*} value The value to fill `array` with. + * @param {number} [start=0] The start position. + * @param {number} [end=array.length] The end position. + * @returns {Array} Returns `array`. + * @example + * + * var array = [1, 2, 3]; + * + * _.fill(array, 'a'); + * console.log(array); + * // => ['a', 'a', 'a'] + * + * _.fill(Array(3), 2); + * // => [2, 2, 2] + * + * _.fill([4, 6, 8, 10], '*', 1, 3); + * // => [4, '*', '*', 10] + */ + function fill(array, value, start, end) { + var length = array == null ? 0 : array.length; + if (!length) { + return []; + } + if (start && typeof start != 'number' && isIterateeCall(array, value, start)) { + start = 0; + end = length; + } + return baseFill(array, value, start, end); + } + + /** + * This method is like `_.find` except that it returns the index of the first + * element `predicate` returns truthy for instead of the element itself. + * + * @static + * @memberOf _ + * @since 1.1.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @param {number} [fromIndex=0] The index to search from. + * @returns {number} Returns the index of the found element, else `-1`. + * @example + * + * var users = [ + * { 'user': 'barney', 'active': false }, + * { 'user': 'fred', 'active': false }, + * { 'user': 'pebbles', 'active': true } + * ]; + * + * _.findIndex(users, function(o) { return o.user == 'barney'; }); + * // => 0 + * + * // The `_.matches` iteratee shorthand. + * _.findIndex(users, { 'user': 'fred', 'active': false }); + * // => 1 + * + * // The `_.matchesProperty` iteratee shorthand. + * _.findIndex(users, ['active', false]); + * // => 0 + * + * // The `_.property` iteratee shorthand. + * _.findIndex(users, 'active'); + * // => 2 + */ + function findIndex(array, predicate, fromIndex) { + var length = array == null ? 0 : array.length; + if (!length) { + return -1; + } + var index = fromIndex == null ? 0 : toInteger(fromIndex); + if (index < 0) { + index = nativeMax(length + index, 0); + } + return baseFindIndex(array, getIteratee(predicate, 3), index); + } + + /** + * This method is like `_.findIndex` except that it iterates over elements + * of `collection` from right to left. + * + * @static + * @memberOf _ + * @since 2.0.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @param {number} [fromIndex=array.length-1] The index to search from. + * @returns {number} Returns the index of the found element, else `-1`. + * @example + * + * var users = [ + * { 'user': 'barney', 'active': true }, + * { 'user': 'fred', 'active': false }, + * { 'user': 'pebbles', 'active': false } + * ]; + * + * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; }); + * // => 2 + * + * // The `_.matches` iteratee shorthand. + * _.findLastIndex(users, { 'user': 'barney', 'active': true }); + * // => 0 + * + * // The `_.matchesProperty` iteratee shorthand. + * _.findLastIndex(users, ['active', false]); + * // => 2 + * + * // The `_.property` iteratee shorthand. + * _.findLastIndex(users, 'active'); + * // => 0 + */ + function findLastIndex(array, predicate, fromIndex) { + var length = array == null ? 0 : array.length; + if (!length) { + return -1; + } + var index = length - 1; + if (fromIndex !== undefined) { + index = toInteger(fromIndex); + index = fromIndex < 0 + ? nativeMax(length + index, 0) + : nativeMin(index, length - 1); + } + return baseFindIndex(array, getIteratee(predicate, 3), index, true); + } + + /** + * Flattens `array` a single level deep. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {Array} array The array to flatten. + * @returns {Array} Returns the new flattened array. + * @example + * + * _.flatten([1, [2, [3, [4]], 5]]); + * // => [1, 2, [3, [4]], 5] + */ + function flatten(array) { + var length = array == null ? 0 : array.length; + return length ? baseFlatten(array, 1) : []; + } + + /** + * Recursively flattens `array`. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Array + * @param {Array} array The array to flatten. + * @returns {Array} Returns the new flattened array. + * @example + * + * _.flattenDeep([1, [2, [3, [4]], 5]]); + * // => [1, 2, 3, 4, 5] + */ + function flattenDeep(array) { + var length = array == null ? 0 : array.length; + return length ? baseFlatten(array, INFINITY) : []; + } + + /** + * Recursively flatten `array` up to `depth` times. + * + * @static + * @memberOf _ + * @since 4.4.0 + * @category Array + * @param {Array} array The array to flatten. + * @param {number} [depth=1] The maximum recursion depth. + * @returns {Array} Returns the new flattened array. + * @example + * + * var array = [1, [2, [3, [4]], 5]]; + * + * _.flattenDepth(array, 1); + * // => [1, 2, [3, [4]], 5] + * + * _.flattenDepth(array, 2); + * // => [1, 2, 3, [4], 5] + */ + function flattenDepth(array, depth) { + var length = array == null ? 0 : array.length; + if (!length) { + return []; + } + depth = depth === undefined ? 1 : toInteger(depth); + return baseFlatten(array, depth); + } + + /** + * The inverse of `_.toPairs`; this method returns an object composed + * from key-value `pairs`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} pairs The key-value pairs. + * @returns {Object} Returns the new object. + * @example + * + * _.fromPairs([['a', 1], ['b', 2]]); + * // => { 'a': 1, 'b': 2 } + */ + function fromPairs(pairs) { + var index = -1, + length = pairs == null ? 0 : pairs.length, + result = {}; + + while (++index < length) { + var pair = pairs[index]; + result[pair[0]] = pair[1]; + } + return result; + } + + /** + * Gets the first element of `array`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @alias first + * @category Array + * @param {Array} array The array to query. + * @returns {*} Returns the first element of `array`. + * @example + * + * _.head([1, 2, 3]); + * // => 1 + * + * _.head([]); + * // => undefined + */ + function head(array) { + return (array && array.length) ? array[0] : undefined; + } + + /** + * Gets the index at which the first occurrence of `value` is found in `array` + * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * for equality comparisons. If `fromIndex` is negative, it's used as the + * offset from the end of `array`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {*} value The value to search for. + * @param {number} [fromIndex=0] The index to search from. + * @returns {number} Returns the index of the matched value, else `-1`. + * @example + * + * _.indexOf([1, 2, 1, 2], 2); + * // => 1 + * + * // Search from the `fromIndex`. + * _.indexOf([1, 2, 1, 2], 2, 2); + * // => 3 + */ + function indexOf(array, value, fromIndex) { + var length = array == null ? 0 : array.length; + if (!length) { + return -1; + } + var index = fromIndex == null ? 0 : toInteger(fromIndex); + if (index < 0) { + index = nativeMax(length + index, 0); + } + return baseIndexOf(array, value, index); + } + + /** + * Gets all but the last element of `array`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {Array} array The array to query. + * @returns {Array} Returns the slice of `array`. + * @example + * + * _.initial([1, 2, 3]); + * // => [1, 2] + */ + function initial(array) { + var length = array == null ? 0 : array.length; + return length ? baseSlice(array, 0, -1) : []; + } + + /** + * Creates an array of unique values that are included in all given arrays + * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * for equality comparisons. The order and references of result values are + * determined by the first array. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {...Array} [arrays] The arrays to inspect. + * @returns {Array} Returns the new array of intersecting values. + * @example + * + * _.intersection([2, 1], [2, 3]); + * // => [2] + */ + var intersection = baseRest(function(arrays) { + var mapped = arrayMap(arrays, castArrayLikeObject); + return (mapped.length && mapped[0] === arrays[0]) + ? baseIntersection(mapped) + : []; + }); + + /** + * This method is like `_.intersection` except that it accepts `iteratee` + * which is invoked for each element of each `arrays` to generate the criterion + * by which they're compared. The order and references of result values are + * determined by the first array. The iteratee is invoked with one argument: + * (value). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {...Array} [arrays] The arrays to inspect. + * @param {Function} [iteratee=_.identity] The iteratee invoked per element. + * @returns {Array} Returns the new array of intersecting values. + * @example + * + * _.intersectionBy([2.1, 1.2], [2.3, 3.4], Math.floor); + * // => [2.1] + * + * // The `_.property` iteratee shorthand. + * _.intersectionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x'); + * // => [{ 'x': 1 }] + */ + var intersectionBy = baseRest(function(arrays) { + var iteratee = last(arrays), + mapped = arrayMap(arrays, castArrayLikeObject); + + if (iteratee === last(mapped)) { + iteratee = undefined; + } else { + mapped.pop(); + } + return (mapped.length && mapped[0] === arrays[0]) + ? baseIntersection(mapped, getIteratee(iteratee, 2)) + : []; + }); + + /** + * This method is like `_.intersection` except that it accepts `comparator` + * which is invoked to compare elements of `arrays`. The order and references + * of result values are determined by the first array. The comparator is + * invoked with two arguments: (arrVal, othVal). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {...Array} [arrays] The arrays to inspect. + * @param {Function} [comparator] The comparator invoked per element. + * @returns {Array} Returns the new array of intersecting values. + * @example + * + * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]; + * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }]; + * + * _.intersectionWith(objects, others, _.isEqual); + * // => [{ 'x': 1, 'y': 2 }] + */ + var intersectionWith = baseRest(function(arrays) { + var comparator = last(arrays), + mapped = arrayMap(arrays, castArrayLikeObject); + + comparator = typeof comparator == 'function' ? comparator : undefined; + if (comparator) { + mapped.pop(); + } + return (mapped.length && mapped[0] === arrays[0]) + ? baseIntersection(mapped, undefined, comparator) + : []; + }); + + /** + * Converts all elements in `array` into a string separated by `separator`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to convert. + * @param {string} [separator=','] The element separator. + * @returns {string} Returns the joined string. + * @example + * + * _.join(['a', 'b', 'c'], '~'); + * // => 'a~b~c' + */ + function join(array, separator) { + return array == null ? '' : nativeJoin.call(array, separator); + } + + /** + * Gets the last element of `array`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {Array} array The array to query. + * @returns {*} Returns the last element of `array`. + * @example + * + * _.last([1, 2, 3]); + * // => 3 + */ + function last(array) { + var length = array == null ? 0 : array.length; + return length ? array[length - 1] : undefined; + } + + /** + * This method is like `_.indexOf` except that it iterates over elements of + * `array` from right to left. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {*} value The value to search for. + * @param {number} [fromIndex=array.length-1] The index to search from. + * @returns {number} Returns the index of the matched value, else `-1`. + * @example + * + * _.lastIndexOf([1, 2, 1, 2], 2); + * // => 3 + * + * // Search from the `fromIndex`. + * _.lastIndexOf([1, 2, 1, 2], 2, 2); + * // => 1 + */ + function lastIndexOf(array, value, fromIndex) { + var length = array == null ? 0 : array.length; + if (!length) { + return -1; + } + var index = length; + if (fromIndex !== undefined) { + index = toInteger(fromIndex); + index = index < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1); + } + return value === value + ? strictLastIndexOf(array, value, index) + : baseFindIndex(array, baseIsNaN, index, true); + } + + /** + * Gets the element at index `n` of `array`. If `n` is negative, the nth + * element from the end is returned. + * + * @static + * @memberOf _ + * @since 4.11.0 + * @category Array + * @param {Array} array The array to query. + * @param {number} [n=0] The index of the element to return. + * @returns {*} Returns the nth element of `array`. + * @example + * + * var array = ['a', 'b', 'c', 'd']; + * + * _.nth(array, 1); + * // => 'b' + * + * _.nth(array, -2); + * // => 'c'; + */ + function nth(array, n) { + return (array && array.length) ? baseNth(array, toInteger(n)) : undefined; + } + + /** + * Removes all given values from `array` using + * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * for equality comparisons. + * + * **Note:** Unlike `_.without`, this method mutates `array`. Use `_.remove` + * to remove elements from an array by predicate. + * + * @static + * @memberOf _ + * @since 2.0.0 + * @category Array + * @param {Array} array The array to modify. + * @param {...*} [values] The values to remove. + * @returns {Array} Returns `array`. + * @example + * + * var array = ['a', 'b', 'c', 'a', 'b', 'c']; + * + * _.pull(array, 'a', 'c'); + * console.log(array); + * // => ['b', 'b'] + */ + var pull = baseRest(pullAll); + + /** + * This method is like `_.pull` except that it accepts an array of values to remove. + * + * **Note:** Unlike `_.difference`, this method mutates `array`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to modify. + * @param {Array} values The values to remove. + * @returns {Array} Returns `array`. + * @example + * + * var array = ['a', 'b', 'c', 'a', 'b', 'c']; + * + * _.pullAll(array, ['a', 'c']); + * console.log(array); + * // => ['b', 'b'] + */ + function pullAll(array, values) { + return (array && array.length && values && values.length) + ? basePullAll(array, values) + : array; + } + + /** + * This method is like `_.pullAll` except that it accepts `iteratee` which is + * invoked for each element of `array` and `values` to generate the criterion + * by which they're compared. The iteratee is invoked with one argument: (value). + * + * **Note:** Unlike `_.differenceBy`, this method mutates `array`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to modify. + * @param {Array} values The values to remove. + * @param {Function} [iteratee=_.identity] The iteratee invoked per element. + * @returns {Array} Returns `array`. + * @example + * + * var array = [{ 'x': 1 }, { 'x': 2 }, { 'x': 3 }, { 'x': 1 }]; + * + * _.pullAllBy(array, [{ 'x': 1 }, { 'x': 3 }], 'x'); + * console.log(array); + * // => [{ 'x': 2 }] + */ + function pullAllBy(array, values, iteratee) { + return (array && array.length && values && values.length) + ? basePullAll(array, values, getIteratee(iteratee, 2)) + : array; + } + + /** + * This method is like `_.pullAll` except that it accepts `comparator` which + * is invoked to compare elements of `array` to `values`. The comparator is + * invoked with two arguments: (arrVal, othVal). + * + * **Note:** Unlike `_.differenceWith`, this method mutates `array`. + * + * @static + * @memberOf _ + * @since 4.6.0 + * @category Array + * @param {Array} array The array to modify. + * @param {Array} values The values to remove. + * @param {Function} [comparator] The comparator invoked per element. + * @returns {Array} Returns `array`. + * @example + * + * var array = [{ 'x': 1, 'y': 2 }, { 'x': 3, 'y': 4 }, { 'x': 5, 'y': 6 }]; + * + * _.pullAllWith(array, [{ 'x': 3, 'y': 4 }], _.isEqual); + * console.log(array); + * // => [{ 'x': 1, 'y': 2 }, { 'x': 5, 'y': 6 }] + */ + function pullAllWith(array, values, comparator) { + return (array && array.length && values && values.length) + ? basePullAll(array, values, undefined, comparator) + : array; + } + + /** + * Removes elements from `array` corresponding to `indexes` and returns an + * array of removed elements. + * + * **Note:** Unlike `_.at`, this method mutates `array`. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Array + * @param {Array} array The array to modify. + * @param {...(number|number[])} [indexes] The indexes of elements to remove. + * @returns {Array} Returns the new array of removed elements. + * @example + * + * var array = ['a', 'b', 'c', 'd']; + * var pulled = _.pullAt(array, [1, 3]); + * + * console.log(array); + * // => ['a', 'c'] + * + * console.log(pulled); + * // => ['b', 'd'] + */ + var pullAt = flatRest(function(array, indexes) { + var length = array == null ? 0 : array.length, + result = baseAt(array, indexes); + + basePullAt(array, arrayMap(indexes, function(index) { + return isIndex(index, length) ? +index : index; + }).sort(compareAscending)); + + return result; + }); + + /** + * Removes all elements from `array` that `predicate` returns truthy for + * and returns an array of the removed elements. The predicate is invoked + * with three arguments: (value, index, array). + * + * **Note:** Unlike `_.filter`, this method mutates `array`. Use `_.pull` + * to pull elements from an array by value. + * + * @static + * @memberOf _ + * @since 2.0.0 + * @category Array + * @param {Array} array The array to modify. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @returns {Array} Returns the new array of removed elements. + * @example + * + * var array = [1, 2, 3, 4]; + * var evens = _.remove(array, function(n) { + * return n % 2 == 0; + * }); + * + * console.log(array); + * // => [1, 3] + * + * console.log(evens); + * // => [2, 4] + */ + function remove(array, predicate) { + var result = []; + if (!(array && array.length)) { + return result; + } + var index = -1, + indexes = [], + length = array.length; + + predicate = getIteratee(predicate, 3); + while (++index < length) { + var value = array[index]; + if (predicate(value, index, array)) { + result.push(value); + indexes.push(index); + } + } + basePullAt(array, indexes); + return result; + } + + /** + * Reverses `array` so that the first element becomes the last, the second + * element becomes the second to last, and so on. + * + * **Note:** This method mutates `array` and is based on + * [`Array#reverse`](https://mdn.io/Array/reverse). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to modify. + * @returns {Array} Returns `array`. + * @example + * + * var array = [1, 2, 3]; + * + * _.reverse(array); + * // => [3, 2, 1] + * + * console.log(array); + * // => [3, 2, 1] + */ + function reverse(array) { + return array == null ? array : nativeReverse.call(array); + } + + /** + * Creates a slice of `array` from `start` up to, but not including, `end`. + * + * **Note:** This method is used instead of + * [`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are + * returned. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Array + * @param {Array} array The array to slice. + * @param {number} [start=0] The start position. + * @param {number} [end=array.length] The end position. + * @returns {Array} Returns the slice of `array`. + */ + function slice(array, start, end) { + var length = array == null ? 0 : array.length; + if (!length) { + return []; + } + if (end && typeof end != 'number' && isIterateeCall(array, start, end)) { + start = 0; + end = length; + } + else { + start = start == null ? 0 : toInteger(start); + end = end === undefined ? length : toInteger(end); + } + return baseSlice(array, start, end); + } + + /** + * Uses a binary search to determine the lowest index at which `value` + * should be inserted into `array` in order to maintain its sort order. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {Array} array The sorted array to inspect. + * @param {*} value The value to evaluate. + * @returns {number} Returns the index at which `value` should be inserted + * into `array`. + * @example + * + * _.sortedIndex([30, 50], 40); + * // => 1 + */ + function sortedIndex(array, value) { + return baseSortedIndex(array, value); + } + + /** + * This method is like `_.sortedIndex` except that it accepts `iteratee` + * which is invoked for `value` and each element of `array` to compute their + * sort ranking. The iteratee is invoked with one argument: (value). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The sorted array to inspect. + * @param {*} value The value to evaluate. + * @param {Function} [iteratee=_.identity] The iteratee invoked per element. + * @returns {number} Returns the index at which `value` should be inserted + * into `array`. + * @example + * + * var objects = [{ 'x': 4 }, { 'x': 5 }]; + * + * _.sortedIndexBy(objects, { 'x': 4 }, function(o) { return o.x; }); + * // => 0 + * + * // The `_.property` iteratee shorthand. + * _.sortedIndexBy(objects, { 'x': 4 }, 'x'); + * // => 0 + */ + function sortedIndexBy(array, value, iteratee) { + return baseSortedIndexBy(array, value, getIteratee(iteratee, 2)); + } + + /** + * This method is like `_.indexOf` except that it performs a binary + * search on a sorted `array`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {*} value The value to search for. + * @returns {number} Returns the index of the matched value, else `-1`. + * @example + * + * _.sortedIndexOf([4, 5, 5, 5, 6], 5); + * // => 1 + */ + function sortedIndexOf(array, value) { + var length = array == null ? 0 : array.length; + if (length) { + var index = baseSortedIndex(array, value); + if (index < length && eq(array[index], value)) { + return index; + } + } + return -1; + } + + /** + * This method is like `_.sortedIndex` except that it returns the highest + * index at which `value` should be inserted into `array` in order to + * maintain its sort order. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Array + * @param {Array} array The sorted array to inspect. + * @param {*} value The value to evaluate. + * @returns {number} Returns the index at which `value` should be inserted + * into `array`. + * @example + * + * _.sortedLastIndex([4, 5, 5, 5, 6], 5); + * // => 4 + */ + function sortedLastIndex(array, value) { + return baseSortedIndex(array, value, true); + } + + /** + * This method is like `_.sortedLastIndex` except that it accepts `iteratee` + * which is invoked for `value` and each element of `array` to compute their + * sort ranking. The iteratee is invoked with one argument: (value). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The sorted array to inspect. + * @param {*} value The value to evaluate. + * @param {Function} [iteratee=_.identity] The iteratee invoked per element. + * @returns {number} Returns the index at which `value` should be inserted + * into `array`. + * @example + * + * var objects = [{ 'x': 4 }, { 'x': 5 }]; + * + * _.sortedLastIndexBy(objects, { 'x': 4 }, function(o) { return o.x; }); + * // => 1 + * + * // The `_.property` iteratee shorthand. + * _.sortedLastIndexBy(objects, { 'x': 4 }, 'x'); + * // => 1 + */ + function sortedLastIndexBy(array, value, iteratee) { + return baseSortedIndexBy(array, value, getIteratee(iteratee, 2), true); + } + + /** + * This method is like `_.lastIndexOf` except that it performs a binary + * search on a sorted `array`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {*} value The value to search for. + * @returns {number} Returns the index of the matched value, else `-1`. + * @example + * + * _.sortedLastIndexOf([4, 5, 5, 5, 6], 5); + * // => 3 + */ + function sortedLastIndexOf(array, value) { + var length = array == null ? 0 : array.length; + if (length) { + var index = baseSortedIndex(array, value, true) - 1; + if (eq(array[index], value)) { + return index; + } + } + return -1; + } + + /** + * This method is like `_.uniq` except that it's designed and optimized + * for sorted arrays. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to inspect. + * @returns {Array} Returns the new duplicate free array. + * @example + * + * _.sortedUniq([1, 1, 2]); + * // => [1, 2] + */ + function sortedUniq(array) { + return (array && array.length) + ? baseSortedUniq(array) + : []; + } + + /** + * This method is like `_.uniqBy` except that it's designed and optimized + * for sorted arrays. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {Function} [iteratee] The iteratee invoked per element. + * @returns {Array} Returns the new duplicate free array. + * @example + * + * _.sortedUniqBy([1.1, 1.2, 2.3, 2.4], Math.floor); + * // => [1.1, 2.3] + */ + function sortedUniqBy(array, iteratee) { + return (array && array.length) + ? baseSortedUniq(array, getIteratee(iteratee, 2)) + : []; + } + + /** + * Gets all but the first element of `array`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to query. + * @returns {Array} Returns the slice of `array`. + * @example + * + * _.tail([1, 2, 3]); + * // => [2, 3] + */ + function tail(array) { + var length = array == null ? 0 : array.length; + return length ? baseSlice(array, 1, length) : []; + } + + /** + * Creates a slice of `array` with `n` elements taken from the beginning. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {Array} array The array to query. + * @param {number} [n=1] The number of elements to take. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {Array} Returns the slice of `array`. + * @example + * + * _.take([1, 2, 3]); + * // => [1] + * + * _.take([1, 2, 3], 2); + * // => [1, 2] + * + * _.take([1, 2, 3], 5); + * // => [1, 2, 3] + * + * _.take([1, 2, 3], 0); + * // => [] + */ + function take(array, n, guard) { + if (!(array && array.length)) { + return []; + } + n = (guard || n === undefined) ? 1 : toInteger(n); + return baseSlice(array, 0, n < 0 ? 0 : n); + } + + /** + * Creates a slice of `array` with `n` elements taken from the end. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Array + * @param {Array} array The array to query. + * @param {number} [n=1] The number of elements to take. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {Array} Returns the slice of `array`. + * @example + * + * _.takeRight([1, 2, 3]); + * // => [3] + * + * _.takeRight([1, 2, 3], 2); + * // => [2, 3] + * + * _.takeRight([1, 2, 3], 5); + * // => [1, 2, 3] + * + * _.takeRight([1, 2, 3], 0); + * // => [] + */ + function takeRight(array, n, guard) { + var length = array == null ? 0 : array.length; + if (!length) { + return []; + } + n = (guard || n === undefined) ? 1 : toInteger(n); + n = length - n; + return baseSlice(array, n < 0 ? 0 : n, length); + } + + /** + * Creates a slice of `array` with elements taken from the end. Elements are + * taken until `predicate` returns falsey. The predicate is invoked with + * three arguments: (value, index, array). + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Array + * @param {Array} array The array to query. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @returns {Array} Returns the slice of `array`. + * @example + * + * var users = [ + * { 'user': 'barney', 'active': true }, + * { 'user': 'fred', 'active': false }, + * { 'user': 'pebbles', 'active': false } + * ]; + * + * _.takeRightWhile(users, function(o) { return !o.active; }); + * // => objects for ['fred', 'pebbles'] + * + * // The `_.matches` iteratee shorthand. + * _.takeRightWhile(users, { 'user': 'pebbles', 'active': false }); + * // => objects for ['pebbles'] + * + * // The `_.matchesProperty` iteratee shorthand. + * _.takeRightWhile(users, ['active', false]); + * // => objects for ['fred', 'pebbles'] + * + * // The `_.property` iteratee shorthand. + * _.takeRightWhile(users, 'active'); + * // => [] + */ + function takeRightWhile(array, predicate) { + return (array && array.length) + ? baseWhile(array, getIteratee(predicate, 3), false, true) + : []; + } + + /** + * Creates a slice of `array` with elements taken from the beginning. Elements + * are taken until `predicate` returns falsey. The predicate is invoked with + * three arguments: (value, index, array). + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Array + * @param {Array} array The array to query. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @returns {Array} Returns the slice of `array`. + * @example + * + * var users = [ + * { 'user': 'barney', 'active': false }, + * { 'user': 'fred', 'active': false }, + * { 'user': 'pebbles', 'active': true } + * ]; + * + * _.takeWhile(users, function(o) { return !o.active; }); + * // => objects for ['barney', 'fred'] + * + * // The `_.matches` iteratee shorthand. + * _.takeWhile(users, { 'user': 'barney', 'active': false }); + * // => objects for ['barney'] + * + * // The `_.matchesProperty` iteratee shorthand. + * _.takeWhile(users, ['active', false]); + * // => objects for ['barney', 'fred'] + * + * // The `_.property` iteratee shorthand. + * _.takeWhile(users, 'active'); + * // => [] + */ + function takeWhile(array, predicate) { + return (array && array.length) + ? baseWhile(array, getIteratee(predicate, 3)) + : []; + } + + /** + * Creates an array of unique values, in order, from all given arrays using + * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * for equality comparisons. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {...Array} [arrays] The arrays to inspect. + * @returns {Array} Returns the new array of combined values. + * @example + * + * _.union([2], [1, 2]); + * // => [2, 1] + */ + var union = baseRest(function(arrays) { + return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true)); + }); + + /** + * This method is like `_.union` except that it accepts `iteratee` which is + * invoked for each element of each `arrays` to generate the criterion by + * which uniqueness is computed. Result values are chosen from the first + * array in which the value occurs. The iteratee is invoked with one argument: + * (value). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {...Array} [arrays] The arrays to inspect. + * @param {Function} [iteratee=_.identity] The iteratee invoked per element. + * @returns {Array} Returns the new array of combined values. + * @example + * + * _.unionBy([2.1], [1.2, 2.3], Math.floor); + * // => [2.1, 1.2] + * + * // The `_.property` iteratee shorthand. + * _.unionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x'); + * // => [{ 'x': 1 }, { 'x': 2 }] + */ + var unionBy = baseRest(function(arrays) { + var iteratee = last(arrays); + if (isArrayLikeObject(iteratee)) { + iteratee = undefined; + } + return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), getIteratee(iteratee, 2)); + }); + + /** + * This method is like `_.union` except that it accepts `comparator` which + * is invoked to compare elements of `arrays`. Result values are chosen from + * the first array in which the value occurs. The comparator is invoked + * with two arguments: (arrVal, othVal). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {...Array} [arrays] The arrays to inspect. + * @param {Function} [comparator] The comparator invoked per element. + * @returns {Array} Returns the new array of combined values. + * @example + * + * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]; + * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }]; + * + * _.unionWith(objects, others, _.isEqual); + * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }] + */ + var unionWith = baseRest(function(arrays) { + var comparator = last(arrays); + comparator = typeof comparator == 'function' ? comparator : undefined; + return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), undefined, comparator); + }); + + /** + * Creates a duplicate-free version of an array, using + * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * for equality comparisons, in which only the first occurrence of each element + * is kept. The order of result values is determined by the order they occur + * in the array. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {Array} array The array to inspect. + * @returns {Array} Returns the new duplicate free array. + * @example + * + * _.uniq([2, 1, 2]); + * // => [2, 1] + */ + function uniq(array) { + return (array && array.length) ? baseUniq(array) : []; + } + + /** + * This method is like `_.uniq` except that it accepts `iteratee` which is + * invoked for each element in `array` to generate the criterion by which + * uniqueness is computed. The order of result values is determined by the + * order they occur in the array. The iteratee is invoked with one argument: + * (value). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {Function} [iteratee=_.identity] The iteratee invoked per element. + * @returns {Array} Returns the new duplicate free array. + * @example + * + * _.uniqBy([2.1, 1.2, 2.3], Math.floor); + * // => [2.1, 1.2] + * + * // The `_.property` iteratee shorthand. + * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x'); + * // => [{ 'x': 1 }, { 'x': 2 }] + */ + function uniqBy(array, iteratee) { + return (array && array.length) ? baseUniq(array, getIteratee(iteratee, 2)) : []; + } + + /** + * This method is like `_.uniq` except that it accepts `comparator` which + * is invoked to compare elements of `array`. The order of result values is + * determined by the order they occur in the array.The comparator is invoked + * with two arguments: (arrVal, othVal). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {Function} [comparator] The comparator invoked per element. + * @returns {Array} Returns the new duplicate free array. + * @example + * + * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }]; + * + * _.uniqWith(objects, _.isEqual); + * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }] + */ + function uniqWith(array, comparator) { + comparator = typeof comparator == 'function' ? comparator : undefined; + return (array && array.length) ? baseUniq(array, undefined, comparator) : []; + } + + /** + * This method is like `_.zip` except that it accepts an array of grouped + * elements and creates an array regrouping the elements to their pre-zip + * configuration. + * + * @static + * @memberOf _ + * @since 1.2.0 + * @category Array + * @param {Array} array The array of grouped elements to process. + * @returns {Array} Returns the new array of regrouped elements. + * @example + * + * var zipped = _.zip(['a', 'b'], [1, 2], [true, false]); + * // => [['a', 1, true], ['b', 2, false]] + * + * _.unzip(zipped); + * // => [['a', 'b'], [1, 2], [true, false]] + */ + function unzip(array) { + if (!(array && array.length)) { + return []; + } + var length = 0; + array = arrayFilter(array, function(group) { + if (isArrayLikeObject(group)) { + length = nativeMax(group.length, length); + return true; + } + }); + return baseTimes(length, function(index) { + return arrayMap(array, baseProperty(index)); + }); + } + + /** + * This method is like `_.unzip` except that it accepts `iteratee` to specify + * how regrouped values should be combined. The iteratee is invoked with the + * elements of each group: (...group). + * + * @static + * @memberOf _ + * @since 3.8.0 + * @category Array + * @param {Array} array The array of grouped elements to process. + * @param {Function} [iteratee=_.identity] The function to combine + * regrouped values. + * @returns {Array} Returns the new array of regrouped elements. + * @example + * + * var zipped = _.zip([1, 2], [10, 20], [100, 200]); + * // => [[1, 10, 100], [2, 20, 200]] + * + * _.unzipWith(zipped, _.add); + * // => [3, 30, 300] + */ + function unzipWith(array, iteratee) { + if (!(array && array.length)) { + return []; + } + var result = unzip(array); + if (iteratee == null) { + return result; + } + return arrayMap(result, function(group) { + return apply(iteratee, undefined, group); + }); + } + + /** + * Creates an array excluding all given values using + * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * for equality comparisons. + * + * **Note:** Unlike `_.pull`, this method returns a new array. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {...*} [values] The values to exclude. + * @returns {Array} Returns the new array of filtered values. + * @see _.difference, _.xor + * @example + * + * _.without([2, 1, 2, 3], 1, 2); + * // => [3] + */ + var without = baseRest(function(array, values) { + return isArrayLikeObject(array) + ? baseDifference(array, values) + : []; + }); + + /** + * Creates an array of unique values that is the + * [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference) + * of the given arrays. The order of result values is determined by the order + * they occur in the arrays. + * + * @static + * @memberOf _ + * @since 2.4.0 + * @category Array + * @param {...Array} [arrays] The arrays to inspect. + * @returns {Array} Returns the new array of filtered values. + * @see _.difference, _.without + * @example + * + * _.xor([2, 1], [2, 3]); + * // => [1, 3] + */ + var xor = baseRest(function(arrays) { + return baseXor(arrayFilter(arrays, isArrayLikeObject)); + }); + + /** + * This method is like `_.xor` except that it accepts `iteratee` which is + * invoked for each element of each `arrays` to generate the criterion by + * which by which they're compared. The order of result values is determined + * by the order they occur in the arrays. The iteratee is invoked with one + * argument: (value). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {...Array} [arrays] The arrays to inspect. + * @param {Function} [iteratee=_.identity] The iteratee invoked per element. + * @returns {Array} Returns the new array of filtered values. + * @example + * + * _.xorBy([2.1, 1.2], [2.3, 3.4], Math.floor); + * // => [1.2, 3.4] + * + * // The `_.property` iteratee shorthand. + * _.xorBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x'); + * // => [{ 'x': 2 }] + */ + var xorBy = baseRest(function(arrays) { + var iteratee = last(arrays); + if (isArrayLikeObject(iteratee)) { + iteratee = undefined; + } + return baseXor(arrayFilter(arrays, isArrayLikeObject), getIteratee(iteratee, 2)); + }); + + /** + * This method is like `_.xor` except that it accepts `comparator` which is + * invoked to compare elements of `arrays`. The order of result values is + * determined by the order they occur in the arrays. The comparator is invoked + * with two arguments: (arrVal, othVal). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {...Array} [arrays] The arrays to inspect. + * @param {Function} [comparator] The comparator invoked per element. + * @returns {Array} Returns the new array of filtered values. + * @example + * + * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]; + * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }]; + * + * _.xorWith(objects, others, _.isEqual); + * // => [{ 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }] + */ + var xorWith = baseRest(function(arrays) { + var comparator = last(arrays); + comparator = typeof comparator == 'function' ? comparator : undefined; + return baseXor(arrayFilter(arrays, isArrayLikeObject), undefined, comparator); + }); + + /** + * Creates an array of grouped elements, the first of which contains the + * first elements of the given arrays, the second of which contains the + * second elements of the given arrays, and so on. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {...Array} [arrays] The arrays to process. + * @returns {Array} Returns the new array of grouped elements. + * @example + * + * _.zip(['a', 'b'], [1, 2], [true, false]); + * // => [['a', 1, true], ['b', 2, false]] + */ + var zip = baseRest(unzip); + + /** + * This method is like `_.fromPairs` except that it accepts two arrays, + * one of property identifiers and one of corresponding values. + * + * @static + * @memberOf _ + * @since 0.4.0 + * @category Array + * @param {Array} [props=[]] The property identifiers. + * @param {Array} [values=[]] The property values. + * @returns {Object} Returns the new object. + * @example + * + * _.zipObject(['a', 'b'], [1, 2]); + * // => { 'a': 1, 'b': 2 } + */ + function zipObject(props, values) { + return baseZipObject(props || [], values || [], assignValue); + } + + /** + * This method is like `_.zipObject` except that it supports property paths. + * + * @static + * @memberOf _ + * @since 4.1.0 + * @category Array + * @param {Array} [props=[]] The property identifiers. + * @param {Array} [values=[]] The property values. + * @returns {Object} Returns the new object. + * @example + * + * _.zipObjectDeep(['a.b[0].c', 'a.b[1].d'], [1, 2]); + * // => { 'a': { 'b': [{ 'c': 1 }, { 'd': 2 }] } } + */ + function zipObjectDeep(props, values) { + return baseZipObject(props || [], values || [], baseSet); + } + + /** + * This method is like `_.zip` except that it accepts `iteratee` to specify + * how grouped values should be combined. The iteratee is invoked with the + * elements of each group: (...group). + * + * @static + * @memberOf _ + * @since 3.8.0 + * @category Array + * @param {...Array} [arrays] The arrays to process. + * @param {Function} [iteratee=_.identity] The function to combine + * grouped values. + * @returns {Array} Returns the new array of grouped elements. + * @example + * + * _.zipWith([1, 2], [10, 20], [100, 200], function(a, b, c) { + * return a + b + c; + * }); + * // => [111, 222] + */ + var zipWith = baseRest(function(arrays) { + var length = arrays.length, + iteratee = length > 1 ? arrays[length - 1] : undefined; + + iteratee = typeof iteratee == 'function' ? (arrays.pop(), iteratee) : undefined; + return unzipWith(arrays, iteratee); + }); + + /*------------------------------------------------------------------------*/ + + /** + * Creates a `lodash` wrapper instance that wraps `value` with explicit method + * chain sequences enabled. The result of such sequences must be unwrapped + * with `_#value`. + * + * @static + * @memberOf _ + * @since 1.3.0 + * @category Seq + * @param {*} value The value to wrap. + * @returns {Object} Returns the new `lodash` wrapper instance. + * @example + * + * var users = [ + * { 'user': 'barney', 'age': 36 }, + * { 'user': 'fred', 'age': 40 }, + * { 'user': 'pebbles', 'age': 1 } + * ]; + * + * var youngest = _ + * .chain(users) + * .sortBy('age') + * .map(function(o) { + * return o.user + ' is ' + o.age; + * }) + * .head() + * .value(); + * // => 'pebbles is 1' + */ + function chain(value) { + var result = lodash(value); + result.__chain__ = true; + return result; + } + + /** + * This method invokes `interceptor` and returns `value`. The interceptor + * is invoked with one argument; (value). The purpose of this method is to + * "tap into" a method chain sequence in order to modify intermediate results. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Seq + * @param {*} value The value to provide to `interceptor`. + * @param {Function} interceptor The function to invoke. + * @returns {*} Returns `value`. + * @example + * + * _([1, 2, 3]) + * .tap(function(array) { + * // Mutate input array. + * array.pop(); + * }) + * .reverse() + * .value(); + * // => [2, 1] + */ + function tap(value, interceptor) { + interceptor(value); + return value; + } + + /** + * This method is like `_.tap` except that it returns the result of `interceptor`. + * The purpose of this method is to "pass thru" values replacing intermediate + * results in a method chain sequence. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Seq + * @param {*} value The value to provide to `interceptor`. + * @param {Function} interceptor The function to invoke. + * @returns {*} Returns the result of `interceptor`. + * @example + * + * _(' abc ') + * .chain() + * .trim() + * .thru(function(value) { + * return [value]; + * }) + * .value(); + * // => ['abc'] + */ + function thru(value, interceptor) { + return interceptor(value); + } + + /** + * This method is the wrapper version of `_.at`. + * + * @name at + * @memberOf _ + * @since 1.0.0 + * @category Seq + * @param {...(string|string[])} [paths] The property paths to pick. + * @returns {Object} Returns the new `lodash` wrapper instance. + * @example + * + * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] }; + * + * _(object).at(['a[0].b.c', 'a[1]']).value(); + * // => [3, 4] + */ + var wrapperAt = flatRest(function(paths) { + var length = paths.length, + start = length ? paths[0] : 0, + value = this.__wrapped__, + interceptor = function(object) { return baseAt(object, paths); }; + + if (length > 1 || this.__actions__.length || + !(value instanceof LazyWrapper) || !isIndex(start)) { + return this.thru(interceptor); + } + value = value.slice(start, +start + (length ? 1 : 0)); + value.__actions__.push({ + 'func': thru, + 'args': [interceptor], + 'thisArg': undefined + }); + return new LodashWrapper(value, this.__chain__).thru(function(array) { + if (length && !array.length) { + array.push(undefined); + } + return array; + }); + }); + + /** + * Creates a `lodash` wrapper instance with explicit method chain sequences enabled. + * + * @name chain + * @memberOf _ + * @since 0.1.0 + * @category Seq + * @returns {Object} Returns the new `lodash` wrapper instance. + * @example + * + * var users = [ + * { 'user': 'barney', 'age': 36 }, + * { 'user': 'fred', 'age': 40 } + * ]; + * + * // A sequence without explicit chaining. + * _(users).head(); + * // => { 'user': 'barney', 'age': 36 } + * + * // A sequence with explicit chaining. + * _(users) + * .chain() + * .head() + * .pick('user') + * .value(); + * // => { 'user': 'barney' } + */ + function wrapperChain() { + return chain(this); + } + + /** + * Executes the chain sequence and returns the wrapped result. + * + * @name commit + * @memberOf _ + * @since 3.2.0 + * @category Seq + * @returns {Object} Returns the new `lodash` wrapper instance. + * @example + * + * var array = [1, 2]; + * var wrapped = _(array).push(3); + * + * console.log(array); + * // => [1, 2] + * + * wrapped = wrapped.commit(); + * console.log(array); + * // => [1, 2, 3] + * + * wrapped.last(); + * // => 3 + * + * console.log(array); + * // => [1, 2, 3] + */ + function wrapperCommit() { + return new LodashWrapper(this.value(), this.__chain__); + } + + /** + * Gets the next value on a wrapped object following the + * [iterator protocol](https://mdn.io/iteration_protocols#iterator). + * + * @name next + * @memberOf _ + * @since 4.0.0 + * @category Seq + * @returns {Object} Returns the next iterator value. + * @example + * + * var wrapped = _([1, 2]); + * + * wrapped.next(); + * // => { 'done': false, 'value': 1 } + * + * wrapped.next(); + * // => { 'done': false, 'value': 2 } + * + * wrapped.next(); + * // => { 'done': true, 'value': undefined } + */ + function wrapperNext() { + if (this.__values__ === undefined) { + this.__values__ = toArray(this.value()); + } + var done = this.__index__ >= this.__values__.length, + value = done ? undefined : this.__values__[this.__index__++]; + + return { 'done': done, 'value': value }; + } + + /** + * Enables the wrapper to be iterable. + * + * @name Symbol.iterator + * @memberOf _ + * @since 4.0.0 + * @category Seq + * @returns {Object} Returns the wrapper object. + * @example + * + * var wrapped = _([1, 2]); + * + * wrapped[Symbol.iterator]() === wrapped; + * // => true + * + * Array.from(wrapped); + * // => [1, 2] + */ + function wrapperToIterator() { + return this; + } + + /** + * Creates a clone of the chain sequence planting `value` as the wrapped value. + * + * @name plant + * @memberOf _ + * @since 3.2.0 + * @category Seq + * @param {*} value The value to plant. + * @returns {Object} Returns the new `lodash` wrapper instance. + * @example + * + * function square(n) { + * return n * n; + * } + * + * var wrapped = _([1, 2]).map(square); + * var other = wrapped.plant([3, 4]); + * + * other.value(); + * // => [9, 16] + * + * wrapped.value(); + * // => [1, 4] + */ + function wrapperPlant(value) { + var result, + parent = this; + + while (parent instanceof baseLodash) { + var clone = wrapperClone(parent); + clone.__index__ = 0; + clone.__values__ = undefined; + if (result) { + previous.__wrapped__ = clone; + } else { + result = clone; + } + var previous = clone; + parent = parent.__wrapped__; + } + previous.__wrapped__ = value; + return result; + } + + /** + * This method is the wrapper version of `_.reverse`. + * + * **Note:** This method mutates the wrapped array. + * + * @name reverse + * @memberOf _ + * @since 0.1.0 + * @category Seq + * @returns {Object} Returns the new `lodash` wrapper instance. + * @example + * + * var array = [1, 2, 3]; + * + * _(array).reverse().value() + * // => [3, 2, 1] + * + * console.log(array); + * // => [3, 2, 1] + */ + function wrapperReverse() { + var value = this.__wrapped__; + if (value instanceof LazyWrapper) { + var wrapped = value; + if (this.__actions__.length) { + wrapped = new LazyWrapper(this); + } + wrapped = wrapped.reverse(); + wrapped.__actions__.push({ + 'func': thru, + 'args': [reverse], + 'thisArg': undefined + }); + return new LodashWrapper(wrapped, this.__chain__); + } + return this.thru(reverse); + } + + /** + * Executes the chain sequence to resolve the unwrapped value. + * + * @name value + * @memberOf _ + * @since 0.1.0 + * @alias toJSON, valueOf + * @category Seq + * @returns {*} Returns the resolved unwrapped value. + * @example + * + * _([1, 2, 3]).value(); + * // => [1, 2, 3] + */ + function wrapperValue() { + return baseWrapperValue(this.__wrapped__, this.__actions__); + } + + /*------------------------------------------------------------------------*/ + + /** + * Creates an object composed of keys generated from the results of running + * each element of `collection` thru `iteratee`. The corresponding value of + * each key is the number of times the key was returned by `iteratee`. The + * iteratee is invoked with one argument: (value). + * + * @static + * @memberOf _ + * @since 0.5.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The iteratee to transform keys. + * @returns {Object} Returns the composed aggregate object. + * @example + * + * _.countBy([6.1, 4.2, 6.3], Math.floor); + * // => { '4': 1, '6': 2 } + * + * // The `_.property` iteratee shorthand. + * _.countBy(['one', 'two', 'three'], 'length'); + * // => { '3': 2, '5': 1 } + */ + var countBy = createAggregator(function(result, value, key) { + if (hasOwnProperty.call(result, key)) { + ++result[key]; + } else { + baseAssignValue(result, key, 1); + } + }); + + /** + * Checks if `predicate` returns truthy for **all** elements of `collection`. + * Iteration is stopped once `predicate` returns falsey. The predicate is + * invoked with three arguments: (value, index|key, collection). + * + * **Note:** This method returns `true` for + * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because + * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of + * elements of empty collections. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {boolean} Returns `true` if all elements pass the predicate check, + * else `false`. + * @example + * + * _.every([true, 1, null, 'yes'], Boolean); + * // => false + * + * var users = [ + * { 'user': 'barney', 'age': 36, 'active': false }, + * { 'user': 'fred', 'age': 40, 'active': false } + * ]; + * + * // The `_.matches` iteratee shorthand. + * _.every(users, { 'user': 'barney', 'active': false }); + * // => false + * + * // The `_.matchesProperty` iteratee shorthand. + * _.every(users, ['active', false]); + * // => true + * + * // The `_.property` iteratee shorthand. + * _.every(users, 'active'); + * // => false + */ + function every(collection, predicate, guard) { + var func = isArray(collection) ? arrayEvery : baseEvery; + if (guard && isIterateeCall(collection, predicate, guard)) { + predicate = undefined; + } + return func(collection, getIteratee(predicate, 3)); + } + + /** + * Iterates over elements of `collection`, returning an array of all elements + * `predicate` returns truthy for. The predicate is invoked with three + * arguments: (value, index|key, collection). + * + * **Note:** Unlike `_.remove`, this method returns a new array. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @returns {Array} Returns the new filtered array. + * @see _.reject + * @example + * + * var users = [ + * { 'user': 'barney', 'age': 36, 'active': true }, + * { 'user': 'fred', 'age': 40, 'active': false } + * ]; + * + * _.filter(users, function(o) { return !o.active; }); + * // => objects for ['fred'] + * + * // The `_.matches` iteratee shorthand. + * _.filter(users, { 'age': 36, 'active': true }); + * // => objects for ['barney'] + * + * // The `_.matchesProperty` iteratee shorthand. + * _.filter(users, ['active', false]); + * // => objects for ['fred'] + * + * // The `_.property` iteratee shorthand. + * _.filter(users, 'active'); + * // => objects for ['barney'] + * + * // Combining several predicates using `_.overEvery` or `_.overSome`. + * _.filter(users, _.overSome([{ 'age': 36 }, ['age', 40]])); + * // => objects for ['fred', 'barney'] + */ + function filter(collection, predicate) { + var func = isArray(collection) ? arrayFilter : baseFilter; + return func(collection, getIteratee(predicate, 3)); + } + + /** + * Iterates over elements of `collection`, returning the first element + * `predicate` returns truthy for. The predicate is invoked with three + * arguments: (value, index|key, collection). + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to inspect. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @param {number} [fromIndex=0] The index to search from. + * @returns {*} Returns the matched element, else `undefined`. + * @example + * + * var users = [ + * { 'user': 'barney', 'age': 36, 'active': true }, + * { 'user': 'fred', 'age': 40, 'active': false }, + * { 'user': 'pebbles', 'age': 1, 'active': true } + * ]; + * + * _.find(users, function(o) { return o.age < 40; }); + * // => object for 'barney' + * + * // The `_.matches` iteratee shorthand. + * _.find(users, { 'age': 1, 'active': true }); + * // => object for 'pebbles' + * + * // The `_.matchesProperty` iteratee shorthand. + * _.find(users, ['active', false]); + * // => object for 'fred' + * + * // The `_.property` iteratee shorthand. + * _.find(users, 'active'); + * // => object for 'barney' + */ + var find = createFind(findIndex); + + /** + * This method is like `_.find` except that it iterates over elements of + * `collection` from right to left. + * + * @static + * @memberOf _ + * @since 2.0.0 + * @category Collection + * @param {Array|Object} collection The collection to inspect. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @param {number} [fromIndex=collection.length-1] The index to search from. + * @returns {*} Returns the matched element, else `undefined`. + * @example + * + * _.findLast([1, 2, 3, 4], function(n) { + * return n % 2 == 1; + * }); + * // => 3 + */ + var findLast = createFind(findLastIndex); + + /** + * Creates a flattened array of values by running each element in `collection` + * thru `iteratee` and flattening the mapped results. The iteratee is invoked + * with three arguments: (value, index|key, collection). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Array} Returns the new flattened array. + * @example + * + * function duplicate(n) { + * return [n, n]; + * } + * + * _.flatMap([1, 2], duplicate); + * // => [1, 1, 2, 2] + */ + function flatMap(collection, iteratee) { + return baseFlatten(map(collection, iteratee), 1); + } + + /** + * This method is like `_.flatMap` except that it recursively flattens the + * mapped results. + * + * @static + * @memberOf _ + * @since 4.7.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Array} Returns the new flattened array. + * @example + * + * function duplicate(n) { + * return [[[n, n]]]; + * } + * + * _.flatMapDeep([1, 2], duplicate); + * // => [1, 1, 2, 2] + */ + function flatMapDeep(collection, iteratee) { + return baseFlatten(map(collection, iteratee), INFINITY); + } + + /** + * This method is like `_.flatMap` except that it recursively flattens the + * mapped results up to `depth` times. + * + * @static + * @memberOf _ + * @since 4.7.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @param {number} [depth=1] The maximum recursion depth. + * @returns {Array} Returns the new flattened array. + * @example + * + * function duplicate(n) { + * return [[[n, n]]]; + * } + * + * _.flatMapDepth([1, 2], duplicate, 2); + * // => [[1, 1], [2, 2]] + */ + function flatMapDepth(collection, iteratee, depth) { + depth = depth === undefined ? 1 : toInteger(depth); + return baseFlatten(map(collection, iteratee), depth); + } + + /** + * Iterates over elements of `collection` and invokes `iteratee` for each element. + * The iteratee is invoked with three arguments: (value, index|key, collection). + * Iteratee functions may exit iteration early by explicitly returning `false`. + * + * **Note:** As with other "Collections" methods, objects with a "length" + * property are iterated like arrays. To avoid this behavior use `_.forIn` + * or `_.forOwn` for object iteration. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @alias each + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Array|Object} Returns `collection`. + * @see _.forEachRight + * @example + * + * _.forEach([1, 2], function(value) { + * console.log(value); + * }); + * // => Logs `1` then `2`. + * + * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) { + * console.log(key); + * }); + * // => Logs 'a' then 'b' (iteration order is not guaranteed). + */ + function forEach(collection, iteratee) { + var func = isArray(collection) ? arrayEach : baseEach; + return func(collection, getIteratee(iteratee, 3)); + } + + /** + * This method is like `_.forEach` except that it iterates over elements of + * `collection` from right to left. + * + * @static + * @memberOf _ + * @since 2.0.0 + * @alias eachRight + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Array|Object} Returns `collection`. + * @see _.forEach + * @example + * + * _.forEachRight([1, 2], function(value) { + * console.log(value); + * }); + * // => Logs `2` then `1`. + */ + function forEachRight(collection, iteratee) { + var func = isArray(collection) ? arrayEachRight : baseEachRight; + return func(collection, getIteratee(iteratee, 3)); + } + + /** + * Creates an object composed of keys generated from the results of running + * each element of `collection` thru `iteratee`. The order of grouped values + * is determined by the order they occur in `collection`. The corresponding + * value of each key is an array of elements responsible for generating the + * key. The iteratee is invoked with one argument: (value). + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The iteratee to transform keys. + * @returns {Object} Returns the composed aggregate object. + * @example + * + * _.groupBy([6.1, 4.2, 6.3], Math.floor); + * // => { '4': [4.2], '6': [6.1, 6.3] } + * + * // The `_.property` iteratee shorthand. + * _.groupBy(['one', 'two', 'three'], 'length'); + * // => { '3': ['one', 'two'], '5': ['three'] } + */ + var groupBy = createAggregator(function(result, value, key) { + if (hasOwnProperty.call(result, key)) { + result[key].push(value); + } else { + baseAssignValue(result, key, [value]); + } + }); + + /** + * Checks if `value` is in `collection`. If `collection` is a string, it's + * checked for a substring of `value`, otherwise + * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * is used for equality comparisons. If `fromIndex` is negative, it's used as + * the offset from the end of `collection`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object|string} collection The collection to inspect. + * @param {*} value The value to search for. + * @param {number} [fromIndex=0] The index to search from. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`. + * @returns {boolean} Returns `true` if `value` is found, else `false`. + * @example + * + * _.includes([1, 2, 3], 1); + * // => true + * + * _.includes([1, 2, 3], 1, 2); + * // => false + * + * _.includes({ 'a': 1, 'b': 2 }, 1); + * // => true + * + * _.includes('abcd', 'bc'); + * // => true + */ + function includes(collection, value, fromIndex, guard) { + collection = isArrayLike(collection) ? collection : values(collection); + fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0; + + var length = collection.length; + if (fromIndex < 0) { + fromIndex = nativeMax(length + fromIndex, 0); + } + return isString(collection) + ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1) + : (!!length && baseIndexOf(collection, value, fromIndex) > -1); + } + + /** + * Invokes the method at `path` of each element in `collection`, returning + * an array of the results of each invoked method. Any additional arguments + * are provided to each invoked method. If `path` is a function, it's invoked + * for, and `this` bound to, each element in `collection`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Array|Function|string} path The path of the method to invoke or + * the function invoked per iteration. + * @param {...*} [args] The arguments to invoke each method with. + * @returns {Array} Returns the array of results. + * @example + * + * _.invokeMap([[5, 1, 7], [3, 2, 1]], 'sort'); + * // => [[1, 5, 7], [1, 2, 3]] + * + * _.invokeMap([123, 456], String.prototype.split, ''); + * // => [['1', '2', '3'], ['4', '5', '6']] + */ + var invokeMap = baseRest(function(collection, path, args) { + var index = -1, + isFunc = typeof path == 'function', + result = isArrayLike(collection) ? Array(collection.length) : []; + + baseEach(collection, function(value) { + result[++index] = isFunc ? apply(path, value, args) : baseInvoke(value, path, args); + }); + return result; + }); + + /** + * Creates an object composed of keys generated from the results of running + * each element of `collection` thru `iteratee`. The corresponding value of + * each key is the last element responsible for generating the key. The + * iteratee is invoked with one argument: (value). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The iteratee to transform keys. + * @returns {Object} Returns the composed aggregate object. + * @example + * + * var array = [ + * { 'dir': 'left', 'code': 97 }, + * { 'dir': 'right', 'code': 100 } + * ]; + * + * _.keyBy(array, function(o) { + * return String.fromCharCode(o.code); + * }); + * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } } + * + * _.keyBy(array, 'dir'); + * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } } + */ + var keyBy = createAggregator(function(result, value, key) { + baseAssignValue(result, key, value); + }); + + /** + * Creates an array of values by running each element in `collection` thru + * `iteratee`. The iteratee is invoked with three arguments: + * (value, index|key, collection). + * + * Many lodash methods are guarded to work as iteratees for methods like + * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`. + * + * The guarded methods are: + * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`, + * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`, + * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`, + * `template`, `trim`, `trimEnd`, `trimStart`, and `words` + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Array} Returns the new mapped array. + * @example + * + * function square(n) { + * return n * n; + * } + * + * _.map([4, 8], square); + * // => [16, 64] + * + * _.map({ 'a': 4, 'b': 8 }, square); + * // => [16, 64] (iteration order is not guaranteed) + * + * var users = [ + * { 'user': 'barney' }, + * { 'user': 'fred' } + * ]; + * + * // The `_.property` iteratee shorthand. + * _.map(users, 'user'); + * // => ['barney', 'fred'] + */ + function map(collection, iteratee) { + var func = isArray(collection) ? arrayMap : baseMap; + return func(collection, getIteratee(iteratee, 3)); + } + + /** + * This method is like `_.sortBy` except that it allows specifying the sort + * orders of the iteratees to sort by. If `orders` is unspecified, all values + * are sorted in ascending order. Otherwise, specify an order of "desc" for + * descending or "asc" for ascending sort order of corresponding values. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Array[]|Function[]|Object[]|string[]} [iteratees=[_.identity]] + * The iteratees to sort by. + * @param {string[]} [orders] The sort orders of `iteratees`. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`. + * @returns {Array} Returns the new sorted array. + * @example + * + * var users = [ + * { 'user': 'fred', 'age': 48 }, + * { 'user': 'barney', 'age': 34 }, + * { 'user': 'fred', 'age': 40 }, + * { 'user': 'barney', 'age': 36 } + * ]; + * + * // Sort by `user` in ascending order and by `age` in descending order. + * _.orderBy(users, ['user', 'age'], ['asc', 'desc']); + * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]] + */ + function orderBy(collection, iteratees, orders, guard) { + if (collection == null) { + return []; + } + if (!isArray(iteratees)) { + iteratees = iteratees == null ? [] : [iteratees]; + } + orders = guard ? undefined : orders; + if (!isArray(orders)) { + orders = orders == null ? [] : [orders]; + } + return baseOrderBy(collection, iteratees, orders); + } + + /** + * Creates an array of elements split into two groups, the first of which + * contains elements `predicate` returns truthy for, the second of which + * contains elements `predicate` returns falsey for. The predicate is + * invoked with one argument: (value). + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @returns {Array} Returns the array of grouped elements. + * @example + * + * var users = [ + * { 'user': 'barney', 'age': 36, 'active': false }, + * { 'user': 'fred', 'age': 40, 'active': true }, + * { 'user': 'pebbles', 'age': 1, 'active': false } + * ]; + * + * _.partition(users, function(o) { return o.active; }); + * // => objects for [['fred'], ['barney', 'pebbles']] + * + * // The `_.matches` iteratee shorthand. + * _.partition(users, { 'age': 1, 'active': false }); + * // => objects for [['pebbles'], ['barney', 'fred']] + * + * // The `_.matchesProperty` iteratee shorthand. + * _.partition(users, ['active', false]); + * // => objects for [['barney', 'pebbles'], ['fred']] + * + * // The `_.property` iteratee shorthand. + * _.partition(users, 'active'); + * // => objects for [['fred'], ['barney', 'pebbles']] + */ + var partition = createAggregator(function(result, value, key) { + result[key ? 0 : 1].push(value); + }, function() { return [[], []]; }); + + /** + * Reduces `collection` to a value which is the accumulated result of running + * each element in `collection` thru `iteratee`, where each successive + * invocation is supplied the return value of the previous. If `accumulator` + * is not given, the first element of `collection` is used as the initial + * value. The iteratee is invoked with four arguments: + * (accumulator, value, index|key, collection). + * + * Many lodash methods are guarded to work as iteratees for methods like + * `_.reduce`, `_.reduceRight`, and `_.transform`. + * + * The guarded methods are: + * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`, + * and `sortBy` + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @param {*} [accumulator] The initial value. + * @returns {*} Returns the accumulated value. + * @see _.reduceRight + * @example + * + * _.reduce([1, 2], function(sum, n) { + * return sum + n; + * }, 0); + * // => 3 + * + * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) { + * (result[value] || (result[value] = [])).push(key); + * return result; + * }, {}); + * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed) + */ + function reduce(collection, iteratee, accumulator) { + var func = isArray(collection) ? arrayReduce : baseReduce, + initAccum = arguments.length < 3; + + return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEach); + } + + /** + * This method is like `_.reduce` except that it iterates over elements of + * `collection` from right to left. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @param {*} [accumulator] The initial value. + * @returns {*} Returns the accumulated value. + * @see _.reduce + * @example + * + * var array = [[0, 1], [2, 3], [4, 5]]; + * + * _.reduceRight(array, function(flattened, other) { + * return flattened.concat(other); + * }, []); + * // => [4, 5, 2, 3, 0, 1] + */ + function reduceRight(collection, iteratee, accumulator) { + var func = isArray(collection) ? arrayReduceRight : baseReduce, + initAccum = arguments.length < 3; + + return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEachRight); + } + + /** + * The opposite of `_.filter`; this method returns the elements of `collection` + * that `predicate` does **not** return truthy for. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @returns {Array} Returns the new filtered array. + * @see _.filter + * @example + * + * var users = [ + * { 'user': 'barney', 'age': 36, 'active': false }, + * { 'user': 'fred', 'age': 40, 'active': true } + * ]; + * + * _.reject(users, function(o) { return !o.active; }); + * // => objects for ['fred'] + * + * // The `_.matches` iteratee shorthand. + * _.reject(users, { 'age': 40, 'active': true }); + * // => objects for ['barney'] + * + * // The `_.matchesProperty` iteratee shorthand. + * _.reject(users, ['active', false]); + * // => objects for ['fred'] + * + * // The `_.property` iteratee shorthand. + * _.reject(users, 'active'); + * // => objects for ['barney'] + */ + function reject(collection, predicate) { + var func = isArray(collection) ? arrayFilter : baseFilter; + return func(collection, negate(getIteratee(predicate, 3))); + } + + /** + * Gets a random element from `collection`. + * + * @static + * @memberOf _ + * @since 2.0.0 + * @category Collection + * @param {Array|Object} collection The collection to sample. + * @returns {*} Returns the random element. + * @example + * + * _.sample([1, 2, 3, 4]); + * // => 2 + */ + function sample(collection) { + var func = isArray(collection) ? arraySample : baseSample; + return func(collection); + } + + /** + * Gets `n` random elements at unique keys from `collection` up to the + * size of `collection`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Collection + * @param {Array|Object} collection The collection to sample. + * @param {number} [n=1] The number of elements to sample. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {Array} Returns the random elements. + * @example + * + * _.sampleSize([1, 2, 3], 2); + * // => [3, 1] + * + * _.sampleSize([1, 2, 3], 4); + * // => [2, 3, 1] + */ + function sampleSize(collection, n, guard) { + if ((guard ? isIterateeCall(collection, n, guard) : n === undefined)) { + n = 1; + } else { + n = toInteger(n); + } + var func = isArray(collection) ? arraySampleSize : baseSampleSize; + return func(collection, n); + } + + /** + * Creates an array of shuffled values, using a version of the + * [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle). + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to shuffle. + * @returns {Array} Returns the new shuffled array. + * @example + * + * _.shuffle([1, 2, 3, 4]); + * // => [4, 1, 3, 2] + */ + function shuffle(collection) { + var func = isArray(collection) ? arrayShuffle : baseShuffle; + return func(collection); + } + + /** + * Gets the size of `collection` by returning its length for array-like + * values or the number of own enumerable string keyed properties for objects. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object|string} collection The collection to inspect. + * @returns {number} Returns the collection size. + * @example + * + * _.size([1, 2, 3]); + * // => 3 + * + * _.size({ 'a': 1, 'b': 2 }); + * // => 2 + * + * _.size('pebbles'); + * // => 7 + */ + function size(collection) { + if (collection == null) { + return 0; + } + if (isArrayLike(collection)) { + return isString(collection) ? stringSize(collection) : collection.length; + } + var tag = getTag(collection); + if (tag == mapTag || tag == setTag) { + return collection.size; + } + return baseKeys(collection).length; + } + + /** + * Checks if `predicate` returns truthy for **any** element of `collection`. + * Iteration is stopped once `predicate` returns truthy. The predicate is + * invoked with three arguments: (value, index|key, collection). + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {boolean} Returns `true` if any element passes the predicate check, + * else `false`. + * @example + * + * _.some([null, 0, 'yes', false], Boolean); + * // => true + * + * var users = [ + * { 'user': 'barney', 'active': true }, + * { 'user': 'fred', 'active': false } + * ]; + * + * // The `_.matches` iteratee shorthand. + * _.some(users, { 'user': 'barney', 'active': false }); + * // => false + * + * // The `_.matchesProperty` iteratee shorthand. + * _.some(users, ['active', false]); + * // => true + * + * // The `_.property` iteratee shorthand. + * _.some(users, 'active'); + * // => true + */ + function some(collection, predicate, guard) { + var func = isArray(collection) ? arraySome : baseSome; + if (guard && isIterateeCall(collection, predicate, guard)) { + predicate = undefined; + } + return func(collection, getIteratee(predicate, 3)); + } + + /** + * Creates an array of elements, sorted in ascending order by the results of + * running each element in a collection thru each iteratee. This method + * performs a stable sort, that is, it preserves the original sort order of + * equal elements. The iteratees are invoked with one argument: (value). + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {...(Function|Function[])} [iteratees=[_.identity]] + * The iteratees to sort by. + * @returns {Array} Returns the new sorted array. + * @example + * + * var users = [ + * { 'user': 'fred', 'age': 48 }, + * { 'user': 'barney', 'age': 36 }, + * { 'user': 'fred', 'age': 30 }, + * { 'user': 'barney', 'age': 34 } + * ]; + * + * _.sortBy(users, [function(o) { return o.user; }]); + * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]] + * + * _.sortBy(users, ['user', 'age']); + * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]] + */ + var sortBy = baseRest(function(collection, iteratees) { + if (collection == null) { + return []; + } + var length = iteratees.length; + if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) { + iteratees = []; + } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) { + iteratees = [iteratees[0]]; + } + return baseOrderBy(collection, baseFlatten(iteratees, 1), []); + }); + + /*------------------------------------------------------------------------*/ + + /** + * Gets the timestamp of the number of milliseconds that have elapsed since + * the Unix epoch (1 January 1970 00:00:00 UTC). + * + * @static + * @memberOf _ + * @since 2.4.0 + * @category Date + * @returns {number} Returns the timestamp. + * @example + * + * _.defer(function(stamp) { + * console.log(_.now() - stamp); + * }, _.now()); + * // => Logs the number of milliseconds it took for the deferred invocation. + */ + var now = ctxNow || function() { + return root.Date.now(); + }; + + /*------------------------------------------------------------------------*/ + + /** + * The opposite of `_.before`; this method creates a function that invokes + * `func` once it's called `n` or more times. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Function + * @param {number} n The number of calls before `func` is invoked. + * @param {Function} func The function to restrict. + * @returns {Function} Returns the new restricted function. + * @example + * + * var saves = ['profile', 'settings']; + * + * var done = _.after(saves.length, function() { + * console.log('done saving!'); + * }); + * + * _.forEach(saves, function(type) { + * asyncSave({ 'type': type, 'complete': done }); + * }); + * // => Logs 'done saving!' after the two async saves have completed. + */ + function after(n, func) { + if (typeof func != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + n = toInteger(n); + return function() { + if (--n < 1) { + return func.apply(this, arguments); + } + }; + } + + /** + * Creates a function that invokes `func`, with up to `n` arguments, + * ignoring any additional arguments. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Function + * @param {Function} func The function to cap arguments for. + * @param {number} [n=func.length] The arity cap. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {Function} Returns the new capped function. + * @example + * + * _.map(['6', '8', '10'], _.ary(parseInt, 1)); + * // => [6, 8, 10] + */ + function ary(func, n, guard) { + n = guard ? undefined : n; + n = (func && n == null) ? func.length : n; + return createWrap(func, WRAP_ARY_FLAG, undefined, undefined, undefined, undefined, n); + } + + /** + * Creates a function that invokes `func`, with the `this` binding and arguments + * of the created function, while it's called less than `n` times. Subsequent + * calls to the created function return the result of the last `func` invocation. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Function + * @param {number} n The number of calls at which `func` is no longer invoked. + * @param {Function} func The function to restrict. + * @returns {Function} Returns the new restricted function. + * @example + * + * jQuery(element).on('click', _.before(5, addContactToList)); + * // => Allows adding up to 4 contacts to the list. + */ + function before(n, func) { + var result; + if (typeof func != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + n = toInteger(n); + return function() { + if (--n > 0) { + result = func.apply(this, arguments); + } + if (n <= 1) { + func = undefined; + } + return result; + }; + } + + /** + * Creates a function that invokes `func` with the `this` binding of `thisArg` + * and `partials` prepended to the arguments it receives. + * + * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds, + * may be used as a placeholder for partially applied arguments. + * + * **Note:** Unlike native `Function#bind`, this method doesn't set the "length" + * property of bound functions. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Function + * @param {Function} func The function to bind. + * @param {*} thisArg The `this` binding of `func`. + * @param {...*} [partials] The arguments to be partially applied. + * @returns {Function} Returns the new bound function. + * @example + * + * function greet(greeting, punctuation) { + * return greeting + ' ' + this.user + punctuation; + * } + * + * var object = { 'user': 'fred' }; + * + * var bound = _.bind(greet, object, 'hi'); + * bound('!'); + * // => 'hi fred!' + * + * // Bound with placeholders. + * var bound = _.bind(greet, object, _, '!'); + * bound('hi'); + * // => 'hi fred!' + */ + var bind = baseRest(function(func, thisArg, partials) { + var bitmask = WRAP_BIND_FLAG; + if (partials.length) { + var holders = replaceHolders(partials, getHolder(bind)); + bitmask |= WRAP_PARTIAL_FLAG; + } + return createWrap(func, bitmask, thisArg, partials, holders); + }); + + /** + * Creates a function that invokes the method at `object[key]` with `partials` + * prepended to the arguments it receives. + * + * This method differs from `_.bind` by allowing bound functions to reference + * methods that may be redefined or don't yet exist. See + * [Peter Michaux's article](http://peter.michaux.ca/articles/lazy-function-definition-pattern) + * for more details. + * + * The `_.bindKey.placeholder` value, which defaults to `_` in monolithic + * builds, may be used as a placeholder for partially applied arguments. + * + * @static + * @memberOf _ + * @since 0.10.0 + * @category Function + * @param {Object} object The object to invoke the method on. + * @param {string} key The key of the method. + * @param {...*} [partials] The arguments to be partially applied. + * @returns {Function} Returns the new bound function. + * @example + * + * var object = { + * 'user': 'fred', + * 'greet': function(greeting, punctuation) { + * return greeting + ' ' + this.user + punctuation; + * } + * }; + * + * var bound = _.bindKey(object, 'greet', 'hi'); + * bound('!'); + * // => 'hi fred!' + * + * object.greet = function(greeting, punctuation) { + * return greeting + 'ya ' + this.user + punctuation; + * }; + * + * bound('!'); + * // => 'hiya fred!' + * + * // Bound with placeholders. + * var bound = _.bindKey(object, 'greet', _, '!'); + * bound('hi'); + * // => 'hiya fred!' + */ + var bindKey = baseRest(function(object, key, partials) { + var bitmask = WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG; + if (partials.length) { + var holders = replaceHolders(partials, getHolder(bindKey)); + bitmask |= WRAP_PARTIAL_FLAG; + } + return createWrap(key, bitmask, object, partials, holders); + }); + + /** + * Creates a function that accepts arguments of `func` and either invokes + * `func` returning its result, if at least `arity` number of arguments have + * been provided, or returns a function that accepts the remaining `func` + * arguments, and so on. The arity of `func` may be specified if `func.length` + * is not sufficient. + * + * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds, + * may be used as a placeholder for provided arguments. + * + * **Note:** This method doesn't set the "length" property of curried functions. + * + * @static + * @memberOf _ + * @since 2.0.0 + * @category Function + * @param {Function} func The function to curry. + * @param {number} [arity=func.length] The arity of `func`. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {Function} Returns the new curried function. + * @example + * + * var abc = function(a, b, c) { + * return [a, b, c]; + * }; + * + * var curried = _.curry(abc); + * + * curried(1)(2)(3); + * // => [1, 2, 3] + * + * curried(1, 2)(3); + * // => [1, 2, 3] + * + * curried(1, 2, 3); + * // => [1, 2, 3] + * + * // Curried with placeholders. + * curried(1)(_, 3)(2); + * // => [1, 2, 3] + */ + function curry(func, arity, guard) { + arity = guard ? undefined : arity; + var result = createWrap(func, WRAP_CURRY_FLAG, undefined, undefined, undefined, undefined, undefined, arity); + result.placeholder = curry.placeholder; + return result; + } + + /** + * This method is like `_.curry` except that arguments are applied to `func` + * in the manner of `_.partialRight` instead of `_.partial`. + * + * The `_.curryRight.placeholder` value, which defaults to `_` in monolithic + * builds, may be used as a placeholder for provided arguments. + * + * **Note:** This method doesn't set the "length" property of curried functions. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Function + * @param {Function} func The function to curry. + * @param {number} [arity=func.length] The arity of `func`. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {Function} Returns the new curried function. + * @example + * + * var abc = function(a, b, c) { + * return [a, b, c]; + * }; + * + * var curried = _.curryRight(abc); + * + * curried(3)(2)(1); + * // => [1, 2, 3] + * + * curried(2, 3)(1); + * // => [1, 2, 3] + * + * curried(1, 2, 3); + * // => [1, 2, 3] + * + * // Curried with placeholders. + * curried(3)(1, _)(2); + * // => [1, 2, 3] + */ + function curryRight(func, arity, guard) { + arity = guard ? undefined : arity; + var result = createWrap(func, WRAP_CURRY_RIGHT_FLAG, undefined, undefined, undefined, undefined, undefined, arity); + result.placeholder = curryRight.placeholder; + return result; + } + + /** + * Creates a debounced function that delays invoking `func` until after `wait` + * milliseconds have elapsed since the last time the debounced function was + * invoked. The debounced function comes with a `cancel` method to cancel + * delayed `func` invocations and a `flush` method to immediately invoke them. + * Provide `options` to indicate whether `func` should be invoked on the + * leading and/or trailing edge of the `wait` timeout. The `func` is invoked + * with the last arguments provided to the debounced function. Subsequent + * calls to the debounced function return the result of the last `func` + * invocation. + * + * **Note:** If `leading` and `trailing` options are `true`, `func` is + * invoked on the trailing edge of the timeout only if the debounced function + * is invoked more than once during the `wait` timeout. + * + * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred + * until to the next tick, similar to `setTimeout` with a timeout of `0`. + * + * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/) + * for details over the differences between `_.debounce` and `_.throttle`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Function + * @param {Function} func The function to debounce. + * @param {number} [wait=0] The number of milliseconds to delay. + * @param {Object} [options={}] The options object. + * @param {boolean} [options.leading=false] + * Specify invoking on the leading edge of the timeout. + * @param {number} [options.maxWait] + * The maximum time `func` is allowed to be delayed before it's invoked. + * @param {boolean} [options.trailing=true] + * Specify invoking on the trailing edge of the timeout. + * @returns {Function} Returns the new debounced function. + * @example + * + * // Avoid costly calculations while the window size is in flux. + * jQuery(window).on('resize', _.debounce(calculateLayout, 150)); + * + * // Invoke `sendMail` when clicked, debouncing subsequent calls. + * jQuery(element).on('click', _.debounce(sendMail, 300, { + * 'leading': true, + * 'trailing': false + * })); + * + * // Ensure `batchLog` is invoked once after 1 second of debounced calls. + * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 }); + * var source = new EventSource('/stream'); + * jQuery(source).on('message', debounced); + * + * // Cancel the trailing debounced invocation. + * jQuery(window).on('popstate', debounced.cancel); + */ + function debounce(func, wait, options) { + var lastArgs, + lastThis, + maxWait, + result, + timerId, + lastCallTime, + lastInvokeTime = 0, + leading = false, + maxing = false, + trailing = true; + + if (typeof func != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + wait = toNumber(wait) || 0; + if (isObject(options)) { + leading = !!options.leading; + maxing = 'maxWait' in options; + maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait; + trailing = 'trailing' in options ? !!options.trailing : trailing; + } + + function invokeFunc(time) { + var args = lastArgs, + thisArg = lastThis; + + lastArgs = lastThis = undefined; + lastInvokeTime = time; + result = func.apply(thisArg, args); + return result; + } + + function leadingEdge(time) { + // Reset any `maxWait` timer. + lastInvokeTime = time; + // Start the timer for the trailing edge. + timerId = setTimeout(timerExpired, wait); + // Invoke the leading edge. + return leading ? invokeFunc(time) : result; + } + + function remainingWait(time) { + var timeSinceLastCall = time - lastCallTime, + timeSinceLastInvoke = time - lastInvokeTime, + timeWaiting = wait - timeSinceLastCall; + + return maxing + ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke) + : timeWaiting; + } + + function shouldInvoke(time) { + var timeSinceLastCall = time - lastCallTime, + timeSinceLastInvoke = time - lastInvokeTime; + + // Either this is the first call, activity has stopped and we're at the + // trailing edge, the system time has gone backwards and we're treating + // it as the trailing edge, or we've hit the `maxWait` limit. + return (lastCallTime === undefined || (timeSinceLastCall >= wait) || + (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait)); + } + + function timerExpired() { + var time = now(); + if (shouldInvoke(time)) { + return trailingEdge(time); + } + // Restart the timer. + timerId = setTimeout(timerExpired, remainingWait(time)); + } + + function trailingEdge(time) { + timerId = undefined; + + // Only invoke if we have `lastArgs` which means `func` has been + // debounced at least once. + if (trailing && lastArgs) { + return invokeFunc(time); + } + lastArgs = lastThis = undefined; + return result; + } + + function cancel() { + if (timerId !== undefined) { + clearTimeout(timerId); + } + lastInvokeTime = 0; + lastArgs = lastCallTime = lastThis = timerId = undefined; + } + + function flush() { + return timerId === undefined ? result : trailingEdge(now()); + } + + function debounced() { + var time = now(), + isInvoking = shouldInvoke(time); + + lastArgs = arguments; + lastThis = this; + lastCallTime = time; + + if (isInvoking) { + if (timerId === undefined) { + return leadingEdge(lastCallTime); + } + if (maxing) { + // Handle invocations in a tight loop. + clearTimeout(timerId); + timerId = setTimeout(timerExpired, wait); + return invokeFunc(lastCallTime); + } + } + if (timerId === undefined) { + timerId = setTimeout(timerExpired, wait); + } + return result; + } + debounced.cancel = cancel; + debounced.flush = flush; + return debounced; + } + + /** + * Defers invoking the `func` until the current call stack has cleared. Any + * additional arguments are provided to `func` when it's invoked. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Function + * @param {Function} func The function to defer. + * @param {...*} [args] The arguments to invoke `func` with. + * @returns {number} Returns the timer id. + * @example + * + * _.defer(function(text) { + * console.log(text); + * }, 'deferred'); + * // => Logs 'deferred' after one millisecond. + */ + var defer = baseRest(function(func, args) { + return baseDelay(func, 1, args); + }); + + /** + * Invokes `func` after `wait` milliseconds. Any additional arguments are + * provided to `func` when it's invoked. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Function + * @param {Function} func The function to delay. + * @param {number} wait The number of milliseconds to delay invocation. + * @param {...*} [args] The arguments to invoke `func` with. + * @returns {number} Returns the timer id. + * @example + * + * _.delay(function(text) { + * console.log(text); + * }, 1000, 'later'); + * // => Logs 'later' after one second. + */ + var delay = baseRest(function(func, wait, args) { + return baseDelay(func, toNumber(wait) || 0, args); + }); + + /** + * Creates a function that invokes `func` with arguments reversed. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Function + * @param {Function} func The function to flip arguments for. + * @returns {Function} Returns the new flipped function. + * @example + * + * var flipped = _.flip(function() { + * return _.toArray(arguments); + * }); + * + * flipped('a', 'b', 'c', 'd'); + * // => ['d', 'c', 'b', 'a'] + */ + function flip(func) { + return createWrap(func, WRAP_FLIP_FLAG); + } + + /** + * Creates a function that memoizes the result of `func`. If `resolver` is + * provided, it determines the cache key for storing the result based on the + * arguments provided to the memoized function. By default, the first argument + * provided to the memoized function is used as the map cache key. The `func` + * is invoked with the `this` binding of the memoized function. + * + * **Note:** The cache is exposed as the `cache` property on the memoized + * function. Its creation may be customized by replacing the `_.memoize.Cache` + * constructor with one whose instances implement the + * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object) + * method interface of `clear`, `delete`, `get`, `has`, and `set`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Function + * @param {Function} func The function to have its output memoized. + * @param {Function} [resolver] The function to resolve the cache key. + * @returns {Function} Returns the new memoized function. + * @example + * + * var object = { 'a': 1, 'b': 2 }; + * var other = { 'c': 3, 'd': 4 }; + * + * var values = _.memoize(_.values); + * values(object); + * // => [1, 2] + * + * values(other); + * // => [3, 4] + * + * object.a = 2; + * values(object); + * // => [1, 2] + * + * // Modify the result cache. + * values.cache.set(object, ['a', 'b']); + * values(object); + * // => ['a', 'b'] + * + * // Replace `_.memoize.Cache`. + * _.memoize.Cache = WeakMap; + */ + function memoize(func, resolver) { + if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) { + throw new TypeError(FUNC_ERROR_TEXT); + } + var memoized = function() { + var args = arguments, + key = resolver ? resolver.apply(this, args) : args[0], + cache = memoized.cache; + + if (cache.has(key)) { + return cache.get(key); + } + var result = func.apply(this, args); + memoized.cache = cache.set(key, result) || cache; + return result; + }; + memoized.cache = new (memoize.Cache || MapCache); + return memoized; + } + + // Expose `MapCache`. + memoize.Cache = MapCache; + + /** + * Creates a function that negates the result of the predicate `func`. The + * `func` predicate is invoked with the `this` binding and arguments of the + * created function. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Function + * @param {Function} predicate The predicate to negate. + * @returns {Function} Returns the new negated function. + * @example + * + * function isEven(n) { + * return n % 2 == 0; + * } + * + * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven)); + * // => [1, 3, 5] + */ + function negate(predicate) { + if (typeof predicate != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + return function() { + var args = arguments; + switch (args.length) { + case 0: return !predicate.call(this); + case 1: return !predicate.call(this, args[0]); + case 2: return !predicate.call(this, args[0], args[1]); + case 3: return !predicate.call(this, args[0], args[1], args[2]); + } + return !predicate.apply(this, args); + }; + } + + /** + * Creates a function that is restricted to invoking `func` once. Repeat calls + * to the function return the value of the first invocation. The `func` is + * invoked with the `this` binding and arguments of the created function. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Function + * @param {Function} func The function to restrict. + * @returns {Function} Returns the new restricted function. + * @example + * + * var initialize = _.once(createApplication); + * initialize(); + * initialize(); + * // => `createApplication` is invoked once + */ + function once(func) { + return before(2, func); + } + + /** + * Creates a function that invokes `func` with its arguments transformed. + * + * @static + * @since 4.0.0 + * @memberOf _ + * @category Function + * @param {Function} func The function to wrap. + * @param {...(Function|Function[])} [transforms=[_.identity]] + * The argument transforms. + * @returns {Function} Returns the new function. + * @example + * + * function doubled(n) { + * return n * 2; + * } + * + * function square(n) { + * return n * n; + * } + * + * var func = _.overArgs(function(x, y) { + * return [x, y]; + * }, [square, doubled]); + * + * func(9, 3); + * // => [81, 6] + * + * func(10, 5); + * // => [100, 10] + */ + var overArgs = castRest(function(func, transforms) { + transforms = (transforms.length == 1 && isArray(transforms[0])) + ? arrayMap(transforms[0], baseUnary(getIteratee())) + : arrayMap(baseFlatten(transforms, 1), baseUnary(getIteratee())); + + var funcsLength = transforms.length; + return baseRest(function(args) { + var index = -1, + length = nativeMin(args.length, funcsLength); + + while (++index < length) { + args[index] = transforms[index].call(this, args[index]); + } + return apply(func, this, args); + }); + }); + + /** + * Creates a function that invokes `func` with `partials` prepended to the + * arguments it receives. This method is like `_.bind` except it does **not** + * alter the `this` binding. + * + * The `_.partial.placeholder` value, which defaults to `_` in monolithic + * builds, may be used as a placeholder for partially applied arguments. + * + * **Note:** This method doesn't set the "length" property of partially + * applied functions. + * + * @static + * @memberOf _ + * @since 0.2.0 + * @category Function + * @param {Function} func The function to partially apply arguments to. + * @param {...*} [partials] The arguments to be partially applied. + * @returns {Function} Returns the new partially applied function. + * @example + * + * function greet(greeting, name) { + * return greeting + ' ' + name; + * } + * + * var sayHelloTo = _.partial(greet, 'hello'); + * sayHelloTo('fred'); + * // => 'hello fred' + * + * // Partially applied with placeholders. + * var greetFred = _.partial(greet, _, 'fred'); + * greetFred('hi'); + * // => 'hi fred' + */ + var partial = baseRest(function(func, partials) { + var holders = replaceHolders(partials, getHolder(partial)); + return createWrap(func, WRAP_PARTIAL_FLAG, undefined, partials, holders); + }); + + /** + * This method is like `_.partial` except that partially applied arguments + * are appended to the arguments it receives. + * + * The `_.partialRight.placeholder` value, which defaults to `_` in monolithic + * builds, may be used as a placeholder for partially applied arguments. + * + * **Note:** This method doesn't set the "length" property of partially + * applied functions. + * + * @static + * @memberOf _ + * @since 1.0.0 + * @category Function + * @param {Function} func The function to partially apply arguments to. + * @param {...*} [partials] The arguments to be partially applied. + * @returns {Function} Returns the new partially applied function. + * @example + * + * function greet(greeting, name) { + * return greeting + ' ' + name; + * } + * + * var greetFred = _.partialRight(greet, 'fred'); + * greetFred('hi'); + * // => 'hi fred' + * + * // Partially applied with placeholders. + * var sayHelloTo = _.partialRight(greet, 'hello', _); + * sayHelloTo('fred'); + * // => 'hello fred' + */ + var partialRight = baseRest(function(func, partials) { + var holders = replaceHolders(partials, getHolder(partialRight)); + return createWrap(func, WRAP_PARTIAL_RIGHT_FLAG, undefined, partials, holders); + }); + + /** + * Creates a function that invokes `func` with arguments arranged according + * to the specified `indexes` where the argument value at the first index is + * provided as the first argument, the argument value at the second index is + * provided as the second argument, and so on. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Function + * @param {Function} func The function to rearrange arguments for. + * @param {...(number|number[])} indexes The arranged argument indexes. + * @returns {Function} Returns the new function. + * @example + * + * var rearged = _.rearg(function(a, b, c) { + * return [a, b, c]; + * }, [2, 0, 1]); + * + * rearged('b', 'c', 'a') + * // => ['a', 'b', 'c'] + */ + var rearg = flatRest(function(func, indexes) { + return createWrap(func, WRAP_REARG_FLAG, undefined, undefined, undefined, indexes); + }); + + /** + * Creates a function that invokes `func` with the `this` binding of the + * created function and arguments from `start` and beyond provided as + * an array. + * + * **Note:** This method is based on the + * [rest parameter](https://mdn.io/rest_parameters). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Function + * @param {Function} func The function to apply a rest parameter to. + * @param {number} [start=func.length-1] The start position of the rest parameter. + * @returns {Function} Returns the new function. + * @example + * + * var say = _.rest(function(what, names) { + * return what + ' ' + _.initial(names).join(', ') + + * (_.size(names) > 1 ? ', & ' : '') + _.last(names); + * }); + * + * say('hello', 'fred', 'barney', 'pebbles'); + * // => 'hello fred, barney, & pebbles' + */ + function rest(func, start) { + if (typeof func != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + start = start === undefined ? start : toInteger(start); + return baseRest(func, start); + } + + /** + * Creates a function that invokes `func` with the `this` binding of the + * create function and an array of arguments much like + * [`Function#apply`](http://www.ecma-international.org/ecma-262/7.0/#sec-function.prototype.apply). + * + * **Note:** This method is based on the + * [spread operator](https://mdn.io/spread_operator). + * + * @static + * @memberOf _ + * @since 3.2.0 + * @category Function + * @param {Function} func The function to spread arguments over. + * @param {number} [start=0] The start position of the spread. + * @returns {Function} Returns the new function. + * @example + * + * var say = _.spread(function(who, what) { + * return who + ' says ' + what; + * }); + * + * say(['fred', 'hello']); + * // => 'fred says hello' + * + * var numbers = Promise.all([ + * Promise.resolve(40), + * Promise.resolve(36) + * ]); + * + * numbers.then(_.spread(function(x, y) { + * return x + y; + * })); + * // => a Promise of 76 + */ + function spread(func, start) { + if (typeof func != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + start = start == null ? 0 : nativeMax(toInteger(start), 0); + return baseRest(function(args) { + var array = args[start], + otherArgs = castSlice(args, 0, start); + + if (array) { + arrayPush(otherArgs, array); + } + return apply(func, this, otherArgs); + }); + } + + /** + * Creates a throttled function that only invokes `func` at most once per + * every `wait` milliseconds. The throttled function comes with a `cancel` + * method to cancel delayed `func` invocations and a `flush` method to + * immediately invoke them. Provide `options` to indicate whether `func` + * should be invoked on the leading and/or trailing edge of the `wait` + * timeout. The `func` is invoked with the last arguments provided to the + * throttled function. Subsequent calls to the throttled function return the + * result of the last `func` invocation. + * + * **Note:** If `leading` and `trailing` options are `true`, `func` is + * invoked on the trailing edge of the timeout only if the throttled function + * is invoked more than once during the `wait` timeout. + * + * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred + * until to the next tick, similar to `setTimeout` with a timeout of `0`. + * + * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/) + * for details over the differences between `_.throttle` and `_.debounce`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Function + * @param {Function} func The function to throttle. + * @param {number} [wait=0] The number of milliseconds to throttle invocations to. + * @param {Object} [options={}] The options object. + * @param {boolean} [options.leading=true] + * Specify invoking on the leading edge of the timeout. + * @param {boolean} [options.trailing=true] + * Specify invoking on the trailing edge of the timeout. + * @returns {Function} Returns the new throttled function. + * @example + * + * // Avoid excessively updating the position while scrolling. + * jQuery(window).on('scroll', _.throttle(updatePosition, 100)); + * + * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes. + * var throttled = _.throttle(renewToken, 300000, { 'trailing': false }); + * jQuery(element).on('click', throttled); + * + * // Cancel the trailing throttled invocation. + * jQuery(window).on('popstate', throttled.cancel); + */ + function throttle(func, wait, options) { + var leading = true, + trailing = true; + + if (typeof func != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + if (isObject(options)) { + leading = 'leading' in options ? !!options.leading : leading; + trailing = 'trailing' in options ? !!options.trailing : trailing; + } + return debounce(func, wait, { + 'leading': leading, + 'maxWait': wait, + 'trailing': trailing + }); + } + + /** + * Creates a function that accepts up to one argument, ignoring any + * additional arguments. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Function + * @param {Function} func The function to cap arguments for. + * @returns {Function} Returns the new capped function. + * @example + * + * _.map(['6', '8', '10'], _.unary(parseInt)); + * // => [6, 8, 10] + */ + function unary(func) { + return ary(func, 1); + } + + /** + * Creates a function that provides `value` to `wrapper` as its first + * argument. Any additional arguments provided to the function are appended + * to those provided to the `wrapper`. The wrapper is invoked with the `this` + * binding of the created function. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Function + * @param {*} value The value to wrap. + * @param {Function} [wrapper=identity] The wrapper function. + * @returns {Function} Returns the new function. + * @example + * + * var p = _.wrap(_.escape, function(func, text) { + * return '

' + func(text) + '

'; + * }); + * + * p('fred, barney, & pebbles'); + * // => '

fred, barney, & pebbles

' + */ + function wrap(value, wrapper) { + return partial(castFunction(wrapper), value); + } + + /*------------------------------------------------------------------------*/ + + /** + * Casts `value` as an array if it's not one. + * + * @static + * @memberOf _ + * @since 4.4.0 + * @category Lang + * @param {*} value The value to inspect. + * @returns {Array} Returns the cast array. + * @example + * + * _.castArray(1); + * // => [1] + * + * _.castArray({ 'a': 1 }); + * // => [{ 'a': 1 }] + * + * _.castArray('abc'); + * // => ['abc'] + * + * _.castArray(null); + * // => [null] + * + * _.castArray(undefined); + * // => [undefined] + * + * _.castArray(); + * // => [] + * + * var array = [1, 2, 3]; + * console.log(_.castArray(array) === array); + * // => true + */ + function castArray() { + if (!arguments.length) { + return []; + } + var value = arguments[0]; + return isArray(value) ? value : [value]; + } + + /** + * Creates a shallow clone of `value`. + * + * **Note:** This method is loosely based on the + * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm) + * and supports cloning arrays, array buffers, booleans, date objects, maps, + * numbers, `Object` objects, regexes, sets, strings, symbols, and typed + * arrays. The own enumerable properties of `arguments` objects are cloned + * as plain objects. An empty object is returned for uncloneable values such + * as error objects, functions, DOM nodes, and WeakMaps. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to clone. + * @returns {*} Returns the cloned value. + * @see _.cloneDeep + * @example + * + * var objects = [{ 'a': 1 }, { 'b': 2 }]; + * + * var shallow = _.clone(objects); + * console.log(shallow[0] === objects[0]); + * // => true + */ + function clone(value) { + return baseClone(value, CLONE_SYMBOLS_FLAG); + } + + /** + * This method is like `_.clone` except that it accepts `customizer` which + * is invoked to produce the cloned value. If `customizer` returns `undefined`, + * cloning is handled by the method instead. The `customizer` is invoked with + * up to four arguments; (value [, index|key, object, stack]). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to clone. + * @param {Function} [customizer] The function to customize cloning. + * @returns {*} Returns the cloned value. + * @see _.cloneDeepWith + * @example + * + * function customizer(value) { + * if (_.isElement(value)) { + * return value.cloneNode(false); + * } + * } + * + * var el = _.cloneWith(document.body, customizer); + * + * console.log(el === document.body); + * // => false + * console.log(el.nodeName); + * // => 'BODY' + * console.log(el.childNodes.length); + * // => 0 + */ + function cloneWith(value, customizer) { + customizer = typeof customizer == 'function' ? customizer : undefined; + return baseClone(value, CLONE_SYMBOLS_FLAG, customizer); + } + + /** + * This method is like `_.clone` except that it recursively clones `value`. + * + * @static + * @memberOf _ + * @since 1.0.0 + * @category Lang + * @param {*} value The value to recursively clone. + * @returns {*} Returns the deep cloned value. + * @see _.clone + * @example + * + * var objects = [{ 'a': 1 }, { 'b': 2 }]; + * + * var deep = _.cloneDeep(objects); + * console.log(deep[0] === objects[0]); + * // => false + */ + function cloneDeep(value) { + return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG); + } + + /** + * This method is like `_.cloneWith` except that it recursively clones `value`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to recursively clone. + * @param {Function} [customizer] The function to customize cloning. + * @returns {*} Returns the deep cloned value. + * @see _.cloneWith + * @example + * + * function customizer(value) { + * if (_.isElement(value)) { + * return value.cloneNode(true); + * } + * } + * + * var el = _.cloneDeepWith(document.body, customizer); + * + * console.log(el === document.body); + * // => false + * console.log(el.nodeName); + * // => 'BODY' + * console.log(el.childNodes.length); + * // => 20 + */ + function cloneDeepWith(value, customizer) { + customizer = typeof customizer == 'function' ? customizer : undefined; + return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer); + } + + /** + * Checks if `object` conforms to `source` by invoking the predicate + * properties of `source` with the corresponding property values of `object`. + * + * **Note:** This method is equivalent to `_.conforms` when `source` is + * partially applied. + * + * @static + * @memberOf _ + * @since 4.14.0 + * @category Lang + * @param {Object} object The object to inspect. + * @param {Object} source The object of property predicates to conform to. + * @returns {boolean} Returns `true` if `object` conforms, else `false`. + * @example + * + * var object = { 'a': 1, 'b': 2 }; + * + * _.conformsTo(object, { 'b': function(n) { return n > 1; } }); + * // => true + * + * _.conformsTo(object, { 'b': function(n) { return n > 2; } }); + * // => false + */ + function conformsTo(object, source) { + return source == null || baseConformsTo(object, source, keys(source)); + } + + /** + * Performs a + * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * comparison between two values to determine if they are equivalent. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if the values are equivalent, else `false`. + * @example + * + * var object = { 'a': 1 }; + * var other = { 'a': 1 }; + * + * _.eq(object, object); + * // => true + * + * _.eq(object, other); + * // => false + * + * _.eq('a', 'a'); + * // => true + * + * _.eq('a', Object('a')); + * // => false + * + * _.eq(NaN, NaN); + * // => true + */ + function eq(value, other) { + return value === other || (value !== value && other !== other); + } + + /** + * Checks if `value` is greater than `other`. + * + * @static + * @memberOf _ + * @since 3.9.0 + * @category Lang + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if `value` is greater than `other`, + * else `false`. + * @see _.lt + * @example + * + * _.gt(3, 1); + * // => true + * + * _.gt(3, 3); + * // => false + * + * _.gt(1, 3); + * // => false + */ + var gt = createRelationalOperation(baseGt); + + /** + * Checks if `value` is greater than or equal to `other`. + * + * @static + * @memberOf _ + * @since 3.9.0 + * @category Lang + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if `value` is greater than or equal to + * `other`, else `false`. + * @see _.lte + * @example + * + * _.gte(3, 1); + * // => true + * + * _.gte(3, 3); + * // => true + * + * _.gte(1, 3); + * // => false + */ + var gte = createRelationalOperation(function(value, other) { + return value >= other; + }); + + /** + * Checks if `value` is likely an `arguments` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an `arguments` object, + * else `false`. + * @example + * + * _.isArguments(function() { return arguments; }()); + * // => true + * + * _.isArguments([1, 2, 3]); + * // => false + */ + var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) { + return isObjectLike(value) && hasOwnProperty.call(value, 'callee') && + !propertyIsEnumerable.call(value, 'callee'); + }; + + /** + * Checks if `value` is classified as an `Array` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an array, else `false`. + * @example + * + * _.isArray([1, 2, 3]); + * // => true + * + * _.isArray(document.body.children); + * // => false + * + * _.isArray('abc'); + * // => false + * + * _.isArray(_.noop); + * // => false + */ + var isArray = Array.isArray; + + /** + * Checks if `value` is classified as an `ArrayBuffer` object. + * + * @static + * @memberOf _ + * @since 4.3.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`. + * @example + * + * _.isArrayBuffer(new ArrayBuffer(2)); + * // => true + * + * _.isArrayBuffer(new Array(2)); + * // => false + */ + var isArrayBuffer = nodeIsArrayBuffer ? baseUnary(nodeIsArrayBuffer) : baseIsArrayBuffer; + + /** + * Checks if `value` is array-like. A value is considered array-like if it's + * not a function and has a `value.length` that's an integer greater than or + * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is array-like, else `false`. + * @example + * + * _.isArrayLike([1, 2, 3]); + * // => true + * + * _.isArrayLike(document.body.children); + * // => true + * + * _.isArrayLike('abc'); + * // => true + * + * _.isArrayLike(_.noop); + * // => false + */ + function isArrayLike(value) { + return value != null && isLength(value.length) && !isFunction(value); + } + + /** + * This method is like `_.isArrayLike` except that it also checks if `value` + * is an object. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an array-like object, + * else `false`. + * @example + * + * _.isArrayLikeObject([1, 2, 3]); + * // => true + * + * _.isArrayLikeObject(document.body.children); + * // => true + * + * _.isArrayLikeObject('abc'); + * // => false + * + * _.isArrayLikeObject(_.noop); + * // => false + */ + function isArrayLikeObject(value) { + return isObjectLike(value) && isArrayLike(value); + } + + /** + * Checks if `value` is classified as a boolean primitive or object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a boolean, else `false`. + * @example + * + * _.isBoolean(false); + * // => true + * + * _.isBoolean(null); + * // => false + */ + function isBoolean(value) { + return value === true || value === false || + (isObjectLike(value) && baseGetTag(value) == boolTag); + } + + /** + * Checks if `value` is a buffer. + * + * @static + * @memberOf _ + * @since 4.3.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a buffer, else `false`. + * @example + * + * _.isBuffer(new Buffer(2)); + * // => true + * + * _.isBuffer(new Uint8Array(2)); + * // => false + */ + var isBuffer = nativeIsBuffer || stubFalse; + + /** + * Checks if `value` is classified as a `Date` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a date object, else `false`. + * @example + * + * _.isDate(new Date); + * // => true + * + * _.isDate('Mon April 23 2012'); + * // => false + */ + var isDate = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate; + + /** + * Checks if `value` is likely a DOM element. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a DOM element, else `false`. + * @example + * + * _.isElement(document.body); + * // => true + * + * _.isElement(''); + * // => false + */ + function isElement(value) { + return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value); + } + + /** + * Checks if `value` is an empty object, collection, map, or set. + * + * Objects are considered empty if they have no own enumerable string keyed + * properties. + * + * Array-like values such as `arguments` objects, arrays, buffers, strings, or + * jQuery-like collections are considered empty if they have a `length` of `0`. + * Similarly, maps and sets are considered empty if they have a `size` of `0`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is empty, else `false`. + * @example + * + * _.isEmpty(null); + * // => true + * + * _.isEmpty(true); + * // => true + * + * _.isEmpty(1); + * // => true + * + * _.isEmpty([1, 2, 3]); + * // => false + * + * _.isEmpty({ 'a': 1 }); + * // => false + */ + function isEmpty(value) { + if (value == null) { + return true; + } + if (isArrayLike(value) && + (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' || + isBuffer(value) || isTypedArray(value) || isArguments(value))) { + return !value.length; + } + var tag = getTag(value); + if (tag == mapTag || tag == setTag) { + return !value.size; + } + if (isPrototype(value)) { + return !baseKeys(value).length; + } + for (var key in value) { + if (hasOwnProperty.call(value, key)) { + return false; + } + } + return true; + } + + /** + * Performs a deep comparison between two values to determine if they are + * equivalent. + * + * **Note:** This method supports comparing arrays, array buffers, booleans, + * date objects, error objects, maps, numbers, `Object` objects, regexes, + * sets, strings, symbols, and typed arrays. `Object` objects are compared + * by their own, not inherited, enumerable properties. Functions and DOM + * nodes are compared by strict equality, i.e. `===`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if the values are equivalent, else `false`. + * @example + * + * var object = { 'a': 1 }; + * var other = { 'a': 1 }; + * + * _.isEqual(object, other); + * // => true + * + * object === other; + * // => false + */ + function isEqual(value, other) { + return baseIsEqual(value, other); + } + + /** + * This method is like `_.isEqual` except that it accepts `customizer` which + * is invoked to compare values. If `customizer` returns `undefined`, comparisons + * are handled by the method instead. The `customizer` is invoked with up to + * six arguments: (objValue, othValue [, index|key, object, other, stack]). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @param {Function} [customizer] The function to customize comparisons. + * @returns {boolean} Returns `true` if the values are equivalent, else `false`. + * @example + * + * function isGreeting(value) { + * return /^h(?:i|ello)$/.test(value); + * } + * + * function customizer(objValue, othValue) { + * if (isGreeting(objValue) && isGreeting(othValue)) { + * return true; + * } + * } + * + * var array = ['hello', 'goodbye']; + * var other = ['hi', 'goodbye']; + * + * _.isEqualWith(array, other, customizer); + * // => true + */ + function isEqualWith(value, other, customizer) { + customizer = typeof customizer == 'function' ? customizer : undefined; + var result = customizer ? customizer(value, other) : undefined; + return result === undefined ? baseIsEqual(value, other, undefined, customizer) : !!result; + } + + /** + * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`, + * `SyntaxError`, `TypeError`, or `URIError` object. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an error object, else `false`. + * @example + * + * _.isError(new Error); + * // => true + * + * _.isError(Error); + * // => false + */ + function isError(value) { + if (!isObjectLike(value)) { + return false; + } + var tag = baseGetTag(value); + return tag == errorTag || tag == domExcTag || + (typeof value.message == 'string' && typeof value.name == 'string' && !isPlainObject(value)); + } + + /** + * Checks if `value` is a finite primitive number. + * + * **Note:** This method is based on + * [`Number.isFinite`](https://mdn.io/Number/isFinite). + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a finite number, else `false`. + * @example + * + * _.isFinite(3); + * // => true + * + * _.isFinite(Number.MIN_VALUE); + * // => true + * + * _.isFinite(Infinity); + * // => false + * + * _.isFinite('3'); + * // => false + */ + function isFinite(value) { + return typeof value == 'number' && nativeIsFinite(value); + } + + /** + * Checks if `value` is classified as a `Function` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a function, else `false`. + * @example + * + * _.isFunction(_); + * // => true + * + * _.isFunction(/abc/); + * // => false + */ + function isFunction(value) { + if (!isObject(value)) { + return false; + } + // The use of `Object#toString` avoids issues with the `typeof` operator + // in Safari 9 which returns 'object' for typed arrays and other constructors. + var tag = baseGetTag(value); + return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag; + } + + /** + * Checks if `value` is an integer. + * + * **Note:** This method is based on + * [`Number.isInteger`](https://mdn.io/Number/isInteger). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an integer, else `false`. + * @example + * + * _.isInteger(3); + * // => true + * + * _.isInteger(Number.MIN_VALUE); + * // => false + * + * _.isInteger(Infinity); + * // => false + * + * _.isInteger('3'); + * // => false + */ + function isInteger(value) { + return typeof value == 'number' && value == toInteger(value); + } + + /** + * Checks if `value` is a valid array-like length. + * + * **Note:** This method is loosely based on + * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a valid length, else `false`. + * @example + * + * _.isLength(3); + * // => true + * + * _.isLength(Number.MIN_VALUE); + * // => false + * + * _.isLength(Infinity); + * // => false + * + * _.isLength('3'); + * // => false + */ + function isLength(value) { + return typeof value == 'number' && + value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER; + } + + /** + * Checks if `value` is the + * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types) + * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an object, else `false`. + * @example + * + * _.isObject({}); + * // => true + * + * _.isObject([1, 2, 3]); + * // => true + * + * _.isObject(_.noop); + * // => true + * + * _.isObject(null); + * // => false + */ + function isObject(value) { + var type = typeof value; + return value != null && (type == 'object' || type == 'function'); + } + + /** + * Checks if `value` is object-like. A value is object-like if it's not `null` + * and has a `typeof` result of "object". + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is object-like, else `false`. + * @example + * + * _.isObjectLike({}); + * // => true + * + * _.isObjectLike([1, 2, 3]); + * // => true + * + * _.isObjectLike(_.noop); + * // => false + * + * _.isObjectLike(null); + * // => false + */ + function isObjectLike(value) { + return value != null && typeof value == 'object'; + } + + /** + * Checks if `value` is classified as a `Map` object. + * + * @static + * @memberOf _ + * @since 4.3.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a map, else `false`. + * @example + * + * _.isMap(new Map); + * // => true + * + * _.isMap(new WeakMap); + * // => false + */ + var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap; + + /** + * Performs a partial deep comparison between `object` and `source` to + * determine if `object` contains equivalent property values. + * + * **Note:** This method is equivalent to `_.matches` when `source` is + * partially applied. + * + * Partial comparisons will match empty array and empty object `source` + * values against any array or object value, respectively. See `_.isEqual` + * for a list of supported value comparisons. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Lang + * @param {Object} object The object to inspect. + * @param {Object} source The object of property values to match. + * @returns {boolean} Returns `true` if `object` is a match, else `false`. + * @example + * + * var object = { 'a': 1, 'b': 2 }; + * + * _.isMatch(object, { 'b': 2 }); + * // => true + * + * _.isMatch(object, { 'b': 1 }); + * // => false + */ + function isMatch(object, source) { + return object === source || baseIsMatch(object, source, getMatchData(source)); + } + + /** + * This method is like `_.isMatch` except that it accepts `customizer` which + * is invoked to compare values. If `customizer` returns `undefined`, comparisons + * are handled by the method instead. The `customizer` is invoked with five + * arguments: (objValue, srcValue, index|key, object, source). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {Object} object The object to inspect. + * @param {Object} source The object of property values to match. + * @param {Function} [customizer] The function to customize comparisons. + * @returns {boolean} Returns `true` if `object` is a match, else `false`. + * @example + * + * function isGreeting(value) { + * return /^h(?:i|ello)$/.test(value); + * } + * + * function customizer(objValue, srcValue) { + * if (isGreeting(objValue) && isGreeting(srcValue)) { + * return true; + * } + * } + * + * var object = { 'greeting': 'hello' }; + * var source = { 'greeting': 'hi' }; + * + * _.isMatchWith(object, source, customizer); + * // => true + */ + function isMatchWith(object, source, customizer) { + customizer = typeof customizer == 'function' ? customizer : undefined; + return baseIsMatch(object, source, getMatchData(source), customizer); + } + + /** + * Checks if `value` is `NaN`. + * + * **Note:** This method is based on + * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as + * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for + * `undefined` and other non-number values. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`. + * @example + * + * _.isNaN(NaN); + * // => true + * + * _.isNaN(new Number(NaN)); + * // => true + * + * isNaN(undefined); + * // => true + * + * _.isNaN(undefined); + * // => false + */ + function isNaN(value) { + // An `NaN` primitive is the only value that is not equal to itself. + // Perform the `toStringTag` check first to avoid errors with some + // ActiveX objects in IE. + return isNumber(value) && value != +value; + } + + /** + * Checks if `value` is a pristine native function. + * + * **Note:** This method can't reliably detect native functions in the presence + * of the core-js package because core-js circumvents this kind of detection. + * Despite multiple requests, the core-js maintainer has made it clear: any + * attempt to fix the detection will be obstructed. As a result, we're left + * with little choice but to throw an error. Unfortunately, this also affects + * packages, like [babel-polyfill](https://www.npmjs.com/package/babel-polyfill), + * which rely on core-js. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a native function, + * else `false`. + * @example + * + * _.isNative(Array.prototype.push); + * // => true + * + * _.isNative(_); + * // => false + */ + function isNative(value) { + if (isMaskable(value)) { + throw new Error(CORE_ERROR_TEXT); + } + return baseIsNative(value); + } + + /** + * Checks if `value` is `null`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is `null`, else `false`. + * @example + * + * _.isNull(null); + * // => true + * + * _.isNull(void 0); + * // => false + */ + function isNull(value) { + return value === null; + } + + /** + * Checks if `value` is `null` or `undefined`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is nullish, else `false`. + * @example + * + * _.isNil(null); + * // => true + * + * _.isNil(void 0); + * // => true + * + * _.isNil(NaN); + * // => false + */ + function isNil(value) { + return value == null; + } + + /** + * Checks if `value` is classified as a `Number` primitive or object. + * + * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are + * classified as numbers, use the `_.isFinite` method. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a number, else `false`. + * @example + * + * _.isNumber(3); + * // => true + * + * _.isNumber(Number.MIN_VALUE); + * // => true + * + * _.isNumber(Infinity); + * // => true + * + * _.isNumber('3'); + * // => false + */ + function isNumber(value) { + return typeof value == 'number' || + (isObjectLike(value) && baseGetTag(value) == numberTag); + } + + /** + * Checks if `value` is a plain object, that is, an object created by the + * `Object` constructor or one with a `[[Prototype]]` of `null`. + * + * @static + * @memberOf _ + * @since 0.8.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a plain object, else `false`. + * @example + * + * function Foo() { + * this.a = 1; + * } + * + * _.isPlainObject(new Foo); + * // => false + * + * _.isPlainObject([1, 2, 3]); + * // => false + * + * _.isPlainObject({ 'x': 0, 'y': 0 }); + * // => true + * + * _.isPlainObject(Object.create(null)); + * // => true + */ + function isPlainObject(value) { + if (!isObjectLike(value) || baseGetTag(value) != objectTag) { + return false; + } + var proto = getPrototype(value); + if (proto === null) { + return true; + } + var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor; + return typeof Ctor == 'function' && Ctor instanceof Ctor && + funcToString.call(Ctor) == objectCtorString; + } + + /** + * Checks if `value` is classified as a `RegExp` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a regexp, else `false`. + * @example + * + * _.isRegExp(/abc/); + * // => true + * + * _.isRegExp('/abc/'); + * // => false + */ + var isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp; + + /** + * Checks if `value` is a safe integer. An integer is safe if it's an IEEE-754 + * double precision number which isn't the result of a rounded unsafe integer. + * + * **Note:** This method is based on + * [`Number.isSafeInteger`](https://mdn.io/Number/isSafeInteger). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a safe integer, else `false`. + * @example + * + * _.isSafeInteger(3); + * // => true + * + * _.isSafeInteger(Number.MIN_VALUE); + * // => false + * + * _.isSafeInteger(Infinity); + * // => false + * + * _.isSafeInteger('3'); + * // => false + */ + function isSafeInteger(value) { + return isInteger(value) && value >= -MAX_SAFE_INTEGER && value <= MAX_SAFE_INTEGER; + } + + /** + * Checks if `value` is classified as a `Set` object. + * + * @static + * @memberOf _ + * @since 4.3.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a set, else `false`. + * @example + * + * _.isSet(new Set); + * // => true + * + * _.isSet(new WeakSet); + * // => false + */ + var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet; + + /** + * Checks if `value` is classified as a `String` primitive or object. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a string, else `false`. + * @example + * + * _.isString('abc'); + * // => true + * + * _.isString(1); + * // => false + */ + function isString(value) { + return typeof value == 'string' || + (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag); + } + + /** + * Checks if `value` is classified as a `Symbol` primitive or object. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a symbol, else `false`. + * @example + * + * _.isSymbol(Symbol.iterator); + * // => true + * + * _.isSymbol('abc'); + * // => false + */ + function isSymbol(value) { + return typeof value == 'symbol' || + (isObjectLike(value) && baseGetTag(value) == symbolTag); + } + + /** + * Checks if `value` is classified as a typed array. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a typed array, else `false`. + * @example + * + * _.isTypedArray(new Uint8Array); + * // => true + * + * _.isTypedArray([]); + * // => false + */ + var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray; + + /** + * Checks if `value` is `undefined`. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`. + * @example + * + * _.isUndefined(void 0); + * // => true + * + * _.isUndefined(null); + * // => false + */ + function isUndefined(value) { + return value === undefined; + } + + /** + * Checks if `value` is classified as a `WeakMap` object. + * + * @static + * @memberOf _ + * @since 4.3.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a weak map, else `false`. + * @example + * + * _.isWeakMap(new WeakMap); + * // => true + * + * _.isWeakMap(new Map); + * // => false + */ + function isWeakMap(value) { + return isObjectLike(value) && getTag(value) == weakMapTag; + } + + /** + * Checks if `value` is classified as a `WeakSet` object. + * + * @static + * @memberOf _ + * @since 4.3.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a weak set, else `false`. + * @example + * + * _.isWeakSet(new WeakSet); + * // => true + * + * _.isWeakSet(new Set); + * // => false + */ + function isWeakSet(value) { + return isObjectLike(value) && baseGetTag(value) == weakSetTag; + } + + /** + * Checks if `value` is less than `other`. + * + * @static + * @memberOf _ + * @since 3.9.0 + * @category Lang + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if `value` is less than `other`, + * else `false`. + * @see _.gt + * @example + * + * _.lt(1, 3); + * // => true + * + * _.lt(3, 3); + * // => false + * + * _.lt(3, 1); + * // => false + */ + var lt = createRelationalOperation(baseLt); + + /** + * Checks if `value` is less than or equal to `other`. + * + * @static + * @memberOf _ + * @since 3.9.0 + * @category Lang + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if `value` is less than or equal to + * `other`, else `false`. + * @see _.gte + * @example + * + * _.lte(1, 3); + * // => true + * + * _.lte(3, 3); + * // => true + * + * _.lte(3, 1); + * // => false + */ + var lte = createRelationalOperation(function(value, other) { + return value <= other; + }); + + /** + * Converts `value` to an array. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Lang + * @param {*} value The value to convert. + * @returns {Array} Returns the converted array. + * @example + * + * _.toArray({ 'a': 1, 'b': 2 }); + * // => [1, 2] + * + * _.toArray('abc'); + * // => ['a', 'b', 'c'] + * + * _.toArray(1); + * // => [] + * + * _.toArray(null); + * // => [] + */ + function toArray(value) { + if (!value) { + return []; + } + if (isArrayLike(value)) { + return isString(value) ? stringToArray(value) : copyArray(value); + } + if (symIterator && value[symIterator]) { + return iteratorToArray(value[symIterator]()); + } + var tag = getTag(value), + func = tag == mapTag ? mapToArray : (tag == setTag ? setToArray : values); + + return func(value); + } + + /** + * Converts `value` to a finite number. + * + * @static + * @memberOf _ + * @since 4.12.0 + * @category Lang + * @param {*} value The value to convert. + * @returns {number} Returns the converted number. + * @example + * + * _.toFinite(3.2); + * // => 3.2 + * + * _.toFinite(Number.MIN_VALUE); + * // => 5e-324 + * + * _.toFinite(Infinity); + * // => 1.7976931348623157e+308 + * + * _.toFinite('3.2'); + * // => 3.2 + */ + function toFinite(value) { + if (!value) { + return value === 0 ? value : 0; + } + value = toNumber(value); + if (value === INFINITY || value === -INFINITY) { + var sign = (value < 0 ? -1 : 1); + return sign * MAX_INTEGER; + } + return value === value ? value : 0; + } + + /** + * Converts `value` to an integer. + * + * **Note:** This method is loosely based on + * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to convert. + * @returns {number} Returns the converted integer. + * @example + * + * _.toInteger(3.2); + * // => 3 + * + * _.toInteger(Number.MIN_VALUE); + * // => 0 + * + * _.toInteger(Infinity); + * // => 1.7976931348623157e+308 + * + * _.toInteger('3.2'); + * // => 3 + */ + function toInteger(value) { + var result = toFinite(value), + remainder = result % 1; + + return result === result ? (remainder ? result - remainder : result) : 0; + } + + /** + * Converts `value` to an integer suitable for use as the length of an + * array-like object. + * + * **Note:** This method is based on + * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to convert. + * @returns {number} Returns the converted integer. + * @example + * + * _.toLength(3.2); + * // => 3 + * + * _.toLength(Number.MIN_VALUE); + * // => 0 + * + * _.toLength(Infinity); + * // => 4294967295 + * + * _.toLength('3.2'); + * // => 3 + */ + function toLength(value) { + return value ? baseClamp(toInteger(value), 0, MAX_ARRAY_LENGTH) : 0; + } + + /** + * Converts `value` to a number. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to process. + * @returns {number} Returns the number. + * @example + * + * _.toNumber(3.2); + * // => 3.2 + * + * _.toNumber(Number.MIN_VALUE); + * // => 5e-324 + * + * _.toNumber(Infinity); + * // => Infinity + * + * _.toNumber('3.2'); + * // => 3.2 + */ + function toNumber(value) { + if (typeof value == 'number') { + return value; + } + if (isSymbol(value)) { + return NAN; + } + if (isObject(value)) { + var other = typeof value.valueOf == 'function' ? value.valueOf() : value; + value = isObject(other) ? (other + '') : other; + } + if (typeof value != 'string') { + return value === 0 ? value : +value; + } + value = baseTrim(value); + var isBinary = reIsBinary.test(value); + return (isBinary || reIsOctal.test(value)) + ? freeParseInt(value.slice(2), isBinary ? 2 : 8) + : (reIsBadHex.test(value) ? NAN : +value); + } + + /** + * Converts `value` to a plain object flattening inherited enumerable string + * keyed properties of `value` to own properties of the plain object. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Lang + * @param {*} value The value to convert. + * @returns {Object} Returns the converted plain object. + * @example + * + * function Foo() { + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.assign({ 'a': 1 }, new Foo); + * // => { 'a': 1, 'b': 2 } + * + * _.assign({ 'a': 1 }, _.toPlainObject(new Foo)); + * // => { 'a': 1, 'b': 2, 'c': 3 } + */ + function toPlainObject(value) { + return copyObject(value, keysIn(value)); + } + + /** + * Converts `value` to a safe integer. A safe integer can be compared and + * represented correctly. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to convert. + * @returns {number} Returns the converted integer. + * @example + * + * _.toSafeInteger(3.2); + * // => 3 + * + * _.toSafeInteger(Number.MIN_VALUE); + * // => 0 + * + * _.toSafeInteger(Infinity); + * // => 9007199254740991 + * + * _.toSafeInteger('3.2'); + * // => 3 + */ + function toSafeInteger(value) { + return value + ? baseClamp(toInteger(value), -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER) + : (value === 0 ? value : 0); + } + + /** + * Converts `value` to a string. An empty string is returned for `null` + * and `undefined` values. The sign of `-0` is preserved. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to convert. + * @returns {string} Returns the converted string. + * @example + * + * _.toString(null); + * // => '' + * + * _.toString(-0); + * // => '-0' + * + * _.toString([1, 2, 3]); + * // => '1,2,3' + */ + function toString(value) { + return value == null ? '' : baseToString(value); + } + + /*------------------------------------------------------------------------*/ + + /** + * Assigns own enumerable string keyed properties of source objects to the + * destination object. Source objects are applied from left to right. + * Subsequent sources overwrite property assignments of previous sources. + * + * **Note:** This method mutates `object` and is loosely based on + * [`Object.assign`](https://mdn.io/Object/assign). + * + * @static + * @memberOf _ + * @since 0.10.0 + * @category Object + * @param {Object} object The destination object. + * @param {...Object} [sources] The source objects. + * @returns {Object} Returns `object`. + * @see _.assignIn + * @example + * + * function Foo() { + * this.a = 1; + * } + * + * function Bar() { + * this.c = 3; + * } + * + * Foo.prototype.b = 2; + * Bar.prototype.d = 4; + * + * _.assign({ 'a': 0 }, new Foo, new Bar); + * // => { 'a': 1, 'c': 3 } + */ + var assign = createAssigner(function(object, source) { + if (isPrototype(source) || isArrayLike(source)) { + copyObject(source, keys(source), object); + return; + } + for (var key in source) { + if (hasOwnProperty.call(source, key)) { + assignValue(object, key, source[key]); + } + } + }); + + /** + * This method is like `_.assign` except that it iterates over own and + * inherited source properties. + * + * **Note:** This method mutates `object`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @alias extend + * @category Object + * @param {Object} object The destination object. + * @param {...Object} [sources] The source objects. + * @returns {Object} Returns `object`. + * @see _.assign + * @example + * + * function Foo() { + * this.a = 1; + * } + * + * function Bar() { + * this.c = 3; + * } + * + * Foo.prototype.b = 2; + * Bar.prototype.d = 4; + * + * _.assignIn({ 'a': 0 }, new Foo, new Bar); + * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 } + */ + var assignIn = createAssigner(function(object, source) { + copyObject(source, keysIn(source), object); + }); + + /** + * This method is like `_.assignIn` except that it accepts `customizer` + * which is invoked to produce the assigned values. If `customizer` returns + * `undefined`, assignment is handled by the method instead. The `customizer` + * is invoked with five arguments: (objValue, srcValue, key, object, source). + * + * **Note:** This method mutates `object`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @alias extendWith + * @category Object + * @param {Object} object The destination object. + * @param {...Object} sources The source objects. + * @param {Function} [customizer] The function to customize assigned values. + * @returns {Object} Returns `object`. + * @see _.assignWith + * @example + * + * function customizer(objValue, srcValue) { + * return _.isUndefined(objValue) ? srcValue : objValue; + * } + * + * var defaults = _.partialRight(_.assignInWith, customizer); + * + * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 }); + * // => { 'a': 1, 'b': 2 } + */ + var assignInWith = createAssigner(function(object, source, srcIndex, customizer) { + copyObject(source, keysIn(source), object, customizer); + }); + + /** + * This method is like `_.assign` except that it accepts `customizer` + * which is invoked to produce the assigned values. If `customizer` returns + * `undefined`, assignment is handled by the method instead. The `customizer` + * is invoked with five arguments: (objValue, srcValue, key, object, source). + * + * **Note:** This method mutates `object`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Object + * @param {Object} object The destination object. + * @param {...Object} sources The source objects. + * @param {Function} [customizer] The function to customize assigned values. + * @returns {Object} Returns `object`. + * @see _.assignInWith + * @example + * + * function customizer(objValue, srcValue) { + * return _.isUndefined(objValue) ? srcValue : objValue; + * } + * + * var defaults = _.partialRight(_.assignWith, customizer); + * + * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 }); + * // => { 'a': 1, 'b': 2 } + */ + var assignWith = createAssigner(function(object, source, srcIndex, customizer) { + copyObject(source, keys(source), object, customizer); + }); + + /** + * Creates an array of values corresponding to `paths` of `object`. + * + * @static + * @memberOf _ + * @since 1.0.0 + * @category Object + * @param {Object} object The object to iterate over. + * @param {...(string|string[])} [paths] The property paths to pick. + * @returns {Array} Returns the picked values. + * @example + * + * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] }; + * + * _.at(object, ['a[0].b.c', 'a[1]']); + * // => [3, 4] + */ + var at = flatRest(baseAt); + + /** + * Creates an object that inherits from the `prototype` object. If a + * `properties` object is given, its own enumerable string keyed properties + * are assigned to the created object. + * + * @static + * @memberOf _ + * @since 2.3.0 + * @category Object + * @param {Object} prototype The object to inherit from. + * @param {Object} [properties] The properties to assign to the object. + * @returns {Object} Returns the new object. + * @example + * + * function Shape() { + * this.x = 0; + * this.y = 0; + * } + * + * function Circle() { + * Shape.call(this); + * } + * + * Circle.prototype = _.create(Shape.prototype, { + * 'constructor': Circle + * }); + * + * var circle = new Circle; + * circle instanceof Circle; + * // => true + * + * circle instanceof Shape; + * // => true + */ + function create(prototype, properties) { + var result = baseCreate(prototype); + return properties == null ? result : baseAssign(result, properties); + } + + /** + * Assigns own and inherited enumerable string keyed properties of source + * objects to the destination object for all destination properties that + * resolve to `undefined`. Source objects are applied from left to right. + * Once a property is set, additional values of the same property are ignored. + * + * **Note:** This method mutates `object`. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Object + * @param {Object} object The destination object. + * @param {...Object} [sources] The source objects. + * @returns {Object} Returns `object`. + * @see _.defaultsDeep + * @example + * + * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 }); + * // => { 'a': 1, 'b': 2 } + */ + var defaults = baseRest(function(object, sources) { + object = Object(object); + + var index = -1; + var length = sources.length; + var guard = length > 2 ? sources[2] : undefined; + + if (guard && isIterateeCall(sources[0], sources[1], guard)) { + length = 1; + } + + while (++index < length) { + var source = sources[index]; + var props = keysIn(source); + var propsIndex = -1; + var propsLength = props.length; + + while (++propsIndex < propsLength) { + var key = props[propsIndex]; + var value = object[key]; + + if (value === undefined || + (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) { + object[key] = source[key]; + } + } + } + + return object; + }); + + /** + * This method is like `_.defaults` except that it recursively assigns + * default properties. + * + * **Note:** This method mutates `object`. + * + * @static + * @memberOf _ + * @since 3.10.0 + * @category Object + * @param {Object} object The destination object. + * @param {...Object} [sources] The source objects. + * @returns {Object} Returns `object`. + * @see _.defaults + * @example + * + * _.defaultsDeep({ 'a': { 'b': 2 } }, { 'a': { 'b': 1, 'c': 3 } }); + * // => { 'a': { 'b': 2, 'c': 3 } } + */ + var defaultsDeep = baseRest(function(args) { + args.push(undefined, customDefaultsMerge); + return apply(mergeWith, undefined, args); + }); + + /** + * This method is like `_.find` except that it returns the key of the first + * element `predicate` returns truthy for instead of the element itself. + * + * @static + * @memberOf _ + * @since 1.1.0 + * @category Object + * @param {Object} object The object to inspect. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @returns {string|undefined} Returns the key of the matched element, + * else `undefined`. + * @example + * + * var users = { + * 'barney': { 'age': 36, 'active': true }, + * 'fred': { 'age': 40, 'active': false }, + * 'pebbles': { 'age': 1, 'active': true } + * }; + * + * _.findKey(users, function(o) { return o.age < 40; }); + * // => 'barney' (iteration order is not guaranteed) + * + * // The `_.matches` iteratee shorthand. + * _.findKey(users, { 'age': 1, 'active': true }); + * // => 'pebbles' + * + * // The `_.matchesProperty` iteratee shorthand. + * _.findKey(users, ['active', false]); + * // => 'fred' + * + * // The `_.property` iteratee shorthand. + * _.findKey(users, 'active'); + * // => 'barney' + */ + function findKey(object, predicate) { + return baseFindKey(object, getIteratee(predicate, 3), baseForOwn); + } + + /** + * This method is like `_.findKey` except that it iterates over elements of + * a collection in the opposite order. + * + * @static + * @memberOf _ + * @since 2.0.0 + * @category Object + * @param {Object} object The object to inspect. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @returns {string|undefined} Returns the key of the matched element, + * else `undefined`. + * @example + * + * var users = { + * 'barney': { 'age': 36, 'active': true }, + * 'fred': { 'age': 40, 'active': false }, + * 'pebbles': { 'age': 1, 'active': true } + * }; + * + * _.findLastKey(users, function(o) { return o.age < 40; }); + * // => returns 'pebbles' assuming `_.findKey` returns 'barney' + * + * // The `_.matches` iteratee shorthand. + * _.findLastKey(users, { 'age': 36, 'active': true }); + * // => 'barney' + * + * // The `_.matchesProperty` iteratee shorthand. + * _.findLastKey(users, ['active', false]); + * // => 'fred' + * + * // The `_.property` iteratee shorthand. + * _.findLastKey(users, 'active'); + * // => 'pebbles' + */ + function findLastKey(object, predicate) { + return baseFindKey(object, getIteratee(predicate, 3), baseForOwnRight); + } + + /** + * Iterates over own and inherited enumerable string keyed properties of an + * object and invokes `iteratee` for each property. The iteratee is invoked + * with three arguments: (value, key, object). Iteratee functions may exit + * iteration early by explicitly returning `false`. + * + * @static + * @memberOf _ + * @since 0.3.0 + * @category Object + * @param {Object} object The object to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Object} Returns `object`. + * @see _.forInRight + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.forIn(new Foo, function(value, key) { + * console.log(key); + * }); + * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed). + */ + function forIn(object, iteratee) { + return object == null + ? object + : baseFor(object, getIteratee(iteratee, 3), keysIn); + } + + /** + * This method is like `_.forIn` except that it iterates over properties of + * `object` in the opposite order. + * + * @static + * @memberOf _ + * @since 2.0.0 + * @category Object + * @param {Object} object The object to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Object} Returns `object`. + * @see _.forIn + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.forInRight(new Foo, function(value, key) { + * console.log(key); + * }); + * // => Logs 'c', 'b', then 'a' assuming `_.forIn` logs 'a', 'b', then 'c'. + */ + function forInRight(object, iteratee) { + return object == null + ? object + : baseForRight(object, getIteratee(iteratee, 3), keysIn); + } + + /** + * Iterates over own enumerable string keyed properties of an object and + * invokes `iteratee` for each property. The iteratee is invoked with three + * arguments: (value, key, object). Iteratee functions may exit iteration + * early by explicitly returning `false`. + * + * @static + * @memberOf _ + * @since 0.3.0 + * @category Object + * @param {Object} object The object to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Object} Returns `object`. + * @see _.forOwnRight + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.forOwn(new Foo, function(value, key) { + * console.log(key); + * }); + * // => Logs 'a' then 'b' (iteration order is not guaranteed). + */ + function forOwn(object, iteratee) { + return object && baseForOwn(object, getIteratee(iteratee, 3)); + } + + /** + * This method is like `_.forOwn` except that it iterates over properties of + * `object` in the opposite order. + * + * @static + * @memberOf _ + * @since 2.0.0 + * @category Object + * @param {Object} object The object to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Object} Returns `object`. + * @see _.forOwn + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.forOwnRight(new Foo, function(value, key) { + * console.log(key); + * }); + * // => Logs 'b' then 'a' assuming `_.forOwn` logs 'a' then 'b'. + */ + function forOwnRight(object, iteratee) { + return object && baseForOwnRight(object, getIteratee(iteratee, 3)); + } + + /** + * Creates an array of function property names from own enumerable properties + * of `object`. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Object + * @param {Object} object The object to inspect. + * @returns {Array} Returns the function names. + * @see _.functionsIn + * @example + * + * function Foo() { + * this.a = _.constant('a'); + * this.b = _.constant('b'); + * } + * + * Foo.prototype.c = _.constant('c'); + * + * _.functions(new Foo); + * // => ['a', 'b'] + */ + function functions(object) { + return object == null ? [] : baseFunctions(object, keys(object)); + } + + /** + * Creates an array of function property names from own and inherited + * enumerable properties of `object`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Object + * @param {Object} object The object to inspect. + * @returns {Array} Returns the function names. + * @see _.functions + * @example + * + * function Foo() { + * this.a = _.constant('a'); + * this.b = _.constant('b'); + * } + * + * Foo.prototype.c = _.constant('c'); + * + * _.functionsIn(new Foo); + * // => ['a', 'b', 'c'] + */ + function functionsIn(object) { + return object == null ? [] : baseFunctions(object, keysIn(object)); + } + + /** + * Gets the value at `path` of `object`. If the resolved value is + * `undefined`, the `defaultValue` is returned in its place. + * + * @static + * @memberOf _ + * @since 3.7.0 + * @category Object + * @param {Object} object The object to query. + * @param {Array|string} path The path of the property to get. + * @param {*} [defaultValue] The value returned for `undefined` resolved values. + * @returns {*} Returns the resolved value. + * @example + * + * var object = { 'a': [{ 'b': { 'c': 3 } }] }; + * + * _.get(object, 'a[0].b.c'); + * // => 3 + * + * _.get(object, ['a', '0', 'b', 'c']); + * // => 3 + * + * _.get(object, 'a.b.c', 'default'); + * // => 'default' + */ + function get(object, path, defaultValue) { + var result = object == null ? undefined : baseGet(object, path); + return result === undefined ? defaultValue : result; + } + + /** + * Checks if `path` is a direct property of `object`. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Object + * @param {Object} object The object to query. + * @param {Array|string} path The path to check. + * @returns {boolean} Returns `true` if `path` exists, else `false`. + * @example + * + * var object = { 'a': { 'b': 2 } }; + * var other = _.create({ 'a': _.create({ 'b': 2 }) }); + * + * _.has(object, 'a'); + * // => true + * + * _.has(object, 'a.b'); + * // => true + * + * _.has(object, ['a', 'b']); + * // => true + * + * _.has(other, 'a'); + * // => false + */ + function has(object, path) { + return object != null && hasPath(object, path, baseHas); + } + + /** + * Checks if `path` is a direct or inherited property of `object`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Object + * @param {Object} object The object to query. + * @param {Array|string} path The path to check. + * @returns {boolean} Returns `true` if `path` exists, else `false`. + * @example + * + * var object = _.create({ 'a': _.create({ 'b': 2 }) }); + * + * _.hasIn(object, 'a'); + * // => true + * + * _.hasIn(object, 'a.b'); + * // => true + * + * _.hasIn(object, ['a', 'b']); + * // => true + * + * _.hasIn(object, 'b'); + * // => false + */ + function hasIn(object, path) { + return object != null && hasPath(object, path, baseHasIn); + } + + /** + * Creates an object composed of the inverted keys and values of `object`. + * If `object` contains duplicate values, subsequent values overwrite + * property assignments of previous values. + * + * @static + * @memberOf _ + * @since 0.7.0 + * @category Object + * @param {Object} object The object to invert. + * @returns {Object} Returns the new inverted object. + * @example + * + * var object = { 'a': 1, 'b': 2, 'c': 1 }; + * + * _.invert(object); + * // => { '1': 'c', '2': 'b' } + */ + var invert = createInverter(function(result, value, key) { + if (value != null && + typeof value.toString != 'function') { + value = nativeObjectToString.call(value); + } + + result[value] = key; + }, constant(identity)); + + /** + * This method is like `_.invert` except that the inverted object is generated + * from the results of running each element of `object` thru `iteratee`. The + * corresponding inverted value of each inverted key is an array of keys + * responsible for generating the inverted value. The iteratee is invoked + * with one argument: (value). + * + * @static + * @memberOf _ + * @since 4.1.0 + * @category Object + * @param {Object} object The object to invert. + * @param {Function} [iteratee=_.identity] The iteratee invoked per element. + * @returns {Object} Returns the new inverted object. + * @example + * + * var object = { 'a': 1, 'b': 2, 'c': 1 }; + * + * _.invertBy(object); + * // => { '1': ['a', 'c'], '2': ['b'] } + * + * _.invertBy(object, function(value) { + * return 'group' + value; + * }); + * // => { 'group1': ['a', 'c'], 'group2': ['b'] } + */ + var invertBy = createInverter(function(result, value, key) { + if (value != null && + typeof value.toString != 'function') { + value = nativeObjectToString.call(value); + } + + if (hasOwnProperty.call(result, value)) { + result[value].push(key); + } else { + result[value] = [key]; + } + }, getIteratee); + + /** + * Invokes the method at `path` of `object`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Object + * @param {Object} object The object to query. + * @param {Array|string} path The path of the method to invoke. + * @param {...*} [args] The arguments to invoke the method with. + * @returns {*} Returns the result of the invoked method. + * @example + * + * var object = { 'a': [{ 'b': { 'c': [1, 2, 3, 4] } }] }; + * + * _.invoke(object, 'a[0].b.c.slice', 1, 3); + * // => [2, 3] + */ + var invoke = baseRest(baseInvoke); + + /** + * Creates an array of the own enumerable property names of `object`. + * + * **Note:** Non-object values are coerced to objects. See the + * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys) + * for more details. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Object + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.keys(new Foo); + * // => ['a', 'b'] (iteration order is not guaranteed) + * + * _.keys('hi'); + * // => ['0', '1'] + */ + function keys(object) { + return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object); + } + + /** + * Creates an array of the own and inherited enumerable property names of `object`. + * + * **Note:** Non-object values are coerced to objects. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Object + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.keysIn(new Foo); + * // => ['a', 'b', 'c'] (iteration order is not guaranteed) + */ + function keysIn(object) { + return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object); + } + + /** + * The opposite of `_.mapValues`; this method creates an object with the + * same values as `object` and keys generated by running each own enumerable + * string keyed property of `object` thru `iteratee`. The iteratee is invoked + * with three arguments: (value, key, object). + * + * @static + * @memberOf _ + * @since 3.8.0 + * @category Object + * @param {Object} object The object to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Object} Returns the new mapped object. + * @see _.mapValues + * @example + * + * _.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) { + * return key + value; + * }); + * // => { 'a1': 1, 'b2': 2 } + */ + function mapKeys(object, iteratee) { + var result = {}; + iteratee = getIteratee(iteratee, 3); + + baseForOwn(object, function(value, key, object) { + baseAssignValue(result, iteratee(value, key, object), value); + }); + return result; + } + + /** + * Creates an object with the same keys as `object` and values generated + * by running each own enumerable string keyed property of `object` thru + * `iteratee`. The iteratee is invoked with three arguments: + * (value, key, object). + * + * @static + * @memberOf _ + * @since 2.4.0 + * @category Object + * @param {Object} object The object to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Object} Returns the new mapped object. + * @see _.mapKeys + * @example + * + * var users = { + * 'fred': { 'user': 'fred', 'age': 40 }, + * 'pebbles': { 'user': 'pebbles', 'age': 1 } + * }; + * + * _.mapValues(users, function(o) { return o.age; }); + * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed) + * + * // The `_.property` iteratee shorthand. + * _.mapValues(users, 'age'); + * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed) + */ + function mapValues(object, iteratee) { + var result = {}; + iteratee = getIteratee(iteratee, 3); + + baseForOwn(object, function(value, key, object) { + baseAssignValue(result, key, iteratee(value, key, object)); + }); + return result; + } + + /** + * This method is like `_.assign` except that it recursively merges own and + * inherited enumerable string keyed properties of source objects into the + * destination object. Source properties that resolve to `undefined` are + * skipped if a destination value exists. Array and plain object properties + * are merged recursively. Other objects and value types are overridden by + * assignment. Source objects are applied from left to right. Subsequent + * sources overwrite property assignments of previous sources. + * + * **Note:** This method mutates `object`. + * + * @static + * @memberOf _ + * @since 0.5.0 + * @category Object + * @param {Object} object The destination object. + * @param {...Object} [sources] The source objects. + * @returns {Object} Returns `object`. + * @example + * + * var object = { + * 'a': [{ 'b': 2 }, { 'd': 4 }] + * }; + * + * var other = { + * 'a': [{ 'c': 3 }, { 'e': 5 }] + * }; + * + * _.merge(object, other); + * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] } + */ + var merge = createAssigner(function(object, source, srcIndex) { + baseMerge(object, source, srcIndex); + }); + + /** + * This method is like `_.merge` except that it accepts `customizer` which + * is invoked to produce the merged values of the destination and source + * properties. If `customizer` returns `undefined`, merging is handled by the + * method instead. The `customizer` is invoked with six arguments: + * (objValue, srcValue, key, object, source, stack). + * + * **Note:** This method mutates `object`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Object + * @param {Object} object The destination object. + * @param {...Object} sources The source objects. + * @param {Function} customizer The function to customize assigned values. + * @returns {Object} Returns `object`. + * @example + * + * function customizer(objValue, srcValue) { + * if (_.isArray(objValue)) { + * return objValue.concat(srcValue); + * } + * } + * + * var object = { 'a': [1], 'b': [2] }; + * var other = { 'a': [3], 'b': [4] }; + * + * _.mergeWith(object, other, customizer); + * // => { 'a': [1, 3], 'b': [2, 4] } + */ + var mergeWith = createAssigner(function(object, source, srcIndex, customizer) { + baseMerge(object, source, srcIndex, customizer); + }); + + /** + * The opposite of `_.pick`; this method creates an object composed of the + * own and inherited enumerable property paths of `object` that are not omitted. + * + * **Note:** This method is considerably slower than `_.pick`. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Object + * @param {Object} object The source object. + * @param {...(string|string[])} [paths] The property paths to omit. + * @returns {Object} Returns the new object. + * @example + * + * var object = { 'a': 1, 'b': '2', 'c': 3 }; + * + * _.omit(object, ['a', 'c']); + * // => { 'b': '2' } + */ + var omit = flatRest(function(object, paths) { + var result = {}; + if (object == null) { + return result; + } + var isDeep = false; + paths = arrayMap(paths, function(path) { + path = castPath(path, object); + isDeep || (isDeep = path.length > 1); + return path; + }); + copyObject(object, getAllKeysIn(object), result); + if (isDeep) { + result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone); + } + var length = paths.length; + while (length--) { + baseUnset(result, paths[length]); + } + return result; + }); + + /** + * The opposite of `_.pickBy`; this method creates an object composed of + * the own and inherited enumerable string keyed properties of `object` that + * `predicate` doesn't return truthy for. The predicate is invoked with two + * arguments: (value, key). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Object + * @param {Object} object The source object. + * @param {Function} [predicate=_.identity] The function invoked per property. + * @returns {Object} Returns the new object. + * @example + * + * var object = { 'a': 1, 'b': '2', 'c': 3 }; + * + * _.omitBy(object, _.isNumber); + * // => { 'b': '2' } + */ + function omitBy(object, predicate) { + return pickBy(object, negate(getIteratee(predicate))); + } + + /** + * Creates an object composed of the picked `object` properties. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Object + * @param {Object} object The source object. + * @param {...(string|string[])} [paths] The property paths to pick. + * @returns {Object} Returns the new object. + * @example + * + * var object = { 'a': 1, 'b': '2', 'c': 3 }; + * + * _.pick(object, ['a', 'c']); + * // => { 'a': 1, 'c': 3 } + */ + var pick = flatRest(function(object, paths) { + return object == null ? {} : basePick(object, paths); + }); + + /** + * Creates an object composed of the `object` properties `predicate` returns + * truthy for. The predicate is invoked with two arguments: (value, key). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Object + * @param {Object} object The source object. + * @param {Function} [predicate=_.identity] The function invoked per property. + * @returns {Object} Returns the new object. + * @example + * + * var object = { 'a': 1, 'b': '2', 'c': 3 }; + * + * _.pickBy(object, _.isNumber); + * // => { 'a': 1, 'c': 3 } + */ + function pickBy(object, predicate) { + if (object == null) { + return {}; + } + var props = arrayMap(getAllKeysIn(object), function(prop) { + return [prop]; + }); + predicate = getIteratee(predicate); + return basePickBy(object, props, function(value, path) { + return predicate(value, path[0]); + }); + } + + /** + * This method is like `_.get` except that if the resolved value is a + * function it's invoked with the `this` binding of its parent object and + * its result is returned. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Object + * @param {Object} object The object to query. + * @param {Array|string} path The path of the property to resolve. + * @param {*} [defaultValue] The value returned for `undefined` resolved values. + * @returns {*} Returns the resolved value. + * @example + * + * var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] }; + * + * _.result(object, 'a[0].b.c1'); + * // => 3 + * + * _.result(object, 'a[0].b.c2'); + * // => 4 + * + * _.result(object, 'a[0].b.c3', 'default'); + * // => 'default' + * + * _.result(object, 'a[0].b.c3', _.constant('default')); + * // => 'default' + */ + function result(object, path, defaultValue) { + path = castPath(path, object); + + var index = -1, + length = path.length; + + // Ensure the loop is entered when path is empty. + if (!length) { + length = 1; + object = undefined; + } + while (++index < length) { + var value = object == null ? undefined : object[toKey(path[index])]; + if (value === undefined) { + index = length; + value = defaultValue; + } + object = isFunction(value) ? value.call(object) : value; + } + return object; + } + + /** + * Sets the value at `path` of `object`. If a portion of `path` doesn't exist, + * it's created. Arrays are created for missing index properties while objects + * are created for all other missing properties. Use `_.setWith` to customize + * `path` creation. + * + * **Note:** This method mutates `object`. + * + * @static + * @memberOf _ + * @since 3.7.0 + * @category Object + * @param {Object} object The object to modify. + * @param {Array|string} path The path of the property to set. + * @param {*} value The value to set. + * @returns {Object} Returns `object`. + * @example + * + * var object = { 'a': [{ 'b': { 'c': 3 } }] }; + * + * _.set(object, 'a[0].b.c', 4); + * console.log(object.a[0].b.c); + * // => 4 + * + * _.set(object, ['x', '0', 'y', 'z'], 5); + * console.log(object.x[0].y.z); + * // => 5 + */ + function set(object, path, value) { + return object == null ? object : baseSet(object, path, value); + } + + /** + * This method is like `_.set` except that it accepts `customizer` which is + * invoked to produce the objects of `path`. If `customizer` returns `undefined` + * path creation is handled by the method instead. The `customizer` is invoked + * with three arguments: (nsValue, key, nsObject). + * + * **Note:** This method mutates `object`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Object + * @param {Object} object The object to modify. + * @param {Array|string} path The path of the property to set. + * @param {*} value The value to set. + * @param {Function} [customizer] The function to customize assigned values. + * @returns {Object} Returns `object`. + * @example + * + * var object = {}; + * + * _.setWith(object, '[0][1]', 'a', Object); + * // => { '0': { '1': 'a' } } + */ + function setWith(object, path, value, customizer) { + customizer = typeof customizer == 'function' ? customizer : undefined; + return object == null ? object : baseSet(object, path, value, customizer); + } + + /** + * Creates an array of own enumerable string keyed-value pairs for `object` + * which can be consumed by `_.fromPairs`. If `object` is a map or set, its + * entries are returned. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @alias entries + * @category Object + * @param {Object} object The object to query. + * @returns {Array} Returns the key-value pairs. + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.toPairs(new Foo); + * // => [['a', 1], ['b', 2]] (iteration order is not guaranteed) + */ + var toPairs = createToPairs(keys); + + /** + * Creates an array of own and inherited enumerable string keyed-value pairs + * for `object` which can be consumed by `_.fromPairs`. If `object` is a map + * or set, its entries are returned. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @alias entriesIn + * @category Object + * @param {Object} object The object to query. + * @returns {Array} Returns the key-value pairs. + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.toPairsIn(new Foo); + * // => [['a', 1], ['b', 2], ['c', 3]] (iteration order is not guaranteed) + */ + var toPairsIn = createToPairs(keysIn); + + /** + * An alternative to `_.reduce`; this method transforms `object` to a new + * `accumulator` object which is the result of running each of its own + * enumerable string keyed properties thru `iteratee`, with each invocation + * potentially mutating the `accumulator` object. If `accumulator` is not + * provided, a new object with the same `[[Prototype]]` will be used. The + * iteratee is invoked with four arguments: (accumulator, value, key, object). + * Iteratee functions may exit iteration early by explicitly returning `false`. + * + * @static + * @memberOf _ + * @since 1.3.0 + * @category Object + * @param {Object} object The object to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @param {*} [accumulator] The custom accumulator value. + * @returns {*} Returns the accumulated value. + * @example + * + * _.transform([2, 3, 4], function(result, n) { + * result.push(n *= n); + * return n % 2 == 0; + * }, []); + * // => [4, 9] + * + * _.transform({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) { + * (result[value] || (result[value] = [])).push(key); + * }, {}); + * // => { '1': ['a', 'c'], '2': ['b'] } + */ + function transform(object, iteratee, accumulator) { + var isArr = isArray(object), + isArrLike = isArr || isBuffer(object) || isTypedArray(object); + + iteratee = getIteratee(iteratee, 4); + if (accumulator == null) { + var Ctor = object && object.constructor; + if (isArrLike) { + accumulator = isArr ? new Ctor : []; + } + else if (isObject(object)) { + accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {}; + } + else { + accumulator = {}; + } + } + (isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object) { + return iteratee(accumulator, value, index, object); + }); + return accumulator; + } + + /** + * Removes the property at `path` of `object`. + * + * **Note:** This method mutates `object`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Object + * @param {Object} object The object to modify. + * @param {Array|string} path The path of the property to unset. + * @returns {boolean} Returns `true` if the property is deleted, else `false`. + * @example + * + * var object = { 'a': [{ 'b': { 'c': 7 } }] }; + * _.unset(object, 'a[0].b.c'); + * // => true + * + * console.log(object); + * // => { 'a': [{ 'b': {} }] }; + * + * _.unset(object, ['a', '0', 'b', 'c']); + * // => true + * + * console.log(object); + * // => { 'a': [{ 'b': {} }] }; + */ + function unset(object, path) { + return object == null ? true : baseUnset(object, path); + } + + /** + * This method is like `_.set` except that accepts `updater` to produce the + * value to set. Use `_.updateWith` to customize `path` creation. The `updater` + * is invoked with one argument: (value). + * + * **Note:** This method mutates `object`. + * + * @static + * @memberOf _ + * @since 4.6.0 + * @category Object + * @param {Object} object The object to modify. + * @param {Array|string} path The path of the property to set. + * @param {Function} updater The function to produce the updated value. + * @returns {Object} Returns `object`. + * @example + * + * var object = { 'a': [{ 'b': { 'c': 3 } }] }; + * + * _.update(object, 'a[0].b.c', function(n) { return n * n; }); + * console.log(object.a[0].b.c); + * // => 9 + * + * _.update(object, 'x[0].y.z', function(n) { return n ? n + 1 : 0; }); + * console.log(object.x[0].y.z); + * // => 0 + */ + function update(object, path, updater) { + return object == null ? object : baseUpdate(object, path, castFunction(updater)); + } + + /** + * This method is like `_.update` except that it accepts `customizer` which is + * invoked to produce the objects of `path`. If `customizer` returns `undefined` + * path creation is handled by the method instead. The `customizer` is invoked + * with three arguments: (nsValue, key, nsObject). + * + * **Note:** This method mutates `object`. + * + * @static + * @memberOf _ + * @since 4.6.0 + * @category Object + * @param {Object} object The object to modify. + * @param {Array|string} path The path of the property to set. + * @param {Function} updater The function to produce the updated value. + * @param {Function} [customizer] The function to customize assigned values. + * @returns {Object} Returns `object`. + * @example + * + * var object = {}; + * + * _.updateWith(object, '[0][1]', _.constant('a'), Object); + * // => { '0': { '1': 'a' } } + */ + function updateWith(object, path, updater, customizer) { + customizer = typeof customizer == 'function' ? customizer : undefined; + return object == null ? object : baseUpdate(object, path, castFunction(updater), customizer); + } + + /** + * Creates an array of the own enumerable string keyed property values of `object`. + * + * **Note:** Non-object values are coerced to objects. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Object + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property values. + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.values(new Foo); + * // => [1, 2] (iteration order is not guaranteed) + * + * _.values('hi'); + * // => ['h', 'i'] + */ + function values(object) { + return object == null ? [] : baseValues(object, keys(object)); + } + + /** + * Creates an array of the own and inherited enumerable string keyed property + * values of `object`. + * + * **Note:** Non-object values are coerced to objects. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Object + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property values. + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.valuesIn(new Foo); + * // => [1, 2, 3] (iteration order is not guaranteed) + */ + function valuesIn(object) { + return object == null ? [] : baseValues(object, keysIn(object)); + } + + /*------------------------------------------------------------------------*/ + + /** + * Clamps `number` within the inclusive `lower` and `upper` bounds. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Number + * @param {number} number The number to clamp. + * @param {number} [lower] The lower bound. + * @param {number} upper The upper bound. + * @returns {number} Returns the clamped number. + * @example + * + * _.clamp(-10, -5, 5); + * // => -5 + * + * _.clamp(10, -5, 5); + * // => 5 + */ + function clamp(number, lower, upper) { + if (upper === undefined) { + upper = lower; + lower = undefined; + } + if (upper !== undefined) { + upper = toNumber(upper); + upper = upper === upper ? upper : 0; + } + if (lower !== undefined) { + lower = toNumber(lower); + lower = lower === lower ? lower : 0; + } + return baseClamp(toNumber(number), lower, upper); + } + + /** + * Checks if `n` is between `start` and up to, but not including, `end`. If + * `end` is not specified, it's set to `start` with `start` then set to `0`. + * If `start` is greater than `end` the params are swapped to support + * negative ranges. + * + * @static + * @memberOf _ + * @since 3.3.0 + * @category Number + * @param {number} number The number to check. + * @param {number} [start=0] The start of the range. + * @param {number} end The end of the range. + * @returns {boolean} Returns `true` if `number` is in the range, else `false`. + * @see _.range, _.rangeRight + * @example + * + * _.inRange(3, 2, 4); + * // => true + * + * _.inRange(4, 8); + * // => true + * + * _.inRange(4, 2); + * // => false + * + * _.inRange(2, 2); + * // => false + * + * _.inRange(1.2, 2); + * // => true + * + * _.inRange(5.2, 4); + * // => false + * + * _.inRange(-3, -2, -6); + * // => true + */ + function inRange(number, start, end) { + start = toFinite(start); + if (end === undefined) { + end = start; + start = 0; + } else { + end = toFinite(end); + } + number = toNumber(number); + return baseInRange(number, start, end); + } + + /** + * Produces a random number between the inclusive `lower` and `upper` bounds. + * If only one argument is provided a number between `0` and the given number + * is returned. If `floating` is `true`, or either `lower` or `upper` are + * floats, a floating-point number is returned instead of an integer. + * + * **Note:** JavaScript follows the IEEE-754 standard for resolving + * floating-point values which can produce unexpected results. + * + * @static + * @memberOf _ + * @since 0.7.0 + * @category Number + * @param {number} [lower=0] The lower bound. + * @param {number} [upper=1] The upper bound. + * @param {boolean} [floating] Specify returning a floating-point number. + * @returns {number} Returns the random number. + * @example + * + * _.random(0, 5); + * // => an integer between 0 and 5 + * + * _.random(5); + * // => also an integer between 0 and 5 + * + * _.random(5, true); + * // => a floating-point number between 0 and 5 + * + * _.random(1.2, 5.2); + * // => a floating-point number between 1.2 and 5.2 + */ + function random(lower, upper, floating) { + if (floating && typeof floating != 'boolean' && isIterateeCall(lower, upper, floating)) { + upper = floating = undefined; + } + if (floating === undefined) { + if (typeof upper == 'boolean') { + floating = upper; + upper = undefined; + } + else if (typeof lower == 'boolean') { + floating = lower; + lower = undefined; + } + } + if (lower === undefined && upper === undefined) { + lower = 0; + upper = 1; + } + else { + lower = toFinite(lower); + if (upper === undefined) { + upper = lower; + lower = 0; + } else { + upper = toFinite(upper); + } + } + if (lower > upper) { + var temp = lower; + lower = upper; + upper = temp; + } + if (floating || lower % 1 || upper % 1) { + var rand = nativeRandom(); + return nativeMin(lower + (rand * (upper - lower + freeParseFloat('1e-' + ((rand + '').length - 1)))), upper); + } + return baseRandom(lower, upper); + } + + /*------------------------------------------------------------------------*/ + + /** + * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase). + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category String + * @param {string} [string=''] The string to convert. + * @returns {string} Returns the camel cased string. + * @example + * + * _.camelCase('Foo Bar'); + * // => 'fooBar' + * + * _.camelCase('--foo-bar--'); + * // => 'fooBar' + * + * _.camelCase('__FOO_BAR__'); + * // => 'fooBar' + */ + var camelCase = createCompounder(function(result, word, index) { + word = word.toLowerCase(); + return result + (index ? capitalize(word) : word); + }); + + /** + * Converts the first character of `string` to upper case and the remaining + * to lower case. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category String + * @param {string} [string=''] The string to capitalize. + * @returns {string} Returns the capitalized string. + * @example + * + * _.capitalize('FRED'); + * // => 'Fred' + */ + function capitalize(string) { + return upperFirst(toString(string).toLowerCase()); + } + + /** + * Deburrs `string` by converting + * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table) + * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A) + * letters to basic Latin letters and removing + * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks). + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category String + * @param {string} [string=''] The string to deburr. + * @returns {string} Returns the deburred string. + * @example + * + * _.deburr('déjà vu'); + * // => 'deja vu' + */ + function deburr(string) { + string = toString(string); + return string && string.replace(reLatin, deburrLetter).replace(reComboMark, ''); + } + + /** + * Checks if `string` ends with the given target string. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category String + * @param {string} [string=''] The string to inspect. + * @param {string} [target] The string to search for. + * @param {number} [position=string.length] The position to search up to. + * @returns {boolean} Returns `true` if `string` ends with `target`, + * else `false`. + * @example + * + * _.endsWith('abc', 'c'); + * // => true + * + * _.endsWith('abc', 'b'); + * // => false + * + * _.endsWith('abc', 'b', 2); + * // => true + */ + function endsWith(string, target, position) { + string = toString(string); + target = baseToString(target); + + var length = string.length; + position = position === undefined + ? length + : baseClamp(toInteger(position), 0, length); + + var end = position; + position -= target.length; + return position >= 0 && string.slice(position, end) == target; + } + + /** + * Converts the characters "&", "<", ">", '"', and "'" in `string` to their + * corresponding HTML entities. + * + * **Note:** No other characters are escaped. To escape additional + * characters use a third-party library like [_he_](https://mths.be/he). + * + * Though the ">" character is escaped for symmetry, characters like + * ">" and "/" don't need escaping in HTML and have no special meaning + * unless they're part of a tag or unquoted attribute value. See + * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands) + * (under "semi-related fun fact") for more details. + * + * When working with HTML you should always + * [quote attribute values](http://wonko.com/post/html-escaping) to reduce + * XSS vectors. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category String + * @param {string} [string=''] The string to escape. + * @returns {string} Returns the escaped string. + * @example + * + * _.escape('fred, barney, & pebbles'); + * // => 'fred, barney, & pebbles' + */ + function escape(string) { + string = toString(string); + return (string && reHasUnescapedHtml.test(string)) + ? string.replace(reUnescapedHtml, escapeHtmlChar) + : string; + } + + /** + * Escapes the `RegExp` special characters "^", "$", "\", ".", "*", "+", + * "?", "(", ")", "[", "]", "{", "}", and "|" in `string`. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category String + * @param {string} [string=''] The string to escape. + * @returns {string} Returns the escaped string. + * @example + * + * _.escapeRegExp('[lodash](https://lodash.com/)'); + * // => '\[lodash\]\(https://lodash\.com/\)' + */ + function escapeRegExp(string) { + string = toString(string); + return (string && reHasRegExpChar.test(string)) + ? string.replace(reRegExpChar, '\\$&') + : string; + } + + /** + * Converts `string` to + * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles). + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category String + * @param {string} [string=''] The string to convert. + * @returns {string} Returns the kebab cased string. + * @example + * + * _.kebabCase('Foo Bar'); + * // => 'foo-bar' + * + * _.kebabCase('fooBar'); + * // => 'foo-bar' + * + * _.kebabCase('__FOO_BAR__'); + * // => 'foo-bar' + */ + var kebabCase = createCompounder(function(result, word, index) { + return result + (index ? '-' : '') + word.toLowerCase(); + }); + + /** + * Converts `string`, as space separated words, to lower case. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category String + * @param {string} [string=''] The string to convert. + * @returns {string} Returns the lower cased string. + * @example + * + * _.lowerCase('--Foo-Bar--'); + * // => 'foo bar' + * + * _.lowerCase('fooBar'); + * // => 'foo bar' + * + * _.lowerCase('__FOO_BAR__'); + * // => 'foo bar' + */ + var lowerCase = createCompounder(function(result, word, index) { + return result + (index ? ' ' : '') + word.toLowerCase(); + }); + + /** + * Converts the first character of `string` to lower case. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category String + * @param {string} [string=''] The string to convert. + * @returns {string} Returns the converted string. + * @example + * + * _.lowerFirst('Fred'); + * // => 'fred' + * + * _.lowerFirst('FRED'); + * // => 'fRED' + */ + var lowerFirst = createCaseFirst('toLowerCase'); + + /** + * Pads `string` on the left and right sides if it's shorter than `length`. + * Padding characters are truncated if they can't be evenly divided by `length`. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category String + * @param {string} [string=''] The string to pad. + * @param {number} [length=0] The padding length. + * @param {string} [chars=' '] The string used as padding. + * @returns {string} Returns the padded string. + * @example + * + * _.pad('abc', 8); + * // => ' abc ' + * + * _.pad('abc', 8, '_-'); + * // => '_-abc_-_' + * + * _.pad('abc', 3); + * // => 'abc' + */ + function pad(string, length, chars) { + string = toString(string); + length = toInteger(length); + + var strLength = length ? stringSize(string) : 0; + if (!length || strLength >= length) { + return string; + } + var mid = (length - strLength) / 2; + return ( + createPadding(nativeFloor(mid), chars) + + string + + createPadding(nativeCeil(mid), chars) + ); + } + + /** + * Pads `string` on the right side if it's shorter than `length`. Padding + * characters are truncated if they exceed `length`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category String + * @param {string} [string=''] The string to pad. + * @param {number} [length=0] The padding length. + * @param {string} [chars=' '] The string used as padding. + * @returns {string} Returns the padded string. + * @example + * + * _.padEnd('abc', 6); + * // => 'abc ' + * + * _.padEnd('abc', 6, '_-'); + * // => 'abc_-_' + * + * _.padEnd('abc', 3); + * // => 'abc' + */ + function padEnd(string, length, chars) { + string = toString(string); + length = toInteger(length); + + var strLength = length ? stringSize(string) : 0; + return (length && strLength < length) + ? (string + createPadding(length - strLength, chars)) + : string; + } + + /** + * Pads `string` on the left side if it's shorter than `length`. Padding + * characters are truncated if they exceed `length`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category String + * @param {string} [string=''] The string to pad. + * @param {number} [length=0] The padding length. + * @param {string} [chars=' '] The string used as padding. + * @returns {string} Returns the padded string. + * @example + * + * _.padStart('abc', 6); + * // => ' abc' + * + * _.padStart('abc', 6, '_-'); + * // => '_-_abc' + * + * _.padStart('abc', 3); + * // => 'abc' + */ + function padStart(string, length, chars) { + string = toString(string); + length = toInteger(length); + + var strLength = length ? stringSize(string) : 0; + return (length && strLength < length) + ? (createPadding(length - strLength, chars) + string) + : string; + } + + /** + * Converts `string` to an integer of the specified radix. If `radix` is + * `undefined` or `0`, a `radix` of `10` is used unless `value` is a + * hexadecimal, in which case a `radix` of `16` is used. + * + * **Note:** This method aligns with the + * [ES5 implementation](https://es5.github.io/#x15.1.2.2) of `parseInt`. + * + * @static + * @memberOf _ + * @since 1.1.0 + * @category String + * @param {string} string The string to convert. + * @param {number} [radix=10] The radix to interpret `value` by. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {number} Returns the converted integer. + * @example + * + * _.parseInt('08'); + * // => 8 + * + * _.map(['6', '08', '10'], _.parseInt); + * // => [6, 8, 10] + */ + function parseInt(string, radix, guard) { + if (guard || radix == null) { + radix = 0; + } else if (radix) { + radix = +radix; + } + return nativeParseInt(toString(string).replace(reTrimStart, ''), radix || 0); + } + + /** + * Repeats the given string `n` times. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category String + * @param {string} [string=''] The string to repeat. + * @param {number} [n=1] The number of times to repeat the string. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {string} Returns the repeated string. + * @example + * + * _.repeat('*', 3); + * // => '***' + * + * _.repeat('abc', 2); + * // => 'abcabc' + * + * _.repeat('abc', 0); + * // => '' + */ + function repeat(string, n, guard) { + if ((guard ? isIterateeCall(string, n, guard) : n === undefined)) { + n = 1; + } else { + n = toInteger(n); + } + return baseRepeat(toString(string), n); + } + + /** + * Replaces matches for `pattern` in `string` with `replacement`. + * + * **Note:** This method is based on + * [`String#replace`](https://mdn.io/String/replace). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category String + * @param {string} [string=''] The string to modify. + * @param {RegExp|string} pattern The pattern to replace. + * @param {Function|string} replacement The match replacement. + * @returns {string} Returns the modified string. + * @example + * + * _.replace('Hi Fred', 'Fred', 'Barney'); + * // => 'Hi Barney' + */ + function replace() { + var args = arguments, + string = toString(args[0]); + + return args.length < 3 ? string : string.replace(args[1], args[2]); + } + + /** + * Converts `string` to + * [snake case](https://en.wikipedia.org/wiki/Snake_case). + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category String + * @param {string} [string=''] The string to convert. + * @returns {string} Returns the snake cased string. + * @example + * + * _.snakeCase('Foo Bar'); + * // => 'foo_bar' + * + * _.snakeCase('fooBar'); + * // => 'foo_bar' + * + * _.snakeCase('--FOO-BAR--'); + * // => 'foo_bar' + */ + var snakeCase = createCompounder(function(result, word, index) { + return result + (index ? '_' : '') + word.toLowerCase(); + }); + + /** + * Splits `string` by `separator`. + * + * **Note:** This method is based on + * [`String#split`](https://mdn.io/String/split). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category String + * @param {string} [string=''] The string to split. + * @param {RegExp|string} separator The separator pattern to split by. + * @param {number} [limit] The length to truncate results to. + * @returns {Array} Returns the string segments. + * @example + * + * _.split('a-b-c', '-', 2); + * // => ['a', 'b'] + */ + function split(string, separator, limit) { + if (limit && typeof limit != 'number' && isIterateeCall(string, separator, limit)) { + separator = limit = undefined; + } + limit = limit === undefined ? MAX_ARRAY_LENGTH : limit >>> 0; + if (!limit) { + return []; + } + string = toString(string); + if (string && ( + typeof separator == 'string' || + (separator != null && !isRegExp(separator)) + )) { + separator = baseToString(separator); + if (!separator && hasUnicode(string)) { + return castSlice(stringToArray(string), 0, limit); + } + } + return string.split(separator, limit); + } + + /** + * Converts `string` to + * [start case](https://en.wikipedia.org/wiki/Letter_case#Stylistic_or_specialised_usage). + * + * @static + * @memberOf _ + * @since 3.1.0 + * @category String + * @param {string} [string=''] The string to convert. + * @returns {string} Returns the start cased string. + * @example + * + * _.startCase('--foo-bar--'); + * // => 'Foo Bar' + * + * _.startCase('fooBar'); + * // => 'Foo Bar' + * + * _.startCase('__FOO_BAR__'); + * // => 'FOO BAR' + */ + var startCase = createCompounder(function(result, word, index) { + return result + (index ? ' ' : '') + upperFirst(word); + }); + + /** + * Checks if `string` starts with the given target string. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category String + * @param {string} [string=''] The string to inspect. + * @param {string} [target] The string to search for. + * @param {number} [position=0] The position to search from. + * @returns {boolean} Returns `true` if `string` starts with `target`, + * else `false`. + * @example + * + * _.startsWith('abc', 'a'); + * // => true + * + * _.startsWith('abc', 'b'); + * // => false + * + * _.startsWith('abc', 'b', 1); + * // => true + */ + function startsWith(string, target, position) { + string = toString(string); + position = position == null + ? 0 + : baseClamp(toInteger(position), 0, string.length); + + target = baseToString(target); + return string.slice(position, position + target.length) == target; + } + + /** + * Creates a compiled template function that can interpolate data properties + * in "interpolate" delimiters, HTML-escape interpolated data properties in + * "escape" delimiters, and execute JavaScript in "evaluate" delimiters. Data + * properties may be accessed as free variables in the template. If a setting + * object is given, it takes precedence over `_.templateSettings` values. + * + * **Note:** In the development build `_.template` utilizes + * [sourceURLs](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl) + * for easier debugging. + * + * For more information on precompiling templates see + * [lodash's custom builds documentation](https://lodash.com/custom-builds). + * + * For more information on Chrome extension sandboxes see + * [Chrome's extensions documentation](https://developer.chrome.com/extensions/sandboxingEval). + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category String + * @param {string} [string=''] The template string. + * @param {Object} [options={}] The options object. + * @param {RegExp} [options.escape=_.templateSettings.escape] + * The HTML "escape" delimiter. + * @param {RegExp} [options.evaluate=_.templateSettings.evaluate] + * The "evaluate" delimiter. + * @param {Object} [options.imports=_.templateSettings.imports] + * An object to import into the template as free variables. + * @param {RegExp} [options.interpolate=_.templateSettings.interpolate] + * The "interpolate" delimiter. + * @param {string} [options.sourceURL='lodash.templateSources[n]'] + * The sourceURL of the compiled template. + * @param {string} [options.variable='obj'] + * The data object variable name. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {Function} Returns the compiled template function. + * @example + * + * // Use the "interpolate" delimiter to create a compiled template. + * var compiled = _.template('hello <%= user %>!'); + * compiled({ 'user': 'fred' }); + * // => 'hello fred!' + * + * // Use the HTML "escape" delimiter to escape data property values. + * var compiled = _.template('<%- value %>'); + * compiled({ 'value': ' + + + + + + + + + + + + + + + +
+
+
+ + Digital IDE +
+
+
    +
    +
    +
    +
    + + +
    +
    + + + + +
    +
    +
    +
    +
    +
    +
    +
    + + + + + \ No newline at end of file diff --git a/resources/netlist/render.js b/resources/netlist/render.js new file mode 100644 index 0000000..98eb0f0 --- /dev/null +++ b/resources/netlist/render.js @@ -0,0 +1,231 @@ +"use strict"; +class render{ + constructor() { + this.netLists = []; + this.curNetIndex = 0; + this.container = document.getElementById('netlist_canvas'); + //Create SVG element + this.embed_svg = document.createElementNS("http://www.w3.org/2000/svg", "svg"); + this.embed_svg.setAttribute('style', 'width: 100%; height: 100%'); + this.embed_svg.setAttribute('type', 'image/svg+xml'); + this.embed_svg.id = "svg_synth"; + } + + init() { + document.getElementById("last").onclick = function () { + if (this.curNetIndex > 0) { + this.curNetIndex--; + this.showNetlist(this.netLists[this.curNetIndex]); + } + } + + document.getElementById("next").onclick = function () { + if (this.curNetIndex < this.netLists.length-1) { + this.curNetIndex++; + this.showNetlist(this.netLists[this.curNetIndex]); + } + } + } + + async showNetlist(netList, isClear) { + if (isClear) { + this.netLists = []; + this.netlist = netList; + this.netLists.push(netList); + } + + let netnode = this.showTreelist(netList); + console.log('net node'); + console.log(netnode); + + var setting = {}; + $(document).ready(function () { + this.zTreeObj = $.fn.zTree.init($("#netTree"), setting, netnode); + }); + + // remove embed + svgPanZoom(this.embed_svg).destroy(); + this.svg = await netlistsvg.render(netlistsvg.digitalSkin, netList); + + //Add to container + this.embed_svg.innerHTML = this.svg; + + this.container.appendChild(this.embed_svg); + + // 重新注册事件 + this.registerClickEvent(); + + this.set_line_width(); + + + let pan_config = { + zoomEnabled: true, + controlIconsEnabled: true, + minZoom: 0.01, + maxZoom: 100, + fit: false, + center: true + }; + let pan_zoom = svgPanZoom(this.embed_svg, pan_config); + // pan_zoom.zoom(2); + pan_zoom.center(); + pan_zoom.resize(); + } + + showTreelist(netlist) { + let flatModule = netlistsvg.parser(netlistsvg.digitalSkin, netlist); + + let netnode = [ + { + name: flatModule.moduleName, + // iconSkin: "main", + open: true, + children: [ + { + name: "cells", + open: true, + children: [] + }, + { + name: "ports", + open: true, + children: [] + } + ] + } + ]; + for (let index = 0; index < flatModule.nodes.length; index++) { + const element = flatModule.nodes[index]; + let child = { + name: element.key, + iconSkin: "cells" + } + if(element.type == "$_inputExt_") { + child.name += " (input)"; + child.iconSkin = "port"; + netnode[0].children[1].children.push(child); + } else if(element.type == "$_outputExt_") { + child.name += " (output)"; + child.iconSkin = "port"; + netnode[0].children[1].children.push(child); + } else { + netnode[0].children[0].children.push(child); + } + } + return netnode; + } + + removeClickEvent() { + function handleRemove() { + console.log("ok"); + } + let countries = this.embed_svg.childNodes; + for (let i = 0; i < countries.length; i++) { + countries[i].removeEventListener('click', handleRemove); + } + } + + registerClickEvent() { + let countries = this.embed_svg.childNodes; + for (let i = 0; i < countries.length; i++) { + countries[i].addEventListener('click', e => { + let element = e.target; + + if (element.tagName === 'line') { + let class_name = element.getAttribute("class"); + this.handleLineEvent(class_name); + } + if (element.tagName === 'rect') { + let class_name = element.getAttribute("class"); + class_name = class_name.replace("cell_", ''); + this.handleGenericEvent(class_name); + } + if (element.tagName === 'path') { + let class_name = element.getAttribute("class"); + class_name = class_name.replace("cell_", ''); + } + }); + } + } + + set_line_width() { + let tag_name = 'line'; + let width = 2; + let match = undefined; + function recursive_searchTree(element, tag_name) { + let type = element.tagName; + if (type === tag_name) { + element.style = `stroke:#000000;stroke-width:${width}`; + match = element; + } + else if (element !== null) { + let i; + let result = null; + let childs = element.childNodes; + for (i = 0; result === null && i < childs.length; i++) { + result = recursive_searchTree(childs[i], tag_name); + if (result !== null) { + break; + } + } + return result; + } + return null; + } + recursive_searchTree(this.embed_svg, tag_name); + return match; + } + + handleLineEvent(class_name) { + let match = undefined; + function recursive_searchLine(element, tag_name) { + let type = element.tagName; + let class_name_i = undefined; + try { + class_name_i = element.getAttribute("class"); + } + catch (error) { + class_name_i = ''; + } + + if (type === tag_name && class_name_i === class_name) { + element.style = "stroke:#84da00;stroke-width:3"; + match = element; + } + else if (type === tag_name && class_name_i !== class_name) { + element.style = "stroke:#000000;stroke-width:2"; + } + else if (element !== null) { + let i; + let result = null; + let childs = element.childNodes; + for (i = 0; result === null && i < childs.length; i++) { + result = recursive_searchLine(childs[i], tag_name, class_name); + if (result !== null) { + break; + } + } + return result; + } + return null; + } + recursive_searchLine(this.embed_svg, "line", class_name); + return match; + } + + handleGenericEvent(class_name) { + let newNetList = { + "modules" : {} + } + for (const module in this.netlist.modules) { + if (module.toLowerCase() === class_name.toLowerCase()) { + newNetList.modules[class_name] = this.netlist.modules[module]; + break; + } + } + this.curNetIndex++; + this.netLists = this.netLists.slice(0,this.curNetIndex); + this.netLists.push(newNetList); + this.showNetlist(this.netLists[this.curNetIndex]); + } +} \ No newline at end of file diff --git a/resources/netlist/resources/kernel/share/abc9_map.v b/resources/netlist/resources/kernel/share/abc9_map.v new file mode 100644 index 0000000..b00e0e6 --- /dev/null +++ b/resources/netlist/resources/kernel/share/abc9_map.v @@ -0,0 +1,27 @@ +`ifdef DFF +(* techmap_celltype = "$_DFF_[PN]_" *) +module $_DFF_x_(input C, D, output Q); + parameter [0:0] _TECHMAP_WIREINIT_Q_ = 1'bx; + parameter _TECHMAP_CELLTYPE_ = ""; + wire D_; + generate if (_TECHMAP_CELLTYPE_ == "$_DFF_N_") begin + if (_TECHMAP_WIREINIT_Q_ === 1'b0) begin + $__DFF_N__$abc9_flop _TECHMAP_REPLACE_ (.C(C), .D(D), .Q(Q), .n1(D_)); + $_DFF_N_ ff (.C(C), .D(D_), .Q(Q)); + end + else + (* abc9_keep *) $_DFF_N_ _TECHMAP_REPLACE_ (.C(C), .D(D), .Q(Q)); + end + else if (_TECHMAP_CELLTYPE_ == "$_DFF_P_") begin + if (_TECHMAP_WIREINIT_Q_ === 1'b0) begin + $__DFF_P__$abc9_flop _TECHMAP_REPLACE_ (.C(C), .D(D), .Q(Q), .n1(D_)); + $_DFF_P_ ff (.C(C), .D(D_), .Q(Q)); + end + else + (* abc9_keep *) $_DFF_P_ _TECHMAP_REPLACE_ (.C(C), .D(D), .Q(Q)); + end + else if (_TECHMAP_CELLTYPE_ != "") + $error("Unrecognised _TECHMAP_CELLTYPE_"); + endgenerate +endmodule +`endif diff --git a/resources/netlist/resources/kernel/share/abc9_model.v b/resources/netlist/resources/kernel/share/abc9_model.v new file mode 100644 index 0000000..570a1ec --- /dev/null +++ b/resources/netlist/resources/kernel/share/abc9_model.v @@ -0,0 +1,29 @@ +(* abc9_box *) +module $__ABC9_DELAY (input I, output O); + parameter DELAY = 0; + specify + (I => O) = DELAY; + endspecify +endmodule + +module $__ABC9_SCC_BREAKER (input [WIDTH-1:0] I, output [WIDTH-1:0] O); +parameter WIDTH = 0; +endmodule + +(* abc9_flop, abc9_box, lib_whitebox *) +module $__DFF_N__$abc9_flop (input C, D, Q, output n1); + assign n1 = D; + specify + $setup(D, posedge C, 0); + (posedge C => (n1:D)) = 0; + endspecify +endmodule + +(* abc9_flop, abc9_box, lib_whitebox *) +module $__DFF_P__$abc9_flop (input C, D, Q, output n1); + assign n1 = D; + specify + $setup(D, posedge C, 0); + (posedge C => (n1:D)) = 0; + endspecify +endmodule diff --git a/resources/netlist/resources/kernel/share/abc9_unmap.v b/resources/netlist/resources/kernel/share/abc9_unmap.v new file mode 100644 index 0000000..b1bc4fb --- /dev/null +++ b/resources/netlist/resources/kernel/share/abc9_unmap.v @@ -0,0 +1,16 @@ +(* techmap_celltype = "$__DFF_N__$abc9_flop $__DFF_P__$abc9_flop" *) +module $__DFF_x__$abc9_flop (input C, D, (* init = 1'b0 *) input Q, output n1); + parameter _TECHMAP_CELLTYPE_ = ""; + generate if (_TECHMAP_CELLTYPE_ == "$__DFF_N__$abc9_flop") + $_DFF_N_ _TECHMAP_REPLACE_ (.C(C), .D(D), .Q(Q)); + else if (_TECHMAP_CELLTYPE_ == "$__DFF_P__$abc9_flop") + $_DFF_P_ _TECHMAP_REPLACE_ (.C(C), .D(D), .Q(Q)); + else if (_TECHMAP_CELLTYPE_ != "") + $error("Unrecognised _TECHMAP_CELLTYPE_"); + endgenerate +endmodule + +module $__ABC9_SCC_BREAKER (input [WIDTH-1:0] I, output [WIDTH-1:0] O); +parameter WIDTH = 0; +assign O = I; +endmodule diff --git a/resources/netlist/resources/kernel/share/achronix/speedster22i/cells_map.v b/resources/netlist/resources/kernel/share/achronix/speedster22i/cells_map.v new file mode 100644 index 0000000..04288ba --- /dev/null +++ b/resources/netlist/resources/kernel/share/achronix/speedster22i/cells_map.v @@ -0,0 +1,73 @@ +/* + * yosys -- Yosys Open SYnthesis Suite + * + * Copyright (C) 2012 Claire Xenia Wolf + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + */ +// > c60k28 (Viacheslav, VT) [at] yandex [dot] com +// > Achronix eFPGA technology mapping. User must first simulate the generated \ +// > netlist before going to test it on board/custom chip. + +// > Input/Output buffers < +// Input buffer map +module \$__inpad (input I, output O); + PADIN _TECHMAP_REPLACE_ (.padout(O), .padin(I)); +endmodule +// Output buffer map +module \$__outpad (input I, output O); + PADOUT _TECHMAP_REPLACE_ (.padout(O), .padin(I), .oe(1'b1)); +endmodule +// > end buffers < + +// > Look-Up table < +// > VT: I still think Achronix folks would have chosen a better \ +// > logic architecture. +// LUT Map +module \$lut (A, Y); + parameter WIDTH = 0; + parameter LUT = 0; + (* force_downto *) + input [WIDTH-1:0] A; + output Y; + generate + if (WIDTH == 1) begin + // VT: This is not consistent and ACE will complain: assign Y = ~A[0]; + LUT4 #(.lut_function({4{LUT}})) _TECHMAP_REPLACE_ + (.dout(Y), .din0(A[0]), .din1(1'b0), .din2(1'b0), .din3(1'b0)); + end else + if (WIDTH == 2) begin + LUT4 #(.lut_function({4{LUT}})) _TECHMAP_REPLACE_ + (.dout(Y), .din0(A[0]), .din1(A[1]), .din2(1'b0), .din3(1'b0)); + end else + if(WIDTH == 3) begin + LUT4 #(.lut_function({2{LUT}})) _TECHMAP_REPLACE_ + (.dout(Y), .din0(A[0]), .din1(A[1]), .din2(A[2]), .din3(1'b0)); + end else + if(WIDTH == 4) begin + LUT4 #(.lut_function(LUT)) _TECHMAP_REPLACE_ + (.dout(Y), .din0(A[0]), .din1(A[1]), .din2(A[2]), .din3(A[3])); + end else + wire _TECHMAP_FAIL_ = 1; + endgenerate +endmodule +// > end LUT < + +// > Flops < +// DFF flop +module \$_DFF_P_ (input D, C, output Q); + DFF _TECHMAP_REPLACE_ + (.q(Q), .d(D), .ck(C)); +endmodule + diff --git a/resources/netlist/resources/kernel/share/achronix/speedster22i/cells_sim.v b/resources/netlist/resources/kernel/share/achronix/speedster22i/cells_sim.v new file mode 100644 index 0000000..fc15e09 --- /dev/null +++ b/resources/netlist/resources/kernel/share/achronix/speedster22i/cells_sim.v @@ -0,0 +1,79 @@ +/* + * yosys -- Yosys Open SYnthesis Suite + * + * Copyright (C) 2012 Claire Xenia Wolf + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + */ +// > c60k28 (Viacheslav, VT) [at] yandex [dot] com +// > Achronix eFPGA technology sim models. User must first simulate the generated \ +// > netlist before going to test it on board/custom chip. +// > Changelog: 1) Removed unused VCC/GND modules +// > 2) Altera comments here (?). Removed. +// > 3) Reusing LUT sim model, removed wrong wires and parameters. + +module PADIN (output padout, input padin); + assign padout = padin; +endmodule + +module PADOUT (output padout, input padin, input oe); + assign padout = padin; + assign oe = oe; +endmodule + +module LUT4 (output dout, + input din0, din1, din2, din3); + +parameter [15:0] lut_function = 16'hFFFF; +reg combout_rt; +wire dataa_w; +wire datab_w; +wire datac_w; +wire datad_w; + +assign dataa_w = din0; +assign datab_w = din1; +assign datac_w = din2; +assign datad_w = din3; + +function lut_data; +input [15:0] mask; +input dataa, datab, datac, datad; +reg [7:0] s3; +reg [3:0] s2; +reg [1:0] s1; + begin + s3 = datad ? mask[15:8] : mask[7:0]; + s2 = datac ? s3[7:4] : s3[3:0]; + s1 = datab ? s2[3:2] : s2[1:0]; + lut_data = dataa ? s1[1] : s1[0]; + end +endfunction + +always @(dataa_w or datab_w or datac_w or datad_w) begin + combout_rt = lut_data(lut_function, dataa_w, datab_w, + datac_w, datad_w); +end +assign dout = combout_rt & 1'b1; +endmodule + +module DFF (output reg q, + input d, ck); + always @(posedge ck) + q <= d; + +endmodule + + + diff --git a/resources/netlist/resources/kernel/share/adff2dff.v b/resources/netlist/resources/kernel/share/adff2dff.v new file mode 100644 index 0000000..2e4357b --- /dev/null +++ b/resources/netlist/resources/kernel/share/adff2dff.v @@ -0,0 +1,30 @@ +(* techmap_celltype = "$adff" *) +module adff2dff (CLK, ARST, D, Q); + parameter WIDTH = 1; + parameter CLK_POLARITY = 1; + parameter ARST_POLARITY = 1; + parameter ARST_VALUE = 0; + + input CLK, ARST; + (* force_downto *) + input [WIDTH-1:0] D; + (* force_downto *) + output reg [WIDTH-1:0] Q; + (* force_downto *) + reg [WIDTH-1:0] NEXT_Q; + + wire [1023:0] _TECHMAP_DO_ = "proc;;"; + + always @* + if (ARST == ARST_POLARITY) + NEXT_Q <= ARST_VALUE; + else + NEXT_Q <= D; + + if (CLK_POLARITY) + always @(posedge CLK) + Q <= NEXT_Q; + else + always @(negedge CLK) + Q <= NEXT_Q; +endmodule diff --git a/resources/netlist/resources/kernel/share/anlogic/arith_map.v b/resources/netlist/resources/kernel/share/anlogic/arith_map.v new file mode 100644 index 0000000..f0cec49 --- /dev/null +++ b/resources/netlist/resources/kernel/share/anlogic/arith_map.v @@ -0,0 +1,93 @@ +/* + * yosys -- Yosys Open SYnthesis Suite + * + * Copyright (C) 2018 Miodrag Milanovic + * Copyright (C) 2012 Claire Xenia Wolf + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + */ + +(* techmap_celltype = "$alu" *) +module _80_anlogic_alu (A, B, CI, BI, X, Y, CO); + parameter A_SIGNED = 0; + parameter B_SIGNED = 0; + parameter A_WIDTH = 1; + parameter B_WIDTH = 1; + parameter Y_WIDTH = 1; + + (* force_downto *) + input [A_WIDTH-1:0] A; + (* force_downto *) + input [B_WIDTH-1:0] B; + (* force_downto *) + output [Y_WIDTH-1:0] X, Y; + + input CI, BI; + (* force_downto *) + output [Y_WIDTH-1:0] CO; + + wire CIx; + (* force_downto *) + wire [Y_WIDTH-1:0] COx; + + wire _TECHMAP_FAIL_ = Y_WIDTH <= 2; + + (* force_downto *) + wire [Y_WIDTH-1:0] A_buf, B_buf; + \$pos #(.A_SIGNED(A_SIGNED), .A_WIDTH(A_WIDTH), .Y_WIDTH(Y_WIDTH)) A_conv (.A(A), .Y(A_buf)); + \$pos #(.A_SIGNED(B_SIGNED), .A_WIDTH(B_WIDTH), .Y_WIDTH(Y_WIDTH)) B_conv (.A(B), .Y(B_buf)); + + (* force_downto *) + wire [Y_WIDTH-1:0] AA = A_buf; + (* force_downto *) + wire [Y_WIDTH-1:0] BB = BI ? ~B_buf : B_buf; + (* force_downto *) + wire [Y_WIDTH-1:0] C = { COx, CIx }; + + wire dummy; + AL_MAP_ADDER #( + .ALUTYPE("ADD_CARRY")) + adder_cin ( + .a(CI), + .b(1'b0), + .c(1'b0), + .o({CIx, dummy}) + ); + + genvar i; + generate for (i = 0; i < Y_WIDTH; i = i + 1) begin: slice + AL_MAP_ADDER #( + .ALUTYPE("ADD") + ) adder_i ( + .a(AA[i]), + .b(BB[i]), + .c(C[i]), + .o({COx[i],Y[i]}) + ); + + wire cout; + AL_MAP_ADDER #( + .ALUTYPE("ADD")) + adder_cout ( + .a(1'b0), + .b(1'b0), + .c(COx[i]), + .o({cout, CO[i]}) + ); + end: slice + endgenerate + + /* End implementation */ + assign X = AA ^ BB; +endmodule diff --git a/resources/netlist/resources/kernel/share/anlogic/brams.txt b/resources/netlist/resources/kernel/share/anlogic/brams.txt new file mode 100644 index 0000000..910cdeb --- /dev/null +++ b/resources/netlist/resources/kernel/share/anlogic/brams.txt @@ -0,0 +1,69 @@ +ram block $__ANLOGIC_BRAM_TDP_ { + abits 13; + widths 1 2 4 9 per_port; + cost 64; + init no_undef; + port srsw "A" "B" { + clock anyedge; + clken; + portoption "WRITEMODE" "NORMAL" { + rdwr no_change; + } + portoption "WRITEMODE" "WRITETHROUGH" { + rdwr new; + } + portoption "WRITEMODE" "READBEFOREWRITE" { + rdwr old; + } + option "RESETMODE" "SYNC" { + rdsrst zero ungated block_wr; + } + option "RESETMODE" "ASYNC" { + rdarst zero; + } + rdinit zero; + } +} + +ram block $__ANLOGIC_BRAM_SDP_ { + abits 13; + widths 1 2 4 9 18 per_port; + byte 9; + cost 64; + init no_undef; + port sr "R" { + clock anyedge; + clken; + option "RESETMODE" "SYNC" { + rdsrst zero ungated; + } + option "RESETMODE" "ASYNC" { + rdarst zero; + } + rdinit zero; + } + port sw "W" { + clock anyedge; + clken; + } +} + +ram block $__ANLOGIC_BRAM32K_ { + abits 12; + widths 8 16 per_port; + byte 8; + cost 192; + init no_undef; + port srsw "A" "B" { + clock anyedge; + clken; + portoption "WRITEMODE" "NORMAL" { + rdwr no_change; + } + portoption "WRITEMODE" "WRITETHROUGH" { + rdwr new; + } + # no reset - it doesn't really work without the pipeline + # output registers + } +} diff --git a/resources/netlist/resources/kernel/share/anlogic/brams_map.v b/resources/netlist/resources/kernel/share/anlogic/brams_map.v new file mode 100644 index 0000000..7e2642d --- /dev/null +++ b/resources/netlist/resources/kernel/share/anlogic/brams_map.v @@ -0,0 +1,474 @@ +module $__ANLOGIC_BRAM_TDP_ (...); + +parameter INIT = 0; +parameter OPTION_RESETMODE = "SYNC"; + +parameter PORT_A_WIDTH = 9; +parameter PORT_A_CLK_POL = 1; +parameter PORT_A_OPTION_WRITEMODE = "NORMAL"; + +input PORT_A_CLK; +input PORT_A_CLK_EN; +input PORT_A_WR_EN; +input PORT_A_RD_SRST; +input PORT_A_RD_ARST; +input [12:0] PORT_A_ADDR; +input [PORT_A_WIDTH-1:0] PORT_A_WR_DATA; +output [PORT_A_WIDTH-1:0] PORT_A_RD_DATA; + +parameter PORT_B_WIDTH = 9; +parameter PORT_B_CLK_POL = 1; +parameter PORT_B_OPTION_WRITEMODE = "NORMAL"; + +input PORT_B_CLK; +input PORT_B_CLK_EN; +input PORT_B_WR_EN; +input PORT_B_RD_SRST; +input PORT_B_RD_ARST; +input [12:0] PORT_B_ADDR; +input [PORT_B_WIDTH-1:0] PORT_B_WR_DATA; +output [PORT_B_WIDTH-1:0] PORT_B_RD_DATA; + +function [255:0] init_slice; + input integer idx; + integer i; + for (i = 0; i < 32; i = i + 1) begin + init_slice[i*8+:8] = INIT[(idx * 32 + i) * 9 +: 8]; + end +endfunction + +function [255:0] initp_slice; + input integer idx; + integer i; + for (i = 0; i < 256; i = i + 1) begin + initp_slice[i] = INIT[(idx * 256 + i) * 9 + 8]; + end +endfunction + +wire [8:0] DOA; +wire [8:0] DOB; +// the replication is important — the BRAM behaves in... unexpected ways for +// width 1 and 2 +wire [8:0] DIA = {9{PORT_A_WR_DATA}}; +wire [8:0] DIB = {9{PORT_B_WR_DATA}}; + +assign PORT_A_RD_DATA = DOA; +assign PORT_B_RD_DATA = DOB; + +EG_PHY_BRAM #( + .INIT_00(init_slice('h00)), + .INIT_01(init_slice('h01)), + .INIT_02(init_slice('h02)), + .INIT_03(init_slice('h03)), + .INIT_04(init_slice('h04)), + .INIT_05(init_slice('h05)), + .INIT_06(init_slice('h06)), + .INIT_07(init_slice('h07)), + .INIT_08(init_slice('h08)), + .INIT_09(init_slice('h09)), + .INIT_0A(init_slice('h0a)), + .INIT_0B(init_slice('h0b)), + .INIT_0C(init_slice('h0c)), + .INIT_0D(init_slice('h0d)), + .INIT_0E(init_slice('h0e)), + .INIT_0F(init_slice('h0f)), + .INIT_10(init_slice('h10)), + .INIT_11(init_slice('h11)), + .INIT_12(init_slice('h12)), + .INIT_13(init_slice('h13)), + .INIT_14(init_slice('h14)), + .INIT_15(init_slice('h15)), + .INIT_16(init_slice('h16)), + .INIT_17(init_slice('h17)), + .INIT_18(init_slice('h18)), + .INIT_19(init_slice('h19)), + .INIT_1A(init_slice('h1a)), + .INIT_1B(init_slice('h1b)), + .INIT_1C(init_slice('h1c)), + .INIT_1D(init_slice('h1d)), + .INIT_1E(init_slice('h1e)), + .INIT_1F(init_slice('h1f)), + .INITP_00(initp_slice('h00)), + .INITP_01(initp_slice('h01)), + .INITP_02(initp_slice('h02)), + .INITP_03(initp_slice('h03)), + .MODE("DP8K"), + .DATA_WIDTH_A($sformatf("%d", PORT_A_WIDTH)), + .DATA_WIDTH_B($sformatf("%d", PORT_B_WIDTH)), + .REGMODE_A("NOREG"), + .REGMODE_B("NOREG"), + .RESETMODE(OPTION_RESETMODE), + .ASYNC_RESET_RELEASE(OPTION_RESETMODE), + .CLKAMUX(PORT_A_CLK_POL ? "SIG" : "INV"), + .CLKBMUX(PORT_B_CLK_POL ? "SIG" : "INV"), + .WRITEMODE_A(PORT_A_OPTION_WRITEMODE), + .WRITEMODE_B(PORT_B_OPTION_WRITEMODE), +) _TECHMAP_REPLACE_ ( + .clka(PORT_A_CLK), + .wea(PORT_A_WR_EN), + .cea(PORT_A_CLK_EN), + .ocea(1'b1), + .rsta(OPTION_RESETMODE == "SYNC" ? PORT_A_RD_SRST : PORT_A_RD_ARST), + .csa(3'b111), + .addra(PORT_A_WIDTH == 9 ? {PORT_A_ADDR[12:1], 1'b1} : PORT_A_ADDR), + .dia(DIA), + .doa(DOA), + + .clkb(PORT_B_CLK), + .web(PORT_B_WR_EN), + .ceb(PORT_B_CLK_EN), + .oceb(1'b1), + .rstb(OPTION_RESETMODE == "SYNC" ? PORT_B_RD_SRST : PORT_B_RD_ARST), + .csb(3'b111), + .addrb(PORT_B_WIDTH == 9 ? {PORT_B_ADDR[12:1], 1'b1} : PORT_B_ADDR), + .dib(DIB), + .dob(DOB), +); + +endmodule + + +module $__ANLOGIC_BRAM_SDP_ (...); + +parameter INIT = 0; +parameter OPTION_RESETMODE = "SYNC"; + +parameter PORT_R_WIDTH = 18; +parameter PORT_R_CLK_POL = 1; + +input PORT_R_CLK; +input PORT_R_CLK_EN; +input PORT_R_RD_SRST; +input PORT_R_RD_ARST; +input [12:0] PORT_R_ADDR; +output [PORT_R_WIDTH-1:0] PORT_R_RD_DATA; + +parameter PORT_W_WIDTH = 18; +parameter PORT_W_WR_EN_WIDTH = 2; +parameter PORT_W_CLK_POL = 1; + +input PORT_W_CLK; +input PORT_W_CLK_EN; +input [12:0] PORT_W_ADDR; +input [PORT_W_WR_EN_WIDTH-1:0] PORT_W_WR_EN; +input [PORT_W_WIDTH-1:0] PORT_W_WR_DATA; + +function [255:0] init_slice; + input integer idx; + integer i; + for (i = 0; i < 32; i = i + 1) begin + init_slice[i*8+:8] = INIT[(idx * 32 + i) * 9 +: 8]; + end +endfunction + +function [255:0] initp_slice; + input integer idx; + integer i; + for (i = 0; i < 256; i = i + 1) begin + initp_slice[i] = INIT[(idx * 256 + i) * 9 + 8]; + end +endfunction + +wire [17:0] DI = {18{PORT_W_WR_DATA}}; +wire [17:0] DO; + +assign PORT_R_RD_DATA = PORT_R_WIDTH == 18 ? DO : DO[17:9]; + +EG_PHY_BRAM #( + .INIT_00(init_slice('h00)), + .INIT_01(init_slice('h01)), + .INIT_02(init_slice('h02)), + .INIT_03(init_slice('h03)), + .INIT_04(init_slice('h04)), + .INIT_05(init_slice('h05)), + .INIT_06(init_slice('h06)), + .INIT_07(init_slice('h07)), + .INIT_08(init_slice('h08)), + .INIT_09(init_slice('h09)), + .INIT_0A(init_slice('h0a)), + .INIT_0B(init_slice('h0b)), + .INIT_0C(init_slice('h0c)), + .INIT_0D(init_slice('h0d)), + .INIT_0E(init_slice('h0e)), + .INIT_0F(init_slice('h0f)), + .INIT_10(init_slice('h10)), + .INIT_11(init_slice('h11)), + .INIT_12(init_slice('h12)), + .INIT_13(init_slice('h13)), + .INIT_14(init_slice('h14)), + .INIT_15(init_slice('h15)), + .INIT_16(init_slice('h16)), + .INIT_17(init_slice('h17)), + .INIT_18(init_slice('h18)), + .INIT_19(init_slice('h19)), + .INIT_1A(init_slice('h1a)), + .INIT_1B(init_slice('h1b)), + .INIT_1C(init_slice('h1c)), + .INIT_1D(init_slice('h1d)), + .INIT_1E(init_slice('h1e)), + .INIT_1F(init_slice('h1f)), + .INITP_00(initp_slice('h00)), + .INITP_01(initp_slice('h01)), + .INITP_02(initp_slice('h02)), + .INITP_03(initp_slice('h03)), + .MODE("PDPW8K"), + .DATA_WIDTH_A($sformatf("%d", PORT_W_WIDTH)), + .DATA_WIDTH_B($sformatf("%d", PORT_R_WIDTH)), + .REGMODE_A("NOREG"), + .REGMODE_B("NOREG"), + .RESETMODE(OPTION_RESETMODE), + .ASYNC_RESET_RELEASE(OPTION_RESETMODE), + .CLKAMUX(PORT_W_CLK_POL ? "SIG" : "INV"), + .CLKBMUX(PORT_R_CLK_POL ? "SIG" : "INV"), +) _TECHMAP_REPLACE_ ( + .clka(PORT_W_CLK), + .wea(PORT_W_WIDTH >= 9 ? 1'b1 : PORT_W_WR_EN[0]), + .cea(PORT_W_CLK_EN), + .ocea(1'b1), + .rsta(1'b0), + .csa(3'b111), + .addra(PORT_W_WIDTH == 18 ? {PORT_W_ADDR[12:2], PORT_W_WR_EN[1:0]} : (PORT_W_WIDTH == 9 ? {PORT_W_ADDR[12:1], PORT_W_WR_EN[0]} : PORT_W_ADDR)), + .dia(DI[8:0]), + .doa(DO[8:0]), + + .clkb(PORT_R_CLK), + .web(1'b0), + .ceb(PORT_R_CLK_EN), + .oceb(1'b1), + .rstb(OPTION_RESETMODE == "SYNC" ? PORT_R_RD_SRST : PORT_R_RD_ARST), + .csb(3'b111), + .addrb(PORT_R_ADDR), + .dib(DI[17:9]), + .dob(DO[17:9]), +); + +endmodule + + +module $__ANLOGIC_BRAM32K_ (...); + +parameter INIT = 0; + +parameter PORT_A_WIDTH = 16; +parameter PORT_A_WR_EN_WIDTH = 2; +parameter PORT_A_CLK_POL = 1; +parameter PORT_A_OPTION_WRITEMODE = "NORMAL"; + +input PORT_A_CLK; +input PORT_A_CLK_EN; +input [PORT_A_WR_EN_WIDTH-1:0] PORT_A_WR_EN; +input [11:0] PORT_A_ADDR; +input [PORT_A_WIDTH-1:0] PORT_A_WR_DATA; +output [PORT_A_WIDTH-1:0] PORT_A_RD_DATA; + +parameter PORT_B_WIDTH = 16; +parameter PORT_B_WR_EN_WIDTH = 2; +parameter PORT_B_CLK_POL = 1; +parameter PORT_B_OPTION_WRITEMODE = "NORMAL"; + +input PORT_B_CLK; +input PORT_B_CLK_EN; +input [PORT_B_WR_EN_WIDTH-1:0] PORT_B_WR_EN; +input [11:0] PORT_B_ADDR; +input [PORT_B_WIDTH-1:0] PORT_B_WR_DATA; +output [PORT_B_WIDTH-1:0] PORT_B_RD_DATA; + +function [255:0] init_slice; + input integer idx; + init_slice = INIT[256 * idx +: 256]; +endfunction + +wire [15:0] DOA; +wire [15:0] DOB; +wire [15:0] DIA = PORT_A_WR_DATA; +wire [15:0] DIB = PORT_B_WR_DATA; + +assign PORT_A_RD_DATA = DOA; +assign PORT_B_RD_DATA = DOB; + +wire BYTE_A, BYTEWE_A; +wire BYTE_B, BYTEWE_B; + +generate + +if (PORT_A_WIDTH == 8) begin + assign BYTE_A = PORT_A_ADDR[0]; + assign BYTEWE_A = 1; +end else begin + assign BYTE_A = PORT_A_WR_EN == 2; + assign BYTEWE_A = ^PORT_A_WR_EN; +end + +if (PORT_B_WIDTH == 8) begin + assign BYTE_B = PORT_B_ADDR[0]; + assign BYTEWE_B = 1; +end else begin + assign BYTE_B = PORT_B_WR_EN == 2; + assign BYTEWE_B = ^PORT_B_WR_EN; +end + +endgenerate + +EG_PHY_BRAM32K #( + .INIT_00(init_slice('h00)), + .INIT_01(init_slice('h01)), + .INIT_02(init_slice('h02)), + .INIT_03(init_slice('h03)), + .INIT_04(init_slice('h04)), + .INIT_05(init_slice('h05)), + .INIT_06(init_slice('h06)), + .INIT_07(init_slice('h07)), + .INIT_08(init_slice('h08)), + .INIT_09(init_slice('h09)), + .INIT_0A(init_slice('h0a)), + .INIT_0B(init_slice('h0b)), + .INIT_0C(init_slice('h0c)), + .INIT_0D(init_slice('h0d)), + .INIT_0E(init_slice('h0e)), + .INIT_0F(init_slice('h0f)), + .INIT_10(init_slice('h10)), + .INIT_11(init_slice('h11)), + .INIT_12(init_slice('h12)), + .INIT_13(init_slice('h13)), + .INIT_14(init_slice('h14)), + .INIT_15(init_slice('h15)), + .INIT_16(init_slice('h16)), + .INIT_17(init_slice('h17)), + .INIT_18(init_slice('h18)), + .INIT_19(init_slice('h19)), + .INIT_1A(init_slice('h1a)), + .INIT_1B(init_slice('h1b)), + .INIT_1C(init_slice('h1c)), + .INIT_1D(init_slice('h1d)), + .INIT_1E(init_slice('h1e)), + .INIT_1F(init_slice('h1f)), + .INIT_20(init_slice('h20)), + .INIT_21(init_slice('h21)), + .INIT_22(init_slice('h22)), + .INIT_23(init_slice('h23)), + .INIT_24(init_slice('h24)), + .INIT_25(init_slice('h25)), + .INIT_26(init_slice('h26)), + .INIT_27(init_slice('h27)), + .INIT_28(init_slice('h28)), + .INIT_29(init_slice('h29)), + .INIT_2A(init_slice('h2a)), + .INIT_2B(init_slice('h2b)), + .INIT_2C(init_slice('h2c)), + .INIT_2D(init_slice('h2d)), + .INIT_2E(init_slice('h2e)), + .INIT_2F(init_slice('h2f)), + .INIT_30(init_slice('h30)), + .INIT_31(init_slice('h31)), + .INIT_32(init_slice('h32)), + .INIT_33(init_slice('h33)), + .INIT_34(init_slice('h34)), + .INIT_35(init_slice('h35)), + .INIT_36(init_slice('h36)), + .INIT_37(init_slice('h37)), + .INIT_38(init_slice('h38)), + .INIT_39(init_slice('h39)), + .INIT_3A(init_slice('h3a)), + .INIT_3B(init_slice('h3b)), + .INIT_3C(init_slice('h3c)), + .INIT_3D(init_slice('h3d)), + .INIT_3E(init_slice('h3e)), + .INIT_3F(init_slice('h3f)), + .INIT_40(init_slice('h40)), + .INIT_41(init_slice('h41)), + .INIT_42(init_slice('h42)), + .INIT_43(init_slice('h43)), + .INIT_44(init_slice('h44)), + .INIT_45(init_slice('h45)), + .INIT_46(init_slice('h46)), + .INIT_47(init_slice('h47)), + .INIT_48(init_slice('h48)), + .INIT_49(init_slice('h49)), + .INIT_4A(init_slice('h4a)), + .INIT_4B(init_slice('h4b)), + .INIT_4C(init_slice('h4c)), + .INIT_4D(init_slice('h4d)), + .INIT_4E(init_slice('h4e)), + .INIT_4F(init_slice('h4f)), + .INIT_50(init_slice('h50)), + .INIT_51(init_slice('h51)), + .INIT_52(init_slice('h52)), + .INIT_53(init_slice('h53)), + .INIT_54(init_slice('h54)), + .INIT_55(init_slice('h55)), + .INIT_56(init_slice('h56)), + .INIT_57(init_slice('h57)), + .INIT_58(init_slice('h58)), + .INIT_59(init_slice('h59)), + .INIT_5A(init_slice('h5a)), + .INIT_5B(init_slice('h5b)), + .INIT_5C(init_slice('h5c)), + .INIT_5D(init_slice('h5d)), + .INIT_5E(init_slice('h5e)), + .INIT_5F(init_slice('h5f)), + .INIT_60(init_slice('h60)), + .INIT_61(init_slice('h61)), + .INIT_62(init_slice('h62)), + .INIT_63(init_slice('h63)), + .INIT_64(init_slice('h64)), + .INIT_65(init_slice('h65)), + .INIT_66(init_slice('h66)), + .INIT_67(init_slice('h67)), + .INIT_68(init_slice('h68)), + .INIT_69(init_slice('h69)), + .INIT_6A(init_slice('h6a)), + .INIT_6B(init_slice('h6b)), + .INIT_6C(init_slice('h6c)), + .INIT_6D(init_slice('h6d)), + .INIT_6E(init_slice('h6e)), + .INIT_6F(init_slice('h6f)), + .INIT_70(init_slice('h70)), + .INIT_71(init_slice('h71)), + .INIT_72(init_slice('h72)), + .INIT_73(init_slice('h73)), + .INIT_74(init_slice('h74)), + .INIT_75(init_slice('h75)), + .INIT_76(init_slice('h76)), + .INIT_77(init_slice('h77)), + .INIT_78(init_slice('h78)), + .INIT_79(init_slice('h79)), + .INIT_7A(init_slice('h7a)), + .INIT_7B(init_slice('h7b)), + .INIT_7C(init_slice('h7c)), + .INIT_7D(init_slice('h7d)), + .INIT_7E(init_slice('h7e)), + .INIT_7F(init_slice('h7f)), + .MODE("DP16K"), + .DATA_WIDTH_A($sformatf("%d", PORT_A_WIDTH)), + .DATA_WIDTH_B($sformatf("%d", PORT_B_WIDTH)), + .REGMODE_A("NOREG"), + .REGMODE_B("NOREG"), + .WRITEMODE_A(PORT_A_OPTION_WRITEMODE), + .WRITEMODE_B(PORT_B_OPTION_WRITEMODE), + .CLKAMUX(PORT_A_CLK_POL ? "SIG" : "INV"), + .CLKBMUX(PORT_B_CLK_POL ? "SIG" : "INV"), +) _TECHMAP_REPLACE_ ( + .clka(PORT_A_CLK), + .csa(PORT_A_CLK_EN), + .wea(|PORT_A_WR_EN), + .ocea(1'b1), + .rsta(1'b0), + .addra(PORT_A_ADDR[11:1]), + .bytea(BYTE_A), + .bytewea(BYTEWE_A), + .dia(DIA), + .doa(DOA), + + .clkb(PORT_B_CLK), + .csb(PORT_B_CLK_EN), + .web(|PORT_B_WR_EN), + .ocea(1'b1), + .rsta(1'b0), + .addrb(PORT_B_ADDR[11:1]), + .byteb(BYTE_B), + .byteweb(BYTEWE_B), + .dib(DIB), + .dob(DOB), +); + +endmodule diff --git a/resources/netlist/resources/kernel/share/anlogic/cells_map.v b/resources/netlist/resources/kernel/share/anlogic/cells_map.v new file mode 100644 index 0000000..d9f264a --- /dev/null +++ b/resources/netlist/resources/kernel/share/anlogic/cells_map.v @@ -0,0 +1,48 @@ +module \$_DFFE_PN0P_ (input D, C, R, E, output Q); AL_MAP_SEQ #(.DFFMODE("FF"), .REGSET("RESET"), .SRMUX("INV"), .SRMODE("ASYNC")) _TECHMAP_REPLACE_ (.d(D), .q(Q), .clk(C) ,.ce(E), .sr(R)); wire _TECHMAP_REMOVEINIT_Q_ = 1'b1; endmodule +module \$_DFFE_PN1P_ (input D, C, R, E, output Q); AL_MAP_SEQ #(.DFFMODE("FF"), .REGSET("SET"), .SRMUX("INV"), .SRMODE("ASYNC")) _TECHMAP_REPLACE_ (.d(D), .q(Q), .clk(C), .ce(E), .sr(R)); wire _TECHMAP_REMOVEINIT_Q_ = 1'b1; endmodule +module \$_DFFE_PP0P_ (input D, C, R, E, output Q); AL_MAP_SEQ #(.DFFMODE("FF"), .REGSET("RESET"), .SRMUX("SR"), .SRMODE("ASYNC")) _TECHMAP_REPLACE_ (.d(D), .q(Q), .clk(C), .ce(E), .sr(R)); wire _TECHMAP_REMOVEINIT_Q_ = 1'b1; endmodule +module \$_DFFE_PP1P_ (input D, C, R, E, output Q); AL_MAP_SEQ #(.DFFMODE("FF"), .REGSET("SET"), .SRMUX("SR"), . SRMODE("ASYNC")) _TECHMAP_REPLACE_ (.d(D), .q(Q), .clk(C), .ce(E), .sr(R)); wire _TECHMAP_REMOVEINIT_Q_ = 1'b1; endmodule + +module \$_SDFFE_PN0P_ (input D, C, R, E, output Q); AL_MAP_SEQ #(.DFFMODE("FF"), .REGSET("RESET"), .SRMUX("INV"), .SRMODE("SYNC")) _TECHMAP_REPLACE_ (.d(D), .q(Q), .clk(C) ,.ce(E), .sr(R)); wire _TECHMAP_REMOVEINIT_Q_ = 1'b1; endmodule +module \$_SDFFE_PN1P_ (input D, C, R, E, output Q); AL_MAP_SEQ #(.DFFMODE("FF"), .REGSET("SET"), .SRMUX("INV"), .SRMODE("SYNC")) _TECHMAP_REPLACE_ (.d(D), .q(Q), .clk(C), .ce(E), .sr(R)); wire _TECHMAP_REMOVEINIT_Q_ = 1'b1; endmodule +module \$_SDFFE_PP0P_ (input D, C, R, E, output Q); AL_MAP_SEQ #(.DFFMODE("FF"), .REGSET("RESET"), .SRMUX("SR"), .SRMODE("SYNC")) _TECHMAP_REPLACE_ (.d(D), .q(Q), .clk(C), .ce(E), .sr(R)); wire _TECHMAP_REMOVEINIT_Q_ = 1'b1; endmodule +module \$_SDFFE_PP1P_ (input D, C, R, E, output Q); AL_MAP_SEQ #(.DFFMODE("FF"), .REGSET("SET"), .SRMUX("SR"), . SRMODE("SYNC")) _TECHMAP_REPLACE_ (.d(D), .q(Q), .clk(C), .ce(E), .sr(R)); wire _TECHMAP_REMOVEINIT_Q_ = 1'b1; endmodule + +module \$_DLATCH_NN0_ (input D, R, E, output Q); AL_MAP_SEQ #(.DFFMODE("LATCH"), .REGSET("RESET"), .SRMUX("INV"), .SRMODE("ASYNC")) _TECHMAP_REPLACE_ (.d(D), .q(Q), .clk(E) ,.ce(1'b1), .sr(R)); wire _TECHMAP_REMOVEINIT_Q_ = 1'b1; endmodule +module \$_DLATCH_NN1_ (input D, R, E, output Q); AL_MAP_SEQ #(.DFFMODE("LATCH"), .REGSET("SET"), .SRMUX("INV"), .SRMODE("ASYNC")) _TECHMAP_REPLACE_ (.d(D), .q(Q), .clk(E), .ce(1'b1), .sr(R)); wire _TECHMAP_REMOVEINIT_Q_ = 1'b1; endmodule +module \$_DLATCH_NP0_ (input D, R, E, output Q); AL_MAP_SEQ #(.DFFMODE("LATCH"), .REGSET("RESET"), .SRMUX("SR"), .SRMODE("ASYNC")) _TECHMAP_REPLACE_ (.d(D), .q(Q), .clk(E), .ce(1'b1), .sr(R)); wire _TECHMAP_REMOVEINIT_Q_ = 1'b1; endmodule +module \$_DLATCH_NP1_ (input D, R, E, output Q); AL_MAP_SEQ #(.DFFMODE("LATCH"), .REGSET("SET"), .SRMUX("SR"), . SRMODE("ASYNC")) _TECHMAP_REPLACE_ (.d(D), .q(Q), .clk(E), .ce(1'b1), .sr(R)); wire _TECHMAP_REMOVEINIT_Q_ = 1'b1; endmodule + +`ifndef NO_LUT +module \$lut (A, Y); + parameter WIDTH = 0; + parameter LUT = 0; + + (* force_downto *) + input [WIDTH-1:0] A; + output Y; + + generate + if (WIDTH == 1) begin + AL_MAP_LUT1 #(.EQN(""),.INIT(LUT)) _TECHMAP_REPLACE_ (.o(Y), .a(A[0])); + end else + if (WIDTH == 2) begin + AL_MAP_LUT2 #(.EQN(""),.INIT(LUT)) _TECHMAP_REPLACE_ (.o(Y), .a(A[0]), .b(A[1])); + end else + if (WIDTH == 3) begin + AL_MAP_LUT3 #(.EQN(""),.INIT(LUT)) _TECHMAP_REPLACE_ (.o(Y), .a(A[0]), .b(A[1]), .c(A[2])); + end else + if (WIDTH == 4) begin + AL_MAP_LUT4 #(.EQN(""),.INIT(LUT)) _TECHMAP_REPLACE_ (.o(Y), .a(A[0]), .b(A[1]), .c(A[2]), .d(A[3])); + end else + if (WIDTH == 5) begin + AL_MAP_LUT5 #(.EQN(""),.INIT(LUT)) _TECHMAP_REPLACE_ (.o(Y), .a(A[0]), .b(A[1]), .c(A[2]), .d(A[3]), .e(A[4])); + end else + if (WIDTH == 6) begin + AL_MAP_LUT6 #(.EQN(""),.INIT(LUT)) _TECHMAP_REPLACE_ (.o(Y), .a(A[0]), .b(A[1]), .c(A[2]), .d(A[3]), .e(A[4]), .f(A[5])); + end else begin + wire _TECHMAP_FAIL_ = 1; + end + endgenerate +endmodule +`endif diff --git a/resources/netlist/resources/kernel/share/anlogic/cells_sim.v b/resources/netlist/resources/kernel/share/anlogic/cells_sim.v new file mode 100644 index 0000000..e8ecf4f --- /dev/null +++ b/resources/netlist/resources/kernel/share/anlogic/cells_sim.v @@ -0,0 +1,191 @@ +module AL_MAP_SEQ ( + output reg q, + input ce, + input clk, + input sr, + input d +); + parameter DFFMODE = "FF"; //FF,LATCH + parameter REGSET = "RESET"; //RESET/SET + parameter SRMUX = "SR"; //SR/INV + parameter SRMODE = "SYNC"; //SYNC/ASYNC + + wire srmux; + generate + case (SRMUX) + "SR": assign srmux = sr; + "INV": assign srmux = ~sr; + default: assign srmux = sr; + endcase + endgenerate + + wire regset; + generate + case (REGSET) + "RESET": assign regset = 1'b0; + "SET": assign regset = 1'b1; + default: assign regset = 1'b0; + endcase + endgenerate + + initial q = regset; + + generate + if (DFFMODE == "FF") + begin + if (SRMODE == "ASYNC") + begin + always @(posedge clk, posedge srmux) + if (srmux) + q <= regset; + else if (ce) + q <= d; + end + else + begin + always @(posedge clk) + if (srmux) + q <= regset; + else if (ce) + q <= d; + end + end + else + begin + // DFFMODE == "LATCH" + if (SRMODE == "ASYNC") + begin + always @* + if (srmux) + q <= regset; + else if (~clk & ce) + q <= d; + end + else + begin + always @* + if (~clk) begin + if (srmux) + q <= regset; + else if (ce) + q <= d; + end + end + end + endgenerate +endmodule + +module AL_MAP_LUT1 ( + output o, + input a +); + parameter [1:0] INIT = 2'h0; + parameter EQN = "(A)"; + + assign o = a ? INIT[1] : INIT[0]; +endmodule + +module AL_MAP_LUT2 ( + output o, + input a, + input b +); + parameter [3:0] INIT = 4'h0; + parameter EQN = "(A)"; + + wire [1:0] s1 = b ? INIT[ 3:2] : INIT[1:0]; + assign o = a ? s1[1] : s1[0]; +endmodule + +module AL_MAP_LUT3 ( + output o, + input a, + input b, + input c +); + parameter [7:0] INIT = 8'h0; + parameter EQN = "(A)"; + + wire [3:0] s2 = c ? INIT[ 7:4] : INIT[3:0]; + wire [1:0] s1 = b ? s2[ 3:2] : s2[1:0]; + assign o = a ? s1[1] : s1[0]; +endmodule + +module AL_MAP_LUT4 ( + output o, + input a, + input b, + input c, + input d +); + parameter [15:0] INIT = 16'h0; + parameter EQN = "(A)"; + + wire [7:0] s3 = d ? INIT[15:8] : INIT[7:0]; + wire [3:0] s2 = c ? s3[ 7:4] : s3[3:0]; + wire [1:0] s1 = b ? s2[ 3:2] : s2[1:0]; + assign o = a ? s1[1] : s1[0]; +endmodule + +module AL_MAP_LUT5 ( + output o, + input a, + input b, + input c, + input d, + input e +); + parameter [31:0] INIT = 32'h0; + parameter EQN = "(A)"; + assign o = INIT >> {e, d, c, b, a}; +endmodule + + +module AL_MAP_LUT6 ( + output o, + input a, + input b, + input c, + input d, + input e, + input f +); + parameter [63:0] INIT = 64'h0; + parameter EQN = "(A)"; + assign o = INIT >> {f, e, d, c, b, a}; +endmodule + +module AL_MAP_ALU2B ( + input cin, + input a0, b0, c0, d0, + input a1, b1, c1, d1, + output s0, s1, cout +); + parameter [15:0] INIT0 = 16'h0000; + parameter [15:0] INIT1 = 16'h0000; + parameter FUNC0 = "NO"; + parameter FUNC1 = "NO"; +endmodule + +module AL_MAP_ADDER ( + input a, + input b, + input c, + output [1:0] o +); + parameter ALUTYPE = "ADD"; + + generate + case (ALUTYPE) + "ADD": assign o = a + b + c; + "SUB": assign o = a - b - c; + "A_LE_B": assign o = a - b - c; + + "ADD_CARRY": assign o = { a, 1'b0 }; + "SUB_CARRY": assign o = { ~a, 1'b0 }; + "A_LE_B_CARRY": assign o = { a, 1'b0 }; + default: assign o = a + b + c; + endcase + endgenerate + +endmodule diff --git a/resources/netlist/resources/kernel/share/anlogic/eagle_bb.v b/resources/netlist/resources/kernel/share/anlogic/eagle_bb.v new file mode 100644 index 0000000..7cbec33 --- /dev/null +++ b/resources/netlist/resources/kernel/share/anlogic/eagle_bb.v @@ -0,0 +1,1028 @@ +// Anlogic Eagle - Blackbox cells +// FIXME: Create sim models + +(* blackbox *) +module EG_LOGIC_BUF( + output o, + input i +); +endmodule + +(* blackbox *) +module EG_LOGIC_BUFG( + output o, + input i +); +endmodule + +(* blackbox *) +module EG_LOGIC_BUFIO( + input clki, + input rst, + input coe, + output clko, + output clkdiv1, + output clkdivx +); + parameter GSR = "DISABLE"; + parameter DIV = 2; + parameter STOPCLK = "DISABLE"; +endmodule + +(* blackbox *) +module EG_LOGIC_BUFGMUX( + output o, + input i0, + input i1, + input s +); + parameter INIT_OUT = "0"; + parameter PRESELECT_I0 = "TRUE"; + parameter PRESELECT_I1 = "FALSE"; +endmodule + +(* blackbox *) +module EG_LOGIC_MBOOT( + input rebootn, + input [7:0] dynamic_addr +); + parameter ADDR_SOURCE_SEL = "STATIC"; + parameter STATIC_ADDR = 8'b00000000; +endmodule + +(* blackbox *) +module EG_LOGIC_DNA( + output dout, + input clk, + input din, + input shift_en +); +endmodule + +(* blackbox *) +module EG_LOGIC_GCTRL( + output done, + output highz +); +endmodule + +(* blackbox *) +module EG_LOGIC_GSRN( + input gsrn, + input sync_clk +); + parameter GSRN_SYNC_SEL = "DISABLE"; + parameter USR_GSRN_EN = "DISABLE"; +endmodule + +(* blackbox *) +module EG_LOGIC_CCLK( + output cclk, + input en +); + parameter FREQ = "4.5"; +endmodule + +(* blackbox *) +module EG_LOGIC_IDELAY( + output o, + input i +); + parameter INDEL = 0; +endmodule + +(* blackbox *) +module EG_LOGIC_IDDR( + output q1, + output q0, + input clk, + input d, + input rst +); + parameter ASYNCRST = "ENABLE"; + parameter PIPEMODE = "PIPED"; +endmodule + +(* blackbox *) +module EG_LOGIC_ODDR( + output q, + input clk, + input d1, + input d0, + input rst +); + parameter ASYNCRST = "ENABLE"; +endmodule + +(* blackbox *) +module EG_LOGIC_IDDRx2( + output q3, + output q2, + output q1, + output q0, + input pclk, + input sclk, + input d, + input rst +); + parameter ASYNCRST = "ENABLE"; +endmodule + +(* blackbox *) +module EG_LOGIC_ODELAY( + output o, + input i +); + parameter OUTDEL = 0; +endmodule + +(* blackbox *) +module EG_LOGIC_ODDRx2( + output q, + input pclk, + input sclk, + input d3, + input d2, + input d1, + input d0, + input rst +); + parameter ASYNCRST = "ENABLE"; +endmodule + +(* blackbox *) +module EG_LOGIC_ODDRx2l( + output q, + input sclk, + input d3, + input d2, + input d1, + input d0, + input rst +); + parameter ASYNCRST = "ENABLE"; +endmodule + +(* blackbox *) +module EG_LOGIC_FIFO( + input rst, + input [DATA_WIDTH_W-1:0] di, + output [DATA_WIDTH_R-1:0] do, + input clkw, + input we, + input clkr, + input re, + input ore, + input [2:0] csw, + input [2:0] csr, + output empty_flag, + output aempty_flag, + output full_flag, + output afull_flag +); + parameter DATA_WIDTH_W = 9; + parameter DATA_WIDTH_R = DATA_WIDTH_W; + parameter DATA_DEPTH_W = 1024; + parameter DATA_DEPTH_R = DATA_WIDTH_W * DATA_DEPTH_W / DATA_WIDTH_R; + parameter MODE = "FIFO8K"; + parameter REGMODE_W = "NOREG"; + parameter REGMODE_R = "NOREG"; + parameter E = 0; + parameter AE = 6; + parameter AF = DATA_DEPTH_W - 6; + parameter F = DATA_DEPTH_W; + parameter GSR = "DISABLE"; + parameter RESETMODE = "ASYNC"; + parameter ASYNC_RESET_RELEASE = "SYNC"; + parameter ENDIAN = "LITTLE"; +endmodule + +(* blackbox *) +module EG_LOGIC_DRAM( + input [DATA_WIDTH_W-1:0] di, + input [ADDR_WIDTH_W-1:0] waddr, + input wclk, + input we, + output [DATA_WIDTH_R-1:0] do, + input [ADDR_WIDTH_R-1:0] raddr +); + parameter DATA_WIDTH_W = 9; + parameter ADDR_WIDTH_W = 10; + parameter DATA_DEPTH_W = 2 ** ADDR_WIDTH_W; + parameter DATA_WIDTH_R = 9; + parameter ADDR_WIDTH_R = 10; + parameter DATA_DEPTH_R = 2 ** ADDR_WIDTH_R; + parameter INIT_FILE = "NONE"; +endmodule + +(* blackbox *) +module EG_LOGIC_DRAM16X4( + input [3:0] di, + input [3:0] waddr, + input wclk, + input we, + input [3:0]raddr, + output [3:0]do +); + parameter INIT_D0=16'h0000; + parameter INIT_D1=16'h0000; + parameter INIT_D2=16'h0000; + parameter INIT_D3=16'h0000; +endmodule + +(* blackbox *) +module EG_LOGIC_MULT( + output [OUTPUT_WIDTH-1:0] p, + input [INPUT_WIDTH_A-1:0] a, + input [INPUT_WIDTH_B-1:0] b, + input cea, + input ceb, + input cepd, + input clk, + input rstan, + input rstbn, + input rstpdn +); + parameter INPUT_WIDTH_A = 18; + parameter INPUT_WIDTH_B = 18; + parameter OUTPUT_WIDTH = 36; + parameter INPUTFORMAT = "SIGNED"; + parameter INPUTREGA = "ENABLE"; + parameter INPUTREGB = "ENABLE"; + parameter OUTPUTREG = "ENABLE"; + parameter SRMODE = "ASYNC"; + parameter IMPLEMENT = "AUTO"; +endmodule + +(* blackbox *) +module EG_LOGIC_SEQ_DIV( + input clk, + input rst, + input start, + input [NUMER_WIDTH-1:0] numer, + input [DENOM_WIDTH-1:0] denom, + output [NUMER_WIDTH-1:0] quotient, + output [DENOM_WIDTH-1:0] remain, + output done +); + parameter NUMER_WIDTH = 16; + parameter DENOM_WIDTH = 16; +endmodule + +(* blackbox *) +module EG_PHY_BRAM( + output [8:0] doa, + output [8:0] dob, + input [8:0] dia, + input [8:0] dib, + input [2:0] csa, + input [2:0] csb, + input cea, + input ocea, + input clka, + input wea, + input rsta, + input ceb, + input oceb, + input clkb, + input web, + input rstb, + input [12:0] addra, + input [12:0] addrb +); + parameter MODE = "DP8K"; + parameter DATA_WIDTH_A = "9"; + parameter DATA_WIDTH_B = "9"; + parameter READBACK = "OFF"; + parameter REGMODE_A = "NOREG"; + parameter REGMODE_B = "NOREG"; + parameter WRITEMODE_A = "NORMAL"; + parameter WRITEMODE_B = "NORMAL"; + parameter GSR = "ENABLE"; + parameter RESETMODE = "SYNC"; + parameter ASYNC_RESET_RELEASE = "SYNC"; + parameter CEAMUX = "SIG"; + parameter CEBMUX = "SIG"; + parameter OCEAMUX = "SIG"; + parameter OCEBMUX = "SIG"; + parameter RSTAMUX = "SIG"; + parameter RSTBMUX = "SIG"; + parameter CLKAMUX = "SIG"; + parameter CLKBMUX = "SIG"; + parameter WEAMUX = "SIG"; + parameter WEBMUX = "SIG"; + parameter CSA0 = "SIG" ; + parameter CSA1 = "SIG" ; + parameter CSA2 = "SIG" ; + parameter CSB0 = "SIG" ; + parameter CSB1 = "SIG" ; + parameter CSB2 = "SIG" ; + parameter INIT_FILE = "NONE"; + parameter INITP_00 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INITP_01 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INITP_02 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INITP_03 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_00 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_01 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_02 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_03 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_04 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_05 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_06 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_07 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_08 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_09 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_10 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_11 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_12 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_13 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_14 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_15 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_16 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_17 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_18 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_19 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_1A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_1B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_1C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_1D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_1E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_1F = 256'h0000000000000000000000000000000000000000000000000000000000000000; +endmodule + +(* blackbox *) +module EG_PHY_BRAM32K( + output [15:0] doa, + output [15:0] dob, + input [15:0] dia, + input [15:0] dib, + input [10:0] addra, + input [10:0] addrb, + input bytea, + input bytewea, + input byteb, + input byteweb, + input csa, + input wea, + input csb, + input web, + input clka, + input rsta, + input clkb, + input rstb, + input ocea, + input oceb +); + parameter MODE = "DP16K"; + parameter DATA_WIDTH_A = "16"; + parameter DATA_WIDTH_B = "16"; + parameter REGMODE_A = "NOREG"; + parameter REGMODE_B = "NOREG"; + parameter WRITEMODE_A = "NORMAL"; + parameter WRITEMODE_B = "NORMAL"; + parameter SRMODE = "SYNC"; + parameter CSAMUX = "SIG"; + parameter CSBMUX = "SIG"; + parameter OCEAMUX = "SIG"; + parameter OCEBMUX = "SIG"; + parameter RSTAMUX = "SIG"; + parameter RSTBMUX = "SIG"; + parameter CLKAMUX = "SIG"; + parameter CLKBMUX = "SIG"; + parameter WEAMUX = "SIG"; + parameter WEBMUX = "SIG"; + parameter READBACK = "OFF"; + parameter INIT_FILE = ""; + parameter INIT_00 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_01 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_02 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_03 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_04 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_05 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_06 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_07 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_08 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_09 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_10 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_11 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_12 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_13 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_14 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_15 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_16 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_17 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_18 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_19 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_1A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_1B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_1C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_1D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_1E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_1F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_20 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_21 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_22 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_23 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_24 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_25 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_26 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_27 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_28 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_29 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_2A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_2B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_2C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_2D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_2E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_2F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_30 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_31 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_32 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_33 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_34 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_35 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_36 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_37 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_38 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_39 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_3A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_3B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_3C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_3D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_3E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_3F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_40 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_41 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_42 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_43 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_44 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_45 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_46 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_47 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_48 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_49 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_4A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_4B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_4C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_4D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_4E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_4F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_50 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_51 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_52 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_53 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_54 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_55 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_56 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_57 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_58 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_59 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_5A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_5B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_5C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_5D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_5E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_5F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_60 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_61 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_62 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_63 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_64 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_65 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_66 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_67 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_68 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_69 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_6A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_6B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_6C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_6D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_6E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_6F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_70 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_71 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_72 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_73 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_74 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_75 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_76 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_77 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_78 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_79 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_7A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_7B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_7C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_7D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_7E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_7F = 256'h0000000000000000000000000000000000000000000000000000000000000000; +endmodule + +(* blackbox *) +module EG_PHY_FIFO( + input [8:0] dia, + input [8:0] dib, + input [2:0] csr, + input [2:0] csw, + input we, + input re, + input clkw, + input clkr, + input rst, + input rprst, + input orea, + input oreb, + output [8:0] dob, + output [8:0] doa, + output empty_flag, + output aempty_flag, + output afull_flag, + output full_flag +); + parameter MODE = "FIFO8K"; + parameter DATA_WIDTH_A = "18"; + parameter DATA_WIDTH_B = "18"; + parameter READBACK = "OFF"; + parameter REGMODE_A = "NOREG"; + parameter REGMODE_B = "NOREG"; + parameter [13:0] AE = 14'b00000001100000; + parameter [13:0] AF = 14'b01111110010000; + parameter [13:0] F = 14'b01111111110000; + parameter [13:0] AEP1 = 14'b00000001110000; + parameter [13:0] AFM1 = 14'b01111110000000; + parameter [13:0] FM1 = 14'b01111111100000; + parameter [4:0] E = 5'b00000; + parameter [5:0] EP1 = 6'b010000; + parameter GSR = "ENABLE"; + parameter RESETMODE = "ASYNC"; + parameter ASYNC_RESET_RELEASE = "SYNC"; + parameter CEA = "SIG"; + parameter CEB = "SIG"; + parameter OCEA = "SIG"; + parameter OCEB = "SIG"; + parameter RSTA = "SIG"; + parameter RSTB = "SIG"; + parameter CLKA = "SIG"; + parameter CLKB = "SIG"; + parameter WEA = "SIG"; + parameter WEB = "SIG"; + parameter CSA0 = "SIG"; + parameter CSA1 = "SIG"; + parameter CSA2 = "SIG"; + parameter CSB0 = "SIG"; + parameter CSB1 = "SIG"; + parameter CSB2 = "SIG"; +endmodule + +(* blackbox *) +module EG_PHY_MULT18( + output [17:0] acout, + output [17:0] bcout, + output [35:0] p, + input signeda, + input signedb, + input [17:0] a, + input [17:0] b, + input [17:0] acin, + input [17:0] bcin, + input cea, + input ceb, + input cepd, + input clk, + input rstan, + input rstbn, + input rstpdn, + input sourcea, + input sourceb +); + parameter INPUTREGA = "ENABLE"; + parameter INPUTREGB = "ENABLE"; + parameter OUTPUTREG = "ENABLE"; + parameter SRMODE = "ASYNC"; + parameter MODE = "MULT18X18C"; + parameter CEAMUX = "SIG"; + parameter CEBMUX = "SIG"; + parameter CEPDMUX = "SIG"; + parameter RSTANMUX = "SIG"; + parameter RSTBNMUX = "SIG"; + parameter RSTPDNMUX = "SIG"; + parameter CLKMUX = "SIG"; + parameter SIGNEDAMUX = "SIG"; + parameter SIGNEDBMUX = "SIG"; + parameter SOURCEAMUX = "SIG"; + parameter SOURCEBMUX = "SIG"; +endmodule + +(* blackbox *) +module EG_PHY_GCLK( + input clki, + output clko +); +endmodule + +(* blackbox *) +module EG_PHY_IOCLK( + input clki, + input stop, + output clko +); + parameter STOPCLK = "DISABLE"; +endmodule + +(* blackbox *) +module EG_PHY_CLKDIV( + output clkdiv1, + output clkdivx, + input clki, + input rst, + input rls +); + parameter GSR = "DISABLE"; + parameter DIV = 2; +endmodule + +(* blackbox *) +module EG_PHY_CONFIG( + output jrstn, + output [1:0] jrti, + output jshift, + output jtck, + output jtdi, + output jupdate, + output [1:0] jscanen, + output jtms, + input [1:0] jtdo, + input [7:0] jtag8_ipa, + input [7:0] jtag8_ipb, + output done, + output highz, + output cclk, + input cclk_en, + input gsrn_sync_clk, + input usr_gsrn, + output dna_dout, + input dna_clk, + input dna_din, + input dna_shift_en, + input mboot_rebootn, + input [7:0] mboot_dynamic_addr +); + parameter MBOOT_AUTO_SEL = "DISABLE"; + parameter ADDR_SOURCE_SEL = "STATIC"; + parameter STATIC_ADDR = 8'b0; + parameter DONE_PERSISTN = "ENABLE"; + parameter INIT_PERSISTN = "ENABLE"; + parameter PROGRAMN_PERSISTN = "DISABLE"; + parameter JTAG_PERSISTN = "DISABLE"; + parameter GSRN_SYNC_SEL = "DISABLE"; + parameter FREQ = "2.5"; + parameter USR_GSRN_EN = "DISABLE"; +endmodule + +(* blackbox *) +module EG_PHY_OSC( + input osc_dis, + output osc_clk +); + parameter STDBY = "DISABLE"; +endmodule + +(* blackbox *) +module EG_PHY_PWRMNT( + output pwr_dwn_n, + input sel_pwr, + input pwr_mnt_pd +); + parameter MNT_LVL = 0; +endmodule + +(* blackbox *) +module EG_PHY_DDR_8M_16( + input clk, + input clk_n, + input ras_n, + input cas_n, + input we_n, + input cs_n, + input [11:0] addr, + input [1:0] ba, + inout [15:0] dq, + input ldqs, + input udqs, + input ldm, + input udm, + input cke +); +endmodule + +(* blackbox *) +module EG_PHY_SDRAM_2M_32( + input clk, + input ras_n, + input cas_n, + input we_n, + input [10:0] addr, + input [1:0] ba, + inout [31:0] dq, + input cs_n, + input dm0, + input dm1, + input dm2, + input dm3, + input cke +); +endmodule + +(* blackbox *) +module EG_PHY_PAD( + input ipad, + output opad, + inout bpad, + input rst, + input ce, + input isclk, + input ipclk, + input osclk, + input opclk, + input ts, + input [3:0] do, + output di, + output [3:0] diq +); + parameter DEDCLK = "DISABLE"; + parameter GSR = "ENABLE"; + parameter SRMODE = "SYNC"; + parameter TSMUX = "1"; + parameter INSCLKMUX = "0"; + parameter INPCLKMUX = "CLK"; + parameter INCEMUX = "CE"; + parameter INRSTMUX = "0"; + parameter IN_REGSET = "RESET"; + parameter IN_DFFMODE = "NONE"; + parameter IDDRMODE = "OFF"; + parameter IDDRPIPEMODE = "NONE"; + parameter INDELMUX = "NODEL"; + parameter INDEL = 0; + parameter OUTSCLKMUX = "0"; + parameter OUTPCLKMUX = "CLK"; + parameter OUTCEMUX = "CE"; + parameter OUTRSTMUX = "0"; + parameter DO_REGSET = "RESET"; + parameter DO_DFFMODE = "NONE"; + parameter ODDRMODE = "OFF"; + parameter OUTDELMUX = "NODEL"; + parameter OUTDEL = 0; + parameter TO_REGSET = "RESET"; + parameter TO_DFFMODE = "NONE"; + parameter MODE = "IN"; + parameter DRIVE = "NONE"; + parameter IOTYPE = "LVCMOS25"; +endmodule + +(* blackbox *) +module EG_PHY_MSLICE( + input [1:0] a, + input [1:0] b, + input [1:0] c, + input [1:0] d, + input [1:0] mi, + input clk, + input ce, + input sr, + input fci, + output [1:0] f, + output [1:0] fx, + output [1:0] q, + output fco, + input dpram_mode, + input [1:0] dpram_di, + input dpram_we, + input dpram_wclk, + input [3:0] dpram_waddr +); + parameter INIT_LUT0 = 16'h0000; + parameter INIT_LUT1 = 16'h0000; + parameter MODE = "LOGIC"; + parameter ALUTYPE = "ADD"; + parameter MSFXMUX = "OFF"; + parameter GSR = "ENABLE"; + parameter TESTMODE = "OFF"; + parameter CEMUX = "CE"; + parameter SRMUX = "SR"; + parameter CLKMUX = "CLK"; + parameter SRMODE = "ASYNC"; + parameter DFFMODE = "FF"; + parameter REG0_SD = "MI"; + parameter REG1_SD = "MI"; + parameter REG0_REGSET = "SET"; + parameter REG1_REGSET = "SET"; +endmodule + +(* blackbox *) +module EG_PHY_LSLICE( + input [1:0] a, + input [1:0] b, + input [1:0] c, + input [1:0] d, + input [1:0] e, + input [1:0] mi, + input clk, + input ce, + input sr, + input fci, + output [1:0] f, + output [1:0] fx, + output [1:0] q, + output fco, + output [3:0] dpram_di, + output [3:0] dpram_waddr, + output dpram_wclk, + output dpram_we, + output dpram_mode +); + parameter INIT_LUTF0 = 16'h0000; + parameter INIT_LUTG0 = 16'h0000; + parameter INIT_LUTF1 = 16'h0000; + parameter INIT_LUTG1 = 16'h0000; + parameter MODE = "LOGIC"; + parameter GSR = "ENABLE"; + parameter TESTMODE = "OFF"; + parameter CEMUX = "1"; + parameter SRMUX = "SR"; + parameter CLKMUX = "CLK"; + parameter SRMODE = "ASYNC"; + parameter DFFMODE = "FF"; + parameter REG0_SD = "MI"; + parameter REG1_SD = "MI"; + parameter REG0_REGSET = "SET"; + parameter REG1_REGSET = "SET"; + parameter DEMUX0 = "D"; + parameter DEMUX1 = "D"; + parameter CMIMUX0 = "C"; + parameter CMIMUX1 = "C"; + parameter LSFMUX0 = "LUTF"; + parameter LSFXMUX0 = "LUTG"; + parameter LSFMUX1 = "LUTF"; + parameter LSFXMUX1 = "LUTG"; +endmodule + +(* blackbox *) +module EG_PHY_PLL( + output [4:0] clkc, + output extlock, + input stdby, + input refclk, + input fbclk, + input reset, + output psdone, + input psclk, + input psdown, + input psstep, + input [2:0] psclksel, + output [7:0] do, + input dclk, + input dcs, + input dwe, + input [7:0] di, + input [5:0] daddr +); + parameter DYNCFG = "DISABLE"; + parameter IF_ESCLKSTSW = "DISABLE"; + parameter REFCLK_SEL = "INTERNAL"; + parameter FIN = "100.0000"; + parameter REFCLK_DIV = 1; + parameter FBCLK_DIV = 1; + parameter CLKC0_DIV = 1; + parameter CLKC1_DIV = 1; + parameter CLKC2_DIV = 1; + parameter CLKC3_DIV = 1; + parameter CLKC4_DIV = 1; + parameter CLKC0_ENABLE = "DISABLE"; + parameter CLKC1_ENABLE = "DISABLE"; + parameter CLKC2_ENABLE = "DISABLE"; + parameter CLKC3_ENABLE = "DISABLE"; + parameter CLKC4_ENABLE = "DISABLE"; + parameter CLKC0_DIV2_ENABLE = "DISABLE"; + parameter CLKC1_DIV2_ENABLE = "DISABLE"; + parameter CLKC2_DIV2_ENABLE = "DISABLE"; + parameter CLKC3_DIV2_ENABLE = "DISABLE"; + parameter CLKC4_DIV2_ENABLE = "DISABLE"; + parameter FEEDBK_MODE = "NORMAL"; + parameter FEEDBK_PATH = "VCO_PHASE_0"; + parameter STDBY_ENABLE = "ENABLE"; + parameter CLKC0_FPHASE = 0; + parameter CLKC1_FPHASE = 0; + parameter CLKC2_FPHASE = 0; + parameter CLKC3_FPHASE = 0; + parameter CLKC4_FPHASE = 0; + parameter CLKC0_CPHASE = 1; + parameter CLKC1_CPHASE = 1; + parameter CLKC2_CPHASE = 1; + parameter CLKC3_CPHASE = 1; + parameter CLKC4_CPHASE = 1; + parameter GMC_GAIN = 7; + parameter GMC_TEST = 14; + parameter ICP_CURRENT = 14; + parameter KVCO = 7; + parameter LPF_CAPACITOR = 3; + parameter LPF_RESISTOR = 1; + parameter PLLRST_ENA = "ENABLE"; + parameter PLLMRST_ENA = "DISABLE"; + parameter PLLC2RST_ENA = "DISABLE"; + parameter PLLC34RST_ENA = "DISABLE"; + parameter PREDIV_MUXC0 = "VCO"; + parameter PREDIV_MUXC1 = "VCO"; + parameter PREDIV_MUXC2 = "VCO"; + parameter PREDIV_MUXC3 = "VCO"; + parameter PREDIV_MUXC4 = "VCO"; + parameter ODIV_MUXC0 = "DIV"; + parameter ODIV_MUXC1 = "DIV"; + parameter ODIV_MUXC2 = "DIV"; + parameter ODIV_MUXC3 = "DIV"; + parameter ODIV_MUXC4 = "DIV"; + parameter FREQ_LOCK_ACCURACY = 2; + parameter PLL_LOCK_MODE = 0; + parameter INTFB_WAKE = "DISABLE"; + parameter DPHASE_SOURCE = "DISABLE"; + parameter VCO_NORESET = "DISABLE"; + parameter STDBY_VCO_ENA = "DISABLE"; + parameter NORESET = "DISABLE"; + parameter SYNC_ENABLE = "ENABLE"; + parameter DERIVE_PLL_CLOCKS = "DISABLE"; + parameter GEN_BASIC_CLOCK = "DISABLE"; +endmodule + +(* blackbox *) +module EG_LOGIC_BRAM( + output [DATA_WIDTH_A-1:0] doa, + output [DATA_WIDTH_B-1:0] dob, + input [DATA_WIDTH_A-1:0] dia, + input [DATA_WIDTH_B-1:0] dib, + input cea, + input ocea, + input clka, + input wea, + input rsta, + input ceb, + input oceb, + input clkb, + input web, + input rstb, + input [BYTE_A - 1 : 0] bea, + input [BYTE_B - 1 : 0] beb, + input [ADDR_WIDTH_A-1:0] addra, + input [ADDR_WIDTH_B-1:0] addrb +); + parameter DATA_WIDTH_A = 9; + parameter DATA_WIDTH_B = DATA_WIDTH_A; + parameter ADDR_WIDTH_A = 10; + parameter ADDR_WIDTH_B = ADDR_WIDTH_A; + parameter DATA_DEPTH_A = 2 ** ADDR_WIDTH_A; + parameter DATA_DEPTH_B = 2 ** ADDR_WIDTH_B; + parameter BYTE_ENABLE = 0; + parameter BYTE_A = BYTE_ENABLE == 0 ? 1 : DATA_WIDTH_A / BYTE_ENABLE; + parameter BYTE_B = BYTE_ENABLE == 0 ? 1 : DATA_WIDTH_B / BYTE_ENABLE; + parameter MODE = "DP"; + parameter REGMODE_A = "NOREG"; + parameter REGMODE_B = "NOREG"; + parameter WRITEMODE_A = "NORMAL"; + parameter WRITEMODE_B = "NORMAL"; + parameter RESETMODE = "SYNC"; + parameter DEBUGGABLE = "NO"; + parameter PACKABLE = "NO"; + parameter FORCE_KEEP = "OFF"; + parameter INIT_FILE = "NONE"; + parameter FILL_ALL = "NONE"; + parameter IMPLEMENT = "9K"; +endmodule + +(* blackbox *) +module EG_PHY_ADC( + input clk, + input pd, + input [2:0] s, + input soc, + output eoc, + output [11:0] dout +); + parameter CH0 = "DISABLE"; + parameter CH1 = "DISABLE"; + parameter CH2 = "DISABLE"; + parameter CH3 = "DISABLE"; + parameter CH4 = "DISABLE"; + parameter CH5 = "DISABLE"; + parameter CH6 = "DISABLE"; + parameter CH7 = "DISABLE"; + parameter VREF = "DISABLE"; +endmodule diff --git a/resources/netlist/resources/kernel/share/anlogic/lutrams.txt b/resources/netlist/resources/kernel/share/anlogic/lutrams.txt new file mode 100644 index 0000000..ef6fec2 --- /dev/null +++ b/resources/netlist/resources/kernel/share/anlogic/lutrams.txt @@ -0,0 +1,12 @@ +ram distributed $__ANLOGIC_DRAM16X4_ { + abits 4; + width 4; + cost 4; + init no_undef; + prune_rom; + port sw "W" { + clock posedge; + } + port ar "R" { + } +} diff --git a/resources/netlist/resources/kernel/share/anlogic/lutrams_map.v b/resources/netlist/resources/kernel/share/anlogic/lutrams_map.v new file mode 100644 index 0000000..6314da2 --- /dev/null +++ b/resources/netlist/resources/kernel/share/anlogic/lutrams_map.v @@ -0,0 +1,32 @@ +module $__ANLOGIC_DRAM16X4_ (...); + parameter INIT = 64'b0; + + input PORT_W_CLK; + input [3:0] PORT_W_ADDR; + input [3:0] PORT_W_WR_DATA; + input PORT_W_WR_EN; + + input [3:0] PORT_R_ADDR; + output [3:0] PORT_R_RD_DATA; + + function [15:0] init_slice; + input integer idx; + integer i; + for (i = 0; i < 16; i = i + 1) + init_slice[i] = INIT[i * 4 + idx]; + endfunction + + EG_LOGIC_DRAM16X4 #( + .INIT_D0(init_slice(0)), + .INIT_D1(init_slice(1)), + .INIT_D2(init_slice(2)), + .INIT_D3(init_slice(3)) + ) _TECHMAP_REPLACE_ ( + .di(PORT_W_WR_DATA), + .waddr(PORT_W_ADDR), + .wclk(PORT_W_CLK), + .we(PORT_W_WR_EN), + .raddr(PORT_R_ADDR), + .do(PORT_R_RD_DATA) + ); +endmodule diff --git a/resources/netlist/resources/kernel/share/cells.lib b/resources/netlist/resources/kernel/share/cells.lib new file mode 100644 index 0000000..eb89036 --- /dev/null +++ b/resources/netlist/resources/kernel/share/cells.lib @@ -0,0 +1,108 @@ +library(yosys_cells) { + cell(DFF_N) { + ff(IQ, IQN) { + clocked_on: "!C"; + next_state: "D"; + } + pin(D) { direction: input; } + pin(C) { direction: input; clock: true; } + pin(Q) { direction: output; function: "IQ"; } + } + cell(DFF_P) { + ff(IQ, IQN) { + clocked_on: "C"; + next_state: "D"; + } + pin(D) { direction: input; } + pin(C) { direction: input; clock: true; } + pin(Q) { direction: output; function: "IQ"; } + } + cell(DFF_NN0) { + ff(IQ, IQN) { + clocked_on: "!C"; + next_state: "D"; + clear: "!R"; + } + pin(D) { direction: input; } + pin(R) { direction: input; } + pin(C) { direction: input; clock: true; } + pin(Q) { direction: output; function: "IQ"; } + } + cell(DFF_NN1) { + ff(IQ, IQN) { + clocked_on: "!C"; + next_state: "D"; + preset: "!R"; + } + pin(D) { direction: input; } + pin(R) { direction: input; } + pin(C) { direction: input; clock: true; } + pin(Q) { direction: output; function: "IQ"; } + } + cell(DFF_NP0) { + ff(IQ, IQN) { + clocked_on: "!C"; + next_state: "D"; + clear: "R"; + } + pin(D) { direction: input; } + pin(R) { direction: input; } + pin(C) { direction: input; clock: true; } + pin(Q) { direction: output; function: "IQ"; } + } + cell(DFF_NP1) { + ff(IQ, IQN) { + clocked_on: "!C"; + next_state: "D"; + preset: "R"; + } + pin(D) { direction: input; } + pin(R) { direction: input; } + pin(C) { direction: input; clock: true; } + pin(Q) { direction: output; function: "IQ"; } + } + cell(DFF_PN0) { + ff(IQ, IQN) { + clocked_on: "C"; + next_state: "D"; + clear: "!R"; + } + pin(D) { direction: input; } + pin(R) { direction: input; } + pin(C) { direction: input; clock: true; } + pin(Q) { direction: output; function: "IQ"; } + } + cell(DFF_PN1) { + ff(IQ, IQN) { + clocked_on: "C"; + next_state: "D"; + preset: "!R"; + } + pin(D) { direction: input; } + pin(R) { direction: input; } + pin(C) { direction: input; clock: true; } + pin(Q) { direction: output; function: "IQ"; } + } + cell(DFF_PP0) { + ff(IQ, IQN) { + clocked_on: "C"; + next_state: "D"; + clear: "R"; + } + pin(D) { direction: input; } + pin(R) { direction: input; } + pin(C) { direction: input; clock: true; } + pin(Q) { direction: output; function: "IQ"; } + } + cell(DFF_PP1) { + ff(IQ, IQN) { + clocked_on: "C"; + next_state: "D"; + preset: "R"; + } + pin(D) { direction: input; } + pin(R) { direction: input; } + pin(C) { direction: input; clock: true; } + pin(Q) { direction: output; function: "IQ"; } + } +} diff --git a/resources/netlist/resources/kernel/share/cmp2lcu.v b/resources/netlist/resources/kernel/share/cmp2lcu.v new file mode 100644 index 0000000..4e62039 --- /dev/null +++ b/resources/netlist/resources/kernel/share/cmp2lcu.v @@ -0,0 +1,129 @@ +// This pass performs an optimisation that decomposes wide arithmetic +// comparisons into LUT-size chunks (as guided by the `LUT_WIDTH +// macro) connected to a single lookahead-carry-unit $lcu cell, +// which is typically mapped to dedicated (and fast) FPGA +// carry-chains. +(* techmap_celltype = "$lt $le $gt $ge" *) +module _80_lcu_cmp_ (A, B, Y); + +parameter A_SIGNED = 0; +parameter B_SIGNED = 0; +parameter A_WIDTH = 0; +parameter B_WIDTH = 0; +parameter Y_WIDTH = 0; + +(* force_downto *) +input [A_WIDTH-1:0] A; +(* force_downto *) +input [B_WIDTH-1:0] B; +(* force_downto *) +output [Y_WIDTH-1:0] Y; + +parameter _TECHMAP_CELLTYPE_ = ""; + +generate + if (_TECHMAP_CELLTYPE_ == "" || `LUT_WIDTH < 2) + wire _TECHMAP_FAIL_ = 1; + else if (_TECHMAP_CELLTYPE_ == "$lt") begin + // Transform $lt into $gt by swapping A and B + $gt #(.A_SIGNED(B_SIGNED), .B_SIGNED(A_SIGNED), .A_WIDTH(B_WIDTH), .B_WIDTH(A_WIDTH), .Y_WIDTH(Y_WIDTH)) _TECHMAP_REPLACE_ (.A(B), .B(A), .Y(Y)); + end + else if (_TECHMAP_CELLTYPE_ == "$le") begin + // Transform $le into $ge by swapping A and B + $ge #(.A_SIGNED(B_SIGNED), .B_SIGNED(A_SIGNED), .A_WIDTH(B_WIDTH), .B_WIDTH(A_WIDTH), .Y_WIDTH(Y_WIDTH)) _TECHMAP_REPLACE_ (.A(B), .B(A), .Y(Y)); + end + else begin + // Perform sign extension on A and B + localparam WIDTH = A_WIDTH > B_WIDTH ? A_WIDTH : B_WIDTH; + (* force_downto *) + wire [WIDTH-1:0] AA = {{(WIDTH-A_WIDTH){A_SIGNED ? A[A_WIDTH-1] : 1'b0}}, A}; + (* force_downto *) + wire [WIDTH-1:0] BB = {{(WIDTH-B_WIDTH){B_SIGNED ? B[B_WIDTH-1] : 1'b0}}, B}; + // For $ge operation, start with the assumption that A and B are + // equal (propagating this equality if A and B turn out to be so) + localparam CI = _TECHMAP_CELLTYPE_ == "$ge"; + $__CMP2LCU #(.AB_WIDTH(WIDTH), .AB_SIGNED(A_SIGNED && B_SIGNED), .LCU_WIDTH(1), .BUDGET(`LUT_WIDTH), .CI(CI)) + _TECHMAP_REPLACE_ (.A(AA), .B(BB), .P(1'b1), .G(1'b0), .Y(Y)); + end +endgenerate +endmodule + +module $__CMP2LCU (A, B, P, G, Y); + +parameter AB_WIDTH = 0; +parameter AB_SIGNED = 0; +parameter LCU_WIDTH = 1; +parameter BUDGET = 0; +parameter CI = 0; + +(* force_downto *) +input [AB_WIDTH-1:0] A; // A from original $gt/$ge +(* force_downto *) +input [AB_WIDTH-1:0] B; // B from original $gt/$ge +(* force_downto *) +input [LCU_WIDTH-1:0] P; // P of $lcu +(* force_downto *) +input [LCU_WIDTH-1:0] G; // G of $lcu +output Y; + +parameter [AB_WIDTH-1:0] _TECHMAP_CONSTMSK_A_ = 0; +parameter [AB_WIDTH-1:0] _TECHMAP_CONSTMSK_B_ = 0; +parameter [LCU_WIDTH-1:0] _TECHMAP_CONSTMSK_P_ = 0; + +generate + if (AB_WIDTH == 0) begin + (* force_downto *) + wire [LCU_WIDTH-1:0] CO; + $lcu #(.WIDTH(LCU_WIDTH)) _TECHMAP_REPLACE_ (.P(P), .G(G), .CI(CI), .CO(CO)); + assign Y = CO[LCU_WIDTH-1]; + end + else begin + localparam COST = + _TECHMAP_CONSTMSK_A_[AB_WIDTH-1:0] && _TECHMAP_CONSTMSK_B_[AB_WIDTH-1:0] + ? 0 + : (_TECHMAP_CONSTMSK_A_[AB_WIDTH-1:0] || _TECHMAP_CONSTMSK_B_[AB_WIDTH-1:0] + ? 1 + : 2); + + if (BUDGET < COST) + $__CMP2LCU #(.AB_WIDTH(AB_WIDTH), .AB_SIGNED(AB_SIGNED), .LCU_WIDTH(LCU_WIDTH+1), .BUDGET(`LUT_WIDTH), .CI(CI)) + _TECHMAP_REPLACE_ (.A(A), .B(B), .P({P, 1'b1}), .G({G, 1'b0}), .Y(Y)); + else begin + wire PP, GG; + // Bit-wise equality (xnor) of A and B + assign PP = A[AB_WIDTH-1] ^~ B[AB_WIDTH-1]; + if (AB_SIGNED) + assign GG = ~A[AB_WIDTH-1] & B[AB_WIDTH-1]; + else if (_TECHMAP_CONSTMSK_P_[LCU_WIDTH-1]) // First compare for LUT if P (and G) is constant + assign GG = A[AB_WIDTH-1] & ~B[AB_WIDTH-1]; + else + // Priority "encoder" that checks A[i] == 1'b1 && B[i] == 1'b0 + // from MSB down, deferring to less significant bits if the + // MSBs are equal + assign GG = P[0] & (A[AB_WIDTH-1] & ~B[AB_WIDTH-1]); + (* force_downto *) + wire [LCU_WIDTH-1:0] P_, G_; + if (LCU_WIDTH == 1) begin + // Propagate only if all pairs are equal + // (inconclusive evidence to say A >= B) + assign P_ = P[0] & PP; + // Generate if any comparisons call for it + assign G_ = G[0] | GG; + end + else begin + // Propagate only if all pairs are equal + // (inconclusive evidence to say A >= B) + assign P_ = {P[LCU_WIDTH-1:1], P[0] & PP}; + // Generate if any comparisons call for it + assign G_ = {G[LCU_WIDTH-1:1], G[0] | GG}; + end + if (AB_WIDTH == 1) + $__CMP2LCU #(.AB_WIDTH(AB_WIDTH-1), .AB_SIGNED(1'b0), .LCU_WIDTH(LCU_WIDTH), .BUDGET(BUDGET-COST), .CI(CI)) + _TECHMAP_REPLACE_ (.A(), .B(), .P(P_), .G(G_), .Y(Y)); + else + $__CMP2LCU #(.AB_WIDTH(AB_WIDTH-1), .AB_SIGNED(1'b0), .LCU_WIDTH(LCU_WIDTH), .BUDGET(BUDGET-COST), .CI(CI)) + _TECHMAP_REPLACE_ (.A(A[AB_WIDTH-2:0]), .B(B[AB_WIDTH-2:0]), .P(P_), .G(G_), .Y(Y)); + end + end +endgenerate +endmodule diff --git a/resources/netlist/resources/kernel/share/cmp2lut.v b/resources/netlist/resources/kernel/share/cmp2lut.v new file mode 100644 index 0000000..c753bd2 --- /dev/null +++ b/resources/netlist/resources/kernel/share/cmp2lut.v @@ -0,0 +1,98 @@ +// Certain arithmetic operations between a signal of width n and a constant can be directly mapped +// to a single k-LUT (where n <= k). This is preferable to normal alumacc techmapping process +// because for many targets, arithmetic techmapping creates hard logic (such as carry cells) which often +// cannot be optimized further. +// +// TODO: Currently, only comparisons with 1-bit output are mapped. Potentially, all arithmetic cells +// with n <= k inputs should be techmapped in this way, because this shortens the critical path +// from n to 1 by avoiding carry chains. + +(* techmap_celltype = "$lt $le $gt $ge" *) +module _90_lut_cmp_ (A, B, Y); + +parameter A_SIGNED = 0; +parameter B_SIGNED = 0; +parameter A_WIDTH = 0; +parameter B_WIDTH = 0; +parameter Y_WIDTH = 0; + +(* force_downto *) +input [A_WIDTH-1:0] A; +(* force_downto *) +input [B_WIDTH-1:0] B; +(* force_downto *) +output [Y_WIDTH-1:0] Y; + +parameter _TECHMAP_CELLTYPE_ = ""; + +parameter _TECHMAP_CONSTMSK_A_ = 0; +parameter _TECHMAP_CONSTVAL_A_ = 0; +parameter _TECHMAP_CONSTMSK_B_ = 0; +parameter _TECHMAP_CONSTVAL_B_ = 0; + +function automatic [(1 << `LUT_WIDTH)-1:0] gen_lut; + input integer width; + input integer operation; + input integer swap; + input integer sign; + input integer operand; + integer n, i_var, i_cst, lhs, rhs, o_bit; + begin + gen_lut = width'b0; + for (n = 0; n < (1 << width); n++) begin + if (sign) + i_var = n[width-1:0]; + else + i_var = n; + i_cst = operand; + if (swap) begin + lhs = i_cst; + rhs = i_var; + end else begin + lhs = i_var; + rhs = i_cst; + end + if (operation == 0) + o_bit = (lhs < rhs); + if (operation == 1) + o_bit = (lhs <= rhs); + if (operation == 2) + o_bit = (lhs > rhs); + if (operation == 3) + o_bit = (lhs >= rhs); + gen_lut = gen_lut | (o_bit << n); + end + end +endfunction + +generate + localparam operation = + _TECHMAP_CELLTYPE_ == "$lt" ? 0 : + _TECHMAP_CELLTYPE_ == "$le" ? 1 : + _TECHMAP_CELLTYPE_ == "$gt" ? 2 : + _TECHMAP_CELLTYPE_ == "$ge" ? 3 : + -1; + + if (A_WIDTH > `LUT_WIDTH || B_WIDTH > `LUT_WIDTH || Y_WIDTH != 1) + wire _TECHMAP_FAIL_ = 1; + else if (&_TECHMAP_CONSTMSK_B_) + \$lut #( + .WIDTH(A_WIDTH), + .LUT({ gen_lut(A_WIDTH, operation, 0, A_SIGNED && B_SIGNED, _TECHMAP_CONSTVAL_B_) }) + ) _TECHMAP_REPLACE_ ( + .A(A), + .Y(Y) + ); + else if (&_TECHMAP_CONSTMSK_A_) + \$lut #( + .WIDTH(B_WIDTH), + .LUT({ gen_lut(B_WIDTH, operation, 1, A_SIGNED && B_SIGNED, _TECHMAP_CONSTVAL_A_) }) + ) _TECHMAP_REPLACE_ ( + .A(B), + .Y(Y) + ); + else + wire _TECHMAP_FAIL_ = 1; +endgenerate + +endmodule diff --git a/resources/netlist/resources/kernel/share/coolrunner2/cells_counter_map.v b/resources/netlist/resources/kernel/share/coolrunner2/cells_counter_map.v new file mode 100644 index 0000000..f9c44c8 --- /dev/null +++ b/resources/netlist/resources/kernel/share/coolrunner2/cells_counter_map.v @@ -0,0 +1,162 @@ +module \$__COUNT_ (CE, CLK, OUT, POUT, RST, UP); + + input wire CE; + input wire CLK; + output wire OUT; + (* force_downto *) + output wire[WIDTH-1:0] POUT; + input wire RST; + input wire UP; + + parameter COUNT_TO = 1; + parameter RESET_MODE = "RISING"; + parameter RESET_TO_MAX = 0; + parameter HAS_POUT = 0; + parameter HAS_CE = 0; + parameter WIDTH = 8; + parameter DIRECTION = "DOWN"; + + if (DIRECTION == "UP") begin + if (WIDTH < 2) begin + initial begin + $display("ERROR: \$__COUNT_ must be at least 2 bits wide (bug in extract_counter pass?)."); + $finish; + end + end + + // FIXME: Max width? + + assign OUT = POUT == COUNT_TO; + + if (HAS_CE) begin + genvar i; + for (i = 0; i < WIDTH; i++) begin: countbits + // each bit = (cur & !reset) ^ (all prev & !reset) + wire xor_to_mc_bitn; + FDCP #( + .INIT(0) + ) bitn_ff ( + .C(CLK), + .CLR(0), + .D(xor_to_mc_bitn), + .PRE(0), + .Q(POUT[i]) + ); + wire orterm_to_xor_bitn; + wire pterm0_to_or_bitn; + wire pterm1_to_or_bitn; + MACROCELL_XOR #( + .INVERT_OUT(0) + ) bitn_xor ( + .IN_ORTERM(orterm_to_xor_bitn), + .IN_PTC(pterm1_to_or_bitn), + .OUT(xor_to_mc_bitn) + ); + ORTERM #( + .WIDTH(1) + ) bitn_or ( + .IN(pterm0_to_or_bitn), + .OUT(orterm_to_xor_bitn) + ); + ANDTERM #( + .COMP_INP(1), + .TRUE_INP(1) + ) bitn_pterm0 ( + .IN(POUT[i]), + .IN_B(OUT), + .OUT(pterm0_to_or_bitn) + ); + ANDTERM #( + .COMP_INP(1), + .TRUE_INP(i + 1) + ) bitn_pterm1 ( + .IN({POUT[i-1:0], CE}), + .IN_B(OUT), + .OUT(pterm1_to_or_bitn) + ); + end + end else begin + // Bit0 is special; toggle unless reset + // cur reset out + // 0 0 1 + // 0 1 0 + // 1 0 0 + // 1 1 0 + wire xor_to_mc_bit0; + FDCP #( + .INIT(0) + ) bit0_ff ( + .C(CLK), + .CLR(0), + .D(xor_to_mc_bit0), + .PRE(0), + .Q(POUT[0]) + ); + wire pterm_to_xor_bit0; + MACROCELL_XOR #( + .INVERT_OUT(0) + ) bit0_xor ( + .IN_PTC(pterm_to_xor_bit0), + .OUT(xor_to_mc_bit0) + ); + ANDTERM #( + .COMP_INP(2), + .TRUE_INP(0) + ) bit0_pterm ( + .IN(), + .IN_B({POUT[0], OUT}), + .OUT(pterm_to_xor_bit0) + ); + + genvar i; + for (i = 1; i < WIDTH; i++) begin: countbits + // each bit = (cur & !reset) ^ (all prev & !reset) + wire xor_to_mc_bitn; + FDCP #( + .INIT(0) + ) bitn_ff ( + .C(CLK), + .CLR(0), + .D(xor_to_mc_bitn), + .PRE(0), + .Q(POUT[i]) + ); + wire orterm_to_xor_bitn; + wire pterm0_to_or_bitn; + wire pterm1_to_or_bitn; + MACROCELL_XOR #( + .INVERT_OUT(0) + ) bitn_xor ( + .IN_ORTERM(orterm_to_xor_bitn), + .IN_PTC(pterm1_to_or_bitn), + .OUT(xor_to_mc_bitn) + ); + ORTERM #( + .WIDTH(1) + ) bitn_or ( + .IN(pterm0_to_or_bitn), + .OUT(orterm_to_xor_bitn) + ); + ANDTERM #( + .COMP_INP(1), + .TRUE_INP(1) + ) bitn_pterm0 ( + .IN(POUT[i]), + .IN_B(OUT), + .OUT(pterm0_to_or_bitn) + ); + ANDTERM #( + .COMP_INP(1), + .TRUE_INP(i) + ) bitn_pterm1 ( + .IN(POUT[i-1:0]), + .IN_B(OUT), + .OUT(pterm1_to_or_bitn) + ); + end + end + end + + // FIXME: down counters + +endmodule diff --git a/resources/netlist/resources/kernel/share/coolrunner2/cells_latch.v b/resources/netlist/resources/kernel/share/coolrunner2/cells_latch.v new file mode 100644 index 0000000..f1e19da --- /dev/null +++ b/resources/netlist/resources/kernel/share/coolrunner2/cells_latch.v @@ -0,0 +1,19 @@ +module $_DLATCH_P_(input E, input D, output Q); + LDCP _TECHMAP_REPLACE_ ( + .D(D), + .G(E), + .Q(Q), + .PRE(1'b0), + .CLR(1'b0) + ); +endmodule + +module $_DLATCH_N_(input E, input D, output Q); + LDCP_N _TECHMAP_REPLACE_ ( + .D(D), + .G(E), + .Q(Q), + .PRE(1'b0), + .CLR(1'b0) + ); +endmodule diff --git a/resources/netlist/resources/kernel/share/coolrunner2/cells_sim.v b/resources/netlist/resources/kernel/share/coolrunner2/cells_sim.v new file mode 100644 index 0000000..562fb1e --- /dev/null +++ b/resources/netlist/resources/kernel/share/coolrunner2/cells_sim.v @@ -0,0 +1,310 @@ +module IBUF(input I, output O); + assign O = I; +endmodule + +module IOBUFE(input I, input E, output O, inout IO); + assign O = IO; + assign IO = E ? I : 1'bz; +endmodule + +module ANDTERM(IN, IN_B, OUT); + parameter TRUE_INP = 0; + parameter COMP_INP = 0; + + input [TRUE_INP-1:0] IN; + input [COMP_INP-1:0] IN_B; + output reg OUT; + + integer i; + + always @(*) begin + OUT = 1; + for (i = 0; i < TRUE_INP; i=i+1) + OUT = OUT & IN[i]; + for (i = 0; i < COMP_INP; i=i+1) + OUT = OUT & ~IN_B[i]; + end +endmodule + +module ORTERM(IN, OUT); + parameter WIDTH = 0; + + input [WIDTH-1:0] IN; + output reg OUT; + + integer i; + + always @(*) begin + OUT = 0; + for (i = 0; i < WIDTH; i=i+1) begin + OUT = OUT | IN[i]; + end + end +endmodule + +module MACROCELL_XOR(IN_PTC, IN_ORTERM, OUT); + parameter INVERT_OUT = 0; + + input IN_PTC; + input IN_ORTERM; + output wire OUT; + + wire xor_intermed; + + assign OUT = INVERT_OUT ? ~xor_intermed : xor_intermed; + assign xor_intermed = IN_ORTERM ^ IN_PTC; +endmodule + +module FDCP (C, PRE, CLR, D, Q); + parameter INIT = 0; + + input C, PRE, CLR, D; + output reg Q; + + initial begin + Q <= INIT; + end + + always @(posedge C, posedge PRE, posedge CLR) begin + if (CLR == 1) + Q <= 0; + else if (PRE == 1) + Q <= 1; + else + Q <= D; + end +endmodule + +module FDCP_N (C, PRE, CLR, D, Q); + parameter INIT = 0; + + input C, PRE, CLR, D; + output reg Q; + + initial begin + Q <= INIT; + end + + always @(negedge C, posedge PRE, posedge CLR) begin + if (CLR == 1) + Q <= 0; + else if (PRE == 1) + Q <= 1; + else + Q <= D; + end +endmodule + +module LDCP (G, PRE, CLR, D, Q); + parameter INIT = 0; + + input G, PRE, CLR, D; + output reg Q; + + initial begin + Q <= INIT; + end + + always @* begin + if (CLR == 1) + Q <= 0; + else if (G == 1) + Q <= D; + else if (PRE == 1) + Q <= 1; + end +endmodule + +module LDCP_N (G, PRE, CLR, D, Q); + parameter INIT = 0; + + input G, PRE, CLR, D; + output reg Q; + + initial begin + Q <= INIT; + end + + always @* begin + if (CLR == 1) + Q <= 0; + else if (G == 0) + Q <= D; + else if (PRE == 1) + Q <= 1; + end +endmodule + +module BUFG(I, O); + input I; + output O; + + assign O = I; +endmodule + +module BUFGSR(I, O); + parameter INVERT = 0; + + input I; + output O; + + assign O = INVERT ? ~I : I; +endmodule + +module BUFGTS(I, O); + parameter INVERT = 0; + + input I; + output O; + + assign O = INVERT ? ~I : I; +endmodule + +module FDDCP (C, PRE, CLR, D, Q); + parameter INIT = 0; + + input C, PRE, CLR, D; + output reg Q; + + initial begin + Q <= INIT; + end + + always @(posedge C, negedge C, posedge PRE, posedge CLR) begin + if (CLR == 1) + Q <= 0; + else if (PRE == 1) + Q <= 1; + else + Q <= D; + end +endmodule + +module FTCP (C, PRE, CLR, T, Q); + parameter INIT = 0; + + input C, PRE, CLR, T; + output wire Q; + reg Q_; + + initial begin + Q_ <= INIT; + end + + always @(posedge C, posedge PRE, posedge CLR) begin + if (CLR == 1) + Q_ <= 0; + else if (PRE == 1) + Q_ <= 1; + else if (T == 1) + Q_ <= ~Q_; + end + + assign Q = Q_; +endmodule + +module FTCP_N (C, PRE, CLR, T, Q); + parameter INIT = 0; + + input C, PRE, CLR, T; + output wire Q; + reg Q_; + + initial begin + Q_ <= INIT; + end + + always @(negedge C, posedge PRE, posedge CLR) begin + if (CLR == 1) + Q_ <= 0; + else if (PRE == 1) + Q_ <= 1; + else if (T == 1) + Q_ <= ~Q_; + end + + assign Q = Q_; +endmodule + +module FTDCP (C, PRE, CLR, T, Q); + parameter INIT = 0; + + input C, PRE, CLR, T; + output wire Q; + reg Q_; + + initial begin + Q_ <= INIT; + end + + always @(posedge C, negedge C, posedge PRE, posedge CLR) begin + if (CLR == 1) + Q_ <= 0; + else if (PRE == 1) + Q_ <= 1; + else if (T == 1) + Q_ <= ~Q_; + end + + assign Q = Q_; +endmodule + +module FDCPE (C, PRE, CLR, D, Q, CE); + parameter INIT = 0; + + input C, PRE, CLR, D, CE; + output reg Q; + + initial begin + Q <= INIT; + end + + always @(posedge C, posedge PRE, posedge CLR) begin + if (CLR == 1) + Q <= 0; + else if (PRE == 1) + Q <= 1; + else if (CE == 1) + Q <= D; + end +endmodule + +module FDCPE_N (C, PRE, CLR, D, Q, CE); + parameter INIT = 0; + + input C, PRE, CLR, D, CE; + output reg Q; + + initial begin + Q <= INIT; + end + + always @(negedge C, posedge PRE, posedge CLR) begin + if (CLR == 1) + Q <= 0; + else if (PRE == 1) + Q <= 1; + else if (CE == 1) + Q <= D; + end +endmodule + +module FDDCPE (C, PRE, CLR, D, Q, CE); + parameter INIT = 0; + + input C, PRE, CLR, D, CE; + output reg Q; + + initial begin + Q <= INIT; + end + + always @(posedge C, negedge C, posedge PRE, posedge CLR) begin + if (CLR == 1) + Q <= 0; + else if (PRE == 1) + Q <= 1; + else if (CE == 1) + Q <= D; + end +endmodule diff --git a/resources/netlist/resources/kernel/share/coolrunner2/tff_extract.v b/resources/netlist/resources/kernel/share/coolrunner2/tff_extract.v new file mode 100644 index 0000000..b4237dd --- /dev/null +++ b/resources/netlist/resources/kernel/share/coolrunner2/tff_extract.v @@ -0,0 +1,41 @@ +module FTCP (C, PRE, CLR, T, Q); + input C, PRE, CLR, T; + output wire Q; + + wire xorout; + + $_XOR_ xorgate ( + .A(T), + .B(Q), + .Y(xorout), + ); + + $_DFFSR_PPP_ dff ( + .C(C), + .D(xorout), + .Q(Q), + .S(PRE), + .R(CLR), + ); +endmodule + +module FTCP_N (C, PRE, CLR, T, Q); + input C, PRE, CLR, T; + output wire Q; + + wire xorout; + + $_XOR_ xorgate ( + .A(T), + .B(Q), + .Y(xorout), + ); + + $_DFFSR_NPP_ dff ( + .C(C), + .D(xorout), + .Q(Q), + .S(PRE), + .R(CLR), + ); +endmodule diff --git a/resources/netlist/resources/kernel/share/coolrunner2/xc2_dff.lib b/resources/netlist/resources/kernel/share/coolrunner2/xc2_dff.lib new file mode 100644 index 0000000..b578493 --- /dev/null +++ b/resources/netlist/resources/kernel/share/coolrunner2/xc2_dff.lib @@ -0,0 +1,31 @@ +library(xc2_dff) { + cell(FDCP) { + area: 1; + ff("IQ", "IQN") { clocked_on: C; + next_state: D; + clear: "CLR"; + preset: "PRE"; } + pin(C) { direction: input; + clock: true; } + pin(D) { direction: input; } + pin(Q) { direction: output; + function: "IQ"; } + pin(CLR) { direction: input; } + pin(PRE) { direction: input; } + } + + cell(FDCP_N) { + area: 1; + ff("IQ", "IQN") { clocked_on: "!C"; + next_state: D; + clear: "CLR"; + preset: "PRE"; } + pin(C) { direction: input; + clock: true; } + pin(D) { direction: input; } + pin(Q) { direction: output; + function: "IQ"; } + pin(CLR) { direction: input; } + pin(PRE) { direction: input; } + } +} diff --git a/resources/netlist/resources/kernel/share/dff2ff.v b/resources/netlist/resources/kernel/share/dff2ff.v new file mode 100644 index 0000000..33a79ff --- /dev/null +++ b/resources/netlist/resources/kernel/share/dff2ff.v @@ -0,0 +1,16 @@ +(* techmap_celltype = "$dff" *) +module dff2ff (CLK, D, Q); + parameter WIDTH = 1; + parameter CLK_POLARITY = 1; + + input CLK; + (* force_downto *) + input [WIDTH-1:0] D; + (* force_downto *) + output reg [WIDTH-1:0] Q; + + wire [1023:0] _TECHMAP_DO_ = "proc;;"; + + always @($global_clock) + Q <= D; +endmodule diff --git a/resources/netlist/resources/kernel/share/ecp5/arith_map.v b/resources/netlist/resources/kernel/share/ecp5/arith_map.v new file mode 100644 index 0000000..9334785 --- /dev/null +++ b/resources/netlist/resources/kernel/share/ecp5/arith_map.v @@ -0,0 +1,90 @@ +/* + * yosys -- Yosys Open SYnthesis Suite + * + * Copyright (C) 2012 Claire Xenia Wolf + * Copyright (C) 2018 gatecat + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + */ + +(* techmap_celltype = "$alu" *) +module _80_ecp5_alu (A, B, CI, BI, X, Y, CO); + parameter A_SIGNED = 0; + parameter B_SIGNED = 0; + parameter A_WIDTH = 1; + parameter B_WIDTH = 1; + parameter Y_WIDTH = 1; + + (* force_downto *) + input [A_WIDTH-1:0] A; + (* force_downto *) + input [B_WIDTH-1:0] B; + (* force_downto *) + output [Y_WIDTH-1:0] X, Y; + + input CI, BI; + (* force_downto *) + output [Y_WIDTH-1:0] CO; + + wire _TECHMAP_FAIL_ = Y_WIDTH <= 4; + + (* force_downto *) + wire [Y_WIDTH-1:0] A_buf, B_buf; + \$pos #(.A_SIGNED(A_SIGNED), .A_WIDTH(A_WIDTH), .Y_WIDTH(Y_WIDTH)) A_conv (.A(A), .Y(A_buf)); + \$pos #(.A_SIGNED(B_SIGNED), .A_WIDTH(B_WIDTH), .Y_WIDTH(Y_WIDTH)) B_conv (.A(B), .Y(B_buf)); + + function integer round_up2; + input integer N; + begin + round_up2 = ((N + 1) / 2) * 2; + end + endfunction + + localparam Y_WIDTH2 = round_up2(Y_WIDTH); + + (* force_downto *) + wire [Y_WIDTH2-1:0] AA = A_buf; + (* force_downto *) + wire [Y_WIDTH2-1:0] BB = BI ? ~B_buf : B_buf; + (* force_downto *) + wire [Y_WIDTH2-1:0] BX = B_buf; + (* force_downto *) + wire [Y_WIDTH2-1:0] C = {CO, CI}; + (* force_downto *) + wire [Y_WIDTH2-1:0] FCO, Y1; + + genvar i; + generate for (i = 0; i < Y_WIDTH2; i = i + 2) begin:slice + CCU2C #( + .INIT0(16'b1001011010101010), + .INIT1(16'b1001011010101010), + .INJECT1_0("NO"), + .INJECT1_1("NO") + ) ccu2c_i ( + .CIN(C[i]), + .A0(AA[i]), .B0(BX[i]), .C0(BI), .D0(1'b1), + .A1(AA[i+1]), .B1(BX[i+1]), .C1(BI), .D1(1'b1), + .S0(Y[i]), .S1(Y1[i]), + .COUT(FCO[i]) + ); + + assign CO[i] = (AA[i] && BB[i]) || (C[i] && (AA[i] || BB[i])); + if (i+1 < Y_WIDTH) begin + assign CO[i+1] = FCO[i]; + assign Y[i+1] = Y1[i]; + end + end endgenerate + + assign X = AA ^ BB; +endmodule diff --git a/resources/netlist/resources/kernel/share/ecp5/brams.txt b/resources/netlist/resources/kernel/share/ecp5/brams.txt new file mode 100644 index 0000000..db28a40 --- /dev/null +++ b/resources/netlist/resources/kernel/share/ecp5/brams.txt @@ -0,0 +1,52 @@ +ram block $__ECP5_DP16KD_ { + abits 14; + widths 1 2 4 9 18 per_port; + byte 9; + cost 128; + init no_undef; + port srsw "A" "B" { + clock anyedge; + clken; + wrbe_separate; + portoption "WRITEMODE" "NORMAL" { + rdwr no_change; + } + portoption "WRITEMODE" "WRITETHROUGH" { + rdwr new; + } + portoption "WRITEMODE" "READBEFOREWRITE" { + rdwr old; + } + option "RESETMODE" "SYNC" { + rdsrst zero ungated block_wr; + } + option "RESETMODE" "ASYNC" { + rdarst zero; + } + rdinit zero; + } +} + +ram block $__ECP5_PDPW16KD_ { + abits 14; + widths 1 2 4 9 18 36 per_port; + byte 9; + cost 128; + init no_undef; + port sr "R" { + clock anyedge; + clken; + option "RESETMODE" "SYNC" { + rdsrst zero ungated; + } + option "RESETMODE" "ASYNC" { + rdarst zero; + } + rdinit zero; + } + port sw "W" { + width 36; + clock anyedge; + clken; + } +} diff --git a/resources/netlist/resources/kernel/share/ecp5/brams_map.v b/resources/netlist/resources/kernel/share/ecp5/brams_map.v new file mode 100644 index 0000000..22e6e06 --- /dev/null +++ b/resources/netlist/resources/kernel/share/ecp5/brams_map.v @@ -0,0 +1,489 @@ +module $__ECP5_DP16KD_ (...); + +parameter INIT = 0; +parameter OPTION_RESETMODE = "SYNC"; + +parameter PORT_A_WIDTH = 18; +parameter PORT_A_WR_BE_WIDTH = 2; +parameter PORT_A_CLK_POL = 1; +parameter PORT_A_OPTION_WRITEMODE = "NORMAL"; + +input PORT_A_CLK; +input PORT_A_CLK_EN; +input PORT_A_WR_EN; +input PORT_A_RD_SRST; +input PORT_A_RD_ARST; +input [13:0] PORT_A_ADDR; +input [PORT_A_WR_BE_WIDTH-1:0] PORT_A_WR_BE; +input [PORT_A_WIDTH-1:0] PORT_A_WR_DATA; +output [PORT_A_WIDTH-1:0] PORT_A_RD_DATA; + +parameter PORT_B_WIDTH = 18; +parameter PORT_B_WR_BE_WIDTH = 2; +parameter PORT_B_CLK_POL = 1; +parameter PORT_B_OPTION_WRITEMODE = "NORMAL"; + +input PORT_B_CLK; +input PORT_B_CLK_EN; +input PORT_B_WR_EN; +input PORT_B_RD_SRST; +input PORT_B_RD_ARST; +input [13:0] PORT_B_ADDR; +input [PORT_B_WR_BE_WIDTH-1:0] PORT_B_WR_BE; +input [PORT_B_WIDTH-1:0] PORT_B_WR_DATA; +output [PORT_B_WIDTH-1:0] PORT_B_RD_DATA; + +function [319:0] init_slice; + input integer idx; + integer i, j; + init_slice = 0; + for (i = 0; i < 16; i = i + 1) begin + init_slice[i*20+:18] = INIT[(idx * 16 + i) * 18+:18]; + end +endfunction + +wire [17:0] DOA; +wire [17:0] DOB; +wire [17:0] DIA = PORT_A_WR_DATA; +wire [17:0] DIB = PORT_B_WR_DATA; + +assign PORT_A_RD_DATA = DOA; +assign PORT_B_RD_DATA = DOB; + +DP16KD #( + .INITVAL_00(init_slice('h00)), + .INITVAL_01(init_slice('h01)), + .INITVAL_02(init_slice('h02)), + .INITVAL_03(init_slice('h03)), + .INITVAL_04(init_slice('h04)), + .INITVAL_05(init_slice('h05)), + .INITVAL_06(init_slice('h06)), + .INITVAL_07(init_slice('h07)), + .INITVAL_08(init_slice('h08)), + .INITVAL_09(init_slice('h09)), + .INITVAL_0A(init_slice('h0a)), + .INITVAL_0B(init_slice('h0b)), + .INITVAL_0C(init_slice('h0c)), + .INITVAL_0D(init_slice('h0d)), + .INITVAL_0E(init_slice('h0e)), + .INITVAL_0F(init_slice('h0f)), + .INITVAL_10(init_slice('h10)), + .INITVAL_11(init_slice('h11)), + .INITVAL_12(init_slice('h12)), + .INITVAL_13(init_slice('h13)), + .INITVAL_14(init_slice('h14)), + .INITVAL_15(init_slice('h15)), + .INITVAL_16(init_slice('h16)), + .INITVAL_17(init_slice('h17)), + .INITVAL_18(init_slice('h18)), + .INITVAL_19(init_slice('h19)), + .INITVAL_1A(init_slice('h1a)), + .INITVAL_1B(init_slice('h1b)), + .INITVAL_1C(init_slice('h1c)), + .INITVAL_1D(init_slice('h1d)), + .INITVAL_1E(init_slice('h1e)), + .INITVAL_1F(init_slice('h1f)), + .INITVAL_20(init_slice('h20)), + .INITVAL_21(init_slice('h21)), + .INITVAL_22(init_slice('h22)), + .INITVAL_23(init_slice('h23)), + .INITVAL_24(init_slice('h24)), + .INITVAL_25(init_slice('h25)), + .INITVAL_26(init_slice('h26)), + .INITVAL_27(init_slice('h27)), + .INITVAL_28(init_slice('h28)), + .INITVAL_29(init_slice('h29)), + .INITVAL_2A(init_slice('h2a)), + .INITVAL_2B(init_slice('h2b)), + .INITVAL_2C(init_slice('h2c)), + .INITVAL_2D(init_slice('h2d)), + .INITVAL_2E(init_slice('h2e)), + .INITVAL_2F(init_slice('h2f)), + .INITVAL_30(init_slice('h30)), + .INITVAL_31(init_slice('h31)), + .INITVAL_32(init_slice('h32)), + .INITVAL_33(init_slice('h33)), + .INITVAL_34(init_slice('h34)), + .INITVAL_35(init_slice('h35)), + .INITVAL_36(init_slice('h36)), + .INITVAL_37(init_slice('h37)), + .INITVAL_38(init_slice('h38)), + .INITVAL_39(init_slice('h39)), + .INITVAL_3A(init_slice('h3a)), + .INITVAL_3B(init_slice('h3b)), + .INITVAL_3C(init_slice('h3c)), + .INITVAL_3D(init_slice('h3d)), + .INITVAL_3E(init_slice('h3e)), + .INITVAL_3F(init_slice('h3f)), + .DATA_WIDTH_A(PORT_A_WIDTH), + .DATA_WIDTH_B(PORT_B_WIDTH), + .REGMODE_A("NOREG"), + .REGMODE_B("NOREG"), + .RESETMODE(OPTION_RESETMODE), + .ASYNC_RESET_RELEASE(OPTION_RESETMODE), + .CSDECODE_A("0b000"), + .CSDECODE_B("0b000"), + .CLKAMUX(PORT_A_CLK_POL ? "CLKA" : "INV"), + .CLKBMUX(PORT_B_CLK_POL ? "CLKB" : "INV"), + .WRITEMODE_A(PORT_A_OPTION_WRITEMODE), + .WRITEMODE_B(PORT_B_OPTION_WRITEMODE), + .GSR("AUTO") +) _TECHMAP_REPLACE_ ( + .CLKA(PORT_A_CLK), + .WEA(PORT_A_WIDTH == 18 ? PORT_A_WR_EN : (PORT_A_WR_EN | PORT_A_WR_BE[0])), + .CEA(PORT_A_CLK_EN), + .OCEA(1'b1), + .RSTA(OPTION_RESETMODE == "SYNC" ? PORT_A_RD_SRST : PORT_A_RD_ARST), + .CSA0(1'b0), + .CSA1(1'b0), + .CSA2(1'b0), + .ADA0(PORT_A_WIDTH == 18 ? PORT_A_WR_BE[0] : PORT_A_ADDR[0]), + .ADA1(PORT_A_WIDTH == 18 ? PORT_A_WR_BE[1] : PORT_A_ADDR[1]), + .ADA2(PORT_A_ADDR[2]), + .ADA3(PORT_A_ADDR[3]), + .ADA4(PORT_A_ADDR[4]), + .ADA5(PORT_A_ADDR[5]), + .ADA6(PORT_A_ADDR[6]), + .ADA7(PORT_A_ADDR[7]), + .ADA8(PORT_A_ADDR[8]), + .ADA9(PORT_A_ADDR[9]), + .ADA10(PORT_A_ADDR[10]), + .ADA11(PORT_A_ADDR[11]), + .ADA12(PORT_A_ADDR[12]), + .ADA13(PORT_A_ADDR[13]), + .DIA0(DIA[0]), + .DIA1(DIA[1]), + .DIA2(DIA[2]), + .DIA3(DIA[3]), + .DIA4(DIA[4]), + .DIA5(DIA[5]), + .DIA6(DIA[6]), + .DIA7(DIA[7]), + .DIA8(DIA[8]), + .DIA9(DIA[9]), + .DIA10(DIA[10]), + .DIA11(DIA[11]), + .DIA12(DIA[12]), + .DIA13(DIA[13]), + .DIA14(DIA[14]), + .DIA15(DIA[15]), + .DIA16(DIA[16]), + .DIA17(DIA[17]), + .DOA0(DOA[0]), + .DOA1(DOA[1]), + .DOA2(DOA[2]), + .DOA3(DOA[3]), + .DOA4(DOA[4]), + .DOA5(DOA[5]), + .DOA6(DOA[6]), + .DOA7(DOA[7]), + .DOA8(DOA[8]), + .DOA9(DOA[9]), + .DOA10(DOA[10]), + .DOA11(DOA[11]), + .DOA12(DOA[12]), + .DOA13(DOA[13]), + .DOA14(DOA[14]), + .DOA15(DOA[15]), + .DOA16(DOA[16]), + .DOA17(DOA[17]), + + .CLKB(PORT_B_CLK), + .WEB(PORT_B_WIDTH == 18 ? PORT_B_WR_EN : (PORT_B_WR_EN | PORT_B_WR_BE[0])), + .CEB(PORT_B_CLK_EN), + .OCEB(1'b1), + .RSTB(OPTION_RESETMODE == "SYNC" ? PORT_B_RD_SRST : PORT_B_RD_ARST), + .CSB0(1'b0), + .CSB1(1'b0), + .CSB2(1'b0), + .ADB0(PORT_B_WIDTH == 18 ? PORT_B_WR_BE[0] : PORT_B_ADDR[0]), + .ADB1(PORT_B_WIDTH == 18 ? PORT_B_WR_BE[1] : PORT_B_ADDR[1]), + .ADB2(PORT_B_ADDR[2]), + .ADB3(PORT_B_ADDR[3]), + .ADB4(PORT_B_ADDR[4]), + .ADB5(PORT_B_ADDR[5]), + .ADB6(PORT_B_ADDR[6]), + .ADB7(PORT_B_ADDR[7]), + .ADB8(PORT_B_ADDR[8]), + .ADB9(PORT_B_ADDR[9]), + .ADB10(PORT_B_ADDR[10]), + .ADB11(PORT_B_ADDR[11]), + .ADB12(PORT_B_ADDR[12]), + .ADB13(PORT_B_ADDR[13]), + .DIB0(DIB[0]), + .DIB1(DIB[1]), + .DIB2(DIB[2]), + .DIB3(DIB[3]), + .DIB4(DIB[4]), + .DIB5(DIB[5]), + .DIB6(DIB[6]), + .DIB7(DIB[7]), + .DIB8(DIB[8]), + .DIB9(DIB[9]), + .DIB10(DIB[10]), + .DIB11(DIB[11]), + .DIB12(DIB[12]), + .DIB13(DIB[13]), + .DIB14(DIB[14]), + .DIB15(DIB[15]), + .DIB16(DIB[16]), + .DIB17(DIB[17]), + .DOB0(DOB[0]), + .DOB1(DOB[1]), + .DOB2(DOB[2]), + .DOB3(DOB[3]), + .DOB4(DOB[4]), + .DOB5(DOB[5]), + .DOB6(DOB[6]), + .DOB7(DOB[7]), + .DOB8(DOB[8]), + .DOB9(DOB[9]), + .DOB10(DOB[10]), + .DOB11(DOB[11]), + .DOB12(DOB[12]), + .DOB13(DOB[13]), + .DOB14(DOB[14]), + .DOB15(DOB[15]), + .DOB16(DOB[16]), + .DOB17(DOB[17]), +); + +endmodule + + +module $__ECP5_PDPW16KD_ (...); + +parameter INIT = 0; +parameter OPTION_RESETMODE = "SYNC"; + +parameter PORT_R_WIDTH = 36; +parameter PORT_R_CLK_POL = 1; + +input PORT_R_CLK; +input PORT_R_CLK_EN; +input PORT_R_RD_SRST; +input PORT_R_RD_ARST; +input [13:0] PORT_R_ADDR; +output [PORT_R_WIDTH-1:0] PORT_R_RD_DATA; + +parameter PORT_W_WIDTH = 36; +parameter PORT_W_WR_EN_WIDTH = 4; +parameter PORT_W_CLK_POL = 1; + +input PORT_W_CLK; +input PORT_W_CLK_EN; +input [13:0] PORT_W_ADDR; +input [PORT_W_WR_EN_WIDTH-1:0] PORT_W_WR_EN; +input [PORT_W_WIDTH-1:0] PORT_W_WR_DATA; + +function [319:0] init_slice; + input integer idx; + integer i, j; + init_slice = 0; + for (i = 0; i < 16; i = i + 1) begin + init_slice[i*20+:18] = INIT[(idx * 16 + i) * 18+:18]; + end +endfunction + +wire [35:0] DI = PORT_W_WR_DATA; +wire [35:0] DO; + +assign PORT_R_RD_DATA = PORT_R_WIDTH == 36 ? DO : DO[35:18]; + +DP16KD #( + .INITVAL_00(init_slice('h00)), + .INITVAL_01(init_slice('h01)), + .INITVAL_02(init_slice('h02)), + .INITVAL_03(init_slice('h03)), + .INITVAL_04(init_slice('h04)), + .INITVAL_05(init_slice('h05)), + .INITVAL_06(init_slice('h06)), + .INITVAL_07(init_slice('h07)), + .INITVAL_08(init_slice('h08)), + .INITVAL_09(init_slice('h09)), + .INITVAL_0A(init_slice('h0a)), + .INITVAL_0B(init_slice('h0b)), + .INITVAL_0C(init_slice('h0c)), + .INITVAL_0D(init_slice('h0d)), + .INITVAL_0E(init_slice('h0e)), + .INITVAL_0F(init_slice('h0f)), + .INITVAL_10(init_slice('h10)), + .INITVAL_11(init_slice('h11)), + .INITVAL_12(init_slice('h12)), + .INITVAL_13(init_slice('h13)), + .INITVAL_14(init_slice('h14)), + .INITVAL_15(init_slice('h15)), + .INITVAL_16(init_slice('h16)), + .INITVAL_17(init_slice('h17)), + .INITVAL_18(init_slice('h18)), + .INITVAL_19(init_slice('h19)), + .INITVAL_1A(init_slice('h1a)), + .INITVAL_1B(init_slice('h1b)), + .INITVAL_1C(init_slice('h1c)), + .INITVAL_1D(init_slice('h1d)), + .INITVAL_1E(init_slice('h1e)), + .INITVAL_1F(init_slice('h1f)), + .INITVAL_20(init_slice('h20)), + .INITVAL_21(init_slice('h21)), + .INITVAL_22(init_slice('h22)), + .INITVAL_23(init_slice('h23)), + .INITVAL_24(init_slice('h24)), + .INITVAL_25(init_slice('h25)), + .INITVAL_26(init_slice('h26)), + .INITVAL_27(init_slice('h27)), + .INITVAL_28(init_slice('h28)), + .INITVAL_29(init_slice('h29)), + .INITVAL_2A(init_slice('h2a)), + .INITVAL_2B(init_slice('h2b)), + .INITVAL_2C(init_slice('h2c)), + .INITVAL_2D(init_slice('h2d)), + .INITVAL_2E(init_slice('h2e)), + .INITVAL_2F(init_slice('h2f)), + .INITVAL_30(init_slice('h30)), + .INITVAL_31(init_slice('h31)), + .INITVAL_32(init_slice('h32)), + .INITVAL_33(init_slice('h33)), + .INITVAL_34(init_slice('h34)), + .INITVAL_35(init_slice('h35)), + .INITVAL_36(init_slice('h36)), + .INITVAL_37(init_slice('h37)), + .INITVAL_38(init_slice('h38)), + .INITVAL_39(init_slice('h39)), + .INITVAL_3A(init_slice('h3a)), + .INITVAL_3B(init_slice('h3b)), + .INITVAL_3C(init_slice('h3c)), + .INITVAL_3D(init_slice('h3d)), + .INITVAL_3E(init_slice('h3e)), + .INITVAL_3F(init_slice('h3f)), + .DATA_WIDTH_A(PORT_W_WIDTH), + .DATA_WIDTH_B(PORT_R_WIDTH), + .REGMODE_A("NOREG"), + .REGMODE_B("NOREG"), + .RESETMODE(OPTION_RESETMODE), + .ASYNC_RESET_RELEASE(OPTION_RESETMODE), + .CSDECODE_A("0b000"), + .CSDECODE_B("0b000"), + .CLKAMUX(PORT_W_CLK_POL ? "CLKA" : "INV"), + .CLKBMUX(PORT_R_CLK_POL ? "CLKB" : "INV"), + .GSR("AUTO") +) _TECHMAP_REPLACE_ ( + .CLKA(PORT_W_CLK), + .WEA(PORT_W_WIDTH >= 18 ? 1'b1 : PORT_W_WR_EN[0]), + .CEA(PORT_W_CLK_EN), + .OCEA(1'b0), + .RSTA(1'b0), + .CSA0(1'b0), + .CSA1(1'b0), + .CSA2(1'b0), + .ADA0(PORT_W_WIDTH >= 18 ? PORT_W_WR_EN[0] : PORT_W_ADDR[0]), + .ADA1(PORT_W_WIDTH >= 18 ? PORT_W_WR_EN[1] : PORT_W_ADDR[1]), + .ADA2(PORT_W_WIDTH >= 36 ? PORT_W_WR_EN[2] : PORT_W_ADDR[2]), + .ADA3(PORT_W_WIDTH >= 36 ? PORT_W_WR_EN[3] : PORT_W_ADDR[3]), + .ADA4(PORT_W_ADDR[4]), + .ADA5(PORT_W_ADDR[5]), + .ADA6(PORT_W_ADDR[6]), + .ADA7(PORT_W_ADDR[7]), + .ADA8(PORT_W_ADDR[8]), + .ADA9(PORT_W_ADDR[9]), + .ADA10(PORT_W_ADDR[10]), + .ADA11(PORT_W_ADDR[11]), + .ADA12(PORT_W_ADDR[12]), + .ADA13(PORT_W_ADDR[13]), + .DIA0(DI[0]), + .DIA1(DI[1]), + .DIA2(DI[2]), + .DIA3(DI[3]), + .DIA4(DI[4]), + .DIA5(DI[5]), + .DIA6(DI[6]), + .DIA7(DI[7]), + .DIA8(DI[8]), + .DIA9(DI[9]), + .DIA10(DI[10]), + .DIA11(DI[11]), + .DIA12(DI[12]), + .DIA13(DI[13]), + .DIA14(DI[14]), + .DIA15(DI[15]), + .DIA16(DI[16]), + .DIA17(DI[17]), + .DIB0(DI[18]), + .DIB1(DI[19]), + .DIB2(DI[20]), + .DIB3(DI[21]), + .DIB4(DI[22]), + .DIB5(DI[23]), + .DIB6(DI[24]), + .DIB7(DI[25]), + .DIB8(DI[26]), + .DIB9(DI[27]), + .DIB10(DI[28]), + .DIB11(DI[29]), + .DIB12(DI[30]), + .DIB13(DI[31]), + .DIB14(DI[32]), + .DIB15(DI[33]), + .DIB16(DI[34]), + .DIB17(DI[35]), + + .CLKB(PORT_R_CLK), + .WEB(1'b0), + .CEB(PORT_R_CLK_EN), + .OCEB(1'b1), + .RSTB(OPTION_RESETMODE == "SYNC" ? PORT_R_RD_SRST : PORT_R_RD_ARST), + .CSB0(1'b0), + .CSB1(1'b0), + .CSB2(1'b0), + .ADB0(PORT_R_ADDR[0]), + .ADB1(PORT_R_ADDR[1]), + .ADB2(PORT_R_ADDR[2]), + .ADB3(PORT_R_ADDR[3]), + .ADB4(PORT_R_ADDR[4]), + .ADB5(PORT_R_ADDR[5]), + .ADB6(PORT_R_ADDR[6]), + .ADB7(PORT_R_ADDR[7]), + .ADB8(PORT_R_ADDR[8]), + .ADB9(PORT_R_ADDR[9]), + .ADB10(PORT_R_ADDR[10]), + .ADB11(PORT_R_ADDR[11]), + .ADB12(PORT_R_ADDR[12]), + .ADB13(PORT_R_ADDR[13]), + .DOA0(DO[0]), + .DOA1(DO[1]), + .DOA2(DO[2]), + .DOA3(DO[3]), + .DOA4(DO[4]), + .DOA5(DO[5]), + .DOA6(DO[6]), + .DOA7(DO[7]), + .DOA8(DO[8]), + .DOA9(DO[9]), + .DOA10(DO[10]), + .DOA11(DO[11]), + .DOA12(DO[12]), + .DOA13(DO[13]), + .DOA14(DO[14]), + .DOA15(DO[15]), + .DOA16(DO[16]), + .DOA17(DO[17]), + .DOB0(DO[18]), + .DOB1(DO[19]), + .DOB2(DO[20]), + .DOB3(DO[21]), + .DOB4(DO[22]), + .DOB5(DO[23]), + .DOB6(DO[24]), + .DOB7(DO[25]), + .DOB8(DO[26]), + .DOB9(DO[27]), + .DOB10(DO[28]), + .DOB11(DO[29]), + .DOB12(DO[30]), + .DOB13(DO[31]), + .DOB14(DO[32]), + .DOB15(DO[33]), + .DOB16(DO[34]), + .DOB17(DO[35]), +); + +endmodule diff --git a/resources/netlist/resources/kernel/share/ecp5/cells_bb.v b/resources/netlist/resources/kernel/share/ecp5/cells_bb.v new file mode 100644 index 0000000..fc352a5 --- /dev/null +++ b/resources/netlist/resources/kernel/share/ecp5/cells_bb.v @@ -0,0 +1,832 @@ +// ECP5 Blackbox cells +// FIXME: Create sim models + +(* blackbox *) +module MULT18X18D( + input A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, + input B0, B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12, B13, B14, B15, B16, B17, + input C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, + input SIGNEDA, SIGNEDB, SOURCEA, SOURCEB, + input CLK0, CLK1, CLK2, CLK3, + input CE0, CE1, CE2, CE3, + input RST0, RST1, RST2, RST3, + input SRIA0, SRIA1, SRIA2, SRIA3, SRIA4, SRIA5, SRIA6, SRIA7, SRIA8, SRIA9, SRIA10, SRIA11, SRIA12, SRIA13, SRIA14, SRIA15, SRIA16, SRIA17, + input SRIB0, SRIB1, SRIB2, SRIB3, SRIB4, SRIB5, SRIB6, SRIB7, SRIB8, SRIB9, SRIB10, SRIB11, SRIB12, SRIB13, SRIB14, SRIB15, SRIB16, SRIB17, + output SROA0, SROA1, SROA2, SROA3, SROA4, SROA5, SROA6, SROA7, SROA8, SROA9, SROA10, SROA11, SROA12, SROA13, SROA14, SROA15, SROA16, SROA17, + output SROB0, SROB1, SROB2, SROB3, SROB4, SROB5, SROB6, SROB7, SROB8, SROB9, SROB10, SROB11, SROB12, SROB13, SROB14, SROB15, SROB16, SROB17, + output ROA0, ROA1, ROA2, ROA3, ROA4, ROA5, ROA6, ROA7, ROA8, ROA9, ROA10, ROA11, ROA12, ROA13, ROA14, ROA15, ROA16, ROA17, + output ROB0, ROB1, ROB2, ROB3, ROB4, ROB5, ROB6, ROB7, ROB8, ROB9, ROB10, ROB11, ROB12, ROB13, ROB14, ROB15, ROB16, ROB17, + output ROC0, ROC1, ROC2, ROC3, ROC4, ROC5, ROC6, ROC7, ROC8, ROC9, ROC10, ROC11, ROC12, ROC13, ROC14, ROC15, ROC16, ROC17, + output P0, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, + output SIGNEDP +); + parameter REG_INPUTA_CLK = "NONE"; + parameter REG_INPUTA_CE = "CE0"; + parameter REG_INPUTA_RST = "RST0"; + parameter REG_INPUTB_CLK = "NONE"; + parameter REG_INPUTB_CE = "CE0"; + parameter REG_INPUTB_RST = "RST0"; + parameter REG_INPUTC_CLK = "NONE"; + parameter REG_INPUTC_CE = "CE0"; + parameter REG_INPUTC_RST = "RST0"; + parameter REG_PIPELINE_CLK = "NONE"; + parameter REG_PIPELINE_CE = "CE0"; + parameter REG_PIPELINE_RST = "RST0"; + parameter REG_OUTPUT_CLK = "NONE"; + parameter REG_OUTPUT_CE = "CE0"; + parameter REG_OUTPUT_RST = "RST0"; + parameter [127:0] CLK0_DIV = "ENABLED"; + parameter [127:0] CLK1_DIV = "ENABLED"; + parameter [127:0] CLK2_DIV = "ENABLED"; + parameter [127:0] CLK3_DIV = "ENABLED"; + parameter HIGHSPEED_CLK = "NONE"; + parameter [127:0] GSR = "ENABLED"; + parameter CAS_MATCH_REG = "FALSE"; + parameter [127:0] SOURCEB_MODE = "B_SHIFT"; + parameter [127:0] MULT_BYPASS = "DISABLED"; + parameter [127:0] RESETMODE = "SYNC"; +endmodule + +(* blackbox *) +module ALU54B( + input CLK0, CLK1, CLK2, CLK3, + input CE0, CE1, CE2, CE3, + input RST0, RST1, RST2, RST3, + input SIGNEDIA, SIGNEDIB, SIGNEDCIN, + input A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31, A32, A33, A34, A35, + input B0, B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12, B13, B14, B15, B16, B17, B18, B19, B20, B21, B22, B23, B24, B25, B26, B27, B28, B29, B30, B31, B32, B33, B34, B35, + input C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19, C20, C21, C22, C23, C24, C25, C26, C27, C28, C29, C30, C31, C32, C33, C34, C35, C36, C37, C38, C39, C40, C41, C42, C43, C44, C45, C46, C47, C48, C49, C50, C51, C52, C53, + input CFB0, CFB1, CFB2, CFB3, CFB4, CFB5, CFB6, CFB7, CFB8, CFB9, CFB10, CFB11, CFB12, CFB13, CFB14, CFB15, CFB16, CFB17, CFB18, CFB19, CFB20, CFB21, CFB22, CFB23, CFB24, CFB25, CFB26, CFB27, CFB28, CFB29, CFB30, CFB31, CFB32, CFB33, CFB34, CFB35, CFB36, CFB37, CFB38, CFB39, CFB40, CFB41, CFB42, CFB43, CFB44, CFB45, CFB46, CFB47, CFB48, CFB49, CFB50, CFB51, CFB52, CFB53, + input MA0, MA1, MA2, MA3, MA4, MA5, MA6, MA7, MA8, MA9, MA10, MA11, MA12, MA13, MA14, MA15, MA16, MA17, MA18, MA19, MA20, MA21, MA22, MA23, MA24, MA25, MA26, MA27, MA28, MA29, MA30, MA31, MA32, MA33, MA34, MA35, + input MB0, MB1, MB2, MB3, MB4, MB5, MB6, MB7, MB8, MB9, MB10, MB11, MB12, MB13, MB14, MB15, MB16, MB17, MB18, MB19, MB20, MB21, MB22, MB23, MB24, MB25, MB26, MB27, MB28, MB29, MB30, MB31, MB32, MB33, MB34, MB35, + input CIN0, CIN1, CIN2, CIN3, CIN4, CIN5, CIN6, CIN7, CIN8, CIN9, CIN10, CIN11, CIN12, CIN13, CIN14, CIN15, CIN16, CIN17, CIN18, CIN19, CIN20, CIN21, CIN22, CIN23, CIN24, CIN25, CIN26, CIN27, CIN28, CIN29, CIN30, CIN31, CIN32, CIN33, CIN34, CIN35, CIN36, CIN37, CIN38, CIN39, CIN40, CIN41, CIN42, CIN43, CIN44, CIN45, CIN46, CIN47, CIN48, CIN49, CIN50, CIN51, CIN52, CIN53, + input OP0, OP1, OP2, OP3, OP4, OP5, OP6, OP7, OP8, OP9, OP10, + output R0, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R15, R16, R17, R18, R19, R20, R21, R22, R23, R24, R25, R26, R27, R28, R29, R30, R31, R32, R33, R34, R35, R36, R37, R38, R39, R40, R41, R42, R43, R44, R45, R46, R47, R48, R49, R50, R51, R52, R53, + output CO0, CO1, CO2, CO3, CO4, CO5, CO6, CO7, CO8, CO9, CO10, CO11, CO12, CO13, CO14, CO15, CO16, CO17, CO18, CO19, CO20, CO21, CO22, CO23, CO24, CO25, CO26, CO27, CO28, CO29, CO30, CO31, CO32, CO33, CO34, CO35, CO36, CO37, CO38, CO39, CO40, CO41, CO42, CO43, CO44, CO45, CO46, CO47, CO48, CO49, CO50, CO51, CO52, CO53, + output EQZ, EQZM, EQOM, EQPAT, EQPATB, + output OVER, UNDER, OVERUNDER, + output SIGNEDR +); + parameter REG_INPUTC0_CLK = "NONE"; + parameter REG_INPUTC0_CE = "CE0"; + parameter REG_INPUTC0_RST = "RST0"; + parameter REG_INPUTC1_CLK = "NONE"; + parameter REG_INPUTC1_CE = "CE0"; + parameter REG_INPUTC1_RST = "RST0"; + parameter REG_OPCODEOP0_0_CLK = "NONE"; + parameter REG_OPCODEOP0_0_CE = "CE0"; + parameter REG_OPCODEOP0_0_RST = "RST0"; + parameter REG_OPCODEOP1_0_CLK = "NONE"; + parameter REG_OPCODEOP0_1_CLK = "NONE"; + parameter REG_OPCODEOP0_1_CE = "CE0"; + parameter REG_OPCODEOP0_1_RST = "RST0"; + parameter REG_OPCODEOP1_1_CLK = "NONE"; + parameter REG_OPCODEIN_0_CLK = "NONE"; + parameter REG_OPCODEIN_0_CE = "CE0"; + parameter REG_OPCODEIN_0_RST = "RST0"; + parameter REG_OPCODEIN_1_CLK = "NONE"; + parameter REG_OPCODEIN_1_CE = "CE0"; + parameter REG_OPCODEIN_1_RST = "RST0"; + parameter REG_OUTPUT0_CLK = "NONE"; + parameter REG_OUTPUT0_CE = "CE0"; + parameter REG_OUTPUT0_RST = "RST0"; + parameter REG_OUTPUT1_CLK = "NONE"; + parameter REG_OUTPUT1_CE = "CE0"; + parameter REG_OUTPUT1_RST = "RST0"; + parameter REG_FLAG_CLK = "NONE"; + parameter REG_FLAG_CE = "CE0"; + parameter REG_FLAG_RST = "RST0"; + parameter REG_INPUTCFB_CLK = "NONE"; + parameter REG_INPUTCFB_CE = "CE0"; + parameter REG_INPUTCFB_RST = "RST0"; + parameter [127:0] MCPAT_SOURCE = "STATIC"; + parameter [127:0] MASKPAT_SOURCE = "STATIC"; + parameter MASK01 = "0x00000000000000"; + parameter [127:0] CLK0_DIV = "ENABLED"; + parameter [127:0] CLK1_DIV = "ENABLED"; + parameter [127:0] CLK2_DIV = "ENABLED"; + parameter [127:0] CLK3_DIV = "ENABLED"; + parameter MCPAT = "0x00000000000000"; + parameter MASKPAT = "0x00000000000000"; + parameter RNDPAT = "0x00000000000000"; + parameter [127:0] GSR = "ENABLED"; + parameter [127:0] RESETMODE = "SYNC"; + parameter MULT9_MODE = "DISABLED"; + parameter FORCE_ZERO_BARREL_SHIFT = "DISABLED"; + parameter LEGACY = "DISABLED"; +endmodule + +(* blackbox *) +module EHXPLLL ( + input CLKI, CLKFB, + input PHASESEL1, PHASESEL0, PHASEDIR, PHASESTEP, PHASELOADREG, + input STDBY, PLLWAKESYNC, + input RST, ENCLKOP, ENCLKOS, ENCLKOS2, ENCLKOS3, + output CLKOP, CLKOS, CLKOS2, CLKOS3, + output LOCK, INTLOCK, + output REFCLK, CLKINTFB +); + parameter CLKI_DIV = 1; + parameter CLKFB_DIV = 1; + parameter CLKOP_DIV = 8; + parameter CLKOS_DIV = 8; + parameter CLKOS2_DIV = 8; + parameter CLKOS3_DIV = 8; + parameter CLKOP_ENABLE = "ENABLED"; + parameter CLKOS_ENABLE = "DISABLED"; + parameter CLKOS2_ENABLE = "DISABLED"; + parameter CLKOS3_ENABLE = "DISABLED"; + parameter CLKOP_CPHASE = 0; + parameter CLKOS_CPHASE = 0; + parameter CLKOS2_CPHASE = 0; + parameter CLKOS3_CPHASE = 0; + parameter CLKOP_FPHASE = 0; + parameter CLKOS_FPHASE = 0; + parameter CLKOS2_FPHASE = 0; + parameter CLKOS3_FPHASE = 0; + parameter FEEDBK_PATH = "CLKOP"; + parameter CLKOP_TRIM_POL = "RISING"; + parameter CLKOP_TRIM_DELAY = 0; + parameter CLKOS_TRIM_POL = "RISING"; + parameter CLKOS_TRIM_DELAY = 0; + parameter OUTDIVIDER_MUXA = "DIVA"; + parameter OUTDIVIDER_MUXB = "DIVB"; + parameter OUTDIVIDER_MUXC = "DIVC"; + parameter OUTDIVIDER_MUXD = "DIVD"; + parameter PLL_LOCK_MODE = 0; + parameter PLL_LOCK_DELAY = 200; + parameter STDBY_ENABLE = "DISABLED"; + parameter REFIN_RESET = "DISABLED"; + parameter SYNC_ENABLE = "DISABLED"; + parameter INT_LOCK_STICKY = "ENABLED"; + parameter DPHASE_SOURCE = "DISABLED"; + parameter PLLRST_ENA = "DISABLED"; + parameter INTFB_WAKE = "DISABLED"; +endmodule + +(* blackbox *) +module DTR( + input STARTPULSE, + output DTROUT7, DTROUT6, DTROUT5, DTROUT4, DTROUT3, DTROUT2, DTROUT1, DTROUT0 +); +endmodule + +(* blackbox *) +module OSCG( + output OSC +); +parameter DIV = 128; +endmodule + +(* blackbox *) (* keep *) +module USRMCLK( + input USRMCLKI, USRMCLKTS, + output USRMCLKO +); +endmodule + +(* blackbox *) (* keep *) +module JTAGG( + input TCK, TMS, TDI, JTDO2, JTDO1, + output TDO, JTDI, JTCK, JRTI2, JRTI1, + output JSHIFT, JUPDATE, JRSTN, JCE2, JCE1 +); +parameter ER1 = "ENABLED"; +parameter ER2 = "ENABLED"; +endmodule + +(* blackbox *) +module DELAYF( + input A, LOADN, MOVE, DIRECTION, + output Z, CFLAG +); + parameter DEL_MODE = "USER_DEFINED"; + parameter DEL_VALUE = 0; +endmodule + +(* blackbox *) +module DELAYG( + input A, + output Z +); + parameter DEL_MODE = "USER_DEFINED"; + parameter DEL_VALUE = 0; +endmodule + +(* blackbox *) +module IDDRX1F( + input D, SCLK, RST, + output Q0, Q1 +); + parameter GSR = "ENABLED"; +endmodule + +(* blackbox *) +module IDDRX2F( + input D, SCLK, ECLK, RST, ALIGNWD, + output Q0, Q1, Q2, Q3 +); + parameter GSR = "ENABLED"; +endmodule + +(* blackbox *) +module IDDR71B( + input D, SCLK, ECLK, RST, ALIGNWD, + output Q0, Q1, Q2, Q3, Q4, Q5, Q6 +); + parameter GSR = "ENABLED"; +endmodule + +(* blackbox *) +module IDDRX2DQA( + input D, DQSR90, ECLK, SCLK, RST, + input RDPNTR2, RDPNTR1, RDPNTR0, WRPNTR2, WRPNTR1, WRPNTR0, + output Q0, Q1, Q2, Q3, QWL +); + parameter GSR = "ENABLED"; +endmodule + +(* blackbox *) +module ODDRX1F( + input SCLK, RST, D0, D1, + output Q +); + parameter GSR = "ENABLED"; +endmodule + +(* blackbox *) +module ODDRX2F( + input SCLK, ECLK, RST, D0, D1, D2, D3, + output Q +); + parameter GSR = "ENABLED"; +endmodule + +(* blackbox *) +module ODDR71B( + input SCLK, ECLK, RST, D0, D1, D2, D3, D4, D5, D6, + output Q +); + parameter GSR = "ENABLED"; +endmodule + +(* blackbox *) +module OSHX2A( + input D0, D1, RST, ECLK, SCLK, + output Q +); + parameter GSR = "ENABLED"; +endmodule + +(* blackbox *) +module ODDRX2DQA( + input D0, D1, D2, D3, RST, ECLK, SCLK, DQSW270, + output Q +); + parameter GSR = "ENABLED"; +endmodule + +(* blackbox *) +module ODDRX2DQSB( + input D0, D1, D2, D3, RST, ECLK, SCLK, DQSW, + output Q +); + parameter GSR = "ENABLED"; +endmodule + +(* blackbox *) +module TSHX2DQA( + input T0, T1, SCLK, ECLK, DQSW270, RST, + output Q +); + parameter GSR = "ENABLED"; + parameter REGSET = "SET"; +endmodule + +(* blackbox *) +module TSHX2DQSA( + input T0, T1, SCLK, ECLK, DQSW, RST, + output Q +); + parameter GSR = "ENABLED"; + parameter REGSET = "SET"; +endmodule + +(* blackbox *) +module DQSBUFM( + input DQSI, READ1, READ0, READCLKSEL2, READCLKSEL1, READCLKSEL0, DDRDEL, + input ECLK, SCLK, + input DYNDELAY7, DYNDELAY6, DYNDELAY5, DYNDELAY4, + input DYNDELAY3, DYNDELAY2, DYNDELAY1, DYNDELAY0, + input RST, RDLOADN, RDMOVE, RDDIRECTION, WRLOADN, WRMOVE, WRDIRECTION, PAUSE, + output DQSR90, DQSW, DQSW270, + output RDPNTR2, RDPNTR1, RDPNTR0, WRPNTR2, WRPNTR1, WRPNTR0, + output DATAVALID, BURSTDET, RDCFLAG, WRCFLAG +); + parameter DQS_LI_DEL_ADJ = "FACTORYONLY"; + parameter DQS_LI_DEL_VAL = 0; + parameter DQS_LO_DEL_ADJ = "FACTORYONLY"; + parameter DQS_LO_DEL_VAL = 0; + parameter GSR = "ENABLED"; +endmodule + +(* blackbox *) +module DDRDLLA( + input CLK, RST, UDDCNTLN, FREEZE, + output LOCK, DDRDEL, DCNTL7, DCNTL6, DCNTL5, DCNTL4, DCNTL3, DCNTL2, DCNTL1, DCNTL0 +); + parameter FORCE_MAX_DELAY = "NO"; + parameter GSR = "ENABLED"; +endmodule + +(* blackbox *) +module DLLDELD( + input A, DDRDEL, LOADN, MOVE, DIRECTION, + output Z, CFLAG +); + parameter DEL_ADJ = "PLUS"; + parameter DEL_VAL = 0; +endmodule + +(* blackbox *) +module CLKDIVF( + input CLKI, RST, ALIGNWD, + output CDIVX +); + parameter GSR = "DISABLED"; + parameter DIV = "2.0"; +endmodule + +(* blackbox *) +module ECLKSYNCB( + input ECLKI, STOP, + output ECLKO +); +endmodule + +(* blackbox *) +module ECLKBRIDGECS( + input CLK0, CLK1, SEL, + output ECSOUT +); +endmodule + +(* blackbox *) +module DCCA( + input CLKI, CE, + output CLKO +); +endmodule + +(* blackbox *) +module DCSC( + input CLK1, CLK0, + input SEL1, SEL0, + input MODESEL, + output DCSOUT +); + parameter DCSMODE = "POS"; +endmodule + +(* blackbox *) (* keep *) +module DCUA( + input CH0_HDINP, CH1_HDINP, CH0_HDINN, CH1_HDINN, + input D_TXBIT_CLKP_FROM_ND, D_TXBIT_CLKN_FROM_ND, D_SYNC_ND, D_TXPLL_LOL_FROM_ND, + input CH0_RX_REFCLK, CH1_RX_REFCLK, CH0_FF_RXI_CLK, CH1_FF_RXI_CLK, CH0_FF_TXI_CLK, CH1_FF_TXI_CLK, CH0_FF_EBRD_CLK, CH1_FF_EBRD_CLK, + input CH0_FF_TX_D_0, CH1_FF_TX_D_0, CH0_FF_TX_D_1, CH1_FF_TX_D_1, CH0_FF_TX_D_2, CH1_FF_TX_D_2, CH0_FF_TX_D_3, CH1_FF_TX_D_3, + input CH0_FF_TX_D_4, CH1_FF_TX_D_4, CH0_FF_TX_D_5, CH1_FF_TX_D_5, CH0_FF_TX_D_6, CH1_FF_TX_D_6, CH0_FF_TX_D_7, CH1_FF_TX_D_7, + input CH0_FF_TX_D_8, CH1_FF_TX_D_8, CH0_FF_TX_D_9, CH1_FF_TX_D_9, CH0_FF_TX_D_10, CH1_FF_TX_D_10, CH0_FF_TX_D_11, CH1_FF_TX_D_11, + input CH0_FF_TX_D_12, CH1_FF_TX_D_12, CH0_FF_TX_D_13, CH1_FF_TX_D_13, CH0_FF_TX_D_14, CH1_FF_TX_D_14, CH0_FF_TX_D_15, CH1_FF_TX_D_15, + input CH0_FF_TX_D_16, CH1_FF_TX_D_16, CH0_FF_TX_D_17, CH1_FF_TX_D_17, CH0_FF_TX_D_18, CH1_FF_TX_D_18, CH0_FF_TX_D_19, CH1_FF_TX_D_19, + input CH0_FF_TX_D_20, CH1_FF_TX_D_20, CH0_FF_TX_D_21, CH1_FF_TX_D_21, CH0_FF_TX_D_22, CH1_FF_TX_D_22, CH0_FF_TX_D_23, CH1_FF_TX_D_23, + input CH0_FFC_EI_EN, CH1_FFC_EI_EN, CH0_FFC_PCIE_DET_EN, CH1_FFC_PCIE_DET_EN, CH0_FFC_PCIE_CT, CH1_FFC_PCIE_CT, CH0_FFC_SB_INV_RX, CH1_FFC_SB_INV_RX, + input CH0_FFC_ENABLE_CGALIGN, CH1_FFC_ENABLE_CGALIGN, CH0_FFC_SIGNAL_DETECT, CH1_FFC_SIGNAL_DETECT, CH0_FFC_FB_LOOPBACK, CH1_FFC_FB_LOOPBACK, CH0_FFC_SB_PFIFO_LP, CH1_FFC_SB_PFIFO_LP, + input CH0_FFC_PFIFO_CLR, CH1_FFC_PFIFO_CLR, CH0_FFC_RATE_MODE_RX, CH1_FFC_RATE_MODE_RX, CH0_FFC_RATE_MODE_TX, CH1_FFC_RATE_MODE_TX, CH0_FFC_DIV11_MODE_RX, CH1_FFC_DIV11_MODE_RX, CH0_FFC_RX_GEAR_MODE, CH1_FFC_RX_GEAR_MODE, CH0_FFC_TX_GEAR_MODE, CH1_FFC_TX_GEAR_MODE, + input CH0_FFC_DIV11_MODE_TX, CH1_FFC_DIV11_MODE_TX, CH0_FFC_LDR_CORE2TX_EN, CH1_FFC_LDR_CORE2TX_EN, CH0_FFC_LANE_TX_RST, CH1_FFC_LANE_TX_RST, CH0_FFC_LANE_RX_RST, CH1_FFC_LANE_RX_RST, + input CH0_FFC_RRST, CH1_FFC_RRST, CH0_FFC_TXPWDNB, CH1_FFC_TXPWDNB, CH0_FFC_RXPWDNB, CH1_FFC_RXPWDNB, CH0_LDR_CORE2TX, CH1_LDR_CORE2TX, + input D_SCIWDATA0, D_SCIWDATA1, D_SCIWDATA2, D_SCIWDATA3, D_SCIWDATA4, D_SCIWDATA5, D_SCIWDATA6, D_SCIWDATA7, + input D_SCIADDR0, D_SCIADDR1, D_SCIADDR2, D_SCIADDR3, D_SCIADDR4, D_SCIADDR5, D_SCIENAUX, D_SCISELAUX, + input CH0_SCIEN, CH1_SCIEN, CH0_SCISEL, CH1_SCISEL, D_SCIRD, D_SCIWSTN, D_CYAWSTN, D_FFC_SYNC_TOGGLE, + input D_FFC_DUAL_RST, D_FFC_MACRO_RST, D_FFC_MACROPDB, D_FFC_TRST, CH0_FFC_CDR_EN_BITSLIP, CH1_FFC_CDR_EN_BITSLIP, D_SCAN_ENABLE, D_SCAN_IN_0, + input D_SCAN_IN_1, D_SCAN_IN_2, D_SCAN_IN_3, D_SCAN_IN_4, D_SCAN_IN_5, D_SCAN_IN_6, D_SCAN_IN_7, D_SCAN_MODE, + input D_SCAN_RESET, D_CIN0, D_CIN1, D_CIN2, D_CIN3, D_CIN4, D_CIN5, D_CIN6,D_CIN7, D_CIN8, D_CIN9, D_CIN10, D_CIN11, + output CH0_HDOUTP, CH1_HDOUTP, CH0_HDOUTN, CH1_HDOUTN, D_TXBIT_CLKP_TO_ND, D_TXBIT_CLKN_TO_ND, D_SYNC_PULSE2ND, D_TXPLL_LOL_TO_ND, + output CH0_FF_RX_F_CLK, CH1_FF_RX_F_CLK, CH0_FF_RX_H_CLK, CH1_FF_RX_H_CLK, CH0_FF_TX_F_CLK, CH1_FF_TX_F_CLK, CH0_FF_TX_H_CLK, CH1_FF_TX_H_CLK, + output CH0_FF_RX_PCLK, CH1_FF_RX_PCLK, CH0_FF_TX_PCLK, CH1_FF_TX_PCLK, CH0_FF_RX_D_0, CH1_FF_RX_D_0, CH0_FF_RX_D_1, CH1_FF_RX_D_1, + output CH0_FF_RX_D_2, CH1_FF_RX_D_2, CH0_FF_RX_D_3, CH1_FF_RX_D_3, CH0_FF_RX_D_4, CH1_FF_RX_D_4, CH0_FF_RX_D_5, CH1_FF_RX_D_5, + output CH0_FF_RX_D_6, CH1_FF_RX_D_6, CH0_FF_RX_D_7, CH1_FF_RX_D_7, CH0_FF_RX_D_8, CH1_FF_RX_D_8, CH0_FF_RX_D_9, CH1_FF_RX_D_9, + output CH0_FF_RX_D_10, CH1_FF_RX_D_10, CH0_FF_RX_D_11, CH1_FF_RX_D_11, CH0_FF_RX_D_12, CH1_FF_RX_D_12, CH0_FF_RX_D_13, CH1_FF_RX_D_13, + output CH0_FF_RX_D_14, CH1_FF_RX_D_14, CH0_FF_RX_D_15, CH1_FF_RX_D_15, CH0_FF_RX_D_16, CH1_FF_RX_D_16, CH0_FF_RX_D_17, CH1_FF_RX_D_17, + output CH0_FF_RX_D_18, CH1_FF_RX_D_18, CH0_FF_RX_D_19, CH1_FF_RX_D_19, CH0_FF_RX_D_20, CH1_FF_RX_D_20, CH0_FF_RX_D_21, CH1_FF_RX_D_21, + output CH0_FF_RX_D_22, CH1_FF_RX_D_22, CH0_FF_RX_D_23, CH1_FF_RX_D_23, CH0_FFS_PCIE_DONE, CH1_FFS_PCIE_DONE, CH0_FFS_PCIE_CON, CH1_FFS_PCIE_CON, + output CH0_FFS_RLOS, CH1_FFS_RLOS, CH0_FFS_LS_SYNC_STATUS, CH1_FFS_LS_SYNC_STATUS, CH0_FFS_CC_UNDERRUN, CH1_FFS_CC_UNDERRUN, CH0_FFS_CC_OVERRUN, CH1_FFS_CC_OVERRUN, + output CH0_FFS_RXFBFIFO_ERROR, CH1_FFS_RXFBFIFO_ERROR, CH0_FFS_TXFBFIFO_ERROR, CH1_FFS_TXFBFIFO_ERROR, CH0_FFS_RLOL, CH1_FFS_RLOL, CH0_FFS_SKP_ADDED, CH1_FFS_SKP_ADDED, + output CH0_FFS_SKP_DELETED, CH1_FFS_SKP_DELETED, CH0_LDR_RX2CORE, CH1_LDR_RX2CORE, D_SCIRDATA0, D_SCIRDATA1, D_SCIRDATA2, D_SCIRDATA3, + output D_SCIRDATA4, D_SCIRDATA5, D_SCIRDATA6, D_SCIRDATA7, D_SCIINT, D_SCAN_OUT_0, D_SCAN_OUT_1, D_SCAN_OUT_2, D_SCAN_OUT_3, D_SCAN_OUT_4, D_SCAN_OUT_5, D_SCAN_OUT_6, D_SCAN_OUT_7, + output D_COUT0, D_COUT1, D_COUT2, D_COUT3, D_COUT4, D_COUT5, D_COUT6, D_COUT7, D_COUT8, D_COUT9, D_COUT10, D_COUT11, D_COUT12, D_COUT13, D_COUT14, D_COUT15, D_COUT16, D_COUT17, D_COUT18, D_COUT19, + + input D_REFCLKI, + output D_FFS_PLOL +); + parameter CH0_AUTO_CALIB_EN = "0b0"; + parameter CH0_AUTO_FACQ_EN = "0b0"; + parameter CH0_BAND_THRESHOLD = "0b000000"; + parameter CH0_CALIB_CK_MODE = "0b0"; + parameter CH0_CC_MATCH_1 = "0b0000000000"; + parameter CH0_CC_MATCH_2 = "0b0000000000"; + parameter CH0_CC_MATCH_3 = "0b0000000000"; + parameter CH0_CC_MATCH_4 = "0b0000000000"; + parameter CH0_CDR_CNT4SEL = "0b00"; + parameter CH0_CDR_CNT8SEL = "0b00"; + parameter CH0_CTC_BYPASS = "0b0"; + parameter CH0_DCOATDCFG = "0b00"; + parameter CH0_DCOATDDLY = "0b00"; + parameter CH0_DCOBYPSATD = "0b0"; + parameter CH0_DCOCALDIV = "0b000"; + parameter CH0_DCOCTLGI = "0b000"; + parameter CH0_DCODISBDAVOID = "0b0"; + parameter CH0_DCOFLTDAC = "0b00"; + parameter CH0_DCOFTNRG = "0b000"; + parameter CH0_DCOIOSTUNE = "0b000"; + parameter CH0_DCOITUNE = "0b00"; + parameter CH0_DCOITUNE4LSB = "0b000"; + parameter CH0_DCOIUPDNX2 = "0b0"; + parameter CH0_DCONUOFLSB = "0b000"; + parameter CH0_DCOSCALEI = "0b00"; + parameter CH0_DCOSTARTVAL = "0b000"; + parameter CH0_DCOSTEP = "0b00"; + parameter CH0_DEC_BYPASS = "0b0"; + parameter CH0_ENABLE_CG_ALIGN = "0b0"; + parameter CH0_ENC_BYPASS = "0b0"; + parameter CH0_FF_RX_F_CLK_DIS = "0b0"; + parameter CH0_FF_RX_H_CLK_EN = "0b0"; + parameter CH0_FF_TX_F_CLK_DIS = "0b0"; + parameter CH0_FF_TX_H_CLK_EN = "0b0"; + parameter CH0_GE_AN_ENABLE = "0b0"; + parameter CH0_INVERT_RX = "0b0"; + parameter CH0_INVERT_TX = "0b0"; + parameter CH0_LDR_CORE2TX_SEL = "0b0"; + parameter CH0_LDR_RX2CORE_SEL = "0b0"; + parameter CH0_LEQ_OFFSET_SEL = "0b0"; + parameter CH0_LEQ_OFFSET_TRIM = "0b000"; + parameter CH0_LSM_DISABLE = "0b0"; + parameter CH0_MATCH_2_ENABLE = "0b0"; + parameter CH0_MATCH_4_ENABLE = "0b0"; + parameter CH0_MIN_IPG_CNT = "0b00"; + parameter CH0_PCIE_EI_EN = "0b0"; + parameter CH0_PCIE_MODE = "0b0"; + parameter CH0_PCS_DET_TIME_SEL = "0b00"; + parameter CH0_PDEN_SEL = "0b0"; + parameter CH0_PRBS_ENABLE = "0b0"; + parameter CH0_PRBS_LOCK = "0b0"; + parameter CH0_PRBS_SELECTION = "0b0"; + parameter CH0_RATE_MODE_RX = "0b0"; + parameter CH0_RATE_MODE_TX = "0b0"; + parameter CH0_RCV_DCC_EN = "0b0"; + parameter CH0_REG_BAND_OFFSET = "0b0000"; + parameter CH0_REG_BAND_SEL = "0b000000"; + parameter CH0_REG_IDAC_EN = "0b0"; + parameter CH0_REG_IDAC_SEL = "0b0000000000"; + parameter CH0_REQ_EN = "0b0"; + parameter CH0_REQ_LVL_SET = "0b00"; + parameter CH0_RIO_MODE = "0b0"; + parameter CH0_RLOS_SEL = "0b0"; + parameter CH0_RPWDNB = "0b0"; + parameter CH0_RTERM_RX = "0b00000"; + parameter CH0_RTERM_TX = "0b00000"; + parameter CH0_RXIN_CM = "0b00"; + parameter CH0_RXTERM_CM = "0b00"; + parameter CH0_RX_DCO_CK_DIV = "0b000"; + parameter CH0_RX_DIV11_SEL = "0b0"; + parameter CH0_RX_GEAR_BYPASS = "0b0"; + parameter CH0_RX_GEAR_MODE = "0b0"; + parameter CH0_RX_LOS_CEQ = "0b00"; + parameter CH0_RX_LOS_EN = "0b0"; + parameter CH0_RX_LOS_HYST_EN = "0b0"; + parameter CH0_RX_LOS_LVL = "0b000"; + parameter CH0_RX_RATE_SEL = "0b0000"; + parameter CH0_RX_SB_BYPASS = "0b0"; + parameter CH0_SB_BYPASS = "0b0"; + parameter CH0_SEL_SD_RX_CLK = "0b0"; + parameter CH0_TDRV_DAT_SEL = "0b00"; + parameter CH0_TDRV_POST_EN = "0b0"; + parameter CH0_TDRV_PRE_EN = "0b0"; + parameter CH0_TDRV_SLICE0_CUR = "0b000"; + parameter CH0_TDRV_SLICE0_SEL = "0b00"; + parameter CH0_TDRV_SLICE1_CUR = "0b000"; + parameter CH0_TDRV_SLICE1_SEL = "0b00"; + parameter CH0_TDRV_SLICE2_CUR = "0b00"; + parameter CH0_TDRV_SLICE2_SEL = "0b00"; + parameter CH0_TDRV_SLICE3_CUR = "0b00"; + parameter CH0_TDRV_SLICE3_SEL = "0b00"; + parameter CH0_TDRV_SLICE4_CUR = "0b00"; + parameter CH0_TDRV_SLICE4_SEL = "0b00"; + parameter CH0_TDRV_SLICE5_CUR = "0b00"; + parameter CH0_TDRV_SLICE5_SEL = "0b00"; + parameter CH0_TPWDNB = "0b0"; + parameter CH0_TX_CM_SEL = "0b00"; + parameter CH0_TX_DIV11_SEL = "0b0"; + parameter CH0_TX_GEAR_BYPASS = "0b0"; + parameter CH0_TX_GEAR_MODE = "0b0"; + parameter CH0_TX_POST_SIGN = "0b0"; + parameter CH0_TX_PRE_SIGN = "0b0"; + parameter CH0_UC_MODE = "0b0"; + parameter CH0_UDF_COMMA_A = "0b0000000000"; + parameter CH0_UDF_COMMA_B = "0b0000000000"; + parameter CH0_UDF_COMMA_MASK = "0b0000000000"; + parameter CH0_WA_BYPASS = "0b0"; + parameter CH0_WA_MODE = "0b0"; + parameter CH1_AUTO_CALIB_EN = "0b0"; + parameter CH1_AUTO_FACQ_EN = "0b0"; + parameter CH1_BAND_THRESHOLD = "0b000000"; + parameter CH1_CALIB_CK_MODE = "0b0"; + parameter CH1_CC_MATCH_1 = "0b0000000000"; + parameter CH1_CC_MATCH_2 = "0b0000000000"; + parameter CH1_CC_MATCH_3 = "0b0000000000"; + parameter CH1_CC_MATCH_4 = "0b0000000000"; + parameter CH1_CDR_CNT4SEL = "0b00"; + parameter CH1_CDR_CNT8SEL = "0b00"; + parameter CH1_CTC_BYPASS = "0b0"; + parameter CH1_DCOATDCFG = "0b00"; + parameter CH1_DCOATDDLY = "0b00"; + parameter CH1_DCOBYPSATD = "0b0"; + parameter CH1_DCOCALDIV = "0b000"; + parameter CH1_DCOCTLGI = "0b000"; + parameter CH1_DCODISBDAVOID = "0b0"; + parameter CH1_DCOFLTDAC = "0b00"; + parameter CH1_DCOFTNRG = "0b000"; + parameter CH1_DCOIOSTUNE = "0b000"; + parameter CH1_DCOITUNE = "0b00"; + parameter CH1_DCOITUNE4LSB = "0b000"; + parameter CH1_DCOIUPDNX2 = "0b0"; + parameter CH1_DCONUOFLSB = "0b000"; + parameter CH1_DCOSCALEI = "0b00"; + parameter CH1_DCOSTARTVAL = "0b000"; + parameter CH1_DCOSTEP = "0b00"; + parameter CH1_DEC_BYPASS = "0b0"; + parameter CH1_ENABLE_CG_ALIGN = "0b0"; + parameter CH1_ENC_BYPASS = "0b0"; + parameter CH1_FF_RX_F_CLK_DIS = "0b0"; + parameter CH1_FF_RX_H_CLK_EN = "0b0"; + parameter CH1_FF_TX_F_CLK_DIS = "0b0"; + parameter CH1_FF_TX_H_CLK_EN = "0b0"; + parameter CH1_GE_AN_ENABLE = "0b0"; + parameter CH1_INVERT_RX = "0b0"; + parameter CH1_INVERT_TX = "0b0"; + parameter CH1_LDR_CORE2TX_SEL = "0b0"; + parameter CH1_LDR_RX2CORE_SEL = "0b0"; + parameter CH1_LEQ_OFFSET_SEL = "0b0"; + parameter CH1_LEQ_OFFSET_TRIM = "0b000"; + parameter CH1_LSM_DISABLE = "0b0"; + parameter CH1_MATCH_2_ENABLE = "0b0"; + parameter CH1_MATCH_4_ENABLE = "0b0"; + parameter CH1_MIN_IPG_CNT = "0b00"; + parameter CH1_PCIE_EI_EN = "0b0"; + parameter CH1_PCIE_MODE = "0b0"; + parameter CH1_PCS_DET_TIME_SEL = "0b00"; + parameter CH1_PDEN_SEL = "0b0"; + parameter CH1_PRBS_ENABLE = "0b0"; + parameter CH1_PRBS_LOCK = "0b0"; + parameter CH1_PRBS_SELECTION = "0b0"; + parameter CH1_RATE_MODE_RX = "0b0"; + parameter CH1_RATE_MODE_TX = "0b0"; + parameter CH1_RCV_DCC_EN = "0b0"; + parameter CH1_REG_BAND_OFFSET = "0b0000"; + parameter CH1_REG_BAND_SEL = "0b000000"; + parameter CH1_REG_IDAC_EN = "0b0"; + parameter CH1_REG_IDAC_SEL = "0b0000000000"; + parameter CH1_REQ_EN = "0b0"; + parameter CH1_REQ_LVL_SET = "0b00"; + parameter CH1_RIO_MODE = "0b0"; + parameter CH1_RLOS_SEL = "0b0"; + parameter CH1_RPWDNB = "0b0"; + parameter CH1_RTERM_RX = "0b00000"; + parameter CH1_RTERM_TX = "0b00000"; + parameter CH1_RXIN_CM = "0b00"; + parameter CH1_RXTERM_CM = "0b00"; + parameter CH1_RX_DCO_CK_DIV = "0b000"; + parameter CH1_RX_DIV11_SEL = "0b0"; + parameter CH1_RX_GEAR_BYPASS = "0b0"; + parameter CH1_RX_GEAR_MODE = "0b0"; + parameter CH1_RX_LOS_CEQ = "0b00"; + parameter CH1_RX_LOS_EN = "0b0"; + parameter CH1_RX_LOS_HYST_EN = "0b0"; + parameter CH1_RX_LOS_LVL = "0b000"; + parameter CH1_RX_RATE_SEL = "0b0000"; + parameter CH1_RX_SB_BYPASS = "0b0"; + parameter CH1_SB_BYPASS = "0b0"; + parameter CH1_SEL_SD_RX_CLK = "0b0"; + parameter CH1_TDRV_DAT_SEL = "0b00"; + parameter CH1_TDRV_POST_EN = "0b0"; + parameter CH1_TDRV_PRE_EN = "0b0"; + parameter CH1_TDRV_SLICE0_CUR = "0b000"; + parameter CH1_TDRV_SLICE0_SEL = "0b00"; + parameter CH1_TDRV_SLICE1_CUR = "0b000"; + parameter CH1_TDRV_SLICE1_SEL = "0b00"; + parameter CH1_TDRV_SLICE2_CUR = "0b00"; + parameter CH1_TDRV_SLICE2_SEL = "0b00"; + parameter CH1_TDRV_SLICE3_CUR = "0b00"; + parameter CH1_TDRV_SLICE3_SEL = "0b00"; + parameter CH1_TDRV_SLICE4_CUR = "0b00"; + parameter CH1_TDRV_SLICE4_SEL = "0b00"; + parameter CH1_TDRV_SLICE5_CUR = "0b00"; + parameter CH1_TDRV_SLICE5_SEL = "0b00"; + parameter CH1_TPWDNB = "0b0"; + parameter CH1_TX_CM_SEL = "0b00"; + parameter CH1_TX_DIV11_SEL = "0b0"; + parameter CH1_TX_GEAR_BYPASS = "0b0"; + parameter CH1_TX_GEAR_MODE = "0b0"; + parameter CH1_TX_POST_SIGN = "0b0"; + parameter CH1_TX_PRE_SIGN = "0b0"; + parameter CH1_UC_MODE = "0b0"; + parameter CH1_UDF_COMMA_A = "0b0000000000"; + parameter CH1_UDF_COMMA_B = "0b0000000000"; + parameter CH1_UDF_COMMA_MASK = "0b0000000000"; + parameter CH1_WA_BYPASS = "0b0"; + parameter CH1_WA_MODE = "0b0"; + parameter D_BITCLK_FROM_ND_EN = "0b0"; + parameter D_BITCLK_LOCAL_EN = "0b0"; + parameter D_BITCLK_ND_EN = "0b0"; + parameter D_BUS8BIT_SEL = "0b0"; + parameter D_CDR_LOL_SET = "0b00"; + parameter D_CMUSETBIASI = "0b00"; + parameter D_CMUSETI4CPP = "0b0000"; + parameter D_CMUSETI4CPZ = "0b0000"; + parameter D_CMUSETI4VCO = "0b00"; + parameter D_CMUSETICP4P = "0b00"; + parameter D_CMUSETICP4Z = "0b000"; + parameter D_CMUSETINITVCT = "0b00"; + parameter D_CMUSETISCL4VCO = "0b000"; + parameter D_CMUSETP1GM = "0b000"; + parameter D_CMUSETP2AGM = "0b000"; + parameter D_CMUSETZGM = "0b000"; + parameter D_DCO_CALIB_TIME_SEL = "0b00"; + parameter D_HIGH_MARK = "0b0000"; + parameter D_IB_PWDNB = "0b0"; + parameter D_ISETLOS = "0b00000000"; + parameter D_LOW_MARK = "0b0000"; + parameter D_MACROPDB = "0b0"; + parameter D_PD_ISET = "0b00"; + parameter D_PLL_LOL_SET = "0b00"; + parameter D_REFCK_MODE = "0b000"; + parameter D_REQ_ISET = "0b000"; + parameter D_RG_EN = "0b0"; + parameter D_RG_SET = "0b00"; + parameter D_SETICONST_AUX = "0b00"; + parameter D_SETICONST_CH = "0b00"; + parameter D_SETIRPOLY_AUX = "0b00"; + parameter D_SETIRPOLY_CH = "0b00"; + parameter D_SETPLLRC = "0b000000"; + parameter D_SYNC_LOCAL_EN = "0b0"; + parameter D_SYNC_ND_EN = "0b0"; + parameter D_TXPLL_PWDNB = "0b0"; + parameter D_TX_VCO_CK_DIV = "0b000"; + parameter D_XGE_MODE = "0b0"; + +// These parameters don't do anything but are +// needed for compatibility with Diamond + parameter D_TX_MAX_RATE = "2.5"; + parameter D_RX_MAX_RATE = "2.5"; + parameter CH0_TXAMPLITUDE = "0d1300"; + parameter CH1_TXAMPLITUDE = "0d1300"; + parameter CH0_PROTOCOL = "8B10B"; + parameter CH1_PROTOCOL = "8B10B"; + parameter CH0_CDR_MAX_RATE = "2.5"; + parameter CH1_CDR_MAX_RATE = "2.5"; + parameter CH0_TXDEPRE = "DISABLED"; + parameter CH1_TXDEPRE = "DISABLED"; + parameter CH0_TXDEPOST = "DISABLED"; + parameter CH1_TXDEPOST = "DISABLED"; +endmodule + +(* blackbox *) +module EXTREFB ( + input REFCLKP, REFCLKN, + output REFCLKO +); + parameter REFCK_PWDNB = "0b0"; + parameter REFCK_RTERM = "0b0"; + parameter REFCK_DCBIAS_EN = "0b0"; +endmodule + +(* blackbox *) +module PCSCLKDIV ( + input CLKI, RST, SEL2, SEL1, SEL0, + output CDIV1, CDIVX +); + parameter GSR = "DISABLED"; +endmodule + +// Note: this module is not marked keep as we want it swept away in synth (sim use only) +(* blackbox *) +module PUR ( + input PUR +); + parameter RST_PULSE = 1; +endmodule + +(* blackbox, keep *) +module GSR ( + input GSR +); +endmodule + +(* blackbox, keep *) +module SGSR ( + input GSR, CLK +); +endmodule + + +(* blackbox *) +module PDPW16KD ( + input DI35, DI34, DI33, DI32, DI31, DI30, DI29, DI28, DI27, DI26, DI25, DI24, DI23, DI22, DI21, DI20, DI19, DI18, + input DI17, DI16, DI15, DI14, DI13, DI12, DI11, DI10, DI9, DI8, DI7, DI6, DI5, DI4, DI3, DI2, DI1, DI0, + input ADW8, ADW7, ADW6, ADW5, ADW4, ADW3, ADW2, ADW1, ADW0, + input BE3, BE2, BE1, BE0, CEW, CLKW, CSW2, CSW1, CSW0, + input ADR13, ADR12, ADR11, ADR10, ADR9, ADR8, ADR7, ADR6, ADR5, ADR4, ADR3, ADR2, ADR1, ADR0, + input CER, OCER, CLKR, CSR2, CSR1, CSR0, RST, + output DO35, DO34, DO33, DO32, DO31, DO30, DO29, DO28, DO27, DO26, DO25, DO24, DO23, DO22, DO21, DO20, DO19, DO18, + output DO17, DO16, DO15, DO14, DO13, DO12, DO11, DO10, DO9, DO8, DO7, DO6, DO5, DO4, DO3, DO2, DO1, DO0 +); + parameter DATA_WIDTH_W = 36; + parameter DATA_WIDTH_R = 36; + parameter GSR = "ENABLED"; + + parameter REGMODE = "NOREG"; + + parameter RESETMODE = "SYNC"; + parameter ASYNC_RESET_RELEASE = "SYNC"; + + parameter CSDECODE_W = "0b000"; + parameter CSDECODE_R = "0b000"; + + parameter INITVAL_00 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INITVAL_01 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INITVAL_02 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INITVAL_03 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INITVAL_04 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INITVAL_05 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INITVAL_06 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INITVAL_07 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INITVAL_08 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INITVAL_09 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INITVAL_0A = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INITVAL_0B = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INITVAL_0C = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INITVAL_0D = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INITVAL_0E = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INITVAL_0F = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INITVAL_10 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INITVAL_11 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INITVAL_12 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INITVAL_13 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INITVAL_14 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INITVAL_15 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INITVAL_16 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INITVAL_17 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INITVAL_18 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INITVAL_19 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INITVAL_1A = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INITVAL_1B = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INITVAL_1C = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INITVAL_1D = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INITVAL_1E = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INITVAL_1F = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INITVAL_20 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INITVAL_21 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INITVAL_22 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INITVAL_23 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INITVAL_24 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INITVAL_25 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INITVAL_26 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INITVAL_27 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INITVAL_28 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INITVAL_29 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INITVAL_2A = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INITVAL_2B = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INITVAL_2C = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INITVAL_2D = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INITVAL_2E = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INITVAL_2F = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INITVAL_30 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INITVAL_31 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INITVAL_32 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INITVAL_33 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INITVAL_34 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INITVAL_35 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INITVAL_36 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INITVAL_37 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INITVAL_38 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INITVAL_39 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INITVAL_3A = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INITVAL_3B = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INITVAL_3C = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INITVAL_3D = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INITVAL_3E = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INITVAL_3F = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_DATA = "STATIC"; + parameter CLKWMUX = "CLKW"; + parameter CLKRMUX = "CLKR"; + +endmodule diff --git a/resources/netlist/resources/kernel/share/ecp5/cells_ff.vh b/resources/netlist/resources/kernel/share/ecp5/cells_ff.vh new file mode 100644 index 0000000..6b745f3 --- /dev/null +++ b/resources/netlist/resources/kernel/share/ecp5/cells_ff.vh @@ -0,0 +1,40 @@ +// Diamond flip-flops +module FD1P3AX(input D, SP, CK, output Q); parameter GSR = "ENABLED"; TRELLIS_FF #(.GSR(GSR), .CEMUX("CE"), .CLKMUX("CLK"), .LSRMUX("LSR"), .REGSET("RESET"), .SRMODE("ASYNC")) _TECHMAP_REPLACE_ (.CLK(CK), .LSR(|0), .CE(SP), .DI(D), .Q(Q)); endmodule +module FD1P3AY(input D, SP, CK, output Q); parameter GSR = "ENABLED"; TRELLIS_FF #(.GSR(GSR), .CEMUX("CE"), .CLKMUX("CLK"), .LSRMUX("LSR"), .REGSET("SET"), .SRMODE("ASYNC")) _TECHMAP_REPLACE_ (.CLK(CK), .LSR(|0), .CE(SP), .DI(D), .Q(Q)); endmodule +module FD1P3BX(input PD, D, SP, CK, output Q); parameter GSR = "ENABLED"; TRELLIS_FF #(.GSR(GSR), .CEMUX("CE"), .CLKMUX("CLK"), .LSRMUX("LSR"), .REGSET("SET"), .SRMODE("ASYNC")) _TECHMAP_REPLACE_ (.CLK(CK), .LSR(PD), .CE(SP), .DI(D), .Q(Q)); endmodule +module FD1P3DX(input CD, D, SP, CK, output Q); parameter GSR = "ENABLED"; TRELLIS_FF #(.GSR(GSR), .CEMUX("CE"), .CLKMUX("CLK"), .LSRMUX("LSR"), .REGSET("RESET"), .SRMODE("ASYNC")) _TECHMAP_REPLACE_ (.CLK(CK), .LSR(CD), .CE(SP), .DI(D), .Q(Q)); endmodule +module FD1P3IX(input CD, D, SP, CK, output Q); parameter GSR = "ENABLED"; TRELLIS_FF #(.GSR(GSR), .CEMUX("CE"), .CLKMUX("CLK"), .LSRMUX("LSR"), .REGSET("RESET"), .SRMODE("LSR_OVER_CE")) _TECHMAP_REPLACE_ (.CLK(CK), .LSR(CD), .CE(SP), .DI(D), .Q(Q)); endmodule +module FD1P3JX(input PD, D, SP, CK, output Q); parameter GSR = "ENABLED"; TRELLIS_FF #(.GSR(GSR), .CEMUX("CE"), .CLKMUX("CLK"), .LSRMUX("LSR"), .REGSET("SET"), .SRMODE("LSR_OVER_CE")) _TECHMAP_REPLACE_ (.CLK(CK), .LSR(PD), .CE(SP), .DI(D), .Q(Q)); endmodule +module FD1S3AX(input D, CK, output Q); parameter GSR = "ENABLED"; TRELLIS_FF #(.GSR(GSR), .CEMUX("1"), .CLKMUX("CLK"), .LSRMUX("LSR"), .REGSET("RESET"), .SRMODE("ASYNC")) _TECHMAP_REPLACE_ (.CLK(CK), .LSR(|0), .DI(D), .Q(Q)); endmodule +module FD1S3AY(input D, CK, output Q); parameter GSR = "ENABLED"; TRELLIS_FF #(.GSR(GSR), .CEMUX("1"), .CLKMUX("CLK"), .LSRMUX("LSR"), .REGSET("SET"), .SRMODE("ASYNC")) _TECHMAP_REPLACE_ (.CLK(CK), .LSR(|0), .DI(D), .Q(Q)); endmodule +module FD1S3BX(input PD, D, CK, output Q); parameter GSR = "ENABLED"; TRELLIS_FF #(.GSR(GSR), .CEMUX("1"), .CLKMUX("CLK"), .LSRMUX("LSR"), .REGSET("SET"), .SRMODE("ASYNC")) _TECHMAP_REPLACE_ (.CLK(CK), .LSR(PD), .DI(D), .Q(Q)); endmodule +module FD1S3DX(input CD, D, CK, output Q); parameter GSR = "ENABLED"; TRELLIS_FF #(.GSR(GSR), .CEMUX("1"), .CLKMUX("CLK"), .LSRMUX("LSR"), .REGSET("RESET"), .SRMODE("ASYNC")) _TECHMAP_REPLACE_ (.CLK(CK), .LSR(CD), .DI(D), .Q(Q)); endmodule +module FD1S3IX(input CD, D, CK, output Q); parameter GSR = "ENABLED"; TRELLIS_FF #(.GSR(GSR), .CEMUX("1"), .CLKMUX("CLK"), .LSRMUX("LSR"), .REGSET("RESET"), .SRMODE("LSR_OVER_CE")) _TECHMAP_REPLACE_ (.CLK(CK), .LSR(CD), .DI(D), .Q(Q)); endmodule +module FD1S3JX(input PD, D, CK, output Q); parameter GSR = "ENABLED"; TRELLIS_FF #(.GSR(GSR), .CEMUX("1"), .CLKMUX("CLK"), .LSRMUX("LSR"), .REGSET("SET"), .SRMODE("LSR_OVER_CE")) _TECHMAP_REPLACE_ (.CLK(CK), .LSR(PD), .DI(D), .Q(Q)); endmodule + +// TODO: Diamond latches +// module FL1P3AY(); endmodule +// module FL1P3AZ(); endmodule +// module FL1P3BX(); endmodule +// module FL1P3DX(); endmodule +// module FL1P3IY(); endmodule +// module FL1P3JY(); endmodule +// module FL1S3AX(); endmodule +// module FL1S3AY(); endmodule + +// Diamond I/O registers +module IFS1P3BX(input PD, D, SP, SCLK, output Q); parameter GSR = "ENABLED"; (* syn_useioff, ioff_dir="input" *) TRELLIS_FF #(.GSR(GSR), .CEMUX("CE"), .CLKMUX("CLK"), .LSRMUX("LSR"), .REGSET("SET"), .SRMODE("ASYNC")) _TECHMAP_REPLACE_ (.CLK(SCLK), .LSR(PD), .CE(SP), .DI(D), .Q(Q)); endmodule +module IFS1P3DX(input CD, D, SP, SCLK, output Q); parameter GSR = "ENABLED"; (* syn_useioff, ioff_dir="input" *) TRELLIS_FF #(.GSR(GSR), .CEMUX("CE"), .CLKMUX("CLK"), .LSRMUX("LSR"), .REGSET("RESET"), .SRMODE("ASYNC")) _TECHMAP_REPLACE_ (.CLK(SCLK), .LSR(CD), .CE(SP), .DI(D), .Q(Q)); endmodule +module IFS1P3IX(input CD, D, SP, SCLK, output Q); parameter GSR = "ENABLED"; (* syn_useioff, ioff_dir="input" *) TRELLIS_FF #(.GSR(GSR), .CEMUX("CE"), .CLKMUX("CLK"), .LSRMUX("LSR"), .REGSET("RESET"), .SRMODE("LSR_OVER_CE")) _TECHMAP_REPLACE_ (.CLK(SCLK), .LSR(CD), .CE(SP), .DI(D), .Q(Q)); endmodule +module IFS1P3JX(input PD, D, SP, SCLK, output Q); parameter GSR = "ENABLED"; (* syn_useioff, ioff_dir="input" *) TRELLIS_FF #(.GSR(GSR), .CEMUX("CE"), .CLKMUX("CLK"), .LSRMUX("LSR"), .REGSET("SET"), .SRMODE("LSR_OVER_CE")) _TECHMAP_REPLACE_ (.CLK(SCLK), .LSR(PD), .CE(SP), .DI(D), .Q(Q)); endmodule + +module OFS1P3BX(input PD, D, SP, SCLK, output Q); parameter GSR = "ENABLED"; (* syn_useioff, ioff_dir="output" *) TRELLIS_FF #(.GSR(GSR), .CEMUX("CE"), .CLKMUX("CLK"), .LSRMUX("LSR"), .REGSET("SET"), .SRMODE("ASYNC")) _TECHMAP_REPLACE_ (.CLK(SCLK), .LSR(PD), .CE(SP), .DI(D), .Q(Q)); endmodule +module OFS1P3DX(input CD, D, SP, SCLK, output Q); parameter GSR = "ENABLED"; (* syn_useioff, ioff_dir="output" *) TRELLIS_FF #(.GSR(GSR), .CEMUX("CE"), .CLKMUX("CLK"), .LSRMUX("LSR"), .REGSET("RESET"), .SRMODE("ASYNC")) _TECHMAP_REPLACE_ (.CLK(SCLK), .LSR(CD), .CE(SP), .DI(D), .Q(Q)); endmodule +module OFS1P3IX(input CD, D, SP, SCLK, output Q); parameter GSR = "ENABLED"; (* syn_useioff, ioff_dir="output" *) TRELLIS_FF #(.GSR(GSR), .CEMUX("CE"), .CLKMUX("CLK"), .LSRMUX("LSR"), .REGSET("RESET"), .SRMODE("LSR_OVER_CE")) _TECHMAP_REPLACE_ (.CLK(SCLK), .LSR(CD), .CE(SP), .DI(D), .Q(Q)); endmodule +module OFS1P3JX(input PD, D, SP, SCLK, output Q); parameter GSR = "ENABLED"; (* syn_useioff, ioff_dir="output" *) TRELLIS_FF #(.GSR(GSR), .CEMUX("CE"), .CLKMUX("CLK"), .LSRMUX("LSR"), .REGSET("SET"), .SRMODE("LSR_OVER_CE")) _TECHMAP_REPLACE_ (.CLK(SCLK), .LSR(PD), .CE(SP), .DI(D), .Q(Q)); endmodule + +// TODO: Diamond I/O latches +// module IFS1S1B(input PD, D, SCLK, output Q); endmodule +// module IFS1S1D(input CD, D, SCLK, output Q); endmodule +// module IFS1S1I(input PD, D, SCLK, output Q); endmodule +// module IFS1S1J(input CD, D, SCLK, output Q); endmodule diff --git a/resources/netlist/resources/kernel/share/ecp5/cells_io.vh b/resources/netlist/resources/kernel/share/ecp5/cells_io.vh new file mode 100644 index 0000000..02e66e8 --- /dev/null +++ b/resources/netlist/resources/kernel/share/ecp5/cells_io.vh @@ -0,0 +1,14 @@ +// Diamond I/O buffers +module IB (input I, output O); (* PULLMODE="NONE" *) TRELLIS_IO #(.DIR("INPUT")) _TECHMAP_REPLACE_ (.B(I), .O(O)); endmodule +module IBPU (input I, output O); (* PULLMODE="UP" *) TRELLIS_IO #(.DIR("INPUT")) _TECHMAP_REPLACE_ (.B(I), .O(O)); endmodule +module IBPD (input I, output O); (* PULLMODE="DOWN" *) TRELLIS_IO #(.DIR("INPUT")) _TECHMAP_REPLACE_ (.B(I), .O(O)); endmodule +module OB (input I, output O); (* PULLMODE="NONE" *) TRELLIS_IO #(.DIR("OUTPUT")) _TECHMAP_REPLACE_ (.B(O), .I(I)); endmodule +module OBZ (input I, T, output O); (* PULLMODE="NONE" *) TRELLIS_IO #(.DIR("OUTPUT")) _TECHMAP_REPLACE_ (.B(O), .I(I), .T(T)); endmodule +module OBZPU(input I, T, output O); (* PULLMODE="UP" *) TRELLIS_IO #(.DIR("OUTPUT")) _TECHMAP_REPLACE_ (.B(O), .I(I), .T(T)); endmodule +module OBZPD(input I, T, output O); (* PULLMODE="DOWN" *) TRELLIS_IO #(.DIR("OUTPUT")) _TECHMAP_REPLACE_ (.B(O), .I(I), .T(T)); endmodule +module OBCO (input I, output OT, OC); OLVDS olvds (.A(I), .Z(OT), .ZN(OC)); endmodule +module BB (input I, T, output O, inout B); (* PULLMODE="NONE" *) TRELLIS_IO #(.DIR("BIDIR")) _TECHMAP_REPLACE_ (.B(B), .I(I), .O(O), .T(T)); endmodule +module BBPU (input I, T, output O, inout B); (* PULLMODE="UP" *) TRELLIS_IO #(.DIR("BIDIR")) _TECHMAP_REPLACE_ (.B(B), .I(I), .O(O), .T(T)); endmodule +module BBPD (input I, T, output O, inout B); (* PULLMODE="DOWN" *) TRELLIS_IO #(.DIR("BIDIR")) _TECHMAP_REPLACE_ (.B(B), .I(I), .O(O), .T(T)); endmodule +module ILVDS(input A, AN, output Z ); TRELLIS_IO #(.DIR("INPUT")) _TECHMAP_REPLACE_ (.B(A), .O(Z)); endmodule +module OLVDS(input A, output Z, ZN); TRELLIS_IO #(.DIR("OUTPUT")) _TECHMAP_REPLACE_ (.B(Z), .I(A)); endmodule diff --git a/resources/netlist/resources/kernel/share/ecp5/cells_map.v b/resources/netlist/resources/kernel/share/ecp5/cells_map.v new file mode 100644 index 0000000..4944ece --- /dev/null +++ b/resources/netlist/resources/kernel/share/ecp5/cells_map.v @@ -0,0 +1,191 @@ +module \$_DFF_N_ (input D, C, output Q); + parameter _TECHMAP_WIREINIT_Q_ = 1'bx; + generate if (_TECHMAP_WIREINIT_Q_ === 1'b1) + TRELLIS_FF #(.GSR("AUTO"), .CEMUX("1"), .CLKMUX("INV"), .LSRMUX("LSR"), .REGSET("SET")) _TECHMAP_REPLACE_ (.CLK(C), .LSR(1'b0), .DI(D), .Q(Q)); + else + TRELLIS_FF #(.GSR("AUTO"), .CEMUX("1"), .CLKMUX("INV"), .LSRMUX("LSR"), .REGSET("RESET")) _TECHMAP_REPLACE_ (.CLK(C), .LSR(1'b0), .DI(D), .Q(Q)); + endgenerate + wire _TECHMAP_REMOVEINIT_Q_ = 1'b1; +endmodule + +module \$_DFF_P_ (input D, C, output Q); + parameter _TECHMAP_WIREINIT_Q_ = 1'bx; + generate if (_TECHMAP_WIREINIT_Q_ === 1'b1) + TRELLIS_FF #(.GSR("AUTO"), .CEMUX("1"), .CLKMUX("CLK"), .LSRMUX("LSR"), .REGSET("SET")) _TECHMAP_REPLACE_ (.CLK(C), .LSR(1'b0), .DI(D), .Q(Q)); + else + TRELLIS_FF #(.GSR("AUTO"), .CEMUX("1"), .CLKMUX("CLK"), .LSRMUX("LSR"), .REGSET("RESET")) _TECHMAP_REPLACE_ (.CLK(C), .LSR(1'b0), .DI(D), .Q(Q)); + endgenerate + wire _TECHMAP_REMOVEINIT_Q_ = 1'b1; +endmodule + +module \$_DFFE_NN_ (input D, C, E, output Q); + parameter _TECHMAP_WIREINIT_Q_ = 1'bx; + generate if (_TECHMAP_WIREINIT_Q_ === 1'b1) + TRELLIS_FF #(.GSR("AUTO"), .CEMUX("INV"), .CLKMUX("INV"), .LSRMUX("LSR"), .REGSET("SET")) _TECHMAP_REPLACE_ (.CLK(C), .CE(E), .LSR(1'b0), .DI(D), .Q(Q)); + else + TRELLIS_FF #(.GSR("AUTO"), .CEMUX("INV"), .CLKMUX("INV"), .LSRMUX("LSR"), .REGSET("RESET")) _TECHMAP_REPLACE_ (.CLK(C), .CE(E), .LSR(1'b0), .DI(D), .Q(Q)); + endgenerate + wire _TECHMAP_REMOVEINIT_Q_ = 1'b1; +endmodule + +module \$_DFFE_PN_ (input D, C, E, output Q); + parameter _TECHMAP_WIREINIT_Q_ = 1'bx; + generate if (_TECHMAP_WIREINIT_Q_ === 1'b1) + TRELLIS_FF #(.GSR("AUTO"), .CEMUX("INV"), .CLKMUX("CLK"), .LSRMUX("LSR"), .REGSET("SET")) _TECHMAP_REPLACE_ (.CLK(C), .CE(E), .LSR(1'b0), .DI(D), .Q(Q)); + else + TRELLIS_FF #(.GSR("AUTO"), .CEMUX("INV"), .CLKMUX("CLK"), .LSRMUX("LSR"), .REGSET("RESET")) _TECHMAP_REPLACE_ (.CLK(C), .CE(E), .LSR(1'b0), .DI(D), .Q(Q)); + endgenerate + wire _TECHMAP_REMOVEINIT_Q_ = 1'b1; +endmodule + +module \$_DFFE_NP_ (input D, C, E, output Q); + parameter _TECHMAP_WIREINIT_Q_ = 1'bx; + generate if (_TECHMAP_WIREINIT_Q_ === 1'b1) + TRELLIS_FF #(.GSR("AUTO"), .CEMUX("CE"), .CLKMUX("INV"), .LSRMUX("LSR"), .REGSET("SET")) _TECHMAP_REPLACE_ (.CLK(C), .CE(E), .LSR(1'b0), .DI(D), .Q(Q)); + else + TRELLIS_FF #(.GSR("AUTO"), .CEMUX("CE"), .CLKMUX("INV"), .LSRMUX("LSR"), .REGSET("RESET")) _TECHMAP_REPLACE_ (.CLK(C), .CE(E), .LSR(1'b0), .DI(D), .Q(Q)); + endgenerate + wire _TECHMAP_REMOVEINIT_Q_ = 1'b1; +endmodule + +module \$_DFFE_PP_ (input D, C, E, output Q); + parameter _TECHMAP_WIREINIT_Q_ = 1'bx; + generate if (_TECHMAP_WIREINIT_Q_ === 1'b1) + TRELLIS_FF #(.GSR("AUTO"), .CEMUX("CE"), .CLKMUX("CLK"), .LSRMUX("LSR"), .REGSET("SET")) _TECHMAP_REPLACE_ (.CLK(C), .CE(E), .LSR(1'b0), .DI(D), .Q(Q)); + else + TRELLIS_FF #(.GSR("AUTO"), .CEMUX("CE"), .CLKMUX("CLK"), .LSRMUX("LSR"), .REGSET("RESET")) _TECHMAP_REPLACE_ (.CLK(C), .CE(E), .LSR(1'b0), .DI(D), .Q(Q)); + endgenerate + wire _TECHMAP_REMOVEINIT_Q_ = 1'b1; +endmodule + +module \$_DFF_NP0_ (input D, C, R, output Q); TRELLIS_FF #(.GSR("AUTO"), .CEMUX("1"), .CLKMUX("INV"), .LSRMUX("LSR"), .REGSET("RESET"), .SRMODE("ASYNC")) _TECHMAP_REPLACE_ (.CLK(C), .LSR(R), .DI(D), .Q(Q)); wire _TECHMAP_REMOVEINIT_Q_ = 1'b1; endmodule +module \$_DFF_NP1_ (input D, C, R, output Q); TRELLIS_FF #(.GSR("AUTO"), .CEMUX("1"), .CLKMUX("INV"), .LSRMUX("LSR"), .REGSET("SET"), .SRMODE("ASYNC")) _TECHMAP_REPLACE_ (.CLK(C), .LSR(R), .DI(D), .Q(Q)); wire _TECHMAP_REMOVEINIT_Q_ = 1'b1; endmodule +module \$_DFF_PP0_ (input D, C, R, output Q); TRELLIS_FF #(.GSR("AUTO"), .CEMUX("1"), .CLKMUX("CLK"), .LSRMUX("LSR"), .REGSET("RESET"), .SRMODE("ASYNC")) _TECHMAP_REPLACE_ (.CLK(C), .LSR(R), .DI(D), .Q(Q)); wire _TECHMAP_REMOVEINIT_Q_ = 1'b1; endmodule +module \$_DFF_PP1_ (input D, C, R, output Q); TRELLIS_FF #(.GSR("AUTO"), .CEMUX("1"), .CLKMUX("CLK"), .LSRMUX("LSR"), .REGSET("SET"), .SRMODE("ASYNC")) _TECHMAP_REPLACE_ (.CLK(C), .LSR(R), .DI(D), .Q(Q)); wire _TECHMAP_REMOVEINIT_Q_ = 1'b1; endmodule + +module \$_SDFF_NP0_ (input D, C, R, output Q); TRELLIS_FF #(.GSR("AUTO"), .CEMUX("1"), .CLKMUX("INV"), .LSRMUX("LSR"), .REGSET("RESET"), .SRMODE("LSR_OVER_CE")) _TECHMAP_REPLACE_ (.CLK(C), .LSR(R), .DI(D), .Q(Q)); wire _TECHMAP_REMOVEINIT_Q_ = 1'b1; endmodule +module \$_SDFF_NP1_ (input D, C, R, output Q); TRELLIS_FF #(.GSR("AUTO"), .CEMUX("1"), .CLKMUX("INV"), .LSRMUX("LSR"), .REGSET("SET"), .SRMODE("LSR_OVER_CE")) _TECHMAP_REPLACE_ (.CLK(C), .LSR(R), .DI(D), .Q(Q)); wire _TECHMAP_REMOVEINIT_Q_ = 1'b1; endmodule +module \$_SDFF_PP0_ (input D, C, R, output Q); TRELLIS_FF #(.GSR("AUTO"), .CEMUX("1"), .CLKMUX("CLK"), .LSRMUX("LSR"), .REGSET("RESET"), .SRMODE("LSR_OVER_CE")) _TECHMAP_REPLACE_ (.CLK(C), .LSR(R), .DI(D), .Q(Q)); wire _TECHMAP_REMOVEINIT_Q_ = 1'b1; endmodule +module \$_SDFF_PP1_ (input D, C, R, output Q); TRELLIS_FF #(.GSR("AUTO"), .CEMUX("1"), .CLKMUX("CLK"), .LSRMUX("LSR"), .REGSET("SET"), .SRMODE("LSR_OVER_CE")) _TECHMAP_REPLACE_ (.CLK(C), .LSR(R), .DI(D), .Q(Q)); wire _TECHMAP_REMOVEINIT_Q_ = 1'b1; endmodule + +module \$_DFFE_NP0P_ (input D, C, E, R, output Q); TRELLIS_FF #(.GSR("AUTO"), .CEMUX("CE"), .CLKMUX("INV"), .LSRMUX("LSR"), .REGSET("RESET"), .SRMODE("ASYNC")) _TECHMAP_REPLACE_ (.CLK(C), .CE(E), .LSR(R), .DI(D), .Q(Q)); wire _TECHMAP_REMOVEINIT_Q_ = 1'b1; endmodule +module \$_DFFE_NP1P_ (input D, C, E, R, output Q); TRELLIS_FF #(.GSR("AUTO"), .CEMUX("CE"), .CLKMUX("INV"), .LSRMUX("LSR"), .REGSET("SET"), .SRMODE("ASYNC")) _TECHMAP_REPLACE_ (.CLK(C), .CE(E), .LSR(R), .DI(D), .Q(Q)); wire _TECHMAP_REMOVEINIT_Q_ = 1'b1; endmodule +module \$_DFFE_PP0P_ (input D, C, E, R, output Q); TRELLIS_FF #(.GSR("AUTO"), .CEMUX("CE"), .CLKMUX("CLK"), .LSRMUX("LSR"), .REGSET("RESET"), .SRMODE("ASYNC")) _TECHMAP_REPLACE_ (.CLK(C), .CE(E), .LSR(R), .DI(D), .Q(Q)); wire _TECHMAP_REMOVEINIT_Q_ = 1'b1; endmodule +module \$_DFFE_PP1P_ (input D, C, E, R, output Q); TRELLIS_FF #(.GSR("AUTO"), .CEMUX("CE"), .CLKMUX("CLK"), .LSRMUX("LSR"), .REGSET("SET"), .SRMODE("ASYNC")) _TECHMAP_REPLACE_ (.CLK(C), .CE(E), .LSR(R), .DI(D), .Q(Q)); wire _TECHMAP_REMOVEINIT_Q_ = 1'b1; endmodule + +module \$_DFFE_NP0N_ (input D, C, E, R, output Q); TRELLIS_FF #(.GSR("AUTO"), .CEMUX("INV"), .CLKMUX("INV"), .LSRMUX("LSR"), .REGSET("RESET"), .SRMODE("ASYNC")) _TECHMAP_REPLACE_ (.CLK(C), .CE(E), .LSR(R), .DI(D), .Q(Q)); wire _TECHMAP_REMOVEINIT_Q_ = 1'b1; endmodule +module \$_DFFE_NP1N_ (input D, C, E, R, output Q); TRELLIS_FF #(.GSR("AUTO"), .CEMUX("INV"), .CLKMUX("INV"), .LSRMUX("LSR"), .REGSET("SET"), .SRMODE("ASYNC")) _TECHMAP_REPLACE_ (.CLK(C), .CE(E), .LSR(R), .DI(D), .Q(Q)); wire _TECHMAP_REMOVEINIT_Q_ = 1'b1; endmodule +module \$_DFFE_PP0N_ (input D, C, E, R, output Q); TRELLIS_FF #(.GSR("AUTO"), .CEMUX("INV"), .CLKMUX("CLK"), .LSRMUX("LSR"), .REGSET("RESET"), .SRMODE("ASYNC")) _TECHMAP_REPLACE_ (.CLK(C), .CE(E), .LSR(R), .DI(D), .Q(Q)); wire _TECHMAP_REMOVEINIT_Q_ = 1'b1; endmodule +module \$_DFFE_PP1N_ (input D, C, E, R, output Q); TRELLIS_FF #(.GSR("AUTO"), .CEMUX("INV"), .CLKMUX("CLK"), .LSRMUX("LSR"), .REGSET("SET"), .SRMODE("ASYNC")) _TECHMAP_REPLACE_ (.CLK(C), .CE(E), .LSR(R), .DI(D), .Q(Q)); wire _TECHMAP_REMOVEINIT_Q_ = 1'b1; endmodule + +module \$_SDFFE_NP0P_ (input D, C, E, R, output Q); TRELLIS_FF #(.GSR("AUTO"), .CEMUX("CE"), .CLKMUX("INV"), .LSRMUX("LSR"), .REGSET("RESET"), .SRMODE("LSR_OVER_CE")) _TECHMAP_REPLACE_ (.CLK(C), .CE(E), .LSR(R), .DI(D), .Q(Q)); wire _TECHMAP_REMOVEINIT_Q_ = 1'b1; endmodule +module \$_SDFFE_NP1P_ (input D, C, E, R, output Q); TRELLIS_FF #(.GSR("AUTO"), .CEMUX("CE"), .CLKMUX("INV"), .LSRMUX("LSR"), .REGSET("SET"), .SRMODE("LSR_OVER_CE")) _TECHMAP_REPLACE_ (.CLK(C), .CE(E), .LSR(R), .DI(D), .Q(Q)); wire _TECHMAP_REMOVEINIT_Q_ = 1'b1; endmodule +module \$_SDFFE_PP0P_ (input D, C, E, R, output Q); TRELLIS_FF #(.GSR("AUTO"), .CEMUX("CE"), .CLKMUX("CLK"), .LSRMUX("LSR"), .REGSET("RESET"), .SRMODE("LSR_OVER_CE")) _TECHMAP_REPLACE_ (.CLK(C), .CE(E), .LSR(R), .DI(D), .Q(Q)); wire _TECHMAP_REMOVEINIT_Q_ = 1'b1; endmodule +module \$_SDFFE_PP1P_ (input D, C, E, R, output Q); TRELLIS_FF #(.GSR("AUTO"), .CEMUX("CE"), .CLKMUX("CLK"), .LSRMUX("LSR"), .REGSET("SET"), .SRMODE("LSR_OVER_CE")) _TECHMAP_REPLACE_ (.CLK(C), .CE(E), .LSR(R), .DI(D), .Q(Q)); wire _TECHMAP_REMOVEINIT_Q_ = 1'b1; endmodule + +module \$_SDFFE_NP0N_ (input D, C, E, R, output Q); TRELLIS_FF #(.GSR("AUTO"), .CEMUX("INV"), .CLKMUX("INV"), .LSRMUX("LSR"), .REGSET("RESET"), .SRMODE("LSR_OVER_CE")) _TECHMAP_REPLACE_ (.CLK(C), .CE(E), .LSR(R), .DI(D), .Q(Q)); wire _TECHMAP_REMOVEINIT_Q_ = 1'b1; endmodule +module \$_SDFFE_NP1N_ (input D, C, E, R, output Q); TRELLIS_FF #(.GSR("AUTO"), .CEMUX("INV"), .CLKMUX("INV"), .LSRMUX("LSR"), .REGSET("SET"), .SRMODE("LSR_OVER_CE")) _TECHMAP_REPLACE_ (.CLK(C), .CE(E), .LSR(R), .DI(D), .Q(Q)); wire _TECHMAP_REMOVEINIT_Q_ = 1'b1; endmodule +module \$_SDFFE_PP0N_ (input D, C, E, R, output Q); TRELLIS_FF #(.GSR("AUTO"), .CEMUX("INV"), .CLKMUX("CLK"), .LSRMUX("LSR"), .REGSET("RESET"), .SRMODE("LSR_OVER_CE")) _TECHMAP_REPLACE_ (.CLK(C), .CE(E), .LSR(R), .DI(D), .Q(Q)); wire _TECHMAP_REMOVEINIT_Q_ = 1'b1; endmodule +module \$_SDFFE_PP1N_ (input D, C, E, R, output Q); TRELLIS_FF #(.GSR("AUTO"), .CEMUX("INV"), .CLKMUX("CLK"), .LSRMUX("LSR"), .REGSET("SET"), .SRMODE("LSR_OVER_CE")) _TECHMAP_REPLACE_ (.CLK(C), .CE(E), .LSR(R), .DI(D), .Q(Q)); wire _TECHMAP_REMOVEINIT_Q_ = 1'b1; endmodule + +module \$_ALDFF_NP_ (input C, L, AD, D, output Q); TRELLIS_FF #(.GSR("DISABLED"), .CEMUX("1"), .CLKMUX("INV"), .LSRMODE("PRLD"), .LSRMUX("LSR"), .REGSET("RESET"), .SRMODE("ASYNC")) _TECHMAP_REPLACE_ (.CLK(C), .LSR(L), .DI(D), .M(AD), .Q(Q)); endmodule +module \$_ALDFF_PP_ (input C, L, AD, D, output Q); TRELLIS_FF #(.GSR("DISABLED"), .CEMUX("1"), .CLKMUX("CLK"), .LSRMODE("PRLD"), .LSRMUX("LSR"), .REGSET("RESET"), .SRMODE("ASYNC")) _TECHMAP_REPLACE_ (.CLK(C), .LSR(L), .DI(D), .M(AD), .Q(Q)); endmodule + +module \$_ALDFFE_NPN_ (input C, E, L, AD, D, output Q); TRELLIS_FF #(.GSR("DISABLED"), .CEMUX("INV"), .CLKMUX("INV"), .LSRMODE("PRLD"), .LSRMUX("LSR"), .REGSET("RESET"), .SRMODE("ASYNC")) _TECHMAP_REPLACE_ (.CLK(C), .CE(E), .LSR(L), .DI(D), .M(AD), .Q(Q)); endmodule +module \$_ALDFFE_NPP_ (input C, E, L, AD, D, output Q); TRELLIS_FF #(.GSR("DISABLED"), .CEMUX("CE"), .CLKMUX("INV"), .LSRMODE("PRLD"), .LSRMUX("LSR"), .REGSET("RESET"), .SRMODE("ASYNC")) _TECHMAP_REPLACE_ (.CLK(C), .CE(E), .LSR(L), .DI(D), .M(AD), .Q(Q)); endmodule +module \$_ALDFFE_PPN_ (input C, E, L, AD, D, output Q); TRELLIS_FF #(.GSR("DISABLED"), .CEMUX("INV"), .CLKMUX("CLK"), .LSRMODE("PRLD"), .LSRMUX("LSR"), .REGSET("RESET"), .SRMODE("ASYNC")) _TECHMAP_REPLACE_ (.CLK(C), .CE(E), .LSR(L), .DI(D), .M(AD), .Q(Q)); endmodule +module \$_ALDFFE_PPP_ (input C, E, L, AD, D, output Q); TRELLIS_FF #(.GSR("DISABLED"), .CEMUX("CE"), .CLKMUX("CLK"), .LSRMODE("PRLD"), .LSRMUX("LSR"), .REGSET("RESET"), .SRMODE("ASYNC")) _TECHMAP_REPLACE_ (.CLK(C), .CE(E), .LSR(L), .DI(D), .M(AD), .Q(Q)); endmodule + +`include "cells_ff.vh" +`include "cells_io.vh" + +`ifndef NO_LUT +module \$lut (A, Y); + parameter WIDTH = 0; + parameter LUT = 0; + + (* force_downto *) + input [WIDTH-1:0] A; + output Y; + + generate + if (WIDTH == 1) begin + localparam [15:0] INIT = {{8{LUT[1]}}, {8{LUT[0]}}}; + LUT4 #(.INIT(INIT)) _TECHMAP_REPLACE_ (.Z(Y), + .A(1'b0), .B(1'b0), .C(1'b0), .D(A[0])); + end else + if (WIDTH == 2) begin + localparam [15:0] INIT = {{4{LUT[3]}}, {4{LUT[2]}}, {4{LUT[1]}}, {4{LUT[0]}}}; + LUT4 #(.INIT(INIT)) _TECHMAP_REPLACE_ (.Z(Y), + .A(1'b0), .B(1'b0), .C(A[0]), .D(A[1])); + end else + if (WIDTH == 3) begin + localparam [15:0] INIT = {{2{LUT[7]}}, {2{LUT[6]}}, {2{LUT[5]}}, {2{LUT[4]}}, {2{LUT[3]}}, {2{LUT[2]}}, {2{LUT[1]}}, {2{LUT[0]}}}; + LUT4 #(.INIT(INIT)) _TECHMAP_REPLACE_ (.Z(Y), + .A(1'b0), .B(A[0]), .C(A[1]), .D(A[2])); + end else + if (WIDTH == 4) begin + LUT4 #(.INIT(LUT)) _TECHMAP_REPLACE_ (.Z(Y), + .A(A[0]), .B(A[1]), .C(A[2]), .D(A[3])); + `ifndef NO_PFUMUX + end else + if (WIDTH == 5) begin + wire f0, f1; + LUT4 #(.INIT(LUT[15: 0])) lut0 (.Z(f0), + .A(A[0]), .B(A[1]), .C(A[2]), .D(A[3])); + LUT4 #(.INIT(LUT[31:16])) lut1 (.Z(f1), + .A(A[0]), .B(A[1]), .C(A[2]), .D(A[3])); + PFUMX mux5(.ALUT(f1), .BLUT(f0), .C0(A[4]), .Z(Y)); + end else + if (WIDTH == 6) begin + wire f0, f1, f2, f3, g0, g1; + LUT4 #(.INIT(LUT[15: 0])) lut0 (.Z(f0), + .A(A[0]), .B(A[1]), .C(A[2]), .D(A[3])); + LUT4 #(.INIT(LUT[31:16])) lut1 (.Z(f1), + .A(A[0]), .B(A[1]), .C(A[2]), .D(A[3])); + + LUT4 #(.INIT(LUT[47:32])) lut2 (.Z(f2), + .A(A[0]), .B(A[1]), .C(A[2]), .D(A[3])); + LUT4 #(.INIT(LUT[63:48])) lut3 (.Z(f3), + .A(A[0]), .B(A[1]), .C(A[2]), .D(A[3])); + + PFUMX mux50(.ALUT(f1), .BLUT(f0), .C0(A[4]), .Z(g0)); + PFUMX mux51(.ALUT(f3), .BLUT(f2), .C0(A[4]), .Z(g1)); + L6MUX21 mux6 (.D0(g0), .D1(g1), .SD(A[5]), .Z(Y)); + end else + if (WIDTH == 7) begin + wire f0, f1, f2, f3, f4, f5, f6, f7, g0, g1, g2, g3, h0, h1; + LUT4 #(.INIT(LUT[15: 0])) lut0 (.Z(f0), + .A(A[0]), .B(A[1]), .C(A[2]), .D(A[3])); + LUT4 #(.INIT(LUT[31:16])) lut1 (.Z(f1), + .A(A[0]), .B(A[1]), .C(A[2]), .D(A[3])); + + LUT4 #(.INIT(LUT[47:32])) lut2 (.Z(f2), + .A(A[0]), .B(A[1]), .C(A[2]), .D(A[3])); + LUT4 #(.INIT(LUT[63:48])) lut3 (.Z(f3), + .A(A[0]), .B(A[1]), .C(A[2]), .D(A[3])); + + LUT4 #(.INIT(LUT[79:64])) lut4 (.Z(f4), + .A(A[0]), .B(A[1]), .C(A[2]), .D(A[3])); + LUT4 #(.INIT(LUT[95:80])) lut5 (.Z(f5), + .A(A[0]), .B(A[1]), .C(A[2]), .D(A[3])); + + LUT4 #(.INIT(LUT[111: 96])) lut6 (.Z(f6), + .A(A[0]), .B(A[1]), .C(A[2]), .D(A[3])); + LUT4 #(.INIT(LUT[127:112])) lut7 (.Z(f7), + .A(A[0]), .B(A[1]), .C(A[2]), .D(A[3])); + + PFUMX mux50(.ALUT(f1), .BLUT(f0), .C0(A[4]), .Z(g0)); + PFUMX mux51(.ALUT(f3), .BLUT(f2), .C0(A[4]), .Z(g1)); + PFUMX mux52(.ALUT(f5), .BLUT(f4), .C0(A[4]), .Z(g2)); + PFUMX mux53(.ALUT(f7), .BLUT(f6), .C0(A[4]), .Z(g3)); + L6MUX21 mux60 (.D0(g0), .D1(g1), .SD(A[5]), .Z(h0)); + L6MUX21 mux61 (.D0(g2), .D1(g3), .SD(A[5]), .Z(h1)); + L6MUX21 mux7 (.D0(h0), .D1(h1), .SD(A[6]), .Z(Y)); + `endif + end else begin + wire _TECHMAP_FAIL_ = 1; + end + endgenerate +endmodule +`endif diff --git a/resources/netlist/resources/kernel/share/ecp5/cells_sim.v b/resources/netlist/resources/kernel/share/ecp5/cells_sim.v new file mode 100644 index 0000000..f9d503d --- /dev/null +++ b/resources/netlist/resources/kernel/share/ecp5/cells_sim.v @@ -0,0 +1,810 @@ +// --------------------------------------- + +(* abc9_lut=1, lib_whitebox *) +module LUT4(input A, B, C, D, output Z); + parameter [15:0] INIT = 16'h0000; + wire [7:0] s3 = D ? INIT[15:8] : INIT[7:0]; + wire [3:0] s2 = C ? s3[ 7:4] : s3[3:0]; + wire [1:0] s1 = B ? s2[ 3:2] : s2[1:0]; + assign Z = A ? s1[1] : s1[0]; + specify + (A => Z) = 141; + (B => Z) = 275; + (C => Z) = 379; + (D => Z) = 379; + endspecify +endmodule + +// This is a placeholder for ABC9 to extract the area/delay +// cost of 5-input LUTs and is not intended to be instantiated +// LUT5 = 2x LUT4 + PFUMX +(* abc9_lut=2 *) +module \$__ABC9_LUT5 (input M0, D, C, B, A, output Z); + specify + (M0 => Z) = 151; + (D => Z) = 239; + (C => Z) = 373; + (B => Z) = 477; + (A => Z) = 477; + endspecify +endmodule + +// This is a placeholder for ABC9 to extract the area/delay +// of 6-input LUTs and is not intended to be instantiated +// LUT6 = 2x LUT5 + MUX2 +(* abc9_lut=4 *) +module \$__ABC9_LUT6 (input M1, M0, D, C, B, A, output Z); + specify + (M1 => Z) = 148; + (M0 => Z) = 292; + (D => Z) = 380; + (C => Z) = 514; + (B => Z) = 618; + (A => Z) = 618; + endspecify +endmodule + +// This is a placeholder for ABC9 to extract the area/delay +// of 7-input LUTs and is not intended to be instantiated +// LUT7 = 2x LUT6 + MUX2 +(* abc9_lut=8 *) +module \$__ABC9_LUT7 (input M2, M1, M0, D, C, B, A, output Z); + specify + (M2 => Z) = 148; + (M1 => Z) = 289; + (M0 => Z) = 433; + (D => Z) = 521; + (C => Z) = 655; + (B => Z) = 759; + (A => Z) = 759; + endspecify +endmodule + +// --------------------------------------- +(* abc9_box, lib_whitebox *) +module L6MUX21 (input D0, D1, SD, output Z); + assign Z = SD ? D1 : D0; + specify + (D0 => Z) = 140; + (D1 => Z) = 141; + (SD => Z) = 148; + endspecify +endmodule + +// --------------------------------------- +(* abc9_box, lib_whitebox *) +module CCU2C( + (* abc9_carry *) + input CIN, + input A0, B0, C0, D0, A1, B1, C1, D1, + output S0, S1, + (* abc9_carry *) + output COUT +); + parameter [15:0] INIT0 = 16'h0000; + parameter [15:0] INIT1 = 16'h0000; + parameter INJECT1_0 = "YES"; + parameter INJECT1_1 = "YES"; + + // First half + wire LUT4_0, LUT2_0; + LUT4 #(.INIT(INIT0)) lut4_0(.A(A0), .B(B0), .C(C0), .D(D0), .Z(LUT4_0)); + LUT2 #(.INIT(INIT0[3:0])) lut2_0(.A(A0), .B(B0), .Z(LUT2_0)); + wire gated_cin_0 = (INJECT1_0 == "YES") ? 1'b0 : CIN; + assign S0 = LUT4_0 ^ gated_cin_0; + + wire gated_lut2_0 = (INJECT1_0 == "YES") ? 1'b0 : LUT2_0; + wire cout_0 = (~LUT4_0 & gated_lut2_0) | (LUT4_0 & CIN); + + // Second half + wire LUT4_1, LUT2_1; + LUT4 #(.INIT(INIT1)) lut4_1(.A(A1), .B(B1), .C(C1), .D(D1), .Z(LUT4_1)); + LUT2 #(.INIT(INIT1[3:0])) lut2_1(.A(A1), .B(B1), .Z(LUT2_1)); + wire gated_cin_1 = (INJECT1_1 == "YES") ? 1'b0 : cout_0; + assign S1 = LUT4_1 ^ gated_cin_1; + + wire gated_lut2_1 = (INJECT1_1 == "YES") ? 1'b0 : LUT2_1; + assign COUT = (~LUT4_1 & gated_lut2_1) | (LUT4_1 & cout_0); + + specify + (A0 => S0) = 379; + (B0 => S0) = 379; + (C0 => S0) = 275; + (D0 => S0) = 141; + (CIN => S0) = 257; + (A0 => S1) = 630; + (B0 => S1) = 630; + (C0 => S1) = 526; + (D0 => S1) = 392; + (A1 => S1) = 379; + (B1 => S1) = 379; + (C1 => S1) = 275; + (D1 => S1) = 141; + (CIN => S1) = 273; + (A0 => COUT) = 516; + (B0 => COUT) = 516; + (C0 => COUT) = 412; + (D0 => COUT) = 278; + (A1 => COUT) = 516; + (B1 => COUT) = 516; + (C1 => COUT) = 412; + (D1 => COUT) = 278; + (CIN => COUT) = 43; + endspecify +endmodule + +// --------------------------------------- + +module TRELLIS_RAM16X2 ( + input DI0, DI1, + input WAD0, WAD1, WAD2, WAD3, + input WRE, WCK, + input RAD0, RAD1, RAD2, RAD3, + output DO0, DO1 +); + parameter WCKMUX = "WCK"; + parameter WREMUX = "WRE"; + parameter INITVAL_0 = 16'h0000; + parameter INITVAL_1 = 16'h0000; + + reg [1:0] mem[15:0]; + + integer i; + initial begin + for (i = 0; i < 16; i = i + 1) + mem[i] <= {INITVAL_1[i], INITVAL_0[i]}; + end + + wire muxwck = (WCKMUX == "INV") ? ~WCK : WCK; + + reg muxwre; + always @(*) + case (WREMUX) + "1": muxwre = 1'b1; + "0": muxwre = 1'b0; + "INV": muxwre = ~WRE; + default: muxwre = WRE; + endcase + + + always @(posedge muxwck) + if (muxwre) + mem[{WAD3, WAD2, WAD1, WAD0}] <= {DI1, DI0}; + + assign {DO1, DO0} = mem[{RAD3, RAD2, RAD1, RAD0}]; +endmodule + +// --------------------------------------- +(* abc9_box, lib_whitebox *) +module PFUMX (input ALUT, BLUT, C0, output Z); + assign Z = C0 ? ALUT : BLUT; + specify + (ALUT => Z) = 98; + (BLUT => Z) = 98; + (C0 => Z) = 151; + endspecify +endmodule + +// --------------------------------------- +(* abc9_box, lib_whitebox *) +module TRELLIS_DPR16X4 ( + input [3:0] DI, + input [3:0] WAD, + input WRE, + input WCK, + input [3:0] RAD, + output [3:0] DO +); + parameter WCKMUX = "WCK"; + parameter WREMUX = "WRE"; + parameter [63:0] INITVAL = 64'h0000000000000000; + + reg [3:0] mem[15:0]; + + integer i; + initial begin + for (i = 0; i < 16; i = i + 1) + mem[i] <= INITVAL[4*i +: 4]; + end + + wire muxwck = (WCKMUX == "INV") ? ~WCK : WCK; + + reg muxwre; + always @(*) + case (WREMUX) + "1": muxwre = 1'b1; + "0": muxwre = 1'b0; + "INV": muxwre = ~WRE; + default: muxwre = WRE; + endcase + + always @(posedge muxwck) + if (muxwre) + mem[WAD] <= DI; + + assign DO = mem[RAD]; + + specify + // TODO + (RAD *> DO) = 0; + endspecify +endmodule + +// --------------------------------------- + +(* abc9_box, lib_whitebox *) +module DPR16X4C ( + input [3:0] DI, + input WCK, WRE, + input [3:0] RAD, + input [3:0] WAD, + output [3:0] DO +); + // For legacy Lattice compatibility, INITIVAL is a hex + // string rather than a numeric parameter + parameter INITVAL = "0x0000000000000000"; + + function [63:0] convert_initval; + input [143:0] hex_initval; + reg done; + reg [63:0] temp; + reg [7:0] char; + integer i; + begin + done = 1'b0; + temp = 0; + for (i = 0; i < 16; i = i + 1) begin + if (!done) begin + char = hex_initval[8*i +: 8]; + if (char == "x") begin + done = 1'b1; + end else begin + if (char >= "0" && char <= "9") + temp[4*i +: 4] = char - "0"; + else if (char >= "A" && char <= "F") + temp[4*i +: 4] = 10 + char - "A"; + else if (char >= "a" && char <= "f") + temp[4*i +: 4] = 10 + char - "a"; + end + end + end + convert_initval = temp; + end + endfunction + + localparam conv_initval = convert_initval(INITVAL); + + reg [3:0] ram[0:15]; + integer i; + initial begin + for (i = 0; i < 15; i = i + 1) begin + ram[i] <= conv_initval[4*i +: 4]; + end + end + + always @(posedge WCK) + if (WRE) + ram[WAD] <= DI; + + assign DO = ram[RAD]; + + specify + // TODO + (RAD *> DO) = 0; + endspecify +endmodule + +// --------------------------------------- + +(* lib_whitebox *) +module LUT2(input A, B, output Z); + parameter [3:0] INIT = 4'h0; + wire [1:0] s1 = B ? INIT[ 3:2] : INIT[1:0]; + assign Z = A ? s1[1] : s1[0]; +endmodule + +// --------------------------------------- + +`ifdef YOSYS +(* abc9_flop=(SRMODE != "ASYNC"), abc9_box=(SRMODE == "ASYNC"), lib_whitebox *) +`endif +module TRELLIS_FF(input CLK, LSR, CE, DI, M, output reg Q); + parameter GSR = "ENABLED"; + parameter [127:0] CEMUX = "1"; + parameter CLKMUX = "CLK"; + parameter LSRMUX = "LSR"; + parameter SRMODE = "LSR_OVER_CE"; + parameter REGSET = "RESET"; + parameter [127:0] LSRMODE = "LSR"; + + wire muxce; + generate + case (CEMUX) + "1": assign muxce = 1'b1; + "0": assign muxce = 1'b0; + "INV": assign muxce = ~CE; + default: assign muxce = CE; + endcase + endgenerate + + wire muxlsr = (LSRMUX == "INV") ? ~LSR : LSR; + wire muxclk = (CLKMUX == "INV") ? ~CLK : CLK; + wire srval; + generate + if (LSRMODE == "PRLD") + assign srval = M; + else + assign srval = (REGSET == "SET") ? 1'b1 : 1'b0; + endgenerate + + initial Q = srval; + + generate + if (SRMODE == "ASYNC") begin + always @(posedge muxclk, posedge muxlsr) + if (muxlsr) + Q <= srval; + else if (muxce) + Q <= DI; + end else begin + always @(posedge muxclk) + if (muxlsr) + Q <= srval; + else if (muxce) + Q <= DI; + end + endgenerate + + specify + $setup(DI, negedge CLK &&& CLKMUX == "INV", 0); + $setup(CE, negedge CLK &&& CLKMUX == "INV", 0); + $setup(LSR, negedge CLK &&& CLKMUX == "INV", 0); + $setup(DI, posedge CLK &&& CLKMUX != "INV", 0); + $setup(CE, posedge CLK &&& CLKMUX != "INV", 0); + $setup(LSR, posedge CLK &&& CLKMUX != "INV", 0); +`ifndef YOSYS + if (SRMODE == "ASYNC" && muxlsr && CLKMUX == "INV") (negedge CLK => (Q : srval)) = 0; + if (SRMODE == "ASYNC" && muxlsr && CLKMUX != "INV") (posedge CLK => (Q : srval)) = 0; +`else + if (SRMODE == "ASYNC" && muxlsr) (LSR => Q) = 0; // Technically, this should be an edge sensitive path + // but for facilitating a bypass box, let's pretend it's + // a simple path +`endif + if (!muxlsr && muxce && CLKMUX == "INV") (negedge CLK => (Q : DI)) = 0; + if (!muxlsr && muxce && CLKMUX != "INV") (posedge CLK => (Q : DI)) = 0; + endspecify +endmodule + +// --------------------------------------- +(* keep *) +module TRELLIS_IO( + inout B, + input I, + input T, + output O +); + parameter DIR = "INPUT"; + reg T_pd; + always @(*) if (T === 1'bz) T_pd <= 1'b0; else T_pd <= T; + + generate + if (DIR == "INPUT") begin + assign B = 1'bz; + assign O = B; + end else if (DIR == "OUTPUT") begin + assign B = T_pd ? 1'bz : I; + assign O = 1'bx; + end else if (DIR == "BIDIR") begin + assign B = T_pd ? 1'bz : I; + assign O = B; + end else begin + ERROR_UNKNOWN_IO_MODE error(); + end + endgenerate + +endmodule + +// --------------------------------------- + +module INV(input A, output Z); + assign Z = !A; +endmodule + +// --------------------------------------- + +module TRELLIS_SLICE( + input A0, B0, C0, D0, + input A1, B1, C1, D1, + input M0, M1, + input FCI, FXA, FXB, + + input CLK, LSR, CE, + input DI0, DI1, + + input WD0, WD1, + input WAD0, WAD1, WAD2, WAD3, + input WRE, WCK, + + output F0, Q0, + output F1, Q1, + output FCO, OFX0, OFX1, + + output WDO0, WDO1, WDO2, WDO3, + output WADO0, WADO1, WADO2, WADO3 +); + + parameter MODE = "LOGIC"; + parameter GSR = "ENABLED"; + parameter SRMODE = "LSR_OVER_CE"; + parameter [127:0] CEMUX = "1"; + parameter CLKMUX = "CLK"; + parameter LSRMUX = "LSR"; + parameter LUT0_INITVAL = 16'h0000; + parameter LUT1_INITVAL = 16'h0000; + parameter REG0_SD = "0"; + parameter REG1_SD = "0"; + parameter REG0_REGSET = "RESET"; + parameter REG1_REGSET = "RESET"; + parameter REG0_LSRMODE = "LSR"; + parameter REG1_LSRMODE = "LSR"; + parameter [127:0] CCU2_INJECT1_0 = "NO"; + parameter [127:0] CCU2_INJECT1_1 = "NO"; + parameter WREMUX = "WRE"; + parameter WCKMUX = "WCK"; + + parameter A0MUX = "A0"; + parameter A1MUX = "A1"; + parameter B0MUX = "B0"; + parameter B1MUX = "B1"; + parameter C0MUX = "C0"; + parameter C1MUX = "C1"; + parameter D0MUX = "D0"; + parameter D1MUX = "D1"; + + wire A0m, B0m, C0m, D0m; + wire A1m, B1m, C1m, D1m; + + generate + if (A0MUX == "1") assign A0m = 1'b1; else assign A0m = A0; + if (B0MUX == "1") assign B0m = 1'b1; else assign B0m = B0; + if (C0MUX == "1") assign C0m = 1'b1; else assign C0m = C0; + if (D0MUX == "1") assign D0m = 1'b1; else assign D0m = D0; + if (A1MUX == "1") assign A1m = 1'b1; else assign A1m = A1; + if (B1MUX == "1") assign B1m = 1'b1; else assign B1m = B1; + if (C1MUX == "1") assign C1m = 1'b1; else assign C1m = C1; + if (D1MUX == "1") assign D1m = 1'b1; else assign D1m = D1; + + endgenerate + + function [15:0] permute_initval; + input [15:0] initval; + integer i; + begin + for (i = 0; i < 16; i = i + 1) begin + permute_initval[{i[0], i[2], i[1], i[3]}] = initval[i]; + end + end + endfunction + + generate + if (MODE == "LOGIC") begin + // LUTs + LUT4 #( + .INIT(LUT0_INITVAL) + ) lut4_0 ( + .A(A0m), .B(B0m), .C(C0m), .D(D0m), + .Z(F0) + ); + LUT4 #( + .INIT(LUT1_INITVAL) + ) lut4_1 ( + .A(A1m), .B(B1m), .C(C1m), .D(D1m), + .Z(F1) + ); + // LUT expansion muxes + PFUMX lut5_mux (.ALUT(F1), .BLUT(F0), .C0(M0), .Z(OFX0)); + L6MUX21 lutx_mux (.D0(FXA), .D1(FXB), .SD(M1), .Z(OFX1)); + end else if (MODE == "CCU2") begin + CCU2C #( + .INIT0(LUT0_INITVAL), + .INIT1(LUT1_INITVAL), + .INJECT1_0(CCU2_INJECT1_0), + .INJECT1_1(CCU2_INJECT1_1) + ) ccu2c_i ( + .CIN(FCI), + .A0(A0m), .B0(B0m), .C0(C0m), .D0(D0m), + .A1(A1m), .B1(B1m), .C1(C1m), .D1(D1m), + .S0(F0), .S1(F1), + .COUT(FCO) + ); + end else if (MODE == "RAMW") begin + assign WDO0 = C1m; + assign WDO1 = A1m; + assign WDO2 = D1m; + assign WDO3 = B1m; + assign WADO0 = D0m; + assign WADO1 = B0m; + assign WADO2 = C0m; + assign WADO3 = A0m; + end else if (MODE == "DPRAM") begin + TRELLIS_RAM16X2 #( + .INITVAL_0(permute_initval(LUT0_INITVAL)), + .INITVAL_1(permute_initval(LUT1_INITVAL)), + .WREMUX(WREMUX) + ) ram_i ( + .DI0(WD0), .DI1(WD1), + .WAD0(WAD0), .WAD1(WAD1), .WAD2(WAD2), .WAD3(WAD3), + .WRE(WRE), .WCK(WCK), + .RAD0(D0m), .RAD1(B0m), .RAD2(C0m), .RAD3(A0m), + .DO0(F0), .DO1(F1) + ); + // TODO: confirm RAD and INITVAL ordering + // DPRAM mode contract? +`ifdef FORMAL + always @(*) begin + assert(A0m==A1m); + assert(B0m==B1m); + assert(C0m==C1m); + assert(D0m==D1m); + end +`endif + end else begin + ERROR_UNKNOWN_SLICE_MODE error(); + end + endgenerate + + // FF input selection muxes + wire muxdi0 = (REG0_SD == "1") ? DI0 : M0; + wire muxdi1 = (REG1_SD == "1") ? DI1 : M1; + // Flipflops + TRELLIS_FF #( + .GSR(GSR), + .CEMUX(CEMUX), + .CLKMUX(CLKMUX), + .LSRMUX(LSRMUX), + .SRMODE(SRMODE), + .REGSET(REG0_REGSET), + .LSRMODE(REG0_LSRMODE) + ) ff_0 ( + .CLK(CLK), .LSR(LSR), .CE(CE), + .DI(muxdi0), .M(M0), + .Q(Q0) + ); + TRELLIS_FF #( + .GSR(GSR), + .CEMUX(CEMUX), + .CLKMUX(CLKMUX), + .LSRMUX(LSRMUX), + .SRMODE(SRMODE), + .REGSET(REG1_REGSET), + .LSRMODE(REG1_LSRMODE) + ) ff_1 ( + .CLK(CLK), .LSR(LSR), .CE(CE), + .DI(muxdi1), .M(M1), + .Q(Q1) + ); +endmodule + +(* blackbox *) +module DP16KD( + input DIA17, DIA16, DIA15, DIA14, DIA13, DIA12, DIA11, DIA10, DIA9, DIA8, DIA7, DIA6, DIA5, DIA4, DIA3, DIA2, DIA1, DIA0, + input ADA13, ADA12, ADA11, ADA10, ADA9, ADA8, ADA7, ADA6, ADA5, ADA4, ADA3, ADA2, ADA1, ADA0, + input CEA, OCEA, CLKA, WEA, RSTA, + input CSA2, CSA1, CSA0, + output DOA17, DOA16, DOA15, DOA14, DOA13, DOA12, DOA11, DOA10, DOA9, DOA8, DOA7, DOA6, DOA5, DOA4, DOA3, DOA2, DOA1, DOA0, + + input DIB17, DIB16, DIB15, DIB14, DIB13, DIB12, DIB11, DIB10, DIB9, DIB8, DIB7, DIB6, DIB5, DIB4, DIB3, DIB2, DIB1, DIB0, + input ADB13, ADB12, ADB11, ADB10, ADB9, ADB8, ADB7, ADB6, ADB5, ADB4, ADB3, ADB2, ADB1, ADB0, + input CEB, OCEB, CLKB, WEB, RSTB, + input CSB2, CSB1, CSB0, + output DOB17, DOB16, DOB15, DOB14, DOB13, DOB12, DOB11, DOB10, DOB9, DOB8, DOB7, DOB6, DOB5, DOB4, DOB3, DOB2, DOB1, DOB0 +); + parameter DATA_WIDTH_A = 18; + parameter DATA_WIDTH_B = 18; + + parameter REGMODE_A = "NOREG"; + parameter REGMODE_B = "NOREG"; + + parameter RESETMODE = "SYNC"; + parameter ASYNC_RESET_RELEASE = "SYNC"; + + parameter CSDECODE_A = "0b000"; + parameter CSDECODE_B = "0b000"; + + parameter WRITEMODE_A = "NORMAL"; + parameter WRITEMODE_B = "NORMAL"; + + parameter DIA17MUX = "DIA17"; + parameter DIA16MUX = "DIA16"; + parameter DIA15MUX = "DIA15"; + parameter DIA14MUX = "DIA14"; + parameter DIA13MUX = "DIA13"; + parameter DIA12MUX = "DIA12"; + parameter DIA11MUX = "DIA11"; + parameter DIA10MUX = "DIA10"; + parameter DIA9MUX = "DIA9"; + parameter DIA8MUX = "DIA8"; + parameter DIA7MUX = "DIA7"; + parameter DIA6MUX = "DIA6"; + parameter DIA5MUX = "DIA5"; + parameter DIA4MUX = "DIA4"; + parameter DIA3MUX = "DIA3"; + parameter DIA2MUX = "DIA2"; + parameter DIA1MUX = "DIA1"; + parameter DIA0MUX = "DIA0"; + parameter ADA13MUX = "ADA13"; + parameter ADA12MUX = "ADA12"; + parameter ADA11MUX = "ADA11"; + parameter ADA10MUX = "ADA10"; + parameter ADA9MUX = "ADA9"; + parameter ADA8MUX = "ADA8"; + parameter ADA7MUX = "ADA7"; + parameter ADA6MUX = "ADA6"; + parameter ADA5MUX = "ADA5"; + parameter ADA4MUX = "ADA4"; + parameter ADA3MUX = "ADA3"; + parameter ADA2MUX = "ADA2"; + parameter ADA1MUX = "ADA1"; + parameter ADA0MUX = "ADA0"; + parameter CEAMUX = "CEA"; + parameter OCEAMUX = "OCEA"; + parameter CLKAMUX = "CLKA"; + parameter WEAMUX = "WEA"; + parameter RSTAMUX = "RSTA"; + parameter CSA2MUX = "CSA2"; + parameter CSA1MUX = "CSA1"; + parameter CSA0MUX = "CSA0"; + parameter DOA17MUX = "DOA17"; + parameter DOA16MUX = "DOA16"; + parameter DOA15MUX = "DOA15"; + parameter DOA14MUX = "DOA14"; + parameter DOA13MUX = "DOA13"; + parameter DOA12MUX = "DOA12"; + parameter DOA11MUX = "DOA11"; + parameter DOA10MUX = "DOA10"; + parameter DOA9MUX = "DOA9"; + parameter DOA8MUX = "DOA8"; + parameter DOA7MUX = "DOA7"; + parameter DOA6MUX = "DOA6"; + parameter DOA5MUX = "DOA5"; + parameter DOA4MUX = "DOA4"; + parameter DOA3MUX = "DOA3"; + parameter DOA2MUX = "DOA2"; + parameter DOA1MUX = "DOA1"; + parameter DOA0MUX = "DOA0"; + parameter DIB17MUX = "DIB17"; + parameter DIB16MUX = "DIB16"; + parameter DIB15MUX = "DIB15"; + parameter DIB14MUX = "DIB14"; + parameter DIB13MUX = "DIB13"; + parameter DIB12MUX = "DIB12"; + parameter DIB11MUX = "DIB11"; + parameter DIB10MUX = "DIB10"; + parameter DIB9MUX = "DIB9"; + parameter DIB8MUX = "DIB8"; + parameter DIB7MUX = "DIB7"; + parameter DIB6MUX = "DIB6"; + parameter DIB5MUX = "DIB5"; + parameter DIB4MUX = "DIB4"; + parameter DIB3MUX = "DIB3"; + parameter DIB2MUX = "DIB2"; + parameter DIB1MUX = "DIB1"; + parameter DIB0MUX = "DIB0"; + parameter ADB13MUX = "ADB13"; + parameter ADB12MUX = "ADB12"; + parameter ADB11MUX = "ADB11"; + parameter ADB10MUX = "ADB10"; + parameter ADB9MUX = "ADB9"; + parameter ADB8MUX = "ADB8"; + parameter ADB7MUX = "ADB7"; + parameter ADB6MUX = "ADB6"; + parameter ADB5MUX = "ADB5"; + parameter ADB4MUX = "ADB4"; + parameter ADB3MUX = "ADB3"; + parameter ADB2MUX = "ADB2"; + parameter ADB1MUX = "ADB1"; + parameter ADB0MUX = "ADB0"; + parameter CEBMUX = "CEB"; + parameter OCEBMUX = "OCEB"; + parameter CLKBMUX = "CLKB"; + parameter WEBMUX = "WEB"; + parameter RSTBMUX = "RSTB"; + parameter CSB2MUX = "CSB2"; + parameter CSB1MUX = "CSB1"; + parameter CSB0MUX = "CSB0"; + parameter DOB17MUX = "DOB17"; + parameter DOB16MUX = "DOB16"; + parameter DOB15MUX = "DOB15"; + parameter DOB14MUX = "DOB14"; + parameter DOB13MUX = "DOB13"; + parameter DOB12MUX = "DOB12"; + parameter DOB11MUX = "DOB11"; + parameter DOB10MUX = "DOB10"; + parameter DOB9MUX = "DOB9"; + parameter DOB8MUX = "DOB8"; + parameter DOB7MUX = "DOB7"; + parameter DOB6MUX = "DOB6"; + parameter DOB5MUX = "DOB5"; + parameter DOB4MUX = "DOB4"; + parameter DOB3MUX = "DOB3"; + parameter DOB2MUX = "DOB2"; + parameter DOB1MUX = "DOB1"; + parameter DOB0MUX = "DOB0"; + + parameter WID = 0; + + parameter GSR = "ENABLED"; + + parameter INITVAL_00 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INITVAL_01 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INITVAL_02 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INITVAL_03 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INITVAL_04 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INITVAL_05 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INITVAL_06 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INITVAL_07 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INITVAL_08 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INITVAL_09 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INITVAL_0A = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INITVAL_0B = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INITVAL_0C = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INITVAL_0D = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INITVAL_0E = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INITVAL_0F = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INITVAL_10 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INITVAL_11 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INITVAL_12 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INITVAL_13 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INITVAL_14 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INITVAL_15 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INITVAL_16 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INITVAL_17 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INITVAL_18 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INITVAL_19 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INITVAL_1A = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INITVAL_1B = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INITVAL_1C = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INITVAL_1D = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INITVAL_1E = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INITVAL_1F = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INITVAL_20 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INITVAL_21 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INITVAL_22 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INITVAL_23 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INITVAL_24 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INITVAL_25 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INITVAL_26 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INITVAL_27 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INITVAL_28 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INITVAL_29 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INITVAL_2A = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INITVAL_2B = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INITVAL_2C = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INITVAL_2D = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INITVAL_2E = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INITVAL_2F = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INITVAL_30 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INITVAL_31 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INITVAL_32 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INITVAL_33 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INITVAL_34 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INITVAL_35 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INITVAL_36 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INITVAL_37 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INITVAL_38 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INITVAL_39 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INITVAL_3A = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INITVAL_3B = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INITVAL_3C = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INITVAL_3D = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INITVAL_3E = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INITVAL_3F = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_DATA = "STATIC"; +endmodule + +`ifndef NO_INCLUDES + +`include "cells_ff.vh" +`include "cells_io.vh" + +`endif diff --git a/resources/netlist/resources/kernel/share/ecp5/dsp_map.v b/resources/netlist/resources/kernel/share/ecp5/dsp_map.v new file mode 100644 index 0000000..df54d1d --- /dev/null +++ b/resources/netlist/resources/kernel/share/ecp5/dsp_map.v @@ -0,0 +1,17 @@ +module \$__MUL18X18 (input [17:0] A, input [17:0] B, output [35:0] Y); + + parameter A_WIDTH = 18; + parameter B_WIDTH = 18; + parameter Y_WIDTH = 36; + parameter A_SIGNED = 0; + parameter B_SIGNED = 0; + + MULT18X18D _TECHMAP_REPLACE_ ( + .A0(A[0]), .A1(A[1]), .A2(A[2]), .A3(A[3]), .A4(A[4]), .A5(A[5]), .A6(A[6]), .A7(A[7]), .A8(A[8]), .A9(A[9]), .A10(A[10]), .A11(A[11]), .A12(A[12]), .A13(A[13]), .A14(A[14]), .A15(A[15]), .A16(A[16]), .A17(A[17]), + .B0(B[0]), .B1(B[1]), .B2(B[2]), .B3(B[3]), .B4(B[4]), .B5(B[5]), .B6(B[6]), .B7(B[7]), .B8(B[8]), .B9(B[9]), .B10(B[10]), .B11(B[11]), .B12(B[12]), .B13(B[13]), .B14(B[14]), .B15(B[15]), .B16(B[16]), .B17(B[17]), + .C17(1'b0), .C16(1'b0), .C15(1'b0), .C14(1'b0), .C13(1'b0), .C12(1'b0), .C11(1'b0), .C10(1'b0), .C9(1'b0), .C8(1'b0), .C7(1'b0), .C6(1'b0), .C5(1'b0), .C4(1'b0), .C3(1'b0), .C2(1'b0), .C1(1'b0), .C0(1'b0), + .SIGNEDA(A_SIGNED ? 1'b1 : 1'b0), .SIGNEDB(B_SIGNED ? 1'b1 : 1'b0), .SOURCEA(1'b0), .SOURCEB(1'b0), + + .P0(Y[0]), .P1(Y[1]), .P2(Y[2]), .P3(Y[3]), .P4(Y[4]), .P5(Y[5]), .P6(Y[6]), .P7(Y[7]), .P8(Y[8]), .P9(Y[9]), .P10(Y[10]), .P11(Y[11]), .P12(Y[12]), .P13(Y[13]), .P14(Y[14]), .P15(Y[15]), .P16(Y[16]), .P17(Y[17]), .P18(Y[18]), .P19(Y[19]), .P20(Y[20]), .P21(Y[21]), .P22(Y[22]), .P23(Y[23]), .P24(Y[24]), .P25(Y[25]), .P26(Y[26]), .P27(Y[27]), .P28(Y[28]), .P29(Y[29]), .P30(Y[30]), .P31(Y[31]), .P32(Y[32]), .P33(Y[33]), .P34(Y[34]), .P35(Y[35]) + ); +endmodule diff --git a/resources/netlist/resources/kernel/share/ecp5/latches_map.v b/resources/netlist/resources/kernel/share/ecp5/latches_map.v new file mode 100644 index 0000000..c28f88c --- /dev/null +++ b/resources/netlist/resources/kernel/share/ecp5/latches_map.v @@ -0,0 +1,11 @@ +module \$_DLATCH_N_ (E, D, Q); + wire [1023:0] _TECHMAP_DO_ = "simplemap; opt"; + input E, D; + output Q = !E ? D : Q; +endmodule + +module \$_DLATCH_P_ (E, D, Q); + wire [1023:0] _TECHMAP_DO_ = "simplemap; opt"; + input E, D; + output Q = E ? D : Q; +endmodule diff --git a/resources/netlist/resources/kernel/share/ecp5/lutrams.txt b/resources/netlist/resources/kernel/share/ecp5/lutrams.txt new file mode 100644 index 0000000..ea42d4f --- /dev/null +++ b/resources/netlist/resources/kernel/share/ecp5/lutrams.txt @@ -0,0 +1,12 @@ +ram distributed $__TRELLIS_DPR16X4_ { + abits 4; + width 4; + cost 4; + init any; + prune_rom; + port sw "W" { + clock anyedge; + } + port ar "R" { + } +} diff --git a/resources/netlist/resources/kernel/share/ecp5/lutrams_map.v b/resources/netlist/resources/kernel/share/ecp5/lutrams_map.v new file mode 100644 index 0000000..3cb325f --- /dev/null +++ b/resources/netlist/resources/kernel/share/ecp5/lutrams_map.v @@ -0,0 +1,30 @@ +module $__TRELLIS_DPR16X4_(...); + +parameter INIT = 64'bx; +parameter PORT_W_CLK_POL = 1; + +input PORT_W_CLK; +input [3:0] PORT_W_ADDR; +input [3:0] PORT_W_WR_DATA; +input PORT_W_WR_EN; + +input [3:0] PORT_R_ADDR; +output [3:0] PORT_R_RD_DATA; + +localparam WCKMUX = PORT_W_CLK_POL ? "WCK" : "INV"; + +TRELLIS_DPR16X4 #( + .INITVAL(INIT), + .WCKMUX(WCKMUX), + .WREMUX("WRE") +) _TECHMAP_REPLACE_ ( + .RAD(PORT_R_ADDR), + .DO(PORT_R_RD_DATA), + + .WAD(PORT_W_ADDR), + .DI(PORT_W_WR_DATA), + .WCK(PORT_W_CLK), + .WRE(PORT_W_WR_EN) +); + +endmodule diff --git a/resources/netlist/resources/kernel/share/efinix/arith_map.v b/resources/netlist/resources/kernel/share/efinix/arith_map.v new file mode 100644 index 0000000..6bda050 --- /dev/null +++ b/resources/netlist/resources/kernel/share/efinix/arith_map.v @@ -0,0 +1,88 @@ +/* + * yosys -- Yosys Open SYnthesis Suite + * + * Copyright (C) 2018 Miodrag Milanovic + * Copyright (C) 2012 Claire Xenia Wolf + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + */ + +(* techmap_celltype = "$alu" *) +module _80_efinix_alu (A, B, CI, BI, X, Y, CO); + parameter A_SIGNED = 0; + parameter B_SIGNED = 0; + parameter A_WIDTH = 1; + parameter B_WIDTH = 1; + parameter Y_WIDTH = 1; + + (* force_downto *) + input [A_WIDTH-1:0] A; + (* force_downto *) + input [B_WIDTH-1:0] B; + (* force_downto *) + output [Y_WIDTH-1:0] X, Y; + + input CI, BI; + (* force_downto *) + output [Y_WIDTH-1:0] CO; + + wire CIx; + (* force_downto *) + wire [Y_WIDTH-1:0] COx; + + wire _TECHMAP_FAIL_ = Y_WIDTH <= 2; + + (* force_downto *) + wire [Y_WIDTH-1:0] A_buf, B_buf; + \$pos #(.A_SIGNED(A_SIGNED), .A_WIDTH(A_WIDTH), .Y_WIDTH(Y_WIDTH)) A_conv (.A(A), .Y(A_buf)); + \$pos #(.A_SIGNED(B_SIGNED), .A_WIDTH(B_WIDTH), .Y_WIDTH(Y_WIDTH)) B_conv (.A(B), .Y(B_buf)); + + (* force_downto *) + wire [Y_WIDTH-1:0] AA = A_buf; + (* force_downto *) + wire [Y_WIDTH-1:0] BB = BI ? ~B_buf : B_buf; + (* force_downto *) + wire [Y_WIDTH-1:0] C = { COx, CIx }; + + EFX_ADD #(.I0_POLARITY(1'b1),.I1_POLARITY(1'b1)) + adder_cin ( + .I0(CI), + .I1(1'b1), + .CI(1'b0), + .CO(CIx) + ); + + genvar i; + generate for (i = 0; i < Y_WIDTH; i = i + 1) begin: slice + EFX_ADD #(.I0_POLARITY(1'b1),.I1_POLARITY(1'b1)) + adder_i ( + .I0(AA[i]), + .I1(BB[i]), + .CI(C[i]), + .O(Y[i]), + .CO(COx[i]) + ); + EFX_ADD #(.I0_POLARITY(1'b1),.I1_POLARITY(1'b1)) + adder_cout ( + .I0(1'b0), + .I1(1'b0), + .CI(COx[i]), + .O(CO[i]) + ); + end: slice + endgenerate + + /* End implementation */ + assign X = AA ^ BB; +endmodule diff --git a/resources/netlist/resources/kernel/share/efinix/brams.txt b/resources/netlist/resources/kernel/share/efinix/brams.txt new file mode 100644 index 0000000..271fc4f --- /dev/null +++ b/resources/netlist/resources/kernel/share/efinix/brams.txt @@ -0,0 +1,19 @@ +ram block $__EFINIX_5K_ { + abits 12; + widths 1 2 5 10 20 per_port; + cost 32; + init no_undef; + port sr "R" { + clock anyedge; + rden; + } + port sw "W" { + clock anyedge; + option "WRITE_MODE" "READ_FIRST" { + wrtrans "R" old; + } + option "WRITE_MODE" "WRITE_FIRST" { + wrtrans "R" new; + } + } +} diff --git a/resources/netlist/resources/kernel/share/efinix/brams_map.v b/resources/netlist/resources/kernel/share/efinix/brams_map.v new file mode 100644 index 0000000..752010f --- /dev/null +++ b/resources/netlist/resources/kernel/share/efinix/brams_map.v @@ -0,0 +1,149 @@ +module $__EFINIX_5K_ (...); + parameter INIT = 0; + parameter OPTION_WRITE_MODE = "READ_FIRST"; + + parameter PORT_R_WIDTH = 20; + parameter PORT_R_CLK_POL = 1; + parameter PORT_W_WIDTH = 20; + parameter PORT_W_CLK_POL = 1; + + input PORT_R_CLK; + input PORT_R_RD_EN; + input [11:0] PORT_R_ADDR; + output [PORT_R_WIDTH-1:0] PORT_R_RD_DATA; + + input PORT_W_CLK; + input PORT_W_WR_EN; + input [11:0] PORT_W_ADDR; + input [PORT_W_WIDTH-1:0] PORT_W_WR_DATA; + + localparam IS_5BIT = PORT_R_WIDTH >= 5 && PORT_W_WIDTH >= 5; + + localparam RADDR_WIDTH = + PORT_R_WIDTH == 1 ? 12 : + PORT_R_WIDTH == 2 ? 11 : + PORT_R_WIDTH == 5 ? 10 : + PORT_R_WIDTH == 10 ? 9 : + 8; + + localparam WADDR_WIDTH = + PORT_W_WIDTH == 1 ? 12 : + PORT_W_WIDTH == 2 ? 11 : + PORT_W_WIDTH == 5 ? 10 : + PORT_W_WIDTH == 10 ? 9 : + 8; + + localparam READ_WIDTH = + PORT_R_WIDTH == 1 ? 1 : + PORT_R_WIDTH == 2 ? 2 : + PORT_R_WIDTH == 5 ? (IS_5BIT ? 5 : 4) : + PORT_R_WIDTH == 10 ? (IS_5BIT ? 10 : 8) : + (IS_5BIT ? 20 : 16); + + localparam WRITE_WIDTH = + PORT_W_WIDTH == 1 ? 1 : + PORT_W_WIDTH == 2 ? 2 : + PORT_W_WIDTH == 5 ? (IS_5BIT ? 5 : 4) : + PORT_W_WIDTH == 10 ? (IS_5BIT ? 10 : 8) : + (IS_5BIT ? 20 : 16); + + wire [RADDR_WIDTH-1:0] RADDR = PORT_R_ADDR[11:12-RADDR_WIDTH]; + wire [WADDR_WIDTH-1:0] WADDR = PORT_W_ADDR[11:12-WADDR_WIDTH]; + + wire [WRITE_WIDTH-1:0] WDATA; + wire [READ_WIDTH-1:0] RDATA; + + generate + case (WRITE_WIDTH) + 1: assign WDATA = PORT_W_WR_DATA; + 2: assign WDATA = PORT_W_WR_DATA; + 4: assign WDATA = PORT_W_WR_DATA[3:0]; + 5: assign WDATA = PORT_W_WR_DATA; + 8: assign WDATA = { + PORT_W_WR_DATA[8:5], + PORT_W_WR_DATA[3:0] + }; + 10: assign WDATA = PORT_W_WR_DATA; + 16: assign WDATA = { + PORT_W_WR_DATA[18:15], + PORT_W_WR_DATA[13:10], + PORT_W_WR_DATA[8:5], + PORT_W_WR_DATA[3:0] + }; + 20: assign WDATA = PORT_W_WR_DATA; + endcase + case (READ_WIDTH) + 1: assign PORT_R_RD_DATA = RDATA; + 2: assign PORT_R_RD_DATA = RDATA; + 4: assign PORT_R_RD_DATA[3:0] = RDATA; + 5: assign PORT_R_RD_DATA = RDATA; + 8: assign { + PORT_R_RD_DATA[8:5], + PORT_R_RD_DATA[3:0] + } = RDATA; + 10: assign PORT_R_RD_DATA = RDATA; + 16: assign { + PORT_R_RD_DATA[18:15], + PORT_R_RD_DATA[13:10], + PORT_R_RD_DATA[8:5], + PORT_R_RD_DATA[3:0] + } = RDATA; + 20: assign PORT_R_RD_DATA = RDATA; + endcase + endgenerate + + function [255:0] init_slice; + input integer idx; + integer i; + if (IS_5BIT) + init_slice = INIT[idx * 256 +: 256]; + else if (idx > 16) + init_slice = 0; + else + for (i = 0; i < 64; i = i + 1) + init_slice[i*4+:4] = INIT[(idx * 64 + i) * 5+:4]; + endfunction + + EFX_RAM_5K #( + .READ_WIDTH(READ_WIDTH), + .WRITE_WIDTH(WRITE_WIDTH), + .OUTPUT_REG(1'b0), + .RCLK_POLARITY(PORT_R_CLK_POL), + .RE_POLARITY(1'b1), + .WCLK_POLARITY(PORT_W_CLK_POL), + .WE_POLARITY(1'b1), + .WCLKE_POLARITY(1'b1), + .WRITE_MODE(OPTION_WRITE_MODE), + .INIT_0(init_slice('h00)), + .INIT_1(init_slice('h01)), + .INIT_2(init_slice('h02)), + .INIT_3(init_slice('h03)), + .INIT_4(init_slice('h04)), + .INIT_5(init_slice('h05)), + .INIT_6(init_slice('h06)), + .INIT_7(init_slice('h07)), + .INIT_8(init_slice('h08)), + .INIT_9(init_slice('h09)), + .INIT_A(init_slice('h0a)), + .INIT_B(init_slice('h0b)), + .INIT_C(init_slice('h0c)), + .INIT_D(init_slice('h0d)), + .INIT_E(init_slice('h0e)), + .INIT_F(init_slice('h0f)), + .INIT_10(init_slice('h10)), + .INIT_11(init_slice('h11)), + .INIT_12(init_slice('h12)), + .INIT_13(init_slice('h13)), + ) _TECHMAP_REPLACE_ ( + .WDATA(WDATA), + .WADDR(WADDR), + .WE(PORT_W_WR_EN), + .WCLK(PORT_W_CLK), + .WCLKE(1'b1), + .RDATA(RDATA), + .RADDR(RADDR), + .RE(PORT_R_RD_EN), + .RCLK(PORT_R_CLK) + ); + +endmodule diff --git a/resources/netlist/resources/kernel/share/efinix/cells_map.v b/resources/netlist/resources/kernel/share/efinix/cells_map.v new file mode 100644 index 0000000..6f6271d --- /dev/null +++ b/resources/netlist/resources/kernel/share/efinix/cells_map.v @@ -0,0 +1,96 @@ +(* techmap_celltype = "$_DFFE_[PN][PN][01][PN]_" *) +module \$_DFFE_xxxx_ (input D, C, R, E, output Q); + + parameter _TECHMAP_CELLTYPE_ = ""; + + EFX_FF #( + .CLK_POLARITY(_TECHMAP_CELLTYPE_[39:32] == "P"), + .CE_POLARITY(_TECHMAP_CELLTYPE_[15:8] == "P"), + .SR_POLARITY(_TECHMAP_CELLTYPE_[31:24] == "P"), + .D_POLARITY(1'b1), + .SR_SYNC(1'b0), + .SR_VALUE(_TECHMAP_CELLTYPE_[23:16] == "1"), + .SR_SYNC_PRIORITY(1'b1) + ) _TECHMAP_REPLACE_ (.D(D), .CE(E), .CLK(C), .SR(R), .Q(Q)); + + wire _TECHMAP_REMOVEINIT_Q_ = 1'b1; + +endmodule + +(* techmap_celltype = "$_SDFFE_[PN][PN][01][PN]_" *) +module \$_SDFFE_xxxx_ (input D, C, R, E, output Q); + + parameter _TECHMAP_CELLTYPE_ = ""; + + EFX_FF #( + .CLK_POLARITY(_TECHMAP_CELLTYPE_[39:32] == "P"), + .CE_POLARITY(_TECHMAP_CELLTYPE_[15:8] == "P"), + .SR_POLARITY(_TECHMAP_CELLTYPE_[31:24] == "P"), + .D_POLARITY(1'b1), + .SR_SYNC(1'b1), + .SR_VALUE(_TECHMAP_CELLTYPE_[23:16] == "1"), + .SR_SYNC_PRIORITY(1'b1) + ) _TECHMAP_REPLACE_ (.D(D), .CE(E), .CLK(C), .SR(R), .Q(Q)); + + wire _TECHMAP_REMOVEINIT_Q_ = 1'b1; + +endmodule + +(* techmap_celltype = "$_SDFFCE_[PN][PN][01][PN]_" *) +module \$_SDFFCE_xxxx_ (input D, C, R, E, output Q); + + parameter _TECHMAP_CELLTYPE_ = ""; + + EFX_FF #( + .CLK_POLARITY(_TECHMAP_CELLTYPE_[39:32] == "P"), + .CE_POLARITY(_TECHMAP_CELLTYPE_[15:8] == "P"), + .SR_POLARITY(_TECHMAP_CELLTYPE_[31:24] == "P"), + .D_POLARITY(1'b1), + .SR_SYNC(1'b1), + .SR_VALUE(_TECHMAP_CELLTYPE_[23:16] == "1"), + .SR_SYNC_PRIORITY(1'b0) + ) _TECHMAP_REPLACE_ (.D(D), .CE(E), .CLK(C), .SR(R), .Q(Q)); + + wire _TECHMAP_REMOVEINIT_Q_ = 1'b1; + +endmodule + +module \$_DLATCH_N_ (E, D, Q); + wire [1023:0] _TECHMAP_DO_ = "simplemap; opt"; + input E, D; + output Q = !E ? D : Q; +endmodule + +module \$_DLATCH_P_ (E, D, Q); + wire [1023:0] _TECHMAP_DO_ = "simplemap; opt"; + input E, D; + output Q = E ? D : Q; +endmodule + +`ifndef NO_LUT +module \$lut (A, Y); + parameter WIDTH = 0; + parameter LUT = 0; + + (* force_downto *) + input [WIDTH-1:0] A; + output Y; + + generate + if (WIDTH == 1) begin + EFX_LUT4 #(.LUTMASK(LUT)) _TECHMAP_REPLACE_ (.O(Y), .I0(A[0]), .I1(1'b0), .I2(1'b0), .I3(1'b0)); + end else + if (WIDTH == 2) begin + EFX_LUT4 #(.LUTMASK(LUT)) _TECHMAP_REPLACE_ (.O(Y), .I0(A[0]), .I1(A[1]), .I2(1'b0), .I3(1'b0)); + end else + if (WIDTH == 3) begin + EFX_LUT4 #(.LUTMASK(LUT)) _TECHMAP_REPLACE_ (.O(Y), .I0(A[0]), .I1(A[1]), .I2(A[2]), .I3(1'b0)); + end else + if (WIDTH == 4) begin + EFX_LUT4 #(.LUTMASK(LUT)) _TECHMAP_REPLACE_ (.O(Y), .I0(A[0]), .I1(A[1]), .I2(A[2]), .I3(A[3])); + end else begin + wire _TECHMAP_FAIL_ = 1; + end + endgenerate +endmodule +`endif diff --git a/resources/netlist/resources/kernel/share/efinix/cells_sim.v b/resources/netlist/resources/kernel/share/efinix/cells_sim.v new file mode 100644 index 0000000..22c7bc7 --- /dev/null +++ b/resources/netlist/resources/kernel/share/efinix/cells_sim.v @@ -0,0 +1,179 @@ +module EFX_LUT4( + output O, + input I0, + input I1, + input I2, + input I3 +); + parameter LUTMASK = 16'h0000; + + wire [7:0] s3 = I3 ? LUTMASK[15:8] : LUTMASK[7:0]; + wire [3:0] s2 = I2 ? s3[ 7:4] : s3[3:0]; + wire [1:0] s1 = I1 ? s2[ 3:2] : s2[1:0]; + assign O = I0 ? s1[1] : s1[0]; +endmodule + +module EFX_ADD( + output O, + output CO, + input I0, + input I1, + input CI +); + parameter I0_POLARITY = 1; + parameter I1_POLARITY = 1; + + wire i0; + wire i1; + + assign i0 = I0_POLARITY ? I0 : ~I0; + assign i1 = I1_POLARITY ? I1 : ~I1; + + assign {CO, O} = i0 + i1 + CI; +endmodule + +module EFX_FF( + output reg Q, + input D, + input CE, + (* clkbuf_sink *) + input CLK, + input SR +); + parameter CLK_POLARITY = 1; + parameter CE_POLARITY = 1; + parameter SR_POLARITY = 1; + parameter SR_SYNC = 0; + parameter SR_VALUE = 0; + parameter SR_SYNC_PRIORITY = 0; + parameter D_POLARITY = 1; + + wire clk; + wire ce; + wire sr; + wire d; + wire prio; + wire sync; + wire async; + + assign clk = CLK_POLARITY ? CLK : ~CLK; + assign ce = CE_POLARITY ? CE : ~CE; + assign sr = SR_POLARITY ? SR : ~SR; + assign d = D_POLARITY ? D : ~D; + + initial Q = 1'b0; + + generate + if (SR_SYNC == 1) + begin + if (SR_SYNC_PRIORITY == 1) + begin + always @(posedge clk) + if (sr) + Q <= SR_VALUE; + else if (ce) + Q <= d; + end + else + begin + always @(posedge clk) + if (ce) + begin + if (sr) + Q <= SR_VALUE; + else + Q <= d; + end + end + end + else + begin + always @(posedge clk or posedge sr) + if (sr) + Q <= SR_VALUE; + else if (ce) + Q <= d; + + end + endgenerate +endmodule + +module EFX_GBUFCE( + input CE, + input I, + (* clkbuf_driver *) + output O +); + parameter CE_POLARITY = 1'b1; + + wire ce; + assign ce = CE_POLARITY ? CE : ~CE; + + assign O = I & ce; + +endmodule + +module EFX_RAM_5K( + input [WRITE_WIDTH-1:0] WDATA, + input [WRITE_ADDR_WIDTH-1:0] WADDR, + input WE, + (* clkbuf_sink *) + input WCLK, + input WCLKE, + output [READ_WIDTH-1:0] RDATA, + input [READ_ADDR_WIDTH-1:0] RADDR, + input RE, + (* clkbuf_sink *) + input RCLK +); + parameter READ_WIDTH = 20; + parameter WRITE_WIDTH = 20; + parameter OUTPUT_REG = 1'b0; + parameter RCLK_POLARITY = 1'b1; + parameter RE_POLARITY = 1'b1; + parameter WCLK_POLARITY = 1'b1; + parameter WE_POLARITY = 1'b1; + parameter WCLKE_POLARITY = 1'b1; + parameter WRITE_MODE = "READ_FIRST"; + parameter INIT_0 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_1 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_2 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_3 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_4 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_5 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_6 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_7 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_8 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_9 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_10 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_11 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_12 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_13 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + + localparam READ_ADDR_WIDTH = + (READ_WIDTH == 16) ? 8 : // 256x16 + (READ_WIDTH == 8) ? 9 : // 512x8 + (READ_WIDTH == 4) ? 10 : // 1024x4 + (READ_WIDTH == 2) ? 11 : // 2048x2 + (READ_WIDTH == 1) ? 12 : // 4096x1 + (READ_WIDTH == 20) ? 8 : // 256x20 + (READ_WIDTH == 10) ? 9 : // 512x10 + (READ_WIDTH == 5) ? 10 : -1; // 1024x5 + + localparam WRITE_ADDR_WIDTH = + (WRITE_WIDTH == 16) ? 8 : // 256x16 + (WRITE_WIDTH == 8) ? 9 : // 512x8 + (WRITE_WIDTH == 4) ? 10 : // 1024x4 + (WRITE_WIDTH == 2) ? 11 : // 2048x2 + (WRITE_WIDTH == 1) ? 12 : // 4096x1 + (WRITE_WIDTH == 20) ? 8 : // 256x20 + (WRITE_WIDTH == 10) ? 9 : // 512x10 + (WRITE_WIDTH == 5) ? 10 : -1; // 1024x5 + +endmodule diff --git a/resources/netlist/resources/kernel/share/efinix/gbuf_map.v b/resources/netlist/resources/kernel/share/efinix/gbuf_map.v new file mode 100644 index 0000000..43e0c9a --- /dev/null +++ b/resources/netlist/resources/kernel/share/efinix/gbuf_map.v @@ -0,0 +1,3 @@ +module \$__EFX_GBUF (input I, output O); + EFX_GBUFCE #(.CE_POLARITY(1'b1)) _TECHMAP_REPLACE_ (.I(I), .O(O), .CE(1'b1)); +endmodule diff --git a/resources/netlist/resources/kernel/share/gate2lut.v b/resources/netlist/resources/kernel/share/gate2lut.v new file mode 100644 index 0000000..15cea3d --- /dev/null +++ b/resources/netlist/resources/kernel/share/gate2lut.v @@ -0,0 +1,87 @@ +(* techmap_celltype = "$_NOT_" *) +module _90_lut_not (A, Y); + input A; + output Y; + + wire [`LUT_WIDTH-1:0] AA; + assign AA = {A}; + + \$lut #( + .WIDTH(`LUT_WIDTH), + .LUT(4'b01) + ) lut ( + .A(AA), + .Y(Y) + ); +endmodule + +(* techmap_celltype = "$_OR_" *) +module _90_lut_or (A, B, Y); + input A, B; + output Y; + + wire [`LUT_WIDTH-1:0] AA; + assign AA = {B, A}; + + \$lut #( + .WIDTH(`LUT_WIDTH), + .LUT(4'b1110) + ) lut ( + .A(AA), + .Y(Y) + ); +endmodule + +(* techmap_celltype = "$_AND_" *) +module _90_lut_and (A, B, Y); + input A, B; + output Y; + + wire [`LUT_WIDTH-1:0] AA; + assign AA = {B, A}; + + \$lut #( + .WIDTH(`LUT_WIDTH), + .LUT(4'b1000) + ) lut ( + .A(AA), + .Y(Y) + ); +endmodule + +(* techmap_celltype = "$_XOR_" *) +module _90_lut_xor (A, B, Y); + input A, B; + output Y; + + wire [`LUT_WIDTH-1:0] AA; + assign AA = {B, A}; + + \$lut #( + .WIDTH(`LUT_WIDTH), + .LUT(4'b0110) + ) lut ( + .A(AA), + .Y(Y) + ); +endmodule + +(* techmap_celltype = "$_MUX_" *) +module _90_lut_mux (A, B, S, Y); + input A, B, S; + output Y; + + wire [`LUT_WIDTH-1:0] AA; + assign AA = {S, B, A}; + + \$lut #( + .WIDTH(`LUT_WIDTH), + // A 1010 1010 + // B 1100 1100 + // S 1111 0000 + .LUT(8'b 1100_1010) + ) lut ( + .A(AA), + .Y(Y) + ); +endmodule diff --git a/resources/netlist/resources/kernel/share/gatemate/arith_map.v b/resources/netlist/resources/kernel/share/gatemate/arith_map.v new file mode 100644 index 0000000..4d7e6c3 --- /dev/null +++ b/resources/netlist/resources/kernel/share/gatemate/arith_map.v @@ -0,0 +1,69 @@ +/* + * yosys -- Yosys Open SYnthesis Suite + * + * Copyright (C) 2021 Cologne Chip AG + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + */ + +(* techmap_celltype = "$alu" *) +module _80_gatemate_alu(A, B, CI, BI, X, Y, CO); + parameter A_SIGNED = 0; + parameter B_SIGNED = 0; + parameter A_WIDTH = 1; + parameter B_WIDTH = 1; + parameter Y_WIDTH = 1; + + (* force_downto *) + input [A_WIDTH-1:0] A; + (* force_downto *) + input [B_WIDTH-1:0] B; + (* force_downto *) + output [Y_WIDTH-1:0] X, Y; + + input CI, BI; + (* force_downto *) + output [Y_WIDTH-1:0] CO; + + wire _TECHMAP_FAIL_ = Y_WIDTH <= 2; + + (* force_downto *) + wire [Y_WIDTH-1:0] A_buf, B_buf; + \$pos #(.A_SIGNED(A_SIGNED), .A_WIDTH(A_WIDTH), .Y_WIDTH(Y_WIDTH)) A_conv (.A(A), .Y(A_buf)); + \$pos #(.A_SIGNED(B_SIGNED), .A_WIDTH(B_WIDTH), .Y_WIDTH(Y_WIDTH)) B_conv (.A(B), .Y(B_buf)); + + (* force_downto *) + wire [Y_WIDTH-1:0] AA = A_buf; + (* force_downto *) + wire [Y_WIDTH-1:0] BB = BI ? ~B_buf : B_buf; + (* force_downto *) + wire [Y_WIDTH-1:0] C = {CO, CI}; + + genvar i; + generate + for (i = 0; i < Y_WIDTH; i = i + 1) + begin: slice + CC_ADDF addf_i ( + .A(AA[i]), + .B(BB[i]), + .CI(C[i]), + .CO(CO[i]), + .S(Y[i]) + ); + end + endgenerate + + assign X = AA ^ BB; + +endmodule diff --git a/resources/netlist/resources/kernel/share/gatemate/brams.txt b/resources/netlist/resources/kernel/share/gatemate/brams.txt new file mode 100644 index 0000000..be22856 --- /dev/null +++ b/resources/netlist/resources/kernel/share/gatemate/brams.txt @@ -0,0 +1,80 @@ +ram block $__CC_BRAM_TDP_ { + option "MODE" "20K" { + abits 14; + widths 1 2 5 10 20 per_port; + cost 129; + } + option "MODE" "40K" { + abits 15; + widths 1 2 5 10 20 40 per_port; + cost 257; + } + option "MODE" "CASCADE" { + abits 16; + # hack to enforce same INIT layout as in the other modes + widths 1 2 5 per_port; + cost 513; + } + byte 1; + init no_undef; + port srsw "A" "B" { + clock anyedge; + clken; + option "MODE" "20K" { + width mix; + } + option "MODE" "40K" { + width mix; + } + option "MODE" "CASCADE" { + width mix 1; + } + portoption "WR_MODE" "NO_CHANGE" { + rdwr no_change; + } + portoption "WR_MODE" "WRITE_THROUGH" { + rdwr new; + wrtrans all new; + } + wrbe_separate; + optional_rw; + } +} + +ram block $__CC_BRAM_SDP_ { + option "MODE" "20K" { + abits 14; + widths 1 2 5 10 20 40 per_port; + cost 129; + } + option "MODE" "40K" { + abits 15; + widths 1 2 5 10 20 40 80 per_port; + cost 257; + } + byte 1; + init no_undef; + port sr "R" { + option "MODE" "20K" { + width 40; + } + option "MODE" "40K" { + width 80; + } + clock anyedge; + clken; + optional; + } + port sw "W" { + option "MODE" "20K" { + width 40; + } + option "MODE" "40K" { + width 80; + } + clock anyedge; + clken; + wrbe_separate; + optional; + } +} diff --git a/resources/netlist/resources/kernel/share/gatemate/brams_init_20.vh b/resources/netlist/resources/kernel/share/gatemate/brams_init_20.vh new file mode 100644 index 0000000..d0764ed --- /dev/null +++ b/resources/netlist/resources/kernel/share/gatemate/brams_init_20.vh @@ -0,0 +1,64 @@ +.INIT_00(permute_init(INIT[ 0*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_01(permute_init(INIT[ 1*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_02(permute_init(INIT[ 2*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_03(permute_init(INIT[ 3*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_04(permute_init(INIT[ 4*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_05(permute_init(INIT[ 5*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_06(permute_init(INIT[ 6*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_07(permute_init(INIT[ 7*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_08(permute_init(INIT[ 8*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_09(permute_init(INIT[ 9*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_0A(permute_init(INIT[ 10*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_0B(permute_init(INIT[ 11*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_0C(permute_init(INIT[ 12*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_0D(permute_init(INIT[ 13*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_0E(permute_init(INIT[ 14*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_0F(permute_init(INIT[ 15*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_10(permute_init(INIT[ 16*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_11(permute_init(INIT[ 17*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_12(permute_init(INIT[ 18*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_13(permute_init(INIT[ 19*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_14(permute_init(INIT[ 20*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_15(permute_init(INIT[ 21*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_16(permute_init(INIT[ 22*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_17(permute_init(INIT[ 23*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_18(permute_init(INIT[ 24*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_19(permute_init(INIT[ 25*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_1A(permute_init(INIT[ 26*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_1B(permute_init(INIT[ 27*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_1C(permute_init(INIT[ 28*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_1D(permute_init(INIT[ 29*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_1E(permute_init(INIT[ 30*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_1F(permute_init(INIT[ 31*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_20(permute_init(INIT[ 32*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_21(permute_init(INIT[ 33*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_22(permute_init(INIT[ 34*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_23(permute_init(INIT[ 35*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_24(permute_init(INIT[ 36*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_25(permute_init(INIT[ 37*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_26(permute_init(INIT[ 38*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_27(permute_init(INIT[ 39*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_28(permute_init(INIT[ 40*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_29(permute_init(INIT[ 41*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_2A(permute_init(INIT[ 42*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_2B(permute_init(INIT[ 43*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_2C(permute_init(INIT[ 44*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_2D(permute_init(INIT[ 45*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_2E(permute_init(INIT[ 46*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_2F(permute_init(INIT[ 47*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_30(permute_init(INIT[ 48*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_31(permute_init(INIT[ 49*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_32(permute_init(INIT[ 50*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_33(permute_init(INIT[ 51*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_34(permute_init(INIT[ 52*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_35(permute_init(INIT[ 53*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_36(permute_init(INIT[ 54*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_37(permute_init(INIT[ 55*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_38(permute_init(INIT[ 56*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_39(permute_init(INIT[ 57*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_3A(permute_init(INIT[ 58*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_3B(permute_init(INIT[ 59*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_3C(permute_init(INIT[ 60*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_3D(permute_init(INIT[ 61*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_3E(permute_init(INIT[ 62*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_3F(permute_init(INIT[ 63*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), diff --git a/resources/netlist/resources/kernel/share/gatemate/brams_init_40.vh b/resources/netlist/resources/kernel/share/gatemate/brams_init_40.vh new file mode 100644 index 0000000..6493425 --- /dev/null +++ b/resources/netlist/resources/kernel/share/gatemate/brams_init_40.vh @@ -0,0 +1,260 @@ +`ifdef INIT_LOWER +.INIT_00(permute_init(INIT[ 0*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_01(permute_init(INIT[ 1*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_02(permute_init(INIT[ 2*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_03(permute_init(INIT[ 3*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_04(permute_init(INIT[ 4*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_05(permute_init(INIT[ 5*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_06(permute_init(INIT[ 6*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_07(permute_init(INIT[ 7*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_08(permute_init(INIT[ 8*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_09(permute_init(INIT[ 9*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_0A(permute_init(INIT[ 10*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_0B(permute_init(INIT[ 11*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_0C(permute_init(INIT[ 12*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_0D(permute_init(INIT[ 13*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_0E(permute_init(INIT[ 14*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_0F(permute_init(INIT[ 15*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_10(permute_init(INIT[ 16*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_11(permute_init(INIT[ 17*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_12(permute_init(INIT[ 18*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_13(permute_init(INIT[ 19*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_14(permute_init(INIT[ 20*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_15(permute_init(INIT[ 21*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_16(permute_init(INIT[ 22*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_17(permute_init(INIT[ 23*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_18(permute_init(INIT[ 24*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_19(permute_init(INIT[ 25*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_1A(permute_init(INIT[ 26*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_1B(permute_init(INIT[ 27*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_1C(permute_init(INIT[ 28*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_1D(permute_init(INIT[ 29*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_1E(permute_init(INIT[ 30*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_1F(permute_init(INIT[ 31*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_20(permute_init(INIT[ 32*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_21(permute_init(INIT[ 33*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_22(permute_init(INIT[ 34*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_23(permute_init(INIT[ 35*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_24(permute_init(INIT[ 36*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_25(permute_init(INIT[ 37*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_26(permute_init(INIT[ 38*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_27(permute_init(INIT[ 39*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_28(permute_init(INIT[ 40*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_29(permute_init(INIT[ 41*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_2A(permute_init(INIT[ 42*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_2B(permute_init(INIT[ 43*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_2C(permute_init(INIT[ 44*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_2D(permute_init(INIT[ 45*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_2E(permute_init(INIT[ 46*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_2F(permute_init(INIT[ 47*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_30(permute_init(INIT[ 48*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_31(permute_init(INIT[ 49*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_32(permute_init(INIT[ 50*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_33(permute_init(INIT[ 51*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_34(permute_init(INIT[ 52*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_35(permute_init(INIT[ 53*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_36(permute_init(INIT[ 54*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_37(permute_init(INIT[ 55*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_38(permute_init(INIT[ 56*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_39(permute_init(INIT[ 57*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_3A(permute_init(INIT[ 58*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_3B(permute_init(INIT[ 59*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_3C(permute_init(INIT[ 60*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_3D(permute_init(INIT[ 61*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_3E(permute_init(INIT[ 62*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_3F(permute_init(INIT[ 63*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_40(permute_init(INIT[ 64*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_41(permute_init(INIT[ 65*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_42(permute_init(INIT[ 66*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_43(permute_init(INIT[ 67*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_44(permute_init(INIT[ 68*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_45(permute_init(INIT[ 69*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_46(permute_init(INIT[ 70*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_47(permute_init(INIT[ 71*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_48(permute_init(INIT[ 72*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_49(permute_init(INIT[ 73*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_4A(permute_init(INIT[ 74*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_4B(permute_init(INIT[ 75*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_4C(permute_init(INIT[ 76*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_4D(permute_init(INIT[ 77*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_4E(permute_init(INIT[ 78*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_4F(permute_init(INIT[ 79*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_50(permute_init(INIT[ 80*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_51(permute_init(INIT[ 81*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_52(permute_init(INIT[ 82*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_53(permute_init(INIT[ 83*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_54(permute_init(INIT[ 84*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_55(permute_init(INIT[ 85*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_56(permute_init(INIT[ 86*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_57(permute_init(INIT[ 87*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_58(permute_init(INIT[ 88*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_59(permute_init(INIT[ 89*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_5A(permute_init(INIT[ 90*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_5B(permute_init(INIT[ 91*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_5C(permute_init(INIT[ 92*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_5D(permute_init(INIT[ 93*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_5E(permute_init(INIT[ 94*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_5F(permute_init(INIT[ 95*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_60(permute_init(INIT[ 96*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_61(permute_init(INIT[ 97*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_62(permute_init(INIT[ 98*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_63(permute_init(INIT[ 99*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_64(permute_init(INIT[100*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_65(permute_init(INIT[101*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_66(permute_init(INIT[102*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_67(permute_init(INIT[103*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_68(permute_init(INIT[104*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_69(permute_init(INIT[105*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_6A(permute_init(INIT[106*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_6B(permute_init(INIT[107*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_6C(permute_init(INIT[108*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_6D(permute_init(INIT[109*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_6E(permute_init(INIT[110*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_6F(permute_init(INIT[111*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_70(permute_init(INIT[112*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_71(permute_init(INIT[113*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_72(permute_init(INIT[114*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_73(permute_init(INIT[115*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_74(permute_init(INIT[116*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_75(permute_init(INIT[117*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_76(permute_init(INIT[118*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_77(permute_init(INIT[119*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_78(permute_init(INIT[120*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_79(permute_init(INIT[121*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_7A(permute_init(INIT[122*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_7B(permute_init(INIT[123*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_7C(permute_init(INIT[124*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_7D(permute_init(INIT[125*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_7E(permute_init(INIT[126*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_7F(permute_init(INIT[127*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +`endif +`ifdef INIT_UPPER +.INIT_00(permute_init(INIT[128*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_01(permute_init(INIT[129*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_02(permute_init(INIT[130*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_03(permute_init(INIT[131*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_04(permute_init(INIT[132*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_05(permute_init(INIT[133*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_06(permute_init(INIT[134*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_07(permute_init(INIT[135*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_08(permute_init(INIT[136*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_09(permute_init(INIT[137*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_0A(permute_init(INIT[138*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_0B(permute_init(INIT[139*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_0C(permute_init(INIT[140*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_0D(permute_init(INIT[141*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_0E(permute_init(INIT[142*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_0F(permute_init(INIT[143*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_10(permute_init(INIT[144*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_11(permute_init(INIT[145*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_12(permute_init(INIT[146*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_13(permute_init(INIT[147*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_14(permute_init(INIT[148*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_15(permute_init(INIT[149*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_16(permute_init(INIT[150*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_17(permute_init(INIT[151*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_18(permute_init(INIT[152*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_19(permute_init(INIT[153*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_1A(permute_init(INIT[154*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_1B(permute_init(INIT[155*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_1C(permute_init(INIT[156*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_1D(permute_init(INIT[157*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_1E(permute_init(INIT[158*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_1F(permute_init(INIT[159*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_20(permute_init(INIT[160*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_21(permute_init(INIT[161*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_22(permute_init(INIT[162*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_23(permute_init(INIT[163*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_24(permute_init(INIT[164*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_25(permute_init(INIT[165*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_26(permute_init(INIT[166*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_27(permute_init(INIT[167*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_28(permute_init(INIT[168*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_29(permute_init(INIT[169*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_2A(permute_init(INIT[170*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_2B(permute_init(INIT[171*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_2C(permute_init(INIT[172*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_2D(permute_init(INIT[173*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_2E(permute_init(INIT[174*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_2F(permute_init(INIT[175*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_30(permute_init(INIT[176*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_31(permute_init(INIT[177*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_32(permute_init(INIT[178*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_33(permute_init(INIT[179*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_34(permute_init(INIT[180*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_35(permute_init(INIT[181*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_36(permute_init(INIT[182*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_37(permute_init(INIT[183*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_38(permute_init(INIT[184*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_39(permute_init(INIT[185*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_3A(permute_init(INIT[186*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_3B(permute_init(INIT[187*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_3C(permute_init(INIT[188*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_3D(permute_init(INIT[189*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_3E(permute_init(INIT[190*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_3F(permute_init(INIT[191*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_40(permute_init(INIT[192*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_41(permute_init(INIT[193*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_42(permute_init(INIT[194*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_43(permute_init(INIT[195*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_44(permute_init(INIT[196*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_45(permute_init(INIT[197*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_46(permute_init(INIT[198*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_47(permute_init(INIT[199*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_48(permute_init(INIT[200*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_49(permute_init(INIT[201*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_4A(permute_init(INIT[202*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_4B(permute_init(INIT[203*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_4C(permute_init(INIT[204*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_4D(permute_init(INIT[205*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_4E(permute_init(INIT[206*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_4F(permute_init(INIT[207*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_50(permute_init(INIT[208*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_51(permute_init(INIT[209*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_52(permute_init(INIT[210*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_53(permute_init(INIT[211*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_54(permute_init(INIT[212*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_55(permute_init(INIT[213*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_56(permute_init(INIT[214*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_57(permute_init(INIT[215*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_58(permute_init(INIT[216*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_59(permute_init(INIT[217*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_5A(permute_init(INIT[218*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_5B(permute_init(INIT[219*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_5C(permute_init(INIT[220*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_5D(permute_init(INIT[221*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_5E(permute_init(INIT[222*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_5F(permute_init(INIT[223*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_60(permute_init(INIT[224*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_61(permute_init(INIT[225*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_62(permute_init(INIT[226*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_63(permute_init(INIT[227*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_64(permute_init(INIT[228*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_65(permute_init(INIT[229*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_66(permute_init(INIT[230*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_67(permute_init(INIT[231*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_68(permute_init(INIT[232*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_69(permute_init(INIT[233*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_6A(permute_init(INIT[234*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_6B(permute_init(INIT[235*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_6C(permute_init(INIT[236*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_6D(permute_init(INIT[237*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_6E(permute_init(INIT[238*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_6F(permute_init(INIT[239*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_70(permute_init(INIT[240*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_71(permute_init(INIT[241*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_72(permute_init(INIT[242*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_73(permute_init(INIT[243*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_74(permute_init(INIT[244*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_75(permute_init(INIT[245*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_76(permute_init(INIT[246*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_77(permute_init(INIT[247*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_78(permute_init(INIT[248*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_79(permute_init(INIT[249*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_7A(permute_init(INIT[250*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_7B(permute_init(INIT[251*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_7C(permute_init(INIT[252*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_7D(permute_init(INIT[253*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_7E(permute_init(INIT[254*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +.INIT_7F(permute_init(INIT[255*INIT_CHUNK_SIZE +: INIT_CHUNK_SIZE])), +`endif diff --git a/resources/netlist/resources/kernel/share/gatemate/brams_map.v b/resources/netlist/resources/kernel/share/gatemate/brams_map.v new file mode 100644 index 0000000..7eeb14e --- /dev/null +++ b/resources/netlist/resources/kernel/share/gatemate/brams_map.v @@ -0,0 +1,882 @@ +module $__CC_BRAM_TDP_(...); + +parameter INIT = 0; +parameter OPTION_MODE = "20K"; + +parameter PORT_A_CLK_POL = 1; +parameter PORT_A_RD_USED = 1; +parameter PORT_A_WR_USED = 1; +parameter PORT_A_RD_WIDTH = 1; +parameter PORT_A_WR_WIDTH = 1; +parameter PORT_A_WR_BE_WIDTH = 1; +parameter PORT_A_OPTION_WR_MODE = "NO_CHANGE"; + +parameter PORT_B_CLK_POL = 1; +parameter PORT_B_RD_USED = 1; +parameter PORT_B_WR_USED = 1; +parameter PORT_B_RD_WIDTH = 1; +parameter PORT_B_WR_WIDTH = 1; +parameter PORT_B_WR_BE_WIDTH = 1; +parameter PORT_B_OPTION_WR_MODE = "NO_CHANGE"; + +input PORT_A_CLK; +input PORT_A_CLK_EN; +input PORT_A_WR_EN; +input [15:0] PORT_A_ADDR; +input [PORT_A_WR_BE_WIDTH-1:0] PORT_A_WR_BE; +input [PORT_A_WR_WIDTH-1:0] PORT_A_WR_DATA; +output [PORT_A_RD_WIDTH-1:0] PORT_A_RD_DATA; + +input PORT_B_CLK; +input PORT_B_CLK_EN; +input PORT_B_WR_EN; +input [15:0] PORT_B_ADDR; +input [PORT_B_WR_BE_WIDTH-1:0] PORT_B_WR_BE; +input [PORT_B_WR_WIDTH-1:0] PORT_B_WR_DATA; +output [PORT_B_RD_WIDTH-1:0] PORT_B_RD_DATA; + +generate + if (OPTION_MODE == "20K") begin + CC_BRAM_20K #( + .INIT_00(INIT['h00*320+:320]), + .INIT_01(INIT['h01*320+:320]), + .INIT_02(INIT['h02*320+:320]), + .INIT_03(INIT['h03*320+:320]), + .INIT_04(INIT['h04*320+:320]), + .INIT_05(INIT['h05*320+:320]), + .INIT_06(INIT['h06*320+:320]), + .INIT_07(INIT['h07*320+:320]), + .INIT_08(INIT['h08*320+:320]), + .INIT_09(INIT['h09*320+:320]), + .INIT_0A(INIT['h0a*320+:320]), + .INIT_0B(INIT['h0b*320+:320]), + .INIT_0C(INIT['h0c*320+:320]), + .INIT_0D(INIT['h0d*320+:320]), + .INIT_0E(INIT['h0e*320+:320]), + .INIT_0F(INIT['h0f*320+:320]), + .INIT_10(INIT['h10*320+:320]), + .INIT_11(INIT['h11*320+:320]), + .INIT_12(INIT['h12*320+:320]), + .INIT_13(INIT['h13*320+:320]), + .INIT_14(INIT['h14*320+:320]), + .INIT_15(INIT['h15*320+:320]), + .INIT_16(INIT['h16*320+:320]), + .INIT_17(INIT['h17*320+:320]), + .INIT_18(INIT['h18*320+:320]), + .INIT_19(INIT['h19*320+:320]), + .INIT_1A(INIT['h1a*320+:320]), + .INIT_1B(INIT['h1b*320+:320]), + .INIT_1C(INIT['h1c*320+:320]), + .INIT_1D(INIT['h1d*320+:320]), + .INIT_1E(INIT['h1e*320+:320]), + .INIT_1F(INIT['h1f*320+:320]), + .INIT_20(INIT['h20*320+:320]), + .INIT_21(INIT['h21*320+:320]), + .INIT_22(INIT['h22*320+:320]), + .INIT_23(INIT['h23*320+:320]), + .INIT_24(INIT['h24*320+:320]), + .INIT_25(INIT['h25*320+:320]), + .INIT_26(INIT['h26*320+:320]), + .INIT_27(INIT['h27*320+:320]), + .INIT_28(INIT['h28*320+:320]), + .INIT_29(INIT['h29*320+:320]), + .INIT_2A(INIT['h2a*320+:320]), + .INIT_2B(INIT['h2b*320+:320]), + .INIT_2C(INIT['h2c*320+:320]), + .INIT_2D(INIT['h2d*320+:320]), + .INIT_2E(INIT['h2e*320+:320]), + .INIT_2F(INIT['h2f*320+:320]), + .INIT_30(INIT['h30*320+:320]), + .INIT_31(INIT['h31*320+:320]), + .INIT_32(INIT['h32*320+:320]), + .INIT_33(INIT['h33*320+:320]), + .INIT_34(INIT['h34*320+:320]), + .INIT_35(INIT['h35*320+:320]), + .INIT_36(INIT['h36*320+:320]), + .INIT_37(INIT['h37*320+:320]), + .INIT_38(INIT['h38*320+:320]), + .INIT_39(INIT['h39*320+:320]), + .INIT_3A(INIT['h3a*320+:320]), + .INIT_3B(INIT['h3b*320+:320]), + .INIT_3C(INIT['h3c*320+:320]), + .INIT_3D(INIT['h3d*320+:320]), + .INIT_3E(INIT['h3e*320+:320]), + .INIT_3F(INIT['h3f*320+:320]), + .A_RD_WIDTH(PORT_A_RD_USED ? PORT_A_RD_WIDTH : 0), + .A_WR_WIDTH(PORT_A_WR_USED ? PORT_A_WR_WIDTH : 0), + .B_RD_WIDTH(PORT_B_RD_USED ? PORT_B_RD_WIDTH : 0), + .B_WR_WIDTH(PORT_B_WR_USED ? PORT_B_WR_WIDTH : 0), + .RAM_MODE("TDP"), + .A_WR_MODE(PORT_A_OPTION_WR_MODE), + .B_WR_MODE(PORT_B_OPTION_WR_MODE), + .A_CLK_INV(!PORT_A_CLK_POL), + .B_CLK_INV(!PORT_B_CLK_POL), + ) _TECHMAP_REPLACE_ ( + .A_CLK(PORT_A_CLK), + .A_EN(PORT_A_CLK_EN), + .A_WE(PORT_A_WR_EN), + .A_BM(PORT_A_WR_BE), + .A_DI(PORT_A_WR_DATA), + .A_ADDR({PORT_A_ADDR[13:5], 1'b0, PORT_A_ADDR[4:0], 1'b0}), + .A_DO(PORT_A_RD_DATA), + .B_CLK(PORT_B_CLK), + .B_EN(PORT_B_CLK_EN), + .B_WE(PORT_B_WR_EN), + .B_BM(PORT_B_WR_BE), + .B_DI(PORT_B_WR_DATA), + .B_ADDR({PORT_B_ADDR[13:5], 1'b0, PORT_B_ADDR[4:0], 1'b0}), + .B_DO(PORT_B_RD_DATA), + ); + end else if (OPTION_MODE == "40K") begin + CC_BRAM_40K #( + .INIT_00(INIT['h00*320+:320]), + .INIT_01(INIT['h01*320+:320]), + .INIT_02(INIT['h02*320+:320]), + .INIT_03(INIT['h03*320+:320]), + .INIT_04(INIT['h04*320+:320]), + .INIT_05(INIT['h05*320+:320]), + .INIT_06(INIT['h06*320+:320]), + .INIT_07(INIT['h07*320+:320]), + .INIT_08(INIT['h08*320+:320]), + .INIT_09(INIT['h09*320+:320]), + .INIT_0A(INIT['h0a*320+:320]), + .INIT_0B(INIT['h0b*320+:320]), + .INIT_0C(INIT['h0c*320+:320]), + .INIT_0D(INIT['h0d*320+:320]), + .INIT_0E(INIT['h0e*320+:320]), + .INIT_0F(INIT['h0f*320+:320]), + .INIT_10(INIT['h10*320+:320]), + .INIT_11(INIT['h11*320+:320]), + .INIT_12(INIT['h12*320+:320]), + .INIT_13(INIT['h13*320+:320]), + .INIT_14(INIT['h14*320+:320]), + .INIT_15(INIT['h15*320+:320]), + .INIT_16(INIT['h16*320+:320]), + .INIT_17(INIT['h17*320+:320]), + .INIT_18(INIT['h18*320+:320]), + .INIT_19(INIT['h19*320+:320]), + .INIT_1A(INIT['h1a*320+:320]), + .INIT_1B(INIT['h1b*320+:320]), + .INIT_1C(INIT['h1c*320+:320]), + .INIT_1D(INIT['h1d*320+:320]), + .INIT_1E(INIT['h1e*320+:320]), + .INIT_1F(INIT['h1f*320+:320]), + .INIT_20(INIT['h20*320+:320]), + .INIT_21(INIT['h21*320+:320]), + .INIT_22(INIT['h22*320+:320]), + .INIT_23(INIT['h23*320+:320]), + .INIT_24(INIT['h24*320+:320]), + .INIT_25(INIT['h25*320+:320]), + .INIT_26(INIT['h26*320+:320]), + .INIT_27(INIT['h27*320+:320]), + .INIT_28(INIT['h28*320+:320]), + .INIT_29(INIT['h29*320+:320]), + .INIT_2A(INIT['h2a*320+:320]), + .INIT_2B(INIT['h2b*320+:320]), + .INIT_2C(INIT['h2c*320+:320]), + .INIT_2D(INIT['h2d*320+:320]), + .INIT_2E(INIT['h2e*320+:320]), + .INIT_2F(INIT['h2f*320+:320]), + .INIT_30(INIT['h30*320+:320]), + .INIT_31(INIT['h31*320+:320]), + .INIT_32(INIT['h32*320+:320]), + .INIT_33(INIT['h33*320+:320]), + .INIT_34(INIT['h34*320+:320]), + .INIT_35(INIT['h35*320+:320]), + .INIT_36(INIT['h36*320+:320]), + .INIT_37(INIT['h37*320+:320]), + .INIT_38(INIT['h38*320+:320]), + .INIT_39(INIT['h39*320+:320]), + .INIT_3A(INIT['h3a*320+:320]), + .INIT_3B(INIT['h3b*320+:320]), + .INIT_3C(INIT['h3c*320+:320]), + .INIT_3D(INIT['h3d*320+:320]), + .INIT_3E(INIT['h3e*320+:320]), + .INIT_3F(INIT['h3f*320+:320]), + .INIT_40(INIT['h40*320+:320]), + .INIT_41(INIT['h41*320+:320]), + .INIT_42(INIT['h42*320+:320]), + .INIT_43(INIT['h43*320+:320]), + .INIT_44(INIT['h44*320+:320]), + .INIT_45(INIT['h45*320+:320]), + .INIT_46(INIT['h46*320+:320]), + .INIT_47(INIT['h47*320+:320]), + .INIT_48(INIT['h48*320+:320]), + .INIT_49(INIT['h49*320+:320]), + .INIT_4A(INIT['h4a*320+:320]), + .INIT_4B(INIT['h4b*320+:320]), + .INIT_4C(INIT['h4c*320+:320]), + .INIT_4D(INIT['h4d*320+:320]), + .INIT_4E(INIT['h4e*320+:320]), + .INIT_4F(INIT['h4f*320+:320]), + .INIT_50(INIT['h50*320+:320]), + .INIT_51(INIT['h51*320+:320]), + .INIT_52(INIT['h52*320+:320]), + .INIT_53(INIT['h53*320+:320]), + .INIT_54(INIT['h54*320+:320]), + .INIT_55(INIT['h55*320+:320]), + .INIT_56(INIT['h56*320+:320]), + .INIT_57(INIT['h57*320+:320]), + .INIT_58(INIT['h58*320+:320]), + .INIT_59(INIT['h59*320+:320]), + .INIT_5A(INIT['h5a*320+:320]), + .INIT_5B(INIT['h5b*320+:320]), + .INIT_5C(INIT['h5c*320+:320]), + .INIT_5D(INIT['h5d*320+:320]), + .INIT_5E(INIT['h5e*320+:320]), + .INIT_5F(INIT['h5f*320+:320]), + .INIT_60(INIT['h60*320+:320]), + .INIT_61(INIT['h61*320+:320]), + .INIT_62(INIT['h62*320+:320]), + .INIT_63(INIT['h63*320+:320]), + .INIT_64(INIT['h64*320+:320]), + .INIT_65(INIT['h65*320+:320]), + .INIT_66(INIT['h66*320+:320]), + .INIT_67(INIT['h67*320+:320]), + .INIT_68(INIT['h68*320+:320]), + .INIT_69(INIT['h69*320+:320]), + .INIT_6A(INIT['h6a*320+:320]), + .INIT_6B(INIT['h6b*320+:320]), + .INIT_6C(INIT['h6c*320+:320]), + .INIT_6D(INIT['h6d*320+:320]), + .INIT_6E(INIT['h6e*320+:320]), + .INIT_6F(INIT['h6f*320+:320]), + .INIT_70(INIT['h70*320+:320]), + .INIT_71(INIT['h71*320+:320]), + .INIT_72(INIT['h72*320+:320]), + .INIT_73(INIT['h73*320+:320]), + .INIT_74(INIT['h74*320+:320]), + .INIT_75(INIT['h75*320+:320]), + .INIT_76(INIT['h76*320+:320]), + .INIT_77(INIT['h77*320+:320]), + .INIT_78(INIT['h78*320+:320]), + .INIT_79(INIT['h79*320+:320]), + .INIT_7A(INIT['h7a*320+:320]), + .INIT_7B(INIT['h7b*320+:320]), + .INIT_7C(INIT['h7c*320+:320]), + .INIT_7D(INIT['h7d*320+:320]), + .INIT_7E(INIT['h7e*320+:320]), + .INIT_7F(INIT['h7f*320+:320]), + .A_RD_WIDTH(PORT_A_RD_USED ? PORT_A_RD_WIDTH : 0), + .A_WR_WIDTH(PORT_A_WR_USED ? PORT_A_WR_WIDTH : 0), + .B_RD_WIDTH(PORT_B_RD_USED ? PORT_B_RD_WIDTH : 0), + .B_WR_WIDTH(PORT_B_WR_USED ? PORT_B_WR_WIDTH : 0), + .RAM_MODE("TDP"), + .A_WR_MODE(PORT_A_OPTION_WR_MODE), + .B_WR_MODE(PORT_B_OPTION_WR_MODE), + .A_CLK_INV(!PORT_A_CLK_POL), + .B_CLK_INV(!PORT_B_CLK_POL), + ) _TECHMAP_REPLACE_ ( + .A_CLK(PORT_A_CLK), + .A_EN(PORT_A_CLK_EN), + .A_WE(PORT_A_WR_EN), + .A_BM(PORT_A_WR_BE), + .A_DI(PORT_A_WR_DATA), + .A_ADDR({PORT_A_ADDR[14:0], 1'b0}), + .A_DO(PORT_A_RD_DATA), + .B_CLK(PORT_B_CLK), + .B_EN(PORT_B_CLK_EN), + .B_WE(PORT_B_WR_EN), + .B_BM(PORT_B_WR_BE), + .B_DI(PORT_B_WR_DATA), + .B_ADDR({PORT_B_ADDR[14:0], 1'b0}), + .B_DO(PORT_B_RD_DATA), + ); + end else begin + wire CAS_A, CAS_B; + CC_BRAM_40K #( + .INIT_00(INIT['h00*320+:320]), + .INIT_01(INIT['h01*320+:320]), + .INIT_02(INIT['h02*320+:320]), + .INIT_03(INIT['h03*320+:320]), + .INIT_04(INIT['h04*320+:320]), + .INIT_05(INIT['h05*320+:320]), + .INIT_06(INIT['h06*320+:320]), + .INIT_07(INIT['h07*320+:320]), + .INIT_08(INIT['h08*320+:320]), + .INIT_09(INIT['h09*320+:320]), + .INIT_0A(INIT['h0a*320+:320]), + .INIT_0B(INIT['h0b*320+:320]), + .INIT_0C(INIT['h0c*320+:320]), + .INIT_0D(INIT['h0d*320+:320]), + .INIT_0E(INIT['h0e*320+:320]), + .INIT_0F(INIT['h0f*320+:320]), + .INIT_10(INIT['h10*320+:320]), + .INIT_11(INIT['h11*320+:320]), + .INIT_12(INIT['h12*320+:320]), + .INIT_13(INIT['h13*320+:320]), + .INIT_14(INIT['h14*320+:320]), + .INIT_15(INIT['h15*320+:320]), + .INIT_16(INIT['h16*320+:320]), + .INIT_17(INIT['h17*320+:320]), + .INIT_18(INIT['h18*320+:320]), + .INIT_19(INIT['h19*320+:320]), + .INIT_1A(INIT['h1a*320+:320]), + .INIT_1B(INIT['h1b*320+:320]), + .INIT_1C(INIT['h1c*320+:320]), + .INIT_1D(INIT['h1d*320+:320]), + .INIT_1E(INIT['h1e*320+:320]), + .INIT_1F(INIT['h1f*320+:320]), + .INIT_20(INIT['h20*320+:320]), + .INIT_21(INIT['h21*320+:320]), + .INIT_22(INIT['h22*320+:320]), + .INIT_23(INIT['h23*320+:320]), + .INIT_24(INIT['h24*320+:320]), + .INIT_25(INIT['h25*320+:320]), + .INIT_26(INIT['h26*320+:320]), + .INIT_27(INIT['h27*320+:320]), + .INIT_28(INIT['h28*320+:320]), + .INIT_29(INIT['h29*320+:320]), + .INIT_2A(INIT['h2a*320+:320]), + .INIT_2B(INIT['h2b*320+:320]), + .INIT_2C(INIT['h2c*320+:320]), + .INIT_2D(INIT['h2d*320+:320]), + .INIT_2E(INIT['h2e*320+:320]), + .INIT_2F(INIT['h2f*320+:320]), + .INIT_30(INIT['h30*320+:320]), + .INIT_31(INIT['h31*320+:320]), + .INIT_32(INIT['h32*320+:320]), + .INIT_33(INIT['h33*320+:320]), + .INIT_34(INIT['h34*320+:320]), + .INIT_35(INIT['h35*320+:320]), + .INIT_36(INIT['h36*320+:320]), + .INIT_37(INIT['h37*320+:320]), + .INIT_38(INIT['h38*320+:320]), + .INIT_39(INIT['h39*320+:320]), + .INIT_3A(INIT['h3a*320+:320]), + .INIT_3B(INIT['h3b*320+:320]), + .INIT_3C(INIT['h3c*320+:320]), + .INIT_3D(INIT['h3d*320+:320]), + .INIT_3E(INIT['h3e*320+:320]), + .INIT_3F(INIT['h3f*320+:320]), + .INIT_40(INIT['h40*320+:320]), + .INIT_41(INIT['h41*320+:320]), + .INIT_42(INIT['h42*320+:320]), + .INIT_43(INIT['h43*320+:320]), + .INIT_44(INIT['h44*320+:320]), + .INIT_45(INIT['h45*320+:320]), + .INIT_46(INIT['h46*320+:320]), + .INIT_47(INIT['h47*320+:320]), + .INIT_48(INIT['h48*320+:320]), + .INIT_49(INIT['h49*320+:320]), + .INIT_4A(INIT['h4a*320+:320]), + .INIT_4B(INIT['h4b*320+:320]), + .INIT_4C(INIT['h4c*320+:320]), + .INIT_4D(INIT['h4d*320+:320]), + .INIT_4E(INIT['h4e*320+:320]), + .INIT_4F(INIT['h4f*320+:320]), + .INIT_50(INIT['h50*320+:320]), + .INIT_51(INIT['h51*320+:320]), + .INIT_52(INIT['h52*320+:320]), + .INIT_53(INIT['h53*320+:320]), + .INIT_54(INIT['h54*320+:320]), + .INIT_55(INIT['h55*320+:320]), + .INIT_56(INIT['h56*320+:320]), + .INIT_57(INIT['h57*320+:320]), + .INIT_58(INIT['h58*320+:320]), + .INIT_59(INIT['h59*320+:320]), + .INIT_5A(INIT['h5a*320+:320]), + .INIT_5B(INIT['h5b*320+:320]), + .INIT_5C(INIT['h5c*320+:320]), + .INIT_5D(INIT['h5d*320+:320]), + .INIT_5E(INIT['h5e*320+:320]), + .INIT_5F(INIT['h5f*320+:320]), + .INIT_60(INIT['h60*320+:320]), + .INIT_61(INIT['h61*320+:320]), + .INIT_62(INIT['h62*320+:320]), + .INIT_63(INIT['h63*320+:320]), + .INIT_64(INIT['h64*320+:320]), + .INIT_65(INIT['h65*320+:320]), + .INIT_66(INIT['h66*320+:320]), + .INIT_67(INIT['h67*320+:320]), + .INIT_68(INIT['h68*320+:320]), + .INIT_69(INIT['h69*320+:320]), + .INIT_6A(INIT['h6a*320+:320]), + .INIT_6B(INIT['h6b*320+:320]), + .INIT_6C(INIT['h6c*320+:320]), + .INIT_6D(INIT['h6d*320+:320]), + .INIT_6E(INIT['h6e*320+:320]), + .INIT_6F(INIT['h6f*320+:320]), + .INIT_70(INIT['h70*320+:320]), + .INIT_71(INIT['h71*320+:320]), + .INIT_72(INIT['h72*320+:320]), + .INIT_73(INIT['h73*320+:320]), + .INIT_74(INIT['h74*320+:320]), + .INIT_75(INIT['h75*320+:320]), + .INIT_76(INIT['h76*320+:320]), + .INIT_77(INIT['h77*320+:320]), + .INIT_78(INIT['h78*320+:320]), + .INIT_79(INIT['h79*320+:320]), + .INIT_7A(INIT['h7a*320+:320]), + .INIT_7B(INIT['h7b*320+:320]), + .INIT_7C(INIT['h7c*320+:320]), + .INIT_7D(INIT['h7d*320+:320]), + .INIT_7E(INIT['h7e*320+:320]), + .INIT_7F(INIT['h7f*320+:320]), + .A_RD_WIDTH(PORT_A_RD_USED ? PORT_A_RD_WIDTH : 0), + .A_WR_WIDTH(PORT_A_WR_USED ? PORT_A_WR_WIDTH : 0), + .B_RD_WIDTH(PORT_B_RD_USED ? PORT_B_RD_WIDTH : 0), + .B_WR_WIDTH(PORT_B_WR_USED ? PORT_B_WR_WIDTH : 0), + .RAM_MODE("TDP"), + .A_WR_MODE(PORT_A_OPTION_WR_MODE), + .B_WR_MODE(PORT_B_OPTION_WR_MODE), + .A_CLK_INV(!PORT_A_CLK_POL), + .B_CLK_INV(!PORT_B_CLK_POL), + .CAS("LOWER"), + ) lower ( + .A_CO(CAS_A), + .B_CO(CAS_B), + .A_CLK(PORT_A_CLK), + .A_EN(PORT_A_CLK_EN), + .A_WE(PORT_A_WR_EN), + .A_BM(PORT_A_WR_BE), + .A_DI(PORT_A_WR_DATA), + .A_ADDR({PORT_A_ADDR[14:0], PORT_A_ADDR[15]}), + .B_CLK(PORT_B_CLK), + .B_EN(PORT_B_CLK_EN), + .B_WE(PORT_B_WR_EN), + .B_BM(PORT_B_WR_BE), + .B_DI(PORT_B_WR_DATA), + .B_ADDR({PORT_B_ADDR[14:0], PORT_B_ADDR[15]}), + ); + CC_BRAM_40K #( + .INIT_00(INIT['h80*320+:320]), + .INIT_01(INIT['h81*320+:320]), + .INIT_02(INIT['h82*320+:320]), + .INIT_03(INIT['h83*320+:320]), + .INIT_04(INIT['h84*320+:320]), + .INIT_05(INIT['h85*320+:320]), + .INIT_06(INIT['h86*320+:320]), + .INIT_07(INIT['h87*320+:320]), + .INIT_08(INIT['h88*320+:320]), + .INIT_09(INIT['h89*320+:320]), + .INIT_0A(INIT['h8a*320+:320]), + .INIT_0B(INIT['h8b*320+:320]), + .INIT_0C(INIT['h8c*320+:320]), + .INIT_0D(INIT['h8d*320+:320]), + .INIT_0E(INIT['h8e*320+:320]), + .INIT_0F(INIT['h8f*320+:320]), + .INIT_10(INIT['h90*320+:320]), + .INIT_11(INIT['h91*320+:320]), + .INIT_12(INIT['h92*320+:320]), + .INIT_13(INIT['h93*320+:320]), + .INIT_14(INIT['h94*320+:320]), + .INIT_15(INIT['h95*320+:320]), + .INIT_16(INIT['h96*320+:320]), + .INIT_17(INIT['h97*320+:320]), + .INIT_18(INIT['h98*320+:320]), + .INIT_19(INIT['h99*320+:320]), + .INIT_1A(INIT['h9a*320+:320]), + .INIT_1B(INIT['h9b*320+:320]), + .INIT_1C(INIT['h9c*320+:320]), + .INIT_1D(INIT['h9d*320+:320]), + .INIT_1E(INIT['h9e*320+:320]), + .INIT_1F(INIT['h9f*320+:320]), + .INIT_20(INIT['ha0*320+:320]), + .INIT_21(INIT['ha1*320+:320]), + .INIT_22(INIT['ha2*320+:320]), + .INIT_23(INIT['ha3*320+:320]), + .INIT_24(INIT['ha4*320+:320]), + .INIT_25(INIT['ha5*320+:320]), + .INIT_26(INIT['ha6*320+:320]), + .INIT_27(INIT['ha7*320+:320]), + .INIT_28(INIT['ha8*320+:320]), + .INIT_29(INIT['ha9*320+:320]), + .INIT_2A(INIT['haa*320+:320]), + .INIT_2B(INIT['hab*320+:320]), + .INIT_2C(INIT['hac*320+:320]), + .INIT_2D(INIT['had*320+:320]), + .INIT_2E(INIT['hae*320+:320]), + .INIT_2F(INIT['haf*320+:320]), + .INIT_30(INIT['hb0*320+:320]), + .INIT_31(INIT['hb1*320+:320]), + .INIT_32(INIT['hb2*320+:320]), + .INIT_33(INIT['hb3*320+:320]), + .INIT_34(INIT['hb4*320+:320]), + .INIT_35(INIT['hb5*320+:320]), + .INIT_36(INIT['hb6*320+:320]), + .INIT_37(INIT['hb7*320+:320]), + .INIT_38(INIT['hb8*320+:320]), + .INIT_39(INIT['hb9*320+:320]), + .INIT_3A(INIT['hba*320+:320]), + .INIT_3B(INIT['hbb*320+:320]), + .INIT_3C(INIT['hbc*320+:320]), + .INIT_3D(INIT['hbd*320+:320]), + .INIT_3E(INIT['hbe*320+:320]), + .INIT_3F(INIT['hbf*320+:320]), + .INIT_40(INIT['hc0*320+:320]), + .INIT_41(INIT['hc1*320+:320]), + .INIT_42(INIT['hc2*320+:320]), + .INIT_43(INIT['hc3*320+:320]), + .INIT_44(INIT['hc4*320+:320]), + .INIT_45(INIT['hc5*320+:320]), + .INIT_46(INIT['hc6*320+:320]), + .INIT_47(INIT['hc7*320+:320]), + .INIT_48(INIT['hc8*320+:320]), + .INIT_49(INIT['hc9*320+:320]), + .INIT_4A(INIT['hca*320+:320]), + .INIT_4B(INIT['hcb*320+:320]), + .INIT_4C(INIT['hcc*320+:320]), + .INIT_4D(INIT['hcd*320+:320]), + .INIT_4E(INIT['hce*320+:320]), + .INIT_4F(INIT['hcf*320+:320]), + .INIT_50(INIT['hd0*320+:320]), + .INIT_51(INIT['hd1*320+:320]), + .INIT_52(INIT['hd2*320+:320]), + .INIT_53(INIT['hd3*320+:320]), + .INIT_54(INIT['hd4*320+:320]), + .INIT_55(INIT['hd5*320+:320]), + .INIT_56(INIT['hd6*320+:320]), + .INIT_57(INIT['hd7*320+:320]), + .INIT_58(INIT['hd8*320+:320]), + .INIT_59(INIT['hd9*320+:320]), + .INIT_5A(INIT['hda*320+:320]), + .INIT_5B(INIT['hdb*320+:320]), + .INIT_5C(INIT['hdc*320+:320]), + .INIT_5D(INIT['hdd*320+:320]), + .INIT_5E(INIT['hde*320+:320]), + .INIT_5F(INIT['hdf*320+:320]), + .INIT_60(INIT['he0*320+:320]), + .INIT_61(INIT['he1*320+:320]), + .INIT_62(INIT['he2*320+:320]), + .INIT_63(INIT['he3*320+:320]), + .INIT_64(INIT['he4*320+:320]), + .INIT_65(INIT['he5*320+:320]), + .INIT_66(INIT['he6*320+:320]), + .INIT_67(INIT['he7*320+:320]), + .INIT_68(INIT['he8*320+:320]), + .INIT_69(INIT['he9*320+:320]), + .INIT_6A(INIT['hea*320+:320]), + .INIT_6B(INIT['heb*320+:320]), + .INIT_6C(INIT['hec*320+:320]), + .INIT_6D(INIT['hed*320+:320]), + .INIT_6E(INIT['hee*320+:320]), + .INIT_6F(INIT['hef*320+:320]), + .INIT_70(INIT['hf0*320+:320]), + .INIT_71(INIT['hf1*320+:320]), + .INIT_72(INIT['hf2*320+:320]), + .INIT_73(INIT['hf3*320+:320]), + .INIT_74(INIT['hf4*320+:320]), + .INIT_75(INIT['hf5*320+:320]), + .INIT_76(INIT['hf6*320+:320]), + .INIT_77(INIT['hf7*320+:320]), + .INIT_78(INIT['hf8*320+:320]), + .INIT_79(INIT['hf9*320+:320]), + .INIT_7A(INIT['hfa*320+:320]), + .INIT_7B(INIT['hfb*320+:320]), + .INIT_7C(INIT['hfc*320+:320]), + .INIT_7D(INIT['hfd*320+:320]), + .INIT_7E(INIT['hfe*320+:320]), + .INIT_7F(INIT['hff*320+:320]), + .A_RD_WIDTH(PORT_A_RD_USED ? PORT_A_RD_WIDTH : 0), + .A_WR_WIDTH(PORT_A_WR_USED ? PORT_A_WR_WIDTH : 0), + .B_RD_WIDTH(PORT_B_RD_USED ? PORT_B_RD_WIDTH : 0), + .B_WR_WIDTH(PORT_B_WR_USED ? PORT_B_WR_WIDTH : 0), + .RAM_MODE("TDP"), + .A_WR_MODE(PORT_A_OPTION_WR_MODE), + .B_WR_MODE(PORT_B_OPTION_WR_MODE), + .A_CLK_INV(!PORT_A_CLK_POL), + .B_CLK_INV(!PORT_B_CLK_POL), + .CAS("UPPER"), + ) upper ( + .A_CI(CAS_A), + .B_CI(CAS_B), + .A_CLK(PORT_A_CLK), + .A_EN(PORT_A_CLK_EN), + .A_WE(PORT_A_WR_EN), + .A_BM(PORT_A_WR_BE), + .A_DI(PORT_A_WR_DATA), + .A_DO(PORT_A_RD_DATA), + .A_ADDR({PORT_A_ADDR[14:0], PORT_A_ADDR[15]}), + .B_CLK(PORT_B_CLK), + .B_EN(PORT_B_CLK_EN), + .B_WE(PORT_B_WR_EN), + .B_BM(PORT_B_WR_BE), + .B_DI(PORT_B_WR_DATA), + .B_DO(PORT_B_RD_DATA), + .B_ADDR({PORT_B_ADDR[14:0], PORT_B_ADDR[15]}), + ); + end +endgenerate + +endmodule + + +module $__CC_BRAM_SDP_(...); + +parameter INIT = 0; +parameter OPTION_MODE = "20K"; +parameter OPTION_WR_MODE = "NO_CHANGE"; + +parameter PORT_W_CLK_POL = 1; +parameter PORT_W_USED = 1; +parameter PORT_W_WIDTH = 40; +parameter PORT_W_WR_BE_WIDTH = 40; + +parameter PORT_R_CLK_POL = 1; +parameter PORT_R_USED = 1; +parameter PORT_R_WIDTH = 40; + +input PORT_W_CLK; +input PORT_W_CLK_EN; +input PORT_W_WR_EN; +input [15:0] PORT_W_ADDR; +input [PORT_W_WR_BE_WIDTH-1:0] PORT_W_WR_BE; +input [PORT_W_WIDTH-1:0] PORT_W_WR_DATA; + +input PORT_R_CLK; +input PORT_R_CLK_EN; +input [15:0] PORT_R_ADDR; +output [PORT_R_WIDTH-1:0] PORT_R_RD_DATA; + +generate + if (OPTION_MODE == "20K") begin + CC_BRAM_20K #( + .INIT_00(INIT['h00*320+:320]), + .INIT_01(INIT['h01*320+:320]), + .INIT_02(INIT['h02*320+:320]), + .INIT_03(INIT['h03*320+:320]), + .INIT_04(INIT['h04*320+:320]), + .INIT_05(INIT['h05*320+:320]), + .INIT_06(INIT['h06*320+:320]), + .INIT_07(INIT['h07*320+:320]), + .INIT_08(INIT['h08*320+:320]), + .INIT_09(INIT['h09*320+:320]), + .INIT_0A(INIT['h0a*320+:320]), + .INIT_0B(INIT['h0b*320+:320]), + .INIT_0C(INIT['h0c*320+:320]), + .INIT_0D(INIT['h0d*320+:320]), + .INIT_0E(INIT['h0e*320+:320]), + .INIT_0F(INIT['h0f*320+:320]), + .INIT_10(INIT['h10*320+:320]), + .INIT_11(INIT['h11*320+:320]), + .INIT_12(INIT['h12*320+:320]), + .INIT_13(INIT['h13*320+:320]), + .INIT_14(INIT['h14*320+:320]), + .INIT_15(INIT['h15*320+:320]), + .INIT_16(INIT['h16*320+:320]), + .INIT_17(INIT['h17*320+:320]), + .INIT_18(INIT['h18*320+:320]), + .INIT_19(INIT['h19*320+:320]), + .INIT_1A(INIT['h1a*320+:320]), + .INIT_1B(INIT['h1b*320+:320]), + .INIT_1C(INIT['h1c*320+:320]), + .INIT_1D(INIT['h1d*320+:320]), + .INIT_1E(INIT['h1e*320+:320]), + .INIT_1F(INIT['h1f*320+:320]), + .INIT_20(INIT['h20*320+:320]), + .INIT_21(INIT['h21*320+:320]), + .INIT_22(INIT['h22*320+:320]), + .INIT_23(INIT['h23*320+:320]), + .INIT_24(INIT['h24*320+:320]), + .INIT_25(INIT['h25*320+:320]), + .INIT_26(INIT['h26*320+:320]), + .INIT_27(INIT['h27*320+:320]), + .INIT_28(INIT['h28*320+:320]), + .INIT_29(INIT['h29*320+:320]), + .INIT_2A(INIT['h2a*320+:320]), + .INIT_2B(INIT['h2b*320+:320]), + .INIT_2C(INIT['h2c*320+:320]), + .INIT_2D(INIT['h2d*320+:320]), + .INIT_2E(INIT['h2e*320+:320]), + .INIT_2F(INIT['h2f*320+:320]), + .INIT_30(INIT['h30*320+:320]), + .INIT_31(INIT['h31*320+:320]), + .INIT_32(INIT['h32*320+:320]), + .INIT_33(INIT['h33*320+:320]), + .INIT_34(INIT['h34*320+:320]), + .INIT_35(INIT['h35*320+:320]), + .INIT_36(INIT['h36*320+:320]), + .INIT_37(INIT['h37*320+:320]), + .INIT_38(INIT['h38*320+:320]), + .INIT_39(INIT['h39*320+:320]), + .INIT_3A(INIT['h3a*320+:320]), + .INIT_3B(INIT['h3b*320+:320]), + .INIT_3C(INIT['h3c*320+:320]), + .INIT_3D(INIT['h3d*320+:320]), + .INIT_3E(INIT['h3e*320+:320]), + .INIT_3F(INIT['h3f*320+:320]), + .A_RD_WIDTH(0), + .A_WR_WIDTH(PORT_W_USED ? PORT_W_WIDTH : 0), + .B_RD_WIDTH(PORT_R_USED ? PORT_R_WIDTH : 0), + .B_WR_WIDTH(0), + .RAM_MODE("SDP"), + .A_WR_MODE(OPTION_WR_MODE), + .B_WR_MODE(OPTION_WR_MODE), + .A_CLK_INV(!PORT_W_CLK_POL), + .B_CLK_INV(!PORT_R_CLK_POL), + ) _TECHMAP_REPLACE_ ( + .A_CLK(PORT_W_CLK), + .A_EN(PORT_W_CLK_EN), + .A_WE(PORT_W_WR_EN), + .A_BM(PORT_W_WR_BE[19:0]), + .B_BM(PORT_W_WR_BE[39:20]), + .A_DI(PORT_W_WR_DATA[19:0]), + .B_DI(PORT_W_WR_DATA[39:20]), + .A_ADDR({PORT_W_ADDR[13:5], 1'b0, PORT_W_ADDR[4:0], 1'b0}), + .B_CLK(PORT_R_CLK), + .B_EN(PORT_R_CLK_EN), + .B_WE(1'b0), + .B_ADDR({PORT_R_ADDR[13:5], 1'b0, PORT_R_ADDR[4:0], 1'b0}), + .A_DO(PORT_R_RD_DATA[19:0]), + .B_DO(PORT_R_RD_DATA[39:20]), + ); + end else if (OPTION_MODE == "40K") begin + CC_BRAM_40K #( + .INIT_00(INIT['h00*320+:320]), + .INIT_01(INIT['h01*320+:320]), + .INIT_02(INIT['h02*320+:320]), + .INIT_03(INIT['h03*320+:320]), + .INIT_04(INIT['h04*320+:320]), + .INIT_05(INIT['h05*320+:320]), + .INIT_06(INIT['h06*320+:320]), + .INIT_07(INIT['h07*320+:320]), + .INIT_08(INIT['h08*320+:320]), + .INIT_09(INIT['h09*320+:320]), + .INIT_0A(INIT['h0a*320+:320]), + .INIT_0B(INIT['h0b*320+:320]), + .INIT_0C(INIT['h0c*320+:320]), + .INIT_0D(INIT['h0d*320+:320]), + .INIT_0E(INIT['h0e*320+:320]), + .INIT_0F(INIT['h0f*320+:320]), + .INIT_10(INIT['h10*320+:320]), + .INIT_11(INIT['h11*320+:320]), + .INIT_12(INIT['h12*320+:320]), + .INIT_13(INIT['h13*320+:320]), + .INIT_14(INIT['h14*320+:320]), + .INIT_15(INIT['h15*320+:320]), + .INIT_16(INIT['h16*320+:320]), + .INIT_17(INIT['h17*320+:320]), + .INIT_18(INIT['h18*320+:320]), + .INIT_19(INIT['h19*320+:320]), + .INIT_1A(INIT['h1a*320+:320]), + .INIT_1B(INIT['h1b*320+:320]), + .INIT_1C(INIT['h1c*320+:320]), + .INIT_1D(INIT['h1d*320+:320]), + .INIT_1E(INIT['h1e*320+:320]), + .INIT_1F(INIT['h1f*320+:320]), + .INIT_20(INIT['h20*320+:320]), + .INIT_21(INIT['h21*320+:320]), + .INIT_22(INIT['h22*320+:320]), + .INIT_23(INIT['h23*320+:320]), + .INIT_24(INIT['h24*320+:320]), + .INIT_25(INIT['h25*320+:320]), + .INIT_26(INIT['h26*320+:320]), + .INIT_27(INIT['h27*320+:320]), + .INIT_28(INIT['h28*320+:320]), + .INIT_29(INIT['h29*320+:320]), + .INIT_2A(INIT['h2a*320+:320]), + .INIT_2B(INIT['h2b*320+:320]), + .INIT_2C(INIT['h2c*320+:320]), + .INIT_2D(INIT['h2d*320+:320]), + .INIT_2E(INIT['h2e*320+:320]), + .INIT_2F(INIT['h2f*320+:320]), + .INIT_30(INIT['h30*320+:320]), + .INIT_31(INIT['h31*320+:320]), + .INIT_32(INIT['h32*320+:320]), + .INIT_33(INIT['h33*320+:320]), + .INIT_34(INIT['h34*320+:320]), + .INIT_35(INIT['h35*320+:320]), + .INIT_36(INIT['h36*320+:320]), + .INIT_37(INIT['h37*320+:320]), + .INIT_38(INIT['h38*320+:320]), + .INIT_39(INIT['h39*320+:320]), + .INIT_3A(INIT['h3a*320+:320]), + .INIT_3B(INIT['h3b*320+:320]), + .INIT_3C(INIT['h3c*320+:320]), + .INIT_3D(INIT['h3d*320+:320]), + .INIT_3E(INIT['h3e*320+:320]), + .INIT_3F(INIT['h3f*320+:320]), + .INIT_40(INIT['h40*320+:320]), + .INIT_41(INIT['h41*320+:320]), + .INIT_42(INIT['h42*320+:320]), + .INIT_43(INIT['h43*320+:320]), + .INIT_44(INIT['h44*320+:320]), + .INIT_45(INIT['h45*320+:320]), + .INIT_46(INIT['h46*320+:320]), + .INIT_47(INIT['h47*320+:320]), + .INIT_48(INIT['h48*320+:320]), + .INIT_49(INIT['h49*320+:320]), + .INIT_4A(INIT['h4a*320+:320]), + .INIT_4B(INIT['h4b*320+:320]), + .INIT_4C(INIT['h4c*320+:320]), + .INIT_4D(INIT['h4d*320+:320]), + .INIT_4E(INIT['h4e*320+:320]), + .INIT_4F(INIT['h4f*320+:320]), + .INIT_50(INIT['h50*320+:320]), + .INIT_51(INIT['h51*320+:320]), + .INIT_52(INIT['h52*320+:320]), + .INIT_53(INIT['h53*320+:320]), + .INIT_54(INIT['h54*320+:320]), + .INIT_55(INIT['h55*320+:320]), + .INIT_56(INIT['h56*320+:320]), + .INIT_57(INIT['h57*320+:320]), + .INIT_58(INIT['h58*320+:320]), + .INIT_59(INIT['h59*320+:320]), + .INIT_5A(INIT['h5a*320+:320]), + .INIT_5B(INIT['h5b*320+:320]), + .INIT_5C(INIT['h5c*320+:320]), + .INIT_5D(INIT['h5d*320+:320]), + .INIT_5E(INIT['h5e*320+:320]), + .INIT_5F(INIT['h5f*320+:320]), + .INIT_60(INIT['h60*320+:320]), + .INIT_61(INIT['h61*320+:320]), + .INIT_62(INIT['h62*320+:320]), + .INIT_63(INIT['h63*320+:320]), + .INIT_64(INIT['h64*320+:320]), + .INIT_65(INIT['h65*320+:320]), + .INIT_66(INIT['h66*320+:320]), + .INIT_67(INIT['h67*320+:320]), + .INIT_68(INIT['h68*320+:320]), + .INIT_69(INIT['h69*320+:320]), + .INIT_6A(INIT['h6a*320+:320]), + .INIT_6B(INIT['h6b*320+:320]), + .INIT_6C(INIT['h6c*320+:320]), + .INIT_6D(INIT['h6d*320+:320]), + .INIT_6E(INIT['h6e*320+:320]), + .INIT_6F(INIT['h6f*320+:320]), + .INIT_70(INIT['h70*320+:320]), + .INIT_71(INIT['h71*320+:320]), + .INIT_72(INIT['h72*320+:320]), + .INIT_73(INIT['h73*320+:320]), + .INIT_74(INIT['h74*320+:320]), + .INIT_75(INIT['h75*320+:320]), + .INIT_76(INIT['h76*320+:320]), + .INIT_77(INIT['h77*320+:320]), + .INIT_78(INIT['h78*320+:320]), + .INIT_79(INIT['h79*320+:320]), + .INIT_7A(INIT['h7a*320+:320]), + .INIT_7B(INIT['h7b*320+:320]), + .INIT_7C(INIT['h7c*320+:320]), + .INIT_7D(INIT['h7d*320+:320]), + .INIT_7E(INIT['h7e*320+:320]), + .INIT_7F(INIT['h7f*320+:320]), + .A_RD_WIDTH(0), + .A_WR_WIDTH(PORT_W_USED ? PORT_W_WIDTH : 0), + .B_RD_WIDTH(PORT_R_USED ? PORT_R_WIDTH : 0), + .B_WR_WIDTH(0), + .RAM_MODE("SDP"), + .A_WR_MODE(OPTION_WR_MODE), + .B_WR_MODE(OPTION_WR_MODE), + .A_CLK_INV(!PORT_W_CLK_POL), + .B_CLK_INV(!PORT_R_CLK_POL), + ) _TECHMAP_REPLACE_ ( + .A_CLK(PORT_W_CLK), + .A_EN(PORT_W_CLK_EN), + .A_WE(PORT_W_WR_EN), + .A_BM(PORT_W_WR_BE[39:0]), + .B_BM(PORT_W_WR_BE[79:40]), + .A_DI(PORT_W_WR_DATA[39:0]), + .B_DI(PORT_W_WR_DATA[79:40]), + .A_ADDR({PORT_W_ADDR[14:0], 1'b0}), + .B_CLK(PORT_R_CLK), + .B_EN(PORT_R_CLK_EN), + .B_WE(1'b0), + .B_ADDR({PORT_R_ADDR[14:0], 1'b0}), + .A_DO(PORT_R_RD_DATA[39:0]), + .B_DO(PORT_R_RD_DATA[79:40]), + ); + end +endgenerate + +endmodule diff --git a/resources/netlist/resources/kernel/share/gatemate/cells_bb.v b/resources/netlist/resources/kernel/share/gatemate/cells_bb.v new file mode 100644 index 0000000..2bb8154 --- /dev/null +++ b/resources/netlist/resources/kernel/share/gatemate/cells_bb.v @@ -0,0 +1,191 @@ +/* + * yosys -- Yosys Open SYnthesis Suite + * + * Copyright (C) 2021 Cologne Chip AG + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + */ + +(* blackbox *) +module CC_PLL #( + parameter REF_CLK = "", // e.g. "10.0" + parameter OUT_CLK = "", // e.g. "50.0" + parameter PERF_MD = "", // LOWPOWER, ECONOMY, SPEED + parameter LOW_JITTER = 1, + parameter CI_FILTER_CONST = 2, + parameter CP_FILTER_CONST = 4 +)( + input CLK_REF, CLK_FEEDBACK, USR_CLK_REF, + input USR_LOCKED_STDY_RST, + output USR_PLL_LOCKED_STDY, USR_PLL_LOCKED, + output CLK270, CLK180, CLK90, CLK0, CLK_REF_OUT +); +endmodule + +(* blackbox *) +module CC_PLL_ADV #( + parameter [95:0] PLL_CFG_A = 96'bx, + parameter [95:0] PLL_CFG_B = 96'bx +)( + input CLK_REF, CLK_FEEDBACK, USR_CLK_REF, + input USR_LOCKED_STDY_RST, USR_SEL_A_B, + output USR_PLL_LOCKED_STDY, USR_PLL_LOCKED, + output CLK270, CLK180, CLK90, CLK0, CLK_REF_OUT +); +endmodule + +(* blackbox *) (* keep *) +module CC_SERDES #( + parameter SERDES_CFG = "" +)( + input [63:0] TX_DATA_I, + input TX_RESET_I, + input TX_PCS_RESET_I, + input TX_PMA_RESET_I, + input PLL_RESET_I, + input TX_POWERDOWN_N_I, + input TX_POLARITY_I, + input [2:0] TX_PRBS_SEL_I, + input TX_PRBS_FORCE_ERR_I, + input TX_8B10B_EN_I, + input [7:0] TX_8B10B_BYPASS_I, + input [7:0] TX_CHAR_IS_K_I, + input [7:0] TX_CHAR_DISPMODE_I, + input [7:0] TX_CHAR_DISPVAL_I, + input TX_ELEC_IDLE_I, + input TX_DETECT_RX_I, + input [2:0] LOOPBACK_I, + input CLK_CORE_TX_I, + input CLK_CORE_RX_I, + input RX_RESET_I, + input RX_PMA_RESET_I, + input RX_EQA_RESET_I, + input RX_CDR_RESET_I, + input RX_PCS_RESET_I, + input RX_BUF_RESET_I, + input RX_POWERDOWN_N_I, + input RX_POLARITY_I, + input [2:0] RX_PRBS_SEL_I, + input RX_PRBS_CNT_RESET_I, + input RX_8B10B_EN_I, + input [7:0] RX_8B10B_BYPASS_I, + input RX_EN_EI_DETECTOR_I, + input RX_COMMA_DETECT_EN_I, + input RX_SLIDE_I, + input RX_MCOMMA_ALIGN_I, + input RX_PCOMMA_ALIGN_I, + input CLK_REG_I, + input REGFILE_WE_I, + input REGFILE_EN_I, + input [7:0] REGFILE_ADDR_I, + input [15:0] REGFILE_DI_I, + input [15:0] REGFILE_MASK_I, + output [63:0] RX_DATA_O, + output [7:0] RX_NOT_IN_TABLE_O, + output [7:0] RX_CHAR_IS_COMMA_O, + output [7:0] RX_CHAR_IS_K_O, + output [7:0] RX_DISP_ERR_O, + output RX_DETECT_DONE_O, + output RX_PRESENT_O, + output TX_BUF_ERR_O, + output TX_RESETDONE_O, + output RX_PRBS_ERR_O, + output RX_BUF_ERR_O, + output RX_BYTE_IS_ALIGNED_O, + output RX_BYTE_REALIGN_O, + output RX_RESETDONE_O, + output RX_EI_EN_O, + output CLK_CORE_RX_O, + output CLK_CORE_PLL_O, + output [15:0] REGFILE_DO_O, + output REGFILE_RDY_O +); +endmodule + +(* blackbox *) (* keep *) +module CC_CFG_CTRL( + input [7:0] DATA, + input CLK, + input EN, + input RECFG, + input VALID +); +endmodule + +(* blackbox *) +module CC_FIFO_40K ( + output A_ECC_1B_ERR, + output B_ECC_1B_ERR, + output A_ECC_2B_ERR, + output B_ECC_2B_ERR, + // FIFO pop port + output [39:0] A_DO, + output [39:0] B_DO, + (* clkbuf_sink *) + input A_CLK, + input A_EN, + // FIFO push port + input [39:0] A_DI, + input [39:0] B_DI, + input [39:0] A_BM, + input [39:0] B_BM, + (* clkbuf_sink *) + input B_CLK, + input B_EN, + input B_WE, + // FIFO control + input F_RST_N, + input [12:0] F_ALMOST_FULL_OFFSET, + input [12:0] F_ALMOST_EMPTY_OFFSET, + // FIFO status signals + output F_FULL, + output F_EMPTY, + output F_ALMOST_FULL, + output F_ALMOST_EMPTY, + output F_RD_ERROR, + output F_WR_ERROR, + output [15:0] F_RD_PTR, + output [15:0] F_WR_PTR +); + // Location format: D(0..N-1)X(0..3)Y(0..7) or UNPLACED + parameter LOC = "UNPLACED"; + + // Offset configuration + parameter [12:0] ALMOST_FULL_OFFSET = 12'b0; + parameter [12:0] ALMOST_EMPTY_OFFSET = 12'b0; + + // Port Widths + parameter A_WIDTH = 0; + parameter B_WIDTH = 0; + + // RAM and Write Modes + parameter RAM_MODE = "SDP"; // "TPD" or "SDP" + parameter FIFO_MODE = "SYNC"; // "ASYNC" or "SYNC" + + // Inverting Control Pins + parameter A_CLK_INV = 1'b0; + parameter B_CLK_INV = 1'b0; + parameter A_EN_INV = 1'b0; + parameter B_EN_INV = 1'b0; + parameter A_WE_INV = 1'b0; + parameter B_WE_INV = 1'b0; + + // Output Register + parameter A_DO_REG = 1'b0; + parameter B_DO_REG = 1'b0; + + // Error Checking and Correction + parameter A_ECC_EN = 1'b0; + parameter B_ECC_EN = 1'b0; +endmodule diff --git a/resources/netlist/resources/kernel/share/gatemate/cells_sim.v b/resources/netlist/resources/kernel/share/gatemate/cells_sim.v new file mode 100644 index 0000000..3f00989 --- /dev/null +++ b/resources/netlist/resources/kernel/share/gatemate/cells_sim.v @@ -0,0 +1,1455 @@ +/* + * yosys -- Yosys Open SYnthesis Suite + * + * Copyright (C) 2021 Cologne Chip AG + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + */ + +`timescale 1ps/1ps + +module CC_IBUF #( + parameter PIN_NAME = "UNPLACED", + parameter V_IO = "UNDEFINED", + parameter [0:0] PULLUP = 1'bx, + parameter [0:0] PULLDOWN = 1'bx, + parameter [0:0] KEEPER = 1'bx, + parameter [0:0] SCHMITT_TRIGGER = 1'bx, + // IOSEL + parameter [3:0] DELAY_IBF = 1'bx, + parameter [0:0] FF_IBF = 1'bx +)( + (* iopad_external_pin *) + input I, + output Y +); + assign Y = I; + +endmodule + + +module CC_OBUF #( + parameter PIN_NAME = "UNPLACED", + parameter V_IO = "UNDEFINED", + parameter DRIVE = "UNDEFINED", + parameter SLEW = "UNDEFINED", + // IOSEL + parameter [3:0] DELAY_OBF = 1'bx, + parameter [0:0] FF_OBF = 1'bx +)( + input A, + (* iopad_external_pin *) + output O +); + assign O = A; + +endmodule + + +module CC_TOBUF #( + parameter PIN_NAME = "UNPLACED", + parameter V_IO = "UNDEFINED", + parameter DRIVE = "UNDEFINED", + parameter SLEW = "UNDEFINED", + parameter [0:0] PULLUP = 1'bx, + parameter [0:0] PULLDOWN = 1'bx, + parameter [0:0] KEEPER = 1'bx, + // IOSEL + parameter [3:0] DELAY_OBF = 1'bx, + parameter [0:0] FF_OBF = 1'bx +)( + input A, T, + (* iopad_external_pin *) + output O +); + assign O = T ? 1'bz : A; + +endmodule + + +module CC_IOBUF #( + parameter PIN_NAME = "UNPLACED", + parameter V_IO = "UNDEFINED", + parameter DRIVE = "UNDEFINED", + parameter SLEW = "UNDEFINED", + parameter [0:0] PULLUP = 1'bx, + parameter [0:0] PULLDOWN = 1'bx, + parameter [0:0] KEEPER = 1'bx, + parameter [0:0] SCHMITT_TRIGGER = 1'bx, + // IOSEL + parameter [3:0] DELAY_IBF = 1'bx, + parameter [3:0] DELAY_OBF = 1'bx, + parameter [0:0] FF_IBF = 1'bx, + parameter [0:0] FF_OBF = 1'bx +)( + input A, T, + output Y, + (* iopad_external_pin *) + inout IO +); + assign IO = T ? 1'bz : A; + assign Y = IO; + +endmodule + + +module CC_LVDS_IBUF #( + parameter PIN_NAME_P = "UNPLACED", + parameter PIN_NAME_N = "UNPLACED", + parameter V_IO = "UNDEFINED", + parameter [0:0] LVDS_RTERM = 1'bx, + // IOSEL + parameter [3:0] DELAY_IBF = 1'bx, + parameter [0:0] FF_IBF = 1'bx +)( + (* iopad_external_pin *) + input IP, IN, + output Y +); + assign Y = IP; + +endmodule + + +module CC_LVDS_OBUF #( + parameter PIN_NAME_P = "UNPLACED", + parameter PIN_NAME_N = "UNPLACED", + parameter V_IO = "UNDEFINED", + parameter [0:0] LVDS_BOOST = 1'bx, + // IOSEL + parameter [3:0] DELAY_OBF = 1'bx, + parameter [0:0] FF_OBF = 1'bx +)( + input A, + (* iopad_external_pin *) + output OP, ON +); + assign OP = A; + assign ON = ~A; + +endmodule + + +module CC_LVDS_TOBUF #( + parameter PIN_NAME_P = "UNPLACED", + parameter PIN_NAME_N = "UNPLACED", + parameter V_IO = "UNDEFINED", + parameter [0:0] LVDS_BOOST = 1'bx, + // IOSEL + parameter [3:0] DELAY_OBF = 1'bx, + parameter [0:0] FF_OBF = 1'bx +)( + input A, T, + (* iopad_external_pin *) + output OP, ON +); + assign OP = T ? 1'bz : A; + assign ON = T ? 1'bz : ~A; + +endmodule + + +module CC_LVDS_IOBUF #( + parameter PIN_NAME_P = "UNPLACED", + parameter PIN_NAME_N = "UNPLACED", + parameter V_IO = "UNDEFINED", + parameter [0:0] LVDS_RTERM = 1'bx, + parameter [0:0] LVDS_BOOST = 1'bx, + // IOSEL + parameter [3:0] DELAY_IBF = 1'bx, + parameter [3:0] DELAY_OBF = 1'bx, + parameter [0:0] FF_IBF = 1'bx, + parameter [0:0] FF_OBF = 1'bx +)( + input A, T, + (* iopad_external_pin *) + inout IOP, ION, + output Y +); + assign IOP = T ? 1'bz : A; + assign ION = T ? 1'bz : ~A; + assign Y = IOP; + +endmodule + + +module CC_IDDR #( + parameter [0:0] CLK_INV = 1'b0 +)( + input D, + (* clkbuf_sink *) + input CLK, + output reg Q0, Q1 +); + wire clk; + assign clk = (CLK_INV) ? ~CLK : CLK; + + always @(posedge clk) + begin + Q0 <= D; + end + + always @(negedge clk) + begin + Q1 <= D; + end + +endmodule + + +module CC_ODDR #( + parameter [0:0] CLK_INV = 1'b0 +)( + input D0, + input D1, + (* clkbuf_sink *) + input CLK, + (* clkbuf_sink *) + input DDR, + output Q +); + wire clk; + assign clk = (CLK_INV) ? ~CLK : CLK; + + reg q0, q1; + assign Q = (DDR) ? q0 : q1; + + always @(posedge clk) + begin + q0 <= D0; + end + + always @(negedge clk) + begin + q1 <= D1; + end + +endmodule + + +module CC_DFF #( + parameter [0:0] CLK_INV = 1'b0, + parameter [0:0] EN_INV = 1'b0, + parameter [0:0] SR_INV = 1'b0, + parameter [0:0] SR_VAL = 1'b0 +)( + input D, + (* clkbuf_sink *) + input CLK, + input EN, + input SR, + output reg Q +); + wire clk, en, sr; + assign clk = (CLK_INV) ? ~CLK : CLK; + assign en = (EN_INV) ? ~EN : EN; + assign sr = (SR_INV) ? ~SR : SR; + + initial Q = 1'bX; + + always @(posedge clk or posedge sr) + begin + if (sr) begin + Q <= SR_VAL; + end + else if (en) begin + Q <= D; + end + end + +endmodule + + +module CC_DLT #( + parameter [0:0] G_INV = 1'b0, + parameter [0:0] SR_INV = 1'b0, + parameter [0:0] SR_VAL = 1'b0 +)( + input D, + input G, + input SR, + output reg Q +); + wire en, sr; + assign en = (G_INV) ? ~G : G; + assign sr = (SR_INV) ? ~SR : SR; + + initial Q = 1'bX; + + always @(*) + begin + if (sr) begin + Q <= SR_VAL; + end + else if (en) begin + Q <= D; + end + end + +endmodule + + +module CC_LUT1 ( + output O, + input I0 +); + parameter [1:0] INIT = 0; + + assign O = I0 ? INIT[1] : INIT[0]; + +endmodule + + +module CC_LUT2 ( + output O, + input I0, I1 +); + parameter [3:0] INIT = 0; + + wire [1:0] s1 = I1 ? INIT[3:2] : INIT[1:0]; + assign O = I0 ? s1[1] : s1[0]; + +endmodule + + +module CC_LUT3 ( + output O, + input I0, I1, I2 +); + parameter [7:0] INIT = 0; + + wire [3:0] s2 = I2 ? INIT[7:4] : INIT[3:0]; + wire [1:0] s1 = I1 ? s2[3:2] : s2[1:0]; + assign O = I0 ? s1[1] : s1[0]; + +endmodule + + +module CC_LUT4 ( + output O, + input I0, I1, I2, I3 +); + parameter [15:0] INIT = 0; + + wire [7:0] s3 = I3 ? INIT[15:8] : INIT[7:0]; + wire [3:0] s2 = I2 ? s3[7:4] : s3[3:0]; + wire [1:0] s1 = I1 ? s2[3:2] : s2[1:0]; + assign O = I0 ? s1[1] : s1[0]; + +endmodule + + +module CC_MX2 ( + input D0, D1, + input S0, + output Y +); + assign Y = S0 ? D1 : D0; + +endmodule + + +module CC_MX4 ( + input D0, D1, D2, D3, + input S0, S1, + output Y +); + assign Y = S1 ? (S0 ? D3 : D2) : + (S0 ? D1 : D0); + +endmodule + + +module CC_MX8 ( + input D0, D1, D2, D3, + input D4, D5, D6, D7, + input S0, S1, S2, + output Y +); + assign Y = S2 ? (S1 ? (S0 ? D7 : D6) : + (S0 ? D5 : D4)) : + (S1 ? (S0 ? D3 : D2) : + (S0 ? D1 : D0)); + +endmodule + + +module CC_ADDF ( + input A, B, CI, + output CO, S +); + assign {CO, S} = A + B + CI; + +endmodule + + +module CC_MULT #( + parameter A_WIDTH = 0, + parameter B_WIDTH = 0, + parameter P_WIDTH = 0 +)( + input signed [A_WIDTH-1:0] A, + input signed [B_WIDTH-1:0] B, + output reg signed [P_WIDTH-1:0] P +); + always @(*) + begin + P <= A * B; + end +endmodule + + +module CC_BUFG ( + input I, + (* clkbuf_driver *) + output O +); + assign O = I; + +endmodule + + +module CC_BRAM_20K ( + output [19:0] A_DO, + output [19:0] B_DO, + output ECC_1B_ERR, + output ECC_2B_ERR, + (* clkbuf_sink *) + input A_CLK, + (* clkbuf_sink *) + input B_CLK, + input A_EN, + input B_EN, + input A_WE, + input B_WE, + input [15:0] A_ADDR, + input [15:0] B_ADDR, + input [19:0] A_DI, + input [19:0] B_DI, + input [19:0] A_BM, + input [19:0] B_BM +); + // Location format: D(0..N-1)(0..N-1)X(0..3)Y(0..7)Z(0..1) or UNPLACED + parameter LOC = "UNPLACED"; + + // Port Widths + parameter A_RD_WIDTH = 0; + parameter B_RD_WIDTH = 0; + parameter A_WR_WIDTH = 0; + parameter B_WR_WIDTH = 0; + + // RAM and Write Modes + parameter RAM_MODE = "SDP"; + parameter A_WR_MODE = "NO_CHANGE"; + parameter B_WR_MODE = "NO_CHANGE"; + + // Inverting Control Pins + parameter A_CLK_INV = 1'b0; + parameter B_CLK_INV = 1'b0; + parameter A_EN_INV = 1'b0; + parameter B_EN_INV = 1'b0; + parameter A_WE_INV = 1'b0; + parameter B_WE_INV = 1'b0; + + // Output Register + parameter A_DO_REG = 1'b0; + parameter B_DO_REG = 1'b0; + + // Error Checking and Correction + parameter ECC_EN = 1'b0; + + // RAM Contents + parameter INIT_00 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_01 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_02 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_03 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_04 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_05 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_06 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_07 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_08 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_09 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0A = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0B = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0C = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0D = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0E = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0F = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_10 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_11 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_12 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_13 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_14 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_15 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_16 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_17 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_18 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_19 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_1A = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_1B = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_1C = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_1D = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_1E = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_1F = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_20 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_21 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_22 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_23 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_24 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_25 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_26 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_27 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_28 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_29 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_2A = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_2B = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_2C = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_2D = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_2E = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_2F = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_30 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_31 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_32 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_33 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_34 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_35 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_36 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_37 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_38 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_39 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_3A = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_3B = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_3C = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_3D = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_3E = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_3F = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + + localparam WIDTH_MODE_A = (A_RD_WIDTH > A_WR_WIDTH) ? A_RD_WIDTH : A_WR_WIDTH; + localparam WIDTH_MODE_B = (B_RD_WIDTH > B_WR_WIDTH) ? B_RD_WIDTH : B_WR_WIDTH; + + integer i, k; + + // 512 x 40 bit + reg [20479:0] memory = 20480'b0; + + initial begin + // Check parameters + if ((RAM_MODE != "SDP") && (RAM_MODE != "TDP")) begin + $display("ERROR: Illegal RAM MODE %d.", RAM_MODE); + $finish(); + end + if ((A_WR_MODE != "WRITE_THROUGH") && (A_WR_MODE != "NO_CHANGE")) begin + $display("ERROR: Illegal RAM MODE %d.", RAM_MODE); + $finish(); + end + if ((RAM_MODE == "SDP") && (A_WR_MODE == "WRITE_THROUGH")) begin + $display("ERROR: %s is not supported in %s mode.", A_WR_MODE, RAM_MODE); + $finish(); + end + if (ECC_EN != 1'b0) begin + $display("WARNING: ECC feature not supported in simulation."); + end + if ((ECC_EN == 1'b1) && (RAM_MODE != "SDP") && (WIDTH_MODE_A != 40)) begin + $display("ERROR: Illegal ECC Port configuration. Must be SDP 40 bit, but is %s %d.", RAM_MODE, WIDTH_MODE_A); + $finish(); + end + if ((WIDTH_MODE_A == 40) && (RAM_MODE == "TDP")) begin + $display("ERROR: Port A width of 40 bits is only supported in SDP mode."); + $finish(); + end + if ((WIDTH_MODE_B == 40) && (RAM_MODE == "TDP")) begin + $display("ERROR: Port B width of 40 bits is only supported in SDP mode."); + $finish(); + end + if ((WIDTH_MODE_A != 40) && (WIDTH_MODE_A != 20) && (WIDTH_MODE_A != 10) && + (WIDTH_MODE_A != 5) && (WIDTH_MODE_A != 2) && (WIDTH_MODE_A != 1) && (WIDTH_MODE_A != 0)) begin + $display("ERROR: Illegal %s Port A width configuration %d.", RAM_MODE, WIDTH_MODE_A); + $finish(); + end + if ((WIDTH_MODE_B != 40) && (WIDTH_MODE_B != 20) && (WIDTH_MODE_B != 10) && + (WIDTH_MODE_B != 5) && (WIDTH_MODE_B != 2) && (WIDTH_MODE_B != 1) && (WIDTH_MODE_B != 0)) begin + $display("ERROR: Illegal %s Port B width configuration %d.", RAM_MODE, WIDTH_MODE_B); + $finish(); + end + // RAM initialization + memory[320*0+319:320*0] = INIT_00; + memory[320*1+319:320*1] = INIT_01; + memory[320*2+319:320*2] = INIT_02; + memory[320*3+319:320*3] = INIT_03; + memory[320*4+319:320*4] = INIT_04; + memory[320*5+319:320*5] = INIT_05; + memory[320*6+319:320*6] = INIT_06; + memory[320*7+319:320*7] = INIT_07; + memory[320*8+319:320*8] = INIT_08; + memory[320*9+319:320*9] = INIT_09; + memory[320*10+319:320*10] = INIT_0A; + memory[320*11+319:320*11] = INIT_0B; + memory[320*12+319:320*12] = INIT_0C; + memory[320*13+319:320*13] = INIT_0D; + memory[320*14+319:320*14] = INIT_0E; + memory[320*15+319:320*15] = INIT_0F; + memory[320*16+319:320*16] = INIT_10; + memory[320*17+319:320*17] = INIT_11; + memory[320*18+319:320*18] = INIT_12; + memory[320*19+319:320*19] = INIT_13; + memory[320*20+319:320*20] = INIT_14; + memory[320*21+319:320*21] = INIT_15; + memory[320*22+319:320*22] = INIT_16; + memory[320*23+319:320*23] = INIT_17; + memory[320*24+319:320*24] = INIT_18; + memory[320*25+319:320*25] = INIT_19; + memory[320*26+319:320*26] = INIT_1A; + memory[320*27+319:320*27] = INIT_1B; + memory[320*28+319:320*28] = INIT_1C; + memory[320*29+319:320*29] = INIT_1D; + memory[320*30+319:320*30] = INIT_1E; + memory[320*31+319:320*31] = INIT_1F; + memory[320*32+319:320*32] = INIT_20; + memory[320*33+319:320*33] = INIT_21; + memory[320*34+319:320*34] = INIT_22; + memory[320*35+319:320*35] = INIT_23; + memory[320*36+319:320*36] = INIT_24; + memory[320*37+319:320*37] = INIT_25; + memory[320*38+319:320*38] = INIT_26; + memory[320*39+319:320*39] = INIT_27; + memory[320*40+319:320*40] = INIT_28; + memory[320*41+319:320*41] = INIT_29; + memory[320*42+319:320*42] = INIT_2A; + memory[320*43+319:320*43] = INIT_2B; + memory[320*44+319:320*44] = INIT_2C; + memory[320*45+319:320*45] = INIT_2D; + memory[320*46+319:320*46] = INIT_2E; + memory[320*47+319:320*47] = INIT_2F; + memory[320*48+319:320*48] = INIT_30; + memory[320*49+319:320*49] = INIT_31; + memory[320*50+319:320*50] = INIT_32; + memory[320*51+319:320*51] = INIT_33; + memory[320*52+319:320*52] = INIT_34; + memory[320*53+319:320*53] = INIT_35; + memory[320*54+319:320*54] = INIT_36; + memory[320*55+319:320*55] = INIT_37; + memory[320*56+319:320*56] = INIT_38; + memory[320*57+319:320*57] = INIT_39; + memory[320*58+319:320*58] = INIT_3A; + memory[320*59+319:320*59] = INIT_3B; + memory[320*60+319:320*60] = INIT_3C; + memory[320*61+319:320*61] = INIT_3D; + memory[320*62+319:320*62] = INIT_3E; + memory[320*63+319:320*63] = INIT_3F; + end + + // Signal inversion + wire clka = A_CLK_INV ^ A_CLK; + wire clkb = B_CLK_INV ^ B_CLK; + wire ena = A_EN_INV ^ A_EN; + wire enb = B_EN_INV ^ B_EN; + wire wea = A_WE_INV ^ A_WE; + wire web = B_WE_INV ^ B_WE; + + // Internal signals + wire [15:0] addra; + wire [15:0] addrb; + reg [19:0] A_DO_out = 0, A_DO_reg = 0; + reg [19:0] B_DO_out = 0, B_DO_reg = 0; + + generate + if (RAM_MODE == "SDP") begin + // Port A (write) + if (A_WR_WIDTH == 40) begin + assign addra = A_ADDR[15:7]*40; + end + // Port B (read) + if (B_RD_WIDTH == 40) begin + assign addrb = B_ADDR[15:7]*40; + end + end + else if (RAM_MODE == "TDP") begin + // Port A + if (WIDTH_MODE_A <= 1) begin + wire [15:0] tmpa = {2'b0, A_ADDR[15:7], A_ADDR[5:1]}; + assign addra = tmpa + (tmpa/4); + end + else if (WIDTH_MODE_A <= 2) begin + wire [15:0] tmpa = {3'b0, A_ADDR[15:7], A_ADDR[5:2]}; + assign addra = tmpa*2 + (tmpa/2); + end + else if (WIDTH_MODE_A <= 5) begin + assign addra = {4'b0, A_ADDR[15:7], A_ADDR[5:3]}*5; + end + else if (WIDTH_MODE_A <= 10) begin + assign addra = {5'b0, A_ADDR[15:7], A_ADDR[5:4]}*10; + end + else if (WIDTH_MODE_A <= 20) begin + assign addra = {6'b0, A_ADDR[15:7], A_ADDR[5]}*20; + end + // Port B + if (WIDTH_MODE_B <= 1) begin + wire [15:0] tmpb = {2'b0, B_ADDR[15:7], B_ADDR[5:1]}; + assign addrb = tmpb + (tmpb/4); + end + else if (WIDTH_MODE_B <= 2) begin + wire [15:0] tmpb = {3'b0, B_ADDR[15:7], B_ADDR[5:2]}; + assign addrb = tmpb*2 + (tmpb/2); + end + else if (WIDTH_MODE_B <= 5) begin + assign addrb = {4'b0, B_ADDR[15:7], B_ADDR[5:3]}*5; + end + else if (WIDTH_MODE_B <= 10) begin + assign addrb = {5'b0, B_ADDR[15:7], B_ADDR[5:4]}*10; + end + else if (WIDTH_MODE_B <= 20) begin + assign addrb = {6'b0, B_ADDR[15:7], B_ADDR[5]}*20; + end + end + endgenerate + + generate + if (RAM_MODE == "SDP") begin + // SDP write port + always @(posedge clka) + begin + for (k=0; k < A_WR_WIDTH; k=k+1) begin + if (k < 20) begin + if (ena && wea && A_BM[k]) memory[addra+k] <= A_DI[k]; + end + else begin // use both ports + if (ena && wea && B_BM[k-20]) memory[addra+k] <= B_DI[k-20]; + end + end + end + // SDP read port + always @(posedge clkb) + begin + // "NO_CHANGE" only + for (k=0; k < B_RD_WIDTH; k=k+1) begin + if (k < 20) begin + if (enb && !wea) A_DO_out[k] <= memory[addrb+k]; + end + else begin // use both ports + if (enb && !wea) B_DO_out[k-20] <= memory[addrb+k]; + end + end + end + end + else if (RAM_MODE == "TDP") begin + // TDP port A + always @(posedge clka) + begin + for (i=0; i < WIDTH_MODE_A; i=i+1) begin + if (ena && wea && A_BM[i]) memory[addra+i] <= A_DI[i]; + + if (A_WR_MODE == "NO_CHANGE") begin + if (ena && !wea) A_DO_out[i] <= memory[addra+i]; + end + else if (A_WR_MODE == "WRITE_THROUGH") begin + if (ena) begin + if (wea && A_BM[i]) begin + A_DO_out[i] <= A_DI[i]; + end + else begin + A_DO_out[i] <= memory[addra+i]; + end + end + end + end + end + // TDP port B + always @(posedge clkb) + begin + for (i=0; i < WIDTH_MODE_B; i=i+1) begin + if (enb && web && B_BM[i]) memory[addrb+i] <= B_DI[i]; + + if (B_WR_MODE == "NO_CHANGE") begin + if (enb && !web) B_DO_out[i] <= memory[addrb+i]; + end + else if (B_WR_MODE == "WRITE_THROUGH") begin + if (enb) begin + if (web && B_BM[i]) begin + B_DO_out[i] <= B_DI[i]; + end + else begin + B_DO_out[i] <= memory[addrb+i]; + end + end + end + end + end + end + endgenerate + + // Optional output register + generate + if (A_DO_REG) begin + always @(posedge clka) begin + A_DO_reg <= A_DO_out; + end + assign A_DO = A_DO_reg; + end + else begin + assign A_DO = A_DO_out; + end + if (B_DO_REG) begin + always @(posedge clkb) begin + B_DO_reg <= B_DO_out; + end + assign B_DO = B_DO_reg; + end + else begin + assign B_DO = B_DO_out; + end + endgenerate +endmodule + + +module CC_BRAM_40K ( + output [39:0] A_DO, + output [39:0] B_DO, + output A_ECC_1B_ERR, + output B_ECC_1B_ERR, + output A_ECC_2B_ERR, + output B_ECC_2B_ERR, + output reg A_CO = 0, + output reg B_CO = 0, + (* clkbuf_sink *) + input A_CLK, + (* clkbuf_sink *) + input B_CLK, + input A_EN, + input B_EN, + input A_WE, + input B_WE, + input [15:0] A_ADDR, + input [15:0] B_ADDR, + input [39:0] A_DI, + input [39:0] B_DI, + input [39:0] A_BM, + input [39:0] B_BM, + input A_CI, + input B_CI +); + // Location format: D(0..N-1)X(0..3)Y(0..7) or UNPLACED + parameter LOC = "UNPLACED"; + parameter CAS = "NONE"; // NONE, UPPER, LOWER + + // Port Widths + parameter A_RD_WIDTH = 0; + parameter B_RD_WIDTH = 0; + parameter A_WR_WIDTH = 0; + parameter B_WR_WIDTH = 0; + + // RAM and Write Modes + parameter RAM_MODE = "SDP"; + parameter A_WR_MODE = "NO_CHANGE"; + parameter B_WR_MODE = "NO_CHANGE"; + + // Inverting Control Pins + parameter A_CLK_INV = 1'b0; + parameter B_CLK_INV = 1'b0; + parameter A_EN_INV = 1'b0; + parameter B_EN_INV = 1'b0; + parameter A_WE_INV = 1'b0; + parameter B_WE_INV = 1'b0; + + // Output Register + parameter A_DO_REG = 1'b0; + parameter B_DO_REG = 1'b0; + + // Error Checking and Correction + parameter A_ECC_EN = 1'b0; + parameter B_ECC_EN = 1'b0; + + parameter INIT_00 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_01 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_02 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_03 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_04 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_05 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_06 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_07 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_08 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_09 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0A = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0B = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0C = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0D = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0E = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0F = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_10 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_11 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_12 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_13 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_14 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_15 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_16 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_17 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_18 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_19 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_1A = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_1B = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_1C = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_1D = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_1E = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_1F = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_20 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_21 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_22 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_23 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_24 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_25 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_26 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_27 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_28 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_29 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_2A = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_2B = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_2C = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_2D = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_2E = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_2F = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_30 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_31 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_32 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_33 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_34 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_35 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_36 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_37 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_38 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_39 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_3A = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_3B = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_3C = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_3D = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_3E = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_3F = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_40 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_41 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_42 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_43 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_44 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_45 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_46 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_47 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_48 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_49 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_4A = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_4B = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_4C = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_4D = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_4E = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_4F = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_50 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_51 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_52 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_53 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_54 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_55 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_56 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_57 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_58 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_59 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_5A = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_5B = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_5C = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_5D = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_5E = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_5F = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_60 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_61 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_62 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_63 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_64 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_65 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_66 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_67 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_68 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_69 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_6A = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_6B = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_6C = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_6D = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_6E = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_6F = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_70 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_71 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_72 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_73 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_74 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_75 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_76 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_77 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_78 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_79 = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_7A = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_7B = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_7C = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_7D = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_7E = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_7F = 320'h00000000000000000000000000000000000000000000000000000000000000000000000000000000; + + localparam WIDTH_MODE_A = (A_RD_WIDTH > A_WR_WIDTH) ? A_RD_WIDTH : A_WR_WIDTH; + localparam WIDTH_MODE_B = (B_RD_WIDTH > B_WR_WIDTH) ? B_RD_WIDTH : B_WR_WIDTH; + + integer i, k; + + // 512 x 80 bit + reg [40959:0] memory = 40960'b0; + + initial begin + // Check parameters + if ((RAM_MODE != "SDP") && (RAM_MODE != "TDP")) begin + $display("ERROR: Illegal RAM MODE %d.", RAM_MODE); + $finish(); + end + if ((A_WR_MODE != "WRITE_THROUGH") && (A_WR_MODE != "NO_CHANGE")) begin + $display("ERROR: Illegal RAM MODE %d.", RAM_MODE); + $finish(); + end + if ((RAM_MODE == "SDP") && (A_WR_MODE == "WRITE_THROUGH")) begin + $display("ERROR: %s is not supported in %s mode.", A_WR_MODE, RAM_MODE); + $finish(); + end + if ((A_ECC_EN != 1'b0) || (B_ECC_EN != 1'b0)) begin + $display("WARNING: ECC feature not supported in simulation."); + end + if ((A_ECC_EN == 1'b1) && (RAM_MODE != "SDP") && (WIDTH_MODE_A != 40)) begin + $display("ERROR: Illegal ECC Port A configuration. Must be SDP 40 bit, but is %s %d.", RAM_MODE, WIDTH_MODE_A); + $finish(); + end + if ((WIDTH_MODE_A == 80) && (RAM_MODE == "TDP")) begin + $display("ERROR: Port A width of 80 bits is only supported in SDP mode."); + $finish(); + end + if ((WIDTH_MODE_B == 80) && (RAM_MODE == "TDP")) begin + $display("ERROR: Port B width of 80 bits is only supported in SDP mode."); + $finish(); + end + if ((WIDTH_MODE_A != 80) && (WIDTH_MODE_A != 40) && (WIDTH_MODE_A != 20) && (WIDTH_MODE_A != 10) && + (WIDTH_MODE_A != 5) && (WIDTH_MODE_A != 2) && (WIDTH_MODE_A != 1) && (WIDTH_MODE_A != 0)) begin + $display("ERROR: Illegal %s Port A width configuration %d.", RAM_MODE, WIDTH_MODE_A); + $finish(); + end + if ((WIDTH_MODE_B != 80) && (WIDTH_MODE_B != 40) && (WIDTH_MODE_B != 20) && (WIDTH_MODE_B != 10) && + (WIDTH_MODE_B != 5) && (WIDTH_MODE_B != 2) && (WIDTH_MODE_B != 1) && (WIDTH_MODE_B != 0)) begin + $display("ERROR: Illegal %s Port B width configuration %d.", RAM_MODE, WIDTH_MODE_B); + $finish(); + end + if ((CAS != "NONE") && ((WIDTH_MODE_A > 1) || (WIDTH_MODE_B > 1))) begin + $display("ERROR: Cascade feature only supported in 1 bit data width mode."); + $finish(); + end + if ((CAS != "NONE") && (RAM_MODE != "TDP")) begin + $display("ERROR: Cascade feature only supported in TDP mode."); + $finish(); + end + // RAM initialization + memory[320*0+319:320*0] = INIT_00; + memory[320*1+319:320*1] = INIT_01; + memory[320*2+319:320*2] = INIT_02; + memory[320*3+319:320*3] = INIT_03; + memory[320*4+319:320*4] = INIT_04; + memory[320*5+319:320*5] = INIT_05; + memory[320*6+319:320*6] = INIT_06; + memory[320*7+319:320*7] = INIT_07; + memory[320*8+319:320*8] = INIT_08; + memory[320*9+319:320*9] = INIT_09; + memory[320*10+319:320*10] = INIT_0A; + memory[320*11+319:320*11] = INIT_0B; + memory[320*12+319:320*12] = INIT_0C; + memory[320*13+319:320*13] = INIT_0D; + memory[320*14+319:320*14] = INIT_0E; + memory[320*15+319:320*15] = INIT_0F; + memory[320*16+319:320*16] = INIT_10; + memory[320*17+319:320*17] = INIT_11; + memory[320*18+319:320*18] = INIT_12; + memory[320*19+319:320*19] = INIT_13; + memory[320*20+319:320*20] = INIT_14; + memory[320*21+319:320*21] = INIT_15; + memory[320*22+319:320*22] = INIT_16; + memory[320*23+319:320*23] = INIT_17; + memory[320*24+319:320*24] = INIT_18; + memory[320*25+319:320*25] = INIT_19; + memory[320*26+319:320*26] = INIT_1A; + memory[320*27+319:320*27] = INIT_1B; + memory[320*28+319:320*28] = INIT_1C; + memory[320*29+319:320*29] = INIT_1D; + memory[320*30+319:320*30] = INIT_1E; + memory[320*31+319:320*31] = INIT_1F; + memory[320*32+319:320*32] = INIT_20; + memory[320*33+319:320*33] = INIT_21; + memory[320*34+319:320*34] = INIT_22; + memory[320*35+319:320*35] = INIT_23; + memory[320*36+319:320*36] = INIT_24; + memory[320*37+319:320*37] = INIT_25; + memory[320*38+319:320*38] = INIT_26; + memory[320*39+319:320*39] = INIT_27; + memory[320*40+319:320*40] = INIT_28; + memory[320*41+319:320*41] = INIT_29; + memory[320*42+319:320*42] = INIT_2A; + memory[320*43+319:320*43] = INIT_2B; + memory[320*44+319:320*44] = INIT_2C; + memory[320*45+319:320*45] = INIT_2D; + memory[320*46+319:320*46] = INIT_2E; + memory[320*47+319:320*47] = INIT_2F; + memory[320*48+319:320*48] = INIT_30; + memory[320*49+319:320*49] = INIT_31; + memory[320*50+319:320*50] = INIT_32; + memory[320*51+319:320*51] = INIT_33; + memory[320*52+319:320*52] = INIT_34; + memory[320*53+319:320*53] = INIT_35; + memory[320*54+319:320*54] = INIT_36; + memory[320*55+319:320*55] = INIT_37; + memory[320*56+319:320*56] = INIT_38; + memory[320*57+319:320*57] = INIT_39; + memory[320*58+319:320*58] = INIT_3A; + memory[320*59+319:320*59] = INIT_3B; + memory[320*60+319:320*60] = INIT_3C; + memory[320*61+319:320*61] = INIT_3D; + memory[320*62+319:320*62] = INIT_3E; + memory[320*63+319:320*63] = INIT_3F; + memory[320*64+319:320*64] = INIT_40; + memory[320*65+319:320*65] = INIT_41; + memory[320*66+319:320*66] = INIT_42; + memory[320*67+319:320*67] = INIT_43; + memory[320*68+319:320*68] = INIT_44; + memory[320*69+319:320*69] = INIT_45; + memory[320*70+319:320*70] = INIT_46; + memory[320*71+319:320*71] = INIT_47; + memory[320*72+319:320*72] = INIT_48; + memory[320*73+319:320*73] = INIT_49; + memory[320*74+319:320*74] = INIT_4A; + memory[320*75+319:320*75] = INIT_4B; + memory[320*76+319:320*76] = INIT_4C; + memory[320*77+319:320*77] = INIT_4D; + memory[320*78+319:320*78] = INIT_4E; + memory[320*79+319:320*79] = INIT_4F; + memory[320*80+319:320*80] = INIT_50; + memory[320*81+319:320*81] = INIT_51; + memory[320*82+319:320*82] = INIT_52; + memory[320*83+319:320*83] = INIT_53; + memory[320*84+319:320*84] = INIT_54; + memory[320*85+319:320*85] = INIT_55; + memory[320*86+319:320*86] = INIT_56; + memory[320*87+319:320*87] = INIT_57; + memory[320*88+319:320*88] = INIT_58; + memory[320*89+319:320*89] = INIT_59; + memory[320*90+319:320*90] = INIT_5A; + memory[320*91+319:320*91] = INIT_5B; + memory[320*92+319:320*92] = INIT_5C; + memory[320*93+319:320*93] = INIT_5D; + memory[320*94+319:320*94] = INIT_5E; + memory[320*95+319:320*95] = INIT_5F; + memory[320*96+319:320*96] = INIT_60; + memory[320*97+319:320*97] = INIT_61; + memory[320*98+319:320*98] = INIT_62; + memory[320*99+319:320*99] = INIT_63; + memory[320*100+319:320*100] = INIT_64; + memory[320*101+319:320*101] = INIT_65; + memory[320*102+319:320*102] = INIT_66; + memory[320*103+319:320*103] = INIT_67; + memory[320*104+319:320*104] = INIT_68; + memory[320*105+319:320*105] = INIT_69; + memory[320*106+319:320*106] = INIT_6A; + memory[320*107+319:320*107] = INIT_6B; + memory[320*108+319:320*108] = INIT_6C; + memory[320*109+319:320*109] = INIT_6D; + memory[320*110+319:320*110] = INIT_6E; + memory[320*111+319:320*111] = INIT_6F; + memory[320*112+319:320*112] = INIT_70; + memory[320*113+319:320*113] = INIT_71; + memory[320*114+319:320*114] = INIT_72; + memory[320*115+319:320*115] = INIT_73; + memory[320*116+319:320*116] = INIT_74; + memory[320*117+319:320*117] = INIT_75; + memory[320*118+319:320*118] = INIT_76; + memory[320*119+319:320*119] = INIT_77; + memory[320*120+319:320*120] = INIT_78; + memory[320*121+319:320*121] = INIT_79; + memory[320*122+319:320*122] = INIT_7A; + memory[320*123+319:320*123] = INIT_7B; + memory[320*124+319:320*124] = INIT_7C; + memory[320*125+319:320*125] = INIT_7D; + memory[320*126+319:320*126] = INIT_7E; + memory[320*127+319:320*127] = INIT_7F; + end + + // Signal inversion + wire clka = A_CLK_INV ^ A_CLK; + wire clkb = B_CLK_INV ^ B_CLK; + wire ena = A_EN_INV ^ A_EN; + wire enb = B_EN_INV ^ B_EN; + wire wea = A_WE_INV ^ A_WE; + wire web = B_WE_INV ^ B_WE; + + // Internal signals + wire [15:0] addra; + wire [15:0] addrb; + reg [39:0] A_DO_out = 0, A_DO_reg = 0; + reg [39:0] B_DO_out = 0, B_DO_reg = 0; + + generate + if (RAM_MODE == "SDP") begin + // Port A (write) + if (A_WR_WIDTH == 80) begin + assign addra = A_ADDR[15:7]*80; + end + // Port B (read) + if (B_RD_WIDTH == 80) begin + assign addrb = B_ADDR[15:7]*80; + end + end + else if (RAM_MODE == "TDP") begin + // Port A + if (WIDTH_MODE_A <= 1) begin + wire [15:0] tmpa = {1'b0, A_ADDR[15:1]}; + assign addra = tmpa + (tmpa/4); + end + else if (WIDTH_MODE_A <= 2) begin + wire [15:0] tmpa = {2'b0, A_ADDR[15:2]}; + assign addra = tmpa*2 + (tmpa/2); + end + else if (WIDTH_MODE_A <= 5) begin + assign addra = {3'b0, A_ADDR[15:3]}*5; + end + else if (WIDTH_MODE_A <= 10) begin + assign addra = {4'b0, A_ADDR[15:4]}*10; + end + else if (WIDTH_MODE_A <= 20) begin + assign addra = {5'b0, A_ADDR[15:5]}*20; + end + else if (WIDTH_MODE_A <= 40) begin + assign addra = {6'b0, A_ADDR[15:6]}*40; + end + // Port B + if (WIDTH_MODE_B <= 1) begin + wire [15:0] tmpb = {1'b0, B_ADDR[15:1]}; + assign addrb = tmpb + (tmpb/4); + end + else if (WIDTH_MODE_B <= 2) begin + wire [15:0] tmpb = {2'b0, B_ADDR[15:2]}; + assign addrb = tmpb*2 + (tmpb/2); + end + else if (WIDTH_MODE_B <= 5) begin + assign addrb = {3'b0, B_ADDR[15:3]}*5; + end + else if (WIDTH_MODE_B <= 10) begin + assign addrb = {4'b0, B_ADDR[15:4]}*10; + end + else if (WIDTH_MODE_B <= 20) begin + assign addrb = {5'b0, B_ADDR[15:5]}*20; + end + else if (WIDTH_MODE_B <= 40) begin + assign addrb = {6'b0, B_ADDR[15:6]}*40; + end + end + endgenerate + + generate + if (RAM_MODE == "SDP") begin + // SDP write port + always @(posedge clka) + begin + for (k=0; k < A_WR_WIDTH; k=k+1) begin + if (k < 40) begin + if (ena && wea && A_BM[k]) memory[addra+k] <= A_DI[k]; + end + else begin // use both ports + if (ena && wea && B_BM[k-40]) memory[addra+k] <= B_DI[k-40]; + end + end + end + // SDP read port + always @(posedge clkb) + begin + // "NO_CHANGE" only + for (k=0; k < B_RD_WIDTH; k=k+1) begin + if (k < 40) begin + if (enb && !wea) A_DO_out[k] <= memory[addrb+k]; + end + else begin // use both ports + if (enb && !wea) B_DO_out[k-40] <= memory[addrb+k]; + end + end + end + end + else if (RAM_MODE == "TDP") begin + // {A,B}_ADDR[0]=0 selects lower, {A,B}_ADDR[0]=1 selects upper cascade memory + wire upper_sel_a = ((CAS == "UPPER") && (A_ADDR[0] == 1)); + wire lower_sel_a = ((CAS == "LOWER") && (A_ADDR[0] == 0)); + wire upper_sel_b = ((CAS == "UPPER") && (B_ADDR[0] == 1)); + wire lower_sel_b = ((CAS == "LOWER") && (B_ADDR[0] == 0)); + + reg dumm; + + // Cascade output port A + always @(*) + begin + if ((A_WR_MODE == "NO_CHANGE") && lower_sel_a) begin + A_CO = memory[addra]; + end + else if ((A_WR_MODE == "WRITE_THROUGH") && lower_sel_a) begin + A_CO = ((wea && A_BM[0]) ? (A_DI[0]) : (memory[addra])); + end + end + + // Cascade output port B + always @(*) + begin + if ((B_WR_MODE == "NO_CHANGE") && lower_sel_b) begin + B_CO = memory[addrb]; + end + else if ((B_WR_MODE == "WRITE_THROUGH") && lower_sel_b) begin + B_CO = ((web && B_BM[0]) ? (B_DI[0]) : (memory[addrb])); + end + end + + // TDP port A + always @(posedge clka) + begin + for (i=0; i < WIDTH_MODE_A; i=i+1) begin + if (upper_sel_a || lower_sel_a || (CAS == "NONE")) begin + if (ena && wea && A_BM[i]) + memory[addra+i] <= A_DI[i]; + end + + if (A_WR_MODE == "NO_CHANGE") begin + if (ena && !wea) begin + if (CAS == "UPPER") begin + A_DO_out[i] <= ((A_ADDR[0] == 1) ? (memory[addra+i]) : (A_CI)); + end + else if (CAS == "NONE") begin + A_DO_out[i] <= memory[addra+i]; + end + end + end + else if (A_WR_MODE == "WRITE_THROUGH") begin + if (ena) begin + if (CAS == "UPPER") begin + if (A_ADDR[0] == 1) begin + A_DO_out[i] <= ((wea && A_BM[i]) ? (A_DI[i]) : (memory[addra+i])); + end else begin + A_DO_out[i] <= A_CI; + end + end + else if (CAS == "NONE") begin + A_DO_out[i] <= ((wea && A_BM[i]) ? (A_DI[i]) : (memory[addra+i])); + end + end + end + end + end + // TDP port B + always @(posedge clkb) + begin + for (i=0; i < WIDTH_MODE_B; i=i+1) begin + if (upper_sel_b || lower_sel_b || (CAS == "NONE")) begin + if (enb && web && B_BM[i]) + memory[addrb+i] <= B_DI[i]; + end + + if (B_WR_MODE == "NO_CHANGE") begin + if (enb && !web) begin + if (CAS == "UPPER") begin + B_DO_out[i] <= ((B_ADDR[0] == 1) ? (memory[addrb+i]) : (B_CI)); + end + else if (CAS == "NONE") begin + B_DO_out[i] <= memory[addrb+i]; + end + end + end + else if (B_WR_MODE == "WRITE_THROUGH") begin + if (enb) begin + if (CAS == "UPPER") begin + if (B_ADDR[0] == 1) begin + B_DO_out[i] <= ((web && B_BM[i]) ? (B_DI[i]) : (memory[addrb+i])); + end else begin + B_DO_out[i] <= B_CI; + end + end + else if (CAS == "NONE") begin + B_DO_out[i] <= ((web && B_BM[i]) ? (B_DI[i]) : (memory[addrb+i])); + end + end + end + end + end + end + endgenerate + + // Optional output register + generate + if (A_DO_REG) begin + always @(posedge clka) begin + A_DO_reg <= A_DO_out; + end + assign A_DO = A_DO_reg; + end + else begin + assign A_DO = A_DO_out; + end + if (B_DO_REG) begin + always @(posedge clkb) begin + B_DO_reg <= B_DO_out; + end + assign B_DO = B_DO_reg; + end + else begin + assign B_DO = B_DO_out; + end + endgenerate +endmodule + +// Models of the LUT2 tree primitives +module CC_L2T4( + output O, + input I0, I1, I2, I3 +); + parameter [3:0] INIT_L00 = 4'b0000; + parameter [3:0] INIT_L01 = 4'b0000; + parameter [3:0] INIT_L10 = 4'b0000; + + wire [1:0] l00_s1 = I1 ? INIT_L00[3:2] : INIT_L00[1:0]; + wire l00 = I0 ? l00_s1[1] : l00_s1[0]; + + wire [1:0] l01_s1 = I3 ? INIT_L01[3:2] : INIT_L01[1:0]; + wire l01 = I2 ? l01_s1[1] : l01_s1[0]; + + wire [1:0] l10_s1 = l01 ? INIT_L10[3:2] : INIT_L10[1:0]; + assign O = l00 ? l10_s1[1] : l10_s1[0]; + +endmodule + + +module CC_L2T5( + output O, + input I0, I1, I2, I3, I4 +); + parameter [3:0] INIT_L02 = 4'b0000; + parameter [3:0] INIT_L03 = 4'b0000; + parameter [3:0] INIT_L11 = 4'b0000; + parameter [3:0] INIT_L20 = 4'b0000; + + wire [1:0] l02_s1 = I1 ? INIT_L02[3:2] : INIT_L02[1:0]; + wire l02 = I0 ? l02_s1[1] : l02_s1[0]; + + wire [1:0] l03_s1 = I3 ? INIT_L03[3:2] : INIT_L03[1:0]; + wire l03 = I2 ? l03_s1[1] : l03_s1[0]; + + wire [1:0] l11_s1 = l03 ? INIT_L11[3:2] : INIT_L11[1:0]; + wire l11 = l02 ? l11_s1[1] : l11_s1[0]; + + wire [1:0] l20_s1 = l11 ? INIT_L20[3:2] : INIT_L20[1:0]; + assign O = I4 ? l20_s1[1] : l20_s1[0]; + +endmodule diff --git a/resources/netlist/resources/kernel/share/gatemate/inv_map.v b/resources/netlist/resources/kernel/share/gatemate/inv_map.v new file mode 100644 index 0000000..8a50517 --- /dev/null +++ b/resources/netlist/resources/kernel/share/gatemate/inv_map.v @@ -0,0 +1,4 @@ +// Any inverters not folded into LUTs are mapped to a LUT of their own +module \$__CC_NOT (input A, output Y); + CC_LUT1 #(.INIT(2'b01)) _TECHMAP_REPLACE_ (.I0(A), .O(Y)); +endmodule diff --git a/resources/netlist/resources/kernel/share/gatemate/lut_map.v b/resources/netlist/resources/kernel/share/gatemate/lut_map.v new file mode 100644 index 0000000..c522e4c --- /dev/null +++ b/resources/netlist/resources/kernel/share/gatemate/lut_map.v @@ -0,0 +1,45 @@ +/* + * yosys -- Yosys Open SYnthesis Suite + * + * Copyright (C) 2021 Cologne Chip AG + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + */ + +module \$lut (A, Y); + parameter WIDTH = 0; + parameter LUT = 0; + + (* force_downto *) + input [WIDTH-1:0] A; + output Y; + + generate + if (WIDTH == 1) begin + CC_LUT1 #(.INIT(LUT)) _TECHMAP_REPLACE_ (.O(Y), .I0(A[0])); + end + else if (WIDTH == 2) begin + CC_LUT2 #(.INIT(LUT)) _TECHMAP_REPLACE_ (.O(Y), .I0(A[0]), .I1(A[1])); + end + else if (WIDTH == 3) begin + CC_LUT3 #(.INIT(LUT)) _TECHMAP_REPLACE_ (.O(Y), .I0(A[0]), .I1(A[1]), .I2(A[2])); + end + else if (WIDTH == 4) begin + CC_LUT4 #(.INIT(LUT)) _TECHMAP_REPLACE_ (.O(Y), .I0(A[0]), .I1(A[1]), .I2(A[2]), .I3(A[3])); + end + else begin + wire _TECHMAP_FAIL_ = 1; + end + endgenerate +endmodule diff --git a/resources/netlist/resources/kernel/share/gatemate/lut_tree_cells.genlib b/resources/netlist/resources/kernel/share/gatemate/lut_tree_cells.genlib new file mode 100644 index 0000000..bbc3be0 --- /dev/null +++ b/resources/netlist/resources/kernel/share/gatemate/lut_tree_cells.genlib @@ -0,0 +1,221 @@ +GATE $__ZERO 0 Y=CONST0; +GATE $__ONE 0 Y=CONST1; + +GATE $__CC_BUF 5 Y=A; +PIN * NONINV 1 9999 10 5 10 5 + +GATE $__CC_NOT 0 Y=!A; +PIN * INV 1 9999 10 5 10 5 + +GATE $__CC_MUX 5 Y=((A*!C)+(B*C)); +PIN * UNKNOWN 1 9999 10 5 10 5 + +GATE $__CC2_A 10 Y=(A*B); +PIN * NONINV 1 9999 10 5 10 5 + +GATE $__CC3_A_O 12 Y=(E+(A*B)); +PIN * NONINV 1 9999 10 5 10 5 + +GATE $__CC3_A_X 12 Y=((E*(!A+!B))+(!E*(A*B))); +PIN * UNKNOWN 1 9999 10 5 10 5 + +GATE $__CC2_O 10 Y=(A+B); +PIN * NONINV 1 9999 10 5 10 5 + +GATE $__CC3_O_A 12 Y=(E*(A+B)); +PIN * NONINV 1 9999 10 5 10 5 + +GATE $__CC3_O_X 12 Y=((E*(!A*!B))+(!E*(A+B))); +PIN * UNKNOWN 1 9999 10 5 10 5 + +GATE $__CC2_X 10 Y=((A*!B)+(!A*B)); +PIN * UNKNOWN 1 9999 10 5 10 5 + +GATE $__CC3_X_A 12 Y=(E*((A*!B)+(!A*B))); +PIN * UNKNOWN 1 9999 10 5 10 5 + +GATE $__CC3_X_O 12 Y=(E+((A*!B)+(!A*B))); +PIN * UNKNOWN 1 9999 10 5 10 5 + +GATE $__CC3_AA 10 Y=((A*B)*C); +PIN * NONINV 1 9999 10 5 10 5 + +GATE $__CC4_AA_O 12 Y=(E+((A*B)*C)); +PIN * NONINV 1 9999 10 5 10 5 + +GATE $__CC4_AA_X 12 Y=((E*((!A+!B)+!C))+(!E*((A*B)*C))); +PIN * UNKNOWN 1 9999 10 5 10 5 + +GATE $__CC3_OO 10 Y=((A+B)+C); +PIN * NONINV 1 9999 10 5 10 5 + +GATE $__CC4_OO_A 12 Y=(E*((A+B)+C)); +PIN * NONINV 1 9999 10 5 10 5 + +GATE $__CC4_OO_X 12 Y=((E*((!A*!B)*!C))+(!E*((A+B)+C))); +PIN * UNKNOWN 1 9999 10 5 10 5 + +GATE $__CC3_XX 10 Y=((((A*!B)+(!A*B))*!C)+(((!A+B)*(A+!B))*C)); +PIN * UNKNOWN 1 9999 10 5 10 5 + +GATE $__CC4_XX_A 12 Y=(E*((((A*!B)+(!A*B))*!C)+(((!A+B)*(A+!B))*C))); +PIN * UNKNOWN 1 9999 10 5 10 5 + +GATE $__CC4_XX_O 12 Y=(E+((((A*!B)+(!A*B))*!C)+(((!A+B)*(A+!B))*C))); +PIN * UNKNOWN 1 9999 10 5 10 5 + +GATE $__CC3_AO 10 Y=((A*B)+C); +PIN * NONINV 1 9999 10 5 10 5 + +GATE $__CC4_AO_A 12 Y=(E*((A*B)+C)); +PIN * NONINV 1 9999 10 5 10 5 + +GATE $__CC4_AO_O 12 Y=(E+((A*B)+C)); +PIN * NONINV 1 9999 10 5 10 5 + +GATE $__CC4_AO_X 12 Y=((E*((!A+!B)*!C))+(!E*((A*B)+C))); +PIN * UNKNOWN 1 9999 10 5 10 5 + +GATE $__CC3_OA 10 Y=((A+B)*C); +PIN * NONINV 1 9999 10 5 10 5 + +GATE $__CC4_OA_A 12 Y=(E*((A+B)*C)); +PIN * NONINV 1 9999 10 5 10 5 + +GATE $__CC4_OA_O 12 Y=(E+((A+B)*C)); +PIN * NONINV 1 9999 10 5 10 5 + +GATE $__CC4_OA_X 12 Y=((E*((!A*!B)+!C))+(!E*((A+B)*C))); +PIN * UNKNOWN 1 9999 10 5 10 5 + +GATE $__CC3_AX 10 Y=(((A*B)*!C)+((!A+!B)*C)); +PIN * UNKNOWN 1 9999 10 5 10 5 + +GATE $__CC4_AX_A 12 Y=(E*(((A*B)*!C)+((!A+!B)*C))); +PIN * UNKNOWN 1 9999 10 5 10 5 + +GATE $__CC4_AX_O 12 Y=(E+(((A*B)*!C)+((!A+!B)*C))); +PIN * UNKNOWN 1 9999 10 5 10 5 + +GATE $__CC4_AX_X 12 Y=((E*(((!A+!B)+C)*((A*B)+!C)))+(!E*(((A*B)*!C)+((!A+!B)*C)))); +PIN * UNKNOWN 1 9999 10 5 10 5 + +GATE $__CC3_XA 10 Y=(((A*!B)+(!A*B))*C); +PIN * UNKNOWN 1 9999 10 5 10 5 + +GATE $__CC4_XA_A 12 Y=(E*(((A*!B)+(!A*B))*C)); +PIN * UNKNOWN 1 9999 10 5 10 5 + +GATE $__CC4_XA_O 12 Y=(E+(((A*!B)+(!A*B))*C)); +PIN * UNKNOWN 1 9999 10 5 10 5 + +GATE $__CC4_XA_X 12 Y=((E*(((!A+B)*(A+!B))+!C))+(!E*(((A*!B)+(!A*B))*C))); +PIN * UNKNOWN 1 9999 10 5 10 5 + +GATE $__CC4_AAA 10 Y=((A*B)*(C*D)); +PIN * NONINV 1 9999 10 5 10 5 + +GATE $__CC5_AAA_A 12 Y=(E*((A*B)*(C*D))); +PIN * NONINV 1 9999 10 5 10 5 + +GATE $__CC5_AAA_O 12 Y=(E+((A*B)*(C*D))); +PIN * NONINV 1 9999 10 5 10 5 + +GATE $__CC5_AAA_X 12 Y=((E*((!A+!B)+(!C+!D)))+(!E*((A*B)*(C*D)))); +PIN * UNKNOWN 1 9999 10 5 10 5 + +GATE $__CC4_AXA 10 Y=(((A*B)*(!C+!D))+((!A+!B)*(C*D))); +PIN * UNKNOWN 1 9999 10 5 10 5 + +GATE $__CC5_AXA_A 12 Y=(E*(((A*B)*(!C+!D))+((!A+!B)*(C*D)))); +PIN * UNKNOWN 1 9999 10 5 10 5 + +GATE $__CC5_AXA_O 12 Y=(E+(((A*B)*(!C+!D))+((!A+!B)*(C*D)))); +PIN * UNKNOWN 1 9999 10 5 10 5 + +GATE $__CC5_AXA_X 12 Y=((E*(((!A+!B)+(C*D))*((A*B)+(!C+!D))))+(!E*(((A*B)*(!C+!D))+((!A+!B)*(C*D))))); +PIN * UNKNOWN 1 9999 10 5 10 5 + +GATE $__CC4_XAX 10 Y=(((A*!B)+(!A*B))*((C*!D)+(!C*D))); +PIN * UNKNOWN 1 9999 10 5 10 5 + +GATE $__CC5_XAX_A 12 Y=(E*(((A*!B)+(!A*B))*((C*!D)+(!C*D)))); +PIN * UNKNOWN 1 9999 10 5 10 5 + +GATE $__CC5_XAX_O 12 Y=(E+(((A*!B)+(!A*B))*((C*!D)+(!C*D)))); +PIN * UNKNOWN 1 9999 10 5 10 5 + +GATE $__CC5_XAX_X 12 Y=((E*(((!A+B)*(A+!B))+((!C+D)*(C+!D))))+(!E*(((A*!B)+(!A*B))*((C*!D)+(!C*D))))); +PIN * UNKNOWN 1 9999 10 5 10 5 + +GATE $__CC4_AAX 10 Y=((A*B)*((C*!D)+(!C*D))); +PIN * UNKNOWN 1 9999 10 5 10 5 + +GATE $__CC5_AAX_A 12 Y=(E*((A*B)*((C*!D)+(!C*D)))); +PIN * UNKNOWN 1 9999 10 5 10 5 + +GATE $__CC5_AAX_O 12 Y=(E+((A*B)*((C*!D)+(!C*D)))); +PIN * UNKNOWN 1 9999 10 5 10 5 + +GATE $__CC5_AAX_X 12 Y=((E*((!A+!B)+((!C+D)*(C+!D))))+(!E*((A*B)*((C*!D)+(!C*D))))); +PIN * UNKNOWN 1 9999 10 5 10 5 + +GATE $__CC4_AXX 10 Y=(((A*B)*((!C+D)*(C+!D)))+((!A+!B)*((C*!D)+(!C*D)))); +PIN * UNKNOWN 1 9999 10 5 10 5 + +GATE $__CC5_AXX_A 12 Y=(E*(((A*B)*((!C+D)*(C+!D)))+((!A+!B)*((C*!D)+(!C*D))))); +PIN * UNKNOWN 1 9999 10 5 10 5 + +GATE $__CC5_AXX_O 12 Y=(E+(((A*B)*((!C+D)*(C+!D)))+((!A+!B)*((C*!D)+(!C*D))))); +PIN * UNKNOWN 1 9999 10 5 10 5 + +GATE $__CC5_AXX_X 12 Y=((E*(((!A+!B)+((C*!D)+(!C*D)))*((A*B)+((!C+D)*(C+!D)))))+(!E*(((A*B)*((!C+D)*(C+!D)))+((!A+!B)*((C*!D)+(!C*D)))))); +PIN * UNKNOWN 1 9999 10 5 10 5 + +GATE $__CC4_XXX 10 Y=((((A*!B)+(!A*B))*((!C+D)*(C+!D)))+(((!A+B)*(A+!B))*((C*!D)+(!C*D)))); +PIN * UNKNOWN 1 9999 10 5 10 5 + +GATE $__CC5_XXX_A 12 Y=(E*((((A*!B)+(!A*B))*((!C+D)*(C+!D)))+(((!A+B)*(A+!B))*((C*!D)+(!C*D))))); +PIN * UNKNOWN 1 9999 10 5 10 5 + +GATE $__CC5_XXX_O 12 Y=(E+((((A*!B)+(!A*B))*((!C+D)*(C+!D)))+(((!A+B)*(A+!B))*((C*!D)+(!C*D))))); +PIN * UNKNOWN 1 9999 10 5 10 5 + +GATE $__CC5_XXX_X 12 Y=((E*((((!A+B)*(A+!B))+((C*!D)+(!C*D)))*(((A*!B)+(!A*B))+((!C+D)*(C+!D)))))+(!E*((((A*!B)+(!A*B))*((!C+D)*(C+!D)))+(((!A+B)*(A+!B))*((C*!D)+(!C*D)))))); +PIN * UNKNOWN 1 9999 10 5 10 5 + +GATE $__CC4_AAO 10 Y=((A*B)*(C+D)); +PIN * NONINV 1 9999 10 5 10 5 + +GATE $__CC5_AAO_A 12 Y=(E*((A*B)*(C+D))); +PIN * NONINV 1 9999 10 5 10 5 + +GATE $__CC5_AAO_O 12 Y=(E+((A*B)*(C+D))); +PIN * NONINV 1 9999 10 5 10 5 + +GATE $__CC5_AAO_X 12 Y=((E*((!A+!B)+(!C*!D)))+(!E*((A*B)*(C+D)))); +PIN * UNKNOWN 1 9999 10 5 10 5 + +GATE $__CC4_AOA 10 Y=((A*B)+(C*D)); +PIN * NONINV 1 9999 10 5 10 5 + +GATE $__CC5_AOA_A 12 Y=(E*((A*B)+(C*D))); +PIN * NONINV 1 9999 10 5 10 5 + +GATE $__CC5_AOA_O 12 Y=(E+((A*B)+(C*D))); +PIN * NONINV 1 9999 10 5 10 5 + +GATE $__CC5_AOA_X 12 Y=((E*((!A+!B)*(!C+!D)))+(!E*((A*B)+(C*D)))); +PIN * UNKNOWN 1 9999 10 5 10 5 + +GATE $__CC4_AOX 10 Y=((A*B)+((C*!D)+(!C*D))); +PIN * UNKNOWN 1 9999 10 5 10 5 + +GATE $__CC5_AOX_A 12 Y=(E*((A*B)+((C*!D)+(!C*D)))); +PIN * UNKNOWN 1 9999 10 5 10 5 + +GATE $__CC5_AOX_O 12 Y=(E+((A*B)+((C*!D)+(!C*D)))); +PIN * UNKNOWN 1 9999 10 5 10 5 + +GATE $__CC5_AOX_X 12 Y=((E*((!A+!B)*((!C+D)*(C+!D))))+(!E*((A*B)+((C*!D)+(!C*D))))); +PIN * UNKNOWN 1 9999 10 5 10 5 diff --git a/resources/netlist/resources/kernel/share/gatemate/lut_tree_map.v b/resources/netlist/resources/kernel/share/gatemate/lut_tree_map.v new file mode 100644 index 0000000..9eef3a5 --- /dev/null +++ b/resources/netlist/resources/kernel/share/gatemate/lut_tree_map.v @@ -0,0 +1,822 @@ + +module \$__ZERO (output Y); assign Y = 1'b0; endmodule +module \$__ONE (output Y); assign Y = 1'b1; endmodule + +module \$__CC_BUF (input A, output Y); assign Y = A; endmodule + +module \$__CC_MUX (input A, B, C, output Y); + CC_MX2 _TECHMAP_REPLACE_ ( + .D0(A), .D1(B), .S0(C), + .Y(Y) + ); +endmodule + + +module \$__CC2_A (input A, B, output Y); + CC_LUT2 #( + .INIT(4'b1000), + ) _TECHMAP_REPLACE_ ( + .I0(A), .I1(B), + .O(Y) + ); +endmodule + +module \$__CC3_A_O (input A, B, E, output Y); + CC_L2T4 #( + .INIT_L00(4'b1010), + .INIT_L01(4'b1000), + .INIT_L10(4'b1110), + ) _TECHMAP_REPLACE_ ( + .I0(E), .I1(), .I2(A), .I3(B), + .O(Y) + ); +endmodule + +module \$__CC3_A_X (input A, B, E, output Y); + CC_L2T4 #( + .INIT_L00(4'b1010), + .INIT_L01(4'b1000), + .INIT_L10(4'b0110), + ) _TECHMAP_REPLACE_ ( + .I0(E), .I1(), .I2(A), .I3(B), + .O(Y) + ); +endmodule + +module \$__CC2_O (input A, B, output Y); + CC_LUT2 #( + .INIT(4'b1110), + ) _TECHMAP_REPLACE_ ( + .I0(A), .I1(B), + .O(Y) + ); +endmodule + +module \$__CC3_O_A (input A, B, E, output Y); + CC_L2T4 #( + .INIT_L00(4'b1010), + .INIT_L01(4'b1110), + .INIT_L10(4'b1000), + ) _TECHMAP_REPLACE_ ( + .I0(E), .I1(), .I2(A), .I3(B), + .O(Y) + ); +endmodule + +module \$__CC3_O_X (input A, B, E, output Y); + CC_L2T4 #( + .INIT_L00(4'b1010), + .INIT_L01(4'b1110), + .INIT_L10(4'b0110), + ) _TECHMAP_REPLACE_ ( + .I0(E), .I1(), .I2(A), .I3(B), + .O(Y) + ); +endmodule + +module \$__CC2_X (input A, B, output Y); + CC_LUT2 #( + .INIT(4'b0110), + ) _TECHMAP_REPLACE_ ( + .I0(A), .I1(B), + .O(Y) + ); +endmodule + +module \$__CC3_X_A (input A, B, E, output Y); + CC_L2T4 #( + .INIT_L00(4'b1010), + .INIT_L01(4'b0110), + .INIT_L10(4'b1000), + ) _TECHMAP_REPLACE_ ( + .I0(E), .I1(), .I2(A), .I3(B), + .O(Y) + ); +endmodule + +module \$__CC3_X_O (input A, B, E, output Y); + CC_L2T4 #( + .INIT_L00(4'b1010), + .INIT_L01(4'b0110), + .INIT_L10(4'b1110), + ) _TECHMAP_REPLACE_ ( + .I0(E), .I1(), .I2(A), .I3(B), + .O(Y) + ); +endmodule + +module \$__CC3_AA (input A, B, C, output Y); + CC_L2T4 #( + .INIT_L00(4'b1000), + .INIT_L01(4'b1010), + .INIT_L10(4'b1000), + ) _TECHMAP_REPLACE_ ( + .I0(A), .I1(B), .I2(C), .I3(), + .O(Y) + ); +endmodule + +module \$__CC4_AA_O (input A, B, C, E, output Y); + CC_L2T5 #( + .INIT_L02(4'b1000), + .INIT_L03(4'b1010), + .INIT_L11(4'b1000), + .INIT_L20(4'b1110), + ) _TECHMAP_REPLACE_ ( + .I0(A), .I1(B), .I2(C), .I3(), .I4(E), + .O(Y) + ); +endmodule + +module \$__CC4_AA_X (input A, B, C, E, output Y); + CC_L2T5 #( + .INIT_L02(4'b1000), + .INIT_L03(4'b1010), + .INIT_L11(4'b1000), + .INIT_L20(4'b0110), + ) _TECHMAP_REPLACE_ ( + .I0(A), .I1(B), .I2(C), .I3(), .I4(E), + .O(Y) + ); +endmodule + +module \$__CC3_OO (input A, B, C, output Y); + CC_L2T4 #( + .INIT_L00(4'b1110), + .INIT_L01(4'b1010), + .INIT_L10(4'b1110), + ) _TECHMAP_REPLACE_ ( + .I0(A), .I1(B), .I2(C), .I3(), + .O(Y) + ); +endmodule + +module \$__CC4_OO_A (input A, B, C, E, output Y); + CC_L2T5 #( + .INIT_L02(4'b1110), + .INIT_L03(4'b1010), + .INIT_L11(4'b1110), + .INIT_L20(4'b1000), + ) _TECHMAP_REPLACE_ ( + .I0(A), .I1(B), .I2(C), .I3(), .I4(E), + .O(Y) + ); +endmodule + +module \$__CC4_OO_X (input A, B, C, E, output Y); + CC_L2T5 #( + .INIT_L02(4'b1110), + .INIT_L03(4'b1010), + .INIT_L11(4'b1110), + .INIT_L20(4'b0110), + ) _TECHMAP_REPLACE_ ( + .I0(A), .I1(B), .I2(C), .I3(), .I4(E), + .O(Y) + ); +endmodule + +module \$__CC3_XX (input A, B, C, output Y); + CC_L2T4 #( + .INIT_L00(4'b0110), + .INIT_L01(4'b1010), + .INIT_L10(4'b0110), + ) _TECHMAP_REPLACE_ ( + .I0(A), .I1(B), .I2(C), .I3(), + .O(Y) + ); +endmodule + +module \$__CC4_XX_A (input A, B, C, E, output Y); + CC_L2T5 #( + .INIT_L02(4'b0110), + .INIT_L03(4'b1010), + .INIT_L11(4'b0110), + .INIT_L20(4'b1000), + ) _TECHMAP_REPLACE_ ( + .I0(A), .I1(B), .I2(C), .I3(), .I4(E), + .O(Y) + ); +endmodule + +module \$__CC4_XX_O (input A, B, C, E, output Y); + CC_L2T5 #( + .INIT_L02(4'b0110), + .INIT_L03(4'b1010), + .INIT_L11(4'b0110), + .INIT_L20(4'b1110), + ) _TECHMAP_REPLACE_ ( + .I0(A), .I1(B), .I2(C), .I3(), .I4(E), + .O(Y) + ); +endmodule + +module \$__CC3_AO (input A, B, C, output Y); + CC_L2T4 #( + .INIT_L00(4'b1000), + .INIT_L01(4'b1010), + .INIT_L10(4'b1110), + ) _TECHMAP_REPLACE_ ( + .I0(A), .I1(B), .I2(C), .I3(), + .O(Y) + ); +endmodule + +module \$__CC4_AO_A (input A, B, C, E, output Y); + CC_L2T5 #( + .INIT_L02(4'b1000), + .INIT_L03(4'b1010), + .INIT_L11(4'b1110), + .INIT_L20(4'b1000), + ) _TECHMAP_REPLACE_ ( + .I0(A), .I1(B), .I2(C), .I3(), .I4(E), + .O(Y) + ); +endmodule + +module \$__CC4_AO_O (input A, B, C, E, output Y); + CC_L2T5 #( + .INIT_L02(4'b1000), + .INIT_L03(4'b1010), + .INIT_L11(4'b1110), + .INIT_L20(4'b1110), + ) _TECHMAP_REPLACE_ ( + .I0(A), .I1(B), .I2(C), .I3(), .I4(E), + .O(Y) + ); +endmodule + +module \$__CC4_AO_X (input A, B, C, E, output Y); + CC_L2T5 #( + .INIT_L02(4'b1000), + .INIT_L03(4'b1010), + .INIT_L11(4'b1110), + .INIT_L20(4'b0110), + ) _TECHMAP_REPLACE_ ( + .I0(A), .I1(B), .I2(C), .I3(), .I4(E), + .O(Y) + ); +endmodule + +module \$__CC3_OA (input A, B, C, output Y); + CC_L2T4 #( + .INIT_L00(4'b1110), + .INIT_L01(4'b1010), + .INIT_L10(4'b1000), + ) _TECHMAP_REPLACE_ ( + .I0(A), .I1(B), .I2(C), .I3(), + .O(Y) + ); +endmodule + +module \$__CC4_OA_A (input A, B, C, E, output Y); + CC_L2T5 #( + .INIT_L02(4'b1110), + .INIT_L03(4'b1010), + .INIT_L11(4'b1000), + .INIT_L20(4'b1000), + ) _TECHMAP_REPLACE_ ( + .I0(A), .I1(B), .I2(C), .I3(), .I4(E), + .O(Y) + ); +endmodule + +module \$__CC4_OA_O (input A, B, C, E, output Y); + CC_L2T5 #( + .INIT_L02(4'b1110), + .INIT_L03(4'b1010), + .INIT_L11(4'b1000), + .INIT_L20(4'b1110), + ) _TECHMAP_REPLACE_ ( + .I0(A), .I1(B), .I2(C), .I3(), .I4(E), + .O(Y) + ); +endmodule + +module \$__CC4_OA_X (input A, B, C, E, output Y); + CC_L2T5 #( + .INIT_L02(4'b1110), + .INIT_L03(4'b1010), + .INIT_L11(4'b1000), + .INIT_L20(4'b0110), + ) _TECHMAP_REPLACE_ ( + .I0(A), .I1(B), .I2(C), .I3(), .I4(E), + .O(Y) + ); +endmodule + +module \$__CC3_AX (input A, B, C, output Y); + CC_L2T4 #( + .INIT_L00(4'b1000), + .INIT_L01(4'b1010), + .INIT_L10(4'b0110), + ) _TECHMAP_REPLACE_ ( + .I0(A), .I1(B), .I2(C), .I3(), + .O(Y) + ); +endmodule + +module \$__CC4_AX_A (input A, B, C, E, output Y); + CC_L2T5 #( + .INIT_L02(4'b1000), + .INIT_L03(4'b1010), + .INIT_L11(4'b0110), + .INIT_L20(4'b1000), + ) _TECHMAP_REPLACE_ ( + .I0(A), .I1(B), .I2(C), .I3(), .I4(E), + .O(Y) + ); +endmodule + +module \$__CC4_AX_O (input A, B, C, E, output Y); + CC_L2T5 #( + .INIT_L02(4'b1000), + .INIT_L03(4'b1010), + .INIT_L11(4'b0110), + .INIT_L20(4'b1110), + ) _TECHMAP_REPLACE_ ( + .I0(A), .I1(B), .I2(C), .I3(), .I4(E), + .O(Y) + ); +endmodule + +module \$__CC4_AX_X (input A, B, C, E, output Y); + CC_L2T5 #( + .INIT_L02(4'b1000), + .INIT_L03(4'b1010), + .INIT_L11(4'b0110), + .INIT_L20(4'b0110), + ) _TECHMAP_REPLACE_ ( + .I0(A), .I1(B), .I2(C), .I3(), .I4(E), + .O(Y) + ); +endmodule + +module \$__CC3_XA (input A, B, C, output Y); + CC_L2T4 #( + .INIT_L00(4'b0110), + .INIT_L01(4'b1010), + .INIT_L10(4'b1000), + ) _TECHMAP_REPLACE_ ( + .I0(A), .I1(B), .I2(C), .I3(), + .O(Y) + ); +endmodule + +module \$__CC4_XA_A (input A, B, C, E, output Y); + CC_L2T5 #( + .INIT_L02(4'b0110), + .INIT_L03(4'b1010), + .INIT_L11(4'b1000), + .INIT_L20(4'b1000), + ) _TECHMAP_REPLACE_ ( + .I0(A), .I1(B), .I2(C), .I3(), .I4(E), + .O(Y) + ); +endmodule + +module \$__CC4_XA_O (input A, B, C, E, output Y); + CC_L2T5 #( + .INIT_L02(4'b0110), + .INIT_L03(4'b1010), + .INIT_L11(4'b1000), + .INIT_L20(4'b1110), + ) _TECHMAP_REPLACE_ ( + .I0(A), .I1(B), .I2(C), .I3(), .I4(E), + .O(Y) + ); +endmodule + +module \$__CC4_XA_X (input A, B, C, E, output Y); + CC_L2T5 #( + .INIT_L02(4'b0110), + .INIT_L03(4'b1010), + .INIT_L11(4'b1000), + .INIT_L20(4'b0110), + ) _TECHMAP_REPLACE_ ( + .I0(A), .I1(B), .I2(C), .I3(), .I4(E), + .O(Y) + ); +endmodule + +module \$__CC4_AAA (input A, B, C, D, output Y); + CC_L2T4 #( + .INIT_L00(4'b1000), + .INIT_L01(4'b1000), + .INIT_L10(4'b1000), + ) _TECHMAP_REPLACE_ ( + .I0(A), .I1(B), .I2(C), .I3(D), + .O(Y) + ); +endmodule + +module \$__CC5_AAA_A (input A, B, C, D, E, output Y); + CC_L2T5 #( + .INIT_L02(4'b1000), + .INIT_L03(4'b1000), + .INIT_L11(4'b1000), + .INIT_L20(4'b1000), + ) _TECHMAP_REPLACE_ ( + .I0(A), .I1(B), .I2(C), .I3(D), .I4(E), + .O(Y) + ); +endmodule + +module \$__CC5_AAA_O (input A, B, C, D, E, output Y); + CC_L2T5 #( + .INIT_L02(4'b1000), + .INIT_L03(4'b1000), + .INIT_L11(4'b1000), + .INIT_L20(4'b1110), + ) _TECHMAP_REPLACE_ ( + .I0(A), .I1(B), .I2(C), .I3(D), .I4(E), + .O(Y) + ); +endmodule + +module \$__CC5_AAA_X (input A, B, C, D, E, output Y); + CC_L2T5 #( + .INIT_L02(4'b1000), + .INIT_L03(4'b1000), + .INIT_L11(4'b1000), + .INIT_L20(4'b0110), + ) _TECHMAP_REPLACE_ ( + .I0(A), .I1(B), .I2(C), .I3(D), .I4(E), + .O(Y) + ); +endmodule + +module \$__CC4_AXA (input A, B, C, D, output Y); + CC_L2T4 #( + .INIT_L00(4'b1000), + .INIT_L01(4'b1000), + .INIT_L10(4'b0110), + ) _TECHMAP_REPLACE_ ( + .I0(A), .I1(B), .I2(C), .I3(D), + .O(Y) + ); +endmodule + +module \$__CC5_AXA_A (input A, B, C, D, E, output Y); + CC_L2T5 #( + .INIT_L02(4'b1000), + .INIT_L03(4'b1000), + .INIT_L11(4'b0110), + .INIT_L20(4'b1000), + ) _TECHMAP_REPLACE_ ( + .I0(A), .I1(B), .I2(C), .I3(D), .I4(E), + .O(Y) + ); +endmodule + +module \$__CC5_AXA_O (input A, B, C, D, E, output Y); + CC_L2T5 #( + .INIT_L02(4'b1000), + .INIT_L03(4'b1000), + .INIT_L11(4'b0110), + .INIT_L20(4'b1110), + ) _TECHMAP_REPLACE_ ( + .I0(A), .I1(B), .I2(C), .I3(D), .I4(E), + .O(Y) + ); +endmodule + +module \$__CC5_AXA_X (input A, B, C, D, E, output Y); + CC_L2T5 #( + .INIT_L02(4'b1000), + .INIT_L03(4'b1000), + .INIT_L11(4'b0110), + .INIT_L20(4'b0110), + ) _TECHMAP_REPLACE_ ( + .I0(A), .I1(B), .I2(C), .I3(D), .I4(E), + .O(Y) + ); +endmodule + +module \$__CC4_XAX (input A, B, C, D, output Y); + CC_L2T4 #( + .INIT_L00(4'b0110), + .INIT_L01(4'b0110), + .INIT_L10(4'b1000), + ) _TECHMAP_REPLACE_ ( + .I0(A), .I1(B), .I2(C), .I3(D), + .O(Y) + ); +endmodule + +module \$__CC5_XAX_A (input A, B, C, D, E, output Y); + CC_L2T5 #( + .INIT_L02(4'b0110), + .INIT_L03(4'b0110), + .INIT_L11(4'b1000), + .INIT_L20(4'b1000), + ) _TECHMAP_REPLACE_ ( + .I0(A), .I1(B), .I2(C), .I3(D), .I4(E), + .O(Y) + ); +endmodule + +module \$__CC5_XAX_O (input A, B, C, D, E, output Y); + CC_L2T5 #( + .INIT_L02(4'b0110), + .INIT_L03(4'b0110), + .INIT_L11(4'b1000), + .INIT_L20(4'b1110), + ) _TECHMAP_REPLACE_ ( + .I0(A), .I1(B), .I2(C), .I3(D), .I4(E), + .O(Y) + ); +endmodule + +module \$__CC5_XAX_X (input A, B, C, D, E, output Y); + CC_L2T5 #( + .INIT_L02(4'b0110), + .INIT_L03(4'b0110), + .INIT_L11(4'b1000), + .INIT_L20(4'b0110), + ) _TECHMAP_REPLACE_ ( + .I0(A), .I1(B), .I2(C), .I3(D), .I4(E), + .O(Y) + ); +endmodule + +module \$__CC4_AAX (input A, B, C, D, output Y); + CC_L2T4 #( + .INIT_L00(4'b1000), + .INIT_L01(4'b0110), + .INIT_L10(4'b1000), + ) _TECHMAP_REPLACE_ ( + .I0(A), .I1(B), .I2(C), .I3(D), + .O(Y) + ); +endmodule + +module \$__CC5_AAX_A (input A, B, C, D, E, output Y); + CC_L2T5 #( + .INIT_L02(4'b1000), + .INIT_L03(4'b0110), + .INIT_L11(4'b1000), + .INIT_L20(4'b1000), + ) _TECHMAP_REPLACE_ ( + .I0(A), .I1(B), .I2(C), .I3(D), .I4(E), + .O(Y) + ); +endmodule + +module \$__CC5_AAX_O (input A, B, C, D, E, output Y); + CC_L2T5 #( + .INIT_L02(4'b1000), + .INIT_L03(4'b0110), + .INIT_L11(4'b1000), + .INIT_L20(4'b1110), + ) _TECHMAP_REPLACE_ ( + .I0(A), .I1(B), .I2(C), .I3(D), .I4(E), + .O(Y) + ); +endmodule + +module \$__CC5_AAX_X (input A, B, C, D, E, output Y); + CC_L2T5 #( + .INIT_L02(4'b1000), + .INIT_L03(4'b0110), + .INIT_L11(4'b1000), + .INIT_L20(4'b0110), + ) _TECHMAP_REPLACE_ ( + .I0(A), .I1(B), .I2(C), .I3(D), .I4(E), + .O(Y) + ); +endmodule + +module \$__CC4_AXX (input A, B, C, D, output Y); + CC_L2T4 #( + .INIT_L00(4'b1000), + .INIT_L01(4'b0110), + .INIT_L10(4'b0110), + ) _TECHMAP_REPLACE_ ( + .I0(A), .I1(B), .I2(C), .I3(D), + .O(Y) + ); +endmodule + +module \$__CC5_AXX_A (input A, B, C, D, E, output Y); + CC_L2T5 #( + .INIT_L02(4'b1000), + .INIT_L03(4'b0110), + .INIT_L11(4'b0110), + .INIT_L20(4'b1000), + ) _TECHMAP_REPLACE_ ( + .I0(A), .I1(B), .I2(C), .I3(D), .I4(E), + .O(Y) + ); +endmodule + +module \$__CC5_AXX_O (input A, B, C, D, E, output Y); + CC_L2T5 #( + .INIT_L02(4'b1000), + .INIT_L03(4'b0110), + .INIT_L11(4'b0110), + .INIT_L20(4'b1110), + ) _TECHMAP_REPLACE_ ( + .I0(A), .I1(B), .I2(C), .I3(D), .I4(E), + .O(Y) + ); +endmodule + +module \$__CC5_AXX_X (input A, B, C, D, E, output Y); + CC_L2T5 #( + .INIT_L02(4'b1000), + .INIT_L03(4'b0110), + .INIT_L11(4'b0110), + .INIT_L20(4'b0110), + ) _TECHMAP_REPLACE_ ( + .I0(A), .I1(B), .I2(C), .I3(D), .I4(E), + .O(Y) + ); +endmodule + +module \$__CC4_XXX (input A, B, C, D, output Y); + CC_L2T4 #( + .INIT_L00(4'b0110), + .INIT_L01(4'b0110), + .INIT_L10(4'b0110), + ) _TECHMAP_REPLACE_ ( + .I0(A), .I1(B), .I2(C), .I3(D), + .O(Y) + ); +endmodule + +module \$__CC5_XXX_A (input A, B, C, D, E, output Y); + CC_L2T5 #( + .INIT_L02(4'b0110), + .INIT_L03(4'b0110), + .INIT_L11(4'b0110), + .INIT_L20(4'b1000), + ) _TECHMAP_REPLACE_ ( + .I0(A), .I1(B), .I2(C), .I3(D), .I4(E), + .O(Y) + ); +endmodule + +module \$__CC5_XXX_O (input A, B, C, D, E, output Y); + CC_L2T5 #( + .INIT_L02(4'b0110), + .INIT_L03(4'b0110), + .INIT_L11(4'b0110), + .INIT_L20(4'b1110), + ) _TECHMAP_REPLACE_ ( + .I0(A), .I1(B), .I2(C), .I3(D), .I4(E), + .O(Y) + ); +endmodule + +module \$__CC5_XXX_X (input A, B, C, D, E, output Y); + CC_L2T5 #( + .INIT_L02(4'b0110), + .INIT_L03(4'b0110), + .INIT_L11(4'b0110), + .INIT_L20(4'b0110), + ) _TECHMAP_REPLACE_ ( + .I0(A), .I1(B), .I2(C), .I3(D), .I4(E), + .O(Y) + ); +endmodule + +module \$__CC4_AAO (input A, B, C, D, output Y); + CC_L2T4 #( + .INIT_L00(4'b1000), + .INIT_L01(4'b1110), + .INIT_L10(4'b1000), + ) _TECHMAP_REPLACE_ ( + .I0(A), .I1(B), .I2(C), .I3(D), + .O(Y) + ); +endmodule + +module \$__CC5_AAO_A (input A, B, C, D, E, output Y); + CC_L2T5 #( + .INIT_L02(4'b1000), + .INIT_L03(4'b1110), + .INIT_L11(4'b1000), + .INIT_L20(4'b1000), + ) _TECHMAP_REPLACE_ ( + .I0(A), .I1(B), .I2(C), .I3(D), .I4(E), + .O(Y) + ); +endmodule + +module \$__CC5_AAO_O (input A, B, C, D, E, output Y); + CC_L2T5 #( + .INIT_L02(4'b1000), + .INIT_L03(4'b1110), + .INIT_L11(4'b1000), + .INIT_L20(4'b1110), + ) _TECHMAP_REPLACE_ ( + .I0(A), .I1(B), .I2(C), .I3(D), .I4(E), + .O(Y) + ); +endmodule + +module \$__CC5_AAO_X (input A, B, C, D, E, output Y); + CC_L2T5 #( + .INIT_L02(4'b1000), + .INIT_L03(4'b1110), + .INIT_L11(4'b1000), + .INIT_L20(4'b0110), + ) _TECHMAP_REPLACE_ ( + .I0(A), .I1(B), .I2(C), .I3(D), .I4(E), + .O(Y) + ); +endmodule + +module \$__CC4_AOA (input A, B, C, D, output Y); + CC_L2T4 #( + .INIT_L00(4'b1000), + .INIT_L01(4'b1000), + .INIT_L10(4'b1110), + ) _TECHMAP_REPLACE_ ( + .I0(A), .I1(B), .I2(C), .I3(D), + .O(Y) + ); +endmodule + +module \$__CC5_AOA_A (input A, B, C, D, E, output Y); + CC_L2T5 #( + .INIT_L02(4'b1000), + .INIT_L03(4'b1000), + .INIT_L11(4'b1110), + .INIT_L20(4'b1000), + ) _TECHMAP_REPLACE_ ( + .I0(A), .I1(B), .I2(C), .I3(D), .I4(E), + .O(Y) + ); +endmodule + +module \$__CC5_AOA_O (input A, B, C, D, E, output Y); + CC_L2T5 #( + .INIT_L02(4'b1000), + .INIT_L03(4'b1000), + .INIT_L11(4'b1110), + .INIT_L20(4'b1110), + ) _TECHMAP_REPLACE_ ( + .I0(A), .I1(B), .I2(C), .I3(D), .I4(E), + .O(Y) + ); +endmodule + +module \$__CC5_AOA_X (input A, B, C, D, E, output Y); + CC_L2T5 #( + .INIT_L02(4'b1000), + .INIT_L03(4'b1000), + .INIT_L11(4'b1110), + .INIT_L20(4'b0110), + ) _TECHMAP_REPLACE_ ( + .I0(A), .I1(B), .I2(C), .I3(D), .I4(E), + .O(Y) + ); +endmodule + +module \$__CC4_AOX (input A, B, C, D, output Y); + CC_L2T4 #( + .INIT_L00(4'b1000), + .INIT_L01(4'b0110), + .INIT_L10(4'b1110), + ) _TECHMAP_REPLACE_ ( + .I0(A), .I1(B), .I2(C), .I3(D), + .O(Y) + ); +endmodule + +module \$__CC5_AOX_A (input A, B, C, D, E, output Y); + CC_L2T5 #( + .INIT_L02(4'b1000), + .INIT_L03(4'b0110), + .INIT_L11(4'b1110), + .INIT_L20(4'b1000), + ) _TECHMAP_REPLACE_ ( + .I0(A), .I1(B), .I2(C), .I3(D), .I4(E), + .O(Y) + ); +endmodule + +module \$__CC5_AOX_O (input A, B, C, D, E, output Y); + CC_L2T5 #( + .INIT_L02(4'b1000), + .INIT_L03(4'b0110), + .INIT_L11(4'b1110), + .INIT_L20(4'b1110), + ) _TECHMAP_REPLACE_ ( + .I0(A), .I1(B), .I2(C), .I3(D), .I4(E), + .O(Y) + ); +endmodule + +module \$__CC5_AOX_X (input A, B, C, D, E, output Y); + CC_L2T5 #( + .INIT_L02(4'b1000), + .INIT_L03(4'b0110), + .INIT_L11(4'b1110), + .INIT_L20(4'b0110), + ) _TECHMAP_REPLACE_ ( + .I0(A), .I1(B), .I2(C), .I3(D), .I4(E), + .O(Y) + ); +endmodule diff --git a/resources/netlist/resources/kernel/share/gatemate/mul_map.v b/resources/netlist/resources/kernel/share/gatemate/mul_map.v new file mode 100644 index 0000000..c2dd0a9 --- /dev/null +++ b/resources/netlist/resources/kernel/share/gatemate/mul_map.v @@ -0,0 +1,77 @@ +/* + * yosys -- Yosys Open SYnthesis Suite + * + * Copyright (C) 2021 Cologne Chip AG + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + */ + +(* techmap_celltype = "$mul $__mul" *) +module \$__MULMXN (A, B, Y); + + parameter A_SIGNED = 0; + parameter B_SIGNED = 0; + parameter A_WIDTH = 1; + parameter B_WIDTH = 1; + parameter Y_WIDTH = 1; + + (* force_downto *) + input [A_WIDTH-1:0] A; + (* force_downto *) + input [B_WIDTH-1:0] B; + (* force_downto *) + output [Y_WIDTH-1:0] Y; + + localparam A_ADJWIDTH = A_WIDTH + (A_SIGNED ? 0 : 1); + localparam B_ADJWIDTH = B_WIDTH + (B_SIGNED ? 0 : 1); + + generate + if (A_SIGNED) begin: blkA + wire signed [A_ADJWIDTH-1:0] Aext = $signed(A); + end + else begin: blkA + wire [A_ADJWIDTH-1:0] Aext = A; + end + if (B_SIGNED) begin: blkB + wire signed [B_ADJWIDTH-1:0] Bext = $signed(B); + end + else begin: blkB + wire [B_ADJWIDTH-1:0] Bext = B; + end + + if (A_WIDTH >= B_WIDTH) begin + CC_MULT #( + .A_WIDTH(A_ADJWIDTH), + .B_WIDTH(B_ADJWIDTH), + .P_WIDTH(Y_WIDTH), + ) _TECHMAP_REPLACE_ ( + .A(blkA.Aext), + .B(blkB.Bext), + .P(Y) + ); + end + else begin // swap A,B + CC_MULT #( + .A_WIDTH(B_ADJWIDTH), + .B_WIDTH(A_ADJWIDTH), + .P_WIDTH(Y_WIDTH), + ) _TECHMAP_REPLACE_ ( + .A(blkB.Bext), + .B(blkA.Aext), + .P(Y) + ); + end + endgenerate + +endmodule diff --git a/resources/netlist/resources/kernel/share/gatemate/mux_map.v b/resources/netlist/resources/kernel/share/gatemate/mux_map.v new file mode 100644 index 0000000..bcc8480 --- /dev/null +++ b/resources/netlist/resources/kernel/share/gatemate/mux_map.v @@ -0,0 +1,56 @@ +/* + * yosys -- Yosys Open SYnthesis Suite + * + * Copyright (C) 2021 Cologne Chip AG + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + */ + +module \$_MUX8_ (A, B, C, D, E, F, G, H, S, T, U, Y); + input A, B, C, D, E, F, G, H, S, T, U; + output Y; + + CC_MX8 _TECHMAP_REPLACE_ ( + .D0(A), .D1(B), .D2(C), .D3(D), + .D4(E), .D5(F), .D6(G), .D7(H), + .S0(S), .S1(T), .S2(U), + .Y(Y) + ); + +endmodule + +module \$_MUX4_ (A, B, C, D, S, T, Y); + input A, B, C, D, S, T; + output Y; + + CC_MX4 _TECHMAP_REPLACE_ ( + .D0(A), .D1(B), .D2(C), .D3(D), + .S0(S), .S1(T), + .Y(Y) + ); + +endmodule + +/* +module \$_MUX_ (A, B, S, Y); + input A, B, S; + output Y; + + CC_MX2 _TECHMAP_REPLACE_ ( + .D0(A), .D1(B), .S0(S), + .Y(Y) + ); + +endmodule +*/ diff --git a/resources/netlist/resources/kernel/share/gatemate/reg_map.v b/resources/netlist/resources/kernel/share/gatemate/reg_map.v new file mode 100644 index 0000000..26cfb71 --- /dev/null +++ b/resources/netlist/resources/kernel/share/gatemate/reg_map.v @@ -0,0 +1,45 @@ +/* + * yosys -- Yosys Open SYnthesis Suite + * + * Copyright (C) 2021 Cologne Chip AG + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + */ + +(* techmap_celltype = "$_DFFE_[NP][NP][01][NP]_" *) +module \$_DFFE_xxxx_ (input D, C, R, E, output Q); + + parameter _TECHMAP_CELLTYPE_ = ""; + + CC_DFF #( + .CLK_INV(_TECHMAP_CELLTYPE_[39:32] == "N"), + .EN_INV(_TECHMAP_CELLTYPE_[15:8] == "N"), + .SR_INV(_TECHMAP_CELLTYPE_[31:24] == "N"), + .SR_VAL(_TECHMAP_CELLTYPE_[23:16] == "1") + ) _TECHMAP_REPLACE_ (.D(D), .EN(E), .CLK(C), .SR(R), .Q(Q)); + +endmodule + +(* techmap_celltype = "$_DLATCH_[NP][NP][01]_" *) +module \$_DLATCH_xxx_ (input E, R, D, output Q); + + parameter _TECHMAP_CELLTYPE_ = ""; + + CC_DLT #( + .G_INV(_TECHMAP_CELLTYPE_[31:24] == "N"), + .SR_INV(_TECHMAP_CELLTYPE_[23:16] == "N"), + .SR_VAL(_TECHMAP_CELLTYPE_[15:8] == "1") + ) _TECHMAP_REPLACE_ (.D(D), .G(E), .SR(R), .Q(Q)); + +endmodule diff --git a/resources/netlist/resources/kernel/share/gowin/arith_map.v b/resources/netlist/resources/kernel/share/gowin/arith_map.v new file mode 100644 index 0000000..2d48fa7 --- /dev/null +++ b/resources/netlist/resources/kernel/share/gowin/arith_map.v @@ -0,0 +1,67 @@ +/* + * yosys -- Yosys Open SYnthesis Suite + * + * Copyright (C) 2012 Claire Xenia Wolf + * Copyright (C) 2018 gatecat + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + */ + +(* techmap_celltype = "$alu" *) +module _80_gw1n_alu(A, B, CI, BI, X, Y, CO); + parameter A_SIGNED = 0; + parameter B_SIGNED = 0; + parameter A_WIDTH = 1; + parameter B_WIDTH = 1; + parameter Y_WIDTH = 1; + + (* force_downto *) + input [A_WIDTH-1:0] A; + (* force_downto *) + input [B_WIDTH-1:0] B; + (* force_downto *) + output [Y_WIDTH-1:0] X, Y; + + input CI, BI; + (* force_downto *) + output [Y_WIDTH-1:0] CO; + + wire _TECHMAP_FAIL_ = Y_WIDTH <= 2; + + (* force_downto *) + wire [Y_WIDTH-1:0] A_buf, B_buf; + \$pos #(.A_SIGNED(A_SIGNED), .A_WIDTH(A_WIDTH), .Y_WIDTH(Y_WIDTH)) A_conv (.A(A), .Y(A_buf)); + \$pos #(.A_SIGNED(B_SIGNED), .A_WIDTH(B_WIDTH), .Y_WIDTH(Y_WIDTH)) B_conv (.A(B), .Y(B_buf)); + + (* force_downto *) + wire [Y_WIDTH-1:0] AA = A_buf; + (* force_downto *) + wire [Y_WIDTH-1:0] BB = B_buf; + (* force_downto *) + wire [Y_WIDTH-1:0] C = {CO, CI}; + + genvar i; + generate for (i = 0; i < Y_WIDTH; i = i + 1) begin:slice + ALU #(.ALU_MODE(2)) // ADDSUB I3 ? add : sub + alu(.I0(AA[i]), + .I1(BB[i]), + .I3(~BI), + .CIN(C[i]), + .COUT(CO[i]), + .SUM(Y[i]) + ); + end endgenerate + assign X = AA ^ BB; +endmodule + diff --git a/resources/netlist/resources/kernel/share/gowin/brams.txt b/resources/netlist/resources/kernel/share/gowin/brams.txt new file mode 100644 index 0000000..0c0d8fa --- /dev/null +++ b/resources/netlist/resources/kernel/share/gowin/brams.txt @@ -0,0 +1,81 @@ +ram block $__GOWIN_SP_ { + abits 14; + widths 1 2 4 9 18 36 per_port; + byte 9; + cost 128; + init no_undef; + port srsw "A" { + clock posedge; + clken; + wrbe_separate; + option "RESET_MODE" "SYNC" { + rdsrst zero ungated; + } + option "RESET_MODE" "ASYNC" { + rdarst zero; + } + rdinit zero; + portoption "WRITE_MODE" 0 { + rdwr no_change; + } + portoption "WRITE_MODE" 1 { + rdwr new; + } + portoption "WRITE_MODE" 2 { + rdwr old; + } + } +} + +ram block $__GOWIN_DP_ { + abits 14; + widths 1 2 4 9 18 per_port; + byte 9; + cost 128; + init no_undef; + port srsw "A" "B" { + clock posedge; + clken; + wrbe_separate; + option "RESET_MODE" "SYNC" { + rdsrst zero ungated; + } + option "RESET_MODE" "ASYNC" { + rdarst zero; + } + rdinit zero; + portoption "WRITE_MODE" 0 { + rdwr no_change; + } + portoption "WRITE_MODE" 1 { + rdwr new; + } + portoption "WRITE_MODE" 2 { + rdwr old; + } + } +} + +ram block $__GOWIN_SDP_ { + abits 14; + widths 1 2 4 9 18 36 per_port; + byte 9; + cost 128; + init no_undef; + port sr "R" { + clock posedge; + clken; + option "RESET_MODE" "SYNC" { + rdsrst zero ungated; + } + option "RESET_MODE" "ASYNC" { + rdarst zero; + } + rdinit zero; + } + port sw "W" { + clock posedge; + clken; + wrbe_separate; + } +} diff --git a/resources/netlist/resources/kernel/share/gowin/brams_map.v b/resources/netlist/resources/kernel/share/gowin/brams_map.v new file mode 100644 index 0000000..7ffc91b --- /dev/null +++ b/resources/netlist/resources/kernel/share/gowin/brams_map.v @@ -0,0 +1,410 @@ +`define DEF_FUNCS \ + function [255:0] init_slice_x8; \ + input integer idx; \ + integer i; \ + for (i = 0; i < 32; i = i + 1) begin \ + init_slice_x8[i*8+:8] = INIT[(idx * 32 + i) * 9+:8]; \ + end \ + endfunction \ + function [287:0] init_slice_x9; \ + input integer idx; \ + init_slice_x9 = INIT[idx * 288+:288]; \ + endfunction \ + +`define x8_width(width) (width / 9 * 8 + width % 9) +`define x8_rd_data(data) {1'bx, data[31:24], 1'bx, data[23:16], 1'bx, data[15:8], 1'bx, data[7:0]} +`define x8_wr_data(data) {data[34:27], data[25:18], data[16:9], data[7:0]} +`define wre(width, wr_en, wr_be) (width < 18 ? wr_en | wr_be[0] : wr_en) +`define addrbe(width, addr, wr_be) (width < 18 ? addr : {addr[13:4], wr_be}) + + +`define INIT(func) \ + .INIT_RAM_00(func('h00)), \ + .INIT_RAM_01(func('h01)), \ + .INIT_RAM_02(func('h02)), \ + .INIT_RAM_03(func('h03)), \ + .INIT_RAM_04(func('h04)), \ + .INIT_RAM_05(func('h05)), \ + .INIT_RAM_06(func('h06)), \ + .INIT_RAM_07(func('h07)), \ + .INIT_RAM_08(func('h08)), \ + .INIT_RAM_09(func('h09)), \ + .INIT_RAM_0A(func('h0a)), \ + .INIT_RAM_0B(func('h0b)), \ + .INIT_RAM_0C(func('h0c)), \ + .INIT_RAM_0D(func('h0d)), \ + .INIT_RAM_0E(func('h0e)), \ + .INIT_RAM_0F(func('h0f)), \ + .INIT_RAM_10(func('h10)), \ + .INIT_RAM_11(func('h11)), \ + .INIT_RAM_12(func('h12)), \ + .INIT_RAM_13(func('h13)), \ + .INIT_RAM_14(func('h14)), \ + .INIT_RAM_15(func('h15)), \ + .INIT_RAM_16(func('h16)), \ + .INIT_RAM_17(func('h17)), \ + .INIT_RAM_18(func('h18)), \ + .INIT_RAM_19(func('h19)), \ + .INIT_RAM_1A(func('h1a)), \ + .INIT_RAM_1B(func('h1b)), \ + .INIT_RAM_1C(func('h1c)), \ + .INIT_RAM_1D(func('h1d)), \ + .INIT_RAM_1E(func('h1e)), \ + .INIT_RAM_1F(func('h1f)), \ + .INIT_RAM_20(func('h20)), \ + .INIT_RAM_21(func('h21)), \ + .INIT_RAM_22(func('h22)), \ + .INIT_RAM_23(func('h23)), \ + .INIT_RAM_24(func('h24)), \ + .INIT_RAM_25(func('h25)), \ + .INIT_RAM_26(func('h26)), \ + .INIT_RAM_27(func('h27)), \ + .INIT_RAM_28(func('h28)), \ + .INIT_RAM_29(func('h29)), \ + .INIT_RAM_2A(func('h2a)), \ + .INIT_RAM_2B(func('h2b)), \ + .INIT_RAM_2C(func('h2c)), \ + .INIT_RAM_2D(func('h2d)), \ + .INIT_RAM_2E(func('h2e)), \ + .INIT_RAM_2F(func('h2f)), \ + .INIT_RAM_30(func('h30)), \ + .INIT_RAM_31(func('h31)), \ + .INIT_RAM_32(func('h32)), \ + .INIT_RAM_33(func('h33)), \ + .INIT_RAM_34(func('h34)), \ + .INIT_RAM_35(func('h35)), \ + .INIT_RAM_36(func('h36)), \ + .INIT_RAM_37(func('h37)), \ + .INIT_RAM_38(func('h38)), \ + .INIT_RAM_39(func('h39)), \ + .INIT_RAM_3A(func('h3a)), \ + .INIT_RAM_3B(func('h3b)), \ + .INIT_RAM_3C(func('h3c)), \ + .INIT_RAM_3D(func('h3d)), \ + .INIT_RAM_3E(func('h3e)), \ + .INIT_RAM_3F(func('h3f)), + +module $__GOWIN_SP_ (...); + +parameter INIT = 0; +parameter OPTION_RESET_MODE = "SYNC"; + +parameter PORT_A_WIDTH = 36; +parameter PORT_A_WR_BE_WIDTH = 4; +parameter PORT_A_OPTION_WRITE_MODE = 0; + +input PORT_A_CLK; +input PORT_A_CLK_EN; +input PORT_A_WR_EN; +input PORT_A_RD_SRST; +input PORT_A_RD_ARST; +input [13:0] PORT_A_ADDR; +input [PORT_A_WR_BE_WIDTH-1:0] PORT_A_WR_BE; +input [PORT_A_WIDTH-1:0] PORT_A_WR_DATA; +output [PORT_A_WIDTH-1:0] PORT_A_RD_DATA; + +`DEF_FUNCS + +wire RST = OPTION_RESET_MODE == "SYNC" ? PORT_A_RD_SRST : PORT_A_RD_ARST; +wire WRE = `wre(PORT_A_WIDTH, PORT_A_WR_EN, PORT_A_WR_BE); +wire [13:0] AD = `addrbe(PORT_A_WIDTH, PORT_A_ADDR, PORT_A_WR_BE); + +generate + +if (PORT_A_WIDTH < 9) begin + + wire [31:0] DI = `x8_wr_data(PORT_A_WR_DATA); + wire [31:0] DO; + + assign PORT_A_RD_DATA = `x8_rd_data(DO); + + SP #( + `INIT(init_slice_x8) + .READ_MODE(1'b0), + .WRITE_MODE(PORT_A_OPTION_WRITE_MODE), + .BIT_WIDTH(`x8_width(PORT_A_WIDTH)), + .BLK_SEL(3'b000), + .RESET_MODE(OPTION_RESET_MODE), + ) _TECHMAP_REPLACE_ ( + .BLKSEL(3'b000), + .CLK(PORT_A_CLK), + .CE(PORT_A_CLK_EN), + .WRE(WRE), + .RESET(RST), + .OCE(1'b0), + .AD(AD), + .DI(DI), + .DO(DO), + ); + +end else begin + + wire [35:0] DI = PORT_A_WR_DATA; + wire [35:0] DO; + + assign PORT_A_RD_DATA = DO; + + SPX9 #( + `INIT(init_slice_x9) + .READ_MODE(1'b0), + .WRITE_MODE(PORT_A_OPTION_WRITE_MODE), + .BIT_WIDTH(PORT_A_WIDTH), + .BLK_SEL(3'b000), + .RESET_MODE(OPTION_RESET_MODE), + ) _TECHMAP_REPLACE_ ( + .BLKSEL(3'b000), + .CLK(PORT_A_CLK), + .CE(PORT_A_CLK_EN), + .WRE(WRE), + .RESET(RST), + .OCE(1'b0), + .AD(AD), + .DI(DI), + .DO(DO), + ); + +end + +endgenerate + +endmodule + + +module $__GOWIN_DP_ (...); + +parameter INIT = 0; +parameter OPTION_RESET_MODE = "SYNC"; + +parameter PORT_A_WIDTH = 18; +parameter PORT_A_WR_BE_WIDTH = 2; +parameter PORT_A_OPTION_WRITE_MODE = 0; + +parameter PORT_B_WIDTH = 18; +parameter PORT_B_WR_BE_WIDTH = 2; +parameter PORT_B_OPTION_WRITE_MODE = 0; + +input PORT_A_CLK; +input PORT_A_CLK_EN; +input PORT_A_WR_EN; +input PORT_A_RD_SRST; +input PORT_A_RD_ARST; +input [13:0] PORT_A_ADDR; +input [PORT_A_WR_BE_WIDTH-1:0] PORT_A_WR_BE; +input [PORT_A_WIDTH-1:0] PORT_A_WR_DATA; +output [PORT_A_WIDTH-1:0] PORT_A_RD_DATA; + +input PORT_B_CLK; +input PORT_B_CLK_EN; +input PORT_B_WR_EN; +input PORT_B_RD_SRST; +input PORT_B_RD_ARST; +input [13:0] PORT_B_ADDR; +input [PORT_A_WR_BE_WIDTH-1:0] PORT_B_WR_BE; +input [PORT_A_WIDTH-1:0] PORT_B_WR_DATA; +output [PORT_A_WIDTH-1:0] PORT_B_RD_DATA; + +`DEF_FUNCS + +wire RSTA = OPTION_RESET_MODE == "SYNC" ? PORT_A_RD_SRST : PORT_A_RD_ARST; +wire RSTB = OPTION_RESET_MODE == "SYNC" ? PORT_B_RD_SRST : PORT_B_RD_ARST; +wire WREA = `wre(PORT_A_WIDTH, PORT_A_WR_EN, PORT_A_WR_BE); +wire WREB = `wre(PORT_B_WIDTH, PORT_B_WR_EN, PORT_B_WR_BE); +wire [13:0] ADA = `addrbe(PORT_A_WIDTH, PORT_A_ADDR, PORT_A_WR_BE); +wire [13:0] ADB = `addrbe(PORT_B_WIDTH, PORT_B_ADDR, PORT_B_WR_BE); + +generate + +if (PORT_A_WIDTH < 9 || PORT_B_WIDTH < 9) begin + + wire [15:0] DIA = `x8_wr_data(PORT_A_WR_DATA); + wire [15:0] DIB = `x8_wr_data(PORT_B_WR_DATA); + wire [15:0] DOA; + wire [15:0] DOB; + + assign PORT_A_RD_DATA = `x8_rd_data(DOA); + assign PORT_B_RD_DATA = `x8_rd_data(DOB); + + DP #( + `INIT(init_slice_x8) + .READ_MODE0(1'b0), + .READ_MODE1(1'b0), + .WRITE_MODE0(PORT_A_OPTION_WRITE_MODE), + .WRITE_MODE1(PORT_B_OPTION_WRITE_MODE), + .BIT_WIDTH_0(`x8_width(PORT_A_WIDTH)), + .BIT_WIDTH_1(`x8_width(PORT_B_WIDTH)), + .BLK_SEL(3'b000), + .RESET_MODE(OPTION_RESET_MODE), + ) _TECHMAP_REPLACE_ ( + .BLKSEL(3'b000), + + .CLKA(PORT_A_CLK), + .CEA(PORT_A_CLK_EN), + .WREA(WREA), + .RESETA(RSTA), + .OCEA(1'b0), + .ADA(ADA), + .DIA(DIA), + .DOA(DOA), + + .CLKB(PORT_B_CLK), + .CEB(PORT_B_CLK_EN), + .WREB(WREB), + .RESETB(RSTB), + .OCEB(1'b0), + .ADB(ADB), + .DIB(DIB), + .DOB(DOB), + ); + +end else begin + + wire [17:0] DIA = PORT_A_WR_DATA; + wire [17:0] DIB = PORT_B_WR_DATA; + wire [17:0] DOA; + wire [17:0] DOB; + + assign PORT_A_RD_DATA = DOA; + assign PORT_B_RD_DATA = DOB; + + DPX9 #( + `INIT(init_slice_x9) + .READ_MODE0(1'b0), + .READ_MODE1(1'b0), + .WRITE_MODE0(PORT_A_OPTION_WRITE_MODE), + .WRITE_MODE1(PORT_B_OPTION_WRITE_MODE), + .BIT_WIDTH_0(PORT_A_WIDTH), + .BIT_WIDTH_1(PORT_B_WIDTH), + .BLK_SEL(3'b000), + .RESET_MODE(OPTION_RESET_MODE), + ) _TECHMAP_REPLACE_ ( + .BLKSEL(3'b000), + + .CLKA(PORT_A_CLK), + .CEA(PORT_A_CLK_EN), + .WREA(WREA), + .RESETA(RSTA), + .OCEA(1'b0), + .ADA(ADA), + .DIA(DIA), + .DOA(DOA), + + .CLKB(PORT_B_CLK), + .CEB(PORT_B_CLK_EN), + .WREB(WREB), + .RESETB(RSTB), + .OCEB(1'b0), + .ADB(ADB), + .DIB(DIB), + .DOB(DOB), + ); + +end + +endgenerate + +endmodule + + +module $__GOWIN_SDP_ (...); + +parameter INIT = 0; +parameter OPTION_RESET_MODE = "SYNC"; + +parameter PORT_R_WIDTH = 18; + +parameter PORT_W_WIDTH = 18; +parameter PORT_W_WR_BE_WIDTH = 2; + +input PORT_R_CLK; +input PORT_R_CLK_EN; +input PORT_R_RD_SRST; +input PORT_R_RD_ARST; +input [13:0] PORT_R_ADDR; +output [PORT_R_WIDTH-1:0] PORT_R_RD_DATA; + +input PORT_W_CLK; +input PORT_W_CLK_EN; +input PORT_W_WR_EN; +input [13:0] PORT_W_ADDR; +input [PORT_W_WR_BE_WIDTH-1:0] PORT_W_WR_BE; +input [PORT_W_WIDTH-1:0] PORT_W_WR_DATA; + +`DEF_FUNCS + +wire RST = OPTION_RESET_MODE == "SYNC" ? PORT_R_RD_SRST : PORT_R_RD_ARST; +wire WRE = `wre(PORT_W_WIDTH, PORT_W_WR_EN, PORT_W_WR_BE); +wire [13:0] ADW = `addrbe(PORT_W_WIDTH, PORT_W_ADDR, PORT_W_WR_BE); + +generate + +if (PORT_W_WIDTH < 9 || PORT_R_WIDTH < 9) begin + + wire [31:0] DI = `x8_wr_data(PORT_W_WR_DATA); + wire [31:0] DO; + + assign PORT_R_RD_DATA = `x8_rd_data(DO); + + SDP #( + `INIT(init_slice_x8) + .READ_MODE(1'b0), + .BIT_WIDTH_0(`x8_width(PORT_W_WIDTH)), + .BIT_WIDTH_1(`x8_width(PORT_R_WIDTH)), + .BLK_SEL(3'b000), + .RESET_MODE(OPTION_RESET_MODE), + ) _TECHMAP_REPLACE_ ( + .BLKSEL(3'b000), + + .CLKA(PORT_W_CLK), + .CEA(PORT_W_CLK_EN), + .WREA(WRE), + .RESETA(1'b0), + .ADA(ADW), + .DI(DI), + + .CLKB(PORT_R_CLK), + .CEB(PORT_R_CLK_EN), + .WREB(1'b0), + .RESETB(RST), + .OCE(1'b0), + .ADB(PORT_R_ADDR), + .DO(DO), + ); + +end else begin + + wire [35:0] DI = PORT_W_WR_DATA; + wire [35:0] DO; + + assign PORT_R_RD_DATA = DO; + + SDPX9 #( + `INIT(init_slice_x9) + .READ_MODE(1'b0), + .BIT_WIDTH_0(PORT_W_WIDTH), + .BIT_WIDTH_1(PORT_R_WIDTH), + .BLK_SEL(3'b000), + .RESET_MODE(OPTION_RESET_MODE), + ) _TECHMAP_REPLACE_ ( + .BLKSEL(3'b000), + + .CLKA(PORT_W_CLK), + .CEA(PORT_W_CLK_EN), + .WREA(WRE), + .RESETA(1'b0), + .ADA(ADW), + .DI(DI), + + .CLKB(PORT_R_CLK), + .CEB(PORT_R_CLK_EN), + .WREB(1'b0), + .RESETB(RST), + .OCE(1'b0), + .ADB(PORT_R_ADDR), + .DO(DO), + ); + +end + +endgenerate + +endmodule diff --git a/resources/netlist/resources/kernel/share/gowin/cells_map.v b/resources/netlist/resources/kernel/share/gowin/cells_map.v new file mode 100644 index 0000000..5978a00 --- /dev/null +++ b/resources/netlist/resources/kernel/share/gowin/cells_map.v @@ -0,0 +1,177 @@ +`default_nettype none +//All DFF* have INIT, but the hardware is always initialised to the reset +//value regardless. The parameter is ignored. + +// DFFN D Flip-Flop with Negative-Edge Clock +module \$_DFF_N_ (input D, C, output Q); + DFFN _TECHMAP_REPLACE_ (.D(D), .Q(Q), .CLK(C)); + wire _TECHMAP_REMOVEINIT_Q_ = 1; +endmodule + +// DFF D Flip-Flop +module \$_DFF_P_ (input D, C, output Q); + DFF _TECHMAP_REPLACE_ (.D(D), .Q(Q), .CLK(C)); + wire _TECHMAP_REMOVEINIT_Q_ = 1; +endmodule + +// DFFE D Flip-Flop with Clock Enable +module \$_DFFE_PP_ (input D, C, E, output Q); + DFFE _TECHMAP_REPLACE_ (.D(D), .Q(Q), .CLK(C), .CE(E)); + wire _TECHMAP_REMOVEINIT_Q_ = 1; +endmodule + +// DFFNE D Flip-Flop with Negative-Edge Clock and Clock Enable +module \$_DFFE_NP_ (input D, C, E, output Q); + DFFNE _TECHMAP_REPLACE_ (.D(D), .Q(Q), .CLK(C), .CE(E)); + wire _TECHMAP_REMOVEINIT_Q_ = 1; +endmodule + +// DFFR D Flip-Flop with Synchronous Reset +module \$_SDFF_PP0_ (input D, C, R, output Q); + DFFR _TECHMAP_REPLACE_ (.D(D), .Q(Q), .CLK(C), .RESET(R)); + wire _TECHMAP_REMOVEINIT_Q_ = 1; +endmodule + +// DFFNR D Flip-Flop with Negative-Edge Clock and Synchronous Reset +module \$_SDFF_NP0_ (input D, C, R, output Q); + DFFNR _TECHMAP_REPLACE_ (.D(D), .Q(Q), .CLK(C), .RESET(R)); + wire _TECHMAP_REMOVEINIT_Q_ = 1; +endmodule + +// DFFRE D Flip-Flop with Clock Enable and Synchronous Reset +module \$_SDFFE_PP0P_ (input D, C, R, E, output Q); + DFFRE _TECHMAP_REPLACE_ (.D(D), .Q(Q), .CLK(C), .RESET(R), .CE(E)); + wire _TECHMAP_REMOVEINIT_Q_ = 1; +endmodule + +// DFFNRE D Flip-Flop with Negative-Edge Clock,Clock Enable, and Synchronous Reset +module \$_SDFFE_NP0P_ (input D, C, R, E, output Q); + DFFNRE _TECHMAP_REPLACE_ (.D(D), .Q(Q), .CLK(C), .RESET(R), .CE(E)); + wire _TECHMAP_REMOVEINIT_Q_ = 1; +endmodule + +// DFFS D Flip-Flop with Synchronous Set +module \$_SDFF_PP1_ (input D, C, R, output Q); + DFFS _TECHMAP_REPLACE_ (.D(D), .Q(Q), .CLK(C), .SET(R)); + wire _TECHMAP_REMOVEINIT_Q_ = 1; +endmodule + +// DFFNS D Flip-Flop with Negative-Edge Clock and Synchronous Set +module \$_SDFF_NP1_ (input D, C, R, output Q); + DFFNS _TECHMAP_REPLACE_ (.D(D), .Q(Q), .CLK(C), .SET(R)); + wire _TECHMAP_REMOVEINIT_Q_ = 1; +endmodule + +// DFFSE D Flip-Flop with Clock Enable and Synchronous Set +module \$_SDFFE_PP1P_ (input D, C, R, E, output Q); + DFFSE _TECHMAP_REPLACE_ (.D(D), .Q(Q), .CLK(C), .SET(R), .CE(E)); + wire _TECHMAP_REMOVEINIT_Q_ = 1; +endmodule + +// DFFNSE D Flip-Flop with Negative-Edge Clock,Clock Enable,and Synchronous Set +module \$_SDFFE_NP1P_ (input D, C, R, E, output Q); + DFFNSE _TECHMAP_REPLACE_ (.D(D), .Q(Q), .CLK(C), .SET(R), .CE(E)); + wire _TECHMAP_REMOVEINIT_Q_ = 1; +endmodule + +// DFFP D Flip-Flop with Asynchronous Preset +module \$_DFF_PP1_ (input D, C, R, output Q); + DFFP _TECHMAP_REPLACE_ (.D(D), .Q(Q), .CLK(C), .PRESET(R)); + wire _TECHMAP_REMOVEINIT_Q_ = 1; +endmodule + +// DFFNP D Flip-Flop with Negative-Edge Clock and Asynchronous Preset +module \$_DFF_NP1_ (input D, C, R, output Q); + DFFNP _TECHMAP_REPLACE_ (.D(D), .Q(Q), .CLK(C), .PRESET(R)); + wire _TECHMAP_REMOVEINIT_Q_ = 1; +endmodule + +// DFFC D Flip-Flop with Asynchronous Clear +module \$_DFF_PP0_ (input D, C, R, output Q); + DFFC _TECHMAP_REPLACE_ (.D(D), .Q(Q), .CLK(C), .CLEAR(R)); + wire _TECHMAP_REMOVEINIT_Q_ = 1; +endmodule + +// DFFNC D Flip-Flop with Negative-Edge Clock and Asynchronous Clear +module \$_DFF_NP0_ (input D, C, R, output Q); + DFFNC _TECHMAP_REPLACE_ (.D(D), .Q(Q), .CLK(C), .CLEAR(R)); + wire _TECHMAP_REMOVEINIT_Q_ = 1; +endmodule + +// DFFPE D Flip-Flop with Clock Enable and Asynchronous Preset +module \$_DFFE_PP1P_ (input D, C, R, E, output Q); + DFFPE _TECHMAP_REPLACE_ (.D(D), .Q(Q), .CLK(C), .PRESET(R), .CE(E)); + wire _TECHMAP_REMOVEINIT_Q_ = 1; +endmodule + +// DFFNPE D Flip-Flop with Negative-Edge Clock,Clock Enable, and Asynchronous Preset +module \$_DFFE_NP1P_ (input D, C, R, E, output Q); + DFFNPE _TECHMAP_REPLACE_ (.D(D), .Q(Q), .CLK(C), .PRESET(R), .CE(E)); + wire _TECHMAP_REMOVEINIT_Q_ = 1; +endmodule + +// DFFCE D Flip-Flop with Clock Enable and Asynchronous Clear +module \$_DFFE_PP0P_ (input D, C, R, E, output Q); + DFFCE _TECHMAP_REPLACE_ (.D(D), .Q(Q), .CLK(C), .CLEAR(R), .CE(E)); + wire _TECHMAP_REMOVEINIT_Q_ = 1; +endmodule + +// DFFNCE D Flip-Flop with Negative-Edge Clock,Clock Enable and Asynchronous Clear +module \$_DFFE_NP0P_ (input D, C, R, E, output Q); + DFFNCE _TECHMAP_REPLACE_ (.D(D), .Q(Q), .CLK(C), .CLEAR(R), .CE(E)); + wire _TECHMAP_REMOVEINIT_Q_ = 1; +endmodule + +module \$lut (A, Y); + parameter WIDTH = 0; + parameter LUT = 0; + + (* force_downto *) + input [WIDTH-1:0] A; + output Y; + + generate + if (WIDTH == 1) begin + LUT1 #(.INIT(LUT)) _TECHMAP_REPLACE_ (.F(Y), + .I0(A[0])); + end else + if (WIDTH == 2) begin + LUT2 #(.INIT(LUT)) _TECHMAP_REPLACE_ (.F(Y), + .I0(A[0]), .I1(A[1])); + end else + if (WIDTH == 3) begin + LUT3 #(.INIT(LUT)) _TECHMAP_REPLACE_ (.F(Y), + .I0(A[0]), .I1(A[1]), .I2(A[2])); + end else + if (WIDTH == 4) begin + LUT4 #(.INIT(LUT)) _TECHMAP_REPLACE_ (.F(Y), + .I0(A[0]), .I1(A[1]), .I2(A[2]), .I3(A[3])); + end else + if (WIDTH == 5) begin + wire f0, f1; + \$lut #(.LUT(LUT[15: 0]), .WIDTH(4)) lut0 (.A(A[3:0]), .Y(f0)); + \$lut #(.LUT(LUT[31:16]), .WIDTH(4)) lut1 (.A(A[3:0]), .Y(f1)); + MUX2_LUT5 mux5(.I0(f0), .I1(f1), .S0(A[4]), .O(Y)); + end else + if (WIDTH == 6) begin + wire f0, f1; + \$lut #(.LUT(LUT[31: 0]), .WIDTH(5)) lut0 (.A(A[4:0]), .Y(f0)); + \$lut #(.LUT(LUT[63:32]), .WIDTH(5)) lut1 (.A(A[4:0]), .Y(f1)); + MUX2_LUT6 mux6(.I0(f0), .I1(f1), .S0(A[5]), .O(Y)); + end else + if (WIDTH == 7) begin + wire f0, f1; + \$lut #(.LUT(LUT[63: 0]), .WIDTH(6)) lut0 (.A(A[5:0]), .Y(f0)); + \$lut #(.LUT(LUT[127:64]), .WIDTH(6)) lut1 (.A(A[5:0]), .Y(f1)); + MUX2_LUT7 mux7(.I0(f0), .I1(f1), .S0(A[6]), .O(Y)); + end else + if (WIDTH == 8) begin + wire f0, f1; + \$lut #(.LUT(LUT[127: 0]), .WIDTH(7)) lut0 (.A(A[6:0]), .Y(f0)); + \$lut #(.LUT(LUT[255:128]), .WIDTH(7)) lut1 (.A(A[6:0]), .Y(f1)); + MUX2_LUT8 mux8(.I0(f0), .I1(f1), .S0(A[7]), .O(Y)); + end else begin + wire _TECHMAP_FAIL_ = 1; + end + endgenerate +endmodule diff --git a/resources/netlist/resources/kernel/share/gowin/cells_sim.v b/resources/netlist/resources/kernel/share/gowin/cells_sim.v new file mode 100644 index 0000000..736aa07 --- /dev/null +++ b/resources/netlist/resources/kernel/share/gowin/cells_sim.v @@ -0,0 +1,1587 @@ +(* abc9_lut=1 *) +module LUT1(output F, input I0); + parameter [1:0] INIT = 0; + specify + (I0 => F) = (555, 902); + endspecify + assign F = I0 ? INIT[1] : INIT[0]; +endmodule + +(* abc9_lut=1 *) +module LUT2(output F, input I0, I1); + parameter [3:0] INIT = 0; + specify + (I0 => F) = (867, 1184); + (I1 => F) = (555, 902); + endspecify + wire [ 1: 0] s1 = I1 ? INIT[ 3: 2] : INIT[ 1: 0]; + assign F = I0 ? s1[1] : s1[0]; +endmodule + +(* abc9_lut=1 *) +module LUT3(output F, input I0, I1, I2); + parameter [7:0] INIT = 0; + specify + (I0 => F) = (1054, 1486); + (I1 => F) = (867, 1184); + (I2 => F) = (555, 902); + endspecify + wire [ 3: 0] s2 = I2 ? INIT[ 7: 4] : INIT[ 3: 0]; + wire [ 1: 0] s1 = I1 ? s2[ 3: 2] : s2[ 1: 0]; + assign F = I0 ? s1[1] : s1[0]; +endmodule + +(* abc9_lut=1 *) +module LUT4(output F, input I0, I1, I2, I3); + parameter [15:0] INIT = 0; + specify + (I0 => F) = (1054, 1486); + (I1 => F) = (1053, 1583); + (I2 => F) = (867, 1184); + (I3 => F) = (555, 902); + endspecify + wire [ 7: 0] s3 = I3 ? INIT[15: 8] : INIT[ 7: 0]; + wire [ 3: 0] s2 = I2 ? s3[ 7: 4] : s3[ 3: 0]; + wire [ 1: 0] s1 = I1 ? s2[ 3: 2] : s2[ 1: 0]; + assign F = I0 ? s1[1] : s1[0]; +endmodule + +(* abc9_lut=2 *) +module __APICULA_LUT5(output F, input I0, I1, I2, I3, M0); + specify + (I0 => F) = (1187, 1638); + (I1 => F) = (1184, 1638); + (I2 => F) = (995, 1371); + (I3 => F) = (808, 1116); + (M0 => F) = (486, 680); + endspecify +endmodule + +(* abc9_lut=4 *) +module __APICULA_LUT6(output F, input I0, I1, I2, I3, M0, M1); + specify + (I0 => F) = (1187 + 136, 1638 + 255); + (I1 => F) = (1184 + 136, 1638 + 255); + (I2 => F) = (995 + 136, 1371 + 255); + (I3 => F) = (808 + 136, 1116 + 255); + (M0 => F) = (486 + 136, 680 + 255); + (M1 => F) = (478, 723); + endspecify +endmodule + +(* abc9_lut=8 *) +module __APICULA_LUT7(output F, input I0, I1, I2, I3, M0, M1, M2); + specify + (I0 => F) = (1187 + 136 + 136, 1638 + 255 + 255); + (I1 => F) = (1184 + 136 + 136, 1638 + 255 + 255); + (I2 => F) = (995 + 136 + 136, 1371 + 255 + 255); + (I3 => F) = (808 + 136 + 136, 1116 + 255 + 255); + (M0 => F) = (486 + 136 + 136, 680 + 255 + 255); + (M1 => F) = (478 + 136, 723 + 255); + (M2 => F) = (478, 723); + endspecify +endmodule + +(* abc9_lut=16 *) +module __APICULA_LUT8(output F, input I0, I1, I2, I3, M0, M1, M2, M3); + specify + (I0 => F) = (1187 + 136 + 136 + 136, 1638 + 255 + 255 + 255); + (I1 => F) = (1184 + 136 + 136 + 136, 1638 + 255 + 255 + 255); + (I2 => F) = (995 + 136 + 136 + 136, 1371 + 255 + 255 + 255); + (I3 => F) = (808 + 136 + 136 + 136, 1116 + 255 + 255 + 255); + (M0 => F) = (486 + 136 + 136 + 136, 680 + 255 + 255 + 255); + (M1 => F) = (478 + 136 + 136, 723 + 255 + 255); + (M2 => F) = (478 + 136, 723 + 255); + (M3 => F) = (478, 723); + endspecify + endmodule + +module MUX2 (O, I0, I1, S0); + input I0,I1; + input S0; + output O; + + specify + (I0 => O) = (141, 160); + (I1 => O) = (141, 160); + (S0 => O) = (486, 680); + endspecify + + assign O = S0 ? I1 : I0; +endmodule + +module MUX2_LUT5 (O, I0, I1, S0); + input I0,I1; + input S0; + output O; + + specify + (I0 => O) = (141, 160); + (I1 => O) = (141, 160); + (S0 => O) = (486, 680); + endspecify + + MUX2 mux2_lut5 (O, I0, I1, S0); +endmodule + +module MUX2_LUT6 (O, I0, I1, S0); + input I0,I1; + input S0; + output O; + + specify + (I0 => O) = (136, 255); + (I1 => O) = (136, 255); + (S0 => O) = (478, 723); + endspecify + + MUX2 mux2_lut6 (O, I0, I1, S0); +endmodule + +module MUX2_LUT7 (O, I0, I1, S0); + input I0,I1; + input S0; + output O; + + specify + (I0 => O) = (136, 255); + (I1 => O) = (136, 255); + (S0 => O) = (478, 723); + endspecify + + MUX2 mux2_lut7 (O, I0, I1, S0); +endmodule + +module MUX2_LUT8 (O, I0, I1, S0); + input I0,I1; + input S0; + output O; + + specify + (I0 => O) = (136, 255); + (I1 => O) = (136, 255); + (S0 => O) = (478, 723); + endspecify + + MUX2 mux2_lut8 (O, I0, I1, S0); +endmodule + +(* abc9_flop, lib_whitebox *) +module DFF (output reg Q, input CLK, D); + parameter [0:0] INIT = 1'b0; + initial Q = INIT; + + specify + (posedge CLK => (Q : D)) = (480, 660); + $setup(D, posedge CLK, 576); + endspecify + + always @(posedge CLK) + Q <= D; +endmodule + +(* abc9_flop, lib_whitebox *) +module DFFE (output reg Q, input D, CLK, CE); + parameter [0:0] INIT = 1'b0; + initial Q = INIT; + + specify + if (CE) (posedge CLK => (Q : D)) = (480, 660); + $setup(D, posedge CLK &&& CE, 576); + $setup(CE, posedge CLK, 63); + endspecify + + always @(posedge CLK) begin + if (CE) + Q <= D; + end +endmodule // DFFE (positive clock edge; clock enable) + +(* abc9_box, lib_whitebox *) +module DFFS (output reg Q, input D, CLK, SET); + parameter [0:0] INIT = 1'b1; + initial Q = INIT; + + specify + (posedge CLK => (Q : D)) = (480, 660); + $setup(D, posedge CLK, 576); + $setup(SET, posedge CLK, 63); + endspecify + + always @(posedge CLK) begin + if (SET) + Q <= 1'b1; + else + Q <= D; + end +endmodule // DFFS (positive clock edge; synchronous set) + +(* abc9_box, lib_whitebox *) +module DFFSE (output reg Q, input D, CLK, CE, SET); + parameter [0:0] INIT = 1'b1; + initial Q = INIT; + + specify + if (CE) (posedge CLK => (Q : D)) = (480, 660); + $setup(D, posedge CLK &&& CE, 576); + $setup(CE, posedge CLK, 63); + $setup(SET, posedge CLK, 63); + endspecify + + always @(posedge CLK) begin + if (SET) + Q <= 1'b1; + else if (CE) + Q <= D; +end +endmodule // DFFSE (positive clock edge; synchronous set takes precedence over clock enable) + +(* abc9_flop, lib_whitebox *) +module DFFR (output reg Q, input D, CLK, RESET); + parameter [0:0] INIT = 1'b0; + initial Q = INIT; + + specify + (posedge CLK => (Q : D)) = (480, 660); + $setup(D, posedge CLK, 576); + $setup(RESET, posedge CLK, 63); + endspecify + + always @(posedge CLK) begin + if (RESET) + Q <= 1'b0; + else + Q <= D; + end +endmodule // DFFR (positive clock edge; synchronous reset) + +(* abc9_flop, lib_whitebox *) +module DFFRE (output reg Q, input D, CLK, CE, RESET); + parameter [0:0] INIT = 1'b0; + initial Q = INIT; + + specify + if (CE) (posedge CLK => (Q : D)) = (480, 660); + $setup(D, posedge CLK &&& CE, 576); + $setup(CE, posedge CLK, 63); + $setup(RESET, posedge CLK, 63); + endspecify + + always @(posedge CLK) begin + if (RESET) + Q <= 1'b0; + else if (CE) + Q <= D; + end +endmodule // DFFRE (positive clock edge; synchronous reset takes precedence over clock enable) + +(* abc9_box, lib_whitebox *) +module DFFP (output reg Q, input D, CLK, PRESET); + parameter [0:0] INIT = 1'b1; + initial Q = INIT; + + specify + (posedge CLK => (Q : D)) = (480, 660); + (posedge PRESET => (Q : 1'b1)) = (1800, 2679); + $setup(D, posedge CLK, 576); + endspecify + + always @(posedge CLK or posedge PRESET) begin + if(PRESET) + Q <= 1'b1; + else + Q <= D; + end +endmodule // DFFP (positive clock edge; asynchronous preset) + +(* abc9_box, lib_whitebox *) +module DFFPE (output reg Q, input D, CLK, CE, PRESET); + parameter [0:0] INIT = 1'b1; + initial Q = INIT; + + specify + if (CE) (posedge CLK => (Q : D)) = (480, 660); + (posedge PRESET => (Q : 1'b1)) = (1800, 2679); + $setup(D, posedge CLK &&& CE, 576); + $setup(CE, posedge CLK, 63); + endspecify + + always @(posedge CLK or posedge PRESET) begin + if(PRESET) + Q <= 1'b1; + else if (CE) + Q <= D; + end +endmodule // DFFPE (positive clock edge; asynchronous preset; clock enable) + +(* abc9_box, lib_whitebox *) +module DFFC (output reg Q, input D, CLK, CLEAR); + parameter [0:0] INIT = 1'b0; + initial Q = INIT; + + specify + (posedge CLK => (Q : D)) = (480, 660); + (posedge CLEAR => (Q : 1'b0)) = (1800, 2679); + $setup(D, posedge CLK, 576); + endspecify + + always @(posedge CLK or posedge CLEAR) begin + if(CLEAR) + Q <= 1'b0; + else + Q <= D; + end +endmodule // DFFC (positive clock edge; asynchronous clear) + +(* abc9_box, lib_whitebox *) +module DFFCE (output reg Q, input D, CLK, CE, CLEAR); + parameter [0:0] INIT = 1'b0; + initial Q = INIT; + + specify + if (CE) (posedge CLK => (Q : D)) = (480, 660); + (posedge CLEAR => (Q : 1'b0)) = (1800, 2679); + $setup(D, posedge CLK &&& CE, 576); + $setup(CE, posedge CLK, 63); + endspecify + + always @(posedge CLK or posedge CLEAR) begin + if(CLEAR) + Q <= 1'b0; + else if (CE) + Q <= D; + end +endmodule // DFFCE (positive clock edge; asynchronous clear; clock enable) + +(* abc9_flop, lib_whitebox *) +module DFFN (output reg Q, input CLK, D); + parameter [0:0] INIT = 1'b0; + initial Q = INIT; + + specify + (negedge CLK => (Q : D)) = (480, 660); + $setup(D, negedge CLK, 576); + endspecify + + always @(negedge CLK) + Q <= D; +endmodule + +(* abc9_flop, lib_whitebox *) +module DFFNE (output reg Q, input D, CLK, CE); + parameter [0:0] INIT = 1'b0; + initial Q = INIT; + + specify + if (CE) (negedge CLK => (Q : D)) = (480, 660); + $setup(D, negedge CLK &&& CE, 576); + $setup(CE, negedge CLK, 63); + endspecify + + always @(negedge CLK) begin + if (CE) + Q <= D; + end +endmodule // DFFNE (negative clock edge; clock enable) + +(* abc9_box, lib_whitebox *) +module DFFNS (output reg Q, input D, CLK, SET); + parameter [0:0] INIT = 1'b1; + initial Q = INIT; + + specify + (negedge CLK => (Q : D)) = (480, 660); + $setup(D, negedge CLK, 576); + $setup(SET, negedge CLK, 63); + endspecify + + always @(negedge CLK) begin + if (SET) + Q <= 1'b1; + else + Q <= D; + end +endmodule // DFFNS (negative clock edge; synchronous set) + +(* abc9_box, lib_whitebox *) +module DFFNSE (output reg Q, input D, CLK, CE, SET); + parameter [0:0] INIT = 1'b1; + initial Q = INIT; + + specify + if (CE) (negedge CLK => (Q : D)) = (480, 660); + $setup(D, negedge CLK &&& CE, 576); + $setup(CE, negedge CLK, 63); + $setup(SET, negedge CLK, 63); + endspecify + + always @(negedge CLK) begin + if (SET) + Q <= 1'b1; + else if (CE) + Q <= D; +end +endmodule // DFFNSE (negative clock edge; synchronous set takes precedence over clock enable) + +(* abc9_flop, lib_whitebox *) +module DFFNR (output reg Q, input D, CLK, RESET); + parameter [0:0] INIT = 1'b0; + initial Q = INIT; + + specify + (negedge CLK => (Q : D)) = (480, 660); + $setup(D, negedge CLK, 576); + $setup(RESET, negedge CLK, 63); + endspecify + + always @(negedge CLK) begin + if (RESET) + Q <= 1'b0; + else + Q <= D; + end +endmodule // DFFNR (negative clock edge; synchronous reset) + +(* abc9_flop, lib_whitebox *) +module DFFNRE (output reg Q, input D, CLK, CE, RESET); + parameter [0:0] INIT = 1'b0; + initial Q = INIT; + + specify + if (CE) (negedge CLK => (Q : D)) = (480, 660); + $setup(D, negedge CLK &&& CE, 576); + $setup(CE, negedge CLK, 63); + $setup(RESET, negedge CLK, 63); + endspecify + + always @(negedge CLK) begin + if (RESET) + Q <= 1'b0; + else if (CE) + Q <= D; + end +endmodule // DFFNRE (negative clock edge; synchronous reset takes precedence over clock enable) + +(* abc9_box, lib_whitebox *) +module DFFNP (output reg Q, input D, CLK, PRESET); + parameter [0:0] INIT = 1'b1; + initial Q = INIT; + + specify + (negedge CLK => (Q : D)) = (480, 660); + (posedge PRESET => (Q : 1'b1)) = (1800, 2679); + $setup(D, negedge CLK, 576); + endspecify + + always @(negedge CLK or posedge PRESET) begin + if(PRESET) + Q <= 1'b1; + else + Q <= D; + end +endmodule // DFFNP (negative clock edge; asynchronous preset) + +(* abc9_box, lib_whitebox *) +module DFFNPE (output reg Q, input D, CLK, CE, PRESET); + parameter [0:0] INIT = 1'b1; + initial Q = INIT; + + specify + if (CE) (negedge CLK => (Q : D)) = (480, 660); + (posedge PRESET => (Q : 1'b1)) = (1800, 2679); + $setup(D, negedge CLK &&& CE, 576); + $setup(CE, negedge CLK, 63); + endspecify + + always @(negedge CLK or posedge PRESET) begin + if(PRESET) + Q <= 1'b1; + else if (CE) + Q <= D; + end +endmodule // DFFNPE (negative clock edge; asynchronous preset; clock enable) + +(* abc9_box, lib_whitebox *) +module DFFNC (output reg Q, input D, CLK, CLEAR); + parameter [0:0] INIT = 1'b0; + initial Q = INIT; + + specify + (negedge CLK => (Q : D)) = (480, 660); + (posedge CLEAR => (Q : 1'b0)) = (1800, 2679); + $setup(D, negedge CLK, 576); + endspecify + + always @(negedge CLK or posedge CLEAR) begin + if(CLEAR) + Q <= 1'b0; + else + Q <= D; + end +endmodule // DFFNC (negative clock edge; asynchronous clear) + +(* abc9_box, lib_whitebox *) +module DFFNCE (output reg Q, input D, CLK, CE, CLEAR); + parameter [0:0] INIT = 1'b0; + initial Q = INIT; + + specify + if (CE) (negedge CLK => (Q : D)) = (480, 660); + (posedge CLEAR => (Q : 1'b0)) = (1800, 2679); + $setup(D, negedge CLK &&& CE, 576); + $setup(CE, negedge CLK, 63); + endspecify + + always @(negedge CLK or posedge CLEAR) begin + if(CLEAR) + Q <= 1'b0; + else if (CE) + Q <= D; + end +endmodule // DFFNCE (negative clock edge; asynchronous clear; clock enable) + +// TODO add more DFF sim cells + +module VCC(output V); + assign V = 1; +endmodule + +module GND(output G); + assign G = 0; +endmodule + +module IBUF(output O, input I); + + specify + (I => O) = 0; + endspecify + + assign O = I; +endmodule + +module OBUF(output O, input I); + + specify + (I => O) = 0; + endspecify + + assign O = I; +endmodule + +module TBUF (O, I, OEN); + input I, OEN; + output O; + assign O = OEN ? 1'bz : I; +endmodule + +module IOBUF (O, IO, I, OEN); + input I,OEN; + output O; + inout IO; + assign IO = OEN ? 1'bz : I; + assign I = IO; +endmodule + +module TLVDS_OBUF (I, O, OB); + input I; + output O; + output OB; + assign O = I; + assign OB = ~I; +endmodule + +(* blackbox *) +module ODDR(D0, D1, TX, CLK, Q0, Q1); + input D0; + input D1; + input TX; + input CLK; + output Q0; + output Q1; + parameter TXCLK_POL = 0; + parameter INIT = 0; +endmodule + +(* blackbox *) +module ODDRC(D0, D1, CLEAR, TX, CLK, Q0, Q1); + input D0; + input D1; + input CLEAR; + input TX; + input CLK; + output Q0; + output Q1; + parameter TXCLK_POL = 0; + parameter INIT = 0; +endmodule + +module GSR (input GSRI); + wire GSRO = GSRI; +endmodule + +(* abc9_box, lib_whitebox *) +module ALU (SUM, COUT, I0, I1, I3, CIN); + +input I0; +input I1; +input I3; +(* abc9_carry *) input CIN; +output SUM; +(* abc9_carry *) output COUT; + +localparam ADD = 0; +localparam SUB = 1; +localparam ADDSUB = 2; +localparam NE = 3; +localparam GE = 4; +localparam LE = 5; +localparam CUP = 6; +localparam CDN = 7; +localparam CUPCDN = 8; +localparam MULT = 9; + +parameter ALU_MODE = 0; + +reg S, C; + +specify + (I0 => SUM) = (1043, 1432); + (I1 => SUM) = (775, 1049); + (I3 => SUM) = (751, 1010); + (CIN => SUM) = (694, 811); + (I0 => COUT) = (1010, 1380); + (I1 => COUT) = (1021, 1505); + (I3 => COUT) = (483, 792); + (CIN => COUT) = (49, 82); +endspecify + +assign SUM = S ^ CIN; +assign COUT = S? CIN : C; + +always @* begin + case (ALU_MODE) + ADD: begin + S = I0 ^ I1; + C = I0; + end + SUB: begin + S = I0 ^ ~I1; + C = I0; + end + ADDSUB: begin + S = I3? I0 ^ I1 : I0 ^ ~I1; + C = I0; + end + NE: begin + S = I0 ^ ~I1; + C = 1'b1; + end + GE: begin + S = I0 ^ ~I1; + C = I0; + end + LE: begin + S = ~I0 ^ I1; + C = I1; + end + CUP: begin + S = I0; + C = 1'b0; + end + CDN: begin + S = ~I0; + C = 1'b1; + end + CUPCDN: begin + S = I3? I0 : ~I0; + C = I0; + end + MULT: begin + S = I0 & I1; + C = I0 & I1; + end + endcase +end + +endmodule + + +module RAM16S1 (DO, DI, AD, WRE, CLK); + +parameter INIT_0 = 16'h0000; + +input [3:0] AD; +input DI; +output DO; +input CLK; +input WRE; + +specify + (AD *> DO) = (270, 405); + $setup(DI, posedge CLK, 62); + $setup(WRE, posedge CLK, 62); + $setup(AD, posedge CLK, 62); + (posedge CLK => (DO : 1'bx)) = (474, 565); +endspecify + +reg [15:0] mem; + +initial begin + mem = INIT_0; +end + +assign DO = mem[AD]; + +always @(posedge CLK) begin + if (WRE) begin + mem[AD] <= DI; + end +end + +endmodule + + +module RAM16S2 (DO, DI, AD, WRE, CLK); + +parameter INIT_0 = 16'h0000; +parameter INIT_1 = 16'h0000; + +input [3:0] AD; +input [1:0] DI; +output [1:0] DO; +input CLK; +input WRE; + +specify + (AD *> DO) = (270, 405); + $setup(DI, posedge CLK, 62); + $setup(WRE, posedge CLK, 62); + $setup(AD, posedge CLK, 62); + (posedge CLK => (DO : 2'bx)) = (474, 565); +endspecify + +reg [15:0] mem0, mem1; + +initial begin + mem0 = INIT_0; + mem1 = INIT_1; +end + +assign DO[0] = mem0[AD]; +assign DO[1] = mem1[AD]; + +always @(posedge CLK) begin + if (WRE) begin + mem0[AD] <= DI[0]; + mem1[AD] <= DI[1]; + end +end + +endmodule + + +module RAM16S4 (DO, DI, AD, WRE, CLK); + +parameter INIT_0 = 16'h0000; +parameter INIT_1 = 16'h0000; +parameter INIT_2 = 16'h0000; +parameter INIT_3 = 16'h0000; + +input [3:0] AD; +input [3:0] DI; +output [3:0] DO; +input CLK; +input WRE; + +specify + (AD *> DO) = (270, 405); + $setup(DI, posedge CLK, 62); + $setup(WRE, posedge CLK, 62); + $setup(AD, posedge CLK, 62); + (posedge CLK => (DO : 4'bx)) = (474, 565); +endspecify + +reg [15:0] mem0, mem1, mem2, mem3; + +initial begin + mem0 = INIT_0; + mem1 = INIT_1; + mem2 = INIT_2; + mem3 = INIT_3; +end + +assign DO[0] = mem0[AD]; +assign DO[1] = mem1[AD]; +assign DO[2] = mem2[AD]; +assign DO[3] = mem3[AD]; + +always @(posedge CLK) begin + if (WRE) begin + mem0[AD] <= DI[0]; + mem1[AD] <= DI[1]; + mem2[AD] <= DI[2]; + mem3[AD] <= DI[3]; + end +end + +endmodule + + +module RAM16SDP1 (DO, DI, WAD, RAD, WRE, CLK); + +parameter INIT_0 = 16'h0000; + +input [3:0] WAD; +input [3:0] RAD; +input DI; +output DO; +input CLK; +input WRE; + +specify + (RAD *> DO) = (270, 405); + $setup(DI, posedge CLK, 62); + $setup(WRE, posedge CLK, 62); + $setup(WAD, posedge CLK, 62); + (posedge CLK => (DO : 1'bx)) = (474, 565); +endspecify + +reg [15:0] mem; + +initial begin + mem = INIT_0; +end + +assign DO = mem[RAD]; + +always @(posedge CLK) begin + if (WRE) begin + mem[WAD] <= DI; + end +end + +endmodule + + +module RAM16SDP2 (DO, DI, WAD, RAD, WRE, CLK); + +parameter INIT_0 = 16'h0000; +parameter INIT_1 = 16'h0000; + +input [3:0] WAD; +input [3:0] RAD; +input [1:0] DI; +output [1:0] DO; +input CLK; +input WRE; + +specify + (RAD *> DO) = (270, 405); + $setup(DI, posedge CLK, 62); + $setup(WRE, posedge CLK, 62); + $setup(WAD, posedge CLK, 62); + (posedge CLK => (DO : 2'bx)) = (474, 565); +endspecify + +reg [15:0] mem0, mem1; + +initial begin + mem0 = INIT_0; + mem1 = INIT_1; +end + +assign DO[0] = mem0[RAD]; +assign DO[1] = mem1[RAD]; + +always @(posedge CLK) begin + if (WRE) begin + mem0[WAD] <= DI[0]; + mem1[WAD] <= DI[1]; + end +end + +endmodule + + +module RAM16SDP4 (DO, DI, WAD, RAD, WRE, CLK); + +parameter INIT_0 = 16'h0000; +parameter INIT_1 = 16'h0000; +parameter INIT_2 = 16'h0000; +parameter INIT_3 = 16'h0000; + +input [3:0] WAD; +input [3:0] RAD; +input [3:0] DI; +output [3:0] DO; +input CLK; +input WRE; + +specify + (RAD *> DO) = (270, 405); + $setup(DI, posedge CLK, 62); + $setup(WRE, posedge CLK, 62); + $setup(WAD, posedge CLK, 62); + (posedge CLK => (DO : 4'bx)) = (474, 565); +endspecify + +reg [15:0] mem0, mem1, mem2, mem3; + +initial begin + mem0 = INIT_0; + mem1 = INIT_1; + mem2 = INIT_2; + mem3 = INIT_3; +end + +assign DO[0] = mem0[RAD]; +assign DO[1] = mem1[RAD]; +assign DO[2] = mem2[RAD]; +assign DO[3] = mem3[RAD]; + +always @(posedge CLK) begin + if (WRE) begin + mem0[WAD] <= DI[0]; + mem1[WAD] <= DI[1]; + mem2[WAD] <= DI[2]; + mem3[WAD] <= DI[3]; + end +end + +endmodule + + +(* blackbox *) +module SP (DO, DI, BLKSEL, AD, WRE, CLK, CE, OCE, RESET); + +// 1 Enables output pipeline registers. +parameter READ_MODE = 1'b0; +// 0: no read on write, 1: transparent, 2: read-before-write +parameter WRITE_MODE = 2'b00; +parameter BIT_WIDTH = 32; // 1, 2, 4, 8, 16, 32 +parameter BLK_SEL = 3'b000; +parameter RESET_MODE = "SYNC"; +parameter INIT_RAM_00 = 256'h0; +parameter INIT_RAM_01 = 256'h0; +parameter INIT_RAM_02 = 256'h0; +parameter INIT_RAM_03 = 256'h0; +parameter INIT_RAM_04 = 256'h0; +parameter INIT_RAM_05 = 256'h0; +parameter INIT_RAM_06 = 256'h0; +parameter INIT_RAM_07 = 256'h0; +parameter INIT_RAM_08 = 256'h0; +parameter INIT_RAM_09 = 256'h0; +parameter INIT_RAM_0A = 256'h0; +parameter INIT_RAM_0B = 256'h0; +parameter INIT_RAM_0C = 256'h0; +parameter INIT_RAM_0D = 256'h0; +parameter INIT_RAM_0E = 256'h0; +parameter INIT_RAM_0F = 256'h0; +parameter INIT_RAM_10 = 256'h0; +parameter INIT_RAM_11 = 256'h0; +parameter INIT_RAM_12 = 256'h0; +parameter INIT_RAM_13 = 256'h0; +parameter INIT_RAM_14 = 256'h0; +parameter INIT_RAM_15 = 256'h0; +parameter INIT_RAM_16 = 256'h0; +parameter INIT_RAM_17 = 256'h0; +parameter INIT_RAM_18 = 256'h0; +parameter INIT_RAM_19 = 256'h0; +parameter INIT_RAM_1A = 256'h0; +parameter INIT_RAM_1B = 256'h0; +parameter INIT_RAM_1C = 256'h0; +parameter INIT_RAM_1D = 256'h0; +parameter INIT_RAM_1E = 256'h0; +parameter INIT_RAM_1F = 256'h0; +parameter INIT_RAM_20 = 256'h0; +parameter INIT_RAM_21 = 256'h0; +parameter INIT_RAM_22 = 256'h0; +parameter INIT_RAM_23 = 256'h0; +parameter INIT_RAM_24 = 256'h0; +parameter INIT_RAM_25 = 256'h0; +parameter INIT_RAM_26 = 256'h0; +parameter INIT_RAM_27 = 256'h0; +parameter INIT_RAM_28 = 256'h0; +parameter INIT_RAM_29 = 256'h0; +parameter INIT_RAM_2A = 256'h0; +parameter INIT_RAM_2B = 256'h0; +parameter INIT_RAM_2C = 256'h0; +parameter INIT_RAM_2D = 256'h0; +parameter INIT_RAM_2E = 256'h0; +parameter INIT_RAM_2F = 256'h0; +parameter INIT_RAM_30 = 256'h0; +parameter INIT_RAM_31 = 256'h0; +parameter INIT_RAM_32 = 256'h0; +parameter INIT_RAM_33 = 256'h0; +parameter INIT_RAM_34 = 256'h0; +parameter INIT_RAM_35 = 256'h0; +parameter INIT_RAM_36 = 256'h0; +parameter INIT_RAM_37 = 256'h0; +parameter INIT_RAM_38 = 256'h0; +parameter INIT_RAM_39 = 256'h0; +parameter INIT_RAM_3A = 256'h0; +parameter INIT_RAM_3B = 256'h0; +parameter INIT_RAM_3C = 256'h0; +parameter INIT_RAM_3D = 256'h0; +parameter INIT_RAM_3E = 256'h0; +parameter INIT_RAM_3F = 256'h0; + +output [31:0] DO; +input [31:0] DI; +input [2:0] BLKSEL; +input [13:0] AD; +input WRE; +input CLK; +input CE; +input OCE; +input RESET; + +endmodule + +(* blackbox *) +module SPX9 (DO, DI, BLKSEL, AD, WRE, CLK, CE, OCE, RESET); + +// 1 Enables output pipeline registers. +parameter READ_MODE = 1'b0; +// 0: no read on write, 1: transparent, 2: read-before-write +parameter WRITE_MODE = 2'b00; +parameter BIT_WIDTH = 36; // 9, 18, 36 +parameter BLK_SEL = 3'b000; +parameter RESET_MODE = "SYNC"; +parameter INIT_RAM_00 = 288'h0; +parameter INIT_RAM_01 = 288'h0; +parameter INIT_RAM_02 = 288'h0; +parameter INIT_RAM_03 = 288'h0; +parameter INIT_RAM_04 = 288'h0; +parameter INIT_RAM_05 = 288'h0; +parameter INIT_RAM_06 = 288'h0; +parameter INIT_RAM_07 = 288'h0; +parameter INIT_RAM_08 = 288'h0; +parameter INIT_RAM_09 = 288'h0; +parameter INIT_RAM_0A = 288'h0; +parameter INIT_RAM_0B = 288'h0; +parameter INIT_RAM_0C = 288'h0; +parameter INIT_RAM_0D = 288'h0; +parameter INIT_RAM_0E = 288'h0; +parameter INIT_RAM_0F = 288'h0; +parameter INIT_RAM_10 = 288'h0; +parameter INIT_RAM_11 = 288'h0; +parameter INIT_RAM_12 = 288'h0; +parameter INIT_RAM_13 = 288'h0; +parameter INIT_RAM_14 = 288'h0; +parameter INIT_RAM_15 = 288'h0; +parameter INIT_RAM_16 = 288'h0; +parameter INIT_RAM_17 = 288'h0; +parameter INIT_RAM_18 = 288'h0; +parameter INIT_RAM_19 = 288'h0; +parameter INIT_RAM_1A = 288'h0; +parameter INIT_RAM_1B = 288'h0; +parameter INIT_RAM_1C = 288'h0; +parameter INIT_RAM_1D = 288'h0; +parameter INIT_RAM_1E = 288'h0; +parameter INIT_RAM_1F = 288'h0; +parameter INIT_RAM_20 = 288'h0; +parameter INIT_RAM_21 = 288'h0; +parameter INIT_RAM_22 = 288'h0; +parameter INIT_RAM_23 = 288'h0; +parameter INIT_RAM_24 = 288'h0; +parameter INIT_RAM_25 = 288'h0; +parameter INIT_RAM_26 = 288'h0; +parameter INIT_RAM_27 = 288'h0; +parameter INIT_RAM_28 = 288'h0; +parameter INIT_RAM_29 = 288'h0; +parameter INIT_RAM_2A = 288'h0; +parameter INIT_RAM_2B = 288'h0; +parameter INIT_RAM_2C = 288'h0; +parameter INIT_RAM_2D = 288'h0; +parameter INIT_RAM_2E = 288'h0; +parameter INIT_RAM_2F = 288'h0; +parameter INIT_RAM_30 = 288'h0; +parameter INIT_RAM_31 = 288'h0; +parameter INIT_RAM_32 = 288'h0; +parameter INIT_RAM_33 = 288'h0; +parameter INIT_RAM_34 = 288'h0; +parameter INIT_RAM_35 = 288'h0; +parameter INIT_RAM_36 = 288'h0; +parameter INIT_RAM_37 = 288'h0; +parameter INIT_RAM_38 = 288'h0; +parameter INIT_RAM_39 = 288'h0; +parameter INIT_RAM_3A = 288'h0; +parameter INIT_RAM_3B = 288'h0; +parameter INIT_RAM_3C = 288'h0; +parameter INIT_RAM_3D = 288'h0; +parameter INIT_RAM_3E = 288'h0; +parameter INIT_RAM_3F = 288'h0; + +output [35:0] DO; +input [35:0] DI; +input [2:0] BLKSEL; +input [13:0] AD; +input WRE; +input CLK; +input CE; +input OCE; +input RESET; + +endmodule + + +(* blackbox *) +module SDP (DO, DI, BLKSEL, ADA, ADB, WREA, WREB, CLKA, CLKB, CEA, CEB, OCE, RESETA, RESETB); + +parameter READ_MODE = 1'b0; +parameter BIT_WIDTH_0 = 32; // 1, 2, 4, 8, 16, 32 +parameter BIT_WIDTH_1 = 32; // 1, 2, 4, 8, 16, 32 +parameter BLK_SEL = 3'b000; +parameter RESET_MODE = "SYNC"; +parameter INIT_RAM_00 = 256'h0; +parameter INIT_RAM_01 = 256'h0; +parameter INIT_RAM_02 = 256'h0; +parameter INIT_RAM_03 = 256'h0; +parameter INIT_RAM_04 = 256'h0; +parameter INIT_RAM_05 = 256'h0; +parameter INIT_RAM_06 = 256'h0; +parameter INIT_RAM_07 = 256'h0; +parameter INIT_RAM_08 = 256'h0; +parameter INIT_RAM_09 = 256'h0; +parameter INIT_RAM_0A = 256'h0; +parameter INIT_RAM_0B = 256'h0; +parameter INIT_RAM_0C = 256'h0; +parameter INIT_RAM_0D = 256'h0; +parameter INIT_RAM_0E = 256'h0; +parameter INIT_RAM_0F = 256'h0; +parameter INIT_RAM_10 = 256'h0; +parameter INIT_RAM_11 = 256'h0; +parameter INIT_RAM_12 = 256'h0; +parameter INIT_RAM_13 = 256'h0; +parameter INIT_RAM_14 = 256'h0; +parameter INIT_RAM_15 = 256'h0; +parameter INIT_RAM_16 = 256'h0; +parameter INIT_RAM_17 = 256'h0; +parameter INIT_RAM_18 = 256'h0; +parameter INIT_RAM_19 = 256'h0; +parameter INIT_RAM_1A = 256'h0; +parameter INIT_RAM_1B = 256'h0; +parameter INIT_RAM_1C = 256'h0; +parameter INIT_RAM_1D = 256'h0; +parameter INIT_RAM_1E = 256'h0; +parameter INIT_RAM_1F = 256'h0; +parameter INIT_RAM_20 = 256'h0; +parameter INIT_RAM_21 = 256'h0; +parameter INIT_RAM_22 = 256'h0; +parameter INIT_RAM_23 = 256'h0; +parameter INIT_RAM_24 = 256'h0; +parameter INIT_RAM_25 = 256'h0; +parameter INIT_RAM_26 = 256'h0; +parameter INIT_RAM_27 = 256'h0; +parameter INIT_RAM_28 = 256'h0; +parameter INIT_RAM_29 = 256'h0; +parameter INIT_RAM_2A = 256'h0; +parameter INIT_RAM_2B = 256'h0; +parameter INIT_RAM_2C = 256'h0; +parameter INIT_RAM_2D = 256'h0; +parameter INIT_RAM_2E = 256'h0; +parameter INIT_RAM_2F = 256'h0; +parameter INIT_RAM_30 = 256'h0; +parameter INIT_RAM_31 = 256'h0; +parameter INIT_RAM_32 = 256'h0; +parameter INIT_RAM_33 = 256'h0; +parameter INIT_RAM_34 = 256'h0; +parameter INIT_RAM_35 = 256'h0; +parameter INIT_RAM_36 = 256'h0; +parameter INIT_RAM_37 = 256'h0; +parameter INIT_RAM_38 = 256'h0; +parameter INIT_RAM_39 = 256'h0; +parameter INIT_RAM_3A = 256'h0; +parameter INIT_RAM_3B = 256'h0; +parameter INIT_RAM_3C = 256'h0; +parameter INIT_RAM_3D = 256'h0; +parameter INIT_RAM_3E = 256'h0; +parameter INIT_RAM_3F = 256'h0; + +output [31:0] DO; +input [31:0] DI; +input [2:0] BLKSEL; +input [13:0] ADA, ADB; +input WREA, WREB; +input CLKA, CLKB; +input CEA, CEB; +input OCE; +input RESETA, RESETB; + +specify + (posedge CLKB => (DO : DI)) = (419, 493); + $setup(RESETA, posedge CLKA, 62); + $setup(RESETB, posedge CLKB, 62); + $setup(OCE, posedge CLKB, 62); + $setup(CEA, posedge CLKA, 62); + $setup(CEB, posedge CLKB, 62); + $setup(OCE, posedge CLKB, 62); + $setup(WREA, posedge CLKA, 62); + $setup(WREB, posedge CLKB, 62); + $setup(DI, posedge CLKA, 62); + $setup(ADA, posedge CLKA, 62); + $setup(ADB, posedge CLKB, 62); + $setup(BLKSEL, posedge CLKA, 62); +endspecify + +endmodule + +(* blackbox *) +module SDPX9 (DO, DI, BLKSEL, ADA, ADB, WREA, WREB, CLKA, CLKB, CEA, CEB, OCE, RESETA, RESETB); + +parameter READ_MODE = 1'b0; +parameter BIT_WIDTH_0 = 36; // 9, 18, 36 +parameter BIT_WIDTH_1 = 36; // 9, 18, 36 +parameter BLK_SEL = 3'b000; +parameter RESET_MODE = "SYNC"; +parameter INIT_RAM_00 = 288'h0; +parameter INIT_RAM_01 = 288'h0; +parameter INIT_RAM_02 = 288'h0; +parameter INIT_RAM_03 = 288'h0; +parameter INIT_RAM_04 = 288'h0; +parameter INIT_RAM_05 = 288'h0; +parameter INIT_RAM_06 = 288'h0; +parameter INIT_RAM_07 = 288'h0; +parameter INIT_RAM_08 = 288'h0; +parameter INIT_RAM_09 = 288'h0; +parameter INIT_RAM_0A = 288'h0; +parameter INIT_RAM_0B = 288'h0; +parameter INIT_RAM_0C = 288'h0; +parameter INIT_RAM_0D = 288'h0; +parameter INIT_RAM_0E = 288'h0; +parameter INIT_RAM_0F = 288'h0; +parameter INIT_RAM_10 = 288'h0; +parameter INIT_RAM_11 = 288'h0; +parameter INIT_RAM_12 = 288'h0; +parameter INIT_RAM_13 = 288'h0; +parameter INIT_RAM_14 = 288'h0; +parameter INIT_RAM_15 = 288'h0; +parameter INIT_RAM_16 = 288'h0; +parameter INIT_RAM_17 = 288'h0; +parameter INIT_RAM_18 = 288'h0; +parameter INIT_RAM_19 = 288'h0; +parameter INIT_RAM_1A = 288'h0; +parameter INIT_RAM_1B = 288'h0; +parameter INIT_RAM_1C = 288'h0; +parameter INIT_RAM_1D = 288'h0; +parameter INIT_RAM_1E = 288'h0; +parameter INIT_RAM_1F = 288'h0; +parameter INIT_RAM_20 = 288'h0; +parameter INIT_RAM_21 = 288'h0; +parameter INIT_RAM_22 = 288'h0; +parameter INIT_RAM_23 = 288'h0; +parameter INIT_RAM_24 = 288'h0; +parameter INIT_RAM_25 = 288'h0; +parameter INIT_RAM_26 = 288'h0; +parameter INIT_RAM_27 = 288'h0; +parameter INIT_RAM_28 = 288'h0; +parameter INIT_RAM_29 = 288'h0; +parameter INIT_RAM_2A = 288'h0; +parameter INIT_RAM_2B = 288'h0; +parameter INIT_RAM_2C = 288'h0; +parameter INIT_RAM_2D = 288'h0; +parameter INIT_RAM_2E = 288'h0; +parameter INIT_RAM_2F = 288'h0; +parameter INIT_RAM_30 = 288'h0; +parameter INIT_RAM_31 = 288'h0; +parameter INIT_RAM_32 = 288'h0; +parameter INIT_RAM_33 = 288'h0; +parameter INIT_RAM_34 = 288'h0; +parameter INIT_RAM_35 = 288'h0; +parameter INIT_RAM_36 = 288'h0; +parameter INIT_RAM_37 = 288'h0; +parameter INIT_RAM_38 = 288'h0; +parameter INIT_RAM_39 = 288'h0; +parameter INIT_RAM_3A = 288'h0; +parameter INIT_RAM_3B = 288'h0; +parameter INIT_RAM_3C = 288'h0; +parameter INIT_RAM_3D = 288'h0; +parameter INIT_RAM_3E = 288'h0; +parameter INIT_RAM_3F = 288'h0; + +output [35:0] DO; +input [35:0] DI; +input [2:0] BLKSEL; +input [13:0] ADA, ADB; +input WREA, WREB; +input CLKA, CLKB; +input CEA, CEB; +input OCE; +input RESETA, RESETB; + +specify + (posedge CLKB => (DO : DI)) = (419, 493); + $setup(RESETA, posedge CLKA, 62); + $setup(RESETB, posedge CLKB, 62); + $setup(OCE, posedge CLKB, 62); + $setup(CEA, posedge CLKA, 62); + $setup(CEB, posedge CLKB, 62); + $setup(OCE, posedge CLKB, 62); + $setup(WREA, posedge CLKA, 62); + $setup(WREB, posedge CLKB, 62); + $setup(DI, posedge CLKA, 62); + $setup(ADA, posedge CLKA, 62); + $setup(ADB, posedge CLKB, 62); + $setup(BLKSEL, posedge CLKA, 62); +endspecify + +endmodule + + +(* blackbox *) +module DP (DOA, DOB, DIA, DIB, BLKSEL, ADA, ADB, WREA, WREB, CLKA, CLKB, CEA, CEB, OCEA, OCEB, RESETA, RESETB); + +parameter READ_MODE0 = 1'b0; +parameter READ_MODE1 = 1'b0; +parameter WRITE_MODE0 = 2'b00; +parameter WRITE_MODE1 = 2'b00; +parameter BIT_WIDTH_0 = 16; // 1, 2, 4, 8, 16 +parameter BIT_WIDTH_1 = 16; // 1, 2, 4, 8, 16 +parameter BLK_SEL = 3'b000; +parameter RESET_MODE = "SYNC"; +parameter INIT_RAM_00 = 256'h0; +parameter INIT_RAM_01 = 256'h0; +parameter INIT_RAM_02 = 256'h0; +parameter INIT_RAM_03 = 256'h0; +parameter INIT_RAM_04 = 256'h0; +parameter INIT_RAM_05 = 256'h0; +parameter INIT_RAM_06 = 256'h0; +parameter INIT_RAM_07 = 256'h0; +parameter INIT_RAM_08 = 256'h0; +parameter INIT_RAM_09 = 256'h0; +parameter INIT_RAM_0A = 256'h0; +parameter INIT_RAM_0B = 256'h0; +parameter INIT_RAM_0C = 256'h0; +parameter INIT_RAM_0D = 256'h0; +parameter INIT_RAM_0E = 256'h0; +parameter INIT_RAM_0F = 256'h0; +parameter INIT_RAM_10 = 256'h0; +parameter INIT_RAM_11 = 256'h0; +parameter INIT_RAM_12 = 256'h0; +parameter INIT_RAM_13 = 256'h0; +parameter INIT_RAM_14 = 256'h0; +parameter INIT_RAM_15 = 256'h0; +parameter INIT_RAM_16 = 256'h0; +parameter INIT_RAM_17 = 256'h0; +parameter INIT_RAM_18 = 256'h0; +parameter INIT_RAM_19 = 256'h0; +parameter INIT_RAM_1A = 256'h0; +parameter INIT_RAM_1B = 256'h0; +parameter INIT_RAM_1C = 256'h0; +parameter INIT_RAM_1D = 256'h0; +parameter INIT_RAM_1E = 256'h0; +parameter INIT_RAM_1F = 256'h0; +parameter INIT_RAM_20 = 256'h0; +parameter INIT_RAM_21 = 256'h0; +parameter INIT_RAM_22 = 256'h0; +parameter INIT_RAM_23 = 256'h0; +parameter INIT_RAM_24 = 256'h0; +parameter INIT_RAM_25 = 256'h0; +parameter INIT_RAM_26 = 256'h0; +parameter INIT_RAM_27 = 256'h0; +parameter INIT_RAM_28 = 256'h0; +parameter INIT_RAM_29 = 256'h0; +parameter INIT_RAM_2A = 256'h0; +parameter INIT_RAM_2B = 256'h0; +parameter INIT_RAM_2C = 256'h0; +parameter INIT_RAM_2D = 256'h0; +parameter INIT_RAM_2E = 256'h0; +parameter INIT_RAM_2F = 256'h0; +parameter INIT_RAM_30 = 256'h0; +parameter INIT_RAM_31 = 256'h0; +parameter INIT_RAM_32 = 256'h0; +parameter INIT_RAM_33 = 256'h0; +parameter INIT_RAM_34 = 256'h0; +parameter INIT_RAM_35 = 256'h0; +parameter INIT_RAM_36 = 256'h0; +parameter INIT_RAM_37 = 256'h0; +parameter INIT_RAM_38 = 256'h0; +parameter INIT_RAM_39 = 256'h0; +parameter INIT_RAM_3A = 256'h0; +parameter INIT_RAM_3B = 256'h0; +parameter INIT_RAM_3C = 256'h0; +parameter INIT_RAM_3D = 256'h0; +parameter INIT_RAM_3E = 256'h0; +parameter INIT_RAM_3F = 256'h0; + +output [15:0] DOA, DOB; +input [15:0] DIA, DIB; +input [2:0] BLKSEL; +input [13:0] ADA, ADB; +input WREA, WREB; +input CLKA, CLKB; +input CEA, CEB; +input OCEA, OCEB; +input RESETA, RESETB; + +endmodule + +(* blackbox *) +module DPX9 (DOA, DOB, DIA, DIB, BLKSEL, ADA, ADB, WREA, WREB, CLKA, CLKB, CEA, CEB, OCEA, OCEB, RESETA, RESETB); + +parameter READ_MODE0 = 1'b0; +parameter READ_MODE1 = 1'b0; +parameter WRITE_MODE0 = 2'b00; +parameter WRITE_MODE1 = 2'b00; +parameter BIT_WIDTH_0 = 18; // 9, 18 +parameter BIT_WIDTH_1 = 18; // 9, 18 +parameter BLK_SEL = 3'b000; +parameter RESET_MODE = "SYNC"; +parameter INIT_RAM_00 = 288'h0; +parameter INIT_RAM_01 = 288'h0; +parameter INIT_RAM_02 = 288'h0; +parameter INIT_RAM_03 = 288'h0; +parameter INIT_RAM_04 = 288'h0; +parameter INIT_RAM_05 = 288'h0; +parameter INIT_RAM_06 = 288'h0; +parameter INIT_RAM_07 = 288'h0; +parameter INIT_RAM_08 = 288'h0; +parameter INIT_RAM_09 = 288'h0; +parameter INIT_RAM_0A = 288'h0; +parameter INIT_RAM_0B = 288'h0; +parameter INIT_RAM_0C = 288'h0; +parameter INIT_RAM_0D = 288'h0; +parameter INIT_RAM_0E = 288'h0; +parameter INIT_RAM_0F = 288'h0; +parameter INIT_RAM_10 = 288'h0; +parameter INIT_RAM_11 = 288'h0; +parameter INIT_RAM_12 = 288'h0; +parameter INIT_RAM_13 = 288'h0; +parameter INIT_RAM_14 = 288'h0; +parameter INIT_RAM_15 = 288'h0; +parameter INIT_RAM_16 = 288'h0; +parameter INIT_RAM_17 = 288'h0; +parameter INIT_RAM_18 = 288'h0; +parameter INIT_RAM_19 = 288'h0; +parameter INIT_RAM_1A = 288'h0; +parameter INIT_RAM_1B = 288'h0; +parameter INIT_RAM_1C = 288'h0; +parameter INIT_RAM_1D = 288'h0; +parameter INIT_RAM_1E = 288'h0; +parameter INIT_RAM_1F = 288'h0; +parameter INIT_RAM_20 = 288'h0; +parameter INIT_RAM_21 = 288'h0; +parameter INIT_RAM_22 = 288'h0; +parameter INIT_RAM_23 = 288'h0; +parameter INIT_RAM_24 = 288'h0; +parameter INIT_RAM_25 = 288'h0; +parameter INIT_RAM_26 = 288'h0; +parameter INIT_RAM_27 = 288'h0; +parameter INIT_RAM_28 = 288'h0; +parameter INIT_RAM_29 = 288'h0; +parameter INIT_RAM_2A = 288'h0; +parameter INIT_RAM_2B = 288'h0; +parameter INIT_RAM_2C = 288'h0; +parameter INIT_RAM_2D = 288'h0; +parameter INIT_RAM_2E = 288'h0; +parameter INIT_RAM_2F = 288'h0; +parameter INIT_RAM_30 = 288'h0; +parameter INIT_RAM_31 = 288'h0; +parameter INIT_RAM_32 = 288'h0; +parameter INIT_RAM_33 = 288'h0; +parameter INIT_RAM_34 = 288'h0; +parameter INIT_RAM_35 = 288'h0; +parameter INIT_RAM_36 = 288'h0; +parameter INIT_RAM_37 = 288'h0; +parameter INIT_RAM_38 = 288'h0; +parameter INIT_RAM_39 = 288'h0; +parameter INIT_RAM_3A = 288'h0; +parameter INIT_RAM_3B = 288'h0; +parameter INIT_RAM_3C = 288'h0; +parameter INIT_RAM_3D = 288'h0; +parameter INIT_RAM_3E = 288'h0; +parameter INIT_RAM_3F = 288'h0; + +output [17:0] DOA, DOB; +input [17:0] DIA, DIB; +input [2:0] BLKSEL; +input [13:0] ADA, ADB; +input WREA, WREB; +input CLKA, CLKB; +input CEA, CEB; +input OCEA, OCEB; +input RESETA, RESETB; + +endmodule + + +(* blackbox *) +module rPLL (CLKOUT, CLKOUTP, CLKOUTD, CLKOUTD3, LOCK, CLKIN, CLKFB, FBDSEL, IDSEL, ODSEL, DUTYDA, PSDA, FDLY, RESET, RESET_P); +input CLKIN; +input CLKFB; +input RESET; +input RESET_P; +input [5:0] FBDSEL; +input [5:0] IDSEL; +input [5:0] ODSEL; +input [3:0] PSDA,FDLY; +input [3:0] DUTYDA; + +output CLKOUT; +output LOCK; +output CLKOUTP; +output CLKOUTD; +output CLKOUTD3; + +parameter FCLKIN = "100.0"; // frequency of CLKIN +parameter DYN_IDIV_SEL= "false"; // true:IDSEL, false:IDIV_SEL +parameter IDIV_SEL = 0; // 0:1, 1:2 ... 63:64 +parameter DYN_FBDIV_SEL= "false"; // true:FBDSEL, false:FBDIV_SEL +parameter FBDIV_SEL = 0; // 0:1, 1:2 ... 63:64 +parameter DYN_ODIV_SEL= "false"; // true:ODSEL, false:ODIV_SEL +parameter ODIV_SEL = 8; // 2/4/8/16/32/48/64/80/96/112/128 + +parameter PSDA_SEL= "0000"; +parameter DYN_DA_EN = "false"; // true:PSDA or DUTYDA or FDA, false: DA_SEL +parameter DUTYDA_SEL= "1000"; + +parameter CLKOUT_FT_DIR = 1'b1; // CLKOUT fine tuning direction. 1'b1 only +parameter CLKOUTP_FT_DIR = 1'b1; // 1'b1 only +parameter CLKOUT_DLY_STEP = 0; // 0, 1, 2, 4 +parameter CLKOUTP_DLY_STEP = 0; // 0, 1, 2 + +parameter CLKFB_SEL = "internal"; // "internal", "external" +parameter CLKOUT_BYPASS = "false"; // "true", "false" +parameter CLKOUTP_BYPASS = "false"; // "true", "false" +parameter CLKOUTD_BYPASS = "false"; // "true", "false" +parameter DYN_SDIV_SEL = 2; // 2~128, only even numbers +parameter CLKOUTD_SRC = "CLKOUT"; // CLKOUT, CLKOUTP +parameter CLKOUTD3_SRC = "CLKOUT"; // CLKOUT, CLKOUTP +parameter DEVICE = "GW1N-1"; // "GW1N-1", "GW1N-4", "GW1N-9", "GW1NR-4", "GW1NR-9", "GW1N-4B", "GW1NR-4B", "GW1NS-2", "GW1NS-2C", "GW1NZ-1", "GW1NSR-2", "GW1NSR-2C", "GW1N-1S", "GW1NSE-2C", "GW1NRF-4B", "GW1N-9C", "GW1NR-9C", "GW1N-4C", "GW1NR-4C" + +endmodule + +(* blackbox *) +module OSC(OSCOUT); +output OSCOUT; + +parameter FREQ_DIV = 100; +parameter DEVICE = "GW1N-4"; +endmodule + +(* blackbox *) +module OSCZ(OSCOUT, OSCEN); +input OSCEN; + +output OSCOUT; + +parameter FREQ_DIV = 100; +endmodule + +(* blackbox *) +module OSCF(OSCOUT, OSCOUT30M, OSCEN); +input OSCEN; + +output OSCOUT; +output OSCOUT30M; + +parameter FREQ_DIV = 100; +endmodule + +(* blackbox *) +module OSCH(OSCOUT); +output OSCOUT; + +parameter FREQ_DIV = 96; +endmodule diff --git a/resources/netlist/resources/kernel/share/gowin/lutrams.txt b/resources/netlist/resources/kernel/share/gowin/lutrams.txt new file mode 100644 index 0000000..76c4cd5 --- /dev/null +++ b/resources/netlist/resources/kernel/share/gowin/lutrams.txt @@ -0,0 +1,13 @@ +ram distributed $__GOWIN_LUTRAM_ { + abits 4; + width 4; + cost 4; + widthscale; + init no_undef; + prune_rom; + port sw "W" { + clock posedge; + } + port ar "R" { + } +} diff --git a/resources/netlist/resources/kernel/share/gowin/lutrams_map.v b/resources/netlist/resources/kernel/share/gowin/lutrams_map.v new file mode 100644 index 0000000..6396ef7 --- /dev/null +++ b/resources/netlist/resources/kernel/share/gowin/lutrams_map.v @@ -0,0 +1,65 @@ +module $__GOWIN_LUTRAM_(...); + +parameter INIT = 64'bx; +parameter BITS_USED = 0; + +input PORT_W_CLK; +input [3:0] PORT_W_ADDR; +input PORT_W_WR_EN; +input [3:0] PORT_W_WR_DATA; + +input [3:0] PORT_R_ADDR; +output [3:0] PORT_R_RD_DATA; + +function [15:0] init_slice; +input integer idx; +integer i; +for (i = 0; i < 16; i = i + 1) + init_slice[i] = INIT[4*i+idx]; +endfunction + +generate + +casez(BITS_USED) +4'b000z: +RAM16SDP1 #( + .INIT_0(init_slice(0)), +) _TECHMAP_REPLACE_ ( + .WAD(PORT_W_ADDR), + .RAD(PORT_R_ADDR), + .DI(PORT_W_WR_DATA[0]), + .DO(PORT_R_RD_DATA[0]), + .CLK(PORT_W_CLK), + .WRE(PORT_W_WR_EN) +); +4'b00zz: +RAM16SDP2 #( + .INIT_0(init_slice(0)), + .INIT_1(init_slice(1)), +) _TECHMAP_REPLACE_ ( + .WAD(PORT_W_ADDR), + .RAD(PORT_R_ADDR), + .DI(PORT_W_WR_DATA[1:0]), + .DO(PORT_R_RD_DATA[1:0]), + .CLK(PORT_W_CLK), + .WRE(PORT_W_WR_EN) +); +default: +RAM16SDP4 #( + .INIT_0(init_slice(0)), + .INIT_1(init_slice(1)), + .INIT_2(init_slice(2)), + .INIT_3(init_slice(3)), +) _TECHMAP_REPLACE_ ( + .WAD(PORT_W_ADDR), + .RAD(PORT_R_ADDR), + .DI(PORT_W_WR_DATA), + .DO(PORT_R_RD_DATA), + .CLK(PORT_W_CLK), + .WRE(PORT_W_WR_EN) +); +endcase + +endgenerate + +endmodule diff --git a/resources/netlist/resources/kernel/share/greenpak4/cells_blackbox.v b/resources/netlist/resources/kernel/share/greenpak4/cells_blackbox.v new file mode 100644 index 0000000..1895b90 --- /dev/null +++ b/resources/netlist/resources/kernel/share/greenpak4/cells_blackbox.v @@ -0,0 +1,18 @@ +module \$__COUNT_ (CE, CLK, OUT, POUT, RST, UP); + + input wire CE; + input wire CLK; + output reg OUT; + output reg[WIDTH-1:0] POUT; + input wire RST; + input wire UP; + + parameter COUNT_TO = 1; + parameter RESET_MODE = "RISING"; + parameter RESET_TO_MAX = "1"; + parameter HAS_POUT = 0; + parameter HAS_CE = 0; + parameter WIDTH = 8; + parameter DIRECTION = "DOWN"; + +endmodule diff --git a/resources/netlist/resources/kernel/share/greenpak4/cells_latch.v b/resources/netlist/resources/kernel/share/greenpak4/cells_latch.v new file mode 100644 index 0000000..2ccdd20 --- /dev/null +++ b/resources/netlist/resources/kernel/share/greenpak4/cells_latch.v @@ -0,0 +1,15 @@ +module $_DLATCH_P_(input E, input D, output Q); + GP_DLATCH _TECHMAP_REPLACE_ ( + .D(D), + .nCLK(!E), + .Q(Q) + ); +endmodule + +module $_DLATCH_N_(input E, input D, output Q); + GP_DLATCH _TECHMAP_REPLACE_ ( + .D(D), + .nCLK(E), + .Q(Q) + ); +endmodule diff --git a/resources/netlist/resources/kernel/share/greenpak4/cells_map.v b/resources/netlist/resources/kernel/share/greenpak4/cells_map.v new file mode 100644 index 0000000..316be3f --- /dev/null +++ b/resources/netlist/resources/kernel/share/greenpak4/cells_map.v @@ -0,0 +1,261 @@ +module GP_DFFS(input D, CLK, nSET, output reg Q); + parameter [0:0] INIT = 1'bx; + GP_DFFSR #( + .INIT(INIT), + .SRMODE(1'b1), + ) _TECHMAP_REPLACE_ ( + .D(D), + .CLK(CLK), + .nSR(nSET), + .Q(Q) + ); +endmodule + +module GP_DFFR(input D, CLK, nRST, output reg Q); + parameter [0:0] INIT = 1'bx; + GP_DFFSR #( + .INIT(INIT), + .SRMODE(1'b0), + ) _TECHMAP_REPLACE_ ( + .D(D), + .CLK(CLK), + .nSR(nRST), + .Q(Q) + ); +endmodule + +module GP_DFFSI(input D, CLK, nSET, output reg nQ); + parameter [0:0] INIT = 1'bx; + GP_DFFSRI #( + .INIT(INIT), + .SRMODE(1'b1), + ) _TECHMAP_REPLACE_ ( + .D(D), + .CLK(CLK), + .nSR(nSET), + .nQ(nQ) + ); +endmodule + +module GP_DFFRI(input D, CLK, nRST, output reg nQ); + parameter [0:0] INIT = 1'bx; + GP_DFFSRI #( + .INIT(INIT), + .SRMODE(1'b0), + ) _TECHMAP_REPLACE_ ( + .D(D), + .CLK(CLK), + .nSR(nRST), + .nQ(nQ) + ); +endmodule + +module GP_DLATCHS(input D, nCLK, nSET, output reg Q); + parameter [0:0] INIT = 1'bx; + GP_DLATCHSR #( + .INIT(INIT), + .SRMODE(1'b1), + ) _TECHMAP_REPLACE_ ( + .D(D), + .nCLK(nCLK), + .nSR(nSET), + .Q(Q) + ); +endmodule + +module GP_DLATCHR(input D, nCLK, nRST, output reg Q); + parameter [0:0] INIT = 1'bx; + GP_DLATCHSR #( + .INIT(INIT), + .SRMODE(1'b0), + ) _TECHMAP_REPLACE_ ( + .D(D), + .nCLK(nCLK), + .nSR(nRST), + .Q(Q) + ); +endmodule + +module GP_DLATCHSI(input D, nCLK, nSET, output reg nQ); + parameter [0:0] INIT = 1'bx; + GP_DLATCHSRI #( + .INIT(INIT), + .SRMODE(1'b1), + ) _TECHMAP_REPLACE_ ( + .D(D), + .nCLK(nCLK), + .nSR(nSET), + .nQ(nQ) + ); +endmodule + +module GP_DLATCHRI(input D, nCLK, nRST, output reg nQ); + parameter [0:0] INIT = 1'bx; + GP_DLATCHSRI #( + .INIT(INIT), + .SRMODE(1'b0), + ) _TECHMAP_REPLACE_ ( + .D(D), + .nCLK(nCLK), + .nSR(nRST), + .nQ(nQ) + ); +endmodule + +module GP_OBUFT(input IN, input OE, output OUT); + GP_IOBUF _TECHMAP_REPLACE_ ( + .IN(IN), + .OE(OE), + .IO(OUT), + .OUT() + ); +endmodule + +module \$lut (A, Y); + parameter WIDTH = 0; + parameter LUT = 0; + + (* force_downto *) + input [WIDTH-1:0] A; + output Y; + + generate + if (WIDTH == 1) begin + if(LUT == 2'b01) begin + GP_INV _TECHMAP_REPLACE_ (.OUT(Y), .IN(A[0]) ); + end + else begin + GP_2LUT #(.INIT({2'b00, LUT})) _TECHMAP_REPLACE_ (.OUT(Y), + .IN0(A[0]), .IN1(1'b0)); + end + end else + if (WIDTH == 2) begin + GP_2LUT #(.INIT(LUT)) _TECHMAP_REPLACE_ (.OUT(Y), + .IN0(A[0]), .IN1(A[1])); + end else + if (WIDTH == 3) begin + GP_3LUT #(.INIT(LUT)) _TECHMAP_REPLACE_ (.OUT(Y), + .IN0(A[0]), .IN1(A[1]), .IN2(A[2])); + end else + if (WIDTH == 4) begin + GP_4LUT #(.INIT(LUT)) _TECHMAP_REPLACE_ (.OUT(Y), + .IN0(A[0]), .IN1(A[1]), .IN2(A[2]), .IN3(A[3])); + end else begin + wire _TECHMAP_FAIL_ = 1; + end + endgenerate +endmodule + +module \$__COUNT_ (CE, CLK, OUT, POUT, RST, UP); + + input wire CE; + input wire CLK; + output reg OUT; + (* force_downto *) + output reg[WIDTH-1:0] POUT; + input wire RST; + input wire UP; + + parameter COUNT_TO = 1; + parameter RESET_MODE = "RISING"; + parameter RESET_TO_MAX = 0; + parameter HAS_POUT = 0; + parameter HAS_CE = 0; + parameter WIDTH = 8; + parameter DIRECTION = "DOWN"; + + //If we have a DIRECTION other than DOWN fail... GP_COUNTx_ADV is not supported yet + if(DIRECTION != "DOWN") begin + initial begin + $display("ERROR: \$__COUNT_ support for GP_COUNTx_ADV is not yet implemented. This counter should never have been extracted (bug in extract_counter pass?)."); + $finish; + end + end + + //If counter is more than 14 bits wide, complain (also shouldn't happen) + else if(WIDTH > 14) begin + initial begin + $display("ERROR: \$__COUNT_ support for cascaded counters is not yet implemented. This counter should never have been extracted (bug in extract_counter pass?)."); + $finish; + end + end + + //If counter is more than 8 bits wide and has parallel output, we have a problem + else if(WIDTH > 8 && HAS_POUT) begin + initial begin + $display("ERROR: \$__COUNT_ support for 9-14 bit counters with parallel output is not yet implemented. This counter should never have been extracted (bug in extract_counter pass?)."); + $finish; + end + end + + //Looks like a legal counter! Do something with it + else if(WIDTH <= 8) begin + if(HAS_CE) begin + wire ce_not; + GP_INV ceinv( + .IN(CE), + .OUT(ce_not) + ); + GP_COUNT8_ADV #( + .COUNT_TO(COUNT_TO), + .RESET_MODE(RESET_MODE), + .RESET_VALUE(RESET_TO_MAX ? "COUNT_TO" : "ZERO"), + .CLKIN_DIVIDE(1) + ) _TECHMAP_REPLACE_ ( + .CLK(CLK), + .RST(RST), + .OUT(OUT), + .UP(1'b0), //always count down for now + .KEEP(ce_not), + .POUT(POUT) + ); + end + else begin + GP_COUNT8 #( + .COUNT_TO(COUNT_TO), + .RESET_MODE(RESET_MODE), + .CLKIN_DIVIDE(1) + ) _TECHMAP_REPLACE_ ( + .CLK(CLK), + .RST(RST), + .OUT(OUT), + .POUT(POUT) + ); + end + end + + else begin + if(HAS_CE) begin + wire ce_not; + GP_INV ceinv( + .IN(CE), + .OUT(ce_not) + ); + GP_COUNT14_ADV #( + .COUNT_TO(COUNT_TO), + .RESET_MODE(RESET_TO_MAX ? "COUNT_TO" : "ZERO"), + .RESET_VALUE("COUNT_TO"), + .CLKIN_DIVIDE(1) + ) _TECHMAP_REPLACE_ ( + .CLK(CLK), + .RST(RST), + .OUT(OUT), + .UP(1'b0), //always count down for now + .KEEP(ce_not), + .POUT(POUT) + ); + end + else begin + GP_COUNT14 #( + .COUNT_TO(COUNT_TO), + .RESET_MODE(RESET_MODE), + .CLKIN_DIVIDE(1) + ) _TECHMAP_REPLACE_ ( + .CLK(CLK), + .RST(RST), + .OUT(OUT) + ); + end + end + +endmodule diff --git a/resources/netlist/resources/kernel/share/greenpak4/cells_sim.v b/resources/netlist/resources/kernel/share/greenpak4/cells_sim.v new file mode 100644 index 0000000..221bee6 --- /dev/null +++ b/resources/netlist/resources/kernel/share/greenpak4/cells_sim.v @@ -0,0 +1,5 @@ +`timescale 1ns/1ps + +`include "cells_sim_ams.v" +`include "cells_sim_digital.v" +`include "cells_sim_wip.v" diff --git a/resources/netlist/resources/kernel/share/greenpak4/cells_sim_ams.v b/resources/netlist/resources/kernel/share/greenpak4/cells_sim_ams.v new file mode 100644 index 0000000..7f8b3de --- /dev/null +++ b/resources/netlist/resources/kernel/share/greenpak4/cells_sim_ams.v @@ -0,0 +1,110 @@ +`timescale 1ns/1ps + +/* + This file contains analog / mixed signal cells, or other things that are not possible to fully model + in behavioral Verilog. + + It also contains some stuff like oscillators that use non-synthesizeable constructs such as delays. + TODO: do we want a third file for those cells? + */ + +module GP_ABUF(input wire IN, output wire OUT); + + assign OUT = IN; + + //must be 1, 5, 20, 50 + //values >1 only available with Vdd > 2.7V + parameter BANDWIDTH_KHZ = 1; + +endmodule + +module GP_ACMP(input wire PWREN, input wire VIN, input wire VREF, output reg OUT); + + parameter BANDWIDTH = "HIGH"; + parameter VIN_ATTEN = 1; + parameter VIN_ISRC_EN = 0; + parameter HYSTERESIS = 0; + + initial OUT = 0; + +endmodule + +module GP_BANDGAP(output reg OK); + parameter AUTO_PWRDN = 1; + parameter CHOPPER_EN = 1; + parameter OUT_DELAY = 100; + +endmodule + +module GP_DAC(input[7:0] DIN, input wire VREF, output reg VOUT); + + initial VOUT = 0; + + //analog hard IP is not supported for simulation + +endmodule + +module GP_LFOSC(input PWRDN, output reg CLKOUT); + + parameter PWRDN_EN = 0; + parameter AUTO_PWRDN = 0; + parameter OUT_DIV = 1; + + initial CLKOUT = 0; + + //auto powerdown not implemented for simulation + //output dividers not implemented for simulation + + always begin + if(PWRDN) + CLKOUT = 0; + else begin + //half period of 1730 Hz + #289017; + CLKOUT = ~CLKOUT; + end + end + +endmodule + +module GP_PGA(input wire VIN_P, input wire VIN_N, input wire VIN_SEL, output reg VOUT); + + parameter GAIN = 1; + parameter INPUT_MODE = "SINGLE"; + + initial VOUT = 0; + + //cannot simulate mixed signal IP + +endmodule + +module GP_PWRDET(output reg VDD_LOW); + initial VDD_LOW = 0; +endmodule + +module GP_VREF(input VIN, output reg VOUT); + parameter VIN_DIV = 1; + parameter VREF = 0; + //cannot simulate mixed signal IP +endmodule + +module GP_POR(output reg RST_DONE); + parameter POR_TIME = 500; + + initial begin + RST_DONE = 0; + + if(POR_TIME == 4) + #4000; + else if(POR_TIME == 500) + #500000; + else begin + $display("ERROR: bad POR_TIME for GP_POR cell"); + $finish; + end + + RST_DONE = 1; + + end + +endmodule diff --git a/resources/netlist/resources/kernel/share/greenpak4/cells_sim_digital.v b/resources/netlist/resources/kernel/share/greenpak4/cells_sim_digital.v new file mode 100644 index 0000000..43d35d0 --- /dev/null +++ b/resources/netlist/resources/kernel/share/greenpak4/cells_sim_digital.v @@ -0,0 +1,794 @@ +`timescale 1ns/1ps + +/* + This file contains simulation models for GreenPAK cells which are possible to fully model using synthesizeable + behavioral Verilog constructs only. + */ + +module GP_2LUT(input IN0, IN1, output OUT); + parameter [3:0] INIT = 0; + assign OUT = INIT[{IN1, IN0}]; +endmodule + +module GP_3LUT(input IN0, IN1, IN2, output OUT); + parameter [7:0] INIT = 0; + assign OUT = INIT[{IN2, IN1, IN0}]; +endmodule + +module GP_4LUT( + input wire IN0, + input wire IN1, + input wire IN2, + input wire IN3, + output wire OUT); + + parameter [15:0] INIT = 0; + assign OUT = INIT[{IN3, IN2, IN1, IN0}]; +endmodule + +module GP_CLKBUF(input wire IN, output wire OUT); + assign OUT = IN; +endmodule + +module GP_COUNT14(input CLK, input wire RST, output reg OUT); + + parameter RESET_MODE = "RISING"; + + parameter COUNT_TO = 14'h1; + parameter CLKIN_DIVIDE = 1; + + reg[13:0] count = COUNT_TO; + + initial begin + if(CLKIN_DIVIDE != 1) begin + $display("ERROR: CLKIN_DIVIDE values other than 1 not implemented"); + $finish; + end + end + + //Combinatorially output underflow flag whenever we wrap low + always @(*) begin + OUT <= (count == 14'h0); + end + + //POR or SYSRST reset value is COUNT_TO. Datasheet is unclear but conversations w/ Silego confirm. + //Runtime reset value is clearly 0 except in count/FSM cells where it's configurable but we leave at 0 for now. + generate + case(RESET_MODE) + + "RISING": begin + always @(posedge CLK, posedge RST) begin + if(RST) + count <= 0; + else begin + count <= count - 1'd1; + if(count == 0) + count <= COUNT_TO; + end + end + end + + "FALLING": begin + always @(posedge CLK, negedge RST) begin + if(!RST) + count <= 0; + else begin + count <= count - 1'd1; + if(count == 0) + count <= COUNT_TO; + end + end + end + + "BOTH": begin + initial begin + $display("Both-edge reset mode for GP_COUNT14 not implemented"); + $finish; + end + end + + "LEVEL": begin + always @(posedge CLK, posedge RST) begin + if(RST) + count <= 0; + + else begin + count <= count - 1'd1; + if(count == 0) + count <= COUNT_TO; + end + end + end + + default: begin + initial begin + $display("Invalid RESET_MODE on GP_COUNT14"); + $finish; + end + end + + endcase + endgenerate + +endmodule + +module GP_COUNT14_ADV(input CLK, input RST, output reg OUT, + input UP, input KEEP, output reg[7:0] POUT); + + parameter RESET_MODE = "RISING"; + parameter RESET_VALUE = "ZERO"; + + parameter COUNT_TO = 14'h1; + parameter CLKIN_DIVIDE = 1; + + initial begin + if(CLKIN_DIVIDE != 1) begin + $display("ERROR: CLKIN_DIVIDE values other than 1 not implemented"); + $finish; + end + end + + reg[13:0] count = COUNT_TO; + + //Combinatorially output underflow flag whenever we wrap low + always @(*) begin + if(UP) + OUT <= (count == 14'h3fff); + else + OUT <= (count == 14'h0); + POUT <= count[7:0]; + end + + //POR or SYSRST reset value is COUNT_TO. Datasheet is unclear but conversations w/ Silego confirm. + //Runtime reset value is clearly 0 except in count/FSM cells where it's configurable but we leave at 0 for now. + generate + case(RESET_MODE) + + "RISING": begin + always @(posedge CLK, posedge RST) begin + + //Resets + if(RST) begin + if(RESET_VALUE == "ZERO") + count <= 0; + else + count <= COUNT_TO; + end + + else if(KEEP) begin + end + else if(UP) begin + count <= count + 1'd1; + if(count == 14'h3fff) + count <= COUNT_TO; + end + else begin + count <= count - 1'd1; + + if(count == 0) + count <= COUNT_TO; + end + + end + end + + "FALLING": begin + always @(posedge CLK, negedge RST) begin + + //Resets + if(!RST) begin + if(RESET_VALUE == "ZERO") + count <= 0; + else + count <= COUNT_TO; + end + + else if(KEEP) begin + end + else if(UP) begin + count <= count + 1'd1; + if(count == 14'h3fff) + count <= COUNT_TO; + end + else begin + count <= count - 1'd1; + + if(count == 0) + count <= COUNT_TO; + end + + end + end + + "BOTH": begin + initial begin + $display("Both-edge reset mode for GP_COUNT14_ADV not implemented"); + $finish; + end + end + + "LEVEL": begin + always @(posedge CLK, posedge RST) begin + + //Resets + if(RST) begin + if(RESET_VALUE == "ZERO") + count <= 0; + else + count <= COUNT_TO; + end + + else begin + + if(KEEP) begin + end + else if(UP) begin + count <= count + 1'd1; + if(count == 14'h3fff) + count <= COUNT_TO; + end + else begin + count <= count - 1'd1; + + if(count == 0) + count <= COUNT_TO; + end + + end + + end + end + + default: begin + initial begin + $display("Invalid RESET_MODE on GP_COUNT14_ADV"); + $finish; + end + end + + endcase + endgenerate + +endmodule + +module GP_COUNT8_ADV(input CLK, input RST, output reg OUT, + input UP, input KEEP, output reg[7:0] POUT); + + parameter RESET_MODE = "RISING"; + parameter RESET_VALUE = "ZERO"; + + parameter COUNT_TO = 8'h1; + parameter CLKIN_DIVIDE = 1; + + reg[7:0] count = COUNT_TO; + + initial begin + if(CLKIN_DIVIDE != 1) begin + $display("ERROR: CLKIN_DIVIDE values other than 1 not implemented"); + $finish; + end + end + + //Combinatorially output underflow flag whenever we wrap low + always @(*) begin + if(UP) + OUT <= (count == 8'hff); + else + OUT <= (count == 8'h0); + POUT <= count; + end + + //POR or SYSRST reset value is COUNT_TO. Datasheet is unclear but conversations w/ Silego confirm. + //Runtime reset value is clearly 0 except in count/FSM cells where it's configurable but we leave at 0 for now. + generate + case(RESET_MODE) + + "RISING": begin + always @(posedge CLK, posedge RST) begin + + //Resets + if(RST) begin + if(RESET_VALUE == "ZERO") + count <= 0; + else + count <= COUNT_TO; + end + + //Main counter + else if(KEEP) begin + end + else if(UP) begin + count <= count + 1'd1; + if(count == 8'hff) + count <= COUNT_TO; + end + else begin + count <= count - 1'd1; + + if(count == 0) + count <= COUNT_TO; + end + + end + end + + "FALLING": begin + always @(posedge CLK, negedge RST) begin + + //Resets + if(!RST) begin + if(RESET_VALUE == "ZERO") + count <= 0; + else + count <= COUNT_TO; + end + + //Main counter + else if(KEEP) begin + end + else if(UP) begin + count <= count + 1'd1; + if(count == 8'hff) + count <= COUNT_TO; + end + else begin + count <= count - 1'd1; + + if(count == 0) + count <= COUNT_TO; + end + + end + end + + "BOTH": begin + initial begin + $display("Both-edge reset mode for GP_COUNT8_ADV not implemented"); + $finish; + end + end + + "LEVEL": begin + always @(posedge CLK, posedge RST) begin + + //Resets + if(RST) begin + if(RESET_VALUE == "ZERO") + count <= 0; + else + count <= COUNT_TO; + end + + else begin + + if(KEEP) begin + end + else if(UP) begin + count <= count + 1'd1; + if(count == 8'hff) + count <= COUNT_TO; + end + else begin + count <= count - 1'd1; + + if(count == 0) + count <= COUNT_TO; + end + end + + end + end + + default: begin + initial begin + $display("Invalid RESET_MODE on GP_COUNT8_ADV"); + $finish; + end + end + + endcase + endgenerate + +endmodule + +module GP_COUNT8( + input wire CLK, + input wire RST, + output reg OUT, + output reg[7:0] POUT); + + parameter RESET_MODE = "RISING"; + + parameter COUNT_TO = 8'h1; + parameter CLKIN_DIVIDE = 1; + + initial begin + if(CLKIN_DIVIDE != 1) begin + $display("ERROR: CLKIN_DIVIDE values other than 1 not implemented"); + $finish; + end + end + + reg[7:0] count = COUNT_TO; + + //Combinatorially output underflow flag whenever we wrap low + always @(*) begin + OUT <= (count == 8'h0); + POUT <= count; + end + + //POR or SYSRST reset value is COUNT_TO. Datasheet is unclear but conversations w/ Silego confirm. + //Runtime reset value is clearly 0 except in count/FSM cells where it's configurable but we leave at 0 for now. + generate + case(RESET_MODE) + + "RISING": begin + always @(posedge CLK, posedge RST) begin + if(RST) + count <= 0; + else begin + count <= count - 1'd1; + if(count == 0) + count <= COUNT_TO; + end + end + end + + "FALLING": begin + always @(posedge CLK, negedge RST) begin + if(!RST) + count <= 0; + else begin + count <= count - 1'd1; + if(count == 0) + count <= COUNT_TO; + end + end + end + + "BOTH": begin + initial begin + $display("Both-edge reset mode for GP_COUNT8 not implemented"); + $finish; + end + end + + "LEVEL": begin + always @(posedge CLK, posedge RST) begin + if(RST) + count <= 0; + + else begin + count <= count - 1'd1; + if(count == 0) + count <= COUNT_TO; + end + end + end + + default: begin + initial begin + $display("Invalid RESET_MODE on GP_COUNT8"); + $finish; + end + end + + endcase + endgenerate + +endmodule + +module GP_DCMPREF(output reg[7:0]OUT); + parameter[7:0] REF_VAL = 8'h00; + initial OUT = REF_VAL; +endmodule + +module GP_DCMPMUX(input[1:0] SEL, input[7:0] IN0, input[7:0] IN1, input[7:0] IN2, input[7:0] IN3, output reg[7:0] OUTA, output reg[7:0] OUTB); + + always @(*) begin + case(SEL) + 2'd00: begin + OUTA <= IN0; + OUTB <= IN3; + end + + 2'd01: begin + OUTA <= IN1; + OUTB <= IN2; + end + + 2'd02: begin + OUTA <= IN2; + OUTB <= IN1; + end + + 2'd03: begin + OUTA <= IN3; + OUTB <= IN0; + end + + endcase + end +endmodule + +module GP_DELAY(input IN, output reg OUT); + + parameter DELAY_STEPS = 1; + parameter GLITCH_FILTER = 0; + + initial OUT = 0; + + generate + + if(GLITCH_FILTER) begin + initial begin + $display("ERROR: GP_DELAY glitch filter mode not implemented"); + $finish; + end + end + + //TODO: These delays are PTV dependent! For now, hard code 3v3 timing + //Change simulation-mode delay depending on global Vdd range (how to specify this?) + always @(*) begin + case(DELAY_STEPS) + 1: #166 OUT = IN; + 2: #318 OUT = IN; + 2: #471 OUT = IN; + 3: #622 OUT = IN; + default: begin + $display("ERROR: GP_DELAY must have DELAY_STEPS in range [1,4]"); + $finish; + end + endcase + end + + endgenerate + +endmodule + +module GP_DFF(input D, CLK, output reg Q); + parameter [0:0] INIT = 1'bx; + initial Q = INIT; + always @(posedge CLK) begin + Q <= D; + end +endmodule + +module GP_DFFI(input D, CLK, output reg nQ); + parameter [0:0] INIT = 1'bx; + initial nQ = INIT; + always @(posedge CLK) begin + nQ <= ~D; + end +endmodule + +module GP_DFFR(input D, CLK, nRST, output reg Q); + parameter [0:0] INIT = 1'bx; + initial Q = INIT; + always @(posedge CLK, negedge nRST) begin + if (!nRST) + Q <= 1'b0; + else + Q <= D; + end +endmodule + +module GP_DFFRI(input D, CLK, nRST, output reg nQ); + parameter [0:0] INIT = 1'bx; + initial nQ = INIT; + always @(posedge CLK, negedge nRST) begin + if (!nRST) + nQ <= 1'b1; + else + nQ <= ~D; + end +endmodule + +module GP_DFFS(input D, CLK, nSET, output reg Q); + parameter [0:0] INIT = 1'bx; + initial Q = INIT; + always @(posedge CLK, negedge nSET) begin + if (!nSET) + Q <= 1'b1; + else + Q <= D; + end +endmodule + +module GP_DFFSI(input D, CLK, nSET, output reg nQ); + parameter [0:0] INIT = 1'bx; + initial nQ = INIT; + always @(posedge CLK, negedge nSET) begin + if (!nSET) + nQ <= 1'b0; + else + nQ <= ~D; + end +endmodule + +module GP_DFFSR(input D, CLK, nSR, output reg Q); + parameter [0:0] INIT = 1'bx; + parameter [0:0] SRMODE = 1'bx; + initial Q = INIT; + always @(posedge CLK, negedge nSR) begin + if (!nSR) + Q <= SRMODE; + else + Q <= D; + end +endmodule + +module GP_DFFSRI(input D, CLK, nSR, output reg nQ); + parameter [0:0] INIT = 1'bx; + parameter [0:0] SRMODE = 1'bx; + initial nQ = INIT; + always @(posedge CLK, negedge nSR) begin + if (!nSR) + nQ <= ~SRMODE; + else + nQ <= ~D; + end +endmodule + +module GP_DLATCH(input D, input nCLK, output reg Q); + parameter [0:0] INIT = 1'bx; + initial Q = INIT; + always @(*) begin + if(!nCLK) + Q <= D; + end +endmodule + +module GP_DLATCHI(input D, input nCLK, output reg nQ); + parameter [0:0] INIT = 1'bx; + initial nQ = INIT; + always @(*) begin + if(!nCLK) + nQ <= ~D; + end +endmodule + +module GP_DLATCHR(input D, input nCLK, input nRST, output reg Q); + parameter [0:0] INIT = 1'bx; + initial Q = INIT; + always @(*) begin + if(!nRST) + Q <= 1'b0; + else if(!nCLK) + Q <= D; + end +endmodule + +module GP_DLATCHRI(input D, input nCLK, input nRST, output reg nQ); + parameter [0:0] INIT = 1'bx; + initial nQ = INIT; + always @(*) begin + if(!nRST) + nQ <= 1'b1; + else if(!nCLK) + nQ <= ~D; + end +endmodule + +module GP_DLATCHS(input D, input nCLK, input nSET, output reg Q); + parameter [0:0] INIT = 1'bx; + initial Q = INIT; + always @(*) begin + if(!nSET) + Q <= 1'b1; + else if(!nCLK) + Q <= D; + end +endmodule + +module GP_DLATCHSI(input D, input nCLK, input nSET, output reg nQ); + parameter [0:0] INIT = 1'bx; + initial nQ = INIT; + always @(*) begin + if(!nSET) + nQ <= 1'b0; + else if(!nCLK) + nQ <= ~D; + end +endmodule + +module GP_DLATCHSR(input D, input nCLK, input nSR, output reg Q); + parameter [0:0] INIT = 1'bx; + parameter[0:0] SRMODE = 1'bx; + initial Q = INIT; + always @(*) begin + if(!nSR) + Q <= SRMODE; + else if(!nCLK) + Q <= D; + end +endmodule + +module GP_DLATCHSRI(input D, input nCLK, input nSR, output reg nQ); + parameter [0:0] INIT = 1'bx; + parameter[0:0] SRMODE = 1'bx; + initial nQ = INIT; + always @(*) begin + if(!nSR) + nQ <= ~SRMODE; + else if(!nCLK) + nQ <= ~D; + end +endmodule + +module GP_IBUF(input IN, output OUT); + assign OUT = IN; +endmodule + +module GP_IOBUF(input IN, input OE, output OUT, inout IO); + assign OUT = IO; + assign IO = OE ? IN : 1'bz; +endmodule + +module GP_INV(input IN, output OUT); + assign OUT = ~IN; +endmodule + +module GP_OBUF(input IN, output OUT); + assign OUT = IN; +endmodule + +module GP_OBUFT(input IN, input OE, output OUT); + assign OUT = OE ? IN : 1'bz; +endmodule + +module GP_PGEN(input wire nRST, input wire CLK, output reg OUT); + initial OUT = 0; + parameter PATTERN_DATA = 16'h0; + parameter PATTERN_LEN = 5'd16; + + localparam COUNT_MAX = PATTERN_LEN - 1'h1; + + reg[3:0] count = 0; + always @(posedge CLK, negedge nRST) begin + + if(!nRST) + count <= 0; + + else begin + count <= count - 1'h1; + if(count == 0) + count <= COUNT_MAX; + end + end + + always @(*) + OUT = PATTERN_DATA[count]; + +endmodule + +module GP_SHREG(input nRST, input CLK, input IN, output OUTA, output OUTB); + + parameter OUTA_TAP = 1; + parameter OUTA_INVERT = 0; + parameter OUTB_TAP = 1; + + reg[15:0] shreg = 0; + + always @(posedge CLK, negedge nRST) begin + + if(!nRST) + shreg = 0; + + else + shreg <= {shreg[14:0], IN}; + + end + + assign OUTA = (OUTA_INVERT) ? ~shreg[OUTA_TAP - 1] : shreg[OUTA_TAP - 1]; + assign OUTB = shreg[OUTB_TAP - 1]; + +endmodule + +module GP_VDD(output OUT); + assign OUT = 1; +endmodule + +module GP_VSS(output OUT); + assign OUT = 0; +endmodule diff --git a/resources/netlist/resources/kernel/share/greenpak4/cells_sim_wip.v b/resources/netlist/resources/kernel/share/greenpak4/cells_sim_wip.v new file mode 100644 index 0000000..5261b12 --- /dev/null +++ b/resources/netlist/resources/kernel/share/greenpak4/cells_sim_wip.v @@ -0,0 +1,136 @@ + +//Cells still in this file have INCOMPLETE simulation models, need to finish them + +module GP_DCMP(input[7:0] INP, input[7:0] INN, input CLK, input PWRDN, output reg GREATER, output reg EQUAL); + parameter PWRDN_SYNC = 1'b0; + parameter CLK_EDGE = "RISING"; + parameter GREATER_OR_EQUAL = 1'b0; + + //TODO implement power-down mode + + initial GREATER = 0; + initial EQUAL = 0; + + wire clk_minv = (CLK_EDGE == "RISING") ? CLK : ~CLK; + always @(posedge clk_minv) begin + if(GREATER_OR_EQUAL) + GREATER <= (INP >= INN); + else + GREATER <= (INP > INN); + + EQUAL <= (INP == INN); + end + +endmodule + +module GP_EDGEDET(input IN, output reg OUT); + + parameter EDGE_DIRECTION = "RISING"; + parameter DELAY_STEPS = 1; + parameter GLITCH_FILTER = 0; + + //not implemented for simulation + +endmodule + +module GP_RCOSC(input PWRDN, output reg CLKOUT_HARDIP, output reg CLKOUT_FABRIC); + + parameter PWRDN_EN = 0; + parameter AUTO_PWRDN = 0; + parameter HARDIP_DIV = 1; + parameter FABRIC_DIV = 1; + parameter OSC_FREQ = "25k"; + + initial CLKOUT_HARDIP = 0; + initial CLKOUT_FABRIC = 0; + + //output dividers not implemented for simulation + //auto powerdown not implemented for simulation + + always begin + if(PWRDN) begin + CLKOUT_HARDIP = 0; + CLKOUT_FABRIC = 0; + end + else begin + + if(OSC_FREQ == "25k") begin + //half period of 25 kHz + #20000; + end + + else begin + //half period of 2 MHz + #250; + end + + CLKOUT_HARDIP = ~CLKOUT_HARDIP; + CLKOUT_FABRIC = ~CLKOUT_FABRIC; + end + end + +endmodule + +module GP_RINGOSC(input PWRDN, output reg CLKOUT_HARDIP, output reg CLKOUT_FABRIC); + + parameter PWRDN_EN = 0; + parameter AUTO_PWRDN = 0; + parameter HARDIP_DIV = 1; + parameter FABRIC_DIV = 1; + + initial CLKOUT_HARDIP = 0; + initial CLKOUT_FABRIC = 0; + + //output dividers not implemented for simulation + //auto powerdown not implemented for simulation + + always begin + if(PWRDN) begin + CLKOUT_HARDIP = 0; + CLKOUT_FABRIC = 0; + end + else begin + //half period of 27 MHz + #18.518; + CLKOUT_HARDIP = ~CLKOUT_HARDIP; + CLKOUT_FABRIC = ~CLKOUT_FABRIC; + end + end + +endmodule + +module GP_SPI( + input SCK, + inout SDAT, + input CSN, + input[7:0] TXD_HIGH, + input[7:0] TXD_LOW, + output reg[7:0] RXD_HIGH, + output reg[7:0] RXD_LOW, + output reg INT); + + initial RXD_HIGH = 0; + initial RXD_LOW = 0; + initial INT = 0; + + parameter DATA_WIDTH = 8; //byte or word width + parameter SPI_CPHA = 0; //SPI clock phase + parameter SPI_CPOL = 0; //SPI clock polarity + parameter DIRECTION = "INPUT"; //SPI data direction (either input to chip or output to host) + //parallel output to fabric not yet implemented + + //TODO: write sim model + //TODO: SPI SDIO control... can we use ADC output while SPI is input?? + //TODO: clock sync + +endmodule + +//keep constraint needed to prevent optimization since we have no outputs +(* keep *) +module GP_SYSRESET(input RST); + parameter RESET_MODE = "EDGE"; + parameter EDGE_SPEED = 4; + + //cannot simulate whole system reset + +endmodule diff --git a/resources/netlist/resources/kernel/share/greenpak4/gp_dff.lib b/resources/netlist/resources/kernel/share/greenpak4/gp_dff.lib new file mode 100644 index 0000000..b4b8c10 --- /dev/null +++ b/resources/netlist/resources/kernel/share/greenpak4/gp_dff.lib @@ -0,0 +1,36 @@ +library(gp_dff) { + cell(GP_DFF) { + area: 1; + ff("IQ", "IQN") { clocked_on: CLK; + next_state: D; } + pin(CLK) { direction: input; + clock: true; } + pin(D) { direction: input; } + pin(Q) { direction: output; + function: "IQ"; } + } + cell(GP_DFFS) { + area: 1; + ff("IQ", "IQN") { clocked_on: CLK; + next_state: D; + preset: "nSET'"; } + pin(CLK) { direction: input; + clock: true; } + pin(D) { direction: input; } + pin(Q) { direction: output; + function: "IQ"; } + pin(nSET) { direction: input; } + } + cell(GP_DFFR) { + area: 1; + ff("IQ", "IQN") { clocked_on: CLK; + next_state: D; + clear: "nRST'"; } + pin(CLK) { direction: input; + clock: true; } + pin(D) { direction: input; } + pin(Q) { direction: output; + function: "IQ"; } + pin(nRST) { direction: input; } + } +} diff --git a/resources/netlist/resources/kernel/share/ice40/abc9_model.v b/resources/netlist/resources/kernel/share/ice40/abc9_model.v new file mode 100644 index 0000000..3e3ca94 --- /dev/null +++ b/resources/netlist/resources/kernel/share/ice40/abc9_model.v @@ -0,0 +1,86 @@ +(* abc9_box, lib_whitebox *) +module \$__ICE40_CARRY_WRAPPER ( + (* abc9_carry *) + output CO, + output O, + input A, B, + (* abc9_carry *) + input CI, + input I0, I3 +); + parameter LUT = 0; + parameter I3_IS_CI = 0; + wire I3_OR_CI = I3_IS_CI ? CI : I3; + SB_CARRY carry ( + .I0(A), + .I1(B), + .CI(CI), + .CO(CO) + ); + SB_LUT4 #( + .LUT_INIT(LUT) + ) adder ( + .I0(I0), + .I1(A), + .I2(B), + .I3(I3_OR_CI), + .O(O) + ); +`ifdef ICE40_HX + specify + // https://github.com/YosysHQ/icestorm/blob/be0bca0230d6fe1102e0a360b953fbb0d273a39f/icefuzz/timings_hx1k.txt#L79 + (CI => CO) = (126, 105); + // https://github.com/YosysHQ/icestorm/blob/be0bca0230d6fe1102e0a360b953fbb0d273a39f/icefuzz/timings_hx1k.txt#L80 + (I0 => O) = (449, 386); + // https://github.com/YosysHQ/icestorm/blob/be0bca0230d6fe1102e0a360b953fbb0d273a39f/icefuzz/timings_hx1k.txt#L82 + (A => CO) = (259, 245); + // https://github.com/YosysHQ/icestorm/blob/be0bca0230d6fe1102e0a360b953fbb0d273a39f/icefuzz/timings_hx1k.txt#L83 + (A => O) = (400, 379); + // https://github.com/YosysHQ/icestorm/blob/be0bca0230d6fe1102e0a360b953fbb0d273a39f/icefuzz/timings_hx1k.txt#L85 + (B => CO) = (231, 133); + // https://github.com/YosysHQ/icestorm/blob/be0bca0230d6fe1102e0a360b953fbb0d273a39f/icefuzz/timings_hx1k.txt#L86 + (B => O) = (379, 351); + // https://github.com/YosysHQ/icestorm/blob/be0bca0230d6fe1102e0a360b953fbb0d273a39f/icefuzz/timings_hx1k.txt#L88 + (I3 => O) = (316, 288); + (CI => O) = (316, 288); + endspecify +`endif +`ifdef ICE40_LP + specify + // https://github.com/YosysHQ/icestorm/blob/be0bca0230d6fe1102e0a360b953fbb0d273a39f/icefuzz/timings_lp1k.txt#L79 + (CI => CO) = (186, 155); + // https://github.com/YosysHQ/icestorm/blob/be0bca0230d6fe1102e0a360b953fbb0d273a39f/icefuzz/timings_lp1k.txt#L80 + (I0 => O) = (662, 569); + // https://github.com/YosysHQ/icestorm/blob/be0bca0230d6fe1102e0a360b953fbb0d273a39f/icefuzz/timings_lp1k.txt#L82 + (A => CO) = (382, 362); + // https://github.com/YosysHQ/icestorm/blob/be0bca0230d6fe1102e0a360b953fbb0d273a39f/icefuzz/timings_lp1k.txt#L83 + (A => O) = (589, 558); + // https://github.com/YosysHQ/icestorm/blob/be0bca0230d6fe1102e0a360b953fbb0d273a39f/icefuzz/timings_lp1k.txt#L85 + (B => CO) = (341, 196); + // https://github.com/YosysHQ/icestorm/blob/be0bca0230d6fe1102e0a360b953fbb0d273a39f/icefuzz/timings_lp1k.txt#L86 + (B => O) = (558, 517); + // https://github.com/YosysHQ/icestorm/blob/be0bca0230d6fe1102e0a360b953fbb0d273a39f/icefuzz/timings_lp1k.txt#L88 + (I3 => O) = (465, 423); + (CI => O) = (465, 423); + endspecify +`endif +`ifdef ICE40_U + specify + // https://github.com/YosysHQ/icestorm/blob/be0bca0230d6fe1102e0a360b953fbb0d273a39f/icefuzz/timings_up5k.txt#L91 + (CI => CO) = (278, 278); + // https://github.com/YosysHQ/icestorm/blob/be0bca0230d6fe1102e0a360b953fbb0d273a39f/icefuzz/timings_up5k.txt#L92 + (I0 => O) = (1245, 1285); + // https://github.com/YosysHQ/icestorm/blob/be0bca0230d6fe1102e0a360b953fbb0d273a39f/icefuzz/timings_up5k.txt#L94 + (A => CO) = (675, 662); + // https://github.com/YosysHQ/icestorm/blob/be0bca0230d6fe1102e0a360b953fbb0d273a39f/icefuzz/timings_up5k.txt#L95 + (A => O) = (1179, 1232); + // https://github.com/YosysHQ/icestorm/blob/be0bca0230d6fe1102e0a360b953fbb0d273a39f/icefuzz/timings_up5k.txt#L97 + (B => CO) = (609, 358); + // https://github.com/YosysHQ/icestorm/blob/be0bca0230d6fe1102e0a360b953fbb0d273a39f/icefuzz/timings_up5k.txt#L98 + (B => O) = (1179, 1205); + // https://github.com/YosysHQ/icestorm/blob/be0bca0230d6fe1102e0a360b953fbb0d273a39f/icefuzz/timings_up5k.txt#L100 + (I3 => O) = (861, 874); + (CI => O) = (861, 874); + endspecify +`endif +endmodule diff --git a/resources/netlist/resources/kernel/share/ice40/arith_map.v b/resources/netlist/resources/kernel/share/ice40/arith_map.v new file mode 100644 index 0000000..087220e --- /dev/null +++ b/resources/netlist/resources/kernel/share/ice40/arith_map.v @@ -0,0 +1,75 @@ +/* + * yosys -- Yosys Open SYnthesis Suite + * + * Copyright (C) 2012 Claire Xenia Wolf + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + */ + +(* techmap_celltype = "$alu" *) +module _80_ice40_alu (A, B, CI, BI, X, Y, CO); + parameter A_SIGNED = 0; + parameter B_SIGNED = 0; + parameter A_WIDTH = 1; + parameter B_WIDTH = 1; + parameter Y_WIDTH = 1; + + (* force_downto *) + input [A_WIDTH-1:0] A; + (* force_downto *) + input [B_WIDTH-1:0] B; + (* force_downto *) + output [Y_WIDTH-1:0] X, Y; + + input CI, BI; + (* force_downto *) + output [Y_WIDTH-1:0] CO; + + wire _TECHMAP_FAIL_ = Y_WIDTH <= 2; + + (* force_downto *) + wire [Y_WIDTH-1:0] A_buf, B_buf; + \$pos #(.A_SIGNED(A_SIGNED), .A_WIDTH(A_WIDTH), .Y_WIDTH(Y_WIDTH)) A_conv (.A(A), .Y(A_buf)); + \$pos #(.A_SIGNED(B_SIGNED), .A_WIDTH(B_WIDTH), .Y_WIDTH(Y_WIDTH)) B_conv (.A(B), .Y(B_buf)); + + (* force_downto *) + wire [Y_WIDTH-1:0] AA = A_buf; + (* force_downto *) + wire [Y_WIDTH-1:0] BB = BI ? ~B_buf : B_buf; + (* force_downto *) + wire [Y_WIDTH-1:0] C = {CO, CI}; + + genvar i; + generate for (i = 0; i < Y_WIDTH; i = i + 1) begin:slice + \$__ICE40_CARRY_WRAPPER #( + // A[0]: 1010 1010 1010 1010 + // A[1]: 1100 1100 1100 1100 + // A[2]: 1111 0000 1111 0000 + // A[3]: 1111 1111 0000 0000 + .LUT(16'b 0110_1001_1001_0110), + .I3_IS_CI(1'b1) + ) carry ( + .A(AA[i]), + .B(BB[i]), + .CI(C[i]), + .I0(1'b0), + .I3(1'bx), + .CO(CO[i]), + .O(Y[i]) + ); + end endgenerate + + assign X = AA ^ BB; +endmodule + diff --git a/resources/netlist/resources/kernel/share/ice40/brams.txt b/resources/netlist/resources/kernel/share/ice40/brams.txt new file mode 100644 index 0000000..518972c --- /dev/null +++ b/resources/netlist/resources/kernel/share/ice40/brams.txt @@ -0,0 +1,23 @@ +ram block $__ICE40_RAM4K_ { + abits 11; + widths 2 4 8 16 per_port; + cost 64; + option "HAS_BE" 1 { + byte 1; + } + init any; + port sw "W" { + option "HAS_BE" 0 { + width 2 4 8; + } + option "HAS_BE" 1 { + width 16; + wrbe_separate; + } + clock anyedge; + } + port sr "R" { + clock anyedge; + rden; + } +} diff --git a/resources/netlist/resources/kernel/share/ice40/brams_map.v b/resources/netlist/resources/kernel/share/ice40/brams_map.v new file mode 100644 index 0000000..9d7b793 --- /dev/null +++ b/resources/netlist/resources/kernel/share/ice40/brams_map.v @@ -0,0 +1,218 @@ +module $__ICE40_RAM4K_ (...); + +parameter INIT = 0; +parameter OPTION_HAS_BE = 1; +parameter PORT_R_WIDTH = 16; +parameter PORT_W_WIDTH = 16; +parameter PORT_W_WR_BE_WIDTH = 16; +parameter PORT_R_CLK_POL = 1; +parameter PORT_W_CLK_POL = 1; + +input PORT_R_CLK; +input PORT_R_RD_EN; +input [10:0] PORT_R_ADDR; +output [PORT_R_WIDTH-1:0] PORT_R_RD_DATA; + +input PORT_W_CLK; +input PORT_W_WR_EN; +input [15:0] PORT_W_WR_BE; +input [10:0] PORT_W_ADDR; +input [PORT_W_WIDTH-1:0] PORT_W_WR_DATA; + +wire [15:0] RDATA; +wire [15:0] WDATA; +wire [15:0] MASK; +wire [10:0] RADDR = {PORT_R_ADDR[0], PORT_R_ADDR[1], PORT_R_ADDR[2], PORT_R_ADDR[10:3]}; +wire [10:0] WADDR = {PORT_W_ADDR[0], PORT_W_ADDR[1], PORT_W_ADDR[2], PORT_W_ADDR[10:3]}; + +function [1:0] mode; + input integer width; + case (width) + 16: mode = 0; + 8: mode = 1; + 4: mode = 2; + 2: mode = 3; + endcase +endfunction + +function [255:0] slice_init; + input [3:0] idx; + integer i; + reg [7:0] ri; + reg [11:0] a; + for (i = 0; i < 256; i = i + 1) begin + ri = i; + a = {idx, ri[7:4], ri[0], ri[1], ri[2], ri[3]}; + slice_init[i] = INIT[a]; + end +endfunction + +`define INSTANCE(type, rclk, wclk) \ + type #( \ + .INIT_0(slice_init(0)), \ + .INIT_1(slice_init(1)), \ + .INIT_2(slice_init(2)), \ + .INIT_3(slice_init(3)), \ + .INIT_4(slice_init(4)), \ + .INIT_5(slice_init(5)), \ + .INIT_6(slice_init(6)), \ + .INIT_7(slice_init(7)), \ + .INIT_8(slice_init(8)), \ + .INIT_9(slice_init(9)), \ + .INIT_A(slice_init(10)), \ + .INIT_B(slice_init(11)), \ + .INIT_C(slice_init(12)), \ + .INIT_D(slice_init(13)), \ + .INIT_E(slice_init(14)), \ + .INIT_F(slice_init(15)), \ + .READ_MODE(mode(PORT_R_WIDTH)), \ + .WRITE_MODE(mode(PORT_W_WIDTH)) \ + ) _TECHMAP_REPLACE_ ( \ + .RDATA(RDATA), \ + .rclk(PORT_R_CLK), \ + .RCLKE(PORT_R_RD_EN), \ + .RE(1'b1), \ + .RADDR(RADDR), \ + .WDATA(WDATA), \ + .wclk(PORT_W_CLK), \ + .WCLKE(PORT_W_WR_EN), \ + .WE(1'b1), \ + .WADDR(WADDR), \ + .MASK(MASK), \ + ); + +generate + +case(PORT_R_WIDTH) + 2: begin + assign PORT_R_RD_DATA = { + RDATA[11], + RDATA[3] + }; + end + 4: begin + assign PORT_R_RD_DATA = { + RDATA[13], + RDATA[5], + RDATA[9], + RDATA[1] + }; + end + 8: begin + assign PORT_R_RD_DATA = { + RDATA[14], + RDATA[6], + RDATA[10], + RDATA[2], + RDATA[12], + RDATA[4], + RDATA[8], + RDATA[0] + }; + end + 16: begin + assign PORT_R_RD_DATA = { + RDATA[15], + RDATA[7], + RDATA[11], + RDATA[3], + RDATA[13], + RDATA[5], + RDATA[9], + RDATA[1], + RDATA[14], + RDATA[6], + RDATA[10], + RDATA[2], + RDATA[12], + RDATA[4], + RDATA[8], + RDATA[0] + }; + end +endcase + +case(PORT_W_WIDTH) + 2: begin + assign { + WDATA[11], + WDATA[3] + } = PORT_W_WR_DATA; + end + 4: begin + assign { + WDATA[13], + WDATA[5], + WDATA[9], + WDATA[1] + } = PORT_W_WR_DATA; + end + 8: begin + assign { + WDATA[14], + WDATA[6], + WDATA[10], + WDATA[2], + WDATA[12], + WDATA[4], + WDATA[8], + WDATA[0] + } = PORT_W_WR_DATA; + end + 16: begin + assign WDATA = { + PORT_W_WR_DATA[15], + PORT_W_WR_DATA[7], + PORT_W_WR_DATA[11], + PORT_W_WR_DATA[3], + PORT_W_WR_DATA[13], + PORT_W_WR_DATA[5], + PORT_W_WR_DATA[9], + PORT_W_WR_DATA[1], + PORT_W_WR_DATA[14], + PORT_W_WR_DATA[6], + PORT_W_WR_DATA[10], + PORT_W_WR_DATA[2], + PORT_W_WR_DATA[12], + PORT_W_WR_DATA[4], + PORT_W_WR_DATA[8], + PORT_W_WR_DATA[0] + }; + assign MASK = ~{ + PORT_W_WR_BE[15], + PORT_W_WR_BE[7], + PORT_W_WR_BE[11], + PORT_W_WR_BE[3], + PORT_W_WR_BE[13], + PORT_W_WR_BE[5], + PORT_W_WR_BE[9], + PORT_W_WR_BE[1], + PORT_W_WR_BE[14], + PORT_W_WR_BE[6], + PORT_W_WR_BE[10], + PORT_W_WR_BE[2], + PORT_W_WR_BE[12], + PORT_W_WR_BE[4], + PORT_W_WR_BE[8], + PORT_W_WR_BE[0] + }; + end +endcase + +if (PORT_R_CLK_POL) begin + if (PORT_W_CLK_POL) begin + `INSTANCE(SB_RAM40_4K, RCLK, WCLK) + end else begin + `INSTANCE(SB_RAM40_4KNW, RCLK, WCLKN) + end +end else begin + if (PORT_W_CLK_POL) begin + `INSTANCE(SB_RAM40_4KNR, RCLKN, WCLK) + end else begin + `INSTANCE(SB_RAM40_4KNRNW, RCLKN, WCLKN) + end +end + +endgenerate + +endmodule diff --git a/resources/netlist/resources/kernel/share/ice40/cells_map.v b/resources/netlist/resources/kernel/share/ice40/cells_map.v new file mode 100644 index 0000000..7e5c078 --- /dev/null +++ b/resources/netlist/resources/kernel/share/ice40/cells_map.v @@ -0,0 +1,32 @@ +module \$lut (A, Y); + parameter WIDTH = 0; + parameter LUT = 0; + + (* force_downto *) + input [WIDTH-1:0] A; + output Y; + + generate + if (WIDTH == 1) begin + localparam [15:0] INIT = {{8{LUT[1]}}, {8{LUT[0]}}}; + SB_LUT4 #(.LUT_INIT(INIT)) _TECHMAP_REPLACE_ (.O(Y), + .I0(1'b0), .I1(1'b0), .I2(1'b0), .I3(A[0])); + end else + if (WIDTH == 2) begin + localparam [15:0] INIT = {{4{LUT[3]}}, {4{LUT[2]}}, {4{LUT[1]}}, {4{LUT[0]}}}; + SB_LUT4 #(.LUT_INIT(INIT)) _TECHMAP_REPLACE_ (.O(Y), + .I0(1'b0), .I1(1'b0), .I2(A[0]), .I3(A[1])); + end else + if (WIDTH == 3) begin + localparam [15:0] INIT = {{2{LUT[7]}}, {2{LUT[6]}}, {2{LUT[5]}}, {2{LUT[4]}}, {2{LUT[3]}}, {2{LUT[2]}}, {2{LUT[1]}}, {2{LUT[0]}}}; + SB_LUT4 #(.LUT_INIT(INIT)) _TECHMAP_REPLACE_ (.O(Y), + .I0(1'b0), .I1(A[0]), .I2(A[1]), .I3(A[2])); + end else + if (WIDTH == 4) begin + SB_LUT4 #(.LUT_INIT(LUT)) _TECHMAP_REPLACE_ (.O(Y), + .I0(A[0]), .I1(A[1]), .I2(A[2]), .I3(A[3])); + end else begin + wire _TECHMAP_FAIL_ = 1; + end + endgenerate +endmodule diff --git a/resources/netlist/resources/kernel/share/ice40/cells_sim.v b/resources/netlist/resources/kernel/share/ice40/cells_sim.v new file mode 100644 index 0000000..52e8e2e --- /dev/null +++ b/resources/netlist/resources/kernel/share/ice40/cells_sim.v @@ -0,0 +1,3502 @@ +`timescale 1ps / 1ps +`define SB_DFF_INIT initial Q = 0; +// `define SB_DFF_INIT + +`ifndef NO_ICE40_DEFAULT_ASSIGNMENTS +`define ICE40_DEFAULT_ASSIGNMENT_V(v) = v +`define ICE40_DEFAULT_ASSIGNMENT_0 = 1'b0 +`define ICE40_DEFAULT_ASSIGNMENT_1 = 1'b1 +`else +`define ICE40_DEFAULT_ASSIGNMENT_V(v) +`define ICE40_DEFAULT_ASSIGNMENT_0 +`define ICE40_DEFAULT_ASSIGNMENT_1 +`endif + +// SiliconBlue IO Cells + +module SB_IO ( + inout PACKAGE_PIN, + input LATCH_INPUT_VALUE, + input CLOCK_ENABLE `ICE40_DEFAULT_ASSIGNMENT_1, + input INPUT_CLK, + input OUTPUT_CLK, + input OUTPUT_ENABLE, + input D_OUT_0, + input D_OUT_1, + output D_IN_0, + output D_IN_1 +); + parameter [5:0] PIN_TYPE = 6'b000000; + parameter [0:0] PULLUP = 1'b0; + parameter [0:0] NEG_TRIGGER = 1'b0; + parameter IO_STANDARD = "SB_LVCMOS"; + +`ifndef BLACKBOX + reg dout, din_0, din_1; + reg din_q_0, din_q_1; + reg dout_q_0, dout_q_1; + reg outena_q; + + // IO tile generates a constant 1'b1 internally if global_cen is not connected + wire clken_pulled = CLOCK_ENABLE || CLOCK_ENABLE === 1'bz; + reg clken_pulled_ri; + reg clken_pulled_ro; + + generate if (!NEG_TRIGGER) begin + always @(posedge INPUT_CLK) clken_pulled_ri <= clken_pulled; + always @(posedge INPUT_CLK) if (clken_pulled) din_q_0 <= PACKAGE_PIN; + always @(negedge INPUT_CLK) if (clken_pulled_ri) din_q_1 <= PACKAGE_PIN; + always @(posedge OUTPUT_CLK) clken_pulled_ro <= clken_pulled; + always @(posedge OUTPUT_CLK) if (clken_pulled) dout_q_0 <= D_OUT_0; + always @(negedge OUTPUT_CLK) if (clken_pulled_ro) dout_q_1 <= D_OUT_1; + always @(posedge OUTPUT_CLK) if (clken_pulled) outena_q <= OUTPUT_ENABLE; + end else begin + always @(negedge INPUT_CLK) clken_pulled_ri <= clken_pulled; + always @(negedge INPUT_CLK) if (clken_pulled) din_q_0 <= PACKAGE_PIN; + always @(posedge INPUT_CLK) if (clken_pulled_ri) din_q_1 <= PACKAGE_PIN; + always @(negedge OUTPUT_CLK) clken_pulled_ro <= clken_pulled; + always @(negedge OUTPUT_CLK) if (clken_pulled) dout_q_0 <= D_OUT_0; + always @(posedge OUTPUT_CLK) if (clken_pulled_ro) dout_q_1 <= D_OUT_1; + always @(negedge OUTPUT_CLK) if (clken_pulled) outena_q <= OUTPUT_ENABLE; + end endgenerate + + always @* begin + if (!PIN_TYPE[1] || !LATCH_INPUT_VALUE) + din_0 = PIN_TYPE[0] ? PACKAGE_PIN : din_q_0; + din_1 = din_q_1; + end + + // work around simulation glitches on dout in DDR mode + reg outclk_delayed_1; + reg outclk_delayed_2; + always @* outclk_delayed_1 <= OUTPUT_CLK; + always @* outclk_delayed_2 <= outclk_delayed_1; + + always @* begin + if (PIN_TYPE[3]) + dout = PIN_TYPE[2] ? !dout_q_0 : D_OUT_0; + else + dout = (outclk_delayed_2 ^ NEG_TRIGGER) || PIN_TYPE[2] ? dout_q_0 : dout_q_1; + end + + assign D_IN_0 = din_0, D_IN_1 = din_1; + + generate + if (PIN_TYPE[5:4] == 2'b01) assign PACKAGE_PIN = dout; + if (PIN_TYPE[5:4] == 2'b10) assign PACKAGE_PIN = OUTPUT_ENABLE ? dout : 1'bz; + if (PIN_TYPE[5:4] == 2'b11) assign PACKAGE_PIN = outena_q ? dout : 1'bz; + endgenerate +`endif +`ifdef TIMING +specify + (INPUT_CLK => D_IN_0) = (0:0:0, 0:0:0); + (INPUT_CLK => D_IN_1) = (0:0:0, 0:0:0); + (PACKAGE_PIN => D_IN_0) = (0:0:0, 0:0:0); + (OUTPUT_CLK => PACKAGE_PIN) = (0:0:0, 0:0:0); + (D_OUT_0 => PACKAGE_PIN) = (0:0:0, 0:0:0); + (OUTPUT_ENABLE => PACKAGE_PIN) = (0:0:0, 0:0:0); + + $setuphold(posedge OUTPUT_CLK, posedge D_OUT_0, 0:0:0, 0:0:0); + $setuphold(posedge OUTPUT_CLK, negedge D_OUT_0, 0:0:0, 0:0:0); + $setuphold(negedge OUTPUT_CLK, posedge D_OUT_1, 0:0:0, 0:0:0); + $setuphold(negedge OUTPUT_CLK, negedge D_OUT_1, 0:0:0, 0:0:0); + $setuphold(negedge OUTPUT_CLK, posedge D_OUT_0, 0:0:0, 0:0:0); + $setuphold(negedge OUTPUT_CLK, negedge D_OUT_0, 0:0:0, 0:0:0); + $setuphold(posedge OUTPUT_CLK, posedge D_OUT_1, 0:0:0, 0:0:0); + $setuphold(posedge OUTPUT_CLK, negedge D_OUT_1, 0:0:0, 0:0:0); + $setuphold(posedge INPUT_CLK, posedge CLOCK_ENABLE, 0:0:0, 0:0:0); + $setuphold(posedge INPUT_CLK, negedge CLOCK_ENABLE, 0:0:0, 0:0:0); + $setuphold(posedge OUTPUT_CLK, posedge CLOCK_ENABLE, 0:0:0, 0:0:0); + $setuphold(posedge OUTPUT_CLK, negedge CLOCK_ENABLE, 0:0:0, 0:0:0); + $setuphold(posedge INPUT_CLK, posedge PACKAGE_PIN, 0:0:0, 0:0:0); + $setuphold(posedge INPUT_CLK, negedge PACKAGE_PIN, 0:0:0, 0:0:0); + $setuphold(negedge INPUT_CLK, posedge PACKAGE_PIN, 0:0:0, 0:0:0); + $setuphold(negedge INPUT_CLK, negedge PACKAGE_PIN, 0:0:0, 0:0:0); + $setuphold(posedge OUTPUT_CLK, posedge OUTPUT_ENABLE, 0:0:0, 0:0:0); + $setuphold(posedge OUTPUT_CLK, negedge OUTPUT_ENABLE, 0:0:0, 0:0:0); + $setuphold(negedge OUTPUT_CLK, posedge OUTPUT_ENABLE, 0:0:0, 0:0:0); + $setuphold(negedge OUTPUT_CLK, negedge OUTPUT_ENABLE, 0:0:0, 0:0:0); +endspecify +`endif +endmodule + +module SB_GB_IO ( + inout PACKAGE_PIN, + output GLOBAL_BUFFER_OUTPUT, + input LATCH_INPUT_VALUE, + input CLOCK_ENABLE `ICE40_DEFAULT_ASSIGNMENT_1, + input INPUT_CLK, + input OUTPUT_CLK, + input OUTPUT_ENABLE, + input D_OUT_0, + input D_OUT_1, + output D_IN_0, + output D_IN_1 +); + parameter [5:0] PIN_TYPE = 6'b000000; + parameter [0:0] PULLUP = 1'b0; + parameter [0:0] NEG_TRIGGER = 1'b0; + parameter IO_STANDARD = "SB_LVCMOS"; + + assign GLOBAL_BUFFER_OUTPUT = PACKAGE_PIN; + + SB_IO #( + .PIN_TYPE(PIN_TYPE), + .PULLUP(PULLUP), + .NEG_TRIGGER(NEG_TRIGGER), + .IO_STANDARD(IO_STANDARD) + ) IO ( + .PACKAGE_PIN(PACKAGE_PIN), + .LATCH_INPUT_VALUE(LATCH_INPUT_VALUE), + .CLOCK_ENABLE(CLOCK_ENABLE), + .INPUT_CLK(INPUT_CLK), + .OUTPUT_CLK(OUTPUT_CLK), + .OUTPUT_ENABLE(OUTPUT_ENABLE), + .D_OUT_0(D_OUT_0), + .D_OUT_1(D_OUT_1), + .D_IN_0(D_IN_0), + .D_IN_1(D_IN_1) + ); +endmodule + +module SB_GB ( + input USER_SIGNAL_TO_GLOBAL_BUFFER, + output GLOBAL_BUFFER_OUTPUT +); + assign GLOBAL_BUFFER_OUTPUT = USER_SIGNAL_TO_GLOBAL_BUFFER; +`ifdef TIMING +specify + (USER_SIGNAL_TO_GLOBAL_BUFFER => GLOBAL_BUFFER_OUTPUT) = (0:0:0, 0:0:0); +endspecify +`endif +endmodule + +// SiliconBlue Logic Cells + +(* abc9_lut=1, lib_whitebox *) +module SB_LUT4 ( + output O, + input I0 `ICE40_DEFAULT_ASSIGNMENT_0, + input I1 `ICE40_DEFAULT_ASSIGNMENT_0, + input I2 `ICE40_DEFAULT_ASSIGNMENT_0, + input I3 `ICE40_DEFAULT_ASSIGNMENT_0 +); + parameter [15:0] LUT_INIT = 0; + wire [7:0] s3 = I3 ? LUT_INIT[15:8] : LUT_INIT[7:0]; + wire [3:0] s2 = I2 ? s3[ 7:4] : s3[3:0]; + wire [1:0] s1 = I1 ? s2[ 3:2] : s2[1:0]; + assign O = I0 ? s1[1] : s1[0]; +`ifdef ICE40_HX + specify + // https://github.com/YosysHQ/icestorm/blob/be0bca0230d6fe1102e0a360b953fbb0d273a39f/icefuzz/timings_hx1k.txt#L80 + (I0 => O) = (449, 386); + // https://github.com/YosysHQ/icestorm/blob/be0bca0230d6fe1102e0a360b953fbb0d273a39f/icefuzz/timings_hx1k.txt#L83 + (I1 => O) = (400, 379); + // https://github.com/YosysHQ/icestorm/blob/be0bca0230d6fe1102e0a360b953fbb0d273a39f/icefuzz/timings_hx1k.txt#L86 + (I2 => O) = (379, 351); + // https://github.com/YosysHQ/icestorm/blob/be0bca0230d6fe1102e0a360b953fbb0d273a39f/icefuzz/timings_hx1k.txt#L88 + (I3 => O) = (316, 288); + endspecify +`endif +`ifdef ICE40_LP + specify + // https://github.com/YosysHQ/icestorm/blob/be0bca0230d6fe1102e0a360b953fbb0d273a39f/icefuzz/timings_lp1k.txt#L80 + (I0 => O) = (662, 569); + // https://github.com/YosysHQ/icestorm/blob/be0bca0230d6fe1102e0a360b953fbb0d273a39f/icefuzz/timings_lp1k.txt#L83 + (I1 => O) = (589, 558); + // https://github.com/YosysHQ/icestorm/blob/be0bca0230d6fe1102e0a360b953fbb0d273a39f/icefuzz/timings_lp1k.txt#L86 + (I2 => O) = (558, 517); + // https://github.com/YosysHQ/icestorm/blob/be0bca0230d6fe1102e0a360b953fbb0d273a39f/icefuzz/timings_lp1k.txt#L88 + (I3 => O) = (465, 423); + endspecify +`endif +`ifdef ICE40_U + specify + // https://github.com/YosysHQ/icestorm/blob/be0bca0230d6fe1102e0a360b953fbb0d273a39f/icefuzz/timings_up5k.txt#L92 + (I0 => O) = (1245, 1285); + // https://github.com/YosysHQ/icestorm/blob/be0bca0230d6fe1102e0a360b953fbb0d273a39f/icefuzz/timings_up5k.txt#L95 + (I1 => O) = (1179, 1232); + // https://github.com/YosysHQ/icestorm/blob/be0bca0230d6fe1102e0a360b953fbb0d273a39f/icefuzz/timings_up5k.txt#L98 + (I2 => O) = (1179, 1205); + // https://github.com/YosysHQ/icestorm/blob/be0bca0230d6fe1102e0a360b953fbb0d273a39f/icefuzz/timings_up5k.txt#L100 + (I3 => O) = (861, 874); + endspecify +`endif +endmodule + +(* lib_whitebox *) +module SB_CARRY (output CO, input I0, I1, CI); + assign CO = (I0 && I1) || ((I0 || I1) && CI); +`ifdef ICE40_HX + specify + // https://github.com/YosysHQ/icestorm/blob/be0bca0230d6fe1102e0a360b953fbb0d273a39f/icefuzz/timings_hx1k.txt#L79 + (CI => CO) = (126, 105); + // https://github.com/YosysHQ/icestorm/blob/be0bca0230d6fe1102e0a360b953fbb0d273a39f/icefuzz/timings_hx1k.txt#L82 + (I0 => CO) = (259, 245); + // https://github.com/YosysHQ/icestorm/blob/be0bca0230d6fe1102e0a360b953fbb0d273a39f/icefuzz/timings_hx1k.txt#L85 + (I1 => CO) = (231, 133); + endspecify +`endif +`ifdef ICE40_LP + specify + // https://github.com/YosysHQ/icestorm/blob/be0bca0230d6fe1102e0a360b953fbb0d273a39f/icefuzz/timings_lp1k.txt#L79 + (CI => CO) = (186, 155); + // https://github.com/YosysHQ/icestorm/blob/be0bca0230d6fe1102e0a360b953fbb0d273a39f/icefuzz/timings_lp1k.txt#L82 + (I0 => CO) = (382, 362); + // https://github.com/YosysHQ/icestorm/blob/be0bca0230d6fe1102e0a360b953fbb0d273a39f/icefuzz/timings_lp1k.txt#L85 + (I1 => CO) = (341, 196); + endspecify +`endif +`ifdef ICE40_U + specify + // https://github.com/YosysHQ/icestorm/blob/be0bca0230d6fe1102e0a360b953fbb0d273a39f/icefuzz/timings_up5k.txt#L91 + (CI => CO) = (278, 278); + // https://github.com/YosysHQ/icestorm/blob/be0bca0230d6fe1102e0a360b953fbb0d273a39f/icefuzz/timings_up5k.txt#L94 + (I0 => CO) = (675, 662); + // https://github.com/YosysHQ/icestorm/blob/be0bca0230d6fe1102e0a360b953fbb0d273a39f/icefuzz/timings_up5k.txt#L97 + (I1 => CO) = (609, 358); + endspecify +`endif +endmodule + +// Positive Edge SiliconBlue FF Cells + +(* abc9_flop, lib_whitebox *) +module SB_DFF ( + output reg Q, + input C, D +); + `SB_DFF_INIT + + always @(posedge C) + Q <= D; +`ifdef ICE40_HX + specify + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L74 + // minus https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L80 + $setup(D, posedge C, 470 - 449); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L90 + (posedge C => (Q : D)) = 540; + endspecify +`endif +`ifdef ICE40_LP + specify + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L74 + // minus https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L80 + $setup(D, posedge C, 693 - 662); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L90 + (posedge C => (Q : D)) = 796; + endspecify +`endif +`ifdef ICE40_U + specify + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L86 + // minus https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L80 + $setup(D, posedge C, /*1232 - 1285*/ 0); // Negative times not currently supported + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L102 + (posedge C => (Q : D)) = 1391; + endspecify +`endif +endmodule + +(* abc9_flop, lib_whitebox *) +module SB_DFFE ( + output reg Q, + input C, + input E `ICE40_DEFAULT_ASSIGNMENT_1, + input D +); + `SB_DFF_INIT + + always @(posedge C) + if (E) + Q <= D; +`ifdef ICE40_HX + specify + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L74 + // minus https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L80 + $setup(D, posedge C &&& E, 470 - 449); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L73 + $setup(E, posedge C, 0); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L90 + if (E) (posedge C => (Q : D)) = 540; + endspecify +`endif +`ifdef ICE40_LP + specify + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L74 + // minus https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L80 + $setup(D, posedge C &&& E, 693 - 662); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L73 + $setup(E, posedge C, 0); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L90 + if (E) (posedge C => (Q : D)) = 796; + endspecify +`endif +`ifdef ICE40_U + specify + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L86 + // minus https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L80 + $setup(D, posedge C &&& E, /*1232 - 1285*/ 0); // Negative times not currently supported + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L86 + $setup(E, posedge C, 0); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L102 + if (E) (posedge C => (Q : D)) = 1391; + endspecify +`endif +endmodule + +(* abc9_flop, lib_whitebox *) +module SB_DFFSR ( + output reg Q, + input C, R, D +); + `SB_DFF_INIT + + always @(posedge C) + if (R) + Q <= 0; + else + Q <= D; +`ifdef ICE40_HX + specify + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L74 + // minus https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L80 + $setup(D, posedge C, 470 - 449); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L78 + $setup(R, posedge C, 203); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L90 + if ( R) (posedge C => (Q : 1'b0)) = 540; + if (!R) (posedge C => (Q : D)) = 540; + endspecify +`endif +`ifdef ICE40_LP + specify + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L74 + // minus https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L80 + $setup(D, posedge C, 693 - 662); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L78 + $setup(R, posedge C, 299); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L90 + if ( R) (posedge C => (Q : 1'b0)) = 796; + if (!R) (posedge C => (Q : D)) = 796; + endspecify +`endif +`ifdef ICE40_U + specify + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L86 + // minus https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L80 + $setup(D, posedge C, /*1232 - 1285*/ 0); // Negative times not currently supported + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L90 + $setup(R, posedge C, 530); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L102 + if ( R) (posedge C => (Q : 1'b0)) = 1391; + if (!R) (posedge C => (Q : D)) = 1391; + endspecify +`endif +endmodule + +(* abc9_box, lib_whitebox *) +module SB_DFFR ( + output reg Q, + input C, R, D +); + `SB_DFF_INIT + + always @(posedge C, posedge R) + if (R) + Q <= 0; + else + Q <= D; +`ifdef ICE40_HX + specify + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L74 + // minus https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L80 + $setup(D, posedge C, 470 - 449); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L63 + $setup(negedge R, posedge C, 160); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L91 +`ifndef YOSYS + (posedge R => (Q : 1'b0)) = 599; +`else + if (R) (R => Q) = 599; // Technically, this should be an edge sensitive path + // but for facilitating a bypass box, let's pretend it's + // a simple path +`endif + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L90 + if (!R) (posedge C => (Q : D)) = 540; + endspecify +`endif +`ifdef ICE40_LP + specify + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L74 + // minus https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L80 + $setup(D, posedge C, 693 - 662); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L63 + $setup(negedge R, posedge C, 235); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L91 +`ifndef YOSYS + (posedge R => (Q : 1'b0)) = 883; +`else + if (R) (R => Q) = 883; // Technically, this should be an edge sensitive path + // but for facilitating a bypass box, let's pretend it's + // a simple path +`endif + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L90 + if (!R) (posedge C => (Q : D)) = 796; + endspecify +`endif +`ifdef ICE40_U + specify + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L86 + // minus https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L80 + $setup(D, posedge C, /*1232 - 1285*/ 0); // Negative times not currently supported + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L75 + $setup(negedge R, posedge C, 424); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L103 +`ifndef YOSYS + (posedge R => (Q : 1'b0)) = 1589; +`else + if (R) (R => Q) = 1589; // Technically, this should be an edge sensitive path + // but for facilitating a bypass box, let's pretend it's + // a simple path +`endif + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L102 + if (!R) (posedge C => (Q : D)) = 1391; + endspecify +`endif +endmodule + +(* abc9_flop, lib_whitebox *) +module SB_DFFSS ( + output reg Q, + input C, S, D +); + `SB_DFF_INIT + + always @(posedge C) + if (S) + Q <= 1; + else + Q <= D; +`ifdef ICE40_HX + specify + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L74 + // minus https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L80 + $setup(D, posedge C, 470 - 449); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L78 + $setup(S, posedge C, 203); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L90 + if ( S) (posedge C => (Q : 1'b1)) = 540; + if (!S) (posedge C => (Q : D)) = 540; + endspecify +`endif +`ifdef ICE40_LP + specify + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L74 + // minus https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L80 + $setup(D, posedge C, 693 - 662); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L78 + $setup(S, posedge C, 299); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L90 + if ( S) (posedge C => (Q : 1'b1)) = 796; + if (!S) (posedge C => (Q : D)) = 796; + endspecify +`endif +`ifdef ICE40_U + specify + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L86 + // minus https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L80 + $setup(D, posedge C, /*1232 - 1285*/ 0); // Negative times not currently supported + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L90 + $setup(S, posedge C, 530); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L102 + if ( S) (posedge C => (Q : 1'b1)) = 1391; + if (!S) (posedge C => (Q : D)) = 1391; + endspecify +`endif +endmodule + +(* abc9_box, lib_whitebox *) +module SB_DFFS ( + output reg Q, + input C, S, D +); + `SB_DFF_INIT + + always @(posedge C, posedge S) + if (S) + Q <= 1; + else + Q <= D; +`ifdef ICE40_HX + specify + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L74 + // minus https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L80 + $setup(D, posedge C, 470 - 449); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L63 + $setup(negedge S, posedge C, 160); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L91 +`ifndef YOSYS + (posedge S => (Q : 1'b1)) = 599; +`else + if (S) (S => Q) = 599; // Technically, this should be an edge sensitive path + // but for facilitating a bypass box, let's pretend it's + // a simple path +`endif + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L90 + if (!S) (posedge C => (Q : D)) = 540; + endspecify +`endif +`ifdef ICE40_LP + specify + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L74 + // minus https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L80 + $setup(D, posedge C, 693 - 662); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L63 + $setup(negedge S, posedge C, 235); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L91 +`ifndef YOSYS + (posedge S => (Q : 1'b1)) = 883; +`else + if (S) (S => Q) = 883; // Technically, this should be an edge sensitive path + // but for facilitating a bypass box, let's pretend it's + // a simple path +`endif + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L90 + if (!S) (posedge C => (Q : D)) = 796; + endspecify +`endif +`ifdef ICE40_U + specify + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L86 + // minus https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L80 + $setup(D, posedge C, /*1232 - 1285*/ 0); // Negative times not currently supported + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L75 + $setup(negedge S, posedge C, 424); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L103 +`ifndef YOSYS + (posedge S => (Q : 1'b1)) = 1589; +`else + if (S) (S => Q) = 1589; // Technically, this should be an edge sensitive path + // but for facilitating a bypass box, let's pretend it's + // a simple path +`endif + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L102 + if (!S) (posedge C => (Q : D)) = 1391; + endspecify +`endif +endmodule + +(* abc9_flop, lib_whitebox *) +module SB_DFFESR ( + output reg Q, + input C, + input E `ICE40_DEFAULT_ASSIGNMENT_1, + input R, + input D +); + `SB_DFF_INIT + + always @(posedge C) + if (E) begin + if (R) + Q <= 0; + else + Q <= D; + end +`ifdef ICE40_HX + specify + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L74 + // minus https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L80 + $setup(D, posedge C &&& E && !R, 470 - 449); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L73 + $setup(E, posedge C, 0); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L78 + $setup(R, posedge C &&& E, 203); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L90 + if (E && R) (posedge C => (Q : 1'b0)) = 540; + if (E && !R) (posedge C => (Q : D)) = 540; + endspecify +`endif +`ifdef ICE40_LP + specify + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L74 + // minus https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L80 + $setup(D, posedge C &&& E && !R, 693 - 662); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L73 + $setup(E, posedge C, 0); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L78 + $setup(R, posedge C &&& E, 299); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L90 + if (E && R) (posedge C => (Q : 1'b0)) = 796; + if (E && !R) (posedge C => (Q : D)) = 796; + endspecify +`endif +`ifdef ICE40_U + specify + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L86 + // minus https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L80 + $setup(D, posedge C &&& E, /*1232 - 1285*/ 0); // Negative times not currently supported + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L86 + $setup(E, posedge C, 0); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L90 + $setup(R, posedge C &&& E, 530); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L102 + if (E && R) (posedge C => (Q : 1'b0)) = 1391; + if (E && !R) (posedge C => (Q : D)) = 1391; + endspecify +`endif +endmodule + +(* abc9_box, lib_whitebox *) +module SB_DFFER ( + output reg Q, + input C, + input E `ICE40_DEFAULT_ASSIGNMENT_1, + input R, + input D +); + `SB_DFF_INIT + + always @(posedge C, posedge R) + if (R) + Q <= 0; + else if (E) + Q <= D; +`ifdef ICE40_HX + specify + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L74 + // minus https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L80 + $setup(D, posedge C &&& E, 470 - 449); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L73 + $setup(E, posedge C, 0); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L63 + $setup(negedge R, posedge C, 160); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L91 +`ifndef YOSYS + (posedge R => (Q : 1'b0)) = 599; +`else + if (R) (R => Q) = 599; // Technically, this should be an edge sensitive path + // but for facilitating a bypass box, let's pretend it's + // a simple path +`endif + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L90 + if (E && !R) (posedge C => (Q : D)) = 540; + endspecify +`endif +`ifdef ICE40_LP + specify + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L74 + // minus https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L80 + $setup(D, posedge C &&& E, 693 - 662); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L73 + $setup(E, posedge C, 0); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L63 + $setup(negedge R, posedge C, 235); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L91 +`ifndef YOSYS + (posedge R => (Q : 1'b0)) = 883; +`else + if (R) (R => Q) = 883; // Technically, this should be an edge sensitive path + // but for facilitating a bypass box, let's pretend it's + // a simple path +`endif + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L90 + if (E && !R) (posedge C => (Q : D)) = 796; + endspecify +`endif +`ifdef ICE40_U + specify + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L86 + // minus https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L80 + $setup(D, posedge C &&& E, /*1232 - 1285*/ 0); // Negative times not currently supported + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L86 + $setup(E, posedge C, 0); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L75 + $setup(negedge R, posedge C, 424); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L103 +`ifndef YOSYS + (posedge R => (Q : 1'b0)) = 1589; +`else + if (R) (R => Q) = 1589; // Technically, this should be an edge sensitive path + // but for facilitating a bypass box, let's pretend it's + // a simple path +`endif + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L102 + if (E && !R) (posedge C => (Q : D)) = 1391; + endspecify +`endif +endmodule + +(* abc9_flop, lib_whitebox *) +module SB_DFFESS ( + output reg Q, + input C, + input E `ICE40_DEFAULT_ASSIGNMENT_1, + input S, + input D +); + `SB_DFF_INIT + + always @(posedge C) + if (E) begin + if (S) + Q <= 1; + else + Q <= D; + end +`ifdef ICE40_HX + specify + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L74 + // minus https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L80 + $setup(D, posedge C &&& E && !S, 470 - 449); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L73 + $setup(E, posedge C, 0); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L78 + $setup(S, posedge C &&& E, 203); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L90 + if (E && S) (posedge C => (Q : 1'b1)) = 540; + if (E && !S) (posedge C => (Q : D)) = 540; + endspecify +`endif +`ifdef ICE40_LP + specify + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L74 + // minus https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L80 + $setup(D, posedge C &&& E && !S, 693 - 662); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L73 + $setup(E, posedge C, 0); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L78 + $setup(S, posedge C &&& E, 299); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L90 + if (E && S) (posedge C => (Q : 1'b1)) = 796; + if (E && !S) (posedge C => (Q : D)) = 796; + endspecify +`endif +`ifdef ICE40_U + specify + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L86 + // minus https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L80 + $setup(D, posedge C &&& E, /*1232 - 1285*/ 0); // Negative times not currently supported + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L86 + $setup(E, posedge C, 0); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L90 + $setup(S, posedge C &&& E, 530); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L102 + if (E && S) (posedge C => (Q : 1'b1)) = 1391; + if (E && !S) (posedge C => (Q : D)) = 1391; + endspecify +`endif +endmodule + +(* abc9_box, lib_whitebox *) +module SB_DFFES ( + output reg Q, + input C, + input E `ICE40_DEFAULT_ASSIGNMENT_1, + input S, + input D +); + `SB_DFF_INIT + + always @(posedge C, posedge S) + if (S) + Q <= 1; + else if (E) + Q <= D; +`ifdef ICE40_HX + specify + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L74 + // minus https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L80 + $setup(D, posedge C &&& E, 470 - 449); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L73 + $setup(E, posedge C, 0); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L63 + $setup(posedge S, posedge C, 160); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L91 +`ifndef YOSYS + (posedge S => (Q : 1'b1)) = 599; +`else + if (S) (S => Q) = 599; // Technically, this should be an edge sensitive path + // but for facilitating a bypass box, let's pretend it's + // a simple path +`endif + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L90 + if (E && !S) (posedge C => (Q : D)) = 540; + endspecify +`endif +`ifdef ICE40_LP + specify + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L74 + // minus https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L80 + $setup(D, posedge C &&& E, 693 - 662); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L73 + $setup(E, posedge C, 0); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L63 + $setup(posedge S, posedge C, 235); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L91 +`ifndef YOSYS + (posedge S => (Q : 1'b1)) = 883; +`else + if (S) (S => Q) = 883; // Technically, this should be an edge sensitive path + // but for facilitating a bypass box, let's pretend it's + // a simple path +`endif + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L90 + if (E && !S) (posedge C => (Q : D)) = 796; + endspecify +`endif +`ifdef ICE40_U + specify + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L86 + // minus https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L80 + $setup(D, posedge C &&& E, /*1232 - 1285*/ 0); // Negative times not currently supported + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L86 + $setup(E, posedge C, 0); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L75 + $setup(posedge S, posedge C, 424); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L103 +`ifndef YOSYS + (posedge S => (Q : 1'b1)) = 1589; +`else + if (S) (S => Q) = 1589; // Technically, this should be an edge sensitive path + // but for facilitating a bypass box, let's pretend it's + // a simple path +`endif + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L102 + if (E && !S) (posedge C => (Q : D)) = 1391; + endspecify +`endif +endmodule + +// Negative Edge SiliconBlue FF Cells + +(* abc9_flop, lib_whitebox *) +module SB_DFFN ( + output reg Q, + input C, D +); + `SB_DFF_INIT + + always @(negedge C) + Q <= D; +`ifdef ICE40_HX + specify + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L74 + // minus https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L80 + $setup(D, negedge C, 470 - 449); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L90 + (negedge C => (Q : D)) = 540; + endspecify +`endif +`ifdef ICE40_LP + specify + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L74 + // minus https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L80 + $setup(D, negedge C, 693 - 662); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L90 + (negedge C => (Q : D)) = 796; + endspecify +`endif +`ifdef ICE40_U + specify + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L86 + // minus https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L80 + $setup(D, negedge C, /*1232 - 1285*/ 0); // Negative times not currently supported + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L102 + (negedge C => (Q : D)) = 1391; + endspecify +`endif +endmodule + +(* abc9_flop, lib_whitebox *) +module SB_DFFNE ( + output reg Q, + input C, + input E `ICE40_DEFAULT_ASSIGNMENT_1, + input D +); + `SB_DFF_INIT + + always @(negedge C) + if (E) + Q <= D; +`ifdef ICE40_HX + specify + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L74 + // minus https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L80 + $setup(D, negedge C &&& E, 470 - 449); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L73 + $setup(E, negedge C, 0); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L90 + if (E) (negedge C => (Q : D)) = 540; + endspecify +`endif +`ifdef ICE40_LP + specify + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L74 + // minus https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L80 + $setup(D, negedge C &&& E, 693 - 662); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L73 + $setup(E, negedge C, 0); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L90 + if (E) (negedge C => (Q : D)) = 796; + endspecify +`endif +`ifdef ICE40_U + specify + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L86 + // minus https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L80 + $setup(D, negedge C &&& E, /*1232 - 1285*/ 0); // Negative times not currently supported + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L86 + $setup(E, negedge C, 0); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L102 + if (E) (negedge C => (Q : D)) = 1391; + endspecify +`endif +endmodule + +(* abc9_flop, lib_whitebox *) +module SB_DFFNSR ( + output reg Q, + input C, R, D +); + `SB_DFF_INIT + + always @(negedge C) + if (R) + Q <= 0; + else + Q <= D; +`ifdef ICE40_HX + specify + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L74 + // minus https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L80 + $setup(D, negedge C, 470 - 449); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L73 + $setup(R, negedge C, 203); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L90 + if ( R) (negedge C => (Q : 1'b0)) = 540; + if (!R) (negedge C => (Q : D)) = 540; + endspecify +`endif +`ifdef ICE40_LP + specify + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L74 + // minus https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L80 + $setup(D, negedge C, 693 - 662); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L78 + $setup(R, negedge C, 299); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L90 + if ( R) (negedge C => (Q : 1'b0)) = 796; + if (!R) (negedge C => (Q : D)) = 796; + endspecify +`endif +`ifdef ICE40_U + specify + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L86 + // minus https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L80 + $setup(D, negedge C, /*1232 - 1285*/ 0); // Negative times not currently supported + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L90 + $setup(R, negedge C, 530); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L102 + if ( R) (negedge C => (Q : 1'b0)) = 1391; + if (!R) (negedge C => (Q : D)) = 1391; + endspecify +`endif +endmodule + +(* abc9_flop, lib_whitebox *) +module SB_DFFNR ( + output reg Q, + input C, R, D +); + `SB_DFF_INIT + + always @(negedge C, posedge R) + if (R) + Q <= 0; + else + Q <= D; +`ifdef ICE40_HX + specify + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L74 + // minus https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L80 + $setup(D, negedge C, 470 - 449); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L63 + $setup(negedge R, negedge C, 160); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L91 +`ifndef YOSYS + (posedge R => (Q : 1'b0)) = 599; +`else + if (R) (R => Q) = 599; // Technically, this should be an edge sensitive path + // but for facilitating a bypass box, let's pretend it's + // a simple path +`endif + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L90 + if (!R) (negedge C => (Q : D)) = 540; + endspecify +`endif +`ifdef ICE40_LP + specify + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L74 + // minus https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L80 + $setup(D, negedge C, 693 - 662); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L63 + $setup(negedge R, negedge C, 235); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L91 +`ifndef YOSYS + (posedge R => (Q : 1'b0)) = 883; +`else + if (R) (R => Q) = 883; // Technically, this should be an edge sensitive path + // but for facilitating a bypass box, let's pretend it's + // a simple path +`endif + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L90 + if (!R) (negedge C => (Q : D)) = 796; + endspecify +`endif +`ifdef ICE40_U + specify + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L86 + // minus https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L80 + $setup(D, negedge C, /*1232 - 1285*/ 0); // Negative times not currently supported + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L75 + $setup(negedge R, negedge C, 424); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L103 +`ifndef YOSYS + (posedge R => (Q : 1'b0)) = 1589; +`else + if (R) (R => Q) = 1589; // Technically, this should be an edge sensitive path + // but for facilitating a bypass box, let's pretend it's + // a simple path +`endif + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L102 + if (!R) (negedge C => (Q : D)) = 1391; + endspecify +`endif +endmodule + +(* abc9_flop, lib_whitebox *) +module SB_DFFNSS ( + output reg Q, + input C, S, D +); + `SB_DFF_INIT + + always @(negedge C) + if (S) + Q <= 1; + else + Q <= D; +`ifdef ICE40_HX + specify + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L74 + // minus https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L80 + $setup(D, negedge C, 470 - 449); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L73 + $setup(S, negedge C, 203); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L90 + if ( S) (negedge C => (Q : 1'b1)) = 540; + if (!S) (negedge C => (Q : D)) = 540; + endspecify +`endif +`ifdef ICE40_LP + specify + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L74 + // minus https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L80 + $setup(D, negedge C, 693 - 662); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L78 + $setup(S, negedge C, 299); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L90 + if ( S) (negedge C => (Q : 1'b1)) = 796; + if (!S) (negedge C => (Q : D)) = 796; + endspecify +`endif +`ifdef ICE40_U + specify + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L86 + // minus https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L80 + $setup(D, negedge C, /*1232 - 1285*/ 0); // Negative times not currently supported + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L90 + $setup(S, negedge C, 530); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L102 + if ( S) (negedge C => (Q : 1'b1)) = 1391; + if (!S) (negedge C => (Q : D)) = 1391; + endspecify +`endif +endmodule + +(* abc9_box, lib_whitebox *) +module SB_DFFNS ( + output reg Q, + input C, S, D +); + `SB_DFF_INIT + + always @(negedge C, posedge S) + if (S) + Q <= 1; + else + Q <= D; +`ifdef ICE40_HX + specify + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L74 + // minus https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L80 + $setup(D, negedge C, 470 - 449); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L63 + $setup(negedge S, negedge C, 160); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L91 +`ifndef YOSYS + (posedge S => (Q : 1'b1)) = 599; +`else + if (S) (S => Q) = 599; // Technically, this should be an edge sensitive path + // but for facilitating a bypass box, let's pretend it's + // a simple path +`endif + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L90 + if (!S) (negedge C => (Q : D)) = 540; + endspecify +`endif +`ifdef ICE40_LP + specify + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L74 + // minus https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L80 + $setup(D, negedge C, 693 - 662); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L63 + $setup(negedge S, negedge C, 235); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L91 +`ifndef YOSYS + (posedge S => (Q : 1'b1)) = 883; +`else + if (S) (S => Q) = 883; // Technically, this should be an edge sensitive path + // but for facilitating a bypass box, let's pretend it's + // a simple path +`endif + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L90 + if (!S) (negedge C => (Q : D)) = 796; + endspecify +`endif +`ifdef ICE40_U + specify + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L86 + // minus https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L80 + $setup(D, negedge C, /*1232 - 1285*/ 0); // Negative times not currently supported + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L75 + $setup(negedge S, negedge C, 424); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L103 +`ifndef YOSYS + (posedge S => (Q : 1'b1)) = 1589; +`else + if (S) (S => Q) = 1589; // Technically, this should be an edge sensitive path + // but for facilitating a bypass box, let's pretend it's + // a simple path +`endif + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L102 + if (!S) (negedge C => (Q : D)) = 1391; + endspecify +`endif +endmodule + +(* abc9_flop, lib_whitebox *) +module SB_DFFNESR ( + output reg Q, + input C, + input E `ICE40_DEFAULT_ASSIGNMENT_1, + input R, + input D +); + `SB_DFF_INIT + + always @(negedge C) + if (E) begin + if (R) + Q <= 0; + else + Q <= D; + end +`ifdef ICE40_HX + specify + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L74 + // minus https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L80 + $setup(D, negedge C &&& E && !R, 470 - 449); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L73 + $setup(E, negedge C, 0); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L78 + $setup(R, negedge C &&& E, 203); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L90 + if (E && R) (negedge C => (Q : 1'b0)) = 540; + if (E && !R) (negedge C => (Q : D)) = 540; + endspecify +`endif +`ifdef ICE40_LP + specify + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L74 + // minus https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L80 + $setup(D, negedge C &&& E && !R, 693 - 662); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L73 + $setup(E, negedge C, 0); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L78 + $setup(R, negedge C &&& E, 299); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L90 + if (E && R) (negedge C => (Q : 1'b0)) = 796; + if (E && !R) (negedge C => (Q : D)) = 796; + endspecify +`endif +`ifdef ICE40_U + specify + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L86 + // minus https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L80 + $setup(D, negedge C &&& E, /*1232 - 1285*/ 0); // Negative times not currently supported + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L86 + $setup(E, negedge C, 0); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L90 + $setup(R, negedge C &&& E, 530); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L102 + if (E && R) (negedge C => (Q : 1'b0)) = 1391; + if (E && !R) (negedge C => (Q : D)) = 1391; + endspecify +`endif +endmodule + +(* abc9_box, lib_whitebox *) +module SB_DFFNER ( + output reg Q, + input C, + input E `ICE40_DEFAULT_ASSIGNMENT_1, + input R, + input D +); + `SB_DFF_INIT + + always @(negedge C, posedge R) + if (R) + Q <= 0; + else if (E) + Q <= D; +`ifdef ICE40_HX + specify + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L74 + // minus https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L80 + $setup(D, negedge C &&& E, 470 - 449); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L73 + $setup(E, negedge C, 0); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L63 + $setup(R, negedge C, 2160); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L91 +`ifndef YOSYS + (posedge R => (Q : 1'b0)) = 599; +`else + if (R) (R => Q) = 599; // Technically, this should be an edge sensitive path + // but for facilitating a bypass box, let's pretend it's + // a simple path +`endif + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L90 + if (E && !R) (negedge C => (Q : D)) = 540; + endspecify +`endif +`ifdef ICE40_LP + specify + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L74 + // minus https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L80 + $setup(D, negedge C &&& E, 693 - 662); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L73 + $setup(E, negedge C, 0); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L63 + $setup(R, negedge C, 235); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L91 +`ifndef YOSYS + (posedge R => (Q : 1'b0)) = 883; +`else + if (R) (R => Q) = 883; // Technically, this should be an edge sensitive path + // but for facilitating a bypass box, let's pretend it's + // a simple path +`endif + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L90 + if (E && !R) (negedge C => (Q : D)) = 796; + endspecify +`endif +`ifdef ICE40_U + specify + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L86 + // minus https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L80 + $setup(D, negedge C &&& E, /*1232 - 1285*/ 0); // Negative times not currently supported + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L86 + $setup(E, negedge C, 0); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L75 + $setup(negedge R, negedge C, 424); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L103 +`ifndef YOSYS + (posedge R => (Q : 1'b0)) = 1589; +`else + if (R) (R => Q) = 1589; // Technically, this should be an edge sensitive path + // but for facilitating a bypass box, let's pretend it's + // a simple path +`endif + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L102 + if (E && !R) (negedge C => (Q : D)) = 1391; + endspecify +`endif +endmodule + +(* abc9_flop, lib_whitebox *) +module SB_DFFNESS ( + output reg Q, + input C, + input E `ICE40_DEFAULT_ASSIGNMENT_1, + input S, + input D +); + `SB_DFF_INIT + + always @(negedge C) + if (E) begin + if (S) + Q <= 1; + else + Q <= D; + end +`ifdef ICE40_HX + specify + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L74 + // minus https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L80 + $setup(D, negedge C &&& E && !S, 470 - 449); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L73 + $setup(E, negedge C, 0); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L78 + $setup(S, negedge C &&& E, 203); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L90 + if (E && S) (negedge C => (Q : 1'b1)) = 540; + if (E && !S) (negedge C => (Q : D)) = 540; + endspecify +`endif +`ifdef ICE40_LP + specify + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L74 + // minus https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L80 + $setup(D, negedge C &&& E && !S, 693 - 662); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L73 + $setup(E, negedge C, 0); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L78 + $setup(S, negedge C &&& E, 299); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L90 + if (E && S) (negedge C => (Q : 1'b1)) = 796; + if (E && !S) (negedge C => (Q : D)) = 796; + endspecify +`endif +`ifdef ICE40_U + specify + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L86 + // minus https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L80 + $setup(D, negedge C &&& E, /*1232 - 1285*/ 0); // Negative times not currently supported + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L86 + $setup(E, negedge C, 0); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L90 + $setup(S, negedge C &&& E, 530); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L102 + if (E && S) (negedge C => (Q : 1'b1)) = 1391; + if (E && !S) (negedge C => (Q : D)) = 1391; + endspecify +`endif +endmodule + +(* abc9_box, lib_whitebox *) +module SB_DFFNES ( + output reg Q, + input C, + input E `ICE40_DEFAULT_ASSIGNMENT_1, + input S, + input D +); + `SB_DFF_INIT + + always @(negedge C, posedge S) + if (S) + Q <= 1; + else if (E) + Q <= D; +`ifdef ICE40_HX + specify + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L74 + // minus https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L80 + $setup(D, negedge C &&& E, 470 - 449); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L73 + $setup(E, negedge C, 0); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L63 + $setup(negedge S, negedge C, 160); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L91 +`ifndef YOSYS + (posedge S => (Q : 1'b1)) = 599; +`else + if (S) (S => Q) = 599; // Technically, this should be an edge sensitive path + // but for facilitating a bypass box, let's pretend it's + // a simple path +`endif + + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L90 + if (E && !S) (negedge C => (Q : D)) = 540; + endspecify +`endif +`ifdef ICE40_LP + specify + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L74 + // minus https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L80 + $setup(D, negedge C &&& E, 693 - 662); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L73 + $setup(E, negedge C, 0); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L63 + $setup(negedge S, negedge C, 235); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L91 +`ifndef YOSYS + (posedge S => (Q : 1'b1)) = 883; +`else + if (S) (S => Q) = 883; // Technically, this should be an edge sensitive path + // but for facilitating a bypass box, let's pretend it's + // a simple path +`endif + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L90 + if (E && !S) (negedge C => (Q : D)) = 796; + endspecify +`endif +`ifdef ICE40_U + specify + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L86 + // minus https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L80 + $setup(D, negedge C &&& E, /*1232 - 1285*/ 0); // Negative times not currently supported + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L86 + $setup(E, negedge C, 0); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L75 + $setup(negedge S, negedge C, 424); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L103 +`ifndef YOSYS + (posedge S => (Q : 1'b1)) = 1589; +`else + if (S) (S => Q) = 1589; // Technically, this should be an edge sensitive path + // but for facilitating a bypass box, let's pretend it's + // a simple path +`endif + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L102 + if (E && !S) (negedge C => (Q : D)) = 1391; + endspecify +`endif +endmodule + +// SiliconBlue RAM Cells + +module SB_RAM40_4K ( + output [15:0] RDATA, + input RCLK, + input RCLKE `ICE40_DEFAULT_ASSIGNMENT_1, + input RE `ICE40_DEFAULT_ASSIGNMENT_0, + input [10:0] RADDR, + input WCLK, + input WCLKE `ICE40_DEFAULT_ASSIGNMENT_1, + input WE `ICE40_DEFAULT_ASSIGNMENT_0, + input [10:0] WADDR, + input [15:0] MASK `ICE40_DEFAULT_ASSIGNMENT_V(16'h 0000), + input [15:0] WDATA +); + // MODE 0: 256 x 16 + // MODE 1: 512 x 8 + // MODE 2: 1024 x 4 + // MODE 3: 2048 x 2 + parameter WRITE_MODE = 0; + parameter READ_MODE = 0; + + parameter INIT_0 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_1 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_2 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_3 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_4 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_5 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_6 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_7 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_8 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_9 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + + parameter INIT_FILE = ""; + +`ifndef BLACKBOX + wire [15:0] WMASK_I; + wire [15:0] RMASK_I; + + reg [15:0] RDATA_I; + wire [15:0] WDATA_I; + + generate + case (WRITE_MODE) + 0: assign WMASK_I = MASK; + + 1: assign WMASK_I = WADDR[ 8] == 0 ? 16'b 1010_1010_1010_1010 : + WADDR[ 8] == 1 ? 16'b 0101_0101_0101_0101 : 16'bx; + + 2: assign WMASK_I = WADDR[ 9:8] == 0 ? 16'b 1110_1110_1110_1110 : + WADDR[ 9:8] == 1 ? 16'b 1101_1101_1101_1101 : + WADDR[ 9:8] == 2 ? 16'b 1011_1011_1011_1011 : + WADDR[ 9:8] == 3 ? 16'b 0111_0111_0111_0111 : 16'bx; + + 3: assign WMASK_I = WADDR[10:8] == 0 ? 16'b 1111_1110_1111_1110 : + WADDR[10:8] == 1 ? 16'b 1111_1101_1111_1101 : + WADDR[10:8] == 2 ? 16'b 1111_1011_1111_1011 : + WADDR[10:8] == 3 ? 16'b 1111_0111_1111_0111 : + WADDR[10:8] == 4 ? 16'b 1110_1111_1110_1111 : + WADDR[10:8] == 5 ? 16'b 1101_1111_1101_1111 : + WADDR[10:8] == 6 ? 16'b 1011_1111_1011_1111 : + WADDR[10:8] == 7 ? 16'b 0111_1111_0111_1111 : 16'bx; + endcase + + case (READ_MODE) + 0: assign RMASK_I = 16'b 0000_0000_0000_0000; + + 1: assign RMASK_I = RADDR[ 8] == 0 ? 16'b 1010_1010_1010_1010 : + RADDR[ 8] == 1 ? 16'b 0101_0101_0101_0101 : 16'bx; + + 2: assign RMASK_I = RADDR[ 9:8] == 0 ? 16'b 1110_1110_1110_1110 : + RADDR[ 9:8] == 1 ? 16'b 1101_1101_1101_1101 : + RADDR[ 9:8] == 2 ? 16'b 1011_1011_1011_1011 : + RADDR[ 9:8] == 3 ? 16'b 0111_0111_0111_0111 : 16'bx; + + 3: assign RMASK_I = RADDR[10:8] == 0 ? 16'b 1111_1110_1111_1110 : + RADDR[10:8] == 1 ? 16'b 1111_1101_1111_1101 : + RADDR[10:8] == 2 ? 16'b 1111_1011_1111_1011 : + RADDR[10:8] == 3 ? 16'b 1111_0111_1111_0111 : + RADDR[10:8] == 4 ? 16'b 1110_1111_1110_1111 : + RADDR[10:8] == 5 ? 16'b 1101_1111_1101_1111 : + RADDR[10:8] == 6 ? 16'b 1011_1111_1011_1111 : + RADDR[10:8] == 7 ? 16'b 0111_1111_0111_1111 : 16'bx; + endcase + + case (WRITE_MODE) + 0: assign WDATA_I = WDATA; + + 1: assign WDATA_I = {WDATA[14], WDATA[14], WDATA[12], WDATA[12], + WDATA[10], WDATA[10], WDATA[ 8], WDATA[ 8], + WDATA[ 6], WDATA[ 6], WDATA[ 4], WDATA[ 4], + WDATA[ 2], WDATA[ 2], WDATA[ 0], WDATA[ 0]}; + + 2: assign WDATA_I = {WDATA[13], WDATA[13], WDATA[13], WDATA[13], + WDATA[ 9], WDATA[ 9], WDATA[ 9], WDATA[ 9], + WDATA[ 5], WDATA[ 5], WDATA[ 5], WDATA[ 5], + WDATA[ 1], WDATA[ 1], WDATA[ 1], WDATA[ 1]}; + + 3: assign WDATA_I = {WDATA[11], WDATA[11], WDATA[11], WDATA[11], + WDATA[11], WDATA[11], WDATA[11], WDATA[11], + WDATA[ 3], WDATA[ 3], WDATA[ 3], WDATA[ 3], + WDATA[ 3], WDATA[ 3], WDATA[ 3], WDATA[ 3]}; + endcase + + case (READ_MODE) + 0: assign RDATA = RDATA_I; + 1: assign RDATA = {1'b0, |RDATA_I[15:14], 1'b0, |RDATA_I[13:12], 1'b0, |RDATA_I[11:10], 1'b0, |RDATA_I[ 9: 8], + 1'b0, |RDATA_I[ 7: 6], 1'b0, |RDATA_I[ 5: 4], 1'b0, |RDATA_I[ 3: 2], 1'b0, |RDATA_I[ 1: 0]}; + 2: assign RDATA = {2'b0, |RDATA_I[15:12], 3'b0, |RDATA_I[11: 8], 3'b0, |RDATA_I[ 7: 4], 3'b0, |RDATA_I[ 3: 0], 1'b0}; + 3: assign RDATA = {4'b0, |RDATA_I[15: 8], 7'b0, |RDATA_I[ 7: 0], 3'b0}; + endcase + endgenerate + + integer i; + reg [15:0] memory [0:255]; + + initial begin + if (INIT_FILE != "") + $readmemh(INIT_FILE, memory); + else + for (i=0; i<16; i=i+1) begin + memory[ 0*16 + i] = INIT_0[16*i +: 16]; + memory[ 1*16 + i] = INIT_1[16*i +: 16]; + memory[ 2*16 + i] = INIT_2[16*i +: 16]; + memory[ 3*16 + i] = INIT_3[16*i +: 16]; + memory[ 4*16 + i] = INIT_4[16*i +: 16]; + memory[ 5*16 + i] = INIT_5[16*i +: 16]; + memory[ 6*16 + i] = INIT_6[16*i +: 16]; + memory[ 7*16 + i] = INIT_7[16*i +: 16]; + memory[ 8*16 + i] = INIT_8[16*i +: 16]; + memory[ 9*16 + i] = INIT_9[16*i +: 16]; + memory[10*16 + i] = INIT_A[16*i +: 16]; + memory[11*16 + i] = INIT_B[16*i +: 16]; + memory[12*16 + i] = INIT_C[16*i +: 16]; + memory[13*16 + i] = INIT_D[16*i +: 16]; + memory[14*16 + i] = INIT_E[16*i +: 16]; + memory[15*16 + i] = INIT_F[16*i +: 16]; + end + end + + always @(posedge WCLK) begin + if (WE && WCLKE) begin + if (!WMASK_I[ 0]) memory[WADDR[7:0]][ 0] <= WDATA_I[ 0]; + if (!WMASK_I[ 1]) memory[WADDR[7:0]][ 1] <= WDATA_I[ 1]; + if (!WMASK_I[ 2]) memory[WADDR[7:0]][ 2] <= WDATA_I[ 2]; + if (!WMASK_I[ 3]) memory[WADDR[7:0]][ 3] <= WDATA_I[ 3]; + if (!WMASK_I[ 4]) memory[WADDR[7:0]][ 4] <= WDATA_I[ 4]; + if (!WMASK_I[ 5]) memory[WADDR[7:0]][ 5] <= WDATA_I[ 5]; + if (!WMASK_I[ 6]) memory[WADDR[7:0]][ 6] <= WDATA_I[ 6]; + if (!WMASK_I[ 7]) memory[WADDR[7:0]][ 7] <= WDATA_I[ 7]; + if (!WMASK_I[ 8]) memory[WADDR[7:0]][ 8] <= WDATA_I[ 8]; + if (!WMASK_I[ 9]) memory[WADDR[7:0]][ 9] <= WDATA_I[ 9]; + if (!WMASK_I[10]) memory[WADDR[7:0]][10] <= WDATA_I[10]; + if (!WMASK_I[11]) memory[WADDR[7:0]][11] <= WDATA_I[11]; + if (!WMASK_I[12]) memory[WADDR[7:0]][12] <= WDATA_I[12]; + if (!WMASK_I[13]) memory[WADDR[7:0]][13] <= WDATA_I[13]; + if (!WMASK_I[14]) memory[WADDR[7:0]][14] <= WDATA_I[14]; + if (!WMASK_I[15]) memory[WADDR[7:0]][15] <= WDATA_I[15]; + end + end + + always @(posedge RCLK) begin + if (RE && RCLKE) begin + RDATA_I <= memory[RADDR[7:0]] & ~RMASK_I; + end + end +`endif +`ifdef ICE40_HX + specify + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L343-L358 + $setup(MASK, posedge WCLK &&& WE && WCLKE, 274); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L359-L369 + $setup(RADDR, posedge RCLK &&& RE && RCLKE, 203); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L370 + $setup(RCLKE, posedge RCLK, 267); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L371 + $setup(RE, posedge RCLK, 98); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L372-L382 + $setup(WADDR, posedge WCLK &&& WE && WCLKE, 224); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L383 + $setup(WCLKE, posedge WCLK, 267); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L384-L399 + $setup(WDATA, posedge WCLK &&& WE && WCLKE, 161); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L400 + $setup(WE, posedge WCLK, 133); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L401 + (posedge RCLK => (RDATA : 16'bx)) = 2146; + endspecify +`endif +`ifdef ICE40_LP + specify + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L343-L358 + $setup(MASK, posedge WCLK &&& WE && WCLKE, 403); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L359-L369 + $setup(RADDR, posedge RCLK &&& RE && RCLKE, 300); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L370 + $setup(RCLKE, posedge RCLK, 393); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L371 + $setup(RE, posedge RCLK, 145); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L372-L382 + $setup(WADDR, posedge WCLK &&& WE && WCLKE, 331); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L383 + $setup(WCLKE, posedge WCLK, 393); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L384-L399 + $setup(WDATA, posedge WCLK &&& WE && WCLKE, 238); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L400 + $setup(WE, posedge WCLK, 196); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L401 + (posedge RCLK => (RDATA : 16'bx)) = 3163; + endspecify +`endif +`ifdef ICE40_U + specify + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L12968-12983 + $setup(MASK, posedge WCLK &&& WE && WCLKE, 517); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L12984-12994 + $setup(RADDR, posedge RCLK &&& RE && RCLKE, 384); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L12995 + $setup(RCLKE, posedge RCLK, 503); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L12996 + $setup(RE, posedge RCLK, 185); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L12997-13007 + $setup(WADDR, posedge WCLK &&& WE && WCLKE, 424); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L13008 + $setup(WCLKE, posedge WCLK, 503); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L13009-13024 + $setup(WDATA, posedge WCLK &&& WE && WCLKE, 305); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L13025 + $setup(WE, posedge WCLK, 252); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L13026 + (posedge RCLK => (RDATA : 16'bx)) = 1179; + endspecify +`endif +endmodule + +module SB_RAM40_4KNR ( + output [15:0] RDATA, + input RCLKN, + input RCLKE `ICE40_DEFAULT_ASSIGNMENT_1, + input RE `ICE40_DEFAULT_ASSIGNMENT_0, + input [10:0] RADDR, + input WCLK, + input WCLKE `ICE40_DEFAULT_ASSIGNMENT_1, + input WE `ICE40_DEFAULT_ASSIGNMENT_0, + input [10:0] WADDR, + input [15:0] MASK `ICE40_DEFAULT_ASSIGNMENT_V(16'h 0000), + input [15:0] WDATA +); + parameter WRITE_MODE = 0; + parameter READ_MODE = 0; + + parameter INIT_0 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_1 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_2 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_3 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_4 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_5 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_6 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_7 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_8 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_9 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + + parameter INIT_FILE = ""; + + SB_RAM40_4K #( + .WRITE_MODE(WRITE_MODE), + .READ_MODE (READ_MODE ), + .INIT_0 (INIT_0 ), + .INIT_1 (INIT_1 ), + .INIT_2 (INIT_2 ), + .INIT_3 (INIT_3 ), + .INIT_4 (INIT_4 ), + .INIT_5 (INIT_5 ), + .INIT_6 (INIT_6 ), + .INIT_7 (INIT_7 ), + .INIT_8 (INIT_8 ), + .INIT_9 (INIT_9 ), + .INIT_A (INIT_A ), + .INIT_B (INIT_B ), + .INIT_C (INIT_C ), + .INIT_D (INIT_D ), + .INIT_E (INIT_E ), + .INIT_F (INIT_F ), + .INIT_FILE (INIT_FILE ) + ) RAM ( + .RDATA(RDATA), + .RCLK (~RCLKN), + .RCLKE(RCLKE), + .RE (RE ), + .RADDR(RADDR), + .WCLK (WCLK ), + .WCLKE(WCLKE), + .WE (WE ), + .WADDR(WADDR), + .MASK (MASK ), + .WDATA(WDATA) + ); +`ifdef ICE40_HX + specify + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L343-L358 + $setup(MASK, posedge WCLK &&& WE && WCLKE, 274); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L359-L369 + $setup(RADDR, posedge RCLKN &&& RE && RCLKE, 203); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L370 + $setup(RCLKE, posedge RCLKN, 267); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L371 + $setup(RE, posedge RCLKN, 98); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L372-L382 + $setup(WADDR, posedge WCLK &&& WE && WCLKE, 224); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L383 + $setup(WCLKE, posedge WCLK, 267); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L384-L399 + $setup(WDATA, posedge WCLK &&& WE && WCLKE, 161); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L400 + $setup(WE, posedge WCLK, 133); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L401 + (posedge RCLKN => (RDATA : 16'bx)) = 2146; + endspecify +`endif +`ifdef ICE40_LP + specify + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L343-L358 + $setup(MASK, posedge WCLK &&& WE && WCLKE, 403); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L359-L369 + $setup(RADDR, posedge RCLKN &&& RE && RCLKE, 300); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L370 + $setup(RCLKE, posedge RCLKN, 393); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L371 + $setup(RE, posedge RCLKN, 145); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L372-L382 + $setup(WADDR, posedge WCLK &&& WE && WCLKE, 331); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L383 + $setup(WCLKE, posedge WCLK, 393); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L384-L399 + $setup(WDATA, posedge WCLK &&& WE && WCLKE, 238); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L400 + $setup(WE, posedge WCLK, 196); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L401 + (posedge RCLKN => (RDATA : 16'bx)) = 3163; + endspecify +`endif +`ifdef ICE40_U + specify + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L12968-12983 + $setup(MASK, posedge WCLK &&& WE && WCLKE, 517); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L12984-12994 + $setup(RADDR, posedge RCLKN &&& RE && RCLKE, 384); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L12995 + $setup(RCLKE, posedge RCLKN, 503); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L12996 + $setup(RE, posedge RCLKN, 185); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L12997-13007 + $setup(WADDR, posedge WCLK &&& WE && WCLKE, 424); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L13008 + $setup(WCLKE, posedge WCLK, 503); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L13009-13024 + $setup(WDATA, posedge WCLK &&& WE && WCLKE, 305); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L13025 + $setup(WE, posedge WCLK, 252); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L13026 + (posedge RCLKN => (RDATA : 16'bx)) = 1179; + endspecify +`endif +endmodule + +module SB_RAM40_4KNW ( + output [15:0] RDATA, + input RCLK, + input RCLKE `ICE40_DEFAULT_ASSIGNMENT_1, + input RE `ICE40_DEFAULT_ASSIGNMENT_0, + input [10:0] RADDR, + input WCLKN, + input WCLKE `ICE40_DEFAULT_ASSIGNMENT_1, + input WE `ICE40_DEFAULT_ASSIGNMENT_0, + input [10:0] WADDR, + input [15:0] MASK `ICE40_DEFAULT_ASSIGNMENT_V(16'h 0000), + input [15:0] WDATA +); + parameter WRITE_MODE = 0; + parameter READ_MODE = 0; + + parameter INIT_0 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_1 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_2 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_3 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_4 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_5 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_6 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_7 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_8 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_9 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + + parameter INIT_FILE = ""; + + SB_RAM40_4K #( + .WRITE_MODE(WRITE_MODE), + .READ_MODE (READ_MODE ), + .INIT_0 (INIT_0 ), + .INIT_1 (INIT_1 ), + .INIT_2 (INIT_2 ), + .INIT_3 (INIT_3 ), + .INIT_4 (INIT_4 ), + .INIT_5 (INIT_5 ), + .INIT_6 (INIT_6 ), + .INIT_7 (INIT_7 ), + .INIT_8 (INIT_8 ), + .INIT_9 (INIT_9 ), + .INIT_A (INIT_A ), + .INIT_B (INIT_B ), + .INIT_C (INIT_C ), + .INIT_D (INIT_D ), + .INIT_E (INIT_E ), + .INIT_F (INIT_F ), + .INIT_FILE (INIT_FILE ) + ) RAM ( + .RDATA(RDATA), + .RCLK (RCLK ), + .RCLKE(RCLKE), + .RE (RE ), + .RADDR(RADDR), + .WCLK (~WCLKN), + .WCLKE(WCLKE), + .WE (WE ), + .WADDR(WADDR), + .MASK (MASK ), + .WDATA(WDATA) + ); +`ifdef ICE40_HX + specify + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L343-L358 + $setup(MASK, posedge WCLKN &&& WE && WCLKE, 274); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L359-L369 + $setup(RADDR, posedge RCLK &&& RE && RCLKE, 203); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L370 + $setup(RCLKE, posedge RCLK, 267); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L371 + $setup(RE, posedge RCLK, 98); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L372-L382 + $setup(WADDR, posedge WCLKN &&& WE && WCLKE, 224); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L383 + $setup(WCLKE, posedge WCLKN, 267); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L384-L399 + $setup(WDATA, posedge WCLKN &&& WE && WCLKE, 161); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L400 + $setup(WE, posedge WCLKN, 133); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L401 + (posedge RCLK => (RDATA : 16'bx)) = 2146; + endspecify +`endif +`ifdef ICE40_LP + specify + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L343-L358 + $setup(MASK, posedge WCLKN &&& WE && WCLKE, 403); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L359-L369 + $setup(RADDR, posedge RCLK &&& RE && RCLKE, 300); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L370 + $setup(RCLKE, posedge RCLK, 393); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L371 + $setup(RE, posedge RCLK, 145); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L372-L382 + $setup(WADDR, posedge WCLKN &&& WE && WCLKE, 331); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L383 + $setup(WCLKE, posedge WCLKN, 393); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L384-L399 + $setup(WDATA, posedge WCLKN &&& WE && WCLKE, 238); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L400 + $setup(WE, posedge WCLKN, 196); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L401 + (posedge RCLK => (RDATA : 16'bx)) = 3163; + endspecify +`endif +`ifdef ICE40_U + specify + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L12968-12983 + $setup(MASK, posedge WCLKN &&& WE && WCLKE, 517); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L12984-12994 + $setup(RADDR, posedge RCLK &&& RE && RCLKE, 384); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L12995 + $setup(RCLKE, posedge RCLK, 503); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L12996 + $setup(RE, posedge RCLK, 185); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L12997-13007 + $setup(WADDR, posedge WCLKN &&& WE && WCLKE, 424); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L13008 + $setup(WCLKE, posedge WCLKN, 503); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L13009-13024 + $setup(WDATA, posedge WCLKN &&& WE && WCLKE, 305); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L13025 + $setup(WE, posedge WCLKN, 252); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L13026 + (posedge RCLK => (RDATA : 16'bx)) = 1179; + endspecify +`endif +endmodule + +module SB_RAM40_4KNRNW ( + output [15:0] RDATA, + input RCLKN, + input RCLKE `ICE40_DEFAULT_ASSIGNMENT_1, + input RE `ICE40_DEFAULT_ASSIGNMENT_0, + input [10:0] RADDR, + input WCLKN, + input WCLKE `ICE40_DEFAULT_ASSIGNMENT_1, + input WE `ICE40_DEFAULT_ASSIGNMENT_0, + input [10:0] WADDR, + input [15:0] MASK `ICE40_DEFAULT_ASSIGNMENT_V(16'h 0000), + input [15:0] WDATA +); + parameter WRITE_MODE = 0; + parameter READ_MODE = 0; + + parameter INIT_0 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_1 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_2 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_3 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_4 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_5 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_6 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_7 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_8 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_9 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + + parameter INIT_FILE = ""; + + SB_RAM40_4K #( + .WRITE_MODE(WRITE_MODE), + .READ_MODE (READ_MODE ), + .INIT_0 (INIT_0 ), + .INIT_1 (INIT_1 ), + .INIT_2 (INIT_2 ), + .INIT_3 (INIT_3 ), + .INIT_4 (INIT_4 ), + .INIT_5 (INIT_5 ), + .INIT_6 (INIT_6 ), + .INIT_7 (INIT_7 ), + .INIT_8 (INIT_8 ), + .INIT_9 (INIT_9 ), + .INIT_A (INIT_A ), + .INIT_B (INIT_B ), + .INIT_C (INIT_C ), + .INIT_D (INIT_D ), + .INIT_E (INIT_E ), + .INIT_F (INIT_F ), + .INIT_FILE (INIT_FILE ) + ) RAM ( + .RDATA(RDATA), + .RCLK (~RCLKN), + .RCLKE(RCLKE), + .RE (RE ), + .RADDR(RADDR), + .WCLK (~WCLKN), + .WCLKE(WCLKE), + .WE (WE ), + .WADDR(WADDR), + .MASK (MASK ), + .WDATA(WDATA) + ); +`ifdef ICE40_HX + specify + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L343-L358 + $setup(MASK, posedge WCLKN &&& WE && WCLKE, 274); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L359-L369 + $setup(RADDR, posedge RCLKN &&& RE && RCLKE, 203); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L370 + $setup(RCLKE, posedge RCLKN, 267); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L371 + $setup(RE, posedge RCLKN, 98); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L372-L382 + $setup(WADDR, posedge WCLKN &&& WE && WCLKE, 224); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L383 + $setup(WCLKE, posedge WCLKN, 267); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L384-L399 + $setup(WDATA, posedge WCLKN &&& WE && WCLKE, 161); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L400 + $setup(WE, posedge WCLKN, 133); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L401 + (posedge RCLKN => (RDATA : 16'bx)) = 2146; + endspecify +`endif +`ifdef ICE40_LP + specify + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L343-L358 + $setup(MASK, posedge WCLKN &&& WE && WCLKE, 403); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L359-L369 + $setup(RADDR, posedge RCLKN &&& RE && RCLKE, 300); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L370 + $setup(RCLKE, posedge RCLKN, 393); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L371 + $setup(RE, posedge RCLKN, 145); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L372-L382 + $setup(WADDR, posedge WCLKN &&& WE && WCLKE, 331); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L383 + $setup(WCLKE, posedge WCLKN, 393); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L384-L399 + $setup(WDATA, posedge WCLKN &&& WE && WCLKE, 238); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L400 + $setup(WE, posedge WCLKN, 196); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L401 + (posedge RCLKN => (RDATA : 16'bx)) = 3163; + endspecify +`endif +`ifdef ICE40_U + specify + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L12968-12983 + $setup(MASK, posedge WCLKN &&& WE && WCLKE, 517); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L12984-12994 + $setup(RADDR, posedge RCLKN &&& RE && RCLKE, 384); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L12995 + $setup(RCLKE, posedge RCLKN, 503); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L12996 + $setup(RE, posedge RCLKN, 185); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L12997-13007 + $setup(WADDR, posedge WCLKN &&& WE && WCLKE, 424); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L13008 + $setup(WCLKE, posedge WCLKN, 503); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L13009-13024 + $setup(WDATA, posedge WCLKN &&& WE && WCLKE, 305); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L13025 + $setup(WE, posedge WCLKN, 252); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L13026 + (posedge RCLKN => (RDATA : 16'bx)) = 1179; + endspecify +`endif +endmodule + +// Packed IceStorm Logic Cells + +module ICESTORM_LC ( + input I0, I1, I2, I3, CIN, CLK, CEN, SR, + output LO, + output O, + output COUT +); + parameter [15:0] LUT_INIT = 0; + + parameter [0:0] NEG_CLK = 0; + parameter [0:0] CARRY_ENABLE = 0; + parameter [0:0] DFF_ENABLE = 0; + parameter [0:0] SET_NORESET = 0; + parameter [0:0] ASYNC_SR = 0; + + parameter [0:0] CIN_CONST = 0; + parameter [0:0] CIN_SET = 0; + + wire I0_pd = (I0 === 1'bz) ? 1'b0 : I0; + wire I1_pd = (I1 === 1'bz) ? 1'b0 : I1; + wire I2_pd = (I2 === 1'bz) ? 1'b0 : I2; + wire I3_pd = (I3 === 1'bz) ? 1'b0 : I3; + wire SR_pd = (SR === 1'bz) ? 1'b0 : SR; + wire CEN_pu = (CEN === 1'bz) ? 1'b1 : CEN; + + wire mux_cin = CIN_CONST ? CIN_SET : CIN; + + assign COUT = CARRY_ENABLE ? (I1_pd && I2_pd) || ((I1_pd || I2_pd) && mux_cin) : 1'bx; + + wire [7:0] lut_s3 = I3_pd ? LUT_INIT[15:8] : LUT_INIT[7:0]; + wire [3:0] lut_s2 = I2_pd ? lut_s3[ 7:4] : lut_s3[3:0]; + wire [1:0] lut_s1 = I1_pd ? lut_s2[ 3:2] : lut_s2[1:0]; + wire lut_o = I0_pd ? lut_s1[ 1] : lut_s1[ 0]; + + assign LO = lut_o; + + wire polarized_clk; + assign polarized_clk = CLK ^ NEG_CLK; + + reg o_reg = 1'b0; + always @(posedge polarized_clk) + if (CEN_pu) + o_reg <= SR_pd ? SET_NORESET : lut_o; + + reg o_reg_async = 1'b0; + always @(posedge polarized_clk, posedge SR_pd) + if (SR_pd) + o_reg_async <= SET_NORESET; + else if (CEN_pu) + o_reg_async <= lut_o; + + assign O = DFF_ENABLE ? ASYNC_SR ? o_reg_async : o_reg : lut_o; +`ifdef TIMING +specify + (I0 => O) = (0:0:0, 0:0:0); + (I1 => O) = (0:0:0, 0:0:0); + (I2 => O) = (0:0:0, 0:0:0); + (I3 => O) = (0:0:0, 0:0:0); + (I0 => LO) = (0:0:0, 0:0:0); + (I1 => LO) = (0:0:0, 0:0:0); + (I2 => LO) = (0:0:0, 0:0:0); + (I3 => LO) = (0:0:0, 0:0:0); + (I1 => COUT) = (0:0:0, 0:0:0); + (I2 => COUT) = (0:0:0, 0:0:0); + (CIN => COUT) = (0:0:0, 0:0:0); + (CLK => O) = (0:0:0, 0:0:0); + (SR => O) = (0:0:0, 0:0:0); + $setuphold(posedge CLK, posedge I0, 0:0:0, 0:0:0); + $setuphold(posedge CLK, negedge I0, 0:0:0, 0:0:0); + $setuphold(negedge CLK, posedge I0, 0:0:0, 0:0:0); + $setuphold(negedge CLK, negedge I0, 0:0:0, 0:0:0); + $setuphold(posedge CLK, posedge I1, 0:0:0, 0:0:0); + $setuphold(posedge CLK, negedge I1, 0:0:0, 0:0:0); + $setuphold(negedge CLK, posedge I1, 0:0:0, 0:0:0); + $setuphold(negedge CLK, negedge I1, 0:0:0, 0:0:0); + $setuphold(posedge CLK, posedge I2, 0:0:0, 0:0:0); + $setuphold(posedge CLK, negedge I2, 0:0:0, 0:0:0); + $setuphold(negedge CLK, posedge I2, 0:0:0, 0:0:0); + $setuphold(negedge CLK, negedge I2, 0:0:0, 0:0:0); + $setuphold(posedge CLK, posedge I3, 0:0:0, 0:0:0); + $setuphold(posedge CLK, negedge I3, 0:0:0, 0:0:0); + $setuphold(negedge CLK, posedge I3, 0:0:0, 0:0:0); + $setuphold(negedge CLK, negedge I3, 0:0:0, 0:0:0); + $setuphold(posedge CLK, posedge CEN, 0:0:0, 0:0:0); + $setuphold(posedge CLK, negedge CEN, 0:0:0, 0:0:0); + $setuphold(negedge CLK, posedge CEN, 0:0:0, 0:0:0); + $setuphold(negedge CLK, negedge CEN, 0:0:0, 0:0:0); + $setuphold(posedge CLK, posedge SR, 0:0:0, 0:0:0); + $setuphold(posedge CLK, negedge SR, 0:0:0, 0:0:0); + $setuphold(negedge CLK, posedge SR, 0:0:0, 0:0:0); + $setuphold(negedge CLK, negedge SR, 0:0:0, 0:0:0); +endspecify +`endif +`ifdef ICE40_HX +specify + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L79 + (CIN => COUT) = (101:112:126, 85:94:105); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L80 + (I0 => O) = (361:399:449, 310:343:386); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L81 + (I0 => LO) = (293:324:365, 310:343:386); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L82 + (I1 => COUT) = (209:231:259, 197:218:245); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L83 + (I1 => O) = (321:355:400, 304:337:379); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L84 + (I1 => LO) = (259:287:323, 304:337:379); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L85 + (I2 => COUT) = (186:206:231, 107:118:133); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L86 + (I2 => O) = (304:337:379, 282:312:351); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L87 + (I2 => LO) = (254:281:316, 231:256:288); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L88 + (I3 => O) = (254:281:316, 231:256:288); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L89 + (I3 => LO) = (214:237:267, 220:243:274); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L90 + (posedge CLK => (O : 1'bx)) = (434:480:540, 434:480:540); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L91-L92 + (SR => O) = (482:535:599, 482:533:599); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L74 + $setuphold(posedge CLK, posedge I0, 378:418:470, 0:0:0); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L68 + $setuphold(posedge CLK, negedge I0, 321:355:400, 0:0:0); + $setuphold(negedge CLK, posedge I0, 378:418:470, 0:0:0); + $setuphold(negedge CLK, negedge I0, 321:355:400, 0:0:0); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L75 + $setuphold(posedge CLK, posedge I1, 321:355:400, 0:0:0); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L69 + $setuphold(posedge CLK, negedge I1, 304:337:379, 0:0:0); + $setuphold(negedge CLK, posedge I1, 321:355:400, 0:0:0); + $setuphold(negedge CLK, negedge I1, 304:337:379, 0:0:0); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L76 + $setuphold(posedge CLK, posedge I2, 299:330:372, 0:0:0); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L70 + $setuphold(posedge CLK, negedge I2, 259:287:323, 0:0:0); + $setuphold(negedge CLK, posedge I2, 299:330:372, 0:0:0); + $setuphold(negedge CLK, negedge I2, 259:287:323, 0:0:0); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L77 + $setuphold(posedge CLK, posedge I3, 220:243:274, 0:0:0); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L71 + $setuphold(posedge CLK, negedge I3, 175:183:217, 0:0:0); + $setuphold(negedge CLK, posedge I3, 220:243:274, 0:0:0); + $setuphold(negedge CLK, negedge I3, 175:183:217, 0:0:0); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L73 + $setuphold(posedge CLK, negedge CEN, 0:0:0, 0:0:0); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L67 + $setuphold(posedge CLK, posedge CEN, 0:0:0, 0:0:0); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L78 + $setuphold(posedge CLK, posedge SR, 163:181:203, 0:0:0); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_hx1k.txt#L72 + $setuphold(posedge CLK, negedge SR, 113:125:140, 0:0:0); + $setuphold(negedge CLK, posedge SR, 163:181:203, 0:0:0); + $setuphold(negedge CLK, negedge SR, 113:125:140, 0:0:0); +endspecify +`endif +`ifdef ICE40_LP +specify + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L79 + (CIN => COUT) = (118:153:186, 98:128:155); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L80 + (I0 => O) = (419:545:662, 360:468:569); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L81 + (I0 => LO) = (340:442:538, 360:468:569); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L82 + (I1 => COUT) = (242:315:382, 229:298:362); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L83 + (I1 => O) = (372:485:589, 353:459:558); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L84 + (I1 => LO) = (301:391:475, 353:459:558); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L85 + (I2 => COUT) = (216:281:341, 124:162:196); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L86 + (I2 => O) = (353:459:558, 327:425:517); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L87 + (I2 => LO) = (288:374:455, 321:417:507); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L88 + (I3 => O) = (294:383:465, 268:349:424); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L89 + (I3 => LO) = (249:323:393, 255:332:403); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L90 + (posedge CLK => (O : 1'bx)) = (504:655:796, 504:655:796); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L91-L92 + (SR => O) = (559:726:883, 559:726:883); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L74 + $setuphold(posedge CLK, posedge I0, 438:570:693, 0:0:0); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L68 + $setuphold(posedge CLK, negedge I0, 373:485:589, 0:0:0); + $setuphold(negedge CLK, posedge I0, 438:570:693, 0:0:0); + $setuphold(negedge CLK, negedge I0, 373:485:589, 0:0:0); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L75 + $setuphold(posedge CLK, posedge I1, 373:485:589, 0:0:0); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L69 + $setuphold(posedge CLK, negedge I1, 353:459:558, 0:0:0); + $setuphold(negedge CLK, posedge I1, 373:485:589, 0:0:0); + $setuphold(negedge CLK, negedge I1, 353:459:558, 0:0:0); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L76 + $setuphold(posedge CLK, posedge I2, 347:451:548, 0:0:0); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L70 + $setuphold(posedge CLK, negedge I2, 301:391:475, 0:0:0); + $setuphold(negedge CLK, posedge I2, 347:451:548, 0:0:0); + $setuphold(negedge CLK, negedge I2, 301:391:475, 0:0:0); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L77 + $setuphold(posedge CLK, posedge I3, 255:332:403, 0:0:0); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L71 + $setuphold(posedge CLK, negedge I3, 203:264:320, 0:0:0); + $setuphold(negedge CLK, posedge I3, 255:332:403, 0:0:0); + $setuphold(negedge CLK, negedge I3, 203:264:320, 0:0:0); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L73 + $setuphold(posedge CLK, negedge CEN, 0:0:0, 0:0:0); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L67 + $setuphold(posedge CLK, posedge CEN, 0:0:0, 0:0:0); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L78 + $setuphold(posedge CLK, posedge SR, 190:247:300, 0:0:0); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_lp1k.txt#L72 + $setuphold(posedge CLK, negedge SR, 131:170:207, 0:0:0); + $setuphold(negedge CLK, posedge SR, 190:247:300, 0:0:0); + $setuphold(negedge CLK, negedge SR, 131:170:207, 0:0:0); +endspecify +`endif +`ifdef ICE40_U +specify + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L91 + (CIN => COUT) = (103:181:278, 103:181:278); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L92 + (I0 => O) = (462:808:1255, 477:834:1285); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L93 + (I0 => LO) = (315:550:848, 334:585:901); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L94 + (I1 => COUT) = (251:438:675, 246:430:662); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L95 + (I1 => O) = (438:765:1179, 457:799:1232); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L96 + (I1 => LO) = (275:481:742, 329:576:887); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L97 + (I2 => COUT) = (226:395:609, 133:232:358); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L98 + (I2 => O) = (438:765:1179, 447:782:1205); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L99 + (I2 => LO) = (261:456:702, 290:507:781); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L100 + (I3 => O) = (320:559:861, 226:370:874); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L101 + (I3 => LO) = (216:378:583, 226:395:609); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L102 + (posedge CLK => (O : 1'bx)) = (516:903:1391, 516:903:1391); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L103-104 + (SR => O) = (420:734:1131, 590:1032:1589); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L86 + $setuphold(posedge CLK, posedge I0, 457:799:1232, 0:0:0); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L80 + $setuphold(posedge CLK, negedge I0, 393:688:1060, 0:0:0); + $setuphold(negedge CLK, posedge I0, 457:799:1232, 0:0:0); + $setuphold(negedge CLK, negedge I0, 393:688:1060, 0:0:0); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L87 + $setuphold(posedge CLK, posedge I1, 393:688:1060, 0:0:0); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L81 + $setuphold(posedge CLK, negedge I1, 373:653:1007, 0:0:0); + $setuphold(negedge CLK, posedge I1, 393:688:1060, 0:0:0); + $setuphold(negedge CLK, negedge I1, 373:653:1007, 0:0:0); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L88 + $setuphold(posedge CLK, posedge I2, 364:636:980, 0:0:0); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L82 + $setuphold(posedge CLK, negedge I2, 320:559:861, 0:0:0); + $setuphold(negedge CLK, posedge I2, 364:636:980, 0:0:0); + $setuphold(negedge CLK, negedge I2, 320:559:861, 0:0:0); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L89 + $setuphold(posedge CLK, posedge I3, 279:473:728, 0:0:0); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L83 + $setuphold(posedge CLK, negedge I3, 216:378:583, 0:0:0); + $setuphold(negedge CLK, posedge I3, 279:473:728, 0:0:0); + $setuphold(negedge CLK, negedge I3, 216:378:583, 0:0:0); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L85 + $setuphold(posedge CLK, negedge CEN, 0:0:0, 0:0:0); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L79 + $setuphold(posedge CLK, posedge CEN, 0:0:0, 0:0:0); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L90 + $setuphold(posedge CLK, posedge SR, 197:344:530, 0:0:0); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L84 + $setuphold(posedge CLK, negedge SR, 143:249:384, 0:0:0); + $setuphold(negedge CLK, posedge SR, 197:344:530, 0:0:0); + $setuphold(negedge CLK, negedge SR, 131:170:207, 0:0:0); +endspecify +`endif +endmodule + +// SiliconBlue PLL Cells + +(* blackbox *) +module SB_PLL40_CORE ( + input REFERENCECLK, + output PLLOUTCORE, + output PLLOUTGLOBAL, + input EXTFEEDBACK, + input [7:0] DYNAMICDELAY, + output LOCK, + input BYPASS, + input RESETB, + input LATCHINPUTVALUE, + output SDO, + input SDI, + input SCLK +); + parameter FEEDBACK_PATH = "SIMPLE"; + parameter DELAY_ADJUSTMENT_MODE_FEEDBACK = "FIXED"; + parameter DELAY_ADJUSTMENT_MODE_RELATIVE = "FIXED"; + parameter SHIFTREG_DIV_MODE = 1'b0; + parameter FDA_FEEDBACK = 4'b0000; + parameter FDA_RELATIVE = 4'b0000; + parameter PLLOUT_SELECT = "GENCLK"; + parameter DIVR = 4'b0000; + parameter DIVF = 7'b0000000; + parameter DIVQ = 3'b000; + parameter FILTER_RANGE = 3'b000; + parameter ENABLE_ICEGATE = 1'b0; + parameter TEST_MODE = 1'b0; + parameter EXTERNAL_DIVIDE_FACTOR = 1; +endmodule + +(* blackbox *) +module SB_PLL40_PAD ( + input PACKAGEPIN, + output PLLOUTCORE, + output PLLOUTGLOBAL, + input EXTFEEDBACK, + input [7:0] DYNAMICDELAY, + output LOCK, + input BYPASS, + input RESETB, + input LATCHINPUTVALUE, + output SDO, + input SDI, + input SCLK +); + parameter FEEDBACK_PATH = "SIMPLE"; + parameter DELAY_ADJUSTMENT_MODE_FEEDBACK = "FIXED"; + parameter DELAY_ADJUSTMENT_MODE_RELATIVE = "FIXED"; + parameter SHIFTREG_DIV_MODE = 1'b0; + parameter FDA_FEEDBACK = 4'b0000; + parameter FDA_RELATIVE = 4'b0000; + parameter PLLOUT_SELECT = "GENCLK"; + parameter DIVR = 4'b0000; + parameter DIVF = 7'b0000000; + parameter DIVQ = 3'b000; + parameter FILTER_RANGE = 3'b000; + parameter ENABLE_ICEGATE = 1'b0; + parameter TEST_MODE = 1'b0; + parameter EXTERNAL_DIVIDE_FACTOR = 1; +endmodule + +(* blackbox *) +module SB_PLL40_2_PAD ( + input PACKAGEPIN, + output PLLOUTCOREA, + output PLLOUTGLOBALA, + output PLLOUTCOREB, + output PLLOUTGLOBALB, + input EXTFEEDBACK, + input [7:0] DYNAMICDELAY, + output LOCK, + input BYPASS, + input RESETB, + input LATCHINPUTVALUE, + output SDO, + input SDI, + input SCLK +); + parameter FEEDBACK_PATH = "SIMPLE"; + parameter DELAY_ADJUSTMENT_MODE_FEEDBACK = "FIXED"; + parameter DELAY_ADJUSTMENT_MODE_RELATIVE = "FIXED"; + parameter SHIFTREG_DIV_MODE = 1'b0; + parameter FDA_FEEDBACK = 4'b0000; + parameter FDA_RELATIVE = 4'b0000; + parameter PLLOUT_SELECT_PORTB = "GENCLK"; + parameter DIVR = 4'b0000; + parameter DIVF = 7'b0000000; + parameter DIVQ = 3'b000; + parameter FILTER_RANGE = 3'b000; + parameter ENABLE_ICEGATE_PORTA = 1'b0; + parameter ENABLE_ICEGATE_PORTB = 1'b0; + parameter TEST_MODE = 1'b0; + parameter EXTERNAL_DIVIDE_FACTOR = 1; +endmodule + +(* blackbox *) +module SB_PLL40_2F_CORE ( + input REFERENCECLK, + output PLLOUTCOREA, + output PLLOUTGLOBALA, + output PLLOUTCOREB, + output PLLOUTGLOBALB, + input EXTFEEDBACK, + input [7:0] DYNAMICDELAY, + output LOCK, + input BYPASS, + input RESETB, + input LATCHINPUTVALUE, + output SDO, + input SDI, + input SCLK +); + parameter FEEDBACK_PATH = "SIMPLE"; + parameter DELAY_ADJUSTMENT_MODE_FEEDBACK = "FIXED"; + parameter DELAY_ADJUSTMENT_MODE_RELATIVE = "FIXED"; + parameter SHIFTREG_DIV_MODE = 1'b0; + parameter FDA_FEEDBACK = 4'b0000; + parameter FDA_RELATIVE = 4'b0000; + parameter PLLOUT_SELECT_PORTA = "GENCLK"; + parameter PLLOUT_SELECT_PORTB = "GENCLK"; + parameter DIVR = 4'b0000; + parameter DIVF = 7'b0000000; + parameter DIVQ = 3'b000; + parameter FILTER_RANGE = 3'b000; + parameter ENABLE_ICEGATE_PORTA = 1'b0; + parameter ENABLE_ICEGATE_PORTB = 1'b0; + parameter TEST_MODE = 1'b0; + parameter EXTERNAL_DIVIDE_FACTOR = 1; +endmodule + +(* blackbox *) +module SB_PLL40_2F_PAD ( + input PACKAGEPIN, + output PLLOUTCOREA, + output PLLOUTGLOBALA, + output PLLOUTCOREB, + output PLLOUTGLOBALB, + input EXTFEEDBACK, + input [7:0] DYNAMICDELAY, + output LOCK, + input BYPASS, + input RESETB, + input LATCHINPUTVALUE, + output SDO, + input SDI, + input SCLK +); + parameter FEEDBACK_PATH = "SIMPLE"; + parameter DELAY_ADJUSTMENT_MODE_FEEDBACK = "FIXED"; + parameter DELAY_ADJUSTMENT_MODE_RELATIVE = "FIXED"; + parameter SHIFTREG_DIV_MODE = 2'b00; + parameter FDA_FEEDBACK = 4'b0000; + parameter FDA_RELATIVE = 4'b0000; + parameter PLLOUT_SELECT_PORTA = "GENCLK"; + parameter PLLOUT_SELECT_PORTB = "GENCLK"; + parameter DIVR = 4'b0000; + parameter DIVF = 7'b0000000; + parameter DIVQ = 3'b000; + parameter FILTER_RANGE = 3'b000; + parameter ENABLE_ICEGATE_PORTA = 1'b0; + parameter ENABLE_ICEGATE_PORTB = 1'b0; + parameter TEST_MODE = 1'b0; + parameter EXTERNAL_DIVIDE_FACTOR = 1; +endmodule + +// SiliconBlue Device Configuration Cells + +(* blackbox, keep *) +module SB_WARMBOOT ( + input BOOT, + input S1, + input S0 +); +endmodule + +module SB_SPRAM256KA ( + input [13:0] ADDRESS, + input [15:0] DATAIN, + input [3:0] MASKWREN, + input WREN, CHIPSELECT, CLOCK, STANDBY, SLEEP, POWEROFF, + output reg [15:0] DATAOUT +); +`ifndef BLACKBOX +`ifndef EQUIV + reg [15:0] mem [0:16383]; + wire off = SLEEP || !POWEROFF; + integer i; + + always @(negedge POWEROFF) begin + for (i = 0; i <= 16383; i = i+1) + mem[i] = 16'bx; + end + + always @(posedge CLOCK, posedge off) begin + if (off) begin + DATAOUT <= 0; + end else + if (STANDBY) begin + DATAOUT <= 16'bx; + end else + if (CHIPSELECT) begin + if (!WREN) begin + DATAOUT <= mem[ADDRESS]; + end else begin + if (MASKWREN[0]) mem[ADDRESS][ 3: 0] <= DATAIN[ 3: 0]; + if (MASKWREN[1]) mem[ADDRESS][ 7: 4] <= DATAIN[ 7: 4]; + if (MASKWREN[2]) mem[ADDRESS][11: 8] <= DATAIN[11: 8]; + if (MASKWREN[3]) mem[ADDRESS][15:12] <= DATAIN[15:12]; + DATAOUT <= 16'bx; + end + end + end +`endif +`endif +`ifdef ICE40_U + specify + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L13169-L13182 + $setup(posedge ADDRESS, posedge CLOCK, 268); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L13183 + $setup(CHIPSELECT, posedge CLOCK, 404); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L13184-L13199 + $setup(DATAIN, posedge CLOCK, 143); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L13200-L13203 + $setup(MASKWREN, posedge CLOCK, 143); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L13167 + //$setup(negedge SLEEP, posedge CLOCK, 41505); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L13167 + //$setup(negedge STANDBY, posedge CLOCK, 1715); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L13206 + $setup(WREN, posedge CLOCK, 289); + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L13207-L13222 + (posedge CLOCK => (DATAOUT : 16'bx)) = 1821; + // https://github.com/YosysHQ/icestorm/blob/95949315364f8d9b0c693386aefadf44b28e2cf6/icefuzz/timings_up5k.txt#L13223-L13238 + (posedge SLEEP => (DATAOUT : 16'b0)) = 1099; + endspecify +`endif +endmodule + +(* blackbox *) +module SB_HFOSC( + input TRIM0, + input TRIM1, + input TRIM2, + input TRIM3, + input TRIM4, + input TRIM5, + input TRIM6, + input TRIM7, + input TRIM8, + input TRIM9, + input CLKHFPU, + input CLKHFEN, + output CLKHF +); +parameter TRIM_EN = "0b0"; +parameter CLKHF_DIV = "0b00"; +endmodule + +(* blackbox *) +module SB_LFOSC( + input CLKLFPU, + input CLKLFEN, + output CLKLF +); +endmodule + +(* blackbox *) +module SB_RGBA_DRV( + input CURREN, + input RGBLEDEN, + input RGB0PWM, + input RGB1PWM, + input RGB2PWM, + output RGB0, + output RGB1, + output RGB2 +); +parameter CURRENT_MODE = "0b0"; +parameter RGB0_CURRENT = "0b000000"; +parameter RGB1_CURRENT = "0b000000"; +parameter RGB2_CURRENT = "0b000000"; +endmodule + +(* blackbox *) +module SB_LED_DRV_CUR( + input EN, + output LEDPU +); +endmodule + +(* blackbox *) +module SB_RGB_DRV( + input RGBLEDEN, + input RGB0PWM, + input RGB1PWM, + input RGB2PWM, + input RGBPU, + output RGB0, + output RGB1, + output RGB2 +); +parameter CURRENT_MODE = "0b0"; +parameter RGB0_CURRENT = "0b000000"; +parameter RGB1_CURRENT = "0b000000"; +parameter RGB2_CURRENT = "0b000000"; +endmodule + +(* blackbox *) +module SB_I2C( + input SBCLKI, + input SBRWI, + input SBSTBI, + input SBADRI7, + input SBADRI6, + input SBADRI5, + input SBADRI4, + input SBADRI3, + input SBADRI2, + input SBADRI1, + input SBADRI0, + input SBDATI7, + input SBDATI6, + input SBDATI5, + input SBDATI4, + input SBDATI3, + input SBDATI2, + input SBDATI1, + input SBDATI0, + input SCLI, + input SDAI, + output SBDATO7, + output SBDATO6, + output SBDATO5, + output SBDATO4, + output SBDATO3, + output SBDATO2, + output SBDATO1, + output SBDATO0, + output SBACKO, + output I2CIRQ, + output I2CWKUP, + output SCLO, //inout in the SB verilog library, but output in the VHDL and PDF libs and seemingly in the HW itself + output SCLOE, + output SDAO, + output SDAOE +); +parameter I2C_SLAVE_INIT_ADDR = "0b1111100001"; +parameter BUS_ADDR74 = "0b0001"; +endmodule + +(* blackbox *) +module SB_SPI ( + input SBCLKI, + input SBRWI, + input SBSTBI, + input SBADRI7, + input SBADRI6, + input SBADRI5, + input SBADRI4, + input SBADRI3, + input SBADRI2, + input SBADRI1, + input SBADRI0, + input SBDATI7, + input SBDATI6, + input SBDATI5, + input SBDATI4, + input SBDATI3, + input SBDATI2, + input SBDATI1, + input SBDATI0, + input MI, + input SI, + input SCKI, + input SCSNI, + output SBDATO7, + output SBDATO6, + output SBDATO5, + output SBDATO4, + output SBDATO3, + output SBDATO2, + output SBDATO1, + output SBDATO0, + output SBACKO, + output SPIIRQ, + output SPIWKUP, + output SO, + output SOE, + output MO, + output MOE, + output SCKO, //inout in the SB verilog library, but output in the VHDL and PDF libs and seemingly in the HW itself + output SCKOE, + output MCSNO3, + output MCSNO2, + output MCSNO1, + output MCSNO0, + output MCSNOE3, + output MCSNOE2, + output MCSNOE1, + output MCSNOE0 +); +parameter BUS_ADDR74 = "0b0000"; +endmodule + +(* blackbox *) +module SB_LEDDA_IP( + input LEDDCS, + input LEDDCLK, + input LEDDDAT7, + input LEDDDAT6, + input LEDDDAT5, + input LEDDDAT4, + input LEDDDAT3, + input LEDDDAT2, + input LEDDDAT1, + input LEDDDAT0, + input LEDDADDR3, + input LEDDADDR2, + input LEDDADDR1, + input LEDDADDR0, + input LEDDDEN, + input LEDDEXE, + input LEDDRST, + output PWMOUT0, + output PWMOUT1, + output PWMOUT2, + output LEDDON +); +endmodule + +(* blackbox *) +module SB_FILTER_50NS( + input FILTERIN, + output FILTEROUT +); +endmodule + +module SB_IO_I3C ( + inout PACKAGE_PIN, + input LATCH_INPUT_VALUE, + input CLOCK_ENABLE, + input INPUT_CLK, + input OUTPUT_CLK, + input OUTPUT_ENABLE, + input D_OUT_0, + input D_OUT_1, + output D_IN_0, + output D_IN_1, + input PU_ENB, + input WEAK_PU_ENB +); + parameter [5:0] PIN_TYPE = 6'b000000; + parameter [0:0] PULLUP = 1'b0; + parameter [0:0] WEAK_PULLUP = 1'b0; + parameter [0:0] NEG_TRIGGER = 1'b0; + parameter IO_STANDARD = "SB_LVCMOS"; + +`ifndef BLACKBOX + reg dout, din_0, din_1; + reg din_q_0, din_q_1; + reg dout_q_0, dout_q_1; + reg outena_q; + + generate if (!NEG_TRIGGER) begin + always @(posedge INPUT_CLK) if (CLOCK_ENABLE) din_q_0 <= PACKAGE_PIN; + always @(negedge INPUT_CLK) if (CLOCK_ENABLE) din_q_1 <= PACKAGE_PIN; + always @(posedge OUTPUT_CLK) if (CLOCK_ENABLE) dout_q_0 <= D_OUT_0; + always @(negedge OUTPUT_CLK) if (CLOCK_ENABLE) dout_q_1 <= D_OUT_1; + always @(posedge OUTPUT_CLK) if (CLOCK_ENABLE) outena_q <= OUTPUT_ENABLE; + end else begin + always @(negedge INPUT_CLK) if (CLOCK_ENABLE) din_q_0 <= PACKAGE_PIN; + always @(posedge INPUT_CLK) if (CLOCK_ENABLE) din_q_1 <= PACKAGE_PIN; + always @(negedge OUTPUT_CLK) if (CLOCK_ENABLE) dout_q_0 <= D_OUT_0; + always @(posedge OUTPUT_CLK) if (CLOCK_ENABLE) dout_q_1 <= D_OUT_1; + always @(negedge OUTPUT_CLK) if (CLOCK_ENABLE) outena_q <= OUTPUT_ENABLE; + end endgenerate + + always @* begin + if (!PIN_TYPE[1] || !LATCH_INPUT_VALUE) + din_0 = PIN_TYPE[0] ? PACKAGE_PIN : din_q_0; + din_1 = din_q_1; + end + + // work around simulation glitches on dout in DDR mode + reg outclk_delayed_1; + reg outclk_delayed_2; + always @* outclk_delayed_1 <= OUTPUT_CLK; + always @* outclk_delayed_2 <= outclk_delayed_1; + + always @* begin + if (PIN_TYPE[3]) + dout = PIN_TYPE[2] ? !dout_q_0 : D_OUT_0; + else + dout = (outclk_delayed_2 ^ NEG_TRIGGER) || PIN_TYPE[2] ? dout_q_0 : dout_q_1; + end + + assign D_IN_0 = din_0, D_IN_1 = din_1; + + generate + if (PIN_TYPE[5:4] == 2'b01) assign PACKAGE_PIN = dout; + if (PIN_TYPE[5:4] == 2'b10) assign PACKAGE_PIN = OUTPUT_ENABLE ? dout : 1'bz; + if (PIN_TYPE[5:4] == 2'b11) assign PACKAGE_PIN = outena_q ? dout : 1'bz; + endgenerate +`endif +endmodule + +module SB_IO_OD ( + inout PACKAGEPIN, + input LATCHINPUTVALUE, + input CLOCKENABLE, + input INPUTCLK, + input OUTPUTCLK, + input OUTPUTENABLE, + input DOUT1, + input DOUT0, + output DIN1, + output DIN0 +); + parameter [5:0] PIN_TYPE = 6'b000000; + parameter [0:0] NEG_TRIGGER = 1'b0; + +`ifndef BLACKBOX + reg dout, din_0, din_1; + reg din_q_0, din_q_1; + reg dout_q_0, dout_q_1; + reg outena_q; + + generate if (!NEG_TRIGGER) begin + always @(posedge INPUTCLK) if (CLOCKENABLE) din_q_0 <= PACKAGEPIN; + always @(negedge INPUTCLK) if (CLOCKENABLE) din_q_1 <= PACKAGEPIN; + always @(posedge OUTPUTCLK) if (CLOCKENABLE) dout_q_0 <= DOUT0; + always @(negedge OUTPUTCLK) if (CLOCKENABLE) dout_q_1 <= DOUT1; + always @(posedge OUTPUTCLK) if (CLOCKENABLE) outena_q <= OUTPUTENABLE; + end else begin + always @(negedge INPUTCLK) if (CLOCKENABLE) din_q_0 <= PACKAGEPIN; + always @(posedge INPUTCLK) if (CLOCKENABLE) din_q_1 <= PACKAGEPIN; + always @(negedge OUTPUTCLK) if (CLOCKENABLE) dout_q_0 <= DOUT0; + always @(posedge OUTPUTCLK) if (CLOCKENABLE) dout_q_1 <= DOUT1; + always @(negedge OUTPUTCLK) if (CLOCKENABLE) outena_q <= OUTPUTENABLE; + end endgenerate + + always @* begin + if (!PIN_TYPE[1] || !LATCHINPUTVALUE) + din_0 = PIN_TYPE[0] ? PACKAGEPIN : din_q_0; + din_1 = din_q_1; + end + + // work around simulation glitches on dout in DDR mode + reg outclk_delayed_1; + reg outclk_delayed_2; + always @* outclk_delayed_1 <= OUTPUTCLK; + always @* outclk_delayed_2 <= outclk_delayed_1; + + always @* begin + if (PIN_TYPE[3]) + dout = PIN_TYPE[2] ? !dout_q_0 : DOUT0; + else + dout = (outclk_delayed_2 ^ NEG_TRIGGER) || PIN_TYPE[2] ? dout_q_0 : dout_q_1; + end + + assign DIN0 = din_0, DIN1 = din_1; + + generate + if (PIN_TYPE[5:4] == 2'b01) assign PACKAGEPIN = dout ? 1'bz : 1'b0; + if (PIN_TYPE[5:4] == 2'b10) assign PACKAGEPIN = OUTPUTENABLE ? (dout ? 1'bz : 1'b0) : 1'bz; + if (PIN_TYPE[5:4] == 2'b11) assign PACKAGEPIN = outena_q ? (dout ? 1'bz : 1'b0) : 1'bz; + endgenerate +`endif +endmodule + +//(* abc9_box, lib_whitebox *) // TODO +module SB_MAC16 ( + input CLK, CE, + input [15:0] C, A, B, D, + input AHOLD, BHOLD, CHOLD, DHOLD, + input IRSTTOP, IRSTBOT, + input ORSTTOP, ORSTBOT, + input OLOADTOP, OLOADBOT, + input ADDSUBTOP, ADDSUBBOT, + input OHOLDTOP, OHOLDBOT, + input CI, ACCUMCI, SIGNEXTIN, + output [31:0] O, + output CO, ACCUMCO, SIGNEXTOUT +); + parameter [0:0] NEG_TRIGGER = 0; + parameter [0:0] C_REG = 0; + parameter [0:0] A_REG = 0; + parameter [0:0] B_REG = 0; + parameter [0:0] D_REG = 0; + parameter [0:0] TOP_8x8_MULT_REG = 0; + parameter [0:0] BOT_8x8_MULT_REG = 0; + parameter [0:0] PIPELINE_16x16_MULT_REG1 = 0; + parameter [0:0] PIPELINE_16x16_MULT_REG2 = 0; + parameter [1:0] TOPOUTPUT_SELECT = 0; + parameter [1:0] TOPADDSUB_LOWERINPUT = 0; + parameter [0:0] TOPADDSUB_UPPERINPUT = 0; + parameter [1:0] TOPADDSUB_CARRYSELECT = 0; + parameter [1:0] BOTOUTPUT_SELECT = 0; + parameter [1:0] BOTADDSUB_LOWERINPUT = 0; + parameter [0:0] BOTADDSUB_UPPERINPUT = 0; + parameter [1:0] BOTADDSUB_CARRYSELECT = 0; + parameter [0:0] MODE_8x8 = 0; + parameter [0:0] A_SIGNED = 0; + parameter [0:0] B_SIGNED = 0; + + wire clock = CLK ^ NEG_TRIGGER; + + // internal wires, compare Figure on page 133 of ICE Technology Library 3.0 and Fig 2 on page 2 of Lattice TN1295-DSP + // http://www.latticesemi.com/~/media/LatticeSemi/Documents/TechnicalBriefs/SBTICETechnologyLibrary201608.pdf + // https://www.latticesemi.com/-/media/LatticeSemi/Documents/ApplicationNotes/AD/DSPFunctionUsageGuideforICE40Devices.ashx + wire [15:0] iA, iB, iC, iD; + wire [15:0] iF, iJ, iK, iG; + wire [31:0] iL, iH; + wire [15:0] iW, iX, iP, iQ; + wire [15:0] iY, iZ, iR, iS; + wire HCI, LCI, LCO; + + // Regs C and A + reg [15:0] rC, rA; + always @(posedge clock, posedge IRSTTOP) begin + if (IRSTTOP) begin + rC <= 0; + rA <= 0; + end else if (CE) begin + if (!CHOLD) rC <= C; + if (!AHOLD) rA <= A; + end + end + assign iC = C_REG ? rC : C; + assign iA = A_REG ? rA : A; + + // Regs B and D + reg [15:0] rB, rD; + always @(posedge clock, posedge IRSTBOT) begin + if (IRSTBOT) begin + rB <= 0; + rD <= 0; + end else if (CE) begin + if (!BHOLD) rB <= B; + if (!DHOLD) rD <= D; + end + end + assign iB = B_REG ? rB : B; + assign iD = D_REG ? rD : D; + + // Multiplier Stage + wire [15:0] p_Ah_Bh, p_Al_Bh, p_Ah_Bl, p_Al_Bl; + wire [15:0] Ah, Al, Bh, Bl; + assign Ah = {A_SIGNED ? {8{iA[15]}} : 8'b0, iA[15: 8]}; + assign Al = {A_SIGNED && MODE_8x8 ? {8{iA[ 7]}} : 8'b0, iA[ 7: 0]}; + assign Bh = {B_SIGNED ? {8{iB[15]}} : 8'b0, iB[15: 8]}; + assign Bl = {B_SIGNED && MODE_8x8 ? {8{iB[ 7]}} : 8'b0, iB[ 7: 0]}; + assign p_Ah_Bh = Ah * Bh; // F + assign p_Al_Bh = {8'b0, Al[7:0]} * Bh; // J + assign p_Ah_Bl = Ah * {8'b0, Bl[7:0]}; // K + assign p_Al_Bl = Al * Bl; // G + + // Regs F and J + reg [15:0] rF, rJ; + always @(posedge clock, posedge IRSTTOP) begin + if (IRSTTOP) begin + rF <= 0; + rJ <= 0; + end else if (CE) begin + rF <= p_Ah_Bh; + if (!MODE_8x8) rJ <= p_Al_Bh; + end + end + assign iF = TOP_8x8_MULT_REG ? rF : p_Ah_Bh; + assign iJ = PIPELINE_16x16_MULT_REG1 ? rJ : p_Al_Bh; + + // Regs K and G + reg [15:0] rK, rG; + always @(posedge clock, posedge IRSTBOT) begin + if (IRSTBOT) begin + rK <= 0; + rG <= 0; + end else if (CE) begin + if (!MODE_8x8) rK <= p_Ah_Bl; + rG <= p_Al_Bl; + end + end + assign iK = PIPELINE_16x16_MULT_REG1 ? rK : p_Ah_Bl; + assign iG = BOT_8x8_MULT_REG ? rG : p_Al_Bl; + + // Adder Stage + wire [23:0] iK_e = {A_SIGNED ? {8{iK[15]}} : 8'b0, iK}; + wire [23:0] iJ_e = {B_SIGNED ? {8{iJ[15]}} : 8'b0, iJ}; + assign iL = iG + (iK_e << 8) + (iJ_e << 8) + (iF << 16); + + // Reg H + reg [31:0] rH; + always @(posedge clock, posedge IRSTBOT) begin + if (IRSTBOT) begin + rH <= 0; + end else if (CE) begin + if (!MODE_8x8) rH <= iL; + end + end + assign iH = PIPELINE_16x16_MULT_REG2 ? rH : iL; + + // Hi Output Stage + wire [15:0] XW, Oh; + reg [15:0] rQ; + assign iW = TOPADDSUB_UPPERINPUT ? iC : iQ; + assign iX = (TOPADDSUB_LOWERINPUT == 0) ? iA : (TOPADDSUB_LOWERINPUT == 1) ? iF : (TOPADDSUB_LOWERINPUT == 2) ? iH[31:16] : {16{iZ[15]}}; + assign {ACCUMCO, XW} = iX + (iW ^ {16{ADDSUBTOP}}) + HCI; + assign CO = ACCUMCO ^ ADDSUBTOP; + assign iP = OLOADTOP ? iC : XW ^ {16{ADDSUBTOP}}; + always @(posedge clock, posedge ORSTTOP) begin + if (ORSTTOP) begin + rQ <= 0; + end else if (CE) begin + if (!OHOLDTOP) rQ <= iP; + end + end + assign iQ = rQ; + assign Oh = (TOPOUTPUT_SELECT == 0) ? iP : (TOPOUTPUT_SELECT == 1) ? iQ : (TOPOUTPUT_SELECT == 2) ? iF : iH[31:16]; + assign HCI = (TOPADDSUB_CARRYSELECT == 0) ? 1'b0 : (TOPADDSUB_CARRYSELECT == 1) ? 1'b1 : (TOPADDSUB_CARRYSELECT == 2) ? LCO : LCO ^ ADDSUBBOT; + assign SIGNEXTOUT = iX[15]; + + // Lo Output Stage + wire [15:0] YZ, Ol; + reg [15:0] rS; + assign iY = BOTADDSUB_UPPERINPUT ? iD : iS; + assign iZ = (BOTADDSUB_LOWERINPUT == 0) ? iB : (BOTADDSUB_LOWERINPUT == 1) ? iG : (BOTADDSUB_LOWERINPUT == 2) ? iH[15:0] : {16{SIGNEXTIN}}; + assign {LCO, YZ} = iZ + (iY ^ {16{ADDSUBBOT}}) + LCI; + assign iR = OLOADBOT ? iD : YZ ^ {16{ADDSUBBOT}}; + always @(posedge clock, posedge ORSTBOT) begin + if (ORSTBOT) begin + rS <= 0; + end else if (CE) begin + if (!OHOLDBOT) rS <= iR; + end + end + assign iS = rS; + assign Ol = (BOTOUTPUT_SELECT == 0) ? iR : (BOTOUTPUT_SELECT == 1) ? iS : (BOTOUTPUT_SELECT == 2) ? iG : iH[15:0]; + assign LCI = (BOTADDSUB_CARRYSELECT == 0) ? 1'b0 : (BOTADDSUB_CARRYSELECT == 1) ? 1'b1 : (BOTADDSUB_CARRYSELECT == 2) ? ACCUMCI : CI; + assign O = {Oh, Ol}; +endmodule + +// Post-place-and-route RAM model +module ICESTORM_RAM( + output RDATA_15, RDATA_14, RDATA_13, RDATA_12, RDATA_11, RDATA_10, RDATA_9, RDATA_8, RDATA_7, RDATA_6, RDATA_5, RDATA_4, RDATA_3, RDATA_2, RDATA_1, RDATA_0, + input RCLK, RCLKE, RE, + input RADDR_10, RADDR_9, RADDR_8, RADDR_7, RADDR_6, RADDR_5, RADDR_4, RADDR_3, RADDR_2, RADDR_1, RADDR_0, + input WCLK, WCLKE, WE, + input WADDR_10, WADDR_9, WADDR_8, WADDR_7, WADDR_6, WADDR_5, WADDR_4, WADDR_3, WADDR_2, WADDR_1, WADDR_0, + input MASK_15, MASK_14, MASK_13, MASK_12, MASK_11, MASK_10, MASK_9, MASK_8, MASK_7, MASK_6, MASK_5, MASK_4, MASK_3, MASK_2, MASK_1, MASK_0, + input WDATA_15, WDATA_14, WDATA_13, WDATA_12, WDATA_11, WDATA_10, WDATA_9, WDATA_8, WDATA_7, WDATA_6, WDATA_5, WDATA_4, WDATA_3, WDATA_2, WDATA_1, WDATA_0 +); + parameter WRITE_MODE = 0; + parameter READ_MODE = 0; + + parameter NEG_CLK_R = 1'b0; + parameter NEG_CLK_W = 1'b0; + + parameter INIT_0 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_1 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_2 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_3 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_4 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_5 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_6 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_7 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_8 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_9 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + + // Pull-down and pull-up functions + function pd; + input x; + begin + pd = (x === 1'bz) ? 1'b0 : x; + end + endfunction + + function pu; + input x; + begin + pu = (x === 1'bz) ? 1'b1 : x; + end + endfunction + + SB_RAM40_4K #( + .WRITE_MODE(WRITE_MODE), + .READ_MODE (READ_MODE ), + .INIT_0 (INIT_0 ), + .INIT_1 (INIT_1 ), + .INIT_2 (INIT_2 ), + .INIT_3 (INIT_3 ), + .INIT_4 (INIT_4 ), + .INIT_5 (INIT_5 ), + .INIT_6 (INIT_6 ), + .INIT_7 (INIT_7 ), + .INIT_8 (INIT_8 ), + .INIT_9 (INIT_9 ), + .INIT_A (INIT_A ), + .INIT_B (INIT_B ), + .INIT_C (INIT_C ), + .INIT_D (INIT_D ), + .INIT_E (INIT_E ), + .INIT_F (INIT_F ) + ) RAM ( + .RDATA({RDATA_15, RDATA_14, RDATA_13, RDATA_12, RDATA_11, RDATA_10, RDATA_9, RDATA_8, RDATA_7, RDATA_6, RDATA_5, RDATA_4, RDATA_3, RDATA_2, RDATA_1, RDATA_0}), + .RCLK (pd(RCLK) ^ NEG_CLK_R), + .RCLKE(pu(RCLKE)), + .RE (pd(RE)), + .RADDR({pd(RADDR_10), pd(RADDR_9), pd(RADDR_8), pd(RADDR_7), pd(RADDR_6), pd(RADDR_5), pd(RADDR_4), pd(RADDR_3), pd(RADDR_2), pd(RADDR_1), pd(RADDR_0)}), + .WCLK (pd(WCLK) ^ NEG_CLK_W), + .WCLKE(pu(WCLKE)), + .WE (pd(WE)), + .WADDR({pd(WADDR_10), pd(WADDR_9), pd(WADDR_8), pd(WADDR_7), pd(WADDR_6), pd(WADDR_5), pd(WADDR_4), pd(WADDR_3), pd(WADDR_2), pd(WADDR_1), pd(WADDR_0)}), + .MASK ({pd(MASK_15), pd(MASK_14), pd(MASK_13), pd(MASK_12), pd(MASK_11), pd(MASK_10), pd(MASK_9), pd(MASK_8), + pd(MASK_7), pd(MASK_6), pd(MASK_5), pd(MASK_4), pd(MASK_3), pd(MASK_2), pd(MASK_1), pd(MASK_0)}), + .WDATA({pd(WDATA_15), pd(WDATA_14), pd(WDATA_13), pd(WDATA_12), pd(WDATA_11), pd(WDATA_10), pd(WDATA_9), pd(WDATA_8), + pd(WDATA_7), pd(WDATA_6), pd(WDATA_5), pd(WDATA_4), pd(WDATA_3), pd(WDATA_2), pd(WDATA_1), pd(WDATA_0)}) + ); + +`ifdef TIMING +specify + (RCLK => RDATA_15) = (0:0:0, 0:0:0); + (RCLK => RDATA_14) = (0:0:0, 0:0:0); + (RCLK => RDATA_13) = (0:0:0, 0:0:0); + (RCLK => RDATA_12) = (0:0:0, 0:0:0); + (RCLK => RDATA_11) = (0:0:0, 0:0:0); + (RCLK => RDATA_10) = (0:0:0, 0:0:0); + (RCLK => RDATA_9) = (0:0:0, 0:0:0); + (RCLK => RDATA_8) = (0:0:0, 0:0:0); + (RCLK => RDATA_7) = (0:0:0, 0:0:0); + (RCLK => RDATA_6) = (0:0:0, 0:0:0); + (RCLK => RDATA_5) = (0:0:0, 0:0:0); + (RCLK => RDATA_4) = (0:0:0, 0:0:0); + (RCLK => RDATA_3) = (0:0:0, 0:0:0); + (RCLK => RDATA_2) = (0:0:0, 0:0:0); + (RCLK => RDATA_1) = (0:0:0, 0:0:0); + (RCLK => RDATA_0) = (0:0:0, 0:0:0); + $setuphold(posedge RCLK, posedge RCLKE, 0:0:0, 0:0:0); + $setuphold(posedge RCLK, negedge RCLKE, 0:0:0, 0:0:0); + $setuphold(negedge RCLK, posedge RCLKE, 0:0:0, 0:0:0); + $setuphold(negedge RCLK, negedge RCLKE, 0:0:0, 0:0:0); + $setuphold(posedge RCLK, posedge RE, 0:0:0, 0:0:0); + $setuphold(posedge RCLK, negedge RE, 0:0:0, 0:0:0); + $setuphold(negedge RCLK, posedge RE, 0:0:0, 0:0:0); + $setuphold(negedge RCLK, negedge RE, 0:0:0, 0:0:0); + $setuphold(posedge RCLK, posedge RADDR_10, 0:0:0, 0:0:0); + $setuphold(posedge RCLK, negedge RADDR_10, 0:0:0, 0:0:0); + $setuphold(negedge RCLK, posedge RADDR_10, 0:0:0, 0:0:0); + $setuphold(negedge RCLK, negedge RADDR_10, 0:0:0, 0:0:0); + $setuphold(posedge RCLK, posedge RADDR_9, 0:0:0, 0:0:0); + $setuphold(posedge RCLK, negedge RADDR_9, 0:0:0, 0:0:0); + $setuphold(negedge RCLK, posedge RADDR_9, 0:0:0, 0:0:0); + $setuphold(negedge RCLK, negedge RADDR_9, 0:0:0, 0:0:0); + $setuphold(posedge RCLK, posedge RADDR_8, 0:0:0, 0:0:0); + $setuphold(posedge RCLK, negedge RADDR_8, 0:0:0, 0:0:0); + $setuphold(negedge RCLK, posedge RADDR_8, 0:0:0, 0:0:0); + $setuphold(negedge RCLK, negedge RADDR_8, 0:0:0, 0:0:0); + $setuphold(posedge RCLK, posedge RADDR_7, 0:0:0, 0:0:0); + $setuphold(posedge RCLK, negedge RADDR_7, 0:0:0, 0:0:0); + $setuphold(negedge RCLK, posedge RADDR_7, 0:0:0, 0:0:0); + $setuphold(negedge RCLK, negedge RADDR_7, 0:0:0, 0:0:0); + $setuphold(posedge RCLK, posedge RADDR_6, 0:0:0, 0:0:0); + $setuphold(posedge RCLK, negedge RADDR_6, 0:0:0, 0:0:0); + $setuphold(negedge RCLK, posedge RADDR_6, 0:0:0, 0:0:0); + $setuphold(negedge RCLK, negedge RADDR_6, 0:0:0, 0:0:0); + $setuphold(posedge RCLK, posedge RADDR_5, 0:0:0, 0:0:0); + $setuphold(posedge RCLK, negedge RADDR_5, 0:0:0, 0:0:0); + $setuphold(negedge RCLK, posedge RADDR_5, 0:0:0, 0:0:0); + $setuphold(negedge RCLK, negedge RADDR_5, 0:0:0, 0:0:0); + $setuphold(posedge RCLK, posedge RADDR_4, 0:0:0, 0:0:0); + $setuphold(posedge RCLK, negedge RADDR_4, 0:0:0, 0:0:0); + $setuphold(negedge RCLK, posedge RADDR_4, 0:0:0, 0:0:0); + $setuphold(negedge RCLK, negedge RADDR_4, 0:0:0, 0:0:0); + $setuphold(posedge RCLK, posedge RADDR_3, 0:0:0, 0:0:0); + $setuphold(posedge RCLK, negedge RADDR_3, 0:0:0, 0:0:0); + $setuphold(negedge RCLK, posedge RADDR_3, 0:0:0, 0:0:0); + $setuphold(negedge RCLK, negedge RADDR_3, 0:0:0, 0:0:0); + $setuphold(posedge RCLK, posedge RADDR_2, 0:0:0, 0:0:0); + $setuphold(posedge RCLK, negedge RADDR_2, 0:0:0, 0:0:0); + $setuphold(negedge RCLK, posedge RADDR_2, 0:0:0, 0:0:0); + $setuphold(negedge RCLK, negedge RADDR_2, 0:0:0, 0:0:0); + $setuphold(posedge RCLK, posedge RADDR_1, 0:0:0, 0:0:0); + $setuphold(posedge RCLK, negedge RADDR_1, 0:0:0, 0:0:0); + $setuphold(negedge RCLK, posedge RADDR_1, 0:0:0, 0:0:0); + $setuphold(negedge RCLK, negedge RADDR_1, 0:0:0, 0:0:0); + $setuphold(posedge RCLK, posedge RADDR_0, 0:0:0, 0:0:0); + $setuphold(posedge RCLK, negedge RADDR_0, 0:0:0, 0:0:0); + $setuphold(negedge RCLK, posedge RADDR_0, 0:0:0, 0:0:0); + $setuphold(negedge RCLK, negedge RADDR_0, 0:0:0, 0:0:0); + $setuphold(posedge WCLK, posedge WCLKE, 0:0:0, 0:0:0); + $setuphold(posedge WCLK, negedge WCLKE, 0:0:0, 0:0:0); + $setuphold(negedge WCLK, posedge WCLKE, 0:0:0, 0:0:0); + $setuphold(negedge WCLK, negedge WCLKE, 0:0:0, 0:0:0); + $setuphold(posedge WCLK, posedge WE, 0:0:0, 0:0:0); + $setuphold(posedge WCLK, negedge WE, 0:0:0, 0:0:0); + $setuphold(negedge WCLK, posedge WE, 0:0:0, 0:0:0); + $setuphold(negedge WCLK, negedge WE, 0:0:0, 0:0:0); + $setuphold(posedge WCLK, posedge WADDR_10, 0:0:0, 0:0:0); + $setuphold(posedge WCLK, negedge WADDR_10, 0:0:0, 0:0:0); + $setuphold(negedge WCLK, posedge WADDR_10, 0:0:0, 0:0:0); + $setuphold(negedge WCLK, negedge WADDR_10, 0:0:0, 0:0:0); + $setuphold(posedge WCLK, posedge WADDR_9, 0:0:0, 0:0:0); + $setuphold(posedge WCLK, negedge WADDR_9, 0:0:0, 0:0:0); + $setuphold(negedge WCLK, posedge WADDR_9, 0:0:0, 0:0:0); + $setuphold(negedge WCLK, negedge WADDR_9, 0:0:0, 0:0:0); + $setuphold(posedge WCLK, posedge WADDR_8, 0:0:0, 0:0:0); + $setuphold(posedge WCLK, negedge WADDR_8, 0:0:0, 0:0:0); + $setuphold(negedge WCLK, posedge WADDR_8, 0:0:0, 0:0:0); + $setuphold(negedge WCLK, negedge WADDR_8, 0:0:0, 0:0:0); + $setuphold(posedge WCLK, posedge WADDR_7, 0:0:0, 0:0:0); + $setuphold(posedge WCLK, negedge WADDR_7, 0:0:0, 0:0:0); + $setuphold(negedge WCLK, posedge WADDR_7, 0:0:0, 0:0:0); + $setuphold(negedge WCLK, negedge WADDR_7, 0:0:0, 0:0:0); + $setuphold(posedge WCLK, posedge WADDR_6, 0:0:0, 0:0:0); + $setuphold(posedge WCLK, negedge WADDR_6, 0:0:0, 0:0:0); + $setuphold(negedge WCLK, posedge WADDR_6, 0:0:0, 0:0:0); + $setuphold(negedge WCLK, negedge WADDR_6, 0:0:0, 0:0:0); + $setuphold(posedge WCLK, posedge WADDR_5, 0:0:0, 0:0:0); + $setuphold(posedge WCLK, negedge WADDR_5, 0:0:0, 0:0:0); + $setuphold(negedge WCLK, posedge WADDR_5, 0:0:0, 0:0:0); + $setuphold(negedge WCLK, negedge WADDR_5, 0:0:0, 0:0:0); + $setuphold(posedge WCLK, posedge WADDR_4, 0:0:0, 0:0:0); + $setuphold(posedge WCLK, negedge WADDR_4, 0:0:0, 0:0:0); + $setuphold(negedge WCLK, posedge WADDR_4, 0:0:0, 0:0:0); + $setuphold(negedge WCLK, negedge WADDR_4, 0:0:0, 0:0:0); + $setuphold(posedge WCLK, posedge WADDR_3, 0:0:0, 0:0:0); + $setuphold(posedge WCLK, negedge WADDR_3, 0:0:0, 0:0:0); + $setuphold(negedge WCLK, posedge WADDR_3, 0:0:0, 0:0:0); + $setuphold(negedge WCLK, negedge WADDR_3, 0:0:0, 0:0:0); + $setuphold(posedge WCLK, posedge WADDR_2, 0:0:0, 0:0:0); + $setuphold(posedge WCLK, negedge WADDR_2, 0:0:0, 0:0:0); + $setuphold(negedge WCLK, posedge WADDR_2, 0:0:0, 0:0:0); + $setuphold(negedge WCLK, negedge WADDR_2, 0:0:0, 0:0:0); + $setuphold(posedge WCLK, posedge WADDR_1, 0:0:0, 0:0:0); + $setuphold(posedge WCLK, negedge WADDR_1, 0:0:0, 0:0:0); + $setuphold(negedge WCLK, posedge WADDR_1, 0:0:0, 0:0:0); + $setuphold(negedge WCLK, negedge WADDR_1, 0:0:0, 0:0:0); + $setuphold(posedge WCLK, posedge WADDR_0, 0:0:0, 0:0:0); + $setuphold(posedge WCLK, negedge WADDR_0, 0:0:0, 0:0:0); + $setuphold(negedge WCLK, posedge WADDR_0, 0:0:0, 0:0:0); + $setuphold(negedge WCLK, negedge WADDR_0, 0:0:0, 0:0:0); + $setuphold(posedge WCLK, posedge MASK_15, 0:0:0, 0:0:0); + $setuphold(posedge WCLK, negedge MASK_15, 0:0:0, 0:0:0); + $setuphold(negedge WCLK, posedge MASK_15, 0:0:0, 0:0:0); + $setuphold(negedge WCLK, negedge MASK_15, 0:0:0, 0:0:0); + $setuphold(posedge WCLK, posedge MASK_14, 0:0:0, 0:0:0); + $setuphold(posedge WCLK, negedge MASK_14, 0:0:0, 0:0:0); + $setuphold(negedge WCLK, posedge MASK_14, 0:0:0, 0:0:0); + $setuphold(negedge WCLK, negedge MASK_14, 0:0:0, 0:0:0); + $setuphold(posedge WCLK, posedge MASK_13, 0:0:0, 0:0:0); + $setuphold(posedge WCLK, negedge MASK_13, 0:0:0, 0:0:0); + $setuphold(negedge WCLK, posedge MASK_13, 0:0:0, 0:0:0); + $setuphold(negedge WCLK, negedge MASK_13, 0:0:0, 0:0:0); + $setuphold(posedge WCLK, posedge MASK_12, 0:0:0, 0:0:0); + $setuphold(posedge WCLK, negedge MASK_12, 0:0:0, 0:0:0); + $setuphold(negedge WCLK, posedge MASK_12, 0:0:0, 0:0:0); + $setuphold(negedge WCLK, negedge MASK_12, 0:0:0, 0:0:0); + $setuphold(posedge WCLK, posedge MASK_11, 0:0:0, 0:0:0); + $setuphold(posedge WCLK, negedge MASK_11, 0:0:0, 0:0:0); + $setuphold(negedge WCLK, posedge MASK_11, 0:0:0, 0:0:0); + $setuphold(negedge WCLK, negedge MASK_11, 0:0:0, 0:0:0); + $setuphold(posedge WCLK, posedge MASK_10, 0:0:0, 0:0:0); + $setuphold(posedge WCLK, negedge MASK_10, 0:0:0, 0:0:0); + $setuphold(negedge WCLK, posedge MASK_10, 0:0:0, 0:0:0); + $setuphold(negedge WCLK, negedge MASK_10, 0:0:0, 0:0:0); + $setuphold(posedge WCLK, posedge MASK_9, 0:0:0, 0:0:0); + $setuphold(posedge WCLK, negedge MASK_9, 0:0:0, 0:0:0); + $setuphold(negedge WCLK, posedge MASK_9, 0:0:0, 0:0:0); + $setuphold(negedge WCLK, negedge MASK_9, 0:0:0, 0:0:0); + $setuphold(posedge WCLK, posedge MASK_8, 0:0:0, 0:0:0); + $setuphold(posedge WCLK, negedge MASK_8, 0:0:0, 0:0:0); + $setuphold(negedge WCLK, posedge MASK_8, 0:0:0, 0:0:0); + $setuphold(negedge WCLK, negedge MASK_8, 0:0:0, 0:0:0); + $setuphold(posedge WCLK, posedge MASK_7, 0:0:0, 0:0:0); + $setuphold(posedge WCLK, negedge MASK_7, 0:0:0, 0:0:0); + $setuphold(negedge WCLK, posedge MASK_7, 0:0:0, 0:0:0); + $setuphold(negedge WCLK, negedge MASK_7, 0:0:0, 0:0:0); + $setuphold(posedge WCLK, posedge MASK_6, 0:0:0, 0:0:0); + $setuphold(posedge WCLK, negedge MASK_6, 0:0:0, 0:0:0); + $setuphold(negedge WCLK, posedge MASK_6, 0:0:0, 0:0:0); + $setuphold(negedge WCLK, negedge MASK_6, 0:0:0, 0:0:0); + $setuphold(posedge WCLK, posedge MASK_5, 0:0:0, 0:0:0); + $setuphold(posedge WCLK, negedge MASK_5, 0:0:0, 0:0:0); + $setuphold(negedge WCLK, posedge MASK_5, 0:0:0, 0:0:0); + $setuphold(negedge WCLK, negedge MASK_5, 0:0:0, 0:0:0); + $setuphold(posedge WCLK, posedge MASK_4, 0:0:0, 0:0:0); + $setuphold(posedge WCLK, negedge MASK_4, 0:0:0, 0:0:0); + $setuphold(negedge WCLK, posedge MASK_4, 0:0:0, 0:0:0); + $setuphold(negedge WCLK, negedge MASK_4, 0:0:0, 0:0:0); + $setuphold(posedge WCLK, posedge MASK_3, 0:0:0, 0:0:0); + $setuphold(posedge WCLK, negedge MASK_3, 0:0:0, 0:0:0); + $setuphold(negedge WCLK, posedge MASK_3, 0:0:0, 0:0:0); + $setuphold(negedge WCLK, negedge MASK_3, 0:0:0, 0:0:0); + $setuphold(posedge WCLK, posedge MASK_2, 0:0:0, 0:0:0); + $setuphold(posedge WCLK, negedge MASK_2, 0:0:0, 0:0:0); + $setuphold(negedge WCLK, posedge MASK_2, 0:0:0, 0:0:0); + $setuphold(negedge WCLK, negedge MASK_2, 0:0:0, 0:0:0); + $setuphold(posedge WCLK, posedge MASK_1, 0:0:0, 0:0:0); + $setuphold(posedge WCLK, negedge MASK_1, 0:0:0, 0:0:0); + $setuphold(negedge WCLK, posedge MASK_1, 0:0:0, 0:0:0); + $setuphold(negedge WCLK, negedge MASK_1, 0:0:0, 0:0:0); + $setuphold(posedge WCLK, posedge MASK_0, 0:0:0, 0:0:0); + $setuphold(posedge WCLK, negedge MASK_0, 0:0:0, 0:0:0); + $setuphold(negedge WCLK, posedge MASK_0, 0:0:0, 0:0:0); + $setuphold(negedge WCLK, negedge MASK_0, 0:0:0, 0:0:0); + $setuphold(posedge WCLK, posedge WDATA_15, 0:0:0, 0:0:0); + $setuphold(posedge WCLK, negedge WDATA_15, 0:0:0, 0:0:0); + $setuphold(negedge WCLK, posedge WDATA_15, 0:0:0, 0:0:0); + $setuphold(negedge WCLK, negedge WDATA_15, 0:0:0, 0:0:0); + $setuphold(posedge WCLK, posedge WDATA_14, 0:0:0, 0:0:0); + $setuphold(posedge WCLK, negedge WDATA_14, 0:0:0, 0:0:0); + $setuphold(negedge WCLK, posedge WDATA_14, 0:0:0, 0:0:0); + $setuphold(negedge WCLK, negedge WDATA_14, 0:0:0, 0:0:0); + $setuphold(posedge WCLK, posedge WDATA_13, 0:0:0, 0:0:0); + $setuphold(posedge WCLK, negedge WDATA_13, 0:0:0, 0:0:0); + $setuphold(negedge WCLK, posedge WDATA_13, 0:0:0, 0:0:0); + $setuphold(negedge WCLK, negedge WDATA_13, 0:0:0, 0:0:0); + $setuphold(posedge WCLK, posedge WDATA_12, 0:0:0, 0:0:0); + $setuphold(posedge WCLK, negedge WDATA_12, 0:0:0, 0:0:0); + $setuphold(negedge WCLK, posedge WDATA_12, 0:0:0, 0:0:0); + $setuphold(negedge WCLK, negedge WDATA_12, 0:0:0, 0:0:0); + $setuphold(posedge WCLK, posedge WDATA_11, 0:0:0, 0:0:0); + $setuphold(posedge WCLK, negedge WDATA_11, 0:0:0, 0:0:0); + $setuphold(negedge WCLK, posedge WDATA_11, 0:0:0, 0:0:0); + $setuphold(negedge WCLK, negedge WDATA_11, 0:0:0, 0:0:0); + $setuphold(posedge WCLK, posedge WDATA_10, 0:0:0, 0:0:0); + $setuphold(posedge WCLK, negedge WDATA_10, 0:0:0, 0:0:0); + $setuphold(negedge WCLK, posedge WDATA_10, 0:0:0, 0:0:0); + $setuphold(negedge WCLK, negedge WDATA_10, 0:0:0, 0:0:0); + $setuphold(posedge WCLK, posedge WDATA_9, 0:0:0, 0:0:0); + $setuphold(posedge WCLK, negedge WDATA_9, 0:0:0, 0:0:0); + $setuphold(negedge WCLK, posedge WDATA_9, 0:0:0, 0:0:0); + $setuphold(negedge WCLK, negedge WDATA_9, 0:0:0, 0:0:0); + $setuphold(posedge WCLK, posedge WDATA_8, 0:0:0, 0:0:0); + $setuphold(posedge WCLK, negedge WDATA_8, 0:0:0, 0:0:0); + $setuphold(negedge WCLK, posedge WDATA_8, 0:0:0, 0:0:0); + $setuphold(negedge WCLK, negedge WDATA_8, 0:0:0, 0:0:0); + $setuphold(posedge WCLK, posedge WDATA_7, 0:0:0, 0:0:0); + $setuphold(posedge WCLK, negedge WDATA_7, 0:0:0, 0:0:0); + $setuphold(negedge WCLK, posedge WDATA_7, 0:0:0, 0:0:0); + $setuphold(negedge WCLK, negedge WDATA_7, 0:0:0, 0:0:0); + $setuphold(posedge WCLK, posedge WDATA_6, 0:0:0, 0:0:0); + $setuphold(posedge WCLK, negedge WDATA_6, 0:0:0, 0:0:0); + $setuphold(negedge WCLK, posedge WDATA_6, 0:0:0, 0:0:0); + $setuphold(negedge WCLK, negedge WDATA_6, 0:0:0, 0:0:0); + $setuphold(posedge WCLK, posedge WDATA_5, 0:0:0, 0:0:0); + $setuphold(posedge WCLK, negedge WDATA_5, 0:0:0, 0:0:0); + $setuphold(negedge WCLK, posedge WDATA_5, 0:0:0, 0:0:0); + $setuphold(negedge WCLK, negedge WDATA_5, 0:0:0, 0:0:0); + $setuphold(posedge WCLK, posedge WDATA_4, 0:0:0, 0:0:0); + $setuphold(posedge WCLK, negedge WDATA_4, 0:0:0, 0:0:0); + $setuphold(negedge WCLK, posedge WDATA_4, 0:0:0, 0:0:0); + $setuphold(negedge WCLK, negedge WDATA_4, 0:0:0, 0:0:0); + $setuphold(posedge WCLK, posedge WDATA_3, 0:0:0, 0:0:0); + $setuphold(posedge WCLK, negedge WDATA_3, 0:0:0, 0:0:0); + $setuphold(negedge WCLK, posedge WDATA_3, 0:0:0, 0:0:0); + $setuphold(negedge WCLK, negedge WDATA_3, 0:0:0, 0:0:0); + $setuphold(posedge WCLK, posedge WDATA_2, 0:0:0, 0:0:0); + $setuphold(posedge WCLK, negedge WDATA_2, 0:0:0, 0:0:0); + $setuphold(negedge WCLK, posedge WDATA_2, 0:0:0, 0:0:0); + $setuphold(negedge WCLK, negedge WDATA_2, 0:0:0, 0:0:0); + $setuphold(posedge WCLK, posedge WDATA_1, 0:0:0, 0:0:0); + $setuphold(posedge WCLK, negedge WDATA_1, 0:0:0, 0:0:0); + $setuphold(negedge WCLK, posedge WDATA_1, 0:0:0, 0:0:0); + $setuphold(negedge WCLK, negedge WDATA_1, 0:0:0, 0:0:0); + $setuphold(posedge WCLK, posedge WDATA_0, 0:0:0, 0:0:0); + $setuphold(posedge WCLK, negedge WDATA_0, 0:0:0, 0:0:0); + $setuphold(negedge WCLK, posedge WDATA_0, 0:0:0, 0:0:0); + $setuphold(negedge WCLK, negedge WDATA_0, 0:0:0, 0:0:0); + +endspecify +`endif +endmodule diff --git a/resources/netlist/resources/kernel/share/ice40/dsp_map.v b/resources/netlist/resources/kernel/share/ice40/dsp_map.v new file mode 100644 index 0000000..06fa739 --- /dev/null +++ b/resources/netlist/resources/kernel/share/ice40/dsp_map.v @@ -0,0 +1,34 @@ +module \$__MUL16X16 (input [15:0] A, input [15:0] B, output [31:0] Y); + parameter A_SIGNED = 0; + parameter B_SIGNED = 0; + parameter A_WIDTH = 0; + parameter B_WIDTH = 0; + parameter Y_WIDTH = 0; + + SB_MAC16 #( + .NEG_TRIGGER(1'b0), + .C_REG(1'b0), + .A_REG(1'b0), + .B_REG(1'b0), + .D_REG(1'b0), + .TOP_8x8_MULT_REG(1'b0), + .BOT_8x8_MULT_REG(1'b0), + .PIPELINE_16x16_MULT_REG1(1'b0), + .PIPELINE_16x16_MULT_REG2(1'b0), + .TOPOUTPUT_SELECT(2'b11), + .TOPADDSUB_LOWERINPUT(2'b0), + .TOPADDSUB_UPPERINPUT(1'b0), + .TOPADDSUB_CARRYSELECT(2'b0), + .BOTOUTPUT_SELECT(2'b11), + .BOTADDSUB_LOWERINPUT(2'b0), + .BOTADDSUB_UPPERINPUT(1'b0), + .BOTADDSUB_CARRYSELECT(2'b0), + .MODE_8x8(1'b0), + .A_SIGNED(A_SIGNED), + .B_SIGNED(B_SIGNED) + ) _TECHMAP_REPLACE_ ( + .A(A), + .B(B), + .O(Y), + ); +endmodule diff --git a/resources/netlist/resources/kernel/share/ice40/ff_map.v b/resources/netlist/resources/kernel/share/ice40/ff_map.v new file mode 100644 index 0000000..8174323 --- /dev/null +++ b/resources/netlist/resources/kernel/share/ice40/ff_map.v @@ -0,0 +1,25 @@ +module \$_DFF_N_ (input D, C, output Q); SB_DFFN _TECHMAP_REPLACE_ (.D(D), .Q(Q), .C(C)); wire _TECHMAP_REMOVEINIT_Q_ = 1; endmodule +module \$_DFF_P_ (input D, C, output Q); SB_DFF _TECHMAP_REPLACE_ (.D(D), .Q(Q), .C(C)); wire _TECHMAP_REMOVEINIT_Q_ = 1; endmodule + +module \$_DFFE_NP_ (input D, C, E, output Q); SB_DFFNE _TECHMAP_REPLACE_ (.D(D), .Q(Q), .C(C), .E(E)); wire _TECHMAP_REMOVEINIT_Q_ = 1; endmodule +module \$_DFFE_PP_ (input D, C, E, output Q); SB_DFFE _TECHMAP_REPLACE_ (.D(D), .Q(Q), .C(C), .E(E)); wire _TECHMAP_REMOVEINIT_Q_ = 1; endmodule + +module \$_DFF_NP0_ (input D, C, R, output Q); SB_DFFNR _TECHMAP_REPLACE_ (.D(D), .Q(Q), .C(C), .R(R)); wire _TECHMAP_REMOVEINIT_Q_ = 1; endmodule +module \$_DFF_NP1_ (input D, C, R, output Q); SB_DFFNS _TECHMAP_REPLACE_ (.D(D), .Q(Q), .C(C), .S(R)); wire _TECHMAP_REMOVEINIT_Q_ = 1; endmodule +module \$_DFF_PP0_ (input D, C, R, output Q); SB_DFFR _TECHMAP_REPLACE_ (.D(D), .Q(Q), .C(C), .R(R)); wire _TECHMAP_REMOVEINIT_Q_ = 1; endmodule +module \$_DFF_PP1_ (input D, C, R, output Q); SB_DFFS _TECHMAP_REPLACE_ (.D(D), .Q(Q), .C(C), .S(R)); wire _TECHMAP_REMOVEINIT_Q_ = 1; endmodule + +module \$_DFFE_NP0P_ (input D, C, E, R, output Q); SB_DFFNER _TECHMAP_REPLACE_ (.D(D), .Q(Q), .C(C), .E(E), .R(R)); wire _TECHMAP_REMOVEINIT_Q_ = 1; endmodule +module \$_DFFE_NP1P_ (input D, C, E, R, output Q); SB_DFFNES _TECHMAP_REPLACE_ (.D(D), .Q(Q), .C(C), .E(E), .S(R)); wire _TECHMAP_REMOVEINIT_Q_ = 1; endmodule +module \$_DFFE_PP0P_ (input D, C, E, R, output Q); SB_DFFER _TECHMAP_REPLACE_ (.D(D), .Q(Q), .C(C), .E(E), .R(R)); wire _TECHMAP_REMOVEINIT_Q_ = 1; endmodule +module \$_DFFE_PP1P_ (input D, C, E, R, output Q); SB_DFFES _TECHMAP_REPLACE_ (.D(D), .Q(Q), .C(C), .E(E), .S(R)); wire _TECHMAP_REMOVEINIT_Q_ = 1; endmodule + +module \$_SDFF_NP0_ (input D, C, R, output Q); SB_DFFNSR _TECHMAP_REPLACE_ (.D(D), .Q(Q), .C(C), .R(R)); wire _TECHMAP_REMOVEINIT_Q_ = 1; endmodule +module \$_SDFF_NP1_ (input D, C, R, output Q); SB_DFFNSS _TECHMAP_REPLACE_ (.D(D), .Q(Q), .C(C), .S(R)); wire _TECHMAP_REMOVEINIT_Q_ = 1; endmodule +module \$_SDFF_PP0_ (input D, C, R, output Q); SB_DFFSR _TECHMAP_REPLACE_ (.D(D), .Q(Q), .C(C), .R(R)); wire _TECHMAP_REMOVEINIT_Q_ = 1; endmodule +module \$_SDFF_PP1_ (input D, C, R, output Q); SB_DFFSS _TECHMAP_REPLACE_ (.D(D), .Q(Q), .C(C), .S(R)); wire _TECHMAP_REMOVEINIT_Q_ = 1; endmodule + +module \$_SDFFCE_NP0P_ (input D, C, E, R, output Q); SB_DFFNESR _TECHMAP_REPLACE_ (.D(D), .Q(Q), .C(C), .E(E), .R(R)); wire _TECHMAP_REMOVEINIT_Q_ = 1; endmodule +module \$_SDFFCE_NP1P_ (input D, C, E, R, output Q); SB_DFFNESS _TECHMAP_REPLACE_ (.D(D), .Q(Q), .C(C), .E(E), .S(R)); wire _TECHMAP_REMOVEINIT_Q_ = 1; endmodule +module \$_SDFFCE_PP0P_ (input D, C, E, R, output Q); SB_DFFESR _TECHMAP_REPLACE_ (.D(D), .Q(Q), .C(C), .E(E), .R(R)); wire _TECHMAP_REMOVEINIT_Q_ = 1; endmodule +module \$_SDFFCE_PP1P_ (input D, C, E, R, output Q); SB_DFFESS _TECHMAP_REPLACE_ (.D(D), .Q(Q), .C(C), .E(E), .S(R)); wire _TECHMAP_REMOVEINIT_Q_ = 1; endmodule diff --git a/resources/netlist/resources/kernel/share/ice40/latches_map.v b/resources/netlist/resources/kernel/share/ice40/latches_map.v new file mode 100644 index 0000000..c28f88c --- /dev/null +++ b/resources/netlist/resources/kernel/share/ice40/latches_map.v @@ -0,0 +1,11 @@ +module \$_DLATCH_N_ (E, D, Q); + wire [1023:0] _TECHMAP_DO_ = "simplemap; opt"; + input E, D; + output Q = !E ? D : Q; +endmodule + +module \$_DLATCH_P_ (E, D, Q); + wire [1023:0] _TECHMAP_DO_ = "simplemap; opt"; + input E, D; + output Q = E ? D : Q; +endmodule diff --git a/resources/netlist/resources/kernel/share/ice40/spram.txt b/resources/netlist/resources/kernel/share/ice40/spram.txt new file mode 100644 index 0000000..ed0699f --- /dev/null +++ b/resources/netlist/resources/kernel/share/ice40/spram.txt @@ -0,0 +1,12 @@ +ram huge $__ICE40_SPRAM_ { + abits 14; + width 16; + cost 2048; + byte 4; + port srsw "A" { + clock posedge; + clken; + wrbe_separate; + rdwr no_change; + } +} diff --git a/resources/netlist/resources/kernel/share/ice40/spram_map.v b/resources/netlist/resources/kernel/share/ice40/spram_map.v new file mode 100644 index 0000000..ae89195 --- /dev/null +++ b/resources/netlist/resources/kernel/share/ice40/spram_map.v @@ -0,0 +1,24 @@ +module $__ICE40_SPRAM_ (...); + +input PORT_A_CLK; +input PORT_A_CLK_EN; +input PORT_A_WR_EN; +input [3:0] PORT_A_WR_BE; +input [13:0] PORT_A_ADDR; +input [15:0] PORT_A_WR_DATA; +output [15:0] PORT_A_RD_DATA; + +SB_SPRAM256KA _TECHMAP_REPLACE_ ( + .ADDRESS(PORT_A_ADDR), + .DATAIN(PORT_A_WR_DATA), + .MASKWREN(PORT_A_WR_BE), + .WREN(PORT_A_WR_EN), + .CHIPSELECT(PORT_A_CLK_EN), + .CLOCK(PORT_A_CLK), + .STANDBY(1'b0), + .SLEEP(1'b0), + .POWEROFF(1'b1), + .DATAOUT(PORT_A_RD_DATA), +); + +endmodule diff --git a/resources/netlist/resources/kernel/share/include/backends/cxxrtl/cxxrtl.h b/resources/netlist/resources/kernel/share/include/backends/cxxrtl/cxxrtl.h new file mode 100644 index 0000000..073921c --- /dev/null +++ b/resources/netlist/resources/kernel/share/include/backends/cxxrtl/cxxrtl.h @@ -0,0 +1,1616 @@ +/* + * yosys -- Yosys Open SYnthesis Suite + * + * Copyright (C) 2019-2020 whitequark + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + */ + +// This file is included by the designs generated with `write_cxxrtl`. It is not used in Yosys itself. +// +// The CXXRTL support library implements compile time specialized arbitrary width arithmetics, as well as provides +// composite lvalues made out of bit slices and concatenations of lvalues. This allows the `write_cxxrtl` pass +// to perform a straightforward translation of RTLIL structures to readable C++, relying on the C++ compiler +// to unwrap the abstraction and generate efficient code. + +#ifndef CXXRTL_H +#define CXXRTL_H + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#ifndef __has_attribute +# define __has_attribute(x) 0 +#endif + +// CXXRTL essentially uses the C++ compiler as a hygienic macro engine that feeds an instruction selector. +// It generates a lot of specialized template functions with relatively large bodies that, when inlined +// into the caller and (for those with loops) unrolled, often expose many new optimization opportunities. +// Because of this, most of the CXXRTL runtime must be always inlined for best performance. +#if __has_attribute(always_inline) +#define CXXRTL_ALWAYS_INLINE inline __attribute__((__always_inline__)) +#else +#define CXXRTL_ALWAYS_INLINE inline +#endif +// Conversely, some functions in the generated code are extremely large yet very cold, with both of these +// properties being extreme enough to confuse C++ compilers into spending pathological amounts of time +// on a futile (the code becomes worse) attempt to optimize the least important parts of code. +#if __has_attribute(optnone) +#define CXXRTL_EXTREMELY_COLD __attribute__((__optnone__)) +#elif __has_attribute(optimize) +#define CXXRTL_EXTREMELY_COLD __attribute__((__optimize__(0))) +#else +#define CXXRTL_EXTREMELY_COLD +#endif + +// CXXRTL uses assert() to check for C++ contract violations (which may result in e.g. undefined behavior +// of the simulation code itself), and CXXRTL_ASSERT to check for RTL contract violations (which may at +// most result in undefined simulation results). +// +// Though by default, CXXRTL_ASSERT() expands to assert(), it may be overridden e.g. when integrating +// the simulation into another process that should survive violating RTL contracts. +#ifndef CXXRTL_ASSERT +#ifndef CXXRTL_NDEBUG +#define CXXRTL_ASSERT(x) assert(x) +#else +#define CXXRTL_ASSERT(x) +#endif +#endif + +namespace cxxrtl { + +// All arbitrary-width values in CXXRTL are backed by arrays of unsigned integers called chunks. The chunk size +// is the same regardless of the value width to simplify manipulating values via FFI interfaces, e.g. driving +// and introspecting the simulation in Python. +// +// It is practical to use chunk sizes between 32 bits and platform register size because when arithmetics on +// narrower integer types is legalized by the C++ compiler, it inserts code to clear the high bits of the register. +// However, (a) most of our operations do not change those bits in the first place because of invariants that are +// invisible to the compiler, (b) we often operate on non-power-of-2 values and have to clear the high bits anyway. +// Therefore, using relatively wide chunks and clearing the high bits explicitly and only when we know they may be +// clobbered results in simpler generated code. +typedef uint32_t chunk_t; +typedef uint64_t wide_chunk_t; + +template +struct chunk_traits { + static_assert(std::is_integral::value && std::is_unsigned::value, + "chunk type must be an unsigned integral type"); + using type = T; + static constexpr size_t bits = std::numeric_limits::digits; + static constexpr T mask = std::numeric_limits::max(); +}; + +template +struct expr_base; + +template +struct value : public expr_base> { + static constexpr size_t bits = Bits; + + using chunk = chunk_traits; + static constexpr chunk::type msb_mask = (Bits % chunk::bits == 0) ? chunk::mask + : chunk::mask >> (chunk::bits - (Bits % chunk::bits)); + + static constexpr size_t chunks = (Bits + chunk::bits - 1) / chunk::bits; + chunk::type data[chunks] = {}; + + value() = default; + template + explicit constexpr value(Init ...init) : data{init...} {} + + value(const value &) = default; + value &operator=(const value &) = default; + + value(value &&) = default; + value &operator=(value &&) = default; + + // A (no-op) helper that forces the cast to value<>. + CXXRTL_ALWAYS_INLINE + const value &val() const { + return *this; + } + + std::string str() const { + std::stringstream ss; + ss << *this; + return ss.str(); + } + + // Conversion operations. + // + // These functions ensure that a conversion is never out of range, and should be always used, if at all + // possible, instead of direct manipulation of the `data` member. For very large types, .slice() and + // .concat() can be used to split them into more manageable parts. + template + CXXRTL_ALWAYS_INLINE + IntegerT get() const { + static_assert(std::numeric_limits::is_integer && !std::numeric_limits::is_signed, + "get() requires T to be an unsigned integral type"); + static_assert(std::numeric_limits::digits >= Bits, + "get() requires T to be at least as wide as the value is"); + IntegerT result = 0; + for (size_t n = 0; n < chunks; n++) + result |= IntegerT(data[n]) << (n * chunk::bits); + return result; + } + + template + CXXRTL_ALWAYS_INLINE + void set(IntegerT other) { + static_assert(std::numeric_limits::is_integer && !std::numeric_limits::is_signed, + "set() requires T to be an unsigned integral type"); + static_assert(std::numeric_limits::digits >= Bits, + "set() requires the value to be at least as wide as T is"); + for (size_t n = 0; n < chunks; n++) + data[n] = (other >> (n * chunk::bits)) & chunk::mask; + } + + // Operations with compile-time parameters. + // + // These operations are used to implement slicing, concatenation, and blitting. + // The trunc, zext and sext operations add or remove most significant bits (i.e. on the left); + // the rtrunc and rzext operations add or remove least significant bits (i.e. on the right). + template + CXXRTL_ALWAYS_INLINE + value trunc() const { + static_assert(NewBits <= Bits, "trunc() may not increase width"); + value result; + for (size_t n = 0; n < result.chunks; n++) + result.data[n] = data[n]; + result.data[result.chunks - 1] &= result.msb_mask; + return result; + } + + template + CXXRTL_ALWAYS_INLINE + value zext() const { + static_assert(NewBits >= Bits, "zext() may not decrease width"); + value result; + for (size_t n = 0; n < chunks; n++) + result.data[n] = data[n]; + return result; + } + + template + CXXRTL_ALWAYS_INLINE + value sext() const { + static_assert(NewBits >= Bits, "sext() may not decrease width"); + value result; + for (size_t n = 0; n < chunks; n++) + result.data[n] = data[n]; + if (is_neg()) { + result.data[chunks - 1] |= ~msb_mask; + for (size_t n = chunks; n < result.chunks; n++) + result.data[n] = chunk::mask; + result.data[result.chunks - 1] &= result.msb_mask; + } + return result; + } + + template + CXXRTL_ALWAYS_INLINE + value rtrunc() const { + static_assert(NewBits <= Bits, "rtrunc() may not increase width"); + value result; + constexpr size_t shift_chunks = (Bits - NewBits) / chunk::bits; + constexpr size_t shift_bits = (Bits - NewBits) % chunk::bits; + chunk::type carry = 0; + if (shift_chunks + result.chunks < chunks) { + carry = (shift_bits == 0) ? 0 + : data[shift_chunks + result.chunks] << (chunk::bits - shift_bits); + } + for (size_t n = result.chunks; n > 0; n--) { + result.data[n - 1] = carry | (data[shift_chunks + n - 1] >> shift_bits); + carry = (shift_bits == 0) ? 0 + : data[shift_chunks + n - 1] << (chunk::bits - shift_bits); + } + return result; + } + + template + CXXRTL_ALWAYS_INLINE + value rzext() const { + static_assert(NewBits >= Bits, "rzext() may not decrease width"); + value result; + constexpr size_t shift_chunks = (NewBits - Bits) / chunk::bits; + constexpr size_t shift_bits = (NewBits - Bits) % chunk::bits; + chunk::type carry = 0; + for (size_t n = 0; n < chunks; n++) { + result.data[shift_chunks + n] = (data[n] << shift_bits) | carry; + carry = (shift_bits == 0) ? 0 + : data[n] >> (chunk::bits - shift_bits); + } + if (shift_chunks + chunks < result.chunks) + result.data[shift_chunks + chunks] = carry; + return result; + } + + // Bit blit operation, i.e. a partial read-modify-write. + template + CXXRTL_ALWAYS_INLINE + value blit(const value &source) const { + static_assert(Stop >= Start, "blit() may not reverse bit order"); + constexpr chunk::type start_mask = ~(chunk::mask << (Start % chunk::bits)); + constexpr chunk::type stop_mask = (Stop % chunk::bits + 1 == chunk::bits) ? 0 + : (chunk::mask << (Stop % chunk::bits + 1)); + value masked = *this; + if (Start / chunk::bits == Stop / chunk::bits) { + masked.data[Start / chunk::bits] &= stop_mask | start_mask; + } else { + masked.data[Start / chunk::bits] &= start_mask; + for (size_t n = Start / chunk::bits + 1; n < Stop / chunk::bits; n++) + masked.data[n] = 0; + masked.data[Stop / chunk::bits] &= stop_mask; + } + value shifted = source + .template rzext() + .template zext(); + return masked.bit_or(shifted); + } + + // Helpers for selecting extending or truncating operation depending on whether the result is wider or narrower + // than the operand. In C++17 these can be replaced with `if constexpr`. + template + struct zext_cast { + CXXRTL_ALWAYS_INLINE + value operator()(const value &val) { + return val.template zext(); + } + }; + + template + struct zext_cast::type> { + CXXRTL_ALWAYS_INLINE + value operator()(const value &val) { + return val.template trunc(); + } + }; + + template + struct sext_cast { + CXXRTL_ALWAYS_INLINE + value operator()(const value &val) { + return val.template sext(); + } + }; + + template + struct sext_cast::type> { + CXXRTL_ALWAYS_INLINE + value operator()(const value &val) { + return val.template trunc(); + } + }; + + template + CXXRTL_ALWAYS_INLINE + value zcast() const { + return zext_cast()(*this); + } + + template + CXXRTL_ALWAYS_INLINE + value scast() const { + return sext_cast()(*this); + } + + // Bit replication is far more efficient than the equivalent concatenation. + template + CXXRTL_ALWAYS_INLINE + value repeat() const { + static_assert(Bits == 1, "repeat() is implemented only for 1-bit values"); + return *this ? value().bit_not() : value(); + } + + // Operations with run-time parameters (offsets, amounts, etc). + // + // These operations are used for computations. + bool bit(size_t offset) const { + return data[offset / chunk::bits] & (1 << (offset % chunk::bits)); + } + + void set_bit(size_t offset, bool value = true) { + size_t offset_chunks = offset / chunk::bits; + size_t offset_bits = offset % chunk::bits; + data[offset_chunks] &= ~(1 << offset_bits); + data[offset_chunks] |= value ? 1 << offset_bits : 0; + } + + explicit operator bool() const { + return !is_zero(); + } + + bool is_zero() const { + for (size_t n = 0; n < chunks; n++) + if (data[n] != 0) + return false; + return true; + } + + bool is_neg() const { + return data[chunks - 1] & (1 << ((Bits - 1) % chunk::bits)); + } + + bool operator ==(const value &other) const { + for (size_t n = 0; n < chunks; n++) + if (data[n] != other.data[n]) + return false; + return true; + } + + bool operator !=(const value &other) const { + return !(*this == other); + } + + value bit_not() const { + value result; + for (size_t n = 0; n < chunks; n++) + result.data[n] = ~data[n]; + result.data[chunks - 1] &= msb_mask; + return result; + } + + value bit_and(const value &other) const { + value result; + for (size_t n = 0; n < chunks; n++) + result.data[n] = data[n] & other.data[n]; + return result; + } + + value bit_or(const value &other) const { + value result; + for (size_t n = 0; n < chunks; n++) + result.data[n] = data[n] | other.data[n]; + return result; + } + + value bit_xor(const value &other) const { + value result; + for (size_t n = 0; n < chunks; n++) + result.data[n] = data[n] ^ other.data[n]; + return result; + } + + value update(const value &val, const value &mask) const { + return bit_and(mask.bit_not()).bit_or(val.bit_and(mask)); + } + + template + value shl(const value &amount) const { + // Ensure our early return is correct by prohibiting values larger than 4 Gbit. + static_assert(Bits <= chunk::mask, "shl() of unreasonably large values is not supported"); + // Detect shifts definitely large than Bits early. + for (size_t n = 1; n < amount.chunks; n++) + if (amount.data[n] != 0) + return {}; + // Past this point we can use the least significant chunk as the shift size. + size_t shift_chunks = amount.data[0] / chunk::bits; + size_t shift_bits = amount.data[0] % chunk::bits; + if (shift_chunks >= chunks) + return {}; + value result; + chunk::type carry = 0; + for (size_t n = 0; n < chunks - shift_chunks; n++) { + result.data[shift_chunks + n] = (data[n] << shift_bits) | carry; + carry = (shift_bits == 0) ? 0 + : data[n] >> (chunk::bits - shift_bits); + } + return result; + } + + template + value shr(const value &amount) const { + // Ensure our early return is correct by prohibiting values larger than 4 Gbit. + static_assert(Bits <= chunk::mask, "shr() of unreasonably large values is not supported"); + // Detect shifts definitely large than Bits early. + for (size_t n = 1; n < amount.chunks; n++) + if (amount.data[n] != 0) + return {}; + // Past this point we can use the least significant chunk as the shift size. + size_t shift_chunks = amount.data[0] / chunk::bits; + size_t shift_bits = amount.data[0] % chunk::bits; + if (shift_chunks >= chunks) + return {}; + value result; + chunk::type carry = 0; + for (size_t n = 0; n < chunks - shift_chunks; n++) { + result.data[chunks - shift_chunks - 1 - n] = carry | (data[chunks - 1 - n] >> shift_bits); + carry = (shift_bits == 0) ? 0 + : data[chunks - 1 - n] << (chunk::bits - shift_bits); + } + if (Signed && is_neg()) { + size_t top_chunk_idx = (Bits - shift_bits) / chunk::bits; + size_t top_chunk_bits = (Bits - shift_bits) % chunk::bits; + for (size_t n = top_chunk_idx + 1; n < chunks; n++) + result.data[n] = chunk::mask; + if (shift_bits != 0) + result.data[top_chunk_idx] |= chunk::mask << top_chunk_bits; + } + return result; + } + + template + value sshr(const value &amount) const { + return shr(amount); + } + + template + value bmux(const value &sel) const { + static_assert(ResultBits << SelBits == Bits, "invalid sizes used in bmux()"); + size_t amount = sel.data[0] * ResultBits; + size_t shift_chunks = amount / chunk::bits; + size_t shift_bits = amount % chunk::bits; + value result; + chunk::type carry = 0; + if (ResultBits % chunk::bits + shift_bits > chunk::bits) + carry = data[result.chunks + shift_chunks] << (chunk::bits - shift_bits); + for (size_t n = 0; n < result.chunks; n++) { + result.data[result.chunks - 1 - n] = carry | (data[result.chunks + shift_chunks - 1 - n] >> shift_bits); + carry = (shift_bits == 0) ? 0 + : data[result.chunks + shift_chunks - 1 - n] << (chunk::bits - shift_bits); + } + return result; + } + + template + value demux(const value &sel) const { + static_assert(Bits << SelBits == ResultBits, "invalid sizes used in demux()"); + size_t amount = sel.data[0] * Bits; + size_t shift_chunks = amount / chunk::bits; + size_t shift_bits = amount % chunk::bits; + value result; + chunk::type carry = 0; + for (size_t n = 0; n < chunks; n++) { + result.data[shift_chunks + n] = (data[n] << shift_bits) | carry; + carry = (shift_bits == 0) ? 0 + : data[n] >> (chunk::bits - shift_bits); + } + if (Bits % chunk::bits + shift_bits > chunk::bits) + result.data[shift_chunks + chunks] = carry; + return result; + } + + size_t ctpop() const { + size_t count = 0; + for (size_t n = 0; n < chunks; n++) { + // This loop implements the population count idiom as recognized by LLVM and GCC. + for (chunk::type x = data[n]; x != 0; count++) + x = x & (x - 1); + } + return count; + } + + size_t ctlz() const { + size_t count = 0; + for (size_t n = 0; n < chunks; n++) { + chunk::type x = data[chunks - 1 - n]; + if (x == 0) { + count += (n == 0 ? Bits % chunk::bits : chunk::bits); + } else { + // This loop implements the find first set idiom as recognized by LLVM. + for (; x != 0; count++) + x >>= 1; + } + } + return count; + } + + template + std::pair, bool /*CarryOut*/> alu(const value &other) const { + value result; + bool carry = CarryIn; + for (size_t n = 0; n < result.chunks; n++) { + result.data[n] = data[n] + (Invert ? ~other.data[n] : other.data[n]) + carry; + if (result.chunks - 1 == n) + result.data[result.chunks - 1] &= result.msb_mask; + carry = (result.data[n] < data[n]) || + (result.data[n] == data[n] && carry); + } + return {result, carry}; + } + + value add(const value &other) const { + return alu(other).first; + } + + value sub(const value &other) const { + return alu(other).first; + } + + value neg() const { + return value { 0u }.sub(*this); + } + + bool ucmp(const value &other) const { + bool carry; + std::tie(std::ignore, carry) = alu(other); + return !carry; // a.ucmp(b) ≡ a u< b + } + + bool scmp(const value &other) const { + value result; + bool carry; + std::tie(result, carry) = alu(other); + bool overflow = (is_neg() == !other.is_neg()) && (is_neg() != result.is_neg()); + return result.is_neg() ^ overflow; // a.scmp(b) ≡ a s< b + } + + template + value mul(const value &other) const { + value result; + wide_chunk_t wide_result[result.chunks + 1] = {}; + for (size_t n = 0; n < chunks; n++) { + for (size_t m = 0; m < chunks && n + m < result.chunks; m++) { + wide_result[n + m] += wide_chunk_t(data[n]) * wide_chunk_t(other.data[m]); + wide_result[n + m + 1] += wide_result[n + m] >> chunk::bits; + wide_result[n + m] &= chunk::mask; + } + } + for (size_t n = 0; n < result.chunks; n++) { + result.data[n] = wide_result[n]; + } + result.data[result.chunks - 1] &= result.msb_mask; + return result; + } +}; + +// Expression template for a slice, usable as lvalue or rvalue, and composable with other expression templates here. +template +struct slice_expr : public expr_base> { + static_assert(Stop >= Start, "slice_expr() may not reverse bit order"); + static_assert(Start < T::bits && Stop < T::bits, "slice_expr() must be within bounds"); + static constexpr size_t bits = Stop - Start + 1; + + T &expr; + + slice_expr(T &expr) : expr(expr) {} + slice_expr(const slice_expr &) = delete; + + CXXRTL_ALWAYS_INLINE + operator value() const { + return static_cast &>(expr) + .template rtrunc() + .template trunc(); + } + + CXXRTL_ALWAYS_INLINE + slice_expr &operator=(const value &rhs) { + // Generic partial assignment implemented using a read-modify-write operation on the sliced expression. + expr = static_cast &>(expr) + .template blit(rhs); + return *this; + } + + // A helper that forces the cast to value<>, which allows deduction to work. + CXXRTL_ALWAYS_INLINE + value val() const { + return static_cast &>(*this); + } +}; + +// Expression template for a concatenation, usable as lvalue or rvalue, and composable with other expression templates here. +template +struct concat_expr : public expr_base> { + static constexpr size_t bits = T::bits + U::bits; + + T &ms_expr; + U &ls_expr; + + concat_expr(T &ms_expr, U &ls_expr) : ms_expr(ms_expr), ls_expr(ls_expr) {} + concat_expr(const concat_expr &) = delete; + + CXXRTL_ALWAYS_INLINE + operator value() const { + value ms_shifted = static_cast &>(ms_expr) + .template rzext(); + value ls_extended = static_cast &>(ls_expr) + .template zext(); + return ms_shifted.bit_or(ls_extended); + } + + CXXRTL_ALWAYS_INLINE + concat_expr &operator=(const value &rhs) { + ms_expr = rhs.template rtrunc(); + ls_expr = rhs.template trunc(); + return *this; + } + + // A helper that forces the cast to value<>, which allows deduction to work. + CXXRTL_ALWAYS_INLINE + value val() const { + return static_cast &>(*this); + } +}; + +// Base class for expression templates, providing helper methods for operations that are valid on both rvalues and lvalues. +// +// Note that expression objects (slices and concatenations) constructed in this way should NEVER be captured because +// they refer to temporaries that will, in general, only live until the end of the statement. For example, both of +// these snippets perform use-after-free: +// +// const auto &a = val.slice<7,0>().slice<1>(); +// value<1> b = a; +// +// auto &&c = val.slice<7,0>().slice<1>(); +// c = value<1>{1u}; +// +// An easy way to write code using slices and concatenations safely is to follow two simple rules: +// * Never explicitly name any type except `value` or `const value &`. +// * Never use a `const auto &` or `auto &&` in any such expression. +// Then, any code that compiles will be well-defined. +template +struct expr_base { + template + CXXRTL_ALWAYS_INLINE + slice_expr slice() const { + return {*static_cast(this)}; + } + + template + CXXRTL_ALWAYS_INLINE + slice_expr slice() { + return {*static_cast(this)}; + } + + template + CXXRTL_ALWAYS_INLINE + concat_expr::type> concat(const U &other) const { + return {*static_cast(this), other}; + } + + template + CXXRTL_ALWAYS_INLINE + concat_expr::type> concat(U &&other) { + return {*static_cast(this), other}; + } +}; + +template +std::ostream &operator<<(std::ostream &os, const value &val) { + auto old_flags = os.flags(std::ios::right); + auto old_width = os.width(0); + auto old_fill = os.fill('0'); + os << val.bits << '\'' << std::hex; + for (size_t n = val.chunks - 1; n != (size_t)-1; n--) { + if (n == val.chunks - 1 && Bits % value::chunk::bits != 0) + os.width((Bits % value::chunk::bits + 3) / 4); + else + os.width((value::chunk::bits + 3) / 4); + os << val.data[n]; + } + os.fill(old_fill); + os.width(old_width); + os.flags(old_flags); + return os; +} + +template +struct wire { + static constexpr size_t bits = Bits; + + value curr; + value next; + + wire() = default; + explicit constexpr wire(const value &init) : curr(init), next(init) {} + template + explicit constexpr wire(Init ...init) : curr{init...}, next{init...} {} + + // Copying and copy-assigning values is natural. If, however, a value is replaced with a wire, + // e.g. because a module is built with a different optimization level, then existing code could + // unintentionally copy a wire instead, which would create a subtle but serious bug. To make sure + // this doesn't happen, prohibit copying and copy-assigning wires. + wire(const wire &) = delete; + wire &operator=(const wire &) = delete; + + wire(wire &&) = default; + wire &operator=(wire &&) = default; + + template + CXXRTL_ALWAYS_INLINE + IntegerT get() const { + return curr.template get(); + } + + template + CXXRTL_ALWAYS_INLINE + void set(IntegerT other) { + next.template set(other); + } + + bool commit() { + if (curr != next) { + curr = next; + return true; + } + return false; + } +}; + +template +std::ostream &operator<<(std::ostream &os, const wire &val) { + os << val.curr; + return os; +} + +template +struct memory { + const size_t depth; + std::unique_ptr[]> data; + + explicit memory(size_t depth) : depth(depth), data(new value[depth]) {} + + memory(const memory &) = delete; + memory &operator=(const memory &) = delete; + + memory(memory &&) = default; + memory &operator=(memory &&other) { + assert(depth == other.depth); + data = std::move(other.data); + write_queue = std::move(other.write_queue); + return *this; + } + + // An operator for direct memory reads. May be used at any time during the simulation. + const value &operator [](size_t index) const { + assert(index < depth); + return data[index]; + } + + // An operator for direct memory writes. May only be used before the simulation is started. If used + // after the simulation is started, the design may malfunction. + value &operator [](size_t index) { + assert(index < depth); + return data[index]; + } + + // A simple way to make a writable memory would be to use an array of wires instead of an array of values. + // However, there are two significant downsides to this approach: first, it has large overhead (2× space + // overhead, and O(depth) time overhead during commit); second, it does not simplify handling write port + // priorities. Although in principle write ports could be ordered or conditionally enabled in generated + // code based on their priorities and selected addresses, the feedback arc set problem is computationally + // expensive, and the heuristic based algorithms are not easily modified to guarantee (rather than prefer) + // a particular write port evaluation order. + // + // The approach used here instead is to queue writes into a buffer during the eval phase, then perform + // the writes during the commit phase in the priority order. This approach has low overhead, with both space + // and time proportional to the amount of write ports. Because virtually every memory in a practical design + // has at most two write ports, linear search is used on every write, being the fastest and simplest approach. + struct write { + size_t index; + value val; + value mask; + int priority; + }; + std::vector write_queue; + + void update(size_t index, const value &val, const value &mask, int priority = 0) { + assert(index < depth); + // Queue up the write while keeping the queue sorted by priority. + write_queue.insert( + std::upper_bound(write_queue.begin(), write_queue.end(), priority, + [](const int a, const write& b) { return a < b.priority; }), + write { index, val, mask, priority }); + } + + bool commit() { + bool changed = false; + for (const write &entry : write_queue) { + value elem = data[entry.index]; + elem = elem.update(entry.val, entry.mask); + changed |= (data[entry.index] != elem); + data[entry.index] = elem; + } + write_queue.clear(); + return changed; + } +}; + +struct metadata { + const enum { + MISSING = 0, + UINT = 1, + SINT = 2, + STRING = 3, + DOUBLE = 4, + } value_type; + + // In debug mode, using the wrong .as_*() function will assert. + // In release mode, using the wrong .as_*() function will safely return a default value. + const unsigned uint_value = 0; + const signed sint_value = 0; + const std::string string_value = ""; + const double double_value = 0.0; + + metadata() : value_type(MISSING) {} + metadata(unsigned value) : value_type(UINT), uint_value(value) {} + metadata(signed value) : value_type(SINT), sint_value(value) {} + metadata(const std::string &value) : value_type(STRING), string_value(value) {} + metadata(const char *value) : value_type(STRING), string_value(value) {} + metadata(double value) : value_type(DOUBLE), double_value(value) {} + + metadata(const metadata &) = default; + metadata &operator=(const metadata &) = delete; + + unsigned as_uint() const { + assert(value_type == UINT); + return uint_value; + } + + signed as_sint() const { + assert(value_type == SINT); + return sint_value; + } + + const std::string &as_string() const { + assert(value_type == STRING); + return string_value; + } + + double as_double() const { + assert(value_type == DOUBLE); + return double_value; + } +}; + +typedef std::map metadata_map; + +// Tag class to disambiguate values/wires and their aliases. +struct debug_alias {}; + +// Tag declaration to disambiguate values and debug outlines. +using debug_outline = ::_cxxrtl_outline; + +// This structure is intended for consumption via foreign function interfaces, like Python's ctypes. +// Because of this it uses a C-style layout that is easy to parse rather than more idiomatic C++. +// +// To avoid violating strict aliasing rules, this structure has to be a subclass of the one used +// in the C API, or it would not be possible to cast between the pointers to these. +struct debug_item : ::cxxrtl_object { + // Object types. + enum : uint32_t { + VALUE = CXXRTL_VALUE, + WIRE = CXXRTL_WIRE, + MEMORY = CXXRTL_MEMORY, + ALIAS = CXXRTL_ALIAS, + OUTLINE = CXXRTL_OUTLINE, + }; + + // Object flags. + enum : uint32_t { + INPUT = CXXRTL_INPUT, + OUTPUT = CXXRTL_OUTPUT, + INOUT = CXXRTL_INOUT, + DRIVEN_SYNC = CXXRTL_DRIVEN_SYNC, + DRIVEN_COMB = CXXRTL_DRIVEN_COMB, + UNDRIVEN = CXXRTL_UNDRIVEN, + }; + + debug_item(const ::cxxrtl_object &object) : cxxrtl_object(object) {} + + template + debug_item(value &item, size_t lsb_offset = 0, uint32_t flags_ = 0) { + static_assert(sizeof(item) == value::chunks * sizeof(chunk_t), + "value is not compatible with C layout"); + type = VALUE; + flags = flags_; + width = Bits; + lsb_at = lsb_offset; + depth = 1; + zero_at = 0; + curr = item.data; + next = item.data; + outline = nullptr; + } + + template + debug_item(const value &item, size_t lsb_offset = 0) { + static_assert(sizeof(item) == value::chunks * sizeof(chunk_t), + "value is not compatible with C layout"); + type = VALUE; + flags = DRIVEN_COMB; + width = Bits; + lsb_at = lsb_offset; + depth = 1; + zero_at = 0; + curr = const_cast(item.data); + next = nullptr; + outline = nullptr; + } + + template + debug_item(wire &item, size_t lsb_offset = 0, uint32_t flags_ = 0) { + static_assert(sizeof(item.curr) == value::chunks * sizeof(chunk_t) && + sizeof(item.next) == value::chunks * sizeof(chunk_t), + "wire is not compatible with C layout"); + type = WIRE; + flags = flags_; + width = Bits; + lsb_at = lsb_offset; + depth = 1; + zero_at = 0; + curr = item.curr.data; + next = item.next.data; + outline = nullptr; + } + + template + debug_item(memory &item, size_t zero_offset = 0) { + static_assert(sizeof(item.data[0]) == value::chunks * sizeof(chunk_t), + "memory is not compatible with C layout"); + type = MEMORY; + flags = 0; + width = Width; + lsb_at = 0; + depth = item.depth; + zero_at = zero_offset; + curr = item.data ? item.data[0].data : nullptr; + next = nullptr; + outline = nullptr; + } + + template + debug_item(debug_alias, const value &item, size_t lsb_offset = 0) { + static_assert(sizeof(item) == value::chunks * sizeof(chunk_t), + "value is not compatible with C layout"); + type = ALIAS; + flags = DRIVEN_COMB; + width = Bits; + lsb_at = lsb_offset; + depth = 1; + zero_at = 0; + curr = const_cast(item.data); + next = nullptr; + outline = nullptr; + } + + template + debug_item(debug_alias, const wire &item, size_t lsb_offset = 0) { + static_assert(sizeof(item.curr) == value::chunks * sizeof(chunk_t) && + sizeof(item.next) == value::chunks * sizeof(chunk_t), + "wire is not compatible with C layout"); + type = ALIAS; + flags = DRIVEN_COMB; + width = Bits; + lsb_at = lsb_offset; + depth = 1; + zero_at = 0; + curr = const_cast(item.curr.data); + next = nullptr; + outline = nullptr; + } + + template + debug_item(debug_outline &group, const value &item, size_t lsb_offset = 0) { + static_assert(sizeof(item) == value::chunks * sizeof(chunk_t), + "value is not compatible with C layout"); + type = OUTLINE; + flags = DRIVEN_COMB; + width = Bits; + lsb_at = lsb_offset; + depth = 1; + zero_at = 0; + curr = const_cast(item.data); + next = nullptr; + outline = &group; + } + + template + IntegerT get() const { + assert(width == Bits && depth == 1); + value item; + std::copy(curr, curr + value::chunks, item.data); + return item.template get(); + } + + template + void set(IntegerT other) const { + assert(width == Bits && depth == 1); + value item; + item.template set(other); + std::copy(item.data, item.data + value::chunks, next); + } +}; +static_assert(std::is_standard_layout::value, "debug_item is not compatible with C layout"); + +struct debug_items { + std::map> table; + + void add(const std::string &name, debug_item &&item) { + std::vector &parts = table[name]; + parts.emplace_back(item); + std::sort(parts.begin(), parts.end(), + [](const debug_item &a, const debug_item &b) { + return a.lsb_at < b.lsb_at; + }); + } + + size_t count(const std::string &name) const { + if (table.count(name) == 0) + return 0; + return table.at(name).size(); + } + + const std::vector &parts_at(const std::string &name) const { + return table.at(name); + } + + const debug_item &at(const std::string &name) const { + const std::vector &parts = table.at(name); + assert(parts.size() == 1); + return parts.at(0); + } + + const debug_item &operator [](const std::string &name) const { + return at(name); + } +}; + +// Tag class to disambiguate the default constructor used by the toplevel module that calls reset(), +// and the constructor of interior modules that should not call it. +struct interior {}; + +struct module { + module() {} + virtual ~module() {} + + // Modules with black boxes cannot be copied. Although not all designs include black boxes, + // delete the copy constructor and copy assignment operator to make sure that any downstream + // code that manipulates modules doesn't accidentally depend on their availability. + module(const module &) = delete; + module &operator=(const module &) = delete; + + module(module &&) = default; + module &operator=(module &&) = default; + + virtual void reset() = 0; + + virtual bool eval() = 0; + virtual bool commit() = 0; + + size_t step() { + size_t deltas = 0; + bool converged = false; + do { + converged = eval(); + deltas++; + } while (commit() && !converged); + return deltas; + } + + virtual void debug_info(debug_items &items, std::string path = "") { + (void)items, (void)path; + } +}; + +} // namespace cxxrtl + +// Internal structures used to communicate with the implementation of the C interface. + +typedef struct _cxxrtl_toplevel { + std::unique_ptr module; +} *cxxrtl_toplevel; + +typedef struct _cxxrtl_outline { + std::function eval; +} *cxxrtl_outline; + +// Definitions of internal Yosys cells. Other than the functions in this namespace, CXXRTL is fully generic +// and indepenent of Yosys implementation details. +// +// The `write_cxxrtl` pass translates internal cells (cells with names that start with `$`) to calls of these +// functions. All of Yosys arithmetic and logical cells perform sign or zero extension on their operands, +// whereas basic operations on arbitrary width values require operands to be of the same width. These functions +// bridge the gap by performing the necessary casts. They are named similar to `cell_A[B]`, where A and B are `u` +// if the corresponding operand is unsigned, and `s` if it is signed. +namespace cxxrtl_yosys { + +using namespace cxxrtl; + +// std::max isn't constexpr until C++14 for no particular reason (it's an oversight), so we define our own. +template +CXXRTL_ALWAYS_INLINE +constexpr T max(const T &a, const T &b) { + return a > b ? a : b; +} + +// Logic operations +template +CXXRTL_ALWAYS_INLINE +value logic_not(const value &a) { + return value { a ? 0u : 1u }; +} + +template +CXXRTL_ALWAYS_INLINE +value logic_and(const value &a, const value &b) { + return value { (bool(a) && bool(b)) ? 1u : 0u }; +} + +template +CXXRTL_ALWAYS_INLINE +value logic_or(const value &a, const value &b) { + return value { (bool(a) || bool(b)) ? 1u : 0u }; +} + +// Reduction operations +template +CXXRTL_ALWAYS_INLINE +value reduce_and(const value &a) { + return value { a.bit_not().is_zero() ? 1u : 0u }; +} + +template +CXXRTL_ALWAYS_INLINE +value reduce_or(const value &a) { + return value { a ? 1u : 0u }; +} + +template +CXXRTL_ALWAYS_INLINE +value reduce_xor(const value &a) { + return value { (a.ctpop() % 2) ? 1u : 0u }; +} + +template +CXXRTL_ALWAYS_INLINE +value reduce_xnor(const value &a) { + return value { (a.ctpop() % 2) ? 0u : 1u }; +} + +template +CXXRTL_ALWAYS_INLINE +value reduce_bool(const value &a) { + return value { a ? 1u : 0u }; +} + +// Bitwise operations +template +CXXRTL_ALWAYS_INLINE +value not_u(const value &a) { + return a.template zcast().bit_not(); +} + +template +CXXRTL_ALWAYS_INLINE +value not_s(const value &a) { + return a.template scast().bit_not(); +} + +template +CXXRTL_ALWAYS_INLINE +value and_uu(const value &a, const value &b) { + return a.template zcast().bit_and(b.template zcast()); +} + +template +CXXRTL_ALWAYS_INLINE +value and_ss(const value &a, const value &b) { + return a.template scast().bit_and(b.template scast()); +} + +template +CXXRTL_ALWAYS_INLINE +value or_uu(const value &a, const value &b) { + return a.template zcast().bit_or(b.template zcast()); +} + +template +CXXRTL_ALWAYS_INLINE +value or_ss(const value &a, const value &b) { + return a.template scast().bit_or(b.template scast()); +} + +template +CXXRTL_ALWAYS_INLINE +value xor_uu(const value &a, const value &b) { + return a.template zcast().bit_xor(b.template zcast()); +} + +template +CXXRTL_ALWAYS_INLINE +value xor_ss(const value &a, const value &b) { + return a.template scast().bit_xor(b.template scast()); +} + +template +CXXRTL_ALWAYS_INLINE +value xnor_uu(const value &a, const value &b) { + return a.template zcast().bit_xor(b.template zcast()).bit_not(); +} + +template +CXXRTL_ALWAYS_INLINE +value xnor_ss(const value &a, const value &b) { + return a.template scast().bit_xor(b.template scast()).bit_not(); +} + +template +CXXRTL_ALWAYS_INLINE +value shl_uu(const value &a, const value &b) { + return a.template zcast().shl(b); +} + +template +CXXRTL_ALWAYS_INLINE +value shl_su(const value &a, const value &b) { + return a.template scast().shl(b); +} + +template +CXXRTL_ALWAYS_INLINE +value sshl_uu(const value &a, const value &b) { + return a.template zcast().shl(b); +} + +template +CXXRTL_ALWAYS_INLINE +value sshl_su(const value &a, const value &b) { + return a.template scast().shl(b); +} + +template +CXXRTL_ALWAYS_INLINE +value shr_uu(const value &a, const value &b) { + return a.shr(b).template zcast(); +} + +template +CXXRTL_ALWAYS_INLINE +value shr_su(const value &a, const value &b) { + return a.shr(b).template scast(); +} + +template +CXXRTL_ALWAYS_INLINE +value sshr_uu(const value &a, const value &b) { + return a.shr(b).template zcast(); +} + +template +CXXRTL_ALWAYS_INLINE +value sshr_su(const value &a, const value &b) { + return a.sshr(b).template scast(); +} + +template +CXXRTL_ALWAYS_INLINE +value shift_uu(const value &a, const value &b) { + return shr_uu(a, b); +} + +template +CXXRTL_ALWAYS_INLINE +value shift_su(const value &a, const value &b) { + return shr_su(a, b); +} + +template +CXXRTL_ALWAYS_INLINE +value shift_us(const value &a, const value &b) { + return b.is_neg() ? shl_uu(a, b.template sext().neg()) : shr_uu(a, b); +} + +template +CXXRTL_ALWAYS_INLINE +value shift_ss(const value &a, const value &b) { + return b.is_neg() ? shl_su(a, b.template sext().neg()) : shr_su(a, b); +} + +template +CXXRTL_ALWAYS_INLINE +value shiftx_uu(const value &a, const value &b) { + return shift_uu(a, b); +} + +template +CXXRTL_ALWAYS_INLINE +value shiftx_su(const value &a, const value &b) { + return shift_su(a, b); +} + +template +CXXRTL_ALWAYS_INLINE +value shiftx_us(const value &a, const value &b) { + return shift_us(a, b); +} + +template +CXXRTL_ALWAYS_INLINE +value shiftx_ss(const value &a, const value &b) { + return shift_ss(a, b); +} + +// Comparison operations +template +CXXRTL_ALWAYS_INLINE +value eq_uu(const value &a, const value &b) { + constexpr size_t BitsExt = max(BitsA, BitsB); + return value{ a.template zext() == b.template zext() ? 1u : 0u }; +} + +template +CXXRTL_ALWAYS_INLINE +value eq_ss(const value &a, const value &b) { + constexpr size_t BitsExt = max(BitsA, BitsB); + return value{ a.template sext() == b.template sext() ? 1u : 0u }; +} + +template +CXXRTL_ALWAYS_INLINE +value ne_uu(const value &a, const value &b) { + constexpr size_t BitsExt = max(BitsA, BitsB); + return value{ a.template zext() != b.template zext() ? 1u : 0u }; +} + +template +CXXRTL_ALWAYS_INLINE +value ne_ss(const value &a, const value &b) { + constexpr size_t BitsExt = max(BitsA, BitsB); + return value{ a.template sext() != b.template sext() ? 1u : 0u }; +} + +template +CXXRTL_ALWAYS_INLINE +value eqx_uu(const value &a, const value &b) { + return eq_uu(a, b); +} + +template +CXXRTL_ALWAYS_INLINE +value eqx_ss(const value &a, const value &b) { + return eq_ss(a, b); +} + +template +CXXRTL_ALWAYS_INLINE +value nex_uu(const value &a, const value &b) { + return ne_uu(a, b); +} + +template +CXXRTL_ALWAYS_INLINE +value nex_ss(const value &a, const value &b) { + return ne_ss(a, b); +} + +template +CXXRTL_ALWAYS_INLINE +value gt_uu(const value &a, const value &b) { + constexpr size_t BitsExt = max(BitsA, BitsB); + return value { b.template zext().ucmp(a.template zext()) ? 1u : 0u }; +} + +template +CXXRTL_ALWAYS_INLINE +value gt_ss(const value &a, const value &b) { + constexpr size_t BitsExt = max(BitsA, BitsB); + return value { b.template sext().scmp(a.template sext()) ? 1u : 0u }; +} + +template +CXXRTL_ALWAYS_INLINE +value ge_uu(const value &a, const value &b) { + constexpr size_t BitsExt = max(BitsA, BitsB); + return value { !a.template zext().ucmp(b.template zext()) ? 1u : 0u }; +} + +template +CXXRTL_ALWAYS_INLINE +value ge_ss(const value &a, const value &b) { + constexpr size_t BitsExt = max(BitsA, BitsB); + return value { !a.template sext().scmp(b.template sext()) ? 1u : 0u }; +} + +template +CXXRTL_ALWAYS_INLINE +value lt_uu(const value &a, const value &b) { + constexpr size_t BitsExt = max(BitsA, BitsB); + return value { a.template zext().ucmp(b.template zext()) ? 1u : 0u }; +} + +template +CXXRTL_ALWAYS_INLINE +value lt_ss(const value &a, const value &b) { + constexpr size_t BitsExt = max(BitsA, BitsB); + return value { a.template sext().scmp(b.template sext()) ? 1u : 0u }; +} + +template +CXXRTL_ALWAYS_INLINE +value le_uu(const value &a, const value &b) { + constexpr size_t BitsExt = max(BitsA, BitsB); + return value { !b.template zext().ucmp(a.template zext()) ? 1u : 0u }; +} + +template +CXXRTL_ALWAYS_INLINE +value le_ss(const value &a, const value &b) { + constexpr size_t BitsExt = max(BitsA, BitsB); + return value { !b.template sext().scmp(a.template sext()) ? 1u : 0u }; +} + +// Arithmetic operations +template +CXXRTL_ALWAYS_INLINE +value pos_u(const value &a) { + return a.template zcast(); +} + +template +CXXRTL_ALWAYS_INLINE +value pos_s(const value &a) { + return a.template scast(); +} + +template +CXXRTL_ALWAYS_INLINE +value neg_u(const value &a) { + return a.template zcast().neg(); +} + +template +CXXRTL_ALWAYS_INLINE +value neg_s(const value &a) { + return a.template scast().neg(); +} + +template +CXXRTL_ALWAYS_INLINE +value add_uu(const value &a, const value &b) { + return a.template zcast().add(b.template zcast()); +} + +template +CXXRTL_ALWAYS_INLINE +value add_ss(const value &a, const value &b) { + return a.template scast().add(b.template scast()); +} + +template +CXXRTL_ALWAYS_INLINE +value sub_uu(const value &a, const value &b) { + return a.template zcast().sub(b.template zcast()); +} + +template +CXXRTL_ALWAYS_INLINE +value sub_ss(const value &a, const value &b) { + return a.template scast().sub(b.template scast()); +} + +template +CXXRTL_ALWAYS_INLINE +value mul_uu(const value &a, const value &b) { + constexpr size_t BitsM = BitsA >= BitsB ? BitsA : BitsB; + return a.template zcast().template mul(b.template zcast()); +} + +template +CXXRTL_ALWAYS_INLINE +value mul_ss(const value &a, const value &b) { + return a.template scast().template mul(b.template scast()); +} + +template +CXXRTL_ALWAYS_INLINE +std::pair, value> divmod_uu(const value &a, const value &b) { + constexpr size_t Bits = max(BitsY, max(BitsA, BitsB)); + value quotient; + value dividend = a.template zext(); + value divisor = b.template zext(); + if (dividend.ucmp(divisor)) + return {/*quotient=*/value { 0u }, /*remainder=*/dividend.template trunc()}; + uint32_t divisor_shift = dividend.ctlz() - divisor.ctlz(); + divisor = divisor.shl(value<32> { divisor_shift }); + for (size_t step = 0; step <= divisor_shift; step++) { + quotient = quotient.shl(value<1> { 1u }); + if (!dividend.ucmp(divisor)) { + dividend = dividend.sub(divisor); + quotient.set_bit(0, true); + } + divisor = divisor.shr(value<1> { 1u }); + } + return {quotient.template trunc(), /*remainder=*/dividend.template trunc()}; +} + +template +CXXRTL_ALWAYS_INLINE +std::pair, value> divmod_ss(const value &a, const value &b) { + value ua = a.template sext(); + value ub = b.template sext(); + if (ua.is_neg()) ua = ua.neg(); + if (ub.is_neg()) ub = ub.neg(); + value y, r; + std::tie(y, r) = divmod_uu(ua, ub); + if (a.is_neg() != b.is_neg()) y = y.neg(); + if (a.is_neg()) r = r.neg(); + return {y, r}; +} + +template +CXXRTL_ALWAYS_INLINE +value div_uu(const value &a, const value &b) { + return divmod_uu(a, b).first; +} + +template +CXXRTL_ALWAYS_INLINE +value div_ss(const value &a, const value &b) { + return divmod_ss(a, b).first; +} + +template +CXXRTL_ALWAYS_INLINE +value mod_uu(const value &a, const value &b) { + return divmod_uu(a, b).second; +} + +template +CXXRTL_ALWAYS_INLINE +value mod_ss(const value &a, const value &b) { + return divmod_ss(a, b).second; +} + +template +CXXRTL_ALWAYS_INLINE +value modfloor_uu(const value &a, const value &b) { + return divmod_uu(a, b).second; +} + +// GHDL Modfloor operator. Returns r=a mod b, such that r has the same sign as b and +// a=b*N+r where N is some integer +// In practical terms, when a and b have different signs and the remainder returned by divmod_ss is not 0 +// then return the remainder + b +template +CXXRTL_ALWAYS_INLINE +value modfloor_ss(const value &a, const value &b) { + value r; + r = divmod_ss(a, b).second; + if((b.is_neg() != a.is_neg()) && !r.is_zero()) + return add_ss(b, r); + return r; +} + + +// Memory helper +struct memory_index { + bool valid; + size_t index; + + template + memory_index(const value &addr, size_t offset, size_t depth) { + static_assert(value::chunks <= 1, "memory address is too wide"); + size_t offset_index = addr.data[0]; + + valid = (offset_index >= offset && offset_index < offset + depth); + index = offset_index - offset; + } +}; + +} // namespace cxxrtl_yosys + +#endif diff --git a/resources/netlist/resources/kernel/share/include/backends/cxxrtl/cxxrtl_capi.cc b/resources/netlist/resources/kernel/share/include/backends/cxxrtl/cxxrtl_capi.cc new file mode 100644 index 0000000..227173b --- /dev/null +++ b/resources/netlist/resources/kernel/share/include/backends/cxxrtl/cxxrtl_capi.cc @@ -0,0 +1,92 @@ +/* + * yosys -- Yosys Open SYnthesis Suite + * + * Copyright (C) 2020 whitequark + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + */ + +// This file is a part of the CXXRTL C API. It should be used together with `cxxrtl_capi.h`. + +#include +#include + +struct _cxxrtl_handle { + std::unique_ptr module; + cxxrtl::debug_items objects; +}; + +// Private function for use by other units of the C API. +const cxxrtl::debug_items &cxxrtl_debug_items_from_handle(cxxrtl_handle handle) { + return handle->objects; +} + +cxxrtl_handle cxxrtl_create(cxxrtl_toplevel design) { + return cxxrtl_create_at(design, ""); +} + +cxxrtl_handle cxxrtl_create_at(cxxrtl_toplevel design, const char *root) { + std::string path = root; + if (!path.empty()) { + // module::debug_info() accepts either an empty path, or a path ending in space to simplify + // the logic in generated code. While this is sketchy at best to expose in the C++ API, this + // would be a lot worse in the C API, so don't expose it here. + assert(path.back() != ' '); + path += ' '; + } + + cxxrtl_handle handle = new _cxxrtl_handle; + handle->module = std::move(design->module); + handle->module->debug_info(handle->objects, path); + delete design; + return handle; +} + +void cxxrtl_destroy(cxxrtl_handle handle) { + delete handle; +} + +void cxxrtl_reset(cxxrtl_handle handle) { + handle->module->reset(); +} + +int cxxrtl_eval(cxxrtl_handle handle) { + return handle->module->eval(); +} + +int cxxrtl_commit(cxxrtl_handle handle) { + return handle->module->commit(); +} + +size_t cxxrtl_step(cxxrtl_handle handle) { + return handle->module->step(); +} + +struct cxxrtl_object *cxxrtl_get_parts(cxxrtl_handle handle, const char *name, size_t *parts) { + auto it = handle->objects.table.find(name); + if (it == handle->objects.table.end()) + return nullptr; + *parts = it->second.size(); + return static_cast(&it->second[0]); +} + +void cxxrtl_enum(cxxrtl_handle handle, void *data, + void (*callback)(void *data, const char *name, + cxxrtl_object *object, size_t parts)) { + for (auto &it : handle->objects.table) + callback(data, it.first.c_str(), static_cast(&it.second[0]), it.second.size()); +} + +void cxxrtl_outline_eval(cxxrtl_outline outline) { + outline->eval(); +} diff --git a/resources/netlist/resources/kernel/share/include/backends/cxxrtl/cxxrtl_capi.h b/resources/netlist/resources/kernel/share/include/backends/cxxrtl/cxxrtl_capi.h new file mode 100644 index 0000000..2df2b72 --- /dev/null +++ b/resources/netlist/resources/kernel/share/include/backends/cxxrtl/cxxrtl_capi.h @@ -0,0 +1,311 @@ +/* + * yosys -- Yosys Open SYnthesis Suite + * + * Copyright (C) 2020 whitequark + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + */ + +#ifndef CXXRTL_CAPI_H +#define CXXRTL_CAPI_H + +// This file is a part of the CXXRTL C API. It should be used together with `cxxrtl_capi.cc`. +// +// The CXXRTL C API makes it possible to drive CXXRTL designs using C or any other language that +// supports the C ABI, for example, Python. It does not provide a way to implement black boxes. + +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +// Opaque reference to a design toplevel. +// +// A design toplevel can only be used to create a design handle. +typedef struct _cxxrtl_toplevel *cxxrtl_toplevel; + +// The constructor for a design toplevel is provided as a part of generated code for that design. +// Its prototype matches: +// +// cxxrtl_toplevel _create(); + +// Opaque reference to a design handle. +// +// A design handle is required by all operations in the C API. +typedef struct _cxxrtl_handle *cxxrtl_handle; + +// Create a design handle from a design toplevel. +// +// The `design` is consumed by this operation and cannot be used afterwards. +cxxrtl_handle cxxrtl_create(cxxrtl_toplevel design); + +// Create a design handle at a given hierarchy position from a design toplevel. +// +// This operation is similar to `cxxrtl_create`, except the full hierarchical name of every object +// is prepended with `root`. +cxxrtl_handle cxxrtl_create_at(cxxrtl_toplevel design, const char *root); + +// Release all resources used by a design and its handle. +void cxxrtl_destroy(cxxrtl_handle handle); + +// Reinitialize the design, replacing the internal state with the reset values while preserving +// black boxes. +// +// This operation is essentially equivalent to a power-on reset. Values, wires, and memories are +// returned to their reset state while preserving the state of black boxes and keeping all of +// the interior pointers obtained with e.g. `cxxrtl_get` valid. +void cxxrtl_reset(cxxrtl_handle handle); + +// Evaluate the design, propagating changes on inputs to the `next` value of internal state and +// output wires. +// +// Returns 1 if the design is known to immediately converge, 0 otherwise. +int cxxrtl_eval(cxxrtl_handle handle); + +// Commit the design, replacing the `curr` value of internal state and output wires with the `next` +// value. +// +// Return 1 if any of the `curr` values were updated, 0 otherwise. +int cxxrtl_commit(cxxrtl_handle handle); + +// Simulate the design to a fixed point. +// +// Returns the number of delta cycles. +size_t cxxrtl_step(cxxrtl_handle handle); + +// Type of a simulated object. +// +// The type of a simulated object indicates the way it is stored and the operations that are legal +// to perform on it (i.e. won't crash the simulation). It says very little about object semantics, +// which is specified through flags. +enum cxxrtl_type { + // Values correspond to singly buffered netlist nodes, i.e. nodes driven exclusively by + // combinatorial cells, or toplevel input nodes. + // + // Values can be inspected via the `curr` pointer. If the `next` pointer is NULL, the value is + // driven by a constant and can never be modified. Otherwise, the value can be modified through + // the `next` pointer (which is equal to `curr` if not NULL). Note that changes to the bits + // driven by combinatorial cells will be ignored. + // + // Values always have depth 1. + CXXRTL_VALUE = 0, + + // Wires correspond to doubly buffered netlist nodes, i.e. nodes driven, at least in part, by + // storage cells, or by combinatorial cells that are a part of a feedback path. They are also + // present in non-optimized builds. + // + // Wires can be inspected via the `curr` pointer and modified via the `next` pointer (which are + // distinct for wires). Note that changes to the bits driven by combinatorial cells will be + // ignored. + // + // Wires always have depth 1. + CXXRTL_WIRE = 1, + + // Memories correspond to memory cells. + // + // Memories can be inspected and modified via the `curr` pointer. Due to a limitation of this + // API, memories cannot yet be modified in a guaranteed race-free way, and the `next` pointer is + // always NULL. + CXXRTL_MEMORY = 2, + + // Aliases correspond to netlist nodes driven by another node such that their value is always + // exactly equal. + // + // Aliases can be inspected via the `curr` pointer. They cannot be modified, and the `next` + // pointer is always NULL. + CXXRTL_ALIAS = 3, + + // Outlines correspond to netlist nodes that were optimized in a way that makes them inaccessible + // outside of a module's `eval()` function. At the highest debug information level, every inlined + // node has a corresponding outline object. + // + // Outlines can be inspected via the `curr` pointer and can never be modified; the `next` pointer + // is always NULL. Unlike all other objects, the bits of an outline object are meaningful only + // after a call to `cxxrtl_outline_eval` and until any subsequent modification to the netlist. + // Observing this requirement is the responsibility of the caller; it is not enforced. + // + // Outlines always correspond to combinatorial netlist nodes that are not ports. + CXXRTL_OUTLINE = 4, + + // More object types may be added in the future, but the existing ones will never change. +}; + +// Flags of a simulated object. +// +// The flags of a simulated object indicate its role in the netlist: +// * The flags `CXXRTL_INPUT` and `CXXRTL_OUTPUT` designate module ports. +// * The flags `CXXRTL_DRIVEN_SYNC`, `CXXRTL_DRIVEN_COMB`, and `CXXRTL_UNDRIVEN` specify +// the semantics of node state. An object with several of these flags set has different bits +// follow different semantics. +enum cxxrtl_flag { + // Node is a module input port. + // + // This flag can be set on objects of type `CXXRTL_VALUE` and `CXXRTL_WIRE`. It may be combined + // with `CXXRTL_OUTPUT`, as well as other flags. + CXXRTL_INPUT = 1 << 0, + + // Node is a module output port. + // + // This flag can be set on objects of type `CXXRTL_WIRE`. It may be combined with `CXXRTL_INPUT`, + // as well as other flags. + CXXRTL_OUTPUT = 1 << 1, + + // Node is a module inout port. + // + // This flag can be set on objects of type `CXXRTL_WIRE`. It may be combined with other flags. + CXXRTL_INOUT = (CXXRTL_INPUT|CXXRTL_OUTPUT), + + // Node has bits that are driven by a storage cell. + // + // This flag can be set on objects of type `CXXRTL_WIRE`. It may be combined with + // `CXXRTL_DRIVEN_COMB` and `CXXRTL_UNDRIVEN`, as well as other flags. + // + // This flag is set on wires that have bits connected directly to the output of a flip-flop or + // a latch, and hold its state. Many `CXXRTL_WIRE` objects may not have the `CXXRTL_DRIVEN_SYNC` + // flag set; for example, output ports and feedback wires generally won't. Writing to the `next` + // pointer of these wires updates stored state, and for designs without combinatorial loops, + // capturing the value from every of these wires through the `curr` pointer creates a complete + // snapshot of the design state. + CXXRTL_DRIVEN_SYNC = 1 << 2, + + // Node has bits that are driven by a combinatorial cell or another node. + // + // This flag can be set on objects of type `CXXRTL_VALUE`, `CXXRTL_WIRE`, and `CXXRTL_OUTLINE`. + // It may be combined with `CXXRTL_DRIVEN_SYNC` and `CXXRTL_UNDRIVEN`, as well as other flags. + // + // This flag is set on objects that have bits connected to the output of a combinatorial cell, + // or directly to another node. For designs without combinatorial loops, writing to such bits + // through the `next` pointer (if it is not NULL) has no effect. + CXXRTL_DRIVEN_COMB = 1 << 3, + + // Node has bits that are not driven. + // + // This flag can be set on objects of type `CXXRTL_VALUE` and `CXXRTL_WIRE`. It may be combined + // with `CXXRTL_DRIVEN_SYNC` and `CXXRTL_DRIVEN_COMB`, as well as other flags. + // + // This flag is set on objects that have bits not driven by an output of any cell or by another + // node, such as inputs and dangling wires. + CXXRTL_UNDRIVEN = 1 << 4, + + // More object flags may be added in the future, but the existing ones will never change. +}; + +// Description of a simulated object. +// +// The `curr` and `next` arrays can be accessed directly to inspect and, if applicable, modify +// the bits stored in the object. +struct cxxrtl_object { + // Type of the object. + // + // All objects have the same memory layout determined by `width` and `depth`, but the type + // determines all other properties of the object. + uint32_t type; // actually `enum cxxrtl_type` + + // Flags of the object. + uint32_t flags; // actually bit mask of `enum cxxrtl_flags` + + // Width of the object in bits. + size_t width; + + // Index of the least significant bit. + size_t lsb_at; + + // Depth of the object. Only meaningful for memories; for other objects, always 1. + size_t depth; + + // Index of the first word. Only meaningful for memories; for other objects, always 0; + size_t zero_at; + + // Bits stored in the object, as 32-bit chunks, least significant bits first. + // + // The width is rounded up to a multiple of 32; the padding bits are always set to 0 by + // the simulation code, and must be always written as 0 when modified by user code. + // In memories, every element is stored contiguously. Therefore, the total number of chunks + // in any object is `((width + 31) / 32) * depth`. + // + // To allow the simulation to be partitioned into multiple independent units communicating + // through wires, the bits are double buffered. To avoid race conditions, user code should + // always read from `curr` and write to `next`. The `curr` pointer is always valid; for objects + // that cannot be modified, or cannot be modified in a race-free way, `next` is NULL. + uint32_t *curr; + uint32_t *next; + + // Opaque reference to an outline. Only meaningful for outline objects. + // + // See the documentation of `cxxrtl_outline` for details. When creating a `cxxrtl_object`, set + // this field to NULL. + struct _cxxrtl_outline *outline; + + // More description fields may be added in the future, but the existing ones will never change. +}; + +// Retrieve description of a simulated object. +// +// The `name` is the full hierarchical name of the object in the Yosys notation, where public names +// have a `\` prefix and hierarchy levels are separated by single spaces. For example, if +// the top-level module instantiates a module `foo`, which in turn contains a wire `bar`, the full +// hierarchical name is `\foo \bar`. +// +// The storage of a single abstract object may be split (usually with the `splitnets` pass) into +// many physical parts, all of which correspond to the same hierarchical name. To handle such cases, +// this function returns an array and writes its length to `parts`. The array is sorted by `lsb_at`. +// +// Returns the object parts if it was found, NULL otherwise. The returned parts are valid until +// the design is destroyed. +struct cxxrtl_object *cxxrtl_get_parts(cxxrtl_handle handle, const char *name, size_t *parts); + +// Retrieve description of a single part simulated object. +// +// This function is a shortcut for the most common use of `cxxrtl_get_parts`. It asserts that, +// if the object exists, it consists of a single part. If assertions are disabled, it returns NULL +// for multi-part objects. +static inline struct cxxrtl_object *cxxrtl_get(cxxrtl_handle handle, const char *name) { + size_t parts = 0; + struct cxxrtl_object *object = cxxrtl_get_parts(handle, name, &parts); + assert(object == NULL || parts == 1); + if (object == NULL || parts == 1) + return object; + return NULL; +} + +// Enumerate simulated objects. +// +// For every object in the simulation, `callback` is called with the provided `data`, the full +// hierarchical name of the object (see `cxxrtl_get` for details), and the object parts. +// The provided `name` and `object` values are valid until the design is destroyed. +void cxxrtl_enum(cxxrtl_handle handle, void *data, + void (*callback)(void *data, const char *name, + struct cxxrtl_object *object, size_t parts)); + +// Opaque reference to an outline. +// +// An outline is a group of outline objects that are evaluated simultaneously. The identity of +// an outline can be compared to determine whether any two objects belong to the same outline. +typedef struct _cxxrtl_outline *cxxrtl_outline; + +// Evaluate an outline. +// +// After evaluating an outline, the bits of every outline object contained in it are consistent +// with the current state of the netlist. In general, any further modification to the netlist +// causes every outline object to become stale, after which the corresponding outline must be +// re-evaluated, otherwise the bits read from that object are meaningless. +void cxxrtl_outline_eval(cxxrtl_outline outline); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/resources/netlist/resources/kernel/share/include/backends/cxxrtl/cxxrtl_vcd.h b/resources/netlist/resources/kernel/share/include/backends/cxxrtl/cxxrtl_vcd.h new file mode 100644 index 0000000..b76922b --- /dev/null +++ b/resources/netlist/resources/kernel/share/include/backends/cxxrtl/cxxrtl_vcd.h @@ -0,0 +1,275 @@ +/* + * yosys -- Yosys Open SYnthesis Suite + * + * Copyright (C) 2020 whitequark + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + */ + +#ifndef CXXRTL_VCD_H +#define CXXRTL_VCD_H + +#include + +namespace cxxrtl { + +class vcd_writer { + struct variable { + size_t ident; + size_t width; + chunk_t *curr; + size_t cache_offset; + debug_outline *outline; + bool *outline_warm; + }; + + std::vector current_scope; + std::map outlines; + std::vector variables; + std::vector cache; + std::map aliases; + bool streaming = false; + + void emit_timescale(unsigned number, const std::string &unit) { + assert(!streaming); + assert(number == 1 || number == 10 || number == 100); + assert(unit == "s" || unit == "ms" || unit == "us" || + unit == "ns" || unit == "ps" || unit == "fs"); + buffer += "$timescale " + std::to_string(number) + " " + unit + " $end\n"; + } + + void emit_scope(const std::vector &scope) { + assert(!streaming); + while (current_scope.size() > scope.size() || + (current_scope.size() > 0 && + current_scope[current_scope.size() - 1] != scope[current_scope.size() - 1])) { + buffer += "$upscope $end\n"; + current_scope.pop_back(); + } + while (current_scope.size() < scope.size()) { + buffer += "$scope module " + scope[current_scope.size()] + " $end\n"; + current_scope.push_back(scope[current_scope.size()]); + } + } + + void emit_ident(size_t ident) { + do { + buffer += '!' + ident % 94; // "base94" + ident /= 94; + } while (ident != 0); + } + + void emit_name(const std::string &name) { + for (char c : name) { + if (c == ':') { + // Due to a bug, GTKWave cannot parse a colon in the variable name, causing the VCD file + // to be unreadable. It cannot be escaped either, so replace it with the sideways colon. + buffer += ".."; + } else { + buffer += c; + } + } + } + + void emit_var(const variable &var, const std::string &type, const std::string &name, + size_t lsb_at, bool multipart) { + assert(!streaming); + buffer += "$var " + type + " " + std::to_string(var.width) + " "; + emit_ident(var.ident); + buffer += " "; + emit_name(name); + if (multipart || name.back() == ']' || lsb_at != 0) { + if (var.width == 1) + buffer += " [" + std::to_string(lsb_at) + "]"; + else + buffer += " [" + std::to_string(lsb_at + var.width - 1) + ":" + std::to_string(lsb_at) + "]"; + } + buffer += " $end\n"; + } + + void emit_enddefinitions() { + assert(!streaming); + buffer += "$enddefinitions $end\n"; + streaming = true; + } + + void emit_time(uint64_t timestamp) { + assert(streaming); + buffer += "#" + std::to_string(timestamp) + "\n"; + } + + void emit_scalar(const variable &var) { + assert(streaming); + assert(var.width == 1); + buffer += (*var.curr ? '1' : '0'); + emit_ident(var.ident); + buffer += '\n'; + } + + void emit_vector(const variable &var) { + assert(streaming); + buffer += 'b'; + for (size_t bit = var.width - 1; bit != (size_t)-1; bit--) { + bool bit_curr = var.curr[bit / (8 * sizeof(chunk_t))] & (1 << (bit % (8 * sizeof(chunk_t)))); + buffer += (bit_curr ? '1' : '0'); + } + buffer += ' '; + emit_ident(var.ident); + buffer += '\n'; + } + + void reset_outlines() { + for (auto &outline_it : outlines) + outline_it.second = /*warm=*/(outline_it.first == nullptr); + } + + variable ®ister_variable(size_t width, chunk_t *curr, bool constant = false, debug_outline *outline = nullptr) { + if (aliases.count(curr)) { + return variables[aliases[curr]]; + } else { + auto outline_it = outlines.emplace(outline, /*warm=*/(outline == nullptr)).first; + const size_t chunks = (width + (sizeof(chunk_t) * 8 - 1)) / (sizeof(chunk_t) * 8); + aliases[curr] = variables.size(); + if (constant) { + variables.emplace_back(variable { variables.size(), width, curr, (size_t)-1, outline_it->first, &outline_it->second }); + } else { + variables.emplace_back(variable { variables.size(), width, curr, cache.size(), outline_it->first, &outline_it->second }); + cache.insert(cache.end(), &curr[0], &curr[chunks]); + } + return variables.back(); + } + } + + bool test_variable(const variable &var) { + if (var.cache_offset == (size_t)-1) + return false; // constant + if (!*var.outline_warm) { + var.outline->eval(); + *var.outline_warm = true; + } + const size_t chunks = (var.width + (sizeof(chunk_t) * 8 - 1)) / (sizeof(chunk_t) * 8); + if (std::equal(&var.curr[0], &var.curr[chunks], &cache[var.cache_offset])) { + return false; + } else { + std::copy(&var.curr[0], &var.curr[chunks], &cache[var.cache_offset]); + return true; + } + } + + static std::vector split_hierarchy(const std::string &hier_name) { + std::vector hierarchy; + size_t prev = 0; + while (true) { + size_t curr = hier_name.find_first_of(' ', prev); + if (curr == std::string::npos) { + hierarchy.push_back(hier_name.substr(prev)); + break; + } else { + hierarchy.push_back(hier_name.substr(prev, curr - prev)); + prev = curr + 1; + } + } + return hierarchy; + } + +public: + std::string buffer; + + void timescale(unsigned number, const std::string &unit) { + emit_timescale(number, unit); + } + + void add(const std::string &hier_name, const debug_item &item, bool multipart = false) { + std::vector scope = split_hierarchy(hier_name); + std::string name = scope.back(); + scope.pop_back(); + + emit_scope(scope); + switch (item.type) { + // Not the best naming but oh well... + case debug_item::VALUE: + emit_var(register_variable(item.width, item.curr, /*constant=*/item.next == nullptr), + "wire", name, item.lsb_at, multipart); + break; + case debug_item::WIRE: + emit_var(register_variable(item.width, item.curr), + "reg", name, item.lsb_at, multipart); + break; + case debug_item::MEMORY: { + const size_t stride = (item.width + (sizeof(chunk_t) * 8 - 1)) / (sizeof(chunk_t) * 8); + for (size_t index = 0; index < item.depth; index++) { + chunk_t *nth_curr = &item.curr[stride * index]; + std::string nth_name = name + '[' + std::to_string(index) + ']'; + emit_var(register_variable(item.width, nth_curr), + "reg", nth_name, item.lsb_at, multipart); + } + break; + } + case debug_item::ALIAS: + // Like VALUE, but, even though `item.next == nullptr` always holds, the underlying value + // can actually change, and must be tracked. In most cases the VCD identifier will be + // unified with the aliased reg, but we should handle the case where only the alias is + // added to the VCD writer, too. + emit_var(register_variable(item.width, item.curr), + "wire", name, item.lsb_at, multipart); + break; + case debug_item::OUTLINE: + emit_var(register_variable(item.width, item.curr, /*constant=*/false, item.outline), + "wire", name, item.lsb_at, multipart); + break; + } + } + + template + void add(const debug_items &items, const Filter &filter) { + // `debug_items` is a map, so the items are already sorted in an order optimal for emitting + // VCD scope sections. + for (auto &it : items.table) + for (auto &part : it.second) + if (filter(it.first, part)) + add(it.first, part, it.second.size() > 1); + } + + void add(const debug_items &items) { + this->add(items, [](const std::string &, const debug_item &) { + return true; + }); + } + + void add_without_memories(const debug_items &items) { + this->add(items, [](const std::string &, const debug_item &item) { + return item.type != debug_item::MEMORY; + }); + } + + void sample(uint64_t timestamp) { + bool first_sample = !streaming; + if (first_sample) { + emit_scope({}); + emit_enddefinitions(); + } + reset_outlines(); + emit_time(timestamp); + for (auto var : variables) + if (test_variable(var) || first_sample) { + if (var.width == 1) + emit_scalar(var); + else + emit_vector(var); + } + } +}; + +} + +#endif diff --git a/resources/netlist/resources/kernel/share/include/backends/cxxrtl/cxxrtl_vcd_capi.cc b/resources/netlist/resources/kernel/share/include/backends/cxxrtl/cxxrtl_vcd_capi.cc new file mode 100644 index 0000000..52a9198 --- /dev/null +++ b/resources/netlist/resources/kernel/share/include/backends/cxxrtl/cxxrtl_vcd_capi.cc @@ -0,0 +1,83 @@ +/* + * yosys -- Yosys Open SYnthesis Suite + * + * Copyright (C) 2020 whitequark + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + */ + +// This file is a part of the CXXRTL C API. It should be used together with `cxxrtl_vcd_capi.h`. + +#include +#include + +extern const cxxrtl::debug_items &cxxrtl_debug_items_from_handle(cxxrtl_handle handle); + +struct _cxxrtl_vcd { + cxxrtl::vcd_writer writer; + bool flush = false; +}; + +cxxrtl_vcd cxxrtl_vcd_create() { + return new _cxxrtl_vcd; +} + +void cxxrtl_vcd_destroy(cxxrtl_vcd vcd) { + delete vcd; +} + +void cxxrtl_vcd_timescale(cxxrtl_vcd vcd, int number, const char *unit) { + vcd->writer.timescale(number, unit); +} + +void cxxrtl_vcd_add(cxxrtl_vcd vcd, const char *name, cxxrtl_object *object) { + // Note the copy. We don't know whether `object` came from a design (in which case it is + // an instance of `debug_item`), or from user code (in which case it is an instance of + // `cxxrtl_object`), so casting the pointer wouldn't be safe. + vcd->writer.add(name, cxxrtl::debug_item(*object)); +} + +void cxxrtl_vcd_add_from(cxxrtl_vcd vcd, cxxrtl_handle handle) { + vcd->writer.add(cxxrtl_debug_items_from_handle(handle)); +} + +void cxxrtl_vcd_add_from_if(cxxrtl_vcd vcd, cxxrtl_handle handle, void *data, + int (*filter)(void *data, const char *name, + const cxxrtl_object *object)) { + vcd->writer.add(cxxrtl_debug_items_from_handle(handle), + [=](const std::string &name, const cxxrtl::debug_item &item) { + return filter(data, name.c_str(), static_cast(&item)); + }); +} + +void cxxrtl_vcd_add_from_without_memories(cxxrtl_vcd vcd, cxxrtl_handle handle) { + vcd->writer.add_without_memories(cxxrtl_debug_items_from_handle(handle)); +} + +void cxxrtl_vcd_sample(cxxrtl_vcd vcd, uint64_t time) { + if (vcd->flush) { + vcd->writer.buffer.clear(); + vcd->flush = false; + } + vcd->writer.sample(time); +} + +void cxxrtl_vcd_read(cxxrtl_vcd vcd, const char **data, size_t *size) { + if (vcd->flush) { + vcd->writer.buffer.clear(); + vcd->flush = false; + } + *data = vcd->writer.buffer.c_str(); + *size = vcd->writer.buffer.size(); + vcd->flush = true; +} diff --git a/resources/netlist/resources/kernel/share/include/backends/cxxrtl/cxxrtl_vcd_capi.h b/resources/netlist/resources/kernel/share/include/backends/cxxrtl/cxxrtl_vcd_capi.h new file mode 100644 index 0000000..d55afe2 --- /dev/null +++ b/resources/netlist/resources/kernel/share/include/backends/cxxrtl/cxxrtl_vcd_capi.h @@ -0,0 +1,107 @@ +/* + * yosys -- Yosys Open SYnthesis Suite + * + * Copyright (C) 2020 whitequark + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + */ + +#ifndef CXXRTL_VCD_CAPI_H +#define CXXRTL_VCD_CAPI_H + +// This file is a part of the CXXRTL C API. It should be used together with `cxxrtl_vcd_capi.cc`. +// +// The CXXRTL C API for VCD writing makes it possible to insert virtual probes into designs and +// dump waveforms to Value Change Dump files. + +#include +#include + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +// Opaque reference to a VCD writer. +typedef struct _cxxrtl_vcd *cxxrtl_vcd; + +// Create a VCD writer. +cxxrtl_vcd cxxrtl_vcd_create(); + +// Release all resources used by a VCD writer. +void cxxrtl_vcd_destroy(cxxrtl_vcd vcd); + +// Set VCD timescale. +// +// The `number` must be 1, 10, or 100, and the `unit` must be one of `"s"`, `"ms"`, `"us"`, `"ns"`, +// `"ps"`, or `"fs"`. +// +// Timescale can only be set before the first call to `cxxrtl_vcd_sample`. +void cxxrtl_vcd_timescale(cxxrtl_vcd vcd, int number, const char *unit); + +// Schedule a specific CXXRTL object to be sampled. +// +// The `name` is a full hierarchical name as described for `cxxrtl_get`; it does not need to match +// the original name of `object`, if any. The `object` must outlive the VCD writer, but there are +// no other requirements; if desired, it can be provided by user code, rather than come from +// a design. +// +// Objects can only be scheduled before the first call to `cxxrtl_vcd_sample`. +void cxxrtl_vcd_add(cxxrtl_vcd vcd, const char *name, struct cxxrtl_object *object); + +// Schedule all CXXRTL objects in a simulation. +// +// The design `handle` must outlive the VCD writer. +// +// Objects can only be scheduled before the first call to `cxxrtl_vcd_sample`. +void cxxrtl_vcd_add_from(cxxrtl_vcd vcd, cxxrtl_handle handle); + +// Schedule CXXRTL objects in a simulation that match a given predicate. +// +// For every object in the simulation, `filter` is called with the provided `data`, the full +// hierarchical name of the object (see `cxxrtl_get` for details), and the object description. +// The object will be sampled if the predicate returns a non-zero value. +// +// Objects can only be scheduled before the first call to `cxxrtl_vcd_sample`. +void cxxrtl_vcd_add_from_if(cxxrtl_vcd vcd, cxxrtl_handle handle, void *data, + int (*filter)(void *data, const char *name, + const struct cxxrtl_object *object)); + +// Schedule all CXXRTL objects in a simulation except for memories. +// +// The design `handle` must outlive the VCD writer. +// +// Objects can only be scheduled before the first call to `cxxrtl_vcd_sample`. +void cxxrtl_vcd_add_from_without_memories(cxxrtl_vcd vcd, cxxrtl_handle handle); + +// Sample all scheduled objects. +// +// First, `time` is written to the internal buffer. Second, the values of every signal changed since +// the previous call to `cxxrtl_vcd_sample` (all values if this is the first call) are written to +// the internal buffer. The contents of the buffer can be retrieved with `cxxrtl_vcd_read`. +void cxxrtl_vcd_sample(cxxrtl_vcd vcd, uint64_t time); + +// Retrieve buffered VCD data. +// +// The pointer to the start of the next chunk of VCD data is assigned to `*data`, and the length +// of that chunk is assigned to `*size`. The pointer to the data is valid until the next call to +// `cxxrtl_vcd_sample` or `cxxrtl_vcd_read`. Once all of the buffered data has been retrieved, +// this function will always return zero sized chunks. +void cxxrtl_vcd_read(cxxrtl_vcd vcd, const char **data, size_t *size); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/resources/netlist/resources/kernel/share/include/backends/rtlil/rtlil_backend.h b/resources/netlist/resources/kernel/share/include/backends/rtlil/rtlil_backend.h new file mode 100644 index 0000000..3582972 --- /dev/null +++ b/resources/netlist/resources/kernel/share/include/backends/rtlil/rtlil_backend.h @@ -0,0 +1,51 @@ +/* + * yosys -- Yosys Open SYnthesis Suite + * + * Copyright (C) 2012 Claire Xenia Wolf + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * --- + * + * A very simple and straightforward backend for the RTLIL text + * representation. + * + */ + +#ifndef RTLIL_BACKEND_H +#define RTLIL_BACKEND_H + +#include "kernel/yosys.h" +#include + +YOSYS_NAMESPACE_BEGIN + +namespace RTLIL_BACKEND { + void dump_const(std::ostream &f, const RTLIL::Const &data, int width = -1, int offset = 0, bool autoint = true); + void dump_sigchunk(std::ostream &f, const RTLIL::SigChunk &chunk, bool autoint = true); + void dump_sigspec(std::ostream &f, const RTLIL::SigSpec &sig, bool autoint = true); + void dump_wire(std::ostream &f, std::string indent, const RTLIL::Wire *wire); + void dump_memory(std::ostream &f, std::string indent, const RTLIL::Memory *memory); + void dump_cell(std::ostream &f, std::string indent, const RTLIL::Cell *cell); + void dump_proc_case_body(std::ostream &f, std::string indent, const RTLIL::CaseRule *cs); + void dump_proc_switch(std::ostream &f, std::string indent, const RTLIL::SwitchRule *sw); + void dump_proc_sync(std::ostream &f, std::string indent, const RTLIL::SyncRule *sy); + void dump_proc(std::ostream &f, std::string indent, const RTLIL::Process *proc); + void dump_conn(std::ostream &f, std::string indent, const RTLIL::SigSpec &left, const RTLIL::SigSpec &right); + void dump_module(std::ostream &f, std::string indent, RTLIL::Module *module, RTLIL::Design *design, bool only_selected, bool flag_m = true, bool flag_n = false); + void dump_design(std::ostream &f, RTLIL::Design *design, bool only_selected, bool flag_m = true, bool flag_n = false); +} + +YOSYS_NAMESPACE_END + +#endif diff --git a/resources/netlist/resources/kernel/share/include/frontends/ast/ast.h b/resources/netlist/resources/kernel/share/include/frontends/ast/ast.h new file mode 100644 index 0000000..80497c1 --- /dev/null +++ b/resources/netlist/resources/kernel/share/include/frontends/ast/ast.h @@ -0,0 +1,425 @@ +/* -*- c++ -*- + * yosys -- Yosys Open SYnthesis Suite + * + * Copyright (C) 2012 Claire Xenia Wolf + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * --- + * + * This is the AST frontend library. + * + * The AST frontend library is not a frontend on it's own but provides a + * generic abstract syntax tree (AST) abstraction for HDL code and can be + * used by HDL frontends. See "ast.h" for an overview of the API and the + * Verilog frontend for an usage example. + * + */ + +#ifndef AST_H +#define AST_H + +#include "kernel/rtlil.h" +#include +#include + +YOSYS_NAMESPACE_BEGIN + +namespace AST +{ + // all node types, type2str() must be extended + // whenever a new node type is added here + enum AstNodeType + { + AST_NONE, + AST_DESIGN, + AST_MODULE, + AST_TASK, + AST_FUNCTION, + AST_DPI_FUNCTION, + + AST_WIRE, + AST_MEMORY, + AST_AUTOWIRE, + AST_PARAMETER, + AST_LOCALPARAM, + AST_DEFPARAM, + AST_PARASET, + AST_ARGUMENT, + AST_RANGE, + AST_MULTIRANGE, + AST_CONSTANT, + AST_REALVALUE, + AST_CELLTYPE, + AST_IDENTIFIER, + AST_PREFIX, + AST_ASSERT, + AST_ASSUME, + AST_LIVE, + AST_FAIR, + AST_COVER, + AST_ENUM, + AST_ENUM_ITEM, + + AST_FCALL, + AST_TO_BITS, + AST_TO_SIGNED, + AST_TO_UNSIGNED, + AST_SELFSZ, + AST_CAST_SIZE, + AST_CONCAT, + AST_REPLICATE, + AST_BIT_NOT, + AST_BIT_AND, + AST_BIT_OR, + AST_BIT_XOR, + AST_BIT_XNOR, + AST_REDUCE_AND, + AST_REDUCE_OR, + AST_REDUCE_XOR, + AST_REDUCE_XNOR, + AST_REDUCE_BOOL, + AST_SHIFT_LEFT, + AST_SHIFT_RIGHT, + AST_SHIFT_SLEFT, + AST_SHIFT_SRIGHT, + AST_SHIFTX, + AST_SHIFT, + AST_LT, + AST_LE, + AST_EQ, + AST_NE, + AST_EQX, + AST_NEX, + AST_GE, + AST_GT, + AST_ADD, + AST_SUB, + AST_MUL, + AST_DIV, + AST_MOD, + AST_POW, + AST_POS, + AST_NEG, + AST_LOGIC_AND, + AST_LOGIC_OR, + AST_LOGIC_NOT, + AST_TERNARY, + AST_MEMRD, + AST_MEMWR, + AST_MEMINIT, + + AST_TCALL, + AST_ASSIGN, + AST_CELL, + AST_PRIMITIVE, + AST_CELLARRAY, + AST_ALWAYS, + AST_INITIAL, + AST_BLOCK, + AST_ASSIGN_EQ, + AST_ASSIGN_LE, + AST_CASE, + AST_COND, + AST_CONDX, + AST_CONDZ, + AST_DEFAULT, + AST_FOR, + AST_WHILE, + AST_REPEAT, + + AST_GENVAR, + AST_GENFOR, + AST_GENIF, + AST_GENCASE, + AST_GENBLOCK, + AST_TECALL, + + AST_POSEDGE, + AST_NEGEDGE, + AST_EDGE, + + AST_INTERFACE, + AST_INTERFACEPORT, + AST_INTERFACEPORTTYPE, + AST_MODPORT, + AST_MODPORTMEMBER, + AST_PACKAGE, + + AST_WIRETYPE, + AST_TYPEDEF, + AST_STRUCT, + AST_UNION, + AST_STRUCT_ITEM, + AST_BIND + }; + + struct AstSrcLocType { + unsigned int first_line, last_line; + unsigned int first_column, last_column; + AstSrcLocType() : first_line(0), last_line(0), first_column(0), last_column(0) {} + AstSrcLocType(int _first_line, int _first_column, int _last_line, int _last_column) : first_line(_first_line), last_line(_last_line), first_column(_first_column), last_column(_last_column) {} + }; + + // convert an node type to a string (e.g. for debug output) + std::string type2str(AstNodeType type); + + // The AST is built using instances of this struct + struct AstNode + { + // for dict<> and pool<> + unsigned int hashidx_; + unsigned int hash() const { return hashidx_; } + + // this nodes type + AstNodeType type; + + // the list of child nodes for this node + std::vector children; + + // the list of attributes assigned to this node + std::map attributes; + bool get_bool_attribute(RTLIL::IdString id); + + // node content - most of it is unused in most node types + std::string str; + std::vector bits; + bool is_input, is_output, is_reg, is_logic, is_signed, is_string, is_wand, is_wor, range_valid, range_swapped, was_checked, is_unsized, is_custom_type; + int port_id, range_left, range_right; + uint32_t integer; + double realvalue; + // set for IDs typed to an enumeration, not used + bool is_enum; + + // if this is a multirange memory then this vector contains offset and length of each dimension + std::vector multirange_dimensions; + std::vector multirange_swapped; // true if range is swapped, not used for structs + + // this is set by simplify and used during RTLIL generation + AstNode *id2ast; + + // this is used by simplify to detect if basic analysis has been performed already on the node + bool basic_prep; + + // this is used for ID references in RHS expressions that should use the "new" value for non-blocking assignments + bool lookahead; + + // this is the original sourcecode location that resulted in this AST node + // it is automatically set by the constructor using AST::current_filename and + // the AST::get_line_num() callback function. + std::string filename; + AstSrcLocType location; + + // creating and deleting nodes + AstNode(AstNodeType type = AST_NONE, AstNode *child1 = nullptr, AstNode *child2 = nullptr, AstNode *child3 = nullptr, AstNode *child4 = nullptr); + AstNode *clone() const; + void cloneInto(AstNode *other) const; + void delete_children(); + ~AstNode(); + + enum mem2reg_flags + { + /* status flags */ + MEM2REG_FL_ALL = 0x00000001, + MEM2REG_FL_ASYNC = 0x00000002, + MEM2REG_FL_INIT = 0x00000004, + + /* candidate flags */ + MEM2REG_FL_FORCED = 0x00000100, + MEM2REG_FL_SET_INIT = 0x00000200, + MEM2REG_FL_SET_ELSE = 0x00000400, + MEM2REG_FL_SET_ASYNC = 0x00000800, + MEM2REG_FL_EQ2 = 0x00001000, + MEM2REG_FL_CMPLX_LHS = 0x00002000, + MEM2REG_FL_CONST_LHS = 0x00004000, + MEM2REG_FL_VAR_LHS = 0x00008000, + + /* proc flags */ + MEM2REG_FL_EQ1 = 0x01000000, + }; + + // simplify() creates a simpler AST by unrolling for-loops, expanding generate blocks, etc. + // it also sets the id2ast pointers so that identifier lookups are fast in genRTLIL() + bool simplify(bool const_fold, bool at_zero, bool in_lvalue, int stage, int width_hint, bool sign_hint, bool in_param); + void replace_result_wire_name_in_function(const std::string &from, const std::string &to); + AstNode *readmem(bool is_readmemh, std::string mem_filename, AstNode *memory, int start_addr, int finish_addr, bool unconditional_init); + void expand_genblock(const std::string &prefix); + void label_genblks(std::set& existing, int &counter); + void mem2reg_as_needed_pass1(dict> &mem2reg_places, + dict &mem2reg_flags, dict &proc_flags, uint32_t &status_flags); + bool mem2reg_as_needed_pass2(pool &mem2reg_set, AstNode *mod, AstNode *block, AstNode *&async_block); + bool mem2reg_check(pool &mem2reg_set); + void mem2reg_remove(pool &mem2reg_set, vector &delnodes); + void meminfo(int &mem_width, int &mem_size, int &addr_bits); + bool detect_latch(const std::string &var); + const RTLIL::Module* lookup_cell_module(); + + // additional functionality for evaluating constant functions + struct varinfo_t { + RTLIL::Const val; + int offset; + bool range_swapped; + bool is_signed; + AstNode *arg = nullptr; + bool explicitly_sized; + }; + bool has_const_only_constructs(); + bool replace_variables(std::map &variables, AstNode *fcall, bool must_succeed); + AstNode *eval_const_function(AstNode *fcall, bool must_succeed); + bool is_simple_const_expr(); + std::string process_format_str(const std::string &sformat, int next_arg, int stage, int width_hint, bool sign_hint); + + bool is_recursive_function() const; + std::pair get_tern_choice(); + + // create a human-readable text representation of the AST (for debugging) + void dumpAst(FILE *f, std::string indent) const; + void dumpVlog(FILE *f, std::string indent) const; + + // Generate RTLIL for a bind construct + std::vector genBindings() const; + + // used by genRTLIL() for detecting expression width and sign + void detectSignWidthWorker(int &width_hint, bool &sign_hint, bool *found_real = NULL); + void detectSignWidth(int &width_hint, bool &sign_hint, bool *found_real = NULL); + + // create RTLIL code for this AST node + // for expressions the resulting signal vector is returned + // all generated cell instances, etc. are written to the RTLIL::Module pointed to by AST_INTERNAL::current_module + RTLIL::SigSpec genRTLIL(int width_hint = -1, bool sign_hint = false); + RTLIL::SigSpec genWidthRTLIL(int width, bool sgn, const dict *new_subst_ptr = NULL); + + // compare AST nodes + bool operator==(const AstNode &other) const; + bool operator!=(const AstNode &other) const; + bool contains(const AstNode *other) const; + + // helper functions for creating AST nodes for constants + static AstNode *mkconst_int(uint32_t v, bool is_signed, int width = 32); + static AstNode *mkconst_bits(const std::vector &v, bool is_signed, bool is_unsized); + static AstNode *mkconst_bits(const std::vector &v, bool is_signed); + static AstNode *mkconst_str(const std::vector &v); + static AstNode *mkconst_str(const std::string &str); + + // helper function for creating sign-extended const objects + RTLIL::Const bitsAsConst(int width, bool is_signed); + RTLIL::Const bitsAsConst(int width = -1); + RTLIL::Const bitsAsUnsizedConst(int width); + RTLIL::Const asAttrConst() const; + RTLIL::Const asParaConst() const; + uint64_t asInt(bool is_signed); + bool bits_only_01() const; + bool asBool() const; + + // helper functions for real valued const eval + int isConst() const; // return '1' for AST_CONSTANT and '2' for AST_REALVALUE + double asReal(bool is_signed); + RTLIL::Const realAsConst(int width); + + // helpers for enum + void allocateDefaultEnumValues(); + void annotateTypedEnums(AstNode *template_node); + + // helpers for locations + std::string loc_string() const; + + // Helper for looking up identifiers which are prefixed with the current module name + std::string try_pop_module_prefix() const; + }; + + // process an AST tree (ast must point to an AST_DESIGN node) and generate RTLIL code + void process(RTLIL::Design *design, AstNode *ast, bool dump_ast1, bool dump_ast2, bool no_dump_ptr, bool dump_vlog1, bool dump_vlog2, bool dump_rtlil, bool nolatches, bool nomeminit, + bool nomem2reg, bool mem2reg, bool noblackbox, bool lib, bool nowb, bool noopt, bool icells, bool pwires, bool nooverwrite, bool overwrite, bool defer, bool autowire); + + // parametric modules are supported directly by the AST library + // therefore we need our own derivate of RTLIL::Module with overloaded virtual functions + struct AstModule : RTLIL::Module { + AstNode *ast; + bool nolatches, nomeminit, nomem2reg, mem2reg, noblackbox, lib, nowb, noopt, icells, pwires, autowire; + ~AstModule() override; + RTLIL::IdString derive(RTLIL::Design *design, const dict ¶meters, bool mayfail) override; + RTLIL::IdString derive(RTLIL::Design *design, const dict ¶meters, const dict &interfaces, const dict &modports, bool mayfail) override; + std::string derive_common(RTLIL::Design *design, const dict ¶meters, AstNode **new_ast_out, bool quiet = false); + void expand_interfaces(RTLIL::Design *design, const dict &local_interfaces) override; + bool reprocess_if_necessary(RTLIL::Design *design) override; + RTLIL::Module *clone() const override; + void loadconfig() const; + }; + + // this must be set by the language frontend before parsing the sources + // the AstNode constructor then uses current_filename and get_line_num() + // to initialize the filename and linenum properties of new nodes + extern std::string current_filename; + extern void (*set_line_num)(int); + extern int (*get_line_num)(); + + // set set_line_num and get_line_num to internal dummy functions (done by simplify() and AstModule::derive + // to control the filename and linenum properties of new nodes not generated by a frontend parser) + void use_internal_line_num(); + + // call a DPI function + AstNode *dpi_call(const std::string &rtype, const std::string &fname, const std::vector &argtypes, const std::vector &args); + + // Helper functions related to handling SystemVerilog interfaces + std::pair split_modport_from_type(std::string name_type); + AstNode * find_modport(AstNode *intf, std::string name); + void explode_interface_port(AstNode *module_ast, RTLIL::Module * intfmodule, std::string intfname, AstNode *modport); + + // Helper for setting the src attribute. + void set_src_attr(RTLIL::AttrObject *obj, const AstNode *ast); + + // struct helper exposed from simplify for genrtlil + AstNode *make_struct_member_range(AstNode *node, AstNode *member_node); + + // generate standard $paramod... derived module name; parameters should be + // in the order they are declared in the instantiated module + std::string derived_module_name(std::string stripped_name, const std::vector> ¶meters); + + // used to provide simplify() access to the current design for looking up + // modules, ports, wires, etc. + void set_simplify_design_context(const RTLIL::Design *design); +} + +namespace AST_INTERNAL +{ + // internal state variables + extern bool flag_dump_ast1, flag_dump_ast2, flag_no_dump_ptr, flag_dump_rtlil, flag_nolatches, flag_nomeminit; + extern bool flag_nomem2reg, flag_mem2reg, flag_lib, flag_noopt, flag_icells, flag_pwires, flag_autowire; + extern AST::AstNode *current_ast, *current_ast_mod; + extern std::map current_scope; + extern const dict *genRTLIL_subst_ptr; + extern RTLIL::SigSpec ignoreThisSignalsInInitial; + extern AST::AstNode *current_always, *current_top_block, *current_block, *current_block_child; + extern RTLIL::Module *current_module; + extern bool current_always_clocked; + extern dict current_memwr_count; + extern dict> current_memwr_visible; + struct LookaheadRewriter; + struct ProcessGenerator; + + // Create and add a new AstModule from new_ast, then use it to replace + // old_module in design, renaming old_module to move it out of the way. + // Return the new module. + // + // If original_ast is not null, it will be used as the AST node for the + // new module. Otherwise, new_ast will be used. + RTLIL::Module * + process_and_replace_module(RTLIL::Design *design, + RTLIL::Module *old_module, + AST::AstNode *new_ast, + AST::AstNode *original_ast = nullptr); +} + +YOSYS_NAMESPACE_END + +#endif diff --git a/resources/netlist/resources/kernel/share/include/frontends/ast/ast_binding.h b/resources/netlist/resources/kernel/share/include/frontends/ast/ast_binding.h new file mode 100644 index 0000000..641497d --- /dev/null +++ b/resources/netlist/resources/kernel/share/include/frontends/ast/ast_binding.h @@ -0,0 +1,58 @@ +/* -*- c++ -*- + * yosys -- Yosys Open SYnthesis Suite + * + * Copyright (C) 2012 Claire Xenia Wolf + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * --- + * + * This header declares the AST::Binding class + * + * This is used to support the bind directive and is to RTLIL::Binding as + * AST::AstModule is to RTLIL::Module, holding a syntax-level representation of + * cells until we get to a stage where they make sense. In the case of a bind + * directive, this is when we elaborate the design in the hierarchy pass. + * + */ + +#ifndef AST_BINDING_H +#define AST_BINDING_H + +#include "kernel/rtlil.h" +#include "kernel/binding.h" + +#include + +YOSYS_NAMESPACE_BEGIN + +namespace AST +{ + class Binding : public RTLIL::Binding + { + public: + Binding(RTLIL::IdString target_type, + RTLIL::IdString target_name, + const AstNode &cell); + + std::string describe() const override; + + private: + // The syntax-level representation of the cell to be bound. + std::unique_ptr ast_node; + }; +} + +YOSYS_NAMESPACE_END + +#endif diff --git a/resources/netlist/resources/kernel/share/include/frontends/blif/blifparse.h b/resources/netlist/resources/kernel/share/include/frontends/blif/blifparse.h new file mode 100644 index 0000000..d7a3c96 --- /dev/null +++ b/resources/netlist/resources/kernel/share/include/frontends/blif/blifparse.h @@ -0,0 +1,32 @@ +/* + * yosys -- Yosys Open SYnthesis Suite + * + * Copyright (C) 2012 Claire Xenia Wolf + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + */ + +#ifndef ABC_BLIFPARSE +#define ABC_BLIFPARSE + +#include "kernel/yosys.h" + +YOSYS_NAMESPACE_BEGIN + +extern void parse_blif(RTLIL::Design *design, std::istream &f, IdString dff_name, + bool run_clean = false, bool sop_mode = false, bool wideports = false); + +YOSYS_NAMESPACE_END + +#endif diff --git a/resources/netlist/resources/kernel/share/include/kernel/binding.h b/resources/netlist/resources/kernel/share/include/kernel/binding.h new file mode 100644 index 0000000..3b64e76 --- /dev/null +++ b/resources/netlist/resources/kernel/share/include/kernel/binding.h @@ -0,0 +1,60 @@ +/* -*- c++ -*- + * yosys -- Yosys Open SYnthesis Suite + * + * Copyright (C) 2012 Claire Xenia Wolf + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + */ + +#ifndef BINDING_H +#define BINDING_H + +#include "kernel/rtlil.h" + +YOSYS_NAMESPACE_BEGIN + +struct RTLIL::Binding +{ + // Represents a bind construct. + // + // The target of the binding is represented by target_type and + // target_name (see comments above the fields). + + Binding(RTLIL::IdString target_type, + RTLIL::IdString target_name); + + virtual ~Binding() {} + + // Return a string describing the binding + virtual std::string describe() const = 0; + +protected: + // May be empty. If not, it's the name of the module or interface to + // bind to. + RTLIL::IdString target_type; + + // If target_type is nonempty (the usual case), this is a hierarchical + // reference to the bind target. If target_type is empty, we have to + // wait until the hierarchy pass to figure out whether this was the name + // of a module/interface type or an instance. + RTLIL::IdString target_name; + + // An attribute name which contains an ID that's unique across binding + // instances (used to ensure we don't apply a binding twice to a module) + RTLIL::IdString attr_name; +}; + +YOSYS_NAMESPACE_END + +#endif diff --git a/resources/netlist/resources/kernel/share/include/kernel/celledges.h b/resources/netlist/resources/kernel/share/include/kernel/celledges.h new file mode 100644 index 0000000..d5e374f --- /dev/null +++ b/resources/netlist/resources/kernel/share/include/kernel/celledges.h @@ -0,0 +1,63 @@ +/* -*- c++ -*- + * yosys -- Yosys Open SYnthesis Suite + * + * Copyright (C) 2012 Claire Xenia Wolf + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + */ + +#ifndef CELLEDGES_H +#define CELLEDGES_H + +#include "kernel/yosys.h" +#include "kernel/sigtools.h" + +YOSYS_NAMESPACE_BEGIN + +struct AbstractCellEdgesDatabase +{ + virtual ~AbstractCellEdgesDatabase() { } + virtual void add_edge(RTLIL::Cell *cell, RTLIL::IdString from_port, int from_bit, RTLIL::IdString to_port, int to_bit, int delay) = 0; + bool add_edges_from_cell(RTLIL::Cell *cell); +}; + +struct FwdCellEdgesDatabase : AbstractCellEdgesDatabase +{ + SigMap &sigmap; + dict> db; + FwdCellEdgesDatabase(SigMap &sigmap) : sigmap(sigmap) { } + + void add_edge(RTLIL::Cell *cell, RTLIL::IdString from_port, int from_bit, RTLIL::IdString to_port, int to_bit, int) override { + SigBit from_sigbit = sigmap(cell->getPort(from_port)[from_bit]); + SigBit to_sigbit = sigmap(cell->getPort(to_port)[to_bit]); + db[from_sigbit].insert(to_sigbit); + } +}; + +struct RevCellEdgesDatabase : AbstractCellEdgesDatabase +{ + SigMap &sigmap; + dict> db; + RevCellEdgesDatabase(SigMap &sigmap) : sigmap(sigmap) { } + + void add_edge(RTLIL::Cell *cell, RTLIL::IdString from_port, int from_bit, RTLIL::IdString to_port, int to_bit, int) override { + SigBit from_sigbit = sigmap(cell->getPort(from_port)[from_bit]); + SigBit to_sigbit = sigmap(cell->getPort(to_port)[to_bit]); + db[to_sigbit].insert(from_sigbit); + } +}; + +YOSYS_NAMESPACE_END + +#endif diff --git a/resources/netlist/resources/kernel/share/include/kernel/celltypes.h b/resources/netlist/resources/kernel/share/include/kernel/celltypes.h new file mode 100644 index 0000000..d62ba15 --- /dev/null +++ b/resources/netlist/resources/kernel/share/include/kernel/celltypes.h @@ -0,0 +1,527 @@ +/* + * yosys -- Yosys Open SYnthesis Suite + * + * Copyright (C) 2012 Claire Xenia Wolf + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + */ + +#ifndef CELLTYPES_H +#define CELLTYPES_H + +#include "kernel/yosys.h" + +YOSYS_NAMESPACE_BEGIN + +struct CellType +{ + RTLIL::IdString type; + pool inputs, outputs; + bool is_evaluable; +}; + +struct CellTypes +{ + dict cell_types; + + CellTypes() + { + } + + CellTypes(RTLIL::Design *design) + { + setup(design); + } + + void setup(RTLIL::Design *design = NULL) + { + if (design) + setup_design(design); + + setup_internals(); + setup_internals_mem(); + setup_internals_anyinit(); + setup_stdcells(); + setup_stdcells_mem(); + } + + void setup_type(RTLIL::IdString type, const pool &inputs, const pool &outputs, bool is_evaluable = false) + { + CellType ct = {type, inputs, outputs, is_evaluable}; + cell_types[ct.type] = ct; + } + + void setup_module(RTLIL::Module *module) + { + pool inputs, outputs; + for (RTLIL::IdString wire_name : module->ports) { + RTLIL::Wire *wire = module->wire(wire_name); + if (wire->port_input) + inputs.insert(wire->name); + if (wire->port_output) + outputs.insert(wire->name); + } + setup_type(module->name, inputs, outputs); + } + + void setup_design(RTLIL::Design *design) + { + for (auto module : design->modules()) + setup_module(module); + } + + void setup_internals() + { + setup_internals_eval(); + + setup_type(ID($tribuf), {ID::A, ID::EN}, {ID::Y}, true); + + setup_type(ID($assert), {ID::A, ID::EN}, pool(), true); + setup_type(ID($assume), {ID::A, ID::EN}, pool(), true); + setup_type(ID($live), {ID::A, ID::EN}, pool(), true); + setup_type(ID($fair), {ID::A, ID::EN}, pool(), true); + setup_type(ID($cover), {ID::A, ID::EN}, pool(), true); + setup_type(ID($initstate), pool(), {ID::Y}, true); + setup_type(ID($anyconst), pool(), {ID::Y}, true); + setup_type(ID($anyseq), pool(), {ID::Y}, true); + setup_type(ID($allconst), pool(), {ID::Y}, true); + setup_type(ID($allseq), pool(), {ID::Y}, true); + setup_type(ID($equiv), {ID::A, ID::B}, {ID::Y}, true); + setup_type(ID($specify2), {ID::EN, ID::SRC, ID::DST}, pool(), true); + setup_type(ID($specify3), {ID::EN, ID::SRC, ID::DST, ID::DAT}, pool(), true); + setup_type(ID($specrule), {ID::EN_SRC, ID::EN_DST, ID::SRC, ID::DST}, pool(), true); + } + + void setup_internals_eval() + { + std::vector unary_ops = { + ID($not), ID($pos), ID($neg), + ID($reduce_and), ID($reduce_or), ID($reduce_xor), ID($reduce_xnor), ID($reduce_bool), + ID($logic_not), ID($slice), ID($lut), ID($sop) + }; + + std::vector binary_ops = { + ID($and), ID($or), ID($xor), ID($xnor), + ID($shl), ID($shr), ID($sshl), ID($sshr), ID($shift), ID($shiftx), + ID($lt), ID($le), ID($eq), ID($ne), ID($eqx), ID($nex), ID($ge), ID($gt), + ID($add), ID($sub), ID($mul), ID($div), ID($mod), ID($divfloor), ID($modfloor), ID($pow), + ID($logic_and), ID($logic_or), ID($concat), ID($macc) + }; + + for (auto type : unary_ops) + setup_type(type, {ID::A}, {ID::Y}, true); + + for (auto type : binary_ops) + setup_type(type, {ID::A, ID::B}, {ID::Y}, true); + + for (auto type : std::vector({ID($mux), ID($pmux)})) + setup_type(type, {ID::A, ID::B, ID::S}, {ID::Y}, true); + + for (auto type : std::vector({ID($bmux), ID($demux)})) + setup_type(type, {ID::A, ID::S}, {ID::Y}, true); + + setup_type(ID($lcu), {ID::P, ID::G, ID::CI}, {ID::CO}, true); + setup_type(ID($alu), {ID::A, ID::B, ID::CI, ID::BI}, {ID::X, ID::Y, ID::CO}, true); + setup_type(ID($fa), {ID::A, ID::B, ID::C}, {ID::X, ID::Y}, true); + } + + void setup_internals_ff() + { + setup_type(ID($sr), {ID::SET, ID::CLR}, {ID::Q}); + setup_type(ID($ff), {ID::D}, {ID::Q}); + setup_type(ID($dff), {ID::CLK, ID::D}, {ID::Q}); + setup_type(ID($dffe), {ID::CLK, ID::EN, ID::D}, {ID::Q}); + setup_type(ID($dffsr), {ID::CLK, ID::SET, ID::CLR, ID::D}, {ID::Q}); + setup_type(ID($dffsre), {ID::CLK, ID::SET, ID::CLR, ID::D, ID::EN}, {ID::Q}); + setup_type(ID($adff), {ID::CLK, ID::ARST, ID::D}, {ID::Q}); + setup_type(ID($adffe), {ID::CLK, ID::ARST, ID::D, ID::EN}, {ID::Q}); + setup_type(ID($aldff), {ID::CLK, ID::ALOAD, ID::AD, ID::D}, {ID::Q}); + setup_type(ID($aldffe), {ID::CLK, ID::ALOAD, ID::AD, ID::D, ID::EN}, {ID::Q}); + setup_type(ID($sdff), {ID::CLK, ID::SRST, ID::D}, {ID::Q}); + setup_type(ID($sdffe), {ID::CLK, ID::SRST, ID::D, ID::EN}, {ID::Q}); + setup_type(ID($sdffce), {ID::CLK, ID::SRST, ID::D, ID::EN}, {ID::Q}); + setup_type(ID($dlatch), {ID::EN, ID::D}, {ID::Q}); + setup_type(ID($adlatch), {ID::EN, ID::D, ID::ARST}, {ID::Q}); + setup_type(ID($dlatchsr), {ID::EN, ID::SET, ID::CLR, ID::D}, {ID::Q}); + } + + void setup_internals_anyinit() + { + setup_type(ID($anyinit), {ID::D}, {ID::Q}); + } + + void setup_internals_mem() + { + setup_internals_ff(); + + setup_type(ID($memrd), {ID::CLK, ID::EN, ID::ADDR}, {ID::DATA}); + setup_type(ID($memrd_v2), {ID::CLK, ID::EN, ID::ARST, ID::SRST, ID::ADDR}, {ID::DATA}); + setup_type(ID($memwr), {ID::CLK, ID::EN, ID::ADDR, ID::DATA}, pool()); + setup_type(ID($memwr_v2), {ID::CLK, ID::EN, ID::ADDR, ID::DATA}, pool()); + setup_type(ID($meminit), {ID::ADDR, ID::DATA}, pool()); + setup_type(ID($meminit_v2), {ID::ADDR, ID::DATA, ID::EN}, pool()); + setup_type(ID($mem), {ID::RD_CLK, ID::RD_EN, ID::RD_ADDR, ID::WR_CLK, ID::WR_EN, ID::WR_ADDR, ID::WR_DATA}, {ID::RD_DATA}); + setup_type(ID($mem_v2), {ID::RD_CLK, ID::RD_EN, ID::RD_ARST, ID::RD_SRST, ID::RD_ADDR, ID::WR_CLK, ID::WR_EN, ID::WR_ADDR, ID::WR_DATA}, {ID::RD_DATA}); + + setup_type(ID($fsm), {ID::CLK, ID::ARST, ID::CTRL_IN}, {ID::CTRL_OUT}); + } + + void setup_stdcells() + { + setup_stdcells_eval(); + + setup_type(ID($_TBUF_), {ID::A, ID::E}, {ID::Y}, true); + } + + void setup_stdcells_eval() + { + setup_type(ID($_BUF_), {ID::A}, {ID::Y}, true); + setup_type(ID($_NOT_), {ID::A}, {ID::Y}, true); + setup_type(ID($_AND_), {ID::A, ID::B}, {ID::Y}, true); + setup_type(ID($_NAND_), {ID::A, ID::B}, {ID::Y}, true); + setup_type(ID($_OR_), {ID::A, ID::B}, {ID::Y}, true); + setup_type(ID($_NOR_), {ID::A, ID::B}, {ID::Y}, true); + setup_type(ID($_XOR_), {ID::A, ID::B}, {ID::Y}, true); + setup_type(ID($_XNOR_), {ID::A, ID::B}, {ID::Y}, true); + setup_type(ID($_ANDNOT_), {ID::A, ID::B}, {ID::Y}, true); + setup_type(ID($_ORNOT_), {ID::A, ID::B}, {ID::Y}, true); + setup_type(ID($_MUX_), {ID::A, ID::B, ID::S}, {ID::Y}, true); + setup_type(ID($_NMUX_), {ID::A, ID::B, ID::S}, {ID::Y}, true); + setup_type(ID($_MUX4_), {ID::A, ID::B, ID::C, ID::D, ID::S, ID::T}, {ID::Y}, true); + setup_type(ID($_MUX8_), {ID::A, ID::B, ID::C, ID::D, ID::E, ID::F, ID::G, ID::H, ID::S, ID::T, ID::U}, {ID::Y}, true); + setup_type(ID($_MUX16_), {ID::A, ID::B, ID::C, ID::D, ID::E, ID::F, ID::G, ID::H, ID::I, ID::J, ID::K, ID::L, ID::M, ID::N, ID::O, ID::P, ID::S, ID::T, ID::U, ID::V}, {ID::Y}, true); + setup_type(ID($_AOI3_), {ID::A, ID::B, ID::C}, {ID::Y}, true); + setup_type(ID($_OAI3_), {ID::A, ID::B, ID::C}, {ID::Y}, true); + setup_type(ID($_AOI4_), {ID::A, ID::B, ID::C, ID::D}, {ID::Y}, true); + setup_type(ID($_OAI4_), {ID::A, ID::B, ID::C, ID::D}, {ID::Y}, true); + } + + void setup_stdcells_mem() + { + std::vector list_np = {'N', 'P'}, list_01 = {'0', '1'}; + + for (auto c1 : list_np) + for (auto c2 : list_np) + setup_type(stringf("$_SR_%c%c_", c1, c2), {ID::S, ID::R}, {ID::Q}); + + setup_type(ID($_FF_), {ID::D}, {ID::Q}); + + for (auto c1 : list_np) + setup_type(stringf("$_DFF_%c_", c1), {ID::C, ID::D}, {ID::Q}); + + for (auto c1 : list_np) + for (auto c2 : list_np) + setup_type(stringf("$_DFFE_%c%c_", c1, c2), {ID::C, ID::D, ID::E}, {ID::Q}); + + for (auto c1 : list_np) + for (auto c2 : list_np) + for (auto c3 : list_01) + setup_type(stringf("$_DFF_%c%c%c_", c1, c2, c3), {ID::C, ID::R, ID::D}, {ID::Q}); + + for (auto c1 : list_np) + for (auto c2 : list_np) + for (auto c3 : list_01) + for (auto c4 : list_np) + setup_type(stringf("$_DFFE_%c%c%c%c_", c1, c2, c3, c4), {ID::C, ID::R, ID::D, ID::E}, {ID::Q}); + + for (auto c1 : list_np) + for (auto c2 : list_np) + setup_type(stringf("$_ALDFF_%c%c_", c1, c2), {ID::C, ID::L, ID::AD, ID::D}, {ID::Q}); + + for (auto c1 : list_np) + for (auto c2 : list_np) + for (auto c3 : list_np) + setup_type(stringf("$_ALDFFE_%c%c%c_", c1, c2, c3), {ID::C, ID::L, ID::AD, ID::D, ID::E}, {ID::Q}); + + for (auto c1 : list_np) + for (auto c2 : list_np) + for (auto c3 : list_np) + setup_type(stringf("$_DFFSR_%c%c%c_", c1, c2, c3), {ID::C, ID::S, ID::R, ID::D}, {ID::Q}); + + for (auto c1 : list_np) + for (auto c2 : list_np) + for (auto c3 : list_np) + for (auto c4 : list_np) + setup_type(stringf("$_DFFSRE_%c%c%c%c_", c1, c2, c3, c4), {ID::C, ID::S, ID::R, ID::D, ID::E}, {ID::Q}); + + for (auto c1 : list_np) + for (auto c2 : list_np) + for (auto c3 : list_01) + setup_type(stringf("$_SDFF_%c%c%c_", c1, c2, c3), {ID::C, ID::R, ID::D}, {ID::Q}); + + for (auto c1 : list_np) + for (auto c2 : list_np) + for (auto c3 : list_01) + for (auto c4 : list_np) + setup_type(stringf("$_SDFFE_%c%c%c%c_", c1, c2, c3, c4), {ID::C, ID::R, ID::D, ID::E}, {ID::Q}); + + for (auto c1 : list_np) + for (auto c2 : list_np) + for (auto c3 : list_01) + for (auto c4 : list_np) + setup_type(stringf("$_SDFFCE_%c%c%c%c_", c1, c2, c3, c4), {ID::C, ID::R, ID::D, ID::E}, {ID::Q}); + + for (auto c1 : list_np) + setup_type(stringf("$_DLATCH_%c_", c1), {ID::E, ID::D}, {ID::Q}); + + for (auto c1 : list_np) + for (auto c2 : list_np) + for (auto c3 : list_01) + setup_type(stringf("$_DLATCH_%c%c%c_", c1, c2, c3), {ID::E, ID::R, ID::D}, {ID::Q}); + + for (auto c1 : list_np) + for (auto c2 : list_np) + for (auto c3 : list_np) + setup_type(stringf("$_DLATCHSR_%c%c%c_", c1, c2, c3), {ID::E, ID::S, ID::R, ID::D}, {ID::Q}); + } + + void clear() + { + cell_types.clear(); + } + + bool cell_known(RTLIL::IdString type) const + { + return cell_types.count(type) != 0; + } + + bool cell_output(RTLIL::IdString type, RTLIL::IdString port) const + { + auto it = cell_types.find(type); + return it != cell_types.end() && it->second.outputs.count(port) != 0; + } + + bool cell_input(RTLIL::IdString type, RTLIL::IdString port) const + { + auto it = cell_types.find(type); + return it != cell_types.end() && it->second.inputs.count(port) != 0; + } + + bool cell_evaluable(RTLIL::IdString type) const + { + auto it = cell_types.find(type); + return it != cell_types.end() && it->second.is_evaluable; + } + + static RTLIL::Const eval_not(RTLIL::Const v) + { + for (auto &bit : v.bits) + if (bit == State::S0) bit = State::S1; + else if (bit == State::S1) bit = State::S0; + return v; + } + + static RTLIL::Const eval(RTLIL::IdString type, const RTLIL::Const &arg1, const RTLIL::Const &arg2, bool signed1, bool signed2, int result_len, bool *errp = nullptr) + { + if (type == ID($sshr) && !signed1) + type = ID($shr); + if (type == ID($sshl) && !signed1) + type = ID($shl); + + if (type != ID($sshr) && type != ID($sshl) && type != ID($shr) && type != ID($shl) && type != ID($shift) && type != ID($shiftx) && + type != ID($pos) && type != ID($neg) && type != ID($not)) { + if (!signed1 || !signed2) + signed1 = false, signed2 = false; + } + +#define HANDLE_CELL_TYPE(_t) if (type == ID($##_t)) return const_ ## _t(arg1, arg2, signed1, signed2, result_len); + HANDLE_CELL_TYPE(not) + HANDLE_CELL_TYPE(and) + HANDLE_CELL_TYPE(or) + HANDLE_CELL_TYPE(xor) + HANDLE_CELL_TYPE(xnor) + HANDLE_CELL_TYPE(reduce_and) + HANDLE_CELL_TYPE(reduce_or) + HANDLE_CELL_TYPE(reduce_xor) + HANDLE_CELL_TYPE(reduce_xnor) + HANDLE_CELL_TYPE(reduce_bool) + HANDLE_CELL_TYPE(logic_not) + HANDLE_CELL_TYPE(logic_and) + HANDLE_CELL_TYPE(logic_or) + HANDLE_CELL_TYPE(shl) + HANDLE_CELL_TYPE(shr) + HANDLE_CELL_TYPE(sshl) + HANDLE_CELL_TYPE(sshr) + HANDLE_CELL_TYPE(shift) + HANDLE_CELL_TYPE(shiftx) + HANDLE_CELL_TYPE(lt) + HANDLE_CELL_TYPE(le) + HANDLE_CELL_TYPE(eq) + HANDLE_CELL_TYPE(ne) + HANDLE_CELL_TYPE(eqx) + HANDLE_CELL_TYPE(nex) + HANDLE_CELL_TYPE(ge) + HANDLE_CELL_TYPE(gt) + HANDLE_CELL_TYPE(add) + HANDLE_CELL_TYPE(sub) + HANDLE_CELL_TYPE(mul) + HANDLE_CELL_TYPE(div) + HANDLE_CELL_TYPE(mod) + HANDLE_CELL_TYPE(divfloor) + HANDLE_CELL_TYPE(modfloor) + HANDLE_CELL_TYPE(pow) + HANDLE_CELL_TYPE(pos) + HANDLE_CELL_TYPE(neg) +#undef HANDLE_CELL_TYPE + + if (type == ID($_BUF_)) + return arg1; + if (type == ID($_NOT_)) + return eval_not(arg1); + if (type == ID($_AND_)) + return const_and(arg1, arg2, false, false, 1); + if (type == ID($_NAND_)) + return eval_not(const_and(arg1, arg2, false, false, 1)); + if (type == ID($_OR_)) + return const_or(arg1, arg2, false, false, 1); + if (type == ID($_NOR_)) + return eval_not(const_or(arg1, arg2, false, false, 1)); + if (type == ID($_XOR_)) + return const_xor(arg1, arg2, false, false, 1); + if (type == ID($_XNOR_)) + return const_xnor(arg1, arg2, false, false, 1); + if (type == ID($_ANDNOT_)) + return const_and(arg1, eval_not(arg2), false, false, 1); + if (type == ID($_ORNOT_)) + return const_or(arg1, eval_not(arg2), false, false, 1); + + if (errp != nullptr) { + *errp = true; + return State::Sm; + } + + log_abort(); + } + + static RTLIL::Const eval(RTLIL::Cell *cell, const RTLIL::Const &arg1, const RTLIL::Const &arg2, bool *errp = nullptr) + { + if (cell->type == ID($slice)) { + RTLIL::Const ret; + int width = cell->parameters.at(ID::Y_WIDTH).as_int(); + int offset = cell->parameters.at(ID::OFFSET).as_int(); + ret.bits.insert(ret.bits.end(), arg1.bits.begin()+offset, arg1.bits.begin()+offset+width); + return ret; + } + + if (cell->type == ID($concat)) { + RTLIL::Const ret = arg1; + ret.bits.insert(ret.bits.end(), arg2.bits.begin(), arg2.bits.end()); + return ret; + } + + if (cell->type == ID($bmux)) + { + return const_bmux(arg1, arg2); + } + + if (cell->type == ID($demux)) + { + return const_demux(arg1, arg2); + } + + if (cell->type == ID($lut)) + { + int width = cell->parameters.at(ID::WIDTH).as_int(); + + std::vector t = cell->parameters.at(ID::LUT).bits; + while (GetSize(t) < (1 << width)) + t.push_back(State::S0); + t.resize(1 << width); + + return const_bmux(t, arg1); + } + + if (cell->type == ID($sop)) + { + int width = cell->parameters.at(ID::WIDTH).as_int(); + int depth = cell->parameters.at(ID::DEPTH).as_int(); + std::vector t = cell->parameters.at(ID::TABLE).bits; + + while (GetSize(t) < width*depth*2) + t.push_back(State::S0); + + RTLIL::State default_ret = State::S0; + + for (int i = 0; i < depth; i++) + { + bool match = true; + bool match_x = true; + + for (int j = 0; j < width; j++) { + RTLIL::State a = arg1.bits.at(j); + if (t.at(2*width*i + 2*j + 0) == State::S1) { + if (a == State::S1) match_x = false; + if (a != State::S0) match = false; + } + if (t.at(2*width*i + 2*j + 1) == State::S1) { + if (a == State::S0) match_x = false; + if (a != State::S1) match = false; + } + } + + if (match) + return State::S1; + + if (match_x) + default_ret = State::Sx; + } + + return default_ret; + } + + bool signed_a = cell->parameters.count(ID::A_SIGNED) > 0 && cell->parameters[ID::A_SIGNED].as_bool(); + bool signed_b = cell->parameters.count(ID::B_SIGNED) > 0 && cell->parameters[ID::B_SIGNED].as_bool(); + int result_len = cell->parameters.count(ID::Y_WIDTH) > 0 ? cell->parameters[ID::Y_WIDTH].as_int() : -1; + return eval(cell->type, arg1, arg2, signed_a, signed_b, result_len, errp); + } + + static RTLIL::Const eval(RTLIL::Cell *cell, const RTLIL::Const &arg1, const RTLIL::Const &arg2, const RTLIL::Const &arg3, bool *errp = nullptr) + { + if (cell->type.in(ID($mux), ID($pmux), ID($_MUX_))) { + RTLIL::Const ret = arg1; + for (size_t i = 0; i < arg3.bits.size(); i++) + if (arg3.bits[i] == RTLIL::State::S1) { + std::vector bits(arg2.bits.begin() + i*arg1.bits.size(), arg2.bits.begin() + (i+1)*arg1.bits.size()); + ret = RTLIL::Const(bits); + } + return ret; + } + + if (cell->type == ID($_AOI3_)) + return eval_not(const_or(const_and(arg1, arg2, false, false, 1), arg3, false, false, 1)); + if (cell->type == ID($_OAI3_)) + return eval_not(const_and(const_or(arg1, arg2, false, false, 1), arg3, false, false, 1)); + + log_assert(arg3.bits.size() == 0); + return eval(cell, arg1, arg2, errp); + } + + static RTLIL::Const eval(RTLIL::Cell *cell, const RTLIL::Const &arg1, const RTLIL::Const &arg2, const RTLIL::Const &arg3, const RTLIL::Const &arg4, bool *errp = nullptr) + { + if (cell->type == ID($_AOI4_)) + return eval_not(const_or(const_and(arg1, arg2, false, false, 1), const_and(arg3, arg4, false, false, 1), false, false, 1)); + if (cell->type == ID($_OAI4_)) + return eval_not(const_and(const_or(arg1, arg2, false, false, 1), const_or(arg3, arg4, false, false, 1), false, false, 1)); + + log_assert(arg4.bits.size() == 0); + return eval(cell, arg1, arg2, arg3, errp); + } +}; + +// initialized by yosys_setup() +extern CellTypes yosys_celltypes; + +YOSYS_NAMESPACE_END + +#endif diff --git a/resources/netlist/resources/kernel/share/include/kernel/consteval.h b/resources/netlist/resources/kernel/share/include/kernel/consteval.h new file mode 100644 index 0000000..4c0c260 --- /dev/null +++ b/resources/netlist/resources/kernel/share/include/kernel/consteval.h @@ -0,0 +1,425 @@ +/* + * yosys -- Yosys Open SYnthesis Suite + * + * Copyright (C) 2012 Claire Xenia Wolf + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + */ + +#ifndef CONSTEVAL_H +#define CONSTEVAL_H + +#include "kernel/rtlil.h" +#include "kernel/sigtools.h" +#include "kernel/celltypes.h" +#include "kernel/macc.h" + +YOSYS_NAMESPACE_BEGIN + +struct ConstEval +{ + RTLIL::Module *module; + SigMap assign_map; + SigMap values_map; + SigPool stop_signals; + SigSet sig2driver; + std::set busy; + std::vector stack; + RTLIL::State defaultval; + + ConstEval(RTLIL::Module *module, RTLIL::State defaultval = RTLIL::State::Sm) : module(module), assign_map(module), defaultval(defaultval) + { + CellTypes ct; + ct.setup_internals(); + ct.setup_stdcells(); + + for (auto &it : module->cells_) { + if (!ct.cell_known(it.second->type)) + continue; + for (auto &it2 : it.second->connections()) + if (ct.cell_output(it.second->type, it2.first)) + sig2driver.insert(assign_map(it2.second), it.second); + } + } + + void clear() + { + values_map.clear(); + stop_signals.clear(); + } + + void push() + { + stack.push_back(values_map); + } + + void pop() + { + values_map.swap(stack.back()); + stack.pop_back(); + } + + void set(RTLIL::SigSpec sig, RTLIL::Const value) + { + assign_map.apply(sig); +#ifndef NDEBUG + RTLIL::SigSpec current_val = values_map(sig); + for (int i = 0; i < GetSize(current_val); i++) + log_assert(current_val[i].wire != NULL || current_val[i] == value.bits[i]); +#endif + values_map.add(sig, RTLIL::SigSpec(value)); + } + + void stop(RTLIL::SigSpec sig) + { + assign_map.apply(sig); + stop_signals.add(sig); + } + + bool eval(RTLIL::Cell *cell, RTLIL::SigSpec &undef) + { + if (cell->type == ID($lcu)) + { + RTLIL::SigSpec sig_p = cell->getPort(ID::P); + RTLIL::SigSpec sig_g = cell->getPort(ID::G); + RTLIL::SigSpec sig_ci = cell->getPort(ID::CI); + RTLIL::SigSpec sig_co = values_map(assign_map(cell->getPort(ID::CO))); + + if (sig_co.is_fully_const()) + return true; + + if (!eval(sig_p, undef, cell)) + return false; + + if (!eval(sig_g, undef, cell)) + return false; + + if (!eval(sig_ci, undef, cell)) + return false; + + if (sig_p.is_fully_def() && sig_g.is_fully_def() && sig_ci.is_fully_def()) + { + RTLIL::Const coval(RTLIL::Sx, GetSize(sig_co)); + bool carry = sig_ci.as_bool(); + + for (int i = 0; i < GetSize(coval); i++) { + carry = (sig_g[i] == State::S1) || (sig_p[i] == RTLIL::S1 && carry); + coval.bits[i] = carry ? State::S1 : State::S0; + } + + set(sig_co, coval); + } + else + set(sig_co, RTLIL::Const(RTLIL::Sx, GetSize(sig_co))); + + return true; + } + + RTLIL::SigSpec sig_a, sig_b, sig_s, sig_y; + + log_assert(cell->hasPort(ID::Y)); + sig_y = values_map(assign_map(cell->getPort(ID::Y))); + if (sig_y.is_fully_const()) + return true; + + if (cell->hasPort(ID::S)) { + sig_s = cell->getPort(ID::S); + } + + if (cell->hasPort(ID::A)) + sig_a = cell->getPort(ID::A); + + if (cell->hasPort(ID::B)) + sig_b = cell->getPort(ID::B); + + if (cell->type.in(ID($mux), ID($pmux), ID($_MUX_), ID($_NMUX_))) + { + std::vector y_candidates; + int count_set_s_bits = 0; + + if (!eval(sig_s, undef, cell)) + return false; + + for (int i = 0; i < sig_s.size(); i++) + { + RTLIL::State s_bit = sig_s.extract(i, 1).as_const().bits.at(0); + RTLIL::SigSpec b_slice = sig_b.extract(sig_y.size()*i, sig_y.size()); + + if (s_bit == RTLIL::State::Sx || s_bit == RTLIL::State::S1) + y_candidates.push_back(b_slice); + + if (s_bit == RTLIL::State::S1) + count_set_s_bits++; + } + + if (count_set_s_bits == 0) + y_candidates.push_back(sig_a); + + std::vector y_values; + + log_assert(y_candidates.size() > 0); + for (auto &yc : y_candidates) { + if (!eval(yc, undef, cell)) + return false; + if (cell->type == ID($_NMUX_)) + y_values.push_back(RTLIL::const_not(yc.as_const(), Const(), false, false, GetSize(yc))); + else + y_values.push_back(yc.as_const()); + } + + if (y_values.size() > 1) + { + std::vector master_bits = y_values.at(0).bits; + + for (size_t i = 1; i < y_values.size(); i++) { + std::vector &slave_bits = y_values.at(i).bits; + log_assert(master_bits.size() == slave_bits.size()); + for (size_t j = 0; j < master_bits.size(); j++) + if (master_bits[j] != slave_bits[j]) + master_bits[j] = RTLIL::State::Sx; + } + + set(sig_y, RTLIL::Const(master_bits)); + } + else + set(sig_y, y_values.front()); + } + else if (cell->type == ID($bmux)) + { + if (!eval(sig_s, undef, cell)) + return false; + + if (sig_s.is_fully_def()) { + int sel = sig_s.as_int(); + int width = GetSize(sig_y); + SigSpec res = sig_a.extract(sel * width, width); + if (!eval(res, undef, cell)) + return false; + set(sig_y, res.as_const()); + } else { + if (!eval(sig_a, undef, cell)) + return false; + set(sig_y, const_bmux(sig_a.as_const(), sig_s.as_const())); + } + } + else if (cell->type == ID($demux)) + { + if (!eval(sig_a, undef, cell)) + return false; + if (sig_a.is_fully_zero()) { + set(sig_y, Const(0, GetSize(sig_y))); + } else { + if (!eval(sig_s, undef, cell)) + return false; + set(sig_y, const_demux(sig_a.as_const(), sig_s.as_const())); + } + } + else if (cell->type == ID($fa)) + { + RTLIL::SigSpec sig_c = cell->getPort(ID::C); + RTLIL::SigSpec sig_x = cell->getPort(ID::X); + int width = GetSize(sig_c); + + if (!eval(sig_a, undef, cell)) + return false; + + if (!eval(sig_b, undef, cell)) + return false; + + if (!eval(sig_c, undef, cell)) + return false; + + RTLIL::Const t1 = const_xor(sig_a.as_const(), sig_b.as_const(), false, false, width); + RTLIL::Const val_y = const_xor(t1, sig_c.as_const(), false, false, width); + + RTLIL::Const t2 = const_and(sig_a.as_const(), sig_b.as_const(), false, false, width); + RTLIL::Const t3 = const_and(sig_c.as_const(), t1, false, false, width); + RTLIL::Const val_x = const_or(t2, t3, false, false, width); + + for (int i = 0; i < GetSize(val_y); i++) + if (val_y.bits[i] == RTLIL::Sx) + val_x.bits[i] = RTLIL::Sx; + + set(sig_y, val_y); + set(sig_x, val_x); + } + else if (cell->type == ID($alu)) + { + bool signed_a = cell->parameters.count(ID::A_SIGNED) > 0 && cell->parameters[ID::A_SIGNED].as_bool(); + bool signed_b = cell->parameters.count(ID::B_SIGNED) > 0 && cell->parameters[ID::B_SIGNED].as_bool(); + + RTLIL::SigSpec sig_ci = cell->getPort(ID::CI); + RTLIL::SigSpec sig_bi = cell->getPort(ID::BI); + + if (!eval(sig_a, undef, cell)) + return false; + + if (!eval(sig_b, undef, cell)) + return false; + + if (!eval(sig_ci, undef, cell)) + return false; + + if (!eval(sig_bi, undef, cell)) + return false; + + RTLIL::SigSpec sig_x = cell->getPort(ID::X); + RTLIL::SigSpec sig_co = cell->getPort(ID::CO); + + bool any_input_undef = !(sig_a.is_fully_def() && sig_b.is_fully_def() && sig_ci.is_fully_def() && sig_bi.is_fully_def()); + sig_a.extend_u0(GetSize(sig_y), signed_a); + sig_b.extend_u0(GetSize(sig_y), signed_b); + + bool carry = sig_ci[0] == State::S1; + bool b_inv = sig_bi[0] == State::S1; + + for (int i = 0; i < GetSize(sig_y); i++) + { + RTLIL::SigSpec x_inputs = { sig_a[i], sig_b[i], sig_bi[0] }; + + if (!x_inputs.is_fully_def()) { + set(sig_x[i], RTLIL::Sx); + } else { + bool bit_a = sig_a[i] == State::S1; + bool bit_b = (sig_b[i] == State::S1) != b_inv; + bool bit_x = bit_a != bit_b; + set(sig_x[i], bit_x ? State::S1 : State::S0); + } + + if (any_input_undef) { + set(sig_y[i], RTLIL::Sx); + set(sig_co[i], RTLIL::Sx); + } else { + bool bit_a = sig_a[i] == State::S1; + bool bit_b = (sig_b[i] == State::S1) != b_inv; + bool bit_y = (bit_a != bit_b) != carry; + carry = (bit_a && bit_b) || (bit_a && carry) || (bit_b && carry); + set(sig_y[i], bit_y ? State::S1 : State::S0); + set(sig_co[i], carry ? State::S1 : State::S0); + } + } + } + else if (cell->type == ID($macc)) + { + Macc macc; + macc.from_cell(cell); + + if (!eval(macc.bit_ports, undef, cell)) + return false; + + for (auto &port : macc.ports) { + if (!eval(port.in_a, undef, cell)) + return false; + if (!eval(port.in_b, undef, cell)) + return false; + } + + RTLIL::Const result(0, GetSize(cell->getPort(ID::Y))); + if (!macc.eval(result)) + log_abort(); + + set(cell->getPort(ID::Y), result); + } + else + { + RTLIL::SigSpec sig_c, sig_d; + + if (cell->type.in(ID($_AOI3_), ID($_OAI3_), ID($_AOI4_), ID($_OAI4_))) { + if (cell->hasPort(ID::C)) + sig_c = cell->getPort(ID::C); + if (cell->hasPort(ID::D)) + sig_d = cell->getPort(ID::D); + } + + if (sig_a.size() > 0 && !eval(sig_a, undef, cell)) + return false; + if (sig_b.size() > 0 && !eval(sig_b, undef, cell)) + return false; + if (sig_c.size() > 0 && !eval(sig_c, undef, cell)) + return false; + if (sig_d.size() > 0 && !eval(sig_d, undef, cell)) + return false; + + bool eval_err = false; + RTLIL::Const eval_ret = CellTypes::eval(cell, sig_a.as_const(), sig_b.as_const(), sig_c.as_const(), sig_d.as_const(), &eval_err); + + if (eval_err) + return false; + + set(sig_y, eval_ret); + } + + return true; + } + + bool eval(RTLIL::SigSpec &sig, RTLIL::SigSpec &undef, RTLIL::Cell *busy_cell = NULL) + { + assign_map.apply(sig); + values_map.apply(sig); + + if (sig.is_fully_const()) + return true; + + if (stop_signals.check_any(sig)) { + undef = stop_signals.extract(sig); + return false; + } + + if (busy_cell) { + if (busy.count(busy_cell) > 0) { + undef = sig; + return false; + } + busy.insert(busy_cell); + } + + std::set driver_cells; + sig2driver.find(sig, driver_cells); + for (auto cell : driver_cells) { + if (!eval(cell, undef)) { + if (busy_cell) + busy.erase(busy_cell); + return false; + } + } + + if (busy_cell) + busy.erase(busy_cell); + + values_map.apply(sig); + if (sig.is_fully_const()) + return true; + + if (defaultval != RTLIL::State::Sm) { + for (auto &bit : sig) + if (bit.wire) bit = defaultval; + return true; + } + + for (auto &c : sig.chunks()) + if (c.wire != NULL) + undef.append(c); + return false; + } + + bool eval(RTLIL::SigSpec &sig) + { + RTLIL::SigSpec undef; + return eval(sig, undef); + } +}; + +YOSYS_NAMESPACE_END + +#endif diff --git a/resources/netlist/resources/kernel/share/include/kernel/constids.inc b/resources/netlist/resources/kernel/share/include/kernel/constids.inc new file mode 100644 index 0000000..239381f --- /dev/null +++ b/resources/netlist/resources/kernel/share/include/kernel/constids.inc @@ -0,0 +1,263 @@ +X(A) +X(abc9_box) +X(abc9_box_id) +X(abc9_box_seq) +X(abc9_bypass) +X(abc9_carry) +X(abc9_flop) +X(abc9_keep) +X(abc9_lut) +X(abc9_mergeability) +X(abc9_scc_id) +X(abcgroup) +X(ABITS) +X(AD) +X(ADDR) +X(allconst) +X(allseq) +X(ALOAD) +X(ALOAD_POLARITY) +X(always_comb) +X(always_ff) +X(always_latch) +X(anyconst) +X(anyseq) +X(ARST) +X(ARST_POLARITY) +X(ARST_VALUE) +X(A_SIGNED) +X(A_WIDTH) +X(B) +X(BI) +X(BITS_USED) +X(blackbox) +X(B_SIGNED) +X(bugpoint_keep) +X(B_WIDTH) +X(BYTE) +X(C) +X(cells_not_processed) +X(CE_OVER_SRST) +X(CFG_ABITS) +X(CFG_DBITS) +X(CFG_INIT) +X(CI) +X(CLK) +X(clkbuf_driver) +X(clkbuf_inhibit) +X(clkbuf_inv) +X(clkbuf_sink) +X(CLK_ENABLE) +X(CLK_POLARITY) +X(CLR) +X(CLR_POLARITY) +X(CO) +X(COLLISION_X_MASK) +X(CONFIG) +X(CONFIG_WIDTH) +X(CTRL_IN) +X(CTRL_IN_WIDTH) +X(CTRL_OUT) +X(CTRL_OUT_WIDTH) +X(D) +X(DAT) +X(DATA) +X(DAT_DST_PEN) +X(DAT_DST_POL) +X(defaultvalue) +X(DELAY) +X(DEPTH) +X(DST) +X(DST_EN) +X(DST_PEN) +X(DST_POL) +X(DST_WIDTH) +X(dynports) +X(E) +X(EDGE_EN) +X(EDGE_POL) +X(EN) +X(EN_DST) +X(EN_POLARITY) +X(EN_SRC) +X(enum_base_type) +X(enum_type) +X(equiv_merged) +X(equiv_region) +X(extract_order) +X(F) +X(force_downto) +X(force_upto) +X(fsm_encoding) +X(fsm_export) +X(FULL) +X(full_case) +X(G) +X(gclk) +X(gentb_clock) +X(gentb_constant) +X(gentb_skip) +X(H) +X(hdlname) +X(hierconn) +X(I) +X(INIT) +X(INIT_VALUE) +X(init) +X(initial_top) +X(interface_modport) +X(interfaces_replaced_in_module) +X(interface_type) +X(invertible_pin) +X(iopad_external_pin) +X(is_interface) +X(J) +X(K) +X(keep) +X(keep_hierarchy) +X(L) +X(lib_whitebox) +X(localparam) +X(logic_block) +X(lram) +X(LUT) +X(lut_keep) +X(M) +X(maximize) +X(mem2reg) +X(MEMID) +X(minimize) +X(module_not_derived) +X(N) +X(NAME) +X(noblackbox) +X(nolatches) +X(nomem2init) +X(nomem2reg) +X(nomeminit) +X(nosync) +X(nowrshmsk) +X(no_rw_check) +X(O) +X(OFFSET) +X(onehot) +X(P) +X(parallel_case) +X(parameter) +X(PORTID) +X(PRIORITY) +X(PRIORITY_MASK) +X(Q) +X(qwp_position) +X(R) +X(ram_block) +X(ram_style) +X(ramstyle) +X(RD_ADDR) +X(RD_ARST) +X(RD_ARST_VALUE) +X(RD_CE_OVER_SRST) +X(RD_CLK) +X(RD_CLK_ENABLE) +X(RD_CLK_POLARITY) +X(RD_COLLISION_X_MASK) +X(RD_DATA) +X(RD_EN) +X(RD_INIT_VALUE) +X(RD_PORTS) +X(RD_SRST) +X(RD_SRST_VALUE) +X(RD_TRANSPARENCY_MASK) +X(RD_TRANSPARENT) +X(RD_WIDE_CONTINUATION) +X(reg) +X(replaced_by_gclk) +X(reprocess_after) +X(rom_block) +X(rom_style) +X(romstyle) +X(S) +X(SET) +X(SET_POLARITY) +X(SIZE) +X(SRC) +X(src) +X(SRC_DST_PEN) +X(SRC_DST_POL) +X(SRC_EN) +X(SRC_PEN) +X(SRC_POL) +X(SRC_WIDTH) +X(SRST) +X(SRST_POLARITY) +X(SRST_VALUE) +X(sta_arrival) +X(STATE_BITS) +X(STATE_NUM) +X(STATE_NUM_LOG2) +X(STATE_RST) +X(STATE_TABLE) +X(smtlib2_module) +X(smtlib2_comb_expr) +X(submod) +X(syn_ramstyle) +X(syn_romstyle) +X(S_WIDTH) +X(T) +X(TABLE) +X(techmap_autopurge) +X(_TECHMAP_BITS_CONNMAP_) +X(_TECHMAP_CELLNAME_) +X(_TECHMAP_CELLTYPE_) +X(techmap_celltype) +X(_TECHMAP_FAIL_) +X(techmap_maccmap) +X(_TECHMAP_REPLACE_) +X(techmap_simplemap) +X(_techmap_special_) +X(techmap_wrap) +X(T_FALL_MAX) +X(T_FALL_MIN) +X(T_FALL_TYP) +X(T_LIMIT) +X(T_LIMIT2) +X(T_LIMIT2_MAX) +X(T_LIMIT2_MIN) +X(T_LIMIT2_TYP) +X(T_LIMIT_MAX) +X(T_LIMIT_MIN) +X(T_LIMIT_TYP) +X(to_delete) +X(top) +X(TRANS_NUM) +X(TRANSPARENCY_MASK) +X(TRANSPARENT) +X(TRANS_TABLE) +X(T_RISE_MAX) +X(T_RISE_MIN) +X(T_RISE_TYP) +X(TYPE) +X(U) +X(unique) +X(unused_bits) +X(V) +X(via_celltype) +X(wand) +X(whitebox) +X(WIDTH) +X(wildcard_port_conns) +X(wiretype) +X(wor) +X(WORDS) +X(WR_ADDR) +X(WR_CLK) +X(WR_CLK_ENABLE) +X(WR_CLK_POLARITY) +X(WR_DATA) +X(WR_EN) +X(WR_PORTS) +X(WR_PRIORITY_MASK) +X(WR_WIDE_CONTINUATION) +X(X) +X(Y) +X(Y_WIDTH) diff --git a/resources/netlist/resources/kernel/share/include/kernel/ff.h b/resources/netlist/resources/kernel/share/include/kernel/ff.h new file mode 100644 index 0000000..e684d3c --- /dev/null +++ b/resources/netlist/resources/kernel/share/include/kernel/ff.h @@ -0,0 +1,224 @@ +/* + * yosys -- Yosys Open SYnthesis Suite + * + * Copyright (C) 2020 Marcelina Kościelnicka + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + */ + +#ifndef FF_H +#define FF_H + +#include "kernel/yosys.h" +#include "kernel/ffinit.h" + +YOSYS_NAMESPACE_BEGIN + +// Describes a flip-flop or a latch. +// +// If has_gclk, this is a formal verification FF with implicit global clock: +// Q is simply previous cycle's D. Additionally if is_anyinit is true, this is +// an $anyinit cell which always has an undefined initialization value. Note +// that $anyinit is not considered to be among the FF celltypes, so a pass has +// to explicitly opt-in to process $anyinit cells with FfData. +// +// Otherwise, the FF/latch can have any number of features selected by has_* +// attributes that determine Q's value (in order of decreasing priority): +// +// - on start, register is initialized to val_init +// - if has_sr is present: +// - sig_clr is per-bit async clear, and sets the corresponding bit to 0 +// if active +// - sig_set is per-bit async set, and sets the corresponding bit to 1 +// if active +// - if has_arst is present: +// - sig_arst is whole-reg async reset, and sets the whole register to val_arst +// - if has_aload is present: +// - sig_aload is whole-reg async load (aka latch gate enable), and sets the whole +// register to sig_ad +// - if has_clk is present, and we're currently on a clock edge: +// - if has_ce is present and ce_over_srst is true: +// - ignore clock edge (don't change value) unless sig_ce is active +// - if has_srst is present: +// - sig_srst is whole-reg sync reset and sets the register to val_srst +// - if has_ce is present and ce_over_srst is false: +// - ignore clock edge (don't change value) unless sig_ce is active +// - set whole reg to sig_d +// - if nothing of the above applies, the reg value remains unchanged +// +// Since the yosys FF cell library isn't fully generic, not all combinations +// of the features above can be supported: +// +// - only one of has_srst, has_arst, has_sr can be used +// - if has_clk is used together with has_aload, then has_srst, has_arst, +// has_sr cannot be used +// +// The valid feature combinations are thus: +// +// - has_clk + optional has_ce [dff/dffe] +// - has_clk + optional has_ce + has_arst [adff/adffe] +// - has_clk + optional has_ce + has_aload [aldff/aldffe] +// - has_clk + optional has_ce + has_sr [dffsr/dffsre] +// - has_clk + optional has_ce + has_srst [sdff/sdffe/sdffce] +// - has_aload [dlatch] +// - has_aload + has_arst [adlatch] +// - has_aload + has_sr [dlatchsr] +// - has_sr [sr] +// - has_arst [does not correspond to a native cell, represented as dlatch with const D input] +// - empty set [not a cell — will be emitted as a simple direct connection] + +struct FfData { + Module *module; + FfInitVals *initvals; + Cell *cell; + IdString name; + // The FF output. + SigSpec sig_q; + // The sync data input, present if has_clk or has_gclk. + SigSpec sig_d; + // The async data input, present if has_aload. + SigSpec sig_ad; + // The sync clock, present if has_clk. + SigSpec sig_clk; + // The clock enable, present if has_ce. + SigSpec sig_ce; + // The async load enable, present if has_aload. + SigSpec sig_aload; + // The async reset, preset if has_arst. + SigSpec sig_arst; + // The sync reset, preset if has_srst. + SigSpec sig_srst; + // The async clear (per-lane), present if has_sr. + SigSpec sig_clr; + // The async set (per-lane), present if has_sr. + SigSpec sig_set; + // True if this is a clocked (edge-sensitive) flip-flop. + bool has_clk; + // True if this is a $ff, exclusive with every other has_*. + bool has_gclk; + // True if this FF has a clock enable. Depends on has_clk. + bool has_ce; + // True if this FF has async load function — this includes D latches. + // If this and has_clk are both set, has_arst and has_sr cannot be set. + bool has_aload; + // True if this FF has sync set/reset. Depends on has_clk, exclusive + // with has_arst, has_sr, has_aload. + bool has_srst; + // True if this FF has async set/reset. Exclusive with has_srst, + // has_sr. If this and has_clk are both set, has_aload cannot be set. + bool has_arst; + // True if this FF has per-bit async set + clear. Exclusive with + // has_srst, has_arst. If this and has_clk are both set, has_aload + // cannot be set. + bool has_sr; + // If has_ce and has_srst are both set, determines their relative + // priorities: if true, inactive ce disables srst; if false, srst + // operates independent of ce. + bool ce_over_srst; + // True if this FF is a fine cell, false if it is a coarse cell. + // If true, width must be 1. + bool is_fine; + // True if this FF is an $anyinit cell. Depends on has_gclk. + bool is_anyinit; + // Polarities, corresponding to sig_*. True means active-high, false + // means active-low. + bool pol_clk; + bool pol_ce; + bool pol_aload; + bool pol_arst; + bool pol_srst; + bool pol_clr; + bool pol_set; + // The value loaded by sig_arst. + Const val_arst; + // The value loaded by sig_srst. + Const val_srst; + // The initial value at power-up. + Const val_init; + // The FF data width in bits. + int width; + dict attributes; + + FfData(Module *module = nullptr, FfInitVals *initvals = nullptr, IdString name = IdString()) : module(module), initvals(initvals), cell(nullptr), name(name) { + width = 0; + has_clk = false; + has_gclk = false; + has_ce = false; + has_aload = false; + has_srst = false; + has_arst = false; + has_sr = false; + ce_over_srst = false; + is_fine = false; + is_anyinit = false; + pol_clk = false; + pol_aload = false; + pol_ce = false; + pol_arst = false; + pol_srst = false; + pol_clr = false; + pol_set = false; + } + + FfData(FfInitVals *initvals, Cell *cell_); + + // Returns a FF identical to this one, but only keeping bit indices from the argument. + FfData slice(const std::vector &bits); + + void add_dummy_ce(); + void add_dummy_srst(); + void add_dummy_arst(); + void add_dummy_aload(); + void add_dummy_sr(); + void add_dummy_clk(); + + void arst_to_aload(); + void arst_to_sr(); + + void aload_to_sr(); + + // Given a FF with both has_ce and has_srst, sets ce_over_srst to the given value and + // fixes up control signals appropriately to preserve semantics. + void convert_ce_over_srst(bool val); + + void unmap_ce(); + void unmap_srst(); + + void unmap_ce_srst() { + unmap_ce(); + unmap_srst(); + } + + Cell *emit(); + + // Removes init attribute from the Q output, but keeps val_init unchanged. + // It will be automatically reattached on emit. Use this before changing sig_q. + void remove_init() { + if (initvals) + initvals->remove_init(sig_q); + } + + void remove(); + + // Flip the sense of the given bit slices of the FF: insert inverters on data + // inputs and output, flip the corresponding init/reset bits, swap clr/set + // inputs with proper priority fix. + void flip_bits(const pool &bits); + + void flip_rst_bits(const pool &bits); +}; + +YOSYS_NAMESPACE_END + +#endif diff --git a/resources/netlist/resources/kernel/share/include/kernel/ffinit.h b/resources/netlist/resources/kernel/share/include/kernel/ffinit.h new file mode 100644 index 0000000..9d33ac5 --- /dev/null +++ b/resources/netlist/resources/kernel/share/include/kernel/ffinit.h @@ -0,0 +1,140 @@ +/* + * yosys -- Yosys Open SYnthesis Suite + * + * Copyright (C) 2020 Marcelina Kościelnicka + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + */ + +#ifndef FFINIT_H +#define FFINIT_H + +#include "kernel/yosys.h" +#include "kernel/sigtools.h" + +YOSYS_NAMESPACE_BEGIN + +struct FfInitVals +{ + const SigMap *sigmap; + dict> initbits; + + void set(const SigMap *sigmap_, RTLIL::Module *module) + { + sigmap = sigmap_; + initbits.clear(); + for (auto wire : module->wires()) + { + if (wire->attributes.count(ID::init) == 0) + continue; + + SigSpec wirebits = (*sigmap)(wire); + Const initval = wire->attributes.at(ID::init); + + for (int i = 0; i < GetSize(wirebits) && i < GetSize(initval); i++) + { + SigBit bit = wirebits[i]; + State val = initval[i]; + + if (val != State::S0 && val != State::S1 && bit.wire != nullptr) + continue; + + if (initbits.count(bit)) { + if (initbits.at(bit).first != val) + log_error("Conflicting init values for signal %s (%s = %s != %s).\n", + log_signal(bit), log_signal(SigBit(wire, i)), + log_signal(val), log_signal(initbits.at(bit).first)); + continue; + } + + initbits[bit] = std::make_pair(val,SigBit(wire,i)); + } + } + } + + RTLIL::State operator()(RTLIL::SigBit bit) const + { + auto it = initbits.find((*sigmap)(bit)); + if (it != initbits.end()) + return it->second.first; + else + return State::Sx; + } + + RTLIL::Const operator()(const RTLIL::SigSpec &sig) const + { + RTLIL::Const res; + for (auto bit : sig) + res.bits.push_back((*this)(bit)); + return res; + } + + void set_init(RTLIL::SigBit bit, RTLIL::State val) + { + SigBit mbit = (*sigmap)(bit); + SigBit abit = bit; + auto it = initbits.find(mbit); + if (it != initbits.end()) + abit = it->second.second; + else if (val == State::Sx) + return; + log_assert(abit.wire); + initbits[mbit] = std::make_pair(val,abit); + auto it2 = abit.wire->attributes.find(ID::init); + if (it2 != abit.wire->attributes.end()) { + it2->second[abit.offset] = val; + if (it2->second.is_fully_undef()) + abit.wire->attributes.erase(it2); + } else if (val != State::Sx) { + Const cval(State::Sx, GetSize(abit.wire)); + cval[abit.offset] = val; + abit.wire->attributes[ID::init] = cval; + } + } + + void set_init(const RTLIL::SigSpec &sig, RTLIL::Const val) + { + log_assert(GetSize(sig) == GetSize(val)); + for (int i = 0; i < GetSize(sig); i++) + set_init(sig[i], val[i]); + } + + void remove_init(RTLIL::SigBit bit) + { + set_init(bit, State::Sx); + } + + void remove_init(const RTLIL::SigSpec &sig) + { + for (auto bit : sig) + remove_init(bit); + } + + void clear() + { + initbits.clear(); + } + + FfInitVals (const SigMap *sigmap, RTLIL::Module *module) + { + set(sigmap, module); + } + + FfInitVals () {} +}; + + +YOSYS_NAMESPACE_END + +#endif diff --git a/resources/netlist/resources/kernel/share/include/kernel/hashlib.h b/resources/netlist/resources/kernel/share/include/kernel/hashlib.h new file mode 100644 index 0000000..af28271 --- /dev/null +++ b/resources/netlist/resources/kernel/share/include/kernel/hashlib.h @@ -0,0 +1,1191 @@ +// This is free and unencumbered software released into the public domain. +// +// Anyone is free to copy, modify, publish, use, compile, sell, or +// distribute this software, either in source code form or as a compiled +// binary, for any purpose, commercial or non-commercial, and by any +// means. + +// ------------------------------------------------------- +// Written by Claire Xenia Wolf in 2014 +// ------------------------------------------------------- + +#ifndef HASHLIB_H +#define HASHLIB_H + +#include +#include +#include +#include + +namespace hashlib { + +const int hashtable_size_trigger = 2; +const int hashtable_size_factor = 3; + +// The XOR version of DJB2 +inline unsigned int mkhash(unsigned int a, unsigned int b) { + return ((a << 5) + a) ^ b; +} + +// traditionally 5381 is used as starting value for the djb2 hash +const unsigned int mkhash_init = 5381; + +// The ADD version of DJB2 +// (use this version for cache locality in b) +inline unsigned int mkhash_add(unsigned int a, unsigned int b) { + return ((a << 5) + a) + b; +} + +inline unsigned int mkhash_xorshift(unsigned int a) { + if (sizeof(a) == 4) { + a ^= a << 13; + a ^= a >> 17; + a ^= a << 5; + } else if (sizeof(a) == 8) { + a ^= a << 13; + a ^= a >> 7; + a ^= a << 17; + } else + throw std::runtime_error("mkhash_xorshift() only implemented for 32 bit and 64 bit ints"); + return a; +} + +template struct hash_ops { + static inline bool cmp(const T &a, const T &b) { + return a == b; + } + static inline unsigned int hash(const T &a) { + return a.hash(); + } +}; + +struct hash_int_ops { + template + static inline bool cmp(T a, T b) { + return a == b; + } +}; + +template<> struct hash_ops : hash_int_ops +{ + static inline unsigned int hash(bool a) { + return a ? 1 : 0; + } +}; +template<> struct hash_ops : hash_int_ops +{ + static inline unsigned int hash(int32_t a) { + return a; + } +}; +template<> struct hash_ops : hash_int_ops +{ + static inline unsigned int hash(int64_t a) { + return mkhash((unsigned int)(a), (unsigned int)(a >> 32)); + } +}; + +template<> struct hash_ops { + static inline bool cmp(const std::string &a, const std::string &b) { + return a == b; + } + static inline unsigned int hash(const std::string &a) { + unsigned int v = 0; + for (auto c : a) + v = mkhash(v, c); + return v; + } +}; + +template struct hash_ops> { + static inline bool cmp(std::pair a, std::pair b) { + return a == b; + } + static inline unsigned int hash(std::pair a) { + return mkhash(hash_ops

    ::hash(a.first), hash_ops::hash(a.second)); + } +}; + +template struct hash_ops> { + static inline bool cmp(std::tuple a, std::tuple b) { + return a == b; + } + template + static inline typename std::enable_if::type hash(std::tuple) { + return mkhash_init; + } + template + static inline typename std::enable_if::type hash(std::tuple a) { + typedef hash_ops>::type> element_ops_t; + return mkhash(hash(a), element_ops_t::hash(std::get(a))); + } +}; + +template struct hash_ops> { + static inline bool cmp(std::vector a, std::vector b) { + return a == b; + } + static inline unsigned int hash(std::vector a) { + unsigned int h = mkhash_init; + for (auto k : a) + h = mkhash(h, hash_ops::hash(k)); + return h; + } +}; + +struct hash_cstr_ops { + static inline bool cmp(const char *a, const char *b) { + for (int i = 0; a[i] || b[i]; i++) + if (a[i] != b[i]) + return false; + return true; + } + static inline unsigned int hash(const char *a) { + unsigned int hash = mkhash_init; + while (*a) + hash = mkhash(hash, *(a++)); + return hash; + } +}; + +struct hash_ptr_ops { + static inline bool cmp(const void *a, const void *b) { + return a == b; + } + static inline unsigned int hash(const void *a) { + return (uintptr_t)a; + } +}; + +struct hash_obj_ops { + static inline bool cmp(const void *a, const void *b) { + return a == b; + } + template + static inline unsigned int hash(const T *a) { + return a ? a->hash() : 0; + } +}; + +template +inline unsigned int mkhash(const T &v) { + return hash_ops().hash(v); +} + +inline int hashtable_size(int min_size) +{ + static std::vector zero_and_some_primes = { + 0, 23, 29, 37, 47, 59, 79, 101, 127, 163, 211, 269, 337, 431, 541, 677, + 853, 1069, 1361, 1709, 2137, 2677, 3347, 4201, 5261, 6577, 8231, 10289, + 12889, 16127, 20161, 25219, 31531, 39419, 49277, 61603, 77017, 96281, + 120371, 150473, 188107, 235159, 293957, 367453, 459317, 574157, 717697, + 897133, 1121423, 1401791, 1752239, 2190299, 2737937, 3422429, 4278037, + 5347553, 6684443, 8355563, 10444457, 13055587, 16319519, 20399411, + 25499291, 31874149, 39842687, 49803361, 62254207, 77817767, 97272239, + 121590311, 151987889, 189984863, 237481091, 296851369, 371064217 + }; + + for (auto p : zero_and_some_primes) + if (p >= min_size) return p; + + if (sizeof(int) == 4) + throw std::length_error("hash table exceeded maximum size.\nDesign is likely too large for yosys to handle, if possible try not to flatten the design."); + + for (auto p : zero_and_some_primes) + if (100129 * p > min_size) return 100129 * p; + + throw std::length_error("hash table exceeded maximum size."); +} + +template> class dict; +template> class idict; +template> class pool; +template> class mfp; + +template +class dict +{ + struct entry_t + { + std::pair udata; + int next; + + entry_t() { } + entry_t(const std::pair &udata, int next) : udata(udata), next(next) { } + entry_t(std::pair &&udata, int next) : udata(std::move(udata)), next(next) { } + bool operator<(const entry_t &other) const { return udata.first < other.udata.first; } + }; + + std::vector hashtable; + std::vector entries; + OPS ops; + +#ifdef NDEBUG + static inline void do_assert(bool) { } +#else + static inline void do_assert(bool cond) { + if (!cond) throw std::runtime_error("dict<> assert failed."); + } +#endif + + int do_hash(const K &key) const + { + unsigned int hash = 0; + if (!hashtable.empty()) + hash = ops.hash(key) % (unsigned int)(hashtable.size()); + return hash; + } + + void do_rehash() + { + hashtable.clear(); + hashtable.resize(hashtable_size(entries.capacity() * hashtable_size_factor), -1); + + for (int i = 0; i < int(entries.size()); i++) { + do_assert(-1 <= entries[i].next && entries[i].next < int(entries.size())); + int hash = do_hash(entries[i].udata.first); + entries[i].next = hashtable[hash]; + hashtable[hash] = i; + } + } + + int do_erase(int index, int hash) + { + do_assert(index < int(entries.size())); + if (hashtable.empty() || index < 0) + return 0; + + int k = hashtable[hash]; + do_assert(0 <= k && k < int(entries.size())); + + if (k == index) { + hashtable[hash] = entries[index].next; + } else { + while (entries[k].next != index) { + k = entries[k].next; + do_assert(0 <= k && k < int(entries.size())); + } + entries[k].next = entries[index].next; + } + + int back_idx = entries.size()-1; + + if (index != back_idx) + { + int back_hash = do_hash(entries[back_idx].udata.first); + + k = hashtable[back_hash]; + do_assert(0 <= k && k < int(entries.size())); + + if (k == back_idx) { + hashtable[back_hash] = index; + } else { + while (entries[k].next != back_idx) { + k = entries[k].next; + do_assert(0 <= k && k < int(entries.size())); + } + entries[k].next = index; + } + + entries[index] = std::move(entries[back_idx]); + } + + entries.pop_back(); + + if (entries.empty()) + hashtable.clear(); + + return 1; + } + + int do_lookup(const K &key, int &hash) const + { + if (hashtable.empty()) + return -1; + + if (entries.size() * hashtable_size_trigger > hashtable.size()) { + ((dict*)this)->do_rehash(); + hash = do_hash(key); + } + + int index = hashtable[hash]; + + while (index >= 0 && !ops.cmp(entries[index].udata.first, key)) { + index = entries[index].next; + do_assert(-1 <= index && index < int(entries.size())); + } + + return index; + } + + int do_insert(const K &key, int &hash) + { + if (hashtable.empty()) { + entries.emplace_back(std::pair(key, T()), -1); + do_rehash(); + hash = do_hash(key); + } else { + entries.emplace_back(std::pair(key, T()), hashtable[hash]); + hashtable[hash] = entries.size() - 1; + } + return entries.size() - 1; + } + + int do_insert(const std::pair &value, int &hash) + { + if (hashtable.empty()) { + entries.emplace_back(value, -1); + do_rehash(); + hash = do_hash(value.first); + } else { + entries.emplace_back(value, hashtable[hash]); + hashtable[hash] = entries.size() - 1; + } + return entries.size() - 1; + } + + int do_insert(std::pair &&rvalue, int &hash) + { + if (hashtable.empty()) { + auto key = rvalue.first; + entries.emplace_back(std::forward>(rvalue), -1); + do_rehash(); + hash = do_hash(key); + } else { + entries.emplace_back(std::forward>(rvalue), hashtable[hash]); + hashtable[hash] = entries.size() - 1; + } + return entries.size() - 1; + } + +public: + class const_iterator : public std::iterator> + { + friend class dict; + protected: + const dict *ptr; + int index; + const_iterator(const dict *ptr, int index) : ptr(ptr), index(index) { } + public: + const_iterator() { } + const_iterator operator++() { index--; return *this; } + const_iterator operator+=(int amt) { index -= amt; return *this; } + bool operator<(const const_iterator &other) const { return index > other.index; } + bool operator==(const const_iterator &other) const { return index == other.index; } + bool operator!=(const const_iterator &other) const { return index != other.index; } + const std::pair &operator*() const { return ptr->entries[index].udata; } + const std::pair *operator->() const { return &ptr->entries[index].udata; } + }; + + class iterator : public std::iterator> + { + friend class dict; + protected: + dict *ptr; + int index; + iterator(dict *ptr, int index) : ptr(ptr), index(index) { } + public: + iterator() { } + iterator operator++() { index--; return *this; } + iterator operator+=(int amt) { index -= amt; return *this; } + bool operator<(const iterator &other) const { return index > other.index; } + bool operator==(const iterator &other) const { return index == other.index; } + bool operator!=(const iterator &other) const { return index != other.index; } + std::pair &operator*() { return ptr->entries[index].udata; } + std::pair *operator->() { return &ptr->entries[index].udata; } + const std::pair &operator*() const { return ptr->entries[index].udata; } + const std::pair *operator->() const { return &ptr->entries[index].udata; } + operator const_iterator() const { return const_iterator(ptr, index); } + }; + + dict() + { + } + + dict(const dict &other) + { + entries = other.entries; + do_rehash(); + } + + dict(dict &&other) + { + swap(other); + } + + dict &operator=(const dict &other) { + entries = other.entries; + do_rehash(); + return *this; + } + + dict &operator=(dict &&other) { + clear(); + swap(other); + return *this; + } + + dict(const std::initializer_list> &list) + { + for (auto &it : list) + insert(it); + } + + template + dict(InputIterator first, InputIterator last) + { + insert(first, last); + } + + template + void insert(InputIterator first, InputIterator last) + { + for (; first != last; ++first) + insert(*first); + } + + std::pair insert(const K &key) + { + int hash = do_hash(key); + int i = do_lookup(key, hash); + if (i >= 0) + return std::pair(iterator(this, i), false); + i = do_insert(key, hash); + return std::pair(iterator(this, i), true); + } + + std::pair insert(const std::pair &value) + { + int hash = do_hash(value.first); + int i = do_lookup(value.first, hash); + if (i >= 0) + return std::pair(iterator(this, i), false); + i = do_insert(value, hash); + return std::pair(iterator(this, i), true); + } + + std::pair insert(std::pair &&rvalue) + { + int hash = do_hash(rvalue.first); + int i = do_lookup(rvalue.first, hash); + if (i >= 0) + return std::pair(iterator(this, i), false); + i = do_insert(std::forward>(rvalue), hash); + return std::pair(iterator(this, i), true); + } + + std::pair emplace(K const &key, T const &value) + { + int hash = do_hash(key); + int i = do_lookup(key, hash); + if (i >= 0) + return std::pair(iterator(this, i), false); + i = do_insert(std::make_pair(key, value), hash); + return std::pair(iterator(this, i), true); + } + + std::pair emplace(K const &key, T &&rvalue) + { + int hash = do_hash(key); + int i = do_lookup(key, hash); + if (i >= 0) + return std::pair(iterator(this, i), false); + i = do_insert(std::make_pair(key, std::forward(rvalue)), hash); + return std::pair(iterator(this, i), true); + } + + std::pair emplace(K &&rkey, T const &value) + { + int hash = do_hash(rkey); + int i = do_lookup(rkey, hash); + if (i >= 0) + return std::pair(iterator(this, i), false); + i = do_insert(std::make_pair(std::forward(rkey), value), hash); + return std::pair(iterator(this, i), true); + } + + std::pair emplace(K &&rkey, T &&rvalue) + { + int hash = do_hash(rkey); + int i = do_lookup(rkey, hash); + if (i >= 0) + return std::pair(iterator(this, i), false); + i = do_insert(std::make_pair(std::forward(rkey), std::forward(rvalue)), hash); + return std::pair(iterator(this, i), true); + } + + int erase(const K &key) + { + int hash = do_hash(key); + int index = do_lookup(key, hash); + return do_erase(index, hash); + } + + iterator erase(iterator it) + { + int hash = do_hash(it->first); + do_erase(it.index, hash); + return ++it; + } + + int count(const K &key) const + { + int hash = do_hash(key); + int i = do_lookup(key, hash); + return i < 0 ? 0 : 1; + } + + int count(const K &key, const_iterator it) const + { + int hash = do_hash(key); + int i = do_lookup(key, hash); + return i < 0 || i > it.index ? 0 : 1; + } + + iterator find(const K &key) + { + int hash = do_hash(key); + int i = do_lookup(key, hash); + if (i < 0) + return end(); + return iterator(this, i); + } + + const_iterator find(const K &key) const + { + int hash = do_hash(key); + int i = do_lookup(key, hash); + if (i < 0) + return end(); + return const_iterator(this, i); + } + + T& at(const K &key) + { + int hash = do_hash(key); + int i = do_lookup(key, hash); + if (i < 0) + throw std::out_of_range("dict::at()"); + return entries[i].udata.second; + } + + const T& at(const K &key) const + { + int hash = do_hash(key); + int i = do_lookup(key, hash); + if (i < 0) + throw std::out_of_range("dict::at()"); + return entries[i].udata.second; + } + + const T& at(const K &key, const T &defval) const + { + int hash = do_hash(key); + int i = do_lookup(key, hash); + if (i < 0) + return defval; + return entries[i].udata.second; + } + + T& operator[](const K &key) + { + int hash = do_hash(key); + int i = do_lookup(key, hash); + if (i < 0) + i = do_insert(std::pair(key, T()), hash); + return entries[i].udata.second; + } + + template> + void sort(Compare comp = Compare()) + { + std::sort(entries.begin(), entries.end(), [comp](const entry_t &a, const entry_t &b){ return comp(b.udata.first, a.udata.first); }); + do_rehash(); + } + + void swap(dict &other) + { + hashtable.swap(other.hashtable); + entries.swap(other.entries); + } + + bool operator==(const dict &other) const { + if (size() != other.size()) + return false; + for (auto &it : entries) { + auto oit = other.find(it.udata.first); + if (oit == other.end() || !(oit->second == it.udata.second)) + return false; + } + return true; + } + + bool operator!=(const dict &other) const { + return !operator==(other); + } + + unsigned int hash() const { + unsigned int h = mkhash_init; + for (auto &entry : entries) { + h ^= hash_ops::hash(entry.udata.first); + h ^= hash_ops::hash(entry.udata.second); + } + return h; + } + + void reserve(size_t n) { entries.reserve(n); } + size_t size() const { return entries.size(); } + bool empty() const { return entries.empty(); } + void clear() { hashtable.clear(); entries.clear(); } + + iterator begin() { return iterator(this, int(entries.size())-1); } + iterator element(int n) { return iterator(this, int(entries.size())-1-n); } + iterator end() { return iterator(nullptr, -1); } + + const_iterator begin() const { return const_iterator(this, int(entries.size())-1); } + const_iterator element(int n) const { return const_iterator(this, int(entries.size())-1-n); } + const_iterator end() const { return const_iterator(nullptr, -1); } +}; + +template +class pool +{ + template friend class idict; + +protected: + struct entry_t + { + K udata; + int next; + + entry_t() { } + entry_t(const K &udata, int next) : udata(udata), next(next) { } + entry_t(K &&udata, int next) : udata(std::move(udata)), next(next) { } + }; + + std::vector hashtable; + std::vector entries; + OPS ops; + +#ifdef NDEBUG + static inline void do_assert(bool) { } +#else + static inline void do_assert(bool cond) { + if (!cond) throw std::runtime_error("pool<> assert failed."); + } +#endif + + int do_hash(const K &key) const + { + unsigned int hash = 0; + if (!hashtable.empty()) + hash = ops.hash(key) % (unsigned int)(hashtable.size()); + return hash; + } + + void do_rehash() + { + hashtable.clear(); + hashtable.resize(hashtable_size(entries.capacity() * hashtable_size_factor), -1); + + for (int i = 0; i < int(entries.size()); i++) { + do_assert(-1 <= entries[i].next && entries[i].next < int(entries.size())); + int hash = do_hash(entries[i].udata); + entries[i].next = hashtable[hash]; + hashtable[hash] = i; + } + } + + int do_erase(int index, int hash) + { + do_assert(index < int(entries.size())); + if (hashtable.empty() || index < 0) + return 0; + + int k = hashtable[hash]; + if (k == index) { + hashtable[hash] = entries[index].next; + } else { + while (entries[k].next != index) { + k = entries[k].next; + do_assert(0 <= k && k < int(entries.size())); + } + entries[k].next = entries[index].next; + } + + int back_idx = entries.size()-1; + + if (index != back_idx) + { + int back_hash = do_hash(entries[back_idx].udata); + + k = hashtable[back_hash]; + if (k == back_idx) { + hashtable[back_hash] = index; + } else { + while (entries[k].next != back_idx) { + k = entries[k].next; + do_assert(0 <= k && k < int(entries.size())); + } + entries[k].next = index; + } + + entries[index] = std::move(entries[back_idx]); + } + + entries.pop_back(); + + if (entries.empty()) + hashtable.clear(); + + return 1; + } + + int do_lookup(const K &key, int &hash) const + { + if (hashtable.empty()) + return -1; + + if (entries.size() * hashtable_size_trigger > hashtable.size()) { + ((pool*)this)->do_rehash(); + hash = do_hash(key); + } + + int index = hashtable[hash]; + + while (index >= 0 && !ops.cmp(entries[index].udata, key)) { + index = entries[index].next; + do_assert(-1 <= index && index < int(entries.size())); + } + + return index; + } + + int do_insert(const K &value, int &hash) + { + if (hashtable.empty()) { + entries.emplace_back(value, -1); + do_rehash(); + hash = do_hash(value); + } else { + entries.emplace_back(value, hashtable[hash]); + hashtable[hash] = entries.size() - 1; + } + return entries.size() - 1; + } + + int do_insert(K &&rvalue, int &hash) + { + if (hashtable.empty()) { + entries.emplace_back(std::forward(rvalue), -1); + do_rehash(); + hash = do_hash(rvalue); + } else { + entries.emplace_back(std::forward(rvalue), hashtable[hash]); + hashtable[hash] = entries.size() - 1; + } + return entries.size() - 1; + } + +public: + class const_iterator : public std::iterator + { + friend class pool; + protected: + const pool *ptr; + int index; + const_iterator(const pool *ptr, int index) : ptr(ptr), index(index) { } + public: + const_iterator() { } + const_iterator operator++() { index--; return *this; } + bool operator==(const const_iterator &other) const { return index == other.index; } + bool operator!=(const const_iterator &other) const { return index != other.index; } + const K &operator*() const { return ptr->entries[index].udata; } + const K *operator->() const { return &ptr->entries[index].udata; } + }; + + class iterator : public std::iterator + { + friend class pool; + protected: + pool *ptr; + int index; + iterator(pool *ptr, int index) : ptr(ptr), index(index) { } + public: + iterator() { } + iterator operator++() { index--; return *this; } + bool operator==(const iterator &other) const { return index == other.index; } + bool operator!=(const iterator &other) const { return index != other.index; } + K &operator*() { return ptr->entries[index].udata; } + K *operator->() { return &ptr->entries[index].udata; } + const K &operator*() const { return ptr->entries[index].udata; } + const K *operator->() const { return &ptr->entries[index].udata; } + operator const_iterator() const { return const_iterator(ptr, index); } + }; + + pool() + { + } + + pool(const pool &other) + { + entries = other.entries; + do_rehash(); + } + + pool(pool &&other) + { + swap(other); + } + + pool &operator=(const pool &other) { + entries = other.entries; + do_rehash(); + return *this; + } + + pool &operator=(pool &&other) { + clear(); + swap(other); + return *this; + } + + pool(const std::initializer_list &list) + { + for (auto &it : list) + insert(it); + } + + template + pool(InputIterator first, InputIterator last) + { + insert(first, last); + } + + template + void insert(InputIterator first, InputIterator last) + { + for (; first != last; ++first) + insert(*first); + } + + std::pair insert(const K &value) + { + int hash = do_hash(value); + int i = do_lookup(value, hash); + if (i >= 0) + return std::pair(iterator(this, i), false); + i = do_insert(value, hash); + return std::pair(iterator(this, i), true); + } + + std::pair insert(K &&rvalue) + { + int hash = do_hash(rvalue); + int i = do_lookup(rvalue, hash); + if (i >= 0) + return std::pair(iterator(this, i), false); + i = do_insert(std::forward(rvalue), hash); + return std::pair(iterator(this, i), true); + } + + template + std::pair emplace(Args&&... args) + { + return insert(K(std::forward(args)...)); + } + + int erase(const K &key) + { + int hash = do_hash(key); + int index = do_lookup(key, hash); + return do_erase(index, hash); + } + + iterator erase(iterator it) + { + int hash = do_hash(*it); + do_erase(it.index, hash); + return ++it; + } + + int count(const K &key) const + { + int hash = do_hash(key); + int i = do_lookup(key, hash); + return i < 0 ? 0 : 1; + } + + int count(const K &key, const_iterator it) const + { + int hash = do_hash(key); + int i = do_lookup(key, hash); + return i < 0 || i > it.index ? 0 : 1; + } + + iterator find(const K &key) + { + int hash = do_hash(key); + int i = do_lookup(key, hash); + if (i < 0) + return end(); + return iterator(this, i); + } + + const_iterator find(const K &key) const + { + int hash = do_hash(key); + int i = do_lookup(key, hash); + if (i < 0) + return end(); + return const_iterator(this, i); + } + + bool operator[](const K &key) + { + int hash = do_hash(key); + int i = do_lookup(key, hash); + return i >= 0; + } + + template> + void sort(Compare comp = Compare()) + { + std::sort(entries.begin(), entries.end(), [comp](const entry_t &a, const entry_t &b){ return comp(b.udata, a.udata); }); + do_rehash(); + } + + K pop() + { + iterator it = begin(); + K ret = *it; + erase(it); + return ret; + } + + void swap(pool &other) + { + hashtable.swap(other.hashtable); + entries.swap(other.entries); + } + + bool operator==(const pool &other) const { + if (size() != other.size()) + return false; + for (auto &it : entries) + if (!other.count(it.udata)) + return false; + return true; + } + + bool operator!=(const pool &other) const { + return !operator==(other); + } + + bool hash() const { + unsigned int hashval = mkhash_init; + for (auto &it : entries) + hashval ^= ops.hash(it.udata); + return hashval; + } + + void reserve(size_t n) { entries.reserve(n); } + size_t size() const { return entries.size(); } + bool empty() const { return entries.empty(); } + void clear() { hashtable.clear(); entries.clear(); } + + iterator begin() { return iterator(this, int(entries.size())-1); } + iterator element(int n) { return iterator(this, int(entries.size())-1-n); } + iterator end() { return iterator(nullptr, -1); } + + const_iterator begin() const { return const_iterator(this, int(entries.size())-1); } + const_iterator element(int n) const { return const_iterator(this, int(entries.size())-1-n); } + const_iterator end() const { return const_iterator(nullptr, -1); } +}; + +template +class idict +{ + pool database; + +public: + class const_iterator : public std::iterator + { + friend class idict; + protected: + const idict &container; + int index; + const_iterator(const idict &container, int index) : container(container), index(index) { } + public: + const_iterator() { } + const_iterator operator++() { index++; return *this; } + bool operator==(const const_iterator &other) const { return index == other.index; } + bool operator!=(const const_iterator &other) const { return index != other.index; } + const K &operator*() const { return container[index]; } + const K *operator->() const { return &container[index]; } + }; + + int operator()(const K &key) + { + int hash = database.do_hash(key); + int i = database.do_lookup(key, hash); + if (i < 0) + i = database.do_insert(key, hash); + return i + offset; + } + + int at(const K &key) const + { + int hash = database.do_hash(key); + int i = database.do_lookup(key, hash); + if (i < 0) + throw std::out_of_range("idict::at()"); + return i + offset; + } + + int at(const K &key, int defval) const + { + int hash = database.do_hash(key); + int i = database.do_lookup(key, hash); + if (i < 0) + return defval; + return i + offset; + } + + int count(const K &key) const + { + int hash = database.do_hash(key); + int i = database.do_lookup(key, hash); + return i < 0 ? 0 : 1; + } + + void expect(const K &key, int i) + { + int j = (*this)(key); + if (i != j) + throw std::out_of_range("idict::expect()"); + } + + const K &operator[](int index) const + { + return database.entries.at(index - offset).udata; + } + + void swap(idict &other) + { + database.swap(other.database); + } + + void reserve(size_t n) { database.reserve(n); } + size_t size() const { return database.size(); } + bool empty() const { return database.empty(); } + void clear() { database.clear(); } + + const_iterator begin() const { return const_iterator(*this, offset); } + const_iterator element(int n) const { return const_iterator(*this, n); } + const_iterator end() const { return const_iterator(*this, offset + size()); } +}; + +template +class mfp +{ + mutable idict database; + mutable std::vector parents; + +public: + typedef typename idict::const_iterator const_iterator; + + int operator()(const K &key) const + { + int i = database(key); + parents.resize(database.size(), -1); + return i; + } + + const K &operator[](int index) const + { + return database[index]; + } + + int ifind(int i) const + { + int p = i, k = i; + + while (parents[p] != -1) + p = parents[p]; + + while (k != p) { + int next_k = parents[k]; + parents[k] = p; + k = next_k; + } + + return p; + } + + void imerge(int i, int j) + { + i = ifind(i); + j = ifind(j); + + if (i != j) + parents[i] = j; + } + + void ipromote(int i) + { + int k = i; + + while (k != -1) { + int next_k = parents[k]; + parents[k] = i; + k = next_k; + } + + parents[i] = -1; + } + + int lookup(const K &a) const + { + return ifind((*this)(a)); + } + + const K &find(const K &a) const + { + int i = database.at(a, -1); + if (i < 0) + return a; + return (*this)[ifind(i)]; + } + + void merge(const K &a, const K &b) + { + imerge((*this)(a), (*this)(b)); + } + + void promote(const K &a) + { + int i = database.at(a, -1); + if (i >= 0) + ipromote(i); + } + + void swap(mfp &other) + { + database.swap(other.database); + parents.swap(other.parents); + } + + void reserve(size_t n) { database.reserve(n); } + size_t size() const { return database.size(); } + bool empty() const { return database.empty(); } + void clear() { database.clear(); parents.clear(); } + + const_iterator begin() const { return database.begin(); } + const_iterator element(int n) const { return database.element(n); } + const_iterator end() const { return database.end(); } +}; + +} /* namespace hashlib */ + +#endif diff --git a/resources/netlist/resources/kernel/share/include/kernel/log.h b/resources/netlist/resources/kernel/share/include/kernel/log.h new file mode 100644 index 0000000..3bc9fd9 --- /dev/null +++ b/resources/netlist/resources/kernel/share/include/kernel/log.h @@ -0,0 +1,467 @@ +/* + * yosys -- Yosys Open SYnthesis Suite + * + * Copyright (C) 2012 Claire Xenia Wolf + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + */ + +#include "kernel/yosys.h" + +#ifndef LOG_H +#define LOG_H + +#include + +// In the libstdc++ headers that are provided by GCC 4.8, std::regex is not +// working correctly. In order to make features using regular expressions +// work, a replacement regex library is used. Just checking for GCC version +// is not enough though, because at least on RHEL7/CentOS7 even when compiling +// with Clang instead of GCC, the GCC 4.8 headers are still used for std::regex. +// We have to check the version of the libstdc++ headers specifically, not the +// compiler version. GCC headers of libstdc++ before version 3.4 define +// __GLIBCPP__, later versions define __GLIBCXX__. GCC 7 and newer additionaly +// define _GLIBCXX_RELEASE with a version number. +// Include limits std C++ header, so we get the version macros defined: +#if defined(__cplusplus) +# include +#endif +// Check if libstdc++ is from GCC +#if defined(__GLIBCPP__) || defined(__GLIBCXX__) +// Check if version could be 4.8 or lower (this also matches for some 4.9 and +// 5.0 releases). See: +// https://gcc.gnu.org/onlinedocs/libstdc++/manual/abi.html#abi.versioning +# if !defined(_GLIBCXX_RELEASE) && (defined(__GLIBCPP__) || __GLIBCXX__ <= 20150623) +# define YS_HAS_BAD_STD_REGEX +# endif +#endif +#if defined(YS_HAS_BAD_STD_REGEX) + #include + #define YS_REGEX_TYPE boost::xpressive::sregex + #define YS_REGEX_MATCH_TYPE boost::xpressive::smatch + #define YS_REGEX_NS boost::xpressive + #define YS_REGEX_COMPILE(param) boost::xpressive::sregex::compile(param, \ + boost::xpressive::regex_constants::nosubs | \ + boost::xpressive::regex_constants::optimize) + #define YS_REGEX_COMPILE_WITH_SUBS(param) boost::xpressive::sregex::compile(param, \ + boost::xpressive::regex_constants::optimize) +# else + #include + #define YS_REGEX_TYPE std::regex + #define YS_REGEX_MATCH_TYPE std::smatch + #define YS_REGEX_NS std + #define YS_REGEX_COMPILE(param) std::regex(param, \ + std::regex_constants::nosubs | \ + std::regex_constants::optimize | \ + std::regex_constants::egrep) + #define YS_REGEX_COMPILE_WITH_SUBS(param) std::regex(param, \ + std::regex_constants::optimize | \ + std::regex_constants::egrep) +#endif + +#if defined(_WIN32) +# include +#else +# include +# include +# if defined(__unix__) || (defined(__APPLE__) && defined(__MACH__)) +# include +# endif +#endif + +#if defined(_MSC_VER) +// At least this is not in MSVC++ 2013. +# define __PRETTY_FUNCTION__ __FUNCTION__ +#endif + +// from libs/sha1/sha1.h +class SHA1; + +YOSYS_NAMESPACE_BEGIN + +#define S__LINE__sub2(x) #x +#define S__LINE__sub1(x) S__LINE__sub2(x) +#define S__LINE__ S__LINE__sub1(__LINE__) + +// YS_DEBUGTRAP is a macro that is functionally equivalent to a breakpoint +// if the platform provides such functionality, and does nothing otherwise. +// If no debugger is attached, it starts a just-in-time debugger if available, +// and crashes the process otherwise. +#if defined(_WIN32) +# define YS_DEBUGTRAP __debugbreak() +#else +# ifndef __has_builtin +// __has_builtin is a GCC/Clang extension; on a different compiler (or old enough GCC/Clang) +// that does not have it, using __has_builtin(...) is a syntax error. +# define __has_builtin(x) 0 +# endif +# if __has_builtin(__builtin_debugtrap) +# define YS_DEBUGTRAP __builtin_debugtrap() +# elif defined(__unix__) || (defined(__APPLE__) && defined(__MACH__)) +# define YS_DEBUGTRAP raise(SIGTRAP) +# else +# define YS_DEBUGTRAP do {} while(0) +# endif +#endif + +// YS_DEBUGTRAP_IF_DEBUGGING is a macro that is functionally equivalent to a breakpoint +// if a debugger is attached, and does nothing otherwise. +#if defined(_WIN32) +# define YS_DEBUGTRAP_IF_DEBUGGING do { if (IsDebuggerPresent()) DebugBreak(); } while(0) +# elif defined(__unix__) || (defined(__APPLE__) && defined(__MACH__)) +// There is no reliable (or portable) *nix equivalent of IsDebuggerPresent(). However, +// debuggers will stop when SIGTRAP is raised, even if the action is set to ignore. +# define YS_DEBUGTRAP_IF_DEBUGGING do { \ + auto old = signal(SIGTRAP, SIG_IGN); raise(SIGTRAP); signal(SIGTRAP, old); \ + } while(0) +#else +# define YS_DEBUGTRAP_IF_DEBUGGING do {} while(0) +#endif + +struct log_cmd_error_exception { }; + +extern std::vector log_files; +extern std::vector log_streams; +extern std::map> log_hdump; +extern std::vector log_warn_regexes, log_nowarn_regexes, log_werror_regexes; +extern std::set log_warnings, log_experimentals, log_experimentals_ignored; +extern int log_warnings_count; +extern int log_warnings_count_noexpect; +extern bool log_expect_no_warnings; +extern bool log_hdump_all; +extern FILE *log_errfile; +extern SHA1 *log_hasher; + +extern bool log_time; +extern bool log_error_stderr; +extern bool log_cmd_error_throw; +extern bool log_quiet_warnings; +extern int log_verbose_level; +extern string log_last_error; +extern void (*log_error_atexit)(); + +extern int log_make_debug; +extern int log_force_debug; +extern int log_debug_suppressed; + +void logv(const char *format, va_list ap); +void logv_header(RTLIL::Design *design, const char *format, va_list ap); +void logv_warning(const char *format, va_list ap); +void logv_warning_noprefix(const char *format, va_list ap); +[[noreturn]] void logv_error(const char *format, va_list ap); + +void log(const char *format, ...) YS_ATTRIBUTE(format(printf, 1, 2)); +void log_header(RTLIL::Design *design, const char *format, ...) YS_ATTRIBUTE(format(printf, 2, 3)); +void log_warning(const char *format, ...) YS_ATTRIBUTE(format(printf, 1, 2)); +void log_experimental(const char *format, ...) YS_ATTRIBUTE(format(printf, 1, 2)); + +// Log with filename to report a problem in a source file. +void log_file_warning(const std::string &filename, int lineno, const char *format, ...) YS_ATTRIBUTE(format(printf, 3, 4)); +void log_file_info(const std::string &filename, int lineno, const char *format, ...) YS_ATTRIBUTE(format(printf, 3, 4)); + +void log_warning_noprefix(const char *format, ...) YS_ATTRIBUTE(format(printf, 1, 2)); +[[noreturn]] void log_error(const char *format, ...) YS_ATTRIBUTE(format(printf, 1, 2)); +[[noreturn]] void log_file_error(const string &filename, int lineno, const char *format, ...) YS_ATTRIBUTE(format(printf, 3, 4)); +[[noreturn]] void log_cmd_error(const char *format, ...) YS_ATTRIBUTE(format(printf, 1, 2)); + +#ifndef NDEBUG +static inline bool ys_debug(int n = 0) { if (log_force_debug) return true; log_debug_suppressed += n; return false; } +#else +static inline bool ys_debug(int = 0) { return false; } +#endif +# define log_debug(...) do { if (ys_debug(1)) log(__VA_ARGS__); } while (0) + +static inline void log_suppressed() { + if (log_debug_suppressed && !log_make_debug) { + log("\n", log_debug_suppressed); + log_debug_suppressed = 0; + } +} + +struct LogMakeDebugHdl { + bool status = false; + LogMakeDebugHdl(bool start_on = false) { + if (start_on) + on(); + } + ~LogMakeDebugHdl() { + off(); + } + void on() { + if (status) return; + status=true; + log_make_debug++; + } + void off_silent() { + if (!status) return; + status=false; + log_make_debug--; + } + void off() { + off_silent(); + } +}; + +void log_spacer(); +void log_push(); +void log_pop(); + +void log_backtrace(const char *prefix, int levels); +void log_reset_stack(); +void log_flush(); + +struct LogExpectedItem +{ + LogExpectedItem(const YS_REGEX_TYPE &pat, int expected) : + pattern(pat), expected_count(expected), current_count(0) {} + LogExpectedItem() : expected_count(0), current_count(0) {} + + YS_REGEX_TYPE pattern; + int expected_count; + int current_count; +}; + +extern dict log_expect_log, log_expect_warning, log_expect_error; +void log_check_expected(); + +const char *log_signal(const RTLIL::SigSpec &sig, bool autoint = true); +const char *log_const(const RTLIL::Const &value, bool autoint = true); +const char *log_id(const RTLIL::IdString &id); + +template static inline const char *log_id(T *obj, const char *nullstr = nullptr) { + if (nullstr && obj == nullptr) + return nullstr; + return log_id(obj->name); +} + +void log_module(RTLIL::Module *module, std::string indent = ""); +void log_cell(RTLIL::Cell *cell, std::string indent = ""); +void log_wire(RTLIL::Wire *wire, std::string indent = ""); + +#ifndef NDEBUG +static inline void log_assert_worker(bool cond, const char *expr, const char *file, int line) { + if (!cond) log_error("Assert `%s' failed in %s:%d.\n", expr, file, line); +} +# define log_assert(_assert_expr_) YOSYS_NAMESPACE_PREFIX log_assert_worker(_assert_expr_, #_assert_expr_, __FILE__, __LINE__) +#else +# define log_assert(_assert_expr_) do { if (0) { (void)(_assert_expr_); } } while(0) +#endif + +#define log_abort() YOSYS_NAMESPACE_PREFIX log_error("Abort in %s:%d.\n", __FILE__, __LINE__) +#define log_ping() YOSYS_NAMESPACE_PREFIX log("-- %s:%d %s --\n", __FILE__, __LINE__, __PRETTY_FUNCTION__) + + +// --------------------------------------------------- +// This is the magic behind the code coverage counters +// --------------------------------------------------- + +#if defined(YOSYS_ENABLE_COVER) && (defined(__linux__) || defined(__FreeBSD__)) + +#define cover(_id) do { \ + static CoverData __d __attribute__((section("yosys_cover_list"), aligned(1), used)) = { __FILE__, __FUNCTION__, _id, __LINE__, 0 }; \ + __d.counter++; \ +} while (0) + +struct CoverData { + const char *file, *func, *id; + int line, counter; +} YS_ATTRIBUTE(packed); + +// this two symbols are created by the linker for the "yosys_cover_list" ELF section +extern "C" struct CoverData __start_yosys_cover_list[]; +extern "C" struct CoverData __stop_yosys_cover_list[]; + +extern dict> extra_coverage_data; + +void cover_extra(std::string parent, std::string id, bool increment = true); +dict> get_coverage_data(); + +#define cover_list(_id, ...) do { cover(_id); \ + std::string r = cover_list_worker(_id, __VA_ARGS__); \ + log_assert(r.empty()); \ +} while (0) + +static inline std::string cover_list_worker(std::string, std::string last) { + return last; +} + +template +std::string cover_list_worker(std::string prefix, std::string first, T... rest) { + std::string selected = cover_list_worker(prefix, rest...); + cover_extra(prefix, prefix + "." + first, first == selected); + return first == selected ? "" : selected; +} + +#else +# define cover(...) do { } while (0) +# define cover_list(...) do { } while (0) +#endif + + +// ------------------------------------------------------------ +// everything below this line are utilities for troubleshooting +// ------------------------------------------------------------ + +// simple timer for performance measurements +// toggle the '#if 1' to get a baseline for the performance penalty added by the measurement +struct PerformanceTimer +{ +#if 1 + int64_t total_ns; + + PerformanceTimer() { + total_ns = 0; + } + + static int64_t query() { +# ifdef _WIN32 + return 0; +# elif defined(RUSAGE_SELF) + struct rusage rusage; + int64_t t = 0; + for (int who : {RUSAGE_SELF, RUSAGE_CHILDREN}) { + if (getrusage(who, &rusage) == -1) { + log_cmd_error("getrusage failed!\n"); + log_abort(); + } + t += 1000000000ULL * (int64_t) rusage.ru_utime.tv_sec + (int64_t) rusage.ru_utime.tv_usec * 1000ULL; + t += 1000000000ULL * (int64_t) rusage.ru_stime.tv_sec + (int64_t) rusage.ru_stime.tv_usec * 1000ULL; + } + return t; +# else +# error "Don't know how to measure per-process CPU time. Need alternative method (times()/clocks()/gettimeofday()?)." +# endif + } + + void reset() { + total_ns = 0; + } + + void begin() { + total_ns -= query(); + } + + void end() { + total_ns += query(); + } + + float sec() const { + return total_ns * 1e-9f; + } +#else + static int64_t query() { return 0; } + void reset() { } + void begin() { } + void end() { } + float sec() const { return 0; } +#endif +}; + +// simple API for quickly dumping values when debugging + +static inline void log_dump_val_worker(short v) { log("%d", v); } +static inline void log_dump_val_worker(unsigned short v) { log("%u", v); } +static inline void log_dump_val_worker(int v) { log("%d", v); } +static inline void log_dump_val_worker(unsigned int v) { log("%u", v); } +static inline void log_dump_val_worker(long int v) { log("%ld", v); } +static inline void log_dump_val_worker(unsigned long int v) { log("%lu", v); } +#ifndef _WIN32 +static inline void log_dump_val_worker(long long int v) { log("%lld", v); } +static inline void log_dump_val_worker(unsigned long long int v) { log("%lld", v); } +#endif +static inline void log_dump_val_worker(char c) { log(c >= 32 && c < 127 ? "'%c'" : "'\\x%02x'", c); } +static inline void log_dump_val_worker(unsigned char c) { log(c >= 32 && c < 127 ? "'%c'" : "'\\x%02x'", c); } +static inline void log_dump_val_worker(bool v) { log("%s", v ? "true" : "false"); } +static inline void log_dump_val_worker(double v) { log("%f", v); } +static inline void log_dump_val_worker(char *v) { log("%s", v); } +static inline void log_dump_val_worker(const char *v) { log("%s", v); } +static inline void log_dump_val_worker(std::string v) { log("%s", v.c_str()); } +static inline void log_dump_val_worker(PerformanceTimer p) { log("%f seconds", p.sec()); } +static inline void log_dump_args_worker(const char *p) { log_assert(*p == 0); } +void log_dump_val_worker(RTLIL::IdString v); +void log_dump_val_worker(RTLIL::SigSpec v); +void log_dump_val_worker(RTLIL::State v); + +template +static inline void log_dump_val_worker(dict &v) { + log("{"); + bool first = true; + for (auto &it : v) { + log(first ? " " : ", "); + log_dump_val_worker(it.first); + log(": "); + log_dump_val_worker(it.second); + first = false; + } + log(" }"); +} + +template +static inline void log_dump_val_worker(pool &v) { + log("{"); + bool first = true; + for (auto &it : v) { + log(first ? " " : ", "); + log_dump_val_worker(it); + first = false; + } + log(" }"); +} + +template +static inline void log_dump_val_worker(T *ptr) { log("%p", ptr); } + +template +void log_dump_args_worker(const char *p, T first, Args ... args) +{ + int next_p_state = 0; + const char *next_p = p; + while (*next_p && (next_p_state != 0 || *next_p != ',')) { + if (*next_p == '"') + do { + next_p++; + while (*next_p == '\\' && *(next_p + 1)) + next_p += 2; + } while (*next_p && *next_p != '"'); + if (*next_p == '\'') { + next_p++; + if (*next_p == '\\') + next_p++; + if (*next_p) + next_p++; + } + if (*next_p == '(' || *next_p == '[' || *next_p == '{') + next_p_state++; + if ((*next_p == ')' || *next_p == ']' || *next_p == '}') && next_p_state > 0) + next_p_state--; + next_p++; + } + log("\n\t%.*s => ", int(next_p - p), p); + if (*next_p == ',') + next_p++; + while (*next_p == ' ' || *next_p == '\t' || *next_p == '\r' || *next_p == '\n') + next_p++; + log_dump_val_worker(first); + log_dump_args_worker(next_p, args ...); +} + +#define log_dump(...) do { \ + log("DEBUG DUMP IN %s AT %s:%d:", __PRETTY_FUNCTION__, __FILE__, __LINE__); \ + log_dump_args_worker(#__VA_ARGS__, __VA_ARGS__); \ + log("\n"); \ +} while (0) + +YOSYS_NAMESPACE_END + +#endif diff --git a/resources/netlist/resources/kernel/share/include/kernel/macc.h b/resources/netlist/resources/kernel/share/include/kernel/macc.h new file mode 100644 index 0000000..e4e1ebf --- /dev/null +++ b/resources/netlist/resources/kernel/share/include/kernel/macc.h @@ -0,0 +1,240 @@ +/* + * yosys -- Yosys Open SYnthesis Suite + * + * Copyright (C) 2012 Claire Xenia Wolf + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + */ + +#ifndef MACC_H +#define MACC_H + +#include "kernel/yosys.h" + +YOSYS_NAMESPACE_BEGIN + +struct Macc +{ + struct port_t { + RTLIL::SigSpec in_a, in_b; + bool is_signed, do_subtract; + }; + + std::vector ports; + RTLIL::SigSpec bit_ports; + + void optimize(int width) + { + std::vector new_ports; + RTLIL::SigSpec new_bit_ports; + RTLIL::Const off(0, width); + + for (auto &port : ports) + { + if (GetSize(port.in_a) == 0 && GetSize(port.in_b) == 0) + continue; + + if (GetSize(port.in_a) < GetSize(port.in_b)) + std::swap(port.in_a, port.in_b); + + if (GetSize(port.in_a) == 1 && GetSize(port.in_b) == 0 && !port.is_signed && !port.do_subtract) { + bit_ports.append(port.in_a); + continue; + } + + if (port.in_a.is_fully_const() && port.in_b.is_fully_const()) { + RTLIL::Const v = port.in_a.as_const(); + if (GetSize(port.in_b)) + v = const_mul(v, port.in_b.as_const(), port.is_signed, port.is_signed, width); + if (port.do_subtract) + off = const_sub(off, v, port.is_signed, port.is_signed, width); + else + off = const_add(off, v, port.is_signed, port.is_signed, width); + continue; + } + + if (port.is_signed) { + while (GetSize(port.in_a) > 1 && port.in_a[GetSize(port.in_a)-1] == port.in_a[GetSize(port.in_a)-2]) + port.in_a.remove(GetSize(port.in_a)-1); + while (GetSize(port.in_b) > 1 && port.in_b[GetSize(port.in_b)-1] == port.in_b[GetSize(port.in_b)-2]) + port.in_b.remove(GetSize(port.in_b)-1); + } else { + while (GetSize(port.in_a) > 1 && port.in_a[GetSize(port.in_a)-1] == State::S0) + port.in_a.remove(GetSize(port.in_a)-1); + while (GetSize(port.in_b) > 1 && port.in_b[GetSize(port.in_b)-1] == State::S0) + port.in_b.remove(GetSize(port.in_b)-1); + } + + new_ports.push_back(port); + } + + for (auto &bit : bit_ports) + if (bit == State::S1) + off = const_add(off, RTLIL::Const(1, width), false, false, width); + else if (bit != State::S0) + new_bit_ports.append(bit); + + if (off.as_bool()) { + port_t port; + port.in_a = off; + port.is_signed = false; + port.do_subtract = false; + new_ports.push_back(port); + } + + new_ports.swap(ports); + bit_ports = new_bit_ports; + } + + void from_cell(RTLIL::Cell *cell) + { + RTLIL::SigSpec port_a = cell->getPort(ID::A); + + ports.clear(); + bit_ports = cell->getPort(ID::B); + + std::vector config_bits = cell->getParam(ID::CONFIG).bits; + int config_cursor = 0; + + int config_width = cell->getParam(ID::CONFIG_WIDTH).as_int(); + log_assert(GetSize(config_bits) >= config_width); + + int num_bits = 0; + if (config_bits[config_cursor++] == State::S1) num_bits |= 1; + if (config_bits[config_cursor++] == State::S1) num_bits |= 2; + if (config_bits[config_cursor++] == State::S1) num_bits |= 4; + if (config_bits[config_cursor++] == State::S1) num_bits |= 8; + + int port_a_cursor = 0; + while (port_a_cursor < GetSize(port_a)) + { + log_assert(config_cursor + 2 + 2*num_bits <= config_width); + + port_t this_port; + this_port.is_signed = config_bits[config_cursor++] == State::S1; + this_port.do_subtract = config_bits[config_cursor++] == State::S1; + + int size_a = 0; + for (int i = 0; i < num_bits; i++) + if (config_bits[config_cursor++] == State::S1) + size_a |= 1 << i; + + this_port.in_a = port_a.extract(port_a_cursor, size_a); + port_a_cursor += size_a; + + int size_b = 0; + for (int i = 0; i < num_bits; i++) + if (config_bits[config_cursor++] == State::S1) + size_b |= 1 << i; + + this_port.in_b = port_a.extract(port_a_cursor, size_b); + port_a_cursor += size_b; + + if (size_a || size_b) + ports.push_back(this_port); + } + + log_assert(config_cursor == config_width); + log_assert(port_a_cursor == GetSize(port_a)); + } + + void to_cell(RTLIL::Cell *cell) const + { + RTLIL::SigSpec port_a; + std::vector config_bits; + int max_size = 0, num_bits = 0; + + for (auto &port : ports) { + max_size = max(max_size, GetSize(port.in_a)); + max_size = max(max_size, GetSize(port.in_b)); + } + + while (max_size) + num_bits++, max_size /= 2; + + log_assert(num_bits < 16); + config_bits.push_back(num_bits & 1 ? State::S1 : State::S0); + config_bits.push_back(num_bits & 2 ? State::S1 : State::S0); + config_bits.push_back(num_bits & 4 ? State::S1 : State::S0); + config_bits.push_back(num_bits & 8 ? State::S1 : State::S0); + + for (auto &port : ports) + { + if (GetSize(port.in_a) == 0) + continue; + + config_bits.push_back(port.is_signed ? State::S1 : State::S0); + config_bits.push_back(port.do_subtract ? State::S1 : State::S0); + + int size_a = GetSize(port.in_a); + for (int i = 0; i < num_bits; i++) + config_bits.push_back(size_a & (1 << i) ? State::S1 : State::S0); + + int size_b = GetSize(port.in_b); + for (int i = 0; i < num_bits; i++) + config_bits.push_back(size_b & (1 << i) ? State::S1 : State::S0); + + port_a.append(port.in_a); + port_a.append(port.in_b); + } + + cell->setPort(ID::A, port_a); + cell->setPort(ID::B, bit_ports); + cell->setParam(ID::CONFIG, config_bits); + cell->setParam(ID::CONFIG_WIDTH, GetSize(config_bits)); + cell->setParam(ID::A_WIDTH, GetSize(port_a)); + cell->setParam(ID::B_WIDTH, GetSize(bit_ports)); + } + + bool eval(RTLIL::Const &result) const + { + for (auto &bit : result.bits) + bit = State::S0; + + for (auto &port : ports) + { + if (!port.in_a.is_fully_const() || !port.in_b.is_fully_const()) + return false; + + RTLIL::Const summand; + if (GetSize(port.in_b) == 0) + summand = const_pos(port.in_a.as_const(), port.in_b.as_const(), port.is_signed, port.is_signed, GetSize(result)); + else + summand = const_mul(port.in_a.as_const(), port.in_b.as_const(), port.is_signed, port.is_signed, GetSize(result)); + + if (port.do_subtract) + result = const_sub(result, summand, port.is_signed, port.is_signed, GetSize(result)); + else + result = const_add(result, summand, port.is_signed, port.is_signed, GetSize(result)); + } + + for (auto bit : bit_ports) { + if (bit.wire) + return false; + result = const_add(result, bit.data, false, false, GetSize(result)); + } + + return true; + } + + Macc(RTLIL::Cell *cell = nullptr) + { + if (cell != nullptr) + from_cell(cell); + } +}; + +YOSYS_NAMESPACE_END + +#endif diff --git a/resources/netlist/resources/kernel/share/include/kernel/mem.h b/resources/netlist/resources/kernel/share/include/kernel/mem.h new file mode 100644 index 0000000..8c48427 --- /dev/null +++ b/resources/netlist/resources/kernel/share/include/kernel/mem.h @@ -0,0 +1,229 @@ +/* + * yosys -- Yosys Open SYnthesis Suite + * + * Copyright (C) 2020 Marcelina Kościelnicka + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + */ + +#ifndef MEM_H +#define MEM_H + +#include "kernel/yosys.h" +#include "kernel/ffinit.h" + +YOSYS_NAMESPACE_BEGIN + +struct MemRd : RTLIL::AttrObject { + bool removed; + Cell *cell; + int wide_log2; + bool clk_enable, clk_polarity, ce_over_srst; + Const arst_value, srst_value, init_value; + // One bit for every write port, true iff simultanous read on this + // port and write on the other port will bypass the written data + // to this port's output (default behavior is to read old value). + // Can only be set for write ports that have the same clock domain. + std::vector transparency_mask; + // One bit for every write port, true iff simultanous read on this + // port and write on the other port will return an all-X (don't care) + // value. Mutually exclusive with transparency_mask. + // Can only be set for write ports that have the same clock domain. + // For optimization purposes, this will also be set if we can + // determine that the two ports can never be active simultanously + // (making the above vacuously true). + std::vector collision_x_mask; + SigSpec clk, en, arst, srst, addr, data; + + MemRd() : removed(false), cell(nullptr), wide_log2(0), clk_enable(false), clk_polarity(true), ce_over_srst(false), clk(State::Sx), en(State::S1), arst(State::S0), srst(State::S0) {} + + // Returns the address of given subword index accessed by this port. + SigSpec sub_addr(int sub) { + SigSpec res = addr; + for (int i = 0; i < wide_log2; i++) + res[i] = State(sub >> i & 1); + return res; + } +}; + +struct MemWr : RTLIL::AttrObject { + bool removed; + Cell *cell; + int wide_log2; + bool clk_enable, clk_polarity; + std::vector priority_mask; + SigSpec clk, en, addr, data; + + MemWr() : removed(false), cell(nullptr) {} + + // Returns the address of given subword index accessed by this port. + SigSpec sub_addr(int sub) { + SigSpec res = addr; + for (int i = 0; i < wide_log2; i++) + res[i] = State(sub >> i & 1); + return res; + } + + std::pair> compress_en(); + SigSpec decompress_en(const std::vector &swizzle, SigSpec sig); +}; + +struct MemInit : RTLIL::AttrObject { + bool removed; + Cell *cell; + Const addr; + Const data; + Const en; + MemInit() : removed(false), cell(nullptr) {} +}; + +struct Mem : RTLIL::AttrObject { + Module *module; + IdString memid; + bool packed; + RTLIL::Memory *mem; + Cell *cell; + int width, start_offset, size; + std::vector inits; + std::vector rd_ports; + std::vector wr_ports; + + // Removes this memory from the module. The data in helper structures + // is unaffected except for the cell/mem fields. + void remove(); + + // Commits all changes in helper structures into the module — ports and + // inits marked as removed are actually removed, new ports/inits create + // new cells, modified port/inits are commited into their existing + // cells. Note that this reindexes the ports and inits array (actually + // removing the ports/inits marked as removed). + void emit(); + + // Marks all inits as removed. + void clear_inits(); + + // Coalesces inits: whenever two inits have overlapping or touching + // address ranges, they are combined into one, with the higher-priority + // one's data overwriting the other. Running this results in + // an inits list equivalent to the original, in which all entries + // cover disjoint (and non-touching) address ranges, and all enable + // masks are all-1. + void coalesce_inits(); + + // Checks consistency of this memory and all its ports/inits, using + // log_assert. + void check(); + + // Gathers all initialization data into a single big const covering + // the whole memory. For all non-initialized bits, Sx will be returned. + Const get_init_data() const; + + // Constructs and returns the helper structures for all memories + // in a module. + static std::vector get_all_memories(Module *module); + + // Constructs and returns the helper structures for all selected + // memories in a module. + static std::vector get_selected_memories(Module *module); + + // Converts a synchronous read port into an asynchronous one by + // extracting the data (or, in some rare cases, address) register + // into a separate cell, together with any soft-transparency + // logic necessary to preserve its semantics. Returns the created + // register cell, if any. Note that in some rare cases this function + // may succeed and perform a conversion without creating a new + // register — a nullptr result doesn't imply nothing was done. + Cell *extract_rdff(int idx, FfInitVals *initvals); + + // Splits all wide ports in this memory into equivalent narrow ones. + // This function performs no modifications at all to the actual + // netlist unless and until emit() is called. + void narrow(); + + // If write port idx2 currently has priority over write port idx1, + // inserts extra logic on idx1's enable signal to disable writes + // when idx2 is writing to the same address, then removes the priority + // from the priority mask. If there is a memory port that is + // transparent with idx1, but not with idx2, that port is converted + // to use soft transparency logic. + void emulate_priority(int idx1, int idx2, FfInitVals *initvals); + + // Creates soft-transparency logic on read port ridx, bypassing the + // data from write port widx. Should only be called when ridx is + // transparent wrt widx in the first place. Once we're done, the + // transparency_mask bit will be cleared, and the collision_x_mask + // bit will be set instead (since whatever value is read will be + // replaced by the soft transparency logic). + void emulate_transparency(int widx, int ridx, FfInitVals *initvals); + + // Prepares for merging write port idx2 into idx1 (where idx1 < idx2). + // Specifically, takes care of priority masks: any priority relations + // that idx2 had are replicated onto idx1, unless they conflict with + // priorities already present on idx1, in which case emulate_priority + // is called. Likewise, ensures transparency and undefined collision + // masks of all read ports have the same values for both ports, + // calling emulate_transparency if necessary. + void prepare_wr_merge(int idx1, int idx2, FfInitVals *initvals); + + // Prepares for merging read port idx2 into idx1. + // Specifically, makes sure the transparency and undefined collision + // masks of both ports are equal, by changing undefined behavior + // of one port to the other's defined behavior, or by calling + // emulate_transparency if necessary. + void prepare_rd_merge(int idx1, int idx2, FfInitVals *initvals); + + // Prepares the memory for widening a port to a given width. This + // involves ensuring that start_offset and size are aligned to the + // target width. + void widen_prep(int wide_log2); + + // Widens a write port up to a given width. The newly port is + // equivalent to the original, made by replicating enable/data bits + // and masking enable bits with decoders on the low part of the + // original address. + void widen_wr_port(int idx, int wide_log2); + + // Emulates a sync read port's enable functionality in soft logic, + // changing the actual read port's enable to be always-on. + void emulate_rden(int idx, FfInitVals *initvals); + + // Emulates a sync read port's initial/reset value functionality in + // soft logic, removing it from the actual read port. + void emulate_reset(int idx, bool emu_init, bool emu_arst, bool emu_srst, FfInitVals *initvals); + + // Given a read port with ce_over_srst set, converts it to a port + // with ce_over_srst unset without changing its behavior by adding + // emulation logic. + void emulate_rd_ce_over_srst(int idx); + + // Given a read port with ce_over_srst unset, converts it to a port + // with ce_over_srst set without changing its behavior by adding + // emulation logic. + void emulate_rd_srst_over_ce(int idx); + + // Returns true iff emulate_read_first makes sense to call. + bool emulate_read_first_ok(); + + // Emulates all read-first read-write port relationships in terms of + // all-transparent ports, by delaying all write ports by one cycle. + // This can only be used when all read ports and all write ports are + // in the same clock domain. + void emulate_read_first(FfInitVals *initvals); + + Mem(Module *module, IdString memid, int width, int start_offset, int size) : module(module), memid(memid), packed(false), mem(nullptr), cell(nullptr), width(width), start_offset(start_offset), size(size) {} +}; + +YOSYS_NAMESPACE_END + +#endif diff --git a/resources/netlist/resources/kernel/share/include/kernel/modtools.h b/resources/netlist/resources/kernel/share/include/kernel/modtools.h new file mode 100644 index 0000000..4cbaf78 --- /dev/null +++ b/resources/netlist/resources/kernel/share/include/kernel/modtools.h @@ -0,0 +1,579 @@ +/* -*- c++ -*- + * yosys -- Yosys Open SYnthesis Suite + * + * Copyright (C) 2012 Claire Xenia Wolf + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + */ + +#ifndef MODTOOLS_H +#define MODTOOLS_H + +#include "kernel/yosys.h" +#include "kernel/sigtools.h" +#include "kernel/celltypes.h" + +YOSYS_NAMESPACE_BEGIN + +struct ModIndex : public RTLIL::Monitor +{ + struct PortInfo { + RTLIL::Cell* cell; + RTLIL::IdString port; + int offset; + + PortInfo() : cell(), port(), offset() { } + PortInfo(RTLIL::Cell* _c, RTLIL::IdString _p, int _o) : cell(_c), port(_p), offset(_o) { } + + bool operator<(const PortInfo &other) const { + if (cell != other.cell) + return cell < other.cell; + if (offset != other.offset) + return offset < other.offset; + return port < other.port; + } + + bool operator==(const PortInfo &other) const { + return cell == other.cell && port == other.port && offset == other.offset; + } + + unsigned int hash() const { + return mkhash_add(mkhash(cell->name.hash(), port.hash()), offset); + } + }; + + struct SigBitInfo + { + bool is_input, is_output; + pool ports; + + SigBitInfo() : is_input(false), is_output(false) { } + + bool operator==(const SigBitInfo &other) const { + return is_input == other.is_input && is_output == other.is_output && ports == other.ports; + } + + void merge(const SigBitInfo &other) + { + is_input = is_input || other.is_input; + is_output = is_output || other.is_output; + ports.insert(other.ports.begin(), other.ports.end()); + } + }; + + SigMap sigmap; + RTLIL::Module *module; + std::map database; + int auto_reload_counter; + bool auto_reload_module; + + void port_add(RTLIL::Cell *cell, RTLIL::IdString port, const RTLIL::SigSpec &sig) + { + for (int i = 0; i < GetSize(sig); i++) { + RTLIL::SigBit bit = sigmap(sig[i]); + if (bit.wire) + database[bit].ports.insert(PortInfo(cell, port, i)); + } + } + + void port_del(RTLIL::Cell *cell, RTLIL::IdString port, const RTLIL::SigSpec &sig) + { + for (int i = 0; i < GetSize(sig); i++) { + RTLIL::SigBit bit = sigmap(sig[i]); + if (bit.wire) + database[bit].ports.erase(PortInfo(cell, port, i)); + } + } + + const SigBitInfo &info(RTLIL::SigBit bit) + { + return database[sigmap(bit)]; + } + + void reload_module(bool reset_sigmap = true) + { + if (reset_sigmap) { + sigmap.clear(); + sigmap.set(module); + } + + database.clear(); + for (auto wire : module->wires()) + if (wire->port_input || wire->port_output) + for (int i = 0; i < GetSize(wire); i++) { + RTLIL::SigBit bit = sigmap(RTLIL::SigBit(wire, i)); + if (bit.wire && wire->port_input) + database[bit].is_input = true; + if (bit.wire && wire->port_output) + database[bit].is_output = true; + } + for (auto cell : module->cells()) + for (auto &conn : cell->connections()) + port_add(cell, conn.first, conn.second); + + if (auto_reload_module) { + if (++auto_reload_counter > 2) + log_warning("Auto-reload in ModIndex -- possible performance bug!\n"); + auto_reload_module = false; + } + } + + void check() + { +#ifndef NDEBUG + if (auto_reload_module) + return; + + for (auto it : database) + log_assert(it.first == sigmap(it.first)); + + auto database_bak = std::move(database); + reload_module(false); + + if (!(database == database_bak)) + { + for (auto &it : database_bak) + if (!database.count(it.first)) + log("ModuleIndex::check(): Only in database_bak, not database: %s\n", log_signal(it.first)); + + for (auto &it : database) + if (!database_bak.count(it.first)) + log("ModuleIndex::check(): Only in database, not database_bak: %s\n", log_signal(it.first)); + else if (!(it.second == database_bak.at(it.first))) + log("ModuleIndex::check(): Different content for database[%s].\n", log_signal(it.first)); + + log_assert(database == database_bak); + } +#endif + } + + void notify_connect(RTLIL::Cell *cell, const RTLIL::IdString &port, const RTLIL::SigSpec &old_sig, const RTLIL::SigSpec &sig) override + { + log_assert(module == cell->module); + + if (auto_reload_module) + return; + + port_del(cell, port, old_sig); + port_add(cell, port, sig); + } + + void notify_connect(RTLIL::Module *mod, const RTLIL::SigSig &sigsig) override + { + log_assert(module == mod); + + if (auto_reload_module) + return; + + for (int i = 0; i < GetSize(sigsig.first); i++) + { + RTLIL::SigBit lhs = sigmap(sigsig.first[i]); + RTLIL::SigBit rhs = sigmap(sigsig.second[i]); + bool has_lhs = database.count(lhs) != 0; + bool has_rhs = database.count(rhs) != 0; + + if (!has_lhs && !has_rhs) { + sigmap.add(lhs, rhs); + } else + if (!has_rhs) { + SigBitInfo new_info = database.at(lhs); + database.erase(lhs); + sigmap.add(lhs, rhs); + lhs = sigmap(lhs); + if (lhs.wire) + database[lhs] = new_info; + } else + if (!has_lhs) { + SigBitInfo new_info = database.at(rhs); + database.erase(rhs); + sigmap.add(lhs, rhs); + rhs = sigmap(rhs); + if (rhs.wire) + database[rhs] = new_info; + } else { + SigBitInfo new_info = database.at(lhs); + new_info.merge(database.at(rhs)); + database.erase(lhs); + database.erase(rhs); + sigmap.add(lhs, rhs); + rhs = sigmap(rhs); + if (rhs.wire) + database[rhs] = new_info; + } + } + } + + void notify_connect(RTLIL::Module *mod, const std::vector&) override + { + log_assert(module == mod); + auto_reload_module = true; + } + + void notify_blackout(RTLIL::Module *mod) override + { + log_assert(module == mod); + auto_reload_module = true; + } + + ModIndex(RTLIL::Module *_m) : sigmap(_m), module(_m) + { + auto_reload_counter = 0; + auto_reload_module = true; + module->monitors.insert(this); + } + + ~ModIndex() + { + module->monitors.erase(this); + } + + SigBitInfo *query(RTLIL::SigBit bit) + { + if (auto_reload_module) + reload_module(); + + auto it = database.find(sigmap(bit)); + if (it == database.end()) + return nullptr; + else + return &it->second; + } + + bool query_is_input(RTLIL::SigBit bit) + { + const SigBitInfo *info = query(bit); + if (info == nullptr) + return false; + return info->is_input; + } + + bool query_is_output(RTLIL::SigBit bit) + { + const SigBitInfo *info = query(bit); + if (info == nullptr) + return false; + return info->is_output; + } + + pool &query_ports(RTLIL::SigBit bit) + { + static pool empty_result_set; + SigBitInfo *info = query(bit); + if (info == nullptr) + return empty_result_set; + return info->ports; + } + + void dump_db() + { + log("--- ModIndex Dump ---\n"); + + if (auto_reload_module) { + log("AUTO-RELOAD\n"); + reload_module(); + } + + for (auto &it : database) { + log("BIT %s:\n", log_signal(it.first)); + if (it.second.is_input) + log(" PRIMARY INPUT\n"); + if (it.second.is_output) + log(" PRIMARY OUTPUT\n"); + for (auto &port : it.second.ports) + log(" PORT: %s.%s[%d] (%s)\n", log_id(port.cell), + log_id(port.port), port.offset, log_id(port.cell->type)); + } + } +}; + +struct ModWalker +{ + struct PortBit + { + RTLIL::Cell *cell; + RTLIL::IdString port; + int offset; + + bool operator<(const PortBit &other) const { + if (cell != other.cell) + return cell < other.cell; + if (port != other.port) + return port < other.port; + return offset < other.offset; + } + + bool operator==(const PortBit &other) const { + return cell == other.cell && port == other.port && offset == other.offset; + } + + unsigned int hash() const { + return mkhash_add(mkhash(cell->name.hash(), port.hash()), offset); + } + }; + + RTLIL::Design *design; + RTLIL::Module *module; + + CellTypes ct; + SigMap sigmap; + + dict> signal_drivers; + dict> signal_consumers; + pool signal_inputs, signal_outputs; + + dict> cell_outputs, cell_inputs; + + void add_wire(RTLIL::Wire *wire) + { + if (wire->port_input) { + std::vector bits = sigmap(wire); + for (auto bit : bits) + if (bit.wire != NULL) + signal_inputs.insert(bit); + } + + if (wire->port_output) { + std::vector bits = sigmap(wire); + for (auto bit : bits) + if (bit.wire != NULL) + signal_outputs.insert(bit); + } + } + + void add_cell_port(RTLIL::Cell *cell, RTLIL::IdString port, std::vector bits, bool is_output, bool is_input) + { + for (int i = 0; i < int(bits.size()); i++) + if (bits[i].wire != NULL) { + PortBit pbit = { cell, port, i }; + if (is_output) { + signal_drivers[bits[i]].insert(pbit); + cell_outputs[cell].insert(bits[i]); + } + if (is_input) { + signal_consumers[bits[i]].insert(pbit); + cell_inputs[cell].insert(bits[i]); + } + } + } + + void add_cell(RTLIL::Cell *cell) + { + if (ct.cell_known(cell->type)) { + for (auto &conn : cell->connections()) + add_cell_port(cell, conn.first, sigmap(conn.second), + ct.cell_output(cell->type, conn.first), + ct.cell_input(cell->type, conn.first)); + } else { + for (auto &conn : cell->connections()) + add_cell_port(cell, conn.first, sigmap(conn.second), true, true); + } + } + + ModWalker(RTLIL::Design *design, RTLIL::Module *module = nullptr) : design(design), module(NULL) + { + ct.setup(design); + if (module) + setup(module); + } + + void setup(RTLIL::Module *module, CellTypes *filter_ct = NULL) + { + this->module = module; + + sigmap.set(module); + + signal_drivers.clear(); + signal_consumers.clear(); + signal_inputs.clear(); + signal_outputs.clear(); + cell_inputs.clear(); + cell_outputs.clear(); + + for (auto &it : module->wires_) + add_wire(it.second); + for (auto &it : module->cells_) + if (filter_ct == NULL || filter_ct->cell_known(it.second->type)) + add_cell(it.second); + } + + // get_* methods -- single RTLIL::SigBit + + template + inline bool get_drivers(pool &result, RTLIL::SigBit bit) const + { + bool found = false; + if (signal_drivers.count(bit)) { + const pool &r = signal_drivers.at(bit); + result.insert(r.begin(), r.end()); + found = true; + } + return found; + } + + template + inline bool get_consumers(pool &result, RTLIL::SigBit bit) const + { + bool found = false; + if (signal_consumers.count(bit)) { + const pool &r = signal_consumers.at(bit); + result.insert(r.begin(), r.end()); + found = true; + } + return found; + } + + template + inline bool get_inputs(pool &result, RTLIL::SigBit bit) const + { + bool found = false; + if (signal_inputs.count(bit)) + result.insert(bit), found = true; + return found; + } + + template + inline bool get_outputs(pool &result, RTLIL::SigBit bit) const + { + bool found = false; + if (signal_outputs.count(bit)) + result.insert(bit), found = true; + return found; + } + + // get_* methods -- container of RTLIL::SigBit's (always by reference) + + template + inline bool get_drivers(pool &result, const T &bits) const + { + bool found = false; + for (RTLIL::SigBit bit : bits) + if (signal_drivers.count(bit)) { + const pool &r = signal_drivers.at(bit); + result.insert(r.begin(), r.end()); + found = true; + } + return found; + } + + template + inline bool get_consumers(pool &result, const T &bits) const + { + bool found = false; + for (RTLIL::SigBit bit : bits) + if (signal_consumers.count(bit)) { + const pool &r = signal_consumers.at(bit); + result.insert(r.begin(), r.end()); + found = true; + } + return found; + } + + template + inline bool get_inputs(pool &result, const T &bits) const + { + bool found = false; + for (RTLIL::SigBit bit : bits) + if (signal_inputs.count(bit)) + result.insert(bit), found = true; + return found; + } + + template + inline bool get_outputs(pool &result, const T &bits) const + { + bool found = false; + for (RTLIL::SigBit bit : bits) + if (signal_outputs.count(bit)) + result.insert(bit), found = true; + return found; + } + + // get_* methods -- call by RTLIL::SigSpec (always by value) + + bool get_drivers(pool &result, RTLIL::SigSpec signal) const + { + std::vector bits = sigmap(signal); + return get_drivers(result, bits); + } + + bool get_consumers(pool &result, RTLIL::SigSpec signal) const + { + std::vector bits = sigmap(signal); + return get_consumers(result, bits); + } + + bool get_inputs(pool &result, RTLIL::SigSpec signal) const + { + std::vector bits = sigmap(signal); + return get_inputs(result, bits); + } + + bool get_outputs(pool &result, RTLIL::SigSpec signal) const + { + std::vector bits = sigmap(signal); + return get_outputs(result, bits); + } + + // has_* methods -- call by reference + + template + inline bool has_drivers(const T &sig) const { + pool result; + return get_drivers(result, sig); + } + + template + inline bool has_consumers(const T &sig) const { + pool result; + return get_consumers(result, sig); + } + + template + inline bool has_inputs(const T &sig) const { + pool result; + return get_inputs(result, sig); + } + + template + inline bool has_outputs(const T &sig) const { + pool result; + return get_outputs(result, sig); + } + + // has_* methods -- call by value + + inline bool has_drivers(RTLIL::SigSpec sig) const { + pool result; + return get_drivers(result, sig); + } + + inline bool has_consumers(RTLIL::SigSpec sig) const { + pool result; + return get_consumers(result, sig); + } + + inline bool has_inputs(RTLIL::SigSpec sig) const { + pool result; + return get_inputs(result, sig); + } + + inline bool has_outputs(RTLIL::SigSpec sig) const { + pool result; + return get_outputs(result, sig); + } +}; + +YOSYS_NAMESPACE_END + +#endif diff --git a/resources/netlist/resources/kernel/share/include/kernel/qcsat.h b/resources/netlist/resources/kernel/share/include/kernel/qcsat.h new file mode 100644 index 0000000..e4d3c3c --- /dev/null +++ b/resources/netlist/resources/kernel/share/include/kernel/qcsat.h @@ -0,0 +1,76 @@ +/* -*- c++ -*- + * yosys -- Yosys Open SYnthesis Suite + * + * Copyright (C) 2021 Marcelina Kościelnicka + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + */ + +#ifndef QCSAT_H +#define QCSAT_H + +#include "kernel/satgen.h" +#include "kernel/modtools.h" + +YOSYS_NAMESPACE_BEGIN + +// This is a helper class meant for easy construction of quick SAT queries +// to a combinatorial input cone of some set of signals, meant for SAT-based +// optimizations. Various knobs are provided to set just how much of the +// cone should be included in the model — since this class is meant for +// optimization, it should not be a correctness problem when some cells are +// skipped and the solver spuriously returns SAT with a solution that +// cannot exist in reality due to skipped constraints (ie. only UNSAT results +// from this class should be considered binding). +struct QuickConeSat { + ModWalker &modwalker; + ezSatPtr ez; + SatGen satgen; + + // The effort level knobs. + + // The maximum "complexity level" of cells that will be imported. + // - 1: bitwise operations, muxes, equality comparisons, lut, sop, fa + // - 2: addition, subtraction, greater/less than comparisons, lcu + // - 3: shifts + // - 4: multiplication, division, power + int max_cell_complexity = 2; + // The maximum number of cells to import, or 0 for no limit. + int max_cell_count = 0; + // If non-0, skip importing cells with more than this number of output bits. + int max_cell_outs = 0; + + // Internal state. + pool imported_cells; + pool imported_onehot; + pool bits_queue; + + QuickConeSat(ModWalker &modwalker) : modwalker(modwalker), ez(), satgen(ez.get(), &modwalker.sigmap) {} + + // Imports a signal into the SAT solver, queues its input cone to be + // imported in the next prepare() call. + std::vector importSig(SigSpec sig); + int importSigBit(SigBit bit); + + // Imports the input cones of all previously importSig'd signals into + // the SAT solver. + void prepare(); + + // Returns the "complexity level" of a given cell. + static int cell_complexity(RTLIL::Cell *cell); +}; + +YOSYS_NAMESPACE_END + +#endif diff --git a/resources/netlist/resources/kernel/share/include/kernel/register.h b/resources/netlist/resources/kernel/share/include/kernel/register.h new file mode 100644 index 0000000..15750af --- /dev/null +++ b/resources/netlist/resources/kernel/share/include/kernel/register.h @@ -0,0 +1,138 @@ +/* -*- c++ -*- + * yosys -- Yosys Open SYnthesis Suite + * + * Copyright (C) 2012 Claire Xenia Wolf + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + */ + +#include "kernel/yosys.h" + +#ifndef REGISTER_H +#define REGISTER_H + +YOSYS_NAMESPACE_BEGIN + +struct Pass +{ + std::string pass_name, short_help; + Pass(std::string name, std::string short_help = "** document me **"); + virtual ~Pass(); + + virtual void help(); + virtual void clear_flags(); + virtual void execute(std::vector args, RTLIL::Design *design) = 0; + + int call_counter; + int64_t runtime_ns; + bool experimental_flag = false; + + void experimental() { + experimental_flag = true; + } + + struct pre_post_exec_state_t { + Pass *parent_pass; + int64_t begin_ns; + }; + + pre_post_exec_state_t pre_execute(); + void post_execute(pre_post_exec_state_t state); + + void cmd_log_args(const std::vector &args); + void cmd_error(const std::vector &args, size_t argidx, std::string msg); + void extra_args(std::vector args, size_t argidx, RTLIL::Design *design, bool select = true); + + static void call(RTLIL::Design *design, std::string command); + static void call(RTLIL::Design *design, std::vector args); + + static void call_on_selection(RTLIL::Design *design, const RTLIL::Selection &selection, std::string command); + static void call_on_selection(RTLIL::Design *design, const RTLIL::Selection &selection, std::vector args); + + static void call_on_module(RTLIL::Design *design, RTLIL::Module *module, std::string command); + static void call_on_module(RTLIL::Design *design, RTLIL::Module *module, std::vector args); + + Pass *next_queued_pass; + virtual void run_register(); + static void init_register(); + static void done_register(); + + virtual void on_register(); + virtual void on_shutdown(); +}; + +struct ScriptPass : Pass +{ + bool block_active, help_mode; + RTLIL::Design *active_design; + std::string active_run_from, active_run_to; + + ScriptPass(std::string name, std::string short_help = "** document me **") : Pass(name, short_help) { } + + virtual void script() = 0; + + bool check_label(std::string label, std::string info = std::string()); + void run(std::string command, std::string info = std::string()); + void run_nocheck(std::string command, std::string info = std::string()); + void run_script(RTLIL::Design *design, std::string run_from = std::string(), std::string run_to = std::string()); + void help_script(); +}; + +struct Frontend : Pass +{ + // for reading of here documents + static FILE *current_script_file; + static std::string last_here_document; + + std::string frontend_name; + Frontend(std::string name, std::string short_help = "** document me **"); + void run_register() override; + ~Frontend() override; + void execute(std::vector args, RTLIL::Design *design) override final; + virtual void execute(std::istream *&f, std::string filename, std::vector args, RTLIL::Design *design) = 0; + + static std::vector next_args; + void extra_args(std::istream *&f, std::string &filename, std::vector args, size_t argidx, bool bin_input = false); + + static void frontend_call(RTLIL::Design *design, std::istream *f, std::string filename, std::string command); + static void frontend_call(RTLIL::Design *design, std::istream *f, std::string filename, std::vector args); +}; + +struct Backend : Pass +{ + std::string backend_name; + Backend(std::string name, std::string short_help = "** document me **"); + void run_register() override; + ~Backend() override; + void execute(std::vector args, RTLIL::Design *design) override final; + virtual void execute(std::ostream *&f, std::string filename, std::vector args, RTLIL::Design *design) = 0; + + void extra_args(std::ostream *&f, std::string &filename, std::vector args, size_t argidx, bool bin_output = false); + + static void backend_call(RTLIL::Design *design, std::ostream *f, std::string filename, std::string command); + static void backend_call(RTLIL::Design *design, std::ostream *f, std::string filename, std::vector args); +}; + +// implemented in passes/cmds/select.cc +extern void handle_extra_select_args(Pass *pass, const std::vector &args, size_t argidx, size_t args_size, RTLIL::Design *design); +extern RTLIL::Selection eval_select_args(const vector &args, RTLIL::Design *design); +extern void eval_select_op(vector &work, const string &op, RTLIL::Design *design); + +extern std::map pass_register; +extern std::map frontend_register; +extern std::map backend_register; + +YOSYS_NAMESPACE_END + +#endif diff --git a/resources/netlist/resources/kernel/share/include/kernel/rtlil.h b/resources/netlist/resources/kernel/share/include/kernel/rtlil.h new file mode 100644 index 0000000..27ffdff --- /dev/null +++ b/resources/netlist/resources/kernel/share/include/kernel/rtlil.h @@ -0,0 +1,1805 @@ +/* -*- c++ -*- + * yosys -- Yosys Open SYnthesis Suite + * + * Copyright (C) 2012 Claire Xenia Wolf + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + */ + +#include "kernel/yosys.h" + +#ifndef RTLIL_H +#define RTLIL_H + +YOSYS_NAMESPACE_BEGIN + +namespace RTLIL +{ + enum State : unsigned char { + S0 = 0, + S1 = 1, + Sx = 2, // undefined value or conflict + Sz = 3, // high-impedance / not-connected + Sa = 4, // don't care (used only in cases) + Sm = 5 // marker (used internally by some passes) + }; + + enum SyncType : unsigned char { + ST0 = 0, // level sensitive: 0 + ST1 = 1, // level sensitive: 1 + STp = 2, // edge sensitive: posedge + STn = 3, // edge sensitive: negedge + STe = 4, // edge sensitive: both edges + STa = 5, // always active + STg = 6, // global clock + STi = 7 // init + }; + + enum ConstFlags : unsigned char { + CONST_FLAG_NONE = 0, + CONST_FLAG_STRING = 1, + CONST_FLAG_SIGNED = 2, // only used for parameters + CONST_FLAG_REAL = 4 // only used for parameters + }; + + struct Const; + struct AttrObject; + struct Selection; + struct Monitor; + struct Design; + struct Module; + struct Wire; + struct Memory; + struct Cell; + struct SigChunk; + struct SigBit; + struct SigSpecIterator; + struct SigSpecConstIterator; + struct SigSpec; + struct CaseRule; + struct SwitchRule; + struct MemWriteAction; + struct SyncRule; + struct Process; + struct Binding; + + typedef std::pair SigSig; + + struct IdString + { + #undef YOSYS_XTRACE_GET_PUT + #undef YOSYS_SORT_ID_FREE_LIST + #undef YOSYS_USE_STICKY_IDS + #undef YOSYS_NO_IDS_REFCNT + + // the global id string cache + + static struct destruct_guard_t { + bool ok; // POD, will be initialized to zero + destruct_guard_t() { ok = true; } + ~destruct_guard_t() { ok = false; } + } destruct_guard; + + static std::vector global_id_storage_; + static dict global_id_index_; + #ifndef YOSYS_NO_IDS_REFCNT + static std::vector global_refcount_storage_; + static std::vector global_free_idx_list_; + #endif + + #ifdef YOSYS_USE_STICKY_IDS + static int last_created_idx_ptr_; + static int last_created_idx_[8]; + #endif + + static inline void xtrace_db_dump() + { + #ifdef YOSYS_XTRACE_GET_PUT + for (int idx = 0; idx < GetSize(global_id_storage_); idx++) + { + if (global_id_storage_.at(idx) == nullptr) + log("#X# DB-DUMP index %d: FREE\n", idx); + else + log("#X# DB-DUMP index %d: '%s' (ref %d)\n", idx, global_id_storage_.at(idx), global_refcount_storage_.at(idx)); + } + #endif + } + + static inline void checkpoint() + { + #ifdef YOSYS_USE_STICKY_IDS + last_created_idx_ptr_ = 0; + for (int i = 0; i < 8; i++) { + if (last_created_idx_[i]) + put_reference(last_created_idx_[i]); + last_created_idx_[i] = 0; + } + #endif + #ifdef YOSYS_SORT_ID_FREE_LIST + std::sort(global_free_idx_list_.begin(), global_free_idx_list_.end(), std::greater()); + #endif + } + + static inline int get_reference(int idx) + { + if (idx) { + #ifndef YOSYS_NO_IDS_REFCNT + global_refcount_storage_[idx]++; + #endif + #ifdef YOSYS_XTRACE_GET_PUT + if (yosys_xtrace) + log("#X# GET-BY-INDEX '%s' (index %d, refcount %d)\n", global_id_storage_.at(idx), idx, global_refcount_storage_.at(idx)); + #endif + } + return idx; + } + + static int get_reference(const char *p) + { + log_assert(destruct_guard.ok); + + if (!p[0]) + return 0; + + auto it = global_id_index_.find((char*)p); + if (it != global_id_index_.end()) { + #ifndef YOSYS_NO_IDS_REFCNT + global_refcount_storage_.at(it->second)++; + #endif + #ifdef YOSYS_XTRACE_GET_PUT + if (yosys_xtrace) + log("#X# GET-BY-NAME '%s' (index %d, refcount %d)\n", global_id_storage_.at(it->second), it->second, global_refcount_storage_.at(it->second)); + #endif + return it->second; + } + + log_assert(p[0] == '$' || p[0] == '\\'); + log_assert(p[1] != 0); + for (const char *c = p; *c; c++) + if ((unsigned)*c <= (unsigned)' ') + log_error("Found control character or space (0x%02x) in string '%s' which is not allowed in RTLIL identifiers\n", *c, p); + + #ifndef YOSYS_NO_IDS_REFCNT + if (global_free_idx_list_.empty()) { + if (global_id_storage_.empty()) { + global_refcount_storage_.push_back(0); + global_id_storage_.push_back((char*)""); + global_id_index_[global_id_storage_.back()] = 0; + } + log_assert(global_id_storage_.size() < 0x40000000); + global_free_idx_list_.push_back(global_id_storage_.size()); + global_id_storage_.push_back(nullptr); + global_refcount_storage_.push_back(0); + } + + int idx = global_free_idx_list_.back(); + global_free_idx_list_.pop_back(); + global_id_storage_.at(idx) = strdup(p); + global_id_index_[global_id_storage_.at(idx)] = idx; + global_refcount_storage_.at(idx)++; + #else + if (global_id_storage_.empty()) { + global_id_storage_.push_back((char*)""); + global_id_index_[global_id_storage_.back()] = 0; + } + int idx = global_id_storage_.size(); + global_id_storage_.push_back(strdup(p)); + global_id_index_[global_id_storage_.back()] = idx; + #endif + + if (yosys_xtrace) { + log("#X# New IdString '%s' with index %d.\n", p, idx); + log_backtrace("-X- ", yosys_xtrace-1); + } + + #ifdef YOSYS_XTRACE_GET_PUT + if (yosys_xtrace) + log("#X# GET-BY-NAME '%s' (index %d, refcount %d)\n", global_id_storage_.at(idx), idx, global_refcount_storage_.at(idx)); + #endif + + #ifdef YOSYS_USE_STICKY_IDS + // Avoid Create->Delete->Create pattern + if (last_created_idx_[last_created_idx_ptr_]) + put_reference(last_created_idx_[last_created_idx_ptr_]); + last_created_idx_[last_created_idx_ptr_] = idx; + get_reference(last_created_idx_[last_created_idx_ptr_]); + last_created_idx_ptr_ = (last_created_idx_ptr_ + 1) & 7; + #endif + + return idx; + } + + #ifndef YOSYS_NO_IDS_REFCNT + static inline void put_reference(int idx) + { + // put_reference() may be called from destructors after the destructor of + // global_refcount_storage_ has been run. in this case we simply do nothing. + if (!destruct_guard.ok || !idx) + return; + + #ifdef YOSYS_XTRACE_GET_PUT + if (yosys_xtrace) { + log("#X# PUT '%s' (index %d, refcount %d)\n", global_id_storage_.at(idx), idx, global_refcount_storage_.at(idx)); + } + #endif + + int &refcount = global_refcount_storage_[idx]; + + if (--refcount > 0) + return; + + log_assert(refcount == 0); + free_reference(idx); + } + static inline void free_reference(int idx) + { + if (yosys_xtrace) { + log("#X# Removed IdString '%s' with index %d.\n", global_id_storage_.at(idx), idx); + log_backtrace("-X- ", yosys_xtrace-1); + } + + global_id_index_.erase(global_id_storage_.at(idx)); + free(global_id_storage_.at(idx)); + global_id_storage_.at(idx) = nullptr; + global_free_idx_list_.push_back(idx); + } + #else + static inline void put_reference(int) { } + #endif + + // the actual IdString object is just is a single int + + int index_; + + inline IdString() : index_(0) { } + inline IdString(const char *str) : index_(get_reference(str)) { } + inline IdString(const IdString &str) : index_(get_reference(str.index_)) { } + inline IdString(IdString &&str) : index_(str.index_) { str.index_ = 0; } + inline IdString(const std::string &str) : index_(get_reference(str.c_str())) { } + inline ~IdString() { put_reference(index_); } + + inline void operator=(const IdString &rhs) { + put_reference(index_); + index_ = get_reference(rhs.index_); + } + + inline void operator=(const char *rhs) { + IdString id(rhs); + *this = id; + } + + inline void operator=(const std::string &rhs) { + IdString id(rhs); + *this = id; + } + + inline const char *c_str() const { + return global_id_storage_.at(index_); + } + + inline std::string str() const { + return std::string(global_id_storage_.at(index_)); + } + + inline bool operator<(const IdString &rhs) const { + return index_ < rhs.index_; + } + + inline bool operator==(const IdString &rhs) const { return index_ == rhs.index_; } + inline bool operator!=(const IdString &rhs) const { return index_ != rhs.index_; } + + // The methods below are just convenience functions for better compatibility with std::string. + + bool operator==(const std::string &rhs) const { return c_str() == rhs; } + bool operator!=(const std::string &rhs) const { return c_str() != rhs; } + + bool operator==(const char *rhs) const { return strcmp(c_str(), rhs) == 0; } + bool operator!=(const char *rhs) const { return strcmp(c_str(), rhs) != 0; } + + char operator[](size_t i) const { + const char *p = c_str(); + for (; i != 0; i--, p++) + log_assert(*p != 0); + return *p; + } + + std::string substr(size_t pos = 0, size_t len = std::string::npos) const { + if (len == std::string::npos || len >= strlen(c_str() + pos)) + return std::string(c_str() + pos); + else + return std::string(c_str() + pos, len); + } + + int compare(size_t pos, size_t len, const char* s) const { + return strncmp(c_str()+pos, s, len); + } + + bool begins_with(const char* prefix) const { + size_t len = strlen(prefix); + if (size() < len) return false; + return compare(0, len, prefix) == 0; + } + + bool ends_with(const char* suffix) const { + size_t len = strlen(suffix); + if (size() < len) return false; + return compare(size()-len, len, suffix) == 0; + } + + bool contains(const char* str) const { + return strstr(c_str(), str); + } + + size_t size() const { + return strlen(c_str()); + } + + bool empty() const { + return c_str()[0] == 0; + } + + void clear() { + *this = IdString(); + } + + unsigned int hash() const { + return index_; + } + + // The following is a helper key_compare class. Instead of for example std::set + // use std::set> if the order of cells in the + // set has an influence on the algorithm. + + template struct compare_ptr_by_name { + bool operator()(const T *a, const T *b) const { + return (a == nullptr || b == nullptr) ? (a < b) : (a->name < b->name); + } + }; + + // often one needs to check if a given IdString is part of a list (for example a list + // of cell types). the following functions helps with that. + + template + bool in(Args... args) const { + // Credit: https://articles.emptycrate.com/2016/05/14/folds_in_cpp11_ish.html + bool result = false; + (void) std::initializer_list{ (result = result || in(args), 0)... }; + return result; + } + + bool in(const IdString &rhs) const { return *this == rhs; } + bool in(const char *rhs) const { return *this == rhs; } + bool in(const std::string &rhs) const { return *this == rhs; } + bool in(const pool &rhs) const { return rhs.count(*this) != 0; } + + bool isPublic() const { return begins_with("\\"); } + }; + + namespace ID { +#define X(_id) extern IdString _id; +#include "kernel/constids.inc" +#undef X + }; + + extern dict constpad; + + const pool &builtin_ff_cell_types(); + + static inline std::string escape_id(const std::string &str) { + if (str.size() > 0 && str[0] != '\\' && str[0] != '$') + return "\\" + str; + return str; + } + + static inline std::string unescape_id(const std::string &str) { + if (str.size() < 2) + return str; + if (str[0] != '\\') + return str; + if (str[1] == '$' || str[1] == '\\') + return str; + if (str[1] >= '0' && str[1] <= '9') + return str; + return str.substr(1); + } + + static inline std::string unescape_id(const RTLIL::IdString &str) { + return unescape_id(str.str()); + } + + static inline const char *id2cstr(const RTLIL::IdString &str) { + return log_id(str); + } + + template struct sort_by_name_id { + bool operator()(T *a, T *b) const { + return a->name < b->name; + } + }; + + template struct sort_by_name_str { + bool operator()(T *a, T *b) const { + return strcmp(a->name.c_str(), b->name.c_str()) < 0; + } + }; + + struct sort_by_id_str { + bool operator()(const RTLIL::IdString &a, const RTLIL::IdString &b) const { + return strcmp(a.c_str(), b.c_str()) < 0; + } + }; + + static inline std::string encode_filename(const std::string &filename) + { + std::stringstream val; + if (!std::any_of(filename.begin(), filename.end(), [](char c) { + return static_cast(c) < 33 || static_cast(c) > 126; + })) return filename; + for (unsigned char const c : filename) { + if (c < 33 || c > 126) + val << stringf("$%02x", c); + else + val << c; + } + return val.str(); + } + + // see calc.cc for the implementation of this functions + RTLIL::Const const_not (const RTLIL::Const &arg1, const RTLIL::Const &arg2, bool signed1, bool signed2, int result_len); + RTLIL::Const const_and (const RTLIL::Const &arg1, const RTLIL::Const &arg2, bool signed1, bool signed2, int result_len); + RTLIL::Const const_or (const RTLIL::Const &arg1, const RTLIL::Const &arg2, bool signed1, bool signed2, int result_len); + RTLIL::Const const_xor (const RTLIL::Const &arg1, const RTLIL::Const &arg2, bool signed1, bool signed2, int result_len); + RTLIL::Const const_xnor (const RTLIL::Const &arg1, const RTLIL::Const &arg2, bool signed1, bool signed2, int result_len); + + RTLIL::Const const_reduce_and (const RTLIL::Const &arg1, const RTLIL::Const &arg2, bool signed1, bool signed2, int result_len); + RTLIL::Const const_reduce_or (const RTLIL::Const &arg1, const RTLIL::Const &arg2, bool signed1, bool signed2, int result_len); + RTLIL::Const const_reduce_xor (const RTLIL::Const &arg1, const RTLIL::Const &arg2, bool signed1, bool signed2, int result_len); + RTLIL::Const const_reduce_xnor (const RTLIL::Const &arg1, const RTLIL::Const &arg2, bool signed1, bool signed2, int result_len); + RTLIL::Const const_reduce_bool (const RTLIL::Const &arg1, const RTLIL::Const &arg2, bool signed1, bool signed2, int result_len); + + RTLIL::Const const_logic_not (const RTLIL::Const &arg1, const RTLIL::Const &arg2, bool signed1, bool signed2, int result_len); + RTLIL::Const const_logic_and (const RTLIL::Const &arg1, const RTLIL::Const &arg2, bool signed1, bool signed2, int result_len); + RTLIL::Const const_logic_or (const RTLIL::Const &arg1, const RTLIL::Const &arg2, bool signed1, bool signed2, int result_len); + + RTLIL::Const const_shl (const RTLIL::Const &arg1, const RTLIL::Const &arg2, bool signed1, bool signed2, int result_len); + RTLIL::Const const_shr (const RTLIL::Const &arg1, const RTLIL::Const &arg2, bool signed1, bool signed2, int result_len); + RTLIL::Const const_sshl (const RTLIL::Const &arg1, const RTLIL::Const &arg2, bool signed1, bool signed2, int result_len); + RTLIL::Const const_sshr (const RTLIL::Const &arg1, const RTLIL::Const &arg2, bool signed1, bool signed2, int result_len); + RTLIL::Const const_shift (const RTLIL::Const &arg1, const RTLIL::Const &arg2, bool signed1, bool signed2, int result_len); + RTLIL::Const const_shiftx (const RTLIL::Const &arg1, const RTLIL::Const &arg2, bool signed1, bool signed2, int result_len); + + RTLIL::Const const_lt (const RTLIL::Const &arg1, const RTLIL::Const &arg2, bool signed1, bool signed2, int result_len); + RTLIL::Const const_le (const RTLIL::Const &arg1, const RTLIL::Const &arg2, bool signed1, bool signed2, int result_len); + RTLIL::Const const_eq (const RTLIL::Const &arg1, const RTLIL::Const &arg2, bool signed1, bool signed2, int result_len); + RTLIL::Const const_ne (const RTLIL::Const &arg1, const RTLIL::Const &arg2, bool signed1, bool signed2, int result_len); + RTLIL::Const const_eqx (const RTLIL::Const &arg1, const RTLIL::Const &arg2, bool signed1, bool signed2, int result_len); + RTLIL::Const const_nex (const RTLIL::Const &arg1, const RTLIL::Const &arg2, bool signed1, bool signed2, int result_len); + RTLIL::Const const_ge (const RTLIL::Const &arg1, const RTLIL::Const &arg2, bool signed1, bool signed2, int result_len); + RTLIL::Const const_gt (const RTLIL::Const &arg1, const RTLIL::Const &arg2, bool signed1, bool signed2, int result_len); + + RTLIL::Const const_add (const RTLIL::Const &arg1, const RTLIL::Const &arg2, bool signed1, bool signed2, int result_len); + RTLIL::Const const_sub (const RTLIL::Const &arg1, const RTLIL::Const &arg2, bool signed1, bool signed2, int result_len); + RTLIL::Const const_mul (const RTLIL::Const &arg1, const RTLIL::Const &arg2, bool signed1, bool signed2, int result_len); + RTLIL::Const const_div (const RTLIL::Const &arg1, const RTLIL::Const &arg2, bool signed1, bool signed2, int result_len); + RTLIL::Const const_divfloor (const RTLIL::Const &arg1, const RTLIL::Const &arg2, bool signed1, bool signed2, int result_len); + RTLIL::Const const_modfloor (const RTLIL::Const &arg1, const RTLIL::Const &arg2, bool signed1, bool signed2, int result_len); + RTLIL::Const const_mod (const RTLIL::Const &arg1, const RTLIL::Const &arg2, bool signed1, bool signed2, int result_len); + RTLIL::Const const_pow (const RTLIL::Const &arg1, const RTLIL::Const &arg2, bool signed1, bool signed2, int result_len); + + RTLIL::Const const_pos (const RTLIL::Const &arg1, const RTLIL::Const &arg2, bool signed1, bool signed2, int result_len); + RTLIL::Const const_neg (const RTLIL::Const &arg1, const RTLIL::Const &arg2, bool signed1, bool signed2, int result_len); + + RTLIL::Const const_bmux (const RTLIL::Const &arg1, const RTLIL::Const &arg2); + RTLIL::Const const_demux (const RTLIL::Const &arg1, const RTLIL::Const &arg2); + + + // This iterator-range-pair is used for Design::modules(), Module::wires() and Module::cells(). + // It maintains a reference counter that is used to make sure that the container is not modified while being iterated over. + + template + struct ObjIterator { + using iterator_category = std::forward_iterator_tag; + using value_type = T; + using difference_type = ptrdiff_t; + using pointer = T*; + using reference = T&; + typename dict::iterator it; + dict *list_p; + int *refcount_p; + + ObjIterator() : list_p(nullptr), refcount_p(nullptr) { + } + + ObjIterator(decltype(list_p) list_p, int *refcount_p) : list_p(list_p), refcount_p(refcount_p) { + if (list_p->empty()) { + this->list_p = nullptr; + this->refcount_p = nullptr; + } else { + it = list_p->begin(); + (*refcount_p)++; + } + } + + ObjIterator(const RTLIL::ObjIterator &other) { + it = other.it; + list_p = other.list_p; + refcount_p = other.refcount_p; + if (refcount_p) + (*refcount_p)++; + } + + ObjIterator &operator=(const RTLIL::ObjIterator &other) { + if (refcount_p) + (*refcount_p)--; + it = other.it; + list_p = other.list_p; + refcount_p = other.refcount_p; + if (refcount_p) + (*refcount_p)++; + return *this; + } + + ~ObjIterator() { + if (refcount_p) + (*refcount_p)--; + } + + inline T operator*() const { + log_assert(list_p != nullptr); + return it->second; + } + + inline bool operator!=(const RTLIL::ObjIterator &other) const { + if (list_p == nullptr || other.list_p == nullptr) + return list_p != other.list_p; + return it != other.it; + } + + + inline bool operator==(const RTLIL::ObjIterator &other) const { + return !(*this != other); + } + + inline ObjIterator& operator++() { + log_assert(list_p != nullptr); + if (++it == list_p->end()) { + (*refcount_p)--; + list_p = nullptr; + refcount_p = nullptr; + } + return *this; + } + + inline ObjIterator& operator+=(int amt) { + log_assert(list_p != nullptr); + it += amt; + if (it == list_p->end()) { + (*refcount_p)--; + list_p = nullptr; + refcount_p = nullptr; + } + return *this; + } + + inline ObjIterator operator+(int amt) { + log_assert(list_p != nullptr); + ObjIterator new_obj(*this); + new_obj.it += amt; + if (new_obj.it == list_p->end()) { + (*(new_obj.refcount_p))--; + new_obj.list_p = nullptr; + new_obj.refcount_p = nullptr; + } + return new_obj; + } + + inline const ObjIterator operator++(int) { + ObjIterator result(*this); + ++(*this); + return result; + } + }; + + template + struct ObjRange + { + dict *list_p; + int *refcount_p; + + ObjRange(decltype(list_p) list_p, int *refcount_p) : list_p(list_p), refcount_p(refcount_p) { } + RTLIL::ObjIterator begin() { return RTLIL::ObjIterator(list_p, refcount_p); } + RTLIL::ObjIterator end() { return RTLIL::ObjIterator(); } + + size_t size() const { + return list_p->size(); + } + + operator pool() const { + pool result; + for (auto &it : *list_p) + result.insert(it.second); + return result; + } + + operator std::vector() const { + std::vector result; + result.reserve(list_p->size()); + for (auto &it : *list_p) + result.push_back(it.second); + return result; + } + + pool to_pool() const { return *this; } + std::vector to_vector() const { return *this; } + }; +}; + +struct RTLIL::Const +{ + int flags; + std::vector bits; + + Const() : flags(RTLIL::CONST_FLAG_NONE) {} + Const(const std::string &str); + Const(int val, int width = 32); + Const(RTLIL::State bit, int width = 1); + Const(const std::vector &bits) : bits(bits) { flags = CONST_FLAG_NONE; } + Const(const std::vector &bits); + Const(const RTLIL::Const &c) = default; + RTLIL::Const &operator =(const RTLIL::Const &other) = default; + + bool operator <(const RTLIL::Const &other) const; + bool operator ==(const RTLIL::Const &other) const; + bool operator !=(const RTLIL::Const &other) const; + + bool as_bool() const; + int as_int(bool is_signed = false) const; + std::string as_string() const; + static Const from_string(const std::string &str); + + std::string decode_string() const; + + inline int size() const { return bits.size(); } + inline bool empty() const { return bits.empty(); } + inline RTLIL::State &operator[](int index) { return bits.at(index); } + inline const RTLIL::State &operator[](int index) const { return bits.at(index); } + inline decltype(bits)::iterator begin() { return bits.begin(); } + inline decltype(bits)::iterator end() { return bits.end(); } + + bool is_fully_zero() const; + bool is_fully_ones() const; + bool is_fully_def() const; + bool is_fully_undef() const; + bool is_onehot(int *pos = nullptr) const; + + inline RTLIL::Const extract(int offset, int len = 1, RTLIL::State padding = RTLIL::State::S0) const { + RTLIL::Const ret; + ret.bits.reserve(len); + for (int i = offset; i < offset + len; i++) + ret.bits.push_back(i < GetSize(bits) ? bits[i] : padding); + return ret; + } + + void extu(int width) { + bits.resize(width, RTLIL::State::S0); + } + + void exts(int width) { + bits.resize(width, bits.empty() ? RTLIL::State::Sx : bits.back()); + } + + inline unsigned int hash() const { + unsigned int h = mkhash_init; + for (auto b : bits) + mkhash(h, b); + return h; + } +}; + +struct RTLIL::AttrObject +{ + dict attributes; + + bool has_attribute(const RTLIL::IdString &id) const; + + void set_bool_attribute(const RTLIL::IdString &id, bool value=true); + bool get_bool_attribute(const RTLIL::IdString &id) const; + + bool get_blackbox_attribute(bool ignore_wb=false) const { + return get_bool_attribute(ID::blackbox) || (!ignore_wb && get_bool_attribute(ID::whitebox)); + } + + void set_string_attribute(const RTLIL::IdString& id, string value); + string get_string_attribute(const RTLIL::IdString &id) const; + + void set_strpool_attribute(const RTLIL::IdString& id, const pool &data); + void add_strpool_attribute(const RTLIL::IdString& id, const pool &data); + pool get_strpool_attribute(const RTLIL::IdString &id) const; + + void set_src_attribute(const std::string &src) { + set_string_attribute(ID::src, src); + } + std::string get_src_attribute() const { + return get_string_attribute(ID::src); + } + + void set_hdlname_attribute(const vector &hierarchy); + vector get_hdlname_attribute() const; + + void set_intvec_attribute(const RTLIL::IdString& id, const vector &data); + vector get_intvec_attribute(const RTLIL::IdString &id) const; +}; + +struct RTLIL::SigChunk +{ + RTLIL::Wire *wire; + std::vector data; // only used if wire == NULL, LSB at index 0 + int width, offset; + + SigChunk() : wire(nullptr), width(0), offset(0) {} + SigChunk(const RTLIL::Const &value) : wire(nullptr), data(value.bits), width(GetSize(data)), offset(0) {} + SigChunk(RTLIL::Const &&value) : wire(nullptr), data(std::move(value.bits)), width(GetSize(data)), offset(0) {} + SigChunk(RTLIL::Wire *wire) : wire(wire), width(GetSize(wire)), offset(0) {} + SigChunk(RTLIL::Wire *wire, int offset, int width = 1) : wire(wire), width(width), offset(offset) {} + SigChunk(const std::string &str) : SigChunk(RTLIL::Const(str)) {} + SigChunk(int val, int width = 32) : SigChunk(RTLIL::Const(val, width)) {} + SigChunk(RTLIL::State bit, int width = 1) : SigChunk(RTLIL::Const(bit, width)) {} + SigChunk(const RTLIL::SigBit &bit); + + RTLIL::SigChunk extract(int offset, int length) const; + inline int size() const { return width; } + inline bool is_wire() const { return wire != NULL; } + + bool operator <(const RTLIL::SigChunk &other) const; + bool operator ==(const RTLIL::SigChunk &other) const; + bool operator !=(const RTLIL::SigChunk &other) const; +}; + +struct RTLIL::SigBit +{ + RTLIL::Wire *wire; + union { + RTLIL::State data; // used if wire == NULL + int offset; // used if wire != NULL + }; + + SigBit(); + SigBit(RTLIL::State bit); + explicit SigBit(bool bit); + SigBit(RTLIL::Wire *wire); + SigBit(RTLIL::Wire *wire, int offset); + SigBit(const RTLIL::SigChunk &chunk); + SigBit(const RTLIL::SigChunk &chunk, int index); + SigBit(const RTLIL::SigSpec &sig); + SigBit(const RTLIL::SigBit &sigbit) = default; + RTLIL::SigBit &operator =(const RTLIL::SigBit &other) = default; + + inline bool is_wire() const { return wire != NULL; } + + bool operator <(const RTLIL::SigBit &other) const; + bool operator ==(const RTLIL::SigBit &other) const; + bool operator !=(const RTLIL::SigBit &other) const; + unsigned int hash() const; +}; + +struct RTLIL::SigSpecIterator : public std::iterator +{ + RTLIL::SigSpec *sig_p; + int index; + + inline RTLIL::SigBit &operator*() const; + inline bool operator!=(const RTLIL::SigSpecIterator &other) const { return index != other.index; } + inline bool operator==(const RTLIL::SigSpecIterator &other) const { return index == other.index; } + inline void operator++() { index++; } +}; + +struct RTLIL::SigSpecConstIterator : public std::iterator +{ + const RTLIL::SigSpec *sig_p; + int index; + + inline const RTLIL::SigBit &operator*() const; + inline bool operator!=(const RTLIL::SigSpecConstIterator &other) const { return index != other.index; } + inline bool operator==(const RTLIL::SigSpecIterator &other) const { return index == other.index; } + inline void operator++() { index++; } +}; + +struct RTLIL::SigSpec +{ +private: + int width_; + unsigned long hash_; + std::vector chunks_; // LSB at index 0 + std::vector bits_; // LSB at index 0 + + void pack() const; + void unpack() const; + void updhash() const; + + inline bool packed() const { + return bits_.empty(); + } + + inline void inline_unpack() const { + if (!chunks_.empty()) + unpack(); + } + + // Only used by Module::remove(const pool &wires) + // but cannot be more specific as it isn't yet declared + friend struct RTLIL::Module; + +public: + SigSpec() : width_(0), hash_(0) {} + SigSpec(std::initializer_list parts); + + SigSpec(const RTLIL::Const &value); + SigSpec(RTLIL::Const &&value); + SigSpec(const RTLIL::SigChunk &chunk); + SigSpec(RTLIL::SigChunk &&chunk); + SigSpec(RTLIL::Wire *wire); + SigSpec(RTLIL::Wire *wire, int offset, int width = 1); + SigSpec(const std::string &str); + SigSpec(int val, int width = 32); + SigSpec(RTLIL::State bit, int width = 1); + SigSpec(const RTLIL::SigBit &bit, int width = 1); + SigSpec(const std::vector &chunks); + SigSpec(const std::vector &bits); + SigSpec(const pool &bits); + SigSpec(const std::set &bits); + explicit SigSpec(bool bit); + + size_t get_hash() const { + if (!hash_) hash(); + return hash_; + } + + inline const std::vector &chunks() const { pack(); return chunks_; } + inline const std::vector &bits() const { inline_unpack(); return bits_; } + + inline int size() const { return width_; } + inline bool empty() const { return width_ == 0; } + + inline RTLIL::SigBit &operator[](int index) { inline_unpack(); return bits_.at(index); } + inline const RTLIL::SigBit &operator[](int index) const { inline_unpack(); return bits_.at(index); } + + inline RTLIL::SigSpecIterator begin() { RTLIL::SigSpecIterator it; it.sig_p = this; it.index = 0; return it; } + inline RTLIL::SigSpecIterator end() { RTLIL::SigSpecIterator it; it.sig_p = this; it.index = width_; return it; } + + inline RTLIL::SigSpecConstIterator begin() const { RTLIL::SigSpecConstIterator it; it.sig_p = this; it.index = 0; return it; } + inline RTLIL::SigSpecConstIterator end() const { RTLIL::SigSpecConstIterator it; it.sig_p = this; it.index = width_; return it; } + + void sort(); + void sort_and_unify(); + + void replace(const RTLIL::SigSpec &pattern, const RTLIL::SigSpec &with); + void replace(const RTLIL::SigSpec &pattern, const RTLIL::SigSpec &with, RTLIL::SigSpec *other) const; + + void replace(const dict &rules); + void replace(const dict &rules, RTLIL::SigSpec *other) const; + + void replace(const std::map &rules); + void replace(const std::map &rules, RTLIL::SigSpec *other) const; + + void replace(int offset, const RTLIL::SigSpec &with); + + void remove(const RTLIL::SigSpec &pattern); + void remove(const RTLIL::SigSpec &pattern, RTLIL::SigSpec *other) const; + void remove2(const RTLIL::SigSpec &pattern, RTLIL::SigSpec *other); + + void remove(const pool &pattern); + void remove(const pool &pattern, RTLIL::SigSpec *other) const; + void remove2(const pool &pattern, RTLIL::SigSpec *other); + void remove2(const std::set &pattern, RTLIL::SigSpec *other); + + void remove(int offset, int length = 1); + void remove_const(); + + RTLIL::SigSpec extract(const RTLIL::SigSpec &pattern, const RTLIL::SigSpec *other = NULL) const; + RTLIL::SigSpec extract(const pool &pattern, const RTLIL::SigSpec *other = NULL) const; + RTLIL::SigSpec extract(int offset, int length = 1) const; + RTLIL::SigSpec extract_end(int offset) const { return extract(offset, width_ - offset); } + + void append(const RTLIL::SigSpec &signal); + inline void append(Wire *wire) { append(RTLIL::SigSpec(wire)); } + inline void append(const RTLIL::SigChunk &chunk) { append(RTLIL::SigSpec(chunk)); } + inline void append(const RTLIL::Const &const_) { append(RTLIL::SigSpec(const_)); } + + void append(const RTLIL::SigBit &bit); + inline void append(RTLIL::State state) { append(RTLIL::SigBit(state)); } + inline void append(bool bool_) { append(RTLIL::SigBit(bool_)); } + + void extend_u0(int width, bool is_signed = false); + + RTLIL::SigSpec repeat(int num) const; + + void reverse() { inline_unpack(); std::reverse(bits_.begin(), bits_.end()); } + + bool operator <(const RTLIL::SigSpec &other) const; + bool operator ==(const RTLIL::SigSpec &other) const; + inline bool operator !=(const RTLIL::SigSpec &other) const { return !(*this == other); } + + bool is_wire() const; + bool is_chunk() const; + inline bool is_bit() const { return width_ == 1; } + + bool is_fully_const() const; + bool is_fully_zero() const; + bool is_fully_ones() const; + bool is_fully_def() const; + bool is_fully_undef() const; + bool has_const() const; + bool has_marked_bits() const; + bool is_onehot(int *pos = nullptr) const; + + bool as_bool() const; + int as_int(bool is_signed = false) const; + std::string as_string() const; + RTLIL::Const as_const() const; + RTLIL::Wire *as_wire() const; + RTLIL::SigChunk as_chunk() const; + RTLIL::SigBit as_bit() const; + + bool match(const char* pattern) const; + + std::set to_sigbit_set() const; + pool to_sigbit_pool() const; + std::vector to_sigbit_vector() const; + std::map to_sigbit_map(const RTLIL::SigSpec &other) const; + dict to_sigbit_dict(const RTLIL::SigSpec &other) const; + + static bool parse(RTLIL::SigSpec &sig, RTLIL::Module *module, std::string str); + static bool parse_sel(RTLIL::SigSpec &sig, RTLIL::Design *design, RTLIL::Module *module, std::string str); + static bool parse_rhs(const RTLIL::SigSpec &lhs, RTLIL::SigSpec &sig, RTLIL::Module *module, std::string str); + + operator std::vector() const { return chunks(); } + operator std::vector() const { return bits(); } + const RTLIL::SigBit &at(int offset, const RTLIL::SigBit &defval) { return offset < width_ ? (*this)[offset] : defval; } + + unsigned int hash() const { if (!hash_) updhash(); return hash_; }; + +#ifndef NDEBUG + void check(Module *mod = nullptr) const; +#else + void check(Module *mod = nullptr) const { (void)mod; } +#endif +}; + +struct RTLIL::Selection +{ + bool full_selection; + pool selected_modules; + dict> selected_members; + + Selection(bool full = true) : full_selection(full) { } + + bool selected_module(const RTLIL::IdString &mod_name) const; + bool selected_whole_module(const RTLIL::IdString &mod_name) const; + bool selected_member(const RTLIL::IdString &mod_name, const RTLIL::IdString &memb_name) const; + void optimize(RTLIL::Design *design); + + template void select(T1 *module) { + if (!full_selection && selected_modules.count(module->name) == 0) { + selected_modules.insert(module->name); + selected_members.erase(module->name); + } + } + + template void select(T1 *module, T2 *member) { + if (!full_selection && selected_modules.count(module->name) == 0) + selected_members[module->name].insert(member->name); + } + + bool empty() const { + return !full_selection && selected_modules.empty() && selected_members.empty(); + } +}; + +struct RTLIL::Monitor +{ + unsigned int hashidx_; + unsigned int hash() const { return hashidx_; } + + Monitor() { + static unsigned int hashidx_count = 123456789; + hashidx_count = mkhash_xorshift(hashidx_count); + hashidx_ = hashidx_count; + } + + virtual ~Monitor() { } + virtual void notify_module_add(RTLIL::Module*) { } + virtual void notify_module_del(RTLIL::Module*) { } + virtual void notify_connect(RTLIL::Cell*, const RTLIL::IdString&, const RTLIL::SigSpec&, const RTLIL::SigSpec&) { } + virtual void notify_connect(RTLIL::Module*, const RTLIL::SigSig&) { } + virtual void notify_connect(RTLIL::Module*, const std::vector&) { } + virtual void notify_blackout(RTLIL::Module*) { } +}; + +// Forward declaration; defined in preproc.h. +struct define_map_t; + +struct RTLIL::Design +{ + unsigned int hashidx_; + unsigned int hash() const { return hashidx_; } + + pool monitors; + dict scratchpad; + + int refcount_modules_; + dict modules_; + std::vector bindings_; + + std::vector verilog_packages, verilog_globals; + std::unique_ptr verilog_defines; + + std::vector selection_stack; + dict selection_vars; + std::string selected_active_module; + + Design(); + ~Design(); + + RTLIL::ObjRange modules(); + RTLIL::Module *module(const RTLIL::IdString &name); + const RTLIL::Module *module(const RTLIL::IdString &name) const; + RTLIL::Module *top_module(); + + bool has(const RTLIL::IdString &id) const { + return modules_.count(id) != 0; + } + + void add(RTLIL::Module *module); + void add(RTLIL::Binding *binding); + + RTLIL::Module *addModule(RTLIL::IdString name); + void remove(RTLIL::Module *module); + void rename(RTLIL::Module *module, RTLIL::IdString new_name); + + void scratchpad_unset(const std::string &varname); + + void scratchpad_set_int(const std::string &varname, int value); + void scratchpad_set_bool(const std::string &varname, bool value); + void scratchpad_set_string(const std::string &varname, std::string value); + + int scratchpad_get_int(const std::string &varname, int default_value = 0) const; + bool scratchpad_get_bool(const std::string &varname, bool default_value = false) const; + std::string scratchpad_get_string(const std::string &varname, const std::string &default_value = std::string()) const; + + void sort(); + void check(); + void optimize(); + + bool selected_module(const RTLIL::IdString &mod_name) const; + bool selected_whole_module(const RTLIL::IdString &mod_name) const; + bool selected_member(const RTLIL::IdString &mod_name, const RTLIL::IdString &memb_name) const; + + bool selected_module(RTLIL::Module *mod) const; + bool selected_whole_module(RTLIL::Module *mod) const; + + RTLIL::Selection &selection() { + return selection_stack.back(); + } + + const RTLIL::Selection &selection() const { + return selection_stack.back(); + } + + bool full_selection() const { + return selection_stack.back().full_selection; + } + + template bool selected(T1 *module) const { + return selected_module(module->name); + } + + template bool selected(T1 *module, T2 *member) const { + return selected_member(module->name, member->name); + } + + template void select(T1 *module) { + if (selection_stack.size() > 0) { + RTLIL::Selection &sel = selection_stack.back(); + sel.select(module); + } + } + + template void select(T1 *module, T2 *member) { + if (selection_stack.size() > 0) { + RTLIL::Selection &sel = selection_stack.back(); + sel.select(module, member); + } + } + + + std::vector selected_modules() const; + std::vector selected_whole_modules() const; + std::vector selected_whole_modules_warn(bool include_wb = false) const; +#ifdef WITH_PYTHON + static std::map *get_all_designs(void); +#endif +}; + +struct RTLIL::Module : public RTLIL::AttrObject +{ + unsigned int hashidx_; + unsigned int hash() const { return hashidx_; } + +protected: + void add(RTLIL::Wire *wire); + void add(RTLIL::Cell *cell); + void add(RTLIL::Process *process); + +public: + RTLIL::Design *design; + pool monitors; + + int refcount_wires_; + int refcount_cells_; + + dict wires_; + dict cells_; + + std::vector connections_; + std::vector bindings_; + + RTLIL::IdString name; + idict avail_parameters; + dict parameter_default_values; + dict memories; + dict processes; + + Module(); + virtual ~Module(); + virtual RTLIL::IdString derive(RTLIL::Design *design, const dict ¶meters, bool mayfail = false); + virtual RTLIL::IdString derive(RTLIL::Design *design, const dict ¶meters, const dict &interfaces, const dict &modports, bool mayfail = false); + virtual size_t count_id(const RTLIL::IdString& id); + virtual void expand_interfaces(RTLIL::Design *design, const dict &local_interfaces); + virtual bool reprocess_if_necessary(RTLIL::Design *design); + + virtual void sort(); + virtual void check(); + virtual void optimize(); + virtual void makeblackbox(); + + void connect(const RTLIL::SigSig &conn); + void connect(const RTLIL::SigSpec &lhs, const RTLIL::SigSpec &rhs); + void new_connections(const std::vector &new_conn); + const std::vector &connections() const; + + std::vector ports; + void fixup_ports(); + + template void rewrite_sigspecs(T &functor); + template void rewrite_sigspecs2(T &functor); + void cloneInto(RTLIL::Module *new_mod) const; + virtual RTLIL::Module *clone() const; + + bool has_memories() const; + bool has_processes() const; + + bool has_memories_warn() const; + bool has_processes_warn() const; + + std::vector selected_wires() const; + std::vector selected_cells() const; + + template bool selected(T *member) const { + return design->selected_member(name, member->name); + } + + RTLIL::Wire* wire(const RTLIL::IdString &id) { + auto it = wires_.find(id); + return it == wires_.end() ? nullptr : it->second; + } + RTLIL::Cell* cell(const RTLIL::IdString &id) { + auto it = cells_.find(id); + return it == cells_.end() ? nullptr : it->second; + } + + const RTLIL::Wire* wire(const RTLIL::IdString &id) const{ + auto it = wires_.find(id); + return it == wires_.end() ? nullptr : it->second; + } + const RTLIL::Cell* cell(const RTLIL::IdString &id) const { + auto it = cells_.find(id); + return it == cells_.end() ? nullptr : it->second; + } + + RTLIL::ObjRange wires() { return RTLIL::ObjRange(&wires_, &refcount_wires_); } + RTLIL::ObjRange cells() { return RTLIL::ObjRange(&cells_, &refcount_cells_); } + + void add(RTLIL::Binding *binding); + + // Removing wires is expensive. If you have to remove wires, remove them all at once. + void remove(const pool &wires); + void remove(RTLIL::Cell *cell); + void remove(RTLIL::Process *process); + + void rename(RTLIL::Wire *wire, RTLIL::IdString new_name); + void rename(RTLIL::Cell *cell, RTLIL::IdString new_name); + void rename(RTLIL::IdString old_name, RTLIL::IdString new_name); + + void swap_names(RTLIL::Wire *w1, RTLIL::Wire *w2); + void swap_names(RTLIL::Cell *c1, RTLIL::Cell *c2); + + RTLIL::IdString uniquify(RTLIL::IdString name); + RTLIL::IdString uniquify(RTLIL::IdString name, int &index); + + RTLIL::Wire *addWire(RTLIL::IdString name, int width = 1); + RTLIL::Wire *addWire(RTLIL::IdString name, const RTLIL::Wire *other); + + RTLIL::Cell *addCell(RTLIL::IdString name, RTLIL::IdString type); + RTLIL::Cell *addCell(RTLIL::IdString name, const RTLIL::Cell *other); + + RTLIL::Memory *addMemory(RTLIL::IdString name, const RTLIL::Memory *other); + + RTLIL::Process *addProcess(RTLIL::IdString name); + RTLIL::Process *addProcess(RTLIL::IdString name, const RTLIL::Process *other); + + // The add* methods create a cell and return the created cell. All signals must exist in advance. + + RTLIL::Cell* addNot (RTLIL::IdString name, const RTLIL::SigSpec &sig_a, const RTLIL::SigSpec &sig_y, bool is_signed = false, const std::string &src = ""); + RTLIL::Cell* addPos (RTLIL::IdString name, const RTLIL::SigSpec &sig_a, const RTLIL::SigSpec &sig_y, bool is_signed = false, const std::string &src = ""); + RTLIL::Cell* addNeg (RTLIL::IdString name, const RTLIL::SigSpec &sig_a, const RTLIL::SigSpec &sig_y, bool is_signed = false, const std::string &src = ""); + + RTLIL::Cell* addAnd (RTLIL::IdString name, const RTLIL::SigSpec &sig_a, const RTLIL::SigSpec &sig_b, const RTLIL::SigSpec &sig_y, bool is_signed = false, const std::string &src = ""); + RTLIL::Cell* addOr (RTLIL::IdString name, const RTLIL::SigSpec &sig_a, const RTLIL::SigSpec &sig_b, const RTLIL::SigSpec &sig_y, bool is_signed = false, const std::string &src = ""); + RTLIL::Cell* addXor (RTLIL::IdString name, const RTLIL::SigSpec &sig_a, const RTLIL::SigSpec &sig_b, const RTLIL::SigSpec &sig_y, bool is_signed = false, const std::string &src = ""); + RTLIL::Cell* addXnor (RTLIL::IdString name, const RTLIL::SigSpec &sig_a, const RTLIL::SigSpec &sig_b, const RTLIL::SigSpec &sig_y, bool is_signed = false, const std::string &src = ""); + + RTLIL::Cell* addReduceAnd (RTLIL::IdString name, const RTLIL::SigSpec &sig_a, const RTLIL::SigSpec &sig_y, bool is_signed = false, const std::string &src = ""); + RTLIL::Cell* addReduceOr (RTLIL::IdString name, const RTLIL::SigSpec &sig_a, const RTLIL::SigSpec &sig_y, bool is_signed = false, const std::string &src = ""); + RTLIL::Cell* addReduceXor (RTLIL::IdString name, const RTLIL::SigSpec &sig_a, const RTLIL::SigSpec &sig_y, bool is_signed = false, const std::string &src = ""); + RTLIL::Cell* addReduceXnor (RTLIL::IdString name, const RTLIL::SigSpec &sig_a, const RTLIL::SigSpec &sig_y, bool is_signed = false, const std::string &src = ""); + RTLIL::Cell* addReduceBool (RTLIL::IdString name, const RTLIL::SigSpec &sig_a, const RTLIL::SigSpec &sig_y, bool is_signed = false, const std::string &src = ""); + + RTLIL::Cell* addShl (RTLIL::IdString name, const RTLIL::SigSpec &sig_a, const RTLIL::SigSpec &sig_b, const RTLIL::SigSpec &sig_y, bool is_signed = false, const std::string &src = ""); + RTLIL::Cell* addShr (RTLIL::IdString name, const RTLIL::SigSpec &sig_a, const RTLIL::SigSpec &sig_b, const RTLIL::SigSpec &sig_y, bool is_signed = false, const std::string &src = ""); + RTLIL::Cell* addSshl (RTLIL::IdString name, const RTLIL::SigSpec &sig_a, const RTLIL::SigSpec &sig_b, const RTLIL::SigSpec &sig_y, bool is_signed = false, const std::string &src = ""); + RTLIL::Cell* addSshr (RTLIL::IdString name, const RTLIL::SigSpec &sig_a, const RTLIL::SigSpec &sig_b, const RTLIL::SigSpec &sig_y, bool is_signed = false, const std::string &src = ""); + RTLIL::Cell* addShift (RTLIL::IdString name, const RTLIL::SigSpec &sig_a, const RTLIL::SigSpec &sig_b, const RTLIL::SigSpec &sig_y, bool is_signed = false, const std::string &src = ""); + RTLIL::Cell* addShiftx (RTLIL::IdString name, const RTLIL::SigSpec &sig_a, const RTLIL::SigSpec &sig_b, const RTLIL::SigSpec &sig_y, bool is_signed = false, const std::string &src = ""); + + RTLIL::Cell* addLt (RTLIL::IdString name, const RTLIL::SigSpec &sig_a, const RTLIL::SigSpec &sig_b, const RTLIL::SigSpec &sig_y, bool is_signed = false, const std::string &src = ""); + RTLIL::Cell* addLe (RTLIL::IdString name, const RTLIL::SigSpec &sig_a, const RTLIL::SigSpec &sig_b, const RTLIL::SigSpec &sig_y, bool is_signed = false, const std::string &src = ""); + RTLIL::Cell* addEq (RTLIL::IdString name, const RTLIL::SigSpec &sig_a, const RTLIL::SigSpec &sig_b, const RTLIL::SigSpec &sig_y, bool is_signed = false, const std::string &src = ""); + RTLIL::Cell* addNe (RTLIL::IdString name, const RTLIL::SigSpec &sig_a, const RTLIL::SigSpec &sig_b, const RTLIL::SigSpec &sig_y, bool is_signed = false, const std::string &src = ""); + RTLIL::Cell* addEqx (RTLIL::IdString name, const RTLIL::SigSpec &sig_a, const RTLIL::SigSpec &sig_b, const RTLIL::SigSpec &sig_y, bool is_signed = false, const std::string &src = ""); + RTLIL::Cell* addNex (RTLIL::IdString name, const RTLIL::SigSpec &sig_a, const RTLIL::SigSpec &sig_b, const RTLIL::SigSpec &sig_y, bool is_signed = false, const std::string &src = ""); + RTLIL::Cell* addGe (RTLIL::IdString name, const RTLIL::SigSpec &sig_a, const RTLIL::SigSpec &sig_b, const RTLIL::SigSpec &sig_y, bool is_signed = false, const std::string &src = ""); + RTLIL::Cell* addGt (RTLIL::IdString name, const RTLIL::SigSpec &sig_a, const RTLIL::SigSpec &sig_b, const RTLIL::SigSpec &sig_y, bool is_signed = false, const std::string &src = ""); + + RTLIL::Cell* addAdd (RTLIL::IdString name, const RTLIL::SigSpec &sig_a, const RTLIL::SigSpec &sig_b, const RTLIL::SigSpec &sig_y, bool is_signed = false, const std::string &src = ""); + RTLIL::Cell* addSub (RTLIL::IdString name, const RTLIL::SigSpec &sig_a, const RTLIL::SigSpec &sig_b, const RTLIL::SigSpec &sig_y, bool is_signed = false, const std::string &src = ""); + RTLIL::Cell* addMul (RTLIL::IdString name, const RTLIL::SigSpec &sig_a, const RTLIL::SigSpec &sig_b, const RTLIL::SigSpec &sig_y, bool is_signed = false, const std::string &src = ""); + // truncating division + RTLIL::Cell* addDiv (RTLIL::IdString name, const RTLIL::SigSpec &sig_a, const RTLIL::SigSpec &sig_b, const RTLIL::SigSpec &sig_y, bool is_signed = false, const std::string &src = ""); + // truncating modulo + RTLIL::Cell* addMod (RTLIL::IdString name, const RTLIL::SigSpec &sig_a, const RTLIL::SigSpec &sig_b, const RTLIL::SigSpec &sig_y, bool is_signed = false, const std::string &src = ""); + RTLIL::Cell* addDivFloor (RTLIL::IdString name, const RTLIL::SigSpec &sig_a, const RTLIL::SigSpec &sig_b, const RTLIL::SigSpec &sig_y, bool is_signed = false, const std::string &src = ""); + RTLIL::Cell* addModFloor (RTLIL::IdString name, const RTLIL::SigSpec &sig_a, const RTLIL::SigSpec &sig_b, const RTLIL::SigSpec &sig_y, bool is_signed = false, const std::string &src = ""); + RTLIL::Cell* addPow (RTLIL::IdString name, const RTLIL::SigSpec &sig_a, const RTLIL::SigSpec &sig_b, const RTLIL::SigSpec &sig_y, bool a_signed = false, bool b_signed = false, const std::string &src = ""); + + RTLIL::Cell* addLogicNot (RTLIL::IdString name, const RTLIL::SigSpec &sig_a, const RTLIL::SigSpec &sig_y, bool is_signed = false, const std::string &src = ""); + RTLIL::Cell* addLogicAnd (RTLIL::IdString name, const RTLIL::SigSpec &sig_a, const RTLIL::SigSpec &sig_b, const RTLIL::SigSpec &sig_y, bool is_signed = false, const std::string &src = ""); + RTLIL::Cell* addLogicOr (RTLIL::IdString name, const RTLIL::SigSpec &sig_a, const RTLIL::SigSpec &sig_b, const RTLIL::SigSpec &sig_y, bool is_signed = false, const std::string &src = ""); + + RTLIL::Cell* addMux (RTLIL::IdString name, const RTLIL::SigSpec &sig_a, const RTLIL::SigSpec &sig_b, const RTLIL::SigSpec &sig_s, const RTLIL::SigSpec &sig_y, const std::string &src = ""); + RTLIL::Cell* addPmux (RTLIL::IdString name, const RTLIL::SigSpec &sig_a, const RTLIL::SigSpec &sig_b, const RTLIL::SigSpec &sig_s, const RTLIL::SigSpec &sig_y, const std::string &src = ""); + RTLIL::Cell* addBmux (RTLIL::IdString name, const RTLIL::SigSpec &sig_a, const RTLIL::SigSpec &sig_s, const RTLIL::SigSpec &sig_y, const std::string &src = ""); + RTLIL::Cell* addDemux (RTLIL::IdString name, const RTLIL::SigSpec &sig_a, const RTLIL::SigSpec &sig_s, const RTLIL::SigSpec &sig_y, const std::string &src = ""); + + RTLIL::Cell* addSlice (RTLIL::IdString name, const RTLIL::SigSpec &sig_a, const RTLIL::SigSpec &sig_y, RTLIL::Const offset, const std::string &src = ""); + RTLIL::Cell* addConcat (RTLIL::IdString name, const RTLIL::SigSpec &sig_a, const RTLIL::SigSpec &sig_b, const RTLIL::SigSpec &sig_y, const std::string &src = ""); + RTLIL::Cell* addLut (RTLIL::IdString name, const RTLIL::SigSpec &sig_a, const RTLIL::SigSpec &sig_y, RTLIL::Const lut, const std::string &src = ""); + RTLIL::Cell* addTribuf (RTLIL::IdString name, const RTLIL::SigSpec &sig_a, const RTLIL::SigSpec &sig_en, const RTLIL::SigSpec &sig_y, const std::string &src = ""); + RTLIL::Cell* addAssert (RTLIL::IdString name, const RTLIL::SigSpec &sig_a, const RTLIL::SigSpec &sig_en, const std::string &src = ""); + RTLIL::Cell* addAssume (RTLIL::IdString name, const RTLIL::SigSpec &sig_a, const RTLIL::SigSpec &sig_en, const std::string &src = ""); + RTLIL::Cell* addLive (RTLIL::IdString name, const RTLIL::SigSpec &sig_a, const RTLIL::SigSpec &sig_en, const std::string &src = ""); + RTLIL::Cell* addFair (RTLIL::IdString name, const RTLIL::SigSpec &sig_a, const RTLIL::SigSpec &sig_en, const std::string &src = ""); + RTLIL::Cell* addCover (RTLIL::IdString name, const RTLIL::SigSpec &sig_a, const RTLIL::SigSpec &sig_en, const std::string &src = ""); + RTLIL::Cell* addEquiv (RTLIL::IdString name, const RTLIL::SigSpec &sig_a, const RTLIL::SigSpec &sig_b, const RTLIL::SigSpec &sig_y, const std::string &src = ""); + + RTLIL::Cell* addSr (RTLIL::IdString name, const RTLIL::SigSpec &sig_set, const RTLIL::SigSpec &sig_clr, const RTLIL::SigSpec &sig_q, bool set_polarity = true, bool clr_polarity = true, const std::string &src = ""); + RTLIL::Cell* addFf (RTLIL::IdString name, const RTLIL::SigSpec &sig_d, const RTLIL::SigSpec &sig_q, const std::string &src = ""); + RTLIL::Cell* addDff (RTLIL::IdString name, const RTLIL::SigSpec &sig_clk, const RTLIL::SigSpec &sig_d, const RTLIL::SigSpec &sig_q, bool clk_polarity = true, const std::string &src = ""); + RTLIL::Cell* addDffe (RTLIL::IdString name, const RTLIL::SigSpec &sig_clk, const RTLIL::SigSpec &sig_en, const RTLIL::SigSpec &sig_d, const RTLIL::SigSpec &sig_q, bool clk_polarity = true, bool en_polarity = true, const std::string &src = ""); + RTLIL::Cell* addDffsr (RTLIL::IdString name, const RTLIL::SigSpec &sig_clk, const RTLIL::SigSpec &sig_set, const RTLIL::SigSpec &sig_clr, RTLIL::SigSpec sig_d, const RTLIL::SigSpec &sig_q, bool clk_polarity = true, bool set_polarity = true, bool clr_polarity = true, const std::string &src = ""); + RTLIL::Cell* addDffsre (RTLIL::IdString name, const RTLIL::SigSpec &sig_clk, const RTLIL::SigSpec &sig_en, const RTLIL::SigSpec &sig_set, const RTLIL::SigSpec &sig_clr, RTLIL::SigSpec sig_d, const RTLIL::SigSpec &sig_q, bool clk_polarity = true, bool en_polarity = true, bool set_polarity = true, bool clr_polarity = true, const std::string &src = ""); + RTLIL::Cell* addAdff (RTLIL::IdString name, const RTLIL::SigSpec &sig_clk, const RTLIL::SigSpec &sig_arst, const RTLIL::SigSpec &sig_d, const RTLIL::SigSpec &sig_q, RTLIL::Const arst_value, bool clk_polarity = true, bool arst_polarity = true, const std::string &src = ""); + RTLIL::Cell* addAdffe (RTLIL::IdString name, const RTLIL::SigSpec &sig_clk, const RTLIL::SigSpec &sig_en, const RTLIL::SigSpec &sig_arst, const RTLIL::SigSpec &sig_d, const RTLIL::SigSpec &sig_q, RTLIL::Const arst_value, bool clk_polarity = true, bool en_polarity = true, bool arst_polarity = true, const std::string &src = ""); + RTLIL::Cell* addAldff (RTLIL::IdString name, const RTLIL::SigSpec &sig_clk, const RTLIL::SigSpec &sig_aload, const RTLIL::SigSpec &sig_d, const RTLIL::SigSpec &sig_q, const RTLIL::SigSpec &sig_ad, bool clk_polarity = true, bool aload_polarity = true, const std::string &src = ""); + RTLIL::Cell* addAldffe (RTLIL::IdString name, const RTLIL::SigSpec &sig_clk, const RTLIL::SigSpec &sig_en, const RTLIL::SigSpec &sig_aload, const RTLIL::SigSpec &sig_d, const RTLIL::SigSpec &sig_q, const RTLIL::SigSpec &sig_ad, bool clk_polarity = true, bool en_polarity = true, bool aload_polarity = true, const std::string &src = ""); + RTLIL::Cell* addSdff (RTLIL::IdString name, const RTLIL::SigSpec &sig_clk, const RTLIL::SigSpec &sig_srst, const RTLIL::SigSpec &sig_d, const RTLIL::SigSpec &sig_q, RTLIL::Const srst_value, bool clk_polarity = true, bool srst_polarity = true, const std::string &src = ""); + RTLIL::Cell* addSdffe (RTLIL::IdString name, const RTLIL::SigSpec &sig_clk, const RTLIL::SigSpec &sig_en, const RTLIL::SigSpec &sig_srst, const RTLIL::SigSpec &sig_d, const RTLIL::SigSpec &sig_q, RTLIL::Const srst_value, bool clk_polarity = true, bool en_polarity = true, bool srst_polarity = true, const std::string &src = ""); + RTLIL::Cell* addSdffce (RTLIL::IdString name, const RTLIL::SigSpec &sig_clk, const RTLIL::SigSpec &sig_en, const RTLIL::SigSpec &sig_srst, const RTLIL::SigSpec &sig_d, const RTLIL::SigSpec &sig_q, RTLIL::Const srst_value, bool clk_polarity = true, bool en_polarity = true, bool srst_polarity = true, const std::string &src = ""); + RTLIL::Cell* addDlatch (RTLIL::IdString name, const RTLIL::SigSpec &sig_en, const RTLIL::SigSpec &sig_d, const RTLIL::SigSpec &sig_q, bool en_polarity = true, const std::string &src = ""); + RTLIL::Cell* addAdlatch (RTLIL::IdString name, const RTLIL::SigSpec &sig_en, const RTLIL::SigSpec &sig_arst, const RTLIL::SigSpec &sig_d, const RTLIL::SigSpec &sig_q, RTLIL::Const arst_value, bool en_polarity = true, bool arst_polarity = true, const std::string &src = ""); + RTLIL::Cell* addDlatchsr (RTLIL::IdString name, const RTLIL::SigSpec &sig_en, const RTLIL::SigSpec &sig_set, const RTLIL::SigSpec &sig_clr, RTLIL::SigSpec sig_d, const RTLIL::SigSpec &sig_q, bool en_polarity = true, bool set_polarity = true, bool clr_polarity = true, const std::string &src = ""); + + RTLIL::Cell* addBufGate (RTLIL::IdString name, const RTLIL::SigBit &sig_a, const RTLIL::SigBit &sig_y, const std::string &src = ""); + RTLIL::Cell* addNotGate (RTLIL::IdString name, const RTLIL::SigBit &sig_a, const RTLIL::SigBit &sig_y, const std::string &src = ""); + RTLIL::Cell* addAndGate (RTLIL::IdString name, const RTLIL::SigBit &sig_a, const RTLIL::SigBit &sig_b, const RTLIL::SigBit &sig_y, const std::string &src = ""); + RTLIL::Cell* addNandGate (RTLIL::IdString name, const RTLIL::SigBit &sig_a, const RTLIL::SigBit &sig_b, const RTLIL::SigBit &sig_y, const std::string &src = ""); + RTLIL::Cell* addOrGate (RTLIL::IdString name, const RTLIL::SigBit &sig_a, const RTLIL::SigBit &sig_b, const RTLIL::SigBit &sig_y, const std::string &src = ""); + RTLIL::Cell* addNorGate (RTLIL::IdString name, const RTLIL::SigBit &sig_a, const RTLIL::SigBit &sig_b, const RTLIL::SigBit &sig_y, const std::string &src = ""); + RTLIL::Cell* addXorGate (RTLIL::IdString name, const RTLIL::SigBit &sig_a, const RTLIL::SigBit &sig_b, const RTLIL::SigBit &sig_y, const std::string &src = ""); + RTLIL::Cell* addXnorGate (RTLIL::IdString name, const RTLIL::SigBit &sig_a, const RTLIL::SigBit &sig_b, const RTLIL::SigBit &sig_y, const std::string &src = ""); + RTLIL::Cell* addAndnotGate (RTLIL::IdString name, const RTLIL::SigBit &sig_a, const RTLIL::SigBit &sig_b, const RTLIL::SigBit &sig_y, const std::string &src = ""); + RTLIL::Cell* addOrnotGate (RTLIL::IdString name, const RTLIL::SigBit &sig_a, const RTLIL::SigBit &sig_b, const RTLIL::SigBit &sig_y, const std::string &src = ""); + RTLIL::Cell* addMuxGate (RTLIL::IdString name, const RTLIL::SigBit &sig_a, const RTLIL::SigBit &sig_b, const RTLIL::SigBit &sig_s, const RTLIL::SigBit &sig_y, const std::string &src = ""); + RTLIL::Cell* addNmuxGate (RTLIL::IdString name, const RTLIL::SigBit &sig_a, const RTLIL::SigBit &sig_b, const RTLIL::SigBit &sig_s, const RTLIL::SigBit &sig_y, const std::string &src = ""); + RTLIL::Cell* addAoi3Gate (RTLIL::IdString name, const RTLIL::SigBit &sig_a, const RTLIL::SigBit &sig_b, const RTLIL::SigBit &sig_c, const RTLIL::SigBit &sig_y, const std::string &src = ""); + RTLIL::Cell* addOai3Gate (RTLIL::IdString name, const RTLIL::SigBit &sig_a, const RTLIL::SigBit &sig_b, const RTLIL::SigBit &sig_c, const RTLIL::SigBit &sig_y, const std::string &src = ""); + RTLIL::Cell* addAoi4Gate (RTLIL::IdString name, const RTLIL::SigBit &sig_a, const RTLIL::SigBit &sig_b, const RTLIL::SigBit &sig_c, const RTLIL::SigBit &sig_d, const RTLIL::SigBit &sig_y, const std::string &src = ""); + RTLIL::Cell* addOai4Gate (RTLIL::IdString name, const RTLIL::SigBit &sig_a, const RTLIL::SigBit &sig_b, const RTLIL::SigBit &sig_c, const RTLIL::SigBit &sig_d, const RTLIL::SigBit &sig_y, const std::string &src = ""); + + RTLIL::Cell* addSrGate (RTLIL::IdString name, const RTLIL::SigSpec &sig_set, const RTLIL::SigSpec &sig_clr, + const RTLIL::SigSpec &sig_q, bool set_polarity = true, bool clr_polarity = true, const std::string &src = ""); + RTLIL::Cell* addFfGate (RTLIL::IdString name, const RTLIL::SigSpec &sig_d, const RTLIL::SigSpec &sig_q, const std::string &src = ""); + RTLIL::Cell* addDffGate (RTLIL::IdString name, const RTLIL::SigSpec &sig_clk, const RTLIL::SigSpec &sig_d, const RTLIL::SigSpec &sig_q, bool clk_polarity = true, const std::string &src = ""); + RTLIL::Cell* addDffeGate (RTLIL::IdString name, const RTLIL::SigSpec &sig_clk, const RTLIL::SigSpec &sig_en, const RTLIL::SigSpec &sig_d, const RTLIL::SigSpec &sig_q, bool clk_polarity = true, bool en_polarity = true, const std::string &src = ""); + RTLIL::Cell* addDffsrGate (RTLIL::IdString name, const RTLIL::SigSpec &sig_clk, const RTLIL::SigSpec &sig_set, const RTLIL::SigSpec &sig_clr, + RTLIL::SigSpec sig_d, const RTLIL::SigSpec &sig_q, bool clk_polarity = true, bool set_polarity = true, bool clr_polarity = true, const std::string &src = ""); + RTLIL::Cell* addDffsreGate (RTLIL::IdString name, const RTLIL::SigSpec &sig_clk, const RTLIL::SigSpec &sig_en, const RTLIL::SigSpec &sig_set, const RTLIL::SigSpec &sig_clr, + RTLIL::SigSpec sig_d, const RTLIL::SigSpec &sig_q, bool clk_polarity = true, bool en_polarity = true, bool set_polarity = true, bool clr_polarity = true, const std::string &src = ""); + RTLIL::Cell* addAdffGate (RTLIL::IdString name, const RTLIL::SigSpec &sig_clk, const RTLIL::SigSpec &sig_arst, const RTLIL::SigSpec &sig_d, const RTLIL::SigSpec &sig_q, + bool arst_value = false, bool clk_polarity = true, bool arst_polarity = true, const std::string &src = ""); + RTLIL::Cell* addAdffeGate (RTLIL::IdString name, const RTLIL::SigSpec &sig_clk, const RTLIL::SigSpec &sig_en, const RTLIL::SigSpec &sig_arst, const RTLIL::SigSpec &sig_d, const RTLIL::SigSpec &sig_q, + bool arst_value = false, bool clk_polarity = true, bool en_polarity = true, bool arst_polarity = true, const std::string &src = ""); + RTLIL::Cell* addAldffGate (RTLIL::IdString name, const RTLIL::SigSpec &sig_clk, const RTLIL::SigSpec &sig_aload, const RTLIL::SigSpec &sig_d, const RTLIL::SigSpec &sig_q, + const RTLIL::SigSpec &sig_ad, bool clk_polarity = true, bool aload_polarity = true, const std::string &src = ""); + RTLIL::Cell* addAldffeGate (RTLIL::IdString name, const RTLIL::SigSpec &sig_clk, const RTLIL::SigSpec &sig_en, const RTLIL::SigSpec &sig_aload, const RTLIL::SigSpec &sig_d, const RTLIL::SigSpec &sig_q, + const RTLIL::SigSpec &sig_ad, bool clk_polarity = true, bool en_polarity = true, bool aload_polarity = true, const std::string &src = ""); + RTLIL::Cell* addSdffGate (RTLIL::IdString name, const RTLIL::SigSpec &sig_clk, const RTLIL::SigSpec &sig_srst, const RTLIL::SigSpec &sig_d, const RTLIL::SigSpec &sig_q, + bool srst_value = false, bool clk_polarity = true, bool srst_polarity = true, const std::string &src = ""); + RTLIL::Cell* addSdffeGate (RTLIL::IdString name, const RTLIL::SigSpec &sig_clk, const RTLIL::SigSpec &sig_en, const RTLIL::SigSpec &sig_srst, const RTLIL::SigSpec &sig_d, const RTLIL::SigSpec &sig_q, + bool srst_value = false, bool clk_polarity = true, bool en_polarity = true, bool srst_polarity = true, const std::string &src = ""); + RTLIL::Cell* addSdffceGate (RTLIL::IdString name, const RTLIL::SigSpec &sig_clk, const RTLIL::SigSpec &sig_en, const RTLIL::SigSpec &sig_srst, const RTLIL::SigSpec &sig_d, const RTLIL::SigSpec &sig_q, + bool srst_value = false, bool clk_polarity = true, bool en_polarity = true, bool srst_polarity = true, const std::string &src = ""); + RTLIL::Cell* addDlatchGate (RTLIL::IdString name, const RTLIL::SigSpec &sig_en, const RTLIL::SigSpec &sig_d, const RTLIL::SigSpec &sig_q, bool en_polarity = true, const std::string &src = ""); + RTLIL::Cell* addAdlatchGate(RTLIL::IdString name, const RTLIL::SigSpec &sig_en, const RTLIL::SigSpec &sig_arst, const RTLIL::SigSpec &sig_d, const RTLIL::SigSpec &sig_q, + bool arst_value = false, bool en_polarity = true, bool arst_polarity = true, const std::string &src = ""); + RTLIL::Cell* addDlatchsrGate (RTLIL::IdString name, const RTLIL::SigSpec &sig_en, const RTLIL::SigSpec &sig_set, const RTLIL::SigSpec &sig_clr, + RTLIL::SigSpec sig_d, const RTLIL::SigSpec &sig_q, bool en_polarity = true, bool set_polarity = true, bool clr_polarity = true, const std::string &src = ""); + + RTLIL::Cell* addAnyinit(RTLIL::IdString name, const RTLIL::SigSpec &sig_d, const RTLIL::SigSpec &sig_q, const std::string &src = ""); + + // The methods without the add* prefix create a cell and an output signal. They return the newly created output signal. + + RTLIL::SigSpec Not (RTLIL::IdString name, const RTLIL::SigSpec &sig_a, bool is_signed = false, const std::string &src = ""); + RTLIL::SigSpec Pos (RTLIL::IdString name, const RTLIL::SigSpec &sig_a, bool is_signed = false, const std::string &src = ""); + RTLIL::SigSpec Neg (RTLIL::IdString name, const RTLIL::SigSpec &sig_a, bool is_signed = false, const std::string &src = ""); + + RTLIL::SigSpec And (RTLIL::IdString name, const RTLIL::SigSpec &sig_a, const RTLIL::SigSpec &sig_b, bool is_signed = false, const std::string &src = ""); + RTLIL::SigSpec Or (RTLIL::IdString name, const RTLIL::SigSpec &sig_a, const RTLIL::SigSpec &sig_b, bool is_signed = false, const std::string &src = ""); + RTLIL::SigSpec Xor (RTLIL::IdString name, const RTLIL::SigSpec &sig_a, const RTLIL::SigSpec &sig_b, bool is_signed = false, const std::string &src = ""); + RTLIL::SigSpec Xnor (RTLIL::IdString name, const RTLIL::SigSpec &sig_a, const RTLIL::SigSpec &sig_b, bool is_signed = false, const std::string &src = ""); + + RTLIL::SigSpec ReduceAnd (RTLIL::IdString name, const RTLIL::SigSpec &sig_a, bool is_signed = false, const std::string &src = ""); + RTLIL::SigSpec ReduceOr (RTLIL::IdString name, const RTLIL::SigSpec &sig_a, bool is_signed = false, const std::string &src = ""); + RTLIL::SigSpec ReduceXor (RTLIL::IdString name, const RTLIL::SigSpec &sig_a, bool is_signed = false, const std::string &src = ""); + RTLIL::SigSpec ReduceXnor (RTLIL::IdString name, const RTLIL::SigSpec &sig_a, bool is_signed = false, const std::string &src = ""); + RTLIL::SigSpec ReduceBool (RTLIL::IdString name, const RTLIL::SigSpec &sig_a, bool is_signed = false, const std::string &src = ""); + + RTLIL::SigSpec Shl (RTLIL::IdString name, const RTLIL::SigSpec &sig_a, const RTLIL::SigSpec &sig_b, bool is_signed = false, const std::string &src = ""); + RTLIL::SigSpec Shr (RTLIL::IdString name, const RTLIL::SigSpec &sig_a, const RTLIL::SigSpec &sig_b, bool is_signed = false, const std::string &src = ""); + RTLIL::SigSpec Sshl (RTLIL::IdString name, const RTLIL::SigSpec &sig_a, const RTLIL::SigSpec &sig_b, bool is_signed = false, const std::string &src = ""); + RTLIL::SigSpec Sshr (RTLIL::IdString name, const RTLIL::SigSpec &sig_a, const RTLIL::SigSpec &sig_b, bool is_signed = false, const std::string &src = ""); + RTLIL::SigSpec Shift (RTLIL::IdString name, const RTLIL::SigSpec &sig_a, const RTLIL::SigSpec &sig_b, bool is_signed = false, const std::string &src = ""); + RTLIL::SigSpec Shiftx (RTLIL::IdString name, const RTLIL::SigSpec &sig_a, const RTLIL::SigSpec &sig_b, bool is_signed = false, const std::string &src = ""); + + RTLIL::SigSpec Lt (RTLIL::IdString name, const RTLIL::SigSpec &sig_a, const RTLIL::SigSpec &sig_b, bool is_signed = false, const std::string &src = ""); + RTLIL::SigSpec Le (RTLIL::IdString name, const RTLIL::SigSpec &sig_a, const RTLIL::SigSpec &sig_b, bool is_signed = false, const std::string &src = ""); + RTLIL::SigSpec Eq (RTLIL::IdString name, const RTLIL::SigSpec &sig_a, const RTLIL::SigSpec &sig_b, bool is_signed = false, const std::string &src = ""); + RTLIL::SigSpec Ne (RTLIL::IdString name, const RTLIL::SigSpec &sig_a, const RTLIL::SigSpec &sig_b, bool is_signed = false, const std::string &src = ""); + RTLIL::SigSpec Eqx (RTLIL::IdString name, const RTLIL::SigSpec &sig_a, const RTLIL::SigSpec &sig_b, bool is_signed = false, const std::string &src = ""); + RTLIL::SigSpec Nex (RTLIL::IdString name, const RTLIL::SigSpec &sig_a, const RTLIL::SigSpec &sig_b, bool is_signed = false, const std::string &src = ""); + RTLIL::SigSpec Ge (RTLIL::IdString name, const RTLIL::SigSpec &sig_a, const RTLIL::SigSpec &sig_b, bool is_signed = false, const std::string &src = ""); + RTLIL::SigSpec Gt (RTLIL::IdString name, const RTLIL::SigSpec &sig_a, const RTLIL::SigSpec &sig_b, bool is_signed = false, const std::string &src = ""); + + RTLIL::SigSpec Add (RTLIL::IdString name, const RTLIL::SigSpec &sig_a, const RTLIL::SigSpec &sig_b, bool is_signed = false, const std::string &src = ""); + RTLIL::SigSpec Sub (RTLIL::IdString name, const RTLIL::SigSpec &sig_a, const RTLIL::SigSpec &sig_b, bool is_signed = false, const std::string &src = ""); + RTLIL::SigSpec Mul (RTLIL::IdString name, const RTLIL::SigSpec &sig_a, const RTLIL::SigSpec &sig_b, bool is_signed = false, const std::string &src = ""); + // truncating division + RTLIL::SigSpec Div (RTLIL::IdString name, const RTLIL::SigSpec &sig_a, const RTLIL::SigSpec &sig_b, bool is_signed = false, const std::string &src = ""); + // truncating modulo + RTLIL::SigSpec Mod (RTLIL::IdString name, const RTLIL::SigSpec &sig_a, const RTLIL::SigSpec &sig_b, bool is_signed = false, const std::string &src = ""); + RTLIL::SigSpec DivFloor (RTLIL::IdString name, const RTLIL::SigSpec &sig_a, const RTLIL::SigSpec &sig_b, bool is_signed = false, const std::string &src = ""); + RTLIL::SigSpec ModFloor (RTLIL::IdString name, const RTLIL::SigSpec &sig_a, const RTLIL::SigSpec &sig_b, bool is_signed = false, const std::string &src = ""); + RTLIL::SigSpec Pow (RTLIL::IdString name, const RTLIL::SigSpec &sig_a, const RTLIL::SigSpec &sig_b, bool a_signed = false, bool b_signed = false, const std::string &src = ""); + + RTLIL::SigSpec LogicNot (RTLIL::IdString name, const RTLIL::SigSpec &sig_a, bool is_signed = false, const std::string &src = ""); + RTLIL::SigSpec LogicAnd (RTLIL::IdString name, const RTLIL::SigSpec &sig_a, const RTLIL::SigSpec &sig_b, bool is_signed = false, const std::string &src = ""); + RTLIL::SigSpec LogicOr (RTLIL::IdString name, const RTLIL::SigSpec &sig_a, const RTLIL::SigSpec &sig_b, bool is_signed = false, const std::string &src = ""); + + RTLIL::SigSpec Mux (RTLIL::IdString name, const RTLIL::SigSpec &sig_a, const RTLIL::SigSpec &sig_b, const RTLIL::SigSpec &sig_s, const std::string &src = ""); + RTLIL::SigSpec Pmux (RTLIL::IdString name, const RTLIL::SigSpec &sig_a, const RTLIL::SigSpec &sig_b, const RTLIL::SigSpec &sig_s, const std::string &src = ""); + RTLIL::SigSpec Bmux (RTLIL::IdString name, const RTLIL::SigSpec &sig_a, const RTLIL::SigSpec &sig_s, const std::string &src = ""); + RTLIL::SigSpec Demux (RTLIL::IdString name, const RTLIL::SigSpec &sig_a, const RTLIL::SigSpec &sig_s, const std::string &src = ""); + + RTLIL::SigBit BufGate (RTLIL::IdString name, const RTLIL::SigBit &sig_a, const std::string &src = ""); + RTLIL::SigBit NotGate (RTLIL::IdString name, const RTLIL::SigBit &sig_a, const std::string &src = ""); + RTLIL::SigBit AndGate (RTLIL::IdString name, const RTLIL::SigBit &sig_a, const RTLIL::SigBit &sig_b, const std::string &src = ""); + RTLIL::SigBit NandGate (RTLIL::IdString name, const RTLIL::SigBit &sig_a, const RTLIL::SigBit &sig_b, const std::string &src = ""); + RTLIL::SigBit OrGate (RTLIL::IdString name, const RTLIL::SigBit &sig_a, const RTLIL::SigBit &sig_b, const std::string &src = ""); + RTLIL::SigBit NorGate (RTLIL::IdString name, const RTLIL::SigBit &sig_a, const RTLIL::SigBit &sig_b, const std::string &src = ""); + RTLIL::SigBit XorGate (RTLIL::IdString name, const RTLIL::SigBit &sig_a, const RTLIL::SigBit &sig_b, const std::string &src = ""); + RTLIL::SigBit XnorGate (RTLIL::IdString name, const RTLIL::SigBit &sig_a, const RTLIL::SigBit &sig_b, const std::string &src = ""); + RTLIL::SigBit AndnotGate (RTLIL::IdString name, const RTLIL::SigBit &sig_a, const RTLIL::SigBit &sig_b, const std::string &src = ""); + RTLIL::SigBit OrnotGate (RTLIL::IdString name, const RTLIL::SigBit &sig_a, const RTLIL::SigBit &sig_b, const std::string &src = ""); + RTLIL::SigBit MuxGate (RTLIL::IdString name, const RTLIL::SigBit &sig_a, const RTLIL::SigBit &sig_b, const RTLIL::SigBit &sig_s, const std::string &src = ""); + RTLIL::SigBit NmuxGate (RTLIL::IdString name, const RTLIL::SigBit &sig_a, const RTLIL::SigBit &sig_b, const RTLIL::SigBit &sig_s, const std::string &src = ""); + RTLIL::SigBit Aoi3Gate (RTLIL::IdString name, const RTLIL::SigBit &sig_a, const RTLIL::SigBit &sig_b, const RTLIL::SigBit &sig_c, const std::string &src = ""); + RTLIL::SigBit Oai3Gate (RTLIL::IdString name, const RTLIL::SigBit &sig_a, const RTLIL::SigBit &sig_b, const RTLIL::SigBit &sig_c, const std::string &src = ""); + RTLIL::SigBit Aoi4Gate (RTLIL::IdString name, const RTLIL::SigBit &sig_a, const RTLIL::SigBit &sig_b, const RTLIL::SigBit &sig_c, const RTLIL::SigBit &sig_d, const std::string &src = ""); + RTLIL::SigBit Oai4Gate (RTLIL::IdString name, const RTLIL::SigBit &sig_a, const RTLIL::SigBit &sig_b, const RTLIL::SigBit &sig_c, const RTLIL::SigBit &sig_d, const std::string &src = ""); + + RTLIL::SigSpec Anyconst (RTLIL::IdString name, int width = 1, const std::string &src = ""); + RTLIL::SigSpec Anyseq (RTLIL::IdString name, int width = 1, const std::string &src = ""); + RTLIL::SigSpec Allconst (RTLIL::IdString name, int width = 1, const std::string &src = ""); + RTLIL::SigSpec Allseq (RTLIL::IdString name, int width = 1, const std::string &src = ""); + RTLIL::SigSpec Initstate (RTLIL::IdString name, const std::string &src = ""); + +#ifdef WITH_PYTHON + static std::map *get_all_modules(void); +#endif +}; + +struct RTLIL::Wire : public RTLIL::AttrObject +{ + unsigned int hashidx_; + unsigned int hash() const { return hashidx_; } + +protected: + // use module->addWire() and module->remove() to create or destroy wires + friend struct RTLIL::Module; + Wire(); + ~Wire(); + +public: + // do not simply copy wires + Wire(RTLIL::Wire &other) = delete; + void operator=(RTLIL::Wire &other) = delete; + + RTLIL::Module *module; + RTLIL::IdString name; + int width, start_offset, port_id; + bool port_input, port_output, upto, is_signed; + +#ifdef WITH_PYTHON + static std::map *get_all_wires(void); +#endif +}; + +inline int GetSize(RTLIL::Wire *wire) { + return wire->width; +} + +struct RTLIL::Memory : public RTLIL::AttrObject +{ + unsigned int hashidx_; + unsigned int hash() const { return hashidx_; } + + Memory(); + + RTLIL::IdString name; + int width, start_offset, size; +#ifdef WITH_PYTHON + ~Memory(); + static std::map *get_all_memorys(void); +#endif +}; + +struct RTLIL::Cell : public RTLIL::AttrObject +{ + unsigned int hashidx_; + unsigned int hash() const { return hashidx_; } + +protected: + // use module->addCell() and module->remove() to create or destroy cells + friend struct RTLIL::Module; + Cell(); + ~Cell(); + +public: + // do not simply copy cells + Cell(RTLIL::Cell &other) = delete; + void operator=(RTLIL::Cell &other) = delete; + + RTLIL::Module *module; + RTLIL::IdString name; + RTLIL::IdString type; + dict connections_; + dict parameters; + + // access cell ports + bool hasPort(const RTLIL::IdString &portname) const; + void unsetPort(const RTLIL::IdString &portname); + void setPort(const RTLIL::IdString &portname, RTLIL::SigSpec signal); + const RTLIL::SigSpec &getPort(const RTLIL::IdString &portname) const; + const dict &connections() const; + + // information about cell ports + bool known() const; + bool input(const RTLIL::IdString &portname) const; + bool output(const RTLIL::IdString &portname) const; + + // access cell parameters + bool hasParam(const RTLIL::IdString ¶mname) const; + void unsetParam(const RTLIL::IdString ¶mname); + void setParam(const RTLIL::IdString ¶mname, RTLIL::Const value); + const RTLIL::Const &getParam(const RTLIL::IdString ¶mname) const; + + void sort(); + void check(); + void fixup_parameters(bool set_a_signed = false, bool set_b_signed = false); + + bool has_keep_attr() const { + return get_bool_attribute(ID::keep) || (module && module->design && module->design->module(type) && + module->design->module(type)->get_bool_attribute(ID::keep)); + } + + template void rewrite_sigspecs(T &functor); + template void rewrite_sigspecs2(T &functor); + +#ifdef WITH_PYTHON + static std::map *get_all_cells(void); +#endif + + bool has_memid() const; + bool is_mem_cell() const; +}; + +struct RTLIL::CaseRule : public RTLIL::AttrObject +{ + std::vector compare; + std::vector actions; + std::vector switches; + + ~CaseRule(); + + bool empty() const; + + template void rewrite_sigspecs(T &functor); + template void rewrite_sigspecs2(T &functor); + RTLIL::CaseRule *clone() const; +}; + +struct RTLIL::SwitchRule : public RTLIL::AttrObject +{ + RTLIL::SigSpec signal; + std::vector cases; + + ~SwitchRule(); + + bool empty() const; + + template void rewrite_sigspecs(T &functor); + template void rewrite_sigspecs2(T &functor); + RTLIL::SwitchRule *clone() const; +}; + +struct RTLIL::MemWriteAction : RTLIL::AttrObject +{ + RTLIL::IdString memid; + RTLIL::SigSpec address; + RTLIL::SigSpec data; + RTLIL::SigSpec enable; + RTLIL::Const priority_mask; +}; + +struct RTLIL::SyncRule +{ + RTLIL::SyncType type; + RTLIL::SigSpec signal; + std::vector actions; + std::vector mem_write_actions; + + template void rewrite_sigspecs(T &functor); + template void rewrite_sigspecs2(T &functor); + RTLIL::SyncRule *clone() const; +}; + +struct RTLIL::Process : public RTLIL::AttrObject +{ + unsigned int hashidx_; + unsigned int hash() const { return hashidx_; } + +protected: + // use module->addProcess() and module->remove() to create or destroy processes + friend struct RTLIL::Module; + Process(); + ~Process(); + +public: + RTLIL::IdString name; + RTLIL::Module *module; + RTLIL::CaseRule root_case; + std::vector syncs; + + template void rewrite_sigspecs(T &functor); + template void rewrite_sigspecs2(T &functor); + RTLIL::Process *clone() const; +}; + + +inline RTLIL::SigBit::SigBit() : wire(NULL), data(RTLIL::State::S0) { } +inline RTLIL::SigBit::SigBit(RTLIL::State bit) : wire(NULL), data(bit) { } +inline RTLIL::SigBit::SigBit(bool bit) : wire(NULL), data(bit ? State::S1 : State::S0) { } +inline RTLIL::SigBit::SigBit(RTLIL::Wire *wire) : wire(wire), offset(0) { log_assert(wire && wire->width == 1); } +inline RTLIL::SigBit::SigBit(RTLIL::Wire *wire, int offset) : wire(wire), offset(offset) { log_assert(wire != nullptr); } +inline RTLIL::SigBit::SigBit(const RTLIL::SigChunk &chunk) : wire(chunk.wire) { log_assert(chunk.width == 1); if (wire) offset = chunk.offset; else data = chunk.data[0]; } +inline RTLIL::SigBit::SigBit(const RTLIL::SigChunk &chunk, int index) : wire(chunk.wire) { if (wire) offset = chunk.offset + index; else data = chunk.data[index]; } + +inline bool RTLIL::SigBit::operator<(const RTLIL::SigBit &other) const { + if (wire == other.wire) + return wire ? (offset < other.offset) : (data < other.data); + if (wire != nullptr && other.wire != nullptr) + return wire->name < other.wire->name; + return (wire != nullptr) < (other.wire != nullptr); +} + +inline bool RTLIL::SigBit::operator==(const RTLIL::SigBit &other) const { + return (wire == other.wire) && (wire ? (offset == other.offset) : (data == other.data)); +} + +inline bool RTLIL::SigBit::operator!=(const RTLIL::SigBit &other) const { + return (wire != other.wire) || (wire ? (offset != other.offset) : (data != other.data)); +} + +inline unsigned int RTLIL::SigBit::hash() const { + if (wire) + return mkhash_add(wire->name.hash(), offset); + return data; +} + +inline RTLIL::SigBit &RTLIL::SigSpecIterator::operator*() const { + return (*sig_p)[index]; +} + +inline const RTLIL::SigBit &RTLIL::SigSpecConstIterator::operator*() const { + return (*sig_p)[index]; +} + +inline RTLIL::SigBit::SigBit(const RTLIL::SigSpec &sig) { + log_assert(sig.size() == 1 && sig.chunks().size() == 1); + *this = SigBit(sig.chunks().front()); +} + +template +void RTLIL::Module::rewrite_sigspecs(T &functor) +{ + for (auto &it : cells_) + it.second->rewrite_sigspecs(functor); + for (auto &it : processes) + it.second->rewrite_sigspecs(functor); + for (auto &it : connections_) { + functor(it.first); + functor(it.second); + } +} + +template +void RTLIL::Module::rewrite_sigspecs2(T &functor) +{ + for (auto &it : cells_) + it.second->rewrite_sigspecs2(functor); + for (auto &it : processes) + it.second->rewrite_sigspecs2(functor); + for (auto &it : connections_) { + functor(it.first, it.second); + } +} + +template +void RTLIL::Cell::rewrite_sigspecs(T &functor) { + for (auto &it : connections_) + functor(it.second); +} + +template +void RTLIL::Cell::rewrite_sigspecs2(T &functor) { + for (auto &it : connections_) + functor(it.second); +} + +template +void RTLIL::CaseRule::rewrite_sigspecs(T &functor) { + for (auto &it : compare) + functor(it); + for (auto &it : actions) { + functor(it.first); + functor(it.second); + } + for (auto it : switches) + it->rewrite_sigspecs(functor); +} + +template +void RTLIL::CaseRule::rewrite_sigspecs2(T &functor) { + for (auto &it : compare) + functor(it); + for (auto &it : actions) { + functor(it.first, it.second); + } + for (auto it : switches) + it->rewrite_sigspecs2(functor); +} + +template +void RTLIL::SwitchRule::rewrite_sigspecs(T &functor) +{ + functor(signal); + for (auto it : cases) + it->rewrite_sigspecs(functor); +} + +template +void RTLIL::SwitchRule::rewrite_sigspecs2(T &functor) +{ + functor(signal); + for (auto it : cases) + it->rewrite_sigspecs2(functor); +} + +template +void RTLIL::SyncRule::rewrite_sigspecs(T &functor) +{ + functor(signal); + for (auto &it : actions) { + functor(it.first); + functor(it.second); + } + for (auto &it : mem_write_actions) { + functor(it.address); + functor(it.data); + functor(it.enable); + } +} + +template +void RTLIL::SyncRule::rewrite_sigspecs2(T &functor) +{ + functor(signal); + for (auto &it : actions) { + functor(it.first, it.second); + } + for (auto &it : mem_write_actions) { + functor(it.address); + functor(it.data); + functor(it.enable); + } +} + +template +void RTLIL::Process::rewrite_sigspecs(T &functor) +{ + root_case.rewrite_sigspecs(functor); + for (auto it : syncs) + it->rewrite_sigspecs(functor); +} + +template +void RTLIL::Process::rewrite_sigspecs2(T &functor) +{ + root_case.rewrite_sigspecs2(functor); + for (auto it : syncs) + it->rewrite_sigspecs2(functor); +} + +YOSYS_NAMESPACE_END + +#endif diff --git a/resources/netlist/resources/kernel/share/include/kernel/satgen.h b/resources/netlist/resources/kernel/share/include/kernel/satgen.h new file mode 100644 index 0000000..da2cec2 --- /dev/null +++ b/resources/netlist/resources/kernel/share/include/kernel/satgen.h @@ -0,0 +1,294 @@ +/* -*- c++ -*- + * yosys -- Yosys Open SYnthesis Suite + * + * Copyright (C) 2012 Claire Xenia Wolf + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + */ + +#ifndef SATGEN_H +#define SATGEN_H + +#include "kernel/rtlil.h" +#include "kernel/sigtools.h" +#include "kernel/celltypes.h" +#include "kernel/macc.h" + +#include "libs/ezsat/ezminisat.h" + +YOSYS_NAMESPACE_BEGIN + +// defined in kernel/register.cc +extern struct SatSolver *yosys_satsolver_list; +extern struct SatSolver *yosys_satsolver; + +struct SatSolver +{ + string name; + SatSolver *next; + virtual ezSAT *create() = 0; + + SatSolver(string name) : name(name) { + next = yosys_satsolver_list; + yosys_satsolver_list = this; + } + + virtual ~SatSolver() { + auto p = &yosys_satsolver_list; + while (*p) { + if (*p == this) + *p = next; + else + p = &(*p)->next; + } + if (yosys_satsolver == this) + yosys_satsolver = yosys_satsolver_list; + } +}; + +struct ezSatPtr : public std::unique_ptr { + ezSatPtr() : unique_ptr(yosys_satsolver->create()) { } +}; + +struct SatGen +{ + ezSAT *ez; + SigMap *sigmap; + std::string prefix; + SigPool initial_state; + std::map asserts_a, asserts_en; + std::map assumes_a, assumes_en; + std::map> imported_signals; + std::map, bool> initstates; + bool ignore_div_by_zero; + bool model_undef; + + SatGen(ezSAT *ez, SigMap *sigmap, std::string prefix = std::string()) : + ez(ez), sigmap(sigmap), prefix(prefix), ignore_div_by_zero(false), model_undef(false) + { + } + + void setContext(SigMap *sigmap, std::string prefix = std::string()) + { + this->sigmap = sigmap; + this->prefix = prefix; + } + + std::vector importSigSpecWorker(RTLIL::SigSpec sig, std::string &pf, bool undef_mode, bool dup_undef) + { + log_assert(!undef_mode || model_undef); + sigmap->apply(sig); + + std::vector vec; + vec.reserve(GetSize(sig)); + + for (auto &bit : sig) + if (bit.wire == NULL) { + if (model_undef && dup_undef && bit == RTLIL::State::Sx) + vec.push_back(ez->frozen_literal()); + else + vec.push_back(bit == (undef_mode ? RTLIL::State::Sx : RTLIL::State::S1) ? ez->CONST_TRUE : ez->CONST_FALSE); + } else { + std::string name = pf + (bit.wire->width == 1 ? stringf("%s", log_id(bit.wire)) : stringf("%s [%d]", log_id(bit.wire->name), bit.offset)); + vec.push_back(ez->frozen_literal(name)); + imported_signals[pf][bit] = vec.back(); + } + return vec; + } + + std::vector importSigSpec(RTLIL::SigSpec sig, int timestep = -1) + { + log_assert(timestep != 0); + std::string pf = prefix + (timestep == -1 ? "" : stringf("@%d:", timestep)); + return importSigSpecWorker(sig, pf, false, false); + } + + std::vector importDefSigSpec(RTLIL::SigSpec sig, int timestep = -1) + { + log_assert(timestep != 0); + std::string pf = prefix + (timestep == -1 ? "" : stringf("@%d:", timestep)); + return importSigSpecWorker(sig, pf, false, true); + } + + std::vector importUndefSigSpec(RTLIL::SigSpec sig, int timestep = -1) + { + log_assert(timestep != 0); + std::string pf = "undef:" + prefix + (timestep == -1 ? "" : stringf("@%d:", timestep)); + return importSigSpecWorker(sig, pf, true, false); + } + + int importSigBit(RTLIL::SigBit bit, int timestep = -1) + { + log_assert(timestep != 0); + std::string pf = prefix + (timestep == -1 ? "" : stringf("@%d:", timestep)); + return importSigSpecWorker(bit, pf, false, false).front(); + } + + int importDefSigBit(RTLIL::SigBit bit, int timestep = -1) + { + log_assert(timestep != 0); + std::string pf = prefix + (timestep == -1 ? "" : stringf("@%d:", timestep)); + return importSigSpecWorker(bit, pf, false, true).front(); + } + + int importUndefSigBit(RTLIL::SigBit bit, int timestep = -1) + { + log_assert(timestep != 0); + std::string pf = "undef:" + prefix + (timestep == -1 ? "" : stringf("@%d:", timestep)); + return importSigSpecWorker(bit, pf, true, false).front(); + } + + bool importedSigBit(RTLIL::SigBit bit, int timestep = -1) + { + log_assert(timestep != 0); + std::string pf = prefix + (timestep == -1 ? "" : stringf("@%d:", timestep)); + return imported_signals[pf].count(bit) != 0; + } + + void getAsserts(RTLIL::SigSpec &sig_a, RTLIL::SigSpec &sig_en, int timestep = -1) + { + std::string pf = prefix + (timestep == -1 ? "" : stringf("@%d:", timestep)); + sig_a = asserts_a[pf]; + sig_en = asserts_en[pf]; + } + + void getAssumes(RTLIL::SigSpec &sig_a, RTLIL::SigSpec &sig_en, int timestep = -1) + { + std::string pf = prefix + (timestep == -1 ? "" : stringf("@%d:", timestep)); + sig_a = assumes_a[pf]; + sig_en = assumes_en[pf]; + } + + int importAsserts(int timestep = -1) + { + std::vector check_bits, enable_bits; + std::string pf = prefix + (timestep == -1 ? "" : stringf("@%d:", timestep)); + if (model_undef) { + check_bits = ez->vec_and(ez->vec_not(importUndefSigSpec(asserts_a[pf], timestep)), importDefSigSpec(asserts_a[pf], timestep)); + enable_bits = ez->vec_and(ez->vec_not(importUndefSigSpec(asserts_en[pf], timestep)), importDefSigSpec(asserts_en[pf], timestep)); + } else { + check_bits = importDefSigSpec(asserts_a[pf], timestep); + enable_bits = importDefSigSpec(asserts_en[pf], timestep); + } + return ez->vec_reduce_and(ez->vec_or(check_bits, ez->vec_not(enable_bits))); + } + + int importAssumes(int timestep = -1) + { + std::vector check_bits, enable_bits; + std::string pf = prefix + (timestep == -1 ? "" : stringf("@%d:", timestep)); + if (model_undef) { + check_bits = ez->vec_and(ez->vec_not(importUndefSigSpec(assumes_a[pf], timestep)), importDefSigSpec(assumes_a[pf], timestep)); + enable_bits = ez->vec_and(ez->vec_not(importUndefSigSpec(assumes_en[pf], timestep)), importDefSigSpec(assumes_en[pf], timestep)); + } else { + check_bits = importDefSigSpec(assumes_a[pf], timestep); + enable_bits = importDefSigSpec(assumes_en[pf], timestep); + } + return ez->vec_reduce_and(ez->vec_or(check_bits, ez->vec_not(enable_bits))); + } + + int signals_eq(RTLIL::SigSpec lhs, RTLIL::SigSpec rhs, int timestep_lhs = -1, int timestep_rhs = -1) + { + if (timestep_rhs < 0) + timestep_rhs = timestep_lhs; + + log_assert(lhs.size() == rhs.size()); + + std::vector vec_lhs = importSigSpec(lhs, timestep_lhs); + std::vector vec_rhs = importSigSpec(rhs, timestep_rhs); + + if (!model_undef) + return ez->vec_eq(vec_lhs, vec_rhs); + + std::vector undef_lhs = importUndefSigSpec(lhs, timestep_lhs); + std::vector undef_rhs = importUndefSigSpec(rhs, timestep_rhs); + + std::vector eq_bits; + for (int i = 0; i < lhs.size(); i++) + eq_bits.push_back(ez->AND(ez->IFF(undef_lhs.at(i), undef_rhs.at(i)), + ez->IFF(ez->OR(vec_lhs.at(i), undef_lhs.at(i)), ez->OR(vec_rhs.at(i), undef_rhs.at(i))))); + return ez->expression(ezSAT::OpAnd, eq_bits); + } + + void extendSignalWidth(std::vector &vec_a, std::vector &vec_b, RTLIL::Cell *cell, size_t y_width = 0, bool forced_signed = false) + { + bool is_signed = forced_signed; + if (!forced_signed && cell->parameters.count(ID::A_SIGNED) > 0 && cell->parameters.count(ID::B_SIGNED) > 0) + is_signed = cell->parameters[ID::A_SIGNED].as_bool() && cell->parameters[ID::B_SIGNED].as_bool(); + while (vec_a.size() < vec_b.size() || vec_a.size() < y_width) + vec_a.push_back(is_signed && vec_a.size() > 0 ? vec_a.back() : ez->CONST_FALSE); + while (vec_b.size() < vec_a.size() || vec_b.size() < y_width) + vec_b.push_back(is_signed && vec_b.size() > 0 ? vec_b.back() : ez->CONST_FALSE); + } + + void extendSignalWidth(std::vector &vec_a, std::vector &vec_b, std::vector &vec_y, RTLIL::Cell *cell, bool forced_signed = false) + { + extendSignalWidth(vec_a, vec_b, cell, vec_y.size(), forced_signed); + while (vec_y.size() < vec_a.size()) + vec_y.push_back(ez->literal()); + } + + void extendSignalWidthUnary(std::vector &vec_a, std::vector &vec_y, RTLIL::Cell *cell, bool forced_signed = false) + { + bool is_signed = forced_signed || (cell->parameters.count(ID::A_SIGNED) > 0 && cell->parameters[ID::A_SIGNED].as_bool()); + while (vec_a.size() < vec_y.size()) + vec_a.push_back(is_signed && vec_a.size() > 0 ? vec_a.back() : ez->CONST_FALSE); + while (vec_y.size() < vec_a.size()) + vec_y.push_back(ez->literal()); + } + + void undefGating(std::vector &vec_y, std::vector &vec_yy, std::vector &vec_undef) + { + log_assert(model_undef); + log_assert(vec_y.size() == vec_yy.size()); + if (vec_y.size() > vec_undef.size()) { + std::vector trunc_y(vec_y.begin(), vec_y.begin() + vec_undef.size()); + std::vector trunc_yy(vec_yy.begin(), vec_yy.begin() + vec_undef.size()); + ez->assume(ez->expression(ezSAT::OpAnd, ez->vec_or(vec_undef, ez->vec_iff(trunc_y, trunc_yy)))); + } else { + log_assert(vec_y.size() == vec_undef.size()); + ez->assume(ez->expression(ezSAT::OpAnd, ez->vec_or(vec_undef, ez->vec_iff(vec_y, vec_yy)))); + } + } + + std::pair, std::vector> mux(int s, int undef_s, const std::vector &a, const std::vector &undef_a, const std::vector &b, const std::vector &undef_b) { + std::vector res; + std::vector undef_res; + res = ez->vec_ite(s, b, a); + if (model_undef) { + std::vector unequal_ab = ez->vec_not(ez->vec_iff(a, b)); + std::vector undef_ab = ez->vec_or(unequal_ab, ez->vec_or(undef_a, undef_b)); + undef_res = ez->vec_ite(undef_s, undef_ab, ez->vec_ite(s, undef_b, undef_a)); + } + return std::make_pair(res, undef_res); + } + + void undefGating(int y, int yy, int undef) + { + ez->assume(ez->OR(undef, ez->IFF(y, yy))); + } + + void setInitState(int timestep) + { + auto key = make_pair(prefix, timestep); + log_assert(initstates.count(key) == 0 || initstates.at(key) == true); + initstates[key] = true; + } + + bool importCell(RTLIL::Cell *cell, int timestep = -1); +}; + +YOSYS_NAMESPACE_END + +#endif diff --git a/resources/netlist/resources/kernel/share/include/kernel/sigtools.h b/resources/netlist/resources/kernel/share/include/kernel/sigtools.h new file mode 100644 index 0000000..4ea43d7 --- /dev/null +++ b/resources/netlist/resources/kernel/share/include/kernel/sigtools.h @@ -0,0 +1,347 @@ +/* + * yosys -- Yosys Open SYnthesis Suite + * + * Copyright (C) 2012 Claire Xenia Wolf + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + */ + +#ifndef SIGTOOLS_H +#define SIGTOOLS_H + +#include "kernel/yosys.h" + +YOSYS_NAMESPACE_BEGIN + +struct SigPool +{ + struct bitDef_t : public std::pair { + bitDef_t() : std::pair(NULL, 0) { } + bitDef_t(const RTLIL::SigBit &bit) : std::pair(bit.wire, bit.offset) { } + unsigned int hash() const { return first->name.hash() + second; } + }; + + pool bits; + + void clear() + { + bits.clear(); + } + + void add(const RTLIL::SigSpec &sig) + { + for (auto &bit : sig) + if (bit.wire != NULL) + bits.insert(bit); + } + + void add(const SigPool &other) + { + for (auto &bit : other.bits) + bits.insert(bit); + } + + void del(const RTLIL::SigSpec &sig) + { + for (auto &bit : sig) + if (bit.wire != NULL) + bits.erase(bit); + } + + void del(const SigPool &other) + { + for (auto &bit : other.bits) + bits.erase(bit); + } + + void expand(const RTLIL::SigSpec &from, const RTLIL::SigSpec &to) + { + log_assert(GetSize(from) == GetSize(to)); + for (int i = 0; i < GetSize(from); i++) { + bitDef_t bit_from(from[i]), bit_to(to[i]); + if (bit_from.first != NULL && bit_to.first != NULL && bits.count(bit_from) > 0) + bits.insert(bit_to); + } + } + + RTLIL::SigSpec extract(const RTLIL::SigSpec &sig) const + { + RTLIL::SigSpec result; + for (auto &bit : sig) + if (bit.wire != NULL && bits.count(bit)) + result.append(bit); + return result; + } + + RTLIL::SigSpec remove(const RTLIL::SigSpec &sig) const + { + RTLIL::SigSpec result; + for (auto &bit : sig) + if (bit.wire != NULL && bits.count(bit) == 0) + result.append(bit); + return result; + } + + bool check(const RTLIL::SigBit &bit) const + { + return bit.wire != NULL && bits.count(bit); + } + + bool check_any(const RTLIL::SigSpec &sig) const + { + for (auto &bit : sig) + if (bit.wire != NULL && bits.count(bit)) + return true; + return false; + } + + bool check_all(const RTLIL::SigSpec &sig) const + { + for (auto &bit : sig) + if (bit.wire != NULL && bits.count(bit) == 0) + return false; + return true; + } + + RTLIL::SigSpec export_one() const + { + for (auto &bit : bits) + return RTLIL::SigSpec(bit.first, bit.second); + return RTLIL::SigSpec(); + } + + RTLIL::SigSpec export_all() const + { + pool sig; + for (auto &bit : bits) + sig.insert(RTLIL::SigBit(bit.first, bit.second)); + return sig; + } + + size_t size() const + { + return bits.size(); + } +}; + +template +struct SigSet +{ + static_assert(!std::is_same::value, "Default value for `Compare' class not found for SigSet. Please specify."); + + struct bitDef_t : public std::pair { + bitDef_t() : std::pair(NULL, 0) { } + bitDef_t(const RTLIL::SigBit &bit) : std::pair(bit.wire, bit.offset) { } + unsigned int hash() const { return first->name.hash() + second; } + }; + + dict> bits; + + void clear() + { + bits.clear(); + } + + void insert(const RTLIL::SigSpec &sig, T data) + { + for (const auto &bit : sig) + if (bit.wire != NULL) + bits[bit].insert(data); + } + + void insert(const RTLIL::SigSpec& sig, const std::set &data) + { + for (const auto &bit : sig) + if (bit.wire != NULL) + bits[bit].insert(data.begin(), data.end()); + } + + void erase(const RTLIL::SigSpec& sig) + { + for (const auto &bit : sig) + if (bit.wire != NULL) + bits[bit].clear(); + } + + void erase(const RTLIL::SigSpec &sig, T data) + { + for (const auto &bit : sig) + if (bit.wire != NULL) + bits[bit].erase(data); + } + + void erase(const RTLIL::SigSpec &sig, const std::set &data) + { + for (const auto &bit : sig) + if (bit.wire != NULL) + bits[bit].erase(data.begin(), data.end()); + } + + void find(const RTLIL::SigSpec &sig, std::set &result) + { + for (const auto &bit : sig) + if (bit.wire != NULL) { + auto &data = bits[bit]; + result.insert(data.begin(), data.end()); + } + } + + void find(const RTLIL::SigSpec &sig, pool &result) + { + for (const auto &bit : sig) + if (bit.wire != NULL) { + auto &data = bits[bit]; + result.insert(data.begin(), data.end()); + } + } + + std::set find(const RTLIL::SigSpec &sig) + { + std::set result; + find(sig, result); + return result; + } + + bool has(const RTLIL::SigSpec &sig) + { + for (auto &bit : sig) + if (bit.wire != NULL && bits.count(bit)) + return true; + return false; + } +}; + +template +class SigSet::value>::type> : public SigSet> {}; +template +using sort_by_name_id_guard = typename std::enable_if::value>::type; +template +class SigSet> : public SigSet::type>> {}; + +struct SigMap +{ + mfp database; + + SigMap(RTLIL::Module *module = NULL) + { + if (module != NULL) + set(module); + } + + void swap(SigMap &other) + { + database.swap(other.database); + } + + void clear() + { + database.clear(); + } + + void set(RTLIL::Module *module) + { + int bitcount = 0; + for (auto &it : module->connections()) + bitcount += it.first.size(); + + database.clear(); + database.reserve(bitcount); + + for (auto &it : module->connections()) + add(it.first, it.second); + } + + void add(const RTLIL::SigSpec& from, const RTLIL::SigSpec& to) + { + log_assert(GetSize(from) == GetSize(to)); + + for (int i = 0; i < GetSize(from); i++) + { + int bfi = database.lookup(from[i]); + int bti = database.lookup(to[i]); + + const RTLIL::SigBit &bf = database[bfi]; + const RTLIL::SigBit &bt = database[bti]; + + if (bf.wire || bt.wire) + { + database.imerge(bfi, bti); + + if (bf.wire == nullptr) + database.ipromote(bfi); + + if (bt.wire == nullptr) + database.ipromote(bti); + } + } + } + + void add(const RTLIL::SigBit &bit) + { + const auto &b = database.find(bit); + if (b.wire != nullptr) + database.promote(bit); + } + + void add(const RTLIL::SigSpec &sig) + { + for (const auto &bit : sig) + add(bit); + } + + inline void add(Wire *wire) { return add(RTLIL::SigSpec(wire)); } + + void apply(RTLIL::SigBit &bit) const + { + bit = database.find(bit); + } + + void apply(RTLIL::SigSpec &sig) const + { + for (auto &bit : sig) + apply(bit); + } + + RTLIL::SigBit operator()(RTLIL::SigBit bit) const + { + apply(bit); + return bit; + } + + RTLIL::SigSpec operator()(RTLIL::SigSpec sig) const + { + apply(sig); + return sig; + } + + RTLIL::SigSpec operator()(RTLIL::Wire *wire) const + { + SigSpec sig(wire); + apply(sig); + return sig; + } + + RTLIL::SigSpec allbits() const + { + RTLIL::SigSpec sig; + for (const auto &bit : database) + if (bit.wire != nullptr) + sig.append(bit); + return sig; + } +}; + +YOSYS_NAMESPACE_END + +#endif /* SIGTOOLS_H */ diff --git a/resources/netlist/resources/kernel/share/include/kernel/utils.h b/resources/netlist/resources/kernel/share/include/kernel/utils.h new file mode 100644 index 0000000..d37f045 --- /dev/null +++ b/resources/netlist/resources/kernel/share/include/kernel/utils.h @@ -0,0 +1,214 @@ +/* + * yosys -- Yosys Open SYnthesis Suite + * + * Copyright (C) 2012 Claire Xenia Wolf + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + */ + +// This file contains various c++ utility routines and helper classes that +// do not depend on any other components of yosys (except stuff like log_*). + +#include "kernel/yosys.h" + +#ifndef UTILS_H +#define UTILS_H + +YOSYS_NAMESPACE_BEGIN + +// ------------------------------------------------ +// A map-like container, but you can save and restore the state +// ------------------------------------------------ + +template> +struct stackmap +{ +private: + std::vector> backup_state; + dict current_state; + static T empty_tuple; + +public: + stackmap() { } + stackmap(const dict &other) : current_state(other) { } + + template + void operator=(const Other &other) + { + for (auto &it : current_state) + if (!backup_state.empty() && backup_state.back().count(it.first) == 0) + backup_state.back()[it.first] = new T(it.second); + current_state.clear(); + + for (auto &it : other) + set(it.first, it.second); + } + + bool has(const Key &k) + { + return current_state.count(k) != 0; + } + + void set(const Key &k, const T &v) + { + if (!backup_state.empty() && backup_state.back().count(k) == 0) + backup_state.back()[k] = current_state.count(k) ? new T(current_state.at(k)) : nullptr; + current_state[k] = v; + } + + void unset(const Key &k) + { + if (!backup_state.empty() && backup_state.back().count(k) == 0) + backup_state.back()[k] = current_state.count(k) ? new T(current_state.at(k)) : nullptr; + current_state.erase(k); + } + + const T &get(const Key &k) + { + if (current_state.count(k) == 0) + return empty_tuple; + return current_state.at(k); + } + + void reset(const Key &k) + { + for (int i = GetSize(backup_state)-1; i >= 0; i--) + if (backup_state[i].count(k) != 0) { + if (backup_state[i].at(k) == nullptr) + current_state.erase(k); + else + current_state[k] = *backup_state[i].at(k); + return; + } + current_state.erase(k); + } + + const dict &stdmap() + { + return current_state; + } + + void save() + { + backup_state.resize(backup_state.size()+1); + } + + void restore() + { + log_assert(!backup_state.empty()); + for (auto &it : backup_state.back()) + if (it.second != nullptr) { + current_state[it.first] = *it.second; + delete it.second; + } else + current_state.erase(it.first); + backup_state.pop_back(); + } + + ~stackmap() + { + while (!backup_state.empty()) + restore(); + } +}; + + +// ------------------------------------------------ +// A simple class for topological sorting +// ------------------------------------------------ + +template> +struct TopoSort +{ + bool analyze_loops, found_loops; + std::map, C> database; + std::set> loops; + std::vector sorted; + + TopoSort() + { + analyze_loops = true; + found_loops = false; + } + + void node(T n) + { + if (database.count(n) == 0) + database[n] = std::set(); + } + + void edge(T left, T right) + { + node(left); + database[right].insert(left); + } + + void sort_worker(const T &n, std::set &marked_cells, std::set &active_cells, std::vector &active_stack) + { + if (active_cells.count(n)) { + found_loops = true; + if (analyze_loops) { + std::set loop; + for (int i = GetSize(active_stack)-1; i >= 0; i--) { + loop.insert(active_stack[i]); + if (active_stack[i] == n) + break; + } + loops.insert(loop); + } + return; + } + + if (marked_cells.count(n)) + return; + + if (!database.at(n).empty()) + { + if (analyze_loops) + active_stack.push_back(n); + active_cells.insert(n); + + for (auto &left_n : database.at(n)) + sort_worker(left_n, marked_cells, active_cells, active_stack); + + if (analyze_loops) + active_stack.pop_back(); + active_cells.erase(n); + } + + marked_cells.insert(n); + sorted.push_back(n); + } + + bool sort() + { + loops.clear(); + sorted.clear(); + found_loops = false; + + std::set marked_cells; + std::set active_cells; + std::vector active_stack; + + for (auto &it : database) + sort_worker(it.first, marked_cells, active_cells, active_stack); + + log_assert(GetSize(sorted) == GetSize(database)); + return !found_loops; + } +}; + +YOSYS_NAMESPACE_END + +#endif diff --git a/resources/netlist/resources/kernel/share/include/kernel/yosys.h b/resources/netlist/resources/kernel/share/include/kernel/yosys.h new file mode 100644 index 0000000..b5b1553 --- /dev/null +++ b/resources/netlist/resources/kernel/share/include/kernel/yosys.h @@ -0,0 +1,381 @@ +/* -*- c++ -*- + * yosys -- Yosys Open SYnthesis Suite + * + * Copyright (C) 2012 Claire Xenia Wolf + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + */ + + +// *** NOTE TO THE READER *** +// +// Maybe you have just opened this file in the hope to learn more about the +// Yosys API. Let me congratulate you on this great decision! ;) +// +// If you want to know how the design is represented by Yosys in the memory, +// you should read "kernel/rtlil.h". +// +// If you want to know how to register a command with Yosys, you could read +// "kernel/register.h", but it would be easier to just look at a simple +// example instead. A simple one would be "passes/cmds/log.cc". +// +// This header is very boring. It just defines some general things that +// belong nowhere else and includes the interesting headers. +// +// Find more information in the "guidelines/GettingStarted" file. + + +#ifndef YOSYS_H +#define YOSYS_H + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include + +#ifdef WITH_PYTHON +#include +#endif + +#ifndef _YOSYS_ +# error It looks like you are trying to build Yosys without the config defines set. \ + When building Yosys with a custom make system, make sure you set all the \ + defines the Yosys Makefile would set for your build configuration. +#endif + +#ifdef YOSYS_ENABLE_TCL +# include +# ifdef YOSYS_MXE_HACKS +extern Tcl_Command Tcl_CreateCommand(Tcl_Interp *interp, const char *cmdName, Tcl_CmdProc *proc, ClientData clientData, Tcl_CmdDeleteProc *deleteProc); +extern Tcl_Interp *Tcl_CreateInterp(void); +extern void Tcl_DeleteInterp(Tcl_Interp *interp); +extern int Tcl_Eval(Tcl_Interp *interp, const char *script); +extern int Tcl_EvalFile(Tcl_Interp *interp, const char *fileName); +extern void Tcl_Finalize(void); +extern int Tcl_GetCommandInfo(Tcl_Interp *interp, const char *cmdName, Tcl_CmdInfo *infoPtr); +extern const char *Tcl_GetStringResult(Tcl_Interp *interp); +extern Tcl_Obj *Tcl_NewStringObj(const char *bytes, int length); +extern Tcl_Obj *Tcl_NewIntObj(int intValue); +extern Tcl_Obj *Tcl_NewListObj(int objc, Tcl_Obj *const objv[]); +extern Tcl_Obj *Tcl_ObjSetVar2(Tcl_Interp *interp, Tcl_Obj *part1Ptr, Tcl_Obj *part2Ptr, Tcl_Obj *newValuePtr, int flags); +# endif +# undef CONST +# undef INLINE +#endif + +#ifdef _WIN32 +# undef NOMINMAX +# define NOMINMAX 1 +# undef YY_NO_UNISTD_H +# define YY_NO_UNISTD_H 1 + +# include +# include +# include + +# define strtok_r strtok_s +# define strdup _strdup +# define snprintf _snprintf +# define getcwd _getcwd +# define mkdir _mkdir +# define popen _popen +# define pclose _pclose + +# ifndef __MINGW32__ +# define PATH_MAX MAX_PATH +# define isatty _isatty +# define fileno _fileno +# endif + +// The following defines conflict with our identifiers: +# undef CONST +// `wingdi.h` defines a TRANSPARENT macro that conflicts with X(TRANSPARENT) entry in kernel/constids.inc +# undef TRANSPARENT +#endif + +#ifndef PATH_MAX +# define PATH_MAX 4096 +#endif + +#define YOSYS_NAMESPACE Yosys +#define PRIVATE_NAMESPACE_BEGIN namespace { +#define PRIVATE_NAMESPACE_END } +#define YOSYS_NAMESPACE_BEGIN namespace Yosys { +#define YOSYS_NAMESPACE_END } +#define YOSYS_NAMESPACE_PREFIX Yosys:: +#define USING_YOSYS_NAMESPACE using namespace Yosys; + +#if defined(__GNUC__) || defined(__clang__) +# define YS_ATTRIBUTE(...) __attribute__((__VA_ARGS__)) +#elif defined(_MSC_VER) +# define YS_ATTRIBUTE(...) +#else +# define YS_ATTRIBUTE(...) +#endif + +#if defined(__GNUC__) || defined(__clang__) +# define YS_MAYBE_UNUSED __attribute__((__unused__)) +#else +# define YS_MAYBE_UNUSED +#endif + +#if __cplusplus >= 201703L +# define YS_FALLTHROUGH [[fallthrough]]; +#elif defined(__clang__) +# define YS_FALLTHROUGH [[clang::fallthrough]]; +#elif defined(__GNUC__) +# define YS_FALLTHROUGH [[gnu::fallthrough]]; +#else +# define YS_FALLTHROUGH +#endif + +YOSYS_NAMESPACE_BEGIN + +// Note: All headers included in hashlib.h must be included +// outside of YOSYS_NAMESPACE before this or bad things will happen. +#ifdef HASHLIB_H +# undef HASHLIB_H +# include "kernel/hashlib.h" +#else +# include "kernel/hashlib.h" +# undef HASHLIB_H +#endif + +using std::vector; +using std::string; +using std::tuple; +using std::pair; + +using std::make_tuple; +using std::make_pair; +using std::get; +using std::min; +using std::max; + +// A primitive shared string implementation that does not +// move its .c_str() when the object is copied or moved. +struct shared_str { + std::shared_ptr content; + shared_str() { } + shared_str(string s) { content = std::shared_ptr(new string(s)); } + shared_str(const char *s) { content = std::shared_ptr(new string(s)); } + const char *c_str() const { return content->c_str(); } + const string &str() const { return *content; } + bool operator==(const shared_str &other) const { return *content == *other.content; } + unsigned int hash() const { return hashlib::hash_ops::hash(*content); } +}; + +using hashlib::mkhash; +using hashlib::mkhash_init; +using hashlib::mkhash_add; +using hashlib::mkhash_xorshift; +using hashlib::hash_ops; +using hashlib::hash_cstr_ops; +using hashlib::hash_ptr_ops; +using hashlib::hash_obj_ops; +using hashlib::dict; +using hashlib::idict; +using hashlib::pool; +using hashlib::mfp; + +namespace RTLIL { + struct IdString; + struct Const; + struct SigBit; + struct SigSpec; + struct Wire; + struct Cell; + struct Memory; + struct Process; + struct Module; + struct Design; + struct Monitor; + enum State : unsigned char; +} + +namespace AST { + struct AstNode; +} + +using RTLIL::IdString; +using RTLIL::Const; +using RTLIL::SigBit; +using RTLIL::SigSpec; +using RTLIL::Wire; +using RTLIL::Cell; +using RTLIL::Module; +using RTLIL::Design; + +namespace hashlib { + template<> struct hash_ops : hash_obj_ops {}; + template<> struct hash_ops : hash_obj_ops {}; + template<> struct hash_ops : hash_obj_ops {}; + template<> struct hash_ops : hash_obj_ops {}; + template<> struct hash_ops : hash_obj_ops {}; + template<> struct hash_ops : hash_obj_ops {}; + template<> struct hash_ops : hash_obj_ops {}; + template<> struct hash_ops : hash_obj_ops {}; + + template<> struct hash_ops : hash_obj_ops {}; + template<> struct hash_ops : hash_obj_ops {}; + template<> struct hash_ops : hash_obj_ops {}; + template<> struct hash_ops : hash_obj_ops {}; + template<> struct hash_ops : hash_obj_ops {}; + template<> struct hash_ops : hash_obj_ops {}; + template<> struct hash_ops : hash_obj_ops {}; + template<> struct hash_ops : hash_obj_ops {}; +} + +void memhasher_on(); +void memhasher_off(); +void memhasher_do(); + +extern bool memhasher_active; +inline void memhasher() { if (memhasher_active) memhasher_do(); } + +void yosys_banner(); +int ceil_log2(int x) YS_ATTRIBUTE(const); +std::string stringf(const char *fmt, ...) YS_ATTRIBUTE(format(printf, 1, 2)); +std::string vstringf(const char *fmt, va_list ap); +int readsome(std::istream &f, char *s, int n); +std::string next_token(std::string &text, const char *sep = " \t\r\n", bool long_strings = false); +std::vector split_tokens(const std::string &text, const char *sep = " \t\r\n"); +bool patmatch(const char *pattern, const char *string); +#if !defined(YOSYS_DISABLE_SPAWN) +int run_command(const std::string &command, std::function process_line = std::function()); +#endif +std::string get_base_tmpdir(); +std::string make_temp_file(std::string template_str = get_base_tmpdir() + "/yosys_XXXXXX"); +std::string make_temp_dir(std::string template_str = get_base_tmpdir() + "/yosys_XXXXXX"); +bool check_file_exists(std::string filename, bool is_exec = false); +bool is_absolute_path(std::string filename); +void remove_directory(std::string dirname); +std::string escape_filename_spaces(const std::string& filename); + +template int GetSize(const T &obj) { return obj.size(); } +inline int GetSize(RTLIL::Wire *wire); + +extern int autoidx; +extern int yosys_xtrace; + +YOSYS_NAMESPACE_END + +#include "kernel/log.h" +#include "kernel/rtlil.h" +#include "kernel/register.h" + +YOSYS_NAMESPACE_BEGIN + +using RTLIL::State; +using RTLIL::SigChunk; +using RTLIL::SigSig; + +namespace hashlib { + template<> struct hash_ops : hash_ops {}; +} + +void yosys_setup(); + +#ifdef WITH_PYTHON +bool yosys_already_setup(); +#endif + +void yosys_shutdown(); + +#ifdef YOSYS_ENABLE_TCL +Tcl_Interp *yosys_get_tcl_interp(); +#endif + +extern RTLIL::Design *yosys_design; + +RTLIL::IdString new_id(std::string file, int line, std::string func); +RTLIL::IdString new_id_suffix(std::string file, int line, std::string func, std::string suffix); + +#define NEW_ID \ + YOSYS_NAMESPACE_PREFIX new_id(__FILE__, __LINE__, __FUNCTION__) +#define NEW_ID_SUFFIX(suffix) \ + YOSYS_NAMESPACE_PREFIX new_id_suffix(__FILE__, __LINE__, __FUNCTION__, suffix) + +// Create a statically allocated IdString object, using for example ID::A or ID($add). +// +// Recipe for Converting old code that is using conversion of strings like ID::A and +// "$add" for creating IdStrings: Run below SED command on the .cc file and then use for +// example "meld foo.cc foo.cc.orig" to manually compile errors, if necessary. +// +// sed -i.orig -r 's/"\\\\([a-zA-Z0-9_]+)"/ID(\1)/g; s/"(\$[a-zA-Z0-9_]+)"/ID(\1)/g;' +// +#define ID(_id) ([]() { const char *p = "\\" #_id, *q = p[1] == '$' ? p+1 : p; \ + static const YOSYS_NAMESPACE_PREFIX RTLIL::IdString id(q); return id; })() +namespace ID = RTLIL::ID; + +RTLIL::Design *yosys_get_design(); +std::string proc_self_dirname(); +std::string proc_share_dirname(); +std::string proc_program_prefix(); +const char *create_prompt(RTLIL::Design *design, int recursion_counter); +std::vector glob_filename(const std::string &filename_pattern); +void rewrite_filename(std::string &filename); + +void run_pass(std::string command, RTLIL::Design *design = nullptr); +bool run_frontend(std::string filename, std::string command, RTLIL::Design *design = nullptr, std::string *from_to_label = nullptr); +void run_backend(std::string filename, std::string command, RTLIL::Design *design = nullptr); +void shell(RTLIL::Design *design); + +// journal of all input and output files read (for "yosys -E") +extern std::set yosys_input_files, yosys_output_files; + +// from kernel/version_*.o (cc source generated from Makefile) +extern const char *yosys_version_str; + +// from passes/cmds/design.cc +extern std::map saved_designs; +extern std::vector pushed_designs; + +// from passes/cmds/pluginc.cc +extern std::map loaded_plugins; +#ifdef WITH_PYTHON +extern std::map loaded_python_plugins; +#endif +extern std::map loaded_plugin_aliases; +void load_plugin(std::string filename, std::vector aliases); + +extern std::string yosys_share_dirname; +extern std::string yosys_abc_executable; + +YOSYS_NAMESPACE_END + +#endif diff --git a/resources/netlist/resources/kernel/share/include/libs/ezsat/ezminisat.h b/resources/netlist/resources/kernel/share/include/libs/ezsat/ezminisat.h new file mode 100644 index 0000000..92a91d7 --- /dev/null +++ b/resources/netlist/resources/kernel/share/include/libs/ezsat/ezminisat.h @@ -0,0 +1,71 @@ +/* + * ezSAT -- A simple and easy to use CNF generator for SAT solvers + * + * Copyright (C) 2013 Claire Xenia Wolf + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + */ + +#ifndef EZMINISAT_H +#define EZMINISAT_H + +#define EZMINISAT_SIMPSOLVER 1 +#define EZMINISAT_VERBOSITY 0 +#define EZMINISAT_INCREMENTAL 1 + +#include "ezsat.h" +#include + +// minisat is using limit macros and format macros in their headers that +// can be the source of some troubles when used from c++11. therefore we +// don't force ezSAT users to use minisat headers.. +namespace Minisat { + class Solver; + class SimpSolver; +} + +class ezMiniSAT : public ezSAT +{ +private: +#if EZMINISAT_SIMPSOLVER + typedef Minisat::SimpSolver Solver; +#else + typedef Minisat::Solver Solver; +#endif + Solver *minisatSolver; + std::vector minisatVars; + bool foundContradiction; + +#if EZMINISAT_SIMPSOLVER && EZMINISAT_INCREMENTAL + std::set cnfFrozenVars; +#endif + +#ifndef _WIN32 + static ezMiniSAT *alarmHandlerThis; + static clock_t alarmHandlerTimeout; + static void alarmHandler(int); +#endif + +public: + ezMiniSAT(); + virtual ~ezMiniSAT(); + virtual void clear(); +#if EZMINISAT_SIMPSOLVER && EZMINISAT_INCREMENTAL + virtual void freeze(int id); + virtual bool eliminated(int idx); +#endif + virtual bool solver(const std::vector &modelExpressions, std::vector &modelValues, const std::vector &assumptions); +}; + +#endif diff --git a/resources/netlist/resources/kernel/share/include/libs/ezsat/ezsat.h b/resources/netlist/resources/kernel/share/include/libs/ezsat/ezsat.h new file mode 100644 index 0000000..7f3bdf6 --- /dev/null +++ b/resources/netlist/resources/kernel/share/include/libs/ezsat/ezsat.h @@ -0,0 +1,359 @@ +/* + * ezSAT -- A simple and easy to use CNF generator for SAT solvers + * + * Copyright (C) 2013 Claire Xenia Wolf + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + */ + +#ifndef EZSAT_H +#define EZSAT_H + +#include +#include +#include +#include +#include +#include + +class ezSAT +{ + // each token (terminal or non-terminal) is represented by an integer number + // + // the zero token: + // the number zero is not used as valid token number and is used to encode + // unused parameters for the functions. + // + // positive numbers are literals, with 1 = CONST_TRUE and 2 = CONST_FALSE; + // + // negative numbers are non-literal expressions. each expression is represented + // by an operator id and a list of expressions (literals or non-literals). + +public: + enum OpId { + OpNot, OpAnd, OpOr, OpXor, OpIFF, OpITE + }; + + static const int CONST_TRUE; + static const int CONST_FALSE; + +private: + bool flag_keep_cnf; + bool flag_non_incremental; + + bool non_incremental_solve_used_up; + + std::map literalsCache; + std::vector literals; + + std::map>, int> expressionsCache; + std::vector>> expressions; + + bool cnfConsumed; + int cnfVariableCount, cnfClausesCount; + std::vector cnfLiteralVariables, cnfExpressionVariables; + std::vector> cnfClauses, cnfClausesBackup; + + void add_clause(const std::vector &args); + void add_clause(const std::vector &args, bool argsPolarity, int a = 0, int b = 0, int c = 0); + void add_clause(int a, int b = 0, int c = 0); + + int bind_cnf_not(const std::vector &args); + int bind_cnf_and(const std::vector &args); + int bind_cnf_or(const std::vector &args); + +protected: + void preSolverCallback(); + +public: + int solverTimeout; + bool solverTimoutStatus; + + ezSAT(); + virtual ~ezSAT(); + + unsigned int statehash; + void addhash(unsigned int); + + void keep_cnf() { flag_keep_cnf = true; } + void non_incremental() { flag_non_incremental = true; } + + bool mode_keep_cnf() const { return flag_keep_cnf; } + bool mode_non_incremental() const { return flag_non_incremental; } + + // manage expressions + + int value(bool val); + int literal(); + int literal(const std::string &name); + int frozen_literal(); + int frozen_literal(const std::string &name); + int expression(OpId op, int a = 0, int b = 0, int c = 0, int d = 0, int e = 0, int f = 0); + int expression(OpId op, const std::vector &args); + + void lookup_literal(int id, std::string &name) const; + const std::string &lookup_literal(int id) const; + + void lookup_expression(int id, OpId &op, std::vector &args) const; + const std::vector &lookup_expression(int id, OpId &op) const; + + int parse_string(const std::string &text); + std::string to_string(int id) const; + + int numLiterals() const { return literals.size(); } + int numExpressions() const { return expressions.size(); } + + int eval(int id, const std::vector &values) const; + + // SAT solver interface + // If you are planning on using the solver API (and not simply create a CNF) you must use a child class + // of ezSAT that actually implements a solver backend, such as ezMiniSAT (see ezminisat.h). + + virtual bool solver(const std::vector &modelExpressions, std::vector &modelValues, const std::vector &assumptions); + + bool solve(const std::vector &modelExpressions, std::vector &modelValues, const std::vector &assumptions) { + return solver(modelExpressions, modelValues, assumptions); + } + + bool solve(const std::vector &modelExpressions, std::vector &modelValues, int a = 0, int b = 0, int c = 0, int d = 0, int e = 0, int f = 0) { + std::vector assumptions; + if (a != 0) assumptions.push_back(a); + if (b != 0) assumptions.push_back(b); + if (c != 0) assumptions.push_back(c); + if (d != 0) assumptions.push_back(d); + if (e != 0) assumptions.push_back(e); + if (f != 0) assumptions.push_back(f); + return solver(modelExpressions, modelValues, assumptions); + } + + bool solve(int a = 0, int b = 0, int c = 0, int d = 0, int e = 0, int f = 0) { + std::vector assumptions, modelExpressions; + std::vector modelValues; + if (a != 0) assumptions.push_back(a); + if (b != 0) assumptions.push_back(b); + if (c != 0) assumptions.push_back(c); + if (d != 0) assumptions.push_back(d); + if (e != 0) assumptions.push_back(e); + if (f != 0) assumptions.push_back(f); + return solver(modelExpressions, modelValues, assumptions); + } + + void setSolverTimeout(int newTimeoutSeconds) { + solverTimeout = newTimeoutSeconds; + } + + bool getSolverTimoutStatus() { + return solverTimoutStatus; + } + + // manage CNF (usually only accessed by SAT solvers) + + virtual void clear(); + virtual void freeze(int id); + virtual bool eliminated(int idx); + void assume(int id); + void assume(int id, int context_id) { assume(OR(id, NOT(context_id))); } + int bind(int id, bool auto_freeze = true); + int bound(int id) const; + + int numCnfVariables() const { return cnfVariableCount; } + int numCnfClauses() const { return cnfClausesCount; } + const std::vector> &cnf() const { return cnfClauses; } + + void consumeCnf(); + void consumeCnf(std::vector> &cnf); + + // use this function to get the full CNF in keep_cnf mode + void getFullCnf(std::vector> &full_cnf) const; + + std::string cnfLiteralInfo(int idx) const; + + // simple helpers for build expressions easily + + struct _V { + int id; + std::string name; + _V(int id) : id(id) { } + _V(const char *name) : id(0), name(name) { } + _V(const std::string &name) : id(0), name(name) { } + int get(ezSAT *that) { + if (name.empty()) + return id; + return that->frozen_literal(name); + } + }; + + int VAR(_V a) { + return a.get(this); + } + + int NOT(_V a) { + return expression(OpNot, a.get(this)); + } + + int AND(_V a = 0, _V b = 0, _V c = 0, _V d = 0, _V e = 0, _V f = 0) { + return expression(OpAnd, a.get(this), b.get(this), c.get(this), d.get(this), e.get(this), f.get(this)); + } + + int OR(_V a = 0, _V b = 0, _V c = 0, _V d = 0, _V e = 0, _V f = 0) { + return expression(OpOr, a.get(this), b.get(this), c.get(this), d.get(this), e.get(this), f.get(this)); + } + + int XOR(_V a = 0, _V b = 0, _V c = 0, _V d = 0, _V e = 0, _V f = 0) { + return expression(OpXor, a.get(this), b.get(this), c.get(this), d.get(this), e.get(this), f.get(this)); + } + + int IFF(_V a, _V b = 0, _V c = 0, _V d = 0, _V e = 0, _V f = 0) { + return expression(OpIFF, a.get(this), b.get(this), c.get(this), d.get(this), e.get(this), f.get(this)); + } + + int ITE(_V a, _V b, _V c) { + return expression(OpITE, a.get(this), b.get(this), c.get(this)); + } + + void SET(_V a, _V b) { + assume(IFF(a.get(this), b.get(this))); + } + + // simple helpers for building expressions with bit vectors + + std::vector vec_const(const std::vector &bits); + std::vector vec_const_signed(int64_t value, int numBits); + std::vector vec_const_unsigned(uint64_t value, int numBits); + std::vector vec_var(int numBits); + std::vector vec_var(std::string name, int numBits); + std::vector vec_cast(const std::vector &vec1, int toBits, bool signExtend = false); + + std::vector vec_not(const std::vector &vec1); + std::vector vec_and(const std::vector &vec1, const std::vector &vec2); + std::vector vec_or(const std::vector &vec1, const std::vector &vec2); + std::vector vec_xor(const std::vector &vec1, const std::vector &vec2); + + std::vector vec_iff(const std::vector &vec1, const std::vector &vec2); + std::vector vec_ite(const std::vector &vec1, const std::vector &vec2, const std::vector &vec3); + std::vector vec_ite(int sel, const std::vector &vec1, const std::vector &vec2); + + std::vector vec_count(const std::vector &vec, int numBits, bool clip = true); + std::vector vec_add(const std::vector &vec1, const std::vector &vec2); + std::vector vec_sub(const std::vector &vec1, const std::vector &vec2); + std::vector vec_neg(const std::vector &vec); + + void vec_cmp(const std::vector &vec1, const std::vector &vec2, int &carry, int &overflow, int &sign, int &zero); + + int vec_lt_signed(const std::vector &vec1, const std::vector &vec2); + int vec_le_signed(const std::vector &vec1, const std::vector &vec2); + int vec_ge_signed(const std::vector &vec1, const std::vector &vec2); + int vec_gt_signed(const std::vector &vec1, const std::vector &vec2); + + int vec_lt_unsigned(const std::vector &vec1, const std::vector &vec2); + int vec_le_unsigned(const std::vector &vec1, const std::vector &vec2); + int vec_ge_unsigned(const std::vector &vec1, const std::vector &vec2); + int vec_gt_unsigned(const std::vector &vec1, const std::vector &vec2); + + int vec_eq(const std::vector &vec1, const std::vector &vec2); + int vec_ne(const std::vector &vec1, const std::vector &vec2); + + std::vector vec_shl(const std::vector &vec1, int shift, bool signExtend = false); + std::vector vec_srl(const std::vector &vec1, int shift); + + std::vector vec_shr(const std::vector &vec1, int shift, bool signExtend = false) { return vec_shl(vec1, -shift, signExtend); } + std::vector vec_srr(const std::vector &vec1, int shift) { return vec_srl(vec1, -shift); } + + std::vector vec_shift(const std::vector &vec1, int shift, int extend_left, int extend_right); + std::vector vec_shift_right(const std::vector &vec1, const std::vector &vec2, bool vec2_signed, int extend_left, int extend_right); + std::vector vec_shift_left(const std::vector &vec1, const std::vector &vec2, bool vec2_signed, int extend_left, int extend_right); + + void vec_append(std::vector &vec, const std::vector &vec1) const; + void vec_append_signed(std::vector &vec, const std::vector &vec1, int64_t value); + void vec_append_unsigned(std::vector &vec, const std::vector &vec1, uint64_t value); + + int64_t vec_model_get_signed(const std::vector &modelExpressions, const std::vector &modelValues, const std::vector &vec1) const; + uint64_t vec_model_get_unsigned(const std::vector &modelExpressions, const std::vector &modelValues, const std::vector &vec1) const; + + int vec_reduce_and(const std::vector &vec1); + int vec_reduce_or(const std::vector &vec1); + + void vec_set(const std::vector &vec1, const std::vector &vec2); + void vec_set_signed(const std::vector &vec1, int64_t value); + void vec_set_unsigned(const std::vector &vec1, uint64_t value); + + // helpers for generating ezSATbit and ezSATvec objects + + struct ezSATbit bit(_V a); + struct ezSATvec vec(const std::vector &vec); + + // printing CNF and internal state + + void printDIMACS(FILE *f, bool verbose = false) const; + void printInternalState(FILE *f) const; + + // more sophisticated constraints (designed to be used directly with assume(..)) + + int onehot(const std::vector &vec, bool max_only = false); + int manyhot(const std::vector &vec, int min_hot, int max_hot = -1); + int ordered(const std::vector &vec1, const std::vector &vec2, bool allow_equal = true); +}; + +// helper classes for using operator overloading when generating complex expressions + +struct ezSATbit +{ + ezSAT &sat; + int id; + + ezSATbit(ezSAT &sat, ezSAT::_V a) : sat(sat), id(sat.VAR(a)) { } + + ezSATbit operator ~() { return ezSATbit(sat, sat.NOT(id)); } + ezSATbit operator &(const ezSATbit &other) { return ezSATbit(sat, sat.AND(id, other.id)); } + ezSATbit operator |(const ezSATbit &other) { return ezSATbit(sat, sat.OR(id, other.id)); } + ezSATbit operator ^(const ezSATbit &other) { return ezSATbit(sat, sat.XOR(id, other.id)); } + ezSATbit operator ==(const ezSATbit &other) { return ezSATbit(sat, sat.IFF(id, other.id)); } + ezSATbit operator !=(const ezSATbit &other) { return ezSATbit(sat, sat.NOT(sat.IFF(id, other.id))); } + + operator int() const { return id; } + operator ezSAT::_V() const { return ezSAT::_V(id); } + operator std::vector() const { return std::vector(1, id); } +}; + +struct ezSATvec +{ + ezSAT &sat; + std::vector vec; + + ezSATvec(ezSAT &sat, const std::vector &vec) : sat(sat), vec(vec) { } + + ezSATvec operator ~() { return ezSATvec(sat, sat.vec_not(vec)); } + ezSATvec operator -() { return ezSATvec(sat, sat.vec_neg(vec)); } + + ezSATvec operator &(const ezSATvec &other) { return ezSATvec(sat, sat.vec_and(vec, other.vec)); } + ezSATvec operator |(const ezSATvec &other) { return ezSATvec(sat, sat.vec_or(vec, other.vec)); } + ezSATvec operator ^(const ezSATvec &other) { return ezSATvec(sat, sat.vec_xor(vec, other.vec)); } + + ezSATvec operator +(const ezSATvec &other) { return ezSATvec(sat, sat.vec_add(vec, other.vec)); } + ezSATvec operator -(const ezSATvec &other) { return ezSATvec(sat, sat.vec_sub(vec, other.vec)); } + + ezSATbit operator < (const ezSATvec &other) { return ezSATbit(sat, sat.vec_lt_unsigned(vec, other.vec)); } + ezSATbit operator <=(const ezSATvec &other) { return ezSATbit(sat, sat.vec_le_unsigned(vec, other.vec)); } + ezSATbit operator ==(const ezSATvec &other) { return ezSATbit(sat, sat.vec_eq(vec, other.vec)); } + ezSATbit operator !=(const ezSATvec &other) { return ezSATbit(sat, sat.vec_ne(vec, other.vec)); } + ezSATbit operator >=(const ezSATvec &other) { return ezSATbit(sat, sat.vec_ge_unsigned(vec, other.vec)); } + ezSATbit operator > (const ezSATvec &other) { return ezSATbit(sat, sat.vec_gt_unsigned(vec, other.vec)); } + + ezSATvec operator <<(int shift) { return ezSATvec(sat, sat.vec_shl(vec, shift)); } + ezSATvec operator >>(int shift) { return ezSATvec(sat, sat.vec_shr(vec, shift)); } + + operator std::vector() const { return vec; } +}; + +#endif diff --git a/resources/netlist/resources/kernel/share/include/libs/json11/json11.hpp b/resources/netlist/resources/kernel/share/include/libs/json11/json11.hpp new file mode 100644 index 0000000..0c47d05 --- /dev/null +++ b/resources/netlist/resources/kernel/share/include/libs/json11/json11.hpp @@ -0,0 +1,232 @@ +/* json11 + * + * json11 is a tiny JSON library for C++11, providing JSON parsing and serialization. + * + * The core object provided by the library is json11::Json. A Json object represents any JSON + * value: null, bool, number (int or double), string (std::string), array (std::vector), or + * object (std::map). + * + * Json objects act like values: they can be assigned, copied, moved, compared for equality or + * order, etc. There are also helper methods Json::dump, to serialize a Json to a string, and + * Json::parse (static) to parse a std::string as a Json object. + * + * Internally, the various types of Json object are represented by the JsonValue class + * hierarchy. + * + * A note on numbers - JSON specifies the syntax of number formatting but not its semantics, + * so some JSON implementations distinguish between integers and floating-point numbers, while + * some don't. In json11, we choose the latter. Because some JSON implementations (namely + * Javascript itself) treat all numbers as the same type, distinguishing the two leads + * to JSON that will be *silently* changed by a round-trip through those implementations. + * Dangerous! To avoid that risk, json11 stores all numbers as double internally, but also + * provides integer helpers. + * + * Fortunately, double-precision IEEE754 ('double') can precisely store any integer in the + * range +/-2^53, which includes every 'int' on most systems. (Timestamps often use int64 + * or long long to avoid the Y2038K problem; a double storing microseconds since some epoch + * will be exact for +/- 275 years.) + */ + +/* Copyright (c) 2013 Dropbox, Inc. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +#pragma once + +#include +#include +#include +#include +#include + +#ifdef _MSC_VER + #if _MSC_VER <= 1800 // VS 2013 + #ifndef noexcept + #define noexcept throw() + #endif + + #ifndef snprintf + #define snprintf _snprintf_s + #endif + #endif +#endif + +namespace json11 { + +enum JsonParse { + STANDARD, COMMENTS +}; + +class JsonValue; + +class Json final { +public: + // Types + enum Type { + NUL, NUMBER, BOOL, STRING, ARRAY, OBJECT + }; + + // Array and object typedefs + typedef std::vector array; + typedef std::map object; + + // Constructors for the various types of JSON value. + Json() noexcept; // NUL + Json(std::nullptr_t) noexcept; // NUL + Json(double value); // NUMBER + Json(int value); // NUMBER + Json(bool value); // BOOL + Json(const std::string &value); // STRING + Json(std::string &&value); // STRING + Json(const char * value); // STRING + Json(const array &values); // ARRAY + Json(array &&values); // ARRAY + Json(const object &values); // OBJECT + Json(object &&values); // OBJECT + + // Implicit constructor: anything with a to_json() function. + template + Json(const T & t) : Json(t.to_json()) {} + + // Implicit constructor: map-like objects (std::map, std::unordered_map, etc) + template ().begin()->first)>::value + && std::is_constructible().begin()->second)>::value, + int>::type = 0> + Json(const M & m) : Json(object(m.begin(), m.end())) {} + + // Implicit constructor: vector-like objects (std::list, std::vector, std::set, etc) + template ().begin())>::value, + int>::type = 0> + Json(const V & v) : Json(array(v.begin(), v.end())) {} + + // This prevents Json(some_pointer) from accidentally producing a bool. Use + // Json(bool(some_pointer)) if that behavior is desired. + Json(void *) = delete; + + // Accessors + Type type() const; + + bool is_null() const { return type() == NUL; } + bool is_number() const { return type() == NUMBER; } + bool is_bool() const { return type() == BOOL; } + bool is_string() const { return type() == STRING; } + bool is_array() const { return type() == ARRAY; } + bool is_object() const { return type() == OBJECT; } + + // Return the enclosed value if this is a number, 0 otherwise. Note that json11 does not + // distinguish between integer and non-integer numbers - number_value() and int_value() + // can both be applied to a NUMBER-typed object. + double number_value() const; + int int_value() const; + + // Return the enclosed value if this is a boolean, false otherwise. + bool bool_value() const; + // Return the enclosed string if this is a string, "" otherwise. + const std::string &string_value() const; + // Return the enclosed std::vector if this is an array, or an empty vector otherwise. + const array &array_items() const; + // Return the enclosed std::map if this is an object, or an empty map otherwise. + const object &object_items() const; + + // Return a reference to arr[i] if this is an array, Json() otherwise. + const Json & operator[](size_t i) const; + // Return a reference to obj[key] if this is an object, Json() otherwise. + const Json & operator[](const std::string &key) const; + + // Serialize. + void dump(std::string &out) const; + std::string dump() const { + std::string out; + dump(out); + return out; + } + + // Parse. If parse fails, return Json() and assign an error message to err. + static Json parse(const std::string & in, + std::string & err, + JsonParse strategy = JsonParse::STANDARD); + static Json parse(const char * in, + std::string & err, + JsonParse strategy = JsonParse::STANDARD) { + if (in) { + return parse(std::string(in), err, strategy); + } else { + err = "null input"; + return nullptr; + } + } + // Parse multiple objects, concatenated or separated by whitespace + static std::vector parse_multi( + const std::string & in, + std::string::size_type & parser_stop_pos, + std::string & err, + JsonParse strategy = JsonParse::STANDARD); + + static inline std::vector parse_multi( + const std::string & in, + std::string & err, + JsonParse strategy = JsonParse::STANDARD) { + std::string::size_type parser_stop_pos; + return parse_multi(in, parser_stop_pos, err, strategy); + } + + bool operator== (const Json &rhs) const; + bool operator< (const Json &rhs) const; + bool operator!= (const Json &rhs) const { return !(*this == rhs); } + bool operator<= (const Json &rhs) const { return !(rhs < *this); } + bool operator> (const Json &rhs) const { return (rhs < *this); } + bool operator>= (const Json &rhs) const { return !(*this < rhs); } + + /* has_shape(types, err) + * + * Return true if this is a JSON object and, for each item in types, has a field of + * the given type. If not, return false and set err to a descriptive message. + */ + typedef std::initializer_list> shape; + bool has_shape(const shape & types, std::string & err) const; + +private: + std::shared_ptr m_ptr; +}; + +// Internal class hierarchy - JsonValue objects are not exposed to users of this API. +class JsonValue { +protected: + friend class Json; + friend class JsonInt; + friend class JsonDouble; + virtual Json::Type type() const = 0; + virtual bool equals(const JsonValue * other) const = 0; + virtual bool less(const JsonValue * other) const = 0; + virtual void dump(std::string &out) const = 0; + virtual double number_value() const; + virtual int int_value() const; + virtual bool bool_value() const; + virtual const std::string &string_value() const; + virtual const Json::array &array_items() const; + virtual const Json &operator[](size_t i) const; + virtual const Json::object &object_items() const; + virtual const Json &operator[](const std::string &key) const; + virtual ~JsonValue() {} +}; + +} // namespace json11 diff --git a/resources/netlist/resources/kernel/share/include/libs/sha1/sha1.h b/resources/netlist/resources/kernel/share/include/libs/sha1/sha1.h new file mode 100644 index 0000000..b1346b5 --- /dev/null +++ b/resources/netlist/resources/kernel/share/include/libs/sha1/sha1.h @@ -0,0 +1,57 @@ +/* + sha1.h - header of + + ============ + SHA-1 in C++ + ============ + + 100% Public Domain. + + Original C Code + -- Steve Reid + Small changes to fit into bglibs + -- Bruce Guenter + Translation to simpler C++ Code + -- Volker Grabsch + Fixing bugs and improving style + -- Eugene Hopkinson +*/ + +#ifndef SHA1_HPP +#define SHA1_HPP + + +#include +#include +#include + +class SHA1 +{ +public: + SHA1(); + void update(const std::string &s); + void update(std::istream &is); + std::string final(); + static std::string from_file(const std::string &filename); + +private: + static constexpr unsigned int DIGEST_INTS = 5; /* number of 32bit integers per SHA1 digest */ + static constexpr unsigned int BLOCK_INTS = 16; /* number of 32bit integers per SHA1 block */ + static constexpr unsigned int BLOCK_BYTES = BLOCK_INTS * 4; + + uint32_t digest[DIGEST_INTS]; + std::string buffer; + uint64_t transforms; + + void reset(); + void transform(uint32_t block[BLOCK_BYTES]); + + static void read(std::istream &is, std::string &s, size_t max); + static void buffer_to_block(const std::string &buffer, uint32_t block[BLOCK_INTS]); +}; + +std::string sha1(const std::string &string); + + + +#endif /* SHA1_HPP */ diff --git a/resources/netlist/resources/kernel/share/include/passes/fsm/fsmdata.h b/resources/netlist/resources/kernel/share/include/passes/fsm/fsmdata.h new file mode 100644 index 0000000..97371ef --- /dev/null +++ b/resources/netlist/resources/kernel/share/include/passes/fsm/fsmdata.h @@ -0,0 +1,178 @@ +/* + * yosys -- Yosys Open SYnthesis Suite + * + * Copyright (C) 2012 Claire Xenia Wolf + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + */ + +#ifndef FSMDATA_H +#define FSMDATA_H + +#include "kernel/yosys.h" + +YOSYS_NAMESPACE_BEGIN + +struct FsmData +{ + int num_inputs, num_outputs, state_bits, reset_state; + struct transition_t { int state_in, state_out; RTLIL::Const ctrl_in, ctrl_out; }; + std::vector transition_table; + std::vector state_table; + + void copy_to_cell(RTLIL::Cell *cell) + { + cell->parameters[ID::CTRL_IN_WIDTH] = RTLIL::Const(num_inputs); + cell->parameters[ID::CTRL_OUT_WIDTH] = RTLIL::Const(num_outputs); + + int state_num_log2 = 0; + for (int i = state_table.size(); i > 0; i = i >> 1) + state_num_log2++; + state_num_log2 = max(state_num_log2, 1); + + cell->parameters[ID::STATE_BITS] = RTLIL::Const(state_bits); + cell->parameters[ID::STATE_NUM] = RTLIL::Const(state_table.size()); + cell->parameters[ID::STATE_NUM_LOG2] = RTLIL::Const(state_num_log2); + cell->parameters[ID::STATE_RST] = RTLIL::Const(reset_state); + cell->parameters[ID::STATE_TABLE] = RTLIL::Const(); + + for (int i = 0; i < int(state_table.size()); i++) { + std::vector &bits_table = cell->parameters[ID::STATE_TABLE].bits; + std::vector &bits_state = state_table[i].bits; + bits_table.insert(bits_table.end(), bits_state.begin(), bits_state.end()); + } + + cell->parameters[ID::TRANS_NUM] = RTLIL::Const(transition_table.size()); + cell->parameters[ID::TRANS_TABLE] = RTLIL::Const(); + for (int i = 0; i < int(transition_table.size()); i++) + { + std::vector &bits_table = cell->parameters[ID::TRANS_TABLE].bits; + transition_t &tr = transition_table[i]; + + RTLIL::Const const_state_in = RTLIL::Const(tr.state_in, state_num_log2); + RTLIL::Const const_state_out = RTLIL::Const(tr.state_out, state_num_log2); + std::vector &bits_state_in = const_state_in.bits; + std::vector &bits_state_out = const_state_out.bits; + + std::vector &bits_ctrl_in = tr.ctrl_in.bits; + std::vector &bits_ctrl_out = tr.ctrl_out.bits; + + // append lsb first + bits_table.insert(bits_table.end(), bits_ctrl_out.begin(), bits_ctrl_out.end()); + bits_table.insert(bits_table.end(), bits_state_out.begin(), bits_state_out.end()); + bits_table.insert(bits_table.end(), bits_ctrl_in.begin(), bits_ctrl_in.end()); + bits_table.insert(bits_table.end(), bits_state_in.begin(), bits_state_in.end()); + } + } + + void copy_from_cell(RTLIL::Cell *cell) + { + num_inputs = cell->parameters[ID::CTRL_IN_WIDTH].as_int(); + num_outputs = cell->parameters[ID::CTRL_OUT_WIDTH].as_int(); + + state_bits = cell->parameters[ID::STATE_BITS].as_int(); + reset_state = cell->parameters[ID::STATE_RST].as_int(); + + int state_num = cell->parameters[ID::STATE_NUM].as_int(); + int state_num_log2 = cell->parameters[ID::STATE_NUM_LOG2].as_int(); + int trans_num = cell->parameters[ID::TRANS_NUM].as_int(); + + if (reset_state < 0 || reset_state >= state_num) + reset_state = -1; + + const RTLIL::Const &state_table = cell->parameters[ID::STATE_TABLE]; + const RTLIL::Const &trans_table = cell->parameters[ID::TRANS_TABLE]; + + for (int i = 0; i < state_num; i++) { + RTLIL::Const state_code; + int off_begin = i*state_bits, off_end = off_begin + state_bits; + state_code.bits.insert(state_code.bits.begin(), state_table.bits.begin()+off_begin, state_table.bits.begin()+off_end); + this->state_table.push_back(state_code); + } + + for (int i = 0; i < trans_num; i++) + { + auto off_ctrl_out = trans_table.bits.begin() + i*(num_inputs+num_outputs+2*state_num_log2); + auto off_state_out = off_ctrl_out + num_outputs; + auto off_ctrl_in = off_state_out + state_num_log2; + auto off_state_in = off_ctrl_in + num_inputs; + auto off_end = off_state_in + state_num_log2; + + RTLIL::Const state_in, state_out, ctrl_in, ctrl_out; + ctrl_out.bits.insert(state_in.bits.begin(), off_ctrl_out, off_state_out); + state_out.bits.insert(state_out.bits.begin(), off_state_out, off_ctrl_in); + ctrl_in.bits.insert(ctrl_in.bits.begin(), off_ctrl_in, off_state_in); + state_in.bits.insert(state_in.bits.begin(), off_state_in, off_end); + + transition_t tr; + tr.state_in = state_in.as_int(); + tr.state_out = state_out.as_int(); + tr.ctrl_in = ctrl_in; + tr.ctrl_out = ctrl_out; + + if (tr.state_in < 0 || tr.state_in >= state_num) + tr.state_in = -1; + if (tr.state_out < 0 || tr.state_out >= state_num) + tr.state_out = -1; + + transition_table.push_back(tr); + } + } + + void log_info(RTLIL::Cell *cell) + { + log("-------------------------------------\n"); + log("\n"); + log(" Information on FSM %s (%s):\n", cell->name.c_str(), cell->parameters[ID::NAME].decode_string().c_str()); + log("\n"); + log(" Number of input signals: %3d\n", num_inputs); + log(" Number of output signals: %3d\n", num_outputs); + log(" Number of state bits: %3d\n", state_bits); + + log("\n"); + log(" Input signals:\n"); + RTLIL::SigSpec sig_in = cell->getPort(ID::CTRL_IN); + for (int i = 0; i < GetSize(sig_in); i++) + log(" %3d: %s\n", i, log_signal(sig_in[i])); + + log("\n"); + log(" Output signals:\n"); + RTLIL::SigSpec sig_out = cell->getPort(ID::CTRL_OUT); + for (int i = 0; i < GetSize(sig_out); i++) + log(" %3d: %s\n", i, log_signal(sig_out[i])); + + log("\n"); + log(" State encoding:\n"); + for (int i = 0; i < GetSize(state_table); i++) + log(" %3d: %10s%s\n", i, log_signal(state_table[i], false), + int(i) == reset_state ? " " : ""); + + log("\n"); + log(" Transition Table (state_in, ctrl_in, state_out, ctrl_out):\n"); + for (int i = 0; i < GetSize(transition_table); i++) { + transition_t &tr = transition_table[i]; + log(" %5d: %5d %s -> %5d %s\n", i, tr.state_in, log_signal(tr.ctrl_in), tr.state_out, log_signal(tr.ctrl_out)); + } + + log("\n"); + log("-------------------------------------\n"); + } + + // implemented in fsm_opt.cc + static void optimize_fsm(RTLIL::Cell *cell, RTLIL::Module *module); +}; + +YOSYS_NAMESPACE_END + +#endif diff --git a/resources/netlist/resources/kernel/share/intel/common/altpll_bb.v b/resources/netlist/resources/kernel/share/intel/common/altpll_bb.v new file mode 100644 index 0000000..d649e06 --- /dev/null +++ b/resources/netlist/resources/kernel/share/intel/common/altpll_bb.v @@ -0,0 +1,366 @@ +/* + * yosys -- Yosys Open SYnthesis Suite + * + * Copyright (C) 2012 Claire Xenia Wolf + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + */ +/* No clearbox model */ +`ifdef NO_CLEARBOX +(* blackbox *) +module altpll + ( inclk, + fbin, + pllena, + clkswitch, + areset, + pfdena, + clkena, + extclkena, + scanclk, + scanaclr, + scanclkena, + scanread, + scanwrite, + scandata, + phasecounterselect, + phaseupdown, + phasestep, + configupdate, + fbmimicbidir, + clk, + extclk, + clkbad, + enable0, + enable1, + activeclock, + clkloss, + locked, + scandataout, + scandone, + sclkout0, + sclkout1, + phasedone, + vcooverrange, + vcounderrange, + fbout, + fref, + icdrclk, + c0, + c1, + c2, + c3, + c4); + + parameter intended_device_family = "MAX 10"; + parameter operation_mode = "NORMAL"; + parameter pll_type = "AUTO"; + parameter qualify_conf_done = "OFF"; + parameter compensate_clock = "CLK0"; + parameter scan_chain = "LONG"; + parameter primary_clock = "inclk0"; + parameter inclk0_input_frequency = 1000; + parameter inclk1_input_frequency = 0; + parameter gate_lock_signal = "NO"; + parameter gate_lock_counter = 0; + parameter lock_high = 1; + parameter lock_low = 0; + parameter valid_lock_multiplier = 1; + parameter invalid_lock_multiplier = 5; + parameter switch_over_type = "AUTO"; + parameter switch_over_on_lossclk = "OFF" ; + parameter switch_over_on_gated_lock = "OFF" ; + parameter enable_switch_over_counter = "OFF"; + parameter switch_over_counter = 0; + parameter feedback_source = "EXTCLK0" ; + parameter bandwidth = 0; + parameter bandwidth_type = "UNUSED"; + parameter lpm_hint = "UNUSED"; + parameter spread_frequency = 0; + parameter down_spread = "0.0"; + parameter self_reset_on_gated_loss_lock = "OFF"; + parameter self_reset_on_loss_lock = "OFF"; + parameter lock_window_ui = "0.05"; + parameter width_clock = 6; + parameter width_phasecounterselect = 4; + parameter charge_pump_current_bits = 9999; + parameter loop_filter_c_bits = 9999; + parameter loop_filter_r_bits = 9999; + parameter scan_chain_mif_file = "UNUSED"; + parameter clk9_multiply_by = 1; + parameter clk8_multiply_by = 1; + parameter clk7_multiply_by = 1; + parameter clk6_multiply_by = 1; + parameter clk5_multiply_by = 1; + parameter clk4_multiply_by = 1; + parameter clk3_multiply_by = 1; + parameter clk2_multiply_by = 1; + parameter clk1_multiply_by = 1; + parameter clk0_multiply_by = 1; + parameter clk9_divide_by = 1; + parameter clk8_divide_by = 1; + parameter clk7_divide_by = 1; + parameter clk6_divide_by = 1; + parameter clk5_divide_by = 1; + parameter clk4_divide_by = 1; + parameter clk3_divide_by = 1; + parameter clk2_divide_by = 1; + parameter clk1_divide_by = 1; + parameter clk0_divide_by = 1; + parameter clk9_phase_shift = "0"; + parameter clk8_phase_shift = "0"; + parameter clk7_phase_shift = "0"; + parameter clk6_phase_shift = "0"; + parameter clk5_phase_shift = "0"; + parameter clk4_phase_shift = "0"; + parameter clk3_phase_shift = "0"; + parameter clk2_phase_shift = "0"; + parameter clk1_phase_shift = "0"; + parameter clk0_phase_shift = "0"; + + parameter clk9_duty_cycle = 50; + parameter clk8_duty_cycle = 50; + parameter clk7_duty_cycle = 50; + parameter clk6_duty_cycle = 50; + parameter clk5_duty_cycle = 50; + parameter clk4_duty_cycle = 50; + parameter clk3_duty_cycle = 50; + parameter clk2_duty_cycle = 50; + parameter clk1_duty_cycle = 50; + parameter clk0_duty_cycle = 50; + + parameter clk9_use_even_counter_mode = "OFF"; + parameter clk8_use_even_counter_mode = "OFF"; + parameter clk7_use_even_counter_mode = "OFF"; + parameter clk6_use_even_counter_mode = "OFF"; + parameter clk5_use_even_counter_mode = "OFF"; + parameter clk4_use_even_counter_mode = "OFF"; + parameter clk3_use_even_counter_mode = "OFF"; + parameter clk2_use_even_counter_mode = "OFF"; + parameter clk1_use_even_counter_mode = "OFF"; + parameter clk0_use_even_counter_mode = "OFF"; + parameter clk9_use_even_counter_value = "OFF"; + parameter clk8_use_even_counter_value = "OFF"; + parameter clk7_use_even_counter_value = "OFF"; + parameter clk6_use_even_counter_value = "OFF"; + parameter clk5_use_even_counter_value = "OFF"; + parameter clk4_use_even_counter_value = "OFF"; + parameter clk3_use_even_counter_value = "OFF"; + parameter clk2_use_even_counter_value = "OFF"; + parameter clk1_use_even_counter_value = "OFF"; + parameter clk0_use_even_counter_value = "OFF"; + + parameter clk2_output_frequency = 0; + parameter clk1_output_frequency = 0; + parameter clk0_output_frequency = 0; + + parameter vco_min = 0; + parameter vco_max = 0; + parameter vco_center = 0; + parameter pfd_min = 0; + parameter pfd_max = 0; + parameter m_initial = 1; + parameter m = 0; + parameter n = 1; + parameter m2 = 1; + parameter n2 = 1; + parameter ss = 0; + parameter l0_high = 1; + parameter l1_high = 1; + parameter g0_high = 1; + parameter g1_high = 1; + parameter g2_high = 1; + parameter g3_high = 1; + parameter e0_high = 1; + parameter e1_high = 1; + parameter e2_high = 1; + parameter e3_high = 1; + parameter l0_low = 1; + parameter l1_low = 1; + parameter g0_low = 1; + parameter g1_low = 1; + parameter g2_low = 1; + parameter g3_low = 1; + parameter e0_low = 1; + parameter e1_low = 1; + parameter e2_low = 1; + parameter e3_low = 1; + parameter l0_initial = 1; + parameter l1_initial = 1; + parameter g0_initial = 1; + parameter g1_initial = 1; + parameter g2_initial = 1; + parameter g3_initial = 1; + parameter e0_initial = 1; + parameter e1_initial = 1; + parameter e2_initial = 1; + parameter e3_initial = 1; + parameter l0_mode = "bypass"; + parameter l1_mode = "bypass"; + parameter g0_mode = "bypass"; + parameter g1_mode = "bypass"; + parameter g2_mode = "bypass"; + parameter g3_mode = "bypass"; + parameter e0_mode = "bypass"; + parameter e1_mode = "bypass"; + parameter e2_mode = "bypass"; + parameter e3_mode = "bypass"; + parameter l0_ph = 0; + parameter l1_ph = 0; + parameter g0_ph = 0; + parameter g1_ph = 0; + parameter g2_ph = 0; + parameter g3_ph = 0; + parameter e0_ph = 0; + parameter e1_ph = 0; + parameter e2_ph = 0; + parameter e3_ph = 0; + parameter m_ph = 0; + parameter l0_time_delay = 0; + parameter l1_time_delay = 0; + parameter g0_time_delay = 0; + parameter g1_time_delay = 0; + parameter g2_time_delay = 0; + parameter g3_time_delay = 0; + parameter e0_time_delay = 0; + parameter e1_time_delay = 0; + parameter e2_time_delay = 0; + parameter e3_time_delay = 0; + parameter m_time_delay = 0; + parameter n_time_delay = 0; + parameter extclk3_counter = "e3" ; + parameter extclk2_counter = "e2" ; + parameter extclk1_counter = "e1" ; + parameter extclk0_counter = "e0" ; + parameter clk9_counter = "c9" ; + parameter clk8_counter = "c8" ; + parameter clk7_counter = "c7" ; + parameter clk6_counter = "c6" ; + parameter clk5_counter = "l1" ; + parameter clk4_counter = "l0" ; + parameter clk3_counter = "g3" ; + parameter clk2_counter = "g2" ; + parameter clk1_counter = "g1" ; + parameter clk0_counter = "g0" ; + parameter enable0_counter = "l0"; + parameter enable1_counter = "l0"; + parameter charge_pump_current = 2; + parameter loop_filter_r = "1.0"; + parameter loop_filter_c = 5; + parameter vco_post_scale = 0; + parameter vco_frequency_control = "AUTO"; + parameter vco_phase_shift_step = 0; + parameter lpm_type = "altpll"; + + parameter port_clkena0 = "PORT_CONNECTIVITY"; + parameter port_clkena1 = "PORT_CONNECTIVITY"; + parameter port_clkena2 = "PORT_CONNECTIVITY"; + parameter port_clkena3 = "PORT_CONNECTIVITY"; + parameter port_clkena4 = "PORT_CONNECTIVITY"; + parameter port_clkena5 = "PORT_CONNECTIVITY"; + parameter port_extclkena0 = "PORT_CONNECTIVITY"; + parameter port_extclkena1 = "PORT_CONNECTIVITY"; + parameter port_extclkena2 = "PORT_CONNECTIVITY"; + parameter port_extclkena3 = "PORT_CONNECTIVITY"; + parameter port_extclk0 = "PORT_CONNECTIVITY"; + parameter port_extclk1 = "PORT_CONNECTIVITY"; + parameter port_extclk2 = "PORT_CONNECTIVITY"; + parameter port_extclk3 = "PORT_CONNECTIVITY"; + parameter port_clk0 = "PORT_CONNECTIVITY"; + parameter port_clk1 = "PORT_CONNECTIVITY"; + parameter port_clk2 = "PORT_CONNECTIVITY"; + parameter port_clk3 = "PORT_CONNECTIVITY"; + parameter port_clk4 = "PORT_CONNECTIVITY"; + parameter port_clk5 = "PORT_CONNECTIVITY"; + parameter port_clk6 = "PORT_CONNECTIVITY"; + parameter port_clk7 = "PORT_CONNECTIVITY"; + parameter port_clk8 = "PORT_CONNECTIVITY"; + parameter port_clk9 = "PORT_CONNECTIVITY"; + parameter port_scandata = "PORT_CONNECTIVITY"; + parameter port_scandataout = "PORT_CONNECTIVITY"; + parameter port_scandone = "PORT_CONNECTIVITY"; + parameter port_sclkout1 = "PORT_CONNECTIVITY"; + parameter port_sclkout0 = "PORT_CONNECTIVITY"; + parameter port_clkbad0 = "PORT_CONNECTIVITY"; + parameter port_clkbad1 = "PORT_CONNECTIVITY"; + parameter port_activeclock = "PORT_CONNECTIVITY"; + parameter port_clkloss = "PORT_CONNECTIVITY"; + parameter port_inclk1 = "PORT_CONNECTIVITY"; + parameter port_inclk0 = "PORT_CONNECTIVITY"; + parameter port_fbin = "PORT_CONNECTIVITY"; + parameter port_fbout = "PORT_CONNECTIVITY"; + parameter port_pllena = "PORT_CONNECTIVITY"; + parameter port_clkswitch = "PORT_CONNECTIVITY"; + parameter port_areset = "PORT_CONNECTIVITY"; + parameter port_pfdena = "PORT_CONNECTIVITY"; + parameter port_scanclk = "PORT_CONNECTIVITY"; + parameter port_scanaclr = "PORT_CONNECTIVITY"; + parameter port_scanread = "PORT_CONNECTIVITY"; + parameter port_scanwrite = "PORT_CONNECTIVITY"; + parameter port_enable0 = "PORT_CONNECTIVITY"; + parameter port_enable1 = "PORT_CONNECTIVITY"; + parameter port_locked = "PORT_CONNECTIVITY"; + parameter port_configupdate = "PORT_CONNECTIVITY"; + parameter port_phasecounterselect = "PORT_CONNECTIVITY"; + parameter port_phasedone = "PORT_CONNECTIVITY"; + parameter port_phasestep = "PORT_CONNECTIVITY"; + parameter port_phaseupdown = "PORT_CONNECTIVITY"; + parameter port_vcooverrange = "PORT_CONNECTIVITY"; + parameter port_vcounderrange = "PORT_CONNECTIVITY"; + parameter port_scanclkena = "PORT_CONNECTIVITY"; + parameter using_fbmimicbidir_port = "ON"; + + input [1:0] inclk; + input fbin; + input pllena; + input clkswitch; + input areset; + input pfdena; + input clkena; + input extclkena; + input scanclk; + input scanaclr; + input scanclkena; + input scanread; + input scanwrite; + input scandata; + input phasecounterselect; + input phaseupdown; + input phasestep; + input configupdate; + inout fbmimicbidir; + + + output [width_clock-1:0] clk; + output [3:0] extclk; + output [1:0] clkbad; + output enable0; + output enable1; + output activeclock; + output clkloss; + output locked; + output scandataout; + output scandone; + output sclkout0; + output sclkout1; + output phasedone; + output vcooverrange; + output vcounderrange; + output fbout; + output fref; + output icdrclk; + output c0, c1, c2, c3, c4; + +endmodule // altpll +`endif diff --git a/resources/netlist/resources/kernel/share/intel/common/brams_m9k.txt b/resources/netlist/resources/kernel/share/intel/common/brams_m9k.txt new file mode 100644 index 0000000..3bf21af --- /dev/null +++ b/resources/netlist/resources/kernel/share/intel/common/brams_m9k.txt @@ -0,0 +1,33 @@ +bram $__M9K_ALTSYNCRAM_SINGLEPORT_FULL + init 1 + abits 13 @M1 + dbits 1 @M1 + abits 12 @M2 + dbits 2 @M2 + abits 11 @M3 + dbits 4 @M3 + abits 10 @M4 + dbits 8 @M4 + abits 10 @M5 + dbits 9 @M5 + abits 9 @M6 + dbits 16 @M6 + abits 9 @M7 + dbits 18 @M7 + abits 8 @M8 + dbits 32 @M8 + abits 8 @M9 + dbits 36 @M9 + groups 2 + ports 1 1 + wrmode 0 1 + enable 1 1 + transp 0 0 + clocks 2 3 + clkpol 2 3 +endbram + +match $__M9K_ALTSYNCRAM_SINGLEPORT_FULL + min efficiency 2 + make_transp +endmatch diff --git a/resources/netlist/resources/kernel/share/intel/common/brams_map_m9k.v b/resources/netlist/resources/kernel/share/intel/common/brams_map_m9k.v new file mode 100644 index 0000000..d0f07c1 --- /dev/null +++ b/resources/netlist/resources/kernel/share/intel/common/brams_map_m9k.v @@ -0,0 +1,93 @@ +module \$__M9K_ALTSYNCRAM_SINGLEPORT_FULL (CLK2, CLK3, A1ADDR, A1DATA, A1EN, B1ADDR, B1DATA, B1EN); + + parameter CFG_ABITS = 8; + parameter CFG_DBITS = 36; + parameter ABITS = 1; + parameter DBITS = 1; + parameter CLKPOL2 = 1; + parameter CLKPOL3 = 1; + + input CLK2; + input CLK3; + //Read data + output [CFG_DBITS-1:0] A1DATA; + input [CFG_ABITS-1:0] A1ADDR; + input A1EN; + //Write data + output [CFG_DBITS-1:0] B1DATA; + input [CFG_ABITS-1:0] B1ADDR; + input B1EN; + + wire [CFG_DBITS-1:0] B1DATA_t; + + localparam MODE = CFG_DBITS == 1 ? 1: + CFG_DBITS == 2 ? 2: + CFG_DBITS == 4 ? 3: + CFG_DBITS == 8 ? 4: + CFG_DBITS == 9 ? 5: + CFG_DBITS == 16 ? 6: + CFG_DBITS == 18 ? 7: + CFG_DBITS == 32 ? 8: + CFG_DBITS == 36 ? 9: + 'bx; + + localparam NUMWORDS = CFG_DBITS == 1 ? 8192: + CFG_DBITS == 2 ? 4096: + CFG_DBITS == 4 ? 2048: + CFG_DBITS == 8 ? 1024: + CFG_DBITS == 9 ? 1024: + CFG_DBITS == 16 ? 512: + CFG_DBITS == 18 ? 512: + CFG_DBITS == 32 ? 256: + CFG_DBITS == 36 ? 256: + 'bx; + + altsyncram #(.clock_enable_input_b ("ALTERNATE" ), + .clock_enable_input_a ("ALTERNATE" ), + .clock_enable_output_b ("NORMAL" ), + .clock_enable_output_a ("NORMAL" ), + .wrcontrol_aclr_a ("NONE" ), + .indata_aclr_a ("NONE" ), + .address_aclr_a ("NONE" ), + .outdata_aclr_a ("NONE" ), + .outdata_reg_a ("UNREGISTERED"), + .operation_mode ("SINGLE_PORT" ), + .intended_device_family ("CYCLONE IVE" ), + .outdata_reg_a ("UNREGISTERED"), + .lpm_type ("altsyncram" ), + .init_type ("unused" ), + .ram_block_type ("AUTO" ), + .lpm_hint ("ENABLE_RUNTIME_MOD=NO"), // Forced value + .power_up_uninitialized ("FALSE"), + .read_during_write_mode_port_a ("NEW_DATA_NO_NBE_READ"), // Forced value + .width_byteena_a (1), // Forced value + .numwords_b ( NUMWORDS ), + .numwords_a ( NUMWORDS ), + .widthad_b ( CFG_DBITS ), + .width_b ( CFG_ABITS ), + .widthad_a ( CFG_DBITS ), + .width_a ( CFG_ABITS ) + ) _TECHMAP_REPLACE_ ( + .data_a(B1DATA), + .address_a(B1ADDR), + .wren_a(B1EN), + .rden_a(A1EN), + .q_a(A1DATA), + .data_b(B1DATA), + .address_b(0), + .wren_b(1'b0), + .rden_b(1'b0), + .q_b(), + .clock0(CLK2), + .clock1(1'b1), // Unused in single port mode + .clocken0(1'b1), + .clocken1(1'b1), + .clocken2(1'b1), + .clocken3(1'b1), + .aclr0(1'b0), + .aclr1(1'b0), + .addressstall_a(1'b0), + .addressstall_b(1'b0)); + +endmodule + diff --git a/resources/netlist/resources/kernel/share/intel/common/ff_map.v b/resources/netlist/resources/kernel/share/intel/common/ff_map.v new file mode 100644 index 0000000..e3f92ad --- /dev/null +++ b/resources/netlist/resources/kernel/share/intel/common/ff_map.v @@ -0,0 +1,11 @@ +// Async Active Low Reset DFF +module \$_DFFE_PN0P_ (input D, C, R, E, output Q); + parameter _TECHMAP_WIREINIT_Q_ = 1'bx; + generate if (_TECHMAP_WIREINIT_Q_ === 1'b1) begin + dffeas #(.is_wysiwyg("TRUE"), .power_up("high")) _TECHMAP_REPLACE_ (.d(D), .q(Q), .clk(C), .clrn(R), .prn(1'b1), .ena(E), .asdata(1'b0), .aload(1'b0), .sclr(1'b0), .sload(1'b0)); + end else begin + dffeas #(.is_wysiwyg("TRUE"), .power_up("low")) _TECHMAP_REPLACE_ (.d(D), .q(Q), .clk(C), .clrn(R), .prn(1'b1), .ena(E), .asdata(1'b0), .aload(1'b0), .sclr(1'b0), .sload(1'b0)); + end + endgenerate + wire _TECHMAP_REMOVEINIT_Q_ = 1; +endmodule diff --git a/resources/netlist/resources/kernel/share/intel/common/m9k_bb.v b/resources/netlist/resources/kernel/share/intel/common/m9k_bb.v new file mode 100644 index 0000000..551d5cc --- /dev/null +++ b/resources/netlist/resources/kernel/share/intel/common/m9k_bb.v @@ -0,0 +1,70 @@ +/* + * yosys -- Yosys Open SYnthesis Suite + * + * Copyright (C) 2012 Claire Xenia Wolf + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + */ +(* blackbox *) +module altsyncram(data_a, address_a, wren_a, rden_a, q_a, data_b, address_b, wren_b, rden_b, + q_b, clock0, clock1, clocken0, clocken1, clocken2, clocken3, aclr0, aclr1, + addressstall_a, addressstall_b); + + parameter clock_enable_input_b = "ALTERNATE"; + parameter clock_enable_input_a = "ALTERNATE"; + parameter clock_enable_output_b = "NORMAL"; + parameter clock_enable_output_a = "NORMAL"; + parameter wrcontrol_aclr_a = "NONE"; + parameter indata_aclr_a = "NONE"; + parameter address_aclr_a = "NONE"; + parameter outdata_aclr_a = "NONE"; + parameter outdata_reg_a = "UNREGISTERED"; + parameter operation_mode = "SINGLE_PORT"; + parameter intended_device_family = "MAX 10 FPGA"; + parameter outdata_reg_b = "UNREGISTERED"; + parameter lpm_type = "altsyncram"; + parameter init_type = "unused"; + parameter ram_block_type = "AUTO"; + parameter lpm_hint = "ENABLE_RUNTIME_MOD=NO"; + parameter power_up_uninitialized = "FALSE"; + parameter read_during_write_mode_port_a = "NEW_DATA_NO_NBE_READ"; + parameter width_byteena_a = 1; + parameter numwords_b = 0; + parameter numwords_a = 0; + parameter widthad_b = 1; + parameter width_b = 1; + parameter widthad_a = 1; + parameter width_a = 1; + + // Port A declarations + output [35:0] q_a; + input [35:0] data_a; + input [7:0] address_a; + input wren_a; + input rden_a; + // Port B declarations + output [35:0] q_b; + input [35:0] data_b; + input [7:0] address_b; + input wren_b; + input rden_b; + // Control signals + input clock0, clock1; + input clocken0, clocken1, clocken2, clocken3; + input aclr0, aclr1; + input addressstall_a; + input addressstall_b; + // TODO: Implement the correct simulation model + +endmodule // altsyncram diff --git a/resources/netlist/resources/kernel/share/intel/cyclone10lp/cells_map.v b/resources/netlist/resources/kernel/share/intel/cyclone10lp/cells_map.v new file mode 100644 index 0000000..1341793 --- /dev/null +++ b/resources/netlist/resources/kernel/share/intel/cyclone10lp/cells_map.v @@ -0,0 +1,75 @@ +/* + * yosys -- Yosys Open SYnthesis Suite + * + * Copyright (C) 2012 Claire Xenia Wolf + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + */ +// > c60k28 (Viacheslav, VT) [at] yandex [dot] com +// > Intel FPGA technology mapping. User must first simulate the generated \ +// > netlist before going to test it on board. + +// Input buffer map +module \$__inpad (input I, output O); + cyclone10lp_io_ibuf _TECHMAP_REPLACE_ (.o(O), .i(I), .ibar(1'b0)); +endmodule + +// Output buffer map +module \$__outpad (input I, output O); + cyclone10lp_io_obuf _TECHMAP_REPLACE_ (.o(O), .i(I), .oe(1'b1)); +endmodule + +// LUT Map +/* 0 -> datac + 1 -> cin */ +module \$lut (A, Y); + parameter WIDTH = 0; + parameter LUT = 0; + (* force_downto *) + input [WIDTH-1:0] A; + output Y; + generate + if (WIDTH == 1) begin + assign Y = ~A[0]; // Not need to spend 1 logic cell for such an easy function + end else + if (WIDTH == 2) begin + cyclone10lp_lcell_comb #(.lut_mask({4{LUT}}), + .sum_lutc_input("datac")) _TECHMAP_REPLACE_ (.combout(Y), + .dataa(A[0]), + .datab(A[1]), + .datac(1'b1), + .datad(1'b1)); + end else + if(WIDTH == 3) begin + cyclone10lp_lcell_comb #(.lut_mask({2{LUT}}), + .sum_lutc_input("datac")) _TECHMAP_REPLACE_ (.combout(Y), + .dataa(A[0]), + .datab(A[1]), + .datac(A[2]), + .datad(1'b1)); + end else + if(WIDTH == 4) begin + cyclone10lp_lcell_comb #(.lut_mask(LUT), + .sum_lutc_input("datac")) _TECHMAP_REPLACE_ (.combout(Y), + .dataa(A[0]), + .datab(A[1]), + .datac(A[2]), + .datad(A[3])); + end else + wire _TECHMAP_FAIL_ = 1; + endgenerate + +endmodule + + diff --git a/resources/netlist/resources/kernel/share/intel/cyclone10lp/cells_sim.v b/resources/netlist/resources/kernel/share/intel/cyclone10lp/cells_sim.v new file mode 100644 index 0000000..ab99589 --- /dev/null +++ b/resources/netlist/resources/kernel/share/intel/cyclone10lp/cells_sim.v @@ -0,0 +1,137 @@ +/* + * yosys -- Yosys Open SYnthesis Suite + * + * Copyright (C) 2012 Claire Xenia Wolf + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + */ +module VCC (output V); + assign V = 1'b1; +endmodule // VCC + +module GND (output G); + assign G = 1'b0; +endmodule // GND + +/* Altera Cyclone 10 LP devices Input Buffer Primitive */ +module cyclone10lp_io_ibuf + (output o, input i, input ibar); + assign ibar = ibar; + assign o = i; +endmodule // cyclone10lp_io_ibuf + +/* Altera Cyclone 10 LP devices Output Buffer Primitive */ +module cyclone10lp_io_obuf + (output o, input i, input oe); + assign o = i; + assign oe = oe; +endmodule // cyclone10lp_io_obuf + +/* Altera Cyclone IV (E) 4-input non-fracturable LUT Primitive */ +module cyclone10lp_lcell_comb + (output combout, cout, + input dataa, datab, datac, datad, cin); + + /* Internal parameters which define the behaviour + of the LUT primitive. + lut_mask define the lut function, can be expressed in 16-digit bin or hex. + sum_lutc_input define the type of LUT (combinational | arithmetic). + dont_touch for retiming || carry options. + lpm_type for WYSIWYG */ + + parameter lut_mask = 16'hFFFF; + parameter dont_touch = "off"; + parameter lpm_type = "cyclone10lp_lcell_comb"; + parameter sum_lutc_input = "datac"; + + reg [1:0] lut_type; + reg cout_rt; + reg combout_rt; + wire dataa_w; + wire datab_w; + wire datac_w; + wire datad_w; + wire cin_w; + + assign dataa_w = dataa; + assign datab_w = datab; + assign datac_w = datac; + assign datad_w = datad; + + function lut_data; + input [15:0] mask; + input dataa, datab, datac, datad; + reg [7:0] s3; + reg [3:0] s2; + reg [1:0] s1; + begin + s3 = datad ? mask[15:8] : mask[7:0]; + s2 = datac ? s3[7:4] : s3[3:0]; + s1 = datab ? s2[3:2] : s2[1:0]; + lut_data = dataa ? s1[1] : s1[0]; + end + + endfunction + + initial begin + if (sum_lutc_input == "datac") lut_type = 0; + else + if (sum_lutc_input == "cin") lut_type = 1; + else begin + $error("Error in sum_lutc_input. Parameter %s is not a valid value.\n", sum_lutc_input); + $finish(); + end + end + + always @(dataa_w or datab_w or datac_w or datad_w or cin_w) begin + if (lut_type == 0) begin // logic function + combout_rt = lut_data(lut_mask, dataa_w, datab_w, + datac_w, datad_w); + end + else if (lut_type == 1) begin // arithmetic function + combout_rt = lut_data(lut_mask, dataa_w, datab_w, + cin_w, datad_w); + end + cout_rt = lut_data(lut_mask, dataa_w, datab_w, cin_w, 'b0); + end + + assign combout = combout_rt & 1'b1; + assign cout = cout_rt & 1'b1; + +endmodule // cyclone10lp_lcell_comb + +/* Altera D Flip-Flop Primitive */ +module dffeas + (output q, + input d, clk, clrn, prn, ena, + input asdata, aload, sclr, sload); + + // Timing simulation is not covered + parameter power_up="dontcare"; + parameter is_wysiwyg="false"; + + reg q_tmp; + wire reset; + reg [7:0] debug_net; + + assign reset = (prn && sclr && ~clrn && ena); + assign q = q_tmp & 1'b1; + + always @(posedge clk, posedge aload) begin + if(reset) q_tmp <= 0; + else q_tmp <= d; + end + assign q = q_tmp; + +endmodule // dffeas diff --git a/resources/netlist/resources/kernel/share/intel/cycloneiv/cells_map.v b/resources/netlist/resources/kernel/share/intel/cycloneiv/cells_map.v new file mode 100644 index 0000000..59f50bd --- /dev/null +++ b/resources/netlist/resources/kernel/share/intel/cycloneiv/cells_map.v @@ -0,0 +1,59 @@ +/* + * yosys -- Yosys Open SYnthesis Suite + * + * Copyright (C) 2012 Claire Xenia Wolf + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + */ +// > c60k28 (Viacheslav, VT) [at] yandex [dot] com +// > Intel FPGA technology mapping. User must first simulate the generated \ +// > netlist before going to test it on board. + +// Input buffer map +module \$__inpad (input I, output O); + cycloneiv_io_ibuf _TECHMAP_REPLACE_ (.o(O), .i(I), .ibar(1'b0)); +endmodule + +// Output buffer map +module \$__outpad (input I, output O); + cycloneiv_io_obuf _TECHMAP_REPLACE_ (.o(O), .i(I), .oe(1'b1)); +endmodule + +// LUT Map +/* 0 -> datac + 1 -> cin */ +module \$lut (A, Y); + parameter WIDTH = 0; + parameter LUT = 0; + (* force_downto *) + input [WIDTH-1:0] A; + output Y; + generate + if (WIDTH == 1) begin + assign Y = ~A[0]; // Not need to spend 1 logic cell for such an easy function + end else + if (WIDTH == 2) begin + cycloneiv_lcell_comb #(.lut_mask({4{LUT}}), .sum_lutc_input("datac")) _TECHMAP_REPLACE_ (.combout(Y), .dataa(A[0]), .datab(A[1]), .datac(1'b1),.datad(1'b1)); + end else + if(WIDTH == 3) begin + cycloneiv_lcell_comb #(.lut_mask({2{LUT}}), .sum_lutc_input("datac")) _TECHMAP_REPLACE_ (.combout(Y), .dataa(A[0]), .datab(A[1]), .datac(A[2]),.datad(1'b1)); + end else + if(WIDTH == 4) begin + cycloneiv_lcell_comb #(.lut_mask(LUT), .sum_lutc_input("datac")) _TECHMAP_REPLACE_ (.combout(Y), .dataa(A[0]), .datab(A[1]), .datac(A[2]),.datad(A[3])); + end else + wire _TECHMAP_FAIL_ = 1; + endgenerate +endmodule // + + diff --git a/resources/netlist/resources/kernel/share/intel/cycloneiv/cells_sim.v b/resources/netlist/resources/kernel/share/intel/cycloneiv/cells_sim.v new file mode 100644 index 0000000..f3c8fbe --- /dev/null +++ b/resources/netlist/resources/kernel/share/intel/cycloneiv/cells_sim.v @@ -0,0 +1,299 @@ +/* + * yosys -- Yosys Open SYnthesis Suite + * + * Copyright (C) 2012 Claire Xenia Wolf + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + */ + +module VCC (output V); + assign V = 1'b1; +endmodule // VCC + +module GND (output G); + assign G = 1'b0; +endmodule // GND + +/* Altera Cyclone IV (GX) devices Input Buffer Primitive */ +module cycloneiv_io_ibuf + (output o, input i, input ibar); + assign ibar = ibar; + assign o = i; +endmodule // fiftyfivenm_io_ibuf + +/* Altera Cyclone IV (GX) devices Output Buffer Primitive */ +module cycloneiv_io_obuf + (output o, input i, input oe); + assign o = i; + assign oe = oe; +endmodule // fiftyfivenm_io_obuf + +/* Altera Cyclone IV (GX) 4-input non-fracturable LUT Primitive */ +module cycloneiv_lcell_comb + (output combout, cout, + input dataa, datab, datac, datad, cin); + + /* Internal parameters which define the behaviour + of the LUT primitive. + lut_mask define the lut function, can be expressed in 16-digit bin or hex. + sum_lutc_input define the type of LUT (combinational | arithmetic). + dont_touch for retiming || carry options. + lpm_type for WYSIWYG */ + + parameter lut_mask = 16'hFFFF; + parameter dont_touch = "off"; + parameter lpm_type = "cycloneiv_lcell_comb"; + parameter sum_lutc_input = "datac"; + + reg [1:0] lut_type; + reg cout_rt; + reg combout_rt; + wire dataa_w; + wire datab_w; + wire datac_w; + wire datad_w; + wire cin_w; + + assign dataa_w = dataa; + assign datab_w = datab; + assign datac_w = datac; + assign datad_w = datad; + + function lut_data; + input [15:0] mask; + input dataa, datab, datac, datad; + reg [7:0] s3; + reg [3:0] s2; + reg [1:0] s1; + begin + s3 = datad ? mask[15:8] : mask[7:0]; + s2 = datac ? s3[7:4] : s3[3:0]; + s1 = datab ? s2[3:2] : s2[1:0]; + lut_data = dataa ? s1[1] : s1[0]; + end + + endfunction + + initial begin + if (sum_lutc_input == "datac") lut_type = 0; + else + if (sum_lutc_input == "cin") lut_type = 1; + else begin + $error("Error in sum_lutc_input. Parameter %s is not a valid value.\n", sum_lutc_input); + $finish(); + end + end + + always @(dataa_w or datab_w or datac_w or datad_w or cin_w) begin + if (lut_type == 0) begin // logic function + combout_rt = lut_data(lut_mask, dataa_w, datab_w, + datac_w, datad_w); + end + else if (lut_type == 1) begin // arithmetic function + combout_rt = lut_data(lut_mask, dataa_w, datab_w, + cin_w, datad_w); + end + cout_rt = lut_data(lut_mask, dataa_w, datab_w, cin_w, 'b0); + end + + assign combout = combout_rt & 1'b1; + assign cout = cout_rt & 1'b1; + +endmodule // cycloneiv_lcell_comb + +/* Altera D Flip-Flop Primitive */ +module dffeas + (output q, + input d, clk, clrn, prn, ena, + input asdata, aload, sclr, sload); + + // Timing simulation is not covered + parameter power_up="dontcare"; + parameter is_wysiwyg="false"; + + reg q_tmp; + wire reset; + reg [7:0] debug_net; + + assign reset = (prn && sclr && ~clrn && ena); + assign q = q_tmp & 1'b1; + + always @(posedge clk, posedge aload) begin + if(reset) q_tmp <= 0; + else q_tmp <= d; + end + assign q = q_tmp; + +endmodule // dffeas + +/* Cyclone IV GX altpll clearbox model */ +(* blackbox *) +module cycloneiv_pll + (inclk, + fbin, + fbout, + clkswitch, + areset, + pfdena, + scanclk, + scandata, + scanclkena, + configupdate, + clk, + phasecounterselect, + phaseupdown, + phasestep, + clkbad, + activeclock, + locked, + scandataout, + scandone, + phasedone, + vcooverrange, + vcounderrange, + fref, + icdrclk); + + parameter operation_mode = "normal"; + parameter pll_type = "auto"; + parameter compensate_clock = "clock0"; + parameter inclk0_input_frequency = 0; + parameter inclk1_input_frequency = 0; + parameter self_reset_on_loss_lock = "off"; + parameter switch_over_type = "auto"; + parameter switch_over_counter = 1; + parameter enable_switch_over_counter = "off"; + parameter bandwidth = 0; + parameter bandwidth_type = "auto"; + parameter use_dc_coupling = "false"; + parameter lock_high = 0; + parameter lock_low = 0; + parameter lock_window_ui = "0.05"; + parameter test_bypass_lock_detect = "off"; + parameter clk0_output_frequency = 0; + parameter clk0_multiply_by = 0; + parameter clk0_divide_by = 0; + parameter clk0_phase_shift = "0"; + parameter clk0_duty_cycle = 50; + parameter clk1_output_frequency = 0; + parameter clk1_multiply_by = 0; + parameter clk1_divide_by = 0; + parameter clk1_phase_shift = "0"; + parameter clk1_duty_cycle = 50; + parameter clk2_output_frequency = 0; + parameter clk2_multiply_by = 0; + parameter clk2_divide_by = 0; + parameter clk2_phase_shift = "0"; + parameter clk2_duty_cycle = 50; + parameter clk3_output_frequency = 0; + parameter clk3_multiply_by = 0; + parameter clk3_divide_by = 0; + parameter clk3_phase_shift = "0"; + parameter clk3_duty_cycle = 50; + parameter clk4_output_frequency = 0; + parameter clk4_multiply_by = 0; + parameter clk4_divide_by = 0; + parameter clk4_phase_shift = "0"; + parameter clk4_duty_cycle = 50; + parameter pfd_min = 0; + parameter pfd_max = 0; + parameter vco_min = 0; + parameter vco_max = 0; + parameter vco_center = 0; + // Advanced user parameters + parameter m_initial = 1; + parameter m = 0; + parameter n = 1; + parameter c0_high = 1; + parameter c0_low = 1; + parameter c0_initial = 1; + parameter c0_mode = "bypass"; + parameter c0_ph = 0; + parameter c1_high = 1; + parameter c1_low = 1; + parameter c1_initial = 1; + parameter c1_mode = "bypass"; + parameter c1_ph = 0; + parameter c2_high = 1; + parameter c2_low = 1; + parameter c2_initial = 1; + parameter c2_mode = "bypass"; + parameter c2_ph = 0; + parameter c3_high = 1; + parameter c3_low = 1; + parameter c3_initial = 1; + parameter c3_mode = "bypass"; + parameter c3_ph = 0; + parameter c4_high = 1; + parameter c4_low = 1; + parameter c4_initial = 1; + parameter c4_mode = "bypass"; + parameter c4_ph = 0; + parameter m_ph = 0; + parameter clk0_counter = "unused"; + parameter clk1_counter = "unused"; + parameter clk2_counter = "unused"; + parameter clk3_counter = "unused"; + parameter clk4_counter = "unused"; + parameter c1_use_casc_in = "off"; + parameter c2_use_casc_in = "off"; + parameter c3_use_casc_in = "off"; + parameter c4_use_casc_in = "off"; + parameter m_test_source = -1; + parameter c0_test_source = -1; + parameter c1_test_source = -1; + parameter c2_test_source = -1; + parameter c3_test_source = -1; + parameter c4_test_source = -1; + parameter vco_multiply_by = 0; + parameter vco_divide_by = 0; + parameter vco_post_scale = 1; + parameter vco_frequency_control = "auto"; + parameter vco_phase_shift_step = 0; + parameter charge_pump_current = 10; + parameter loop_filter_r = "1.0"; + parameter loop_filter_c = 0; + parameter pll_compensation_delay = 0; + parameter lpm_type = "cycloneiv_pll"; + parameter phase_counter_select_width = 3; + + input [1:0] inclk; + input fbin; + input clkswitch; + input areset; + input pfdena; + input [phase_counter_select_width - 1:0] phasecounterselect; + input phaseupdown; + input phasestep; + input scanclk; + input scanclkena; + input scandata; + input configupdate; + + output [4:0] clk; + output [1:0] clkbad; + output activeclock; + output locked; + output scandataout; + output scandone; + output fbout; + output phasedone; + output vcooverrange; + output vcounderrange; + output fref; + output icdrclk; + +endmodule // cycloneive_pll + + diff --git a/resources/netlist/resources/kernel/share/intel/cycloneive/cells_map.v b/resources/netlist/resources/kernel/share/intel/cycloneive/cells_map.v new file mode 100644 index 0000000..646530d --- /dev/null +++ b/resources/netlist/resources/kernel/share/intel/cycloneive/cells_map.v @@ -0,0 +1,75 @@ +/* + * yosys -- Yosys Open SYnthesis Suite + * + * Copyright (C) 2012 Claire Xenia Wolf + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + */ +// > c60k28 (Viacheslav, VT) [at] yandex [dot] com +// > Intel FPGA technology mapping. User must first simulate the generated \ +// > netlist before going to test it on board. + +// Input buffer map +module \$__inpad (input I, output O); + cycloneive_io_ibuf _TECHMAP_REPLACE_ (.o(O), .i(I), .ibar(1'b0)); +endmodule + +// Output buffer map +module \$__outpad (input I, output O); + cycloneive_io_obuf _TECHMAP_REPLACE_ (.o(O), .i(I), .oe(1'b1)); +endmodule + +// LUT Map +/* 0 -> datac + 1 -> cin */ +module \$lut (A, Y); + parameter WIDTH = 0; + parameter LUT = 0; + (* force_downto *) + input [WIDTH-1:0] A; + output Y; + generate + if (WIDTH == 1) begin + assign Y = ~A[0]; // Not need to spend 1 logic cell for such an easy function + end else + if (WIDTH == 2) begin + cycloneive_lcell_comb #(.lut_mask({4{LUT}}), + .sum_lutc_input("datac")) _TECHMAP_REPLACE_ (.combout(Y), + .dataa(A[0]), + .datab(A[1]), + .datac(1'b1), + .datad(1'b1)); + end else + if(WIDTH == 3) begin + cycloneive_lcell_comb #(.lut_mask({2{LUT}}), + .sum_lutc_input("datac")) _TECHMAP_REPLACE_ (.combout(Y), + .dataa(A[0]), + .datab(A[1]), + .datac(A[2]), + .datad(1'b1)); + end else + if(WIDTH == 4) begin + cycloneive_lcell_comb #(.lut_mask(LUT), + .sum_lutc_input("datac")) _TECHMAP_REPLACE_ (.combout(Y), + .dataa(A[0]), + .datab(A[1]), + .datac(A[2]), + .datad(A[3])); + end else + wire _TECHMAP_FAIL_ = 1; + endgenerate + +endmodule + + diff --git a/resources/netlist/resources/kernel/share/intel/cycloneive/cells_sim.v b/resources/netlist/resources/kernel/share/intel/cycloneive/cells_sim.v new file mode 100644 index 0000000..9f4cb9a --- /dev/null +++ b/resources/netlist/resources/kernel/share/intel/cycloneive/cells_sim.v @@ -0,0 +1,292 @@ +/* + * yosys -- Yosys Open SYnthesis Suite + * + * Copyright (C) 2012 Claire Xenia Wolf + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + */ +module VCC (output V); + assign V = 1'b1; +endmodule // VCC + +module GND (output G); + assign G = 1'b0; +endmodule // GND + +/* Altera Cyclone IV (E) devices Input Buffer Primitive */ +module cycloneive_io_ibuf + (output o, input i, input ibar); + assign ibar = ibar; + assign o = i; +endmodule // fiftyfivenm_io_ibuf + +/* Altera Cyclone IV (E) devices Output Buffer Primitive */ +module cycloneive_io_obuf + (output o, input i, input oe); + assign o = i; + assign oe = oe; +endmodule // fiftyfivenm_io_obuf + +/* Altera Cyclone IV (E) 4-input non-fracturable LUT Primitive */ +module cycloneive_lcell_comb + (output combout, cout, + input dataa, datab, datac, datad, cin); + + /* Internal parameters which define the behaviour + of the LUT primitive. + lut_mask define the lut function, can be expressed in 16-digit bin or hex. + sum_lutc_input define the type of LUT (combinational | arithmetic). + dont_touch for retiming || carry options. + lpm_type for WYSIWYG */ + + parameter lut_mask = 16'hFFFF; + parameter dont_touch = "off"; + parameter lpm_type = "cycloneive_lcell_comb"; + parameter sum_lutc_input = "datac"; + + reg [1:0] lut_type; + reg cout_rt; + reg combout_rt; + wire dataa_w; + wire datab_w; + wire datac_w; + wire datad_w; + wire cin_w; + + assign dataa_w = dataa; + assign datab_w = datab; + assign datac_w = datac; + assign datad_w = datad; + + function lut_data; + input [15:0] mask; + input dataa, datab, datac, datad; + reg [7:0] s3; + reg [3:0] s2; + reg [1:0] s1; + begin + s3 = datad ? mask[15:8] : mask[7:0]; + s2 = datac ? s3[7:4] : s3[3:0]; + s1 = datab ? s2[3:2] : s2[1:0]; + lut_data = dataa ? s1[1] : s1[0]; + end + + endfunction + + initial begin + if (sum_lutc_input == "datac") lut_type = 0; + else + if (sum_lutc_input == "cin") lut_type = 1; + else begin + $error("Error in sum_lutc_input. Parameter %s is not a valid value.\n", sum_lutc_input); + $finish(); + end + end + + always @(dataa_w or datab_w or datac_w or datad_w or cin_w) begin + if (lut_type == 0) begin // logic function + combout_rt = lut_data(lut_mask, dataa_w, datab_w, + datac_w, datad_w); + end + else if (lut_type == 1) begin // arithmetic function + combout_rt = lut_data(lut_mask, dataa_w, datab_w, + cin_w, datad_w); + end + cout_rt = lut_data(lut_mask, dataa_w, datab_w, cin_w, 'b0); + end + + assign combout = combout_rt & 1'b1; + assign cout = cout_rt & 1'b1; + +endmodule // cycloneive_lcell_comb + +/* Altera D Flip-Flop Primitive */ +module dffeas + (output q, + input d, clk, clrn, prn, ena, + input asdata, aload, sclr, sload); + + // Timing simulation is not covered + parameter power_up="dontcare"; + parameter is_wysiwyg="false"; + + reg q_tmp; + wire reset; + reg [7:0] debug_net; + + assign reset = (prn && sclr && ~clrn && ena); + assign q = q_tmp & 1'b1; + + always @(posedge clk, posedge aload) begin + if(reset) q_tmp <= 0; + else q_tmp <= d; + end + assign q = q_tmp; + +endmodule // dffeas + +/* Cyclone IV E altpll clearbox model */ +(* blackbox *) +module cycloneive_pll + (inclk, + fbin, + fbout, + clkswitch, + areset, + pfdena, + scanclk, + scandata, + scanclkena, + configupdate, + clk, + phasecounterselect, + phaseupdown, + phasestep, + clkbad, + activeclock, + locked, + scandataout, + scandone, + phasedone, + vcooverrange, + vcounderrange); + + parameter operation_mode = "normal"; + parameter pll_type = "auto"; + parameter compensate_clock = "clock0"; + parameter inclk0_input_frequency = 0; + parameter inclk1_input_frequency = 0; + parameter self_reset_on_loss_lock = "off"; + parameter switch_over_type = "auto"; + parameter switch_over_counter = 1; + parameter enable_switch_over_counter = "off"; + parameter bandwidth = 0; + parameter bandwidth_type = "auto"; + parameter use_dc_coupling = "false"; + parameter lock_high = 0; + parameter lock_low = 0; + parameter lock_window_ui = "0.05"; + parameter test_bypass_lock_detect = "off"; + parameter clk0_output_frequency = 0; + parameter clk0_multiply_by = 0; + parameter clk0_divide_by = 0; + parameter clk0_phase_shift = "0"; + parameter clk0_duty_cycle = 50; + parameter clk1_output_frequency = 0; + parameter clk1_multiply_by = 0; + parameter clk1_divide_by = 0; + parameter clk1_phase_shift = "0"; + parameter clk1_duty_cycle = 50; + parameter clk2_output_frequency = 0; + parameter clk2_multiply_by = 0; + parameter clk2_divide_by = 0; + parameter clk2_phase_shift = "0"; + parameter clk2_duty_cycle = 50; + parameter clk3_output_frequency = 0; + parameter clk3_multiply_by = 0; + parameter clk3_divide_by = 0; + parameter clk3_phase_shift = "0"; + parameter clk3_duty_cycle = 50; + parameter clk4_output_frequency = 0; + parameter clk4_multiply_by = 0; + parameter clk4_divide_by = 0; + parameter clk4_phase_shift = "0"; + parameter clk4_duty_cycle = 50; + parameter pfd_min = 0; + parameter pfd_max = 0; + parameter vco_min = 0; + parameter vco_max = 0; + parameter vco_center = 0; + // Advanced user parameters + parameter m_initial = 1; + parameter m = 0; + parameter n = 1; + parameter c0_high = 1; + parameter c0_low = 1; + parameter c0_initial = 1; + parameter c0_mode = "bypass"; + parameter c0_ph = 0; + parameter c1_high = 1; + parameter c1_low = 1; + parameter c1_initial = 1; + parameter c1_mode = "bypass"; + parameter c1_ph = 0; + parameter c2_high = 1; + parameter c2_low = 1; + parameter c2_initial = 1; + parameter c2_mode = "bypass"; + parameter c2_ph = 0; + parameter c3_high = 1; + parameter c3_low = 1; + parameter c3_initial = 1; + parameter c3_mode = "bypass"; + parameter c3_ph = 0; + parameter c4_high = 1; + parameter c4_low = 1; + parameter c4_initial = 1; + parameter c4_mode = "bypass"; + parameter c4_ph = 0; + parameter m_ph = 0; + parameter clk0_counter = "unused"; + parameter clk1_counter = "unused"; + parameter clk2_counter = "unused"; + parameter clk3_counter = "unused"; + parameter clk4_counter = "unused"; + parameter c1_use_casc_in = "off"; + parameter c2_use_casc_in = "off"; + parameter c3_use_casc_in = "off"; + parameter c4_use_casc_in = "off"; + parameter m_test_source = -1; + parameter c0_test_source = -1; + parameter c1_test_source = -1; + parameter c2_test_source = -1; + parameter c3_test_source = -1; + parameter c4_test_source = -1; + parameter vco_multiply_by = 0; + parameter vco_divide_by = 0; + parameter vco_post_scale = 1; + parameter vco_frequency_control = "auto"; + parameter vco_phase_shift_step = 0; + parameter charge_pump_current = 10; + parameter loop_filter_r = "1.0"; + parameter loop_filter_c = 0; + parameter pll_compensation_delay = 0; + parameter lpm_type = "cycloneive_pll"; + parameter phase_counter_select_width = 3; + + input [1:0] inclk; + input fbin; + input clkswitch; + input areset; + input pfdena; + input [phase_counter_select_width - 1:0] phasecounterselect; + input phaseupdown; + input phasestep; + input scanclk; + input scanclkena; + input scandata; + input configupdate; + + output [4:0] clk; + output [1:0] clkbad; + output activeclock; + output locked; + output scandataout; + output scandone; + output fbout; + output phasedone; + output vcooverrange; + output vcounderrange; + +endmodule // cycloneive_pll diff --git a/resources/netlist/resources/kernel/share/intel/max10/cells_map.v b/resources/netlist/resources/kernel/share/intel/max10/cells_map.v new file mode 100644 index 0000000..6fefcd5 --- /dev/null +++ b/resources/netlist/resources/kernel/share/intel/max10/cells_map.v @@ -0,0 +1,59 @@ +/* + * yosys -- Yosys Open SYnthesis Suite + * + * Copyright (C) 2012 Claire Xenia Wolf + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + */ +// > c60k28 (Viacheslav, VT) [at] yandex [dot] com +// > Intel FPGA technology mapping. User must first simulate the generated \ +// > netlist before going to test it on board. + +// Input buffer map +module \$__inpad (input I, output O); + fiftyfivenm_io_ibuf _TECHMAP_REPLACE_ (.o(O), .i(I), .ibar(1'b0)); +endmodule + +// Output buffer map +module \$__outpad (input I, output O); + fiftyfivenm_io_obuf _TECHMAP_REPLACE_ (.o(O), .i(I), .oe(1'b1)); +endmodule + +// LUT Map +/* 0 -> datac + 1 -> cin */ +module \$lut (A, Y); + parameter WIDTH = 0; + parameter LUT = 0; + (* force_downto *) + input [WIDTH-1:0] A; + output Y; + generate + if (WIDTH == 1) begin + assign Y = ~A[0]; // Not need to spend 1 logic cell for such an easy function + end else + if (WIDTH == 2) begin + fiftyfivenm_lcell_comb #(.lut_mask({4{LUT}}), .sum_lutc_input("datac")) _TECHMAP_REPLACE_ (.combout(Y), .dataa(A[0]), .datab(A[1]), .datac(1'b1),.datad(1'b1)); + end else + if(WIDTH == 3) begin + fiftyfivenm_lcell_comb #(.lut_mask({2{LUT}}), .sum_lutc_input("datac")) _TECHMAP_REPLACE_ (.combout(Y), .dataa(A[0]), .datab(A[1]), .datac(A[2]),.datad(1'b1)); + end else + if(WIDTH == 4) begin + fiftyfivenm_lcell_comb #(.lut_mask(LUT), .sum_lutc_input("datac")) _TECHMAP_REPLACE_ (.combout(Y), .dataa(A[0]), .datab(A[1]), .datac(A[2]),.datad(A[3])); + end else + wire _TECHMAP_FAIL_ = 1; + endgenerate +endmodule // + + diff --git a/resources/netlist/resources/kernel/share/intel/max10/cells_sim.v b/resources/netlist/resources/kernel/share/intel/max10/cells_sim.v new file mode 100644 index 0000000..7705fa2 --- /dev/null +++ b/resources/netlist/resources/kernel/share/intel/max10/cells_sim.v @@ -0,0 +1,292 @@ +/* + * yosys -- Yosys Open SYnthesis Suite + * + * Copyright (C) 2012 Claire Xenia Wolf + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + */ + +module VCC (output V); + assign V = 1'b1; +endmodule // VCC + +module GND (output G); + assign G = 1'b0; +endmodule // GND + +/* Altera MAX10 devices Input Buffer Primitive */ +module fiftyfivenm_io_ibuf + (output o, input i, input ibar); + assign ibar = ibar; + assign o = i; +endmodule // fiftyfivenm_io_ibuf + +/* Altera MAX10 devices Output Buffer Primitive */ +module fiftyfivenm_io_obuf + (output o, input i, input oe); + assign o = i; + assign oe = oe; +endmodule // fiftyfivenm_io_obuf + +/* Altera MAX10 4-input non-fracturable LUT Primitive */ +module fiftyfivenm_lcell_comb + (output combout, cout, + input dataa, datab, datac, datad, cin); + + /* Internal parameters which define the behaviour + of the LUT primitive. + lut_mask define the lut function, can be expressed in 16-digit bin or hex. + sum_lutc_input define the type of LUT (combinational | arithmetic). + dont_touch for retiming || carry options. + lpm_type for WYSIWYG */ + + parameter lut_mask = 16'hFFFF; + parameter dont_touch = "off"; + parameter lpm_type = "fiftyfivenm_lcell_comb"; + parameter sum_lutc_input = "datac"; + + reg [1:0] lut_type; + reg cout_rt; + reg combout_rt; + wire dataa_w; + wire datab_w; + wire datac_w; + wire datad_w; + wire cin_w; + + assign dataa_w = dataa; + assign datab_w = datab; + assign datac_w = datac; + assign datad_w = datad; + + function lut_data; + input [15:0] mask; + input dataa, datab, datac, datad; + reg [7:0] s3; + reg [3:0] s2; + reg [1:0] s1; + begin + s3 = datad ? mask[15:8] : mask[7:0]; + s2 = datac ? s3[7:4] : s3[3:0]; + s1 = datab ? s2[3:2] : s2[1:0]; + lut_data = dataa ? s1[1] : s1[0]; + end + + endfunction + + initial begin + if (sum_lutc_input == "datac") lut_type = 0; + else + if (sum_lutc_input == "cin") lut_type = 1; + else begin + $error("Error in sum_lutc_input. Parameter %s is not a valid value.\n", sum_lutc_input); + $finish(); + end + end + + always @(dataa_w or datab_w or datac_w or datad_w or cin_w) begin + if (lut_type == 0) begin // logic function + combout_rt = lut_data(lut_mask, dataa_w, datab_w, + datac_w, datad_w); + end + else if (lut_type == 1) begin // arithmetic function + combout_rt = lut_data(lut_mask, dataa_w, datab_w, + cin_w, datad_w); + end + cout_rt = lut_data(lut_mask, dataa_w, datab_w, cin_w, 'b0); + end + + assign combout = combout_rt & 1'b1; + assign cout = cout_rt & 1'b1; + +endmodule // fiftyfivenm_lcell_comb + +/* Altera D Flip-Flop Primitive */ +module dffeas + (output q, + input d, clk, clrn, prn, ena, + input asdata, aload, sclr, sload); + + // Timing simulation is not covered + parameter power_up="dontcare"; + parameter is_wysiwyg="false"; + + reg q_tmp; + wire reset; + reg [7:0] debug_net; + + assign reset = (prn && sclr && ~clrn && ena); + assign q = q_tmp & 1'b1; + + always @(posedge clk, posedge aload) begin + if(reset) q_tmp <= 0; + else q_tmp <= d; + end + assign q = q_tmp; + +endmodule // dffeas + +/* MAX10 altpll clearbox model */ +(* blackbox *) +module fiftyfivenm_pll + (inclk, + fbin, + fbout, + clkswitch, + areset, + pfdena, + scanclk, + scandata, + scanclkena, + configupdate, + clk, + phasecounterselect, + phaseupdown, + phasestep, + clkbad, + activeclock, + locked, + scandataout, + scandone, + phasedone, + vcooverrange, + vcounderrange); + + parameter operation_mode = "normal"; + parameter pll_type = "auto"; + parameter compensate_clock = "clock0"; + parameter inclk0_input_frequency = 0; + parameter inclk1_input_frequency = 0; + parameter self_reset_on_loss_lock = "off"; + parameter switch_over_type = "auto"; + parameter switch_over_counter = 1; + parameter enable_switch_over_counter = "off"; + parameter bandwidth = 0; + parameter bandwidth_type = "auto"; + parameter use_dc_coupling = "false"; + parameter lock_high = 0; + parameter lock_low = 0; + parameter lock_window_ui = "0.05"; + parameter test_bypass_lock_detect = "off"; + parameter clk0_output_frequency = 0; + parameter clk0_multiply_by = 0; + parameter clk0_divide_by = 0; + parameter clk0_phase_shift = "0"; + parameter clk0_duty_cycle = 50; + parameter clk1_output_frequency = 0; + parameter clk1_multiply_by = 0; + parameter clk1_divide_by = 0; + parameter clk1_phase_shift = "0"; + parameter clk1_duty_cycle = 50; + parameter clk2_output_frequency = 0; + parameter clk2_multiply_by = 0; + parameter clk2_divide_by = 0; + parameter clk2_phase_shift = "0"; + parameter clk2_duty_cycle = 50; + parameter clk3_output_frequency = 0; + parameter clk3_multiply_by = 0; + parameter clk3_divide_by = 0; + parameter clk3_phase_shift = "0"; + parameter clk3_duty_cycle = 50; + parameter clk4_output_frequency = 0; + parameter clk4_multiply_by = 0; + parameter clk4_divide_by = 0; + parameter clk4_phase_shift = "0"; + parameter clk4_duty_cycle = 50; + parameter pfd_min = 0; + parameter pfd_max = 0; + parameter vco_min = 0; + parameter vco_max = 0; + parameter vco_center = 0; + // Advanced user parameters + parameter m_initial = 1; + parameter m = 0; + parameter n = 1; + parameter c0_high = 1; + parameter c0_low = 1; + parameter c0_initial = 1; + parameter c0_mode = "bypass"; + parameter c0_ph = 0; + parameter c1_high = 1; + parameter c1_low = 1; + parameter c1_initial = 1; + parameter c1_mode = "bypass"; + parameter c1_ph = 0; + parameter c2_high = 1; + parameter c2_low = 1; + parameter c2_initial = 1; + parameter c2_mode = "bypass"; + parameter c2_ph = 0; + parameter c3_high = 1; + parameter c3_low = 1; + parameter c3_initial = 1; + parameter c3_mode = "bypass"; + parameter c3_ph = 0; + parameter c4_high = 1; + parameter c4_low = 1; + parameter c4_initial = 1; + parameter c4_mode = "bypass"; + parameter c4_ph = 0; + parameter m_ph = 0; + parameter clk0_counter = "unused"; + parameter clk1_counter = "unused"; + parameter clk2_counter = "unused"; + parameter clk3_counter = "unused"; + parameter clk4_counter = "unused"; + parameter c1_use_casc_in = "off"; + parameter c2_use_casc_in = "off"; + parameter c3_use_casc_in = "off"; + parameter c4_use_casc_in = "off"; + parameter m_test_source = -1; + parameter c0_test_source = -1; + parameter c1_test_source = -1; + parameter c2_test_source = -1; + parameter c3_test_source = -1; + parameter c4_test_source = -1; + parameter vco_multiply_by = 0; + parameter vco_divide_by = 0; + parameter vco_post_scale = 1; + parameter vco_frequency_control = "auto"; + parameter vco_phase_shift_step = 0; + parameter charge_pump_current = 10; + parameter loop_filter_r = "1.0"; + parameter loop_filter_c = 0; + parameter pll_compensation_delay = 0; + parameter lpm_type = "fiftyfivenm_pll"; + parameter phase_counter_select_width = 3; + + input [1:0] inclk; + input fbin; + input clkswitch; + input areset; + input pfdena; + input [phase_counter_select_width - 1:0] phasecounterselect; + input phaseupdown; + input phasestep; + input scanclk; + input scanclkena; + input scandata; + input configupdate; + output [4:0] clk; + output [1:0] clkbad; + output activeclock; + output locked; + output scandataout; + output scandone; + output fbout; + output phasedone; + output vcooverrange; + output vcounderrange; + +endmodule // cycloneive_pll diff --git a/resources/netlist/resources/kernel/share/intel_alm/common/abc9_map.v b/resources/netlist/resources/kernel/share/intel_alm/common/abc9_map.v new file mode 100644 index 0000000..9d11bb2 --- /dev/null +++ b/resources/netlist/resources/kernel/share/intel_alm/common/abc9_map.v @@ -0,0 +1,18 @@ +// This file exists to map purely-synchronous flops to ABC9 flops, while +// mapping flops with asynchronous-clear as boxes, this is because ABC9 +// doesn't support asynchronous-clear flops in sequential synthesis. + +module MISTRAL_FF( + input DATAIN, CLK, ACLR, ENA, SCLR, SLOAD, SDATA, + output reg Q +); + +parameter _TECHMAP_CONSTMSK_ACLR_ = 1'b0; + +// If the async-clear is constant, we assume it's disabled. +if (_TECHMAP_CONSTMSK_ACLR_ != 1'b0) + $__MISTRAL_FF_SYNCONLY _TECHMAP_REPLACE_ (.DATAIN(DATAIN), .CLK(CLK), .ENA(ENA), .SCLR(SCLR), .SLOAD(SLOAD), .SDATA(SDATA), .Q(Q)); +else + wire _TECHMAP_FAIL_ = 1; + +endmodule diff --git a/resources/netlist/resources/kernel/share/intel_alm/common/abc9_model.v b/resources/netlist/resources/kernel/share/intel_alm/common/abc9_model.v new file mode 100644 index 0000000..8f06d38 --- /dev/null +++ b/resources/netlist/resources/kernel/share/intel_alm/common/abc9_model.v @@ -0,0 +1,10 @@ +// This is a purely-synchronous flop, that ABC9 can use for sequential synthesis. +(* abc9_flop, lib_whitebox *) +module $__MISTRAL_FF_SYNCONLY ( + input DATAIN, CLK, ENA, SCLR, SLOAD, SDATA, + output reg Q +); + +MISTRAL_FF ff (.DATAIN(DATAIN), .CLK(CLK), .ENA(ENA), .ACLR(1'b1), .SCLR(SCLR), .SLOAD(SLOAD), .SDATA(SDATA), .Q(Q)); + +endmodule diff --git a/resources/netlist/resources/kernel/share/intel_alm/common/abc9_unmap.v b/resources/netlist/resources/kernel/share/intel_alm/common/abc9_unmap.v new file mode 100644 index 0000000..4b28866 --- /dev/null +++ b/resources/netlist/resources/kernel/share/intel_alm/common/abc9_unmap.v @@ -0,0 +1,11 @@ +// After performing sequential synthesis, map the synchronous flops back to +// standard MISTRAL_FF flops. + +module $__MISTRAL_FF_SYNCONLY ( + input DATAIN, CLK, ENA, SCLR, SLOAD, SDATA, + output reg Q +); + +MISTRAL_FF _TECHMAP_REPLACE_ (.DATAIN(DATAIN), .CLK(CLK), .ACLR(1'b1), .ENA(ENA), .SCLR(SCLR), .SLOAD(SLOAD), .SDATA(SDATA), .Q(Q)); + +endmodule diff --git a/resources/netlist/resources/kernel/share/intel_alm/common/alm_map.v b/resources/netlist/resources/kernel/share/intel_alm/common/alm_map.v new file mode 100644 index 0000000..6697b2e --- /dev/null +++ b/resources/netlist/resources/kernel/share/intel_alm/common/alm_map.v @@ -0,0 +1,57 @@ +module \$lut (A, Y); + +parameter WIDTH = 1; +parameter LUT = 0; + +(* force_downto *) +input [WIDTH-1:0] A; +output Y; + +generate + if (WIDTH == 1) begin + generate + if (LUT == 2'b00) begin + assign Y = 1'b0; + end + else if (LUT == 2'b01) begin + MISTRAL_NOT _TECHMAP_REPLACE_( + .A(A[0]), .Q(Y) + ); + end + else if (LUT == 2'b10) begin + assign Y = A; + end + else if (LUT == 2'b11) begin + assign Y = 1'b1; + end + endgenerate + end else + if (WIDTH == 2) begin + MISTRAL_ALUT2 #(.LUT(LUT)) _TECHMAP_REPLACE_( + .A(A[0]), .B(A[1]), .Q(Y) + ); + end else + if (WIDTH == 3) begin + MISTRAL_ALUT3 #(.LUT(LUT)) _TECHMAP_REPLACE_( + .A(A[0]), .B(A[1]), .C(A[2]), .Q(Y) + ); + end else + if (WIDTH == 4) begin + MISTRAL_ALUT4 #(.LUT(LUT)) _TECHMAP_REPLACE_( + .A(A[0]), .B(A[1]), .C(A[2]), .D(A[3]), .Q(Y) + ); + end else + if (WIDTH == 5) begin + MISTRAL_ALUT5 #(.LUT(LUT)) _TECHMAP_REPLACE_ ( + .A(A[0]), .B(A[1]), .C(A[2]), .D(A[3]), .E(A[4]), .Q(Y) + ); + end else + if (WIDTH == 6) begin + MISTRAL_ALUT6 #(.LUT(LUT)) _TECHMAP_REPLACE_ ( + .A(A[0]), .B(A[1]), .C(A[2]), .D(A[3]), .E(A[4]), .F(A[5]), .Q(Y) + ); + end else begin + wire _TECHMAP_FAIL_ = 1'b1; + end +endgenerate +endmodule diff --git a/resources/netlist/resources/kernel/share/intel_alm/common/alm_sim.v b/resources/netlist/resources/kernel/share/intel_alm/common/alm_sim.v new file mode 100644 index 0000000..242f100 --- /dev/null +++ b/resources/netlist/resources/kernel/share/intel_alm/common/alm_sim.v @@ -0,0 +1,633 @@ +// The core logic primitive of the Cyclone V/10GX is the Adaptive Logic Module +// (ALM). Each ALM is made up of an 8-input, 2-output look-up table, covered +// in this file, connected to combinational outputs, a carry chain, and four +// D flip-flops (which are covered as MISTRAL_FF in dff_sim.v). +// +// The ALM is vertically symmetric, so I find it helps to think in terms of +// half-ALMs, as that's predominantly the unit that synth_intel_alm uses. +// +// ALMs are quite flexible, having multiple modes. +// +// Normal (combinational) mode +// --------------------------- +// The ALM can implement: +// - a single 6-input function (with the other inputs usable for flip-flop access) +// - two 5-input functions that share two inputs +// - a 5-input and a 4-input function that share one input +// - a 5-input and a 3-or-less-input function that share no inputs +// - two 4-or-less-input functions that share no inputs +// +// Normal-mode functions are represented as MISTRAL_ALUTN cells with N inputs. +// It would be possible to represent a normal mode function as a single cell - +// the vendor cyclone{v,10gx}_lcell_comb cell does exactly that - but I felt +// it was more user-friendly to print out the specific function sizes +// separately. +// +// With the exception of MISTRAL_ALUT6, you can think of two normal-mode cells +// fitting inside a single ALM. +// +// Extended (7-input) mode +// ----------------------- +// The ALM can also fit a 7-input function made of two 5-input functions that +// share four inputs, multiplexed by another input. +// +// Because this can't accept arbitrary 7-input functions, Yosys can't handle +// it, so it doesn't have a cell, but I would likely call it MISTRAL_ALUT7(E?) +// if it did, and it would take up a full ALM. +// +// It might be possible to add an extraction pass to examine all ALUT5 cells +// that feed into ALUT3 cells to see if they can be combined into an extended +// ALM, but I don't think it will be worth it. +// +// Arithmetic mode +// --------------- +// In arithmetic mode, each half-ALM uses its carry chain to perform fast addition +// of two four-input functions that share three inputs. Oddly, the result of +// one of the functions is inverted before being added (you can see this as +// the dot on a full-adder input of Figure 1-8 in the Handbook). +// +// The cell for an arithmetic-mode half-ALM is MISTRAL_ALM_ARITH. One idea +// I've had (or rather was suggested by mwk) is that functions that feed into +// arithmetic-mode cells could be packed directly into the arithmetic-mode +// cell as a function, which reduces the number of ALMs needed. +// +// Shared arithmetic mode +// ---------------------- +// Shared arithmetic mode looks a lot like arithmetic mode, but here the +// output of every other four-input function goes to the input of the adder +// the next bit along. What this means is that adding three bits together can +// be done in an ALM, because functions can be used to implement addition that +// then feeds into the carry chain. This means that three bits can be added per +// ALM, as opposed to two in the arithmetic mode. +// +// Shared arithmetic mode doesn't currently have a cell, but I intend to add +// it as MISTRAL_ALM_SHARED, and have it occupy a full ALM. Because it adds +// three bits per cell, it makes addition shorter and use less ALMs, but +// I don't know enough to tell whether it's more efficient to use shared +// arithmetic mode to shorten the carry chain, or plain arithmetic mode with +// the functions packed in. + +`default_nettype none + +// Cyclone V LUT output timings (picoseconds): +// +// CARRY A B C D E F G +// COMBOUT - 605 583 510 512 - 97 400 (LUT6) +// COMBOUT - 602 583 457 510 302 93 483 (LUT7) +// SUMOUT 368 1342 1323 887 927 - 785 - +// CARRYOUT 71 1082 1062 866 813 - 1198 - + +// Arria V LUT output timings (picoseconds): +// +// CARRY A B C D E F G +// COMBOUT - 387 375 316 317 - 76 319 (LUT6) +// COMBOUT - 387 375 316 317 218 76 319 (LUT7) +// SUMOUT 249 744 732 562 576 - 511 - +// CARRYOUT 19 629 623 530 514 - 696 - + +(* abc9_lut=2, lib_whitebox *) +module MISTRAL_ALUT6(input A, B, C, D, E, F, output Q); + +parameter [63:0] LUT = 64'h0000_0000_0000_0000; + +`ifdef cyclonev +specify + (A => Q) = 605; + (B => Q) = 583; + (C => Q) = 510; + (D => Q) = 512; + (E => Q) = 400; + (F => Q) = 97; +endspecify +`endif +`ifdef arriav +specify + (A => Q) = 387; + (B => Q) = 375; + (C => Q) = 316; + (D => Q) = 317; + (E => Q) = 319; + (F => Q) = 76; +endspecify +`endif +`ifdef cyclone10gx +specify + (A => Q) = 275; + (B => Q) = 272; + (C => Q) = 175; + (D => Q) = 165; + (E => Q) = 162; + (F => Q) = 53; +endspecify +`endif + +assign Q = LUT >> {F, E, D, C, B, A}; + +endmodule + + +(* abc9_lut=1, lib_whitebox *) +module MISTRAL_ALUT5(input A, B, C, D, E, output Q); + +parameter [31:0] LUT = 32'h0000_0000; + +`ifdef cyclonev +specify + (A => Q) = 583; + (B => Q) = 510; + (C => Q) = 512; + (D => Q) = 400; + (E => Q) = 97; +endspecify +`endif +`ifdef arriav +specify + (A => Q) = 375; + (B => Q) = 316; + (C => Q) = 317; + (D => Q) = 319; + (E => Q) = 76; +endspecify +`endif +`ifdef cyclone10gx +specify + (A => Q) = 272; + (B => Q) = 175; + (C => Q) = 165; + (D => Q) = 162; + (E => Q) = 53; +endspecify +`endif + +assign Q = LUT >> {E, D, C, B, A}; + +endmodule + + +(* abc9_lut=1, lib_whitebox *) +module MISTRAL_ALUT4(input A, B, C, D, output Q); + +parameter [15:0] LUT = 16'h0000; + +`ifdef cyclonev +specify + (A => Q) = 510; + (B => Q) = 512; + (C => Q) = 400; + (D => Q) = 97; +endspecify +`endif +`ifdef arriav +specify + (A => Q) = 316; + (B => Q) = 317; + (C => Q) = 319; + (D => Q) = 76; +endspecify +`endif +`ifdef cyclone10gx +specify + (A => Q) = 175; + (B => Q) = 165; + (C => Q) = 162; + (D => Q) = 53; +endspecify +`endif + +assign Q = LUT >> {D, C, B, A}; + +endmodule + + +(* abc9_lut=1, lib_whitebox *) +module MISTRAL_ALUT3(input A, B, C, output Q); + +parameter [7:0] LUT = 8'h00; + +`ifdef cyclonev +specify + (A => Q) = 510; + (B => Q) = 400; + (C => Q) = 97; +endspecify +`endif +`ifdef arriav +specify + (A => Q) = 316; + (B => Q) = 317; + (C => Q) = 76; +endspecify +`endif +`ifdef cyclone10gx +specify + (A => Q) = 165; + (B => Q) = 162; + (C => Q) = 53; +endspecify +`endif + +assign Q = LUT >> {C, B, A}; + +endmodule + + +(* abc9_lut=1, lib_whitebox *) +module MISTRAL_ALUT2(input A, B, output Q); + +parameter [3:0] LUT = 4'h0; + +`ifdef cyclonev +specify + (A => Q) = 400; + (B => Q) = 97; +endspecify +`endif +`ifdef arriav +specify + (A => Q) = 316; + (B => Q) = 76; +endspecify +`endif +`ifdef cyclone10gx +specify + (A => Q) = 162; + (B => Q) = 53; +endspecify +`endif + +assign Q = LUT >> {B, A}; + +endmodule + + +(* abc9_lut=1, lib_whitebox *) +module MISTRAL_NOT(input A, output Q); + +`ifdef cyclonev +specify + (A => Q) = 97; +endspecify +`endif +`ifdef arriav +specify + (A => Q) = 76; +endspecify +`endif +`ifdef cyclone10gx +specify + (A => Q) = 53; +endspecify +`endif + +assign Q = ~A; + +endmodule + +// Despite the abc9_carry attributes, this doesn't seem to stop ABC9 adding illegal fanout to the carry chain that nextpnr cannot handle. +// So we treat it as a total blackbox from ABC9's perspective for now. +// (* abc9_box, lib_whitebox *) +module MISTRAL_ALUT_ARITH(input A, B, C, D0, D1, /* (* abc9_carry *) */ input CI, output SO, /* (* abc9_carry *) */ output CO); + +parameter LUT0 = 16'h0000; +parameter LUT1 = 16'h0000; + +`ifdef cyclonev +specify + (A => SO) = 1342; + (B => SO) = 1323; + (C => SO) = 927; + (D0 => SO) = 887; + (D1 => SO) = 785; + (CI => SO) = 368; + + (A => CO) = 1082; + (B => CO) = 1062; + (C => CO) = 813; + (D0 => CO) = 866; + (D1 => CO) = 1198; + (CI => CO) = 36; // Divided by 2 to account for there being two ALUT_ARITHs in an ALM) +endspecify +`endif +`ifdef arriav +specify + (A => SO) = 744; + (B => SO) = 732; + (C => SO) = 562; + (D0 => SO) = 576; + (D1 => SO) = 511; + (CI => SO) = 249; + + (A => CO) = 629; + (B => CO) = 623; + (C => CO) = 530; + (D0 => CO) = 514; + (D1 => CO) = 696; + (CI => CO) = 10; // Divided by 2 to account for there being two ALUT_ARITHs in an ALM) +endspecify +`endif +`ifdef cyclone10gx +specify + (A => SO) = 644; + (B => SO) = 477; + (C => SO) = 416; + (D0 => SO) = 380; + (D1 => SO) = 431; + (CI => SO) = 276; + + (A => CO) = 525; + (B => CO) = 433; + (C => CO) = 712; + (D0 => CO) = 653; + (D1 => CO) = 593; + (CI => CO) = 16; +endspecify +`endif + +wire q0, q1; + +assign q0 = LUT0 >> {D0, C, B, A}; +assign q1 = LUT1 >> {D1, C, B, A}; + +assign {CO, SO} = q0 + !q1 + CI; + +endmodule + + +/* +// A, B, C0, C1, E0, E1, F0, F1: data inputs +// CARRYIN: carry input +// SHAREIN: shared-arithmetic input +// CLK0, CLK1, CLK2: clock inputs +// +// COMB0, COMB1: combinational outputs +// FF0, FF1, FF2, FF3: DFF outputs +// SUM0, SUM1: adder outputs +// CARRYOUT: carry output +// SHAREOUT: shared-arithmetic output +module MISTRAL_ALM( + input A, B, C0, C1, E0, E1, F0, F1, CARRYIN, SHAREIN, // LUT path + input CLK0, CLK1, CLK2, AC0, AC1, // FF path + output COMB0, COMB1, SUM0, SUM1, CARRYOUT, SHAREOUT, + output FF0, FF1, FF2, FF3 +); + +parameter LUT0 = 16'b0000; +parameter LUT1 = 16'b0000; +parameter LUT2 = 16'b0000; +parameter LUT3 = 16'b0000; + +parameter INIT0 = 1'b0; +parameter INIT1 = 1'b0; +parameter INIT2 = 1'b0; +parameter INIT3 = 1'b0; + +parameter C0_MUX = "C0"; +parameter C1_MUX = "C1"; + +parameter F0_MUX = "VCC"; +parameter F1_MUX = "GND"; + +parameter FEEDBACK0 = "FF0"; +parameter FEEDBACK1 = "FF2"; + +parameter ADD_MUX = "LUT"; + +parameter DFF01_DATA_MUX = "COMB"; +parameter DFF23_DATA_MUX = "COMB"; + +parameter DFF0_CLK = "CLK0"; +parameter DFF1_CLK = "CLK0"; +parameter DFF2_CLK = "CLK0"; +parameter DFF3_CLK = "CLK0"; + +parameter DFF0_AC = "AC0"; +parameter DFF1_AC = "AC0"; +parameter DFF2_AC = "AC0"; +parameter DFF3_AC = "AC0"; + +// Feedback muxes from the flip-flop outputs. +wire ff_feedback_mux0, ff_feedback_mux1; + +// C-input muxes which can be set to also use the F-input. +wire c0_input_mux, c1_input_mux; + +// F-input muxes which can be set to a constant to allow LUT5 use. +wire f0_input_mux, f1_input_mux; + +// Adder input muxes to select between shared-arithmetic mode and arithmetic mode. +wire add0_input_mux, add1_input_mux; + +// Combinational-output muxes for LUT #1 and LUT #3 +wire lut1_comb_mux, lut3_comb_mux; + +// Sum-output muxes for LUT #1 and LUT #3 +wire lut1_sum_mux, lut3_sum_mux; + +// DFF data-input muxes +wire dff01_data_mux, dff23_data_mux; + +// DFF clock selectors +wire dff0_clk, dff1_clk, dff2_clk, dff3_clk; + +// DFF asynchronous-clear selectors +wire dff0_ac, dff1_ac, dff2_ac, dff3_ac; + +// LUT, DFF and adder output wires for routing. +wire lut0_out, lut1a_out, lut1b_out, lut2_out, lut3a_out, lut3b_out; +wire dff0_out, dff1_out, dff2_out, dff3_out; +wire add0_sum, add1_sum, add0_carry, add1_carry; + +generate + if (FEEDBACK0 === "FF0") + assign ff_feedback_mux0 = dff0_out; + else if (FEEDBACK0 === "FF1") + assign ff_feedback_mux0 = dff1_out; + else + $error("Invalid FEEDBACK0 setting!"); + + if (FEEDBACK1 == "FF2") + assign ff_feedback_mux1 = dff2_out; + else if (FEEDBACK1 == "FF3") + assign ff_feedback_mux1 = dff3_out; + else + $error("Invalid FEEDBACK1 setting!"); + + if (C0_MUX === "C0") + assign c0_input_mux = C0; + else if (C0_MUX === "F1") + assign c0_input_mux = F1; + else if (C0_MUX === "FEEDBACK1") + assign c0_input_mux = ff_feedback_mux1; + else + $error("Invalid C0_MUX setting!"); + + if (C1_MUX === "C1") + assign c1_input_mux = C1; + else if (C1_MUX === "F0") + assign c1_input_mux = F0; + else if (C1_MUX === "FEEDBACK0") + assign c1_input_mux = ff_feedback_mux0; + else + $error("Invalid C1_MUX setting!"); + + // F0 == VCC is LUT5 + // F0 == F0 is LUT6 + // F0 == FEEDBACK is unknown + if (F0_MUX === "VCC") + assign f0_input_mux = 1'b1; + else if (F0_MUX === "F0") + assign f0_input_mux = F0; + else if (F0_MUX === "FEEDBACK0") + assign f0_input_mux = ff_feedback_mux0; + else + $error("Invalid F0_MUX setting!"); + + // F1 == GND is LUT5 + // F1 == F1 is LUT6 + // F1 == FEEDBACK is unknown + if (F1_MUX === "GND") + assign f1_input_mux = 1'b0; + else if (F1_MUX === "F1") + assign f1_input_mux = F1; + else if (F1_MUX === "FEEDBACK1") + assign f1_input_mux = ff_feedback_mux1; + else + $error("Invalid F1_MUX setting!"); + + if (ADD_MUX === "LUT") begin + assign add0_input_mux = ~lut1_sum_mux; + assign add1_input_mux = ~lut3_sum_mux; + end else if (ADD_MUX === "SHARE") begin + assign add0_input_mux = SHAREIN; + assign add1_input_mux = lut1_comb_mux; + end else + $error("Invalid ADD_MUX setting!"); + + if (DFF01_DATA_MUX === "COMB") + assign dff01_data_mux = COMB0; + else if (DFF01_DATA_MUX === "SUM") + assign dff01_data_mux = SUM0; + else + $error("Invalid DFF01_DATA_MUX setting!"); + + if (DFF23_DATA_MUX === "COMB") + assign dff23_data_mux = COMB0; + else if (DFF23_DATA_MUX === "SUM") + assign dff23_data_mux = SUM0; + else + $error("Invalid DFF23_DATA_MUX setting!"); + + if (DFF0_CLK === "CLK0") + assign dff0_clk = CLK0; + else if (DFF0_CLK === "CLK1") + assign dff0_clk = CLK1; + else if (DFF0_CLK === "CLK2") + assign dff0_clk = CLK2; + else + $error("Invalid DFF0_CLK setting!"); + + if (DFF1_CLK === "CLK0") + assign dff1_clk = CLK0; + else if (DFF1_CLK === "CLK1") + assign dff1_clk = CLK1; + else if (DFF1_CLK === "CLK2") + assign dff1_clk = CLK2; + else + $error("Invalid DFF1_CLK setting!"); + + if (DFF2_CLK === "CLK0") + assign dff2_clk = CLK0; + else if (DFF2_CLK === "CLK1") + assign dff2_clk = CLK1; + else if (DFF2_CLK === "CLK2") + assign dff2_clk = CLK2; + else + $error("Invalid DFF2_CLK setting!"); + + if (DFF3_CLK === "CLK0") + assign dff3_clk = CLK0; + else if (DFF3_CLK === "CLK1") + assign dff3_clk = CLK1; + else if (DFF3_CLK === "CLK2") + assign dff3_clk = CLK2; + else + $error("Invalid DFF3_CLK setting!"); + + if (DFF0_AC === "AC0") + assign dff0_ac = AC0; + else if (DFF0_AC === "AC1") + assign dff0_ac = AC1; + else + $error("Invalid DFF0_AC setting!"); + + if (DFF1_AC === "AC0") + assign dff1_ac = AC0; + else if (DFF1_AC === "AC1") + assign dff1_ac = AC1; + else + $error("Invalid DFF1_AC setting!"); + + if (DFF2_AC === "AC0") + assign dff2_ac = AC0; + else if (DFF2_AC === "AC1") + assign dff2_ac = AC1; + else + $error("Invalid DFF2_AC setting!"); + + if (DFF3_AC === "AC0") + assign dff3_ac = AC0; + else if (DFF3_AC === "AC1") + assign dff3_ac = AC1; + else + $error("Invalid DFF3_AC setting!"); + +endgenerate + +// F0 on the Quartus diagram +MISTRAL_ALUT4 #(.LUT(LUT0)) lut0 (.A(A), .B(B), .C(C0), .D(c1_input_mux), .Q(lut0_out)); + +// F2 on the Quartus diagram +MISTRAL_ALUT4 #(.LUT(LUT1)) lut1_comb (.A(A), .B(B), .C(C0), .D(c1_input_mux), .Q(lut1_comb_mux)); +MISTRAL_ALUT4 #(.LUT(LUT1)) lut1_sum (.A(A), .B(B), .C(C0), .D(E0), .Q(lut1_sum_mux)); + +// F1 on the Quartus diagram +MISTRAL_ALUT4 #(.LUT(LUT2)) lut2 (.A(A), .B(B), .C(C1), .D(c0_input_mux), .Q(lut2_out)); + +// F3 on the Quartus diagram +MISTRAL_ALUT4 #(.LUT(LUT3)) lut3_comb (.A(A), .B(B), .C(C1), .D(c0_input_mux), .Q(lut3_comb_mux)); +MISTRAL_ALUT4 #(.LUT(LUT3)) lut3_sum (.A(A), .B(B), .C(C1), .D(E1), .Q(lut3_sum_mux)); + +MISTRAL_FF #(.INIT(INIT0)) dff0 (.D(dff01_data_mux), .CLK(dff0_clk), .ACn(dff0_ac), .Q(dff0_out)); +MISTRAL_FF #(.INIT(INIT1)) dff1 (.D(dff01_data_mux), .CLK(dff1_clk), .ACn(dff1_ac), .Q(dff1_out)); +MISTRAL_FF #(.INIT(INIT2)) dff2 (.D(dff23_data_mux), .CLK(dff2_clk), .ACn(dff2_ac), .Q(dff2_out)); +MISTRAL_FF #(.INIT(INIT3)) dff3 (.D(dff23_data_mux), .CLK(dff3_clk), .ACn(dff3_ac), .Q(dff3_out)); + +// Adders +assign {add0_carry, add0_sum} = CARRYIN + lut0_out + lut1_sum_mux; +assign {add1_carry, add1_sum} = add0_carry + lut2_out + lut3_sum_mux; + +// COMBOUT outputs on the Quartus diagram +assign COMB0 = E0 ? (f0_input_mux ? lut3_comb_mux : lut1_comb_mux) + : (f0_input_mux ? lut2_out : lut0_out); + +assign COMB1 = E1 ? (f1_input_mux ? lut3_comb_mux : lut1_comb_mux) + : (f1_input_mux ? lut2_out : lut0_out); + +// SUMOUT output on the Quartus diagram +assign SUM0 = add0_sum; +assign SUM1 = add1_sum; + +// COUT output on the Quartus diagram +assign CARRYOUT = add1_carry; + +// SHAREOUT output on the Quartus diagram +assign SHAREOUT = lut3_comb_mux; + +// REGOUT outputs on the Quartus diagram +assign FF0 = dff0_out; +assign FF1 = dff1_out; +assign FF2 = dff2_out; +assign FF3 = dff3_out; + +endmodule +*/ diff --git a/resources/netlist/resources/kernel/share/intel_alm/common/arith_alm_map.v b/resources/netlist/resources/kernel/share/intel_alm/common/arith_alm_map.v new file mode 100644 index 0000000..7cbf02e --- /dev/null +++ b/resources/netlist/resources/kernel/share/intel_alm/common/arith_alm_map.v @@ -0,0 +1,71 @@ +`default_nettype none + +module \$alu (A, B, CI, BI, X, Y, CO); + +parameter A_SIGNED = 0; +parameter B_SIGNED = 0; +parameter A_WIDTH = 1; +parameter B_WIDTH = 1; +parameter Y_WIDTH = 1; + +parameter _TECHMAP_CONSTMSK_CI_ = 0; +parameter _TECHMAP_CONSTVAL_CI_ = 0; + +(* force_downto *) +input [A_WIDTH-1:0] A; +(* force_downto *) +input [B_WIDTH-1:0] B; +input CI, BI; +(* force_downto *) +output [Y_WIDTH-1:0] X, Y, CO; + +(* force_downto *) +wire [Y_WIDTH-1:0] A_buf, B_buf; +\$pos #(.A_SIGNED(A_SIGNED), .A_WIDTH(A_WIDTH), .Y_WIDTH(Y_WIDTH)) A_conv (.A(A), .Y(A_buf)); +\$pos #(.A_SIGNED(B_SIGNED), .A_WIDTH(B_WIDTH), .Y_WIDTH(Y_WIDTH)) B_conv (.A(B), .Y(B_buf)); + +(* force_downto *) +wire [Y_WIDTH-1:0] AA = A_buf; +(* force_downto *) +wire [Y_WIDTH-1:0] BB = BI ? ~B_buf : B_buf; +(* force_downto *) +wire [Y_WIDTH-1:0] BX = B_buf; +wire [Y_WIDTH:0] ALM_CARRY; + +// Start of carry chain +generate + if (_TECHMAP_CONSTMSK_CI_ == 1 && _TECHMAP_CONSTVAL_CI_ == 1'b0) begin + assign ALM_CARRY[0] = _TECHMAP_CONSTVAL_CI_; + end else begin + MISTRAL_ALUT_ARITH #( + .LUT0(16'b1010_1010_1010_1010), // Q = A + .LUT1(16'b0000_0000_0000_0000), // Q = 0 (LUT1's input to the adder is inverted) + ) alm_start ( + .A(CI), .B(1'b1), .C(1'b1), .D0(1'b1), .D1(1'b1), + .CI(1'b0), + .CO(ALM_CARRY[0]) + ); + end +endgenerate + +// Carry chain +genvar i; +generate for (i = 0; i < Y_WIDTH; i = i + 1) begin:slice + // TODO: mwk suggests that a pass could merge pre-adder logic into this. + MISTRAL_ALUT_ARITH #( + .LUT0(16'b1010_1010_1010_1010), // Q = A + .LUT1(16'b1100_0011_1100_0011), // Q = C ? B : ~B (LUT1's input to the adder is inverted) + ) alm_i ( + .A(AA[i]), .B(BX[i]), .C(BI), .D0(1'b1), .D1(1'b1), + .CI(ALM_CARRY[i]), + .SO(Y[i]), + .CO(ALM_CARRY[i+1]) + ); + + // ALM carry chain is not directly accessible, so calculate the carry through soft logic if really needed. + assign CO[i] = (AA[i] && BB[i]) || ((Y[i] ^ AA[i] ^ BB[i]) && (AA[i] || BB[i])); +end endgenerate + +assign X = AA ^ BB; + +endmodule diff --git a/resources/netlist/resources/kernel/share/intel_alm/common/bram_m10k.txt b/resources/netlist/resources/kernel/share/intel_alm/common/bram_m10k.txt new file mode 100644 index 0000000..560711b --- /dev/null +++ b/resources/netlist/resources/kernel/share/intel_alm/common/bram_m10k.txt @@ -0,0 +1,27 @@ +bram $__MISTRAL_M10K + init 0 # TODO: Re-enable when I figure out how BRAM init works + abits 13 @D8192x1 + dbits 1 @D8192x1 + abits 12 @D4096x2 + dbits 2 @D4096x2 + abits 11 @D2048x5 + dbits 5 @D2048x5 + abits 10 @D1024x10 + dbits 10 @D1024x10 + abits 9 @D512x20 + dbits 20 @D512x20 + groups 2 + ports 1 1 + wrmode 1 0 + # read enable; write enable + byte enables (only for multiples of 8) + enable 1 1 + transp 0 0 + clocks 1 1 + clkpol 1 1 +endbram + + +match $__MISTRAL_M10K + min efficiency 5 + make_transp +endmatch diff --git a/resources/netlist/resources/kernel/share/intel_alm/common/bram_m10k_map.v b/resources/netlist/resources/kernel/share/intel_alm/common/bram_m10k_map.v new file mode 100644 index 0000000..8f9d4a3 --- /dev/null +++ b/resources/netlist/resources/kernel/share/intel_alm/common/bram_m10k_map.v @@ -0,0 +1,16 @@ +// Stub to invert M10K write-enable. + +module \$__MISTRAL_M10K (CLK1, A1ADDR, A1DATA, A1EN, B1ADDR, B1DATA, B1EN); + +parameter CFG_ABITS = 10; +parameter CFG_DBITS = 10; + +input CLK1; +input [CFG_ABITS-1:0] A1ADDR, B1ADDR; +input [CFG_DBITS-1:0] A1DATA; +input A1EN, B1EN; +output reg [CFG_DBITS-1:0] B1DATA; + +MISTRAL_M10K #(.CFG_ABITS(CFG_ABITS), .CFG_DBITS(CFG_DBITS)) _TECHMAP_REPLACE_ (.CLK1(CLK1), .A1ADDR(A1ADDR), .A1DATA(A1DATA), .A1EN(!A1EN), .B1ADDR(B1ADDR), .B1DATA(B1DATA), .B1EN(B1EN)); + +endmodule \ No newline at end of file diff --git a/resources/netlist/resources/kernel/share/intel_alm/common/bram_m20k.txt b/resources/netlist/resources/kernel/share/intel_alm/common/bram_m20k.txt new file mode 100644 index 0000000..b4c5a53 --- /dev/null +++ b/resources/netlist/resources/kernel/share/intel_alm/common/bram_m20k.txt @@ -0,0 +1,33 @@ +bram __MISTRAL_M20K_SDP + init 1 # TODO: Re-enable when I figure out how BRAM init works + abits 14 @D16384x1 + dbits 1 @D16384x1 + abits 13 @D8192x2 + dbits 2 @D8192x2 + abits 12 @D4096x4 @D4096x5 + dbits 4 @D4096x4 + dbits 5 @D4096x5 + abits 11 @D2048x8 @D2048x10 + dbits 8 @D2048x8 + dbits 10 @D2048x10 + abits 10 @D1024x16 @D1024x20 + dbits 16 @D1024x16 + dbits 20 @D1024x20 + abits 9 @D512x32 @D512x40 + dbits 32 @D512x32 + dbits 40 @D512x40 + groups 2 + ports 1 1 + wrmode 1 0 + # read enable; write enable + byte enables (only for multiples of 8) + enable 1 1 + transp 0 0 + clocks 1 1 + clkpol 1 1 +endbram + + +match __MISTRAL_M20K_SDP + min efficiency 5 + make_transp +endmatch diff --git a/resources/netlist/resources/kernel/share/intel_alm/common/bram_m20k_map.v b/resources/netlist/resources/kernel/share/intel_alm/common/bram_m20k_map.v new file mode 100644 index 0000000..15739d6 --- /dev/null +++ b/resources/netlist/resources/kernel/share/intel_alm/common/bram_m20k_map.v @@ -0,0 +1,31 @@ +module __MISTRAL_M20K_SDP(CLK1, A1ADDR, A1DATA, A1EN, B1ADDR, B1DATA, B1EN); + +parameter CFG_ABITS = 10; +parameter CFG_DBITS = 20; +parameter CFG_ENABLE_A = 1; +parameter CFG_ENABLE_B = 1; + +input CLK1; +input [CFG_ABITS-1:0] A1ADDR, B1ADDR; +input [CFG_DBITS-1:0] A1DATA; +output [CFG_DBITS-1:0] B1DATA; +input [CFG_ENABLE_A-1:0] A1EN, B1EN; + +altsyncram #( + .operation_mode("dual_port"), + .ram_block_type("m20k"), + .widthad_a(CFG_ABITS), + .width_a(CFG_DBITS), + .widthad_b(CFG_ABITS), + .width_b(CFG_DBITS), +) _TECHMAP_REPLACE_ ( + .address_a(A1ADDR), + .data_a(A1DATA), + .wren_a(A1EN), + .address_b(B1ADDR), + .q_b(B1DATA), + .clock0(CLK1), + .clock1(CLK1) +); + +endmodule diff --git a/resources/netlist/resources/kernel/share/intel_alm/common/dff_map.v b/resources/netlist/resources/kernel/share/intel_alm/common/dff_map.v new file mode 100644 index 0000000..1a4b5d6 --- /dev/null +++ b/resources/netlist/resources/kernel/share/intel_alm/common/dff_map.v @@ -0,0 +1,13 @@ +`default_nettype none + +// D flip-flop with async reset and enable +module \$_DFFE_PN0P_ (input D, C, R, E, output Q); + wire _TECHMAP_REMOVEINIT_Q_ = 1'b1; + MISTRAL_FF _TECHMAP_REPLACE_(.DATAIN(D), .CLK(C), .ACLR(R), .ENA(E), .SCLR(1'b0), .SLOAD(1'b0), .SDATA(1'b0), .Q(Q)); +endmodule + +// D flip-flop with sync reset and enable (enable has priority) +module \$_SDFFCE_PP0P_ (input D, C, R, E, output Q); + wire _TECHMAP_REMOVEINIT_Q_ = 1'b1; + MISTRAL_FF _TECHMAP_REPLACE_(.DATAIN(D), .CLK(C), .ACLR(1'b1), .ENA(E), .SCLR(R), .SLOAD(1'b0), .SDATA(1'b0), .Q(Q)); +endmodule diff --git a/resources/netlist/resources/kernel/share/intel_alm/common/dff_sim.v b/resources/netlist/resources/kernel/share/intel_alm/common/dff_sim.v new file mode 100644 index 0000000..8d58bf6 --- /dev/null +++ b/resources/netlist/resources/kernel/share/intel_alm/common/dff_sim.v @@ -0,0 +1,131 @@ +// The four D flip-flops (DFFs) in a Cyclone V/10GX Adaptive Logic Module (ALM) +// act as one-bit memory cells that can be placed very flexibly (wherever there's +// an ALM); each flop is represented by a MISTRAL_FF cell. +// +// The flops in these chips are rather flexible in some ways, but in practice +// quite crippled by FPGA standards. +// +// What the flops can do +// --------------------- +// The core flop acts as a single-bit memory that initialises to zero at chip +// reset. It takes in data on the rising edge of CLK if ENA is high, +// and outputs it to Q. The ENA (clock enable) pin can therefore be used to +// capture the input only if a condition is true. +// +// The data itself is zero if SCLR (synchronous clear) is high, else it comes +// from SDATA (synchronous data) if SLOAD (synchronous load) is high, or DATAIN +// if SLOAD is low. +// +// If ACLR (asynchronous clear) is low then Q is forced to zero, regardless of +// the synchronous inputs or CLK edge. This is most often used for an FPGA-wide +// power-on reset. +// +// An asynchronous set that sets Q to one can be emulated by inverting the input +// and output of the flop, resulting in ACLR forcing Q to zero, which then gets +// inverted to produce one. Likewise, logic can operate on the falling edge of +// CLK if CLK is inverted before being passed as an input. +// +// What the flops *can't* do +// ------------------------- +// The trickiest part of the above capabilities is the lack of configurable +// initialisation state. For example, it isn't possible to implement a flop with +// asynchronous clear that initialises to one, because the hardware initialises +// to zero. Likewise, you can't emulate a flop with asynchronous set that +// initialises to zero, because the inverters mean the flop initialises to one. +// +// If the input design requires one of these cells (which appears to be rare +// in practice) then synth_intel_alm will fail to synthesize the design where +// other Yosys synthesis scripts might succeed. +// +// This stands in notable contrast to e.g. Xilinx flip-flops, which have +// configurable initialisation state and native synchronous/asynchronous +// set/clear (although not at the same time), which means they can generally +// implement a much wider variety of logic. + +// DATAIN: synchronous data input +// CLK: clock input (positive edge) +// ACLR: asynchronous clear (negative-true) +// ENA: clock-enable +// SCLR: synchronous clear +// SLOAD: synchronous load +// SDATA: synchronous load data +// +// Q: data output +// +// Note: the DFFEAS primitive is mostly emulated; it does not reflect what the hardware implements. + +(* abc9_box, lib_whitebox *) +module MISTRAL_FF( + input DATAIN, + (* clkbuf_sink *) input CLK, + input ACLR, ENA, SCLR, SLOAD, SDATA, + output reg Q +); + +`ifdef cyclonev +specify + if (ENA && ACLR !== 1'b0 && !SCLR && !SLOAD) (posedge CLK => (Q : DATAIN)) = 731; + if (ENA && SCLR) (posedge CLK => (Q : 1'b0)) = 890; + if (ENA && !SCLR && SLOAD) (posedge CLK => (Q : SDATA)) = 618; + + $setup(DATAIN, posedge CLK, /* -196 */ 0); + $setup(ENA, posedge CLK, /* -196 */ 0); + $setup(SCLR, posedge CLK, /* -196 */ 0); + $setup(SLOAD, posedge CLK, /* -196 */ 0); + $setup(SDATA, posedge CLK, /* -196 */ 0); + + if (ACLR === 1'b0) (ACLR => Q) = 282; +endspecify +`endif +`ifdef arriav +specify + if (ENA && ACLR !== 1'b0 && !SCLR && !SLOAD) (posedge CLK => (Q : DATAIN)) = 470; + if (ENA && SCLR) (posedge CLK => (Q : 1'b0)) = 633; + if (ENA && !SCLR && SLOAD) (posedge CLK => (Q : SDATA)) = 439; + + $setup(DATAIN, posedge CLK, /* -170 */ 0); + $setup(ENA, posedge CLK, /* -170 */ 0); + $setup(SCLR, posedge CLK, /* -170 */ 0); + $setup(SLOAD, posedge CLK, /* -170 */ 0); + $setup(SDATA, posedge CLK, /* -170 */ 0); + + if (ACLR === 1'b0) (ACLR => Q) = 215; +endspecify +`endif +`ifdef cyclone10gx +specify + // TODO (long-term): investigate these numbers. + // It seems relying on the Quartus Timing Analyzer was not the best idea; it's too fiddly. + if (ENA && ACLR !== 1'b0 && !SCLR && !SLOAD) (posedge CLK => (Q : DATAIN)) = 219; + if (ENA && SCLR) (posedge CLK => (Q : 1'b0)) = 219; + if (ENA && !SCLR && SLOAD) (posedge CLK => (Q : SDATA)) = 219; + + $setup(DATAIN, posedge CLK, 268); + $setup(ENA, posedge CLK, 268); + $setup(SCLR, posedge CLK, 268); + $setup(SLOAD, posedge CLK, 268); + $setup(SDATA, posedge CLK, 268); + + if (ACLR === 1'b0) (ACLR => Q) = 0; +endspecify +`endif + +initial begin + // Altera flops initialise to zero. + Q = 0; +end + +always @(posedge CLK, negedge ACLR) begin + // Asynchronous clear + if (!ACLR) Q <= 0; + // Clock-enable + else if (ENA) begin + // Synchronous clear + if (SCLR) Q <= 0; + // Synchronous load + else if (SLOAD) Q <= SDATA; + else Q <= DATAIN; + end +end + +endmodule diff --git a/resources/netlist/resources/kernel/share/intel_alm/common/dsp_map.v b/resources/netlist/resources/kernel/share/intel_alm/common/dsp_map.v new file mode 100644 index 0000000..e12e777 --- /dev/null +++ b/resources/netlist/resources/kernel/share/intel_alm/common/dsp_map.v @@ -0,0 +1,51 @@ +`default_nettype none + +module __MUL27X27(A, B, Y); + +parameter A_SIGNED = 1; +parameter B_SIGNED = 1; +parameter A_WIDTH = 27; +parameter B_WIDTH = 27; +parameter Y_WIDTH = 54; + +input [A_WIDTH-1:0] A; +input [B_WIDTH-1:0] B; +output [Y_WIDTH-1:0] Y; + +MISTRAL_MUL27X27 _TECHMAP_REPLACE_ (.A(A), .B(B), .Y(Y)); + +endmodule + + +module __MUL18X18(A, B, Y); + +parameter A_SIGNED = 1; +parameter B_SIGNED = 1; +parameter A_WIDTH = 18; +parameter B_WIDTH = 18; +parameter Y_WIDTH = 36; + +input [A_WIDTH-1:0] A; +input [B_WIDTH-1:0] B; +output [Y_WIDTH-1:0] Y; + +MISTRAL_MUL18X18 _TECHMAP_REPLACE_ (.A(A), .B(B), .Y(Y)); + +endmodule + + +module __MUL9X9(A, B, Y); + +parameter A_SIGNED = 1; +parameter B_SIGNED = 1; +parameter A_WIDTH = 9; +parameter B_WIDTH = 9; +parameter Y_WIDTH = 18; + +input [A_WIDTH-1:0] A; +input [B_WIDTH-1:0] B; +output [Y_WIDTH-1:0] Y; + +MISTRAL_MUL9X9 _TECHMAP_REPLACE_ (.A(A), .B(B), .Y(Y)); + +endmodule diff --git a/resources/netlist/resources/kernel/share/intel_alm/common/dsp_sim.v b/resources/netlist/resources/kernel/share/intel_alm/common/dsp_sim.v new file mode 100644 index 0000000..3d4b559 --- /dev/null +++ b/resources/netlist/resources/kernel/share/intel_alm/common/dsp_sim.v @@ -0,0 +1,130 @@ +`default_nettype none + +(* abc9_box *) +module MISTRAL_MUL27X27(input [26:0] A, input [26:0] B, output [53:0] Y); + +parameter A_SIGNED = 1; +parameter B_SIGNED = 1; + +`ifdef cyclonev +specify + (A *> Y) = 3732; + (B *> Y) = 3928; +endspecify +`endif +`ifdef arriav +// NOTE: Arria V appears to have only one set of timings for all DSP modes... +specify + (A *> Y) = 1895; + (B *> Y) = 2053; +endspecify +`endif +`ifdef cyclone10gx +// TODO: Cyclone 10 GX timings; the below are for Cyclone V +specify + (A *> Y) = 3732; + (B *> Y) = 3928; +endspecify +`endif + +wire [53:0] A_, B_; + +if (A_SIGNED) + assign A_ = $signed(A); +else + assign A_ = $unsigned(A); + +if (B_SIGNED) + assign B_ = $signed(B); +else + assign B_ = $unsigned(B); + +assign Y = A_ * B_; + +endmodule + +(* abc9_box *) +module MISTRAL_MUL18X18(input [17:0] A, input [17:0] B, output [35:0] Y); + +parameter A_SIGNED = 1; +parameter B_SIGNED = 1; + +`ifdef cyclonev +specify + (A *> Y) = 3180; + (B *> Y) = 3982; +endspecify +`endif +`ifdef arriav +// NOTE: Arria V appears to have only one set of timings for all DSP modes... +specify + (A *> Y) = 1895; + (B *> Y) = 2053; +endspecify +`endif +`ifdef cyclone10gx +// TODO: Cyclone 10 GX timings; the below are for Cyclone V +specify + (A *> Y) = 3180; + (B *> Y) = 3982; +endspecify +`endif + +wire [35:0] A_, B_; + +if (A_SIGNED) + assign A_ = $signed(A); +else + assign A_ = $unsigned(A); + +if (B_SIGNED) + assign B_ = $signed(B); +else + assign B_ = $unsigned(B); + +assign Y = A_ * B_; + +endmodule + +(* abc9_box *) +module MISTRAL_MUL9X9(input [8:0] A, input [8:0] B, output [17:0] Y); + +parameter A_SIGNED = 1; +parameter B_SIGNED = 1; + +`ifdef cyclonev +specify + (A *> Y) = 2818; + (B *> Y) = 3051; +endspecify +`endif +`ifdef arriav +// NOTE: Arria V appears to have only one set of timings for all DSP modes... +specify + (A *> Y) = 1895; + (B *> Y) = 2053; +endspecify +`endif +`ifdef cyclone10gx +// TODO: Cyclone 10 GX timings; the below are for Cyclone V +specify + (A *> Y) = 2818; + (B *> Y) = 3051; +endspecify +`endif + +wire [17:0] A_, B_; + +if (A_SIGNED) + assign A_ = $signed(A); +else + assign A_ = $unsigned(A); + +if (B_SIGNED) + assign B_ = $signed(B); +else + assign B_ = $unsigned(B); + +assign Y = A_ * B_; + +endmodule diff --git a/resources/netlist/resources/kernel/share/intel_alm/common/lutram_mlab.txt b/resources/netlist/resources/kernel/share/intel_alm/common/lutram_mlab.txt new file mode 100644 index 0000000..3cc6939 --- /dev/null +++ b/resources/netlist/resources/kernel/share/intel_alm/common/lutram_mlab.txt @@ -0,0 +1,18 @@ +bram MISTRAL_MLAB + init 0 # TODO: Re-enable when Yosys remembers the original filename. + abits 5 + dbits 1 + groups 2 + ports 1 1 + wrmode 1 0 + # write enable + enable 1 0 + transp 0 0 + clocks 1 0 + clkpol 1 1 +endbram + +match MISTRAL_MLAB + min efficiency 5 + make_outreg +endmatch \ No newline at end of file diff --git a/resources/netlist/resources/kernel/share/intel_alm/common/megafunction_bb.v b/resources/netlist/resources/kernel/share/intel_alm/common/megafunction_bb.v new file mode 100644 index 0000000..d4ed951 --- /dev/null +++ b/resources/netlist/resources/kernel/share/intel_alm/common/megafunction_bb.v @@ -0,0 +1,717 @@ +// Intel megafunction declarations, to avoid Yosys complaining. +`default_nettype none + +(* blackbox *) +module altera_pll +#( + parameter reference_clock_frequency = "0 ps", + parameter fractional_vco_multiplier = "false", + parameter pll_type = "General", + parameter pll_subtype = "General", + parameter number_of_clocks = 1, + parameter operation_mode = "internal feedback", + parameter deserialization_factor = 4, + parameter data_rate = 0, + + parameter sim_additional_refclk_cycles_to_lock = 0, + parameter output_clock_frequency0 = "0 ps", + parameter phase_shift0 = "0 ps", + parameter duty_cycle0 = 50, + + parameter output_clock_frequency1 = "0 ps", + parameter phase_shift1 = "0 ps", + parameter duty_cycle1 = 50, + + parameter output_clock_frequency2 = "0 ps", + parameter phase_shift2 = "0 ps", + parameter duty_cycle2 = 50, + + parameter output_clock_frequency3 = "0 ps", + parameter phase_shift3 = "0 ps", + parameter duty_cycle3 = 50, + + parameter output_clock_frequency4 = "0 ps", + parameter phase_shift4 = "0 ps", + parameter duty_cycle4 = 50, + + parameter output_clock_frequency5 = "0 ps", + parameter phase_shift5 = "0 ps", + parameter duty_cycle5 = 50, + + parameter output_clock_frequency6 = "0 ps", + parameter phase_shift6 = "0 ps", + parameter duty_cycle6 = 50, + + parameter output_clock_frequency7 = "0 ps", + parameter phase_shift7 = "0 ps", + parameter duty_cycle7 = 50, + + parameter output_clock_frequency8 = "0 ps", + parameter phase_shift8 = "0 ps", + parameter duty_cycle8 = 50, + + parameter output_clock_frequency9 = "0 ps", + parameter phase_shift9 = "0 ps", + parameter duty_cycle9 = 50, + + + parameter output_clock_frequency10 = "0 ps", + parameter phase_shift10 = "0 ps", + parameter duty_cycle10 = 50, + + parameter output_clock_frequency11 = "0 ps", + parameter phase_shift11 = "0 ps", + parameter duty_cycle11 = 50, + + parameter output_clock_frequency12 = "0 ps", + parameter phase_shift12 = "0 ps", + parameter duty_cycle12 = 50, + + parameter output_clock_frequency13 = "0 ps", + parameter phase_shift13 = "0 ps", + parameter duty_cycle13 = 50, + + parameter output_clock_frequency14 = "0 ps", + parameter phase_shift14 = "0 ps", + parameter duty_cycle14 = 50, + + parameter output_clock_frequency15 = "0 ps", + parameter phase_shift15 = "0 ps", + parameter duty_cycle15 = 50, + + parameter output_clock_frequency16 = "0 ps", + parameter phase_shift16 = "0 ps", + parameter duty_cycle16 = 50, + + parameter output_clock_frequency17 = "0 ps", + parameter phase_shift17 = "0 ps", + parameter duty_cycle17 = 50, + + parameter clock_name_0 = "", + parameter clock_name_1 = "", + parameter clock_name_2 = "", + parameter clock_name_3 = "", + parameter clock_name_4 = "", + parameter clock_name_5 = "", + parameter clock_name_6 = "", + parameter clock_name_7 = "", + parameter clock_name_8 = "", + + parameter clock_name_global_0 = "false", + parameter clock_name_global_1 = "false", + parameter clock_name_global_2 = "false", + parameter clock_name_global_3 = "false", + parameter clock_name_global_4 = "false", + parameter clock_name_global_5 = "false", + parameter clock_name_global_6 = "false", + parameter clock_name_global_7 = "false", + parameter clock_name_global_8 = "false", + + parameter m_cnt_hi_div = 1, + parameter m_cnt_lo_div = 1, + parameter m_cnt_bypass_en = "false", + parameter m_cnt_odd_div_duty_en = "false", + parameter n_cnt_hi_div = 1, + parameter n_cnt_lo_div = 1, + parameter n_cnt_bypass_en = "false", + parameter n_cnt_odd_div_duty_en = "false", + parameter c_cnt_hi_div0 = 1, + parameter c_cnt_lo_div0 = 1, + parameter c_cnt_bypass_en0 = "false", + parameter c_cnt_in_src0 = "ph_mux_clk", + parameter c_cnt_odd_div_duty_en0 = "false", + parameter c_cnt_prst0 = 1, + parameter c_cnt_ph_mux_prst0 = 0, + parameter c_cnt_hi_div1 = 1, + parameter c_cnt_lo_div1 = 1, + parameter c_cnt_bypass_en1 = "false", + parameter c_cnt_in_src1 = "ph_mux_clk", + parameter c_cnt_odd_div_duty_en1 = "false", + parameter c_cnt_prst1 = 1, + parameter c_cnt_ph_mux_prst1 = 0, + parameter c_cnt_hi_div2 = 1, + parameter c_cnt_lo_div2 = 1, + parameter c_cnt_bypass_en2 = "false", + parameter c_cnt_in_src2 = "ph_mux_clk", + parameter c_cnt_odd_div_duty_en2 = "false", + parameter c_cnt_prst2 = 1, + parameter c_cnt_ph_mux_prst2 = 0, + parameter c_cnt_hi_div3 = 1, + parameter c_cnt_lo_div3 = 1, + parameter c_cnt_bypass_en3 = "false", + parameter c_cnt_in_src3 = "ph_mux_clk", + parameter c_cnt_odd_div_duty_en3 = "false", + parameter c_cnt_prst3 = 1, + parameter c_cnt_ph_mux_prst3 = 0, + parameter c_cnt_hi_div4 = 1, + parameter c_cnt_lo_div4 = 1, + parameter c_cnt_bypass_en4 = "false", + parameter c_cnt_in_src4 = "ph_mux_clk", + parameter c_cnt_odd_div_duty_en4 = "false", + parameter c_cnt_prst4 = 1, + parameter c_cnt_ph_mux_prst4 = 0, + parameter c_cnt_hi_div5 = 1, + parameter c_cnt_lo_div5 = 1, + parameter c_cnt_bypass_en5 = "false", + parameter c_cnt_in_src5 = "ph_mux_clk", + parameter c_cnt_odd_div_duty_en5 = "false", + parameter c_cnt_prst5 = 1, + parameter c_cnt_ph_mux_prst5 = 0, + parameter c_cnt_hi_div6 = 1, + parameter c_cnt_lo_div6 = 1, + parameter c_cnt_bypass_en6 = "false", + parameter c_cnt_in_src6 = "ph_mux_clk", + parameter c_cnt_odd_div_duty_en6 = "false", + parameter c_cnt_prst6 = 1, + parameter c_cnt_ph_mux_prst6 = 0, + parameter c_cnt_hi_div7 = 1, + parameter c_cnt_lo_div7 = 1, + parameter c_cnt_bypass_en7 = "false", + parameter c_cnt_in_src7 = "ph_mux_clk", + parameter c_cnt_odd_div_duty_en7 = "false", + parameter c_cnt_prst7 = 1, + parameter c_cnt_ph_mux_prst7 = 0, + parameter c_cnt_hi_div8 = 1, + parameter c_cnt_lo_div8 = 1, + parameter c_cnt_bypass_en8 = "false", + parameter c_cnt_in_src8 = "ph_mux_clk", + parameter c_cnt_odd_div_duty_en8 = "false", + parameter c_cnt_prst8 = 1, + parameter c_cnt_ph_mux_prst8 = 0, + parameter c_cnt_hi_div9 = 1, + parameter c_cnt_lo_div9 = 1, + parameter c_cnt_bypass_en9 = "false", + parameter c_cnt_in_src9 = "ph_mux_clk", + parameter c_cnt_odd_div_duty_en9 = "false", + parameter c_cnt_prst9 = 1, + parameter c_cnt_ph_mux_prst9 = 0, + parameter c_cnt_hi_div10 = 1, + parameter c_cnt_lo_div10 = 1, + parameter c_cnt_bypass_en10 = "false", + parameter c_cnt_in_src10 = "ph_mux_clk", + parameter c_cnt_odd_div_duty_en10 = "false", + parameter c_cnt_prst10 = 1, + parameter c_cnt_ph_mux_prst10 = 0, + parameter c_cnt_hi_div11 = 1, + parameter c_cnt_lo_div11 = 1, + parameter c_cnt_bypass_en11 = "false", + parameter c_cnt_in_src11 = "ph_mux_clk", + parameter c_cnt_odd_div_duty_en11 = "false", + parameter c_cnt_prst11 = 1, + parameter c_cnt_ph_mux_prst11 = 0, + parameter c_cnt_hi_div12 = 1, + parameter c_cnt_lo_div12 = 1, + parameter c_cnt_bypass_en12 = "false", + parameter c_cnt_in_src12 = "ph_mux_clk", + parameter c_cnt_odd_div_duty_en12 = "false", + parameter c_cnt_prst12 = 1, + parameter c_cnt_ph_mux_prst12 = 0, + parameter c_cnt_hi_div13 = 1, + parameter c_cnt_lo_div13 = 1, + parameter c_cnt_bypass_en13 = "false", + parameter c_cnt_in_src13 = "ph_mux_clk", + parameter c_cnt_odd_div_duty_en13 = "false", + parameter c_cnt_prst13 = 1, + parameter c_cnt_ph_mux_prst13 = 0, + parameter c_cnt_hi_div14 = 1, + parameter c_cnt_lo_div14 = 1, + parameter c_cnt_bypass_en14 = "false", + parameter c_cnt_in_src14 = "ph_mux_clk", + parameter c_cnt_odd_div_duty_en14 = "false", + parameter c_cnt_prst14 = 1, + parameter c_cnt_ph_mux_prst14 = 0, + parameter c_cnt_hi_div15 = 1, + parameter c_cnt_lo_div15 = 1, + parameter c_cnt_bypass_en15 = "false", + parameter c_cnt_in_src15 = "ph_mux_clk", + parameter c_cnt_odd_div_duty_en15 = "false", + parameter c_cnt_prst15 = 1, + parameter c_cnt_ph_mux_prst15 = 0, + parameter c_cnt_hi_div16 = 1, + parameter c_cnt_lo_div16 = 1, + parameter c_cnt_bypass_en16 = "false", + parameter c_cnt_in_src16 = "ph_mux_clk", + parameter c_cnt_odd_div_duty_en16 = "false", + parameter c_cnt_prst16 = 1, + parameter c_cnt_ph_mux_prst16 = 0, + parameter c_cnt_hi_div17 = 1, + parameter c_cnt_lo_div17 = 1, + parameter c_cnt_bypass_en17 = "false", + parameter c_cnt_in_src17 = "ph_mux_clk", + parameter c_cnt_odd_div_duty_en17 = "false", + parameter c_cnt_prst17 = 1, + parameter c_cnt_ph_mux_prst17 = 0, + parameter pll_vco_div = 1, + parameter pll_slf_rst = "false", + parameter pll_bw_sel = "low", + parameter pll_output_clk_frequency = "0 MHz", + parameter pll_cp_current = 0, + parameter pll_bwctrl = 0, + parameter pll_fractional_division = 1, + parameter pll_fractional_cout = 24, + parameter pll_dsm_out_sel = "1st_order", + parameter mimic_fbclk_type = "gclk", + parameter pll_fbclk_mux_1 = "glb", + parameter pll_fbclk_mux_2 = "fb_1", + parameter pll_m_cnt_in_src = "ph_mux_clk", + parameter pll_vcoph_div = 1, + parameter refclk1_frequency = "0 MHz", + parameter pll_clkin_0_src = "clk_0", + parameter pll_clkin_1_src = "clk_0", + parameter pll_clk_loss_sw_en = "false", + parameter pll_auto_clk_sw_en = "false", + parameter pll_manu_clk_sw_en = "false", + parameter pll_clk_sw_dly = 0, + parameter pll_extclk_0_cnt_src = "pll_extclk_cnt_src_vss", + parameter pll_extclk_1_cnt_src = "pll_extclk_cnt_src_vss" +) ( + //input + input refclk, + input refclk1, + input fbclk, + input rst, + input phase_en, + input updn, + input [2:0] num_phase_shifts, + input scanclk, + input [4:0] cntsel, + input [63:0] reconfig_to_pll, + input extswitch, + input adjpllin, + input cclk, + + //output + output [ number_of_clocks -1 : 0] outclk, + output fboutclk, + output locked, + output phase_done, + output [63:0] reconfig_from_pll, + output activeclk, + output [1:0] clkbad, + output [7:0] phout, + output [1:0] lvds_clk, + output [1:0] loaden, + output [1:0] extclk_out, + output [ number_of_clocks -1 : 0] cascade_out, + + //inout + inout zdbfbclk +); + +endmodule + + +(* blackbox *) +module altera_std_synchronizer(clk, din, dout, reset_n); + +parameter depth = 2; + +input clk; +input reset_n; +input din; +output dout; + +endmodule + +(* blackbox *) +module altddio_in ( + datain, // required port, DDR input data + inclock, // required port, input reference clock to sample data by + inclocken, // enable data clock + aset, // asynchronous set + aclr, // asynchronous clear + sset, // synchronous set + sclr, // synchronous clear + dataout_h, // data sampled at the rising edge of inclock + dataout_l // data sampled at the falling edge of inclock +); + +parameter width = 1; +parameter power_up_high = "OFF"; +parameter invert_input_clocks = "OFF"; +parameter intended_device_family = "Stratix"; +parameter lpm_type = "altddio_in"; +parameter lpm_hint = "UNUSED"; + +input [width-1:0] datain; +input inclock; +input inclocken; +input aset; +input aclr; +input sset; +input sclr; + +output [width-1:0] dataout_h; +output [width-1:0] dataout_l; + +endmodule + + +(* blackbox *) +module altddio_out ( + datain_h, + datain_l, + outclock, + outclocken, + aset, + aclr, + sset, + sclr, + oe, + dataout, + oe_out +); + +parameter width = 1; +parameter power_up_high = "OFF"; +parameter oe_reg = "UNUSED"; +parameter extend_oe_disable = "UNUSED"; +parameter intended_device_family = "Stratix"; +parameter invert_output = "OFF"; +parameter lpm_type = "altddio_out"; +parameter lpm_hint = "UNUSED"; + +input [width-1:0] datain_h; +input [width-1:0] datain_l; +input outclock; +input outclocken; +input aset; +input aclr; +input sset; +input sclr; +input oe; + +output [width-1:0] dataout; +output [width-1:0] oe_out; + +endmodule + + +(* blackbox *) +module altddio_bidir ( + datain_h, + datain_l, + inclock, + inclocken, + outclock, + outclocken, + aset, + aclr, + sset, + sclr, + oe, + dataout_h, + dataout_l, + combout, + oe_out, + dqsundelayedout, + padio +); + +// GLOBAL PARAMETER DECLARATION +parameter width = 1; // required parameter +parameter power_up_high = "OFF"; +parameter oe_reg = "UNUSED"; +parameter extend_oe_disable = "UNUSED"; +parameter implement_input_in_lcell = "UNUSED"; +parameter invert_output = "OFF"; +parameter intended_device_family = "Stratix"; +parameter lpm_type = "altddio_bidir"; +parameter lpm_hint = "UNUSED"; + +// INPUT PORT DECLARATION +input [width-1:0] datain_h; +input [width-1:0] datain_l; +input inclock; +input inclocken; +input outclock; +input outclocken; +input aset; +input aclr; +input sset; +input sclr; +input oe; + +// OUTPUT PORT DECLARATION +output [width-1:0] dataout_h; +output [width-1:0] dataout_l; +output [width-1:0] combout; +output [width-1:0] oe_out; +output [width-1:0] dqsundelayedout; +// BIDIRECTIONAL PORT DECLARATION +inout [width-1:0] padio; + +endmodule + + +(* blackbox *) +module altiobuf_in(datain, dataout); + +parameter enable_bus_hold = "FALSE"; +parameter use_differential_mode = "FALSE"; +parameter number_of_channels = 1; + +input [number_of_channels-1:0] datain; +output [number_of_channels-1:0] dataout; + +endmodule + +(* blackbox *) +module altiobuf_out(datain, dataout); + +parameter enable_bus_hold = "FALSE"; +parameter use_differential_mode = "FALSE"; +parameter use_oe = "FALSE"; +parameter number_of_channels = 1; + +input [number_of_channels-1:0] datain; +output [number_of_channels-1:0] dataout; + +endmodule + +(* blackbox *) +module altiobuf_bidir(dataio, oe, datain, dataout); + +parameter number_of_channels = 1; +parameter enable_bus_hold = "OFF"; + +inout [number_of_channels-1:0] dataio; +input [number_of_channels-1:0] datain; +output [number_of_channels-1:0] dataout; +input [number_of_channels-1:0] oe; + +endmodule + +(* blackbox *) +module altsyncram(clock0, clock1, address_a, data_a, rden_a, wren_a, byteena_a, q_a, addressstall_a, address_b, data_b, rden_b, wren_b, byteena_b, q_b, addressstall_b, clocken0, clocken1, clocken2, clocken3, aclr0, aclr1, eccstatus); + +parameter lpm_type = "altsyncram"; +parameter operation_mode = "dual_port"; +parameter ram_block_type = "auto"; +parameter intended_device_family = "auto"; +parameter power_up_uninitialized = "false"; +parameter read_during_write_mode_mixed_ports = "dontcare"; +parameter byte_size = 8; +parameter widthad_a = 1; +parameter width_a = 1; +parameter width_byteena_a = 1; +parameter numwords_a = 1; +parameter clock_enable_input_a = "clocken0"; +parameter widthad_b = 1; +parameter width_b = 1; +parameter numwords_b = 1; +parameter address_aclr_b = "aclr0"; +parameter address_reg_b = ""; +parameter outdata_aclr_b = "aclr0"; +parameter outdata_reg_b = ""; +parameter clock_enable_input_b = "clocken0"; +parameter clock_enable_output_b = "clocken0"; + +input clock0, clock1; +input [widthad_a-1:0] address_a; +input [width_a-1:0] data_a; +input rden_a; +input wren_a; +input [(width_a/8)-1:0] byteena_a; +input addressstall_a; + +output [width_a-1:0] q_a; + +input wren_b; +input rden_b; +input [widthad_b-1:0] address_b; +input [width_b-1:0] data_b; +input [(width_b/8)-1:0] byteena_b; +input addressstall_b; + +output [width_b-1:0] q_b; + +input clocken0; +input clocken1; +input clocken2; +input clocken3; + +input aclr0; +input aclr1; + +output eccstatus; + +endmodule + +(* blackbox *) +module cyclonev_mlab_cell(portaaddr, portadatain, portbaddr, portbdataout, ena0, clk0, clk1); + +parameter logical_ram_name = ""; +parameter logical_ram_depth = 32; +parameter logical_ram_width = 20; +parameter mixed_port_feed_through_mode = "new"; +parameter first_bit_number = 0; +parameter first_address = 0; +parameter last_address = 31; +parameter address_width = 5; +parameter data_width = 1; +parameter byte_enable_mask_width = 1; +parameter port_b_data_out_clock = "NONE"; +parameter [639:0] mem_init0 = 640'b0; + +input [address_width-1:0] portaaddr, portbaddr; +input [data_width-1:0] portadatain; +output [data_width-1:0] portbdataout; +input ena0, clk0, clk1; + +endmodule + +(* blackbox *) +module cyclonev_mac(ax, ay, resulta); + +parameter ax_width = 9; +parameter signed_max = "true"; +parameter ay_scan_in_width = 9; +parameter signed_may = "true"; +parameter result_a_width = 18; +parameter operation_mode = "M9x9"; + +input [ax_width-1:0] ax; +input [ay_scan_in_width-1:0] ay; +output [result_a_width-1:0] resulta; + +endmodule + +(* blackbox *) +module cyclone10gx_mac(ax, ay, resulta); + +parameter ax_width = 18; +parameter signed_max = "true"; +parameter ay_scan_in_width = 18; +parameter signed_may = "true"; +parameter result_a_width = 36; +parameter operation_mode = "M18X18_FULL"; + +input [ax_width-1:0] ax; +input [ay_scan_in_width-1:0] ay; +output [result_a_width-1:0] resulta; + +endmodule + +(* blackbox *) +module cyclonev_ram_block(portaaddr, portadatain, portawe, portbaddr, portbdataout, portbre, clk0); + +parameter operation_mode = "dual_port"; +parameter logical_ram_name = ""; +parameter port_a_address_width = 10; +parameter port_a_data_width = 10; +parameter port_a_logical_ram_depth = 1024; +parameter port_a_logical_ram_width = 10; +parameter port_a_first_address = 0; +parameter port_a_last_address = 1023; +parameter port_a_first_bit_number = 0; +parameter port_b_address_width = 10; +parameter port_b_data_width = 10; +parameter port_b_logical_ram_depth = 1024; +parameter port_b_logical_ram_width = 10; +parameter port_b_first_address = 0; +parameter port_b_last_address = 1023; +parameter port_b_first_bit_number = 0; +parameter port_b_address_clock = "clock0"; +parameter port_b_read_enable_clock = "clock0"; +parameter mem_init0 = ""; +parameter mem_init1 = ""; +parameter mem_init2 = ""; +parameter mem_init3 = ""; +parameter mem_init4 = ""; + +input [port_a_address_width-1:0] portaaddr; +input [port_b_address_width-1:0] portbaddr; +input [port_a_data_width-1:0] portadatain; +output [port_b_data_width-1:0] portbdataout; +input clk0, portawe, portbre; + +endmodule + +(* blackbox *) +module cyclone10gx_io_ibuf(i, ibar, dynamicterminationcontrol, o); + +parameter differential_mode ="false"; +parameter bus_hold = "false"; +parameter simulate_z_as = "Z"; +parameter lpm_type = "cyclone10gx_io_ibuf"; + +(* iopad_external_pin *) input i; +(* iopad_external_pin *) input ibar; +input dynamicterminationcontrol; +output o; + +endmodule + +(* blackbox *) +module cyclone10gx_io_obuf(i, oe, dynamicterminationcontrol, seriesterminationcontrol, parallelterminationcontrol, devoe, o, obar); + +parameter open_drain_output = "false"; +parameter bus_hold = "false"; +parameter shift_series_termination_control = "false"; +parameter sim_dynamic_termination_control_is_connected = "false"; +parameter lpm_type = "cyclone10gx_io_obuf"; + +input i; +input oe; +input devoe; +input dynamicterminationcontrol; +input [15:0] seriesterminationcontrol; +input [15:0] parallelterminationcontrol; +(* iopad_external_pin *) output o; +(* iopad_external_pin *) output obar; + +endmodule + +(* blackbox *) +module cyclonev_clkena(inclk, ena, enaout, outclk); + +parameter clock_type = "auto"; +parameter ena_register_mode = "always enabled"; +parameter lpm_type = "cyclonev_clkena"; +parameter ena_register_power_up = "high"; +parameter disable_mode = "low"; +parameter test_syn = "high"; + +input inclk; +input ena; +output enaout; +output outclk; + +endmodule + +(* blackbox *) +module cyclone10gx_clkena(inclk, ena, enaout, outclk); + +parameter clock_type = "auto"; +parameter ena_register_mode = "always enabled"; +parameter lpm_type = "cyclone10gx_clkena"; +parameter ena_register_power_up = "high"; +parameter disable_mode = "low"; +parameter test_syn = "high"; + +input inclk; +input ena; +output enaout; +output outclk; + +endmodule + +// Internal interfaces +(* keep *) +module cyclonev_oscillator(oscena, clkout, clkout1); + +input oscena; +output clkout; +output clkout1; + +endmodule + +// HPS interfaces +(* keep *) +module cyclonev_hps_interface_mpu_general_purpose(gp_in, gp_out); + +input [31:0] gp_in; +output [31:0] gp_out; + +endmodule diff --git a/resources/netlist/resources/kernel/share/intel_alm/common/mem_sim.v b/resources/netlist/resources/kernel/share/intel_alm/common/mem_sim.v new file mode 100644 index 0000000..c9ba8c7 --- /dev/null +++ b/resources/netlist/resources/kernel/share/intel_alm/common/mem_sim.v @@ -0,0 +1,155 @@ +// The MLAB +// -------- +// In addition to Logic Array Blocks (LABs) that contain ten Adaptive Logic +// Modules (ALMs, see alm_sim.v), the Cyclone V/10GX also contain +// Memory/Logic Array Blocks (MLABs) that can act as either ten ALMs, or utilise +// the memory the ALM uses to store the look-up table data for general usage, +// producing a 32 address by 20-bit block of memory. MLABs are spread out +// around the chip, so they can be placed near where they are needed, rather than +// being comparatively limited in placement for a deep but narrow memory such as +// the M10K memory block. +// +// MLABs are used mainly for shallow but wide memories, such as CPU register +// files (which have perhaps 32 registers that are comparatively wide (16/32-bit)) +// or shift registers (by using the output of the Nth bit as input for the N+1th +// bit). +// +// Oddly, instead of providing a block 32 address by 20-bit cell, Quartus asks +// synthesis tools to build MLABs out of 32 address by 1-bit cells, and tries +// to put these cells in the same MLAB during cell placement. Because of this +// a MISTRAL_MLAB cell represents one of these 32 address by 1-bit cells, and +// 20 of them represent a physical MLAB. +// +// How the MLAB works +// ------------------ +// MLABs are poorly documented, so the following information is based mainly +// on the simulation model and my knowledge of how memories like these work. +// Additionally, note that the ports of MISTRAL_MLAB are the ones auto-generated +// by the Yosys `memory_bram` pass, and it doesn't make sense to me to use +// `techmap` just for the sake of renaming the cell ports. +// +// The MLAB can be initialised to any value, but unfortunately Quartus only +// allows memory initialisation from a file. Since Yosys doesn't preserve input +// file information, or write the contents of an `initial` block to a file, +// Yosys can't currently initialise the MLAB in a way Quartus will accept. +// +// The MLAB takes in data from A1DATA at the rising edge of CLK1, and if A1EN +// is high, writes it to the address in A1ADDR. A1EN can therefore be used to +// conditionally write data to the MLAB. +// +// Simultaneously, the MLAB reads data from B1ADDR, and outputs it to B1DATA, +// asynchronous to CLK1 and ignoring A1EN. If a synchronous read is needed +// then the output can be fed to embedded flops. Presently, Yosys assumes +// Quartus will pack external flops into the MLAB, but this is an assumption +// that needs testing. + +// The vendor sim model outputs 'x for a very short period (a few +// combinational delta cycles) after each write. This has been omitted from +// the following model because it's very difficult to trigger this in practice +// as clock cycles will be much longer than any potential blip of 'x, so the +// model can be treated as always returning a defined result. + +(* abc9_box, lib_whitebox *) +module MISTRAL_MLAB(input [4:0] A1ADDR, input A1DATA, A1EN, + (* clkbuf_sink *) input CLK1, + input [4:0] B1ADDR, output B1DATA); + +reg [31:0] mem = 32'b0; + +`ifdef cyclonev +specify + $setup(A1ADDR, posedge CLK1, 86); + $setup(A1DATA, posedge CLK1, 86); + $setup(A1EN, posedge CLK1, 86); + + (B1ADDR[0] => B1DATA) = 487; + (B1ADDR[1] => B1DATA) = 475; + (B1ADDR[2] => B1DATA) = 382; + (B1ADDR[3] => B1DATA) = 284; + (B1ADDR[4] => B1DATA) = 96; +endspecify +`endif +`ifdef arriav +specify + $setup(A1ADDR, posedge CLK1, 62); + $setup(A1DATA, posedge CLK1, 62); + $setup(A1EN, posedge CLK1, 62); + + (B1ADDR[0] => B1DATA) = 370; + (B1ADDR[1] => B1DATA) = 292; + (B1ADDR[2] => B1DATA) = 218; + (B1ADDR[3] => B1DATA) = 74; + (B1ADDR[4] => B1DATA) = 177; +endspecify +`endif +`ifdef cyclone10gx +// TODO: Cyclone 10 GX timings; the below timings are for Cyclone V +specify + $setup(A1ADDR, posedge CLK1, 86); + $setup(A1DATA, posedge CLK1, 86); + $setup(A1EN, posedge CLK1, 86); + + (B1ADDR[0] => B1DATA) = 487; + (B1ADDR[1] => B1DATA) = 475; + (B1ADDR[2] => B1DATA) = 382; + (B1ADDR[3] => B1DATA) = 284; + (B1ADDR[4] => B1DATA) = 96; +endspecify +`endif + +always @(posedge CLK1) + if (A1EN) mem[A1ADDR] <= A1DATA; + +assign B1DATA = mem[B1ADDR]; + +endmodule + +// The M10K +// -------- +// TODO + +module MISTRAL_M10K(CLK1, A1ADDR, A1DATA, A1EN, B1ADDR, B1DATA, B1EN); + +parameter CFG_ABITS = 10; +parameter CFG_DBITS = 10; + +(* clkbuf_sink *) input CLK1; +input [CFG_ABITS-1:0] A1ADDR, B1ADDR; +input [CFG_DBITS-1:0] A1DATA; +input A1EN, B1EN; +output reg [CFG_DBITS-1:0] B1DATA; + +reg [2**CFG_ABITS * CFG_DBITS - 1 : 0] mem = 0; + +`ifdef cyclonev +specify + $setup(A1ADDR, posedge CLK1, 125); + $setup(A1DATA, posedge CLK1, 97); + $setup(A1EN, posedge CLK1, 140); + $setup(B1ADDR, posedge CLK1, 125); + $setup(B1EN, posedge CLK1, 161); + + if (B1EN) (posedge CLK1 => (B1DATA : A1DATA)) = 1004; +endspecify +`endif +`ifdef arriav +specify + $setup(A1ADDR, posedge CLK1, 97); + $setup(A1DATA, posedge CLK1, 74); + $setup(A1EN, posedge CLK1, 109); + $setup(B1ADDR, posedge CLK1, 97); + $setup(B1EN, posedge CLK1, 126); + + if (B1EN) (posedge CLK1 => (B1DATA : A1DATA)) = 787; +endspecify +`endif + +always @(posedge CLK1) begin + if (!A1EN) + mem[(A1ADDR + 1) * CFG_DBITS - 1 : A1ADDR * CFG_DBITS] <= A1DATA; + + if (B1EN) + B1DATA <= mem[(B1ADDR + 1) * CFG_DBITS - 1 : B1ADDR * CFG_DBITS]; +end + +endmodule diff --git a/resources/netlist/resources/kernel/share/intel_alm/common/misc_sim.v b/resources/netlist/resources/kernel/share/intel_alm/common/misc_sim.v new file mode 100644 index 0000000..b1f970a --- /dev/null +++ b/resources/netlist/resources/kernel/share/intel_alm/common/misc_sim.v @@ -0,0 +1,21 @@ +module MISTRAL_IB((* iopad_external_pin *) input PAD, output O); + assign O = PAD; +endmodule + +module MISTRAL_OB((* iopad_external_pin *) output PAD, input I); + assign PAD = I; +endmodule + +module MISTRAL_IO((* iopad_external_pin *) inout PAD, input I, input OE, output O); + assign PAD = OE ? I : 1'bz; + assign O = PAD; +endmodule + +// Eventually, we should support clock enables and model them here too. +// For now, CLKENA is used as a basic entry point to global routing. +module MISTRAL_CLKBUF ( + input A, + (* clkbuf_driver *) output Q +); + assign Q = A; +endmodule \ No newline at end of file diff --git a/resources/netlist/resources/kernel/share/intel_alm/common/quartus_rename.v b/resources/netlist/resources/kernel/share/intel_alm/common/quartus_rename.v new file mode 100644 index 0000000..217dc5d --- /dev/null +++ b/resources/netlist/resources/kernel/share/intel_alm/common/quartus_rename.v @@ -0,0 +1,311 @@ +`ifdef cyclonev +`define LCELL cyclonev_lcell_comb +`define MAC cyclonev_mac +`define MLAB cyclonev_mlab_cell +`define RAM_BLOCK cyclonev_ram_block +`define IBUF cyclonev_io_ibuf +`define OBUF cyclonev_io_obuf +`define CLKENA cyclonev_clkena +`endif +`ifdef arriav +`define LCELL arriav_lcell_comb +`define MAC arriav_mac +`define MLAB arriav_mlab_cell +`define RAM_BLOCK arriav_ram_block +`define IBUF arriav_io_ibuf +`define OBUF arriav_io_obuf +`define CLKENA arriav_clkena +`endif +`ifdef cyclone10gx +`define LCELL cyclone10gx_lcell_comb +`define MAC cyclone10gx_mac +`define MLAB cyclone10gx_mlab_cell +`define RAM_BLOCK cyclone10gx_ram_block +`define IBUF cyclone10gx_io_ibuf +`define OBUF cyclone10gx_io_obuf +`define CLKENA cyclone10gx_clkena +`endif + +module __MISTRAL_VCC(output Q); + +MISTRAL_ALUT2 #(.LUT(4'b1111)) _TECHMAP_REPLACE_ (.A(1'b1), .B(1'b1), .Q(Q)); + +endmodule + + +module __MISTRAL_GND(output Q); + +MISTRAL_ALUT2 #(.LUT(4'b0000)) _TECHMAP_REPLACE_ (.A(1'b1), .B(1'b1), .Q(Q)); + +endmodule + + +module MISTRAL_FF(input DATAIN, CLK, ACLR, ENA, SCLR, SLOAD, SDATA, output reg Q); + +dffeas #(.power_up("low"), .is_wysiwyg("true")) _TECHMAP_REPLACE_ (.d(DATAIN), .clk(CLK), .clrn(ACLR), .ena(ENA), .sclr(SCLR), .sload(SLOAD), .asdata(SDATA), .q(Q)); + +endmodule + + +module MISTRAL_ALUT6(input A, B, C, D, E, F, output Q); +parameter [63:0] LUT = 64'h0000_0000_0000_0000; + +`LCELL #(.lut_mask(LUT)) _TECHMAP_REPLACE_ (.dataa(A), .datab(B), .datac(C), .datad(D), .datae(E), .dataf(F), .combout(Q)); + +endmodule + + +module MISTRAL_ALUT5(input A, B, C, D, E, output Q); +parameter [31:0] LUT = 32'h0000_0000; + +`LCELL #(.lut_mask({2{LUT}})) _TECHMAP_REPLACE_ (.dataa(A), .datab(B), .datac(C), .datad(D), .datae(E), .combout(Q)); + +endmodule + + +module MISTRAL_ALUT4(input A, B, C, D, output Q); +parameter [15:0] LUT = 16'h0000; + +`LCELL #(.lut_mask({4{LUT}})) _TECHMAP_REPLACE_ (.dataa(A), .datab(B), .datac(C), .datad(D), .combout(Q)); + +endmodule + + +module MISTRAL_ALUT3(input A, B, C, output Q); +parameter [7:0] LUT = 8'h00; + +`LCELL #(.lut_mask({8{LUT}})) _TECHMAP_REPLACE_ (.dataa(A), .datab(B), .datac(C), .combout(Q)); + +endmodule + + +module MISTRAL_ALUT2(input A, B, output Q); +parameter [3:0] LUT = 4'h0; + +`LCELL #(.lut_mask({16{LUT}})) _TECHMAP_REPLACE_ (.dataa(A), .datab(B), .combout(Q)); + +endmodule + + +module MISTRAL_NOT(input A, output Q); + +NOT _TECHMAP_REPLACE_ (.IN(A), .OUT(Q)); + +endmodule + + +module MISTRAL_ALUT_ARITH(input A, B, C, D0, D1, CI, output SO, CO); +parameter LUT0 = 16'h0000; +parameter LUT1 = 16'h0000; + +`LCELL #(.lut_mask({16'h0, LUT1, 16'h0, LUT0})) _TECHMAP_REPLACE_ (.dataa(A), .datab(B), .datac(C), .datad(D0), .dataf(D1), .cin(CI), .sumout(SO), .cout(CO)); + +endmodule + + +module MISTRAL_MLAB(input [4:0] A1ADDR, input A1DATA, A1EN, CLK1, input [4:0] B1ADDR, output B1DATA); + +parameter _TECHMAP_CELLNAME_ = ""; + +// Here we get to an unfortunate situation. The cell has a mem_init0 parameter, +// which takes in a hexadecimal string that could be used to initialise RAM. +// In the vendor simulation models, this appears to work fine, but Quartus, +// either intentionally or not, forgets about this parameter and initialises the +// RAM to zero. +// +// Because of this, RAM initialisation is presently disabled, but the source +// used to generate mem_init0 is kept (commented out) in case this gets fixed +// or an undocumented way to get Quartus to initialise from mem_init0 is found. + +`MLAB #( + .logical_ram_name(_TECHMAP_CELLNAME_), + .logical_ram_depth(32), + .logical_ram_width(1), + .mixed_port_feed_through_mode("Dont Care"), + .first_bit_number(0), + .first_address(0), + .last_address(31), + .address_width(5), + .data_width(1), + .byte_enable_mask_width(1), + .port_b_data_out_clock("NONE"), + // .mem_init0($sformatf("%08x", INIT)) +) _TECHMAP_REPLACE_ ( + .portaaddr(A1ADDR), + .portadatain(A1DATA), + .portbaddr(B1ADDR), + .portbdataout(B1DATA), + .ena0(A1EN), + .clk0(CLK1) +); + +endmodule + + +module MISTRAL_M10K(A1ADDR, A1DATA, A1EN, CLK1, B1ADDR, B1DATA, B1EN); + +parameter CFG_ABITS = 10; +parameter CFG_DBITS = 10; + +parameter _TECHMAP_CELLNAME_ = ""; + +input [CFG_ABITS-1:0] A1ADDR, B1ADDR; +input [CFG_DBITS-1:0] A1DATA; +input CLK1, A1EN, B1EN; +output [CFG_DBITS-1:0] B1DATA; + +// Much like the MLAB, the M10K has mem_init[01234] parameters which would let +// you initialise the RAM cell via hex literals. If they were implemented. + +// Since the MISTRAL_M10K block has an inverted write-enable (like the real hardware) +// but the Quartus primitive expects a normal write-enable, we add an inverter. +wire A1EN_N; +NOT wren_inv (.IN(A1EN), .OUT(A1EN_N)); + +`RAM_BLOCK #( + .operation_mode("dual_port"), + .logical_ram_name(_TECHMAP_CELLNAME_), + .port_a_address_width(CFG_ABITS), + .port_a_data_width(CFG_DBITS), + .port_a_logical_ram_depth(2**CFG_ABITS), + .port_a_logical_ram_width(CFG_DBITS), + .port_a_first_address(0), + .port_a_last_address(2**CFG_ABITS - 1), + .port_a_first_bit_number(0), + .port_b_address_width(CFG_ABITS), + .port_b_data_width(CFG_DBITS), + .port_b_logical_ram_depth(2**CFG_ABITS), + .port_b_logical_ram_width(CFG_DBITS), + .port_b_first_address(0), + .port_b_last_address(2**CFG_ABITS - 1), + .port_b_first_bit_number(0), + .port_b_address_clock("clock0"), + .port_b_read_enable_clock("clock0") +) ram_block ( + .portaaddr(A1ADDR), + .portadatain(A1DATA), + .portawe(A1EN_N), + .portbaddr(B1ADDR), + .portbdataout(B1DATA), + .portbre(B1EN), + .clk0(CLK1) +); + +endmodule + + +module MISTRAL_MUL27X27(input [26:0] A, B, output [53:0] Y); + +parameter A_SIGNED = 1; +parameter B_SIGNED = 1; + +`MAC #( + .ax_width(27), + .signed_max(A_SIGNED ? "true" : "false"), + .ay_scan_in_width(27), + .signed_may(B_SIGNED ? "true" : "false"), + .result_a_width(54), + .operation_mode("M27x27") +) _TECHMAP_REPLACE_ ( + .ax(A), + .ay(B), + .resulta(Y) +); + +endmodule + + +module MISTRAL_MUL18X18(input [17:0] A, B, output [35:0] Y); + +parameter A_SIGNED = 1; +parameter B_SIGNED = 1; + +`MAC #( + .ax_width(18), + .signed_max(A_SIGNED ? "true" : "false"), + .ay_scan_in_width(18), + .signed_may(B_SIGNED ? "true" : "false"), + .result_a_width(36), + .operation_mode("M18x18_FULL") +) _TECHMAP_REPLACE_ ( + .ax(A), + .ay(B), + .resulta(Y) +); + +endmodule + + +module MISTRAL_MUL9X9(input [8:0] A, B, output [17:0] Y); + +parameter A_SIGNED = 1; +parameter B_SIGNED = 1; + +`MAC #( + .ax_width(9), + .signed_max(A_SIGNED ? "true" : "false"), + .ay_scan_in_width(9), + .signed_may(B_SIGNED ? "true" : "false"), + .result_a_width(18), + .operation_mode("M9x9") +) _TECHMAP_REPLACE_ ( + .ax(A), + .ay(B), + .resulta(Y) +); + +endmodule + +module MISTRAL_IB(input PAD, output O); +`IBUF #( + .bus_hold("false"), + .differential_mode("false") +) _TECHMAP_REPLACE_ ( + .i(PAD), + .o(O) +); +endmodule + +module MISTRAL_OB(output PAD, input I, OE); +`OBUF #( + .bus_hold("false"), + .differential_mode("false") +) _TECHMAP_REPLACE_ ( + .i(I), + .o(PAD), + .oe(OE) +); +endmodule + +module MISTRAL_IO(output PAD, input I, OE, output O); +`IBUF #( + .bus_hold("false"), + .differential_mode("false") +) ibuf ( + .i(PAD), + .o(O) +); + +`OBUF #( + .bus_hold("false"), + .differential_mode("false") +) obuf ( + .i(I), + .o(PAD), + .oe(OE) +); +endmodule + +module MISTRAL_CLKBUF (input A, output Q); +`CLKENA #( + .clock_type("auto"), + .ena_register_mode("always enabled"), + .ena_register_power_up("high"), + .disable_mode("low"), + .test_syn("high") +) _TECHMAP_REPLACE_ ( + .inclk(A), + .ena(1'b1), + .outclk(Q) +); +endmodule diff --git a/resources/netlist/resources/kernel/share/intel_alm/cyclonev/cells_sim.v b/resources/netlist/resources/kernel/share/intel_alm/cyclonev/cells_sim.v new file mode 100644 index 0000000..14bb756 --- /dev/null +++ b/resources/netlist/resources/kernel/share/intel_alm/cyclonev/cells_sim.v @@ -0,0 +1,168 @@ +/* + * yosys -- Yosys Open SYnthesis Suite + * + * Copyright (C) 2012 Claire Xenia Wolf + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + */ +module VCC (output V); + assign V = 1'b1; +endmodule // VCC + +module GND (output G); + assign G = 1'b0; +endmodule // GND + +/* Altera Cyclone V devices Input Buffer Primitive */ +module cyclonev_io_ibuf + (output o, + (* iopad_external_pin *) input i, + (* iopad_external_pin *) input ibar, + input dynamicterminationcontrol); + + parameter differential_mode = "false"; + parameter bus_hold = "false"; + parameter simulate_z_as = "Z"; + parameter lpm_type = "cyclonev_io_ibuf"; + + assign o = i; +endmodule // cyclonev_io_ibuf + +/* Altera Cyclone V devices Output Buffer Primitive */ +module cyclonev_io_obuf + ((* iopad_external_pin *) output o, + input i, oe, dynamicterminationcontrol, + input [15:0] seriesterminationcontrol, parallelterminationcontrol, + input devoe, + (* iopad_external_pin *) output obar); + + parameter open_drain_output = "false"; + parameter bus_hold = "false"; + parameter shift_series_termination_control = "false"; + parameter sim_dynamic_termination_control_is_connected = "false"; + parameter lpm_type = "cyclonev_io_obuf"; + + assign o = oe ? i : 1'bz; +endmodule // cyclonev_io_obuf + +/* Altera Cyclone V LUT Primitive */ +module cyclonev_lcell_comb + (output combout, cout, sumout, shareout, + input dataa, datab, datac, datad, + input datae, dataf, datag, cin, + input sharein); + + parameter lut_mask = 64'hFFFFFFFFFFFFFFFF; + parameter dont_touch = "off"; + parameter lpm_type = "cyclonev_lcell_comb"; + parameter shared_arith = "off"; + parameter extended_lut = "off"; + + // Internal variables + // Sub mask for fragmented LUTs + wire [15:0] mask_a, mask_b, mask_c, mask_d; + // Independent output for fragmented LUTs + wire output_0, output_1, output_2, output_3; + // Extended mode uses mux to define the output + wire mux_0, mux_1; + // Input for hold the shared LUT mode value + wire shared_lut_alm; + + // Simulation model of 4-input LUT + function lut4; + input [15:0] mask; + input dataa, datab, datac, datad; + reg [7:0] s3; + reg [3:0] s2; + reg [1:0] s1; + begin + s3 = datad ? mask[15:8] : mask[7:0]; + s2 = datac ? s3[7:4] : s3[3:0]; + s1 = datab ? s2[3:2] : s2[1:0]; + lut4 = dataa ? s1[1] : s1[0]; + end + endfunction // lut4 + + // Simulation model of 5-input LUT + function lut5; + input [31:0] mask; // wp-01003.pdf, page 3: "a 5-LUT can be built with two 4-LUTs and a multiplexer. + input dataa, datab, datac, datad, datae; + reg upper_lut_value; + reg lower_lut_value; + begin + upper_lut_value = lut4(mask[31:16], dataa, datab, datac, datad); + lower_lut_value = lut4(mask[15:0], dataa, datab, datac, datad); + lut5 = (datae) ? upper_lut_value : lower_lut_value; + end + endfunction // lut5 + + // Simulation model of 6-input LUT + function lut6; + input [63:0] mask; + input dataa, datab, datac, datad, datae, dataf; + reg upper_lut_value; + reg lower_lut_value; + reg out_0, out_1, out_2, out_3; + begin + upper_lut_value = lut5(mask[63:32], dataa, datab, datac, datad, datae); + lower_lut_value = lut5(mask[31:0], dataa, datab, datac, datad, datae); + lut6 = (dataf) ? upper_lut_value : lower_lut_value; + end + endfunction // lut6 + + assign {mask_a, mask_b, mask_c, mask_d} = {lut_mask[15:0], lut_mask[31:16], lut_mask[47:32], lut_mask[63:48]}; +`ifdef ADVANCED_ALM + always @(*) begin + if(extended_lut == "on") + shared_lut_alm = datag; + else + shared_lut_alm = datac; + // Build the ALM behaviour + out_0 = lut4(mask_a, dataa, datab, datac, datad); + out_1 = lut4(mask_b, dataa, datab, shared_lut_alm, datad); + out_2 = lut4(mask_c, dataa, datab, datac, datad); + out_3 = lut4(mask_d, dataa, datab, shared_lut_alm, datad); + end +`else + `ifdef DEBUG + initial $display("Advanced ALM lut combine is not implemented yet"); + `endif +`endif +endmodule // cyclonev_lcell_comb + + +/* Altera D Flip-Flop Primitive */ +module dffeas + (output q, + input d, clk, clrn, prn, ena, + input asdata, aload, sclr, sload); + + // Timing simulation is not covered + parameter power_up="dontcare"; + parameter is_wysiwyg="false"; + + reg q_tmp; + wire reset; + reg [7:0] debug_net; + + assign reset = (prn && sclr && ~clrn && ena); + assign q = q_tmp & 1'b1; + + always @(posedge clk, posedge aload) begin + if(reset) q_tmp <= 0; + else q_tmp <= d; + end + assign q = q_tmp; + +endmodule // dffeas diff --git a/resources/netlist/resources/kernel/share/machxo2/brams.txt b/resources/netlist/resources/kernel/share/machxo2/brams.txt new file mode 100644 index 0000000..3afbeda --- /dev/null +++ b/resources/netlist/resources/kernel/share/machxo2/brams.txt @@ -0,0 +1,50 @@ +ram block $__DP8KC_ { + abits 13; + widths 1 2 4 9 per_port; + cost 64; + init no_undef; + port srsw "A" "B" { + clock posedge; + clken; + portoption "WRITEMODE" "NORMAL" { + rdwr no_change; + } + portoption "WRITEMODE" "WRITETHROUGH" { + rdwr new; + } + portoption "WRITEMODE" "READBEFOREWRITE" { + rdwr old; + } + option "RESETMODE" "SYNC" { + rdsrst zero ungated block_wr; + } + option "RESETMODE" "ASYNC" { + rdarst zero; + } + rdinit zero; + } +} + +ram block $__PDPW8KC_ { + abits 13; + widths 1 2 4 9 18 per_port; + byte 9; + cost 64; + init no_undef; + port sr "R" { + clock posedge; + clken; + option "RESETMODE" "SYNC" { + rdsrst zero ungated; + } + option "RESETMODE" "ASYNC" { + rdarst zero; + } + rdinit zero; + } + port sw "W" { + width 18; + clock posedge; + clken; + } +} diff --git a/resources/netlist/resources/kernel/share/machxo2/brams_map.v b/resources/netlist/resources/kernel/share/machxo2/brams_map.v new file mode 100644 index 0000000..05a8e8a --- /dev/null +++ b/resources/netlist/resources/kernel/share/machxo2/brams_map.v @@ -0,0 +1,337 @@ +module $__DP8KC_ (...); + +parameter INIT = 0; +parameter OPTION_RESETMODE = "SYNC"; + +parameter PORT_A_WIDTH = 18; +parameter PORT_A_OPTION_WRITEMODE = "NORMAL"; + +input PORT_A_CLK; +input PORT_A_CLK_EN; +input PORT_A_WR_EN; +input PORT_A_RD_SRST; +input PORT_A_RD_ARST; +input [12:0] PORT_A_ADDR; +input [PORT_A_WIDTH-1:0] PORT_A_WR_DATA; +output [PORT_A_WIDTH-1:0] PORT_A_RD_DATA; + +parameter PORT_B_WIDTH = 18; +parameter PORT_B_OPTION_WRITEMODE = "NORMAL"; + +input PORT_B_CLK; +input PORT_B_CLK_EN; +input PORT_B_WR_EN; +input PORT_B_RD_SRST; +input PORT_B_RD_ARST; +input [12:0] PORT_B_ADDR; +input [PORT_B_WIDTH-1:0] PORT_B_WR_DATA; +output [PORT_B_WIDTH-1:0] PORT_B_RD_DATA; + +function [319:0] init_slice; + input integer idx; + integer i, j; + init_slice = 0; + for (i = 0; i < 16; i = i + 1) begin + init_slice[i*20+:18] = INIT[(idx * 16 + i) * 18+:18]; + end +endfunction + +wire [8:0] DOA; +wire [8:0] DOB; +wire [8:0] DIA = PORT_A_WR_DATA; +wire [8:0] DIB = PORT_B_WR_DATA; + +assign PORT_A_RD_DATA = DOA; +assign PORT_B_RD_DATA = DOB; + +DP8KC #( + .INITVAL_00($sformatf("0x%080x", init_slice('h00))), + .INITVAL_01($sformatf("0x%080x", init_slice('h01))), + .INITVAL_02($sformatf("0x%080x", init_slice('h02))), + .INITVAL_03($sformatf("0x%080x", init_slice('h03))), + .INITVAL_04($sformatf("0x%080x", init_slice('h04))), + .INITVAL_05($sformatf("0x%080x", init_slice('h05))), + .INITVAL_06($sformatf("0x%080x", init_slice('h06))), + .INITVAL_07($sformatf("0x%080x", init_slice('h07))), + .INITVAL_08($sformatf("0x%080x", init_slice('h08))), + .INITVAL_09($sformatf("0x%080x", init_slice('h09))), + .INITVAL_0A($sformatf("0x%080x", init_slice('h0a))), + .INITVAL_0B($sformatf("0x%080x", init_slice('h0b))), + .INITVAL_0C($sformatf("0x%080x", init_slice('h0c))), + .INITVAL_0D($sformatf("0x%080x", init_slice('h0d))), + .INITVAL_0E($sformatf("0x%080x", init_slice('h0e))), + .INITVAL_0F($sformatf("0x%080x", init_slice('h0f))), + .INITVAL_10($sformatf("0x%080x", init_slice('h10))), + .INITVAL_11($sformatf("0x%080x", init_slice('h11))), + .INITVAL_12($sformatf("0x%080x", init_slice('h12))), + .INITVAL_13($sformatf("0x%080x", init_slice('h13))), + .INITVAL_14($sformatf("0x%080x", init_slice('h14))), + .INITVAL_15($sformatf("0x%080x", init_slice('h15))), + .INITVAL_16($sformatf("0x%080x", init_slice('h16))), + .INITVAL_17($sformatf("0x%080x", init_slice('h17))), + .INITVAL_18($sformatf("0x%080x", init_slice('h18))), + .INITVAL_19($sformatf("0x%080x", init_slice('h19))), + .INITVAL_1A($sformatf("0x%080x", init_slice('h1a))), + .INITVAL_1B($sformatf("0x%080x", init_slice('h1b))), + .INITVAL_1C($sformatf("0x%080x", init_slice('h1c))), + .INITVAL_1D($sformatf("0x%080x", init_slice('h1d))), + .INITVAL_1E($sformatf("0x%080x", init_slice('h1e))), + .INITVAL_1F($sformatf("0x%080x", init_slice('h1f))), + .DATA_WIDTH_A(PORT_A_WIDTH), + .DATA_WIDTH_B(PORT_B_WIDTH), + .REGMODE_A("NOREG"), + .REGMODE_B("NOREG"), + .RESETMODE(OPTION_RESETMODE), + .ASYNC_RESET_RELEASE(OPTION_RESETMODE), + .CSDECODE_A("0b000"), + .CSDECODE_B("0b000"), + .WRITEMODE_A(PORT_A_OPTION_WRITEMODE), + .WRITEMODE_B(PORT_B_OPTION_WRITEMODE), + .GSR("AUTO") +) _TECHMAP_REPLACE_ ( + .CLKA(PORT_A_CLK), + .WEA(PORT_A_WR_EN), + .CEA(PORT_A_CLK_EN), + .OCEA(1'b1), + .RSTA(OPTION_RESETMODE == "SYNC" ? PORT_A_RD_SRST : PORT_A_RD_ARST), + .CSA0(1'b0), + .CSA1(1'b0), + .CSA2(1'b0), + .ADA0(PORT_A_WIDTH == 9 ? 1'b1 : PORT_A_ADDR[0]), + .ADA1(PORT_A_ADDR[1]), + .ADA2(PORT_A_ADDR[2]), + .ADA3(PORT_A_ADDR[3]), + .ADA4(PORT_A_ADDR[4]), + .ADA5(PORT_A_ADDR[5]), + .ADA6(PORT_A_ADDR[6]), + .ADA7(PORT_A_ADDR[7]), + .ADA8(PORT_A_ADDR[8]), + .ADA9(PORT_A_ADDR[9]), + .ADA10(PORT_A_ADDR[10]), + .ADA11(PORT_A_ADDR[11]), + .ADA12(PORT_A_ADDR[12]), + .DIA0(DIA[0]), + .DIA1(DIA[1]), + .DIA2(DIA[2]), + .DIA3(DIA[3]), + .DIA4(DIA[4]), + .DIA5(DIA[5]), + .DIA6(DIA[6]), + .DIA7(DIA[7]), + .DIA8(DIA[8]), + .DOA0(DOA[0]), + .DOA1(DOA[1]), + .DOA2(DOA[2]), + .DOA3(DOA[3]), + .DOA4(DOA[4]), + .DOA5(DOA[5]), + .DOA6(DOA[6]), + .DOA7(DOA[7]), + .DOA8(DOA[8]), + + .CLKB(PORT_B_CLK), + .WEB(PORT_B_WR_EN), + .CEB(PORT_B_CLK_EN), + .OCEB(1'b1), + .RSTB(OPTION_RESETMODE == "SYNC" ? PORT_B_RD_SRST : PORT_B_RD_ARST), + .CSB0(1'b0), + .CSB1(1'b0), + .CSB2(1'b0), + .ADB0(PORT_B_WIDTH == 9 ? 1'b1 : PORT_B_ADDR[0]), + .ADB1(PORT_B_ADDR[1]), + .ADB2(PORT_B_ADDR[2]), + .ADB3(PORT_B_ADDR[3]), + .ADB4(PORT_B_ADDR[4]), + .ADB5(PORT_B_ADDR[5]), + .ADB6(PORT_B_ADDR[6]), + .ADB7(PORT_B_ADDR[7]), + .ADB8(PORT_B_ADDR[8]), + .ADB9(PORT_B_ADDR[9]), + .ADB10(PORT_B_ADDR[10]), + .ADB11(PORT_B_ADDR[11]), + .ADB12(PORT_B_ADDR[12]), + .DIB0(DIB[0]), + .DIB1(DIB[1]), + .DIB2(DIB[2]), + .DIB3(DIB[3]), + .DIB4(DIB[4]), + .DIB5(DIB[5]), + .DIB6(DIB[6]), + .DIB7(DIB[7]), + .DIB8(DIB[8]), + .DOB0(DOB[0]), + .DOB1(DOB[1]), + .DOB2(DOB[2]), + .DOB3(DOB[3]), + .DOB4(DOB[4]), + .DOB5(DOB[5]), + .DOB6(DOB[6]), + .DOB7(DOB[7]), + .DOB8(DOB[8]), +); + +endmodule + + +module $__PDPW8KC_ (...); + +parameter INIT = 0; +parameter OPTION_RESETMODE = "SYNC"; + +parameter PORT_R_WIDTH = 18; + +input PORT_R_CLK; +input PORT_R_CLK_EN; +input PORT_R_RD_SRST; +input PORT_R_RD_ARST; +input [12:0] PORT_R_ADDR; +output [PORT_R_WIDTH-1:0] PORT_R_RD_DATA; + +parameter PORT_W_WIDTH = 18; +parameter PORT_W_WR_EN_WIDTH = 2; + +input PORT_W_CLK; +input PORT_W_CLK_EN; +input [12:0] PORT_W_ADDR; +input [PORT_W_WR_EN_WIDTH-1:0] PORT_W_WR_EN; +input [PORT_W_WIDTH-1:0] PORT_W_WR_DATA; + +function [319:0] init_slice; + input integer idx; + integer i, j; + init_slice = 0; + for (i = 0; i < 16; i = i + 1) begin + init_slice[i*20+:18] = INIT[(idx * 16 + i) * 18+:18]; + end +endfunction + +wire [17:0] DI = PORT_W_WR_DATA; +wire [17:0] DO; + +assign PORT_R_RD_DATA = PORT_R_WIDTH == 18 ? DO : DO[17:9]; + +DP8KC #( + .INITVAL_00($sformatf("0x%080x", init_slice('h00))), + .INITVAL_01($sformatf("0x%080x", init_slice('h01))), + .INITVAL_02($sformatf("0x%080x", init_slice('h02))), + .INITVAL_03($sformatf("0x%080x", init_slice('h03))), + .INITVAL_04($sformatf("0x%080x", init_slice('h04))), + .INITVAL_05($sformatf("0x%080x", init_slice('h05))), + .INITVAL_06($sformatf("0x%080x", init_slice('h06))), + .INITVAL_07($sformatf("0x%080x", init_slice('h07))), + .INITVAL_08($sformatf("0x%080x", init_slice('h08))), + .INITVAL_09($sformatf("0x%080x", init_slice('h09))), + .INITVAL_0A($sformatf("0x%080x", init_slice('h0a))), + .INITVAL_0B($sformatf("0x%080x", init_slice('h0b))), + .INITVAL_0C($sformatf("0x%080x", init_slice('h0c))), + .INITVAL_0D($sformatf("0x%080x", init_slice('h0d))), + .INITVAL_0E($sformatf("0x%080x", init_slice('h0e))), + .INITVAL_0F($sformatf("0x%080x", init_slice('h0f))), + .INITVAL_10($sformatf("0x%080x", init_slice('h10))), + .INITVAL_11($sformatf("0x%080x", init_slice('h11))), + .INITVAL_12($sformatf("0x%080x", init_slice('h12))), + .INITVAL_13($sformatf("0x%080x", init_slice('h13))), + .INITVAL_14($sformatf("0x%080x", init_slice('h14))), + .INITVAL_15($sformatf("0x%080x", init_slice('h15))), + .INITVAL_16($sformatf("0x%080x", init_slice('h16))), + .INITVAL_17($sformatf("0x%080x", init_slice('h17))), + .INITVAL_18($sformatf("0x%080x", init_slice('h18))), + .INITVAL_19($sformatf("0x%080x", init_slice('h19))), + .INITVAL_1A($sformatf("0x%080x", init_slice('h1a))), + .INITVAL_1B($sformatf("0x%080x", init_slice('h1b))), + .INITVAL_1C($sformatf("0x%080x", init_slice('h1c))), + .INITVAL_1D($sformatf("0x%080x", init_slice('h1d))), + .INITVAL_1E($sformatf("0x%080x", init_slice('h1e))), + .INITVAL_1F($sformatf("0x%080x", init_slice('h1f))), + .DATA_WIDTH_A(PORT_W_WIDTH), + .DATA_WIDTH_B(PORT_R_WIDTH), + .REGMODE_A("NOREG"), + .REGMODE_B("NOREG"), + .RESETMODE(OPTION_RESETMODE), + .ASYNC_RESET_RELEASE(OPTION_RESETMODE), + .CSDECODE_A("0b000"), + .CSDECODE_B("0b000"), + .GSR("AUTO") +) _TECHMAP_REPLACE_ ( + .CLKA(PORT_W_CLK), + .WEA(PORT_W_WIDTH >= 9 ? 1'b1 : PORT_W_WR_EN[0]), + .CEA(PORT_W_CLK_EN), + .OCEA(1'b0), + .RSTA(1'b0), + .CSA0(1'b0), + .CSA1(1'b0), + .CSA2(1'b0), + .ADA0(PORT_W_WIDTH >= 9 ? PORT_W_WR_EN[0] : PORT_W_ADDR[0]), + .ADA1(PORT_W_WIDTH >= 18 ? PORT_W_WR_EN[1] : PORT_W_ADDR[1]), + .ADA2(PORT_W_ADDR[2]), + .ADA3(PORT_W_ADDR[3]), + .ADA4(PORT_W_ADDR[4]), + .ADA5(PORT_W_ADDR[5]), + .ADA6(PORT_W_ADDR[6]), + .ADA7(PORT_W_ADDR[7]), + .ADA8(PORT_W_ADDR[8]), + .ADA9(PORT_W_ADDR[9]), + .ADA10(PORT_W_ADDR[10]), + .ADA11(PORT_W_ADDR[11]), + .ADA12(PORT_W_ADDR[12]), + .DIA0(DI[0]), + .DIA1(DI[1]), + .DIA2(DI[2]), + .DIA3(DI[3]), + .DIA4(DI[4]), + .DIA5(DI[5]), + .DIA6(DI[6]), + .DIA7(DI[7]), + .DIA8(DI[8]), + .DIB0(DI[9]), + .DIB1(DI[10]), + .DIB2(DI[11]), + .DIB3(DI[12]), + .DIB4(DI[13]), + .DIB5(DI[14]), + .DIB6(DI[15]), + .DIB7(DI[16]), + .DIB8(DI[17]), + + .CLKB(PORT_R_CLK), + .WEB(1'b0), + .CEB(PORT_R_CLK_EN), + .OCEB(1'b1), + .RSTB(OPTION_RESETMODE == "SYNC" ? PORT_R_RD_SRST : PORT_R_RD_ARST), + .CSB0(1'b0), + .CSB1(1'b0), + .CSB2(1'b0), + .ADB0(PORT_R_ADDR[0]), + .ADB1(PORT_R_ADDR[1]), + .ADB2(PORT_R_ADDR[2]), + .ADB3(PORT_R_ADDR[3]), + .ADB4(PORT_R_ADDR[4]), + .ADB5(PORT_R_ADDR[5]), + .ADB6(PORT_R_ADDR[6]), + .ADB7(PORT_R_ADDR[7]), + .ADB8(PORT_R_ADDR[8]), + .ADB9(PORT_R_ADDR[9]), + .ADB10(PORT_R_ADDR[10]), + .ADB11(PORT_R_ADDR[11]), + .ADB12(PORT_R_ADDR[12]), + .DOA0(DO[0]), + .DOA1(DO[1]), + .DOA2(DO[2]), + .DOA3(DO[3]), + .DOA4(DO[4]), + .DOA5(DO[5]), + .DOA6(DO[6]), + .DOA7(DO[7]), + .DOA8(DO[8]), + .DOB0(DO[9]), + .DOB1(DO[10]), + .DOB2(DO[11]), + .DOB3(DO[12]), + .DOB4(DO[13]), + .DOB5(DO[14]), + .DOB6(DO[15]), + .DOB7(DO[16]), + .DOB8(DO[17]), +); + +endmodule diff --git a/resources/netlist/resources/kernel/share/machxo2/cells_map.v b/resources/netlist/resources/kernel/share/machxo2/cells_map.v new file mode 100644 index 0000000..9c370f2 --- /dev/null +++ b/resources/netlist/resources/kernel/share/machxo2/cells_map.v @@ -0,0 +1,34 @@ +module \$lut (A, Y); + parameter WIDTH = 0; + parameter LUT = 0; + input [WIDTH-1:0] A; + output Y; + + localparam rep = 1<<(4-WIDTH); + wire [3:0] I; + + generate + if(WIDTH == 1) begin + assign I = {1'b0, 1'b0, 1'b0, A[0]}; + end else if(WIDTH == 2) begin + assign I = {1'b0, 1'b0, A[1], A[0]}; + end else if(WIDTH == 3) begin + assign I = {1'b0, A[2], A[1], A[0]}; + end else if(WIDTH == 4) begin + assign I = {A[3], A[2], A[1], A[0]}; + end else begin + wire _TECHMAP_FAIL_ = 1; + end + endgenerate + + LUT4 #(.INIT({rep{LUT}})) _TECHMAP_REPLACE_ (.A(I[0]), .B(I[1]), .C(I[2]), .D(I[3]), .Z(Y)); +endmodule + +// DFFs +module \$_DFF_P_ (input D, C, output Q); FACADE_FF #(.CEMUX("1"), .CLKMUX("CLK"), .LSRMUX("LSR"), .REGSET("RESET")) _TECHMAP_REPLACE_ (.CLK(C), .LSR(1'b0), .DI(D), .Q(Q)); endmodule + +// IO- "$__" cells for the iopadmap pass. +module \$__FACADE_OUTPAD (input I, output O); FACADE_IO #(.DIR("OUTPUT")) _TECHMAP_REPLACE_ (.PAD(O), .I(I), .T(1'b0)); endmodule +module \$__FACADE_INPAD (input I, output O); FACADE_IO #(.DIR("INPUT")) _TECHMAP_REPLACE_ (.PAD(I), .O(O)); endmodule +module \$__FACADE_TOUTPAD (input I, T, output O); FACADE_IO #(.DIR("OUTPUT")) _TECHMAP_REPLACE_ (.PAD(O), .I(I), .T(T)); endmodule +module \$__FACADE_TINOUTPAD (input I, T, output O, inout B); FACADE_IO #(.DIR("BIDIR")) _TECHMAP_REPLACE_ (.PAD(B), .I(I), .O(O), .T(T)); endmodule diff --git a/resources/netlist/resources/kernel/share/machxo2/cells_sim.v b/resources/netlist/resources/kernel/share/machxo2/cells_sim.v new file mode 100644 index 0000000..82c9d8c --- /dev/null +++ b/resources/netlist/resources/kernel/share/machxo2/cells_sim.v @@ -0,0 +1,333 @@ +module LUT4 #( + parameter [15:0] INIT = 0 +) ( + input A, B, C, D, + output Z +); + // This form of LUT propagates as few x's as possible. + wire [7:0] s3 = D ? INIT[15:8] : INIT[7:0]; + wire [3:0] s2 = C ? s3[ 7:4] : s3[3:0]; + wire [1:0] s1 = B ? s2[ 3:2] : s2[1:0]; + assign Z = A ? s1[1] : s1[0]; +endmodule + +module FACADE_FF #( + parameter GSR = "ENABLED", + parameter CEMUX = "1", + parameter CLKMUX = "0", + parameter LSRMUX = "LSR", + parameter LSRONMUX = "LSRMUX", + parameter SRMODE = "LSR_OVER_CE", + parameter REGSET = "SET", + parameter REGMODE = "FF" +) ( + input CLK, DI, LSR, CE, + output reg Q +); + + wire muxce; + generate + case (CEMUX) + "1": assign muxce = 1'b1; + "0": assign muxce = 1'b0; + "INV": assign muxce = ~CE; + default: assign muxce = CE; + endcase + endgenerate + + wire muxlsr = (LSRMUX == "INV") ? ~LSR : LSR; + wire muxlsron = (LSRONMUX == "LSRMUX") ? muxlsr : 1'b0; + wire muxclk = (CLKMUX == "INV") ? ~CLK : CLK; + wire srval = (REGSET == "SET") ? 1'b1 : 1'b0; + + initial Q = srval; + + generate + if (REGMODE == "FF") begin + if (SRMODE == "ASYNC") begin + always @(posedge muxclk, posedge muxlsron) + if (muxlsron) + Q <= srval; + else if (muxce) + Q <= DI; + end else begin + always @(posedge muxclk) + if (muxlsron) + Q <= srval; + else if (muxce) + Q <= DI; + end + end else if (REGMODE == "LATCH") begin + ERROR_UNSUPPORTED_FF_MODE error(); + end else begin + ERROR_UNKNOWN_FF_MODE error(); + end + endgenerate +endmodule + +/* For consistency with ECP5; represents F0/F1 => OFX0 mux in a slice. */ +module PFUMX (input ALUT, BLUT, C0, output Z); + assign Z = C0 ? ALUT : BLUT; +endmodule + +/* For consistency with ECP5; represents FXA/FXB => OFX1 mux in a slice. */ +module L6MUX21 (input D0, D1, SD, output Z); + assign Z = SD ? D1 : D0; +endmodule + +/* For consistency, input order matches TRELLIS_SLICE even though the BELs in +prjtrellis were filled in clockwise order from bottom left. */ +module FACADE_SLICE #( + parameter MODE = "LOGIC", + parameter GSR = "ENABLED", + parameter SRMODE = "LSR_OVER_CE", + parameter CEMUX = "1", + parameter CLKMUX = "0", + parameter LSRMUX = "LSR", + parameter LSRONMUX = "LSRMUX", + parameter LUT0_INITVAL = 16'hFFFF, + parameter LUT1_INITVAL = 16'hFFFF, + parameter REGMODE = "FF", + parameter REG0_SD = "1", + parameter REG1_SD = "1", + parameter REG0_REGSET = "SET", + parameter REG1_REGSET = "SET", + parameter CCU2_INJECT1_0 = "YES", + parameter CCU2_INJECT1_1 = "YES", + parameter WREMUX = "INV" +) ( + input A0, B0, C0, D0, + input A1, B1, C1, D1, + input M0, M1, + input FCI, FXA, FXB, + + input CLK, LSR, CE, + input DI0, DI1, + + input WD0, WD1, + input WAD0, WAD1, WAD2, WAD3, + input WRE, WCK, + + output F0, Q0, + output F1, Q1, + output FCO, OFX0, OFX1, + + output WDO0, WDO1, WDO2, WDO3, + output WADO0, WADO1, WADO2, WADO3 +); + + generate + if (MODE == "LOGIC") begin + L6MUX21 FXMUX (.D0(FXA), .D1(FXB), .SD(M1), .Z(OFX1)); + + wire k0; + wire k1; + PFUMX K0K1MUX (.ALUT(k1), .BLUT(k0), .C0(M0), .Z(OFX0)); + + LUT4 #(.INIT(LUT0_INITVAL)) LUT_0 (.A(A0), .B(B0), .C(C0), .D(D0), .Z(k0)); + LUT4 #(.INIT(LUT1_INITVAL)) LUT_1 (.A(A0), .B(B0), .C(C0), .D(D0), .Z(k1)); + + assign F0 = k0; + assign F1 = k1; + end else if (MODE == "CCU2") begin + ERROR_UNSUPPORTED_SLICE_MODE error(); + end else if (MODE == "DPRAM") begin + ERROR_UNSUPPORTED_SLICE_MODE error(); + end else begin + ERROR_UNKNOWN_SLICE_MODE error(); + end + endgenerate + + /* Reg can be fed either by M, or DI inputs; DI inputs muxes OFX and F + outputs (in other words, feeds back into FACADE_SLICE). */ + wire di0 = (REG0_SD == "1") ? DI0 : M0; + wire di1 = (REG1_SD == "1") ? DI1 : M1; + + FACADE_FF#(.GSR(GSR), .CEMUX(CEMUX), .CLKMUX(CLKMUX), .LSRMUX(LSRMUX), + .LSRONMUX(LSRONMUX), .SRMODE(SRMODE), .REGSET(REG0_REGSET), + .REGMODE(REGMODE)) REG_0 (.CLK(CLK), .DI(di0), .LSR(LSR), .CE(CE), .Q(Q0)); + FACADE_FF#(.GSR(GSR), .CEMUX(CEMUX), .CLKMUX(CLKMUX), .LSRMUX(LSRMUX), + .LSRONMUX(LSRONMUX), .SRMODE(SRMODE), .REGSET(REG1_REGSET), + .REGMODE(REGMODE)) REG_1 (.CLK(CLK), .DI(di1), .LSR(LSR), .CE(CE), .Q(Q1)); +endmodule + +module FACADE_IO #( + parameter DIR = "INPUT" +) ( + inout PAD, + input I, T, + output O +); + generate + if (DIR == "INPUT") begin + assign O = PAD; + end else if (DIR == "OUTPUT") begin + assign PAD = T ? 1'bz : I; + end else if (DIR == "BIDIR") begin + assign PAD = T ? 1'bz : I; + assign O = PAD; + end else begin + ERROR_UNKNOWN_IO_MODE error(); + end + endgenerate +endmodule + +(* blackbox *) +module OSCH #( + parameter NOM_FREQ = "2.08" +) ( + input STDBY, + output OSC, + output SEDSTDBY +); +endmodule + +(* blackbox *) +module DCCA ( + input CLKI, + input CE, + output CLKO +); +endmodule + +(* blackbox *) +module DCMA ( + input CLK0, + input CLK1, + input SEL, + output DCMOUT +); +endmodule + +(* abc9_box, lib_whitebox *) +module DPR16X4C ( + input [3:0] DI, + input WCK, WRE, + input [3:0] RAD, + input [3:0] WAD, + output [3:0] DO +); + parameter INITVAL = "0x0000000000000000"; + + function [63:0] convert_initval; + input [143:0] hex_initval; + reg done; + reg [63:0] temp; + reg [7:0] char; + integer i; + begin + done = 1'b0; + temp = 0; + for (i = 0; i < 16; i = i + 1) begin + if (!done) begin + char = hex_initval[8*i +: 8]; + if (char == "x") begin + done = 1'b1; + end else begin + if (char >= "0" && char <= "9") + temp[4*i +: 4] = char - "0"; + else if (char >= "A" && char <= "F") + temp[4*i +: 4] = 10 + char - "A"; + else if (char >= "a" && char <= "f") + temp[4*i +: 4] = 10 + char - "a"; + end + end + end + convert_initval = temp; + end + endfunction + + localparam conv_initval = convert_initval(INITVAL); + + reg [3:0] ram[0:15]; + integer i; + initial begin + for (i = 0; i < 15; i = i + 1) begin + ram[i] <= conv_initval[4*i +: 4]; + end + end + + always @(posedge WCK) + if (WRE) + ram[WAD] <= DI; + + assign DO = ram[RAD]; +endmodule + +(* blackbox *) +module DP8KC( + input DIA8, DIA7, DIA6, DIA5, DIA4, DIA3, DIA2, DIA1, DIA0, + input ADA12, ADA11, ADA10, ADA9, ADA8, ADA7, ADA6, ADA5, ADA4, ADA3, ADA2, ADA1, ADA0, + input CEA, OCEA, CLKA, WEA, RSTA, + input CSA2, CSA1, CSA0, + output DOA8, DOA7, DOA6, DOA5, DOA4, DOA3, DOA2, DOA1, DOA0, + + input DIB8, DIB7, DIB6, DIB5, DIB4, DIB3, DIB2, DIB1, DIB0, + input ADB12, ADB11, ADB10, ADB9, ADB8, ADB7, ADB6, ADB5, ADB4, ADB3, ADB2, ADB1, ADB0, + input CEB, OCEB, CLKB, WEB, RSTB, + input CSB2, CSB1, CSB0, + output DOB8, DOB7, DOB6, DOB5, DOB4, DOB3, DOB2, DOB1, DOB0 +); + parameter DATA_WIDTH_A = 9; + parameter DATA_WIDTH_B = 9; + + parameter REGMODE_A = "NOREG"; + parameter REGMODE_B = "NOREG"; + + parameter RESETMODE = "SYNC"; + parameter ASYNC_RESET_RELEASE = "SYNC"; + + parameter CSDECODE_A = "0b000"; + parameter CSDECODE_B = "0b000"; + + parameter WRITEMODE_A = "NORMAL"; + parameter WRITEMODE_B = "NORMAL"; + + parameter GSR = "ENABLED"; + parameter INIT_DATA = "STATIC"; + + parameter INITVAL_00 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_01 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_02 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_03 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_04 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_05 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_06 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_07 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_08 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_09 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_0A = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_0B = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_0C = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_0D = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_0E = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_0F = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_10 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_11 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_12 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_13 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_14 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_15 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_16 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_17 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_18 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_19 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_1A = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_1B = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_1C = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_1D = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_1E = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_1F = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; +endmodule + +// IO- "$__" cells for the iopadmap pass. These are temporary cells not meant +// to be instantiated by the end user. They are required in this file for +// attrmvcp to work. +(* blackbox *) +module \$__FACADE_OUTPAD (input I, output O); endmodule +(* blackbox *) +module \$__FACADE_INPAD (input I, output O); endmodule +(* blackbox *) +module \$__FACADE_TOUTPAD (input I, T, output O); endmodule +(* blackbox *) +module \$__FACADE_TINOUTPAD (input I, T, output O, inout B); endmodule diff --git a/resources/netlist/resources/kernel/share/machxo2/lutrams.txt b/resources/netlist/resources/kernel/share/machxo2/lutrams.txt new file mode 100644 index 0000000..c6b0b6c --- /dev/null +++ b/resources/netlist/resources/kernel/share/machxo2/lutrams.txt @@ -0,0 +1,12 @@ +ram distributed $__DPR16X4C_ { + abits 4; + width 4; + cost 4; + init no_undef; + prune_rom; + port sw "W" { + clock posedge; + } + port ar "R" { + } +} diff --git a/resources/netlist/resources/kernel/share/machxo2/lutrams_map.v b/resources/netlist/resources/kernel/share/machxo2/lutrams_map.v new file mode 100644 index 0000000..b55253f --- /dev/null +++ b/resources/netlist/resources/kernel/share/machxo2/lutrams_map.v @@ -0,0 +1,23 @@ +module $__DPR16X4C_ (...); + parameter INIT = 64'b0; + + input PORT_W_CLK; + input [3:0] PORT_W_ADDR; + input [3:0] PORT_W_WR_DATA; + input PORT_W_WR_EN; + + input [3:0] PORT_R_ADDR; + output [3:0] PORT_R_RD_DATA; + + DPR16X4C #( + .INITVAL($sformatf("0x%08x", INIT)) + ) _TECHMAP_REPLACE_ ( + .RAD(PORT_R_ADDR), + .DO(PORT_R_RD_DATA), + + .WAD(PORT_W_ADDR), + .DI(PORT_W_WR_DATA), + .WCK(PORT_W_CLK), + .WRE(PORT_W_WR_EN) + ); +endmodule diff --git a/resources/netlist/resources/kernel/share/mul2dsp.v b/resources/netlist/resources/kernel/share/mul2dsp.v new file mode 100644 index 0000000..ca2b3c5 --- /dev/null +++ b/resources/netlist/resources/kernel/share/mul2dsp.v @@ -0,0 +1,318 @@ +/* + * yosys -- Yosys Open SYnthesis Suite + * + * Copyright (C) 2012 Claire Xenia Wolf + * 2019 Eddie Hung + * 2019 gatecat + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * --- + * + * Tech-mapping rules for decomposing arbitrarily-sized $mul cells + * into an equivalent collection of smaller `DSP_NAME cells (with the + * same interface as $mul) no larger than `DSP_[AB]_MAXWIDTH, attached + * to $shl and $add cells. + * + */ + +`ifndef DSP_A_MAXWIDTH +$fatal(1, "Macro DSP_A_MAXWIDTH must be defined"); +`endif +`ifndef DSP_B_MAXWIDTH +$fatal(1, "Macro DSP_B_MAXWIDTH must be defined"); +`endif +`ifndef DSP_B_MAXWIDTH +$fatal(1, "Macro DSP_B_MAXWIDTH must be defined"); +`endif +`ifndef DSP_A_MAXWIDTH_PARTIAL +`define DSP_A_MAXWIDTH_PARTIAL `DSP_A_MAXWIDTH +`endif +`ifndef DSP_B_MAXWIDTH_PARTIAL +`define DSP_B_MAXWIDTH_PARTIAL `DSP_B_MAXWIDTH +`endif + +`ifndef DSP_NAME +$fatal(1, "Macro DSP_NAME must be defined"); +`endif + +`define MAX(a,b) (a > b ? a : b) +`define MIN(a,b) (a < b ? a : b) + +(* techmap_celltype = "$mul $__mul" *) +module _80_mul (A, B, Y); + parameter A_SIGNED = 0; + parameter B_SIGNED = 0; + parameter A_WIDTH = 1; + parameter B_WIDTH = 1; + parameter Y_WIDTH = 1; + + (* force_downto *) + input [A_WIDTH-1:0] A; + (* force_downto *) + input [B_WIDTH-1:0] B; + (* force_downto *) + output [Y_WIDTH-1:0] Y; + + parameter _TECHMAP_CELLTYPE_ = ""; + + generate + if (0) begin end +`ifdef DSP_A_MINWIDTH + else if (A_WIDTH < `DSP_A_MINWIDTH) + wire _TECHMAP_FAIL_ = 1; +`endif +`ifdef DSP_B_MINWIDTH + else if (B_WIDTH < `DSP_B_MINWIDTH) + wire _TECHMAP_FAIL_ = 1; +`endif +`ifdef DSP_Y_MINWIDTH + else if (Y_WIDTH < `DSP_Y_MINWIDTH) + wire _TECHMAP_FAIL_ = 1; +`endif +`ifdef DSP_SIGNEDONLY + else if (_TECHMAP_CELLTYPE_ == "$mul" && !A_SIGNED && !B_SIGNED) + \$mul #( + .A_SIGNED(1), + .B_SIGNED(1), + .A_WIDTH(A_WIDTH + 1), + .B_WIDTH(B_WIDTH + 1), + .Y_WIDTH(Y_WIDTH) + ) _TECHMAP_REPLACE_ ( + .A({1'b0, A}), + .B({1'b0, B}), + .Y(Y) + ); +`endif + else if (_TECHMAP_CELLTYPE_ == "$mul" && A_WIDTH < B_WIDTH) + \$mul #( + .A_SIGNED(B_SIGNED), + .B_SIGNED(A_SIGNED), + .A_WIDTH(B_WIDTH), + .B_WIDTH(A_WIDTH), + .Y_WIDTH(Y_WIDTH) + ) _TECHMAP_REPLACE_ ( + .A(B), + .B(A), + .Y(Y) + ); + else begin + wire [1023:0] _TECHMAP_DO_ = "proc; clean"; + +`ifdef DSP_SIGNEDONLY + localparam sign_headroom = 1; +`else + localparam sign_headroom = 0; +`endif + + genvar i; + if (A_WIDTH > `DSP_A_MAXWIDTH) begin + localparam n = (A_WIDTH-`DSP_A_MAXWIDTH+`DSP_A_MAXWIDTH_PARTIAL-sign_headroom-1) / (`DSP_A_MAXWIDTH_PARTIAL-sign_headroom); + localparam partial_Y_WIDTH = `MIN(Y_WIDTH, B_WIDTH+`DSP_A_MAXWIDTH_PARTIAL); + localparam last_A_WIDTH = A_WIDTH-n*(`DSP_A_MAXWIDTH_PARTIAL-sign_headroom); + localparam last_Y_WIDTH = B_WIDTH+last_A_WIDTH; + if (A_SIGNED && B_SIGNED) begin : blk + (* force_downto *) + wire signed [partial_Y_WIDTH-1:0] partial [n-1:0]; + (* force_downto *) + wire signed [last_Y_WIDTH-1:0] last_partial; + (* force_downto *) + wire signed [Y_WIDTH-1:0] partial_sum [n:0]; + end + else begin : blk + (* force_downto *) + wire [partial_Y_WIDTH-1:0] partial [n-1:0]; + (* force_downto *) + wire [last_Y_WIDTH-1:0] last_partial; + (* force_downto *) + wire [Y_WIDTH-1:0] partial_sum [n:0]; + end + + for (i = 0; i < n; i=i+1) begin:sliceA + \$__mul #( + .A_SIGNED(sign_headroom), + .B_SIGNED(B_SIGNED), + .A_WIDTH(`DSP_A_MAXWIDTH_PARTIAL), + .B_WIDTH(B_WIDTH), + .Y_WIDTH(partial_Y_WIDTH) + ) mul ( + .A({{sign_headroom{1'b0}}, A[i*(`DSP_A_MAXWIDTH_PARTIAL-sign_headroom) +: `DSP_A_MAXWIDTH_PARTIAL-sign_headroom]}), + .B(B), + .Y(blk.partial[i]) + ); + // TODO: Currently a 'cascade' approach to summing the partial + // products is taken here, but a more efficient 'binary + // reduction' approach also exists... + if (i == 0) + assign blk.partial_sum[i] = blk.partial[i]; + else + assign blk.partial_sum[i] = (blk.partial[i] << (* mul2dsp *) i*(`DSP_A_MAXWIDTH_PARTIAL-sign_headroom)) + (* mul2dsp *) blk.partial_sum[i-1]; + end + + \$__mul #( + .A_SIGNED(A_SIGNED), + .B_SIGNED(B_SIGNED), + .A_WIDTH(last_A_WIDTH), + .B_WIDTH(B_WIDTH), + .Y_WIDTH(last_Y_WIDTH) + ) sliceA.last ( + .A(A[A_WIDTH-1 -: last_A_WIDTH]), + .B(B), + .Y(blk.last_partial) + ); + assign blk.partial_sum[n] = (blk.last_partial << (* mul2dsp *) n*(`DSP_A_MAXWIDTH_PARTIAL-sign_headroom)) + (* mul2dsp *) blk.partial_sum[n-1]; + assign Y = blk.partial_sum[n]; + end + else if (B_WIDTH > `DSP_B_MAXWIDTH) begin + localparam n = (B_WIDTH-`DSP_B_MAXWIDTH+`DSP_B_MAXWIDTH_PARTIAL-sign_headroom-1) / (`DSP_B_MAXWIDTH_PARTIAL-sign_headroom); + localparam partial_Y_WIDTH = `MIN(Y_WIDTH, A_WIDTH+`DSP_B_MAXWIDTH_PARTIAL); + localparam last_B_WIDTH = B_WIDTH-n*(`DSP_B_MAXWIDTH_PARTIAL-sign_headroom); + localparam last_Y_WIDTH = A_WIDTH+last_B_WIDTH; + if (A_SIGNED && B_SIGNED) begin : blk + (* force_downto *) + wire signed [partial_Y_WIDTH-1:0] partial [n-1:0]; + (* force_downto *) + wire signed [last_Y_WIDTH-1:0] last_partial; + (* force_downto *) + wire signed [Y_WIDTH-1:0] partial_sum [n:0]; + end + else begin : blk + (* force_downto *) + wire [partial_Y_WIDTH-1:0] partial [n-1:0]; + (* force_downto *) + wire [last_Y_WIDTH-1:0] last_partial; + (* force_downto *) + wire [Y_WIDTH-1:0] partial_sum [n:0]; + end + + for (i = 0; i < n; i=i+1) begin:sliceB + \$__mul #( + .A_SIGNED(A_SIGNED), + .B_SIGNED(sign_headroom), + .A_WIDTH(A_WIDTH), + .B_WIDTH(`DSP_B_MAXWIDTH_PARTIAL), + .Y_WIDTH(partial_Y_WIDTH) + ) mul ( + .A(A), + .B({{sign_headroom{1'b0}}, B[i*(`DSP_B_MAXWIDTH_PARTIAL-sign_headroom) +: `DSP_B_MAXWIDTH_PARTIAL-sign_headroom]}), + .Y(blk.partial[i]) + ); + // TODO: Currently a 'cascade' approach to summing the partial + // products is taken here, but a more efficient 'binary + // reduction' approach also exists... + if (i == 0) + assign blk.partial_sum[i] = blk.partial[i]; + else + assign blk.partial_sum[i] = (blk.partial[i] << (* mul2dsp *) i*(`DSP_B_MAXWIDTH_PARTIAL-sign_headroom)) + (* mul2dsp *) blk.partial_sum[i-1]; + end + + \$__mul #( + .A_SIGNED(A_SIGNED), + .B_SIGNED(B_SIGNED), + .A_WIDTH(A_WIDTH), + .B_WIDTH(last_B_WIDTH), + .Y_WIDTH(last_Y_WIDTH) + ) mul_sliceB_last ( + .A(A), + .B(B[B_WIDTH-1 -: last_B_WIDTH]), + .Y(blk.last_partial) + ); + assign blk.partial_sum[n] = (blk.last_partial << (* mul2dsp *) n*(`DSP_B_MAXWIDTH_PARTIAL-sign_headroom)) + (* mul2dsp *) blk.partial_sum[n-1]; + assign Y = blk.partial_sum[n]; + end + else begin + if (A_SIGNED) begin : blkA + wire signed [`DSP_A_MAXWIDTH-1:0] Aext = $signed(A); + end + else begin : blkA + wire [`DSP_A_MAXWIDTH-1:0] Aext = A; + end + if (B_SIGNED) begin : blkB + wire signed [`DSP_B_MAXWIDTH-1:0] Bext = $signed(B); + end + else begin : blkB + wire [`DSP_B_MAXWIDTH-1:0] Bext = B; + end + + `DSP_NAME #( + .A_SIGNED(A_SIGNED), + .B_SIGNED(B_SIGNED), + .A_WIDTH(`DSP_A_MAXWIDTH), + .B_WIDTH(`DSP_B_MAXWIDTH), + .Y_WIDTH(`MIN(Y_WIDTH,`DSP_A_MAXWIDTH+`DSP_B_MAXWIDTH)), + ) _TECHMAP_REPLACE_ ( + .A(blkA.Aext), + .B(blkB.Bext), + .Y(Y) + ); + end + end + endgenerate +endmodule + +(* techmap_celltype = "$mul $__mul" *) +module _90_soft_mul (A, B, Y); + parameter A_SIGNED = 0; + parameter B_SIGNED = 0; + parameter A_WIDTH = 1; + parameter B_WIDTH = 1; + parameter Y_WIDTH = 1; + + (* force_downto *) + input [A_WIDTH-1:0] A; + (* force_downto *) + input [B_WIDTH-1:0] B; + (* force_downto *) + output [Y_WIDTH-1:0] Y; + + // Indirection necessary since mapping + // back to $mul will cause recursion + generate + if (A_SIGNED && !B_SIGNED) + \$__soft_mul #( + .A_SIGNED(A_SIGNED), + .B_SIGNED(1), + .A_WIDTH(A_WIDTH), + .B_WIDTH(B_WIDTH+1), + .Y_WIDTH(Y_WIDTH) + ) _TECHMAP_REPLACE_ ( + .A(A), + .B({1'b0,B}), + .Y(Y) + ); + else if (!A_SIGNED && B_SIGNED) + \$__soft_mul #( + .A_SIGNED(1), + .B_SIGNED(B_SIGNED), + .A_WIDTH(A_WIDTH+1), + .B_WIDTH(B_WIDTH), + .Y_WIDTH(Y_WIDTH) + ) _TECHMAP_REPLACE_ ( + .A({1'b0,A}), + .B(B), + .Y(Y) + ); + else + \$__soft_mul #( + .A_SIGNED(A_SIGNED), + .B_SIGNED(B_SIGNED), + .A_WIDTH(A_WIDTH), + .B_WIDTH(B_WIDTH), + .Y_WIDTH(Y_WIDTH) + ) _TECHMAP_REPLACE_ ( + .A(A), + .B(B), + .Y(Y) + ); + endgenerate +endmodule diff --git a/resources/netlist/resources/kernel/share/nexus/arith_map.v b/resources/netlist/resources/kernel/share/nexus/arith_map.v new file mode 100644 index 0000000..81ab7ba --- /dev/null +++ b/resources/netlist/resources/kernel/share/nexus/arith_map.v @@ -0,0 +1,99 @@ +/* + * yosys -- Yosys Open SYnthesis Suite + * + * Copyright (C) 2012 Claire Xenia Wolf + * Copyright (C) 2018 gatecat + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + */ + +(* techmap_celltype = "$alu" *) +module _80_nexus_alu (A, B, CI, BI, X, Y, CO); + parameter A_SIGNED = 0; + parameter B_SIGNED = 0; + parameter A_WIDTH = 1; + parameter B_WIDTH = 1; + parameter Y_WIDTH = 1; + + (* force_downto *) + input [A_WIDTH-1:0] A; + (* force_downto *) + input [B_WIDTH-1:0] B; + (* force_downto *) + output [Y_WIDTH-1:0] X, Y; + + input CI, BI; + (* force_downto *) + output [Y_WIDTH-1:0] CO; + + wire _TECHMAP_FAIL_ = Y_WIDTH <= 4; + + (* force_downto *) + wire [Y_WIDTH-1:0] A_buf, B_buf; + \$pos #(.A_SIGNED(A_SIGNED), .A_WIDTH(A_WIDTH), .Y_WIDTH(Y_WIDTH)) A_conv (.A(A), .Y(A_buf)); + \$pos #(.A_SIGNED(B_SIGNED), .A_WIDTH(B_WIDTH), .Y_WIDTH(Y_WIDTH)) B_conv (.A(B), .Y(B_buf)); + + function integer round_up2; + input integer N; + begin + round_up2 = ((N + 1) / 2) * 2; + end + endfunction + + localparam Y_WIDTH2 = round_up2(Y_WIDTH); + + (* force_downto *) + wire [Y_WIDTH2-1:0] AA = A_buf; + (* force_downto *) + wire [Y_WIDTH2-1:0] BB = BI ? ~B_buf : B_buf; + (* force_downto *) + wire [Y_WIDTH2-1:0] BX = B_buf; + (* force_downto *) + wire [Y_WIDTH2+1:0] FCO, Y1; + + genvar i; + + // Carry feed-in + CCU2 #( + .INIT0("0xFFFF"), + .INIT1("0x00AA"), + .INJECT("NO") + ) ccu2c_i ( + .A0(1'b1), .B0(1'b1), .C0(1'b1), .D0(1'b1), + .A1(CI), .B1(1'b1), .C1(1'b1), .D1(1'b1), + .COUT(FCO[0]) + ); + + generate for (i = 0; i < Y_WIDTH2; i = i + 2) begin:slice + CCU2 #( + .INIT0("0x96AA"), + .INIT1("0x96AA"), + .INJECT("NO") + ) ccu2c_i ( + .CIN(FCO[i]), + .A0(AA[i]), .B0(BX[i]), .C0(BI), .D0(1'b1), + .A1(AA[i+1]), .B1(BX[i+1]), .C1(BI), .D1(1'b1), + .S0(Y[i]), .S1(Y1[i]), + .COUT(FCO[i+2]) + ); + + assign CO[i] = (AA[i] && BB[i]) || ((Y[i] ^ AA[i] ^ BB[i]) && (AA[i] || BB[i])); + if (i+1 < Y_WIDTH) begin + assign CO[i + 1] = (AA[i + 1] && BB[i + 1]) || ((Y[i + 1] ^ AA[i + 1] ^ BB[i + 1]) && (AA[i + 1] || BB[i + 1])); + assign Y[i+1] = Y1[i]; + end + end endgenerate + + assign X = AA ^ BB; +endmodule diff --git a/resources/netlist/resources/kernel/share/nexus/brams.txt b/resources/netlist/resources/kernel/share/nexus/brams.txt new file mode 100644 index 0000000..975a8d2 --- /dev/null +++ b/resources/netlist/resources/kernel/share/nexus/brams.txt @@ -0,0 +1,47 @@ +ram block $__NX_DP16K_ { + abits 14; + widths 1 2 4 9 18 per_port; + byte 9; + cost 129; + init no_undef; + port srsw "A" "B" { + clock posedge; + clken; + wrbe_separate; + rdwr no_change; + portoption "RESETMODE" "SYNC" { + rdsrst zero gated_clken; + } + portoption "RESETMODE" "ASYNC" { + rdarst zero; + } + rdinit zero; + } +} + +ram block $__NX_PDP16K_ { + abits 14; + widths 1 2 4 9 18 36 per_port; + byte 9; + option "SAME_CLOCK" 1 cost 128; + option "SAME_CLOCK" 0 cost 129; + init no_undef; + port sr "R" { + option "SAME_CLOCK" 1 clock posedge "C"; + option "SAME_CLOCK" 0 clock posedge; + clken; + portoption "RESETMODE" "SYNC" { + rdsrst zero gated_clken; + } + portoption "RESETMODE" "ASYNC" { + rdarst zero; + } + rdinit zero; + } + port sw "W" { + option "SAME_CLOCK" 1 clock posedge "C"; + option "SAME_CLOCK" 0 clock posedge; + clken; + option "SAME_CLOCK" 1 wrtrans all old; + } +} diff --git a/resources/netlist/resources/kernel/share/nexus/brams_map.v b/resources/netlist/resources/kernel/share/nexus/brams_map.v new file mode 100644 index 0000000..17306cd --- /dev/null +++ b/resources/netlist/resources/kernel/share/nexus/brams_map.v @@ -0,0 +1,420 @@ +module $__NX_DP16K_ (...); + +parameter INIT = 0; + +parameter PORT_A_OPTION_RESETMODE = "SYNC"; +parameter PORT_A_WIDTH = 18; +parameter PORT_A_WR_BE_WIDTH = 2; + +input PORT_A_CLK; +input PORT_A_CLK_EN; +input PORT_A_WR_EN; +input PORT_A_RD_SRST; +input PORT_A_RD_ARST; +input [13:0] PORT_A_ADDR; +input [PORT_A_WR_BE_WIDTH-1:0] PORT_A_WR_BE; +input [PORT_A_WIDTH-1:0] PORT_A_WR_DATA; +output [PORT_A_WIDTH-1:0] PORT_A_RD_DATA; + +parameter PORT_B_OPTION_RESETMODE = "SYNC"; +parameter PORT_B_WIDTH = 18; +parameter PORT_B_WR_BE_WIDTH = 2; + +input PORT_B_CLK; +input PORT_B_CLK_EN; +input PORT_B_WR_EN; +input PORT_B_RD_SRST; +input PORT_B_RD_ARST; +input [13:0] PORT_B_ADDR; +input [PORT_B_WR_BE_WIDTH-1:0] PORT_B_WR_BE; +input [PORT_B_WIDTH-1:0] PORT_B_WR_DATA; +output [PORT_B_WIDTH-1:0] PORT_B_RD_DATA; + +function [319:0] init_slice; + input integer idx; + integer i; + init_slice = 0; + for (i = 0; i < 32; i = i + 1) begin + init_slice[i*10+:9] = INIT[(idx * 32 + i) * 9+:9]; + end +endfunction + +wire [17:0] DOA; +wire [17:0] DOB; +wire [17:0] DIA = PORT_A_WR_DATA; +wire [17:0] DIB = PORT_B_WR_DATA; +wire [13:0] ADA; +wire [13:0] ADB; + +generate + +case(PORT_A_WIDTH) +1: assign ADA = PORT_A_ADDR; +2: assign ADA = {PORT_A_ADDR[13:1], 1'b1}; +4: assign ADA = {PORT_A_ADDR[13:2], 2'b11}; +9: assign ADA = {PORT_A_ADDR[13:3], 3'b111}; +18: assign ADA = {PORT_A_ADDR[13:4], 2'b11, PORT_A_WR_BE}; +endcase + +case(PORT_B_WIDTH) +1: assign ADB = PORT_B_ADDR; +2: assign ADB = {PORT_B_ADDR[13:1], 1'b1}; +4: assign ADB = {PORT_B_ADDR[13:2], 2'b11}; +9: assign ADB = {PORT_B_ADDR[13:3], 3'b111}; +18: assign ADB = {PORT_B_ADDR[13:4], 2'b11, PORT_B_WR_BE}; +endcase + +endgenerate + +assign PORT_A_RD_DATA = DOA; +assign PORT_B_RD_DATA = DOB; + +DP16K #( + .INITVAL_00($sformatf("0x%080x", init_slice('h00))), + .INITVAL_01($sformatf("0x%080x", init_slice('h01))), + .INITVAL_02($sformatf("0x%080x", init_slice('h02))), + .INITVAL_03($sformatf("0x%080x", init_slice('h03))), + .INITVAL_04($sformatf("0x%080x", init_slice('h04))), + .INITVAL_05($sformatf("0x%080x", init_slice('h05))), + .INITVAL_06($sformatf("0x%080x", init_slice('h06))), + .INITVAL_07($sformatf("0x%080x", init_slice('h07))), + .INITVAL_08($sformatf("0x%080x", init_slice('h08))), + .INITVAL_09($sformatf("0x%080x", init_slice('h09))), + .INITVAL_0A($sformatf("0x%080x", init_slice('h0a))), + .INITVAL_0B($sformatf("0x%080x", init_slice('h0b))), + .INITVAL_0C($sformatf("0x%080x", init_slice('h0c))), + .INITVAL_0D($sformatf("0x%080x", init_slice('h0d))), + .INITVAL_0E($sformatf("0x%080x", init_slice('h0e))), + .INITVAL_0F($sformatf("0x%080x", init_slice('h0f))), + .INITVAL_10($sformatf("0x%080x", init_slice('h10))), + .INITVAL_11($sformatf("0x%080x", init_slice('h11))), + .INITVAL_12($sformatf("0x%080x", init_slice('h12))), + .INITVAL_13($sformatf("0x%080x", init_slice('h13))), + .INITVAL_14($sformatf("0x%080x", init_slice('h14))), + .INITVAL_15($sformatf("0x%080x", init_slice('h15))), + .INITVAL_16($sformatf("0x%080x", init_slice('h16))), + .INITVAL_17($sformatf("0x%080x", init_slice('h17))), + .INITVAL_18($sformatf("0x%080x", init_slice('h18))), + .INITVAL_19($sformatf("0x%080x", init_slice('h19))), + .INITVAL_1A($sformatf("0x%080x", init_slice('h1a))), + .INITVAL_1B($sformatf("0x%080x", init_slice('h1b))), + .INITVAL_1C($sformatf("0x%080x", init_slice('h1c))), + .INITVAL_1D($sformatf("0x%080x", init_slice('h1d))), + .INITVAL_1E($sformatf("0x%080x", init_slice('h1e))), + .INITVAL_1F($sformatf("0x%080x", init_slice('h1f))), + .INITVAL_20($sformatf("0x%080x", init_slice('h20))), + .INITVAL_21($sformatf("0x%080x", init_slice('h21))), + .INITVAL_22($sformatf("0x%080x", init_slice('h22))), + .INITVAL_23($sformatf("0x%080x", init_slice('h23))), + .INITVAL_24($sformatf("0x%080x", init_slice('h24))), + .INITVAL_25($sformatf("0x%080x", init_slice('h25))), + .INITVAL_26($sformatf("0x%080x", init_slice('h26))), + .INITVAL_27($sformatf("0x%080x", init_slice('h27))), + .INITVAL_28($sformatf("0x%080x", init_slice('h28))), + .INITVAL_29($sformatf("0x%080x", init_slice('h29))), + .INITVAL_2A($sformatf("0x%080x", init_slice('h2a))), + .INITVAL_2B($sformatf("0x%080x", init_slice('h2b))), + .INITVAL_2C($sformatf("0x%080x", init_slice('h2c))), + .INITVAL_2D($sformatf("0x%080x", init_slice('h2d))), + .INITVAL_2E($sformatf("0x%080x", init_slice('h2e))), + .INITVAL_2F($sformatf("0x%080x", init_slice('h2f))), + .INITVAL_30($sformatf("0x%080x", init_slice('h30))), + .INITVAL_31($sformatf("0x%080x", init_slice('h31))), + .INITVAL_32($sformatf("0x%080x", init_slice('h32))), + .INITVAL_33($sformatf("0x%080x", init_slice('h33))), + .INITVAL_34($sformatf("0x%080x", init_slice('h34))), + .INITVAL_35($sformatf("0x%080x", init_slice('h35))), + .INITVAL_36($sformatf("0x%080x", init_slice('h36))), + .INITVAL_37($sformatf("0x%080x", init_slice('h37))), + .INITVAL_38($sformatf("0x%080x", init_slice('h38))), + .INITVAL_39($sformatf("0x%080x", init_slice('h39))), + .INITVAL_3A($sformatf("0x%080x", init_slice('h3a))), + .INITVAL_3B($sformatf("0x%080x", init_slice('h3b))), + .INITVAL_3C($sformatf("0x%080x", init_slice('h3c))), + .INITVAL_3D($sformatf("0x%080x", init_slice('h3d))), + .INITVAL_3E($sformatf("0x%080x", init_slice('h3e))), + .INITVAL_3F($sformatf("0x%080x", init_slice('h3f))), + .DATA_WIDTH_A($sformatf("X%d", PORT_A_WIDTH)), + .DATA_WIDTH_B($sformatf("X%d", PORT_B_WIDTH)), + .OUTREG_A("BYPASSED"), + .OUTREG_B("BYPASSED"), + .RESETMODE_A(PORT_A_OPTION_RESETMODE), + .RESETMODE_B(PORT_B_OPTION_RESETMODE), + .ASYNC_RST_RELEASE_A(PORT_A_OPTION_RESETMODE), + .ASYNC_RST_RELEASE_B(PORT_B_OPTION_RESETMODE), + .CSDECODE_A("111"), + .CSDECODE_B("111"), + .GSR("DISABLED"), +) _TECHMAP_REPLACE_ ( + .CLKA(PORT_A_CLK), + .WEA(PORT_A_WIDTH == 18 ? PORT_A_WR_EN : (PORT_A_WR_EN | PORT_A_WR_BE[0])), + .CEA(PORT_A_CLK_EN), + .RSTA(PORT_A_OPTION_RESETMODE == "SYNC" ? PORT_A_RD_SRST : PORT_A_RD_ARST), + .CSA(3'b111), + .DIA(DIA), + .DOA(DOA), + .ADA(ADA), + + .CLKB(PORT_B_CLK), + .WEB(PORT_B_WIDTH == 18 ? PORT_B_WR_EN : (PORT_B_WR_EN | PORT_B_WR_BE[0])), + .CEB(PORT_B_CLK_EN), + .RSTB(PORT_B_OPTION_RESETMODE == "SYNC" ? PORT_B_RD_SRST : PORT_B_RD_ARST), + .CSB(3'b111), + .ADB(ADB), + .DIB(DIB), + .DOB(DOB), +); + +endmodule + + +module $__NX_PDP16K_ (...); + +parameter INIT = 0; +parameter OPTION_SAME_CLOCK = 1; + +parameter PORT_R_WIDTH = 36; +parameter PORT_R_OPTION_RESETMODE = "SYNC"; + +input CLK_C; + +input PORT_R_CLK; +input PORT_R_CLK_EN; +input PORT_R_RD_SRST; +input PORT_R_RD_ARST; +input [13:0] PORT_R_ADDR; +output [PORT_R_WIDTH-1:0] PORT_R_RD_DATA; + +parameter PORT_W_WIDTH = 36; +parameter PORT_W_WR_EN_WIDTH = 4; + +input PORT_W_CLK; +input PORT_W_CLK_EN; +input [13:0] PORT_W_ADDR; +input [PORT_W_WR_EN_WIDTH-1:0] PORT_W_WR_EN; +input [PORT_W_WIDTH-1:0] PORT_W_WR_DATA; + +function [319:0] init_slice; + input integer idx; + integer i; + init_slice = 0; + for (i = 0; i < 32; i = i + 1) begin + init_slice[i*10+:9] = INIT[(idx * 32 + i) * 9+:9]; + end +endfunction + +wire [35:0] DI = PORT_W_WR_DATA; +wire [35:0] DO; + +assign PORT_R_RD_DATA = DO; + +wire [13:0] ADW; +wire [13:0] ADR; + +generate + +case (PORT_W_WIDTH) +1: assign ADW = PORT_W_ADDR; +2: assign ADW = {PORT_W_ADDR[13:1], 1'b1}; +4: assign ADW = {PORT_W_ADDR[13:2], 2'b11}; +9: assign ADW = {PORT_W_ADDR[13:3], 3'b111}; +18: assign ADW = {PORT_W_ADDR[13:4], 2'b11, PORT_W_WR_EN}; +36: assign ADW = {PORT_W_ADDR[13:5], 1'b1, PORT_W_WR_EN}; +endcase + +case (PORT_R_WIDTH) +1: assign ADR = PORT_R_ADDR; +2: assign ADR = {PORT_R_ADDR[13:1], 1'b1}; +4: assign ADR = {PORT_R_ADDR[13:2], 2'b11}; +9: assign ADR = {PORT_R_ADDR[13:3], 3'b111}; +18: assign ADR = {PORT_R_ADDR[13:4], 4'b1111}; +36: assign ADR = {PORT_R_ADDR[13:5], 5'b11111}; +endcase + +if (OPTION_SAME_CLOCK) begin + +PDPSC16K #( + .INITVAL_00($sformatf("0x%080x", init_slice('h00))), + .INITVAL_01($sformatf("0x%080x", init_slice('h01))), + .INITVAL_02($sformatf("0x%080x", init_slice('h02))), + .INITVAL_03($sformatf("0x%080x", init_slice('h03))), + .INITVAL_04($sformatf("0x%080x", init_slice('h04))), + .INITVAL_05($sformatf("0x%080x", init_slice('h05))), + .INITVAL_06($sformatf("0x%080x", init_slice('h06))), + .INITVAL_07($sformatf("0x%080x", init_slice('h07))), + .INITVAL_08($sformatf("0x%080x", init_slice('h08))), + .INITVAL_09($sformatf("0x%080x", init_slice('h09))), + .INITVAL_0A($sformatf("0x%080x", init_slice('h0a))), + .INITVAL_0B($sformatf("0x%080x", init_slice('h0b))), + .INITVAL_0C($sformatf("0x%080x", init_slice('h0c))), + .INITVAL_0D($sformatf("0x%080x", init_slice('h0d))), + .INITVAL_0E($sformatf("0x%080x", init_slice('h0e))), + .INITVAL_0F($sformatf("0x%080x", init_slice('h0f))), + .INITVAL_10($sformatf("0x%080x", init_slice('h10))), + .INITVAL_11($sformatf("0x%080x", init_slice('h11))), + .INITVAL_12($sformatf("0x%080x", init_slice('h12))), + .INITVAL_13($sformatf("0x%080x", init_slice('h13))), + .INITVAL_14($sformatf("0x%080x", init_slice('h14))), + .INITVAL_15($sformatf("0x%080x", init_slice('h15))), + .INITVAL_16($sformatf("0x%080x", init_slice('h16))), + .INITVAL_17($sformatf("0x%080x", init_slice('h17))), + .INITVAL_18($sformatf("0x%080x", init_slice('h18))), + .INITVAL_19($sformatf("0x%080x", init_slice('h19))), + .INITVAL_1A($sformatf("0x%080x", init_slice('h1a))), + .INITVAL_1B($sformatf("0x%080x", init_slice('h1b))), + .INITVAL_1C($sformatf("0x%080x", init_slice('h1c))), + .INITVAL_1D($sformatf("0x%080x", init_slice('h1d))), + .INITVAL_1E($sformatf("0x%080x", init_slice('h1e))), + .INITVAL_1F($sformatf("0x%080x", init_slice('h1f))), + .INITVAL_20($sformatf("0x%080x", init_slice('h20))), + .INITVAL_21($sformatf("0x%080x", init_slice('h21))), + .INITVAL_22($sformatf("0x%080x", init_slice('h22))), + .INITVAL_23($sformatf("0x%080x", init_slice('h23))), + .INITVAL_24($sformatf("0x%080x", init_slice('h24))), + .INITVAL_25($sformatf("0x%080x", init_slice('h25))), + .INITVAL_26($sformatf("0x%080x", init_slice('h26))), + .INITVAL_27($sformatf("0x%080x", init_slice('h27))), + .INITVAL_28($sformatf("0x%080x", init_slice('h28))), + .INITVAL_29($sformatf("0x%080x", init_slice('h29))), + .INITVAL_2A($sformatf("0x%080x", init_slice('h2a))), + .INITVAL_2B($sformatf("0x%080x", init_slice('h2b))), + .INITVAL_2C($sformatf("0x%080x", init_slice('h2c))), + .INITVAL_2D($sformatf("0x%080x", init_slice('h2d))), + .INITVAL_2E($sformatf("0x%080x", init_slice('h2e))), + .INITVAL_2F($sformatf("0x%080x", init_slice('h2f))), + .INITVAL_30($sformatf("0x%080x", init_slice('h30))), + .INITVAL_31($sformatf("0x%080x", init_slice('h31))), + .INITVAL_32($sformatf("0x%080x", init_slice('h32))), + .INITVAL_33($sformatf("0x%080x", init_slice('h33))), + .INITVAL_34($sformatf("0x%080x", init_slice('h34))), + .INITVAL_35($sformatf("0x%080x", init_slice('h35))), + .INITVAL_36($sformatf("0x%080x", init_slice('h36))), + .INITVAL_37($sformatf("0x%080x", init_slice('h37))), + .INITVAL_38($sformatf("0x%080x", init_slice('h38))), + .INITVAL_39($sformatf("0x%080x", init_slice('h39))), + .INITVAL_3A($sformatf("0x%080x", init_slice('h3a))), + .INITVAL_3B($sformatf("0x%080x", init_slice('h3b))), + .INITVAL_3C($sformatf("0x%080x", init_slice('h3c))), + .INITVAL_3D($sformatf("0x%080x", init_slice('h3d))), + .INITVAL_3E($sformatf("0x%080x", init_slice('h3e))), + .INITVAL_3F($sformatf("0x%080x", init_slice('h3f))), + .DATA_WIDTH_W($sformatf("X%d", PORT_W_WIDTH)), + .DATA_WIDTH_R($sformatf("X%d", PORT_R_WIDTH)), + .OUTREG("BYPASSED"), + .RESETMODE(PORT_R_OPTION_RESETMODE), + .ASYNC_RST_RELEASE(PORT_R_OPTION_RESETMODE), + .CSDECODE_W("111"), + .CSDECODE_R("111"), + .ECC("DISABLED"), + .GSR("DISABLED"), +) _TECHMAP_REPLACE_ ( + .CLK(CLK_C), + + .CEW(PORT_W_CLK_EN), + .CSW(3'b111), + .ADW(ADW), + .DI(DI), + + .CER(PORT_R_CLK_EN), + .RST(PORT_R_OPTION_RESETMODE == "SYNC" ? PORT_R_RD_SRST : PORT_R_RD_ARST), + .CSR(3'b111), + .ADR(ADR), + .DO(DO), +); + +end else begin + +PDP16K #( + .INITVAL_00($sformatf("0x%080x", init_slice('h00))), + .INITVAL_01($sformatf("0x%080x", init_slice('h01))), + .INITVAL_02($sformatf("0x%080x", init_slice('h02))), + .INITVAL_03($sformatf("0x%080x", init_slice('h03))), + .INITVAL_04($sformatf("0x%080x", init_slice('h04))), + .INITVAL_05($sformatf("0x%080x", init_slice('h05))), + .INITVAL_06($sformatf("0x%080x", init_slice('h06))), + .INITVAL_07($sformatf("0x%080x", init_slice('h07))), + .INITVAL_08($sformatf("0x%080x", init_slice('h08))), + .INITVAL_09($sformatf("0x%080x", init_slice('h09))), + .INITVAL_0A($sformatf("0x%080x", init_slice('h0a))), + .INITVAL_0B($sformatf("0x%080x", init_slice('h0b))), + .INITVAL_0C($sformatf("0x%080x", init_slice('h0c))), + .INITVAL_0D($sformatf("0x%080x", init_slice('h0d))), + .INITVAL_0E($sformatf("0x%080x", init_slice('h0e))), + .INITVAL_0F($sformatf("0x%080x", init_slice('h0f))), + .INITVAL_10($sformatf("0x%080x", init_slice('h10))), + .INITVAL_11($sformatf("0x%080x", init_slice('h11))), + .INITVAL_12($sformatf("0x%080x", init_slice('h12))), + .INITVAL_13($sformatf("0x%080x", init_slice('h13))), + .INITVAL_14($sformatf("0x%080x", init_slice('h14))), + .INITVAL_15($sformatf("0x%080x", init_slice('h15))), + .INITVAL_16($sformatf("0x%080x", init_slice('h16))), + .INITVAL_17($sformatf("0x%080x", init_slice('h17))), + .INITVAL_18($sformatf("0x%080x", init_slice('h18))), + .INITVAL_19($sformatf("0x%080x", init_slice('h19))), + .INITVAL_1A($sformatf("0x%080x", init_slice('h1a))), + .INITVAL_1B($sformatf("0x%080x", init_slice('h1b))), + .INITVAL_1C($sformatf("0x%080x", init_slice('h1c))), + .INITVAL_1D($sformatf("0x%080x", init_slice('h1d))), + .INITVAL_1E($sformatf("0x%080x", init_slice('h1e))), + .INITVAL_1F($sformatf("0x%080x", init_slice('h1f))), + .INITVAL_20($sformatf("0x%080x", init_slice('h20))), + .INITVAL_21($sformatf("0x%080x", init_slice('h21))), + .INITVAL_22($sformatf("0x%080x", init_slice('h22))), + .INITVAL_23($sformatf("0x%080x", init_slice('h23))), + .INITVAL_24($sformatf("0x%080x", init_slice('h24))), + .INITVAL_25($sformatf("0x%080x", init_slice('h25))), + .INITVAL_26($sformatf("0x%080x", init_slice('h26))), + .INITVAL_27($sformatf("0x%080x", init_slice('h27))), + .INITVAL_28($sformatf("0x%080x", init_slice('h28))), + .INITVAL_29($sformatf("0x%080x", init_slice('h29))), + .INITVAL_2A($sformatf("0x%080x", init_slice('h2a))), + .INITVAL_2B($sformatf("0x%080x", init_slice('h2b))), + .INITVAL_2C($sformatf("0x%080x", init_slice('h2c))), + .INITVAL_2D($sformatf("0x%080x", init_slice('h2d))), + .INITVAL_2E($sformatf("0x%080x", init_slice('h2e))), + .INITVAL_2F($sformatf("0x%080x", init_slice('h2f))), + .INITVAL_30($sformatf("0x%080x", init_slice('h30))), + .INITVAL_31($sformatf("0x%080x", init_slice('h31))), + .INITVAL_32($sformatf("0x%080x", init_slice('h32))), + .INITVAL_33($sformatf("0x%080x", init_slice('h33))), + .INITVAL_34($sformatf("0x%080x", init_slice('h34))), + .INITVAL_35($sformatf("0x%080x", init_slice('h35))), + .INITVAL_36($sformatf("0x%080x", init_slice('h36))), + .INITVAL_37($sformatf("0x%080x", init_slice('h37))), + .INITVAL_38($sformatf("0x%080x", init_slice('h38))), + .INITVAL_39($sformatf("0x%080x", init_slice('h39))), + .INITVAL_3A($sformatf("0x%080x", init_slice('h3a))), + .INITVAL_3B($sformatf("0x%080x", init_slice('h3b))), + .INITVAL_3C($sformatf("0x%080x", init_slice('h3c))), + .INITVAL_3D($sformatf("0x%080x", init_slice('h3d))), + .INITVAL_3E($sformatf("0x%080x", init_slice('h3e))), + .INITVAL_3F($sformatf("0x%080x", init_slice('h3f))), + .DATA_WIDTH_W($sformatf("X%d", PORT_W_WIDTH)), + .DATA_WIDTH_R($sformatf("X%d", PORT_R_WIDTH)), + .OUTREG("BYPASSED"), + .RESETMODE(PORT_R_OPTION_RESETMODE), + .ASYNC_RST_RELEASE(PORT_R_OPTION_RESETMODE), + .CSDECODE_W("111"), + .CSDECODE_R("111"), + .ECC("DISABLED"), + .GSR("DISABLED"), +) _TECHMAP_REPLACE_ ( + .CLKW(PORT_W_CLK), + .CEW(PORT_W_CLK_EN), + .CSW(3'b111), + .ADW(ADW), + .DI(DI), + + .CLKR(PORT_R_CLK), + .CER(PORT_R_CLK_EN), + .RST(PORT_R_OPTION_RESETMODE == "SYNC" ? PORT_R_RD_SRST : PORT_R_RD_ARST), + .CSR(3'b111), + .ADR(ADR), + .DO(DO), +); + +end + +endgenerate + +endmodule diff --git a/resources/netlist/resources/kernel/share/nexus/cells_map.v b/resources/netlist/resources/kernel/share/nexus/cells_map.v new file mode 100644 index 0000000..b70edbc --- /dev/null +++ b/resources/netlist/resources/kernel/share/nexus/cells_map.v @@ -0,0 +1,98 @@ +// Flipflop intermediate map level +module \$__FF_NOLSR (input D, C, E, output Q); + parameter _TECHMAP_WIREINIT_Q_ = 1'bx; + wire _TECHMAP_REMOVEINIT_Q_ = 1'b1; + generate + if (_TECHMAP_WIREINIT_Q_ === 1'b1) + FD1P3JX #(.GSR("DISABLED")) _TECHMAP_REPLACE_ (.D(D), .CK(C), .SP(E), .PD(1'b0), .Q(Q)); + else + FD1P3IX #(.GSR("DISABLED")) _TECHMAP_REPLACE_ (.D(D), .CK(C), .SP(E), .CD(1'b0), .Q(Q)); + endgenerate +endmodule + +module \$__FF_SYNCLSR (input D, C, E, R, output Q); + parameter SR_VAL = 1'b0; + parameter _TECHMAP_WIREINIT_Q_ = 1'bx; + wire _TECHMAP_REMOVEINIT_Q_ = 1'b1; + wire Ci, Ei, Ri, Rg, Dd; + generate + if (SR_VAL) + FD1P3JX #(.GSR("DISABLED")) _TECHMAP_REPLACE_ (.D(D), .CK(C), .SP(E), .PD(R), .Q(Q)); + else + FD1P3IX #(.GSR("DISABLED")) _TECHMAP_REPLACE_ (.D(D), .CK(C), .SP(E), .CD(R), .Q(Q)); + endgenerate +endmodule + +module \$__FF_ASYNCLSR (input D, C, E, R, output Q); + parameter SR_VAL = 1'b0; + parameter _TECHMAP_WIREINIT_Q_ = 1'bx; + wire _TECHMAP_REMOVEINIT_Q_ = (_TECHMAP_WIREINIT_Q_ === 1'bx || _TECHMAP_WIREINIT_Q_ === SR_VAL); + wire Ci, Ei, Ri, Rg, Dd; + generate + if (SR_VAL) + FD1P3BX #(.GSR("DISABLED")) _TECHMAP_REPLACE_ (.D(D), .CK(C), .SP(E), .PD(R), .Q(Q)); + else + FD1P3DX #(.GSR("DISABLED")) _TECHMAP_REPLACE_ (.D(D), .CK(C), .SP(E), .CD(R), .Q(Q)); + endgenerate +endmodule + + +module \$_DFF_P_ (input D, C, output Q); \$__FF_NOLSR _TECHMAP_REPLACE_ (.D(D), .C(C), .E(1'b1), .Q(Q)); endmodule + +module \$_DFFE_PP_ (input D, C, E, output Q); \$__FF_NOLSR _TECHMAP_REPLACE_ (.D(D), .C(C), .E(E), .Q(Q)); endmodule + +module \$_DFF_PP0_ (input D, C, R, output Q); \$__FF_ASYNCLSR #(0) _TECHMAP_REPLACE_ (.D(D), .C(C), .R(R), .E(1'b1), .Q(Q)); endmodule +module \$_DFF_PP1_ (input D, C, R, output Q); \$__FF_ASYNCLSR #(1) _TECHMAP_REPLACE_ (.D(D), .C(C), .R(R), .E(1'b1), .Q(Q)); endmodule + +module \$_SDFF_PP0_ (input D, C, R, output Q); \$__FF_SYNCLSR #(0) _TECHMAP_REPLACE_ (.D(D), .C(C), .R(R), .E(1'b1), .Q(Q)); endmodule +module \$_SDFF_PP1_ (input D, C, R, output Q); \$__FF_SYNCLSR #(1) _TECHMAP_REPLACE_ (.D(D), .C(C), .R(R), .E(1'b1), .Q(Q)); endmodule + +module \$_DFFE_PP0P_ (input D, C, E, R, output Q); \$__FF_ASYNCLSR #(0) _TECHMAP_REPLACE_ (.D(D), .C(C), .R(R), .E(E), .Q(Q)); endmodule +module \$_DFFE_PP1P_ (input D, C, E, R, output Q); \$__FF_ASYNCLSR #(1) _TECHMAP_REPLACE_ (.D(D), .C(C), .R(R), .E(E), .Q(Q)); endmodule + +module \$_SDFFE_PP0P_ (input D, C, E, R, output Q); \$__FF_SYNCLSR #(0) _TECHMAP_REPLACE_ (.D(D), .C(C), .R(R), .E(E), .Q(Q)); endmodule +module \$_SDFFE_PP1P_ (input D, C, E, R, output Q); \$__FF_SYNCLSR #(1) _TECHMAP_REPLACE_ (.D(D), .C(C), .R(R), .E(E), .Q(Q)); endmodule + +`ifndef NO_LUT +module \$lut (A, Y); + parameter WIDTH = 0; + parameter LUT = 0; + + input [WIDTH-1:0] A; + output Y; + + generate + if (WIDTH == 1) begin + if (LUT == 2'b01) + INV _TECHMAP_REPLACE_ (.A(A[0]), .Z(Y)); + else + LUT4 #(.INIT($sformatf("0x%04x", {{8{LUT[1]}}, {8{LUT[0]}}}))) _TECHMAP_REPLACE_ (.Z(Y), + .D(A[0])); + end else + if (WIDTH == 2) begin + localparam [15:0] INIT = {{4{LUT[3]}}, {4{LUT[2]}}, {4{LUT[1]}}, {4{LUT[0]}}}; + LUT4 #(.INIT($sformatf("0x%04x", INIT))) _TECHMAP_REPLACE_ (.Z(Y), + .C(A[0]), .D(A[1])); + end else + if (WIDTH == 3) begin + localparam [15:0] INIT = {{2{LUT[7]}}, {2{LUT[6]}}, {2{LUT[5]}}, {2{LUT[4]}}, {2{LUT[3]}}, {2{LUT[2]}}, {2{LUT[1]}}, {2{LUT[0]}}}; + LUT4 #(.INIT($sformatf("0x%04x", INIT))) _TECHMAP_REPLACE_ (.Z(Y), + .B(A[0]), .C(A[1]), .D(A[2])); + end else + if (WIDTH == 4) begin + LUT4 #(.INIT($sformatf("0x%04x", LUT))) _TECHMAP_REPLACE_ (.Z(Y), + .A(A[0]), .B(A[1]), .C(A[2]), .D(A[3])); + end else + if (WIDTH == 5) begin + WIDEFN9 #( + .INIT0($sformatf("0x%04x", LUT[15:0 ])), + .INIT1($sformatf("0x%04x", LUT[31:16])), + ) _TECHMAP_REPLACE_ ( + .A0(A[0]), .B0(A[1]), .C0(A[2]), .D0(A[3]), + .A1(A[0]), .B1(A[1]), .C1(A[2]), .D1(A[3]), + .SEL(A[4]), .Z(Y) + ); + end + endgenerate +endmodule +`endif diff --git a/resources/netlist/resources/kernel/share/nexus/cells_sim.v b/resources/netlist/resources/kernel/share/nexus/cells_sim.v new file mode 100644 index 0000000..d1c8bf0 --- /dev/null +++ b/resources/netlist/resources/kernel/share/nexus/cells_sim.v @@ -0,0 +1,1058 @@ +(* abc9_lut=1, lib_whitebox *) +module LUT4(input A, B, C, D, output Z); + parameter INIT = "0x0000"; +`include "parse_init.vh" + localparam initp = parse_init(INIT); + wire [7:0] s3 = D ? initp[15:8] : initp[7:0]; + wire [3:0] s2 = C ? s3[ 7:4] : s3[3:0]; + wire [1:0] s1 = B ? s2[ 3:2] : s2[1:0]; + assign Z = A ? s1[1] : s1[0]; + + // Per-input delay differences are considered 'interconnect' + // so not known yet + specify + (A => Z) = 233; + (B => Z) = 233; + (C => Z) = 233; + (D => Z) = 233; + endspecify + +endmodule + +// This is a placeholder for ABC9 to extract the area/delay +// cost of 5-input LUTs and is not intended to be instantiated +(* abc9_lut=2 *) +module \$__ABC9_LUT5 (input SEL, D, C, B, A, output Z); + specify + (SEL => Z) = 171; + (D => Z) = 303; + (C => Z) = 311; + (B => Z) = 309; + (A => Z) = 306; + endspecify +endmodule + +// Two LUT4s and MUX2 +module WIDEFN9(input A0, B0, C0, D0, A1, B1, C1, D1, SEL, output Z); + parameter INIT0 = "0x0000"; + parameter INIT1 = "0x0000"; + wire z0, z1; + LUT4 #(.INIT(INIT0)) lut4_0 (.A(A0), .B(B0), .C(C0), .D(D0), .Z(z0)); + LUT4 #(.INIT(INIT1)) lut4_1 (.A(A1), .B(B1), .C(C1), .D(D1), .Z(z1)); + assign Z = SEL ? z1 : z0; +endmodule + +(* abc9_box, lib_whitebox *) +module INV(input A, output Z); + assign Z = !A; + + specify + (A => Z) = 10; + endspecify +endmodule + +// Bidirectional IO buffer +module BB(input T, I, output O, + (* iopad_external_pin *) inout B); + assign B = T ? 1'bz : I; + assign O = B; +endmodule + +// Input buffer +module IB( + (* iopad_external_pin *) input I, + output O); + assign O = I; +endmodule + +// Output buffer +module OB(input I, + (* iopad_external_pin *) output O); + assign O = I; +endmodule + +// Output buffer with tristate +module OBZ(input I, T, + (* iopad_external_pin *) output O); + assign O = T ? 1'bz : I; +endmodule + +// Constants +module VLO(output Z); + assign Z = 1'b0; +endmodule + +module VHI(output Z); + assign Z = 1'b1; +endmodule + +// Vendor flipflops +// (all have active high clock, enable and set/reset - use INV to invert) + +// Async preset +(* abc9_box, lib_whitebox *) +module FD1P3BX(input D, CK, SP, PD, output reg Q); + parameter GSR = "DISABLED"; + initial Q = 1'b1; + always @(posedge CK or posedge PD) + if (PD) + Q <= 1'b1; + else if (SP) + Q <= D; + specify + $setup(D, posedge CK, 0); + $setup(SP, posedge CK, 212); + $setup(PD, posedge CK, 224); +`ifndef YOSYS + if (PD) (posedge CLK => (Q : 1)) = 0; +`else + if (PD) (PD => Q) = 0; // Technically, this should be an edge sensitive path + // but for facilitating a bypass box, let's pretend it's + // a simple path +`endif + if (!PD && SP) (posedge CK => (Q : D)) = 336; + endspecify +endmodule + +// Async clear +(* abc9_box, lib_whitebox *) +module FD1P3DX(input D, CK, SP, CD, output reg Q); + parameter GSR = "DISABLED"; + initial Q = 1'b0; + always @(posedge CK or posedge CD) + if (CD) + Q <= 1'b0; + else if (SP) + Q <= D; + specify + $setup(D, posedge CK, 0); + $setup(SP, posedge CK, 212); + $setup(CD, posedge CK, 224); +`ifndef YOSYS + if (CD) (posedge CLK => (Q : 0)) = 0; +`else + if (CD) (CD => Q) = 0; // Technically, this should be an edge sensitive path + // but for facilitating a bypass box, let's pretend it's + // a simple path +`endif + if (!CD && SP) (posedge CK => (Q : D)) = 336; + endspecify +endmodule + +// Sync clear +(* abc9_flop, lib_whitebox *) +module FD1P3IX(input D, CK, SP, CD, output reg Q); + parameter GSR = "DISABLED"; + initial Q = 1'b0; + always @(posedge CK) + if (CD) + Q <= 1'b0; + else if (SP) + Q <= D; + specify + $setup(D, posedge CK, 0); + $setup(SP, posedge CK, 212); + $setup(CD, posedge CK, 224); + if (!CD && SP) (posedge CK => (Q : D)) = 336; + endspecify +endmodule + +// Sync preset +(* abc9_flop, lib_whitebox *) +module FD1P3JX(input D, CK, SP, PD, output reg Q); + parameter GSR = "DISABLED"; + initial Q = 1'b1; + always @(posedge CK) + if (PD) + Q <= 1'b1; + else if (SP) + Q <= D; + specify + $setup(D, posedge CK, 0); + $setup(SP, posedge CK, 212); + $setup(PD, posedge CK, 224); + if (!PD && SP) (posedge CK => (Q : D)) = 336; + endspecify +endmodule + +// LUT4 with LUT3 tap for CCU2 use only +(* lib_whitebox *) +module LUT4_3(input A, B, C, D, output Z, Z3); + parameter INIT = "0x0000"; +`include "parse_init.vh" + localparam initp = parse_init(INIT); + wire [7:0] s3 = D ? initp[15:8] : initp[7:0]; + wire [3:0] s2 = C ? s3[ 7:4] : s3[3:0]; + wire [1:0] s1 = B ? s2[ 3:2] : s2[1:0]; + assign Z = A ? s1[1] : s1[0]; + + wire [3:0] s2_3 = C ? initp[ 7:4] : initp[3:0]; + wire [1:0] s1_3 = B ? s2_3[ 3:2] : s2_3[1:0]; + assign Z3 = A ? s1_3[1] : s1_3[0]; + +endmodule + +// Carry primitive (incoporating two LUTs) +(* abc9_box, lib_whitebox *) +module CCU2( + (* abc9_carry *) input CIN, + input A1, B1, C1, D1, A0, B0, C0, D0, + output S1, S0, + (* abc9_carry *) output COUT); + parameter INJECT = "YES"; + parameter INIT0 = "0x0000"; + parameter INIT1 = "0x1111"; + + localparam inject_p = (INJECT == "YES") ? 1'b1 : 1'b0; + + wire LUT3_0, LUT4_0, LUT3_1, LUT4_1, carry_0; + LUT4_3 #(.INIT(INIT0)) lut0 (.A(A0), .B(B0), .C(C0), .D(D0), .Z(LUT4_0), .Z3(LUT3_0)); + LUT4_3 #(.INIT(INIT1)) lut1 (.A(A1), .B(B1), .C(C1), .D(D1), .Z(LUT4_1), .Z3(LUT3_1)); + + assign S0 = LUT4_0 ^ (CIN & ~inject_p); + assign carry_0 = LUT4_0 ? CIN : (LUT3_0 & ~inject_p); + assign S1 = LUT4_1 ^ (carry_0 & ~inject_p); + assign COUT = LUT4_1 ? carry_0 : (LUT3_1 & ~inject_p); + + specify + (A0 => S0) = 233; + (B0 => S0) = 233; + (C0 => S0) = 233; + (D0 => S0) = 233; + (CIN => S0) = 228; + (A0 => S1) = 481; + (B0 => S1) = 481; + (C0 => S1) = 481; + (D0 => S1) = 481; + (A1 => S1) = 233; + (B1 => S1) = 233; + (C1 => S1) = 233; + (D1 => S1) = 233; + (CIN => S1) = 307; + (A0 => COUT) = 347; + (B0 => COUT) = 347; + (C0 => COUT) = 347; + (D0 => COUT) = 347; + (A1 => COUT) = 347; + (B1 => COUT) = 347; + (C1 => COUT) = 347; + (D1 => COUT) = 347; + (CIN => COUT) = 59; + endspecify + +endmodule + +// Packed flipflop +module OXIDE_FF(input CLK, LSR, CE, DI, M, output reg Q); + parameter GSR = "ENABLED"; + parameter [127:0] CEMUX = "1"; + parameter CLKMUX = "CLK"; + parameter LSRMUX = "LSR"; + parameter REGDDR = "DISABLED"; + parameter SRMODE = "LSR_OVER_CE"; + parameter REGSET = "RESET"; + parameter [127:0] LSRMODE = "LSR"; + + wire muxce; + generate + case (CEMUX) + "1": assign muxce = 1'b1; + "0": assign muxce = 1'b0; + "INV": assign muxce = ~CE; + default: assign muxce = CE; + endcase + endgenerate + + wire muxlsr = (LSRMUX == "INV") ? ~LSR : LSR; + wire muxclk = (CLKMUX == "INV") ? ~CLK : CLK; + wire srval; + generate + if (LSRMODE == "PRLD") + assign srval = M; + else + assign srval = (REGSET == "SET") ? 1'b1 : 1'b0; + endgenerate + + initial Q = srval; + + generate + if (REGDDR == "ENABLED") begin + if (SRMODE == "ASYNC") begin + always @(posedge muxclk, negedge muxclk, posedge muxlsr) + if (muxlsr) + Q <= srval; + else if (muxce) + Q <= DI; + end else begin + always @(posedge muxclk, negedge muxclk) + if (muxlsr) + Q <= srval; + else if (muxce) + Q <= DI; + end + end else begin + if (SRMODE == "ASYNC") begin + always @(posedge muxclk, posedge muxlsr) + if (muxlsr) + Q <= srval; + else if (muxce) + Q <= DI; + end else begin + always @(posedge muxclk) + if (muxlsr) + Q <= srval; + else if (muxce) + Q <= DI; + end + end + endgenerate +endmodule + +// Packed combinational logic (for post-pnr sim) +module OXIDE_COMB( + input A, B, C, D, // LUT inputs + input SEL, // mux select input + input F1, // output from LUT 1 for mux + input FCI, // carry input + input WAD0, WAD1, WAD2, WAD3, // LUTRAM write address inputs + input WD, // LUTRAM write data input + input WCK, WRE, // LUTRAM write clock and enable + output F, // LUT/carry output + output OFX // mux output +); + parameter MODE = "LOGIC"; // LOGIC, CCU2, DPRAM + parameter [15:0] INIT = 16'h0000; + parameter INJECT = "YES"; + + localparam inject_p = (INJECT == "YES") ? 1'b1 : 1'b0; + + reg [15:0] lut = INIT; + + wire [7:0] s3 = D ? INIT[15:8] : INIT[7:0]; + wire [3:0] s2 = C ? s3[ 7:4] : s3[3:0]; + wire [1:0] s1 = B ? s2[ 3:2] : s2[1:0]; + wire Z = A ? s1[1] : s1[0]; + + wire [3:0] s2_3 = C ? INIT[ 7:4] : INIT[3:0]; + wire [1:0] s1_3 = B ? s2_3[ 3:2] : s2_3[1:0]; + wire Z3 = A ? s1_3[1] : s1_3[0]; + + generate + if (MODE == "DPRAM") begin + always @(posedge WCK) + if (WRE) + lut[{WAD3, WAD2, WAD1, WAD0}] <= WD; + end + if (MODE == "CCU2") begin + assign F = Z ^ (FCI & ~inject_p); + assign FCO = Z ? FCI : (Z3 & ~inject_p); + end else begin + assign F = Z; + end + endgenerate + + assign OFX = SEL ? F1 : F; + +endmodule + +// LUTRAM +module DPR16X4( + input [3:0] RAD, DI, WAD, + input WRE, WCK, + output [3:0] DO +); + parameter INITVAL = "0x0000000000000000"; +`include "parse_init.vh" + localparam [63:0] parsed_init = parse_init_64(INITVAL); + + reg [3:0] mem[0:15]; + integer i; + initial begin + for (i = 0; i < 15; i++) + mem[i] = parsed_init[i * 4 +: 4]; + end + + always @(posedge WCK) + if (WRE) + mem[WAD] <= DI; + assign DO = mem[RAD]; +endmodule + +// Used for all the DSP models to reduce duplication +module OXIDE_DSP_REG #( + parameter W = 18, + parameter USED = "REGISTER", + parameter RESETMODE = "SYNC" +) ( + input CLK, CE, RST, + input [W-1:0] D, + output reg [W-1:0] Q +); + generate + if (USED == "BYPASS") + always @* Q = D; + else if (USED == "REGISTER") begin + initial Q = 0; + if (RESETMODE == "ASYNC") + always @(posedge CLK, posedge RST) begin + if (RST) + Q <= 0; + else if (CE) + Q <= D; + end + else if (RESETMODE == "SYNC") + always @(posedge CLK) begin + if (RST) + Q <= 0; + else if (CE) + Q <= D; + end + end + endgenerate +endmodule + +module OXIDE_DSP_SIM #( + // User facing parameters + parameter REGINPUTA = "BYPASS", + parameter REGINPUTB = "BYPASS", + parameter REGINPUTC = "BYPASS", + parameter REGADDSUB = "BYPASS", + parameter REGLOADC = "BYPASS", + parameter REGLOADC2 = "BYPASS", + parameter REGCIN = "BYPASS", + parameter REGPIPELINE = "BYPASS", + parameter REGOUTPUT = "BYPASS", + parameter GSR = "ENABLED", + parameter RESETMODE = "SYNC", + // Internally used parameters + parameter A_WIDTH = 36, + parameter B_WIDTH = 36, + parameter C_WIDTH = 36, + parameter Z_WIDTH = 72, + parameter PREADD_USED = 0, + parameter ADDSUB_USED = 0 +) ( + input [A_WIDTH-1:0] A, + input [B_WIDTH-1:0] B, + input [C_WIDTH-1:0] C, + input SIGNEDA, + input SIGNEDB, + input SIGNEDC, + input CIN, + input LOADC, + input ADDSUB, + input CLK, + input CEA, CEB, CEC, CEPIPE, CECTRL, CECIN, CEOUT, + input RSTA, RSTB, RSTC, RSTPIPE, RSTCTRL, RSTCIN, RSTOUT, + output wire [Z_WIDTH-1:0] Z +); + + localparam M_WIDTH = (A_WIDTH+B_WIDTH); + + /******** REGISTERS ********/ + + wire [M_WIDTH-1:0] pipe_d, pipe_q; + wire [Z_WIDTH-1:0] z_d; + + wire [A_WIDTH-1:0] a_r; + wire [B_WIDTH-1:0] b_r; + wire [C_WIDTH-1:0] c_r, c_r2; + wire asgd_r, bsgd_r, csgd_r, csgd_r2; + + wire addsub_r, addsub_r2, cin_r, cin_r2, sgd_r, sgd_r2; + wire loadc_r, loadc_r2; + + OXIDE_DSP_REG #(A_WIDTH+1, REGINPUTA, RESETMODE) a_reg(CLK, CEA, RSTA, {SIGNEDA, A}, {asgd_r, a_r}); + OXIDE_DSP_REG #(B_WIDTH+1, REGINPUTB, RESETMODE) b_reg(CLK, CEB, RSTB, {SIGNEDB, B}, {bsgd_r, b_r}); + OXIDE_DSP_REG #(C_WIDTH+1, REGINPUTC, RESETMODE) c_reg(CLK, CEC, RSTC, {SIGNEDC, C}, {csgd_r, c_r}); + + OXIDE_DSP_REG #(M_WIDTH, REGPIPELINE, RESETMODE) pipe_reg(CLK, CEPIPE, RSTPIPE, pipe_d, pipe_q); + + OXIDE_DSP_REG #(2, REGADDSUB, RESETMODE) addsub_reg(CLK, CECTRL, RSTCTRL, {SIGNEDA, ADDSUB}, {sgd_r, addsub_r}); + OXIDE_DSP_REG #(1, REGLOADC, RESETMODE) loadc_reg(CLK, CECTRL, RSTCTRL, LOADC, loadc_r); + OXIDE_DSP_REG #(2, REGPIPELINE, RESETMODE) addsub2_reg(CLK, CECTRL, RSTCTRL, {sgd_r, addsub_r}, {sgd_r2, addsub_r2}); + OXIDE_DSP_REG #(1, REGLOADC2, RESETMODE) loadc2_reg(CLK, CECTRL, RSTCTRL, loadc_r, loadc_r2); + + OXIDE_DSP_REG #(1, REGCIN, RESETMODE) cin_reg(CLK, CECIN, RSTCIN, CIN, cin_r); + OXIDE_DSP_REG #(1, REGPIPELINE, RESETMODE) cin2_reg(CLK, CECIN, RSTCIN, cin_r, cin_r2); + + OXIDE_DSP_REG #(C_WIDTH+1, REGPIPELINE, RESETMODE) c2_reg(CLK, CEC, RSTC, {csgd_r, c_r}, {csgd_r2, c_r2}); + + OXIDE_DSP_REG #(Z_WIDTH, REGOUTPUT, RESETMODE) z_reg(CLK, CEOUT, RSTOUT, z_d, Z); + + /******** PREADDER ********/ + + wire [B_WIDTH-1:0] mult_b; + wire mult_b_sgd; + + generate + if (PREADD_USED) begin + assign mult_b = (b_r + c_r); + assign mult_b_sgd = (bsgd_r | csgd_r); + end else begin + assign mult_b = b_r; + assign mult_b_sgd = bsgd_r; + end + endgenerate + + /******** MULTIPLIER ********/ + + // sign extend operands if needed + wire [M_WIDTH-1:0] mult_a_ext = {{(M_WIDTH-A_WIDTH){asgd_r ? a_r[A_WIDTH-1] : 1'b0}}, a_r}; + wire [M_WIDTH-1:0] mult_b_ext = {{(M_WIDTH-B_WIDTH){mult_b_sgd ? mult_b[B_WIDTH-1] : 1'b0}}, mult_b}; + + wire [M_WIDTH-1:0] mult_m = mult_a_ext * mult_b_ext; + + /******** ACCUMULATOR ********/ + + wire [Z_WIDTH-1:0] m_ext; + + generate + if (ADDSUB_USED) begin + assign pipe_d = mult_m; + assign m_ext = {{(Z_WIDTH-M_WIDTH){sgd_r2 ? pipe_q[M_WIDTH-1] : 1'b0}}, pipe_q}; + assign z_d = (loadc_r2 ? c_r2 : Z) + cin_r2 + (addsub_r2 ? -m_ext : m_ext); + end else begin + assign z_d = mult_m; + end + endgenerate + + +endmodule + +module MULT9X9 #( + parameter REGINPUTA = "REGISTER", + parameter REGINPUTB = "REGISTER", + parameter REGOUTPUT = "REGISTER", + parameter GSR = "ENABLED", + parameter RESETMODE = "SYNC" +) ( + input [8:0] A, + input [8:0] B, + input CLK, + input CEA, + input RSTA, + input CEB, + input RSTB, + input SIGNEDA, + input SIGNEDB, + input RSTOUT, + input CEOUT, + output [17:0] Z +); + OXIDE_DSP_SIM #( + .REGINPUTA(REGINPUTA), + .REGINPUTB(REGINPUTB), + .REGOUTPUT(REGOUTPUT), + .GSR(GSR), + .RESETMODE(RESETMODE), + + .A_WIDTH(9), + .B_WIDTH(9), + .Z_WIDTH(18), + .PREADD_USED(0), + .ADDSUB_USED(0) + ) dsp_i ( + .A(A), .B(B), + .CLK(CLK), + .CEA(CEA), .RSTA(RSTA), + .CEB(CEB), .RSTB(RSTB), + .SIGNEDA(SIGNEDA), .SIGNEDB(SIGNEDB), + .RSTOUT(RSTOUT), .CEOUT(CEOUT), + .Z(Z) + ); +endmodule + +module MULT18X18 #( + parameter REGINPUTA = "REGISTER", + parameter REGINPUTB = "REGISTER", + parameter REGOUTPUT = "REGISTER", + parameter GSR = "ENABLED", + parameter RESETMODE = "SYNC" +) ( + input [17:0] A, + input [17:0] B, + input CLK, + input CEA, + input RSTA, + input CEB, + input RSTB, + input SIGNEDA, + input SIGNEDB, + input RSTOUT, + input CEOUT, + output [35:0] Z +); + OXIDE_DSP_SIM #( + .REGINPUTA(REGINPUTA), + .REGINPUTB(REGINPUTB), + .REGOUTPUT(REGOUTPUT), + .GSR(GSR), + .RESETMODE(RESETMODE), + + .A_WIDTH(18), + .B_WIDTH(18), + .Z_WIDTH(36), + .PREADD_USED(0), + .ADDSUB_USED(0) + ) dsp_i ( + .A(A), .B(B), + .CLK(CLK), + .CEA(CEA), .RSTA(RSTA), + .CEB(CEB), .RSTB(RSTB), + .SIGNEDA(SIGNEDA), .SIGNEDB(SIGNEDB), + .RSTOUT(RSTOUT), .CEOUT(CEOUT), + .Z(Z) + ); +endmodule + +module MULT18X36 #( + parameter REGINPUTA = "REGISTER", + parameter REGINPUTB = "REGISTER", + parameter REGOUTPUT = "REGISTER", + parameter GSR = "ENABLED", + parameter RESETMODE = "SYNC" +) ( + input [17:0] A, + input [35:0] B, + input CLK, + input CEA, + input RSTA, + input CEB, + input RSTB, + input SIGNEDA, + input SIGNEDB, + input RSTOUT, + input CEOUT, + output [53:0] Z +); + OXIDE_DSP_SIM #( + .REGINPUTA(REGINPUTA), + .REGINPUTB(REGINPUTB), + .REGOUTPUT(REGOUTPUT), + .GSR(GSR), + .RESETMODE(RESETMODE), + + .A_WIDTH(18), + .B_WIDTH(36), + .Z_WIDTH(54), + .PREADD_USED(0), + .ADDSUB_USED(0) + ) dsp_i ( + .A(A), .B(B), + .CLK(CLK), + .CEA(CEA), .RSTA(RSTA), + .CEB(CEB), .RSTB(RSTB), + .SIGNEDA(SIGNEDA), .SIGNEDB(SIGNEDB), + .RSTOUT(RSTOUT), .CEOUT(CEOUT), + .Z(Z) + ); +endmodule + +module MULT36X36 #( + parameter REGINPUTA = "REGISTER", + parameter REGINPUTB = "REGISTER", + parameter REGOUTPUT = "REGISTER", + parameter GSR = "ENABLED", + parameter RESETMODE = "SYNC" +) ( + input [35:0] A, + input [35:0] B, + input CLK, + input CEA, + input RSTA, + input CEB, + input RSTB, + input SIGNEDA, + input SIGNEDB, + input RSTOUT, + input CEOUT, + output [71:0] Z +); + OXIDE_DSP_SIM #( + .REGINPUTA(REGINPUTA), + .REGINPUTB(REGINPUTB), + .REGOUTPUT(REGOUTPUT), + .GSR(GSR), + .RESETMODE(RESETMODE), + + .A_WIDTH(36), + .B_WIDTH(36), + .Z_WIDTH(72), + .PREADD_USED(0), + .ADDSUB_USED(0) + ) dsp_i ( + .A(A), .B(B), + .CLK(CLK), + .CEA(CEA), .RSTA(RSTA), + .CEB(CEB), .RSTB(RSTB), + .SIGNEDA(SIGNEDA), .SIGNEDB(SIGNEDB), + .RSTOUT(RSTOUT), .CEOUT(CEOUT), + .Z(Z) + ); +endmodule + + +module MULTPREADD9X9 #( + parameter REGINPUTA = "REGISTER", + parameter REGINPUTB = "REGISTER", + parameter REGINPUTC = "REGISTER", + parameter REGOUTPUT = "REGISTER", + parameter GSR = "ENABLED", + parameter RESETMODE = "SYNC" +) ( + input [8:0] A, + input [8:0] B, + input [8:0] C, + input CLK, + input CEA, + input RSTA, + input CEB, + input RSTB, + input CEC, + input RSTC, + input SIGNEDA, + input SIGNEDB, + input SIGNEDC, + input RSTOUT, + input CEOUT, + output [17:0] Z +); + OXIDE_DSP_SIM #( + .REGINPUTA(REGINPUTA), + .REGINPUTB(REGINPUTB), + .REGINPUTC(REGINPUTC), + .REGOUTPUT(REGOUTPUT), + .GSR(GSR), + .RESETMODE(RESETMODE), + + .A_WIDTH(9), + .B_WIDTH(9), + .C_WIDTH(9), + .Z_WIDTH(18), + .PREADD_USED(1), + .ADDSUB_USED(0) + ) dsp_i ( + .A(A), .B(B), .C(C), + .CLK(CLK), + .CEA(CEA), .RSTA(RSTA), + .CEB(CEB), .RSTB(RSTB), + .CEC(CEC), .RSTC(RSTC), + .SIGNEDA(SIGNEDA), .SIGNEDB(SIGNEDB), .SIGNEDC(SIGNEDC), + .RSTOUT(RSTOUT), .CEOUT(CEOUT), + .Z(Z) + ); +endmodule + + +module MULTPREADD18X18 #( + parameter REGINPUTA = "REGISTER", + parameter REGINPUTB = "REGISTER", + parameter REGINPUTC = "REGISTER", + parameter REGOUTPUT = "REGISTER", + parameter GSR = "ENABLED", + parameter RESETMODE = "SYNC" +) ( + input [17:0] A, + input [17:0] B, + input [17:0] C, + input CLK, + input CEA, + input RSTA, + input CEB, + input RSTB, + input CEC, + input RSTC, + input SIGNEDA, + input SIGNEDB, + input SIGNEDC, + input RSTOUT, + input CEOUT, + output [35:0] Z +); + OXIDE_DSP_SIM #( + .REGINPUTA(REGINPUTA), + .REGINPUTB(REGINPUTB), + .REGINPUTC(REGINPUTC), + .REGOUTPUT(REGOUTPUT), + .GSR(GSR), + .RESETMODE(RESETMODE), + + .A_WIDTH(18), + .B_WIDTH(18), + .C_WIDTH(18), + .Z_WIDTH(36), + .PREADD_USED(1), + .ADDSUB_USED(0) + ) dsp_i ( + .A(A), .B(B), .C(C), + .CLK(CLK), + .CEA(CEA), .RSTA(RSTA), + .CEB(CEB), .RSTB(RSTB), + .CEC(CEC), .RSTC(RSTC), + .SIGNEDA(SIGNEDA), .SIGNEDB(SIGNEDB), .SIGNEDC(SIGNEDC), + .RSTOUT(RSTOUT), .CEOUT(CEOUT), + .Z(Z) + ); +endmodule + + +module MULTADDSUB18X18 #( + parameter REGINPUTA = "REGISTER", + parameter REGINPUTB = "REGISTER", + parameter REGINPUTC = "REGISTER", + parameter REGADDSUB = "REGISTER", + parameter REGLOADC = "REGISTER", + parameter REGLOADC2 = "REGISTER", + parameter REGCIN = "REGISTER", + parameter REGPIPELINE = "REGISTER", + parameter REGOUTPUT = "REGISTER", + parameter GSR = "ENABLED", + parameter RESETMODE = "SYNC" +) ( + input [17:0] A, + input [17:0] B, + input [53:0] C, + input CLK, + input CEA, + input RSTA, + input CEB, + input RSTB, + input CEC, + input RSTC, + input SIGNED, + input RSTPIPE, + input CEPIPE, + input RSTCTRL, + input CECTRL, + input RSTCIN, + input CECIN, + input LOADC, + input ADDSUB, + output [53:0] Z, + input RSTOUT, + input CEOUT, + input CIN +); + OXIDE_DSP_SIM #( + .REGINPUTA(REGINPUTA), + .REGINPUTB(REGINPUTB), + .REGINPUTC(REGINPUTC), + .REGADDSUB(REGADDSUB), + .REGLOADC(REGLOADC), + .REGLOADC2(REGLOADC2), + .REGCIN(REGCIN), + .REGPIPELINE(REGPIPELINE), + .REGOUTPUT(REGOUTPUT), + .GSR(GSR), + .RESETMODE(RESETMODE), + + .A_WIDTH(18), + .B_WIDTH(18), + .C_WIDTH(54), + .Z_WIDTH(54), + .PREADD_USED(0), + .ADDSUB_USED(1) + ) dsp_i ( + .A(A), .B(B), .C(C), + .CLK(CLK), + .CEA(CEA), .RSTA(RSTA), + .CEB(CEB), .RSTB(RSTB), + .CEC(CEC), .RSTC(RSTC), + .CEPIPE(CEPIPE), .RSTPIPE(RSTPIPE), + .CECTRL(CECTRL), .RSTCTRL(RSTCTRL), + .CECIN(CECIN), .RSTCIN(RSTCIN), + .CIN(CIN), .LOADC(LOADC), .ADDSUB(ADDSUB), + .SIGNEDA(SIGNED), .SIGNEDB(SIGNED), .SIGNEDC(SIGNED), + .RSTOUT(RSTOUT), .CEOUT(CEOUT), + .Z(Z) + ); +endmodule + + +module MULTADDSUB36X36 #( + parameter REGINPUTA = "REGISTER", + parameter REGINPUTB = "REGISTER", + parameter REGINPUTC = "REGISTER", + parameter REGADDSUB = "REGISTER", + parameter REGLOADC = "REGISTER", + parameter REGLOADC2 = "REGISTER", + parameter REGCIN = "REGISTER", + parameter REGPIPELINE = "REGISTER", + parameter REGOUTPUT = "REGISTER", + parameter GSR = "ENABLED", + parameter RESETMODE = "SYNC" +) ( + input [35:0] A, + input [35:0] B, + input [107:0] C, + input CLK, + input CEA, + input RSTA, + input CEB, + input RSTB, + input CEC, + input RSTC, + input SIGNED, + input RSTPIPE, + input CEPIPE, + input RSTCTRL, + input CECTRL, + input RSTCIN, + input CECIN, + input LOADC, + input ADDSUB, + output [107:0] Z, + input RSTOUT, + input CEOUT, + input CIN +); + OXIDE_DSP_SIM #( + .REGINPUTA(REGINPUTA), + .REGINPUTB(REGINPUTB), + .REGINPUTC(REGINPUTC), + .REGADDSUB(REGADDSUB), + .REGLOADC(REGLOADC), + .REGLOADC2(REGLOADC2), + .REGCIN(REGCIN), + .REGPIPELINE(REGPIPELINE), + .REGOUTPUT(REGOUTPUT), + .GSR(GSR), + .RESETMODE(RESETMODE), + + .A_WIDTH(36), + .B_WIDTH(36), + .C_WIDTH(108), + .Z_WIDTH(108), + .PREADD_USED(0), + .ADDSUB_USED(1) + ) dsp_i ( + .A(A), .B(B), .C(C), + .CLK(CLK), + .CEA(CEA), .RSTA(RSTA), + .CEB(CEB), .RSTB(RSTB), + .CEC(CEC), .RSTC(RSTC), + .CEPIPE(CEPIPE), .RSTPIPE(RSTPIPE), + .CECTRL(CECTRL), .RSTCTRL(RSTCTRL), + .CECIN(CECIN), .RSTCIN(RSTCIN), + .CIN(CIN), .LOADC(LOADC), .ADDSUB(ADDSUB), + .SIGNEDA(SIGNED), .SIGNEDB(SIGNED), .SIGNEDC(SIGNED), + .RSTOUT(RSTOUT), .CEOUT(CEOUT), + .Z(Z) + ); +endmodule + +module MULTADDSUB9X9WIDE #( + parameter REGINPUTAB0 = "REGISTER", + parameter REGINPUTAB1 = "REGISTER", + parameter REGINPUTAB2 = "REGISTER", + parameter REGINPUTAB3 = "REGISTER", + parameter REGINPUTC = "REGISTER", + parameter REGADDSUB = "REGISTER", + parameter REGLOADC = "REGISTER", + parameter REGLOADC2 = "REGISTER", + parameter REGPIPELINE = "REGISTER", + parameter REGOUTPUT = "REGISTER", + parameter GSR = "ENABLED", + parameter RESETMODE = "SYNC" +) ( + input [8:0] A0, B0, A1, B1, A2, B2, A3, B3, + input [53:0] C, + input CLK, + input CEA0A1, CEA2A3, + input RSTA0A1, RSTA2A3, + input CEB0B1, CEB2B3, + input RSTB0B1, RSTB2B3, + input CEC, RSTC, + input CECTRL, RSTCTRL, + input SIGNED, + input RSTPIPE, CEPIPE, + input RSTOUT, CEOUT, + input LOADC, + input [3:0] ADDSUB, + output [53:0] Z +); + wire [17:0] m0, m1, m2, m3; + + localparam M_WIDTH = 18; + localparam Z_WIDTH = 54; + + MULT9X9 #( + .REGINPUTA(REGINPUTAB0), .REGINPUTB(REGINPUTAB0), .REGOUTPUT(REGPIPELINE), .GSR(GSR), .RESETMODE(RESETMODE) + ) m9_0 ( + .A(A0), .B(B0), .SIGNEDA(SIGNED), .SIGNEDB(SIGNED), + .CLK(CLK), + .CEA(CEA0A1), .RSTA(RSTA0A1), + .CEB(CEB0B1), .RSTB(RSTB0B1), + .CEOUT(CEPIPE), .RSTOUT(RSTPIPE), + .Z(m0) + ); + MULT9X9 #( + .REGINPUTA(REGINPUTAB1), .REGINPUTB(REGINPUTAB1), .REGOUTPUT(REGPIPELINE), .GSR(GSR), .RESETMODE(RESETMODE) + ) m9_1 ( + .A(A1), .B(B1), .SIGNEDA(SIGNED), .SIGNEDB(SIGNED), + .CLK(CLK), + .CEA(CEA0A1), .RSTA(RSTA0A1), + .CEB(CEB0B1), .RSTB(RSTB0B1), + .CEOUT(CEPIPE), .RSTOUT(RSTPIPE), + .Z(m1) + ); + MULT9X9 #( + .REGINPUTA(REGINPUTAB2), .REGINPUTB(REGINPUTAB2), .REGOUTPUT(REGPIPELINE), .GSR(GSR), .RESETMODE(RESETMODE) + ) m9_2 ( + .A(A2), .B(B2), .SIGNEDA(SIGNED), .SIGNEDB(SIGNED), + .CLK(CLK), + .CEA(CEA2A3), .RSTA(RSTA2A3), + .CEB(CEB2B3), .RSTB(RSTB2B3), + .CEOUT(CEPIPE), .RSTOUT(RSTPIPE), + .Z(m2) + ); + MULT9X9 #( + .REGINPUTA(REGINPUTAB3), .REGINPUTB(REGINPUTAB3), .REGOUTPUT(REGPIPELINE), .GSR(GSR), .RESETMODE(RESETMODE) + ) m9_3 ( + .A(A3), .B(B3), .SIGNEDA(SIGNED), .SIGNEDB(SIGNED), + .CLK(CLK), + .CEA(CEA2A3), .RSTA(RSTA2A3), + .CEB(CEB2B3), .RSTB(RSTB2B3), + .CEOUT(CEPIPE), .RSTOUT(RSTPIPE), + .Z(m3) + ); + + wire [53:0] c_r, c_r2; + wire [3:0] addsub_r, addsub_r2; + wire sgd_r, sgd_r2, csgd_r, csgd_r2; + wire loadc_r, loadc_r2; + + OXIDE_DSP_REG #(5, REGADDSUB, RESETMODE) addsub_reg(CLK, CECTRL, RSTCTRL, {SIGNED, ADDSUB}, {sgd_r, addsub_r}); + OXIDE_DSP_REG #(5, REGADDSUB, RESETMODE) addsub2_reg(CLK, CECTRL, RSTCTRL, {sgd_r, addsub_r}, {sgd_r2, addsub_r2}); + + OXIDE_DSP_REG #(1, REGLOADC, RESETMODE) loadc_reg(CLK, CECTRL, RSTCTRL, LOADC, loadc_r); + OXIDE_DSP_REG #(1, REGLOADC2, RESETMODE) loadc2_reg(CLK, CECTRL, RSTCTRL, loadc_r, loadc_r2); + + OXIDE_DSP_REG #(55, REGINPUTC, RESETMODE) c_reg(CLK, CEC, RSTC, {SIGNED, C}, {csgd_r, c_r}); + OXIDE_DSP_REG #(55, REGPIPELINE, RESETMODE) c2_reg(CLK, CEC, RSTC, {csgd_r, c_r}, {csgd_r2, c_r2}); + + + wire [18:0] m0_ext, m1_ext, m2_ext, m3_ext; + + assign m0_ext = {sgd_r2 ? m0[M_WIDTH-1] : 1'b0, m0}; + assign m1_ext = {sgd_r2 ? m1[M_WIDTH-1] : 1'b0, m1}; + assign m2_ext = {sgd_r2 ? m2[M_WIDTH-1] : 1'b0, m2}; + assign m3_ext = {sgd_r2 ? m3[M_WIDTH-1] : 1'b0, m3}; + + wire [18:0] s0 = addsub_r2[2] ? (m0_ext - m1_ext) : (m0_ext + m1_ext); + wire [18:0] s1 = addsub_r2[3] ? (m2_ext - m3_ext) : (m2_ext + m3_ext); + + wire [53:0] s0_ext = {{(54-19){sgd_r2 ? s0[18] : 1'b0}}, s0}; + wire [53:0] s1_ext = {{(54-19){sgd_r2 ? s1[18] : 1'b0}}, s1}; + + wire [53:0] c_op = loadc_r2 ? c_r2 : Z; + + // The diagram in the docs is wrong! It is not two cascaded 2-input add/subs as shown, + // but a three-input unit with negation controls on two inputs (i.e. addsub_r2[0] + // negates s1 not (s1 +/- s0)) + wire [53:0] z_d = c_op + (addsub_r2[0] ? -s1_ext : s1_ext) + (addsub_r2[1] ? -s0_ext : s0_ext); + + OXIDE_DSP_REG #(Z_WIDTH, REGOUTPUT, RESETMODE) z_reg(CLK, CEOUT, RSTOUT, z_d, Z); + +endmodule diff --git a/resources/netlist/resources/kernel/share/nexus/cells_xtra.v b/resources/netlist/resources/kernel/share/nexus/cells_xtra.v new file mode 100644 index 0000000..6cf3a64 --- /dev/null +++ b/resources/netlist/resources/kernel/share/nexus/cells_xtra.v @@ -0,0 +1,10389 @@ +// Created by cells_xtra.py from Lattice models + +module ACC54 (...); + parameter SIGN = "DISABLED"; + parameter M9ADDSUB_CTRL = "ADDITION"; + parameter ADDSUB_CTRL = "ADD_ADD_CTRL_54_BIT_ADDER"; + parameter STATICOPCODE_EN = "DISABLED"; + parameter OUTREGBYPS = "REGISTER"; + parameter GSR = "ENABLED"; + parameter PROGCONST = "0b000000000000000000000000000000000000000000000000000000"; + parameter CONSTSEL = "BYPASS"; + parameter DSPCASCADE = "DISABLED"; + parameter ACC108CASCADE = "BYPASSCASCADE"; + parameter ACCUMODE = "MODE0"; + parameter ACCUBYPS = "USED"; + parameter CREGBYPS1 = "REGISTER"; + parameter CREGBYPS2 = "REGISTER"; + parameter CREGBYPS3 = "REGISTER"; + parameter CINREGBYPS1 = "REGISTER"; + parameter CINREGBYPS2 = "REGISTER"; + parameter CINREGBYPS3 = "REGISTER"; + parameter LOADREGBYPS1 = "REGISTER"; + parameter LOADREGBYPS2 = "REGISTER"; + parameter LOADREGBYPS3 = "REGISTER"; + parameter M9ADDSUBREGBYPS1 = "REGISTER"; + parameter M9ADDSUBREGBYPS2 = "REGISTER"; + parameter M9ADDSUBREGBYPS3 = "REGISTER"; + parameter ADDSUBSIGNREGBYPS1 = "REGISTER"; + parameter ADDSUBSIGNREGBYPS2 = "REGISTER"; + parameter ADDSUBSIGNREGBYPS3 = "REGISTER"; + parameter ROUNDHALFUP = "DISABLED"; + parameter ROUNDRTZI = "ROUND_TO_ZERO"; + parameter ROUNDBIT = "ROUND_TO_BIT0"; + parameter CASCOUTREGBYPS = "REGISTER"; + parameter SFTEN = "DISABLED"; + parameter RESET = "SYNC"; + input [3:0] SFTCTRL; + input [53:0] DSPIN; + input [71:0] PP; + input [53:0] CINPUT; + input LOAD; + input [1:0] M9ADDSUB; + input [1:0] ADDSUB; + input CIN; + input [1:0] CASIN; + input CEO; + input RSTO; + input CEC; + input RSTC; + input CLK; + input SIGNEDI; + output [35:0] SUM1; + output [35:0] SUM0; + output [53:0] DSPOUT; + output [1:0] CASCOUT; + input ROUNDEN; + input CECIN; + input CECTRL; + input RSTCIN; + input RSTCTRL; +endmodule + +module ADC (...); + parameter ADC_ENP = "ENABLED"; + parameter CLK_DIV = "2"; + parameter CTLCOMPSW1 = "DISABLED"; + parameter CTLCOMPSW2 = "DISABLED"; + parameter CTLCOMPSW3 = "DISABLED"; + parameter DF = "STRAIGHT_BINARY"; + parameter EN_COMP1 = "ENABLED"; + parameter EN_COMP2 = "ENABLED"; + parameter EN_COMP3 = "ENABLED"; + parameter OMA = "BIPOLAR"; + parameter OMB = "BIPOLAR"; + parameter REFBUFAEN = "ENABLED"; + parameter REFBUFBEN = "ENABLED"; + parameter SLEEP = "DISABLED"; + parameter VREFACFG = "1P0_TO_1P2"; + parameter VREFASEL = "INTERNAL"; + parameter VREFBCFG = "1P0_TO_1P2"; + parameter VREFBSEL = "INTERNAL"; + (* iopad_external_pin *) + input DN0; + (* iopad_external_pin *) + input DN1; + (* iopad_external_pin *) + input DP0; + (* iopad_external_pin *) + input DP1; + input ADCEN; + input CAL; + output CALRDY; + input CHAEN; + input [3:0] CHASEL; + input CHBEN; + input [3:0] CHBSEL; + input CLKDCLK; + input CLKFAB; + output COG; + input COMP1IN; + input COMP1IP; + output COMP1OL; + input COMP2IN; + input COMP2IP; + output COMP2OL; + input COMP3IN; + input COMP3IP; + output COMP3OL; + input CONVSTOP; + output [11:0] DA; + output [11:0] DB; + output EOC; + input [15:0] GPION; + input [15:0] GPIOP; + input RESETN; + input RSTN; + input SOC; + output COMP1O; + output COMP2O; + output COMP3O; +endmodule + +module ALUREG (...); + parameter ALURST_ACTIVELOW = "DISABLE"; + parameter GSR = "ENABLED"; + parameter INREG = "DISABLE"; + parameter MULFXP_ROUND = "ENABLE"; + parameter OUTREG = "DISABLE"; + parameter REGRST_ACTIVELOW = "DISABLE"; + parameter RETAIN = "ENABLE"; + parameter RFASYNC_RD = "SYNC_RD"; + parameter RFR0_RO = "R0READONLY"; + parameter RFUNALIA_WR = "DISABLE"; + parameter RFWCLK_INV = "SIG"; + input ALUCLK; + output ALUFLAGC; + output ALUFLAGV; + output ALUFLAGZ; + input ALUFORWARDA; + input ALUFORWARDB; + input ALUIREGEN; + input ALUOREGEN; + input ALURST; + input [31:0] DATAA; + input [31:0] DATAB; + input [4:0] DATAC; + input [6:0] OPC; + input OPCCUSTOM; + input [4:0] RADDRA; + input [4:0] RADDRB; + output [31:0] RDATAA; + output [31:0] RDATAB; + input REGCLK; + input REGCLKEN; + input REGRST; + output [31:0] RESULT; + input [4:0] WADDR; + input [1:0] WDROTATE; + input WDSIGNEXT; + input [1:0] WDSIZE; + input [31:0] WDATA; + input WREN; +endmodule + +(* keep *) +module BB_ADC (...); + (* iopad_external_pin *) + inout IOPAD; + output INADC; +endmodule + +(* keep *) +module BB_CDR (...); + (* iopad_external_pin *) + inout IOPAD; + output INADC; +endmodule + +(* keep *) +module BB_I3C_A (...); + (* iopad_external_pin *) + inout IOPAD; + output PADDI; + input PADDO; + input PADDT; + input I3CRESEN; + input I3CWKPU; +endmodule + +module BFD1P3KX (...); + parameter GSR = "ENABLED"; + parameter OUTSET = "RESET"; + parameter INSET = "RESET"; + parameter TSSET = "RESET"; + input DOUT; + input DIN; + input DT; + input CEOUT; + input CLKOUT; + input SROUT; + input CEIN; + input CLKIN; + input SRIN; + output QOUT; + output QIN; + output QT; +endmodule + +module BFD1P3LX (...); + parameter GSR = "ENABLED"; + parameter OUTSET = "RESET"; + parameter INSET = "RESET"; + parameter TSSET = "RESET"; + input DOUT; + input DIN; + input DT; + input CEOUT; + input CLKOUT; + input SROUT; + input CEIN; + input CLKIN; + input SRIN; + output QOUT; + output QIN; + output QT; +endmodule + +(* keep *) +module BNKREF18 (...); + parameter BANK = "0b0000"; + parameter STANDBY_DIFFIO = "DISABLED"; + parameter STANDBY_INR = "DISABLED"; + input STDBYINR; + input STDBYDIF; + output [6:0] PVTCODE; +endmodule + +(* keep *) +module CONFIG_LMMI (...); + parameter LMMI_EN = "DIS"; + input LMMICLK; + input LMMIREQUEST; + input LMMIWRRD_N; + input [7:0] LMMIOFFSET; + input [7:0] LMMIWDATA; + output [7:0] LMMIRDATA; + output LMMIREADY; + output LMMIRDATAVALID; + input LMMIRESETN; + input RSTSMCLK; + input SMCLK; +endmodule + +module DDRDLL (...); + parameter GSR = "ENABLED"; + parameter ENA_ROUNDOFF = "ENABLED"; + parameter FORCE_MAX_DELAY = "CODE_OR_LOCK_FROM_DLL_LOOP"; + output [8:0] CODE; + input FREEZE; + output LOCK; + input CLKIN; + input RST; + output [8:0] DCNTL; + input UDDCNTL_N; +endmodule + +module DELAYA (...); + parameter DEL_MODE = "USER_DEFINED"; + parameter DEL_VALUE = "0"; + parameter COARSE_DELAY_MODE = "STATIC"; + parameter COARSE_DELAY = "0NS"; + parameter EDGE_MONITOR = "DISABLED"; + parameter WAIT_FOR_EDGE = "DISABLED"; + input A; + input LOAD_N; + input MOVE; + input DIRECTION; + input COARSE0; + input COARSE1; + input RANKSELECT; + input RANKENABLE; + input RANK0UPDATE; + input RANK1UPDATE; + output Z; + output EDETERR; + output CFLAG; +endmodule + +module DELAYB (...); + parameter DEL_VALUE = "0"; + parameter COARSE_DELAY = "0NS"; + parameter DEL_MODE = "USER_DEFINED"; + input A; + output Z; +endmodule + +(* keep *) +module DIFFIO18 (...); + parameter PULLMODE = "DOWN"; + parameter ENADC_IN = "DISABLED"; + parameter MIPI = "DISABLED"; + input PADDO; + input DOLP; + (* iopad_external_pin *) + inout IOPAD; + output PADDI; + output INLP; + input PADDT; + output INADC; + input HSRXEN; + input HSTXEN; +endmodule + +module DLLDEL (...); + parameter ADJUST = "0"; + parameter DEL_ADJUST = "PLUS"; + parameter ENABLE = "ENABLED"; + input CLKIN; + output CLKOUT; + input [8:0] CODE; + output COUT; + input DIR; + input LOAD_N; + input MOVE; +endmodule + +module DP16K_MODE (...); + parameter DATA_WIDTH_A = "X18"; + parameter DATA_WIDTH_B = "X18"; + parameter OUTREG_A = "BYPASSED"; + parameter OUTREG_B = "BYPASSED"; + parameter GSR = "ENABLED"; + parameter RESETMODE_A = "SYNC"; + parameter RESETMODE_B = "SYNC"; + parameter INITVAL_00 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_01 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_02 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_03 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_04 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_05 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_06 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_07 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_08 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_09 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_0A = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_0B = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_0C = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_0D = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_0E = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_0F = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_10 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_11 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_12 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_13 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_14 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_15 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_16 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_17 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_18 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_19 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_1A = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_1B = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_1C = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_1D = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_1E = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_1F = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_20 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_21 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_22 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_23 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_24 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_25 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_26 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_27 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_28 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_29 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_2A = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_2B = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_2C = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_2D = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_2E = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_2F = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_30 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_31 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_32 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_33 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_34 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_35 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_36 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_37 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_38 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_39 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_3A = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_3B = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_3C = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_3D = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_3E = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_3F = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter CSDECODE_A = "000"; + parameter CSDECODE_B = "000"; + parameter ASYNC_RST_RELEASE_A = "SYNC"; + parameter ASYNC_RST_RELEASE_B = "SYNC"; + parameter INIT_DATA = "STATIC"; + input DIA0; + input DIA1; + input DIA2; + input DIA3; + input DIA4; + input DIA5; + input DIA6; + input DIA7; + input DIA8; + input DIA9; + input DIA10; + input DIA11; + input DIA12; + input DIA13; + input DIA14; + input DIA15; + input DIA16; + input DIA17; + input DIB0; + input DIB1; + input DIB2; + input DIB3; + input DIB4; + input DIB5; + input DIB6; + input DIB7; + input DIB8; + input DIB9; + input DIB10; + input DIB11; + input DIB12; + input DIB13; + input DIB14; + input DIB15; + input DIB16; + input DIB17; + input ADA0; + input ADA1; + input ADA2; + input ADA3; + input ADA4; + input ADA5; + input ADA6; + input ADA7; + input ADA8; + input ADA9; + input ADA10; + input ADA11; + input ADA12; + input ADA13; + input ADB0; + input ADB1; + input ADB2; + input ADB3; + input ADB4; + input ADB5; + input ADB6; + input ADB7; + input ADB8; + input ADB9; + input ADB10; + input ADB11; + input ADB12; + input ADB13; + input CLKA; + input CLKB; + input CEA; + input CEB; + input WEA; + input WEB; + input CSA0; + input CSA1; + input CSA2; + input CSB0; + input CSB1; + input CSB2; + input RSTA; + input RSTB; + output DOA0; + output DOA1; + output DOA2; + output DOA3; + output DOA4; + output DOA5; + output DOA6; + output DOA7; + output DOA8; + output DOA9; + output DOA10; + output DOA11; + output DOA12; + output DOA13; + output DOA14; + output DOA15; + output DOA16; + output DOA17; + output DOB0; + output DOB1; + output DOB2; + output DOB3; + output DOB4; + output DOB5; + output DOB6; + output DOB7; + output DOB8; + output DOB9; + output DOB10; + output DOB11; + output DOB12; + output DOB13; + output DOB14; + output DOB15; + output DOB16; + output DOB17; +endmodule + +module DP16K (...); + parameter DATA_WIDTH_A = "X18"; + parameter DATA_WIDTH_B = "X18"; + parameter OUTREG_A = "BYPASSED"; + parameter OUTREG_B = "BYPASSED"; + parameter GSR = "ENABLED"; + parameter RESETMODE_A = "SYNC"; + parameter RESETMODE_B = "SYNC"; + parameter INITVAL_00 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_01 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_02 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_03 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_04 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_05 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_06 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_07 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_08 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_09 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_0A = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_0B = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_0C = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_0D = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_0E = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_0F = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_10 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_11 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_12 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_13 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_14 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_15 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_16 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_17 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_18 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_19 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_1A = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_1B = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_1C = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_1D = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_1E = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_1F = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_20 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_21 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_22 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_23 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_24 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_25 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_26 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_27 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_28 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_29 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_2A = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_2B = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_2C = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_2D = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_2E = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_2F = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_30 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_31 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_32 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_33 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_34 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_35 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_36 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_37 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_38 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_39 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_3A = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_3B = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_3C = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_3D = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_3E = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_3F = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter CSDECODE_A = "000"; + parameter CSDECODE_B = "000"; + parameter ASYNC_RST_RELEASE_A = "SYNC"; + parameter ASYNC_RST_RELEASE_B = "SYNC"; + parameter INIT_DATA = "STATIC"; + input [17:0] DIA; + input [17:0] DIB; + input [13:0] ADA; + input [13:0] ADB; + input CLKA; + input CLKB; + input CEA; + input CEB; + input WEA; + input WEB; + input [2:0] CSA; + input [2:0] CSB; + input RSTA; + input RSTB; + output [17:0] DOA; + output [17:0] DOB; +endmodule + +(* keep *) +module DPHY (...); + parameter GSR = "ENABLED"; + parameter AUTO_PD_EN = "POWERED_UP"; + parameter CFG_NUM_LANES = "ONE_LANE"; + parameter CM = "0b00000000"; + parameter CN = "0b00000"; + parameter CO = "0b000"; + parameter CONT_CLK_MODE = "DISABLED"; + parameter DESKEW_EN = "DISABLED"; + parameter DSI_CSI = "CSI2_APP"; + parameter EN_CIL = "CIL_ENABLED"; + parameter HSEL = "DISABLED"; + parameter LANE0_SEL = "LANE_0"; + parameter LOCK_BYP = "GATE_TXBYTECLKHS"; + parameter MASTER_SLAVE = "SLAVE"; + parameter PLLCLKBYPASS = "REGISTERED"; + parameter RSEL = "0b00"; + parameter RXCDRP = "0b00"; + parameter RXDATAWIDTHHS = "0b00"; + parameter RXLPRP = "0b000"; + parameter TEST_ENBL = "0b000000"; + parameter TEST_PATTERN = "0b00000000000000000000000000000000"; + parameter TST = "0b1001"; + parameter TXDATAWIDTHHS = "0b00"; + parameter U_PRG_HS_PREPARE = "0b00"; + parameter U_PRG_HS_TRAIL = "0b000000"; + parameter U_PRG_HS_ZERO = "0b000000"; + parameter U_PRG_RXHS_SETTLE = "0b000000"; + parameter UC_PRG_HS_PREPARE = "1P0_TXCLKESC"; + parameter UC_PRG_HS_TRAIL = "0b00000"; + parameter UC_PRG_HS_ZERO = "0b0000000"; + parameter UC_PRG_RXHS_SETTLE = "0b000000"; + input LMMICLK; + input LMMIRESET_N; + input LMMIREQUEST; + input LMMIWRRD_N; + input [4:0] LMMIOFFSET; + input [3:0] LMMIWDATA; + output [3:0] LMMIRDATA; + output LMMIRDATAVALID; + output LMMIREADY; + input BITCKEXT; + (* iopad_external_pin *) + inout CKN; + (* iopad_external_pin *) + inout CKP; + input CLKREF; + output [1:0] D0ACTIVE; + output [9:0] D0BYTCNT; + output [9:0] D0ERRCNT; + output [1:0] D0PASS; + output [1:0] D0VALID; + output [1:0] D1ACTIVE; + output [9:0] D1BYTCNT; + output [9:0] D1ERRCNT; + output [1:0] D1PASS; + output [1:0] D1VALID; + output [1:0] D2ACTIVE; + output [9:0] D2BYTCNT; + output [9:0] D2ERRCNT; + output [1:0] D2PASS; + output [1:0] D2VALID; + output [1:0] D3ACTIVE; + output [9:0] D3BYTCNT; + output [9:0] D3ERRCNT; + output [1:0] D3PASS; + output [1:0] D3VALID; + output [9:0] DCTSTOUT; + (* iopad_external_pin *) + inout DN0; + (* iopad_external_pin *) + inout DN1; + (* iopad_external_pin *) + inout DN2; + (* iopad_external_pin *) + inout DN3; + (* iopad_external_pin *) + inout DP0; + (* iopad_external_pin *) + inout DP1; + (* iopad_external_pin *) + inout DP2; + (* iopad_external_pin *) + inout DP3; + output LOCK; + input PDDPHY; + input PDPLL; + input SCCLKIN; + output UDIR; + input UED0THEN; + output UERCLP0; + output UERCLP1; + output UERCTRL; + output UERE; + output UERSTHS; + output UERSSHS; + output UERSE; + input UFRXMODE; + input UTXMDTX; + output URXACTHS; + output URXCKE; + input URXCKINE; + output [7:0] URXDE; + output [15:0] URXDHS; + output URXLPDTE; + output URXSKCHS; + output URXDRX; + output [3:0] URXSHS; + output URE0D3DP; + output URE1D3DN; + output URE2CKDP; + output URE3CKDN; + output URXULPSE; + output URXVDE; + output [3:0] URXVDHS; + output USSTT; + input UTDIS; + input UTXCKE; + input UDE0D0TN; + input UDE1D1TN; + input UDE2D2TN; + input UDE3D3TN; + input UDE4CKTN; + input UDE5D0RN; + input UDE6D1RN; + input UDE7D2RN; + input [31:0] UTXDHS; + input UTXENER; + output UTXRRS; + output UTXRYP; + output UTXRYSK; + input UTXRD0EN; + input UTRD0SEN; + input UTXSKD0N; + input UTXTGE0; + input UTXTGE1; + input UTXTGE2; + input UTXTGE3; + input UTXULPSE; + input UTXUPSEX; + input UTXVDE; + input [3:0] UTXWVDHS; + output UUSAN; + output U1DIR; + input U1ENTHEN; + output U1ERCLP0; + output U1ERCLP1; + output U1ERCTRL; + output U1ERE; + output U1ERSTHS; + output U1ERSSHS; + output U1ERSE; + input U1FRXMD; + input U1FTXST; + output U1RXATHS; + output U1RXCKE; + output [7:0] U1RXDE; + output [15:0] U1RXDHS; + output U1RXDTE; + output U1RXSKS; + output U1RXSK; + output [3:0] U1RXSHS; + output U1RE0D; + output U1RE1CN; + output U1RE2D; + output U1RE3N; + output U1RXUPSE; + output U1RXVDE; + output [3:0] U1RXVDHS; + output U1SSTT; + input U1TDIS; + input U1TREQ; + input U1TDE0D3; + input U1TDE1CK; + input U1TDE2D0; + input U1TDE3D1; + input U1TDE4D2; + input U1TDE5D3; + input U1TDE6; + input U1TDE7; + input [31:0] U1TXDHS; + input U1TXLPD; + output U1TXRYE; + output U1TXRY; + output U1TXRYSK; + input U1TXREQ; + input U1TXREQH; + input U1TXSK; + input U1TXTGE0; + input U1TXTGE1; + input U1TXTGE2; + input U1TXTGE3; + input U1TXUPSE; + input U1TXUPSX; + input U1TXVDE; + input [3:0] U1TXWVHS; + output U1USAN; + output U2DIR; + input U2END2; + output U2ERCLP0; + output U2ERCLP1; + output U2ERCTRL; + output U2ERE; + output U2ERSTHS; + output U2ERSSHS; + output U2ERSE; + input U2FRXMD; + input U2FTXST; + output U2RXACHS; + output U2RXCKE; + output [7:0] U2RXDE; + output [15:0] U2RXDHS; + output U2RPDTE; + output U2RXSK; + output U2RXSKC; + output [3:0] U2RXSHS; + output U2RE0D2; + output U2RE1D2; + output U2RE2D3; + output U2RE3D3; + output U2RXUPSE; + output U2RXVDE; + output [3:0] U2RXVDHS; + output U2SSTT; + input U2TDIS; + input U2TREQ; + input U2TDE0D0; + input U2TDE1D1; + input U2TDE2D2; + input U2TDE3D3; + input U2TDE4CK; + input U2TDE5D0; + input U2TDE6D1; + input U2TDE7D2; + input [31:0] U2TXDHS; + input U2TPDTE; + output U2TXRYE; + output U2TXRYH; + output U2TXRYSK; + input U2TXREQ; + input U2TXREQH; + input U2TXSKC; + input U2TXTGE0; + input U2TXTGE1; + input U2TXTGE2; + input U2TXTGE3; + input U2TXUPSE; + input U2TXUPSX; + input U2TXVDE; + input [3:0] U2TXWVHS; + output U2USAN; + output U3DIR; + input U3END3; + output U3ERCLP0; + output U3ERCLP1; + output U3ERCTRL; + output U3ERE; + output U3ERSTHS; + output U3ERSSHS; + output U3ERSE; + input U3FRXMD; + input U3FTXST; + output U3RXATHS; + output U3RXCKE; + output [7:0] U3RXDE; + output [15:0] U3RXDHS; + output U3RPDTE; + output U3RXSK; + output U3RXSKC; + output [3:0] U3RXSHS; + output U3RE0CK; + output U3RE1CK; + output U3RE2; + output U3RE3; + output U3RXUPSE; + output U3RXVDE; + output [3:0] U3RXVDHS; + output U3SSTT; + input U3TDISD2; + input U3TREQD2; + input U3TDE0D3; + input U3TDE1D0; + input U3TDE2D1; + input U3TDE3D2; + input U3TDE4D3; + input U3TDE5CK; + input U3TDE6; + input U3TDE7; + input [31:0] U3TXDHS; + input U3TXLPDT; + output U3TXRY; + output U3TXRYHS; + output U3TXRYSK; + input U3TXREQ; + input U3TXREQH; + input U3TXSKC; + input U3TXTGE0; + input U3TXTGE1; + input U3TXTGE2; + input U3TXTGE3; + input U3TXULPS; + input U3TXUPSX; + input U3TXVD3; + input [3:0] U3TXWVHS; + output U3USAN; + input UCENCK; + output UCRXCKAT; + output UCRXUCKN; + output UCSSTT; + input UCTXREQH; + input UCTXUPSC; + input UCTXUPSX; + output UCUSAN; + input LTSTEN; + input [1:0] LTSTLANE; + output URWDCKHS; + input UTRNREQ; + output UTWDCKHS; + output UCRXWCHS; + output CLKLBACT; +endmodule + +module DPSC512K (...); + parameter OUTREG_A = "NO_REG"; + parameter OUTREG_B = "NO_REG"; + parameter GSR = "ENABLED"; + parameter RESETMODE = "SYNC"; + parameter INITVAL_00 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_01 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_02 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_03 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_04 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_05 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_06 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_07 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_08 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_09 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_0A = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_0B = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_0C = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_0D = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_0E = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_0F = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_10 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_11 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_12 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_13 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_14 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_15 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_16 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_17 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_18 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_19 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_1A = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_1B = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_1C = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_1D = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_1E = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_1F = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_20 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_21 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_22 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_23 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_24 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_25 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_26 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_27 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_28 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_29 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_2A = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_2B = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_2C = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_2D = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_2E = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_2F = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_30 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_31 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_32 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_33 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_34 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_35 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_36 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_37 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_38 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_39 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_3A = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_3B = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_3C = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_3D = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_3E = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_3F = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_40 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_41 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_42 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_43 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_44 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_45 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_46 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_47 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_48 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_49 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_4A = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_4B = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_4C = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_4D = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_4E = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_4F = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_50 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_51 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_52 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_53 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_54 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_55 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_56 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_57 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_58 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_59 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_5A = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_5B = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_5C = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_5D = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_5E = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_5F = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_60 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_61 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_62 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_63 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_64 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_65 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_66 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_67 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_68 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_69 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_6A = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_6B = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_6C = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_6D = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_6E = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_6F = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_70 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_71 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_72 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_73 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_74 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_75 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_76 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_77 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_78 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_79 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_7A = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_7B = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_7C = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_7D = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_7E = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_7F = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter ASYNC_RESET_RELEASE = "SYNC"; + parameter ECC_BYTE_SEL = "ECC_EN"; + input [31:0] DIA; + input [31:0] DIB; + input [13:0] ADA; + input [13:0] ADB; + input CLK; + input CEA; + input CEB; + input WEA; + input WEB; + input CSA; + input CSB; + input RSTA; + input RSTB; + input [3:0] BENA_N; + input [3:0] BENB_N; + input CEOUTA; + input CEOUTB; + output [31:0] DOA; + output [31:0] DOB; + output [1:0] ERRDECA; + output [1:0] ERRDECB; +endmodule + +module DQSBUF (...); + parameter GSR = "ENABLED"; + parameter ENABLE_FIFO = "DISABLED"; + parameter FORCE_READ = "DISABLED"; + parameter FREE_WHEEL = "DDR"; + parameter MODX = "NOT_USED"; + parameter MT_EN_READ = "DISABLED"; + parameter MT_EN_WRITE = "DISABLED"; + parameter MT_EN_WRITE_LEVELING = "DISABLED"; + parameter RD_PNTR = "0b000"; + parameter READ_ENABLE = "DISABLED"; + parameter RX_CENTERED = "ENABLED"; + parameter S_READ = "0"; + parameter S_WRITE = "0"; + parameter SIGN_READ = "POSITIVE"; + parameter SIGN_WRITE = "POSITIVE"; + parameter UPDATE_QU = "UP1_AND_UP0_SAME"; + parameter WRITE_ENABLE = "DISABLED"; + parameter SEL_READ_BIT_ENABLE_CYCLES = "NORMAL"; + parameter BYPASS_WR_LEVEL_SMTH_LATCH = "SMOOTHING_PATH"; + parameter BYPASS_WR_SMTH_LATCH = "SMOOTHING_PATH"; + parameter BYPASS_READ_SMTH_LATCH = "SMOOTHING_PATH"; + output BTDETECT; + output BURSTDETECT; + output DATAVALID; + input DQSI; + output DQSW; + output DQSWRD; + input PAUSE; + input [3:0] RDCLKSEL; + input RDDIR; + input RDLOADN; + output [2:0] RDPNTR; + input [3:0] READ; + output READCOUT; + input READMOVE; + input RST; + input SCLK; + input SELCLK; + output DQSR90; + output DQSW270; + output WRCOUT; + input WRDIR; + input WRLOAD_N; + output WRLVCOUT; + input WRLVDIR; + input WRLVLOAD_N; + input WRLVMOVE; + input WRMOVE; + output [2:0] WRPNTR; + input ECLKIN; + input RSTSMCNT; + input [8:0] DLLCODE; +endmodule + +module EBR_CORE (...); + parameter INIT_DATA = "STATIC"; + parameter DATA_WIDTH_A = "X36"; + parameter DATA_WIDTH_B = "X36"; + parameter REGMODE_A = "BYPASSED"; + parameter REGMODE_B = "BYPASSED"; + parameter GSR = "ENABLED"; + parameter CSDECODE_A = "000"; + parameter CSDECODE_B = "000"; + parameter WID = "0b00000000000"; + parameter RESETMODE_A = "SYNC"; + parameter ASYNC_RESET_RELEASE_A = "SYNC"; + parameter RESETMODE_B = "SYNC"; + parameter ASYNC_RESET_RELEASE_B = "SYNC"; + parameter ECC = "DISABLED"; + parameter EBR_MODE = "DP"; + parameter FULL = "0b11111111100000"; + parameter ALMOST_FULL = "0b00000000000000"; + parameter EMPTY = "0b11111"; + parameter ALMOST_EMPTY = "0b00000000000000"; + parameter INITVAL_00 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_01 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_02 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_03 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_04 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_05 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_06 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_07 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_08 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_09 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_0A = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_0B = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_0C = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_0D = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_0E = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_0F = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_10 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_11 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_12 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_13 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_14 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_15 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_16 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_17 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_18 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_19 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_1A = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_1B = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_1C = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_1D = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_1E = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_1F = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_20 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_21 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_22 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_23 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_24 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_25 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_26 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_27 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_28 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_29 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_2A = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_2B = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_2C = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_2D = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_2E = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_2F = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_30 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_31 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_32 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_33 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_34 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_35 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_36 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_37 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_38 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_39 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_3A = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_3B = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_3C = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_3D = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_3E = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_3F = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + input DIA0; + input DIA1; + input DIA2; + input DIA3; + input DIA4; + input DIA5; + input DIA6; + input DIA7; + input DIA8; + input DIA9; + input DIA10; + input DIA11; + input DIA12; + input DIA13; + input DIA14; + input DIA15; + input DIA16; + input DIA17; + input DIB0; + input DIB1; + input DIB2; + input DIB3; + input DIB4; + input DIB5; + input DIB6; + input DIB7; + input DIB8; + input DIB9; + input DIB10; + input DIB11; + input DIB12; + input DIB13; + input DIB14; + input DIB15; + input DIB16; + input DIB17; + input ADA0; + input ADA1; + input ADA2; + input ADA3; + input ADA4; + input ADA5; + input ADA6; + input ADA7; + input ADA8; + input ADA9; + input ADA10; + input ADA11; + input ADA12; + input ADA13; + input ADB0; + input ADB1; + input ADB2; + input ADB3; + input ADB4; + input ADB5; + input ADB6; + input ADB7; + input ADB8; + input ADB9; + input ADB10; + input ADB11; + input ADB12; + input ADB13; + input CLKA; + input CLKB; + input WEA; + input WEB; + input CEA; + input CEB; + input RSTA; + input RSTB; + input CSA0; + input CSA1; + input CSA2; + input CSB0; + input CSB1; + input CSB2; + output FULLF; + output AFULL; + output EMPTYF; + output AEMPTY; + output DOA0; + output DOA1; + output DOA2; + output DOA3; + output DOA4; + output DOA5; + output DOA6; + output DOA7; + output DOA8; + output DOA9; + output DOA10; + output DOA11; + output DOA12; + output DOA13; + output DOA14; + output DOA15; + output DOA16; + output DOA17; + output DOB0; + output DOB1; + output DOB2; + output DOB3; + output DOB4; + output DOB5; + output DOB6; + output DOB7; + output DOB8; + output DOB9; + output DOB10; + output DOB11; + output DOB12; + output DOB13; + output DOB14; + output DOB15; + output DOB16; + output DOB17; + output ONEERR; + output TWOERR; +endmodule + +module EBR (...); + parameter INIT_DATA = "STATIC"; + parameter DATA_WIDTH_A = "X36"; + parameter DATA_WIDTH_B = "X36"; + parameter REGMODE_A = "BYPASSED"; + parameter REGMODE_B = "BYPASSED"; + parameter GSR = "ENABLED"; + parameter CSDECODE_A = "000"; + parameter CSDECODE_B = "000"; + parameter WID = "0b00000000000"; + parameter RESETMODE_A = "SYNC"; + parameter ASYNC_RESET_RELEASE_A = "SYNC"; + parameter RESETMODE_B = "SYNC"; + parameter ASYNC_RESET_RELEASE_B = "SYNC"; + parameter ECC = "DISABLED"; + parameter EBR_MODE = "DP"; + parameter FULL = "0b11111111100000"; + parameter ALMOST_FULL = "0b00000000000000"; + parameter ALMOST_EMPTY = "0b00000000000000"; + parameter INITVAL_00 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_01 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_02 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_03 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_04 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_05 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_06 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_07 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_08 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_09 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_0A = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_0B = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_0C = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_0D = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_0E = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_0F = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_10 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_11 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_12 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_13 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_14 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_15 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_16 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_17 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_18 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_19 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_1A = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_1B = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_1C = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_1D = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_1E = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_1F = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_20 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_21 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_22 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_23 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_24 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_25 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_26 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_27 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_28 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_29 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_2A = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_2B = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_2C = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_2D = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_2E = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_2F = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_30 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_31 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_32 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_33 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_34 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_35 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_36 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_37 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_38 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_39 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_3A = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_3B = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_3C = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_3D = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_3E = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_3F = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + input [17:0] DIA; + input [17:0] DIB; + input [13:0] ADA; + input [13:0] ADB; + input CLKA; + input CLKB; + input WEA; + input WEB; + input CEA; + input CEB; + input RSTA; + input RSTB; + input [2:0] CSA; + input [2:0] CSB; + output FULLF; + output AFULL; + output EMPTYF; + output AEMPTY; + output [17:0] DOA; + output [17:0] DOB; + output ONEERR; + output TWOERR; +endmodule + +module ECLKDIV (...); + parameter ECLK_DIV = "DISABLE"; + parameter GSR = "ENABLED"; + output DIVOUT; + input DIVRST; + input ECLKIN; + input SLIP; +endmodule + +module ECLKSYNC (...); + parameter STOP_EN = "DISABLE"; + input ECLKIN; + output ECLKOUT; + input STOP; +endmodule + +module FBMUX (...); + parameter INTFB = "IGNORED"; + parameter SEL_FBK = "DIVA"; + parameter CLKMUX_FB = "CMUX_CLKOP"; + parameter INTFBKDEL_SEL = "DISABLED"; + output ENEXT; + output FBKCK; + input LGYRDYN; + input INTLOCK; + input WKUPSYNC; + input [15:0] FBKCLK; +endmodule + +module FIFO16K_MODE (...); + parameter DATA_WIDTH_A = "X18"; + parameter DATA_WIDTH_B = "X18"; + parameter OUTREG_A = "BYPASSED"; + parameter OUTREG_B = "BYPASSED"; + parameter GSR = "ENABLED"; + parameter RESETMODE_A = "SYNC"; + parameter RESETMODE_B = "SYNC"; + parameter ASYNC_RST_RELEASE_A = "SYNC"; + parameter ASYNC_RST_RELEASE_B = "SYNC"; + parameter ALMOST_FULL = "0b00000000000000"; + parameter ALMOST_EMPTY = "0b00000000000000"; + parameter ECC = "DISABLED"; + parameter FULLBITS = "0b11111111100000"; + input DIA0; + input DIA1; + input DIA2; + input DIA3; + input DIA4; + input DIA5; + input DIA6; + input DIA7; + input DIA8; + input DIA9; + input DIA10; + input DIA11; + input DIA12; + input DIA13; + input DIA14; + input DIA15; + input DIA16; + input DIA17; + input DIB0; + input DIB1; + input DIB2; + input DIB3; + input DIB4; + input DIB5; + input DIB6; + input DIB7; + input DIB8; + input DIB9; + input DIB10; + input DIB11; + input DIB12; + input DIB13; + input DIB14; + input DIB15; + input DIB16; + input DIB17; + input CKA; + input CKB; + input CEA; + input CEB; + input CSA0; + input CSA1; + input CSA2; + input CSB0; + input CSB1; + input CSB2; + input RSTA; + input RSTB; + output DOA0; + output DOA1; + output DOA2; + output DOA3; + output DOA4; + output DOA5; + output DOA6; + output DOA7; + output DOA8; + output DOA9; + output DOA10; + output DOA11; + output DOA12; + output DOA13; + output DOA14; + output DOA15; + output DOA16; + output DOA17; + output DOB0; + output DOB1; + output DOB2; + output DOB3; + output DOB4; + output DOB5; + output DOB6; + output DOB7; + output DOB8; + output DOB9; + output DOB10; + output DOB11; + output DOB12; + output DOB13; + output DOB14; + output DOB15; + output DOB16; + output DOB17; + output ALMOSTFULL; + output FULL; + output ALMOSTEMPTY; + output EMPTY; + output ONEBITERR; + output TWOBITERR; +endmodule + +module FIFO16K (...); + parameter DATA_WIDTH_A = "X18"; + parameter DATA_WIDTH_B = "X18"; + parameter OUTREG_A = "BYPASSED"; + parameter OUTREG_B = "BYPASSED"; + parameter GSR = "ENABLED"; + parameter RESETMODE_A = "SYNC"; + parameter RESETMODE_B = "SYNC"; + parameter ASYNC_RST_RELEASE_A = "SYNC"; + parameter ASYNC_RST_RELEASE_B = "SYNC"; + parameter ALMOST_FULL = "0b00000000000000"; + parameter ALMOST_EMPTY = "0b00000000000000"; + parameter ECC = "DISABLED"; + parameter FULLBITS = "0b11111111100000"; + input [17:0] DIA; + input [17:0] DIB; + input CKA; + input CKB; + input CEA; + input CEB; + input [2:0] CSA; + input [2:0] CSB; + input RSTA; + input RSTB; + output [17:0] DOA; + output [17:0] DOB; + output ALMOSTFULL; + output FULL; + output ALMOSTEMPTY; + output EMPTY; + output ONEBITERR; + output TWOBITERR; +endmodule + +module HSE (...); + parameter MCGLBGSRNDIS = "EN"; + parameter MCHSEDISABLE = "EN"; + parameter MCHSEOTPEN = "DIS"; + input LMMICLK; + input LMMIRESET_N; + input LMMIREQUEST; + input LMMIWRRD_N; + input [17:0] LMMIOFFSET; + input [31:0] LMMIWDATA; + output [31:0] LMMIRDATA; + output LMMIRDATAVALID; + output LMMIREADY; + input ASFCLKI; + output ASFEMPTYO; + output ASFFULLO; + input ASFRDI; + input ASFRESETI; + input ASFWRI; + input CFG_CLK; + input HSE_CLK; + input HSELRSTN; +endmodule + +module I2CFIFO (...); + parameter BRNBASEDELAY = "0b0000"; + parameter CR1CKDIS = "EN"; + parameter CR1FIFOMODE = "REG"; + parameter CR1GCEN = "DIS"; + parameter CR1I2CEN = "DIS"; + parameter CR1SDADELSEL = "NDLY0"; + parameter CR1SLPCLKEN = "DIS"; + parameter CR2CORERSTN = "DIS"; + parameter CR2HARDTIE = "TIE"; + parameter CR2INTCLREN = "DIS"; + parameter CR2MRDCMPLWKUP = "DIS"; + parameter CR2RXFIFOAFWKUP = "DIS"; + parameter CR2SLVADDRWKUP = "DIS"; + parameter GSR = "ENABLED"; + parameter I2CRXFIFOAFVAL = "0b00000"; + parameter I2CSLVADDRA = "0b0000000000"; + parameter I2CTXFIFOAEVAL = "0b0000"; + parameter INTARBLIE = "DIS"; + parameter INTBUSFREEIE = "DIS"; + parameter INTHGCIE = "DIS"; + parameter INTMRDCMPLIE = "DIS"; + parameter INTRNACKIEORRSVD = "DIS"; + parameter INTRSVDORTROEIE = "DIS"; + parameter INTRSVDORTRRDYIE = "DIS"; + parameter INTRXOVERFIEORRSVD = "DIS"; + parameter INTRXUNDERFIE = "DIS"; + parameter INTTXOVERFIE = "DIS"; + parameter INTTXSERRIEORRSVD = "DIS"; + parameter LMMI_EXTRA_ONE = "DIS"; + parameter LMMI_EXTRA_TWO = "DIS"; + parameter NCRALTIOEN = "FABRIC"; + parameter NCRFILTERDIS = "EN"; + parameter NCRSDAINDLYEN = "DIS"; + parameter NCRSDAOUTDLYEN = "DIS"; + parameter NONUSRTESTSOFTTRIMEN = "DIS"; + parameter NONUSRTSTSOFTTRIMVALUE = "0b000"; + parameter REGI2CBR = "0b0000000000"; + parameter TSPTIMERVALUE = "0b10010010111"; + input LMMICLK; + input LMMIRESET_N; + input LMMIREQUEST; + input LMMIWRRD_N; + input [5:0] LMMIOFFSET; + input [7:0] LMMIWDATA; + output [7:0] LMMIRDATA; + output LMMIRDATAVALID; + output LMMIREADY; + input ALTSCLIN; + output ALTSCLOEN; + output ALTSCLOUT; + input ALTSDAIN; + output ALTSDAOEN; + output ALTSDAOUT; + output BUSBUSY; + input FIFORESET; + input I2CLSRRSTN; + output INSLEEP; + output IRQ; + output MRDCMPL; + output RXFIFOAF; + output RXFIFOE; + output RXFIFOF; + input SCLIN; + output SCLOE; + output SCLOEN; + output SCLOUT; + input SDAIN; + output SDAOE; + output SDAOEN; + output SDAOUT; + output SLVADDRMATCH; + output SLVADDRMATCHSCL; + output SRDWR; + output TXFIFOAE; + output TXFIFOE; + output TXFIFOF; +endmodule + +module IDDR71 (...); + parameter GSR = "ENABLED"; + input D; + input SCLK; + input RST; + input ECLK; + input ALIGNWD; + output Q0; + output Q1; + output Q2; + output Q3; + output Q4; + output Q5; + output Q6; +endmodule + +module IDDRX1 (...); + parameter GSR = "ENABLED"; + input D; + input SCLK; + input RST; + output Q0; + output Q1; +endmodule + +module IDDRX2DQ (...); + parameter GSR = "ENABLED"; + input D; + input DQSR90; + input ECLK; + input SCLK; + input RST; + input RDPNTR0; + input RDPNTR1; + input RDPNTR2; + input WRPNTR0; + input WRPNTR1; + input WRPNTR2; + output Q0; + output Q1; + output Q2; + output Q3; +endmodule + +module IDDRX2 (...); + parameter GSR = "ENABLED"; + input D; + input SCLK; + input RST; + input ECLK; + input ALIGNWD; + output Q0; + output Q1; + output Q2; + output Q3; +endmodule + +module IDDRX4DQ (...); + parameter GSR = "ENABLED"; + input D; + input DQSR90; + input ECLK; + input SCLK; + input RST; + input RDPNTR0; + input RDPNTR1; + input RDPNTR2; + input WRPNTR0; + input WRPNTR1; + input WRPNTR2; + output Q0; + output Q1; + output Q2; + output Q3; + output Q4; + output Q5; + output Q6; + output Q7; +endmodule + +module IDDRX4 (...); + parameter GSR = "ENABLED"; + input D; + input SCLK; + input RST; + input ECLK; + input ALIGNWD; + output Q0; + output Q1; + output Q2; + output Q3; + output Q4; + output Q5; + output Q6; + output Q7; +endmodule + +module IDDRX5 (...); + parameter GSR = "ENABLED"; + input D; + input SCLK; + input RST; + input ECLK; + input ALIGNWD; + output Q0; + output Q1; + output Q2; + output Q3; + output Q4; + output Q5; + output Q6; + output Q7; + output Q8; + output Q9; +endmodule + +module IFD1P3BX (...); + parameter GSR = "ENABLED"; + input D; + input SP; + input CK; + input PD; + output Q; +endmodule + +module IFD1P3DX (...); + parameter GSR = "ENABLED"; + input D; + input SP; + input CK; + input CD; + output Q; +endmodule + +module IFD1P3IX (...); + parameter GSR = "ENABLED"; + input D; + input SP; + input CK; + input CD; + output Q; +endmodule + +module IFD1P3JX (...); + parameter GSR = "ENABLED"; + input D; + input SP; + input CK; + input PD; + output Q; +endmodule + +(* keep *) +module JTAG (...); + parameter MCER1EXIST = "NEXIST"; + parameter MCER2EXIST = "NEXIST"; + output JCE1; + output JCE2; + output JRSTN; + output JRTI1; + output JRTI2; + output JSHIFT; + output JTDI; + output JUPDATE; + input JTDO1; + input JTDO2; + input SMCLK; + input TCK; + output JTCK; + input TDI; + output TDO_OEN; + output TDO; + input TMS; +endmodule + +module LRAM (...); + parameter INITVAL_00 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_01 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_02 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_03 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_04 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_05 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_06 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_07 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_08 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_09 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_0A = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_0B = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_0C = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_0D = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_0E = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_0F = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_10 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_11 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_12 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_13 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_14 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_15 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_16 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_17 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_18 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_19 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_1A = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_1B = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_1C = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_1D = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_1E = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_1F = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_20 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_21 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_22 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_23 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_24 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_25 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_26 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_27 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_28 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_29 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_2A = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_2B = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_2C = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_2D = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_2E = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_2F = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_30 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_31 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_32 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_33 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_34 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_35 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_36 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_37 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_38 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_39 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_3A = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_3B = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_3C = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_3D = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_3E = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_3F = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_40 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_41 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_42 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_43 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_44 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_45 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_46 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_47 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_48 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_49 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_4A = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_4B = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_4C = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_4D = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_4E = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_4F = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_50 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_51 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_52 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_53 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_54 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_55 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_56 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_57 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_58 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_59 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_5A = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_5B = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_5C = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_5D = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_5E = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_5F = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_60 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_61 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_62 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_63 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_64 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_65 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_66 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_67 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_68 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_69 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_6A = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_6B = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_6C = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_6D = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_6E = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_6F = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_70 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_71 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_72 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_73 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_74 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_75 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_76 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_77 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_78 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_79 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_7A = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_7B = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_7C = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_7D = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_7E = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_7F = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter ASYNC_RST_RELEASE = "SYNC"; + parameter CFG_INIT_ID = "0b00000000000"; + parameter DATA_PRESERVE = "DISABLE"; + parameter EBR_SP_EN = "DISABLE"; + parameter ECC_BYTE_SEL = "ECC_EN"; + parameter GSR = "ENABLED"; + parameter OUT_REGMODE_A = "NO_REG"; + parameter OUT_REGMODE_B = "NO_REG"; + parameter RESETMODE = "SYNC"; + parameter RST_AB_EN = "RESET_AB_DISABLE"; + parameter SP_EN = "DISABLE"; + parameter UNALIGNED_READ = "DISABLE"; + input [13:0] ADA; + input [13:0] ADB; + input [3:0] BENA_N; + input [3:0] BENB_N; + input CEA; + input CEB; + input CLK; + input CSA; + input CSB; + input [31:0] DIA; + input [31:0] DIB; + output [31:0] DOA; + output [31:0] DOB; + input DPS; + output [1:0] ERRDECA; + output [1:0] ERRDECB; + input OCEA; + input OCEB; + output OEA; + output OEB; + input RSTA; + input RSTB; + input WEA; + input WEB; + output ERRDET; + output LRAMREADY; +endmodule + +module M18X36 (...); + parameter SFTEN = "DISABLED"; + parameter MULT18X36 = "ENABLED"; + parameter MULT36 = "DISABLED"; + parameter MULT36X36H = "USED_AS_LOWER_BIT_GENERATION"; + parameter ROUNDHALFUP = "DISABLED"; + parameter ROUNDRTZI = "ROUND_TO_ZERO"; + parameter ROUNDBIT = "ROUND_TO_BIT0"; + input [3:0] SFTCTRL; + input [37:0] PH36; + input [37:0] PL36; + input SGNED18H; + input SGNED18L; + output [72:0] P72; + input ROUNDEN; +endmodule + +module MULT18 (...); + parameter SFTEN = "DISABLED"; + parameter MULT18X18 = "ENABLED"; + parameter ROUNDHALFUP = "DISABLED"; + parameter ROUNDRTZI = "ROUND_TO_ZERO"; + parameter ROUNDBIT = "ROUND_TO_BIT0"; + input [3:0] SFTCTRL; + input ARHSIGN; + input BRHSIGN; + input [8:0] ARH; + input [8:0] BRH; + input [8:0] ARL; + input [8:0] BRL; + input [19:0] PL18; + input [19:0] PH18; + output SIGNED18; + output [37:0] P36; + input ROUNDEN; +endmodule + +module MULT36 (...); + parameter MULT36X36 = "ENABLED"; + input [72:0] PH72; + input [72:0] PL72; + output [71:0] PML72; + output [71:0] PMH72; +endmodule + +module MULT9 (...); + parameter SIGNEDSTATIC_EN = "DISABLED"; + parameter ASIGNED_OPERAND_EN = "DISABLED"; + parameter BYPASS_MULT9 = "USED"; + parameter REGBYPSB = "REGISTER"; + parameter REGBYPSA1 = "REGISTER"; + parameter REGBYPSA2 = "REGISTER"; + parameter SHIFTA = "DISABLED"; + parameter SR_18BITSHIFT_EN = "DISABLED"; + parameter GSR = "ENABLED"; + parameter RESET = "SYNC"; + input [8:0] A; + input ASIGNED; + input [8:0] BR; + input [8:0] AS1; + input [8:0] AS2; + input ASSIGNED1; + input ASSIGNED2; + input BRSIGNED; + input CLK; + input CEA; + input RSTA; + output [8:0] AO; + output [8:0] BO; + output AOSIGNED; + output BOSIGNED; + output [8:0] AR; + output ARSIGNED; + output [19:0] P18; + input CEP; + input RSTP; +endmodule + +module MULTADDSUB18X18WIDE (...); + parameter REGINPUTAB0 = "REGISTER"; + parameter REGINPUTAB1 = "REGISTER"; + parameter REGINPUTC = "REGISTER"; + parameter REGADDSUB = "REGISTER"; + parameter REGLOADC = "REGISTER"; + parameter REGLOADC2 = "REGISTER"; + parameter REGPIPELINE = "REGISTER"; + parameter REGOUTPUT = "REGISTER"; + parameter GSR = "ENABLED"; + parameter RESETMODE = "SYNC"; + input [17:0] A0; + input [17:0] B0; + input [17:0] A1; + input [17:0] B1; + input [53:0] C; + input CLK; + input CEA0; + input CEA1; + input RSTA0; + input RSTA1; + input CEB0; + input CEB1; + input RSTB0; + input RSTB1; + input CEC; + input RSTC; + input RSTCTRL; + input CECTRL; + input SIGNED; + input RSTPIPE; + input CEPIPE; + output [53:0] Z; + input RSTOUT; + input CEOUT; + input LOADC; + input [1:0] ADDSUB; +endmodule + +module MULTADDSUB9X9WIDE (...); + parameter REGINPUTAB0 = "REGISTER"; + parameter REGINPUTAB1 = "REGISTER"; + parameter REGINPUTAB2 = "REGISTER"; + parameter REGINPUTAB3 = "REGISTER"; + parameter REGINPUTC = "REGISTER"; + parameter REGADDSUB = "REGISTER"; + parameter REGLOADC = "REGISTER"; + parameter REGLOADC2 = "REGISTER"; + parameter REGPIPELINE = "REGISTER"; + parameter REGOUTPUT = "REGISTER"; + parameter GSR = "ENABLED"; + parameter RESETMODE = "SYNC"; + input [8:0] A0; + input [8:0] B0; + input [8:0] A1; + input [8:0] B1; + input [8:0] A2; + input [8:0] B2; + input [8:0] A3; + input [8:0] B3; + input [53:0] C; + input CLK; + input CEA0A1; + input CEA2A3; + input RSTA0A1; + input RSTA2A3; + input CEB0B1; + input CEB2B3; + input RSTB0B1; + input RSTB2B3; + input CEC; + input RSTC; + input RSTCTRL; + input CECTRL; + input SIGNED; + input RSTPIPE; + input CEPIPE; + input RSTOUT; + input CEOUT; + input LOADC; + input [3:0] ADDSUB; + output [53:0] Z; +endmodule + +(* keep *) +module MULTIBOOT (...); + parameter MSPIADDR = "0b00000000000000000000000000000000"; + parameter SOURCESEL = "DIS"; + input AUTOREBOOT; + input [31:0] MSPIMADDR; +endmodule + +module ODDR71 (...); + parameter GSR = "ENABLED"; + input D0; + input D1; + input D2; + input D3; + input D4; + input D5; + input D6; + input SCLK; + input RST; + input ECLK; + output Q; +endmodule + +module ODDRX1 (...); + parameter GSR = "ENABLED"; + input D0; + input D1; + input SCLK; + input RST; + output Q; +endmodule + +module ODDRX2DQS (...); + parameter GSR = "ENABLED"; + input D0; + input D1; + input D2; + input D3; + input DQSW; + input ECLK; + input SCLK; + input RST; + output Q; +endmodule + +module ODDRX2DQ (...); + parameter GSR = "ENABLED"; + input D0; + input D1; + input D2; + input D3; + input DQSW270; + input ECLK; + input SCLK; + input RST; + output Q; +endmodule + +module ODDRX2 (...); + parameter GSR = "ENABLED"; + input D0; + input D1; + input D2; + input D3; + input SCLK; + input RST; + input ECLK; + output Q; +endmodule + +module ODDRX4DQS (...); + parameter GSR = "ENABLED"; + input D0; + input D1; + input D2; + input D3; + input D4; + input D5; + input D6; + input D7; + input DQSW; + input ECLK; + input SCLK; + input RST; + output Q; +endmodule + +module ODDRX4DQ (...); + parameter GSR = "ENABLED"; + input D0; + input D1; + input D2; + input D3; + input D4; + input D5; + input D6; + input D7; + input DQSW270; + input ECLK; + input SCLK; + input RST; + output Q; +endmodule + +module ODDRX4 (...); + parameter GSR = "ENABLED"; + input D0; + input D1; + input D2; + input D3; + input D4; + input D5; + input D6; + input D7; + input SCLK; + input RST; + input ECLK; + output Q; +endmodule + +module ODDRX5 (...); + parameter GSR = "ENABLED"; + input D0; + input D1; + input D2; + input D3; + input D4; + input D5; + input D6; + input D7; + input D8; + input D9; + input SCLK; + input RST; + input ECLK; + output Q; +endmodule + +module OFD1P3BX (...); + parameter GSR = "ENABLED"; + input D; + input SP; + input CK; + input PD; + output Q; +endmodule + +module OFD1P3DX (...); + parameter GSR = "ENABLED"; + input D; + input SP; + input CK; + input CD; + output Q; +endmodule + +module OFD1P3IX (...); + parameter GSR = "ENABLED"; + input D; + input SP; + input CK; + input CD; + output Q; +endmodule + +module OFD1P3JX (...); + parameter GSR = "ENABLED"; + input D; + input SP; + input CK; + input PD; + output Q; +endmodule + +module OSHX2 (...); + parameter GSR = "ENABLED"; + input D0; + input D1; + input ECLK; + input SCLK; + input RST; + output Q; +endmodule + +module OSHX4 (...); + parameter GSR = "ENABLED"; + input D0; + input D1; + input D2; + input D3; + input ECLK; + input SCLK; + input RST; + output Q; +endmodule + +module PCIE (...); + parameter ENABLE_USER_CFG = "DISABLED"; + parameter PWDN_N = "DISABLED"; + parameter GSR = "ENABLED"; + parameter IDDQ_PCS = "DISABLED"; + parameter PHY_MODE = "0b0000"; + parameter ALT_CLK_SEL_VCC = "PAD"; + parameter L0S_ADJ = "0b00000110000000"; + parameter L0S_EXIT_LATENCY = "MORE_4_US"; + parameter L1_EXIT_LATENCY = "MORE_64_US"; + parameter CALIB_3DB = "ENABLED"; + parameter DB_UPSTREAM = "6DB"; + parameter ERR_REC_ENTRY_SEL = "RCVRY_AFTER"; + parameter A_CHNGD_MAX = "0b100"; + parameter A0_FORCE = "DISABLED"; + parameter A0_FREEZE = "DISABLED"; + parameter A0_INIT = "0b000000"; + parameter A0DIR_VAL = "DISABLED"; + parameter A1_FORCE = "DISABLED"; + parameter A1_FREEZE = "DISABLED"; + parameter A1_INIT = "0b000000"; + parameter A1DIR_VAL = "DISABLED"; + parameter A2_FORCE = "DISABLED"; + parameter A2_FREEZE = "DISABLED"; + parameter A2_INIT = "0b000000"; + parameter A2GAIN_CALIB = "0b100110"; + parameter ACJTAG_REG = "0b00"; + parameter ADDR_LIMIT_PRE_MTHD_CTRL = "0b0100"; + parameter ADDR_LIMIT_TABLE_MTHD_CTRL = "0b00101"; + parameter ADIR_OVR = "DISABLED"; + parameter ADV_CH_CD_SEL = "IMPLEMENT_CH"; + parameter ADV_TARGET_LINK_SPEED_USPORT_A = "DISABLED"; + parameter ADV_TARGET_LINK_SPEED_USPORT_B = "DISABLED"; + parameter ADV_TARGET_LINK_SPEED_USPORT_C = "DISABLED"; + parameter ADV_TARGET_LINK_SPEED_USPORT_D = "DISABLED"; + parameter ADVANCE = "DISABLED"; + parameter ALERT_ENABLE = "0b000"; + parameter ALMOST_EMPTY_10B = "0b001110"; + parameter MID_VALUE_10B = "0b011110"; + parameter ALMOST_EMPTY_20B = "0b001111"; + parameter ALMOST_EMPTY_GEN3 = "0b001100"; + parameter ALMOST_FULL_10B = "0b110000"; + parameter ALMOST_FULL_20B = "0b011000"; + parameter ALMOST_FULL_GEN3 = "0b010110"; + parameter ARRAY_DA = "0b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter ARRAY_MT = "0b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000011100000000000010000000000000001001000000000000011000000000000001010000000000000100"; + parameter ARXCDRICP_RATE0 = "0b011"; + parameter ARXCDRICP_RATE1 = "0b011"; + parameter ARXCDRICP_RATE2 = "0b011"; + parameter ARXDMPWRDWN = "DISABLED"; + parameter ARXDPPWRDN = "DISABLED"; + parameter ARXEOM_PWRDN = "POWERED_DOWN"; + parameter ARXICP_RATE0 = "0b011"; + parameter ARXICP_RATE1 = "0b011"; + parameter ARXICP_RATE2 = "0b011"; + parameter ARXOVR_OUT = "DISABLED"; + parameter ARXRSACTAT = "0b0001"; + parameter ARXRSAPTAT = "0b1000"; + parameter ARXRSVCTL = "0b00000000"; + parameter ARXSEL_OUT = "DISABLED"; + parameter ASPM_L1_1_SUPPORTED = "SUPPORTED"; + parameter ASPM_L1_2_SUPPORTED = "SUPPORTED"; + parameter ASPM_SUPPORT = "L0S_AND_L1_SUPPORTED"; + parameter ATTENTION_BUTTON_PRESENT = "NOT_SUPPORTED"; + parameter ATTENTION_INDICATOR_PRESENT = "NOT_SUPPORTED"; + parameter ATXICP_RATE0 = "0b101"; + parameter ATXICP_RATE1 = "0b101"; + parameter AUTO_SHIFT = "ENABLED"; + parameter AUX_CURRENT = "SELF_POWERED"; + parameter AUXCLK1US_MAX = "0b00001001"; + parameter AUXIDL_MAX = "0b00000100"; + parameter BAR_INDEX_CFG0_A = "0b000"; + parameter BAR_INDEX_CFG0_B = "0b000"; + parameter BAR_INDEX_CFG0_C = "0b000"; + parameter BAR_INDEX_CFG0_D = "0b000"; + parameter BAR_INDEX_CFG1_A = "0b001"; + parameter BAR_INDEX_CFG1_B = "0b001"; + parameter BAR_INDEX_CFG1_C = "0b001"; + parameter BAR_INDEX_CFG1_D = "0b001"; + parameter BAR_INDEX_CFG2_A = "0b010"; + parameter BAR_INDEX_CFG2_B = "0b010"; + parameter BAR_INDEX_CFG2_C = "0b010"; + parameter BAR_INDEX_CFG2_D = "0b010"; + parameter BAR_INDEX_CFG3_A = "0b011"; + parameter BAR_INDEX_CFG3_B = "0b011"; + parameter BAR_INDEX_CFG3_C = "0b011"; + parameter BAR_INDEX_CFG3_D = "0b011"; + parameter BAR_INDEX_CFG4_A = "0b100"; + parameter BAR_INDEX_CFG4_B = "0b100"; + parameter BAR_INDEX_CFG4_C = "0b100"; + parameter BAR_INDEX_CFG4_D = "0b100"; + parameter BAR_INDEX_CFG5_A = "0b101"; + parameter BAR_INDEX_CFG5_B = "0b101"; + parameter BAR_INDEX_CFG5_C = "0b101"; + parameter BAR_INDEX_CFG5_D = "0b101"; + parameter BIR_MSIX_PBA_A = "BAR0"; + parameter BIR_MSIX_PBA_B = "BAR0"; + parameter BIR_MSIX_PBA_C = "BAR0"; + parameter BIR_MSIX_PBA_D = "BAR0"; + parameter BIR_MSIX_TABLE_A = "BAR0"; + parameter BIR_MSIX_TABLE_B = "BAR0"; + parameter BIR_MSIX_TABLE_C = "BAR0"; + parameter BIR_MSIX_TABLE_D = "BAR0"; + parameter BYP_AVG = "USED"; + parameter BYPASS = "PERFORM_RECEIVER_DETECTION"; + parameter BYPASS_ADDR_DEC = "NORMAL"; + parameter CALIB_SETTLE_MAX = "0b001"; + parameter CALIB_STABLE_MAX = "0b11000"; + parameter CAPABILITY_VERSION = "0b0010"; + parameter CDR_ERR = "DISABLED"; + parameter CDR_P1 = "CDR_PLL_RESET"; + parameter CDR_PLL_DELTA = "0P4_PERCENT"; + parameter CDR_REFERENCE = "0b00"; + parameter CDRPLL_CMP_MAX = "0b00010100"; + parameter CDRPLL_CNT_MAX = "0b00000100"; + parameter CDRPLL_PRE_RXEQ_COARSE_TIMER = "0b01010000"; + parameter CDRPLL_PRE_RXEQ_FINE_TIMER = "0b10110100"; + parameter CDRPLL_PST_RXEQ_COARSE_TIMER = "0b01000000"; + parameter CDRPLL_PST_RXEQ_FINE_TIMER = "0b01000010"; + parameter CFG_A_BAR0 = "0b11111111111111110000000000001100"; + parameter CFG_A_BAR1 = "0b11111111111111111111111111111111"; + parameter CFG_A_BAR2 = "0b11111111111111111110000000001100"; + parameter CFG_A_BAR3 = "0b11111111111111111111111111111111"; + parameter CFG_A_BAR4 = "0b11111111111111111110000000001100"; + parameter CFG_A_BAR5 = "0b11111111111111111111111111111111"; + parameter CFG_B_BAR0 = "0b11111111111111110000000000001100"; + parameter CFG_B_BAR1 = "0b11111111111111111111111111111111"; + parameter CFG_B_BAR2 = "0b11111111111111111110000000001100"; + parameter CFG_B_BAR3 = "0b11111111111111111111111111111111"; + parameter CFG_B_BAR4 = "0b11111111111111111110000000001100"; + parameter CFG_B_BAR5 = "0b11111111111111111111111111111111"; + parameter CFG_C_BAR0 = "0b11111111111111110000000000001100"; + parameter CFG_C_BAR1 = "0b11111111111111111111111111111111"; + parameter CFG_C_BAR2 = "0b11111111111111111110000000001100"; + parameter CFG_C_BAR3 = "0b11111111111111111111111111111111"; + parameter CFG_C_BAR4 = "0b11111111111111111110000000001100"; + parameter CFG_C_BAR5 = "0b11111111111111111111111111111111"; + parameter CFG_D_BAR0 = "0b11111111111111110000000000001100"; + parameter CFG_D_BAR1 = "0b11111111111111111111111111111111"; + parameter CFG_D_BAR2 = "0b11111111111111111110000000001100"; + parameter CFG_D_BAR3 = "0b11111111111111111111111111111111"; + parameter CFG_D_BAR4 = "0b11111111111111111110000000001100"; + parameter CFG_D_BAR5 = "0b11111111111111111111111111111111"; + parameter CFG_EXP_ROM_A = "0b00000000000000000000000000000000"; + parameter CFG_EXP_ROM_B = "0b00000000000000000000000000000000"; + parameter CFG_EXP_ROM_C = "0b00000000000000000000000000000000"; + parameter CFG_EXP_ROM_D = "0b00000000000000000000000000000000"; + parameter CIS_POINTER_CARDBUS_A = "0b00000000000000000000000000000000"; + parameter CIS_POINTER_CARDBUS_B = "0b00000000000000000000000000000000"; + parameter CIS_POINTER_CARDBUS_C = "0b00000000000000000000000000000000"; + parameter CIS_POINTER_CARDBUS_D = "0b00000000000000000000000000000000"; + parameter CLASS_CODE_ID3A = "0b000100011000000000000000"; + parameter CLASS_CODE_ID3B = "0b000100011000000000000000"; + parameter CLASS_CODE_ID3C = "0b000100011000000000000000"; + parameter CLASS_CODE_ID3D = "0b000100011000000000000000"; + parameter CM_RESTORE_TIME = "0b00000000"; + parameter CNT250NS_MAX = "0b001111100"; + parameter COARSE_GAIN = "DISABLED"; + parameter COEF_EN_LPBK_MASTER = "OTHERWISE"; + parameter COEF_EN_LPBK_SLAVE = "OTHERWISE"; + parameter COEF_ENABLE = "DETERMINE_LOCAL_PHY"; + parameter COEF_EQTX_FORCE = "0b000000000000000000"; + parameter COEF_LPBK_MASTER = "0b000000000000000000"; + parameter COEF_LPBK_SLAVE = "0b000000000000000000"; + parameter COEF0_POST = "0b000101"; + parameter COEF0_POST_CURSOR = "0b000000"; + parameter COEF0_PRE = "0b000000"; + parameter COEF0_PRE_CURSOR = "0b000000"; + parameter COEF1_POST = "0b000011"; + parameter COEF1_POST_CURSOR = "0b000000"; + parameter COEF1_PRE = "0b000000"; + parameter COEF1_PRE_CURSOR = "0b000000"; + parameter COEF10_POST = "0b000111"; + parameter COEF10_PRE = "0b000000"; + parameter COEF2_POST = "0b000100"; + parameter COEF2_POST_CURSOR = "0b000000"; + parameter COEF2_PRE = "0b000000"; + parameter COEF2_PRE_CURSOR = "0b000000"; + parameter COEF3_POST = "0b000010"; + parameter COEF3_POST_CURSOR = "0b000000"; + parameter COEF3_PRE = "0b000000"; + parameter COEF3_PRE_CURSOR = "0b000000"; + parameter COEF4_POST = "0b000000"; + parameter COEF4_PRE = "0b000000"; + parameter COEF5_POST = "0b000000"; + parameter COEF5_PRE = "0b000001"; + parameter COEF6_POST = "0b000000"; + parameter COEF6_PRE = "0b000010"; + parameter COEF7_POST = "0b000100"; + parameter COEF7_PRE = "0b000011"; + parameter COEF8_POST = "0b000011"; + parameter COEF8_PRE = "0b000010"; + parameter COEF9_POST = "0b000000"; + parameter COEF9_PRE = "0b000011"; + parameter COMP_128_SUPPORTED = "ENABLED"; + parameter COMP_32_SUPPORTED = "ENABLED"; + parameter COMP_64_SUPPORTED = "ENABLED"; + parameter COMPLETE = "DISABLED"; + parameter CONV_METHOD = "COMPUTE_PCIE_SPEC"; + parameter CORE_BYPASS = "NORMAL"; + parameter CORE_EN = "ENABLED"; + parameter COUNT_ACK_TO_NAK = "0b00000000"; + parameter CPL_TIMEOUT_DISABLE_SUPPORTED = "SUPPORTED"; + parameter CPL_TIMEOUT_RANGES_SUPPORTED = "NOT_SUPPORTED"; + parameter CRS_ENABLE = "DISABLED"; + parameter CSTAT_DATA_SCALE = "UNKNOWN_SCALE"; + parameter CSTAT_DATA_SELECT = "D0_POWER_CONSUMED"; + parameter CTLE_SETTLE = "0b100"; + parameter CTLEBIAS_1 = "0b1000"; + parameter ATXICP_RATE2 = "0b100"; + parameter CTLEBYPASS = "DISABLED"; + parameter CUR_FOM = "NUMBER_OF_CLOCK"; + parameter CUR_FOM_AVG = "0b101"; + parameter CUST_AUTO = "DISABLED"; + parameter CUST_CHK = "SET"; + parameter CUST_SEL = "DISABLED"; + parameter CUST_SKIP = "DISABLED"; + parameter CUST_TYP = "0b000"; + parameter CUSTOM_PATTERN = "0b00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter D1_SUPPORT = "SUPPORTED"; + parameter D2_SUPPORT = "SUPPORTED"; + parameter DATA_INJECT = "0b00000000000000000000000000000000"; + parameter DATA_PM = "0b00000000"; + parameter DEEMPH_5G_3_5DB_6DB_N = "6DB"; + parameter DEEMPH_5G_ENABLE = "DISABLED"; + parameter DEEMPH_LPBK_MASTER = "6P0DB"; + parameter DEEMPH_LPBK_SLAVE = "6P0DB"; + parameter DEVICE_ID_ID1A = "0b1110000000000100"; + parameter DEVICE_ID_ID1B = "0b1110000000000100"; + parameter DEVICE_ID_ID1C = "0b1110000000000100"; + parameter DEVICE_ID_ID1D = "0b1110000000000100"; + parameter DEVICE_PORT_TYPE = "PCIE_ENDPOINT"; + parameter DFE_BIAS = "0b0001"; + parameter DFE_PWDN = "DISABLED"; + parameter DIR_PRE_GAIN = "0b00"; + parameter DIR_PST_GAIN = "0b01"; + parameter DIS_ARI_CAP = "ENABLED"; + parameter DIS_CSR_RST = "DISABLED"; + parameter DIS_INTERRUPT = "ENABLED"; + parameter DIS_INTERRUPT_B = "ENABLED"; + parameter DIS_INTERRUPT_C = "ENABLED"; + parameter DIS_INTERRUPT_D = "ENABLED"; + parameter DIS_MSI_CAP = "ENABLED"; + parameter DIS_MSI_CAP_B = "ENABLED"; + parameter DIS_MSI_CAP_C = "ENABLED"; + parameter DIS_MSI_CAP_D = "ENABLED"; + parameter DIS_MSIX_CAP = "ENABLED"; + parameter DIS_MSIX_CAP_B = "ENABLED"; + parameter DIS_MSIX_CAP_C = "ENABLED"; + parameter DIS_MSIX_CAP_D = "ENABLED"; + parameter DISABLE_FLR_CAPABILITY = "ENABLED"; + parameter DLLP_CRC_ERR_ENABLE = "DISABLED"; + parameter DLLP_CRC_ERR_RATE = "0b000000000000"; + parameter DLLP_INJECT_ENABLE = "DISABLED"; + parameter DOUBLE_TX_DATA_VALID = "ONE_CLK_EVERY_64_CLKS"; + parameter DOWNSTREAM_EQ_SKIP_PHASE_2_3 = "NORMAL_OPERATION"; + parameter DS_DRIVE_CLKREQ = "ENABLED"; + parameter DS_PORT_RX_PRESET_HINT = "0b001"; + parameter DS_PORT_TX_PRESET = "0b0011"; + parameter DS_US_N_PORTTYPE = "UPSTREAM"; + parameter DSI = "NO_DSI_NECESSARY"; + parameter DSP_DIR = "ANALYSIS_OF_DATA_BY_DSP"; + parameter DSPDIR_PRESGN = "0b11110000"; + parameter DSPDIR_PREVAL = "0b00011000"; + parameter DSPDIR_PSTSGN0 = "0b11111111"; + parameter DSPDIR_PSTSGN1 = "0b00000000"; + parameter DSPDIR_PSTVAL0 = "0b00000010"; + parameter DSPDIR_PSTVAL1 = "0b01000000"; + parameter EARLY_RX_EVAL = "RX_SIGNAL_AFTER_TS1"; + parameter ECRC_GEN_CHK_CAPABLE = "SUPPORTED"; + parameter EFF_LPBK = "PASSED"; + parameter EI4 = "EI_IV"; + parameter EM_INTERLOCK_PRESENT = "NOT_SUPPORTED"; + parameter EN = "DISABLED"; + parameter EN_ACK_TO_DIV = "ACK_SPEC"; + parameter EN_ACK_TO_NAK = "DO_NOTHING"; + parameter EN_ACS_VIOLATION = "DISABLED"; + parameter EN_ASPM_L0S = "ENABLED"; + parameter EN_ASPM_L1 = "ENABLED"; + parameter EN_ATOMIC_OP_CAP = "ENABLED"; + parameter EN_ATOMICOP_EGRESS_BLOCKED = "DISABLED"; + parameter EN_ATS_CAP = "ENABLED"; + parameter EN_BDGT_CAP = "DISABLED"; + parameter EN_CAP = "ENABLED"; + parameter EN_CAP_B = "ENABLED"; + parameter EN_CAP_C = "ENABLED"; + parameter EN_CAP_D = "ENABLED"; + parameter EN_COMPLETER_ABORT = "DISABLED"; + parameter EN_COMPLETION_TIMEOUT = "ENABLED"; + parameter EN_CORR_INTERNAL_ERROR = "DISABLED"; + parameter EN_DPA_CAP = "DISABLED"; + parameter EN_DRCT_SCR_OFF = "OTHERWISE"; + parameter EN_DRCT_TO_LPBK = "OTHERWISE"; + parameter EN_EQTX_OVERRIDE = "PIPE_LOCAL_FS_AND_PIPE_LOCAL_LF"; + parameter EN_FORCE_SCR_OFF_FAST = "OTHERWISE"; + parameter EN_L1 = "ENABLED"; + parameter EN_L1PMSS_CAP = "ENABLED"; + parameter EN_L2 = "ENABLED"; + parameter EN_LPBK_ERR_RST = "MASTER_LPBK_INCREMENT"; + parameter EN_LTR_CAP = "ENABLED"; + parameter EN_MC_BLOCKED_TLP = "DISABLED"; + parameter EN_NWL_VSEC_CAP = "ENABLED"; + parameter EN_PORT_DIS = "DISABLED"; + parameter EN_PORT_INTLEG = "ENABLED"; + parameter EN_RBAR_CAP_A = "ENABLED"; + parameter EN_RBAR_CAP_B = "ENABLED"; + parameter EN_RBAR_CAP_C = "ENABLED"; + parameter EN_RBAR_CAP_D = "ENABLED"; + parameter EN_RECEIVER_OVERFLOW = "DISABLED"; + parameter EN_SELF_XLINK = "OTHERWISE"; + parameter EN_SURPRISE_DOWN_ERROR = "DISABLED"; + parameter EN_TLP_PREFIX_BLOCKED = "DISABLED"; + parameter EN_UCORR_INTERNAL_ERROR = "DISABLED"; + parameter EN_USER_WRITE = "READ_WRITE_ACCESS"; + parameter END_END_PREFIXES_SUPPORTED = "NOT_SUPPORTED"; + parameter END_ON_HOLD = "YES_EXIT_ON_HOLD"; + parameter ENDCALIB_MAX = "0b10000100"; + parameter ENDPOINT_L0S_ACCEPTABLE_LATENCY = "MAX_64_NS"; + parameter ENDPOINT_L1_ACCEPTABLE_LATENCY = "MAX_1_US"; + parameter ENTRY_TIME_ASPM_L0S = "0b0000000000000000"; + parameter ENTRY_TIME_ASPM_L1 = "0b0000000000000000"; + parameter EOM_TIME = "0b0000000000000000"; + parameter EOM0DIR = "SELECT_DIR_1"; + parameter EOM1DIR = "SELECT_DIR_0"; + parameter EOMCTRL0_LOW = "DISABLED"; + parameter EOMDIVDIS = "DISABLED"; + parameter EOMMODE = "0b00"; + parameter EOMRDSEL = "DISABLED"; + parameter EOMSTART = "DISABLED"; + parameter EOMX = "0b000000"; + parameter EOMX_UPDATE_CNT_VALUE = "0b0011111"; + parameter EOMY = "0b00000000"; + parameter ERRCNT_DEC = "0b00100000"; + parameter ERRCNT_THR = "0b1000"; + parameter ES_PWDN = "DISABLED"; + parameter EVAL_RST = "DISABLED"; + parameter EXCLUDE_L0 = "INCLUDE"; + parameter EXCLUDE_CFG_COMPLETE = "INCLUDE"; + parameter EXCLUDE_CFG_IDLE = "INCLUDE"; + parameter EXCLUDE_LOOPBACK_MASTER = "INCLUDE"; + parameter EXCLUDE_REC_IDLE = "INCLUDE"; + parameter EXCLUDE_REC_RCVR_CFG = "INCLUDE"; + parameter EXIT_DIRECT_TO_DETECT = "DO_NOT_EXIT_TO_DETECT"; + parameter EXT_CONTROL = "DISABLED"; + parameter EXTENDED_TAG_FIELD_EN_DEFAULT = "EIGHT_BIT"; + parameter EXTENDED_TAG_FIELD_SUPPORTED = "EIGHT_BIT"; + parameter F_ARXCTLEDIR = "IGNORED"; + parameter F_ARXCTLENULL = "0b0000"; + parameter F_ARXDMDIR = "DISABLED"; + parameter F_ARXDMNULL = "0b00000"; + parameter F_ARXEOMDIR = "IGNORED"; + parameter F_ARXEOMNULL = "0b00000"; + parameter F_ARXESDIR = "IGNORED"; + parameter F_ARXESNULL = "0b00000"; + parameter F_ARXTDIR = "IGNORED"; + parameter F_ARXTNULL = "0b00000"; + parameter F_ASCHCAL = "IGNORED"; + parameter F_ASCHDIR = "IGNORED"; + parameter F_ASCHNULL = "0b0000"; + parameter FAIL_LIMIT_ERR = "RXEQ_NOT_FAIL"; + parameter FAST = "L0"; + parameter FC_UPDATE_TIMER_DISABLE = "ENABLED"; + parameter FC_UPDATE_TIMER_DIV = "PCIE_REC_VALUES"; + parameter FILTER = "0b1001"; + parameter FINE_GAIN = "DISABLED"; + parameter FOM_COMPARE = "0b00000000"; + parameter FOM_HIRES = "DISABLED"; + parameter FOM_ITERCNT = "0b101"; + parameter FOM_THR = "0b0100"; + parameter FORCE_ATXDRA = "0b000000000000000000000"; + parameter FORCE_ATXDRP = "0b000000000000000000000"; + parameter FORCE_ATXDRR = "0b000000000000000000000"; + parameter FORCE_ATXDRT = "0b000000000000000000000"; + parameter FORCE_DIR_RSLT = "0b000000"; + parameter FORCE_FOM_RSLT = "0b00000000"; + parameter FORCE_IDLE = "DISABLED"; + parameter FORCE_RX_DETECT = "DISABLED"; + parameter FORCE_SIGNAL = "DISABLED"; + parameter FREQ_LOCK = "DISABLED"; + parameter FS = "0b110000"; + parameter GAIN_TIMER1 = "0b0101"; + parameter GEN12_ENA_POST_A0 = "DISABLED"; + parameter GEN12_ENA_POST_A1A2 = "DISABLED"; + parameter GEN12_ENA_PREA0 = "DISABLED"; + parameter GEN3_ENA_POST_A0 = "ENABLED"; + parameter GEN3_ENA_POST_A1A2 = "ENABLED"; + parameter GEN3_ENA_PREA0 = "ENABLED"; + parameter GLOBAL_INVAL_SUPPORT = "ENABLED"; + parameter HINT = "0b000"; + parameter HINT0_3DB = "ENABLED"; + parameter HINT0_A0GAIN = "0b111"; + parameter HINT0_A2GAIN = "0b111"; + parameter HINT1_3DB = "ENABLED"; + parameter HINT1_A0GAIN = "0b011"; + parameter HINT1_A2GAIN = "0b101"; + parameter HINT2_3DB = "ENABLED"; + parameter HINT2_A0GAIN = "0b011"; + parameter HINT2_A2GAIN = "0b111"; + parameter HINT3_3DB = "ENABLED"; + parameter HINT3_A0GAIN = "0b000"; + parameter HINT3_A2GAIN = "0b111"; + parameter HINT4_3DB = "DISABLED"; + parameter HINT4_A0GAIN = "0b111"; + parameter HINT4_A2GAIN = "0b111"; + parameter HINT5_3DB = "DISABLED"; + parameter HINT5_A0GAIN = "0b011"; + parameter HINT5_A2GAIN = "0b101"; + parameter HINT6_3DB = "DISABLED"; + parameter HINT6_A0GAIN = "0b011"; + parameter HINT6_A2GAIN = "0b111"; + parameter HINT7_3DB = "DISABLED"; + parameter HINT7_A0GAIN = "0b000"; + parameter HINT7_A2GAIN = "0b111"; + parameter HINT7_OVR = "DISABLED"; + parameter HLD_RST = "WRITE_1"; + parameter HOT_PLUG_CAPABLE = "NOT_SUPPORTED"; + parameter HOT_PLUG_SURPRISE = "NOT_POSSIBLE"; + parameter ID_DS_PORT = "0b0000000000000000"; + parameter ID_NWL_VSEC_CAP = "0b0000000000000001"; + parameter IGNORE_ECRC = "DISABLED"; + parameter IGNORE_POISON = "ENABLED"; + parameter INDICATOR = "0b00000000000000000000000000000000"; + parameter INHIBIT = "PERFORM_RECEIVER_DETECTION"; + parameter INJECT_DATA_ERROR_0 = "DISABLED"; + parameter INJECT_DATA_ERROR_1 = "DISABLED"; + parameter INJECT_DATA_ERROR_2 = "DISABLED"; + parameter INJECT_DATA_ERROR_3 = "DISABLED"; + parameter INJECT_DATA_ERROR_EN = "DISABLED"; + parameter INJECT_ERR_LANE_SELECT_0 = "DISABLED"; + parameter INJECT_ERR_LANE_SELECT_1 = "DISABLED"; + parameter INJECT_ERR_LANE_SELECT_2 = "DISABLED"; + parameter INJECT_ERR_LANE_SELECT_3 = "DISABLED"; + parameter INJECT_RX_1BIT_DATA_ERR = "DISABLED"; + parameter INJECT_RX_2BIT_DATA_ERR = "DISABLED"; + parameter INJECT_RX_SKP_ERR = "DISABLED"; + parameter INJECT_RX_VALID_ERR = "DISABLED"; + parameter INT_CLR = "DISABLED"; + parameter INT_EN = "DISABLED"; + parameter INTERRUPT_MESSAGE_NUMBER = "0b00000"; + parameter INVAL_Q_DEPTH = "0b00000"; + parameter ITERATION_MAX = "0b000000"; + parameter L1_ENTER_PLL_RESET_TIME = "0b100"; + parameter L1_EXIT_PLL_LOCK_TIME = "0b01110"; + parameter L1PM_SUPPORTED = "SUPPORTED"; + parameter L2_D3HOT_ENABLE = "DISABLED"; + parameter LANE_SELECT = "0b0000"; + parameter LF = "0b001000"; + parameter LF_PHY = "0b001010"; + parameter LINK_LANE = "ENABLED"; + parameter LPBK_EN = "DISABLED"; + parameter LW_START_UPDN_ACK_EN = "DISABLED"; + parameter LW_START_UPDN_COUNT = "0b000011111010"; + parameter LW_START_UPDN_EIE_EN = "DISABLED"; + parameter LW_START_UPDN_EN_DIR_DS = "DO_NOT_ASSERT"; + parameter LW_START_UPDN_END_DELAY = "0b1001"; + parameter LW_START_UPDN_RATE_EN_16G = "DISABLED"; + parameter LW_START_UPDN_RATE_EN_2P5G = "ENABLED"; + parameter LW_START_UPDN_RATE_EN_5G = "ENABLED"; + parameter LW_START_UPDN_RATE_EN_8G = "ENABLED"; + parameter LW_START_UPDN_START_DELAY = "0b1000"; + parameter LW_START_UPDN_TIMER_EN = "DISABLED"; + parameter MARGIN_ENABLE = "PCIE_SPEC"; + parameter MARGIN_VALUE = "0b000"; + parameter MASK_0 = "SKIP_RCVR_DETECTION"; + parameter MASK_1 = "SKIP_RCVR_DETECTION"; + parameter MASK_2 = "SKIP_RCVR_DETECTION"; + parameter MASK_3 = "SKIP_RCVR_DETECTION"; + parameter MAX_LINK_WIDTH = "1_LANE"; + parameter MAX_SPEED = "8G"; + parameter MAX_VAR = "0b00100"; + parameter MERGE_LMMI_RDATA = "DISABLED"; + parameter METHOD_FMERIT_CTRL = "STEP_PCIE_TX_PRESETS"; + parameter METHOD_TX_CRED_CLEANUP = "HEADER"; + parameter MGMT_INTLEG = "0b0000"; + parameter MGMT_LTSSM_DIS = "DISABLED"; + parameter MID_VALUE_20B = "0b010100"; + parameter MID_VALUE_GEN3 = "0b001110"; + parameter MIN_SPEED = "2P5G"; + parameter MIN_TIME = "0_MS"; + parameter MIN_TIME_CFG = "4US"; + parameter MIX_DIR = "DISABLED"; + parameter MODE_BFF = "RESTART"; + parameter MRL_SENSOR_PRESENT = "NOT_SUPPORTED"; + parameter MULT_ENABLE = "RECOMMENDED_VALUES"; + parameter MULT_MESSAGE_CAPABLE_MSICAP_A = "EIGHT"; + parameter MULT_MESSAGE_CAPABLE_MSICAP_B = "EIGHT"; + parameter MULT_MESSAGE_CAPABLE_MSICAP_C = "EIGHT"; + parameter MULT_MESSAGE_CAPABLE_MSICAP_D = "EIGHT"; + parameter NFTS = "0b11111111"; + parameter NO_COMMAND_COMPLETED_SUPPORT = "SW_NOTIF_PROVIDED"; + parameter NO_FCMP = "DISABLED"; + parameter NO_REMOTE_CHANGE = "DISABLED"; + parameter NO_TX_IDLE_DELAY = "DATA_VALID_GAP"; + parameter NUM_LANES = "1_LANE"; + parameter NUMBER_DSLINK = "0b00000"; + parameter NUMHI_A = "0b00000000000000000000000000000000"; + parameter NUMHI_B = "0b00000000000000000000000000000000"; + parameter NUMHI_C = "0b00000000000000000000000000000000"; + parameter NUMHI_D = "0b00000000000000000000000000000000"; + parameter NUMHOLD = "SINGLE_HOLD_RESPONSE"; + parameter NUMLO_A = "0b00000000000000000000000000000000"; + parameter NUMLO_B = "0b00000000000000000000000000000000"; + parameter NUMLO_C = "0b00000000000000000000000000000000"; + parameter NUMLO_D = "0b00000000000000000000000000000000"; + parameter OBFF_SUPPORTED = "NOT_SUPPORTED"; + parameter OFFSET_MSIX_PBA_A = "0b00000000000000000111000000000"; + parameter OFFSET_MSIX_PBA_B = "0b00000000000000000111000000000"; + parameter OFFSET_MSIX_PBA_C = "0b00000000000000000111000000000"; + parameter OFFSET_MSIX_PBA_D = "0b00000000000000000111000000000"; + parameter OFFSET_MSIX_TABLE_A = "0b00000000000000000110000000000"; + parameter OFFSET_MSIX_TABLE_B = "0b00000000000000000110000000000"; + parameter OFFSET_MSIX_TABLE_C = "0b00000000000000000110000000000"; + parameter OFFSET_MSIX_TABLE_D = "0b00000000000000000110000000000"; + parameter OVER_CTLE = "DISABLED"; + parameter OVER_RX = "DISABLED"; + parameter OVER_RXDM = "DISABLED"; + parameter OVER_RXDP = "DISABLED"; + parameter OVER_RXES = "DISABLED"; + parameter OVER_RXT = "DISABLED"; + parameter OVER_SCH = "DISABLED"; + parameter OVER_TX = "DISABLED"; + parameter OVERRIDE = "DISABLED"; + parameter OVR_CDR = "DISABLED"; + parameter OVR_DIR = "DISABLED"; + parameter OVR_FOM = "DISABLED"; + parameter OVR_GAIN3DB = "ENABLED"; + parameter OVR_HINT3DB = "ENABLED"; + parameter P_CLK_PERIOD = "0b0000111110100000"; + parameter PAR_LPBK = "DISABLED"; + parameter PAS = "10X"; + parameter PATTERN_0 = "UNSCRAMBLED"; + parameter PATTERN_1 = "UNSCRAMBLED"; + parameter PATTERN_2 = "UNSCRAMBLED"; + parameter PCIPM_L1_1_SUPPORTED = "SUPPORTED"; + parameter PCIPM_L1_2_SUPPORTED = "SUPPORTED"; + parameter PERIOD_SRIS_128B130B = "0b000000"; + parameter PERIOD_SRIS_8B10B = "0b00000000"; + parameter PERIOD_SRNS_128B130B = "0b00000000"; + parameter PERIOD_SRNS_8B10B = "0b00000000"; + parameter PHANTOM_FUNCTIONS_SUPPORTED = "NO_FUNCTION_BITS"; + parameter PHYSICAL_SLOT_NUMBER = "0b0000000000001"; + parameter PIN_INTERRUPT_A = "INTA"; + parameter PIN_INTERRUPT_B = "INTA"; + parameter PIN_INTERRUPT_C = "INTA"; + parameter PIN_INTERRUPT_D = "INTA"; + parameter PIPE_TX_SWING = "FULL_SWING"; + parameter PLESIO_LPBK = "DISABLED"; + parameter PM_REDUCE_TIMEOUTS = "DISABLED"; + parameter PMA_DRIVEN_MODE = "PCS_DRIVEN"; + parameter PMCSR_B2_B3_SUPPORT = "DISABLED"; + parameter PMCSR_BUS_P_C_EN = "DISABLED"; + parameter PME_CLOCK = "DISABLED"; + parameter PME_SUPPORT = "0b11111"; + parameter PMFF_ALL = "DISABLED"; + parameter PORT_CM_RESTORE_TIME = "0b00000000"; + parameter PORT_NUMBER = "0b00000000"; + parameter PORT_TPOWER_ON_SCALE = "2_US"; + parameter PORT_TPOWER_ON_VALUE = "0b00000"; + parameter POST = "0b000000"; + parameter POST_A0COEF = "0b001"; + parameter POST_A1COEF = "0b001"; + parameter POST_A2COEF = "0b001"; + parameter POST_CURSOR_LIMIT = "0b100000"; + parameter POST_CURSOR_STEP_SIZE = "0b001000"; + parameter POST_ITERCNT = "0b100"; + parameter POST_STEP = "STEP_SIZE_4"; + parameter POWER_CONTROLLER_PRESENT = "NOT_SUPPORTED"; + parameter POWER_INDICATOR_PRESENT = "NOT_SUPPORTED"; + parameter POWER_REQUIRED = "AUX_POWER_NOT_REQUIRED"; + parameter PRBS_CHK = "DISABLED"; + parameter PRBS_GEN = "DISABLED"; + parameter PRBS_TYP = "PRBS7"; + parameter PRE = "0b000000"; + parameter PRE_A0COEF = "0b101"; + parameter PRE_A1COEF = "0b101"; + parameter PRE_A2COEF = "0b101"; + parameter PRE_CURSOR_LIMIT = "0b010000"; + parameter PRE_CURSOR_STEP_SIZE = "0b000100"; + parameter PRE_FOM = "ENABLED"; + parameter PRE_FOM_AVG = "0b100"; + parameter PRE_ITERCNT = "0b100"; + parameter PRE_RXEQ_TIMER = "0b00010100"; + parameter PRE_STEP = "STEP_SIZE_2"; + parameter PRESET_COUNT_INI = "0b0000"; + parameter PRESET_EN_LPBK_MASTER = "OTHERWISE"; + parameter PRESET_EN_LPBK_SLAVE = "OTHERWISE"; + parameter PRESET_ENABLE = "NORMAL_OP"; + parameter PRESET_EQTX_FORCE = "0b0000"; + parameter PRESET_LPBK_MASTER = "0b0000"; + parameter PRESET_LPBK_SLAVE_0 = "OTHERWISE"; + parameter PRESET_LPBK_SLAVE_1 = "OTHERWISE"; + parameter PRESET_LPBK_SLAVE_2 = "OTHERWISE"; + parameter PRESET_LPBK_SLAVE_3 = "OTHERWISE"; + parameter PRESET_REJECT = "0b00000000000"; + parameter PRESET0_POSTCURSOR = "0b1000"; + parameter PRESET0_PRECURSOR = "0b0000"; + parameter PRESET1_POSTCURSOR = "0b0101"; + parameter PRESET1_PRECURSOR = "0b0000"; + parameter PRESET10_POSTCURSOR = "0b1010"; + parameter PRESET10_PRECURSOR = "0b0000"; + parameter PRESET2_POSTCURSOR = "0b0110"; + parameter PRESET2_PRECURSOR = "0b0000"; + parameter PRESET3_POSTCURSOR = "0b0100"; + parameter PRESET3_PRECURSOR = "0b0000"; + parameter PRESET4_POSTCURSOR = "0b0000"; + parameter PRESET4_PRECURSOR = "0b0000"; + parameter PRESET5_POSTCURSOR = "0b0000"; + parameter PRESET5_PRECURSOR = "0b0011"; + parameter PRESET6_POSTCURSOR = "0b0000"; + parameter PRESET6_PRECURSOR = "0b0100"; + parameter PRESET7_POSTCURSOR = "0b0110"; + parameter PRESET7_PRECURSOR = "0b0011"; + parameter PRESET8_POSTCURSOR = "0b0100"; + parameter PRESET8_PRECURSOR = "0b0100"; + parameter PRESET9_POSTCURSOR = "0b0000"; + parameter PRESET9_PRECURSOR = "0b0101"; + parameter PS_REENTRY_TIME = "0b00000000"; + parameter RATE = "2P5G"; + parameter RATE_ENABLE = "INITIAL_SPEED_CHANGES"; + parameter RCB = "DISABLED"; + parameter REC_SPD_INFER_EQ_PH0123 = "EXCLUDE_TIME_SPENT"; + parameter REC_SPD_INFER_RCVR_CFG = "EXCLUDE_TIME_SPENT"; + parameter REC_SPD_INFER_RCVR_LOCK = "EXCLUDE_TIME_SPENT"; + parameter DIS_FUNC_B = "ENABLED"; + parameter DIS_FUNC_C = "ENABLED"; + parameter DIS_FUNC_D = "ENABLED"; + parameter REDUCE_TIMEOUTS_LTSSMSIM = "DISABLED"; + parameter REDUCE_TIMEOUTS_SIM = "DISABLED"; + parameter REDUCE_TS1 = "DISABLED"; + parameter REENTRY_DISABLE = "ENABLED"; + parameter REENTRY_TIME = "0b00000000000000"; + parameter REQ_FEEDBACK = "0b00000000"; + parameter RESET_EIEOS_INTERVAL_COUNT = "DISABLED"; + parameter REVISION_ID_ID3A = "0b00000100"; + parameter REVISION_ID_ID3B = "0b00000100"; + parameter REVISION_ID_ID3C = "0b00000100"; + parameter REVISION_ID_ID3D = "0b00000100"; + parameter RL1 = "0b0011"; + parameter RL2 = "0b0101"; + parameter RL3 = "0b0011"; + parameter ROUTING_SUPPORTED = "DISABLED"; + parameter RP_COMPLETER_EN = "DISABLED"; + parameter RSTCDR_ERR = "ENABLED"; + parameter RSTCDR_FRQ = "ENABLED"; + parameter RSTCDR_IDL = "DISABLED"; + parameter RX_BYPASS_DECODE_EN = "ENABLED"; + parameter RX_BYPASS_MSG_DEC = "NORMAL_OPERATION"; + parameter RX_CONVERT_UR_TO_CA = "NORMAL_OPERATION"; + parameter RX_D_ALLOC_C = "0b0000000001100000"; + parameter RX_D_ALLOC_N = "0b0000000000000110"; + parameter RX_D_ALLOC_P = "0b0000000001101100"; + parameter RX_DIV_MODE1 = "0b10"; + parameter RX_DIV_MODE0 = "DIV_2"; + parameter RX_DIV_MODE2 = "0b00"; + parameter RX_DL_ACTIVE_DISABLE = "BLOCK_RECEPTION_TLP"; + parameter RX_EARLY_FORWARD_DISABLE = "FWD_RX_DATA_LL"; + parameter RX_ERR_COR = "DISABLED"; + parameter RX_ERR_UCOR = "DISABLED"; + parameter RX_FORCE_RO = "DISABLED"; + parameter RX_H_ALLOC_C = "0b000000100000"; + parameter RX_H_ALLOC_N = "0b000000001000"; + parameter RX_H_ALLOC_P = "0b000000010000"; + parameter RX_HIZ = "IGNORED"; + parameter RX_IMPED_RATIO = "0b10000000"; + parameter RX_INHIBIT_ACK_NAK = "PROCESS_RCVD_ACK"; + parameter RX_INHIBIT_TLP = "PROCESS_RCVD_TLP"; + parameter RX_LCRC_INJECT_EN = "DO_NOT_INJECT_ERROR"; + parameter RX_MALF_INJECT_EN = "DO_NOT_INJECT_ERROR"; + parameter RX_POLINV = "NORMAL"; + parameter RX_PRIORITY = "DISABLED"; + parameter RX_PRIORITY_N_STARVE_THRESH = "0b00010000"; + parameter RX_PRIORITY_P_STARVE_THRESH = "0b00010000"; + parameter RX_PWRDN = "IGNORED"; + parameter RX_TLP_VALID = "DISABLED"; + parameter RXEQ_ALGO = "0b111"; + parameter RXEQ_ENABLE = "0b100"; + parameter RXEQ_EVAL_MAX = "0b11111111"; + parameter RXEQ_MANUAL = "DISABLED"; + parameter RXEQ_STATE = "0b0000"; + parameter RXF_A = "0b0100"; + parameter RXF_B = "0b0100"; + parameter RXF_C = "0b0100"; + parameter RXHF_CLKDN = "ENABLED"; + parameter RXIDLE_MAX = "0b1111"; + parameter RXIDLE_MAX2 = "0b0000010000000000"; + parameter RXIDLE_MSB = "0b11"; + parameter RXM_A = "0b10"; + parameter RXM_B = "0b01"; + parameter RXM_C = "0b00"; + parameter RXN_A = "0b00100"; + parameter RXN_B = "0b01001"; + parameter RXN_C = "0b01111"; + parameter RXOFF_SETTLE_MAX = "0b011"; + parameter RXOFF_STABLE_MAX = "0b10000"; + parameter RXPLLINIT = "DISABLED"; + parameter RXPLLRST = "SET"; + parameter SELECT_DIR_FOM_N = "FME_METHOD"; + parameter SELECTABLE_DEEMPHASIS = "6P0DB"; + parameter SEQ_NUM = "0b000000000000"; + parameter SIGNAL_DETECT_THRESHOLD = "125_MV"; + parameter SIZE_CFG0_A = "0b00000"; + parameter SIZE_CFG0_B = "0b00000"; + parameter SIZE_CFG0_C = "0b00000"; + parameter SIZE_CFG0_D = "0b00000"; + parameter SIZE_CFG1_A = "0b00000"; + parameter SIZE_CFG1_B = "0b00000"; + parameter SIZE_CFG1_C = "0b00000"; + parameter SIZE_CFG1_D = "0b00000"; + parameter SIZE_CFG2_A = "0b00000"; + parameter SIZE_CFG2_B = "0b00000"; + parameter SIZE_CFG2_C = "0b00000"; + parameter SIZE_CFG2_D = "0b00000"; + parameter SIZE_CFG3_A = "0b00000"; + parameter SIZE_CFG3_B = "0b00000"; + parameter SIZE_CFG3_C = "0b00000"; + parameter SIZE_CFG3_D = "0b00000"; + parameter SIZE_CFG4_A = "0b00000"; + parameter SIZE_CFG4_B = "0b00000"; + parameter SIZE_CFG4_C = "0b00000"; + parameter SIZE_CFG4_D = "0b00000"; + parameter SIZE_CFG5_A = "0b00000"; + parameter SIZE_CFG5_B = "0b00000"; + parameter SIZE_CFG5_C = "0b00000"; + parameter SIZE_CFG5_D = "0b00000"; + parameter SKIP_FINAL_COEF_CHECK = "DISABLED"; + parameter SLOT_CLOCK_CONFIGURATION = "REFCLK_BY_SLOT"; + parameter SLOT_IMPLEMENTED = "UNCONNECTED"; + parameter SLOT_POWER_LIMIT_SCALE = "0b00"; + parameter SLOT_POWER_LIMIT_VALUE = "0b00001010"; + parameter SPEED_LPBK_CTRL = "2P5G"; + parameter START_PRESET = "PRESET_VALUE"; + parameter START_REMOTE_ADV = "OTHERWISE"; + parameter STATE_DATA_N = "USE_RX_DATA_OBSERVATION"; + parameter STEP_SELECT = "0b00000"; + parameter STP_OVERRIDE_EN = "DISABLED"; + parameter STP_OVERRIDE_LEN = "0b00000000000"; + parameter STP_OVERRIDE_NEW_LEN = "0b00000000000"; + parameter SUBSTATE_MAX = "0b00000"; + parameter SUBSYSTEM_ID_ID2A = "0b1110000000000100"; + parameter SUBSYSTEM_ID_ID2B = "0b1110000000000100"; + parameter SUBSYSTEM_ID_ID2C = "0b1110000000000100"; + parameter SUBSYSTEM_ID_ID2D = "0b1110000000000100"; + parameter SUBSYSTEM_VENDOR_ID_ID2A = "0b0001100110101010"; + parameter SUBSYSTEM_VENDOR_ID_ID2B = "0b0001100110101010"; + parameter SUBSYSTEM_VENDOR_ID_ID2C = "0b0001100110101010"; + parameter SUBSYSTEM_VENDOR_ID_ID2D = "0b0001100110101010"; + parameter SUPP_SIZE_CFG0_A = "0b00000000000000001111"; + parameter SUPP_SIZE_CFG0_B = "0b00000000000000001111"; + parameter SUPP_SIZE_CFG0_C = "0b00000000000000001111"; + parameter SUPP_SIZE_CFG0_D = "0b00000000000000001111"; + parameter SUPP_SIZE_CFG1_A = "0b00000000000000000000"; + parameter SUPP_SIZE_CFG1_B = "0b00000000000000000000"; + parameter SUPP_SIZE_CFG1_C = "0b00000000000000000000"; + parameter SUPP_SIZE_CFG1_D = "0b00000000000000000000"; + parameter SUPP_SIZE_CFG2_A = "0b00000000000000000000"; + parameter SUPP_SIZE_CFG2_B = "0b00000000000000000000"; + parameter SUPP_SIZE_CFG2_C = "0b00000000000000000000"; + parameter SUPP_SIZE_CFG2_D = "0b00000000000000000000"; + parameter SUPP_SIZE_CFG3_A = "0b00000000000000000000"; + parameter SUPP_SIZE_CFG3_B = "0b00000000000000000000"; + parameter SUPP_SIZE_CFG3_C = "0b00000000000000000000"; + parameter SUPP_SIZE_CFG3_D = "0b00000000000000000000"; + parameter SUPP_SIZE_CFG4_A = "0b00000000000000000000"; + parameter SUPP_SIZE_CFG4_B = "0b00000000000000000000"; + parameter SUPP_SIZE_CFG4_C = "0b00000000000000000000"; + parameter SUPP_SIZE_CFG4_D = "0b00000000000000000000"; + parameter SUPP_SIZE_CFG5_A = "0b00000000000000000000"; + parameter SUPP_SIZE_CFG5_B = "0b00000000000000000000"; + parameter SUPP_SIZE_CFG5_C = "0b00000000000000000000"; + parameter SUPP_SIZE_CFG5_D = "0b00000000000000000000"; + parameter SYS_ALLOC = "PWR_BUDGET_CAP_VALUES"; + parameter T0_RX_BYPASS_MSG_DEC = "NORMAL_OPERATION"; + parameter TABLE_SIZE_MSIXCAP_A = "0b00000000111"; + parameter TABLE_SIZE_MSIXCAP_B = "0b00000000111"; + parameter TABLE_SIZE_MSIXCAP_C = "0b00000000111"; + parameter TABLE_SIZE_MSIXCAP_D = "0b00000000111"; + parameter TARGET_LINK_SPEED = "8G"; + parameter TARGET_ONLY = "DISABLED"; + parameter TD1_MEANS_ADD_HAS_N = "ECRC_CONTAINED"; + parameter TIMEOUT_THRESHOLD_PME = "0b000000000000"; + parameter TIMEOUT_THRESHOLD_PME_TO_ACK_DS = "0b00000000"; + parameter TIMER = "0b00000000"; + parameter TLP_LCRC_ERR_ENABLE = "DISABLED"; + parameter TLP_LCRC_ERR_RATE = "0b000"; + parameter TLP_SEQ_ERR_ENABLE = "DISABLED"; + parameter TLUNIT = "1_MS"; + parameter TO_EXTEND = "0b01111111"; + parameter TRNG_A0COEF = "0b101"; + parameter TRNG_A1COEF = "0b101"; + parameter TRNG_A2COEF = "0b101"; + parameter TRNG_FAST = "DISABLED"; + parameter TRNG_ITERCNT = "0b100"; + parameter TRNG_RXEQ_TIMER = "0b00100000"; + parameter TS1_ACK_BLOCK_USE_PRESET = "FORCED_TO_ZERO"; + parameter TS1_ACK_DELAY = "0b00011111"; + parameter TS1_ACK_MASK_USE_PRESET = "IGNORES_USE_PRESET"; + parameter TX_AMP_RATIO_MARGIN0_FULL = "0b10000000"; + parameter TX_AMP_RATIO_MARGIN0_HALF = "0b01010000"; + parameter TX_AMP_RATIO_MARGIN1_FULL = "0b01111000"; + parameter TX_AMP_RATIO_MARGIN1_HALF = "0b01011000"; + parameter TX_AMP_RATIO_MARGIN2_FULL = "0b01101000"; + parameter TX_AMP_RATIO_MARGIN2_HALF = "0b01001000"; + parameter TX_AMP_RATIO_MARGIN3_FULL = "0b01100000"; + parameter TX_AMP_RATIO_MARGIN3_HALF = "0b01000000"; + parameter TX_AMP_RATIO_MARGIN4_FULL = "0b01011000"; + parameter TX_AMP_RATIO_MARGIN4_HALF = "0b00111000"; + parameter TX_AMP_RATIO_MARGIN5_FULL = "0b01010000"; + parameter TX_AMP_RATIO_MARGIN5_HALF = "0b00110000"; + parameter TX_AMP_RATIO_MARGIN6_FULL = "0b01001000"; + parameter TX_AMP_RATIO_MARGIN6_HALF = "0b00101000"; + parameter TX_AMP_RATIO_MARGIN7_FULL = "0b01000000"; + parameter TX_AMP_RATIO_MARGIN7_HALF = "0b00100000"; + parameter TX_BYPASS_DECODE_EN = "ENABLED"; + parameter TX_BYPASS_MSG_DEC = "NORMAL_OPERATION"; + parameter TX_COMP_RECEIVE = "DOES_NOT_ASSERT"; + parameter TX_CONVERT_UR_TO_CA = "NORMAL_OPERATION"; + parameter TX_D_ALLOC_C = "0b0000000001100000"; + parameter TX_D_ALLOC_N = "0b0000000000000110"; + parameter TX_D_ALLOC_P = "0b0000000001101100"; + parameter TX_DIV_MODE0 = "0b10"; + parameter TX_DIV_MODE1 = "0b10"; + parameter TX_DIV_MODE2 = "0b10"; + parameter TX_EQ_EVAL_CNT_SEL = "WAIT_8_CLKS"; + parameter TX_ERR_COR = "DISABLED"; + parameter TX_ERR_UCOR = "DISABLED"; + parameter TX_FORCE_RO = "DISABLED"; + parameter TX_GAP_INJECT_EN = "DO_NOT_INJECT_GAP"; + parameter TX_H_ALLOC_C = "0b000000100000"; + parameter TX_H_ALLOC_N = "0b000000001000"; + parameter TX_H_ALLOC_P = "0b000000010000"; + parameter TX_HIZ = "IGNORED"; + parameter TX_IMPED_RATIO = "0b10000000"; + parameter TX_PAR1_INJECT_EN = "DO_NOT_INJECT_ERR"; + parameter TX_PAR2_HANDLE_DISABLE = "ENABLE_HANDLING"; + parameter TX_PAR2_INJECT_EN = "DO_NOT_INJECT_ERR"; + parameter TX_PAR2_REPORT_DISABLE = "ENABLE_REPORTING"; + parameter TX_POLINV = "NORMAL"; + parameter TX_PRE_RATIO = "0b00000000"; + parameter TX_PRE_RATIO_DEEMP0_FULL = "0b00000000"; + parameter TX_PRE_RATIO_DEEMP0_HALF = "0b00000000"; + parameter TX_PRE_RATIO_DEEMP1_FULL = "0b00000000"; + parameter TX_PRE_RATIO_DEEMP1_HALF = "0b00000000"; + parameter TX_PRIORITY = "DISABLED"; + parameter TX_PRIORITY_N_STARVE_THRESH = "0b00010000"; + parameter TX_PRIORITY_P_STARVE_THRESH = "0b00010000"; + parameter TX_PST_RATIO = "0b00010101"; + parameter TX_PST_RATIO_DEEMP0_FULL = "0b00100000"; + parameter TX_PST_RATIO_DEEMP0_HALF = "0b00100000"; + parameter TX_PST_RATIO_DEEMP1_FULL = "0b00010101"; + parameter TX_PST_RATIO_DEEMP1_HALF = "0b00010101"; + parameter TX_QUIESCE = "DISABLED"; + parameter TX_REPLAY_ECC1_HANDLE_DISABLE = "ENABLE_CORRECTION"; + parameter TX_REPLAY_ECC1_INJECT_EN = "DO_NOT_INJECT_ERR"; + parameter TX_REPLAY_ECC1_REPORT_DISABLE = "ENABLE_REPORTING"; + parameter TX_REPLAY_ECC2_HANDLE_DISABLE = "ENABLE_HANDLING"; + parameter TX_REPLAY_ECC2_INJECT_EN = "DO_NOT_INJECT_ERR"; + parameter TX_REPLAY_ECC2_REPORT_DISABLE = "ENABLE_REPORTING"; + parameter TX_REQ_EQ = "DISABLED"; + parameter TX_SELECT_RX_FEEDBACK = "REFCLK"; + parameter TX_TLP_VALID = "DISABLED"; + parameter TXF_A = "0b0100"; + parameter TXF_B = "0b0100"; + parameter TXF_C = "0b0100"; + parameter TXHF_CLKDN = "ENABLED"; + parameter TXM_A = "0b10"; + parameter TXM_B = "0b01"; + parameter TXM_C = "0b00"; + parameter TXN_A = "0b00100"; + parameter TXN_B = "0b01001"; + parameter TXN_C = "0b01111"; + parameter TXPLL_INIT = "DISABLED"; + parameter TXPLLRST = "DISABLED"; + parameter TYPE1_TYPE0_N = "ENDPOINT"; + parameter U_CLK_PERIOD = "0b0001111101000000"; + parameter US_PORT_PS_ENTRY_TIME = "0b0000000000000000"; + parameter US_PORT_RX_PRESET_HINT = "0b010"; + parameter US_PORT_TX_PRESET = "0b0100"; + parameter USE_COEF_PRE_MTHD_CTRL = "PRESET_VALUE"; + parameter USE_COEF_UPDN_CTRL = "PRESET_VALUE"; + parameter USER_AUTO_N = "AUTOMATIC_ON_RECEPTION"; + parameter VEC_MASK_CAPABLE_MSICAP_A = "ENABLED"; + parameter VEC_MASK_CAPABLE_MSICAP_B = "ENABLED"; + parameter VEC_MASK_CAPABLE_MSICAP_C = "ENABLED"; + parameter VEC_MASK_CAPABLE_MSICAP_D = "ENABLED"; + parameter VENDOR_ID_ID1A = "0b0001100110101010"; + parameter VENDOR_ID_ID1B = "0b0001100110101010"; + parameter VENDOR_ID_ID1C = "0b0001100110101010"; + parameter VENDOR_ID_ID1D = "0b0001100110101010"; + parameter VENDOR0_UR = "REPORT"; + parameter VERSION_AER_CAP = "VER_0X2"; + parameter VERSION_PM_CAP = "0b011"; + parameter XLCY0 = "0b00000000"; + parameter XLCY1 = "0b00000000"; + parameter RX_ESP_RESP_WAIT = "0b01000000"; + parameter SEL_PCLK_DIV2 = "PCLK_DIV2"; + parameter COMPLIANCE = "ENABLED"; + parameter LOOPBACK = "ENABLED"; + parameter HOT_RESET = "ENABLED"; + parameter DIS_PREVENT = "ENABLED"; + parameter MPS_VIOLATION_RX = "DISABLED"; + parameter MPS_VIOLATION_TX = "DISABLED"; + parameter EN_RX_ALLOC_SEL = "HW"; + parameter EN_TX_ALLOC_SEL = "HW"; + parameter AUX_CLK_PERIOD = "0b1111010000100100"; + parameter EN_PIPE_IF_CTRL = "DISABLED"; + parameter PIPE_PWRDN = "P1"; + parameter TX_CM_DIS = "DEASSERTED"; + parameter RX_EI_DIS = "DEASSERTED"; + parameter PCLKREQ_N = "DEASSERTED"; + parameter STS_PHY_STATUS = "DEASSERTED"; + parameter STS_PIPE_RSTN = "DEASSERTED"; + parameter LEGACY_MODE = "MATCH_TS"; + parameter OVERFLOW = "DISABLED"; + parameter DIR = "RECEIVE"; + parameter SPEED = "8G"; + parameter LANE = "0"; + parameter COEF_ENABLE_8G = "DISABLED"; + parameter PRESET_ENABLE_8G = "DISABLED"; + parameter VALUE_8G_PRE = "0b000000"; + parameter VALUE_8G_POST = "0b000000"; + parameter REQ_EQ_MAX_COUNT = "0b10"; + parameter MESO_LPBK = "DISABLED"; + parameter TX_REPLAY_ECC2_INJECT_M_1_N = "INJECT_1_ERR"; + parameter TX_REPLAY_ECC1_INJECT_M_1_N = "INJECT_1_ERR"; + parameter REDO = "DISABLED"; + parameter RX_PAR_REPORT_DISABLE = "ENABLE_REPORTING"; + parameter RX_PAR_INJECT_EN = "DO_NOT_INJECT_ERR"; + parameter RX_ECC2_REPORT_DISABLE = "ENABLE_REPORTING"; + parameter RX_ECC2_HANDLE_DISABLE = "ENABLE_HANDLING"; + parameter RX_ECC2_INJECT_M_1_N = "INJECT_1_ERR"; + parameter RX_ECC2_INJECT_TYPE = "POSTED_DATA_RAM"; + parameter RX_ECC2_INJECT_EN = "DO_NOT_INJECT_ERR"; + parameter RX_ECC1_REPORT_DISABLE = "ENABLE_REPORTING"; + parameter RX_ECC1_HANDLE_DISABLE = "ENABLE_HANDLING"; + parameter RX_ECC1_INJECT_M_1_N = "INJECT_1_ERR"; + parameter RX_ECC1_INJECT_TYPE = "POSTED_DATA_RAM"; + parameter RX_ECC1_INJECT_EN = "DO_NOT_INJECT_ERR"; + parameter RX_ERR_PAR = "OTHERWISE"; + parameter RX_ERR_ECC2 = "OTHERWISE"; + parameter RX_ERR_ECC1 = "OTHERWISE"; + parameter TX_PAR_REPORT_DISABLE = "ENABLE_REPORTING"; + parameter TX_PAR_INJECT_EN = "DO_NOT_INJECT_ERR"; + parameter TX_ECC2_REPORT_DISABLE = "ENABLE_REPORTING"; + parameter TX_ECC2_HANDLE_DISABLE = "ENABLE_HANDLING"; + parameter TX_ECC2_INJECT_M_1_N = "INJECT_1_ERR"; + parameter TX_ECC2_INJECT_TYPE = "POSTED_DATA_RAM"; + parameter TX_ECC2_INJECT_EN = "DO_NOT_INJECT_ERR"; + parameter TX_ECC1_REPORT_DISABLE = "ENABLE_REPORTING"; + parameter TX_ECC1_HANDLE_DISABLE = "ENABLE_HANDLING"; + parameter TX_ECC1_INJECT_M_1_N = "INJECT_1_ERR"; + parameter TX_ECC1_INJECT_TYPE = "POSTED_DATA_RAM"; + parameter TX_ECC1_INJECT_EN = "DO_NOT_INJECT_ERR"; + parameter TX_ERR_PAR = "OTHERWISE"; + parameter TX_ERR_ECC2 = "OTHERWISE"; + parameter TX_ERR_ECC1 = "OTHERWISE"; + parameter MAX_PAYLOAD_SIZE_SUPPORTED = "256_BYTES"; + parameter ARXCAL_OUT = "DISABLED"; + parameter F_ARXDPDIR = "IGNORED"; + parameter IDLE_INFER_REC_RCVR_CFG = "OTHERWISE"; + parameter IDLE_INFER_LPBK_SLAVE = "OTHERWISE"; + parameter IDLE_INFER_REC_SPEED2_SUCCESS = "OTHERWISE"; + parameter IDLE_INFER_REC_SPEED2_UNSUCCESS = "OTHERWISE"; + parameter IDLE_INFER_L0_TO_REC_RCVR_LOCK = "OTHERWISE"; + parameter SPEED_CHANGE_FAIL = "OTHERWISE"; + parameter DIRECT_TO_DETECT_FAST = "OTHERWISE"; + parameter DIRECT_TO_RCVRY_CH_BOND = "OTHERWISE"; + parameter DIRECT_TO_LPBK_ENTRY = "OTHERWISE"; + parameter DIRECT_SPEED_CHANGE = "OTHERWISE"; + parameter L0_TO_REC_RCVR_LOCK_RX_TS12 = "OTHERWISE"; + parameter L0_TO_REC_RCVR_LOCK_RX_8G_EIE = "OTHERWISE"; + parameter L0_TO_REC_RCVR_LOCK_RX_INFER = "OTHERWISE"; + parameter DIRECT_TO_RCVRY_PHY = "OTHERWISE"; + parameter DIRECT_TO_RCVRY_FRAME = "OTHERWISE"; + parameter DIRECT_TO_RCVRY_REPLAY = "OTHERWISE"; + parameter DIRECT_TO_HOT_RESET = "OTHERWISE"; + parameter DIRECT_TO_DISABLE = "OTHERWISE"; + parameter RX_L0S_DIRECT_TO_RCVRY = "OTHERWISE"; + parameter AUTONOMOUS_WIDTH_CHANGE = "OTHERWISE"; + parameter DIRECTED_RETRAIN_LINK = "OTHERWISE"; + parameter ERR_TX_PIPE_UNDERFLOW = "OTHERWISE"; + parameter TS2_DETECT3 = "OTHERWISE"; + parameter TS2_DETECT2 = "OTHERWISE"; + parameter TS2_DETECT1 = "OTHERWISE"; + parameter TS2_DETECT0 = "OTHERWISE"; + parameter TS1_DETECT3 = "OTHERWISE"; + parameter TS1_DETECT2 = "OTHERWISE"; + parameter TS1_DETECT1 = "OTHERWISE"; + parameter TS1_DETECT0 = "OTHERWISE"; + parameter TS2I_DETECT3 = "OTHERWISE"; + parameter TS2I_DETECT2 = "OTHERWISE"; + parameter TS2I_DETECT1 = "OTHERWISE"; + parameter TS2I_DETECT0 = "OTHERWISE"; + parameter TS1I_DETECT3 = "OTHERWISE"; + parameter TS1I_DETECT2 = "OTHERWISE"; + parameter TS1I_DETECT1 = "OTHERWISE"; + parameter TS1I_DETECT0 = "OTHERWISE"; + parameter FTS_DETECT3 = "OTHERWISE"; + parameter FTS_DETECT2 = "OTHERWISE"; + parameter FTS_DETECT1 = "OTHERWISE"; + parameter FTS_DETECT0 = "OTHERWISE"; + parameter SKP_DETECT3 = "OTHERWISE"; + parameter SKP_DETECT2 = "OTHERWISE"; + parameter SKP_DETECT1 = "OTHERWISE"; + parameter SKP_DETECT0 = "OTHERWISE"; + parameter EIE_DETECT3 = "OTHERWISE"; + parameter EIE_DETECT2 = "OTHERWISE"; + parameter EIE_DETECT1 = "OTHERWISE"; + parameter EIE_DETECT0 = "OTHERWISE"; + parameter EIOS_DETECT3 = "OTHERWISE"; + parameter EIOS_DETECT2 = "OTHERWISE"; + parameter EIOS_DETECT1 = "OTHERWISE"; + parameter EIOS_DETECT0 = "OTHERWISE"; + parameter DATA_DETECT3 = "OTHERWISE"; + parameter DATA_DETECT2 = "OTHERWISE"; + parameter DATA_DETECT1 = "OTHERWISE"; + parameter DATA_DETECT0 = "OTHERWISE"; + parameter SDS_DETECT3 = "OTHERWISE"; + parameter SDS_DETECT2 = "OTHERWISE"; + parameter SDS_DETECT1 = "OTHERWISE"; + parameter SDS_DETECT0 = "OTHERWISE"; + parameter INFO_BAD_TLP_NULL_ERR = "OTHERWISE"; + parameter INFO_BAD_TLP_PHY_ERR = "OTHERWISE"; + parameter INFO_BAD_TLP_MALF_ERR = "OTHERWISE"; + parameter INFO_BAD_TLP_ECRC_ERR = "OTHERWISE"; + parameter INFO_SCHEDULE_DUPL_ACK = "OTHERWISE"; + parameter INFO_BAD_TLP_SEQ_ERR = "OTHERWISE"; + parameter INFO_BAD_TLP_CRC_ERR = "OTHERWISE"; + parameter INFO_NAK_RECEIVED = "OTHERWISE"; + parameter INFO_DESKEW_OVERFLOW_ERROR = "OTHERWISE"; + parameter INFO_TX_DATA_UNDERFLOW = "OTHERWISE"; + parameter INFO_REPLAY_STARTED = "OTHERWISE"; + parameter ERR_AER_TX_PAR2 = "OTHERWISE"; + parameter ERR_AER_TX_REPLAY_ECC2 = "OTHERWISE"; + parameter ERR_AER_TX_REPLAY_ECC1 = "OTHERWISE"; + parameter ERR_AER_SURPRISE_DOWN = "OTHERWISE"; + parameter ERR_AER_DL_PROTOCOL_ERROR = "OTHERWISE"; + parameter ERR_AER_REPLAY_TIMER_TIMEOUT = "OTHERWISE"; + parameter ERR_AER_REPLAY_NUM_ROLLOVER = "OTHERWISE"; + parameter ERR_AER_BAD_DLLP = "OTHERWISE"; + parameter ERR_AER_BAD_TLP = "OTHERWISE"; + parameter ERR_AER_RECEIVER_ERROR = "OTHERWISE"; + parameter P_RX_LIM_H = "DISABLED"; + parameter P_RX_LIM_D = "DISABLED"; + parameter N_RX_LIM_H = "DISABLED"; + parameter N_RX_LIM_D = "DISABLED"; + parameter C_RX_LIM_H = "DISABLED"; + parameter C_RX_LIM_D = "DISABLED"; + parameter P_TX_LIM_H = "DISABLED"; + parameter P_TX_LIM_D = "DISABLED"; + parameter N_TX_LIM_H = "DISABLED"; + parameter N_TX_LIM_D = "DISABLED"; + parameter C_TX_LIM_H = "DISABLED"; + parameter C_TX_LIM_D = "DISABLED"; + parameter MAX_RSA_WAIT = "0b00101000"; + parameter F_ARXDPNULL = "0b00000"; + input LMMICLK; + input LMMIRESET_N; + input LMMIREQUEST; + input LMMIWRRD_N; + input [14:0] LMMIOFFSET; + input [31:0] LMMIWDATA; + output [31:0] LMMIRDATA; + output LMMIRDATAVALID; + output LMMIREADY; + output ACJNOUT; + output ACJPOUT; + input AUXCK; + input CKUSRI; + output CKUSRO; + input ECKIN; + input ECKIND2; + output ECKINDO; + input ERSTN; + input ERSTND2; + input ERXCKD2; + output ERXCKDO; + input ERXRSND2; + input ETXCKD2; + output ETXCKDO; + input ETXRSND2; + output [3:0] FLR; + input [3:0] FLRACK; + input [3:0] MINTLEG; + output MINTO; + input PERSTN; + output [4:0] PMCTRL; + output PMCTRLEN; + input [4:0] PMDPAST; + input PRMSGSD; + input [12:0] PRNOSNP; + input PRNSNPRE; + input [12:0] PRSNOOP; + input PRSNPRE; + input [31:0] PPBDREG; + output [7:0] PPBDSEL; + input REXTCK; + input REXTRST; + input RSTUSRN; + output UDLLKUP; + input ULTSDIS; + output UPLLKUP; + output UTLLKUP; + input [9:0] UCFGADDR; + input [2:0] UCFGF; + output [31:0] UCFGRDD; + output UCFGRDE; + output UCFGRDY; + input UCFGSERD; + input UCFGVD; + input [3:0] UCFGWRBE; + input [31:0] UCFGWRD; + input UCFGWRDN; + input USERAUPD; + input [3:0] USERTRS; + output [12:0] VRXCMDD; + input VRXCINIT; + input [11:0] VRXCNH; + input VRXCNINF; + input VRXCRRE; + output [31:0] VRXD; + output [3:0] VRXDP; + output VRXEOP; + output VRXERR; + output [1:0] VRXF; + input VRXRDY; + output [1:0] VRXSEL; + output VRXSOP; + output VRXVD; + output VXCDINIT; + output [11:0] VXCDNH; + output VTXCRRE; + input [31:0] VXD; + input [3:0] VXDP; + input VXEOP; + input VXEOPN; + output VXRDY; + input VXSOP; + input VXVD; + output [7:0] TESTOUT; + (* iopad_external_pin *) + input S0REFCKN; + (* iopad_external_pin *) + input S0REFCKP; + (* iopad_external_pin *) + input S0REFRET; + (* iopad_external_pin *) + input S0REXT; + (* iopad_external_pin *) + input S0RXN; + (* iopad_external_pin *) + input S0RXP; + (* iopad_external_pin *) + output S0TXN; + (* iopad_external_pin *) + output S0TXP; + input CLKREQI; + output CLKREQO; + output CLKREQOE; +endmodule + +module PDP16K_MODE (...); + parameter DATA_WIDTH_W = "X36"; + parameter DATA_WIDTH_R = "X36"; + parameter OUTREG = "BYPASSED"; + parameter RESETMODE = "SYNC"; + parameter GSR = "ENABLED"; + parameter ECC = "DISABLED"; + parameter INITVAL_00 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_01 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_02 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_03 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_04 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_05 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_06 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_07 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_08 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_09 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_0A = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_0B = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_0C = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_0D = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_0E = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_0F = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_10 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_11 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_12 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_13 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_14 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_15 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_16 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_17 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_18 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_19 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_1A = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_1B = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_1C = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_1D = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_1E = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_1F = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_20 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_21 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_22 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_23 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_24 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_25 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_26 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_27 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_28 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_29 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_2A = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_2B = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_2C = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_2D = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_2E = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_2F = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_30 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_31 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_32 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_33 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_34 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_35 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_36 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_37 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_38 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_39 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_3A = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_3B = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_3C = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_3D = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_3E = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_3F = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter CSDECODE_W = "000"; + parameter CSDECODE_R = "000"; + parameter ASYNC_RST_RELEASE = "SYNC"; + parameter INIT_DATA = "STATIC"; + input DI0; + input DI1; + input DI2; + input DI3; + input DI4; + input DI5; + input DI6; + input DI7; + input DI8; + input DI9; + input DI10; + input DI11; + input DI12; + input DI13; + input DI14; + input DI15; + input DI16; + input DI17; + input DI18; + input DI19; + input DI20; + input DI21; + input DI22; + input DI23; + input DI24; + input DI25; + input DI26; + input DI27; + input DI28; + input DI29; + input DI30; + input DI31; + input DI32; + input DI33; + input DI34; + input DI35; + input ADW0; + input ADW1; + input ADW2; + input ADW3; + input ADW4; + input ADW5; + input ADW6; + input ADW7; + input ADW8; + input ADW9; + input ADW10; + input ADW11; + input ADW12; + input ADW13; + input ADR0; + input ADR1; + input ADR2; + input ADR3; + input ADR4; + input ADR5; + input ADR6; + input ADR7; + input ADR8; + input ADR9; + input ADR10; + input ADR11; + input ADR12; + input ADR13; + input CLKW; + input CLKR; + input CEW; + input CER; + input CSW0; + input CSW1; + input CSW2; + input CSR0; + input CSR1; + input CSR2; + input RST; + output DO0; + output DO1; + output DO2; + output DO3; + output DO4; + output DO5; + output DO6; + output DO7; + output DO8; + output DO9; + output DO10; + output DO11; + output DO12; + output DO13; + output DO14; + output DO15; + output DO16; + output DO17; + output DO18; + output DO19; + output DO20; + output DO21; + output DO22; + output DO23; + output DO24; + output DO25; + output DO26; + output DO27; + output DO28; + output DO29; + output DO30; + output DO31; + output DO32; + output DO33; + output DO34; + output DO35; + output ONEBITERR; + output TWOBITERR; +endmodule + +module PDP16K (...); + parameter DATA_WIDTH_W = "X36"; + parameter DATA_WIDTH_R = "X36"; + parameter OUTREG = "BYPASSED"; + parameter RESETMODE = "SYNC"; + parameter GSR = "ENABLED"; + parameter ECC = "DISABLED"; + parameter INITVAL_00 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_01 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_02 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_03 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_04 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_05 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_06 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_07 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_08 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_09 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_0A = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_0B = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_0C = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_0D = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_0E = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_0F = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_10 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_11 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_12 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_13 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_14 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_15 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_16 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_17 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_18 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_19 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_1A = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_1B = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_1C = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_1D = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_1E = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_1F = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_20 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_21 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_22 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_23 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_24 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_25 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_26 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_27 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_28 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_29 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_2A = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_2B = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_2C = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_2D = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_2E = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_2F = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_30 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_31 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_32 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_33 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_34 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_35 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_36 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_37 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_38 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_39 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_3A = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_3B = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_3C = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_3D = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_3E = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_3F = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter CSDECODE_W = "000"; + parameter CSDECODE_R = "000"; + parameter ASYNC_RST_RELEASE = "SYNC"; + parameter INIT_DATA = "STATIC"; + input [35:0] DI; + input [13:0] ADW; + input [13:0] ADR; + input CLKW; + input CLKR; + input CEW; + input CER; + input [2:0] CSW; + input [2:0] CSR; + input RST; + output [35:0] DO; + output ONEBITERR; + output TWOBITERR; +endmodule + +module PDPSC16K_MODE (...); + parameter DATA_WIDTH_W = "X36"; + parameter DATA_WIDTH_R = "X36"; + parameter OUTREG = "BYPASSED"; + parameter RESETMODE = "SYNC"; + parameter GSR = "ENABLED"; + parameter ECC = "DISABLED"; + parameter INITVAL_00 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_01 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_02 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_03 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_04 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_05 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_06 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_07 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_08 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_09 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_0A = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_0B = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_0C = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_0D = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_0E = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_0F = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_10 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_11 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_12 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_13 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_14 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_15 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_16 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_17 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_18 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_19 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_1A = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_1B = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_1C = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_1D = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_1E = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_1F = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_20 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_21 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_22 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_23 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_24 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_25 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_26 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_27 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_28 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_29 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_2A = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_2B = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_2C = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_2D = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_2E = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_2F = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_30 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_31 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_32 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_33 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_34 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_35 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_36 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_37 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_38 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_39 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_3A = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_3B = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_3C = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_3D = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_3E = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_3F = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter CSDECODE_W = "000"; + parameter CSDECODE_R = "000"; + parameter ASYNC_RST_RELEASE = "SYNC"; + parameter INIT_DATA = "STATIC"; + input DI0; + input DI1; + input DI2; + input DI3; + input DI4; + input DI5; + input DI6; + input DI7; + input DI8; + input DI9; + input DI10; + input DI11; + input DI12; + input DI13; + input DI14; + input DI15; + input DI16; + input DI17; + input DI18; + input DI19; + input DI20; + input DI21; + input DI22; + input DI23; + input DI24; + input DI25; + input DI26; + input DI27; + input DI28; + input DI29; + input DI30; + input DI31; + input DI32; + input DI33; + input DI34; + input DI35; + input ADW0; + input ADW1; + input ADW2; + input ADW3; + input ADW4; + input ADW5; + input ADW6; + input ADW7; + input ADW8; + input ADW9; + input ADW10; + input ADW11; + input ADW12; + input ADW13; + input ADR0; + input ADR1; + input ADR2; + input ADR3; + input ADR4; + input ADR5; + input ADR6; + input ADR7; + input ADR8; + input ADR9; + input ADR10; + input ADR11; + input ADR12; + input ADR13; + input CLK; + input CER; + input CEW; + input CSW0; + input CSW1; + input CSW2; + input CSR0; + input CSR1; + input CSR2; + input RST; + output DO0; + output DO1; + output DO2; + output DO3; + output DO4; + output DO5; + output DO6; + output DO7; + output DO8; + output DO9; + output DO10; + output DO11; + output DO12; + output DO13; + output DO14; + output DO15; + output DO16; + output DO17; + output DO18; + output DO19; + output DO20; + output DO21; + output DO22; + output DO23; + output DO24; + output DO25; + output DO26; + output DO27; + output DO28; + output DO29; + output DO30; + output DO31; + output DO32; + output DO33; + output DO34; + output DO35; + output ONEBITERR; + output TWOBITERR; +endmodule + +module PDPSC16K (...); + parameter DATA_WIDTH_W = "X36"; + parameter DATA_WIDTH_R = "X36"; + parameter OUTREG = "BYPASSED"; + parameter RESETMODE = "SYNC"; + parameter GSR = "ENABLED"; + parameter ECC = "DISABLED"; + parameter INITVAL_00 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_01 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_02 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_03 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_04 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_05 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_06 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_07 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_08 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_09 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_0A = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_0B = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_0C = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_0D = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_0E = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_0F = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_10 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_11 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_12 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_13 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_14 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_15 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_16 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_17 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_18 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_19 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_1A = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_1B = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_1C = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_1D = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_1E = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_1F = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_20 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_21 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_22 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_23 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_24 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_25 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_26 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_27 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_28 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_29 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_2A = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_2B = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_2C = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_2D = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_2E = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_2F = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_30 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_31 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_32 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_33 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_34 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_35 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_36 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_37 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_38 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_39 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_3A = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_3B = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_3C = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_3D = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_3E = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_3F = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter CSDECODE_W = "000"; + parameter CSDECODE_R = "000"; + parameter ASYNC_RST_RELEASE = "SYNC"; + parameter INIT_DATA = "STATIC"; + input [35:0] DI; + input [13:0] ADW; + input [13:0] ADR; + input CLK; + input CER; + input CEW; + input [2:0] CSW; + input [2:0] CSR; + input RST; + output [35:0] DO; + output ONEBITERR; + output TWOBITERR; +endmodule + +module PDPSC512K (...); + parameter OUTREG = "NO_REG"; + parameter GSR = "ENABLED"; + parameter RESETMODE = "SYNC"; + parameter INITVAL_00 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_01 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_02 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_03 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_04 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_05 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_06 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_07 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_08 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_09 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_0A = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_0B = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_0C = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_0D = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_0E = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_0F = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_10 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_11 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_12 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_13 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_14 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_15 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_16 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_17 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_18 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_19 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_1A = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_1B = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_1C = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_1D = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_1E = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_1F = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_20 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_21 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_22 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_23 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_24 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_25 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_26 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_27 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_28 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_29 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_2A = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_2B = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_2C = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_2D = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_2E = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_2F = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_30 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_31 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_32 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_33 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_34 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_35 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_36 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_37 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_38 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_39 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_3A = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_3B = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_3C = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_3D = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_3E = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_3F = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_40 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_41 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_42 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_43 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_44 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_45 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_46 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_47 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_48 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_49 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_4A = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_4B = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_4C = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_4D = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_4E = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_4F = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_50 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_51 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_52 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_53 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_54 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_55 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_56 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_57 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_58 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_59 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_5A = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_5B = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_5C = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_5D = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_5E = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_5F = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_60 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_61 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_62 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_63 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_64 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_65 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_66 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_67 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_68 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_69 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_6A = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_6B = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_6C = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_6D = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_6E = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_6F = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_70 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_71 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_72 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_73 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_74 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_75 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_76 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_77 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_78 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_79 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_7A = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_7B = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_7C = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_7D = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_7E = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_7F = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter ASYNC_RESET_RELEASE = "SYNC"; + parameter ECC_BYTE_SEL = "ECC_EN"; + input [31:0] DI; + input [13:0] ADW; + input [13:0] ADR; + input CLK; + input CEW; + input CER; + input WE; + input CSW; + input CSR; + input RSTR; + input [3:0] BYTEEN_N; + output [31:0] DO; + output [1:0] ERRDECA; + output [1:0] ERRDECB; +endmodule + +module PLL (...); + parameter BW_CTL_BIAS = "0b0101"; + parameter CLKOP_TRIM = "0b0000"; + parameter CLKOS_TRIM = "0b0000"; + parameter CLKOS2_TRIM = "0b0000"; + parameter CLKOS3_TRIM = "0b0000"; + parameter CLKOS4_TRIM = "0b0000"; + parameter CLKOS5_TRIM = "0b0000"; + parameter CRIPPLE = "5P"; + parameter CSET = "40P"; + parameter DELAY_CTRL = "200PS"; + parameter DELA = "0"; + parameter DELB = "0"; + parameter DELC = "0"; + parameter DELD = "0"; + parameter DELE = "0"; + parameter DELF = "0"; + parameter DIRECTION = "DISABLED"; + parameter DIVA = "0"; + parameter DIVB = "0"; + parameter DIVC = "0"; + parameter DIVD = "0"; + parameter DIVE = "0"; + parameter DIVF = "0"; + parameter DYN_SEL = "0b000"; + parameter DYN_SOURCE = "STATIC"; + parameter ENCLK_CLKOP = "DISABLED"; + parameter ENCLK_CLKOS = "DISABLED"; + parameter ENCLK_CLKOS2 = "DISABLED"; + parameter ENCLK_CLKOS3 = "DISABLED"; + parameter ENCLK_CLKOS4 = "DISABLED"; + parameter ENCLK_CLKOS5 = "DISABLED"; + parameter ENABLE_SYNC = "DISABLED"; + parameter FAST_LOCK_EN = "ENABLED"; + parameter V2I_1V_EN = "DISABLED"; + parameter FBK_CUR_BLE = "0b00000000"; + parameter FBK_EDGE_SEL = "POSITIVE"; + parameter FBK_IF_TIMING_CTL = "0b00"; + parameter FBK_INTEGER_MODE = "DISABLED"; + parameter FBK_MASK = "0b00001000"; + parameter FBK_MMD_DIG = "8"; + parameter FBK_MMD_PULS_CTL = "0b0000"; + parameter FBK_MODE = "0b00"; + parameter FBK_PI_BYPASS = "NOT_BYPASSED"; + parameter FBK_PI_RC = "0b1100"; + parameter FBK_PR_CC = "0b0000"; + parameter FBK_PR_IC = "0b1000"; + parameter FLOAT_CP = "DISABLED"; + parameter FLOCK_CTRL = "2X"; + parameter FLOCK_EN = "ENABLED"; + parameter FLOCK_SRC_SEL = "REFCLK"; + parameter FORCE_FILTER = "DISABLED"; + parameter I_CTRL = "10UA"; + parameter IPI_CMP = "0b1000"; + parameter IPI_CMPN = "0b0011"; + parameter IPI_COMP_EN = "DISABLED"; + parameter IPP_CTRL = "0b1000"; + parameter IPP_SEL = "0b1111"; + parameter KP_VCO = "0b11001"; + parameter LDT_INT_LOCK_STICKY = "DISABLED"; + parameter LDT_LOCK = "1536CYC"; + parameter LDT_LOCK_SEL = "U_FREQ"; + parameter LEGACY_ATT = "DISABLED"; + parameter LOAD_REG = "DISABLED"; + parameter OPENLOOP_EN = "DISABLED"; + parameter PHIA = "0"; + parameter PHIB = "0"; + parameter PHIC = "0"; + parameter PHID = "0"; + parameter PHIE = "0"; + parameter PHIF = "0"; + parameter PLLPDN_EN = "DISABLED"; + parameter PLLPD_N = "UNUSED"; + parameter PLLRESET_ENA = "DISABLED"; + parameter REF_INTEGER_MODE = "DISABLED"; + parameter REF_MASK = "0b00000000"; + parameter REF_MMD_DIG = "8"; + parameter REF_MMD_IN = "0b00001000"; + parameter REF_MMD_PULS_CTL = "0b0000"; + parameter REF_TIMING_CTL = "0b00"; + parameter REFIN_RESET = "SET"; + parameter RESET_LF = "DISABLED"; + parameter ROTATE = "DISABLED"; + parameter SEL_OUTA = "DISABLED"; + parameter SEL_OUTB = "DISABLED"; + parameter SEL_OUTC = "DISABLED"; + parameter SEL_OUTD = "DISABLED"; + parameter SEL_OUTE = "DISABLED"; + parameter SEL_OUTF = "DISABLED"; + parameter SLEEP = "DISABLED"; + parameter SSC_DITHER = "DISABLED"; + parameter SSC_EN_CENTER_IN = "DOWN_TRIANGLE"; + parameter SSC_EN_SDM = "DISABLED"; + parameter SSC_EN_SSC = "DISABLED"; + parameter SSC_F_CODE = "0b000000000000000"; + parameter SSC_N_CODE = "0b000010100"; + parameter SSC_ORDER = "SDM_ORDER2"; + parameter SSC_PI_BYPASS = "NOT_BYPASSED"; + parameter SSC_REG_WEIGHTING_SEL = "0b000"; + parameter SSC_SQUARE_MODE = "DISABLED"; + parameter SSC_STEP_IN = "0b0000000"; + parameter SSC_TBASE = "0b000000000000"; + parameter STDBY_ATT = "DISABLED"; + parameter TRIMOP_BYPASS_N = "BYPASSED"; + parameter TRIMOS_BYPASS_N = "BYPASSED"; + parameter TRIMOS2_BYPASS_N = "BYPASSED"; + parameter TRIMOS3_BYPASS_N = "BYPASSED"; + parameter TRIMOS4_BYPASS_N = "BYPASSED"; + parameter TRIMOS5_BYPASS_N = "BYPASSED"; + parameter V2I_KVCO_SEL = "85"; + parameter V2I_PP_ICTRL = "0b00110"; + parameter V2I_PP_RES = "10K"; + parameter CLKMUX_FB = "CMUX_CLKOP"; + parameter SEL_FBK = "DIVA"; + parameter DIV_DEL = "0b0000001"; + parameter PHASE_SEL_DEL = "0b000"; + parameter PHASE_SEL_DEL_P1 = "0b000"; + parameter EXTERNAL_DIVIDE_FACTOR = "0"; + output INTFBKOP; + output INTFBKOS; + output INTFBKOS2; + output INTFBKOS3; + output INTFBKOS4; + output INTFBKOS5; + input DIR; + input [2:0] DIRSEL; + input LOADREG; + input DYNROTATE; + input LMMICLK; + input LMMIRESET_N; + input LMMIREQUEST; + input LMMIWRRD_N; + input [6:0] LMMIOFFSET; + input [7:0] LMMIWDATA; + output [7:0] LMMIRDATA; + output LMMIRDATAVALID; + output LMMIREADY; + input PLLPOWERDOWN_N; + input REFCK; + output CLKOP; + output CLKOS; + output CLKOS2; + output CLKOS3; + output CLKOS4; + output CLKOS5; + input ENCLKOP; + input ENCLKOS; + input ENCLKOS2; + input ENCLKOS3; + input ENCLKOS4; + input ENCLKOS5; + input FBKCK; + output INTLOCK; + input LEGACY; + output LEGRDYN; + output LOCK; + output PFDDN; + output PFDUP; + input PLLRESET; + input STDBY; + output REFMUXCK; + output REGQA; + output REGQB; + output REGQB1; + output CLKOUTDL; + input ROTDEL; + input DIRDEL; + input ROTDELP1; + input [4:0] GRAYTEST; + input [1:0] BINTEST; + input DIRDELP1; + input [4:0] GRAYACT; + input [1:0] BINACT; +endmodule + +module PREADD9 (...); + parameter SIGNEDSTATIC_EN = "DISABLED"; + parameter SUBSTRACT_EN = "SUBTRACTION"; + parameter CSIGNED = "DISABLED"; + parameter BSIGNED_OPERAND_EN = "DISABLED"; + parameter BYPASS_PREADD9 = "USED"; + parameter REGBYPSBR0 = "REGISTER"; + parameter REGBYPSBR1 = "BYPASS"; + parameter REGBYPSBL = "REGISTER"; + parameter SHIFTBR = "REGISTER"; + parameter SHIFTBL = "REGISTER"; + parameter GSR = "ENABLED"; + parameter PREADDCAS_EN = "DISABLED"; + parameter SR_18BITSHIFT_EN = "DISABLED"; + parameter OPC = "INPUT_B_AS_PREADDER_OPERAND"; + parameter RESET = "SYNC"; + input [8:0] B; + input BSIGNED; + input [9:0] C; + input [8:0] BRS1; + input [8:0] BRS2; + input [8:0] BLS1; + input [8:0] BLS2; + input BRSS1; + input BRSS2; + input BLSS1; + input BLSS2; + input PRCASIN; + input CLK; + input RSTB; + input CEB; + input RSTCL; + input CECL; + output [8:0] BRSO; + output [8:0] BLSO; + output BRSOSGND; + output BLSOSGND; + output PRCASOUT; + output [8:0] BR; + output BRSIGNED; +endmodule + +module REFMUX (...); + parameter REFSEL_ATT = "MC1"; + parameter SEL1 = "SELECT_REFCLK1"; + parameter SEL_REF2 = "REFCLK2_0"; + parameter SEL_REF1 = "REFCLK1_0"; + output REFCK; + output ZRSEL3; + input REFSEL; + input [7:0] REFCLK1; + input [7:0] REFCLK2; +endmodule + +module REG18 (...); + parameter REGBYPS = "REGISTER"; + parameter GSR = "ENABLED"; + parameter RESET = "SYNC"; + input [17:0] PM; + output [17:0] PP; + input CEP; + input RSTP; + input CLK; +endmodule + +(* keep *) +module SEDC (...); + parameter SEDCEN = "DIS"; + input SEDENABLE; + input SEDCCOF; + input SEDCENABLE; + input SEDCMODE; + input SEDCSTART; + output SEDCBUSY; + output SEDCERR; + output SEDCERRC; + output SEDCERRCRC; + output SEDCERRM; + output [15:0] SEDCFRMERRLOC; + input OSCCLKSEDC; + input RSTSEDC; + output [12:0] SEDCDSRERRLOCCIB; +endmodule + +module SEIO18 (...); + parameter PULLMODE = "DOWN"; + parameter MIPI = "DISABLED"; + parameter ENADC_IN = "DISABLED"; + input PADDO; + input DOLP; + (* iopad_external_pin *) + inout IOPAD; + output PADDI; + output INLP; + input PADDT; + output INADC; +endmodule + +module SEIO33 (...); + parameter PULLMODE = "DOWN"; + (* iopad_external_pin *) + inout IOPAD; + output PADDI; + input PADDO; + input PADDT; + input I3CRESEN; + input I3CWKPU; +endmodule + +module SGMIICDR (...); + parameter GSR = "ENABLED"; + parameter DCOITUNE4LSB = "0_PERCENT"; + parameter DCOCTLGI = "0_PERCENT"; + parameter DCOSTEP = "100_PERCENT"; + parameter DCOCALDIV = "100_PERCENT"; + parameter DCOIOSTUNE = "0_PERCENT"; + parameter DCOFLTDAC = "80MHZ"; + parameter DCOSTARTVAL = "NOMINAL"; + parameter DCONUOFLSB = "NEG_60_PERCENT"; + parameter RPWDNB = "POWER_UP"; + parameter CDR_CNT4SEL = "BYPASSED"; + parameter DCOITUNE = "100_PERCENT"; + parameter BAND_THRESHOLD = "0b000000"; + parameter AUTO_FACQ_EN = "ENABLED"; + parameter AUTO_CALIB_EN = "ENABLED"; + parameter CDR_LOL_SET = "1000_PPM"; + parameter FC2DCO_FLOOP = "DISABLED"; + parameter FC2DCO_DLOOP = "DISABLED"; + parameter CALIB_TIME_SEL = "24_CYC"; + parameter CALIB_CK_MODE = "BY_2"; + parameter BAND_CALIB_MODE = "256_FDBK_CLK_CYC"; + parameter REG_BAND_SEL = "0b00000"; + parameter REG_BAND_OFFSET = "0b0000"; + parameter REG_IDAC_SEL = "0b00000000"; + parameter LB_CTL = "DISABLED"; + parameter REG_IDAC_EN = "DISABLED"; + parameter ATDCFG = "0_PS"; + parameter ATDDLY = "0_PS"; + parameter BDAVOID_ENB = "ENABLED"; + parameter BYPASSATD = "NOT_BYPASS"; + parameter DCOIUPDNX2 = "1X"; + parameter IDAC_EN = "DISABLED"; + parameter FB_CLK_DIV = "0b010"; + parameter EN_RECALIB = "ENABLED"; + input LMMICLK; + input LMMIRESET_N; + input LMMIREQUEST; + input LMMIWRRD_N; + input [3:0] LMMIOFFSET; + input [7:0] LMMIWDATA; + output [7:0] LMMIRDATA; + output LMMIRDATAVALID; + output LMMIREADY; + input DCALIRST; + input DFACQRST; + input RRST; + input SPCLK; + output SRCLK; + output [9:0] SRXD; + input RSTBFBW; + input RSTBRXF; + input SGMIIIN; + input SREFCLK; + output CDRLOL; +endmodule + +module SP16K_MODE (...); + parameter DATA_WIDTH = "X18"; + parameter OUTREG = "BYPASSED"; + parameter RESETMODE = "SYNC"; + parameter GSR = "ENABLED"; + parameter INITVAL_00 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_01 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_02 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_03 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_04 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_05 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_06 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_07 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_08 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_09 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_0A = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_0B = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_0C = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_0D = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_0E = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_0F = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_10 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_11 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_12 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_13 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_14 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_15 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_16 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_17 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_18 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_19 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_1A = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_1B = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_1C = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_1D = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_1E = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_1F = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_20 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_21 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_22 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_23 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_24 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_25 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_26 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_27 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_28 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_29 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_2A = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_2B = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_2C = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_2D = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_2E = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_2F = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_30 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_31 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_32 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_33 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_34 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_35 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_36 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_37 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_38 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_39 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_3A = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_3B = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_3C = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_3D = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_3E = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_3F = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter CSDECODE = "000"; + parameter ASYNC_RST_RELEASE = "SYNC"; + parameter INIT_DATA = "STATIC"; + input DI0; + input DI1; + input DI2; + input DI3; + input DI4; + input DI5; + input DI6; + input DI7; + input DI8; + input DI9; + input DI10; + input DI11; + input DI12; + input DI13; + input DI14; + input DI15; + input DI16; + input DI17; + input AD0; + input AD1; + input AD2; + input AD3; + input AD4; + input AD5; + input AD6; + input AD7; + input AD8; + input AD9; + input AD10; + input AD11; + input AD12; + input AD13; + input CLK; + input CE; + input WE; + input CS0; + input CS1; + input CS2; + input RST; + output DO0; + output DO1; + output DO2; + output DO3; + output DO4; + output DO5; + output DO6; + output DO7; + output DO8; + output DO9; + output DO10; + output DO11; + output DO12; + output DO13; + output DO14; + output DO15; + output DO16; + output DO17; +endmodule + +module SP16K (...); + parameter DATA_WIDTH = "X18"; + parameter OUTREG = "BYPASSED"; + parameter RESETMODE = "SYNC"; + parameter GSR = "ENABLED"; + parameter INITVAL_00 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_01 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_02 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_03 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_04 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_05 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_06 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_07 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_08 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_09 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_0A = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_0B = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_0C = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_0D = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_0E = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_0F = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_10 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_11 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_12 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_13 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_14 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_15 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_16 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_17 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_18 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_19 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_1A = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_1B = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_1C = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_1D = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_1E = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_1F = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_20 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_21 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_22 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_23 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_24 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_25 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_26 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_27 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_28 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_29 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_2A = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_2B = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_2C = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_2D = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_2E = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_2F = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_30 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_31 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_32 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_33 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_34 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_35 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_36 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_37 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_38 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_39 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_3A = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_3B = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_3C = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_3D = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_3E = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_3F = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter CSDECODE = "000"; + parameter ASYNC_RST_RELEASE = "SYNC"; + parameter INIT_DATA = "STATIC"; + input [17:0] DI; + input [13:0] AD; + input CLK; + input CE; + input WE; + input [2:0] CS; + input RST; + output [17:0] DO; +endmodule + +module SP512K (...); + parameter OUTREG = "NO_REG"; + parameter GSR = "ENABLED"; + parameter RESETMODE = "SYNC"; + parameter INITVAL_00 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_01 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_02 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_03 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_04 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_05 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_06 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_07 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_08 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_09 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_0A = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_0B = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_0C = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_0D = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_0E = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_0F = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_10 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_11 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_12 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_13 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_14 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_15 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_16 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_17 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_18 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_19 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_1A = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_1B = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_1C = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_1D = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_1E = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_1F = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_20 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_21 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_22 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_23 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_24 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_25 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_26 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_27 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_28 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_29 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_2A = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_2B = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_2C = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_2D = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_2E = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_2F = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_30 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_31 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_32 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_33 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_34 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_35 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_36 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_37 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_38 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_39 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_3A = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_3B = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_3C = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_3D = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_3E = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_3F = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_40 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_41 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_42 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_43 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_44 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_45 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_46 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_47 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_48 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_49 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_4A = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_4B = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_4C = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_4D = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_4E = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_4F = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_50 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_51 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_52 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_53 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_54 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_55 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_56 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_57 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_58 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_59 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_5A = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_5B = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_5C = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_5D = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_5E = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_5F = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_60 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_61 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_62 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_63 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_64 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_65 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_66 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_67 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_68 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_69 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_6A = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_6B = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_6C = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_6D = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_6E = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_6F = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_70 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_71 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_72 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_73 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_74 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_75 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_76 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_77 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_78 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_79 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_7A = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_7B = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_7C = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_7D = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_7E = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_7F = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter ASYNC_RESET_RELEASE = "SYNC"; + parameter ECC_BYTE_SEL = "ECC_EN"; + input [31:0] DI; + input [13:0] AD; + input CLK; + input CE; + input WE; + input CS; + input RSTOUT; + input CEOUT; + input [3:0] BYTEEN_N; + output [31:0] DO; + output [1:0] ERRDECA; + output [1:0] ERRDECB; +endmodule + +module TSHX2DQS (...); + parameter GSR = "ENABLED"; + input T0; + input T1; + input DQSW; + input ECLK; + input SCLK; + input RST; + output Q; +endmodule + +module TSHX2DQ (...); + parameter GSR = "ENABLED"; + input T0; + input T1; + input DQSW270; + input ECLK; + input SCLK; + input RST; + output Q; +endmodule + +module TSHX4DQS (...); + parameter GSR = "ENABLED"; + input T0; + input T1; + input T2; + input T3; + input DQSW; + input ECLK; + input SCLK; + input RST; + output Q; +endmodule + +module TSHX4DQ (...); + parameter GSR = "ENABLED"; + input T0; + input T1; + input T2; + input T3; + input DQSW270; + input ECLK; + input SCLK; + input RST; + output Q; +endmodule + +(* keep *) +module WDT (...); + parameter WDTEN = "DIS"; + parameter WDTMODE = "SINGLE"; + parameter WDTVALUE = "0b000000000000000000"; + input WDTRELOAD; + input WDT_CLK; + input WDT_RST; +endmodule + +module MIPI (...); + parameter MIPI_ID = "0"; + (* iopad_external_pin *) + inout BP; + (* iopad_external_pin *) + inout BN; + input AP; + input AN; + input TP; + input TN; + input IHS; + input HSRXEN; + input HSTXEN; + output OHS; + output OLSP; + output OLSN; +endmodule + +(* keep *) +module CONFIG_IP_CORE (...); + parameter DONEPHASE = "DIS"; + parameter DSRFCTRL = "0b00"; + parameter ENTSALL = "DIS"; + parameter MCCFGUSEREN = "DIS"; + parameter MCCIBINT = "DIS"; + parameter MCHSEUSEREN = "DIS"; + parameter MCJTAGDISABLE = "EN"; + parameter MCPERSISTUI2C = "DIS"; + parameter MCSPARE = "0b00000"; + parameter MCUCLKSEL = "DIS"; + parameter MCUI2CAFWKUP = "DIS"; + parameter PERSISTI2C = "DIS"; + parameter PERSISTI3C = "DIS"; + parameter PERSISTMQUAD = "DIS"; + parameter PERSISTMSPI = "DIS"; + parameter PERSISTSHEXA = "DIS"; + parameter PERSISTSOCTA = "DIS"; + parameter PERSISTSQUAD = "DIS"; + parameter PERSISTSSPI = "DIS"; + parameter PERSISTWKUP = "DIS"; + parameter PPTQOUT = "0b0000"; + parameter SCANEN = "DIS"; + parameter SYNCEXTDONE = "DIS"; + parameter TRANECI = "DIS"; + parameter TRANHSE = "DIS"; + parameter TRANSBI = "DIS"; + parameter TSALLINV = "NINV"; + parameter WLSLEW = "DIS"; + output CFGDONECIB; + input CIBTSALL; + output FREEZEIOCIB; + output LASTADDRCIB15; + output LASTADDRCIB14; + output LASTADDRCIB13; + output LASTADDRCIB12; + output LASTADDRCIB11; + output LASTADDRCIB10; + output LASTADDRCIB9; + output LASTADDRCIB8; + output LASTADDRCIB7; + output LASTADDRCIB6; + output LASTADDRCIB5; + output LASTADDRCIB4; + output LASTADDRCIB3; + output LASTADDRCIB2; + output LASTADDRCIB1; + output LASTADDRCIB0; + input MBISTENABLEN; + output MBISTRRMATCH; + input MBISTTRRAEN; +endmodule + +module TSALLA (...); + input TSALL; +endmodule + +module OSCA (...); + parameter HF_CLK_DIV = "1"; + parameter HF_SED_SEC_DIV = "1"; + parameter HF_OSC_EN = "ENABLED"; + parameter LF_OUTPUT_EN = "DISABLED"; + input HFOUTEN; + input HFSDSCEN; + output HFCLKOUT; + output LFCLKOUT; + output HFCLKCFG; + output HFSDCOUT; +endmodule + +module OSC (...); + parameter DTR_EN = "ENABLED"; + parameter HF_CLK_DIV = "1"; + parameter HF_SED_SEC_DIV = "1"; + parameter HF_FABRIC_EN = "DISABLED"; + parameter HF_OSC_EN = "ENABLED"; + parameter HFDIV_FABRIC_EN = "ENABLED"; + parameter LF_FABRIC_EN = "DISABLED"; + parameter LF_OUTPUT_EN = "DISABLED"; + parameter DEBUG_N = "DISABLED"; + parameter MCJTAGGSRNDIS = "EN"; + parameter MCLMMIGSRNDIS = "EN"; + parameter MCSEDCGSRNDIS = "EN"; + parameter MCWDTGSRNDIS = "EN"; + parameter SMCLK_DIV = "3"; + output HFCLKOUT; + input HFSDSCEN; + output LFCLKOUT; + output HFSDCOUT; + output HSE_CLK; + input JTAG_LRST_N; + input LMMI_CLK; + output LMMI_CLK_O; + input LMMI_LRST_N; + output LMMI_RST; + input SEDC_CLK; + input SEDC_LRST_N; + output SEDC_RST; + output CFG_CLK; + output SMCLK_RST; + output WDT_CLK; + input WDT_LRST_N; + output WDT_RST; +endmodule + +module ACC54_CORE (...); + parameter SIGN = "DISABLED"; + parameter M9ADDSUB_CTRL = "ADDITION"; + parameter ADDSUB_CTRL = "ADD_ADD_CTRL_54_BIT_ADDER"; + parameter STATICOPCODE_EN = "DISABLED"; + parameter OUTREGBYPS = "REGISTER"; + parameter GSR = "ENABLED"; + parameter PROGCONST = "0b000000000000000000000000000000000000000000000000000000"; + parameter CONSTSEL = "BYPASS"; + parameter DSPCASCADE = "DISABLED"; + parameter ACC108CASCADE = "BYPASSCASCADE"; + parameter ACCUMODE = "MODE0"; + parameter ACCUBYPS = "USED"; + parameter CREGBYPS1 = "REGISTER"; + parameter CREGBYPS2 = "REGISTER"; + parameter CREGBYPS3 = "REGISTER"; + parameter CINREGBYPS1 = "REGISTER"; + parameter CINREGBYPS2 = "REGISTER"; + parameter CINREGBYPS3 = "REGISTER"; + parameter LOADREGBYPS1 = "REGISTER"; + parameter LOADREGBYPS2 = "REGISTER"; + parameter LOADREGBYPS3 = "REGISTER"; + parameter M9ADDSUBREGBYPS1 = "REGISTER"; + parameter M9ADDSUBREGBYPS2 = "REGISTER"; + parameter M9ADDSUBREGBYPS3 = "REGISTER"; + parameter ADDSUBSIGNREGBYPS1 = "REGISTER"; + parameter ADDSUBSIGNREGBYPS2 = "REGISTER"; + parameter ADDSUBSIGNREGBYPS3 = "REGISTER"; + parameter ROUNDHALFUP = "DISABLED"; + parameter ROUNDRTZI = "ROUND_TO_ZERO"; + parameter ROUNDBIT = "ROUND_TO_BIT0"; + parameter CASCOUTREGBYPS = "REGISTER"; + parameter SFTEN = "DISABLED"; + parameter RESET = "SYNC"; + input SFTCTRL3; + input SFTCTRL2; + input SFTCTRL1; + input SFTCTRL0; + input DSPIN53; + input DSPIN52; + input DSPIN51; + input DSPIN50; + input DSPIN49; + input DSPIN48; + input DSPIN47; + input DSPIN46; + input DSPIN45; + input DSPIN44; + input DSPIN43; + input DSPIN42; + input DSPIN41; + input DSPIN40; + input DSPIN39; + input DSPIN38; + input DSPIN37; + input DSPIN36; + input DSPIN35; + input DSPIN34; + input DSPIN33; + input DSPIN32; + input DSPIN31; + input DSPIN30; + input DSPIN29; + input DSPIN28; + input DSPIN27; + input DSPIN26; + input DSPIN25; + input DSPIN24; + input DSPIN23; + input DSPIN22; + input DSPIN21; + input DSPIN20; + input DSPIN19; + input DSPIN18; + input DSPIN17; + input DSPIN16; + input DSPIN15; + input DSPIN14; + input DSPIN13; + input DSPIN12; + input DSPIN11; + input DSPIN10; + input DSPIN9; + input DSPIN8; + input DSPIN7; + input DSPIN6; + input DSPIN5; + input DSPIN4; + input DSPIN3; + input DSPIN2; + input DSPIN1; + input DSPIN0; + input PP71; + input PP70; + input PP69; + input PP68; + input PP67; + input PP66; + input PP65; + input PP64; + input PP63; + input PP62; + input PP61; + input PP60; + input PP59; + input PP58; + input PP57; + input PP56; + input PP55; + input PP54; + input PP53; + input PP52; + input PP51; + input PP50; + input PP49; + input PP48; + input PP47; + input PP46; + input PP45; + input PP44; + input PP43; + input PP42; + input PP41; + input PP40; + input PP39; + input PP38; + input PP37; + input PP36; + input PP35; + input PP34; + input PP33; + input PP32; + input PP31; + input PP30; + input PP29; + input PP28; + input PP27; + input PP26; + input PP25; + input PP24; + input PP23; + input PP22; + input PP21; + input PP20; + input PP19; + input PP18; + input PP17; + input PP16; + input PP15; + input PP14; + input PP13; + input PP12; + input PP11; + input PP10; + input PP9; + input PP8; + input PP7; + input PP6; + input PP5; + input PP4; + input PP3; + input PP2; + input PP1; + input PP0; + input CINPUT53; + input CINPUT52; + input CINPUT51; + input CINPUT50; + input CINPUT49; + input CINPUT48; + input CINPUT47; + input CINPUT46; + input CINPUT45; + input CINPUT44; + input CINPUT43; + input CINPUT42; + input CINPUT41; + input CINPUT40; + input CINPUT39; + input CINPUT38; + input CINPUT37; + input CINPUT36; + input CINPUT35; + input CINPUT34; + input CINPUT33; + input CINPUT32; + input CINPUT31; + input CINPUT30; + input CINPUT29; + input CINPUT28; + input CINPUT27; + input CINPUT26; + input CINPUT25; + input CINPUT24; + input CINPUT23; + input CINPUT22; + input CINPUT21; + input CINPUT20; + input CINPUT19; + input CINPUT18; + input CINPUT17; + input CINPUT16; + input CINPUT15; + input CINPUT14; + input CINPUT13; + input CINPUT12; + input CINPUT11; + input CINPUT10; + input CINPUT9; + input CINPUT8; + input CINPUT7; + input CINPUT6; + input CINPUT5; + input CINPUT4; + input CINPUT3; + input CINPUT2; + input CINPUT1; + input CINPUT0; + input LOAD; + input M9ADDSUB1; + input M9ADDSUB0; + input ADDSUB1; + input ADDSUB0; + input CIN; + input CASIN1; + input CASIN0; + input CEO; + input RSTO; + input CEC; + input RSTC; + input CLK; + input SIGNEDI; + output SUM135; + output SUM134; + output SUM133; + output SUM132; + output SUM131; + output SUM130; + output SUM129; + output SUM128; + output SUM127; + output SUM126; + output SUM125; + output SUM124; + output SUM123; + output SUM122; + output SUM121; + output SUM120; + output SUM119; + output SUM118; + output SUM117; + output SUM116; + output SUM115; + output SUM114; + output SUM113; + output SUM112; + output SUM111; + output SUM110; + output SUM19; + output SUM18; + output SUM17; + output SUM16; + output SUM15; + output SUM14; + output SUM13; + output SUM12; + output SUM11; + output SUM10; + output SUM035; + output SUM034; + output SUM033; + output SUM032; + output SUM031; + output SUM030; + output SUM029; + output SUM028; + output SUM027; + output SUM026; + output SUM025; + output SUM024; + output SUM023; + output SUM022; + output SUM021; + output SUM020; + output SUM019; + output SUM018; + output SUM017; + output SUM016; + output SUM015; + output SUM014; + output SUM013; + output SUM012; + output SUM011; + output SUM010; + output SUM09; + output SUM08; + output SUM07; + output SUM06; + output SUM05; + output SUM04; + output SUM03; + output SUM02; + output SUM01; + output SUM00; + output DSPOUT53; + output DSPOUT52; + output DSPOUT51; + output DSPOUT50; + output DSPOUT49; + output DSPOUT48; + output DSPOUT47; + output DSPOUT46; + output DSPOUT45; + output DSPOUT44; + output DSPOUT43; + output DSPOUT42; + output DSPOUT41; + output DSPOUT40; + output DSPOUT39; + output DSPOUT38; + output DSPOUT37; + output DSPOUT36; + output DSPOUT35; + output DSPOUT34; + output DSPOUT33; + output DSPOUT32; + output DSPOUT31; + output DSPOUT30; + output DSPOUT29; + output DSPOUT28; + output DSPOUT27; + output DSPOUT26; + output DSPOUT25; + output DSPOUT24; + output DSPOUT23; + output DSPOUT22; + output DSPOUT21; + output DSPOUT20; + output DSPOUT19; + output DSPOUT18; + output DSPOUT17; + output DSPOUT16; + output DSPOUT15; + output DSPOUT14; + output DSPOUT13; + output DSPOUT12; + output DSPOUT11; + output DSPOUT10; + output DSPOUT9; + output DSPOUT8; + output DSPOUT7; + output DSPOUT6; + output DSPOUT5; + output DSPOUT4; + output DSPOUT3; + output DSPOUT2; + output DSPOUT1; + output DSPOUT0; + output CASCOUT1; + output CASCOUT0; + input ROUNDEN; + input CECIN; + input CECTRL; + input RSTCIN; + input RSTCTRL; +endmodule + +module ADC_CORE (...); + parameter ADC_ENP = "ENABLED"; + parameter CLK_DIV = "2"; + parameter CTLCOMPSW1 = "DISABLED"; + parameter CTLCOMPSW2 = "DISABLED"; + parameter CTLCOMPSW3 = "DISABLED"; + parameter DF = "STRAIGHT_BINARY"; + parameter EN_COMP1 = "ENABLED"; + parameter EN_COMP2 = "ENABLED"; + parameter EN_COMP3 = "ENABLED"; + parameter OMA = "BIPOLAR"; + parameter OMB = "BIPOLAR"; + parameter REFBUFAEN = "ENABLED"; + parameter REFBUFBEN = "ENABLED"; + parameter SLEEP = "DISABLED"; + parameter VREFACFG = "1P0_TO_1P2"; + parameter VREFASEL = "INTERNAL"; + parameter VREFBCFG = "1P0_TO_1P2"; + parameter VREFBSEL = "INTERNAL"; + input ADCEN; + input CAL; + output CALRDY; + input CHAEN; + input CHASEL3; + input CHASEL2; + input CHASEL1; + input CHASEL0; + input CHBEN; + input CHBSEL3; + input CHBSEL2; + input CHBSEL1; + input CHBSEL0; + input CLKDCLK; + input CLKFAB; + output COG; + input COMP1IN; + input COMP1IP; + output COMP1OL; + input COMP2IN; + input COMP2IP; + output COMP2OL; + input COMP3IN; + input COMP3IP; + output COMP3OL; + input CONVSTOP; + output DA11; + output DA10; + output DA9; + output DA8; + output DA7; + output DA6; + output DA5; + output DA4; + output DA3; + output DA2; + output DA1; + output DA0; + output DB11; + output DB10; + output DB9; + output DB8; + output DB7; + output DB6; + output DB5; + output DB4; + output DB3; + output DB2; + output DB1; + output DB0; + (* iopad_external_pin *) + input DN1; + (* iopad_external_pin *) + input DN0; + (* iopad_external_pin *) + input DP1; + (* iopad_external_pin *) + input DP0; + output EOC; + input GPION15; + input GPION14; + input GPION13; + input GPION12; + input GPION11; + input GPION10; + input GPION9; + input GPION8; + input GPION7; + input GPION6; + input GPION5; + input GPION4; + input GPION3; + input GPION2; + input GPION1; + input GPION0; + input GPIOP15; + input GPIOP14; + input GPIOP13; + input GPIOP12; + input GPIOP11; + input GPIOP10; + input GPIOP9; + input GPIOP8; + input GPIOP7; + input GPIOP6; + input GPIOP5; + input GPIOP4; + input GPIOP3; + input GPIOP2; + input GPIOP1; + input GPIOP0; + input RESETN; + input RSTN; + input RSVDH; + input RSVDL; + input SOC; + output COMP1O; + output COMP2O; + output COMP3O; +endmodule + +module ALUREG_CORE (...); + parameter ALURST_ACTIVELOW = "DISABLE"; + parameter GSR = "ENABLED"; + parameter INREG = "DISABLE"; + parameter MULFXP_ROUND = "ENABLE"; + parameter OUTREG = "DISABLE"; + parameter REGRST_ACTIVELOW = "DISABLE"; + parameter RETAIN = "ENABLE"; + parameter RFASYNC_RD = "SYNC_RD"; + parameter RFR0_RO = "R0READONLY"; + parameter RFUNALIA_WR = "DISABLE"; + parameter RFWCLK_INV = "SIG"; + input OPCGLOADCLK; + input ALUCLK; + output ALUFLAGC; + output ALUFLAGV; + output ALUFLAGZ; + input ALUFORWARDA; + input ALUFORWARDB; + input ALUIREGEN; + input ALUOREGEN; + input ALURST; + input DATAA31; + input DATAA30; + input DATAA29; + input DATAA28; + input DATAA27; + input DATAA26; + input DATAA25; + input DATAA24; + input DATAA23; + input DATAA22; + input DATAA21; + input DATAA20; + input DATAA19; + input DATAA18; + input DATAA17; + input DATAA16; + input DATAA15; + input DATAA14; + input DATAA13; + input DATAA12; + input DATAA11; + input DATAA10; + input DATAA9; + input DATAA8; + input DATAA7; + input DATAA6; + input DATAA5; + input DATAA4; + input DATAA3; + input DATAA2; + input DATAA1; + input DATAA0; + input DATAB31; + input DATAB30; + input DATAB29; + input DATAB28; + input DATAB27; + input DATAB26; + input DATAB25; + input DATAB24; + input DATAB23; + input DATAB22; + input DATAB21; + input DATAB20; + input DATAB19; + input DATAB18; + input DATAB17; + input DATAB16; + input DATAB15; + input DATAB14; + input DATAB13; + input DATAB12; + input DATAB11; + input DATAB10; + input DATAB9; + input DATAB8; + input DATAB7; + input DATAB6; + input DATAB5; + input DATAB4; + input DATAB3; + input DATAB2; + input DATAB1; + input DATAB0; + input DATAC4; + input DATAC3; + input DATAC2; + input DATAC1; + input DATAC0; + input OPC6; + input OPC5; + input OPC4; + input OPC3; + input OPC2; + input OPC1; + input OPC0; + input OPCCUSTOM; + input RADDRA4; + input RADDRA3; + input RADDRA2; + input RADDRA1; + input RADDRA0; + input RADDRB4; + input RADDRB3; + input RADDRB2; + input RADDRB1; + input RADDRB0; + output RDATAA31; + output RDATAA30; + output RDATAA29; + output RDATAA28; + output RDATAA27; + output RDATAA26; + output RDATAA25; + output RDATAA24; + output RDATAA23; + output RDATAA22; + output RDATAA21; + output RDATAA20; + output RDATAA19; + output RDATAA18; + output RDATAA17; + output RDATAA16; + output RDATAA15; + output RDATAA14; + output RDATAA13; + output RDATAA12; + output RDATAA11; + output RDATAA10; + output RDATAA9; + output RDATAA8; + output RDATAA7; + output RDATAA6; + output RDATAA5; + output RDATAA4; + output RDATAA3; + output RDATAA2; + output RDATAA1; + output RDATAA0; + output RDATAB31; + output RDATAB30; + output RDATAB29; + output RDATAB28; + output RDATAB27; + output RDATAB26; + output RDATAB25; + output RDATAB24; + output RDATAB23; + output RDATAB22; + output RDATAB21; + output RDATAB20; + output RDATAB19; + output RDATAB18; + output RDATAB17; + output RDATAB16; + output RDATAB15; + output RDATAB14; + output RDATAB13; + output RDATAB12; + output RDATAB11; + output RDATAB10; + output RDATAB9; + output RDATAB8; + output RDATAB7; + output RDATAB6; + output RDATAB5; + output RDATAB4; + output RDATAB3; + output RDATAB2; + output RDATAB1; + output RDATAB0; + input REGCLK; + input REGCLKEN; + input REGRST; + output RESULT31; + output RESULT30; + output RESULT29; + output RESULT28; + output RESULT27; + output RESULT26; + output RESULT25; + output RESULT24; + output RESULT23; + output RESULT22; + output RESULT21; + output RESULT20; + output RESULT19; + output RESULT18; + output RESULT17; + output RESULT16; + output RESULT15; + output RESULT14; + output RESULT13; + output RESULT12; + output RESULT11; + output RESULT10; + output RESULT9; + output RESULT8; + output RESULT7; + output RESULT6; + output RESULT5; + output RESULT4; + output RESULT3; + output RESULT2; + output RESULT1; + output RESULT0; + input SCANCLK; + input SCANRST; + input WADDR4; + input WADDR3; + input WADDR2; + input WADDR1; + input WADDR0; + input WDROTATE1; + input WDROTATE0; + input WDSIGNEXT; + input WDSIZE1; + input WDSIZE0; + input WDATA31; + input WDATA30; + input WDATA29; + input WDATA28; + input WDATA27; + input WDATA26; + input WDATA25; + input WDATA24; + input WDATA23; + input WDATA22; + input WDATA21; + input WDATA20; + input WDATA19; + input WDATA18; + input WDATA17; + input WDATA16; + input WDATA15; + input WDATA14; + input WDATA13; + input WDATA12; + input WDATA11; + input WDATA10; + input WDATA9; + input WDATA8; + input WDATA7; + input WDATA6; + input WDATA5; + input WDATA4; + input WDATA3; + input WDATA2; + input WDATA1; + input WDATA0; + input WREN; +endmodule + +module BNKREF18_CORE (...); + parameter BANK = "0b0000"; + parameter STANDBY_DIFFIO = "DISABLED"; + parameter STANDBY_INR = "DISABLED"; + input STDBYINR; + input STDBYDIF; + input PVTSNKI6; + input PVTSNKI5; + input PVTSNKI4; + input PVTSNKI3; + input PVTSNKI2; + input PVTSNKI1; + input PVTSNKI0; + input PVTSRCI6; + input PVTSRCI5; + input PVTSRCI4; + input PVTSRCI3; + input PVTSRCI2; + input PVTSRCI1; + input PVTSRCI0; + output PVTCODE6; + output PVTCODE5; + output PVTCODE4; + output PVTCODE3; + output PVTCODE2; + output PVTCODE1; + output PVTCODE0; + input PVTSEL; +endmodule + +module BNKREF33_CORE (...); + parameter BANK = "0b0000"; + input PVTSEL; + input PVTSNKI6; + input PVTSNKI5; + input PVTSNKI4; + input PVTSNKI3; + input PVTSNKI2; + input PVTSNKI1; + input PVTSNKI0; + input PVTSRCI6; + input PVTSRCI5; + input PVTSRCI4; + input PVTSRCI3; + input PVTSRCI2; + input PVTSRCI1; + input PVTSRCI0; + output PVTCODE6; + output PVTCODE5; + output PVTCODE4; + output PVTCODE3; + output PVTCODE2; + output PVTCODE1; + output PVTCODE0; +endmodule + +module DIFFIO18_CORE (...); + parameter MIPI_ID = "0"; + parameter PULLMODE = "DOWN"; + parameter ENADC_IN = "DISABLED"; + parameter MIPI = "DISABLED"; + input I; + input DOLP; + (* iopad_external_pin *) + inout B; + output O; + output INLP; + input T; + output INADC; + input HSRXEN; + input HSTXEN; +endmodule + +(* keep *) +module CONFIG_CLKRST_CORE (...); + parameter MCJTAGGSRNDIS = "EN"; + parameter MCLMMIGSRNDIS = "EN"; + parameter MCSEDCGSRNDIS = "EN"; + parameter MCWDTGSRNDIS = "EN"; + parameter SMCLK_DIV = "3"; + output HSE_CLK; + input JTAG_LRST_N; + input LMMI_CLK; + output LMMI_CLK_O; + input LMMI_LRST_N; + output LMMI_RST; + input OSCCLK; + input SEDC_CLK; + input SEDC_LRST_N; + output SEDC_RST; + output CFG_CLK; + output SMCLK_RST; + output WDT_CLK; + input WDT_LRST_N; + output WDT_RST; +endmodule + +(* keep *) +module CONFIG_HSE_CORE (...); + parameter MCGLBGSRNDIS = "EN"; + parameter MCHSEDISABLE = "EN"; + parameter MCHSEOTPEN = "DIS"; + input ASFCLKI; + output ASFEMPTYO; + output ASFFULLO; + input ASFRDI; + input ASFRESETI; + input ASFWRI; + input CFG_CLK; + input HSE_CLK; + input HSELRSTN; + input LMMICLK; + input LMMIOFFSET17; + input LMMIOFFSET16; + input LMMIOFFSET15; + input LMMIOFFSET14; + input LMMIOFFSET13; + input LMMIOFFSET12; + input LMMIOFFSET11; + input LMMIOFFSET10; + input LMMIOFFSET9; + input LMMIOFFSET8; + input LMMIOFFSET7; + input LMMIOFFSET6; + input LMMIOFFSET5; + input LMMIOFFSET4; + input LMMIOFFSET3; + input LMMIOFFSET2; + input LMMIOFFSET1; + input LMMIOFFSET0; + output LMMIRDATA31; + output LMMIRDATA30; + output LMMIRDATA29; + output LMMIRDATA28; + output LMMIRDATA27; + output LMMIRDATA26; + output LMMIRDATA25; + output LMMIRDATA24; + output LMMIRDATA23; + output LMMIRDATA22; + output LMMIRDATA21; + output LMMIRDATA20; + output LMMIRDATA19; + output LMMIRDATA18; + output LMMIRDATA17; + output LMMIRDATA16; + output LMMIRDATA15; + output LMMIRDATA14; + output LMMIRDATA13; + output LMMIRDATA12; + output LMMIRDATA11; + output LMMIRDATA10; + output LMMIRDATA9; + output LMMIRDATA8; + output LMMIRDATA7; + output LMMIRDATA6; + output LMMIRDATA5; + output LMMIRDATA4; + output LMMIRDATA3; + output LMMIRDATA2; + output LMMIRDATA1; + output LMMIRDATA0; + output LMMIRDATAVALID; + output LMMIREADY; + input LMMIREQUEST; + input LMMIRESETN; + input LMMIWDATA31; + input LMMIWDATA30; + input LMMIWDATA29; + input LMMIWDATA28; + input LMMIWDATA27; + input LMMIWDATA26; + input LMMIWDATA25; + input LMMIWDATA24; + input LMMIWDATA23; + input LMMIWDATA22; + input LMMIWDATA21; + input LMMIWDATA20; + input LMMIWDATA19; + input LMMIWDATA18; + input LMMIWDATA17; + input LMMIWDATA16; + input LMMIWDATA15; + input LMMIWDATA14; + input LMMIWDATA13; + input LMMIWDATA12; + input LMMIWDATA11; + input LMMIWDATA10; + input LMMIWDATA9; + input LMMIWDATA8; + input LMMIWDATA7; + input LMMIWDATA6; + input LMMIWDATA5; + input LMMIWDATA4; + input LMMIWDATA3; + input LMMIWDATA2; + input LMMIWDATA1; + input LMMIWDATA0; + input LMMIWRRDN; + input OTM; +endmodule + +(* keep *) +module CONFIG_JTAG_CORE (...); + parameter MCER1EXIST = "NEXIST"; + parameter MCER2EXIST = "NEXIST"; + output JCE1; + output JCE2; + output JRSTN; + output JRTI1; + output JRTI2; + output JSHIFT; + output JTDI; + output JUPDATE; + input JTDO1; + input JTDO2; + input SMCLK; + input TCK; + output JTCK; + input TDI; + output TDO_OEN; + output TDO; + input TMS; +endmodule + +(* keep *) +module CONFIG_LMMI_CORE (...); + parameter LMMI_EN = "DIS"; + input LMMIOFFSET7; + input LMMIOFFSET6; + input LMMIOFFSET5; + input LMMIOFFSET4; + input LMMIOFFSET3; + input LMMIOFFSET2; + input LMMIOFFSET1; + input LMMIOFFSET0; + input LMMICLK; + output LMMIRDATA7; + output LMMIRDATA6; + output LMMIRDATA5; + output LMMIRDATA4; + output LMMIRDATA3; + output LMMIRDATA2; + output LMMIRDATA1; + output LMMIRDATA0; + output LMMIRDATAVALID; + output LMMIREADY; + input LMMIRESETN; + input LMMIREQUEST; + input LMMIWDATA7; + input LMMIWDATA6; + input LMMIWDATA5; + input LMMIWDATA4; + input LMMIWDATA3; + input LMMIWDATA2; + input LMMIWDATA1; + input LMMIWDATA0; + input LMMIWRRDN; + input RSTSMCLK; + input SMCLK; +endmodule + +(* keep *) +module CONFIG_MULTIBOOT_CORE (...); + parameter MSPIADDR = "0b00000000000000000000000000000000"; + parameter SOURCESEL = "DIS"; + input CIBAUTOREBOOT; + input CIBMSPIMADDR31; + input CIBMSPIMADDR30; + input CIBMSPIMADDR29; + input CIBMSPIMADDR28; + input CIBMSPIMADDR27; + input CIBMSPIMADDR26; + input CIBMSPIMADDR25; + input CIBMSPIMADDR24; + input CIBMSPIMADDR23; + input CIBMSPIMADDR22; + input CIBMSPIMADDR21; + input CIBMSPIMADDR20; + input CIBMSPIMADDR19; + input CIBMSPIMADDR18; + input CIBMSPIMADDR17; + input CIBMSPIMADDR16; + input CIBMSPIMADDR15; + input CIBMSPIMADDR14; + input CIBMSPIMADDR13; + input CIBMSPIMADDR12; + input CIBMSPIMADDR11; + input CIBMSPIMADDR10; + input CIBMSPIMADDR9; + input CIBMSPIMADDR8; + input CIBMSPIMADDR7; + input CIBMSPIMADDR6; + input CIBMSPIMADDR5; + input CIBMSPIMADDR4; + input CIBMSPIMADDR3; + input CIBMSPIMADDR2; + input CIBMSPIMADDR1; + input CIBMSPIMADDR0; +endmodule + +(* keep *) +module CONFIG_SEDC_CORE (...); + parameter SEDCEN = "DIS"; + input CIBSED1ENABLE; + input CIBSEDCCOF; + input CIBSEDCENABLE; + input CIBSEDCMODE; + input CIBSEDCSTART; + input OSCCLKSEDC; + input RSTSEDC; + output SEDCBUSYCIB; + output SEDCDSRERRLOCCIB12; + output SEDCDSRERRLOCCIB11; + output SEDCDSRERRLOCCIB10; + output SEDCDSRERRLOCCIB9; + output SEDCDSRERRLOCCIB8; + output SEDCDSRERRLOCCIB7; + output SEDCDSRERRLOCCIB6; + output SEDCDSRERRLOCCIB5; + output SEDCDSRERRLOCCIB4; + output SEDCDSRERRLOCCIB3; + output SEDCDSRERRLOCCIB2; + output SEDCDSRERRLOCCIB1; + output SEDCDSRERRLOCCIB0; + output SEDCERR1CIB; + output SEDCERRCCIB; + output SEDCERRCRCCIB; + output SEDCERRMCIB; + output SEDCFRMERRLOCCIB15; + output SEDCFRMERRLOCCIB14; + output SEDCFRMERRLOCCIB13; + output SEDCFRMERRLOCCIB12; + output SEDCFRMERRLOCCIB11; + output SEDCFRMERRLOCCIB10; + output SEDCFRMERRLOCCIB9; + output SEDCFRMERRLOCCIB8; + output SEDCFRMERRLOCCIB7; + output SEDCFRMERRLOCCIB6; + output SEDCFRMERRLOCCIB5; + output SEDCFRMERRLOCCIB4; + output SEDCFRMERRLOCCIB3; + output SEDCFRMERRLOCCIB2; + output SEDCFRMERRLOCCIB1; + output SEDCFRMERRLOCCIB0; +endmodule + +(* keep *) +module CONFIG_WDT_CORE (...); + parameter WDTEN = "DIS"; + parameter WDTMODE = "SINGLE"; + parameter WDTVALUE = "0b000000000000000000"; + input CIBWDTRELOAD; + input WDT_CLK; + input WDT_RST; +endmodule + +module DDRDLL_CORE (...); + parameter GSR = "ENABLED"; + parameter ENA_ROUNDOFF = "ENABLED"; + parameter FORCE_MAX_DELAY = "CODE_OR_LOCK_FROM_DLL_LOOP"; + output CODE8; + output CODE7; + output CODE6; + output CODE5; + output CODE4; + output CODE3; + output CODE2; + output CODE1; + output CODE0; + input FREEZE; + output LOCK; + input CLKIN; + input RST; + output DCNTL8; + output DCNTL7; + output DCNTL6; + output DCNTL5; + output DCNTL4; + output DCNTL3; + output DCNTL2; + output DCNTL1; + output DCNTL0; + input UDDCNTL_N; +endmodule + +module DLLDEL_CORE (...); + parameter ADJUST = "0"; + parameter DEL_ADJUST = "PLUS"; + parameter ENABLE = "DISABLED"; + input CLKIN; + output CLKOUT; + input CODE8; + input CODE7; + input CODE6; + input CODE5; + input CODE4; + input CODE3; + input CODE2; + input CODE1; + input CODE0; + output COUT; + input DIR; + input LOAD_N; + input MOVE; +endmodule + +module DPHY_CORE (...); + parameter GSR = "ENABLED"; + parameter AUTO_PD_EN = "POWERED_UP"; + parameter CFG_NUM_LANES = "ONE_LANE"; + parameter CM = "0b00000000"; + parameter CN = "0b00000"; + parameter CO = "0b000"; + parameter CONT_CLK_MODE = "DISABLED"; + parameter DESKEW_EN = "DISABLED"; + parameter DSI_CSI = "CSI2_APP"; + parameter EN_CIL = "CIL_ENABLED"; + parameter HSEL = "DISABLED"; + parameter LANE0_SEL = "LANE_0"; + parameter LOCK_BYP = "GATE_TXBYTECLKHS"; + parameter MASTER_SLAVE = "SLAVE"; + parameter PLLCLKBYPASS = "REGISTERED"; + parameter RSEL = "0b00"; + parameter RXCDRP = "0b00"; + parameter RXDATAWIDTHHS = "0b00"; + parameter RXLPRP = "0b000"; + parameter TEST_ENBL = "0b000000"; + parameter TEST_PATTERN = "0b00000000000000000000000000000000"; + parameter TST = "0b1001"; + parameter TXDATAWIDTHHS = "0b00"; + parameter U_PRG_HS_PREPARE = "0b00"; + parameter U_PRG_HS_TRAIL = "0b000000"; + parameter U_PRG_HS_ZERO = "0b000000"; + parameter U_PRG_RXHS_SETTLE = "0b000000"; + parameter UC_PRG_HS_PREPARE = "1P0_TXCLKESC"; + parameter UC_PRG_HS_TRAIL = "0b00000"; + parameter UC_PRG_HS_ZERO = "0b0000000"; + parameter UC_PRG_RXHS_SETTLE = "0b000000"; + input BITCKEXT; + (* iopad_external_pin *) + inout CKN; + (* iopad_external_pin *) + inout CKP; + input CLKREF; + output D0ACTIVE1; + output D0ACTIVE0; + output D0BYTCNT9; + output D0BYTCNT8; + output D0BYTCNT7; + output D0BYTCNT6; + output D0BYTCNT5; + output D0BYTCNT4; + output D0BYTCNT3; + output D0BYTCNT2; + output D0BYTCNT1; + output D0BYTCNT0; + output D0ERRCNT9; + output D0ERRCNT8; + output D0ERRCNT7; + output D0ERRCNT6; + output D0ERRCNT5; + output D0ERRCNT4; + output D0ERRCNT3; + output D0ERRCNT2; + output D0ERRCNT1; + output D0ERRCNT0; + output D0PASS1; + output D0PASS0; + output D0VALID1; + output D0VALID0; + output D1ACTIVE1; + output D1ACTIVE0; + output D1BYTCNT9; + output D1BYTCNT8; + output D1BYTCNT7; + output D1BYTCNT6; + output D1BYTCNT5; + output D1BYTCNT4; + output D1BYTCNT3; + output D1BYTCNT2; + output D1BYTCNT1; + output D1BYTCNT0; + output D1ERRCNT9; + output D1ERRCNT8; + output D1ERRCNT7; + output D1ERRCNT6; + output D1ERRCNT5; + output D1ERRCNT4; + output D1ERRCNT3; + output D1ERRCNT2; + output D1ERRCNT1; + output D1ERRCNT0; + output D1PASS1; + output D1PASS0; + output D1VALID1; + output D1VALID0; + output D2ACTIVE1; + output D2ACTIVE0; + output D2BYTCNT9; + output D2BYTCNT8; + output D2BYTCNT7; + output D2BYTCNT6; + output D2BYTCNT5; + output D2BYTCNT4; + output D2BYTCNT3; + output D2BYTCNT2; + output D2BYTCNT1; + output D2BYTCNT0; + output D2ERRCNT9; + output D2ERRCNT8; + output D2ERRCNT7; + output D2ERRCNT6; + output D2ERRCNT5; + output D2ERRCNT4; + output D2ERRCNT3; + output D2ERRCNT2; + output D2ERRCNT1; + output D2ERRCNT0; + output D2PASS1; + output D2PASS0; + output D2VALID1; + output D2VALID0; + output D3ACTIVE1; + output D3ACTIVE0; + output D3BYTCNT9; + output D3BYTCNT8; + output D3BYTCNT7; + output D3BYTCNT6; + output D3BYTCNT5; + output D3BYTCNT4; + output D3BYTCNT3; + output D3BYTCNT2; + output D3BYTCNT1; + output D3BYTCNT0; + output D3ERRCNT9; + output D3ERRCNT8; + output D3ERRCNT7; + output D3ERRCNT6; + output D3ERRCNT5; + output D3ERRCNT4; + output D3ERRCNT3; + output D3ERRCNT2; + output D3ERRCNT1; + output D3ERRCNT0; + output D3PASS1; + output D3PASS0; + output D3VALID1; + output D3VALID0; + output DCTSTOUT9; + output DCTSTOUT8; + output DCTSTOUT7; + output DCTSTOUT6; + output DCTSTOUT5; + output DCTSTOUT4; + output DCTSTOUT3; + output DCTSTOUT2; + output DCTSTOUT1; + output DCTSTOUT0; + (* iopad_external_pin *) + inout DN0; + (* iopad_external_pin *) + inout DN1; + (* iopad_external_pin *) + inout DN2; + (* iopad_external_pin *) + inout DN3; + (* iopad_external_pin *) + inout DP0; + (* iopad_external_pin *) + inout DP1; + (* iopad_external_pin *) + inout DP2; + (* iopad_external_pin *) + inout DP3; + output LOCK; + input PDDPHY; + input PDPLL; + input SCCLKIN; + input SCRSTNIN; + output UDIR; + input UED0THEN; + output UERCLP0; + output UERCLP1; + output UERCTRL; + output UERE; + output UERSTHS; + output UERSSHS; + output UERSE; + input UFRXMODE; + input UTXMDTX; + output URXACTHS; + output URXCKE; + input URXCKINE; + output URXDE7; + output URXDE6; + output URXDE5; + output URXDE4; + output URXDE3; + output URXDE2; + output URXDE1; + output URXDE0; + output URXDHS15; + output URXDHS14; + output URXDHS13; + output URXDHS12; + output URXDHS11; + output URXDHS10; + output URXDHS9; + output URXDHS8; + output URXDHS7; + output URXDHS6; + output URXDHS5; + output URXDHS4; + output URXDHS3; + output URXDHS2; + output URXDHS1; + output URXDHS0; + output URXLPDTE; + output URXSKCHS; + output URXDRX; + output URXSHS3; + output URXSHS2; + output URXSHS1; + output URXSHS0; + output URE0D3DP; + output URE1D3DN; + output URE2CKDP; + output URE3CKDN; + output URXULPSE; + output URXVDE; + output URXVDHS3; + output URXVDHS2; + output URXVDHS1; + output URXVDHS0; + output USSTT; + input UTDIS; + input UTXCKE; + input UDE0D0TN; + input UDE1D1TN; + input UDE2D2TN; + input UDE3D3TN; + input UDE4CKTN; + input UDE5D0RN; + input UDE6D1RN; + input UDE7D2RN; + input UTXDHS31; + input UTXDHS30; + input UTXDHS29; + input UTXDHS28; + input UTXDHS27; + input UTXDHS26; + input UTXDHS25; + input UTXDHS24; + input UTXDHS23; + input UTXDHS22; + input UTXDHS21; + input UTXDHS20; + input UTXDHS19; + input UTXDHS18; + input UTXDHS17; + input UTXDHS16; + input UTXDHS15; + input UTXDHS14; + input UTXDHS13; + input UTXDHS12; + input UTXDHS11; + input UTXDHS10; + input UTXDHS9; + input UTXDHS8; + input UTXDHS7; + input UTXDHS6; + input UTXDHS5; + input UTXDHS4; + input UTXDHS3; + input UTXDHS2; + input UTXDHS1; + input UTXDHS0; + input UTXENER; + output UTXRRS; + output UTXRYP; + output UTXRYSK; + input UTXRD0EN; + input UTRD0SEN; + input UTXSKD0N; + input UTXTGE0; + input UTXTGE1; + input UTXTGE2; + input UTXTGE3; + input UTXULPSE; + input UTXUPSEX; + input UTXVDE; + input UTXWVDHS3; + input UTXWVDHS2; + input UTXWVDHS1; + input UTXWVDHS0; + output UUSAN; + output U1DIR; + input U1ENTHEN; + output U1ERCLP0; + output U1ERCLP1; + output U1ERCTRL; + output U1ERE; + output U1ERSTHS; + output U1ERSSHS; + output U1ERSE; + input U1FRXMD; + input U1FTXST; + output U1RXATHS; + output U1RXCKE; + output U1RXDE7; + output U1RXDE6; + output U1RXDE5; + output U1RXDE4; + output U1RXDE3; + output U1RXDE2; + output U1RXDE1; + output U1RXDE0; + output U1RXDHS15; + output U1RXDHS14; + output U1RXDHS13; + output U1RXDHS12; + output U1RXDHS11; + output U1RXDHS10; + output U1RXDHS9; + output U1RXDHS8; + output U1RXDHS7; + output U1RXDHS6; + output U1RXDHS5; + output U1RXDHS4; + output U1RXDHS3; + output U1RXDHS2; + output U1RXDHS1; + output U1RXDHS0; + output U1RXDTE; + output U1RXSKS; + output U1RXSK; + output U1RXSHS3; + output U1RXSHS2; + output U1RXSHS1; + output U1RXSHS0; + output U1RE0D; + output U1RE1CN; + output U1RE2D; + output U1RE3N; + output U1RXUPSE; + output U1RXVDE; + output U1RXVDHS3; + output U1RXVDHS2; + output U1RXVDHS1; + output U1RXVDHS0; + output U1SSTT; + input U1TDIS; + input U1TREQ; + input U1TDE0D3; + input U1TDE1CK; + input U1TDE2D0; + input U1TDE3D1; + input U1TDE4D2; + input U1TDE5D3; + input U1TDE6; + input U1TDE7; + input U1TXDHS31; + input U1TXDHS30; + input U1TXDHS29; + input U1TXDHS28; + input U1TXDHS27; + input U1TXDHS26; + input U1TXDHS25; + input U1TXDHS24; + input U1TXDHS23; + input U1TXDHS22; + input U1TXDHS21; + input U1TXDHS20; + input U1TXDHS19; + input U1TXDHS18; + input U1TXDHS17; + input U1TXDHS16; + input U1TXDHS15; + input U1TXDHS14; + input U1TXDHS13; + input U1TXDHS12; + input U1TXDHS11; + input U1TXDHS10; + input U1TXDHS9; + input U1TXDHS8; + input U1TXDHS7; + input U1TXDHS6; + input U1TXDHS5; + input U1TXDHS4; + input U1TXDHS3; + input U1TXDHS2; + input U1TXDHS1; + input U1TXDHS0; + input U1TXLPD; + output U1TXRYE; + output U1TXRY; + output U1TXRYSK; + input U1TXREQ; + input U1TXREQH; + input U1TXSK; + input U1TXTGE0; + input U1TXTGE1; + input U1TXTGE2; + input U1TXTGE3; + input U1TXUPSE; + input U1TXUPSX; + input U1TXVDE; + input U1TXWVHS3; + input U1TXWVHS2; + input U1TXWVHS1; + input U1TXWVHS0; + output U1USAN; + output U2DIR; + input U2END2; + output U2ERCLP0; + output U2ERCLP1; + output U2ERCTRL; + output U2ERE; + output U2ERSTHS; + output U2ERSSHS; + output U2ERSE; + input U2FRXMD; + input U2FTXST; + output U2RXACHS; + output U2RXCKE; + output U2RXDE7; + output U2RXDE6; + output U2RXDE5; + output U2RXDE4; + output U2RXDE3; + output U2RXDE2; + output U2RXDE1; + output U2RXDE0; + output U2RXDHS15; + output U2RXDHS14; + output U2RXDHS13; + output U2RXDHS12; + output U2RXDHS11; + output U2RXDHS10; + output U2RXDHS9; + output U2RXDHS8; + output U2RXDHS7; + output U2RXDHS6; + output U2RXDHS5; + output U2RXDHS4; + output U2RXDHS3; + output U2RXDHS2; + output U2RXDHS1; + output U2RXDHS0; + output U2RPDTE; + output U2RXSK; + output U2RXSKC; + output U2RXSHS3; + output U2RXSHS2; + output U2RXSHS1; + output U2RXSHS0; + output U2RE0D2; + output U2RE1D2; + output U2RE2D3; + output U2RE3D3; + output U2RXUPSE; + output U2RXVDE; + output U2RXVDHS3; + output U2RXVDHS2; + output U2RXVDHS1; + output U2RXVDHS0; + output U2SSTT; + input U2TDIS; + input U2TREQ; + input U2TDE0D0; + input U2TDE1D1; + input U2TDE2D2; + input U2TDE3D3; + input U2TDE4CK; + input U2TDE5D0; + input U2TDE6D1; + input U2TDE7D2; + input U2TXDHS31; + input U2TXDHS30; + input U2TXDHS29; + input U2TXDHS28; + input U2TXDHS27; + input U2TXDHS26; + input U2TXDHS25; + input U2TXDHS24; + input U2TXDHS23; + input U2TXDHS22; + input U2TXDHS21; + input U2TXDHS20; + input U2TXDHS19; + input U2TXDHS18; + input U2TXDHS17; + input U2TXDHS16; + input U2TXDHS15; + input U2TXDHS14; + input U2TXDHS13; + input U2TXDHS12; + input U2TXDHS11; + input U2TXDHS10; + input U2TXDHS9; + input U2TXDHS8; + input U2TXDHS7; + input U2TXDHS6; + input U2TXDHS5; + input U2TXDHS4; + input U2TXDHS3; + input U2TXDHS2; + input U2TXDHS1; + input U2TXDHS0; + input U2TPDTE; + output U2TXRYE; + output U2TXRYH; + output U2TXRYSK; + input U2TXREQ; + input U2TXREQH; + input U2TXSKC; + input U2TXTGE0; + input U2TXTGE1; + input U2TXTGE2; + input U2TXTGE3; + input U2TXUPSE; + input U2TXUPSX; + input U2TXVDE; + input U2TXWVHS3; + input U2TXWVHS2; + input U2TXWVHS1; + input U2TXWVHS0; + output U2USAN; + output U3DIR; + input U3END3; + output U3ERCLP0; + output U3ERCLP1; + output U3ERCTRL; + output U3ERE; + output U3ERSTHS; + output U3ERSSHS; + output U3ERSE; + input U3FRXMD; + input U3FTXST; + output U3RXATHS; + output U3RXCKE; + output U3RXDE7; + output U3RXDE6; + output U3RXDE5; + output U3RXDE4; + output U3RXDE3; + output U3RXDE2; + output U3RXDE1; + output U3RXDE0; + output U3RXDHS15; + output U3RXDHS14; + output U3RXDHS13; + output U3RXDHS12; + output U3RXDHS11; + output U3RXDHS10; + output U3RXDHS9; + output U3RXDHS8; + output U3RXDHS7; + output U3RXDHS6; + output U3RXDHS5; + output U3RXDHS4; + output U3RXDHS3; + output U3RXDHS2; + output U3RXDHS1; + output U3RXDHS0; + output U3RPDTE; + output U3RXSK; + output U3RXSKC; + output U3RXSHS3; + output U3RXSHS2; + output U3RXSHS1; + output U3RXSHS0; + output U3RE0CK; + output U3RE1CK; + output U3RE2; + output U3RE3; + output U3RXUPSE; + output U3RXVDE; + output U3RXVDHS3; + output U3RXVDHS2; + output U3RXVDHS1; + output U3RXVDHS0; + output U3SSTT; + input U3TDISD2; + input U3TREQD2; + input U3TDE0D3; + input U3TDE1D0; + input U3TDE2D1; + input U3TDE3D2; + input U3TDE4D3; + input U3TDE5CK; + input U3TDE6; + input U3TDE7; + input U3TXDHS31; + input U3TXDHS30; + input U3TXDHS29; + input U3TXDHS28; + input U3TXDHS27; + input U3TXDHS26; + input U3TXDHS25; + input U3TXDHS24; + input U3TXDHS23; + input U3TXDHS22; + input U3TXDHS21; + input U3TXDHS20; + input U3TXDHS19; + input U3TXDHS18; + input U3TXDHS17; + input U3TXDHS16; + input U3TXDHS15; + input U3TXDHS14; + input U3TXDHS13; + input U3TXDHS12; + input U3TXDHS11; + input U3TXDHS10; + input U3TXDHS9; + input U3TXDHS8; + input U3TXDHS7; + input U3TXDHS6; + input U3TXDHS5; + input U3TXDHS4; + input U3TXDHS3; + input U3TXDHS2; + input U3TXDHS1; + input U3TXDHS0; + input U3TXLPDT; + output U3TXRY; + output U3TXRYHS; + output U3TXRYSK; + input U3TXREQ; + input U3TXREQH; + input U3TXSKC; + input U3TXTGE0; + input U3TXTGE1; + input U3TXTGE2; + input U3TXTGE3; + input U3TXULPS; + input U3TXUPSX; + input U3TXVD3; + input U3TXWVHS3; + input U3TXWVHS2; + input U3TXWVHS1; + input U3TXWVHS0; + output U3USAN; + input UCENCK; + output UCRXCKAT; + output UCRXUCKN; + output UCSSTT; + input UCTXREQH; + input UCTXUPSC; + input UCTXUPSX; + output UCUSAN; + input SCANCLK; + input SCANRST; + input LMMICLK; + input LMMIOFFSET4; + input LMMIOFFSET3; + input LMMIOFFSET2; + input LMMIOFFSET1; + input LMMIOFFSET0; + output LMMIRDATA3; + output LMMIRDATA2; + output LMMIRDATA1; + output LMMIRDATA0; + output LMMIRDATAVALID; + output LMMIREADY; + input LMMIREQUEST; + input LMMIRESETN; + input LMMIWDATA3; + input LMMIWDATA2; + input LMMIWDATA1; + input LMMIWDATA0; + input LMMIWRRDN; + input LTSTEN; + input LTSTLANE1; + input LTSTLANE0; + output URWDCKHS; + input UTRNREQ; + output UTWDCKHS; + output UCRXWCHS; + input OPCGLDCK; + output CLKLBACT; +endmodule + +module DQSBUF_CORE (...); + parameter GSR = "ENABLED"; + parameter ENABLE_FIFO = "DISABLED"; + parameter FORCE_READ = "DISABLED"; + parameter FREE_WHEEL = "DDR"; + parameter MODX = "NOT_USED"; + parameter MT_EN_READ = "DISABLED"; + parameter MT_EN_WRITE = "DISABLED"; + parameter MT_EN_WRITE_LEVELING = "DISABLED"; + parameter RD_PNTR = "0b000"; + parameter READ_ENABLE = "DISABLED"; + parameter RX_CENTERED = "ENABLED"; + parameter S_READ = "0"; + parameter S_WRITE = "0"; + parameter SIGN_READ = "POSITIVE"; + parameter SIGN_WRITE = "POSITIVE"; + parameter UPDATE_QU = "UP1_AND_UP0_SAME"; + parameter WRITE_ENABLE = "DISABLED"; + parameter SEL_READ_BIT_ENABLE_CYCLES = "NORMAL"; + parameter BYPASS_WR_LEVEL_SMTH_LATCH = "SMOOTHING_PATH"; + parameter BYPASS_WR_SMTH_LATCH = "SMOOTHING_PATH"; + parameter BYPASS_READ_SMTH_LATCH = "SMOOTHING_PATH"; + output BTDETECT; + output BURSTDETECT; + output DATAVALID; + input DQSI; + output DQSW; + output DQSWRD; + input PAUSE; + input RDCLKSEL3; + input RDCLKSEL2; + input RDCLKSEL1; + input RDCLKSEL0; + input RDDIR; + input RDLOADN; + output RDPNTR2; + output RDPNTR1; + output RDPNTR0; + input READ3; + input READ2; + input READ1; + input READ0; + output READCOUT; + input READMOVE; + input RST; + input SCLK; + input SELCLK; + output DQSR90; + output DQSW270; + output WRCOUT; + input WRDIR; + input WRLOAD_N; + output WRLVCOUT; + input WRLVDIR; + input WRLVLOAD_N; + input WRLVMOVE; + input WRMOVE; + output WRPNTR2; + output WRPNTR1; + output WRPNTR0; + input ECLKIN; + input RSTSMCNT; + input DLLCODE8; + input DLLCODE7; + input DLLCODE6; + input DLLCODE5; + input DLLCODE4; + input DLLCODE3; + input DLLCODE2; + input DLLCODE1; + input DLLCODE0; +endmodule + +module ECLKDIV_CORE (...); + parameter ECLK_DIV = "DISABLE"; + parameter GSR = "ENABLED"; + output DIVOUT; + input DIVRST; + input ECLKIN; + input SLIP; + input TESTINP3; + input TESTINP2; + input TESTINP1; + input TESTINP0; +endmodule + +module ECLKSYNC_CORE (...); + parameter STOP_EN = "DISABLE"; + input ECLKIN; + output ECLKOUT; + input STOP; +endmodule + +module FBMUX_CORE (...); + parameter INTFB = "IGNORED"; + parameter SEL_FBK = "DIVA"; + parameter CLKMUX_FB = "CMUX_CLKOP"; + parameter INTFBKDEL_SEL = "DISABLED"; + output ENEXT; + output FBKCK; + input LGYRDYN; + input INTLOCK; + input WKUPSYNC; + input FBKCLK15; + input FBKCLK14; + input FBKCLK13; + input FBKCLK12; + input FBKCLK11; + input FBKCLK10; + input FBKCLK9; + input FBKCLK8; + input FBKCLK7; + input FBKCLK6; + input FBKCLK5; + input FBKCLK4; + input FBKCLK3; + input FBKCLK2; + input FBKCLK1; + input FBKCLK0; +endmodule + +module I2CFIFO_CORE (...); + parameter BRNBASEDELAY = "0b0000"; + parameter CR1CKDIS = "EN"; + parameter CR1FIFOMODE = "REG"; + parameter CR1GCEN = "DIS"; + parameter CR1I2CEN = "DIS"; + parameter CR1SDADELSEL = "NDLY0"; + parameter CR1SLPCLKEN = "DIS"; + parameter CR2CORERSTN = "DIS"; + parameter CR2HARDTIE = "TIE"; + parameter CR2INTCLREN = "DIS"; + parameter CR2MRDCMPLWKUP = "DIS"; + parameter CR2RXFIFOAFWKUP = "DIS"; + parameter CR2SLVADDRWKUP = "DIS"; + parameter GSR = "ENABLED"; + parameter I2CRXFIFOAFVAL = "0b00000"; + parameter I2CSLVADDRA = "0b0000000000"; + parameter I2CTXFIFOAEVAL = "0b0000"; + parameter INTARBLIE = "DIS"; + parameter INTBUSFREEIE = "DIS"; + parameter INTHGCIE = "DIS"; + parameter INTMRDCMPLIE = "DIS"; + parameter INTRNACKIEORRSVD = "DIS"; + parameter INTRSVDORTROEIE = "DIS"; + parameter INTRSVDORTRRDYIE = "DIS"; + parameter INTRXOVERFIEORRSVD = "DIS"; + parameter INTRXUNDERFIE = "DIS"; + parameter INTTXOVERFIE = "DIS"; + parameter INTTXSERRIEORRSVD = "DIS"; + parameter LMMI_EXTRA_ONE = "DIS"; + parameter LMMI_EXTRA_TWO = "DIS"; + parameter NCRALTIOEN = "FABRIC"; + parameter NCRFILTERDIS = "EN"; + parameter NCRSDAINDLYEN = "DIS"; + parameter NCRSDAOUTDLYEN = "DIS"; + parameter NONUSRTESTSOFTTRIMEN = "DIS"; + parameter NONUSRTSTSOFTTRIMVALUE = "0b000"; + parameter REGI2CBR = "0b0000000000"; + parameter TSPTIMERVALUE = "0b10010010111"; + input ALTSCLIN; + output ALTSCLOEN; + output ALTSCLOUT; + input ALTSDAIN; + output ALTSDAOEN; + output ALTSDAOUT; + output BUSBUSY; + input FIFORESET; + input I2CLSRRSTN; + output INSLEEP; + output IRQ; + input LMMICLK; + input LMMIOFFSET5; + input LMMIOFFSET4; + input LMMIOFFSET3; + input LMMIOFFSET2; + input LMMIOFFSET1; + input LMMIOFFSET0; + output LMMIRDATA7; + output LMMIRDATA6; + output LMMIRDATA5; + output LMMIRDATA4; + output LMMIRDATA3; + output LMMIRDATA2; + output LMMIRDATA1; + output LMMIRDATA0; + output LMMIRDATAVALID; + output LMMIREADY; + input LMMIREQUEST; + input LMMIRESETN; + input LMMIWDATA7; + input LMMIWDATA6; + input LMMIWDATA5; + input LMMIWDATA4; + input LMMIWDATA3; + input LMMIWDATA2; + input LMMIWDATA1; + input LMMIWDATA0; + input LMMIWRRDN; + output MRDCMPL; + input OPCGLOADCLK; + output RXFIFOAF; + output RXFIFOE; + output RXFIFOF; + input SCANCLK; + input SCANRST; + input SCLIN; + output SCLOE; + output SCLOEN; + output SCLOUT; + input SDAIN; + output SDAOE; + output SDAOEN; + output SDAOUT; + input SLEEPCLKSELN; + output SLVADDRMATCH; + output SLVADDRMATCHSCL; + output SRDWR; + output TXFIFOAE; + output TXFIFOE; + output TXFIFOF; +endmodule + +module LRAM_CORE (...); + parameter INITVAL_00 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_01 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_02 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_03 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_04 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_05 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_06 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_07 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_08 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_09 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_0A = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_0B = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_0C = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_0D = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_0E = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_0F = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_10 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_11 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_12 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_13 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_14 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_15 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_16 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_17 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_18 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_19 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_1A = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_1B = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_1C = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_1D = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_1E = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_1F = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_20 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_21 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_22 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_23 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_24 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_25 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_26 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_27 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_28 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_29 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_2A = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_2B = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_2C = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_2D = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_2E = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_2F = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_30 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_31 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_32 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_33 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_34 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_35 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_36 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_37 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_38 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_39 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_3A = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_3B = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_3C = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_3D = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_3E = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_3F = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_40 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_41 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_42 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_43 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_44 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_45 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_46 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_47 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_48 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_49 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_4A = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_4B = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_4C = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_4D = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_4E = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_4F = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_50 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_51 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_52 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_53 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_54 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_55 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_56 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_57 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_58 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_59 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_5A = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_5B = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_5C = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_5D = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_5E = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_5F = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_60 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_61 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_62 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_63 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_64 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_65 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_66 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_67 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_68 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_69 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_6A = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_6B = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_6C = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_6D = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_6E = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_6F = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_70 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_71 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_72 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_73 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_74 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_75 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_76 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_77 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_78 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_79 = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_7A = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_7B = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_7C = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_7D = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_7E = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter INITVAL_7F = "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter ASYNC_RST_RELEASE = "SYNC"; + parameter CFG_INIT_ID = "0b00000000000"; + parameter DATA_PRESERVE = "DISABLE"; + parameter EBR_SP_EN = "DISABLE"; + parameter ECC_BYTE_SEL = "ECC_EN"; + parameter GSR = "ENABLED"; + parameter OUT_REGMODE_A = "NO_REG"; + parameter OUT_REGMODE_B = "NO_REG"; + parameter RESETMODE = "SYNC"; + parameter RST_AB_EN = "RESET_AB_DISABLE"; + parameter SP_EN = "DISABLE"; + parameter UNALIGNED_READ = "DISABLE"; + input ADA13; + input ADA12; + input ADA11; + input ADA10; + input ADA9; + input ADA8; + input ADA7; + input ADA6; + input ADA5; + input ADA4; + input ADA3; + input ADA2; + input ADA1; + input ADA0; + input ADB13; + input ADB12; + input ADB11; + input ADB10; + input ADB9; + input ADB8; + input ADB7; + input ADB6; + input ADB5; + input ADB4; + input ADB3; + input ADB2; + input ADB1; + input ADB0; + input BENA_N3; + input BENA_N2; + input BENA_N1; + input BENA_N0; + input BENB_N3; + input BENB_N2; + input BENB_N1; + input BENB_N0; + input CEA; + input CEB; + input CLK; + input CSA; + input CSB; + input DIA31; + input DIA30; + input DIA29; + input DIA28; + input DIA27; + input DIA26; + input DIA25; + input DIA24; + input DIA23; + input DIA22; + input DIA21; + input DIA20; + input DIA19; + input DIA18; + input DIA17; + input DIA16; + input DIA15; + input DIA14; + input DIA13; + input DIA12; + input DIA11; + input DIA10; + input DIA9; + input DIA8; + input DIA7; + input DIA6; + input DIA5; + input DIA4; + input DIA3; + input DIA2; + input DIA1; + input DIA0; + input DIB31; + input DIB30; + input DIB29; + input DIB28; + input DIB27; + input DIB26; + input DIB25; + input DIB24; + input DIB23; + input DIB22; + input DIB21; + input DIB20; + input DIB19; + input DIB18; + input DIB17; + input DIB16; + input DIB15; + input DIB14; + input DIB13; + input DIB12; + input DIB11; + input DIB10; + input DIB9; + input DIB8; + input DIB7; + input DIB6; + input DIB5; + input DIB4; + input DIB3; + input DIB2; + input DIB1; + input DIB0; + output DOA31; + output DOA30; + output DOA29; + output DOA28; + output DOA27; + output DOA26; + output DOA25; + output DOA24; + output DOA23; + output DOA22; + output DOA21; + output DOA20; + output DOA19; + output DOA18; + output DOA17; + output DOA16; + output DOA15; + output DOA14; + output DOA13; + output DOA12; + output DOA11; + output DOA10; + output DOA9; + output DOA8; + output DOA7; + output DOA6; + output DOA5; + output DOA4; + output DOA3; + output DOA2; + output DOA1; + output DOA0; + output DOB31; + output DOB30; + output DOB29; + output DOB28; + output DOB27; + output DOB26; + output DOB25; + output DOB24; + output DOB23; + output DOB22; + output DOB21; + output DOB20; + output DOB19; + output DOB18; + output DOB17; + output DOB16; + output DOB15; + output DOB14; + output DOB13; + output DOB12; + output DOB11; + output DOB10; + output DOB9; + output DOB8; + output DOB7; + output DOB6; + output DOB5; + output DOB4; + output DOB3; + output DOB2; + output DOB1; + output DOB0; + input DPS; + output ERRDECA1; + output ERRDECA0; + output ERRDECB1; + output ERRDECB0; + input IGN; + input INITN; + input OCEA; + input OCEB; + output OEA; + output OEB; + input RSTA; + input RSTB; + input STDBYN; + input TBISTN; + input WEA; + input WEB; + output ERRDET; + output LRAMREADY; + input OPCGLOADCLK; + input SCANCLK; + input SCANRST; +endmodule + +module MULT18_CORE (...); + parameter SFTEN = "DISABLED"; + parameter MULT18X18 = "ENABLED"; + parameter ROUNDHALFUP = "DISABLED"; + parameter ROUNDRTZI = "ROUND_TO_ZERO"; + parameter ROUNDBIT = "ROUND_TO_BIT0"; + input SFTCTRL3; + input SFTCTRL2; + input SFTCTRL1; + input SFTCTRL0; + input ARHSIGN; + input BRHSIGN; + input ARH8; + input ARH7; + input ARH6; + input ARH5; + input ARH4; + input ARH3; + input ARH2; + input ARH1; + input ARH0; + input BRH8; + input BRH7; + input BRH6; + input BRH5; + input BRH4; + input BRH3; + input BRH2; + input BRH1; + input BRH0; + input ARL8; + input ARL7; + input ARL6; + input ARL5; + input ARL4; + input ARL3; + input ARL2; + input ARL1; + input ARL0; + input BRL8; + input BRL7; + input BRL6; + input BRL5; + input BRL4; + input BRL3; + input BRL2; + input BRL1; + input BRL0; + input PL1819; + input PL1818; + input PL1817; + input PL1816; + input PL1815; + input PL1814; + input PL1813; + input PL1812; + input PL1811; + input PL1810; + input PL189; + input PL188; + input PL187; + input PL186; + input PL185; + input PL184; + input PL183; + input PL182; + input PL181; + input PL180; + input PH1819; + input PH1818; + input PH1817; + input PH1816; + input PH1815; + input PH1814; + input PH1813; + input PH1812; + input PH1811; + input PH1810; + input PH189; + input PH188; + input PH187; + input PH186; + input PH185; + input PH184; + input PH183; + input PH182; + input PH181; + input PH180; + output SIGNED18; + output P3637; + output P3636; + output P3635; + output P3634; + output P3633; + output P3632; + output P3631; + output P3630; + output P3629; + output P3628; + output P3627; + output P3626; + output P3625; + output P3624; + output P3623; + output P3622; + output P3621; + output P3620; + output P3619; + output P3618; + output P3617; + output P3616; + output P3615; + output P3614; + output P3613; + output P3612; + output P3611; + output P3610; + output P369; + output P368; + output P367; + output P366; + output P365; + output P364; + output P363; + output P362; + output P361; + output P360; + input ROUNDEN; +endmodule + +module MULT18X36_CORE (...); + parameter SFTEN = "DISABLED"; + parameter MULT18X36 = "ENABLED"; + parameter MULT36 = "DISABLED"; + parameter MULT36X36H = "USED_AS_LOWER_BIT_GENERATION"; + parameter ROUNDHALFUP = "DISABLED"; + parameter ROUNDRTZI = "ROUND_TO_ZERO"; + parameter ROUNDBIT = "ROUND_TO_BIT0"; + input SFTCTRL3; + input SFTCTRL2; + input SFTCTRL1; + input SFTCTRL0; + input PH3637; + input PH3636; + input PH3635; + input PH3634; + input PH3633; + input PH3632; + input PH3631; + input PH3630; + input PH3629; + input PH3628; + input PH3627; + input PH3626; + input PH3625; + input PH3624; + input PH3623; + input PH3622; + input PH3621; + input PH3620; + input PH3619; + input PH3618; + input PH3617; + input PH3616; + input PH3615; + input PH3614; + input PH3613; + input PH3612; + input PH3611; + input PH3610; + input PH369; + input PH368; + input PH367; + input PH366; + input PH365; + input PH364; + input PH363; + input PH362; + input PH361; + input PH360; + input PL3637; + input PL3636; + input PL3635; + input PL3634; + input PL3633; + input PL3632; + input PL3631; + input PL3630; + input PL3629; + input PL3628; + input PL3627; + input PL3626; + input PL3625; + input PL3624; + input PL3623; + input PL3622; + input PL3621; + input PL3620; + input PL3619; + input PL3618; + input PL3617; + input PL3616; + input PL3615; + input PL3614; + input PL3613; + input PL3612; + input PL3611; + input PL3610; + input PL369; + input PL368; + input PL367; + input PL366; + input PL365; + input PL364; + input PL363; + input PL362; + input PL361; + input PL360; + input SGNED18H; + input SGNED18L; + output P7272; + output P7271; + output P7270; + output P7269; + output P7268; + output P7267; + output P7266; + output P7265; + output P7264; + output P7263; + output P7262; + output P7261; + output P7260; + output P7259; + output P7258; + output P7257; + output P7256; + output P7255; + output P7254; + output P7253; + output P7252; + output P7251; + output P7250; + output P7249; + output P7248; + output P7247; + output P7246; + output P7245; + output P7244; + output P7243; + output P7242; + output P7241; + output P7240; + output P7239; + output P7238; + output P7237; + output P7236; + output P7235; + output P7234; + output P7233; + output P7232; + output P7231; + output P7230; + output P7229; + output P7228; + output P7227; + output P7226; + output P7225; + output P7224; + output P7223; + output P7222; + output P7221; + output P7220; + output P7219; + output P7218; + output P7217; + output P7216; + output P7215; + output P7214; + output P7213; + output P7212; + output P7211; + output P7210; + output P729; + output P728; + output P727; + output P726; + output P725; + output P724; + output P723; + output P722; + output P721; + output P720; + input ROUNDEN; +endmodule + +module MULT36_CORE (...); + parameter MULT36X36 = "ENABLED"; + input PH7272; + input PH7271; + input PH7270; + input PH7269; + input PH7268; + input PH7267; + input PH7266; + input PH7265; + input PH7264; + input PH7263; + input PH7262; + input PH7261; + input PH7260; + input PH7259; + input PH7258; + input PH7257; + input PH7256; + input PH7255; + input PH7254; + input PH7253; + input PH7252; + input PH7251; + input PH7250; + input PH7249; + input PH7248; + input PH7247; + input PH7246; + input PH7245; + input PH7244; + input PH7243; + input PH7242; + input PH7241; + input PH7240; + input PH7239; + input PH7238; + input PH7237; + input PH7236; + input PH7235; + input PH7234; + input PH7233; + input PH7232; + input PH7231; + input PH7230; + input PH7229; + input PH7228; + input PH7227; + input PH7226; + input PH7225; + input PH7224; + input PH7223; + input PH7222; + input PH7221; + input PH7220; + input PH7219; + input PH7218; + input PH7217; + input PH7216; + input PH7215; + input PH7214; + input PH7213; + input PH7212; + input PH7211; + input PH7210; + input PH729; + input PH728; + input PH727; + input PH726; + input PH725; + input PH724; + input PH723; + input PH722; + input PH721; + input PH720; + input PL7272; + input PL7271; + input PL7270; + input PL7269; + input PL7268; + input PL7267; + input PL7266; + input PL7265; + input PL7264; + input PL7263; + input PL7262; + input PL7261; + input PL7260; + input PL7259; + input PL7258; + input PL7257; + input PL7256; + input PL7255; + input PL7254; + input PL7253; + input PL7252; + input PL7251; + input PL7250; + input PL7249; + input PL7248; + input PL7247; + input PL7246; + input PL7245; + input PL7244; + input PL7243; + input PL7242; + input PL7241; + input PL7240; + input PL7239; + input PL7238; + input PL7237; + input PL7236; + input PL7235; + input PL7234; + input PL7233; + input PL7232; + input PL7231; + input PL7230; + input PL7229; + input PL7228; + input PL7227; + input PL7226; + input PL7225; + input PL7224; + input PL7223; + input PL7222; + input PL7221; + input PL7220; + input PL7219; + input PL7218; + input PL7217; + input PL7216; + input PL7215; + input PL7214; + input PL7213; + input PL7212; + input PL7211; + input PL7210; + input PL729; + input PL728; + input PL727; + input PL726; + input PL725; + input PL724; + input PL723; + input PL722; + input PL721; + input PL720; + output PML7271; + output PML7270; + output PML7269; + output PML7268; + output PML7267; + output PML7266; + output PML7265; + output PML7264; + output PML7263; + output PML7262; + output PML7261; + output PML7260; + output PML7259; + output PML7258; + output PML7257; + output PML7256; + output PML7255; + output PML7254; + output PML7253; + output PML7252; + output PML7251; + output PML7250; + output PML7249; + output PML7248; + output PML7247; + output PML7246; + output PML7245; + output PML7244; + output PML7243; + output PML7242; + output PML7241; + output PML7240; + output PML7239; + output PML7238; + output PML7237; + output PML7236; + output PML7235; + output PML7234; + output PML7233; + output PML7232; + output PML7231; + output PML7230; + output PML7229; + output PML7228; + output PML7227; + output PML7226; + output PML7225; + output PML7224; + output PML7223; + output PML7222; + output PML7221; + output PML7220; + output PML7219; + output PML7218; + output PML7217; + output PML7216; + output PML7215; + output PML7214; + output PML7213; + output PML7212; + output PML7211; + output PML7210; + output PML729; + output PML728; + output PML727; + output PML726; + output PML725; + output PML724; + output PML723; + output PML722; + output PML721; + output PML720; + output PMH7271; + output PMH7270; + output PMH7269; + output PMH7268; + output PMH7267; + output PMH7266; + output PMH7265; + output PMH7264; + output PMH7263; + output PMH7262; + output PMH7261; + output PMH7260; + output PMH7259; + output PMH7258; + output PMH7257; + output PMH7256; + output PMH7255; + output PMH7254; + output PMH7253; + output PMH7252; + output PMH7251; + output PMH7250; + output PMH7249; + output PMH7248; + output PMH7247; + output PMH7246; + output PMH7245; + output PMH7244; + output PMH7243; + output PMH7242; + output PMH7241; + output PMH7240; + output PMH7239; + output PMH7238; + output PMH7237; + output PMH7236; + output PMH7235; + output PMH7234; + output PMH7233; + output PMH7232; + output PMH7231; + output PMH7230; + output PMH7229; + output PMH7228; + output PMH7227; + output PMH7226; + output PMH7225; + output PMH7224; + output PMH7223; + output PMH7222; + output PMH7221; + output PMH7220; + output PMH7219; + output PMH7218; + output PMH7217; + output PMH7216; + output PMH7215; + output PMH7214; + output PMH7213; + output PMH7212; + output PMH7211; + output PMH7210; + output PMH729; + output PMH728; + output PMH727; + output PMH726; + output PMH725; + output PMH724; + output PMH723; + output PMH722; + output PMH721; + output PMH720; +endmodule + +module MULT9_CORE (...); + parameter SIGNEDSTATIC_EN = "DISABLED"; + parameter ASIGNED_OPERAND_EN = "DISABLED"; + parameter BYPASS_MULT9 = "USED"; + parameter REGBYPSB = "REGISTER"; + parameter REGBYPSA1 = "REGISTER"; + parameter REGBYPSA2 = "REGISTER"; + parameter SHIFTA = "DISABLED"; + parameter SR_18BITSHIFT_EN = "DISABLED"; + parameter GSR = "ENABLED"; + parameter RESET = "SYNC"; + input A8; + input A7; + input A6; + input A5; + input A4; + input A3; + input A2; + input A1; + input A0; + input ASIGNED; + input BR8; + input BR7; + input BR6; + input BR5; + input BR4; + input BR3; + input BR2; + input BR1; + input BR0; + input AS18; + input AS17; + input AS16; + input AS15; + input AS14; + input AS13; + input AS12; + input AS11; + input AS10; + input AS28; + input AS27; + input AS26; + input AS25; + input AS24; + input AS23; + input AS22; + input AS21; + input AS20; + input ASSIGNED1; + input ASSIGNED2; + input BRSIGNED; + input CLK; + input CEA; + input RSTA; + output AO8; + output AO7; + output AO6; + output AO5; + output AO4; + output AO3; + output AO2; + output AO1; + output AO0; + output BO8; + output BO7; + output BO6; + output BO5; + output BO4; + output BO3; + output BO2; + output BO1; + output BO0; + output AOSIGNED; + output BOSIGNED; + output AR8; + output AR7; + output AR6; + output AR5; + output AR4; + output AR3; + output AR2; + output AR1; + output AR0; + output ARSIGNED; + output P1819; + output P1818; + output P1817; + output P1816; + output P1815; + output P1814; + output P1813; + output P1812; + output P1811; + output P1810; + output P189; + output P188; + output P187; + output P186; + output P185; + output P184; + output P183; + output P182; + output P181; + output P180; + input CEP; + input RSTP; +endmodule + +module OSC_CORE (...); + parameter DTR_EN = "ENABLED"; + parameter HF_CLK_DIV = "1"; + parameter HF_SED_SEC_DIV = "1"; + parameter HF_FABRIC_EN = "DISABLED"; + parameter HF_OSC_EN = "ENABLED"; + parameter HFDIV_FABRIC_EN = "ENABLED"; + parameter LF_FABRIC_EN = "DISABLED"; + parameter LF_OUTPUT_EN = "DISABLED"; + parameter DEBUG_N = "DISABLED"; + output HFCLKOUT; + input HFOUTEN; + input HFSDSCEN; + input HFTRMFAB8; + input HFTRMFAB7; + input HFTRMFAB6; + input HFTRMFAB5; + input HFTRMFAB4; + input HFTRMFAB3; + input HFTRMFAB2; + input HFTRMFAB1; + input HFTRMFAB0; + output LFCLKOUT; + input LFTRMFAB8; + input LFTRMFAB7; + input LFTRMFAB6; + input LFTRMFAB5; + input LFTRMFAB4; + input LFTRMFAB3; + input LFTRMFAB2; + input LFTRMFAB1; + input LFTRMFAB0; + output HFCLKCFG; + output HFSDCOUT; +endmodule + +module PCIE_CORE (...); + parameter ENABLE_USER_CFG = "DISABLED"; + parameter PWDN_N = "DISABLED"; + parameter GSR = "ENABLED"; + parameter IDDQ_PCS = "DISABLED"; + parameter PHY_MODE = "0b0000"; + parameter ALT_CLK_SEL_VCC = "PAD"; + parameter L0S_ADJ = "0b00000110000000"; + parameter L0S_EXIT_LATENCY = "MORE_4_US"; + parameter L1_EXIT_LATENCY = "MORE_64_US"; + parameter CALIB_3DB = "ENABLED"; + parameter DB_UPSTREAM = "6DB"; + parameter ERR_REC_ENTRY_SEL = "RCVRY_AFTER"; + parameter A_CHNGD_MAX = "0b100"; + parameter A0_FORCE = "DISABLED"; + parameter A0_FREEZE = "DISABLED"; + parameter A0_INIT = "0b000000"; + parameter A0DIR_VAL = "DISABLED"; + parameter A1_FORCE = "DISABLED"; + parameter A1_FREEZE = "DISABLED"; + parameter A1_INIT = "0b000000"; + parameter A1DIR_VAL = "DISABLED"; + parameter A2_FORCE = "DISABLED"; + parameter A2_FREEZE = "DISABLED"; + parameter A2_INIT = "0b000000"; + parameter A2GAIN_CALIB = "0b100110"; + parameter ACJTAG_REG = "0b00"; + parameter ADDR_LIMIT_PRE_MTHD_CTRL = "0b0100"; + parameter ADDR_LIMIT_TABLE_MTHD_CTRL = "0b00101"; + parameter ADIR_OVR = "DISABLED"; + parameter ADV_CH_CD_SEL = "IMPLEMENT_CH"; + parameter ADV_TARGET_LINK_SPEED_USPORT_A = "DISABLED"; + parameter ADV_TARGET_LINK_SPEED_USPORT_B = "DISABLED"; + parameter ADV_TARGET_LINK_SPEED_USPORT_C = "DISABLED"; + parameter ADV_TARGET_LINK_SPEED_USPORT_D = "DISABLED"; + parameter ADVANCE = "DISABLED"; + parameter ALERT_ENABLE = "0b000"; + parameter ALMOST_EMPTY_10B = "0b001110"; + parameter MID_VALUE_10B = "0b011110"; + parameter ALMOST_EMPTY_20B = "0b001111"; + parameter ALMOST_EMPTY_GEN3 = "0b001100"; + parameter ALMOST_FULL_10B = "0b110000"; + parameter ALMOST_FULL_20B = "0b011000"; + parameter ALMOST_FULL_GEN3 = "0b010110"; + parameter ARRAY_DA = "0b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter ARRAY_MT = "0b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000011100000000000010000000000000001001000000000000011000000000000001010000000000000100"; + parameter ARXCDRICP_RATE0 = "0b011"; + parameter ARXCDRICP_RATE1 = "0b011"; + parameter ARXCDRICP_RATE2 = "0b011"; + parameter ARXDMPWRDWN = "DISABLED"; + parameter ARXDPPWRDN = "DISABLED"; + parameter ARXEOM_PWRDN = "POWERED_DOWN"; + parameter ARXICP_RATE0 = "0b011"; + parameter ARXICP_RATE1 = "0b011"; + parameter ARXICP_RATE2 = "0b011"; + parameter ARXOVR_OUT = "DISABLED"; + parameter ARXRSACTAT = "0b0001"; + parameter ARXRSAPTAT = "0b1000"; + parameter ARXRSVCTL = "0b00000000"; + parameter ARXSEL_OUT = "DISABLED"; + parameter ASPM_L1_1_SUPPORTED = "SUPPORTED"; + parameter ASPM_L1_2_SUPPORTED = "SUPPORTED"; + parameter ASPM_SUPPORT = "L0S_AND_L1_SUPPORTED"; + parameter ATTENTION_BUTTON_PRESENT = "NOT_SUPPORTED"; + parameter ATTENTION_INDICATOR_PRESENT = "NOT_SUPPORTED"; + parameter ATXICP_RATE0 = "0b101"; + parameter ATXICP_RATE1 = "0b101"; + parameter AUTO_SHIFT = "ENABLED"; + parameter AUX_CURRENT = "SELF_POWERED"; + parameter AUXCLK1US_MAX = "0b00001001"; + parameter AUXIDL_MAX = "0b00000100"; + parameter BAR_INDEX_CFG0_A = "0b000"; + parameter BAR_INDEX_CFG0_B = "0b000"; + parameter BAR_INDEX_CFG0_C = "0b000"; + parameter BAR_INDEX_CFG0_D = "0b000"; + parameter BAR_INDEX_CFG1_A = "0b001"; + parameter BAR_INDEX_CFG1_B = "0b001"; + parameter BAR_INDEX_CFG1_C = "0b001"; + parameter BAR_INDEX_CFG1_D = "0b001"; + parameter BAR_INDEX_CFG2_A = "0b010"; + parameter BAR_INDEX_CFG2_B = "0b010"; + parameter BAR_INDEX_CFG2_C = "0b010"; + parameter BAR_INDEX_CFG2_D = "0b010"; + parameter BAR_INDEX_CFG3_A = "0b011"; + parameter BAR_INDEX_CFG3_B = "0b011"; + parameter BAR_INDEX_CFG3_C = "0b011"; + parameter BAR_INDEX_CFG3_D = "0b011"; + parameter BAR_INDEX_CFG4_A = "0b100"; + parameter BAR_INDEX_CFG4_B = "0b100"; + parameter BAR_INDEX_CFG4_C = "0b100"; + parameter BAR_INDEX_CFG4_D = "0b100"; + parameter BAR_INDEX_CFG5_A = "0b101"; + parameter BAR_INDEX_CFG5_B = "0b101"; + parameter BAR_INDEX_CFG5_C = "0b101"; + parameter BAR_INDEX_CFG5_D = "0b101"; + parameter BIR_MSIX_PBA_A = "BAR0"; + parameter BIR_MSIX_PBA_B = "BAR0"; + parameter BIR_MSIX_PBA_C = "BAR0"; + parameter BIR_MSIX_PBA_D = "BAR0"; + parameter BIR_MSIX_TABLE_A = "BAR0"; + parameter BIR_MSIX_TABLE_B = "BAR0"; + parameter BIR_MSIX_TABLE_C = "BAR0"; + parameter BIR_MSIX_TABLE_D = "BAR0"; + parameter BYP_AVG = "USED"; + parameter BYPASS = "PERFORM_RECEIVER_DETECTION"; + parameter BYPASS_ADDR_DEC = "NORMAL"; + parameter CALIB_SETTLE_MAX = "0b001"; + parameter CALIB_STABLE_MAX = "0b11000"; + parameter CAPABILITY_VERSION = "0b0010"; + parameter CDR_ERR = "DISABLED"; + parameter CDR_P1 = "CDR_PLL_RESET"; + parameter CDR_PLL_DELTA = "0P4_PERCENT"; + parameter CDR_REFERENCE = "0b00"; + parameter CDRPLL_CMP_MAX = "0b00010100"; + parameter CDRPLL_CNT_MAX = "0b00000100"; + parameter CDRPLL_PRE_RXEQ_COARSE_TIMER = "0b01010000"; + parameter CDRPLL_PRE_RXEQ_FINE_TIMER = "0b10110100"; + parameter CDRPLL_PST_RXEQ_COARSE_TIMER = "0b01000000"; + parameter CDRPLL_PST_RXEQ_FINE_TIMER = "0b01000010"; + parameter CFG_A_BAR0 = "0b11111111111111110000000000001100"; + parameter CFG_A_BAR1 = "0b11111111111111111111111111111111"; + parameter CFG_A_BAR2 = "0b11111111111111111110000000001100"; + parameter CFG_A_BAR3 = "0b11111111111111111111111111111111"; + parameter CFG_A_BAR4 = "0b11111111111111111110000000001100"; + parameter CFG_A_BAR5 = "0b11111111111111111111111111111111"; + parameter CFG_B_BAR0 = "0b11111111111111110000000000001100"; + parameter CFG_B_BAR1 = "0b11111111111111111111111111111111"; + parameter CFG_B_BAR2 = "0b11111111111111111110000000001100"; + parameter CFG_B_BAR3 = "0b11111111111111111111111111111111"; + parameter CFG_B_BAR4 = "0b11111111111111111110000000001100"; + parameter CFG_B_BAR5 = "0b11111111111111111111111111111111"; + parameter CFG_C_BAR0 = "0b11111111111111110000000000001100"; + parameter CFG_C_BAR1 = "0b11111111111111111111111111111111"; + parameter CFG_C_BAR2 = "0b11111111111111111110000000001100"; + parameter CFG_C_BAR3 = "0b11111111111111111111111111111111"; + parameter CFG_C_BAR4 = "0b11111111111111111110000000001100"; + parameter CFG_C_BAR5 = "0b11111111111111111111111111111111"; + parameter CFG_D_BAR0 = "0b11111111111111110000000000001100"; + parameter CFG_D_BAR1 = "0b11111111111111111111111111111111"; + parameter CFG_D_BAR2 = "0b11111111111111111110000000001100"; + parameter CFG_D_BAR3 = "0b11111111111111111111111111111111"; + parameter CFG_D_BAR4 = "0b11111111111111111110000000001100"; + parameter CFG_D_BAR5 = "0b11111111111111111111111111111111"; + parameter CFG_EXP_ROM_A = "0b00000000000000000000000000000000"; + parameter CFG_EXP_ROM_B = "0b00000000000000000000000000000000"; + parameter CFG_EXP_ROM_C = "0b00000000000000000000000000000000"; + parameter CFG_EXP_ROM_D = "0b00000000000000000000000000000000"; + parameter CIS_POINTER_CARDBUS_A = "0b00000000000000000000000000000000"; + parameter CIS_POINTER_CARDBUS_B = "0b00000000000000000000000000000000"; + parameter CIS_POINTER_CARDBUS_C = "0b00000000000000000000000000000000"; + parameter CIS_POINTER_CARDBUS_D = "0b00000000000000000000000000000000"; + parameter CLASS_CODE_ID3A = "0b000100011000000000000000"; + parameter CLASS_CODE_ID3B = "0b000100011000000000000000"; + parameter CLASS_CODE_ID3C = "0b000100011000000000000000"; + parameter CLASS_CODE_ID3D = "0b000100011000000000000000"; + parameter CM_RESTORE_TIME = "0b00000000"; + parameter CNT250NS_MAX = "0b001111100"; + parameter COARSE_GAIN = "DISABLED"; + parameter COEF_EN_LPBK_MASTER = "OTHERWISE"; + parameter COEF_EN_LPBK_SLAVE = "OTHERWISE"; + parameter COEF_ENABLE = "DETERMINE_LOCAL_PHY"; + parameter COEF_EQTX_FORCE = "0b000000000000000000"; + parameter COEF_LPBK_MASTER = "0b000000000000000000"; + parameter COEF_LPBK_SLAVE = "0b000000000000000000"; + parameter COEF0_POST = "0b000101"; + parameter COEF0_POST_CURSOR = "0b000000"; + parameter COEF0_PRE = "0b000000"; + parameter COEF0_PRE_CURSOR = "0b000000"; + parameter COEF1_POST = "0b000011"; + parameter COEF1_POST_CURSOR = "0b000000"; + parameter COEF1_PRE = "0b000000"; + parameter COEF1_PRE_CURSOR = "0b000000"; + parameter COEF10_POST = "0b000111"; + parameter COEF10_PRE = "0b000000"; + parameter COEF2_POST = "0b000100"; + parameter COEF2_POST_CURSOR = "0b000000"; + parameter COEF2_PRE = "0b000000"; + parameter COEF2_PRE_CURSOR = "0b000000"; + parameter COEF3_POST = "0b000010"; + parameter COEF3_POST_CURSOR = "0b000000"; + parameter COEF3_PRE = "0b000000"; + parameter COEF3_PRE_CURSOR = "0b000000"; + parameter COEF4_POST = "0b000000"; + parameter COEF4_PRE = "0b000000"; + parameter COEF5_POST = "0b000000"; + parameter COEF5_PRE = "0b000001"; + parameter COEF6_POST = "0b000000"; + parameter COEF6_PRE = "0b000010"; + parameter COEF7_POST = "0b000100"; + parameter COEF7_PRE = "0b000011"; + parameter COEF8_POST = "0b000011"; + parameter COEF8_PRE = "0b000010"; + parameter COEF9_POST = "0b000000"; + parameter COEF9_PRE = "0b000011"; + parameter COMP_128_SUPPORTED = "ENABLED"; + parameter COMP_32_SUPPORTED = "ENABLED"; + parameter COMP_64_SUPPORTED = "ENABLED"; + parameter COMPLETE = "DISABLED"; + parameter CONV_METHOD = "COMPUTE_PCIE_SPEC"; + parameter CORE_BYPASS = "NORMAL"; + parameter CORE_EN = "ENABLED"; + parameter COUNT_ACK_TO_NAK = "0b00000000"; + parameter CPL_TIMEOUT_DISABLE_SUPPORTED = "SUPPORTED"; + parameter CPL_TIMEOUT_RANGES_SUPPORTED = "NOT_SUPPORTED"; + parameter CRS_ENABLE = "DISABLED"; + parameter CSTAT_DATA_SCALE = "UNKNOWN_SCALE"; + parameter CSTAT_DATA_SELECT = "D0_POWER_CONSUMED"; + parameter CTLE_SETTLE = "0b100"; + parameter CTLEBIAS_1 = "0b1000"; + parameter ATXICP_RATE2 = "0b100"; + parameter CTLEBYPASS = "DISABLED"; + parameter CUR_FOM = "NUMBER_OF_CLOCK"; + parameter CUR_FOM_AVG = "0b101"; + parameter CUST_AUTO = "DISABLED"; + parameter CUST_CHK = "SET"; + parameter CUST_SEL = "DISABLED"; + parameter CUST_SKIP = "DISABLED"; + parameter CUST_TYP = "0b000"; + parameter CUSTOM_PATTERN = "0b00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + parameter D1_SUPPORT = "SUPPORTED"; + parameter D2_SUPPORT = "SUPPORTED"; + parameter DATA_INJECT = "0b00000000000000000000000000000000"; + parameter DATA_PM = "0b00000000"; + parameter DEEMPH_5G_3_5DB_6DB_N = "6DB"; + parameter DEEMPH_5G_ENABLE = "DISABLED"; + parameter DEEMPH_LPBK_MASTER = "6P0DB"; + parameter DEEMPH_LPBK_SLAVE = "6P0DB"; + parameter DEVICE_ID_ID1A = "0b1110000000000100"; + parameter DEVICE_ID_ID1B = "0b1110000000000100"; + parameter DEVICE_ID_ID1C = "0b1110000000000100"; + parameter DEVICE_ID_ID1D = "0b1110000000000100"; + parameter DEVICE_PORT_TYPE = "PCIE_ENDPOINT"; + parameter DFE_BIAS = "0b0001"; + parameter DFE_PWDN = "DISABLED"; + parameter DIR_PRE_GAIN = "0b00"; + parameter DIR_PST_GAIN = "0b01"; + parameter DIS_ARI_CAP = "ENABLED"; + parameter DIS_CSR_RST = "DISABLED"; + parameter DIS_INTERRUPT = "ENABLED"; + parameter DIS_INTERRUPT_B = "ENABLED"; + parameter DIS_INTERRUPT_C = "ENABLED"; + parameter DIS_INTERRUPT_D = "ENABLED"; + parameter DIS_MSI_CAP = "ENABLED"; + parameter DIS_MSI_CAP_B = "ENABLED"; + parameter DIS_MSI_CAP_C = "ENABLED"; + parameter DIS_MSI_CAP_D = "ENABLED"; + parameter DIS_MSIX_CAP = "ENABLED"; + parameter DIS_MSIX_CAP_B = "ENABLED"; + parameter DIS_MSIX_CAP_C = "ENABLED"; + parameter DIS_MSIX_CAP_D = "ENABLED"; + parameter DISABLE_FLR_CAPABILITY = "ENABLED"; + parameter DLLP_CRC_ERR_ENABLE = "DISABLED"; + parameter DLLP_CRC_ERR_RATE = "0b000000000000"; + parameter DLLP_INJECT_ENABLE = "DISABLED"; + parameter DOUBLE_TX_DATA_VALID = "ONE_CLK_EVERY_64_CLKS"; + parameter DOWNSTREAM_EQ_SKIP_PHASE_2_3 = "NORMAL_OPERATION"; + parameter DS_DRIVE_CLKREQ = "ENABLED"; + parameter DS_PORT_RX_PRESET_HINT = "0b001"; + parameter DS_PORT_TX_PRESET = "0b0011"; + parameter DS_US_N_PORTTYPE = "UPSTREAM"; + parameter DSI = "NO_DSI_NECESSARY"; + parameter DSP_DIR = "ANALYSIS_OF_DATA_BY_DSP"; + parameter DSPDIR_PRESGN = "0b11110000"; + parameter DSPDIR_PREVAL = "0b00011000"; + parameter DSPDIR_PSTSGN0 = "0b11111111"; + parameter DSPDIR_PSTSGN1 = "0b00000000"; + parameter DSPDIR_PSTVAL0 = "0b00000010"; + parameter DSPDIR_PSTVAL1 = "0b01000000"; + parameter EARLY_RX_EVAL = "RX_SIGNAL_AFTER_TS1"; + parameter ECRC_GEN_CHK_CAPABLE = "SUPPORTED"; + parameter EFF_LPBK = "PASSED"; + parameter EI4 = "EI_IV"; + parameter EM_INTERLOCK_PRESENT = "NOT_SUPPORTED"; + parameter EN = "DISABLED"; + parameter EN_ACK_TO_DIV = "ACK_SPEC"; + parameter EN_ACK_TO_NAK = "DO_NOTHING"; + parameter EN_ACS_VIOLATION = "DISABLED"; + parameter EN_ASPM_L0S = "ENABLED"; + parameter EN_ASPM_L1 = "ENABLED"; + parameter EN_ATOMIC_OP_CAP = "ENABLED"; + parameter EN_ATOMICOP_EGRESS_BLOCKED = "DISABLED"; + parameter EN_ATS_CAP = "ENABLED"; + parameter EN_BDGT_CAP = "DISABLED"; + parameter EN_CAP = "ENABLED"; + parameter EN_CAP_B = "ENABLED"; + parameter EN_CAP_C = "ENABLED"; + parameter EN_CAP_D = "ENABLED"; + parameter EN_COMPLETER_ABORT = "DISABLED"; + parameter EN_COMPLETION_TIMEOUT = "ENABLED"; + parameter EN_CORR_INTERNAL_ERROR = "DISABLED"; + parameter EN_DPA_CAP = "DISABLED"; + parameter EN_DRCT_SCR_OFF = "OTHERWISE"; + parameter EN_DRCT_TO_LPBK = "OTHERWISE"; + parameter EN_EQTX_OVERRIDE = "PIPE_LOCAL_FS_AND_PIPE_LOCAL_LF"; + parameter EN_FORCE_SCR_OFF_FAST = "OTHERWISE"; + parameter EN_L1 = "ENABLED"; + parameter EN_L1PMSS_CAP = "ENABLED"; + parameter EN_L2 = "ENABLED"; + parameter EN_LPBK_ERR_RST = "MASTER_LPBK_INCREMENT"; + parameter EN_LTR_CAP = "ENABLED"; + parameter EN_MC_BLOCKED_TLP = "DISABLED"; + parameter EN_NWL_VSEC_CAP = "ENABLED"; + parameter EN_PORT_DIS = "DISABLED"; + parameter EN_PORT_INTLEG = "ENABLED"; + parameter EN_RBAR_CAP_A = "ENABLED"; + parameter EN_RBAR_CAP_B = "ENABLED"; + parameter EN_RBAR_CAP_C = "ENABLED"; + parameter EN_RBAR_CAP_D = "ENABLED"; + parameter EN_RECEIVER_OVERFLOW = "DISABLED"; + parameter EN_SELF_XLINK = "OTHERWISE"; + parameter EN_SURPRISE_DOWN_ERROR = "DISABLED"; + parameter EN_TLP_PREFIX_BLOCKED = "DISABLED"; + parameter EN_UCORR_INTERNAL_ERROR = "DISABLED"; + parameter EN_USER_WRITE = "READ_WRITE_ACCESS"; + parameter END_END_PREFIXES_SUPPORTED = "NOT_SUPPORTED"; + parameter END_ON_HOLD = "YES_EXIT_ON_HOLD"; + parameter ENDCALIB_MAX = "0b10000100"; + parameter ENDPOINT_L0S_ACCEPTABLE_LATENCY = "MAX_64_NS"; + parameter ENDPOINT_L1_ACCEPTABLE_LATENCY = "MAX_1_US"; + parameter ENTRY_TIME_ASPM_L0S = "0b0000000000000000"; + parameter ENTRY_TIME_ASPM_L1 = "0b0000000000000000"; + parameter EOM_TIME = "0b0000000000000000"; + parameter EOM0DIR = "SELECT_DIR_1"; + parameter EOM1DIR = "SELECT_DIR_0"; + parameter EOMCTRL0_LOW = "DISABLED"; + parameter EOMDIVDIS = "DISABLED"; + parameter EOMMODE = "0b00"; + parameter EOMRDSEL = "DISABLED"; + parameter EOMSTART = "DISABLED"; + parameter EOMX = "0b000000"; + parameter EOMX_UPDATE_CNT_VALUE = "0b0011111"; + parameter EOMY = "0b00000000"; + parameter ERRCNT_DEC = "0b00100000"; + parameter ERRCNT_THR = "0b1000"; + parameter ES_PWDN = "DISABLED"; + parameter EVAL_RST = "DISABLED"; + parameter EXCLUDE_L0 = "INCLUDE"; + parameter EXCLUDE_CFG_COMPLETE = "INCLUDE"; + parameter EXCLUDE_CFG_IDLE = "INCLUDE"; + parameter EXCLUDE_LOOPBACK_MASTER = "INCLUDE"; + parameter EXCLUDE_REC_IDLE = "INCLUDE"; + parameter EXCLUDE_REC_RCVR_CFG = "INCLUDE"; + parameter EXIT_DIRECT_TO_DETECT = "DO_NOT_EXIT_TO_DETECT"; + parameter EXT_CONTROL = "DISABLED"; + parameter EXTENDED_TAG_FIELD_EN_DEFAULT = "EIGHT_BIT"; + parameter EXTENDED_TAG_FIELD_SUPPORTED = "EIGHT_BIT"; + parameter F_ARXCTLEDIR = "IGNORED"; + parameter F_ARXCTLENULL = "0b0000"; + parameter F_ARXDMDIR = "DISABLED"; + parameter F_ARXDMNULL = "0b00000"; + parameter F_ARXEOMDIR = "IGNORED"; + parameter F_ARXEOMNULL = "0b00000"; + parameter F_ARXESDIR = "IGNORED"; + parameter F_ARXESNULL = "0b00000"; + parameter F_ARXTDIR = "IGNORED"; + parameter F_ARXTNULL = "0b00000"; + parameter F_ASCHCAL = "IGNORED"; + parameter F_ASCHDIR = "IGNORED"; + parameter F_ASCHNULL = "0b0000"; + parameter FAIL_LIMIT_ERR = "RXEQ_NOT_FAIL"; + parameter FAST = "L0"; + parameter FC_UPDATE_TIMER_DISABLE = "ENABLED"; + parameter FC_UPDATE_TIMER_DIV = "PCIE_REC_VALUES"; + parameter FILTER = "0b1001"; + parameter FINE_GAIN = "DISABLED"; + parameter FOM_COMPARE = "0b00000000"; + parameter FOM_HIRES = "DISABLED"; + parameter FOM_ITERCNT = "0b101"; + parameter FOM_THR = "0b0100"; + parameter FORCE_ATXDRA = "0b000000000000000000000"; + parameter FORCE_ATXDRP = "0b000000000000000000000"; + parameter FORCE_ATXDRR = "0b000000000000000000000"; + parameter FORCE_ATXDRT = "0b000000000000000000000"; + parameter FORCE_DIR_RSLT = "0b000000"; + parameter FORCE_FOM_RSLT = "0b00000000"; + parameter FORCE_IDLE = "DISABLED"; + parameter FORCE_RX_DETECT = "DISABLED"; + parameter FORCE_SIGNAL = "DISABLED"; + parameter FREQ_LOCK = "DISABLED"; + parameter FS = "0b110000"; + parameter GAIN_TIMER1 = "0b0101"; + parameter GEN12_ENA_POST_A0 = "DISABLED"; + parameter GEN12_ENA_POST_A1A2 = "DISABLED"; + parameter GEN12_ENA_PREA0 = "DISABLED"; + parameter GEN3_ENA_POST_A0 = "ENABLED"; + parameter GEN3_ENA_POST_A1A2 = "ENABLED"; + parameter GEN3_ENA_PREA0 = "ENABLED"; + parameter GLOBAL_INVAL_SUPPORT = "ENABLED"; + parameter HINT = "0b000"; + parameter HINT0_3DB = "ENABLED"; + parameter HINT0_A0GAIN = "0b111"; + parameter HINT0_A2GAIN = "0b111"; + parameter HINT1_3DB = "ENABLED"; + parameter HINT1_A0GAIN = "0b011"; + parameter HINT1_A2GAIN = "0b101"; + parameter HINT2_3DB = "ENABLED"; + parameter HINT2_A0GAIN = "0b011"; + parameter HINT2_A2GAIN = "0b111"; + parameter HINT3_3DB = "ENABLED"; + parameter HINT3_A0GAIN = "0b000"; + parameter HINT3_A2GAIN = "0b111"; + parameter HINT4_3DB = "DISABLED"; + parameter HINT4_A0GAIN = "0b111"; + parameter HINT4_A2GAIN = "0b111"; + parameter HINT5_3DB = "DISABLED"; + parameter HINT5_A0GAIN = "0b011"; + parameter HINT5_A2GAIN = "0b101"; + parameter HINT6_3DB = "DISABLED"; + parameter HINT6_A0GAIN = "0b011"; + parameter HINT6_A2GAIN = "0b111"; + parameter HINT7_3DB = "DISABLED"; + parameter HINT7_A0GAIN = "0b000"; + parameter HINT7_A2GAIN = "0b111"; + parameter HINT7_OVR = "DISABLED"; + parameter HLD_RST = "WRITE_1"; + parameter HOT_PLUG_CAPABLE = "NOT_SUPPORTED"; + parameter HOT_PLUG_SURPRISE = "NOT_POSSIBLE"; + parameter ID_DS_PORT = "0b0000000000000000"; + parameter ID_NWL_VSEC_CAP = "0b0000000000000001"; + parameter IGNORE_ECRC = "DISABLED"; + parameter IGNORE_POISON = "ENABLED"; + parameter INDICATOR = "0b00000000000000000000000000000000"; + parameter INHIBIT = "PERFORM_RECEIVER_DETECTION"; + parameter INJECT_DATA_ERROR_0 = "DISABLED"; + parameter INJECT_DATA_ERROR_1 = "DISABLED"; + parameter INJECT_DATA_ERROR_2 = "DISABLED"; + parameter INJECT_DATA_ERROR_3 = "DISABLED"; + parameter INJECT_DATA_ERROR_EN = "DISABLED"; + parameter INJECT_ERR_LANE_SELECT_0 = "DISABLED"; + parameter INJECT_ERR_LANE_SELECT_1 = "DISABLED"; + parameter INJECT_ERR_LANE_SELECT_2 = "DISABLED"; + parameter INJECT_ERR_LANE_SELECT_3 = "DISABLED"; + parameter INJECT_RX_1BIT_DATA_ERR = "DISABLED"; + parameter INJECT_RX_2BIT_DATA_ERR = "DISABLED"; + parameter INJECT_RX_SKP_ERR = "DISABLED"; + parameter INJECT_RX_VALID_ERR = "DISABLED"; + parameter INT_CLR = "DISABLED"; + parameter INT_EN = "DISABLED"; + parameter INTERRUPT_MESSAGE_NUMBER = "0b00000"; + parameter INVAL_Q_DEPTH = "0b00000"; + parameter ITERATION_MAX = "0b000000"; + parameter L1_ENTER_PLL_RESET_TIME = "0b100"; + parameter L1_EXIT_PLL_LOCK_TIME = "0b01110"; + parameter L1PM_SUPPORTED = "SUPPORTED"; + parameter L2_D3HOT_ENABLE = "DISABLED"; + parameter LANE_SELECT = "0b0000"; + parameter LF = "0b001000"; + parameter LF_PHY = "0b001010"; + parameter LINK_LANE = "ENABLED"; + parameter LPBK_EN = "DISABLED"; + parameter LW_START_UPDN_ACK_EN = "DISABLED"; + parameter LW_START_UPDN_COUNT = "0b000011111010"; + parameter LW_START_UPDN_EIE_EN = "DISABLED"; + parameter LW_START_UPDN_EN_DIR_DS = "DO_NOT_ASSERT"; + parameter LW_START_UPDN_END_DELAY = "0b1001"; + parameter LW_START_UPDN_RATE_EN_16G = "DISABLED"; + parameter LW_START_UPDN_RATE_EN_2P5G = "ENABLED"; + parameter LW_START_UPDN_RATE_EN_5G = "ENABLED"; + parameter LW_START_UPDN_RATE_EN_8G = "ENABLED"; + parameter LW_START_UPDN_START_DELAY = "0b1000"; + parameter LW_START_UPDN_TIMER_EN = "DISABLED"; + parameter MARGIN_ENABLE = "PCIE_SPEC"; + parameter MARGIN_VALUE = "0b000"; + parameter MASK_0 = "SKIP_RCVR_DETECTION"; + parameter MASK_1 = "SKIP_RCVR_DETECTION"; + parameter MASK_2 = "SKIP_RCVR_DETECTION"; + parameter MASK_3 = "SKIP_RCVR_DETECTION"; + parameter MAX_LINK_WIDTH = "1_LANE"; + parameter MAX_SPEED = "8G"; + parameter MAX_VAR = "0b00100"; + parameter MERGE_LMMI_RDATA = "DISABLED"; + parameter METHOD_FMERIT_CTRL = "STEP_PCIE_TX_PRESETS"; + parameter METHOD_TX_CRED_CLEANUP = "HEADER"; + parameter MGMT_INTLEG = "0b0000"; + parameter MGMT_LTSSM_DIS = "DISABLED"; + parameter MID_VALUE_20B = "0b010100"; + parameter MID_VALUE_GEN3 = "0b001110"; + parameter MIN_SPEED = "2P5G"; + parameter MIN_TIME = "0_MS"; + parameter MIN_TIME_CFG = "4US"; + parameter MIX_DIR = "DISABLED"; + parameter MODE_BFF = "RESTART"; + parameter MRL_SENSOR_PRESENT = "NOT_SUPPORTED"; + parameter MULT_ENABLE = "RECOMMENDED_VALUES"; + parameter MULT_MESSAGE_CAPABLE_MSICAP_A = "EIGHT"; + parameter MULT_MESSAGE_CAPABLE_MSICAP_B = "EIGHT"; + parameter MULT_MESSAGE_CAPABLE_MSICAP_C = "EIGHT"; + parameter MULT_MESSAGE_CAPABLE_MSICAP_D = "EIGHT"; + parameter NFTS = "0b11111111"; + parameter NO_COMMAND_COMPLETED_SUPPORT = "SW_NOTIF_PROVIDED"; + parameter NO_FCMP = "DISABLED"; + parameter NO_REMOTE_CHANGE = "DISABLED"; + parameter NO_TX_IDLE_DELAY = "DATA_VALID_GAP"; + parameter NUM_LANES = "1_LANE"; + parameter NUMBER_DSLINK = "0b00000"; + parameter NUMHI_A = "0b00000000000000000000000000000000"; + parameter NUMHI_B = "0b00000000000000000000000000000000"; + parameter NUMHI_C = "0b00000000000000000000000000000000"; + parameter NUMHI_D = "0b00000000000000000000000000000000"; + parameter NUMHOLD = "SINGLE_HOLD_RESPONSE"; + parameter NUMLO_A = "0b00000000000000000000000000000000"; + parameter NUMLO_B = "0b00000000000000000000000000000000"; + parameter NUMLO_C = "0b00000000000000000000000000000000"; + parameter NUMLO_D = "0b00000000000000000000000000000000"; + parameter OBFF_SUPPORTED = "NOT_SUPPORTED"; + parameter OFFSET_MSIX_PBA_A = "0b00000000000000000111000000000"; + parameter OFFSET_MSIX_PBA_B = "0b00000000000000000111000000000"; + parameter OFFSET_MSIX_PBA_C = "0b00000000000000000111000000000"; + parameter OFFSET_MSIX_PBA_D = "0b00000000000000000111000000000"; + parameter OFFSET_MSIX_TABLE_A = "0b00000000000000000110000000000"; + parameter OFFSET_MSIX_TABLE_B = "0b00000000000000000110000000000"; + parameter OFFSET_MSIX_TABLE_C = "0b00000000000000000110000000000"; + parameter OFFSET_MSIX_TABLE_D = "0b00000000000000000110000000000"; + parameter OVER_CTLE = "DISABLED"; + parameter OVER_RX = "DISABLED"; + parameter OVER_RXDM = "DISABLED"; + parameter OVER_RXDP = "DISABLED"; + parameter OVER_RXES = "DISABLED"; + parameter OVER_RXT = "DISABLED"; + parameter OVER_SCH = "DISABLED"; + parameter OVER_TX = "DISABLED"; + parameter OVERRIDE = "DISABLED"; + parameter OVR_CDR = "DISABLED"; + parameter OVR_DIR = "DISABLED"; + parameter OVR_FOM = "DISABLED"; + parameter OVR_GAIN3DB = "ENABLED"; + parameter OVR_HINT3DB = "ENABLED"; + parameter P_CLK_PERIOD = "0b0000111110100000"; + parameter PAR_LPBK = "DISABLED"; + parameter PAS = "10X"; + parameter PATTERN_0 = "UNSCRAMBLED"; + parameter PATTERN_1 = "UNSCRAMBLED"; + parameter PATTERN_2 = "UNSCRAMBLED"; + parameter PCIPM_L1_1_SUPPORTED = "SUPPORTED"; + parameter PCIPM_L1_2_SUPPORTED = "SUPPORTED"; + parameter PERIOD_SRIS_128B130B = "0b000000"; + parameter PERIOD_SRIS_8B10B = "0b00000000"; + parameter PERIOD_SRNS_128B130B = "0b00000000"; + parameter PERIOD_SRNS_8B10B = "0b00000000"; + parameter PHANTOM_FUNCTIONS_SUPPORTED = "NO_FUNCTION_BITS"; + parameter PHYSICAL_SLOT_NUMBER = "0b0000000000001"; + parameter PIN_INTERRUPT_A = "INTA"; + parameter PIN_INTERRUPT_B = "INTA"; + parameter PIN_INTERRUPT_C = "INTA"; + parameter PIN_INTERRUPT_D = "INTA"; + parameter PIPE_TX_SWING = "FULL_SWING"; + parameter PLESIO_LPBK = "DISABLED"; + parameter PM_REDUCE_TIMEOUTS = "DISABLED"; + parameter PMA_DRIVEN_MODE = "PCS_DRIVEN"; + parameter PMCSR_B2_B3_SUPPORT = "DISABLED"; + parameter PMCSR_BUS_P_C_EN = "DISABLED"; + parameter PME_CLOCK = "DISABLED"; + parameter PME_SUPPORT = "0b11111"; + parameter PMFF_ALL = "DISABLED"; + parameter PORT_CM_RESTORE_TIME = "0b00000000"; + parameter PORT_NUMBER = "0b00000000"; + parameter PORT_TPOWER_ON_SCALE = "2_US"; + parameter PORT_TPOWER_ON_VALUE = "0b00000"; + parameter POST = "0b000000"; + parameter POST_A0COEF = "0b001"; + parameter POST_A1COEF = "0b001"; + parameter POST_A2COEF = "0b001"; + parameter POST_CURSOR_LIMIT = "0b100000"; + parameter POST_CURSOR_STEP_SIZE = "0b001000"; + parameter POST_ITERCNT = "0b100"; + parameter POST_STEP = "STEP_SIZE_4"; + parameter POWER_CONTROLLER_PRESENT = "NOT_SUPPORTED"; + parameter POWER_INDICATOR_PRESENT = "NOT_SUPPORTED"; + parameter POWER_REQUIRED = "AUX_POWER_NOT_REQUIRED"; + parameter PRBS_CHK = "DISABLED"; + parameter PRBS_GEN = "DISABLED"; + parameter PRBS_TYP = "PRBS7"; + parameter PRE = "0b000000"; + parameter PRE_A0COEF = "0b101"; + parameter PRE_A1COEF = "0b101"; + parameter PRE_A2COEF = "0b101"; + parameter PRE_CURSOR_LIMIT = "0b010000"; + parameter PRE_CURSOR_STEP_SIZE = "0b000100"; + parameter PRE_FOM = "ENABLED"; + parameter PRE_FOM_AVG = "0b100"; + parameter PRE_ITERCNT = "0b100"; + parameter PRE_RXEQ_TIMER = "0b00010100"; + parameter PRE_STEP = "STEP_SIZE_2"; + parameter PRESET_COUNT_INI = "0b0000"; + parameter PRESET_EN_LPBK_MASTER = "OTHERWISE"; + parameter PRESET_EN_LPBK_SLAVE = "OTHERWISE"; + parameter PRESET_ENABLE = "NORMAL_OP"; + parameter PRESET_EQTX_FORCE = "0b0000"; + parameter PRESET_LPBK_MASTER = "0b0000"; + parameter PRESET_LPBK_SLAVE_0 = "OTHERWISE"; + parameter PRESET_LPBK_SLAVE_1 = "OTHERWISE"; + parameter PRESET_LPBK_SLAVE_2 = "OTHERWISE"; + parameter PRESET_LPBK_SLAVE_3 = "OTHERWISE"; + parameter PRESET_REJECT = "0b00000000000"; + parameter PRESET0_POSTCURSOR = "0b1000"; + parameter PRESET0_PRECURSOR = "0b0000"; + parameter PRESET1_POSTCURSOR = "0b0101"; + parameter PRESET1_PRECURSOR = "0b0000"; + parameter PRESET10_POSTCURSOR = "0b1010"; + parameter PRESET10_PRECURSOR = "0b0000"; + parameter PRESET2_POSTCURSOR = "0b0110"; + parameter PRESET2_PRECURSOR = "0b0000"; + parameter PRESET3_POSTCURSOR = "0b0100"; + parameter PRESET3_PRECURSOR = "0b0000"; + parameter PRESET4_POSTCURSOR = "0b0000"; + parameter PRESET4_PRECURSOR = "0b0000"; + parameter PRESET5_POSTCURSOR = "0b0000"; + parameter PRESET5_PRECURSOR = "0b0011"; + parameter PRESET6_POSTCURSOR = "0b0000"; + parameter PRESET6_PRECURSOR = "0b0100"; + parameter PRESET7_POSTCURSOR = "0b0110"; + parameter PRESET7_PRECURSOR = "0b0011"; + parameter PRESET8_POSTCURSOR = "0b0100"; + parameter PRESET8_PRECURSOR = "0b0100"; + parameter PRESET9_POSTCURSOR = "0b0000"; + parameter PRESET9_PRECURSOR = "0b0101"; + parameter PS_REENTRY_TIME = "0b00000000"; + parameter RATE = "2P5G"; + parameter RATE_ENABLE = "INITIAL_SPEED_CHANGES"; + parameter RCB = "DISABLED"; + parameter REC_SPD_INFER_EQ_PH0123 = "EXCLUDE_TIME_SPENT"; + parameter REC_SPD_INFER_RCVR_CFG = "EXCLUDE_TIME_SPENT"; + parameter REC_SPD_INFER_RCVR_LOCK = "EXCLUDE_TIME_SPENT"; + parameter DIS_FUNC_B = "ENABLED"; + parameter DIS_FUNC_C = "ENABLED"; + parameter DIS_FUNC_D = "ENABLED"; + parameter REDUCE_TIMEOUTS_LTSSMSIM = "DISABLED"; + parameter REDUCE_TIMEOUTS_SIM = "DISABLED"; + parameter REDUCE_TS1 = "DISABLED"; + parameter REENTRY_DISABLE = "ENABLED"; + parameter REENTRY_TIME = "0b00000000000000"; + parameter REQ_FEEDBACK = "0b00000000"; + parameter RESET_EIEOS_INTERVAL_COUNT = "DISABLED"; + parameter REVISION_ID_ID3A = "0b00000100"; + parameter REVISION_ID_ID3B = "0b00000100"; + parameter REVISION_ID_ID3C = "0b00000100"; + parameter REVISION_ID_ID3D = "0b00000100"; + parameter RL1 = "0b0011"; + parameter RL2 = "0b0101"; + parameter RL3 = "0b0011"; + parameter ROUTING_SUPPORTED = "DISABLED"; + parameter RP_COMPLETER_EN = "DISABLED"; + parameter RSTCDR_ERR = "ENABLED"; + parameter RSTCDR_FRQ = "ENABLED"; + parameter RSTCDR_IDL = "DISABLED"; + parameter RX_BYPASS_DECODE_EN = "ENABLED"; + parameter RX_BYPASS_MSG_DEC = "NORMAL_OPERATION"; + parameter RX_CONVERT_UR_TO_CA = "NORMAL_OPERATION"; + parameter RX_D_ALLOC_C = "0b0000000001100000"; + parameter RX_D_ALLOC_N = "0b0000000000000110"; + parameter RX_D_ALLOC_P = "0b0000000001101100"; + parameter RX_DIV_MODE1 = "0b10"; + parameter RX_DIV_MODE0 = "DIV_2"; + parameter RX_DIV_MODE2 = "0b00"; + parameter RX_DL_ACTIVE_DISABLE = "BLOCK_RECEPTION_TLP"; + parameter RX_EARLY_FORWARD_DISABLE = "FWD_RX_DATA_LL"; + parameter RX_ERR_COR = "DISABLED"; + parameter RX_ERR_UCOR = "DISABLED"; + parameter RX_FORCE_RO = "DISABLED"; + parameter RX_H_ALLOC_C = "0b000000100000"; + parameter RX_H_ALLOC_N = "0b000000001000"; + parameter RX_H_ALLOC_P = "0b000000010000"; + parameter RX_HIZ = "IGNORED"; + parameter RX_IMPED_RATIO = "0b10000000"; + parameter RX_INHIBIT_ACK_NAK = "PROCESS_RCVD_ACK"; + parameter RX_INHIBIT_TLP = "PROCESS_RCVD_TLP"; + parameter RX_LCRC_INJECT_EN = "DO_NOT_INJECT_ERROR"; + parameter RX_MALF_INJECT_EN = "DO_NOT_INJECT_ERROR"; + parameter RX_POLINV = "NORMAL"; + parameter RX_PRIORITY = "DISABLED"; + parameter RX_PRIORITY_N_STARVE_THRESH = "0b00010000"; + parameter RX_PRIORITY_P_STARVE_THRESH = "0b00010000"; + parameter RX_PWRDN = "IGNORED"; + parameter RX_TLP_VALID = "DISABLED"; + parameter RXEQ_ALGO = "0b111"; + parameter RXEQ_ENABLE = "0b100"; + parameter RXEQ_EVAL_MAX = "0b11111111"; + parameter RXEQ_MANUAL = "DISABLED"; + parameter RXEQ_STATE = "0b0000"; + parameter RXF_A = "0b0100"; + parameter RXF_B = "0b0100"; + parameter RXF_C = "0b0100"; + parameter RXHF_CLKDN = "ENABLED"; + parameter RXIDLE_MAX = "0b1111"; + parameter RXIDLE_MAX2 = "0b0000010000000000"; + parameter RXIDLE_MSB = "0b11"; + parameter RXM_A = "0b10"; + parameter RXM_B = "0b01"; + parameter RXM_C = "0b00"; + parameter RXN_A = "0b00100"; + parameter RXN_B = "0b01001"; + parameter RXN_C = "0b01111"; + parameter RXOFF_SETTLE_MAX = "0b011"; + parameter RXOFF_STABLE_MAX = "0b10000"; + parameter RXPLLINIT = "DISABLED"; + parameter RXPLLRST = "SET"; + parameter SELECT_DIR_FOM_N = "FME_METHOD"; + parameter SELECTABLE_DEEMPHASIS = "6P0DB"; + parameter SEQ_NUM = "0b000000000000"; + parameter SIGNAL_DETECT_THRESHOLD = "125_MV"; + parameter SIZE_CFG0_A = "0b00000"; + parameter SIZE_CFG0_B = "0b00000"; + parameter SIZE_CFG0_C = "0b00000"; + parameter SIZE_CFG0_D = "0b00000"; + parameter SIZE_CFG1_A = "0b00000"; + parameter SIZE_CFG1_B = "0b00000"; + parameter SIZE_CFG1_C = "0b00000"; + parameter SIZE_CFG1_D = "0b00000"; + parameter SIZE_CFG2_A = "0b00000"; + parameter SIZE_CFG2_B = "0b00000"; + parameter SIZE_CFG2_C = "0b00000"; + parameter SIZE_CFG2_D = "0b00000"; + parameter SIZE_CFG3_A = "0b00000"; + parameter SIZE_CFG3_B = "0b00000"; + parameter SIZE_CFG3_C = "0b00000"; + parameter SIZE_CFG3_D = "0b00000"; + parameter SIZE_CFG4_A = "0b00000"; + parameter SIZE_CFG4_B = "0b00000"; + parameter SIZE_CFG4_C = "0b00000"; + parameter SIZE_CFG4_D = "0b00000"; + parameter SIZE_CFG5_A = "0b00000"; + parameter SIZE_CFG5_B = "0b00000"; + parameter SIZE_CFG5_C = "0b00000"; + parameter SIZE_CFG5_D = "0b00000"; + parameter SKIP_FINAL_COEF_CHECK = "DISABLED"; + parameter SLOT_CLOCK_CONFIGURATION = "REFCLK_BY_SLOT"; + parameter SLOT_IMPLEMENTED = "UNCONNECTED"; + parameter SLOT_POWER_LIMIT_SCALE = "0b00"; + parameter SLOT_POWER_LIMIT_VALUE = "0b00001010"; + parameter SPEED_LPBK_CTRL = "2P5G"; + parameter START_PRESET = "PRESET_VALUE"; + parameter START_REMOTE_ADV = "OTHERWISE"; + parameter STATE_DATA_N = "USE_RX_DATA_OBSERVATION"; + parameter STEP_SELECT = "0b00000"; + parameter STP_OVERRIDE_EN = "DISABLED"; + parameter STP_OVERRIDE_LEN = "0b00000000000"; + parameter STP_OVERRIDE_NEW_LEN = "0b00000000000"; + parameter SUBSTATE_MAX = "0b00000"; + parameter SUBSYSTEM_ID_ID2A = "0b1110000000000100"; + parameter SUBSYSTEM_ID_ID2B = "0b1110000000000100"; + parameter SUBSYSTEM_ID_ID2C = "0b1110000000000100"; + parameter SUBSYSTEM_ID_ID2D = "0b1110000000000100"; + parameter SUBSYSTEM_VENDOR_ID_ID2A = "0b0001100110101010"; + parameter SUBSYSTEM_VENDOR_ID_ID2B = "0b0001100110101010"; + parameter SUBSYSTEM_VENDOR_ID_ID2C = "0b0001100110101010"; + parameter SUBSYSTEM_VENDOR_ID_ID2D = "0b0001100110101010"; + parameter SUPP_SIZE_CFG0_A = "0b00000000000000001111"; + parameter SUPP_SIZE_CFG0_B = "0b00000000000000001111"; + parameter SUPP_SIZE_CFG0_C = "0b00000000000000001111"; + parameter SUPP_SIZE_CFG0_D = "0b00000000000000001111"; + parameter SUPP_SIZE_CFG1_A = "0b00000000000000000000"; + parameter SUPP_SIZE_CFG1_B = "0b00000000000000000000"; + parameter SUPP_SIZE_CFG1_C = "0b00000000000000000000"; + parameter SUPP_SIZE_CFG1_D = "0b00000000000000000000"; + parameter SUPP_SIZE_CFG2_A = "0b00000000000000000000"; + parameter SUPP_SIZE_CFG2_B = "0b00000000000000000000"; + parameter SUPP_SIZE_CFG2_C = "0b00000000000000000000"; + parameter SUPP_SIZE_CFG2_D = "0b00000000000000000000"; + parameter SUPP_SIZE_CFG3_A = "0b00000000000000000000"; + parameter SUPP_SIZE_CFG3_B = "0b00000000000000000000"; + parameter SUPP_SIZE_CFG3_C = "0b00000000000000000000"; + parameter SUPP_SIZE_CFG3_D = "0b00000000000000000000"; + parameter SUPP_SIZE_CFG4_A = "0b00000000000000000000"; + parameter SUPP_SIZE_CFG4_B = "0b00000000000000000000"; + parameter SUPP_SIZE_CFG4_C = "0b00000000000000000000"; + parameter SUPP_SIZE_CFG4_D = "0b00000000000000000000"; + parameter SUPP_SIZE_CFG5_A = "0b00000000000000000000"; + parameter SUPP_SIZE_CFG5_B = "0b00000000000000000000"; + parameter SUPP_SIZE_CFG5_C = "0b00000000000000000000"; + parameter SUPP_SIZE_CFG5_D = "0b00000000000000000000"; + parameter SYS_ALLOC = "PWR_BUDGET_CAP_VALUES"; + parameter T0_RX_BYPASS_MSG_DEC = "NORMAL_OPERATION"; + parameter TABLE_SIZE_MSIXCAP_A = "0b00000000111"; + parameter TABLE_SIZE_MSIXCAP_B = "0b00000000111"; + parameter TABLE_SIZE_MSIXCAP_C = "0b00000000111"; + parameter TABLE_SIZE_MSIXCAP_D = "0b00000000111"; + parameter TARGET_LINK_SPEED = "8G"; + parameter TARGET_ONLY = "DISABLED"; + parameter TD1_MEANS_ADD_HAS_N = "ECRC_CONTAINED"; + parameter TIMEOUT_THRESHOLD_PME = "0b000000000000"; + parameter TIMEOUT_THRESHOLD_PME_TO_ACK_DS = "0b00000000"; + parameter TIMER = "0b00000000"; + parameter TLP_LCRC_ERR_ENABLE = "DISABLED"; + parameter TLP_LCRC_ERR_RATE = "0b000"; + parameter TLP_SEQ_ERR_ENABLE = "DISABLED"; + parameter TLUNIT = "1_MS"; + parameter TO_EXTEND = "0b01111111"; + parameter TRNG_A0COEF = "0b101"; + parameter TRNG_A1COEF = "0b101"; + parameter TRNG_A2COEF = "0b101"; + parameter TRNG_FAST = "DISABLED"; + parameter TRNG_ITERCNT = "0b100"; + parameter TRNG_RXEQ_TIMER = "0b00100000"; + parameter TS1_ACK_BLOCK_USE_PRESET = "FORCED_TO_ZERO"; + parameter TS1_ACK_DELAY = "0b00011111"; + parameter TS1_ACK_MASK_USE_PRESET = "IGNORES_USE_PRESET"; + parameter TX_AMP_RATIO_MARGIN0_FULL = "0b10000000"; + parameter TX_AMP_RATIO_MARGIN0_HALF = "0b01010000"; + parameter TX_AMP_RATIO_MARGIN1_FULL = "0b01111000"; + parameter TX_AMP_RATIO_MARGIN1_HALF = "0b01011000"; + parameter TX_AMP_RATIO_MARGIN2_FULL = "0b01101000"; + parameter TX_AMP_RATIO_MARGIN2_HALF = "0b01001000"; + parameter TX_AMP_RATIO_MARGIN3_FULL = "0b01100000"; + parameter TX_AMP_RATIO_MARGIN3_HALF = "0b01000000"; + parameter TX_AMP_RATIO_MARGIN4_FULL = "0b01011000"; + parameter TX_AMP_RATIO_MARGIN4_HALF = "0b00111000"; + parameter TX_AMP_RATIO_MARGIN5_FULL = "0b01010000"; + parameter TX_AMP_RATIO_MARGIN5_HALF = "0b00110000"; + parameter TX_AMP_RATIO_MARGIN6_FULL = "0b01001000"; + parameter TX_AMP_RATIO_MARGIN6_HALF = "0b00101000"; + parameter TX_AMP_RATIO_MARGIN7_FULL = "0b01000000"; + parameter TX_AMP_RATIO_MARGIN7_HALF = "0b00100000"; + parameter TX_BYPASS_DECODE_EN = "ENABLED"; + parameter TX_BYPASS_MSG_DEC = "NORMAL_OPERATION"; + parameter TX_COMP_RECEIVE = "DOES_NOT_ASSERT"; + parameter TX_CONVERT_UR_TO_CA = "NORMAL_OPERATION"; + parameter TX_D_ALLOC_C = "0b0000000001100000"; + parameter TX_D_ALLOC_N = "0b0000000000000110"; + parameter TX_D_ALLOC_P = "0b0000000001101100"; + parameter TX_DIV_MODE0 = "0b10"; + parameter TX_DIV_MODE1 = "0b10"; + parameter TX_DIV_MODE2 = "0b10"; + parameter TX_EQ_EVAL_CNT_SEL = "WAIT_8_CLKS"; + parameter TX_ERR_COR = "DISABLED"; + parameter TX_ERR_UCOR = "DISABLED"; + parameter TX_FORCE_RO = "DISABLED"; + parameter TX_GAP_INJECT_EN = "DO_NOT_INJECT_GAP"; + parameter TX_H_ALLOC_C = "0b000000100000"; + parameter TX_H_ALLOC_N = "0b000000001000"; + parameter TX_H_ALLOC_P = "0b000000010000"; + parameter TX_HIZ = "IGNORED"; + parameter TX_IMPED_RATIO = "0b10000000"; + parameter TX_PAR1_INJECT_EN = "DO_NOT_INJECT_ERR"; + parameter TX_PAR2_HANDLE_DISABLE = "ENABLE_HANDLING"; + parameter TX_PAR2_INJECT_EN = "DO_NOT_INJECT_ERR"; + parameter TX_PAR2_REPORT_DISABLE = "ENABLE_REPORTING"; + parameter TX_POLINV = "NORMAL"; + parameter TX_PRE_RATIO = "0b00000000"; + parameter TX_PRE_RATIO_DEEMP0_FULL = "0b00000000"; + parameter TX_PRE_RATIO_DEEMP0_HALF = "0b00000000"; + parameter TX_PRE_RATIO_DEEMP1_FULL = "0b00000000"; + parameter TX_PRE_RATIO_DEEMP1_HALF = "0b00000000"; + parameter TX_PRIORITY = "DISABLED"; + parameter TX_PRIORITY_N_STARVE_THRESH = "0b00010000"; + parameter TX_PRIORITY_P_STARVE_THRESH = "0b00010000"; + parameter TX_PST_RATIO = "0b00010101"; + parameter TX_PST_RATIO_DEEMP0_FULL = "0b00100000"; + parameter TX_PST_RATIO_DEEMP0_HALF = "0b00100000"; + parameter TX_PST_RATIO_DEEMP1_FULL = "0b00010101"; + parameter TX_PST_RATIO_DEEMP1_HALF = "0b00010101"; + parameter TX_QUIESCE = "DISABLED"; + parameter TX_REPLAY_ECC1_HANDLE_DISABLE = "ENABLE_CORRECTION"; + parameter TX_REPLAY_ECC1_INJECT_EN = "DO_NOT_INJECT_ERR"; + parameter TX_REPLAY_ECC1_REPORT_DISABLE = "ENABLE_REPORTING"; + parameter TX_REPLAY_ECC2_HANDLE_DISABLE = "ENABLE_HANDLING"; + parameter TX_REPLAY_ECC2_INJECT_EN = "DO_NOT_INJECT_ERR"; + parameter TX_REPLAY_ECC2_REPORT_DISABLE = "ENABLE_REPORTING"; + parameter TX_REQ_EQ = "DISABLED"; + parameter TX_SELECT_RX_FEEDBACK = "REFCLK"; + parameter TX_TLP_VALID = "DISABLED"; + parameter TXF_A = "0b0100"; + parameter TXF_B = "0b0100"; + parameter TXF_C = "0b0100"; + parameter TXHF_CLKDN = "ENABLED"; + parameter TXM_A = "0b10"; + parameter TXM_B = "0b01"; + parameter TXM_C = "0b00"; + parameter TXN_A = "0b00100"; + parameter TXN_B = "0b01001"; + parameter TXN_C = "0b01111"; + parameter TXPLL_INIT = "DISABLED"; + parameter TXPLLRST = "DISABLED"; + parameter TYPE1_TYPE0_N = "ENDPOINT"; + parameter U_CLK_PERIOD = "0b0001111101000000"; + parameter US_PORT_PS_ENTRY_TIME = "0b0000000000000000"; + parameter US_PORT_RX_PRESET_HINT = "0b010"; + parameter US_PORT_TX_PRESET = "0b0100"; + parameter USE_COEF_PRE_MTHD_CTRL = "PRESET_VALUE"; + parameter USE_COEF_UPDN_CTRL = "PRESET_VALUE"; + parameter USER_AUTO_N = "AUTOMATIC_ON_RECEPTION"; + parameter VEC_MASK_CAPABLE_MSICAP_A = "ENABLED"; + parameter VEC_MASK_CAPABLE_MSICAP_B = "ENABLED"; + parameter VEC_MASK_CAPABLE_MSICAP_C = "ENABLED"; + parameter VEC_MASK_CAPABLE_MSICAP_D = "ENABLED"; + parameter VENDOR_ID_ID1A = "0b0001100110101010"; + parameter VENDOR_ID_ID1B = "0b0001100110101010"; + parameter VENDOR_ID_ID1C = "0b0001100110101010"; + parameter VENDOR_ID_ID1D = "0b0001100110101010"; + parameter VENDOR0_UR = "REPORT"; + parameter VERSION_AER_CAP = "VER_0X2"; + parameter VERSION_PM_CAP = "0b011"; + parameter XLCY0 = "0b00000000"; + parameter XLCY1 = "0b00000000"; + parameter RX_ESP_RESP_WAIT = "0b01000000"; + parameter SEL_PCLK_DIV2 = "PCLK_DIV2"; + parameter COMPLIANCE = "ENABLED"; + parameter LOOPBACK = "ENABLED"; + parameter HOT_RESET = "ENABLED"; + parameter DIS_PREVENT = "ENABLED"; + parameter MPS_VIOLATION_RX = "DISABLED"; + parameter MPS_VIOLATION_TX = "DISABLED"; + parameter EN_RX_ALLOC_SEL = "HW"; + parameter EN_TX_ALLOC_SEL = "HW"; + parameter AUX_CLK_PERIOD = "0b1111010000100100"; + parameter EN_PIPE_IF_CTRL = "DISABLED"; + parameter PIPE_PWRDN = "P1"; + parameter TX_CM_DIS = "DEASSERTED"; + parameter RX_EI_DIS = "DEASSERTED"; + parameter PCLKREQ_N = "DEASSERTED"; + parameter STS_PHY_STATUS = "DEASSERTED"; + parameter STS_PIPE_RSTN = "DEASSERTED"; + parameter LEGACY_MODE = "MATCH_TS"; + parameter OVERFLOW = "DISABLED"; + parameter DIR = "RECEIVE"; + parameter SPEED = "8G"; + parameter LANE = "0"; + parameter COEF_ENABLE_8G = "DISABLED"; + parameter PRESET_ENABLE_8G = "DISABLED"; + parameter VALUE_8G_PRE = "0b000000"; + parameter VALUE_8G_POST = "0b000000"; + parameter REQ_EQ_MAX_COUNT = "0b10"; + parameter MESO_LPBK = "DISABLED"; + parameter TX_REPLAY_ECC2_INJECT_M_1_N = "INJECT_1_ERR"; + parameter TX_REPLAY_ECC1_INJECT_M_1_N = "INJECT_1_ERR"; + parameter REDO = "DISABLED"; + parameter RX_PAR_REPORT_DISABLE = "ENABLE_REPORTING"; + parameter RX_PAR_INJECT_EN = "DO_NOT_INJECT_ERR"; + parameter RX_ECC2_REPORT_DISABLE = "ENABLE_REPORTING"; + parameter RX_ECC2_HANDLE_DISABLE = "ENABLE_HANDLING"; + parameter RX_ECC2_INJECT_M_1_N = "INJECT_1_ERR"; + parameter RX_ECC2_INJECT_TYPE = "POSTED_DATA_RAM"; + parameter RX_ECC2_INJECT_EN = "DO_NOT_INJECT_ERR"; + parameter RX_ECC1_REPORT_DISABLE = "ENABLE_REPORTING"; + parameter RX_ECC1_HANDLE_DISABLE = "ENABLE_HANDLING"; + parameter RX_ECC1_INJECT_M_1_N = "INJECT_1_ERR"; + parameter RX_ECC1_INJECT_TYPE = "POSTED_DATA_RAM"; + parameter RX_ECC1_INJECT_EN = "DO_NOT_INJECT_ERR"; + parameter RX_ERR_PAR = "OTHERWISE"; + parameter RX_ERR_ECC2 = "OTHERWISE"; + parameter RX_ERR_ECC1 = "OTHERWISE"; + parameter TX_PAR_REPORT_DISABLE = "ENABLE_REPORTING"; + parameter TX_PAR_INJECT_EN = "DO_NOT_INJECT_ERR"; + parameter TX_ECC2_REPORT_DISABLE = "ENABLE_REPORTING"; + parameter TX_ECC2_HANDLE_DISABLE = "ENABLE_HANDLING"; + parameter TX_ECC2_INJECT_M_1_N = "INJECT_1_ERR"; + parameter TX_ECC2_INJECT_TYPE = "POSTED_DATA_RAM"; + parameter TX_ECC2_INJECT_EN = "DO_NOT_INJECT_ERR"; + parameter TX_ECC1_REPORT_DISABLE = "ENABLE_REPORTING"; + parameter TX_ECC1_HANDLE_DISABLE = "ENABLE_HANDLING"; + parameter TX_ECC1_INJECT_M_1_N = "INJECT_1_ERR"; + parameter TX_ECC1_INJECT_TYPE = "POSTED_DATA_RAM"; + parameter TX_ECC1_INJECT_EN = "DO_NOT_INJECT_ERR"; + parameter TX_ERR_PAR = "OTHERWISE"; + parameter TX_ERR_ECC2 = "OTHERWISE"; + parameter TX_ERR_ECC1 = "OTHERWISE"; + parameter MAX_PAYLOAD_SIZE_SUPPORTED = "256_BYTES"; + parameter ARXCAL_OUT = "DISABLED"; + parameter F_ARXDPDIR = "IGNORED"; + parameter IDLE_INFER_REC_RCVR_CFG = "OTHERWISE"; + parameter IDLE_INFER_LPBK_SLAVE = "OTHERWISE"; + parameter IDLE_INFER_REC_SPEED2_SUCCESS = "OTHERWISE"; + parameter IDLE_INFER_REC_SPEED2_UNSUCCESS = "OTHERWISE"; + parameter IDLE_INFER_L0_TO_REC_RCVR_LOCK = "OTHERWISE"; + parameter SPEED_CHANGE_FAIL = "OTHERWISE"; + parameter DIRECT_TO_DETECT_FAST = "OTHERWISE"; + parameter DIRECT_TO_RCVRY_CH_BOND = "OTHERWISE"; + parameter DIRECT_TO_LPBK_ENTRY = "OTHERWISE"; + parameter DIRECT_SPEED_CHANGE = "OTHERWISE"; + parameter L0_TO_REC_RCVR_LOCK_RX_TS12 = "OTHERWISE"; + parameter L0_TO_REC_RCVR_LOCK_RX_8G_EIE = "OTHERWISE"; + parameter L0_TO_REC_RCVR_LOCK_RX_INFER = "OTHERWISE"; + parameter DIRECT_TO_RCVRY_PHY = "OTHERWISE"; + parameter DIRECT_TO_RCVRY_FRAME = "OTHERWISE"; + parameter DIRECT_TO_RCVRY_REPLAY = "OTHERWISE"; + parameter DIRECT_TO_HOT_RESET = "OTHERWISE"; + parameter DIRECT_TO_DISABLE = "OTHERWISE"; + parameter RX_L0S_DIRECT_TO_RCVRY = "OTHERWISE"; + parameter AUTONOMOUS_WIDTH_CHANGE = "OTHERWISE"; + parameter DIRECTED_RETRAIN_LINK = "OTHERWISE"; + parameter ERR_TX_PIPE_UNDERFLOW = "OTHERWISE"; + parameter TS2_DETECT3 = "OTHERWISE"; + parameter TS2_DETECT2 = "OTHERWISE"; + parameter TS2_DETECT1 = "OTHERWISE"; + parameter TS2_DETECT0 = "OTHERWISE"; + parameter TS1_DETECT3 = "OTHERWISE"; + parameter TS1_DETECT2 = "OTHERWISE"; + parameter TS1_DETECT1 = "OTHERWISE"; + parameter TS1_DETECT0 = "OTHERWISE"; + parameter TS2I_DETECT3 = "OTHERWISE"; + parameter TS2I_DETECT2 = "OTHERWISE"; + parameter TS2I_DETECT1 = "OTHERWISE"; + parameter TS2I_DETECT0 = "OTHERWISE"; + parameter TS1I_DETECT3 = "OTHERWISE"; + parameter TS1I_DETECT2 = "OTHERWISE"; + parameter TS1I_DETECT1 = "OTHERWISE"; + parameter TS1I_DETECT0 = "OTHERWISE"; + parameter FTS_DETECT3 = "OTHERWISE"; + parameter FTS_DETECT2 = "OTHERWISE"; + parameter FTS_DETECT1 = "OTHERWISE"; + parameter FTS_DETECT0 = "OTHERWISE"; + parameter SKP_DETECT3 = "OTHERWISE"; + parameter SKP_DETECT2 = "OTHERWISE"; + parameter SKP_DETECT1 = "OTHERWISE"; + parameter SKP_DETECT0 = "OTHERWISE"; + parameter EIE_DETECT3 = "OTHERWISE"; + parameter EIE_DETECT2 = "OTHERWISE"; + parameter EIE_DETECT1 = "OTHERWISE"; + parameter EIE_DETECT0 = "OTHERWISE"; + parameter EIOS_DETECT3 = "OTHERWISE"; + parameter EIOS_DETECT2 = "OTHERWISE"; + parameter EIOS_DETECT1 = "OTHERWISE"; + parameter EIOS_DETECT0 = "OTHERWISE"; + parameter DATA_DETECT3 = "OTHERWISE"; + parameter DATA_DETECT2 = "OTHERWISE"; + parameter DATA_DETECT1 = "OTHERWISE"; + parameter DATA_DETECT0 = "OTHERWISE"; + parameter SDS_DETECT3 = "OTHERWISE"; + parameter SDS_DETECT2 = "OTHERWISE"; + parameter SDS_DETECT1 = "OTHERWISE"; + parameter SDS_DETECT0 = "OTHERWISE"; + parameter INFO_BAD_TLP_NULL_ERR = "OTHERWISE"; + parameter INFO_BAD_TLP_PHY_ERR = "OTHERWISE"; + parameter INFO_BAD_TLP_MALF_ERR = "OTHERWISE"; + parameter INFO_BAD_TLP_ECRC_ERR = "OTHERWISE"; + parameter INFO_SCHEDULE_DUPL_ACK = "OTHERWISE"; + parameter INFO_BAD_TLP_SEQ_ERR = "OTHERWISE"; + parameter INFO_BAD_TLP_CRC_ERR = "OTHERWISE"; + parameter INFO_NAK_RECEIVED = "OTHERWISE"; + parameter INFO_DESKEW_OVERFLOW_ERROR = "OTHERWISE"; + parameter INFO_TX_DATA_UNDERFLOW = "OTHERWISE"; + parameter INFO_REPLAY_STARTED = "OTHERWISE"; + parameter ERR_AER_TX_PAR2 = "OTHERWISE"; + parameter ERR_AER_TX_REPLAY_ECC2 = "OTHERWISE"; + parameter ERR_AER_TX_REPLAY_ECC1 = "OTHERWISE"; + parameter ERR_AER_SURPRISE_DOWN = "OTHERWISE"; + parameter ERR_AER_DL_PROTOCOL_ERROR = "OTHERWISE"; + parameter ERR_AER_REPLAY_TIMER_TIMEOUT = "OTHERWISE"; + parameter ERR_AER_REPLAY_NUM_ROLLOVER = "OTHERWISE"; + parameter ERR_AER_BAD_DLLP = "OTHERWISE"; + parameter ERR_AER_BAD_TLP = "OTHERWISE"; + parameter ERR_AER_RECEIVER_ERROR = "OTHERWISE"; + parameter P_RX_LIM_H = "DISABLED"; + parameter P_RX_LIM_D = "DISABLED"; + parameter N_RX_LIM_H = "DISABLED"; + parameter N_RX_LIM_D = "DISABLED"; + parameter C_RX_LIM_H = "DISABLED"; + parameter C_RX_LIM_D = "DISABLED"; + parameter P_TX_LIM_H = "DISABLED"; + parameter P_TX_LIM_D = "DISABLED"; + parameter N_TX_LIM_H = "DISABLED"; + parameter N_TX_LIM_D = "DISABLED"; + parameter C_TX_LIM_H = "DISABLED"; + parameter C_TX_LIM_D = "DISABLED"; + parameter MAX_RSA_WAIT = "0b00101000"; + parameter F_ARXDPNULL = "0b00000"; + input ACTACMD; + input ACTDR11; + input ACTEN; + input ACTHIGHZ; + input ACTMD; + output ACJNOUT; + output ACJPOUT; + input AUXCK; + input CKUSRI; + output CKUSRO; + input ECKIN; + input ECKIND2; + output ECKINDO; + input ERSTN; + input ERSTND2; + input ERXCKD2; + output ERXCKDO; + input ERXRSND2; + input ETXCKD2; + output ETXCKDO; + input ETXRSND2; + output FLR3; + output FLR2; + output FLR1; + output FLR0; + input FLRACK3; + input FLRACK2; + input FLRACK1; + input FLRACK0; + input MINTLEG3; + input MINTLEG2; + input MINTLEG1; + input MINTLEG0; + output MINTO; + input PERSTN; + output PMCTRL4; + output PMCTRL3; + output PMCTRL2; + output PMCTRL1; + output PMCTRL0; + output PMCTRLEN; + input PMDPAST4; + input PMDPAST3; + input PMDPAST2; + input PMDPAST1; + input PMDPAST0; + input PRMSGSD; + input PRNOSNP12; + input PRNOSNP11; + input PRNOSNP10; + input PRNOSNP9; + input PRNOSNP8; + input PRNOSNP7; + input PRNOSNP6; + input PRNOSNP5; + input PRNOSNP4; + input PRNOSNP3; + input PRNOSNP2; + input PRNOSNP1; + input PRNOSNP0; + input PRNSNPRE; + input PRSNOOP12; + input PRSNOOP11; + input PRSNOOP10; + input PRSNOOP9; + input PRSNOOP8; + input PRSNOOP7; + input PRSNOOP6; + input PRSNOOP5; + input PRSNOOP4; + input PRSNOOP3; + input PRSNOOP2; + input PRSNOOP1; + input PRSNOOP0; + input PRSNPRE; + input PPBDREG31; + input PPBDREG30; + input PPBDREG29; + input PPBDREG28; + input PPBDREG27; + input PPBDREG26; + input PPBDREG25; + input PPBDREG24; + input PPBDREG23; + input PPBDREG22; + input PPBDREG21; + input PPBDREG20; + input PPBDREG19; + input PPBDREG18; + input PPBDREG17; + input PPBDREG16; + input PPBDREG15; + input PPBDREG14; + input PPBDREG13; + input PPBDREG12; + input PPBDREG11; + input PPBDREG10; + input PPBDREG9; + input PPBDREG8; + input PPBDREG7; + input PPBDREG6; + input PPBDREG5; + input PPBDREG4; + input PPBDREG3; + input PPBDREG2; + input PPBDREG1; + input PPBDREG0; + output PPBDSEL7; + output PPBDSEL6; + output PPBDSEL5; + output PPBDSEL4; + output PPBDSEL3; + output PPBDSEL2; + output PPBDSEL1; + output PPBDSEL0; + input REXTCK; + input REXTRST; + input RSTUSRN; + output UDLLKUP; + input ULTSDIS; + output UPLLKUP; + output UTLLKUP; + input UCFGADDR11; + input UCFGADDR10; + input UCFGADDR9; + input UCFGADDR8; + input UCFGADDR7; + input UCFGADDR6; + input UCFGADDR5; + input UCFGADDR4; + input UCFGADDR3; + input UCFGADDR2; + input UCFGF2; + input UCFGF1; + input UCFGF0; + output UCFGRDD31; + output UCFGRDD30; + output UCFGRDD29; + output UCFGRDD28; + output UCFGRDD27; + output UCFGRDD26; + output UCFGRDD25; + output UCFGRDD24; + output UCFGRDD23; + output UCFGRDD22; + output UCFGRDD21; + output UCFGRDD20; + output UCFGRDD19; + output UCFGRDD18; + output UCFGRDD17; + output UCFGRDD16; + output UCFGRDD15; + output UCFGRDD14; + output UCFGRDD13; + output UCFGRDD12; + output UCFGRDD11; + output UCFGRDD10; + output UCFGRDD9; + output UCFGRDD8; + output UCFGRDD7; + output UCFGRDD6; + output UCFGRDD5; + output UCFGRDD4; + output UCFGRDD3; + output UCFGRDD2; + output UCFGRDD1; + output UCFGRDD0; + output UCFGRDE; + output UCFGRDY; + input UCFGSERD; + input UCFGVD; + input UCFGWRBE3; + input UCFGWRBE2; + input UCFGWRBE1; + input UCFGWRBE0; + input UCFGWRD31; + input UCFGWRD30; + input UCFGWRD29; + input UCFGWRD28; + input UCFGWRD27; + input UCFGWRD26; + input UCFGWRD25; + input UCFGWRD24; + input UCFGWRD23; + input UCFGWRD22; + input UCFGWRD21; + input UCFGWRD20; + input UCFGWRD19; + input UCFGWRD18; + input UCFGWRD17; + input UCFGWRD16; + input UCFGWRD15; + input UCFGWRD14; + input UCFGWRD13; + input UCFGWRD12; + input UCFGWRD11; + input UCFGWRD10; + input UCFGWRD9; + input UCFGWRD8; + input UCFGWRD7; + input UCFGWRD6; + input UCFGWRD5; + input UCFGWRD4; + input UCFGWRD3; + input UCFGWRD2; + input UCFGWRD1; + input UCFGWRD0; + input UCFGWRDN; + input USERAUPD; + input USERTRS3; + input USERTRS2; + input USERTRS1; + input USERTRS0; + input LMMICLK; + input LMMIOFFSET16; + input LMMIOFFSET15; + input LMMIOFFSET14; + input LMMIOFFSET13; + input LMMIOFFSET12; + input LMMIOFFSET11; + input LMMIOFFSET10; + input LMMIOFFSET9; + input LMMIOFFSET8; + input LMMIOFFSET7; + input LMMIOFFSET6; + input LMMIOFFSET5; + input LMMIOFFSET4; + input LMMIOFFSET3; + input LMMIOFFSET2; + output LMMIRDATA31; + output LMMIRDATA30; + output LMMIRDATA29; + output LMMIRDATA28; + output LMMIRDATA27; + output LMMIRDATA26; + output LMMIRDATA25; + output LMMIRDATA24; + output LMMIRDATA23; + output LMMIRDATA22; + output LMMIRDATA21; + output LMMIRDATA20; + output LMMIRDATA19; + output LMMIRDATA18; + output LMMIRDATA17; + output LMMIRDATA16; + output LMMIRDATA15; + output LMMIRDATA14; + output LMMIRDATA13; + output LMMIRDATA12; + output LMMIRDATA11; + output LMMIRDATA10; + output LMMIRDATA9; + output LMMIRDATA8; + output LMMIRDATA7; + output LMMIRDATA6; + output LMMIRDATA5; + output LMMIRDATA4; + output LMMIRDATA3; + output LMMIRDATA2; + output LMMIRDATA1; + output LMMIRDATA0; + output LMMIRDATAVALID; + output LMMIREADY; + input LMMIREQUEST; + input LMMIRESETN; + input LMMIWDATA31; + input LMMIWDATA30; + input LMMIWDATA29; + input LMMIWDATA28; + input LMMIWDATA27; + input LMMIWDATA26; + input LMMIWDATA25; + input LMMIWDATA24; + input LMMIWDATA23; + input LMMIWDATA22; + input LMMIWDATA21; + input LMMIWDATA20; + input LMMIWDATA19; + input LMMIWDATA18; + input LMMIWDATA17; + input LMMIWDATA16; + input LMMIWDATA15; + input LMMIWDATA14; + input LMMIWDATA13; + input LMMIWDATA12; + input LMMIWDATA11; + input LMMIWDATA10; + input LMMIWDATA9; + input LMMIWDATA8; + input LMMIWDATA7; + input LMMIWDATA6; + input LMMIWDATA5; + input LMMIWDATA4; + input LMMIWDATA3; + input LMMIWDATA2; + input LMMIWDATA1; + input LMMIWDATA0; + input LMMIWRRDN; + output VRXCMDD12; + output VRXCMDD11; + output VRXCMDD10; + output VRXCMDD9; + output VRXCMDD8; + output VRXCMDD7; + output VRXCMDD6; + output VRXCMDD5; + output VRXCMDD4; + output VRXCMDD3; + output VRXCMDD2; + output VRXCMDD1; + output VRXCMDD0; + input VRXCINIT; + input VRXCNH11; + input VRXCNH10; + input VRXCNH9; + input VRXCNH8; + input VRXCNH7; + input VRXCNH6; + input VRXCNH5; + input VRXCNH4; + input VRXCNH3; + input VRXCNH2; + input VRXCNH1; + input VRXCNH0; + input VRXCNINF; + input VRXCRRE; + output VRXD31; + output VRXD30; + output VRXD29; + output VRXD28; + output VRXD27; + output VRXD26; + output VRXD25; + output VRXD24; + output VRXD23; + output VRXD22; + output VRXD21; + output VRXD20; + output VRXD19; + output VRXD18; + output VRXD17; + output VRXD16; + output VRXD15; + output VRXD14; + output VRXD13; + output VRXD12; + output VRXD11; + output VRXD10; + output VRXD9; + output VRXD8; + output VRXD7; + output VRXD6; + output VRXD5; + output VRXD4; + output VRXD3; + output VRXD2; + output VRXD1; + output VRXD0; + output VRXDP3; + output VRXDP2; + output VRXDP1; + output VRXDP0; + output VRXEOP; + output VRXERR; + output VRXF1; + output VRXF0; + input VRXRDY; + output VRXSEL1; + output VRXSEL0; + output VRXSOP; + output VRXVD; + output VXCDINIT; + output VXCDNH11; + output VXCDNH10; + output VXCDNH9; + output VXCDNH8; + output VXCDNH7; + output VXCDNH6; + output VXCDNH5; + output VXCDNH4; + output VXCDNH3; + output VXCDNH2; + output VXCDNH1; + output VXCDNH0; + output VTXCRRE; + input VXD31; + input VXD30; + input VXD29; + input VXD28; + input VXD27; + input VXD26; + input VXD25; + input VXD24; + input VXD23; + input VXD22; + input VXD21; + input VXD20; + input VXD19; + input VXD18; + input VXD17; + input VXD16; + input VXD15; + input VXD14; + input VXD13; + input VXD12; + input VXD11; + input VXD10; + input VXD9; + input VXD8; + input VXD7; + input VXD6; + input VXD5; + input VXD4; + input VXD3; + input VXD2; + input VXD1; + input VXD0; + input VXDP3; + input VXDP2; + input VXDP1; + input VXDP0; + input VXEOP; + input VXEOPN; + output VXRDY; + input VXSOP; + input VXVD; + output TESTOUT7; + output TESTOUT6; + output TESTOUT5; + output TESTOUT4; + output TESTOUT3; + output TESTOUT2; + output TESTOUT1; + output TESTOUT0; + input REFCLKNA; + (* iopad_external_pin *) + input S0REFCKN; + (* iopad_external_pin *) + input S0REFCKP; + (* iopad_external_pin *) + input S0REFRET; + (* iopad_external_pin *) + input S0REXT; + (* iopad_external_pin *) + input S0RXN; + (* iopad_external_pin *) + input S0RXP; + (* iopad_external_pin *) + output S0TXN; + (* iopad_external_pin *) + output S0TXP; + input CLKREQI; + output CLKREQO; + output CLKREQOE; + input SCANCLK; + input SCANRST; + input OPCGLDCK; + input ALTCLKIN; +endmodule + +module PLL_CORE (...); + parameter BW_CTL_BIAS = "0b0101"; + parameter CLKOP_TRIM = "0b0000"; + parameter CLKOS_TRIM = "0b0000"; + parameter CLKOS2_TRIM = "0b0000"; + parameter CLKOS3_TRIM = "0b0000"; + parameter CLKOS4_TRIM = "0b0000"; + parameter CLKOS5_TRIM = "0b0000"; + parameter CRIPPLE = "5P"; + parameter CSET = "40P"; + parameter DELAY_CTRL = "200PS"; + parameter DELA = "0"; + parameter DELB = "0"; + parameter DELC = "0"; + parameter DELD = "0"; + parameter DELE = "0"; + parameter DELF = "0"; + parameter DIRECTION = "DISABLED"; + parameter DIVA = "0"; + parameter DIVB = "0"; + parameter DIVC = "0"; + parameter DIVD = "0"; + parameter DIVE = "0"; + parameter DIVF = "0"; + parameter DYN_SEL = "0b000"; + parameter DYN_SOURCE = "STATIC"; + parameter ENCLK_CLKOP = "DISABLED"; + parameter ENCLK_CLKOS = "DISABLED"; + parameter ENCLK_CLKOS2 = "DISABLED"; + parameter ENCLK_CLKOS3 = "DISABLED"; + parameter ENCLK_CLKOS4 = "DISABLED"; + parameter ENCLK_CLKOS5 = "DISABLED"; + parameter ENABLE_SYNC = "DISABLED"; + parameter FAST_LOCK_EN = "ENABLED"; + parameter V2I_1V_EN = "DISABLED"; + parameter FBK_CUR_BLE = "0b00000000"; + parameter FBK_EDGE_SEL = "POSITIVE"; + parameter FBK_IF_TIMING_CTL = "0b00"; + parameter FBK_INTEGER_MODE = "DISABLED"; + parameter FBK_MASK = "0b00001000"; + parameter FBK_MMD_DIG = "8"; + parameter FBK_MMD_PULS_CTL = "0b0000"; + parameter FBK_MODE = "0b00"; + parameter FBK_PI_BYPASS = "NOT_BYPASSED"; + parameter FBK_PI_RC = "0b1100"; + parameter FBK_PR_CC = "0b0000"; + parameter FBK_PR_IC = "0b1000"; + parameter FLOAT_CP = "DISABLED"; + parameter FLOCK_CTRL = "2X"; + parameter FLOCK_EN = "ENABLED"; + parameter FLOCK_SRC_SEL = "REFCLK"; + parameter FORCE_FILTER = "DISABLED"; + parameter I_CTRL = "10UA"; + parameter IPI_CMP = "0b1000"; + parameter IPI_CMPN = "0b0011"; + parameter IPI_COMP_EN = "DISABLED"; + parameter IPP_CTRL = "0b1000"; + parameter IPP_SEL = "0b1111"; + parameter KP_VCO = "0b11001"; + parameter LDT_INT_LOCK_STICKY = "DISABLED"; + parameter LDT_LOCK = "1536CYC"; + parameter LDT_LOCK_SEL = "U_FREQ"; + parameter LEGACY_ATT = "DISABLED"; + parameter LOAD_REG = "DISABLED"; + parameter OPENLOOP_EN = "DISABLED"; + parameter PHIA = "0"; + parameter PHIB = "0"; + parameter PHIC = "0"; + parameter PHID = "0"; + parameter PHIE = "0"; + parameter PHIF = "0"; + parameter PLLPDN_EN = "DISABLED"; + parameter PLLPD_N = "UNUSED"; + parameter PLLRESET_ENA = "DISABLED"; + parameter REF_INTEGER_MODE = "DISABLED"; + parameter REF_MASK = "0b00000000"; + parameter REF_MMD_DIG = "8"; + parameter REF_MMD_IN = "0b00001000"; + parameter REF_MMD_PULS_CTL = "0b0000"; + parameter REF_TIMING_CTL = "0b00"; + parameter REFIN_RESET = "SET"; + parameter RESET_LF = "DISABLED"; + parameter ROTATE = "DISABLED"; + parameter SEL_OUTA = "DISABLED"; + parameter SEL_OUTB = "DISABLED"; + parameter SEL_OUTC = "DISABLED"; + parameter SEL_OUTD = "DISABLED"; + parameter SEL_OUTE = "DISABLED"; + parameter SEL_OUTF = "DISABLED"; + parameter SLEEP = "DISABLED"; + parameter SSC_DITHER = "DISABLED"; + parameter SSC_EN_CENTER_IN = "DOWN_TRIANGLE"; + parameter SSC_EN_SDM = "DISABLED"; + parameter SSC_EN_SSC = "DISABLED"; + parameter SSC_F_CODE = "0b000000000000000"; + parameter SSC_N_CODE = "0b000010100"; + parameter SSC_ORDER = "SDM_ORDER2"; + parameter SSC_PI_BYPASS = "NOT_BYPASSED"; + parameter SSC_REG_WEIGHTING_SEL = "0b000"; + parameter SSC_SQUARE_MODE = "DISABLED"; + parameter SSC_STEP_IN = "0b0000000"; + parameter SSC_TBASE = "0b000000000000"; + parameter STDBY_ATT = "DISABLED"; + parameter TRIMOP_BYPASS_N = "BYPASSED"; + parameter TRIMOS_BYPASS_N = "BYPASSED"; + parameter TRIMOS2_BYPASS_N = "BYPASSED"; + parameter TRIMOS3_BYPASS_N = "BYPASSED"; + parameter TRIMOS4_BYPASS_N = "BYPASSED"; + parameter TRIMOS5_BYPASS_N = "BYPASSED"; + parameter V2I_KVCO_SEL = "85"; + parameter V2I_PP_ICTRL = "0b00110"; + parameter V2I_PP_RES = "10K"; + parameter CLKMUX_FB = "CMUX_CLKOP"; + parameter SEL_FBK = "DIVA"; + parameter DIV_DEL = "0b0000001"; + parameter PHASE_SEL_DEL = "0b000"; + parameter PHASE_SEL_DEL_P1 = "0b000"; + parameter EXTERNAL_DIVIDE_FACTOR = "0"; + input CIBDIR; + input CIBDSEL2; + input CIBDSEL1; + input CIBDSEL0; + input CIBLDREG; + input CIBROT; + output CLKOP; + output CLKOS; + output CLKOS2; + output CLKOS3; + output CLKOS4; + output CLKOS5; + input ENEXT; + input ENCLKOP; + input ENCLKOS; + input ENCLKOS2; + input ENCLKOS3; + input ENCLKOS4; + input ENCLKOS5; + input FBKCK; + output INTFBK5; + output INTFBK4; + output INTFBK3; + output INTFBK2; + output INTFBK1; + output INTFBK0; + output INTLOCK; + input LEGACY; + output LEGRDYN; + input LMMICLK; + input LMMIOFFSET6; + input LMMIOFFSET5; + input LMMIOFFSET4; + input LMMIOFFSET3; + input LMMIOFFSET2; + input LMMIOFFSET1; + input LMMIOFFSET0; + output LMMIRDATA7; + output LMMIRDATA6; + output LMMIRDATA5; + output LMMIRDATA4; + output LMMIRDATA3; + output LMMIRDATA2; + output LMMIRDATA1; + output LMMIRDATA0; + output LMMIRDATAVALID; + output LMMIREADY; + input LMMIREQUEST; + input LMMIRESETN; + input LMMIWDATA7; + input LMMIWDATA6; + input LMMIWDATA5; + input LMMIWDATA4; + input LMMIWDATA3; + input LMMIWDATA2; + input LMMIWDATA1; + input LMMIWDATA0; + input LMMIWRRDN; + output LOCK; + output PFDDN; + output PFDUP; + input PLLRESET; + input REFCK; + input STDBY; + input ZRSEL3; + output REFMUXCK; + input PLLPDN; + output REGQA; + output REGQB; + output REGQB1; + output CLKOUTDL; + input ROTDEL; + input DIRDEL; + input ROTDELP1; + input GRAYTEST4; + input GRAYTEST3; + input GRAYTEST2; + input GRAYTEST1; + input GRAYTEST0; + input BINTEST1; + input BINTEST0; + input DIRDELP1; + input GRAYACT4; + input GRAYACT3; + input GRAYACT2; + input GRAYACT1; + input GRAYACT0; + input BINACT1; + input BINACT0; + input OPCGLDCK; + input SCANRST; + input SCANCLK; +endmodule + +module PREADD9_CORE (...); + parameter SIGNEDSTATIC_EN = "DISABLED"; + parameter SUBSTRACT_EN = "SUBTRACTION"; + parameter CSIGNED = "DISABLED"; + parameter BSIGNED_OPERAND_EN = "DISABLED"; + parameter BYPASS_PREADD9 = "USED"; + parameter REGBYPSBR0 = "REGISTER"; + parameter REGBYPSBR1 = "BYPASS"; + parameter REGBYPSBL = "REGISTER"; + parameter SHIFTBR = "REGISTER"; + parameter SHIFTBL = "REGISTER"; + parameter GSR = "ENABLED"; + parameter PREADDCAS_EN = "DISABLED"; + parameter SR_18BITSHIFT_EN = "DISABLED"; + parameter OPC = "INPUT_B_AS_PREADDER_OPERAND"; + parameter RESET = "SYNC"; + input B8; + input B7; + input B6; + input B5; + input B4; + input B3; + input B2; + input B1; + input B0; + input BSIGNED; + input C9; + input C8; + input C7; + input C6; + input C5; + input C4; + input C3; + input C2; + input C1; + input C0; + input BRS18; + input BRS17; + input BRS16; + input BRS15; + input BRS14; + input BRS13; + input BRS12; + input BRS11; + input BRS10; + input BRS28; + input BRS27; + input BRS26; + input BRS25; + input BRS24; + input BRS23; + input BRS22; + input BRS21; + input BRS20; + input BLS18; + input BLS17; + input BLS16; + input BLS15; + input BLS14; + input BLS13; + input BLS12; + input BLS11; + input BLS10; + input BLS28; + input BLS27; + input BLS26; + input BLS25; + input BLS24; + input BLS23; + input BLS22; + input BLS21; + input BLS20; + input BRSS1; + input BRSS2; + input BLSS1; + input BLSS2; + input PRCASIN; + input CLK; + input RSTB; + input CEB; + input RSTCL; + input CECL; + output BRSO8; + output BRSO7; + output BRSO6; + output BRSO5; + output BRSO4; + output BRSO3; + output BRSO2; + output BRSO1; + output BRSO0; + output BLSO8; + output BLSO7; + output BLSO6; + output BLSO5; + output BLSO4; + output BLSO3; + output BLSO2; + output BLSO1; + output BLSO0; + output BRSOSGND; + output BLSOSGND; + output PRCASOUT; + output BR8; + output BR7; + output BR6; + output BR5; + output BR4; + output BR3; + output BR2; + output BR1; + output BR0; + output BRSIGNED; +endmodule + +module REFMUX_CORE (...); + parameter REFSEL_ATT = "MC1"; + parameter SEL1 = "SELECT_REFCLK1"; + parameter SEL_REF2 = "REFCLK2_0"; + parameter SEL_REF1 = "REFCLK1_0"; + output REFCK; + output ZRSEL3; + input REFSEL; + input REFCLK17; + input REFCLK16; + input REFCLK15; + input REFCLK14; + input REFCLK13; + input REFCLK12; + input REFCLK11; + input REFCLK10; + input REFCLK27; + input REFCLK26; + input REFCLK25; + input REFCLK24; + input REFCLK23; + input REFCLK22; + input REFCLK21; + input REFCLK20; +endmodule + +module REG18_CORE (...); + parameter REGBYPS = "REGISTER"; + parameter GSR = "ENABLED"; + parameter RESET = "SYNC"; + input PM17; + input PM16; + input PM15; + input PM14; + input PM13; + input PM12; + input PM11; + input PM10; + input PM9; + input PM8; + input PM7; + input PM6; + input PM5; + input PM4; + input PM3; + input PM2; + input PM1; + input PM0; + output PP17; + output PP16; + output PP15; + output PP14; + output PP13; + output PP12; + output PP11; + output PP10; + output PP9; + output PP8; + output PP7; + output PP6; + output PP5; + output PP4; + output PP3; + output PP2; + output PP1; + output PP0; + input CEP; + input RSTP; + input CLK; +endmodule + +module SEIO18_CORE (...); + parameter MIPI_ID = "0"; + parameter PULLMODE = "DOWN"; + parameter MIPI = "DISABLED"; + parameter ENADC_IN = "DISABLED"; + input I; + input DOLP; + (* iopad_external_pin *) + inout B; + output O; + output INLP; + input T; + output INADC; +endmodule + +module SEIO33_CORE (...); + parameter PULLMODE = "DOWN"; + (* iopad_external_pin *) + inout B; + output O; + input I; + input T; + input I3CRESEN; + input I3CWKPU; +endmodule + +module SGMIICDR_CORE (...); + parameter GSR = "ENABLED"; + parameter DCOITUNE4LSB = "0_PERCENT"; + parameter DCOCTLGI = "0_PERCENT"; + parameter DCOSTEP = "100_PERCENT"; + parameter DCOCALDIV = "100_PERCENT"; + parameter DCOIOSTUNE = "0_PERCENT"; + parameter DCOFLTDAC = "80MHZ"; + parameter DCOSTARTVAL = "NOMINAL"; + parameter DCONUOFLSB = "NEG_60_PERCENT"; + parameter RPWDNB = "POWER_UP"; + parameter CDR_CNT4SEL = "BYPASSED"; + parameter DCOITUNE = "100_PERCENT"; + parameter BAND_THRESHOLD = "0b000000"; + parameter AUTO_FACQ_EN = "ENABLED"; + parameter AUTO_CALIB_EN = "ENABLED"; + parameter CDR_LOL_SET = "1000_PPM"; + parameter FC2DCO_FLOOP = "DISABLED"; + parameter FC2DCO_DLOOP = "DISABLED"; + parameter CALIB_TIME_SEL = "24_CYC"; + parameter CALIB_CK_MODE = "BY_2"; + parameter BAND_CALIB_MODE = "256_FDBK_CLK_CYC"; + parameter REG_BAND_SEL = "0b00000"; + parameter REG_BAND_OFFSET = "0b0000"; + parameter REG_IDAC_SEL = "0b00000000"; + parameter LB_CTL = "DISABLED"; + parameter REG_IDAC_EN = "DISABLED"; + parameter ATDCFG = "0_PS"; + parameter ATDDLY = "0_PS"; + parameter BDAVOID_ENB = "ENABLED"; + parameter BYPASSATD = "NOT_BYPASS"; + parameter DCOIUPDNX2 = "1X"; + parameter IDAC_EN = "DISABLED"; + parameter FB_CLK_DIV = "0b010"; + parameter EN_RECALIB = "ENABLED"; + input DCALIRST; + input DFACQRST; + input RRST; + input SPCLK; + output SRCLK; + output SRXD9; + output SRXD8; + output SRXD7; + output SRXD6; + output SRXD5; + output SRXD4; + output SRXD3; + output SRXD2; + output SRXD1; + output SRXD0; + input LMMICLK; + input LMMIREQUEST; + input LMMIWRRDN; + input LMMIOFFSET3; + input LMMIOFFSET2; + input LMMIOFFSET1; + input LMMIOFFSET0; + input LMMIWDATA7; + input LMMIWDATA6; + input LMMIWDATA5; + input LMMIWDATA4; + input LMMIWDATA3; + input LMMIWDATA2; + input LMMIWDATA1; + input LMMIWDATA0; + output LMMIRDATA7; + output LMMIRDATA6; + output LMMIRDATA5; + output LMMIRDATA4; + output LMMIRDATA3; + output LMMIRDATA2; + output LMMIRDATA1; + output LMMIRDATA0; + output LMMIRDATAVALID; + output LMMIREADY; + input LMMIRESETN; + input RSTBFBW; + input RSTBRXF; + input SGMIIIN; + input SREFCLK; + output CDRLOL; + input OPCGLOADCLK; + input SCANCLK; + input SCANRST; +endmodule + +module GSR (...); + parameter SYNCMODE = "ASYNC"; + input GSR_N; + input CLK; +endmodule + +module DCC (...); + parameter DCCEN = "0"; + input CE; + input CLKI; + output CLKO; +endmodule + +module DCS (...); + parameter DCSMODE = "GND"; + input CLK0; + input CLK1; + output DCSOUT; + input SEL; + input SELFORCE; +endmodule + +module GSR_CORE (...); + parameter GSR = "ENABLED"; + parameter GSR_SYNC = "ASYNC"; + output GSROUT; + input CLK; + input GSR_N; +endmodule + +module PCLKDIV (...); + parameter DIV_PCLKDIV = "X1"; + parameter GSR = "ENABLED"; + parameter TESTEN_PCLKDIV = "0"; + parameter TESTMODE_PCLKDIV = "0"; + input CLKIN; + output CLKOUT; + input LSRPDIV; + input PCLKDIVTESTINP2; + input PCLKDIVTESTINP1; + input PCLKDIVTESTINP0; +endmodule + +(* keep *) +module PUR (...); + parameter RST_PULSE = "1"; + input PUR; +endmodule + +module PCLKDIVSP (...); + parameter DIV_PCLKDIV = "X1"; + parameter GSR = "ENABLED"; + input CLKIN; + output CLKOUT; + input LSRPDIV; +endmodule + diff --git a/resources/netlist/resources/kernel/share/nexus/dsp_map.v b/resources/netlist/resources/kernel/share/nexus/dsp_map.v new file mode 100644 index 0000000..b125283 --- /dev/null +++ b/resources/netlist/resources/kernel/share/nexus/dsp_map.v @@ -0,0 +1,79 @@ +module \$__NX_MUL36X36 (input [35:0] A, input [35:0] B, output [71:0] Y); + + parameter A_WIDTH = 36; + parameter B_WIDTH = 36; + parameter Y_WIDTH = 72; + parameter A_SIGNED = 0; + parameter B_SIGNED = 0; + + MULT36X36 #( + .REGINPUTA("BYPASS"), + .REGINPUTB("BYPASS"), + .REGOUTPUT("BYPASS") + ) _TECHMAP_REPLACE_ ( + .A(A), .B(B), + .SIGNEDA(A_SIGNED ? 1'b1 : 1'b0), + .SIGNEDB(B_SIGNED ? 1'b1 : 1'b0), + .Z(Y) + ); +endmodule + +module \$__NX_MUL36X18 (input [35:0] A, input [17:0] B, output [53:0] Y); + + parameter A_WIDTH = 36; + parameter B_WIDTH = 18; + parameter Y_WIDTH = 54; + parameter A_SIGNED = 0; + parameter B_SIGNED = 0; + + MULT18X36 #( + .REGINPUTA("BYPASS"), + .REGINPUTB("BYPASS"), + .REGOUTPUT("BYPASS") + ) _TECHMAP_REPLACE_ ( + .A(B), .B(A), + .SIGNEDA(B_SIGNED ? 1'b1 : 1'b0), + .SIGNEDB(A_SIGNED ? 1'b1 : 1'b0), + .Z(Y) + ); +endmodule + +module \$__NX_MUL18X18 (input [17:0] A, input [17:0] B, output [35:0] Y); + + parameter A_WIDTH = 18; + parameter B_WIDTH = 18; + parameter Y_WIDTH = 36; + parameter A_SIGNED = 0; + parameter B_SIGNED = 0; + + MULT18X18 #( + .REGINPUTA("BYPASS"), + .REGINPUTB("BYPASS"), + .REGOUTPUT("BYPASS") + ) _TECHMAP_REPLACE_ ( + .A(A), .B(B), + .SIGNEDA(A_SIGNED ? 1'b1 : 1'b0), + .SIGNEDB(B_SIGNED ? 1'b1 : 1'b0), + .Z(Y) + ); +endmodule + +module \$__NX_MUL9X9 (input [8:0] A, input [8:0] B, output [17:0] Y); + + parameter A_WIDTH = 9; + parameter B_WIDTH = 9; + parameter Y_WIDTH = 18; + parameter A_SIGNED = 0; + parameter B_SIGNED = 0; + + MULT9X9 #( + .REGINPUTA("BYPASS"), + .REGINPUTB("BYPASS"), + .REGOUTPUT("BYPASS") + ) _TECHMAP_REPLACE_ ( + .A(A), .B(B), + .SIGNEDA(A_SIGNED ? 1'b1 : 1'b0), + .SIGNEDB(B_SIGNED ? 1'b1 : 1'b0), + .Z(Y) + ); +endmodule diff --git a/resources/netlist/resources/kernel/share/nexus/latches_map.v b/resources/netlist/resources/kernel/share/nexus/latches_map.v new file mode 100644 index 0000000..c28f88c --- /dev/null +++ b/resources/netlist/resources/kernel/share/nexus/latches_map.v @@ -0,0 +1,11 @@ +module \$_DLATCH_N_ (E, D, Q); + wire [1023:0] _TECHMAP_DO_ = "simplemap; opt"; + input E, D; + output Q = !E ? D : Q; +endmodule + +module \$_DLATCH_P_ (E, D, Q); + wire [1023:0] _TECHMAP_DO_ = "simplemap; opt"; + input E, D; + output Q = E ? D : Q; +endmodule diff --git a/resources/netlist/resources/kernel/share/nexus/lrams.txt b/resources/netlist/resources/kernel/share/nexus/lrams.txt new file mode 100644 index 0000000..ad28457 --- /dev/null +++ b/resources/netlist/resources/kernel/share/nexus/lrams.txt @@ -0,0 +1,21 @@ +ram huge $__NX_DPSC512K_ { + abits 14; + width 32; + byte 8; + cost 2048; + init no_undef; + port srsw "A" "B" { + clock posedge "C"; + clken; + wrbe_separate; + rdwr no_change; + option "RESETMODE" "SYNC" { + rdsrst zero gated_clken; + } + option "RESETMODE" "ASYNC" { + rdarst zero; + } + rdinit zero; + wrtrans all old; + } +} diff --git a/resources/netlist/resources/kernel/share/nexus/lrams_map.v b/resources/netlist/resources/kernel/share/nexus/lrams_map.v new file mode 100644 index 0000000..5db5ae8 --- /dev/null +++ b/resources/netlist/resources/kernel/share/nexus/lrams_map.v @@ -0,0 +1,194 @@ +module $__NX_DPSC512K_ (...); + +parameter INIT = 0; +parameter OPTION_RESETMODE = "SYNC"; + +input CLK_C; + +input PORT_A_CLK; +input PORT_A_CLK_EN; +input PORT_A_WR_EN; +input PORT_A_RD_SRST; +input PORT_A_RD_ARST; +input [13:0] PORT_A_ADDR; +input [3:0] PORT_A_WR_BE; +input [31:0] PORT_A_WR_DATA; +output [31:0] PORT_A_RD_DATA; + +input PORT_B_CLK; +input PORT_B_CLK_EN; +input PORT_B_WR_EN; +input PORT_B_RD_SRST; +input PORT_B_RD_ARST; +input [13:0] PORT_B_ADDR; +input [3:0] PORT_B_WR_BE; +input [31:0] PORT_B_WR_DATA; +output [31:0] PORT_B_RD_DATA; + +function [5119:0] init_slice; + input integer idx; + integer i, j; + init_slice = 0; + for (i = 0; i < 128; i = i + 1) begin + init_slice[i*40+:32] = INIT[(idx * 128 + i) * 32+:32]; + end +endfunction + +DPSC512K #( + .INITVAL_00($sformatf("0x%01280x", init_slice('h00))), + .INITVAL_01($sformatf("0x%01280x", init_slice('h01))), + .INITVAL_02($sformatf("0x%01280x", init_slice('h02))), + .INITVAL_03($sformatf("0x%01280x", init_slice('h03))), + .INITVAL_04($sformatf("0x%01280x", init_slice('h04))), + .INITVAL_05($sformatf("0x%01280x", init_slice('h05))), + .INITVAL_06($sformatf("0x%01280x", init_slice('h06))), + .INITVAL_07($sformatf("0x%01280x", init_slice('h07))), + .INITVAL_08($sformatf("0x%01280x", init_slice('h08))), + .INITVAL_09($sformatf("0x%01280x", init_slice('h09))), + .INITVAL_0A($sformatf("0x%01280x", init_slice('h0a))), + .INITVAL_0B($sformatf("0x%01280x", init_slice('h0b))), + .INITVAL_0C($sformatf("0x%01280x", init_slice('h0c))), + .INITVAL_0D($sformatf("0x%01280x", init_slice('h0d))), + .INITVAL_0E($sformatf("0x%01280x", init_slice('h0e))), + .INITVAL_0F($sformatf("0x%01280x", init_slice('h0f))), + .INITVAL_10($sformatf("0x%01280x", init_slice('h10))), + .INITVAL_11($sformatf("0x%01280x", init_slice('h11))), + .INITVAL_12($sformatf("0x%01280x", init_slice('h12))), + .INITVAL_13($sformatf("0x%01280x", init_slice('h13))), + .INITVAL_14($sformatf("0x%01280x", init_slice('h14))), + .INITVAL_15($sformatf("0x%01280x", init_slice('h15))), + .INITVAL_16($sformatf("0x%01280x", init_slice('h16))), + .INITVAL_17($sformatf("0x%01280x", init_slice('h17))), + .INITVAL_18($sformatf("0x%01280x", init_slice('h18))), + .INITVAL_19($sformatf("0x%01280x", init_slice('h19))), + .INITVAL_1A($sformatf("0x%01280x", init_slice('h1a))), + .INITVAL_1B($sformatf("0x%01280x", init_slice('h1b))), + .INITVAL_1C($sformatf("0x%01280x", init_slice('h1c))), + .INITVAL_1D($sformatf("0x%01280x", init_slice('h1d))), + .INITVAL_1E($sformatf("0x%01280x", init_slice('h1e))), + .INITVAL_1F($sformatf("0x%01280x", init_slice('h1f))), + .INITVAL_20($sformatf("0x%01280x", init_slice('h20))), + .INITVAL_21($sformatf("0x%01280x", init_slice('h21))), + .INITVAL_22($sformatf("0x%01280x", init_slice('h22))), + .INITVAL_23($sformatf("0x%01280x", init_slice('h23))), + .INITVAL_24($sformatf("0x%01280x", init_slice('h24))), + .INITVAL_25($sformatf("0x%01280x", init_slice('h25))), + .INITVAL_26($sformatf("0x%01280x", init_slice('h26))), + .INITVAL_27($sformatf("0x%01280x", init_slice('h27))), + .INITVAL_28($sformatf("0x%01280x", init_slice('h28))), + .INITVAL_29($sformatf("0x%01280x", init_slice('h29))), + .INITVAL_2A($sformatf("0x%01280x", init_slice('h2a))), + .INITVAL_2B($sformatf("0x%01280x", init_slice('h2b))), + .INITVAL_2C($sformatf("0x%01280x", init_slice('h2c))), + .INITVAL_2D($sformatf("0x%01280x", init_slice('h2d))), + .INITVAL_2E($sformatf("0x%01280x", init_slice('h2e))), + .INITVAL_2F($sformatf("0x%01280x", init_slice('h2f))), + .INITVAL_30($sformatf("0x%01280x", init_slice('h30))), + .INITVAL_31($sformatf("0x%01280x", init_slice('h31))), + .INITVAL_32($sformatf("0x%01280x", init_slice('h32))), + .INITVAL_33($sformatf("0x%01280x", init_slice('h33))), + .INITVAL_34($sformatf("0x%01280x", init_slice('h34))), + .INITVAL_35($sformatf("0x%01280x", init_slice('h35))), + .INITVAL_36($sformatf("0x%01280x", init_slice('h36))), + .INITVAL_37($sformatf("0x%01280x", init_slice('h37))), + .INITVAL_38($sformatf("0x%01280x", init_slice('h38))), + .INITVAL_39($sformatf("0x%01280x", init_slice('h39))), + .INITVAL_3A($sformatf("0x%01280x", init_slice('h3a))), + .INITVAL_3B($sformatf("0x%01280x", init_slice('h3b))), + .INITVAL_3C($sformatf("0x%01280x", init_slice('h3c))), + .INITVAL_3D($sformatf("0x%01280x", init_slice('h3d))), + .INITVAL_3E($sformatf("0x%01280x", init_slice('h3e))), + .INITVAL_3F($sformatf("0x%01280x", init_slice('h3f))), + .INITVAL_40($sformatf("0x%01280x", init_slice('h40))), + .INITVAL_41($sformatf("0x%01280x", init_slice('h41))), + .INITVAL_42($sformatf("0x%01280x", init_slice('h42))), + .INITVAL_43($sformatf("0x%01280x", init_slice('h43))), + .INITVAL_44($sformatf("0x%01280x", init_slice('h44))), + .INITVAL_45($sformatf("0x%01280x", init_slice('h45))), + .INITVAL_46($sformatf("0x%01280x", init_slice('h46))), + .INITVAL_47($sformatf("0x%01280x", init_slice('h47))), + .INITVAL_48($sformatf("0x%01280x", init_slice('h48))), + .INITVAL_49($sformatf("0x%01280x", init_slice('h49))), + .INITVAL_4A($sformatf("0x%01280x", init_slice('h4a))), + .INITVAL_4B($sformatf("0x%01280x", init_slice('h4b))), + .INITVAL_4C($sformatf("0x%01280x", init_slice('h4c))), + .INITVAL_4D($sformatf("0x%01280x", init_slice('h4d))), + .INITVAL_4E($sformatf("0x%01280x", init_slice('h4e))), + .INITVAL_4F($sformatf("0x%01280x", init_slice('h4f))), + .INITVAL_50($sformatf("0x%01280x", init_slice('h50))), + .INITVAL_51($sformatf("0x%01280x", init_slice('h51))), + .INITVAL_52($sformatf("0x%01280x", init_slice('h52))), + .INITVAL_53($sformatf("0x%01280x", init_slice('h53))), + .INITVAL_54($sformatf("0x%01280x", init_slice('h54))), + .INITVAL_55($sformatf("0x%01280x", init_slice('h55))), + .INITVAL_56($sformatf("0x%01280x", init_slice('h56))), + .INITVAL_57($sformatf("0x%01280x", init_slice('h57))), + .INITVAL_58($sformatf("0x%01280x", init_slice('h58))), + .INITVAL_59($sformatf("0x%01280x", init_slice('h59))), + .INITVAL_5A($sformatf("0x%01280x", init_slice('h5a))), + .INITVAL_5B($sformatf("0x%01280x", init_slice('h5b))), + .INITVAL_5C($sformatf("0x%01280x", init_slice('h5c))), + .INITVAL_5D($sformatf("0x%01280x", init_slice('h5d))), + .INITVAL_5E($sformatf("0x%01280x", init_slice('h5e))), + .INITVAL_5F($sformatf("0x%01280x", init_slice('h5f))), + .INITVAL_60($sformatf("0x%01280x", init_slice('h60))), + .INITVAL_61($sformatf("0x%01280x", init_slice('h61))), + .INITVAL_62($sformatf("0x%01280x", init_slice('h62))), + .INITVAL_63($sformatf("0x%01280x", init_slice('h63))), + .INITVAL_64($sformatf("0x%01280x", init_slice('h64))), + .INITVAL_65($sformatf("0x%01280x", init_slice('h65))), + .INITVAL_66($sformatf("0x%01280x", init_slice('h66))), + .INITVAL_67($sformatf("0x%01280x", init_slice('h67))), + .INITVAL_68($sformatf("0x%01280x", init_slice('h68))), + .INITVAL_69($sformatf("0x%01280x", init_slice('h69))), + .INITVAL_6A($sformatf("0x%01280x", init_slice('h6a))), + .INITVAL_6B($sformatf("0x%01280x", init_slice('h6b))), + .INITVAL_6C($sformatf("0x%01280x", init_slice('h6c))), + .INITVAL_6D($sformatf("0x%01280x", init_slice('h6d))), + .INITVAL_6E($sformatf("0x%01280x", init_slice('h6e))), + .INITVAL_6F($sformatf("0x%01280x", init_slice('h6f))), + .INITVAL_70($sformatf("0x%01280x", init_slice('h70))), + .INITVAL_71($sformatf("0x%01280x", init_slice('h71))), + .INITVAL_72($sformatf("0x%01280x", init_slice('h72))), + .INITVAL_73($sformatf("0x%01280x", init_slice('h73))), + .INITVAL_74($sformatf("0x%01280x", init_slice('h74))), + .INITVAL_75($sformatf("0x%01280x", init_slice('h75))), + .INITVAL_76($sformatf("0x%01280x", init_slice('h76))), + .INITVAL_77($sformatf("0x%01280x", init_slice('h77))), + .INITVAL_78($sformatf("0x%01280x", init_slice('h78))), + .INITVAL_79($sformatf("0x%01280x", init_slice('h79))), + .INITVAL_7A($sformatf("0x%01280x", init_slice('h7a))), + .INITVAL_7B($sformatf("0x%01280x", init_slice('h7b))), + .INITVAL_7C($sformatf("0x%01280x", init_slice('h7c))), + .INITVAL_7D($sformatf("0x%01280x", init_slice('h7d))), + .INITVAL_7E($sformatf("0x%01280x", init_slice('h7e))), + .INITVAL_7F($sformatf("0x%01280x", init_slice('h7f))), + .OUTREG_A("NO_REG"), + .OUTREG_B("NO_REG"), + .ECC_BYTE_SEL("BYTE_EN"), + .GSR("DISABLED"), + .RESETMODE(OPTION_RESETMODE), + .ASYNC_RESET_RELEASE(OPTION_RESETMODE), +) _TECHMAP_REPLACE_ ( + .CLK(CLK_C), + + .WEA(PORT_A_WR_EN), + .CEA(PORT_A_CLK_EN), + .RSTA(OPTION_RESETMODE == "SYNC" ? PORT_A_RD_SRST : PORT_A_RD_ARST), + .CSA(1'b1), + .ADA(PORT_A_ADDR), + .BENA_N(~PORT_A_WR_BE), + .DIA(PORT_A_WR_DATA), + .DOA(PORT_A_RD_DATA), + + .WEB(PORT_B_WR_EN), + .CEB(PORT_B_CLK_EN), + .RSTB(OPTION_RESETMODE == "SYNC" ? PORT_B_RD_SRST : PORT_B_RD_ARST), + .CSB(1'b1), + .BENB_N(~PORT_B_WR_BE), + .ADB(PORT_B_ADDR), + .DIB(PORT_B_WR_DATA), + .DOB(PORT_B_RD_DATA), +); + +endmodule diff --git a/resources/netlist/resources/kernel/share/nexus/lutrams.txt b/resources/netlist/resources/kernel/share/nexus/lutrams.txt new file mode 100644 index 0000000..90e1e7b --- /dev/null +++ b/resources/netlist/resources/kernel/share/nexus/lutrams.txt @@ -0,0 +1,12 @@ +ram distributed $__NEXUS_DPR16X4_ { + abits 4; + width 4; + cost 4; + init no_undef; + prune_rom; + port sw "W" { + clock posedge; + } + port ar "R" { + } +} diff --git a/resources/netlist/resources/kernel/share/nexus/lutrams_map.v b/resources/netlist/resources/kernel/share/nexus/lutrams_map.v new file mode 100644 index 0000000..d12b490 --- /dev/null +++ b/resources/netlist/resources/kernel/share/nexus/lutrams_map.v @@ -0,0 +1,23 @@ +module $__NEXUS_DPR16X4_ (...); + parameter INIT = 64'b0; + + input PORT_W_CLK; + input [3:0] PORT_W_ADDR; + input [3:0] PORT_W_WR_DATA; + input PORT_W_WR_EN; + + input [3:0] PORT_R_ADDR; + output [3:0] PORT_R_RD_DATA; + + DPR16X4 #( + .INITVAL($sformatf("0x%08x", INIT)) + ) _TECHMAP_REPLACE_ ( + .RAD(PORT_R_ADDR), + .DO(PORT_R_RD_DATA), + + .WAD(PORT_W_ADDR), + .DI(PORT_W_WR_DATA), + .WCK(PORT_W_CLK), + .WRE(PORT_W_WR_EN) + ); +endmodule diff --git a/resources/netlist/resources/kernel/share/nexus/parse_init.vh b/resources/netlist/resources/kernel/share/nexus/parse_init.vh new file mode 100644 index 0000000..0f9ab78 --- /dev/null +++ b/resources/netlist/resources/kernel/share/nexus/parse_init.vh @@ -0,0 +1,33 @@ +function [15:0] parse_init; + input [((2+(16/4))*8)-1:0] init; + reg [7:0] c; + integer i; + begin + for (i = 0; i < (16/4); i = i + 1) begin + c = init[(i * 8) +: 8]; + if (c >= "0" && c <= "9") + parse_init[(i * 4) +: 4] = (c - "0"); + else if (c >= "A" && c <= "F") + parse_init[(i * 4) +: 4] = (c - "A") + 10; + else if (c >= "a" && c <= "f") + parse_init[(i * 4) +: 4] = (c - "a") + 10; + end + end +endfunction + +function [63:0] parse_init_64; + input [((2+(64/4))*8)-1:0] init; + reg [7:0] c; + integer i; + begin + for (i = 0; i < (64/4); i = i + 1) begin + c = init[(i * 8) +: 8]; + if (c >= "0" && c <= "9") + parse_init_64[(i * 4) +: 4] = (c - "0"); + else if (c >= "A" && c <= "F") + parse_init_64[(i * 4) +: 4] = (c - "A") + 10; + else if (c >= "a" && c <= "f") + parse_init_64[(i * 4) +: 4] = (c - "a") + 10; + end + end +endfunction diff --git a/resources/netlist/resources/kernel/share/pmux2mux.v b/resources/netlist/resources/kernel/share/pmux2mux.v new file mode 100644 index 0000000..9c97245 --- /dev/null +++ b/resources/netlist/resources/kernel/share/pmux2mux.v @@ -0,0 +1,21 @@ +module \$pmux (A, B, S, Y); + +wire [1023:0] _TECHMAP_DO_ = "proc; clean"; + +parameter WIDTH = 1; +parameter S_WIDTH = 1; + +input [WIDTH-1:0] A; +input [WIDTH*S_WIDTH-1:0] B; +input [S_WIDTH-1:0] S; +output reg [WIDTH-1:0] Y; + +integer i; + +always @* begin + Y <= A; + for (i = 0; i < S_WIDTH; i=i+1) + if (S[i]) Y <= B[WIDTH*i +: WIDTH]; +end + +endmodule diff --git a/resources/netlist/resources/kernel/share/quicklogic/abc9_map.v b/resources/netlist/resources/kernel/share/quicklogic/abc9_map.v new file mode 100644 index 0000000..46c11d6 --- /dev/null +++ b/resources/netlist/resources/kernel/share/quicklogic/abc9_map.v @@ -0,0 +1,26 @@ +// This file exists to map purely-synchronous flops to ABC9 flops, while +// mapping flops with asynchronous-set/clear as boxes, this is because ABC9 +// doesn't support asynchronous-set/clear flops in sequential synthesis. + +module dffepc ( + output Q, + input D, + input CLK, + input EN, + input CLR, + input PRE +); + +parameter INIT = 1'b0; + +parameter _TECHMAP_CONSTMSK_CLR_ = 1'b0; +parameter _TECHMAP_CONSTMSK_PRE_ = 1'b0; +parameter _TECHMAP_CONSTVAL_CLR_ = 1'b0; +parameter _TECHMAP_CONSTVAL_PRE_ = 1'b0; + +if (_TECHMAP_CONSTMSK_CLR_ != 1'b0 && _TECHMAP_CONSTMSK_PRE_ != 1'b0 && _TECHMAP_CONSTVAL_CLR_ == 1'b0 && _TECHMAP_CONSTVAL_PRE_ == 1'b0) + $__PP3_DFFEPC_SYNCONLY _TECHMAP_REPLACE_ (.Q(Q), .D(D), .CLK(CLK), .EN(EN)); +else + wire _TECHMAP_FAIL_ = 1; + +endmodule diff --git a/resources/netlist/resources/kernel/share/quicklogic/abc9_model.v b/resources/netlist/resources/kernel/share/quicklogic/abc9_model.v new file mode 100644 index 0000000..06d4a2a --- /dev/null +++ b/resources/netlist/resources/kernel/share/quicklogic/abc9_model.v @@ -0,0 +1,11 @@ +(* abc9_flop, lib_whitebox *) +module $__PP3_DFFEPC_SYNCONLY ( + output Q, + input D, + input CLK, + input EN, +); + + dffepc ff (.Q(Q), .D(D), .CLK(CLK), .EN(EN), .PRE(1'b0), .CLR(1'b0)); + +endmodule diff --git a/resources/netlist/resources/kernel/share/quicklogic/abc9_unmap.v b/resources/netlist/resources/kernel/share/quicklogic/abc9_unmap.v new file mode 100644 index 0000000..1681e01 --- /dev/null +++ b/resources/netlist/resources/kernel/share/quicklogic/abc9_unmap.v @@ -0,0 +1,14 @@ +module $__PP3_DFFEPC_SYNCONLY ( + output Q, + input D, + input CLK, + input EN, +); + +// For some reason ABC9 adds init attributes to wires even though they were removed before mapping. +// As a workaround, remove any init attributes that get reintroduced. +wire _TECHMAP_REMOVEINIT_Q_ = 1; + +dffepc _TECHMAP_REPLACE_ (.Q(Q), .D(D), .CLK(CLK), .EN(EN), .PRE(1'b0), .CLR(1'b0)); + +endmodule diff --git a/resources/netlist/resources/kernel/share/quicklogic/cells_sim.v b/resources/netlist/resources/kernel/share/quicklogic/cells_sim.v new file mode 100644 index 0000000..f24782e --- /dev/null +++ b/resources/netlist/resources/kernel/share/quicklogic/cells_sim.v @@ -0,0 +1,36 @@ +module inv ( + output Q, + input A +); + assign Q = A ? 0 : 1; +endmodule + +module buff ( + output Q, + input A +); + assign Q = A; +endmodule + +module logic_0 ( + output A +); + assign A = 0; +endmodule + +module logic_1 ( + output A +); + assign A = 1; +endmodule + +module gclkbuff ( + input A, + output Z +); + specify + (A => Z) = 0; + endspecify + + assign Z = A; +endmodule diff --git a/resources/netlist/resources/kernel/share/quicklogic/lut_sim.v b/resources/netlist/resources/kernel/share/quicklogic/lut_sim.v new file mode 100644 index 0000000..851ce4d --- /dev/null +++ b/resources/netlist/resources/kernel/share/quicklogic/lut_sim.v @@ -0,0 +1,76 @@ +(* abc9_lut=1, lib_whitebox *) +module LUT1 ( + output O, + input I0 +); + parameter [1:0] INIT = 0; + parameter EQN = "(I0)"; + + // These timings are for PolarPro 3E; other families will need updating. + specify + (I0 => O) = 698; // FS -> FZ + endspecify + + assign O = I0 ? INIT[1] : INIT[0]; +endmodule + +// TZ TSL TAB +(* abc9_lut=2, lib_whitebox *) +module LUT2 ( + output O, + input I0, I1 +); + parameter [3:0] INIT = 4'h0; + parameter EQN = "(I0)"; + + // These timings are for PolarPro 3E; other families will need updating. + specify + (I0 => O) = 1251; // TAB -> TZ + (I1 => O) = 1406; // TSL -> TZ + endspecify + + wire [1:0] s1 = I1 ? INIT[3:2] : INIT[1:0]; + assign O = I0 ? s1[1] : s1[0]; +endmodule + +(* abc9_lut=2, lib_whitebox *) +module LUT3 ( + output O, + input I0, I1, I2 +); + parameter [7:0] INIT = 8'h0; + parameter EQN = "(I0)"; + + // These timings are for PolarPro 3E; other families will need updating. + specify + (I0 => O) = 1251; // TAB -> TZ + (I1 => O) = 1406; // TSL -> TZ + (I2 => O) = 1699; // ('TA1', 'TA2', 'TB1', 'TB2') -> TZ + endspecify + + wire [3:0] s2 = I2 ? INIT[7:4] : INIT[3:0]; + wire [1:0] s1 = I1 ? s2[3:2] : s2[1:0]; + assign O = I0 ? s1[1] : s1[0]; +endmodule + +(* abc9_lut=4, lib_whitebox *) +module LUT4 ( + output O, + input I0, I1, I2, I3 +); + parameter [15:0] INIT = 16'h0; + parameter EQN = "(I0)"; + + // These timings are for PolarPro 3E; other families will need updating. + specify + (I0 => O) = 995; // TBS -> CZ + (I1 => O) = 1437; // ('TAB', 'BAB') -> CZ + (I2 => O) = 1593; // ('TSL', 'BSL') -> CZ + (I3 => O) = 1887; // ('TA1', 'TA2', 'TB1', 'TB2', 'BA1', 'BA2', 'BB1', 'BB2') -> CZ + endspecify + + wire [7:0] s3 = I3 ? INIT[15:8] : INIT[7:0]; + wire [3:0] s2 = I2 ? s3[7:4] : s3[3:0]; + wire [1:0] s1 = I1 ? s2[3:2] : s2[1:0]; + assign O = I0 ? s1[1] : s1[0]; +endmodule diff --git a/resources/netlist/resources/kernel/share/quicklogic/pp3_cells_map.v b/resources/netlist/resources/kernel/share/quicklogic/pp3_cells_map.v new file mode 100644 index 0000000..10e270d --- /dev/null +++ b/resources/netlist/resources/kernel/share/quicklogic/pp3_cells_map.v @@ -0,0 +1,36 @@ +module \$_MUX8_ ( + A, B, C, D, E, F, G, H, S, T, U, Y +); + input A, B, C, D, E, F, G, H, S, T, U; + output Y; + mux8x0 _TECHMAP_REPLACE_ ( + .A(A), + .B(B), + .C(C), + .D(D), + .E(E), + .F(F), + .G(G), + .H(H), + .S0(S), + .S1(T), + .S2(U), + .Q(Y) + ); +endmodule + +module \$_MUX4_ ( + A, B, C, D, S, T, U, Y +); + input A, B, C, D, S, T, U; + output Y; + mux4x0 _TECHMAP_REPLACE_ ( + .A(A), + .B(B), + .C(C), + .D(D), + .S0(S), + .S1(T), + .Q(Y) + ); +endmodule diff --git a/resources/netlist/resources/kernel/share/quicklogic/pp3_cells_sim.v b/resources/netlist/resources/kernel/share/quicklogic/pp3_cells_sim.v new file mode 100644 index 0000000..5820d7a --- /dev/null +++ b/resources/netlist/resources/kernel/share/quicklogic/pp3_cells_sim.v @@ -0,0 +1,329 @@ +module inpad ( + output Q, + (* iopad_external_pin *) + input P +); + specify + (P => Q) = 0; + endspecify + assign Q = P; +endmodule + +module outpad ( + (* iopad_external_pin *) + output P, + input A +); + specify + (A => P) = 0; + endspecify + assign P = A; +endmodule + +module ckpad ( + output Q, + (* iopad_external_pin *) + input P +); + specify + (P => Q) = 0; + endspecify + assign Q = P; +endmodule + +module bipad ( + input A, + input EN, + output Q, + (* iopad_external_pin *) + inout P +); + assign Q = P; + assign P = EN ? A : 1'bz; +endmodule + +module dff ( + output reg Q, + input D, + (* clkbuf_sink *) + input CLK +); + parameter [0:0] INIT = 1'b0; + initial Q = INIT; + always @(posedge CLK) Q <= D; +endmodule + +module dffc ( + output reg Q, + input D, + (* clkbuf_sink *) + input CLK, + (* clkbuf_sink *) + input CLR +); + parameter [0:0] INIT = 1'b0; + initial Q = INIT; + + always @(posedge CLK or posedge CLR) + if (CLR) Q <= 1'b0; + else Q <= D; +endmodule + +module dffp ( + output reg Q, + input D, + (* clkbuf_sink *) + input CLK, + (* clkbuf_sink *) + input PRE +); + parameter [0:0] INIT = 1'b0; + initial Q = INIT; + + always @(posedge CLK or posedge PRE) + if (PRE) Q <= 1'b1; + else Q <= D; +endmodule + +module dffpc ( + output reg Q, + input D, + (* clkbuf_sink *) + input CLK, + (* clkbuf_sink *) + input CLR, + (* clkbuf_sink *) + input PRE +); + parameter [0:0] INIT = 1'b0; + initial Q = INIT; + + always @(posedge CLK or posedge CLR or posedge PRE) + if (CLR) Q <= 1'b0; + else if (PRE) Q <= 1'b1; + else Q <= D; +endmodule + +module dffe ( + output reg Q, + input D, + (* clkbuf_sink *) + input CLK, + input EN +); + parameter [0:0] INIT = 1'b0; + initial Q = INIT; + always @(posedge CLK) if (EN) Q <= D; +endmodule + +module dffec ( + output reg Q, + input D, + (* clkbuf_sink *) + input CLK, + input EN, + (* clkbuf_sink *) + input CLR +); + parameter [0:0] INIT = 1'b0; + initial Q = INIT; + + always @(posedge CLK or posedge CLR) + if (CLR) Q <= 1'b0; + else if (EN) Q <= D; +endmodule + +(* lib_whitebox *) +module dffepc ( + output reg Q, + input D, + (* clkbuf_sink *) + input CLK, + input EN, + (* clkbuf_sink *) + input CLR, + (* clkbuf_sink *) + input PRE +); + parameter [0:0] INIT = 1'b0; + + specify + if (EN) (posedge CLK => (Q : D)) = 1701; // QCK -> QZ + if (CLR) (CLR => Q) = 967; // QRT -> QZ + if (PRE) (PRE => Q) = 1252; // QST -> QZ + $setup(D, posedge CLK, 216); // QCK -> QDS + $setup(EN, posedge CLK, 590); // QCK -> QEN + endspecify + + initial Q = INIT; + always @(posedge CLK or posedge CLR or posedge PRE) + if (CLR) Q <= 1'b0; + else if (PRE) Q <= 1'b1; + else if (EN) Q <= D; +endmodule + +// FZ FS F2 (F1 TO 0) +(* abc9_box, lib_whitebox *) +module AND2I0 ( + output Q, + input A, B +); + specify + (A => Q) = 698; // FS -> FZ + (B => Q) = 639; // F2 -> FZ + endspecify + + assign Q = A ? B : 0; +endmodule + +(* abc9_box, lib_whitebox *) +module mux2x0 ( + output Q, + input S, A, B +); + specify + (S => Q) = 698; // FS -> FZ + (A => Q) = 639; // F1 -> FZ + (B => Q) = 639; // F2 -> FZ + endspecify + + assign Q = S ? B : A; +endmodule + +(* abc9_box, lib_whitebox *) +module mux2x1 ( + output Q, + input S, A, B +); + specify + (S => Q) = 698; // FS -> FZ + (A => Q) = 639; // F1 -> FZ + (B => Q) = 639; // F2 -> FZ + endspecify + + assign Q = S ? B : A; +endmodule + +(* abc9_box, lib_whitebox *) +module mux4x0 ( + output Q, + input S0, S1, A, B, C, D +); + specify + (S0 => Q) = 1251; // TAB -> TZ + (S1 => Q) = 1406; // TSL -> TZ + (A => Q) = 1699; // TA1 -> TZ + (B => Q) = 1687; // TA2 -> TZ + (C => Q) = 1669; // TB1 -> TZ + (D => Q) = 1679; // TB2 -> TZ + endspecify + + assign Q = S1 ? (S0 ? D : C) : (S0 ? B : A); +endmodule + +// S0 BSL TSL +// S1 BAB TAB +// S2 TBS +// A TA1 +// B TA2 +// C TB1 +// D TB2 +// E BA1 +// F BA2 +// G BB1 +// H BB2 +// Q CZ +(* abc9_box, lib_whitebox *) +module mux8x0 ( + output Q, + input S0, S1, S2, A, B, C, D, E, F, G, H +); + specify + (S0 => Q) = 1593; // ('TSL', 'BSL') -> CZ + (S1 => Q) = 1437; // ('TAB', 'BAB') -> CZ + (S2 => Q) = 995; // TBS -> CZ + (A => Q) = 1887; // TA1 -> CZ + (B => Q) = 1873; // TA2 -> CZ + (C => Q) = 1856; // TB1 -> CZ + (D => Q) = 1860; // TB2 -> CZ + (E => Q) = 1714; // BA1 -> CZ + (F => Q) = 1773; // BA2 -> CZ + (G => Q) = 1749; // BB1 -> CZ + (H => Q) = 1723; // BB2 -> CZ + endspecify + + assign Q = S2 ? (S1 ? (S0 ? H : G) : (S0 ? F : E)) : (S1 ? (S0 ? D : C) : (S0 ? B : A)); +endmodule + +(* blackbox *) +(* keep *) +module qlal4s3b_cell_macro ( + input WB_CLK, + input WBs_ACK, + input [31:0] WBs_RD_DAT, + output [3:0] WBs_BYTE_STB, + output WBs_CYC, + output WBs_WE, + output WBs_RD, + output WBs_STB, + output [16:0] WBs_ADR, + input [3:0] SDMA_Req, + input [3:0] SDMA_Sreq, + output [3:0] SDMA_Done, + output [3:0] SDMA_Active, + input [3:0] FB_msg_out, + input [7:0] FB_Int_Clr, + output FB_Start, + input FB_Busy, + output WB_RST, + output Sys_PKfb_Rst, + output Clk16, + output Clk16_Rst, + output Clk21, + output Clk21_Rst, + output Sys_Pclk, + output Sys_Pclk_Rst, + input Sys_PKfb_Clk, + input [31:0] FB_PKfbData, + output [31:0] WBs_WR_DAT, + input [3:0] FB_PKfbPush, + input FB_PKfbSOF, + input FB_PKfbEOF, + output [7:0] Sensor_Int, + output FB_PKfbOverflow, + output [23:0] TimeStamp, + input Sys_PSel, + input [15:0] SPIm_Paddr, + input SPIm_PEnable, + input SPIm_PWrite, + input [31:0] SPIm_PWdata, + output SPIm_PReady, + output SPIm_PSlvErr, + output [31:0] SPIm_Prdata, + input [15:0] Device_ID, + input [13:0] FBIO_In_En, + input [13:0] FBIO_Out, + input [13:0] FBIO_Out_En, + output [13:0] FBIO_In, + inout [13:0] SFBIO, + input Device_ID_6S, + input Device_ID_4S, + input SPIm_PWdata_26S, + input SPIm_PWdata_24S, + input SPIm_PWdata_14S, + input SPIm_PWdata_11S, + input SPIm_PWdata_0S, + input SPIm_Paddr_8S, + input SPIm_Paddr_6S, + input FB_PKfbPush_1S, + input FB_PKfbData_31S, + input FB_PKfbData_21S, + input FB_PKfbData_19S, + input FB_PKfbData_9S, + input FB_PKfbData_6S, + input Sys_PKfb_ClkS, + input FB_BusyS, + input WB_CLKS +); + +endmodule diff --git a/resources/netlist/resources/kernel/share/quicklogic/pp3_ffs_map.v b/resources/netlist/resources/kernel/share/quicklogic/pp3_ffs_map.v new file mode 100644 index 0000000..73ba6c9 --- /dev/null +++ b/resources/netlist/resources/kernel/share/quicklogic/pp3_ffs_map.v @@ -0,0 +1,4 @@ +module \$_DFFSRE_PPPP_ (input C, S, R, E, D, output Q); + wire _TECHMAP_REMOVEINIT_Q_ = 1; + dffepc #(.INIT(1'b0)) _TECHMAP_REPLACE_ (.CLK(C), .PRE(S), .CLR(R), .EN(E), .D(D), .Q(Q)); +endmodule diff --git a/resources/netlist/resources/kernel/share/quicklogic/pp3_latches_map.v b/resources/netlist/resources/kernel/share/quicklogic/pp3_latches_map.v new file mode 100644 index 0000000..240a3fb --- /dev/null +++ b/resources/netlist/resources/kernel/share/quicklogic/pp3_latches_map.v @@ -0,0 +1,11 @@ +module \$_DLATCH_P_ (E, D, Q); + wire [1023:0] _TECHMAP_DO_ = "simplemap; opt"; + input E, D; + output Q = E ? D : Q; +endmodule + +module \$_DLATCH_N_ (E, D, Q); + wire [1023:0] _TECHMAP_DO_ = "simplemap; opt"; + input E, D; + output Q = !E ? D : Q; +endmodule diff --git a/resources/netlist/resources/kernel/share/quicklogic/pp3_lut_map.v b/resources/netlist/resources/kernel/share/quicklogic/pp3_lut_map.v new file mode 100644 index 0000000..4c375c9 --- /dev/null +++ b/resources/netlist/resources/kernel/share/quicklogic/pp3_lut_map.v @@ -0,0 +1,53 @@ +module \$lut ( + A, Y +); + parameter WIDTH = 0; + parameter LUT = 0; + + input [WIDTH-1:0] A; + output Y; + + generate + if (WIDTH == 1) begin + LUT1 #( + .EQN(""), + .INIT(LUT) + ) _TECHMAP_REPLACE_ ( + .O(Y), + .I0(A[0]) + ); + end else if (WIDTH == 2) begin + LUT2 #( + .EQN(""), + .INIT(LUT) + ) _TECHMAP_REPLACE_ ( + .O(Y), + .I0(A[0]), + .I1(A[1]) + ); + end else if (WIDTH == 3) begin + LUT3 #( + .EQN(""), + .INIT(LUT) + ) _TECHMAP_REPLACE_ ( + .O(Y), + .I0(A[0]), + .I1(A[1]), + .I2(A[2]) + ); + end else if (WIDTH == 4) begin + LUT4 #( + .EQN(""), + .INIT(LUT) + ) _TECHMAP_REPLACE_ ( + .O(Y), + .I0(A[0]), + .I1(A[1]), + .I2(A[2]), + .I3(A[3]) + ); + end else begin + wire _TECHMAP_FAIL_ = 1; + end + endgenerate +endmodule diff --git a/resources/netlist/resources/kernel/share/sf2/arith_map.v b/resources/netlist/resources/kernel/share/sf2/arith_map.v new file mode 100644 index 0000000..eb36779 --- /dev/null +++ b/resources/netlist/resources/kernel/share/sf2/arith_map.v @@ -0,0 +1,69 @@ +/* + * yosys -- Yosys Open SYnthesis Suite + * + * Copyright (C) 2012 Claire Xenia Wolf + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + */ + +(* techmap_celltype = "$alu" *) +module \$__SF2_ALU (A, B, CI, BI, X, Y, CO); + parameter A_SIGNED = 0; + parameter B_SIGNED = 0; + parameter A_WIDTH = 1; + parameter B_WIDTH = 1; + parameter Y_WIDTH = 1; + + (* force_downto *) + input [A_WIDTH-1:0] A; + (* force_downto *) + input [B_WIDTH-1:0] B; + (* force_downto *) + output [Y_WIDTH-1:0] X, Y; + + input CI, BI; + (* force_downto *) + output [Y_WIDTH-1:0] CO; + + wire _TECHMAP_FAIL_ = Y_WIDTH <= 2; + + (* force_downto *) + wire [Y_WIDTH-1:0] AA, BB; + \$pos #(.A_SIGNED(A_SIGNED), .A_WIDTH(A_WIDTH), .Y_WIDTH(Y_WIDTH)) A_conv (.A(A), .Y(AA)); + \$pos #(.A_SIGNED(B_SIGNED), .A_WIDTH(B_WIDTH), .Y_WIDTH(Y_WIDTH)) B_conv (.A(B), .Y(BB)); + + (* force_downto *) + wire [Y_WIDTH-1:0] C = {CO, CI}; + + genvar i; + generate for (i = 0; i < Y_WIDTH; i = i + 1) begin:slice + ARI1 #( + // G = F1 = A[i] & (B[i]^BI) + // Y = F0 = A[i]^B[i]^BI + // P = Y + // ADCB + .INIT(20'b 01_11_0010_1000_1001_0110) + ) carry ( + .A(1'b0), + .B(AA[i]), + .C(BB[i]), + .D(BI), + .FCI(C[i]), + .Y(X[i]), + .S(Y[i]), + .FCO(CO[i]) + ); + end endgenerate +endmodule + diff --git a/resources/netlist/resources/kernel/share/sf2/cells_map.v b/resources/netlist/resources/kernel/share/sf2/cells_map.v new file mode 100644 index 0000000..8878299 --- /dev/null +++ b/resources/netlist/resources/kernel/share/sf2/cells_map.v @@ -0,0 +1,51 @@ +module \$_DFFE_PN0P_ (input D, C, R, E, output Q); + SLE _TECHMAP_REPLACE_ (.D(D), .CLK(C), .EN(E), .ALn(R), .ADn(1'b1), .SLn(1'b1), .SD(1'b0), .LAT(1'b0), .Q(Q)); +endmodule + +module \$_DFFE_PN1P_ (input D, C, R, E, output Q); + SLE _TECHMAP_REPLACE_ (.D(D), .CLK(C), .EN(E), .ALn(R), .ADn(1'b0), .SLn(1'b1), .SD(1'b0), .LAT(1'b0), .Q(Q)); +endmodule + +module \$_SDFFCE_PN0P_ (input D, C, R, E, output Q); + SLE _TECHMAP_REPLACE_ (.D(D), .CLK(C), .EN(E), .ALn(1'b1), .ADn(1'b0), .SLn(R), .SD(1'b0), .LAT(1'b0), .Q(Q)); +endmodule + +module \$_SDFFCE_PN1P_ (input D, C, R, E, output Q); + SLE _TECHMAP_REPLACE_ (.D(D), .CLK(C), .EN(E), .ALn(1'b1), .ADn(1'b0), .SLn(R), .SD(1'b1), .LAT(1'b0), .Q(Q)); +endmodule + +module \$_DLATCH_PN0_ (input D, R, E, output Q); + SLE _TECHMAP_REPLACE_ (.D(D), .CLK(E), .EN(1'b1), .ALn(R), .ADn(1'b1), .SLn(1'b1), .SD(1'b0), .LAT(1'b1), .Q(Q)); +endmodule + +module \$_DLATCH_PN1_ (input D, R, E, output Q); + SLE _TECHMAP_REPLACE_ (.D(D), .CLK(E), .EN(1'b1), .ALn(R), .ADn(1'b0), .SLn(1'b1), .SD(1'b0), .LAT(1'b1), .Q(Q)); +endmodule + +`ifndef NO_LUT +module \$lut (A, Y); + parameter WIDTH = 0; + parameter LUT = 0; + + (* force_downto *) + input [WIDTH-1:0] A; + output Y; + + generate + if (WIDTH == 1) begin + CFG1 #(.INIT(LUT)) _TECHMAP_REPLACE_ (.Y(Y), .A(A[0])); + end else + if (WIDTH == 2) begin + CFG2 #(.INIT(LUT)) _TECHMAP_REPLACE_ (.Y(Y), .A(A[0]), .B(A[1])); + end else + if (WIDTH == 3) begin + CFG3 #(.INIT(LUT)) _TECHMAP_REPLACE_ (.Y(Y), .A(A[0]), .B(A[1]), .C(A[2])); + end else + if (WIDTH == 4) begin + CFG4 #(.INIT(LUT)) _TECHMAP_REPLACE_ (.Y(Y), .A(A[0]), .B(A[1]), .C(A[2]), .D(A[3])); + end else begin + wire _TECHMAP_FAIL_ = 1; + end + endgenerate +endmodule +`endif diff --git a/resources/netlist/resources/kernel/share/sf2/cells_sim.v b/resources/netlist/resources/kernel/share/sf2/cells_sim.v new file mode 100644 index 0000000..b5438e4 --- /dev/null +++ b/resources/netlist/resources/kernel/share/sf2/cells_sim.v @@ -0,0 +1,579 @@ +// https://coredocs.s3.amazonaws.com/Libero/12_0_0/Tool/sf2_mlg.pdf + +module AND2 ( + input A, B, + output Y +); + assign Y = A & B; +endmodule + +module AND3 ( + input A, B, C, + output Y +); + assign Y = A & B & C; +endmodule + +module AND4 ( + input A, B, C, D, + output Y +); + assign Y = A & B & C & D; +endmodule + +module CFG1 ( + output Y, + input A +); + parameter [1:0] INIT = 2'h0; + assign Y = INIT >> A; +endmodule + +module CFG2 ( + output Y, + input A, + input B +); + parameter [3:0] INIT = 4'h0; + assign Y = INIT >> {B, A}; +endmodule + +module CFG3 ( + output Y, + input A, + input B, + input C +); + parameter [7:0] INIT = 8'h0; + assign Y = INIT >> {C, B, A}; +endmodule + +module CFG4 ( + output Y, + input A, + input B, + input C, + input D +); + parameter [15:0] INIT = 16'h0; + assign Y = INIT >> {D, C, B, A}; +endmodule + +module BUFF ( + input A, + output Y +); + assign Y = A; +endmodule + +module BUFD ( + input A, + output Y +); + assign Y = A; +endmodule + +module CLKINT ( + input A, + (* clkbuf_driver *) + output Y +); + assign Y = A; +endmodule + +module CLKINT_PRESERVE ( + input A, + (* clkbuf_driver *) + output Y +); + assign Y = A; +endmodule + +module GCLKINT ( + input A, EN, + (* clkbuf_driver *) + output Y +); + assign Y = A & EN; +endmodule + +module RCLKINT ( + input A, + (* clkbuf_driver *) + output Y +); + assign Y = A; +endmodule + +module RGCLKINT ( + input A, EN, + (* clkbuf_driver *) + output Y +); + assign Y = A & EN; +endmodule + +module SLE ( + output Q, + input ADn, + input ALn, + (* clkbuf_sink *) + input CLK, + input D, + input LAT, + input SD, + input EN, + input SLn +); + reg q_latch, q_ff; + + always @(posedge CLK, negedge ALn) begin + if (!ALn) begin + q_ff <= !ADn; + end else if (EN) begin + if (!SLn) + q_ff <= SD; + else + q_ff <= D; + end + end + + always @* begin + if (!ALn) begin + q_latch <= !ADn; + end else if (CLK && EN) begin + if (!SLn) + q_ff <= SD; + else + q_ff <= D; + end + end + + assign Q = LAT ? q_latch : q_ff; +endmodule + +module ARI1 ( + input A, B, C, D, FCI, + output Y, S, FCO +); + parameter [19:0] INIT = 20'h0; + wire [2:0] Fsel = {D, C, B}; + wire F0 = INIT[Fsel]; + wire F1 = INIT[8 + Fsel]; + wire Yout = A ? F1 : F0; + assign Y = Yout; + assign S = FCI ^ Yout; + wire G = INIT[16] ? (INIT[17] ? F1 : F0) : INIT[17]; + wire P = INIT[19] ? 1'b1 : (INIT[18] ? Yout : 1'b0); + assign FCO = P ? FCI : G; +endmodule + +// module FCEND_BUFF +// module FCINIT_BUFF +// module FLASH_FREEZE +// module OSCILLATOR +// module SYSCTRL_RESET_STATUS +// module LIVE_PROBE_FB + +(* blackbox *) +module GCLKBUF ( + (* iopad_external_pin *) + input PAD, + input EN, + (* clkbuf_driver *) + output Y +); +endmodule + +(* blackbox *) +module GCLKBUF_DIFF ( + (* iopad_external_pin *) + input PADP, + (* iopad_external_pin *) + input PADN, + input EN, + (* clkbuf_driver *) + output Y +); +endmodule + +(* blackbox *) +module GCLKBIBUF ( + input D, + input E, + input EN, + (* iopad_external_pin *) + inout PAD, + (* clkbuf_driver *) + output Y +); +endmodule + +// module DFN1 +// module DFN1C0 +// module DFN1E1 +// module DFN1E1C0 +// module DFN1E1P0 +// module DFN1P0 +// module DLN1 +// module DLN1C0 +// module DLN1P0 + +module INV ( + input A, + output Y +); + assign Y = !A; +endmodule + +module INVD ( + input A, + output Y +); + assign Y = !A; +endmodule + +module MX2 ( + input A, B, S, + output Y +); + assign Y = S ? B : A; +endmodule + +module MX4 ( + input D0, D1, D2, D3, S0, S1, + output Y +); + assign Y = S1 ? (S0 ? D3 : D2) : (S0 ? D1 : D0); +endmodule + +module NAND2 ( + input A, B, + output Y +); + assign Y = !(A & B); +endmodule + +module NAND3 ( + input A, B, C, + output Y +); + assign Y = !(A & B & C); +endmodule + +module NAND4 ( + input A, B, C, D, + output Y +); + assign Y = !(A & B & C & D); +endmodule + +module NOR2 ( + input A, B, + output Y +); + assign Y = !(A | B); +endmodule + +module NOR3 ( + input A, B, C, + output Y +); + assign Y = !(A | B | C); +endmodule + +module NOR4 ( + input A, B, C, D, + output Y +); + assign Y = !(A | B | C | D); +endmodule + +module OR2 ( + input A, B, + output Y +); + assign Y = A | B; +endmodule + +module OR3 ( + input A, B, C, + output Y +); + assign Y = A | B | C; +endmodule + +module OR4 ( + input A, B, C, D, + output Y +); + assign Y = A | B | C | D; +endmodule + +module XOR2 ( + input A, B, + output Y +); + assign Y = A ^ B; +endmodule + +module XOR3 ( + input A, B, C, + output Y +); + assign Y = A ^ B ^ C; +endmodule + +module XOR4 ( + input A, B, C, D, + output Y +); + assign Y = A ^ B ^ C ^ D; +endmodule + +module XOR8 ( + input A, B, C, D, E, F, G, H, + output Y +); + assign Y = A ^ B ^ C ^ D ^ E ^ F ^ G ^ H; +endmodule + +// module UJTAG + +module BIBUF ( + input D, + input E, + (* iopad_external_pin *) + inout PAD, + output Y +); + parameter IOSTD = ""; + assign PAD = E ? D : 1'bz; + assign Y = PAD; +endmodule + +(* blackbox *) +module BIBUF_DIFF ( + input D, + input E, + (* iopad_external_pin *) + inout PADP, + (* iopad_external_pin *) + inout PADN, + output Y +); + parameter IOSTD = ""; +endmodule + +module CLKBIBUF ( + input D, + input E, + (* iopad_external_pin *) + inout PAD, + (* clkbuf_driver *) + output Y +); + parameter IOSTD = ""; + assign PAD = E ? D : 1'bz; + assign Y = PAD; +endmodule + +module CLKBUF ( + (* iopad_external_pin *) + input PAD, + (* clkbuf_driver *) + output Y +); + parameter IOSTD = ""; + assign Y = PAD; +endmodule + +(* blackbox *) +module CLKBUF_DIFF ( + (* iopad_external_pin *) + input PADP, + (* iopad_external_pin *) + input PADN, + (* clkbuf_driver *) + output Y +); + parameter IOSTD = ""; +endmodule + +module INBUF ( + (* iopad_external_pin *) + input PAD, + output Y +); + parameter IOSTD = ""; + assign Y = PAD; +endmodule + +(* blackbox *) +module INBUF_DIFF ( + (* iopad_external_pin *) + input PADP, + (* iopad_external_pin *) + input PADN, + output Y +); + parameter IOSTD = ""; +endmodule + +module OUTBUF ( + input D, + (* iopad_external_pin *) + output PAD +); + parameter IOSTD = ""; + assign PAD = D; +endmodule + +(* blackbox *) +module OUTBUF_DIFF ( + input D, + (* iopad_external_pin *) + output PADP, + (* iopad_external_pin *) + output PADN +); + parameter IOSTD = ""; +endmodule + +module TRIBUFF ( + input D, + input E, + (* iopad_external_pin *) + output PAD +); + parameter IOSTD = ""; + assign PAD = E ? D : 1'bz; +endmodule + +(* blackbox *) +module TRIBUFF_DIFF ( + input D, + input E, + (* iopad_external_pin *) + output PADP, + (* iopad_external_pin *) + output PADN +); + parameter IOSTD = ""; +endmodule + +// module DDR_IN +// module DDR_OUT +// module RAM1K18 +// module RAM64x18 +// module MACC + +(* blackbox *) +module SYSRESET ( + (* iopad_external_pin *) + input DEVRST_N, + output POWER_ON_RESET_N); +endmodule + + +(* blackbox *) +module XTLOSC ( + (* iopad_external_pin *) + input XTL, + output CLKOUT); + parameter [1:0] MODE = 2'h3; + parameter real FREQUENCY = 20.0; +endmodule + +(* blackbox *) +module RAM1K18 ( + input [13:0] A_ADDR, + input [2:0] A_BLK, + (* clkbuf_sink *) + input A_CLK, + input [17:0] A_DIN, + output [17:0] A_DOUT, + input [1:0] A_WEN, + input [2:0] A_WIDTH, + input A_WMODE, + input A_ARST_N, + input A_DOUT_LAT, + input A_DOUT_ARST_N, + (* clkbuf_sink *) + input A_DOUT_CLK, + input A_DOUT_EN, + input A_DOUT_SRST_N, + + input [13:0] B_ADDR, + input [2:0] B_BLK, + (* clkbuf_sink *) + input B_CLK, + input [17:0] B_DIN, + output [17:0] B_DOUT, + input [1:0] B_WEN, + input [2:0] B_WIDTH, + input B_WMODE, + input B_ARST_N, + input B_DOUT_LAT, + input B_DOUT_ARST_N, + (* clkbuf_sink *) + input B_DOUT_CLK, + input B_DOUT_EN, + input B_DOUT_SRST_N, + + input A_EN, + input B_EN, + input SII_LOCK, + output BUSY); +endmodule + +(* blackbox *) +module RAM64x18 ( + input [9:0] A_ADDR, + input [1:0] A_BLK, + input [2:0] A_WIDTH, + output [17:0] A_DOUT, + input A_DOUT_ARST_N, + (* clkbuf_sink *) + input A_DOUT_CLK, + input A_DOUT_EN, + input A_DOUT_LAT, + input A_DOUT_SRST_N, + (* clkbuf_sink *) + input A_ADDR_CLK, + input A_ADDR_EN, + input A_ADDR_LAT, + input A_ADDR_SRST_N, + input A_ADDR_ARST_N, + + input [9:0] B_ADDR, + input [1:0] B_BLK, + input [2:0] B_WIDTH, + output [17:0] B_DOUT, + input B_DOUT_ARST_N, + (* clkbuf_sink *) + input B_DOUT_CLK, + input B_DOUT_EN, + input B_DOUT_LAT, + input B_DOUT_SRST_N, + (* clkbuf_sink *) + input B_ADDR_CLK, + input B_ADDR_EN, + input B_ADDR_LAT, + input B_ADDR_SRST_N, + input B_ADDR_ARST_N, + + input [9:0] C_ADDR, + (* clkbuf_sink *) + input C_CLK, + input [17:0] C_DIN, + input C_WEN, + input [1:0] C_BLK, + input [2:0] C_WIDTH, + + input A_EN, + input B_EN, + input C_EN, + input SII_LOCK, + output BUSY); +endmodule diff --git a/resources/netlist/resources/kernel/share/simcells.v b/resources/netlist/resources/kernel/share/simcells.v new file mode 100644 index 0000000..ad1fdc8 --- /dev/null +++ b/resources/netlist/resources/kernel/share/simcells.v @@ -0,0 +1,3609 @@ +/* + * yosys -- Yosys Open SYnthesis Suite + * + * Copyright (C) 2012 Claire Xenia Wolf + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * --- + * + * The internal logic cell simulation library. + * + * This Verilog library contains simple simulation models for the internal + * logic cells ($_NOT_ , $_AND_ , ...) that are generated by the default technology + * mapper (see "techmap.v" in this directory) and expected by the "abc" pass. + * + */ + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_BUF_ (A, Y) +//- +//- A buffer. This cell type is always optimized away by the opt_clean pass. +//- +//- Truth table: A | Y +//- ---+--- +//- 0 | 0 +//- 1 | 1 +//- +module \$_BUF_ (A, Y); +input A; +output Y; +assign Y = A; +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_NOT_ (A, Y) +//- +//- An inverter gate. +//- +//- Truth table: A | Y +//- ---+--- +//- 0 | 1 +//- 1 | 0 +//- +module \$_NOT_ (A, Y); +input A; +output Y; +assign Y = ~A; +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_AND_ (A, B, Y) +//- +//- A 2-input AND gate. +//- +//- Truth table: A B | Y +//- -----+--- +//- 0 0 | 0 +//- 0 1 | 0 +//- 1 0 | 0 +//- 1 1 | 1 +//- +module \$_AND_ (A, B, Y); +input A, B; +output Y; +assign Y = A & B; +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_NAND_ (A, B, Y) +//- +//- A 2-input NAND gate. +//- +//- Truth table: A B | Y +//- -----+--- +//- 0 0 | 1 +//- 0 1 | 1 +//- 1 0 | 1 +//- 1 1 | 0 +//- +module \$_NAND_ (A, B, Y); +input A, B; +output Y; +assign Y = ~(A & B); +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_OR_ (A, B, Y) +//- +//- A 2-input OR gate. +//- +//- Truth table: A B | Y +//- -----+--- +//- 0 0 | 0 +//- 0 1 | 1 +//- 1 0 | 1 +//- 1 1 | 1 +//- +module \$_OR_ (A, B, Y); +input A, B; +output Y; +assign Y = A | B; +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_NOR_ (A, B, Y) +//- +//- A 2-input NOR gate. +//- +//- Truth table: A B | Y +//- -----+--- +//- 0 0 | 1 +//- 0 1 | 0 +//- 1 0 | 0 +//- 1 1 | 0 +//- +module \$_NOR_ (A, B, Y); +input A, B; +output Y; +assign Y = ~(A | B); +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_XOR_ (A, B, Y) +//- +//- A 2-input XOR gate. +//- +//- Truth table: A B | Y +//- -----+--- +//- 0 0 | 0 +//- 0 1 | 1 +//- 1 0 | 1 +//- 1 1 | 0 +//- +module \$_XOR_ (A, B, Y); +input A, B; +output Y; +assign Y = A ^ B; +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_XNOR_ (A, B, Y) +//- +//- A 2-input XNOR gate. +//- +//- Truth table: A B | Y +//- -----+--- +//- 0 0 | 1 +//- 0 1 | 0 +//- 1 0 | 0 +//- 1 1 | 1 +//- +module \$_XNOR_ (A, B, Y); +input A, B; +output Y; +assign Y = ~(A ^ B); +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_ANDNOT_ (A, B, Y) +//- +//- A 2-input AND-NOT gate. +//- +//- Truth table: A B | Y +//- -----+--- +//- 0 0 | 0 +//- 0 1 | 0 +//- 1 0 | 1 +//- 1 1 | 0 +//- +module \$_ANDNOT_ (A, B, Y); +input A, B; +output Y; +assign Y = A & (~B); +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_ORNOT_ (A, B, Y) +//- +//- A 2-input OR-NOT gate. +//- +//- Truth table: A B | Y +//- -----+--- +//- 0 0 | 1 +//- 0 1 | 0 +//- 1 0 | 1 +//- 1 1 | 1 +//- +module \$_ORNOT_ (A, B, Y); +input A, B; +output Y; +assign Y = A | (~B); +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_MUX_ (A, B, S, Y) +//- +//- A 2-input MUX gate. +//- +//- Truth table: A B S | Y +//- -------+--- +//- a - 0 | a +//- - b 1 | b +//- +module \$_MUX_ (A, B, S, Y); +input A, B, S; +output Y; +assign Y = S ? B : A; +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_NMUX_ (A, B, S, Y) +//- +//- A 2-input inverting MUX gate. +//- +//- Truth table: A B S | Y +//- -------+--- +//- 0 - 0 | 1 +//- 1 - 0 | 0 +//- - 0 1 | 1 +//- - 1 1 | 0 +//- +module \$_NMUX_ (A, B, S, Y); +input A, B, S; +output Y; +assign Y = S ? !B : !A; +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_MUX4_ (A, B, C, D, S, T, Y) +//- +//- A 4-input MUX gate. +//- +//- Truth table: A B C D S T | Y +//- -------------+--- +//- a - - - 0 0 | a +//- - b - - 1 0 | b +//- - - c - 0 1 | c +//- - - - d 1 1 | d +//- +module \$_MUX4_ (A, B, C, D, S, T, Y); +input A, B, C, D, S, T; +output Y; +assign Y = T ? (S ? D : C) : + (S ? B : A); +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_MUX8_ (A, B, C, D, E, F, G, H, S, T, U, Y) +//- +//- An 8-input MUX gate. +//- +//- Truth table: A B C D E F G H S T U | Y +//- -----------------------+--- +//- a - - - - - - - 0 0 0 | a +//- - b - - - - - - 1 0 0 | b +//- - - c - - - - - 0 1 0 | c +//- - - - d - - - - 1 1 0 | d +//- - - - - e - - - 0 0 1 | e +//- - - - - - f - - 1 0 1 | f +//- - - - - - - g - 0 1 1 | g +//- - - - - - - - h 1 1 1 | h +//- +module \$_MUX8_ (A, B, C, D, E, F, G, H, S, T, U, Y); +input A, B, C, D, E, F, G, H, S, T, U; +output Y; +assign Y = U ? T ? (S ? H : G) : + (S ? F : E) : + T ? (S ? D : C) : + (S ? B : A); +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_MUX16_ (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, S, T, U, V, Y) +//- +//- A 16-input MUX gate. +//- +//- Truth table: A B C D E F G H I J K L M N O P S T U V | Y +//- -----------------------------------------+--- +//- a - - - - - - - - - - - - - - - 0 0 0 0 | a +//- - b - - - - - - - - - - - - - - 1 0 0 0 | b +//- - - c - - - - - - - - - - - - - 0 1 0 0 | c +//- - - - d - - - - - - - - - - - - 1 1 0 0 | d +//- - - - - e - - - - - - - - - - - 0 0 1 0 | e +//- - - - - - f - - - - - - - - - - 1 0 1 0 | f +//- - - - - - - g - - - - - - - - - 0 1 1 0 | g +//- - - - - - - - h - - - - - - - - 1 1 1 0 | h +//- - - - - - - - - i - - - - - - - 0 0 0 1 | i +//- - - - - - - - - - j - - - - - - 1 0 0 1 | j +//- - - - - - - - - - - k - - - - - 0 1 0 1 | k +//- - - - - - - - - - - - l - - - - 1 1 0 1 | l +//- - - - - - - - - - - - - m - - - 0 0 1 1 | m +//- - - - - - - - - - - - - - n - - 1 0 1 1 | n +//- - - - - - - - - - - - - - - o - 0 1 1 1 | o +//- - - - - - - - - - - - - - - - p 1 1 1 1 | p +//- +module \$_MUX16_ (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, S, T, U, V, Y); +input A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, S, T, U, V; +output Y; +assign Y = V ? U ? T ? (S ? P : O) : + (S ? N : M) : + T ? (S ? L : K) : + (S ? J : I) : + U ? T ? (S ? H : G) : + (S ? F : E) : + T ? (S ? D : C) : + (S ? B : A); +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_AOI3_ (A, B, C, Y) +//- +//- A 3-input And-Or-Invert gate. +//- +//- Truth table: A B C | Y +//- -------+--- +//- 0 0 0 | 1 +//- 0 0 1 | 0 +//- 0 1 0 | 1 +//- 0 1 1 | 0 +//- 1 0 0 | 1 +//- 1 0 1 | 0 +//- 1 1 0 | 0 +//- 1 1 1 | 0 +//- +module \$_AOI3_ (A, B, C, Y); +input A, B, C; +output Y; +assign Y = ~((A & B) | C); +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_OAI3_ (A, B, C, Y) +//- +//- A 3-input Or-And-Invert gate. +//- +//- Truth table: A B C | Y +//- -------+--- +//- 0 0 0 | 1 +//- 0 0 1 | 1 +//- 0 1 0 | 1 +//- 0 1 1 | 0 +//- 1 0 0 | 1 +//- 1 0 1 | 0 +//- 1 1 0 | 1 +//- 1 1 1 | 0 +//- +module \$_OAI3_ (A, B, C, Y); +input A, B, C; +output Y; +assign Y = ~((A | B) & C); +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_AOI4_ (A, B, C, Y) +//- +//- A 4-input And-Or-Invert gate. +//- +//- Truth table: A B C D | Y +//- ---------+--- +//- 0 0 0 0 | 1 +//- 0 0 0 1 | 1 +//- 0 0 1 0 | 1 +//- 0 0 1 1 | 0 +//- 0 1 0 0 | 1 +//- 0 1 0 1 | 1 +//- 0 1 1 0 | 1 +//- 0 1 1 1 | 0 +//- 1 0 0 0 | 1 +//- 1 0 0 1 | 1 +//- 1 0 1 0 | 1 +//- 1 0 1 1 | 0 +//- 1 1 0 0 | 0 +//- 1 1 0 1 | 0 +//- 1 1 1 0 | 0 +//- 1 1 1 1 | 0 +//- +module \$_AOI4_ (A, B, C, D, Y); +input A, B, C, D; +output Y; +assign Y = ~((A & B) | (C & D)); +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_OAI4_ (A, B, C, Y) +//- +//- A 4-input Or-And-Invert gate. +//- +//- Truth table: A B C D | Y +//- ---------+--- +//- 0 0 0 0 | 1 +//- 0 0 0 1 | 1 +//- 0 0 1 0 | 1 +//- 0 0 1 1 | 1 +//- 0 1 0 0 | 1 +//- 0 1 0 1 | 0 +//- 0 1 1 0 | 0 +//- 0 1 1 1 | 0 +//- 1 0 0 0 | 1 +//- 1 0 0 1 | 0 +//- 1 0 1 0 | 0 +//- 1 0 1 1 | 0 +//- 1 1 0 0 | 1 +//- 1 1 0 1 | 0 +//- 1 1 1 0 | 0 +//- 1 1 1 1 | 0 +//- +module \$_OAI4_ (A, B, C, D, Y); +input A, B, C, D; +output Y; +assign Y = ~((A | B) & (C | D)); +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_TBUF_ (A, E, Y) +//- +//- A tri-state buffer. +//- +//- Truth table: A E | Y +//- -----+--- +//- a 1 | a +//- - 0 | z +//- +module \$_TBUF_ (A, E, Y); +input A, E; +output Y; +assign Y = E ? A : 1'bz; +endmodule + +// NOTE: the following cell types are autogenerated. DO NOT EDIT them manually, +// instead edit the templates in gen_ff_types.py and rerun it. + +// START AUTOGENERATED CELL TYPES + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_SR_NN_ (S, R, Q) +//- +//- A set-reset latch with negative polarity SET and negative polarity RESET. +//- +//- Truth table: S R | Q +//- -----+--- +//- - 0 | 0 +//- 0 - | 1 +//- - - | q +//- +module \$_SR_NN_ (S, R, Q); +input S, R; +output reg Q; +always @* begin + if (R == 0) + Q <= 0; + else if (S == 0) + Q <= 1; +end +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_SR_NP_ (S, R, Q) +//- +//- A set-reset latch with negative polarity SET and positive polarity RESET. +//- +//- Truth table: S R | Q +//- -----+--- +//- - 1 | 0 +//- 0 - | 1 +//- - - | q +//- +module \$_SR_NP_ (S, R, Q); +input S, R; +output reg Q; +always @* begin + if (R == 1) + Q <= 0; + else if (S == 0) + Q <= 1; +end +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_SR_PN_ (S, R, Q) +//- +//- A set-reset latch with positive polarity SET and negative polarity RESET. +//- +//- Truth table: S R | Q +//- -----+--- +//- - 0 | 0 +//- 1 - | 1 +//- - - | q +//- +module \$_SR_PN_ (S, R, Q); +input S, R; +output reg Q; +always @* begin + if (R == 0) + Q <= 0; + else if (S == 1) + Q <= 1; +end +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_SR_PP_ (S, R, Q) +//- +//- A set-reset latch with positive polarity SET and positive polarity RESET. +//- +//- Truth table: S R | Q +//- -----+--- +//- - 1 | 0 +//- 1 - | 1 +//- - - | q +//- +module \$_SR_PP_ (S, R, Q); +input S, R; +output reg Q; +always @* begin + if (R == 1) + Q <= 0; + else if (S == 1) + Q <= 1; +end +endmodule + +`ifdef SIMCELLS_FF +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_FF_ (D, Q) +//- +//- A D-type flip-flop that is clocked from the implicit global clock. (This cell +//- type is usually only used in netlists for formal verification.) +//- +module \$_FF_ (D, Q); +input D; +output reg Q; +always @($global_clock) begin + Q <= D; +end +endmodule +`endif + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_DFF_N_ (D, C, Q) +//- +//- A negative edge D-type flip-flop. +//- +//- Truth table: D C | Q +//- -----+--- +//- d \ | d +//- - - | q +//- +module \$_DFF_N_ (D, C, Q); +input D, C; +output reg Q; +always @(negedge C) begin + Q <= D; +end +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_DFF_P_ (D, C, Q) +//- +//- A positive edge D-type flip-flop. +//- +//- Truth table: D C | Q +//- -----+--- +//- d / | d +//- - - | q +//- +module \$_DFF_P_ (D, C, Q); +input D, C; +output reg Q; +always @(posedge C) begin + Q <= D; +end +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_DFFE_NN_ (D, C, E, Q) +//- +//- A negative edge D-type flip-flop with negative polarity enable. +//- +//- Truth table: D C E | Q +//- -------+--- +//- d \ 0 | d +//- - - - | q +//- +module \$_DFFE_NN_ (D, C, E, Q); +input D, C, E; +output reg Q; +always @(negedge C) begin + if (!E) Q <= D; +end +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_DFFE_NP_ (D, C, E, Q) +//- +//- A negative edge D-type flip-flop with positive polarity enable. +//- +//- Truth table: D C E | Q +//- -------+--- +//- d \ 1 | d +//- - - - | q +//- +module \$_DFFE_NP_ (D, C, E, Q); +input D, C, E; +output reg Q; +always @(negedge C) begin + if (E) Q <= D; +end +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_DFFE_PN_ (D, C, E, Q) +//- +//- A positive edge D-type flip-flop with negative polarity enable. +//- +//- Truth table: D C E | Q +//- -------+--- +//- d / 0 | d +//- - - - | q +//- +module \$_DFFE_PN_ (D, C, E, Q); +input D, C, E; +output reg Q; +always @(posedge C) begin + if (!E) Q <= D; +end +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_DFFE_PP_ (D, C, E, Q) +//- +//- A positive edge D-type flip-flop with positive polarity enable. +//- +//- Truth table: D C E | Q +//- -------+--- +//- d / 1 | d +//- - - - | q +//- +module \$_DFFE_PP_ (D, C, E, Q); +input D, C, E; +output reg Q; +always @(posedge C) begin + if (E) Q <= D; +end +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_DFF_NN0_ (D, C, R, Q) +//- +//- A negative edge D-type flip-flop with negative polarity reset. +//- +//- Truth table: D C R | Q +//- -------+--- +//- - - 0 | 0 +//- d \ - | d +//- - - - | q +//- +module \$_DFF_NN0_ (D, C, R, Q); +input D, C, R; +output reg Q; +always @(negedge C or negedge R) begin + if (R == 0) + Q <= 0; + else + Q <= D; +end +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_DFF_NN1_ (D, C, R, Q) +//- +//- A negative edge D-type flip-flop with negative polarity set. +//- +//- Truth table: D C R | Q +//- -------+--- +//- - - 0 | 1 +//- d \ - | d +//- - - - | q +//- +module \$_DFF_NN1_ (D, C, R, Q); +input D, C, R; +output reg Q; +always @(negedge C or negedge R) begin + if (R == 0) + Q <= 1; + else + Q <= D; +end +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_DFF_NP0_ (D, C, R, Q) +//- +//- A negative edge D-type flip-flop with positive polarity reset. +//- +//- Truth table: D C R | Q +//- -------+--- +//- - - 1 | 0 +//- d \ - | d +//- - - - | q +//- +module \$_DFF_NP0_ (D, C, R, Q); +input D, C, R; +output reg Q; +always @(negedge C or posedge R) begin + if (R == 1) + Q <= 0; + else + Q <= D; +end +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_DFF_NP1_ (D, C, R, Q) +//- +//- A negative edge D-type flip-flop with positive polarity set. +//- +//- Truth table: D C R | Q +//- -------+--- +//- - - 1 | 1 +//- d \ - | d +//- - - - | q +//- +module \$_DFF_NP1_ (D, C, R, Q); +input D, C, R; +output reg Q; +always @(negedge C or posedge R) begin + if (R == 1) + Q <= 1; + else + Q <= D; +end +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_DFF_PN0_ (D, C, R, Q) +//- +//- A positive edge D-type flip-flop with negative polarity reset. +//- +//- Truth table: D C R | Q +//- -------+--- +//- - - 0 | 0 +//- d / - | d +//- - - - | q +//- +module \$_DFF_PN0_ (D, C, R, Q); +input D, C, R; +output reg Q; +always @(posedge C or negedge R) begin + if (R == 0) + Q <= 0; + else + Q <= D; +end +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_DFF_PN1_ (D, C, R, Q) +//- +//- A positive edge D-type flip-flop with negative polarity set. +//- +//- Truth table: D C R | Q +//- -------+--- +//- - - 0 | 1 +//- d / - | d +//- - - - | q +//- +module \$_DFF_PN1_ (D, C, R, Q); +input D, C, R; +output reg Q; +always @(posedge C or negedge R) begin + if (R == 0) + Q <= 1; + else + Q <= D; +end +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_DFF_PP0_ (D, C, R, Q) +//- +//- A positive edge D-type flip-flop with positive polarity reset. +//- +//- Truth table: D C R | Q +//- -------+--- +//- - - 1 | 0 +//- d / - | d +//- - - - | q +//- +module \$_DFF_PP0_ (D, C, R, Q); +input D, C, R; +output reg Q; +always @(posedge C or posedge R) begin + if (R == 1) + Q <= 0; + else + Q <= D; +end +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_DFF_PP1_ (D, C, R, Q) +//- +//- A positive edge D-type flip-flop with positive polarity set. +//- +//- Truth table: D C R | Q +//- -------+--- +//- - - 1 | 1 +//- d / - | d +//- - - - | q +//- +module \$_DFF_PP1_ (D, C, R, Q); +input D, C, R; +output reg Q; +always @(posedge C or posedge R) begin + if (R == 1) + Q <= 1; + else + Q <= D; +end +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_DFFE_NN0N_ (D, C, R, E, Q) +//- +//- A negative edge D-type flip-flop with negative polarity reset and negative +//- polarity clock enable. +//- +//- Truth table: D C R E | Q +//- ---------+--- +//- - - 0 - | 0 +//- d \ - 0 | d +//- - - - - | q +//- +module \$_DFFE_NN0N_ (D, C, R, E, Q); +input D, C, R, E; +output reg Q; +always @(negedge C or negedge R) begin + if (R == 0) + Q <= 0; + else if (E == 0) + Q <= D; +end +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_DFFE_NN0P_ (D, C, R, E, Q) +//- +//- A negative edge D-type flip-flop with negative polarity reset and positive +//- polarity clock enable. +//- +//- Truth table: D C R E | Q +//- ---------+--- +//- - - 0 - | 0 +//- d \ - 1 | d +//- - - - - | q +//- +module \$_DFFE_NN0P_ (D, C, R, E, Q); +input D, C, R, E; +output reg Q; +always @(negedge C or negedge R) begin + if (R == 0) + Q <= 0; + else if (E == 1) + Q <= D; +end +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_DFFE_NN1N_ (D, C, R, E, Q) +//- +//- A negative edge D-type flip-flop with negative polarity set and negative +//- polarity clock enable. +//- +//- Truth table: D C R E | Q +//- ---------+--- +//- - - 0 - | 1 +//- d \ - 0 | d +//- - - - - | q +//- +module \$_DFFE_NN1N_ (D, C, R, E, Q); +input D, C, R, E; +output reg Q; +always @(negedge C or negedge R) begin + if (R == 0) + Q <= 1; + else if (E == 0) + Q <= D; +end +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_DFFE_NN1P_ (D, C, R, E, Q) +//- +//- A negative edge D-type flip-flop with negative polarity set and positive +//- polarity clock enable. +//- +//- Truth table: D C R E | Q +//- ---------+--- +//- - - 0 - | 1 +//- d \ - 1 | d +//- - - - - | q +//- +module \$_DFFE_NN1P_ (D, C, R, E, Q); +input D, C, R, E; +output reg Q; +always @(negedge C or negedge R) begin + if (R == 0) + Q <= 1; + else if (E == 1) + Q <= D; +end +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_DFFE_NP0N_ (D, C, R, E, Q) +//- +//- A negative edge D-type flip-flop with positive polarity reset and negative +//- polarity clock enable. +//- +//- Truth table: D C R E | Q +//- ---------+--- +//- - - 1 - | 0 +//- d \ - 0 | d +//- - - - - | q +//- +module \$_DFFE_NP0N_ (D, C, R, E, Q); +input D, C, R, E; +output reg Q; +always @(negedge C or posedge R) begin + if (R == 1) + Q <= 0; + else if (E == 0) + Q <= D; +end +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_DFFE_NP0P_ (D, C, R, E, Q) +//- +//- A negative edge D-type flip-flop with positive polarity reset and positive +//- polarity clock enable. +//- +//- Truth table: D C R E | Q +//- ---------+--- +//- - - 1 - | 0 +//- d \ - 1 | d +//- - - - - | q +//- +module \$_DFFE_NP0P_ (D, C, R, E, Q); +input D, C, R, E; +output reg Q; +always @(negedge C or posedge R) begin + if (R == 1) + Q <= 0; + else if (E == 1) + Q <= D; +end +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_DFFE_NP1N_ (D, C, R, E, Q) +//- +//- A negative edge D-type flip-flop with positive polarity set and negative +//- polarity clock enable. +//- +//- Truth table: D C R E | Q +//- ---------+--- +//- - - 1 - | 1 +//- d \ - 0 | d +//- - - - - | q +//- +module \$_DFFE_NP1N_ (D, C, R, E, Q); +input D, C, R, E; +output reg Q; +always @(negedge C or posedge R) begin + if (R == 1) + Q <= 1; + else if (E == 0) + Q <= D; +end +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_DFFE_NP1P_ (D, C, R, E, Q) +//- +//- A negative edge D-type flip-flop with positive polarity set and positive +//- polarity clock enable. +//- +//- Truth table: D C R E | Q +//- ---------+--- +//- - - 1 - | 1 +//- d \ - 1 | d +//- - - - - | q +//- +module \$_DFFE_NP1P_ (D, C, R, E, Q); +input D, C, R, E; +output reg Q; +always @(negedge C or posedge R) begin + if (R == 1) + Q <= 1; + else if (E == 1) + Q <= D; +end +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_DFFE_PN0N_ (D, C, R, E, Q) +//- +//- A positive edge D-type flip-flop with negative polarity reset and negative +//- polarity clock enable. +//- +//- Truth table: D C R E | Q +//- ---------+--- +//- - - 0 - | 0 +//- d / - 0 | d +//- - - - - | q +//- +module \$_DFFE_PN0N_ (D, C, R, E, Q); +input D, C, R, E; +output reg Q; +always @(posedge C or negedge R) begin + if (R == 0) + Q <= 0; + else if (E == 0) + Q <= D; +end +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_DFFE_PN0P_ (D, C, R, E, Q) +//- +//- A positive edge D-type flip-flop with negative polarity reset and positive +//- polarity clock enable. +//- +//- Truth table: D C R E | Q +//- ---------+--- +//- - - 0 - | 0 +//- d / - 1 | d +//- - - - - | q +//- +module \$_DFFE_PN0P_ (D, C, R, E, Q); +input D, C, R, E; +output reg Q; +always @(posedge C or negedge R) begin + if (R == 0) + Q <= 0; + else if (E == 1) + Q <= D; +end +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_DFFE_PN1N_ (D, C, R, E, Q) +//- +//- A positive edge D-type flip-flop with negative polarity set and negative +//- polarity clock enable. +//- +//- Truth table: D C R E | Q +//- ---------+--- +//- - - 0 - | 1 +//- d / - 0 | d +//- - - - - | q +//- +module \$_DFFE_PN1N_ (D, C, R, E, Q); +input D, C, R, E; +output reg Q; +always @(posedge C or negedge R) begin + if (R == 0) + Q <= 1; + else if (E == 0) + Q <= D; +end +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_DFFE_PN1P_ (D, C, R, E, Q) +//- +//- A positive edge D-type flip-flop with negative polarity set and positive +//- polarity clock enable. +//- +//- Truth table: D C R E | Q +//- ---------+--- +//- - - 0 - | 1 +//- d / - 1 | d +//- - - - - | q +//- +module \$_DFFE_PN1P_ (D, C, R, E, Q); +input D, C, R, E; +output reg Q; +always @(posedge C or negedge R) begin + if (R == 0) + Q <= 1; + else if (E == 1) + Q <= D; +end +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_DFFE_PP0N_ (D, C, R, E, Q) +//- +//- A positive edge D-type flip-flop with positive polarity reset and negative +//- polarity clock enable. +//- +//- Truth table: D C R E | Q +//- ---------+--- +//- - - 1 - | 0 +//- d / - 0 | d +//- - - - - | q +//- +module \$_DFFE_PP0N_ (D, C, R, E, Q); +input D, C, R, E; +output reg Q; +always @(posedge C or posedge R) begin + if (R == 1) + Q <= 0; + else if (E == 0) + Q <= D; +end +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_DFFE_PP0P_ (D, C, R, E, Q) +//- +//- A positive edge D-type flip-flop with positive polarity reset and positive +//- polarity clock enable. +//- +//- Truth table: D C R E | Q +//- ---------+--- +//- - - 1 - | 0 +//- d / - 1 | d +//- - - - - | q +//- +module \$_DFFE_PP0P_ (D, C, R, E, Q); +input D, C, R, E; +output reg Q; +always @(posedge C or posedge R) begin + if (R == 1) + Q <= 0; + else if (E == 1) + Q <= D; +end +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_DFFE_PP1N_ (D, C, R, E, Q) +//- +//- A positive edge D-type flip-flop with positive polarity set and negative +//- polarity clock enable. +//- +//- Truth table: D C R E | Q +//- ---------+--- +//- - - 1 - | 1 +//- d / - 0 | d +//- - - - - | q +//- +module \$_DFFE_PP1N_ (D, C, R, E, Q); +input D, C, R, E; +output reg Q; +always @(posedge C or posedge R) begin + if (R == 1) + Q <= 1; + else if (E == 0) + Q <= D; +end +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_DFFE_PP1P_ (D, C, R, E, Q) +//- +//- A positive edge D-type flip-flop with positive polarity set and positive +//- polarity clock enable. +//- +//- Truth table: D C R E | Q +//- ---------+--- +//- - - 1 - | 1 +//- d / - 1 | d +//- - - - - | q +//- +module \$_DFFE_PP1P_ (D, C, R, E, Q); +input D, C, R, E; +output reg Q; +always @(posedge C or posedge R) begin + if (R == 1) + Q <= 1; + else if (E == 1) + Q <= D; +end +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_ALDFF_NN_ (D, C, L, AD, Q) +//- +//- A negative edge D-type flip-flop with negative polarity async load. +//- +//- Truth table: D C L AD | Q +//- ----------+--- +//- - - 0 a | a +//- d \ - - | d +//- - - - - | q +//- +module \$_ALDFF_NN_ (D, C, L, AD, Q); +input D, C, L, AD; +output reg Q; +always @(negedge C or negedge L) begin + if (L == 0) + Q <= AD; + else + Q <= D; +end +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_ALDFF_NP_ (D, C, L, AD, Q) +//- +//- A negative edge D-type flip-flop with positive polarity async load. +//- +//- Truth table: D C L AD | Q +//- ----------+--- +//- - - 1 a | a +//- d \ - - | d +//- - - - - | q +//- +module \$_ALDFF_NP_ (D, C, L, AD, Q); +input D, C, L, AD; +output reg Q; +always @(negedge C or posedge L) begin + if (L == 1) + Q <= AD; + else + Q <= D; +end +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_ALDFF_PN_ (D, C, L, AD, Q) +//- +//- A positive edge D-type flip-flop with negative polarity async load. +//- +//- Truth table: D C L AD | Q +//- ----------+--- +//- - - 0 a | a +//- d / - - | d +//- - - - - | q +//- +module \$_ALDFF_PN_ (D, C, L, AD, Q); +input D, C, L, AD; +output reg Q; +always @(posedge C or negedge L) begin + if (L == 0) + Q <= AD; + else + Q <= D; +end +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_ALDFF_PP_ (D, C, L, AD, Q) +//- +//- A positive edge D-type flip-flop with positive polarity async load. +//- +//- Truth table: D C L AD | Q +//- ----------+--- +//- - - 1 a | a +//- d / - - | d +//- - - - - | q +//- +module \$_ALDFF_PP_ (D, C, L, AD, Q); +input D, C, L, AD; +output reg Q; +always @(posedge C or posedge L) begin + if (L == 1) + Q <= AD; + else + Q <= D; +end +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_ALDFFE_NNN_ (D, C, L, AD, E, Q) +//- +//- A negative edge D-type flip-flop with negative polarity async load and negative +//- polarity clock enable. +//- +//- Truth table: D C L AD E | Q +//- ------------+--- +//- - - 0 a - | a +//- d \ - - 0 | d +//- - - - - - | q +//- +module \$_ALDFFE_NNN_ (D, C, L, AD, E, Q); +input D, C, L, AD, E; +output reg Q; +always @(negedge C or negedge L) begin + if (L == 0) + Q <= AD; + else if (E == 0) + Q <= D; +end +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_ALDFFE_NNP_ (D, C, L, AD, E, Q) +//- +//- A negative edge D-type flip-flop with negative polarity async load and positive +//- polarity clock enable. +//- +//- Truth table: D C L AD E | Q +//- ------------+--- +//- - - 0 a - | a +//- d \ - - 1 | d +//- - - - - - | q +//- +module \$_ALDFFE_NNP_ (D, C, L, AD, E, Q); +input D, C, L, AD, E; +output reg Q; +always @(negedge C or negedge L) begin + if (L == 0) + Q <= AD; + else if (E == 1) + Q <= D; +end +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_ALDFFE_NPN_ (D, C, L, AD, E, Q) +//- +//- A negative edge D-type flip-flop with positive polarity async load and negative +//- polarity clock enable. +//- +//- Truth table: D C L AD E | Q +//- ------------+--- +//- - - 1 a - | a +//- d \ - - 0 | d +//- - - - - - | q +//- +module \$_ALDFFE_NPN_ (D, C, L, AD, E, Q); +input D, C, L, AD, E; +output reg Q; +always @(negedge C or posedge L) begin + if (L == 1) + Q <= AD; + else if (E == 0) + Q <= D; +end +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_ALDFFE_NPP_ (D, C, L, AD, E, Q) +//- +//- A negative edge D-type flip-flop with positive polarity async load and positive +//- polarity clock enable. +//- +//- Truth table: D C L AD E | Q +//- ------------+--- +//- - - 1 a - | a +//- d \ - - 1 | d +//- - - - - - | q +//- +module \$_ALDFFE_NPP_ (D, C, L, AD, E, Q); +input D, C, L, AD, E; +output reg Q; +always @(negedge C or posedge L) begin + if (L == 1) + Q <= AD; + else if (E == 1) + Q <= D; +end +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_ALDFFE_PNN_ (D, C, L, AD, E, Q) +//- +//- A positive edge D-type flip-flop with negative polarity async load and negative +//- polarity clock enable. +//- +//- Truth table: D C L AD E | Q +//- ------------+--- +//- - - 0 a - | a +//- d / - - 0 | d +//- - - - - - | q +//- +module \$_ALDFFE_PNN_ (D, C, L, AD, E, Q); +input D, C, L, AD, E; +output reg Q; +always @(posedge C or negedge L) begin + if (L == 0) + Q <= AD; + else if (E == 0) + Q <= D; +end +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_ALDFFE_PNP_ (D, C, L, AD, E, Q) +//- +//- A positive edge D-type flip-flop with negative polarity async load and positive +//- polarity clock enable. +//- +//- Truth table: D C L AD E | Q +//- ------------+--- +//- - - 0 a - | a +//- d / - - 1 | d +//- - - - - - | q +//- +module \$_ALDFFE_PNP_ (D, C, L, AD, E, Q); +input D, C, L, AD, E; +output reg Q; +always @(posedge C or negedge L) begin + if (L == 0) + Q <= AD; + else if (E == 1) + Q <= D; +end +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_ALDFFE_PPN_ (D, C, L, AD, E, Q) +//- +//- A positive edge D-type flip-flop with positive polarity async load and negative +//- polarity clock enable. +//- +//- Truth table: D C L AD E | Q +//- ------------+--- +//- - - 1 a - | a +//- d / - - 0 | d +//- - - - - - | q +//- +module \$_ALDFFE_PPN_ (D, C, L, AD, E, Q); +input D, C, L, AD, E; +output reg Q; +always @(posedge C or posedge L) begin + if (L == 1) + Q <= AD; + else if (E == 0) + Q <= D; +end +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_ALDFFE_PPP_ (D, C, L, AD, E, Q) +//- +//- A positive edge D-type flip-flop with positive polarity async load and positive +//- polarity clock enable. +//- +//- Truth table: D C L AD E | Q +//- ------------+--- +//- - - 1 a - | a +//- d / - - 1 | d +//- - - - - - | q +//- +module \$_ALDFFE_PPP_ (D, C, L, AD, E, Q); +input D, C, L, AD, E; +output reg Q; +always @(posedge C or posedge L) begin + if (L == 1) + Q <= AD; + else if (E == 1) + Q <= D; +end +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_DFFSR_NNN_ (C, S, R, D, Q) +//- +//- A negative edge D-type flip-flop with negative polarity set and negative +//- polarity reset. +//- +//- Truth table: C S R D | Q +//- ---------+--- +//- - - 0 - | 0 +//- - 0 - - | 1 +//- \ - - d | d +//- - - - - | q +//- +module \$_DFFSR_NNN_ (C, S, R, D, Q); +input C, S, R, D; +output reg Q; +always @(negedge C, negedge S, negedge R) begin + if (R == 0) + Q <= 0; + else if (S == 0) + Q <= 1; + else + Q <= D; +end +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_DFFSR_NNP_ (C, S, R, D, Q) +//- +//- A negative edge D-type flip-flop with negative polarity set and positive +//- polarity reset. +//- +//- Truth table: C S R D | Q +//- ---------+--- +//- - - 1 - | 0 +//- - 0 - - | 1 +//- \ - - d | d +//- - - - - | q +//- +module \$_DFFSR_NNP_ (C, S, R, D, Q); +input C, S, R, D; +output reg Q; +always @(negedge C, negedge S, posedge R) begin + if (R == 1) + Q <= 0; + else if (S == 0) + Q <= 1; + else + Q <= D; +end +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_DFFSR_NPN_ (C, S, R, D, Q) +//- +//- A negative edge D-type flip-flop with positive polarity set and negative +//- polarity reset. +//- +//- Truth table: C S R D | Q +//- ---------+--- +//- - - 0 - | 0 +//- - 1 - - | 1 +//- \ - - d | d +//- - - - - | q +//- +module \$_DFFSR_NPN_ (C, S, R, D, Q); +input C, S, R, D; +output reg Q; +always @(negedge C, posedge S, negedge R) begin + if (R == 0) + Q <= 0; + else if (S == 1) + Q <= 1; + else + Q <= D; +end +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_DFFSR_NPP_ (C, S, R, D, Q) +//- +//- A negative edge D-type flip-flop with positive polarity set and positive +//- polarity reset. +//- +//- Truth table: C S R D | Q +//- ---------+--- +//- - - 1 - | 0 +//- - 1 - - | 1 +//- \ - - d | d +//- - - - - | q +//- +module \$_DFFSR_NPP_ (C, S, R, D, Q); +input C, S, R, D; +output reg Q; +always @(negedge C, posedge S, posedge R) begin + if (R == 1) + Q <= 0; + else if (S == 1) + Q <= 1; + else + Q <= D; +end +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_DFFSR_PNN_ (C, S, R, D, Q) +//- +//- A positive edge D-type flip-flop with negative polarity set and negative +//- polarity reset. +//- +//- Truth table: C S R D | Q +//- ---------+--- +//- - - 0 - | 0 +//- - 0 - - | 1 +//- / - - d | d +//- - - - - | q +//- +module \$_DFFSR_PNN_ (C, S, R, D, Q); +input C, S, R, D; +output reg Q; +always @(posedge C, negedge S, negedge R) begin + if (R == 0) + Q <= 0; + else if (S == 0) + Q <= 1; + else + Q <= D; +end +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_DFFSR_PNP_ (C, S, R, D, Q) +//- +//- A positive edge D-type flip-flop with negative polarity set and positive +//- polarity reset. +//- +//- Truth table: C S R D | Q +//- ---------+--- +//- - - 1 - | 0 +//- - 0 - - | 1 +//- / - - d | d +//- - - - - | q +//- +module \$_DFFSR_PNP_ (C, S, R, D, Q); +input C, S, R, D; +output reg Q; +always @(posedge C, negedge S, posedge R) begin + if (R == 1) + Q <= 0; + else if (S == 0) + Q <= 1; + else + Q <= D; +end +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_DFFSR_PPN_ (C, S, R, D, Q) +//- +//- A positive edge D-type flip-flop with positive polarity set and negative +//- polarity reset. +//- +//- Truth table: C S R D | Q +//- ---------+--- +//- - - 0 - | 0 +//- - 1 - - | 1 +//- / - - d | d +//- - - - - | q +//- +module \$_DFFSR_PPN_ (C, S, R, D, Q); +input C, S, R, D; +output reg Q; +always @(posedge C, posedge S, negedge R) begin + if (R == 0) + Q <= 0; + else if (S == 1) + Q <= 1; + else + Q <= D; +end +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_DFFSR_PPP_ (C, S, R, D, Q) +//- +//- A positive edge D-type flip-flop with positive polarity set and positive +//- polarity reset. +//- +//- Truth table: C S R D | Q +//- ---------+--- +//- - - 1 - | 0 +//- - 1 - - | 1 +//- / - - d | d +//- - - - - | q +//- +module \$_DFFSR_PPP_ (C, S, R, D, Q); +input C, S, R, D; +output reg Q; +always @(posedge C, posedge S, posedge R) begin + if (R == 1) + Q <= 0; + else if (S == 1) + Q <= 1; + else + Q <= D; +end +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_DFFSRE_NNNN_ (C, S, R, E, D, Q) +//- +//- A negative edge D-type flip-flop with negative polarity set, negative +//- polarity reset and negative polarity clock enable. +//- +//- Truth table: C S R E D | Q +//- -----------+--- +//- - - 0 - - | 0 +//- - 0 - - - | 1 +//- \ - - 0 d | d +//- - - - - - | q +//- +module \$_DFFSRE_NNNN_ (C, S, R, E, D, Q); +input C, S, R, E, D; +output reg Q; +always @(negedge C, negedge S, negedge R) begin + if (R == 0) + Q <= 0; + else if (S == 0) + Q <= 1; + else if (E == 0) + Q <= D; +end +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_DFFSRE_NNNP_ (C, S, R, E, D, Q) +//- +//- A negative edge D-type flip-flop with negative polarity set, negative +//- polarity reset and positive polarity clock enable. +//- +//- Truth table: C S R E D | Q +//- -----------+--- +//- - - 0 - - | 0 +//- - 0 - - - | 1 +//- \ - - 1 d | d +//- - - - - - | q +//- +module \$_DFFSRE_NNNP_ (C, S, R, E, D, Q); +input C, S, R, E, D; +output reg Q; +always @(negedge C, negedge S, negedge R) begin + if (R == 0) + Q <= 0; + else if (S == 0) + Q <= 1; + else if (E == 1) + Q <= D; +end +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_DFFSRE_NNPN_ (C, S, R, E, D, Q) +//- +//- A negative edge D-type flip-flop with negative polarity set, positive +//- polarity reset and negative polarity clock enable. +//- +//- Truth table: C S R E D | Q +//- -----------+--- +//- - - 1 - - | 0 +//- - 0 - - - | 1 +//- \ - - 0 d | d +//- - - - - - | q +//- +module \$_DFFSRE_NNPN_ (C, S, R, E, D, Q); +input C, S, R, E, D; +output reg Q; +always @(negedge C, negedge S, posedge R) begin + if (R == 1) + Q <= 0; + else if (S == 0) + Q <= 1; + else if (E == 0) + Q <= D; +end +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_DFFSRE_NNPP_ (C, S, R, E, D, Q) +//- +//- A negative edge D-type flip-flop with negative polarity set, positive +//- polarity reset and positive polarity clock enable. +//- +//- Truth table: C S R E D | Q +//- -----------+--- +//- - - 1 - - | 0 +//- - 0 - - - | 1 +//- \ - - 1 d | d +//- - - - - - | q +//- +module \$_DFFSRE_NNPP_ (C, S, R, E, D, Q); +input C, S, R, E, D; +output reg Q; +always @(negedge C, negedge S, posedge R) begin + if (R == 1) + Q <= 0; + else if (S == 0) + Q <= 1; + else if (E == 1) + Q <= D; +end +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_DFFSRE_NPNN_ (C, S, R, E, D, Q) +//- +//- A negative edge D-type flip-flop with positive polarity set, negative +//- polarity reset and negative polarity clock enable. +//- +//- Truth table: C S R E D | Q +//- -----------+--- +//- - - 0 - - | 0 +//- - 1 - - - | 1 +//- \ - - 0 d | d +//- - - - - - | q +//- +module \$_DFFSRE_NPNN_ (C, S, R, E, D, Q); +input C, S, R, E, D; +output reg Q; +always @(negedge C, posedge S, negedge R) begin + if (R == 0) + Q <= 0; + else if (S == 1) + Q <= 1; + else if (E == 0) + Q <= D; +end +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_DFFSRE_NPNP_ (C, S, R, E, D, Q) +//- +//- A negative edge D-type flip-flop with positive polarity set, negative +//- polarity reset and positive polarity clock enable. +//- +//- Truth table: C S R E D | Q +//- -----------+--- +//- - - 0 - - | 0 +//- - 1 - - - | 1 +//- \ - - 1 d | d +//- - - - - - | q +//- +module \$_DFFSRE_NPNP_ (C, S, R, E, D, Q); +input C, S, R, E, D; +output reg Q; +always @(negedge C, posedge S, negedge R) begin + if (R == 0) + Q <= 0; + else if (S == 1) + Q <= 1; + else if (E == 1) + Q <= D; +end +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_DFFSRE_NPPN_ (C, S, R, E, D, Q) +//- +//- A negative edge D-type flip-flop with positive polarity set, positive +//- polarity reset and negative polarity clock enable. +//- +//- Truth table: C S R E D | Q +//- -----------+--- +//- - - 1 - - | 0 +//- - 1 - - - | 1 +//- \ - - 0 d | d +//- - - - - - | q +//- +module \$_DFFSRE_NPPN_ (C, S, R, E, D, Q); +input C, S, R, E, D; +output reg Q; +always @(negedge C, posedge S, posedge R) begin + if (R == 1) + Q <= 0; + else if (S == 1) + Q <= 1; + else if (E == 0) + Q <= D; +end +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_DFFSRE_NPPP_ (C, S, R, E, D, Q) +//- +//- A negative edge D-type flip-flop with positive polarity set, positive +//- polarity reset and positive polarity clock enable. +//- +//- Truth table: C S R E D | Q +//- -----------+--- +//- - - 1 - - | 0 +//- - 1 - - - | 1 +//- \ - - 1 d | d +//- - - - - - | q +//- +module \$_DFFSRE_NPPP_ (C, S, R, E, D, Q); +input C, S, R, E, D; +output reg Q; +always @(negedge C, posedge S, posedge R) begin + if (R == 1) + Q <= 0; + else if (S == 1) + Q <= 1; + else if (E == 1) + Q <= D; +end +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_DFFSRE_PNNN_ (C, S, R, E, D, Q) +//- +//- A positive edge D-type flip-flop with negative polarity set, negative +//- polarity reset and negative polarity clock enable. +//- +//- Truth table: C S R E D | Q +//- -----------+--- +//- - - 0 - - | 0 +//- - 0 - - - | 1 +//- / - - 0 d | d +//- - - - - - | q +//- +module \$_DFFSRE_PNNN_ (C, S, R, E, D, Q); +input C, S, R, E, D; +output reg Q; +always @(posedge C, negedge S, negedge R) begin + if (R == 0) + Q <= 0; + else if (S == 0) + Q <= 1; + else if (E == 0) + Q <= D; +end +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_DFFSRE_PNNP_ (C, S, R, E, D, Q) +//- +//- A positive edge D-type flip-flop with negative polarity set, negative +//- polarity reset and positive polarity clock enable. +//- +//- Truth table: C S R E D | Q +//- -----------+--- +//- - - 0 - - | 0 +//- - 0 - - - | 1 +//- / - - 1 d | d +//- - - - - - | q +//- +module \$_DFFSRE_PNNP_ (C, S, R, E, D, Q); +input C, S, R, E, D; +output reg Q; +always @(posedge C, negedge S, negedge R) begin + if (R == 0) + Q <= 0; + else if (S == 0) + Q <= 1; + else if (E == 1) + Q <= D; +end +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_DFFSRE_PNPN_ (C, S, R, E, D, Q) +//- +//- A positive edge D-type flip-flop with negative polarity set, positive +//- polarity reset and negative polarity clock enable. +//- +//- Truth table: C S R E D | Q +//- -----------+--- +//- - - 1 - - | 0 +//- - 0 - - - | 1 +//- / - - 0 d | d +//- - - - - - | q +//- +module \$_DFFSRE_PNPN_ (C, S, R, E, D, Q); +input C, S, R, E, D; +output reg Q; +always @(posedge C, negedge S, posedge R) begin + if (R == 1) + Q <= 0; + else if (S == 0) + Q <= 1; + else if (E == 0) + Q <= D; +end +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_DFFSRE_PNPP_ (C, S, R, E, D, Q) +//- +//- A positive edge D-type flip-flop with negative polarity set, positive +//- polarity reset and positive polarity clock enable. +//- +//- Truth table: C S R E D | Q +//- -----------+--- +//- - - 1 - - | 0 +//- - 0 - - - | 1 +//- / - - 1 d | d +//- - - - - - | q +//- +module \$_DFFSRE_PNPP_ (C, S, R, E, D, Q); +input C, S, R, E, D; +output reg Q; +always @(posedge C, negedge S, posedge R) begin + if (R == 1) + Q <= 0; + else if (S == 0) + Q <= 1; + else if (E == 1) + Q <= D; +end +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_DFFSRE_PPNN_ (C, S, R, E, D, Q) +//- +//- A positive edge D-type flip-flop with positive polarity set, negative +//- polarity reset and negative polarity clock enable. +//- +//- Truth table: C S R E D | Q +//- -----------+--- +//- - - 0 - - | 0 +//- - 1 - - - | 1 +//- / - - 0 d | d +//- - - - - - | q +//- +module \$_DFFSRE_PPNN_ (C, S, R, E, D, Q); +input C, S, R, E, D; +output reg Q; +always @(posedge C, posedge S, negedge R) begin + if (R == 0) + Q <= 0; + else if (S == 1) + Q <= 1; + else if (E == 0) + Q <= D; +end +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_DFFSRE_PPNP_ (C, S, R, E, D, Q) +//- +//- A positive edge D-type flip-flop with positive polarity set, negative +//- polarity reset and positive polarity clock enable. +//- +//- Truth table: C S R E D | Q +//- -----------+--- +//- - - 0 - - | 0 +//- - 1 - - - | 1 +//- / - - 1 d | d +//- - - - - - | q +//- +module \$_DFFSRE_PPNP_ (C, S, R, E, D, Q); +input C, S, R, E, D; +output reg Q; +always @(posedge C, posedge S, negedge R) begin + if (R == 0) + Q <= 0; + else if (S == 1) + Q <= 1; + else if (E == 1) + Q <= D; +end +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_DFFSRE_PPPN_ (C, S, R, E, D, Q) +//- +//- A positive edge D-type flip-flop with positive polarity set, positive +//- polarity reset and negative polarity clock enable. +//- +//- Truth table: C S R E D | Q +//- -----------+--- +//- - - 1 - - | 0 +//- - 1 - - - | 1 +//- / - - 0 d | d +//- - - - - - | q +//- +module \$_DFFSRE_PPPN_ (C, S, R, E, D, Q); +input C, S, R, E, D; +output reg Q; +always @(posedge C, posedge S, posedge R) begin + if (R == 1) + Q <= 0; + else if (S == 1) + Q <= 1; + else if (E == 0) + Q <= D; +end +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_DFFSRE_PPPP_ (C, S, R, E, D, Q) +//- +//- A positive edge D-type flip-flop with positive polarity set, positive +//- polarity reset and positive polarity clock enable. +//- +//- Truth table: C S R E D | Q +//- -----------+--- +//- - - 1 - - | 0 +//- - 1 - - - | 1 +//- / - - 1 d | d +//- - - - - - | q +//- +module \$_DFFSRE_PPPP_ (C, S, R, E, D, Q); +input C, S, R, E, D; +output reg Q; +always @(posedge C, posedge S, posedge R) begin + if (R == 1) + Q <= 0; + else if (S == 1) + Q <= 1; + else if (E == 1) + Q <= D; +end +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_SDFF_NN0_ (D, C, R, Q) +//- +//- A negative edge D-type flip-flop with negative polarity synchronous reset. +//- +//- Truth table: D C R | Q +//- -------+--- +//- - \ 0 | 0 +//- d \ - | d +//- - - - | q +//- +module \$_SDFF_NN0_ (D, C, R, Q); +input D, C, R; +output reg Q; +always @(negedge C) begin + if (R == 0) + Q <= 0; + else + Q <= D; +end +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_SDFF_NN1_ (D, C, R, Q) +//- +//- A negative edge D-type flip-flop with negative polarity synchronous set. +//- +//- Truth table: D C R | Q +//- -------+--- +//- - \ 0 | 1 +//- d \ - | d +//- - - - | q +//- +module \$_SDFF_NN1_ (D, C, R, Q); +input D, C, R; +output reg Q; +always @(negedge C) begin + if (R == 0) + Q <= 1; + else + Q <= D; +end +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_SDFF_NP0_ (D, C, R, Q) +//- +//- A negative edge D-type flip-flop with positive polarity synchronous reset. +//- +//- Truth table: D C R | Q +//- -------+--- +//- - \ 1 | 0 +//- d \ - | d +//- - - - | q +//- +module \$_SDFF_NP0_ (D, C, R, Q); +input D, C, R; +output reg Q; +always @(negedge C) begin + if (R == 1) + Q <= 0; + else + Q <= D; +end +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_SDFF_NP1_ (D, C, R, Q) +//- +//- A negative edge D-type flip-flop with positive polarity synchronous set. +//- +//- Truth table: D C R | Q +//- -------+--- +//- - \ 1 | 1 +//- d \ - | d +//- - - - | q +//- +module \$_SDFF_NP1_ (D, C, R, Q); +input D, C, R; +output reg Q; +always @(negedge C) begin + if (R == 1) + Q <= 1; + else + Q <= D; +end +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_SDFF_PN0_ (D, C, R, Q) +//- +//- A positive edge D-type flip-flop with negative polarity synchronous reset. +//- +//- Truth table: D C R | Q +//- -------+--- +//- - / 0 | 0 +//- d / - | d +//- - - - | q +//- +module \$_SDFF_PN0_ (D, C, R, Q); +input D, C, R; +output reg Q; +always @(posedge C) begin + if (R == 0) + Q <= 0; + else + Q <= D; +end +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_SDFF_PN1_ (D, C, R, Q) +//- +//- A positive edge D-type flip-flop with negative polarity synchronous set. +//- +//- Truth table: D C R | Q +//- -------+--- +//- - / 0 | 1 +//- d / - | d +//- - - - | q +//- +module \$_SDFF_PN1_ (D, C, R, Q); +input D, C, R; +output reg Q; +always @(posedge C) begin + if (R == 0) + Q <= 1; + else + Q <= D; +end +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_SDFF_PP0_ (D, C, R, Q) +//- +//- A positive edge D-type flip-flop with positive polarity synchronous reset. +//- +//- Truth table: D C R | Q +//- -------+--- +//- - / 1 | 0 +//- d / - | d +//- - - - | q +//- +module \$_SDFF_PP0_ (D, C, R, Q); +input D, C, R; +output reg Q; +always @(posedge C) begin + if (R == 1) + Q <= 0; + else + Q <= D; +end +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_SDFF_PP1_ (D, C, R, Q) +//- +//- A positive edge D-type flip-flop with positive polarity synchronous set. +//- +//- Truth table: D C R | Q +//- -------+--- +//- - / 1 | 1 +//- d / - | d +//- - - - | q +//- +module \$_SDFF_PP1_ (D, C, R, Q); +input D, C, R; +output reg Q; +always @(posedge C) begin + if (R == 1) + Q <= 1; + else + Q <= D; +end +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_SDFFE_NN0N_ (D, C, R, E, Q) +//- +//- A negative edge D-type flip-flop with negative polarity synchronous reset and negative +//- polarity clock enable (with reset having priority). +//- +//- Truth table: D C R E | Q +//- ---------+--- +//- - \ 0 - | 0 +//- d \ - 0 | d +//- - - - - | q +//- +module \$_SDFFE_NN0N_ (D, C, R, E, Q); +input D, C, R, E; +output reg Q; +always @(negedge C) begin + if (R == 0) + Q <= 0; + else if (E == 0) + Q <= D; +end +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_SDFFE_NN0P_ (D, C, R, E, Q) +//- +//- A negative edge D-type flip-flop with negative polarity synchronous reset and positive +//- polarity clock enable (with reset having priority). +//- +//- Truth table: D C R E | Q +//- ---------+--- +//- - \ 0 - | 0 +//- d \ - 1 | d +//- - - - - | q +//- +module \$_SDFFE_NN0P_ (D, C, R, E, Q); +input D, C, R, E; +output reg Q; +always @(negedge C) begin + if (R == 0) + Q <= 0; + else if (E == 1) + Q <= D; +end +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_SDFFE_NN1N_ (D, C, R, E, Q) +//- +//- A negative edge D-type flip-flop with negative polarity synchronous set and negative +//- polarity clock enable (with set having priority). +//- +//- Truth table: D C R E | Q +//- ---------+--- +//- - \ 0 - | 1 +//- d \ - 0 | d +//- - - - - | q +//- +module \$_SDFFE_NN1N_ (D, C, R, E, Q); +input D, C, R, E; +output reg Q; +always @(negedge C) begin + if (R == 0) + Q <= 1; + else if (E == 0) + Q <= D; +end +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_SDFFE_NN1P_ (D, C, R, E, Q) +//- +//- A negative edge D-type flip-flop with negative polarity synchronous set and positive +//- polarity clock enable (with set having priority). +//- +//- Truth table: D C R E | Q +//- ---------+--- +//- - \ 0 - | 1 +//- d \ - 1 | d +//- - - - - | q +//- +module \$_SDFFE_NN1P_ (D, C, R, E, Q); +input D, C, R, E; +output reg Q; +always @(negedge C) begin + if (R == 0) + Q <= 1; + else if (E == 1) + Q <= D; +end +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_SDFFE_NP0N_ (D, C, R, E, Q) +//- +//- A negative edge D-type flip-flop with positive polarity synchronous reset and negative +//- polarity clock enable (with reset having priority). +//- +//- Truth table: D C R E | Q +//- ---------+--- +//- - \ 1 - | 0 +//- d \ - 0 | d +//- - - - - | q +//- +module \$_SDFFE_NP0N_ (D, C, R, E, Q); +input D, C, R, E; +output reg Q; +always @(negedge C) begin + if (R == 1) + Q <= 0; + else if (E == 0) + Q <= D; +end +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_SDFFE_NP0P_ (D, C, R, E, Q) +//- +//- A negative edge D-type flip-flop with positive polarity synchronous reset and positive +//- polarity clock enable (with reset having priority). +//- +//- Truth table: D C R E | Q +//- ---------+--- +//- - \ 1 - | 0 +//- d \ - 1 | d +//- - - - - | q +//- +module \$_SDFFE_NP0P_ (D, C, R, E, Q); +input D, C, R, E; +output reg Q; +always @(negedge C) begin + if (R == 1) + Q <= 0; + else if (E == 1) + Q <= D; +end +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_SDFFE_NP1N_ (D, C, R, E, Q) +//- +//- A negative edge D-type flip-flop with positive polarity synchronous set and negative +//- polarity clock enable (with set having priority). +//- +//- Truth table: D C R E | Q +//- ---------+--- +//- - \ 1 - | 1 +//- d \ - 0 | d +//- - - - - | q +//- +module \$_SDFFE_NP1N_ (D, C, R, E, Q); +input D, C, R, E; +output reg Q; +always @(negedge C) begin + if (R == 1) + Q <= 1; + else if (E == 0) + Q <= D; +end +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_SDFFE_NP1P_ (D, C, R, E, Q) +//- +//- A negative edge D-type flip-flop with positive polarity synchronous set and positive +//- polarity clock enable (with set having priority). +//- +//- Truth table: D C R E | Q +//- ---------+--- +//- - \ 1 - | 1 +//- d \ - 1 | d +//- - - - - | q +//- +module \$_SDFFE_NP1P_ (D, C, R, E, Q); +input D, C, R, E; +output reg Q; +always @(negedge C) begin + if (R == 1) + Q <= 1; + else if (E == 1) + Q <= D; +end +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_SDFFE_PN0N_ (D, C, R, E, Q) +//- +//- A positive edge D-type flip-flop with negative polarity synchronous reset and negative +//- polarity clock enable (with reset having priority). +//- +//- Truth table: D C R E | Q +//- ---------+--- +//- - / 0 - | 0 +//- d / - 0 | d +//- - - - - | q +//- +module \$_SDFFE_PN0N_ (D, C, R, E, Q); +input D, C, R, E; +output reg Q; +always @(posedge C) begin + if (R == 0) + Q <= 0; + else if (E == 0) + Q <= D; +end +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_SDFFE_PN0P_ (D, C, R, E, Q) +//- +//- A positive edge D-type flip-flop with negative polarity synchronous reset and positive +//- polarity clock enable (with reset having priority). +//- +//- Truth table: D C R E | Q +//- ---------+--- +//- - / 0 - | 0 +//- d / - 1 | d +//- - - - - | q +//- +module \$_SDFFE_PN0P_ (D, C, R, E, Q); +input D, C, R, E; +output reg Q; +always @(posedge C) begin + if (R == 0) + Q <= 0; + else if (E == 1) + Q <= D; +end +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_SDFFE_PN1N_ (D, C, R, E, Q) +//- +//- A positive edge D-type flip-flop with negative polarity synchronous set and negative +//- polarity clock enable (with set having priority). +//- +//- Truth table: D C R E | Q +//- ---------+--- +//- - / 0 - | 1 +//- d / - 0 | d +//- - - - - | q +//- +module \$_SDFFE_PN1N_ (D, C, R, E, Q); +input D, C, R, E; +output reg Q; +always @(posedge C) begin + if (R == 0) + Q <= 1; + else if (E == 0) + Q <= D; +end +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_SDFFE_PN1P_ (D, C, R, E, Q) +//- +//- A positive edge D-type flip-flop with negative polarity synchronous set and positive +//- polarity clock enable (with set having priority). +//- +//- Truth table: D C R E | Q +//- ---------+--- +//- - / 0 - | 1 +//- d / - 1 | d +//- - - - - | q +//- +module \$_SDFFE_PN1P_ (D, C, R, E, Q); +input D, C, R, E; +output reg Q; +always @(posedge C) begin + if (R == 0) + Q <= 1; + else if (E == 1) + Q <= D; +end +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_SDFFE_PP0N_ (D, C, R, E, Q) +//- +//- A positive edge D-type flip-flop with positive polarity synchronous reset and negative +//- polarity clock enable (with reset having priority). +//- +//- Truth table: D C R E | Q +//- ---------+--- +//- - / 1 - | 0 +//- d / - 0 | d +//- - - - - | q +//- +module \$_SDFFE_PP0N_ (D, C, R, E, Q); +input D, C, R, E; +output reg Q; +always @(posedge C) begin + if (R == 1) + Q <= 0; + else if (E == 0) + Q <= D; +end +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_SDFFE_PP0P_ (D, C, R, E, Q) +//- +//- A positive edge D-type flip-flop with positive polarity synchronous reset and positive +//- polarity clock enable (with reset having priority). +//- +//- Truth table: D C R E | Q +//- ---------+--- +//- - / 1 - | 0 +//- d / - 1 | d +//- - - - - | q +//- +module \$_SDFFE_PP0P_ (D, C, R, E, Q); +input D, C, R, E; +output reg Q; +always @(posedge C) begin + if (R == 1) + Q <= 0; + else if (E == 1) + Q <= D; +end +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_SDFFE_PP1N_ (D, C, R, E, Q) +//- +//- A positive edge D-type flip-flop with positive polarity synchronous set and negative +//- polarity clock enable (with set having priority). +//- +//- Truth table: D C R E | Q +//- ---------+--- +//- - / 1 - | 1 +//- d / - 0 | d +//- - - - - | q +//- +module \$_SDFFE_PP1N_ (D, C, R, E, Q); +input D, C, R, E; +output reg Q; +always @(posedge C) begin + if (R == 1) + Q <= 1; + else if (E == 0) + Q <= D; +end +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_SDFFE_PP1P_ (D, C, R, E, Q) +//- +//- A positive edge D-type flip-flop with positive polarity synchronous set and positive +//- polarity clock enable (with set having priority). +//- +//- Truth table: D C R E | Q +//- ---------+--- +//- - / 1 - | 1 +//- d / - 1 | d +//- - - - - | q +//- +module \$_SDFFE_PP1P_ (D, C, R, E, Q); +input D, C, R, E; +output reg Q; +always @(posedge C) begin + if (R == 1) + Q <= 1; + else if (E == 1) + Q <= D; +end +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_SDFFCE_NN0N_ (D, C, R, E, Q) +//- +//- A negative edge D-type flip-flop with negative polarity synchronous reset and negative +//- polarity clock enable (with clock enable having priority). +//- +//- Truth table: D C R E | Q +//- ---------+--- +//- - \ 0 0 | 0 +//- d \ - 0 | d +//- - - - - | q +//- +module \$_SDFFCE_NN0N_ (D, C, R, E, Q); +input D, C, R, E; +output reg Q; +always @(negedge C) begin + if (E == 0) begin + if (R == 0) + Q <= 0; + else + Q <= D; + end +end +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_SDFFCE_NN0P_ (D, C, R, E, Q) +//- +//- A negative edge D-type flip-flop with negative polarity synchronous reset and positive +//- polarity clock enable (with clock enable having priority). +//- +//- Truth table: D C R E | Q +//- ---------+--- +//- - \ 0 1 | 0 +//- d \ - 1 | d +//- - - - - | q +//- +module \$_SDFFCE_NN0P_ (D, C, R, E, Q); +input D, C, R, E; +output reg Q; +always @(negedge C) begin + if (E == 1) begin + if (R == 0) + Q <= 0; + else + Q <= D; + end +end +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_SDFFCE_NN1N_ (D, C, R, E, Q) +//- +//- A negative edge D-type flip-flop with negative polarity synchronous set and negative +//- polarity clock enable (with clock enable having priority). +//- +//- Truth table: D C R E | Q +//- ---------+--- +//- - \ 0 0 | 1 +//- d \ - 0 | d +//- - - - - | q +//- +module \$_SDFFCE_NN1N_ (D, C, R, E, Q); +input D, C, R, E; +output reg Q; +always @(negedge C) begin + if (E == 0) begin + if (R == 0) + Q <= 1; + else + Q <= D; + end +end +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_SDFFCE_NN1P_ (D, C, R, E, Q) +//- +//- A negative edge D-type flip-flop with negative polarity synchronous set and positive +//- polarity clock enable (with clock enable having priority). +//- +//- Truth table: D C R E | Q +//- ---------+--- +//- - \ 0 1 | 1 +//- d \ - 1 | d +//- - - - - | q +//- +module \$_SDFFCE_NN1P_ (D, C, R, E, Q); +input D, C, R, E; +output reg Q; +always @(negedge C) begin + if (E == 1) begin + if (R == 0) + Q <= 1; + else + Q <= D; + end +end +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_SDFFCE_NP0N_ (D, C, R, E, Q) +//- +//- A negative edge D-type flip-flop with positive polarity synchronous reset and negative +//- polarity clock enable (with clock enable having priority). +//- +//- Truth table: D C R E | Q +//- ---------+--- +//- - \ 1 0 | 0 +//- d \ - 0 | d +//- - - - - | q +//- +module \$_SDFFCE_NP0N_ (D, C, R, E, Q); +input D, C, R, E; +output reg Q; +always @(negedge C) begin + if (E == 0) begin + if (R == 1) + Q <= 0; + else + Q <= D; + end +end +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_SDFFCE_NP0P_ (D, C, R, E, Q) +//- +//- A negative edge D-type flip-flop with positive polarity synchronous reset and positive +//- polarity clock enable (with clock enable having priority). +//- +//- Truth table: D C R E | Q +//- ---------+--- +//- - \ 1 1 | 0 +//- d \ - 1 | d +//- - - - - | q +//- +module \$_SDFFCE_NP0P_ (D, C, R, E, Q); +input D, C, R, E; +output reg Q; +always @(negedge C) begin + if (E == 1) begin + if (R == 1) + Q <= 0; + else + Q <= D; + end +end +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_SDFFCE_NP1N_ (D, C, R, E, Q) +//- +//- A negative edge D-type flip-flop with positive polarity synchronous set and negative +//- polarity clock enable (with clock enable having priority). +//- +//- Truth table: D C R E | Q +//- ---------+--- +//- - \ 1 0 | 1 +//- d \ - 0 | d +//- - - - - | q +//- +module \$_SDFFCE_NP1N_ (D, C, R, E, Q); +input D, C, R, E; +output reg Q; +always @(negedge C) begin + if (E == 0) begin + if (R == 1) + Q <= 1; + else + Q <= D; + end +end +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_SDFFCE_NP1P_ (D, C, R, E, Q) +//- +//- A negative edge D-type flip-flop with positive polarity synchronous set and positive +//- polarity clock enable (with clock enable having priority). +//- +//- Truth table: D C R E | Q +//- ---------+--- +//- - \ 1 1 | 1 +//- d \ - 1 | d +//- - - - - | q +//- +module \$_SDFFCE_NP1P_ (D, C, R, E, Q); +input D, C, R, E; +output reg Q; +always @(negedge C) begin + if (E == 1) begin + if (R == 1) + Q <= 1; + else + Q <= D; + end +end +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_SDFFCE_PN0N_ (D, C, R, E, Q) +//- +//- A positive edge D-type flip-flop with negative polarity synchronous reset and negative +//- polarity clock enable (with clock enable having priority). +//- +//- Truth table: D C R E | Q +//- ---------+--- +//- - / 0 0 | 0 +//- d / - 0 | d +//- - - - - | q +//- +module \$_SDFFCE_PN0N_ (D, C, R, E, Q); +input D, C, R, E; +output reg Q; +always @(posedge C) begin + if (E == 0) begin + if (R == 0) + Q <= 0; + else + Q <= D; + end +end +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_SDFFCE_PN0P_ (D, C, R, E, Q) +//- +//- A positive edge D-type flip-flop with negative polarity synchronous reset and positive +//- polarity clock enable (with clock enable having priority). +//- +//- Truth table: D C R E | Q +//- ---------+--- +//- - / 0 1 | 0 +//- d / - 1 | d +//- - - - - | q +//- +module \$_SDFFCE_PN0P_ (D, C, R, E, Q); +input D, C, R, E; +output reg Q; +always @(posedge C) begin + if (E == 1) begin + if (R == 0) + Q <= 0; + else + Q <= D; + end +end +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_SDFFCE_PN1N_ (D, C, R, E, Q) +//- +//- A positive edge D-type flip-flop with negative polarity synchronous set and negative +//- polarity clock enable (with clock enable having priority). +//- +//- Truth table: D C R E | Q +//- ---------+--- +//- - / 0 0 | 1 +//- d / - 0 | d +//- - - - - | q +//- +module \$_SDFFCE_PN1N_ (D, C, R, E, Q); +input D, C, R, E; +output reg Q; +always @(posedge C) begin + if (E == 0) begin + if (R == 0) + Q <= 1; + else + Q <= D; + end +end +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_SDFFCE_PN1P_ (D, C, R, E, Q) +//- +//- A positive edge D-type flip-flop with negative polarity synchronous set and positive +//- polarity clock enable (with clock enable having priority). +//- +//- Truth table: D C R E | Q +//- ---------+--- +//- - / 0 1 | 1 +//- d / - 1 | d +//- - - - - | q +//- +module \$_SDFFCE_PN1P_ (D, C, R, E, Q); +input D, C, R, E; +output reg Q; +always @(posedge C) begin + if (E == 1) begin + if (R == 0) + Q <= 1; + else + Q <= D; + end +end +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_SDFFCE_PP0N_ (D, C, R, E, Q) +//- +//- A positive edge D-type flip-flop with positive polarity synchronous reset and negative +//- polarity clock enable (with clock enable having priority). +//- +//- Truth table: D C R E | Q +//- ---------+--- +//- - / 1 0 | 0 +//- d / - 0 | d +//- - - - - | q +//- +module \$_SDFFCE_PP0N_ (D, C, R, E, Q); +input D, C, R, E; +output reg Q; +always @(posedge C) begin + if (E == 0) begin + if (R == 1) + Q <= 0; + else + Q <= D; + end +end +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_SDFFCE_PP0P_ (D, C, R, E, Q) +//- +//- A positive edge D-type flip-flop with positive polarity synchronous reset and positive +//- polarity clock enable (with clock enable having priority). +//- +//- Truth table: D C R E | Q +//- ---------+--- +//- - / 1 1 | 0 +//- d / - 1 | d +//- - - - - | q +//- +module \$_SDFFCE_PP0P_ (D, C, R, E, Q); +input D, C, R, E; +output reg Q; +always @(posedge C) begin + if (E == 1) begin + if (R == 1) + Q <= 0; + else + Q <= D; + end +end +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_SDFFCE_PP1N_ (D, C, R, E, Q) +//- +//- A positive edge D-type flip-flop with positive polarity synchronous set and negative +//- polarity clock enable (with clock enable having priority). +//- +//- Truth table: D C R E | Q +//- ---------+--- +//- - / 1 0 | 1 +//- d / - 0 | d +//- - - - - | q +//- +module \$_SDFFCE_PP1N_ (D, C, R, E, Q); +input D, C, R, E; +output reg Q; +always @(posedge C) begin + if (E == 0) begin + if (R == 1) + Q <= 1; + else + Q <= D; + end +end +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_SDFFCE_PP1P_ (D, C, R, E, Q) +//- +//- A positive edge D-type flip-flop with positive polarity synchronous set and positive +//- polarity clock enable (with clock enable having priority). +//- +//- Truth table: D C R E | Q +//- ---------+--- +//- - / 1 1 | 1 +//- d / - 1 | d +//- - - - - | q +//- +module \$_SDFFCE_PP1P_ (D, C, R, E, Q); +input D, C, R, E; +output reg Q; +always @(posedge C) begin + if (E == 1) begin + if (R == 1) + Q <= 1; + else + Q <= D; + end +end +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_DLATCH_N_ (E, D, Q) +//- +//- A negative enable D-type latch. +//- +//- Truth table: E D | Q +//- -----+--- +//- 0 d | d +//- - - | q +//- +module \$_DLATCH_N_ (E, D, Q); +input E, D; +output reg Q; +always @* begin + if (E == 0) + Q <= D; +end +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_DLATCH_P_ (E, D, Q) +//- +//- A positive enable D-type latch. +//- +//- Truth table: E D | Q +//- -----+--- +//- 1 d | d +//- - - | q +//- +module \$_DLATCH_P_ (E, D, Q); +input E, D; +output reg Q; +always @* begin + if (E == 1) + Q <= D; +end +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_DLATCH_NN0_ (E, R, D, Q) +//- +//- A negative enable D-type latch with negative polarity reset. +//- +//- Truth table: E R D | Q +//- -------+--- +//- - 0 - | 0 +//- 0 - d | d +//- - - - | q +//- +module \$_DLATCH_NN0_ (E, R, D, Q); +input E, R, D; +output reg Q; +always @* begin + if (R == 0) + Q <= 0; + else if (E == 0) + Q <= D; +end +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_DLATCH_NN1_ (E, R, D, Q) +//- +//- A negative enable D-type latch with negative polarity set. +//- +//- Truth table: E R D | Q +//- -------+--- +//- - 0 - | 1 +//- 0 - d | d +//- - - - | q +//- +module \$_DLATCH_NN1_ (E, R, D, Q); +input E, R, D; +output reg Q; +always @* begin + if (R == 0) + Q <= 1; + else if (E == 0) + Q <= D; +end +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_DLATCH_NP0_ (E, R, D, Q) +//- +//- A negative enable D-type latch with positive polarity reset. +//- +//- Truth table: E R D | Q +//- -------+--- +//- - 1 - | 0 +//- 0 - d | d +//- - - - | q +//- +module \$_DLATCH_NP0_ (E, R, D, Q); +input E, R, D; +output reg Q; +always @* begin + if (R == 1) + Q <= 0; + else if (E == 0) + Q <= D; +end +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_DLATCH_NP1_ (E, R, D, Q) +//- +//- A negative enable D-type latch with positive polarity set. +//- +//- Truth table: E R D | Q +//- -------+--- +//- - 1 - | 1 +//- 0 - d | d +//- - - - | q +//- +module \$_DLATCH_NP1_ (E, R, D, Q); +input E, R, D; +output reg Q; +always @* begin + if (R == 1) + Q <= 1; + else if (E == 0) + Q <= D; +end +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_DLATCH_PN0_ (E, R, D, Q) +//- +//- A positive enable D-type latch with negative polarity reset. +//- +//- Truth table: E R D | Q +//- -------+--- +//- - 0 - | 0 +//- 1 - d | d +//- - - - | q +//- +module \$_DLATCH_PN0_ (E, R, D, Q); +input E, R, D; +output reg Q; +always @* begin + if (R == 0) + Q <= 0; + else if (E == 1) + Q <= D; +end +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_DLATCH_PN1_ (E, R, D, Q) +//- +//- A positive enable D-type latch with negative polarity set. +//- +//- Truth table: E R D | Q +//- -------+--- +//- - 0 - | 1 +//- 1 - d | d +//- - - - | q +//- +module \$_DLATCH_PN1_ (E, R, D, Q); +input E, R, D; +output reg Q; +always @* begin + if (R == 0) + Q <= 1; + else if (E == 1) + Q <= D; +end +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_DLATCH_PP0_ (E, R, D, Q) +//- +//- A positive enable D-type latch with positive polarity reset. +//- +//- Truth table: E R D | Q +//- -------+--- +//- - 1 - | 0 +//- 1 - d | d +//- - - - | q +//- +module \$_DLATCH_PP0_ (E, R, D, Q); +input E, R, D; +output reg Q; +always @* begin + if (R == 1) + Q <= 0; + else if (E == 1) + Q <= D; +end +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_DLATCH_PP1_ (E, R, D, Q) +//- +//- A positive enable D-type latch with positive polarity set. +//- +//- Truth table: E R D | Q +//- -------+--- +//- - 1 - | 1 +//- 1 - d | d +//- - - - | q +//- +module \$_DLATCH_PP1_ (E, R, D, Q); +input E, R, D; +output reg Q; +always @* begin + if (R == 1) + Q <= 1; + else if (E == 1) + Q <= D; +end +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_DLATCHSR_NNN_ (E, S, R, D, Q) +//- +//- A negative enable D-type latch with negative polarity set and negative +//- polarity reset. +//- +//- Truth table: E S R D | Q +//- ---------+--- +//- - - 0 - | 0 +//- - 0 - - | 1 +//- 0 - - d | d +//- - - - - | q +//- +module \$_DLATCHSR_NNN_ (E, S, R, D, Q); +input E, S, R, D; +output reg Q; +always @* begin + if (R == 0) + Q <= 0; + else if (S == 0) + Q <= 1; + else if (E == 0) + Q <= D; +end +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_DLATCHSR_NNP_ (E, S, R, D, Q) +//- +//- A negative enable D-type latch with negative polarity set and positive +//- polarity reset. +//- +//- Truth table: E S R D | Q +//- ---------+--- +//- - - 1 - | 0 +//- - 0 - - | 1 +//- 0 - - d | d +//- - - - - | q +//- +module \$_DLATCHSR_NNP_ (E, S, R, D, Q); +input E, S, R, D; +output reg Q; +always @* begin + if (R == 1) + Q <= 0; + else if (S == 0) + Q <= 1; + else if (E == 0) + Q <= D; +end +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_DLATCHSR_NPN_ (E, S, R, D, Q) +//- +//- A negative enable D-type latch with positive polarity set and negative +//- polarity reset. +//- +//- Truth table: E S R D | Q +//- ---------+--- +//- - - 0 - | 0 +//- - 1 - - | 1 +//- 0 - - d | d +//- - - - - | q +//- +module \$_DLATCHSR_NPN_ (E, S, R, D, Q); +input E, S, R, D; +output reg Q; +always @* begin + if (R == 0) + Q <= 0; + else if (S == 1) + Q <= 1; + else if (E == 0) + Q <= D; +end +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_DLATCHSR_NPP_ (E, S, R, D, Q) +//- +//- A negative enable D-type latch with positive polarity set and positive +//- polarity reset. +//- +//- Truth table: E S R D | Q +//- ---------+--- +//- - - 1 - | 0 +//- - 1 - - | 1 +//- 0 - - d | d +//- - - - - | q +//- +module \$_DLATCHSR_NPP_ (E, S, R, D, Q); +input E, S, R, D; +output reg Q; +always @* begin + if (R == 1) + Q <= 0; + else if (S == 1) + Q <= 1; + else if (E == 0) + Q <= D; +end +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_DLATCHSR_PNN_ (E, S, R, D, Q) +//- +//- A positive enable D-type latch with negative polarity set and negative +//- polarity reset. +//- +//- Truth table: E S R D | Q +//- ---------+--- +//- - - 0 - | 0 +//- - 0 - - | 1 +//- 1 - - d | d +//- - - - - | q +//- +module \$_DLATCHSR_PNN_ (E, S, R, D, Q); +input E, S, R, D; +output reg Q; +always @* begin + if (R == 0) + Q <= 0; + else if (S == 0) + Q <= 1; + else if (E == 1) + Q <= D; +end +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_DLATCHSR_PNP_ (E, S, R, D, Q) +//- +//- A positive enable D-type latch with negative polarity set and positive +//- polarity reset. +//- +//- Truth table: E S R D | Q +//- ---------+--- +//- - - 1 - | 0 +//- - 0 - - | 1 +//- 1 - - d | d +//- - - - - | q +//- +module \$_DLATCHSR_PNP_ (E, S, R, D, Q); +input E, S, R, D; +output reg Q; +always @* begin + if (R == 1) + Q <= 0; + else if (S == 0) + Q <= 1; + else if (E == 1) + Q <= D; +end +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_DLATCHSR_PPN_ (E, S, R, D, Q) +//- +//- A positive enable D-type latch with positive polarity set and negative +//- polarity reset. +//- +//- Truth table: E S R D | Q +//- ---------+--- +//- - - 0 - | 0 +//- - 1 - - | 1 +//- 1 - - d | d +//- - - - - | q +//- +module \$_DLATCHSR_PPN_ (E, S, R, D, Q); +input E, S, R, D; +output reg Q; +always @* begin + if (R == 0) + Q <= 0; + else if (S == 1) + Q <= 1; + else if (E == 1) + Q <= D; +end +endmodule + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $_DLATCHSR_PPP_ (E, S, R, D, Q) +//- +//- A positive enable D-type latch with positive polarity set and positive +//- polarity reset. +//- +//- Truth table: E S R D | Q +//- ---------+--- +//- - - 1 - | 0 +//- - 1 - - | 1 +//- 1 - - d | d +//- - - - - | q +//- +module \$_DLATCHSR_PPP_ (E, S, R, D, Q); +input E, S, R, D; +output reg Q; +always @* begin + if (R == 1) + Q <= 0; + else if (S == 1) + Q <= 1; + else if (E == 1) + Q <= D; +end +endmodule diff --git a/resources/netlist/resources/kernel/share/simlib.v b/resources/netlist/resources/kernel/share/simlib.v new file mode 100644 index 0000000..ab9bd7e --- /dev/null +++ b/resources/netlist/resources/kernel/share/simlib.v @@ -0,0 +1,2610 @@ +/* + * yosys -- Yosys Open SYnthesis Suite + * + * Copyright (C) 2012 Claire Xenia Wolf + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * --- + * + * The Simulation Library. + * + * This Verilog library contains simple simulation models for the internal + * cells ($not, ...) generated by the frontends and used in most passes. + * + * This library can be used to verify the internal netlists as generated + * by the different frontends and passes. + * + * Note that memory can only be simulated when all $memrd and $memwr cells + * have been merged to stand-alone $mem cells (this is what the "memory_collect" + * pass is doing). + * + */ + +// -------------------------------------------------------- + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $not (A, Y) +//- +//- A bit-wise inverter. This corresponds to the Verilog unary prefix '~' operator. +//- +module \$not (A, Y); + +parameter A_SIGNED = 0; +parameter A_WIDTH = 0; +parameter Y_WIDTH = 0; + +input [A_WIDTH-1:0] A; +output [Y_WIDTH-1:0] Y; + +generate + if (A_SIGNED) begin:BLOCK1 + assign Y = ~$signed(A); + end else begin:BLOCK2 + assign Y = ~A; + end +endgenerate + +endmodule + + +// -------------------------------------------------------- + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $pos (A, Y) +//- +//- A buffer. This corresponds to the Verilog unary prefix '+' operator. +//- +module \$pos (A, Y); + +parameter A_SIGNED = 0; +parameter A_WIDTH = 0; +parameter Y_WIDTH = 0; + +input [A_WIDTH-1:0] A; +output [Y_WIDTH-1:0] Y; + +generate + if (A_SIGNED) begin:BLOCK1 + assign Y = $signed(A); + end else begin:BLOCK2 + assign Y = A; + end +endgenerate + +endmodule + +// -------------------------------------------------------- + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $neg (A, Y) +//- +//- An arithmetic inverter. This corresponds to the Verilog unary prefix '-' operator. +//- +module \$neg (A, Y); + +parameter A_SIGNED = 0; +parameter A_WIDTH = 0; +parameter Y_WIDTH = 0; + +input [A_WIDTH-1:0] A; +output [Y_WIDTH-1:0] Y; + +generate + if (A_SIGNED) begin:BLOCK1 + assign Y = -$signed(A); + end else begin:BLOCK2 + assign Y = -A; + end +endgenerate + +endmodule + +// -------------------------------------------------------- + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $and (A, B, Y) +//- +//- A bit-wise AND. This corresponds to the Verilog '&' operator. +//- +module \$and (A, B, Y); + +parameter A_SIGNED = 0; +parameter B_SIGNED = 0; +parameter A_WIDTH = 0; +parameter B_WIDTH = 0; +parameter Y_WIDTH = 0; + +input [A_WIDTH-1:0] A; +input [B_WIDTH-1:0] B; +output [Y_WIDTH-1:0] Y; + +generate + if (A_SIGNED && B_SIGNED) begin:BLOCK1 + assign Y = $signed(A) & $signed(B); + end else begin:BLOCK2 + assign Y = A & B; + end +endgenerate + +endmodule + +// -------------------------------------------------------- + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $or (A, B, Y) +//- +//- A bit-wise OR. This corresponds to the Verilog '|' operator. +//- +module \$or (A, B, Y); + +parameter A_SIGNED = 0; +parameter B_SIGNED = 0; +parameter A_WIDTH = 0; +parameter B_WIDTH = 0; +parameter Y_WIDTH = 0; + +input [A_WIDTH-1:0] A; +input [B_WIDTH-1:0] B; +output [Y_WIDTH-1:0] Y; + +generate + if (A_SIGNED && B_SIGNED) begin:BLOCK1 + assign Y = $signed(A) | $signed(B); + end else begin:BLOCK2 + assign Y = A | B; + end +endgenerate + +endmodule + +// -------------------------------------------------------- + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $xor (A, B, Y) +//- +//- A bit-wise XOR. This corresponds to the Verilog '^' operator. +//- +module \$xor (A, B, Y); + +parameter A_SIGNED = 0; +parameter B_SIGNED = 0; +parameter A_WIDTH = 0; +parameter B_WIDTH = 0; +parameter Y_WIDTH = 0; + +input [A_WIDTH-1:0] A; +input [B_WIDTH-1:0] B; +output [Y_WIDTH-1:0] Y; + +generate + if (A_SIGNED && B_SIGNED) begin:BLOCK1 + assign Y = $signed(A) ^ $signed(B); + end else begin:BLOCK2 + assign Y = A ^ B; + end +endgenerate + +endmodule + +// -------------------------------------------------------- + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $xnor (A, B, Y) +//- +//- A bit-wise XNOR. This corresponds to the Verilog '~^' operator. +//- +module \$xnor (A, B, Y); + +parameter A_SIGNED = 0; +parameter B_SIGNED = 0; +parameter A_WIDTH = 0; +parameter B_WIDTH = 0; +parameter Y_WIDTH = 0; + +input [A_WIDTH-1:0] A; +input [B_WIDTH-1:0] B; +output [Y_WIDTH-1:0] Y; + +generate + if (A_SIGNED && B_SIGNED) begin:BLOCK1 + assign Y = $signed(A) ~^ $signed(B); + end else begin:BLOCK2 + assign Y = A ~^ B; + end +endgenerate + +endmodule + +// -------------------------------------------------------- + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $reduce_and (A, Y) +//- +//- An AND reduction. This corresponds to the Verilog unary prefix '&' operator. +//- +module \$reduce_and (A, Y); + +parameter A_SIGNED = 0; +parameter A_WIDTH = 0; +parameter Y_WIDTH = 0; + +input [A_WIDTH-1:0] A; +output [Y_WIDTH-1:0] Y; + +generate + if (A_SIGNED) begin:BLOCK1 + assign Y = &$signed(A); + end else begin:BLOCK2 + assign Y = &A; + end +endgenerate + +endmodule + +// -------------------------------------------------------- + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $reduce_or (A, Y) +//- +//- An OR reduction. This corresponds to the Verilog unary prefix '|' operator. +//- +module \$reduce_or (A, Y); + +parameter A_SIGNED = 0; +parameter A_WIDTH = 0; +parameter Y_WIDTH = 0; + +input [A_WIDTH-1:0] A; +output [Y_WIDTH-1:0] Y; + +generate + if (A_SIGNED) begin:BLOCK1 + assign Y = |$signed(A); + end else begin:BLOCK2 + assign Y = |A; + end +endgenerate + +endmodule + +// -------------------------------------------------------- + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $reduce_xor (A, Y) +//- +//- A XOR reduction. This corresponds to the Verilog unary prefix '^' operator. +//- +module \$reduce_xor (A, Y); + +parameter A_SIGNED = 0; +parameter A_WIDTH = 0; +parameter Y_WIDTH = 0; + +input [A_WIDTH-1:0] A; +output [Y_WIDTH-1:0] Y; + +generate + if (A_SIGNED) begin:BLOCK1 + assign Y = ^$signed(A); + end else begin:BLOCK2 + assign Y = ^A; + end +endgenerate + +endmodule + +// -------------------------------------------------------- + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $reduce_xnor (A, Y) +//- +//- A XNOR reduction. This corresponds to the Verilog unary prefix '~^' operator. +//- +module \$reduce_xnor (A, Y); + +parameter A_SIGNED = 0; +parameter A_WIDTH = 0; +parameter Y_WIDTH = 0; + +input [A_WIDTH-1:0] A; +output [Y_WIDTH-1:0] Y; + +generate + if (A_SIGNED) begin:BLOCK1 + assign Y = ~^$signed(A); + end else begin:BLOCK2 + assign Y = ~^A; + end +endgenerate + +endmodule + +// -------------------------------------------------------- + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $reduce_bool (A, Y) +//- +//- An OR reduction. This cell type is used instead of $reduce_or when a signal is +//- implicitly converted to a boolean signal, e.g. for operands of '&&' and '||'. +//- +module \$reduce_bool (A, Y); + +parameter A_SIGNED = 0; +parameter A_WIDTH = 0; +parameter Y_WIDTH = 0; + +input [A_WIDTH-1:0] A; +output [Y_WIDTH-1:0] Y; + +generate + if (A_SIGNED) begin:BLOCK1 + assign Y = !(!$signed(A)); + end else begin:BLOCK2 + assign Y = !(!A); + end +endgenerate + +endmodule + +// -------------------------------------------------------- + +module \$shl (A, B, Y); + +parameter A_SIGNED = 0; +parameter B_SIGNED = 0; +parameter A_WIDTH = 0; +parameter B_WIDTH = 0; +parameter Y_WIDTH = 0; + +input [A_WIDTH-1:0] A; +input [B_WIDTH-1:0] B; +output [Y_WIDTH-1:0] Y; + +generate + if (A_SIGNED) begin:BLOCK1 + assign Y = $signed(A) << B; + end else begin:BLOCK2 + assign Y = A << B; + end +endgenerate + +endmodule + +// -------------------------------------------------------- + +module \$shr (A, B, Y); + +parameter A_SIGNED = 0; +parameter B_SIGNED = 0; +parameter A_WIDTH = 0; +parameter B_WIDTH = 0; +parameter Y_WIDTH = 0; + +input [A_WIDTH-1:0] A; +input [B_WIDTH-1:0] B; +output [Y_WIDTH-1:0] Y; + +generate + if (A_SIGNED) begin:BLOCK1 + assign Y = $signed(A) >> B; + end else begin:BLOCK2 + assign Y = A >> B; + end +endgenerate + +endmodule + +// -------------------------------------------------------- + +module \$sshl (A, B, Y); + +parameter A_SIGNED = 0; +parameter B_SIGNED = 0; +parameter A_WIDTH = 0; +parameter B_WIDTH = 0; +parameter Y_WIDTH = 0; + +input [A_WIDTH-1:0] A; +input [B_WIDTH-1:0] B; +output [Y_WIDTH-1:0] Y; + +generate + if (A_SIGNED) begin:BLOCK1 + assign Y = $signed(A) <<< B; + end else begin:BLOCK2 + assign Y = A <<< B; + end +endgenerate + +endmodule + +// -------------------------------------------------------- + +module \$sshr (A, B, Y); + +parameter A_SIGNED = 0; +parameter B_SIGNED = 0; +parameter A_WIDTH = 0; +parameter B_WIDTH = 0; +parameter Y_WIDTH = 0; + +input [A_WIDTH-1:0] A; +input [B_WIDTH-1:0] B; +output [Y_WIDTH-1:0] Y; + +generate + if (A_SIGNED) begin:BLOCK1 + assign Y = $signed(A) >>> B; + end else begin:BLOCK2 + assign Y = A >>> B; + end +endgenerate + +endmodule + +// -------------------------------------------------------- + +module \$shift (A, B, Y); + +parameter A_SIGNED = 0; +parameter B_SIGNED = 0; +parameter A_WIDTH = 0; +parameter B_WIDTH = 0; +parameter Y_WIDTH = 0; + +input [A_WIDTH-1:0] A; +input [B_WIDTH-1:0] B; +output [Y_WIDTH-1:0] Y; + +generate + if (A_SIGNED) begin:BLOCK1 + if (B_SIGNED) begin:BLOCK2 + assign Y = $signed(B) < 0 ? $signed(A) << -B : $signed(A) >> B; + end else begin:BLOCK3 + assign Y = $signed(A) >> B; + end + end else begin:BLOCK4 + if (B_SIGNED) begin:BLOCK5 + assign Y = $signed(B) < 0 ? A << -B : A >> B; + end else begin:BLOCK6 + assign Y = A >> B; + end + end +endgenerate + +endmodule + +// -------------------------------------------------------- + +module \$shiftx (A, B, Y); + +parameter A_SIGNED = 0; +parameter B_SIGNED = 0; +parameter A_WIDTH = 0; +parameter B_WIDTH = 0; +parameter Y_WIDTH = 0; + +input [A_WIDTH-1:0] A; +input [B_WIDTH-1:0] B; +output [Y_WIDTH-1:0] Y; + +generate + if (Y_WIDTH > 0) + if (B_SIGNED) begin:BLOCK1 + assign Y = A[$signed(B) +: Y_WIDTH]; + end else begin:BLOCK2 + assign Y = A[B +: Y_WIDTH]; + end +endgenerate + +endmodule + +// -------------------------------------------------------- + +module \$fa (A, B, C, X, Y); + +parameter WIDTH = 1; + +input [WIDTH-1:0] A, B, C; +output [WIDTH-1:0] X, Y; + +wire [WIDTH-1:0] t1, t2, t3; + +assign t1 = A ^ B, t2 = A & B, t3 = C & t1; +assign Y = t1 ^ C, X = (t2 | t3) ^ (Y ^ Y); + +endmodule + +// -------------------------------------------------------- + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $lcu (P, G, CI, CO) +//- +//- Lookahead carry unit +//- A building block dedicated to fast computation of carry-bits used in binary +//- arithmetic operations. By replacing the ripple carry structure used in full-adder +//- blocks, the more significant bits of the sum can be expected to be computed more +//- quickly. +//- Typically created during `techmap` of $alu cells (see the "_90_alu" rule in +//- +/techmap.v). +module \$lcu (P, G, CI, CO); + +parameter WIDTH = 1; + +input [WIDTH-1:0] P; // Propagate +input [WIDTH-1:0] G; // Generate +input CI; // Carry-in + +output reg [WIDTH-1:0] CO; // Carry-out + +integer i; +always @* begin + CO = 'bx; + if (^{P, G, CI} !== 1'bx) begin + CO[0] = G[0] || (P[0] && CI); + for (i = 1; i < WIDTH; i = i+1) + CO[i] = G[i] || (P[i] && CO[i-1]); + end +end + +endmodule + +// -------------------------------------------------------- + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $alu (A, B, CI, BI, X, Y, CO) +//- +//- Arithmetic logic unit. +//- A building block supporting both binary addition/subtraction operations, and +//- indirectly, comparison operations. +//- Typically created by the `alumacc` pass, which transforms: +//- $add, $sub, $lt, $le, $ge, $gt, $eq, $eqx, $ne, $nex +//- cells into this $alu cell. +//- +module \$alu (A, B, CI, BI, X, Y, CO); + +parameter A_SIGNED = 0; +parameter B_SIGNED = 0; +parameter A_WIDTH = 1; +parameter B_WIDTH = 1; +parameter Y_WIDTH = 1; + +input [A_WIDTH-1:0] A; // Input operand +input [B_WIDTH-1:0] B; // Input operand +output [Y_WIDTH-1:0] X; // A xor B (sign-extended, optional B inversion, + // used in combination with + // reduction-AND for $eq/$ne ops) +output [Y_WIDTH-1:0] Y; // Sum + +input CI; // Carry-in (set for $sub) +input BI; // Invert-B (set for $sub) +output [Y_WIDTH-1:0] CO; // Carry-out + +wire [Y_WIDTH-1:0] AA, BB; + +generate + if (A_SIGNED && B_SIGNED) begin:BLOCK1 + assign AA = $signed(A), BB = BI ? ~$signed(B) : $signed(B); + end else begin:BLOCK2 + assign AA = $unsigned(A), BB = BI ? ~$unsigned(B) : $unsigned(B); + end +endgenerate + +// this is 'x' if Y and CO should be all 'x', and '0' otherwise +wire y_co_undef = ^{A, A, B, B, CI, CI, BI, BI}; + +assign X = AA ^ BB; +// Full adder +assign Y = (AA + BB + CI) ^ {Y_WIDTH{y_co_undef}}; + +function get_carry; + input a, b, c; + get_carry = (a&b) | (a&c) | (b&c); +endfunction + +genvar i; +generate + assign CO[0] = get_carry(AA[0], BB[0], CI) ^ y_co_undef; + for (i = 1; i < Y_WIDTH; i = i+1) begin:BLOCK3 + assign CO[i] = get_carry(AA[i], BB[i], CO[i-1]) ^ y_co_undef; + end +endgenerate + +endmodule + +// -------------------------------------------------------- + +module \$lt (A, B, Y); + +parameter A_SIGNED = 0; +parameter B_SIGNED = 0; +parameter A_WIDTH = 0; +parameter B_WIDTH = 0; +parameter Y_WIDTH = 0; + +input [A_WIDTH-1:0] A; +input [B_WIDTH-1:0] B; +output [Y_WIDTH-1:0] Y; + +generate + if (A_SIGNED && B_SIGNED) begin:BLOCK1 + assign Y = $signed(A) < $signed(B); + end else begin:BLOCK2 + assign Y = A < B; + end +endgenerate + +endmodule + +// -------------------------------------------------------- + +module \$le (A, B, Y); + +parameter A_SIGNED = 0; +parameter B_SIGNED = 0; +parameter A_WIDTH = 0; +parameter B_WIDTH = 0; +parameter Y_WIDTH = 0; + +input [A_WIDTH-1:0] A; +input [B_WIDTH-1:0] B; +output [Y_WIDTH-1:0] Y; + +generate + if (A_SIGNED && B_SIGNED) begin:BLOCK1 + assign Y = $signed(A) <= $signed(B); + end else begin:BLOCK2 + assign Y = A <= B; + end +endgenerate + +endmodule + +// -------------------------------------------------------- + +module \$eq (A, B, Y); + +parameter A_SIGNED = 0; +parameter B_SIGNED = 0; +parameter A_WIDTH = 0; +parameter B_WIDTH = 0; +parameter Y_WIDTH = 0; + +input [A_WIDTH-1:0] A; +input [B_WIDTH-1:0] B; +output [Y_WIDTH-1:0] Y; + +generate + if (A_SIGNED && B_SIGNED) begin:BLOCK1 + assign Y = $signed(A) == $signed(B); + end else begin:BLOCK2 + assign Y = A == B; + end +endgenerate + +endmodule + +// -------------------------------------------------------- + +module \$ne (A, B, Y); + +parameter A_SIGNED = 0; +parameter B_SIGNED = 0; +parameter A_WIDTH = 0; +parameter B_WIDTH = 0; +parameter Y_WIDTH = 0; + +input [A_WIDTH-1:0] A; +input [B_WIDTH-1:0] B; +output [Y_WIDTH-1:0] Y; + +generate + if (A_SIGNED && B_SIGNED) begin:BLOCK1 + assign Y = $signed(A) != $signed(B); + end else begin:BLOCK2 + assign Y = A != B; + end +endgenerate + +endmodule + +// -------------------------------------------------------- + +module \$eqx (A, B, Y); + +parameter A_SIGNED = 0; +parameter B_SIGNED = 0; +parameter A_WIDTH = 0; +parameter B_WIDTH = 0; +parameter Y_WIDTH = 0; + +input [A_WIDTH-1:0] A; +input [B_WIDTH-1:0] B; +output [Y_WIDTH-1:0] Y; + +generate + if (A_SIGNED && B_SIGNED) begin:BLOCK1 + assign Y = $signed(A) === $signed(B); + end else begin:BLOCK2 + assign Y = A === B; + end +endgenerate + +endmodule + +// -------------------------------------------------------- + +module \$nex (A, B, Y); + +parameter A_SIGNED = 0; +parameter B_SIGNED = 0; +parameter A_WIDTH = 0; +parameter B_WIDTH = 0; +parameter Y_WIDTH = 0; + +input [A_WIDTH-1:0] A; +input [B_WIDTH-1:0] B; +output [Y_WIDTH-1:0] Y; + +generate + if (A_SIGNED && B_SIGNED) begin:BLOCK1 + assign Y = $signed(A) !== $signed(B); + end else begin:BLOCK2 + assign Y = A !== B; + end +endgenerate + +endmodule + +// -------------------------------------------------------- + +module \$ge (A, B, Y); + +parameter A_SIGNED = 0; +parameter B_SIGNED = 0; +parameter A_WIDTH = 0; +parameter B_WIDTH = 0; +parameter Y_WIDTH = 0; + +input [A_WIDTH-1:0] A; +input [B_WIDTH-1:0] B; +output [Y_WIDTH-1:0] Y; + +generate + if (A_SIGNED && B_SIGNED) begin:BLOCK1 + assign Y = $signed(A) >= $signed(B); + end else begin:BLOCK2 + assign Y = A >= B; + end +endgenerate + +endmodule + +// -------------------------------------------------------- + +module \$gt (A, B, Y); + +parameter A_SIGNED = 0; +parameter B_SIGNED = 0; +parameter A_WIDTH = 0; +parameter B_WIDTH = 0; +parameter Y_WIDTH = 0; + +input [A_WIDTH-1:0] A; +input [B_WIDTH-1:0] B; +output [Y_WIDTH-1:0] Y; + +generate + if (A_SIGNED && B_SIGNED) begin:BLOCK1 + assign Y = $signed(A) > $signed(B); + end else begin:BLOCK2 + assign Y = A > B; + end +endgenerate + +endmodule + +// -------------------------------------------------------- + +module \$add (A, B, Y); + +parameter A_SIGNED = 0; +parameter B_SIGNED = 0; +parameter A_WIDTH = 0; +parameter B_WIDTH = 0; +parameter Y_WIDTH = 0; + +input [A_WIDTH-1:0] A; +input [B_WIDTH-1:0] B; +output [Y_WIDTH-1:0] Y; + +generate + if (A_SIGNED && B_SIGNED) begin:BLOCK1 + assign Y = $signed(A) + $signed(B); + end else begin:BLOCK2 + assign Y = A + B; + end +endgenerate + +endmodule + +// -------------------------------------------------------- + +module \$sub (A, B, Y); + +parameter A_SIGNED = 0; +parameter B_SIGNED = 0; +parameter A_WIDTH = 0; +parameter B_WIDTH = 0; +parameter Y_WIDTH = 0; + +input [A_WIDTH-1:0] A; +input [B_WIDTH-1:0] B; +output [Y_WIDTH-1:0] Y; + +generate + if (A_SIGNED && B_SIGNED) begin:BLOCK1 + assign Y = $signed(A) - $signed(B); + end else begin:BLOCK2 + assign Y = A - B; + end +endgenerate + +endmodule + +// -------------------------------------------------------- + +module \$mul (A, B, Y); + +parameter A_SIGNED = 0; +parameter B_SIGNED = 0; +parameter A_WIDTH = 0; +parameter B_WIDTH = 0; +parameter Y_WIDTH = 0; + +input [A_WIDTH-1:0] A; +input [B_WIDTH-1:0] B; +output [Y_WIDTH-1:0] Y; + +generate + if (A_SIGNED && B_SIGNED) begin:BLOCK1 + assign Y = $signed(A) * $signed(B); + end else begin:BLOCK2 + assign Y = A * B; + end +endgenerate + +endmodule + +// -------------------------------------------------------- + +module \$macc (A, B, Y); + +parameter A_WIDTH = 0; +parameter B_WIDTH = 0; +parameter Y_WIDTH = 0; +parameter CONFIG = 4'b0000; +parameter CONFIG_WIDTH = 4; + +input [A_WIDTH-1:0] A; +input [B_WIDTH-1:0] B; +output reg [Y_WIDTH-1:0] Y; + +// Xilinx XSIM does not like $clog2() below.. +function integer my_clog2; + input integer v; + begin + if (v > 0) + v = v - 1; + my_clog2 = 0; + while (v) begin + v = v >> 1; + my_clog2 = my_clog2 + 1; + end + end +endfunction + +localparam integer num_bits = CONFIG[3:0] > 0 ? CONFIG[3:0] : 1; +localparam integer num_ports = (CONFIG_WIDTH-4) / (2 + 2*num_bits); +localparam integer num_abits = my_clog2(A_WIDTH) > 0 ? my_clog2(A_WIDTH) : 1; + +function [2*num_ports*num_abits-1:0] get_port_offsets; + input [CONFIG_WIDTH-1:0] cfg; + integer i, cursor; + begin + cursor = 0; + get_port_offsets = 0; + for (i = 0; i < num_ports; i = i+1) begin + get_port_offsets[(2*i + 0)*num_abits +: num_abits] = cursor; + cursor = cursor + cfg[4 + i*(2 + 2*num_bits) + 2 +: num_bits]; + get_port_offsets[(2*i + 1)*num_abits +: num_abits] = cursor; + cursor = cursor + cfg[4 + i*(2 + 2*num_bits) + 2 + num_bits +: num_bits]; + end + end +endfunction + +localparam [2*num_ports*num_abits-1:0] port_offsets = get_port_offsets(CONFIG); + +`define PORT_IS_SIGNED (0 + CONFIG[4 + i*(2 + 2*num_bits)]) +`define PORT_DO_SUBTRACT (0 + CONFIG[4 + i*(2 + 2*num_bits) + 1]) +`define PORT_SIZE_A (0 + CONFIG[4 + i*(2 + 2*num_bits) + 2 +: num_bits]) +`define PORT_SIZE_B (0 + CONFIG[4 + i*(2 + 2*num_bits) + 2 + num_bits +: num_bits]) +`define PORT_OFFSET_A (0 + port_offsets[2*i*num_abits +: num_abits]) +`define PORT_OFFSET_B (0 + port_offsets[2*i*num_abits + num_abits +: num_abits]) + +integer i, j; +reg [Y_WIDTH-1:0] tmp_a, tmp_b; + +always @* begin + Y = 0; + for (i = 0; i < num_ports; i = i+1) + begin + tmp_a = 0; + tmp_b = 0; + + for (j = 0; j < `PORT_SIZE_A; j = j+1) + tmp_a[j] = A[`PORT_OFFSET_A + j]; + + if (`PORT_IS_SIGNED && `PORT_SIZE_A > 0) + for (j = `PORT_SIZE_A; j < Y_WIDTH; j = j+1) + tmp_a[j] = tmp_a[`PORT_SIZE_A-1]; + + for (j = 0; j < `PORT_SIZE_B; j = j+1) + tmp_b[j] = A[`PORT_OFFSET_B + j]; + + if (`PORT_IS_SIGNED && `PORT_SIZE_B > 0) + for (j = `PORT_SIZE_B; j < Y_WIDTH; j = j+1) + tmp_b[j] = tmp_b[`PORT_SIZE_B-1]; + + if (`PORT_SIZE_B > 0) + tmp_a = tmp_a * tmp_b; + + if (`PORT_DO_SUBTRACT) + Y = Y - tmp_a; + else + Y = Y + tmp_a; + end + for (i = 0; i < B_WIDTH; i = i+1) begin + Y = Y + B[i]; + end +end + +`undef PORT_IS_SIGNED +`undef PORT_DO_SUBTRACT +`undef PORT_SIZE_A +`undef PORT_SIZE_B +`undef PORT_OFFSET_A +`undef PORT_OFFSET_B + +endmodule + +// -------------------------------------------------------- + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $div (A, B, Y) +//- +//- Division with truncated result (rounded towards 0). +//- +module \$div (A, B, Y); + +parameter A_SIGNED = 0; +parameter B_SIGNED = 0; +parameter A_WIDTH = 0; +parameter B_WIDTH = 0; +parameter Y_WIDTH = 0; + +input [A_WIDTH-1:0] A; +input [B_WIDTH-1:0] B; +output [Y_WIDTH-1:0] Y; + +generate + if (A_SIGNED && B_SIGNED) begin:BLOCK1 + assign Y = $signed(A) / $signed(B); + end else begin:BLOCK2 + assign Y = A / B; + end +endgenerate + +endmodule + +// -------------------------------------------------------- + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $mod (A, B, Y) +//- +//- Modulo/remainder of division with truncated result (rounded towards 0). +//- +//- Invariant: $div(A, B) * B + $mod(A, B) == A +//- +module \$mod (A, B, Y); + +parameter A_SIGNED = 0; +parameter B_SIGNED = 0; +parameter A_WIDTH = 0; +parameter B_WIDTH = 0; +parameter Y_WIDTH = 0; + +input [A_WIDTH-1:0] A; +input [B_WIDTH-1:0] B; +output [Y_WIDTH-1:0] Y; + +generate + if (A_SIGNED && B_SIGNED) begin:BLOCK1 + assign Y = $signed(A) % $signed(B); + end else begin:BLOCK2 + assign Y = A % B; + end +endgenerate + +endmodule + +// -------------------------------------------------------- + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $divfloor (A, B, Y) +//- +//- Division with floored result (rounded towards negative infinity). +//- +module \$divfloor (A, B, Y); + +parameter A_SIGNED = 0; +parameter B_SIGNED = 0; +parameter A_WIDTH = 0; +parameter B_WIDTH = 0; +parameter Y_WIDTH = 0; + +input [A_WIDTH-1:0] A; +input [B_WIDTH-1:0] B; +output [Y_WIDTH-1:0] Y; + +generate + if (A_SIGNED && B_SIGNED) begin:BLOCK1 + localparam WIDTH = + A_WIDTH >= B_WIDTH && A_WIDTH >= Y_WIDTH ? A_WIDTH : + B_WIDTH >= A_WIDTH && B_WIDTH >= Y_WIDTH ? B_WIDTH : Y_WIDTH; + wire [WIDTH:0] A_buf, B_buf, N_buf; + assign A_buf = $signed(A); + assign B_buf = $signed(B); + assign N_buf = (A[A_WIDTH-1] == B[B_WIDTH-1]) || A == 0 ? A_buf : $signed(A_buf - (B[B_WIDTH-1] ? B_buf+1 : B_buf-1)); + assign Y = $signed(N_buf) / $signed(B_buf); + end else begin:BLOCK2 + assign Y = A / B; + end +endgenerate + +endmodule + +// -------------------------------------------------------- + +// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| +//- +//- $modfloor (A, B, Y) +//- +//- Modulo/remainder of division with floored result (rounded towards negative infinity). +//- +//- Invariant: $divfloor(A, B) * B + $modfloor(A, B) == A +//- +module \$modfloor (A, B, Y); + +parameter A_SIGNED = 0; +parameter B_SIGNED = 0; +parameter A_WIDTH = 0; +parameter B_WIDTH = 0; +parameter Y_WIDTH = 0; + +input [A_WIDTH-1:0] A; +input [B_WIDTH-1:0] B; +output [Y_WIDTH-1:0] Y; + +generate + if (A_SIGNED && B_SIGNED) begin:BLOCK1 + localparam WIDTH = B_WIDTH >= Y_WIDTH ? B_WIDTH : Y_WIDTH; + wire [WIDTH-1:0] B_buf, Y_trunc; + assign B_buf = $signed(B); + assign Y_trunc = $signed(A) % $signed(B); + // flooring mod is the same as truncating mod for positive division results (A and B have + // the same sign), as well as when there's no remainder. + // For all other cases, they behave as `floor - trunc = B` + assign Y = (A[A_WIDTH-1] == B[B_WIDTH-1]) || Y_trunc == 0 ? Y_trunc : $signed(B_buf) + $signed(Y_trunc); + end else begin:BLOCK2 + // no difference between truncating and flooring for unsigned + assign Y = A % B; + end +endgenerate + +endmodule + +// -------------------------------------------------------- +`ifndef SIMLIB_NOPOW + +module \$pow (A, B, Y); + +parameter A_SIGNED = 0; +parameter B_SIGNED = 0; +parameter A_WIDTH = 0; +parameter B_WIDTH = 0; +parameter Y_WIDTH = 0; + +input [A_WIDTH-1:0] A; +input [B_WIDTH-1:0] B; +output [Y_WIDTH-1:0] Y; + +generate + if (A_SIGNED && B_SIGNED) begin:BLOCK1 + assign Y = $signed(A) ** $signed(B); + end else if (A_SIGNED) begin:BLOCK2 + assign Y = $signed(A) ** B; + end else if (B_SIGNED) begin:BLOCK3 + assign Y = A ** $signed(B); + end else begin:BLOCK4 + assign Y = A ** B; + end +endgenerate + +endmodule + +`endif +// -------------------------------------------------------- + +module \$logic_not (A, Y); + +parameter A_SIGNED = 0; +parameter A_WIDTH = 0; +parameter Y_WIDTH = 0; + +input [A_WIDTH-1:0] A; +output [Y_WIDTH-1:0] Y; + +generate + if (A_SIGNED) begin:BLOCK1 + assign Y = !$signed(A); + end else begin:BLOCK2 + assign Y = !A; + end +endgenerate + +endmodule + +// -------------------------------------------------------- + +module \$logic_and (A, B, Y); + +parameter A_SIGNED = 0; +parameter B_SIGNED = 0; +parameter A_WIDTH = 0; +parameter B_WIDTH = 0; +parameter Y_WIDTH = 0; + +input [A_WIDTH-1:0] A; +input [B_WIDTH-1:0] B; +output [Y_WIDTH-1:0] Y; + +generate + if (A_SIGNED && B_SIGNED) begin:BLOCK1 + assign Y = $signed(A) && $signed(B); + end else begin:BLOCK2 + assign Y = A && B; + end +endgenerate + +endmodule + +// -------------------------------------------------------- + +module \$logic_or (A, B, Y); + +parameter A_SIGNED = 0; +parameter B_SIGNED = 0; +parameter A_WIDTH = 0; +parameter B_WIDTH = 0; +parameter Y_WIDTH = 0; + +input [A_WIDTH-1:0] A; +input [B_WIDTH-1:0] B; +output [Y_WIDTH-1:0] Y; + +generate + if (A_SIGNED && B_SIGNED) begin:BLOCK1 + assign Y = $signed(A) || $signed(B); + end else begin:BLOCK2 + assign Y = A || B; + end +endgenerate + +endmodule + +// -------------------------------------------------------- + +module \$slice (A, Y); + +parameter OFFSET = 0; +parameter A_WIDTH = 0; +parameter Y_WIDTH = 0; + +input [A_WIDTH-1:0] A; +output [Y_WIDTH-1:0] Y; + +assign Y = A >> OFFSET; + +endmodule + +// -------------------------------------------------------- + +module \$concat (A, B, Y); + +parameter A_WIDTH = 0; +parameter B_WIDTH = 0; + +input [A_WIDTH-1:0] A; +input [B_WIDTH-1:0] B; +output [A_WIDTH+B_WIDTH-1:0] Y; + +assign Y = {B, A}; + +endmodule + +// -------------------------------------------------------- + +module \$mux (A, B, S, Y); + +parameter WIDTH = 0; + +input [WIDTH-1:0] A, B; +input S; +output reg [WIDTH-1:0] Y; + +always @* begin + if (S) + Y = B; + else + Y = A; +end + +endmodule + +// -------------------------------------------------------- + +module \$bmux (A, S, Y); + +parameter WIDTH = 0; +parameter S_WIDTH = 0; + +input [(WIDTH << S_WIDTH)-1:0] A; +input [S_WIDTH-1:0] S; +output [WIDTH-1:0] Y; + +wire [WIDTH-1:0] bm0_out, bm1_out; + +generate + if (S_WIDTH > 1) begin:muxlogic + \$bmux #(.WIDTH(WIDTH), .S_WIDTH(S_WIDTH-1)) bm0 (.A(A), .S(S[S_WIDTH-2:0]), .Y(bm0_out)); + \$bmux #(.WIDTH(WIDTH), .S_WIDTH(S_WIDTH-1)) bm1 (.A(A[(WIDTH << S_WIDTH)-1:WIDTH << (S_WIDTH - 1)]), .S(S[S_WIDTH-2:0]), .Y(bm1_out)); + assign Y = S[S_WIDTH-1] ? bm1_out : bm0_out; + end else if (S_WIDTH == 1) begin:simple + assign Y = S ? A[1] : A[0]; + end else begin:passthru + assign Y = A; + end +endgenerate + +endmodule + +// -------------------------------------------------------- + +module \$pmux (A, B, S, Y); + +parameter WIDTH = 0; +parameter S_WIDTH = 0; + +input [WIDTH-1:0] A; +input [WIDTH*S_WIDTH-1:0] B; +input [S_WIDTH-1:0] S; +output reg [WIDTH-1:0] Y; + +integer i; +reg found_active_sel_bit; + +always @* begin + Y = A; + found_active_sel_bit = 0; + for (i = 0; i < S_WIDTH; i = i+1) + if (S[i]) begin + Y = found_active_sel_bit ? 'bx : B >> (WIDTH*i); + found_active_sel_bit = 1; + end +end + +endmodule + +// -------------------------------------------------------- + +module \$demux (A, S, Y); + +parameter WIDTH = 1; +parameter S_WIDTH = 1; + +input [WIDTH-1:0] A; +input [S_WIDTH-1:0] S; +output [(WIDTH << S_WIDTH)-1:0] Y; + +genvar i; +generate + for (i = 0; i < (1 << S_WIDTH); i = i + 1) begin:slices + assign Y[i*WIDTH+:WIDTH] = (S == i) ? A : 0; + end +endgenerate + +endmodule + +// -------------------------------------------------------- +`ifndef SIMLIB_NOLUT + +module \$lut (A, Y); + +parameter WIDTH = 0; +parameter LUT = 0; + +input [WIDTH-1:0] A; +output Y; + +\$bmux #(.WIDTH(1), .S_WIDTH(WIDTH)) mux(.A(LUT), .S(A), .Y(Y)); + +endmodule + +`endif +// -------------------------------------------------------- + +module \$sop (A, Y); + +parameter WIDTH = 0; +parameter DEPTH = 0; +parameter TABLE = 0; + +input [WIDTH-1:0] A; +output reg Y; + +integer i, j; +reg match; + +always @* begin + Y = 0; + for (i = 0; i < DEPTH; i=i+1) begin + match = 1; + for (j = 0; j < WIDTH; j=j+1) begin + if (TABLE[2*WIDTH*i + 2*j + 0] && A[j]) match = 0; + if (TABLE[2*WIDTH*i + 2*j + 1] && !A[j]) match = 0; + end + if (match) Y = 1; + end +end + +endmodule + +// -------------------------------------------------------- + +module \$tribuf (A, EN, Y); + +parameter WIDTH = 0; + +input [WIDTH-1:0] A; +input EN; +output [WIDTH-1:0] Y; + +assign Y = EN ? A : 'bz; + +endmodule + +// -------------------------------------------------------- + +module \$specify2 (EN, SRC, DST); + +parameter FULL = 0; +parameter SRC_WIDTH = 1; +parameter DST_WIDTH = 1; + +parameter SRC_DST_PEN = 0; +parameter SRC_DST_POL = 0; + +parameter T_RISE_MIN = 0; +parameter T_RISE_TYP = 0; +parameter T_RISE_MAX = 0; + +parameter T_FALL_MIN = 0; +parameter T_FALL_TYP = 0; +parameter T_FALL_MAX = 0; + +input EN; +input [SRC_WIDTH-1:0] SRC; +input [DST_WIDTH-1:0] DST; + +localparam SD = SRC_DST_PEN ? (SRC_DST_POL ? 1 : 2) : 0; + +`ifdef SIMLIB_SPECIFY +specify + if (EN && SD==0 && !FULL) (SRC => DST) = (T_RISE_MIN:T_RISE_TYP:T_RISE_MAX, T_FALL_MIN:T_FALL_TYP:T_FALL_MAX); + if (EN && SD==0 && FULL) (SRC *> DST) = (T_RISE_MIN:T_RISE_TYP:T_RISE_MAX, T_FALL_MIN:T_FALL_TYP:T_FALL_MAX); + if (EN && SD==1 && !FULL) (SRC +=> DST) = (T_RISE_MIN:T_RISE_TYP:T_RISE_MAX, T_FALL_MIN:T_FALL_TYP:T_FALL_MAX); + if (EN && SD==1 && FULL) (SRC +*> DST) = (T_RISE_MIN:T_RISE_TYP:T_RISE_MAX, T_FALL_MIN:T_FALL_TYP:T_FALL_MAX); + if (EN && SD==2 && !FULL) (SRC -=> DST) = (T_RISE_MIN:T_RISE_TYP:T_RISE_MAX, T_FALL_MIN:T_FALL_TYP:T_FALL_MAX); + if (EN && SD==2 && FULL) (SRC -*> DST) = (T_RISE_MIN:T_RISE_TYP:T_RISE_MAX, T_FALL_MIN:T_FALL_TYP:T_FALL_MAX); +endspecify +`endif + +endmodule + +// -------------------------------------------------------- + +module \$specify3 (EN, SRC, DST, DAT); + +parameter FULL = 0; +parameter SRC_WIDTH = 1; +parameter DST_WIDTH = 1; + +parameter EDGE_EN = 0; +parameter EDGE_POL = 0; + +parameter SRC_DST_PEN = 0; +parameter SRC_DST_POL = 0; + +parameter DAT_DST_PEN = 0; +parameter DAT_DST_POL = 0; + +parameter T_RISE_MIN = 0; +parameter T_RISE_TYP = 0; +parameter T_RISE_MAX = 0; + +parameter T_FALL_MIN = 0; +parameter T_FALL_TYP = 0; +parameter T_FALL_MAX = 0; + +input EN; +input [SRC_WIDTH-1:0] SRC; +input [DST_WIDTH-1:0] DST, DAT; + +localparam ED = EDGE_EN ? (EDGE_POL ? 1 : 2) : 0; +localparam SD = SRC_DST_PEN ? (SRC_DST_POL ? 1 : 2) : 0; +localparam DD = DAT_DST_PEN ? (DAT_DST_POL ? 1 : 2) : 0; + +`ifdef SIMLIB_SPECIFY +specify + // DD=0 + + if (EN && DD==0 && SD==0 && ED==0 && !FULL) ( SRC => (DST : DAT)) = (T_RISE_MIN:T_RISE_TYP:T_RISE_MAX, T_FALL_MIN:T_FALL_TYP:T_FALL_MAX); + if (EN && DD==0 && SD==0 && ED==0 && FULL) ( SRC *> (DST : DAT)) = (T_RISE_MIN:T_RISE_TYP:T_RISE_MAX, T_FALL_MIN:T_FALL_TYP:T_FALL_MAX); + if (EN && DD==0 && SD==0 && ED==1 && !FULL) (posedge SRC => (DST : DAT)) = (T_RISE_MIN:T_RISE_TYP:T_RISE_MAX, T_FALL_MIN:T_FALL_TYP:T_FALL_MAX); + if (EN && DD==0 && SD==0 && ED==1 && FULL) (posedge SRC *> (DST : DAT)) = (T_RISE_MIN:T_RISE_TYP:T_RISE_MAX, T_FALL_MIN:T_FALL_TYP:T_FALL_MAX); + if (EN && DD==0 && SD==0 && ED==2 && !FULL) (negedge SRC => (DST : DAT)) = (T_RISE_MIN:T_RISE_TYP:T_RISE_MAX, T_FALL_MIN:T_FALL_TYP:T_FALL_MAX); + if (EN && DD==0 && SD==0 && ED==2 && FULL) (negedge SRC *> (DST : DAT)) = (T_RISE_MIN:T_RISE_TYP:T_RISE_MAX, T_FALL_MIN:T_FALL_TYP:T_FALL_MAX); + + if (EN && DD==0 && SD==1 && ED==0 && !FULL) ( SRC +=> (DST : DAT)) = (T_RISE_MIN:T_RISE_TYP:T_RISE_MAX, T_FALL_MIN:T_FALL_TYP:T_FALL_MAX); + if (EN && DD==0 && SD==1 && ED==0 && FULL) ( SRC +*> (DST : DAT)) = (T_RISE_MIN:T_RISE_TYP:T_RISE_MAX, T_FALL_MIN:T_FALL_TYP:T_FALL_MAX); + if (EN && DD==0 && SD==1 && ED==1 && !FULL) (posedge SRC +=> (DST : DAT)) = (T_RISE_MIN:T_RISE_TYP:T_RISE_MAX, T_FALL_MIN:T_FALL_TYP:T_FALL_MAX); + if (EN && DD==0 && SD==1 && ED==1 && FULL) (posedge SRC +*> (DST : DAT)) = (T_RISE_MIN:T_RISE_TYP:T_RISE_MAX, T_FALL_MIN:T_FALL_TYP:T_FALL_MAX); + if (EN && DD==0 && SD==1 && ED==2 && !FULL) (negedge SRC +=> (DST : DAT)) = (T_RISE_MIN:T_RISE_TYP:T_RISE_MAX, T_FALL_MIN:T_FALL_TYP:T_FALL_MAX); + if (EN && DD==0 && SD==1 && ED==2 && FULL) (negedge SRC +*> (DST : DAT)) = (T_RISE_MIN:T_RISE_TYP:T_RISE_MAX, T_FALL_MIN:T_FALL_TYP:T_FALL_MAX); + + if (EN && DD==0 && SD==2 && ED==0 && !FULL) ( SRC -=> (DST : DAT)) = (T_RISE_MIN:T_RISE_TYP:T_RISE_MAX, T_FALL_MIN:T_FALL_TYP:T_FALL_MAX); + if (EN && DD==0 && SD==2 && ED==0 && FULL) ( SRC -*> (DST : DAT)) = (T_RISE_MIN:T_RISE_TYP:T_RISE_MAX, T_FALL_MIN:T_FALL_TYP:T_FALL_MAX); + if (EN && DD==0 && SD==2 && ED==1 && !FULL) (posedge SRC -=> (DST : DAT)) = (T_RISE_MIN:T_RISE_TYP:T_RISE_MAX, T_FALL_MIN:T_FALL_TYP:T_FALL_MAX); + if (EN && DD==0 && SD==2 && ED==1 && FULL) (posedge SRC -*> (DST : DAT)) = (T_RISE_MIN:T_RISE_TYP:T_RISE_MAX, T_FALL_MIN:T_FALL_TYP:T_FALL_MAX); + if (EN && DD==0 && SD==2 && ED==2 && !FULL) (negedge SRC -=> (DST : DAT)) = (T_RISE_MIN:T_RISE_TYP:T_RISE_MAX, T_FALL_MIN:T_FALL_TYP:T_FALL_MAX); + if (EN && DD==0 && SD==2 && ED==2 && FULL) (negedge SRC -*> (DST : DAT)) = (T_RISE_MIN:T_RISE_TYP:T_RISE_MAX, T_FALL_MIN:T_FALL_TYP:T_FALL_MAX); + + // DD=1 + + if (EN && DD==1 && SD==0 && ED==0 && !FULL) ( SRC => (DST +: DAT)) = (T_RISE_MIN:T_RISE_TYP:T_RISE_MAX, T_FALL_MIN:T_FALL_TYP:T_FALL_MAX); + if (EN && DD==1 && SD==0 && ED==0 && FULL) ( SRC *> (DST +: DAT)) = (T_RISE_MIN:T_RISE_TYP:T_RISE_MAX, T_FALL_MIN:T_FALL_TYP:T_FALL_MAX); + if (EN && DD==1 && SD==0 && ED==1 && !FULL) (posedge SRC => (DST +: DAT)) = (T_RISE_MIN:T_RISE_TYP:T_RISE_MAX, T_FALL_MIN:T_FALL_TYP:T_FALL_MAX); + if (EN && DD==1 && SD==0 && ED==1 && FULL) (posedge SRC *> (DST +: DAT)) = (T_RISE_MIN:T_RISE_TYP:T_RISE_MAX, T_FALL_MIN:T_FALL_TYP:T_FALL_MAX); + if (EN && DD==1 && SD==0 && ED==2 && !FULL) (negedge SRC => (DST +: DAT)) = (T_RISE_MIN:T_RISE_TYP:T_RISE_MAX, T_FALL_MIN:T_FALL_TYP:T_FALL_MAX); + if (EN && DD==1 && SD==0 && ED==2 && FULL) (negedge SRC *> (DST +: DAT)) = (T_RISE_MIN:T_RISE_TYP:T_RISE_MAX, T_FALL_MIN:T_FALL_TYP:T_FALL_MAX); + + if (EN && DD==1 && SD==1 && ED==0 && !FULL) ( SRC +=> (DST +: DAT)) = (T_RISE_MIN:T_RISE_TYP:T_RISE_MAX, T_FALL_MIN:T_FALL_TYP:T_FALL_MAX); + if (EN && DD==1 && SD==1 && ED==0 && FULL) ( SRC +*> (DST +: DAT)) = (T_RISE_MIN:T_RISE_TYP:T_RISE_MAX, T_FALL_MIN:T_FALL_TYP:T_FALL_MAX); + if (EN && DD==1 && SD==1 && ED==1 && !FULL) (posedge SRC +=> (DST +: DAT)) = (T_RISE_MIN:T_RISE_TYP:T_RISE_MAX, T_FALL_MIN:T_FALL_TYP:T_FALL_MAX); + if (EN && DD==1 && SD==1 && ED==1 && FULL) (posedge SRC +*> (DST +: DAT)) = (T_RISE_MIN:T_RISE_TYP:T_RISE_MAX, T_FALL_MIN:T_FALL_TYP:T_FALL_MAX); + if (EN && DD==1 && SD==1 && ED==2 && !FULL) (negedge SRC +=> (DST +: DAT)) = (T_RISE_MIN:T_RISE_TYP:T_RISE_MAX, T_FALL_MIN:T_FALL_TYP:T_FALL_MAX); + if (EN && DD==1 && SD==1 && ED==2 && FULL) (negedge SRC +*> (DST +: DAT)) = (T_RISE_MIN:T_RISE_TYP:T_RISE_MAX, T_FALL_MIN:T_FALL_TYP:T_FALL_MAX); + + if (EN && DD==1 && SD==2 && ED==0 && !FULL) ( SRC -=> (DST +: DAT)) = (T_RISE_MIN:T_RISE_TYP:T_RISE_MAX, T_FALL_MIN:T_FALL_TYP:T_FALL_MAX); + if (EN && DD==1 && SD==2 && ED==0 && FULL) ( SRC -*> (DST +: DAT)) = (T_RISE_MIN:T_RISE_TYP:T_RISE_MAX, T_FALL_MIN:T_FALL_TYP:T_FALL_MAX); + if (EN && DD==1 && SD==2 && ED==1 && !FULL) (posedge SRC -=> (DST +: DAT)) = (T_RISE_MIN:T_RISE_TYP:T_RISE_MAX, T_FALL_MIN:T_FALL_TYP:T_FALL_MAX); + if (EN && DD==1 && SD==2 && ED==1 && FULL) (posedge SRC -*> (DST +: DAT)) = (T_RISE_MIN:T_RISE_TYP:T_RISE_MAX, T_FALL_MIN:T_FALL_TYP:T_FALL_MAX); + if (EN && DD==1 && SD==2 && ED==2 && !FULL) (negedge SRC -=> (DST +: DAT)) = (T_RISE_MIN:T_RISE_TYP:T_RISE_MAX, T_FALL_MIN:T_FALL_TYP:T_FALL_MAX); + if (EN && DD==1 && SD==2 && ED==2 && FULL) (negedge SRC -*> (DST +: DAT)) = (T_RISE_MIN:T_RISE_TYP:T_RISE_MAX, T_FALL_MIN:T_FALL_TYP:T_FALL_MAX); + + // DD=2 + + if (EN && DD==2 && SD==0 && ED==0 && !FULL) ( SRC => (DST -: DAT)) = (T_RISE_MIN:T_RISE_TYP:T_RISE_MAX, T_FALL_MIN:T_FALL_TYP:T_FALL_MAX); + if (EN && DD==2 && SD==0 && ED==0 && FULL) ( SRC *> (DST -: DAT)) = (T_RISE_MIN:T_RISE_TYP:T_RISE_MAX, T_FALL_MIN:T_FALL_TYP:T_FALL_MAX); + if (EN && DD==2 && SD==0 && ED==1 && !FULL) (posedge SRC => (DST -: DAT)) = (T_RISE_MIN:T_RISE_TYP:T_RISE_MAX, T_FALL_MIN:T_FALL_TYP:T_FALL_MAX); + if (EN && DD==2 && SD==0 && ED==1 && FULL) (posedge SRC *> (DST -: DAT)) = (T_RISE_MIN:T_RISE_TYP:T_RISE_MAX, T_FALL_MIN:T_FALL_TYP:T_FALL_MAX); + if (EN && DD==2 && SD==0 && ED==2 && !FULL) (negedge SRC => (DST -: DAT)) = (T_RISE_MIN:T_RISE_TYP:T_RISE_MAX, T_FALL_MIN:T_FALL_TYP:T_FALL_MAX); + if (EN && DD==2 && SD==0 && ED==2 && FULL) (negedge SRC *> (DST -: DAT)) = (T_RISE_MIN:T_RISE_TYP:T_RISE_MAX, T_FALL_MIN:T_FALL_TYP:T_FALL_MAX); + + if (EN && DD==2 && SD==1 && ED==0 && !FULL) ( SRC +=> (DST -: DAT)) = (T_RISE_MIN:T_RISE_TYP:T_RISE_MAX, T_FALL_MIN:T_FALL_TYP:T_FALL_MAX); + if (EN && DD==2 && SD==1 && ED==0 && FULL) ( SRC +*> (DST -: DAT)) = (T_RISE_MIN:T_RISE_TYP:T_RISE_MAX, T_FALL_MIN:T_FALL_TYP:T_FALL_MAX); + if (EN && DD==2 && SD==1 && ED==1 && !FULL) (posedge SRC +=> (DST -: DAT)) = (T_RISE_MIN:T_RISE_TYP:T_RISE_MAX, T_FALL_MIN:T_FALL_TYP:T_FALL_MAX); + if (EN && DD==2 && SD==1 && ED==1 && FULL) (posedge SRC +*> (DST -: DAT)) = (T_RISE_MIN:T_RISE_TYP:T_RISE_MAX, T_FALL_MIN:T_FALL_TYP:T_FALL_MAX); + if (EN && DD==2 && SD==1 && ED==2 && !FULL) (negedge SRC +=> (DST -: DAT)) = (T_RISE_MIN:T_RISE_TYP:T_RISE_MAX, T_FALL_MIN:T_FALL_TYP:T_FALL_MAX); + if (EN && DD==2 && SD==1 && ED==2 && FULL) (negedge SRC +*> (DST -: DAT)) = (T_RISE_MIN:T_RISE_TYP:T_RISE_MAX, T_FALL_MIN:T_FALL_TYP:T_FALL_MAX); + + if (EN && DD==2 && SD==2 && ED==0 && !FULL) ( SRC -=> (DST -: DAT)) = (T_RISE_MIN:T_RISE_TYP:T_RISE_MAX, T_FALL_MIN:T_FALL_TYP:T_FALL_MAX); + if (EN && DD==2 && SD==2 && ED==0 && FULL) ( SRC -*> (DST -: DAT)) = (T_RISE_MIN:T_RISE_TYP:T_RISE_MAX, T_FALL_MIN:T_FALL_TYP:T_FALL_MAX); + if (EN && DD==2 && SD==2 && ED==1 && !FULL) (posedge SRC -=> (DST -: DAT)) = (T_RISE_MIN:T_RISE_TYP:T_RISE_MAX, T_FALL_MIN:T_FALL_TYP:T_FALL_MAX); + if (EN && DD==2 && SD==2 && ED==1 && FULL) (posedge SRC -*> (DST -: DAT)) = (T_RISE_MIN:T_RISE_TYP:T_RISE_MAX, T_FALL_MIN:T_FALL_TYP:T_FALL_MAX); + if (EN && DD==2 && SD==2 && ED==2 && !FULL) (negedge SRC -=> (DST -: DAT)) = (T_RISE_MIN:T_RISE_TYP:T_RISE_MAX, T_FALL_MIN:T_FALL_TYP:T_FALL_MAX); + if (EN && DD==2 && SD==2 && ED==2 && FULL) (negedge SRC -*> (DST -: DAT)) = (T_RISE_MIN:T_RISE_TYP:T_RISE_MAX, T_FALL_MIN:T_FALL_TYP:T_FALL_MAX); +endspecify +`endif + +endmodule + +// -------------------------------------------------------- + +module \$specrule (EN_SRC, EN_DST, SRC, DST); + +parameter TYPE = ""; +parameter T_LIMIT = 0; +parameter T_LIMIT2 = 0; + +parameter SRC_WIDTH = 1; +parameter DST_WIDTH = 1; + +parameter SRC_PEN = 0; +parameter SRC_POL = 0; + +parameter DST_PEN = 0; +parameter DST_POL = 0; + +input EN_SRC, EN_DST; +input [SRC_WIDTH-1:0] SRC; +input [DST_WIDTH-1:0] DST; + +`ifdef SIMLIB_SPECIFY +specify + // TBD +endspecify +`endif + +endmodule + +// -------------------------------------------------------- + +module \$assert (A, EN); + +input A, EN; + +`ifndef SIMLIB_NOCHECKS +always @* begin + if (A !== 1'b1 && EN === 1'b1) begin + $display("Assertion %m failed!"); + $stop; + end +end +`endif + +endmodule + +// -------------------------------------------------------- + +module \$assume (A, EN); + +input A, EN; + +`ifndef SIMLIB_NOCHECKS +always @* begin + if (A !== 1'b1 && EN === 1'b1) begin + $display("Assumption %m failed!"); + $stop; + end +end +`endif + +endmodule + +// -------------------------------------------------------- + +module \$live (A, EN); + +input A, EN; + +endmodule + +// -------------------------------------------------------- + +module \$fair (A, EN); + +input A, EN; + +endmodule + +// -------------------------------------------------------- + +module \$cover (A, EN); + +input A, EN; + +endmodule + +// -------------------------------------------------------- + +module \$initstate (Y); + +output reg Y = 1; +reg [3:0] cnt = 1; +reg trig = 0; + +initial trig <= 1; + +always @(cnt, trig) begin + Y <= |cnt; + cnt <= cnt + |cnt; +end + +endmodule + +// -------------------------------------------------------- + +module \$anyconst (Y); + +parameter WIDTH = 0; + +output [WIDTH-1:0] Y; + +assign Y = 'bx; + +endmodule + +// -------------------------------------------------------- + +module \$anyseq (Y); + +parameter WIDTH = 0; + +output [WIDTH-1:0] Y; + +assign Y = 'bx; + +endmodule + +// -------------------------------------------------------- +`ifdef SIMLIB_FF +module \$anyinit (D, Q); + +parameter WIDTH = 0; + +input [WIDTH-1:0] D; +output reg [WIDTH-1:0] Q; + +initial Q <= 'bx; + +always @($global_clk) begin + Q <= D; +end + +endmodule +`endif +// -------------------------------------------------------- + +module \$allconst (Y); + +parameter WIDTH = 0; + +output [WIDTH-1:0] Y; + +assign Y = 'bx; + +endmodule + +// -------------------------------------------------------- + +module \$allseq (Y); + +parameter WIDTH = 0; + +output [WIDTH-1:0] Y; + +assign Y = 'bx; + +endmodule + +// -------------------------------------------------------- + +module \$equiv (A, B, Y); + +input A, B; +output Y; + +assign Y = (A !== 1'bx && A !== B) ? 1'bx : A; + +`ifndef SIMLIB_NOCHECKS +always @* begin + if (A !== 1'bx && A !== B) begin + $display("Equivalence failed!"); + $stop; + end +end +`endif + +endmodule + +// -------------------------------------------------------- +`ifndef SIMLIB_NOSR + +module \$sr (SET, CLR, Q); + +parameter WIDTH = 0; +parameter SET_POLARITY = 1'b1; +parameter CLR_POLARITY = 1'b1; + +input [WIDTH-1:0] SET, CLR; +output reg [WIDTH-1:0] Q; + +wire [WIDTH-1:0] pos_set = SET_POLARITY ? SET : ~SET; +wire [WIDTH-1:0] pos_clr = CLR_POLARITY ? CLR : ~CLR; + +genvar i; +generate + for (i = 0; i < WIDTH; i = i+1) begin:bitslices + always @* + if (pos_clr[i]) + Q[i] <= 0; + else if (pos_set[i]) + Q[i] <= 1; + end +endgenerate + +endmodule + +`endif +// -------------------------------------------------------- +`ifdef SIMLIB_FF + +module \$ff (D, Q); + +parameter WIDTH = 0; + +input [WIDTH-1:0] D; +output reg [WIDTH-1:0] Q; + +always @($global_clk) begin + Q <= D; +end + +endmodule + +`endif +// -------------------------------------------------------- + +module \$dff (CLK, D, Q); + +parameter WIDTH = 0; +parameter CLK_POLARITY = 1'b1; + +input CLK; +input [WIDTH-1:0] D; +output reg [WIDTH-1:0] Q; +wire pos_clk = CLK == CLK_POLARITY; + +always @(posedge pos_clk) begin + Q <= D; +end + +endmodule + +// -------------------------------------------------------- + +module \$dffe (CLK, EN, D, Q); + +parameter WIDTH = 0; +parameter CLK_POLARITY = 1'b1; +parameter EN_POLARITY = 1'b1; + +input CLK, EN; +input [WIDTH-1:0] D; +output reg [WIDTH-1:0] Q; +wire pos_clk = CLK == CLK_POLARITY; + +always @(posedge pos_clk) begin + if (EN == EN_POLARITY) Q <= D; +end + +endmodule + +// -------------------------------------------------------- +`ifndef SIMLIB_NOSR + +module \$dffsr (CLK, SET, CLR, D, Q); + +parameter WIDTH = 0; +parameter CLK_POLARITY = 1'b1; +parameter SET_POLARITY = 1'b1; +parameter CLR_POLARITY = 1'b1; + +input CLK; +input [WIDTH-1:0] SET, CLR, D; +output reg [WIDTH-1:0] Q; + +wire pos_clk = CLK == CLK_POLARITY; +wire [WIDTH-1:0] pos_set = SET_POLARITY ? SET : ~SET; +wire [WIDTH-1:0] pos_clr = CLR_POLARITY ? CLR : ~CLR; + +genvar i; +generate + for (i = 0; i < WIDTH; i = i+1) begin:bitslices + always @(posedge pos_set[i], posedge pos_clr[i], posedge pos_clk) + if (pos_clr[i]) + Q[i] <= 0; + else if (pos_set[i]) + Q[i] <= 1; + else + Q[i] <= D[i]; + end +endgenerate + +endmodule + +// -------------------------------------------------------- + +module \$dffsre (CLK, SET, CLR, EN, D, Q); + +parameter WIDTH = 0; +parameter CLK_POLARITY = 1'b1; +parameter SET_POLARITY = 1'b1; +parameter CLR_POLARITY = 1'b1; +parameter EN_POLARITY = 1'b1; + +input CLK, EN; +input [WIDTH-1:0] SET, CLR, D; +output reg [WIDTH-1:0] Q; + +wire pos_clk = CLK == CLK_POLARITY; +wire [WIDTH-1:0] pos_set = SET_POLARITY ? SET : ~SET; +wire [WIDTH-1:0] pos_clr = CLR_POLARITY ? CLR : ~CLR; + +genvar i; +generate + for (i = 0; i < WIDTH; i = i+1) begin:bitslices + always @(posedge pos_set[i], posedge pos_clr[i], posedge pos_clk) + if (pos_clr[i]) + Q[i] <= 0; + else if (pos_set[i]) + Q[i] <= 1; + else if (EN == EN_POLARITY) + Q[i] <= D[i]; + end +endgenerate + +endmodule + +`endif +// -------------------------------------------------------- + +module \$adff (CLK, ARST, D, Q); + +parameter WIDTH = 0; +parameter CLK_POLARITY = 1'b1; +parameter ARST_POLARITY = 1'b1; +parameter ARST_VALUE = 0; + +input CLK, ARST; +input [WIDTH-1:0] D; +output reg [WIDTH-1:0] Q; +wire pos_clk = CLK == CLK_POLARITY; +wire pos_arst = ARST == ARST_POLARITY; + +always @(posedge pos_clk, posedge pos_arst) begin + if (pos_arst) + Q <= ARST_VALUE; + else + Q <= D; +end + +endmodule + +// -------------------------------------------------------- + +module \$aldff (CLK, ALOAD, AD, D, Q); + +parameter WIDTH = 0; +parameter CLK_POLARITY = 1'b1; +parameter ALOAD_POLARITY = 1'b1; + +input CLK, ALOAD; +input [WIDTH-1:0] AD; +input [WIDTH-1:0] D; +output reg [WIDTH-1:0] Q; +wire pos_clk = CLK == CLK_POLARITY; +wire pos_aload = ALOAD == ALOAD_POLARITY; + +always @(posedge pos_clk, posedge pos_aload) begin + if (pos_aload) + Q <= AD; + else + Q <= D; +end + +endmodule + +// -------------------------------------------------------- + +module \$sdff (CLK, SRST, D, Q); + +parameter WIDTH = 0; +parameter CLK_POLARITY = 1'b1; +parameter SRST_POLARITY = 1'b1; +parameter SRST_VALUE = 0; + +input CLK, SRST; +input [WIDTH-1:0] D; +output reg [WIDTH-1:0] Q; +wire pos_clk = CLK == CLK_POLARITY; +wire pos_srst = SRST == SRST_POLARITY; + +always @(posedge pos_clk) begin + if (pos_srst) + Q <= SRST_VALUE; + else + Q <= D; +end + +endmodule + +// -------------------------------------------------------- + +module \$adffe (CLK, ARST, EN, D, Q); + +parameter WIDTH = 0; +parameter CLK_POLARITY = 1'b1; +parameter EN_POLARITY = 1'b1; +parameter ARST_POLARITY = 1'b1; +parameter ARST_VALUE = 0; + +input CLK, ARST, EN; +input [WIDTH-1:0] D; +output reg [WIDTH-1:0] Q; +wire pos_clk = CLK == CLK_POLARITY; +wire pos_arst = ARST == ARST_POLARITY; + +always @(posedge pos_clk, posedge pos_arst) begin + if (pos_arst) + Q <= ARST_VALUE; + else if (EN == EN_POLARITY) + Q <= D; +end + +endmodule + +// -------------------------------------------------------- + +module \$aldffe (CLK, ALOAD, AD, EN, D, Q); + +parameter WIDTH = 0; +parameter CLK_POLARITY = 1'b1; +parameter EN_POLARITY = 1'b1; +parameter ALOAD_POLARITY = 1'b1; + +input CLK, ALOAD, EN; +input [WIDTH-1:0] D; +input [WIDTH-1:0] AD; +output reg [WIDTH-1:0] Q; +wire pos_clk = CLK == CLK_POLARITY; +wire pos_aload = ALOAD == ALOAD_POLARITY; + +always @(posedge pos_clk, posedge pos_aload) begin + if (pos_aload) + Q <= AD; + else if (EN == EN_POLARITY) + Q <= D; +end + +endmodule + +// -------------------------------------------------------- + +module \$sdffe (CLK, SRST, EN, D, Q); + +parameter WIDTH = 0; +parameter CLK_POLARITY = 1'b1; +parameter EN_POLARITY = 1'b1; +parameter SRST_POLARITY = 1'b1; +parameter SRST_VALUE = 0; + +input CLK, SRST, EN; +input [WIDTH-1:0] D; +output reg [WIDTH-1:0] Q; +wire pos_clk = CLK == CLK_POLARITY; +wire pos_srst = SRST == SRST_POLARITY; + +always @(posedge pos_clk) begin + if (pos_srst) + Q <= SRST_VALUE; + else if (EN == EN_POLARITY) + Q <= D; +end + +endmodule + +// -------------------------------------------------------- + +module \$sdffce (CLK, SRST, EN, D, Q); + +parameter WIDTH = 0; +parameter CLK_POLARITY = 1'b1; +parameter EN_POLARITY = 1'b1; +parameter SRST_POLARITY = 1'b1; +parameter SRST_VALUE = 0; + +input CLK, SRST, EN; +input [WIDTH-1:0] D; +output reg [WIDTH-1:0] Q; +wire pos_clk = CLK == CLK_POLARITY; +wire pos_srst = SRST == SRST_POLARITY; + +always @(posedge pos_clk) begin + if (EN == EN_POLARITY) begin + if (pos_srst) + Q <= SRST_VALUE; + else + Q <= D; + end +end + +endmodule + +// -------------------------------------------------------- + +module \$dlatch (EN, D, Q); + +parameter WIDTH = 0; +parameter EN_POLARITY = 1'b1; + +input EN; +input [WIDTH-1:0] D; +output reg [WIDTH-1:0] Q; + +always @* begin + if (EN == EN_POLARITY) + Q = D; +end + +endmodule + +// -------------------------------------------------------- + +module \$adlatch (EN, ARST, D, Q); + +parameter WIDTH = 0; +parameter EN_POLARITY = 1'b1; +parameter ARST_POLARITY = 1'b1; +parameter ARST_VALUE = 0; + +input EN, ARST; +input [WIDTH-1:0] D; +output reg [WIDTH-1:0] Q; + +always @* begin + if (ARST == ARST_POLARITY) + Q = ARST_VALUE; + else if (EN == EN_POLARITY) + Q = D; +end + +endmodule + +// -------------------------------------------------------- +`ifndef SIMLIB_NOSR + +module \$dlatchsr (EN, SET, CLR, D, Q); + +parameter WIDTH = 0; +parameter EN_POLARITY = 1'b1; +parameter SET_POLARITY = 1'b1; +parameter CLR_POLARITY = 1'b1; + +input EN; +input [WIDTH-1:0] SET, CLR, D; +output reg [WIDTH-1:0] Q; + +wire pos_en = EN == EN_POLARITY; +wire [WIDTH-1:0] pos_set = SET_POLARITY ? SET : ~SET; +wire [WIDTH-1:0] pos_clr = CLR_POLARITY ? CLR : ~CLR; + +genvar i; +generate + for (i = 0; i < WIDTH; i = i+1) begin:bitslices + always @* + if (pos_clr[i]) + Q[i] = 0; + else if (pos_set[i]) + Q[i] = 1; + else if (pos_en) + Q[i] = D[i]; + end +endgenerate + +endmodule + +`endif +// -------------------------------------------------------- + +module \$fsm (CLK, ARST, CTRL_IN, CTRL_OUT); + +parameter NAME = ""; + +parameter CLK_POLARITY = 1'b1; +parameter ARST_POLARITY = 1'b1; + +parameter CTRL_IN_WIDTH = 1; +parameter CTRL_OUT_WIDTH = 1; + +parameter STATE_BITS = 1; +parameter STATE_NUM = 1; +parameter STATE_NUM_LOG2 = 1; +parameter STATE_RST = 0; +parameter STATE_TABLE = 1'b0; + +parameter TRANS_NUM = 1; +parameter TRANS_TABLE = 4'b0x0x; + +input CLK, ARST; +input [CTRL_IN_WIDTH-1:0] CTRL_IN; +output reg [CTRL_OUT_WIDTH-1:0] CTRL_OUT; + +wire pos_clk = CLK == CLK_POLARITY; +wire pos_arst = ARST == ARST_POLARITY; + +reg [STATE_BITS-1:0] state; +reg [STATE_BITS-1:0] state_tmp; +reg [STATE_BITS-1:0] next_state; + +reg [STATE_BITS-1:0] tr_state_in; +reg [STATE_BITS-1:0] tr_state_out; +reg [CTRL_IN_WIDTH-1:0] tr_ctrl_in; +reg [CTRL_OUT_WIDTH-1:0] tr_ctrl_out; + +integer i; + +task tr_fetch; + input [31:0] tr_num; + reg [31:0] tr_pos; + reg [STATE_NUM_LOG2-1:0] state_num; + begin + tr_pos = (2*STATE_NUM_LOG2+CTRL_IN_WIDTH+CTRL_OUT_WIDTH)*tr_num; + tr_ctrl_out = TRANS_TABLE >> tr_pos; + tr_pos = tr_pos + CTRL_OUT_WIDTH; + state_num = TRANS_TABLE >> tr_pos; + tr_state_out = STATE_TABLE >> (STATE_BITS*state_num); + tr_pos = tr_pos + STATE_NUM_LOG2; + tr_ctrl_in = TRANS_TABLE >> tr_pos; + tr_pos = tr_pos + CTRL_IN_WIDTH; + state_num = TRANS_TABLE >> tr_pos; + tr_state_in = STATE_TABLE >> (STATE_BITS*state_num); + tr_pos = tr_pos + STATE_NUM_LOG2; + end +endtask + +always @(posedge pos_clk, posedge pos_arst) begin + if (pos_arst) begin + state_tmp = STATE_TABLE[STATE_BITS*(STATE_RST+1)-1:STATE_BITS*STATE_RST]; + for (i = 0; i < STATE_BITS; i = i+1) + if (state_tmp[i] === 1'bz) + state_tmp[i] = 0; + state <= state_tmp; + end else begin + state_tmp = next_state; + for (i = 0; i < STATE_BITS; i = i+1) + if (state_tmp[i] === 1'bz) + state_tmp[i] = 0; + state <= state_tmp; + end +end + +always @(state, CTRL_IN) begin + next_state <= STATE_TABLE[STATE_BITS*(STATE_RST+1)-1:STATE_BITS*STATE_RST]; + CTRL_OUT <= 'bx; + // $display("---"); + // $display("Q: %b %b", state, CTRL_IN); + for (i = 0; i < TRANS_NUM; i = i+1) begin + tr_fetch(i); + // $display("T: %b %b -> %b %b [%d]", tr_state_in, tr_ctrl_in, tr_state_out, tr_ctrl_out, i); + casez ({state, CTRL_IN}) + {tr_state_in, tr_ctrl_in}: begin + // $display("-> %b %b <- MATCH", state, CTRL_IN); + {next_state, CTRL_OUT} <= {tr_state_out, tr_ctrl_out}; + end + endcase + end +end + +endmodule + +// -------------------------------------------------------- +`ifndef SIMLIB_NOMEM + +module \$memrd (CLK, EN, ADDR, DATA); + +parameter MEMID = ""; +parameter ABITS = 8; +parameter WIDTH = 8; + +parameter CLK_ENABLE = 0; +parameter CLK_POLARITY = 0; +parameter TRANSPARENT = 0; + +input CLK, EN; +input [ABITS-1:0] ADDR; +output [WIDTH-1:0] DATA; + +initial begin + if (MEMID != "") begin + $display("ERROR: Found non-simulatable instance of $memrd!"); + $finish; + end +end + +endmodule + +module \$memrd_v2 (CLK, EN, ARST, SRST, ADDR, DATA); + +parameter MEMID = ""; +parameter ABITS = 8; +parameter WIDTH = 8; + +parameter CLK_ENABLE = 0; +parameter CLK_POLARITY = 0; +parameter TRANSPARENCY_MASK = 0; +parameter COLLISION_X_MASK = 0; +parameter ARST_VALUE = 0; +parameter SRST_VALUE = 0; +parameter INIT_VALUE = 0; +parameter CE_OVER_SRST = 0; + +input CLK, EN, ARST, SRST; +input [ABITS-1:0] ADDR; +output [WIDTH-1:0] DATA; + +initial begin + if (MEMID != "") begin + $display("ERROR: Found non-simulatable instance of $memrd_v2!"); + $finish; + end +end + +endmodule + +// -------------------------------------------------------- + +module \$memwr (CLK, EN, ADDR, DATA); + +parameter MEMID = ""; +parameter ABITS = 8; +parameter WIDTH = 8; + +parameter CLK_ENABLE = 0; +parameter CLK_POLARITY = 0; +parameter PRIORITY = 0; + +input CLK; +input [WIDTH-1:0] EN; +input [ABITS-1:0] ADDR; +input [WIDTH-1:0] DATA; + +initial begin + if (MEMID != "") begin + $display("ERROR: Found non-simulatable instance of $memwr!"); + $finish; + end +end + +endmodule + +module \$memwr_v2 (CLK, EN, ADDR, DATA); + +parameter MEMID = ""; +parameter ABITS = 8; +parameter WIDTH = 8; + +parameter CLK_ENABLE = 0; +parameter CLK_POLARITY = 0; +parameter PORTID = 0; +parameter PRIORITY_MASK = 0; + +input CLK; +input [WIDTH-1:0] EN; +input [ABITS-1:0] ADDR; +input [WIDTH-1:0] DATA; + +initial begin + if (MEMID != "") begin + $display("ERROR: Found non-simulatable instance of $memwr_v2!"); + $finish; + end +end + +endmodule + +// -------------------------------------------------------- + +module \$meminit (ADDR, DATA); + +parameter MEMID = ""; +parameter ABITS = 8; +parameter WIDTH = 8; +parameter WORDS = 1; + +parameter PRIORITY = 0; + +input [ABITS-1:0] ADDR; +input [WORDS*WIDTH-1:0] DATA; + +initial begin + if (MEMID != "") begin + $display("ERROR: Found non-simulatable instance of $meminit!"); + $finish; + end +end + +endmodule + +// -------------------------------------------------------- + +module \$meminit_v2 (ADDR, DATA, EN); + +parameter MEMID = ""; +parameter ABITS = 8; +parameter WIDTH = 8; +parameter WORDS = 1; + +parameter PRIORITY = 0; + +input [ABITS-1:0] ADDR; +input [WORDS*WIDTH-1:0] DATA; +input [WIDTH-1:0] EN; + +initial begin + if (MEMID != "") begin + $display("ERROR: Found non-simulatable instance of $meminit_v2!"); + $finish; + end +end + +endmodule + +// -------------------------------------------------------- + +module \$mem (RD_CLK, RD_EN, RD_ADDR, RD_DATA, WR_CLK, WR_EN, WR_ADDR, WR_DATA); + +parameter MEMID = ""; +parameter signed SIZE = 4; +parameter signed OFFSET = 0; +parameter signed ABITS = 2; +parameter signed WIDTH = 8; +parameter signed INIT = 1'bx; + +parameter signed RD_PORTS = 1; +parameter RD_CLK_ENABLE = 1'b1; +parameter RD_CLK_POLARITY = 1'b1; +parameter RD_TRANSPARENT = 1'b1; + +parameter signed WR_PORTS = 1; +parameter WR_CLK_ENABLE = 1'b1; +parameter WR_CLK_POLARITY = 1'b1; + +input [RD_PORTS-1:0] RD_CLK; +input [RD_PORTS-1:0] RD_EN; +input [RD_PORTS*ABITS-1:0] RD_ADDR; +output reg [RD_PORTS*WIDTH-1:0] RD_DATA; + +input [WR_PORTS-1:0] WR_CLK; +input [WR_PORTS*WIDTH-1:0] WR_EN; +input [WR_PORTS*ABITS-1:0] WR_ADDR; +input [WR_PORTS*WIDTH-1:0] WR_DATA; + +reg [WIDTH-1:0] memory [SIZE-1:0]; + +integer i, j; +reg [WR_PORTS-1:0] LAST_WR_CLK; +reg [RD_PORTS-1:0] LAST_RD_CLK; + +function port_active; + input clk_enable; + input clk_polarity; + input last_clk; + input this_clk; + begin + casez ({clk_enable, clk_polarity, last_clk, this_clk}) + 4'b0???: port_active = 1; + 4'b1101: port_active = 1; + 4'b1010: port_active = 1; + default: port_active = 0; + endcase + end +endfunction + +initial begin + for (i = 0; i < SIZE; i = i+1) + memory[i] = INIT >>> (i*WIDTH); +end + +always @(RD_CLK, RD_ADDR, RD_DATA, WR_CLK, WR_EN, WR_ADDR, WR_DATA) begin +`ifdef SIMLIB_MEMDELAY + #`SIMLIB_MEMDELAY; +`endif + for (i = 0; i < RD_PORTS; i = i+1) begin + if (!RD_TRANSPARENT[i] && RD_CLK_ENABLE[i] && RD_EN[i] && port_active(RD_CLK_ENABLE[i], RD_CLK_POLARITY[i], LAST_RD_CLK[i], RD_CLK[i])) begin + // $display("Read from %s: addr=%b data=%b", MEMID, RD_ADDR[i*ABITS +: ABITS], memory[RD_ADDR[i*ABITS +: ABITS] - OFFSET]); + RD_DATA[i*WIDTH +: WIDTH] <= memory[RD_ADDR[i*ABITS +: ABITS] - OFFSET]; + end + end + + for (i = 0; i < WR_PORTS; i = i+1) begin + if (port_active(WR_CLK_ENABLE[i], WR_CLK_POLARITY[i], LAST_WR_CLK[i], WR_CLK[i])) + for (j = 0; j < WIDTH; j = j+1) + if (WR_EN[i*WIDTH+j]) begin + // $display("Write to %s: addr=%b data=%b", MEMID, WR_ADDR[i*ABITS +: ABITS], WR_DATA[i*WIDTH+j]); + memory[WR_ADDR[i*ABITS +: ABITS] - OFFSET][j] = WR_DATA[i*WIDTH+j]; + end + end + + for (i = 0; i < RD_PORTS; i = i+1) begin + if ((RD_TRANSPARENT[i] || !RD_CLK_ENABLE[i]) && port_active(RD_CLK_ENABLE[i], RD_CLK_POLARITY[i], LAST_RD_CLK[i], RD_CLK[i])) begin + // $display("Transparent read from %s: addr=%b data=%b", MEMID, RD_ADDR[i*ABITS +: ABITS], memory[RD_ADDR[i*ABITS +: ABITS] - OFFSET]); + RD_DATA[i*WIDTH +: WIDTH] <= memory[RD_ADDR[i*ABITS +: ABITS] - OFFSET]; + end + end + + LAST_RD_CLK <= RD_CLK; + LAST_WR_CLK <= WR_CLK; +end + +endmodule + +module \$mem_v2 (RD_CLK, RD_EN, RD_ARST, RD_SRST, RD_ADDR, RD_DATA, WR_CLK, WR_EN, WR_ADDR, WR_DATA); + +parameter MEMID = ""; +parameter signed SIZE = 4; +parameter signed OFFSET = 0; +parameter signed ABITS = 2; +parameter signed WIDTH = 8; +parameter signed INIT = 1'bx; + +parameter signed RD_PORTS = 1; +parameter RD_CLK_ENABLE = 1'b1; +parameter RD_CLK_POLARITY = 1'b1; +parameter RD_TRANSPARENCY_MASK = 1'b0; +parameter RD_COLLISION_X_MASK = 1'b0; +parameter RD_WIDE_CONTINUATION = 1'b0; +parameter RD_CE_OVER_SRST = 1'b0; +parameter RD_ARST_VALUE = 1'b0; +parameter RD_SRST_VALUE = 1'b0; +parameter RD_INIT_VALUE = 1'b0; + +parameter signed WR_PORTS = 1; +parameter WR_CLK_ENABLE = 1'b1; +parameter WR_CLK_POLARITY = 1'b1; +parameter WR_PRIORITY_MASK = 1'b0; +parameter WR_WIDE_CONTINUATION = 1'b0; + +input [RD_PORTS-1:0] RD_CLK; +input [RD_PORTS-1:0] RD_EN; +input [RD_PORTS-1:0] RD_ARST; +input [RD_PORTS-1:0] RD_SRST; +input [RD_PORTS*ABITS-1:0] RD_ADDR; +output reg [RD_PORTS*WIDTH-1:0] RD_DATA; + +input [WR_PORTS-1:0] WR_CLK; +input [WR_PORTS*WIDTH-1:0] WR_EN; +input [WR_PORTS*ABITS-1:0] WR_ADDR; +input [WR_PORTS*WIDTH-1:0] WR_DATA; + +reg [WIDTH-1:0] memory [SIZE-1:0]; + +integer i, j, k; +reg [WR_PORTS-1:0] LAST_WR_CLK; +reg [RD_PORTS-1:0] LAST_RD_CLK; + +function port_active; + input clk_enable; + input clk_polarity; + input last_clk; + input this_clk; + begin + casez ({clk_enable, clk_polarity, last_clk, this_clk}) + 4'b0???: port_active = 1; + 4'b1101: port_active = 1; + 4'b1010: port_active = 1; + default: port_active = 0; + endcase + end +endfunction + +initial begin + for (i = 0; i < SIZE; i = i+1) + memory[i] = INIT >>> (i*WIDTH); + RD_DATA = RD_INIT_VALUE; +end + +always @(RD_CLK, RD_ARST, RD_ADDR, RD_DATA, WR_CLK, WR_EN, WR_ADDR, WR_DATA) begin +`ifdef SIMLIB_MEMDELAY + #`SIMLIB_MEMDELAY; +`endif + for (i = 0; i < RD_PORTS; i = i+1) begin + if (RD_CLK_ENABLE[i] && RD_EN[i] && port_active(RD_CLK_ENABLE[i], RD_CLK_POLARITY[i], LAST_RD_CLK[i], RD_CLK[i])) begin + // $display("Read from %s: addr=%b data=%b", MEMID, RD_ADDR[i*ABITS +: ABITS], memory[RD_ADDR[i*ABITS +: ABITS] - OFFSET]); + RD_DATA[i*WIDTH +: WIDTH] <= memory[RD_ADDR[i*ABITS +: ABITS] - OFFSET]; + + for (j = 0; j < WR_PORTS; j = j+1) begin + if (RD_TRANSPARENCY_MASK[i*WR_PORTS + j] && port_active(WR_CLK_ENABLE[j], WR_CLK_POLARITY[j], LAST_WR_CLK[j], WR_CLK[j]) && RD_ADDR[i*ABITS +: ABITS] == WR_ADDR[j*ABITS +: ABITS]) + for (k = 0; k < WIDTH; k = k+1) + if (WR_EN[j*WIDTH+k]) + RD_DATA[i*WIDTH+k] <= WR_DATA[j*WIDTH+k]; + if (RD_COLLISION_X_MASK[i*WR_PORTS + j] && port_active(WR_CLK_ENABLE[j], WR_CLK_POLARITY[j], LAST_WR_CLK[j], WR_CLK[j]) && RD_ADDR[i*ABITS +: ABITS] == WR_ADDR[j*ABITS +: ABITS]) + for (k = 0; k < WIDTH; k = k+1) + if (WR_EN[j*WIDTH+k]) + RD_DATA[i*WIDTH+k] <= 1'bx; + end + end + end + + for (i = 0; i < WR_PORTS; i = i+1) begin + if (port_active(WR_CLK_ENABLE[i], WR_CLK_POLARITY[i], LAST_WR_CLK[i], WR_CLK[i])) + for (j = 0; j < WIDTH; j = j+1) + if (WR_EN[i*WIDTH+j]) begin + // $display("Write to %s: addr=%b data=%b", MEMID, WR_ADDR[i*ABITS +: ABITS], WR_DATA[i*WIDTH+j]); + memory[WR_ADDR[i*ABITS +: ABITS] - OFFSET][j] = WR_DATA[i*WIDTH+j]; + end + end + + for (i = 0; i < RD_PORTS; i = i+1) begin + if (!RD_CLK_ENABLE[i]) begin + // $display("Combinatorial read from %s: addr=%b data=%b", MEMID, RD_ADDR[i*ABITS +: ABITS], memory[RD_ADDR[i*ABITS +: ABITS] - OFFSET]); + RD_DATA[i*WIDTH +: WIDTH] <= memory[RD_ADDR[i*ABITS +: ABITS] - OFFSET]; + end + end + + for (i = 0; i < RD_PORTS; i = i+1) begin + if (RD_SRST[i] && port_active(RD_CLK_ENABLE[i], RD_CLK_POLARITY[i], LAST_RD_CLK[i], RD_CLK[i]) && (RD_EN[i] || !RD_CE_OVER_SRST[i])) + RD_DATA[i*WIDTH +: WIDTH] <= RD_SRST_VALUE[i*WIDTH +: WIDTH]; + if (RD_ARST[i]) + RD_DATA[i*WIDTH +: WIDTH] <= RD_ARST_VALUE[i*WIDTH +: WIDTH]; + end + + LAST_RD_CLK <= RD_CLK; + LAST_WR_CLK <= WR_CLK; +end + +endmodule + +`endif + +// -------------------------------------------------------- diff --git a/resources/netlist/resources/kernel/share/techmap.v b/resources/netlist/resources/kernel/share/techmap.v new file mode 100644 index 0000000..91d385b --- /dev/null +++ b/resources/netlist/resources/kernel/share/techmap.v @@ -0,0 +1,648 @@ +/* + * yosys -- Yosys Open SYnthesis Suite + * + * Copyright (C) 2012 Claire Xenia Wolf + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * --- + * + * The internal logic cell technology mapper. + * + * This Verilog library contains the mapping of internal cells (e.g. $not with + * variable bit width) to the internal logic cells (such as the single bit $_NOT_ + * gate). Usually this logic network is then mapped to the actual technology + * using e.g. the "abc" pass. + * + * Note that this library does not map $mem cells. They must be mapped to logic + * and $dff cells using the "memory_map" pass first. (Or map it to custom cells, + * which is of course highly recommended for larger memories.) + * + */ + +`define MIN(_a, _b) ((_a) < (_b) ? (_a) : (_b)) +`define MAX(_a, _b) ((_a) > (_b) ? (_a) : (_b)) + + +// -------------------------------------------------------- +// Use simplemap for trivial cell types +// -------------------------------------------------------- + +(* techmap_simplemap *) +(* techmap_celltype = "$not $and $or $xor $xnor" *) +module _90_simplemap_bool_ops; +endmodule + +(* techmap_simplemap *) +(* techmap_celltype = "$reduce_and $reduce_or $reduce_xor $reduce_xnor $reduce_bool" *) +module _90_simplemap_reduce_ops; +endmodule + +(* techmap_simplemap *) +(* techmap_celltype = "$logic_not $logic_and $logic_or" *) +module _90_simplemap_logic_ops; +endmodule + +(* techmap_simplemap *) +(* techmap_celltype = "$eq $eqx $ne $nex" *) +module _90_simplemap_compare_ops; +endmodule + +(* techmap_simplemap *) +(* techmap_celltype = "$pos $slice $concat $mux $tribuf $bmux" *) +module _90_simplemap_various; +endmodule + +(* techmap_simplemap *) +(* techmap_celltype = "$sr $ff $dff $dffe $adff $adffe $aldff $aldffe $sdff $sdffe $sdffce $dffsr $dffsre $dlatch $adlatch $dlatchsr" *) +module _90_simplemap_registers; +endmodule + + +// -------------------------------------------------------- +// Shift operators +// -------------------------------------------------------- + +(* techmap_celltype = "$shr $shl $sshl $sshr" *) +module _90_shift_ops_shr_shl_sshl_sshr (A, B, Y); + parameter A_SIGNED = 0; + parameter B_SIGNED = 0; + parameter A_WIDTH = 1; + parameter B_WIDTH = 1; + parameter Y_WIDTH = 1; + + parameter _TECHMAP_CELLTYPE_ = ""; + localparam shift_left = _TECHMAP_CELLTYPE_ == "$shl" || _TECHMAP_CELLTYPE_ == "$sshl"; + localparam sign_extend = A_SIGNED && _TECHMAP_CELLTYPE_ == "$sshr"; + + (* force_downto *) + input [A_WIDTH-1:0] A; + (* force_downto *) + input [B_WIDTH-1:0] B; + (* force_downto *) + output [Y_WIDTH-1:0] Y; + + localparam WIDTH = `MAX(A_WIDTH, Y_WIDTH); + localparam BB_WIDTH = `MIN($clog2(shift_left ? Y_WIDTH : A_SIGNED ? WIDTH : A_WIDTH) + 1, B_WIDTH); + + wire [1023:0] _TECHMAP_DO_00_ = "proc;;"; + wire [1023:0] _TECHMAP_DO_01_ = "RECURSION; CONSTMAP; opt_muxtree; opt_expr -mux_undef -mux_bool -fine;;;"; + + integer i; + (* force_downto *) + reg [WIDTH-1:0] buffer; + reg overflow; + + always @* begin + overflow = B_WIDTH > BB_WIDTH ? |B[B_WIDTH-1:BB_WIDTH] : 1'b0; + buffer = overflow ? {WIDTH{sign_extend ? A[A_WIDTH-1] : 1'b0}} : {{WIDTH-A_WIDTH{A_SIGNED ? A[A_WIDTH-1] : 1'b0}}, A}; + + for (i = 0; i < BB_WIDTH; i = i+1) + if (B[i]) begin + if (shift_left) + buffer = {buffer, (2**i)'b0}; + else if (2**i < WIDTH) + buffer = {{2**i{sign_extend ? buffer[WIDTH-1] : 1'b0}}, buffer[WIDTH-1 : 2**i]}; + else + buffer = {WIDTH{sign_extend ? buffer[WIDTH-1] : 1'b0}}; + end + end + + assign Y = buffer; +endmodule + +(* techmap_celltype = "$shift $shiftx" *) +module _90_shift_shiftx (A, B, Y); + parameter A_SIGNED = 0; + parameter B_SIGNED = 0; + parameter A_WIDTH = 1; + parameter B_WIDTH = 1; + parameter Y_WIDTH = 1; + + (* force_downto *) + input [A_WIDTH-1:0] A; + (* force_downto *) + input [B_WIDTH-1:0] B; + (* force_downto *) + output [Y_WIDTH-1:0] Y; + + parameter _TECHMAP_CELLTYPE_ = ""; + parameter [B_WIDTH-1:0] _TECHMAP_CONSTMSK_B_ = 0; + parameter [B_WIDTH-1:0] _TECHMAP_CONSTVAL_B_ = 0; + + localparam extbit = _TECHMAP_CELLTYPE_ == "$shift" ? 1'b0 : 1'bx; + wire a_padding = _TECHMAP_CELLTYPE_ == "$shiftx" ? extbit : (A_SIGNED ? A[A_WIDTH-1] : 1'b0); + + localparam BB_WIDTH = `MIN($clog2(`MAX(A_WIDTH, Y_WIDTH)) + (B_SIGNED ? 2 : 1), B_WIDTH); + localparam WIDTH = `MAX(A_WIDTH, Y_WIDTH) + (B_SIGNED ? 2**(BB_WIDTH-1) : 0); + + wire [1023:0] _TECHMAP_DO_00_ = "proc;;"; + wire [1023:0] _TECHMAP_DO_01_ = "CONSTMAP; opt_muxtree; opt_expr -mux_undef -mux_bool -fine;;;"; + + integer i; + (* force_downto *) + reg [WIDTH-1:0] buffer; + reg overflow; + + always @* begin + overflow = 0; + buffer = {WIDTH{extbit}}; + buffer[Y_WIDTH-1:0] = {Y_WIDTH{a_padding}}; + buffer[A_WIDTH-1:0] = A; + + if (B_WIDTH > BB_WIDTH) begin + if (B_SIGNED) begin + for (i = BB_WIDTH; i < B_WIDTH; i = i+1) + if (B[i] != B[BB_WIDTH-1]) + overflow = 1; + end else + overflow = |B[B_WIDTH-1:BB_WIDTH]; + if (overflow) + buffer = {WIDTH{extbit}}; + end + + if (B_SIGNED && B[BB_WIDTH-1]) + buffer = {buffer, {2**(BB_WIDTH-1){extbit}}}; + + for (i = 0; i < (B_SIGNED ? BB_WIDTH-1 : BB_WIDTH); i = i+1) + if (B[i]) begin + if (2**i < WIDTH) + buffer = {{2**i{extbit}}, buffer[WIDTH-1 : 2**i]}; + else + buffer = {WIDTH{extbit}}; + end + end + assign Y = buffer; +endmodule + + +// -------------------------------------------------------- +// Arithmetic operators +// -------------------------------------------------------- + +(* techmap_celltype = "$fa" *) +module _90_fa (A, B, C, X, Y); + parameter WIDTH = 1; + + (* force_downto *) + input [WIDTH-1:0] A, B, C; + (* force_downto *) + output [WIDTH-1:0] X, Y; + + (* force_downto *) + wire [WIDTH-1:0] t1, t2, t3; + + assign t1 = A ^ B, t2 = A & B, t3 = C & t1; + assign Y = t1 ^ C, X = t2 | t3; +endmodule + +(* techmap_celltype = "$lcu" *) +module _90_lcu (P, G, CI, CO); + parameter WIDTH = 2; + + (* force_downto *) + input [WIDTH-1:0] P, G; + input CI; + + (* force_downto *) + output [WIDTH-1:0] CO; + + integer i, j; + (* force_downto *) + reg [WIDTH-1:0] p, g; + + wire [1023:0] _TECHMAP_DO_ = "proc; opt -fast"; + + always @* begin + p = P; + g = G; + + // in almost all cases CI will be constant zero + g[0] = g[0] | (p[0] & CI); + + // [[CITE]] Brent Kung Adder + // R. P. Brent and H. T. Kung, "A Regular Layout for Parallel Adders", + // IEEE Transaction on Computers, Vol. C-31, No. 3, p. 260-264, March, 1982 + + // Main tree + for (i = 1; i <= $clog2(WIDTH); i = i+1) begin + for (j = 2**i - 1; j < WIDTH; j = j + 2**i) begin + g[j] = g[j] | p[j] & g[j - 2**(i-1)]; + p[j] = p[j] & p[j - 2**(i-1)]; + end + end + + // Inverse tree + for (i = $clog2(WIDTH); i > 0; i = i-1) begin + for (j = 2**i + 2**(i-1) - 1; j < WIDTH; j = j + 2**i) begin + g[j] = g[j] | p[j] & g[j - 2**(i-1)]; + p[j] = p[j] & p[j - 2**(i-1)]; + end + end + end + + assign CO = g; +endmodule + +(* techmap_celltype = "$alu" *) +module _90_alu (A, B, CI, BI, X, Y, CO); + parameter A_SIGNED = 0; + parameter B_SIGNED = 0; + parameter A_WIDTH = 1; + parameter B_WIDTH = 1; + parameter Y_WIDTH = 1; + + (* force_downto *) + input [A_WIDTH-1:0] A; + (* force_downto *) + input [B_WIDTH-1:0] B; + (* force_downto *) + output [Y_WIDTH-1:0] X, Y; + + input CI, BI; + (* force_downto *) + output [Y_WIDTH-1:0] CO; + + (* force_downto *) + wire [Y_WIDTH-1:0] AA = A_buf; + (* force_downto *) + wire [Y_WIDTH-1:0] BB = BI ? ~B_buf : B_buf; + + (* force_downto *) + wire [Y_WIDTH-1:0] A_buf, B_buf; + \$pos #(.A_SIGNED(A_SIGNED), .A_WIDTH(A_WIDTH), .Y_WIDTH(Y_WIDTH)) A_conv (.A(A), .Y(A_buf)); + \$pos #(.A_SIGNED(B_SIGNED), .A_WIDTH(B_WIDTH), .Y_WIDTH(Y_WIDTH)) B_conv (.A(B), .Y(B_buf)); + + \$lcu #(.WIDTH(Y_WIDTH)) lcu (.P(X), .G(AA & BB), .CI(CI), .CO(CO)); + + assign X = AA ^ BB; + assign Y = X ^ {CO, CI}; +endmodule + +(* techmap_maccmap *) +(* techmap_celltype = "$macc" *) +module _90_macc; +endmodule + +(* techmap_wrap = "alumacc" *) +(* techmap_celltype = "$lt $le $ge $gt $add $sub $neg $mul" *) +module _90_alumacc; +endmodule + + +// -------------------------------------------------------- +// Divide and Modulo +// -------------------------------------------------------- + +module \$__div_mod_u (A, B, Y, R); + parameter WIDTH = 1; + + (* force_downto *) + input [WIDTH-1:0] A, B; + (* force_downto *) + output [WIDTH-1:0] Y, R; + + (* force_downto *) + wire [WIDTH*WIDTH-1:0] chaindata; + assign R = chaindata[WIDTH*WIDTH-1:WIDTH*(WIDTH-1)]; + + genvar i; + generate begin + for (i = 0; i < WIDTH; i=i+1) begin:stage + (* force_downto *) + wire [WIDTH-1:0] stage_in; + + if (i == 0) begin:cp + assign stage_in = A; + end else begin:cp + assign stage_in = chaindata[i*WIDTH-1:(i-1)*WIDTH]; + end + + assign Y[WIDTH-(i+1)] = stage_in >= {B, {WIDTH-(i+1){1'b0}}}; + assign chaindata[(i+1)*WIDTH-1:i*WIDTH] = Y[WIDTH-(i+1)] ? stage_in - {B, {WIDTH-(i+1){1'b0}}} : stage_in; + end + end endgenerate +endmodule + +// truncating signed division/modulo +module \$__div_mod_trunc (A, B, Y, R); + parameter A_SIGNED = 0; + parameter B_SIGNED = 0; + parameter A_WIDTH = 1; + parameter B_WIDTH = 1; + parameter Y_WIDTH = 1; + + localparam WIDTH = + A_WIDTH >= B_WIDTH && A_WIDTH >= Y_WIDTH ? A_WIDTH : + B_WIDTH >= A_WIDTH && B_WIDTH >= Y_WIDTH ? B_WIDTH : Y_WIDTH; + + (* force_downto *) + input [A_WIDTH-1:0] A; + (* force_downto *) + input [B_WIDTH-1:0] B; + (* force_downto *) + output [Y_WIDTH-1:0] Y, R; + + (* force_downto *) + wire [WIDTH-1:0] A_buf, B_buf; + \$pos #(.A_SIGNED(A_SIGNED), .A_WIDTH(A_WIDTH), .Y_WIDTH(WIDTH)) A_conv (.A(A), .Y(A_buf)); + \$pos #(.A_SIGNED(B_SIGNED), .A_WIDTH(B_WIDTH), .Y_WIDTH(WIDTH)) B_conv (.A(B), .Y(B_buf)); + + (* force_downto *) + wire [WIDTH-1:0] A_buf_u, B_buf_u, Y_u, R_u; + assign A_buf_u = A_SIGNED && A_buf[WIDTH-1] ? -A_buf : A_buf; + assign B_buf_u = B_SIGNED && B_buf[WIDTH-1] ? -B_buf : B_buf; + + \$__div_mod_u #( + .WIDTH(WIDTH) + ) div_mod_u ( + .A(A_buf_u), + .B(B_buf_u), + .Y(Y_u), + .R(R_u) + ); + + assign Y = A_SIGNED && B_SIGNED && (A_buf[WIDTH-1] != B_buf[WIDTH-1]) ? -Y_u : Y_u; + assign R = A_SIGNED && B_SIGNED && A_buf[WIDTH-1] ? -R_u : R_u; +endmodule + +(* techmap_celltype = "$div" *) +module _90_div (A, B, Y); + parameter A_SIGNED = 0; + parameter B_SIGNED = 0; + parameter A_WIDTH = 1; + parameter B_WIDTH = 1; + parameter Y_WIDTH = 1; + + (* force_downto *) + input [A_WIDTH-1:0] A; + (* force_downto *) + input [B_WIDTH-1:0] B; + (* force_downto *) + output [Y_WIDTH-1:0] Y; + + \$__div_mod_trunc #( + .A_SIGNED(A_SIGNED), + .B_SIGNED(B_SIGNED), + .A_WIDTH(A_WIDTH), + .B_WIDTH(B_WIDTH), + .Y_WIDTH(Y_WIDTH) + ) div_mod ( + .A(A), + .B(B), + .Y(Y) + ); +endmodule + +(* techmap_celltype = "$mod" *) +module _90_mod (A, B, Y); + parameter A_SIGNED = 0; + parameter B_SIGNED = 0; + parameter A_WIDTH = 1; + parameter B_WIDTH = 1; + parameter Y_WIDTH = 1; + + (* force_downto *) + input [A_WIDTH-1:0] A; + (* force_downto *) + input [B_WIDTH-1:0] B; + (* force_downto *) + output [Y_WIDTH-1:0] Y; + + \$__div_mod_trunc #( + .A_SIGNED(A_SIGNED), + .B_SIGNED(B_SIGNED), + .A_WIDTH(A_WIDTH), + .B_WIDTH(B_WIDTH), + .Y_WIDTH(Y_WIDTH) + ) div_mod ( + .A(A), + .B(B), + .R(Y) + ); +endmodule + +// flooring signed division/modulo +module \$__div_mod_floor (A, B, Y, R); + parameter A_SIGNED = 0; + parameter B_SIGNED = 0; + parameter A_WIDTH = 1; + parameter B_WIDTH = 1; + parameter Y_WIDTH = 1; + + localparam WIDTH = + A_WIDTH >= B_WIDTH && A_WIDTH >= Y_WIDTH ? A_WIDTH : + B_WIDTH >= A_WIDTH && B_WIDTH >= Y_WIDTH ? B_WIDTH : Y_WIDTH; + + input [A_WIDTH-1:0] A; + input [B_WIDTH-1:0] B; + output [Y_WIDTH-1:0] Y, R; + + wire [WIDTH-1:0] A_buf, B_buf; + \$pos #(.A_SIGNED(A_SIGNED), .A_WIDTH(A_WIDTH), .Y_WIDTH(WIDTH)) A_conv (.A(A), .Y(A_buf)); + \$pos #(.A_SIGNED(B_SIGNED), .A_WIDTH(B_WIDTH), .Y_WIDTH(WIDTH)) B_conv (.A(B), .Y(B_buf)); + + wire [WIDTH-1:0] A_buf_u, B_buf_u, Y_u, R_u, R_s; + assign A_buf_u = A_SIGNED && A_buf[WIDTH-1] ? -A_buf : A_buf; + assign B_buf_u = B_SIGNED && B_buf[WIDTH-1] ? -B_buf : B_buf; + + \$__div_mod_u #( + .WIDTH(WIDTH) + ) div_mod_u ( + .A(A_buf_u), + .B(B_buf_u), + .Y(Y_u), + .R(R_u) + ); + + // For negative results, if there was a remainder, subtract one to turn + // the round towards 0 into a round towards -inf + assign Y = A_SIGNED && B_SIGNED && (A_buf[WIDTH-1] != B_buf[WIDTH-1]) ? (R_u == 0 ? -Y_u : -Y_u-1) : Y_u; + + // truncating modulo + assign R_s = A_SIGNED && B_SIGNED && A_buf[WIDTH-1] ? -R_u : R_u; + // Flooring modulo differs from truncating modulo only if it is nonzero and + // A and B have different signs - then `floor - trunc = B` + assign R = (R_s != 0) && A_SIGNED && B_SIGNED && (A_buf[WIDTH-1] != B_buf[WIDTH-1]) ? $signed(B_buf) + $signed(R_s) : R_s; +endmodule + +(* techmap_celltype = "$divfloor" *) +module _90_divfloor (A, B, Y); + parameter A_SIGNED = 0; + parameter B_SIGNED = 0; + parameter A_WIDTH = 1; + parameter B_WIDTH = 1; + parameter Y_WIDTH = 1; + + (* force_downto *) + input [A_WIDTH-1:0] A; + (* force_downto *) + input [B_WIDTH-1:0] B; + (* force_downto *) + output [Y_WIDTH-1:0] Y; + + \$__div_mod_floor #( + .A_SIGNED(A_SIGNED), + .B_SIGNED(B_SIGNED), + .A_WIDTH(A_WIDTH), + .B_WIDTH(B_WIDTH), + .Y_WIDTH(Y_WIDTH) + ) div_mod ( + .A(A), + .B(B), + .Y(Y) + ); +endmodule + +(* techmap_celltype = "$modfloor" *) +module _90_modfloor (A, B, Y); + parameter A_SIGNED = 0; + parameter B_SIGNED = 0; + parameter A_WIDTH = 1; + parameter B_WIDTH = 1; + parameter Y_WIDTH = 1; + + (* force_downto *) + input [A_WIDTH-1:0] A; + (* force_downto *) + input [B_WIDTH-1:0] B; + (* force_downto *) + output [Y_WIDTH-1:0] Y; + + \$__div_mod_floor #( + .A_SIGNED(A_SIGNED), + .B_SIGNED(B_SIGNED), + .A_WIDTH(A_WIDTH), + .B_WIDTH(B_WIDTH), + .Y_WIDTH(Y_WIDTH) + ) div_mod ( + .A(A), + .B(B), + .R(Y) + ); +endmodule + + +// -------------------------------------------------------- +// Power +// -------------------------------------------------------- + +(* techmap_celltype = "$pow" *) +module _90_pow (A, B, Y); + parameter A_SIGNED = 0; + parameter B_SIGNED = 0; + parameter A_WIDTH = 1; + parameter B_WIDTH = 1; + parameter Y_WIDTH = 1; + + (* force_downto *) + input [A_WIDTH-1:0] A; + (* force_downto *) + input [B_WIDTH-1:0] B; + (* force_downto *) + output [Y_WIDTH-1:0] Y; + + wire _TECHMAP_FAIL_ = 1; +endmodule + + +// -------------------------------------------------------- +// Parallel Multiplexers +// -------------------------------------------------------- + +(* techmap_celltype = "$pmux" *) +module _90_pmux (A, B, S, Y); + parameter WIDTH = 1; + parameter S_WIDTH = 1; + + (* force_downto *) + input [WIDTH-1:0] A; + (* force_downto *) + input [WIDTH*S_WIDTH-1:0] B; + (* force_downto *) + input [S_WIDTH-1:0] S; + (* force_downto *) + output [WIDTH-1:0] Y; + + (* force_downto *) + wire [WIDTH-1:0] Y_B; + + genvar i, j; + generate + (* force_downto *) + wire [WIDTH*S_WIDTH-1:0] B_AND_S; + for (i = 0; i < S_WIDTH; i = i + 1) begin:B_AND + assign B_AND_S[WIDTH*(i+1)-1:WIDTH*i] = B[WIDTH*(i+1)-1:WIDTH*i] & {WIDTH{S[i]}}; + end:B_AND + for (i = 0; i < WIDTH; i = i + 1) begin:B_OR + (* force_downto *) + wire [S_WIDTH-1:0] B_AND_BITS; + for (j = 0; j < S_WIDTH; j = j + 1) begin:B_AND_BITS_COLLECT + assign B_AND_BITS[j] = B_AND_S[WIDTH*j+i]; + end:B_AND_BITS_COLLECT + assign Y_B[i] = |B_AND_BITS; + end:B_OR + endgenerate + + assign Y = |S ? Y_B : A; +endmodule + +// -------------------------------------------------------- +// Demultiplexers +// -------------------------------------------------------- + +(* techmap_celltype = "$demux" *) +module _90_demux (A, S, Y); + parameter WIDTH = 1; + parameter S_WIDTH = 1; + + (* force_downto *) + input [WIDTH-1:0] A; + (* force_downto *) + input [S_WIDTH-1:0] S; + (* force_downto *) + output [(WIDTH << S_WIDTH)-1:0] Y; + + generate + if (S_WIDTH == 0) begin + assign Y = A; + end else if (S_WIDTH == 1) begin + assign Y[0+:WIDTH] = S ? 0 : A; + assign Y[WIDTH+:WIDTH] = S ? A : 0; + end else begin + localparam SPLIT = S_WIDTH / 2; + wire [(1 << (S_WIDTH-SPLIT))-1:0] YH; + wire [(1 << SPLIT)-1:0] YL; + $demux #(.WIDTH(1), .S_WIDTH(SPLIT)) lo (.A(1'b1), .S(S[SPLIT-1:0]), .Y(YL)); + $demux #(.WIDTH(1), .S_WIDTH(S_WIDTH-SPLIT)) hi (.A(1'b1), .S(S[S_WIDTH-1:SPLIT]), .Y(YH)); + genvar i; + for (i = 0; i < (1 << S_WIDTH); i = i + 1) begin + localparam [S_WIDTH-1:0] IDX = i; + assign Y[i*WIDTH+:WIDTH] = (YL[IDX[SPLIT-1:0]] & YH[IDX[S_WIDTH-1:SPLIT]]) ? A : 0; + end + end + endgenerate +endmodule + + +// -------------------------------------------------------- +// LUTs +// -------------------------------------------------------- + +`ifndef NOLUT +(* techmap_simplemap *) +(* techmap_celltype = "$lut $sop" *) +module _90_lut; +endmodule +`endif + diff --git a/resources/netlist/resources/kernel/share/xilinx/abc9_model.v b/resources/netlist/resources/kernel/share/xilinx/abc9_model.v new file mode 100644 index 0000000..3958a2b --- /dev/null +++ b/resources/netlist/resources/kernel/share/xilinx/abc9_model.v @@ -0,0 +1,39 @@ +/* + * yosys -- Yosys Open SYnthesis Suite + * + * Copyright (C) 2012 Claire Xenia Wolf + * 2019 Eddie Hung + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + */ + +// ============================================================================ + +// Box containing MUXF7.[AB] + MUXF8, +// Necessary to make these an atomic unit so that +// ABC cannot optimise just one of the MUXF7 away +// and expect to save on its delay +(* abc9_box, lib_whitebox *) +module \$__XILINX_MUXF78 (output O, input I0, I1, I2, I3, S0, S1); + assign O = S1 ? (S0 ? I3 : I2) + : (S0 ? I1 : I0); + specify + (I0 => O) = 294; + (I1 => O) = 297; + (I2 => O) = 311; + (I3 => O) = 317; + (S0 => O) = 390; + (S1 => O) = 273; + endspecify +endmodule diff --git a/resources/netlist/resources/kernel/share/xilinx/arith_map.v b/resources/netlist/resources/kernel/share/xilinx/arith_map.v new file mode 100644 index 0000000..1282f56 --- /dev/null +++ b/resources/netlist/resources/kernel/share/xilinx/arith_map.v @@ -0,0 +1,202 @@ +/* + * yosys -- Yosys Open SYnthesis Suite + * + * Copyright (C) 2012 Claire Xenia Wolf + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + */ + +// ============================================================================ +// LCU + +(* techmap_celltype = "$lcu" *) +module _80_xilinx_lcu (P, G, CI, CO); + parameter WIDTH = 2; + + (* force_downto *) + input [WIDTH-1:0] P, G; + input CI; + + (* force_downto *) + output [WIDTH-1:0] CO; + + wire _TECHMAP_FAIL_ = WIDTH <= 2; + + genvar i; + +generate if (`LUT_SIZE == 4) begin + + (* force_downto *) + wire [WIDTH-1:0] C = {CO, CI}; + (* force_downto *) + wire [WIDTH-1:0] S = P & ~G; + + generate for (i = 0; i < WIDTH; i = i + 1) begin:slice + MUXCY muxcy ( + .CI(C[i]), + .DI(G[i]), + .S(S[i]), + .O(CO[i]) + ); + end endgenerate + +end else begin + + localparam CARRY4_COUNT = (WIDTH + 3) / 4; + localparam MAX_WIDTH = CARRY4_COUNT * 4; + localparam PAD_WIDTH = MAX_WIDTH - WIDTH; + + (* force_downto *) + wire [MAX_WIDTH-1:0] S = {{PAD_WIDTH{1'b0}}, P & ~G}; + (* force_downto *) + wire [MAX_WIDTH-1:0] GG = {{PAD_WIDTH{1'b0}}, G}; + (* force_downto *) + wire [MAX_WIDTH-1:0] C; + assign CO = C; + + generate for (i = 0; i < CARRY4_COUNT; i = i + 1) begin:slice + if (i == 0) begin + CARRY4 carry4 + ( + .CYINIT(CI), + .CI (1'd0), + .DI (GG[i*4 +: 4]), + .S (S [i*4 +: 4]), + .CO (C [i*4 +: 4]), + ); + end else begin + CARRY4 carry4 + ( + .CYINIT(1'd0), + .CI (C [i*4 - 1]), + .DI (GG[i*4 +: 4]), + .S (S [i*4 +: 4]), + .CO (C [i*4 +: 4]), + ); + end + end endgenerate +end endgenerate + +endmodule + + +// ============================================================================ +// ALU + +(* techmap_celltype = "$alu" *) +module _80_xilinx_alu (A, B, CI, BI, X, Y, CO); + parameter A_SIGNED = 0; + parameter B_SIGNED = 0; + parameter A_WIDTH = 1; + parameter B_WIDTH = 1; + parameter Y_WIDTH = 1; + parameter _TECHMAP_CONSTVAL_CI_ = 0; + parameter _TECHMAP_CONSTMSK_CI_ = 0; + + (* force_downto *) + input [A_WIDTH-1:0] A; + (* force_downto *) + input [B_WIDTH-1:0] B; + (* force_downto *) + output [Y_WIDTH-1:0] X, Y; + + input CI, BI; + (* force_downto *) + output [Y_WIDTH-1:0] CO; + + wire _TECHMAP_FAIL_ = Y_WIDTH <= 2; + + (* force_downto *) + wire [Y_WIDTH-1:0] A_buf, B_buf; + \$pos #(.A_SIGNED(A_SIGNED), .A_WIDTH(A_WIDTH), .Y_WIDTH(Y_WIDTH)) A_conv (.A(A), .Y(A_buf)); + \$pos #(.A_SIGNED(B_SIGNED), .A_WIDTH(B_WIDTH), .Y_WIDTH(Y_WIDTH)) B_conv (.A(B), .Y(B_buf)); + + (* force_downto *) + wire [Y_WIDTH-1:0] AA = A_buf; + (* force_downto *) + wire [Y_WIDTH-1:0] BB = BI ? ~B_buf : B_buf; + + genvar i; + +generate if (`LUT_SIZE == 4) begin + + (* force_downto *) + wire [Y_WIDTH-1:0] C = {CO, CI}; + (* force_downto *) + wire [Y_WIDTH-1:0] S = {AA ^ BB}; + + genvar i; + generate for (i = 0; i < Y_WIDTH; i = i + 1) begin:slice + MUXCY muxcy ( + .CI(C[i]), + .DI(AA[i]), + .S(S[i]), + .O(CO[i]) + ); + XORCY xorcy ( + .CI(C[i]), + .LI(S[i]), + .O(Y[i]) + ); + end endgenerate + + assign X = S; + +end else begin + + localparam CARRY4_COUNT = (Y_WIDTH + 3) / 4; + localparam MAX_WIDTH = CARRY4_COUNT * 4; + localparam PAD_WIDTH = MAX_WIDTH - Y_WIDTH; + + (* force_downto *) + wire [MAX_WIDTH-1:0] S = {{PAD_WIDTH{1'b0}}, AA ^ BB}; + (* force_downto *) + wire [MAX_WIDTH-1:0] DI = {{PAD_WIDTH{1'b0}}, AA}; + + (* force_downto *) + wire [MAX_WIDTH-1:0] O; + (* force_downto *) + wire [MAX_WIDTH-1:0] C; + assign Y = O, CO = C; + + genvar i; + generate for (i = 0; i < CARRY4_COUNT; i = i + 1) begin:slice + if (i == 0) begin + CARRY4 carry4 + ( + .CYINIT(CI), + .CI (1'd0), + .DI (DI[i*4 +: 4]), + .S (S [i*4 +: 4]), + .O (O [i*4 +: 4]), + .CO (C [i*4 +: 4]) + ); + end else begin + CARRY4 carry4 + ( + .CYINIT(1'd0), + .CI (C [i*4 - 1]), + .DI (DI[i*4 +: 4]), + .S (S [i*4 +: 4]), + .O (O [i*4 +: 4]), + .CO (C [i*4 +: 4]) + ); + end + end endgenerate + + assign X = S; + +end endgenerate +endmodule + diff --git a/resources/netlist/resources/kernel/share/xilinx/brams_defs.vh b/resources/netlist/resources/kernel/share/xilinx/brams_defs.vh new file mode 100644 index 0000000..69fe5d7 --- /dev/null +++ b/resources/netlist/resources/kernel/share/xilinx/brams_defs.vh @@ -0,0 +1,561 @@ +`define PARAMS_INIT_9 \ + .INIT_00(slice_init('h00)), \ + .INIT_01(slice_init('h01)), \ + .INIT_02(slice_init('h02)), \ + .INIT_03(slice_init('h03)), \ + .INIT_04(slice_init('h04)), \ + .INIT_05(slice_init('h05)), \ + .INIT_06(slice_init('h06)), \ + .INIT_07(slice_init('h07)), \ + .INIT_08(slice_init('h08)), \ + .INIT_09(slice_init('h09)), \ + .INIT_0A(slice_init('h0a)), \ + .INIT_0B(slice_init('h0b)), \ + .INIT_0C(slice_init('h0c)), \ + .INIT_0D(slice_init('h0d)), \ + .INIT_0E(slice_init('h0e)), \ + .INIT_0F(slice_init('h0f)), \ + .INIT_10(slice_init('h10)), \ + .INIT_11(slice_init('h11)), \ + .INIT_12(slice_init('h12)), \ + .INIT_13(slice_init('h13)), \ + .INIT_14(slice_init('h14)), \ + .INIT_15(slice_init('h15)), \ + .INIT_16(slice_init('h16)), \ + .INIT_17(slice_init('h17)), \ + .INIT_18(slice_init('h18)), \ + .INIT_19(slice_init('h19)), \ + .INIT_1A(slice_init('h1a)), \ + .INIT_1B(slice_init('h1b)), \ + .INIT_1C(slice_init('h1c)), \ + .INIT_1D(slice_init('h1d)), \ + .INIT_1E(slice_init('h1e)), \ + .INIT_1F(slice_init('h1f)), + +`define PARAMS_INITP_9 \ + .INITP_00(slice_initp('h00)), \ + .INITP_01(slice_initp('h01)), \ + .INITP_02(slice_initp('h02)), \ + .INITP_03(slice_initp('h03)), + +`define PARAMS_INIT_18 \ + .INIT_00(slice_init('h00)), \ + .INIT_01(slice_init('h01)), \ + .INIT_02(slice_init('h02)), \ + .INIT_03(slice_init('h03)), \ + .INIT_04(slice_init('h04)), \ + .INIT_05(slice_init('h05)), \ + .INIT_06(slice_init('h06)), \ + .INIT_07(slice_init('h07)), \ + .INIT_08(slice_init('h08)), \ + .INIT_09(slice_init('h09)), \ + .INIT_0A(slice_init('h0a)), \ + .INIT_0B(slice_init('h0b)), \ + .INIT_0C(slice_init('h0c)), \ + .INIT_0D(slice_init('h0d)), \ + .INIT_0E(slice_init('h0e)), \ + .INIT_0F(slice_init('h0f)), \ + .INIT_10(slice_init('h10)), \ + .INIT_11(slice_init('h11)), \ + .INIT_12(slice_init('h12)), \ + .INIT_13(slice_init('h13)), \ + .INIT_14(slice_init('h14)), \ + .INIT_15(slice_init('h15)), \ + .INIT_16(slice_init('h16)), \ + .INIT_17(slice_init('h17)), \ + .INIT_18(slice_init('h18)), \ + .INIT_19(slice_init('h19)), \ + .INIT_1A(slice_init('h1a)), \ + .INIT_1B(slice_init('h1b)), \ + .INIT_1C(slice_init('h1c)), \ + .INIT_1D(slice_init('h1d)), \ + .INIT_1E(slice_init('h1e)), \ + .INIT_1F(slice_init('h1f)), \ + .INIT_20(slice_init('h20)), \ + .INIT_21(slice_init('h21)), \ + .INIT_22(slice_init('h22)), \ + .INIT_23(slice_init('h23)), \ + .INIT_24(slice_init('h24)), \ + .INIT_25(slice_init('h25)), \ + .INIT_26(slice_init('h26)), \ + .INIT_27(slice_init('h27)), \ + .INIT_28(slice_init('h28)), \ + .INIT_29(slice_init('h29)), \ + .INIT_2A(slice_init('h2a)), \ + .INIT_2B(slice_init('h2b)), \ + .INIT_2C(slice_init('h2c)), \ + .INIT_2D(slice_init('h2d)), \ + .INIT_2E(slice_init('h2e)), \ + .INIT_2F(slice_init('h2f)), \ + .INIT_30(slice_init('h30)), \ + .INIT_31(slice_init('h31)), \ + .INIT_32(slice_init('h32)), \ + .INIT_33(slice_init('h33)), \ + .INIT_34(slice_init('h34)), \ + .INIT_35(slice_init('h35)), \ + .INIT_36(slice_init('h36)), \ + .INIT_37(slice_init('h37)), \ + .INIT_38(slice_init('h38)), \ + .INIT_39(slice_init('h39)), \ + .INIT_3A(slice_init('h3a)), \ + .INIT_3B(slice_init('h3b)), \ + .INIT_3C(slice_init('h3c)), \ + .INIT_3D(slice_init('h3d)), \ + .INIT_3E(slice_init('h3e)), \ + .INIT_3F(slice_init('h3f)), + +`define PARAMS_INIT_18_U \ + .INIT_00(slice_init('h40)), \ + .INIT_01(slice_init('h41)), \ + .INIT_02(slice_init('h42)), \ + .INIT_03(slice_init('h43)), \ + .INIT_04(slice_init('h44)), \ + .INIT_05(slice_init('h45)), \ + .INIT_06(slice_init('h46)), \ + .INIT_07(slice_init('h47)), \ + .INIT_08(slice_init('h48)), \ + .INIT_09(slice_init('h49)), \ + .INIT_0A(slice_init('h4a)), \ + .INIT_0B(slice_init('h4b)), \ + .INIT_0C(slice_init('h4c)), \ + .INIT_0D(slice_init('h4d)), \ + .INIT_0E(slice_init('h4e)), \ + .INIT_0F(slice_init('h4f)), \ + .INIT_10(slice_init('h50)), \ + .INIT_11(slice_init('h51)), \ + .INIT_12(slice_init('h52)), \ + .INIT_13(slice_init('h53)), \ + .INIT_14(slice_init('h54)), \ + .INIT_15(slice_init('h55)), \ + .INIT_16(slice_init('h56)), \ + .INIT_17(slice_init('h57)), \ + .INIT_18(slice_init('h58)), \ + .INIT_19(slice_init('h59)), \ + .INIT_1A(slice_init('h5a)), \ + .INIT_1B(slice_init('h5b)), \ + .INIT_1C(slice_init('h5c)), \ + .INIT_1D(slice_init('h5d)), \ + .INIT_1E(slice_init('h5e)), \ + .INIT_1F(slice_init('h5f)), \ + .INIT_20(slice_init('h60)), \ + .INIT_21(slice_init('h61)), \ + .INIT_22(slice_init('h62)), \ + .INIT_23(slice_init('h63)), \ + .INIT_24(slice_init('h64)), \ + .INIT_25(slice_init('h65)), \ + .INIT_26(slice_init('h66)), \ + .INIT_27(slice_init('h67)), \ + .INIT_28(slice_init('h68)), \ + .INIT_29(slice_init('h69)), \ + .INIT_2A(slice_init('h6a)), \ + .INIT_2B(slice_init('h6b)), \ + .INIT_2C(slice_init('h6c)), \ + .INIT_2D(slice_init('h6d)), \ + .INIT_2E(slice_init('h6e)), \ + .INIT_2F(slice_init('h6f)), \ + .INIT_30(slice_init('h70)), \ + .INIT_31(slice_init('h71)), \ + .INIT_32(slice_init('h72)), \ + .INIT_33(slice_init('h73)), \ + .INIT_34(slice_init('h74)), \ + .INIT_35(slice_init('h75)), \ + .INIT_36(slice_init('h76)), \ + .INIT_37(slice_init('h77)), \ + .INIT_38(slice_init('h78)), \ + .INIT_39(slice_init('h79)), \ + .INIT_3A(slice_init('h7a)), \ + .INIT_3B(slice_init('h7b)), \ + .INIT_3C(slice_init('h7c)), \ + .INIT_3D(slice_init('h7d)), \ + .INIT_3E(slice_init('h7e)), \ + .INIT_3F(slice_init('h7f)), + +`define PARAMS_INITP_18 \ + .INITP_00(slice_initp('h00)), \ + .INITP_01(slice_initp('h01)), \ + .INITP_02(slice_initp('h02)), \ + .INITP_03(slice_initp('h03)), \ + .INITP_04(slice_initp('h04)), \ + .INITP_05(slice_initp('h05)), \ + .INITP_06(slice_initp('h06)), \ + .INITP_07(slice_initp('h07)), + +`define PARAMS_INIT_36 \ + .INIT_00(slice_init('h00)), \ + .INIT_01(slice_init('h01)), \ + .INIT_02(slice_init('h02)), \ + .INIT_03(slice_init('h03)), \ + .INIT_04(slice_init('h04)), \ + .INIT_05(slice_init('h05)), \ + .INIT_06(slice_init('h06)), \ + .INIT_07(slice_init('h07)), \ + .INIT_08(slice_init('h08)), \ + .INIT_09(slice_init('h09)), \ + .INIT_0A(slice_init('h0a)), \ + .INIT_0B(slice_init('h0b)), \ + .INIT_0C(slice_init('h0c)), \ + .INIT_0D(slice_init('h0d)), \ + .INIT_0E(slice_init('h0e)), \ + .INIT_0F(slice_init('h0f)), \ + .INIT_10(slice_init('h10)), \ + .INIT_11(slice_init('h11)), \ + .INIT_12(slice_init('h12)), \ + .INIT_13(slice_init('h13)), \ + .INIT_14(slice_init('h14)), \ + .INIT_15(slice_init('h15)), \ + .INIT_16(slice_init('h16)), \ + .INIT_17(slice_init('h17)), \ + .INIT_18(slice_init('h18)), \ + .INIT_19(slice_init('h19)), \ + .INIT_1A(slice_init('h1a)), \ + .INIT_1B(slice_init('h1b)), \ + .INIT_1C(slice_init('h1c)), \ + .INIT_1D(slice_init('h1d)), \ + .INIT_1E(slice_init('h1e)), \ + .INIT_1F(slice_init('h1f)), \ + .INIT_20(slice_init('h20)), \ + .INIT_21(slice_init('h21)), \ + .INIT_22(slice_init('h22)), \ + .INIT_23(slice_init('h23)), \ + .INIT_24(slice_init('h24)), \ + .INIT_25(slice_init('h25)), \ + .INIT_26(slice_init('h26)), \ + .INIT_27(slice_init('h27)), \ + .INIT_28(slice_init('h28)), \ + .INIT_29(slice_init('h29)), \ + .INIT_2A(slice_init('h2a)), \ + .INIT_2B(slice_init('h2b)), \ + .INIT_2C(slice_init('h2c)), \ + .INIT_2D(slice_init('h2d)), \ + .INIT_2E(slice_init('h2e)), \ + .INIT_2F(slice_init('h2f)), \ + .INIT_30(slice_init('h30)), \ + .INIT_31(slice_init('h31)), \ + .INIT_32(slice_init('h32)), \ + .INIT_33(slice_init('h33)), \ + .INIT_34(slice_init('h34)), \ + .INIT_35(slice_init('h35)), \ + .INIT_36(slice_init('h36)), \ + .INIT_37(slice_init('h37)), \ + .INIT_38(slice_init('h38)), \ + .INIT_39(slice_init('h39)), \ + .INIT_3A(slice_init('h3a)), \ + .INIT_3B(slice_init('h3b)), \ + .INIT_3C(slice_init('h3c)), \ + .INIT_3D(slice_init('h3d)), \ + .INIT_3E(slice_init('h3e)), \ + .INIT_3F(slice_init('h3f)), \ + .INIT_40(slice_init('h40)), \ + .INIT_41(slice_init('h41)), \ + .INIT_42(slice_init('h42)), \ + .INIT_43(slice_init('h43)), \ + .INIT_44(slice_init('h44)), \ + .INIT_45(slice_init('h45)), \ + .INIT_46(slice_init('h46)), \ + .INIT_47(slice_init('h47)), \ + .INIT_48(slice_init('h48)), \ + .INIT_49(slice_init('h49)), \ + .INIT_4A(slice_init('h4a)), \ + .INIT_4B(slice_init('h4b)), \ + .INIT_4C(slice_init('h4c)), \ + .INIT_4D(slice_init('h4d)), \ + .INIT_4E(slice_init('h4e)), \ + .INIT_4F(slice_init('h4f)), \ + .INIT_50(slice_init('h50)), \ + .INIT_51(slice_init('h51)), \ + .INIT_52(slice_init('h52)), \ + .INIT_53(slice_init('h53)), \ + .INIT_54(slice_init('h54)), \ + .INIT_55(slice_init('h55)), \ + .INIT_56(slice_init('h56)), \ + .INIT_57(slice_init('h57)), \ + .INIT_58(slice_init('h58)), \ + .INIT_59(slice_init('h59)), \ + .INIT_5A(slice_init('h5a)), \ + .INIT_5B(slice_init('h5b)), \ + .INIT_5C(slice_init('h5c)), \ + .INIT_5D(slice_init('h5d)), \ + .INIT_5E(slice_init('h5e)), \ + .INIT_5F(slice_init('h5f)), \ + .INIT_60(slice_init('h60)), \ + .INIT_61(slice_init('h61)), \ + .INIT_62(slice_init('h62)), \ + .INIT_63(slice_init('h63)), \ + .INIT_64(slice_init('h64)), \ + .INIT_65(slice_init('h65)), \ + .INIT_66(slice_init('h66)), \ + .INIT_67(slice_init('h67)), \ + .INIT_68(slice_init('h68)), \ + .INIT_69(slice_init('h69)), \ + .INIT_6A(slice_init('h6a)), \ + .INIT_6B(slice_init('h6b)), \ + .INIT_6C(slice_init('h6c)), \ + .INIT_6D(slice_init('h6d)), \ + .INIT_6E(slice_init('h6e)), \ + .INIT_6F(slice_init('h6f)), \ + .INIT_70(slice_init('h70)), \ + .INIT_71(slice_init('h71)), \ + .INIT_72(slice_init('h72)), \ + .INIT_73(slice_init('h73)), \ + .INIT_74(slice_init('h74)), \ + .INIT_75(slice_init('h75)), \ + .INIT_76(slice_init('h76)), \ + .INIT_77(slice_init('h77)), \ + .INIT_78(slice_init('h78)), \ + .INIT_79(slice_init('h79)), \ + .INIT_7A(slice_init('h7a)), \ + .INIT_7B(slice_init('h7b)), \ + .INIT_7C(slice_init('h7c)), \ + .INIT_7D(slice_init('h7d)), \ + .INIT_7E(slice_init('h7e)), \ + .INIT_7F(slice_init('h7f)), + +`define PARAMS_INIT_36_U \ + .INIT_00(slice_init('h80)), \ + .INIT_01(slice_init('h81)), \ + .INIT_02(slice_init('h82)), \ + .INIT_03(slice_init('h83)), \ + .INIT_04(slice_init('h84)), \ + .INIT_05(slice_init('h85)), \ + .INIT_06(slice_init('h86)), \ + .INIT_07(slice_init('h87)), \ + .INIT_08(slice_init('h88)), \ + .INIT_09(slice_init('h89)), \ + .INIT_0A(slice_init('h8a)), \ + .INIT_0B(slice_init('h8b)), \ + .INIT_0C(slice_init('h8c)), \ + .INIT_0D(slice_init('h8d)), \ + .INIT_0E(slice_init('h8e)), \ + .INIT_0F(slice_init('h8f)), \ + .INIT_10(slice_init('h90)), \ + .INIT_11(slice_init('h91)), \ + .INIT_12(slice_init('h92)), \ + .INIT_13(slice_init('h93)), \ + .INIT_14(slice_init('h94)), \ + .INIT_15(slice_init('h95)), \ + .INIT_16(slice_init('h96)), \ + .INIT_17(slice_init('h97)), \ + .INIT_18(slice_init('h98)), \ + .INIT_19(slice_init('h99)), \ + .INIT_1A(slice_init('h9a)), \ + .INIT_1B(slice_init('h9b)), \ + .INIT_1C(slice_init('h9c)), \ + .INIT_1D(slice_init('h9d)), \ + .INIT_1E(slice_init('h9e)), \ + .INIT_1F(slice_init('h9f)), \ + .INIT_20(slice_init('ha0)), \ + .INIT_21(slice_init('ha1)), \ + .INIT_22(slice_init('ha2)), \ + .INIT_23(slice_init('ha3)), \ + .INIT_24(slice_init('ha4)), \ + .INIT_25(slice_init('ha5)), \ + .INIT_26(slice_init('ha6)), \ + .INIT_27(slice_init('ha7)), \ + .INIT_28(slice_init('ha8)), \ + .INIT_29(slice_init('ha9)), \ + .INIT_2A(slice_init('haa)), \ + .INIT_2B(slice_init('hab)), \ + .INIT_2C(slice_init('hac)), \ + .INIT_2D(slice_init('had)), \ + .INIT_2E(slice_init('hae)), \ + .INIT_2F(slice_init('haf)), \ + .INIT_30(slice_init('hb0)), \ + .INIT_31(slice_init('hb1)), \ + .INIT_32(slice_init('hb2)), \ + .INIT_33(slice_init('hb3)), \ + .INIT_34(slice_init('hb4)), \ + .INIT_35(slice_init('hb5)), \ + .INIT_36(slice_init('hb6)), \ + .INIT_37(slice_init('hb7)), \ + .INIT_38(slice_init('hb8)), \ + .INIT_39(slice_init('hb9)), \ + .INIT_3A(slice_init('hba)), \ + .INIT_3B(slice_init('hbb)), \ + .INIT_3C(slice_init('hbc)), \ + .INIT_3D(slice_init('hbd)), \ + .INIT_3E(slice_init('hbe)), \ + .INIT_3F(slice_init('hbf)), \ + .INIT_40(slice_init('hc0)), \ + .INIT_41(slice_init('hc1)), \ + .INIT_42(slice_init('hc2)), \ + .INIT_43(slice_init('hc3)), \ + .INIT_44(slice_init('hc4)), \ + .INIT_45(slice_init('hc5)), \ + .INIT_46(slice_init('hc6)), \ + .INIT_47(slice_init('hc7)), \ + .INIT_48(slice_init('hc8)), \ + .INIT_49(slice_init('hc9)), \ + .INIT_4A(slice_init('hca)), \ + .INIT_4B(slice_init('hcb)), \ + .INIT_4C(slice_init('hcc)), \ + .INIT_4D(slice_init('hcd)), \ + .INIT_4E(slice_init('hce)), \ + .INIT_4F(slice_init('hcf)), \ + .INIT_50(slice_init('hd0)), \ + .INIT_51(slice_init('hd1)), \ + .INIT_52(slice_init('hd2)), \ + .INIT_53(slice_init('hd3)), \ + .INIT_54(slice_init('hd4)), \ + .INIT_55(slice_init('hd5)), \ + .INIT_56(slice_init('hd6)), \ + .INIT_57(slice_init('hd7)), \ + .INIT_58(slice_init('hd8)), \ + .INIT_59(slice_init('hd9)), \ + .INIT_5A(slice_init('hda)), \ + .INIT_5B(slice_init('hdb)), \ + .INIT_5C(slice_init('hdc)), \ + .INIT_5D(slice_init('hdd)), \ + .INIT_5E(slice_init('hde)), \ + .INIT_5F(slice_init('hdf)), \ + .INIT_60(slice_init('he0)), \ + .INIT_61(slice_init('he1)), \ + .INIT_62(slice_init('he2)), \ + .INIT_63(slice_init('he3)), \ + .INIT_64(slice_init('he4)), \ + .INIT_65(slice_init('he5)), \ + .INIT_66(slice_init('he6)), \ + .INIT_67(slice_init('he7)), \ + .INIT_68(slice_init('he8)), \ + .INIT_69(slice_init('he9)), \ + .INIT_6A(slice_init('hea)), \ + .INIT_6B(slice_init('heb)), \ + .INIT_6C(slice_init('hec)), \ + .INIT_6D(slice_init('hed)), \ + .INIT_6E(slice_init('hee)), \ + .INIT_6F(slice_init('hef)), \ + .INIT_70(slice_init('hf0)), \ + .INIT_71(slice_init('hf1)), \ + .INIT_72(slice_init('hf2)), \ + .INIT_73(slice_init('hf3)), \ + .INIT_74(slice_init('hf4)), \ + .INIT_75(slice_init('hf5)), \ + .INIT_76(slice_init('hf6)), \ + .INIT_77(slice_init('hf7)), \ + .INIT_78(slice_init('hf8)), \ + .INIT_79(slice_init('hf9)), \ + .INIT_7A(slice_init('hfa)), \ + .INIT_7B(slice_init('hfb)), \ + .INIT_7C(slice_init('hfc)), \ + .INIT_7D(slice_init('hfd)), \ + .INIT_7E(slice_init('hfe)), \ + .INIT_7F(slice_init('hff)), + +`define PARAMS_INITP_36 \ + .INITP_00(slice_initp('h00)), \ + .INITP_01(slice_initp('h01)), \ + .INITP_02(slice_initp('h02)), \ + .INITP_03(slice_initp('h03)), \ + .INITP_04(slice_initp('h04)), \ + .INITP_05(slice_initp('h05)), \ + .INITP_06(slice_initp('h06)), \ + .INITP_07(slice_initp('h07)), \ + .INITP_08(slice_initp('h08)), \ + .INITP_09(slice_initp('h09)), \ + .INITP_0A(slice_initp('h0a)), \ + .INITP_0B(slice_initp('h0b)), \ + .INITP_0C(slice_initp('h0c)), \ + .INITP_0D(slice_initp('h0d)), \ + .INITP_0E(slice_initp('h0e)), \ + .INITP_0F(slice_initp('h0f)), + +`define MAKE_DO(do, dop, rdata) \ + wire [63:0] do; \ + wire [7:0] dop; \ + assign rdata = { \ + dop[7], \ + do[63:56], \ + dop[6], \ + do[55:48], \ + dop[5], \ + do[47:40], \ + dop[4], \ + do[39:32], \ + dop[3], \ + do[31:24], \ + dop[2], \ + do[23:16], \ + dop[1], \ + do[15:8], \ + dop[0], \ + do[7:0] \ + }; + +`define MAKE_DI(di, dip, wdata) \ + wire [63:0] di; \ + wire [7:0] dip; \ + assign { \ + dip[7], \ + di[63:56], \ + dip[6], \ + di[55:48], \ + dip[5], \ + di[47:40], \ + dip[4], \ + di[39:32], \ + dip[3], \ + di[31:24], \ + dip[2], \ + di[23:16], \ + dip[1], \ + di[15:8], \ + dip[0], \ + di[7:0] \ + } = wdata; + +function [71:0] ival; + input integer width; + input [71:0] val; + if (width == 72) + ival = { + val[71], + val[62], + val[53], + val[44], + val[35], + val[26], + val[17], + val[8], + val[70:63], + val[61:54], + val[52:45], + val[43:36], + val[34:27], + val[25:18], + val[16:9], + val[7:0] + }; + else if (width == 36) + ival = { + val[35], + val[26], + val[17], + val[8], + val[34:27], + val[25:18], + val[16:9], + val[7:0] + }; + else if (width == 18) + ival = { + val[17], + val[8], + val[16:9], + val[7:0] + }; + else + ival = val; +endfunction + +function [255:0] slice_init; + input integer idx; + integer i; + for (i = 0; i < 32; i = i + 1) + slice_init[i*8+:8] = INIT[(idx * 32 + i)*9+:8]; +endfunction + +function [255:0] slice_initp; + input integer idx; + integer i; + for (i = 0; i < 256; i = i + 1) + slice_initp[i] = INIT[(idx * 256 + i)*9+8]; +endfunction diff --git a/resources/netlist/resources/kernel/share/xilinx/brams_xc2v.txt b/resources/netlist/resources/kernel/share/xilinx/brams_xc2v.txt new file mode 100644 index 0000000..562148c --- /dev/null +++ b/resources/netlist/resources/kernel/share/xilinx/brams_xc2v.txt @@ -0,0 +1,33 @@ +# Block RAMs for Virtex 2, Spartan 3, Spartan 3E, Spartan 3A(N) +# The corresponding mapping file is brams_xc2v_map.v + +ram block $__XILINX_BLOCKRAM_ { + abits 14; + widths 1 2 4 9 18 36 per_port; + ifdef HAS_BE { + option "USE_BE" 1 byte 9; + } + cost 129; + init any; + port srsw "A" "B" { + option "USE_BE" 0 width tied; + ifdef HAS_BE { + option "USE_BE" 1 width tied 9 18 36; + } + clock posedge; + clken; + rdsrst any gated_clken; + rdinit any; + portoption "WRITE_MODE" "NO_CHANGE" { + rdwr no_change; + } + portoption "WRITE_MODE" "WRITE_FIRST" { + rdwr new_only; + } + portoption "WRITE_MODE" "READ_FIRST" { + rdwr old; + wrtrans all old; + } + optional; + } +} diff --git a/resources/netlist/resources/kernel/share/xilinx/brams_xc2v_map.v b/resources/netlist/resources/kernel/share/xilinx/brams_xc2v_map.v new file mode 100644 index 0000000..a82feff --- /dev/null +++ b/resources/netlist/resources/kernel/share/xilinx/brams_xc2v_map.v @@ -0,0 +1,532 @@ +module $__XILINX_BLOCKRAM_ (...); + +parameter INIT = 0; +parameter OPTION_USE_BE = 0; + +parameter PORT_A_WIDTH = 1; +parameter PORT_A_WR_EN_WIDTH = 1; +parameter PORT_A_USED = 1; +parameter PORT_A_OPTION_WRITE_MODE = "NO_CHANGE"; +parameter PORT_A_RD_INIT_VALUE = 0; +parameter PORT_A_RD_SRST_VALUE = 0; + +parameter PORT_B_WIDTH = 1; +parameter PORT_B_WR_EN_WIDTH = 1; +parameter PORT_B_USED = 0; +parameter PORT_B_OPTION_WRITE_MODE = "NO_CHANGE"; +parameter PORT_B_RD_INIT_VALUE = 0; +parameter PORT_B_RD_SRST_VALUE = 0; + +input PORT_A_CLK; +input PORT_A_CLK_EN; +input [13:0] PORT_A_ADDR; +input [PORT_A_WIDTH-1:0] PORT_A_WR_DATA; +input [PORT_A_WR_EN_WIDTH-1:0] PORT_A_WR_EN; +output [PORT_A_WIDTH-1:0] PORT_A_RD_DATA; +input PORT_A_RD_SRST; + +input PORT_B_CLK; +input PORT_B_CLK_EN; +input [13:0] PORT_B_ADDR; +input [PORT_B_WIDTH-1:0] PORT_B_WR_DATA; +input [PORT_B_WR_EN_WIDTH-1:0] PORT_B_WR_EN; +output [PORT_B_WIDTH-1:0] PORT_B_RD_DATA; +input PORT_B_RD_SRST; + +`include "brams_defs.vh" + +`define PARAMS_DP \ + `PARAMS_INIT_18 \ + .WRITE_MODE_A(PORT_A_OPTION_WRITE_MODE), \ + .WRITE_MODE_B(PORT_B_OPTION_WRITE_MODE), \ + .SRVAL_A(SRVAL_A), \ + .SRVAL_B(SRVAL_B), \ + .INIT_A(INIT_A), \ + .INIT_B(INIT_B), + +`define PARAMS_DP_SWAP \ + `PARAMS_INIT_18 \ + .WRITE_MODE_A(PORT_B_OPTION_WRITE_MODE), \ + .WRITE_MODE_B(PORT_A_OPTION_WRITE_MODE), \ + .SRVAL_A(SRVAL_B), \ + .SRVAL_B(SRVAL_A), \ + .INIT_A(INIT_B), \ + .INIT_B(INIT_A), + +`define PARAMS_SP \ + `PARAMS_INIT_18 \ + .WRITE_MODE(PORT_A_OPTION_WRITE_MODE), \ + .SRVAL(SRVAL_A), \ + .INIT(INIT_A), + +`define PORTS_DP(addr_slice_a, addr_slice_b) \ + .CLKA(PORT_A_CLK), \ + .ENA(PORT_A_CLK_EN), \ + .WEA(PORT_A_WR_EN), \ + .SSRA(PORT_A_RD_SRST), \ + .ADDRA(PORT_A_ADDR addr_slice_a), \ + .DOA(DO_A), \ + .DIA(DI_A), \ + .CLKB(PORT_B_CLK), \ + .ENB(PORT_B_CLK_EN), \ + .WEB(PORT_B_WR_EN), \ + .SSRB(PORT_B_RD_SRST), \ + .ADDRB(PORT_B_ADDR addr_slice_b), \ + .DOB(DO_B), \ + .DIB(DI_B), + +`define PORTS_DP_SWAP(addr_slice_a, addr_slice_b) \ + .CLKB(PORT_A_CLK), \ + .ENB(PORT_A_CLK_EN), \ + .WEB(PORT_A_WR_EN), \ + .SSRB(PORT_A_RD_SRST), \ + .ADDRB(PORT_A_ADDR addr_slice_a), \ + .DOB(DO_A), \ + .DIB(DI_A), \ + .CLKA(PORT_B_CLK), \ + .ENA(PORT_B_CLK_EN), \ + .WEA(PORT_B_WR_EN), \ + .SSRA(PORT_B_RD_SRST), \ + .ADDRA(PORT_B_ADDR addr_slice_b), \ + .DOA(DO_B), \ + .DIA(DI_B), + +`define PORTS_SP(addr_slice) \ + .CLK(PORT_A_CLK), \ + .EN(PORT_A_CLK_EN), \ + .WE(PORT_A_WR_EN), \ + .SSR(PORT_A_RD_SRST), \ + .ADDR(PORT_A_ADDR addr_slice), \ + .DO(DO_A), \ + .DI(DI_A), + +localparam [PORT_A_WIDTH-1:0] SRVAL_A = ival(PORT_A_WIDTH, PORT_A_RD_SRST_VALUE); +localparam [PORT_B_WIDTH-1:0] SRVAL_B = ival(PORT_B_WIDTH, PORT_B_RD_SRST_VALUE); +localparam [PORT_A_WIDTH-1:0] INIT_A = ival(PORT_A_WIDTH, PORT_A_RD_INIT_VALUE); +localparam [PORT_B_WIDTH-1:0] INIT_B = ival(PORT_B_WIDTH, PORT_B_RD_INIT_VALUE); + +`MAKE_DI(DI_A, DIP_A, PORT_A_WR_DATA) +`MAKE_DI(DI_B, DIP_B, PORT_B_WR_DATA) +`MAKE_DO(DO_A, DOP_A, PORT_A_RD_DATA) +`MAKE_DO(DO_B, DOP_B, PORT_B_RD_DATA) + +generate + +if (OPTION_USE_BE) begin + if (!PORT_B_USED) begin + case (PORT_A_WIDTH) + 9: RAMB16_S9 #( + `PARAMS_SP + `PARAMS_INITP_18 + ) _TECHMAP_REPLACE_ ( + `PORTS_SP([13:3]) + .DIP(DIP_A), + .DOP(DOP_A), + ); + 18: RAMB16BWE_S18 #( + `PARAMS_SP + `PARAMS_INITP_18 + ) _TECHMAP_REPLACE_ ( + `PORTS_SP([13:4]) + .DIP(DIP_A), + .DOP(DOP_A), + ); + 36: RAMB16BWE_S36 #( + `PARAMS_SP + `PARAMS_INITP_18 + ) _TECHMAP_REPLACE_ ( + `PORTS_SP([13:5]) + .DIP(DIP_A), + .DOP(DOP_A), + ); + endcase + end else begin + case (PORT_A_WIDTH) + 9: case(PORT_B_WIDTH) + 9: RAMB16_S9_S9 #( + `PARAMS_DP + `PARAMS_INITP_18 + ) _TECHMAP_REPLACE_ ( + `PORTS_DP([13:3], [13:3]) + .DIPA(DIP_A), .DOPA(DOP_A), + .DIPB(DIP_B), .DOPB(DOP_B), + ); + 18: RAMB16BWE_S9_S18 #( + `PARAMS_DP + `PARAMS_INITP_18 + ) _TECHMAP_REPLACE_ ( + `PORTS_DP([13:3], [13:4]) + .DIPA(DIP_A), .DOPA(DOP_A), + .DIPB(DIP_B), .DOPB(DOP_B), + ); + 36: RAMB16BWE_S9_S36 #( + `PARAMS_DP + `PARAMS_INITP_18 + ) _TECHMAP_REPLACE_ ( + `PORTS_DP([13:3], [13:5]) + .DIPA(DIP_A), .DOPA(DOP_A), + .DIPB(DIP_B), .DOPB(DOP_B), + ); + endcase + 18: case(PORT_B_WIDTH) + 9: RAMB16BWE_S9_S18 #( + `PARAMS_DP_SWAP + `PARAMS_INITP_18 + ) _TECHMAP_REPLACE_ ( + `PORTS_DP_SWAP([13:4], [13:3]) + .DIPA(DIP_B), .DOPA(DOP_B), + .DIPB(DIP_A), .DOPB(DOP_A), + ); + 18: RAMB16BWE_S18_S18 #( + `PARAMS_DP + `PARAMS_INITP_18 + ) _TECHMAP_REPLACE_ ( + `PORTS_DP([13:4], [13:4]) + .DIPA(DIP_A), .DOPA(DOP_A), + .DIPB(DIP_B), .DOPB(DOP_B), + ); + 36: RAMB16BWE_S18_S36 #( + `PARAMS_DP + `PARAMS_INITP_18 + ) _TECHMAP_REPLACE_ ( + `PORTS_DP([13:4], [13:5]) + .DIPA(DIP_A), .DOPA(DOP_A), + .DIPB(DIP_B), .DOPB(DOP_B), + ); + endcase + 36: case(PORT_B_WIDTH) + 9: RAMB16BWE_S9_S36 #( + `PARAMS_DP_SWAP + `PARAMS_INITP_18 + ) _TECHMAP_REPLACE_ ( + `PORTS_DP_SWAP([13:5], [13:3]) + .DIPA(DIP_B), .DOPA(DOP_B), + .DIPB(DIP_A), .DOPB(DOP_A), + ); + 18: RAMB16BWE_S18_S36 #( + `PARAMS_DP_SWAP + `PARAMS_INITP_18 + ) _TECHMAP_REPLACE_ ( + `PORTS_DP_SWAP([13:5], [13:4]) + .DIPA(DIP_B), .DOPA(DOP_B), + .DIPB(DIP_A), .DOPB(DOP_A), + ); + 36: RAMB16BWE_S36_S36 #( + `PARAMS_DP + `PARAMS_INITP_18 + ) _TECHMAP_REPLACE_ ( + `PORTS_DP([13:5], [13:5]) + .DIPA(DIP_A), .DOPA(DOP_A), + .DIPB(DIP_B), .DOPB(DOP_B), + ); + endcase + endcase + end +end else begin + if (!PORT_B_USED) begin + case (PORT_A_WIDTH) + 1: RAMB16_S1 #( + `PARAMS_SP + ) _TECHMAP_REPLACE_ ( + `PORTS_SP([13:0]) + ); + 2: RAMB16_S2 #( + `PARAMS_SP + ) _TECHMAP_REPLACE_ ( + `PORTS_SP([13:1]) + ); + 4: RAMB16_S4 #( + `PARAMS_SP + ) _TECHMAP_REPLACE_ ( + `PORTS_SP([13:2]) + ); + 9: RAMB16_S9 #( + `PARAMS_SP + `PARAMS_INITP_18 + ) _TECHMAP_REPLACE_ ( + `PORTS_SP([13:3]) + .DIP(DIP_A), + .DOP(DOP_A), + ); + 18: RAMB16_S18 #( + `PARAMS_SP + `PARAMS_INITP_18 + ) _TECHMAP_REPLACE_ ( + `PORTS_SP([13:4]) + .DIP(DIP_A), + .DOP(DOP_A), + ); + 36: RAMB16_S36 #( + `PARAMS_SP + `PARAMS_INITP_18 + ) _TECHMAP_REPLACE_ ( + `PORTS_SP([13:5]) + .DIP(DIP_A), + .DOP(DOP_A), + ); + endcase + end else begin + case (PORT_A_WIDTH) + 1: case(PORT_B_WIDTH) + 1: RAMB16_S1_S1 #( + `PARAMS_DP + ) _TECHMAP_REPLACE_ ( + `PORTS_DP([13:0], [13:0]) + ); + 2: RAMB16_S1_S2 #( + `PARAMS_DP + ) _TECHMAP_REPLACE_ ( + `PORTS_DP([13:0], [13:1]) + ); + 4: RAMB16_S1_S4 #( + `PARAMS_DP + ) _TECHMAP_REPLACE_ ( + `PORTS_DP([13:0], [13:2]) + ); + 9: RAMB16_S1_S9 #( + `PARAMS_DP + `PARAMS_INITP_18 + ) _TECHMAP_REPLACE_ ( + `PORTS_DP([13:0], [13:3]) + .DIPB(DIP_B), .DOPB(DOP_B), + ); + 18: RAMB16_S1_S18 #( + `PARAMS_DP + `PARAMS_INITP_18 + ) _TECHMAP_REPLACE_ ( + `PORTS_DP([13:0], [13:4]) + .DIPB(DIP_B), .DOPB(DOP_B), + ); + 36: RAMB16_S1_S36 #( + `PARAMS_DP + `PARAMS_INITP_18 + ) _TECHMAP_REPLACE_ ( + `PORTS_DP([13:0], [13:5]) + .DIPB(DIP_B), .DOPB(DOP_B), + ); + endcase + 2: case(PORT_B_WIDTH) + 1: RAMB16_S1_S2 #( + `PARAMS_DP_SWAP + ) _TECHMAP_REPLACE_ ( + `PORTS_DP_SWAP([13:1], [13:0]) + ); + 2: RAMB16_S2_S2 #( + `PARAMS_DP + ) _TECHMAP_REPLACE_ ( + `PORTS_DP([13:1], [13:1]) + ); + 4: RAMB16_S2_S4 #( + `PARAMS_DP + ) _TECHMAP_REPLACE_ ( + `PORTS_DP([13:1], [13:2]) + ); + 9: RAMB16_S2_S9 #( + `PARAMS_DP + `PARAMS_INITP_18 + ) _TECHMAP_REPLACE_ ( + `PORTS_DP([13:1], [13:3]) + .DIPB(DIP_B), .DOPB(DOP_B), + ); + 18: RAMB16_S2_S18 #( + `PARAMS_DP + `PARAMS_INITP_18 + ) _TECHMAP_REPLACE_ ( + `PORTS_DP([13:1], [13:4]) + .DIPB(DIP_B), .DOPB(DOP_B), + ); + 36: RAMB16_S2_S36 #( + `PARAMS_DP + `PARAMS_INITP_18 + ) _TECHMAP_REPLACE_ ( + `PORTS_DP([13:1], [13:5]) + .DIPB(DIP_B), .DOPB(DOP_B), + ); + endcase + 4: case(PORT_B_WIDTH) + 1: RAMB16_S1_S4 #( + `PARAMS_DP_SWAP + ) _TECHMAP_REPLACE_ ( + `PORTS_DP_SWAP([13:2], [13:0]) + ); + 2: RAMB16_S2_S4 #( + `PARAMS_DP_SWAP + ) _TECHMAP_REPLACE_ ( + `PORTS_DP_SWAP([13:2], [13:1]) + ); + 4: RAMB16_S4_S4 #( + `PARAMS_DP + ) _TECHMAP_REPLACE_ ( + `PORTS_DP([13:2], [13:2]) + ); + 9: RAMB16_S4_S9 #( + `PARAMS_DP + `PARAMS_INITP_18 + ) _TECHMAP_REPLACE_ ( + `PORTS_DP([13:2], [13:3]) + .DIPB(DIP_B), .DOPB(DOP_B), + ); + 18: RAMB16_S4_S18 #( + `PARAMS_DP + `PARAMS_INITP_18 + ) _TECHMAP_REPLACE_ ( + `PORTS_DP([13:2], [13:4]) + .DIPB(DIP_B), .DOPB(DOP_B), + ); + 36: RAMB16_S4_S36 #( + `PARAMS_DP + `PARAMS_INITP_18 + ) _TECHMAP_REPLACE_ ( + `PORTS_DP([13:2], [13:5]) + .DIPB(DIP_B), .DOPB(DOP_B), + ); + endcase + 9: case(PORT_B_WIDTH) + 1: RAMB16_S1_S9 #( + `PARAMS_DP_SWAP + `PARAMS_INITP_18 + ) _TECHMAP_REPLACE_ ( + `PORTS_DP_SWAP([13:3], [13:0]) + .DIPB(DIP_A), .DOPB(DOP_A), + ); + 2: RAMB16_S2_S9 #( + `PARAMS_DP_SWAP + `PARAMS_INITP_18 + ) _TECHMAP_REPLACE_ ( + `PORTS_DP_SWAP([13:3], [13:1]) + .DIPB(DIP_A), .DOPB(DOP_A), + ); + 4: RAMB16_S4_S9 #( + `PARAMS_DP_SWAP + `PARAMS_INITP_18 + ) _TECHMAP_REPLACE_ ( + `PORTS_DP_SWAP([13:3], [13:2]) + .DIPB(DIP_A), .DOPB(DOP_A), + ); + 9: RAMB16_S9_S9 #( + `PARAMS_DP + `PARAMS_INITP_18 + ) _TECHMAP_REPLACE_ ( + `PORTS_DP([13:3], [13:3]) + .DIPA(DIP_A), .DOPA(DOP_A), + .DIPB(DIP_B), .DOPB(DOP_B), + ); + 18: RAMB16_S9_S18 #( + `PARAMS_DP + `PARAMS_INITP_18 + ) _TECHMAP_REPLACE_ ( + `PORTS_DP([13:3], [13:4]) + .DIPA(DIP_A), .DOPA(DOP_A), + .DIPB(DIP_B), .DOPB(DOP_B), + ); + 36: RAMB16_S9_S36 #( + `PARAMS_DP + `PARAMS_INITP_18 + ) _TECHMAP_REPLACE_ ( + `PORTS_DP([13:3], [13:5]) + .DIPA(DIP_A), .DOPA(DOP_A), + .DIPB(DIP_B), .DOPB(DOP_B), + ); + endcase + 18: case(PORT_B_WIDTH) + 1: RAMB16_S1_S18 #( + `PARAMS_DP_SWAP + `PARAMS_INITP_18 + ) _TECHMAP_REPLACE_ ( + `PORTS_DP_SWAP([13:4], [13:0]) + .DIPB(DIP_A), .DOPB(DOP_A), + ); + 2: RAMB16_S2_S18 #( + `PARAMS_DP_SWAP + `PARAMS_INITP_18 + ) _TECHMAP_REPLACE_ ( + `PORTS_DP_SWAP([13:4], [13:1]) + .DIPB(DIP_A), .DOPB(DOP_A), + ); + 4: RAMB16_S4_S18 #( + `PARAMS_DP_SWAP + `PARAMS_INITP_18 + ) _TECHMAP_REPLACE_ ( + `PORTS_DP_SWAP([13:4], [13:2]) + .DIPB(DIP_A), .DOPB(DOP_A), + ); + 9: RAMB16_S9_S18 #( + `PARAMS_DP_SWAP + `PARAMS_INITP_18 + ) _TECHMAP_REPLACE_ ( + `PORTS_DP_SWAP([13:4], [13:3]) + .DIPA(DIP_B), .DOPA(DOP_B), + .DIPB(DIP_A), .DOPB(DOP_A), + ); + 18: RAMB16_S18_S18 #( + `PARAMS_DP + `PARAMS_INITP_18 + ) _TECHMAP_REPLACE_ ( + `PORTS_DP([13:4], [13:4]) + .DIPA(DIP_A), .DOPA(DOP_A), + .DIPB(DIP_B), .DOPB(DOP_B), + ); + 36: RAMB16_S18_S36 #( + `PARAMS_DP + `PARAMS_INITP_18 + ) _TECHMAP_REPLACE_ ( + `PORTS_DP([13:4], [13:5]) + .DIPA(DIP_A), .DOPA(DOP_A), + .DIPB(DIP_B), .DOPB(DOP_B), + ); + endcase + 36: case(PORT_B_WIDTH) + 1: RAMB16_S1_S36 #( + `PARAMS_DP_SWAP + `PARAMS_INITP_18 + ) _TECHMAP_REPLACE_ ( + `PORTS_DP_SWAP([13:5], [13:0]) + .DIPB(DIP_A), .DOPB(DOP_A), + ); + 2: RAMB16_S2_S36 #( + `PARAMS_DP_SWAP + `PARAMS_INITP_18 + ) _TECHMAP_REPLACE_ ( + `PORTS_DP_SWAP([13:5], [13:1]) + .DIPB(DIP_A), .DOPB(DOP_A), + ); + 4: RAMB16_S4_S36 #( + `PARAMS_DP_SWAP + `PARAMS_INITP_18 + ) _TECHMAP_REPLACE_ ( + `PORTS_DP_SWAP([13:5], [13:2]) + .DIPB(DIP_A), .DOPB(DOP_A), + ); + 9: RAMB16_S9_S36 #( + `PARAMS_DP_SWAP + `PARAMS_INITP_18 + ) _TECHMAP_REPLACE_ ( + `PORTS_DP_SWAP([13:5], [13:3]) + .DIPA(DIP_B), .DOPA(DOP_B), + .DIPB(DIP_A), .DOPB(DOP_A), + ); + 18: RAMB16_S18_S36 #( + `PARAMS_DP_SWAP + `PARAMS_INITP_18 + ) _TECHMAP_REPLACE_ ( + `PORTS_DP_SWAP([13:5], [13:4]) + .DIPA(DIP_B), .DOPA(DOP_B), + .DIPB(DIP_A), .DOPB(DOP_A), + ); + 36: RAMB16_S36_S36 #( + `PARAMS_DP + `PARAMS_INITP_18 + ) _TECHMAP_REPLACE_ ( + `PORTS_DP([13:5], [13:5]) + .DIPA(DIP_A), .DOPA(DOP_A), + .DIPB(DIP_B), .DOPB(DOP_B), + ); + endcase + endcase + end +end + +endgenerate + + +endmodule diff --git a/resources/netlist/resources/kernel/share/xilinx/brams_xc3sda.txt b/resources/netlist/resources/kernel/share/xilinx/brams_xc3sda.txt new file mode 100644 index 0000000..4519991 --- /dev/null +++ b/resources/netlist/resources/kernel/share/xilinx/brams_xc3sda.txt @@ -0,0 +1,120 @@ +# Block RAMs for Spartan 3A DSP and Spartan 6. +# The corresponding mapping file is brams_xc3sda_map.v + +ram block $__XILINX_BLOCKRAM_TDP_ { + byte 9; + ifdef IS_SPARTAN6 { + option "MODE" "HALF" { + abits 13; + widths 1 2 4 9 18 per_port; + cost 65; + } + } + option "MODE" "FULL" { + abits 14; + widths 1 2 4 9 18 36 per_port; + cost 129; + } + init any; + port srsw "A" "B" { + # Spartan 6 and Virtex 6 have a bug where READ_FIRST is not usable with asynchronous clocks. + ifdef IS_SPARTAN6 { + option "HAS_RDFIRST" 1 { + clock posedge "C"; + } + option "HAS_RDFIRST" 0 { + clock posedge; + } + } else { + clock posedge; + } + clken; + option "RSTTYPE" "SYNC" { + portoption "RST_PRIORITY" "CE" { + rdsrst any gated_clken; + } + ifdef IS_SPARTAN6 { + portoption "RST_PRIORITY" "SR" { + rdsrst any ungated; + } + } + } + ifdef IS_SPARTAN6 { + option "RSTTYPE" "ASYNC" { + portoption "RST_PRIORITY" "SR" { + rdarst any; + } + } + } + rdinit any; + portoption "WRITE_MODE" "NO_CHANGE" { + rdwr no_change; + } + portoption "WRITE_MODE" "WRITE_FIRST" { + rdwr new; + } + ifdef IS_SPARTAN6 { + option "HAS_RDFIRST" 1 { + portoption "WRITE_MODE" "READ_FIRST" { + rdwr old; + wrtrans all old; + } + } + } else { + portoption "WRITE_MODE" "READ_FIRST" { + rdwr old; + wrtrans all old; + } + } + optional; + } +} + +ifdef IS_SPARTAN6 { + ram block $__XILINX_BLOCKRAM_SDP_ { + byte 9; + abits 13; + widths 1 2 4 9 18 36 per_port; + cost 65; + init any; + port sw "W" { + width 36; + # Spartan 6 and Virtex 6 have a bug where READ_FIRST is not usable with asynchronous clocks. + option "WRITE_MODE" "READ_FIRST" { + clock posedge "C"; + wrtrans all old; + } + option "WRITE_MODE" "WRITE_FIRST" { + clock posedge; + } + clken; + optional; + } + port sr "R" { + width 36; + # Spartan 6 and Virtex 6 have a bug where READ_FIRST is not usable with asynchronous clocks. + option "WRITE_MODE" "READ_FIRST" { + clock posedge "C"; + } + option "WRITE_MODE" "WRITE_FIRST" { + clock posedge; + } + clken; + option "RSTTYPE" "SYNC" { + portoption "RST_PRIORITY" "CE" { + rdsrst any gated_clken; + } + portoption "RST_PRIORITY" "SR" { + rdsrst any ungated; + } + } + option "RSTTYPE" "ASYNC" { + portoption "RST_PRIORITY" "SR" { + rdarst any; + } + } + rdinit any; + optional; + } + } +} diff --git a/resources/netlist/resources/kernel/share/xilinx/brams_xc3sda_map.v b/resources/netlist/resources/kernel/share/xilinx/brams_xc3sda_map.v new file mode 100644 index 0000000..f5f0e5a --- /dev/null +++ b/resources/netlist/resources/kernel/share/xilinx/brams_xc3sda_map.v @@ -0,0 +1,224 @@ +module $__XILINX_BLOCKRAM_TDP_ (...); + +parameter INIT = 0; +parameter OPTION_MODE = "FULL"; +parameter OPTION_RSTTYPE = "SYNC"; +parameter OPTION_HAS_RDFIRST = 0; + +parameter PORT_A_WIDTH = 1; +parameter PORT_A_WR_EN_WIDTH = 1; +parameter PORT_A_USED = 1; +parameter PORT_A_OPTION_WRITE_MODE = "NO_CHANGE"; +parameter PORT_A_RD_INIT_VALUE = 0; +parameter PORT_A_RD_SRST_VALUE = 0; +parameter PORT_A_RD_ARST_VALUE = 0; +parameter PORT_A_OPTION_RST_PRIORITY = "CE"; + +parameter PORT_B_WIDTH = 1; +parameter PORT_B_WR_EN_WIDTH = 1; +parameter PORT_B_USED = 0; +parameter PORT_B_OPTION_WRITE_MODE = "NO_CHANGE"; +parameter PORT_B_RD_INIT_VALUE = 0; +parameter PORT_B_RD_SRST_VALUE = 0; +parameter PORT_B_RD_ARST_VALUE = 0; +parameter PORT_B_OPTION_RST_PRIORITY = "CE"; + +input CLK_C; + +input PORT_A_CLK; +input PORT_A_CLK_EN; +input [13:0] PORT_A_ADDR; +input [PORT_A_WIDTH-1:0] PORT_A_WR_DATA; +input [PORT_A_WR_EN_WIDTH-1:0] PORT_A_WR_EN; +output [PORT_A_WIDTH-1:0] PORT_A_RD_DATA; +input PORT_A_RD_SRST; +input PORT_A_RD_ARST; + +input PORT_B_CLK; +input PORT_B_CLK_EN; +input [13:0] PORT_B_ADDR; +input [PORT_B_WIDTH-1:0] PORT_B_WR_DATA; +input [PORT_B_WR_EN_WIDTH-1:0] PORT_B_WR_EN; +output [PORT_B_WIDTH-1:0] PORT_B_RD_DATA; +input PORT_B_RD_SRST; +input PORT_B_RD_ARST; + +`include "brams_defs.vh" + +`define PARAMS_COMMON \ + .WRITE_MODE_A(PORT_A_OPTION_WRITE_MODE), \ + .WRITE_MODE_B(PORT_B_OPTION_WRITE_MODE), \ + .DATA_WIDTH_A(PORT_A_USED ? PORT_A_WIDTH : 0), \ + .DATA_WIDTH_B(PORT_B_USED ? PORT_B_WIDTH : 0), \ + .EN_RSTRAM_A("TRUE"), \ + .EN_RSTRAM_B("TRUE"), \ + .DOA_REG(0), \ + .DOB_REG(0), \ + .RST_PRIORITY_A(PORT_A_OPTION_RST_PRIORITY), \ + .RST_PRIORITY_B(PORT_B_OPTION_RST_PRIORITY), \ + .RSTTYPE(OPTION_RSTTYPE), \ + .INIT_A(ival(PORT_A_WIDTH, PORT_A_RD_INIT_VALUE)), \ + .INIT_B(ival(PORT_B_WIDTH, PORT_B_RD_INIT_VALUE)), \ + .SRVAL_A(ival(PORT_A_WIDTH, OPTION_RSTTYPE == "SYNC" ? PORT_A_RD_SRST_VALUE : PORT_A_RD_ARST_VALUE)), \ + .SRVAL_B(ival(PORT_B_WIDTH, OPTION_RSTTYPE == "SYNC" ? PORT_B_RD_SRST_VALUE : PORT_B_RD_ARST_VALUE)), + +wire RST_A = OPTION_RSTTYPE == "SYNC" ? PORT_A_RD_SRST : PORT_A_RD_ARST; +wire RST_B = OPTION_RSTTYPE == "SYNC" ? PORT_B_RD_SRST : PORT_B_RD_ARST; + +`MAKE_DI(DI_A, DIP_A, PORT_A_WR_DATA) +`MAKE_DI(DI_B, DIP_B, PORT_B_WR_DATA) +`MAKE_DO(DO_A, DOP_A, PORT_A_RD_DATA) +`MAKE_DO(DO_B, DOP_B, PORT_B_RD_DATA) + +generate + +if (OPTION_MODE == "FULL") begin + wire [3:0] WE_A = {4{PORT_A_WR_EN}}; + wire [3:0] WE_B = {4{PORT_B_WR_EN}}; + RAMB16BWER #( + `PARAMS_INIT_18 + `PARAMS_INITP_18 + `PARAMS_COMMON + ) _TECHMAP_REPLACE_ ( + .DOA(DO_A), + .DOPA(DOP_A), + .DIA(DI_A), + .DIPA(DIP_A), + .DOB(DO_B), + .DOPB(DOP_B), + .DIB(DI_B), + .DIPB(DIP_B), + .ADDRA(PORT_A_ADDR), + .ADDRB(PORT_B_ADDR), + .CLKA(PORT_A_CLK), + .CLKB(PORT_B_CLK), + .ENA(PORT_A_CLK_EN), + .ENB(PORT_B_CLK_EN), + .REGCEA(1'b0), + .REGCEB(1'b0), + .RSTA(RST_A), + .RSTB(RST_B), + .WEA(WE_A), + .WEB(WE_B), + ); +end else begin + wire [1:0] WE_A = {2{PORT_A_WR_EN}}; + wire [1:0] WE_B = {2{PORT_B_WR_EN}}; + RAMB8BWER #( + `PARAMS_INIT_9 + `PARAMS_INITP_9 + `PARAMS_COMMON + .RAM_MODE("TDP"), + ) _TECHMAP_REPLACE_ ( + .DOADO(DO_A), + .DOPADOP(DOP_A), + .DIADI(DI_A), + .DIPADIP(DIP_A), + .DOBDO(DO_B), + .DOPBDOP(DOP_B), + .DIBDI(DI_B), + .DIPBDIP(DIP_B), + .ADDRAWRADDR(PORT_A_ADDR), + .ADDRBRDADDR(PORT_B_ADDR), + .CLKAWRCLK(PORT_A_CLK), + .CLKBRDCLK(PORT_B_CLK), + .ENAWREN(PORT_A_CLK_EN), + .ENBRDEN(PORT_B_CLK_EN), + .REGCEA(1'b0), + .REGCEBREGCE(1'b0), + .RSTA(RST_A), + .RSTBRST(RST_B), + .WEAWEL(WE_A), + .WEBWEU(WE_B), + ); +end + +endgenerate + +endmodule + + +module $__XILINX_BLOCKRAM_SDP_ (...); + +parameter INIT = 0; +parameter OPTION_RSTTYPE = "SYNC"; +parameter OPTION_WRITE_MODE = "READ_FIRST"; + +parameter PORT_W_WIDTH = 1; +parameter PORT_W_WR_EN_WIDTH = 1; +parameter PORT_W_USED = 1; + +parameter PORT_R_WIDTH = 1; +parameter PORT_R_USED = 0; +parameter PORT_R_RD_INIT_VALUE = 0; +parameter PORT_R_RD_SRST_VALUE = 0; +parameter PORT_R_RD_ARST_VALUE = 0; +parameter PORT_R_OPTION_RST_PRIORITY = "CE"; + +input CLK_C; + +input PORT_W_CLK; +input PORT_W_CLK_EN; +input [13:0] PORT_W_ADDR; +input [PORT_W_WIDTH-1:0] PORT_W_WR_DATA; +input [PORT_W_WR_EN_WIDTH-1:0] PORT_W_WR_EN; + +input PORT_R_CLK; +input PORT_R_CLK_EN; +input [13:0] PORT_R_ADDR; +output [PORT_R_WIDTH-1:0] PORT_R_RD_DATA; +input PORT_R_RD_SRST; +input PORT_R_RD_ARST; + +`include "brams_defs.vh" + +wire RST = OPTION_RSTTYPE == "SYNC" ? PORT_R_RD_SRST : PORT_R_RD_ARST; + +`MAKE_DI(DI, DIP, PORT_W_WR_DATA) +`MAKE_DO(DO, DOP, PORT_R_RD_DATA) + +localparam [35:0] RST_VALUE = OPTION_RSTTYPE == "SYNC" ? PORT_R_RD_SRST_VALUE : PORT_R_RD_ARST_VALUE; + +RAMB8BWER #( + `PARAMS_INIT_9 + `PARAMS_INITP_9 + .WRITE_MODE_A(OPTION_WRITE_MODE), + .WRITE_MODE_B(OPTION_WRITE_MODE), + .DATA_WIDTH_A(PORT_W_USED ? PORT_W_WIDTH : 0), + .DATA_WIDTH_B(PORT_R_USED ? PORT_R_WIDTH : 0), + .EN_RSTRAM_A("TRUE"), + .EN_RSTRAM_B("TRUE"), + .DOA_REG(0), + .DOB_REG(0), + .RST_PRIORITY_A("CE"), + .RST_PRIORITY_B(PORT_R_OPTION_RST_PRIORITY), + .RSTTYPE(OPTION_RSTTYPE), + .INIT_A(ival(18, PORT_R_RD_INIT_VALUE[17:0])), + .INIT_B(ival(18, PORT_R_RD_INIT_VALUE[35:18])), + .SRVAL_A(ival(18, RST_VALUE[17:0])), + .SRVAL_B(ival(18, RST_VALUE[35:18])), + .RAM_MODE("SDP"), +) _TECHMAP_REPLACE_ ( + .DOADO(DO[15:0]), + .DOPADOP(DOP[1:0]), + .DIADI(DI[15:0]), + .DIPADIP(DIP[1:0]), + .DOBDO(DO[31:16]), + .DOPBDOP(DOP[3:2]), + .DIBDI(DI[31:16]), + .DIPBDIP(DIP[3:2]), + .ADDRAWRADDR(PORT_W_ADDR), + .ADDRBRDADDR(PORT_R_ADDR), + .CLKAWRCLK(PORT_W_CLK), + .CLKBRDCLK(PORT_R_CLK), + .ENAWREN(PORT_W_CLK_EN), + .ENBRDEN(PORT_R_CLK_EN), + .REGCEA(1'b0), + .REGCEBREGCE(1'b0), + .RSTA(1'b0), + .RSTBRST(RST), + .WEAWEL(PORT_W_WR_EN[1:0]), + .WEBWEU(PORT_W_WR_EN[3:2]), +); + +endmodule diff --git a/resources/netlist/resources/kernel/share/xilinx/brams_xc4v.txt b/resources/netlist/resources/kernel/share/xilinx/brams_xc4v.txt new file mode 100644 index 0000000..2301835 --- /dev/null +++ b/resources/netlist/resources/kernel/share/xilinx/brams_xc4v.txt @@ -0,0 +1,169 @@ +# Block RAMs for Virtex 4+. +# The corresponding mapping files are: +# - brams_xc3sda_map.v: Spartan 3A DSP, Spartan 6 +# - brams_xc4v_map.v: Virtex 4 +# - brams_xc5v_map.v: Virtex 5 +# - brams_xc6v_map.v: Virtex 6, Series 7 +# - brams_xcu_map.v: Ultrascale + +ram block $__XILINX_BLOCKRAM_TDP_ { + byte 9; + ifdef HAS_SIZE_36 { + option "MODE" "HALF" { + abits 14; + widths 1 2 4 9 18 per_port; + cost 129; + } + option "MODE" "FULL" { + abits 15; + widths 1 2 4 9 18 36 per_port; + cost 257; + } + ifdef HAS_CASCADE { + option "MODE" "CASCADE" { + abits 16; + # hack to enforce same INIT layout as in the other modes + widths 1 2 4 9 per_port; + cost 513; + } + } + } else { + option "MODE" "FULL" { + abits 14; + widths 1 2 4 9 18 36 per_port; + cost 129; + } + ifdef HAS_CASCADE { + option "MODE" "CASCADE" { + abits 15; + widths 1 2 4 9 per_port; + cost 257; + } + } + } + init any; + port srsw "A" "B" { + option "MODE" "HALF" { + width mix; + } + option "MODE" "FULL" { + width mix; + } + option "MODE" "CASCADE" { + width mix 1; + } + ifdef HAS_ADDRCE { + # TODO + # addrce; + } + # Spartan 6 and Virtex 6 have a bug where READ_FIRST is not usable with asynchronous clocks. + ifdef HAS_CONFLICT_BUG { + option "HAS_RDFIRST" 1 { + clock posedge "C"; + } + option "HAS_RDFIRST" 0 { + clock posedge; + } + } else { + clock posedge; + } + clken; + rdsrst any gated_clken; + rdinit any; + portoption "WRITE_MODE" "NO_CHANGE" { + rdwr no_change; + option "MODE" "CASCADE" { + forbid; + } + } + portoption "WRITE_MODE" "WRITE_FIRST" { + ifdef HAS_SIZE_36 { + rdwr new; + } else { + rdwr new_only; + } + } + ifdef HAS_CONFLICT_BUG { + option "HAS_RDFIRST" 1 { + portoption "WRITE_MODE" "READ_FIRST" { + rdwr old; + wrtrans all old; + } + } + } else { + portoption "WRITE_MODE" "READ_FIRST" { + rdwr old; + wrtrans all old; + } + } + optional_rw; + } +} + +ifdef HAS_SIZE_36 { + ram block $__XILINX_BLOCKRAM_SDP_ { + byte 9; + option "MODE" "HALF" { + abits 14; + widths 1 2 4 9 18 36 per_port; + cost 129; + } + option "MODE" "FULL" { + abits 15; + widths 1 2 4 9 18 36 72 per_port; + cost 257; + } + init any; + port sw "W" { + ifndef HAS_MIXWIDTH_SDP { + option "MODE" "HALF" width 36; + option "MODE" "FULL" width 72; + } + ifdef HAS_ADDRCE { + # TODO + # addrce; + } + # Spartan 6 and Virtex 6 have a bug where READ_FIRST is not usable with asynchronous clocks. + ifdef HAS_CONFLICT_BUG { + option "WRITE_MODE" "READ_FIRST" { + clock posedge "C"; + } + option "WRITE_MODE" "WRITE_FIRST" { + clock posedge; + } + } else { + clock posedge; + } + clken; + option "WRITE_MODE" "READ_FIRST" { + wrtrans all old; + } + optional; + } + port sr "R" { + ifndef HAS_MIXWIDTH_SDP { + option "MODE" "HALF" width 36; + option "MODE" "FULL" width 72; + } + ifdef HAS_ADDRCE { + # TODO + # addrce; + } + # Spartan 6 and Virtex 6 have a bug where READ_FIRST is not usable with asynchronous clocks. + ifdef HAS_CONFLICT_BUG { + option "WRITE_MODE" "READ_FIRST" { + clock posedge "C"; + } + option "WRITE_MODE" "WRITE_FIRST" { + clock posedge; + } + } else { + clock posedge; + } + clken; + rdsrst any gated_clken; + rdinit any; + optional; + } + } +} diff --git a/resources/netlist/resources/kernel/share/xilinx/brams_xc4v_map.v b/resources/netlist/resources/kernel/share/xilinx/brams_xc4v_map.v new file mode 100644 index 0000000..a1747d4 --- /dev/null +++ b/resources/netlist/resources/kernel/share/xilinx/brams_xc4v_map.v @@ -0,0 +1,149 @@ +module $__XILINX_BLOCKRAM_TDP_ (...); + +parameter INIT = 0; +parameter OPTION_MODE = "FULL"; + +parameter PORT_A_RD_WIDTH = 1; +parameter PORT_A_WR_WIDTH = 1; +parameter PORT_A_WR_EN_WIDTH = 1; +parameter PORT_A_RD_USED = 1; +parameter PORT_A_WR_USED = 1; +parameter PORT_A_OPTION_WRITE_MODE = "NO_CHANGE"; +parameter PORT_A_RD_INIT_VALUE = 0; +parameter PORT_A_RD_SRST_VALUE = 0; + +parameter PORT_B_RD_WIDTH = 1; +parameter PORT_B_WR_WIDTH = 1; +parameter PORT_B_WR_EN_WIDTH = 1; +parameter PORT_B_RD_USED = 0; +parameter PORT_B_WR_USED = 0; +parameter PORT_B_OPTION_WRITE_MODE = "NO_CHANGE"; +parameter PORT_B_RD_INIT_VALUE = 0; +parameter PORT_B_RD_SRST_VALUE = 0; + +input PORT_A_CLK; +input PORT_A_CLK_EN; +input [14:0] PORT_A_ADDR; +input [PORT_A_WR_WIDTH-1:0] PORT_A_WR_DATA; +input [PORT_A_WR_EN_WIDTH-1:0] PORT_A_WR_EN; +output [PORT_A_RD_WIDTH-1:0] PORT_A_RD_DATA; +input PORT_A_RD_SRST; + +input PORT_B_CLK; +input PORT_B_CLK_EN; +input [14:0] PORT_B_ADDR; +input [PORT_B_WR_WIDTH-1:0] PORT_B_WR_DATA; +input [PORT_B_WR_EN_WIDTH-1:0] PORT_B_WR_EN; +output [PORT_B_RD_WIDTH-1:0] PORT_B_RD_DATA; +input PORT_B_RD_SRST; + +`include "brams_defs.vh" + +`define PARAMS_COMMON \ + .WRITE_MODE_A(PORT_A_OPTION_WRITE_MODE), \ + .WRITE_MODE_B(PORT_B_OPTION_WRITE_MODE), \ + .READ_WIDTH_A(PORT_A_RD_USED ? PORT_A_RD_WIDTH : 0), \ + .READ_WIDTH_B(PORT_B_RD_USED ? PORT_B_RD_WIDTH : 0), \ + .WRITE_WIDTH_A(PORT_A_WR_USED ? PORT_A_WR_WIDTH : 0), \ + .WRITE_WIDTH_B(PORT_B_WR_USED ? PORT_B_WR_WIDTH : 0), \ + .DOA_REG(0), \ + .DOB_REG(0), \ + .INIT_A(ival(PORT_A_RD_WIDTH, PORT_A_RD_INIT_VALUE)), \ + .INIT_B(ival(PORT_B_RD_WIDTH, PORT_B_RD_INIT_VALUE)), \ + .SRVAL_A(ival(PORT_A_RD_WIDTH, PORT_A_RD_SRST_VALUE)), \ + .SRVAL_B(ival(PORT_B_RD_WIDTH, PORT_B_RD_SRST_VALUE)), + +`MAKE_DI(DI_A, DIP_A, PORT_A_WR_DATA) +`MAKE_DI(DI_B, DIP_B, PORT_B_WR_DATA) +`MAKE_DO(DO_A, DOP_A, PORT_A_RD_DATA) +`MAKE_DO(DO_B, DOP_B, PORT_B_RD_DATA) + +wire [3:0] WE_A = {4{PORT_A_WR_EN}}; +wire [3:0] WE_B = {4{PORT_B_WR_EN}}; + +generate + +if (OPTION_MODE == "FULL") begin + RAMB16 #( + `PARAMS_INIT_18 + `PARAMS_INITP_18 + `PARAMS_COMMON + .RAM_EXTENSION_A("NONE"), + .RAM_EXTENSION_B("NONE"), + ) _TECHMAP_REPLACE_ ( + .DOA(DO_A), + .DOPA(DOP_A), + .DIA(DI_A), + .DIPA(DIP_A), + .DOB(DO_B), + .DOPB(DOP_B), + .DIB(DI_B), + .DIPB(DIP_B), + .ADDRA({1'b1, PORT_A_ADDR[13:0]}), + .ADDRB({1'b1, PORT_B_ADDR[13:0]}), + .CLKA(PORT_A_CLK), + .CLKB(PORT_B_CLK), + .ENA(PORT_A_CLK_EN), + .ENB(PORT_B_CLK_EN), + .REGCEA(1'b0), + .REGCEB(1'b0), + .SSRA(PORT_A_RD_SRST), + .SSRB(PORT_B_RD_SRST), + .WEA(WE_A), + .WEB(WE_B), + ); +end else begin + wire CAS_A, CAS_B; + RAMB16 #( + `PARAMS_INIT_18 + `PARAMS_COMMON + .RAM_EXTENSION_A("LOWER"), + .RAM_EXTENSION_B("LOWER"), + ) lower ( + .DIA(DI_A), + .DIB(DI_B), + .ADDRA(PORT_A_ADDR), + .ADDRB(PORT_B_ADDR), + .CLKA(PORT_A_CLK), + .CLKB(PORT_B_CLK), + .ENA(PORT_A_CLK_EN), + .ENB(PORT_B_CLK_EN), + .REGCEA(1'b0), + .REGCEB(1'b0), + .SSRA(PORT_A_RD_SRST), + .SSRB(PORT_B_RD_SRST), + .WEA(WE_A), + .WEB(WE_B), + .CASCADEOUTA(CAS_A), + .CASCADEOUTB(CAS_B), + ); + RAMB16 #( + `PARAMS_INIT_18_U + `PARAMS_COMMON + .RAM_EXTENSION_A("UPPER"), + .RAM_EXTENSION_B("UPPER"), + ) upper ( + .DOA(DO_A), + .DIA(DI_A), + .DOB(DO_B), + .DIB(DI_B), + .ADDRA(PORT_A_ADDR), + .ADDRB(PORT_B_ADDR), + .CLKA(PORT_A_CLK), + .CLKB(PORT_B_CLK), + .ENA(PORT_A_CLK_EN), + .ENB(PORT_B_CLK_EN), + .REGCEA(1'b0), + .REGCEB(1'b0), + .SSRA(PORT_A_RD_SRST), + .SSRB(PORT_B_RD_SRST), + .WEA(WE_A), + .WEB(WE_B), + .CASCADEINA(CAS_A), + .CASCADEINB(CAS_B), + ); +end + +endgenerate + +endmodule diff --git a/resources/netlist/resources/kernel/share/xilinx/brams_xc5v_map.v b/resources/netlist/resources/kernel/share/xilinx/brams_xc5v_map.v new file mode 100644 index 0000000..6349af3 --- /dev/null +++ b/resources/netlist/resources/kernel/share/xilinx/brams_xc5v_map.v @@ -0,0 +1,255 @@ +module $__XILINX_BLOCKRAM_TDP_ (...); + +parameter INIT = 0; +parameter OPTION_MODE = "FULL"; + +parameter PORT_A_RD_WIDTH = 1; +parameter PORT_A_WR_WIDTH = 1; +parameter PORT_A_WR_EN_WIDTH = 1; +parameter PORT_A_RD_USED = 1; +parameter PORT_A_WR_USED = 1; +parameter PORT_A_OPTION_WRITE_MODE = "NO_CHANGE"; +parameter PORT_A_RD_INIT_VALUE = 0; +parameter PORT_A_RD_SRST_VALUE = 0; + +parameter PORT_B_RD_WIDTH = 1; +parameter PORT_B_WR_WIDTH = 1; +parameter PORT_B_WR_EN_WIDTH = 1; +parameter PORT_B_RD_USED = 0; +parameter PORT_B_WR_USED = 0; +parameter PORT_B_OPTION_WRITE_MODE = "NO_CHANGE"; +parameter PORT_B_RD_INIT_VALUE = 0; +parameter PORT_B_RD_SRST_VALUE = 0; + +input PORT_A_CLK; +input PORT_A_CLK_EN; +input [15:0] PORT_A_ADDR; +input [PORT_A_WR_WIDTH-1:0] PORT_A_WR_DATA; +input [PORT_A_WR_EN_WIDTH-1:0] PORT_A_WR_EN; +output [PORT_A_RD_WIDTH-1:0] PORT_A_RD_DATA; +input PORT_A_RD_SRST; + +input PORT_B_CLK; +input PORT_B_CLK_EN; +input [15:0] PORT_B_ADDR; +input [PORT_B_WR_WIDTH-1:0] PORT_B_WR_DATA; +input [PORT_B_WR_EN_WIDTH-1:0] PORT_B_WR_EN; +output [PORT_B_RD_WIDTH-1:0] PORT_B_RD_DATA; +input PORT_B_RD_SRST; + +`include "brams_defs.vh" + +`define PARAMS_COMMON \ + .WRITE_MODE_A(PORT_A_OPTION_WRITE_MODE), \ + .WRITE_MODE_B(PORT_B_OPTION_WRITE_MODE), \ + .READ_WIDTH_A(PORT_A_RD_USED ? PORT_A_RD_WIDTH : 0), \ + .READ_WIDTH_B(PORT_B_RD_USED ? PORT_B_RD_WIDTH : 0), \ + .WRITE_WIDTH_A(PORT_A_WR_USED ? PORT_A_WR_WIDTH : 0), \ + .WRITE_WIDTH_B(PORT_B_WR_USED ? PORT_B_WR_WIDTH : 0), \ + .DOA_REG(0), \ + .DOB_REG(0), \ + .INIT_A(ival(PORT_A_RD_WIDTH, PORT_A_RD_INIT_VALUE)), \ + .INIT_B(ival(PORT_B_RD_WIDTH, PORT_B_RD_INIT_VALUE)), \ + .SRVAL_A(ival(PORT_A_RD_WIDTH, PORT_A_RD_SRST_VALUE)), \ + .SRVAL_B(ival(PORT_B_RD_WIDTH, PORT_B_RD_SRST_VALUE)), + +`MAKE_DI(DI_A, DIP_A, PORT_A_WR_DATA) +`MAKE_DI(DI_B, DIP_B, PORT_B_WR_DATA) +`MAKE_DO(DO_A, DOP_A, PORT_A_RD_DATA) +`MAKE_DO(DO_B, DOP_B, PORT_B_RD_DATA) + +wire [3:0] WE_A = {4{PORT_A_WR_EN}}; +wire [3:0] WE_B = {4{PORT_B_WR_EN}}; + +generate + +if (OPTION_MODE == "HALF") begin + RAMB18 #( + `PARAMS_INIT_18 + `PARAMS_INITP_18 + `PARAMS_COMMON + ) _TECHMAP_REPLACE_ ( + .DOA(DO_A), + .DOPA(DOP_A), + .DIA(DI_A), + .DIPA(DIP_A), + .DOB(DO_B), + .DOPB(DOP_B), + .DIB(DI_B), + .DIPB(DIP_B), + .ADDRA(PORT_A_ADDR[13:0]), + .ADDRB(PORT_B_ADDR[13:0]), + .CLKA(PORT_A_CLK), + .CLKB(PORT_B_CLK), + .ENA(PORT_A_CLK_EN), + .ENB(PORT_B_CLK_EN), + .REGCEA(1'b0), + .REGCEB(1'b0), + .SSRA(PORT_A_RD_SRST), + .SSRB(PORT_B_RD_SRST), + .WEA(WE_A), + .WEB(WE_B), + ); +end else if (OPTION_MODE == "FULL") begin + RAMB36 #( + `PARAMS_INIT_36 + `PARAMS_INITP_36 + `PARAMS_COMMON + .RAM_EXTENSION_A("NONE"), + .RAM_EXTENSION_B("NONE"), + ) _TECHMAP_REPLACE_ ( + .DOA(DO_A), + .DOPA(DOP_A), + .DIA(DI_A), + .DIPA(DIP_A), + .DOB(DO_B), + .DOPB(DOP_B), + .DIB(DI_B), + .DIPB(DIP_B), + .ADDRA({1'b1, PORT_A_ADDR[14:0]}), + .ADDRB({1'b1, PORT_B_ADDR[14:0]}), + .CLKA(PORT_A_CLK), + .CLKB(PORT_B_CLK), + .ENA(PORT_A_CLK_EN), + .ENB(PORT_B_CLK_EN), + .REGCEA(1'b0), + .REGCEB(1'b0), + .SSRA(PORT_A_RD_SRST), + .SSRB(PORT_B_RD_SRST), + .WEA(WE_A), + .WEB(WE_B), + ); +end else begin + wire CAS_A, CAS_B; + RAMB36 #( + `PARAMS_INIT_36 + `PARAMS_COMMON + .RAM_EXTENSION_A("LOWER"), + .RAM_EXTENSION_B("LOWER"), + ) lower ( + .DIA(DI_A), + .DIB(DI_B), + .ADDRA(PORT_A_ADDR), + .ADDRB(PORT_B_ADDR), + .CLKA(PORT_A_CLK), + .CLKB(PORT_B_CLK), + .ENA(PORT_A_CLK_EN), + .ENB(PORT_B_CLK_EN), + .REGCEA(1'b0), + .REGCEB(1'b0), + .SSRA(PORT_A_RD_SRST), + .SSRB(PORT_B_RD_SRST), + .WEA(WE_A), + .WEB(WE_B), + .CASCADEOUTLATA(CAS_A), + .CASCADEOUTLATB(CAS_B), + ); + RAMB36 #( + `PARAMS_INIT_36_U + `PARAMS_COMMON + .RAM_EXTENSION_A("UPPER"), + .RAM_EXTENSION_B("UPPER"), + ) upper ( + .DOA(DO_A), + .DIA(DI_A), + .DOB(DO_B), + .DIB(DI_B), + .ADDRA(PORT_A_ADDR), + .ADDRB(PORT_B_ADDR), + .CLKA(PORT_A_CLK), + .CLKB(PORT_B_CLK), + .ENA(PORT_A_CLK_EN), + .ENB(PORT_B_CLK_EN), + .REGCEA(1'b0), + .REGCEB(1'b0), + .SSRA(PORT_A_RD_SRST), + .SSRB(PORT_B_RD_SRST), + .WEA(WE_A), + .WEB(WE_B), + .CASCADEINLATA(CAS_A), + .CASCADEINLATB(CAS_B), + ); +end + +endgenerate + +endmodule + + +module $__XILINX_BLOCKRAM_SDP_ (...); + +parameter INIT = 0; +parameter OPTION_MODE = "FULL"; +parameter OPTION_WRITE_MODE = "READ_FIRST"; + +parameter PORT_W_WIDTH = 1; +parameter PORT_W_WR_EN_WIDTH = 1; +parameter PORT_W_USED = 1; + +parameter PORT_R_WIDTH = 1; +parameter PORT_R_USED = 0; +parameter PORT_R_RD_INIT_VALUE = 0; +parameter PORT_R_RD_SRST_VALUE = 0; + +input PORT_W_CLK; +input PORT_W_CLK_EN; +input [15:0] PORT_W_ADDR; +input [PORT_W_WIDTH-1:0] PORT_W_WR_DATA; +input [PORT_W_WR_EN_WIDTH-1:0] PORT_W_WR_EN; + +input PORT_R_CLK; +input PORT_R_CLK_EN; +input [15:0] PORT_R_ADDR; +output [PORT_R_WIDTH-1:0] PORT_R_RD_DATA; +input PORT_R_RD_SRST; + +`include "brams_defs.vh" + +`define PARAMS_COMMON \ + .DO_REG(0), \ + .INIT(ival(PORT_R_WIDTH, PORT_R_RD_INIT_VALUE)), \ + .SRVAL(ival(PORT_R_WIDTH, PORT_R_RD_SRST_VALUE)), + +`define PORTS_COMMON \ + .DO(DO), \ + .DOP(DOP), \ + .DI(DI), \ + .DIP(DIP), \ + .WRCLK(PORT_W_CLK), \ + .RDCLK(PORT_R_CLK), \ + .WREN(PORT_W_CLK_EN), \ + .RDEN(PORT_R_CLK_EN), \ + .REGCE(1'b0), \ + .SSR(PORT_R_RD_SRST), \ + .WE(PORT_W_WR_EN), + +`MAKE_DI(DI, DIP, PORT_W_WR_DATA) +`MAKE_DO(DO, DOP, PORT_R_RD_DATA) + +generate + +if (OPTION_MODE == "HALF") begin + RAMB18SDP #( + `PARAMS_INIT_18 + `PARAMS_INITP_18 + `PARAMS_COMMON + ) _TECHMAP_REPLACE_ ( + `PORTS_COMMON + .WRADDR(PORT_W_ADDR[13:5]), + .RDADDR(PORT_R_ADDR[13:5]), + ); +end else if (OPTION_MODE == "FULL") begin + RAMB36SDP #( + `PARAMS_INIT_36 + `PARAMS_INITP_36 + `PARAMS_COMMON + ) _TECHMAP_REPLACE_ ( + `PORTS_COMMON + .WRADDR(PORT_W_ADDR[14:6]), + .RDADDR(PORT_R_ADDR[14:6]), + ); +end + +endgenerate + +endmodule diff --git a/resources/netlist/resources/kernel/share/xilinx/brams_xc6v_map.v b/resources/netlist/resources/kernel/share/xilinx/brams_xc6v_map.v new file mode 100644 index 0000000..b2698a3 --- /dev/null +++ b/resources/netlist/resources/kernel/share/xilinx/brams_xc6v_map.v @@ -0,0 +1,284 @@ +module $__XILINX_BLOCKRAM_TDP_ (...); + +parameter INIT = 0; +parameter OPTION_MODE = "FULL"; +parameter OPTION_HAS_RDFIRST = 0; + +parameter PORT_A_RD_WIDTH = 1; +parameter PORT_A_WR_WIDTH = 1; +parameter PORT_A_WR_EN_WIDTH = 1; +parameter PORT_A_RD_USED = 1; +parameter PORT_A_WR_USED = 1; +parameter PORT_A_OPTION_WRITE_MODE = "NO_CHANGE"; +parameter PORT_A_RD_INIT_VALUE = 0; +parameter PORT_A_RD_SRST_VALUE = 1; + +parameter PORT_B_RD_WIDTH = 1; +parameter PORT_B_WR_WIDTH = 1; +parameter PORT_B_WR_EN_WIDTH = 1; +parameter PORT_B_RD_USED = 0; +parameter PORT_B_WR_USED = 0; +parameter PORT_B_OPTION_WRITE_MODE = "NO_CHANGE"; +parameter PORT_B_RD_INIT_VALUE = 0; +parameter PORT_B_RD_SRST_VALUE = 0; + +input CLK_C; + +input PORT_A_CLK; +input PORT_A_CLK_EN; +input [15:0] PORT_A_ADDR; +input [PORT_A_WR_WIDTH-1:0] PORT_A_WR_DATA; +input [PORT_A_WR_EN_WIDTH-1:0] PORT_A_WR_EN; +output [PORT_A_RD_WIDTH-1:0] PORT_A_RD_DATA; +input PORT_A_RD_SRST; + +input PORT_B_CLK; +input PORT_B_CLK_EN; +input [15:0] PORT_B_ADDR; +input [PORT_B_WR_WIDTH-1:0] PORT_B_WR_DATA; +input [PORT_B_WR_EN_WIDTH-1:0] PORT_B_WR_EN; +output [PORT_B_RD_WIDTH-1:0] PORT_B_RD_DATA; +input PORT_B_RD_SRST; + +`include "brams_defs.vh" + +`define PARAMS_COMMON \ + .WRITE_MODE_A(PORT_A_OPTION_WRITE_MODE), \ + .WRITE_MODE_B(PORT_B_OPTION_WRITE_MODE), \ + .READ_WIDTH_A(PORT_A_RD_USED ? PORT_A_RD_WIDTH : 0), \ + .READ_WIDTH_B(PORT_B_RD_USED ? PORT_B_RD_WIDTH : 0), \ + .WRITE_WIDTH_A(PORT_A_WR_USED ? PORT_A_WR_WIDTH : 0), \ + .WRITE_WIDTH_B(PORT_B_WR_USED ? PORT_B_WR_WIDTH : 0), \ + .DOA_REG(0), \ + .DOB_REG(0), \ + .INIT_A(ival(PORT_A_RD_WIDTH, PORT_A_RD_INIT_VALUE)), \ + .INIT_B(ival(PORT_B_RD_WIDTH, PORT_B_RD_INIT_VALUE)), \ + .SRVAL_A(ival(PORT_A_RD_WIDTH, PORT_A_RD_SRST_VALUE)), \ + .SRVAL_B(ival(PORT_B_RD_WIDTH, PORT_B_RD_SRST_VALUE)), \ + .RAM_MODE("TDP"), + +`define PORTS_COMMON \ + .DOADO(DO_A), \ + .DOPADOP(DOP_A), \ + .DIADI(DI_A), \ + .DIPADIP(DIP_A), \ + .DOBDO(DO_B), \ + .DOPBDOP(DOP_B), \ + .DIBDI(DI_B), \ + .DIPBDIP(DIP_B), \ + .CLKARDCLK(PORT_A_CLK), \ + .CLKBWRCLK(PORT_B_CLK), \ + .ENARDEN(PORT_A_CLK_EN), \ + .ENBWREN(PORT_B_CLK_EN), \ + .REGCEAREGCE(1'b0), \ + .REGCEB(1'b0), \ + .RSTRAMARSTRAM(PORT_A_RD_SRST), \ + .RSTRAMB(PORT_B_RD_SRST), \ + .RSTREGARSTREG(1'b0), \ + .RSTREGB(1'b0), \ + .WEA(WE_A), \ + .WEBWE(WE_B), + +`MAKE_DI(DI_A, DIP_A, PORT_A_WR_DATA) +`MAKE_DI(DI_B, DIP_B, PORT_B_WR_DATA) +`MAKE_DO(DO_A, DOP_A, PORT_A_RD_DATA) +`MAKE_DO(DO_B, DOP_B, PORT_B_RD_DATA) + +wire [3:0] WE_A = {4{PORT_A_WR_EN}}; +wire [3:0] WE_B = {4{PORT_B_WR_EN}}; + +generate + +if (OPTION_MODE == "HALF") begin + RAMB18E1 #( + `PARAMS_INIT_18 + `PARAMS_INITP_18 + `PARAMS_COMMON + ) _TECHMAP_REPLACE_ ( + `PORTS_COMMON + .ADDRARDADDR(PORT_A_ADDR[13:0]), + .ADDRBWRADDR(PORT_B_ADDR[13:0]), + ); +end else if (OPTION_MODE == "FULL") begin + RAMB36E1 #( + `PARAMS_INIT_36 + `PARAMS_INITP_36 + `PARAMS_COMMON + .RAM_EXTENSION_A("NONE"), + .RAM_EXTENSION_B("NONE"), + ) _TECHMAP_REPLACE_ ( + `PORTS_COMMON + .ADDRARDADDR({1'b1, PORT_A_ADDR[14:0]}), + .ADDRBWRADDR({1'b1, PORT_B_ADDR[14:0]}), + ); +end else begin + wire CAS_A, CAS_B; + RAMB36E1 #( + `PARAMS_INIT_36 + `PARAMS_COMMON + .RAM_EXTENSION_A("LOWER"), + .RAM_EXTENSION_B("LOWER"), + ) lower ( + .DIADI(DI_A), + .DIBDI(DI_B), + .CLKARDCLK(PORT_A_CLK), + .CLKBWRCLK(PORT_B_CLK), + .ENARDEN(PORT_A_CLK_EN), + .ENBWREN(PORT_B_CLK_EN), + .REGCEAREGCE(1'b0), + .REGCEB(1'b0), + .RSTRAMARSTRAM(PORT_A_RD_SRST), + .RSTRAMB(PORT_B_RD_SRST), + .RSTREGARSTREG(1'b0), + .RSTREGB(1'b0), + .WEA(WE_A), + .WEBWE(WE_B), + .ADDRARDADDR(PORT_A_ADDR), + .ADDRBWRADDR(PORT_B_ADDR), + .CASCADEOUTA(CAS_A), + .CASCADEOUTB(CAS_B), + ); + RAMB36E1 #( + `PARAMS_INIT_36_U + `PARAMS_COMMON + .RAM_EXTENSION_A("UPPER"), + .RAM_EXTENSION_B("UPPER"), + ) upper ( + .DOADO(DO_A), + .DIADI(DI_A), + .DOBDO(DO_B), + .DIBDI(DI_B), + .CLKARDCLK(PORT_A_CLK), + .CLKBWRCLK(PORT_B_CLK), + .ENARDEN(PORT_A_CLK_EN), + .ENBWREN(PORT_B_CLK_EN), + .REGCEAREGCE(1'b0), + .REGCEB(1'b0), + .RSTRAMARSTRAM(PORT_A_RD_SRST), + .RSTRAMB(PORT_B_RD_SRST), + .RSTREGARSTREG(1'b0), + .RSTREGB(1'b0), + .WEA(WE_A), + .WEBWE(WE_B), + .ADDRARDADDR(PORT_A_ADDR), + .ADDRBWRADDR(PORT_B_ADDR), + .CASCADEINA(CAS_A), + .CASCADEINB(CAS_B), + ); +end + +endgenerate + +endmodule + + +module $__XILINX_BLOCKRAM_SDP_ (...); + +parameter INIT = 0; +parameter OPTION_MODE = "FULL"; +parameter OPTION_WRITE_MODE = "READ_FIRST"; + +parameter PORT_W_WIDTH = 1; +parameter PORT_W_WR_EN_WIDTH = 1; +parameter PORT_W_USED = 1; + +parameter PORT_R_WIDTH = 1; +parameter PORT_R_USED = 0; +parameter PORT_R_RD_INIT_VALUE = 0; +parameter PORT_R_RD_SRST_VALUE = 0; + +input CLK_C; + +input PORT_W_CLK; +input PORT_W_CLK_EN; +input [15:0] PORT_W_ADDR; +input [PORT_W_WIDTH-1:0] PORT_W_WR_DATA; +input [PORT_W_WR_EN_WIDTH-1:0] PORT_W_WR_EN; + +input PORT_R_CLK; +input PORT_R_CLK_EN; +input [15:0] PORT_R_ADDR; +output [PORT_R_WIDTH-1:0] PORT_R_RD_DATA; +input PORT_R_RD_SRST; + +`include "brams_defs.vh" + +`define PARAMS_COMMON \ + .WRITE_MODE_A(OPTION_WRITE_MODE), \ + .WRITE_MODE_B(OPTION_WRITE_MODE), \ + .READ_WIDTH_A(PORT_R_USED ? PORT_R_WIDTH : 0), \ + .READ_WIDTH_B(0), \ + .WRITE_WIDTH_A(0), \ + .WRITE_WIDTH_B(PORT_W_USED ? PORT_W_WIDTH : 0), \ + .DOA_REG(0), \ + .DOB_REG(0), \ + .RAM_MODE("SDP"), + +`define PORTS_COMMON \ + .CLKBWRCLK(PORT_W_CLK), \ + .CLKARDCLK(PORT_R_CLK), \ + .ENBWREN(PORT_W_CLK_EN), \ + .ENARDEN(PORT_R_CLK_EN), \ + .REGCEAREGCE(1'b0), \ + .REGCEB(1'b0), \ + .RSTRAMARSTRAM(PORT_R_RD_SRST), \ + .RSTRAMB(1'b0), \ + .RSTREGARSTREG(1'b0), \ + .RSTREGB(1'b0), \ + .WEA(0), \ + .WEBWE(PORT_W_WR_EN), + +`MAKE_DI(DI, DIP, PORT_W_WR_DATA) +`MAKE_DO(DO, DOP, PORT_R_RD_DATA) + +generate + +if (OPTION_MODE == "HALF") begin + RAMB18E1 #( + `PARAMS_INIT_18 + `PARAMS_INITP_18 + `PARAMS_COMMON + .INIT_A(PORT_R_WIDTH == 36 ? ival(18, PORT_R_RD_INIT_VALUE[17:0]) : ival(PORT_R_WIDTH, PORT_R_RD_INIT_VALUE)), + .INIT_B(PORT_R_WIDTH == 36 ? ival(18, PORT_R_RD_INIT_VALUE[35:18]) : 0), + .SRVAL_A(PORT_R_WIDTH == 36 ? ival(18, PORT_R_RD_SRST_VALUE[17:0]) : ival(PORT_R_WIDTH, PORT_R_RD_SRST_VALUE)), + .SRVAL_B(PORT_R_WIDTH == 36 ? ival(18, PORT_R_RD_SRST_VALUE[35:18]) : 0), + ) _TECHMAP_REPLACE_ ( + `PORTS_COMMON + .ADDRARDADDR(PORT_R_ADDR[13:0]), + .ADDRBWRADDR(PORT_W_ADDR[13:0]), + .DOADO(DO[15:0]), + .DOBDO(DO[31:16]), + .DOPADOP(DOP[1:0]), + .DOPBDOP(DOP[3:2]), + .DIADI(DI[15:0]), + .DIBDI(PORT_W_WIDTH == 36 ? DI[31:16] : DI[15:0]), + .DIPADIP(DIP[1:0]), + .DIPBDIP(PORT_W_WIDTH == 36 ? DIP[3:2] : DIP[1:0]), + ); +end else if (OPTION_MODE == "FULL") begin + RAMB36E1 #( + `PARAMS_INIT_36 + `PARAMS_INITP_36 + `PARAMS_COMMON + .INIT_A(PORT_R_WIDTH == 72 ? ival(36, PORT_R_RD_INIT_VALUE[35:0]) : ival(PORT_R_WIDTH, PORT_R_RD_INIT_VALUE)), + .INIT_B(PORT_R_WIDTH == 72 ? ival(36, PORT_R_RD_INIT_VALUE[71:36]) : 0), + .SRVAL_A(PORT_R_WIDTH == 72 ? ival(36, PORT_R_RD_SRST_VALUE[35:0]) : ival(PORT_R_WIDTH, PORT_R_RD_SRST_VALUE)), + .SRVAL_B(PORT_R_WIDTH == 72 ? ival(36, PORT_R_RD_SRST_VALUE[71:36]) : 0), + ) _TECHMAP_REPLACE_ ( + `PORTS_COMMON + .ADDRARDADDR({1'b1, PORT_R_ADDR}), + .ADDRBWRADDR({1'b1, PORT_W_ADDR}), + .DOADO(DO[31:0]), + .DOBDO(DO[63:32]), + .DOPADOP(DOP[3:0]), + .DOPBDOP(DOP[7:4]), + .DIADI(DI[31:0]), + .DIBDI(PORT_W_WIDTH == 72 ? DI[63:32] : DI[31:0]), + .DIPADIP(DIP[3:0]), + .DIPBDIP(PORT_W_WIDTH == 71 ? DIP[7:4] : DIP[3:0]), + ); +end + +endgenerate + +endmodule diff --git a/resources/netlist/resources/kernel/share/xilinx/brams_xcu_map.v b/resources/netlist/resources/kernel/share/xilinx/brams_xcu_map.v new file mode 100644 index 0000000..d48c21a --- /dev/null +++ b/resources/netlist/resources/kernel/share/xilinx/brams_xcu_map.v @@ -0,0 +1,225 @@ +module $__XILINX_BLOCKRAM_TDP_ (...); + +parameter INIT = 0; +parameter OPTION_MODE = "FULL"; +parameter OPTION_HAS_RDFIRST = 0; + +parameter PORT_A_RD_WIDTH = 1; +parameter PORT_A_WR_WIDTH = 1; +parameter PORT_A_WR_EN_WIDTH = 1; +parameter PORT_A_RD_USED = 1; +parameter PORT_A_WR_USED = 1; +parameter PORT_A_OPTION_WRITE_MODE = "NO_CHANGE"; +parameter PORT_A_RD_INIT_VALUE = 0; +parameter PORT_A_RD_SRST_VALUE = 1; + +parameter PORT_B_RD_WIDTH = 1; +parameter PORT_B_WR_WIDTH = 1; +parameter PORT_B_WR_EN_WIDTH = 1; +parameter PORT_B_RD_USED = 0; +parameter PORT_B_WR_USED = 0; +parameter PORT_B_OPTION_WRITE_MODE = "NO_CHANGE"; +parameter PORT_B_RD_INIT_VALUE = 0; +parameter PORT_B_RD_SRST_VALUE = 0; + +input PORT_A_CLK; +input PORT_A_CLK_EN; +input [15:0] PORT_A_ADDR; +input [PORT_A_WR_WIDTH-1:0] PORT_A_WR_DATA; +input [PORT_A_WR_EN_WIDTH-1:0] PORT_A_WR_EN; +output [PORT_A_RD_WIDTH-1:0] PORT_A_RD_DATA; +input PORT_A_RD_SRST; + +input PORT_B_CLK; +input PORT_B_CLK_EN; +input [15:0] PORT_B_ADDR; +input [PORT_B_WR_WIDTH-1:0] PORT_B_WR_DATA; +input [PORT_B_WR_EN_WIDTH-1:0] PORT_B_WR_EN; +output [PORT_B_RD_WIDTH-1:0] PORT_B_RD_DATA; +input PORT_B_RD_SRST; + +`include "brams_defs.vh" + +`define PARAMS_COMMON \ + .WRITE_MODE_A(PORT_A_OPTION_WRITE_MODE), \ + .WRITE_MODE_B(PORT_B_OPTION_WRITE_MODE), \ + .READ_WIDTH_A(PORT_A_RD_USED ? PORT_A_RD_WIDTH : 0), \ + .READ_WIDTH_B(PORT_B_RD_USED ? PORT_B_RD_WIDTH : 0), \ + .WRITE_WIDTH_A(PORT_A_WR_USED ? PORT_A_WR_WIDTH : 0), \ + .WRITE_WIDTH_B(PORT_B_WR_USED ? PORT_B_WR_WIDTH : 0), \ + .DOA_REG(0), \ + .DOB_REG(0), \ + .INIT_A(ival(PORT_A_RD_WIDTH, PORT_A_RD_INIT_VALUE)), \ + .INIT_B(ival(PORT_B_RD_WIDTH, PORT_B_RD_INIT_VALUE)), \ + .SRVAL_A(ival(PORT_A_RD_WIDTH, PORT_A_RD_SRST_VALUE)), \ + .SRVAL_B(ival(PORT_B_RD_WIDTH, PORT_B_RD_SRST_VALUE)), + +`define PORTS_COMMON \ + .DOUTADOUT(DO_A), \ + .DOUTPADOUTP(DOP_A), \ + .DINADIN(DI_A), \ + .DINPADINP(DIP_A), \ + .DOUTBDOUT(DO_B), \ + .DOUTPBDOUTP(DOP_B), \ + .DINBDIN(DI_B), \ + .DINPBDINP(DIP_B), \ + .CLKARDCLK(PORT_A_CLK), \ + .CLKBWRCLK(PORT_B_CLK), \ + .ENARDEN(PORT_A_CLK_EN), \ + .ENBWREN(PORT_B_CLK_EN), \ + .REGCEAREGCE(1'b0), \ + .REGCEB(1'b0), \ + .ADDRENA(1'b1), \ + .ADDRENB(1'b1), \ + .RSTRAMARSTRAM(PORT_A_RD_SRST), \ + .RSTRAMB(PORT_B_RD_SRST), \ + .RSTREGARSTREG(1'b0), \ + .RSTREGB(1'b0), \ + .WEA(WE_A), \ + .WEBWE(WE_B), \ + .ADDRARDADDR(PORT_A_ADDR), \ + .ADDRBWRADDR(PORT_B_ADDR), \ + .SLEEP(1'b0), + +`MAKE_DI(DI_A, DIP_A, PORT_A_WR_DATA) +`MAKE_DI(DI_B, DIP_B, PORT_B_WR_DATA) +`MAKE_DO(DO_A, DOP_A, PORT_A_RD_DATA) +`MAKE_DO(DO_B, DOP_B, PORT_B_RD_DATA) + +wire [3:0] WE_A = {4{PORT_A_WR_EN}}; +wire [3:0] WE_B = {4{PORT_B_WR_EN}}; + +generate + +if (OPTION_MODE == "HALF") begin + RAMB18E2 #( + `PARAMS_INIT_18 + `PARAMS_INITP_18 + `PARAMS_COMMON + ) _TECHMAP_REPLACE_ ( + `PORTS_COMMON + ); +end else if (OPTION_MODE == "FULL") begin + RAMB36E2 #( + `PARAMS_INIT_36 + `PARAMS_INITP_36 + `PARAMS_COMMON + ) _TECHMAP_REPLACE_ ( + `PORTS_COMMON + ); +end + +endgenerate + +endmodule + + +module $__XILINX_BLOCKRAM_SDP_ (...); + +parameter INIT = 0; +parameter OPTION_MODE = "FULL"; +parameter OPTION_WRITE_MODE = "READ_FIRST"; + +parameter PORT_W_WIDTH = 1; +parameter PORT_W_WR_EN_WIDTH = 1; +parameter PORT_W_USED = 1; + +parameter PORT_R_WIDTH = 1; +parameter PORT_R_USED = 0; +parameter PORT_R_RD_INIT_VALUE = 0; +parameter PORT_R_RD_SRST_VALUE = 0; + +input PORT_W_CLK; +input PORT_W_CLK_EN; +input [15:0] PORT_W_ADDR; +input [PORT_W_WIDTH-1:0] PORT_W_WR_DATA; +input [PORT_W_WR_EN_WIDTH-1:0] PORT_W_WR_EN; + +input PORT_R_CLK; +input PORT_R_CLK_EN; +input [15:0] PORT_R_ADDR; +output [PORT_R_WIDTH-1:0] PORT_R_RD_DATA; +input PORT_R_RD_SRST; + +`include "brams_defs.vh" + +`define PARAMS_COMMON \ + .WRITE_MODE_A(OPTION_WRITE_MODE), \ + .WRITE_MODE_B(OPTION_WRITE_MODE), \ + .READ_WIDTH_A(PORT_R_USED ? PORT_R_WIDTH : 0), \ + .READ_WIDTH_B(0), \ + .WRITE_WIDTH_A(0), \ + .WRITE_WIDTH_B(PORT_W_USED ? PORT_W_WIDTH : 0), \ + .DOA_REG(0), \ + .DOB_REG(0), + +`define PORTS_COMMON \ + .CLKBWRCLK(PORT_W_CLK), \ + .CLKARDCLK(PORT_R_CLK), \ + .ENBWREN(PORT_W_CLK_EN), \ + .ENARDEN(PORT_R_CLK_EN), \ + .REGCEAREGCE(1'b0), \ + .REGCEB(1'b0), \ + .ADDRENA(1'b1), \ + .ADDRENB(1'b1), \ + .RSTRAMARSTRAM(PORT_R_RD_SRST), \ + .RSTRAMB(1'b0), \ + .RSTREGARSTREG(1'b0), \ + .RSTREGB(1'b0), \ + .WEA(0), \ + .WEBWE(PORT_W_WR_EN), \ + .ADDRARDADDR(PORT_R_ADDR), \ + .ADDRBWRADDR(PORT_W_ADDR), \ + .SLEEP(1'b0), + +`MAKE_DI(DI, DIP, PORT_W_WR_DATA) +`MAKE_DO(DO, DOP, PORT_R_RD_DATA) + +generate + +if (OPTION_MODE == "HALF") begin + RAMB18E2 #( + `PARAMS_INIT_18 + `PARAMS_INITP_18 + `PARAMS_COMMON + .INIT_A(PORT_R_WIDTH == 36 ? ival(18, PORT_R_RD_INIT_VALUE[17:0]) : ival(PORT_R_WIDTH, PORT_R_RD_INIT_VALUE)), + .INIT_B(PORT_R_WIDTH == 36 ? ival(18, PORT_R_RD_INIT_VALUE[35:18]) : 0), + .SRVAL_A(PORT_R_WIDTH == 36 ? ival(18, PORT_R_RD_SRST_VALUE[17:0]) : ival(PORT_R_WIDTH, PORT_R_RD_SRST_VALUE)), + .SRVAL_B(PORT_R_WIDTH == 36 ? ival(18, PORT_R_RD_SRST_VALUE[35:18]) : 0), + ) _TECHMAP_REPLACE_ ( + `PORTS_COMMON + .DOUTADOUT(DO[15:0]), + .DOUTBDOUT(DO[31:16]), + .DOUTPADOUTP(DOP[1:0]), + .DOUTPBDOUTP(DOP[3:2]), + .DINADIN(DI[15:0]), + .DINBDIN(PORT_W_WIDTH == 36 ? DI[31:16] : DI[15:0]), + .DINPADINP(DIP[1:0]), + .DINPBDINP(PORT_W_WIDTH == 36 ? DIP[3:2] : DIP[1:0]), + ); +end else if (OPTION_MODE == "FULL") begin + RAMB36E2 #( + `PARAMS_INIT_36 + `PARAMS_INITP_36 + `PARAMS_COMMON + .INIT_A(PORT_R_WIDTH == 72 ? ival(36, PORT_R_RD_INIT_VALUE[35:0]) : ival(PORT_R_WIDTH, PORT_R_RD_INIT_VALUE)), + .INIT_B(PORT_R_WIDTH == 72 ? ival(36, PORT_R_RD_INIT_VALUE[71:36]) : 0), + .SRVAL_A(PORT_R_WIDTH == 72 ? ival(36, PORT_R_RD_SRST_VALUE[35:0]) : ival(PORT_R_WIDTH, PORT_R_RD_SRST_VALUE)), + .SRVAL_B(PORT_R_WIDTH == 72 ? ival(36, PORT_R_RD_SRST_VALUE[71:36]) : 0), + ) _TECHMAP_REPLACE_ ( + `PORTS_COMMON + .DOUTADOUT(DO[31:0]), + .DOUTBDOUT(DO[63:32]), + .DOUTPADOUTP(DOP[3:0]), + .DOUTPBDOUTP(DOP[7:4]), + .DINADIN(DI[31:0]), + .DINBDIN(PORT_W_WIDTH == 72 ? DI[63:32] : DI[31:0]), + .DINPADINP(DIP[3:0]), + .DINPBDINP(PORT_W_WIDTH == 71 ? DIP[7:4] : DIP[3:0]), + ); +end + +endgenerate + +endmodule + diff --git a/resources/netlist/resources/kernel/share/xilinx/brams_xcv.txt b/resources/netlist/resources/kernel/share/xilinx/brams_xcv.txt new file mode 100644 index 0000000..294e903 --- /dev/null +++ b/resources/netlist/resources/kernel/share/xilinx/brams_xcv.txt @@ -0,0 +1,17 @@ +# Block RAMs for the original Virtex. +# The corresponding mapping file is brams_xcv_map.v + +ram block $__XILINX_BLOCKRAM_ { + abits 12; + widths 1 2 4 8 16 per_port; + cost 32; + init any; + port srsw "A" "B" { + clock posedge; + clken; + rdwr new; + rdinit zero; + rdsrst zero gated_clken; + optional; + } +} diff --git a/resources/netlist/resources/kernel/share/xilinx/brams_xcv_map.v b/resources/netlist/resources/kernel/share/xilinx/brams_xcv_map.v new file mode 100644 index 0000000..408cc67 --- /dev/null +++ b/resources/netlist/resources/kernel/share/xilinx/brams_xcv_map.v @@ -0,0 +1,257 @@ +module $__XILINX_BLOCKRAM_ (...); + +parameter INIT = 0; + +parameter PORT_A_WIDTH = 1; +parameter PORT_B_WIDTH = 1; +parameter PORT_A_USED = 1; +parameter PORT_B_USED = 0; + +input PORT_A_CLK; +input PORT_A_CLK_EN; +input [11:0] PORT_A_ADDR; +input [PORT_A_WIDTH-1:0] PORT_A_WR_DATA; +input PORT_A_WR_EN; +output [PORT_A_WIDTH-1:0] PORT_A_RD_DATA; +input PORT_A_RD_SRST; + +input PORT_B_CLK; +input PORT_B_CLK_EN; +input [11:0] PORT_B_ADDR; +input [PORT_B_WIDTH-1:0] PORT_B_WR_DATA; +input PORT_B_WR_EN; +output [PORT_B_WIDTH-1:0] PORT_B_RD_DATA; +input PORT_B_RD_SRST; + +`define PARAMS_INIT \ + .INIT_00(INIT[0*256+:256]), \ + .INIT_01(INIT[1*256+:256]), \ + .INIT_02(INIT[2*256+:256]), \ + .INIT_03(INIT[3*256+:256]), \ + .INIT_04(INIT[4*256+:256]), \ + .INIT_05(INIT[5*256+:256]), \ + .INIT_06(INIT[6*256+:256]), \ + .INIT_07(INIT[7*256+:256]), \ + .INIT_08(INIT[8*256+:256]), \ + .INIT_09(INIT[9*256+:256]), \ + .INIT_0A(INIT[10*256+:256]), \ + .INIT_0B(INIT[11*256+:256]), \ + .INIT_0C(INIT[12*256+:256]), \ + .INIT_0D(INIT[13*256+:256]), \ + .INIT_0E(INIT[14*256+:256]), \ + .INIT_0F(INIT[15*256+:256]), + +`define PORTS_DP(addr_slice_a, addr_slice_b) \ + .CLKA(PORT_A_CLK), \ + .ENA(PORT_A_CLK_EN), \ + .WEA(PORT_A_WR_EN), \ + .RSTA(PORT_A_RD_SRST), \ + .ADDRA(PORT_A_ADDR addr_slice_a), \ + .DOA(PORT_A_RD_DATA), \ + .DIA(PORT_A_WR_DATA), \ + .CLKB(PORT_B_CLK), \ + .ENB(PORT_B_CLK_EN), \ + .WEB(PORT_B_WR_EN), \ + .RSTB(PORT_B_RD_SRST), \ + .ADDRB(PORT_B_ADDR addr_slice_b), \ + .DOB(PORT_B_RD_DATA), \ + .DIB(PORT_B_WR_DATA), + +`define PORTS_DP_SWAP(addr_slice_a, addr_slice_b) \ + .CLKB(PORT_A_CLK), \ + .ENB(PORT_A_CLK_EN), \ + .WEB(PORT_A_WR_EN), \ + .RSTB(PORT_A_RD_SRST), \ + .ADDRB(PORT_A_ADDR addr_slice_a), \ + .DOB(PORT_A_RD_DATA), \ + .DIB(PORT_A_WR_DATA), \ + .CLKA(PORT_B_CLK), \ + .ENA(PORT_B_CLK_EN), \ + .WEA(PORT_B_WR_EN), \ + .RSTA(PORT_B_RD_SRST), \ + .ADDRA(PORT_B_ADDR addr_slice_b), \ + .DOA(PORT_B_RD_DATA), \ + .DIA(PORT_B_WR_DATA), + +`define PORTS_SP(addr_slice) \ + .CLK(PORT_A_CLK), \ + .EN(PORT_A_CLK_EN), \ + .WE(PORT_A_WR_EN), \ + .RST(PORT_A_RD_SRST), \ + .ADDR(PORT_A_ADDR addr_slice), \ + .DO(PORT_A_RD_DATA), \ + .DI(PORT_A_WR_DATA), + +generate + +if (!PORT_B_USED) begin + case (PORT_A_WIDTH) + 1: RAMB4_S1 #( + `PARAMS_INIT + ) _TECHMAP_REPLACE_ ( + `PORTS_SP([11:0]) + ); + 2: RAMB4_S2 #( + `PARAMS_INIT + ) _TECHMAP_REPLACE_ ( + `PORTS_SP([11:1]) + ); + 4: RAMB4_S4 #( + `PARAMS_INIT + ) _TECHMAP_REPLACE_ ( + `PORTS_SP([11:2]) + ); + 8: RAMB4_S8 #( + `PARAMS_INIT + ) _TECHMAP_REPLACE_ ( + `PORTS_SP([11:3]) + ); + 16: RAMB4_S16 #( + `PARAMS_INIT + ) _TECHMAP_REPLACE_ ( + `PORTS_SP([11:4]) + ); + endcase +end else begin + case (PORT_A_WIDTH) + 1: case(PORT_B_WIDTH) + 1: RAMB4_S1_S1 #( + `PARAMS_INIT + ) _TECHMAP_REPLACE_ ( + `PORTS_DP([11:0], [11:0]) + ); + 2: RAMB4_S1_S2 #( + `PARAMS_INIT + ) _TECHMAP_REPLACE_ ( + `PORTS_DP([11:0], [11:1]) + ); + 4: RAMB4_S1_S4 #( + `PARAMS_INIT + ) _TECHMAP_REPLACE_ ( + `PORTS_DP([11:0], [11:2]) + ); + 8: RAMB4_S1_S8 #( + `PARAMS_INIT + ) _TECHMAP_REPLACE_ ( + `PORTS_DP([11:0], [11:3]) + ); + 16: RAMB4_S1_S16 #( + `PARAMS_INIT + ) _TECHMAP_REPLACE_ ( + `PORTS_DP([11:0], [11:4]) + ); + endcase + 2: case(PORT_B_WIDTH) + 1: RAMB4_S1_S2 #( + `PARAMS_INIT + ) _TECHMAP_REPLACE_ ( + `PORTS_DP_SWAP([11:1], [11:0]) + ); + 2: RAMB4_S2_S2 #( + `PARAMS_INIT + ) _TECHMAP_REPLACE_ ( + `PORTS_DP([11:1], [11:1]) + ); + 4: RAMB4_S2_S4 #( + `PARAMS_INIT + ) _TECHMAP_REPLACE_ ( + `PORTS_DP([11:1], [11:2]) + ); + 8: RAMB4_S2_S8 #( + `PARAMS_INIT + ) _TECHMAP_REPLACE_ ( + `PORTS_DP([11:1], [11:3]) + ); + 16: RAMB4_S2_S16 #( + `PARAMS_INIT + ) _TECHMAP_REPLACE_ ( + `PORTS_DP([11:1], [11:4]) + ); + endcase + 4: case(PORT_B_WIDTH) + 1: RAMB4_S1_S4 #( + `PARAMS_INIT + ) _TECHMAP_REPLACE_ ( + `PORTS_DP_SWAP([11:2], [11:0]) + ); + 2: RAMB4_S2_S4 #( + `PARAMS_INIT + ) _TECHMAP_REPLACE_ ( + `PORTS_DP_SWAP([11:2], [11:1]) + ); + 4: RAMB4_S4_S4 #( + `PARAMS_INIT + ) _TECHMAP_REPLACE_ ( + `PORTS_DP([11:2], [11:2]) + ); + 8: RAMB4_S4_S8 #( + `PARAMS_INIT + ) _TECHMAP_REPLACE_ ( + `PORTS_DP([11:2], [11:3]) + ); + 16: RAMB4_S4_S16 #( + `PARAMS_INIT + ) _TECHMAP_REPLACE_ ( + `PORTS_DP([11:2], [11:4]) + ); + endcase + 8: case(PORT_B_WIDTH) + 1: RAMB4_S1_S8 #( + `PARAMS_INIT + ) _TECHMAP_REPLACE_ ( + `PORTS_DP_SWAP([11:3], [11:0]) + ); + 2: RAMB4_S2_S8 #( + `PARAMS_INIT + ) _TECHMAP_REPLACE_ ( + `PORTS_DP_SWAP([11:3], [11:1]) + ); + 4: RAMB4_S4_S8 #( + `PARAMS_INIT + ) _TECHMAP_REPLACE_ ( + `PORTS_DP_SWAP([11:3], [11:2]) + ); + 8: RAMB4_S8_S8 #( + `PARAMS_INIT + ) _TECHMAP_REPLACE_ ( + `PORTS_DP([11:3], [11:3]) + ); + 16: RAMB4_S8_S16 #( + `PARAMS_INIT + ) _TECHMAP_REPLACE_ ( + `PORTS_DP([11:3], [11:4]) + ); + endcase + 16: case(PORT_B_WIDTH) + 1: RAMB4_S1_S16 #( + `PARAMS_INIT + ) _TECHMAP_REPLACE_ ( + `PORTS_DP_SWAP([11:4], [11:0]) + ); + 2: RAMB4_S2_S16 #( + `PARAMS_INIT + ) _TECHMAP_REPLACE_ ( + `PORTS_DP_SWAP([11:4], [11:1]) + ); + 4: RAMB4_S4_S16 #( + `PARAMS_INIT + ) _TECHMAP_REPLACE_ ( + `PORTS_DP_SWAP([11:4], [11:2]) + ); + 8: RAMB4_S8_S16 #( + `PARAMS_INIT + ) _TECHMAP_REPLACE_ ( + `PORTS_DP_SWAP([11:4], [11:3]) + ); + 16: RAMB4_S16_S16 #( + `PARAMS_INIT + ) _TECHMAP_REPLACE_ ( + `PORTS_DP([11:4], [11:4]) + ); + endcase + endcase +end + +endgenerate + +endmodule diff --git a/resources/netlist/resources/kernel/share/xilinx/cells_map.v b/resources/netlist/resources/kernel/share/xilinx/cells_map.v new file mode 100644 index 0000000..2b8eade --- /dev/null +++ b/resources/netlist/resources/kernel/share/xilinx/cells_map.v @@ -0,0 +1,361 @@ +/* + * yosys -- Yosys Open SYnthesis Suite + * + * Copyright (C) 2012 Claire Xenia Wolf + * 2019 Eddie Hung + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + */ + +module \$__SHREG_ (input C, input D, input E, output Q); + parameter DEPTH = 0; + parameter [DEPTH-1:0] INIT = 0; + parameter CLKPOL = 1; + parameter ENPOL = 2; + + \$__XILINX_SHREG_ #(.DEPTH(DEPTH), .INIT(INIT), .CLKPOL(CLKPOL), .ENPOL(ENPOL)) _TECHMAP_REPLACE_ (.C(C), .D(D), .L(DEPTH-1), .E(E), .Q(Q)); +endmodule + +module \$__XILINX_SHREG_ (input C, input D, input [31:0] L, input E, output Q, output SO); + parameter DEPTH = 0; + parameter [DEPTH-1:0] INIT = 0; + parameter CLKPOL = 1; + parameter ENPOL = 2; + + // shregmap's INIT parameter shifts out LSB first; + // however Xilinx expects MSB first + function [DEPTH-1:0] brev; + input [DEPTH-1:0] din; + integer i; + begin + for (i = 0; i < DEPTH; i=i+1) + brev[i] = din[DEPTH-1-i]; + end + endfunction + localparam [DEPTH-1:0] INIT_R = brev(INIT); + + parameter _TECHMAP_CONSTMSK_L_ = 0; + + wire CE; + generate + if (ENPOL == 0) + assign CE = ~E; + else if (ENPOL == 1) + assign CE = E; + else + assign CE = 1'b1; + if (DEPTH == 1) begin + if (CLKPOL) + FDRE #(.INIT(INIT_R)) _TECHMAP_REPLACE_ (.D(D), .Q(Q), .C(C), .CE(CE), .R(1'b0)); + else + FDRE_1 #(.INIT(INIT_R)) _TECHMAP_REPLACE_ (.D(D), .Q(Q), .C(C), .CE(CE), .R(1'b0)); + end else + if (DEPTH <= 16) begin + SRL16E #(.INIT(INIT_R), .IS_CLK_INVERTED(~CLKPOL[0])) _TECHMAP_REPLACE_ (.A0(L[0]), .A1(L[1]), .A2(L[2]), .A3(L[3]), .CE(CE), .CLK(C), .D(D), .Q(Q)); + end else + if (DEPTH > 17 && DEPTH <= 32) begin + SRLC32E #(.INIT(INIT_R), .IS_CLK_INVERTED(~CLKPOL[0])) _TECHMAP_REPLACE_ (.A(L[4:0]), .CE(CE), .CLK(C), .D(D), .Q(Q)); + end else + if (DEPTH > 33 && DEPTH <= 64) begin + wire T0, T1, T2; + SRLC32E #(.INIT(INIT_R[32-1:0]), .IS_CLK_INVERTED(~CLKPOL[0])) fpga_srl_0 (.A(L[4:0]), .CE(CE), .CLK(C), .D(D), .Q(T0), .Q31(T1)); + \$__XILINX_SHREG_ #(.DEPTH(DEPTH-32), .INIT(INIT[DEPTH-32-1:0]), .CLKPOL(CLKPOL), .ENPOL(ENPOL)) fpga_srl_1 (.C(C), .D(T1), .L(L), .E(E), .Q(T2)); + if (&_TECHMAP_CONSTMSK_L_) + assign Q = T2; + else + MUXF7 fpga_mux_0 (.O(Q), .I0(T0), .I1(T2), .S(L[5])); + end else + if (DEPTH > 65 && DEPTH <= 96) begin + wire T0, T1, T2, T3, T4, T5, T6; + SRLC32E #(.INIT(INIT_R[32-1: 0]), .IS_CLK_INVERTED(~CLKPOL[0])) fpga_srl_0 (.A(L[4:0]), .CE(CE), .CLK(C), .D( D), .Q(T0), .Q31(T1)); + SRLC32E #(.INIT(INIT_R[64-1:32]), .IS_CLK_INVERTED(~CLKPOL[0])) fpga_srl_1 (.A(L[4:0]), .CE(CE), .CLK(C), .D(T1), .Q(T2), .Q31(T3)); + \$__XILINX_SHREG_ #(.DEPTH(DEPTH-64), .INIT(INIT[DEPTH-64-1:0]), .CLKPOL(CLKPOL), .ENPOL(ENPOL)) fpga_srl_2 (.C(C), .D(T3), .L(L[4:0]), .E(E), .Q(T4)); + if (&_TECHMAP_CONSTMSK_L_) + assign Q = T4; + else + \$__XILINX_MUXF78 fpga_hard_mux (.I0(T0), .I1(T2), .I2(T4), .I3(1'bx), .S0(L[5]), .S1(L[6]), .O(Q)); + end else + if (DEPTH > 97 && DEPTH < 128) begin + wire T0, T1, T2, T3, T4, T5, T6, T7, T8; + SRLC32E #(.INIT(INIT_R[32-1: 0]), .IS_CLK_INVERTED(~CLKPOL[0])) fpga_srl_0 (.A(L[4:0]), .CE(CE), .CLK(C), .D( D), .Q(T0), .Q31(T1)); + SRLC32E #(.INIT(INIT_R[64-1:32]), .IS_CLK_INVERTED(~CLKPOL[0])) fpga_srl_1 (.A(L[4:0]), .CE(CE), .CLK(C), .D(T1), .Q(T2), .Q31(T3)); + SRLC32E #(.INIT(INIT_R[96-1:64]), .IS_CLK_INVERTED(~CLKPOL[0])) fpga_srl_2 (.A(L[4:0]), .CE(CE), .CLK(C), .D(T3), .Q(T4), .Q31(T5)); + \$__XILINX_SHREG_ #(.DEPTH(DEPTH-96), .INIT(INIT[DEPTH-96-1:0]), .CLKPOL(CLKPOL), .ENPOL(ENPOL)) fpga_srl_3 (.C(C), .D(T5), .L(L[4:0]), .E(E), .Q(T6)); + if (&_TECHMAP_CONSTMSK_L_) + assign Q = T6; + else + \$__XILINX_MUXF78 fpga_hard_mux (.I0(T0), .I1(T2), .I2(T4), .I3(T6), .S0(L[5]), .S1(L[6]), .O(Q)); + end + else if (DEPTH == 128) begin + wire T0, T1, T2, T3, T4, T5, T6; + SRLC32E #(.INIT(INIT_R[ 32-1: 0]), .IS_CLK_INVERTED(~CLKPOL[0])) fpga_srl_0 (.A(L[4:0]), .CE(CE), .CLK(C), .D( D), .Q(T0), .Q31(T1)); + SRLC32E #(.INIT(INIT_R[ 64-1:32]), .IS_CLK_INVERTED(~CLKPOL[0])) fpga_srl_1 (.A(L[4:0]), .CE(CE), .CLK(C), .D(T1), .Q(T2), .Q31(T3)); + SRLC32E #(.INIT(INIT_R[ 96-1:64]), .IS_CLK_INVERTED(~CLKPOL[0])) fpga_srl_2 (.A(L[4:0]), .CE(CE), .CLK(C), .D(T3), .Q(T4), .Q31(T5)); + SRLC32E #(.INIT(INIT_R[128-1:96]), .IS_CLK_INVERTED(~CLKPOL[0])) fpga_srl_3 (.A(L[4:0]), .CE(CE), .CLK(C), .D(T5), .Q(T6), .Q31(SO)); + if (&_TECHMAP_CONSTMSK_L_) + assign Q = T6; + else + \$__XILINX_MUXF78 fpga_hard_mux (.I0(T0), .I1(T2), .I2(T4), .I3(T6), .S0(L[5]), .S1(L[6]), .O(Q)); + end + // For fixed length, if just 1 over a convenient value, decompose + else if (DEPTH <= 129 && &_TECHMAP_CONSTMSK_L_) begin + wire T; + \$__XILINX_SHREG_ #(.DEPTH(DEPTH-1), .INIT(INIT[DEPTH-1:1]), .CLKPOL(CLKPOL), .ENPOL(ENPOL)) fpga_srl (.C(C), .D(D), .L({32{1'b1}}), .E(E), .Q(T)); + \$__XILINX_SHREG_ #(.DEPTH(1), .INIT(INIT[0]), .CLKPOL(CLKPOL), .ENPOL(ENPOL)) fpga_srl_last (.C(C), .D(T), .L(L), .E(E), .Q(Q)); + end + // For variable length, if just 1 over a convenient value, then bump up one more + else if (DEPTH < 129 && ~&_TECHMAP_CONSTMSK_L_) + \$__XILINX_SHREG_ #(.DEPTH(DEPTH+1), .INIT({INIT,1'b0}), .CLKPOL(CLKPOL), .ENPOL(ENPOL)) _TECHMAP_REPLACE_ (.C(C), .D(D), .L(L), .E(E), .Q(Q)); + else begin + localparam depth0 = 128; + localparam num_srl128 = DEPTH / depth0; + localparam depthN = DEPTH % depth0; + wire [num_srl128 + (depthN > 0 ? 1 : 0) - 1:0] T; + wire [num_srl128 + (depthN > 0 ? 1 : 0) :0] S; + assign S[0] = D; + genvar i; + for (i = 0; i < num_srl128; i++) + \$__XILINX_SHREG_ #(.DEPTH(depth0), .INIT(INIT[DEPTH-1-i*depth0-:depth0]), .CLKPOL(CLKPOL), .ENPOL(ENPOL)) fpga_srl (.C(C), .D(S[i]), .L(L[$clog2(depth0)-1:0]), .E(E), .Q(T[i]), .SO(S[i+1])); + + if (depthN > 0) + \$__XILINX_SHREG_ #(.DEPTH(depthN), .INIT(INIT[depthN-1:0]), .CLKPOL(CLKPOL), .ENPOL(ENPOL)) fpga_srl_last (.C(C), .D(S[num_srl128]), .L(L[$clog2(depth0)-1:0]), .E(E), .Q(T[num_srl128])); + + if (&_TECHMAP_CONSTMSK_L_) + assign Q = T[num_srl128 + (depthN > 0 ? 1 : 0) - 1]; + else + assign Q = T[L[DEPTH-1:$clog2(depth0)]]; + end + endgenerate +endmodule + +`ifdef MIN_MUX_INPUTS +module \$__XILINX_SHIFTX (A, B, Y); + parameter A_SIGNED = 0; + parameter B_SIGNED = 0; + parameter A_WIDTH = 1; + parameter B_WIDTH = 1; + parameter Y_WIDTH = 1; + + (* force_downto *) + input [A_WIDTH-1:0] A; + (* force_downto *) + input [B_WIDTH-1:0] B; + (* force_downto *) + output [Y_WIDTH-1:0] Y; + + parameter [A_WIDTH-1:0] _TECHMAP_CONSTMSK_A_ = 0; + parameter [A_WIDTH-1:0] _TECHMAP_CONSTVAL_A_ = 0; + parameter [B_WIDTH-1:0] _TECHMAP_CONSTMSK_B_ = 0; + parameter [B_WIDTH-1:0] _TECHMAP_CONSTVAL_B_ = 0; + + function integer A_WIDTH_trimmed; + input integer start; + begin + A_WIDTH_trimmed = start; + while (A_WIDTH_trimmed > 0 && _TECHMAP_CONSTMSK_A_[A_WIDTH_trimmed-1] && _TECHMAP_CONSTVAL_A_[A_WIDTH_trimmed-1] === 1'bx) + A_WIDTH_trimmed = A_WIDTH_trimmed - 1; + end + endfunction + + generate + genvar i, j; + // Bit-blast + if (Y_WIDTH > 1) begin + for (i = 0; i < Y_WIDTH; i++) + \$__XILINX_SHIFTX #(.A_SIGNED(A_SIGNED), .B_SIGNED(B_SIGNED), .A_WIDTH(A_WIDTH-Y_WIDTH+1), .B_WIDTH(B_WIDTH), .Y_WIDTH(1'd1)) bitblast (.A(A[A_WIDTH-Y_WIDTH+i:i]), .B(B), .Y(Y[i])); + end + // If the LSB of B is constant zero (and Y_WIDTH is 1) then + // we can optimise by removing every other entry from A + // and popping the constant zero from B + else if (_TECHMAP_CONSTMSK_B_[0] && !_TECHMAP_CONSTVAL_B_[0]) begin + wire [(A_WIDTH+1)/2-1:0] A_i; + for (i = 0; i < (A_WIDTH+1)/2; i++) + assign A_i[i] = A[i*2]; + \$__XILINX_SHIFTX #(.A_SIGNED(A_SIGNED), .B_SIGNED(B_SIGNED), .A_WIDTH((A_WIDTH+1'd1)/2'd2), .B_WIDTH(B_WIDTH-1'd1), .Y_WIDTH(Y_WIDTH)) _TECHMAP_REPLACE_ (.A(A_i), .B(B[B_WIDTH-1:1]), .Y(Y)); + end + // Trim off any leading 1'bx -es in A + else if (_TECHMAP_CONSTMSK_A_[A_WIDTH-1] && _TECHMAP_CONSTVAL_A_[A_WIDTH-1] === 1'bx) begin + localparam A_WIDTH_new = A_WIDTH_trimmed(A_WIDTH-1); + \$__XILINX_SHIFTX #(.A_SIGNED(A_SIGNED), .B_SIGNED(B_SIGNED), .A_WIDTH(A_WIDTH_new), .B_WIDTH(B_WIDTH), .Y_WIDTH(Y_WIDTH)) _TECHMAP_REPLACE_ (.A(A[A_WIDTH_new-1:0]), .B(B), .Y(Y)); + end + else if (A_WIDTH < `MIN_MUX_INPUTS) begin + wire _TECHMAP_FAIL_ = 1; + end + else if (A_WIDTH == 2) begin + MUXF7 fpga_hard_mux (.I0(A[0]), .I1(A[1]), .S(B[0]), .O(Y)); + end + else if (A_WIDTH <= 4) begin + wire [4-1:0] Ax; + if (A_WIDTH == 4) + assign Ax = A; + else + // Rather than extend with 1'bx which gets flattened to 1'b0 + // causing the "don't care" status to get lost, extend with + // the same driver of F7B.I0 so that we can optimise F7B away + // later + assign Ax = {A[1], A}; + \$__XILINX_MUXF78 fpga_hard_mux (.I0(Ax[0]), .I1(Ax[2]), .I2(Ax[1]), .I3(Ax[3]), .S0(B[1]), .S1(B[0]), .O(Y)); + end + // Note that the following decompositions are 'backwards' in that + // the LSBs are placed on the hard resources, and the soft resources + // are used for MSBs. + // This has the effect of more effectively utilising the hard mux; + // take for example a 5:1 multiplexer, currently this would map as: + // + // A[0] \___ __ A[0] \__ __ + // A[4] / \| \ whereas the more A[1] / \| \ + // A[1] _____| | obvious mapping A[2] \___| | + // A[2] _____| |-- of MSBs to hard A[3] / | |__ + // A[3]______| | resources would A[4] ____| | + // |__/ lead to: 1'bx ____| | + // || |__/ + // || || + // B[1:0] B[1:2] + // + // Expectation would be that the 'forward' mapping (right) is more + // area efficient (consider a 9:1 multiplexer using 2x4:1 multiplexers + // on its I0 and I1 inputs, and A[8] and 1'bx on its I2 and I3 inputs) + // but that the 'backwards' mapping (left) is more delay efficient + // since smaller LUTs are faster than wider ones. + else if (A_WIDTH <= 8) begin + wire [8-1:0] Ax = {{{8-A_WIDTH}{1'bx}}, A}; + wire T0 = B[2] ? Ax[4] : Ax[0]; + wire T1 = B[2] ? Ax[5] : Ax[1]; + wire T2 = B[2] ? Ax[6] : Ax[2]; + wire T3 = B[2] ? Ax[7] : Ax[3]; + \$__XILINX_MUXF78 fpga_hard_mux (.I0(T0), .I1(T2), .I2(T1), .I3(T3), .S0(B[1]), .S1(B[0]), .O(Y)); + end + else if (A_WIDTH <= 16) begin + wire [16-1:0] Ax = {{{16-A_WIDTH}{1'bx}}, A}; + wire T0 = B[2] ? B[3] ? Ax[12] : Ax[4] + : B[3] ? Ax[ 8] : Ax[0]; + wire T1 = B[2] ? B[3] ? Ax[13] : Ax[5] + : B[3] ? Ax[ 9] : Ax[1]; + wire T2 = B[2] ? B[3] ? Ax[14] : Ax[6] + : B[3] ? Ax[10] : Ax[2]; + wire T3 = B[2] ? B[3] ? Ax[15] : Ax[7] + : B[3] ? Ax[11] : Ax[3]; + \$__XILINX_MUXF78 fpga_hard_mux (.I0(T0), .I1(T2), .I2(T1), .I3(T3), .S0(B[1]), .S1(B[0]), .O(Y)); + end + else begin + localparam num_mux16 = (A_WIDTH+15) / 16; + localparam clog2_num_mux16 = $clog2(num_mux16); + wire [num_mux16-1:0] T; + wire [num_mux16*16-1:0] Ax = {{(num_mux16*16-A_WIDTH){1'bx}}, A}; + for (i = 0; i < num_mux16; i++) + \$__XILINX_SHIFTX #( + .A_SIGNED(A_SIGNED), + .B_SIGNED(B_SIGNED), + .A_WIDTH(16), + .B_WIDTH(4), + .Y_WIDTH(Y_WIDTH) + ) fpga_mux ( + .A(Ax[i*16+:16]), + .B(B[3:0]), + .Y(T[i]) + ); + \$__XILINX_SHIFTX #( + .A_SIGNED(A_SIGNED), + .B_SIGNED(B_SIGNED), + .A_WIDTH(num_mux16), + .B_WIDTH(clog2_num_mux16), + .Y_WIDTH(Y_WIDTH) + ) _TECHMAP_REPLACE_ ( + .A(T), + .B(B[B_WIDTH-1-:clog2_num_mux16]), + .Y(Y)); + end + endgenerate +endmodule + +(* techmap_celltype = "$__XILINX_SHIFTX" *) +module _90__XILINX_SHIFTX (A, B, Y); + parameter A_SIGNED = 0; + parameter B_SIGNED = 0; + parameter A_WIDTH = 1; + parameter B_WIDTH = 1; + parameter Y_WIDTH = 1; + + (* force_downto *) + input [A_WIDTH-1:0] A; + (* force_downto *) + input [B_WIDTH-1:0] B; + (* force_downto *) + output [Y_WIDTH-1:0] Y; + + \$shiftx #(.A_SIGNED(A_SIGNED), .B_SIGNED(B_SIGNED), .A_WIDTH(A_WIDTH), .B_WIDTH(B_WIDTH), .Y_WIDTH(Y_WIDTH)) _TECHMAP_REPLACE_ (.A(A), .B(B), .Y(Y)); +endmodule + +module \$_MUX_ (A, B, S, Y); + input A, B, S; + output Y; + generate + if (`MIN_MUX_INPUTS == 2) + \$__XILINX_SHIFTX #(.A_SIGNED(0), .B_SIGNED(0), .A_WIDTH(2), .B_WIDTH(1), .Y_WIDTH(1)) _TECHMAP_REPLACE_ (.A({B,A}), .B(S), .Y(Y)); + else + wire _TECHMAP_FAIL_ = 1; + endgenerate +endmodule + +module \$_MUX4_ (A, B, C, D, S, T, Y); + input A, B, C, D, S, T; + output Y; + \$__XILINX_SHIFTX #(.A_SIGNED(0), .B_SIGNED(0), .A_WIDTH(4), .B_WIDTH(2), .Y_WIDTH(1)) _TECHMAP_REPLACE_ (.A({D,C,B,A}), .B({T,S}), .Y(Y)); +endmodule + +module \$_MUX8_ (A, B, C, D, E, F, G, H, S, T, U, Y); + input A, B, C, D, E, F, G, H, S, T, U; + output Y; + \$__XILINX_SHIFTX #(.A_SIGNED(0), .B_SIGNED(0), .A_WIDTH(8), .B_WIDTH(3), .Y_WIDTH(1)) _TECHMAP_REPLACE_ (.A({H,G,F,E,D,C,B,A}), .B({U,T,S}), .Y(Y)); +endmodule + +module \$_MUX16_ (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, S, T, U, V, Y); + input A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, S, T, U, V; + output Y; + \$__XILINX_SHIFTX #(.A_SIGNED(0), .B_SIGNED(0), .A_WIDTH(16), .B_WIDTH(4), .Y_WIDTH(1)) _TECHMAP_REPLACE_ (.A({P,O,N,M,L,K,J,I,H,G,F,E,D,C,B,A}), .B({V,U,T,S}), .Y(Y)); +endmodule +`endif + +module \$__XILINX_MUXF78 (O, I0, I1, I2, I3, S0, S1); + output O; + input I0, I1, I2, I3, S0, S1; + wire T0, T1; + parameter _TECHMAP_BITS_CONNMAP_ = 0; + parameter [_TECHMAP_BITS_CONNMAP_-1:0] _TECHMAP_CONNMAP_I0_ = 0; + parameter [_TECHMAP_BITS_CONNMAP_-1:0] _TECHMAP_CONNMAP_I1_ = 0; + parameter [_TECHMAP_BITS_CONNMAP_-1:0] _TECHMAP_CONNMAP_I2_ = 0; + parameter [_TECHMAP_BITS_CONNMAP_-1:0] _TECHMAP_CONNMAP_I3_ = 0; + parameter _TECHMAP_CONSTMSK_S0_ = 0; + parameter _TECHMAP_CONSTVAL_S0_ = 0; + parameter _TECHMAP_CONSTMSK_S1_ = 0; + parameter _TECHMAP_CONSTVAL_S1_ = 0; + if (_TECHMAP_CONSTMSK_S0_ && _TECHMAP_CONSTVAL_S0_ === 1'b1) + assign T0 = I1; + else if (_TECHMAP_CONSTMSK_S0_ || _TECHMAP_CONNMAP_I0_ === _TECHMAP_CONNMAP_I1_) + assign T0 = I0; + else + MUXF7 mux7a (.I0(I0), .I1(I1), .S(S0), .O(T0)); + if (_TECHMAP_CONSTMSK_S0_ && _TECHMAP_CONSTVAL_S0_ === 1'b1) + assign T1 = I3; + else if (_TECHMAP_CONSTMSK_S0_ || _TECHMAP_CONNMAP_I2_ === _TECHMAP_CONNMAP_I3_) + assign T1 = I2; + else + MUXF7 mux7b (.I0(I2), .I1(I3), .S(S0), .O(T1)); + if (_TECHMAP_CONSTMSK_S1_ && _TECHMAP_CONSTVAL_S1_ === 1'b1) + assign O = T1; + else if (_TECHMAP_CONSTMSK_S1_ || (_TECHMAP_CONNMAP_I0_ === _TECHMAP_CONNMAP_I1_ && _TECHMAP_CONNMAP_I1_ === _TECHMAP_CONNMAP_I2_ && _TECHMAP_CONNMAP_I2_ === _TECHMAP_CONNMAP_I3_)) + assign O = T0; + else + MUXF8 mux8 (.I0(T0), .I1(T1), .S(S1), .O(O)); +endmodule diff --git a/resources/netlist/resources/kernel/share/xilinx/cells_sim.v b/resources/netlist/resources/kernel/share/xilinx/cells_sim.v new file mode 100644 index 0000000..ee5a89e --- /dev/null +++ b/resources/netlist/resources/kernel/share/xilinx/cells_sim.v @@ -0,0 +1,4392 @@ +/* + * yosys -- Yosys Open SYnthesis Suite + * + * Copyright (C) 2012 Claire Xenia Wolf + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + */ + +// See Xilinx UG953 and UG474 for a description of the cell types below. +// http://www.xilinx.com/support/documentation/user_guides/ug474_7Series_CLB.pdf +// http://www.xilinx.com/support/documentation/sw_manuals/xilinx2014_4/ug953-vivado-7series-libraries.pdf + +module VCC(output P); + assign P = 1; +endmodule + +module GND(output G); + assign G = 0; +endmodule + +module IBUF( + output O, + (* iopad_external_pin *) + input I); + parameter IOSTANDARD = "default"; + parameter IBUF_LOW_PWR = 0; + assign O = I; + specify + (I => O) = 0; + endspecify +endmodule + +module IBUFG( + output O, + (* iopad_external_pin *) + input I); + parameter CAPACITANCE = "DONT_CARE"; + parameter IBUF_DELAY_VALUE = "0"; + parameter IBUF_LOW_PWR = "TRUE"; + parameter IOSTANDARD = "DEFAULT"; + assign O = I; +endmodule + +module OBUF( + (* iopad_external_pin *) + output O, + input I); + parameter IOSTANDARD = "default"; + parameter DRIVE = 12; + parameter SLEW = "SLOW"; + assign O = I; + specify + (I => O) = 0; + endspecify +endmodule + +module IOBUF ( + (* iopad_external_pin *) + inout IO, + output O, + input I, + input T +); + parameter integer DRIVE = 12; + parameter IBUF_LOW_PWR = "TRUE"; + parameter IOSTANDARD = "DEFAULT"; + parameter SLEW = "SLOW"; + assign IO = T ? 1'bz : I; + assign O = IO; + specify + (I => IO) = 0; + (IO => O) = 0; + endspecify +endmodule + +module OBUFT ( + (* iopad_external_pin *) + output O, + input I, + input T +); + parameter CAPACITANCE = "DONT_CARE"; + parameter integer DRIVE = 12; + parameter IOSTANDARD = "DEFAULT"; + parameter SLEW = "SLOW"; + assign O = T ? 1'bz : I; + specify + (I => O) = 0; + endspecify +endmodule + +module BUFG( + (* clkbuf_driver *) + output O, + input I); + assign O = I; + specify + // https://github.com/SymbiFlow/prjxray-db/blob/4bc6385ab300b1819848371f508185f57b649a0e/artix7/timings/CLK_BUFG_TOP_R.sdf#L11 + (I => O) = 96; + endspecify +endmodule + +module BUFGCTRL( + (* clkbuf_driver *) + output O, + input I0, input I1, + (* invertible_pin = "IS_S0_INVERTED" *) + input S0, + (* invertible_pin = "IS_S1_INVERTED" *) + input S1, + (* invertible_pin = "IS_CE0_INVERTED" *) + input CE0, + (* invertible_pin = "IS_CE1_INVERTED" *) + input CE1, + (* invertible_pin = "IS_IGNORE0_INVERTED" *) + input IGNORE0, + (* invertible_pin = "IS_IGNORE1_INVERTED" *) + input IGNORE1); + +parameter [0:0] INIT_OUT = 1'b0; +parameter PRESELECT_I0 = "FALSE"; +parameter PRESELECT_I1 = "FALSE"; +parameter [0:0] IS_CE0_INVERTED = 1'b0; +parameter [0:0] IS_CE1_INVERTED = 1'b0; +parameter [0:0] IS_S0_INVERTED = 1'b0; +parameter [0:0] IS_S1_INVERTED = 1'b0; +parameter [0:0] IS_IGNORE0_INVERTED = 1'b0; +parameter [0:0] IS_IGNORE1_INVERTED = 1'b0; + +wire I0_internal = ((CE0 ^ IS_CE0_INVERTED) ? I0 : INIT_OUT); +wire I1_internal = ((CE1 ^ IS_CE1_INVERTED) ? I1 : INIT_OUT); +wire S0_true = (S0 ^ IS_S0_INVERTED); +wire S1_true = (S1 ^ IS_S1_INVERTED); + +assign O = S0_true ? I0_internal : (S1_true ? I1_internal : INIT_OUT); + +endmodule + +module BUFHCE( + (* clkbuf_driver *) + output O, + input I, + (* invertible_pin = "IS_CE_INVERTED" *) + input CE); + +parameter [0:0] INIT_OUT = 1'b0; +parameter CE_TYPE = "SYNC"; +parameter [0:0] IS_CE_INVERTED = 1'b0; + +assign O = ((CE ^ IS_CE_INVERTED) ? I : INIT_OUT); + +endmodule + +// module OBUFT(output O, input I, T); +// assign O = T ? 1'bz : I; +// endmodule + +// module IOBUF(inout IO, output O, input I, T); +// assign O = IO, IO = T ? 1'bz : I; +// endmodule + +module INV( + (* clkbuf_inv = "I" *) + output O, + input I +); + assign O = !I; + specify + (I => O) = 127; + endspecify +endmodule + +(* abc9_lut=1 *) +module LUT1(output O, input I0); + parameter [1:0] INIT = 0; + assign O = I0 ? INIT[1] : INIT[0]; + specify + (I0 => O) = 127; + endspecify +endmodule + +(* abc9_lut=2 *) +module LUT2(output O, input I0, I1); + parameter [3:0] INIT = 0; + wire [ 1: 0] s1 = I1 ? INIT[ 3: 2] : INIT[ 1: 0]; + assign O = I0 ? s1[1] : s1[0]; + specify + (I0 => O) = 238; + (I1 => O) = 127; + endspecify +endmodule + +(* abc9_lut=3 *) +module LUT3(output O, input I0, I1, I2); + parameter [7:0] INIT = 0; + wire [ 3: 0] s2 = I2 ? INIT[ 7: 4] : INIT[ 3: 0]; + wire [ 1: 0] s1 = I1 ? s2[ 3: 2] : s2[ 1: 0]; + assign O = I0 ? s1[1] : s1[0]; + specify + (I0 => O) = 407; + (I1 => O) = 238; + (I2 => O) = 127; + endspecify +endmodule + +(* abc9_lut=3 *) +module LUT4(output O, input I0, I1, I2, I3); + parameter [15:0] INIT = 0; + wire [ 7: 0] s3 = I3 ? INIT[15: 8] : INIT[ 7: 0]; + wire [ 3: 0] s2 = I2 ? s3[ 7: 4] : s3[ 3: 0]; + wire [ 1: 0] s1 = I1 ? s2[ 3: 2] : s2[ 1: 0]; + assign O = I0 ? s1[1] : s1[0]; + specify + (I0 => O) = 472; + (I1 => O) = 407; + (I2 => O) = 238; + (I3 => O) = 127; + endspecify +endmodule + +(* abc9_lut=3 *) +module LUT5(output O, input I0, I1, I2, I3, I4); + parameter [31:0] INIT = 0; + wire [15: 0] s4 = I4 ? INIT[31:16] : INIT[15: 0]; + wire [ 7: 0] s3 = I3 ? s4[15: 8] : s4[ 7: 0]; + wire [ 3: 0] s2 = I2 ? s3[ 7: 4] : s3[ 3: 0]; + wire [ 1: 0] s1 = I1 ? s2[ 3: 2] : s2[ 1: 0]; + assign O = I0 ? s1[1] : s1[0]; + specify + (I0 => O) = 631; + (I1 => O) = 472; + (I2 => O) = 407; + (I3 => O) = 238; + (I4 => O) = 127; + endspecify +endmodule + +// This is a placeholder for ABC9 to extract the area/delay +// cost of 3-input LUTs and is not intended to be instantiated + +(* abc9_lut=5 *) +module LUT6(output O, input I0, I1, I2, I3, I4, I5); + parameter [63:0] INIT = 0; + wire [31: 0] s5 = I5 ? INIT[63:32] : INIT[31: 0]; + wire [15: 0] s4 = I4 ? s5[31:16] : s5[15: 0]; + wire [ 7: 0] s3 = I3 ? s4[15: 8] : s4[ 7: 0]; + wire [ 3: 0] s2 = I2 ? s3[ 7: 4] : s3[ 3: 0]; + wire [ 1: 0] s1 = I1 ? s2[ 3: 2] : s2[ 1: 0]; + assign O = I0 ? s1[1] : s1[0]; + specify + (I0 => O) = 642; + (I1 => O) = 631; + (I2 => O) = 472; + (I3 => O) = 407; + (I4 => O) = 238; + (I5 => O) = 127; + endspecify +endmodule + +module LUT6_2(output O6, output O5, input I0, I1, I2, I3, I4, I5); + parameter [63:0] INIT = 0; + wire [31: 0] s5 = I5 ? INIT[63:32] : INIT[31: 0]; + wire [15: 0] s4 = I4 ? s5[31:16] : s5[15: 0]; + wire [ 7: 0] s3 = I3 ? s4[15: 8] : s4[ 7: 0]; + wire [ 3: 0] s2 = I2 ? s3[ 7: 4] : s3[ 3: 0]; + wire [ 1: 0] s1 = I1 ? s2[ 3: 2] : s2[ 1: 0]; + assign O6 = I0 ? s1[1] : s1[0]; + + wire [15: 0] s5_4 = I4 ? INIT[31:16] : INIT[15: 0]; + wire [ 7: 0] s5_3 = I3 ? s5_4[15: 8] : s5_4[ 7: 0]; + wire [ 3: 0] s5_2 = I2 ? s5_3[ 7: 4] : s5_3[ 3: 0]; + wire [ 1: 0] s5_1 = I1 ? s5_2[ 3: 2] : s5_2[ 1: 0]; + assign O5 = I0 ? s5_1[1] : s5_1[0]; +endmodule + +// This is a placeholder for ABC9 to extract the area/delay +// cost of 3-input LUTs and is not intended to be instantiated +(* abc9_lut=10 *) +module \$__ABC9_LUT7 (output O, input I0, I1, I2, I3, I4, I5, I6); +`ifndef __ICARUS__ + specify + // https://github.com/SymbiFlow/prjxray-db/blob/1c85daf1b115da4d27ca83c6b89f53a94de39748/artix7/timings/slicel.sdf#L867 + (I0 => O) = 642 + 223 /* to cross F7BMUX */ + 174 /* CMUX */; + (I1 => O) = 631 + 223 /* to cross F7BMUX */ + 174 /* CMUX */; + (I2 => O) = 472 + 223 /* to cross F7BMUX */ + 174 /* CMUX */; + (I3 => O) = 407 + 223 /* to cross F7BMUX */ + 174 /* CMUX */; + (I4 => O) = 238 + 223 /* to cross F7BMUX */ + 174 /* CMUX */; + (I5 => O) = 127 + 223 /* to cross F7BMUX */ + 174 /* CMUX */; + (I6 => O) = 0 + 296 /* to select F7BMUX */ + 174 /* CMUX */; + endspecify +`endif +endmodule + +// This is a placeholder for ABC9 to extract the area/delay +// cost of 3-input LUTs and is not intended to be instantiated +(* abc9_lut=20 *) +module \$__ABC9_LUT8 (output O, input I0, I1, I2, I3, I4, I5, I6, I7); +`ifndef __ICARUS__ + specify + // https://github.com/SymbiFlow/prjxray-db/blob/1c85daf1b115da4d27ca83c6b89f53a94de39748/artix7/timings/slicel.sdf#L716 + (I0 => O) = 642 + 223 /* to cross F7BMUX */ + 104 /* to cross F8MUX */ + 192 /* BMUX */; + (I1 => O) = 631 + 223 /* to cross F7BMUX */ + 104 /* to cross F8MUX */ + 192 /* BMUX */; + (I2 => O) = 472 + 223 /* to cross F7BMUX */ + 104 /* to cross F8MUX */ + 192 /* BMUX */; + (I3 => O) = 407 + 223 /* to cross F7BMUX */ + 104 /* to cross F8MUX */ + 192 /* BMUX */; + (I4 => O) = 238 + 223 /* to cross F7BMUX */ + 104 /* to cross F8MUX */ + 192 /* BMUX */; + (I5 => O) = 127 + 223 /* to cross F7BMUX */ + 104 /* to cross F8MUX */ + 192 /* BMUX */; + (I6 => O) = 0 + 296 /* to select F7BMUX */ + 104 /* to cross F8MUX */ + 192 /* BMUX */; + (I7 => O) = 0 + 0 + 273 /* to select F8MUX */ + 192 /* BMUX */; + endspecify +`endif +endmodule + +module MUXCY(output O, input CI, DI, S); + assign O = S ? CI : DI; +endmodule + +module MUXF5(output O, input I0, I1, S); + assign O = S ? I1 : I0; +endmodule + +module MUXF6(output O, input I0, I1, S); + assign O = S ? I1 : I0; +endmodule + +(* abc9_box, lib_whitebox *) +module MUXF7(output O, input I0, I1, S); + assign O = S ? I1 : I0; + specify + // https://github.com/SymbiFlow/prjxray-db/blob/34ea6eb08a63d21ec16264ad37a0a7b142ff6031/artix7/timings/CLBLL_L.sdf#L451-L453 + (I0 => O) = 217; + (I1 => O) = 223; + (S => O) = 296; + endspecify +endmodule + +(* abc9_box, lib_whitebox *) +module MUXF8(output O, input I0, I1, S); + assign O = S ? I1 : I0; + specify + // Max delays from: https://github.com/SymbiFlow/prjxray-db/blob/34ea6eb08a63d21ec16264ad37a0a7b142ff6031/artix7/timings/CLBLL_L.sdf#L462-L464 + (I0 => O) = 104; + (I1 => O) = 94; + (S => O) = 273; + endspecify +endmodule + +module MUXF9(output O, input I0, I1, S); + assign O = S ? I1 : I0; +endmodule + +module XORCY(output O, input CI, LI); + assign O = CI ^ LI; +endmodule + +(* abc9_box, lib_whitebox *) +module CARRY4( + (* abc9_carry *) + output [3:0] CO, + output [3:0] O, + (* abc9_carry *) + input CI, + input CYINIT, + input [3:0] DI, S +); + assign O = S ^ {CO[2:0], CI | CYINIT}; + assign CO[0] = S[0] ? CI | CYINIT : DI[0]; + assign CO[1] = S[1] ? CO[0] : DI[1]; + assign CO[2] = S[2] ? CO[1] : DI[2]; + assign CO[3] = S[3] ? CO[2] : DI[3]; + specify + // https://github.com/SymbiFlow/prjxray-db/blob/34ea6eb08a63d21ec16264ad37a0a7b142ff6031/artix7/timings/CLBLL_L.sdf#L11-L46 + (CYINIT => O[0]) = 482; + (S[0] => O[0]) = 223; + (CI => O[0]) = 222; + (CYINIT => O[1]) = 598; + (DI[0] => O[1]) = 407; + (S[0] => O[1]) = 400; + (S[1] => O[1]) = 205; + (CI => O[1]) = 334; + (CYINIT => O[2]) = 584; + (DI[0] => O[2]) = 556; + (DI[1] => O[2]) = 537; + (S[0] => O[2]) = 523; + (S[1] => O[2]) = 558; + (S[2] => O[2]) = 226; + (CI => O[2]) = 239; + (CYINIT => O[3]) = 642; + (DI[0] => O[3]) = 615; + (DI[1] => O[3]) = 596; + (DI[2] => O[3]) = 438; + (S[0] => O[3]) = 582; + (S[1] => O[3]) = 618; + (S[2] => O[3]) = 330; + (S[3] => O[3]) = 227; + (CI => O[3]) = 313; + (CYINIT => CO[0]) = 536; + (DI[0] => CO[0]) = 379; + (S[0] => CO[0]) = 340; + (CI => CO[0]) = 271; + (CYINIT => CO[1]) = 494; + (DI[0] => CO[1]) = 465; + (DI[1] => CO[1]) = 445; + (S[0] => CO[1]) = 433; + (S[1] => CO[1]) = 469; + (CI => CO[1]) = 157; + (CYINIT => CO[2]) = 592; + (DI[0] => CO[2]) = 540; + (DI[1] => CO[2]) = 520; + (DI[2] => CO[2]) = 356; + (S[0] => CO[2]) = 512; + (S[1] => CO[2]) = 548; + (S[2] => CO[2]) = 292; + (CI => CO[2]) = 228; + (CYINIT => CO[3]) = 580; + (DI[0] => CO[3]) = 526; + (DI[1] => CO[3]) = 507; + (DI[2] => CO[3]) = 398; + (DI[3] => CO[3]) = 385; + (S[0] => CO[3]) = 508; + (S[1] => CO[3]) = 528; + (S[2] => CO[3]) = 378; + (S[3] => CO[3]) = 380; + (CI => CO[3]) = 114; + endspecify +endmodule + +module CARRY8( + output [7:0] CO, + output [7:0] O, + input CI, + input CI_TOP, + input [7:0] DI, S +); + parameter CARRY_TYPE = "SINGLE_CY8"; + wire CI4 = (CARRY_TYPE == "DUAL_CY4" ? CI_TOP : CO[3]); + assign O = S ^ {CO[6:4], CI4, CO[2:0], CI}; + assign CO[0] = S[0] ? CI : DI[0]; + assign CO[1] = S[1] ? CO[0] : DI[1]; + assign CO[2] = S[2] ? CO[1] : DI[2]; + assign CO[3] = S[3] ? CO[2] : DI[3]; + assign CO[4] = S[4] ? CI4 : DI[4]; + assign CO[5] = S[5] ? CO[4] : DI[5]; + assign CO[6] = S[6] ? CO[5] : DI[6]; + assign CO[7] = S[7] ? CO[6] : DI[7]; +endmodule + +module ORCY (output O, input CI, I); + assign O = CI | I; +endmodule + +module MULT_AND (output LO, input I0, I1); + assign LO = I0 & I1; +endmodule + +// Flip-flops and latches. + +// Max delay from: https://github.com/SymbiFlow/prjxray-db/blob/34ea6eb08a63d21ec16264ad37a0a7b142ff6031/artix7/timings/CLBLL_L.sdf#L238-L250 + +(* abc9_flop, lib_whitebox *) +module FDRE ( + output reg Q, + (* clkbuf_sink *) + (* invertible_pin = "IS_C_INVERTED" *) + input C, + input CE, + (* invertible_pin = "IS_D_INVERTED" *) + input D, + (* invertible_pin = "IS_R_INVERTED" *) + input R +); + parameter [0:0] INIT = 1'b0; + parameter [0:0] IS_C_INVERTED = 1'b0; + parameter [0:0] IS_D_INVERTED = 1'b0; + parameter [0:0] IS_R_INVERTED = 1'b0; + initial Q <= INIT; + generate + case (|IS_C_INVERTED) + 1'b0: always @(posedge C) if (R == !IS_R_INVERTED) Q <= 1'b0; else if (CE) Q <= D ^ IS_D_INVERTED; + 1'b1: always @(negedge C) if (R == !IS_R_INVERTED) Q <= 1'b0; else if (CE) Q <= D ^ IS_D_INVERTED; + endcase + endgenerate + specify + // https://github.com/SymbiFlow/prjxray-db/blob/23c8b0851f979f0799318eaca90174413a46b257/artix7/timings/slicel.sdf#L249 + $setup(D , posedge C &&& CE && !IS_C_INVERTED , /*-46*/ 0); // Negative times not currently supported + $setup(D , negedge C &&& CE && IS_C_INVERTED , /*-46*/ 0); // Negative times not currently supported + // https://github.com/SymbiFlow/prjxray-db/blob/23c8b0851f979f0799318eaca90174413a46b257/artix7/timings/slicel.sdf#L248 + $setup(CE, posedge C &&& !IS_C_INVERTED, 109); + $setup(CE, negedge C &&& IS_C_INVERTED, 109); + // https://github.com/SymbiFlow/prjxray-db/blob/23c8b0851f979f0799318eaca90174413a46b257/artix7/timings/slicel.sdf#L274 + $setup(R , posedge C &&& !IS_C_INVERTED, 404); + $setup(R , negedge C &&& IS_C_INVERTED, 404); + // https://github.com/SymbiFlow/prjxray-db/blob/34ea6eb08a63d21ec16264ad37a0a7b142ff6031/artix7/timings/CLBLL_L.sdf#L243 + if (!IS_C_INVERTED && R != IS_R_INVERTED) (posedge C => (Q : 1'b0)) = 303; + if ( IS_C_INVERTED && R != IS_R_INVERTED) (negedge C => (Q : 1'b0)) = 303; + if (!IS_C_INVERTED && R == IS_R_INVERTED && CE) (posedge C => (Q : D ^ IS_D_INVERTED)) = 303; + if ( IS_C_INVERTED && R == IS_R_INVERTED && CE) (negedge C => (Q : D ^ IS_D_INVERTED)) = 303; + endspecify +endmodule + +(* abc9_flop, lib_whitebox *) +module FDRE_1 ( + output reg Q, + (* clkbuf_sink *) + input C, + input CE, + input D, + input R +); + parameter [0:0] INIT = 1'b0; + initial Q <= INIT; + always @(negedge C) if (R) Q <= 1'b0; else if (CE) Q <= D; + specify + // https://github.com/SymbiFlow/prjxray-db/blob/23c8b0851f979f0799318eaca90174413a46b257/artix7/timings/slicel.sdf#L249 + $setup(D , negedge C &&& CE, /*-46*/ 0); // Negative times not currently supported + // https://github.com/SymbiFlow/prjxray-db/blob/23c8b0851f979f0799318eaca90174413a46b257/artix7/timings/slicel.sdf#L248 + $setup(CE, negedge C, 109); + // https://github.com/SymbiFlow/prjxray-db/blob/23c8b0851f979f0799318eaca90174413a46b257/artix7/timings/slicel.sdf#L274 + $setup(R , negedge C, 404); // https://github.com/SymbiFlow/prjxray-db/blob/34ea6eb08a63d21ec16264ad37a0a7b142ff6031/artix7/timings/CLBLL_L.sdf#L243 + if (R) (negedge C => (Q : 1'b0)) = 303; + if (!R && CE) (negedge C => (Q : D)) = 303; + endspecify +endmodule + +(* abc9_flop, lib_whitebox *) +module FDSE ( + output reg Q, + (* clkbuf_sink *) + (* invertible_pin = "IS_C_INVERTED" *) + input C, + input CE, + (* invertible_pin = "IS_D_INVERTED" *) + input D, + (* invertible_pin = "IS_S_INVERTED" *) + input S +); + parameter [0:0] INIT = 1'b1; + parameter [0:0] IS_C_INVERTED = 1'b0; + parameter [0:0] IS_D_INVERTED = 1'b0; + parameter [0:0] IS_S_INVERTED = 1'b0; + initial Q <= INIT; + generate + case (|IS_C_INVERTED) + 1'b0: always @(posedge C) if (S == !IS_S_INVERTED) Q <= 1'b1; else if (CE) Q <= D ^ IS_D_INVERTED; + 1'b1: always @(negedge C) if (S == !IS_S_INVERTED) Q <= 1'b1; else if (CE) Q <= D ^ IS_D_INVERTED; + endcase + endgenerate + specify + // https://github.com/SymbiFlow/prjxray-db/blob/23c8b0851f979f0799318eaca90174413a46b257/artix7/timings/slicel.sdf#L249 + $setup(D , posedge C &&& !IS_C_INVERTED && CE, /*-46*/ 0); // Negative times not currently supported + $setup(D , negedge C &&& IS_C_INVERTED && CE, /*-46*/ 0); // Negative times not currently supported + // https://github.com/SymbiFlow/prjxray-db/blob/23c8b0851f979f0799318eaca90174413a46b257/artix7/timings/slicel.sdf#L248 + $setup(CE, posedge C &&& !IS_C_INVERTED, 109); + $setup(CE, negedge C &&& IS_C_INVERTED, 109); + // https://github.com/SymbiFlow/prjxray-db/blob/23c8b0851f979f0799318eaca90174413a46b257/artix7/timings/slicel.sdf#L274 + $setup(S , posedge C &&& !IS_C_INVERTED, 404); + $setup(S , negedge C &&& IS_C_INVERTED, 404); + // https://github.com/SymbiFlow/prjxray-db/blob/34ea6eb08a63d21ec16264ad37a0a7b142ff6031/artix7/timings/CLBLL_L.sdf#L243 + if (!IS_C_INVERTED && S != IS_S_INVERTED) (posedge C => (Q : 1'b1)) = 303; + if ( IS_C_INVERTED && S != IS_S_INVERTED) (negedge C => (Q : 1'b1)) = 303; + if (!IS_C_INVERTED && S == IS_S_INVERTED && CE) (posedge C => (Q : D ^ IS_D_INVERTED)) = 303; + if ( IS_C_INVERTED && S == IS_S_INVERTED && CE) (negedge C => (Q : D ^ IS_D_INVERTED)) = 303; + endspecify +endmodule + +(* abc9_flop, lib_whitebox *) +module FDSE_1 ( + output reg Q, + (* clkbuf_sink *) + input C, + input CE, + input D, + input S +); + parameter [0:0] INIT = 1'b1; + initial Q <= INIT; + always @(negedge C) if (S) Q <= 1'b1; else if (CE) Q <= D; + specify + // https://github.com/SymbiFlow/prjxray-db/blob/23c8b0851f979f0799318eaca90174413a46b257/artix7/timings/slicel.sdf#L249 + $setup(D , negedge C &&& CE, /*-46*/ 0); // Negative times not currently supported + // https://github.com/SymbiFlow/prjxray-db/blob/23c8b0851f979f0799318eaca90174413a46b257/artix7/timings/slicel.sdf#L248 + $setup(CE, negedge C, 109); + // https://github.com/SymbiFlow/prjxray-db/blob/23c8b0851f979f0799318eaca90174413a46b257/artix7/timings/slicel.sdf#L274 + $setup(S , negedge C, 404); + // https://github.com/SymbiFlow/prjxray-db/blob/34ea6eb08a63d21ec16264ad37a0a7b142ff6031/artix7/timings/CLBLL_L.sdf#L243 + if (S) (negedge C => (Q : 1'b1)) = 303; + if (!S && CE) (negedge C => (Q : D)) = 303; + endspecify +endmodule + +module FDRSE ( + output reg Q, + (* clkbuf_sink *) + (* invertible_pin = "IS_C_INVERTED" *) + input C, + (* invertible_pin = "IS_CE_INVERTED" *) + input CE, + (* invertible_pin = "IS_D_INVERTED" *) + input D, + (* invertible_pin = "IS_R_INVERTED" *) + input R, + (* invertible_pin = "IS_S_INVERTED" *) + input S +); + parameter [0:0] INIT = 1'b0; + parameter [0:0] IS_C_INVERTED = 1'b0; + parameter [0:0] IS_CE_INVERTED = 1'b0; + parameter [0:0] IS_D_INVERTED = 1'b0; + parameter [0:0] IS_R_INVERTED = 1'b0; + parameter [0:0] IS_S_INVERTED = 1'b0; + initial Q <= INIT; + wire c = C ^ IS_C_INVERTED; + wire ce = CE ^ IS_CE_INVERTED; + wire d = D ^ IS_D_INVERTED; + wire r = R ^ IS_R_INVERTED; + wire s = S ^ IS_S_INVERTED; + always @(posedge c) + if (r) + Q <= 0; + else if (s) + Q <= 1; + else if (ce) + Q <= d; +endmodule + +module FDRSE_1 ( + output reg Q, + (* clkbuf_sink *) + (* invertible_pin = "IS_C_INVERTED" *) + input C, + (* invertible_pin = "IS_CE_INVERTED" *) + input CE, + (* invertible_pin = "IS_D_INVERTED" *) + input D, + (* invertible_pin = "IS_R_INVERTED" *) + input R, + (* invertible_pin = "IS_S_INVERTED" *) + input S +); + parameter [0:0] INIT = 1'b0; + parameter [0:0] IS_C_INVERTED = 1'b0; + parameter [0:0] IS_CE_INVERTED = 1'b0; + parameter [0:0] IS_D_INVERTED = 1'b0; + parameter [0:0] IS_R_INVERTED = 1'b0; + parameter [0:0] IS_S_INVERTED = 1'b0; + initial Q <= INIT; + wire c = C ^ IS_C_INVERTED; + wire ce = CE ^ IS_CE_INVERTED; + wire d = D ^ IS_D_INVERTED; + wire r = R ^ IS_R_INVERTED; + wire s = S ^ IS_S_INVERTED; + always @(negedge c) + if (r) + Q <= 0; + else if (s) + Q <= 1; + else if (ce) + Q <= d; +endmodule + +(* abc9_box, lib_whitebox *) +module FDCE ( + output reg Q, + (* clkbuf_sink *) + (* invertible_pin = "IS_C_INVERTED" *) + input C, + input CE, + (* invertible_pin = "IS_CLR_INVERTED" *) + input CLR, + (* invertible_pin = "IS_D_INVERTED" *) + input D +); + parameter [0:0] INIT = 1'b0; + parameter [0:0] IS_C_INVERTED = 1'b0; + parameter [0:0] IS_D_INVERTED = 1'b0; + parameter [0:0] IS_CLR_INVERTED = 1'b0; + initial Q <= INIT; + generate + case ({|IS_C_INVERTED, |IS_CLR_INVERTED}) + 2'b00: always @(posedge C, posedge CLR) if ( CLR) Q <= 1'b0; else if (CE) Q <= D ^ IS_D_INVERTED; + 2'b01: always @(posedge C, negedge CLR) if (!CLR) Q <= 1'b0; else if (CE) Q <= D ^ IS_D_INVERTED; + 2'b10: always @(negedge C, posedge CLR) if ( CLR) Q <= 1'b0; else if (CE) Q <= D ^ IS_D_INVERTED; + 2'b11: always @(negedge C, negedge CLR) if (!CLR) Q <= 1'b0; else if (CE) Q <= D ^ IS_D_INVERTED; + endcase + endgenerate + specify + // https://github.com/SymbiFlow/prjxray-db/blob/23c8b0851f979f0799318eaca90174413a46b257/artix7/timings/slicel.sdf#L249 + $setup(D , posedge C &&& !IS_C_INVERTED && CE, /*-46*/ 0); // Negative times not currently supported + $setup(D , negedge C &&& IS_C_INVERTED && CE, /*-46*/ 0); // Negative times not currently supported + // https://github.com/SymbiFlow/prjxray-db/blob/23c8b0851f979f0799318eaca90174413a46b257/artix7/timings/slicel.sdf#L248 + $setup(CE , posedge C &&& !IS_C_INVERTED, 109); + $setup(CE , negedge C &&& IS_C_INVERTED, 109); + // https://github.com/SymbiFlow/prjxray-db/blob/23c8b0851f979f0799318eaca90174413a46b257/artix7/timings/slicel.sdf#L274 + $setup(CLR, posedge C &&& !IS_C_INVERTED, 404); + $setup(CLR, negedge C &&& IS_C_INVERTED, 404); + // https://github.com/SymbiFlow/prjxray-db/blob/23c8b0851f979f0799318eaca90174413a46b257/artix7/timings/slicel.sdf#L270 +`ifndef YOSYS + if (!IS_CLR_INVERTED) (posedge CLR => (Q : 1'b0)) = 764; + if ( IS_CLR_INVERTED) (negedge CLR => (Q : 1'b0)) = 764; +`else + if (IS_CLR_INVERTED != CLR) (CLR => Q) = 764; // Technically, this should be an edge sensitive path + // but for facilitating a bypass box, let's pretend it's + // a simple path +`endif + if (!IS_C_INVERTED && CLR == IS_CLR_INVERTED && CE) (posedge C => (Q : D ^ IS_D_INVERTED)) = 303; + if ( IS_C_INVERTED && CLR == IS_CLR_INVERTED && CE) (negedge C => (Q : D ^ IS_D_INVERTED)) = 303; + endspecify +endmodule + +(* abc9_box, lib_whitebox *) +module FDCE_1 ( + output reg Q, + (* clkbuf_sink *) + input C, + input CE, + input CLR, + input D +); + parameter [0:0] INIT = 1'b0; + initial Q <= INIT; + always @(negedge C, posedge CLR) if (CLR) Q <= 1'b0; else if (CE) Q <= D; + specify + // https://github.com/SymbiFlow/prjxray-db/blob/23c8b0851f979f0799318eaca90174413a46b257/artix7/timings/slicel.sdf#L249 + $setup(D , negedge C &&& CE, /*-46*/ 0); // Negative times not currently supported + // https://github.com/SymbiFlow/prjxray-db/blob/23c8b0851f979f0799318eaca90174413a46b257/artix7/timings/slicel.sdf#L248 + $setup(CE , negedge C, 109); + // https://github.com/SymbiFlow/prjxray-db/blob/23c8b0851f979f0799318eaca90174413a46b257/artix7/timings/slicel.sdf#L274 + $setup(CLR, negedge C, 404); + // https://github.com/SymbiFlow/prjxray-db/blob/23c8b0851f979f0799318eaca90174413a46b257/artix7/timings/slicel.sdf#L270 +`ifndef YOSYS + (posedge CLR => (Q : 1'b0)) = 764; +`else + if (CLR) (CLR => Q) = 764; // Technically, this should be an edge sensitive path + // but for facilitating a bypass box, let's pretend it's + // a simple path +`endif + if (!CLR && CE) (negedge C => (Q : D)) = 303; + endspecify +endmodule + +(* abc9_box, lib_whitebox *) +module FDPE ( + output reg Q, + (* clkbuf_sink *) + (* invertible_pin = "IS_C_INVERTED" *) + input C, + input CE, + (* invertible_pin = "IS_D_INVERTED" *) + input D, + (* invertible_pin = "IS_PRE_INVERTED" *) + input PRE +); + parameter [0:0] INIT = 1'b1; + parameter [0:0] IS_C_INVERTED = 1'b0; + parameter [0:0] IS_D_INVERTED = 1'b0; + parameter [0:0] IS_PRE_INVERTED = 1'b0; + initial Q <= INIT; + generate case ({|IS_C_INVERTED, |IS_PRE_INVERTED}) + 2'b00: always @(posedge C, posedge PRE) if ( PRE) Q <= 1'b1; else if (CE) Q <= D ^ IS_D_INVERTED; + 2'b01: always @(posedge C, negedge PRE) if (!PRE) Q <= 1'b1; else if (CE) Q <= D ^ IS_D_INVERTED; + 2'b10: always @(negedge C, posedge PRE) if ( PRE) Q <= 1'b1; else if (CE) Q <= D ^ IS_D_INVERTED; + 2'b11: always @(negedge C, negedge PRE) if (!PRE) Q <= 1'b1; else if (CE) Q <= D ^ IS_D_INVERTED; + endcase + endgenerate + specify + // https://github.com/SymbiFlow/prjxray-db/blob/23c8b0851f979f0799318eaca90174413a46b257/artix7/timings/slicel.sdf#L249 + $setup(D , posedge C &&& !IS_C_INVERTED && CE, /*-46*/ 0); // Negative times not currently supported + $setup(D , negedge C &&& IS_C_INVERTED && CE, /*-46*/ 0); // Negative times not currently supported + // https://github.com/SymbiFlow/prjxray-db/blob/23c8b0851f979f0799318eaca90174413a46b257/artix7/timings/slicel.sdf#L248 + $setup(CE , posedge C &&& !IS_C_INVERTED, 109); + $setup(CE , negedge C &&& IS_C_INVERTED, 109); + // https://github.com/SymbiFlow/prjxray-db/blob/23c8b0851f979f0799318eaca90174413a46b257/artix7/timings/slicel.sdf#L274 + $setup(PRE, posedge C &&& !IS_C_INVERTED, 404); + $setup(PRE, negedge C &&& IS_C_INVERTED, 404); + // https://github.com/SymbiFlow/prjxray-db/blob/23c8b0851f979f0799318eaca90174413a46b257/artix7/timings/slicel.sdf#L270 +`ifndef YOSYS + if (!IS_PRE_INVERTED) (posedge PRE => (Q : 1'b1)) = 764; + if ( IS_PRE_INVERTED) (negedge PRE => (Q : 1'b1)) = 764; +`else + if (IS_PRE_INVERTED != PRE) (PRE => Q) = 764; // Technically, this should be an edge sensitive path + // but for facilitating a bypass box, let's pretend it's + // a simple path +`endif + if (!IS_C_INVERTED && PRE == IS_PRE_INVERTED && CE) (posedge C => (Q : D ^ IS_D_INVERTED)) = 303; + if ( IS_C_INVERTED && PRE == IS_PRE_INVERTED && CE) (negedge C => (Q : D ^ IS_D_INVERTED)) = 303; + endspecify +endmodule + +(* abc9_box, lib_whitebox *) +module FDPE_1 ( + output reg Q, + (* clkbuf_sink *) + input C, + input CE, + input D, + input PRE +); + parameter [0:0] INIT = 1'b1; + initial Q <= INIT; + always @(negedge C, posedge PRE) if (PRE) Q <= 1'b1; else if (CE) Q <= D; + specify + // https://github.com/SymbiFlow/prjxray-db/blob/23c8b0851f979f0799318eaca90174413a46b257/artix7/timings/slicel.sdf#L249 + $setup(D , negedge C &&& CE, /*-46*/ 0); // Negative times not currently supported + // https://github.com/SymbiFlow/prjxray-db/blob/23c8b0851f979f0799318eaca90174413a46b257/artix7/timings/slicel.sdf#L248 + $setup(CE , negedge C, 109); + // https://github.com/SymbiFlow/prjxray-db/blob/23c8b0851f979f0799318eaca90174413a46b257/artix7/timings/slicel.sdf#L274 + $setup(PRE, negedge C, 404); + // https://github.com/SymbiFlow/prjxray-db/blob/23c8b0851f979f0799318eaca90174413a46b257/artix7/timings/slicel.sdf#L270 +`ifndef YOSYS + (posedge PRE => (Q : 1'b1)) = 764; +`else + if (PRE) (PRE => Q) = 764; // Technically, this should be an edge sensitive path + // but for facilitating a bypass box, let's pretend it's + // a simple path +`endif + if (!PRE && CE) (negedge C => (Q : D)) = 303; + endspecify +endmodule + +module FDCPE ( + output wire Q, + (* clkbuf_sink *) + (* invertible_pin = "IS_C_INVERTED" *) + input C, + input CE, + (* invertible_pin = "IS_CLR_INVERTED" *) + input CLR, + input D, + (* invertible_pin = "IS_PRE_INVERTED" *) + input PRE +); + parameter [0:0] INIT = 1'b0; + parameter [0:0] IS_C_INVERTED = 1'b0; + parameter [0:0] IS_CLR_INVERTED = 1'b0; + parameter [0:0] IS_PRE_INVERTED = 1'b0; + wire c = C ^ IS_C_INVERTED; + wire clr = CLR ^ IS_CLR_INVERTED; + wire pre = PRE ^ IS_PRE_INVERTED; + // Hacky model to avoid simulation-synthesis mismatches. + reg qc, qp, qs; + initial qc = INIT; + initial qp = INIT; + initial qs = 0; + always @(posedge c, posedge clr) begin + if (clr) + qc <= 0; + else if (CE) + qc <= D; + end + always @(posedge c, posedge pre) begin + if (pre) + qp <= 1; + else if (CE) + qp <= D; + end + always @* begin + if (clr) + qs <= 0; + else if (pre) + qs <= 1; + end + assign Q = qs ? qp : qc; +endmodule + +module FDCPE_1 ( + output wire Q, + (* clkbuf_sink *) + (* invertible_pin = "IS_C_INVERTED" *) + input C, + input CE, + (* invertible_pin = "IS_CLR_INVERTED" *) + input CLR, + input D, + (* invertible_pin = "IS_PRE_INVERTED" *) + input PRE +); + parameter [0:0] INIT = 1'b0; + parameter [0:0] IS_C_INVERTED = 1'b0; + parameter [0:0] IS_CLR_INVERTED = 1'b0; + parameter [0:0] IS_PRE_INVERTED = 1'b0; + wire c = C ^ IS_C_INVERTED; + wire clr = CLR ^ IS_CLR_INVERTED; + wire pre = PRE ^ IS_PRE_INVERTED; + // Hacky model to avoid simulation-synthesis mismatches. + reg qc, qp, qs; + initial qc = INIT; + initial qp = INIT; + initial qs = 0; + always @(negedge c, posedge clr) begin + if (clr) + qc <= 0; + else if (CE) + qc <= D; + end + always @(negedge c, posedge pre) begin + if (pre) + qp <= 1; + else if (CE) + qp <= D; + end + always @* begin + if (clr) + qs <= 0; + else if (pre) + qs <= 1; + end + assign Q = qs ? qp : qc; +endmodule + +module LDCE ( + output reg Q, + (* invertible_pin = "IS_CLR_INVERTED" *) + input CLR, + input D, + (* invertible_pin = "IS_G_INVERTED" *) + input G, + input GE +); + parameter [0:0] INIT = 1'b0; + parameter [0:0] IS_CLR_INVERTED = 1'b0; + parameter [0:0] IS_G_INVERTED = 1'b0; + parameter MSGON = "TRUE"; + parameter XON = "TRUE"; + initial Q = INIT; + wire clr = CLR ^ IS_CLR_INVERTED; + wire g = G ^ IS_G_INVERTED; + always @* + if (clr) Q <= 1'b0; + else if (GE && g) Q <= D; +endmodule + +module LDPE ( + output reg Q, + input D, + (* invertible_pin = "IS_G_INVERTED" *) + input G, + input GE, + (* invertible_pin = "IS_PRE_INVERTED" *) + input PRE +); + parameter [0:0] INIT = 1'b1; + parameter [0:0] IS_G_INVERTED = 1'b0; + parameter [0:0] IS_PRE_INVERTED = 1'b0; + parameter MSGON = "TRUE"; + parameter XON = "TRUE"; + initial Q = INIT; + wire g = G ^ IS_G_INVERTED; + wire pre = PRE ^ IS_PRE_INVERTED; + always @* + if (pre) Q <= 1'b1; + else if (GE && g) Q <= D; +endmodule + +module LDCPE ( + output reg Q, + (* invertible_pin = "IS_CLR_INVERTED" *) + input CLR, + (* invertible_pin = "IS_D_INVERTED" *) + input D, + (* invertible_pin = "IS_G_INVERTED" *) + input G, + (* invertible_pin = "IS_GE_INVERTED" *) + input GE, + (* invertible_pin = "IS_PRE_INVERTED" *) + input PRE +); + parameter [0:0] INIT = 1'b1; + parameter [0:0] IS_CLR_INVERTED = 1'b0; + parameter [0:0] IS_D_INVERTED = 1'b0; + parameter [0:0] IS_G_INVERTED = 1'b0; + parameter [0:0] IS_GE_INVERTED = 1'b0; + parameter [0:0] IS_PRE_INVERTED = 1'b0; + initial Q = INIT; + wire d = D ^ IS_D_INVERTED; + wire g = G ^ IS_G_INVERTED; + wire ge = GE ^ IS_GE_INVERTED; + wire clr = CLR ^ IS_CLR_INVERTED; + wire pre = PRE ^ IS_PRE_INVERTED; + always @* + if (clr) Q <= 1'b0; + else if (pre) Q <= 1'b1; + else if (ge && g) Q <= d; +endmodule + +module AND2B1L ( + output O, + input DI, + (* invertible_pin = "IS_SRI_INVERTED" *) + input SRI +); + parameter [0:0] IS_SRI_INVERTED = 1'b0; + assign O = DI & ~(SRI ^ IS_SRI_INVERTED); +endmodule + +module OR2L ( + output O, + input DI, + (* invertible_pin = "IS_SRI_INVERTED" *) + input SRI +); + parameter [0:0] IS_SRI_INVERTED = 1'b0; + assign O = DI | (SRI ^ IS_SRI_INVERTED); +endmodule + +// LUTRAM. + +// Single port. + +module RAM16X1S ( + output O, + input A0, A1, A2, A3, + input D, + (* clkbuf_sink *) + (* invertible_pin = "IS_WCLK_INVERTED" *) + input WCLK, + input WE +); + parameter [15:0] INIT = 16'h0000; + parameter [0:0] IS_WCLK_INVERTED = 1'b0; + wire [3:0] a = {A3, A2, A1, A0}; + reg [15:0] mem = INIT; + assign O = mem[a]; + wire clk = WCLK ^ IS_WCLK_INVERTED; + always @(posedge clk) if (WE) mem[a] <= D; +endmodule + +module RAM16X1S_1 ( + output O, + input A0, A1, A2, A3, + input D, + (* clkbuf_sink *) + (* invertible_pin = "IS_WCLK_INVERTED" *) + input WCLK, + input WE +); + parameter [15:0] INIT = 16'h0000; + parameter [0:0] IS_WCLK_INVERTED = 1'b0; + wire [3:0] a = {A3, A2, A1, A0}; + reg [15:0] mem = INIT; + assign O = mem[a]; + wire clk = WCLK ^ IS_WCLK_INVERTED; + always @(negedge clk) if (WE) mem[a] <= D; +endmodule + +module RAM32X1S ( + output O, + input A0, A1, A2, A3, A4, + input D, + (* clkbuf_sink *) + (* invertible_pin = "IS_WCLK_INVERTED" *) + input WCLK, + input WE +); + parameter [31:0] INIT = 32'h00000000; + parameter [0:0] IS_WCLK_INVERTED = 1'b0; + wire [4:0] a = {A4, A3, A2, A1, A0}; + reg [31:0] mem = INIT; + assign O = mem[a]; + wire clk = WCLK ^ IS_WCLK_INVERTED; + always @(posedge clk) if (WE) mem[a] <= D; +endmodule + +module RAM32X1S_1 ( + output O, + input A0, A1, A2, A3, A4, + input D, + (* clkbuf_sink *) + (* invertible_pin = "IS_WCLK_INVERTED" *) + input WCLK, + input WE +); + parameter [31:0] INIT = 32'h00000000; + parameter [0:0] IS_WCLK_INVERTED = 1'b0; + wire [4:0] a = {A4, A3, A2, A1, A0}; + reg [31:0] mem = INIT; + assign O = mem[a]; + wire clk = WCLK ^ IS_WCLK_INVERTED; + always @(negedge clk) if (WE) mem[a] <= D; +endmodule + +module RAM64X1S ( + output O, + input A0, A1, A2, A3, A4, A5, + input D, + (* clkbuf_sink *) + (* invertible_pin = "IS_WCLK_INVERTED" *) + input WCLK, + input WE +); + parameter [63:0] INIT = 64'h0000000000000000; + parameter [0:0] IS_WCLK_INVERTED = 1'b0; + wire [5:0] a = {A5, A4, A3, A2, A1, A0}; + reg [63:0] mem = INIT; + assign O = mem[a]; + wire clk = WCLK ^ IS_WCLK_INVERTED; + always @(posedge clk) if (WE) mem[a] <= D; +endmodule + +module RAM64X1S_1 ( + output O, + input A0, A1, A2, A3, A4, A5, + input D, + (* clkbuf_sink *) + (* invertible_pin = "IS_WCLK_INVERTED" *) + input WCLK, + input WE +); + parameter [63:0] INIT = 64'h0000000000000000; + parameter [0:0] IS_WCLK_INVERTED = 1'b0; + wire [5:0] a = {A5, A4, A3, A2, A1, A0}; + reg [63:0] mem = INIT; + assign O = mem[a]; + wire clk = WCLK ^ IS_WCLK_INVERTED; + always @(negedge clk) if (WE) mem[a] <= D; +endmodule + +module RAM128X1S ( + output O, + input A0, A1, A2, A3, A4, A5, A6, + input D, + (* clkbuf_sink *) + (* invertible_pin = "IS_WCLK_INVERTED" *) + input WCLK, + input WE +); + parameter [127:0] INIT = 128'h00000000000000000000000000000000; + parameter [0:0] IS_WCLK_INVERTED = 1'b0; + wire [6:0] a = {A6, A5, A4, A3, A2, A1, A0}; + reg [127:0] mem = INIT; + assign O = mem[a]; + wire clk = WCLK ^ IS_WCLK_INVERTED; + always @(posedge clk) if (WE) mem[a] <= D; +endmodule + +module RAM128X1S_1 ( + output O, + input A0, A1, A2, A3, A4, A5, A6, + input D, + (* clkbuf_sink *) + (* invertible_pin = "IS_WCLK_INVERTED" *) + input WCLK, + input WE +); + parameter [127:0] INIT = 128'h00000000000000000000000000000000; + parameter [0:0] IS_WCLK_INVERTED = 1'b0; + wire [6:0] a = {A6, A5, A4, A3, A2, A1, A0}; + reg [127:0] mem = INIT; + assign O = mem[a]; + wire clk = WCLK ^ IS_WCLK_INVERTED; + always @(negedge clk) if (WE) mem[a] <= D; +endmodule + +module RAM256X1S ( + output O, + input [7:0] A, + input D, + (* clkbuf_sink *) + (* invertible_pin = "IS_WCLK_INVERTED" *) + input WCLK, + input WE +); + parameter [255:0] INIT = 256'h0; + parameter [0:0] IS_WCLK_INVERTED = 1'b0; + reg [255:0] mem = INIT; + assign O = mem[A]; + wire clk = WCLK ^ IS_WCLK_INVERTED; + always @(posedge clk) if (WE) mem[A] <= D; +endmodule + +module RAM512X1S ( + output O, + input [8:0] A, + input D, + (* clkbuf_sink *) + (* invertible_pin = "IS_WCLK_INVERTED" *) + input WCLK, + input WE +); + parameter [511:0] INIT = 512'h0; + parameter [0:0] IS_WCLK_INVERTED = 1'b0; + reg [511:0] mem = INIT; + assign O = mem[A]; + wire clk = WCLK ^ IS_WCLK_INVERTED; + always @(posedge clk) if (WE) mem[A] <= D; +endmodule + +// Single port, wide. + +module RAM16X2S ( + output O0, O1, + input A0, A1, A2, A3, + input D0, D1, + (* clkbuf_sink *) + (* invertible_pin = "IS_WCLK_INVERTED" *) + input WCLK, + input WE +); + parameter [15:0] INIT_00 = 16'h0000; + parameter [15:0] INIT_01 = 16'h0000; + parameter [0:0] IS_WCLK_INVERTED = 1'b0; + wire [3:0] a = {A3, A2, A1, A0}; + wire clk = WCLK ^ IS_WCLK_INVERTED; + reg [15:0] mem0 = INIT_00; + reg [15:0] mem1 = INIT_01; + assign O0 = mem0[a]; + assign O1 = mem1[a]; + always @(posedge clk) + if (WE) begin + mem0[a] <= D0; + mem1[a] <= D1; + end +endmodule + +module RAM32X2S ( + output O0, O1, + input A0, A1, A2, A3, A4, + input D0, D1, + (* clkbuf_sink *) + (* invertible_pin = "IS_WCLK_INVERTED" *) + input WCLK, + input WE +); + parameter [31:0] INIT_00 = 32'h00000000; + parameter [31:0] INIT_01 = 32'h00000000; + parameter [0:0] IS_WCLK_INVERTED = 1'b0; + wire [4:0] a = {A4, A3, A2, A1, A0}; + wire clk = WCLK ^ IS_WCLK_INVERTED; + reg [31:0] mem0 = INIT_00; + reg [31:0] mem1 = INIT_01; + assign O0 = mem0[a]; + assign O1 = mem1[a]; + always @(posedge clk) + if (WE) begin + mem0[a] <= D0; + mem1[a] <= D1; + end +endmodule + +module RAM64X2S ( + output O0, O1, + input A0, A1, A2, A3, A4, A5, + input D0, D1, + (* clkbuf_sink *) + (* invertible_pin = "IS_WCLK_INVERTED" *) + input WCLK, + input WE +); + parameter [63:0] INIT_00 = 64'h0000000000000000; + parameter [63:0] INIT_01 = 64'h0000000000000000; + parameter [0:0] IS_WCLK_INVERTED = 1'b0; + wire [5:0] a = {A5, A3, A2, A1, A0}; + wire clk = WCLK ^ IS_WCLK_INVERTED; + reg [63:0] mem0 = INIT_00; + reg [63:0] mem1 = INIT_01; + assign O0 = mem0[a]; + assign O1 = mem1[a]; + always @(posedge clk) + if (WE) begin + mem0[a] <= D0; + mem1[a] <= D1; + end +endmodule + +module RAM16X4S ( + output O0, O1, O2, O3, + input A0, A1, A2, A3, + input D0, D1, D2, D3, + (* clkbuf_sink *) + (* invertible_pin = "IS_WCLK_INVERTED" *) + input WCLK, + input WE +); + parameter [15:0] INIT_00 = 16'h0000; + parameter [15:0] INIT_01 = 16'h0000; + parameter [15:0] INIT_02 = 16'h0000; + parameter [15:0] INIT_03 = 16'h0000; + parameter [0:0] IS_WCLK_INVERTED = 1'b0; + wire [3:0] a = {A3, A2, A1, A0}; + wire clk = WCLK ^ IS_WCLK_INVERTED; + reg [15:0] mem0 = INIT_00; + reg [15:0] mem1 = INIT_01; + reg [15:0] mem2 = INIT_02; + reg [15:0] mem3 = INIT_03; + assign O0 = mem0[a]; + assign O1 = mem1[a]; + assign O2 = mem2[a]; + assign O3 = mem3[a]; + always @(posedge clk) + if (WE) begin + mem0[a] <= D0; + mem1[a] <= D1; + mem2[a] <= D2; + mem3[a] <= D3; + end +endmodule + +module RAM32X4S ( + output O0, O1, O2, O3, + input A0, A1, A2, A3, A4, + input D0, D1, D2, D3, + (* clkbuf_sink *) + (* invertible_pin = "IS_WCLK_INVERTED" *) + input WCLK, + input WE +); + parameter [31:0] INIT_00 = 32'h00000000; + parameter [31:0] INIT_01 = 32'h00000000; + parameter [31:0] INIT_02 = 32'h00000000; + parameter [31:0] INIT_03 = 32'h00000000; + parameter [0:0] IS_WCLK_INVERTED = 1'b0; + wire [4:0] a = {A4, A3, A2, A1, A0}; + wire clk = WCLK ^ IS_WCLK_INVERTED; + reg [31:0] mem0 = INIT_00; + reg [31:0] mem1 = INIT_01; + reg [31:0] mem2 = INIT_02; + reg [31:0] mem3 = INIT_03; + assign O0 = mem0[a]; + assign O1 = mem1[a]; + assign O2 = mem2[a]; + assign O3 = mem3[a]; + always @(posedge clk) + if (WE) begin + mem0[a] <= D0; + mem1[a] <= D1; + mem2[a] <= D2; + mem3[a] <= D3; + end +endmodule + +module RAM16X8S ( + output [7:0] O, + input A0, A1, A2, A3, + input [7:0] D, + (* clkbuf_sink *) + (* invertible_pin = "IS_WCLK_INVERTED" *) + input WCLK, + input WE +); + parameter [15:0] INIT_00 = 16'h0000; + parameter [15:0] INIT_01 = 16'h0000; + parameter [15:0] INIT_02 = 16'h0000; + parameter [15:0] INIT_03 = 16'h0000; + parameter [15:0] INIT_04 = 16'h0000; + parameter [15:0] INIT_05 = 16'h0000; + parameter [15:0] INIT_06 = 16'h0000; + parameter [15:0] INIT_07 = 16'h0000; + parameter [0:0] IS_WCLK_INVERTED = 1'b0; + wire [3:0] a = {A3, A2, A1, A0}; + wire clk = WCLK ^ IS_WCLK_INVERTED; + reg [15:0] mem0 = INIT_00; + reg [15:0] mem1 = INIT_01; + reg [15:0] mem2 = INIT_02; + reg [15:0] mem3 = INIT_03; + reg [15:0] mem4 = INIT_04; + reg [15:0] mem5 = INIT_05; + reg [15:0] mem6 = INIT_06; + reg [15:0] mem7 = INIT_07; + assign O[0] = mem0[a]; + assign O[1] = mem1[a]; + assign O[2] = mem2[a]; + assign O[3] = mem3[a]; + assign O[4] = mem4[a]; + assign O[5] = mem5[a]; + assign O[6] = mem6[a]; + assign O[7] = mem7[a]; + always @(posedge clk) + if (WE) begin + mem0[a] <= D[0]; + mem1[a] <= D[1]; + mem2[a] <= D[2]; + mem3[a] <= D[3]; + mem4[a] <= D[4]; + mem5[a] <= D[5]; + mem6[a] <= D[6]; + mem7[a] <= D[7]; + end +endmodule + +module RAM32X8S ( + output [7:0] O, + input A0, A1, A2, A3, A4, + input [7:0] D, + (* clkbuf_sink *) + (* invertible_pin = "IS_WCLK_INVERTED" *) + input WCLK, + input WE +); + parameter [31:0] INIT_00 = 32'h00000000; + parameter [31:0] INIT_01 = 32'h00000000; + parameter [31:0] INIT_02 = 32'h00000000; + parameter [31:0] INIT_03 = 32'h00000000; + parameter [31:0] INIT_04 = 32'h00000000; + parameter [31:0] INIT_05 = 32'h00000000; + parameter [31:0] INIT_06 = 32'h00000000; + parameter [31:0] INIT_07 = 32'h00000000; + parameter [0:0] IS_WCLK_INVERTED = 1'b0; + wire [4:0] a = {A4, A3, A2, A1, A0}; + wire clk = WCLK ^ IS_WCLK_INVERTED; + reg [31:0] mem0 = INIT_00; + reg [31:0] mem1 = INIT_01; + reg [31:0] mem2 = INIT_02; + reg [31:0] mem3 = INIT_03; + reg [31:0] mem4 = INIT_04; + reg [31:0] mem5 = INIT_05; + reg [31:0] mem6 = INIT_06; + reg [31:0] mem7 = INIT_07; + assign O[0] = mem0[a]; + assign O[1] = mem1[a]; + assign O[2] = mem2[a]; + assign O[3] = mem3[a]; + assign O[4] = mem4[a]; + assign O[5] = mem5[a]; + assign O[6] = mem6[a]; + assign O[7] = mem7[a]; + always @(posedge clk) + if (WE) begin + mem0[a] <= D[0]; + mem1[a] <= D[1]; + mem2[a] <= D[2]; + mem3[a] <= D[3]; + mem4[a] <= D[4]; + mem5[a] <= D[5]; + mem6[a] <= D[6]; + mem7[a] <= D[7]; + end +endmodule + +// Dual port. + +module RAM16X1D ( + output DPO, SPO, + input D, + (* clkbuf_sink *) + (* invertible_pin = "IS_WCLK_INVERTED" *) + input WCLK, + input WE, + input A0, A1, A2, A3, + input DPRA0, DPRA1, DPRA2, DPRA3 +); + parameter INIT = 16'h0; + parameter IS_WCLK_INVERTED = 1'b0; + wire [3:0] a = {A3, A2, A1, A0}; + wire [3:0] dpra = {DPRA3, DPRA2, DPRA1, DPRA0}; + reg [15:0] mem = INIT; + assign SPO = mem[a]; + assign DPO = mem[dpra]; + wire clk = WCLK ^ IS_WCLK_INVERTED; + always @(posedge clk) if (WE) mem[a] <= D; +endmodule + +module RAM16X1D_1 ( + output DPO, SPO, + input D, + (* clkbuf_sink *) + (* invertible_pin = "IS_WCLK_INVERTED" *) + input WCLK, + input WE, + input A0, A1, A2, A3, + input DPRA0, DPRA1, DPRA2, DPRA3 +); + parameter INIT = 16'h0; + parameter IS_WCLK_INVERTED = 1'b0; + wire [3:0] a = {A3, A2, A1, A0}; + wire [3:0] dpra = {DPRA3, DPRA2, DPRA1, DPRA0}; + reg [15:0] mem = INIT; + assign SPO = mem[a]; + assign DPO = mem[dpra]; + wire clk = WCLK ^ IS_WCLK_INVERTED; + always @(negedge clk) if (WE) mem[a] <= D; +endmodule + +(* abc9_box, lib_whitebox *) +module RAM32X1D ( + output DPO, SPO, + input D, + (* clkbuf_sink *) + (* invertible_pin = "IS_WCLK_INVERTED" *) + input WCLK, + input WE, + input A0, A1, A2, A3, A4, + input DPRA0, DPRA1, DPRA2, DPRA3, DPRA4 +); + parameter INIT = 32'h0; + parameter IS_WCLK_INVERTED = 1'b0; + wire [4:0] a = {A4, A3, A2, A1, A0}; + wire [4:0] dpra = {DPRA4, DPRA3, DPRA2, DPRA1, DPRA0}; + reg [31:0] mem = INIT; + assign SPO = mem[a]; + assign DPO = mem[dpra]; + wire clk = WCLK ^ IS_WCLK_INVERTED; + always @(posedge clk) if (WE) mem[a] <= D; + specify + // Max delay from: https://github.com/SymbiFlow/prjxray-db/blob/31f51ac5ec7448dd6f79a8267f147123e4413c21/artix7/timings/CLBLM_R.sdf#L986 + $setup(D , posedge WCLK &&& !IS_WCLK_INVERTED && WE, 453); + $setup(D , negedge WCLK &&& IS_WCLK_INVERTED && WE, 453); + // Max delay from: https://github.com/SymbiFlow/prjxray-db/blob/31f51ac5ec7448dd6f79a8267f147123e4413c21/artix7/timings/CLBLM_R.sdf#L834 + $setup(WE, posedge WCLK &&& !IS_WCLK_INVERTED, 654); + $setup(WE, negedge WCLK &&& IS_WCLK_INVERTED, 654); + // Max delay from: https://github.com/SymbiFlow/prjxray-db/blob/31f51ac5ec7448dd6f79a8267f147123e4413c21/artix7/timings/CLBLM_R.sdf#L800 + $setup(A0, posedge WCLK &&& !IS_WCLK_INVERTED && WE, 245); + $setup(A0, negedge WCLK &&& IS_WCLK_INVERTED && WE, 245); + // Max delay from: https://github.com/SymbiFlow/prjxray-db/blob/31f51ac5ec7448dd6f79a8267f147123e4413c21/artix7/timings/CLBLM_R.sdf#L798 + $setup(A1, posedge WCLK &&& !IS_WCLK_INVERTED && WE, 208); + $setup(A1, negedge WCLK &&& IS_WCLK_INVERTED && WE, 208); + // Max delay from: https://github.com/SymbiFlow/prjxray-db/blob/31f51ac5ec7448dd6f79a8267f147123e4413c21/artix7/timings/CLBLM_R.sdf#L796 + $setup(A2, posedge WCLK &&& !IS_WCLK_INVERTED && WE, 147); + $setup(A2, negedge WCLK &&& IS_WCLK_INVERTED && WE, 147); + // Max delay from: https://github.com/SymbiFlow/prjxray-db/blob/31f51ac5ec7448dd6f79a8267f147123e4413c21/artix7/timings/CLBLM_R.sdf#L794 + $setup(A3, posedge WCLK &&& !IS_WCLK_INVERTED && WE, 68); + $setup(A3, negedge WCLK &&& IS_WCLK_INVERTED && WE, 68); + // Max delay from: https://github.com/SymbiFlow/prjxray-db/blob/31f51ac5ec7448dd6f79a8267f147123e4413c21/artix7/timings/CLBLM_R.sdf#L792 + $setup(A4, posedge WCLK &&& !IS_WCLK_INVERTED && WE, 66); + $setup(A4, posedge WCLK &&& IS_WCLK_INVERTED && WE, 66); + // Max delay from: https://github.com/SymbiFlow/prjxray-db/blob/31f51ac5ec7448dd6f79a8267f147123e4413c21/artix7/timings/CLBLM_R.sdf#L981 + if (!IS_WCLK_INVERTED) (posedge WCLK => (SPO : D)) = 1153; + if (!IS_WCLK_INVERTED) (posedge WCLK => (DPO : 1'bx)) = 1153; + if ( IS_WCLK_INVERTED) (posedge WCLK => (SPO : D)) = 1153; + if ( IS_WCLK_INVERTED) (negedge WCLK => (DPO : 1'bx)) = 1153; + (A0 => SPO) = 642; (DPRA0 => DPO) = 642; + (A1 => SPO) = 632; (DPRA1 => DPO) = 631; + (A2 => SPO) = 472; (DPRA2 => DPO) = 472; + (A3 => SPO) = 407; (DPRA3 => DPO) = 407; + (A4 => SPO) = 238; (DPRA4 => DPO) = 238; + endspecify +endmodule + +(* abc9_box, lib_whitebox *) +module RAM32X1D_1 ( + output DPO, SPO, + input D, + (* clkbuf_sink *) + (* invertible_pin = "IS_WCLK_INVERTED" *) + input WCLK, + input WE, + input A0, + input A1, + input A2, + input A3, + input A4, + input DPRA0, DPRA1, DPRA2, DPRA3, DPRA4 +); + parameter INIT = 32'h0; + parameter IS_WCLK_INVERTED = 1'b0; + wire [4:0] a = {A4, A3, A2, A1, A0}; + wire [4:0] dpra = {DPRA4, DPRA3, DPRA2, DPRA1, DPRA0}; + reg [31:0] mem = INIT; + assign SPO = mem[a]; + assign DPO = mem[dpra]; + wire clk = WCLK ^ IS_WCLK_INVERTED; + always @(negedge clk) if (WE) mem[a] <= D; + specify + // Max delay from: https://github.com/SymbiFlow/prjxray-db/blob/31f51ac5ec7448dd6f79a8267f147123e4413c21/artix7/timings/CLBLM_R.sdf#L986 + $setup(D , negedge WCLK &&& WE, 453); + // Max delay from: https://github.com/SymbiFlow/prjxray-db/blob/31f51ac5ec7448dd6f79a8267f147123e4413c21/artix7/timings/CLBLM_R.sdf#L834 + $setup(WE, negedge WCLK, 654); + // Max delay from: https://github.com/SymbiFlow/prjxray-db/blob/31f51ac5ec7448dd6f79a8267f147123e4413c21/artix7/timings/CLBLM_R.sdf#L800 + $setup(A0, negedge WCLK &&& WE, 245); + // Max delay from: https://github.com/SymbiFlow/prjxray-db/blob/31f51ac5ec7448dd6f79a8267f147123e4413c21/artix7/timings/CLBLM_R.sdf#L798 + $setup(A1, negedge WCLK &&& WE, 208); + // Max delay from: https://github.com/SymbiFlow/prjxray-db/blob/31f51ac5ec7448dd6f79a8267f147123e4413c21/artix7/timings/CLBLM_R.sdf#L796 + $setup(A2, negedge WCLK &&& WE, 147); + // Max delay from: https://github.com/SymbiFlow/prjxray-db/blob/31f51ac5ec7448dd6f79a8267f147123e4413c21/artix7/timings/CLBLM_R.sdf#L794 + $setup(A3, negedge WCLK &&& WE, 68); + // Max delay from: https://github.com/SymbiFlow/prjxray-db/blob/31f51ac5ec7448dd6f79a8267f147123e4413c21/artix7/timings/CLBLM_R.sdf#L792 + $setup(A4, negedge WCLK &&& WE, 66); + // Max delay from: https://github.com/SymbiFlow/prjxray-db/blob/31f51ac5ec7448dd6f79a8267f147123e4413c21/artix7/timings/CLBLM_R.sdf#L981 + if (WE) (negedge WCLK => (SPO : D)) = 1153; + if (WE) (negedge WCLK => (DPO : 1'bx)) = 1153; + (A0 => SPO) = 642; (DPRA0 => DPO) = 642; + (A1 => SPO) = 632; (DPRA1 => DPO) = 631; + (A2 => SPO) = 472; (DPRA2 => DPO) = 472; + (A3 => SPO) = 407; (DPRA3 => DPO) = 407; + (A4 => SPO) = 238; (DPRA4 => DPO) = 238; + endspecify +endmodule + +(* abc9_box, lib_whitebox *) +module RAM64X1D ( + output DPO, SPO, + input D, + (* clkbuf_sink *) + (* invertible_pin = "IS_WCLK_INVERTED" *) + input WCLK, + input WE, + input A0, A1, A2, A3, A4, A5, + input DPRA0, DPRA1, DPRA2, DPRA3, DPRA4, DPRA5 +); + parameter INIT = 64'h0; + parameter IS_WCLK_INVERTED = 1'b0; + wire [5:0] a = {A5, A4, A3, A2, A1, A0}; + wire [5:0] dpra = {DPRA5, DPRA4, DPRA3, DPRA2, DPRA1, DPRA0}; + reg [63:0] mem = INIT; + assign SPO = mem[a]; + assign DPO = mem[dpra]; + wire clk = WCLK ^ IS_WCLK_INVERTED; + always @(posedge clk) if (WE) mem[a] <= D; + specify + // Max delay from: https://github.com/SymbiFlow/prjxray-db/blob/31f51ac5ec7448dd6f79a8267f147123e4413c21/artix7/timings/CLBLM_R.sdf#L986 + $setup(D , posedge WCLK &&& !IS_WCLK_INVERTED && WE, 453); + $setup(D , negedge WCLK &&& IS_WCLK_INVERTED && WE, 453); + // Max delay from: https://github.com/SymbiFlow/prjxray-db/blob/31f51ac5ec7448dd6f79a8267f147123e4413c21/artix7/timings/CLBLM_R.sdf#L834 + $setup(WE, posedge WCLK &&& !IS_WCLK_INVERTED, 654); + $setup(WE, negedge WCLK &&& IS_WCLK_INVERTED, 654); + // Max delay from: https://github.com/SymbiFlow/prjxray-db/blob/31f51ac5ec7448dd6f79a8267f147123e4413c21/artix7/timings/CLBLM_R.sdf#L828 + $setup(A0, posedge WCLK &&& !IS_WCLK_INVERTED && WE, 362); + $setup(A0, negedge WCLK &&& IS_WCLK_INVERTED && WE, 362); + // Max delay from: https://github.com/SymbiFlow/prjxray-db/blob/31f51ac5ec7448dd6f79a8267f147123e4413c21/artix7/timings/CLBLM_R.sdf#L826 + $setup(A1, posedge WCLK &&& !IS_WCLK_INVERTED && WE, 245); + $setup(A1, negedge WCLK &&& IS_WCLK_INVERTED && WE, 245); + // Max delay from: https://github.com/SymbiFlow/prjxray-db/blob/31f51ac5ec7448dd6f79a8267f147123e4413c21/artix7/timings/CLBLM_R.sdf#L824 + $setup(A2, posedge WCLK &&& !IS_WCLK_INVERTED && WE, 208); + $setup(A2, negedge WCLK &&& IS_WCLK_INVERTED && WE, 208); + // Max delay from: https://github.com/SymbiFlow/prjxray-db/blob/31f51ac5ec7448dd6f79a8267f147123e4413c21/artix7/timings/CLBLM_R.sdf#L822 + $setup(A3, posedge WCLK &&& !IS_WCLK_INVERTED && WE, 147); + $setup(A3, negedge WCLK &&& IS_WCLK_INVERTED && WE, 147); + // Max delay from: https://github.com/SymbiFlow/prjxray-db/blob/31f51ac5ec7448dd6f79a8267f147123e4413c21/artix7/timings/CLBLM_R.sdf#L820 + $setup(A4, posedge WCLK &&& !IS_WCLK_INVERTED && WE, 68); + $setup(A4, negedge WCLK &&& IS_WCLK_INVERTED && WE, 68); + // Max delay from: https://github.com/SymbiFlow/prjxray-db/blob/31f51ac5ec7448dd6f79a8267f147123e4413c21/artix7/timings/CLBLM_R.sdf#L818 + $setup(A5, posedge WCLK &&& !IS_WCLK_INVERTED && WE, 66); + $setup(A5, negedge WCLK &&& IS_WCLK_INVERTED && WE, 66); + // Max delay from: https://github.com/SymbiFlow/prjxray-db/blob/31f51ac5ec7448dd6f79a8267f147123e4413c21/artix7/timings/CLBLM_R.sdf#L981 + if (!IS_WCLK_INVERTED && WE) (posedge WCLK => (SPO : D)) = 1153; + if (!IS_WCLK_INVERTED && WE) (posedge WCLK => (DPO : 1'bx)) = 1153; + if ( IS_WCLK_INVERTED && WE) (negedge WCLK => (SPO : D)) = 1153; + if ( IS_WCLK_INVERTED && WE) (negedge WCLK => (DPO : 1'bx)) = 1153; + (A0 => SPO) = 642; (DPRA0 => DPO) = 642; + (A1 => SPO) = 632; (DPRA1 => DPO) = 631; + (A2 => SPO) = 472; (DPRA2 => DPO) = 472; + (A3 => SPO) = 407; (DPRA3 => DPO) = 407; + (A4 => SPO) = 238; (DPRA4 => DPO) = 238; + (A5 => SPO) = 127; (DPRA5 => DPO) = 127; + endspecify +endmodule + +module RAM64X1D_1 ( + output DPO, SPO, + input D, + (* clkbuf_sink *) + (* invertible_pin = "IS_WCLK_INVERTED" *) + input WCLK, + input WE, + input A0, A1, A2, A3, A4, A5, + input DPRA0, DPRA1, DPRA2, DPRA3, DPRA4, DPRA5 +); + parameter INIT = 64'h0; + parameter IS_WCLK_INVERTED = 1'b0; + wire [5:0] a = {A5, A4, A3, A2, A1, A0}; + wire [5:0] dpra = {DPRA5, DPRA4, DPRA3, DPRA2, DPRA1, DPRA0}; + reg [63:0] mem = INIT; + assign SPO = mem[a]; + assign DPO = mem[dpra]; + wire clk = WCLK ^ IS_WCLK_INVERTED; + always @(negedge clk) if (WE) mem[a] <= D; + specify + // Max delay from: https://github.com/SymbiFlow/prjxray-db/blob/31f51ac5ec7448dd6f79a8267f147123e4413c21/artix7/timings/CLBLM_R.sdf#L986 + $setup(D , negedge WCLK &&& WE, 453); + // Max delay from: https://github.com/SymbiFlow/prjxray-db/blob/31f51ac5ec7448dd6f79a8267f147123e4413c21/artix7/timings/CLBLM_R.sdf#L834 + $setup(WE, negedge WCLK, 654); + // Max delay from: https://github.com/SymbiFlow/prjxray-db/blob/31f51ac5ec7448dd6f79a8267f147123e4413c21/artix7/timings/CLBLM_R.sdf#L828 + $setup(A0, negedge WCLK &&& WE, 362); + // Max delay from: https://github.com/SymbiFlow/prjxray-db/blob/31f51ac5ec7448dd6f79a8267f147123e4413c21/artix7/timings/CLBLM_R.sdf#L826 + $setup(A1, negedge WCLK &&& WE, 245); + // Max delay from: https://github.com/SymbiFlow/prjxray-db/blob/31f51ac5ec7448dd6f79a8267f147123e4413c21/artix7/timings/CLBLM_R.sdf#L824 + $setup(A2, negedge WCLK &&& WE, 208); + // Max delay from: https://github.com/SymbiFlow/prjxray-db/blob/31f51ac5ec7448dd6f79a8267f147123e4413c21/artix7/timings/CLBLM_R.sdf#L822 + $setup(A3, negedge WCLK &&& WE, 147); + // Max delay from: https://github.com/SymbiFlow/prjxray-db/blob/31f51ac5ec7448dd6f79a8267f147123e4413c21/artix7/timings/CLBLM_R.sdf#L820 + $setup(A4, negedge WCLK &&& WE, 68); + // Max delay from: https://github.com/SymbiFlow/prjxray-db/blob/31f51ac5ec7448dd6f79a8267f147123e4413c21/artix7/timings/CLBLM_R.sdf#L818 + $setup(A5, negedge WCLK &&& WE, 66); + // Max delay from: https://github.com/SymbiFlow/prjxray-db/blob/31f51ac5ec7448dd6f79a8267f147123e4413c21/artix7/timings/CLBLM_R.sdf#L981 + if (WE) (negedge WCLK => (SPO : D)) = 1153; + if (WE) (negedge WCLK => (DPO : 1'bx)) = 1153; + (A0 => SPO) = 642; (DPRA0 => DPO) = 642; + (A1 => SPO) = 632; (DPRA1 => DPO) = 631; + (A2 => SPO) = 472; (DPRA2 => DPO) = 472; + (A3 => SPO) = 407; (DPRA3 => DPO) = 407; + (A4 => SPO) = 238; (DPRA4 => DPO) = 238; + (A5 => SPO) = 127; (DPRA5 => DPO) = 127; + endspecify +endmodule + +(* abc9_box, lib_whitebox *) +module RAM128X1D ( + output DPO, SPO, + input D, + (* clkbuf_sink *) + (* invertible_pin = "IS_WCLK_INVERTED" *) + input WCLK, + input WE, + input [6:0] A, + input [6:0] DPRA +); + parameter INIT = 128'h0; + parameter IS_WCLK_INVERTED = 1'b0; + reg [127:0] mem = INIT; + assign SPO = mem[A]; + assign DPO = mem[DPRA]; + wire clk = WCLK ^ IS_WCLK_INVERTED; + always @(posedge clk) if (WE) mem[A] <= D; + specify + // Max delay from: https://github.com/SymbiFlow/prjxray-db/blob/31f51ac5ec7448dd6f79a8267f147123e4413c21/artix7/timings/CLBLM_R.sdf#L986 + $setup(D , posedge WCLK &&& !IS_WCLK_INVERTED && WE, 453); + $setup(D , negedge WCLK &&& IS_WCLK_INVERTED && WE, 453); + // Max delay from: https://github.com/SymbiFlow/prjxray-db/blob/31f51ac5ec7448dd6f79a8267f147123e4413c21/artix7/timings/CLBLM_R.sdf#L834 + $setup(WE, posedge WCLK &&& !IS_WCLK_INVERTED, 654); + $setup(WE, negedge WCLK &&& IS_WCLK_INVERTED, 654); + // Max delay from: https://github.com/SymbiFlow/prjxray-db/blob/31f51ac5ec7448dd6f79a8267f147123e4413c21/artix7/timings/CLBLM_R.sdf#L818-830 + $setup(A[0], posedge WCLK &&& !IS_WCLK_INVERTED && WE, 616); + $setup(A[0], negedge WCLK &&& IS_WCLK_INVERTED && WE, 616); + $setup(A[1], posedge WCLK &&& !IS_WCLK_INVERTED && WE, 362); + $setup(A[1], negedge WCLK &&& IS_WCLK_INVERTED && WE, 362); + $setup(A[2], posedge WCLK &&& !IS_WCLK_INVERTED && WE, 245); + $setup(A[2], negedge WCLK &&& IS_WCLK_INVERTED && WE, 245); + $setup(A[3], posedge WCLK &&& !IS_WCLK_INVERTED && WE, 208); + $setup(A[3], negedge WCLK &&& IS_WCLK_INVERTED && WE, 208); + $setup(A[4], posedge WCLK &&& !IS_WCLK_INVERTED && WE, 147); + $setup(A[4], negedge WCLK &&& IS_WCLK_INVERTED && WE, 147); + $setup(A[5], posedge WCLK &&& !IS_WCLK_INVERTED && WE, 68); + $setup(A[5], negedge WCLK &&& IS_WCLK_INVERTED && WE, 68); + $setup(A[6], posedge WCLK &&& !IS_WCLK_INVERTED && WE, 66); + $setup(A[6], negedge WCLK &&& IS_WCLK_INVERTED && WE, 66); +`ifndef __ICARUS__ + // Max delay from: https://github.com/SymbiFlow/prjxray-db/blob/31f51ac5ec7448dd6f79a8267f147123e4413c21/artix7/timings/CLBLM_R.sdf#L981 + if (!IS_WCLK_INVERTED && WE) (posedge WCLK => (SPO : D)) = 1153 + 217 /* to cross F7AMUX */ + 175 /* AMUX */; + if ( IS_WCLK_INVERTED && WE) (negedge WCLK => (DPO : 1'bx)) = 1153 + 223 /* to cross F7BMUX */ + 174 /* CMUX */; + (A[0] => SPO) = 642 + 193 /* to cross F7AMUX */ + 175 /* AMUX */; + (A[1] => SPO) = 631 + 193 /* to cross F7AMUX */ + 175 /* AMUX */; + (A[2] => SPO) = 472 + 193 /* to cross F7AMUX */ + 175 /* AMUX */; + (A[3] => SPO) = 407 + 193 /* to cross F7AMUX */ + 175 /* AMUX */; + (A[4] => SPO) = 238 + 193 /* to cross F7AMUX */ + 175 /* AMUX */; + (A[5] => SPO) = 127 + 193 /* to cross F7AMUX */ + 175 /* AMUX */; + (A[6] => SPO) = 0 + 276 /* to select F7AMUX */ + 175 /* AMUX */; + (DPRA[0] => DPO) = 642 + 223 /* to cross MUXF7 */ + 174 /* CMUX */; + (DPRA[1] => DPO) = 631 + 223 /* to cross MUXF7 */ + 174 /* CMUX */; + (DPRA[2] => DPO) = 472 + 223 /* to cross MUXF7 */ + 174 /* CMUX */; + (DPRA[3] => DPO) = 407 + 223 /* to cross MUXF7 */ + 174 /* CMUX */; + (DPRA[4] => DPO) = 238 + 223 /* to cross MUXF7 */ + 174 /* CMUX */; + (DPRA[5] => DPO) = 127 + 223 /* to cross MUXF7 */ + 174 /* CMUX */; + (DPRA[6] => DPO) = 0 + 296 /* to select MUXF7 */ + 174 /* CMUX */; +`endif + endspecify +endmodule + +module RAM256X1D ( + output DPO, SPO, + input D, + (* clkbuf_sink *) + (* invertible_pin = "IS_WCLK_INVERTED" *) + input WCLK, + input WE, + input [7:0] A, DPRA +); + parameter INIT = 256'h0; + parameter IS_WCLK_INVERTED = 1'b0; + reg [255:0] mem = INIT; + assign SPO = mem[A]; + assign DPO = mem[DPRA]; + wire clk = WCLK ^ IS_WCLK_INVERTED; + always @(posedge clk) if (WE) mem[A] <= D; +endmodule + +// Multi port. + +(* abc9_box, lib_whitebox *) +module RAM32M ( + output [1:0] DOA, + output [1:0] DOB, + output [1:0] DOC, + output [1:0] DOD, + input [4:0] ADDRA, ADDRB, ADDRC, + input [4:0] ADDRD, + input [1:0] DIA, + input [1:0] DIB, + input [1:0] DIC, + input [1:0] DID, + (* clkbuf_sink *) + (* invertible_pin = "IS_WCLK_INVERTED" *) + input WCLK, + input WE +); + parameter [63:0] INIT_A = 64'h0000000000000000; + parameter [63:0] INIT_B = 64'h0000000000000000; + parameter [63:0] INIT_C = 64'h0000000000000000; + parameter [63:0] INIT_D = 64'h0000000000000000; + parameter [0:0] IS_WCLK_INVERTED = 1'b0; + reg [63:0] mem_a = INIT_A; + reg [63:0] mem_b = INIT_B; + reg [63:0] mem_c = INIT_C; + reg [63:0] mem_d = INIT_D; + assign DOA = mem_a[2*ADDRA+:2]; + assign DOB = mem_b[2*ADDRB+:2]; + assign DOC = mem_c[2*ADDRC+:2]; + assign DOD = mem_d[2*ADDRD+:2]; + wire clk = WCLK ^ IS_WCLK_INVERTED; + always @(posedge clk) + if (WE) begin + mem_a[2*ADDRD+:2] <= DIA; + mem_b[2*ADDRD+:2] <= DIB; + mem_c[2*ADDRD+:2] <= DIC; + mem_d[2*ADDRD+:2] <= DID; + end + specify + // Max delay from: https://github.com/SymbiFlow/prjxray-db/blob/31f51ac5ec7448dd6f79a8267f147123e4413c21/artix7/timings/CLBLM_R.sdf#L986 + $setup(ADDRD[0], posedge WCLK &&& !IS_WCLK_INVERTED && WE, 245); + $setup(ADDRD[0], negedge WCLK &&& IS_WCLK_INVERTED && WE, 245); + $setup(ADDRD[1], posedge WCLK &&& !IS_WCLK_INVERTED && WE, 208); + $setup(ADDRD[1], negedge WCLK &&& IS_WCLK_INVERTED && WE, 208); + $setup(ADDRD[2], posedge WCLK &&& !IS_WCLK_INVERTED && WE, 147); + $setup(ADDRD[2], negedge WCLK &&& IS_WCLK_INVERTED && WE, 147); + $setup(ADDRD[3], posedge WCLK &&& !IS_WCLK_INVERTED && WE, 68); + $setup(ADDRD[3], negedge WCLK &&& IS_WCLK_INVERTED && WE, 68); + $setup(ADDRD[4], posedge WCLK &&& !IS_WCLK_INVERTED && WE, 66); + $setup(ADDRD[4], negedge WCLK &&& IS_WCLK_INVERTED && WE, 66); + // Max delay from: https://github.com/SymbiFlow/prjxray-db/blob/31f51ac5ec7448dd6f79a8267f147123e4413c21/artix7/timings/CLBLM_R.sdf#L986-L988 + $setup(DIA[0], posedge WCLK &&& !IS_WCLK_INVERTED && WE, 453); + $setup(DIA[0], negedge WCLK &&& IS_WCLK_INVERTED && WE, 453); + $setup(DIA[1], posedge WCLK &&& !IS_WCLK_INVERTED && WE, 384); + $setup(DIA[1], negedge WCLK &&& IS_WCLK_INVERTED && WE, 384); + // Max delay from: https://github.com/SymbiFlow/prjxray-db/blob/31f51ac5ec7448dd6f79a8267f147123e4413c21/artix7/timings/CLBLM_R.sdf#L1054-L1056 + $setup(DIB[0], posedge WCLK &&& !IS_WCLK_INVERTED && WE, 461); + $setup(DIB[0], negedge WCLK &&& IS_WCLK_INVERTED && WE, 461); + $setup(DIB[1], posedge WCLK &&& !IS_WCLK_INVERTED && WE, 354); + $setup(DIB[1], negedge WCLK &&& IS_WCLK_INVERTED && WE, 354); + // Max delay from: https://github.com/SymbiFlow/prjxray-db/blob/31f51ac5ec7448dd6f79a8267f147123e4413c21/artix7/timings/CLBLM_R.sdf#L1122-L1124 + $setup(DIC[0], posedge WCLK &&& !IS_WCLK_INVERTED && WE, 457); + $setup(DIC[0], negedge WCLK &&& IS_WCLK_INVERTED && WE, 457); + $setup(DIC[1], posedge WCLK &&& !IS_WCLK_INVERTED && WE, 375); + $setup(DIC[1], negedge WCLK &&& IS_WCLK_INVERTED && WE, 375); + // Max delay from: https://github.com/SymbiFlow/prjxray-db/blob/31f51ac5ec7448dd6f79a8267f147123e4413c21/artix7/timings/CLBLM_R.sdf#L1190-L1192 + $setup(DID[0], posedge WCLK &&& !IS_WCLK_INVERTED && WE, 310); + $setup(DID[0], negedge WCLK &&& IS_WCLK_INVERTED && WE, 310); + $setup(DID[1], posedge WCLK &&& !IS_WCLK_INVERTED && WE, 334); + $setup(DID[1], negedge WCLK &&& IS_WCLK_INVERTED && WE, 334); + // Max delay from: https://github.com/SymbiFlow/prjxray-db/blob/31f51ac5ec7448dd6f79a8267f147123e4413c21/artix7/timings/CLBLM_R.sdf#L834 + $setup(WE, posedge WCLK &&& !IS_WCLK_INVERTED, 654); + $setup(WE, negedge WCLK &&& IS_WCLK_INVERTED, 654); + // Max delay from: https://github.com/SymbiFlow/prjxray-db/blob/34ea6eb08a63d21ec16264ad37a0a7b142ff6031/artix7/timings/CLBLM_R.sdf#L889 + if (!IS_WCLK_INVERTED && WE) (posedge WCLK => (DOA[0] : DIA[0])) = 1153; + if ( IS_WCLK_INVERTED && WE) (negedge WCLK => (DOA[0] : DIA[0])) = 1153; + // Max delay from: https://github.com/SymbiFlow/prjxray-db/blob/34ea6eb08a63d21ec16264ad37a0a7b142ff6031/artix7/timings/CLBLM_R.sdf#L857 + if (!IS_WCLK_INVERTED && WE) (posedge WCLK => (DOA[1] : DIA[1])) = 1188; + if ( IS_WCLK_INVERTED && WE) (negedge WCLK => (DOA[1] : DIA[1])) = 1188; + // Max delay from: https://github.com/SymbiFlow/prjxray-db/blob/34ea6eb08a63d21ec16264ad37a0a7b142ff6031/artix7/timings/CLBLM_R.sdf#L957 + if (!IS_WCLK_INVERTED && WE) (posedge WCLK => (DOB[0] : DIB[0])) = 1161; + if ( IS_WCLK_INVERTED && WE) (negedge WCLK => (DOB[0] : DIB[0])) = 1161; + // Max delay from: https://github.com/SymbiFlow/prjxray-db/blob/34ea6eb08a63d21ec16264ad37a0a7b142ff6031/artix7/timings/CLBLM_R.sdf#L925 + if (!IS_WCLK_INVERTED && WE) (posedge WCLK => (DOB[1] : DIB[1])) = 1187; + if ( IS_WCLK_INVERTED && WE) (negedge WCLK => (DOB[1] : DIB[1])) = 1187; + // Max delay from: https://github.com/SymbiFlow/prjxray-db/blob/34ea6eb08a63d21ec16264ad37a0a7b142ff6031/artix7/timings/CLBLM_R.sdf#L993 + if (!IS_WCLK_INVERTED && WE) (posedge WCLK => (DOC[0] : DIC[0])) = 1158; + if ( IS_WCLK_INVERTED && WE) (negedge WCLK => (DOC[0] : DIC[0])) = 1158; + // Max delay from: https://github.com/SymbiFlow/prjxray-db/blob/34ea6eb08a63d21ec16264ad37a0a7b142ff6031/artix7/timings/CLBLM_R.sdf#L1025 + if (!IS_WCLK_INVERTED && WE) (posedge WCLK => (DOC[1] : DIC[1])) = 1180; + if ( IS_WCLK_INVERTED && WE) (negedge WCLK => (DOC[1] : DIC[1])) = 1180; + // Max delay from: https://github.com/SymbiFlow/prjxray-db/blob/34ea6eb08a63d21ec16264ad37a0a7b142ff6031/artix7/timings/CLBLM_R.sdf#L1093 + if (!IS_WCLK_INVERTED && WE) (posedge WCLK => (DOD[0] : DID[0])) = 1163; + if ( IS_WCLK_INVERTED && WE) (negedge WCLK => (DOD[0] : DID[0])) = 1163; + // Max delay from: https://github.com/SymbiFlow/prjxray-db/blob/34ea6eb08a63d21ec16264ad37a0a7b142ff6031/artix7/timings/CLBLM_R.sdf#L1061 + if (!IS_WCLK_INVERTED && WE) (posedge WCLK => (DOD[1] : DID[1])) = 1190; + if ( IS_WCLK_INVERTED && WE) (negedge WCLK => (DOD[1] : DID[1])) = 1190; + (ADDRA[0] *> DOA) = 642; (ADDRB[0] *> DOB) = 642; (ADDRC[0] *> DOC) = 642; (ADDRD[0] *> DOD) = 642; + (ADDRA[1] *> DOA) = 631; (ADDRB[1] *> DOB) = 631; (ADDRC[1] *> DOC) = 631; (ADDRD[1] *> DOD) = 631; + (ADDRA[2] *> DOA) = 472; (ADDRB[2] *> DOB) = 472; (ADDRC[2] *> DOC) = 472; (ADDRD[2] *> DOD) = 472; + (ADDRA[3] *> DOA) = 407; (ADDRB[3] *> DOB) = 407; (ADDRC[3] *> DOC) = 407; (ADDRD[3] *> DOD) = 407; + (ADDRA[4] *> DOA) = 238; (ADDRB[4] *> DOB) = 238; (ADDRC[4] *> DOC) = 238; (ADDRD[4] *> DOD) = 238; + endspecify +endmodule + +module RAM32M16 ( + output [1:0] DOA, + output [1:0] DOB, + output [1:0] DOC, + output [1:0] DOD, + output [1:0] DOE, + output [1:0] DOF, + output [1:0] DOG, + output [1:0] DOH, + input [4:0] ADDRA, + input [4:0] ADDRB, + input [4:0] ADDRC, + input [4:0] ADDRD, + input [4:0] ADDRE, + input [4:0] ADDRF, + input [4:0] ADDRG, + input [4:0] ADDRH, + input [1:0] DIA, + input [1:0] DIB, + input [1:0] DIC, + input [1:0] DID, + input [1:0] DIE, + input [1:0] DIF, + input [1:0] DIG, + input [1:0] DIH, + (* clkbuf_sink *) + (* invertible_pin = "IS_WCLK_INVERTED" *) + input WCLK, + input WE +); + parameter [63:0] INIT_A = 64'h0000000000000000; + parameter [63:0] INIT_B = 64'h0000000000000000; + parameter [63:0] INIT_C = 64'h0000000000000000; + parameter [63:0] INIT_D = 64'h0000000000000000; + parameter [63:0] INIT_E = 64'h0000000000000000; + parameter [63:0] INIT_F = 64'h0000000000000000; + parameter [63:0] INIT_G = 64'h0000000000000000; + parameter [63:0] INIT_H = 64'h0000000000000000; + parameter [0:0] IS_WCLK_INVERTED = 1'b0; + reg [63:0] mem_a = INIT_A; + reg [63:0] mem_b = INIT_B; + reg [63:0] mem_c = INIT_C; + reg [63:0] mem_d = INIT_D; + reg [63:0] mem_e = INIT_E; + reg [63:0] mem_f = INIT_F; + reg [63:0] mem_g = INIT_G; + reg [63:0] mem_h = INIT_H; + assign DOA = mem_a[2*ADDRA+:2]; + assign DOB = mem_b[2*ADDRB+:2]; + assign DOC = mem_c[2*ADDRC+:2]; + assign DOD = mem_d[2*ADDRD+:2]; + assign DOE = mem_e[2*ADDRE+:2]; + assign DOF = mem_f[2*ADDRF+:2]; + assign DOG = mem_g[2*ADDRG+:2]; + assign DOH = mem_h[2*ADDRH+:2]; + wire clk = WCLK ^ IS_WCLK_INVERTED; + always @(posedge clk) + if (WE) begin + mem_a[2*ADDRH+:2] <= DIA; + mem_b[2*ADDRH+:2] <= DIB; + mem_c[2*ADDRH+:2] <= DIC; + mem_d[2*ADDRH+:2] <= DID; + mem_e[2*ADDRH+:2] <= DIE; + mem_f[2*ADDRH+:2] <= DIF; + mem_g[2*ADDRH+:2] <= DIG; + mem_h[2*ADDRH+:2] <= DIH; + end +endmodule + +(* abc9_box, lib_whitebox *) +module RAM64M ( + output DOA, + output DOB, + output DOC, + output DOD, + input [5:0] ADDRA, ADDRB, ADDRC, + input [5:0] ADDRD, + input DIA, + input DIB, + input DIC, + input DID, + (* clkbuf_sink *) + (* invertible_pin = "IS_WCLK_INVERTED" *) + input WCLK, + input WE +); + parameter [63:0] INIT_A = 64'h0000000000000000; + parameter [63:0] INIT_B = 64'h0000000000000000; + parameter [63:0] INIT_C = 64'h0000000000000000; + parameter [63:0] INIT_D = 64'h0000000000000000; + parameter [0:0] IS_WCLK_INVERTED = 1'b0; + reg [63:0] mem_a = INIT_A; + reg [63:0] mem_b = INIT_B; + reg [63:0] mem_c = INIT_C; + reg [63:0] mem_d = INIT_D; + assign DOA = mem_a[ADDRA]; + assign DOB = mem_b[ADDRB]; + assign DOC = mem_c[ADDRC]; + assign DOD = mem_d[ADDRD]; + wire clk = WCLK ^ IS_WCLK_INVERTED; + always @(posedge clk) + if (WE) begin + mem_a[ADDRD] <= DIA; + mem_b[ADDRD] <= DIB; + mem_c[ADDRD] <= DIC; + mem_d[ADDRD] <= DID; + end + specify + // Max delay from: https://github.com/SymbiFlow/prjxray-db/blob/31f51ac5ec7448dd6f79a8267f147123e4413c21/artix7/timings/CLBLM_R.sdf#L818-L830 + $setup(ADDRD[0], posedge WCLK &&& !IS_WCLK_INVERTED && WE, 362); + $setup(ADDRD[0], negedge WCLK &&& IS_WCLK_INVERTED && WE, 362); + $setup(ADDRD[1], posedge WCLK &&& !IS_WCLK_INVERTED && WE, 245); + $setup(ADDRD[1], negedge WCLK &&& IS_WCLK_INVERTED && WE, 245); + $setup(ADDRD[2], posedge WCLK &&& !IS_WCLK_INVERTED && WE, 208); + $setup(ADDRD[2], negedge WCLK &&& IS_WCLK_INVERTED && WE, 208); + $setup(ADDRD[3], posedge WCLK &&& !IS_WCLK_INVERTED && WE, 147); + $setup(ADDRD[3], negedge WCLK &&& IS_WCLK_INVERTED && WE, 147); + $setup(ADDRD[4], posedge WCLK &&& !IS_WCLK_INVERTED && WE, 68); + $setup(ADDRD[4], negedge WCLK &&& IS_WCLK_INVERTED && WE, 68); + $setup(ADDRD[5], posedge WCLK &&& !IS_WCLK_INVERTED && WE, 66); + $setup(ADDRD[5], negedge WCLK &&& IS_WCLK_INVERTED && WE, 66); + // Max delay from: https://github.com/SymbiFlow/prjxray-db/blob/31f51ac5ec7448dd6f79a8267f147123e4413c21/artix7/timings/CLBLM_R.sdf#L986-L988 + $setup(DIA, posedge WCLK &&& !IS_WCLK_INVERTED && WE, 384); + $setup(DIA, negedge WCLK &&& IS_WCLK_INVERTED && WE, 384); + // Max delay from: https://github.com/SymbiFlow/prjxray-db/blob/31f51ac5ec7448dd6f79a8267f147123e4413c21/artix7/timings/CLBLM_R.sdf#L1054-L1056 + $setup(DIB, posedge WCLK &&& !IS_WCLK_INVERTED && WE, 354); + $setup(DIB, negedge WCLK &&& IS_WCLK_INVERTED && WE, 354); + // Max delay from: https://github.com/SymbiFlow/prjxray-db/blob/31f51ac5ec7448dd6f79a8267f147123e4413c21/artix7/timings/CLBLM_R.sdf#L1122-L1124 + $setup(DIC, posedge WCLK &&& !IS_WCLK_INVERTED && WE, 375); + $setup(DIC, negedge WCLK &&& IS_WCLK_INVERTED && WE, 375); + // Max delay from: https://github.com/SymbiFlow/prjxray-db/blob/31f51ac5ec7448dd6f79a8267f147123e4413c21/artix7/timings/CLBLM_R.sdf#L1190-L1192 + $setup(DID, posedge WCLK &&& !IS_WCLK_INVERTED && WE, 310); + $setup(DID, negedge WCLK &&& IS_WCLK_INVERTED && WE, 310); + // Max delay from: https://github.com/SymbiFlow/prjxray-db/blob/31f51ac5ec7448dd6f79a8267f147123e4413c21/artix7/timings/CLBLM_R.sdf#L834 + $setup(WE, posedge WCLK &&& !IS_WCLK_INVERTED && WE, 654); + $setup(WE, negedge WCLK &&& IS_WCLK_INVERTED && WE, 654); + // Max delay from: https://github.com/SymbiFlow/prjxray-db/blob/34ea6eb08a63d21ec16264ad37a0a7b142ff6031/artix7/timings/CLBLM_R.sdf#L889 + if (!IS_WCLK_INVERTED && WE) (posedge WCLK => (DOA : DIA)) = 1153; + if ( IS_WCLK_INVERTED && WE) (negedge WCLK => (DOA : DIA)) = 1153; + // Max delay from: https://github.com/SymbiFlow/prjxray-db/blob/34ea6eb08a63d21ec16264ad37a0a7b142ff6031/artix7/timings/CLBLM_R.sdf#L957 + if (!IS_WCLK_INVERTED && WE) (posedge WCLK => (DOB : DIB)) = 1161; + if ( IS_WCLK_INVERTED && WE) (negedge WCLK => (DOB : DIB)) = 1161; + // Max delay from: https://github.com/SymbiFlow/prjxray-db/blob/34ea6eb08a63d21ec16264ad37a0a7b142ff6031/artix7/timings/CLBLM_R.sdf#L1025 + if (!IS_WCLK_INVERTED && WE) (posedge WCLK => (DOC : DIC)) = 1158; + if ( IS_WCLK_INVERTED && WE) (negedge WCLK => (DOC : DIC)) = 1158; + // Max delay from: https://github.com/SymbiFlow/prjxray-db/blob/34ea6eb08a63d21ec16264ad37a0a7b142ff6031/artix7/timings/CLBLM_R.sdf#L1093 + if (!IS_WCLK_INVERTED && WE) (posedge WCLK => (DOD : DID)) = 1163; + if ( IS_WCLK_INVERTED && WE) (negedge WCLK => (DOD : DID)) = 1163; + (ADDRA[0] => DOA) = 642; (ADDRB[0] => DOB) = 642; (ADDRC[0] => DOC) = 642; (ADDRD[0] => DOD) = 642; + (ADDRA[1] => DOA) = 631; (ADDRB[1] => DOB) = 631; (ADDRC[1] => DOC) = 631; (ADDRD[1] => DOD) = 631; + (ADDRA[2] => DOA) = 472; (ADDRB[2] => DOB) = 472; (ADDRC[2] => DOC) = 472; (ADDRD[2] => DOD) = 472; + (ADDRA[3] => DOA) = 407; (ADDRB[3] => DOB) = 407; (ADDRC[3] => DOC) = 407; (ADDRD[3] => DOD) = 407; + (ADDRA[4] => DOA) = 238; (ADDRB[4] => DOB) = 238; (ADDRC[4] => DOC) = 238; (ADDRD[4] => DOD) = 238; + endspecify +endmodule + +module RAM64M8 ( + output DOA, + output DOB, + output DOC, + output DOD, + output DOE, + output DOF, + output DOG, + output DOH, + input [5:0] ADDRA, + input [5:0] ADDRB, + input [5:0] ADDRC, + input [5:0] ADDRD, + input [5:0] ADDRE, + input [5:0] ADDRF, + input [5:0] ADDRG, + input [5:0] ADDRH, + input DIA, + input DIB, + input DIC, + input DID, + input DIE, + input DIF, + input DIG, + input DIH, + (* clkbuf_sink *) + (* invertible_pin = "IS_WCLK_INVERTED" *) + input WCLK, + input WE +); + parameter [63:0] INIT_A = 64'h0000000000000000; + parameter [63:0] INIT_B = 64'h0000000000000000; + parameter [63:0] INIT_C = 64'h0000000000000000; + parameter [63:0] INIT_D = 64'h0000000000000000; + parameter [63:0] INIT_E = 64'h0000000000000000; + parameter [63:0] INIT_F = 64'h0000000000000000; + parameter [63:0] INIT_G = 64'h0000000000000000; + parameter [63:0] INIT_H = 64'h0000000000000000; + parameter [0:0] IS_WCLK_INVERTED = 1'b0; + reg [63:0] mem_a = INIT_A; + reg [63:0] mem_b = INIT_B; + reg [63:0] mem_c = INIT_C; + reg [63:0] mem_d = INIT_D; + reg [63:0] mem_e = INIT_E; + reg [63:0] mem_f = INIT_F; + reg [63:0] mem_g = INIT_G; + reg [63:0] mem_h = INIT_H; + assign DOA = mem_a[ADDRA]; + assign DOB = mem_b[ADDRB]; + assign DOC = mem_c[ADDRC]; + assign DOD = mem_d[ADDRD]; + assign DOE = mem_e[ADDRE]; + assign DOF = mem_f[ADDRF]; + assign DOG = mem_g[ADDRG]; + assign DOH = mem_h[ADDRH]; + wire clk = WCLK ^ IS_WCLK_INVERTED; + always @(posedge clk) + if (WE) begin + mem_a[ADDRH] <= DIA; + mem_b[ADDRH] <= DIB; + mem_c[ADDRH] <= DIC; + mem_d[ADDRH] <= DID; + mem_e[ADDRH] <= DIE; + mem_f[ADDRH] <= DIF; + mem_g[ADDRH] <= DIG; + mem_h[ADDRH] <= DIH; + end +endmodule + +module RAM32X16DR8 ( + output DOA, + output DOB, + output DOC, + output DOD, + output DOE, + output DOF, + output DOG, + output [1:0] DOH, + input [5:0] ADDRA, ADDRB, ADDRC, ADDRD, ADDRE, ADDRF, ADDRG, + input [4:0] ADDRH, + input [1:0] DIA, + input [1:0] DIB, + input [1:0] DIC, + input [1:0] DID, + input [1:0] DIE, + input [1:0] DIF, + input [1:0] DIG, + input [1:0] DIH, + (* clkbuf_sink *) + (* invertible_pin = "IS_WCLK_INVERTED" *) + input WCLK, + input WE +); + parameter [0:0] IS_WCLK_INVERTED = 1'b0; + reg [63:0] mem_a, mem_b, mem_c, mem_d, mem_e, mem_f, mem_g, mem_h; + assign DOA = mem_a[ADDRA]; + assign DOB = mem_b[ADDRB]; + assign DOC = mem_c[ADDRC]; + assign DOD = mem_d[ADDRD]; + assign DOE = mem_e[ADDRE]; + assign DOF = mem_f[ADDRF]; + assign DOG = mem_g[ADDRG]; + assign DOH = mem_h[2*ADDRH+:2]; + wire clk = WCLK ^ IS_WCLK_INVERTED; + always @(posedge clk) + if (WE) begin + mem_a[2*ADDRH+:2] <= DIA; + mem_b[2*ADDRH+:2] <= DIB; + mem_c[2*ADDRH+:2] <= DIC; + mem_d[2*ADDRH+:2] <= DID; + mem_e[2*ADDRH+:2] <= DIE; + mem_f[2*ADDRH+:2] <= DIF; + mem_g[2*ADDRH+:2] <= DIG; + mem_h[2*ADDRH+:2] <= DIH; + end +endmodule + +module RAM64X8SW ( + output [7:0] O, + input [5:0] A, + input D, + (* clkbuf_sink *) + (* invertible_pin = "IS_WCLK_INVERTED" *) + input WCLK, + input WE, + input [2:0] WSEL +); + parameter [63:0] INIT_A = 64'h0000000000000000; + parameter [63:0] INIT_B = 64'h0000000000000000; + parameter [63:0] INIT_C = 64'h0000000000000000; + parameter [63:0] INIT_D = 64'h0000000000000000; + parameter [63:0] INIT_E = 64'h0000000000000000; + parameter [63:0] INIT_F = 64'h0000000000000000; + parameter [63:0] INIT_G = 64'h0000000000000000; + parameter [63:0] INIT_H = 64'h0000000000000000; + parameter [0:0] IS_WCLK_INVERTED = 1'b0; + reg [63:0] mem_a = INIT_A; + reg [63:0] mem_b = INIT_B; + reg [63:0] mem_c = INIT_C; + reg [63:0] mem_d = INIT_D; + reg [63:0] mem_e = INIT_E; + reg [63:0] mem_f = INIT_F; + reg [63:0] mem_g = INIT_G; + reg [63:0] mem_h = INIT_H; + assign O[7] = mem_a[A]; + assign O[6] = mem_b[A]; + assign O[5] = mem_c[A]; + assign O[4] = mem_d[A]; + assign O[3] = mem_e[A]; + assign O[2] = mem_f[A]; + assign O[1] = mem_g[A]; + assign O[0] = mem_h[A]; + wire clk = WCLK ^ IS_WCLK_INVERTED; + always @(posedge clk) + if (WE) begin + case (WSEL) + 3'b111: mem_a[A] <= D; + 3'b110: mem_b[A] <= D; + 3'b101: mem_c[A] <= D; + 3'b100: mem_d[A] <= D; + 3'b011: mem_e[A] <= D; + 3'b010: mem_f[A] <= D; + 3'b001: mem_g[A] <= D; + 3'b000: mem_h[A] <= D; + endcase + end +endmodule + +// ROM. + +module ROM16X1 ( + output O, + input A0, A1, A2, A3 +); + parameter [15:0] INIT = 16'h0; + assign O = INIT[{A3, A2, A1, A0}]; +endmodule + +module ROM32X1 ( + output O, + input A0, A1, A2, A3, A4 +); + parameter [31:0] INIT = 32'h0; + assign O = INIT[{A4, A3, A2, A1, A0}]; +endmodule + +module ROM64X1 ( + output O, + input A0, A1, A2, A3, A4, A5 +); + parameter [63:0] INIT = 64'h0; + assign O = INIT[{A5, A4, A3, A2, A1, A0}]; +endmodule + +module ROM128X1 ( + output O, + input A0, A1, A2, A3, A4, A5, A6 +); + parameter [127:0] INIT = 128'h0; + assign O = INIT[{A6, A5, A4, A3, A2, A1, A0}]; +endmodule + +module ROM256X1 ( + output O, + input A0, A1, A2, A3, A4, A5, A6, A7 +); + parameter [255:0] INIT = 256'h0; + assign O = INIT[{A7, A6, A5, A4, A3, A2, A1, A0}]; +endmodule + +// Shift registers. + +(* abc9_box, lib_whitebox *) +module SRL16 ( + output Q, + input A0, A1, A2, A3, + (* clkbuf_sink *) + input CLK, + input D +); + parameter [15:0] INIT = 16'h0000; + + reg [15:0] r = INIT; + assign Q = r[{A3,A2,A1,A0}]; + always @(posedge CLK) r <= { r[14:0], D }; + + specify + // Max delay from: https://github.com/SymbiFlow/prjxray-db/blob/34ea6eb08a63d21ec16264ad37a0a7b142ff6031/artix7/timings/CLBLM_R.sdf#L905 + (posedge CLK => (Q : 1'bx)) = 1472; + // Max delay from: https://github.com/SymbiFlow/prjxray-db/blob/34ea6eb08a63d21ec16264ad37a0a7b142ff6031/artix7/timings/CLBLM_R.sdf#L912 + $setup(D , posedge CLK, 173); + (A0 => Q) = 631; + (A1 => Q) = 472; + (A2 => Q) = 407; + (A3 => Q) = 238; + endspecify +endmodule + +(* abc9_box, lib_whitebox *) +module SRL16E ( + output Q, + input A0, A1, A2, A3, CE, + (* clkbuf_sink *) + (* invertible_pin = "IS_CLK_INVERTED" *) + input CLK, + input D +); + parameter [15:0] INIT = 16'h0000; + parameter [0:0] IS_CLK_INVERTED = 1'b0; + + reg [15:0] r = INIT; + assign Q = r[{A3,A2,A1,A0}]; + generate + if (IS_CLK_INVERTED) begin + always @(negedge CLK) if (CE) r <= { r[14:0], D }; + end + else + always @(posedge CLK) if (CE) r <= { r[14:0], D }; + endgenerate + specify + // Max delay from: https://github.com/SymbiFlow/prjxray-db/blob/34ea6eb08a63d21ec16264ad37a0a7b142ff6031/artix7/timings/CLBLM_R.sdf#L912 + $setup(D , posedge CLK &&& !IS_CLK_INVERTED, 173); + $setup(D , negedge CLK &&& IS_CLK_INVERTED, 173); + // Max delay from: https://github.com/SymbiFlow/prjxray-db/blob/34ea6eb08a63d21ec16264ad37a0a7b142ff6031/artix7/timings/CLBLM_R.sdf#L905 + if (!IS_CLK_INVERTED && CE) (posedge CLK => (Q : D)) = 1472; + if ( IS_CLK_INVERTED && CE) (negedge CLK => (Q : D)) = 1472; + // Max delay from: https://github.com/SymbiFlow/prjxray-db/blob/34ea6eb08a63d21ec16264ad37a0a7b142ff6031/artix7/timings/CLBLM_R.sdf#L905 + if (!IS_CLK_INVERTED && CE) (posedge CLK => (Q : 1'bx)) = 1472; + if ( IS_CLK_INVERTED && CE) (negedge CLK => (Q : 1'bx)) = 1472; + (A0 => Q) = 631; + (A1 => Q) = 472; + (A2 => Q) = 407; + (A3 => Q) = 238; + endspecify +endmodule + +(* abc9_box, lib_whitebox *) +module SRLC16 ( + output Q, + output Q15, + input A0, A1, A2, A3, + (* clkbuf_sink *) + input CLK, + input D +); + parameter [15:0] INIT = 16'h0000; + + reg [15:0] r = INIT; + assign Q15 = r[15]; + assign Q = r[{A3,A2,A1,A0}]; + always @(posedge CLK) r <= { r[14:0], D }; + + specify + // Max delay from: https://github.com/SymbiFlow/prjxray-db/blob/34ea6eb08a63d21ec16264ad37a0a7b142ff6031/artix7/timings/CLBLM_R.sdf#L912 + $setup(D , posedge CLK, 173); + // Max delay from: https://github.com/SymbiFlow/prjxray-db/blob/34ea6eb08a63d21ec16264ad37a0a7b142ff6031/artix7/timings/CLBLM_R.sdf#L905 + (posedge CLK => (Q : 1'bx)) = 1472; + // Max delay from: https://github.com/SymbiFlow/prjxray-db/blob/34ea6eb08a63d21ec16264ad37a0a7b142ff6031/artix7/timings/CLBLM_R.sdf#L904 + (posedge CLK => (Q15 : 1'bx)) = 1114; + (A0 => Q) = 631; + (A1 => Q) = 472; + (A2 => Q) = 407; + (A3 => Q) = 238; + endspecify +endmodule + +(* abc9_box, lib_whitebox *) +module SRLC16E ( + output Q, + output Q15, + input A0, A1, A2, A3, CE, + (* clkbuf_sink *) + (* invertible_pin = "IS_CLK_INVERTED" *) + input CLK, + input D +); + parameter [15:0] INIT = 16'h0000; + parameter [0:0] IS_CLK_INVERTED = 1'b0; + + reg [15:0] r = INIT; + assign Q15 = r[15]; + assign Q = r[{A3,A2,A1,A0}]; + generate + if (IS_CLK_INVERTED) begin + always @(negedge CLK) if (CE) r <= { r[14:0], D }; + end + else + always @(posedge CLK) if (CE) r <= { r[14:0], D }; + endgenerate + specify + // Max delay from: https://github.com/SymbiFlow/prjxray-db/blob/34ea6eb08a63d21ec16264ad37a0a7b142ff6031/artix7/timings/CLBLM_R.sdf#L912 + $setup(D , posedge CLK &&& !IS_CLK_INVERTED, 173); + $setup(D , negedge CLK &&& IS_CLK_INVERTED, 173); + // https://github.com/SymbiFlow/prjxray-db/blob/23c8b0851f979f0799318eaca90174413a46b257/artix7/timings/slicel.sdf#L248 + $setup(CE, posedge CLK &&& !IS_CLK_INVERTED, 109); + $setup(CE, negedge CLK &&& IS_CLK_INVERTED, 109); + // Max delay from: https://github.com/SymbiFlow/prjxray-db/blob/34ea6eb08a63d21ec16264ad37a0a7b142ff6031/artix7/timings/CLBLM_R.sdf#L905 + if (!IS_CLK_INVERTED && CE) (posedge CLK => (Q : D)) = 1472; + if ( IS_CLK_INVERTED && CE) (negedge CLK => (Q : D)) = 1472; + // Max delay from: https://github.com/SymbiFlow/prjxray-db/blob/34ea6eb08a63d21ec16264ad37a0a7b142ff6031/artix7/timings/CLBLM_R.sdf#L904 + if (!IS_CLK_INVERTED && CE) (posedge CLK => (Q15 : 1'bx)) = 1114; + if ( IS_CLK_INVERTED && CE) (negedge CLK => (Q15 : 1'bx)) = 1114; + (A0 => Q) = 631; + (A1 => Q) = 472; + (A2 => Q) = 407; + (A3 => Q) = 238; + endspecify +endmodule + +(* abc9_box, lib_whitebox *) +module SRLC32E ( + output Q, + output Q31, + input [4:0] A, + input CE, + (* clkbuf_sink *) + (* invertible_pin = "IS_CLK_INVERTED" *) + input CLK, + input D +); + parameter [31:0] INIT = 32'h00000000; + parameter [0:0] IS_CLK_INVERTED = 1'b0; + + reg [31:0] r = INIT; + assign Q31 = r[31]; + assign Q = r[A]; + generate + if (IS_CLK_INVERTED) begin + always @(negedge CLK) if (CE) r <= { r[30:0], D }; + end + else + always @(posedge CLK) if (CE) r <= { r[30:0], D }; + endgenerate + specify + // Max delay from: https://github.com/SymbiFlow/prjxray-db/blob/34ea6eb08a63d21ec16264ad37a0a7b142ff6031/artix7/timings/CLBLM_R.sdf#L912 + $setup(D , posedge CLK &&& !IS_CLK_INVERTED, 173); + $setup(D , negedge CLK &&& IS_CLK_INVERTED, 173); + // https://github.com/SymbiFlow/prjxray-db/blob/23c8b0851f979f0799318eaca90174413a46b257/artix7/timings/slicel.sdf#L248 + $setup(CE, posedge CLK &&& !IS_CLK_INVERTED, 109); + $setup(CE, negedge CLK &&& IS_CLK_INVERTED, 109); + // Max delay from: https://github.com/SymbiFlow/prjxray-db/blob/34ea6eb08a63d21ec16264ad37a0a7b142ff6031/artix7/timings/CLBLM_R.sdf#L905 + if (!IS_CLK_INVERTED && CE) (posedge CLK => (Q : 1'bx)) = 1472; + if ( IS_CLK_INVERTED && CE) (negedge CLK => (Q : 1'bx)) = 1472; + // Max delay from: https://github.com/SymbiFlow/prjxray-db/blob/34ea6eb08a63d21ec16264ad37a0a7b142ff6031/artix7/timings/CLBLM_R.sdf#L904 + if (!IS_CLK_INVERTED && CE) (posedge CLK => (Q31 : 1'bx)) = 1114; + if ( IS_CLK_INVERTED && CE) (negedge CLK => (Q31 : 1'bx)) = 1114; + (A[0] => Q) = 642; + (A[1] => Q) = 631; + (A[2] => Q) = 472; + (A[3] => Q) = 407; + (A[4] => Q) = 238; + endspecify +endmodule + +module CFGLUT5 ( + output CDO, + output O5, + output O6, + input I4, + input I3, + input I2, + input I1, + input I0, + input CDI, + input CE, + (* clkbuf_sink *) + (* invertible_pin = "IS_CLK_INVERTED" *) + input CLK +); + parameter [31:0] INIT = 32'h00000000; + parameter [0:0] IS_CLK_INVERTED = 1'b0; + wire clk = CLK ^ IS_CLK_INVERTED; + reg [31:0] r = INIT; + assign CDO = r[31]; + assign O5 = r[{1'b0, I3, I2, I1, I0}]; + assign O6 = r[{I4, I3, I2, I1, I0}]; + always @(posedge clk) if (CE) r <= {r[30:0], CDI}; +endmodule + +// DSP + +// Virtex 2, Virtex 2 Pro, Spartan 3. + +// Asynchronous mode. + +module MULT18X18 ( + input signed [17:0] A, + input signed [17:0] B, + output signed [35:0] P +); + +assign P = A * B; + +endmodule + +// Synchronous mode. + +module MULT18X18S ( + input signed [17:0] A, + input signed [17:0] B, + output reg signed [35:0] P, + (* clkbuf_sink *) + input C, + input CE, + input R +); + +always @(posedge C) + if (R) + P <= 0; + else if (CE) + P <= A * B; + +endmodule + +// Spartan 3E, Spartan 3A. + +module MULT18X18SIO ( + input signed [17:0] A, + input signed [17:0] B, + output signed [35:0] P, + (* clkbuf_sink *) + input CLK, + input CEA, + input CEB, + input CEP, + input RSTA, + input RSTB, + input RSTP, + input signed [17:0] BCIN, + output signed [17:0] BCOUT +); + +parameter integer AREG = 1; +parameter integer BREG = 1; +parameter B_INPUT = "DIRECT"; +parameter integer PREG = 1; + +// The multiplier. +wire signed [35:0] P_MULT; +wire signed [17:0] A_MULT; +wire signed [17:0] B_MULT; +assign P_MULT = A_MULT * B_MULT; + +// The cascade output. +assign BCOUT = B_MULT; + +// The B input multiplexer. +wire signed [17:0] B_MUX; +assign B_MUX = (B_INPUT == "DIRECT") ? B : BCIN; + +// The registers. +reg signed [17:0] A_REG; +reg signed [17:0] B_REG; +reg signed [35:0] P_REG; + +initial begin + A_REG = 0; + B_REG = 0; + P_REG = 0; +end + +always @(posedge CLK) begin + if (RSTA) + A_REG <= 0; + else if (CEA) + A_REG <= A; + + if (RSTB) + B_REG <= 0; + else if (CEB) + B_REG <= B_MUX; + + if (RSTP) + P_REG <= 0; + else if (CEP) + P_REG <= P_MULT; +end + +// The register enables. +assign A_MULT = (AREG == 1) ? A_REG : A; +assign B_MULT = (BREG == 1) ? B_REG : B_MUX; +assign P = (PREG == 1) ? P_REG : P_MULT; + +endmodule + +// Spartan 3A DSP. + +module DSP48A ( + input signed [17:0] A, + input signed [17:0] B, + input signed [47:0] C, + input signed [17:0] D, + input signed [47:0] PCIN, + input CARRYIN, + input [7:0] OPMODE, + output signed [47:0] P, + output signed [17:0] BCOUT, + output signed [47:0] PCOUT, + output CARRYOUT, + (* clkbuf_sink *) + input CLK, + input CEA, + input CEB, + input CEC, + input CED, + input CEM, + input CECARRYIN, + input CEOPMODE, + input CEP, + input RSTA, + input RSTB, + input RSTC, + input RSTD, + input RSTM, + input RSTCARRYIN, + input RSTOPMODE, + input RSTP +); + +parameter integer A0REG = 0; +parameter integer A1REG = 1; +parameter integer B0REG = 0; +parameter integer B1REG = 1; +parameter integer CREG = 1; +parameter integer DREG = 1; +parameter integer MREG = 1; +parameter integer CARRYINREG = 1; +parameter integer OPMODEREG = 1; +parameter integer PREG = 1; +parameter CARRYINSEL = "CARRYIN"; +parameter RSTTYPE = "SYNC"; + +// This is a strict subset of Spartan 6 -- reuse its model. + +/* verilator lint_off PINMISSING */ +DSP48A1 #( + .A0REG(A0REG), + .A1REG(A1REG), + .B0REG(B0REG), + .B1REG(B1REG), + .CREG(CREG), + .DREG(DREG), + .MREG(MREG), + .CARRYINREG(CARRYINREG), + .CARRYOUTREG(0), + .OPMODEREG(OPMODEREG), + .PREG(PREG), + .CARRYINSEL(CARRYINSEL), + .RSTTYPE(RSTTYPE) +) upgrade ( + .A(A), + .B(B), + .C(C), + .D(D), + .PCIN(PCIN), + .CARRYIN(CARRYIN), + .OPMODE(OPMODE), + // M unconnected + .P(P), + .BCOUT(BCOUT), + .PCOUT(PCOUT), + .CARRYOUT(CARRYOUT), + // CARRYOUTF unconnected + .CLK(CLK), + .CEA(CEA), + .CEB(CEB), + .CEC(CEC), + .CED(CED), + .CEM(CEM), + .CECARRYIN(CECARRYIN), + .CEOPMODE(CEOPMODE), + .CEP(CEP), + .RSTA(RSTA), + .RSTB(RSTB), + .RSTC(RSTC), + .RSTD(RSTD), + .RSTM(RSTM), + .RSTCARRYIN(RSTCARRYIN), + .RSTOPMODE(RSTOPMODE), + .RSTP(RSTP) +); +/* verilator lint_on PINMISSING */ + +endmodule + +// Spartan 6. + +module DSP48A1 ( + input signed [17:0] A, + input signed [17:0] B, + input signed [47:0] C, + input signed [17:0] D, + input signed [47:0] PCIN, + input CARRYIN, + input [7:0] OPMODE, + output signed [35:0] M, + output signed [47:0] P, + output signed [17:0] BCOUT, + output signed [47:0] PCOUT, + output CARRYOUT, + output CARRYOUTF, + (* clkbuf_sink *) + input CLK, + input CEA, + input CEB, + input CEC, + input CED, + input CEM, + input CECARRYIN, + input CEOPMODE, + input CEP, + input RSTA, + input RSTB, + input RSTC, + input RSTD, + input RSTM, + input RSTCARRYIN, + input RSTOPMODE, + input RSTP +); + +parameter integer A0REG = 0; +parameter integer A1REG = 1; +parameter integer B0REG = 0; +parameter integer B1REG = 1; +parameter integer CREG = 1; +parameter integer DREG = 1; +parameter integer MREG = 1; +parameter integer CARRYINREG = 1; +parameter integer CARRYOUTREG = 1; +parameter integer OPMODEREG = 1; +parameter integer PREG = 1; +parameter CARRYINSEL = "OPMODE5"; +parameter RSTTYPE = "SYNC"; + +wire signed [35:0] M_MULT; +wire signed [47:0] P_IN; +wire signed [17:0] A0_OUT; +wire signed [17:0] B0_OUT; +wire signed [17:0] A1_OUT; +wire signed [17:0] B1_OUT; +wire signed [17:0] B1_IN; +wire signed [47:0] C_OUT; +wire signed [17:0] D_OUT; +wire signed [7:0] OPMODE_OUT; +wire CARRYIN_OUT; +wire CARRYOUT_IN; +wire CARRYIN_IN; +reg signed [47:0] XMUX; +reg signed [47:0] ZMUX; + +// The registers. +reg signed [17:0] A0_REG; +reg signed [17:0] A1_REG; +reg signed [17:0] B0_REG; +reg signed [17:0] B1_REG; +reg signed [47:0] C_REG; +reg signed [17:0] D_REG; +reg signed [35:0] M_REG; +reg signed [47:0] P_REG; +reg [7:0] OPMODE_REG; +reg CARRYIN_REG; +reg CARRYOUT_REG; + +initial begin + A0_REG = 0; + A1_REG = 0; + B0_REG = 0; + B1_REG = 0; + C_REG = 0; + D_REG = 0; + M_REG = 0; + P_REG = 0; + OPMODE_REG = 0; + CARRYIN_REG = 0; + CARRYOUT_REG = 0; +end + +generate + +if (RSTTYPE == "SYNC") begin + always @(posedge CLK) begin + if (RSTA) begin + A0_REG <= 0; + A1_REG <= 0; + end else if (CEA) begin + A0_REG <= A; + A1_REG <= A0_OUT; + end + end + + always @(posedge CLK) begin + if (RSTB) begin + B0_REG <= 0; + B1_REG <= 0; + end else if (CEB) begin + B0_REG <= B; + B1_REG <= B1_IN; + end + end + + always @(posedge CLK) begin + if (RSTC) begin + C_REG <= 0; + end else if (CEC) begin + C_REG <= C; + end + end + + always @(posedge CLK) begin + if (RSTD) begin + D_REG <= 0; + end else if (CED) begin + D_REG <= D; + end + end + + always @(posedge CLK) begin + if (RSTM) begin + M_REG <= 0; + end else if (CEM) begin + M_REG <= M_MULT; + end + end + + always @(posedge CLK) begin + if (RSTP) begin + P_REG <= 0; + end else if (CEP) begin + P_REG <= P_IN; + end + end + + always @(posedge CLK) begin + if (RSTOPMODE) begin + OPMODE_REG <= 0; + end else if (CEOPMODE) begin + OPMODE_REG <= OPMODE; + end + end + + always @(posedge CLK) begin + if (RSTCARRYIN) begin + CARRYIN_REG <= 0; + CARRYOUT_REG <= 0; + end else if (CECARRYIN) begin + CARRYIN_REG <= CARRYIN_IN; + CARRYOUT_REG <= CARRYOUT_IN; + end + end +end else begin + always @(posedge CLK, posedge RSTA) begin + if (RSTA) begin + A0_REG <= 0; + A1_REG <= 0; + end else if (CEA) begin + A0_REG <= A; + A1_REG <= A0_OUT; + end + end + + always @(posedge CLK, posedge RSTB) begin + if (RSTB) begin + B0_REG <= 0; + B1_REG <= 0; + end else if (CEB) begin + B0_REG <= B; + B1_REG <= B1_IN; + end + end + + always @(posedge CLK, posedge RSTC) begin + if (RSTC) begin + C_REG <= 0; + end else if (CEC) begin + C_REG <= C; + end + end + + always @(posedge CLK, posedge RSTD) begin + if (RSTD) begin + D_REG <= 0; + end else if (CED) begin + D_REG <= D; + end + end + + always @(posedge CLK, posedge RSTM) begin + if (RSTM) begin + M_REG <= 0; + end else if (CEM) begin + M_REG <= M_MULT; + end + end + + always @(posedge CLK, posedge RSTP) begin + if (RSTP) begin + P_REG <= 0; + end else if (CEP) begin + P_REG <= P_IN; + end + end + + always @(posedge CLK, posedge RSTOPMODE) begin + if (RSTOPMODE) begin + OPMODE_REG <= 0; + end else if (CEOPMODE) begin + OPMODE_REG <= OPMODE; + end + end + + always @(posedge CLK, posedge RSTCARRYIN) begin + if (RSTCARRYIN) begin + CARRYIN_REG <= 0; + CARRYOUT_REG <= 0; + end else if (CECARRYIN) begin + CARRYIN_REG <= CARRYIN_IN; + CARRYOUT_REG <= CARRYOUT_IN; + end + end +end + +endgenerate + +// The register enables. +assign A0_OUT = (A0REG == 1) ? A0_REG : A; +assign A1_OUT = (A1REG == 1) ? A1_REG : A0_OUT; +assign B0_OUT = (B0REG == 1) ? B0_REG : B; +assign B1_OUT = (B1REG == 1) ? B1_REG : B1_IN; +assign C_OUT = (CREG == 1) ? C_REG : C; +assign D_OUT = (DREG == 1) ? D_REG : D; +assign M = (MREG == 1) ? M_REG : M_MULT; +assign P = (PREG == 1) ? P_REG : P_IN; +assign OPMODE_OUT = (OPMODEREG == 1) ? OPMODE_REG : OPMODE; +assign CARRYIN_OUT = (CARRYINREG == 1) ? CARRYIN_REG : CARRYIN_IN; +assign CARRYOUT = (CARRYOUTREG == 1) ? CARRYOUT_REG : CARRYOUT_IN; +assign CARRYOUTF = CARRYOUT; + +// The pre-adder. +wire signed [17:0] PREADDER; +assign B1_IN = OPMODE_OUT[4] ? PREADDER : B0_OUT; +assign PREADDER = OPMODE_OUT[6] ? D_OUT - B0_OUT : D_OUT + B0_OUT; + +// The multiplier. +assign M_MULT = A1_OUT * B1_OUT; + +// The carry in selection. +assign CARRYIN_IN = (CARRYINSEL == "OPMODE5") ? OPMODE_OUT[5] : CARRYIN; + +// The post-adder inputs. +always @* begin + case (OPMODE_OUT[1:0]) + 2'b00: XMUX <= 0; + 2'b01: XMUX <= M; + 2'b10: XMUX <= P; + 2'b11: XMUX <= {D_OUT[11:0], A1_OUT, B1_OUT}; + default: XMUX <= 48'hxxxxxxxxxxxx; + endcase +end + +always @* begin + case (OPMODE_OUT[3:2]) + 2'b00: ZMUX <= 0; + 2'b01: ZMUX <= PCIN; + 2'b10: ZMUX <= P; + 2'b11: ZMUX <= C_OUT; + default: ZMUX <= 48'hxxxxxxxxxxxx; + endcase +end + +// The post-adder. +wire signed [48:0] X_EXT; +wire signed [48:0] Z_EXT; +assign X_EXT = {1'b0, XMUX}; +assign Z_EXT = {1'b0, ZMUX}; +assign {CARRYOUT_IN, P_IN} = OPMODE_OUT[7] ? (Z_EXT - (X_EXT + CARRYIN_OUT)) : (Z_EXT + X_EXT + CARRYIN_OUT); + +// Cascade outputs. +assign BCOUT = B1_OUT; +assign PCOUT = P; + +endmodule + +module DSP48 ( + input signed [17:0] A, + input signed [17:0] B, + input signed [47:0] C, + input signed [17:0] BCIN, + input signed [47:0] PCIN, + input CARRYIN, + input [6:0] OPMODE, + input SUBTRACT, + input [1:0] CARRYINSEL, + output signed [47:0] P, + output signed [17:0] BCOUT, + output signed [47:0] PCOUT, + (* clkbuf_sink *) + input CLK, + input CEA, + input CEB, + input CEC, + input CEM, + input CECARRYIN, + input CECINSUB, + input CECTRL, + input CEP, + input RSTA, + input RSTB, + input RSTC, + input RSTM, + input RSTCARRYIN, + input RSTCTRL, + input RSTP +); + +parameter integer AREG = 1; +parameter integer BREG = 1; +parameter integer CREG = 1; +parameter integer MREG = 1; +parameter integer PREG = 1; +parameter integer CARRYINREG = 1; +parameter integer CARRYINSELREG = 1; +parameter integer OPMODEREG = 1; +parameter integer SUBTRACTREG = 1; +parameter B_INPUT = "DIRECT"; +parameter LEGACY_MODE = "MULT18X18S"; + +wire signed [17:0] A_OUT; +wire signed [17:0] B_OUT; +wire signed [47:0] C_OUT; +wire signed [35:0] M_MULT; +wire signed [35:0] M_OUT; +wire signed [47:0] P_IN; +wire [6:0] OPMODE_OUT; +wire [1:0] CARRYINSEL_OUT; +wire CARRYIN_OUT; +wire SUBTRACT_OUT; +reg INT_CARRYIN_XY; +reg INT_CARRYIN_Z; +reg signed [47:0] XMUX; +reg signed [47:0] YMUX; +wire signed [47:0] XYMUX; +reg signed [47:0] ZMUX; +reg CIN; + +// The B input multiplexer. +wire signed [17:0] B_MUX; +assign B_MUX = (B_INPUT == "DIRECT") ? B : BCIN; + +// The cascade output. +assign BCOUT = B_OUT; +assign PCOUT = P; + +// The registers. +reg signed [17:0] A0_REG; +reg signed [17:0] A1_REG; +reg signed [17:0] B0_REG; +reg signed [17:0] B1_REG; +reg signed [47:0] C_REG; +reg signed [35:0] M_REG; +reg signed [47:0] P_REG; +reg [6:0] OPMODE_REG; +reg [1:0] CARRYINSEL_REG; +reg SUBTRACT_REG; +reg CARRYIN_REG; +reg INT_CARRYIN_XY_REG; + +initial begin + A0_REG = 0; + A1_REG = 0; + B0_REG = 0; + B1_REG = 0; + C_REG = 0; + M_REG = 0; + P_REG = 0; + OPMODE_REG = 0; + CARRYINSEL_REG = 0; + SUBTRACT_REG = 0; + CARRYIN_REG = 0; + INT_CARRYIN_XY_REG = 0; +end + +always @(posedge CLK) begin + if (RSTA) begin + A0_REG <= 0; + A1_REG <= 0; + end else if (CEA) begin + A0_REG <= A; + A1_REG <= A0_REG; + end + if (RSTB) begin + B0_REG <= 0; + B1_REG <= 0; + end else if (CEB) begin + B0_REG <= B_MUX; + B1_REG <= B0_REG; + end + if (RSTC) begin + C_REG <= 0; + end else if (CEC) begin + C_REG <= C; + end + if (RSTM) begin + M_REG <= 0; + end else if (CEM) begin + M_REG <= M_MULT; + end + if (RSTP) begin + P_REG <= 0; + end else if (CEP) begin + P_REG <= P_IN; + end + if (RSTCTRL) begin + OPMODE_REG <= 0; + CARRYINSEL_REG <= 0; + SUBTRACT_REG <= 0; + end else begin + if (CECTRL) begin + OPMODE_REG <= OPMODE; + CARRYINSEL_REG <= CARRYINSEL; + end + if (CECINSUB) + SUBTRACT_REG <= SUBTRACT; + end + if (RSTCARRYIN) begin + CARRYIN_REG <= 0; + INT_CARRYIN_XY_REG <= 0; + end else begin + if (CECINSUB) + CARRYIN_REG <= CARRYIN; + if (CECARRYIN) + INT_CARRYIN_XY_REG <= INT_CARRYIN_XY; + end +end + +// The register enables. +assign A_OUT = (AREG == 2) ? A1_REG : (AREG == 1) ? A0_REG : A; +assign B_OUT = (BREG == 2) ? B1_REG : (BREG == 1) ? B0_REG : B_MUX; +assign C_OUT = (CREG == 1) ? C_REG : C; +assign M_OUT = (MREG == 1) ? M_REG : M_MULT; +assign P = (PREG == 1) ? P_REG : P_IN; +assign OPMODE_OUT = (OPMODEREG == 1) ? OPMODE_REG : OPMODE; +assign SUBTRACT_OUT = (SUBTRACTREG == 1) ? SUBTRACT_REG : SUBTRACT; +assign CARRYINSEL_OUT = (CARRYINSELREG == 1) ? CARRYINSEL_REG : CARRYINSEL; +assign CARRYIN_OUT = (CARRYINREG == 1) ? CARRYIN_REG : CARRYIN; + +// The multiplier. +assign M_MULT = A_OUT * B_OUT; + +// The post-adder inputs. +always @* begin + case (OPMODE_OUT[1:0]) + 2'b00: XMUX <= 0; + 2'b10: XMUX <= P; + 2'b11: XMUX <= {{12{A_OUT[17]}}, A_OUT, B_OUT}; + default: XMUX <= 48'hxxxxxxxxxxxx; + endcase + case (OPMODE_OUT[1:0]) + 2'b01: INT_CARRYIN_XY <= A_OUT[17] ~^ B_OUT[17]; + 2'b11: INT_CARRYIN_XY <= ~A_OUT[17]; + // TODO: not tested in hardware. + default: INT_CARRYIN_XY <= A_OUT[17] ~^ B_OUT[17]; + endcase +end + +always @* begin + case (OPMODE_OUT[3:2]) + 2'b00: YMUX <= 0; + 2'b11: YMUX <= C_OUT; + default: YMUX <= 48'hxxxxxxxxxxxx; + endcase +end + +assign XYMUX = (OPMODE_OUT[3:0] == 4'b0101) ? M_OUT : (XMUX + YMUX); + +always @* begin + case (OPMODE_OUT[6:4]) + 3'b000: ZMUX <= 0; + 3'b001: ZMUX <= PCIN; + 3'b010: ZMUX <= P; + 3'b011: ZMUX <= C_OUT; + 3'b101: ZMUX <= {{17{PCIN[47]}}, PCIN[47:17]}; + 3'b110: ZMUX <= {{17{P[47]}}, P[47:17]}; + default: ZMUX <= 48'hxxxxxxxxxxxx; + endcase + // TODO: check how all this works on actual hw. + if (OPMODE_OUT[1:0] == 2'b10) + INT_CARRYIN_Z <= ~P[47]; + else + case (OPMODE_OUT[6:4]) + 3'b001: INT_CARRYIN_Z <= ~PCIN[47]; + 3'b010: INT_CARRYIN_Z <= ~P[47]; + 3'b101: INT_CARRYIN_Z <= ~PCIN[47]; + 3'b110: INT_CARRYIN_Z <= ~P[47]; + default: INT_CARRYIN_Z <= 1'bx; + endcase +end + +always @* begin + case (CARRYINSEL_OUT) + 2'b00: CIN <= CARRYIN_OUT; + 2'b01: CIN <= INT_CARRYIN_Z; + 2'b10: CIN <= INT_CARRYIN_XY; + 2'b11: CIN <= INT_CARRYIN_XY_REG; + default: CIN <= 1'bx; + endcase +end + +// The post-adder. +assign P_IN = SUBTRACT_OUT ? (ZMUX - (XYMUX + CIN)) : (ZMUX + XYMUX + CIN); + +endmodule + +// TODO: DSP48E (Virtex 5). + +// Virtex 6, Series 7. + +`ifdef YOSYS +(* abc9_box=!(PREG || AREG || ADREG || BREG || CREG || DREG || MREG) +`ifdef ALLOW_WHITEBOX_DSP48E1 + // Do not make DSP48E1 a whitebox for ABC9 even if fully combinatorial, since it is a big complex block + , lib_whitebox=!(PREG || AREG || ADREG || BREG || CREG || DREG || MREG || INMODEREG || OPMODEREG || ALUMODEREG || CARRYINREG || CARRYINSELREG) +`endif +*) +`endif +module DSP48E1 ( + output [29:0] ACOUT, + output [17:0] BCOUT, + output reg CARRYCASCOUT, + output reg [3:0] CARRYOUT, + output reg MULTSIGNOUT, + output OVERFLOW, + output reg signed [47:0] P, + output reg PATTERNBDETECT, + output reg PATTERNDETECT, + output [47:0] PCOUT, + output UNDERFLOW, + input signed [29:0] A, + input [29:0] ACIN, + input [3:0] ALUMODE, + input signed [17:0] B, + input [17:0] BCIN, + input [47:0] C, + input CARRYCASCIN, + input CARRYIN, + input [2:0] CARRYINSEL, + input CEA1, + input CEA2, + input CEAD, + input CEALUMODE, + input CEB1, + input CEB2, + input CEC, + input CECARRYIN, + input CECTRL, + input CED, + input CEINMODE, + input CEM, + input CEP, + (* clkbuf_sink *) input CLK, + input [24:0] D, + input [4:0] INMODE, + input MULTSIGNIN, + input [6:0] OPMODE, + input [47:0] PCIN, + input RSTA, + input RSTALLCARRYIN, + input RSTALUMODE, + input RSTB, + input RSTC, + input RSTCTRL, + input RSTD, + input RSTINMODE, + input RSTM, + input RSTP +); + parameter integer ACASCREG = 1; + parameter integer ADREG = 1; + parameter integer ALUMODEREG = 1; + parameter integer AREG = 1; + parameter AUTORESET_PATDET = "NO_RESET"; + parameter A_INPUT = "DIRECT"; + parameter integer BCASCREG = 1; + parameter integer BREG = 1; + parameter B_INPUT = "DIRECT"; + parameter integer CARRYINREG = 1; + parameter integer CARRYINSELREG = 1; + parameter integer CREG = 1; + parameter integer DREG = 1; + parameter integer INMODEREG = 1; + parameter integer MREG = 1; + parameter integer OPMODEREG = 1; + parameter integer PREG = 1; + parameter SEL_MASK = "MASK"; + parameter SEL_PATTERN = "PATTERN"; + parameter USE_DPORT = "FALSE"; + parameter USE_MULT = "MULTIPLY"; + parameter USE_PATTERN_DETECT = "NO_PATDET"; + parameter USE_SIMD = "ONE48"; + parameter [47:0] MASK = 48'h3FFFFFFFFFFF; + parameter [47:0] PATTERN = 48'h000000000000; + parameter [3:0] IS_ALUMODE_INVERTED = 4'b0; + parameter [0:0] IS_CARRYIN_INVERTED = 1'b0; + parameter [0:0] IS_CLK_INVERTED = 1'b0; + parameter [4:0] IS_INMODE_INVERTED = 5'b0; + parameter [6:0] IS_OPMODE_INVERTED = 7'b0; + +`ifdef YOSYS + function integer \A.required ; + begin + if (AREG != 0) \A.required = 254; + else if (USE_MULT == "MULTIPLY" && USE_DPORT == "FALSE") begin + if (MREG != 0) \A.required = 1416; + else if (PREG != 0) \A.required = (USE_PATTERN_DETECT != "NO_PATDET" ? 3030 : 2739) ; + end + else if (USE_MULT == "MULTIPLY" && USE_DPORT == "TRUE") begin + // Worst-case from ADREG and MREG + if (MREG != 0) \A.required = 2400; + else if (ADREG != 0) \A.required = 1283; + else if (PREG != 0) \A.required = 3723; + else if (PREG != 0) \A.required = (USE_PATTERN_DETECT != "NO_PATDET" ? 4014 : 3723) ; + end + else if (USE_MULT == "NONE" && USE_DPORT == "FALSE") begin + if (PREG != 0) \A.required = (USE_PATTERN_DETECT != "NO_PATDET" ? 1730 : 1441) ; + end + end + endfunction + function integer \B.required ; + begin + if (BREG != 0) \B.required = 324; + else if (MREG != 0) \B.required = 1285; + else if (USE_MULT == "MULTIPLY" && USE_DPORT == "FALSE") begin + if (PREG != 0) \B.required = (USE_PATTERN_DETECT != "NO_PATDET" ? 2898 : 2608) ; + end + else if (USE_MULT == "MULTIPLY" && USE_DPORT == "TRUE") begin + if (PREG != 0) \B.required = (USE_PATTERN_DETECT != "NO_PATDET" ? 2898 : 2608) ; + end + else if (USE_MULT == "NONE" && USE_DPORT == "FALSE") begin + if (PREG != 0) \B.required = (USE_PATTERN_DETECT != "NO_PATDET" ? 1718 : 1428) ; + end + end + endfunction + function integer \C.required ; + begin + if (CREG != 0) \C.required = 168; + else if (PREG != 0) \C.required = (USE_PATTERN_DETECT != "NO_PATDET" ? 1534 : 1244) ; + end + endfunction + function integer \D.required ; + begin + if (USE_MULT == "MULTIPLY" && USE_DPORT == "FALSE") begin + end + else if (USE_MULT == "MULTIPLY" && USE_DPORT == "TRUE") begin + if (DREG != 0) \D.required = 248; + else if (ADREG != 0) \D.required = 1195; + else if (MREG != 0) \D.required = 2310; + else if (PREG != 0) \D.required = (USE_PATTERN_DETECT != "NO_PATDET" ? 3925 : 3635) ; + end + else if (USE_MULT == "NONE" && USE_DPORT == "FALSE") begin + end + end + endfunction + function integer \P.arrival ; + begin + if (USE_MULT == "MULTIPLY" && USE_DPORT == "FALSE") begin + if (PREG != 0) \P.arrival = 329; + // Worst-case from CREG and MREG + else if (CREG != 0) \P.arrival = 1687; + else if (MREG != 0) \P.arrival = 1671; + // Worst-case from AREG and BREG + else if (AREG != 0) \P.arrival = 2952; + else if (BREG != 0) \P.arrival = 2813; + end + else if (USE_MULT == "MULTIPLY" && USE_DPORT == "TRUE") begin + if (PREG != 0) \P.arrival = 329; + // Worst-case from CREG and MREG + else if (CREG != 0) \P.arrival = 1687; + else if (MREG != 0) \P.arrival = 1671; + // Worst-case from AREG, ADREG, BREG, DREG + else if (AREG != 0) \P.arrival = 3935; + else if (DREG != 0) \P.arrival = 3908; + else if (ADREG != 0) \P.arrival = 2958; + else if (BREG != 0) \P.arrival = 2813; + end + else if (USE_MULT == "NONE" && USE_DPORT == "FALSE") begin + if (PREG != 0) \P.arrival = 329; + // Worst-case from AREG, BREG, CREG + else if (CREG != 0) \P.arrival = 1687; + else if (AREG != 0) \P.arrival = 1632; + else if (BREG != 0) \P.arrival = 1616; + end + end + endfunction + function integer \PCOUT.arrival ; + begin + if (USE_MULT == "MULTIPLY" && USE_DPORT == "FALSE") begin + if (PREG != 0) \PCOUT.arrival = 435; + // Worst-case from CREG and MREG + else if (CREG != 0) \PCOUT.arrival = 1835; + else if (MREG != 0) \PCOUT.arrival = 1819; + // Worst-case from AREG and BREG + else if (AREG != 0) \PCOUT.arrival = 3098; + else if (BREG != 0) \PCOUT.arrival = 2960; + end + else if (USE_MULT == "MULTIPLY" && USE_DPORT == "TRUE") begin + if (PREG != 0) \PCOUT.arrival = 435; + // Worst-case from CREG and MREG + else if (CREG != 0) \PCOUT.arrival = 1835; + else if (MREG != 0) \PCOUT.arrival = 1819; + // Worst-case from AREG, ADREG, BREG, DREG + else if (AREG != 0) \PCOUT.arrival = 4083; + else if (DREG != 0) \PCOUT.arrival = 4056; + else if (BREG != 0) \PCOUT.arrival = 2960; + else if (ADREG != 0) \PCOUT.arrival = 2859; + end + else if (USE_MULT == "NONE" && USE_DPORT == "FALSE") begin + if (PREG != 0) \PCOUT.arrival = 435; + // Worst-case from AREG, BREG, CREG + else if (CREG != 0) \PCOUT.arrival = 1835; + else if (AREG != 0) \PCOUT.arrival = 1780; + else if (BREG != 0) \PCOUT.arrival = 1765; + end + end + endfunction + function integer \A.P.comb ; + begin + if (USE_MULT == "MULTIPLY" && USE_DPORT == "FALSE") \A.P.comb = 2823; + else if (USE_MULT == "MULTIPLY" && USE_DPORT == "TRUE") \A.P.comb = 3806; + else if (USE_MULT == "NONE" && USE_DPORT == "FALSE") \A.P.comb = 1523; + end + endfunction + function integer \A.PCOUT.comb ; + begin + if (USE_MULT == "MULTIPLY" && USE_DPORT == "FALSE") \A.PCOUT.comb = 2970; + else if (USE_MULT == "MULTIPLY" && USE_DPORT == "TRUE") \A.PCOUT.comb = 3954; + else if (USE_MULT == "NONE" && USE_DPORT == "FALSE") \A.PCOUT.comb = 1671; + end + endfunction + function integer \B.P.comb ; + begin + if (USE_MULT == "MULTIPLY" && USE_DPORT == "FALSE") \B.P.comb = 2690; + else if (USE_MULT == "MULTIPLY" && USE_DPORT == "TRUE") \B.P.comb = 2690; + else if (USE_MULT == "NONE" && USE_DPORT == "FALSE") \B.P.comb = 1509; + end + endfunction + function integer \B.PCOUT.comb ; + begin + if (USE_MULT == "MULTIPLY" && USE_DPORT == "FALSE") \B.PCOUT.comb = 2838; + else if (USE_MULT == "MULTIPLY" && USE_DPORT == "TRUE") \B.PCOUT.comb = 2838; + else if (USE_MULT == "NONE" && USE_DPORT == "FALSE") \B.PCOUT.comb = 1658; + end + endfunction + function integer \C.P.comb ; + begin + if (USE_MULT == "MULTIPLY" && USE_DPORT == "FALSE") \C.P.comb = 1325; + else if (USE_MULT == "MULTIPLY" && USE_DPORT == "TRUE") \C.P.comb = 1325; + else if (USE_MULT == "NONE" && USE_DPORT == "FALSE") \C.P.comb = 1325; + end + endfunction + function integer \C.PCOUT.comb ; + begin + if (USE_MULT == "MULTIPLY" && USE_DPORT == "FALSE") \C.PCOUT.comb = 1474; + else if (USE_MULT == "MULTIPLY" && USE_DPORT == "TRUE") \C.PCOUT.comb = 1474; + else if (USE_MULT == "NONE" && USE_DPORT == "FALSE") \C.PCOUT.comb = 1474; + end + endfunction + function integer \D.P.comb ; + begin + if (USE_MULT == "MULTIPLY" && USE_DPORT == "TRUE") \D.P.comb = 3717; + end + endfunction + function integer \D.PCOUT.comb ; + begin + if (USE_MULT == "MULTIPLY" && USE_DPORT == "TRUE") \D.PCOUT.comb = 3700; + end + endfunction + + generate + if (PREG == 0 && MREG == 0 && AREG == 0 && ADREG == 0) + specify + (A *> P) = \A.P.comb (); + (A *> PCOUT) = \A.PCOUT.comb (); + endspecify + else + specify + $setup(A, posedge CLK &&& !IS_CLK_INVERTED, \A.required () ); + $setup(A, negedge CLK &&& IS_CLK_INVERTED, \A.required () ); + endspecify + + if (PREG == 0 && MREG == 0 && BREG == 0) + specify + (B *> P) = \B.P.comb (); + (B *> PCOUT) = \B.PCOUT.comb (); + endspecify + else + specify + $setup(B, posedge CLK &&& !IS_CLK_INVERTED, \B.required () ); + $setup(B, negedge CLK &&& IS_CLK_INVERTED, \B.required () ); + endspecify + + if (PREG == 0 && CREG == 0) + specify + (C *> P) = \C.P.comb (); + (C *> PCOUT) = \C.PCOUT.comb (); + endspecify + else + specify + $setup(C, posedge CLK &&& !IS_CLK_INVERTED, \C.required () ); + $setup(C, negedge CLK &&& IS_CLK_INVERTED, \C.required () ); + endspecify + + if (PREG == 0 && MREG == 0 && ADREG == 0 && DREG == 0) + specify + (D *> P) = \D.P.comb (); + (D *> PCOUT) = \D.PCOUT.comb (); + endspecify + else + specify + $setup(D, posedge CLK &&& !IS_CLK_INVERTED, \D.required () ); + $setup(D, negedge CLK &&& IS_CLK_INVERTED, \D.required () ); + endspecify + + if (PREG == 0) + specify + (PCIN *> P) = 1107; + (PCIN *> PCOUT) = 1255; + endspecify + else + specify + $setup(PCIN, posedge CLK &&& !IS_CLK_INVERTED, USE_PATTERN_DETECT != "NO_PATDET" ? 1315 : 1025); + $setup(PCIN, negedge CLK &&& IS_CLK_INVERTED, USE_PATTERN_DETECT != "NO_PATDET" ? 1315 : 1025); + endspecify + + if (PREG || AREG || ADREG || BREG || CREG || DREG || MREG) + specify + if (!IS_CLK_INVERTED && CEP) (posedge CLK => (P : 48'bx)) = \P.arrival () ; + if ( IS_CLK_INVERTED && CEP) (negedge CLK => (P : 48'bx)) = \P.arrival () ; + if (!IS_CLK_INVERTED && CEP) (posedge CLK => (PCOUT : 48'bx)) = \PCOUT.arrival () ; + if ( IS_CLK_INVERTED && CEP) (negedge CLK => (PCOUT : 48'bx)) = \PCOUT.arrival () ; + endspecify + endgenerate +`endif + + initial begin +`ifndef YOSYS + if (AUTORESET_PATDET != "NO_RESET") $fatal(1, "Unsupported AUTORESET_PATDET value"); + if (SEL_MASK != "MASK") $fatal(1, "Unsupported SEL_MASK value"); + if (SEL_PATTERN != "PATTERN") $fatal(1, "Unsupported SEL_PATTERN value"); + if (USE_SIMD != "ONE48" && USE_SIMD != "TWO24" && USE_SIMD != "FOUR12") $fatal(1, "Unsupported USE_SIMD value"); + if (IS_ALUMODE_INVERTED != 4'b0) $fatal(1, "Unsupported IS_ALUMODE_INVERTED value"); + if (IS_CARRYIN_INVERTED != 1'b0) $fatal(1, "Unsupported IS_CARRYIN_INVERTED value"); + if (IS_CLK_INVERTED != 1'b0) $fatal(1, "Unsupported IS_CLK_INVERTED value"); + if (IS_INMODE_INVERTED != 5'b0) $fatal(1, "Unsupported IS_INMODE_INVERTED value"); + if (IS_OPMODE_INVERTED != 7'b0) $fatal(1, "Unsupported IS_OPMODE_INVERTED value"); +`endif + end + + wire signed [29:0] A_muxed; + wire signed [17:0] B_muxed; + + generate + if (A_INPUT == "CASCADE") assign A_muxed = ACIN; + else assign A_muxed = A; + + if (B_INPUT == "CASCADE") assign B_muxed = BCIN; + else assign B_muxed = B; + endgenerate + + reg signed [29:0] Ar1, Ar2; + reg signed [24:0] Dr; + reg signed [17:0] Br1, Br2; + reg signed [47:0] Cr; + reg [4:0] INMODEr; + reg [6:0] OPMODEr; + reg [3:0] ALUMODEr; + reg [2:0] CARRYINSELr; + + generate + // Configurable A register + if (AREG == 2) begin + initial Ar1 = 30'b0; + initial Ar2 = 30'b0; + always @(posedge CLK) + if (RSTA) begin + Ar1 <= 30'b0; + Ar2 <= 30'b0; + end else begin + if (CEA1) Ar1 <= A_muxed; + if (CEA2) Ar2 <= Ar1; + end + end else if (AREG == 1) begin + //initial Ar1 = 30'b0; + initial Ar2 = 30'b0; + always @(posedge CLK) + if (RSTA) begin + Ar1 <= 30'b0; + Ar2 <= 30'b0; + end else begin + if (CEA1) Ar1 <= A_muxed; + if (CEA2) Ar2 <= A_muxed; + end + end else begin + always @* Ar1 <= A_muxed; + always @* Ar2 <= A_muxed; + end + + // Configurable B register + if (BREG == 2) begin + initial Br1 = 25'b0; + initial Br2 = 25'b0; + always @(posedge CLK) + if (RSTB) begin + Br1 <= 18'b0; + Br2 <= 18'b0; + end else begin + if (CEB1) Br1 <= B_muxed; + if (CEB2) Br2 <= Br1; + end + end else if (BREG == 1) begin + //initial Br1 = 18'b0; + initial Br2 = 18'b0; + always @(posedge CLK) + if (RSTB) begin + Br1 <= 18'b0; + Br2 <= 18'b0; + end else begin + if (CEB1) Br1 <= B_muxed; + if (CEB2) Br2 <= B_muxed; + end + end else begin + always @* Br1 <= B_muxed; + always @* Br2 <= B_muxed; + end + + // C and D registers + if (CREG == 1) initial Cr = 48'b0; + if (CREG == 1) begin always @(posedge CLK) if (RSTC) Cr <= 48'b0; else if (CEC) Cr <= C; end + else always @* Cr <= C; + + if (CREG == 1) initial Dr = 25'b0; + if (DREG == 1) begin always @(posedge CLK) if (RSTD) Dr <= 25'b0; else if (CED) Dr <= D; end + else always @* Dr <= D; + + // Control registers + if (INMODEREG == 1) initial INMODEr = 5'b0; + if (INMODEREG == 1) begin always @(posedge CLK) if (RSTINMODE) INMODEr <= 5'b0; else if (CEINMODE) INMODEr <= INMODE; end + else always @* INMODEr <= INMODE; + if (OPMODEREG == 1) initial OPMODEr = 7'b0; + if (OPMODEREG == 1) begin always @(posedge CLK) if (RSTCTRL) OPMODEr <= 7'b0; else if (CECTRL) OPMODEr <= OPMODE; end + else always @* OPMODEr <= OPMODE; + if (ALUMODEREG == 1) initial ALUMODEr = 4'b0; + if (ALUMODEREG == 1) begin always @(posedge CLK) if (RSTALUMODE) ALUMODEr <= 4'b0; else if (CEALUMODE) ALUMODEr <= ALUMODE; end + else always @* ALUMODEr <= ALUMODE; + if (CARRYINSELREG == 1) initial CARRYINSELr = 3'b0; + if (CARRYINSELREG == 1) begin always @(posedge CLK) if (RSTCTRL) CARRYINSELr <= 3'b0; else if (CECTRL) CARRYINSELr <= CARRYINSEL; end + else always @* CARRYINSELr <= CARRYINSEL; + endgenerate + + // A and B cascade + generate + if (ACASCREG == 1 && AREG == 2) assign ACOUT = Ar1; + else assign ACOUT = Ar2; + if (BCASCREG == 1 && BREG == 2) assign BCOUT = Br1; + else assign BCOUT = Br2; + endgenerate + + // A/D input selection and pre-adder + wire signed [24:0] Ar12_muxed = INMODEr[0] ? Ar1 : Ar2; + wire signed [24:0] Ar12_gated = INMODEr[1] ? 25'b0 : Ar12_muxed; + wire signed [24:0] Dr_gated = INMODEr[2] ? Dr : 25'b0; + wire signed [24:0] AD_result = INMODEr[3] ? (Dr_gated - Ar12_gated) : (Dr_gated + Ar12_gated); + reg signed [24:0] ADr; + + generate + if (ADREG == 1) initial ADr = 25'b0; + if (ADREG == 1) begin always @(posedge CLK) if (RSTD) ADr <= 25'b0; else if (CEAD) ADr <= AD_result; end + else always @* ADr <= AD_result; + endgenerate + + // 25x18 multiplier + wire signed [24:0] A_MULT; + wire signed [17:0] B_MULT = INMODEr[4] ? Br1 : Br2; + generate + if (USE_DPORT == "TRUE") assign A_MULT = ADr; + else assign A_MULT = Ar12_gated; + endgenerate + + wire signed [42:0] M = A_MULT * B_MULT; + wire signed [42:0] Mx = (CARRYINSEL == 3'b010) ? 43'bx : M; + reg signed [42:0] Mr = 43'b0; + + // Multiplier result register + generate + if (MREG == 1) begin always @(posedge CLK) if (RSTM) Mr <= 43'b0; else if (CEM) Mr <= Mx; end + else always @* Mr <= Mx; + endgenerate + + wire signed [42:0] Mrx = (CARRYINSELr == 3'b010) ? 43'bx : Mr; + + // X, Y and Z ALU inputs + reg signed [47:0] X, Y, Z; + + always @* begin + // X multiplexer + case (OPMODEr[1:0]) + 2'b00: X = 48'b0; + 2'b01: begin X = $signed(Mrx); +`ifndef YOSYS + if (OPMODEr[3:2] != 2'b01) $fatal(1, "OPMODEr[3:2] must be 2'b01 when OPMODEr[1:0] is 2'b01"); +`endif + end + 2'b10: + if (PREG == 1) + X = P; + else begin + X = 48'bx; +`ifndef YOSYS + $fatal(1, "PREG must be 1 when OPMODEr[1:0] is 2'b10"); +`endif + end + 2'b11: X = $signed({Ar2, Br2}); + default: X = 48'bx; + endcase + + // Y multiplexer + case (OPMODEr[3:2]) + 2'b00: Y = 48'b0; + 2'b01: begin Y = 48'b0; // FIXME: more accurate partial product modelling? +`ifndef YOSYS + if (OPMODEr[1:0] != 2'b01) $fatal(1, "OPMODEr[1:0] must be 2'b01 when OPMODEr[3:2] is 2'b01"); +`endif + end + 2'b10: Y = {48{1'b1}}; + 2'b11: Y = Cr; + default: Y = 48'bx; + endcase + + // Z multiplexer + case (OPMODEr[6:4]) + 3'b000: Z = 48'b0; + 3'b001: Z = PCIN; + 3'b010: + if (PREG == 1) + Z = P; + else begin + Z = 48'bx; +`ifndef YOSYS + $fatal(1, "PREG must be 1 when OPMODEr[6:4] is 3'b010"); +`endif + end + 3'b011: Z = Cr; + 3'b100: + if (PREG == 1 && OPMODEr[3:0] === 4'b1000) + Z = P; + else begin + Z = 48'bx; +`ifndef YOSYS + if (PREG != 1) $fatal(1, "PREG must be 1 when OPMODEr[6:4] is 3'b100"); + if (OPMODEr[3:0] != 4'b1000) $fatal(1, "OPMODEr[3:0] must be 4'b1000 when OPMODEr[6:4] i0s 3'b100"); +`endif + end + 3'b101: Z = $signed(PCIN[47:17]); + 3'b110: + if (PREG == 1) + Z = $signed(P[47:17]); + else begin + Z = 48'bx; +`ifndef YOSYS + $fatal(1, "PREG must be 1 when OPMODEr[6:4] is 3'b110"); +`endif + end + default: Z = 48'bx; + endcase + end + + // Carry in + wire A24_xnor_B17d = A_MULT[24] ~^ B_MULT[17]; + reg CARRYINr, A24_xnor_B17; + generate + if (CARRYINREG == 1) initial CARRYINr = 1'b0; + if (CARRYINREG == 1) begin always @(posedge CLK) if (RSTALLCARRYIN) CARRYINr <= 1'b0; else if (CECARRYIN) CARRYINr <= CARRYIN; end + else always @* CARRYINr = CARRYIN; + + if (MREG == 1) initial A24_xnor_B17 = 1'b0; + if (MREG == 1) begin always @(posedge CLK) if (RSTALLCARRYIN) A24_xnor_B17 <= 1'b0; else if (CEM) A24_xnor_B17 <= A24_xnor_B17d; end + else always @* A24_xnor_B17 = A24_xnor_B17d; + endgenerate + + reg cin_muxed; + + always @(*) begin + case (CARRYINSELr) + 3'b000: cin_muxed = CARRYINr; + 3'b001: cin_muxed = ~PCIN[47]; + 3'b010: cin_muxed = CARRYCASCIN; + 3'b011: cin_muxed = PCIN[47]; + 3'b100: + if (PREG == 1) + cin_muxed = CARRYCASCOUT; + else begin + cin_muxed = 1'bx; +`ifndef YOSYS + $fatal(1, "PREG must be 1 when CARRYINSEL is 3'b100"); +`endif + end + 3'b101: + if (PREG == 1) + cin_muxed = ~P[47]; + else begin + cin_muxed = 1'bx; +`ifndef YOSYS + $fatal(1, "PREG must be 1 when CARRYINSEL is 3'b101"); +`endif + end + 3'b110: cin_muxed = A24_xnor_B17; + 3'b111: + if (PREG == 1) + cin_muxed = P[47]; + else begin + cin_muxed = 1'bx; +`ifndef YOSYS + $fatal(1, "PREG must be 1 when CARRYINSEL is 3'b111"); +`endif + end + default: cin_muxed = 1'bx; + endcase + end + + wire alu_cin = (ALUMODEr[3] || ALUMODEr[2]) ? 1'b0 : cin_muxed; + + // ALU core + wire [47:0] Z_muxinv = ALUMODEr[0] ? ~Z : Z; + wire [47:0] xor_xyz = X ^ Y ^ Z_muxinv; + wire [47:0] maj_xyz = (X & Y) | (X & Z_muxinv) | (Y & Z_muxinv); + + wire [47:0] xor_xyz_muxed = ALUMODEr[3] ? maj_xyz : xor_xyz; + wire [47:0] maj_xyz_gated = ALUMODEr[2] ? 48'b0 : maj_xyz; + + wire [48:0] maj_xyz_simd_gated; + wire [3:0] int_carry_in, int_carry_out, ext_carry_out; + wire [47:0] alu_sum; + assign int_carry_in[0] = 1'b0; + wire [3:0] carryout_reset; + + generate + if (USE_SIMD == "FOUR12") begin + assign maj_xyz_simd_gated = { + maj_xyz_gated[47:36], + 1'b0, maj_xyz_gated[34:24], + 1'b0, maj_xyz_gated[22:12], + 1'b0, maj_xyz_gated[10:0], + alu_cin + }; + assign int_carry_in[3:1] = 3'b000; + assign ext_carry_out = { + int_carry_out[3], + maj_xyz_gated[35] ^ int_carry_out[2], + maj_xyz_gated[23] ^ int_carry_out[1], + maj_xyz_gated[11] ^ int_carry_out[0] + }; + assign carryout_reset = 4'b0000; + end else if (USE_SIMD == "TWO24") begin + assign maj_xyz_simd_gated = { + maj_xyz_gated[47:24], + 1'b0, maj_xyz_gated[22:0], + alu_cin + }; + assign int_carry_in[3:1] = {int_carry_out[2], 1'b0, int_carry_out[0]}; + assign ext_carry_out = { + int_carry_out[3], + 1'bx, + maj_xyz_gated[23] ^ int_carry_out[1], + 1'bx + }; + assign carryout_reset = 4'b0x0x; + end else begin + assign maj_xyz_simd_gated = {maj_xyz_gated, alu_cin}; + assign int_carry_in[3:1] = int_carry_out[2:0]; + assign ext_carry_out = { + int_carry_out[3], + 3'bxxx + }; + assign carryout_reset = 4'b0xxx; + end + + genvar i; + for (i = 0; i < 4; i = i + 1) + assign {int_carry_out[i], alu_sum[i*12 +: 12]} = {1'b0, maj_xyz_simd_gated[i*12 +: ((i == 3) ? 13 : 12)]} + + xor_xyz_muxed[i*12 +: 12] + int_carry_in[i]; + endgenerate + + wire signed [47:0] Pd = ALUMODEr[1] ? ~alu_sum : alu_sum; + wire [3:0] CARRYOUTd = (OPMODEr[3:0] == 4'b0101 || ALUMODEr[3:2] != 2'b00) ? 4'bxxxx : + ((ALUMODEr[0] & ALUMODEr[1]) ? ~ext_carry_out : ext_carry_out); + wire CARRYCASCOUTd = ext_carry_out[3]; + wire MULTSIGNOUTd = Mrx[42]; + + generate + if (PREG == 1) begin + initial P = 48'b0; + initial CARRYOUT = carryout_reset; + initial CARRYCASCOUT = 1'b0; + initial MULTSIGNOUT = 1'b0; + always @(posedge CLK) + if (RSTP) begin + P <= 48'b0; + CARRYOUT <= carryout_reset; + CARRYCASCOUT <= 1'b0; + MULTSIGNOUT <= 1'b0; + end else if (CEP) begin + P <= Pd; + CARRYOUT <= CARRYOUTd; + CARRYCASCOUT <= CARRYCASCOUTd; + MULTSIGNOUT <= MULTSIGNOUTd; + end + end else begin + always @* begin + P = Pd; + CARRYOUT = CARRYOUTd; + CARRYCASCOUT = CARRYCASCOUTd; + MULTSIGNOUT = MULTSIGNOUTd; + end + end + endgenerate + + assign PCOUT = P; + + generate + wire PATTERNDETECTd, PATTERNBDETECTd; + + if (USE_PATTERN_DETECT == "PATDET") begin + // TODO: Support SEL_PATTERN != "PATTERN" and SEL_MASK != "MASK + assign PATTERNDETECTd = &(~(Pd ^ PATTERN) | MASK); + assign PATTERNBDETECTd = &((Pd ^ PATTERN) | MASK); + end else begin + assign PATTERNDETECTd = 1'b1; + assign PATTERNBDETECTd = 1'b1; + end + + if (PREG == 1) begin + reg PATTERNDETECTPAST, PATTERNBDETECTPAST; + initial PATTERNDETECT = 1'b0; + initial PATTERNBDETECT = 1'b0; + initial PATTERNDETECTPAST = 1'b0; + initial PATTERNBDETECTPAST = 1'b0; + always @(posedge CLK) + if (RSTP) begin + PATTERNDETECT <= 1'b0; + PATTERNBDETECT <= 1'b0; + PATTERNDETECTPAST <= 1'b0; + PATTERNBDETECTPAST <= 1'b0; + end else if (CEP) begin + PATTERNDETECT <= PATTERNDETECTd; + PATTERNBDETECT <= PATTERNBDETECTd; + PATTERNDETECTPAST <= PATTERNDETECT; + PATTERNBDETECTPAST <= PATTERNBDETECT; + end + assign OVERFLOW = &{PATTERNDETECTPAST, ~PATTERNBDETECT, ~PATTERNDETECT}; + assign UNDERFLOW = &{PATTERNBDETECTPAST, ~PATTERNBDETECT, ~PATTERNDETECT}; + end else begin + always @* begin + PATTERNDETECT = PATTERNDETECTd; + PATTERNBDETECT = PATTERNBDETECTd; + end + assign OVERFLOW = 1'bx, UNDERFLOW = 1'bx; + end + endgenerate + +endmodule + +// TODO: DSP48E2 (Ultrascale). + +// Block RAM + +module RAMB18E1 ( + (* clkbuf_sink *) + (* invertible_pin = "IS_CLKARDCLK_INVERTED" *) + input CLKARDCLK, + (* clkbuf_sink *) + (* invertible_pin = "IS_CLKBWRCLK_INVERTED" *) + input CLKBWRCLK, + (* invertible_pin = "IS_ENARDEN_INVERTED" *) + input ENARDEN, + (* invertible_pin = "IS_ENBWREN_INVERTED" *) + input ENBWREN, + input REGCEAREGCE, + input REGCEB, + (* invertible_pin = "IS_RSTRAMARSTRAM_INVERTED" *) + input RSTRAMARSTRAM, + (* invertible_pin = "IS_RSTRAMB_INVERTED" *) + input RSTRAMB, + (* invertible_pin = "IS_RSTREGARSTREG_INVERTED" *) + input RSTREGARSTREG, + (* invertible_pin = "IS_RSTREGB_INVERTED" *) + input RSTREGB, + input [13:0] ADDRARDADDR, + input [13:0] ADDRBWRADDR, + input [15:0] DIADI, + input [15:0] DIBDI, + input [1:0] DIPADIP, + input [1:0] DIPBDIP, + input [1:0] WEA, + input [3:0] WEBWE, + output [15:0] DOADO, + output [15:0] DOBDO, + output [1:0] DOPADOP, + output [1:0] DOPBDOP +); + parameter integer DOA_REG = 0; + parameter integer DOB_REG = 0; + parameter INITP_00 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INITP_01 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INITP_02 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INITP_03 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INITP_04 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INITP_05 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INITP_06 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INITP_07 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_00 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_01 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_02 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_03 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_04 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_05 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_06 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_07 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_08 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_09 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_10 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_11 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_12 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_13 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_14 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_15 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_16 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_17 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_18 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_19 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_1A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_1B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_1C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_1D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_1E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_1F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_20 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_21 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_22 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_23 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_24 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_25 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_26 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_27 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_28 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_29 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_2A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_2B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_2C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_2D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_2E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_2F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_30 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_31 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_32 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_33 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_34 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_35 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_36 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_37 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_38 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_39 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_3A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_3B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_3C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_3D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_3E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_3F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_A = 18'h0; + parameter INIT_B = 18'h0; + parameter INIT_FILE = "NONE"; + parameter RAM_MODE = "TDP"; + parameter RDADDR_COLLISION_HWCONFIG = "DELAYED_WRITE"; + parameter integer READ_WIDTH_A = 0; + parameter integer READ_WIDTH_B = 0; + parameter RSTREG_PRIORITY_A = "RSTREG"; + parameter RSTREG_PRIORITY_B = "RSTREG"; + parameter SIM_COLLISION_CHECK = "ALL"; + parameter SIM_DEVICE = "VIRTEX6"; + parameter SRVAL_A = 18'h0; + parameter SRVAL_B = 18'h0; + parameter WRITE_MODE_A = "WRITE_FIRST"; + parameter WRITE_MODE_B = "WRITE_FIRST"; + parameter integer WRITE_WIDTH_A = 0; + parameter integer WRITE_WIDTH_B = 0; + parameter IS_CLKARDCLK_INVERTED = 1'b0; + parameter IS_CLKBWRCLK_INVERTED = 1'b0; + parameter IS_ENARDEN_INVERTED = 1'b0; + parameter IS_ENBWREN_INVERTED = 1'b0; + parameter IS_RSTRAMARSTRAM_INVERTED = 1'b0; + parameter IS_RSTRAMB_INVERTED = 1'b0; + parameter IS_RSTREGARSTREG_INVERTED = 1'b0; + parameter IS_RSTREGB_INVERTED = 1'b0; + + specify + // https://github.com/SymbiFlow/prjxray-db/blob/23c8b0851f979f0799318eaca90174413a46b257/artix7/timings/BRAM_L.sdf#L13 + $setup(ADDRARDADDR, posedge CLKARDCLK, 566); + // https://github.com/SymbiFlow/prjxray-db/blob/23c8b0851f979f0799318eaca90174413a46b257/artix7/timings/BRAM_L.sdf#L17 + $setup(ADDRBWRADDR, posedge CLKBWRCLK, 566); + // https://github.com/SymbiFlow/prjxray-db/blob/23c8b0851f979f0799318eaca90174413a46b257/artix7/timings/BRAM_L.sdf#L19 + $setup(WEA, posedge CLKARDCLK, 532); + // https://github.com/SymbiFlow/prjxray-db/blob/23c8b0851f979f0799318eaca90174413a46b257/artix7/timings/BRAM_L.sdf#L21 + $setup(WEBWE, posedge CLKBWRCLK, 532); + // https://github.com/SymbiFlow/prjxray-db/blob/4bc6385ab300b1819848371f508185f57b649a0e/artix7/timings/BRAM_L.sdf#L29 + $setup(REGCEAREGCE, posedge CLKARDCLK, 360); + // https://github.com/SymbiFlow/prjxray-db/blob/4bc6385ab300b1819848371f508185f57b649a0e/artix7/timings/BRAM_L.sdf#L31 + $setup(RSTREGARSTREG, posedge CLKARDCLK, 342); + // https://github.com/SymbiFlow/prjxray-db/blob/4bc6385ab300b1819848371f508185f57b649a0e/artix7/timings/BRAM_L.sdf#L49 + $setup(REGCEB, posedge CLKBWRCLK, 360); + // https://github.com/SymbiFlow/prjxray-db/blob/4bc6385ab300b1819848371f508185f57b649a0e/artix7/timings/BRAM_L.sdf#L59 + $setup(RSTREGB, posedge CLKBWRCLK, 342); + // https://github.com/SymbiFlow/prjxray-db/blob/23c8b0851f979f0799318eaca90174413a46b257/artix7/timings/BRAM_L.sdf#L123 + $setup(DIADI, posedge CLKARDCLK, 737); + // https://github.com/SymbiFlow/prjxray-db/blob/23c8b0851f979f0799318eaca90174413a46b257/artix7/timings/BRAM_L.sdf#L133 + $setup(DIBDI, posedge CLKBWRCLK, 737); + // https://github.com/SymbiFlow/prjxray-db/blob/23c8b0851f979f0799318eaca90174413a46b257/artix7/timings/BRAM_L.sdf#L125 + $setup(DIPADIP, posedge CLKARDCLK, 737); + // https://github.com/SymbiFlow/prjxray-db/blob/23c8b0851f979f0799318eaca90174413a46b257/artix7/timings/BRAM_L.sdf#L135 + $setup(DIPBDIP, posedge CLKBWRCLK, 737); + // https://github.com/SymbiFlow/prjxray-db/blob/23c8b0851f979f0799318eaca90174413a46b257/artix7/timings/BRAM_L.sdf#L143 + if (&DOA_REG) (posedge CLKARDCLK => (DOADO : 16'bx)) = 2454; + // https://github.com/SymbiFlow/prjxray-db/blob/23c8b0851f979f0799318eaca90174413a46b257/artix7/timings/BRAM_L.sdf#L144 + if (&DOA_REG) (posedge CLKARDCLK => (DOPADOP : 2'bx)) = 2454; + // https://github.com/SymbiFlow/prjxray-db/blob/4bc6385ab300b1819848371f508185f57b649a0e/artix7/timings/BRAM_L.sdf#L153 + if (|DOA_REG) (posedge CLKARDCLK => (DOADO : 16'bx)) = 882; + // https://github.com/SymbiFlow/prjxray-db/blob/4bc6385ab300b1819848371f508185f57b649a0e/artix7/timings/BRAM_L.sdf#L154 + if (|DOA_REG) (posedge CLKARDCLK => (DOPADOP : 2'bx)) = 882; + // https://github.com/SymbiFlow/prjxray-db/blob/23c8b0851f979f0799318eaca90174413a46b257/artix7/timings/BRAM_L.sdf#L163 + if (&DOB_REG) (posedge CLKBWRCLK => (DOBDO : 16'bx)) = 2454; + // https://github.com/SymbiFlow/prjxray-db/blob/23c8b0851f979f0799318eaca90174413a46b257/artix7/timings/BRAM_L.sdf#L164 + if (&DOB_REG) (posedge CLKBWRCLK => (DOPBDOP : 2'bx)) = 2454; + // https://github.com/SymbiFlow/prjxray-db/blob/4bc6385ab300b1819848371f508185f57b649a0e/artix7/timings/BRAM_L.sdf#L173 + if (|DOB_REG) (posedge CLKBWRCLK => (DOBDO : 16'bx)) = 882; + // https://github.com/SymbiFlow/prjxray-db/blob/4bc6385ab300b1819848371f508185f57b649a0e/artix7/timings/BRAM_L.sdf#L174 + if (|DOB_REG) (posedge CLKBWRCLK => (DOPBDOP : 2'bx)) = 882; + endspecify +endmodule + +module RAMB36E1 ( + output CASCADEOUTA, + output CASCADEOUTB, + output [31:0] DOADO, + output [31:0] DOBDO, + output [3:0] DOPADOP, + output [3:0] DOPBDOP, + output [7:0] ECCPARITY, + output [8:0] RDADDRECC, + output SBITERR, + output DBITERR, + (* invertible_pin = "IS_ENARDEN_INVERTED" *) + input ENARDEN, + (* clkbuf_sink *) + (* invertible_pin = "IS_CLKARDCLK_INVERTED" *) + input CLKARDCLK, + (* invertible_pin = "IS_RSTRAMARSTRAM_INVERTED" *) + input RSTRAMARSTRAM, + (* invertible_pin = "IS_RSTREGARSTREG_INVERTED" *) + input RSTREGARSTREG, + input CASCADEINA, + input REGCEAREGCE, + (* invertible_pin = "IS_ENBWREN_INVERTED" *) + input ENBWREN, + (* clkbuf_sink *) + (* invertible_pin = "IS_CLKBWRCLK_INVERTED" *) + input CLKBWRCLK, + (* invertible_pin = "IS_RSTRAMB_INVERTED" *) + input RSTRAMB, + (* invertible_pin = "IS_RSTREGB_INVERTED" *) + input RSTREGB, + input CASCADEINB, + input REGCEB, + input INJECTDBITERR, + input INJECTSBITERR, + input [15:0] ADDRARDADDR, + input [15:0] ADDRBWRADDR, + input [31:0] DIADI, + input [31:0] DIBDI, + input [3:0] DIPADIP, + input [3:0] DIPBDIP, + input [3:0] WEA, + input [7:0] WEBWE +); + parameter integer DOA_REG = 0; + parameter integer DOB_REG = 0; + parameter EN_ECC_READ = "FALSE"; + parameter EN_ECC_WRITE = "FALSE"; + parameter INITP_00 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INITP_01 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INITP_02 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INITP_03 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INITP_04 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INITP_05 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INITP_06 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INITP_07 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INITP_08 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INITP_09 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INITP_0A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INITP_0B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INITP_0C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INITP_0D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INITP_0E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INITP_0F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_00 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_01 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_02 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_03 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_04 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_05 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_06 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_07 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_08 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_09 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_10 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_11 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_12 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_13 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_14 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_15 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_16 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_17 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_18 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_19 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_1A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_1B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_1C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_1D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_1E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_1F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_20 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_21 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_22 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_23 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_24 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_25 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_26 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_27 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_28 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_29 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_2A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_2B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_2C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_2D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_2E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_2F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_30 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_31 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_32 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_33 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_34 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_35 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_36 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_37 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_38 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_39 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_3A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_3B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_3C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_3D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_3E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_3F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_40 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_41 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_42 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_43 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_44 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_45 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_46 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_47 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_48 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_49 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_4A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_4B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_4C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_4D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_4E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_4F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_50 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_51 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_52 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_53 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_54 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_55 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_56 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_57 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_58 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_59 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_5A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_5B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_5C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_5D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_5E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_5F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_60 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_61 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_62 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_63 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_64 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_65 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_66 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_67 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_68 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_69 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_6A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_6B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_6C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_6D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_6E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_6F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_70 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_71 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_72 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_73 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_74 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_75 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_76 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_77 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_78 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_79 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_7A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_7B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_7C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_7D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_7E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_7F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_A = 36'h0; + parameter INIT_B = 36'h0; + parameter INIT_FILE = "NONE"; + parameter RAM_EXTENSION_A = "NONE"; + parameter RAM_EXTENSION_B = "NONE"; + parameter RAM_MODE = "TDP"; + parameter RDADDR_COLLISION_HWCONFIG = "DELAYED_WRITE"; + parameter integer READ_WIDTH_A = 0; + parameter integer READ_WIDTH_B = 0; + parameter RSTREG_PRIORITY_A = "RSTREG"; + parameter RSTREG_PRIORITY_B = "RSTREG"; + parameter SIM_COLLISION_CHECK = "ALL"; + parameter SIM_DEVICE = "VIRTEX6"; + parameter SRVAL_A = 36'h0; + parameter SRVAL_B = 36'h0; + parameter WRITE_MODE_A = "WRITE_FIRST"; + parameter WRITE_MODE_B = "WRITE_FIRST"; + parameter integer WRITE_WIDTH_A = 0; + parameter integer WRITE_WIDTH_B = 0; + parameter IS_CLKARDCLK_INVERTED = 1'b0; + parameter IS_CLKBWRCLK_INVERTED = 1'b0; + parameter IS_ENARDEN_INVERTED = 1'b0; + parameter IS_ENBWREN_INVERTED = 1'b0; + parameter IS_RSTRAMARSTRAM_INVERTED = 1'b0; + parameter IS_RSTRAMB_INVERTED = 1'b0; + parameter IS_RSTREGARSTREG_INVERTED = 1'b0; + parameter IS_RSTREGB_INVERTED = 1'b0; + + specify + // https://github.com/SymbiFlow/prjxray-db/blob/23c8b0851f979f0799318eaca90174413a46b257/artix7/timings/BRAM_L.sdf#L13 + $setup(ADDRARDADDR, posedge CLKARDCLK, 566); + // https://github.com/SymbiFlow/prjxray-db/blob/23c8b0851f979f0799318eaca90174413a46b257/artix7/timings/BRAM_L.sdf#L17 + $setup(ADDRBWRADDR, posedge CLKBWRCLK, 566); + // https://github.com/SymbiFlow/prjxray-db/blob/23c8b0851f979f0799318eaca90174413a46b257/artix7/timings/BRAM_L.sdf#L19 + $setup(WEA, posedge CLKARDCLK, 532); + // https://github.com/SymbiFlow/prjxray-db/blob/23c8b0851f979f0799318eaca90174413a46b257/artix7/timings/BRAM_L.sdf#L21 + $setup(WEBWE, posedge CLKBWRCLK, 532); + // https://github.com/SymbiFlow/prjxray-db/blob/4bc6385ab300b1819848371f508185f57b649a0e/artix7/timings/BRAM_L.sdf#L29 + $setup(REGCEAREGCE, posedge CLKARDCLK, 360); + // https://github.com/SymbiFlow/prjxray-db/blob/4bc6385ab300b1819848371f508185f57b649a0e/artix7/timings/BRAM_L.sdf#L31 + $setup(RSTREGARSTREG, posedge CLKARDCLK, 342); + // https://github.com/SymbiFlow/prjxray-db/blob/4bc6385ab300b1819848371f508185f57b649a0e/artix7/timings/BRAM_L.sdf#L49 + $setup(REGCEB, posedge CLKBWRCLK, 360); + // https://github.com/SymbiFlow/prjxray-db/blob/4bc6385ab300b1819848371f508185f57b649a0e/artix7/timings/BRAM_L.sdf#L59 + $setup(RSTREGB, posedge CLKBWRCLK, 342); + // https://github.com/SymbiFlow/prjxray-db/blob/23c8b0851f979f0799318eaca90174413a46b257/artix7/timings/BRAM_L.sdf#L123 + $setup(DIADI, posedge CLKARDCLK, 737); + // https://github.com/SymbiFlow/prjxray-db/blob/23c8b0851f979f0799318eaca90174413a46b257/artix7/timings/BRAM_L.sdf#L133 + $setup(DIBDI, posedge CLKBWRCLK, 737); + // https://github.com/SymbiFlow/prjxray-db/blob/23c8b0851f979f0799318eaca90174413a46b257/artix7/timings/BRAM_L.sdf#L125 + $setup(DIPADIP, posedge CLKARDCLK, 737); + // https://github.com/SymbiFlow/prjxray-db/blob/23c8b0851f979f0799318eaca90174413a46b257/artix7/timings/BRAM_L.sdf#L135 + $setup(DIPBDIP, posedge CLKBWRCLK, 737); + // https://github.com/SymbiFlow/prjxray-db/blob/23c8b0851f979f0799318eaca90174413a46b257/artix7/timings/BRAM_L.sdf#L143 + if (&DOA_REG) (posedge CLKARDCLK => (DOADO : 32'bx)) = 2454; + // https://github.com/SymbiFlow/prjxray-db/blob/23c8b0851f979f0799318eaca90174413a46b257/artix7/timings/BRAM_L.sdf#L144 + if (&DOA_REG) (posedge CLKARDCLK => (DOPADOP : 4'bx)) = 2454; + // https://github.com/SymbiFlow/prjxray-db/blob/4bc6385ab300b1819848371f508185f57b649a0e/artix7/timings/BRAM_L.sdf#L153 + if (|DOA_REG) (posedge CLKARDCLK => (DOADO : 32'bx)) = 882; + // https://github.com/SymbiFlow/prjxray-db/blob/4bc6385ab300b1819848371f508185f57b649a0e/artix7/timings/BRAM_L.sdf#L154 + if (|DOA_REG) (posedge CLKARDCLK => (DOPADOP : 4'bx)) = 882; + // https://github.com/SymbiFlow/prjxray-db/blob/23c8b0851f979f0799318eaca90174413a46b257/artix7/timings/BRAM_L.sdf#L163 + if (&DOB_REG) (posedge CLKBWRCLK => (DOBDO : 32'bx)) = 2454; + // https://github.com/SymbiFlow/prjxray-db/blob/23c8b0851f979f0799318eaca90174413a46b257/artix7/timings/BRAM_L.sdf#L164 + if (&DOB_REG) (posedge CLKBWRCLK => (DOPBDOP : 4'bx)) = 2454; + // https://github.com/SymbiFlow/prjxray-db/blob/4bc6385ab300b1819848371f508185f57b649a0e/artix7/timings/BRAM_L.sdf#L173 + if (|DOB_REG) (posedge CLKBWRCLK => (DOBDO : 32'bx)) = 882; + // https://github.com/SymbiFlow/prjxray-db/blob/4bc6385ab300b1819848371f508185f57b649a0e/artix7/timings/BRAM_L.sdf#L174 + if (|DOB_REG) (posedge CLKBWRCLK => (DOPBDOP : 4'bx)) = 882; + endspecify +endmodule diff --git a/resources/netlist/resources/kernel/share/xilinx/cells_xtra.v b/resources/netlist/resources/kernel/share/xilinx/cells_xtra.v new file mode 100644 index 0000000..aae0d3e --- /dev/null +++ b/resources/netlist/resources/kernel/share/xilinx/cells_xtra.v @@ -0,0 +1,34115 @@ +// Created by cells_xtra.py from Xilinx models + +module RAMB4_S1 (...); + parameter INIT_00 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_01 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_02 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_03 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_04 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_05 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_06 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_07 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_08 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_09 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + output [0:0] DO; + input [11:0] ADDR; + input [0:0] DI; + input EN; + (* clkbuf_sink *) + input CLK; + input WE; + input RST; +endmodule + +module RAMB4_S2 (...); + parameter INIT_00 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_01 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_02 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_03 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_04 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_05 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_06 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_07 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_08 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_09 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + output [1:0] DO; + input [10:0] ADDR; + input [1:0] DI; + input EN; + (* clkbuf_sink *) + input CLK; + input WE; + input RST; +endmodule + +module RAMB4_S4 (...); + parameter INIT_00 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_01 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_02 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_03 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_04 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_05 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_06 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_07 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_08 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_09 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + output [3:0] DO; + input [9:0] ADDR; + input [3:0] DI; + input EN; + (* clkbuf_sink *) + input CLK; + input WE; + input RST; +endmodule + +module RAMB4_S8 (...); + parameter INIT_00 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_01 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_02 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_03 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_04 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_05 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_06 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_07 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_08 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_09 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + output [7:0] DO; + input [8:0] ADDR; + input [7:0] DI; + input EN; + (* clkbuf_sink *) + input CLK; + input WE; + input RST; +endmodule + +module RAMB4_S16 (...); + parameter INIT_00 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_01 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_02 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_03 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_04 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_05 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_06 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_07 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_08 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_09 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + output [15:0] DO; + input [7:0] ADDR; + input [15:0] DI; + input EN; + (* clkbuf_sink *) + input CLK; + input WE; + input RST; +endmodule + +module RAMB4_S1_S1 (...); + parameter SIM_COLLISION_CHECK = "ALL"; + parameter INIT_00 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_01 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_02 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_03 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_04 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_05 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_06 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_07 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_08 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_09 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + output [0:0] DOA; + input [11:0] ADDRA; + input [0:0] DIA; + input ENA; + (* clkbuf_sink *) + input CLKA; + input WEA; + input RSTA; + output [0:0] DOB; + input [11:0] ADDRB; + input [0:0] DIB; + input ENB; + (* clkbuf_sink *) + input CLKB; + input WEB; + input RSTB; +endmodule + +module RAMB4_S1_S2 (...); + parameter SIM_COLLISION_CHECK = "ALL"; + parameter INIT_00 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_01 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_02 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_03 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_04 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_05 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_06 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_07 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_08 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_09 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + output [0:0] DOA; + input [11:0] ADDRA; + input [0:0] DIA; + input ENA; + (* clkbuf_sink *) + input CLKA; + input WEA; + input RSTA; + output [1:0] DOB; + input [10:0] ADDRB; + input [1:0] DIB; + input ENB; + (* clkbuf_sink *) + input CLKB; + input WEB; + input RSTB; +endmodule + +module RAMB4_S1_S4 (...); + parameter SIM_COLLISION_CHECK = "ALL"; + parameter INIT_00 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_01 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_02 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_03 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_04 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_05 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_06 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_07 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_08 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_09 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + output [0:0] DOA; + input [11:0] ADDRA; + input [0:0] DIA; + input ENA; + (* clkbuf_sink *) + input CLKA; + input WEA; + input RSTA; + output [3:0] DOB; + input [9:0] ADDRB; + input [3:0] DIB; + input ENB; + (* clkbuf_sink *) + input CLKB; + input WEB; + input RSTB; +endmodule + +module RAMB4_S1_S8 (...); + parameter SIM_COLLISION_CHECK = "ALL"; + parameter INIT_00 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_01 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_02 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_03 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_04 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_05 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_06 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_07 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_08 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_09 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + output [0:0] DOA; + input [11:0] ADDRA; + input [0:0] DIA; + input ENA; + (* clkbuf_sink *) + input CLKA; + input WEA; + input RSTA; + output [7:0] DOB; + input [8:0] ADDRB; + input [7:0] DIB; + input ENB; + (* clkbuf_sink *) + input CLKB; + input WEB; + input RSTB; +endmodule + +module RAMB4_S1_S16 (...); + parameter SIM_COLLISION_CHECK = "ALL"; + parameter INIT_00 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_01 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_02 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_03 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_04 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_05 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_06 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_07 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_08 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_09 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + output [0:0] DOA; + input [11:0] ADDRA; + input [0:0] DIA; + input ENA; + (* clkbuf_sink *) + input CLKA; + input WEA; + input RSTA; + output [15:0] DOB; + input [7:0] ADDRB; + input [15:0] DIB; + input ENB; + (* clkbuf_sink *) + input CLKB; + input WEB; + input RSTB; +endmodule + +module RAMB4_S2_S2 (...); + parameter SIM_COLLISION_CHECK = "ALL"; + parameter INIT_00 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_01 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_02 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_03 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_04 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_05 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_06 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_07 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_08 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_09 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + output [1:0] DOA; + input [10:0] ADDRA; + input [1:0] DIA; + input ENA; + (* clkbuf_sink *) + input CLKA; + input WEA; + input RSTA; + output [1:0] DOB; + input [10:0] ADDRB; + input [1:0] DIB; + input ENB; + (* clkbuf_sink *) + input CLKB; + input WEB; + input RSTB; +endmodule + +module RAMB4_S2_S4 (...); + parameter SIM_COLLISION_CHECK = "ALL"; + parameter INIT_00 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_01 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_02 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_03 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_04 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_05 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_06 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_07 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_08 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_09 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + output [1:0] DOA; + input [10:0] ADDRA; + input [1:0] DIA; + input ENA; + (* clkbuf_sink *) + input CLKA; + input WEA; + input RSTA; + output [3:0] DOB; + input [9:0] ADDRB; + input [3:0] DIB; + input ENB; + (* clkbuf_sink *) + input CLKB; + input WEB; + input RSTB; +endmodule + +module RAMB4_S2_S8 (...); + parameter SIM_COLLISION_CHECK = "ALL"; + parameter INIT_00 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_01 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_02 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_03 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_04 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_05 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_06 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_07 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_08 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_09 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + output [1:0] DOA; + input [10:0] ADDRA; + input [1:0] DIA; + input ENA; + (* clkbuf_sink *) + input CLKA; + input WEA; + input RSTA; + output [7:0] DOB; + input [8:0] ADDRB; + input [7:0] DIB; + input ENB; + (* clkbuf_sink *) + input CLKB; + input WEB; + input RSTB; +endmodule + +module RAMB4_S2_S16 (...); + parameter SIM_COLLISION_CHECK = "ALL"; + parameter INIT_00 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_01 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_02 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_03 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_04 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_05 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_06 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_07 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_08 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_09 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + output [1:0] DOA; + input [10:0] ADDRA; + input [1:0] DIA; + input ENA; + (* clkbuf_sink *) + input CLKA; + input WEA; + input RSTA; + output [15:0] DOB; + input [7:0] ADDRB; + input [15:0] DIB; + input ENB; + (* clkbuf_sink *) + input CLKB; + input WEB; + input RSTB; +endmodule + +module RAMB4_S4_S4 (...); + parameter SIM_COLLISION_CHECK = "ALL"; + parameter INIT_00 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_01 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_02 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_03 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_04 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_05 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_06 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_07 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_08 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_09 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + output [3:0] DOA; + input [9:0] ADDRA; + input [3:0] DIA; + input ENA; + (* clkbuf_sink *) + input CLKA; + input WEA; + input RSTA; + output [3:0] DOB; + input [9:0] ADDRB; + input [3:0] DIB; + input ENB; + (* clkbuf_sink *) + input CLKB; + input WEB; + input RSTB; +endmodule + +module RAMB4_S4_S8 (...); + parameter SIM_COLLISION_CHECK = "ALL"; + parameter INIT_00 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_01 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_02 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_03 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_04 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_05 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_06 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_07 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_08 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_09 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + output [3:0] DOA; + input [9:0] ADDRA; + input [3:0] DIA; + input ENA; + (* clkbuf_sink *) + input CLKA; + input WEA; + input RSTA; + output [7:0] DOB; + input [8:0] ADDRB; + input [7:0] DIB; + input ENB; + (* clkbuf_sink *) + input CLKB; + input WEB; + input RSTB; +endmodule + +module RAMB4_S4_S16 (...); + parameter SIM_COLLISION_CHECK = "ALL"; + parameter INIT_00 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_01 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_02 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_03 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_04 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_05 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_06 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_07 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_08 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_09 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + output [3:0] DOA; + input [9:0] ADDRA; + input [3:0] DIA; + input ENA; + (* clkbuf_sink *) + input CLKA; + input WEA; + input RSTA; + output [15:0] DOB; + input [7:0] ADDRB; + input [15:0] DIB; + input ENB; + (* clkbuf_sink *) + input CLKB; + input WEB; + input RSTB; +endmodule + +module RAMB4_S8_S8 (...); + parameter SIM_COLLISION_CHECK = "ALL"; + parameter INIT_00 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_01 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_02 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_03 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_04 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_05 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_06 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_07 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_08 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_09 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + output [7:0] DOA; + input [8:0] ADDRA; + input [7:0] DIA; + input ENA; + (* clkbuf_sink *) + input CLKA; + input WEA; + input RSTA; + output [7:0] DOB; + input [8:0] ADDRB; + input [7:0] DIB; + input ENB; + (* clkbuf_sink *) + input CLKB; + input WEB; + input RSTB; +endmodule + +module RAMB4_S8_S16 (...); + parameter SIM_COLLISION_CHECK = "ALL"; + parameter INIT_00 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_01 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_02 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_03 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_04 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_05 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_06 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_07 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_08 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_09 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + output [7:0] DOA; + input [8:0] ADDRA; + input [7:0] DIA; + input ENA; + (* clkbuf_sink *) + input CLKA; + input WEA; + input RSTA; + output [15:0] DOB; + input [7:0] ADDRB; + input [15:0] DIB; + input ENB; + (* clkbuf_sink *) + input CLKB; + input WEB; + input RSTB; +endmodule + +module RAMB4_S16_S16 (...); + parameter SIM_COLLISION_CHECK = "ALL"; + parameter INIT_00 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_01 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_02 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_03 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_04 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_05 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_06 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_07 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_08 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_09 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_0F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + output [15:0] DOA; + input [7:0] ADDRA; + input [15:0] DIA; + input ENA; + (* clkbuf_sink *) + input CLKA; + input WEA; + input RSTA; + output [15:0] DOB; + input [7:0] ADDRB; + input [15:0] DIB; + input ENB; + (* clkbuf_sink *) + input CLKB; + input WEB; + input RSTB; +endmodule + +module RAMB16_S1 (...); + parameter [0:0] INIT = 1'h0; + parameter [0:0] SRVAL = 1'h0; + parameter WRITE_MODE = "WRITE_FIRST"; + parameter [255:0] INIT_00 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_01 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_02 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_03 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_04 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_05 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_06 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_07 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_08 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_09 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_10 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_11 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_12 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_13 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_14 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_15 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_16 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_17 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_18 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_19 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_20 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_21 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_22 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_23 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_24 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_25 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_26 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_27 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_28 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_29 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_30 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_31 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_32 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_33 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_34 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_35 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_36 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_37 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_38 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_39 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + output [0:0] DO; + input [13:0] ADDR; + input [0:0] DI; + input EN; + (* clkbuf_sink *) + input CLK; + input WE; + input SSR; +endmodule + +module RAMB16_S2 (...); + parameter [1:0] INIT = 2'h0; + parameter [1:0] SRVAL = 2'h0; + parameter WRITE_MODE = "WRITE_FIRST"; + parameter [255:0] INIT_00 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_01 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_02 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_03 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_04 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_05 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_06 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_07 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_08 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_09 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_10 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_11 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_12 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_13 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_14 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_15 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_16 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_17 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_18 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_19 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_20 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_21 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_22 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_23 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_24 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_25 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_26 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_27 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_28 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_29 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_30 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_31 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_32 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_33 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_34 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_35 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_36 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_37 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_38 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_39 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + output [1:0] DO; + input [12:0] ADDR; + input [1:0] DI; + input EN; + (* clkbuf_sink *) + input CLK; + input WE; + input SSR; +endmodule + +module RAMB16_S4 (...); + parameter [3:0] INIT = 4'h0; + parameter [3:0] SRVAL = 4'h0; + parameter WRITE_MODE = "WRITE_FIRST"; + parameter [255:0] INIT_00 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_01 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_02 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_03 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_04 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_05 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_06 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_07 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_08 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_09 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_10 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_11 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_12 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_13 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_14 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_15 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_16 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_17 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_18 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_19 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_20 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_21 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_22 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_23 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_24 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_25 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_26 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_27 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_28 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_29 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_30 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_31 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_32 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_33 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_34 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_35 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_36 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_37 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_38 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_39 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + output [3:0] DO; + input [11:0] ADDR; + input [3:0] DI; + input EN; + (* clkbuf_sink *) + input CLK; + input WE; + input SSR; +endmodule + +module RAMB16_S9 (...); + parameter [8:0] INIT = 9'h0; + parameter [8:0] SRVAL = 9'h0; + parameter WRITE_MODE = "WRITE_FIRST"; + parameter [255:0] INIT_00 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_01 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_02 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_03 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_04 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_05 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_06 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_07 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_08 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_09 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_10 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_11 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_12 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_13 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_14 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_15 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_16 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_17 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_18 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_19 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_20 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_21 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_22 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_23 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_24 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_25 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_26 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_27 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_28 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_29 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_30 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_31 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_32 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_33 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_34 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_35 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_36 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_37 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_38 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_39 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_00 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_01 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_02 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_03 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_04 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_05 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_06 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_07 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + output [7:0] DO; + output [0:0] DOP; + input [10:0] ADDR; + input [7:0] DI; + input [0:0] DIP; + input EN; + (* clkbuf_sink *) + input CLK; + input WE; + input SSR; +endmodule + +module RAMB16_S18 (...); + parameter [17:0] INIT = 18'h0; + parameter [17:0] SRVAL = 18'h0; + parameter WRITE_MODE = "WRITE_FIRST"; + parameter [255:0] INIT_00 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_01 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_02 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_03 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_04 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_05 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_06 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_07 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_08 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_09 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_10 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_11 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_12 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_13 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_14 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_15 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_16 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_17 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_18 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_19 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_20 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_21 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_22 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_23 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_24 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_25 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_26 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_27 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_28 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_29 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_30 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_31 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_32 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_33 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_34 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_35 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_36 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_37 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_38 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_39 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_00 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_01 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_02 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_03 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_04 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_05 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_06 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_07 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + output [15:0] DO; + output [1:0] DOP; + input [9:0] ADDR; + input [15:0] DI; + input [1:0] DIP; + input EN; + (* clkbuf_sink *) + input CLK; + input WE; + input SSR; +endmodule + +module RAMB16_S36 (...); + parameter [35:0] INIT = 36'h0; + parameter [35:0] SRVAL = 36'h0; + parameter WRITE_MODE = "WRITE_FIRST"; + parameter [255:0] INIT_00 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_01 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_02 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_03 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_04 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_05 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_06 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_07 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_08 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_09 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_10 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_11 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_12 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_13 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_14 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_15 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_16 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_17 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_18 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_19 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_20 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_21 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_22 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_23 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_24 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_25 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_26 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_27 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_28 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_29 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_30 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_31 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_32 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_33 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_34 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_35 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_36 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_37 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_38 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_39 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_00 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_01 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_02 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_03 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_04 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_05 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_06 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_07 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + output [31:0] DO; + output [3:0] DOP; + input [8:0] ADDR; + input [31:0] DI; + input [3:0] DIP; + input EN; + (* clkbuf_sink *) + input CLK; + input WE; + input SSR; +endmodule + +module RAMB16_S1_S1 (...); + parameter [0:0] INIT_A = 1'h0; + parameter [0:0] INIT_B = 1'h0; + parameter [0:0] SRVAL_A = 1'h0; + parameter [0:0] SRVAL_B = 1'h0; + parameter WRITE_MODE_A = "WRITE_FIRST"; + parameter WRITE_MODE_B = "WRITE_FIRST"; + parameter SIM_COLLISION_CHECK = "ALL"; + parameter [255:0] INIT_00 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_01 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_02 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_03 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_04 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_05 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_06 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_07 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_08 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_09 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_10 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_11 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_12 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_13 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_14 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_15 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_16 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_17 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_18 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_19 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_20 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_21 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_22 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_23 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_24 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_25 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_26 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_27 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_28 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_29 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_30 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_31 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_32 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_33 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_34 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_35 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_36 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_37 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_38 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_39 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + output [0:0] DOA; + input [13:0] ADDRA; + input [0:0] DIA; + input ENA; + (* clkbuf_sink *) + input CLKA; + input WEA; + input SSRA; + output [0:0] DOB; + input [13:0] ADDRB; + input [0:0] DIB; + input ENB; + (* clkbuf_sink *) + input CLKB; + input WEB; + input SSRB; +endmodule + +module RAMB16_S1_S2 (...); + parameter [0:0] INIT_A = 1'h0; + parameter [1:0] INIT_B = 2'h0; + parameter [0:0] SRVAL_A = 1'h0; + parameter [1:0] SRVAL_B = 2'h0; + parameter WRITE_MODE_A = "WRITE_FIRST"; + parameter WRITE_MODE_B = "WRITE_FIRST"; + parameter SIM_COLLISION_CHECK = "ALL"; + parameter [255:0] INIT_00 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_01 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_02 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_03 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_04 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_05 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_06 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_07 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_08 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_09 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_10 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_11 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_12 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_13 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_14 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_15 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_16 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_17 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_18 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_19 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_20 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_21 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_22 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_23 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_24 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_25 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_26 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_27 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_28 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_29 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_30 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_31 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_32 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_33 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_34 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_35 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_36 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_37 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_38 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_39 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + output [0:0] DOA; + input [13:0] ADDRA; + input [0:0] DIA; + input ENA; + (* clkbuf_sink *) + input CLKA; + input WEA; + input SSRA; + output [1:0] DOB; + input [12:0] ADDRB; + input [1:0] DIB; + input ENB; + (* clkbuf_sink *) + input CLKB; + input WEB; + input SSRB; +endmodule + +module RAMB16_S1_S4 (...); + parameter [0:0] INIT_A = 1'h0; + parameter [3:0] INIT_B = 4'h0; + parameter [0:0] SRVAL_A = 1'h0; + parameter [3:0] SRVAL_B = 4'h0; + parameter WRITE_MODE_A = "WRITE_FIRST"; + parameter WRITE_MODE_B = "WRITE_FIRST"; + parameter SIM_COLLISION_CHECK = "ALL"; + parameter [255:0] INIT_00 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_01 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_02 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_03 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_04 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_05 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_06 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_07 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_08 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_09 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_10 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_11 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_12 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_13 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_14 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_15 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_16 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_17 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_18 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_19 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_20 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_21 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_22 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_23 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_24 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_25 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_26 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_27 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_28 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_29 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_30 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_31 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_32 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_33 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_34 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_35 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_36 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_37 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_38 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_39 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + output [0:0] DOA; + input [13:0] ADDRA; + input [0:0] DIA; + input ENA; + (* clkbuf_sink *) + input CLKA; + input WEA; + input SSRA; + output [3:0] DOB; + input [11:0] ADDRB; + input [3:0] DIB; + input ENB; + (* clkbuf_sink *) + input CLKB; + input WEB; + input SSRB; +endmodule + +module RAMB16_S1_S9 (...); + parameter [0:0] INIT_A = 1'h0; + parameter [8:0] INIT_B = 9'h0; + parameter [0:0] SRVAL_A = 1'h0; + parameter [8:0] SRVAL_B = 9'h0; + parameter WRITE_MODE_A = "WRITE_FIRST"; + parameter WRITE_MODE_B = "WRITE_FIRST"; + parameter SIM_COLLISION_CHECK = "ALL"; + parameter [255:0] INIT_00 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_01 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_02 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_03 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_04 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_05 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_06 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_07 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_08 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_09 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_10 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_11 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_12 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_13 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_14 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_15 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_16 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_17 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_18 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_19 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_20 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_21 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_22 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_23 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_24 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_25 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_26 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_27 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_28 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_29 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_30 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_31 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_32 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_33 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_34 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_35 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_36 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_37 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_38 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_39 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_00 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_01 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_02 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_03 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_04 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_05 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_06 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_07 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + output [0:0] DOA; + input [13:0] ADDRA; + input [0:0] DIA; + input ENA; + (* clkbuf_sink *) + input CLKA; + input WEA; + input SSRA; + output [7:0] DOB; + output [0:0] DOPB; + input [10:0] ADDRB; + input [7:0] DIB; + input [0:0] DIPB; + input ENB; + (* clkbuf_sink *) + input CLKB; + input WEB; + input SSRB; +endmodule + +module RAMB16_S1_S18 (...); + parameter [0:0] INIT_A = 1'h0; + parameter [17:0] INIT_B = 18'h0; + parameter [0:0] SRVAL_A = 1'h0; + parameter [17:0] SRVAL_B = 18'h0; + parameter WRITE_MODE_A = "WRITE_FIRST"; + parameter WRITE_MODE_B = "WRITE_FIRST"; + parameter SIM_COLLISION_CHECK = "ALL"; + parameter [255:0] INIT_00 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_01 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_02 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_03 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_04 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_05 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_06 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_07 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_08 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_09 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_10 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_11 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_12 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_13 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_14 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_15 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_16 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_17 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_18 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_19 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_20 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_21 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_22 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_23 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_24 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_25 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_26 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_27 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_28 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_29 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_30 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_31 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_32 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_33 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_34 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_35 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_36 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_37 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_38 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_39 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_00 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_01 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_02 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_03 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_04 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_05 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_06 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_07 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + output [0:0] DOA; + input [13:0] ADDRA; + input [0:0] DIA; + input ENA; + (* clkbuf_sink *) + input CLKA; + input WEA; + input SSRA; + output [15:0] DOB; + output [1:0] DOPB; + input [9:0] ADDRB; + input [15:0] DIB; + input [1:0] DIPB; + input ENB; + (* clkbuf_sink *) + input CLKB; + input WEB; + input SSRB; +endmodule + +module RAMB16_S1_S36 (...); + parameter [0:0] INIT_A = 1'h0; + parameter [35:0] INIT_B = 36'h0; + parameter [0:0] SRVAL_A = 1'h0; + parameter [35:0] SRVAL_B = 36'h0; + parameter WRITE_MODE_A = "WRITE_FIRST"; + parameter WRITE_MODE_B = "WRITE_FIRST"; + parameter SIM_COLLISION_CHECK = "ALL"; + parameter [255:0] INIT_00 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_01 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_02 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_03 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_04 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_05 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_06 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_07 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_08 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_09 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_10 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_11 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_12 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_13 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_14 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_15 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_16 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_17 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_18 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_19 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_20 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_21 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_22 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_23 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_24 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_25 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_26 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_27 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_28 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_29 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_30 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_31 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_32 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_33 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_34 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_35 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_36 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_37 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_38 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_39 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_00 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_01 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_02 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_03 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_04 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_05 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_06 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_07 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + output [0:0] DOA; + input [13:0] ADDRA; + input [0:0] DIA; + input ENA; + (* clkbuf_sink *) + input CLKA; + input WEA; + input SSRA; + output [31:0] DOB; + output [3:0] DOPB; + input [8:0] ADDRB; + input [31:0] DIB; + input [3:0] DIPB; + input ENB; + (* clkbuf_sink *) + input CLKB; + input WEB; + input SSRB; +endmodule + +module RAMB16_S2_S2 (...); + parameter [1:0] INIT_A = 2'h0; + parameter [1:0] INIT_B = 2'h0; + parameter [1:0] SRVAL_A = 2'h0; + parameter [1:0] SRVAL_B = 2'h0; + parameter WRITE_MODE_A = "WRITE_FIRST"; + parameter WRITE_MODE_B = "WRITE_FIRST"; + parameter SIM_COLLISION_CHECK = "ALL"; + parameter [255:0] INIT_00 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_01 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_02 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_03 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_04 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_05 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_06 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_07 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_08 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_09 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_10 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_11 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_12 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_13 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_14 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_15 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_16 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_17 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_18 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_19 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_20 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_21 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_22 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_23 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_24 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_25 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_26 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_27 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_28 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_29 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_30 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_31 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_32 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_33 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_34 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_35 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_36 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_37 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_38 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_39 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + output [1:0] DOA; + input [12:0] ADDRA; + input [1:0] DIA; + input ENA; + (* clkbuf_sink *) + input CLKA; + input WEA; + input SSRA; + output [1:0] DOB; + input [12:0] ADDRB; + input [1:0] DIB; + input ENB; + (* clkbuf_sink *) + input CLKB; + input WEB; + input SSRB; +endmodule + +module RAMB16_S2_S4 (...); + parameter [1:0] INIT_A = 2'h0; + parameter [3:0] INIT_B = 4'h0; + parameter [1:0] SRVAL_A = 2'h0; + parameter [3:0] SRVAL_B = 4'h0; + parameter WRITE_MODE_A = "WRITE_FIRST"; + parameter WRITE_MODE_B = "WRITE_FIRST"; + parameter SIM_COLLISION_CHECK = "ALL"; + parameter [255:0] INIT_00 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_01 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_02 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_03 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_04 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_05 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_06 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_07 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_08 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_09 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_10 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_11 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_12 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_13 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_14 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_15 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_16 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_17 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_18 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_19 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_20 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_21 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_22 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_23 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_24 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_25 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_26 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_27 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_28 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_29 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_30 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_31 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_32 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_33 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_34 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_35 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_36 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_37 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_38 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_39 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + output [1:0] DOA; + input [12:0] ADDRA; + input [1:0] DIA; + input ENA; + (* clkbuf_sink *) + input CLKA; + input WEA; + input SSRA; + output [3:0] DOB; + input [11:0] ADDRB; + input [3:0] DIB; + input ENB; + (* clkbuf_sink *) + input CLKB; + input WEB; + input SSRB; +endmodule + +module RAMB16_S2_S9 (...); + parameter [1:0] INIT_A = 2'h0; + parameter [8:0] INIT_B = 9'h0; + parameter [1:0] SRVAL_A = 2'h0; + parameter [8:0] SRVAL_B = 9'h0; + parameter WRITE_MODE_A = "WRITE_FIRST"; + parameter WRITE_MODE_B = "WRITE_FIRST"; + parameter SIM_COLLISION_CHECK = "ALL"; + parameter [255:0] INIT_00 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_01 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_02 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_03 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_04 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_05 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_06 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_07 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_08 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_09 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_10 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_11 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_12 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_13 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_14 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_15 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_16 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_17 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_18 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_19 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_20 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_21 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_22 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_23 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_24 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_25 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_26 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_27 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_28 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_29 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_30 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_31 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_32 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_33 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_34 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_35 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_36 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_37 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_38 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_39 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_00 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_01 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_02 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_03 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_04 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_05 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_06 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_07 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + output [1:0] DOA; + input [12:0] ADDRA; + input [1:0] DIA; + input ENA; + (* clkbuf_sink *) + input CLKA; + input WEA; + input SSRA; + output [7:0] DOB; + output [0:0] DOPB; + input [10:0] ADDRB; + input [7:0] DIB; + input [0:0] DIPB; + input ENB; + (* clkbuf_sink *) + input CLKB; + input WEB; + input SSRB; +endmodule + +module RAMB16_S2_S18 (...); + parameter [1:0] INIT_A = 2'h0; + parameter [17:0] INIT_B = 18'h0; + parameter [1:0] SRVAL_A = 2'h0; + parameter [17:0] SRVAL_B = 18'h0; + parameter WRITE_MODE_A = "WRITE_FIRST"; + parameter WRITE_MODE_B = "WRITE_FIRST"; + parameter SIM_COLLISION_CHECK = "ALL"; + parameter [255:0] INIT_00 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_01 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_02 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_03 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_04 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_05 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_06 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_07 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_08 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_09 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_10 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_11 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_12 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_13 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_14 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_15 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_16 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_17 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_18 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_19 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_20 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_21 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_22 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_23 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_24 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_25 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_26 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_27 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_28 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_29 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_30 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_31 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_32 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_33 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_34 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_35 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_36 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_37 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_38 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_39 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_00 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_01 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_02 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_03 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_04 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_05 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_06 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_07 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + output [1:0] DOA; + input [12:0] ADDRA; + input [1:0] DIA; + input ENA; + (* clkbuf_sink *) + input CLKA; + input WEA; + input SSRA; + output [15:0] DOB; + output [1:0] DOPB; + input [9:0] ADDRB; + input [15:0] DIB; + input [1:0] DIPB; + input ENB; + (* clkbuf_sink *) + input CLKB; + input WEB; + input SSRB; +endmodule + +module RAMB16_S2_S36 (...); + parameter [1:0] INIT_A = 2'h0; + parameter [35:0] INIT_B = 36'h0; + parameter [1:0] SRVAL_A = 2'h0; + parameter [35:0] SRVAL_B = 36'h0; + parameter WRITE_MODE_A = "WRITE_FIRST"; + parameter WRITE_MODE_B = "WRITE_FIRST"; + parameter SIM_COLLISION_CHECK = "ALL"; + parameter [255:0] INIT_00 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_01 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_02 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_03 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_04 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_05 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_06 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_07 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_08 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_09 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_10 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_11 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_12 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_13 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_14 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_15 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_16 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_17 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_18 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_19 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_20 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_21 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_22 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_23 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_24 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_25 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_26 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_27 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_28 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_29 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_30 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_31 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_32 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_33 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_34 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_35 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_36 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_37 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_38 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_39 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_00 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_01 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_02 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_03 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_04 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_05 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_06 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_07 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + output [1:0] DOA; + input [12:0] ADDRA; + input [1:0] DIA; + input ENA; + (* clkbuf_sink *) + input CLKA; + input WEA; + input SSRA; + output [31:0] DOB; + output [3:0] DOPB; + input [8:0] ADDRB; + input [31:0] DIB; + input [3:0] DIPB; + input ENB; + (* clkbuf_sink *) + input CLKB; + input WEB; + input SSRB; +endmodule + +module RAMB16_S4_S4 (...); + parameter [3:0] INIT_A = 4'h0; + parameter [3:0] INIT_B = 4'h0; + parameter [3:0] SRVAL_A = 4'h0; + parameter [3:0] SRVAL_B = 4'h0; + parameter WRITE_MODE_A = "WRITE_FIRST"; + parameter WRITE_MODE_B = "WRITE_FIRST"; + parameter SIM_COLLISION_CHECK = "ALL"; + parameter [255:0] INIT_00 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_01 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_02 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_03 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_04 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_05 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_06 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_07 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_08 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_09 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_10 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_11 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_12 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_13 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_14 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_15 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_16 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_17 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_18 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_19 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_20 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_21 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_22 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_23 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_24 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_25 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_26 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_27 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_28 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_29 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_30 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_31 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_32 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_33 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_34 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_35 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_36 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_37 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_38 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_39 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + output [3:0] DOA; + input [11:0] ADDRA; + input [3:0] DIA; + input ENA; + (* clkbuf_sink *) + input CLKA; + input WEA; + input SSRA; + output [3:0] DOB; + input [11:0] ADDRB; + input [3:0] DIB; + input ENB; + (* clkbuf_sink *) + input CLKB; + input WEB; + input SSRB; +endmodule + +module RAMB16_S4_S9 (...); + parameter [3:0] INIT_A = 4'h0; + parameter [8:0] INIT_B = 9'h0; + parameter [3:0] SRVAL_A = 4'h0; + parameter [8:0] SRVAL_B = 9'h0; + parameter WRITE_MODE_A = "WRITE_FIRST"; + parameter WRITE_MODE_B = "WRITE_FIRST"; + parameter SIM_COLLISION_CHECK = "ALL"; + parameter [255:0] INIT_00 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_01 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_02 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_03 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_04 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_05 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_06 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_07 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_08 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_09 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_10 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_11 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_12 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_13 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_14 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_15 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_16 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_17 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_18 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_19 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_20 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_21 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_22 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_23 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_24 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_25 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_26 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_27 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_28 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_29 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_30 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_31 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_32 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_33 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_34 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_35 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_36 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_37 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_38 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_39 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_00 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_01 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_02 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_03 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_04 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_05 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_06 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_07 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + output [3:0] DOA; + input [11:0] ADDRA; + input [3:0] DIA; + input ENA; + (* clkbuf_sink *) + input CLKA; + input WEA; + input SSRA; + output [7:0] DOB; + output [0:0] DOPB; + input [10:0] ADDRB; + input [7:0] DIB; + input [0:0] DIPB; + input ENB; + (* clkbuf_sink *) + input CLKB; + input WEB; + input SSRB; +endmodule + +module RAMB16_S4_S18 (...); + parameter [3:0] INIT_A = 4'h0; + parameter [17:0] INIT_B = 18'h0; + parameter [3:0] SRVAL_A = 4'h0; + parameter [17:0] SRVAL_B = 18'h0; + parameter WRITE_MODE_A = "WRITE_FIRST"; + parameter WRITE_MODE_B = "WRITE_FIRST"; + parameter SIM_COLLISION_CHECK = "ALL"; + parameter [255:0] INIT_00 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_01 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_02 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_03 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_04 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_05 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_06 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_07 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_08 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_09 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_10 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_11 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_12 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_13 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_14 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_15 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_16 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_17 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_18 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_19 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_20 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_21 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_22 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_23 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_24 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_25 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_26 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_27 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_28 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_29 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_30 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_31 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_32 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_33 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_34 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_35 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_36 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_37 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_38 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_39 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_00 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_01 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_02 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_03 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_04 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_05 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_06 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_07 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + output [3:0] DOA; + input [11:0] ADDRA; + input [3:0] DIA; + input ENA; + (* clkbuf_sink *) + input CLKA; + input WEA; + input SSRA; + output [15:0] DOB; + output [1:0] DOPB; + input [9:0] ADDRB; + input [15:0] DIB; + input [1:0] DIPB; + input ENB; + (* clkbuf_sink *) + input CLKB; + input WEB; + input SSRB; +endmodule + +module RAMB16_S4_S36 (...); + parameter [3:0] INIT_A = 4'h0; + parameter [35:0] INIT_B = 36'h0; + parameter [3:0] SRVAL_A = 4'h0; + parameter [35:0] SRVAL_B = 36'h0; + parameter WRITE_MODE_A = "WRITE_FIRST"; + parameter WRITE_MODE_B = "WRITE_FIRST"; + parameter SIM_COLLISION_CHECK = "ALL"; + parameter [255:0] INIT_00 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_01 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_02 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_03 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_04 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_05 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_06 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_07 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_08 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_09 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_10 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_11 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_12 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_13 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_14 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_15 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_16 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_17 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_18 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_19 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_20 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_21 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_22 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_23 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_24 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_25 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_26 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_27 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_28 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_29 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_30 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_31 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_32 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_33 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_34 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_35 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_36 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_37 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_38 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_39 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_00 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_01 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_02 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_03 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_04 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_05 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_06 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_07 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + output [3:0] DOA; + input [11:0] ADDRA; + input [3:0] DIA; + input ENA; + (* clkbuf_sink *) + input CLKA; + input WEA; + input SSRA; + output [31:0] DOB; + output [3:0] DOPB; + input [8:0] ADDRB; + input [31:0] DIB; + input [3:0] DIPB; + input ENB; + (* clkbuf_sink *) + input CLKB; + input WEB; + input SSRB; +endmodule + +module RAMB16_S9_S9 (...); + parameter [8:0] INIT_A = 9'h0; + parameter [8:0] INIT_B = 9'h0; + parameter [8:0] SRVAL_A = 9'h0; + parameter [8:0] SRVAL_B = 9'h0; + parameter WRITE_MODE_A = "WRITE_FIRST"; + parameter WRITE_MODE_B = "WRITE_FIRST"; + parameter SIM_COLLISION_CHECK = "ALL"; + parameter [255:0] INIT_00 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_01 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_02 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_03 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_04 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_05 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_06 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_07 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_08 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_09 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_10 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_11 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_12 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_13 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_14 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_15 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_16 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_17 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_18 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_19 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_20 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_21 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_22 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_23 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_24 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_25 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_26 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_27 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_28 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_29 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_30 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_31 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_32 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_33 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_34 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_35 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_36 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_37 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_38 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_39 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_00 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_01 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_02 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_03 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_04 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_05 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_06 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_07 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + output [7:0] DOA; + output [0:0] DOPA; + input [10:0] ADDRA; + input [7:0] DIA; + input [0:0] DIPA; + input ENA; + (* clkbuf_sink *) + input CLKA; + input WEA; + input SSRA; + output [7:0] DOB; + output [0:0] DOPB; + input [10:0] ADDRB; + input [7:0] DIB; + input [0:0] DIPB; + input ENB; + (* clkbuf_sink *) + input CLKB; + input WEB; + input SSRB; +endmodule + +module RAMB16_S9_S18 (...); + parameter [8:0] INIT_A = 9'h0; + parameter [17:0] INIT_B = 18'h0; + parameter [8:0] SRVAL_A = 9'h0; + parameter [17:0] SRVAL_B = 18'h0; + parameter WRITE_MODE_A = "WRITE_FIRST"; + parameter WRITE_MODE_B = "WRITE_FIRST"; + parameter SIM_COLLISION_CHECK = "ALL"; + parameter [255:0] INIT_00 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_01 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_02 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_03 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_04 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_05 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_06 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_07 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_08 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_09 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_10 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_11 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_12 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_13 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_14 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_15 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_16 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_17 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_18 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_19 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_20 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_21 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_22 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_23 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_24 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_25 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_26 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_27 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_28 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_29 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_30 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_31 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_32 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_33 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_34 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_35 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_36 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_37 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_38 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_39 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_00 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_01 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_02 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_03 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_04 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_05 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_06 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_07 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + output [7:0] DOA; + output [0:0] DOPA; + input [10:0] ADDRA; + input [7:0] DIA; + input [0:0] DIPA; + input ENA; + (* clkbuf_sink *) + input CLKA; + input WEA; + input SSRA; + output [15:0] DOB; + output [1:0] DOPB; + input [9:0] ADDRB; + input [15:0] DIB; + input [1:0] DIPB; + input ENB; + (* clkbuf_sink *) + input CLKB; + input WEB; + input SSRB; +endmodule + +module RAMB16_S9_S36 (...); + parameter [8:0] INIT_A = 9'h0; + parameter [35:0] INIT_B = 36'h0; + parameter [8:0] SRVAL_A = 9'h0; + parameter [35:0] SRVAL_B = 36'h0; + parameter WRITE_MODE_A = "WRITE_FIRST"; + parameter WRITE_MODE_B = "WRITE_FIRST"; + parameter SIM_COLLISION_CHECK = "ALL"; + parameter [255:0] INIT_00 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_01 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_02 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_03 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_04 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_05 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_06 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_07 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_08 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_09 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_10 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_11 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_12 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_13 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_14 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_15 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_16 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_17 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_18 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_19 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_20 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_21 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_22 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_23 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_24 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_25 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_26 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_27 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_28 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_29 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_30 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_31 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_32 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_33 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_34 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_35 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_36 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_37 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_38 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_39 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_00 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_01 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_02 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_03 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_04 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_05 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_06 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_07 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + output [7:0] DOA; + output [0:0] DOPA; + input [10:0] ADDRA; + input [7:0] DIA; + input [0:0] DIPA; + input ENA; + (* clkbuf_sink *) + input CLKA; + input WEA; + input SSRA; + output [31:0] DOB; + output [3:0] DOPB; + input [8:0] ADDRB; + input [31:0] DIB; + input [3:0] DIPB; + input ENB; + (* clkbuf_sink *) + input CLKB; + input WEB; + input SSRB; +endmodule + +module RAMB16_S18_S18 (...); + parameter [17:0] INIT_A = 18'h0; + parameter [17:0] INIT_B = 18'h0; + parameter [17:0] SRVAL_A = 18'h0; + parameter [17:0] SRVAL_B = 18'h0; + parameter WRITE_MODE_A = "WRITE_FIRST"; + parameter WRITE_MODE_B = "WRITE_FIRST"; + parameter SIM_COLLISION_CHECK = "ALL"; + parameter [255:0] INIT_00 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_01 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_02 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_03 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_04 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_05 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_06 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_07 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_08 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_09 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_10 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_11 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_12 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_13 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_14 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_15 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_16 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_17 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_18 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_19 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_20 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_21 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_22 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_23 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_24 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_25 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_26 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_27 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_28 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_29 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_30 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_31 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_32 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_33 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_34 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_35 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_36 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_37 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_38 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_39 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_00 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_01 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_02 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_03 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_04 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_05 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_06 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_07 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + output [15:0] DOA; + output [1:0] DOPA; + input [9:0] ADDRA; + input [15:0] DIA; + input [1:0] DIPA; + input ENA; + (* clkbuf_sink *) + input CLKA; + input WEA; + input SSRA; + output [15:0] DOB; + output [1:0] DOPB; + input [9:0] ADDRB; + input [15:0] DIB; + input [1:0] DIPB; + input ENB; + (* clkbuf_sink *) + input CLKB; + input WEB; + input SSRB; +endmodule + +module RAMB16_S18_S36 (...); + parameter [17:0] INIT_A = 18'h0; + parameter [35:0] INIT_B = 36'h0; + parameter [17:0] SRVAL_A = 18'h0; + parameter [35:0] SRVAL_B = 36'h0; + parameter WRITE_MODE_A = "WRITE_FIRST"; + parameter WRITE_MODE_B = "WRITE_FIRST"; + parameter SIM_COLLISION_CHECK = "ALL"; + parameter [255:0] INIT_00 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_01 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_02 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_03 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_04 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_05 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_06 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_07 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_08 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_09 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_10 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_11 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_12 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_13 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_14 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_15 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_16 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_17 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_18 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_19 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_20 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_21 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_22 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_23 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_24 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_25 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_26 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_27 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_28 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_29 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_30 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_31 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_32 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_33 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_34 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_35 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_36 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_37 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_38 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_39 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_00 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_01 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_02 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_03 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_04 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_05 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_06 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_07 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + output [15:0] DOA; + output [1:0] DOPA; + input [9:0] ADDRA; + input [15:0] DIA; + input [1:0] DIPA; + input ENA; + (* clkbuf_sink *) + input CLKA; + input WEA; + input SSRA; + output [31:0] DOB; + output [3:0] DOPB; + input [8:0] ADDRB; + input [31:0] DIB; + input [3:0] DIPB; + input ENB; + (* clkbuf_sink *) + input CLKB; + input WEB; + input SSRB; +endmodule + +module RAMB16_S36_S36 (...); + parameter [35:0] INIT_A = 36'h0; + parameter [35:0] INIT_B = 36'h0; + parameter [35:0] SRVAL_A = 36'h0; + parameter [35:0] SRVAL_B = 36'h0; + parameter WRITE_MODE_A = "WRITE_FIRST"; + parameter WRITE_MODE_B = "WRITE_FIRST"; + parameter SIM_COLLISION_CHECK = "ALL"; + parameter [255:0] INIT_00 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_01 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_02 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_03 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_04 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_05 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_06 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_07 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_08 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_09 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_10 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_11 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_12 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_13 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_14 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_15 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_16 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_17 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_18 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_19 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_20 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_21 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_22 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_23 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_24 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_25 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_26 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_27 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_28 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_29 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_30 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_31 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_32 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_33 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_34 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_35 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_36 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_37 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_38 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_39 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_00 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_01 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_02 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_03 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_04 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_05 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_06 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_07 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + output [31:0] DOA; + output [3:0] DOPA; + input [8:0] ADDRA; + input [31:0] DIA; + input [3:0] DIPA; + input ENA; + (* clkbuf_sink *) + input CLKA; + input WEA; + input SSRA; + output [31:0] DOB; + output [3:0] DOPB; + input [8:0] ADDRB; + input [31:0] DIB; + input [3:0] DIPB; + input ENB; + (* clkbuf_sink *) + input CLKB; + input WEB; + input SSRB; +endmodule + +module RAMB16BWE_S18 (...); + parameter [17:0] INIT = 18'h0; + parameter [255:0] INITP_00 = 256'h0; + parameter [255:0] INITP_01 = 256'h0; + parameter [255:0] INITP_02 = 256'h0; + parameter [255:0] INITP_03 = 256'h0; + parameter [255:0] INITP_04 = 256'h0; + parameter [255:0] INITP_05 = 256'h0; + parameter [255:0] INITP_06 = 256'h0; + parameter [255:0] INITP_07 = 256'h0; + parameter [255:0] INIT_00 = 256'h0; + parameter [255:0] INIT_01 = 256'h0; + parameter [255:0] INIT_02 = 256'h0; + parameter [255:0] INIT_03 = 256'h0; + parameter [255:0] INIT_04 = 256'h0; + parameter [255:0] INIT_05 = 256'h0; + parameter [255:0] INIT_06 = 256'h0; + parameter [255:0] INIT_07 = 256'h0; + parameter [255:0] INIT_08 = 256'h0; + parameter [255:0] INIT_09 = 256'h0; + parameter [255:0] INIT_0A = 256'h0; + parameter [255:0] INIT_0B = 256'h0; + parameter [255:0] INIT_0C = 256'h0; + parameter [255:0] INIT_0D = 256'h0; + parameter [255:0] INIT_0E = 256'h0; + parameter [255:0] INIT_0F = 256'h0; + parameter [255:0] INIT_10 = 256'h0; + parameter [255:0] INIT_11 = 256'h0; + parameter [255:0] INIT_12 = 256'h0; + parameter [255:0] INIT_13 = 256'h0; + parameter [255:0] INIT_14 = 256'h0; + parameter [255:0] INIT_15 = 256'h0; + parameter [255:0] INIT_16 = 256'h0; + parameter [255:0] INIT_17 = 256'h0; + parameter [255:0] INIT_18 = 256'h0; + parameter [255:0] INIT_19 = 256'h0; + parameter [255:0] INIT_1A = 256'h0; + parameter [255:0] INIT_1B = 256'h0; + parameter [255:0] INIT_1C = 256'h0; + parameter [255:0] INIT_1D = 256'h0; + parameter [255:0] INIT_1E = 256'h0; + parameter [255:0] INIT_1F = 256'h0; + parameter [255:0] INIT_20 = 256'h0; + parameter [255:0] INIT_21 = 256'h0; + parameter [255:0] INIT_22 = 256'h0; + parameter [255:0] INIT_23 = 256'h0; + parameter [255:0] INIT_24 = 256'h0; + parameter [255:0] INIT_25 = 256'h0; + parameter [255:0] INIT_26 = 256'h0; + parameter [255:0] INIT_27 = 256'h0; + parameter [255:0] INIT_28 = 256'h0; + parameter [255:0] INIT_29 = 256'h0; + parameter [255:0] INIT_2A = 256'h0; + parameter [255:0] INIT_2B = 256'h0; + parameter [255:0] INIT_2C = 256'h0; + parameter [255:0] INIT_2D = 256'h0; + parameter [255:0] INIT_2E = 256'h0; + parameter [255:0] INIT_2F = 256'h0; + parameter [255:0] INIT_30 = 256'h0; + parameter [255:0] INIT_31 = 256'h0; + parameter [255:0] INIT_32 = 256'h0; + parameter [255:0] INIT_33 = 256'h0; + parameter [255:0] INIT_34 = 256'h0; + parameter [255:0] INIT_35 = 256'h0; + parameter [255:0] INIT_36 = 256'h0; + parameter [255:0] INIT_37 = 256'h0; + parameter [255:0] INIT_38 = 256'h0; + parameter [255:0] INIT_39 = 256'h0; + parameter [255:0] INIT_3A = 256'h0; + parameter [255:0] INIT_3B = 256'h0; + parameter [255:0] INIT_3C = 256'h0; + parameter [255:0] INIT_3D = 256'h0; + parameter [255:0] INIT_3E = 256'h0; + parameter [255:0] INIT_3F = 256'h0; + parameter [17:0] SRVAL = 18'h0; + parameter WRITE_MODE = "WRITE_FIRST"; + output [15:0] DO; + output [1:0] DOP; + (* clkbuf_sink *) + input CLK; + input EN; + input SSR; + input [1:0] WE; + input [15:0] DI; + input [1:0] DIP; + input [9:0] ADDR; +endmodule + +module RAMB16BWE_S36 (...); + parameter [35:0] INIT = 36'h0; + parameter [255:0] INITP_00 = 256'h0; + parameter [255:0] INITP_01 = 256'h0; + parameter [255:0] INITP_02 = 256'h0; + parameter [255:0] INITP_03 = 256'h0; + parameter [255:0] INITP_04 = 256'h0; + parameter [255:0] INITP_05 = 256'h0; + parameter [255:0] INITP_06 = 256'h0; + parameter [255:0] INITP_07 = 256'h0; + parameter [255:0] INIT_00 = 256'h0; + parameter [255:0] INIT_01 = 256'h0; + parameter [255:0] INIT_02 = 256'h0; + parameter [255:0] INIT_03 = 256'h0; + parameter [255:0] INIT_04 = 256'h0; + parameter [255:0] INIT_05 = 256'h0; + parameter [255:0] INIT_06 = 256'h0; + parameter [255:0] INIT_07 = 256'h0; + parameter [255:0] INIT_08 = 256'h0; + parameter [255:0] INIT_09 = 256'h0; + parameter [255:0] INIT_0A = 256'h0; + parameter [255:0] INIT_0B = 256'h0; + parameter [255:0] INIT_0C = 256'h0; + parameter [255:0] INIT_0D = 256'h0; + parameter [255:0] INIT_0E = 256'h0; + parameter [255:0] INIT_0F = 256'h0; + parameter [255:0] INIT_10 = 256'h0; + parameter [255:0] INIT_11 = 256'h0; + parameter [255:0] INIT_12 = 256'h0; + parameter [255:0] INIT_13 = 256'h0; + parameter [255:0] INIT_14 = 256'h0; + parameter [255:0] INIT_15 = 256'h0; + parameter [255:0] INIT_16 = 256'h0; + parameter [255:0] INIT_17 = 256'h0; + parameter [255:0] INIT_18 = 256'h0; + parameter [255:0] INIT_19 = 256'h0; + parameter [255:0] INIT_1A = 256'h0; + parameter [255:0] INIT_1B = 256'h0; + parameter [255:0] INIT_1C = 256'h0; + parameter [255:0] INIT_1D = 256'h0; + parameter [255:0] INIT_1E = 256'h0; + parameter [255:0] INIT_1F = 256'h0; + parameter [255:0] INIT_20 = 256'h0; + parameter [255:0] INIT_21 = 256'h0; + parameter [255:0] INIT_22 = 256'h0; + parameter [255:0] INIT_23 = 256'h0; + parameter [255:0] INIT_24 = 256'h0; + parameter [255:0] INIT_25 = 256'h0; + parameter [255:0] INIT_26 = 256'h0; + parameter [255:0] INIT_27 = 256'h0; + parameter [255:0] INIT_28 = 256'h0; + parameter [255:0] INIT_29 = 256'h0; + parameter [255:0] INIT_2A = 256'h0; + parameter [255:0] INIT_2B = 256'h0; + parameter [255:0] INIT_2C = 256'h0; + parameter [255:0] INIT_2D = 256'h0; + parameter [255:0] INIT_2E = 256'h0; + parameter [255:0] INIT_2F = 256'h0; + parameter [255:0] INIT_30 = 256'h0; + parameter [255:0] INIT_31 = 256'h0; + parameter [255:0] INIT_32 = 256'h0; + parameter [255:0] INIT_33 = 256'h0; + parameter [255:0] INIT_34 = 256'h0; + parameter [255:0] INIT_35 = 256'h0; + parameter [255:0] INIT_36 = 256'h0; + parameter [255:0] INIT_37 = 256'h0; + parameter [255:0] INIT_38 = 256'h0; + parameter [255:0] INIT_39 = 256'h0; + parameter [255:0] INIT_3A = 256'h0; + parameter [255:0] INIT_3B = 256'h0; + parameter [255:0] INIT_3C = 256'h0; + parameter [255:0] INIT_3D = 256'h0; + parameter [255:0] INIT_3E = 256'h0; + parameter [255:0] INIT_3F = 256'h0; + parameter [35:0] SRVAL = 36'h0; + parameter WRITE_MODE = "WRITE_FIRST"; + output [31:0] DO; + output [3:0] DOP; + (* clkbuf_sink *) + input CLK; + input EN; + input SSR; + input [3:0] WE; + input [31:0] DI; + input [3:0] DIP; + input [8:0] ADDR; +endmodule + +module RAMB16BWE_S18_S9 (...); + parameter [255:0] INITP_00 = 256'h0; + parameter [255:0] INITP_01 = 256'h0; + parameter [255:0] INITP_02 = 256'h0; + parameter [255:0] INITP_03 = 256'h0; + parameter [255:0] INITP_04 = 256'h0; + parameter [255:0] INITP_05 = 256'h0; + parameter [255:0] INITP_06 = 256'h0; + parameter [255:0] INITP_07 = 256'h0; + parameter [255:0] INIT_00 = 256'h0; + parameter [255:0] INIT_01 = 256'h0; + parameter [255:0] INIT_02 = 256'h0; + parameter [255:0] INIT_03 = 256'h0; + parameter [255:0] INIT_04 = 256'h0; + parameter [255:0] INIT_05 = 256'h0; + parameter [255:0] INIT_06 = 256'h0; + parameter [255:0] INIT_07 = 256'h0; + parameter [255:0] INIT_08 = 256'h0; + parameter [255:0] INIT_09 = 256'h0; + parameter [255:0] INIT_0A = 256'h0; + parameter [255:0] INIT_0B = 256'h0; + parameter [255:0] INIT_0C = 256'h0; + parameter [255:0] INIT_0D = 256'h0; + parameter [255:0] INIT_0E = 256'h0; + parameter [255:0] INIT_0F = 256'h0; + parameter [255:0] INIT_10 = 256'h0; + parameter [255:0] INIT_11 = 256'h0; + parameter [255:0] INIT_12 = 256'h0; + parameter [255:0] INIT_13 = 256'h0; + parameter [255:0] INIT_14 = 256'h0; + parameter [255:0] INIT_15 = 256'h0; + parameter [255:0] INIT_16 = 256'h0; + parameter [255:0] INIT_17 = 256'h0; + parameter [255:0] INIT_18 = 256'h0; + parameter [255:0] INIT_19 = 256'h0; + parameter [255:0] INIT_1A = 256'h0; + parameter [255:0] INIT_1B = 256'h0; + parameter [255:0] INIT_1C = 256'h0; + parameter [255:0] INIT_1D = 256'h0; + parameter [255:0] INIT_1E = 256'h0; + parameter [255:0] INIT_1F = 256'h0; + parameter [255:0] INIT_20 = 256'h0; + parameter [255:0] INIT_21 = 256'h0; + parameter [255:0] INIT_22 = 256'h0; + parameter [255:0] INIT_23 = 256'h0; + parameter [255:0] INIT_24 = 256'h0; + parameter [255:0] INIT_25 = 256'h0; + parameter [255:0] INIT_26 = 256'h0; + parameter [255:0] INIT_27 = 256'h0; + parameter [255:0] INIT_28 = 256'h0; + parameter [255:0] INIT_29 = 256'h0; + parameter [255:0] INIT_2A = 256'h0; + parameter [255:0] INIT_2B = 256'h0; + parameter [255:0] INIT_2C = 256'h0; + parameter [255:0] INIT_2D = 256'h0; + parameter [255:0] INIT_2E = 256'h0; + parameter [255:0] INIT_2F = 256'h0; + parameter [255:0] INIT_30 = 256'h0; + parameter [255:0] INIT_31 = 256'h0; + parameter [255:0] INIT_32 = 256'h0; + parameter [255:0] INIT_33 = 256'h0; + parameter [255:0] INIT_34 = 256'h0; + parameter [255:0] INIT_35 = 256'h0; + parameter [255:0] INIT_36 = 256'h0; + parameter [255:0] INIT_37 = 256'h0; + parameter [255:0] INIT_38 = 256'h0; + parameter [255:0] INIT_39 = 256'h0; + parameter [255:0] INIT_3A = 256'h0; + parameter [255:0] INIT_3B = 256'h0; + parameter [255:0] INIT_3C = 256'h0; + parameter [255:0] INIT_3D = 256'h0; + parameter [255:0] INIT_3E = 256'h0; + parameter [255:0] INIT_3F = 256'h0; + parameter [17:0] INIT_A = 18'h0; + parameter [8:0] INIT_B = 9'h0; + parameter SIM_COLLISION_CHECK = "ALL"; + parameter [17:0] SRVAL_A = 18'h0; + parameter [8:0] SRVAL_B = 9'h0; + parameter WRITE_MODE_A = "WRITE_FIRST"; + parameter WRITE_MODE_B = "WRITE_FIRST"; + output [15:0] DOA; + output [7:0] DOB; + output [1:0] DOPA; + output [0:0] DOPB; + (* clkbuf_sink *) + input CLKA; + (* clkbuf_sink *) + input CLKB; + input ENA; + input ENB; + input SSRA; + input SSRB; + input WEB; + input [1:0] WEA; + input [15:0] DIA; + input [7:0] DIB; + input [1:0] DIPA; + input [0:0] DIPB; + input [9:0] ADDRA; + input [10:0] ADDRB; +endmodule + +module RAMB16BWE_S18_S18 (...); + parameter [255:0] INITP_00 = 256'h0; + parameter [255:0] INITP_01 = 256'h0; + parameter [255:0] INITP_02 = 256'h0; + parameter [255:0] INITP_03 = 256'h0; + parameter [255:0] INITP_04 = 256'h0; + parameter [255:0] INITP_05 = 256'h0; + parameter [255:0] INITP_06 = 256'h0; + parameter [255:0] INITP_07 = 256'h0; + parameter [255:0] INIT_00 = 256'h0; + parameter [255:0] INIT_01 = 256'h0; + parameter [255:0] INIT_02 = 256'h0; + parameter [255:0] INIT_03 = 256'h0; + parameter [255:0] INIT_04 = 256'h0; + parameter [255:0] INIT_05 = 256'h0; + parameter [255:0] INIT_06 = 256'h0; + parameter [255:0] INIT_07 = 256'h0; + parameter [255:0] INIT_08 = 256'h0; + parameter [255:0] INIT_09 = 256'h0; + parameter [255:0] INIT_0A = 256'h0; + parameter [255:0] INIT_0B = 256'h0; + parameter [255:0] INIT_0C = 256'h0; + parameter [255:0] INIT_0D = 256'h0; + parameter [255:0] INIT_0E = 256'h0; + parameter [255:0] INIT_0F = 256'h0; + parameter [255:0] INIT_10 = 256'h0; + parameter [255:0] INIT_11 = 256'h0; + parameter [255:0] INIT_12 = 256'h0; + parameter [255:0] INIT_13 = 256'h0; + parameter [255:0] INIT_14 = 256'h0; + parameter [255:0] INIT_15 = 256'h0; + parameter [255:0] INIT_16 = 256'h0; + parameter [255:0] INIT_17 = 256'h0; + parameter [255:0] INIT_18 = 256'h0; + parameter [255:0] INIT_19 = 256'h0; + parameter [255:0] INIT_1A = 256'h0; + parameter [255:0] INIT_1B = 256'h0; + parameter [255:0] INIT_1C = 256'h0; + parameter [255:0] INIT_1D = 256'h0; + parameter [255:0] INIT_1E = 256'h0; + parameter [255:0] INIT_1F = 256'h0; + parameter [255:0] INIT_20 = 256'h0; + parameter [255:0] INIT_21 = 256'h0; + parameter [255:0] INIT_22 = 256'h0; + parameter [255:0] INIT_23 = 256'h0; + parameter [255:0] INIT_24 = 256'h0; + parameter [255:0] INIT_25 = 256'h0; + parameter [255:0] INIT_26 = 256'h0; + parameter [255:0] INIT_27 = 256'h0; + parameter [255:0] INIT_28 = 256'h0; + parameter [255:0] INIT_29 = 256'h0; + parameter [255:0] INIT_2A = 256'h0; + parameter [255:0] INIT_2B = 256'h0; + parameter [255:0] INIT_2C = 256'h0; + parameter [255:0] INIT_2D = 256'h0; + parameter [255:0] INIT_2E = 256'h0; + parameter [255:0] INIT_2F = 256'h0; + parameter [255:0] INIT_30 = 256'h0; + parameter [255:0] INIT_31 = 256'h0; + parameter [255:0] INIT_32 = 256'h0; + parameter [255:0] INIT_33 = 256'h0; + parameter [255:0] INIT_34 = 256'h0; + parameter [255:0] INIT_35 = 256'h0; + parameter [255:0] INIT_36 = 256'h0; + parameter [255:0] INIT_37 = 256'h0; + parameter [255:0] INIT_38 = 256'h0; + parameter [255:0] INIT_39 = 256'h0; + parameter [255:0] INIT_3A = 256'h0; + parameter [255:0] INIT_3B = 256'h0; + parameter [255:0] INIT_3C = 256'h0; + parameter [255:0] INIT_3D = 256'h0; + parameter [255:0] INIT_3E = 256'h0; + parameter [255:0] INIT_3F = 256'h0; + parameter [17:0] INIT_A = 18'h0; + parameter [17:0] INIT_B = 18'h0; + parameter SIM_COLLISION_CHECK = "ALL"; + parameter [17:0] SRVAL_A = 18'h0; + parameter [17:0] SRVAL_B = 18'h0; + parameter WRITE_MODE_A = "WRITE_FIRST"; + parameter WRITE_MODE_B = "WRITE_FIRST"; + output [15:0] DOA; + output [15:0] DOB; + output [1:0] DOPA; + output [1:0] DOPB; + (* clkbuf_sink *) + input CLKA; + (* clkbuf_sink *) + input CLKB; + input ENA; + input ENB; + input SSRA; + input SSRB; + input [1:0] WEB; + input [1:0] WEA; + input [15:0] DIA; + input [15:0] DIB; + input [1:0] DIPA; + input [1:0] DIPB; + input [9:0] ADDRA; + input [9:0] ADDRB; +endmodule + +module RAMB16BWE_S36_S9 (...); + parameter [255:0] INITP_00 = 256'h0; + parameter [255:0] INITP_01 = 256'h0; + parameter [255:0] INITP_02 = 256'h0; + parameter [255:0] INITP_03 = 256'h0; + parameter [255:0] INITP_04 = 256'h0; + parameter [255:0] INITP_05 = 256'h0; + parameter [255:0] INITP_06 = 256'h0; + parameter [255:0] INITP_07 = 256'h0; + parameter [255:0] INIT_00 = 256'h0; + parameter [255:0] INIT_01 = 256'h0; + parameter [255:0] INIT_02 = 256'h0; + parameter [255:0] INIT_03 = 256'h0; + parameter [255:0] INIT_04 = 256'h0; + parameter [255:0] INIT_05 = 256'h0; + parameter [255:0] INIT_06 = 256'h0; + parameter [255:0] INIT_07 = 256'h0; + parameter [255:0] INIT_08 = 256'h0; + parameter [255:0] INIT_09 = 256'h0; + parameter [255:0] INIT_0A = 256'h0; + parameter [255:0] INIT_0B = 256'h0; + parameter [255:0] INIT_0C = 256'h0; + parameter [255:0] INIT_0D = 256'h0; + parameter [255:0] INIT_0E = 256'h0; + parameter [255:0] INIT_0F = 256'h0; + parameter [255:0] INIT_10 = 256'h0; + parameter [255:0] INIT_11 = 256'h0; + parameter [255:0] INIT_12 = 256'h0; + parameter [255:0] INIT_13 = 256'h0; + parameter [255:0] INIT_14 = 256'h0; + parameter [255:0] INIT_15 = 256'h0; + parameter [255:0] INIT_16 = 256'h0; + parameter [255:0] INIT_17 = 256'h0; + parameter [255:0] INIT_18 = 256'h0; + parameter [255:0] INIT_19 = 256'h0; + parameter [255:0] INIT_1A = 256'h0; + parameter [255:0] INIT_1B = 256'h0; + parameter [255:0] INIT_1C = 256'h0; + parameter [255:0] INIT_1D = 256'h0; + parameter [255:0] INIT_1E = 256'h0; + parameter [255:0] INIT_1F = 256'h0; + parameter [255:0] INIT_20 = 256'h0; + parameter [255:0] INIT_21 = 256'h0; + parameter [255:0] INIT_22 = 256'h0; + parameter [255:0] INIT_23 = 256'h0; + parameter [255:0] INIT_24 = 256'h0; + parameter [255:0] INIT_25 = 256'h0; + parameter [255:0] INIT_26 = 256'h0; + parameter [255:0] INIT_27 = 256'h0; + parameter [255:0] INIT_28 = 256'h0; + parameter [255:0] INIT_29 = 256'h0; + parameter [255:0] INIT_2A = 256'h0; + parameter [255:0] INIT_2B = 256'h0; + parameter [255:0] INIT_2C = 256'h0; + parameter [255:0] INIT_2D = 256'h0; + parameter [255:0] INIT_2E = 256'h0; + parameter [255:0] INIT_2F = 256'h0; + parameter [255:0] INIT_30 = 256'h0; + parameter [255:0] INIT_31 = 256'h0; + parameter [255:0] INIT_32 = 256'h0; + parameter [255:0] INIT_33 = 256'h0; + parameter [255:0] INIT_34 = 256'h0; + parameter [255:0] INIT_35 = 256'h0; + parameter [255:0] INIT_36 = 256'h0; + parameter [255:0] INIT_37 = 256'h0; + parameter [255:0] INIT_38 = 256'h0; + parameter [255:0] INIT_39 = 256'h0; + parameter [255:0] INIT_3A = 256'h0; + parameter [255:0] INIT_3B = 256'h0; + parameter [255:0] INIT_3C = 256'h0; + parameter [255:0] INIT_3D = 256'h0; + parameter [255:0] INIT_3E = 256'h0; + parameter [255:0] INIT_3F = 256'h0; + parameter [35:0] INIT_A = 36'h0; + parameter [8:0] INIT_B = 9'h0; + parameter SIM_COLLISION_CHECK = "ALL"; + parameter [35:0] SRVAL_A = 36'h0; + parameter [8:0] SRVAL_B = 9'h0; + parameter WRITE_MODE_A = "WRITE_FIRST"; + parameter WRITE_MODE_B = "WRITE_FIRST"; + output [31:0] DOA; + output [3:0] DOPA; + output [7:0] DOB; + output [0:0] DOPB; + (* clkbuf_sink *) + input CLKA; + (* clkbuf_sink *) + input CLKB; + input ENA; + input ENB; + input SSRA; + input SSRB; + input [3:0] WEA; + input WEB; + input [31:0] DIA; + input [3:0] DIPA; + input [7:0] DIB; + input [0:0] DIPB; + input [8:0] ADDRA; + input [10:0] ADDRB; +endmodule + +module RAMB16BWE_S36_S18 (...); + parameter [255:0] INITP_00 = 256'h0; + parameter [255:0] INITP_01 = 256'h0; + parameter [255:0] INITP_02 = 256'h0; + parameter [255:0] INITP_03 = 256'h0; + parameter [255:0] INITP_04 = 256'h0; + parameter [255:0] INITP_05 = 256'h0; + parameter [255:0] INITP_06 = 256'h0; + parameter [255:0] INITP_07 = 256'h0; + parameter [255:0] INIT_00 = 256'h0; + parameter [255:0] INIT_01 = 256'h0; + parameter [255:0] INIT_02 = 256'h0; + parameter [255:0] INIT_03 = 256'h0; + parameter [255:0] INIT_04 = 256'h0; + parameter [255:0] INIT_05 = 256'h0; + parameter [255:0] INIT_06 = 256'h0; + parameter [255:0] INIT_07 = 256'h0; + parameter [255:0] INIT_08 = 256'h0; + parameter [255:0] INIT_09 = 256'h0; + parameter [255:0] INIT_0A = 256'h0; + parameter [255:0] INIT_0B = 256'h0; + parameter [255:0] INIT_0C = 256'h0; + parameter [255:0] INIT_0D = 256'h0; + parameter [255:0] INIT_0E = 256'h0; + parameter [255:0] INIT_0F = 256'h0; + parameter [255:0] INIT_10 = 256'h0; + parameter [255:0] INIT_11 = 256'h0; + parameter [255:0] INIT_12 = 256'h0; + parameter [255:0] INIT_13 = 256'h0; + parameter [255:0] INIT_14 = 256'h0; + parameter [255:0] INIT_15 = 256'h0; + parameter [255:0] INIT_16 = 256'h0; + parameter [255:0] INIT_17 = 256'h0; + parameter [255:0] INIT_18 = 256'h0; + parameter [255:0] INIT_19 = 256'h0; + parameter [255:0] INIT_1A = 256'h0; + parameter [255:0] INIT_1B = 256'h0; + parameter [255:0] INIT_1C = 256'h0; + parameter [255:0] INIT_1D = 256'h0; + parameter [255:0] INIT_1E = 256'h0; + parameter [255:0] INIT_1F = 256'h0; + parameter [255:0] INIT_20 = 256'h0; + parameter [255:0] INIT_21 = 256'h0; + parameter [255:0] INIT_22 = 256'h0; + parameter [255:0] INIT_23 = 256'h0; + parameter [255:0] INIT_24 = 256'h0; + parameter [255:0] INIT_25 = 256'h0; + parameter [255:0] INIT_26 = 256'h0; + parameter [255:0] INIT_27 = 256'h0; + parameter [255:0] INIT_28 = 256'h0; + parameter [255:0] INIT_29 = 256'h0; + parameter [255:0] INIT_2A = 256'h0; + parameter [255:0] INIT_2B = 256'h0; + parameter [255:0] INIT_2C = 256'h0; + parameter [255:0] INIT_2D = 256'h0; + parameter [255:0] INIT_2E = 256'h0; + parameter [255:0] INIT_2F = 256'h0; + parameter [255:0] INIT_30 = 256'h0; + parameter [255:0] INIT_31 = 256'h0; + parameter [255:0] INIT_32 = 256'h0; + parameter [255:0] INIT_33 = 256'h0; + parameter [255:0] INIT_34 = 256'h0; + parameter [255:0] INIT_35 = 256'h0; + parameter [255:0] INIT_36 = 256'h0; + parameter [255:0] INIT_37 = 256'h0; + parameter [255:0] INIT_38 = 256'h0; + parameter [255:0] INIT_39 = 256'h0; + parameter [255:0] INIT_3A = 256'h0; + parameter [255:0] INIT_3B = 256'h0; + parameter [255:0] INIT_3C = 256'h0; + parameter [255:0] INIT_3D = 256'h0; + parameter [255:0] INIT_3E = 256'h0; + parameter [255:0] INIT_3F = 256'h0; + parameter [35:0] INIT_A = 36'h0; + parameter [17:0] INIT_B = 18'h0; + parameter SIM_COLLISION_CHECK = "ALL"; + parameter [35:0] SRVAL_A = 36'h0; + parameter [17:0] SRVAL_B = 18'h0; + parameter WRITE_MODE_A = "WRITE_FIRST"; + parameter WRITE_MODE_B = "WRITE_FIRST"; + output [31:0] DOA; + output [3:0] DOPA; + output [15:0] DOB; + output [1:0] DOPB; + (* clkbuf_sink *) + input CLKA; + (* clkbuf_sink *) + input CLKB; + input ENA; + input ENB; + input SSRA; + input SSRB; + input [3:0] WEA; + input [1:0] WEB; + input [31:0] DIA; + input [3:0] DIPA; + input [15:0] DIB; + input [1:0] DIPB; + input [8:0] ADDRA; + input [9:0] ADDRB; +endmodule + +module RAMB16BWE_S36_S36 (...); + parameter [255:0] INITP_00 = 256'h0; + parameter [255:0] INITP_01 = 256'h0; + parameter [255:0] INITP_02 = 256'h0; + parameter [255:0] INITP_03 = 256'h0; + parameter [255:0] INITP_04 = 256'h0; + parameter [255:0] INITP_05 = 256'h0; + parameter [255:0] INITP_06 = 256'h0; + parameter [255:0] INITP_07 = 256'h0; + parameter [255:0] INIT_00 = 256'h0; + parameter [255:0] INIT_01 = 256'h0; + parameter [255:0] INIT_02 = 256'h0; + parameter [255:0] INIT_03 = 256'h0; + parameter [255:0] INIT_04 = 256'h0; + parameter [255:0] INIT_05 = 256'h0; + parameter [255:0] INIT_06 = 256'h0; + parameter [255:0] INIT_07 = 256'h0; + parameter [255:0] INIT_08 = 256'h0; + parameter [255:0] INIT_09 = 256'h0; + parameter [255:0] INIT_0A = 256'h0; + parameter [255:0] INIT_0B = 256'h0; + parameter [255:0] INIT_0C = 256'h0; + parameter [255:0] INIT_0D = 256'h0; + parameter [255:0] INIT_0E = 256'h0; + parameter [255:0] INIT_0F = 256'h0; + parameter [255:0] INIT_10 = 256'h0; + parameter [255:0] INIT_11 = 256'h0; + parameter [255:0] INIT_12 = 256'h0; + parameter [255:0] INIT_13 = 256'h0; + parameter [255:0] INIT_14 = 256'h0; + parameter [255:0] INIT_15 = 256'h0; + parameter [255:0] INIT_16 = 256'h0; + parameter [255:0] INIT_17 = 256'h0; + parameter [255:0] INIT_18 = 256'h0; + parameter [255:0] INIT_19 = 256'h0; + parameter [255:0] INIT_1A = 256'h0; + parameter [255:0] INIT_1B = 256'h0; + parameter [255:0] INIT_1C = 256'h0; + parameter [255:0] INIT_1D = 256'h0; + parameter [255:0] INIT_1E = 256'h0; + parameter [255:0] INIT_1F = 256'h0; + parameter [255:0] INIT_20 = 256'h0; + parameter [255:0] INIT_21 = 256'h0; + parameter [255:0] INIT_22 = 256'h0; + parameter [255:0] INIT_23 = 256'h0; + parameter [255:0] INIT_24 = 256'h0; + parameter [255:0] INIT_25 = 256'h0; + parameter [255:0] INIT_26 = 256'h0; + parameter [255:0] INIT_27 = 256'h0; + parameter [255:0] INIT_28 = 256'h0; + parameter [255:0] INIT_29 = 256'h0; + parameter [255:0] INIT_2A = 256'h0; + parameter [255:0] INIT_2B = 256'h0; + parameter [255:0] INIT_2C = 256'h0; + parameter [255:0] INIT_2D = 256'h0; + parameter [255:0] INIT_2E = 256'h0; + parameter [255:0] INIT_2F = 256'h0; + parameter [255:0] INIT_30 = 256'h0; + parameter [255:0] INIT_31 = 256'h0; + parameter [255:0] INIT_32 = 256'h0; + parameter [255:0] INIT_33 = 256'h0; + parameter [255:0] INIT_34 = 256'h0; + parameter [255:0] INIT_35 = 256'h0; + parameter [255:0] INIT_36 = 256'h0; + parameter [255:0] INIT_37 = 256'h0; + parameter [255:0] INIT_38 = 256'h0; + parameter [255:0] INIT_39 = 256'h0; + parameter [255:0] INIT_3A = 256'h0; + parameter [255:0] INIT_3B = 256'h0; + parameter [255:0] INIT_3C = 256'h0; + parameter [255:0] INIT_3D = 256'h0; + parameter [255:0] INIT_3E = 256'h0; + parameter [255:0] INIT_3F = 256'h0; + parameter [35:0] INIT_A = 36'h0; + parameter [35:0] INIT_B = 36'h0; + parameter SIM_COLLISION_CHECK = "ALL"; + parameter [35:0] SRVAL_A = 36'h0; + parameter [35:0] SRVAL_B = 36'h0; + parameter WRITE_MODE_A = "WRITE_FIRST"; + parameter WRITE_MODE_B = "WRITE_FIRST"; + output [31:0] DOA; + output [3:0] DOPA; + output [31:0] DOB; + output [3:0] DOPB; + (* clkbuf_sink *) + input CLKA; + (* clkbuf_sink *) + input CLKB; + input ENA; + input ENB; + input SSRA; + input SSRB; + input [3:0] WEA; + input [3:0] WEB; + input [31:0] DIA; + input [3:0] DIPA; + input [31:0] DIB; + input [3:0] DIPB; + input [8:0] ADDRA; + input [8:0] ADDRB; +endmodule + +module RAMB16BWER (...); + parameter integer DATA_WIDTH_A = 0; + parameter integer DATA_WIDTH_B = 0; + parameter integer DOA_REG = 0; + parameter integer DOB_REG = 0; + parameter EN_RSTRAM_A = "TRUE"; + parameter EN_RSTRAM_B = "TRUE"; + parameter [255:0] INITP_00 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_01 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_02 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_03 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_04 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_05 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_06 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_07 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_00 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_01 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_02 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_03 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_04 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_05 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_06 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_07 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_08 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_09 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_10 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_11 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_12 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_13 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_14 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_15 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_16 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_17 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_18 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_19 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_20 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_21 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_22 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_23 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_24 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_25 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_26 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_27 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_28 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_29 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_30 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_31 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_32 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_33 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_34 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_35 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_36 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_37 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_38 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_39 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [35:0] INIT_A = 36'h0; + parameter [35:0] INIT_B = 36'h0; + parameter INIT_FILE = "NONE"; + parameter RSTTYPE = "SYNC"; + parameter RST_PRIORITY_A = "CE"; + parameter RST_PRIORITY_B = "CE"; + parameter SETUP_ALL = 1000; + parameter SETUP_READ_FIRST = 3000; + parameter SIM_DEVICE = "SPARTAN3ADSP"; + parameter SIM_COLLISION_CHECK = "ALL"; + parameter [35:0] SRVAL_A = 36'h0; + parameter [35:0] SRVAL_B = 36'h0; + parameter WRITE_MODE_A = "WRITE_FIRST"; + parameter WRITE_MODE_B = "WRITE_FIRST"; + output [31:0] DOA; + output [31:0] DOB; + output [3:0] DOPA; + output [3:0] DOPB; + input [13:0] ADDRA; + input [13:0] ADDRB; + (* clkbuf_sink *) + input CLKA; + (* clkbuf_sink *) + input CLKB; + input [31:0] DIA; + input [31:0] DIB; + input [3:0] DIPA; + input [3:0] DIPB; + input ENA; + input ENB; + input REGCEA; + input REGCEB; + input RSTA; + input RSTB; + input [3:0] WEA; + input [3:0] WEB; +endmodule + +module RAMB8BWER (...); + parameter integer DATA_WIDTH_A = 0; + parameter integer DATA_WIDTH_B = 0; + parameter integer DOA_REG = 0; + parameter integer DOB_REG = 0; + parameter EN_RSTRAM_A = "TRUE"; + parameter EN_RSTRAM_B = "TRUE"; + parameter [255:0] INITP_00 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_01 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_02 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_03 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_00 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_01 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_02 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_03 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_04 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_05 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_06 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_07 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_08 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_09 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_10 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_11 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_12 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_13 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_14 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_15 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_16 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_17 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_18 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_19 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [17:0] INIT_A = 18'h0; + parameter [17:0] INIT_B = 18'h0; + parameter INIT_FILE = "NONE"; + parameter RAM_MODE = "TDP"; + parameter RSTTYPE = "SYNC"; + parameter RST_PRIORITY_A = "CE"; + parameter RST_PRIORITY_B = "CE"; + parameter SETUP_ALL = 1000; + parameter SETUP_READ_FIRST = 3000; + parameter SIM_COLLISION_CHECK = "ALL"; + parameter [17:0] SRVAL_A = 18'h0; + parameter [17:0] SRVAL_B = 18'h0; + parameter WRITE_MODE_A = "WRITE_FIRST"; + parameter WRITE_MODE_B = "WRITE_FIRST"; + output [15:0] DOADO; + output [15:0] DOBDO; + output [1:0] DOPADOP; + output [1:0] DOPBDOP; + input [12:0] ADDRAWRADDR; + input [12:0] ADDRBRDADDR; + (* clkbuf_sink *) + input CLKAWRCLK; + (* clkbuf_sink *) + input CLKBRDCLK; + input [15:0] DIADI; + input [15:0] DIBDI; + input [1:0] DIPADIP; + input [1:0] DIPBDIP; + input ENAWREN; + input ENBRDEN; + input REGCEA; + input REGCEBREGCE; + input RSTA; + input RSTBRST; + input [1:0] WEAWEL; + input [1:0] WEBWEU; +endmodule + +module FIFO16 (...); + parameter [11:0] ALMOST_FULL_OFFSET = 12'h080; + parameter [11:0] ALMOST_EMPTY_OFFSET = 12'h080; + parameter integer DATA_WIDTH = 36; + parameter FIRST_WORD_FALL_THROUGH = "FALSE"; + output ALMOSTEMPTY; + output ALMOSTFULL; + output [31:0] DO; + output [3:0] DOP; + output EMPTY; + output FULL; + output [11:0] RDCOUNT; + output RDERR; + output [11:0] WRCOUNT; + output WRERR; + input [31:0] DI; + input [3:0] DIP; + (* clkbuf_sink *) + input RDCLK; + input RDEN; + input RST; + (* clkbuf_sink *) + input WRCLK; + input WREN; +endmodule + +module RAMB16 (...); + parameter integer DOA_REG = 0; + parameter integer DOB_REG = 0; + parameter [255:0] INITP_00 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_01 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_02 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_03 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_04 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_05 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_06 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_07 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_00 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_01 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_02 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_03 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_04 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_05 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_06 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_07 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_08 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_09 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_10 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_11 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_12 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_13 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_14 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_15 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_16 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_17 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_18 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_19 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_20 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_21 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_22 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_23 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_24 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_25 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_26 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_27 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_28 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_29 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_30 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_31 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_32 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_33 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_34 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_35 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_36 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_37 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_38 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_39 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [35:0] INIT_A = 36'h0; + parameter [35:0] INIT_B = 36'h0; + parameter INIT_FILE = "NONE"; + parameter INVERT_CLK_DOA_REG = "FALSE"; + parameter INVERT_CLK_DOB_REG = "FALSE"; + parameter RAM_EXTENSION_A = "NONE"; + parameter RAM_EXTENSION_B = "NONE"; + parameter integer READ_WIDTH_A = 0; + parameter integer READ_WIDTH_B = 0; + parameter SIM_COLLISION_CHECK = "ALL"; + parameter [35:0] SRVAL_A = 36'h0; + parameter [35:0] SRVAL_B = 36'h0; + parameter WRITE_MODE_A = "WRITE_FIRST"; + parameter WRITE_MODE_B = "WRITE_FIRST"; + parameter integer WRITE_WIDTH_A = 0; + parameter integer WRITE_WIDTH_B = 0; + output CASCADEOUTA; + output CASCADEOUTB; + output [31:0] DOA; + output [31:0] DOB; + output [3:0] DOPA; + output [3:0] DOPB; + input ENA; + (* clkbuf_sink *) + input CLKA; + input SSRA; + input CASCADEINA; + input REGCEA; + input ENB; + (* clkbuf_sink *) + input CLKB; + input SSRB; + input CASCADEINB; + input REGCEB; + input [14:0] ADDRA; + input [14:0] ADDRB; + input [31:0] DIA; + input [31:0] DIB; + input [3:0] DIPA; + input [3:0] DIPB; + input [3:0] WEA; + input [3:0] WEB; +endmodule + +module RAMB32_S64_ECC (...); + parameter DO_REG = 0; + parameter SIM_COLLISION_CHECK = "ALL"; + output [1:0] STATUS; + output [63:0] DO; + (* clkbuf_sink *) + input RDCLK; + input RDEN; + input SSR; + (* clkbuf_sink *) + input WRCLK; + input WREN; + input [63:0] DI; + input [8:0] RDADDR; + input [8:0] WRADDR; +endmodule + +module FIFO18 (...); + parameter [11:0] ALMOST_EMPTY_OFFSET = 12'h080; + parameter [11:0] ALMOST_FULL_OFFSET = 12'h080; + parameter integer DATA_WIDTH = 4; + parameter integer DO_REG = 1; + parameter EN_SYN = "FALSE"; + parameter FIRST_WORD_FALL_THROUGH = "FALSE"; + parameter SIM_MODE = "SAFE"; + output ALMOSTEMPTY; + output ALMOSTFULL; + output [15:0] DO; + output [1:0] DOP; + output EMPTY; + output FULL; + output [11:0] RDCOUNT; + output RDERR; + output [11:0] WRCOUNT; + output WRERR; + input [15:0] DI; + input [1:0] DIP; + (* clkbuf_sink *) + input RDCLK; + input RDEN; + input RST; + (* clkbuf_sink *) + input WRCLK; + input WREN; +endmodule + +module FIFO18_36 (...); + parameter [8:0] ALMOST_EMPTY_OFFSET = 9'h080; + parameter [8:0] ALMOST_FULL_OFFSET = 9'h080; + parameter integer DO_REG = 1; + parameter EN_SYN = "FALSE"; + parameter FIRST_WORD_FALL_THROUGH = "FALSE"; + parameter SIM_MODE = "SAFE"; + output ALMOSTEMPTY; + output ALMOSTFULL; + output [31:0] DO; + output [3:0] DOP; + output EMPTY; + output FULL; + output [8:0] RDCOUNT; + output RDERR; + output [8:0] WRCOUNT; + output WRERR; + input [31:0] DI; + input [3:0] DIP; + (* clkbuf_sink *) + input RDCLK; + input RDEN; + input RST; + (* clkbuf_sink *) + input WRCLK; + input WREN; +endmodule + +module FIFO36 (...); + parameter [12:0] ALMOST_EMPTY_OFFSET = 13'h080; + parameter [12:0] ALMOST_FULL_OFFSET = 13'h080; + parameter integer DATA_WIDTH = 4; + parameter integer DO_REG = 1; + parameter EN_SYN = "FALSE"; + parameter FIRST_WORD_FALL_THROUGH = "FALSE"; + parameter SIM_MODE = "SAFE"; + output ALMOSTEMPTY; + output ALMOSTFULL; + output [31:0] DO; + output [3:0] DOP; + output EMPTY; + output FULL; + output [12:0] RDCOUNT; + output RDERR; + output [12:0] WRCOUNT; + output WRERR; + input [31:0] DI; + input [3:0] DIP; + (* clkbuf_sink *) + input RDCLK; + input RDEN; + input RST; + (* clkbuf_sink *) + input WRCLK; + input WREN; +endmodule + +module FIFO36_72 (...); + parameter [8:0] ALMOST_EMPTY_OFFSET = 9'h080; + parameter [8:0] ALMOST_FULL_OFFSET = 9'h080; + parameter integer DO_REG = 1; + parameter EN_ECC_WRITE = "FALSE"; + parameter EN_ECC_READ = "FALSE"; + parameter EN_SYN = "FALSE"; + parameter FIRST_WORD_FALL_THROUGH = "FALSE"; + parameter SIM_MODE = "SAFE"; + output ALMOSTEMPTY; + output ALMOSTFULL; + output DBITERR; + output [63:0] DO; + output [7:0] DOP; + output [7:0] ECCPARITY; + output EMPTY; + output FULL; + output [8:0] RDCOUNT; + output RDERR; + output SBITERR; + output [8:0] WRCOUNT; + output WRERR; + input [63:0] DI; + input [7:0] DIP; + (* clkbuf_sink *) + input RDCLK; + input RDEN; + input RST; + (* clkbuf_sink *) + input WRCLK; + input WREN; +endmodule + +module RAMB18 (...); + parameter integer DOA_REG = 0; + parameter integer DOB_REG = 0; + parameter [255:0] INITP_00 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_01 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_02 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_03 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_04 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_05 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_06 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_07 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_00 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_01 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_02 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_03 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_04 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_05 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_06 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_07 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_08 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_09 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_10 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_11 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_12 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_13 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_14 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_15 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_16 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_17 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_18 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_19 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_20 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_21 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_22 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_23 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_24 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_25 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_26 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_27 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_28 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_29 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_30 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_31 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_32 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_33 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_34 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_35 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_36 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_37 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_38 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_39 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [17:0] INIT_A = 18'h0; + parameter [17:0] INIT_B = 18'h0; + parameter INIT_FILE = "NONE"; + parameter integer READ_WIDTH_A = 0; + parameter integer READ_WIDTH_B = 0; + parameter SIM_COLLISION_CHECK = "ALL"; + parameter SIM_MODE = "SAFE"; + parameter [17:0] SRVAL_A = 18'h0; + parameter [17:0] SRVAL_B = 18'h0; + parameter WRITE_MODE_A = "WRITE_FIRST"; + parameter WRITE_MODE_B = "WRITE_FIRST"; + parameter integer WRITE_WIDTH_A = 0; + parameter integer WRITE_WIDTH_B = 0; + output [15:0] DOA; + output [15:0] DOB; + output [1:0] DOPA; + output [1:0] DOPB; + input ENA; + (* clkbuf_sink *) + input CLKA; + input SSRA; + input REGCEA; + input ENB; + (* clkbuf_sink *) + input CLKB; + input SSRB; + input REGCEB; + input [13:0] ADDRA; + input [13:0] ADDRB; + input [15:0] DIA; + input [15:0] DIB; + input [1:0] DIPA; + input [1:0] DIPB; + input [1:0] WEA; + input [1:0] WEB; +endmodule + +module RAMB36 (...); + parameter integer DOA_REG = 0; + parameter integer DOB_REG = 0; + parameter [255:0] INITP_00 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_01 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_02 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_03 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_04 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_05 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_06 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_07 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_08 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_09 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_0A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_0B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_0C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_0D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_0E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_0F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_00 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_01 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_02 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_03 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_04 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_05 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_06 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_07 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_08 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_09 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_10 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_11 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_12 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_13 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_14 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_15 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_16 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_17 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_18 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_19 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_20 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_21 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_22 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_23 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_24 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_25 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_26 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_27 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_28 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_29 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_30 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_31 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_32 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_33 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_34 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_35 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_36 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_37 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_38 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_39 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_40 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_41 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_42 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_43 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_44 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_45 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_46 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_47 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_48 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_49 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_4A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_4B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_4C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_4D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_4E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_4F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_50 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_51 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_52 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_53 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_54 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_55 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_56 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_57 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_58 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_59 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_5A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_5B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_5C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_5D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_5E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_5F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_60 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_61 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_62 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_63 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_64 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_65 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_66 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_67 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_68 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_69 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_6A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_6B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_6C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_6D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_6E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_6F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_70 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_71 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_72 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_73 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_74 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_75 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_76 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_77 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_78 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_79 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_7A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_7B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_7C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_7D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_7E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_7F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [35:0] INIT_A = 36'h0; + parameter [35:0] INIT_B = 36'h0; + parameter INIT_FILE = "NONE"; + parameter RAM_EXTENSION_A = "NONE"; + parameter RAM_EXTENSION_B = "NONE"; + parameter integer READ_WIDTH_A = 0; + parameter integer READ_WIDTH_B = 0; + parameter SIM_COLLISION_CHECK = "ALL"; + parameter SIM_MODE = "SAFE"; + parameter [35:0] SRVAL_A = 36'h0; + parameter [35:0] SRVAL_B = 36'h0; + parameter WRITE_MODE_A = "WRITE_FIRST"; + parameter WRITE_MODE_B = "WRITE_FIRST"; + parameter integer WRITE_WIDTH_A = 0; + parameter integer WRITE_WIDTH_B = 0; + output CASCADEOUTLATA; + output CASCADEOUTREGA; + output CASCADEOUTLATB; + output CASCADEOUTREGB; + output [31:0] DOA; + output [31:0] DOB; + output [3:0] DOPA; + output [3:0] DOPB; + input ENA; + (* clkbuf_sink *) + input CLKA; + input SSRA; + input CASCADEINLATA; + input CASCADEINREGA; + input REGCEA; + input ENB; + (* clkbuf_sink *) + input CLKB; + input SSRB; + input CASCADEINLATB; + input CASCADEINREGB; + input REGCEB; + input [15:0] ADDRA; + input [15:0] ADDRB; + input [31:0] DIA; + input [31:0] DIB; + input [3:0] DIPA; + input [3:0] DIPB; + input [3:0] WEA; + input [3:0] WEB; +endmodule + +module RAMB18SDP (...); + parameter integer DO_REG = 0; + parameter [35:0] INIT = 36'h0; + parameter [255:0] INITP_00 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_01 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_02 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_03 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_04 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_05 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_06 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_07 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_00 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_01 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_02 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_03 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_04 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_05 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_06 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_07 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_08 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_09 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_10 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_11 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_12 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_13 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_14 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_15 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_16 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_17 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_18 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_19 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_20 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_21 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_22 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_23 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_24 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_25 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_26 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_27 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_28 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_29 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_30 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_31 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_32 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_33 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_34 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_35 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_36 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_37 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_38 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_39 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_FILE = "NONE"; + parameter SIM_COLLISION_CHECK = "ALL"; + parameter SIM_MODE = "SAFE"; + parameter [35:0] SRVAL = 36'h0; + output [31:0] DO; + output [3:0] DOP; + (* clkbuf_sink *) + input RDCLK; + input RDEN; + input REGCE; + input SSR; + (* clkbuf_sink *) + input WRCLK; + input WREN; + input [8:0] WRADDR; + input [8:0] RDADDR; + input [31:0] DI; + input [3:0] DIP; + input [3:0] WE; +endmodule + +module RAMB36SDP (...); + parameter integer DO_REG = 0; + parameter EN_ECC_READ = "FALSE"; + parameter EN_ECC_SCRUB = "FALSE"; + parameter EN_ECC_WRITE = "FALSE"; + parameter [71:0] INIT = 72'h0; + parameter [255:0] INITP_00 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_01 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_02 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_03 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_04 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_05 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_06 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_07 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_08 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_09 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_0A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_0B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_0C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_0D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_0E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_0F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_00 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_01 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_02 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_03 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_04 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_05 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_06 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_07 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_08 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_09 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_10 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_11 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_12 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_13 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_14 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_15 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_16 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_17 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_18 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_19 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_20 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_21 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_22 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_23 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_24 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_25 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_26 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_27 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_28 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_29 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_30 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_31 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_32 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_33 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_34 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_35 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_36 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_37 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_38 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_39 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_40 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_41 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_42 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_43 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_44 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_45 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_46 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_47 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_48 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_49 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_4A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_4B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_4C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_4D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_4E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_4F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_50 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_51 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_52 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_53 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_54 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_55 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_56 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_57 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_58 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_59 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_5A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_5B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_5C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_5D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_5E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_5F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_60 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_61 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_62 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_63 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_64 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_65 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_66 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_67 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_68 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_69 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_6A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_6B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_6C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_6D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_6E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_6F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_70 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_71 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_72 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_73 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_74 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_75 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_76 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_77 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_78 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_79 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_7A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_7B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_7C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_7D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_7E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_7F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter INIT_FILE = "NONE"; + parameter SIM_COLLISION_CHECK = "ALL"; + parameter SIM_MODE = "SAFE"; + parameter [71:0] SRVAL = 72'h0; + output DBITERR; + output SBITERR; + output [63:0] DO; + output [7:0] DOP; + output [7:0] ECCPARITY; + (* clkbuf_sink *) + input RDCLK; + input RDEN; + input REGCE; + input SSR; + (* clkbuf_sink *) + input WRCLK; + input WREN; + input [8:0] WRADDR; + input [8:0] RDADDR; + input [63:0] DI; + input [7:0] DIP; + input [7:0] WE; +endmodule + +module FIFO18E1 (...); + parameter ALMOST_EMPTY_OFFSET = 13'h0080; + parameter ALMOST_FULL_OFFSET = 13'h0080; + parameter integer DATA_WIDTH = 4; + parameter integer DO_REG = 1; + parameter EN_SYN = "FALSE"; + parameter FIFO_MODE = "FIFO18"; + parameter FIRST_WORD_FALL_THROUGH = "FALSE"; + parameter INIT = 36'h0; + parameter SIM_DEVICE = "VIRTEX6"; + parameter SRVAL = 36'h0; + parameter IS_RDCLK_INVERTED = 1'b0; + parameter IS_RDEN_INVERTED = 1'b0; + parameter IS_RSTREG_INVERTED = 1'b0; + parameter IS_RST_INVERTED = 1'b0; + parameter IS_WRCLK_INVERTED = 1'b0; + parameter IS_WREN_INVERTED = 1'b0; + output ALMOSTEMPTY; + output ALMOSTFULL; + output [31:0] DO; + output [3:0] DOP; + output EMPTY; + output FULL; + output [11:0] RDCOUNT; + output RDERR; + output [11:0] WRCOUNT; + output WRERR; + input [31:0] DI; + input [3:0] DIP; + (* clkbuf_sink *) + (* invertible_pin = "IS_RDCLK_INVERTED" *) + input RDCLK; + (* invertible_pin = "IS_RDEN_INVERTED" *) + input RDEN; + input REGCE; + (* invertible_pin = "IS_RST_INVERTED" *) + input RST; + (* invertible_pin = "IS_RSTREG_INVERTED" *) + input RSTREG; + (* clkbuf_sink *) + (* invertible_pin = "IS_WRCLK_INVERTED" *) + input WRCLK; + (* invertible_pin = "IS_WREN_INVERTED" *) + input WREN; +endmodule + +module FIFO36E1 (...); + parameter ALMOST_EMPTY_OFFSET = 13'h0080; + parameter ALMOST_FULL_OFFSET = 13'h0080; + parameter integer DATA_WIDTH = 4; + parameter integer DO_REG = 1; + parameter EN_ECC_READ = "FALSE"; + parameter EN_ECC_WRITE = "FALSE"; + parameter EN_SYN = "FALSE"; + parameter FIFO_MODE = "FIFO36"; + parameter FIRST_WORD_FALL_THROUGH = "FALSE"; + parameter INIT = 72'h0; + parameter SIM_DEVICE = "VIRTEX6"; + parameter SRVAL = 72'h0; + parameter IS_RDCLK_INVERTED = 1'b0; + parameter IS_RDEN_INVERTED = 1'b0; + parameter IS_RSTREG_INVERTED = 1'b0; + parameter IS_RST_INVERTED = 1'b0; + parameter IS_WRCLK_INVERTED = 1'b0; + parameter IS_WREN_INVERTED = 1'b0; + output ALMOSTEMPTY; + output ALMOSTFULL; + output DBITERR; + output [63:0] DO; + output [7:0] DOP; + output [7:0] ECCPARITY; + output EMPTY; + output FULL; + output [12:0] RDCOUNT; + output RDERR; + output SBITERR; + output [12:0] WRCOUNT; + output WRERR; + input [63:0] DI; + input [7:0] DIP; + input INJECTDBITERR; + input INJECTSBITERR; + (* clkbuf_sink *) + (* invertible_pin = "IS_RDCLK_INVERTED" *) + input RDCLK; + (* invertible_pin = "IS_RDEN_INVERTED" *) + input RDEN; + input REGCE; + (* invertible_pin = "IS_RST_INVERTED" *) + input RST; + (* invertible_pin = "IS_RSTREG_INVERTED" *) + input RSTREG; + (* clkbuf_sink *) + (* invertible_pin = "IS_WRCLK_INVERTED" *) + input WRCLK; + (* invertible_pin = "IS_WREN_INVERTED" *) + input WREN; +endmodule + +module FIFO18E2 (...); + parameter CASCADE_ORDER = "NONE"; + parameter CLOCK_DOMAINS = "INDEPENDENT"; + parameter FIRST_WORD_FALL_THROUGH = "FALSE"; + parameter [35:0] INIT = 36'h000000000; + parameter [0:0] IS_RDCLK_INVERTED = 1'b0; + parameter [0:0] IS_RDEN_INVERTED = 1'b0; + parameter [0:0] IS_RSTREG_INVERTED = 1'b0; + parameter [0:0] IS_RST_INVERTED = 1'b0; + parameter [0:0] IS_WRCLK_INVERTED = 1'b0; + parameter [0:0] IS_WREN_INVERTED = 1'b0; + parameter integer PROG_EMPTY_THRESH = 256; + parameter integer PROG_FULL_THRESH = 256; + parameter RDCOUNT_TYPE = "RAW_PNTR"; + parameter integer READ_WIDTH = 4; + parameter REGISTER_MODE = "UNREGISTERED"; + parameter RSTREG_PRIORITY = "RSTREG"; + parameter SLEEP_ASYNC = "FALSE"; + parameter [35:0] SRVAL = 36'h000000000; + parameter WRCOUNT_TYPE = "RAW_PNTR"; + parameter integer WRITE_WIDTH = 4; + output [31:0] CASDOUT; + output [3:0] CASDOUTP; + output CASNXTEMPTY; + output CASPRVRDEN; + output [31:0] DOUT; + output [3:0] DOUTP; + output EMPTY; + output FULL; + output PROGEMPTY; + output PROGFULL; + output [12:0] RDCOUNT; + output RDERR; + output RDRSTBUSY; + output [12:0] WRCOUNT; + output WRERR; + output WRRSTBUSY; + input [31:0] CASDIN; + input [3:0] CASDINP; + input CASDOMUX; + input CASDOMUXEN; + input CASNXTRDEN; + input CASOREGIMUX; + input CASOREGIMUXEN; + input CASPRVEMPTY; + input [31:0] DIN; + input [3:0] DINP; + (* clkbuf_sink *) + (* invertible_pin = "IS_RDCLK_INVERTED" *) + input RDCLK; + (* invertible_pin = "IS_RDEN_INVERTED" *) + input RDEN; + input REGCE; + (* invertible_pin = "IS_RST_INVERTED" *) + input RST; + (* invertible_pin = "IS_RSTREG_INVERTED" *) + input RSTREG; + input SLEEP; + (* clkbuf_sink *) + (* invertible_pin = "IS_WRCLK_INVERTED" *) + input WRCLK; + (* invertible_pin = "IS_WREN_INVERTED" *) + input WREN; +endmodule + +module FIFO36E2 (...); + parameter CASCADE_ORDER = "NONE"; + parameter CLOCK_DOMAINS = "INDEPENDENT"; + parameter EN_ECC_PIPE = "FALSE"; + parameter EN_ECC_READ = "FALSE"; + parameter EN_ECC_WRITE = "FALSE"; + parameter FIRST_WORD_FALL_THROUGH = "FALSE"; + parameter [71:0] INIT = 72'h000000000000000000; + parameter [0:0] IS_RDCLK_INVERTED = 1'b0; + parameter [0:0] IS_RDEN_INVERTED = 1'b0; + parameter [0:0] IS_RSTREG_INVERTED = 1'b0; + parameter [0:0] IS_RST_INVERTED = 1'b0; + parameter [0:0] IS_WRCLK_INVERTED = 1'b0; + parameter [0:0] IS_WREN_INVERTED = 1'b0; + parameter integer PROG_EMPTY_THRESH = 256; + parameter integer PROG_FULL_THRESH = 256; + parameter RDCOUNT_TYPE = "RAW_PNTR"; + parameter integer READ_WIDTH = 4; + parameter REGISTER_MODE = "UNREGISTERED"; + parameter RSTREG_PRIORITY = "RSTREG"; + parameter SLEEP_ASYNC = "FALSE"; + parameter [71:0] SRVAL = 72'h000000000000000000; + parameter WRCOUNT_TYPE = "RAW_PNTR"; + parameter integer WRITE_WIDTH = 4; + output [63:0] CASDOUT; + output [7:0] CASDOUTP; + output CASNXTEMPTY; + output CASPRVRDEN; + output DBITERR; + output [63:0] DOUT; + output [7:0] DOUTP; + output [7:0] ECCPARITY; + output EMPTY; + output FULL; + output PROGEMPTY; + output PROGFULL; + output [13:0] RDCOUNT; + output RDERR; + output RDRSTBUSY; + output SBITERR; + output [13:0] WRCOUNT; + output WRERR; + output WRRSTBUSY; + input [63:0] CASDIN; + input [7:0] CASDINP; + input CASDOMUX; + input CASDOMUXEN; + input CASNXTRDEN; + input CASOREGIMUX; + input CASOREGIMUXEN; + input CASPRVEMPTY; + input [63:0] DIN; + input [7:0] DINP; + input INJECTDBITERR; + input INJECTSBITERR; + (* clkbuf_sink *) + (* invertible_pin = "IS_RDCLK_INVERTED" *) + input RDCLK; + (* invertible_pin = "IS_RDEN_INVERTED" *) + input RDEN; + input REGCE; + (* invertible_pin = "IS_RST_INVERTED" *) + input RST; + (* invertible_pin = "IS_RSTREG_INVERTED" *) + input RSTREG; + input SLEEP; + (* clkbuf_sink *) + (* invertible_pin = "IS_WRCLK_INVERTED" *) + input WRCLK; + (* invertible_pin = "IS_WREN_INVERTED" *) + input WREN; +endmodule + +module RAMB18E2 (...); + parameter CASCADE_ORDER_A = "NONE"; + parameter CASCADE_ORDER_B = "NONE"; + parameter CLOCK_DOMAINS = "INDEPENDENT"; + parameter integer DOA_REG = 1; + parameter integer DOB_REG = 1; + parameter ENADDRENA = "FALSE"; + parameter ENADDRENB = "FALSE"; + parameter [255:0] INITP_00 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_01 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_02 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_03 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_04 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_05 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_06 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_07 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_00 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_01 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_02 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_03 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_04 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_05 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_06 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_07 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_08 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_09 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_10 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_11 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_12 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_13 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_14 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_15 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_16 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_17 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_18 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_19 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_20 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_21 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_22 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_23 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_24 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_25 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_26 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_27 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_28 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_29 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_30 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_31 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_32 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_33 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_34 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_35 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_36 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_37 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_38 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_39 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [17:0] INIT_A = 18'h00000; + parameter [17:0] INIT_B = 18'h00000; + parameter INIT_FILE = "NONE"; + parameter [0:0] IS_CLKARDCLK_INVERTED = 1'b0; + parameter [0:0] IS_CLKBWRCLK_INVERTED = 1'b0; + parameter [0:0] IS_ENARDEN_INVERTED = 1'b0; + parameter [0:0] IS_ENBWREN_INVERTED = 1'b0; + parameter [0:0] IS_RSTRAMARSTRAM_INVERTED = 1'b0; + parameter [0:0] IS_RSTRAMB_INVERTED = 1'b0; + parameter [0:0] IS_RSTREGARSTREG_INVERTED = 1'b0; + parameter [0:0] IS_RSTREGB_INVERTED = 1'b0; + parameter RDADDRCHANGEA = "FALSE"; + parameter RDADDRCHANGEB = "FALSE"; + parameter integer READ_WIDTH_A = 0; + parameter integer READ_WIDTH_B = 0; + parameter RSTREG_PRIORITY_A = "RSTREG"; + parameter RSTREG_PRIORITY_B = "RSTREG"; + parameter SIM_COLLISION_CHECK = "ALL"; + parameter SLEEP_ASYNC = "FALSE"; + parameter [17:0] SRVAL_A = 18'h00000; + parameter [17:0] SRVAL_B = 18'h00000; + parameter WRITE_MODE_A = "NO_CHANGE"; + parameter WRITE_MODE_B = "NO_CHANGE"; + parameter integer WRITE_WIDTH_A = 0; + parameter integer WRITE_WIDTH_B = 0; + output [15:0] CASDOUTA; + output [15:0] CASDOUTB; + output [1:0] CASDOUTPA; + output [1:0] CASDOUTPB; + output [15:0] DOUTADOUT; + output [15:0] DOUTBDOUT; + output [1:0] DOUTPADOUTP; + output [1:0] DOUTPBDOUTP; + input [13:0] ADDRARDADDR; + input [13:0] ADDRBWRADDR; + input ADDRENA; + input ADDRENB; + input CASDIMUXA; + input CASDIMUXB; + input [15:0] CASDINA; + input [15:0] CASDINB; + input [1:0] CASDINPA; + input [1:0] CASDINPB; + input CASDOMUXA; + input CASDOMUXB; + input CASDOMUXEN_A; + input CASDOMUXEN_B; + input CASOREGIMUXA; + input CASOREGIMUXB; + input CASOREGIMUXEN_A; + input CASOREGIMUXEN_B; + (* clkbuf_sink *) + (* invertible_pin = "IS_CLKARDCLK_INVERTED" *) + input CLKARDCLK; + (* clkbuf_sink *) + (* invertible_pin = "IS_CLKBWRCLK_INVERTED" *) + input CLKBWRCLK; + input [15:0] DINADIN; + input [15:0] DINBDIN; + input [1:0] DINPADINP; + input [1:0] DINPBDINP; + (* invertible_pin = "IS_ENARDEN_INVERTED" *) + input ENARDEN; + (* invertible_pin = "IS_ENBWREN_INVERTED" *) + input ENBWREN; + input REGCEAREGCE; + input REGCEB; + (* invertible_pin = "IS_RSTRAMARSTRAM_INVERTED" *) + input RSTRAMARSTRAM; + (* invertible_pin = "IS_RSTRAMB_INVERTED" *) + input RSTRAMB; + (* invertible_pin = "IS_RSTREGARSTREG_INVERTED" *) + input RSTREGARSTREG; + (* invertible_pin = "IS_RSTREGB_INVERTED" *) + input RSTREGB; + input SLEEP; + input [1:0] WEA; + input [3:0] WEBWE; +endmodule + +module RAMB36E2 (...); + parameter CASCADE_ORDER_A = "NONE"; + parameter CASCADE_ORDER_B = "NONE"; + parameter CLOCK_DOMAINS = "INDEPENDENT"; + parameter integer DOA_REG = 1; + parameter integer DOB_REG = 1; + parameter ENADDRENA = "FALSE"; + parameter ENADDRENB = "FALSE"; + parameter EN_ECC_PIPE = "FALSE"; + parameter EN_ECC_READ = "FALSE"; + parameter EN_ECC_WRITE = "FALSE"; + parameter [255:0] INITP_00 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_01 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_02 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_03 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_04 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_05 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_06 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_07 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_08 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_09 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_0A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_0B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_0C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_0D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_0E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INITP_0F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_00 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_01 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_02 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_03 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_04 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_05 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_06 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_07 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_08 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_09 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_0F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_10 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_11 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_12 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_13 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_14 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_15 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_16 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_17 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_18 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_19 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_1F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_20 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_21 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_22 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_23 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_24 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_25 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_26 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_27 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_28 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_29 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_2F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_30 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_31 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_32 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_33 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_34 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_35 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_36 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_37 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_38 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_39 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_3F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_40 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_41 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_42 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_43 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_44 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_45 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_46 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_47 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_48 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_49 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_4A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_4B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_4C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_4D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_4E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_4F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_50 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_51 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_52 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_53 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_54 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_55 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_56 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_57 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_58 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_59 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_5A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_5B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_5C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_5D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_5E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_5F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_60 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_61 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_62 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_63 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_64 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_65 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_66 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_67 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_68 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_69 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_6A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_6B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_6C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_6D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_6E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_6F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_70 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_71 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_72 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_73 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_74 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_75 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_76 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_77 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_78 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_79 = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_7A = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_7B = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_7C = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_7D = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_7E = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [255:0] INIT_7F = 256'h0000000000000000000000000000000000000000000000000000000000000000; + parameter [35:0] INIT_A = 36'h000000000; + parameter [35:0] INIT_B = 36'h000000000; + parameter INIT_FILE = "NONE"; + parameter [0:0] IS_CLKARDCLK_INVERTED = 1'b0; + parameter [0:0] IS_CLKBWRCLK_INVERTED = 1'b0; + parameter [0:0] IS_ENARDEN_INVERTED = 1'b0; + parameter [0:0] IS_ENBWREN_INVERTED = 1'b0; + parameter [0:0] IS_RSTRAMARSTRAM_INVERTED = 1'b0; + parameter [0:0] IS_RSTRAMB_INVERTED = 1'b0; + parameter [0:0] IS_RSTREGARSTREG_INVERTED = 1'b0; + parameter [0:0] IS_RSTREGB_INVERTED = 1'b0; + parameter RDADDRCHANGEA = "FALSE"; + parameter RDADDRCHANGEB = "FALSE"; + parameter integer READ_WIDTH_A = 0; + parameter integer READ_WIDTH_B = 0; + parameter RSTREG_PRIORITY_A = "RSTREG"; + parameter RSTREG_PRIORITY_B = "RSTREG"; + parameter SIM_COLLISION_CHECK = "ALL"; + parameter SLEEP_ASYNC = "FALSE"; + parameter [35:0] SRVAL_A = 36'h000000000; + parameter [35:0] SRVAL_B = 36'h000000000; + parameter WRITE_MODE_A = "NO_CHANGE"; + parameter WRITE_MODE_B = "NO_CHANGE"; + parameter integer WRITE_WIDTH_A = 0; + parameter integer WRITE_WIDTH_B = 0; + output [31:0] CASDOUTA; + output [31:0] CASDOUTB; + output [3:0] CASDOUTPA; + output [3:0] CASDOUTPB; + output CASOUTDBITERR; + output CASOUTSBITERR; + output DBITERR; + output [31:0] DOUTADOUT; + output [31:0] DOUTBDOUT; + output [3:0] DOUTPADOUTP; + output [3:0] DOUTPBDOUTP; + output [7:0] ECCPARITY; + output [8:0] RDADDRECC; + output SBITERR; + input [14:0] ADDRARDADDR; + input [14:0] ADDRBWRADDR; + input ADDRENA; + input ADDRENB; + input CASDIMUXA; + input CASDIMUXB; + input [31:0] CASDINA; + input [31:0] CASDINB; + input [3:0] CASDINPA; + input [3:0] CASDINPB; + input CASDOMUXA; + input CASDOMUXB; + input CASDOMUXEN_A; + input CASDOMUXEN_B; + input CASINDBITERR; + input CASINSBITERR; + input CASOREGIMUXA; + input CASOREGIMUXB; + input CASOREGIMUXEN_A; + input CASOREGIMUXEN_B; + (* clkbuf_sink *) + (* invertible_pin = "IS_CLKARDCLK_INVERTED" *) + input CLKARDCLK; + (* clkbuf_sink *) + (* invertible_pin = "IS_CLKBWRCLK_INVERTED" *) + input CLKBWRCLK; + input [31:0] DINADIN; + input [31:0] DINBDIN; + input [3:0] DINPADINP; + input [3:0] DINPBDINP; + input ECCPIPECE; + (* invertible_pin = "IS_ENARDEN_INVERTED" *) + input ENARDEN; + (* invertible_pin = "IS_ENBWREN_INVERTED" *) + input ENBWREN; + input INJECTDBITERR; + input INJECTSBITERR; + input REGCEAREGCE; + input REGCEB; + (* invertible_pin = "IS_RSTRAMARSTRAM_INVERTED" *) + input RSTRAMARSTRAM; + (* invertible_pin = "IS_RSTRAMB_INVERTED" *) + input RSTRAMB; + (* invertible_pin = "IS_RSTREGARSTREG_INVERTED" *) + input RSTREGARSTREG; + (* invertible_pin = "IS_RSTREGB_INVERTED" *) + input RSTREGB; + input SLEEP; + input [3:0] WEA; + input [7:0] WEBWE; +endmodule + +module URAM288 (...); + parameter integer AUTO_SLEEP_LATENCY = 8; + parameter integer AVG_CONS_INACTIVE_CYCLES = 10; + parameter BWE_MODE_A = "PARITY_INTERLEAVED"; + parameter BWE_MODE_B = "PARITY_INTERLEAVED"; + parameter CASCADE_ORDER_A = "NONE"; + parameter CASCADE_ORDER_B = "NONE"; + parameter EN_AUTO_SLEEP_MODE = "FALSE"; + parameter EN_ECC_RD_A = "FALSE"; + parameter EN_ECC_RD_B = "FALSE"; + parameter EN_ECC_WR_A = "FALSE"; + parameter EN_ECC_WR_B = "FALSE"; + parameter IREG_PRE_A = "FALSE"; + parameter IREG_PRE_B = "FALSE"; + parameter [0:0] IS_CLK_INVERTED = 1'b0; + parameter [0:0] IS_EN_A_INVERTED = 1'b0; + parameter [0:0] IS_EN_B_INVERTED = 1'b0; + parameter [0:0] IS_RDB_WR_A_INVERTED = 1'b0; + parameter [0:0] IS_RDB_WR_B_INVERTED = 1'b0; + parameter [0:0] IS_RST_A_INVERTED = 1'b0; + parameter [0:0] IS_RST_B_INVERTED = 1'b0; + parameter MATRIX_ID = "NONE"; + parameter integer NUM_UNIQUE_SELF_ADDR_A = 1; + parameter integer NUM_UNIQUE_SELF_ADDR_B = 1; + parameter integer NUM_URAM_IN_MATRIX = 1; + parameter OREG_A = "FALSE"; + parameter OREG_B = "FALSE"; + parameter OREG_ECC_A = "FALSE"; + parameter OREG_ECC_B = "FALSE"; + parameter REG_CAS_A = "FALSE"; + parameter REG_CAS_B = "FALSE"; + parameter RST_MODE_A = "SYNC"; + parameter RST_MODE_B = "SYNC"; + parameter [10:0] SELF_ADDR_A = 11'h000; + parameter [10:0] SELF_ADDR_B = 11'h000; + parameter [10:0] SELF_MASK_A = 11'h7FF; + parameter [10:0] SELF_MASK_B = 11'h7FF; + parameter USE_EXT_CE_A = "FALSE"; + parameter USE_EXT_CE_B = "FALSE"; + output [22:0] CAS_OUT_ADDR_A; + output [22:0] CAS_OUT_ADDR_B; + output [8:0] CAS_OUT_BWE_A; + output [8:0] CAS_OUT_BWE_B; + output CAS_OUT_DBITERR_A; + output CAS_OUT_DBITERR_B; + output [71:0] CAS_OUT_DIN_A; + output [71:0] CAS_OUT_DIN_B; + output [71:0] CAS_OUT_DOUT_A; + output [71:0] CAS_OUT_DOUT_B; + output CAS_OUT_EN_A; + output CAS_OUT_EN_B; + output CAS_OUT_RDACCESS_A; + output CAS_OUT_RDACCESS_B; + output CAS_OUT_RDB_WR_A; + output CAS_OUT_RDB_WR_B; + output CAS_OUT_SBITERR_A; + output CAS_OUT_SBITERR_B; + output DBITERR_A; + output DBITERR_B; + output [71:0] DOUT_A; + output [71:0] DOUT_B; + output RDACCESS_A; + output RDACCESS_B; + output SBITERR_A; + output SBITERR_B; + input [22:0] ADDR_A; + input [22:0] ADDR_B; + input [8:0] BWE_A; + input [8:0] BWE_B; + input [22:0] CAS_IN_ADDR_A; + input [22:0] CAS_IN_ADDR_B; + input [8:0] CAS_IN_BWE_A; + input [8:0] CAS_IN_BWE_B; + input CAS_IN_DBITERR_A; + input CAS_IN_DBITERR_B; + input [71:0] CAS_IN_DIN_A; + input [71:0] CAS_IN_DIN_B; + input [71:0] CAS_IN_DOUT_A; + input [71:0] CAS_IN_DOUT_B; + input CAS_IN_EN_A; + input CAS_IN_EN_B; + input CAS_IN_RDACCESS_A; + input CAS_IN_RDACCESS_B; + input CAS_IN_RDB_WR_A; + input CAS_IN_RDB_WR_B; + input CAS_IN_SBITERR_A; + input CAS_IN_SBITERR_B; + (* clkbuf_sink *) + (* invertible_pin = "IS_CLK_INVERTED" *) + input CLK; + input [71:0] DIN_A; + input [71:0] DIN_B; + (* invertible_pin = "IS_EN_A_INVERTED" *) + input EN_A; + (* invertible_pin = "IS_EN_B_INVERTED" *) + input EN_B; + input INJECT_DBITERR_A; + input INJECT_DBITERR_B; + input INJECT_SBITERR_A; + input INJECT_SBITERR_B; + input OREG_CE_A; + input OREG_CE_B; + input OREG_ECC_CE_A; + input OREG_ECC_CE_B; + (* invertible_pin = "IS_RDB_WR_A_INVERTED" *) + input RDB_WR_A; + (* invertible_pin = "IS_RDB_WR_B_INVERTED" *) + input RDB_WR_B; + (* invertible_pin = "IS_RST_A_INVERTED" *) + input RST_A; + (* invertible_pin = "IS_RST_B_INVERTED" *) + input RST_B; + input SLEEP; +endmodule + +module URAM288_BASE (...); + parameter integer AUTO_SLEEP_LATENCY = 8; + parameter integer AVG_CONS_INACTIVE_CYCLES = 10; + parameter BWE_MODE_A = "PARITY_INTERLEAVED"; + parameter BWE_MODE_B = "PARITY_INTERLEAVED"; + parameter EN_AUTO_SLEEP_MODE = "FALSE"; + parameter EN_ECC_RD_A = "FALSE"; + parameter EN_ECC_RD_B = "FALSE"; + parameter EN_ECC_WR_A = "FALSE"; + parameter EN_ECC_WR_B = "FALSE"; + parameter IREG_PRE_A = "FALSE"; + parameter IREG_PRE_B = "FALSE"; + parameter [0:0] IS_CLK_INVERTED = 1'b0; + parameter [0:0] IS_EN_A_INVERTED = 1'b0; + parameter [0:0] IS_EN_B_INVERTED = 1'b0; + parameter [0:0] IS_RDB_WR_A_INVERTED = 1'b0; + parameter [0:0] IS_RDB_WR_B_INVERTED = 1'b0; + parameter [0:0] IS_RST_A_INVERTED = 1'b0; + parameter [0:0] IS_RST_B_INVERTED = 1'b0; + parameter OREG_A = "FALSE"; + parameter OREG_B = "FALSE"; + parameter OREG_ECC_A = "FALSE"; + parameter OREG_ECC_B = "FALSE"; + parameter RST_MODE_A = "SYNC"; + parameter RST_MODE_B = "SYNC"; + parameter USE_EXT_CE_A = "FALSE"; + parameter USE_EXT_CE_B = "FALSE"; + output DBITERR_A; + output DBITERR_B; + output [71:0] DOUT_A; + output [71:0] DOUT_B; + output SBITERR_A; + output SBITERR_B; + input [22:0] ADDR_A; + input [22:0] ADDR_B; + input [8:0] BWE_A; + input [8:0] BWE_B; + (* clkbuf_sink *) + (* invertible_pin = "IS_CLK_INVERTED" *) + input CLK; + input [71:0] DIN_A; + input [71:0] DIN_B; + (* invertible_pin = "IS_EN_A_INVERTED" *) + input EN_A; + (* invertible_pin = "IS_EN_B_INVERTED" *) + input EN_B; + input INJECT_DBITERR_A; + input INJECT_DBITERR_B; + input INJECT_SBITERR_A; + input INJECT_SBITERR_B; + input OREG_CE_A; + input OREG_CE_B; + input OREG_ECC_CE_A; + input OREG_ECC_CE_B; + (* invertible_pin = "IS_RDB_WR_A_INVERTED" *) + input RDB_WR_A; + (* invertible_pin = "IS_RDB_WR_B_INVERTED" *) + input RDB_WR_B; + (* invertible_pin = "IS_RST_A_INVERTED" *) + input RST_A; + (* invertible_pin = "IS_RST_B_INVERTED" *) + input RST_B; + input SLEEP; +endmodule + +module DSP48E (...); + parameter SIM_MODE = "SAFE"; + parameter integer ACASCREG = 1; + parameter integer ALUMODEREG = 1; + parameter integer AREG = 1; + parameter AUTORESET_PATTERN_DETECT = "FALSE"; + parameter AUTORESET_PATTERN_DETECT_OPTINV = "MATCH"; + parameter A_INPUT = "DIRECT"; + parameter integer BCASCREG = 1; + parameter integer BREG = 1; + parameter B_INPUT = "DIRECT"; + parameter integer CARRYINREG = 1; + parameter integer CARRYINSELREG = 1; + parameter integer CREG = 1; + parameter [47:0] MASK = 48'h3FFFFFFFFFFF; + parameter integer MREG = 1; + parameter integer MULTCARRYINREG = 1; + parameter integer OPMODEREG = 1; + parameter [47:0] PATTERN = 48'h000000000000; + parameter integer PREG = 1; + parameter SEL_MASK = "MASK"; + parameter SEL_PATTERN = "PATTERN"; + parameter SEL_ROUNDING_MASK = "SEL_MASK"; + parameter USE_MULT = "MULT_S"; + parameter USE_PATTERN_DETECT = "NO_PATDET"; + parameter USE_SIMD = "ONE48"; + output [29:0] ACOUT; + output [17:0] BCOUT; + output CARRYCASCOUT; + output [3:0] CARRYOUT; + output MULTSIGNOUT; + output OVERFLOW; + output [47:0] P; + output PATTERNBDETECT; + output PATTERNDETECT; + output [47:0] PCOUT; + output UNDERFLOW; + input [29:0] A; + input [29:0] ACIN; + input [3:0] ALUMODE; + input [17:0] B; + input [17:0] BCIN; + input [47:0] C; + input CARRYCASCIN; + input CARRYIN; + input [2:0] CARRYINSEL; + input CEA1; + input CEA2; + input CEALUMODE; + input CEB1; + input CEB2; + input CEC; + input CECARRYIN; + input CECTRL; + input CEM; + input CEMULTCARRYIN; + input CEP; + (* clkbuf_sink *) + input CLK; + input MULTSIGNIN; + input [6:0] OPMODE; + input [47:0] PCIN; + input RSTA; + input RSTALLCARRYIN; + input RSTALUMODE; + input RSTB; + input RSTC; + input RSTCTRL; + input RSTM; + input RSTP; +endmodule + +module DSP48E2 (...); + parameter integer ACASCREG = 1; + parameter integer ADREG = 1; + parameter integer ALUMODEREG = 1; + parameter AMULTSEL = "A"; + parameter integer AREG = 1; + parameter AUTORESET_PATDET = "NO_RESET"; + parameter AUTORESET_PRIORITY = "RESET"; + parameter A_INPUT = "DIRECT"; + parameter integer BCASCREG = 1; + parameter BMULTSEL = "B"; + parameter integer BREG = 1; + parameter B_INPUT = "DIRECT"; + parameter integer CARRYINREG = 1; + parameter integer CARRYINSELREG = 1; + parameter integer CREG = 1; + parameter integer DREG = 1; + parameter integer INMODEREG = 1; + parameter [3:0] IS_ALUMODE_INVERTED = 4'b0000; + parameter [0:0] IS_CARRYIN_INVERTED = 1'b0; + parameter [0:0] IS_CLK_INVERTED = 1'b0; + parameter [4:0] IS_INMODE_INVERTED = 5'b00000; + parameter [8:0] IS_OPMODE_INVERTED = 9'b000000000; + parameter [0:0] IS_RSTALLCARRYIN_INVERTED = 1'b0; + parameter [0:0] IS_RSTALUMODE_INVERTED = 1'b0; + parameter [0:0] IS_RSTA_INVERTED = 1'b0; + parameter [0:0] IS_RSTB_INVERTED = 1'b0; + parameter [0:0] IS_RSTCTRL_INVERTED = 1'b0; + parameter [0:0] IS_RSTC_INVERTED = 1'b0; + parameter [0:0] IS_RSTD_INVERTED = 1'b0; + parameter [0:0] IS_RSTINMODE_INVERTED = 1'b0; + parameter [0:0] IS_RSTM_INVERTED = 1'b0; + parameter [0:0] IS_RSTP_INVERTED = 1'b0; + parameter [47:0] MASK = 48'h3FFFFFFFFFFF; + parameter integer MREG = 1; + parameter integer OPMODEREG = 1; + parameter [47:0] PATTERN = 48'h000000000000; + parameter PREADDINSEL = "A"; + parameter integer PREG = 1; + parameter [47:0] RND = 48'h000000000000; + parameter SEL_MASK = "MASK"; + parameter SEL_PATTERN = "PATTERN"; + parameter USE_MULT = "MULTIPLY"; + parameter USE_PATTERN_DETECT = "NO_PATDET"; + parameter USE_SIMD = "ONE48"; + parameter USE_WIDEXOR = "FALSE"; + parameter XORSIMD = "XOR24_48_96"; + output [29:0] ACOUT; + output [17:0] BCOUT; + output CARRYCASCOUT; + output [3:0] CARRYOUT; + output MULTSIGNOUT; + output OVERFLOW; + output [47:0] P; + output PATTERNBDETECT; + output PATTERNDETECT; + output [47:0] PCOUT; + output UNDERFLOW; + output [7:0] XOROUT; + input [29:0] A; + input [29:0] ACIN; + (* invertible_pin = "IS_ALUMODE_INVERTED" *) + input [3:0] ALUMODE; + input [17:0] B; + input [17:0] BCIN; + input [47:0] C; + input CARRYCASCIN; + (* invertible_pin = "IS_CARRYIN_INVERTED" *) + input CARRYIN; + input [2:0] CARRYINSEL; + input CEA1; + input CEA2; + input CEAD; + input CEALUMODE; + input CEB1; + input CEB2; + input CEC; + input CECARRYIN; + input CECTRL; + input CED; + input CEINMODE; + input CEM; + input CEP; + (* clkbuf_sink *) + (* invertible_pin = "IS_CLK_INVERTED" *) + input CLK; + input [26:0] D; + (* invertible_pin = "IS_INMODE_INVERTED" *) + input [4:0] INMODE; + input MULTSIGNIN; + (* invertible_pin = "IS_OPMODE_INVERTED" *) + input [8:0] OPMODE; + input [47:0] PCIN; + (* invertible_pin = "IS_RSTA_INVERTED" *) + input RSTA; + (* invertible_pin = "IS_RSTALLCARRYIN_INVERTED" *) + input RSTALLCARRYIN; + (* invertible_pin = "IS_RSTALUMODE_INVERTED" *) + input RSTALUMODE; + (* invertible_pin = "IS_RSTB_INVERTED" *) + input RSTB; + (* invertible_pin = "IS_RSTC_INVERTED" *) + input RSTC; + (* invertible_pin = "IS_RSTCTRL_INVERTED" *) + input RSTCTRL; + (* invertible_pin = "IS_RSTD_INVERTED" *) + input RSTD; + (* invertible_pin = "IS_RSTINMODE_INVERTED" *) + input RSTINMODE; + (* invertible_pin = "IS_RSTM_INVERTED" *) + input RSTM; + (* invertible_pin = "IS_RSTP_INVERTED" *) + input RSTP; +endmodule + +module FDDRCPE (...); + parameter INIT = 1'b0; + (* clkbuf_sink *) + input C0; + (* clkbuf_sink *) + input C1; + input CE; + input D0; + input D1; + input CLR; + input PRE; + output Q; +endmodule + +module FDDRRSE (...); + parameter INIT = 1'b0; + output Q; + (* clkbuf_sink *) + input C0; + (* clkbuf_sink *) + input C1; + input CE; + input D0; + input D1; + input R; + input S; +endmodule + +module IFDDRCPE (...); + output Q0; + output Q1; + (* clkbuf_sink *) + input C0; + (* clkbuf_sink *) + input C1; + input CE; + input CLR; + (* iopad_external_pin *) + input D; + input PRE; +endmodule + +module IFDDRRSE (...); + output Q0; + output Q1; + (* clkbuf_sink *) + input C0; + (* clkbuf_sink *) + input C1; + input CE; + (* iopad_external_pin *) + input D; + input R; + input S; +endmodule + +module OFDDRCPE (...); + (* iopad_external_pin *) + output Q; + (* clkbuf_sink *) + input C0; + (* clkbuf_sink *) + input C1; + input CE; + input CLR; + input D0; + input D1; + input PRE; +endmodule + +module OFDDRRSE (...); + (* iopad_external_pin *) + output Q; + (* clkbuf_sink *) + input C0; + (* clkbuf_sink *) + input C1; + input CE; + input D0; + input D1; + input R; + input S; +endmodule + +module OFDDRTCPE (...); + (* iopad_external_pin *) + output O; + (* clkbuf_sink *) + input C0; + (* clkbuf_sink *) + input C1; + input CE; + input CLR; + input D0; + input D1; + input PRE; + input T; +endmodule + +module OFDDRTRSE (...); + (* iopad_external_pin *) + output O; + (* clkbuf_sink *) + input C0; + (* clkbuf_sink *) + input C1; + input CE; + input D0; + input D1; + input R; + input S; + input T; +endmodule + +module IDDR2 (...); + parameter DDR_ALIGNMENT = "NONE"; + parameter [0:0] INIT_Q0 = 1'b0; + parameter [0:0] INIT_Q1 = 1'b0; + parameter SRTYPE = "SYNC"; + output Q0; + output Q1; + (* clkbuf_sink *) + input C0; + (* clkbuf_sink *) + input C1; + input CE; + input D; + input R; + input S; +endmodule + +module ODDR2 (...); + parameter DDR_ALIGNMENT = "NONE"; + parameter [0:0] INIT = 1'b0; + parameter SRTYPE = "SYNC"; + output Q; + (* clkbuf_sink *) + input C0; + (* clkbuf_sink *) + input C1; + input CE; + input D0; + input D1; + input R; + input S; +endmodule + +module IDDR (...); + parameter DDR_CLK_EDGE = "OPPOSITE_EDGE"; + parameter INIT_Q1 = 1'b0; + parameter INIT_Q2 = 1'b0; + parameter [0:0] IS_C_INVERTED = 1'b0; + parameter [0:0] IS_D_INVERTED = 1'b0; + parameter SRTYPE = "SYNC"; + parameter MSGON = "TRUE"; + parameter XON = "TRUE"; + output Q1; + output Q2; + (* clkbuf_sink *) + (* invertible_pin = "IS_C_INVERTED" *) + input C; + input CE; + (* invertible_pin = "IS_D_INVERTED" *) + input D; + input R; + input S; +endmodule + +module IDDR_2CLK (...); + parameter DDR_CLK_EDGE = "OPPOSITE_EDGE"; + parameter INIT_Q1 = 1'b0; + parameter INIT_Q2 = 1'b0; + parameter [0:0] IS_CB_INVERTED = 1'b0; + parameter [0:0] IS_C_INVERTED = 1'b0; + parameter [0:0] IS_D_INVERTED = 1'b0; + parameter SRTYPE = "SYNC"; + output Q1; + output Q2; + (* clkbuf_sink *) + (* invertible_pin = "IS_C_INVERTED" *) + input C; + (* clkbuf_sink *) + (* invertible_pin = "IS_CB_INVERTED" *) + input CB; + input CE; + (* invertible_pin = "IS_D_INVERTED" *) + input D; + input R; + input S; +endmodule + +module ODDR (...); + parameter DDR_CLK_EDGE = "OPPOSITE_EDGE"; + parameter INIT = 1'b0; + parameter [0:0] IS_C_INVERTED = 1'b0; + parameter [0:0] IS_D1_INVERTED = 1'b0; + parameter [0:0] IS_D2_INVERTED = 1'b0; + parameter SRTYPE = "SYNC"; + parameter MSGON = "TRUE"; + parameter XON = "TRUE"; + output Q; + (* clkbuf_sink *) + (* invertible_pin = "IS_C_INVERTED" *) + input C; + input CE; + (* invertible_pin = "IS_D1_INVERTED" *) + input D1; + (* invertible_pin = "IS_D2_INVERTED" *) + input D2; + input R; + input S; +endmodule + +(* keep *) +module IDELAYCTRL (...); + parameter SIM_DEVICE = "7SERIES"; + output RDY; + (* clkbuf_sink *) + input REFCLK; + input RST; +endmodule + +module IDELAY (...); + parameter IOBDELAY_TYPE = "DEFAULT"; + parameter integer IOBDELAY_VALUE = 0; + output O; + (* clkbuf_sink *) + input C; + input CE; + input I; + input INC; + input RST; +endmodule + +module ISERDES (...); + parameter BITSLIP_ENABLE = "FALSE"; + parameter DATA_RATE = "DDR"; + parameter integer DATA_WIDTH = 4; + parameter [0:0] INIT_Q1 = 1'b0; + parameter [0:0] INIT_Q2 = 1'b0; + parameter [0:0] INIT_Q3 = 1'b0; + parameter [0:0] INIT_Q4 = 1'b0; + parameter INTERFACE_TYPE = "MEMORY"; + parameter IOBDELAY = "NONE"; + parameter IOBDELAY_TYPE = "DEFAULT"; + parameter integer IOBDELAY_VALUE = 0; + parameter integer NUM_CE = 2; + parameter SERDES_MODE = "MASTER"; + parameter integer SIM_DELAY_D = 0; + parameter integer SIM_SETUP_D_CLK = 0; + parameter integer SIM_HOLD_D_CLK = 0; + parameter [0:0] SRVAL_Q1 = 1'b0; + parameter [0:0] SRVAL_Q2 = 1'b0; + parameter [0:0] SRVAL_Q3 = 1'b0; + parameter [0:0] SRVAL_Q4 = 1'b0; + output O; + output Q1; + output Q2; + output Q3; + output Q4; + output Q5; + output Q6; + output SHIFTOUT1; + output SHIFTOUT2; + input BITSLIP; + input CE1; + input CE2; + (* clkbuf_sink *) + input CLK; + (* clkbuf_sink *) + input CLKDIV; + input D; + input DLYCE; + input DLYINC; + input DLYRST; + (* clkbuf_sink *) + input OCLK; + input REV; + input SHIFTIN1; + input SHIFTIN2; + input SR; +endmodule + +module OSERDES (...); + parameter DATA_RATE_OQ = "DDR"; + parameter DATA_RATE_TQ = "DDR"; + parameter integer DATA_WIDTH = 4; + parameter [0:0] INIT_OQ = 1'b0; + parameter [0:0] INIT_TQ = 1'b0; + parameter SERDES_MODE = "MASTER"; + parameter [0:0] SRVAL_OQ = 1'b0; + parameter [0:0] SRVAL_TQ = 1'b0; + parameter integer TRISTATE_WIDTH = 4; + output OQ; + output SHIFTOUT1; + output SHIFTOUT2; + output TQ; + (* clkbuf_sink *) + input CLK; + (* clkbuf_sink *) + input CLKDIV; + input D1; + input D2; + input D3; + input D4; + input D5; + input D6; + input OCE; + input REV; + input SHIFTIN1; + input SHIFTIN2; + input SR; + input T1; + input T2; + input T3; + input T4; + input TCE; +endmodule + +module IODELAY (...); + parameter DELAY_SRC = "I"; + parameter HIGH_PERFORMANCE_MODE = "TRUE"; + parameter IDELAY_TYPE = "DEFAULT"; + parameter integer IDELAY_VALUE = 0; + parameter integer ODELAY_VALUE = 0; + parameter real REFCLK_FREQUENCY = 200.0; + parameter SIGNAL_PATTERN = "DATA"; + output DATAOUT; + (* clkbuf_sink *) + input C; + input CE; + input DATAIN; + input IDATAIN; + input INC; + input ODATAIN; + input RST; + input T; +endmodule + +module ISERDES_NODELAY (...); + parameter BITSLIP_ENABLE = "FALSE"; + parameter DATA_RATE = "DDR"; + parameter integer DATA_WIDTH = 4; + parameter INIT_Q1 = 1'b0; + parameter INIT_Q2 = 1'b0; + parameter INIT_Q3 = 1'b0; + parameter INIT_Q4 = 1'b0; + parameter INTERFACE_TYPE = "MEMORY"; + parameter integer NUM_CE = 2; + parameter SERDES_MODE = "MASTER"; + output Q1; + output Q2; + output Q3; + output Q4; + output Q5; + output Q6; + output SHIFTOUT1; + output SHIFTOUT2; + input BITSLIP; + input CE1; + input CE2; + (* clkbuf_sink *) + input CLK; + (* clkbuf_sink *) + input CLKB; + (* clkbuf_sink *) + input CLKDIV; + input D; + (* clkbuf_sink *) + input OCLK; + input RST; + input SHIFTIN1; + input SHIFTIN2; +endmodule + +module IODELAYE1 (...); + parameter CINVCTRL_SEL = "FALSE"; + parameter DELAY_SRC = "I"; + parameter HIGH_PERFORMANCE_MODE = "FALSE"; + parameter IDELAY_TYPE = "DEFAULT"; + parameter integer IDELAY_VALUE = 0; + parameter ODELAY_TYPE = "FIXED"; + parameter integer ODELAY_VALUE = 0; + parameter real REFCLK_FREQUENCY = 200.0; + parameter SIGNAL_PATTERN = "DATA"; + output [4:0] CNTVALUEOUT; + output DATAOUT; + (* clkbuf_sink *) + input C; + input CE; + input CINVCTRL; + input CLKIN; + input [4:0] CNTVALUEIN; + input DATAIN; + input IDATAIN; + input INC; + input ODATAIN; + input RST; + input T; +endmodule + +module ISERDESE1 (...); + parameter DATA_RATE = "DDR"; + parameter integer DATA_WIDTH = 4; + parameter DYN_CLKDIV_INV_EN = "FALSE"; + parameter DYN_CLK_INV_EN = "FALSE"; + parameter [0:0] INIT_Q1 = 1'b0; + parameter [0:0] INIT_Q2 = 1'b0; + parameter [0:0] INIT_Q3 = 1'b0; + parameter [0:0] INIT_Q4 = 1'b0; + parameter INTERFACE_TYPE = "MEMORY"; + parameter integer NUM_CE = 2; + parameter IOBDELAY = "NONE"; + parameter OFB_USED = "FALSE"; + parameter SERDES_MODE = "MASTER"; + parameter [0:0] SRVAL_Q1 = 1'b0; + parameter [0:0] SRVAL_Q2 = 1'b0; + parameter [0:0] SRVAL_Q3 = 1'b0; + parameter [0:0] SRVAL_Q4 = 1'b0; + output O; + output Q1; + output Q2; + output Q3; + output Q4; + output Q5; + output Q6; + output SHIFTOUT1; + output SHIFTOUT2; + input BITSLIP; + input CE1; + input CE2; + (* clkbuf_sink *) + input CLK; + (* clkbuf_sink *) + input CLKB; + (* clkbuf_sink *) + input CLKDIV; + input D; + input DDLY; + input DYNCLKDIVSEL; + input DYNCLKSEL; + (* clkbuf_sink *) + input OCLK; + input OFB; + input RST; + input SHIFTIN1; + input SHIFTIN2; +endmodule + +module OSERDESE1 (...); + parameter DATA_RATE_OQ = "DDR"; + parameter DATA_RATE_TQ = "DDR"; + parameter integer DATA_WIDTH = 4; + parameter integer DDR3_DATA = 1; + parameter [0:0] INIT_OQ = 1'b0; + parameter [0:0] INIT_TQ = 1'b0; + parameter INTERFACE_TYPE = "DEFAULT"; + parameter integer ODELAY_USED = 0; + parameter SERDES_MODE = "MASTER"; + parameter [0:0] SRVAL_OQ = 1'b0; + parameter [0:0] SRVAL_TQ = 1'b0; + parameter integer TRISTATE_WIDTH = 4; + output OCBEXTEND; + output OFB; + output OQ; + output SHIFTOUT1; + output SHIFTOUT2; + output TFB; + output TQ; + (* clkbuf_sink *) + input CLK; + (* clkbuf_sink *) + input CLKDIV; + input CLKPERF; + input CLKPERFDELAY; + input D1; + input D2; + input D3; + input D4; + input D5; + input D6; + input OCE; + input ODV; + input RST; + input SHIFTIN1; + input SHIFTIN2; + input T1; + input T2; + input T3; + input T4; + input TCE; + input WC; +endmodule + +module IDELAYE2 (...); + parameter CINVCTRL_SEL = "FALSE"; + parameter DELAY_SRC = "IDATAIN"; + parameter HIGH_PERFORMANCE_MODE = "FALSE"; + parameter IDELAY_TYPE = "FIXED"; + parameter integer IDELAY_VALUE = 0; + parameter [0:0] IS_C_INVERTED = 1'b0; + parameter [0:0] IS_DATAIN_INVERTED = 1'b0; + parameter [0:0] IS_IDATAIN_INVERTED = 1'b0; + parameter PIPE_SEL = "FALSE"; + parameter real REFCLK_FREQUENCY = 200.0; + parameter SIGNAL_PATTERN = "DATA"; + parameter integer SIM_DELAY_D = 0; + output [4:0] CNTVALUEOUT; + output DATAOUT; + (* clkbuf_sink *) + (* invertible_pin = "IS_C_INVERTED" *) + input C; + input CE; + input CINVCTRL; + input [4:0] CNTVALUEIN; + (* invertible_pin = "IS_DATAIN_INVERTED" *) + input DATAIN; + (* invertible_pin = "IS_IDATAIN_INVERTED" *) + input IDATAIN; + input INC; + input LD; + input LDPIPEEN; + input REGRST; +endmodule + +module ODELAYE2 (...); + parameter CINVCTRL_SEL = "FALSE"; + parameter DELAY_SRC = "ODATAIN"; + parameter HIGH_PERFORMANCE_MODE = "FALSE"; + parameter [0:0] IS_C_INVERTED = 1'b0; + parameter [0:0] IS_ODATAIN_INVERTED = 1'b0; + parameter ODELAY_TYPE = "FIXED"; + parameter integer ODELAY_VALUE = 0; + parameter PIPE_SEL = "FALSE"; + parameter real REFCLK_FREQUENCY = 200.0; + parameter SIGNAL_PATTERN = "DATA"; + parameter integer SIM_DELAY_D = 0; + output [4:0] CNTVALUEOUT; + output DATAOUT; + (* clkbuf_sink *) + (* invertible_pin = "IS_C_INVERTED" *) + input C; + input CE; + input CINVCTRL; + input CLKIN; + input [4:0] CNTVALUEIN; + input INC; + input LD; + input LDPIPEEN; + (* invertible_pin = "IS_ODATAIN_INVERTED" *) + input ODATAIN; + input REGRST; +endmodule + +module ISERDESE2 (...); + parameter DATA_RATE = "DDR"; + parameter integer DATA_WIDTH = 4; + parameter DYN_CLKDIV_INV_EN = "FALSE"; + parameter DYN_CLK_INV_EN = "FALSE"; + parameter [0:0] INIT_Q1 = 1'b0; + parameter [0:0] INIT_Q2 = 1'b0; + parameter [0:0] INIT_Q3 = 1'b0; + parameter [0:0] INIT_Q4 = 1'b0; + parameter INTERFACE_TYPE = "MEMORY"; + parameter IOBDELAY = "NONE"; + parameter [0:0] IS_CLKB_INVERTED = 1'b0; + parameter [0:0] IS_CLKDIVP_INVERTED = 1'b0; + parameter [0:0] IS_CLKDIV_INVERTED = 1'b0; + parameter [0:0] IS_CLK_INVERTED = 1'b0; + parameter [0:0] IS_D_INVERTED = 1'b0; + parameter [0:0] IS_OCLKB_INVERTED = 1'b0; + parameter [0:0] IS_OCLK_INVERTED = 1'b0; + parameter integer NUM_CE = 2; + parameter OFB_USED = "FALSE"; + parameter SERDES_MODE = "MASTER"; + parameter [0:0] SRVAL_Q1 = 1'b0; + parameter [0:0] SRVAL_Q2 = 1'b0; + parameter [0:0] SRVAL_Q3 = 1'b0; + parameter [0:0] SRVAL_Q4 = 1'b0; + output O; + output Q1; + output Q2; + output Q3; + output Q4; + output Q5; + output Q6; + output Q7; + output Q8; + output SHIFTOUT1; + output SHIFTOUT2; + input BITSLIP; + input CE1; + input CE2; + (* clkbuf_sink *) + (* invertible_pin = "IS_CLK_INVERTED" *) + input CLK; + (* clkbuf_sink *) + (* invertible_pin = "IS_CLKB_INVERTED" *) + input CLKB; + (* clkbuf_sink *) + (* invertible_pin = "IS_CLKDIV_INVERTED" *) + input CLKDIV; + (* clkbuf_sink *) + (* invertible_pin = "IS_CLKDIVP_INVERTED" *) + input CLKDIVP; + (* invertible_pin = "IS_D_INVERTED" *) + input D; + input DDLY; + input DYNCLKDIVSEL; + input DYNCLKSEL; + (* clkbuf_sink *) + (* invertible_pin = "IS_OCLK_INVERTED" *) + input OCLK; + (* clkbuf_sink *) + (* invertible_pin = "IS_OCLKB_INVERTED" *) + input OCLKB; + input OFB; + input RST; + input SHIFTIN1; + input SHIFTIN2; +endmodule + +module OSERDESE2 (...); + parameter DATA_RATE_OQ = "DDR"; + parameter DATA_RATE_TQ = "DDR"; + parameter integer DATA_WIDTH = 4; + parameter [0:0] INIT_OQ = 1'b0; + parameter [0:0] INIT_TQ = 1'b0; + parameter [0:0] IS_CLKDIV_INVERTED = 1'b0; + parameter [0:0] IS_CLK_INVERTED = 1'b0; + parameter [0:0] IS_D1_INVERTED = 1'b0; + parameter [0:0] IS_D2_INVERTED = 1'b0; + parameter [0:0] IS_D3_INVERTED = 1'b0; + parameter [0:0] IS_D4_INVERTED = 1'b0; + parameter [0:0] IS_D5_INVERTED = 1'b0; + parameter [0:0] IS_D6_INVERTED = 1'b0; + parameter [0:0] IS_D7_INVERTED = 1'b0; + parameter [0:0] IS_D8_INVERTED = 1'b0; + parameter [0:0] IS_T1_INVERTED = 1'b0; + parameter [0:0] IS_T2_INVERTED = 1'b0; + parameter [0:0] IS_T3_INVERTED = 1'b0; + parameter [0:0] IS_T4_INVERTED = 1'b0; + parameter SERDES_MODE = "MASTER"; + parameter [0:0] SRVAL_OQ = 1'b0; + parameter [0:0] SRVAL_TQ = 1'b0; + parameter TBYTE_CTL = "FALSE"; + parameter TBYTE_SRC = "FALSE"; + parameter integer TRISTATE_WIDTH = 4; + output OFB; + output OQ; + output SHIFTOUT1; + output SHIFTOUT2; + output TBYTEOUT; + output TFB; + output TQ; + (* clkbuf_sink *) + (* invertible_pin = "IS_CLK_INVERTED" *) + input CLK; + (* clkbuf_sink *) + (* invertible_pin = "IS_CLKDIV_INVERTED" *) + input CLKDIV; + (* invertible_pin = "IS_D1_INVERTED" *) + input D1; + (* invertible_pin = "IS_D2_INVERTED" *) + input D2; + (* invertible_pin = "IS_D3_INVERTED" *) + input D3; + (* invertible_pin = "IS_D4_INVERTED" *) + input D4; + (* invertible_pin = "IS_D5_INVERTED" *) + input D5; + (* invertible_pin = "IS_D6_INVERTED" *) + input D6; + (* invertible_pin = "IS_D7_INVERTED" *) + input D7; + (* invertible_pin = "IS_D8_INVERTED" *) + input D8; + input OCE; + input RST; + input SHIFTIN1; + input SHIFTIN2; + (* invertible_pin = "IS_T1_INVERTED" *) + input T1; + (* invertible_pin = "IS_T2_INVERTED" *) + input T2; + (* invertible_pin = "IS_T3_INVERTED" *) + input T3; + (* invertible_pin = "IS_T4_INVERTED" *) + input T4; + input TBYTEIN; + input TCE; +endmodule + +(* keep *) +module PHASER_IN (...); + parameter integer CLKOUT_DIV = 4; + parameter DQS_BIAS_MODE = "FALSE"; + parameter EN_ISERDES_RST = "FALSE"; + parameter integer FINE_DELAY = 0; + parameter FREQ_REF_DIV = "NONE"; + parameter [0:0] IS_RST_INVERTED = 1'b0; + parameter real MEMREFCLK_PERIOD = 0.000; + parameter OUTPUT_CLK_SRC = "PHASE_REF"; + parameter real PHASEREFCLK_PERIOD = 0.000; + parameter real REFCLK_PERIOD = 0.000; + parameter integer SEL_CLK_OFFSET = 5; + parameter SYNC_IN_DIV_RST = "FALSE"; + output FINEOVERFLOW; + output ICLK; + output ICLKDIV; + output ISERDESRST; + output RCLK; + output [5:0] COUNTERREADVAL; + input COUNTERLOADEN; + input COUNTERREADEN; + input DIVIDERST; + input EDGEADV; + input FINEENABLE; + input FINEINC; + input FREQREFCLK; + input MEMREFCLK; + input PHASEREFCLK; + (* invertible_pin = "IS_RST_INVERTED" *) + input RST; + input SYNCIN; + input SYSCLK; + input [1:0] RANKSEL; + input [5:0] COUNTERLOADVAL; +endmodule + +(* keep *) +module PHASER_IN_PHY (...); + parameter BURST_MODE = "FALSE"; + parameter integer CLKOUT_DIV = 4; + parameter [0:0] DQS_AUTO_RECAL = 1'b1; + parameter DQS_BIAS_MODE = "FALSE"; + parameter [2:0] DQS_FIND_PATTERN = 3'b001; + parameter integer FINE_DELAY = 0; + parameter FREQ_REF_DIV = "NONE"; + parameter [0:0] IS_RST_INVERTED = 1'b0; + parameter real MEMREFCLK_PERIOD = 0.000; + parameter OUTPUT_CLK_SRC = "PHASE_REF"; + parameter real PHASEREFCLK_PERIOD = 0.000; + parameter real REFCLK_PERIOD = 0.000; + parameter integer SEL_CLK_OFFSET = 5; + parameter SYNC_IN_DIV_RST = "FALSE"; + parameter WR_CYCLES = "FALSE"; + output DQSFOUND; + output DQSOUTOFRANGE; + output FINEOVERFLOW; + output ICLK; + output ICLKDIV; + output ISERDESRST; + output PHASELOCKED; + output RCLK; + output WRENABLE; + output [5:0] COUNTERREADVAL; + input BURSTPENDINGPHY; + input COUNTERLOADEN; + input COUNTERREADEN; + input FINEENABLE; + input FINEINC; + input FREQREFCLK; + input MEMREFCLK; + input PHASEREFCLK; + (* invertible_pin = "IS_RST_INVERTED" *) + input RST; + input RSTDQSFIND; + input SYNCIN; + input SYSCLK; + input [1:0] ENCALIBPHY; + input [1:0] RANKSELPHY; + input [5:0] COUNTERLOADVAL; +endmodule + +(* keep *) +module PHASER_OUT (...); + parameter integer CLKOUT_DIV = 4; + parameter COARSE_BYPASS = "FALSE"; + parameter integer COARSE_DELAY = 0; + parameter EN_OSERDES_RST = "FALSE"; + parameter integer FINE_DELAY = 0; + parameter [0:0] IS_RST_INVERTED = 1'b0; + parameter real MEMREFCLK_PERIOD = 0.000; + parameter OCLKDELAY_INV = "FALSE"; + parameter integer OCLK_DELAY = 0; + parameter OUTPUT_CLK_SRC = "PHASE_REF"; + parameter real PHASEREFCLK_PERIOD = 0.000; + parameter [2:0] PO = 3'b000; + parameter real REFCLK_PERIOD = 0.000; + parameter SYNC_IN_DIV_RST = "FALSE"; + output COARSEOVERFLOW; + output FINEOVERFLOW; + output OCLK; + output OCLKDELAYED; + output OCLKDIV; + output OSERDESRST; + output [8:0] COUNTERREADVAL; + input COARSEENABLE; + input COARSEINC; + input COUNTERLOADEN; + input COUNTERREADEN; + input DIVIDERST; + input EDGEADV; + input FINEENABLE; + input FINEINC; + input FREQREFCLK; + input MEMREFCLK; + input PHASEREFCLK; + (* invertible_pin = "IS_RST_INVERTED" *) + input RST; + input SELFINEOCLKDELAY; + input SYNCIN; + input SYSCLK; + input [8:0] COUNTERLOADVAL; +endmodule + +(* keep *) +module PHASER_OUT_PHY (...); + parameter integer CLKOUT_DIV = 4; + parameter COARSE_BYPASS = "FALSE"; + parameter integer COARSE_DELAY = 0; + parameter DATA_CTL_N = "FALSE"; + parameter DATA_RD_CYCLES = "FALSE"; + parameter integer FINE_DELAY = 0; + parameter [0:0] IS_RST_INVERTED = 1'b0; + parameter real MEMREFCLK_PERIOD = 0.000; + parameter OCLKDELAY_INV = "FALSE"; + parameter integer OCLK_DELAY = 0; + parameter OUTPUT_CLK_SRC = "PHASE_REF"; + parameter real PHASEREFCLK_PERIOD = 0.000; + parameter [2:0] PO = 3'b000; + parameter real REFCLK_PERIOD = 0.000; + parameter SYNC_IN_DIV_RST = "FALSE"; + output COARSEOVERFLOW; + output FINEOVERFLOW; + output OCLK; + output OCLKDELAYED; + output OCLKDIV; + output OSERDESRST; + output RDENABLE; + output [1:0] CTSBUS; + output [1:0] DQSBUS; + output [1:0] DTSBUS; + output [8:0] COUNTERREADVAL; + input BURSTPENDINGPHY; + input COARSEENABLE; + input COARSEINC; + input COUNTERLOADEN; + input COUNTERREADEN; + input FINEENABLE; + input FINEINC; + input FREQREFCLK; + input MEMREFCLK; + input PHASEREFCLK; + (* invertible_pin = "IS_RST_INVERTED" *) + input RST; + input SELFINEOCLKDELAY; + input SYNCIN; + input SYSCLK; + input [1:0] ENCALIBPHY; + input [8:0] COUNTERLOADVAL; +endmodule + +(* keep *) +module PHASER_REF (...); + parameter [0:0] IS_RST_INVERTED = 1'b0; + parameter [0:0] IS_PWRDWN_INVERTED = 1'b0; + output LOCKED; + input CLKIN; + (* invertible_pin = "IS_PWRDWN_INVERTED" *) + input PWRDWN; + (* invertible_pin = "IS_RST_INVERTED" *) + input RST; +endmodule + +(* keep *) +module PHY_CONTROL (...); + parameter integer AO_TOGGLE = 0; + parameter [3:0] AO_WRLVL_EN = 4'b0000; + parameter BURST_MODE = "FALSE"; + parameter integer CLK_RATIO = 1; + parameter integer CMD_OFFSET = 0; + parameter integer CO_DURATION = 0; + parameter DATA_CTL_A_N = "FALSE"; + parameter DATA_CTL_B_N = "FALSE"; + parameter DATA_CTL_C_N = "FALSE"; + parameter DATA_CTL_D_N = "FALSE"; + parameter DISABLE_SEQ_MATCH = "TRUE"; + parameter integer DI_DURATION = 0; + parameter integer DO_DURATION = 0; + parameter integer EVENTS_DELAY = 63; + parameter integer FOUR_WINDOW_CLOCKS = 63; + parameter MULTI_REGION = "FALSE"; + parameter PHY_COUNT_ENABLE = "FALSE"; + parameter integer RD_CMD_OFFSET_0 = 0; + parameter integer RD_CMD_OFFSET_1 = 00; + parameter integer RD_CMD_OFFSET_2 = 0; + parameter integer RD_CMD_OFFSET_3 = 0; + parameter integer RD_DURATION_0 = 0; + parameter integer RD_DURATION_1 = 0; + parameter integer RD_DURATION_2 = 0; + parameter integer RD_DURATION_3 = 0; + parameter SYNC_MODE = "FALSE"; + parameter integer WR_CMD_OFFSET_0 = 0; + parameter integer WR_CMD_OFFSET_1 = 0; + parameter integer WR_CMD_OFFSET_2 = 0; + parameter integer WR_CMD_OFFSET_3 = 0; + parameter integer WR_DURATION_0 = 0; + parameter integer WR_DURATION_1 = 0; + parameter integer WR_DURATION_2 = 0; + parameter integer WR_DURATION_3 = 0; + output PHYCTLALMOSTFULL; + output PHYCTLEMPTY; + output PHYCTLFULL; + output PHYCTLREADY; + output [1:0] INRANKA; + output [1:0] INRANKB; + output [1:0] INRANKC; + output [1:0] INRANKD; + output [1:0] PCENABLECALIB; + output [3:0] AUXOUTPUT; + output [3:0] INBURSTPENDING; + output [3:0] OUTBURSTPENDING; + input MEMREFCLK; + input PHYCLK; + input PHYCTLMSTREMPTY; + input PHYCTLWRENABLE; + input PLLLOCK; + input READCALIBENABLE; + input REFDLLLOCK; + input RESET; + input SYNCIN; + input WRITECALIBENABLE; + input [31:0] PHYCTLWD; +endmodule + +module IDDRE1 (...); + parameter DDR_CLK_EDGE = "OPPOSITE_EDGE"; + parameter [0:0] IS_CB_INVERTED = 1'b0; + parameter [0:0] IS_C_INVERTED = 1'b0; + output Q1; + output Q2; + (* clkbuf_sink *) + (* invertible_pin = "IS_C_INVERTED" *) + input C; + (* clkbuf_sink *) + (* invertible_pin = "IS_CB_INVERTED" *) + input CB; + input D; + input R; +endmodule + +module ODDRE1 (...); + parameter [0:0] IS_C_INVERTED = 1'b0; + parameter [0:0] IS_D1_INVERTED = 1'b0; + parameter [0:0] IS_D2_INVERTED = 1'b0; + parameter SIM_DEVICE = "ULTRASCALE"; + parameter [0:0] SRVAL = 1'b0; + output Q; + (* clkbuf_sink *) + (* invertible_pin = "IS_C_INVERTED" *) + input C; + (* invertible_pin = "IS_D1_INVERTED" *) + input D1; + (* invertible_pin = "IS_D2_INVERTED" *) + input D2; + input SR; +endmodule + +module IDELAYE3 (...); + parameter CASCADE = "NONE"; + parameter DELAY_FORMAT = "TIME"; + parameter DELAY_SRC = "IDATAIN"; + parameter DELAY_TYPE = "FIXED"; + parameter integer DELAY_VALUE = 0; + parameter [0:0] IS_CLK_INVERTED = 1'b0; + parameter [0:0] IS_RST_INVERTED = 1'b0; + parameter LOOPBACK = "FALSE"; + parameter real REFCLK_FREQUENCY = 300.0; + parameter SIM_DEVICE = "ULTRASCALE"; + parameter real SIM_VERSION = 2.0; + parameter UPDATE_MODE = "ASYNC"; + output CASC_OUT; + output [8:0] CNTVALUEOUT; + output DATAOUT; + input CASC_IN; + input CASC_RETURN; + input CE; + (* clkbuf_sink *) + (* invertible_pin = "IS_CLK_INVERTED" *) + input CLK; + input [8:0] CNTVALUEIN; + input DATAIN; + input EN_VTC; + input IDATAIN; + input INC; + input LOAD; + (* invertible_pin = "IS_RST_INVERTED" *) + input RST; +endmodule + +module ODELAYE3 (...); + parameter CASCADE = "NONE"; + parameter DELAY_FORMAT = "TIME"; + parameter DELAY_TYPE = "FIXED"; + parameter integer DELAY_VALUE = 0; + parameter [0:0] IS_CLK_INVERTED = 1'b0; + parameter [0:0] IS_RST_INVERTED = 1'b0; + parameter real REFCLK_FREQUENCY = 300.0; + parameter SIM_DEVICE = "ULTRASCALE"; + parameter real SIM_VERSION = 2.0; + parameter UPDATE_MODE = "ASYNC"; + output CASC_OUT; + output [8:0] CNTVALUEOUT; + output DATAOUT; + input CASC_IN; + input CASC_RETURN; + input CE; + (* clkbuf_sink *) + (* invertible_pin = "IS_CLK_INVERTED" *) + input CLK; + input [8:0] CNTVALUEIN; + input EN_VTC; + input INC; + input LOAD; + input ODATAIN; + (* invertible_pin = "IS_RST_INVERTED" *) + input RST; +endmodule + +module ISERDESE3 (...); + parameter integer DATA_WIDTH = 8; + parameter DDR_CLK_EDGE = "OPPOSITE_EDGE"; + parameter FIFO_ENABLE = "FALSE"; + parameter FIFO_SYNC_MODE = "FALSE"; + parameter IDDR_MODE = "FALSE"; + parameter [0:0] IS_CLK_B_INVERTED = 1'b0; + parameter [0:0] IS_CLK_INVERTED = 1'b0; + parameter [0:0] IS_RST_INVERTED = 1'b0; + parameter SIM_DEVICE = "ULTRASCALE"; + parameter real SIM_VERSION = 2.0; + output FIFO_EMPTY; + output INTERNAL_DIVCLK; + output [7:0] Q; + (* clkbuf_sink *) + (* invertible_pin = "IS_CLK_INVERTED" *) + input CLK; + (* clkbuf_sink *) + input CLKDIV; + (* clkbuf_sink *) + (* invertible_pin = "IS_CLK_B_INVERTED" *) + input CLK_B; + input D; + (* clkbuf_sink *) + input FIFO_RD_CLK; + input FIFO_RD_EN; + (* invertible_pin = "IS_RST_INVERTED" *) + input RST; +endmodule + +module OSERDESE3 (...); + parameter integer DATA_WIDTH = 8; + parameter [0:0] INIT = 1'b0; + parameter [0:0] IS_CLKDIV_INVERTED = 1'b0; + parameter [0:0] IS_CLK_INVERTED = 1'b0; + parameter [0:0] IS_RST_INVERTED = 1'b0; + parameter ODDR_MODE = "FALSE"; + parameter OSERDES_D_BYPASS = "FALSE"; + parameter OSERDES_T_BYPASS = "FALSE"; + parameter SIM_DEVICE = "ULTRASCALE"; + parameter real SIM_VERSION = 2.0; + output OQ; + output T_OUT; + (* clkbuf_sink *) + (* invertible_pin = "IS_CLK_INVERTED" *) + input CLK; + (* clkbuf_sink *) + (* invertible_pin = "IS_CLKDIV_INVERTED" *) + input CLKDIV; + input [7:0] D; + (* invertible_pin = "IS_RST_INVERTED" *) + input RST; + input T; +endmodule + +(* keep *) +module BITSLICE_CONTROL (...); + parameter CTRL_CLK = "EXTERNAL"; + parameter DIV_MODE = "DIV2"; + parameter EN_CLK_TO_EXT_NORTH = "DISABLE"; + parameter EN_CLK_TO_EXT_SOUTH = "DISABLE"; + parameter EN_DYN_ODLY_MODE = "FALSE"; + parameter EN_OTHER_NCLK = "FALSE"; + parameter EN_OTHER_PCLK = "FALSE"; + parameter IDLY_VT_TRACK = "TRUE"; + parameter INV_RXCLK = "FALSE"; + parameter ODLY_VT_TRACK = "TRUE"; + parameter QDLY_VT_TRACK = "TRUE"; + parameter [5:0] READ_IDLE_COUNT = 6'h00; + parameter REFCLK_SRC = "PLLCLK"; + parameter integer ROUNDING_FACTOR = 16; + parameter RXGATE_EXTEND = "FALSE"; + parameter RX_CLK_PHASE_N = "SHIFT_0"; + parameter RX_CLK_PHASE_P = "SHIFT_0"; + parameter RX_GATING = "DISABLE"; + parameter SELF_CALIBRATE = "ENABLE"; + parameter SERIAL_MODE = "FALSE"; + parameter SIM_DEVICE = "ULTRASCALE"; + parameter SIM_SPEEDUP = "FAST"; + parameter real SIM_VERSION = 2.0; + parameter TX_GATING = "DISABLE"; + output CLK_TO_EXT_NORTH; + output CLK_TO_EXT_SOUTH; + output DLY_RDY; + output [6:0] DYN_DCI; + output NCLK_NIBBLE_OUT; + output PCLK_NIBBLE_OUT; + output [15:0] RIU_RD_DATA; + output RIU_VALID; + output [39:0] RX_BIT_CTRL_OUT0; + output [39:0] RX_BIT_CTRL_OUT1; + output [39:0] RX_BIT_CTRL_OUT2; + output [39:0] RX_BIT_CTRL_OUT3; + output [39:0] RX_BIT_CTRL_OUT4; + output [39:0] RX_BIT_CTRL_OUT5; + output [39:0] RX_BIT_CTRL_OUT6; + output [39:0] TX_BIT_CTRL_OUT0; + output [39:0] TX_BIT_CTRL_OUT1; + output [39:0] TX_BIT_CTRL_OUT2; + output [39:0] TX_BIT_CTRL_OUT3; + output [39:0] TX_BIT_CTRL_OUT4; + output [39:0] TX_BIT_CTRL_OUT5; + output [39:0] TX_BIT_CTRL_OUT6; + output [39:0] TX_BIT_CTRL_OUT_TRI; + output VTC_RDY; + input CLK_FROM_EXT; + input EN_VTC; + input NCLK_NIBBLE_IN; + input PCLK_NIBBLE_IN; + input [3:0] PHY_RDCS0; + input [3:0] PHY_RDCS1; + input [3:0] PHY_RDEN; + input [3:0] PHY_WRCS0; + input [3:0] PHY_WRCS1; + input PLL_CLK; + input REFCLK; + input [5:0] RIU_ADDR; + input RIU_CLK; + input RIU_NIBBLE_SEL; + input [15:0] RIU_WR_DATA; + input RIU_WR_EN; + input RST; + input [39:0] RX_BIT_CTRL_IN0; + input [39:0] RX_BIT_CTRL_IN1; + input [39:0] RX_BIT_CTRL_IN2; + input [39:0] RX_BIT_CTRL_IN3; + input [39:0] RX_BIT_CTRL_IN4; + input [39:0] RX_BIT_CTRL_IN5; + input [39:0] RX_BIT_CTRL_IN6; + input [3:0] TBYTE_IN; + input [39:0] TX_BIT_CTRL_IN0; + input [39:0] TX_BIT_CTRL_IN1; + input [39:0] TX_BIT_CTRL_IN2; + input [39:0] TX_BIT_CTRL_IN3; + input [39:0] TX_BIT_CTRL_IN4; + input [39:0] TX_BIT_CTRL_IN5; + input [39:0] TX_BIT_CTRL_IN6; + input [39:0] TX_BIT_CTRL_IN_TRI; +endmodule + +(* keep *) +module RIU_OR (...); + parameter SIM_DEVICE = "ULTRASCALE"; + parameter real SIM_VERSION = 2.0; + output [15:0] RIU_RD_DATA; + output RIU_RD_VALID; + input [15:0] RIU_RD_DATA_LOW; + input [15:0] RIU_RD_DATA_UPP; + input RIU_RD_VALID_LOW; + input RIU_RD_VALID_UPP; +endmodule + +module RX_BITSLICE (...); + parameter CASCADE = "TRUE"; + parameter DATA_TYPE = "NONE"; + parameter integer DATA_WIDTH = 8; + parameter DELAY_FORMAT = "TIME"; + parameter DELAY_TYPE = "FIXED"; + parameter integer DELAY_VALUE = 0; + parameter integer DELAY_VALUE_EXT = 0; + parameter FIFO_SYNC_MODE = "FALSE"; + parameter [0:0] IS_CLK_EXT_INVERTED = 1'b0; + parameter [0:0] IS_CLK_INVERTED = 1'b0; + parameter [0:0] IS_RST_DLY_EXT_INVERTED = 1'b0; + parameter [0:0] IS_RST_DLY_INVERTED = 1'b0; + parameter [0:0] IS_RST_INVERTED = 1'b0; + parameter real REFCLK_FREQUENCY = 300.0; + parameter SIM_DEVICE = "ULTRASCALE"; + parameter real SIM_VERSION = 2.0; + parameter UPDATE_MODE = "ASYNC"; + parameter UPDATE_MODE_EXT = "ASYNC"; + output [8:0] CNTVALUEOUT; + output [8:0] CNTVALUEOUT_EXT; + output FIFO_EMPTY; + output FIFO_WRCLK_OUT; + output [7:0] Q; + output [39:0] RX_BIT_CTRL_OUT; + output [39:0] TX_BIT_CTRL_OUT; + input CE; + input CE_EXT; + (* invertible_pin = "IS_CLK_INVERTED" *) + input CLK; + (* invertible_pin = "IS_CLK_EXT_INVERTED" *) + input CLK_EXT; + input [8:0] CNTVALUEIN; + input [8:0] CNTVALUEIN_EXT; + input DATAIN; + input EN_VTC; + input EN_VTC_EXT; + input FIFO_RD_CLK; + input FIFO_RD_EN; + input INC; + input INC_EXT; + input LOAD; + input LOAD_EXT; + (* invertible_pin = "IS_RST_INVERTED" *) + input RST; + (* invertible_pin = "IS_RST_DLY_INVERTED" *) + input RST_DLY; + (* invertible_pin = "IS_RST_DLY_EXT_INVERTED" *) + input RST_DLY_EXT; + input [39:0] RX_BIT_CTRL_IN; + input [39:0] TX_BIT_CTRL_IN; +endmodule + +module RXTX_BITSLICE (...); + parameter FIFO_SYNC_MODE = "FALSE"; + parameter [0:0] INIT = 1'b1; + parameter [0:0] IS_RX_CLK_INVERTED = 1'b0; + parameter [0:0] IS_RX_RST_DLY_INVERTED = 1'b0; + parameter [0:0] IS_RX_RST_INVERTED = 1'b0; + parameter [0:0] IS_TX_CLK_INVERTED = 1'b0; + parameter [0:0] IS_TX_RST_DLY_INVERTED = 1'b0; + parameter [0:0] IS_TX_RST_INVERTED = 1'b0; + parameter LOOPBACK = "FALSE"; + parameter NATIVE_ODELAY_BYPASS = "FALSE"; + parameter ENABLE_PRE_EMPHASIS = "FALSE"; + parameter RX_DATA_TYPE = "NONE"; + parameter integer RX_DATA_WIDTH = 8; + parameter RX_DELAY_FORMAT = "TIME"; + parameter RX_DELAY_TYPE = "FIXED"; + parameter integer RX_DELAY_VALUE = 0; + parameter real RX_REFCLK_FREQUENCY = 300.0; + parameter RX_UPDATE_MODE = "ASYNC"; + parameter SIM_DEVICE = "ULTRASCALE"; + parameter real SIM_VERSION = 2.0; + parameter TBYTE_CTL = "TBYTE_IN"; + parameter integer TX_DATA_WIDTH = 8; + parameter TX_DELAY_FORMAT = "TIME"; + parameter TX_DELAY_TYPE = "FIXED"; + parameter integer TX_DELAY_VALUE = 0; + parameter TX_OUTPUT_PHASE_90 = "FALSE"; + parameter real TX_REFCLK_FREQUENCY = 300.0; + parameter TX_UPDATE_MODE = "ASYNC"; + output FIFO_EMPTY; + output FIFO_WRCLK_OUT; + output O; + output [7:0] Q; + output [39:0] RX_BIT_CTRL_OUT; + output [8:0] RX_CNTVALUEOUT; + output [39:0] TX_BIT_CTRL_OUT; + output [8:0] TX_CNTVALUEOUT; + output T_OUT; + input [7:0] D; + input DATAIN; + input FIFO_RD_CLK; + input FIFO_RD_EN; + input [39:0] RX_BIT_CTRL_IN; + input RX_CE; + (* invertible_pin = "IS_RX_CLK_INVERTED" *) + input RX_CLK; + input [8:0] RX_CNTVALUEIN; + input RX_EN_VTC; + input RX_INC; + input RX_LOAD; + (* invertible_pin = "IS_RX_RST_INVERTED" *) + input RX_RST; + (* invertible_pin = "IS_RX_RST_DLY_INVERTED" *) + input RX_RST_DLY; + input T; + input TBYTE_IN; + input [39:0] TX_BIT_CTRL_IN; + input TX_CE; + (* invertible_pin = "IS_TX_CLK_INVERTED" *) + input TX_CLK; + input [8:0] TX_CNTVALUEIN; + input TX_EN_VTC; + input TX_INC; + input TX_LOAD; + (* invertible_pin = "IS_TX_RST_INVERTED" *) + input TX_RST; + (* invertible_pin = "IS_TX_RST_DLY_INVERTED" *) + input TX_RST_DLY; +endmodule + +module TX_BITSLICE (...); + parameter integer DATA_WIDTH = 8; + parameter DELAY_FORMAT = "TIME"; + parameter DELAY_TYPE = "FIXED"; + parameter integer DELAY_VALUE = 0; + parameter ENABLE_PRE_EMPHASIS = "FALSE"; + parameter [0:0] INIT = 1'b1; + parameter [0:0] IS_CLK_INVERTED = 1'b0; + parameter [0:0] IS_RST_DLY_INVERTED = 1'b0; + parameter [0:0] IS_RST_INVERTED = 1'b0; + parameter NATIVE_ODELAY_BYPASS = "FALSE"; + parameter OUTPUT_PHASE_90 = "FALSE"; + parameter real REFCLK_FREQUENCY = 300.0; + parameter SIM_DEVICE = "ULTRASCALE"; + parameter real SIM_VERSION = 2.0; + parameter TBYTE_CTL = "TBYTE_IN"; + parameter UPDATE_MODE = "ASYNC"; + output [8:0] CNTVALUEOUT; + output O; + output [39:0] RX_BIT_CTRL_OUT; + output [39:0] TX_BIT_CTRL_OUT; + output T_OUT; + input CE; + (* invertible_pin = "IS_CLK_INVERTED" *) + input CLK; + input [8:0] CNTVALUEIN; + input [7:0] D; + input EN_VTC; + input INC; + input LOAD; + (* invertible_pin = "IS_RST_INVERTED" *) + input RST; + (* invertible_pin = "IS_RST_DLY_INVERTED" *) + input RST_DLY; + input [39:0] RX_BIT_CTRL_IN; + input T; + input TBYTE_IN; + input [39:0] TX_BIT_CTRL_IN; +endmodule + +module TX_BITSLICE_TRI (...); + parameter integer DATA_WIDTH = 8; + parameter DELAY_FORMAT = "TIME"; + parameter DELAY_TYPE = "FIXED"; + parameter integer DELAY_VALUE = 0; + parameter [0:0] INIT = 1'b1; + parameter [0:0] IS_CLK_INVERTED = 1'b0; + parameter [0:0] IS_RST_DLY_INVERTED = 1'b0; + parameter [0:0] IS_RST_INVERTED = 1'b0; + parameter NATIVE_ODELAY_BYPASS = "FALSE"; + parameter OUTPUT_PHASE_90 = "FALSE"; + parameter real REFCLK_FREQUENCY = 300.0; + parameter SIM_DEVICE = "ULTRASCALE"; + parameter real SIM_VERSION = 2.0; + parameter UPDATE_MODE = "ASYNC"; + output [39:0] BIT_CTRL_OUT; + output [8:0] CNTVALUEOUT; + output TRI_OUT; + input [39:0] BIT_CTRL_IN; + input CE; + (* invertible_pin = "IS_CLK_INVERTED" *) + input CLK; + input [8:0] CNTVALUEIN; + input EN_VTC; + input INC; + input LOAD; + (* invertible_pin = "IS_RST_INVERTED" *) + input RST; + (* invertible_pin = "IS_RST_DLY_INVERTED" *) + input RST_DLY; +endmodule + +module IODELAY2 (...); + parameter COUNTER_WRAPAROUND = "WRAPAROUND"; + parameter DATA_RATE = "SDR"; + parameter DELAY_SRC = "IO"; + parameter integer IDELAY2_VALUE = 0; + parameter IDELAY_MODE = "NORMAL"; + parameter IDELAY_TYPE = "DEFAULT"; + parameter integer IDELAY_VALUE = 0; + parameter integer ODELAY_VALUE = 0; + parameter SERDES_MODE = "NONE"; + parameter integer SIM_TAPDELAY_VALUE = 75; + output BUSY; + output DATAOUT2; + output DATAOUT; + output DOUT; + output TOUT; + input CAL; + input CE; + (* clkbuf_sink *) + input CLK; + input IDATAIN; + input INC; + (* clkbuf_sink *) + input IOCLK0; + (* clkbuf_sink *) + input IOCLK1; + input ODATAIN; + input RST; + input T; +endmodule + +module IODRP2 (...); + parameter DATA_RATE = "SDR"; + parameter integer SIM_TAPDELAY_VALUE = 75; + output DATAOUT2; + output DATAOUT; + output DOUT; + output SDO; + output TOUT; + input ADD; + input BKST; + (* clkbuf_sink *) + input CLK; + input CS; + input IDATAIN; + (* clkbuf_sink *) + input IOCLK0; + (* clkbuf_sink *) + input IOCLK1; + input ODATAIN; + input SDI; + input T; +endmodule + +module IODRP2_MCB (...); + parameter DATA_RATE = "SDR"; + parameter integer IDELAY_VALUE = 0; + parameter integer MCB_ADDRESS = 0; + parameter integer ODELAY_VALUE = 0; + parameter SERDES_MODE = "NONE"; + parameter integer SIM_TAPDELAY_VALUE = 75; + output AUXSDO; + output DATAOUT2; + output DATAOUT; + output DOUT; + output DQSOUTN; + output DQSOUTP; + output SDO; + output TOUT; + input ADD; + input AUXSDOIN; + input BKST; + (* clkbuf_sink *) + input CLK; + input CS; + input IDATAIN; + (* clkbuf_sink *) + input IOCLK0; + (* clkbuf_sink *) + input IOCLK1; + input MEMUPDATE; + input ODATAIN; + input SDI; + input T; + input [4:0] AUXADDR; +endmodule + +module ISERDES2 (...); + parameter BITSLIP_ENABLE = "FALSE"; + parameter DATA_RATE = "SDR"; + parameter integer DATA_WIDTH = 1; + parameter INTERFACE_TYPE = "NETWORKING"; + parameter SERDES_MODE = "NONE"; + output CFB0; + output CFB1; + output DFB; + output FABRICOUT; + output INCDEC; + output Q1; + output Q2; + output Q3; + output Q4; + output SHIFTOUT; + output VALID; + input BITSLIP; + input CE0; + (* clkbuf_sink *) + input CLK0; + (* clkbuf_sink *) + input CLK1; + (* clkbuf_sink *) + input CLKDIV; + input D; + input IOCE; + input RST; + input SHIFTIN; +endmodule + +module OSERDES2 (...); + parameter BYPASS_GCLK_FF = "FALSE"; + parameter DATA_RATE_OQ = "DDR"; + parameter DATA_RATE_OT = "DDR"; + parameter integer DATA_WIDTH = 2; + parameter OUTPUT_MODE = "SINGLE_ENDED"; + parameter SERDES_MODE = "NONE"; + parameter integer TRAIN_PATTERN = 0; + output OQ; + output SHIFTOUT1; + output SHIFTOUT2; + output SHIFTOUT3; + output SHIFTOUT4; + output TQ; + (* clkbuf_sink *) + input CLK0; + (* clkbuf_sink *) + input CLK1; + (* clkbuf_sink *) + input CLKDIV; + input D1; + input D2; + input D3; + input D4; + input IOCE; + input OCE; + input RST; + input SHIFTIN1; + input SHIFTIN2; + input SHIFTIN3; + input SHIFTIN4; + input T1; + input T2; + input T3; + input T4; + input TCE; + input TRAIN; +endmodule + +module IBUF_DLY_ADJ (...); + parameter DELAY_OFFSET = "OFF"; + parameter IOSTANDARD = "DEFAULT"; + output O; + (* iopad_external_pin *) + input I; + input [2:0] S; +endmodule + +module IBUF_IBUFDISABLE (...); + parameter IBUF_LOW_PWR = "TRUE"; + parameter IOSTANDARD = "DEFAULT"; + parameter SIM_DEVICE = "7SERIES"; + parameter USE_IBUFDISABLE = "TRUE"; + output O; + (* iopad_external_pin *) + input I; + input IBUFDISABLE; +endmodule + +module IBUF_INTERMDISABLE (...); + parameter IBUF_LOW_PWR = "TRUE"; + parameter IOSTANDARD = "DEFAULT"; + parameter SIM_DEVICE = "7SERIES"; + parameter USE_IBUFDISABLE = "TRUE"; + output O; + (* iopad_external_pin *) + input I; + input IBUFDISABLE; + input INTERMDISABLE; +endmodule + +module IBUF_ANALOG (...); + output O; + (* iopad_external_pin *) + input I; +endmodule + +module IBUFE3 (...); + parameter IBUF_LOW_PWR = "TRUE"; + parameter IOSTANDARD = "DEFAULT"; + parameter USE_IBUFDISABLE = "FALSE"; + parameter integer SIM_INPUT_BUFFER_OFFSET = 0; + output O; + (* iopad_external_pin *) + input I; + input IBUFDISABLE; + input [3:0] OSC; + input OSC_EN; + input VREF; +endmodule + +module IBUFDS (...); + parameter CAPACITANCE = "DONT_CARE"; + parameter DIFF_TERM = "FALSE"; + parameter DQS_BIAS = "FALSE"; + parameter IBUF_DELAY_VALUE = "0"; + parameter IBUF_LOW_PWR = "TRUE"; + parameter IFD_DELAY_VALUE = "AUTO"; + parameter IOSTANDARD = "DEFAULT"; + output O; + (* iopad_external_pin *) + input I; + (* iopad_external_pin *) + input IB; +endmodule + +module IBUFDS_DLY_ADJ (...); + parameter DELAY_OFFSET = "OFF"; + parameter DIFF_TERM = "FALSE"; + parameter IOSTANDARD = "DEFAULT"; + output O; + (* iopad_external_pin *) + input I; + (* iopad_external_pin *) + input IB; + input [2:0] S; +endmodule + +module IBUFDS_IBUFDISABLE (...); + parameter DIFF_TERM = "FALSE"; + parameter DQS_BIAS = "FALSE"; + parameter IBUF_LOW_PWR = "TRUE"; + parameter IOSTANDARD = "DEFAULT"; + parameter SIM_DEVICE = "7SERIES"; + parameter USE_IBUFDISABLE = "TRUE"; + output O; + (* iopad_external_pin *) + input I; + (* iopad_external_pin *) + input IB; + input IBUFDISABLE; +endmodule + +module IBUFDS_INTERMDISABLE (...); + parameter DIFF_TERM = "FALSE"; + parameter DQS_BIAS = "FALSE"; + parameter IBUF_LOW_PWR = "TRUE"; + parameter IOSTANDARD = "DEFAULT"; + parameter SIM_DEVICE = "7SERIES"; + parameter USE_IBUFDISABLE = "TRUE"; + output O; + (* iopad_external_pin *) + input I; + (* iopad_external_pin *) + input IB; + input IBUFDISABLE; + input INTERMDISABLE; +endmodule + +module IBUFDS_DIFF_OUT (...); + parameter DIFF_TERM = "FALSE"; + parameter DQS_BIAS = "FALSE"; + parameter IBUF_LOW_PWR = "TRUE"; + parameter IOSTANDARD = "DEFAULT"; + output O; + output OB; + (* iopad_external_pin *) + input I; + (* iopad_external_pin *) + input IB; +endmodule + +module IBUFDS_DIFF_OUT_IBUFDISABLE (...); + parameter DIFF_TERM = "FALSE"; + parameter DQS_BIAS = "FALSE"; + parameter IBUF_LOW_PWR = "TRUE"; + parameter IOSTANDARD = "DEFAULT"; + parameter SIM_DEVICE = "7SERIES"; + parameter USE_IBUFDISABLE = "TRUE"; + output O; + output OB; + (* iopad_external_pin *) + input I; + (* iopad_external_pin *) + input IB; + input IBUFDISABLE; +endmodule + +module IBUFDS_DIFF_OUT_INTERMDISABLE (...); + parameter DIFF_TERM = "FALSE"; + parameter DQS_BIAS = "FALSE"; + parameter IBUF_LOW_PWR = "TRUE"; + parameter IOSTANDARD = "DEFAULT"; + parameter SIM_DEVICE = "7SERIES"; + parameter USE_IBUFDISABLE = "TRUE"; + output O; + output OB; + (* iopad_external_pin *) + input I; + (* iopad_external_pin *) + input IB; + input IBUFDISABLE; + input INTERMDISABLE; +endmodule + +module IBUFDSE3 (...); + parameter DIFF_TERM = "FALSE"; + parameter DQS_BIAS = "FALSE"; + parameter IBUF_LOW_PWR = "TRUE"; + parameter IOSTANDARD = "DEFAULT"; + parameter USE_IBUFDISABLE = "FALSE"; + parameter integer SIM_INPUT_BUFFER_OFFSET = 0; + output O; + (* iopad_external_pin *) + input I; + (* iopad_external_pin *) + input IB; + input IBUFDISABLE; + input [3:0] OSC; + input [1:0] OSC_EN; +endmodule + +module IBUFDS_DPHY (...); + parameter DIFF_TERM = "TRUE"; + parameter IOSTANDARD = "DEFAULT"; + output HSRX_O; + output LPRX_O_N; + output LPRX_O_P; + input HSRX_DISABLE; + (* iopad_external_pin *) + input I; + (* iopad_external_pin *) + input IB; + input LPRX_DISABLE; +endmodule + +module IBUFGDS (...); + parameter CAPACITANCE = "DONT_CARE"; + parameter DIFF_TERM = "FALSE"; + parameter IBUF_DELAY_VALUE = "0"; + parameter IBUF_LOW_PWR = "TRUE"; + parameter IOSTANDARD = "DEFAULT"; + output O; + (* iopad_external_pin *) + input I; + (* iopad_external_pin *) + input IB; +endmodule + +module IBUFGDS_DIFF_OUT (...); + parameter DIFF_TERM = "FALSE"; + parameter DQS_BIAS = "FALSE"; + parameter IBUF_LOW_PWR = "TRUE"; + parameter IOSTANDARD = "DEFAULT"; + output O; + output OB; + (* iopad_external_pin *) + input I; + (* iopad_external_pin *) + input IB; +endmodule + +module IOBUF_DCIEN (...); + parameter integer DRIVE = 12; + parameter IBUF_LOW_PWR = "TRUE"; + parameter IOSTANDARD = "DEFAULT"; + parameter SIM_DEVICE = "7SERIES"; + parameter SLEW = "SLOW"; + parameter USE_IBUFDISABLE = "TRUE"; + output O; + (* iopad_external_pin *) + inout IO; + input DCITERMDISABLE; + input I; + input IBUFDISABLE; + input T; +endmodule + +module IOBUF_INTERMDISABLE (...); + parameter integer DRIVE = 12; + parameter IBUF_LOW_PWR = "TRUE"; + parameter IOSTANDARD = "DEFAULT"; + parameter SIM_DEVICE = "7SERIES"; + parameter SLEW = "SLOW"; + parameter USE_IBUFDISABLE = "TRUE"; + output O; + (* iopad_external_pin *) + inout IO; + input I; + input IBUFDISABLE; + input INTERMDISABLE; + input T; +endmodule + +module IOBUFE3 (...); + parameter integer DRIVE = 12; + parameter IBUF_LOW_PWR = "TRUE"; + parameter IOSTANDARD = "DEFAULT"; + parameter USE_IBUFDISABLE = "FALSE"; + parameter integer SIM_INPUT_BUFFER_OFFSET = 0; + output O; + (* iopad_external_pin *) + inout IO; + input DCITERMDISABLE; + input I; + input IBUFDISABLE; + input [3:0] OSC; + input OSC_EN; + input T; + input VREF; +endmodule + +module IOBUFDS (...); + parameter DIFF_TERM = "FALSE"; + parameter DQS_BIAS = "FALSE"; + parameter IBUF_LOW_PWR = "TRUE"; + parameter IOSTANDARD = "DEFAULT"; + parameter SLEW = "SLOW"; + output O; + (* iopad_external_pin *) + inout IO; + (* iopad_external_pin *) + inout IOB; + input I; + input T; +endmodule + +module IOBUFDS_DCIEN (...); + parameter DIFF_TERM = "FALSE"; + parameter DQS_BIAS = "FALSE"; + parameter IBUF_LOW_PWR = "TRUE"; + parameter IOSTANDARD = "DEFAULT"; + parameter SIM_DEVICE = "7SERIES"; + parameter SLEW = "SLOW"; + parameter USE_IBUFDISABLE = "TRUE"; + output O; + (* iopad_external_pin *) + inout IO; + (* iopad_external_pin *) + inout IOB; + input DCITERMDISABLE; + input I; + input IBUFDISABLE; + input T; +endmodule + +module IOBUFDS_INTERMDISABLE (...); + parameter DIFF_TERM = "FALSE"; + parameter DQS_BIAS = "FALSE"; + parameter IBUF_LOW_PWR = "TRUE"; + parameter IOSTANDARD = "DEFAULT"; + parameter SIM_DEVICE = "7SERIES"; + parameter SLEW = "SLOW"; + parameter USE_IBUFDISABLE = "TRUE"; + output O; + (* iopad_external_pin *) + inout IO; + (* iopad_external_pin *) + inout IOB; + input I; + input IBUFDISABLE; + input INTERMDISABLE; + input T; +endmodule + +module IOBUFDS_DIFF_OUT (...); + parameter DIFF_TERM = "FALSE"; + parameter DQS_BIAS = "FALSE"; + parameter IBUF_LOW_PWR = "TRUE"; + parameter IOSTANDARD = "DEFAULT"; + output O; + output OB; + (* iopad_external_pin *) + inout IO; + (* iopad_external_pin *) + inout IOB; + input I; + input TM; + input TS; +endmodule + +module IOBUFDS_DIFF_OUT_DCIEN (...); + parameter DIFF_TERM = "FALSE"; + parameter DQS_BIAS = "FALSE"; + parameter IBUF_LOW_PWR = "TRUE"; + parameter IOSTANDARD = "DEFAULT"; + parameter SIM_DEVICE = "7SERIES"; + parameter USE_IBUFDISABLE = "TRUE"; + output O; + output OB; + (* iopad_external_pin *) + inout IO; + (* iopad_external_pin *) + inout IOB; + input DCITERMDISABLE; + input I; + input IBUFDISABLE; + input TM; + input TS; +endmodule + +module IOBUFDS_DIFF_OUT_INTERMDISABLE (...); + parameter DIFF_TERM = "FALSE"; + parameter DQS_BIAS = "FALSE"; + parameter IBUF_LOW_PWR = "TRUE"; + parameter IOSTANDARD = "DEFAULT"; + parameter SIM_DEVICE = "7SERIES"; + parameter USE_IBUFDISABLE = "TRUE"; + output O; + output OB; + (* iopad_external_pin *) + inout IO; + (* iopad_external_pin *) + inout IOB; + input I; + input IBUFDISABLE; + input INTERMDISABLE; + input TM; + input TS; +endmodule + +module IOBUFDSE3 (...); + parameter DIFF_TERM = "FALSE"; + parameter DQS_BIAS = "FALSE"; + parameter IBUF_LOW_PWR = "TRUE"; + parameter IOSTANDARD = "DEFAULT"; + parameter integer SIM_INPUT_BUFFER_OFFSET = 0; + parameter USE_IBUFDISABLE = "FALSE"; + output O; + (* iopad_external_pin *) + inout IO; + (* iopad_external_pin *) + inout IOB; + input DCITERMDISABLE; + input I; + input IBUFDISABLE; + input [3:0] OSC; + input [1:0] OSC_EN; + input T; +endmodule + +module OBUFDS (...); + parameter CAPACITANCE = "DONT_CARE"; + parameter IOSTANDARD = "DEFAULT"; + parameter SLEW = "SLOW"; + (* iopad_external_pin *) + output O; + (* iopad_external_pin *) + output OB; + input I; +endmodule + +module OBUFDS_DPHY (...); + parameter IOSTANDARD = "DEFAULT"; + (* iopad_external_pin *) + output O; + (* iopad_external_pin *) + output OB; + input HSTX_I; + input HSTX_T; + input LPTX_I_N; + input LPTX_I_P; + input LPTX_T; +endmodule + +module OBUFTDS (...); + parameter CAPACITANCE = "DONT_CARE"; + parameter IOSTANDARD = "DEFAULT"; + parameter SLEW = "SLOW"; + (* iopad_external_pin *) + output O; + (* iopad_external_pin *) + output OB; + input I; + input T; +endmodule + +module KEEPER (...); + inout O; +endmodule + +module PULLDOWN (...); + output O; +endmodule + +module PULLUP (...); + output O; +endmodule + +(* keep *) +module DCIRESET (...); + output LOCKED; + input RST; +endmodule + +(* keep *) +module HPIO_VREF (...); + parameter VREF_CNTR = "OFF"; + output VREF; + input [6:0] FABRIC_VREF_TUNE; +endmodule + +module BUFGCE (...); + parameter CE_TYPE = "SYNC"; + parameter [0:0] IS_CE_INVERTED = 1'b0; + parameter [0:0] IS_I_INVERTED = 1'b0; + parameter SIM_DEVICE = "ULTRASCALE"; + parameter STARTUP_SYNC = "FALSE"; + (* clkbuf_driver *) + output O; + (* invertible_pin = "IS_CE_INVERTED" *) + input CE; + (* invertible_pin = "IS_I_INVERTED" *) + input I; +endmodule + +module BUFGCE_1 (...); + (* clkbuf_driver *) + output O; + input CE; + input I; +endmodule + +module BUFGMUX (...); + parameter CLK_SEL_TYPE = "SYNC"; + (* clkbuf_driver *) + output O; + input I0; + input I1; + input S; +endmodule + +module BUFGMUX_1 (...); + parameter CLK_SEL_TYPE = "SYNC"; + (* clkbuf_driver *) + output O; + input I0; + input I1; + input S; +endmodule + +module BUFGMUX_CTRL (...); + (* clkbuf_driver *) + output O; + input I0; + input I1; + input S; +endmodule + +module BUFGMUX_VIRTEX4 (...); + (* clkbuf_driver *) + output O; + input I0; + input I1; + input S; +endmodule + +module BUFG_GT (...); + parameter SIM_DEVICE = "ULTRASCALE"; + parameter STARTUP_SYNC = "FALSE"; + (* clkbuf_driver *) + output O; + input CE; + input CEMASK; + input CLR; + input CLRMASK; + input [2:0] DIV; + input I; +endmodule + +module BUFG_GT_SYNC (...); + output CESYNC; + output CLRSYNC; + input CE; + input CLK; + input CLR; +endmodule + +module BUFG_PS (...); + parameter SIM_DEVICE = "ULTRASCALE_PLUS"; + parameter STARTUP_SYNC = "FALSE"; + (* clkbuf_driver *) + output O; + input I; +endmodule + +module BUFGCE_DIV (...); + parameter integer BUFGCE_DIVIDE = 1; + parameter CE_TYPE = "SYNC"; + parameter HARDSYNC_CLR = "FALSE"; + parameter [0:0] IS_CE_INVERTED = 1'b0; + parameter [0:0] IS_CLR_INVERTED = 1'b0; + parameter [0:0] IS_I_INVERTED = 1'b0; + parameter SIM_DEVICE = "ULTRASCALE"; + parameter STARTUP_SYNC = "FALSE"; + (* clkbuf_driver *) + output O; + (* invertible_pin = "IS_CE_INVERTED" *) + input CE; + (* invertible_pin = "IS_CLR_INVERTED" *) + input CLR; + (* invertible_pin = "IS_I_INVERTED" *) + input I; +endmodule + +module BUFH (...); + (* clkbuf_driver *) + output O; + input I; +endmodule + +module BUFIO2 (...); + parameter DIVIDE_BYPASS = "TRUE"; + parameter integer DIVIDE = 1; + parameter I_INVERT = "FALSE"; + parameter USE_DOUBLER = "FALSE"; + (* clkbuf_driver *) + output DIVCLK; + (* clkbuf_driver *) + output IOCLK; + output SERDESSTROBE; + input I; +endmodule + +module BUFIO2_2CLK (...); + parameter integer DIVIDE = 2; + (* clkbuf_driver *) + output DIVCLK; + (* clkbuf_driver *) + output IOCLK; + output SERDESSTROBE; + input I; + input IB; +endmodule + +module BUFIO2FB (...); + parameter DIVIDE_BYPASS = "TRUE"; + (* clkbuf_driver *) + output O; + input I; +endmodule + +module BUFPLL (...); + parameter integer DIVIDE = 1; + parameter ENABLE_SYNC = "TRUE"; + (* clkbuf_driver *) + output IOCLK; + output LOCK; + output SERDESSTROBE; + input GCLK; + input LOCKED; + input PLLIN; +endmodule + +module BUFPLL_MCB (...); + parameter integer DIVIDE = 2; + parameter LOCK_SRC = "LOCK_TO_0"; + (* clkbuf_driver *) + output IOCLK0; + (* clkbuf_driver *) + output IOCLK1; + output LOCK; + output SERDESSTROBE0; + output SERDESSTROBE1; + input GCLK; + input LOCKED; + input PLLIN0; + input PLLIN1; +endmodule + +module BUFIO (...); + (* clkbuf_driver *) + output O; + input I; +endmodule + +module BUFIODQS (...); + parameter DQSMASK_ENABLE = "FALSE"; + (* clkbuf_driver *) + output O; + input DQSMASK; + input I; +endmodule + +module BUFR (...); + parameter BUFR_DIVIDE = "BYPASS"; + parameter SIM_DEVICE = "7SERIES"; + (* clkbuf_driver *) + output O; + input CE; + input CLR; + input I; +endmodule + +module BUFMR (...); + (* clkbuf_driver *) + output O; + input I; +endmodule + +module BUFMRCE (...); + parameter CE_TYPE = "SYNC"; + parameter integer INIT_OUT = 0; + parameter [0:0] IS_CE_INVERTED = 1'b0; + (* clkbuf_driver *) + output O; + (* invertible_pin = "IS_CE_INVERTED" *) + input CE; + input I; +endmodule + +module DCM (...); + parameter real CLKDV_DIVIDE = 2.0; + parameter integer CLKFX_DIVIDE = 1; + parameter integer CLKFX_MULTIPLY = 4; + parameter CLKIN_DIVIDE_BY_2 = "FALSE"; + parameter real CLKIN_PERIOD = 10.0; + parameter CLKOUT_PHASE_SHIFT = "NONE"; + parameter CLK_FEEDBACK = "1X"; + parameter DESKEW_ADJUST = "SYSTEM_SYNCHRONOUS"; + parameter DFS_FREQUENCY_MODE = "LOW"; + parameter DLL_FREQUENCY_MODE = "LOW"; + parameter DSS_MODE = "NONE"; + parameter DUTY_CYCLE_CORRECTION = "TRUE"; + parameter [15:0] FACTORY_JF = 16'hC080; + parameter integer PHASE_SHIFT = 0; + parameter SIM_MODE = "SAFE"; + parameter STARTUP_WAIT = "FALSE"; + input CLKFB; + input CLKIN; + input DSSEN; + input PSCLK; + input PSEN; + input PSINCDEC; + input RST; + output CLK0; + output CLK180; + output CLK270; + output CLK2X; + output CLK2X180; + output CLK90; + output CLKDV; + output CLKFX; + output CLKFX180; + output LOCKED; + output PSDONE; + output [7:0] STATUS; +endmodule + +module DCM_SP (...); + parameter real CLKDV_DIVIDE = 2.0; + parameter integer CLKFX_DIVIDE = 1; + parameter integer CLKFX_MULTIPLY = 4; + parameter CLKIN_DIVIDE_BY_2 = "FALSE"; + parameter real CLKIN_PERIOD = 10.0; + parameter CLKOUT_PHASE_SHIFT = "NONE"; + parameter CLK_FEEDBACK = "1X"; + parameter DESKEW_ADJUST = "SYSTEM_SYNCHRONOUS"; + parameter DFS_FREQUENCY_MODE = "LOW"; + parameter DLL_FREQUENCY_MODE = "LOW"; + parameter DSS_MODE = "NONE"; + parameter DUTY_CYCLE_CORRECTION = "TRUE"; + parameter FACTORY_JF = 16'hC080; + parameter integer PHASE_SHIFT = 0; + parameter STARTUP_WAIT = "FALSE"; + input CLKFB; + input CLKIN; + input DSSEN; + input PSCLK; + input PSEN; + input PSINCDEC; + input RST; + output CLK0; + output CLK180; + output CLK270; + output CLK2X; + output CLK2X180; + output CLK90; + output CLKDV; + output CLKFX; + output CLKFX180; + output LOCKED; + output PSDONE; + output [7:0] STATUS; +endmodule + +module DCM_CLKGEN (...); + parameter SPREAD_SPECTRUM = "NONE"; + parameter STARTUP_WAIT = "FALSE"; + parameter integer CLKFXDV_DIVIDE = 2; + parameter integer CLKFX_DIVIDE = 1; + parameter integer CLKFX_MULTIPLY = 4; + parameter real CLKFX_MD_MAX = 0.0; + parameter real CLKIN_PERIOD = 0.0; + output CLKFX180; + output CLKFX; + output CLKFXDV; + output LOCKED; + output PROGDONE; + output [2:1] STATUS; + input CLKIN; + input FREEZEDCM; + input PROGCLK; + input PROGDATA; + input PROGEN; + input RST; +endmodule + +module DCM_ADV (...); + parameter real CLKDV_DIVIDE = 2.0; + parameter integer CLKFX_DIVIDE = 1; + parameter integer CLKFX_MULTIPLY = 4; + parameter CLKIN_DIVIDE_BY_2 = "FALSE"; + parameter real CLKIN_PERIOD = 10.0; + parameter CLKOUT_PHASE_SHIFT = "NONE"; + parameter CLK_FEEDBACK = "1X"; + parameter DCM_AUTOCALIBRATION = "TRUE"; + parameter DCM_PERFORMANCE_MODE = "MAX_SPEED"; + parameter DESKEW_ADJUST = "SYSTEM_SYNCHRONOUS"; + parameter DFS_FREQUENCY_MODE = "LOW"; + parameter DLL_FREQUENCY_MODE = "LOW"; + parameter DUTY_CYCLE_CORRECTION = "TRUE"; + parameter FACTORY_JF = 16'hF0F0; + parameter integer PHASE_SHIFT = 0; + parameter SIM_DEVICE ="VIRTEX4"; + parameter STARTUP_WAIT = "FALSE"; + output CLK0; + output CLK180; + output CLK270; + output CLK2X180; + output CLK2X; + output CLK90; + output CLKDV; + output CLKFX180; + output CLKFX; + output DRDY; + output LOCKED; + output PSDONE; + output [15:0] DO; + input CLKFB; + input CLKIN; + input DCLK; + input DEN; + input DWE; + input PSCLK; + input PSEN; + input PSINCDEC; + input RST; + input [15:0] DI; + input [6:0] DADDR; +endmodule + +module DCM_BASE (...); + parameter real CLKDV_DIVIDE = 2.0; + parameter integer CLKFX_DIVIDE = 1; + parameter integer CLKFX_MULTIPLY = 4; + parameter CLKIN_DIVIDE_BY_2 = "FALSE"; + parameter real CLKIN_PERIOD = 10.0; + parameter CLKOUT_PHASE_SHIFT = "NONE"; + parameter CLK_FEEDBACK = "1X"; + parameter DCM_AUTOCALIBRATION = "TRUE"; + parameter DCM_PERFORMANCE_MODE = "MAX_SPEED"; + parameter DESKEW_ADJUST = "SYSTEM_SYNCHRONOUS"; + parameter DFS_FREQUENCY_MODE = "LOW"; + parameter DLL_FREQUENCY_MODE = "LOW"; + parameter DUTY_CYCLE_CORRECTION = "TRUE"; + parameter [15:0] FACTORY_JF = 16'hF0F0; + parameter integer PHASE_SHIFT = 0; + parameter STARTUP_WAIT = "FALSE"; + output CLK0; + output CLK180; + output CLK270; + output CLK2X180; + output CLK2X; + output CLK90; + output CLKDV; + output CLKFX180; + output CLKFX; + output LOCKED; + input CLKFB; + input CLKIN; + input RST; +endmodule + +module DCM_PS (...); + parameter real CLKDV_DIVIDE = 2.0; + parameter integer CLKFX_DIVIDE = 1; + parameter integer CLKFX_MULTIPLY = 4; + parameter CLKIN_DIVIDE_BY_2 = "FALSE"; + parameter real CLKIN_PERIOD = 10.0; + parameter CLKOUT_PHASE_SHIFT = "NONE"; + parameter CLK_FEEDBACK = "1X"; + parameter DCM_AUTOCALIBRATION = "TRUE"; + parameter DCM_PERFORMANCE_MODE = "MAX_SPEED"; + parameter DESKEW_ADJUST = "SYSTEM_SYNCHRONOUS"; + parameter DFS_FREQUENCY_MODE = "LOW"; + parameter DLL_FREQUENCY_MODE = "LOW"; + parameter DUTY_CYCLE_CORRECTION = "TRUE"; + parameter [15:0] FACTORY_JF = 16'hF0F0; + parameter integer PHASE_SHIFT = 0; + parameter STARTUP_WAIT = "FALSE"; + output CLK0; + output CLK180; + output CLK270; + output CLK2X180; + output CLK2X; + output CLK90; + output CLKDV; + output CLKFX180; + output CLKFX; + output LOCKED; + output PSDONE; + output [15:0] DO; + input CLKFB; + input CLKIN; + input PSCLK; + input PSEN; + input PSINCDEC; + input RST; +endmodule + +module PMCD (...); + parameter EN_REL = "FALSE"; + parameter RST_DEASSERT_CLK = "CLKA"; + output CLKA1; + output CLKA1D2; + output CLKA1D4; + output CLKA1D8; + output CLKB1; + output CLKC1; + output CLKD1; + input CLKA; + input CLKB; + input CLKC; + input CLKD; + input REL; + input RST; +endmodule + +module PLL_ADV (...); + parameter BANDWIDTH = "OPTIMIZED"; + parameter CLK_FEEDBACK = "CLKFBOUT"; + parameter CLKFBOUT_DESKEW_ADJUST = "NONE"; + parameter CLKOUT0_DESKEW_ADJUST = "NONE"; + parameter CLKOUT1_DESKEW_ADJUST = "NONE"; + parameter CLKOUT2_DESKEW_ADJUST = "NONE"; + parameter CLKOUT3_DESKEW_ADJUST = "NONE"; + parameter CLKOUT4_DESKEW_ADJUST = "NONE"; + parameter CLKOUT5_DESKEW_ADJUST = "NONE"; + parameter integer CLKFBOUT_MULT = 1; + parameter real CLKFBOUT_PHASE = 0.0; + parameter real CLKIN1_PERIOD = 0.000; + parameter real CLKIN2_PERIOD = 0.000; + parameter integer CLKOUT0_DIVIDE = 1; + parameter real CLKOUT0_DUTY_CYCLE = 0.5; + parameter real CLKOUT0_PHASE = 0.0; + parameter integer CLKOUT1_DIVIDE = 1; + parameter real CLKOUT1_DUTY_CYCLE = 0.5; + parameter real CLKOUT1_PHASE = 0.0; + parameter integer CLKOUT2_DIVIDE = 1; + parameter real CLKOUT2_DUTY_CYCLE = 0.5; + parameter real CLKOUT2_PHASE = 0.0; + parameter integer CLKOUT3_DIVIDE = 1; + parameter real CLKOUT3_DUTY_CYCLE = 0.5; + parameter real CLKOUT3_PHASE = 0.0; + parameter integer CLKOUT4_DIVIDE = 1; + parameter real CLKOUT4_DUTY_CYCLE = 0.5; + parameter real CLKOUT4_PHASE = 0.0; + parameter integer CLKOUT5_DIVIDE = 1; + parameter real CLKOUT5_DUTY_CYCLE = 0.5; + parameter real CLKOUT5_PHASE = 0.0; + parameter COMPENSATION = "SYSTEM_SYNCHRONOUS"; + parameter integer DIVCLK_DIVIDE = 1; + parameter EN_REL = "FALSE"; + parameter PLL_PMCD_MODE = "FALSE"; + parameter real REF_JITTER = 0.100; + parameter RESET_ON_LOSS_OF_LOCK = "FALSE"; + parameter RST_DEASSERT_CLK = "CLKIN1"; + parameter SIM_DEVICE = "VIRTEX5"; + parameter real VCOCLK_FREQ_MAX = 1440.0; + parameter real VCOCLK_FREQ_MIN = 400.0; + parameter real CLKIN_FREQ_MAX = 710.0; + parameter real CLKIN_FREQ_MIN = 19.0; + parameter real CLKPFD_FREQ_MAX = 550.0; + parameter real CLKPFD_FREQ_MIN = 19.0; + output CLKFBDCM; + output CLKFBOUT; + output CLKOUT0; + output CLKOUT1; + output CLKOUT2; + output CLKOUT3; + output CLKOUT4; + output CLKOUT5; + output CLKOUTDCM0; + output CLKOUTDCM1; + output CLKOUTDCM2; + output CLKOUTDCM3; + output CLKOUTDCM4; + output CLKOUTDCM5; + output DRDY; + output LOCKED; + output [15:0] DO; + input CLKFBIN; + input CLKIN1; + input CLKIN2; + input CLKINSEL; + input DCLK; + input DEN; + input DWE; + input REL; + input RST; + input [15:0] DI; + input [4:0] DADDR; +endmodule + +module PLL_BASE (...); + parameter BANDWIDTH = "OPTIMIZED"; + parameter integer CLKFBOUT_MULT = 1; + parameter real CLKFBOUT_PHASE = 0.0; + parameter real CLKIN_PERIOD = 0.000; + parameter integer CLKOUT0_DIVIDE = 1; + parameter real CLKOUT0_DUTY_CYCLE = 0.5; + parameter real CLKOUT0_PHASE = 0.0; + parameter integer CLKOUT1_DIVIDE = 1; + parameter real CLKOUT1_DUTY_CYCLE = 0.5; + parameter real CLKOUT1_PHASE = 0.0; + parameter integer CLKOUT2_DIVIDE = 1; + parameter real CLKOUT2_DUTY_CYCLE = 0.5; + parameter real CLKOUT2_PHASE = 0.0; + parameter integer CLKOUT3_DIVIDE = 1; + parameter real CLKOUT3_DUTY_CYCLE = 0.5; + parameter real CLKOUT3_PHASE = 0.0; + parameter integer CLKOUT4_DIVIDE = 1; + parameter real CLKOUT4_DUTY_CYCLE = 0.5; + parameter real CLKOUT4_PHASE = 0.0; + parameter integer CLKOUT5_DIVIDE = 1; + parameter real CLKOUT5_DUTY_CYCLE = 0.5; + parameter real CLKOUT5_PHASE = 0.0; + parameter CLK_FEEDBACK = "CLKFBOUT"; + parameter COMPENSATION = "SYSTEM_SYNCHRONOUS"; + parameter integer DIVCLK_DIVIDE = 1; + parameter real REF_JITTER = 0.100; + parameter RESET_ON_LOSS_OF_LOCK = "FALSE"; + output CLKFBOUT; + output CLKOUT0; + output CLKOUT1; + output CLKOUT2; + output CLKOUT3; + output CLKOUT4; + output CLKOUT5; + output LOCKED; + input CLKFBIN; + input CLKIN; + input RST; +endmodule + +module MMCM_ADV (...); + parameter BANDWIDTH = "OPTIMIZED"; + parameter CLKFBOUT_USE_FINE_PS = "FALSE"; + parameter CLKOUT0_USE_FINE_PS = "FALSE"; + parameter CLKOUT1_USE_FINE_PS = "FALSE"; + parameter CLKOUT2_USE_FINE_PS = "FALSE"; + parameter CLKOUT3_USE_FINE_PS = "FALSE"; + parameter CLKOUT4_CASCADE = "FALSE"; + parameter CLKOUT4_USE_FINE_PS = "FALSE"; + parameter CLKOUT5_USE_FINE_PS = "FALSE"; + parameter CLKOUT6_USE_FINE_PS = "FALSE"; + parameter CLOCK_HOLD = "FALSE"; + parameter COMPENSATION = "ZHOLD"; + parameter STARTUP_WAIT = "FALSE"; + parameter integer CLKOUT1_DIVIDE = 1; + parameter integer CLKOUT2_DIVIDE = 1; + parameter integer CLKOUT3_DIVIDE = 1; + parameter integer CLKOUT4_DIVIDE = 1; + parameter integer CLKOUT5_DIVIDE = 1; + parameter integer CLKOUT6_DIVIDE = 1; + parameter integer DIVCLK_DIVIDE = 1; + parameter real CLKFBOUT_MULT_F = 5.000; + parameter real CLKFBOUT_PHASE = 0.000; + parameter real CLKIN1_PERIOD = 0.000; + parameter real CLKIN2_PERIOD = 0.000; + parameter real CLKOUT0_DIVIDE_F = 1.000; + parameter real CLKOUT0_DUTY_CYCLE = 0.500; + parameter real CLKOUT0_PHASE = 0.000; + parameter real CLKOUT1_DUTY_CYCLE = 0.500; + parameter real CLKOUT1_PHASE = 0.000; + parameter real CLKOUT2_DUTY_CYCLE = 0.500; + parameter real CLKOUT2_PHASE = 0.000; + parameter real CLKOUT3_DUTY_CYCLE = 0.500; + parameter real CLKOUT3_PHASE = 0.000; + parameter real CLKOUT4_DUTY_CYCLE = 0.500; + parameter real CLKOUT4_PHASE = 0.000; + parameter real CLKOUT5_DUTY_CYCLE = 0.500; + parameter real CLKOUT5_PHASE = 0.000; + parameter real CLKOUT6_DUTY_CYCLE = 0.500; + parameter real CLKOUT6_PHASE = 0.000; + parameter real REF_JITTER1 = 0.010; + parameter real REF_JITTER2 = 0.010; + parameter real VCOCLK_FREQ_MAX = 1600.0; + parameter real VCOCLK_FREQ_MIN = 600.0; + parameter real CLKIN_FREQ_MAX = 800.0; + parameter real CLKIN_FREQ_MIN = 10.0; + parameter real CLKPFD_FREQ_MAX = 550.0; + parameter real CLKPFD_FREQ_MIN = 10.0; + output CLKFBOUT; + output CLKFBOUTB; + output CLKFBSTOPPED; + output CLKINSTOPPED; + output CLKOUT0; + output CLKOUT0B; + output CLKOUT1; + output CLKOUT1B; + output CLKOUT2; + output CLKOUT2B; + output CLKOUT3; + output CLKOUT3B; + output CLKOUT4; + output CLKOUT5; + output CLKOUT6; + output DRDY; + output LOCKED; + output PSDONE; + output [15:0] DO; + input CLKFBIN; + input CLKIN1; + input CLKIN2; + input CLKINSEL; + input DCLK; + input DEN; + input DWE; + input PSCLK; + input PSEN; + input PSINCDEC; + input PWRDWN; + input RST; + input [15:0] DI; + input [6:0] DADDR; +endmodule + +module MMCM_BASE (...); + parameter BANDWIDTH = "OPTIMIZED"; + parameter real CLKFBOUT_MULT_F = 5.000; + parameter real CLKFBOUT_PHASE = 0.000; + parameter real CLKIN1_PERIOD = 0.000; + parameter real CLKOUT0_DIVIDE_F = 1.000; + parameter real CLKOUT0_DUTY_CYCLE = 0.500; + parameter real CLKOUT0_PHASE = 0.000; + parameter integer CLKOUT1_DIVIDE = 1; + parameter real CLKOUT1_DUTY_CYCLE = 0.500; + parameter real CLKOUT1_PHASE = 0.000; + parameter integer CLKOUT2_DIVIDE = 1; + parameter real CLKOUT2_DUTY_CYCLE = 0.500; + parameter real CLKOUT2_PHASE = 0.000; + parameter integer CLKOUT3_DIVIDE = 1; + parameter real CLKOUT3_DUTY_CYCLE = 0.500; + parameter real CLKOUT3_PHASE = 0.000; + parameter CLKOUT4_CASCADE = "FALSE"; + parameter integer CLKOUT4_DIVIDE = 1; + parameter real CLKOUT4_DUTY_CYCLE = 0.500; + parameter real CLKOUT4_PHASE = 0.000; + parameter integer CLKOUT5_DIVIDE = 1; + parameter real CLKOUT5_DUTY_CYCLE = 0.500; + parameter real CLKOUT5_PHASE = 0.000; + parameter integer CLKOUT6_DIVIDE = 1; + parameter real CLKOUT6_DUTY_CYCLE = 0.500; + parameter real CLKOUT6_PHASE = 0.000; + parameter CLOCK_HOLD = "FALSE"; + parameter integer DIVCLK_DIVIDE = 1; + parameter real REF_JITTER1 = 0.010; + parameter STARTUP_WAIT = "FALSE"; + output CLKFBOUT; + output CLKFBOUTB; + output CLKOUT0; + output CLKOUT0B; + output CLKOUT1; + output CLKOUT1B; + output CLKOUT2; + output CLKOUT2B; + output CLKOUT3; + output CLKOUT3B; + output CLKOUT4; + output CLKOUT5; + output CLKOUT6; + output LOCKED; + input CLKFBIN; + input CLKIN1; + input PWRDWN; + input RST; +endmodule + +module MMCME2_ADV (...); + parameter real CLKIN_FREQ_MAX = 1066.000; + parameter real CLKIN_FREQ_MIN = 10.000; + parameter real CLKPFD_FREQ_MAX = 550.000; + parameter real CLKPFD_FREQ_MIN = 10.000; + parameter real VCOCLK_FREQ_MAX = 1600.000; + parameter real VCOCLK_FREQ_MIN = 600.000; + parameter BANDWIDTH = "OPTIMIZED"; + parameter real CLKFBOUT_MULT_F = 5.000; + parameter real CLKFBOUT_PHASE = 0.000; + parameter CLKFBOUT_USE_FINE_PS = "FALSE"; + parameter real CLKIN1_PERIOD = 0.000; + parameter real CLKIN2_PERIOD = 0.000; + parameter real CLKOUT0_DIVIDE_F = 1.000; + parameter real CLKOUT0_DUTY_CYCLE = 0.500; + parameter real CLKOUT0_PHASE = 0.000; + parameter CLKOUT0_USE_FINE_PS = "FALSE"; + parameter integer CLKOUT1_DIVIDE = 1; + parameter real CLKOUT1_DUTY_CYCLE = 0.500; + parameter real CLKOUT1_PHASE = 0.000; + parameter CLKOUT1_USE_FINE_PS = "FALSE"; + parameter integer CLKOUT2_DIVIDE = 1; + parameter real CLKOUT2_DUTY_CYCLE = 0.500; + parameter real CLKOUT2_PHASE = 0.000; + parameter CLKOUT2_USE_FINE_PS = "FALSE"; + parameter integer CLKOUT3_DIVIDE = 1; + parameter real CLKOUT3_DUTY_CYCLE = 0.500; + parameter real CLKOUT3_PHASE = 0.000; + parameter CLKOUT3_USE_FINE_PS = "FALSE"; + parameter CLKOUT4_CASCADE = "FALSE"; + parameter integer CLKOUT4_DIVIDE = 1; + parameter real CLKOUT4_DUTY_CYCLE = 0.500; + parameter real CLKOUT4_PHASE = 0.000; + parameter CLKOUT4_USE_FINE_PS = "FALSE"; + parameter integer CLKOUT5_DIVIDE = 1; + parameter real CLKOUT5_DUTY_CYCLE = 0.500; + parameter real CLKOUT5_PHASE = 0.000; + parameter CLKOUT5_USE_FINE_PS = "FALSE"; + parameter integer CLKOUT6_DIVIDE = 1; + parameter real CLKOUT6_DUTY_CYCLE = 0.500; + parameter real CLKOUT6_PHASE = 0.000; + parameter CLKOUT6_USE_FINE_PS = "FALSE"; + parameter COMPENSATION = "ZHOLD"; + parameter integer DIVCLK_DIVIDE = 1; + parameter [0:0] IS_CLKINSEL_INVERTED = 1'b0; + parameter [0:0] IS_PSEN_INVERTED = 1'b0; + parameter [0:0] IS_PSINCDEC_INVERTED = 1'b0; + parameter [0:0] IS_PWRDWN_INVERTED = 1'b0; + parameter [0:0] IS_RST_INVERTED = 1'b0; + parameter real REF_JITTER1 = 0.010; + parameter real REF_JITTER2 = 0.010; + parameter SS_EN = "FALSE"; + parameter SS_MODE = "CENTER_HIGH"; + parameter integer SS_MOD_PERIOD = 10000; + parameter STARTUP_WAIT = "FALSE"; + output CLKFBOUT; + output CLKFBOUTB; + output CLKFBSTOPPED; + output CLKINSTOPPED; + output CLKOUT0; + output CLKOUT0B; + output CLKOUT1; + output CLKOUT1B; + output CLKOUT2; + output CLKOUT2B; + output CLKOUT3; + output CLKOUT3B; + output CLKOUT4; + output CLKOUT5; + output CLKOUT6; + output [15:0] DO; + output DRDY; + output LOCKED; + output PSDONE; + input CLKFBIN; + input CLKIN1; + input CLKIN2; + (* invertible_pin = "IS_CLKINSEL_INVERTED" *) + input CLKINSEL; + input [6:0] DADDR; + input DCLK; + input DEN; + input [15:0] DI; + input DWE; + input PSCLK; + (* invertible_pin = "IS_PSEN_INVERTED" *) + input PSEN; + (* invertible_pin = "IS_PSINCDEC_INVERTED" *) + input PSINCDEC; + (* invertible_pin = "IS_PWRDWN_INVERTED" *) + input PWRDWN; + (* invertible_pin = "IS_RST_INVERTED" *) + input RST; +endmodule + +module MMCME2_BASE (...); + parameter BANDWIDTH = "OPTIMIZED"; + parameter real CLKFBOUT_MULT_F = 5.000; + parameter real CLKFBOUT_PHASE = 0.000; + parameter real CLKIN1_PERIOD = 0.000; + parameter real CLKOUT0_DIVIDE_F = 1.000; + parameter real CLKOUT0_DUTY_CYCLE = 0.500; + parameter real CLKOUT0_PHASE = 0.000; + parameter integer CLKOUT1_DIVIDE = 1; + parameter real CLKOUT1_DUTY_CYCLE = 0.500; + parameter real CLKOUT1_PHASE = 0.000; + parameter integer CLKOUT2_DIVIDE = 1; + parameter real CLKOUT2_DUTY_CYCLE = 0.500; + parameter real CLKOUT2_PHASE = 0.000; + parameter integer CLKOUT3_DIVIDE = 1; + parameter real CLKOUT3_DUTY_CYCLE = 0.500; + parameter real CLKOUT3_PHASE = 0.000; + parameter CLKOUT4_CASCADE = "FALSE"; + parameter integer CLKOUT4_DIVIDE = 1; + parameter real CLKOUT4_DUTY_CYCLE = 0.500; + parameter real CLKOUT4_PHASE = 0.000; + parameter integer CLKOUT5_DIVIDE = 1; + parameter real CLKOUT5_DUTY_CYCLE = 0.500; + parameter real CLKOUT5_PHASE = 0.000; + parameter integer CLKOUT6_DIVIDE = 1; + parameter real CLKOUT6_DUTY_CYCLE = 0.500; + parameter real CLKOUT6_PHASE = 0.000; + parameter integer DIVCLK_DIVIDE = 1; + parameter real REF_JITTER1 = 0.010; + parameter STARTUP_WAIT = "FALSE"; + output CLKFBOUT; + output CLKFBOUTB; + output CLKOUT0; + output CLKOUT0B; + output CLKOUT1; + output CLKOUT1B; + output CLKOUT2; + output CLKOUT2B; + output CLKOUT3; + output CLKOUT3B; + output CLKOUT4; + output CLKOUT5; + output CLKOUT6; + output LOCKED; + input CLKFBIN; + input CLKIN1; + input PWRDWN; + input RST; +endmodule + +module PLLE2_ADV (...); + parameter BANDWIDTH = "OPTIMIZED"; + parameter COMPENSATION = "ZHOLD"; + parameter STARTUP_WAIT = "FALSE"; + parameter integer CLKOUT0_DIVIDE = 1; + parameter integer CLKOUT1_DIVIDE = 1; + parameter integer CLKOUT2_DIVIDE = 1; + parameter integer CLKOUT3_DIVIDE = 1; + parameter integer CLKOUT4_DIVIDE = 1; + parameter integer CLKOUT5_DIVIDE = 1; + parameter integer DIVCLK_DIVIDE = 1; + parameter integer CLKFBOUT_MULT = 5; + parameter real CLKFBOUT_PHASE = 0.000; + parameter real CLKIN1_PERIOD = 0.000; + parameter real CLKIN2_PERIOD = 0.000; + parameter real CLKOUT0_DUTY_CYCLE = 0.500; + parameter real CLKOUT0_PHASE = 0.000; + parameter real CLKOUT1_DUTY_CYCLE = 0.500; + parameter real CLKOUT1_PHASE = 0.000; + parameter real CLKOUT2_DUTY_CYCLE = 0.500; + parameter real CLKOUT2_PHASE = 0.000; + parameter real CLKOUT3_DUTY_CYCLE = 0.500; + parameter real CLKOUT3_PHASE = 0.000; + parameter real CLKOUT4_DUTY_CYCLE = 0.500; + parameter real CLKOUT4_PHASE = 0.000; + parameter real CLKOUT5_DUTY_CYCLE = 0.500; + parameter real CLKOUT5_PHASE = 0.000; + parameter [0:0] IS_CLKINSEL_INVERTED = 1'b0; + parameter [0:0] IS_PWRDWN_INVERTED = 1'b0; + parameter [0:0] IS_RST_INVERTED = 1'b0; + parameter real REF_JITTER1 = 0.010; + parameter real REF_JITTER2 = 0.010; + parameter real VCOCLK_FREQ_MAX = 2133.000; + parameter real VCOCLK_FREQ_MIN = 800.000; + parameter real CLKIN_FREQ_MAX = 1066.000; + parameter real CLKIN_FREQ_MIN = 19.000; + parameter real CLKPFD_FREQ_MAX = 550.0; + parameter real CLKPFD_FREQ_MIN = 19.0; + output CLKFBOUT; + output CLKOUT0; + output CLKOUT1; + output CLKOUT2; + output CLKOUT3; + output CLKOUT4; + output CLKOUT5; + output DRDY; + output LOCKED; + output [15:0] DO; + input CLKFBIN; + input CLKIN1; + input CLKIN2; + (* invertible_pin = "IS_CLKINSEL_INVERTED" *) + input CLKINSEL; + input DCLK; + input DEN; + input DWE; + (* invertible_pin = "IS_PWRDWN_INVERTED" *) + input PWRDWN; + (* invertible_pin = "IS_RST_INVERTED" *) + input RST; + input [15:0] DI; + input [6:0] DADDR; +endmodule + +module PLLE2_BASE (...); + parameter BANDWIDTH = "OPTIMIZED"; + parameter integer CLKFBOUT_MULT = 5; + parameter real CLKFBOUT_PHASE = 0.000; + parameter real CLKIN1_PERIOD = 0.000; + parameter integer CLKOUT0_DIVIDE = 1; + parameter real CLKOUT0_DUTY_CYCLE = 0.500; + parameter real CLKOUT0_PHASE = 0.000; + parameter integer CLKOUT1_DIVIDE = 1; + parameter real CLKOUT1_DUTY_CYCLE = 0.500; + parameter real CLKOUT1_PHASE = 0.000; + parameter integer CLKOUT2_DIVIDE = 1; + parameter real CLKOUT2_DUTY_CYCLE = 0.500; + parameter real CLKOUT2_PHASE = 0.000; + parameter integer CLKOUT3_DIVIDE = 1; + parameter real CLKOUT3_DUTY_CYCLE = 0.500; + parameter real CLKOUT3_PHASE = 0.000; + parameter integer CLKOUT4_DIVIDE = 1; + parameter real CLKOUT4_DUTY_CYCLE = 0.500; + parameter real CLKOUT4_PHASE = 0.000; + parameter integer CLKOUT5_DIVIDE = 1; + parameter real CLKOUT5_DUTY_CYCLE = 0.500; + parameter real CLKOUT5_PHASE = 0.000; + parameter integer DIVCLK_DIVIDE = 1; + parameter real REF_JITTER1 = 0.010; + parameter STARTUP_WAIT = "FALSE"; + output CLKFBOUT; + output CLKOUT0; + output CLKOUT1; + output CLKOUT2; + output CLKOUT3; + output CLKOUT4; + output CLKOUT5; + output LOCKED; + input CLKFBIN; + input CLKIN1; + input PWRDWN; + input RST; +endmodule + +module MMCME3_ADV (...); + parameter real CLKIN_FREQ_MAX = 1066.000; + parameter real CLKIN_FREQ_MIN = 10.000; + parameter real CLKPFD_FREQ_MAX = 550.000; + parameter real CLKPFD_FREQ_MIN = 10.000; + parameter real VCOCLK_FREQ_MAX = 1600.000; + parameter real VCOCLK_FREQ_MIN = 600.000; + parameter BANDWIDTH = "OPTIMIZED"; + parameter real CLKFBOUT_MULT_F = 5.000; + parameter real CLKFBOUT_PHASE = 0.000; + parameter CLKFBOUT_USE_FINE_PS = "FALSE"; + parameter real CLKIN1_PERIOD = 0.000; + parameter real CLKIN2_PERIOD = 0.000; + parameter real CLKOUT0_DIVIDE_F = 1.000; + parameter real CLKOUT0_DUTY_CYCLE = 0.500; + parameter real CLKOUT0_PHASE = 0.000; + parameter CLKOUT0_USE_FINE_PS = "FALSE"; + parameter integer CLKOUT1_DIVIDE = 1; + parameter real CLKOUT1_DUTY_CYCLE = 0.500; + parameter real CLKOUT1_PHASE = 0.000; + parameter CLKOUT1_USE_FINE_PS = "FALSE"; + parameter integer CLKOUT2_DIVIDE = 1; + parameter real CLKOUT2_DUTY_CYCLE = 0.500; + parameter real CLKOUT2_PHASE = 0.000; + parameter CLKOUT2_USE_FINE_PS = "FALSE"; + parameter integer CLKOUT3_DIVIDE = 1; + parameter real CLKOUT3_DUTY_CYCLE = 0.500; + parameter real CLKOUT3_PHASE = 0.000; + parameter CLKOUT3_USE_FINE_PS = "FALSE"; + parameter CLKOUT4_CASCADE = "FALSE"; + parameter integer CLKOUT4_DIVIDE = 1; + parameter real CLKOUT4_DUTY_CYCLE = 0.500; + parameter real CLKOUT4_PHASE = 0.000; + parameter CLKOUT4_USE_FINE_PS = "FALSE"; + parameter integer CLKOUT5_DIVIDE = 1; + parameter real CLKOUT5_DUTY_CYCLE = 0.500; + parameter real CLKOUT5_PHASE = 0.000; + parameter CLKOUT5_USE_FINE_PS = "FALSE"; + parameter integer CLKOUT6_DIVIDE = 1; + parameter real CLKOUT6_DUTY_CYCLE = 0.500; + parameter real CLKOUT6_PHASE = 0.000; + parameter CLKOUT6_USE_FINE_PS = "FALSE"; + parameter COMPENSATION = "AUTO"; + parameter integer DIVCLK_DIVIDE = 1; + parameter [0:0] IS_CLKFBIN_INVERTED = 1'b0; + parameter [0:0] IS_CLKIN1_INVERTED = 1'b0; + parameter [0:0] IS_CLKIN2_INVERTED = 1'b0; + parameter [0:0] IS_CLKINSEL_INVERTED = 1'b0; + parameter [0:0] IS_PSEN_INVERTED = 1'b0; + parameter [0:0] IS_PSINCDEC_INVERTED = 1'b0; + parameter [0:0] IS_PWRDWN_INVERTED = 1'b0; + parameter [0:0] IS_RST_INVERTED = 1'b0; + parameter real REF_JITTER1 = 0.010; + parameter real REF_JITTER2 = 0.010; + parameter SS_EN = "FALSE"; + parameter SS_MODE = "CENTER_HIGH"; + parameter integer SS_MOD_PERIOD = 10000; + parameter STARTUP_WAIT = "FALSE"; + output CDDCDONE; + output CLKFBOUT; + output CLKFBOUTB; + output CLKFBSTOPPED; + output CLKINSTOPPED; + output CLKOUT0; + output CLKOUT0B; + output CLKOUT1; + output CLKOUT1B; + output CLKOUT2; + output CLKOUT2B; + output CLKOUT3; + output CLKOUT3B; + output CLKOUT4; + output CLKOUT5; + output CLKOUT6; + output [15:0] DO; + output DRDY; + output LOCKED; + output PSDONE; + input CDDCREQ; + (* invertible_pin = "IS_CLKFBIN_INVERTED" *) + input CLKFBIN; + (* invertible_pin = "IS_CLKIN1_INVERTED" *) + input CLKIN1; + (* invertible_pin = "IS_CLKIN2_INVERTED" *) + input CLKIN2; + (* invertible_pin = "IS_CLKINSEL_INVERTED" *) + input CLKINSEL; + input [6:0] DADDR; + input DCLK; + input DEN; + input [15:0] DI; + input DWE; + input PSCLK; + (* invertible_pin = "IS_PSEN_INVERTED" *) + input PSEN; + (* invertible_pin = "IS_PSINCDEC_INVERTED" *) + input PSINCDEC; + (* invertible_pin = "IS_PWRDWN_INVERTED" *) + input PWRDWN; + (* invertible_pin = "IS_RST_INVERTED" *) + input RST; +endmodule + +module MMCME3_BASE (...); + parameter BANDWIDTH = "OPTIMIZED"; + parameter real CLKFBOUT_MULT_F = 5.000; + parameter real CLKFBOUT_PHASE = 0.000; + parameter real CLKIN1_PERIOD = 0.000; + parameter real CLKOUT0_DIVIDE_F = 1.000; + parameter real CLKOUT0_DUTY_CYCLE = 0.500; + parameter real CLKOUT0_PHASE = 0.000; + parameter integer CLKOUT1_DIVIDE = 1; + parameter real CLKOUT1_DUTY_CYCLE = 0.500; + parameter real CLKOUT1_PHASE = 0.000; + parameter integer CLKOUT2_DIVIDE = 1; + parameter real CLKOUT2_DUTY_CYCLE = 0.500; + parameter real CLKOUT2_PHASE = 0.000; + parameter integer CLKOUT3_DIVIDE = 1; + parameter real CLKOUT3_DUTY_CYCLE = 0.500; + parameter real CLKOUT3_PHASE = 0.000; + parameter CLKOUT4_CASCADE = "FALSE"; + parameter integer CLKOUT4_DIVIDE = 1; + parameter real CLKOUT4_DUTY_CYCLE = 0.500; + parameter real CLKOUT4_PHASE = 0.000; + parameter integer CLKOUT5_DIVIDE = 1; + parameter real CLKOUT5_DUTY_CYCLE = 0.500; + parameter real CLKOUT5_PHASE = 0.000; + parameter integer CLKOUT6_DIVIDE = 1; + parameter real CLKOUT6_DUTY_CYCLE = 0.500; + parameter real CLKOUT6_PHASE = 0.000; + parameter integer DIVCLK_DIVIDE = 1; + parameter [0:0] IS_CLKFBIN_INVERTED = 1'b0; + parameter [0:0] IS_CLKIN1_INVERTED = 1'b0; + parameter [0:0] IS_PWRDWN_INVERTED = 1'b0; + parameter [0:0] IS_RST_INVERTED = 1'b0; + parameter real REF_JITTER1 = 0.010; + parameter STARTUP_WAIT = "FALSE"; + output CLKFBOUT; + output CLKFBOUTB; + output CLKOUT0; + output CLKOUT0B; + output CLKOUT1; + output CLKOUT1B; + output CLKOUT2; + output CLKOUT2B; + output CLKOUT3; + output CLKOUT3B; + output CLKOUT4; + output CLKOUT5; + output CLKOUT6; + output LOCKED; + (* invertible_pin = "IS_CLKFBIN_INVERTED" *) + input CLKFBIN; + (* invertible_pin = "IS_CLKIN1_INVERTED" *) + input CLKIN1; + (* invertible_pin = "IS_PWRDWN_INVERTED" *) + input PWRDWN; + (* invertible_pin = "IS_RST_INVERTED" *) + input RST; +endmodule + +module PLLE3_ADV (...); + parameter real CLKIN_FREQ_MAX = 1066.000; + parameter real CLKIN_FREQ_MIN = 70.000; + parameter real CLKPFD_FREQ_MAX = 667.500; + parameter real CLKPFD_FREQ_MIN = 70.000; + parameter real VCOCLK_FREQ_MAX = 1335.000; + parameter real VCOCLK_FREQ_MIN = 600.000; + parameter integer CLKFBOUT_MULT = 5; + parameter real CLKFBOUT_PHASE = 0.000; + parameter real CLKIN_PERIOD = 0.000; + parameter integer CLKOUT0_DIVIDE = 1; + parameter real CLKOUT0_DUTY_CYCLE = 0.500; + parameter real CLKOUT0_PHASE = 0.000; + parameter integer CLKOUT1_DIVIDE = 1; + parameter real CLKOUT1_DUTY_CYCLE = 0.500; + parameter real CLKOUT1_PHASE = 0.000; + parameter CLKOUTPHY_MODE = "VCO_2X"; + parameter COMPENSATION = "AUTO"; + parameter integer DIVCLK_DIVIDE = 1; + parameter [0:0] IS_CLKFBIN_INVERTED = 1'b0; + parameter [0:0] IS_CLKIN_INVERTED = 1'b0; + parameter [0:0] IS_PWRDWN_INVERTED = 1'b0; + parameter [0:0] IS_RST_INVERTED = 1'b0; + parameter real REF_JITTER = 0.010; + parameter STARTUP_WAIT = "FALSE"; + output CLKFBOUT; + output CLKOUT0; + output CLKOUT0B; + output CLKOUT1; + output CLKOUT1B; + output CLKOUTPHY; + output [15:0] DO; + output DRDY; + output LOCKED; + (* invertible_pin = "IS_CLKFBIN_INVERTED" *) + input CLKFBIN; + (* invertible_pin = "IS_CLKIN_INVERTED" *) + input CLKIN; + input CLKOUTPHYEN; + input [6:0] DADDR; + input DCLK; + input DEN; + input [15:0] DI; + input DWE; + (* invertible_pin = "IS_PWRDWN_INVERTED" *) + input PWRDWN; + (* invertible_pin = "IS_RST_INVERTED" *) + input RST; +endmodule + +module PLLE3_BASE (...); + parameter integer CLKFBOUT_MULT = 5; + parameter real CLKFBOUT_PHASE = 0.000; + parameter real CLKIN_PERIOD = 0.000; + parameter integer CLKOUT0_DIVIDE = 1; + parameter real CLKOUT0_DUTY_CYCLE = 0.500; + parameter real CLKOUT0_PHASE = 0.000; + parameter integer CLKOUT1_DIVIDE = 1; + parameter real CLKOUT1_DUTY_CYCLE = 0.500; + parameter real CLKOUT1_PHASE = 0.000; + parameter CLKOUTPHY_MODE = "VCO_2X"; + parameter integer DIVCLK_DIVIDE = 1; + parameter [0:0] IS_CLKFBIN_INVERTED = 1'b0; + parameter [0:0] IS_CLKIN_INVERTED = 1'b0; + parameter [0:0] IS_PWRDWN_INVERTED = 1'b0; + parameter [0:0] IS_RST_INVERTED = 1'b0; + parameter real REF_JITTER = 0.010; + parameter STARTUP_WAIT = "FALSE"; + output CLKFBOUT; + output CLKOUT0; + output CLKOUT0B; + output CLKOUT1; + output CLKOUT1B; + output CLKOUTPHY; + output LOCKED; + (* invertible_pin = "IS_CLKFBIN_INVERTED" *) + input CLKFBIN; + (* invertible_pin = "IS_CLKIN_INVERTED" *) + input CLKIN; + input CLKOUTPHYEN; + (* invertible_pin = "IS_PWRDWN_INVERTED" *) + input PWRDWN; + (* invertible_pin = "IS_RST_INVERTED" *) + input RST; +endmodule + +module MMCME4_ADV (...); + parameter real CLKIN_FREQ_MAX = 1066.000; + parameter real CLKIN_FREQ_MIN = 10.000; + parameter real CLKPFD_FREQ_MAX = 550.000; + parameter real CLKPFD_FREQ_MIN = 10.000; + parameter real VCOCLK_FREQ_MAX = 1600.000; + parameter real VCOCLK_FREQ_MIN = 800.000; + parameter BANDWIDTH = "OPTIMIZED"; + parameter real CLKFBOUT_MULT_F = 5.000; + parameter real CLKFBOUT_PHASE = 0.000; + parameter CLKFBOUT_USE_FINE_PS = "FALSE"; + parameter real CLKIN1_PERIOD = 0.000; + parameter real CLKIN2_PERIOD = 0.000; + parameter real CLKOUT0_DIVIDE_F = 1.000; + parameter real CLKOUT0_DUTY_CYCLE = 0.500; + parameter real CLKOUT0_PHASE = 0.000; + parameter CLKOUT0_USE_FINE_PS = "FALSE"; + parameter integer CLKOUT1_DIVIDE = 1; + parameter real CLKOUT1_DUTY_CYCLE = 0.500; + parameter real CLKOUT1_PHASE = 0.000; + parameter CLKOUT1_USE_FINE_PS = "FALSE"; + parameter integer CLKOUT2_DIVIDE = 1; + parameter real CLKOUT2_DUTY_CYCLE = 0.500; + parameter real CLKOUT2_PHASE = 0.000; + parameter CLKOUT2_USE_FINE_PS = "FALSE"; + parameter integer CLKOUT3_DIVIDE = 1; + parameter real CLKOUT3_DUTY_CYCLE = 0.500; + parameter real CLKOUT3_PHASE = 0.000; + parameter CLKOUT3_USE_FINE_PS = "FALSE"; + parameter CLKOUT4_CASCADE = "FALSE"; + parameter integer CLKOUT4_DIVIDE = 1; + parameter real CLKOUT4_DUTY_CYCLE = 0.500; + parameter real CLKOUT4_PHASE = 0.000; + parameter CLKOUT4_USE_FINE_PS = "FALSE"; + parameter integer CLKOUT5_DIVIDE = 1; + parameter real CLKOUT5_DUTY_CYCLE = 0.500; + parameter real CLKOUT5_PHASE = 0.000; + parameter CLKOUT5_USE_FINE_PS = "FALSE"; + parameter integer CLKOUT6_DIVIDE = 1; + parameter real CLKOUT6_DUTY_CYCLE = 0.500; + parameter real CLKOUT6_PHASE = 0.000; + parameter CLKOUT6_USE_FINE_PS = "FALSE"; + parameter COMPENSATION = "AUTO"; + parameter integer DIVCLK_DIVIDE = 1; + parameter [0:0] IS_CLKFBIN_INVERTED = 1'b0; + parameter [0:0] IS_CLKIN1_INVERTED = 1'b0; + parameter [0:0] IS_CLKIN2_INVERTED = 1'b0; + parameter [0:0] IS_CLKINSEL_INVERTED = 1'b0; + parameter [0:0] IS_PSEN_INVERTED = 1'b0; + parameter [0:0] IS_PSINCDEC_INVERTED = 1'b0; + parameter [0:0] IS_PWRDWN_INVERTED = 1'b0; + parameter [0:0] IS_RST_INVERTED = 1'b0; + parameter real REF_JITTER1 = 0.010; + parameter real REF_JITTER2 = 0.010; + parameter SS_EN = "FALSE"; + parameter SS_MODE = "CENTER_HIGH"; + parameter integer SS_MOD_PERIOD = 10000; + parameter STARTUP_WAIT = "FALSE"; + output CDDCDONE; + output CLKFBOUT; + output CLKFBOUTB; + output CLKFBSTOPPED; + output CLKINSTOPPED; + output CLKOUT0; + output CLKOUT0B; + output CLKOUT1; + output CLKOUT1B; + output CLKOUT2; + output CLKOUT2B; + output CLKOUT3; + output CLKOUT3B; + output CLKOUT4; + output CLKOUT5; + output CLKOUT6; + output [15:0] DO; + output DRDY; + output LOCKED; + output PSDONE; + input CDDCREQ; + (* invertible_pin = "IS_CLKFBIN_INVERTED" *) + input CLKFBIN; + (* invertible_pin = "IS_CLKIN1_INVERTED" *) + input CLKIN1; + (* invertible_pin = "IS_CLKIN2_INVERTED" *) + input CLKIN2; + (* invertible_pin = "IS_CLKINSEL_INVERTED" *) + input CLKINSEL; + input [6:0] DADDR; + input DCLK; + input DEN; + input [15:0] DI; + input DWE; + input PSCLK; + (* invertible_pin = "IS_PSEN_INVERTED" *) + input PSEN; + (* invertible_pin = "IS_PSINCDEC_INVERTED" *) + input PSINCDEC; + (* invertible_pin = "IS_PWRDWN_INVERTED" *) + input PWRDWN; + (* invertible_pin = "IS_RST_INVERTED" *) + input RST; +endmodule + +module MMCME4_BASE (...); + parameter BANDWIDTH = "OPTIMIZED"; + parameter real CLKFBOUT_MULT_F = 5.000; + parameter real CLKFBOUT_PHASE = 0.000; + parameter real CLKIN1_PERIOD = 0.000; + parameter real CLKOUT0_DIVIDE_F = 1.000; + parameter real CLKOUT0_DUTY_CYCLE = 0.500; + parameter real CLKOUT0_PHASE = 0.000; + parameter integer CLKOUT1_DIVIDE = 1; + parameter real CLKOUT1_DUTY_CYCLE = 0.500; + parameter real CLKOUT1_PHASE = 0.000; + parameter integer CLKOUT2_DIVIDE = 1; + parameter real CLKOUT2_DUTY_CYCLE = 0.500; + parameter real CLKOUT2_PHASE = 0.000; + parameter integer CLKOUT3_DIVIDE = 1; + parameter real CLKOUT3_DUTY_CYCLE = 0.500; + parameter real CLKOUT3_PHASE = 0.000; + parameter CLKOUT4_CASCADE = "FALSE"; + parameter integer CLKOUT4_DIVIDE = 1; + parameter real CLKOUT4_DUTY_CYCLE = 0.500; + parameter real CLKOUT4_PHASE = 0.000; + parameter integer CLKOUT5_DIVIDE = 1; + parameter real CLKOUT5_DUTY_CYCLE = 0.500; + parameter real CLKOUT5_PHASE = 0.000; + parameter integer CLKOUT6_DIVIDE = 1; + parameter real CLKOUT6_DUTY_CYCLE = 0.500; + parameter real CLKOUT6_PHASE = 0.000; + parameter integer DIVCLK_DIVIDE = 1; + parameter [0:0] IS_CLKFBIN_INVERTED = 1'b0; + parameter [0:0] IS_CLKIN1_INVERTED = 1'b0; + parameter [0:0] IS_PWRDWN_INVERTED = 1'b0; + parameter [0:0] IS_RST_INVERTED = 1'b0; + parameter real REF_JITTER1 = 0.010; + parameter STARTUP_WAIT = "FALSE"; + output CLKFBOUT; + output CLKFBOUTB; + output CLKOUT0; + output CLKOUT0B; + output CLKOUT1; + output CLKOUT1B; + output CLKOUT2; + output CLKOUT2B; + output CLKOUT3; + output CLKOUT3B; + output CLKOUT4; + output CLKOUT5; + output CLKOUT6; + output LOCKED; + (* invertible_pin = "IS_CLKFBIN_INVERTED" *) + input CLKFBIN; + (* invertible_pin = "IS_CLKIN1_INVERTED" *) + input CLKIN1; + (* invertible_pin = "IS_PWRDWN_INVERTED" *) + input PWRDWN; + (* invertible_pin = "IS_RST_INVERTED" *) + input RST; +endmodule + +module PLLE4_ADV (...); + parameter real CLKIN_FREQ_MAX = 1066.000; + parameter real CLKIN_FREQ_MIN = 70.000; + parameter real CLKPFD_FREQ_MAX = 667.500; + parameter real CLKPFD_FREQ_MIN = 70.000; + parameter real VCOCLK_FREQ_MAX = 1500.000; + parameter real VCOCLK_FREQ_MIN = 750.000; + parameter integer CLKFBOUT_MULT = 5; + parameter real CLKFBOUT_PHASE = 0.000; + parameter real CLKIN_PERIOD = 0.000; + parameter integer CLKOUT0_DIVIDE = 1; + parameter real CLKOUT0_DUTY_CYCLE = 0.500; + parameter real CLKOUT0_PHASE = 0.000; + parameter integer CLKOUT1_DIVIDE = 1; + parameter real CLKOUT1_DUTY_CYCLE = 0.500; + parameter real CLKOUT1_PHASE = 0.000; + parameter CLKOUTPHY_MODE = "VCO_2X"; + parameter COMPENSATION = "AUTO"; + parameter integer DIVCLK_DIVIDE = 1; + parameter [0:0] IS_CLKFBIN_INVERTED = 1'b0; + parameter [0:0] IS_CLKIN_INVERTED = 1'b0; + parameter [0:0] IS_PWRDWN_INVERTED = 1'b0; + parameter [0:0] IS_RST_INVERTED = 1'b0; + parameter real REF_JITTER = 0.010; + parameter STARTUP_WAIT = "FALSE"; + output CLKFBOUT; + output CLKOUT0; + output CLKOUT0B; + output CLKOUT1; + output CLKOUT1B; + output CLKOUTPHY; + output [15:0] DO; + output DRDY; + output LOCKED; + (* invertible_pin = "IS_CLKFBIN_INVERTED" *) + input CLKFBIN; + (* invertible_pin = "IS_CLKIN_INVERTED" *) + input CLKIN; + input CLKOUTPHYEN; + input [6:0] DADDR; + input DCLK; + input DEN; + input [15:0] DI; + input DWE; + (* invertible_pin = "IS_PWRDWN_INVERTED" *) + input PWRDWN; + (* invertible_pin = "IS_RST_INVERTED" *) + input RST; +endmodule + +module PLLE4_BASE (...); + parameter integer CLKFBOUT_MULT = 5; + parameter real CLKFBOUT_PHASE = 0.000; + parameter real CLKIN_PERIOD = 0.000; + parameter integer CLKOUT0_DIVIDE = 1; + parameter real CLKOUT0_DUTY_CYCLE = 0.500; + parameter real CLKOUT0_PHASE = 0.000; + parameter integer CLKOUT1_DIVIDE = 1; + parameter real CLKOUT1_DUTY_CYCLE = 0.500; + parameter real CLKOUT1_PHASE = 0.000; + parameter CLKOUTPHY_MODE = "VCO_2X"; + parameter integer DIVCLK_DIVIDE = 1; + parameter [0:0] IS_CLKFBIN_INVERTED = 1'b0; + parameter [0:0] IS_CLKIN_INVERTED = 1'b0; + parameter [0:0] IS_PWRDWN_INVERTED = 1'b0; + parameter [0:0] IS_RST_INVERTED = 1'b0; + parameter real REF_JITTER = 0.010; + parameter STARTUP_WAIT = "FALSE"; + output CLKFBOUT; + output CLKOUT0; + output CLKOUT0B; + output CLKOUT1; + output CLKOUT1B; + output CLKOUTPHY; + output LOCKED; + (* invertible_pin = "IS_CLKFBIN_INVERTED" *) + input CLKFBIN; + (* invertible_pin = "IS_CLKIN_INVERTED" *) + input CLKIN; + input CLKOUTPHYEN; + (* invertible_pin = "IS_PWRDWN_INVERTED" *) + input PWRDWN; + (* invertible_pin = "IS_RST_INVERTED" *) + input RST; +endmodule + +module BUFT (...); + output O; + input I; + input T; +endmodule + +module IN_FIFO (...); + parameter integer ALMOST_EMPTY_VALUE = 1; + parameter integer ALMOST_FULL_VALUE = 1; + parameter ARRAY_MODE = "ARRAY_MODE_4_X_8"; + parameter SYNCHRONOUS_MODE = "FALSE"; + output ALMOSTEMPTY; + output ALMOSTFULL; + output EMPTY; + output FULL; + output [7:0] Q0; + output [7:0] Q1; + output [7:0] Q2; + output [7:0] Q3; + output [7:0] Q4; + output [7:0] Q5; + output [7:0] Q6; + output [7:0] Q7; + output [7:0] Q8; + output [7:0] Q9; + (* clkbuf_sink *) + input RDCLK; + input RDEN; + input RESET; + (* clkbuf_sink *) + input WRCLK; + input WREN; + input [3:0] D0; + input [3:0] D1; + input [3:0] D2; + input [3:0] D3; + input [3:0] D4; + input [3:0] D7; + input [3:0] D8; + input [3:0] D9; + input [7:0] D5; + input [7:0] D6; +endmodule + +module OUT_FIFO (...); + parameter integer ALMOST_EMPTY_VALUE = 1; + parameter integer ALMOST_FULL_VALUE = 1; + parameter ARRAY_MODE = "ARRAY_MODE_8_X_4"; + parameter OUTPUT_DISABLE = "FALSE"; + parameter SYNCHRONOUS_MODE = "FALSE"; + output ALMOSTEMPTY; + output ALMOSTFULL; + output EMPTY; + output FULL; + output [3:0] Q0; + output [3:0] Q1; + output [3:0] Q2; + output [3:0] Q3; + output [3:0] Q4; + output [3:0] Q7; + output [3:0] Q8; + output [3:0] Q9; + output [7:0] Q5; + output [7:0] Q6; + (* clkbuf_sink *) + input RDCLK; + input RDEN; + input RESET; + (* clkbuf_sink *) + input WRCLK; + input WREN; + input [7:0] D0; + input [7:0] D1; + input [7:0] D2; + input [7:0] D3; + input [7:0] D4; + input [7:0] D5; + input [7:0] D6; + input [7:0] D7; + input [7:0] D8; + input [7:0] D9; +endmodule + +module HARD_SYNC (...); + parameter [0:0] INIT = 1'b0; + parameter [0:0] IS_CLK_INVERTED = 1'b0; + parameter integer LATENCY = 2; + output DOUT; + (* clkbuf_sink *) + (* invertible_pin = "IS_CLK_INVERTED" *) + input CLK; + input DIN; +endmodule + +(* keep *) +module STARTUP_SPARTAN3 (...); + input CLK; + input GSR; + input GTS; +endmodule + +(* keep *) +module STARTUP_SPARTAN3E (...); + input CLK; + input GSR; + input GTS; + input MBT; +endmodule + +(* keep *) +module STARTUP_SPARTAN3A (...); + input CLK; + input GSR; + input GTS; +endmodule + +(* keep *) +module STARTUP_SPARTAN6 (...); + output CFGCLK; + output CFGMCLK; + output EOS; + input CLK; + input GSR; + input GTS; + input KEYCLEARB; +endmodule + +(* keep *) +module STARTUP_VIRTEX4 (...); + output EOS; + input CLK; + input GSR; + input GTS; + input USRCCLKO; + input USRCCLKTS; + input USRDONEO; + input USRDONETS; +endmodule + +(* keep *) +module STARTUP_VIRTEX5 (...); + output CFGCLK; + output CFGMCLK; + output DINSPI; + output EOS; + output TCKSPI; + input CLK; + input GSR; + input GTS; + input USRCCLKO; + input USRCCLKTS; + input USRDONEO; + input USRDONETS; +endmodule + +(* keep *) +module STARTUP_VIRTEX6 (...); + parameter PROG_USR = "FALSE"; + output CFGCLK; + output CFGMCLK; + output DINSPI; + output EOS; + output PREQ; + output TCKSPI; + input CLK; + input GSR; + input GTS; + input KEYCLEARB; + input PACK; + input USRCCLKO; + input USRCCLKTS; + input USRDONEO; + input USRDONETS; +endmodule + +(* keep *) +module STARTUPE2 (...); + parameter PROG_USR = "FALSE"; + parameter real SIM_CCLK_FREQ = 0.0; + output CFGCLK; + output CFGMCLK; + output EOS; + output PREQ; + input CLK; + input GSR; + input GTS; + input KEYCLEARB; + input PACK; + input USRCCLKO; + input USRCCLKTS; + input USRDONEO; + input USRDONETS; +endmodule + +(* keep *) +module STARTUPE3 (...); + parameter PROG_USR = "FALSE"; + parameter real SIM_CCLK_FREQ = 0.0; + output CFGCLK; + output CFGMCLK; + output [3:0] DI; + output EOS; + output PREQ; + input [3:0] DO; + input [3:0] DTS; + input FCSBO; + input FCSBTS; + input GSR; + input GTS; + input KEYCLEARB; + input PACK; + input USRCCLKO; + input USRCCLKTS; + input USRDONEO; + input USRDONETS; +endmodule + +(* keep *) +module CAPTURE_SPARTAN3 (...); + parameter ONESHOT = "FALSE"; + input CAP; + input CLK; +endmodule + +(* keep *) +module CAPTURE_SPARTAN3A (...); + parameter ONESHOT = "TRUE"; + input CAP; + input CLK; +endmodule + +(* keep *) +module CAPTURE_VIRTEX4 (...); + parameter ONESHOT = "TRUE"; + input CAP; + input CLK; +endmodule + +(* keep *) +module CAPTURE_VIRTEX5 (...); + parameter ONESHOT = "TRUE"; + input CAP; + input CLK; +endmodule + +(* keep *) +module CAPTURE_VIRTEX6 (...); + parameter ONESHOT = "TRUE"; + input CAP; + input CLK; +endmodule + +(* keep *) +module CAPTUREE2 (...); + parameter ONESHOT = "TRUE"; + input CAP; + input CLK; +endmodule + +(* keep *) +module ICAP_SPARTAN3A (...); + output BUSY; + output [7:0] O; + input CE; + input CLK; + input WRITE; + input [7:0] I; +endmodule + +(* keep *) +module ICAP_SPARTAN6 (...); + parameter DEVICE_ID = 32'h04000093; + parameter SIM_CFG_FILE_NAME = "NONE"; + output BUSY; + output [15:0] O; + input CLK; + input CE; + input WRITE; + input [15:0] I; +endmodule + +(* keep *) +module ICAP_VIRTEX4 (...); + parameter ICAP_WIDTH = "X8"; + output BUSY; + output [31:0] O; + input CE; + input CLK; + input WRITE; + input [31:0] I; +endmodule + +(* keep *) +module ICAP_VIRTEX5 (...); + parameter ICAP_WIDTH = "X8"; + output BUSY; + output [31:0] O; + input CE; + input CLK; + input WRITE; + input [31:0] I; +endmodule + +(* keep *) +module ICAP_VIRTEX6 (...); + parameter [31:0] DEVICE_ID = 32'h04244093; + parameter ICAP_WIDTH = "X8"; + parameter SIM_CFG_FILE_NAME = "NONE"; + output BUSY; + output [31:0] O; + input CLK; + input CSB; + input RDWRB; + input [31:0] I; +endmodule + +(* keep *) +module ICAPE2 (...); + parameter [31:0] DEVICE_ID = 32'h04244093; + parameter ICAP_WIDTH = "X32"; + parameter SIM_CFG_FILE_NAME = "NONE"; + output [31:0] O; + input CLK; + input CSIB; + input RDWRB; + input [31:0] I; +endmodule + +(* keep *) +module ICAPE3 (...); + parameter [31:0] DEVICE_ID = 32'h03628093; + parameter ICAP_AUTO_SWITCH = "DISABLE"; + parameter SIM_CFG_FILE_NAME = "NONE"; + output AVAIL; + output [31:0] O; + output PRDONE; + output PRERROR; + input CLK; + input CSIB; + input RDWRB; + input [31:0] I; +endmodule + +(* keep *) +module BSCAN_SPARTAN3 (...); + output CAPTURE; + output DRCK1; + output DRCK2; + output RESET; + output SEL1; + output SEL2; + output SHIFT; + output TDI; + output UPDATE; + input TDO1; + input TDO2; +endmodule + +(* keep *) +module BSCAN_SPARTAN3A (...); + output CAPTURE; + output DRCK1; + output DRCK2; + output RESET; + output SEL1; + output SEL2; + output SHIFT; + output TCK; + output TDI; + output TMS; + output UPDATE; + input TDO1; + input TDO2; +endmodule + +(* keep *) +module BSCAN_SPARTAN6 (...); + parameter integer JTAG_CHAIN = 1; + output CAPTURE; + output DRCK; + output RESET; + output RUNTEST; + output SEL; + output SHIFT; + output TCK; + output TDI; + output TMS; + output UPDATE; + input TDO; +endmodule + +(* keep *) +module BSCAN_VIRTEX4 (...); + parameter integer JTAG_CHAIN = 1; + output CAPTURE; + output DRCK; + output RESET; + output SEL; + output SHIFT; + output TDI; + output UPDATE; + input TDO; +endmodule + +(* keep *) +module BSCAN_VIRTEX5 (...); + parameter integer JTAG_CHAIN = 1; + output CAPTURE; + output DRCK; + output RESET; + output SEL; + output SHIFT; + output TDI; + output UPDATE; + input TDO; +endmodule + +(* keep *) +module BSCAN_VIRTEX6 (...); + parameter DISABLE_JTAG = "FALSE"; + parameter integer JTAG_CHAIN = 1; + output CAPTURE; + output DRCK; + output RESET; + output RUNTEST; + output SEL; + output SHIFT; + output TCK; + output TDI; + output TMS; + output UPDATE; + input TDO; +endmodule + +(* keep *) +module BSCANE2 (...); + parameter DISABLE_JTAG = "FALSE"; + parameter integer JTAG_CHAIN = 1; + output CAPTURE; + output DRCK; + output RESET; + output RUNTEST; + output SEL; + output SHIFT; + output TCK; + output TDI; + output TMS; + output UPDATE; + input TDO; +endmodule + +module DNA_PORT (...); + parameter [56:0] SIM_DNA_VALUE = 57'h0; + output DOUT; + input CLK; + input DIN; + input READ; + input SHIFT; +endmodule + +module DNA_PORTE2 (...); + parameter [95:0] SIM_DNA_VALUE = 96'h000000000000000000000000; + output DOUT; + input CLK; + input DIN; + input READ; + input SHIFT; +endmodule + +module FRAME_ECC_VIRTEX4 (...); + output ERROR; + output [11:0] SYNDROME; + output SYNDROMEVALID; +endmodule + +module FRAME_ECC_VIRTEX5 (...); + output CRCERROR; + output ECCERROR; + output SYNDROMEVALID; + output [11:0] SYNDROME; +endmodule + +module FRAME_ECC_VIRTEX6 (...); + parameter FARSRC = "EFAR"; + parameter FRAME_RBT_IN_FILENAME = "NONE"; + output CRCERROR; + output ECCERROR; + output ECCERRORSINGLE; + output SYNDROMEVALID; + output [12:0] SYNDROME; + output [23:0] FAR; + output [4:0] SYNBIT; + output [6:0] SYNWORD; +endmodule + +module FRAME_ECCE2 (...); + parameter FARSRC = "EFAR"; + parameter FRAME_RBT_IN_FILENAME = "NONE"; + output CRCERROR; + output ECCERROR; + output ECCERRORSINGLE; + output SYNDROMEVALID; + output [12:0] SYNDROME; + output [25:0] FAR; + output [4:0] SYNBIT; + output [6:0] SYNWORD; +endmodule + +module FRAME_ECCE3 (...); + output CRCERROR; + output ECCERRORNOTSINGLE; + output ECCERRORSINGLE; + output ENDOFFRAME; + output ENDOFSCAN; + output [25:0] FAR; + input [1:0] FARSEL; + input ICAPBOTCLK; + input ICAPTOPCLK; +endmodule + +module FRAME_ECCE4 (...); + output CRCERROR; + output ECCERRORNOTSINGLE; + output ECCERRORSINGLE; + output ENDOFFRAME; + output ENDOFSCAN; + output [26:0] FAR; + input [1:0] FARSEL; + input ICAPBOTCLK; + input ICAPTOPCLK; +endmodule + +module USR_ACCESS_VIRTEX4 (...); + output [31:0] DATA; + output DATAVALID; +endmodule + +module USR_ACCESS_VIRTEX5 (...); + output CFGCLK; + output [31:0] DATA; + output DATAVALID; +endmodule + +module USR_ACCESS_VIRTEX6 (...); + output CFGCLK; + output [31:0] DATA; + output DATAVALID; +endmodule + +module USR_ACCESSE2 (...); + output CFGCLK; + output DATAVALID; + output [31:0] DATA; +endmodule + +module POST_CRC_INTERNAL (...); + output CRCERROR; +endmodule + +(* keep *) +module SUSPEND_SYNC (...); + output SREQ; + input CLK; + input SACK; +endmodule + +(* keep *) +module KEY_CLEAR (...); + input KEYCLEARB; +endmodule + +(* keep *) +module MASTER_JTAG (...); + output TDO; + input TCK; + input TDI; + input TMS; +endmodule + +(* keep *) +module SPI_ACCESS (...); + parameter SIM_DELAY_TYPE = "SCALED"; + parameter SIM_DEVICE = "3S1400AN"; + parameter SIM_FACTORY_ID = 512'h00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000; + parameter SIM_MEM_FILE = "NONE"; + parameter SIM_USER_ID = 512'hFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF; + output MISO; + input CLK; + input CSB; + input MOSI; +endmodule + +module EFUSE_USR (...); + parameter [31:0] SIM_EFUSE_VALUE = 32'h00000000; + output [31:0] EFUSEUSR; +endmodule + +(* keep *) +module SYSMON (...); + parameter [15:0] INIT_40 = 16'h0; + parameter [15:0] INIT_41 = 16'h0; + parameter [15:0] INIT_42 = 16'h0800; + parameter [15:0] INIT_43 = 16'h0; + parameter [15:0] INIT_44 = 16'h0; + parameter [15:0] INIT_45 = 16'h0; + parameter [15:0] INIT_46 = 16'h0; + parameter [15:0] INIT_47 = 16'h0; + parameter [15:0] INIT_48 = 16'h0; + parameter [15:0] INIT_49 = 16'h0; + parameter [15:0] INIT_4A = 16'h0; + parameter [15:0] INIT_4B = 16'h0; + parameter [15:0] INIT_4C = 16'h0; + parameter [15:0] INIT_4D = 16'h0; + parameter [15:0] INIT_4E = 16'h0; + parameter [15:0] INIT_4F = 16'h0; + parameter [15:0] INIT_50 = 16'h0; + parameter [15:0] INIT_51 = 16'h0; + parameter [15:0] INIT_52 = 16'h0; + parameter [15:0] INIT_53 = 16'h0; + parameter [15:0] INIT_54 = 16'h0; + parameter [15:0] INIT_55 = 16'h0; + parameter [15:0] INIT_56 = 16'h0; + parameter [15:0] INIT_57 = 16'h0; + parameter SIM_DEVICE = "VIRTEX5"; + parameter SIM_MONITOR_FILE = "design.txt"; + output BUSY; + output DRDY; + output EOC; + output EOS; + output JTAGBUSY; + output JTAGLOCKED; + output JTAGMODIFIED; + output OT; + output [15:0] DO; + output [2:0] ALM; + output [4:0] CHANNEL; + input CONVST; + input CONVSTCLK; + input DCLK; + input DEN; + input DWE; + input RESET; + input VN; + input VP; + input [15:0] DI; + input [15:0] VAUXN; + input [15:0] VAUXP; + input [6:0] DADDR; +endmodule + +(* keep *) +module XADC (...); + parameter [15:0] INIT_40 = 16'h0; + parameter [15:0] INIT_41 = 16'h0; + parameter [15:0] INIT_42 = 16'h0800; + parameter [15:0] INIT_43 = 16'h0; + parameter [15:0] INIT_44 = 16'h0; + parameter [15:0] INIT_45 = 16'h0; + parameter [15:0] INIT_46 = 16'h0; + parameter [15:0] INIT_47 = 16'h0; + parameter [15:0] INIT_48 = 16'h0; + parameter [15:0] INIT_49 = 16'h0; + parameter [15:0] INIT_4A = 16'h0; + parameter [15:0] INIT_4B = 16'h0; + parameter [15:0] INIT_4C = 16'h0; + parameter [15:0] INIT_4D = 16'h0; + parameter [15:0] INIT_4E = 16'h0; + parameter [15:0] INIT_4F = 16'h0; + parameter [15:0] INIT_50 = 16'h0; + parameter [15:0] INIT_51 = 16'h0; + parameter [15:0] INIT_52 = 16'h0; + parameter [15:0] INIT_53 = 16'h0; + parameter [15:0] INIT_54 = 16'h0; + parameter [15:0] INIT_55 = 16'h0; + parameter [15:0] INIT_56 = 16'h0; + parameter [15:0] INIT_57 = 16'h0; + parameter [15:0] INIT_58 = 16'h0; + parameter [15:0] INIT_59 = 16'h0; + parameter [15:0] INIT_5A = 16'h0; + parameter [15:0] INIT_5B = 16'h0; + parameter [15:0] INIT_5C = 16'h0; + parameter [15:0] INIT_5D = 16'h0; + parameter [15:0] INIT_5E = 16'h0; + parameter [15:0] INIT_5F = 16'h0; + parameter IS_CONVSTCLK_INVERTED = 1'b0; + parameter IS_DCLK_INVERTED = 1'b0; + parameter SIM_DEVICE = "7SERIES"; + parameter SIM_MONITOR_FILE = "design.txt"; + output BUSY; + output DRDY; + output EOC; + output EOS; + output JTAGBUSY; + output JTAGLOCKED; + output JTAGMODIFIED; + output OT; + output [15:0] DO; + output [7:0] ALM; + output [4:0] CHANNEL; + output [4:0] MUXADDR; + input CONVST; + (* invertible_pin = "IS_CONVSTCLK_INVERTED" *) + input CONVSTCLK; + (* invertible_pin = "IS_DCLK_INVERTED" *) + input DCLK; + input DEN; + input DWE; + input RESET; + input VN; + input VP; + input [15:0] DI; + input [15:0] VAUXN; + input [15:0] VAUXP; + input [6:0] DADDR; +endmodule + +(* keep *) +module SYSMONE1 (...); + parameter [15:0] INIT_40 = 16'h0; + parameter [15:0] INIT_41 = 16'h0; + parameter [15:0] INIT_42 = 16'h0; + parameter [15:0] INIT_43 = 16'h0; + parameter [15:0] INIT_44 = 16'h0; + parameter [15:0] INIT_45 = 16'h0; + parameter [15:0] INIT_46 = 16'h0; + parameter [15:0] INIT_47 = 16'h0; + parameter [15:0] INIT_48 = 16'h0; + parameter [15:0] INIT_49 = 16'h0; + parameter [15:0] INIT_4A = 16'h0; + parameter [15:0] INIT_4B = 16'h0; + parameter [15:0] INIT_4C = 16'h0; + parameter [15:0] INIT_4D = 16'h0; + parameter [15:0] INIT_4E = 16'h0; + parameter [15:0] INIT_4F = 16'h0; + parameter [15:0] INIT_50 = 16'h0; + parameter [15:0] INIT_51 = 16'h0; + parameter [15:0] INIT_52 = 16'h0; + parameter [15:0] INIT_53 = 16'h0; + parameter [15:0] INIT_54 = 16'h0; + parameter [15:0] INIT_55 = 16'h0; + parameter [15:0] INIT_56 = 16'h0; + parameter [15:0] INIT_57 = 16'h0; + parameter [15:0] INIT_58 = 16'h0; + parameter [15:0] INIT_59 = 16'h0; + parameter [15:0] INIT_5A = 16'h0; + parameter [15:0] INIT_5B = 16'h0; + parameter [15:0] INIT_5C = 16'h0; + parameter [15:0] INIT_5D = 16'h0; + parameter [15:0] INIT_5E = 16'h0; + parameter [15:0] INIT_5F = 16'h0; + parameter [15:0] INIT_60 = 16'h0; + parameter [15:0] INIT_61 = 16'h0; + parameter [15:0] INIT_62 = 16'h0; + parameter [15:0] INIT_63 = 16'h0; + parameter [15:0] INIT_64 = 16'h0; + parameter [15:0] INIT_65 = 16'h0; + parameter [15:0] INIT_66 = 16'h0; + parameter [15:0] INIT_67 = 16'h0; + parameter [15:0] INIT_68 = 16'h0; + parameter [15:0] INIT_69 = 16'h0; + parameter [15:0] INIT_6A = 16'h0; + parameter [15:0] INIT_6B = 16'h0; + parameter [15:0] INIT_6C = 16'h0; + parameter [15:0] INIT_6D = 16'h0; + parameter [15:0] INIT_6E = 16'h0; + parameter [15:0] INIT_6F = 16'h0; + parameter [15:0] INIT_70 = 16'h0; + parameter [15:0] INIT_71 = 16'h0; + parameter [15:0] INIT_72 = 16'h0; + parameter [15:0] INIT_73 = 16'h0; + parameter [15:0] INIT_74 = 16'h0; + parameter [15:0] INIT_75 = 16'h0; + parameter [15:0] INIT_76 = 16'h0; + parameter [15:0] INIT_77 = 16'h0; + parameter [15:0] INIT_78 = 16'h0; + parameter [15:0] INIT_79 = 16'h0; + parameter [15:0] INIT_7A = 16'h0; + parameter [15:0] INIT_7B = 16'h0; + parameter [15:0] INIT_7C = 16'h0; + parameter [15:0] INIT_7D = 16'h0; + parameter [15:0] INIT_7E = 16'h0; + parameter [15:0] INIT_7F = 16'h0; + parameter [0:0] IS_CONVSTCLK_INVERTED = 1'b0; + parameter [0:0] IS_DCLK_INVERTED = 1'b0; + parameter SIM_MONITOR_FILE = "design.txt"; + parameter integer SYSMON_VUSER0_BANK = 0; + parameter SYSMON_VUSER0_MONITOR = "NONE"; + parameter integer SYSMON_VUSER1_BANK = 0; + parameter SYSMON_VUSER1_MONITOR = "NONE"; + parameter integer SYSMON_VUSER2_BANK = 0; + parameter SYSMON_VUSER2_MONITOR = "NONE"; + parameter integer SYSMON_VUSER3_BANK = 0; + parameter SYSMON_VUSER3_MONITOR = "NONE"; + output [15:0] ALM; + output BUSY; + output [5:0] CHANNEL; + output [15:0] DO; + output DRDY; + output EOC; + output EOS; + output I2C_SCLK_TS; + output I2C_SDA_TS; + output JTAGBUSY; + output JTAGLOCKED; + output JTAGMODIFIED; + output [4:0] MUXADDR; + output OT; + input CONVST; + (* invertible_pin = "IS_CONVSTCLK_INVERTED" *) + input CONVSTCLK; + input [7:0] DADDR; + (* invertible_pin = "IS_DCLK_INVERTED" *) + input DCLK; + input DEN; + input [15:0] DI; + input DWE; + input I2C_SCLK; + input I2C_SDA; + input RESET; + input [15:0] VAUXN; + input [15:0] VAUXP; + input VN; + input VP; +endmodule + +(* keep *) +module SYSMONE4 (...); + parameter [15:0] COMMON_N_SOURCE = 16'hFFFF; + parameter [15:0] INIT_40 = 16'h0000; + parameter [15:0] INIT_41 = 16'h0000; + parameter [15:0] INIT_42 = 16'h0000; + parameter [15:0] INIT_43 = 16'h0000; + parameter [15:0] INIT_44 = 16'h0000; + parameter [15:0] INIT_45 = 16'h0000; + parameter [15:0] INIT_46 = 16'h0000; + parameter [15:0] INIT_47 = 16'h0000; + parameter [15:0] INIT_48 = 16'h0000; + parameter [15:0] INIT_49 = 16'h0000; + parameter [15:0] INIT_4A = 16'h0000; + parameter [15:0] INIT_4B = 16'h0000; + parameter [15:0] INIT_4C = 16'h0000; + parameter [15:0] INIT_4D = 16'h0000; + parameter [15:0] INIT_4E = 16'h0000; + parameter [15:0] INIT_4F = 16'h0000; + parameter [15:0] INIT_50 = 16'h0000; + parameter [15:0] INIT_51 = 16'h0000; + parameter [15:0] INIT_52 = 16'h0000; + parameter [15:0] INIT_53 = 16'h0000; + parameter [15:0] INIT_54 = 16'h0000; + parameter [15:0] INIT_55 = 16'h0000; + parameter [15:0] INIT_56 = 16'h0000; + parameter [15:0] INIT_57 = 16'h0000; + parameter [15:0] INIT_58 = 16'h0000; + parameter [15:0] INIT_59 = 16'h0000; + parameter [15:0] INIT_5A = 16'h0000; + parameter [15:0] INIT_5B = 16'h0000; + parameter [15:0] INIT_5C = 16'h0000; + parameter [15:0] INIT_5D = 16'h0000; + parameter [15:0] INIT_5E = 16'h0000; + parameter [15:0] INIT_5F = 16'h0000; + parameter [15:0] INIT_60 = 16'h0000; + parameter [15:0] INIT_61 = 16'h0000; + parameter [15:0] INIT_62 = 16'h0000; + parameter [15:0] INIT_63 = 16'h0000; + parameter [15:0] INIT_64 = 16'h0000; + parameter [15:0] INIT_65 = 16'h0000; + parameter [15:0] INIT_66 = 16'h0000; + parameter [15:0] INIT_67 = 16'h0000; + parameter [15:0] INIT_68 = 16'h0000; + parameter [15:0] INIT_69 = 16'h0000; + parameter [15:0] INIT_6A = 16'h0000; + parameter [15:0] INIT_6B = 16'h0000; + parameter [15:0] INIT_6C = 16'h0000; + parameter [15:0] INIT_6D = 16'h0000; + parameter [15:0] INIT_6E = 16'h0000; + parameter [15:0] INIT_6F = 16'h0000; + parameter [15:0] INIT_70 = 16'h0000; + parameter [15:0] INIT_71 = 16'h0000; + parameter [15:0] INIT_72 = 16'h0000; + parameter [15:0] INIT_73 = 16'h0000; + parameter [15:0] INIT_74 = 16'h0000; + parameter [15:0] INIT_75 = 16'h0000; + parameter [15:0] INIT_76 = 16'h0000; + parameter [15:0] INIT_77 = 16'h0000; + parameter [15:0] INIT_78 = 16'h0000; + parameter [15:0] INIT_79 = 16'h0000; + parameter [15:0] INIT_7A = 16'h0000; + parameter [15:0] INIT_7B = 16'h0000; + parameter [15:0] INIT_7C = 16'h0000; + parameter [15:0] INIT_7D = 16'h0000; + parameter [15:0] INIT_7E = 16'h0000; + parameter [15:0] INIT_7F = 16'h0000; + parameter [0:0] IS_CONVSTCLK_INVERTED = 1'b0; + parameter [0:0] IS_DCLK_INVERTED = 1'b0; + parameter SIM_DEVICE = "ULTRASCALE_PLUS"; + parameter SIM_MONITOR_FILE = "design.txt"; + parameter integer SYSMON_VUSER0_BANK = 0; + parameter SYSMON_VUSER0_MONITOR = "NONE"; + parameter integer SYSMON_VUSER1_BANK = 0; + parameter SYSMON_VUSER1_MONITOR = "NONE"; + parameter integer SYSMON_VUSER2_BANK = 0; + parameter SYSMON_VUSER2_MONITOR = "NONE"; + parameter integer SYSMON_VUSER3_BANK = 0; + parameter SYSMON_VUSER3_MONITOR = "NONE"; + output [15:0] ADC_DATA; + output [15:0] ALM; + output BUSY; + output [5:0] CHANNEL; + output [15:0] DO; + output DRDY; + output EOC; + output EOS; + output I2C_SCLK_TS; + output I2C_SDA_TS; + output JTAGBUSY; + output JTAGLOCKED; + output JTAGMODIFIED; + output [4:0] MUXADDR; + output OT; + output SMBALERT_TS; + input CONVST; + (* invertible_pin = "IS_CONVSTCLK_INVERTED" *) + input CONVSTCLK; + input [7:0] DADDR; + (* invertible_pin = "IS_DCLK_INVERTED" *) + input DCLK; + input DEN; + input [15:0] DI; + input DWE; + input I2C_SCLK; + input I2C_SDA; + input RESET; + input [15:0] VAUXN; + input [15:0] VAUXP; + input VN; + input VP; +endmodule + +module GTPA1_DUAL (...); + parameter AC_CAP_DIS_0 = "TRUE"; + parameter AC_CAP_DIS_1 = "TRUE"; + parameter integer ALIGN_COMMA_WORD_0 = 1; + parameter integer ALIGN_COMMA_WORD_1 = 1; + parameter integer CB2_INH_CC_PERIOD_0 = 8; + parameter integer CB2_INH_CC_PERIOD_1 = 8; + parameter [4:0] CDR_PH_ADJ_TIME_0 = 5'b01010; + parameter [4:0] CDR_PH_ADJ_TIME_1 = 5'b01010; + parameter integer CHAN_BOND_1_MAX_SKEW_0 = 7; + parameter integer CHAN_BOND_1_MAX_SKEW_1 = 7; + parameter integer CHAN_BOND_2_MAX_SKEW_0 = 1; + parameter integer CHAN_BOND_2_MAX_SKEW_1 = 1; + parameter CHAN_BOND_KEEP_ALIGN_0 = "FALSE"; + parameter CHAN_BOND_KEEP_ALIGN_1 = "FALSE"; + parameter [9:0] CHAN_BOND_SEQ_1_1_0 = 10'b0101111100; + parameter [9:0] CHAN_BOND_SEQ_1_1_1 = 10'b0101111100; + parameter [9:0] CHAN_BOND_SEQ_1_2_0 = 10'b0001001010; + parameter [9:0] CHAN_BOND_SEQ_1_2_1 = 10'b0001001010; + parameter [9:0] CHAN_BOND_SEQ_1_3_0 = 10'b0001001010; + parameter [9:0] CHAN_BOND_SEQ_1_3_1 = 10'b0001001010; + parameter [9:0] CHAN_BOND_SEQ_1_4_0 = 10'b0110111100; + parameter [9:0] CHAN_BOND_SEQ_1_4_1 = 10'b0110111100; + parameter [3:0] CHAN_BOND_SEQ_1_ENABLE_0 = 4'b1111; + parameter [3:0] CHAN_BOND_SEQ_1_ENABLE_1 = 4'b1111; + parameter [9:0] CHAN_BOND_SEQ_2_1_0 = 10'b0110111100; + parameter [9:0] CHAN_BOND_SEQ_2_1_1 = 10'b0110111100; + parameter [9:0] CHAN_BOND_SEQ_2_2_0 = 10'b0100111100; + parameter [9:0] CHAN_BOND_SEQ_2_2_1 = 10'b0100111100; + parameter [9:0] CHAN_BOND_SEQ_2_3_0 = 10'b0100111100; + parameter [9:0] CHAN_BOND_SEQ_2_3_1 = 10'b0100111100; + parameter [9:0] CHAN_BOND_SEQ_2_4_0 = 10'b0100111100; + parameter [9:0] CHAN_BOND_SEQ_2_4_1 = 10'b0100111100; + parameter [3:0] CHAN_BOND_SEQ_2_ENABLE_0 = 4'b1111; + parameter [3:0] CHAN_BOND_SEQ_2_ENABLE_1 = 4'b1111; + parameter CHAN_BOND_SEQ_2_USE_0 = "FALSE"; + parameter CHAN_BOND_SEQ_2_USE_1 = "FALSE"; + parameter integer CHAN_BOND_SEQ_LEN_0 = 1; + parameter integer CHAN_BOND_SEQ_LEN_1 = 1; + parameter integer CLK25_DIVIDER_0 = 4; + parameter integer CLK25_DIVIDER_1 = 4; + parameter CLKINDC_B_0 = "TRUE"; + parameter CLKINDC_B_1 = "TRUE"; + parameter CLKRCV_TRST_0 = "TRUE"; + parameter CLKRCV_TRST_1 = "TRUE"; + parameter CLK_CORRECT_USE_0 = "TRUE"; + parameter CLK_CORRECT_USE_1 = "TRUE"; + parameter integer CLK_COR_ADJ_LEN_0 = 1; + parameter integer CLK_COR_ADJ_LEN_1 = 1; + parameter integer CLK_COR_DET_LEN_0 = 1; + parameter integer CLK_COR_DET_LEN_1 = 1; + parameter CLK_COR_INSERT_IDLE_FLAG_0 = "FALSE"; + parameter CLK_COR_INSERT_IDLE_FLAG_1 = "FALSE"; + parameter CLK_COR_KEEP_IDLE_0 = "FALSE"; + parameter CLK_COR_KEEP_IDLE_1 = "FALSE"; + parameter integer CLK_COR_MAX_LAT_0 = 20; + parameter integer CLK_COR_MAX_LAT_1 = 20; + parameter integer CLK_COR_MIN_LAT_0 = 18; + parameter integer CLK_COR_MIN_LAT_1 = 18; + parameter CLK_COR_PRECEDENCE_0 = "TRUE"; + parameter CLK_COR_PRECEDENCE_1 = "TRUE"; + parameter integer CLK_COR_REPEAT_WAIT_0 = 0; + parameter integer CLK_COR_REPEAT_WAIT_1 = 0; + parameter [9:0] CLK_COR_SEQ_1_1_0 = 10'b0100011100; + parameter [9:0] CLK_COR_SEQ_1_1_1 = 10'b0100011100; + parameter [9:0] CLK_COR_SEQ_1_2_0 = 10'b0000000000; + parameter [9:0] CLK_COR_SEQ_1_2_1 = 10'b0000000000; + parameter [9:0] CLK_COR_SEQ_1_3_0 = 10'b0000000000; + parameter [9:0] CLK_COR_SEQ_1_3_1 = 10'b0000000000; + parameter [9:0] CLK_COR_SEQ_1_4_0 = 10'b0000000000; + parameter [9:0] CLK_COR_SEQ_1_4_1 = 10'b0000000000; + parameter [3:0] CLK_COR_SEQ_1_ENABLE_0 = 4'b1111; + parameter [3:0] CLK_COR_SEQ_1_ENABLE_1 = 4'b1111; + parameter [9:0] CLK_COR_SEQ_2_1_0 = 10'b0000000000; + parameter [9:0] CLK_COR_SEQ_2_1_1 = 10'b0000000000; + parameter [9:0] CLK_COR_SEQ_2_2_0 = 10'b0000000000; + parameter [9:0] CLK_COR_SEQ_2_2_1 = 10'b0000000000; + parameter [9:0] CLK_COR_SEQ_2_3_0 = 10'b0000000000; + parameter [9:0] CLK_COR_SEQ_2_3_1 = 10'b0000000000; + parameter [9:0] CLK_COR_SEQ_2_4_0 = 10'b0000000000; + parameter [9:0] CLK_COR_SEQ_2_4_1 = 10'b0000000000; + parameter [3:0] CLK_COR_SEQ_2_ENABLE_0 = 4'b1111; + parameter [3:0] CLK_COR_SEQ_2_ENABLE_1 = 4'b1111; + parameter CLK_COR_SEQ_2_USE_0 = "FALSE"; + parameter CLK_COR_SEQ_2_USE_1 = "FALSE"; + parameter CLK_OUT_GTP_SEL_0 = "REFCLKPLL0"; + parameter CLK_OUT_GTP_SEL_1 = "REFCLKPLL1"; + parameter [1:0] CM_TRIM_0 = 2'b00; + parameter [1:0] CM_TRIM_1 = 2'b00; + parameter [9:0] COMMA_10B_ENABLE_0 = 10'b1111111111; + parameter [9:0] COMMA_10B_ENABLE_1 = 10'b1111111111; + parameter [3:0] COM_BURST_VAL_0 = 4'b1111; + parameter [3:0] COM_BURST_VAL_1 = 4'b1111; + parameter DEC_MCOMMA_DETECT_0 = "TRUE"; + parameter DEC_MCOMMA_DETECT_1 = "TRUE"; + parameter DEC_PCOMMA_DETECT_0 = "TRUE"; + parameter DEC_PCOMMA_DETECT_1 = "TRUE"; + parameter DEC_VALID_COMMA_ONLY_0 = "TRUE"; + parameter DEC_VALID_COMMA_ONLY_1 = "TRUE"; + parameter GTP_CFG_PWRUP_0 = "TRUE"; + parameter GTP_CFG_PWRUP_1 = "TRUE"; + parameter [9:0] MCOMMA_10B_VALUE_0 = 10'b1010000011; + parameter [9:0] MCOMMA_10B_VALUE_1 = 10'b1010000011; + parameter MCOMMA_DETECT_0 = "TRUE"; + parameter MCOMMA_DETECT_1 = "TRUE"; + parameter [2:0] OOBDETECT_THRESHOLD_0 = 3'b110; + parameter [2:0] OOBDETECT_THRESHOLD_1 = 3'b110; + parameter integer OOB_CLK_DIVIDER_0 = 4; + parameter integer OOB_CLK_DIVIDER_1 = 4; + parameter PCI_EXPRESS_MODE_0 = "FALSE"; + parameter PCI_EXPRESS_MODE_1 = "FALSE"; + parameter [9:0] PCOMMA_10B_VALUE_0 = 10'b0101111100; + parameter [9:0] PCOMMA_10B_VALUE_1 = 10'b0101111100; + parameter PCOMMA_DETECT_0 = "TRUE"; + parameter PCOMMA_DETECT_1 = "TRUE"; + parameter [2:0] PLLLKDET_CFG_0 = 3'b101; + parameter [2:0] PLLLKDET_CFG_1 = 3'b101; + parameter [23:0] PLL_COM_CFG_0 = 24'h21680A; + parameter [23:0] PLL_COM_CFG_1 = 24'h21680A; + parameter [7:0] PLL_CP_CFG_0 = 8'h00; + parameter [7:0] PLL_CP_CFG_1 = 8'h00; + parameter integer PLL_DIVSEL_FB_0 = 5; + parameter integer PLL_DIVSEL_FB_1 = 5; + parameter integer PLL_DIVSEL_REF_0 = 2; + parameter integer PLL_DIVSEL_REF_1 = 2; + parameter integer PLL_RXDIVSEL_OUT_0 = 1; + parameter integer PLL_RXDIVSEL_OUT_1 = 1; + parameter PLL_SATA_0 = "FALSE"; + parameter PLL_SATA_1 = "FALSE"; + parameter PLL_SOURCE_0 = "PLL0"; + parameter PLL_SOURCE_1 = "PLL0"; + parameter integer PLL_TXDIVSEL_OUT_0 = 1; + parameter integer PLL_TXDIVSEL_OUT_1 = 1; + parameter [26:0] PMA_CDR_SCAN_0 = 27'h6404040; + parameter [26:0] PMA_CDR_SCAN_1 = 27'h6404040; + parameter [35:0] PMA_COM_CFG_EAST = 36'h000008000; + parameter [35:0] PMA_COM_CFG_WEST = 36'h00000A000; + parameter [6:0] PMA_RXSYNC_CFG_0 = 7'h00; + parameter [6:0] PMA_RXSYNC_CFG_1 = 7'h00; + parameter [24:0] PMA_RX_CFG_0 = 25'h05CE048; + parameter [24:0] PMA_RX_CFG_1 = 25'h05CE048; + parameter [19:0] PMA_TX_CFG_0 = 20'h00082; + parameter [19:0] PMA_TX_CFG_1 = 20'h00082; + parameter RCV_TERM_GND_0 = "FALSE"; + parameter RCV_TERM_GND_1 = "FALSE"; + parameter RCV_TERM_VTTRX_0 = "TRUE"; + parameter RCV_TERM_VTTRX_1 = "TRUE"; + parameter [7:0] RXEQ_CFG_0 = 8'b01111011; + parameter [7:0] RXEQ_CFG_1 = 8'b01111011; + parameter [0:0] RXPRBSERR_LOOPBACK_0 = 1'b0; + parameter [0:0] RXPRBSERR_LOOPBACK_1 = 1'b0; + parameter RX_BUFFER_USE_0 = "TRUE"; + parameter RX_BUFFER_USE_1 = "TRUE"; + parameter RX_DECODE_SEQ_MATCH_0 = "TRUE"; + parameter RX_DECODE_SEQ_MATCH_1 = "TRUE"; + parameter RX_EN_IDLE_HOLD_CDR_0 = "FALSE"; + parameter RX_EN_IDLE_HOLD_CDR_1 = "FALSE"; + parameter RX_EN_IDLE_RESET_BUF_0 = "TRUE"; + parameter RX_EN_IDLE_RESET_BUF_1 = "TRUE"; + parameter RX_EN_IDLE_RESET_FR_0 = "TRUE"; + parameter RX_EN_IDLE_RESET_FR_1 = "TRUE"; + parameter RX_EN_IDLE_RESET_PH_0 = "TRUE"; + parameter RX_EN_IDLE_RESET_PH_1 = "TRUE"; + parameter RX_EN_MODE_RESET_BUF_0 = "TRUE"; + parameter RX_EN_MODE_RESET_BUF_1 = "TRUE"; + parameter [3:0] RX_IDLE_HI_CNT_0 = 4'b1000; + parameter [3:0] RX_IDLE_HI_CNT_1 = 4'b1000; + parameter [3:0] RX_IDLE_LO_CNT_0 = 4'b0000; + parameter [3:0] RX_IDLE_LO_CNT_1 = 4'b0000; + parameter RX_LOSS_OF_SYNC_FSM_0 = "FALSE"; + parameter RX_LOSS_OF_SYNC_FSM_1 = "FALSE"; + parameter integer RX_LOS_INVALID_INCR_0 = 1; + parameter integer RX_LOS_INVALID_INCR_1 = 1; + parameter integer RX_LOS_THRESHOLD_0 = 4; + parameter integer RX_LOS_THRESHOLD_1 = 4; + parameter RX_SLIDE_MODE_0 = "PCS"; + parameter RX_SLIDE_MODE_1 = "PCS"; + parameter RX_STATUS_FMT_0 = "PCIE"; + parameter RX_STATUS_FMT_1 = "PCIE"; + parameter RX_XCLK_SEL_0 = "RXREC"; + parameter RX_XCLK_SEL_1 = "RXREC"; + parameter [2:0] SATA_BURST_VAL_0 = 3'b100; + parameter [2:0] SATA_BURST_VAL_1 = 3'b100; + parameter [2:0] SATA_IDLE_VAL_0 = 3'b011; + parameter [2:0] SATA_IDLE_VAL_1 = 3'b011; + parameter integer SATA_MAX_BURST_0 = 7; + parameter integer SATA_MAX_BURST_1 = 7; + parameter integer SATA_MAX_INIT_0 = 22; + parameter integer SATA_MAX_INIT_1 = 22; + parameter integer SATA_MAX_WAKE_0 = 7; + parameter integer SATA_MAX_WAKE_1 = 7; + parameter integer SATA_MIN_BURST_0 = 4; + parameter integer SATA_MIN_BURST_1 = 4; + parameter integer SATA_MIN_INIT_0 = 12; + parameter integer SATA_MIN_INIT_1 = 12; + parameter integer SATA_MIN_WAKE_0 = 4; + parameter integer SATA_MIN_WAKE_1 = 4; + parameter integer SIM_GTPRESET_SPEEDUP = 0; + parameter SIM_RECEIVER_DETECT_PASS = "FALSE"; + parameter [2:0] SIM_REFCLK0_SOURCE = 3'b000; + parameter [2:0] SIM_REFCLK1_SOURCE = 3'b000; + parameter SIM_TX_ELEC_IDLE_LEVEL = "X"; + parameter SIM_VERSION = "2.0"; + parameter [4:0] TERMINATION_CTRL_0 = 5'b10100; + parameter [4:0] TERMINATION_CTRL_1 = 5'b10100; + parameter TERMINATION_OVRD_0 = "FALSE"; + parameter TERMINATION_OVRD_1 = "FALSE"; + parameter [11:0] TRANS_TIME_FROM_P2_0 = 12'h03C; + parameter [11:0] TRANS_TIME_FROM_P2_1 = 12'h03C; + parameter [7:0] TRANS_TIME_NON_P2_0 = 8'h19; + parameter [7:0] TRANS_TIME_NON_P2_1 = 8'h19; + parameter [9:0] TRANS_TIME_TO_P2_0 = 10'h064; + parameter [9:0] TRANS_TIME_TO_P2_1 = 10'h064; + parameter [31:0] TST_ATTR_0 = 32'h00000000; + parameter [31:0] TST_ATTR_1 = 32'h00000000; + parameter [2:0] TXRX_INVERT_0 = 3'b011; + parameter [2:0] TXRX_INVERT_1 = 3'b011; + parameter TX_BUFFER_USE_0 = "FALSE"; + parameter TX_BUFFER_USE_1 = "FALSE"; + parameter [13:0] TX_DETECT_RX_CFG_0 = 14'h1832; + parameter [13:0] TX_DETECT_RX_CFG_1 = 14'h1832; + parameter [2:0] TX_IDLE_DELAY_0 = 3'b011; + parameter [2:0] TX_IDLE_DELAY_1 = 3'b011; + parameter [1:0] TX_TDCC_CFG_0 = 2'b00; + parameter [1:0] TX_TDCC_CFG_1 = 2'b00; + parameter TX_XCLK_SEL_0 = "TXUSR"; + parameter TX_XCLK_SEL_1 = "TXUSR"; + output DRDY; + output PHYSTATUS0; + output PHYSTATUS1; + output PLLLKDET0; + output PLLLKDET1; + output REFCLKOUT0; + output REFCLKOUT1; + output REFCLKPLL0; + output REFCLKPLL1; + output RESETDONE0; + output RESETDONE1; + output RXBYTEISALIGNED0; + output RXBYTEISALIGNED1; + output RXBYTEREALIGN0; + output RXBYTEREALIGN1; + output RXCHANBONDSEQ0; + output RXCHANBONDSEQ1; + output RXCHANISALIGNED0; + output RXCHANISALIGNED1; + output RXCHANREALIGN0; + output RXCHANREALIGN1; + output RXCOMMADET0; + output RXCOMMADET1; + output RXELECIDLE0; + output RXELECIDLE1; + output RXPRBSERR0; + output RXPRBSERR1; + output RXRECCLK0; + output RXRECCLK1; + output RXVALID0; + output RXVALID1; + output TXN0; + output TXN1; + output TXOUTCLK0; + output TXOUTCLK1; + output TXP0; + output TXP1; + output [15:0] DRPDO; + output [1:0] GTPCLKFBEAST; + output [1:0] GTPCLKFBWEST; + output [1:0] GTPCLKOUT0; + output [1:0] GTPCLKOUT1; + output [1:0] RXLOSSOFSYNC0; + output [1:0] RXLOSSOFSYNC1; + output [1:0] TXBUFSTATUS0; + output [1:0] TXBUFSTATUS1; + output [2:0] RXBUFSTATUS0; + output [2:0] RXBUFSTATUS1; + output [2:0] RXCHBONDO; + output [2:0] RXCLKCORCNT0; + output [2:0] RXCLKCORCNT1; + output [2:0] RXSTATUS0; + output [2:0] RXSTATUS1; + output [31:0] RXDATA0; + output [31:0] RXDATA1; + output [3:0] RXCHARISCOMMA0; + output [3:0] RXCHARISCOMMA1; + output [3:0] RXCHARISK0; + output [3:0] RXCHARISK1; + output [3:0] RXDISPERR0; + output [3:0] RXDISPERR1; + output [3:0] RXNOTINTABLE0; + output [3:0] RXNOTINTABLE1; + output [3:0] RXRUNDISP0; + output [3:0] RXRUNDISP1; + output [3:0] TXKERR0; + output [3:0] TXKERR1; + output [3:0] TXRUNDISP0; + output [3:0] TXRUNDISP1; + output [4:0] RCALOUTEAST; + output [4:0] RCALOUTWEST; + output [4:0] TSTOUT0; + output [4:0] TSTOUT1; + input CLK00; + input CLK01; + input CLK10; + input CLK11; + input CLKINEAST0; + input CLKINEAST1; + input CLKINWEST0; + input CLKINWEST1; + input DCLK; + input DEN; + input DWE; + input GATERXELECIDLE0; + input GATERXELECIDLE1; + input GCLK00; + input GCLK01; + input GCLK10; + input GCLK11; + input GTPRESET0; + input GTPRESET1; + input IGNORESIGDET0; + input IGNORESIGDET1; + input INTDATAWIDTH0; + input INTDATAWIDTH1; + input PLLCLK00; + input PLLCLK01; + input PLLCLK10; + input PLLCLK11; + input PLLLKDETEN0; + input PLLLKDETEN1; + input PLLPOWERDOWN0; + input PLLPOWERDOWN1; + input PRBSCNTRESET0; + input PRBSCNTRESET1; + input REFCLKPWRDNB0; + input REFCLKPWRDNB1; + input RXBUFRESET0; + input RXBUFRESET1; + input RXCDRRESET0; + input RXCDRRESET1; + input RXCHBONDMASTER0; + input RXCHBONDMASTER1; + input RXCHBONDSLAVE0; + input RXCHBONDSLAVE1; + input RXCOMMADETUSE0; + input RXCOMMADETUSE1; + input RXDEC8B10BUSE0; + input RXDEC8B10BUSE1; + input RXENCHANSYNC0; + input RXENCHANSYNC1; + input RXENMCOMMAALIGN0; + input RXENMCOMMAALIGN1; + input RXENPCOMMAALIGN0; + input RXENPCOMMAALIGN1; + input RXENPMAPHASEALIGN0; + input RXENPMAPHASEALIGN1; + input RXN0; + input RXN1; + input RXP0; + input RXP1; + input RXPMASETPHASE0; + input RXPMASETPHASE1; + input RXPOLARITY0; + input RXPOLARITY1; + input RXRESET0; + input RXRESET1; + input RXSLIDE0; + input RXSLIDE1; + input RXUSRCLK0; + input RXUSRCLK1; + input RXUSRCLK20; + input RXUSRCLK21; + input TSTCLK0; + input TSTCLK1; + input TXCOMSTART0; + input TXCOMSTART1; + input TXCOMTYPE0; + input TXCOMTYPE1; + input TXDETECTRX0; + input TXDETECTRX1; + input TXELECIDLE0; + input TXELECIDLE1; + input TXENC8B10BUSE0; + input TXENC8B10BUSE1; + input TXENPMAPHASEALIGN0; + input TXENPMAPHASEALIGN1; + input TXINHIBIT0; + input TXINHIBIT1; + input TXPDOWNASYNCH0; + input TXPDOWNASYNCH1; + input TXPMASETPHASE0; + input TXPMASETPHASE1; + input TXPOLARITY0; + input TXPOLARITY1; + input TXPRBSFORCEERR0; + input TXPRBSFORCEERR1; + input TXRESET0; + input TXRESET1; + input TXUSRCLK0; + input TXUSRCLK1; + input TXUSRCLK20; + input TXUSRCLK21; + input USRCODEERR0; + input USRCODEERR1; + input [11:0] TSTIN0; + input [11:0] TSTIN1; + input [15:0] DI; + input [1:0] GTPCLKFBSEL0EAST; + input [1:0] GTPCLKFBSEL0WEST; + input [1:0] GTPCLKFBSEL1EAST; + input [1:0] GTPCLKFBSEL1WEST; + input [1:0] RXDATAWIDTH0; + input [1:0] RXDATAWIDTH1; + input [1:0] RXEQMIX0; + input [1:0] RXEQMIX1; + input [1:0] RXPOWERDOWN0; + input [1:0] RXPOWERDOWN1; + input [1:0] TXDATAWIDTH0; + input [1:0] TXDATAWIDTH1; + input [1:0] TXPOWERDOWN0; + input [1:0] TXPOWERDOWN1; + input [2:0] LOOPBACK0; + input [2:0] LOOPBACK1; + input [2:0] REFSELDYPLL0; + input [2:0] REFSELDYPLL1; + input [2:0] RXCHBONDI; + input [2:0] RXENPRBSTST0; + input [2:0] RXENPRBSTST1; + input [2:0] TXBUFDIFFCTRL0; + input [2:0] TXBUFDIFFCTRL1; + input [2:0] TXENPRBSTST0; + input [2:0] TXENPRBSTST1; + input [2:0] TXPREEMPHASIS0; + input [2:0] TXPREEMPHASIS1; + input [31:0] TXDATA0; + input [31:0] TXDATA1; + input [3:0] TXBYPASS8B10B0; + input [3:0] TXBYPASS8B10B1; + input [3:0] TXCHARDISPMODE0; + input [3:0] TXCHARDISPMODE1; + input [3:0] TXCHARDISPVAL0; + input [3:0] TXCHARDISPVAL1; + input [3:0] TXCHARISK0; + input [3:0] TXCHARISK1; + input [3:0] TXDIFFCTRL0; + input [3:0] TXDIFFCTRL1; + input [4:0] RCALINEAST; + input [4:0] RCALINWEST; + input [7:0] DADDR; + input [7:0] GTPTEST0; + input [7:0] GTPTEST1; +endmodule + +module GT11_CUSTOM (...); + parameter ALIGN_COMMA_WORD = 1; + parameter BANDGAPSEL = "FALSE"; + parameter BIASRESSEL = "TRUE"; + parameter CCCB_ARBITRATOR_DISABLE = "FALSE"; + parameter CHAN_BOND_LIMIT = 16; + parameter CHAN_BOND_MODE = "NONE"; + parameter CHAN_BOND_ONE_SHOT = "FALSE"; + parameter CHAN_BOND_SEQ_1_1 = 11'b00000000000; + parameter CHAN_BOND_SEQ_1_2 = 11'b00000000000; + parameter CHAN_BOND_SEQ_1_3 = 11'b00000000000; + parameter CHAN_BOND_SEQ_1_4 = 11'b00000000000; + parameter CHAN_BOND_SEQ_1_MASK = 4'b0000; + parameter CHAN_BOND_SEQ_2_1 = 11'b00000000000; + parameter CHAN_BOND_SEQ_2_2 = 11'b00000000000; + parameter CHAN_BOND_SEQ_2_3 = 11'b00000000000; + parameter CHAN_BOND_SEQ_2_4 = 11'b00000000000; + parameter CHAN_BOND_SEQ_2_MASK = 4'b0000; + parameter CHAN_BOND_SEQ_2_USE = "FALSE"; + parameter CHAN_BOND_SEQ_LEN = 1; + parameter CLK_CORRECT_USE = "TRUE"; + parameter CLK_COR_8B10B_DE = "FALSE"; + parameter CLK_COR_MAX_LAT = 36; + parameter CLK_COR_MIN_LAT = 28; + parameter CLK_COR_SEQ_1_1 = 11'b00000000000; + parameter CLK_COR_SEQ_1_2 = 11'b00000000000; + parameter CLK_COR_SEQ_1_3 = 11'b00000000000; + parameter CLK_COR_SEQ_1_4 = 11'b00000000000; + parameter CLK_COR_SEQ_1_MASK = 4'b0000; + parameter CLK_COR_SEQ_2_1 = 11'b00000000000; + parameter CLK_COR_SEQ_2_2 = 11'b00000000000; + parameter CLK_COR_SEQ_2_3 = 11'b00000000000; + parameter CLK_COR_SEQ_2_4 = 11'b00000000000; + parameter CLK_COR_SEQ_2_MASK = 4'b0000; + parameter CLK_COR_SEQ_2_USE = "FALSE"; + parameter CLK_COR_SEQ_DROP = "FALSE"; + parameter CLK_COR_SEQ_LEN = 1; + parameter COMMA32 = "FALSE"; + parameter COMMA_10B_MASK = 10'h3FF; + parameter CYCLE_LIMIT_SEL = 2'b00; + parameter DCDR_FILTER = 3'b010; + parameter DEC_MCOMMA_DETECT = "TRUE"; + parameter DEC_PCOMMA_DETECT = "TRUE"; + parameter DEC_VALID_COMMA_ONLY = "TRUE"; + parameter DIGRX_FWDCLK = 2'b00; + parameter DIGRX_SYNC_MODE = "FALSE"; + parameter ENABLE_DCDR = "FALSE"; + parameter FDET_HYS_CAL = 3'b110; + parameter FDET_HYS_SEL = 3'b110; + parameter FDET_LCK_CAL = 3'b101; + parameter FDET_LCK_SEL = 3'b101; + parameter GT11_MODE = "SINGLE"; + parameter IREFBIASMODE = 2'b11; + parameter LOOPCAL_WAIT = 2'b00; + parameter MCOMMA_32B_VALUE = 32'h000000F6; + parameter MCOMMA_DETECT = "TRUE"; + parameter OPPOSITE_SELECT = "FALSE"; + parameter PCOMMA_32B_VALUE = 32'hF6F62828; + parameter PCOMMA_DETECT = "TRUE"; + parameter PCS_BIT_SLIP = "FALSE"; + parameter PMACLKENABLE = "TRUE"; + parameter PMACOREPWRENABLE = "TRUE"; + parameter PMAIREFTRIM = 4'b0111; + parameter PMAVBGCTRL = 5'b00000; + parameter PMAVREFTRIM = 4'b0111; + parameter PMA_BIT_SLIP = "FALSE"; + parameter REPEATER = "FALSE"; + parameter RXACTST = "FALSE"; + parameter RXAFEEQ = 9'b000000000; + parameter RXAFEPD = "FALSE"; + parameter RXAFETST = "FALSE"; + parameter RXAPD = "FALSE"; + parameter RXASYNCDIVIDE = 2'b11; + parameter RXBY_32 = "TRUE"; + parameter RXCDRLOS = 6'b000000; + parameter RXCLK0_FORCE_PMACLK = "FALSE"; + parameter RXCLKMODE = 6'b110001; + parameter RXCMADJ = 2'b10; + parameter RXCPSEL = "TRUE"; + parameter RXCPTST = "FALSE"; + parameter RXCRCCLOCKDOUBLE = "FALSE"; + parameter RXCRCENABLE = "FALSE"; + parameter RXCRCINITVAL = 32'h00000000; + parameter RXCRCINVERTGEN = "FALSE"; + parameter RXCRCSAMECLOCK = "FALSE"; + parameter RXCTRL1 = 10'h200; + parameter RXCYCLE_LIMIT_SEL = 2'b00; + parameter RXDATA_SEL = 2'b00; + parameter RXDCCOUPLE = "FALSE"; + parameter RXDIGRESET = "FALSE"; + parameter RXDIGRX = "FALSE"; + parameter RXEQ = 64'h4000000000000000; + parameter RXFDCAL_CLOCK_DIVIDE = "NONE"; + parameter RXFDET_HYS_CAL = 3'b110; + parameter RXFDET_HYS_SEL = 3'b110; + parameter RXFDET_LCK_CAL = 3'b101; + parameter RXFDET_LCK_SEL = 3'b101; + parameter RXFECONTROL1 = 2'b00; + parameter RXFECONTROL2 = 3'b000; + parameter RXFETUNE = 2'b01; + parameter RXLB = "FALSE"; + parameter RXLKADJ = 5'b00000; + parameter RXLKAPD = "FALSE"; + parameter RXLOOPCAL_WAIT = 2'b00; + parameter RXLOOPFILT = 4'b0111; + parameter RXOUTDIV2SEL = 1; + parameter RXPD = "FALSE"; + parameter RXPDDTST = "FALSE"; + parameter RXPLLNDIVSEL = 8; + parameter RXPMACLKSEL = "REFCLK1"; + parameter RXRCPADJ = 3'b011; + parameter RXRCPPD = "FALSE"; + parameter RXRECCLK1_USE_SYNC = "FALSE"; + parameter RXRIBADJ = 2'b11; + parameter RXRPDPD = "FALSE"; + parameter RXRSDPD = "FALSE"; + parameter RXSLOWDOWN_CAL = 2'b00; + parameter RXUSRDIVISOR = 1; + parameter RXVCODAC_INIT = 10'b1010000000; + parameter RXVCO_CTRL_ENABLE = "TRUE"; + parameter RX_BUFFER_USE = "TRUE"; + parameter RX_CLOCK_DIVIDER = 2'b00; + parameter RX_LOS_INVALID_INCR = 1; + parameter RX_LOS_THRESHOLD = 4; + parameter SAMPLE_8X = "FALSE"; + parameter SH_CNT_MAX = 64; + parameter SH_INVALID_CNT_MAX = 16; + parameter SLOWDOWN_CAL = 2'b00; + parameter TXABPMACLKSEL = "REFCLK1"; + parameter TXAPD = "FALSE"; + parameter TXAREFBIASSEL = "FALSE"; + parameter TXASYNCDIVIDE = 2'b11; + parameter TXCLK0_FORCE_PMACLK = "FALSE"; + parameter TXCLKMODE = 4'b1001; + parameter TXCPSEL = "TRUE"; + parameter TXCRCCLOCKDOUBLE = "FALSE"; + parameter TXCRCENABLE = "FALSE"; + parameter TXCRCINITVAL = 32'h00000000; + parameter TXCRCINVERTGEN = "FALSE"; + parameter TXCRCSAMECLOCK = "FALSE"; + parameter TXCTRL1 = 10'h200; + parameter TXDATA_SEL = 2'b00; + parameter TXDAT_PRDRV_DAC = 3'b111; + parameter TXDAT_TAP_DAC = 5'b10110; + parameter TXDIGPD = "FALSE"; + parameter TXFDCAL_CLOCK_DIVIDE = "NONE"; + parameter TXHIGHSIGNALEN = "TRUE"; + parameter TXLOOPFILT = 4'b0111; + parameter TXLVLSHFTPD = "FALSE"; + parameter TXOUTCLK1_USE_SYNC = "FALSE"; + parameter TXOUTDIV2SEL = 1; + parameter TXPD = "FALSE"; + parameter TXPHASESEL = "FALSE"; + parameter TXPLLNDIVSEL = 8; + parameter TXPOST_PRDRV_DAC = 3'b111; + parameter TXPOST_TAP_DAC = 5'b01110; + parameter TXPOST_TAP_PD = "TRUE"; + parameter TXPRE_PRDRV_DAC = 3'b111; + parameter TXPRE_TAP_DAC = 5'b00000; + parameter TXPRE_TAP_PD = "TRUE"; + parameter TXSLEWRATE = "FALSE"; + parameter TXTERMTRIM = 4'b1100; + parameter TX_BUFFER_USE = "TRUE"; + parameter TX_CLOCK_DIVIDER = 2'b00; + parameter VCODAC_INIT = 10'b1010000000; + parameter VCO_CTRL_ENABLE = "TRUE"; + parameter VREFBIASMODE = 2'b11; + output DRDY; + output RXBUFERR; + output RXCALFAIL; + output RXCOMMADET; + output RXCYCLELIMIT; + output RXLOCK; + output RXMCLK; + output RXPCSHCLKOUT; + output RXREALIGN; + output RXRECCLK1; + output RXRECCLK2; + output RXSIGDET; + output TX1N; + output TX1P; + output TXBUFERR; + output TXCALFAIL; + output TXCYCLELIMIT; + output TXLOCK; + output TXOUTCLK1; + output TXOUTCLK2; + output TXPCSHCLKOUT; + output [15:0] DO; + output [1:0] RXLOSSOFSYNC; + output [31:0] RXCRCOUT; + output [31:0] TXCRCOUT; + output [4:0] CHBONDO; + output [5:0] RXSTATUS; + output [63:0] RXDATA; + output [7:0] RXCHARISCOMMA; + output [7:0] RXCHARISK; + output [7:0] RXDISPERR; + output [7:0] RXNOTINTABLE; + output [7:0] RXRUNDISP; + output [7:0] TXKERR; + output [7:0] TXRUNDISP; + input DCLK; + input DEN; + input DWE; + input ENCHANSYNC; + input ENMCOMMAALIGN; + input ENPCOMMAALIGN; + input GREFCLK; + input POWERDOWN; + input REFCLK1; + input REFCLK2; + input RX1N; + input RX1P; + input RXBLOCKSYNC64B66BUSE; + input RXCLKSTABLE; + input RXCOMMADETUSE; + input RXCRCCLK; + input RXCRCDATAVALID; + input RXCRCINIT; + input RXCRCINTCLK; + input RXCRCPD; + input RXCRCRESET; + input RXDEC64B66BUSE; + input RXDEC8B10BUSE; + input RXDESCRAM64B66BUSE; + input RXIGNOREBTF; + input RXPMARESET; + input RXPOLARITY; + input RXRESET; + input RXSLIDE; + input RXSYNC; + input RXUSRCLK2; + input RXUSRCLK; + input TXCLKSTABLE; + input TXCRCCLK; + input TXCRCDATAVALID; + input TXCRCINIT; + input TXCRCINTCLK; + input TXCRCPD; + input TXCRCRESET; + input TXENC64B66BUSE; + input TXENC8B10BUSE; + input TXENOOB; + input TXGEARBOX64B66BUSE; + input TXINHIBIT; + input TXPMARESET; + input TXPOLARITY; + input TXRESET; + input TXSCRAM64B66BUSE; + input TXSYNC; + input TXUSRCLK2; + input TXUSRCLK; + input [15:0] DI; + input [1:0] LOOPBACK; + input [1:0] RXDATAWIDTH; + input [1:0] RXINTDATAWIDTH; + input [1:0] TXDATAWIDTH; + input [1:0] TXINTDATAWIDTH; + input [2:0] RXCRCDATAWIDTH; + input [2:0] TXCRCDATAWIDTH; + input [4:0] CHBONDI; + input [63:0] RXCRCIN; + input [63:0] TXCRCIN; + input [63:0] TXDATA; + input [7:0] DADDR; + input [7:0] TXBYPASS8B10B; + input [7:0] TXCHARDISPMODE; + input [7:0] TXCHARDISPVAL; + input [7:0] TXCHARISK; +endmodule + +module GT11_DUAL (...); + parameter ALIGN_COMMA_WORD_A = 1; + parameter ALIGN_COMMA_WORD_B = 1; + parameter BANDGAPSEL_A = "FALSE"; + parameter BANDGAPSEL_B = "FALSE"; + parameter BIASRESSEL_A = "TRUE"; + parameter BIASRESSEL_B = "TRUE"; + parameter CCCB_ARBITRATOR_DISABLE_A = "FALSE"; + parameter CCCB_ARBITRATOR_DISABLE_B = "FALSE"; + parameter CHAN_BOND_LIMIT_A = 16; + parameter CHAN_BOND_LIMIT_B = 16; + parameter CHAN_BOND_MODE_A = "NONE"; + parameter CHAN_BOND_MODE_B = "NONE"; + parameter CHAN_BOND_ONE_SHOT_A = "FALSE"; + parameter CHAN_BOND_ONE_SHOT_B = "FALSE"; + parameter CHAN_BOND_SEQ_1_1_A = 11'b00000000000; + parameter CHAN_BOND_SEQ_1_1_B = 11'b00000000000; + parameter CHAN_BOND_SEQ_1_2_A = 11'b00000000000; + parameter CHAN_BOND_SEQ_1_2_B = 11'b00000000000; + parameter CHAN_BOND_SEQ_1_3_A = 11'b00000000000; + parameter CHAN_BOND_SEQ_1_3_B = 11'b00000000000; + parameter CHAN_BOND_SEQ_1_4_A = 11'b00000000000; + parameter CHAN_BOND_SEQ_1_4_B = 11'b00000000000; + parameter CHAN_BOND_SEQ_1_MASK_A = 4'b0000; + parameter CHAN_BOND_SEQ_1_MASK_B = 4'b0000; + parameter CHAN_BOND_SEQ_2_1_A = 11'b00000000000; + parameter CHAN_BOND_SEQ_2_1_B = 11'b00000000000; + parameter CHAN_BOND_SEQ_2_2_A = 11'b00000000000; + parameter CHAN_BOND_SEQ_2_2_B = 11'b00000000000; + parameter CHAN_BOND_SEQ_2_3_A = 11'b00000000000; + parameter CHAN_BOND_SEQ_2_3_B = 11'b00000000000; + parameter CHAN_BOND_SEQ_2_4_A = 11'b00000000000; + parameter CHAN_BOND_SEQ_2_4_B = 11'b00000000000; + parameter CHAN_BOND_SEQ_2_MASK_A = 4'b0000; + parameter CHAN_BOND_SEQ_2_MASK_B = 4'b0000; + parameter CHAN_BOND_SEQ_2_USE_A = "FALSE"; + parameter CHAN_BOND_SEQ_2_USE_B = "FALSE"; + parameter CHAN_BOND_SEQ_LEN_A = 1; + parameter CHAN_BOND_SEQ_LEN_B = 1; + parameter CLK_CORRECT_USE_A = "TRUE"; + parameter CLK_CORRECT_USE_B = "TRUE"; + parameter CLK_COR_8B10B_DE_A = "FALSE"; + parameter CLK_COR_8B10B_DE_B = "FALSE"; + parameter CLK_COR_MAX_LAT_A = 36; + parameter CLK_COR_MAX_LAT_B = 36; + parameter CLK_COR_MIN_LAT_A = 28; + parameter CLK_COR_MIN_LAT_B = 28; + parameter CLK_COR_SEQ_1_1_A = 11'b00000000000; + parameter CLK_COR_SEQ_1_1_B = 11'b00000000000; + parameter CLK_COR_SEQ_1_2_A = 11'b00000000000; + parameter CLK_COR_SEQ_1_2_B = 11'b00000000000; + parameter CLK_COR_SEQ_1_3_A = 11'b00000000000; + parameter CLK_COR_SEQ_1_3_B = 11'b00000000000; + parameter CLK_COR_SEQ_1_4_A = 11'b00000000000; + parameter CLK_COR_SEQ_1_4_B = 11'b00000000000; + parameter CLK_COR_SEQ_1_MASK_A = 4'b0000; + parameter CLK_COR_SEQ_1_MASK_B = 4'b0000; + parameter CLK_COR_SEQ_2_1_A = 11'b00000000000; + parameter CLK_COR_SEQ_2_1_B = 11'b00000000000; + parameter CLK_COR_SEQ_2_2_A = 11'b00000000000; + parameter CLK_COR_SEQ_2_2_B = 11'b00000000000; + parameter CLK_COR_SEQ_2_3_A = 11'b00000000000; + parameter CLK_COR_SEQ_2_3_B = 11'b00000000000; + parameter CLK_COR_SEQ_2_4_A = 11'b00000000000; + parameter CLK_COR_SEQ_2_4_B = 11'b00000000000; + parameter CLK_COR_SEQ_2_MASK_A = 4'b0000; + parameter CLK_COR_SEQ_2_MASK_B = 4'b0000; + parameter CLK_COR_SEQ_2_USE_A = "FALSE"; + parameter CLK_COR_SEQ_2_USE_B = "FALSE"; + parameter CLK_COR_SEQ_DROP_A = "FALSE"; + parameter CLK_COR_SEQ_DROP_B = "FALSE"; + parameter CLK_COR_SEQ_LEN_A = 1; + parameter CLK_COR_SEQ_LEN_B = 1; + parameter COMMA32_A = "FALSE"; + parameter COMMA32_B = "FALSE"; + parameter COMMA_10B_MASK_A = 10'h3FF; + parameter COMMA_10B_MASK_B = 10'h3FF; + parameter CYCLE_LIMIT_SEL_A = 2'b00; + parameter CYCLE_LIMIT_SEL_B = 2'b00; + parameter DCDR_FILTER_A = 3'b010; + parameter DCDR_FILTER_B = 3'b010; + parameter DEC_MCOMMA_DETECT_A = "TRUE"; + parameter DEC_MCOMMA_DETECT_B = "TRUE"; + parameter DEC_PCOMMA_DETECT_A = "TRUE"; + parameter DEC_PCOMMA_DETECT_B = "TRUE"; + parameter DEC_VALID_COMMA_ONLY_A = "TRUE"; + parameter DEC_VALID_COMMA_ONLY_B = "TRUE"; + parameter DIGRX_FWDCLK_A = 2'b00; + parameter DIGRX_FWDCLK_B = 2'b00; + parameter DIGRX_SYNC_MODE_A = "FALSE"; + parameter DIGRX_SYNC_MODE_B = "FALSE"; + parameter ENABLE_DCDR_A = "FALSE"; + parameter ENABLE_DCDR_B = "FALSE"; + parameter FDET_HYS_CAL_A = 3'b110; + parameter FDET_HYS_CAL_B = 3'b110; + parameter FDET_HYS_SEL_A = 3'b110; + parameter FDET_HYS_SEL_B = 3'b110; + parameter FDET_LCK_CAL_A = 3'b101; + parameter FDET_LCK_CAL_B = 3'b101; + parameter FDET_LCK_SEL_A = 3'b101; + parameter FDET_LCK_SEL_B = 3'b101; + parameter IREFBIASMODE_A = 2'b11; + parameter IREFBIASMODE_B = 2'b11; + parameter LOOPCAL_WAIT_A = 2'b00; + parameter LOOPCAL_WAIT_B = 2'b00; + parameter MCOMMA_32B_VALUE_A = 32'hA1A1A2A2; + parameter MCOMMA_32B_VALUE_B = 32'hA1A1A2A2; + parameter MCOMMA_DETECT_A = "TRUE"; + parameter MCOMMA_DETECT_B = "TRUE"; + parameter OPPOSITE_SELECT_A = "FALSE"; + parameter OPPOSITE_SELECT_B = "FALSE"; + parameter PCOMMA_32B_VALUE_A = 32'hA1A1A2A2; + parameter PCOMMA_32B_VALUE_B = 32'hA1A1A2A2; + parameter PCOMMA_DETECT_A = "TRUE"; + parameter PCOMMA_DETECT_B = "TRUE"; + parameter PCS_BIT_SLIP_A = "FALSE"; + parameter PCS_BIT_SLIP_B = "FALSE"; + parameter PMACLKENABLE_A = "TRUE"; + parameter PMACLKENABLE_B = "TRUE"; + parameter PMACOREPWRENABLE_A = "TRUE"; + parameter PMACOREPWRENABLE_B = "TRUE"; + parameter PMAIREFTRIM_A = 4'b0111; + parameter PMAIREFTRIM_B = 4'b0111; + parameter PMAVBGCTRL_A = 5'b00000; + parameter PMAVBGCTRL_B = 5'b00000; + parameter PMAVREFTRIM_A = 4'b0111; + parameter PMAVREFTRIM_B = 4'b0111; + parameter PMA_BIT_SLIP_A = "FALSE"; + parameter PMA_BIT_SLIP_B = "FALSE"; + parameter POWER_ENABLE_A = "TRUE"; + parameter POWER_ENABLE_B = "TRUE"; + parameter REPEATER_A = "FALSE"; + parameter REPEATER_B = "FALSE"; + parameter RXACTST_A = "FALSE"; + parameter RXACTST_B = "FALSE"; + parameter RXAFEEQ_A = 9'b000000000; + parameter RXAFEEQ_B = 9'b000000000; + parameter RXAFEPD_A = "FALSE"; + parameter RXAFEPD_B = "FALSE"; + parameter RXAFETST_A = "FALSE"; + parameter RXAFETST_B = "FALSE"; + parameter RXAPD_A = "FALSE"; + parameter RXAPD_B = "FALSE"; + parameter RXASYNCDIVIDE_A = 2'b00; + parameter RXASYNCDIVIDE_B = 2'b00; + parameter RXBY_32_A = "TRUE"; + parameter RXBY_32_B = "TRUE"; + parameter RXCDRLOS_A = 6'b000000; + parameter RXCDRLOS_B = 6'b000000; + parameter RXCLK0_FORCE_PMACLK_A = "FALSE"; + parameter RXCLK0_FORCE_PMACLK_B = "FALSE"; + parameter RXCLKMODE_A = 6'b110001; + parameter RXCLKMODE_B = 6'b110001; + parameter RXCMADJ_A = 2'b10; + parameter RXCMADJ_B = 2'b10; + parameter RXCPSEL_A = "TRUE"; + parameter RXCPSEL_B = "TRUE"; + parameter RXCPTST_A = "FALSE"; + parameter RXCPTST_B = "FALSE"; + parameter RXCRCCLOCKDOUBLE_A = "FALSE"; + parameter RXCRCCLOCKDOUBLE_B = "FALSE"; + parameter RXCRCENABLE_A = "FALSE"; + parameter RXCRCENABLE_B = "FALSE"; + parameter RXCRCINITVAL_A = 32'h00000000; + parameter RXCRCINITVAL_B = 32'h00000000; + parameter RXCRCINVERTGEN_A = "FALSE"; + parameter RXCRCINVERTGEN_B = "FALSE"; + parameter RXCRCSAMECLOCK_A = "FALSE"; + parameter RXCRCSAMECLOCK_B = "FALSE"; + parameter RXCTRL1_A = 10'h006; + parameter RXCTRL1_B = 10'h006; + parameter RXCYCLE_LIMIT_SEL_A = 2'b00; + parameter RXCYCLE_LIMIT_SEL_B = 2'b00; + parameter RXDATA_SEL_A = 2'b00; + parameter RXDATA_SEL_B = 2'b00; + parameter RXDCCOUPLE_A = "FALSE"; + parameter RXDCCOUPLE_B = "FALSE"; + parameter RXDIGRESET_A = "FALSE"; + parameter RXDIGRESET_B = "FALSE"; + parameter RXDIGRX_A = "FALSE"; + parameter RXDIGRX_B = "FALSE"; + parameter RXEQ_A = 64'h4000000000000000; + parameter RXEQ_B = 64'h4000000000000000; + parameter RXFDCAL_CLOCK_DIVIDE_A = "NONE"; + parameter RXFDCAL_CLOCK_DIVIDE_B = "NONE"; + parameter RXFDET_HYS_CAL_A = 3'b110; + parameter RXFDET_HYS_CAL_B = 3'b110; + parameter RXFDET_HYS_SEL_A = 3'b110; + parameter RXFDET_HYS_SEL_B = 3'b110; + parameter RXFDET_LCK_CAL_A = 3'b101; + parameter RXFDET_LCK_CAL_B = 3'b101; + parameter RXFDET_LCK_SEL_A = 3'b101; + parameter RXFDET_LCK_SEL_B = 3'b101; + parameter RXFECONTROL1_A = 2'b00; + parameter RXFECONTROL1_B = 2'b00; + parameter RXFECONTROL2_A = 3'b000; + parameter RXFECONTROL2_B = 3'b000; + parameter RXFETUNE_A = 2'b01; + parameter RXFETUNE_B = 2'b01; + parameter RXLB_A = "FALSE"; + parameter RXLB_B = "FALSE"; + parameter RXLKADJ_A = 5'b00000; + parameter RXLKADJ_B = 5'b00000; + parameter RXLKAPD_A = "FALSE"; + parameter RXLKAPD_B = "FALSE"; + parameter RXLOOPCAL_WAIT_A = 2'b00; + parameter RXLOOPCAL_WAIT_B = 2'b00; + parameter RXLOOPFILT_A = 4'b0111; + parameter RXLOOPFILT_B = 4'b0111; + parameter RXOUTDIV2SEL_A = 1; + parameter RXOUTDIV2SEL_B = 1; + parameter RXPDDTST_A = "FALSE"; + parameter RXPDDTST_B = "FALSE"; + parameter RXPD_A = "FALSE"; + parameter RXPD_B = "FALSE"; + parameter RXPLLNDIVSEL_A = 8; + parameter RXPLLNDIVSEL_B = 8; + parameter RXPMACLKSEL_A = "REFCLK1"; + parameter RXPMACLKSEL_B = "REFCLK1"; + parameter RXRCPADJ_A = 3'b011; + parameter RXRCPADJ_B = 3'b011; + parameter RXRCPPD_A = "FALSE"; + parameter RXRCPPD_B = "FALSE"; + parameter RXRECCLK1_USE_SYNC_A = "FALSE"; + parameter RXRECCLK1_USE_SYNC_B = "FALSE"; + parameter RXRIBADJ_A = 2'b11; + parameter RXRIBADJ_B = 2'b11; + parameter RXRPDPD_A = "FALSE"; + parameter RXRPDPD_B = "FALSE"; + parameter RXRSDPD_A = "FALSE"; + parameter RXRSDPD_B = "FALSE"; + parameter RXSLOWDOWN_CAL_A = 2'b00; + parameter RXSLOWDOWN_CAL_B = 2'b00; + parameter RXUSRDIVISOR_A = 1; + parameter RXUSRDIVISOR_B = 1; + parameter RXVCODAC_INIT_A = 10'b1010000000; + parameter RXVCODAC_INIT_B = 10'b1010000000; + parameter RXVCO_CTRL_ENABLE_A = "TRUE"; + parameter RXVCO_CTRL_ENABLE_B = "TRUE"; + parameter RX_BUFFER_USE_A = "TRUE"; + parameter RX_BUFFER_USE_B = "TRUE"; + parameter RX_CLOCK_DIVIDER_A = 2'b00; + parameter RX_CLOCK_DIVIDER_B = 2'b00; + parameter RX_LOS_INVALID_INCR_A = 1; + parameter RX_LOS_INVALID_INCR_B = 1; + parameter RX_LOS_THRESHOLD_A = 4; + parameter RX_LOS_THRESHOLD_B = 4; + parameter SAMPLE_8X_A = "FALSE"; + parameter SAMPLE_8X_B = "FALSE"; + parameter SH_CNT_MAX_A = 64; + parameter SH_CNT_MAX_B = 64; + parameter SH_INVALID_CNT_MAX_A = 16; + parameter SH_INVALID_CNT_MAX_B = 16; + parameter SLOWDOWN_CAL_A = 2'b00; + parameter SLOWDOWN_CAL_B = 2'b00; + parameter TXABPMACLKSEL_A = "REFCLK1"; + parameter TXABPMACLKSEL_B = "REFCLK1"; + parameter TXAPD_A = "FALSE"; + parameter TXAPD_B = "FALSE"; + parameter TXAREFBIASSEL_A = "FALSE"; + parameter TXAREFBIASSEL_B = "FALSE"; + parameter TXASYNCDIVIDE_A = 2'b00; + parameter TXASYNCDIVIDE_B = 2'b00; + parameter TXCLK0_FORCE_PMACLK_A = "FALSE"; + parameter TXCLK0_FORCE_PMACLK_B = "FALSE"; + parameter TXCLKMODE_A = 4'b1001; + parameter TXCLKMODE_B = 4'b1001; + parameter TXCPSEL_A = "TRUE"; + parameter TXCPSEL_B = "TRUE"; + parameter TXCRCCLOCKDOUBLE_A = "FALSE"; + parameter TXCRCCLOCKDOUBLE_B = "FALSE"; + parameter TXCRCENABLE_A = "FALSE"; + parameter TXCRCENABLE_B = "FALSE"; + parameter TXCRCINITVAL_A = 32'h00000000; + parameter TXCRCINITVAL_B = 32'h00000000; + parameter TXCRCINVERTGEN_A = "FALSE"; + parameter TXCRCINVERTGEN_B = "FALSE"; + parameter TXCRCSAMECLOCK_A = "FALSE"; + parameter TXCRCSAMECLOCK_B = "FALSE"; + parameter TXCTRL1_A = 10'h006; + parameter TXCTRL1_B = 10'h006; + parameter TXDATA_SEL_A = 2'b00; + parameter TXDATA_SEL_B = 2'b00; + parameter TXDAT_PRDRV_DAC_A = 3'b111; + parameter TXDAT_PRDRV_DAC_B = 3'b111; + parameter TXDAT_TAP_DAC_A = 5'b10110; + parameter TXDAT_TAP_DAC_B = 5'b10110; + parameter TXDIGPD_A = "FALSE"; + parameter TXDIGPD_B = "FALSE"; + parameter TXFDCAL_CLOCK_DIVIDE_A = "NONE"; + parameter TXFDCAL_CLOCK_DIVIDE_B = "NONE"; + parameter TXHIGHSIGNALEN_A = "TRUE"; + parameter TXHIGHSIGNALEN_B = "TRUE"; + parameter TXLOOPFILT_A = 4'b0111; + parameter TXLOOPFILT_B = 4'b0111; + parameter TXLVLSHFTPD_A = "FALSE"; + parameter TXLVLSHFTPD_B = "FALSE"; + parameter TXOUTCLK1_USE_SYNC_A = "FALSE"; + parameter TXOUTCLK1_USE_SYNC_B = "FALSE"; + parameter TXOUTDIV2SEL_A = 1; + parameter TXOUTDIV2SEL_B = 1; + parameter TXPD_A = "FALSE"; + parameter TXPD_B = "FALSE"; + parameter TXPHASESEL_A = "FALSE"; + parameter TXPHASESEL_B = "FALSE"; + parameter TXPLLNDIVSEL_A = 8; + parameter TXPLLNDIVSEL_B = 8; + parameter TXPOST_PRDRV_DAC_A = 3'b111; + parameter TXPOST_PRDRV_DAC_B = 3'b111; + parameter TXPOST_TAP_DAC_A = 5'b01110; + parameter TXPOST_TAP_DAC_B = 5'b01110; + parameter TXPOST_TAP_PD_A = "TRUE"; + parameter TXPOST_TAP_PD_B = "TRUE"; + parameter TXPRE_PRDRV_DAC_A = 3'b111; + parameter TXPRE_PRDRV_DAC_B = 3'b111; + parameter TXPRE_TAP_DAC_A = 5'b00000; + parameter TXPRE_TAP_DAC_B = 5'b00000; + parameter TXPRE_TAP_PD_A = "TRUE"; + parameter TXPRE_TAP_PD_B = "TRUE"; + parameter TXSLEWRATE_A = "FALSE"; + parameter TXSLEWRATE_B = "FALSE"; + parameter TXTERMTRIM_A = 4'b1100; + parameter TXTERMTRIM_B = 4'b1100; + parameter TX_BUFFER_USE_A = "TRUE"; + parameter TX_BUFFER_USE_B = "TRUE"; + parameter TX_CLOCK_DIVIDER_A = 2'b00; + parameter TX_CLOCK_DIVIDER_B = 2'b00; + parameter VCODAC_INIT_A = 10'b1010000000; + parameter VCODAC_INIT_B = 10'b1010000000; + parameter VCO_CTRL_ENABLE_A = "TRUE"; + parameter VCO_CTRL_ENABLE_B = "TRUE"; + parameter VREFBIASMODE_A = 2'b11; + parameter VREFBIASMODE_B = 2'b11; + output DRDYA; + output DRDYB; + output RXBUFERRA; + output RXBUFERRB; + output RXCALFAILA; + output RXCALFAILB; + output RXCOMMADETA; + output RXCOMMADETB; + output RXCYCLELIMITA; + output RXCYCLELIMITB; + output RXLOCKA; + output RXLOCKB; + output RXMCLKA; + output RXMCLKB; + output RXPCSHCLKOUTA; + output RXPCSHCLKOUTB; + output RXREALIGNA; + output RXREALIGNB; + output RXRECCLK1A; + output RXRECCLK1B; + output RXRECCLK2A; + output RXRECCLK2B; + output RXSIGDETA; + output RXSIGDETB; + output TX1NA; + output TX1NB; + output TX1PA; + output TX1PB; + output TXBUFERRA; + output TXBUFERRB; + output TXCALFAILA; + output TXCALFAILB; + output TXCYCLELIMITA; + output TXCYCLELIMITB; + output TXLOCKA; + output TXLOCKB; + output TXOUTCLK1A; + output TXOUTCLK1B; + output TXOUTCLK2A; + output TXOUTCLK2B; + output TXPCSHCLKOUTA; + output TXPCSHCLKOUTB; + output [15:0] DOA; + output [15:0] DOB; + output [1:0] RXLOSSOFSYNCA; + output [1:0] RXLOSSOFSYNCB; + output [31:0] RXCRCOUTA; + output [31:0] RXCRCOUTB; + output [31:0] TXCRCOUTA; + output [31:0] TXCRCOUTB; + output [4:0] CHBONDOA; + output [4:0] CHBONDOB; + output [5:0] RXSTATUSA; + output [5:0] RXSTATUSB; + output [63:0] RXDATAA; + output [63:0] RXDATAB; + output [7:0] RXCHARISCOMMAA; + output [7:0] RXCHARISCOMMAB; + output [7:0] RXCHARISKA; + output [7:0] RXCHARISKB; + output [7:0] RXDISPERRA; + output [7:0] RXDISPERRB; + output [7:0] RXNOTINTABLEA; + output [7:0] RXNOTINTABLEB; + output [7:0] RXRUNDISPA; + output [7:0] RXRUNDISPB; + output [7:0] TXKERRA; + output [7:0] TXKERRB; + output [7:0] TXRUNDISPA; + output [7:0] TXRUNDISPB; + input DCLKA; + input DCLKB; + input DENA; + input DENB; + input DWEA; + input DWEB; + input ENCHANSYNCA; + input ENCHANSYNCB; + input ENMCOMMAALIGNA; + input ENMCOMMAALIGNB; + input ENPCOMMAALIGNA; + input ENPCOMMAALIGNB; + input GREFCLKA; + input GREFCLKB; + input POWERDOWNA; + input POWERDOWNB; + input REFCLK1A; + input REFCLK1B; + input REFCLK2A; + input REFCLK2B; + input RX1NA; + input RX1NB; + input RX1PA; + input RX1PB; + input RXBLOCKSYNC64B66BUSEA; + input RXBLOCKSYNC64B66BUSEB; + input RXCLKSTABLEA; + input RXCLKSTABLEB; + input RXCOMMADETUSEA; + input RXCOMMADETUSEB; + input RXCRCCLKA; + input RXCRCCLKB; + input RXCRCDATAVALIDA; + input RXCRCDATAVALIDB; + input RXCRCINITA; + input RXCRCINITB; + input RXCRCINTCLKA; + input RXCRCINTCLKB; + input RXCRCPDA; + input RXCRCPDB; + input RXCRCRESETA; + input RXCRCRESETB; + input RXDEC64B66BUSEA; + input RXDEC64B66BUSEB; + input RXDEC8B10BUSEA; + input RXDEC8B10BUSEB; + input RXDESCRAM64B66BUSEA; + input RXDESCRAM64B66BUSEB; + input RXIGNOREBTFA; + input RXIGNOREBTFB; + input RXPMARESETA; + input RXPMARESETB; + input RXPOLARITYA; + input RXPOLARITYB; + input RXRESETA; + input RXRESETB; + input RXSLIDEA; + input RXSLIDEB; + input RXSYNCA; + input RXSYNCB; + input RXUSRCLK2A; + input RXUSRCLK2B; + input RXUSRCLKA; + input RXUSRCLKB; + input TXCLKSTABLEA; + input TXCLKSTABLEB; + input TXCRCCLKA; + input TXCRCCLKB; + input TXCRCDATAVALIDA; + input TXCRCDATAVALIDB; + input TXCRCINITA; + input TXCRCINITB; + input TXCRCINTCLKA; + input TXCRCINTCLKB; + input TXCRCPDA; + input TXCRCPDB; + input TXCRCRESETA; + input TXCRCRESETB; + input TXENC64B66BUSEA; + input TXENC64B66BUSEB; + input TXENC8B10BUSEA; + input TXENC8B10BUSEB; + input TXENOOBA; + input TXENOOBB; + input TXGEARBOX64B66BUSEA; + input TXGEARBOX64B66BUSEB; + input TXINHIBITA; + input TXINHIBITB; + input TXPMARESETA; + input TXPMARESETB; + input TXPOLARITYA; + input TXPOLARITYB; + input TXRESETA; + input TXRESETB; + input TXSCRAM64B66BUSEA; + input TXSCRAM64B66BUSEB; + input TXSYNCA; + input TXSYNCB; + input TXUSRCLK2A; + input TXUSRCLK2B; + input TXUSRCLKA; + input TXUSRCLKB; + input [15:0] DIA; + input [15:0] DIB; + input [1:0] LOOPBACKA; + input [1:0] LOOPBACKB; + input [1:0] RXDATAWIDTHA; + input [1:0] RXDATAWIDTHB; + input [1:0] RXINTDATAWIDTHA; + input [1:0] RXINTDATAWIDTHB; + input [1:0] TXDATAWIDTHA; + input [1:0] TXDATAWIDTHB; + input [1:0] TXINTDATAWIDTHA; + input [1:0] TXINTDATAWIDTHB; + input [2:0] RXCRCDATAWIDTHA; + input [2:0] RXCRCDATAWIDTHB; + input [2:0] TXCRCDATAWIDTHA; + input [2:0] TXCRCDATAWIDTHB; + input [4:0] CHBONDIA; + input [4:0] CHBONDIB; + input [63:0] RXCRCINA; + input [63:0] RXCRCINB; + input [63:0] TXCRCINA; + input [63:0] TXCRCINB; + input [63:0] TXDATAA; + input [63:0] TXDATAB; + input [7:0] DADDRA; + input [7:0] DADDRB; + input [7:0] TXBYPASS8B10BA; + input [7:0] TXBYPASS8B10BB; + input [7:0] TXCHARDISPMODEA; + input [7:0] TXCHARDISPMODEB; + input [7:0] TXCHARDISPVALA; + input [7:0] TXCHARDISPVALB; + input [7:0] TXCHARISKA; + input [7:0] TXCHARISKB; +endmodule + +module GT11CLK (...); + parameter REFCLKSEL = "MGTCLK"; + parameter SYNCLK1OUTEN = "ENABLE"; + parameter SYNCLK2OUTEN = "DISABLE"; + output SYNCLK1OUT; + output SYNCLK2OUT; + input MGTCLKN; + input MGTCLKP; + input REFCLK; + input RXBCLK; + input SYNCLK1IN; + input SYNCLK2IN; +endmodule + +module GT11CLK_MGT (...); + parameter SYNCLK1OUTEN = "ENABLE"; + parameter SYNCLK2OUTEN = "DISABLE"; + output SYNCLK1OUT; + output SYNCLK2OUT; + input MGTCLKN; + input MGTCLKP; +endmodule + +module GTP_DUAL (...); + parameter AC_CAP_DIS_0 = "TRUE"; + parameter AC_CAP_DIS_1 = "TRUE"; + parameter CHAN_BOND_MODE_0 = "OFF"; + parameter CHAN_BOND_MODE_1 = "OFF"; + parameter CHAN_BOND_SEQ_2_USE_0 = "TRUE"; + parameter CHAN_BOND_SEQ_2_USE_1 = "TRUE"; + parameter CLKINDC_B = "TRUE"; + parameter CLK_CORRECT_USE_0 = "TRUE"; + parameter CLK_CORRECT_USE_1 = "TRUE"; + parameter CLK_COR_INSERT_IDLE_FLAG_0 = "FALSE"; + parameter CLK_COR_INSERT_IDLE_FLAG_1 = "FALSE"; + parameter CLK_COR_KEEP_IDLE_0 = "FALSE"; + parameter CLK_COR_KEEP_IDLE_1 = "FALSE"; + parameter CLK_COR_PRECEDENCE_0 = "TRUE"; + parameter CLK_COR_PRECEDENCE_1 = "TRUE"; + parameter CLK_COR_SEQ_2_USE_0 = "FALSE"; + parameter CLK_COR_SEQ_2_USE_1 = "FALSE"; + parameter COMMA_DOUBLE_0 = "FALSE"; + parameter COMMA_DOUBLE_1 = "FALSE"; + parameter DEC_MCOMMA_DETECT_0 = "TRUE"; + parameter DEC_MCOMMA_DETECT_1 = "TRUE"; + parameter DEC_PCOMMA_DETECT_0 = "TRUE"; + parameter DEC_PCOMMA_DETECT_1 = "TRUE"; + parameter DEC_VALID_COMMA_ONLY_0 = "TRUE"; + parameter DEC_VALID_COMMA_ONLY_1 = "TRUE"; + parameter MCOMMA_DETECT_0 = "TRUE"; + parameter MCOMMA_DETECT_1 = "TRUE"; + parameter OVERSAMPLE_MODE = "FALSE"; + parameter PCI_EXPRESS_MODE_0 = "TRUE"; + parameter PCI_EXPRESS_MODE_1 = "TRUE"; + parameter PCOMMA_DETECT_0 = "TRUE"; + parameter PCOMMA_DETECT_1 = "TRUE"; + parameter PLL_SATA_0 = "FALSE"; + parameter PLL_SATA_1 = "FALSE"; + parameter RCV_TERM_GND_0 = "TRUE"; + parameter RCV_TERM_GND_1 = "TRUE"; + parameter RCV_TERM_MID_0 = "FALSE"; + parameter RCV_TERM_MID_1 = "FALSE"; + parameter RCV_TERM_VTTRX_0 = "FALSE"; + parameter RCV_TERM_VTTRX_1 = "FALSE"; + parameter RX_BUFFER_USE_0 = "TRUE"; + parameter RX_BUFFER_USE_1 = "TRUE"; + parameter RX_DECODE_SEQ_MATCH_0 = "TRUE"; + parameter RX_DECODE_SEQ_MATCH_1 = "TRUE"; + parameter RX_LOSS_OF_SYNC_FSM_0 = "FALSE"; + parameter RX_LOSS_OF_SYNC_FSM_1 = "FALSE"; + parameter RX_SLIDE_MODE_0 = "PCS"; + parameter RX_SLIDE_MODE_1 = "PCS"; + parameter RX_STATUS_FMT_0 = "PCIE"; + parameter RX_STATUS_FMT_1 = "PCIE"; + parameter RX_XCLK_SEL_0 = "RXREC"; + parameter RX_XCLK_SEL_1 = "RXREC"; + parameter SIM_PLL_PERDIV2 = 9'h190; + parameter SIM_RECEIVER_DETECT_PASS0 = "FALSE"; + parameter SIM_RECEIVER_DETECT_PASS1 = "FALSE"; + parameter TERMINATION_OVRD = "FALSE"; + parameter TX_BUFFER_USE_0 = "TRUE"; + parameter TX_BUFFER_USE_1 = "TRUE"; + parameter TX_DIFF_BOOST_0 = "TRUE"; + parameter TX_DIFF_BOOST_1 = "TRUE"; + parameter TX_XCLK_SEL_0 = "TXUSR"; + parameter TX_XCLK_SEL_1 = "TXUSR"; + parameter [15:0] TRANS_TIME_FROM_P2_0 = 16'h003c; + parameter [15:0] TRANS_TIME_FROM_P2_1 = 16'h003c; + parameter [15:0] TRANS_TIME_NON_P2_0 = 16'h0019; + parameter [15:0] TRANS_TIME_NON_P2_1 = 16'h0019; + parameter [15:0] TRANS_TIME_TO_P2_0 = 16'h0064; + parameter [15:0] TRANS_TIME_TO_P2_1 = 16'h0064; + parameter [24:0] PMA_RX_CFG_0 = 25'h09f0089; + parameter [24:0] PMA_RX_CFG_1 = 25'h09f0089; + parameter [26:0] PMA_CDR_SCAN_0 = 27'h6c07640; + parameter [26:0] PMA_CDR_SCAN_1 = 27'h6c07640; + parameter [27:0] PCS_COM_CFG = 28'h1680a0e; + parameter [2:0] OOBDETECT_THRESHOLD_0 = 3'b001; + parameter [2:0] OOBDETECT_THRESHOLD_1 = 3'b001; + parameter [2:0] SATA_BURST_VAL_0 = 3'b100; + parameter [2:0] SATA_BURST_VAL_1 = 3'b100; + parameter [2:0] SATA_IDLE_VAL_0 = 3'b011; + parameter [2:0] SATA_IDLE_VAL_1 = 3'b011; + parameter [31:0] PRBS_ERR_THRESHOLD_0 = 32'h1; + parameter [31:0] PRBS_ERR_THRESHOLD_1 = 32'h1; + parameter [3:0] CHAN_BOND_SEQ_1_ENABLE_0 = 4'b1111; + parameter [3:0] CHAN_BOND_SEQ_1_ENABLE_1 = 4'b1111; + parameter [3:0] CHAN_BOND_SEQ_2_ENABLE_0 = 4'b1111; + parameter [3:0] CHAN_BOND_SEQ_2_ENABLE_1 = 4'b1111; + parameter [3:0] CLK_COR_SEQ_1_ENABLE_0 = 4'b1111; + parameter [3:0] CLK_COR_SEQ_1_ENABLE_1 = 4'b1111; + parameter [3:0] CLK_COR_SEQ_2_ENABLE_0 = 4'b1111; + parameter [3:0] CLK_COR_SEQ_2_ENABLE_1 = 4'b1111; + parameter [3:0] COM_BURST_VAL_0 = 4'b1111; + parameter [3:0] COM_BURST_VAL_1 = 4'b1111; + parameter [4:0] TERMINATION_CTRL = 5'b10100; + parameter [4:0] TXRX_INVERT_0 = 5'b00000; + parameter [4:0] TXRX_INVERT_1 = 5'b00000; + parameter [9:0] CHAN_BOND_SEQ_1_1_0 = 10'b0001001010; + parameter [9:0] CHAN_BOND_SEQ_1_1_1 = 10'b0001001010; + parameter [9:0] CHAN_BOND_SEQ_1_2_0 = 10'b0001001010; + parameter [9:0] CHAN_BOND_SEQ_1_2_1 = 10'b0001001010; + parameter [9:0] CHAN_BOND_SEQ_1_3_0 = 10'b0001001010; + parameter [9:0] CHAN_BOND_SEQ_1_3_1 = 10'b0001001010; + parameter [9:0] CHAN_BOND_SEQ_1_4_0 = 10'b0110111100; + parameter [9:0] CHAN_BOND_SEQ_1_4_1 = 10'b0110111100; + parameter [9:0] CHAN_BOND_SEQ_2_1_0 = 10'b0110111100; + parameter [9:0] CHAN_BOND_SEQ_2_1_1 = 10'b0110111100; + parameter [9:0] CHAN_BOND_SEQ_2_2_0 = 10'b0100111100; + parameter [9:0] CHAN_BOND_SEQ_2_2_1 = 10'b0100111100; + parameter [9:0] CHAN_BOND_SEQ_2_3_0 = 10'b0100111100; + parameter [9:0] CHAN_BOND_SEQ_2_3_1 = 10'b0100111100; + parameter [9:0] CHAN_BOND_SEQ_2_4_0 = 10'b0100111100; + parameter [9:0] CHAN_BOND_SEQ_2_4_1 = 10'b0100111100; + parameter [9:0] CLK_COR_SEQ_1_1_0 = 10'b0100011100; + parameter [9:0] CLK_COR_SEQ_1_1_1 = 10'b0100011100; + parameter [9:0] CLK_COR_SEQ_1_2_0 = 10'b0; + parameter [9:0] CLK_COR_SEQ_1_2_1 = 10'b0; + parameter [9:0] CLK_COR_SEQ_1_3_0 = 10'b0; + parameter [9:0] CLK_COR_SEQ_1_3_1 = 10'b0; + parameter [9:0] CLK_COR_SEQ_1_4_0 = 10'b0; + parameter [9:0] CLK_COR_SEQ_1_4_1 = 10'b0; + parameter [9:0] CLK_COR_SEQ_2_1_0 = 10'b0; + parameter [9:0] CLK_COR_SEQ_2_1_1 = 10'b0; + parameter [9:0] CLK_COR_SEQ_2_2_0 = 10'b0; + parameter [9:0] CLK_COR_SEQ_2_2_1 = 10'b0; + parameter [9:0] CLK_COR_SEQ_2_3_0 = 10'b0; + parameter [9:0] CLK_COR_SEQ_2_3_1 = 10'b0; + parameter [9:0] CLK_COR_SEQ_2_4_0 = 10'b0; + parameter [9:0] CLK_COR_SEQ_2_4_1 = 10'b0; + parameter [9:0] COMMA_10B_ENABLE_0 = 10'b1111111111; + parameter [9:0] COMMA_10B_ENABLE_1 = 10'b1111111111; + parameter [9:0] MCOMMA_10B_VALUE_0 = 10'b1010000011; + parameter [9:0] MCOMMA_10B_VALUE_1 = 10'b1010000011; + parameter [9:0] PCOMMA_10B_VALUE_0 = 10'b0101111100; + parameter [9:0] PCOMMA_10B_VALUE_1 = 10'b0101111100; + parameter ALIGN_COMMA_WORD_0 = 1; + parameter ALIGN_COMMA_WORD_1 = 1; + parameter CHAN_BOND_1_MAX_SKEW_0 = 7; + parameter CHAN_BOND_1_MAX_SKEW_1 = 7; + parameter CHAN_BOND_2_MAX_SKEW_0 = 1; + parameter CHAN_BOND_2_MAX_SKEW_1 = 1; + parameter CHAN_BOND_LEVEL_0 = 0; + parameter CHAN_BOND_LEVEL_1 = 0; + parameter CHAN_BOND_SEQ_LEN_0 = 4; + parameter CHAN_BOND_SEQ_LEN_1 = 4; + parameter CLK25_DIVIDER = 4; + parameter CLK_COR_ADJ_LEN_0 = 1; + parameter CLK_COR_ADJ_LEN_1 = 1; + parameter CLK_COR_DET_LEN_0 = 1; + parameter CLK_COR_DET_LEN_1 = 1; + parameter CLK_COR_MAX_LAT_0 = 18; + parameter CLK_COR_MAX_LAT_1 = 18; + parameter CLK_COR_MIN_LAT_0 = 16; + parameter CLK_COR_MIN_LAT_1 = 16; + parameter CLK_COR_REPEAT_WAIT_0 = 5; + parameter CLK_COR_REPEAT_WAIT_1 = 5; + parameter OOB_CLK_DIVIDER = 4; + parameter PLL_DIVSEL_FB = 5; + parameter PLL_DIVSEL_REF = 2; + parameter PLL_RXDIVSEL_OUT_0 = 1; + parameter PLL_RXDIVSEL_OUT_1 = 1; + parameter PLL_TXDIVSEL_COMM_OUT = 1; + parameter PLL_TXDIVSEL_OUT_0 = 1; + parameter PLL_TXDIVSEL_OUT_1 = 1; + parameter RX_LOS_INVALID_INCR_0 = 8; + parameter RX_LOS_INVALID_INCR_1 = 8; + parameter RX_LOS_THRESHOLD_0 = 128; + parameter RX_LOS_THRESHOLD_1 = 128; + parameter SATA_MAX_BURST_0 = 7; + parameter SATA_MAX_BURST_1 = 7; + parameter SATA_MAX_INIT_0 = 22; + parameter SATA_MAX_INIT_1 = 22; + parameter SATA_MAX_WAKE_0 = 7; + parameter SATA_MAX_WAKE_1 = 7; + parameter SATA_MIN_BURST_0 = 4; + parameter SATA_MIN_BURST_1 = 4; + parameter SATA_MIN_INIT_0 = 12; + parameter SATA_MIN_INIT_1 = 12; + parameter SATA_MIN_WAKE_0 = 4; + parameter SATA_MIN_WAKE_1 = 4; + parameter SIM_GTPRESET_SPEEDUP = 0; + parameter TERMINATION_IMP_0 = 50; + parameter TERMINATION_IMP_1 = 50; + parameter TX_SYNC_FILTERB = 1; + output DRDY; + output PHYSTATUS0; + output PHYSTATUS1; + output PLLLKDET; + output REFCLKOUT; + output RESETDONE0; + output RESETDONE1; + output RXBYTEISALIGNED0; + output RXBYTEISALIGNED1; + output RXBYTEREALIGN0; + output RXBYTEREALIGN1; + output RXCHANBONDSEQ0; + output RXCHANBONDSEQ1; + output RXCHANISALIGNED0; + output RXCHANISALIGNED1; + output RXCHANREALIGN0; + output RXCHANREALIGN1; + output RXCOMMADET0; + output RXCOMMADET1; + output RXELECIDLE0; + output RXELECIDLE1; + output RXOVERSAMPLEERR0; + output RXOVERSAMPLEERR1; + output RXPRBSERR0; + output RXPRBSERR1; + output RXRECCLK0; + output RXRECCLK1; + output RXVALID0; + output RXVALID1; + output TXN0; + output TXN1; + output TXOUTCLK0; + output TXOUTCLK1; + output TXP0; + output TXP1; + output [15:0] DO; + output [15:0] RXDATA0; + output [15:0] RXDATA1; + output [1:0] RXCHARISCOMMA0; + output [1:0] RXCHARISCOMMA1; + output [1:0] RXCHARISK0; + output [1:0] RXCHARISK1; + output [1:0] RXDISPERR0; + output [1:0] RXDISPERR1; + output [1:0] RXLOSSOFSYNC0; + output [1:0] RXLOSSOFSYNC1; + output [1:0] RXNOTINTABLE0; + output [1:0] RXNOTINTABLE1; + output [1:0] RXRUNDISP0; + output [1:0] RXRUNDISP1; + output [1:0] TXBUFSTATUS0; + output [1:0] TXBUFSTATUS1; + output [1:0] TXKERR0; + output [1:0] TXKERR1; + output [1:0] TXRUNDISP0; + output [1:0] TXRUNDISP1; + output [2:0] RXBUFSTATUS0; + output [2:0] RXBUFSTATUS1; + output [2:0] RXCHBONDO0; + output [2:0] RXCHBONDO1; + output [2:0] RXCLKCORCNT0; + output [2:0] RXCLKCORCNT1; + output [2:0] RXSTATUS0; + output [2:0] RXSTATUS1; + input CLKIN; + input DCLK; + input DEN; + input DWE; + input GTPRESET; + input INTDATAWIDTH; + input PLLLKDETEN; + input PLLPOWERDOWN; + input PRBSCNTRESET0; + input PRBSCNTRESET1; + input REFCLKPWRDNB; + input RXBUFRESET0; + input RXBUFRESET1; + input RXCDRRESET0; + input RXCDRRESET1; + input RXCOMMADETUSE0; + input RXCOMMADETUSE1; + input RXDATAWIDTH0; + input RXDATAWIDTH1; + input RXDEC8B10BUSE0; + input RXDEC8B10BUSE1; + input RXELECIDLERESET0; + input RXELECIDLERESET1; + input RXENCHANSYNC0; + input RXENCHANSYNC1; + input RXENELECIDLERESETB; + input RXENEQB0; + input RXENEQB1; + input RXENMCOMMAALIGN0; + input RXENMCOMMAALIGN1; + input RXENPCOMMAALIGN0; + input RXENPCOMMAALIGN1; + input RXENSAMPLEALIGN0; + input RXENSAMPLEALIGN1; + input RXN0; + input RXN1; + input RXP0; + input RXP1; + input RXPMASETPHASE0; + input RXPMASETPHASE1; + input RXPOLARITY0; + input RXPOLARITY1; + input RXRESET0; + input RXRESET1; + input RXSLIDE0; + input RXSLIDE1; + input RXUSRCLK0; + input RXUSRCLK1; + input RXUSRCLK20; + input RXUSRCLK21; + input TXCOMSTART0; + input TXCOMSTART1; + input TXCOMTYPE0; + input TXCOMTYPE1; + input TXDATAWIDTH0; + input TXDATAWIDTH1; + input TXDETECTRX0; + input TXDETECTRX1; + input TXELECIDLE0; + input TXELECIDLE1; + input TXENC8B10BUSE0; + input TXENC8B10BUSE1; + input TXENPMAPHASEALIGN; + input TXINHIBIT0; + input TXINHIBIT1; + input TXPMASETPHASE; + input TXPOLARITY0; + input TXPOLARITY1; + input TXRESET0; + input TXRESET1; + input TXUSRCLK0; + input TXUSRCLK1; + input TXUSRCLK20; + input TXUSRCLK21; + input [15:0] DI; + input [15:0] TXDATA0; + input [15:0] TXDATA1; + input [1:0] RXENPRBSTST0; + input [1:0] RXENPRBSTST1; + input [1:0] RXEQMIX0; + input [1:0] RXEQMIX1; + input [1:0] RXPOWERDOWN0; + input [1:0] RXPOWERDOWN1; + input [1:0] TXBYPASS8B10B0; + input [1:0] TXBYPASS8B10B1; + input [1:0] TXCHARDISPMODE0; + input [1:0] TXCHARDISPMODE1; + input [1:0] TXCHARDISPVAL0; + input [1:0] TXCHARDISPVAL1; + input [1:0] TXCHARISK0; + input [1:0] TXCHARISK1; + input [1:0] TXENPRBSTST0; + input [1:0] TXENPRBSTST1; + input [1:0] TXPOWERDOWN0; + input [1:0] TXPOWERDOWN1; + input [2:0] LOOPBACK0; + input [2:0] LOOPBACK1; + input [2:0] RXCHBONDI0; + input [2:0] RXCHBONDI1; + input [2:0] TXBUFDIFFCTRL0; + input [2:0] TXBUFDIFFCTRL1; + input [2:0] TXDIFFCTRL0; + input [2:0] TXDIFFCTRL1; + input [2:0] TXPREEMPHASIS0; + input [2:0] TXPREEMPHASIS1; + input [3:0] GTPTEST; + input [3:0] RXEQPOLE0; + input [3:0] RXEQPOLE1; + input [6:0] DADDR; +endmodule + +module GTX_DUAL (...); + parameter STEPPING = "0"; + parameter AC_CAP_DIS_0 = "TRUE"; + parameter AC_CAP_DIS_1 = "TRUE"; + parameter CHAN_BOND_KEEP_ALIGN_0 = "FALSE"; + parameter CHAN_BOND_KEEP_ALIGN_1 = "FALSE"; + parameter CHAN_BOND_MODE_0 = "OFF"; + parameter CHAN_BOND_MODE_1 = "OFF"; + parameter CHAN_BOND_SEQ_2_USE_0 = "TRUE"; + parameter CHAN_BOND_SEQ_2_USE_1 = "TRUE"; + parameter CLKINDC_B = "TRUE"; + parameter CLKRCV_TRST = "FALSE"; + parameter CLK_CORRECT_USE_0 = "TRUE"; + parameter CLK_CORRECT_USE_1 = "TRUE"; + parameter CLK_COR_INSERT_IDLE_FLAG_0 = "FALSE"; + parameter CLK_COR_INSERT_IDLE_FLAG_1 = "FALSE"; + parameter CLK_COR_KEEP_IDLE_0 = "FALSE"; + parameter CLK_COR_KEEP_IDLE_1 = "FALSE"; + parameter CLK_COR_PRECEDENCE_0 = "TRUE"; + parameter CLK_COR_PRECEDENCE_1 = "TRUE"; + parameter CLK_COR_SEQ_2_USE_0 = "FALSE"; + parameter CLK_COR_SEQ_2_USE_1 = "FALSE"; + parameter COMMA_DOUBLE_0 = "FALSE"; + parameter COMMA_DOUBLE_1 = "FALSE"; + parameter DEC_MCOMMA_DETECT_0 = "TRUE"; + parameter DEC_MCOMMA_DETECT_1 = "TRUE"; + parameter DEC_PCOMMA_DETECT_0 = "TRUE"; + parameter DEC_PCOMMA_DETECT_1 = "TRUE"; + parameter DEC_VALID_COMMA_ONLY_0 = "TRUE"; + parameter DEC_VALID_COMMA_ONLY_1 = "TRUE"; + parameter MCOMMA_DETECT_0 = "TRUE"; + parameter MCOMMA_DETECT_1 = "TRUE"; + parameter OVERSAMPLE_MODE = "FALSE"; + parameter PCI_EXPRESS_MODE_0 = "TRUE"; + parameter PCI_EXPRESS_MODE_1 = "TRUE"; + parameter PCOMMA_DETECT_0 = "TRUE"; + parameter PCOMMA_DETECT_1 = "TRUE"; + parameter PLL_FB_DCCEN = "FALSE"; + parameter PLL_SATA_0 = "FALSE"; + parameter PLL_SATA_1 = "FALSE"; + parameter RCV_TERM_GND_0 = "TRUE"; + parameter RCV_TERM_GND_1 = "TRUE"; + parameter RCV_TERM_VTTRX_0 = "FALSE"; + parameter RCV_TERM_VTTRX_1 = "FALSE"; + parameter RXGEARBOX_USE_0 = "FALSE"; + parameter RXGEARBOX_USE_1 = "FALSE"; + parameter RX_BUFFER_USE_0 = "TRUE"; + parameter RX_BUFFER_USE_1 = "TRUE"; + parameter RX_DECODE_SEQ_MATCH_0 = "TRUE"; + parameter RX_DECODE_SEQ_MATCH_1 = "TRUE"; + parameter RX_EN_IDLE_HOLD_CDR = "FALSE"; + parameter RX_EN_IDLE_HOLD_DFE_0 = "TRUE"; + parameter RX_EN_IDLE_HOLD_DFE_1 = "TRUE"; + parameter RX_EN_IDLE_RESET_BUF_0 = "TRUE"; + parameter RX_EN_IDLE_RESET_BUF_1 = "TRUE"; + parameter RX_EN_IDLE_RESET_FR = "TRUE"; + parameter RX_EN_IDLE_RESET_PH = "TRUE"; + parameter RX_LOSS_OF_SYNC_FSM_0 = "FALSE"; + parameter RX_LOSS_OF_SYNC_FSM_1 = "FALSE"; + parameter RX_SLIDE_MODE_0 = "PCS"; + parameter RX_SLIDE_MODE_1 = "PCS"; + parameter RX_STATUS_FMT_0 = "PCIE"; + parameter RX_STATUS_FMT_1 = "PCIE"; + parameter RX_XCLK_SEL_0 = "RXREC"; + parameter RX_XCLK_SEL_1 = "RXREC"; + parameter SIM_PLL_PERDIV2 = 9'h190; + parameter SIM_RECEIVER_DETECT_PASS_0 = "FALSE"; + parameter SIM_RECEIVER_DETECT_PASS_1 = "FALSE"; + parameter TERMINATION_OVRD = "FALSE"; + parameter TXGEARBOX_USE_0 = "FALSE"; + parameter TXGEARBOX_USE_1 = "FALSE"; + parameter TX_BUFFER_USE_0 = "TRUE"; + parameter TX_BUFFER_USE_1 = "TRUE"; + parameter TX_XCLK_SEL_0 = "TXUSR"; + parameter TX_XCLK_SEL_1 = "TXUSR"; + parameter [11:0] TRANS_TIME_FROM_P2_0 = 12'h03c; + parameter [11:0] TRANS_TIME_FROM_P2_1 = 12'h03c; + parameter [13:0] TX_DETECT_RX_CFG_0 = 14'h1832; + parameter [13:0] TX_DETECT_RX_CFG_1 = 14'h1832; + parameter [19:0] PMA_TX_CFG_0 = 20'h00082; + parameter [19:0] PMA_TX_CFG_1 = 20'h00082; + parameter [1:0] CM_TRIM_0 = 2'b10; + parameter [1:0] CM_TRIM_1 = 2'b10; + parameter [23:0] PLL_COM_CFG = 24'h21680a; + parameter [24:0] PMA_RX_CFG_0 = 25'h05ce109; + parameter [24:0] PMA_RX_CFG_1 = 25'h05ce109; + parameter [26:0] PMA_CDR_SCAN_0 = 27'h6c08040; + parameter [26:0] PMA_CDR_SCAN_1 = 27'h6c08040; + parameter [2:0] GEARBOX_ENDEC_0 = 3'b000; + parameter [2:0] GEARBOX_ENDEC_1 = 3'b000; + parameter [2:0] OOBDETECT_THRESHOLD_0 = 3'b111; + parameter [2:0] OOBDETECT_THRESHOLD_1 = 3'b111; + parameter [2:0] PLL_LKDET_CFG = 3'b111; + parameter [2:0] PLL_TDCC_CFG = 3'b000; + parameter [2:0] SATA_BURST_VAL_0 = 3'b100; + parameter [2:0] SATA_BURST_VAL_1 = 3'b100; + parameter [2:0] SATA_IDLE_VAL_0 = 3'b011; + parameter [2:0] SATA_IDLE_VAL_1 = 3'b011; + parameter [2:0] TXRX_INVERT_0 = 3'b000; + parameter [2:0] TXRX_INVERT_1 = 3'b000; + parameter [2:0] TX_IDLE_DELAY_0 = 3'b010; + parameter [2:0] TX_IDLE_DELAY_1 = 3'b010; + parameter [31:0] PRBS_ERR_THRESHOLD_0 = 32'h1; + parameter [31:0] PRBS_ERR_THRESHOLD_1 = 32'h1; + parameter [3:0] CHAN_BOND_SEQ_1_ENABLE_0 = 4'b1111; + parameter [3:0] CHAN_BOND_SEQ_1_ENABLE_1 = 4'b1111; + parameter [3:0] CHAN_BOND_SEQ_2_ENABLE_0 = 4'b1111; + parameter [3:0] CHAN_BOND_SEQ_2_ENABLE_1 = 4'b1111; + parameter [3:0] CLK_COR_SEQ_1_ENABLE_0 = 4'b1111; + parameter [3:0] CLK_COR_SEQ_1_ENABLE_1 = 4'b1111; + parameter [3:0] CLK_COR_SEQ_2_ENABLE_0 = 4'b1111; + parameter [3:0] CLK_COR_SEQ_2_ENABLE_1 = 4'b1111; + parameter [3:0] COM_BURST_VAL_0 = 4'b1111; + parameter [3:0] COM_BURST_VAL_1 = 4'b1111; + parameter [3:0] RX_IDLE_HI_CNT_0 = 4'b1000; + parameter [3:0] RX_IDLE_HI_CNT_1 = 4'b1000; + parameter [3:0] RX_IDLE_LO_CNT_0 = 4'b0000; + parameter [3:0] RX_IDLE_LO_CNT_1 = 4'b0000; + parameter [4:0] CDR_PH_ADJ_TIME = 5'b01010; + parameter [4:0] DFE_CAL_TIME = 5'b00110; + parameter [4:0] TERMINATION_CTRL = 5'b10100; + parameter [68:0] PMA_COM_CFG = 69'h0; + parameter [6:0] PMA_RXSYNC_CFG_0 = 7'h0; + parameter [6:0] PMA_RXSYNC_CFG_1 = 7'h0; + parameter [7:0] PLL_CP_CFG = 8'h00; + parameter [7:0] TRANS_TIME_NON_P2_0 = 8'h19; + parameter [7:0] TRANS_TIME_NON_P2_1 = 8'h19; + parameter [9:0] CHAN_BOND_SEQ_1_1_0 = 10'b0001001010; + parameter [9:0] CHAN_BOND_SEQ_1_1_1 = 10'b0001001010; + parameter [9:0] CHAN_BOND_SEQ_1_2_0 = 10'b0001001010; + parameter [9:0] CHAN_BOND_SEQ_1_2_1 = 10'b0001001010; + parameter [9:0] CHAN_BOND_SEQ_1_3_0 = 10'b0001001010; + parameter [9:0] CHAN_BOND_SEQ_1_3_1 = 10'b0001001010; + parameter [9:0] CHAN_BOND_SEQ_1_4_0 = 10'b0110111100; + parameter [9:0] CHAN_BOND_SEQ_1_4_1 = 10'b0110111100; + parameter [9:0] CHAN_BOND_SEQ_2_1_0 = 10'b0110111100; + parameter [9:0] CHAN_BOND_SEQ_2_1_1 = 10'b0110111100; + parameter [9:0] CHAN_BOND_SEQ_2_2_0 = 10'b0100111100; + parameter [9:0] CHAN_BOND_SEQ_2_2_1 = 10'b0100111100; + parameter [9:0] CHAN_BOND_SEQ_2_3_0 = 10'b0100111100; + parameter [9:0] CHAN_BOND_SEQ_2_3_1 = 10'b0100111100; + parameter [9:0] CHAN_BOND_SEQ_2_4_0 = 10'b0100111100; + parameter [9:0] CHAN_BOND_SEQ_2_4_1 = 10'b0100111100; + parameter [9:0] CLK_COR_SEQ_1_1_0 = 10'b0100011100; + parameter [9:0] CLK_COR_SEQ_1_1_1 = 10'b0100011100; + parameter [9:0] CLK_COR_SEQ_1_2_0 = 10'b0; + parameter [9:0] CLK_COR_SEQ_1_2_1 = 10'b0; + parameter [9:0] CLK_COR_SEQ_1_3_0 = 10'b0; + parameter [9:0] CLK_COR_SEQ_1_3_1 = 10'b0; + parameter [9:0] CLK_COR_SEQ_1_4_0 = 10'b0; + parameter [9:0] CLK_COR_SEQ_1_4_1 = 10'b0; + parameter [9:0] CLK_COR_SEQ_2_1_0 = 10'b0; + parameter [9:0] CLK_COR_SEQ_2_1_1 = 10'b0; + parameter [9:0] CLK_COR_SEQ_2_2_0 = 10'b0; + parameter [9:0] CLK_COR_SEQ_2_2_1 = 10'b0; + parameter [9:0] CLK_COR_SEQ_2_3_0 = 10'b0; + parameter [9:0] CLK_COR_SEQ_2_3_1 = 10'b0; + parameter [9:0] CLK_COR_SEQ_2_4_0 = 10'b0; + parameter [9:0] CLK_COR_SEQ_2_4_1 = 10'b0; + parameter [9:0] COMMA_10B_ENABLE_0 = 10'b1111111111; + parameter [9:0] COMMA_10B_ENABLE_1 = 10'b1111111111; + parameter [9:0] DFE_CFG_0 = 10'b0001111011; + parameter [9:0] DFE_CFG_1 = 10'b0001111011; + parameter [9:0] MCOMMA_10B_VALUE_0 = 10'b1010000011; + parameter [9:0] MCOMMA_10B_VALUE_1 = 10'b1010000011; + parameter [9:0] PCOMMA_10B_VALUE_0 = 10'b0101111100; + parameter [9:0] PCOMMA_10B_VALUE_1 = 10'b0101111100; + parameter [9:0] TRANS_TIME_TO_P2_0 = 10'h064; + parameter [9:0] TRANS_TIME_TO_P2_1 = 10'h064; + parameter ALIGN_COMMA_WORD_0 = 1; + parameter ALIGN_COMMA_WORD_1 = 1; + parameter CB2_INH_CC_PERIOD_0 = 8; + parameter CB2_INH_CC_PERIOD_1 = 8; + parameter CHAN_BOND_1_MAX_SKEW_0 = 7; + parameter CHAN_BOND_1_MAX_SKEW_1 = 7; + parameter CHAN_BOND_2_MAX_SKEW_0 = 1; + parameter CHAN_BOND_2_MAX_SKEW_1 = 1; + parameter CHAN_BOND_LEVEL_0 = 0; + parameter CHAN_BOND_LEVEL_1 = 0; + parameter CHAN_BOND_SEQ_LEN_0 = 4; + parameter CHAN_BOND_SEQ_LEN_1 = 4; + parameter CLK25_DIVIDER = 4; + parameter CLK_COR_ADJ_LEN_0 = 1; + parameter CLK_COR_ADJ_LEN_1 = 1; + parameter CLK_COR_DET_LEN_0 = 1; + parameter CLK_COR_DET_LEN_1 = 1; + parameter CLK_COR_MAX_LAT_0 = 18; + parameter CLK_COR_MAX_LAT_1 = 18; + parameter CLK_COR_MIN_LAT_0 = 16; + parameter CLK_COR_MIN_LAT_1 = 16; + parameter CLK_COR_REPEAT_WAIT_0 = 5; + parameter CLK_COR_REPEAT_WAIT_1 = 5; + parameter OOB_CLK_DIVIDER = 4; + parameter PLL_DIVSEL_FB = 5; + parameter PLL_DIVSEL_REF = 2; + parameter PLL_RXDIVSEL_OUT_0 = 1; + parameter PLL_RXDIVSEL_OUT_1 = 1; + parameter PLL_TXDIVSEL_OUT_0 = 1; + parameter PLL_TXDIVSEL_OUT_1 = 1; + parameter RX_LOS_INVALID_INCR_0 = 8; + parameter RX_LOS_INVALID_INCR_1 = 8; + parameter RX_LOS_THRESHOLD_0 = 128; + parameter RX_LOS_THRESHOLD_1 = 128; + parameter SATA_MAX_BURST_0 = 7; + parameter SATA_MAX_BURST_1 = 7; + parameter SATA_MAX_INIT_0 = 22; + parameter SATA_MAX_INIT_1 = 22; + parameter SATA_MAX_WAKE_0 = 7; + parameter SATA_MAX_WAKE_1 = 7; + parameter SATA_MIN_BURST_0 = 4; + parameter SATA_MIN_BURST_1 = 4; + parameter SATA_MIN_INIT_0 = 12; + parameter SATA_MIN_INIT_1 = 12; + parameter SATA_MIN_WAKE_0 = 4; + parameter SATA_MIN_WAKE_1 = 4; + parameter SIM_GTXRESET_SPEEDUP = 0; + parameter TERMINATION_IMP_0 = 50; + parameter TERMINATION_IMP_1 = 50; + output DRDY; + output PHYSTATUS0; + output PHYSTATUS1; + output PLLLKDET; + output REFCLKOUT; + output RESETDONE0; + output RESETDONE1; + output RXBYTEISALIGNED0; + output RXBYTEISALIGNED1; + output RXBYTEREALIGN0; + output RXBYTEREALIGN1; + output RXCHANBONDSEQ0; + output RXCHANBONDSEQ1; + output RXCHANISALIGNED0; + output RXCHANISALIGNED1; + output RXCHANREALIGN0; + output RXCHANREALIGN1; + output RXCOMMADET0; + output RXCOMMADET1; + output RXDATAVALID0; + output RXDATAVALID1; + output RXELECIDLE0; + output RXELECIDLE1; + output RXHEADERVALID0; + output RXHEADERVALID1; + output RXOVERSAMPLEERR0; + output RXOVERSAMPLEERR1; + output RXPRBSERR0; + output RXPRBSERR1; + output RXRECCLK0; + output RXRECCLK1; + output RXSTARTOFSEQ0; + output RXSTARTOFSEQ1; + output RXVALID0; + output RXVALID1; + output TXGEARBOXREADY0; + output TXGEARBOXREADY1; + output TXN0; + output TXN1; + output TXOUTCLK0; + output TXOUTCLK1; + output TXP0; + output TXP1; + output [15:0] DO; + output [1:0] RXLOSSOFSYNC0; + output [1:0] RXLOSSOFSYNC1; + output [1:0] TXBUFSTATUS0; + output [1:0] TXBUFSTATUS1; + output [2:0] DFESENSCAL0; + output [2:0] DFESENSCAL1; + output [2:0] RXBUFSTATUS0; + output [2:0] RXBUFSTATUS1; + output [2:0] RXCLKCORCNT0; + output [2:0] RXCLKCORCNT1; + output [2:0] RXHEADER0; + output [2:0] RXHEADER1; + output [2:0] RXSTATUS0; + output [2:0] RXSTATUS1; + output [31:0] RXDATA0; + output [31:0] RXDATA1; + output [3:0] DFETAP3MONITOR0; + output [3:0] DFETAP3MONITOR1; + output [3:0] DFETAP4MONITOR0; + output [3:0] DFETAP4MONITOR1; + output [3:0] RXCHARISCOMMA0; + output [3:0] RXCHARISCOMMA1; + output [3:0] RXCHARISK0; + output [3:0] RXCHARISK1; + output [3:0] RXCHBONDO0; + output [3:0] RXCHBONDO1; + output [3:0] RXDISPERR0; + output [3:0] RXDISPERR1; + output [3:0] RXNOTINTABLE0; + output [3:0] RXNOTINTABLE1; + output [3:0] RXRUNDISP0; + output [3:0] RXRUNDISP1; + output [3:0] TXKERR0; + output [3:0] TXKERR1; + output [3:0] TXRUNDISP0; + output [3:0] TXRUNDISP1; + output [4:0] DFEEYEDACMONITOR0; + output [4:0] DFEEYEDACMONITOR1; + output [4:0] DFETAP1MONITOR0; + output [4:0] DFETAP1MONITOR1; + output [4:0] DFETAP2MONITOR0; + output [4:0] DFETAP2MONITOR1; + output [5:0] DFECLKDLYADJMONITOR0; + output [5:0] DFECLKDLYADJMONITOR1; + input CLKIN; + input DCLK; + input DEN; + input DWE; + input GTXRESET; + input INTDATAWIDTH; + input PLLLKDETEN; + input PLLPOWERDOWN; + input PRBSCNTRESET0; + input PRBSCNTRESET1; + input REFCLKPWRDNB; + input RXBUFRESET0; + input RXBUFRESET1; + input RXCDRRESET0; + input RXCDRRESET1; + input RXCOMMADETUSE0; + input RXCOMMADETUSE1; + input RXDEC8B10BUSE0; + input RXDEC8B10BUSE1; + input RXENCHANSYNC0; + input RXENCHANSYNC1; + input RXENEQB0; + input RXENEQB1; + input RXENMCOMMAALIGN0; + input RXENMCOMMAALIGN1; + input RXENPCOMMAALIGN0; + input RXENPCOMMAALIGN1; + input RXENPMAPHASEALIGN0; + input RXENPMAPHASEALIGN1; + input RXENSAMPLEALIGN0; + input RXENSAMPLEALIGN1; + input RXGEARBOXSLIP0; + input RXGEARBOXSLIP1; + input RXN0; + input RXN1; + input RXP0; + input RXP1; + input RXPMASETPHASE0; + input RXPMASETPHASE1; + input RXPOLARITY0; + input RXPOLARITY1; + input RXRESET0; + input RXRESET1; + input RXSLIDE0; + input RXSLIDE1; + input RXUSRCLK0; + input RXUSRCLK1; + input RXUSRCLK20; + input RXUSRCLK21; + input TXCOMSTART0; + input TXCOMSTART1; + input TXCOMTYPE0; + input TXCOMTYPE1; + input TXDETECTRX0; + input TXDETECTRX1; + input TXELECIDLE0; + input TXELECIDLE1; + input TXENC8B10BUSE0; + input TXENC8B10BUSE1; + input TXENPMAPHASEALIGN0; + input TXENPMAPHASEALIGN1; + input TXINHIBIT0; + input TXINHIBIT1; + input TXPMASETPHASE0; + input TXPMASETPHASE1; + input TXPOLARITY0; + input TXPOLARITY1; + input TXRESET0; + input TXRESET1; + input TXSTARTSEQ0; + input TXSTARTSEQ1; + input TXUSRCLK0; + input TXUSRCLK1; + input TXUSRCLK20; + input TXUSRCLK21; + input [13:0] GTXTEST; + input [15:0] DI; + input [1:0] RXDATAWIDTH0; + input [1:0] RXDATAWIDTH1; + input [1:0] RXENPRBSTST0; + input [1:0] RXENPRBSTST1; + input [1:0] RXEQMIX0; + input [1:0] RXEQMIX1; + input [1:0] RXPOWERDOWN0; + input [1:0] RXPOWERDOWN1; + input [1:0] TXDATAWIDTH0; + input [1:0] TXDATAWIDTH1; + input [1:0] TXENPRBSTST0; + input [1:0] TXENPRBSTST1; + input [1:0] TXPOWERDOWN0; + input [1:0] TXPOWERDOWN1; + input [2:0] LOOPBACK0; + input [2:0] LOOPBACK1; + input [2:0] TXBUFDIFFCTRL0; + input [2:0] TXBUFDIFFCTRL1; + input [2:0] TXDIFFCTRL0; + input [2:0] TXDIFFCTRL1; + input [2:0] TXHEADER0; + input [2:0] TXHEADER1; + input [31:0] TXDATA0; + input [31:0] TXDATA1; + input [3:0] DFETAP30; + input [3:0] DFETAP31; + input [3:0] DFETAP40; + input [3:0] DFETAP41; + input [3:0] RXCHBONDI0; + input [3:0] RXCHBONDI1; + input [3:0] RXEQPOLE0; + input [3:0] RXEQPOLE1; + input [3:0] TXBYPASS8B10B0; + input [3:0] TXBYPASS8B10B1; + input [3:0] TXCHARDISPMODE0; + input [3:0] TXCHARDISPMODE1; + input [3:0] TXCHARDISPVAL0; + input [3:0] TXCHARDISPVAL1; + input [3:0] TXCHARISK0; + input [3:0] TXCHARISK1; + input [3:0] TXPREEMPHASIS0; + input [3:0] TXPREEMPHASIS1; + input [4:0] DFETAP10; + input [4:0] DFETAP11; + input [4:0] DFETAP20; + input [4:0] DFETAP21; + input [5:0] DFECLKDLYADJ0; + input [5:0] DFECLKDLYADJ1; + input [6:0] DADDR; + input [6:0] TXSEQUENCE0; + input [6:0] TXSEQUENCE1; +endmodule + +module CRC32 (...); + parameter CRC_INIT = 32'hFFFFFFFF; + output [31:0] CRCOUT; + (* clkbuf_sink *) + input CRCCLK; + input CRCDATAVALID; + input [2:0] CRCDATAWIDTH; + input [31:0] CRCIN; + input CRCRESET; +endmodule + +module CRC64 (...); + parameter CRC_INIT = 32'hFFFFFFFF; + output [31:0] CRCOUT; + (* clkbuf_sink *) + input CRCCLK; + input CRCDATAVALID; + input [2:0] CRCDATAWIDTH; + input [63:0] CRCIN; + input CRCRESET; +endmodule + +module GTHE1_QUAD (...); + parameter [15:0] BER_CONST_PTRN0 = 16'h0000; + parameter [15:0] BER_CONST_PTRN1 = 16'h0000; + parameter [15:0] BUFFER_CONFIG_LANE0 = 16'h4004; + parameter [15:0] BUFFER_CONFIG_LANE1 = 16'h4004; + parameter [15:0] BUFFER_CONFIG_LANE2 = 16'h4004; + parameter [15:0] BUFFER_CONFIG_LANE3 = 16'h4004; + parameter [15:0] DFE_TRAIN_CTRL_LANE0 = 16'h0000; + parameter [15:0] DFE_TRAIN_CTRL_LANE1 = 16'h0000; + parameter [15:0] DFE_TRAIN_CTRL_LANE2 = 16'h0000; + parameter [15:0] DFE_TRAIN_CTRL_LANE3 = 16'h0000; + parameter [15:0] DLL_CFG0 = 16'h8202; + parameter [15:0] DLL_CFG1 = 16'h0000; + parameter [15:0] E10GBASEKR_LD_COEFF_UPD_LANE0 = 16'h0000; + parameter [15:0] E10GBASEKR_LD_COEFF_UPD_LANE1 = 16'h0000; + parameter [15:0] E10GBASEKR_LD_COEFF_UPD_LANE2 = 16'h0000; + parameter [15:0] E10GBASEKR_LD_COEFF_UPD_LANE3 = 16'h0000; + parameter [15:0] E10GBASEKR_LP_COEFF_UPD_LANE0 = 16'h0000; + parameter [15:0] E10GBASEKR_LP_COEFF_UPD_LANE1 = 16'h0000; + parameter [15:0] E10GBASEKR_LP_COEFF_UPD_LANE2 = 16'h0000; + parameter [15:0] E10GBASEKR_LP_COEFF_UPD_LANE3 = 16'h0000; + parameter [15:0] E10GBASEKR_PMA_CTRL_LANE0 = 16'h0002; + parameter [15:0] E10GBASEKR_PMA_CTRL_LANE1 = 16'h0002; + parameter [15:0] E10GBASEKR_PMA_CTRL_LANE2 = 16'h0002; + parameter [15:0] E10GBASEKR_PMA_CTRL_LANE3 = 16'h0002; + parameter [15:0] E10GBASEKX_CTRL_LANE0 = 16'h0000; + parameter [15:0] E10GBASEKX_CTRL_LANE1 = 16'h0000; + parameter [15:0] E10GBASEKX_CTRL_LANE2 = 16'h0000; + parameter [15:0] E10GBASEKX_CTRL_LANE3 = 16'h0000; + parameter [15:0] E10GBASER_PCS_CFG_LANE0 = 16'h070C; + parameter [15:0] E10GBASER_PCS_CFG_LANE1 = 16'h070C; + parameter [15:0] E10GBASER_PCS_CFG_LANE2 = 16'h070C; + parameter [15:0] E10GBASER_PCS_CFG_LANE3 = 16'h070C; + parameter [15:0] E10GBASER_PCS_SEEDA0_LANE0 = 16'h0001; + parameter [15:0] E10GBASER_PCS_SEEDA0_LANE1 = 16'h0001; + parameter [15:0] E10GBASER_PCS_SEEDA0_LANE2 = 16'h0001; + parameter [15:0] E10GBASER_PCS_SEEDA0_LANE3 = 16'h0001; + parameter [15:0] E10GBASER_PCS_SEEDA1_LANE0 = 16'h0000; + parameter [15:0] E10GBASER_PCS_SEEDA1_LANE1 = 16'h0000; + parameter [15:0] E10GBASER_PCS_SEEDA1_LANE2 = 16'h0000; + parameter [15:0] E10GBASER_PCS_SEEDA1_LANE3 = 16'h0000; + parameter [15:0] E10GBASER_PCS_SEEDA2_LANE0 = 16'h0000; + parameter [15:0] E10GBASER_PCS_SEEDA2_LANE1 = 16'h0000; + parameter [15:0] E10GBASER_PCS_SEEDA2_LANE2 = 16'h0000; + parameter [15:0] E10GBASER_PCS_SEEDA2_LANE3 = 16'h0000; + parameter [15:0] E10GBASER_PCS_SEEDA3_LANE0 = 16'h0000; + parameter [15:0] E10GBASER_PCS_SEEDA3_LANE1 = 16'h0000; + parameter [15:0] E10GBASER_PCS_SEEDA3_LANE2 = 16'h0000; + parameter [15:0] E10GBASER_PCS_SEEDA3_LANE3 = 16'h0000; + parameter [15:0] E10GBASER_PCS_SEEDB0_LANE0 = 16'h0001; + parameter [15:0] E10GBASER_PCS_SEEDB0_LANE1 = 16'h0001; + parameter [15:0] E10GBASER_PCS_SEEDB0_LANE2 = 16'h0001; + parameter [15:0] E10GBASER_PCS_SEEDB0_LANE3 = 16'h0001; + parameter [15:0] E10GBASER_PCS_SEEDB1_LANE0 = 16'h0000; + parameter [15:0] E10GBASER_PCS_SEEDB1_LANE1 = 16'h0000; + parameter [15:0] E10GBASER_PCS_SEEDB1_LANE2 = 16'h0000; + parameter [15:0] E10GBASER_PCS_SEEDB1_LANE3 = 16'h0000; + parameter [15:0] E10GBASER_PCS_SEEDB2_LANE0 = 16'h0000; + parameter [15:0] E10GBASER_PCS_SEEDB2_LANE1 = 16'h0000; + parameter [15:0] E10GBASER_PCS_SEEDB2_LANE2 = 16'h0000; + parameter [15:0] E10GBASER_PCS_SEEDB2_LANE3 = 16'h0000; + parameter [15:0] E10GBASER_PCS_SEEDB3_LANE0 = 16'h0000; + parameter [15:0] E10GBASER_PCS_SEEDB3_LANE1 = 16'h0000; + parameter [15:0] E10GBASER_PCS_SEEDB3_LANE2 = 16'h0000; + parameter [15:0] E10GBASER_PCS_SEEDB3_LANE3 = 16'h0000; + parameter [15:0] E10GBASER_PCS_TEST_CTRL_LANE0 = 16'h0000; + parameter [15:0] E10GBASER_PCS_TEST_CTRL_LANE1 = 16'h0000; + parameter [15:0] E10GBASER_PCS_TEST_CTRL_LANE2 = 16'h0000; + parameter [15:0] E10GBASER_PCS_TEST_CTRL_LANE3 = 16'h0000; + parameter [15:0] E10GBASEX_PCS_TSTCTRL_LANE0 = 16'h0000; + parameter [15:0] E10GBASEX_PCS_TSTCTRL_LANE1 = 16'h0000; + parameter [15:0] E10GBASEX_PCS_TSTCTRL_LANE2 = 16'h0000; + parameter [15:0] E10GBASEX_PCS_TSTCTRL_LANE3 = 16'h0000; + parameter [15:0] GLBL0_NOISE_CTRL = 16'hF0B8; + parameter [15:0] GLBL_AMON_SEL = 16'h0000; + parameter [15:0] GLBL_DMON_SEL = 16'h0200; + parameter [15:0] GLBL_PWR_CTRL = 16'h0000; + parameter [0:0] GTH_CFG_PWRUP_LANE0 = 1'b1; + parameter [0:0] GTH_CFG_PWRUP_LANE1 = 1'b1; + parameter [0:0] GTH_CFG_PWRUP_LANE2 = 1'b1; + parameter [0:0] GTH_CFG_PWRUP_LANE3 = 1'b1; + parameter [15:0] LANE_AMON_SEL = 16'h00F0; + parameter [15:0] LANE_DMON_SEL = 16'h0000; + parameter [15:0] LANE_LNK_CFGOVRD = 16'h0000; + parameter [15:0] LANE_PWR_CTRL_LANE0 = 16'h0400; + parameter [15:0] LANE_PWR_CTRL_LANE1 = 16'h0400; + parameter [15:0] LANE_PWR_CTRL_LANE2 = 16'h0400; + parameter [15:0] LANE_PWR_CTRL_LANE3 = 16'h0400; + parameter [15:0] LNK_TRN_CFG_LANE0 = 16'h0000; + parameter [15:0] LNK_TRN_CFG_LANE1 = 16'h0000; + parameter [15:0] LNK_TRN_CFG_LANE2 = 16'h0000; + parameter [15:0] LNK_TRN_CFG_LANE3 = 16'h0000; + parameter [15:0] LNK_TRN_COEFF_REQ_LANE0 = 16'h0000; + parameter [15:0] LNK_TRN_COEFF_REQ_LANE1 = 16'h0000; + parameter [15:0] LNK_TRN_COEFF_REQ_LANE2 = 16'h0000; + parameter [15:0] LNK_TRN_COEFF_REQ_LANE3 = 16'h0000; + parameter [15:0] MISC_CFG = 16'h0008; + parameter [15:0] MODE_CFG1 = 16'h0000; + parameter [15:0] MODE_CFG2 = 16'h0000; + parameter [15:0] MODE_CFG3 = 16'h0000; + parameter [15:0] MODE_CFG4 = 16'h0000; + parameter [15:0] MODE_CFG5 = 16'h0000; + parameter [15:0] MODE_CFG6 = 16'h0000; + parameter [15:0] MODE_CFG7 = 16'h0000; + parameter [15:0] PCS_ABILITY_LANE0 = 16'h0010; + parameter [15:0] PCS_ABILITY_LANE1 = 16'h0010; + parameter [15:0] PCS_ABILITY_LANE2 = 16'h0010; + parameter [15:0] PCS_ABILITY_LANE3 = 16'h0010; + parameter [15:0] PCS_CTRL1_LANE0 = 16'h2040; + parameter [15:0] PCS_CTRL1_LANE1 = 16'h2040; + parameter [15:0] PCS_CTRL1_LANE2 = 16'h2040; + parameter [15:0] PCS_CTRL1_LANE3 = 16'h2040; + parameter [15:0] PCS_CTRL2_LANE0 = 16'h0000; + parameter [15:0] PCS_CTRL2_LANE1 = 16'h0000; + parameter [15:0] PCS_CTRL2_LANE2 = 16'h0000; + parameter [15:0] PCS_CTRL2_LANE3 = 16'h0000; + parameter [15:0] PCS_MISC_CFG_0_LANE0 = 16'h1116; + parameter [15:0] PCS_MISC_CFG_0_LANE1 = 16'h1116; + parameter [15:0] PCS_MISC_CFG_0_LANE2 = 16'h1116; + parameter [15:0] PCS_MISC_CFG_0_LANE3 = 16'h1116; + parameter [15:0] PCS_MISC_CFG_1_LANE0 = 16'h0000; + parameter [15:0] PCS_MISC_CFG_1_LANE1 = 16'h0000; + parameter [15:0] PCS_MISC_CFG_1_LANE2 = 16'h0000; + parameter [15:0] PCS_MISC_CFG_1_LANE3 = 16'h0000; + parameter [15:0] PCS_MODE_LANE0 = 16'h0000; + parameter [15:0] PCS_MODE_LANE1 = 16'h0000; + parameter [15:0] PCS_MODE_LANE2 = 16'h0000; + parameter [15:0] PCS_MODE_LANE3 = 16'h0000; + parameter [15:0] PCS_RESET_1_LANE0 = 16'h0002; + parameter [15:0] PCS_RESET_1_LANE1 = 16'h0002; + parameter [15:0] PCS_RESET_1_LANE2 = 16'h0002; + parameter [15:0] PCS_RESET_1_LANE3 = 16'h0002; + parameter [15:0] PCS_RESET_LANE0 = 16'h0000; + parameter [15:0] PCS_RESET_LANE1 = 16'h0000; + parameter [15:0] PCS_RESET_LANE2 = 16'h0000; + parameter [15:0] PCS_RESET_LANE3 = 16'h0000; + parameter [15:0] PCS_TYPE_LANE0 = 16'h002C; + parameter [15:0] PCS_TYPE_LANE1 = 16'h002C; + parameter [15:0] PCS_TYPE_LANE2 = 16'h002C; + parameter [15:0] PCS_TYPE_LANE3 = 16'h002C; + parameter [15:0] PLL_CFG0 = 16'h95DF; + parameter [15:0] PLL_CFG1 = 16'h81C0; + parameter [15:0] PLL_CFG2 = 16'h0424; + parameter [15:0] PMA_CTRL1_LANE0 = 16'h0000; + parameter [15:0] PMA_CTRL1_LANE1 = 16'h0000; + parameter [15:0] PMA_CTRL1_LANE2 = 16'h0000; + parameter [15:0] PMA_CTRL1_LANE3 = 16'h0000; + parameter [15:0] PMA_CTRL2_LANE0 = 16'h000B; + parameter [15:0] PMA_CTRL2_LANE1 = 16'h000B; + parameter [15:0] PMA_CTRL2_LANE2 = 16'h000B; + parameter [15:0] PMA_CTRL2_LANE3 = 16'h000B; + parameter [15:0] PMA_LPBK_CTRL_LANE0 = 16'h0004; + parameter [15:0] PMA_LPBK_CTRL_LANE1 = 16'h0004; + parameter [15:0] PMA_LPBK_CTRL_LANE2 = 16'h0004; + parameter [15:0] PMA_LPBK_CTRL_LANE3 = 16'h0004; + parameter [15:0] PRBS_BER_CFG0_LANE0 = 16'h0000; + parameter [15:0] PRBS_BER_CFG0_LANE1 = 16'h0000; + parameter [15:0] PRBS_BER_CFG0_LANE2 = 16'h0000; + parameter [15:0] PRBS_BER_CFG0_LANE3 = 16'h0000; + parameter [15:0] PRBS_BER_CFG1_LANE0 = 16'h0000; + parameter [15:0] PRBS_BER_CFG1_LANE1 = 16'h0000; + parameter [15:0] PRBS_BER_CFG1_LANE2 = 16'h0000; + parameter [15:0] PRBS_BER_CFG1_LANE3 = 16'h0000; + parameter [15:0] PRBS_CFG_LANE0 = 16'h000A; + parameter [15:0] PRBS_CFG_LANE1 = 16'h000A; + parameter [15:0] PRBS_CFG_LANE2 = 16'h000A; + parameter [15:0] PRBS_CFG_LANE3 = 16'h000A; + parameter [15:0] PTRN_CFG0_LSB = 16'h5555; + parameter [15:0] PTRN_CFG0_MSB = 16'h5555; + parameter [15:0] PTRN_LEN_CFG = 16'h001F; + parameter [15:0] PWRUP_DLY = 16'h0000; + parameter [15:0] RX_AEQ_VAL0_LANE0 = 16'h03C0; + parameter [15:0] RX_AEQ_VAL0_LANE1 = 16'h03C0; + parameter [15:0] RX_AEQ_VAL0_LANE2 = 16'h03C0; + parameter [15:0] RX_AEQ_VAL0_LANE3 = 16'h03C0; + parameter [15:0] RX_AEQ_VAL1_LANE0 = 16'h0000; + parameter [15:0] RX_AEQ_VAL1_LANE1 = 16'h0000; + parameter [15:0] RX_AEQ_VAL1_LANE2 = 16'h0000; + parameter [15:0] RX_AEQ_VAL1_LANE3 = 16'h0000; + parameter [15:0] RX_AGC_CTRL_LANE0 = 16'h0000; + parameter [15:0] RX_AGC_CTRL_LANE1 = 16'h0000; + parameter [15:0] RX_AGC_CTRL_LANE2 = 16'h0000; + parameter [15:0] RX_AGC_CTRL_LANE3 = 16'h0000; + parameter [15:0] RX_CDR_CTRL0_LANE0 = 16'h0005; + parameter [15:0] RX_CDR_CTRL0_LANE1 = 16'h0005; + parameter [15:0] RX_CDR_CTRL0_LANE2 = 16'h0005; + parameter [15:0] RX_CDR_CTRL0_LANE3 = 16'h0005; + parameter [15:0] RX_CDR_CTRL1_LANE0 = 16'h4200; + parameter [15:0] RX_CDR_CTRL1_LANE1 = 16'h4200; + parameter [15:0] RX_CDR_CTRL1_LANE2 = 16'h4200; + parameter [15:0] RX_CDR_CTRL1_LANE3 = 16'h4200; + parameter [15:0] RX_CDR_CTRL2_LANE0 = 16'h2000; + parameter [15:0] RX_CDR_CTRL2_LANE1 = 16'h2000; + parameter [15:0] RX_CDR_CTRL2_LANE2 = 16'h2000; + parameter [15:0] RX_CDR_CTRL2_LANE3 = 16'h2000; + parameter [15:0] RX_CFG0_LANE0 = 16'h0500; + parameter [15:0] RX_CFG0_LANE1 = 16'h0500; + parameter [15:0] RX_CFG0_LANE2 = 16'h0500; + parameter [15:0] RX_CFG0_LANE3 = 16'h0500; + parameter [15:0] RX_CFG1_LANE0 = 16'h821F; + parameter [15:0] RX_CFG1_LANE1 = 16'h821F; + parameter [15:0] RX_CFG1_LANE2 = 16'h821F; + parameter [15:0] RX_CFG1_LANE3 = 16'h821F; + parameter [15:0] RX_CFG2_LANE0 = 16'h1001; + parameter [15:0] RX_CFG2_LANE1 = 16'h1001; + parameter [15:0] RX_CFG2_LANE2 = 16'h1001; + parameter [15:0] RX_CFG2_LANE3 = 16'h1001; + parameter [15:0] RX_CTLE_CTRL_LANE0 = 16'h008F; + parameter [15:0] RX_CTLE_CTRL_LANE1 = 16'h008F; + parameter [15:0] RX_CTLE_CTRL_LANE2 = 16'h008F; + parameter [15:0] RX_CTLE_CTRL_LANE3 = 16'h008F; + parameter [15:0] RX_CTRL_OVRD_LANE0 = 16'h000C; + parameter [15:0] RX_CTRL_OVRD_LANE1 = 16'h000C; + parameter [15:0] RX_CTRL_OVRD_LANE2 = 16'h000C; + parameter [15:0] RX_CTRL_OVRD_LANE3 = 16'h000C; + parameter integer RX_FABRIC_WIDTH0 = 6466; + parameter integer RX_FABRIC_WIDTH1 = 6466; + parameter integer RX_FABRIC_WIDTH2 = 6466; + parameter integer RX_FABRIC_WIDTH3 = 6466; + parameter [15:0] RX_LOOP_CTRL_LANE0 = 16'h007F; + parameter [15:0] RX_LOOP_CTRL_LANE1 = 16'h007F; + parameter [15:0] RX_LOOP_CTRL_LANE2 = 16'h007F; + parameter [15:0] RX_LOOP_CTRL_LANE3 = 16'h007F; + parameter [15:0] RX_MVAL0_LANE0 = 16'h0000; + parameter [15:0] RX_MVAL0_LANE1 = 16'h0000; + parameter [15:0] RX_MVAL0_LANE2 = 16'h0000; + parameter [15:0] RX_MVAL0_LANE3 = 16'h0000; + parameter [15:0] RX_MVAL1_LANE0 = 16'h0000; + parameter [15:0] RX_MVAL1_LANE1 = 16'h0000; + parameter [15:0] RX_MVAL1_LANE2 = 16'h0000; + parameter [15:0] RX_MVAL1_LANE3 = 16'h0000; + parameter [15:0] RX_P0S_CTRL = 16'h1206; + parameter [15:0] RX_P0_CTRL = 16'h11F0; + parameter [15:0] RX_P1_CTRL = 16'h120F; + parameter [15:0] RX_P2_CTRL = 16'h0E0F; + parameter [15:0] RX_PI_CTRL0 = 16'hD2F0; + parameter [15:0] RX_PI_CTRL1 = 16'h0080; + parameter integer SIM_GTHRESET_SPEEDUP = 1; + parameter SIM_VERSION = "1.0"; + parameter [15:0] SLICE_CFG = 16'h0000; + parameter [15:0] SLICE_NOISE_CTRL_0_LANE01 = 16'h0000; + parameter [15:0] SLICE_NOISE_CTRL_0_LANE23 = 16'h0000; + parameter [15:0] SLICE_NOISE_CTRL_1_LANE01 = 16'h0000; + parameter [15:0] SLICE_NOISE_CTRL_1_LANE23 = 16'h0000; + parameter [15:0] SLICE_NOISE_CTRL_2_LANE01 = 16'h7FFF; + parameter [15:0] SLICE_NOISE_CTRL_2_LANE23 = 16'h7FFF; + parameter [15:0] SLICE_TX_RESET_LANE01 = 16'h0000; + parameter [15:0] SLICE_TX_RESET_LANE23 = 16'h0000; + parameter [15:0] TERM_CTRL_LANE0 = 16'h5007; + parameter [15:0] TERM_CTRL_LANE1 = 16'h5007; + parameter [15:0] TERM_CTRL_LANE2 = 16'h5007; + parameter [15:0] TERM_CTRL_LANE3 = 16'h5007; + parameter [15:0] TX_CFG0_LANE0 = 16'h203D; + parameter [15:0] TX_CFG0_LANE1 = 16'h203D; + parameter [15:0] TX_CFG0_LANE2 = 16'h203D; + parameter [15:0] TX_CFG0_LANE3 = 16'h203D; + parameter [15:0] TX_CFG1_LANE0 = 16'h0F00; + parameter [15:0] TX_CFG1_LANE1 = 16'h0F00; + parameter [15:0] TX_CFG1_LANE2 = 16'h0F00; + parameter [15:0] TX_CFG1_LANE3 = 16'h0F00; + parameter [15:0] TX_CFG2_LANE0 = 16'h0081; + parameter [15:0] TX_CFG2_LANE1 = 16'h0081; + parameter [15:0] TX_CFG2_LANE2 = 16'h0081; + parameter [15:0] TX_CFG2_LANE3 = 16'h0081; + parameter [15:0] TX_CLK_SEL0_LANE0 = 16'h2121; + parameter [15:0] TX_CLK_SEL0_LANE1 = 16'h2121; + parameter [15:0] TX_CLK_SEL0_LANE2 = 16'h2121; + parameter [15:0] TX_CLK_SEL0_LANE3 = 16'h2121; + parameter [15:0] TX_CLK_SEL1_LANE0 = 16'h2121; + parameter [15:0] TX_CLK_SEL1_LANE1 = 16'h2121; + parameter [15:0] TX_CLK_SEL1_LANE2 = 16'h2121; + parameter [15:0] TX_CLK_SEL1_LANE3 = 16'h2121; + parameter [15:0] TX_DISABLE_LANE0 = 16'h0000; + parameter [15:0] TX_DISABLE_LANE1 = 16'h0000; + parameter [15:0] TX_DISABLE_LANE2 = 16'h0000; + parameter [15:0] TX_DISABLE_LANE3 = 16'h0000; + parameter integer TX_FABRIC_WIDTH0 = 6466; + parameter integer TX_FABRIC_WIDTH1 = 6466; + parameter integer TX_FABRIC_WIDTH2 = 6466; + parameter integer TX_FABRIC_WIDTH3 = 6466; + parameter [15:0] TX_P0P0S_CTRL = 16'h060C; + parameter [15:0] TX_P1P2_CTRL = 16'h0C39; + parameter [15:0] TX_PREEMPH_LANE0 = 16'h00A1; + parameter [15:0] TX_PREEMPH_LANE1 = 16'h00A1; + parameter [15:0] TX_PREEMPH_LANE2 = 16'h00A1; + parameter [15:0] TX_PREEMPH_LANE3 = 16'h00A1; + parameter [15:0] TX_PWR_RATE_OVRD_LANE0 = 16'h0060; + parameter [15:0] TX_PWR_RATE_OVRD_LANE1 = 16'h0060; + parameter [15:0] TX_PWR_RATE_OVRD_LANE2 = 16'h0060; + parameter [15:0] TX_PWR_RATE_OVRD_LANE3 = 16'h0060; + output DRDY; + output GTHINITDONE; + output MGMTPCSRDACK; + output RXCTRLACK0; + output RXCTRLACK1; + output RXCTRLACK2; + output RXCTRLACK3; + output RXDATATAP0; + output RXDATATAP1; + output RXDATATAP2; + output RXDATATAP3; + output RXPCSCLKSMPL0; + output RXPCSCLKSMPL1; + output RXPCSCLKSMPL2; + output RXPCSCLKSMPL3; + output RXUSERCLKOUT0; + output RXUSERCLKOUT1; + output RXUSERCLKOUT2; + output RXUSERCLKOUT3; + output TSTPATH; + output TSTREFCLKFAB; + output TSTREFCLKOUT; + output TXCTRLACK0; + output TXCTRLACK1; + output TXCTRLACK2; + output TXCTRLACK3; + output TXDATATAP10; + output TXDATATAP11; + output TXDATATAP12; + output TXDATATAP13; + output TXDATATAP20; + output TXDATATAP21; + output TXDATATAP22; + output TXDATATAP23; + output TXN0; + output TXN1; + output TXN2; + output TXN3; + output TXP0; + output TXP1; + output TXP2; + output TXP3; + output TXPCSCLKSMPL0; + output TXPCSCLKSMPL1; + output TXPCSCLKSMPL2; + output TXPCSCLKSMPL3; + output TXUSERCLKOUT0; + output TXUSERCLKOUT1; + output TXUSERCLKOUT2; + output TXUSERCLKOUT3; + output [15:0] DRPDO; + output [15:0] MGMTPCSRDDATA; + output [63:0] RXDATA0; + output [63:0] RXDATA1; + output [63:0] RXDATA2; + output [63:0] RXDATA3; + output [7:0] RXCODEERR0; + output [7:0] RXCODEERR1; + output [7:0] RXCODEERR2; + output [7:0] RXCODEERR3; + output [7:0] RXCTRL0; + output [7:0] RXCTRL1; + output [7:0] RXCTRL2; + output [7:0] RXCTRL3; + output [7:0] RXDISPERR0; + output [7:0] RXDISPERR1; + output [7:0] RXDISPERR2; + output [7:0] RXDISPERR3; + output [7:0] RXVALID0; + output [7:0] RXVALID1; + output [7:0] RXVALID2; + output [7:0] RXVALID3; + input DCLK; + input DEN; + input DFETRAINCTRL0; + input DFETRAINCTRL1; + input DFETRAINCTRL2; + input DFETRAINCTRL3; + input DISABLEDRP; + input DWE; + input GTHINIT; + input GTHRESET; + input GTHX2LANE01; + input GTHX2LANE23; + input GTHX4LANE; + input MGMTPCSREGRD; + input MGMTPCSREGWR; + input POWERDOWN0; + input POWERDOWN1; + input POWERDOWN2; + input POWERDOWN3; + input REFCLK; + input RXBUFRESET0; + input RXBUFRESET1; + input RXBUFRESET2; + input RXBUFRESET3; + input RXENCOMMADET0; + input RXENCOMMADET1; + input RXENCOMMADET2; + input RXENCOMMADET3; + input RXN0; + input RXN1; + input RXN2; + input RXN3; + input RXP0; + input RXP1; + input RXP2; + input RXP3; + input RXPOLARITY0; + input RXPOLARITY1; + input RXPOLARITY2; + input RXPOLARITY3; + input RXSLIP0; + input RXSLIP1; + input RXSLIP2; + input RXSLIP3; + input RXUSERCLKIN0; + input RXUSERCLKIN1; + input RXUSERCLKIN2; + input RXUSERCLKIN3; + input TXBUFRESET0; + input TXBUFRESET1; + input TXBUFRESET2; + input TXBUFRESET3; + input TXDEEMPH0; + input TXDEEMPH1; + input TXDEEMPH2; + input TXDEEMPH3; + input TXUSERCLKIN0; + input TXUSERCLKIN1; + input TXUSERCLKIN2; + input TXUSERCLKIN3; + input [15:0] DADDR; + input [15:0] DI; + input [15:0] MGMTPCSREGADDR; + input [15:0] MGMTPCSWRDATA; + input [1:0] RXPOWERDOWN0; + input [1:0] RXPOWERDOWN1; + input [1:0] RXPOWERDOWN2; + input [1:0] RXPOWERDOWN3; + input [1:0] RXRATE0; + input [1:0] RXRATE1; + input [1:0] RXRATE2; + input [1:0] RXRATE3; + input [1:0] TXPOWERDOWN0; + input [1:0] TXPOWERDOWN1; + input [1:0] TXPOWERDOWN2; + input [1:0] TXPOWERDOWN3; + input [1:0] TXRATE0; + input [1:0] TXRATE1; + input [1:0] TXRATE2; + input [1:0] TXRATE3; + input [2:0] PLLREFCLKSEL; + input [2:0] SAMPLERATE0; + input [2:0] SAMPLERATE1; + input [2:0] SAMPLERATE2; + input [2:0] SAMPLERATE3; + input [2:0] TXMARGIN0; + input [2:0] TXMARGIN1; + input [2:0] TXMARGIN2; + input [2:0] TXMARGIN3; + input [3:0] MGMTPCSLANESEL; + input [4:0] MGMTPCSMMDADDR; + input [5:0] PLLPCSCLKDIV; + input [63:0] TXDATA0; + input [63:0] TXDATA1; + input [63:0] TXDATA2; + input [63:0] TXDATA3; + input [7:0] TXCTRL0; + input [7:0] TXCTRL1; + input [7:0] TXCTRL2; + input [7:0] TXCTRL3; + input [7:0] TXDATAMSB0; + input [7:0] TXDATAMSB1; + input [7:0] TXDATAMSB2; + input [7:0] TXDATAMSB3; +endmodule + +module GTXE1 (...); + parameter AC_CAP_DIS = "TRUE"; + parameter integer ALIGN_COMMA_WORD = 1; + parameter [1:0] BGTEST_CFG = 2'b00; + parameter [16:0] BIAS_CFG = 17'h00000; + parameter [4:0] CDR_PH_ADJ_TIME = 5'b10100; + parameter integer CHAN_BOND_1_MAX_SKEW = 7; + parameter integer CHAN_BOND_2_MAX_SKEW = 1; + parameter CHAN_BOND_KEEP_ALIGN = "FALSE"; + parameter [9:0] CHAN_BOND_SEQ_1_1 = 10'b0101111100; + parameter [9:0] CHAN_BOND_SEQ_1_2 = 10'b0001001010; + parameter [9:0] CHAN_BOND_SEQ_1_3 = 10'b0001001010; + parameter [9:0] CHAN_BOND_SEQ_1_4 = 10'b0110111100; + parameter [3:0] CHAN_BOND_SEQ_1_ENABLE = 4'b1111; + parameter [9:0] CHAN_BOND_SEQ_2_1 = 10'b0100111100; + parameter [9:0] CHAN_BOND_SEQ_2_2 = 10'b0100111100; + parameter [9:0] CHAN_BOND_SEQ_2_3 = 10'b0110111100; + parameter [9:0] CHAN_BOND_SEQ_2_4 = 10'b0100111100; + parameter [4:0] CHAN_BOND_SEQ_2_CFG = 5'b00000; + parameter [3:0] CHAN_BOND_SEQ_2_ENABLE = 4'b1111; + parameter CHAN_BOND_SEQ_2_USE = "FALSE"; + parameter integer CHAN_BOND_SEQ_LEN = 1; + parameter CLK_CORRECT_USE = "TRUE"; + parameter integer CLK_COR_ADJ_LEN = 1; + parameter integer CLK_COR_DET_LEN = 1; + parameter CLK_COR_INSERT_IDLE_FLAG = "FALSE"; + parameter CLK_COR_KEEP_IDLE = "FALSE"; + parameter integer CLK_COR_MAX_LAT = 20; + parameter integer CLK_COR_MIN_LAT = 18; + parameter CLK_COR_PRECEDENCE = "TRUE"; + parameter integer CLK_COR_REPEAT_WAIT = 0; + parameter [9:0] CLK_COR_SEQ_1_1 = 10'b0100011100; + parameter [9:0] CLK_COR_SEQ_1_2 = 10'b0000000000; + parameter [9:0] CLK_COR_SEQ_1_3 = 10'b0000000000; + parameter [9:0] CLK_COR_SEQ_1_4 = 10'b0000000000; + parameter [3:0] CLK_COR_SEQ_1_ENABLE = 4'b1111; + parameter [9:0] CLK_COR_SEQ_2_1 = 10'b0000000000; + parameter [9:0] CLK_COR_SEQ_2_2 = 10'b0000000000; + parameter [9:0] CLK_COR_SEQ_2_3 = 10'b0000000000; + parameter [9:0] CLK_COR_SEQ_2_4 = 10'b0000000000; + parameter [3:0] CLK_COR_SEQ_2_ENABLE = 4'b1111; + parameter CLK_COR_SEQ_2_USE = "FALSE"; + parameter [1:0] CM_TRIM = 2'b01; + parameter [9:0] COMMA_10B_ENABLE = 10'b1111111111; + parameter COMMA_DOUBLE = "FALSE"; + parameter [3:0] COM_BURST_VAL = 4'b1111; + parameter DEC_MCOMMA_DETECT = "TRUE"; + parameter DEC_PCOMMA_DETECT = "TRUE"; + parameter DEC_VALID_COMMA_ONLY = "TRUE"; + parameter [4:0] DFE_CAL_TIME = 5'b01100; + parameter [7:0] DFE_CFG = 8'b00011011; + parameter [2:0] GEARBOX_ENDEC = 3'b000; + parameter GEN_RXUSRCLK = "TRUE"; + parameter GEN_TXUSRCLK = "TRUE"; + parameter GTX_CFG_PWRUP = "TRUE"; + parameter [9:0] MCOMMA_10B_VALUE = 10'b1010000011; + parameter MCOMMA_DETECT = "TRUE"; + parameter [2:0] OOBDETECT_THRESHOLD = 3'b011; + parameter PCI_EXPRESS_MODE = "FALSE"; + parameter [9:0] PCOMMA_10B_VALUE = 10'b0101111100; + parameter PCOMMA_DETECT = "TRUE"; + parameter PMA_CAS_CLK_EN = "FALSE"; + parameter [26:0] PMA_CDR_SCAN = 27'h640404C; + parameter [75:0] PMA_CFG = 76'h0040000040000000003; + parameter [6:0] PMA_RXSYNC_CFG = 7'h00; + parameter [24:0] PMA_RX_CFG = 25'h05CE048; + parameter [19:0] PMA_TX_CFG = 20'h00082; + parameter [9:0] POWER_SAVE = 10'b0000110100; + parameter RCV_TERM_GND = "FALSE"; + parameter RCV_TERM_VTTRX = "TRUE"; + parameter RXGEARBOX_USE = "FALSE"; + parameter [23:0] RXPLL_COM_CFG = 24'h21680A; + parameter [7:0] RXPLL_CP_CFG = 8'h00; + parameter integer RXPLL_DIVSEL45_FB = 5; + parameter integer RXPLL_DIVSEL_FB = 2; + parameter integer RXPLL_DIVSEL_OUT = 1; + parameter integer RXPLL_DIVSEL_REF = 1; + parameter [2:0] RXPLL_LKDET_CFG = 3'b111; + parameter [0:0] RXPRBSERR_LOOPBACK = 1'b0; + parameter RXRECCLK_CTRL = "RXRECCLKPCS"; + parameter [9:0] RXRECCLK_DLY = 10'b0000000000; + parameter [15:0] RXUSRCLK_DLY = 16'h0000; + parameter RX_BUFFER_USE = "TRUE"; + parameter integer RX_CLK25_DIVIDER = 6; + parameter integer RX_DATA_WIDTH = 20; + parameter RX_DECODE_SEQ_MATCH = "TRUE"; + parameter [3:0] RX_DLYALIGN_CTRINC = 4'b0100; + parameter [4:0] RX_DLYALIGN_EDGESET = 5'b00110; + parameter [3:0] RX_DLYALIGN_LPFINC = 4'b0111; + parameter [2:0] RX_DLYALIGN_MONSEL = 3'b000; + parameter [7:0] RX_DLYALIGN_OVRDSETTING = 8'b00000000; + parameter RX_EN_IDLE_HOLD_CDR = "FALSE"; + parameter RX_EN_IDLE_HOLD_DFE = "TRUE"; + parameter RX_EN_IDLE_RESET_BUF = "TRUE"; + parameter RX_EN_IDLE_RESET_FR = "TRUE"; + parameter RX_EN_IDLE_RESET_PH = "TRUE"; + parameter RX_EN_MODE_RESET_BUF = "TRUE"; + parameter RX_EN_RATE_RESET_BUF = "TRUE"; + parameter RX_EN_REALIGN_RESET_BUF = "FALSE"; + parameter RX_EN_REALIGN_RESET_BUF2 = "FALSE"; + parameter [7:0] RX_EYE_OFFSET = 8'h4C; + parameter [1:0] RX_EYE_SCANMODE = 2'b00; + parameter RX_FIFO_ADDR_MODE = "FULL"; + parameter [3:0] RX_IDLE_HI_CNT = 4'b1000; + parameter [3:0] RX_IDLE_LO_CNT = 4'b0000; + parameter RX_LOSS_OF_SYNC_FSM = "FALSE"; + parameter integer RX_LOS_INVALID_INCR = 1; + parameter integer RX_LOS_THRESHOLD = 4; + parameter RX_OVERSAMPLE_MODE = "FALSE"; + parameter integer RX_SLIDE_AUTO_WAIT = 5; + parameter RX_SLIDE_MODE = "OFF"; + parameter RX_XCLK_SEL = "RXREC"; + parameter integer SAS_MAX_COMSAS = 52; + parameter integer SAS_MIN_COMSAS = 40; + parameter [2:0] SATA_BURST_VAL = 3'b100; + parameter [2:0] SATA_IDLE_VAL = 3'b100; + parameter integer SATA_MAX_BURST = 7; + parameter integer SATA_MAX_INIT = 22; + parameter integer SATA_MAX_WAKE = 7; + parameter integer SATA_MIN_BURST = 4; + parameter integer SATA_MIN_INIT = 12; + parameter integer SATA_MIN_WAKE = 4; + parameter SHOW_REALIGN_COMMA = "TRUE"; + parameter integer SIM_GTXRESET_SPEEDUP = 1; + parameter SIM_RECEIVER_DETECT_PASS = "TRUE"; + parameter [2:0] SIM_RXREFCLK_SOURCE = 3'b000; + parameter [2:0] SIM_TXREFCLK_SOURCE = 3'b000; + parameter SIM_TX_ELEC_IDLE_LEVEL = "X"; + parameter SIM_VERSION = "2.0"; + parameter [4:0] TERMINATION_CTRL = 5'b10100; + parameter TERMINATION_OVRD = "FALSE"; + parameter [11:0] TRANS_TIME_FROM_P2 = 12'h03C; + parameter [7:0] TRANS_TIME_NON_P2 = 8'h19; + parameter [7:0] TRANS_TIME_RATE = 8'h0E; + parameter [9:0] TRANS_TIME_TO_P2 = 10'h064; + parameter [31:0] TST_ATTR = 32'h00000000; + parameter TXDRIVE_LOOPBACK_HIZ = "FALSE"; + parameter TXDRIVE_LOOPBACK_PD = "FALSE"; + parameter TXGEARBOX_USE = "FALSE"; + parameter TXOUTCLK_CTRL = "TXOUTCLKPCS"; + parameter [9:0] TXOUTCLK_DLY = 10'b0000000000; + parameter [23:0] TXPLL_COM_CFG = 24'h21680A; + parameter [7:0] TXPLL_CP_CFG = 8'h00; + parameter integer TXPLL_DIVSEL45_FB = 5; + parameter integer TXPLL_DIVSEL_FB = 2; + parameter integer TXPLL_DIVSEL_OUT = 1; + parameter integer TXPLL_DIVSEL_REF = 1; + parameter [2:0] TXPLL_LKDET_CFG = 3'b111; + parameter [1:0] TXPLL_SATA = 2'b00; + parameter TX_BUFFER_USE = "TRUE"; + parameter [5:0] TX_BYTECLK_CFG = 6'h00; + parameter integer TX_CLK25_DIVIDER = 6; + parameter TX_CLK_SOURCE = "RXPLL"; + parameter integer TX_DATA_WIDTH = 20; + parameter [4:0] TX_DEEMPH_0 = 5'b11010; + parameter [4:0] TX_DEEMPH_1 = 5'b10000; + parameter [13:0] TX_DETECT_RX_CFG = 14'h1832; + parameter [3:0] TX_DLYALIGN_CTRINC = 4'b0100; + parameter [3:0] TX_DLYALIGN_LPFINC = 4'b0110; + parameter [2:0] TX_DLYALIGN_MONSEL = 3'b000; + parameter [7:0] TX_DLYALIGN_OVRDSETTING = 8'b10000000; + parameter TX_DRIVE_MODE = "DIRECT"; + parameter TX_EN_RATE_RESET_BUF = "TRUE"; + parameter [2:0] TX_IDLE_ASSERT_DELAY = 3'b100; + parameter [2:0] TX_IDLE_DEASSERT_DELAY = 3'b010; + parameter [6:0] TX_MARGIN_FULL_0 = 7'b1001110; + parameter [6:0] TX_MARGIN_FULL_1 = 7'b1001001; + parameter [6:0] TX_MARGIN_FULL_2 = 7'b1000101; + parameter [6:0] TX_MARGIN_FULL_3 = 7'b1000010; + parameter [6:0] TX_MARGIN_FULL_4 = 7'b1000000; + parameter [6:0] TX_MARGIN_LOW_0 = 7'b1000110; + parameter [6:0] TX_MARGIN_LOW_1 = 7'b1000100; + parameter [6:0] TX_MARGIN_LOW_2 = 7'b1000010; + parameter [6:0] TX_MARGIN_LOW_3 = 7'b1000000; + parameter [6:0] TX_MARGIN_LOW_4 = 7'b1000000; + parameter TX_OVERSAMPLE_MODE = "FALSE"; + parameter [0:0] TX_PMADATA_OPT = 1'b0; + parameter [1:0] TX_TDCC_CFG = 2'b11; + parameter [5:0] TX_USRCLK_CFG = 6'h00; + parameter TX_XCLK_SEL = "TXUSR"; + output COMFINISH; + output COMINITDET; + output COMSASDET; + output COMWAKEDET; + output DRDY; + output PHYSTATUS; + output RXBYTEISALIGNED; + output RXBYTEREALIGN; + output RXCHANBONDSEQ; + output RXCHANISALIGNED; + output RXCHANREALIGN; + output RXCOMMADET; + output RXDATAVALID; + output RXELECIDLE; + output RXHEADERVALID; + output RXOVERSAMPLEERR; + output RXPLLLKDET; + output RXPRBSERR; + output RXRATEDONE; + output RXRECCLK; + output RXRECCLKPCS; + output RXRESETDONE; + output RXSTARTOFSEQ; + output RXVALID; + output TXGEARBOXREADY; + output TXN; + output TXOUTCLK; + output TXOUTCLKPCS; + output TXP; + output TXPLLLKDET; + output TXRATEDONE; + output TXRESETDONE; + output [15:0] DRPDO; + output [1:0] MGTREFCLKFAB; + output [1:0] RXLOSSOFSYNC; + output [1:0] TXBUFSTATUS; + output [2:0] DFESENSCAL; + output [2:0] RXBUFSTATUS; + output [2:0] RXCLKCORCNT; + output [2:0] RXHEADER; + output [2:0] RXSTATUS; + output [31:0] RXDATA; + output [3:0] DFETAP3MONITOR; + output [3:0] DFETAP4MONITOR; + output [3:0] RXCHARISCOMMA; + output [3:0] RXCHARISK; + output [3:0] RXCHBONDO; + output [3:0] RXDISPERR; + output [3:0] RXNOTINTABLE; + output [3:0] RXRUNDISP; + output [3:0] TXKERR; + output [3:0] TXRUNDISP; + output [4:0] DFEEYEDACMON; + output [4:0] DFETAP1MONITOR; + output [4:0] DFETAP2MONITOR; + output [5:0] DFECLKDLYADJMON; + output [7:0] RXDLYALIGNMONITOR; + output [7:0] TXDLYALIGNMONITOR; + output [9:0] TSTOUT; + input DCLK; + input DEN; + input DFEDLYOVRD; + input DFETAPOVRD; + input DWE; + input GATERXELECIDLE; + input GREFCLKRX; + input GREFCLKTX; + input GTXRXRESET; + input GTXTXRESET; + input IGNORESIGDET; + input PERFCLKRX; + input PERFCLKTX; + input PLLRXRESET; + input PLLTXRESET; + input PRBSCNTRESET; + input RXBUFRESET; + input RXCDRRESET; + input RXCHBONDMASTER; + input RXCHBONDSLAVE; + input RXCOMMADETUSE; + input RXDEC8B10BUSE; + input RXDLYALIGNDISABLE; + input RXDLYALIGNMONENB; + input RXDLYALIGNOVERRIDE; + input RXDLYALIGNRESET; + input RXDLYALIGNSWPPRECURB; + input RXDLYALIGNUPDSW; + input RXENCHANSYNC; + input RXENMCOMMAALIGN; + input RXENPCOMMAALIGN; + input RXENPMAPHASEALIGN; + input RXENSAMPLEALIGN; + input RXGEARBOXSLIP; + input RXN; + input RXP; + input RXPLLLKDETEN; + input RXPLLPOWERDOWN; + input RXPMASETPHASE; + input RXPOLARITY; + input RXRESET; + input RXSLIDE; + input RXUSRCLK2; + input RXUSRCLK; + input TSTCLK0; + input TSTCLK1; + input TXCOMINIT; + input TXCOMSAS; + input TXCOMWAKE; + input TXDEEMPH; + input TXDETECTRX; + input TXDLYALIGNDISABLE; + input TXDLYALIGNMONENB; + input TXDLYALIGNOVERRIDE; + input TXDLYALIGNRESET; + input TXDLYALIGNUPDSW; + input TXELECIDLE; + input TXENC8B10BUSE; + input TXENPMAPHASEALIGN; + input TXINHIBIT; + input TXPDOWNASYNCH; + input TXPLLLKDETEN; + input TXPLLPOWERDOWN; + input TXPMASETPHASE; + input TXPOLARITY; + input TXPRBSFORCEERR; + input TXRESET; + input TXSTARTSEQ; + input TXSWING; + input TXUSRCLK2; + input TXUSRCLK; + input USRCODEERR; + input [12:0] GTXTEST; + input [15:0] DI; + input [19:0] TSTIN; + input [1:0] MGTREFCLKRX; + input [1:0] MGTREFCLKTX; + input [1:0] NORTHREFCLKRX; + input [1:0] NORTHREFCLKTX; + input [1:0] RXPOWERDOWN; + input [1:0] RXRATE; + input [1:0] SOUTHREFCLKRX; + input [1:0] SOUTHREFCLKTX; + input [1:0] TXPOWERDOWN; + input [1:0] TXRATE; + input [2:0] LOOPBACK; + input [2:0] RXCHBONDLEVEL; + input [2:0] RXENPRBSTST; + input [2:0] RXPLLREFSELDY; + input [2:0] TXBUFDIFFCTRL; + input [2:0] TXENPRBSTST; + input [2:0] TXHEADER; + input [2:0] TXMARGIN; + input [2:0] TXPLLREFSELDY; + input [31:0] TXDATA; + input [3:0] DFETAP3; + input [3:0] DFETAP4; + input [3:0] RXCHBONDI; + input [3:0] TXBYPASS8B10B; + input [3:0] TXCHARDISPMODE; + input [3:0] TXCHARDISPVAL; + input [3:0] TXCHARISK; + input [3:0] TXDIFFCTRL; + input [3:0] TXPREEMPHASIS; + input [4:0] DFETAP1; + input [4:0] DFETAP2; + input [4:0] TXPOSTEMPHASIS; + input [5:0] DFECLKDLYADJ; + input [6:0] TXSEQUENCE; + input [7:0] DADDR; + input [9:0] RXEQMIX; +endmodule + +module IBUFDS_GTXE1 (...); + parameter CLKCM_CFG = "TRUE"; + parameter CLKRCV_TRST = "TRUE"; + parameter [9:0] REFCLKOUT_DLY = 10'b0000000000; + output O; + output ODIV2; + input CEB; + (* iopad_external_pin *) + input I; + (* iopad_external_pin *) + input IB; +endmodule + +module IBUFDS_GTHE1 (...); + output O; + (* iopad_external_pin *) + input I; + (* iopad_external_pin *) + input IB; +endmodule + +module GTHE2_CHANNEL (...); + parameter [0:0] ACJTAG_DEBUG_MODE = 1'b0; + parameter [0:0] ACJTAG_MODE = 1'b0; + parameter [0:0] ACJTAG_RESET = 1'b0; + parameter [19:0] ADAPT_CFG0 = 20'h00C10; + parameter ALIGN_COMMA_DOUBLE = "FALSE"; + parameter [9:0] ALIGN_COMMA_ENABLE = 10'b0001111111; + parameter integer ALIGN_COMMA_WORD = 1; + parameter ALIGN_MCOMMA_DET = "TRUE"; + parameter [9:0] ALIGN_MCOMMA_VALUE = 10'b1010000011; + parameter ALIGN_PCOMMA_DET = "TRUE"; + parameter [9:0] ALIGN_PCOMMA_VALUE = 10'b0101111100; + parameter [0:0] A_RXOSCALRESET = 1'b0; + parameter CBCC_DATA_SOURCE_SEL = "DECODED"; + parameter [41:0] CFOK_CFG = 42'h24800040E80; + parameter [5:0] CFOK_CFG2 = 6'b100000; + parameter [5:0] CFOK_CFG3 = 6'b100000; + parameter CHAN_BOND_KEEP_ALIGN = "FALSE"; + parameter integer CHAN_BOND_MAX_SKEW = 7; + parameter [9:0] CHAN_BOND_SEQ_1_1 = 10'b0101111100; + parameter [9:0] CHAN_BOND_SEQ_1_2 = 10'b0000000000; + parameter [9:0] CHAN_BOND_SEQ_1_3 = 10'b0000000000; + parameter [9:0] CHAN_BOND_SEQ_1_4 = 10'b0000000000; + parameter [3:0] CHAN_BOND_SEQ_1_ENABLE = 4'b1111; + parameter [9:0] CHAN_BOND_SEQ_2_1 = 10'b0100000000; + parameter [9:0] CHAN_BOND_SEQ_2_2 = 10'b0100000000; + parameter [9:0] CHAN_BOND_SEQ_2_3 = 10'b0100000000; + parameter [9:0] CHAN_BOND_SEQ_2_4 = 10'b0100000000; + parameter [3:0] CHAN_BOND_SEQ_2_ENABLE = 4'b1111; + parameter CHAN_BOND_SEQ_2_USE = "FALSE"; + parameter integer CHAN_BOND_SEQ_LEN = 1; + parameter CLK_CORRECT_USE = "TRUE"; + parameter CLK_COR_KEEP_IDLE = "FALSE"; + parameter integer CLK_COR_MAX_LAT = 20; + parameter integer CLK_COR_MIN_LAT = 18; + parameter CLK_COR_PRECEDENCE = "TRUE"; + parameter integer CLK_COR_REPEAT_WAIT = 0; + parameter [9:0] CLK_COR_SEQ_1_1 = 10'b0100011100; + parameter [9:0] CLK_COR_SEQ_1_2 = 10'b0000000000; + parameter [9:0] CLK_COR_SEQ_1_3 = 10'b0000000000; + parameter [9:0] CLK_COR_SEQ_1_4 = 10'b0000000000; + parameter [3:0] CLK_COR_SEQ_1_ENABLE = 4'b1111; + parameter [9:0] CLK_COR_SEQ_2_1 = 10'b0100000000; + parameter [9:0] CLK_COR_SEQ_2_2 = 10'b0100000000; + parameter [9:0] CLK_COR_SEQ_2_3 = 10'b0100000000; + parameter [9:0] CLK_COR_SEQ_2_4 = 10'b0100000000; + parameter [3:0] CLK_COR_SEQ_2_ENABLE = 4'b1111; + parameter CLK_COR_SEQ_2_USE = "FALSE"; + parameter integer CLK_COR_SEQ_LEN = 1; + parameter [28:0] CPLL_CFG = 29'h00BC07DC; + parameter integer CPLL_FBDIV = 4; + parameter integer CPLL_FBDIV_45 = 5; + parameter [23:0] CPLL_INIT_CFG = 24'h00001E; + parameter [15:0] CPLL_LOCK_CFG = 16'h01E8; + parameter integer CPLL_REFCLK_DIV = 1; + parameter DEC_MCOMMA_DETECT = "TRUE"; + parameter DEC_PCOMMA_DETECT = "TRUE"; + parameter DEC_VALID_COMMA_ONLY = "TRUE"; + parameter [23:0] DMONITOR_CFG = 24'h000A00; + parameter [0:0] ES_CLK_PHASE_SEL = 1'b0; + parameter [5:0] ES_CONTROL = 6'b000000; + parameter ES_ERRDET_EN = "FALSE"; + parameter ES_EYE_SCAN_EN = "TRUE"; + parameter [11:0] ES_HORZ_OFFSET = 12'h000; + parameter [9:0] ES_PMA_CFG = 10'b0000000000; + parameter [4:0] ES_PRESCALE = 5'b00000; + parameter [79:0] ES_QUALIFIER = 80'h00000000000000000000; + parameter [79:0] ES_QUAL_MASK = 80'h00000000000000000000; + parameter [79:0] ES_SDATA_MASK = 80'h00000000000000000000; + parameter [8:0] ES_VERT_OFFSET = 9'b000000000; + parameter [3:0] FTS_DESKEW_SEQ_ENABLE = 4'b1111; + parameter [3:0] FTS_LANE_DESKEW_CFG = 4'b1111; + parameter FTS_LANE_DESKEW_EN = "FALSE"; + parameter [2:0] GEARBOX_MODE = 3'b000; + parameter [0:0] IS_CLKRSVD0_INVERTED = 1'b0; + parameter [0:0] IS_CLKRSVD1_INVERTED = 1'b0; + parameter [0:0] IS_CPLLLOCKDETCLK_INVERTED = 1'b0; + parameter [0:0] IS_DMONITORCLK_INVERTED = 1'b0; + parameter [0:0] IS_DRPCLK_INVERTED = 1'b0; + parameter [0:0] IS_GTGREFCLK_INVERTED = 1'b0; + parameter [0:0] IS_RXUSRCLK2_INVERTED = 1'b0; + parameter [0:0] IS_RXUSRCLK_INVERTED = 1'b0; + parameter [0:0] IS_SIGVALIDCLK_INVERTED = 1'b0; + parameter [0:0] IS_TXPHDLYTSTCLK_INVERTED = 1'b0; + parameter [0:0] IS_TXUSRCLK2_INVERTED = 1'b0; + parameter [0:0] IS_TXUSRCLK_INVERTED = 1'b0; + parameter [0:0] LOOPBACK_CFG = 1'b0; + parameter [1:0] OUTREFCLK_SEL_INV = 2'b11; + parameter PCS_PCIE_EN = "FALSE"; + parameter [47:0] PCS_RSVD_ATTR = 48'h000000000000; + parameter [11:0] PD_TRANS_TIME_FROM_P2 = 12'h03C; + parameter [7:0] PD_TRANS_TIME_NONE_P2 = 8'h19; + parameter [7:0] PD_TRANS_TIME_TO_P2 = 8'h64; + parameter [31:0] PMA_RSV = 32'b00000000000000000000000010000000; + parameter [31:0] PMA_RSV2 = 32'b00011100000000000000000000001010; + parameter [1:0] PMA_RSV3 = 2'b00; + parameter [14:0] PMA_RSV4 = 15'b000000000001000; + parameter [3:0] PMA_RSV5 = 4'b0000; + parameter [0:0] RESET_POWERSAVE_DISABLE = 1'b0; + parameter [4:0] RXBUFRESET_TIME = 5'b00001; + parameter RXBUF_ADDR_MODE = "FULL"; + parameter [3:0] RXBUF_EIDLE_HI_CNT = 4'b1000; + parameter [3:0] RXBUF_EIDLE_LO_CNT = 4'b0000; + parameter RXBUF_EN = "TRUE"; + parameter RXBUF_RESET_ON_CB_CHANGE = "TRUE"; + parameter RXBUF_RESET_ON_COMMAALIGN = "FALSE"; + parameter RXBUF_RESET_ON_EIDLE = "FALSE"; + parameter RXBUF_RESET_ON_RATE_CHANGE = "TRUE"; + parameter integer RXBUF_THRESH_OVFLW = 61; + parameter RXBUF_THRESH_OVRD = "FALSE"; + parameter integer RXBUF_THRESH_UNDFLW = 4; + parameter [4:0] RXCDRFREQRESET_TIME = 5'b00001; + parameter [4:0] RXCDRPHRESET_TIME = 5'b00001; + parameter [82:0] RXCDR_CFG = 83'h0002007FE2000C208001A; + parameter [0:0] RXCDR_FR_RESET_ON_EIDLE = 1'b0; + parameter [0:0] RXCDR_HOLD_DURING_EIDLE = 1'b0; + parameter [5:0] RXCDR_LOCK_CFG = 6'b001001; + parameter [0:0] RXCDR_PH_RESET_ON_EIDLE = 1'b0; + parameter [6:0] RXDFELPMRESET_TIME = 7'b0001111; + parameter [15:0] RXDLY_CFG = 16'h001F; + parameter [8:0] RXDLY_LCFG = 9'h030; + parameter [15:0] RXDLY_TAP_CFG = 16'h0000; + parameter RXGEARBOX_EN = "FALSE"; + parameter [4:0] RXISCANRESET_TIME = 5'b00001; + parameter [13:0] RXLPM_HF_CFG = 14'b00001000000000; + parameter [17:0] RXLPM_LF_CFG = 18'b001001000000000000; + parameter [6:0] RXOOB_CFG = 7'b0000110; + parameter RXOOB_CLK_CFG = "PMA"; + parameter [4:0] RXOSCALRESET_TIME = 5'b00011; + parameter [4:0] RXOSCALRESET_TIMEOUT = 5'b00000; + parameter integer RXOUT_DIV = 2; + parameter [4:0] RXPCSRESET_TIME = 5'b00001; + parameter [23:0] RXPHDLY_CFG = 24'h084020; + parameter [23:0] RXPH_CFG = 24'hC00002; + parameter [4:0] RXPH_MONITOR_SEL = 5'b00000; + parameter [1:0] RXPI_CFG0 = 2'b00; + parameter [1:0] RXPI_CFG1 = 2'b00; + parameter [1:0] RXPI_CFG2 = 2'b00; + parameter [1:0] RXPI_CFG3 = 2'b00; + parameter [0:0] RXPI_CFG4 = 1'b0; + parameter [0:0] RXPI_CFG5 = 1'b0; + parameter [2:0] RXPI_CFG6 = 3'b100; + parameter [4:0] RXPMARESET_TIME = 5'b00011; + parameter [0:0] RXPRBS_ERR_LOOPBACK = 1'b0; + parameter integer RXSLIDE_AUTO_WAIT = 7; + parameter RXSLIDE_MODE = "OFF"; + parameter [0:0] RXSYNC_MULTILANE = 1'b0; + parameter [0:0] RXSYNC_OVRD = 1'b0; + parameter [0:0] RXSYNC_SKIP_DA = 1'b0; + parameter [23:0] RX_BIAS_CFG = 24'b000011000000000000010000; + parameter [5:0] RX_BUFFER_CFG = 6'b000000; + parameter integer RX_CLK25_DIV = 7; + parameter [0:0] RX_CLKMUX_PD = 1'b1; + parameter [1:0] RX_CM_SEL = 2'b11; + parameter [3:0] RX_CM_TRIM = 4'b0100; + parameter integer RX_DATA_WIDTH = 20; + parameter [5:0] RX_DDI_SEL = 6'b000000; + parameter [13:0] RX_DEBUG_CFG = 14'b00000000000000; + parameter RX_DEFER_RESET_BUF_EN = "TRUE"; + parameter [3:0] RX_DFELPM_CFG0 = 4'b0110; + parameter [0:0] RX_DFELPM_CFG1 = 1'b0; + parameter [0:0] RX_DFELPM_KLKH_AGC_STUP_EN = 1'b1; + parameter [1:0] RX_DFE_AGC_CFG0 = 2'b00; + parameter [2:0] RX_DFE_AGC_CFG1 = 3'b010; + parameter [3:0] RX_DFE_AGC_CFG2 = 4'b0000; + parameter [0:0] RX_DFE_AGC_OVRDEN = 1'b1; + parameter [22:0] RX_DFE_GAIN_CFG = 23'h0020C0; + parameter [11:0] RX_DFE_H2_CFG = 12'b000000000000; + parameter [11:0] RX_DFE_H3_CFG = 12'b000001000000; + parameter [10:0] RX_DFE_H4_CFG = 11'b00011100000; + parameter [10:0] RX_DFE_H5_CFG = 11'b00011100000; + parameter [10:0] RX_DFE_H6_CFG = 11'b00000100000; + parameter [10:0] RX_DFE_H7_CFG = 11'b00000100000; + parameter [32:0] RX_DFE_KL_CFG = 33'b000000000000000000000001100010000; + parameter [1:0] RX_DFE_KL_LPM_KH_CFG0 = 2'b01; + parameter [2:0] RX_DFE_KL_LPM_KH_CFG1 = 3'b010; + parameter [3:0] RX_DFE_KL_LPM_KH_CFG2 = 4'b0010; + parameter [0:0] RX_DFE_KL_LPM_KH_OVRDEN = 1'b1; + parameter [1:0] RX_DFE_KL_LPM_KL_CFG0 = 2'b10; + parameter [2:0] RX_DFE_KL_LPM_KL_CFG1 = 3'b010; + parameter [3:0] RX_DFE_KL_LPM_KL_CFG2 = 4'b0010; + parameter [0:0] RX_DFE_KL_LPM_KL_OVRDEN = 1'b1; + parameter [15:0] RX_DFE_LPM_CFG = 16'h0080; + parameter [0:0] RX_DFE_LPM_HOLD_DURING_EIDLE = 1'b0; + parameter [53:0] RX_DFE_ST_CFG = 54'h00E100000C003F; + parameter [16:0] RX_DFE_UT_CFG = 17'b00011100000000000; + parameter [16:0] RX_DFE_VP_CFG = 17'b00011101010100011; + parameter RX_DISPERR_SEQ_MATCH = "TRUE"; + parameter integer RX_INT_DATAWIDTH = 0; + parameter [12:0] RX_OS_CFG = 13'b0000010000000; + parameter integer RX_SIG_VALID_DLY = 10; + parameter RX_XCLK_SEL = "RXREC"; + parameter integer SAS_MAX_COM = 64; + parameter integer SAS_MIN_COM = 36; + parameter [3:0] SATA_BURST_SEQ_LEN = 4'b1111; + parameter [2:0] SATA_BURST_VAL = 3'b100; + parameter SATA_CPLL_CFG = "VCO_3000MHZ"; + parameter [2:0] SATA_EIDLE_VAL = 3'b100; + parameter integer SATA_MAX_BURST = 8; + parameter integer SATA_MAX_INIT = 21; + parameter integer SATA_MAX_WAKE = 7; + parameter integer SATA_MIN_BURST = 4; + parameter integer SATA_MIN_INIT = 12; + parameter integer SATA_MIN_WAKE = 4; + parameter SHOW_REALIGN_COMMA = "TRUE"; + parameter [2:0] SIM_CPLLREFCLK_SEL = 3'b001; + parameter SIM_RECEIVER_DETECT_PASS = "TRUE"; + parameter SIM_RESET_SPEEDUP = "TRUE"; + parameter SIM_TX_EIDLE_DRIVE_LEVEL = "X"; + parameter SIM_VERSION = "1.1"; + parameter [14:0] TERM_RCAL_CFG = 15'b100001000010000; + parameter [2:0] TERM_RCAL_OVRD = 3'b000; + parameter [7:0] TRANS_TIME_RATE = 8'h0E; + parameter [31:0] TST_RSV = 32'h00000000; + parameter TXBUF_EN = "TRUE"; + parameter TXBUF_RESET_ON_RATE_CHANGE = "FALSE"; + parameter [15:0] TXDLY_CFG = 16'h001F; + parameter [8:0] TXDLY_LCFG = 9'h030; + parameter [15:0] TXDLY_TAP_CFG = 16'h0000; + parameter TXGEARBOX_EN = "FALSE"; + parameter [0:0] TXOOB_CFG = 1'b0; + parameter integer TXOUT_DIV = 2; + parameter [4:0] TXPCSRESET_TIME = 5'b00001; + parameter [23:0] TXPHDLY_CFG = 24'h084020; + parameter [15:0] TXPH_CFG = 16'h0780; + parameter [4:0] TXPH_MONITOR_SEL = 5'b00000; + parameter [1:0] TXPI_CFG0 = 2'b00; + parameter [1:0] TXPI_CFG1 = 2'b00; + parameter [1:0] TXPI_CFG2 = 2'b00; + parameter [0:0] TXPI_CFG3 = 1'b0; + parameter [0:0] TXPI_CFG4 = 1'b0; + parameter [2:0] TXPI_CFG5 = 3'b100; + parameter [0:0] TXPI_GREY_SEL = 1'b0; + parameter [0:0] TXPI_INVSTROBE_SEL = 1'b0; + parameter TXPI_PPMCLK_SEL = "TXUSRCLK2"; + parameter [7:0] TXPI_PPM_CFG = 8'b00000000; + parameter [2:0] TXPI_SYNFREQ_PPM = 3'b000; + parameter [4:0] TXPMARESET_TIME = 5'b00001; + parameter [0:0] TXSYNC_MULTILANE = 1'b0; + parameter [0:0] TXSYNC_OVRD = 1'b0; + parameter [0:0] TXSYNC_SKIP_DA = 1'b0; + parameter integer TX_CLK25_DIV = 7; + parameter [0:0] TX_CLKMUX_PD = 1'b1; + parameter integer TX_DATA_WIDTH = 20; + parameter [5:0] TX_DEEMPH0 = 6'b000000; + parameter [5:0] TX_DEEMPH1 = 6'b000000; + parameter TX_DRIVE_MODE = "DIRECT"; + parameter [2:0] TX_EIDLE_ASSERT_DELAY = 3'b110; + parameter [2:0] TX_EIDLE_DEASSERT_DELAY = 3'b100; + parameter integer TX_INT_DATAWIDTH = 0; + parameter TX_LOOPBACK_DRIVE_HIZ = "FALSE"; + parameter [0:0] TX_MAINCURSOR_SEL = 1'b0; + parameter [6:0] TX_MARGIN_FULL_0 = 7'b1001110; + parameter [6:0] TX_MARGIN_FULL_1 = 7'b1001001; + parameter [6:0] TX_MARGIN_FULL_2 = 7'b1000101; + parameter [6:0] TX_MARGIN_FULL_3 = 7'b1000010; + parameter [6:0] TX_MARGIN_FULL_4 = 7'b1000000; + parameter [6:0] TX_MARGIN_LOW_0 = 7'b1000110; + parameter [6:0] TX_MARGIN_LOW_1 = 7'b1000100; + parameter [6:0] TX_MARGIN_LOW_2 = 7'b1000010; + parameter [6:0] TX_MARGIN_LOW_3 = 7'b1000000; + parameter [6:0] TX_MARGIN_LOW_4 = 7'b1000000; + parameter [0:0] TX_QPI_STATUS_EN = 1'b0; + parameter [13:0] TX_RXDETECT_CFG = 14'h1832; + parameter [16:0] TX_RXDETECT_PRECHARGE_TIME = 17'h00000; + parameter [2:0] TX_RXDETECT_REF = 3'b100; + parameter TX_XCLK_SEL = "TXUSR"; + parameter [0:0] UCODEER_CLR = 1'b0; + parameter [0:0] USE_PCS_CLK_PHASE_SEL = 1'b0; + output CPLLFBCLKLOST; + output CPLLLOCK; + output CPLLREFCLKLOST; + output DRPRDY; + output EYESCANDATAERROR; + output GTHTXN; + output GTHTXP; + output GTREFCLKMONITOR; + output PHYSTATUS; + output RSOSINTDONE; + output RXBYTEISALIGNED; + output RXBYTEREALIGN; + output RXCDRLOCK; + output RXCHANBONDSEQ; + output RXCHANISALIGNED; + output RXCHANREALIGN; + output RXCOMINITDET; + output RXCOMMADET; + output RXCOMSASDET; + output RXCOMWAKEDET; + output RXDFESLIDETAPSTARTED; + output RXDFESLIDETAPSTROBEDONE; + output RXDFESLIDETAPSTROBESTARTED; + output RXDFESTADAPTDONE; + output RXDLYSRESETDONE; + output RXELECIDLE; + output RXOSINTSTARTED; + output RXOSINTSTROBEDONE; + output RXOSINTSTROBESTARTED; + output RXOUTCLK; + output RXOUTCLKFABRIC; + output RXOUTCLKPCS; + output RXPHALIGNDONE; + output RXPMARESETDONE; + output RXPRBSERR; + output RXQPISENN; + output RXQPISENP; + output RXRATEDONE; + output RXRESETDONE; + output RXSYNCDONE; + output RXSYNCOUT; + output RXVALID; + output TXCOMFINISH; + output TXDLYSRESETDONE; + output TXGEARBOXREADY; + output TXOUTCLK; + output TXOUTCLKFABRIC; + output TXOUTCLKPCS; + output TXPHALIGNDONE; + output TXPHINITDONE; + output TXPMARESETDONE; + output TXQPISENN; + output TXQPISENP; + output TXRATEDONE; + output TXRESETDONE; + output TXSYNCDONE; + output TXSYNCOUT; + output [14:0] DMONITOROUT; + output [15:0] DRPDO; + output [15:0] PCSRSVDOUT; + output [1:0] RXCLKCORCNT; + output [1:0] RXDATAVALID; + output [1:0] RXHEADERVALID; + output [1:0] RXSTARTOFSEQ; + output [1:0] TXBUFSTATUS; + output [2:0] RXBUFSTATUS; + output [2:0] RXSTATUS; + output [4:0] RXCHBONDO; + output [4:0] RXPHMONITOR; + output [4:0] RXPHSLIPMONITOR; + output [5:0] RXHEADER; + output [63:0] RXDATA; + output [6:0] RXMONITOROUT; + output [7:0] RXCHARISCOMMA; + output [7:0] RXCHARISK; + output [7:0] RXDISPERR; + output [7:0] RXNOTINTABLE; + input CFGRESET; + (* invertible_pin = "IS_CLKRSVD0_INVERTED" *) + input CLKRSVD0; + (* invertible_pin = "IS_CLKRSVD1_INVERTED" *) + input CLKRSVD1; + (* invertible_pin = "IS_CPLLLOCKDETCLK_INVERTED" *) + input CPLLLOCKDETCLK; + input CPLLLOCKEN; + input CPLLPD; + input CPLLRESET; + input DMONFIFORESET; + (* invertible_pin = "IS_DMONITORCLK_INVERTED" *) + input DMONITORCLK; + (* invertible_pin = "IS_DRPCLK_INVERTED" *) + input DRPCLK; + input DRPEN; + input DRPWE; + input EYESCANMODE; + input EYESCANRESET; + input EYESCANTRIGGER; + (* invertible_pin = "IS_GTGREFCLK_INVERTED" *) + input GTGREFCLK; + input GTHRXN; + input GTHRXP; + input GTNORTHREFCLK0; + input GTNORTHREFCLK1; + input GTREFCLK0; + input GTREFCLK1; + input GTRESETSEL; + input GTRXRESET; + input GTSOUTHREFCLK0; + input GTSOUTHREFCLK1; + input GTTXRESET; + input QPLLCLK; + input QPLLREFCLK; + input RESETOVRD; + input RX8B10BEN; + input RXBUFRESET; + input RXCDRFREQRESET; + input RXCDRHOLD; + input RXCDROVRDEN; + input RXCDRRESET; + input RXCDRRESETRSV; + input RXCHBONDEN; + input RXCHBONDMASTER; + input RXCHBONDSLAVE; + input RXCOMMADETEN; + input RXDDIEN; + input RXDFEAGCHOLD; + input RXDFEAGCOVRDEN; + input RXDFECM1EN; + input RXDFELFHOLD; + input RXDFELFOVRDEN; + input RXDFELPMRESET; + input RXDFESLIDETAPADAPTEN; + input RXDFESLIDETAPHOLD; + input RXDFESLIDETAPINITOVRDEN; + input RXDFESLIDETAPONLYADAPTEN; + input RXDFESLIDETAPOVRDEN; + input RXDFESLIDETAPSTROBE; + input RXDFETAP2HOLD; + input RXDFETAP2OVRDEN; + input RXDFETAP3HOLD; + input RXDFETAP3OVRDEN; + input RXDFETAP4HOLD; + input RXDFETAP4OVRDEN; + input RXDFETAP5HOLD; + input RXDFETAP5OVRDEN; + input RXDFETAP6HOLD; + input RXDFETAP6OVRDEN; + input RXDFETAP7HOLD; + input RXDFETAP7OVRDEN; + input RXDFEUTHOLD; + input RXDFEUTOVRDEN; + input RXDFEVPHOLD; + input RXDFEVPOVRDEN; + input RXDFEVSEN; + input RXDFEXYDEN; + input RXDLYBYPASS; + input RXDLYEN; + input RXDLYOVRDEN; + input RXDLYSRESET; + input RXGEARBOXSLIP; + input RXLPMEN; + input RXLPMHFHOLD; + input RXLPMHFOVRDEN; + input RXLPMLFHOLD; + input RXLPMLFKLOVRDEN; + input RXMCOMMAALIGNEN; + input RXOOBRESET; + input RXOSCALRESET; + input RXOSHOLD; + input RXOSINTEN; + input RXOSINTHOLD; + input RXOSINTNTRLEN; + input RXOSINTOVRDEN; + input RXOSINTSTROBE; + input RXOSINTTESTOVRDEN; + input RXOSOVRDEN; + input RXPCOMMAALIGNEN; + input RXPCSRESET; + input RXPHALIGN; + input RXPHALIGNEN; + input RXPHDLYPD; + input RXPHDLYRESET; + input RXPHOVRDEN; + input RXPMARESET; + input RXPOLARITY; + input RXPRBSCNTRESET; + input RXQPIEN; + input RXRATEMODE; + input RXSLIDE; + input RXSYNCALLIN; + input RXSYNCIN; + input RXSYNCMODE; + input RXUSERRDY; + (* invertible_pin = "IS_RXUSRCLK2_INVERTED" *) + input RXUSRCLK2; + (* invertible_pin = "IS_RXUSRCLK_INVERTED" *) + input RXUSRCLK; + input SETERRSTATUS; + (* invertible_pin = "IS_SIGVALIDCLK_INVERTED" *) + input SIGVALIDCLK; + input TX8B10BEN; + input TXCOMINIT; + input TXCOMSAS; + input TXCOMWAKE; + input TXDEEMPH; + input TXDETECTRX; + input TXDIFFPD; + input TXDLYBYPASS; + input TXDLYEN; + input TXDLYHOLD; + input TXDLYOVRDEN; + input TXDLYSRESET; + input TXDLYUPDOWN; + input TXELECIDLE; + input TXINHIBIT; + input TXPCSRESET; + input TXPDELECIDLEMODE; + input TXPHALIGN; + input TXPHALIGNEN; + input TXPHDLYPD; + input TXPHDLYRESET; + (* invertible_pin = "IS_TXPHDLYTSTCLK_INVERTED" *) + input TXPHDLYTSTCLK; + input TXPHINIT; + input TXPHOVRDEN; + input TXPIPPMEN; + input TXPIPPMOVRDEN; + input TXPIPPMPD; + input TXPIPPMSEL; + input TXPISOPD; + input TXPMARESET; + input TXPOLARITY; + input TXPOSTCURSORINV; + input TXPRBSFORCEERR; + input TXPRECURSORINV; + input TXQPIBIASEN; + input TXQPISTRONGPDOWN; + input TXQPIWEAKPUP; + input TXRATEMODE; + input TXSTARTSEQ; + input TXSWING; + input TXSYNCALLIN; + input TXSYNCIN; + input TXSYNCMODE; + input TXUSERRDY; + (* invertible_pin = "IS_TXUSRCLK2_INVERTED" *) + input TXUSRCLK2; + (* invertible_pin = "IS_TXUSRCLK_INVERTED" *) + input TXUSRCLK; + input [13:0] RXADAPTSELTEST; + input [15:0] DRPDI; + input [15:0] GTRSVD; + input [15:0] PCSRSVDIN; + input [19:0] TSTIN; + input [1:0] RXELECIDLEMODE; + input [1:0] RXMONITORSEL; + input [1:0] RXPD; + input [1:0] RXSYSCLKSEL; + input [1:0] TXPD; + input [1:0] TXSYSCLKSEL; + input [2:0] CPLLREFCLKSEL; + input [2:0] LOOPBACK; + input [2:0] RXCHBONDLEVEL; + input [2:0] RXOUTCLKSEL; + input [2:0] RXPRBSSEL; + input [2:0] RXRATE; + input [2:0] TXBUFDIFFCTRL; + input [2:0] TXHEADER; + input [2:0] TXMARGIN; + input [2:0] TXOUTCLKSEL; + input [2:0] TXPRBSSEL; + input [2:0] TXRATE; + input [3:0] RXOSINTCFG; + input [3:0] RXOSINTID0; + input [3:0] TXDIFFCTRL; + input [4:0] PCSRSVDIN2; + input [4:0] PMARSVDIN; + input [4:0] RXCHBONDI; + input [4:0] RXDFEAGCTRL; + input [4:0] RXDFESLIDETAP; + input [4:0] TXPIPPMSTEPSIZE; + input [4:0] TXPOSTCURSOR; + input [4:0] TXPRECURSOR; + input [5:0] RXDFESLIDETAPID; + input [63:0] TXDATA; + input [6:0] TXMAINCURSOR; + input [6:0] TXSEQUENCE; + input [7:0] TX8B10BBYPASS; + input [7:0] TXCHARDISPMODE; + input [7:0] TXCHARDISPVAL; + input [7:0] TXCHARISK; + input [8:0] DRPADDR; +endmodule + +module GTHE2_COMMON (...); + parameter [63:0] BIAS_CFG = 64'h0000040000001000; + parameter [31:0] COMMON_CFG = 32'h0000001C; + parameter [0:0] IS_DRPCLK_INVERTED = 1'b0; + parameter [0:0] IS_GTGREFCLK_INVERTED = 1'b0; + parameter [0:0] IS_QPLLLOCKDETCLK_INVERTED = 1'b0; + parameter [26:0] QPLL_CFG = 27'h0480181; + parameter [3:0] QPLL_CLKOUT_CFG = 4'b0000; + parameter [5:0] QPLL_COARSE_FREQ_OVRD = 6'b010000; + parameter [0:0] QPLL_COARSE_FREQ_OVRD_EN = 1'b0; + parameter [9:0] QPLL_CP = 10'b0000011111; + parameter [0:0] QPLL_CP_MONITOR_EN = 1'b0; + parameter [0:0] QPLL_DMONITOR_SEL = 1'b0; + parameter [9:0] QPLL_FBDIV = 10'b0000000000; + parameter [0:0] QPLL_FBDIV_MONITOR_EN = 1'b0; + parameter [0:0] QPLL_FBDIV_RATIO = 1'b0; + parameter [23:0] QPLL_INIT_CFG = 24'h000006; + parameter [15:0] QPLL_LOCK_CFG = 16'h01E8; + parameter [3:0] QPLL_LPF = 4'b1111; + parameter integer QPLL_REFCLK_DIV = 2; + parameter [0:0] QPLL_RP_COMP = 1'b0; + parameter [1:0] QPLL_VTRL_RESET = 2'b00; + parameter [1:0] RCAL_CFG = 2'b00; + parameter [15:0] RSVD_ATTR0 = 16'h0000; + parameter [15:0] RSVD_ATTR1 = 16'h0000; + parameter [2:0] SIM_QPLLREFCLK_SEL = 3'b001; + parameter SIM_RESET_SPEEDUP = "TRUE"; + parameter SIM_VERSION = "1.1"; + output DRPRDY; + output QPLLFBCLKLOST; + output QPLLLOCK; + output QPLLOUTCLK; + output QPLLOUTREFCLK; + output QPLLREFCLKLOST; + output REFCLKOUTMONITOR; + output [15:0] DRPDO; + output [15:0] PMARSVDOUT; + output [7:0] QPLLDMONITOR; + input BGBYPASSB; + input BGMONITORENB; + input BGPDB; + input BGRCALOVRDENB; + (* invertible_pin = "IS_DRPCLK_INVERTED" *) + input DRPCLK; + input DRPEN; + input DRPWE; + (* invertible_pin = "IS_GTGREFCLK_INVERTED" *) + input GTGREFCLK; + input GTNORTHREFCLK0; + input GTNORTHREFCLK1; + input GTREFCLK0; + input GTREFCLK1; + input GTSOUTHREFCLK0; + input GTSOUTHREFCLK1; + (* invertible_pin = "IS_QPLLLOCKDETCLK_INVERTED" *) + input QPLLLOCKDETCLK; + input QPLLLOCKEN; + input QPLLOUTRESET; + input QPLLPD; + input QPLLRESET; + input RCALENB; + input [15:0] DRPDI; + input [15:0] QPLLRSVD1; + input [2:0] QPLLREFCLKSEL; + input [4:0] BGRCALOVRD; + input [4:0] QPLLRSVD2; + input [7:0] DRPADDR; + input [7:0] PMARSVD; +endmodule + +module GTPE2_CHANNEL (...); + parameter [0:0] ACJTAG_DEBUG_MODE = 1'b0; + parameter [0:0] ACJTAG_MODE = 1'b0; + parameter [0:0] ACJTAG_RESET = 1'b0; + parameter [19:0] ADAPT_CFG0 = 20'b00000000000000000000; + parameter ALIGN_COMMA_DOUBLE = "FALSE"; + parameter [9:0] ALIGN_COMMA_ENABLE = 10'b0001111111; + parameter integer ALIGN_COMMA_WORD = 1; + parameter ALIGN_MCOMMA_DET = "TRUE"; + parameter [9:0] ALIGN_MCOMMA_VALUE = 10'b1010000011; + parameter ALIGN_PCOMMA_DET = "TRUE"; + parameter [9:0] ALIGN_PCOMMA_VALUE = 10'b0101111100; + parameter CBCC_DATA_SOURCE_SEL = "DECODED"; + parameter [42:0] CFOK_CFG = 43'b1001001000000000000000001000000111010000000; + parameter [6:0] CFOK_CFG2 = 7'b0100000; + parameter [6:0] CFOK_CFG3 = 7'b0100000; + parameter [0:0] CFOK_CFG4 = 1'b0; + parameter [1:0] CFOK_CFG5 = 2'b00; + parameter [3:0] CFOK_CFG6 = 4'b0000; + parameter CHAN_BOND_KEEP_ALIGN = "FALSE"; + parameter integer CHAN_BOND_MAX_SKEW = 7; + parameter [9:0] CHAN_BOND_SEQ_1_1 = 10'b0101111100; + parameter [9:0] CHAN_BOND_SEQ_1_2 = 10'b0000000000; + parameter [9:0] CHAN_BOND_SEQ_1_3 = 10'b0000000000; + parameter [9:0] CHAN_BOND_SEQ_1_4 = 10'b0000000000; + parameter [3:0] CHAN_BOND_SEQ_1_ENABLE = 4'b1111; + parameter [9:0] CHAN_BOND_SEQ_2_1 = 10'b0100000000; + parameter [9:0] CHAN_BOND_SEQ_2_2 = 10'b0100000000; + parameter [9:0] CHAN_BOND_SEQ_2_3 = 10'b0100000000; + parameter [9:0] CHAN_BOND_SEQ_2_4 = 10'b0100000000; + parameter [3:0] CHAN_BOND_SEQ_2_ENABLE = 4'b1111; + parameter CHAN_BOND_SEQ_2_USE = "FALSE"; + parameter integer CHAN_BOND_SEQ_LEN = 1; + parameter [0:0] CLK_COMMON_SWING = 1'b0; + parameter CLK_CORRECT_USE = "TRUE"; + parameter CLK_COR_KEEP_IDLE = "FALSE"; + parameter integer CLK_COR_MAX_LAT = 20; + parameter integer CLK_COR_MIN_LAT = 18; + parameter CLK_COR_PRECEDENCE = "TRUE"; + parameter integer CLK_COR_REPEAT_WAIT = 0; + parameter [9:0] CLK_COR_SEQ_1_1 = 10'b0100011100; + parameter [9:0] CLK_COR_SEQ_1_2 = 10'b0000000000; + parameter [9:0] CLK_COR_SEQ_1_3 = 10'b0000000000; + parameter [9:0] CLK_COR_SEQ_1_4 = 10'b0000000000; + parameter [3:0] CLK_COR_SEQ_1_ENABLE = 4'b1111; + parameter [9:0] CLK_COR_SEQ_2_1 = 10'b0100000000; + parameter [9:0] CLK_COR_SEQ_2_2 = 10'b0100000000; + parameter [9:0] CLK_COR_SEQ_2_3 = 10'b0100000000; + parameter [9:0] CLK_COR_SEQ_2_4 = 10'b0100000000; + parameter [3:0] CLK_COR_SEQ_2_ENABLE = 4'b1111; + parameter CLK_COR_SEQ_2_USE = "FALSE"; + parameter integer CLK_COR_SEQ_LEN = 1; + parameter DEC_MCOMMA_DETECT = "TRUE"; + parameter DEC_PCOMMA_DETECT = "TRUE"; + parameter DEC_VALID_COMMA_ONLY = "TRUE"; + parameter [23:0] DMONITOR_CFG = 24'h000A00; + parameter [0:0] ES_CLK_PHASE_SEL = 1'b0; + parameter [5:0] ES_CONTROL = 6'b000000; + parameter ES_ERRDET_EN = "FALSE"; + parameter ES_EYE_SCAN_EN = "FALSE"; + parameter [11:0] ES_HORZ_OFFSET = 12'h010; + parameter [9:0] ES_PMA_CFG = 10'b0000000000; + parameter [4:0] ES_PRESCALE = 5'b00000; + parameter [79:0] ES_QUALIFIER = 80'h00000000000000000000; + parameter [79:0] ES_QUAL_MASK = 80'h00000000000000000000; + parameter [79:0] ES_SDATA_MASK = 80'h00000000000000000000; + parameter [8:0] ES_VERT_OFFSET = 9'b000000000; + parameter [3:0] FTS_DESKEW_SEQ_ENABLE = 4'b1111; + parameter [3:0] FTS_LANE_DESKEW_CFG = 4'b1111; + parameter FTS_LANE_DESKEW_EN = "FALSE"; + parameter [2:0] GEARBOX_MODE = 3'b000; + parameter [0:0] IS_CLKRSVD0_INVERTED = 1'b0; + parameter [0:0] IS_CLKRSVD1_INVERTED = 1'b0; + parameter [0:0] IS_DMONITORCLK_INVERTED = 1'b0; + parameter [0:0] IS_DRPCLK_INVERTED = 1'b0; + parameter [0:0] IS_RXUSRCLK2_INVERTED = 1'b0; + parameter [0:0] IS_RXUSRCLK_INVERTED = 1'b0; + parameter [0:0] IS_SIGVALIDCLK_INVERTED = 1'b0; + parameter [0:0] IS_TXPHDLYTSTCLK_INVERTED = 1'b0; + parameter [0:0] IS_TXUSRCLK2_INVERTED = 1'b0; + parameter [0:0] IS_TXUSRCLK_INVERTED = 1'b0; + parameter [0:0] LOOPBACK_CFG = 1'b0; + parameter [1:0] OUTREFCLK_SEL_INV = 2'b11; + parameter PCS_PCIE_EN = "FALSE"; + parameter [47:0] PCS_RSVD_ATTR = 48'h000000000000; + parameter [11:0] PD_TRANS_TIME_FROM_P2 = 12'h03C; + parameter [7:0] PD_TRANS_TIME_NONE_P2 = 8'h19; + parameter [7:0] PD_TRANS_TIME_TO_P2 = 8'h64; + parameter [0:0] PMA_LOOPBACK_CFG = 1'b0; + parameter [31:0] PMA_RSV = 32'h00000333; + parameter [31:0] PMA_RSV2 = 32'h00002050; + parameter [1:0] PMA_RSV3 = 2'b00; + parameter [3:0] PMA_RSV4 = 4'b0000; + parameter [0:0] PMA_RSV5 = 1'b0; + parameter [0:0] PMA_RSV6 = 1'b0; + parameter [0:0] PMA_RSV7 = 1'b0; + parameter [4:0] RXBUFRESET_TIME = 5'b00001; + parameter RXBUF_ADDR_MODE = "FULL"; + parameter [3:0] RXBUF_EIDLE_HI_CNT = 4'b1000; + parameter [3:0] RXBUF_EIDLE_LO_CNT = 4'b0000; + parameter RXBUF_EN = "TRUE"; + parameter RXBUF_RESET_ON_CB_CHANGE = "TRUE"; + parameter RXBUF_RESET_ON_COMMAALIGN = "FALSE"; + parameter RXBUF_RESET_ON_EIDLE = "FALSE"; + parameter RXBUF_RESET_ON_RATE_CHANGE = "TRUE"; + parameter integer RXBUF_THRESH_OVFLW = 61; + parameter RXBUF_THRESH_OVRD = "FALSE"; + parameter integer RXBUF_THRESH_UNDFLW = 4; + parameter [4:0] RXCDRFREQRESET_TIME = 5'b00001; + parameter [4:0] RXCDRPHRESET_TIME = 5'b00001; + parameter [82:0] RXCDR_CFG = 83'h0000107FE406001041010; + parameter [0:0] RXCDR_FR_RESET_ON_EIDLE = 1'b0; + parameter [0:0] RXCDR_HOLD_DURING_EIDLE = 1'b0; + parameter [5:0] RXCDR_LOCK_CFG = 6'b001001; + parameter [0:0] RXCDR_PH_RESET_ON_EIDLE = 1'b0; + parameter [15:0] RXDLY_CFG = 16'h0010; + parameter [8:0] RXDLY_LCFG = 9'h020; + parameter [15:0] RXDLY_TAP_CFG = 16'h0000; + parameter RXGEARBOX_EN = "FALSE"; + parameter [4:0] RXISCANRESET_TIME = 5'b00001; + parameter [6:0] RXLPMRESET_TIME = 7'b0001111; + parameter [0:0] RXLPM_BIAS_STARTUP_DISABLE = 1'b0; + parameter [3:0] RXLPM_CFG = 4'b0110; + parameter [0:0] RXLPM_CFG1 = 1'b0; + parameter [0:0] RXLPM_CM_CFG = 1'b0; + parameter [8:0] RXLPM_GC_CFG = 9'b111100010; + parameter [2:0] RXLPM_GC_CFG2 = 3'b001; + parameter [13:0] RXLPM_HF_CFG = 14'b00001111110000; + parameter [4:0] RXLPM_HF_CFG2 = 5'b01010; + parameter [3:0] RXLPM_HF_CFG3 = 4'b0000; + parameter [0:0] RXLPM_HOLD_DURING_EIDLE = 1'b0; + parameter [0:0] RXLPM_INCM_CFG = 1'b0; + parameter [0:0] RXLPM_IPCM_CFG = 1'b0; + parameter [17:0] RXLPM_LF_CFG = 18'b000000001111110000; + parameter [4:0] RXLPM_LF_CFG2 = 5'b01010; + parameter [2:0] RXLPM_OSINT_CFG = 3'b100; + parameter [6:0] RXOOB_CFG = 7'b0000110; + parameter RXOOB_CLK_CFG = "PMA"; + parameter [4:0] RXOSCALRESET_TIME = 5'b00011; + parameter [4:0] RXOSCALRESET_TIMEOUT = 5'b00000; + parameter integer RXOUT_DIV = 2; + parameter [4:0] RXPCSRESET_TIME = 5'b00001; + parameter [23:0] RXPHDLY_CFG = 24'h084000; + parameter [23:0] RXPH_CFG = 24'hC00002; + parameter [4:0] RXPH_MONITOR_SEL = 5'b00000; + parameter [2:0] RXPI_CFG0 = 3'b000; + parameter [0:0] RXPI_CFG1 = 1'b0; + parameter [0:0] RXPI_CFG2 = 1'b0; + parameter [4:0] RXPMARESET_TIME = 5'b00011; + parameter [0:0] RXPRBS_ERR_LOOPBACK = 1'b0; + parameter integer RXSLIDE_AUTO_WAIT = 7; + parameter RXSLIDE_MODE = "OFF"; + parameter [0:0] RXSYNC_MULTILANE = 1'b0; + parameter [0:0] RXSYNC_OVRD = 1'b0; + parameter [0:0] RXSYNC_SKIP_DA = 1'b0; + parameter [15:0] RX_BIAS_CFG = 16'b0000111100110011; + parameter [5:0] RX_BUFFER_CFG = 6'b000000; + parameter integer RX_CLK25_DIV = 7; + parameter [0:0] RX_CLKMUX_EN = 1'b1; + parameter [1:0] RX_CM_SEL = 2'b11; + parameter [3:0] RX_CM_TRIM = 4'b0100; + parameter integer RX_DATA_WIDTH = 20; + parameter [5:0] RX_DDI_SEL = 6'b000000; + parameter [13:0] RX_DEBUG_CFG = 14'b00000000000000; + parameter RX_DEFER_RESET_BUF_EN = "TRUE"; + parameter RX_DISPERR_SEQ_MATCH = "TRUE"; + parameter [12:0] RX_OS_CFG = 13'b0001111110000; + parameter integer RX_SIG_VALID_DLY = 10; + parameter RX_XCLK_SEL = "RXREC"; + parameter integer SAS_MAX_COM = 64; + parameter integer SAS_MIN_COM = 36; + parameter [3:0] SATA_BURST_SEQ_LEN = 4'b1111; + parameter [2:0] SATA_BURST_VAL = 3'b100; + parameter [2:0] SATA_EIDLE_VAL = 3'b100; + parameter integer SATA_MAX_BURST = 8; + parameter integer SATA_MAX_INIT = 21; + parameter integer SATA_MAX_WAKE = 7; + parameter integer SATA_MIN_BURST = 4; + parameter integer SATA_MIN_INIT = 12; + parameter integer SATA_MIN_WAKE = 4; + parameter SATA_PLL_CFG = "VCO_3000MHZ"; + parameter SHOW_REALIGN_COMMA = "TRUE"; + parameter SIM_RECEIVER_DETECT_PASS = "TRUE"; + parameter SIM_RESET_SPEEDUP = "TRUE"; + parameter SIM_TX_EIDLE_DRIVE_LEVEL = "X"; + parameter SIM_VERSION = "1.0"; + parameter [14:0] TERM_RCAL_CFG = 15'b100001000010000; + parameter [2:0] TERM_RCAL_OVRD = 3'b000; + parameter [7:0] TRANS_TIME_RATE = 8'h0E; + parameter [31:0] TST_RSV = 32'h00000000; + parameter TXBUF_EN = "TRUE"; + parameter TXBUF_RESET_ON_RATE_CHANGE = "FALSE"; + parameter [15:0] TXDLY_CFG = 16'h0010; + parameter [8:0] TXDLY_LCFG = 9'h020; + parameter [15:0] TXDLY_TAP_CFG = 16'h0000; + parameter TXGEARBOX_EN = "FALSE"; + parameter [0:0] TXOOB_CFG = 1'b0; + parameter integer TXOUT_DIV = 2; + parameter [4:0] TXPCSRESET_TIME = 5'b00001; + parameter [23:0] TXPHDLY_CFG = 24'h084000; + parameter [15:0] TXPH_CFG = 16'h0400; + parameter [4:0] TXPH_MONITOR_SEL = 5'b00000; + parameter [1:0] TXPI_CFG0 = 2'b00; + parameter [1:0] TXPI_CFG1 = 2'b00; + parameter [1:0] TXPI_CFG2 = 2'b00; + parameter [0:0] TXPI_CFG3 = 1'b0; + parameter [0:0] TXPI_CFG4 = 1'b0; + parameter [2:0] TXPI_CFG5 = 3'b000; + parameter [0:0] TXPI_GREY_SEL = 1'b0; + parameter [0:0] TXPI_INVSTROBE_SEL = 1'b0; + parameter TXPI_PPMCLK_SEL = "TXUSRCLK2"; + parameter [7:0] TXPI_PPM_CFG = 8'b00000000; + parameter [2:0] TXPI_SYNFREQ_PPM = 3'b000; + parameter [4:0] TXPMARESET_TIME = 5'b00001; + parameter [0:0] TXSYNC_MULTILANE = 1'b0; + parameter [0:0] TXSYNC_OVRD = 1'b0; + parameter [0:0] TXSYNC_SKIP_DA = 1'b0; + parameter integer TX_CLK25_DIV = 7; + parameter [0:0] TX_CLKMUX_EN = 1'b1; + parameter integer TX_DATA_WIDTH = 20; + parameter [5:0] TX_DEEMPH0 = 6'b000000; + parameter [5:0] TX_DEEMPH1 = 6'b000000; + parameter TX_DRIVE_MODE = "DIRECT"; + parameter [2:0] TX_EIDLE_ASSERT_DELAY = 3'b110; + parameter [2:0] TX_EIDLE_DEASSERT_DELAY = 3'b100; + parameter TX_LOOPBACK_DRIVE_HIZ = "FALSE"; + parameter [0:0] TX_MAINCURSOR_SEL = 1'b0; + parameter [6:0] TX_MARGIN_FULL_0 = 7'b1001110; + parameter [6:0] TX_MARGIN_FULL_1 = 7'b1001001; + parameter [6:0] TX_MARGIN_FULL_2 = 7'b1000101; + parameter [6:0] TX_MARGIN_FULL_3 = 7'b1000010; + parameter [6:0] TX_MARGIN_FULL_4 = 7'b1000000; + parameter [6:0] TX_MARGIN_LOW_0 = 7'b1000110; + parameter [6:0] TX_MARGIN_LOW_1 = 7'b1000100; + parameter [6:0] TX_MARGIN_LOW_2 = 7'b1000010; + parameter [6:0] TX_MARGIN_LOW_3 = 7'b1000000; + parameter [6:0] TX_MARGIN_LOW_4 = 7'b1000000; + parameter [0:0] TX_PREDRIVER_MODE = 1'b0; + parameter [13:0] TX_RXDETECT_CFG = 14'h1832; + parameter [2:0] TX_RXDETECT_REF = 3'b100; + parameter TX_XCLK_SEL = "TXUSR"; + parameter [0:0] UCODEER_CLR = 1'b0; + parameter [0:0] USE_PCS_CLK_PHASE_SEL = 1'b0; + output DRPRDY; + output EYESCANDATAERROR; + output GTPTXN; + output GTPTXP; + output PHYSTATUS; + output PMARSVDOUT0; + output PMARSVDOUT1; + output RXBYTEISALIGNED; + output RXBYTEREALIGN; + output RXCDRLOCK; + output RXCHANBONDSEQ; + output RXCHANISALIGNED; + output RXCHANREALIGN; + output RXCOMINITDET; + output RXCOMMADET; + output RXCOMSASDET; + output RXCOMWAKEDET; + output RXDLYSRESETDONE; + output RXELECIDLE; + output RXHEADERVALID; + output RXOSINTDONE; + output RXOSINTSTARTED; + output RXOSINTSTROBEDONE; + output RXOSINTSTROBESTARTED; + output RXOUTCLK; + output RXOUTCLKFABRIC; + output RXOUTCLKPCS; + output RXPHALIGNDONE; + output RXPMARESETDONE; + output RXPRBSERR; + output RXRATEDONE; + output RXRESETDONE; + output RXSYNCDONE; + output RXSYNCOUT; + output RXVALID; + output TXCOMFINISH; + output TXDLYSRESETDONE; + output TXGEARBOXREADY; + output TXOUTCLK; + output TXOUTCLKFABRIC; + output TXOUTCLKPCS; + output TXPHALIGNDONE; + output TXPHINITDONE; + output TXPMARESETDONE; + output TXRATEDONE; + output TXRESETDONE; + output TXSYNCDONE; + output TXSYNCOUT; + output [14:0] DMONITOROUT; + output [15:0] DRPDO; + output [15:0] PCSRSVDOUT; + output [1:0] RXCLKCORCNT; + output [1:0] RXDATAVALID; + output [1:0] RXSTARTOFSEQ; + output [1:0] TXBUFSTATUS; + output [2:0] RXBUFSTATUS; + output [2:0] RXHEADER; + output [2:0] RXSTATUS; + output [31:0] RXDATA; + output [3:0] RXCHARISCOMMA; + output [3:0] RXCHARISK; + output [3:0] RXCHBONDO; + output [3:0] RXDISPERR; + output [3:0] RXNOTINTABLE; + output [4:0] RXPHMONITOR; + output [4:0] RXPHSLIPMONITOR; + input CFGRESET; + (* invertible_pin = "IS_CLKRSVD0_INVERTED" *) + input CLKRSVD0; + (* invertible_pin = "IS_CLKRSVD1_INVERTED" *) + input CLKRSVD1; + input DMONFIFORESET; + (* invertible_pin = "IS_DMONITORCLK_INVERTED" *) + input DMONITORCLK; + (* invertible_pin = "IS_DRPCLK_INVERTED" *) + input DRPCLK; + input DRPEN; + input DRPWE; + input EYESCANMODE; + input EYESCANRESET; + input EYESCANTRIGGER; + input GTPRXN; + input GTPRXP; + input GTRESETSEL; + input GTRXRESET; + input GTTXRESET; + input PLL0CLK; + input PLL0REFCLK; + input PLL1CLK; + input PLL1REFCLK; + input PMARSVDIN0; + input PMARSVDIN1; + input PMARSVDIN2; + input PMARSVDIN3; + input PMARSVDIN4; + input RESETOVRD; + input RX8B10BEN; + input RXBUFRESET; + input RXCDRFREQRESET; + input RXCDRHOLD; + input RXCDROVRDEN; + input RXCDRRESET; + input RXCDRRESETRSV; + input RXCHBONDEN; + input RXCHBONDMASTER; + input RXCHBONDSLAVE; + input RXCOMMADETEN; + input RXDDIEN; + input RXDFEXYDEN; + input RXDLYBYPASS; + input RXDLYEN; + input RXDLYOVRDEN; + input RXDLYSRESET; + input RXGEARBOXSLIP; + input RXLPMHFHOLD; + input RXLPMHFOVRDEN; + input RXLPMLFHOLD; + input RXLPMLFOVRDEN; + input RXLPMOSINTNTRLEN; + input RXLPMRESET; + input RXMCOMMAALIGNEN; + input RXOOBRESET; + input RXOSCALRESET; + input RXOSHOLD; + input RXOSINTEN; + input RXOSINTHOLD; + input RXOSINTNTRLEN; + input RXOSINTOVRDEN; + input RXOSINTPD; + input RXOSINTSTROBE; + input RXOSINTTESTOVRDEN; + input RXOSOVRDEN; + input RXPCOMMAALIGNEN; + input RXPCSRESET; + input RXPHALIGN; + input RXPHALIGNEN; + input RXPHDLYPD; + input RXPHDLYRESET; + input RXPHOVRDEN; + input RXPMARESET; + input RXPOLARITY; + input RXPRBSCNTRESET; + input RXRATEMODE; + input RXSLIDE; + input RXSYNCALLIN; + input RXSYNCIN; + input RXSYNCMODE; + input RXUSERRDY; + (* invertible_pin = "IS_RXUSRCLK2_INVERTED" *) + input RXUSRCLK2; + (* invertible_pin = "IS_RXUSRCLK_INVERTED" *) + input RXUSRCLK; + input SETERRSTATUS; + (* invertible_pin = "IS_SIGVALIDCLK_INVERTED" *) + input SIGVALIDCLK; + input TX8B10BEN; + input TXCOMINIT; + input TXCOMSAS; + input TXCOMWAKE; + input TXDEEMPH; + input TXDETECTRX; + input TXDIFFPD; + input TXDLYBYPASS; + input TXDLYEN; + input TXDLYHOLD; + input TXDLYOVRDEN; + input TXDLYSRESET; + input TXDLYUPDOWN; + input TXELECIDLE; + input TXINHIBIT; + input TXPCSRESET; + input TXPDELECIDLEMODE; + input TXPHALIGN; + input TXPHALIGNEN; + input TXPHDLYPD; + input TXPHDLYRESET; + (* invertible_pin = "IS_TXPHDLYTSTCLK_INVERTED" *) + input TXPHDLYTSTCLK; + input TXPHINIT; + input TXPHOVRDEN; + input TXPIPPMEN; + input TXPIPPMOVRDEN; + input TXPIPPMPD; + input TXPIPPMSEL; + input TXPISOPD; + input TXPMARESET; + input TXPOLARITY; + input TXPOSTCURSORINV; + input TXPRBSFORCEERR; + input TXPRECURSORINV; + input TXRATEMODE; + input TXSTARTSEQ; + input TXSWING; + input TXSYNCALLIN; + input TXSYNCIN; + input TXSYNCMODE; + input TXUSERRDY; + (* invertible_pin = "IS_TXUSRCLK2_INVERTED" *) + input TXUSRCLK2; + (* invertible_pin = "IS_TXUSRCLK_INVERTED" *) + input TXUSRCLK; + input [13:0] RXADAPTSELTEST; + input [15:0] DRPDI; + input [15:0] GTRSVD; + input [15:0] PCSRSVDIN; + input [19:0] TSTIN; + input [1:0] RXELECIDLEMODE; + input [1:0] RXPD; + input [1:0] RXSYSCLKSEL; + input [1:0] TXPD; + input [1:0] TXSYSCLKSEL; + input [2:0] LOOPBACK; + input [2:0] RXCHBONDLEVEL; + input [2:0] RXOUTCLKSEL; + input [2:0] RXPRBSSEL; + input [2:0] RXRATE; + input [2:0] TXBUFDIFFCTRL; + input [2:0] TXHEADER; + input [2:0] TXMARGIN; + input [2:0] TXOUTCLKSEL; + input [2:0] TXPRBSSEL; + input [2:0] TXRATE; + input [31:0] TXDATA; + input [3:0] RXCHBONDI; + input [3:0] RXOSINTCFG; + input [3:0] RXOSINTID0; + input [3:0] TX8B10BBYPASS; + input [3:0] TXCHARDISPMODE; + input [3:0] TXCHARDISPVAL; + input [3:0] TXCHARISK; + input [3:0] TXDIFFCTRL; + input [4:0] TXPIPPMSTEPSIZE; + input [4:0] TXPOSTCURSOR; + input [4:0] TXPRECURSOR; + input [6:0] TXMAINCURSOR; + input [6:0] TXSEQUENCE; + input [8:0] DRPADDR; +endmodule + +module GTPE2_COMMON (...); + parameter [63:0] BIAS_CFG = 64'h0000000000000000; + parameter [31:0] COMMON_CFG = 32'h00000000; + parameter [0:0] IS_DRPCLK_INVERTED = 1'b0; + parameter [0:0] IS_GTGREFCLK0_INVERTED = 1'b0; + parameter [0:0] IS_GTGREFCLK1_INVERTED = 1'b0; + parameter [0:0] IS_PLL0LOCKDETCLK_INVERTED = 1'b0; + parameter [0:0] IS_PLL1LOCKDETCLK_INVERTED = 1'b0; + parameter [26:0] PLL0_CFG = 27'h01F03DC; + parameter [0:0] PLL0_DMON_CFG = 1'b0; + parameter integer PLL0_FBDIV = 4; + parameter integer PLL0_FBDIV_45 = 5; + parameter [23:0] PLL0_INIT_CFG = 24'h00001E; + parameter [8:0] PLL0_LOCK_CFG = 9'h1E8; + parameter integer PLL0_REFCLK_DIV = 1; + parameter [26:0] PLL1_CFG = 27'h01F03DC; + parameter [0:0] PLL1_DMON_CFG = 1'b0; + parameter integer PLL1_FBDIV = 4; + parameter integer PLL1_FBDIV_45 = 5; + parameter [23:0] PLL1_INIT_CFG = 24'h00001E; + parameter [8:0] PLL1_LOCK_CFG = 9'h1E8; + parameter integer PLL1_REFCLK_DIV = 1; + parameter [7:0] PLL_CLKOUT_CFG = 8'b00000000; + parameter [15:0] RSVD_ATTR0 = 16'h0000; + parameter [15:0] RSVD_ATTR1 = 16'h0000; + parameter [2:0] SIM_PLL0REFCLK_SEL = 3'b001; + parameter [2:0] SIM_PLL1REFCLK_SEL = 3'b001; + parameter SIM_RESET_SPEEDUP = "TRUE"; + parameter SIM_VERSION = "1.0"; + output DRPRDY; + output PLL0FBCLKLOST; + output PLL0LOCK; + output PLL0OUTCLK; + output PLL0OUTREFCLK; + output PLL0REFCLKLOST; + output PLL1FBCLKLOST; + output PLL1LOCK; + output PLL1OUTCLK; + output PLL1OUTREFCLK; + output PLL1REFCLKLOST; + output REFCLKOUTMONITOR0; + output REFCLKOUTMONITOR1; + output [15:0] DRPDO; + output [15:0] PMARSVDOUT; + output [7:0] DMONITOROUT; + input BGBYPASSB; + input BGMONITORENB; + input BGPDB; + input BGRCALOVRDENB; + (* invertible_pin = "IS_DRPCLK_INVERTED" *) + input DRPCLK; + input DRPEN; + input DRPWE; + input GTEASTREFCLK0; + input GTEASTREFCLK1; + (* invertible_pin = "IS_GTGREFCLK0_INVERTED" *) + input GTGREFCLK0; + (* invertible_pin = "IS_GTGREFCLK1_INVERTED" *) + input GTGREFCLK1; + input GTREFCLK0; + input GTREFCLK1; + input GTWESTREFCLK0; + input GTWESTREFCLK1; + (* invertible_pin = "IS_PLL0LOCKDETCLK_INVERTED" *) + input PLL0LOCKDETCLK; + input PLL0LOCKEN; + input PLL0PD; + input PLL0RESET; + (* invertible_pin = "IS_PLL1LOCKDETCLK_INVERTED" *) + input PLL1LOCKDETCLK; + input PLL1LOCKEN; + input PLL1PD; + input PLL1RESET; + input RCALENB; + input [15:0] DRPDI; + input [15:0] PLLRSVD1; + input [2:0] PLL0REFCLKSEL; + input [2:0] PLL1REFCLKSEL; + input [4:0] BGRCALOVRD; + input [4:0] PLLRSVD2; + input [7:0] DRPADDR; + input [7:0] PMARSVD; +endmodule + +module GTXE2_CHANNEL (...); + parameter ALIGN_COMMA_DOUBLE = "FALSE"; + parameter [9:0] ALIGN_COMMA_ENABLE = 10'b0001111111; + parameter integer ALIGN_COMMA_WORD = 1; + parameter ALIGN_MCOMMA_DET = "TRUE"; + parameter [9:0] ALIGN_MCOMMA_VALUE = 10'b1010000011; + parameter ALIGN_PCOMMA_DET = "TRUE"; + parameter [9:0] ALIGN_PCOMMA_VALUE = 10'b0101111100; + parameter CBCC_DATA_SOURCE_SEL = "DECODED"; + parameter CHAN_BOND_KEEP_ALIGN = "FALSE"; + parameter integer CHAN_BOND_MAX_SKEW = 7; + parameter [9:0] CHAN_BOND_SEQ_1_1 = 10'b0101111100; + parameter [9:0] CHAN_BOND_SEQ_1_2 = 10'b0000000000; + parameter [9:0] CHAN_BOND_SEQ_1_3 = 10'b0000000000; + parameter [9:0] CHAN_BOND_SEQ_1_4 = 10'b0000000000; + parameter [3:0] CHAN_BOND_SEQ_1_ENABLE = 4'b1111; + parameter [9:0] CHAN_BOND_SEQ_2_1 = 10'b0100000000; + parameter [9:0] CHAN_BOND_SEQ_2_2 = 10'b0100000000; + parameter [9:0] CHAN_BOND_SEQ_2_3 = 10'b0100000000; + parameter [9:0] CHAN_BOND_SEQ_2_4 = 10'b0100000000; + parameter [3:0] CHAN_BOND_SEQ_2_ENABLE = 4'b1111; + parameter CHAN_BOND_SEQ_2_USE = "FALSE"; + parameter integer CHAN_BOND_SEQ_LEN = 1; + parameter CLK_CORRECT_USE = "TRUE"; + parameter CLK_COR_KEEP_IDLE = "FALSE"; + parameter integer CLK_COR_MAX_LAT = 20; + parameter integer CLK_COR_MIN_LAT = 18; + parameter CLK_COR_PRECEDENCE = "TRUE"; + parameter integer CLK_COR_REPEAT_WAIT = 0; + parameter [9:0] CLK_COR_SEQ_1_1 = 10'b0100011100; + parameter [9:0] CLK_COR_SEQ_1_2 = 10'b0000000000; + parameter [9:0] CLK_COR_SEQ_1_3 = 10'b0000000000; + parameter [9:0] CLK_COR_SEQ_1_4 = 10'b0000000000; + parameter [3:0] CLK_COR_SEQ_1_ENABLE = 4'b1111; + parameter [9:0] CLK_COR_SEQ_2_1 = 10'b0100000000; + parameter [9:0] CLK_COR_SEQ_2_2 = 10'b0100000000; + parameter [9:0] CLK_COR_SEQ_2_3 = 10'b0100000000; + parameter [9:0] CLK_COR_SEQ_2_4 = 10'b0100000000; + parameter [3:0] CLK_COR_SEQ_2_ENABLE = 4'b1111; + parameter CLK_COR_SEQ_2_USE = "FALSE"; + parameter integer CLK_COR_SEQ_LEN = 1; + parameter [23:0] CPLL_CFG = 24'hB007D8; + parameter integer CPLL_FBDIV = 4; + parameter integer CPLL_FBDIV_45 = 5; + parameter [23:0] CPLL_INIT_CFG = 24'h00001E; + parameter [15:0] CPLL_LOCK_CFG = 16'h01E8; + parameter integer CPLL_REFCLK_DIV = 1; + parameter DEC_MCOMMA_DETECT = "TRUE"; + parameter DEC_PCOMMA_DETECT = "TRUE"; + parameter DEC_VALID_COMMA_ONLY = "TRUE"; + parameter [23:0] DMONITOR_CFG = 24'h000A00; + parameter [5:0] ES_CONTROL = 6'b000000; + parameter ES_ERRDET_EN = "FALSE"; + parameter ES_EYE_SCAN_EN = "FALSE"; + parameter [11:0] ES_HORZ_OFFSET = 12'h000; + parameter [9:0] ES_PMA_CFG = 10'b0000000000; + parameter [4:0] ES_PRESCALE = 5'b00000; + parameter [79:0] ES_QUALIFIER = 80'h00000000000000000000; + parameter [79:0] ES_QUAL_MASK = 80'h00000000000000000000; + parameter [79:0] ES_SDATA_MASK = 80'h00000000000000000000; + parameter [8:0] ES_VERT_OFFSET = 9'b000000000; + parameter [3:0] FTS_DESKEW_SEQ_ENABLE = 4'b1111; + parameter [3:0] FTS_LANE_DESKEW_CFG = 4'b1111; + parameter FTS_LANE_DESKEW_EN = "FALSE"; + parameter [2:0] GEARBOX_MODE = 3'b000; + parameter [0:0] IS_CPLLLOCKDETCLK_INVERTED = 1'b0; + parameter [0:0] IS_DRPCLK_INVERTED = 1'b0; + parameter [0:0] IS_GTGREFCLK_INVERTED = 1'b0; + parameter [0:0] IS_RXUSRCLK2_INVERTED = 1'b0; + parameter [0:0] IS_RXUSRCLK_INVERTED = 1'b0; + parameter [0:0] IS_TXPHDLYTSTCLK_INVERTED = 1'b0; + parameter [0:0] IS_TXUSRCLK2_INVERTED = 1'b0; + parameter [0:0] IS_TXUSRCLK_INVERTED = 1'b0; + parameter [1:0] OUTREFCLK_SEL_INV = 2'b11; + parameter PCS_PCIE_EN = "FALSE"; + parameter [47:0] PCS_RSVD_ATTR = 48'h000000000000; + parameter [11:0] PD_TRANS_TIME_FROM_P2 = 12'h03C; + parameter [7:0] PD_TRANS_TIME_NONE_P2 = 8'h19; + parameter [7:0] PD_TRANS_TIME_TO_P2 = 8'h64; + parameter [31:0] PMA_RSV = 32'h00000000; + parameter [15:0] PMA_RSV2 = 16'h2050; + parameter [1:0] PMA_RSV3 = 2'b00; + parameter [31:0] PMA_RSV4 = 32'h00000000; + parameter [4:0] RXBUFRESET_TIME = 5'b00001; + parameter RXBUF_ADDR_MODE = "FULL"; + parameter [3:0] RXBUF_EIDLE_HI_CNT = 4'b1000; + parameter [3:0] RXBUF_EIDLE_LO_CNT = 4'b0000; + parameter RXBUF_EN = "TRUE"; + parameter RXBUF_RESET_ON_CB_CHANGE = "TRUE"; + parameter RXBUF_RESET_ON_COMMAALIGN = "FALSE"; + parameter RXBUF_RESET_ON_EIDLE = "FALSE"; + parameter RXBUF_RESET_ON_RATE_CHANGE = "TRUE"; + parameter integer RXBUF_THRESH_OVFLW = 61; + parameter RXBUF_THRESH_OVRD = "FALSE"; + parameter integer RXBUF_THRESH_UNDFLW = 4; + parameter [4:0] RXCDRFREQRESET_TIME = 5'b00001; + parameter [4:0] RXCDRPHRESET_TIME = 5'b00001; + parameter [71:0] RXCDR_CFG = 72'h0B000023FF20400020; + parameter [0:0] RXCDR_FR_RESET_ON_EIDLE = 1'b0; + parameter [0:0] RXCDR_HOLD_DURING_EIDLE = 1'b0; + parameter [5:0] RXCDR_LOCK_CFG = 6'b010101; + parameter [0:0] RXCDR_PH_RESET_ON_EIDLE = 1'b0; + parameter [6:0] RXDFELPMRESET_TIME = 7'b0001111; + parameter [15:0] RXDLY_CFG = 16'h001F; + parameter [8:0] RXDLY_LCFG = 9'h030; + parameter [15:0] RXDLY_TAP_CFG = 16'h0000; + parameter RXGEARBOX_EN = "FALSE"; + parameter [4:0] RXISCANRESET_TIME = 5'b00001; + parameter [13:0] RXLPM_HF_CFG = 14'b00000011110000; + parameter [13:0] RXLPM_LF_CFG = 14'b00000011110000; + parameter [6:0] RXOOB_CFG = 7'b0000110; + parameter integer RXOUT_DIV = 2; + parameter [4:0] RXPCSRESET_TIME = 5'b00001; + parameter [23:0] RXPHDLY_CFG = 24'h084020; + parameter [23:0] RXPH_CFG = 24'h000000; + parameter [4:0] RXPH_MONITOR_SEL = 5'b00000; + parameter [4:0] RXPMARESET_TIME = 5'b00011; + parameter [0:0] RXPRBS_ERR_LOOPBACK = 1'b0; + parameter integer RXSLIDE_AUTO_WAIT = 7; + parameter RXSLIDE_MODE = "OFF"; + parameter [11:0] RX_BIAS_CFG = 12'b000000000000; + parameter [5:0] RX_BUFFER_CFG = 6'b000000; + parameter integer RX_CLK25_DIV = 7; + parameter [0:0] RX_CLKMUX_PD = 1'b1; + parameter [1:0] RX_CM_SEL = 2'b11; + parameter [2:0] RX_CM_TRIM = 3'b100; + parameter integer RX_DATA_WIDTH = 20; + parameter [5:0] RX_DDI_SEL = 6'b000000; + parameter [11:0] RX_DEBUG_CFG = 12'b000000000000; + parameter RX_DEFER_RESET_BUF_EN = "TRUE"; + parameter [22:0] RX_DFE_GAIN_CFG = 23'h180E0F; + parameter [11:0] RX_DFE_H2_CFG = 12'b000111100000; + parameter [11:0] RX_DFE_H3_CFG = 12'b000111100000; + parameter [10:0] RX_DFE_H4_CFG = 11'b00011110000; + parameter [10:0] RX_DFE_H5_CFG = 11'b00011110000; + parameter [12:0] RX_DFE_KL_CFG = 13'b0001111110000; + parameter [31:0] RX_DFE_KL_CFG2 = 32'h3008E56A; + parameter [15:0] RX_DFE_LPM_CFG = 16'h0904; + parameter [0:0] RX_DFE_LPM_HOLD_DURING_EIDLE = 1'b0; + parameter [16:0] RX_DFE_UT_CFG = 17'b00111111000000000; + parameter [16:0] RX_DFE_VP_CFG = 17'b00011111100000000; + parameter [12:0] RX_DFE_XYD_CFG = 13'b0000000010000; + parameter RX_DISPERR_SEQ_MATCH = "TRUE"; + parameter integer RX_INT_DATAWIDTH = 0; + parameter [12:0] RX_OS_CFG = 13'b0001111110000; + parameter integer RX_SIG_VALID_DLY = 10; + parameter RX_XCLK_SEL = "RXREC"; + parameter integer SAS_MAX_COM = 64; + parameter integer SAS_MIN_COM = 36; + parameter [3:0] SATA_BURST_SEQ_LEN = 4'b1111; + parameter [2:0] SATA_BURST_VAL = 3'b100; + parameter SATA_CPLL_CFG = "VCO_3000MHZ"; + parameter [2:0] SATA_EIDLE_VAL = 3'b100; + parameter integer SATA_MAX_BURST = 8; + parameter integer SATA_MAX_INIT = 21; + parameter integer SATA_MAX_WAKE = 7; + parameter integer SATA_MIN_BURST = 4; + parameter integer SATA_MIN_INIT = 12; + parameter integer SATA_MIN_WAKE = 4; + parameter SHOW_REALIGN_COMMA = "TRUE"; + parameter [2:0] SIM_CPLLREFCLK_SEL = 3'b001; + parameter SIM_RECEIVER_DETECT_PASS = "TRUE"; + parameter SIM_RESET_SPEEDUP = "TRUE"; + parameter SIM_TX_EIDLE_DRIVE_LEVEL = "X"; + parameter SIM_VERSION = "4.0"; + parameter [4:0] TERM_RCAL_CFG = 5'b10000; + parameter [0:0] TERM_RCAL_OVRD = 1'b0; + parameter [7:0] TRANS_TIME_RATE = 8'h0E; + parameter [31:0] TST_RSV = 32'h00000000; + parameter TXBUF_EN = "TRUE"; + parameter TXBUF_RESET_ON_RATE_CHANGE = "FALSE"; + parameter [15:0] TXDLY_CFG = 16'h001F; + parameter [8:0] TXDLY_LCFG = 9'h030; + parameter [15:0] TXDLY_TAP_CFG = 16'h0000; + parameter TXGEARBOX_EN = "FALSE"; + parameter integer TXOUT_DIV = 2; + parameter [4:0] TXPCSRESET_TIME = 5'b00001; + parameter [23:0] TXPHDLY_CFG = 24'h084020; + parameter [15:0] TXPH_CFG = 16'h0780; + parameter [4:0] TXPH_MONITOR_SEL = 5'b00000; + parameter [4:0] TXPMARESET_TIME = 5'b00001; + parameter integer TX_CLK25_DIV = 7; + parameter [0:0] TX_CLKMUX_PD = 1'b1; + parameter integer TX_DATA_WIDTH = 20; + parameter [4:0] TX_DEEMPH0 = 5'b00000; + parameter [4:0] TX_DEEMPH1 = 5'b00000; + parameter TX_DRIVE_MODE = "DIRECT"; + parameter [2:0] TX_EIDLE_ASSERT_DELAY = 3'b110; + parameter [2:0] TX_EIDLE_DEASSERT_DELAY = 3'b100; + parameter integer TX_INT_DATAWIDTH = 0; + parameter TX_LOOPBACK_DRIVE_HIZ = "FALSE"; + parameter [0:0] TX_MAINCURSOR_SEL = 1'b0; + parameter [6:0] TX_MARGIN_FULL_0 = 7'b1001110; + parameter [6:0] TX_MARGIN_FULL_1 = 7'b1001001; + parameter [6:0] TX_MARGIN_FULL_2 = 7'b1000101; + parameter [6:0] TX_MARGIN_FULL_3 = 7'b1000010; + parameter [6:0] TX_MARGIN_FULL_4 = 7'b1000000; + parameter [6:0] TX_MARGIN_LOW_0 = 7'b1000110; + parameter [6:0] TX_MARGIN_LOW_1 = 7'b1000100; + parameter [6:0] TX_MARGIN_LOW_2 = 7'b1000010; + parameter [6:0] TX_MARGIN_LOW_3 = 7'b1000000; + parameter [6:0] TX_MARGIN_LOW_4 = 7'b1000000; + parameter [0:0] TX_PREDRIVER_MODE = 1'b0; + parameter [0:0] TX_QPI_STATUS_EN = 1'b0; + parameter [13:0] TX_RXDETECT_CFG = 14'h1832; + parameter [2:0] TX_RXDETECT_REF = 3'b100; + parameter TX_XCLK_SEL = "TXUSR"; + parameter [0:0] UCODEER_CLR = 1'b0; + output CPLLFBCLKLOST; + output CPLLLOCK; + output CPLLREFCLKLOST; + output DRPRDY; + output EYESCANDATAERROR; + output GTREFCLKMONITOR; + output GTXTXN; + output GTXTXP; + output PHYSTATUS; + output RXBYTEISALIGNED; + output RXBYTEREALIGN; + output RXCDRLOCK; + output RXCHANBONDSEQ; + output RXCHANISALIGNED; + output RXCHANREALIGN; + output RXCOMINITDET; + output RXCOMMADET; + output RXCOMSASDET; + output RXCOMWAKEDET; + output RXDATAVALID; + output RXDLYSRESETDONE; + output RXELECIDLE; + output RXHEADERVALID; + output RXOUTCLK; + output RXOUTCLKFABRIC; + output RXOUTCLKPCS; + output RXPHALIGNDONE; + output RXPRBSERR; + output RXQPISENN; + output RXQPISENP; + output RXRATEDONE; + output RXRESETDONE; + output RXSTARTOFSEQ; + output RXVALID; + output TXCOMFINISH; + output TXDLYSRESETDONE; + output TXGEARBOXREADY; + output TXOUTCLK; + output TXOUTCLKFABRIC; + output TXOUTCLKPCS; + output TXPHALIGNDONE; + output TXPHINITDONE; + output TXQPISENN; + output TXQPISENP; + output TXRATEDONE; + output TXRESETDONE; + output [15:0] DRPDO; + output [15:0] PCSRSVDOUT; + output [1:0] RXCLKCORCNT; + output [1:0] TXBUFSTATUS; + output [2:0] RXBUFSTATUS; + output [2:0] RXHEADER; + output [2:0] RXSTATUS; + output [4:0] RXCHBONDO; + output [4:0] RXPHMONITOR; + output [4:0] RXPHSLIPMONITOR; + output [63:0] RXDATA; + output [6:0] RXMONITOROUT; + output [7:0] DMONITOROUT; + output [7:0] RXCHARISCOMMA; + output [7:0] RXCHARISK; + output [7:0] RXDISPERR; + output [7:0] RXNOTINTABLE; + output [9:0] TSTOUT; + input CFGRESET; + (* invertible_pin = "IS_CPLLLOCKDETCLK_INVERTED" *) + input CPLLLOCKDETCLK; + input CPLLLOCKEN; + input CPLLPD; + input CPLLRESET; + (* invertible_pin = "IS_DRPCLK_INVERTED" *) + input DRPCLK; + input DRPEN; + input DRPWE; + input EYESCANMODE; + input EYESCANRESET; + input EYESCANTRIGGER; + (* invertible_pin = "IS_GTGREFCLK_INVERTED" *) + input GTGREFCLK; + input GTNORTHREFCLK0; + input GTNORTHREFCLK1; + input GTREFCLK0; + input GTREFCLK1; + input GTRESETSEL; + input GTRXRESET; + input GTSOUTHREFCLK0; + input GTSOUTHREFCLK1; + input GTTXRESET; + input GTXRXN; + input GTXRXP; + input QPLLCLK; + input QPLLREFCLK; + input RESETOVRD; + input RX8B10BEN; + input RXBUFRESET; + input RXCDRFREQRESET; + input RXCDRHOLD; + input RXCDROVRDEN; + input RXCDRRESET; + input RXCDRRESETRSV; + input RXCHBONDEN; + input RXCHBONDMASTER; + input RXCHBONDSLAVE; + input RXCOMMADETEN; + input RXDDIEN; + input RXDFEAGCHOLD; + input RXDFEAGCOVRDEN; + input RXDFECM1EN; + input RXDFELFHOLD; + input RXDFELFOVRDEN; + input RXDFELPMRESET; + input RXDFETAP2HOLD; + input RXDFETAP2OVRDEN; + input RXDFETAP3HOLD; + input RXDFETAP3OVRDEN; + input RXDFETAP4HOLD; + input RXDFETAP4OVRDEN; + input RXDFETAP5HOLD; + input RXDFETAP5OVRDEN; + input RXDFEUTHOLD; + input RXDFEUTOVRDEN; + input RXDFEVPHOLD; + input RXDFEVPOVRDEN; + input RXDFEVSEN; + input RXDFEXYDEN; + input RXDFEXYDHOLD; + input RXDFEXYDOVRDEN; + input RXDLYBYPASS; + input RXDLYEN; + input RXDLYOVRDEN; + input RXDLYSRESET; + input RXGEARBOXSLIP; + input RXLPMEN; + input RXLPMHFHOLD; + input RXLPMHFOVRDEN; + input RXLPMLFHOLD; + input RXLPMLFKLOVRDEN; + input RXMCOMMAALIGNEN; + input RXOOBRESET; + input RXOSHOLD; + input RXOSOVRDEN; + input RXPCOMMAALIGNEN; + input RXPCSRESET; + input RXPHALIGN; + input RXPHALIGNEN; + input RXPHDLYPD; + input RXPHDLYRESET; + input RXPHOVRDEN; + input RXPMARESET; + input RXPOLARITY; + input RXPRBSCNTRESET; + input RXQPIEN; + input RXSLIDE; + input RXUSERRDY; + (* invertible_pin = "IS_RXUSRCLK2_INVERTED" *) + input RXUSRCLK2; + (* invertible_pin = "IS_RXUSRCLK_INVERTED" *) + input RXUSRCLK; + input SETERRSTATUS; + input TX8B10BEN; + input TXCOMINIT; + input TXCOMSAS; + input TXCOMWAKE; + input TXDEEMPH; + input TXDETECTRX; + input TXDIFFPD; + input TXDLYBYPASS; + input TXDLYEN; + input TXDLYHOLD; + input TXDLYOVRDEN; + input TXDLYSRESET; + input TXDLYUPDOWN; + input TXELECIDLE; + input TXINHIBIT; + input TXPCSRESET; + input TXPDELECIDLEMODE; + input TXPHALIGN; + input TXPHALIGNEN; + input TXPHDLYPD; + input TXPHDLYRESET; + (* invertible_pin = "IS_TXPHDLYTSTCLK_INVERTED" *) + input TXPHDLYTSTCLK; + input TXPHINIT; + input TXPHOVRDEN; + input TXPISOPD; + input TXPMARESET; + input TXPOLARITY; + input TXPOSTCURSORINV; + input TXPRBSFORCEERR; + input TXPRECURSORINV; + input TXQPIBIASEN; + input TXQPISTRONGPDOWN; + input TXQPIWEAKPUP; + input TXSTARTSEQ; + input TXSWING; + input TXUSERRDY; + (* invertible_pin = "IS_TXUSRCLK2_INVERTED" *) + input TXUSRCLK2; + (* invertible_pin = "IS_TXUSRCLK_INVERTED" *) + input TXUSRCLK; + input [15:0] DRPDI; + input [15:0] GTRSVD; + input [15:0] PCSRSVDIN; + input [19:0] TSTIN; + input [1:0] RXELECIDLEMODE; + input [1:0] RXMONITORSEL; + input [1:0] RXPD; + input [1:0] RXSYSCLKSEL; + input [1:0] TXPD; + input [1:0] TXSYSCLKSEL; + input [2:0] CPLLREFCLKSEL; + input [2:0] LOOPBACK; + input [2:0] RXCHBONDLEVEL; + input [2:0] RXOUTCLKSEL; + input [2:0] RXPRBSSEL; + input [2:0] RXRATE; + input [2:0] TXBUFDIFFCTRL; + input [2:0] TXHEADER; + input [2:0] TXMARGIN; + input [2:0] TXOUTCLKSEL; + input [2:0] TXPRBSSEL; + input [2:0] TXRATE; + input [3:0] CLKRSVD; + input [3:0] TXDIFFCTRL; + input [4:0] PCSRSVDIN2; + input [4:0] PMARSVDIN2; + input [4:0] PMARSVDIN; + input [4:0] RXCHBONDI; + input [4:0] TXPOSTCURSOR; + input [4:0] TXPRECURSOR; + input [63:0] TXDATA; + input [6:0] TXMAINCURSOR; + input [6:0] TXSEQUENCE; + input [7:0] TX8B10BBYPASS; + input [7:0] TXCHARDISPMODE; + input [7:0] TXCHARDISPVAL; + input [7:0] TXCHARISK; + input [8:0] DRPADDR; +endmodule + +module GTXE2_COMMON (...); + parameter [63:0] BIAS_CFG = 64'h0000040000001000; + parameter [31:0] COMMON_CFG = 32'h00000000; + parameter [0:0] IS_DRPCLK_INVERTED = 1'b0; + parameter [0:0] IS_GTGREFCLK_INVERTED = 1'b0; + parameter [0:0] IS_QPLLLOCKDETCLK_INVERTED = 1'b0; + parameter [26:0] QPLL_CFG = 27'h0680181; + parameter [3:0] QPLL_CLKOUT_CFG = 4'b0000; + parameter [5:0] QPLL_COARSE_FREQ_OVRD = 6'b010000; + parameter [0:0] QPLL_COARSE_FREQ_OVRD_EN = 1'b0; + parameter [9:0] QPLL_CP = 10'b0000011111; + parameter [0:0] QPLL_CP_MONITOR_EN = 1'b0; + parameter [0:0] QPLL_DMONITOR_SEL = 1'b0; + parameter [9:0] QPLL_FBDIV = 10'b0000000000; + parameter [0:0] QPLL_FBDIV_MONITOR_EN = 1'b0; + parameter [0:0] QPLL_FBDIV_RATIO = 1'b0; + parameter [23:0] QPLL_INIT_CFG = 24'h000006; + parameter [15:0] QPLL_LOCK_CFG = 16'h21E8; + parameter [3:0] QPLL_LPF = 4'b1111; + parameter integer QPLL_REFCLK_DIV = 2; + parameter [2:0] SIM_QPLLREFCLK_SEL = 3'b001; + parameter SIM_RESET_SPEEDUP = "TRUE"; + parameter SIM_VERSION = "4.0"; + output DRPRDY; + output QPLLFBCLKLOST; + output QPLLLOCK; + output QPLLOUTCLK; + output QPLLOUTREFCLK; + output QPLLREFCLKLOST; + output REFCLKOUTMONITOR; + output [15:0] DRPDO; + output [7:0] QPLLDMONITOR; + input BGBYPASSB; + input BGMONITORENB; + input BGPDB; + (* invertible_pin = "IS_DRPCLK_INVERTED" *) + input DRPCLK; + input DRPEN; + input DRPWE; + (* invertible_pin = "IS_GTGREFCLK_INVERTED" *) + input GTGREFCLK; + input GTNORTHREFCLK0; + input GTNORTHREFCLK1; + input GTREFCLK0; + input GTREFCLK1; + input GTSOUTHREFCLK0; + input GTSOUTHREFCLK1; + (* invertible_pin = "IS_QPLLLOCKDETCLK_INVERTED" *) + input QPLLLOCKDETCLK; + input QPLLLOCKEN; + input QPLLOUTRESET; + input QPLLPD; + input QPLLRESET; + input RCALENB; + input [15:0] DRPDI; + input [15:0] QPLLRSVD1; + input [2:0] QPLLREFCLKSEL; + input [4:0] BGRCALOVRD; + input [4:0] QPLLRSVD2; + input [7:0] DRPADDR; + input [7:0] PMARSVD; +endmodule + +module IBUFDS_GTE2 (...); + parameter CLKCM_CFG = "TRUE"; + parameter CLKRCV_TRST = "TRUE"; + parameter CLKSWING_CFG = "TRUE"; + output O; + output ODIV2; + input CEB; + (* iopad_external_pin *) + input I; + (* iopad_external_pin *) + input IB; +endmodule + +module GTHE3_CHANNEL (...); + parameter [0:0] ACJTAG_DEBUG_MODE = 1'b0; + parameter [0:0] ACJTAG_MODE = 1'b0; + parameter [0:0] ACJTAG_RESET = 1'b0; + parameter [15:0] ADAPT_CFG0 = 16'hF800; + parameter [15:0] ADAPT_CFG1 = 16'h0000; + parameter ALIGN_COMMA_DOUBLE = "FALSE"; + parameter [9:0] ALIGN_COMMA_ENABLE = 10'b0001111111; + parameter integer ALIGN_COMMA_WORD = 1; + parameter ALIGN_MCOMMA_DET = "TRUE"; + parameter [9:0] ALIGN_MCOMMA_VALUE = 10'b1010000011; + parameter ALIGN_PCOMMA_DET = "TRUE"; + parameter [9:0] ALIGN_PCOMMA_VALUE = 10'b0101111100; + parameter [0:0] A_RXOSCALRESET = 1'b0; + parameter [0:0] A_RXPROGDIVRESET = 1'b0; + parameter [0:0] A_TXPROGDIVRESET = 1'b0; + parameter CBCC_DATA_SOURCE_SEL = "DECODED"; + parameter [0:0] CDR_SWAP_MODE_EN = 1'b0; + parameter CHAN_BOND_KEEP_ALIGN = "FALSE"; + parameter integer CHAN_BOND_MAX_SKEW = 7; + parameter [9:0] CHAN_BOND_SEQ_1_1 = 10'b0101111100; + parameter [9:0] CHAN_BOND_SEQ_1_2 = 10'b0000000000; + parameter [9:0] CHAN_BOND_SEQ_1_3 = 10'b0000000000; + parameter [9:0] CHAN_BOND_SEQ_1_4 = 10'b0000000000; + parameter [3:0] CHAN_BOND_SEQ_1_ENABLE = 4'b1111; + parameter [9:0] CHAN_BOND_SEQ_2_1 = 10'b0100000000; + parameter [9:0] CHAN_BOND_SEQ_2_2 = 10'b0100000000; + parameter [9:0] CHAN_BOND_SEQ_2_3 = 10'b0100000000; + parameter [9:0] CHAN_BOND_SEQ_2_4 = 10'b0100000000; + parameter [3:0] CHAN_BOND_SEQ_2_ENABLE = 4'b1111; + parameter CHAN_BOND_SEQ_2_USE = "FALSE"; + parameter integer CHAN_BOND_SEQ_LEN = 2; + parameter CLK_CORRECT_USE = "TRUE"; + parameter CLK_COR_KEEP_IDLE = "FALSE"; + parameter integer CLK_COR_MAX_LAT = 20; + parameter integer CLK_COR_MIN_LAT = 18; + parameter CLK_COR_PRECEDENCE = "TRUE"; + parameter integer CLK_COR_REPEAT_WAIT = 0; + parameter [9:0] CLK_COR_SEQ_1_1 = 10'b0100011100; + parameter [9:0] CLK_COR_SEQ_1_2 = 10'b0000000000; + parameter [9:0] CLK_COR_SEQ_1_3 = 10'b0000000000; + parameter [9:0] CLK_COR_SEQ_1_4 = 10'b0000000000; + parameter [3:0] CLK_COR_SEQ_1_ENABLE = 4'b1111; + parameter [9:0] CLK_COR_SEQ_2_1 = 10'b0100000000; + parameter [9:0] CLK_COR_SEQ_2_2 = 10'b0100000000; + parameter [9:0] CLK_COR_SEQ_2_3 = 10'b0100000000; + parameter [9:0] CLK_COR_SEQ_2_4 = 10'b0100000000; + parameter [3:0] CLK_COR_SEQ_2_ENABLE = 4'b1111; + parameter CLK_COR_SEQ_2_USE = "FALSE"; + parameter integer CLK_COR_SEQ_LEN = 2; + parameter [15:0] CPLL_CFG0 = 16'h20F8; + parameter [15:0] CPLL_CFG1 = 16'hA494; + parameter [15:0] CPLL_CFG2 = 16'hF001; + parameter [5:0] CPLL_CFG3 = 6'h00; + parameter integer CPLL_FBDIV = 4; + parameter integer CPLL_FBDIV_45 = 4; + parameter [15:0] CPLL_INIT_CFG0 = 16'h001E; + parameter [7:0] CPLL_INIT_CFG1 = 8'h00; + parameter [15:0] CPLL_LOCK_CFG = 16'h01E8; + parameter integer CPLL_REFCLK_DIV = 1; + parameter [1:0] DDI_CTRL = 2'b00; + parameter integer DDI_REALIGN_WAIT = 15; + parameter DEC_MCOMMA_DETECT = "TRUE"; + parameter DEC_PCOMMA_DETECT = "TRUE"; + parameter DEC_VALID_COMMA_ONLY = "TRUE"; + parameter [0:0] DFE_D_X_REL_POS = 1'b0; + parameter [0:0] DFE_VCM_COMP_EN = 1'b0; + parameter [9:0] DMONITOR_CFG0 = 10'h000; + parameter [7:0] DMONITOR_CFG1 = 8'h00; + parameter [0:0] ES_CLK_PHASE_SEL = 1'b0; + parameter [5:0] ES_CONTROL = 6'b000000; + parameter ES_ERRDET_EN = "FALSE"; + parameter ES_EYE_SCAN_EN = "FALSE"; + parameter [11:0] ES_HORZ_OFFSET = 12'h000; + parameter [9:0] ES_PMA_CFG = 10'b0000000000; + parameter [4:0] ES_PRESCALE = 5'b00000; + parameter [15:0] ES_QUALIFIER0 = 16'h0000; + parameter [15:0] ES_QUALIFIER1 = 16'h0000; + parameter [15:0] ES_QUALIFIER2 = 16'h0000; + parameter [15:0] ES_QUALIFIER3 = 16'h0000; + parameter [15:0] ES_QUALIFIER4 = 16'h0000; + parameter [15:0] ES_QUAL_MASK0 = 16'h0000; + parameter [15:0] ES_QUAL_MASK1 = 16'h0000; + parameter [15:0] ES_QUAL_MASK2 = 16'h0000; + parameter [15:0] ES_QUAL_MASK3 = 16'h0000; + parameter [15:0] ES_QUAL_MASK4 = 16'h0000; + parameter [15:0] ES_SDATA_MASK0 = 16'h0000; + parameter [15:0] ES_SDATA_MASK1 = 16'h0000; + parameter [15:0] ES_SDATA_MASK2 = 16'h0000; + parameter [15:0] ES_SDATA_MASK3 = 16'h0000; + parameter [15:0] ES_SDATA_MASK4 = 16'h0000; + parameter [10:0] EVODD_PHI_CFG = 11'b00000000000; + parameter [0:0] EYE_SCAN_SWAP_EN = 1'b0; + parameter [3:0] FTS_DESKEW_SEQ_ENABLE = 4'b1111; + parameter [3:0] FTS_LANE_DESKEW_CFG = 4'b1111; + parameter FTS_LANE_DESKEW_EN = "FALSE"; + parameter [4:0] GEARBOX_MODE = 5'b00000; + parameter [0:0] GM_BIAS_SELECT = 1'b0; + parameter [0:0] LOCAL_MASTER = 1'b0; + parameter [1:0] OOBDIVCTL = 2'b00; + parameter [0:0] OOB_PWRUP = 1'b0; + parameter PCI3_AUTO_REALIGN = "FRST_SMPL"; + parameter [0:0] PCI3_PIPE_RX_ELECIDLE = 1'b1; + parameter [1:0] PCI3_RX_ASYNC_EBUF_BYPASS = 2'b00; + parameter [0:0] PCI3_RX_ELECIDLE_EI2_ENABLE = 1'b0; + parameter [5:0] PCI3_RX_ELECIDLE_H2L_COUNT = 6'b000000; + parameter [2:0] PCI3_RX_ELECIDLE_H2L_DISABLE = 3'b000; + parameter [5:0] PCI3_RX_ELECIDLE_HI_COUNT = 6'b000000; + parameter [0:0] PCI3_RX_ELECIDLE_LP4_DISABLE = 1'b0; + parameter [0:0] PCI3_RX_FIFO_DISABLE = 1'b0; + parameter [15:0] PCIE_BUFG_DIV_CTRL = 16'h0000; + parameter [15:0] PCIE_RXPCS_CFG_GEN3 = 16'h0000; + parameter [15:0] PCIE_RXPMA_CFG = 16'h0000; + parameter [15:0] PCIE_TXPCS_CFG_GEN3 = 16'h0000; + parameter [15:0] PCIE_TXPMA_CFG = 16'h0000; + parameter PCS_PCIE_EN = "FALSE"; + parameter [15:0] PCS_RSVD0 = 16'b0000000000000000; + parameter [2:0] PCS_RSVD1 = 3'b000; + parameter [11:0] PD_TRANS_TIME_FROM_P2 = 12'h03C; + parameter [7:0] PD_TRANS_TIME_NONE_P2 = 8'h19; + parameter [7:0] PD_TRANS_TIME_TO_P2 = 8'h64; + parameter [1:0] PLL_SEL_MODE_GEN12 = 2'h0; + parameter [1:0] PLL_SEL_MODE_GEN3 = 2'h0; + parameter [15:0] PMA_RSV1 = 16'h0000; + parameter [2:0] PROCESS_PAR = 3'b010; + parameter [0:0] RATE_SW_USE_DRP = 1'b0; + parameter [0:0] RESET_POWERSAVE_DISABLE = 1'b0; + parameter [4:0] RXBUFRESET_TIME = 5'b00001; + parameter RXBUF_ADDR_MODE = "FULL"; + parameter [3:0] RXBUF_EIDLE_HI_CNT = 4'b1000; + parameter [3:0] RXBUF_EIDLE_LO_CNT = 4'b0000; + parameter RXBUF_EN = "TRUE"; + parameter RXBUF_RESET_ON_CB_CHANGE = "TRUE"; + parameter RXBUF_RESET_ON_COMMAALIGN = "FALSE"; + parameter RXBUF_RESET_ON_EIDLE = "FALSE"; + parameter RXBUF_RESET_ON_RATE_CHANGE = "TRUE"; + parameter integer RXBUF_THRESH_OVFLW = 0; + parameter RXBUF_THRESH_OVRD = "FALSE"; + parameter integer RXBUF_THRESH_UNDFLW = 4; + parameter [4:0] RXCDRFREQRESET_TIME = 5'b00001; + parameter [4:0] RXCDRPHRESET_TIME = 5'b00001; + parameter [15:0] RXCDR_CFG0 = 16'h0000; + parameter [15:0] RXCDR_CFG0_GEN3 = 16'h0000; + parameter [15:0] RXCDR_CFG1 = 16'h0080; + parameter [15:0] RXCDR_CFG1_GEN3 = 16'h0000; + parameter [15:0] RXCDR_CFG2 = 16'h07E6; + parameter [15:0] RXCDR_CFG2_GEN3 = 16'h0000; + parameter [15:0] RXCDR_CFG3 = 16'h0000; + parameter [15:0] RXCDR_CFG3_GEN3 = 16'h0000; + parameter [15:0] RXCDR_CFG4 = 16'h0000; + parameter [15:0] RXCDR_CFG4_GEN3 = 16'h0000; + parameter [15:0] RXCDR_CFG5 = 16'h0000; + parameter [15:0] RXCDR_CFG5_GEN3 = 16'h0000; + parameter [0:0] RXCDR_FR_RESET_ON_EIDLE = 1'b0; + parameter [0:0] RXCDR_HOLD_DURING_EIDLE = 1'b0; + parameter [15:0] RXCDR_LOCK_CFG0 = 16'h5080; + parameter [15:0] RXCDR_LOCK_CFG1 = 16'h07E0; + parameter [15:0] RXCDR_LOCK_CFG2 = 16'h7C42; + parameter [0:0] RXCDR_PH_RESET_ON_EIDLE = 1'b0; + parameter [15:0] RXCFOK_CFG0 = 16'h4000; + parameter [15:0] RXCFOK_CFG1 = 16'h0060; + parameter [15:0] RXCFOK_CFG2 = 16'h000E; + parameter [6:0] RXDFELPMRESET_TIME = 7'b0001111; + parameter [15:0] RXDFELPM_KL_CFG0 = 16'h0000; + parameter [15:0] RXDFELPM_KL_CFG1 = 16'h0032; + parameter [15:0] RXDFELPM_KL_CFG2 = 16'h0000; + parameter [15:0] RXDFE_CFG0 = 16'h0A00; + parameter [15:0] RXDFE_CFG1 = 16'h0000; + parameter [15:0] RXDFE_GC_CFG0 = 16'h0000; + parameter [15:0] RXDFE_GC_CFG1 = 16'h7840; + parameter [15:0] RXDFE_GC_CFG2 = 16'h0000; + parameter [15:0] RXDFE_H2_CFG0 = 16'h0000; + parameter [15:0] RXDFE_H2_CFG1 = 16'h0000; + parameter [15:0] RXDFE_H3_CFG0 = 16'h4000; + parameter [15:0] RXDFE_H3_CFG1 = 16'h0000; + parameter [15:0] RXDFE_H4_CFG0 = 16'h2000; + parameter [15:0] RXDFE_H4_CFG1 = 16'h0003; + parameter [15:0] RXDFE_H5_CFG0 = 16'h2000; + parameter [15:0] RXDFE_H5_CFG1 = 16'h0003; + parameter [15:0] RXDFE_H6_CFG0 = 16'h2000; + parameter [15:0] RXDFE_H6_CFG1 = 16'h0000; + parameter [15:0] RXDFE_H7_CFG0 = 16'h2000; + parameter [15:0] RXDFE_H7_CFG1 = 16'h0000; + parameter [15:0] RXDFE_H8_CFG0 = 16'h2000; + parameter [15:0] RXDFE_H8_CFG1 = 16'h0000; + parameter [15:0] RXDFE_H9_CFG0 = 16'h2000; + parameter [15:0] RXDFE_H9_CFG1 = 16'h0000; + parameter [15:0] RXDFE_HA_CFG0 = 16'h2000; + parameter [15:0] RXDFE_HA_CFG1 = 16'h0000; + parameter [15:0] RXDFE_HB_CFG0 = 16'h2000; + parameter [15:0] RXDFE_HB_CFG1 = 16'h0000; + parameter [15:0] RXDFE_HC_CFG0 = 16'h0000; + parameter [15:0] RXDFE_HC_CFG1 = 16'h0000; + parameter [15:0] RXDFE_HD_CFG0 = 16'h0000; + parameter [15:0] RXDFE_HD_CFG1 = 16'h0000; + parameter [15:0] RXDFE_HE_CFG0 = 16'h0000; + parameter [15:0] RXDFE_HE_CFG1 = 16'h0000; + parameter [15:0] RXDFE_HF_CFG0 = 16'h0000; + parameter [15:0] RXDFE_HF_CFG1 = 16'h0000; + parameter [15:0] RXDFE_OS_CFG0 = 16'h8000; + parameter [15:0] RXDFE_OS_CFG1 = 16'h0000; + parameter [15:0] RXDFE_UT_CFG0 = 16'h8000; + parameter [15:0] RXDFE_UT_CFG1 = 16'h0003; + parameter [15:0] RXDFE_VP_CFG0 = 16'hAA00; + parameter [15:0] RXDFE_VP_CFG1 = 16'h0033; + parameter [15:0] RXDLY_CFG = 16'h001F; + parameter [15:0] RXDLY_LCFG = 16'h0030; + parameter RXELECIDLE_CFG = "Sigcfg_4"; + parameter integer RXGBOX_FIFO_INIT_RD_ADDR = 4; + parameter RXGEARBOX_EN = "FALSE"; + parameter [4:0] RXISCANRESET_TIME = 5'b00001; + parameter [15:0] RXLPM_CFG = 16'h0000; + parameter [15:0] RXLPM_GC_CFG = 16'h0000; + parameter [15:0] RXLPM_KH_CFG0 = 16'h0000; + parameter [15:0] RXLPM_KH_CFG1 = 16'h0002; + parameter [15:0] RXLPM_OS_CFG0 = 16'h8000; + parameter [15:0] RXLPM_OS_CFG1 = 16'h0002; + parameter [8:0] RXOOB_CFG = 9'b000000110; + parameter RXOOB_CLK_CFG = "PMA"; + parameter [4:0] RXOSCALRESET_TIME = 5'b00011; + parameter integer RXOUT_DIV = 4; + parameter [4:0] RXPCSRESET_TIME = 5'b00001; + parameter [15:0] RXPHBEACON_CFG = 16'h0000; + parameter [15:0] RXPHDLY_CFG = 16'h2020; + parameter [15:0] RXPHSAMP_CFG = 16'h2100; + parameter [15:0] RXPHSLIP_CFG = 16'h6622; + parameter [4:0] RXPH_MONITOR_SEL = 5'b00000; + parameter [1:0] RXPI_CFG0 = 2'b00; + parameter [1:0] RXPI_CFG1 = 2'b00; + parameter [1:0] RXPI_CFG2 = 2'b00; + parameter [1:0] RXPI_CFG3 = 2'b00; + parameter [0:0] RXPI_CFG4 = 1'b0; + parameter [0:0] RXPI_CFG5 = 1'b1; + parameter [2:0] RXPI_CFG6 = 3'b000; + parameter [0:0] RXPI_LPM = 1'b0; + parameter [0:0] RXPI_VREFSEL = 1'b0; + parameter RXPMACLK_SEL = "DATA"; + parameter [4:0] RXPMARESET_TIME = 5'b00001; + parameter [0:0] RXPRBS_ERR_LOOPBACK = 1'b0; + parameter integer RXPRBS_LINKACQ_CNT = 15; + parameter integer RXSLIDE_AUTO_WAIT = 7; + parameter RXSLIDE_MODE = "OFF"; + parameter [0:0] RXSYNC_MULTILANE = 1'b0; + parameter [0:0] RXSYNC_OVRD = 1'b0; + parameter [0:0] RXSYNC_SKIP_DA = 1'b0; + parameter [0:0] RX_AFE_CM_EN = 1'b0; + parameter [15:0] RX_BIAS_CFG0 = 16'h0AD4; + parameter [5:0] RX_BUFFER_CFG = 6'b000000; + parameter [0:0] RX_CAPFF_SARC_ENB = 1'b0; + parameter integer RX_CLK25_DIV = 8; + parameter [0:0] RX_CLKMUX_EN = 1'b1; + parameter [4:0] RX_CLK_SLIP_OVRD = 5'b00000; + parameter [3:0] RX_CM_BUF_CFG = 4'b1010; + parameter [0:0] RX_CM_BUF_PD = 1'b0; + parameter [1:0] RX_CM_SEL = 2'b11; + parameter [3:0] RX_CM_TRIM = 4'b0100; + parameter [7:0] RX_CTLE3_LPF = 8'b00000000; + parameter integer RX_DATA_WIDTH = 20; + parameter [5:0] RX_DDI_SEL = 6'b000000; + parameter RX_DEFER_RESET_BUF_EN = "TRUE"; + parameter [3:0] RX_DFELPM_CFG0 = 4'b0110; + parameter [0:0] RX_DFELPM_CFG1 = 1'b0; + parameter [0:0] RX_DFELPM_KLKH_AGC_STUP_EN = 1'b1; + parameter [1:0] RX_DFE_AGC_CFG0 = 2'b00; + parameter [2:0] RX_DFE_AGC_CFG1 = 3'b100; + parameter [1:0] RX_DFE_KL_LPM_KH_CFG0 = 2'b01; + parameter [2:0] RX_DFE_KL_LPM_KH_CFG1 = 3'b010; + parameter [1:0] RX_DFE_KL_LPM_KL_CFG0 = 2'b01; + parameter [2:0] RX_DFE_KL_LPM_KL_CFG1 = 3'b010; + parameter [0:0] RX_DFE_LPM_HOLD_DURING_EIDLE = 1'b0; + parameter RX_DISPERR_SEQ_MATCH = "TRUE"; + parameter [4:0] RX_DIVRESET_TIME = 5'b00001; + parameter [0:0] RX_EN_HI_LR = 1'b0; + parameter [6:0] RX_EYESCAN_VS_CODE = 7'b0000000; + parameter [0:0] RX_EYESCAN_VS_NEG_DIR = 1'b0; + parameter [1:0] RX_EYESCAN_VS_RANGE = 2'b00; + parameter [0:0] RX_EYESCAN_VS_UT_SIGN = 1'b0; + parameter [0:0] RX_FABINT_USRCLK_FLOP = 1'b0; + parameter integer RX_INT_DATAWIDTH = 1; + parameter [0:0] RX_PMA_POWER_SAVE = 1'b0; + parameter real RX_PROGDIV_CFG = 4.0; + parameter [2:0] RX_SAMPLE_PERIOD = 3'b101; + parameter integer RX_SIG_VALID_DLY = 11; + parameter [0:0] RX_SUM_DFETAPREP_EN = 1'b0; + parameter [3:0] RX_SUM_IREF_TUNE = 4'b0000; + parameter [1:0] RX_SUM_RES_CTRL = 2'b00; + parameter [3:0] RX_SUM_VCMTUNE = 4'b0000; + parameter [0:0] RX_SUM_VCM_OVWR = 1'b0; + parameter [2:0] RX_SUM_VREF_TUNE = 3'b000; + parameter [1:0] RX_TUNE_AFE_OS = 2'b00; + parameter [0:0] RX_WIDEMODE_CDR = 1'b0; + parameter RX_XCLK_SEL = "RXDES"; + parameter integer SAS_MAX_COM = 64; + parameter integer SAS_MIN_COM = 36; + parameter [3:0] SATA_BURST_SEQ_LEN = 4'b1111; + parameter [2:0] SATA_BURST_VAL = 3'b100; + parameter SATA_CPLL_CFG = "VCO_3000MHZ"; + parameter [2:0] SATA_EIDLE_VAL = 3'b100; + parameter integer SATA_MAX_BURST = 8; + parameter integer SATA_MAX_INIT = 21; + parameter integer SATA_MAX_WAKE = 7; + parameter integer SATA_MIN_BURST = 4; + parameter integer SATA_MIN_INIT = 12; + parameter integer SATA_MIN_WAKE = 4; + parameter SHOW_REALIGN_COMMA = "TRUE"; + parameter SIM_MODE = "FAST"; + parameter SIM_RECEIVER_DETECT_PASS = "TRUE"; + parameter SIM_RESET_SPEEDUP = "TRUE"; + parameter [0:0] SIM_TX_EIDLE_DRIVE_LEVEL = 1'b0; + parameter integer SIM_VERSION = 2; + parameter [1:0] TAPDLY_SET_TX = 2'h0; + parameter [3:0] TEMPERATUR_PAR = 4'b0010; + parameter [14:0] TERM_RCAL_CFG = 15'b100001000010000; + parameter [2:0] TERM_RCAL_OVRD = 3'b000; + parameter [7:0] TRANS_TIME_RATE = 8'h0E; + parameter [7:0] TST_RSV0 = 8'h00; + parameter [7:0] TST_RSV1 = 8'h00; + parameter TXBUF_EN = "TRUE"; + parameter TXBUF_RESET_ON_RATE_CHANGE = "FALSE"; + parameter [15:0] TXDLY_CFG = 16'h001F; + parameter [15:0] TXDLY_LCFG = 16'h0030; + parameter [3:0] TXDRVBIAS_N = 4'b1010; + parameter [3:0] TXDRVBIAS_P = 4'b1100; + parameter TXFIFO_ADDR_CFG = "LOW"; + parameter integer TXGBOX_FIFO_INIT_RD_ADDR = 4; + parameter TXGEARBOX_EN = "FALSE"; + parameter integer TXOUT_DIV = 4; + parameter [4:0] TXPCSRESET_TIME = 5'b00001; + parameter [15:0] TXPHDLY_CFG0 = 16'h2020; + parameter [15:0] TXPHDLY_CFG1 = 16'h0001; + parameter [15:0] TXPH_CFG = 16'h0980; + parameter [4:0] TXPH_MONITOR_SEL = 5'b00000; + parameter [1:0] TXPI_CFG0 = 2'b00; + parameter [1:0] TXPI_CFG1 = 2'b00; + parameter [1:0] TXPI_CFG2 = 2'b00; + parameter [0:0] TXPI_CFG3 = 1'b0; + parameter [0:0] TXPI_CFG4 = 1'b1; + parameter [2:0] TXPI_CFG5 = 3'b000; + parameter [0:0] TXPI_GRAY_SEL = 1'b0; + parameter [0:0] TXPI_INVSTROBE_SEL = 1'b0; + parameter [0:0] TXPI_LPM = 1'b0; + parameter TXPI_PPMCLK_SEL = "TXUSRCLK2"; + parameter [7:0] TXPI_PPM_CFG = 8'b00000000; + parameter [2:0] TXPI_SYNFREQ_PPM = 3'b000; + parameter [0:0] TXPI_VREFSEL = 1'b0; + parameter [4:0] TXPMARESET_TIME = 5'b00001; + parameter [0:0] TXSYNC_MULTILANE = 1'b0; + parameter [0:0] TXSYNC_OVRD = 1'b0; + parameter [0:0] TXSYNC_SKIP_DA = 1'b0; + parameter integer TX_CLK25_DIV = 8; + parameter [0:0] TX_CLKMUX_EN = 1'b1; + parameter integer TX_DATA_WIDTH = 20; + parameter [5:0] TX_DCD_CFG = 6'b000010; + parameter [0:0] TX_DCD_EN = 1'b0; + parameter [5:0] TX_DEEMPH0 = 6'b000000; + parameter [5:0] TX_DEEMPH1 = 6'b000000; + parameter [4:0] TX_DIVRESET_TIME = 5'b00001; + parameter TX_DRIVE_MODE = "DIRECT"; + parameter [2:0] TX_EIDLE_ASSERT_DELAY = 3'b110; + parameter [2:0] TX_EIDLE_DEASSERT_DELAY = 3'b100; + parameter [0:0] TX_EML_PHI_TUNE = 1'b0; + parameter [0:0] TX_FABINT_USRCLK_FLOP = 1'b0; + parameter [0:0] TX_IDLE_DATA_ZERO = 1'b0; + parameter integer TX_INT_DATAWIDTH = 1; + parameter TX_LOOPBACK_DRIVE_HIZ = "FALSE"; + parameter [0:0] TX_MAINCURSOR_SEL = 1'b0; + parameter [6:0] TX_MARGIN_FULL_0 = 7'b1001110; + parameter [6:0] TX_MARGIN_FULL_1 = 7'b1001001; + parameter [6:0] TX_MARGIN_FULL_2 = 7'b1000101; + parameter [6:0] TX_MARGIN_FULL_3 = 7'b1000010; + parameter [6:0] TX_MARGIN_FULL_4 = 7'b1000000; + parameter [6:0] TX_MARGIN_LOW_0 = 7'b1000110; + parameter [6:0] TX_MARGIN_LOW_1 = 7'b1000100; + parameter [6:0] TX_MARGIN_LOW_2 = 7'b1000010; + parameter [6:0] TX_MARGIN_LOW_3 = 7'b1000000; + parameter [6:0] TX_MARGIN_LOW_4 = 7'b1000000; + parameter [2:0] TX_MODE_SEL = 3'b000; + parameter [0:0] TX_PMADATA_OPT = 1'b0; + parameter [0:0] TX_PMA_POWER_SAVE = 1'b0; + parameter TX_PROGCLK_SEL = "POSTPI"; + parameter real TX_PROGDIV_CFG = 4.0; + parameter [0:0] TX_QPI_STATUS_EN = 1'b0; + parameter [13:0] TX_RXDETECT_CFG = 14'h0032; + parameter [2:0] TX_RXDETECT_REF = 3'b100; + parameter [2:0] TX_SAMPLE_PERIOD = 3'b101; + parameter [0:0] TX_SARC_LPBK_ENB = 1'b0; + parameter TX_XCLK_SEL = "TXOUT"; + parameter [0:0] USE_PCS_CLK_PHASE_SEL = 1'b0; + parameter [1:0] WB_MODE = 2'b00; + output [2:0] BUFGTCE; + output [2:0] BUFGTCEMASK; + output [8:0] BUFGTDIV; + output [2:0] BUFGTRESET; + output [2:0] BUFGTRSTMASK; + output CPLLFBCLKLOST; + output CPLLLOCK; + output CPLLREFCLKLOST; + output [16:0] DMONITOROUT; + output [15:0] DRPDO; + output DRPRDY; + output EYESCANDATAERROR; + output GTHTXN; + output GTHTXP; + output GTPOWERGOOD; + output GTREFCLKMONITOR; + output PCIERATEGEN3; + output PCIERATEIDLE; + output [1:0] PCIERATEQPLLPD; + output [1:0] PCIERATEQPLLRESET; + output PCIESYNCTXSYNCDONE; + output PCIEUSERGEN3RDY; + output PCIEUSERPHYSTATUSRST; + output PCIEUSERRATESTART; + output [11:0] PCSRSVDOUT; + output PHYSTATUS; + output [7:0] PINRSRVDAS; + output RESETEXCEPTION; + output [2:0] RXBUFSTATUS; + output RXBYTEISALIGNED; + output RXBYTEREALIGN; + output RXCDRLOCK; + output RXCDRPHDONE; + output RXCHANBONDSEQ; + output RXCHANISALIGNED; + output RXCHANREALIGN; + output [4:0] RXCHBONDO; + output [1:0] RXCLKCORCNT; + output RXCOMINITDET; + output RXCOMMADET; + output RXCOMSASDET; + output RXCOMWAKEDET; + output [15:0] RXCTRL0; + output [15:0] RXCTRL1; + output [7:0] RXCTRL2; + output [7:0] RXCTRL3; + output [127:0] RXDATA; + output [7:0] RXDATAEXTENDRSVD; + output [1:0] RXDATAVALID; + output RXDLYSRESETDONE; + output RXELECIDLE; + output [5:0] RXHEADER; + output [1:0] RXHEADERVALID; + output [6:0] RXMONITOROUT; + output RXOSINTDONE; + output RXOSINTSTARTED; + output RXOSINTSTROBEDONE; + output RXOSINTSTROBESTARTED; + output RXOUTCLK; + output RXOUTCLKFABRIC; + output RXOUTCLKPCS; + output RXPHALIGNDONE; + output RXPHALIGNERR; + output RXPMARESETDONE; + output RXPRBSERR; + output RXPRBSLOCKED; + output RXPRGDIVRESETDONE; + output RXQPISENN; + output RXQPISENP; + output RXRATEDONE; + output RXRECCLKOUT; + output RXRESETDONE; + output RXSLIDERDY; + output RXSLIPDONE; + output RXSLIPOUTCLKRDY; + output RXSLIPPMARDY; + output [1:0] RXSTARTOFSEQ; + output [2:0] RXSTATUS; + output RXSYNCDONE; + output RXSYNCOUT; + output RXVALID; + output [1:0] TXBUFSTATUS; + output TXCOMFINISH; + output TXDLYSRESETDONE; + output TXOUTCLK; + output TXOUTCLKFABRIC; + output TXOUTCLKPCS; + output TXPHALIGNDONE; + output TXPHINITDONE; + output TXPMARESETDONE; + output TXPRGDIVRESETDONE; + output TXQPISENN; + output TXQPISENP; + output TXRATEDONE; + output TXRESETDONE; + output TXSYNCDONE; + output TXSYNCOUT; + input CFGRESET; + input CLKRSVD0; + input CLKRSVD1; + input CPLLLOCKDETCLK; + input CPLLLOCKEN; + input CPLLPD; + input [2:0] CPLLREFCLKSEL; + input CPLLRESET; + input DMONFIFORESET; + input DMONITORCLK; + input [8:0] DRPADDR; + input DRPCLK; + input [15:0] DRPDI; + input DRPEN; + input DRPWE; + input EVODDPHICALDONE; + input EVODDPHICALSTART; + input EVODDPHIDRDEN; + input EVODDPHIDWREN; + input EVODDPHIXRDEN; + input EVODDPHIXWREN; + input EYESCANMODE; + input EYESCANRESET; + input EYESCANTRIGGER; + input GTGREFCLK; + input GTHRXN; + input GTHRXP; + input GTNORTHREFCLK0; + input GTNORTHREFCLK1; + input GTREFCLK0; + input GTREFCLK1; + input GTRESETSEL; + input [15:0] GTRSVD; + input GTRXRESET; + input GTSOUTHREFCLK0; + input GTSOUTHREFCLK1; + input GTTXRESET; + input [2:0] LOOPBACK; + input LPBKRXTXSEREN; + input LPBKTXRXSEREN; + input PCIEEQRXEQADAPTDONE; + input PCIERSTIDLE; + input PCIERSTTXSYNCSTART; + input PCIEUSERRATEDONE; + input [15:0] PCSRSVDIN; + input [4:0] PCSRSVDIN2; + input [4:0] PMARSVDIN; + input QPLL0CLK; + input QPLL0REFCLK; + input QPLL1CLK; + input QPLL1REFCLK; + input RESETOVRD; + input RSTCLKENTX; + input RX8B10BEN; + input RXBUFRESET; + input RXCDRFREQRESET; + input RXCDRHOLD; + input RXCDROVRDEN; + input RXCDRRESET; + input RXCDRRESETRSV; + input RXCHBONDEN; + input [4:0] RXCHBONDI; + input [2:0] RXCHBONDLEVEL; + input RXCHBONDMASTER; + input RXCHBONDSLAVE; + input RXCOMMADETEN; + input [1:0] RXDFEAGCCTRL; + input RXDFEAGCHOLD; + input RXDFEAGCOVRDEN; + input RXDFELFHOLD; + input RXDFELFOVRDEN; + input RXDFELPMRESET; + input RXDFETAP10HOLD; + input RXDFETAP10OVRDEN; + input RXDFETAP11HOLD; + input RXDFETAP11OVRDEN; + input RXDFETAP12HOLD; + input RXDFETAP12OVRDEN; + input RXDFETAP13HOLD; + input RXDFETAP13OVRDEN; + input RXDFETAP14HOLD; + input RXDFETAP14OVRDEN; + input RXDFETAP15HOLD; + input RXDFETAP15OVRDEN; + input RXDFETAP2HOLD; + input RXDFETAP2OVRDEN; + input RXDFETAP3HOLD; + input RXDFETAP3OVRDEN; + input RXDFETAP4HOLD; + input RXDFETAP4OVRDEN; + input RXDFETAP5HOLD; + input RXDFETAP5OVRDEN; + input RXDFETAP6HOLD; + input RXDFETAP6OVRDEN; + input RXDFETAP7HOLD; + input RXDFETAP7OVRDEN; + input RXDFETAP8HOLD; + input RXDFETAP8OVRDEN; + input RXDFETAP9HOLD; + input RXDFETAP9OVRDEN; + input RXDFEUTHOLD; + input RXDFEUTOVRDEN; + input RXDFEVPHOLD; + input RXDFEVPOVRDEN; + input RXDFEVSEN; + input RXDFEXYDEN; + input RXDLYBYPASS; + input RXDLYEN; + input RXDLYOVRDEN; + input RXDLYSRESET; + input [1:0] RXELECIDLEMODE; + input RXGEARBOXSLIP; + input RXLATCLK; + input RXLPMEN; + input RXLPMGCHOLD; + input RXLPMGCOVRDEN; + input RXLPMHFHOLD; + input RXLPMHFOVRDEN; + input RXLPMLFHOLD; + input RXLPMLFKLOVRDEN; + input RXLPMOSHOLD; + input RXLPMOSOVRDEN; + input RXMCOMMAALIGNEN; + input [1:0] RXMONITORSEL; + input RXOOBRESET; + input RXOSCALRESET; + input RXOSHOLD; + input [3:0] RXOSINTCFG; + input RXOSINTEN; + input RXOSINTHOLD; + input RXOSINTOVRDEN; + input RXOSINTSTROBE; + input RXOSINTTESTOVRDEN; + input RXOSOVRDEN; + input [2:0] RXOUTCLKSEL; + input RXPCOMMAALIGNEN; + input RXPCSRESET; + input [1:0] RXPD; + input RXPHALIGN; + input RXPHALIGNEN; + input RXPHDLYPD; + input RXPHDLYRESET; + input RXPHOVRDEN; + input [1:0] RXPLLCLKSEL; + input RXPMARESET; + input RXPOLARITY; + input RXPRBSCNTRESET; + input [3:0] RXPRBSSEL; + input RXPROGDIVRESET; + input RXQPIEN; + input [2:0] RXRATE; + input RXRATEMODE; + input RXSLIDE; + input RXSLIPOUTCLK; + input RXSLIPPMA; + input RXSYNCALLIN; + input RXSYNCIN; + input RXSYNCMODE; + input [1:0] RXSYSCLKSEL; + input RXUSERRDY; + input RXUSRCLK; + input RXUSRCLK2; + input SIGVALIDCLK; + input [19:0] TSTIN; + input [7:0] TX8B10BBYPASS; + input TX8B10BEN; + input [2:0] TXBUFDIFFCTRL; + input TXCOMINIT; + input TXCOMSAS; + input TXCOMWAKE; + input [15:0] TXCTRL0; + input [15:0] TXCTRL1; + input [7:0] TXCTRL2; + input [127:0] TXDATA; + input [7:0] TXDATAEXTENDRSVD; + input TXDEEMPH; + input TXDETECTRX; + input [3:0] TXDIFFCTRL; + input TXDIFFPD; + input TXDLYBYPASS; + input TXDLYEN; + input TXDLYHOLD; + input TXDLYOVRDEN; + input TXDLYSRESET; + input TXDLYUPDOWN; + input TXELECIDLE; + input [5:0] TXHEADER; + input TXINHIBIT; + input TXLATCLK; + input [6:0] TXMAINCURSOR; + input [2:0] TXMARGIN; + input [2:0] TXOUTCLKSEL; + input TXPCSRESET; + input [1:0] TXPD; + input TXPDELECIDLEMODE; + input TXPHALIGN; + input TXPHALIGNEN; + input TXPHDLYPD; + input TXPHDLYRESET; + input TXPHDLYTSTCLK; + input TXPHINIT; + input TXPHOVRDEN; + input TXPIPPMEN; + input TXPIPPMOVRDEN; + input TXPIPPMPD; + input TXPIPPMSEL; + input [4:0] TXPIPPMSTEPSIZE; + input TXPISOPD; + input [1:0] TXPLLCLKSEL; + input TXPMARESET; + input TXPOLARITY; + input [4:0] TXPOSTCURSOR; + input TXPOSTCURSORINV; + input TXPRBSFORCEERR; + input [3:0] TXPRBSSEL; + input [4:0] TXPRECURSOR; + input TXPRECURSORINV; + input TXPROGDIVRESET; + input TXQPIBIASEN; + input TXQPISTRONGPDOWN; + input TXQPIWEAKPUP; + input [2:0] TXRATE; + input TXRATEMODE; + input [6:0] TXSEQUENCE; + input TXSWING; + input TXSYNCALLIN; + input TXSYNCIN; + input TXSYNCMODE; + input [1:0] TXSYSCLKSEL; + input TXUSERRDY; + input TXUSRCLK; + input TXUSRCLK2; +endmodule + +module GTHE3_COMMON (...); + parameter [15:0] BIAS_CFG0 = 16'h0000; + parameter [15:0] BIAS_CFG1 = 16'h0000; + parameter [15:0] BIAS_CFG2 = 16'h0000; + parameter [15:0] BIAS_CFG3 = 16'h0000; + parameter [15:0] BIAS_CFG4 = 16'h0000; + parameter [9:0] BIAS_CFG_RSVD = 10'b0000000000; + parameter [15:0] COMMON_CFG0 = 16'h0000; + parameter [15:0] COMMON_CFG1 = 16'h0000; + parameter [15:0] POR_CFG = 16'h0004; + parameter [15:0] QPLL0_CFG0 = 16'h3018; + parameter [15:0] QPLL0_CFG1 = 16'h0000; + parameter [15:0] QPLL0_CFG1_G3 = 16'h0020; + parameter [15:0] QPLL0_CFG2 = 16'h0000; + parameter [15:0] QPLL0_CFG2_G3 = 16'h0000; + parameter [15:0] QPLL0_CFG3 = 16'h0120; + parameter [15:0] QPLL0_CFG4 = 16'h0009; + parameter [9:0] QPLL0_CP = 10'b0000011111; + parameter [9:0] QPLL0_CP_G3 = 10'b0000011111; + parameter integer QPLL0_FBDIV = 66; + parameter integer QPLL0_FBDIV_G3 = 80; + parameter [15:0] QPLL0_INIT_CFG0 = 16'h0000; + parameter [7:0] QPLL0_INIT_CFG1 = 8'h00; + parameter [15:0] QPLL0_LOCK_CFG = 16'h01E8; + parameter [15:0] QPLL0_LOCK_CFG_G3 = 16'h01E8; + parameter [9:0] QPLL0_LPF = 10'b1111111111; + parameter [9:0] QPLL0_LPF_G3 = 10'b1111111111; + parameter integer QPLL0_REFCLK_DIV = 2; + parameter [15:0] QPLL0_SDM_CFG0 = 16'b0000000000000000; + parameter [15:0] QPLL0_SDM_CFG1 = 16'b0000000000000000; + parameter [15:0] QPLL0_SDM_CFG2 = 16'b0000000000000000; + parameter [15:0] QPLL1_CFG0 = 16'h3018; + parameter [15:0] QPLL1_CFG1 = 16'h0000; + parameter [15:0] QPLL1_CFG1_G3 = 16'h0020; + parameter [15:0] QPLL1_CFG2 = 16'h0000; + parameter [15:0] QPLL1_CFG2_G3 = 16'h0000; + parameter [15:0] QPLL1_CFG3 = 16'h0120; + parameter [15:0] QPLL1_CFG4 = 16'h0009; + parameter [9:0] QPLL1_CP = 10'b0000011111; + parameter [9:0] QPLL1_CP_G3 = 10'b0000011111; + parameter integer QPLL1_FBDIV = 66; + parameter integer QPLL1_FBDIV_G3 = 80; + parameter [15:0] QPLL1_INIT_CFG0 = 16'h0000; + parameter [7:0] QPLL1_INIT_CFG1 = 8'h00; + parameter [15:0] QPLL1_LOCK_CFG = 16'h01E8; + parameter [15:0] QPLL1_LOCK_CFG_G3 = 16'h21E8; + parameter [9:0] QPLL1_LPF = 10'b1111111111; + parameter [9:0] QPLL1_LPF_G3 = 10'b1111111111; + parameter integer QPLL1_REFCLK_DIV = 2; + parameter [15:0] QPLL1_SDM_CFG0 = 16'b0000000000000000; + parameter [15:0] QPLL1_SDM_CFG1 = 16'b0000000000000000; + parameter [15:0] QPLL1_SDM_CFG2 = 16'b0000000000000000; + parameter [15:0] RSVD_ATTR0 = 16'h0000; + parameter [15:0] RSVD_ATTR1 = 16'h0000; + parameter [15:0] RSVD_ATTR2 = 16'h0000; + parameter [15:0] RSVD_ATTR3 = 16'h0000; + parameter [1:0] RXRECCLKOUT0_SEL = 2'b00; + parameter [1:0] RXRECCLKOUT1_SEL = 2'b00; + parameter [0:0] SARC_EN = 1'b1; + parameter [0:0] SARC_SEL = 1'b0; + parameter [15:0] SDM0DATA1_0 = 16'b0000000000000000; + parameter [8:0] SDM0DATA1_1 = 9'b000000000; + parameter [15:0] SDM0INITSEED0_0 = 16'b0000000000000000; + parameter [8:0] SDM0INITSEED0_1 = 9'b000000000; + parameter [0:0] SDM0_DATA_PIN_SEL = 1'b0; + parameter [0:0] SDM0_WIDTH_PIN_SEL = 1'b0; + parameter [15:0] SDM1DATA1_0 = 16'b0000000000000000; + parameter [8:0] SDM1DATA1_1 = 9'b000000000; + parameter [15:0] SDM1INITSEED0_0 = 16'b0000000000000000; + parameter [8:0] SDM1INITSEED0_1 = 9'b000000000; + parameter [0:0] SDM1_DATA_PIN_SEL = 1'b0; + parameter [0:0] SDM1_WIDTH_PIN_SEL = 1'b0; + parameter SIM_MODE = "FAST"; + parameter SIM_RESET_SPEEDUP = "TRUE"; + parameter integer SIM_VERSION = 2; + output [15:0] DRPDO; + output DRPRDY; + output [7:0] PMARSVDOUT0; + output [7:0] PMARSVDOUT1; + output QPLL0FBCLKLOST; + output QPLL0LOCK; + output QPLL0OUTCLK; + output QPLL0OUTREFCLK; + output QPLL0REFCLKLOST; + output QPLL1FBCLKLOST; + output QPLL1LOCK; + output QPLL1OUTCLK; + output QPLL1OUTREFCLK; + output QPLL1REFCLKLOST; + output [7:0] QPLLDMONITOR0; + output [7:0] QPLLDMONITOR1; + output REFCLKOUTMONITOR0; + output REFCLKOUTMONITOR1; + output [1:0] RXRECCLK0_SEL; + output [1:0] RXRECCLK1_SEL; + input BGBYPASSB; + input BGMONITORENB; + input BGPDB; + input [4:0] BGRCALOVRD; + input BGRCALOVRDENB; + input [8:0] DRPADDR; + input DRPCLK; + input [15:0] DRPDI; + input DRPEN; + input DRPWE; + input GTGREFCLK0; + input GTGREFCLK1; + input GTNORTHREFCLK00; + input GTNORTHREFCLK01; + input GTNORTHREFCLK10; + input GTNORTHREFCLK11; + input GTREFCLK00; + input GTREFCLK01; + input GTREFCLK10; + input GTREFCLK11; + input GTSOUTHREFCLK00; + input GTSOUTHREFCLK01; + input GTSOUTHREFCLK10; + input GTSOUTHREFCLK11; + input [7:0] PMARSVD0; + input [7:0] PMARSVD1; + input QPLL0CLKRSVD0; + input QPLL0CLKRSVD1; + input QPLL0LOCKDETCLK; + input QPLL0LOCKEN; + input QPLL0PD; + input [2:0] QPLL0REFCLKSEL; + input QPLL0RESET; + input QPLL1CLKRSVD0; + input QPLL1CLKRSVD1; + input QPLL1LOCKDETCLK; + input QPLL1LOCKEN; + input QPLL1PD; + input [2:0] QPLL1REFCLKSEL; + input QPLL1RESET; + input [7:0] QPLLRSVD1; + input [4:0] QPLLRSVD2; + input [4:0] QPLLRSVD3; + input [7:0] QPLLRSVD4; + input RCALENB; +endmodule + +module GTYE3_CHANNEL (...); + parameter [0:0] ACJTAG_DEBUG_MODE = 1'b0; + parameter [0:0] ACJTAG_MODE = 1'b0; + parameter [0:0] ACJTAG_RESET = 1'b0; + parameter [15:0] ADAPT_CFG0 = 16'h9200; + parameter [15:0] ADAPT_CFG1 = 16'h801C; + parameter [15:0] ADAPT_CFG2 = 16'b0000000000000000; + parameter ALIGN_COMMA_DOUBLE = "FALSE"; + parameter [9:0] ALIGN_COMMA_ENABLE = 10'b0001111111; + parameter integer ALIGN_COMMA_WORD = 1; + parameter ALIGN_MCOMMA_DET = "TRUE"; + parameter [9:0] ALIGN_MCOMMA_VALUE = 10'b1010000011; + parameter ALIGN_PCOMMA_DET = "TRUE"; + parameter [9:0] ALIGN_PCOMMA_VALUE = 10'b0101111100; + parameter [0:0] AUTO_BW_SEL_BYPASS = 1'b0; + parameter [0:0] A_RXOSCALRESET = 1'b0; + parameter [0:0] A_RXPROGDIVRESET = 1'b0; + parameter [4:0] A_TXDIFFCTRL = 5'b01100; + parameter [0:0] A_TXPROGDIVRESET = 1'b0; + parameter [0:0] CAPBYPASS_FORCE = 1'b0; + parameter CBCC_DATA_SOURCE_SEL = "DECODED"; + parameter [0:0] CDR_SWAP_MODE_EN = 1'b0; + parameter CHAN_BOND_KEEP_ALIGN = "FALSE"; + parameter integer CHAN_BOND_MAX_SKEW = 7; + parameter [9:0] CHAN_BOND_SEQ_1_1 = 10'b0101111100; + parameter [9:0] CHAN_BOND_SEQ_1_2 = 10'b0000000000; + parameter [9:0] CHAN_BOND_SEQ_1_3 = 10'b0000000000; + parameter [9:0] CHAN_BOND_SEQ_1_4 = 10'b0000000000; + parameter [3:0] CHAN_BOND_SEQ_1_ENABLE = 4'b1111; + parameter [9:0] CHAN_BOND_SEQ_2_1 = 10'b0100000000; + parameter [9:0] CHAN_BOND_SEQ_2_2 = 10'b0100000000; + parameter [9:0] CHAN_BOND_SEQ_2_3 = 10'b0100000000; + parameter [9:0] CHAN_BOND_SEQ_2_4 = 10'b0100000000; + parameter [3:0] CHAN_BOND_SEQ_2_ENABLE = 4'b1111; + parameter CHAN_BOND_SEQ_2_USE = "FALSE"; + parameter integer CHAN_BOND_SEQ_LEN = 2; + parameter [15:0] CH_HSPMUX = 16'h0000; + parameter [15:0] CKCAL1_CFG_0 = 16'b0000000000000000; + parameter [15:0] CKCAL1_CFG_1 = 16'b0000000000000000; + parameter [15:0] CKCAL1_CFG_2 = 16'b0000000000000000; + parameter [15:0] CKCAL1_CFG_3 = 16'b0000000000000000; + parameter [15:0] CKCAL2_CFG_0 = 16'b0000000000000000; + parameter [15:0] CKCAL2_CFG_1 = 16'b0000000000000000; + parameter [15:0] CKCAL2_CFG_2 = 16'b0000000000000000; + parameter [15:0] CKCAL2_CFG_3 = 16'b0000000000000000; + parameter [15:0] CKCAL2_CFG_4 = 16'b0000000000000000; + parameter [15:0] CKCAL_RSVD0 = 16'h0000; + parameter [15:0] CKCAL_RSVD1 = 16'h0000; + parameter CLK_CORRECT_USE = "TRUE"; + parameter CLK_COR_KEEP_IDLE = "FALSE"; + parameter integer CLK_COR_MAX_LAT = 20; + parameter integer CLK_COR_MIN_LAT = 18; + parameter CLK_COR_PRECEDENCE = "TRUE"; + parameter integer CLK_COR_REPEAT_WAIT = 0; + parameter [9:0] CLK_COR_SEQ_1_1 = 10'b0100011100; + parameter [9:0] CLK_COR_SEQ_1_2 = 10'b0000000000; + parameter [9:0] CLK_COR_SEQ_1_3 = 10'b0000000000; + parameter [9:0] CLK_COR_SEQ_1_4 = 10'b0000000000; + parameter [3:0] CLK_COR_SEQ_1_ENABLE = 4'b1111; + parameter [9:0] CLK_COR_SEQ_2_1 = 10'b0100000000; + parameter [9:0] CLK_COR_SEQ_2_2 = 10'b0100000000; + parameter [9:0] CLK_COR_SEQ_2_3 = 10'b0100000000; + parameter [9:0] CLK_COR_SEQ_2_4 = 10'b0100000000; + parameter [3:0] CLK_COR_SEQ_2_ENABLE = 4'b1111; + parameter CLK_COR_SEQ_2_USE = "FALSE"; + parameter integer CLK_COR_SEQ_LEN = 2; + parameter [15:0] CPLL_CFG0 = 16'h20F8; + parameter [15:0] CPLL_CFG1 = 16'hA494; + parameter [15:0] CPLL_CFG2 = 16'hF001; + parameter [5:0] CPLL_CFG3 = 6'h00; + parameter integer CPLL_FBDIV = 4; + parameter integer CPLL_FBDIV_45 = 4; + parameter [15:0] CPLL_INIT_CFG0 = 16'h001E; + parameter [7:0] CPLL_INIT_CFG1 = 8'h00; + parameter [15:0] CPLL_LOCK_CFG = 16'h01E8; + parameter integer CPLL_REFCLK_DIV = 1; + parameter [2:0] CTLE3_OCAP_EXT_CTRL = 3'b000; + parameter [0:0] CTLE3_OCAP_EXT_EN = 1'b0; + parameter [1:0] DDI_CTRL = 2'b00; + parameter integer DDI_REALIGN_WAIT = 15; + parameter DEC_MCOMMA_DETECT = "TRUE"; + parameter DEC_PCOMMA_DETECT = "TRUE"; + parameter DEC_VALID_COMMA_ONLY = "TRUE"; + parameter [0:0] DFE_D_X_REL_POS = 1'b0; + parameter [0:0] DFE_VCM_COMP_EN = 1'b0; + parameter [9:0] DMONITOR_CFG0 = 10'h000; + parameter [7:0] DMONITOR_CFG1 = 8'h00; + parameter [0:0] ES_CLK_PHASE_SEL = 1'b0; + parameter [5:0] ES_CONTROL = 6'b000000; + parameter ES_ERRDET_EN = "FALSE"; + parameter ES_EYE_SCAN_EN = "FALSE"; + parameter [11:0] ES_HORZ_OFFSET = 12'h000; + parameter [9:0] ES_PMA_CFG = 10'b0000000000; + parameter [4:0] ES_PRESCALE = 5'b00000; + parameter [15:0] ES_QUALIFIER0 = 16'h0000; + parameter [15:0] ES_QUALIFIER1 = 16'h0000; + parameter [15:0] ES_QUALIFIER2 = 16'h0000; + parameter [15:0] ES_QUALIFIER3 = 16'h0000; + parameter [15:0] ES_QUALIFIER4 = 16'h0000; + parameter [15:0] ES_QUALIFIER5 = 16'h0000; + parameter [15:0] ES_QUALIFIER6 = 16'h0000; + parameter [15:0] ES_QUALIFIER7 = 16'h0000; + parameter [15:0] ES_QUALIFIER8 = 16'h0000; + parameter [15:0] ES_QUALIFIER9 = 16'h0000; + parameter [15:0] ES_QUAL_MASK0 = 16'h0000; + parameter [15:0] ES_QUAL_MASK1 = 16'h0000; + parameter [15:0] ES_QUAL_MASK2 = 16'h0000; + parameter [15:0] ES_QUAL_MASK3 = 16'h0000; + parameter [15:0] ES_QUAL_MASK4 = 16'h0000; + parameter [15:0] ES_QUAL_MASK5 = 16'h0000; + parameter [15:0] ES_QUAL_MASK6 = 16'h0000; + parameter [15:0] ES_QUAL_MASK7 = 16'h0000; + parameter [15:0] ES_QUAL_MASK8 = 16'h0000; + parameter [15:0] ES_QUAL_MASK9 = 16'h0000; + parameter [15:0] ES_SDATA_MASK0 = 16'h0000; + parameter [15:0] ES_SDATA_MASK1 = 16'h0000; + parameter [15:0] ES_SDATA_MASK2 = 16'h0000; + parameter [15:0] ES_SDATA_MASK3 = 16'h0000; + parameter [15:0] ES_SDATA_MASK4 = 16'h0000; + parameter [15:0] ES_SDATA_MASK5 = 16'h0000; + parameter [15:0] ES_SDATA_MASK6 = 16'h0000; + parameter [15:0] ES_SDATA_MASK7 = 16'h0000; + parameter [15:0] ES_SDATA_MASK8 = 16'h0000; + parameter [15:0] ES_SDATA_MASK9 = 16'h0000; + parameter [10:0] EVODD_PHI_CFG = 11'b00000000000; + parameter [0:0] EYE_SCAN_SWAP_EN = 1'b0; + parameter [3:0] FTS_DESKEW_SEQ_ENABLE = 4'b1111; + parameter [3:0] FTS_LANE_DESKEW_CFG = 4'b1111; + parameter FTS_LANE_DESKEW_EN = "FALSE"; + parameter [4:0] GEARBOX_MODE = 5'b00000; + parameter [0:0] GM_BIAS_SELECT = 1'b0; + parameter [0:0] ISCAN_CK_PH_SEL2 = 1'b0; + parameter [0:0] LOCAL_MASTER = 1'b0; + parameter [15:0] LOOP0_CFG = 16'h0000; + parameter [15:0] LOOP10_CFG = 16'h0000; + parameter [15:0] LOOP11_CFG = 16'h0000; + parameter [15:0] LOOP12_CFG = 16'h0000; + parameter [15:0] LOOP13_CFG = 16'h0000; + parameter [15:0] LOOP1_CFG = 16'h0000; + parameter [15:0] LOOP2_CFG = 16'h0000; + parameter [15:0] LOOP3_CFG = 16'h0000; + parameter [15:0] LOOP4_CFG = 16'h0000; + parameter [15:0] LOOP5_CFG = 16'h0000; + parameter [15:0] LOOP6_CFG = 16'h0000; + parameter [15:0] LOOP7_CFG = 16'h0000; + parameter [15:0] LOOP8_CFG = 16'h0000; + parameter [15:0] LOOP9_CFG = 16'h0000; + parameter [2:0] LPBK_BIAS_CTRL = 3'b000; + parameter [0:0] LPBK_EN_RCAL_B = 1'b0; + parameter [3:0] LPBK_EXT_RCAL = 4'b0000; + parameter [3:0] LPBK_RG_CTRL = 4'b0000; + parameter [1:0] OOBDIVCTL = 2'b00; + parameter [0:0] OOB_PWRUP = 1'b0; + parameter PCI3_AUTO_REALIGN = "FRST_SMPL"; + parameter [0:0] PCI3_PIPE_RX_ELECIDLE = 1'b1; + parameter [1:0] PCI3_RX_ASYNC_EBUF_BYPASS = 2'b00; + parameter [0:0] PCI3_RX_ELECIDLE_EI2_ENABLE = 1'b0; + parameter [5:0] PCI3_RX_ELECIDLE_H2L_COUNT = 6'b000000; + parameter [2:0] PCI3_RX_ELECIDLE_H2L_DISABLE = 3'b000; + parameter [5:0] PCI3_RX_ELECIDLE_HI_COUNT = 6'b000000; + parameter [0:0] PCI3_RX_ELECIDLE_LP4_DISABLE = 1'b0; + parameter [0:0] PCI3_RX_FIFO_DISABLE = 1'b0; + parameter [15:0] PCIE_BUFG_DIV_CTRL = 16'h0000; + parameter [15:0] PCIE_RXPCS_CFG_GEN3 = 16'h0000; + parameter [15:0] PCIE_RXPMA_CFG = 16'h0000; + parameter [15:0] PCIE_TXPCS_CFG_GEN3 = 16'h0000; + parameter [15:0] PCIE_TXPMA_CFG = 16'h0000; + parameter PCS_PCIE_EN = "FALSE"; + parameter [15:0] PCS_RSVD0 = 16'b0000000000000000; + parameter [2:0] PCS_RSVD1 = 3'b000; + parameter [11:0] PD_TRANS_TIME_FROM_P2 = 12'h03C; + parameter [7:0] PD_TRANS_TIME_NONE_P2 = 8'h19; + parameter [7:0] PD_TRANS_TIME_TO_P2 = 8'h64; + parameter [1:0] PLL_SEL_MODE_GEN12 = 2'h0; + parameter [1:0] PLL_SEL_MODE_GEN3 = 2'h0; + parameter [15:0] PMA_RSV0 = 16'h0000; + parameter [15:0] PMA_RSV1 = 16'h0000; + parameter integer PREIQ_FREQ_BST = 0; + parameter [2:0] PROCESS_PAR = 3'b010; + parameter [0:0] RATE_SW_USE_DRP = 1'b0; + parameter [0:0] RESET_POWERSAVE_DISABLE = 1'b0; + parameter [4:0] RXBUFRESET_TIME = 5'b00001; + parameter RXBUF_ADDR_MODE = "FULL"; + parameter [3:0] RXBUF_EIDLE_HI_CNT = 4'b1000; + parameter [3:0] RXBUF_EIDLE_LO_CNT = 4'b0000; + parameter RXBUF_EN = "TRUE"; + parameter RXBUF_RESET_ON_CB_CHANGE = "TRUE"; + parameter RXBUF_RESET_ON_COMMAALIGN = "FALSE"; + parameter RXBUF_RESET_ON_EIDLE = "FALSE"; + parameter RXBUF_RESET_ON_RATE_CHANGE = "TRUE"; + parameter integer RXBUF_THRESH_OVFLW = 0; + parameter RXBUF_THRESH_OVRD = "FALSE"; + parameter integer RXBUF_THRESH_UNDFLW = 4; + parameter [4:0] RXCDRFREQRESET_TIME = 5'b00001; + parameter [4:0] RXCDRPHRESET_TIME = 5'b00001; + parameter [15:0] RXCDR_CFG0 = 16'h0000; + parameter [15:0] RXCDR_CFG0_GEN3 = 16'h0000; + parameter [15:0] RXCDR_CFG1 = 16'h0300; + parameter [15:0] RXCDR_CFG1_GEN3 = 16'h0300; + parameter [15:0] RXCDR_CFG2 = 16'h0060; + parameter [15:0] RXCDR_CFG2_GEN3 = 16'h0060; + parameter [15:0] RXCDR_CFG3 = 16'h0000; + parameter [15:0] RXCDR_CFG3_GEN3 = 16'h0000; + parameter [15:0] RXCDR_CFG4 = 16'h0002; + parameter [15:0] RXCDR_CFG4_GEN3 = 16'h0002; + parameter [15:0] RXCDR_CFG5 = 16'h0000; + parameter [15:0] RXCDR_CFG5_GEN3 = 16'h0000; + parameter [0:0] RXCDR_FR_RESET_ON_EIDLE = 1'b0; + parameter [0:0] RXCDR_HOLD_DURING_EIDLE = 1'b0; + parameter [15:0] RXCDR_LOCK_CFG0 = 16'h0001; + parameter [15:0] RXCDR_LOCK_CFG1 = 16'h0000; + parameter [15:0] RXCDR_LOCK_CFG2 = 16'h0000; + parameter [15:0] RXCDR_LOCK_CFG3 = 16'h0000; + parameter [0:0] RXCDR_PH_RESET_ON_EIDLE = 1'b0; + parameter [1:0] RXCFOKDONE_SRC = 2'b00; + parameter [15:0] RXCFOK_CFG0 = 16'h3E00; + parameter [15:0] RXCFOK_CFG1 = 16'h0042; + parameter [15:0] RXCFOK_CFG2 = 16'h002D; + parameter [6:0] RXDFELPMRESET_TIME = 7'b0001111; + parameter [15:0] RXDFELPM_KL_CFG0 = 16'h0000; + parameter [15:0] RXDFELPM_KL_CFG1 = 16'h0022; + parameter [15:0] RXDFELPM_KL_CFG2 = 16'h0100; + parameter [15:0] RXDFE_CFG0 = 16'h4C00; + parameter [15:0] RXDFE_CFG1 = 16'h0000; + parameter [15:0] RXDFE_GC_CFG0 = 16'h1E00; + parameter [15:0] RXDFE_GC_CFG1 = 16'h1900; + parameter [15:0] RXDFE_GC_CFG2 = 16'h0000; + parameter [15:0] RXDFE_H2_CFG0 = 16'h0000; + parameter [15:0] RXDFE_H2_CFG1 = 16'h0002; + parameter [15:0] RXDFE_H3_CFG0 = 16'h0000; + parameter [15:0] RXDFE_H3_CFG1 = 16'h0002; + parameter [15:0] RXDFE_H4_CFG0 = 16'h0000; + parameter [15:0] RXDFE_H4_CFG1 = 16'h0003; + parameter [15:0] RXDFE_H5_CFG0 = 16'h0000; + parameter [15:0] RXDFE_H5_CFG1 = 16'h0002; + parameter [15:0] RXDFE_H6_CFG0 = 16'h0000; + parameter [15:0] RXDFE_H6_CFG1 = 16'h0002; + parameter [15:0] RXDFE_H7_CFG0 = 16'h0000; + parameter [15:0] RXDFE_H7_CFG1 = 16'h0002; + parameter [15:0] RXDFE_H8_CFG0 = 16'h0000; + parameter [15:0] RXDFE_H8_CFG1 = 16'h0002; + parameter [15:0] RXDFE_H9_CFG0 = 16'h0000; + parameter [15:0] RXDFE_H9_CFG1 = 16'h0002; + parameter [15:0] RXDFE_HA_CFG0 = 16'h0000; + parameter [15:0] RXDFE_HA_CFG1 = 16'h0002; + parameter [15:0] RXDFE_HB_CFG0 = 16'h0000; + parameter [15:0] RXDFE_HB_CFG1 = 16'h0002; + parameter [15:0] RXDFE_HC_CFG0 = 16'h0000; + parameter [15:0] RXDFE_HC_CFG1 = 16'h0002; + parameter [15:0] RXDFE_HD_CFG0 = 16'h0000; + parameter [15:0] RXDFE_HD_CFG1 = 16'h0002; + parameter [15:0] RXDFE_HE_CFG0 = 16'h0000; + parameter [15:0] RXDFE_HE_CFG1 = 16'h0002; + parameter [15:0] RXDFE_HF_CFG0 = 16'h0000; + parameter [15:0] RXDFE_HF_CFG1 = 16'h0002; + parameter [15:0] RXDFE_OS_CFG0 = 16'h0000; + parameter [15:0] RXDFE_OS_CFG1 = 16'h0200; + parameter [0:0] RXDFE_PWR_SAVING = 1'b0; + parameter [15:0] RXDFE_UT_CFG0 = 16'h0000; + parameter [15:0] RXDFE_UT_CFG1 = 16'h0002; + parameter [15:0] RXDFE_VP_CFG0 = 16'h0000; + parameter [15:0] RXDFE_VP_CFG1 = 16'h0022; + parameter [15:0] RXDLY_CFG = 16'h001F; + parameter [15:0] RXDLY_LCFG = 16'h0030; + parameter RXELECIDLE_CFG = "SIGCFG_4"; + parameter integer RXGBOX_FIFO_INIT_RD_ADDR = 4; + parameter RXGEARBOX_EN = "FALSE"; + parameter [4:0] RXISCANRESET_TIME = 5'b00001; + parameter [15:0] RXLPM_CFG = 16'h0000; + parameter [15:0] RXLPM_GC_CFG = 16'h0200; + parameter [15:0] RXLPM_KH_CFG0 = 16'h0000; + parameter [15:0] RXLPM_KH_CFG1 = 16'h0002; + parameter [15:0] RXLPM_OS_CFG0 = 16'h0400; + parameter [15:0] RXLPM_OS_CFG1 = 16'h0000; + parameter [8:0] RXOOB_CFG = 9'b000000110; + parameter RXOOB_CLK_CFG = "PMA"; + parameter [4:0] RXOSCALRESET_TIME = 5'b00011; + parameter integer RXOUT_DIV = 4; + parameter [4:0] RXPCSRESET_TIME = 5'b00001; + parameter [15:0] RXPHBEACON_CFG = 16'h0000; + parameter [15:0] RXPHDLY_CFG = 16'h2020; + parameter [15:0] RXPHSAMP_CFG = 16'h2100; + parameter [15:0] RXPHSLIP_CFG = 16'h9933; + parameter [4:0] RXPH_MONITOR_SEL = 5'b00000; + parameter [0:0] RXPI_AUTO_BW_SEL_BYPASS = 1'b0; + parameter [15:0] RXPI_CFG = 16'h0100; + parameter [0:0] RXPI_LPM = 1'b0; + parameter [15:0] RXPI_RSV0 = 16'h0000; + parameter [1:0] RXPI_SEL_LC = 2'b00; + parameter [1:0] RXPI_STARTCODE = 2'b00; + parameter [0:0] RXPI_VREFSEL = 1'b0; + parameter RXPMACLK_SEL = "DATA"; + parameter [4:0] RXPMARESET_TIME = 5'b00001; + parameter [0:0] RXPRBS_ERR_LOOPBACK = 1'b0; + parameter integer RXPRBS_LINKACQ_CNT = 15; + parameter integer RXSLIDE_AUTO_WAIT = 7; + parameter RXSLIDE_MODE = "OFF"; + parameter [0:0] RXSYNC_MULTILANE = 1'b0; + parameter [0:0] RXSYNC_OVRD = 1'b0; + parameter [0:0] RXSYNC_SKIP_DA = 1'b0; + parameter [0:0] RX_AFE_CM_EN = 1'b0; + parameter [15:0] RX_BIAS_CFG0 = 16'h1534; + parameter [5:0] RX_BUFFER_CFG = 6'b000000; + parameter [0:0] RX_CAPFF_SARC_ENB = 1'b0; + parameter integer RX_CLK25_DIV = 8; + parameter [0:0] RX_CLKMUX_EN = 1'b1; + parameter [4:0] RX_CLK_SLIP_OVRD = 5'b00000; + parameter [3:0] RX_CM_BUF_CFG = 4'b1010; + parameter [0:0] RX_CM_BUF_PD = 1'b0; + parameter integer RX_CM_SEL = 3; + parameter integer RX_CM_TRIM = 10; + parameter [0:0] RX_CTLE1_KHKL = 1'b0; + parameter [0:0] RX_CTLE2_KHKL = 1'b0; + parameter [0:0] RX_CTLE3_AGC = 1'b0; + parameter integer RX_DATA_WIDTH = 20; + parameter [5:0] RX_DDI_SEL = 6'b000000; + parameter RX_DEFER_RESET_BUF_EN = "TRUE"; + parameter [2:0] RX_DEGEN_CTRL = 3'b010; + parameter integer RX_DFELPM_CFG0 = 6; + parameter [0:0] RX_DFELPM_CFG1 = 1'b0; + parameter [0:0] RX_DFELPM_KLKH_AGC_STUP_EN = 1'b1; + parameter [1:0] RX_DFE_AGC_CFG0 = 2'b00; + parameter integer RX_DFE_AGC_CFG1 = 4; + parameter integer RX_DFE_KL_LPM_KH_CFG0 = 1; + parameter integer RX_DFE_KL_LPM_KH_CFG1 = 2; + parameter [1:0] RX_DFE_KL_LPM_KL_CFG0 = 2'b01; + parameter [2:0] RX_DFE_KL_LPM_KL_CFG1 = 3'b010; + parameter [0:0] RX_DFE_LPM_HOLD_DURING_EIDLE = 1'b0; + parameter RX_DISPERR_SEQ_MATCH = "TRUE"; + parameter [0:0] RX_DIV2_MODE_B = 1'b0; + parameter [4:0] RX_DIVRESET_TIME = 5'b00001; + parameter [0:0] RX_EN_CTLE_RCAL_B = 1'b0; + parameter [0:0] RX_EN_HI_LR = 1'b0; + parameter [8:0] RX_EXT_RL_CTRL = 9'b000000000; + parameter [6:0] RX_EYESCAN_VS_CODE = 7'b0000000; + parameter [0:0] RX_EYESCAN_VS_NEG_DIR = 1'b0; + parameter [1:0] RX_EYESCAN_VS_RANGE = 2'b00; + parameter [0:0] RX_EYESCAN_VS_UT_SIGN = 1'b0; + parameter [0:0] RX_FABINT_USRCLK_FLOP = 1'b0; + parameter integer RX_INT_DATAWIDTH = 1; + parameter [0:0] RX_PMA_POWER_SAVE = 1'b0; + parameter real RX_PROGDIV_CFG = 0.0; + parameter [15:0] RX_PROGDIV_RATE = 16'h0001; + parameter [3:0] RX_RESLOAD_CTRL = 4'b0000; + parameter [0:0] RX_RESLOAD_OVRD = 1'b0; + parameter [2:0] RX_SAMPLE_PERIOD = 3'b101; + parameter integer RX_SIG_VALID_DLY = 11; + parameter [0:0] RX_SUM_DFETAPREP_EN = 1'b0; + parameter [3:0] RX_SUM_IREF_TUNE = 4'b0000; + parameter [3:0] RX_SUM_VCMTUNE = 4'b1000; + parameter [0:0] RX_SUM_VCM_OVWR = 1'b0; + parameter [2:0] RX_SUM_VREF_TUNE = 3'b100; + parameter [1:0] RX_TUNE_AFE_OS = 2'b00; + parameter [2:0] RX_VREG_CTRL = 3'b101; + parameter [0:0] RX_VREG_PDB = 1'b1; + parameter [1:0] RX_WIDEMODE_CDR = 2'b01; + parameter RX_XCLK_SEL = "RXDES"; + parameter [0:0] RX_XMODE_SEL = 1'b0; + parameter integer SAS_MAX_COM = 64; + parameter integer SAS_MIN_COM = 36; + parameter [3:0] SATA_BURST_SEQ_LEN = 4'b1111; + parameter [2:0] SATA_BURST_VAL = 3'b100; + parameter SATA_CPLL_CFG = "VCO_3000MHZ"; + parameter [2:0] SATA_EIDLE_VAL = 3'b100; + parameter integer SATA_MAX_BURST = 8; + parameter integer SATA_MAX_INIT = 21; + parameter integer SATA_MAX_WAKE = 7; + parameter integer SATA_MIN_BURST = 4; + parameter integer SATA_MIN_INIT = 12; + parameter integer SATA_MIN_WAKE = 4; + parameter SHOW_REALIGN_COMMA = "TRUE"; + parameter SIM_MODE = "FAST"; + parameter SIM_RECEIVER_DETECT_PASS = "TRUE"; + parameter SIM_RESET_SPEEDUP = "TRUE"; + parameter [0:0] SIM_TX_EIDLE_DRIVE_LEVEL = 1'b0; + parameter integer SIM_VERSION = 2; + parameter [1:0] TAPDLY_SET_TX = 2'h0; + parameter [3:0] TEMPERATURE_PAR = 4'b0010; + parameter [14:0] TERM_RCAL_CFG = 15'b100001000010000; + parameter [2:0] TERM_RCAL_OVRD = 3'b000; + parameter [7:0] TRANS_TIME_RATE = 8'h0E; + parameter [7:0] TST_RSV0 = 8'h00; + parameter [7:0] TST_RSV1 = 8'h00; + parameter TXBUF_EN = "TRUE"; + parameter TXBUF_RESET_ON_RATE_CHANGE = "FALSE"; + parameter [15:0] TXDLY_CFG = 16'h001F; + parameter [15:0] TXDLY_LCFG = 16'h0030; + parameter TXFIFO_ADDR_CFG = "LOW"; + parameter integer TXGBOX_FIFO_INIT_RD_ADDR = 4; + parameter TXGEARBOX_EN = "FALSE"; + parameter integer TXOUT_DIV = 4; + parameter [4:0] TXPCSRESET_TIME = 5'b00001; + parameter [15:0] TXPHDLY_CFG0 = 16'h2020; + parameter [15:0] TXPHDLY_CFG1 = 16'h0001; + parameter [15:0] TXPH_CFG = 16'h0123; + parameter [15:0] TXPH_CFG2 = 16'h0000; + parameter [4:0] TXPH_MONITOR_SEL = 5'b00000; + parameter [1:0] TXPI_CFG0 = 2'b00; + parameter [1:0] TXPI_CFG1 = 2'b00; + parameter [1:0] TXPI_CFG2 = 2'b00; + parameter [0:0] TXPI_CFG3 = 1'b0; + parameter [0:0] TXPI_CFG4 = 1'b1; + parameter [2:0] TXPI_CFG5 = 3'b000; + parameter [0:0] TXPI_GRAY_SEL = 1'b0; + parameter [0:0] TXPI_INVSTROBE_SEL = 1'b0; + parameter [0:0] TXPI_LPM = 1'b0; + parameter TXPI_PPMCLK_SEL = "TXUSRCLK2"; + parameter [7:0] TXPI_PPM_CFG = 8'b00000000; + parameter [15:0] TXPI_RSV0 = 16'h0000; + parameter [2:0] TXPI_SYNFREQ_PPM = 3'b000; + parameter [0:0] TXPI_VREFSEL = 1'b0; + parameter [4:0] TXPMARESET_TIME = 5'b00001; + parameter [0:0] TXSYNC_MULTILANE = 1'b0; + parameter [0:0] TXSYNC_OVRD = 1'b0; + parameter [0:0] TXSYNC_SKIP_DA = 1'b0; + parameter integer TX_CLK25_DIV = 8; + parameter [0:0] TX_CLKMUX_EN = 1'b1; + parameter [0:0] TX_CLKREG_PDB = 1'b0; + parameter [2:0] TX_CLKREG_SET = 3'b000; + parameter integer TX_DATA_WIDTH = 20; + parameter [5:0] TX_DCD_CFG = 6'b000010; + parameter [0:0] TX_DCD_EN = 1'b0; + parameter [5:0] TX_DEEMPH0 = 6'b000000; + parameter [5:0] TX_DEEMPH1 = 6'b000000; + parameter [4:0] TX_DIVRESET_TIME = 5'b00001; + parameter TX_DRIVE_MODE = "DIRECT"; + parameter integer TX_DRVMUX_CTRL = 2; + parameter [2:0] TX_EIDLE_ASSERT_DELAY = 3'b110; + parameter [2:0] TX_EIDLE_DEASSERT_DELAY = 3'b100; + parameter [0:0] TX_EML_PHI_TUNE = 1'b0; + parameter [0:0] TX_FABINT_USRCLK_FLOP = 1'b0; + parameter [0:0] TX_FIFO_BYP_EN = 1'b0; + parameter [0:0] TX_IDLE_DATA_ZERO = 1'b0; + parameter integer TX_INT_DATAWIDTH = 1; + parameter TX_LOOPBACK_DRIVE_HIZ = "FALSE"; + parameter [0:0] TX_MAINCURSOR_SEL = 1'b0; + parameter [6:0] TX_MARGIN_FULL_0 = 7'b1001110; + parameter [6:0] TX_MARGIN_FULL_1 = 7'b1001001; + parameter [6:0] TX_MARGIN_FULL_2 = 7'b1000101; + parameter [6:0] TX_MARGIN_FULL_3 = 7'b1000010; + parameter [6:0] TX_MARGIN_FULL_4 = 7'b1000000; + parameter [6:0] TX_MARGIN_LOW_0 = 7'b1000110; + parameter [6:0] TX_MARGIN_LOW_1 = 7'b1000100; + parameter [6:0] TX_MARGIN_LOW_2 = 7'b1000010; + parameter [6:0] TX_MARGIN_LOW_3 = 7'b1000000; + parameter [6:0] TX_MARGIN_LOW_4 = 7'b1000000; + parameter [2:0] TX_MODE_SEL = 3'b000; + parameter [15:0] TX_PHICAL_CFG0 = 16'h0000; + parameter [15:0] TX_PHICAL_CFG1 = 16'h7E00; + parameter [15:0] TX_PHICAL_CFG2 = 16'h0000; + parameter integer TX_PI_BIASSET = 0; + parameter [15:0] TX_PI_CFG0 = 16'h0000; + parameter [15:0] TX_PI_CFG1 = 16'h0000; + parameter [0:0] TX_PI_DIV2_MODE_B = 1'b0; + parameter [0:0] TX_PI_SEL_QPLL0 = 1'b0; + parameter [0:0] TX_PI_SEL_QPLL1 = 1'b0; + parameter [0:0] TX_PMADATA_OPT = 1'b0; + parameter [0:0] TX_PMA_POWER_SAVE = 1'b0; + parameter integer TX_PREDRV_CTRL = 2; + parameter TX_PROGCLK_SEL = "POSTPI"; + parameter real TX_PROGDIV_CFG = 0.0; + parameter [15:0] TX_PROGDIV_RATE = 16'h0001; + parameter [13:0] TX_RXDETECT_CFG = 14'h0032; + parameter integer TX_RXDETECT_REF = 4; + parameter [2:0] TX_SAMPLE_PERIOD = 3'b101; + parameter [0:0] TX_SARC_LPBK_ENB = 1'b0; + parameter TX_XCLK_SEL = "TXOUT"; + parameter [0:0] USE_PCS_CLK_PHASE_SEL = 1'b0; + output [2:0] BUFGTCE; + output [2:0] BUFGTCEMASK; + output [8:0] BUFGTDIV; + output [2:0] BUFGTRESET; + output [2:0] BUFGTRSTMASK; + output CPLLFBCLKLOST; + output CPLLLOCK; + output CPLLREFCLKLOST; + output [16:0] DMONITOROUT; + output [15:0] DRPDO; + output DRPRDY; + output EYESCANDATAERROR; + output GTPOWERGOOD; + output GTREFCLKMONITOR; + output GTYTXN; + output GTYTXP; + output PCIERATEGEN3; + output PCIERATEIDLE; + output [1:0] PCIERATEQPLLPD; + output [1:0] PCIERATEQPLLRESET; + output PCIESYNCTXSYNCDONE; + output PCIEUSERGEN3RDY; + output PCIEUSERPHYSTATUSRST; + output PCIEUSERRATESTART; + output [15:0] PCSRSVDOUT; + output PHYSTATUS; + output [7:0] PINRSRVDAS; + output RESETEXCEPTION; + output [2:0] RXBUFSTATUS; + output RXBYTEISALIGNED; + output RXBYTEREALIGN; + output RXCDRLOCK; + output RXCDRPHDONE; + output RXCHANBONDSEQ; + output RXCHANISALIGNED; + output RXCHANREALIGN; + output [4:0] RXCHBONDO; + output RXCKCALDONE; + output [1:0] RXCLKCORCNT; + output RXCOMINITDET; + output RXCOMMADET; + output RXCOMSASDET; + output RXCOMWAKEDET; + output [15:0] RXCTRL0; + output [15:0] RXCTRL1; + output [7:0] RXCTRL2; + output [7:0] RXCTRL3; + output [127:0] RXDATA; + output [7:0] RXDATAEXTENDRSVD; + output [1:0] RXDATAVALID; + output RXDLYSRESETDONE; + output RXELECIDLE; + output [5:0] RXHEADER; + output [1:0] RXHEADERVALID; + output [6:0] RXMONITOROUT; + output RXOSINTDONE; + output RXOSINTSTARTED; + output RXOSINTSTROBEDONE; + output RXOSINTSTROBESTARTED; + output RXOUTCLK; + output RXOUTCLKFABRIC; + output RXOUTCLKPCS; + output RXPHALIGNDONE; + output RXPHALIGNERR; + output RXPMARESETDONE; + output RXPRBSERR; + output RXPRBSLOCKED; + output RXPRGDIVRESETDONE; + output RXRATEDONE; + output RXRECCLKOUT; + output RXRESETDONE; + output RXSLIDERDY; + output RXSLIPDONE; + output RXSLIPOUTCLKRDY; + output RXSLIPPMARDY; + output [1:0] RXSTARTOFSEQ; + output [2:0] RXSTATUS; + output RXSYNCDONE; + output RXSYNCOUT; + output RXVALID; + output [1:0] TXBUFSTATUS; + output TXCOMFINISH; + output TXDCCDONE; + output TXDLYSRESETDONE; + output TXOUTCLK; + output TXOUTCLKFABRIC; + output TXOUTCLKPCS; + output TXPHALIGNDONE; + output TXPHINITDONE; + output TXPMARESETDONE; + output TXPRGDIVRESETDONE; + output TXRATEDONE; + output TXRESETDONE; + output TXSYNCDONE; + output TXSYNCOUT; + input CDRSTEPDIR; + input CDRSTEPSQ; + input CDRSTEPSX; + input CFGRESET; + input CLKRSVD0; + input CLKRSVD1; + input CPLLLOCKDETCLK; + input CPLLLOCKEN; + input CPLLPD; + input [2:0] CPLLREFCLKSEL; + input CPLLRESET; + input DMONFIFORESET; + input DMONITORCLK; + input [9:0] DRPADDR; + input DRPCLK; + input [15:0] DRPDI; + input DRPEN; + input DRPWE; + input ELPCALDVORWREN; + input ELPCALPAORWREN; + input EVODDPHICALDONE; + input EVODDPHICALSTART; + input EVODDPHIDRDEN; + input EVODDPHIDWREN; + input EVODDPHIXRDEN; + input EVODDPHIXWREN; + input EYESCANMODE; + input EYESCANRESET; + input EYESCANTRIGGER; + input GTGREFCLK; + input GTNORTHREFCLK0; + input GTNORTHREFCLK1; + input GTREFCLK0; + input GTREFCLK1; + input GTRESETSEL; + input [15:0] GTRSVD; + input GTRXRESET; + input GTSOUTHREFCLK0; + input GTSOUTHREFCLK1; + input GTTXRESET; + input GTYRXN; + input GTYRXP; + input [2:0] LOOPBACK; + input [15:0] LOOPRSVD; + input LPBKRXTXSEREN; + input LPBKTXRXSEREN; + input PCIEEQRXEQADAPTDONE; + input PCIERSTIDLE; + input PCIERSTTXSYNCSTART; + input PCIEUSERRATEDONE; + input [15:0] PCSRSVDIN; + input [4:0] PCSRSVDIN2; + input [4:0] PMARSVDIN; + input QPLL0CLK; + input QPLL0REFCLK; + input QPLL1CLK; + input QPLL1REFCLK; + input RESETOVRD; + input RSTCLKENTX; + input RX8B10BEN; + input RXBUFRESET; + input RXCDRFREQRESET; + input RXCDRHOLD; + input RXCDROVRDEN; + input RXCDRRESET; + input RXCDRRESETRSV; + input RXCHBONDEN; + input [4:0] RXCHBONDI; + input [2:0] RXCHBONDLEVEL; + input RXCHBONDMASTER; + input RXCHBONDSLAVE; + input RXCKCALRESET; + input RXCOMMADETEN; + input RXDCCFORCESTART; + input RXDFEAGCHOLD; + input RXDFEAGCOVRDEN; + input RXDFELFHOLD; + input RXDFELFOVRDEN; + input RXDFELPMRESET; + input RXDFETAP10HOLD; + input RXDFETAP10OVRDEN; + input RXDFETAP11HOLD; + input RXDFETAP11OVRDEN; + input RXDFETAP12HOLD; + input RXDFETAP12OVRDEN; + input RXDFETAP13HOLD; + input RXDFETAP13OVRDEN; + input RXDFETAP14HOLD; + input RXDFETAP14OVRDEN; + input RXDFETAP15HOLD; + input RXDFETAP15OVRDEN; + input RXDFETAP2HOLD; + input RXDFETAP2OVRDEN; + input RXDFETAP3HOLD; + input RXDFETAP3OVRDEN; + input RXDFETAP4HOLD; + input RXDFETAP4OVRDEN; + input RXDFETAP5HOLD; + input RXDFETAP5OVRDEN; + input RXDFETAP6HOLD; + input RXDFETAP6OVRDEN; + input RXDFETAP7HOLD; + input RXDFETAP7OVRDEN; + input RXDFETAP8HOLD; + input RXDFETAP8OVRDEN; + input RXDFETAP9HOLD; + input RXDFETAP9OVRDEN; + input RXDFEUTHOLD; + input RXDFEUTOVRDEN; + input RXDFEVPHOLD; + input RXDFEVPOVRDEN; + input RXDFEVSEN; + input RXDFEXYDEN; + input RXDLYBYPASS; + input RXDLYEN; + input RXDLYOVRDEN; + input RXDLYSRESET; + input [1:0] RXELECIDLEMODE; + input RXGEARBOXSLIP; + input RXLATCLK; + input RXLPMEN; + input RXLPMGCHOLD; + input RXLPMGCOVRDEN; + input RXLPMHFHOLD; + input RXLPMHFOVRDEN; + input RXLPMLFHOLD; + input RXLPMLFKLOVRDEN; + input RXLPMOSHOLD; + input RXLPMOSOVRDEN; + input RXMCOMMAALIGNEN; + input [1:0] RXMONITORSEL; + input RXOOBRESET; + input RXOSCALRESET; + input RXOSHOLD; + input [3:0] RXOSINTCFG; + input RXOSINTEN; + input RXOSINTHOLD; + input RXOSINTOVRDEN; + input RXOSINTSTROBE; + input RXOSINTTESTOVRDEN; + input RXOSOVRDEN; + input [2:0] RXOUTCLKSEL; + input RXPCOMMAALIGNEN; + input RXPCSRESET; + input [1:0] RXPD; + input RXPHALIGN; + input RXPHALIGNEN; + input RXPHDLYPD; + input RXPHDLYRESET; + input RXPHOVRDEN; + input [1:0] RXPLLCLKSEL; + input RXPMARESET; + input RXPOLARITY; + input RXPRBSCNTRESET; + input [3:0] RXPRBSSEL; + input RXPROGDIVRESET; + input [2:0] RXRATE; + input RXRATEMODE; + input RXSLIDE; + input RXSLIPOUTCLK; + input RXSLIPPMA; + input RXSYNCALLIN; + input RXSYNCIN; + input RXSYNCMODE; + input [1:0] RXSYSCLKSEL; + input RXUSERRDY; + input RXUSRCLK; + input RXUSRCLK2; + input SIGVALIDCLK; + input [19:0] TSTIN; + input [7:0] TX8B10BBYPASS; + input TX8B10BEN; + input [2:0] TXBUFDIFFCTRL; + input TXCOMINIT; + input TXCOMSAS; + input TXCOMWAKE; + input [15:0] TXCTRL0; + input [15:0] TXCTRL1; + input [7:0] TXCTRL2; + input [127:0] TXDATA; + input [7:0] TXDATAEXTENDRSVD; + input TXDCCFORCESTART; + input TXDCCRESET; + input TXDEEMPH; + input TXDETECTRX; + input [4:0] TXDIFFCTRL; + input TXDIFFPD; + input TXDLYBYPASS; + input TXDLYEN; + input TXDLYHOLD; + input TXDLYOVRDEN; + input TXDLYSRESET; + input TXDLYUPDOWN; + input TXELECIDLE; + input TXELFORCESTART; + input [5:0] TXHEADER; + input TXINHIBIT; + input TXLATCLK; + input [6:0] TXMAINCURSOR; + input [2:0] TXMARGIN; + input [2:0] TXOUTCLKSEL; + input TXPCSRESET; + input [1:0] TXPD; + input TXPDELECIDLEMODE; + input TXPHALIGN; + input TXPHALIGNEN; + input TXPHDLYPD; + input TXPHDLYRESET; + input TXPHDLYTSTCLK; + input TXPHINIT; + input TXPHOVRDEN; + input TXPIPPMEN; + input TXPIPPMOVRDEN; + input TXPIPPMPD; + input TXPIPPMSEL; + input [4:0] TXPIPPMSTEPSIZE; + input TXPISOPD; + input [1:0] TXPLLCLKSEL; + input TXPMARESET; + input TXPOLARITY; + input [4:0] TXPOSTCURSOR; + input TXPRBSFORCEERR; + input [3:0] TXPRBSSEL; + input [4:0] TXPRECURSOR; + input TXPROGDIVRESET; + input [2:0] TXRATE; + input TXRATEMODE; + input [6:0] TXSEQUENCE; + input TXSWING; + input TXSYNCALLIN; + input TXSYNCIN; + input TXSYNCMODE; + input [1:0] TXSYSCLKSEL; + input TXUSERRDY; + input TXUSRCLK; + input TXUSRCLK2; +endmodule + +module GTYE3_COMMON (...); + parameter [15:0] A_SDM1DATA1_0 = 16'b0000000000000000; + parameter [8:0] A_SDM1DATA1_1 = 9'b000000000; + parameter [15:0] BIAS_CFG0 = 16'h0000; + parameter [15:0] BIAS_CFG1 = 16'h0000; + parameter [15:0] BIAS_CFG2 = 16'h0000; + parameter [15:0] BIAS_CFG3 = 16'h0000; + parameter [15:0] BIAS_CFG4 = 16'h0000; + parameter [9:0] BIAS_CFG_RSVD = 10'b0000000000; + parameter [15:0] COMMON_CFG0 = 16'h0000; + parameter [15:0] COMMON_CFG1 = 16'h0000; + parameter [15:0] POR_CFG = 16'h0004; + parameter [15:0] PPF0_CFG = 16'h0FFF; + parameter [15:0] PPF1_CFG = 16'h0FFF; + parameter QPLL0CLKOUT_RATE = "FULL"; + parameter [15:0] QPLL0_CFG0 = 16'h301C; + parameter [15:0] QPLL0_CFG1 = 16'h0000; + parameter [15:0] QPLL0_CFG1_G3 = 16'h0020; + parameter [15:0] QPLL0_CFG2 = 16'h0780; + parameter [15:0] QPLL0_CFG2_G3 = 16'h0780; + parameter [15:0] QPLL0_CFG3 = 16'h0120; + parameter [15:0] QPLL0_CFG4 = 16'h0021; + parameter [9:0] QPLL0_CP = 10'b0000011111; + parameter [9:0] QPLL0_CP_G3 = 10'b0000011111; + parameter integer QPLL0_FBDIV = 66; + parameter integer QPLL0_FBDIV_G3 = 80; + parameter [15:0] QPLL0_INIT_CFG0 = 16'h0000; + parameter [7:0] QPLL0_INIT_CFG1 = 8'h00; + parameter [15:0] QPLL0_LOCK_CFG = 16'h01E8; + parameter [15:0] QPLL0_LOCK_CFG_G3 = 16'h21E8; + parameter [9:0] QPLL0_LPF = 10'b1111111111; + parameter [9:0] QPLL0_LPF_G3 = 10'b1111111111; + parameter integer QPLL0_REFCLK_DIV = 2; + parameter [15:0] QPLL0_SDM_CFG0 = 16'h0040; + parameter [15:0] QPLL0_SDM_CFG1 = 16'h0000; + parameter [15:0] QPLL0_SDM_CFG2 = 16'h0000; + parameter QPLL1CLKOUT_RATE = "FULL"; + parameter [15:0] QPLL1_CFG0 = 16'h301C; + parameter [15:0] QPLL1_CFG1 = 16'h0000; + parameter [15:0] QPLL1_CFG1_G3 = 16'h0020; + parameter [15:0] QPLL1_CFG2 = 16'h0780; + parameter [15:0] QPLL1_CFG2_G3 = 16'h0780; + parameter [15:0] QPLL1_CFG3 = 16'h0120; + parameter [15:0] QPLL1_CFG4 = 16'h0021; + parameter [9:0] QPLL1_CP = 10'b0000011111; + parameter [9:0] QPLL1_CP_G3 = 10'b0000011111; + parameter integer QPLL1_FBDIV = 66; + parameter integer QPLL1_FBDIV_G3 = 80; + parameter [15:0] QPLL1_INIT_CFG0 = 16'h0000; + parameter [7:0] QPLL1_INIT_CFG1 = 8'h00; + parameter [15:0] QPLL1_LOCK_CFG = 16'h01E8; + parameter [15:0] QPLL1_LOCK_CFG_G3 = 16'h21E8; + parameter [9:0] QPLL1_LPF = 10'b1111111111; + parameter [9:0] QPLL1_LPF_G3 = 10'b1111111111; + parameter integer QPLL1_REFCLK_DIV = 2; + parameter [15:0] QPLL1_SDM_CFG0 = 16'h0040; + parameter [15:0] QPLL1_SDM_CFG1 = 16'h0000; + parameter [15:0] QPLL1_SDM_CFG2 = 16'h0000; + parameter [15:0] RSVD_ATTR0 = 16'h0000; + parameter [15:0] RSVD_ATTR1 = 16'h0000; + parameter [15:0] RSVD_ATTR2 = 16'h0000; + parameter [15:0] RSVD_ATTR3 = 16'h0000; + parameter [1:0] RXRECCLKOUT0_SEL = 2'b00; + parameter [1:0] RXRECCLKOUT1_SEL = 2'b00; + parameter [0:0] SARC_EN = 1'b1; + parameter [0:0] SARC_SEL = 1'b0; + parameter [15:0] SDM0INITSEED0_0 = 16'b0000000000000000; + parameter [8:0] SDM0INITSEED0_1 = 9'b000000000; + parameter [15:0] SDM1INITSEED0_0 = 16'b0000000000000000; + parameter [8:0] SDM1INITSEED0_1 = 9'b000000000; + parameter SIM_MODE = "FAST"; + parameter SIM_RESET_SPEEDUP = "TRUE"; + parameter integer SIM_VERSION = 2; + output [15:0] DRPDO; + output DRPRDY; + output [7:0] PMARSVDOUT0; + output [7:0] PMARSVDOUT1; + output QPLL0FBCLKLOST; + output QPLL0LOCK; + output QPLL0OUTCLK; + output QPLL0OUTREFCLK; + output QPLL0REFCLKLOST; + output QPLL1FBCLKLOST; + output QPLL1LOCK; + output QPLL1OUTCLK; + output QPLL1OUTREFCLK; + output QPLL1REFCLKLOST; + output [7:0] QPLLDMONITOR0; + output [7:0] QPLLDMONITOR1; + output REFCLKOUTMONITOR0; + output REFCLKOUTMONITOR1; + output [1:0] RXRECCLK0_SEL; + output [1:0] RXRECCLK1_SEL; + output [3:0] SDM0FINALOUT; + output [14:0] SDM0TESTDATA; + output [3:0] SDM1FINALOUT; + output [14:0] SDM1TESTDATA; + input BGBYPASSB; + input BGMONITORENB; + input BGPDB; + input [4:0] BGRCALOVRD; + input BGRCALOVRDENB; + input [9:0] DRPADDR; + input DRPCLK; + input [15:0] DRPDI; + input DRPEN; + input DRPWE; + input GTGREFCLK0; + input GTGREFCLK1; + input GTNORTHREFCLK00; + input GTNORTHREFCLK01; + input GTNORTHREFCLK10; + input GTNORTHREFCLK11; + input GTREFCLK00; + input GTREFCLK01; + input GTREFCLK10; + input GTREFCLK11; + input GTSOUTHREFCLK00; + input GTSOUTHREFCLK01; + input GTSOUTHREFCLK10; + input GTSOUTHREFCLK11; + input [7:0] PMARSVD0; + input [7:0] PMARSVD1; + input QPLL0CLKRSVD0; + input QPLL0LOCKDETCLK; + input QPLL0LOCKEN; + input QPLL0PD; + input [2:0] QPLL0REFCLKSEL; + input QPLL0RESET; + input QPLL1CLKRSVD0; + input QPLL1LOCKDETCLK; + input QPLL1LOCKEN; + input QPLL1PD; + input [2:0] QPLL1REFCLKSEL; + input QPLL1RESET; + input [7:0] QPLLRSVD1; + input [4:0] QPLLRSVD2; + input [4:0] QPLLRSVD3; + input [7:0] QPLLRSVD4; + input RCALENB; + input [24:0] SDM0DATA; + input SDM0RESET; + input [1:0] SDM0WIDTH; + input [24:0] SDM1DATA; + input SDM1RESET; + input [1:0] SDM1WIDTH; +endmodule + +module IBUFDS_GTE3 (...); + parameter [0:0] REFCLK_EN_TX_PATH = 1'b0; + parameter [1:0] REFCLK_HROW_CK_SEL = 2'b00; + parameter [1:0] REFCLK_ICNTL_RX = 2'b00; + output O; + output ODIV2; + input CEB; + (* iopad_external_pin *) + input I; + (* iopad_external_pin *) + input IB; +endmodule + +module OBUFDS_GTE3 (...); + parameter [0:0] REFCLK_EN_TX_PATH = 1'b0; + parameter [4:0] REFCLK_ICNTL_TX = 5'b00000; + (* iopad_external_pin *) + output O; + (* iopad_external_pin *) + output OB; + input CEB; + input I; +endmodule + +module OBUFDS_GTE3_ADV (...); + parameter [0:0] REFCLK_EN_TX_PATH = 1'b0; + parameter [4:0] REFCLK_ICNTL_TX = 5'b00000; + (* iopad_external_pin *) + output O; + (* iopad_external_pin *) + output OB; + input CEB; + input [3:0] I; + input [1:0] RXRECCLK_SEL; +endmodule + +module GTHE4_CHANNEL (...); + parameter [0:0] ACJTAG_DEBUG_MODE = 1'b0; + parameter [0:0] ACJTAG_MODE = 1'b0; + parameter [0:0] ACJTAG_RESET = 1'b0; + parameter [15:0] ADAPT_CFG0 = 16'h9200; + parameter [15:0] ADAPT_CFG1 = 16'h801C; + parameter [15:0] ADAPT_CFG2 = 16'h0000; + parameter ALIGN_COMMA_DOUBLE = "FALSE"; + parameter [9:0] ALIGN_COMMA_ENABLE = 10'b0001111111; + parameter integer ALIGN_COMMA_WORD = 1; + parameter ALIGN_MCOMMA_DET = "TRUE"; + parameter [9:0] ALIGN_MCOMMA_VALUE = 10'b1010000011; + parameter ALIGN_PCOMMA_DET = "TRUE"; + parameter [9:0] ALIGN_PCOMMA_VALUE = 10'b0101111100; + parameter [0:0] A_RXOSCALRESET = 1'b0; + parameter [0:0] A_RXPROGDIVRESET = 1'b0; + parameter [0:0] A_RXTERMINATION = 1'b1; + parameter [4:0] A_TXDIFFCTRL = 5'b01100; + parameter [0:0] A_TXPROGDIVRESET = 1'b0; + parameter [0:0] CAPBYPASS_FORCE = 1'b0; + parameter CBCC_DATA_SOURCE_SEL = "DECODED"; + parameter [0:0] CDR_SWAP_MODE_EN = 1'b0; + parameter [0:0] CFOK_PWRSVE_EN = 1'b1; + parameter CHAN_BOND_KEEP_ALIGN = "FALSE"; + parameter integer CHAN_BOND_MAX_SKEW = 7; + parameter [9:0] CHAN_BOND_SEQ_1_1 = 10'b0101111100; + parameter [9:0] CHAN_BOND_SEQ_1_2 = 10'b0000000000; + parameter [9:0] CHAN_BOND_SEQ_1_3 = 10'b0000000000; + parameter [9:0] CHAN_BOND_SEQ_1_4 = 10'b0000000000; + parameter [3:0] CHAN_BOND_SEQ_1_ENABLE = 4'b1111; + parameter [9:0] CHAN_BOND_SEQ_2_1 = 10'b0100000000; + parameter [9:0] CHAN_BOND_SEQ_2_2 = 10'b0100000000; + parameter [9:0] CHAN_BOND_SEQ_2_3 = 10'b0100000000; + parameter [9:0] CHAN_BOND_SEQ_2_4 = 10'b0100000000; + parameter [3:0] CHAN_BOND_SEQ_2_ENABLE = 4'b1111; + parameter CHAN_BOND_SEQ_2_USE = "FALSE"; + parameter integer CHAN_BOND_SEQ_LEN = 2; + parameter [15:0] CH_HSPMUX = 16'h2424; + parameter [15:0] CKCAL1_CFG_0 = 16'b0000000000000000; + parameter [15:0] CKCAL1_CFG_1 = 16'b0000000000000000; + parameter [15:0] CKCAL1_CFG_2 = 16'b0000000000000000; + parameter [15:0] CKCAL1_CFG_3 = 16'b0000000000000000; + parameter [15:0] CKCAL2_CFG_0 = 16'b0000000000000000; + parameter [15:0] CKCAL2_CFG_1 = 16'b0000000000000000; + parameter [15:0] CKCAL2_CFG_2 = 16'b0000000000000000; + parameter [15:0] CKCAL2_CFG_3 = 16'b0000000000000000; + parameter [15:0] CKCAL2_CFG_4 = 16'b0000000000000000; + parameter [15:0] CKCAL_RSVD0 = 16'h4000; + parameter [15:0] CKCAL_RSVD1 = 16'h0000; + parameter CLK_CORRECT_USE = "TRUE"; + parameter CLK_COR_KEEP_IDLE = "FALSE"; + parameter integer CLK_COR_MAX_LAT = 20; + parameter integer CLK_COR_MIN_LAT = 18; + parameter CLK_COR_PRECEDENCE = "TRUE"; + parameter integer CLK_COR_REPEAT_WAIT = 0; + parameter [9:0] CLK_COR_SEQ_1_1 = 10'b0100011100; + parameter [9:0] CLK_COR_SEQ_1_2 = 10'b0000000000; + parameter [9:0] CLK_COR_SEQ_1_3 = 10'b0000000000; + parameter [9:0] CLK_COR_SEQ_1_4 = 10'b0000000000; + parameter [3:0] CLK_COR_SEQ_1_ENABLE = 4'b1111; + parameter [9:0] CLK_COR_SEQ_2_1 = 10'b0100000000; + parameter [9:0] CLK_COR_SEQ_2_2 = 10'b0100000000; + parameter [9:0] CLK_COR_SEQ_2_3 = 10'b0100000000; + parameter [9:0] CLK_COR_SEQ_2_4 = 10'b0100000000; + parameter [3:0] CLK_COR_SEQ_2_ENABLE = 4'b1111; + parameter CLK_COR_SEQ_2_USE = "FALSE"; + parameter integer CLK_COR_SEQ_LEN = 2; + parameter [15:0] CPLL_CFG0 = 16'h01FA; + parameter [15:0] CPLL_CFG1 = 16'h24A9; + parameter [15:0] CPLL_CFG2 = 16'h6807; + parameter [15:0] CPLL_CFG3 = 16'h0000; + parameter integer CPLL_FBDIV = 4; + parameter integer CPLL_FBDIV_45 = 4; + parameter [15:0] CPLL_INIT_CFG0 = 16'h001E; + parameter [15:0] CPLL_LOCK_CFG = 16'h01E8; + parameter integer CPLL_REFCLK_DIV = 1; + parameter [2:0] CTLE3_OCAP_EXT_CTRL = 3'b000; + parameter [0:0] CTLE3_OCAP_EXT_EN = 1'b0; + parameter [1:0] DDI_CTRL = 2'b00; + parameter integer DDI_REALIGN_WAIT = 15; + parameter DEC_MCOMMA_DETECT = "TRUE"; + parameter DEC_PCOMMA_DETECT = "TRUE"; + parameter DEC_VALID_COMMA_ONLY = "TRUE"; + parameter [0:0] DELAY_ELEC = 1'b0; + parameter [9:0] DMONITOR_CFG0 = 10'h000; + parameter [7:0] DMONITOR_CFG1 = 8'h00; + parameter [0:0] ES_CLK_PHASE_SEL = 1'b0; + parameter [5:0] ES_CONTROL = 6'b000000; + parameter ES_ERRDET_EN = "FALSE"; + parameter ES_EYE_SCAN_EN = "FALSE"; + parameter [11:0] ES_HORZ_OFFSET = 12'h800; + parameter [4:0] ES_PRESCALE = 5'b00000; + parameter [15:0] ES_QUALIFIER0 = 16'h0000; + parameter [15:0] ES_QUALIFIER1 = 16'h0000; + parameter [15:0] ES_QUALIFIER2 = 16'h0000; + parameter [15:0] ES_QUALIFIER3 = 16'h0000; + parameter [15:0] ES_QUALIFIER4 = 16'h0000; + parameter [15:0] ES_QUALIFIER5 = 16'h0000; + parameter [15:0] ES_QUALIFIER6 = 16'h0000; + parameter [15:0] ES_QUALIFIER7 = 16'h0000; + parameter [15:0] ES_QUALIFIER8 = 16'h0000; + parameter [15:0] ES_QUALIFIER9 = 16'h0000; + parameter [15:0] ES_QUAL_MASK0 = 16'h0000; + parameter [15:0] ES_QUAL_MASK1 = 16'h0000; + parameter [15:0] ES_QUAL_MASK2 = 16'h0000; + parameter [15:0] ES_QUAL_MASK3 = 16'h0000; + parameter [15:0] ES_QUAL_MASK4 = 16'h0000; + parameter [15:0] ES_QUAL_MASK5 = 16'h0000; + parameter [15:0] ES_QUAL_MASK6 = 16'h0000; + parameter [15:0] ES_QUAL_MASK7 = 16'h0000; + parameter [15:0] ES_QUAL_MASK8 = 16'h0000; + parameter [15:0] ES_QUAL_MASK9 = 16'h0000; + parameter [15:0] ES_SDATA_MASK0 = 16'h0000; + parameter [15:0] ES_SDATA_MASK1 = 16'h0000; + parameter [15:0] ES_SDATA_MASK2 = 16'h0000; + parameter [15:0] ES_SDATA_MASK3 = 16'h0000; + parameter [15:0] ES_SDATA_MASK4 = 16'h0000; + parameter [15:0] ES_SDATA_MASK5 = 16'h0000; + parameter [15:0] ES_SDATA_MASK6 = 16'h0000; + parameter [15:0] ES_SDATA_MASK7 = 16'h0000; + parameter [15:0] ES_SDATA_MASK8 = 16'h0000; + parameter [15:0] ES_SDATA_MASK9 = 16'h0000; + parameter [0:0] EYE_SCAN_SWAP_EN = 1'b0; + parameter [3:0] FTS_DESKEW_SEQ_ENABLE = 4'b1111; + parameter [3:0] FTS_LANE_DESKEW_CFG = 4'b1111; + parameter FTS_LANE_DESKEW_EN = "FALSE"; + parameter [4:0] GEARBOX_MODE = 5'b00000; + parameter [0:0] ISCAN_CK_PH_SEL2 = 1'b0; + parameter [0:0] LOCAL_MASTER = 1'b0; + parameter [2:0] LPBK_BIAS_CTRL = 3'b000; + parameter [0:0] LPBK_EN_RCAL_B = 1'b0; + parameter [3:0] LPBK_EXT_RCAL = 4'b0000; + parameter [2:0] LPBK_IND_CTRL0 = 3'b000; + parameter [2:0] LPBK_IND_CTRL1 = 3'b000; + parameter [2:0] LPBK_IND_CTRL2 = 3'b000; + parameter [3:0] LPBK_RG_CTRL = 4'b0000; + parameter [1:0] OOBDIVCTL = 2'b00; + parameter [0:0] OOB_PWRUP = 1'b0; + parameter PCI3_AUTO_REALIGN = "FRST_SMPL"; + parameter [0:0] PCI3_PIPE_RX_ELECIDLE = 1'b1; + parameter [1:0] PCI3_RX_ASYNC_EBUF_BYPASS = 2'b00; + parameter [0:0] PCI3_RX_ELECIDLE_EI2_ENABLE = 1'b0; + parameter [5:0] PCI3_RX_ELECIDLE_H2L_COUNT = 6'b000000; + parameter [2:0] PCI3_RX_ELECIDLE_H2L_DISABLE = 3'b000; + parameter [5:0] PCI3_RX_ELECIDLE_HI_COUNT = 6'b000000; + parameter [0:0] PCI3_RX_ELECIDLE_LP4_DISABLE = 1'b0; + parameter [0:0] PCI3_RX_FIFO_DISABLE = 1'b0; + parameter [4:0] PCIE3_CLK_COR_EMPTY_THRSH = 5'b00000; + parameter [5:0] PCIE3_CLK_COR_FULL_THRSH = 6'b010000; + parameter [4:0] PCIE3_CLK_COR_MAX_LAT = 5'b01000; + parameter [4:0] PCIE3_CLK_COR_MIN_LAT = 5'b00100; + parameter [5:0] PCIE3_CLK_COR_THRSH_TIMER = 6'b001000; + parameter [15:0] PCIE_BUFG_DIV_CTRL = 16'h0000; + parameter [1:0] PCIE_PLL_SEL_MODE_GEN12 = 2'h0; + parameter [1:0] PCIE_PLL_SEL_MODE_GEN3 = 2'h0; + parameter [1:0] PCIE_PLL_SEL_MODE_GEN4 = 2'h0; + parameter [15:0] PCIE_RXPCS_CFG_GEN3 = 16'h0000; + parameter [15:0] PCIE_RXPMA_CFG = 16'h0000; + parameter [15:0] PCIE_TXPCS_CFG_GEN3 = 16'h0000; + parameter [15:0] PCIE_TXPMA_CFG = 16'h0000; + parameter PCS_PCIE_EN = "FALSE"; + parameter [15:0] PCS_RSVD0 = 16'b0000000000000000; + parameter [11:0] PD_TRANS_TIME_FROM_P2 = 12'h03C; + parameter [7:0] PD_TRANS_TIME_NONE_P2 = 8'h19; + parameter [7:0] PD_TRANS_TIME_TO_P2 = 8'h64; + parameter integer PREIQ_FREQ_BST = 0; + parameter [2:0] PROCESS_PAR = 3'b010; + parameter [0:0] RATE_SW_USE_DRP = 1'b0; + parameter [0:0] RCLK_SIPO_DLY_ENB = 1'b0; + parameter [0:0] RCLK_SIPO_INV_EN = 1'b0; + parameter [0:0] RESET_POWERSAVE_DISABLE = 1'b0; + parameter [2:0] RTX_BUF_CML_CTRL = 3'b010; + parameter [1:0] RTX_BUF_TERM_CTRL = 2'b00; + parameter [4:0] RXBUFRESET_TIME = 5'b00001; + parameter RXBUF_ADDR_MODE = "FULL"; + parameter [3:0] RXBUF_EIDLE_HI_CNT = 4'b1000; + parameter [3:0] RXBUF_EIDLE_LO_CNT = 4'b0000; + parameter RXBUF_EN = "TRUE"; + parameter RXBUF_RESET_ON_CB_CHANGE = "TRUE"; + parameter RXBUF_RESET_ON_COMMAALIGN = "FALSE"; + parameter RXBUF_RESET_ON_EIDLE = "FALSE"; + parameter RXBUF_RESET_ON_RATE_CHANGE = "TRUE"; + parameter integer RXBUF_THRESH_OVFLW = 0; + parameter RXBUF_THRESH_OVRD = "FALSE"; + parameter integer RXBUF_THRESH_UNDFLW = 4; + parameter [4:0] RXCDRFREQRESET_TIME = 5'b00001; + parameter [4:0] RXCDRPHRESET_TIME = 5'b00001; + parameter [15:0] RXCDR_CFG0 = 16'h0003; + parameter [15:0] RXCDR_CFG0_GEN3 = 16'h0003; + parameter [15:0] RXCDR_CFG1 = 16'h0000; + parameter [15:0] RXCDR_CFG1_GEN3 = 16'h0000; + parameter [15:0] RXCDR_CFG2 = 16'h0164; + parameter [9:0] RXCDR_CFG2_GEN2 = 10'h164; + parameter [15:0] RXCDR_CFG2_GEN3 = 16'h0034; + parameter [15:0] RXCDR_CFG2_GEN4 = 16'h0034; + parameter [15:0] RXCDR_CFG3 = 16'h0024; + parameter [5:0] RXCDR_CFG3_GEN2 = 6'h24; + parameter [15:0] RXCDR_CFG3_GEN3 = 16'h0024; + parameter [15:0] RXCDR_CFG3_GEN4 = 16'h0024; + parameter [15:0] RXCDR_CFG4 = 16'h5CF6; + parameter [15:0] RXCDR_CFG4_GEN3 = 16'h5CF6; + parameter [15:0] RXCDR_CFG5 = 16'hB46B; + parameter [15:0] RXCDR_CFG5_GEN3 = 16'h146B; + parameter [0:0] RXCDR_FR_RESET_ON_EIDLE = 1'b0; + parameter [0:0] RXCDR_HOLD_DURING_EIDLE = 1'b0; + parameter [15:0] RXCDR_LOCK_CFG0 = 16'h0040; + parameter [15:0] RXCDR_LOCK_CFG1 = 16'h8000; + parameter [15:0] RXCDR_LOCK_CFG2 = 16'h0000; + parameter [15:0] RXCDR_LOCK_CFG3 = 16'h0000; + parameter [15:0] RXCDR_LOCK_CFG4 = 16'h0000; + parameter [0:0] RXCDR_PH_RESET_ON_EIDLE = 1'b0; + parameter [15:0] RXCFOK_CFG0 = 16'h0000; + parameter [15:0] RXCFOK_CFG1 = 16'h0002; + parameter [15:0] RXCFOK_CFG2 = 16'h002D; + parameter [15:0] RXCKCAL1_IQ_LOOP_RST_CFG = 16'h0000; + parameter [15:0] RXCKCAL1_I_LOOP_RST_CFG = 16'h0000; + parameter [15:0] RXCKCAL1_Q_LOOP_RST_CFG = 16'h0000; + parameter [15:0] RXCKCAL2_DX_LOOP_RST_CFG = 16'h0000; + parameter [15:0] RXCKCAL2_D_LOOP_RST_CFG = 16'h0000; + parameter [15:0] RXCKCAL2_S_LOOP_RST_CFG = 16'h0000; + parameter [15:0] RXCKCAL2_X_LOOP_RST_CFG = 16'h0000; + parameter [6:0] RXDFELPMRESET_TIME = 7'b0001111; + parameter [15:0] RXDFELPM_KL_CFG0 = 16'h0000; + parameter [15:0] RXDFELPM_KL_CFG1 = 16'h0022; + parameter [15:0] RXDFELPM_KL_CFG2 = 16'h0100; + parameter [15:0] RXDFE_CFG0 = 16'h4000; + parameter [15:0] RXDFE_CFG1 = 16'h0000; + parameter [15:0] RXDFE_GC_CFG0 = 16'h0000; + parameter [15:0] RXDFE_GC_CFG1 = 16'h0000; + parameter [15:0] RXDFE_GC_CFG2 = 16'h0000; + parameter [15:0] RXDFE_H2_CFG0 = 16'h0000; + parameter [15:0] RXDFE_H2_CFG1 = 16'h0002; + parameter [15:0] RXDFE_H3_CFG0 = 16'h0000; + parameter [15:0] RXDFE_H3_CFG1 = 16'h0002; + parameter [15:0] RXDFE_H4_CFG0 = 16'h0000; + parameter [15:0] RXDFE_H4_CFG1 = 16'h0003; + parameter [15:0] RXDFE_H5_CFG0 = 16'h0000; + parameter [15:0] RXDFE_H5_CFG1 = 16'h0002; + parameter [15:0] RXDFE_H6_CFG0 = 16'h0000; + parameter [15:0] RXDFE_H6_CFG1 = 16'h0002; + parameter [15:0] RXDFE_H7_CFG0 = 16'h0000; + parameter [15:0] RXDFE_H7_CFG1 = 16'h0002; + parameter [15:0] RXDFE_H8_CFG0 = 16'h0000; + parameter [15:0] RXDFE_H8_CFG1 = 16'h0002; + parameter [15:0] RXDFE_H9_CFG0 = 16'h0000; + parameter [15:0] RXDFE_H9_CFG1 = 16'h0002; + parameter [15:0] RXDFE_HA_CFG0 = 16'h0000; + parameter [15:0] RXDFE_HA_CFG1 = 16'h0002; + parameter [15:0] RXDFE_HB_CFG0 = 16'h0000; + parameter [15:0] RXDFE_HB_CFG1 = 16'h0002; + parameter [15:0] RXDFE_HC_CFG0 = 16'h0000; + parameter [15:0] RXDFE_HC_CFG1 = 16'h0002; + parameter [15:0] RXDFE_HD_CFG0 = 16'h0000; + parameter [15:0] RXDFE_HD_CFG1 = 16'h0002; + parameter [15:0] RXDFE_HE_CFG0 = 16'h0000; + parameter [15:0] RXDFE_HE_CFG1 = 16'h0002; + parameter [15:0] RXDFE_HF_CFG0 = 16'h0000; + parameter [15:0] RXDFE_HF_CFG1 = 16'h0002; + parameter [15:0] RXDFE_KH_CFG0 = 16'h0000; + parameter [15:0] RXDFE_KH_CFG1 = 16'h0000; + parameter [15:0] RXDFE_KH_CFG2 = 16'h0000; + parameter [15:0] RXDFE_KH_CFG3 = 16'h0000; + parameter [15:0] RXDFE_OS_CFG0 = 16'h0000; + parameter [15:0] RXDFE_OS_CFG1 = 16'h0002; + parameter [0:0] RXDFE_PWR_SAVING = 1'b0; + parameter [15:0] RXDFE_UT_CFG0 = 16'h0000; + parameter [15:0] RXDFE_UT_CFG1 = 16'h0002; + parameter [15:0] RXDFE_UT_CFG2 = 16'h0000; + parameter [15:0] RXDFE_VP_CFG0 = 16'h0000; + parameter [15:0] RXDFE_VP_CFG1 = 16'h0022; + parameter [15:0] RXDLY_CFG = 16'h0010; + parameter [15:0] RXDLY_LCFG = 16'h0030; + parameter RXELECIDLE_CFG = "SIGCFG_4"; + parameter integer RXGBOX_FIFO_INIT_RD_ADDR = 4; + parameter RXGEARBOX_EN = "FALSE"; + parameter [4:0] RXISCANRESET_TIME = 5'b00001; + parameter [15:0] RXLPM_CFG = 16'h0000; + parameter [15:0] RXLPM_GC_CFG = 16'h1000; + parameter [15:0] RXLPM_KH_CFG0 = 16'h0000; + parameter [15:0] RXLPM_KH_CFG1 = 16'h0002; + parameter [15:0] RXLPM_OS_CFG0 = 16'h0000; + parameter [15:0] RXLPM_OS_CFG1 = 16'h0000; + parameter [8:0] RXOOB_CFG = 9'b000110000; + parameter RXOOB_CLK_CFG = "PMA"; + parameter [4:0] RXOSCALRESET_TIME = 5'b00011; + parameter integer RXOUT_DIV = 4; + parameter [4:0] RXPCSRESET_TIME = 5'b00001; + parameter [15:0] RXPHBEACON_CFG = 16'h0000; + parameter [15:0] RXPHDLY_CFG = 16'h2020; + parameter [15:0] RXPHSAMP_CFG = 16'h2100; + parameter [15:0] RXPHSLIP_CFG = 16'h9933; + parameter [4:0] RXPH_MONITOR_SEL = 5'b00000; + parameter [0:0] RXPI_AUTO_BW_SEL_BYPASS = 1'b0; + parameter [15:0] RXPI_CFG0 = 16'h0002; + parameter [15:0] RXPI_CFG1 = 16'b0000000000000000; + parameter [0:0] RXPI_LPM = 1'b0; + parameter [1:0] RXPI_SEL_LC = 2'b00; + parameter [1:0] RXPI_STARTCODE = 2'b00; + parameter [0:0] RXPI_VREFSEL = 1'b0; + parameter RXPMACLK_SEL = "DATA"; + parameter [4:0] RXPMARESET_TIME = 5'b00001; + parameter [0:0] RXPRBS_ERR_LOOPBACK = 1'b0; + parameter integer RXPRBS_LINKACQ_CNT = 15; + parameter [0:0] RXREFCLKDIV2_SEL = 1'b0; + parameter integer RXSLIDE_AUTO_WAIT = 7; + parameter RXSLIDE_MODE = "OFF"; + parameter [0:0] RXSYNC_MULTILANE = 1'b0; + parameter [0:0] RXSYNC_OVRD = 1'b0; + parameter [0:0] RXSYNC_SKIP_DA = 1'b0; + parameter [0:0] RX_AFE_CM_EN = 1'b0; + parameter [15:0] RX_BIAS_CFG0 = 16'h12B0; + parameter [5:0] RX_BUFFER_CFG = 6'b000000; + parameter [0:0] RX_CAPFF_SARC_ENB = 1'b0; + parameter integer RX_CLK25_DIV = 8; + parameter [0:0] RX_CLKMUX_EN = 1'b1; + parameter [4:0] RX_CLK_SLIP_OVRD = 5'b00000; + parameter [3:0] RX_CM_BUF_CFG = 4'b1010; + parameter [0:0] RX_CM_BUF_PD = 1'b0; + parameter integer RX_CM_SEL = 3; + parameter integer RX_CM_TRIM = 12; + parameter [7:0] RX_CTLE3_LPF = 8'b00000000; + parameter integer RX_DATA_WIDTH = 20; + parameter [5:0] RX_DDI_SEL = 6'b000000; + parameter RX_DEFER_RESET_BUF_EN = "TRUE"; + parameter [2:0] RX_DEGEN_CTRL = 3'b011; + parameter integer RX_DFELPM_CFG0 = 0; + parameter [0:0] RX_DFELPM_CFG1 = 1'b1; + parameter [0:0] RX_DFELPM_KLKH_AGC_STUP_EN = 1'b1; + parameter [1:0] RX_DFE_AGC_CFG0 = 2'b00; + parameter integer RX_DFE_AGC_CFG1 = 4; + parameter integer RX_DFE_KL_LPM_KH_CFG0 = 1; + parameter integer RX_DFE_KL_LPM_KH_CFG1 = 4; + parameter [1:0] RX_DFE_KL_LPM_KL_CFG0 = 2'b01; + parameter integer RX_DFE_KL_LPM_KL_CFG1 = 4; + parameter [0:0] RX_DFE_LPM_HOLD_DURING_EIDLE = 1'b0; + parameter RX_DISPERR_SEQ_MATCH = "TRUE"; + parameter [0:0] RX_DIV2_MODE_B = 1'b0; + parameter [4:0] RX_DIVRESET_TIME = 5'b00001; + parameter [0:0] RX_EN_CTLE_RCAL_B = 1'b0; + parameter [0:0] RX_EN_HI_LR = 1'b1; + parameter [8:0] RX_EXT_RL_CTRL = 9'b000000000; + parameter [6:0] RX_EYESCAN_VS_CODE = 7'b0000000; + parameter [0:0] RX_EYESCAN_VS_NEG_DIR = 1'b0; + parameter [1:0] RX_EYESCAN_VS_RANGE = 2'b00; + parameter [0:0] RX_EYESCAN_VS_UT_SIGN = 1'b0; + parameter [0:0] RX_FABINT_USRCLK_FLOP = 1'b0; + parameter integer RX_INT_DATAWIDTH = 1; + parameter [0:0] RX_PMA_POWER_SAVE = 1'b0; + parameter [15:0] RX_PMA_RSV0 = 16'h0000; + parameter real RX_PROGDIV_CFG = 0.0; + parameter [15:0] RX_PROGDIV_RATE = 16'h0001; + parameter [3:0] RX_RESLOAD_CTRL = 4'b0000; + parameter [0:0] RX_RESLOAD_OVRD = 1'b0; + parameter [2:0] RX_SAMPLE_PERIOD = 3'b101; + parameter integer RX_SIG_VALID_DLY = 11; + parameter [0:0] RX_SUM_DFETAPREP_EN = 1'b0; + parameter [3:0] RX_SUM_IREF_TUNE = 4'b1001; + parameter [3:0] RX_SUM_RESLOAD_CTRL = 4'b0000; + parameter [3:0] RX_SUM_VCMTUNE = 4'b1010; + parameter [0:0] RX_SUM_VCM_OVWR = 1'b0; + parameter [2:0] RX_SUM_VREF_TUNE = 3'b100; + parameter [1:0] RX_TUNE_AFE_OS = 2'b00; + parameter [2:0] RX_VREG_CTRL = 3'b101; + parameter [0:0] RX_VREG_PDB = 1'b1; + parameter [1:0] RX_WIDEMODE_CDR = 2'b01; + parameter [1:0] RX_WIDEMODE_CDR_GEN3 = 2'b01; + parameter [1:0] RX_WIDEMODE_CDR_GEN4 = 2'b01; + parameter RX_XCLK_SEL = "RXDES"; + parameter [0:0] RX_XMODE_SEL = 1'b0; + parameter [0:0] SAMPLE_CLK_PHASE = 1'b0; + parameter [0:0] SAS_12G_MODE = 1'b0; + parameter [3:0] SATA_BURST_SEQ_LEN = 4'b1111; + parameter [2:0] SATA_BURST_VAL = 3'b100; + parameter SATA_CPLL_CFG = "VCO_3000MHZ"; + parameter [2:0] SATA_EIDLE_VAL = 3'b100; + parameter SHOW_REALIGN_COMMA = "TRUE"; + parameter SIM_DEVICE = "ULTRASCALE_PLUS"; + parameter SIM_MODE = "FAST"; + parameter SIM_RECEIVER_DETECT_PASS = "TRUE"; + parameter SIM_RESET_SPEEDUP = "TRUE"; + parameter SIM_TX_EIDLE_DRIVE_LEVEL = "Z"; + parameter [0:0] SRSTMODE = 1'b0; + parameter [1:0] TAPDLY_SET_TX = 2'h0; + parameter [3:0] TEMPERATURE_PAR = 4'b0010; + parameter [14:0] TERM_RCAL_CFG = 15'b100001000010000; + parameter [2:0] TERM_RCAL_OVRD = 3'b000; + parameter [7:0] TRANS_TIME_RATE = 8'h0E; + parameter [7:0] TST_RSV0 = 8'h00; + parameter [7:0] TST_RSV1 = 8'h00; + parameter TXBUF_EN = "TRUE"; + parameter TXBUF_RESET_ON_RATE_CHANGE = "FALSE"; + parameter [15:0] TXDLY_CFG = 16'h0010; + parameter [15:0] TXDLY_LCFG = 16'h0030; + parameter [3:0] TXDRVBIAS_N = 4'b1010; + parameter TXFIFO_ADDR_CFG = "LOW"; + parameter integer TXGBOX_FIFO_INIT_RD_ADDR = 4; + parameter TXGEARBOX_EN = "FALSE"; + parameter integer TXOUT_DIV = 4; + parameter [4:0] TXPCSRESET_TIME = 5'b00001; + parameter [15:0] TXPHDLY_CFG0 = 16'h6020; + parameter [15:0] TXPHDLY_CFG1 = 16'h0002; + parameter [15:0] TXPH_CFG = 16'h0123; + parameter [15:0] TXPH_CFG2 = 16'h0000; + parameter [4:0] TXPH_MONITOR_SEL = 5'b00000; + parameter [15:0] TXPI_CFG = 16'h0000; + parameter [1:0] TXPI_CFG0 = 2'b00; + parameter [1:0] TXPI_CFG1 = 2'b00; + parameter [1:0] TXPI_CFG2 = 2'b00; + parameter [0:0] TXPI_CFG3 = 1'b0; + parameter [0:0] TXPI_CFG4 = 1'b1; + parameter [2:0] TXPI_CFG5 = 3'b000; + parameter [0:0] TXPI_GRAY_SEL = 1'b0; + parameter [0:0] TXPI_INVSTROBE_SEL = 1'b0; + parameter [0:0] TXPI_LPM = 1'b0; + parameter [0:0] TXPI_PPM = 1'b0; + parameter TXPI_PPMCLK_SEL = "TXUSRCLK2"; + parameter [7:0] TXPI_PPM_CFG = 8'b00000000; + parameter [2:0] TXPI_SYNFREQ_PPM = 3'b000; + parameter [0:0] TXPI_VREFSEL = 1'b0; + parameter [4:0] TXPMARESET_TIME = 5'b00001; + parameter [0:0] TXREFCLKDIV2_SEL = 1'b0; + parameter [0:0] TXSYNC_MULTILANE = 1'b0; + parameter [0:0] TXSYNC_OVRD = 1'b0; + parameter [0:0] TXSYNC_SKIP_DA = 1'b0; + parameter integer TX_CLK25_DIV = 8; + parameter [0:0] TX_CLKMUX_EN = 1'b1; + parameter integer TX_DATA_WIDTH = 20; + parameter [15:0] TX_DCC_LOOP_RST_CFG = 16'h0000; + parameter [5:0] TX_DEEMPH0 = 6'b000000; + parameter [5:0] TX_DEEMPH1 = 6'b000000; + parameter [5:0] TX_DEEMPH2 = 6'b000000; + parameter [5:0] TX_DEEMPH3 = 6'b000000; + parameter [4:0] TX_DIVRESET_TIME = 5'b00001; + parameter TX_DRIVE_MODE = "DIRECT"; + parameter integer TX_DRVMUX_CTRL = 2; + parameter [2:0] TX_EIDLE_ASSERT_DELAY = 3'b110; + parameter [2:0] TX_EIDLE_DEASSERT_DELAY = 3'b100; + parameter [0:0] TX_FABINT_USRCLK_FLOP = 1'b0; + parameter [0:0] TX_FIFO_BYP_EN = 1'b0; + parameter [0:0] TX_IDLE_DATA_ZERO = 1'b0; + parameter integer TX_INT_DATAWIDTH = 1; + parameter TX_LOOPBACK_DRIVE_HIZ = "FALSE"; + parameter [0:0] TX_MAINCURSOR_SEL = 1'b0; + parameter [6:0] TX_MARGIN_FULL_0 = 7'b1001110; + parameter [6:0] TX_MARGIN_FULL_1 = 7'b1001001; + parameter [6:0] TX_MARGIN_FULL_2 = 7'b1000101; + parameter [6:0] TX_MARGIN_FULL_3 = 7'b1000010; + parameter [6:0] TX_MARGIN_FULL_4 = 7'b1000000; + parameter [6:0] TX_MARGIN_LOW_0 = 7'b1000110; + parameter [6:0] TX_MARGIN_LOW_1 = 7'b1000100; + parameter [6:0] TX_MARGIN_LOW_2 = 7'b1000010; + parameter [6:0] TX_MARGIN_LOW_3 = 7'b1000000; + parameter [6:0] TX_MARGIN_LOW_4 = 7'b1000000; + parameter [15:0] TX_PHICAL_CFG0 = 16'h0000; + parameter [15:0] TX_PHICAL_CFG1 = 16'h003F; + parameter [15:0] TX_PHICAL_CFG2 = 16'h0000; + parameter integer TX_PI_BIASSET = 0; + parameter [1:0] TX_PI_IBIAS_MID = 2'b00; + parameter [0:0] TX_PMADATA_OPT = 1'b0; + parameter [0:0] TX_PMA_POWER_SAVE = 1'b0; + parameter [15:0] TX_PMA_RSV0 = 16'h0008; + parameter integer TX_PREDRV_CTRL = 2; + parameter TX_PROGCLK_SEL = "POSTPI"; + parameter real TX_PROGDIV_CFG = 0.0; + parameter [15:0] TX_PROGDIV_RATE = 16'h0001; + parameter [0:0] TX_QPI_STATUS_EN = 1'b0; + parameter [13:0] TX_RXDETECT_CFG = 14'h0032; + parameter integer TX_RXDETECT_REF = 3; + parameter [2:0] TX_SAMPLE_PERIOD = 3'b101; + parameter [0:0] TX_SARC_LPBK_ENB = 1'b0; + parameter [1:0] TX_SW_MEAS = 2'b00; + parameter [2:0] TX_VREG_CTRL = 3'b000; + parameter [0:0] TX_VREG_PDB = 1'b0; + parameter [1:0] TX_VREG_VREFSEL = 2'b00; + parameter TX_XCLK_SEL = "TXOUT"; + parameter [0:0] USB_BOTH_BURST_IDLE = 1'b0; + parameter [6:0] USB_BURSTMAX_U3WAKE = 7'b1111111; + parameter [6:0] USB_BURSTMIN_U3WAKE = 7'b1100011; + parameter [0:0] USB_CLK_COR_EQ_EN = 1'b0; + parameter [0:0] USB_EXT_CNTL = 1'b1; + parameter [9:0] USB_IDLEMAX_POLLING = 10'b1010111011; + parameter [9:0] USB_IDLEMIN_POLLING = 10'b0100101011; + parameter [8:0] USB_LFPSPING_BURST = 9'b000000101; + parameter [8:0] USB_LFPSPOLLING_BURST = 9'b000110001; + parameter [8:0] USB_LFPSPOLLING_IDLE_MS = 9'b000000100; + parameter [8:0] USB_LFPSU1EXIT_BURST = 9'b000011101; + parameter [8:0] USB_LFPSU2LPEXIT_BURST_MS = 9'b001100011; + parameter [8:0] USB_LFPSU3WAKE_BURST_MS = 9'b111110011; + parameter [3:0] USB_LFPS_TPERIOD = 4'b0011; + parameter [0:0] USB_LFPS_TPERIOD_ACCURATE = 1'b1; + parameter [0:0] USB_MODE = 1'b0; + parameter [0:0] USB_PCIE_ERR_REP_DIS = 1'b0; + parameter integer USB_PING_SATA_MAX_INIT = 21; + parameter integer USB_PING_SATA_MIN_INIT = 12; + parameter integer USB_POLL_SATA_MAX_BURST = 8; + parameter integer USB_POLL_SATA_MIN_BURST = 4; + parameter [0:0] USB_RAW_ELEC = 1'b0; + parameter [0:0] USB_RXIDLE_P0_CTRL = 1'b1; + parameter [0:0] USB_TXIDLE_TUNE_ENABLE = 1'b1; + parameter integer USB_U1_SATA_MAX_WAKE = 7; + parameter integer USB_U1_SATA_MIN_WAKE = 4; + parameter integer USB_U2_SAS_MAX_COM = 64; + parameter integer USB_U2_SAS_MIN_COM = 36; + parameter [0:0] USE_PCS_CLK_PHASE_SEL = 1'b0; + parameter [0:0] Y_ALL_MODE = 1'b0; + output BUFGTCE; + output [2:0] BUFGTCEMASK; + output [8:0] BUFGTDIV; + output BUFGTRESET; + output [2:0] BUFGTRSTMASK; + output CPLLFBCLKLOST; + output CPLLLOCK; + output CPLLREFCLKLOST; + output [15:0] DMONITOROUT; + output DMONITOROUTCLK; + output [15:0] DRPDO; + output DRPRDY; + output EYESCANDATAERROR; + output GTHTXN; + output GTHTXP; + output GTPOWERGOOD; + output GTREFCLKMONITOR; + output PCIERATEGEN3; + output PCIERATEIDLE; + output [1:0] PCIERATEQPLLPD; + output [1:0] PCIERATEQPLLRESET; + output PCIESYNCTXSYNCDONE; + output PCIEUSERGEN3RDY; + output PCIEUSERPHYSTATUSRST; + output PCIEUSERRATESTART; + output [15:0] PCSRSVDOUT; + output PHYSTATUS; + output [15:0] PINRSRVDAS; + output POWERPRESENT; + output RESETEXCEPTION; + output [2:0] RXBUFSTATUS; + output RXBYTEISALIGNED; + output RXBYTEREALIGN; + output RXCDRLOCK; + output RXCDRPHDONE; + output RXCHANBONDSEQ; + output RXCHANISALIGNED; + output RXCHANREALIGN; + output [4:0] RXCHBONDO; + output RXCKCALDONE; + output [1:0] RXCLKCORCNT; + output RXCOMINITDET; + output RXCOMMADET; + output RXCOMSASDET; + output RXCOMWAKEDET; + output [15:0] RXCTRL0; + output [15:0] RXCTRL1; + output [7:0] RXCTRL2; + output [7:0] RXCTRL3; + output [127:0] RXDATA; + output [7:0] RXDATAEXTENDRSVD; + output [1:0] RXDATAVALID; + output RXDLYSRESETDONE; + output RXELECIDLE; + output [5:0] RXHEADER; + output [1:0] RXHEADERVALID; + output RXLFPSTRESETDET; + output RXLFPSU2LPEXITDET; + output RXLFPSU3WAKEDET; + output [7:0] RXMONITOROUT; + output RXOSINTDONE; + output RXOSINTSTARTED; + output RXOSINTSTROBEDONE; + output RXOSINTSTROBESTARTED; + output RXOUTCLK; + output RXOUTCLKFABRIC; + output RXOUTCLKPCS; + output RXPHALIGNDONE; + output RXPHALIGNERR; + output RXPMARESETDONE; + output RXPRBSERR; + output RXPRBSLOCKED; + output RXPRGDIVRESETDONE; + output RXQPISENN; + output RXQPISENP; + output RXRATEDONE; + output RXRECCLKOUT; + output RXRESETDONE; + output RXSLIDERDY; + output RXSLIPDONE; + output RXSLIPOUTCLKRDY; + output RXSLIPPMARDY; + output [1:0] RXSTARTOFSEQ; + output [2:0] RXSTATUS; + output RXSYNCDONE; + output RXSYNCOUT; + output RXVALID; + output [1:0] TXBUFSTATUS; + output TXCOMFINISH; + output TXDCCDONE; + output TXDLYSRESETDONE; + output TXOUTCLK; + output TXOUTCLKFABRIC; + output TXOUTCLKPCS; + output TXPHALIGNDONE; + output TXPHINITDONE; + output TXPMARESETDONE; + output TXPRGDIVRESETDONE; + output TXQPISENN; + output TXQPISENP; + output TXRATEDONE; + output TXRESETDONE; + output TXSYNCDONE; + output TXSYNCOUT; + input CDRSTEPDIR; + input CDRSTEPSQ; + input CDRSTEPSX; + input CFGRESET; + input CLKRSVD0; + input CLKRSVD1; + input CPLLFREQLOCK; + input CPLLLOCKDETCLK; + input CPLLLOCKEN; + input CPLLPD; + input [2:0] CPLLREFCLKSEL; + input CPLLRESET; + input DMONFIFORESET; + input DMONITORCLK; + input [9:0] DRPADDR; + input DRPCLK; + input [15:0] DRPDI; + input DRPEN; + input DRPRST; + input DRPWE; + input EYESCANRESET; + input EYESCANTRIGGER; + input FREQOS; + input GTGREFCLK; + input GTHRXN; + input GTHRXP; + input GTNORTHREFCLK0; + input GTNORTHREFCLK1; + input GTREFCLK0; + input GTREFCLK1; + input [15:0] GTRSVD; + input GTRXRESET; + input GTRXRESETSEL; + input GTSOUTHREFCLK0; + input GTSOUTHREFCLK1; + input GTTXRESET; + input GTTXRESETSEL; + input INCPCTRL; + input [2:0] LOOPBACK; + input PCIEEQRXEQADAPTDONE; + input PCIERSTIDLE; + input PCIERSTTXSYNCSTART; + input PCIEUSERRATEDONE; + input [15:0] PCSRSVDIN; + input QPLL0CLK; + input QPLL0FREQLOCK; + input QPLL0REFCLK; + input QPLL1CLK; + input QPLL1FREQLOCK; + input QPLL1REFCLK; + input RESETOVRD; + input RX8B10BEN; + input RXAFECFOKEN; + input RXBUFRESET; + input RXCDRFREQRESET; + input RXCDRHOLD; + input RXCDROVRDEN; + input RXCDRRESET; + input RXCHBONDEN; + input [4:0] RXCHBONDI; + input [2:0] RXCHBONDLEVEL; + input RXCHBONDMASTER; + input RXCHBONDSLAVE; + input RXCKCALRESET; + input [6:0] RXCKCALSTART; + input RXCOMMADETEN; + input [1:0] RXDFEAGCCTRL; + input RXDFEAGCHOLD; + input RXDFEAGCOVRDEN; + input [3:0] RXDFECFOKFCNUM; + input RXDFECFOKFEN; + input RXDFECFOKFPULSE; + input RXDFECFOKHOLD; + input RXDFECFOKOVREN; + input RXDFEKHHOLD; + input RXDFEKHOVRDEN; + input RXDFELFHOLD; + input RXDFELFOVRDEN; + input RXDFELPMRESET; + input RXDFETAP10HOLD; + input RXDFETAP10OVRDEN; + input RXDFETAP11HOLD; + input RXDFETAP11OVRDEN; + input RXDFETAP12HOLD; + input RXDFETAP12OVRDEN; + input RXDFETAP13HOLD; + input RXDFETAP13OVRDEN; + input RXDFETAP14HOLD; + input RXDFETAP14OVRDEN; + input RXDFETAP15HOLD; + input RXDFETAP15OVRDEN; + input RXDFETAP2HOLD; + input RXDFETAP2OVRDEN; + input RXDFETAP3HOLD; + input RXDFETAP3OVRDEN; + input RXDFETAP4HOLD; + input RXDFETAP4OVRDEN; + input RXDFETAP5HOLD; + input RXDFETAP5OVRDEN; + input RXDFETAP6HOLD; + input RXDFETAP6OVRDEN; + input RXDFETAP7HOLD; + input RXDFETAP7OVRDEN; + input RXDFETAP8HOLD; + input RXDFETAP8OVRDEN; + input RXDFETAP9HOLD; + input RXDFETAP9OVRDEN; + input RXDFEUTHOLD; + input RXDFEUTOVRDEN; + input RXDFEVPHOLD; + input RXDFEVPOVRDEN; + input RXDFEXYDEN; + input RXDLYBYPASS; + input RXDLYEN; + input RXDLYOVRDEN; + input RXDLYSRESET; + input [1:0] RXELECIDLEMODE; + input RXEQTRAINING; + input RXGEARBOXSLIP; + input RXLATCLK; + input RXLPMEN; + input RXLPMGCHOLD; + input RXLPMGCOVRDEN; + input RXLPMHFHOLD; + input RXLPMHFOVRDEN; + input RXLPMLFHOLD; + input RXLPMLFKLOVRDEN; + input RXLPMOSHOLD; + input RXLPMOSOVRDEN; + input RXMCOMMAALIGNEN; + input [1:0] RXMONITORSEL; + input RXOOBRESET; + input RXOSCALRESET; + input RXOSHOLD; + input RXOSOVRDEN; + input [2:0] RXOUTCLKSEL; + input RXPCOMMAALIGNEN; + input RXPCSRESET; + input [1:0] RXPD; + input RXPHALIGN; + input RXPHALIGNEN; + input RXPHDLYPD; + input RXPHDLYRESET; + input RXPHOVRDEN; + input [1:0] RXPLLCLKSEL; + input RXPMARESET; + input RXPOLARITY; + input RXPRBSCNTRESET; + input [3:0] RXPRBSSEL; + input RXPROGDIVRESET; + input RXQPIEN; + input [2:0] RXRATE; + input RXRATEMODE; + input RXSLIDE; + input RXSLIPOUTCLK; + input RXSLIPPMA; + input RXSYNCALLIN; + input RXSYNCIN; + input RXSYNCMODE; + input [1:0] RXSYSCLKSEL; + input RXTERMINATION; + input RXUSERRDY; + input RXUSRCLK; + input RXUSRCLK2; + input SIGVALIDCLK; + input [19:0] TSTIN; + input [7:0] TX8B10BBYPASS; + input TX8B10BEN; + input TXCOMINIT; + input TXCOMSAS; + input TXCOMWAKE; + input [15:0] TXCTRL0; + input [15:0] TXCTRL1; + input [7:0] TXCTRL2; + input [127:0] TXDATA; + input [7:0] TXDATAEXTENDRSVD; + input TXDCCFORCESTART; + input TXDCCRESET; + input [1:0] TXDEEMPH; + input TXDETECTRX; + input [4:0] TXDIFFCTRL; + input TXDLYBYPASS; + input TXDLYEN; + input TXDLYHOLD; + input TXDLYOVRDEN; + input TXDLYSRESET; + input TXDLYUPDOWN; + input TXELECIDLE; + input [5:0] TXHEADER; + input TXINHIBIT; + input TXLATCLK; + input TXLFPSTRESET; + input TXLFPSU2LPEXIT; + input TXLFPSU3WAKE; + input [6:0] TXMAINCURSOR; + input [2:0] TXMARGIN; + input TXMUXDCDEXHOLD; + input TXMUXDCDORWREN; + input TXONESZEROS; + input [2:0] TXOUTCLKSEL; + input TXPCSRESET; + input [1:0] TXPD; + input TXPDELECIDLEMODE; + input TXPHALIGN; + input TXPHALIGNEN; + input TXPHDLYPD; + input TXPHDLYRESET; + input TXPHDLYTSTCLK; + input TXPHINIT; + input TXPHOVRDEN; + input TXPIPPMEN; + input TXPIPPMOVRDEN; + input TXPIPPMPD; + input TXPIPPMSEL; + input [4:0] TXPIPPMSTEPSIZE; + input TXPISOPD; + input [1:0] TXPLLCLKSEL; + input TXPMARESET; + input TXPOLARITY; + input [4:0] TXPOSTCURSOR; + input TXPRBSFORCEERR; + input [3:0] TXPRBSSEL; + input [4:0] TXPRECURSOR; + input TXPROGDIVRESET; + input TXQPIBIASEN; + input TXQPIWEAKPUP; + input [2:0] TXRATE; + input TXRATEMODE; + input [6:0] TXSEQUENCE; + input TXSWING; + input TXSYNCALLIN; + input TXSYNCIN; + input TXSYNCMODE; + input [1:0] TXSYSCLKSEL; + input TXUSERRDY; + input TXUSRCLK; + input TXUSRCLK2; +endmodule + +module GTHE4_COMMON (...); + parameter [0:0] AEN_QPLL0_FBDIV = 1'b1; + parameter [0:0] AEN_QPLL1_FBDIV = 1'b1; + parameter [0:0] AEN_SDM0TOGGLE = 1'b0; + parameter [0:0] AEN_SDM1TOGGLE = 1'b0; + parameter [0:0] A_SDM0TOGGLE = 1'b0; + parameter [8:0] A_SDM1DATA_HIGH = 9'b000000000; + parameter [15:0] A_SDM1DATA_LOW = 16'b0000000000000000; + parameter [0:0] A_SDM1TOGGLE = 1'b0; + parameter [15:0] BIAS_CFG0 = 16'h0000; + parameter [15:0] BIAS_CFG1 = 16'h0000; + parameter [15:0] BIAS_CFG2 = 16'h0000; + parameter [15:0] BIAS_CFG3 = 16'h0000; + parameter [15:0] BIAS_CFG4 = 16'h0000; + parameter [15:0] BIAS_CFG_RSVD = 16'h0000; + parameter [15:0] COMMON_CFG0 = 16'h0000; + parameter [15:0] COMMON_CFG1 = 16'h0000; + parameter [15:0] POR_CFG = 16'h0000; + parameter [15:0] PPF0_CFG = 16'h0F00; + parameter [15:0] PPF1_CFG = 16'h0F00; + parameter QPLL0CLKOUT_RATE = "FULL"; + parameter [15:0] QPLL0_CFG0 = 16'h391C; + parameter [15:0] QPLL0_CFG1 = 16'h0000; + parameter [15:0] QPLL0_CFG1_G3 = 16'h0020; + parameter [15:0] QPLL0_CFG2 = 16'h0F80; + parameter [15:0] QPLL0_CFG2_G3 = 16'h0F80; + parameter [15:0] QPLL0_CFG3 = 16'h0120; + parameter [15:0] QPLL0_CFG4 = 16'h0002; + parameter [9:0] QPLL0_CP = 10'b0000011111; + parameter [9:0] QPLL0_CP_G3 = 10'b0000011111; + parameter integer QPLL0_FBDIV = 66; + parameter integer QPLL0_FBDIV_G3 = 80; + parameter [15:0] QPLL0_INIT_CFG0 = 16'h0000; + parameter [7:0] QPLL0_INIT_CFG1 = 8'h00; + parameter [15:0] QPLL0_LOCK_CFG = 16'h01E8; + parameter [15:0] QPLL0_LOCK_CFG_G3 = 16'h21E8; + parameter [9:0] QPLL0_LPF = 10'b1011111111; + parameter [9:0] QPLL0_LPF_G3 = 10'b1111111111; + parameter [0:0] QPLL0_PCI_EN = 1'b0; + parameter [0:0] QPLL0_RATE_SW_USE_DRP = 1'b0; + parameter integer QPLL0_REFCLK_DIV = 1; + parameter [15:0] QPLL0_SDM_CFG0 = 16'h0040; + parameter [15:0] QPLL0_SDM_CFG1 = 16'h0000; + parameter [15:0] QPLL0_SDM_CFG2 = 16'h0000; + parameter QPLL1CLKOUT_RATE = "FULL"; + parameter [15:0] QPLL1_CFG0 = 16'h691C; + parameter [15:0] QPLL1_CFG1 = 16'h0020; + parameter [15:0] QPLL1_CFG1_G3 = 16'h0020; + parameter [15:0] QPLL1_CFG2 = 16'h0F80; + parameter [15:0] QPLL1_CFG2_G3 = 16'h0F80; + parameter [15:0] QPLL1_CFG3 = 16'h0120; + parameter [15:0] QPLL1_CFG4 = 16'h0002; + parameter [9:0] QPLL1_CP = 10'b0000011111; + parameter [9:0] QPLL1_CP_G3 = 10'b0000011111; + parameter integer QPLL1_FBDIV = 66; + parameter integer QPLL1_FBDIV_G3 = 80; + parameter [15:0] QPLL1_INIT_CFG0 = 16'h0000; + parameter [7:0] QPLL1_INIT_CFG1 = 8'h00; + parameter [15:0] QPLL1_LOCK_CFG = 16'h01E8; + parameter [15:0] QPLL1_LOCK_CFG_G3 = 16'h21E8; + parameter [9:0] QPLL1_LPF = 10'b1011111111; + parameter [9:0] QPLL1_LPF_G3 = 10'b1111111111; + parameter [0:0] QPLL1_PCI_EN = 1'b0; + parameter [0:0] QPLL1_RATE_SW_USE_DRP = 1'b0; + parameter integer QPLL1_REFCLK_DIV = 1; + parameter [15:0] QPLL1_SDM_CFG0 = 16'h0000; + parameter [15:0] QPLL1_SDM_CFG1 = 16'h0000; + parameter [15:0] QPLL1_SDM_CFG2 = 16'h0000; + parameter [15:0] RSVD_ATTR0 = 16'h0000; + parameter [15:0] RSVD_ATTR1 = 16'h0000; + parameter [15:0] RSVD_ATTR2 = 16'h0000; + parameter [15:0] RSVD_ATTR3 = 16'h0000; + parameter [1:0] RXRECCLKOUT0_SEL = 2'b00; + parameter [1:0] RXRECCLKOUT1_SEL = 2'b00; + parameter [0:0] SARC_ENB = 1'b0; + parameter [0:0] SARC_SEL = 1'b0; + parameter [15:0] SDM0INITSEED0_0 = 16'b0000000000000000; + parameter [8:0] SDM0INITSEED0_1 = 9'b000000000; + parameter [15:0] SDM1INITSEED0_0 = 16'b0000000000000000; + parameter [8:0] SDM1INITSEED0_1 = 9'b000000000; + parameter SIM_DEVICE = "ULTRASCALE_PLUS"; + parameter SIM_MODE = "FAST"; + parameter SIM_RESET_SPEEDUP = "TRUE"; + output [15:0] DRPDO; + output DRPRDY; + output [7:0] PMARSVDOUT0; + output [7:0] PMARSVDOUT1; + output QPLL0FBCLKLOST; + output QPLL0LOCK; + output QPLL0OUTCLK; + output QPLL0OUTREFCLK; + output QPLL0REFCLKLOST; + output QPLL1FBCLKLOST; + output QPLL1LOCK; + output QPLL1OUTCLK; + output QPLL1OUTREFCLK; + output QPLL1REFCLKLOST; + output [7:0] QPLLDMONITOR0; + output [7:0] QPLLDMONITOR1; + output REFCLKOUTMONITOR0; + output REFCLKOUTMONITOR1; + output [1:0] RXRECCLK0SEL; + output [1:0] RXRECCLK1SEL; + output [3:0] SDM0FINALOUT; + output [14:0] SDM0TESTDATA; + output [3:0] SDM1FINALOUT; + output [14:0] SDM1TESTDATA; + output [9:0] TCONGPO; + output TCONRSVDOUT0; + input BGBYPASSB; + input BGMONITORENB; + input BGPDB; + input [4:0] BGRCALOVRD; + input BGRCALOVRDENB; + input [15:0] DRPADDR; + input DRPCLK; + input [15:0] DRPDI; + input DRPEN; + input DRPWE; + input GTGREFCLK0; + input GTGREFCLK1; + input GTNORTHREFCLK00; + input GTNORTHREFCLK01; + input GTNORTHREFCLK10; + input GTNORTHREFCLK11; + input GTREFCLK00; + input GTREFCLK01; + input GTREFCLK10; + input GTREFCLK11; + input GTSOUTHREFCLK00; + input GTSOUTHREFCLK01; + input GTSOUTHREFCLK10; + input GTSOUTHREFCLK11; + input [2:0] PCIERATEQPLL0; + input [2:0] PCIERATEQPLL1; + input [7:0] PMARSVD0; + input [7:0] PMARSVD1; + input QPLL0CLKRSVD0; + input QPLL0CLKRSVD1; + input [7:0] QPLL0FBDIV; + input QPLL0LOCKDETCLK; + input QPLL0LOCKEN; + input QPLL0PD; + input [2:0] QPLL0REFCLKSEL; + input QPLL0RESET; + input QPLL1CLKRSVD0; + input QPLL1CLKRSVD1; + input [7:0] QPLL1FBDIV; + input QPLL1LOCKDETCLK; + input QPLL1LOCKEN; + input QPLL1PD; + input [2:0] QPLL1REFCLKSEL; + input QPLL1RESET; + input [7:0] QPLLRSVD1; + input [4:0] QPLLRSVD2; + input [4:0] QPLLRSVD3; + input [7:0] QPLLRSVD4; + input RCALENB; + input [24:0] SDM0DATA; + input SDM0RESET; + input SDM0TOGGLE; + input [1:0] SDM0WIDTH; + input [24:0] SDM1DATA; + input SDM1RESET; + input SDM1TOGGLE; + input [1:0] SDM1WIDTH; + input [9:0] TCONGPI; + input TCONPOWERUP; + input [1:0] TCONRESET; + input [1:0] TCONRSVDIN1; +endmodule + +module GTYE4_CHANNEL (...); + parameter [0:0] ACJTAG_DEBUG_MODE = 1'b0; + parameter [0:0] ACJTAG_MODE = 1'b0; + parameter [0:0] ACJTAG_RESET = 1'b0; + parameter [15:0] ADAPT_CFG0 = 16'h9200; + parameter [15:0] ADAPT_CFG1 = 16'h801C; + parameter [15:0] ADAPT_CFG2 = 16'h0000; + parameter ALIGN_COMMA_DOUBLE = "FALSE"; + parameter [9:0] ALIGN_COMMA_ENABLE = 10'b0001111111; + parameter integer ALIGN_COMMA_WORD = 1; + parameter ALIGN_MCOMMA_DET = "TRUE"; + parameter [9:0] ALIGN_MCOMMA_VALUE = 10'b1010000011; + parameter ALIGN_PCOMMA_DET = "TRUE"; + parameter [9:0] ALIGN_PCOMMA_VALUE = 10'b0101111100; + parameter [0:0] A_RXOSCALRESET = 1'b0; + parameter [0:0] A_RXPROGDIVRESET = 1'b0; + parameter [0:0] A_RXTERMINATION = 1'b1; + parameter [4:0] A_TXDIFFCTRL = 5'b01100; + parameter [0:0] A_TXPROGDIVRESET = 1'b0; + parameter CBCC_DATA_SOURCE_SEL = "DECODED"; + parameter [0:0] CDR_SWAP_MODE_EN = 1'b0; + parameter [0:0] CFOK_PWRSVE_EN = 1'b1; + parameter CHAN_BOND_KEEP_ALIGN = "FALSE"; + parameter integer CHAN_BOND_MAX_SKEW = 7; + parameter [9:0] CHAN_BOND_SEQ_1_1 = 10'b0101111100; + parameter [9:0] CHAN_BOND_SEQ_1_2 = 10'b0000000000; + parameter [9:0] CHAN_BOND_SEQ_1_3 = 10'b0000000000; + parameter [9:0] CHAN_BOND_SEQ_1_4 = 10'b0000000000; + parameter [3:0] CHAN_BOND_SEQ_1_ENABLE = 4'b1111; + parameter [9:0] CHAN_BOND_SEQ_2_1 = 10'b0100000000; + parameter [9:0] CHAN_BOND_SEQ_2_2 = 10'b0100000000; + parameter [9:0] CHAN_BOND_SEQ_2_3 = 10'b0100000000; + parameter [9:0] CHAN_BOND_SEQ_2_4 = 10'b0100000000; + parameter [3:0] CHAN_BOND_SEQ_2_ENABLE = 4'b1111; + parameter CHAN_BOND_SEQ_2_USE = "FALSE"; + parameter integer CHAN_BOND_SEQ_LEN = 2; + parameter [15:0] CH_HSPMUX = 16'h2424; + parameter [15:0] CKCAL1_CFG_0 = 16'b1100000011000000; + parameter [15:0] CKCAL1_CFG_1 = 16'b0101000011000000; + parameter [15:0] CKCAL1_CFG_2 = 16'b0000000000000000; + parameter [15:0] CKCAL1_CFG_3 = 16'b0000000000000000; + parameter [15:0] CKCAL2_CFG_0 = 16'b1100000011000000; + parameter [15:0] CKCAL2_CFG_1 = 16'b1000000011000000; + parameter [15:0] CKCAL2_CFG_2 = 16'b0000000000000000; + parameter [15:0] CKCAL2_CFG_3 = 16'b0000000000000000; + parameter [15:0] CKCAL2_CFG_4 = 16'b0000000000000000; + parameter CLK_CORRECT_USE = "TRUE"; + parameter CLK_COR_KEEP_IDLE = "FALSE"; + parameter integer CLK_COR_MAX_LAT = 20; + parameter integer CLK_COR_MIN_LAT = 18; + parameter CLK_COR_PRECEDENCE = "TRUE"; + parameter integer CLK_COR_REPEAT_WAIT = 0; + parameter [9:0] CLK_COR_SEQ_1_1 = 10'b0100011100; + parameter [9:0] CLK_COR_SEQ_1_2 = 10'b0000000000; + parameter [9:0] CLK_COR_SEQ_1_3 = 10'b0000000000; + parameter [9:0] CLK_COR_SEQ_1_4 = 10'b0000000000; + parameter [3:0] CLK_COR_SEQ_1_ENABLE = 4'b1111; + parameter [9:0] CLK_COR_SEQ_2_1 = 10'b0100000000; + parameter [9:0] CLK_COR_SEQ_2_2 = 10'b0100000000; + parameter [9:0] CLK_COR_SEQ_2_3 = 10'b0100000000; + parameter [9:0] CLK_COR_SEQ_2_4 = 10'b0100000000; + parameter [3:0] CLK_COR_SEQ_2_ENABLE = 4'b1111; + parameter CLK_COR_SEQ_2_USE = "FALSE"; + parameter integer CLK_COR_SEQ_LEN = 2; + parameter [15:0] CPLL_CFG0 = 16'h01FA; + parameter [15:0] CPLL_CFG1 = 16'h24A9; + parameter [15:0] CPLL_CFG2 = 16'h6807; + parameter [15:0] CPLL_CFG3 = 16'h0000; + parameter integer CPLL_FBDIV = 4; + parameter integer CPLL_FBDIV_45 = 4; + parameter [15:0] CPLL_INIT_CFG0 = 16'h001E; + parameter [15:0] CPLL_LOCK_CFG = 16'h01E8; + parameter integer CPLL_REFCLK_DIV = 1; + parameter [2:0] CTLE3_OCAP_EXT_CTRL = 3'b000; + parameter [0:0] CTLE3_OCAP_EXT_EN = 1'b0; + parameter [1:0] DDI_CTRL = 2'b00; + parameter integer DDI_REALIGN_WAIT = 15; + parameter DEC_MCOMMA_DETECT = "TRUE"; + parameter DEC_PCOMMA_DETECT = "TRUE"; + parameter DEC_VALID_COMMA_ONLY = "TRUE"; + parameter [0:0] DELAY_ELEC = 1'b0; + parameter [9:0] DMONITOR_CFG0 = 10'h000; + parameter [7:0] DMONITOR_CFG1 = 8'h00; + parameter [0:0] ES_CLK_PHASE_SEL = 1'b0; + parameter [5:0] ES_CONTROL = 6'b000000; + parameter ES_ERRDET_EN = "FALSE"; + parameter ES_EYE_SCAN_EN = "FALSE"; + parameter [11:0] ES_HORZ_OFFSET = 12'h800; + parameter [4:0] ES_PRESCALE = 5'b00000; + parameter [15:0] ES_QUALIFIER0 = 16'h0000; + parameter [15:0] ES_QUALIFIER1 = 16'h0000; + parameter [15:0] ES_QUALIFIER2 = 16'h0000; + parameter [15:0] ES_QUALIFIER3 = 16'h0000; + parameter [15:0] ES_QUALIFIER4 = 16'h0000; + parameter [15:0] ES_QUALIFIER5 = 16'h0000; + parameter [15:0] ES_QUALIFIER6 = 16'h0000; + parameter [15:0] ES_QUALIFIER7 = 16'h0000; + parameter [15:0] ES_QUALIFIER8 = 16'h0000; + parameter [15:0] ES_QUALIFIER9 = 16'h0000; + parameter [15:0] ES_QUAL_MASK0 = 16'h0000; + parameter [15:0] ES_QUAL_MASK1 = 16'h0000; + parameter [15:0] ES_QUAL_MASK2 = 16'h0000; + parameter [15:0] ES_QUAL_MASK3 = 16'h0000; + parameter [15:0] ES_QUAL_MASK4 = 16'h0000; + parameter [15:0] ES_QUAL_MASK5 = 16'h0000; + parameter [15:0] ES_QUAL_MASK6 = 16'h0000; + parameter [15:0] ES_QUAL_MASK7 = 16'h0000; + parameter [15:0] ES_QUAL_MASK8 = 16'h0000; + parameter [15:0] ES_QUAL_MASK9 = 16'h0000; + parameter [15:0] ES_SDATA_MASK0 = 16'h0000; + parameter [15:0] ES_SDATA_MASK1 = 16'h0000; + parameter [15:0] ES_SDATA_MASK2 = 16'h0000; + parameter [15:0] ES_SDATA_MASK3 = 16'h0000; + parameter [15:0] ES_SDATA_MASK4 = 16'h0000; + parameter [15:0] ES_SDATA_MASK5 = 16'h0000; + parameter [15:0] ES_SDATA_MASK6 = 16'h0000; + parameter [15:0] ES_SDATA_MASK7 = 16'h0000; + parameter [15:0] ES_SDATA_MASK8 = 16'h0000; + parameter [15:0] ES_SDATA_MASK9 = 16'h0000; + parameter integer EYESCAN_VP_RANGE = 0; + parameter [0:0] EYE_SCAN_SWAP_EN = 1'b0; + parameter [3:0] FTS_DESKEW_SEQ_ENABLE = 4'b1111; + parameter [3:0] FTS_LANE_DESKEW_CFG = 4'b1111; + parameter FTS_LANE_DESKEW_EN = "FALSE"; + parameter [4:0] GEARBOX_MODE = 5'b00000; + parameter [0:0] ISCAN_CK_PH_SEL2 = 1'b0; + parameter [0:0] LOCAL_MASTER = 1'b0; + parameter integer LPBK_BIAS_CTRL = 4; + parameter [0:0] LPBK_EN_RCAL_B = 1'b0; + parameter [3:0] LPBK_EXT_RCAL = 4'b0000; + parameter integer LPBK_IND_CTRL0 = 5; + parameter integer LPBK_IND_CTRL1 = 5; + parameter integer LPBK_IND_CTRL2 = 5; + parameter integer LPBK_RG_CTRL = 2; + parameter [1:0] OOBDIVCTL = 2'b00; + parameter [0:0] OOB_PWRUP = 1'b0; + parameter PCI3_AUTO_REALIGN = "FRST_SMPL"; + parameter [0:0] PCI3_PIPE_RX_ELECIDLE = 1'b1; + parameter [1:0] PCI3_RX_ASYNC_EBUF_BYPASS = 2'b00; + parameter [0:0] PCI3_RX_ELECIDLE_EI2_ENABLE = 1'b0; + parameter [5:0] PCI3_RX_ELECIDLE_H2L_COUNT = 6'b000000; + parameter [2:0] PCI3_RX_ELECIDLE_H2L_DISABLE = 3'b000; + parameter [5:0] PCI3_RX_ELECIDLE_HI_COUNT = 6'b000000; + parameter [0:0] PCI3_RX_ELECIDLE_LP4_DISABLE = 1'b0; + parameter [0:0] PCI3_RX_FIFO_DISABLE = 1'b0; + parameter [4:0] PCIE3_CLK_COR_EMPTY_THRSH = 5'b00000; + parameter [5:0] PCIE3_CLK_COR_FULL_THRSH = 6'b010000; + parameter [4:0] PCIE3_CLK_COR_MAX_LAT = 5'b01000; + parameter [4:0] PCIE3_CLK_COR_MIN_LAT = 5'b00100; + parameter [5:0] PCIE3_CLK_COR_THRSH_TIMER = 6'b001000; + parameter PCIE_64B_DYN_CLKSW_DIS = "FALSE"; + parameter [15:0] PCIE_BUFG_DIV_CTRL = 16'h0000; + parameter PCIE_GEN4_64BIT_INT_EN = "FALSE"; + parameter [1:0] PCIE_PLL_SEL_MODE_GEN12 = 2'h0; + parameter [1:0] PCIE_PLL_SEL_MODE_GEN3 = 2'h0; + parameter [1:0] PCIE_PLL_SEL_MODE_GEN4 = 2'h0; + parameter [15:0] PCIE_RXPCS_CFG_GEN3 = 16'h0000; + parameter [15:0] PCIE_RXPMA_CFG = 16'h0000; + parameter [15:0] PCIE_TXPCS_CFG_GEN3 = 16'h0000; + parameter [15:0] PCIE_TXPMA_CFG = 16'h0000; + parameter PCS_PCIE_EN = "FALSE"; + parameter [15:0] PCS_RSVD0 = 16'h0000; + parameter [11:0] PD_TRANS_TIME_FROM_P2 = 12'h03C; + parameter [7:0] PD_TRANS_TIME_NONE_P2 = 8'h19; + parameter [7:0] PD_TRANS_TIME_TO_P2 = 8'h64; + parameter integer PREIQ_FREQ_BST = 0; + parameter [0:0] RATE_SW_USE_DRP = 1'b0; + parameter [0:0] RCLK_SIPO_DLY_ENB = 1'b0; + parameter [0:0] RCLK_SIPO_INV_EN = 1'b0; + parameter [2:0] RTX_BUF_CML_CTRL = 3'b010; + parameter [1:0] RTX_BUF_TERM_CTRL = 2'b00; + parameter [4:0] RXBUFRESET_TIME = 5'b00001; + parameter RXBUF_ADDR_MODE = "FULL"; + parameter [3:0] RXBUF_EIDLE_HI_CNT = 4'b1000; + parameter [3:0] RXBUF_EIDLE_LO_CNT = 4'b0000; + parameter RXBUF_EN = "TRUE"; + parameter RXBUF_RESET_ON_CB_CHANGE = "TRUE"; + parameter RXBUF_RESET_ON_COMMAALIGN = "FALSE"; + parameter RXBUF_RESET_ON_EIDLE = "FALSE"; + parameter RXBUF_RESET_ON_RATE_CHANGE = "TRUE"; + parameter integer RXBUF_THRESH_OVFLW = 0; + parameter RXBUF_THRESH_OVRD = "FALSE"; + parameter integer RXBUF_THRESH_UNDFLW = 4; + parameter [4:0] RXCDRFREQRESET_TIME = 5'b10000; + parameter [4:0] RXCDRPHRESET_TIME = 5'b00001; + parameter [15:0] RXCDR_CFG0 = 16'h0003; + parameter [15:0] RXCDR_CFG0_GEN3 = 16'h0003; + parameter [15:0] RXCDR_CFG1 = 16'h0000; + parameter [15:0] RXCDR_CFG1_GEN3 = 16'h0000; + parameter [15:0] RXCDR_CFG2 = 16'h0164; + parameter [9:0] RXCDR_CFG2_GEN2 = 10'h164; + parameter [15:0] RXCDR_CFG2_GEN3 = 16'h0034; + parameter [15:0] RXCDR_CFG2_GEN4 = 16'h0034; + parameter [15:0] RXCDR_CFG3 = 16'h0024; + parameter [5:0] RXCDR_CFG3_GEN2 = 6'h24; + parameter [15:0] RXCDR_CFG3_GEN3 = 16'h0024; + parameter [15:0] RXCDR_CFG3_GEN4 = 16'h0024; + parameter [15:0] RXCDR_CFG4 = 16'h5CF6; + parameter [15:0] RXCDR_CFG4_GEN3 = 16'h5CF6; + parameter [15:0] RXCDR_CFG5 = 16'hB46B; + parameter [15:0] RXCDR_CFG5_GEN3 = 16'h146B; + parameter [0:0] RXCDR_FR_RESET_ON_EIDLE = 1'b0; + parameter [0:0] RXCDR_HOLD_DURING_EIDLE = 1'b0; + parameter [15:0] RXCDR_LOCK_CFG0 = 16'h0040; + parameter [15:0] RXCDR_LOCK_CFG1 = 16'h8000; + parameter [15:0] RXCDR_LOCK_CFG2 = 16'h0000; + parameter [15:0] RXCDR_LOCK_CFG3 = 16'h0000; + parameter [15:0] RXCDR_LOCK_CFG4 = 16'h0000; + parameter [0:0] RXCDR_PH_RESET_ON_EIDLE = 1'b0; + parameter [15:0] RXCFOK_CFG0 = 16'h0000; + parameter [15:0] RXCFOK_CFG1 = 16'h0002; + parameter [15:0] RXCFOK_CFG2 = 16'h002D; + parameter [15:0] RXCKCAL1_IQ_LOOP_RST_CFG = 16'h0000; + parameter [15:0] RXCKCAL1_I_LOOP_RST_CFG = 16'h0000; + parameter [15:0] RXCKCAL1_Q_LOOP_RST_CFG = 16'h0000; + parameter [15:0] RXCKCAL2_DX_LOOP_RST_CFG = 16'h0000; + parameter [15:0] RXCKCAL2_D_LOOP_RST_CFG = 16'h0000; + parameter [15:0] RXCKCAL2_S_LOOP_RST_CFG = 16'h0000; + parameter [15:0] RXCKCAL2_X_LOOP_RST_CFG = 16'h0000; + parameter [6:0] RXDFELPMRESET_TIME = 7'b0001111; + parameter [15:0] RXDFELPM_KL_CFG0 = 16'h0000; + parameter [15:0] RXDFELPM_KL_CFG1 = 16'h0022; + parameter [15:0] RXDFELPM_KL_CFG2 = 16'h0100; + parameter [15:0] RXDFE_CFG0 = 16'h4000; + parameter [15:0] RXDFE_CFG1 = 16'h0000; + parameter [15:0] RXDFE_GC_CFG0 = 16'h0000; + parameter [15:0] RXDFE_GC_CFG1 = 16'h0000; + parameter [15:0] RXDFE_GC_CFG2 = 16'h0000; + parameter [15:0] RXDFE_H2_CFG0 = 16'h0000; + parameter [15:0] RXDFE_H2_CFG1 = 16'h0002; + parameter [15:0] RXDFE_H3_CFG0 = 16'h0000; + parameter [15:0] RXDFE_H3_CFG1 = 16'h0002; + parameter [15:0] RXDFE_H4_CFG0 = 16'h0000; + parameter [15:0] RXDFE_H4_CFG1 = 16'h0003; + parameter [15:0] RXDFE_H5_CFG0 = 16'h0000; + parameter [15:0] RXDFE_H5_CFG1 = 16'h0002; + parameter [15:0] RXDFE_H6_CFG0 = 16'h0000; + parameter [15:0] RXDFE_H6_CFG1 = 16'h0002; + parameter [15:0] RXDFE_H7_CFG0 = 16'h0000; + parameter [15:0] RXDFE_H7_CFG1 = 16'h0002; + parameter [15:0] RXDFE_H8_CFG0 = 16'h0000; + parameter [15:0] RXDFE_H8_CFG1 = 16'h0002; + parameter [15:0] RXDFE_H9_CFG0 = 16'h0000; + parameter [15:0] RXDFE_H9_CFG1 = 16'h0002; + parameter [15:0] RXDFE_HA_CFG0 = 16'h0000; + parameter [15:0] RXDFE_HA_CFG1 = 16'h0002; + parameter [15:0] RXDFE_HB_CFG0 = 16'h0000; + parameter [15:0] RXDFE_HB_CFG1 = 16'h0002; + parameter [15:0] RXDFE_HC_CFG0 = 16'h0000; + parameter [15:0] RXDFE_HC_CFG1 = 16'h0002; + parameter [15:0] RXDFE_HD_CFG0 = 16'h0000; + parameter [15:0] RXDFE_HD_CFG1 = 16'h0002; + parameter [15:0] RXDFE_HE_CFG0 = 16'h0000; + parameter [15:0] RXDFE_HE_CFG1 = 16'h0002; + parameter [15:0] RXDFE_HF_CFG0 = 16'h0000; + parameter [15:0] RXDFE_HF_CFG1 = 16'h0002; + parameter [15:0] RXDFE_KH_CFG0 = 16'h0000; + parameter [15:0] RXDFE_KH_CFG1 = 16'h0000; + parameter [15:0] RXDFE_KH_CFG2 = 16'h0000; + parameter [15:0] RXDFE_KH_CFG3 = 16'h2000; + parameter [15:0] RXDFE_OS_CFG0 = 16'h0000; + parameter [15:0] RXDFE_OS_CFG1 = 16'h0000; + parameter [15:0] RXDFE_UT_CFG0 = 16'h0000; + parameter [15:0] RXDFE_UT_CFG1 = 16'h0002; + parameter [15:0] RXDFE_UT_CFG2 = 16'h0000; + parameter [15:0] RXDFE_VP_CFG0 = 16'h0000; + parameter [15:0] RXDFE_VP_CFG1 = 16'h0022; + parameter [15:0] RXDLY_CFG = 16'h0010; + parameter [15:0] RXDLY_LCFG = 16'h0030; + parameter RXELECIDLE_CFG = "SIGCFG_4"; + parameter integer RXGBOX_FIFO_INIT_RD_ADDR = 4; + parameter RXGEARBOX_EN = "FALSE"; + parameter [4:0] RXISCANRESET_TIME = 5'b00001; + parameter [15:0] RXLPM_CFG = 16'h0000; + parameter [15:0] RXLPM_GC_CFG = 16'h1000; + parameter [15:0] RXLPM_KH_CFG0 = 16'h0000; + parameter [15:0] RXLPM_KH_CFG1 = 16'h0002; + parameter [15:0] RXLPM_OS_CFG0 = 16'h0000; + parameter [15:0] RXLPM_OS_CFG1 = 16'h0000; + parameter [8:0] RXOOB_CFG = 9'b000110000; + parameter RXOOB_CLK_CFG = "PMA"; + parameter [4:0] RXOSCALRESET_TIME = 5'b00011; + parameter integer RXOUT_DIV = 4; + parameter [4:0] RXPCSRESET_TIME = 5'b00001; + parameter [15:0] RXPHBEACON_CFG = 16'h0000; + parameter [15:0] RXPHDLY_CFG = 16'h2020; + parameter [15:0] RXPHSAMP_CFG = 16'h2100; + parameter [15:0] RXPHSLIP_CFG = 16'h9933; + parameter [4:0] RXPH_MONITOR_SEL = 5'b00000; + parameter [15:0] RXPI_CFG0 = 16'h0102; + parameter [15:0] RXPI_CFG1 = 16'b0000000001010100; + parameter RXPMACLK_SEL = "DATA"; + parameter [4:0] RXPMARESET_TIME = 5'b00001; + parameter [0:0] RXPRBS_ERR_LOOPBACK = 1'b0; + parameter integer RXPRBS_LINKACQ_CNT = 15; + parameter [0:0] RXREFCLKDIV2_SEL = 1'b0; + parameter integer RXSLIDE_AUTO_WAIT = 7; + parameter RXSLIDE_MODE = "OFF"; + parameter [0:0] RXSYNC_MULTILANE = 1'b0; + parameter [0:0] RXSYNC_OVRD = 1'b0; + parameter [0:0] RXSYNC_SKIP_DA = 1'b0; + parameter [0:0] RX_AFE_CM_EN = 1'b0; + parameter [15:0] RX_BIAS_CFG0 = 16'h12B0; + parameter [5:0] RX_BUFFER_CFG = 6'b000000; + parameter [0:0] RX_CAPFF_SARC_ENB = 1'b0; + parameter integer RX_CLK25_DIV = 8; + parameter [0:0] RX_CLKMUX_EN = 1'b1; + parameter [4:0] RX_CLK_SLIP_OVRD = 5'b00000; + parameter [3:0] RX_CM_BUF_CFG = 4'b1010; + parameter [0:0] RX_CM_BUF_PD = 1'b0; + parameter integer RX_CM_SEL = 2; + parameter integer RX_CM_TRIM = 12; + parameter [0:0] RX_CTLE_PWR_SAVING = 1'b0; + parameter [3:0] RX_CTLE_RES_CTRL = 4'b0000; + parameter integer RX_DATA_WIDTH = 20; + parameter [5:0] RX_DDI_SEL = 6'b000000; + parameter RX_DEFER_RESET_BUF_EN = "TRUE"; + parameter [2:0] RX_DEGEN_CTRL = 3'b100; + parameter integer RX_DFELPM_CFG0 = 10; + parameter [0:0] RX_DFELPM_CFG1 = 1'b1; + parameter [0:0] RX_DFELPM_KLKH_AGC_STUP_EN = 1'b1; + parameter integer RX_DFE_AGC_CFG1 = 4; + parameter integer RX_DFE_KL_LPM_KH_CFG0 = 1; + parameter integer RX_DFE_KL_LPM_KH_CFG1 = 2; + parameter [1:0] RX_DFE_KL_LPM_KL_CFG0 = 2'b01; + parameter integer RX_DFE_KL_LPM_KL_CFG1 = 4; + parameter [0:0] RX_DFE_LPM_HOLD_DURING_EIDLE = 1'b0; + parameter RX_DISPERR_SEQ_MATCH = "TRUE"; + parameter [4:0] RX_DIVRESET_TIME = 5'b00001; + parameter [0:0] RX_EN_CTLE_RCAL_B = 1'b0; + parameter integer RX_EN_SUM_RCAL_B = 0; + parameter [6:0] RX_EYESCAN_VS_CODE = 7'b0000000; + parameter [0:0] RX_EYESCAN_VS_NEG_DIR = 1'b0; + parameter [1:0] RX_EYESCAN_VS_RANGE = 2'b10; + parameter [0:0] RX_EYESCAN_VS_UT_SIGN = 1'b0; + parameter [0:0] RX_FABINT_USRCLK_FLOP = 1'b0; + parameter [0:0] RX_I2V_FILTER_EN = 1'b1; + parameter integer RX_INT_DATAWIDTH = 1; + parameter [0:0] RX_PMA_POWER_SAVE = 1'b0; + parameter [15:0] RX_PMA_RSV0 = 16'h002F; + parameter real RX_PROGDIV_CFG = 0.0; + parameter [15:0] RX_PROGDIV_RATE = 16'h0001; + parameter [3:0] RX_RESLOAD_CTRL = 4'b0000; + parameter [0:0] RX_RESLOAD_OVRD = 1'b0; + parameter [2:0] RX_SAMPLE_PERIOD = 3'b101; + parameter integer RX_SIG_VALID_DLY = 11; + parameter integer RX_SUM_DEGEN_AVTT_OVERITE = 0; + parameter [0:0] RX_SUM_DFETAPREP_EN = 1'b0; + parameter [3:0] RX_SUM_IREF_TUNE = 4'b0000; + parameter integer RX_SUM_PWR_SAVING = 0; + parameter [3:0] RX_SUM_RES_CTRL = 4'b0000; + parameter [3:0] RX_SUM_VCMTUNE = 4'b0011; + parameter [0:0] RX_SUM_VCM_BIAS_TUNE_EN = 1'b1; + parameter [0:0] RX_SUM_VCM_OVWR = 1'b0; + parameter [2:0] RX_SUM_VREF_TUNE = 3'b100; + parameter [1:0] RX_TUNE_AFE_OS = 2'b00; + parameter [2:0] RX_VREG_CTRL = 3'b010; + parameter [0:0] RX_VREG_PDB = 1'b1; + parameter [1:0] RX_WIDEMODE_CDR = 2'b01; + parameter [1:0] RX_WIDEMODE_CDR_GEN3 = 2'b01; + parameter [1:0] RX_WIDEMODE_CDR_GEN4 = 2'b01; + parameter RX_XCLK_SEL = "RXDES"; + parameter [0:0] RX_XMODE_SEL = 1'b0; + parameter [0:0] SAMPLE_CLK_PHASE = 1'b0; + parameter [0:0] SAS_12G_MODE = 1'b0; + parameter [3:0] SATA_BURST_SEQ_LEN = 4'b1111; + parameter [2:0] SATA_BURST_VAL = 3'b100; + parameter SATA_CPLL_CFG = "VCO_3000MHZ"; + parameter [2:0] SATA_EIDLE_VAL = 3'b100; + parameter SHOW_REALIGN_COMMA = "TRUE"; + parameter SIM_DEVICE = "ULTRASCALE_PLUS"; + parameter SIM_MODE = "FAST"; + parameter SIM_RECEIVER_DETECT_PASS = "TRUE"; + parameter SIM_RESET_SPEEDUP = "TRUE"; + parameter SIM_TX_EIDLE_DRIVE_LEVEL = "Z"; + parameter [0:0] SRSTMODE = 1'b0; + parameter [1:0] TAPDLY_SET_TX = 2'h0; + parameter [14:0] TERM_RCAL_CFG = 15'b100001000010000; + parameter [2:0] TERM_RCAL_OVRD = 3'b000; + parameter [7:0] TRANS_TIME_RATE = 8'h0E; + parameter [7:0] TST_RSV0 = 8'h00; + parameter [7:0] TST_RSV1 = 8'h00; + parameter TXBUF_EN = "TRUE"; + parameter TXBUF_RESET_ON_RATE_CHANGE = "FALSE"; + parameter [15:0] TXDLY_CFG = 16'h0010; + parameter [15:0] TXDLY_LCFG = 16'h0030; + parameter integer TXDRV_FREQBAND = 0; + parameter [15:0] TXFE_CFG0 = 16'b0000000000000000; + parameter [15:0] TXFE_CFG1 = 16'b0000000000000000; + parameter [15:0] TXFE_CFG2 = 16'b0000000000000000; + parameter [15:0] TXFE_CFG3 = 16'b0000000000000000; + parameter TXFIFO_ADDR_CFG = "LOW"; + parameter integer TXGBOX_FIFO_INIT_RD_ADDR = 4; + parameter TXGEARBOX_EN = "FALSE"; + parameter integer TXOUT_DIV = 4; + parameter [4:0] TXPCSRESET_TIME = 5'b00001; + parameter [15:0] TXPHDLY_CFG0 = 16'h6020; + parameter [15:0] TXPHDLY_CFG1 = 16'h0002; + parameter [15:0] TXPH_CFG = 16'h0123; + parameter [15:0] TXPH_CFG2 = 16'h0000; + parameter [4:0] TXPH_MONITOR_SEL = 5'b00000; + parameter [15:0] TXPI_CFG0 = 16'b0000000100000000; + parameter [15:0] TXPI_CFG1 = 16'b0000000000000000; + parameter [0:0] TXPI_GRAY_SEL = 1'b0; + parameter [0:0] TXPI_INVSTROBE_SEL = 1'b0; + parameter [0:0] TXPI_PPM = 1'b0; + parameter [7:0] TXPI_PPM_CFG = 8'b00000000; + parameter [2:0] TXPI_SYNFREQ_PPM = 3'b000; + parameter [4:0] TXPMARESET_TIME = 5'b00001; + parameter [0:0] TXREFCLKDIV2_SEL = 1'b0; + parameter integer TXSWBST_BST = 1; + parameter integer TXSWBST_EN = 0; + parameter integer TXSWBST_MAG = 6; + parameter [0:0] TXSYNC_MULTILANE = 1'b0; + parameter [0:0] TXSYNC_OVRD = 1'b0; + parameter [0:0] TXSYNC_SKIP_DA = 1'b0; + parameter integer TX_CLK25_DIV = 8; + parameter [0:0] TX_CLKMUX_EN = 1'b1; + parameter integer TX_DATA_WIDTH = 20; + parameter [15:0] TX_DCC_LOOP_RST_CFG = 16'h0000; + parameter [5:0] TX_DEEMPH0 = 6'b000000; + parameter [5:0] TX_DEEMPH1 = 6'b000000; + parameter [5:0] TX_DEEMPH2 = 6'b000000; + parameter [5:0] TX_DEEMPH3 = 6'b000000; + parameter [4:0] TX_DIVRESET_TIME = 5'b00001; + parameter TX_DRIVE_MODE = "DIRECT"; + parameter [2:0] TX_EIDLE_ASSERT_DELAY = 3'b110; + parameter [2:0] TX_EIDLE_DEASSERT_DELAY = 3'b100; + parameter [0:0] TX_FABINT_USRCLK_FLOP = 1'b0; + parameter [0:0] TX_FIFO_BYP_EN = 1'b0; + parameter [0:0] TX_IDLE_DATA_ZERO = 1'b0; + parameter integer TX_INT_DATAWIDTH = 1; + parameter TX_LOOPBACK_DRIVE_HIZ = "FALSE"; + parameter [0:0] TX_MAINCURSOR_SEL = 1'b0; + parameter [6:0] TX_MARGIN_FULL_0 = 7'b1001110; + parameter [6:0] TX_MARGIN_FULL_1 = 7'b1001001; + parameter [6:0] TX_MARGIN_FULL_2 = 7'b1000101; + parameter [6:0] TX_MARGIN_FULL_3 = 7'b1000010; + parameter [6:0] TX_MARGIN_FULL_4 = 7'b1000000; + parameter [6:0] TX_MARGIN_LOW_0 = 7'b1000110; + parameter [6:0] TX_MARGIN_LOW_1 = 7'b1000100; + parameter [6:0] TX_MARGIN_LOW_2 = 7'b1000010; + parameter [6:0] TX_MARGIN_LOW_3 = 7'b1000000; + parameter [6:0] TX_MARGIN_LOW_4 = 7'b1000000; + parameter [15:0] TX_PHICAL_CFG0 = 16'h0000; + parameter [15:0] TX_PHICAL_CFG1 = 16'h003F; + parameter integer TX_PI_BIASSET = 0; + parameter [0:0] TX_PMADATA_OPT = 1'b0; + parameter [0:0] TX_PMA_POWER_SAVE = 1'b0; + parameter [15:0] TX_PMA_RSV0 = 16'h0000; + parameter [15:0] TX_PMA_RSV1 = 16'h0000; + parameter TX_PROGCLK_SEL = "POSTPI"; + parameter real TX_PROGDIV_CFG = 0.0; + parameter [15:0] TX_PROGDIV_RATE = 16'h0001; + parameter [13:0] TX_RXDETECT_CFG = 14'h0032; + parameter integer TX_RXDETECT_REF = 3; + parameter [2:0] TX_SAMPLE_PERIOD = 3'b101; + parameter [1:0] TX_SW_MEAS = 2'b00; + parameter [2:0] TX_VREG_CTRL = 3'b000; + parameter [0:0] TX_VREG_PDB = 1'b0; + parameter [1:0] TX_VREG_VREFSEL = 2'b00; + parameter TX_XCLK_SEL = "TXOUT"; + parameter [0:0] USB_BOTH_BURST_IDLE = 1'b0; + parameter [6:0] USB_BURSTMAX_U3WAKE = 7'b1111111; + parameter [6:0] USB_BURSTMIN_U3WAKE = 7'b1100011; + parameter [0:0] USB_CLK_COR_EQ_EN = 1'b0; + parameter [0:0] USB_EXT_CNTL = 1'b1; + parameter [9:0] USB_IDLEMAX_POLLING = 10'b1010111011; + parameter [9:0] USB_IDLEMIN_POLLING = 10'b0100101011; + parameter [8:0] USB_LFPSPING_BURST = 9'b000000101; + parameter [8:0] USB_LFPSPOLLING_BURST = 9'b000110001; + parameter [8:0] USB_LFPSPOLLING_IDLE_MS = 9'b000000100; + parameter [8:0] USB_LFPSU1EXIT_BURST = 9'b000011101; + parameter [8:0] USB_LFPSU2LPEXIT_BURST_MS = 9'b001100011; + parameter [8:0] USB_LFPSU3WAKE_BURST_MS = 9'b111110011; + parameter [3:0] USB_LFPS_TPERIOD = 4'b0011; + parameter [0:0] USB_LFPS_TPERIOD_ACCURATE = 1'b1; + parameter [0:0] USB_MODE = 1'b0; + parameter [0:0] USB_PCIE_ERR_REP_DIS = 1'b0; + parameter integer USB_PING_SATA_MAX_INIT = 21; + parameter integer USB_PING_SATA_MIN_INIT = 12; + parameter integer USB_POLL_SATA_MAX_BURST = 8; + parameter integer USB_POLL_SATA_MIN_BURST = 4; + parameter [0:0] USB_RAW_ELEC = 1'b0; + parameter [0:0] USB_RXIDLE_P0_CTRL = 1'b1; + parameter [0:0] USB_TXIDLE_TUNE_ENABLE = 1'b1; + parameter integer USB_U1_SATA_MAX_WAKE = 7; + parameter integer USB_U1_SATA_MIN_WAKE = 4; + parameter integer USB_U2_SAS_MAX_COM = 64; + parameter integer USB_U2_SAS_MIN_COM = 36; + parameter [0:0] USE_PCS_CLK_PHASE_SEL = 1'b0; + parameter [0:0] Y_ALL_MODE = 1'b0; + output BUFGTCE; + output [2:0] BUFGTCEMASK; + output [8:0] BUFGTDIV; + output BUFGTRESET; + output [2:0] BUFGTRSTMASK; + output CPLLFBCLKLOST; + output CPLLLOCK; + output CPLLREFCLKLOST; + output [15:0] DMONITOROUT; + output DMONITOROUTCLK; + output [15:0] DRPDO; + output DRPRDY; + output EYESCANDATAERROR; + output GTPOWERGOOD; + output GTREFCLKMONITOR; + output GTYTXN; + output GTYTXP; + output PCIERATEGEN3; + output PCIERATEIDLE; + output [1:0] PCIERATEQPLLPD; + output [1:0] PCIERATEQPLLRESET; + output PCIESYNCTXSYNCDONE; + output PCIEUSERGEN3RDY; + output PCIEUSERPHYSTATUSRST; + output PCIEUSERRATESTART; + output [15:0] PCSRSVDOUT; + output PHYSTATUS; + output [15:0] PINRSRVDAS; + output POWERPRESENT; + output RESETEXCEPTION; + output [2:0] RXBUFSTATUS; + output RXBYTEISALIGNED; + output RXBYTEREALIGN; + output RXCDRLOCK; + output RXCDRPHDONE; + output RXCHANBONDSEQ; + output RXCHANISALIGNED; + output RXCHANREALIGN; + output [4:0] RXCHBONDO; + output RXCKCALDONE; + output [1:0] RXCLKCORCNT; + output RXCOMINITDET; + output RXCOMMADET; + output RXCOMSASDET; + output RXCOMWAKEDET; + output [15:0] RXCTRL0; + output [15:0] RXCTRL1; + output [7:0] RXCTRL2; + output [7:0] RXCTRL3; + output [127:0] RXDATA; + output [7:0] RXDATAEXTENDRSVD; + output [1:0] RXDATAVALID; + output RXDLYSRESETDONE; + output RXELECIDLE; + output [5:0] RXHEADER; + output [1:0] RXHEADERVALID; + output RXLFPSTRESETDET; + output RXLFPSU2LPEXITDET; + output RXLFPSU3WAKEDET; + output [7:0] RXMONITOROUT; + output RXOSINTDONE; + output RXOSINTSTARTED; + output RXOSINTSTROBEDONE; + output RXOSINTSTROBESTARTED; + output RXOUTCLK; + output RXOUTCLKFABRIC; + output RXOUTCLKPCS; + output RXPHALIGNDONE; + output RXPHALIGNERR; + output RXPMARESETDONE; + output RXPRBSERR; + output RXPRBSLOCKED; + output RXPRGDIVRESETDONE; + output RXRATEDONE; + output RXRECCLKOUT; + output RXRESETDONE; + output RXSLIDERDY; + output RXSLIPDONE; + output RXSLIPOUTCLKRDY; + output RXSLIPPMARDY; + output [1:0] RXSTARTOFSEQ; + output [2:0] RXSTATUS; + output RXSYNCDONE; + output RXSYNCOUT; + output RXVALID; + output [1:0] TXBUFSTATUS; + output TXCOMFINISH; + output TXDCCDONE; + output TXDLYSRESETDONE; + output TXOUTCLK; + output TXOUTCLKFABRIC; + output TXOUTCLKPCS; + output TXPHALIGNDONE; + output TXPHINITDONE; + output TXPMARESETDONE; + output TXPRGDIVRESETDONE; + output TXRATEDONE; + output TXRESETDONE; + output TXSYNCDONE; + output TXSYNCOUT; + input CDRSTEPDIR; + input CDRSTEPSQ; + input CDRSTEPSX; + input CFGRESET; + input CLKRSVD0; + input CLKRSVD1; + input CPLLFREQLOCK; + input CPLLLOCKDETCLK; + input CPLLLOCKEN; + input CPLLPD; + input [2:0] CPLLREFCLKSEL; + input CPLLRESET; + input DMONFIFORESET; + input DMONITORCLK; + input [9:0] DRPADDR; + input DRPCLK; + input [15:0] DRPDI; + input DRPEN; + input DRPRST; + input DRPWE; + input EYESCANRESET; + input EYESCANTRIGGER; + input FREQOS; + input GTGREFCLK; + input GTNORTHREFCLK0; + input GTNORTHREFCLK1; + input GTREFCLK0; + input GTREFCLK1; + input [15:0] GTRSVD; + input GTRXRESET; + input GTRXRESETSEL; + input GTSOUTHREFCLK0; + input GTSOUTHREFCLK1; + input GTTXRESET; + input GTTXRESETSEL; + input GTYRXN; + input GTYRXP; + input INCPCTRL; + input [2:0] LOOPBACK; + input PCIEEQRXEQADAPTDONE; + input PCIERSTIDLE; + input PCIERSTTXSYNCSTART; + input PCIEUSERRATEDONE; + input [15:0] PCSRSVDIN; + input QPLL0CLK; + input QPLL0FREQLOCK; + input QPLL0REFCLK; + input QPLL1CLK; + input QPLL1FREQLOCK; + input QPLL1REFCLK; + input RESETOVRD; + input RX8B10BEN; + input RXAFECFOKEN; + input RXBUFRESET; + input RXCDRFREQRESET; + input RXCDRHOLD; + input RXCDROVRDEN; + input RXCDRRESET; + input RXCHBONDEN; + input [4:0] RXCHBONDI; + input [2:0] RXCHBONDLEVEL; + input RXCHBONDMASTER; + input RXCHBONDSLAVE; + input RXCKCALRESET; + input [6:0] RXCKCALSTART; + input RXCOMMADETEN; + input RXDFEAGCHOLD; + input RXDFEAGCOVRDEN; + input [3:0] RXDFECFOKFCNUM; + input RXDFECFOKFEN; + input RXDFECFOKFPULSE; + input RXDFECFOKHOLD; + input RXDFECFOKOVREN; + input RXDFEKHHOLD; + input RXDFEKHOVRDEN; + input RXDFELFHOLD; + input RXDFELFOVRDEN; + input RXDFELPMRESET; + input RXDFETAP10HOLD; + input RXDFETAP10OVRDEN; + input RXDFETAP11HOLD; + input RXDFETAP11OVRDEN; + input RXDFETAP12HOLD; + input RXDFETAP12OVRDEN; + input RXDFETAP13HOLD; + input RXDFETAP13OVRDEN; + input RXDFETAP14HOLD; + input RXDFETAP14OVRDEN; + input RXDFETAP15HOLD; + input RXDFETAP15OVRDEN; + input RXDFETAP2HOLD; + input RXDFETAP2OVRDEN; + input RXDFETAP3HOLD; + input RXDFETAP3OVRDEN; + input RXDFETAP4HOLD; + input RXDFETAP4OVRDEN; + input RXDFETAP5HOLD; + input RXDFETAP5OVRDEN; + input RXDFETAP6HOLD; + input RXDFETAP6OVRDEN; + input RXDFETAP7HOLD; + input RXDFETAP7OVRDEN; + input RXDFETAP8HOLD; + input RXDFETAP8OVRDEN; + input RXDFETAP9HOLD; + input RXDFETAP9OVRDEN; + input RXDFEUTHOLD; + input RXDFEUTOVRDEN; + input RXDFEVPHOLD; + input RXDFEVPOVRDEN; + input RXDFEXYDEN; + input RXDLYBYPASS; + input RXDLYEN; + input RXDLYOVRDEN; + input RXDLYSRESET; + input [1:0] RXELECIDLEMODE; + input RXEQTRAINING; + input RXGEARBOXSLIP; + input RXLATCLK; + input RXLPMEN; + input RXLPMGCHOLD; + input RXLPMGCOVRDEN; + input RXLPMHFHOLD; + input RXLPMHFOVRDEN; + input RXLPMLFHOLD; + input RXLPMLFKLOVRDEN; + input RXLPMOSHOLD; + input RXLPMOSOVRDEN; + input RXMCOMMAALIGNEN; + input [1:0] RXMONITORSEL; + input RXOOBRESET; + input RXOSCALRESET; + input RXOSHOLD; + input RXOSOVRDEN; + input [2:0] RXOUTCLKSEL; + input RXPCOMMAALIGNEN; + input RXPCSRESET; + input [1:0] RXPD; + input RXPHALIGN; + input RXPHALIGNEN; + input RXPHDLYPD; + input RXPHDLYRESET; + input [1:0] RXPLLCLKSEL; + input RXPMARESET; + input RXPOLARITY; + input RXPRBSCNTRESET; + input [3:0] RXPRBSSEL; + input RXPROGDIVRESET; + input [2:0] RXRATE; + input RXRATEMODE; + input RXSLIDE; + input RXSLIPOUTCLK; + input RXSLIPPMA; + input RXSYNCALLIN; + input RXSYNCIN; + input RXSYNCMODE; + input [1:0] RXSYSCLKSEL; + input RXTERMINATION; + input RXUSERRDY; + input RXUSRCLK; + input RXUSRCLK2; + input SIGVALIDCLK; + input [19:0] TSTIN; + input [7:0] TX8B10BBYPASS; + input TX8B10BEN; + input TXCOMINIT; + input TXCOMSAS; + input TXCOMWAKE; + input [15:0] TXCTRL0; + input [15:0] TXCTRL1; + input [7:0] TXCTRL2; + input [127:0] TXDATA; + input [7:0] TXDATAEXTENDRSVD; + input TXDCCFORCESTART; + input TXDCCRESET; + input [1:0] TXDEEMPH; + input TXDETECTRX; + input [4:0] TXDIFFCTRL; + input TXDLYBYPASS; + input TXDLYEN; + input TXDLYHOLD; + input TXDLYOVRDEN; + input TXDLYSRESET; + input TXDLYUPDOWN; + input TXELECIDLE; + input [5:0] TXHEADER; + input TXINHIBIT; + input TXLATCLK; + input TXLFPSTRESET; + input TXLFPSU2LPEXIT; + input TXLFPSU3WAKE; + input [6:0] TXMAINCURSOR; + input [2:0] TXMARGIN; + input TXMUXDCDEXHOLD; + input TXMUXDCDORWREN; + input TXONESZEROS; + input [2:0] TXOUTCLKSEL; + input TXPCSRESET; + input [1:0] TXPD; + input TXPDELECIDLEMODE; + input TXPHALIGN; + input TXPHALIGNEN; + input TXPHDLYPD; + input TXPHDLYRESET; + input TXPHDLYTSTCLK; + input TXPHINIT; + input TXPHOVRDEN; + input TXPIPPMEN; + input TXPIPPMOVRDEN; + input TXPIPPMPD; + input TXPIPPMSEL; + input [4:0] TXPIPPMSTEPSIZE; + input TXPISOPD; + input [1:0] TXPLLCLKSEL; + input TXPMARESET; + input TXPOLARITY; + input [4:0] TXPOSTCURSOR; + input TXPRBSFORCEERR; + input [3:0] TXPRBSSEL; + input [4:0] TXPRECURSOR; + input TXPROGDIVRESET; + input [2:0] TXRATE; + input TXRATEMODE; + input [6:0] TXSEQUENCE; + input TXSWING; + input TXSYNCALLIN; + input TXSYNCIN; + input TXSYNCMODE; + input [1:0] TXSYSCLKSEL; + input TXUSERRDY; + input TXUSRCLK; + input TXUSRCLK2; +endmodule + +module GTYE4_COMMON (...); + parameter [0:0] AEN_QPLL0_FBDIV = 1'b1; + parameter [0:0] AEN_QPLL1_FBDIV = 1'b1; + parameter [0:0] AEN_SDM0TOGGLE = 1'b0; + parameter [0:0] AEN_SDM1TOGGLE = 1'b0; + parameter [0:0] A_SDM0TOGGLE = 1'b0; + parameter [8:0] A_SDM1DATA_HIGH = 9'b000000000; + parameter [15:0] A_SDM1DATA_LOW = 16'b0000000000000000; + parameter [0:0] A_SDM1TOGGLE = 1'b0; + parameter [15:0] BIAS_CFG0 = 16'h0000; + parameter [15:0] BIAS_CFG1 = 16'h0000; + parameter [15:0] BIAS_CFG2 = 16'h0000; + parameter [15:0] BIAS_CFG3 = 16'h0000; + parameter [15:0] BIAS_CFG4 = 16'h0000; + parameter [15:0] BIAS_CFG_RSVD = 16'h0000; + parameter [15:0] COMMON_CFG0 = 16'h0000; + parameter [15:0] COMMON_CFG1 = 16'h0000; + parameter [15:0] POR_CFG = 16'h0000; + parameter [15:0] PPF0_CFG = 16'h0F00; + parameter [15:0] PPF1_CFG = 16'h0F00; + parameter QPLL0CLKOUT_RATE = "FULL"; + parameter [15:0] QPLL0_CFG0 = 16'h391C; + parameter [15:0] QPLL0_CFG1 = 16'h0000; + parameter [15:0] QPLL0_CFG1_G3 = 16'h0020; + parameter [15:0] QPLL0_CFG2 = 16'h0F80; + parameter [15:0] QPLL0_CFG2_G3 = 16'h0F80; + parameter [15:0] QPLL0_CFG3 = 16'h0120; + parameter [15:0] QPLL0_CFG4 = 16'h0002; + parameter [9:0] QPLL0_CP = 10'b0000011111; + parameter [9:0] QPLL0_CP_G3 = 10'b0000011111; + parameter integer QPLL0_FBDIV = 66; + parameter integer QPLL0_FBDIV_G3 = 80; + parameter [15:0] QPLL0_INIT_CFG0 = 16'h0000; + parameter [7:0] QPLL0_INIT_CFG1 = 8'h00; + parameter [15:0] QPLL0_LOCK_CFG = 16'h01E8; + parameter [15:0] QPLL0_LOCK_CFG_G3 = 16'h21E8; + parameter [9:0] QPLL0_LPF = 10'b1011111111; + parameter [9:0] QPLL0_LPF_G3 = 10'b1111111111; + parameter [0:0] QPLL0_PCI_EN = 1'b0; + parameter [0:0] QPLL0_RATE_SW_USE_DRP = 1'b0; + parameter integer QPLL0_REFCLK_DIV = 1; + parameter [15:0] QPLL0_SDM_CFG0 = 16'h0040; + parameter [15:0] QPLL0_SDM_CFG1 = 16'h0000; + parameter [15:0] QPLL0_SDM_CFG2 = 16'h0000; + parameter QPLL1CLKOUT_RATE = "FULL"; + parameter [15:0] QPLL1_CFG0 = 16'h691C; + parameter [15:0] QPLL1_CFG1 = 16'h0020; + parameter [15:0] QPLL1_CFG1_G3 = 16'h0020; + parameter [15:0] QPLL1_CFG2 = 16'h0F80; + parameter [15:0] QPLL1_CFG2_G3 = 16'h0F80; + parameter [15:0] QPLL1_CFG3 = 16'h0120; + parameter [15:0] QPLL1_CFG4 = 16'h0002; + parameter [9:0] QPLL1_CP = 10'b0000011111; + parameter [9:0] QPLL1_CP_G3 = 10'b0000011111; + parameter integer QPLL1_FBDIV = 66; + parameter integer QPLL1_FBDIV_G3 = 80; + parameter [15:0] QPLL1_INIT_CFG0 = 16'h0000; + parameter [7:0] QPLL1_INIT_CFG1 = 8'h00; + parameter [15:0] QPLL1_LOCK_CFG = 16'h01E8; + parameter [15:0] QPLL1_LOCK_CFG_G3 = 16'h21E8; + parameter [9:0] QPLL1_LPF = 10'b1011111111; + parameter [9:0] QPLL1_LPF_G3 = 10'b1111111111; + parameter [0:0] QPLL1_PCI_EN = 1'b0; + parameter [0:0] QPLL1_RATE_SW_USE_DRP = 1'b0; + parameter integer QPLL1_REFCLK_DIV = 1; + parameter [15:0] QPLL1_SDM_CFG0 = 16'h0000; + parameter [15:0] QPLL1_SDM_CFG1 = 16'h0000; + parameter [15:0] QPLL1_SDM_CFG2 = 16'h0000; + parameter [15:0] RSVD_ATTR0 = 16'h0000; + parameter [15:0] RSVD_ATTR1 = 16'h0000; + parameter [15:0] RSVD_ATTR2 = 16'h0000; + parameter [15:0] RSVD_ATTR3 = 16'h0000; + parameter [1:0] RXRECCLKOUT0_SEL = 2'b00; + parameter [1:0] RXRECCLKOUT1_SEL = 2'b00; + parameter [0:0] SARC_ENB = 1'b0; + parameter [0:0] SARC_SEL = 1'b0; + parameter [15:0] SDM0INITSEED0_0 = 16'b0000000000000000; + parameter [8:0] SDM0INITSEED0_1 = 9'b000000000; + parameter [15:0] SDM1INITSEED0_0 = 16'b0000000000000000; + parameter [8:0] SDM1INITSEED0_1 = 9'b000000000; + parameter SIM_DEVICE = "ULTRASCALE_PLUS"; + parameter SIM_MODE = "FAST"; + parameter SIM_RESET_SPEEDUP = "TRUE"; + parameter [15:0] UB_CFG0 = 16'h0000; + parameter [15:0] UB_CFG1 = 16'h0000; + parameter [15:0] UB_CFG2 = 16'h0000; + parameter [15:0] UB_CFG3 = 16'h0000; + parameter [15:0] UB_CFG4 = 16'h0000; + parameter [15:0] UB_CFG5 = 16'h0400; + parameter [15:0] UB_CFG6 = 16'h0000; + output [15:0] DRPDO; + output DRPRDY; + output [7:0] PMARSVDOUT0; + output [7:0] PMARSVDOUT1; + output QPLL0FBCLKLOST; + output QPLL0LOCK; + output QPLL0OUTCLK; + output QPLL0OUTREFCLK; + output QPLL0REFCLKLOST; + output QPLL1FBCLKLOST; + output QPLL1LOCK; + output QPLL1OUTCLK; + output QPLL1OUTREFCLK; + output QPLL1REFCLKLOST; + output [7:0] QPLLDMONITOR0; + output [7:0] QPLLDMONITOR1; + output REFCLKOUTMONITOR0; + output REFCLKOUTMONITOR1; + output [1:0] RXRECCLK0SEL; + output [1:0] RXRECCLK1SEL; + output [3:0] SDM0FINALOUT; + output [14:0] SDM0TESTDATA; + output [3:0] SDM1FINALOUT; + output [14:0] SDM1TESTDATA; + output [15:0] UBDADDR; + output UBDEN; + output [15:0] UBDI; + output UBDWE; + output UBMDMTDO; + output UBRSVDOUT; + output UBTXUART; + input BGBYPASSB; + input BGMONITORENB; + input BGPDB; + input [4:0] BGRCALOVRD; + input BGRCALOVRDENB; + input [15:0] DRPADDR; + input DRPCLK; + input [15:0] DRPDI; + input DRPEN; + input DRPWE; + input GTGREFCLK0; + input GTGREFCLK1; + input GTNORTHREFCLK00; + input GTNORTHREFCLK01; + input GTNORTHREFCLK10; + input GTNORTHREFCLK11; + input GTREFCLK00; + input GTREFCLK01; + input GTREFCLK10; + input GTREFCLK11; + input GTSOUTHREFCLK00; + input GTSOUTHREFCLK01; + input GTSOUTHREFCLK10; + input GTSOUTHREFCLK11; + input [2:0] PCIERATEQPLL0; + input [2:0] PCIERATEQPLL1; + input [7:0] PMARSVD0; + input [7:0] PMARSVD1; + input QPLL0CLKRSVD0; + input QPLL0CLKRSVD1; + input [7:0] QPLL0FBDIV; + input QPLL0LOCKDETCLK; + input QPLL0LOCKEN; + input QPLL0PD; + input [2:0] QPLL0REFCLKSEL; + input QPLL0RESET; + input QPLL1CLKRSVD0; + input QPLL1CLKRSVD1; + input [7:0] QPLL1FBDIV; + input QPLL1LOCKDETCLK; + input QPLL1LOCKEN; + input QPLL1PD; + input [2:0] QPLL1REFCLKSEL; + input QPLL1RESET; + input [7:0] QPLLRSVD1; + input [4:0] QPLLRSVD2; + input [4:0] QPLLRSVD3; + input [7:0] QPLLRSVD4; + input RCALENB; + input [24:0] SDM0DATA; + input SDM0RESET; + input SDM0TOGGLE; + input [1:0] SDM0WIDTH; + input [24:0] SDM1DATA; + input SDM1RESET; + input SDM1TOGGLE; + input [1:0] SDM1WIDTH; + input UBCFGSTREAMEN; + input [15:0] UBDO; + input UBDRDY; + input UBENABLE; + input [1:0] UBGPI; + input [1:0] UBINTR; + input UBIOLMBRST; + input UBMBRST; + input UBMDMCAPTURE; + input UBMDMDBGRST; + input UBMDMDBGUPDATE; + input [3:0] UBMDMREGEN; + input UBMDMSHIFT; + input UBMDMSYSRST; + input UBMDMTCK; + input UBMDMTDI; +endmodule + +module IBUFDS_GTE4 (...); + parameter [0:0] REFCLK_EN_TX_PATH = 1'b0; + parameter [1:0] REFCLK_HROW_CK_SEL = 2'b00; + parameter [1:0] REFCLK_ICNTL_RX = 2'b00; + output O; + output ODIV2; + input CEB; + (* iopad_external_pin *) + input I; + (* iopad_external_pin *) + input IB; +endmodule + +module OBUFDS_GTE4 (...); + parameter [0:0] REFCLK_EN_TX_PATH = 1'b0; + parameter [4:0] REFCLK_ICNTL_TX = 5'b00000; + (* iopad_external_pin *) + output O; + (* iopad_external_pin *) + output OB; + input CEB; + input I; +endmodule + +module OBUFDS_GTE4_ADV (...); + parameter [0:0] REFCLK_EN_TX_PATH = 1'b0; + parameter [4:0] REFCLK_ICNTL_TX = 5'b00000; + (* iopad_external_pin *) + output O; + (* iopad_external_pin *) + output OB; + input CEB; + input [3:0] I; + input [1:0] RXRECCLK_SEL; +endmodule + +module GTM_DUAL (...); + parameter [15:0] A_CFG = 16'b0000100001000000; + parameter [15:0] A_SDM_DATA_CFG0 = 16'b0000000011010000; + parameter [15:0] A_SDM_DATA_CFG1 = 16'b0000000011010000; + parameter [15:0] BIAS_CFG0 = 16'b0000000000000000; + parameter [15:0] BIAS_CFG1 = 16'b0000000000000000; + parameter [15:0] BIAS_CFG2 = 16'b0001000000000000; + parameter [15:0] BIAS_CFG3 = 16'b0000000000000001; + parameter [15:0] BIAS_CFG4 = 16'b0000000000000000; + parameter [15:0] BIAS_CFG5 = 16'b0000000000000000; + parameter [15:0] BIAS_CFG6 = 16'b0000000010000000; + parameter [15:0] BIAS_CFG7 = 16'b0000000000000000; + parameter [15:0] CH0_A_CH_CFG0 = 16'b0000000000000011; + parameter [15:0] CH0_A_CH_CFG1 = 16'b0000000000000000; + parameter [15:0] CH0_A_CH_CFG2 = 16'b0111101111110000; + parameter [15:0] CH0_A_CH_CFG3 = 16'b0000000000000000; + parameter [15:0] CH0_A_CH_CFG4 = 16'b0000000000000000; + parameter [15:0] CH0_A_CH_CFG5 = 16'b0000000000000000; + parameter [15:0] CH0_A_CH_CFG6 = 16'b0000000000000000; + parameter [15:0] CH0_RST_LP_CFG0 = 16'b0001000000010000; + parameter [15:0] CH0_RST_LP_CFG1 = 16'b0011001000010000; + parameter [15:0] CH0_RST_LP_CFG2 = 16'b0110010100000100; + parameter [15:0] CH0_RST_LP_CFG3 = 16'b0011001000010000; + parameter [15:0] CH0_RST_LP_CFG4 = 16'b0000000001000100; + parameter [15:0] CH0_RST_LP_ID_CFG0 = 16'b0011000001110000; + parameter [15:0] CH0_RST_LP_ID_CFG1 = 16'b0001000000010000; + parameter [15:0] CH0_RST_TIME_CFG0 = 16'b0000010000100001; + parameter [15:0] CH0_RST_TIME_CFG1 = 16'b0000010000100001; + parameter [15:0] CH0_RST_TIME_CFG2 = 16'b0000010000100001; + parameter [15:0] CH0_RST_TIME_CFG3 = 16'b0000010000100000; + parameter [15:0] CH0_RST_TIME_CFG4 = 16'b0000010000100001; + parameter [15:0] CH0_RST_TIME_CFG5 = 16'b0000000000000001; + parameter [15:0] CH0_RST_TIME_CFG6 = 16'b0000000000100001; + parameter [15:0] CH0_RX_ADC_CFG0 = 16'b0011010010001111; + parameter [15:0] CH0_RX_ADC_CFG1 = 16'b0011111001010101; + parameter [15:0] CH0_RX_ANA_CFG0 = 16'b1000000000011101; + parameter [15:0] CH0_RX_ANA_CFG1 = 16'b1110100010000000; + parameter [15:0] CH0_RX_ANA_CFG2 = 16'b0000000010001010; + parameter [15:0] CH0_RX_APT_CFG0A = 16'b0000000001110000; + parameter [15:0] CH0_RX_APT_CFG0B = 16'b0000000001110000; + parameter [15:0] CH0_RX_APT_CFG10A = 16'b0000000001110000; + parameter [15:0] CH0_RX_APT_CFG10B = 16'b0000000001010000; + parameter [15:0] CH0_RX_APT_CFG11A = 16'b0000000001000000; + parameter [15:0] CH0_RX_APT_CFG11B = 16'b0000000001110000; + parameter [15:0] CH0_RX_APT_CFG12A = 16'b0000000001010000; + parameter [15:0] CH0_RX_APT_CFG12B = 16'b0000000000000000; + parameter [15:0] CH0_RX_APT_CFG13A = 16'b0000000000000000; + parameter [15:0] CH0_RX_APT_CFG13B = 16'b0000000000000000; + parameter [15:0] CH0_RX_APT_CFG14A = 16'b0000000000000000; + parameter [15:0] CH0_RX_APT_CFG14B = 16'b0000000000000000; + parameter [15:0] CH0_RX_APT_CFG15A = 16'b0000000000000000; + parameter [15:0] CH0_RX_APT_CFG15B = 16'b0000100000000000; + parameter [15:0] CH0_RX_APT_CFG16A = 16'b0000000000000000; + parameter [15:0] CH0_RX_APT_CFG16B = 16'b0010000000000000; + parameter [15:0] CH0_RX_APT_CFG17A = 16'b0000000000000000; + parameter [15:0] CH0_RX_APT_CFG17B = 16'b0001000001000000; + parameter [15:0] CH0_RX_APT_CFG18A = 16'b0000100000100000; + parameter [15:0] CH0_RX_APT_CFG18B = 16'b0000000000000000; + parameter [15:0] CH0_RX_APT_CFG19A = 16'b0000000000000000; + parameter [15:0] CH0_RX_APT_CFG19B = 16'b0000100000000000; + parameter [15:0] CH0_RX_APT_CFG1A = 16'b0000000001110000; + parameter [15:0] CH0_RX_APT_CFG1B = 16'b0000000001110000; + parameter [15:0] CH0_RX_APT_CFG20A = 16'b1110000000100000; + parameter [15:0] CH0_RX_APT_CFG20B = 16'b0000000001000000; + parameter [15:0] CH0_RX_APT_CFG21A = 16'b0001000000000100; + parameter [15:0] CH0_RX_APT_CFG21B = 16'b0000000000000000; + parameter [15:0] CH0_RX_APT_CFG22A = 16'b0000000001110000; + parameter [15:0] CH0_RX_APT_CFG22B = 16'b0000000001110000; + parameter [15:0] CH0_RX_APT_CFG23A = 16'b0000100000000000; + parameter [15:0] CH0_RX_APT_CFG23B = 16'b0000000000000000; + parameter [15:0] CH0_RX_APT_CFG24A = 16'b0000000000000000; + parameter [15:0] CH0_RX_APT_CFG24B = 16'b0000000000000000; + parameter [15:0] CH0_RX_APT_CFG25A = 16'b0000000000000000; + parameter [15:0] CH0_RX_APT_CFG25B = 16'b0000000000000000; + parameter [15:0] CH0_RX_APT_CFG26A = 16'b0000000000000000; + parameter [15:0] CH0_RX_APT_CFG26B = 16'b0000000000000000; + parameter [15:0] CH0_RX_APT_CFG27A = 16'b0100000000000000; + parameter [15:0] CH0_RX_APT_CFG27B = 16'b0000000000000000; + parameter [15:0] CH0_RX_APT_CFG28A = 16'b0000000000000000; + parameter [15:0] CH0_RX_APT_CFG28B = 16'b1000000000000000; + parameter [15:0] CH0_RX_APT_CFG2A = 16'b0000000001110000; + parameter [15:0] CH0_RX_APT_CFG2B = 16'b0000000001110000; + parameter [15:0] CH0_RX_APT_CFG3A = 16'b0000000001110000; + parameter [15:0] CH0_RX_APT_CFG3B = 16'b0000000001110000; + parameter [15:0] CH0_RX_APT_CFG4A = 16'b0000000001110000; + parameter [15:0] CH0_RX_APT_CFG4B = 16'b0000000001110000; + parameter [15:0] CH0_RX_APT_CFG5A = 16'b0000000001110000; + parameter [15:0] CH0_RX_APT_CFG5B = 16'b0000000001110000; + parameter [15:0] CH0_RX_APT_CFG6A = 16'b0000000001110000; + parameter [15:0] CH0_RX_APT_CFG6B = 16'b0000000001110000; + parameter [15:0] CH0_RX_APT_CFG7A = 16'b0000000001110000; + parameter [15:0] CH0_RX_APT_CFG7B = 16'b0000000001110000; + parameter [15:0] CH0_RX_APT_CFG8A = 16'b0000100000000000; + parameter [15:0] CH0_RX_APT_CFG8B = 16'b0000100000000000; + parameter [15:0] CH0_RX_APT_CFG9A = 16'b0000000001110000; + parameter [15:0] CH0_RX_APT_CFG9B = 16'b0000000001110000; + parameter [15:0] CH0_RX_APT_CTRL_CFG2 = 16'b0000000000000100; + parameter [15:0] CH0_RX_APT_CTRL_CFG3 = 16'b0000000000000000; + parameter [15:0] CH0_RX_CAL_CFG0A = 16'b0000000000000000; + parameter [15:0] CH0_RX_CAL_CFG0B = 16'b0011001100110000; + parameter [15:0] CH0_RX_CAL_CFG1A = 16'b1110111011100001; + parameter [15:0] CH0_RX_CAL_CFG1B = 16'b1111111100000100; + parameter [15:0] CH0_RX_CAL_CFG2A = 16'b0000000000000000; + parameter [15:0] CH0_RX_CAL_CFG2B = 16'b0011000000000000; + parameter [15:0] CH0_RX_CDR_CFG0A = 16'b0000000000000011; + parameter [15:0] CH0_RX_CDR_CFG0B = 16'b0000000000000000; + parameter [15:0] CH0_RX_CDR_CFG1A = 16'b0000000000000000; + parameter [15:0] CH0_RX_CDR_CFG1B = 16'b0000000000000000; + parameter [15:0] CH0_RX_CDR_CFG2A = 16'b1001000101100100; + parameter [15:0] CH0_RX_CDR_CFG2B = 16'b0000000100100100; + parameter [15:0] CH0_RX_CDR_CFG3A = 16'b0101110011110110; + parameter [15:0] CH0_RX_CDR_CFG3B = 16'b0000000000001011; + parameter [15:0] CH0_RX_CDR_CFG4A = 16'b0000000000000110; + parameter [15:0] CH0_RX_CDR_CFG4B = 16'b0000000000000000; + parameter [15:0] CH0_RX_CLKGN_CFG0 = 16'b1100000000000000; + parameter [15:0] CH0_RX_CLKGN_CFG1 = 16'b0000000110000000; + parameter [15:0] CH0_RX_CTLE_CFG0 = 16'b0011010010001000; + parameter [15:0] CH0_RX_CTLE_CFG1 = 16'b0010000000100010; + parameter [15:0] CH0_RX_CTLE_CFG2 = 16'b0000101000000000; + parameter [15:0] CH0_RX_CTLE_CFG3 = 16'b1111001001000000; + parameter [15:0] CH0_RX_DSP_CFG = 16'b0000000000000000; + parameter [15:0] CH0_RX_MON_CFG = 16'b0000000000000000; + parameter [15:0] CH0_RX_PAD_CFG0 = 16'b0001111000000000; + parameter [15:0] CH0_RX_PAD_CFG1 = 16'b0001100000001010; + parameter [15:0] CH0_RX_PCS_CFG0 = 16'b0000000100000000; + parameter [15:0] CH0_RX_PCS_CFG1 = 16'b0000000000000000; + parameter [15:0] CH0_TX_ANA_CFG0 = 16'b0000001010101111; + parameter [15:0] CH0_TX_ANA_CFG1 = 16'b0000000100000000; + parameter [15:0] CH0_TX_ANA_CFG2 = 16'b1000000000010100; + parameter [15:0] CH0_TX_ANA_CFG3 = 16'b0000101000100010; + parameter [15:0] CH0_TX_ANA_CFG4 = 16'b0000000000000000; + parameter [15:0] CH0_TX_CAL_CFG0 = 16'b0000000000100000; + parameter [15:0] CH0_TX_CAL_CFG1 = 16'b0000000001000000; + parameter [15:0] CH0_TX_DRV_CFG0 = 16'b0000000000000000; + parameter [15:0] CH0_TX_DRV_CFG1 = 16'b0000000000100111; + parameter [15:0] CH0_TX_DRV_CFG2 = 16'b0000000000000000; + parameter [15:0] CH0_TX_DRV_CFG3 = 16'b0110110000000000; + parameter [15:0] CH0_TX_DRV_CFG4 = 16'b0000000011000101; + parameter [15:0] CH0_TX_DRV_CFG5 = 16'b0000000000000000; + parameter [15:0] CH0_TX_LPBK_CFG0 = 16'b0000000000000011; + parameter [15:0] CH0_TX_LPBK_CFG1 = 16'b0000000000000000; + parameter [15:0] CH0_TX_PCS_CFG0 = 16'b0000000101100000; + parameter [15:0] CH0_TX_PCS_CFG1 = 16'b0000000000000000; + parameter [15:0] CH0_TX_PCS_CFG10 = 16'b0000000000000000; + parameter [15:0] CH0_TX_PCS_CFG11 = 16'b0000000000000000; + parameter [15:0] CH0_TX_PCS_CFG12 = 16'b0000000000000000; + parameter [15:0] CH0_TX_PCS_CFG13 = 16'b0000000000000000; + parameter [15:0] CH0_TX_PCS_CFG14 = 16'b0000000000000000; + parameter [15:0] CH0_TX_PCS_CFG15 = 16'b0000000000000000; + parameter [15:0] CH0_TX_PCS_CFG16 = 16'b0000000000000000; + parameter [15:0] CH0_TX_PCS_CFG17 = 16'b0000000000000000; + parameter [15:0] CH0_TX_PCS_CFG2 = 16'b0000000000000000; + parameter [15:0] CH0_TX_PCS_CFG3 = 16'b0000000000000000; + parameter [15:0] CH0_TX_PCS_CFG4 = 16'b0000000000000000; + parameter [15:0] CH0_TX_PCS_CFG5 = 16'b0000000000000000; + parameter [15:0] CH0_TX_PCS_CFG6 = 16'b0000000000000000; + parameter [15:0] CH0_TX_PCS_CFG7 = 16'b0000000000000000; + parameter [15:0] CH0_TX_PCS_CFG8 = 16'b0000000000000000; + parameter [15:0] CH0_TX_PCS_CFG9 = 16'b0000000000000000; + parameter [15:0] CH1_A_CH_CFG0 = 16'b0000000000000011; + parameter [15:0] CH1_A_CH_CFG1 = 16'b0000000000000000; + parameter [15:0] CH1_A_CH_CFG2 = 16'b0111101111110000; + parameter [15:0] CH1_A_CH_CFG3 = 16'b0000000000000000; + parameter [15:0] CH1_A_CH_CFG4 = 16'b0000000000000000; + parameter [15:0] CH1_A_CH_CFG5 = 16'b0000000000000000; + parameter [15:0] CH1_A_CH_CFG6 = 16'b0000000000000000; + parameter [15:0] CH1_RST_LP_CFG0 = 16'b0001000000010000; + parameter [15:0] CH1_RST_LP_CFG1 = 16'b0011001000010000; + parameter [15:0] CH1_RST_LP_CFG2 = 16'b0110010100000100; + parameter [15:0] CH1_RST_LP_CFG3 = 16'b0011001000010000; + parameter [15:0] CH1_RST_LP_CFG4 = 16'b0000000001000100; + parameter [15:0] CH1_RST_LP_ID_CFG0 = 16'b0011000001110000; + parameter [15:0] CH1_RST_LP_ID_CFG1 = 16'b0001000000010000; + parameter [15:0] CH1_RST_TIME_CFG0 = 16'b0000010000100001; + parameter [15:0] CH1_RST_TIME_CFG1 = 16'b0000010000100001; + parameter [15:0] CH1_RST_TIME_CFG2 = 16'b0000010000100001; + parameter [15:0] CH1_RST_TIME_CFG3 = 16'b0000010000100000; + parameter [15:0] CH1_RST_TIME_CFG4 = 16'b0000010000100001; + parameter [15:0] CH1_RST_TIME_CFG5 = 16'b0000000000000001; + parameter [15:0] CH1_RST_TIME_CFG6 = 16'b0000000000100001; + parameter [15:0] CH1_RX_ADC_CFG0 = 16'b0011010010001111; + parameter [15:0] CH1_RX_ADC_CFG1 = 16'b0011111001010101; + parameter [15:0] CH1_RX_ANA_CFG0 = 16'b1000000000011101; + parameter [15:0] CH1_RX_ANA_CFG1 = 16'b1110100010000000; + parameter [15:0] CH1_RX_ANA_CFG2 = 16'b0000000010001010; + parameter [15:0] CH1_RX_APT_CFG0A = 16'b0000000001110000; + parameter [15:0] CH1_RX_APT_CFG0B = 16'b0000000001110000; + parameter [15:0] CH1_RX_APT_CFG10A = 16'b0000000001110000; + parameter [15:0] CH1_RX_APT_CFG10B = 16'b0000000001010000; + parameter [15:0] CH1_RX_APT_CFG11A = 16'b0000000001000000; + parameter [15:0] CH1_RX_APT_CFG11B = 16'b0000000001110000; + parameter [15:0] CH1_RX_APT_CFG12A = 16'b0000000001010000; + parameter [15:0] CH1_RX_APT_CFG12B = 16'b0000000000000000; + parameter [15:0] CH1_RX_APT_CFG13A = 16'b0000000000000000; + parameter [15:0] CH1_RX_APT_CFG13B = 16'b0000000000000000; + parameter [15:0] CH1_RX_APT_CFG14A = 16'b0000000000000000; + parameter [15:0] CH1_RX_APT_CFG14B = 16'b0000000000000000; + parameter [15:0] CH1_RX_APT_CFG15A = 16'b0000000000000000; + parameter [15:0] CH1_RX_APT_CFG15B = 16'b0000100000000000; + parameter [15:0] CH1_RX_APT_CFG16A = 16'b0000000000000000; + parameter [15:0] CH1_RX_APT_CFG16B = 16'b0010000000000000; + parameter [15:0] CH1_RX_APT_CFG17A = 16'b0000000000000000; + parameter [15:0] CH1_RX_APT_CFG17B = 16'b0001000001000000; + parameter [15:0] CH1_RX_APT_CFG18A = 16'b0000100000100000; + parameter [15:0] CH1_RX_APT_CFG18B = 16'b0000100010000000; + parameter [15:0] CH1_RX_APT_CFG19A = 16'b0000000000000000; + parameter [15:0] CH1_RX_APT_CFG19B = 16'b0000100000000000; + parameter [15:0] CH1_RX_APT_CFG1A = 16'b0000000001110000; + parameter [15:0] CH1_RX_APT_CFG1B = 16'b0000000001110000; + parameter [15:0] CH1_RX_APT_CFG20A = 16'b1110000000100000; + parameter [15:0] CH1_RX_APT_CFG20B = 16'b0000000001000000; + parameter [15:0] CH1_RX_APT_CFG21A = 16'b0001000000000100; + parameter [15:0] CH1_RX_APT_CFG21B = 16'b0000000000000000; + parameter [15:0] CH1_RX_APT_CFG22A = 16'b0000000001110000; + parameter [15:0] CH1_RX_APT_CFG22B = 16'b0000000001110000; + parameter [15:0] CH1_RX_APT_CFG23A = 16'b0000100000000000; + parameter [15:0] CH1_RX_APT_CFG23B = 16'b0000100000000000; + parameter [15:0] CH1_RX_APT_CFG24A = 16'b0000000000000000; + parameter [15:0] CH1_RX_APT_CFG24B = 16'b0000000000000000; + parameter [15:0] CH1_RX_APT_CFG25A = 16'b0000000000000000; + parameter [15:0] CH1_RX_APT_CFG25B = 16'b0000000000000000; + parameter [15:0] CH1_RX_APT_CFG26A = 16'b0000000000000000; + parameter [15:0] CH1_RX_APT_CFG26B = 16'b0000000000000000; + parameter [15:0] CH1_RX_APT_CFG27A = 16'b0100000000000000; + parameter [15:0] CH1_RX_APT_CFG27B = 16'b0000000000000000; + parameter [15:0] CH1_RX_APT_CFG28A = 16'b0000000000000000; + parameter [15:0] CH1_RX_APT_CFG28B = 16'b1000000000000000; + parameter [15:0] CH1_RX_APT_CFG2A = 16'b0000000001110000; + parameter [15:0] CH1_RX_APT_CFG2B = 16'b0000000001110000; + parameter [15:0] CH1_RX_APT_CFG3A = 16'b0000000001110000; + parameter [15:0] CH1_RX_APT_CFG3B = 16'b0000000001110000; + parameter [15:0] CH1_RX_APT_CFG4A = 16'b0000000001110000; + parameter [15:0] CH1_RX_APT_CFG4B = 16'b0000000001110000; + parameter [15:0] CH1_RX_APT_CFG5A = 16'b0000000001110000; + parameter [15:0] CH1_RX_APT_CFG5B = 16'b0000000001110000; + parameter [15:0] CH1_RX_APT_CFG6A = 16'b0000000001110000; + parameter [15:0] CH1_RX_APT_CFG6B = 16'b0000000001110000; + parameter [15:0] CH1_RX_APT_CFG7A = 16'b0000000001110000; + parameter [15:0] CH1_RX_APT_CFG7B = 16'b0000000001110000; + parameter [15:0] CH1_RX_APT_CFG8A = 16'b0000100000000000; + parameter [15:0] CH1_RX_APT_CFG8B = 16'b0000100000000000; + parameter [15:0] CH1_RX_APT_CFG9A = 16'b0000000001110000; + parameter [15:0] CH1_RX_APT_CFG9B = 16'b0000000001110000; + parameter [15:0] CH1_RX_APT_CTRL_CFG2 = 16'b0000000000000100; + parameter [15:0] CH1_RX_APT_CTRL_CFG3 = 16'b0000000000000000; + parameter [15:0] CH1_RX_CAL_CFG0A = 16'b0000000000000000; + parameter [15:0] CH1_RX_CAL_CFG0B = 16'b0011001100110000; + parameter [15:0] CH1_RX_CAL_CFG1A = 16'b1110111011100001; + parameter [15:0] CH1_RX_CAL_CFG1B = 16'b1111111100000100; + parameter [15:0] CH1_RX_CAL_CFG2A = 16'b0000000000000000; + parameter [15:0] CH1_RX_CAL_CFG2B = 16'b0011000000000000; + parameter [15:0] CH1_RX_CDR_CFG0A = 16'b0000000000000011; + parameter [15:0] CH1_RX_CDR_CFG0B = 16'b0000000000000000; + parameter [15:0] CH1_RX_CDR_CFG1A = 16'b0000000000000000; + parameter [15:0] CH1_RX_CDR_CFG1B = 16'b0000000000000000; + parameter [15:0] CH1_RX_CDR_CFG2A = 16'b1001000101100100; + parameter [15:0] CH1_RX_CDR_CFG2B = 16'b0000000100100100; + parameter [15:0] CH1_RX_CDR_CFG3A = 16'b0101110011110110; + parameter [15:0] CH1_RX_CDR_CFG3B = 16'b0000000000001011; + parameter [15:0] CH1_RX_CDR_CFG4A = 16'b0000000000000110; + parameter [15:0] CH1_RX_CDR_CFG4B = 16'b0000000000000000; + parameter [15:0] CH1_RX_CLKGN_CFG0 = 16'b1100000000000000; + parameter [15:0] CH1_RX_CLKGN_CFG1 = 16'b0000000110000000; + parameter [15:0] CH1_RX_CTLE_CFG0 = 16'b0011010010001000; + parameter [15:0] CH1_RX_CTLE_CFG1 = 16'b0010000000100010; + parameter [15:0] CH1_RX_CTLE_CFG2 = 16'b0000101000000000; + parameter [15:0] CH1_RX_CTLE_CFG3 = 16'b1111001001000000; + parameter [15:0] CH1_RX_DSP_CFG = 16'b0000000000000000; + parameter [15:0] CH1_RX_MON_CFG = 16'b0000000000000000; + parameter [15:0] CH1_RX_PAD_CFG0 = 16'b0001111000000000; + parameter [15:0] CH1_RX_PAD_CFG1 = 16'b0001100000001010; + parameter [15:0] CH1_RX_PCS_CFG0 = 16'b0000000100000000; + parameter [15:0] CH1_RX_PCS_CFG1 = 16'b0000000000000000; + parameter [15:0] CH1_TX_ANA_CFG0 = 16'b0000001010101111; + parameter [15:0] CH1_TX_ANA_CFG1 = 16'b0000000100000000; + parameter [15:0] CH1_TX_ANA_CFG2 = 16'b1000000000010100; + parameter [15:0] CH1_TX_ANA_CFG3 = 16'b0000101000100010; + parameter [15:0] CH1_TX_ANA_CFG4 = 16'b0000000000000000; + parameter [15:0] CH1_TX_CAL_CFG0 = 16'b0000000000100000; + parameter [15:0] CH1_TX_CAL_CFG1 = 16'b0000000001000000; + parameter [15:0] CH1_TX_DRV_CFG0 = 16'b0000000000000000; + parameter [15:0] CH1_TX_DRV_CFG1 = 16'b0000000000100111; + parameter [15:0] CH1_TX_DRV_CFG2 = 16'b0000000000000000; + parameter [15:0] CH1_TX_DRV_CFG3 = 16'b0110110000000000; + parameter [15:0] CH1_TX_DRV_CFG4 = 16'b0000000011000101; + parameter [15:0] CH1_TX_DRV_CFG5 = 16'b0000000000000000; + parameter [15:0] CH1_TX_LPBK_CFG0 = 16'b0000000000000011; + parameter [15:0] CH1_TX_LPBK_CFG1 = 16'b0000000000000000; + parameter [15:0] CH1_TX_PCS_CFG0 = 16'b0000000101100000; + parameter [15:0] CH1_TX_PCS_CFG1 = 16'b0000000000000000; + parameter [15:0] CH1_TX_PCS_CFG10 = 16'b0000000000000000; + parameter [15:0] CH1_TX_PCS_CFG11 = 16'b0000000000000000; + parameter [15:0] CH1_TX_PCS_CFG12 = 16'b0000000000000000; + parameter [15:0] CH1_TX_PCS_CFG13 = 16'b0000000000000000; + parameter [15:0] CH1_TX_PCS_CFG14 = 16'b0000000000000000; + parameter [15:0] CH1_TX_PCS_CFG15 = 16'b0000000000000000; + parameter [15:0] CH1_TX_PCS_CFG16 = 16'b0000000000000000; + parameter [15:0] CH1_TX_PCS_CFG17 = 16'b0000000000000000; + parameter [15:0] CH1_TX_PCS_CFG2 = 16'b0000000000000000; + parameter [15:0] CH1_TX_PCS_CFG3 = 16'b0000000000000000; + parameter [15:0] CH1_TX_PCS_CFG4 = 16'b0000000000000000; + parameter [15:0] CH1_TX_PCS_CFG5 = 16'b0000000000000000; + parameter [15:0] CH1_TX_PCS_CFG6 = 16'b0000000000000000; + parameter [15:0] CH1_TX_PCS_CFG7 = 16'b0000000000000000; + parameter [15:0] CH1_TX_PCS_CFG8 = 16'b0000000000000000; + parameter [15:0] CH1_TX_PCS_CFG9 = 16'b0000000000000000; + parameter real DATARATE = 10.000; + parameter [15:0] DRPEN_CFG = 16'b0000000000000000; + parameter [15:0] FEC_CFG0 = 16'b0000000000000000; + parameter [15:0] FEC_CFG1 = 16'b0000000000000000; + parameter [15:0] FEC_CFG10 = 16'b0000000000000000; + parameter [15:0] FEC_CFG11 = 16'b0000000000000000; + parameter [15:0] FEC_CFG12 = 16'b0000000000000000; + parameter [15:0] FEC_CFG13 = 16'b0000000000000000; + parameter [15:0] FEC_CFG14 = 16'b0000000000000000; + parameter [15:0] FEC_CFG15 = 16'b0000000000000000; + parameter [15:0] FEC_CFG16 = 16'b0000000000000000; + parameter [15:0] FEC_CFG17 = 16'b0000000000000000; + parameter [15:0] FEC_CFG18 = 16'b0000000000000000; + parameter [15:0] FEC_CFG19 = 16'b0000000000000000; + parameter [15:0] FEC_CFG2 = 16'b0000000000000000; + parameter [15:0] FEC_CFG20 = 16'b0000000000000000; + parameter [15:0] FEC_CFG21 = 16'b0000000000000000; + parameter [15:0] FEC_CFG22 = 16'b0000000000000000; + parameter [15:0] FEC_CFG23 = 16'b0000000000000000; + parameter [15:0] FEC_CFG24 = 16'b0000000000000000; + parameter [15:0] FEC_CFG25 = 16'b0000000000000000; + parameter [15:0] FEC_CFG26 = 16'b0000000000000000; + parameter [15:0] FEC_CFG27 = 16'b0000000000000000; + parameter [15:0] FEC_CFG3 = 16'b0000000000000000; + parameter [15:0] FEC_CFG4 = 16'b0000000000000000; + parameter [15:0] FEC_CFG5 = 16'b0000000000000000; + parameter [15:0] FEC_CFG6 = 16'b0000000000000000; + parameter [15:0] FEC_CFG7 = 16'b0000000000000000; + parameter [15:0] FEC_CFG8 = 16'b0000000000000000; + parameter [15:0] FEC_CFG9 = 16'b0000000000000000; + parameter FEC_MODE = "BYPASS"; + parameter real INS_LOSS_NYQ = 20.000; + parameter integer INTERFACE_WIDTH = 64; + parameter MODULATION_MODE = "NRZ"; + parameter [15:0] PLL_CFG0 = 16'b0001100111110000; + parameter [15:0] PLL_CFG1 = 16'b0000111101110000; + parameter [15:0] PLL_CFG2 = 16'b1000000111101000; + parameter [15:0] PLL_CFG3 = 16'b0100000000000000; + parameter [15:0] PLL_CFG4 = 16'b0111111111101010; + parameter [15:0] PLL_CFG5 = 16'b0100101100111000; + parameter [15:0] PLL_CFG6 = 16'b0000000000100101; + parameter [15:0] PLL_CRS_CTRL_CFG0 = 16'b0000101100100000; + parameter [15:0] PLL_CRS_CTRL_CFG1 = 16'b1100010111010100; + parameter [0:0] PLL_IPS_PIN_EN = 1'b1; + parameter integer PLL_IPS_REFCLK_SEL = 0; + parameter [0:0] RCALSAP_TESTEN = 1'b0; + parameter [0:0] RCAL_APROBE = 1'b0; + parameter [15:0] RST_CFG = 16'b0000000000000010; + parameter [15:0] RST_PLL_CFG0 = 16'b0111011000010100; + parameter [15:0] SAP_CFG0 = 16'b0000000000000000; + parameter [15:0] SDM_CFG0 = 16'b0001100001000000; + parameter [15:0] SDM_CFG1 = 16'b0000000000000000; + parameter [15:0] SDM_CFG2 = 16'b0000000000000000; + parameter [15:0] SDM_SEED_CFG0 = 16'b0000000000000000; + parameter [15:0] SDM_SEED_CFG1 = 16'b0000000000000000; + parameter SIM_DEVICE = "ULTRASCALE_PLUS_ES1"; + parameter SIM_RESET_SPEEDUP = "TRUE"; + parameter integer TX_AMPLITUDE_SWING = 250; + output [27:0] CH0_AXISTDATA; + output CH0_AXISTLAST; + output CH0_AXISTVALID; + output [31:0] CH0_DMONITOROUT; + output CH0_DMONITOROUTCLK; + output CH0_GTMTXN; + output CH0_GTMTXP; + output [15:0] CH0_PCSRSVDOUT; + output [15:0] CH0_PMARSVDOUT; + output CH0_RESETEXCEPTION; + output [2:0] CH0_RXBUFSTATUS; + output [255:0] CH0_RXDATA; + output [3:0] CH0_RXDATAFLAGS; + output CH0_RXDATAISAM; + output CH0_RXDATASTART; + output CH0_RXOUTCLK; + output CH0_RXPMARESETDONE; + output CH0_RXPRBSERR; + output CH0_RXPRBSLOCKED; + output CH0_RXPRGDIVRESETDONE; + output CH0_RXPROGDIVCLK; + output CH0_RXRESETDONE; + output [1:0] CH0_TXBUFSTATUS; + output CH0_TXOUTCLK; + output CH0_TXPMARESETDONE; + output CH0_TXPRGDIVRESETDONE; + output CH0_TXPROGDIVCLK; + output CH0_TXRESETDONE; + output [27:0] CH1_AXISTDATA; + output CH1_AXISTLAST; + output CH1_AXISTVALID; + output [31:0] CH1_DMONITOROUT; + output CH1_DMONITOROUTCLK; + output CH1_GTMTXN; + output CH1_GTMTXP; + output [15:0] CH1_PCSRSVDOUT; + output [15:0] CH1_PMARSVDOUT; + output CH1_RESETEXCEPTION; + output [2:0] CH1_RXBUFSTATUS; + output [255:0] CH1_RXDATA; + output [3:0] CH1_RXDATAFLAGS; + output CH1_RXDATAISAM; + output CH1_RXDATASTART; + output CH1_RXOUTCLK; + output CH1_RXPMARESETDONE; + output CH1_RXPRBSERR; + output CH1_RXPRBSLOCKED; + output CH1_RXPRGDIVRESETDONE; + output CH1_RXPROGDIVCLK; + output CH1_RXRESETDONE; + output [1:0] CH1_TXBUFSTATUS; + output CH1_TXOUTCLK; + output CH1_TXPMARESETDONE; + output CH1_TXPRGDIVRESETDONE; + output CH1_TXPROGDIVCLK; + output CH1_TXRESETDONE; + output CLKTESTSIG2PAD; + output DMONITOROUTPLLCLK; + output [15:0] DRPDO; + output DRPRDY; + output FECRX0ALIGNED; + output FECRX0CORRCWINC; + output FECRX0CWINC; + output FECRX0UNCORRCWINC; + output FECRX1ALIGNED; + output FECRX1CORRCWINC; + output FECRX1CWINC; + output FECRX1UNCORRCWINC; + output [7:0] FECRXLN0BITERR0TO1INC; + output [7:0] FECRXLN0BITERR1TO0INC; + output [14:0] FECRXLN0DLY; + output [3:0] FECRXLN0ERRCNTINC; + output [1:0] FECRXLN0MAPPING; + output [7:0] FECRXLN1BITERR0TO1INC; + output [7:0] FECRXLN1BITERR1TO0INC; + output [14:0] FECRXLN1DLY; + output [3:0] FECRXLN1ERRCNTINC; + output [1:0] FECRXLN1MAPPING; + output [7:0] FECRXLN2BITERR0TO1INC; + output [7:0] FECRXLN2BITERR1TO0INC; + output [14:0] FECRXLN2DLY; + output [3:0] FECRXLN2ERRCNTINC; + output [1:0] FECRXLN2MAPPING; + output [7:0] FECRXLN3BITERR0TO1INC; + output [7:0] FECRXLN3BITERR1TO0INC; + output [14:0] FECRXLN3DLY; + output [3:0] FECRXLN3ERRCNTINC; + output [1:0] FECRXLN3MAPPING; + output FECTRXLN0LOCK; + output FECTRXLN1LOCK; + output FECTRXLN2LOCK; + output FECTRXLN3LOCK; + output GTPOWERGOOD; + output PLLFBCLKLOST; + output PLLLOCK; + output PLLREFCLKLOST; + output PLLREFCLKMONITOR; + output PLLRESETDONE; + output [15:0] PLLRSVDOUT; + output RCALCMP; + output [4:0] RCALOUT; + output RXRECCLK0; + output RXRECCLK1; + input BGBYPASSB; + input BGMONITORENB; + input BGPDB; + input [4:0] BGRCALOVRD; + input BGRCALOVRDENB; + input CH0_AXISEN; + input CH0_AXISRST; + input CH0_AXISTRDY; + input CH0_CFGRESET; + input CH0_DMONFIFORESET; + input CH0_DMONITORCLK; + input CH0_GTMRXN; + input CH0_GTMRXP; + input CH0_GTRXRESET; + input CH0_GTTXRESET; + input [2:0] CH0_LOOPBACK; + input [15:0] CH0_PCSRSVDIN; + input [15:0] CH0_PMARSVDIN; + input CH0_RESETOVRD; + input CH0_RXADAPTRESET; + input CH0_RXADCCALRESET; + input CH0_RXADCCLKGENRESET; + input CH0_RXBUFRESET; + input CH0_RXCDRFREQOS; + input CH0_RXCDRFRRESET; + input CH0_RXCDRHOLD; + input CH0_RXCDRINCPCTRL; + input CH0_RXCDROVRDEN; + input CH0_RXCDRPHRESET; + input CH0_RXDFERESET; + input CH0_RXDSPRESET; + input CH0_RXEQTRAINING; + input CH0_RXEYESCANRESET; + input CH0_RXFECRESET; + input [2:0] CH0_RXOUTCLKSEL; + input CH0_RXPCSRESET; + input [3:0] CH0_RXPCSRESETMASK; + input CH0_RXPMARESET; + input [7:0] CH0_RXPMARESETMASK; + input CH0_RXPOLARITY; + input CH0_RXPRBSCNTSTOP; + input CH0_RXPRBSCSCNTRST; + input [3:0] CH0_RXPRBSPTN; + input CH0_RXPROGDIVRESET; + input CH0_RXQPRBSEN; + input [1:0] CH0_RXRESETMODE; + input CH0_RXSPCSEQADV; + input CH0_RXUSRCLK; + input CH0_RXUSRCLK2; + input CH0_RXUSRRDY; + input CH0_RXUSRSTART; + input CH0_RXUSRSTOP; + input CH0_TXCKALRESET; + input [5:0] CH0_TXCTLFIRDAT; + input [255:0] CH0_TXDATA; + input CH0_TXDATASTART; + input [4:0] CH0_TXDRVAMP; + input [5:0] CH0_TXEMPMAIN; + input [4:0] CH0_TXEMPPOST; + input [4:0] CH0_TXEMPPRE; + input [3:0] CH0_TXEMPPRE2; + input CH0_TXFECRESET; + input CH0_TXINHIBIT; + input CH0_TXMUXDCDEXHOLD; + input CH0_TXMUXDCDORWREN; + input [2:0] CH0_TXOUTCLKSEL; + input CH0_TXPCSRESET; + input [1:0] CH0_TXPCSRESETMASK; + input CH0_TXPMARESET; + input [1:0] CH0_TXPMARESETMASK; + input CH0_TXPOLARITY; + input CH0_TXPRBSINERR; + input [3:0] CH0_TXPRBSPTN; + input CH0_TXPROGDIVRESET; + input CH0_TXQPRBSEN; + input [1:0] CH0_TXRESETMODE; + input CH0_TXSPCSEQADV; + input CH0_TXUSRCLK; + input CH0_TXUSRCLK2; + input CH0_TXUSRRDY; + input CH1_AXISEN; + input CH1_AXISRST; + input CH1_AXISTRDY; + input CH1_CFGRESET; + input CH1_DMONFIFORESET; + input CH1_DMONITORCLK; + input CH1_GTMRXN; + input CH1_GTMRXP; + input CH1_GTRXRESET; + input CH1_GTTXRESET; + input [2:0] CH1_LOOPBACK; + input [15:0] CH1_PCSRSVDIN; + input [15:0] CH1_PMARSVDIN; + input CH1_RESETOVRD; + input CH1_RXADAPTRESET; + input CH1_RXADCCALRESET; + input CH1_RXADCCLKGENRESET; + input CH1_RXBUFRESET; + input CH1_RXCDRFREQOS; + input CH1_RXCDRFRRESET; + input CH1_RXCDRHOLD; + input CH1_RXCDRINCPCTRL; + input CH1_RXCDROVRDEN; + input CH1_RXCDRPHRESET; + input CH1_RXDFERESET; + input CH1_RXDSPRESET; + input CH1_RXEQTRAINING; + input CH1_RXEYESCANRESET; + input CH1_RXFECRESET; + input [2:0] CH1_RXOUTCLKSEL; + input CH1_RXPCSRESET; + input [3:0] CH1_RXPCSRESETMASK; + input CH1_RXPMARESET; + input [7:0] CH1_RXPMARESETMASK; + input CH1_RXPOLARITY; + input CH1_RXPRBSCNTSTOP; + input CH1_RXPRBSCSCNTRST; + input [3:0] CH1_RXPRBSPTN; + input CH1_RXPROGDIVRESET; + input CH1_RXQPRBSEN; + input [1:0] CH1_RXRESETMODE; + input CH1_RXSPCSEQADV; + input CH1_RXUSRCLK; + input CH1_RXUSRCLK2; + input CH1_RXUSRRDY; + input CH1_RXUSRSTART; + input CH1_RXUSRSTOP; + input CH1_TXCKALRESET; + input [5:0] CH1_TXCTLFIRDAT; + input [255:0] CH1_TXDATA; + input CH1_TXDATASTART; + input [4:0] CH1_TXDRVAMP; + input [5:0] CH1_TXEMPMAIN; + input [4:0] CH1_TXEMPPOST; + input [4:0] CH1_TXEMPPRE; + input [3:0] CH1_TXEMPPRE2; + input CH1_TXFECRESET; + input CH1_TXINHIBIT; + input CH1_TXMUXDCDEXHOLD; + input CH1_TXMUXDCDORWREN; + input [2:0] CH1_TXOUTCLKSEL; + input CH1_TXPCSRESET; + input [1:0] CH1_TXPCSRESETMASK; + input CH1_TXPMARESET; + input [1:0] CH1_TXPMARESETMASK; + input CH1_TXPOLARITY; + input CH1_TXPRBSINERR; + input [3:0] CH1_TXPRBSPTN; + input CH1_TXPROGDIVRESET; + input CH1_TXQPRBSEN; + input [1:0] CH1_TXRESETMODE; + input CH1_TXSPCSEQADV; + input CH1_TXUSRCLK; + input CH1_TXUSRCLK2; + input CH1_TXUSRRDY; + input [10:0] DRPADDR; + input DRPCLK; + input [15:0] DRPDI; + input DRPEN; + input DRPRST; + input DRPWE; + input FECCTRLRX0BITSLIPFS; + input FECCTRLRX1BITSLIPFS; + input GTGREFCLK2PLL; + input GTNORTHREFCLK; + input GTREFCLK; + input GTSOUTHREFCLK; + input [7:0] PLLFBDIV; + input PLLMONCLK; + input PLLPD; + input [2:0] PLLREFCLKSEL; + input PLLRESET; + input PLLRESETBYPASSMODE; + input [1:0] PLLRESETMASK; + input [15:0] PLLRSVDIN; + input RCALENB; + input [25:0] SDMDATA; + input SDMTOGGLE; +endmodule + +module IBUFDS_GTM (...); + parameter [0:0] REFCLK_EN_TX_PATH = 1'b0; + parameter integer REFCLK_HROW_CK_SEL = 0; + parameter integer REFCLK_ICNTL_RX = 0; + output O; + output ODIV2; + input CEB; + (* iopad_external_pin *) + input I; + (* iopad_external_pin *) + input IB; +endmodule + +module OBUFDS_GTM (...); + parameter [0:0] REFCLK_EN_TX_PATH = 1'b0; + parameter integer REFCLK_ICNTL_TX = 0; + (* iopad_external_pin *) + output O; + (* iopad_external_pin *) + output OB; + input CEB; + input I; +endmodule + +module OBUFDS_GTM_ADV (...); + parameter [0:0] REFCLK_EN_TX_PATH = 1'b0; + parameter integer REFCLK_ICNTL_TX = 0; + parameter [1:0] RXRECCLK_SEL = 2'b00; + (* iopad_external_pin *) + output O; + (* iopad_external_pin *) + output OB; + input CEB; + input [3:0] I; +endmodule + +module HSDAC (...); + parameter SIM_DEVICE = "ULTRASCALE_PLUS"; + parameter integer XPA_CFG0 = 0; + parameter integer XPA_CFG1 = 0; + parameter integer XPA_NUM_DACS = 0; + parameter integer XPA_NUM_DUCS = 0; + parameter XPA_PLL_USED = "No"; + parameter integer XPA_SAMPLE_RATE_MSPS = 0; + output CLK_DAC; + output [15:0] DOUT; + output DRDY; + output PLL_DMON_OUT; + output PLL_REFCLK_OUT; + output [15:0] STATUS_COMMON; + output [15:0] STATUS_DAC0; + output [15:0] STATUS_DAC1; + output [15:0] STATUS_DAC2; + output [15:0] STATUS_DAC3; + output SYSREF_OUT_NORTH; + output SYSREF_OUT_SOUTH; + output VOUT0_N; + output VOUT0_P; + output VOUT1_N; + output VOUT1_P; + output VOUT2_N; + output VOUT2_P; + output VOUT3_N; + output VOUT3_P; + input CLK_FIFO_LM; + input [15:0] CONTROL_COMMON; + input [15:0] CONTROL_DAC0; + input [15:0] CONTROL_DAC1; + input [15:0] CONTROL_DAC2; + input [15:0] CONTROL_DAC3; + input DAC_CLK_N; + input DAC_CLK_P; + input [11:0] DADDR; + input [255:0] DATA_DAC0; + input [255:0] DATA_DAC1; + input [255:0] DATA_DAC2; + input [255:0] DATA_DAC3; + input DCLK; + input DEN; + input [15:0] DI; + input DWE; + input FABRIC_CLK; + input PLL_MONCLK; + input PLL_REFCLK_IN; + input SYSREF_IN_NORTH; + input SYSREF_IN_SOUTH; + input SYSREF_N; + input SYSREF_P; +endmodule + +module HSADC (...); + parameter SIM_DEVICE = "ULTRASCALE_PLUS"; + parameter integer XPA_CFG0 = 0; + parameter integer XPA_CFG1 = 0; + parameter XPA_NUM_ADCS = "0"; + parameter integer XPA_NUM_DDCS = 0; + parameter XPA_PLL_USED = "No"; + parameter integer XPA_SAMPLE_RATE_MSPS = 0; + output CLK_ADC; + output [127:0] DATA_ADC0; + output [127:0] DATA_ADC1; + output [127:0] DATA_ADC2; + output [127:0] DATA_ADC3; + output [15:0] DOUT; + output DRDY; + output PLL_DMON_OUT; + output PLL_REFCLK_OUT; + output [15:0] STATUS_ADC0; + output [15:0] STATUS_ADC1; + output [15:0] STATUS_ADC2; + output [15:0] STATUS_ADC3; + output [15:0] STATUS_COMMON; + output SYSREF_OUT_NORTH; + output SYSREF_OUT_SOUTH; + input ADC_CLK_N; + input ADC_CLK_P; + input CLK_FIFO_LM; + input [15:0] CONTROL_ADC0; + input [15:0] CONTROL_ADC1; + input [15:0] CONTROL_ADC2; + input [15:0] CONTROL_ADC3; + input [15:0] CONTROL_COMMON; + input [11:0] DADDR; + input DCLK; + input DEN; + input [15:0] DI; + input DWE; + input FABRIC_CLK; + input PLL_MONCLK; + input PLL_REFCLK_IN; + input SYSREF_IN_NORTH; + input SYSREF_IN_SOUTH; + input SYSREF_N; + input SYSREF_P; + input VIN0_N; + input VIN0_P; + input VIN1_N; + input VIN1_P; + input VIN2_N; + input VIN2_P; + input VIN3_N; + input VIN3_P; + input VIN_I01_N; + input VIN_I01_P; + input VIN_I23_N; + input VIN_I23_P; +endmodule + +module RFDAC (...); + parameter integer OPT_CLK_DIST = 0; + parameter SIM_DEVICE = "ULTRASCALE_PLUS"; + parameter integer XPA_ACTIVE_DUTYCYCLE = 100; + parameter integer XPA_CFG0 = 0; + parameter integer XPA_CFG1 = 0; + parameter integer XPA_CFG2 = 0; + parameter integer XPA_NUM_DACS = 0; + parameter integer XPA_NUM_DUCS = 0; + parameter XPA_PLL_USED = "EXTERNAL"; + parameter integer XPA_SAMPLE_RATE_MSPS = 0; + output CLK_DAC; + output CLK_DIST_OUT_NORTH; + output CLK_DIST_OUT_SOUTH; + output [15:0] DOUT; + output DRDY; + output PLL_DMON_OUT; + output PLL_REFCLK_OUT; + output [23:0] STATUS_COMMON; + output [23:0] STATUS_DAC0; + output [23:0] STATUS_DAC1; + output [23:0] STATUS_DAC2; + output [23:0] STATUS_DAC3; + output SYSREF_OUT_NORTH; + output SYSREF_OUT_SOUTH; + output T1_ALLOWED_SOUTH; + output VOUT0_N; + output VOUT0_P; + output VOUT1_N; + output VOUT1_P; + output VOUT2_N; + output VOUT2_P; + output VOUT3_N; + output VOUT3_P; + input CLK_DIST_IN_NORTH; + input CLK_DIST_IN_SOUTH; + input CLK_FIFO_LM; + input [15:0] CONTROL_COMMON; + input [15:0] CONTROL_DAC0; + input [15:0] CONTROL_DAC1; + input [15:0] CONTROL_DAC2; + input [15:0] CONTROL_DAC3; + input DAC_CLK_N; + input DAC_CLK_P; + input [11:0] DADDR; + input [255:0] DATA_DAC0; + input [255:0] DATA_DAC1; + input [255:0] DATA_DAC2; + input [255:0] DATA_DAC3; + input DCLK; + input DEN; + input [15:0] DI; + input DWE; + input FABRIC_CLK; + input PLL_MONCLK; + input PLL_REFCLK_IN; + input SYSREF_IN_NORTH; + input SYSREF_IN_SOUTH; + input SYSREF_N; + input SYSREF_P; + input T1_ALLOWED_NORTH; +endmodule + +module RFADC (...); + parameter integer OPT_ANALOG = 0; + parameter integer OPT_CLK_DIST = 0; + parameter SIM_DEVICE = "ULTRASCALE_PLUS"; + parameter integer XPA_ACTIVE_DUTYCYCLE = 100; + parameter integer XPA_CFG0 = 0; + parameter integer XPA_CFG1 = 0; + parameter integer XPA_CFG2 = 0; + parameter XPA_NUM_ADCS = "0"; + parameter integer XPA_NUM_DDCS = 0; + parameter XPA_PLL_USED = "EXTERNAL"; + parameter integer XPA_SAMPLE_RATE_MSPS = 0; + output CLK_ADC; + output CLK_DIST_OUT_NORTH; + output CLK_DIST_OUT_SOUTH; + output [191:0] DATA_ADC0; + output [191:0] DATA_ADC1; + output [191:0] DATA_ADC2; + output [191:0] DATA_ADC3; + output [15:0] DOUT; + output DRDY; + output PLL_DMON_OUT; + output PLL_REFCLK_OUT; + output [23:0] STATUS_ADC0; + output [23:0] STATUS_ADC1; + output [23:0] STATUS_ADC2; + output [23:0] STATUS_ADC3; + output [23:0] STATUS_COMMON; + output SYSREF_OUT_NORTH; + output SYSREF_OUT_SOUTH; + output T1_ALLOWED_SOUTH; + input ADC_CLK_N; + input ADC_CLK_P; + input CLK_DIST_IN_NORTH; + input CLK_DIST_IN_SOUTH; + input CLK_FIFO_LM; + input [15:0] CONTROL_ADC0; + input [15:0] CONTROL_ADC1; + input [15:0] CONTROL_ADC2; + input [15:0] CONTROL_ADC3; + input [15:0] CONTROL_COMMON; + input [11:0] DADDR; + input DCLK; + input DEN; + input [15:0] DI; + input DWE; + input FABRIC_CLK; + input PLL_MONCLK; + input PLL_REFCLK_IN; + input SYSREF_IN_NORTH; + input SYSREF_IN_SOUTH; + input SYSREF_N; + input SYSREF_P; + input T1_ALLOWED_NORTH; + input VIN0_N; + input VIN0_P; + input VIN1_N; + input VIN1_P; + input VIN2_N; + input VIN2_P; + input VIN3_N; + input VIN3_P; + input VIN_I01_N; + input VIN_I01_P; + input VIN_I23_N; + input VIN_I23_P; +endmodule + +module PCIE_A1 (...); + parameter [31:0] BAR0 = 32'h00000000; + parameter [31:0] BAR1 = 32'h00000000; + parameter [31:0] BAR2 = 32'h00000000; + parameter [31:0] BAR3 = 32'h00000000; + parameter [31:0] BAR4 = 32'h00000000; + parameter [31:0] BAR5 = 32'h00000000; + parameter [31:0] CARDBUS_CIS_POINTER = 32'h00000000; + parameter [23:0] CLASS_CODE = 24'h000000; + parameter integer DEV_CAP_ENDPOINT_L0S_LATENCY = 7; + parameter integer DEV_CAP_ENDPOINT_L1_LATENCY = 7; + parameter DEV_CAP_EXT_TAG_SUPPORTED = "FALSE"; + parameter integer DEV_CAP_MAX_PAYLOAD_SUPPORTED = 2; + parameter integer DEV_CAP_PHANTOM_FUNCTIONS_SUPPORT = 0; + parameter DEV_CAP_ROLE_BASED_ERROR = "TRUE"; + parameter DISABLE_BAR_FILTERING = "FALSE"; + parameter DISABLE_ID_CHECK = "FALSE"; + parameter DISABLE_SCRAMBLING = "FALSE"; + parameter ENABLE_RX_TD_ECRC_TRIM = "FALSE"; + parameter [21:0] EXPANSION_ROM = 22'h000000; + parameter FAST_TRAIN = "FALSE"; + parameter integer GTP_SEL = 0; + parameter integer LINK_CAP_ASPM_SUPPORT = 1; + parameter integer LINK_CAP_L0S_EXIT_LATENCY = 7; + parameter integer LINK_CAP_L1_EXIT_LATENCY = 7; + parameter LINK_STATUS_SLOT_CLOCK_CONFIG = "FALSE"; + parameter [14:0] LL_ACK_TIMEOUT = 15'h0204; + parameter LL_ACK_TIMEOUT_EN = "FALSE"; + parameter [14:0] LL_REPLAY_TIMEOUT = 15'h060D; + parameter LL_REPLAY_TIMEOUT_EN = "FALSE"; + parameter integer MSI_CAP_MULTIMSGCAP = 0; + parameter integer MSI_CAP_MULTIMSG_EXTENSION = 0; + parameter [3:0] PCIE_CAP_CAPABILITY_VERSION = 4'h1; + parameter [3:0] PCIE_CAP_DEVICE_PORT_TYPE = 4'h0; + parameter [4:0] PCIE_CAP_INT_MSG_NUM = 5'b00000; + parameter PCIE_CAP_SLOT_IMPLEMENTED = "FALSE"; + parameter [11:0] PCIE_GENERIC = 12'h000; + parameter PLM_AUTO_CONFIG = "FALSE"; + parameter integer PM_CAP_AUXCURRENT = 0; + parameter PM_CAP_D1SUPPORT = "TRUE"; + parameter PM_CAP_D2SUPPORT = "TRUE"; + parameter PM_CAP_DSI = "FALSE"; + parameter [4:0] PM_CAP_PMESUPPORT = 5'b01111; + parameter PM_CAP_PME_CLOCK = "FALSE"; + parameter integer PM_CAP_VERSION = 3; + parameter [7:0] PM_DATA0 = 8'h1E; + parameter [7:0] PM_DATA1 = 8'h1E; + parameter [7:0] PM_DATA2 = 8'h1E; + parameter [7:0] PM_DATA3 = 8'h1E; + parameter [7:0] PM_DATA4 = 8'h1E; + parameter [7:0] PM_DATA5 = 8'h1E; + parameter [7:0] PM_DATA6 = 8'h1E; + parameter [7:0] PM_DATA7 = 8'h1E; + parameter [1:0] PM_DATA_SCALE0 = 2'b01; + parameter [1:0] PM_DATA_SCALE1 = 2'b01; + parameter [1:0] PM_DATA_SCALE2 = 2'b01; + parameter [1:0] PM_DATA_SCALE3 = 2'b01; + parameter [1:0] PM_DATA_SCALE4 = 2'b01; + parameter [1:0] PM_DATA_SCALE5 = 2'b01; + parameter [1:0] PM_DATA_SCALE6 = 2'b01; + parameter [1:0] PM_DATA_SCALE7 = 2'b01; + parameter SIM_VERSION = "1.0"; + parameter SLOT_CAP_ATT_BUTTON_PRESENT = "FALSE"; + parameter SLOT_CAP_ATT_INDICATOR_PRESENT = "FALSE"; + parameter SLOT_CAP_POWER_INDICATOR_PRESENT = "FALSE"; + parameter integer TL_RX_RAM_RADDR_LATENCY = 1; + parameter integer TL_RX_RAM_RDATA_LATENCY = 2; + parameter integer TL_RX_RAM_WRITE_LATENCY = 0; + parameter TL_TFC_DISABLE = "FALSE"; + parameter TL_TX_CHECKS_DISABLE = "FALSE"; + parameter integer TL_TX_RAM_RADDR_LATENCY = 0; + parameter integer TL_TX_RAM_RDATA_LATENCY = 2; + parameter USR_CFG = "FALSE"; + parameter USR_EXT_CFG = "FALSE"; + parameter VC0_CPL_INFINITE = "TRUE"; + parameter [11:0] VC0_RX_RAM_LIMIT = 12'h01E; + parameter integer VC0_TOTAL_CREDITS_CD = 104; + parameter integer VC0_TOTAL_CREDITS_CH = 36; + parameter integer VC0_TOTAL_CREDITS_NPH = 8; + parameter integer VC0_TOTAL_CREDITS_PD = 288; + parameter integer VC0_TOTAL_CREDITS_PH = 32; + parameter integer VC0_TX_LASTPACKET = 31; + output CFGCOMMANDBUSMASTERENABLE; + output CFGCOMMANDINTERRUPTDISABLE; + output CFGCOMMANDIOENABLE; + output CFGCOMMANDMEMENABLE; + output CFGCOMMANDSERREN; + output CFGDEVCONTROLAUXPOWEREN; + output CFGDEVCONTROLCORRERRREPORTINGEN; + output CFGDEVCONTROLENABLERO; + output CFGDEVCONTROLEXTTAGEN; + output CFGDEVCONTROLFATALERRREPORTINGEN; + output CFGDEVCONTROLNONFATALREPORTINGEN; + output CFGDEVCONTROLNOSNOOPEN; + output CFGDEVCONTROLPHANTOMEN; + output CFGDEVCONTROLURERRREPORTINGEN; + output CFGDEVSTATUSCORRERRDETECTED; + output CFGDEVSTATUSFATALERRDETECTED; + output CFGDEVSTATUSNONFATALERRDETECTED; + output CFGDEVSTATUSURDETECTED; + output CFGERRCPLRDYN; + output CFGINTERRUPTMSIENABLE; + output CFGINTERRUPTRDYN; + output CFGLINKCONTOLRCB; + output CFGLINKCONTROLCOMMONCLOCK; + output CFGLINKCONTROLEXTENDEDSYNC; + output CFGRDWRDONEN; + output CFGTOTURNOFFN; + output DBGBADDLLPSTATUS; + output DBGBADTLPLCRC; + output DBGBADTLPSEQNUM; + output DBGBADTLPSTATUS; + output DBGDLPROTOCOLSTATUS; + output DBGFCPROTOCOLERRSTATUS; + output DBGMLFRMDLENGTH; + output DBGMLFRMDMPS; + output DBGMLFRMDTCVC; + output DBGMLFRMDTLPSTATUS; + output DBGMLFRMDUNRECTYPE; + output DBGPOISTLPSTATUS; + output DBGRCVROVERFLOWSTATUS; + output DBGREGDETECTEDCORRECTABLE; + output DBGREGDETECTEDFATAL; + output DBGREGDETECTEDNONFATAL; + output DBGREGDETECTEDUNSUPPORTED; + output DBGRPLYROLLOVERSTATUS; + output DBGRPLYTIMEOUTSTATUS; + output DBGURNOBARHIT; + output DBGURPOISCFGWR; + output DBGURSTATUS; + output DBGURUNSUPMSG; + output MIMRXREN; + output MIMRXWEN; + output MIMTXREN; + output MIMTXWEN; + output PIPEGTTXELECIDLEA; + output PIPEGTTXELECIDLEB; + output PIPERXPOLARITYA; + output PIPERXPOLARITYB; + output PIPERXRESETA; + output PIPERXRESETB; + output PIPETXRCVRDETA; + output PIPETXRCVRDETB; + output RECEIVEDHOTRESET; + output TRNLNKUPN; + output TRNREOFN; + output TRNRERRFWDN; + output TRNRSOFN; + output TRNRSRCDSCN; + output TRNRSRCRDYN; + output TRNTCFGREQN; + output TRNTDSTRDYN; + output TRNTERRDROPN; + output USERRSTN; + output [11:0] MIMRXRADDR; + output [11:0] MIMRXWADDR; + output [11:0] MIMTXRADDR; + output [11:0] MIMTXWADDR; + output [11:0] TRNFCCPLD; + output [11:0] TRNFCNPD; + output [11:0] TRNFCPD; + output [15:0] PIPETXDATAA; + output [15:0] PIPETXDATAB; + output [1:0] CFGLINKCONTROLASPMCONTROL; + output [1:0] PIPEGTPOWERDOWNA; + output [1:0] PIPEGTPOWERDOWNB; + output [1:0] PIPETXCHARDISPMODEA; + output [1:0] PIPETXCHARDISPMODEB; + output [1:0] PIPETXCHARDISPVALA; + output [1:0] PIPETXCHARDISPVALB; + output [1:0] PIPETXCHARISKA; + output [1:0] PIPETXCHARISKB; + output [2:0] CFGDEVCONTROLMAXPAYLOAD; + output [2:0] CFGDEVCONTROLMAXREADREQ; + output [2:0] CFGFUNCTIONNUMBER; + output [2:0] CFGINTERRUPTMMENABLE; + output [2:0] CFGPCIELINKSTATEN; + output [31:0] CFGDO; + output [31:0] TRNRD; + output [34:0] MIMRXWDATA; + output [35:0] MIMTXWDATA; + output [4:0] CFGDEVICENUMBER; + output [4:0] CFGLTSSMSTATE; + output [5:0] TRNTBUFAV; + output [6:0] TRNRBARHITN; + output [7:0] CFGBUSNUMBER; + output [7:0] CFGINTERRUPTDO; + output [7:0] TRNFCCPLH; + output [7:0] TRNFCNPH; + output [7:0] TRNFCPH; + input CFGERRCORN; + input CFGERRCPLABORTN; + input CFGERRCPLTIMEOUTN; + input CFGERRECRCN; + input CFGERRLOCKEDN; + input CFGERRPOSTEDN; + input CFGERRURN; + input CFGINTERRUPTASSERTN; + input CFGINTERRUPTN; + input CFGPMWAKEN; + input CFGRDENN; + input CFGTRNPENDINGN; + input CFGTURNOFFOKN; + input CLOCKLOCKED; + input MGTCLK; + input PIPEGTRESETDONEA; + input PIPEGTRESETDONEB; + input PIPEPHYSTATUSA; + input PIPEPHYSTATUSB; + input PIPERXENTERELECIDLEA; + input PIPERXENTERELECIDLEB; + input SYSRESETN; + input TRNRDSTRDYN; + input TRNRNPOKN; + input TRNTCFGGNTN; + input TRNTEOFN; + input TRNTERRFWDN; + input TRNTSOFN; + input TRNTSRCDSCN; + input TRNTSRCRDYN; + input TRNTSTRN; + input USERCLK; + input [15:0] CFGDEVID; + input [15:0] CFGSUBSYSID; + input [15:0] CFGSUBSYSVENID; + input [15:0] CFGVENID; + input [15:0] PIPERXDATAA; + input [15:0] PIPERXDATAB; + input [1:0] PIPERXCHARISKA; + input [1:0] PIPERXCHARISKB; + input [2:0] PIPERXSTATUSA; + input [2:0] PIPERXSTATUSB; + input [2:0] TRNFCSEL; + input [31:0] TRNTD; + input [34:0] MIMRXRDATA; + input [35:0] MIMTXRDATA; + input [47:0] CFGERRTLPCPLHEADER; + input [63:0] CFGDSN; + input [7:0] CFGINTERRUPTDI; + input [7:0] CFGREVID; + input [9:0] CFGDWADDR; +endmodule + +module PCIE_EP (...); + parameter BAR0EXIST = "TRUE"; + parameter BAR0PREFETCHABLE = "TRUE"; + parameter BAR1EXIST = "FALSE"; + parameter BAR1PREFETCHABLE = "FALSE"; + parameter BAR2EXIST = "FALSE"; + parameter BAR2PREFETCHABLE = "FALSE"; + parameter BAR3EXIST = "FALSE"; + parameter BAR3PREFETCHABLE = "FALSE"; + parameter BAR4EXIST = "FALSE"; + parameter BAR4PREFETCHABLE = "FALSE"; + parameter BAR5EXIST = "FALSE"; + parameter BAR5PREFETCHABLE = "FALSE"; + parameter CLKDIVIDED = "FALSE"; + parameter INFINITECOMPLETIONS = "TRUE"; + parameter LINKSTATUSSLOTCLOCKCONFIG = "FALSE"; + parameter PBCAPABILITYSYSTEMALLOCATED = "FALSE"; + parameter PMCAPABILITYD1SUPPORT = "FALSE"; + parameter PMCAPABILITYD2SUPPORT = "FALSE"; + parameter PMCAPABILITYDSI = "TRUE"; + parameter RESETMODE = "FALSE"; + parameter [10:0] VC0TOTALCREDITSCD = 11'h0; + parameter [10:0] VC0TOTALCREDITSPD = 11'h34; + parameter [10:0] VC1TOTALCREDITSCD = 11'h0; + parameter [10:0] VC1TOTALCREDITSPD = 11'h0; + parameter [11:0] AERBASEPTR = 12'h110; + parameter [11:0] AERCAPABILITYNEXTPTR = 12'h138; + parameter [11:0] DSNBASEPTR = 12'h148; + parameter [11:0] DSNCAPABILITYNEXTPTR = 12'h154; + parameter [11:0] MSIBASEPTR = 12'h48; + parameter [11:0] PBBASEPTR = 12'h138; + parameter [11:0] PBCAPABILITYNEXTPTR = 12'h148; + parameter [11:0] PMBASEPTR = 12'h40; + parameter [11:0] RETRYRAMSIZE = 12'h9; + parameter [11:0] VCBASEPTR = 12'h154; + parameter [11:0] VCCAPABILITYNEXTPTR = 12'h0; + parameter [12:0] VC0RXFIFOBASEC = 13'h98; + parameter [12:0] VC0RXFIFOBASENP = 13'h80; + parameter [12:0] VC0RXFIFOBASEP = 13'h0; + parameter [12:0] VC0RXFIFOLIMITC = 13'h117; + parameter [12:0] VC0RXFIFOLIMITNP = 13'h97; + parameter [12:0] VC0RXFIFOLIMITP = 13'h7f; + parameter [12:0] VC0TXFIFOBASEC = 13'h98; + parameter [12:0] VC0TXFIFOBASENP = 13'h80; + parameter [12:0] VC0TXFIFOBASEP = 13'h0; + parameter [12:0] VC0TXFIFOLIMITC = 13'h117; + parameter [12:0] VC0TXFIFOLIMITNP = 13'h97; + parameter [12:0] VC0TXFIFOLIMITP = 13'h7f; + parameter [12:0] VC1RXFIFOBASEC = 13'h118; + parameter [12:0] VC1RXFIFOBASENP = 13'h118; + parameter [12:0] VC1RXFIFOBASEP = 13'h118; + parameter [12:0] VC1RXFIFOLIMITC = 13'h118; + parameter [12:0] VC1RXFIFOLIMITNP = 13'h118; + parameter [12:0] VC1RXFIFOLIMITP = 13'h118; + parameter [12:0] VC1TXFIFOBASEC = 13'h118; + parameter [12:0] VC1TXFIFOBASENP = 13'h118; + parameter [12:0] VC1TXFIFOBASEP = 13'h118; + parameter [12:0] VC1TXFIFOLIMITC = 13'h118; + parameter [12:0] VC1TXFIFOLIMITNP = 13'h118; + parameter [12:0] VC1TXFIFOLIMITP = 13'h118; + parameter [15:0] DEVICEID = 16'h5050; + parameter [15:0] SUBSYSTEMID = 16'h5050; + parameter [15:0] SUBSYSTEMVENDORID = 16'h10EE; + parameter [15:0] VENDORID = 16'h10EE; + parameter [1:0] LINKCAPABILITYASPMSUPPORT = 2'h1; + parameter [1:0] PBCAPABILITYDW0DATASCALE = 2'h0; + parameter [1:0] PBCAPABILITYDW0PMSTATE = 2'h0; + parameter [1:0] PBCAPABILITYDW1DATASCALE = 2'h0; + parameter [1:0] PBCAPABILITYDW1PMSTATE = 2'h0; + parameter [1:0] PBCAPABILITYDW2DATASCALE = 2'h0; + parameter [1:0] PBCAPABILITYDW2PMSTATE = 2'h0; + parameter [1:0] PBCAPABILITYDW3DATASCALE = 2'h0; + parameter [1:0] PBCAPABILITYDW3PMSTATE = 2'h0; + parameter [23:0] CLASSCODE = 24'h058000; + parameter [2:0] DEVICECAPABILITYENDPOINTL0SLATENCY = 3'h0; + parameter [2:0] DEVICECAPABILITYENDPOINTL1LATENCY = 3'h0; + parameter [2:0] MSICAPABILITYMULTIMSGCAP = 3'h0; + parameter [2:0] PBCAPABILITYDW0PMSUBSTATE = 3'h0; + parameter [2:0] PBCAPABILITYDW0POWERRAIL = 3'h0; + parameter [2:0] PBCAPABILITYDW0TYPE = 3'h0; + parameter [2:0] PBCAPABILITYDW1PMSUBSTATE = 3'h0; + parameter [2:0] PBCAPABILITYDW1POWERRAIL = 3'h0; + parameter [2:0] PBCAPABILITYDW1TYPE = 3'h0; + parameter [2:0] PBCAPABILITYDW2PMSUBSTATE = 3'h0; + parameter [2:0] PBCAPABILITYDW2POWERRAIL = 3'h0; + parameter [2:0] PBCAPABILITYDW2TYPE = 3'h0; + parameter [2:0] PBCAPABILITYDW3PMSUBSTATE = 3'h0; + parameter [2:0] PBCAPABILITYDW3POWERRAIL = 3'h0; + parameter [2:0] PBCAPABILITYDW3TYPE = 3'h0; + parameter [2:0] PMCAPABILITYAUXCURRENT = 3'h0; + parameter [2:0] PORTVCCAPABILITYEXTENDEDVCCOUNT = 3'h0; + parameter [31:0] CARDBUSCISPOINTER = 32'h0; + parameter [3:0] XPDEVICEPORTTYPE = 4'h0; + parameter [4:0] PMCAPABILITYPMESUPPORT = 5'h0; + parameter [5:0] BAR0MASKWIDTH = 6'h14; + parameter [5:0] BAR1MASKWIDTH = 6'h0; + parameter [5:0] BAR2MASKWIDTH = 6'h0; + parameter [5:0] BAR3MASKWIDTH = 6'h0; + parameter [5:0] BAR4MASKWIDTH = 6'h0; + parameter [5:0] BAR5MASKWIDTH = 6'h0; + parameter [5:0] LINKCAPABILITYMAXLINKWIDTH = 6'h01; + parameter [63:0] DEVICESERIALNUMBER = 64'hE000000001000A35; + parameter [6:0] VC0TOTALCREDITSCH = 7'h0; + parameter [6:0] VC0TOTALCREDITSNPH = 7'h08; + parameter [6:0] VC0TOTALCREDITSPH = 7'h08; + parameter [6:0] VC1TOTALCREDITSCH = 7'h0; + parameter [6:0] VC1TOTALCREDITSNPH = 7'h0; + parameter [6:0] VC1TOTALCREDITSPH = 7'h0; + parameter [7:0] ACTIVELANESIN = 8'h1; + parameter [7:0] CAPABILITIESPOINTER = 8'h40; + parameter [7:0] INTERRUPTPIN = 8'h0; + parameter [7:0] MSICAPABILITYNEXTPTR = 8'h60; + parameter [7:0] PBCAPABILITYDW0BASEPOWER = 8'h0; + parameter [7:0] PBCAPABILITYDW1BASEPOWER = 8'h0; + parameter [7:0] PBCAPABILITYDW2BASEPOWER = 8'h0; + parameter [7:0] PBCAPABILITYDW3BASEPOWER = 8'h0; + parameter [7:0] PCIECAPABILITYNEXTPTR = 8'h0; + parameter [7:0] PMCAPABILITYNEXTPTR = 8'h60; + parameter [7:0] PMDATA0 = 8'h0; + parameter [7:0] PMDATA1 = 8'h0; + parameter [7:0] PMDATA2 = 8'h0; + parameter [7:0] PMDATA3 = 8'h0; + parameter [7:0] PMDATA4 = 8'h0; + parameter [7:0] PMDATA5 = 8'h0; + parameter [7:0] PMDATA6 = 8'h0; + parameter [7:0] PMDATA7 = 8'h0; + parameter [7:0] PORTVCCAPABILITYVCARBCAP = 8'h0; + parameter [7:0] PORTVCCAPABILITYVCARBTABLEOFFSET = 8'h0; + parameter [7:0] REVISIONID = 8'h0; + parameter [7:0] XPBASEPTR = 8'h60; + parameter BAR0ADDRWIDTH = 0; + parameter BAR0IOMEMN = 0; + parameter BAR1ADDRWIDTH = 0; + parameter BAR1IOMEMN = 0; + parameter BAR2ADDRWIDTH = 0; + parameter BAR2IOMEMN = 0; + parameter BAR3ADDRWIDTH = 0; + parameter BAR3IOMEMN = 0; + parameter BAR4ADDRWIDTH = 0; + parameter BAR4IOMEMN = 0; + parameter BAR5IOMEMN = 0; + parameter L0SEXITLATENCY = 7; + parameter L0SEXITLATENCYCOMCLK = 7; + parameter L1EXITLATENCY = 7; + parameter L1EXITLATENCYCOMCLK = 7; + parameter LOWPRIORITYVCCOUNT = 0; + parameter PMDATASCALE0 = 0; + parameter PMDATASCALE1 = 0; + parameter PMDATASCALE2 = 0; + parameter PMDATASCALE3 = 0; + parameter PMDATASCALE4 = 0; + parameter PMDATASCALE5 = 0; + parameter PMDATASCALE6 = 0; + parameter PMDATASCALE7 = 0; + parameter RETRYRAMREADLATENCY = 3; + parameter RETRYRAMWRITELATENCY = 1; + parameter TLRAMREADLATENCY = 3; + parameter TLRAMWRITELATENCY = 1; + parameter TXTSNFTS = 255; + parameter TXTSNFTSCOMCLK = 255; + parameter XPMAXPAYLOAD = 0; + output BUSMASTERENABLE; + output CRMDOHOTRESETN; + output CRMPWRSOFTRESETN; + output DLLTXPMDLLPOUTSTANDING; + output INTERRUPTDISABLE; + output IOSPACEENABLE; + output L0CFGLOOPBACKACK; + output L0DLLRXACKOUTSTANDING; + output L0DLLTXNONFCOUTSTANDING; + output L0DLLTXOUTSTANDING; + output L0FIRSTCFGWRITEOCCURRED; + output L0MACENTEREDL0; + output L0MACLINKTRAINING; + output L0MACLINKUP; + output L0MACNEWSTATEACK; + output L0MACRXL0SSTATE; + output L0MSIENABLE0; + output L0PMEACK; + output L0PMEEN; + output L0PMEREQOUT; + output L0PWRL1STATE; + output L0PWRL23READYSTATE; + output L0PWRTURNOFFREQ; + output L0PWRTXL0SSTATE; + output L0RXDLLPM; + output L0STATSCFGOTHERRECEIVED; + output L0STATSCFGOTHERTRANSMITTED; + output L0STATSCFGRECEIVED; + output L0STATSCFGTRANSMITTED; + output L0STATSDLLPRECEIVED; + output L0STATSDLLPTRANSMITTED; + output L0STATSOSRECEIVED; + output L0STATSOSTRANSMITTED; + output L0STATSTLPRECEIVED; + output L0STATSTLPTRANSMITTED; + output L0UNLOCKRECEIVED; + output LLKRXEOFN; + output LLKRXEOPN; + output LLKRXSOFN; + output LLKRXSOPN; + output LLKRXSRCLASTREQN; + output LLKRXSRCRDYN; + output LLKTXCONFIGREADYN; + output LLKTXDSTRDYN; + output MEMSPACEENABLE; + output MIMDLLBREN; + output MIMDLLBWEN; + output MIMRXBREN; + output MIMRXBWEN; + output MIMTXBREN; + output MIMTXBWEN; + output PARITYERRORRESPONSE; + output PIPEDESKEWLANESL0; + output PIPEDESKEWLANESL1; + output PIPEDESKEWLANESL2; + output PIPEDESKEWLANESL3; + output PIPEDESKEWLANESL4; + output PIPEDESKEWLANESL5; + output PIPEDESKEWLANESL6; + output PIPEDESKEWLANESL7; + output PIPERESETL0; + output PIPERESETL1; + output PIPERESETL2; + output PIPERESETL3; + output PIPERESETL4; + output PIPERESETL5; + output PIPERESETL6; + output PIPERESETL7; + output PIPERXPOLARITYL0; + output PIPERXPOLARITYL1; + output PIPERXPOLARITYL2; + output PIPERXPOLARITYL3; + output PIPERXPOLARITYL4; + output PIPERXPOLARITYL5; + output PIPERXPOLARITYL6; + output PIPERXPOLARITYL7; + output PIPETXCOMPLIANCEL0; + output PIPETXCOMPLIANCEL1; + output PIPETXCOMPLIANCEL2; + output PIPETXCOMPLIANCEL3; + output PIPETXCOMPLIANCEL4; + output PIPETXCOMPLIANCEL5; + output PIPETXCOMPLIANCEL6; + output PIPETXCOMPLIANCEL7; + output PIPETXDATAKL0; + output PIPETXDATAKL1; + output PIPETXDATAKL2; + output PIPETXDATAKL3; + output PIPETXDATAKL4; + output PIPETXDATAKL5; + output PIPETXDATAKL6; + output PIPETXDATAKL7; + output PIPETXDETECTRXLOOPBACKL0; + output PIPETXDETECTRXLOOPBACKL1; + output PIPETXDETECTRXLOOPBACKL2; + output PIPETXDETECTRXLOOPBACKL3; + output PIPETXDETECTRXLOOPBACKL4; + output PIPETXDETECTRXLOOPBACKL5; + output PIPETXDETECTRXLOOPBACKL6; + output PIPETXDETECTRXLOOPBACKL7; + output PIPETXELECIDLEL0; + output PIPETXELECIDLEL1; + output PIPETXELECIDLEL2; + output PIPETXELECIDLEL3; + output PIPETXELECIDLEL4; + output PIPETXELECIDLEL5; + output PIPETXELECIDLEL6; + output PIPETXELECIDLEL7; + output SERRENABLE; + output URREPORTINGENABLE; + output [11:0] MGMTSTATSCREDIT; + output [11:0] MIMDLLBRADD; + output [11:0] MIMDLLBWADD; + output [12:0] L0COMPLETERID; + output [12:0] MIMRXBRADD; + output [12:0] MIMRXBWADD; + output [12:0] MIMTXBRADD; + output [12:0] MIMTXBWADD; + output [15:0] LLKRXPREFERREDTYPE; + output [16:0] MGMTPSO; + output [1:0] L0PWRSTATE0; + output [1:0] L0RXMACLINKERROR; + output [1:0] LLKRXVALIDN; + output [1:0] PIPEPOWERDOWNL0; + output [1:0] PIPEPOWERDOWNL1; + output [1:0] PIPEPOWERDOWNL2; + output [1:0] PIPEPOWERDOWNL3; + output [1:0] PIPEPOWERDOWNL4; + output [1:0] PIPEPOWERDOWNL5; + output [1:0] PIPEPOWERDOWNL6; + output [1:0] PIPEPOWERDOWNL7; + output [2:0] L0MULTIMSGEN0; + output [2:0] L0RXDLLPMTYPE; + output [2:0] MAXPAYLOADSIZE; + output [2:0] MAXREADREQUESTSIZE; + output [31:0] MGMTRDATA; + output [3:0] L0LTSSMSTATE; + output [3:0] L0MACNEGOTIATEDLINKWIDTH; + output [63:0] LLKRXDATA; + output [63:0] MIMDLLBWDATA; + output [63:0] MIMRXBWDATA; + output [63:0] MIMTXBWDATA; + output [6:0] L0DLLERRORVECTOR; + output [7:0] L0DLLVCSTATUS; + output [7:0] L0DLUPDOWN; + output [7:0] LLKRXCHCOMPLETIONAVAILABLEN; + output [7:0] LLKRXCHNONPOSTEDAVAILABLEN; + output [7:0] LLKRXCHPOSTEDAVAILABLEN; + output [7:0] LLKTCSTATUS; + output [7:0] LLKTXCHCOMPLETIONREADYN; + output [7:0] LLKTXCHNONPOSTEDREADYN; + output [7:0] LLKTXCHPOSTEDREADYN; + output [7:0] PIPETXDATAL0; + output [7:0] PIPETXDATAL1; + output [7:0] PIPETXDATAL2; + output [7:0] PIPETXDATAL3; + output [7:0] PIPETXDATAL4; + output [7:0] PIPETXDATAL5; + output [7:0] PIPETXDATAL6; + output [7:0] PIPETXDATAL7; + output [9:0] LLKTXCHANSPACE; + input AUXPOWER; + input COMPLIANCEAVOID; + input CRMCORECLK; + input CRMCORECLKDLO; + input CRMCORECLKRXO; + input CRMCORECLKTXO; + input CRMLINKRSTN; + input CRMMACRSTN; + input CRMMGMTRSTN; + input CRMNVRSTN; + input CRMURSTN; + input CRMUSERCFGRSTN; + input CRMUSERCLK; + input CRMUSERCLKRXO; + input CRMUSERCLKTXO; + input L0CFGDISABLESCRAMBLE; + input L0CFGLOOPBACKMASTER; + input L0LEGACYINTFUNCT0; + input L0PMEREQIN; + input L0SETCOMPLETERABORTERROR; + input L0SETCOMPLETIONTIMEOUTCORRERROR; + input L0SETCOMPLETIONTIMEOUTUNCORRERROR; + input L0SETDETECTEDCORRERROR; + input L0SETDETECTEDFATALERROR; + input L0SETDETECTEDNONFATALERROR; + input L0SETUNEXPECTEDCOMPLETIONCORRERROR; + input L0SETUNEXPECTEDCOMPLETIONUNCORRERROR; + input L0SETUNSUPPORTEDREQUESTNONPOSTEDERROR; + input L0SETUNSUPPORTEDREQUESTOTHERERROR; + input L0SETUSERDETECTEDPARITYERROR; + input L0SETUSERMASTERDATAPARITY; + input L0SETUSERRECEIVEDMASTERABORT; + input L0SETUSERRECEIVEDTARGETABORT; + input L0SETUSERSIGNALLEDTARGETABORT; + input L0SETUSERSYSTEMERROR; + input L0TRANSACTIONSPENDING; + input LLKRXDSTCONTREQN; + input LLKRXDSTREQN; + input LLKTXEOFN; + input LLKTXEOPN; + input LLKTXSOFN; + input LLKTXSOPN; + input LLKTXSRCDSCN; + input LLKTXSRCRDYN; + input MGMTRDEN; + input MGMTWREN; + input PIPEPHYSTATUSL0; + input PIPEPHYSTATUSL1; + input PIPEPHYSTATUSL2; + input PIPEPHYSTATUSL3; + input PIPEPHYSTATUSL4; + input PIPEPHYSTATUSL5; + input PIPEPHYSTATUSL6; + input PIPEPHYSTATUSL7; + input PIPERXCHANISALIGNEDL0; + input PIPERXCHANISALIGNEDL1; + input PIPERXCHANISALIGNEDL2; + input PIPERXCHANISALIGNEDL3; + input PIPERXCHANISALIGNEDL4; + input PIPERXCHANISALIGNEDL5; + input PIPERXCHANISALIGNEDL6; + input PIPERXCHANISALIGNEDL7; + input PIPERXDATAKL0; + input PIPERXDATAKL1; + input PIPERXDATAKL2; + input PIPERXDATAKL3; + input PIPERXDATAKL4; + input PIPERXDATAKL5; + input PIPERXDATAKL6; + input PIPERXDATAKL7; + input PIPERXELECIDLEL0; + input PIPERXELECIDLEL1; + input PIPERXELECIDLEL2; + input PIPERXELECIDLEL3; + input PIPERXELECIDLEL4; + input PIPERXELECIDLEL5; + input PIPERXELECIDLEL6; + input PIPERXELECIDLEL7; + input PIPERXVALIDL0; + input PIPERXVALIDL1; + input PIPERXVALIDL2; + input PIPERXVALIDL3; + input PIPERXVALIDL4; + input PIPERXVALIDL5; + input PIPERXVALIDL6; + input PIPERXVALIDL7; + input [10:0] MGMTADDR; + input [127:0] L0PACKETHEADERFROMUSER; + input [1:0] LLKRXCHFIFO; + input [1:0] LLKTXCHFIFO; + input [1:0] LLKTXENABLEN; + input [2:0] LLKRXCHTC; + input [2:0] LLKTXCHTC; + input [2:0] PIPERXSTATUSL0; + input [2:0] PIPERXSTATUSL1; + input [2:0] PIPERXSTATUSL2; + input [2:0] PIPERXSTATUSL3; + input [2:0] PIPERXSTATUSL4; + input [2:0] PIPERXSTATUSL5; + input [2:0] PIPERXSTATUSL6; + input [2:0] PIPERXSTATUSL7; + input [31:0] MGMTWDATA; + input [3:0] L0MSIREQUEST0; + input [3:0] MGMTBWREN; + input [63:0] LLKTXDATA; + input [63:0] MIMDLLBRDATA; + input [63:0] MIMRXBRDATA; + input [63:0] MIMTXBRDATA; + input [6:0] MGMTSTATSCREDITSEL; + input [7:0] PIPERXDATAL0; + input [7:0] PIPERXDATAL1; + input [7:0] PIPERXDATAL2; + input [7:0] PIPERXDATAL3; + input [7:0] PIPERXDATAL4; + input [7:0] PIPERXDATAL5; + input [7:0] PIPERXDATAL6; + input [7:0] PIPERXDATAL7; +endmodule + +module PCIE_2_0 (...); + parameter [11:0] AER_BASE_PTR = 12'h128; + parameter AER_CAP_ECRC_CHECK_CAPABLE = "FALSE"; + parameter AER_CAP_ECRC_GEN_CAPABLE = "FALSE"; + parameter [15:0] AER_CAP_ID = 16'h0001; + parameter [4:0] AER_CAP_INT_MSG_NUM_MSI = 5'h0A; + parameter [4:0] AER_CAP_INT_MSG_NUM_MSIX = 5'h15; + parameter [11:0] AER_CAP_NEXTPTR = 12'h160; + parameter AER_CAP_ON = "FALSE"; + parameter AER_CAP_PERMIT_ROOTERR_UPDATE = "TRUE"; + parameter [3:0] AER_CAP_VERSION = 4'h1; + parameter ALLOW_X8_GEN2 = "FALSE"; + parameter [31:0] BAR0 = 32'hFFFFFF00; + parameter [31:0] BAR1 = 32'hFFFF0000; + parameter [31:0] BAR2 = 32'hFFFF000C; + parameter [31:0] BAR3 = 32'hFFFFFFFF; + parameter [31:0] BAR4 = 32'h00000000; + parameter [31:0] BAR5 = 32'h00000000; + parameter [7:0] CAPABILITIES_PTR = 8'h40; + parameter [31:0] CARDBUS_CIS_POINTER = 32'h00000000; + parameter [23:0] CLASS_CODE = 24'h000000; + parameter CMD_INTX_IMPLEMENTED = "TRUE"; + parameter CPL_TIMEOUT_DISABLE_SUPPORTED = "FALSE"; + parameter [3:0] CPL_TIMEOUT_RANGES_SUPPORTED = 4'h0; + parameter [6:0] CRM_MODULE_RSTS = 7'h00; + parameter [15:0] DEVICE_ID = 16'h0007; + parameter DEV_CAP_ENABLE_SLOT_PWR_LIMIT_SCALE = "TRUE"; + parameter DEV_CAP_ENABLE_SLOT_PWR_LIMIT_VALUE = "TRUE"; + parameter integer DEV_CAP_ENDPOINT_L0S_LATENCY = 0; + parameter integer DEV_CAP_ENDPOINT_L1_LATENCY = 0; + parameter DEV_CAP_EXT_TAG_SUPPORTED = "TRUE"; + parameter DEV_CAP_FUNCTION_LEVEL_RESET_CAPABLE = "FALSE"; + parameter integer DEV_CAP_MAX_PAYLOAD_SUPPORTED = 2; + parameter integer DEV_CAP_PHANTOM_FUNCTIONS_SUPPORT = 0; + parameter DEV_CAP_ROLE_BASED_ERROR = "TRUE"; + parameter integer DEV_CAP_RSVD_14_12 = 0; + parameter integer DEV_CAP_RSVD_17_16 = 0; + parameter integer DEV_CAP_RSVD_31_29 = 0; + parameter DEV_CONTROL_AUX_POWER_SUPPORTED = "FALSE"; + parameter DISABLE_ASPM_L1_TIMER = "FALSE"; + parameter DISABLE_BAR_FILTERING = "FALSE"; + parameter DISABLE_ID_CHECK = "FALSE"; + parameter DISABLE_LANE_REVERSAL = "FALSE"; + parameter DISABLE_RX_TC_FILTER = "FALSE"; + parameter DISABLE_SCRAMBLING = "FALSE"; + parameter [7:0] DNSTREAM_LINK_NUM = 8'h00; + parameter [11:0] DSN_BASE_PTR = 12'h100; + parameter [15:0] DSN_CAP_ID = 16'h0003; + parameter [11:0] DSN_CAP_NEXTPTR = 12'h000; + parameter DSN_CAP_ON = "TRUE"; + parameter [3:0] DSN_CAP_VERSION = 4'h1; + parameter [10:0] ENABLE_MSG_ROUTE = 11'h000; + parameter ENABLE_RX_TD_ECRC_TRIM = "FALSE"; + parameter ENTER_RVRY_EI_L0 = "TRUE"; + parameter EXIT_LOOPBACK_ON_EI = "TRUE"; + parameter [31:0] EXPANSION_ROM = 32'hFFFFF001; + parameter [5:0] EXT_CFG_CAP_PTR = 6'h3F; + parameter [9:0] EXT_CFG_XP_CAP_PTR = 10'h3FF; + parameter [7:0] HEADER_TYPE = 8'h00; + parameter [4:0] INFER_EI = 5'h00; + parameter [7:0] INTERRUPT_PIN = 8'h01; + parameter IS_SWITCH = "FALSE"; + parameter [9:0] LAST_CONFIG_DWORD = 10'h042; + parameter integer LINK_CAP_ASPM_SUPPORT = 1; + parameter LINK_CAP_CLOCK_POWER_MANAGEMENT = "FALSE"; + parameter LINK_CAP_DLL_LINK_ACTIVE_REPORTING_CAP = "FALSE"; + parameter integer LINK_CAP_L0S_EXIT_LATENCY_COMCLK_GEN1 = 7; + parameter integer LINK_CAP_L0S_EXIT_LATENCY_COMCLK_GEN2 = 7; + parameter integer LINK_CAP_L0S_EXIT_LATENCY_GEN1 = 7; + parameter integer LINK_CAP_L0S_EXIT_LATENCY_GEN2 = 7; + parameter integer LINK_CAP_L1_EXIT_LATENCY_COMCLK_GEN1 = 7; + parameter integer LINK_CAP_L1_EXIT_LATENCY_COMCLK_GEN2 = 7; + parameter integer LINK_CAP_L1_EXIT_LATENCY_GEN1 = 7; + parameter integer LINK_CAP_L1_EXIT_LATENCY_GEN2 = 7; + parameter LINK_CAP_LINK_BANDWIDTH_NOTIFICATION_CAP = "FALSE"; + parameter [3:0] LINK_CAP_MAX_LINK_SPEED = 4'h1; + parameter [5:0] LINK_CAP_MAX_LINK_WIDTH = 6'h08; + parameter integer LINK_CAP_RSVD_23_22 = 0; + parameter LINK_CAP_SURPRISE_DOWN_ERROR_CAPABLE = "FALSE"; + parameter integer LINK_CONTROL_RCB = 0; + parameter LINK_CTRL2_DEEMPHASIS = "FALSE"; + parameter LINK_CTRL2_HW_AUTONOMOUS_SPEED_DISABLE = "FALSE"; + parameter [3:0] LINK_CTRL2_TARGET_LINK_SPEED = 4'h2; + parameter LINK_STATUS_SLOT_CLOCK_CONFIG = "TRUE"; + parameter [14:0] LL_ACK_TIMEOUT = 15'h0000; + parameter LL_ACK_TIMEOUT_EN = "FALSE"; + parameter integer LL_ACK_TIMEOUT_FUNC = 0; + parameter [14:0] LL_REPLAY_TIMEOUT = 15'h0000; + parameter LL_REPLAY_TIMEOUT_EN = "FALSE"; + parameter integer LL_REPLAY_TIMEOUT_FUNC = 0; + parameter [5:0] LTSSM_MAX_LINK_WIDTH = 6'h01; + parameter [7:0] MSIX_BASE_PTR = 8'h9C; + parameter [7:0] MSIX_CAP_ID = 8'h11; + parameter [7:0] MSIX_CAP_NEXTPTR = 8'h00; + parameter MSIX_CAP_ON = "FALSE"; + parameter integer MSIX_CAP_PBA_BIR = 0; + parameter [28:0] MSIX_CAP_PBA_OFFSET = 29'h00000050; + parameter integer MSIX_CAP_TABLE_BIR = 0; + parameter [28:0] MSIX_CAP_TABLE_OFFSET = 29'h00000040; + parameter [10:0] MSIX_CAP_TABLE_SIZE = 11'h000; + parameter [7:0] MSI_BASE_PTR = 8'h48; + parameter MSI_CAP_64_BIT_ADDR_CAPABLE = "TRUE"; + parameter [7:0] MSI_CAP_ID = 8'h05; + parameter integer MSI_CAP_MULTIMSGCAP = 0; + parameter integer MSI_CAP_MULTIMSG_EXTENSION = 0; + parameter [7:0] MSI_CAP_NEXTPTR = 8'h60; + parameter MSI_CAP_ON = "FALSE"; + parameter MSI_CAP_PER_VECTOR_MASKING_CAPABLE = "TRUE"; + parameter integer N_FTS_COMCLK_GEN1 = 255; + parameter integer N_FTS_COMCLK_GEN2 = 255; + parameter integer N_FTS_GEN1 = 255; + parameter integer N_FTS_GEN2 = 255; + parameter [7:0] PCIE_BASE_PTR = 8'h60; + parameter [7:0] PCIE_CAP_CAPABILITY_ID = 8'h10; + parameter [3:0] PCIE_CAP_CAPABILITY_VERSION = 4'h2; + parameter [3:0] PCIE_CAP_DEVICE_PORT_TYPE = 4'h0; + parameter [4:0] PCIE_CAP_INT_MSG_NUM = 5'h00; + parameter [7:0] PCIE_CAP_NEXTPTR = 8'h00; + parameter PCIE_CAP_ON = "TRUE"; + parameter integer PCIE_CAP_RSVD_15_14 = 0; + parameter PCIE_CAP_SLOT_IMPLEMENTED = "FALSE"; + parameter integer PCIE_REVISION = 2; + parameter integer PGL0_LANE = 0; + parameter integer PGL1_LANE = 1; + parameter integer PGL2_LANE = 2; + parameter integer PGL3_LANE = 3; + parameter integer PGL4_LANE = 4; + parameter integer PGL5_LANE = 5; + parameter integer PGL6_LANE = 6; + parameter integer PGL7_LANE = 7; + parameter integer PL_AUTO_CONFIG = 0; + parameter PL_FAST_TRAIN = "FALSE"; + parameter [7:0] PM_BASE_PTR = 8'h40; + parameter integer PM_CAP_AUXCURRENT = 0; + parameter PM_CAP_D1SUPPORT = "TRUE"; + parameter PM_CAP_D2SUPPORT = "TRUE"; + parameter PM_CAP_DSI = "FALSE"; + parameter [7:0] PM_CAP_ID = 8'h01; + parameter [7:0] PM_CAP_NEXTPTR = 8'h48; + parameter PM_CAP_ON = "TRUE"; + parameter [4:0] PM_CAP_PMESUPPORT = 5'h0F; + parameter PM_CAP_PME_CLOCK = "FALSE"; + parameter integer PM_CAP_RSVD_04 = 0; + parameter integer PM_CAP_VERSION = 3; + parameter PM_CSR_B2B3 = "FALSE"; + parameter PM_CSR_BPCCEN = "FALSE"; + parameter PM_CSR_NOSOFTRST = "TRUE"; + parameter [7:0] PM_DATA0 = 8'h01; + parameter [7:0] PM_DATA1 = 8'h01; + parameter [7:0] PM_DATA2 = 8'h01; + parameter [7:0] PM_DATA3 = 8'h01; + parameter [7:0] PM_DATA4 = 8'h01; + parameter [7:0] PM_DATA5 = 8'h01; + parameter [7:0] PM_DATA6 = 8'h01; + parameter [7:0] PM_DATA7 = 8'h01; + parameter [1:0] PM_DATA_SCALE0 = 2'h1; + parameter [1:0] PM_DATA_SCALE1 = 2'h1; + parameter [1:0] PM_DATA_SCALE2 = 2'h1; + parameter [1:0] PM_DATA_SCALE3 = 2'h1; + parameter [1:0] PM_DATA_SCALE4 = 2'h1; + parameter [1:0] PM_DATA_SCALE5 = 2'h1; + parameter [1:0] PM_DATA_SCALE6 = 2'h1; + parameter [1:0] PM_DATA_SCALE7 = 2'h1; + parameter integer RECRC_CHK = 0; + parameter RECRC_CHK_TRIM = "FALSE"; + parameter [7:0] REVISION_ID = 8'h00; + parameter ROOT_CAP_CRS_SW_VISIBILITY = "FALSE"; + parameter SELECT_DLL_IF = "FALSE"; + parameter SIM_VERSION = "1.0"; + parameter SLOT_CAP_ATT_BUTTON_PRESENT = "FALSE"; + parameter SLOT_CAP_ATT_INDICATOR_PRESENT = "FALSE"; + parameter SLOT_CAP_ELEC_INTERLOCK_PRESENT = "FALSE"; + parameter SLOT_CAP_HOTPLUG_CAPABLE = "FALSE"; + parameter SLOT_CAP_HOTPLUG_SURPRISE = "FALSE"; + parameter SLOT_CAP_MRL_SENSOR_PRESENT = "FALSE"; + parameter SLOT_CAP_NO_CMD_COMPLETED_SUPPORT = "FALSE"; + parameter [12:0] SLOT_CAP_PHYSICAL_SLOT_NUM = 13'h0000; + parameter SLOT_CAP_POWER_CONTROLLER_PRESENT = "FALSE"; + parameter SLOT_CAP_POWER_INDICATOR_PRESENT = "FALSE"; + parameter integer SLOT_CAP_SLOT_POWER_LIMIT_SCALE = 0; + parameter [7:0] SLOT_CAP_SLOT_POWER_LIMIT_VALUE = 8'h00; + parameter integer SPARE_BIT0 = 0; + parameter integer SPARE_BIT1 = 0; + parameter integer SPARE_BIT2 = 0; + parameter integer SPARE_BIT3 = 0; + parameter integer SPARE_BIT4 = 0; + parameter integer SPARE_BIT5 = 0; + parameter integer SPARE_BIT6 = 0; + parameter integer SPARE_BIT7 = 0; + parameter integer SPARE_BIT8 = 0; + parameter [7:0] SPARE_BYTE0 = 8'h00; + parameter [7:0] SPARE_BYTE1 = 8'h00; + parameter [7:0] SPARE_BYTE2 = 8'h00; + parameter [7:0] SPARE_BYTE3 = 8'h00; + parameter [31:0] SPARE_WORD0 = 32'h00000000; + parameter [31:0] SPARE_WORD1 = 32'h00000000; + parameter [31:0] SPARE_WORD2 = 32'h00000000; + parameter [31:0] SPARE_WORD3 = 32'h00000000; + parameter [15:0] SUBSYSTEM_ID = 16'h0007; + parameter [15:0] SUBSYSTEM_VENDOR_ID = 16'h10EE; + parameter TL_RBYPASS = "FALSE"; + parameter integer TL_RX_RAM_RADDR_LATENCY = 0; + parameter integer TL_RX_RAM_RDATA_LATENCY = 2; + parameter integer TL_RX_RAM_WRITE_LATENCY = 0; + parameter TL_TFC_DISABLE = "FALSE"; + parameter TL_TX_CHECKS_DISABLE = "FALSE"; + parameter integer TL_TX_RAM_RADDR_LATENCY = 0; + parameter integer TL_TX_RAM_RDATA_LATENCY = 2; + parameter integer TL_TX_RAM_WRITE_LATENCY = 0; + parameter UPCONFIG_CAPABLE = "TRUE"; + parameter UPSTREAM_FACING = "TRUE"; + parameter UR_INV_REQ = "TRUE"; + parameter integer USER_CLK_FREQ = 3; + parameter VC0_CPL_INFINITE = "TRUE"; + parameter [12:0] VC0_RX_RAM_LIMIT = 13'h03FF; + parameter integer VC0_TOTAL_CREDITS_CD = 127; + parameter integer VC0_TOTAL_CREDITS_CH = 31; + parameter integer VC0_TOTAL_CREDITS_NPH = 12; + parameter integer VC0_TOTAL_CREDITS_PD = 288; + parameter integer VC0_TOTAL_CREDITS_PH = 32; + parameter integer VC0_TX_LASTPACKET = 31; + parameter [11:0] VC_BASE_PTR = 12'h10C; + parameter [15:0] VC_CAP_ID = 16'h0002; + parameter [11:0] VC_CAP_NEXTPTR = 12'h000; + parameter VC_CAP_ON = "FALSE"; + parameter VC_CAP_REJECT_SNOOP_TRANSACTIONS = "FALSE"; + parameter [3:0] VC_CAP_VERSION = 4'h1; + parameter [15:0] VENDOR_ID = 16'h10EE; + parameter [11:0] VSEC_BASE_PTR = 12'h160; + parameter [15:0] VSEC_CAP_HDR_ID = 16'h1234; + parameter [11:0] VSEC_CAP_HDR_LENGTH = 12'h018; + parameter [3:0] VSEC_CAP_HDR_REVISION = 4'h1; + parameter [15:0] VSEC_CAP_ID = 16'h000B; + parameter VSEC_CAP_IS_LINK_VISIBLE = "TRUE"; + parameter [11:0] VSEC_CAP_NEXTPTR = 12'h000; + parameter VSEC_CAP_ON = "FALSE"; + parameter [3:0] VSEC_CAP_VERSION = 4'h1; + output CFGAERECRCCHECKEN; + output CFGAERECRCGENEN; + output CFGCOMMANDBUSMASTERENABLE; + output CFGCOMMANDINTERRUPTDISABLE; + output CFGCOMMANDIOENABLE; + output CFGCOMMANDMEMENABLE; + output CFGCOMMANDSERREN; + output CFGDEVCONTROL2CPLTIMEOUTDIS; + output CFGDEVCONTROLAUXPOWEREN; + output CFGDEVCONTROLCORRERRREPORTINGEN; + output CFGDEVCONTROLENABLERO; + output CFGDEVCONTROLEXTTAGEN; + output CFGDEVCONTROLFATALERRREPORTINGEN; + output CFGDEVCONTROLNONFATALREPORTINGEN; + output CFGDEVCONTROLNOSNOOPEN; + output CFGDEVCONTROLPHANTOMEN; + output CFGDEVCONTROLURERRREPORTINGEN; + output CFGDEVSTATUSCORRERRDETECTED; + output CFGDEVSTATUSFATALERRDETECTED; + output CFGDEVSTATUSNONFATALERRDETECTED; + output CFGDEVSTATUSURDETECTED; + output CFGERRAERHEADERLOGSETN; + output CFGERRCPLRDYN; + output CFGINTERRUPTMSIENABLE; + output CFGINTERRUPTMSIXENABLE; + output CFGINTERRUPTMSIXFM; + output CFGINTERRUPTRDYN; + output CFGLINKCONTROLAUTOBANDWIDTHINTEN; + output CFGLINKCONTROLBANDWIDTHINTEN; + output CFGLINKCONTROLCLOCKPMEN; + output CFGLINKCONTROLCOMMONCLOCK; + output CFGLINKCONTROLEXTENDEDSYNC; + output CFGLINKCONTROLHWAUTOWIDTHDIS; + output CFGLINKCONTROLLINKDISABLE; + output CFGLINKCONTROLRCB; + output CFGLINKCONTROLRETRAINLINK; + output CFGLINKSTATUSAUTOBANDWIDTHSTATUS; + output CFGLINKSTATUSBANDWITHSTATUS; + output CFGLINKSTATUSDLLACTIVE; + output CFGLINKSTATUSLINKTRAINING; + output CFGMSGRECEIVED; + output CFGMSGRECEIVEDASSERTINTA; + output CFGMSGRECEIVEDASSERTINTB; + output CFGMSGRECEIVEDASSERTINTC; + output CFGMSGRECEIVEDASSERTINTD; + output CFGMSGRECEIVEDDEASSERTINTA; + output CFGMSGRECEIVEDDEASSERTINTB; + output CFGMSGRECEIVEDDEASSERTINTC; + output CFGMSGRECEIVEDDEASSERTINTD; + output CFGMSGRECEIVEDERRCOR; + output CFGMSGRECEIVEDERRFATAL; + output CFGMSGRECEIVEDERRNONFATAL; + output CFGMSGRECEIVEDPMASNAK; + output CFGMSGRECEIVEDPMETO; + output CFGMSGRECEIVEDPMETOACK; + output CFGMSGRECEIVEDPMPME; + output CFGMSGRECEIVEDSETSLOTPOWERLIMIT; + output CFGMSGRECEIVEDUNLOCK; + output CFGPMCSRPMEEN; + output CFGPMCSRPMESTATUS; + output CFGPMRCVASREQL1N; + output CFGPMRCVENTERL1N; + output CFGPMRCVENTERL23N; + output CFGPMRCVREQACKN; + output CFGRDWRDONEN; + output CFGSLOTCONTROLELECTROMECHILCTLPULSE; + output CFGTRANSACTION; + output CFGTRANSACTIONTYPE; + output DBGSCLRA; + output DBGSCLRB; + output DBGSCLRC; + output DBGSCLRD; + output DBGSCLRE; + output DBGSCLRF; + output DBGSCLRG; + output DBGSCLRH; + output DBGSCLRI; + output DBGSCLRJ; + output DBGSCLRK; + output DRPDRDY; + output LL2BADDLLPERRN; + output LL2BADTLPERRN; + output LL2PROTOCOLERRN; + output LL2REPLAYROERRN; + output LL2REPLAYTOERRN; + output LL2SUSPENDOKN; + output LL2TFCINIT1SEQN; + output LL2TFCINIT2SEQN; + output LNKCLKEN; + output MIMRXRCE; + output MIMRXREN; + output MIMRXWEN; + output MIMTXRCE; + output MIMTXREN; + output MIMTXWEN; + output PIPERX0POLARITY; + output PIPERX1POLARITY; + output PIPERX2POLARITY; + output PIPERX3POLARITY; + output PIPERX4POLARITY; + output PIPERX5POLARITY; + output PIPERX6POLARITY; + output PIPERX7POLARITY; + output PIPETX0COMPLIANCE; + output PIPETX0ELECIDLE; + output PIPETX1COMPLIANCE; + output PIPETX1ELECIDLE; + output PIPETX2COMPLIANCE; + output PIPETX2ELECIDLE; + output PIPETX3COMPLIANCE; + output PIPETX3ELECIDLE; + output PIPETX4COMPLIANCE; + output PIPETX4ELECIDLE; + output PIPETX5COMPLIANCE; + output PIPETX5ELECIDLE; + output PIPETX6COMPLIANCE; + output PIPETX6ELECIDLE; + output PIPETX7COMPLIANCE; + output PIPETX7ELECIDLE; + output PIPETXDEEMPH; + output PIPETXRATE; + output PIPETXRCVRDET; + output PIPETXRESET; + output PL2LINKUPN; + output PL2RECEIVERERRN; + output PL2RECOVERYN; + output PL2RXELECIDLE; + output PL2SUSPENDOK; + output PLLINKGEN2CAP; + output PLLINKPARTNERGEN2SUPPORTED; + output PLLINKUPCFGCAP; + output PLPHYLNKUPN; + output PLRECEIVEDHOTRST; + output PLSELLNKRATE; + output RECEIVEDFUNCLVLRSTN; + output TL2ASPMSUSPENDCREDITCHECKOKN; + output TL2ASPMSUSPENDREQN; + output TL2PPMSUSPENDOKN; + output TRNLNKUPN; + output TRNRDLLPSRCRDYN; + output TRNRECRCERRN; + output TRNREOFN; + output TRNRERRFWDN; + output TRNRREMN; + output TRNRSOFN; + output TRNRSRCDSCN; + output TRNRSRCRDYN; + output TRNTCFGREQN; + output TRNTDLLPDSTRDYN; + output TRNTDSTRDYN; + output TRNTERRDROPN; + output USERRSTN; + output [11:0] DBGVECC; + output [11:0] PLDBGVEC; + output [11:0] TRNFCCPLD; + output [11:0] TRNFCNPD; + output [11:0] TRNFCPD; + output [12:0] MIMRXRADDR; + output [12:0] MIMRXWADDR; + output [12:0] MIMTXRADDR; + output [12:0] MIMTXWADDR; + output [15:0] CFGMSGDATA; + output [15:0] DRPDO; + output [15:0] PIPETX0DATA; + output [15:0] PIPETX1DATA; + output [15:0] PIPETX2DATA; + output [15:0] PIPETX3DATA; + output [15:0] PIPETX4DATA; + output [15:0] PIPETX5DATA; + output [15:0] PIPETX6DATA; + output [15:0] PIPETX7DATA; + output [1:0] CFGLINKCONTROLASPMCONTROL; + output [1:0] CFGLINKSTATUSCURRENTSPEED; + output [1:0] CFGPMCSRPOWERSTATE; + output [1:0] PIPETX0CHARISK; + output [1:0] PIPETX0POWERDOWN; + output [1:0] PIPETX1CHARISK; + output [1:0] PIPETX1POWERDOWN; + output [1:0] PIPETX2CHARISK; + output [1:0] PIPETX2POWERDOWN; + output [1:0] PIPETX3CHARISK; + output [1:0] PIPETX3POWERDOWN; + output [1:0] PIPETX4CHARISK; + output [1:0] PIPETX4POWERDOWN; + output [1:0] PIPETX5CHARISK; + output [1:0] PIPETX5POWERDOWN; + output [1:0] PIPETX6CHARISK; + output [1:0] PIPETX6POWERDOWN; + output [1:0] PIPETX7CHARISK; + output [1:0] PIPETX7POWERDOWN; + output [1:0] PLLANEREVERSALMODE; + output [1:0] PLRXPMSTATE; + output [1:0] PLSELLNKWIDTH; + output [2:0] CFGDEVCONTROLMAXPAYLOAD; + output [2:0] CFGDEVCONTROLMAXREADREQ; + output [2:0] CFGINTERRUPTMMENABLE; + output [2:0] CFGPCIELINKSTATE; + output [2:0] PIPETXMARGIN; + output [2:0] PLINITIALLINKWIDTH; + output [2:0] PLTXPMSTATE; + output [31:0] CFGDO; + output [31:0] TRNRDLLPDATA; + output [3:0] CFGDEVCONTROL2CPLTIMEOUTVAL; + output [3:0] CFGLINKSTATUSNEGOTIATEDWIDTH; + output [5:0] PLLTSSMSTATE; + output [5:0] TRNTBUFAV; + output [63:0] DBGVECA; + output [63:0] DBGVECB; + output [63:0] TRNRD; + output [67:0] MIMRXWDATA; + output [68:0] MIMTXWDATA; + output [6:0] CFGTRANSACTIONADDR; + output [6:0] CFGVCTCVCMAP; + output [6:0] TRNRBARHITN; + output [7:0] CFGINTERRUPTDO; + output [7:0] TRNFCCPLH; + output [7:0] TRNFCNPH; + output [7:0] TRNFCPH; + input CFGERRACSN; + input CFGERRCORN; + input CFGERRCPLABORTN; + input CFGERRCPLTIMEOUTN; + input CFGERRCPLUNEXPECTN; + input CFGERRECRCN; + input CFGERRLOCKEDN; + input CFGERRPOSTEDN; + input CFGERRURN; + input CFGINTERRUPTASSERTN; + input CFGINTERRUPTN; + input CFGPMDIRECTASPML1N; + input CFGPMSENDPMACKN; + input CFGPMSENDPMETON; + input CFGPMSENDPMNAKN; + input CFGPMTURNOFFOKN; + input CFGPMWAKEN; + input CFGRDENN; + input CFGTRNPENDINGN; + input CFGWRENN; + input CFGWRREADONLYN; + input CFGWRRW1CASRWN; + input CMRSTN; + input CMSTICKYRSTN; + input DBGSUBMODE; + input DLRSTN; + input DRPCLK; + input DRPDEN; + input DRPDWE; + input FUNCLVLRSTN; + input LL2SENDASREQL1N; + input LL2SENDENTERL1N; + input LL2SENDENTERL23N; + input LL2SUSPENDNOWN; + input LL2TLPRCVN; + input PIPECLK; + input PIPERX0CHANISALIGNED; + input PIPERX0ELECIDLE; + input PIPERX0PHYSTATUS; + input PIPERX0VALID; + input PIPERX1CHANISALIGNED; + input PIPERX1ELECIDLE; + input PIPERX1PHYSTATUS; + input PIPERX1VALID; + input PIPERX2CHANISALIGNED; + input PIPERX2ELECIDLE; + input PIPERX2PHYSTATUS; + input PIPERX2VALID; + input PIPERX3CHANISALIGNED; + input PIPERX3ELECIDLE; + input PIPERX3PHYSTATUS; + input PIPERX3VALID; + input PIPERX4CHANISALIGNED; + input PIPERX4ELECIDLE; + input PIPERX4PHYSTATUS; + input PIPERX4VALID; + input PIPERX5CHANISALIGNED; + input PIPERX5ELECIDLE; + input PIPERX5PHYSTATUS; + input PIPERX5VALID; + input PIPERX6CHANISALIGNED; + input PIPERX6ELECIDLE; + input PIPERX6PHYSTATUS; + input PIPERX6VALID; + input PIPERX7CHANISALIGNED; + input PIPERX7ELECIDLE; + input PIPERX7PHYSTATUS; + input PIPERX7VALID; + input PLDIRECTEDLINKAUTON; + input PLDIRECTEDLINKSPEED; + input PLDOWNSTREAMDEEMPHSOURCE; + input PLRSTN; + input PLTRANSMITHOTRST; + input PLUPSTREAMPREFERDEEMPH; + input SYSRSTN; + input TL2ASPMSUSPENDCREDITCHECKN; + input TL2PPMSUSPENDREQN; + input TLRSTN; + input TRNRDSTRDYN; + input TRNRNPOKN; + input TRNTCFGGNTN; + input TRNTDLLPSRCRDYN; + input TRNTECRCGENN; + input TRNTEOFN; + input TRNTERRFWDN; + input TRNTREMN; + input TRNTSOFN; + input TRNTSRCDSCN; + input TRNTSRCRDYN; + input TRNTSTRN; + input USERCLK; + input [127:0] CFGERRAERHEADERLOG; + input [15:0] DRPDI; + input [15:0] PIPERX0DATA; + input [15:0] PIPERX1DATA; + input [15:0] PIPERX2DATA; + input [15:0] PIPERX3DATA; + input [15:0] PIPERX4DATA; + input [15:0] PIPERX5DATA; + input [15:0] PIPERX6DATA; + input [15:0] PIPERX7DATA; + input [1:0] DBGMODE; + input [1:0] PIPERX0CHARISK; + input [1:0] PIPERX1CHARISK; + input [1:0] PIPERX2CHARISK; + input [1:0] PIPERX3CHARISK; + input [1:0] PIPERX4CHARISK; + input [1:0] PIPERX5CHARISK; + input [1:0] PIPERX6CHARISK; + input [1:0] PIPERX7CHARISK; + input [1:0] PLDIRECTEDLINKCHANGE; + input [1:0] PLDIRECTEDLINKWIDTH; + input [2:0] CFGDSFUNCTIONNUMBER; + input [2:0] PIPERX0STATUS; + input [2:0] PIPERX1STATUS; + input [2:0] PIPERX2STATUS; + input [2:0] PIPERX3STATUS; + input [2:0] PIPERX4STATUS; + input [2:0] PIPERX5STATUS; + input [2:0] PIPERX6STATUS; + input [2:0] PIPERX7STATUS; + input [2:0] PLDBGMODE; + input [2:0] TRNFCSEL; + input [31:0] CFGDI; + input [31:0] TRNTDLLPDATA; + input [3:0] CFGBYTEENN; + input [47:0] CFGERRTLPCPLHEADER; + input [4:0] CFGDSDEVICENUMBER; + input [4:0] PL2DIRECTEDLSTATE; + input [63:0] CFGDSN; + input [63:0] TRNTD; + input [67:0] MIMRXRDATA; + input [68:0] MIMTXRDATA; + input [7:0] CFGDSBUSNUMBER; + input [7:0] CFGINTERRUPTDI; + input [7:0] CFGPORTNUMBER; + input [8:0] DRPDADDR; + input [9:0] CFGDWADDR; +endmodule + +module PCIE_2_1 (...); + parameter [11:0] AER_BASE_PTR = 12'h140; + parameter AER_CAP_ECRC_CHECK_CAPABLE = "FALSE"; + parameter AER_CAP_ECRC_GEN_CAPABLE = "FALSE"; + parameter [15:0] AER_CAP_ID = 16'h0001; + parameter AER_CAP_MULTIHEADER = "FALSE"; + parameter [11:0] AER_CAP_NEXTPTR = 12'h178; + parameter AER_CAP_ON = "FALSE"; + parameter [23:0] AER_CAP_OPTIONAL_ERR_SUPPORT = 24'h000000; + parameter AER_CAP_PERMIT_ROOTERR_UPDATE = "TRUE"; + parameter [3:0] AER_CAP_VERSION = 4'h2; + parameter ALLOW_X8_GEN2 = "FALSE"; + parameter [31:0] BAR0 = 32'hFFFFFF00; + parameter [31:0] BAR1 = 32'hFFFF0000; + parameter [31:0] BAR2 = 32'hFFFF000C; + parameter [31:0] BAR3 = 32'hFFFFFFFF; + parameter [31:0] BAR4 = 32'h00000000; + parameter [31:0] BAR5 = 32'h00000000; + parameter [7:0] CAPABILITIES_PTR = 8'h40; + parameter [31:0] CARDBUS_CIS_POINTER = 32'h00000000; + parameter integer CFG_ECRC_ERR_CPLSTAT = 0; + parameter [23:0] CLASS_CODE = 24'h000000; + parameter CMD_INTX_IMPLEMENTED = "TRUE"; + parameter CPL_TIMEOUT_DISABLE_SUPPORTED = "FALSE"; + parameter [3:0] CPL_TIMEOUT_RANGES_SUPPORTED = 4'h0; + parameter [6:0] CRM_MODULE_RSTS = 7'h00; + parameter DEV_CAP2_ARI_FORWARDING_SUPPORTED = "FALSE"; + parameter DEV_CAP2_ATOMICOP32_COMPLETER_SUPPORTED = "FALSE"; + parameter DEV_CAP2_ATOMICOP64_COMPLETER_SUPPORTED = "FALSE"; + parameter DEV_CAP2_ATOMICOP_ROUTING_SUPPORTED = "FALSE"; + parameter DEV_CAP2_CAS128_COMPLETER_SUPPORTED = "FALSE"; + parameter DEV_CAP2_ENDEND_TLP_PREFIX_SUPPORTED = "FALSE"; + parameter DEV_CAP2_EXTENDED_FMT_FIELD_SUPPORTED = "FALSE"; + parameter DEV_CAP2_LTR_MECHANISM_SUPPORTED = "FALSE"; + parameter [1:0] DEV_CAP2_MAX_ENDEND_TLP_PREFIXES = 2'h0; + parameter DEV_CAP2_NO_RO_ENABLED_PRPR_PASSING = "FALSE"; + parameter [1:0] DEV_CAP2_TPH_COMPLETER_SUPPORTED = 2'h0; + parameter DEV_CAP_ENABLE_SLOT_PWR_LIMIT_SCALE = "TRUE"; + parameter DEV_CAP_ENABLE_SLOT_PWR_LIMIT_VALUE = "TRUE"; + parameter integer DEV_CAP_ENDPOINT_L0S_LATENCY = 0; + parameter integer DEV_CAP_ENDPOINT_L1_LATENCY = 0; + parameter DEV_CAP_EXT_TAG_SUPPORTED = "TRUE"; + parameter DEV_CAP_FUNCTION_LEVEL_RESET_CAPABLE = "FALSE"; + parameter integer DEV_CAP_MAX_PAYLOAD_SUPPORTED = 2; + parameter integer DEV_CAP_PHANTOM_FUNCTIONS_SUPPORT = 0; + parameter DEV_CAP_ROLE_BASED_ERROR = "TRUE"; + parameter integer DEV_CAP_RSVD_14_12 = 0; + parameter integer DEV_CAP_RSVD_17_16 = 0; + parameter integer DEV_CAP_RSVD_31_29 = 0; + parameter DEV_CONTROL_AUX_POWER_SUPPORTED = "FALSE"; + parameter DEV_CONTROL_EXT_TAG_DEFAULT = "FALSE"; + parameter DISABLE_ASPM_L1_TIMER = "FALSE"; + parameter DISABLE_BAR_FILTERING = "FALSE"; + parameter DISABLE_ERR_MSG = "FALSE"; + parameter DISABLE_ID_CHECK = "FALSE"; + parameter DISABLE_LANE_REVERSAL = "FALSE"; + parameter DISABLE_LOCKED_FILTER = "FALSE"; + parameter DISABLE_PPM_FILTER = "FALSE"; + parameter DISABLE_RX_POISONED_RESP = "FALSE"; + parameter DISABLE_RX_TC_FILTER = "FALSE"; + parameter DISABLE_SCRAMBLING = "FALSE"; + parameter [7:0] DNSTREAM_LINK_NUM = 8'h00; + parameter [11:0] DSN_BASE_PTR = 12'h100; + parameter [15:0] DSN_CAP_ID = 16'h0003; + parameter [11:0] DSN_CAP_NEXTPTR = 12'h10C; + parameter DSN_CAP_ON = "TRUE"; + parameter [3:0] DSN_CAP_VERSION = 4'h1; + parameter [10:0] ENABLE_MSG_ROUTE = 11'h000; + parameter ENABLE_RX_TD_ECRC_TRIM = "FALSE"; + parameter ENDEND_TLP_PREFIX_FORWARDING_SUPPORTED = "FALSE"; + parameter ENTER_RVRY_EI_L0 = "TRUE"; + parameter EXIT_LOOPBACK_ON_EI = "TRUE"; + parameter [31:0] EXPANSION_ROM = 32'hFFFFF001; + parameter [5:0] EXT_CFG_CAP_PTR = 6'h3F; + parameter [9:0] EXT_CFG_XP_CAP_PTR = 10'h3FF; + parameter [7:0] HEADER_TYPE = 8'h00; + parameter [4:0] INFER_EI = 5'h00; + parameter [7:0] INTERRUPT_PIN = 8'h01; + parameter INTERRUPT_STAT_AUTO = "TRUE"; + parameter IS_SWITCH = "FALSE"; + parameter [9:0] LAST_CONFIG_DWORD = 10'h3FF; + parameter LINK_CAP_ASPM_OPTIONALITY = "TRUE"; + parameter integer LINK_CAP_ASPM_SUPPORT = 1; + parameter LINK_CAP_CLOCK_POWER_MANAGEMENT = "FALSE"; + parameter LINK_CAP_DLL_LINK_ACTIVE_REPORTING_CAP = "FALSE"; + parameter integer LINK_CAP_L0S_EXIT_LATENCY_COMCLK_GEN1 = 7; + parameter integer LINK_CAP_L0S_EXIT_LATENCY_COMCLK_GEN2 = 7; + parameter integer LINK_CAP_L0S_EXIT_LATENCY_GEN1 = 7; + parameter integer LINK_CAP_L0S_EXIT_LATENCY_GEN2 = 7; + parameter integer LINK_CAP_L1_EXIT_LATENCY_COMCLK_GEN1 = 7; + parameter integer LINK_CAP_L1_EXIT_LATENCY_COMCLK_GEN2 = 7; + parameter integer LINK_CAP_L1_EXIT_LATENCY_GEN1 = 7; + parameter integer LINK_CAP_L1_EXIT_LATENCY_GEN2 = 7; + parameter LINK_CAP_LINK_BANDWIDTH_NOTIFICATION_CAP = "FALSE"; + parameter [3:0] LINK_CAP_MAX_LINK_SPEED = 4'h1; + parameter [5:0] LINK_CAP_MAX_LINK_WIDTH = 6'h08; + parameter integer LINK_CAP_RSVD_23 = 0; + parameter LINK_CAP_SURPRISE_DOWN_ERROR_CAPABLE = "FALSE"; + parameter integer LINK_CONTROL_RCB = 0; + parameter LINK_CTRL2_DEEMPHASIS = "FALSE"; + parameter LINK_CTRL2_HW_AUTONOMOUS_SPEED_DISABLE = "FALSE"; + parameter [3:0] LINK_CTRL2_TARGET_LINK_SPEED = 4'h2; + parameter LINK_STATUS_SLOT_CLOCK_CONFIG = "TRUE"; + parameter [14:0] LL_ACK_TIMEOUT = 15'h0000; + parameter LL_ACK_TIMEOUT_EN = "FALSE"; + parameter integer LL_ACK_TIMEOUT_FUNC = 0; + parameter [14:0] LL_REPLAY_TIMEOUT = 15'h0000; + parameter LL_REPLAY_TIMEOUT_EN = "FALSE"; + parameter integer LL_REPLAY_TIMEOUT_FUNC = 0; + parameter [5:0] LTSSM_MAX_LINK_WIDTH = 6'h01; + parameter MPS_FORCE = "FALSE"; + parameter [7:0] MSIX_BASE_PTR = 8'h9C; + parameter [7:0] MSIX_CAP_ID = 8'h11; + parameter [7:0] MSIX_CAP_NEXTPTR = 8'h00; + parameter MSIX_CAP_ON = "FALSE"; + parameter integer MSIX_CAP_PBA_BIR = 0; + parameter [28:0] MSIX_CAP_PBA_OFFSET = 29'h00000050; + parameter integer MSIX_CAP_TABLE_BIR = 0; + parameter [28:0] MSIX_CAP_TABLE_OFFSET = 29'h00000040; + parameter [10:0] MSIX_CAP_TABLE_SIZE = 11'h000; + parameter [7:0] MSI_BASE_PTR = 8'h48; + parameter MSI_CAP_64_BIT_ADDR_CAPABLE = "TRUE"; + parameter [7:0] MSI_CAP_ID = 8'h05; + parameter integer MSI_CAP_MULTIMSGCAP = 0; + parameter integer MSI_CAP_MULTIMSG_EXTENSION = 0; + parameter [7:0] MSI_CAP_NEXTPTR = 8'h60; + parameter MSI_CAP_ON = "FALSE"; + parameter MSI_CAP_PER_VECTOR_MASKING_CAPABLE = "TRUE"; + parameter integer N_FTS_COMCLK_GEN1 = 255; + parameter integer N_FTS_COMCLK_GEN2 = 255; + parameter integer N_FTS_GEN1 = 255; + parameter integer N_FTS_GEN2 = 255; + parameter [7:0] PCIE_BASE_PTR = 8'h60; + parameter [7:0] PCIE_CAP_CAPABILITY_ID = 8'h10; + parameter [3:0] PCIE_CAP_CAPABILITY_VERSION = 4'h2; + parameter [3:0] PCIE_CAP_DEVICE_PORT_TYPE = 4'h0; + parameter [7:0] PCIE_CAP_NEXTPTR = 8'h9C; + parameter PCIE_CAP_ON = "TRUE"; + parameter integer PCIE_CAP_RSVD_15_14 = 0; + parameter PCIE_CAP_SLOT_IMPLEMENTED = "FALSE"; + parameter integer PCIE_REVISION = 2; + parameter integer PL_AUTO_CONFIG = 0; + parameter PL_FAST_TRAIN = "FALSE"; + parameter [14:0] PM_ASPML0S_TIMEOUT = 15'h0000; + parameter PM_ASPML0S_TIMEOUT_EN = "FALSE"; + parameter integer PM_ASPML0S_TIMEOUT_FUNC = 0; + parameter PM_ASPM_FASTEXIT = "FALSE"; + parameter [7:0] PM_BASE_PTR = 8'h40; + parameter integer PM_CAP_AUXCURRENT = 0; + parameter PM_CAP_D1SUPPORT = "TRUE"; + parameter PM_CAP_D2SUPPORT = "TRUE"; + parameter PM_CAP_DSI = "FALSE"; + parameter [7:0] PM_CAP_ID = 8'h01; + parameter [7:0] PM_CAP_NEXTPTR = 8'h48; + parameter PM_CAP_ON = "TRUE"; + parameter [4:0] PM_CAP_PMESUPPORT = 5'h0F; + parameter PM_CAP_PME_CLOCK = "FALSE"; + parameter integer PM_CAP_RSVD_04 = 0; + parameter integer PM_CAP_VERSION = 3; + parameter PM_CSR_B2B3 = "FALSE"; + parameter PM_CSR_BPCCEN = "FALSE"; + parameter PM_CSR_NOSOFTRST = "TRUE"; + parameter [7:0] PM_DATA0 = 8'h01; + parameter [7:0] PM_DATA1 = 8'h01; + parameter [7:0] PM_DATA2 = 8'h01; + parameter [7:0] PM_DATA3 = 8'h01; + parameter [7:0] PM_DATA4 = 8'h01; + parameter [7:0] PM_DATA5 = 8'h01; + parameter [7:0] PM_DATA6 = 8'h01; + parameter [7:0] PM_DATA7 = 8'h01; + parameter [1:0] PM_DATA_SCALE0 = 2'h1; + parameter [1:0] PM_DATA_SCALE1 = 2'h1; + parameter [1:0] PM_DATA_SCALE2 = 2'h1; + parameter [1:0] PM_DATA_SCALE3 = 2'h1; + parameter [1:0] PM_DATA_SCALE4 = 2'h1; + parameter [1:0] PM_DATA_SCALE5 = 2'h1; + parameter [1:0] PM_DATA_SCALE6 = 2'h1; + parameter [1:0] PM_DATA_SCALE7 = 2'h1; + parameter PM_MF = "FALSE"; + parameter [11:0] RBAR_BASE_PTR = 12'h178; + parameter [4:0] RBAR_CAP_CONTROL_ENCODEDBAR0 = 5'h00; + parameter [4:0] RBAR_CAP_CONTROL_ENCODEDBAR1 = 5'h00; + parameter [4:0] RBAR_CAP_CONTROL_ENCODEDBAR2 = 5'h00; + parameter [4:0] RBAR_CAP_CONTROL_ENCODEDBAR3 = 5'h00; + parameter [4:0] RBAR_CAP_CONTROL_ENCODEDBAR4 = 5'h00; + parameter [4:0] RBAR_CAP_CONTROL_ENCODEDBAR5 = 5'h00; + parameter [15:0] RBAR_CAP_ID = 16'h0015; + parameter [2:0] RBAR_CAP_INDEX0 = 3'h0; + parameter [2:0] RBAR_CAP_INDEX1 = 3'h0; + parameter [2:0] RBAR_CAP_INDEX2 = 3'h0; + parameter [2:0] RBAR_CAP_INDEX3 = 3'h0; + parameter [2:0] RBAR_CAP_INDEX4 = 3'h0; + parameter [2:0] RBAR_CAP_INDEX5 = 3'h0; + parameter [11:0] RBAR_CAP_NEXTPTR = 12'h000; + parameter RBAR_CAP_ON = "FALSE"; + parameter [31:0] RBAR_CAP_SUP0 = 32'h00000000; + parameter [31:0] RBAR_CAP_SUP1 = 32'h00000000; + parameter [31:0] RBAR_CAP_SUP2 = 32'h00000000; + parameter [31:0] RBAR_CAP_SUP3 = 32'h00000000; + parameter [31:0] RBAR_CAP_SUP4 = 32'h00000000; + parameter [31:0] RBAR_CAP_SUP5 = 32'h00000000; + parameter [3:0] RBAR_CAP_VERSION = 4'h1; + parameter [2:0] RBAR_NUM = 3'h1; + parameter integer RECRC_CHK = 0; + parameter RECRC_CHK_TRIM = "FALSE"; + parameter ROOT_CAP_CRS_SW_VISIBILITY = "FALSE"; + parameter [1:0] RP_AUTO_SPD = 2'h1; + parameter [4:0] RP_AUTO_SPD_LOOPCNT = 5'h1F; + parameter SELECT_DLL_IF = "FALSE"; + parameter SIM_VERSION = "1.0"; + parameter SLOT_CAP_ATT_BUTTON_PRESENT = "FALSE"; + parameter SLOT_CAP_ATT_INDICATOR_PRESENT = "FALSE"; + parameter SLOT_CAP_ELEC_INTERLOCK_PRESENT = "FALSE"; + parameter SLOT_CAP_HOTPLUG_CAPABLE = "FALSE"; + parameter SLOT_CAP_HOTPLUG_SURPRISE = "FALSE"; + parameter SLOT_CAP_MRL_SENSOR_PRESENT = "FALSE"; + parameter SLOT_CAP_NO_CMD_COMPLETED_SUPPORT = "FALSE"; + parameter [12:0] SLOT_CAP_PHYSICAL_SLOT_NUM = 13'h0000; + parameter SLOT_CAP_POWER_CONTROLLER_PRESENT = "FALSE"; + parameter SLOT_CAP_POWER_INDICATOR_PRESENT = "FALSE"; + parameter integer SLOT_CAP_SLOT_POWER_LIMIT_SCALE = 0; + parameter [7:0] SLOT_CAP_SLOT_POWER_LIMIT_VALUE = 8'h00; + parameter integer SPARE_BIT0 = 0; + parameter integer SPARE_BIT1 = 0; + parameter integer SPARE_BIT2 = 0; + parameter integer SPARE_BIT3 = 0; + parameter integer SPARE_BIT4 = 0; + parameter integer SPARE_BIT5 = 0; + parameter integer SPARE_BIT6 = 0; + parameter integer SPARE_BIT7 = 0; + parameter integer SPARE_BIT8 = 0; + parameter [7:0] SPARE_BYTE0 = 8'h00; + parameter [7:0] SPARE_BYTE1 = 8'h00; + parameter [7:0] SPARE_BYTE2 = 8'h00; + parameter [7:0] SPARE_BYTE3 = 8'h00; + parameter [31:0] SPARE_WORD0 = 32'h00000000; + parameter [31:0] SPARE_WORD1 = 32'h00000000; + parameter [31:0] SPARE_WORD2 = 32'h00000000; + parameter [31:0] SPARE_WORD3 = 32'h00000000; + parameter SSL_MESSAGE_AUTO = "FALSE"; + parameter TECRC_EP_INV = "FALSE"; + parameter TL_RBYPASS = "FALSE"; + parameter integer TL_RX_RAM_RADDR_LATENCY = 0; + parameter integer TL_RX_RAM_RDATA_LATENCY = 2; + parameter integer TL_RX_RAM_WRITE_LATENCY = 0; + parameter TL_TFC_DISABLE = "FALSE"; + parameter TL_TX_CHECKS_DISABLE = "FALSE"; + parameter integer TL_TX_RAM_RADDR_LATENCY = 0; + parameter integer TL_TX_RAM_RDATA_LATENCY = 2; + parameter integer TL_TX_RAM_WRITE_LATENCY = 0; + parameter TRN_DW = "FALSE"; + parameter TRN_NP_FC = "FALSE"; + parameter UPCONFIG_CAPABLE = "TRUE"; + parameter UPSTREAM_FACING = "TRUE"; + parameter UR_ATOMIC = "TRUE"; + parameter UR_CFG1 = "TRUE"; + parameter UR_INV_REQ = "TRUE"; + parameter UR_PRS_RESPONSE = "TRUE"; + parameter USER_CLK2_DIV2 = "FALSE"; + parameter integer USER_CLK_FREQ = 3; + parameter USE_RID_PINS = "FALSE"; + parameter VC0_CPL_INFINITE = "TRUE"; + parameter [12:0] VC0_RX_RAM_LIMIT = 13'h03FF; + parameter integer VC0_TOTAL_CREDITS_CD = 127; + parameter integer VC0_TOTAL_CREDITS_CH = 31; + parameter integer VC0_TOTAL_CREDITS_NPD = 24; + parameter integer VC0_TOTAL_CREDITS_NPH = 12; + parameter integer VC0_TOTAL_CREDITS_PD = 288; + parameter integer VC0_TOTAL_CREDITS_PH = 32; + parameter integer VC0_TX_LASTPACKET = 31; + parameter [11:0] VC_BASE_PTR = 12'h10C; + parameter [15:0] VC_CAP_ID = 16'h0002; + parameter [11:0] VC_CAP_NEXTPTR = 12'h000; + parameter VC_CAP_ON = "FALSE"; + parameter VC_CAP_REJECT_SNOOP_TRANSACTIONS = "FALSE"; + parameter [3:0] VC_CAP_VERSION = 4'h1; + parameter [11:0] VSEC_BASE_PTR = 12'h128; + parameter [15:0] VSEC_CAP_HDR_ID = 16'h1234; + parameter [11:0] VSEC_CAP_HDR_LENGTH = 12'h018; + parameter [3:0] VSEC_CAP_HDR_REVISION = 4'h1; + parameter [15:0] VSEC_CAP_ID = 16'h000B; + parameter VSEC_CAP_IS_LINK_VISIBLE = "TRUE"; + parameter [11:0] VSEC_CAP_NEXTPTR = 12'h140; + parameter VSEC_CAP_ON = "FALSE"; + parameter [3:0] VSEC_CAP_VERSION = 4'h1; + output CFGAERECRCCHECKEN; + output CFGAERECRCGENEN; + output CFGAERROOTERRCORRERRRECEIVED; + output CFGAERROOTERRCORRERRREPORTINGEN; + output CFGAERROOTERRFATALERRRECEIVED; + output CFGAERROOTERRFATALERRREPORTINGEN; + output CFGAERROOTERRNONFATALERRRECEIVED; + output CFGAERROOTERRNONFATALERRREPORTINGEN; + output CFGBRIDGESERREN; + output CFGCOMMANDBUSMASTERENABLE; + output CFGCOMMANDINTERRUPTDISABLE; + output CFGCOMMANDIOENABLE; + output CFGCOMMANDMEMENABLE; + output CFGCOMMANDSERREN; + output CFGDEVCONTROL2ARIFORWARDEN; + output CFGDEVCONTROL2ATOMICEGRESSBLOCK; + output CFGDEVCONTROL2ATOMICREQUESTEREN; + output CFGDEVCONTROL2CPLTIMEOUTDIS; + output CFGDEVCONTROL2IDOCPLEN; + output CFGDEVCONTROL2IDOREQEN; + output CFGDEVCONTROL2LTREN; + output CFGDEVCONTROL2TLPPREFIXBLOCK; + output CFGDEVCONTROLAUXPOWEREN; + output CFGDEVCONTROLCORRERRREPORTINGEN; + output CFGDEVCONTROLENABLERO; + output CFGDEVCONTROLEXTTAGEN; + output CFGDEVCONTROLFATALERRREPORTINGEN; + output CFGDEVCONTROLNONFATALREPORTINGEN; + output CFGDEVCONTROLNOSNOOPEN; + output CFGDEVCONTROLPHANTOMEN; + output CFGDEVCONTROLURERRREPORTINGEN; + output CFGDEVSTATUSCORRERRDETECTED; + output CFGDEVSTATUSFATALERRDETECTED; + output CFGDEVSTATUSNONFATALERRDETECTED; + output CFGDEVSTATUSURDETECTED; + output CFGERRAERHEADERLOGSETN; + output CFGERRCPLRDYN; + output CFGINTERRUPTMSIENABLE; + output CFGINTERRUPTMSIXENABLE; + output CFGINTERRUPTMSIXFM; + output CFGINTERRUPTRDYN; + output CFGLINKCONTROLAUTOBANDWIDTHINTEN; + output CFGLINKCONTROLBANDWIDTHINTEN; + output CFGLINKCONTROLCLOCKPMEN; + output CFGLINKCONTROLCOMMONCLOCK; + output CFGLINKCONTROLEXTENDEDSYNC; + output CFGLINKCONTROLHWAUTOWIDTHDIS; + output CFGLINKCONTROLLINKDISABLE; + output CFGLINKCONTROLRCB; + output CFGLINKCONTROLRETRAINLINK; + output CFGLINKSTATUSAUTOBANDWIDTHSTATUS; + output CFGLINKSTATUSBANDWIDTHSTATUS; + output CFGLINKSTATUSDLLACTIVE; + output CFGLINKSTATUSLINKTRAINING; + output CFGMGMTRDWRDONEN; + output CFGMSGRECEIVED; + output CFGMSGRECEIVEDASSERTINTA; + output CFGMSGRECEIVEDASSERTINTB; + output CFGMSGRECEIVEDASSERTINTC; + output CFGMSGRECEIVEDASSERTINTD; + output CFGMSGRECEIVEDDEASSERTINTA; + output CFGMSGRECEIVEDDEASSERTINTB; + output CFGMSGRECEIVEDDEASSERTINTC; + output CFGMSGRECEIVEDDEASSERTINTD; + output CFGMSGRECEIVEDERRCOR; + output CFGMSGRECEIVEDERRFATAL; + output CFGMSGRECEIVEDERRNONFATAL; + output CFGMSGRECEIVEDPMASNAK; + output CFGMSGRECEIVEDPMETO; + output CFGMSGRECEIVEDPMETOACK; + output CFGMSGRECEIVEDPMPME; + output CFGMSGRECEIVEDSETSLOTPOWERLIMIT; + output CFGMSGRECEIVEDUNLOCK; + output CFGPMCSRPMEEN; + output CFGPMCSRPMESTATUS; + output CFGPMRCVASREQL1N; + output CFGPMRCVENTERL1N; + output CFGPMRCVENTERL23N; + output CFGPMRCVREQACKN; + output CFGROOTCONTROLPMEINTEN; + output CFGROOTCONTROLSYSERRCORRERREN; + output CFGROOTCONTROLSYSERRFATALERREN; + output CFGROOTCONTROLSYSERRNONFATALERREN; + output CFGSLOTCONTROLELECTROMECHILCTLPULSE; + output CFGTRANSACTION; + output CFGTRANSACTIONTYPE; + output DBGSCLRA; + output DBGSCLRB; + output DBGSCLRC; + output DBGSCLRD; + output DBGSCLRE; + output DBGSCLRF; + output DBGSCLRG; + output DBGSCLRH; + output DBGSCLRI; + output DBGSCLRJ; + output DBGSCLRK; + output DRPRDY; + output LL2BADDLLPERR; + output LL2BADTLPERR; + output LL2PROTOCOLERR; + output LL2RECEIVERERR; + output LL2REPLAYROERR; + output LL2REPLAYTOERR; + output LL2SUSPENDOK; + output LL2TFCINIT1SEQ; + output LL2TFCINIT2SEQ; + output LL2TXIDLE; + output LNKCLKEN; + output MIMRXREN; + output MIMRXWEN; + output MIMTXREN; + output MIMTXWEN; + output PIPERX0POLARITY; + output PIPERX1POLARITY; + output PIPERX2POLARITY; + output PIPERX3POLARITY; + output PIPERX4POLARITY; + output PIPERX5POLARITY; + output PIPERX6POLARITY; + output PIPERX7POLARITY; + output PIPETX0COMPLIANCE; + output PIPETX0ELECIDLE; + output PIPETX1COMPLIANCE; + output PIPETX1ELECIDLE; + output PIPETX2COMPLIANCE; + output PIPETX2ELECIDLE; + output PIPETX3COMPLIANCE; + output PIPETX3ELECIDLE; + output PIPETX4COMPLIANCE; + output PIPETX4ELECIDLE; + output PIPETX5COMPLIANCE; + output PIPETX5ELECIDLE; + output PIPETX6COMPLIANCE; + output PIPETX6ELECIDLE; + output PIPETX7COMPLIANCE; + output PIPETX7ELECIDLE; + output PIPETXDEEMPH; + output PIPETXRATE; + output PIPETXRCVRDET; + output PIPETXRESET; + output PL2L0REQ; + output PL2LINKUP; + output PL2RECEIVERERR; + output PL2RECOVERY; + output PL2RXELECIDLE; + output PL2SUSPENDOK; + output PLDIRECTEDCHANGEDONE; + output PLLINKGEN2CAP; + output PLLINKPARTNERGEN2SUPPORTED; + output PLLINKUPCFGCAP; + output PLPHYLNKUPN; + output PLRECEIVEDHOTRST; + output PLSELLNKRATE; + output RECEIVEDFUNCLVLRSTN; + output TL2ASPMSUSPENDCREDITCHECKOK; + output TL2ASPMSUSPENDREQ; + output TL2ERRFCPE; + output TL2ERRMALFORMED; + output TL2ERRRXOVERFLOW; + output TL2PPMSUSPENDOK; + output TRNLNKUP; + output TRNRECRCERR; + output TRNREOF; + output TRNRERRFWD; + output TRNRSOF; + output TRNRSRCDSC; + output TRNRSRCRDY; + output TRNTCFGREQ; + output TRNTDLLPDSTRDY; + output TRNTERRDROP; + output USERRSTN; + output [11:0] DBGVECC; + output [11:0] PLDBGVEC; + output [11:0] TRNFCCPLD; + output [11:0] TRNFCNPD; + output [11:0] TRNFCPD; + output [127:0] TRNRD; + output [12:0] MIMRXRADDR; + output [12:0] MIMRXWADDR; + output [12:0] MIMTXRADDR; + output [12:0] MIMTXWADDR; + output [15:0] CFGMSGDATA; + output [15:0] DRPDO; + output [15:0] PIPETX0DATA; + output [15:0] PIPETX1DATA; + output [15:0] PIPETX2DATA; + output [15:0] PIPETX3DATA; + output [15:0] PIPETX4DATA; + output [15:0] PIPETX5DATA; + output [15:0] PIPETX6DATA; + output [15:0] PIPETX7DATA; + output [1:0] CFGLINKCONTROLASPMCONTROL; + output [1:0] CFGLINKSTATUSCURRENTSPEED; + output [1:0] CFGPMCSRPOWERSTATE; + output [1:0] PIPETX0CHARISK; + output [1:0] PIPETX0POWERDOWN; + output [1:0] PIPETX1CHARISK; + output [1:0] PIPETX1POWERDOWN; + output [1:0] PIPETX2CHARISK; + output [1:0] PIPETX2POWERDOWN; + output [1:0] PIPETX3CHARISK; + output [1:0] PIPETX3POWERDOWN; + output [1:0] PIPETX4CHARISK; + output [1:0] PIPETX4POWERDOWN; + output [1:0] PIPETX5CHARISK; + output [1:0] PIPETX5POWERDOWN; + output [1:0] PIPETX6CHARISK; + output [1:0] PIPETX6POWERDOWN; + output [1:0] PIPETX7CHARISK; + output [1:0] PIPETX7POWERDOWN; + output [1:0] PL2RXPMSTATE; + output [1:0] PLLANEREVERSALMODE; + output [1:0] PLRXPMSTATE; + output [1:0] PLSELLNKWIDTH; + output [1:0] TRNRDLLPSRCRDY; + output [1:0] TRNRREM; + output [2:0] CFGDEVCONTROLMAXPAYLOAD; + output [2:0] CFGDEVCONTROLMAXREADREQ; + output [2:0] CFGINTERRUPTMMENABLE; + output [2:0] CFGPCIELINKSTATE; + output [2:0] PIPETXMARGIN; + output [2:0] PLINITIALLINKWIDTH; + output [2:0] PLTXPMSTATE; + output [31:0] CFGMGMTDO; + output [3:0] CFGDEVCONTROL2CPLTIMEOUTVAL; + output [3:0] CFGLINKSTATUSNEGOTIATEDWIDTH; + output [3:0] TRNTDSTRDY; + output [4:0] LL2LINKSTATUS; + output [5:0] PLLTSSMSTATE; + output [5:0] TRNTBUFAV; + output [63:0] DBGVECA; + output [63:0] DBGVECB; + output [63:0] TL2ERRHDR; + output [63:0] TRNRDLLPDATA; + output [67:0] MIMRXWDATA; + output [68:0] MIMTXWDATA; + output [6:0] CFGTRANSACTIONADDR; + output [6:0] CFGVCTCVCMAP; + output [7:0] CFGINTERRUPTDO; + output [7:0] TRNFCCPLH; + output [7:0] TRNFCNPH; + output [7:0] TRNFCPH; + output [7:0] TRNRBARHIT; + input CFGERRACSN; + input CFGERRATOMICEGRESSBLOCKEDN; + input CFGERRCORN; + input CFGERRCPLABORTN; + input CFGERRCPLTIMEOUTN; + input CFGERRCPLUNEXPECTN; + input CFGERRECRCN; + input CFGERRINTERNALCORN; + input CFGERRINTERNALUNCORN; + input CFGERRLOCKEDN; + input CFGERRMALFORMEDN; + input CFGERRMCBLOCKEDN; + input CFGERRNORECOVERYN; + input CFGERRPOISONEDN; + input CFGERRPOSTEDN; + input CFGERRURN; + input CFGFORCECOMMONCLOCKOFF; + input CFGFORCEEXTENDEDSYNCON; + input CFGINTERRUPTASSERTN; + input CFGINTERRUPTN; + input CFGINTERRUPTSTATN; + input CFGMGMTRDENN; + input CFGMGMTWRENN; + input CFGMGMTWRREADONLYN; + input CFGMGMTWRRW1CASRWN; + input CFGPMFORCESTATEENN; + input CFGPMHALTASPML0SN; + input CFGPMHALTASPML1N; + input CFGPMSENDPMETON; + input CFGPMTURNOFFOKN; + input CFGPMWAKEN; + input CFGTRNPENDINGN; + input CMRSTN; + input CMSTICKYRSTN; + input DBGSUBMODE; + input DLRSTN; + input DRPCLK; + input DRPEN; + input DRPWE; + input FUNCLVLRSTN; + input LL2SENDASREQL1; + input LL2SENDENTERL1; + input LL2SENDENTERL23; + input LL2SENDPMACK; + input LL2SUSPENDNOW; + input LL2TLPRCV; + input PIPECLK; + input PIPERX0CHANISALIGNED; + input PIPERX0ELECIDLE; + input PIPERX0PHYSTATUS; + input PIPERX0VALID; + input PIPERX1CHANISALIGNED; + input PIPERX1ELECIDLE; + input PIPERX1PHYSTATUS; + input PIPERX1VALID; + input PIPERX2CHANISALIGNED; + input PIPERX2ELECIDLE; + input PIPERX2PHYSTATUS; + input PIPERX2VALID; + input PIPERX3CHANISALIGNED; + input PIPERX3ELECIDLE; + input PIPERX3PHYSTATUS; + input PIPERX3VALID; + input PIPERX4CHANISALIGNED; + input PIPERX4ELECIDLE; + input PIPERX4PHYSTATUS; + input PIPERX4VALID; + input PIPERX5CHANISALIGNED; + input PIPERX5ELECIDLE; + input PIPERX5PHYSTATUS; + input PIPERX5VALID; + input PIPERX6CHANISALIGNED; + input PIPERX6ELECIDLE; + input PIPERX6PHYSTATUS; + input PIPERX6VALID; + input PIPERX7CHANISALIGNED; + input PIPERX7ELECIDLE; + input PIPERX7PHYSTATUS; + input PIPERX7VALID; + input PLDIRECTEDLINKAUTON; + input PLDIRECTEDLINKSPEED; + input PLDIRECTEDLTSSMNEWVLD; + input PLDIRECTEDLTSSMSTALL; + input PLDOWNSTREAMDEEMPHSOURCE; + input PLRSTN; + input PLTRANSMITHOTRST; + input PLUPSTREAMPREFERDEEMPH; + input SYSRSTN; + input TL2ASPMSUSPENDCREDITCHECK; + input TL2PPMSUSPENDREQ; + input TLRSTN; + input TRNRDSTRDY; + input TRNRFCPRET; + input TRNRNPOK; + input TRNRNPREQ; + input TRNTCFGGNT; + input TRNTDLLPSRCRDY; + input TRNTECRCGEN; + input TRNTEOF; + input TRNTERRFWD; + input TRNTSOF; + input TRNTSRCDSC; + input TRNTSRCRDY; + input TRNTSTR; + input USERCLK2; + input USERCLK; + input [127:0] CFGERRAERHEADERLOG; + input [127:0] TRNTD; + input [15:0] CFGDEVID; + input [15:0] CFGSUBSYSID; + input [15:0] CFGSUBSYSVENDID; + input [15:0] CFGVENDID; + input [15:0] DRPDI; + input [15:0] PIPERX0DATA; + input [15:0] PIPERX1DATA; + input [15:0] PIPERX2DATA; + input [15:0] PIPERX3DATA; + input [15:0] PIPERX4DATA; + input [15:0] PIPERX5DATA; + input [15:0] PIPERX6DATA; + input [15:0] PIPERX7DATA; + input [1:0] CFGPMFORCESTATE; + input [1:0] DBGMODE; + input [1:0] PIPERX0CHARISK; + input [1:0] PIPERX1CHARISK; + input [1:0] PIPERX2CHARISK; + input [1:0] PIPERX3CHARISK; + input [1:0] PIPERX4CHARISK; + input [1:0] PIPERX5CHARISK; + input [1:0] PIPERX6CHARISK; + input [1:0] PIPERX7CHARISK; + input [1:0] PLDIRECTEDLINKCHANGE; + input [1:0] PLDIRECTEDLINKWIDTH; + input [1:0] TRNTREM; + input [2:0] CFGDSFUNCTIONNUMBER; + input [2:0] CFGFORCEMPS; + input [2:0] PIPERX0STATUS; + input [2:0] PIPERX1STATUS; + input [2:0] PIPERX2STATUS; + input [2:0] PIPERX3STATUS; + input [2:0] PIPERX4STATUS; + input [2:0] PIPERX5STATUS; + input [2:0] PIPERX6STATUS; + input [2:0] PIPERX7STATUS; + input [2:0] PLDBGMODE; + input [2:0] TRNFCSEL; + input [31:0] CFGMGMTDI; + input [31:0] TRNTDLLPDATA; + input [3:0] CFGMGMTBYTEENN; + input [47:0] CFGERRTLPCPLHEADER; + input [4:0] CFGAERINTERRUPTMSGNUM; + input [4:0] CFGDSDEVICENUMBER; + input [4:0] CFGPCIECAPINTERRUPTMSGNUM; + input [4:0] PL2DIRECTEDLSTATE; + input [5:0] PLDIRECTEDLTSSMNEW; + input [63:0] CFGDSN; + input [67:0] MIMRXRDATA; + input [68:0] MIMTXRDATA; + input [7:0] CFGDSBUSNUMBER; + input [7:0] CFGINTERRUPTDI; + input [7:0] CFGPORTNUMBER; + input [7:0] CFGREVID; + input [8:0] DRPADDR; + input [9:0] CFGMGMTDWADDR; +endmodule + +module PCIE_3_0 (...); + parameter ARI_CAP_ENABLE = "FALSE"; + parameter AXISTEN_IF_CC_ALIGNMENT_MODE = "FALSE"; + parameter AXISTEN_IF_CC_PARITY_CHK = "TRUE"; + parameter AXISTEN_IF_CQ_ALIGNMENT_MODE = "FALSE"; + parameter AXISTEN_IF_ENABLE_CLIENT_TAG = "FALSE"; + parameter [17:0] AXISTEN_IF_ENABLE_MSG_ROUTE = 18'h00000; + parameter AXISTEN_IF_ENABLE_RX_MSG_INTFC = "FALSE"; + parameter AXISTEN_IF_RC_ALIGNMENT_MODE = "FALSE"; + parameter AXISTEN_IF_RC_STRADDLE = "FALSE"; + parameter AXISTEN_IF_RQ_ALIGNMENT_MODE = "FALSE"; + parameter AXISTEN_IF_RQ_PARITY_CHK = "TRUE"; + parameter [1:0] AXISTEN_IF_WIDTH = 2'h2; + parameter CRM_CORE_CLK_FREQ_500 = "TRUE"; + parameter [1:0] CRM_USER_CLK_FREQ = 2'h2; + parameter [7:0] DNSTREAM_LINK_NUM = 8'h00; + parameter [1:0] GEN3_PCS_AUTO_REALIGN = 2'h1; + parameter GEN3_PCS_RX_ELECIDLE_INTERNAL = "TRUE"; + parameter [8:0] LL_ACK_TIMEOUT = 9'h000; + parameter LL_ACK_TIMEOUT_EN = "FALSE"; + parameter integer LL_ACK_TIMEOUT_FUNC = 0; + parameter [15:0] LL_CPL_FC_UPDATE_TIMER = 16'h0000; + parameter LL_CPL_FC_UPDATE_TIMER_OVERRIDE = "FALSE"; + parameter [15:0] LL_FC_UPDATE_TIMER = 16'h0000; + parameter LL_FC_UPDATE_TIMER_OVERRIDE = "FALSE"; + parameter [15:0] LL_NP_FC_UPDATE_TIMER = 16'h0000; + parameter LL_NP_FC_UPDATE_TIMER_OVERRIDE = "FALSE"; + parameter [15:0] LL_P_FC_UPDATE_TIMER = 16'h0000; + parameter LL_P_FC_UPDATE_TIMER_OVERRIDE = "FALSE"; + parameter [8:0] LL_REPLAY_TIMEOUT = 9'h000; + parameter LL_REPLAY_TIMEOUT_EN = "FALSE"; + parameter integer LL_REPLAY_TIMEOUT_FUNC = 0; + parameter [9:0] LTR_TX_MESSAGE_MINIMUM_INTERVAL = 10'h0FA; + parameter LTR_TX_MESSAGE_ON_FUNC_POWER_STATE_CHANGE = "FALSE"; + parameter LTR_TX_MESSAGE_ON_LTR_ENABLE = "FALSE"; + parameter PF0_AER_CAP_ECRC_CHECK_CAPABLE = "FALSE"; + parameter PF0_AER_CAP_ECRC_GEN_CAPABLE = "FALSE"; + parameter [11:0] PF0_AER_CAP_NEXTPTR = 12'h000; + parameter [11:0] PF0_ARI_CAP_NEXTPTR = 12'h000; + parameter [7:0] PF0_ARI_CAP_NEXT_FUNC = 8'h00; + parameter [3:0] PF0_ARI_CAP_VER = 4'h1; + parameter [4:0] PF0_BAR0_APERTURE_SIZE = 5'h03; + parameter [2:0] PF0_BAR0_CONTROL = 3'h4; + parameter [4:0] PF0_BAR1_APERTURE_SIZE = 5'h00; + parameter [2:0] PF0_BAR1_CONTROL = 3'h0; + parameter [4:0] PF0_BAR2_APERTURE_SIZE = 5'h03; + parameter [2:0] PF0_BAR2_CONTROL = 3'h4; + parameter [4:0] PF0_BAR3_APERTURE_SIZE = 5'h03; + parameter [2:0] PF0_BAR3_CONTROL = 3'h0; + parameter [4:0] PF0_BAR4_APERTURE_SIZE = 5'h03; + parameter [2:0] PF0_BAR4_CONTROL = 3'h4; + parameter [4:0] PF0_BAR5_APERTURE_SIZE = 5'h03; + parameter [2:0] PF0_BAR5_CONTROL = 3'h0; + parameter [7:0] PF0_BIST_REGISTER = 8'h00; + parameter [7:0] PF0_CAPABILITY_POINTER = 8'h50; + parameter [23:0] PF0_CLASS_CODE = 24'h000000; + parameter [15:0] PF0_DEVICE_ID = 16'h0000; + parameter PF0_DEV_CAP2_128B_CAS_ATOMIC_COMPLETER_SUPPORT = "TRUE"; + parameter PF0_DEV_CAP2_32B_ATOMIC_COMPLETER_SUPPORT = "TRUE"; + parameter PF0_DEV_CAP2_64B_ATOMIC_COMPLETER_SUPPORT = "TRUE"; + parameter PF0_DEV_CAP2_CPL_TIMEOUT_DISABLE = "TRUE"; + parameter PF0_DEV_CAP2_LTR_SUPPORT = "TRUE"; + parameter [1:0] PF0_DEV_CAP2_OBFF_SUPPORT = 2'h0; + parameter PF0_DEV_CAP2_TPH_COMPLETER_SUPPORT = "FALSE"; + parameter integer PF0_DEV_CAP_ENDPOINT_L0S_LATENCY = 0; + parameter integer PF0_DEV_CAP_ENDPOINT_L1_LATENCY = 0; + parameter PF0_DEV_CAP_EXT_TAG_SUPPORTED = "TRUE"; + parameter PF0_DEV_CAP_FUNCTION_LEVEL_RESET_CAPABLE = "TRUE"; + parameter [2:0] PF0_DEV_CAP_MAX_PAYLOAD_SIZE = 3'h3; + parameter [11:0] PF0_DPA_CAP_NEXTPTR = 12'h000; + parameter [4:0] PF0_DPA_CAP_SUB_STATE_CONTROL = 5'h00; + parameter PF0_DPA_CAP_SUB_STATE_CONTROL_EN = "TRUE"; + parameter [7:0] PF0_DPA_CAP_SUB_STATE_POWER_ALLOCATION0 = 8'h00; + parameter [7:0] PF0_DPA_CAP_SUB_STATE_POWER_ALLOCATION1 = 8'h00; + parameter [7:0] PF0_DPA_CAP_SUB_STATE_POWER_ALLOCATION2 = 8'h00; + parameter [7:0] PF0_DPA_CAP_SUB_STATE_POWER_ALLOCATION3 = 8'h00; + parameter [7:0] PF0_DPA_CAP_SUB_STATE_POWER_ALLOCATION4 = 8'h00; + parameter [7:0] PF0_DPA_CAP_SUB_STATE_POWER_ALLOCATION5 = 8'h00; + parameter [7:0] PF0_DPA_CAP_SUB_STATE_POWER_ALLOCATION6 = 8'h00; + parameter [7:0] PF0_DPA_CAP_SUB_STATE_POWER_ALLOCATION7 = 8'h00; + parameter [3:0] PF0_DPA_CAP_VER = 4'h1; + parameter [11:0] PF0_DSN_CAP_NEXTPTR = 12'h10C; + parameter [4:0] PF0_EXPANSION_ROM_APERTURE_SIZE = 5'h03; + parameter PF0_EXPANSION_ROM_ENABLE = "FALSE"; + parameter [7:0] PF0_INTERRUPT_LINE = 8'h00; + parameter [2:0] PF0_INTERRUPT_PIN = 3'h1; + parameter integer PF0_LINK_CAP_ASPM_SUPPORT = 0; + parameter integer PF0_LINK_CAP_L0S_EXIT_LATENCY_COMCLK_GEN1 = 7; + parameter integer PF0_LINK_CAP_L0S_EXIT_LATENCY_COMCLK_GEN2 = 7; + parameter integer PF0_LINK_CAP_L0S_EXIT_LATENCY_COMCLK_GEN3 = 7; + parameter integer PF0_LINK_CAP_L0S_EXIT_LATENCY_GEN1 = 7; + parameter integer PF0_LINK_CAP_L0S_EXIT_LATENCY_GEN2 = 7; + parameter integer PF0_LINK_CAP_L0S_EXIT_LATENCY_GEN3 = 7; + parameter integer PF0_LINK_CAP_L1_EXIT_LATENCY_COMCLK_GEN1 = 7; + parameter integer PF0_LINK_CAP_L1_EXIT_LATENCY_COMCLK_GEN2 = 7; + parameter integer PF0_LINK_CAP_L1_EXIT_LATENCY_COMCLK_GEN3 = 7; + parameter integer PF0_LINK_CAP_L1_EXIT_LATENCY_GEN1 = 7; + parameter integer PF0_LINK_CAP_L1_EXIT_LATENCY_GEN2 = 7; + parameter integer PF0_LINK_CAP_L1_EXIT_LATENCY_GEN3 = 7; + parameter PF0_LINK_STATUS_SLOT_CLOCK_CONFIG = "TRUE"; + parameter [9:0] PF0_LTR_CAP_MAX_NOSNOOP_LAT = 10'h000; + parameter [9:0] PF0_LTR_CAP_MAX_SNOOP_LAT = 10'h000; + parameter [11:0] PF0_LTR_CAP_NEXTPTR = 12'h000; + parameter [3:0] PF0_LTR_CAP_VER = 4'h1; + parameter [7:0] PF0_MSIX_CAP_NEXTPTR = 8'h00; + parameter integer PF0_MSIX_CAP_PBA_BIR = 0; + parameter [28:0] PF0_MSIX_CAP_PBA_OFFSET = 29'h00000050; + parameter integer PF0_MSIX_CAP_TABLE_BIR = 0; + parameter [28:0] PF0_MSIX_CAP_TABLE_OFFSET = 29'h00000040; + parameter [10:0] PF0_MSIX_CAP_TABLE_SIZE = 11'h000; + parameter integer PF0_MSI_CAP_MULTIMSGCAP = 0; + parameter [7:0] PF0_MSI_CAP_NEXTPTR = 8'h00; + parameter [11:0] PF0_PB_CAP_NEXTPTR = 12'h000; + parameter PF0_PB_CAP_SYSTEM_ALLOCATED = "FALSE"; + parameter [3:0] PF0_PB_CAP_VER = 4'h1; + parameter [7:0] PF0_PM_CAP_ID = 8'h01; + parameter [7:0] PF0_PM_CAP_NEXTPTR = 8'h00; + parameter PF0_PM_CAP_PMESUPPORT_D0 = "TRUE"; + parameter PF0_PM_CAP_PMESUPPORT_D1 = "TRUE"; + parameter PF0_PM_CAP_PMESUPPORT_D3HOT = "TRUE"; + parameter PF0_PM_CAP_SUPP_D1_STATE = "TRUE"; + parameter [2:0] PF0_PM_CAP_VER_ID = 3'h3; + parameter PF0_PM_CSR_NOSOFTRESET = "TRUE"; + parameter PF0_RBAR_CAP_ENABLE = "FALSE"; + parameter [2:0] PF0_RBAR_CAP_INDEX0 = 3'h0; + parameter [2:0] PF0_RBAR_CAP_INDEX1 = 3'h0; + parameter [2:0] PF0_RBAR_CAP_INDEX2 = 3'h0; + parameter [11:0] PF0_RBAR_CAP_NEXTPTR = 12'h000; + parameter [19:0] PF0_RBAR_CAP_SIZE0 = 20'h00000; + parameter [19:0] PF0_RBAR_CAP_SIZE1 = 20'h00000; + parameter [19:0] PF0_RBAR_CAP_SIZE2 = 20'h00000; + parameter [3:0] PF0_RBAR_CAP_VER = 4'h1; + parameter [2:0] PF0_RBAR_NUM = 3'h1; + parameter [7:0] PF0_REVISION_ID = 8'h00; + parameter [4:0] PF0_SRIOV_BAR0_APERTURE_SIZE = 5'h03; + parameter [2:0] PF0_SRIOV_BAR0_CONTROL = 3'h4; + parameter [4:0] PF0_SRIOV_BAR1_APERTURE_SIZE = 5'h00; + parameter [2:0] PF0_SRIOV_BAR1_CONTROL = 3'h0; + parameter [4:0] PF0_SRIOV_BAR2_APERTURE_SIZE = 5'h03; + parameter [2:0] PF0_SRIOV_BAR2_CONTROL = 3'h4; + parameter [4:0] PF0_SRIOV_BAR3_APERTURE_SIZE = 5'h03; + parameter [2:0] PF0_SRIOV_BAR3_CONTROL = 3'h0; + parameter [4:0] PF0_SRIOV_BAR4_APERTURE_SIZE = 5'h03; + parameter [2:0] PF0_SRIOV_BAR4_CONTROL = 3'h4; + parameter [4:0] PF0_SRIOV_BAR5_APERTURE_SIZE = 5'h03; + parameter [2:0] PF0_SRIOV_BAR5_CONTROL = 3'h0; + parameter [15:0] PF0_SRIOV_CAP_INITIAL_VF = 16'h0000; + parameter [11:0] PF0_SRIOV_CAP_NEXTPTR = 12'h000; + parameter [15:0] PF0_SRIOV_CAP_TOTAL_VF = 16'h0000; + parameter [3:0] PF0_SRIOV_CAP_VER = 4'h1; + parameter [15:0] PF0_SRIOV_FIRST_VF_OFFSET = 16'h0000; + parameter [15:0] PF0_SRIOV_FUNC_DEP_LINK = 16'h0000; + parameter [31:0] PF0_SRIOV_SUPPORTED_PAGE_SIZE = 32'h00000000; + parameter [15:0] PF0_SRIOV_VF_DEVICE_ID = 16'h0000; + parameter [15:0] PF0_SUBSYSTEM_ID = 16'h0000; + parameter PF0_TPHR_CAP_DEV_SPECIFIC_MODE = "TRUE"; + parameter PF0_TPHR_CAP_ENABLE = "FALSE"; + parameter PF0_TPHR_CAP_INT_VEC_MODE = "TRUE"; + parameter [11:0] PF0_TPHR_CAP_NEXTPTR = 12'h000; + parameter [2:0] PF0_TPHR_CAP_ST_MODE_SEL = 3'h0; + parameter [1:0] PF0_TPHR_CAP_ST_TABLE_LOC = 2'h0; + parameter [10:0] PF0_TPHR_CAP_ST_TABLE_SIZE = 11'h000; + parameter [3:0] PF0_TPHR_CAP_VER = 4'h1; + parameter [11:0] PF0_VC_CAP_NEXTPTR = 12'h000; + parameter [3:0] PF0_VC_CAP_VER = 4'h1; + parameter PF1_AER_CAP_ECRC_CHECK_CAPABLE = "FALSE"; + parameter PF1_AER_CAP_ECRC_GEN_CAPABLE = "FALSE"; + parameter [11:0] PF1_AER_CAP_NEXTPTR = 12'h000; + parameter [11:0] PF1_ARI_CAP_NEXTPTR = 12'h000; + parameter [7:0] PF1_ARI_CAP_NEXT_FUNC = 8'h00; + parameter [4:0] PF1_BAR0_APERTURE_SIZE = 5'h03; + parameter [2:0] PF1_BAR0_CONTROL = 3'h4; + parameter [4:0] PF1_BAR1_APERTURE_SIZE = 5'h00; + parameter [2:0] PF1_BAR1_CONTROL = 3'h0; + parameter [4:0] PF1_BAR2_APERTURE_SIZE = 5'h03; + parameter [2:0] PF1_BAR2_CONTROL = 3'h4; + parameter [4:0] PF1_BAR3_APERTURE_SIZE = 5'h03; + parameter [2:0] PF1_BAR3_CONTROL = 3'h0; + parameter [4:0] PF1_BAR4_APERTURE_SIZE = 5'h03; + parameter [2:0] PF1_BAR4_CONTROL = 3'h4; + parameter [4:0] PF1_BAR5_APERTURE_SIZE = 5'h03; + parameter [2:0] PF1_BAR5_CONTROL = 3'h0; + parameter [7:0] PF1_BIST_REGISTER = 8'h00; + parameter [7:0] PF1_CAPABILITY_POINTER = 8'h50; + parameter [23:0] PF1_CLASS_CODE = 24'h000000; + parameter [15:0] PF1_DEVICE_ID = 16'h0000; + parameter [2:0] PF1_DEV_CAP_MAX_PAYLOAD_SIZE = 3'h3; + parameter [11:0] PF1_DPA_CAP_NEXTPTR = 12'h000; + parameter [4:0] PF1_DPA_CAP_SUB_STATE_CONTROL = 5'h00; + parameter PF1_DPA_CAP_SUB_STATE_CONTROL_EN = "TRUE"; + parameter [7:0] PF1_DPA_CAP_SUB_STATE_POWER_ALLOCATION0 = 8'h00; + parameter [7:0] PF1_DPA_CAP_SUB_STATE_POWER_ALLOCATION1 = 8'h00; + parameter [7:0] PF1_DPA_CAP_SUB_STATE_POWER_ALLOCATION2 = 8'h00; + parameter [7:0] PF1_DPA_CAP_SUB_STATE_POWER_ALLOCATION3 = 8'h00; + parameter [7:0] PF1_DPA_CAP_SUB_STATE_POWER_ALLOCATION4 = 8'h00; + parameter [7:0] PF1_DPA_CAP_SUB_STATE_POWER_ALLOCATION5 = 8'h00; + parameter [7:0] PF1_DPA_CAP_SUB_STATE_POWER_ALLOCATION6 = 8'h00; + parameter [7:0] PF1_DPA_CAP_SUB_STATE_POWER_ALLOCATION7 = 8'h00; + parameter [3:0] PF1_DPA_CAP_VER = 4'h1; + parameter [11:0] PF1_DSN_CAP_NEXTPTR = 12'h10C; + parameter [4:0] PF1_EXPANSION_ROM_APERTURE_SIZE = 5'h03; + parameter PF1_EXPANSION_ROM_ENABLE = "FALSE"; + parameter [7:0] PF1_INTERRUPT_LINE = 8'h00; + parameter [2:0] PF1_INTERRUPT_PIN = 3'h1; + parameter [7:0] PF1_MSIX_CAP_NEXTPTR = 8'h00; + parameter integer PF1_MSIX_CAP_PBA_BIR = 0; + parameter [28:0] PF1_MSIX_CAP_PBA_OFFSET = 29'h00000050; + parameter integer PF1_MSIX_CAP_TABLE_BIR = 0; + parameter [28:0] PF1_MSIX_CAP_TABLE_OFFSET = 29'h00000040; + parameter [10:0] PF1_MSIX_CAP_TABLE_SIZE = 11'h000; + parameter integer PF1_MSI_CAP_MULTIMSGCAP = 0; + parameter [7:0] PF1_MSI_CAP_NEXTPTR = 8'h00; + parameter [11:0] PF1_PB_CAP_NEXTPTR = 12'h000; + parameter PF1_PB_CAP_SYSTEM_ALLOCATED = "FALSE"; + parameter [3:0] PF1_PB_CAP_VER = 4'h1; + parameter [7:0] PF1_PM_CAP_ID = 8'h01; + parameter [7:0] PF1_PM_CAP_NEXTPTR = 8'h00; + parameter [2:0] PF1_PM_CAP_VER_ID = 3'h3; + parameter PF1_RBAR_CAP_ENABLE = "FALSE"; + parameter [2:0] PF1_RBAR_CAP_INDEX0 = 3'h0; + parameter [2:0] PF1_RBAR_CAP_INDEX1 = 3'h0; + parameter [2:0] PF1_RBAR_CAP_INDEX2 = 3'h0; + parameter [11:0] PF1_RBAR_CAP_NEXTPTR = 12'h000; + parameter [19:0] PF1_RBAR_CAP_SIZE0 = 20'h00000; + parameter [19:0] PF1_RBAR_CAP_SIZE1 = 20'h00000; + parameter [19:0] PF1_RBAR_CAP_SIZE2 = 20'h00000; + parameter [3:0] PF1_RBAR_CAP_VER = 4'h1; + parameter [2:0] PF1_RBAR_NUM = 3'h1; + parameter [7:0] PF1_REVISION_ID = 8'h00; + parameter [4:0] PF1_SRIOV_BAR0_APERTURE_SIZE = 5'h03; + parameter [2:0] PF1_SRIOV_BAR0_CONTROL = 3'h4; + parameter [4:0] PF1_SRIOV_BAR1_APERTURE_SIZE = 5'h00; + parameter [2:0] PF1_SRIOV_BAR1_CONTROL = 3'h0; + parameter [4:0] PF1_SRIOV_BAR2_APERTURE_SIZE = 5'h03; + parameter [2:0] PF1_SRIOV_BAR2_CONTROL = 3'h4; + parameter [4:0] PF1_SRIOV_BAR3_APERTURE_SIZE = 5'h03; + parameter [2:0] PF1_SRIOV_BAR3_CONTROL = 3'h0; + parameter [4:0] PF1_SRIOV_BAR4_APERTURE_SIZE = 5'h03; + parameter [2:0] PF1_SRIOV_BAR4_CONTROL = 3'h4; + parameter [4:0] PF1_SRIOV_BAR5_APERTURE_SIZE = 5'h03; + parameter [2:0] PF1_SRIOV_BAR5_CONTROL = 3'h0; + parameter [15:0] PF1_SRIOV_CAP_INITIAL_VF = 16'h0000; + parameter [11:0] PF1_SRIOV_CAP_NEXTPTR = 12'h000; + parameter [15:0] PF1_SRIOV_CAP_TOTAL_VF = 16'h0000; + parameter [3:0] PF1_SRIOV_CAP_VER = 4'h1; + parameter [15:0] PF1_SRIOV_FIRST_VF_OFFSET = 16'h0000; + parameter [15:0] PF1_SRIOV_FUNC_DEP_LINK = 16'h0000; + parameter [31:0] PF1_SRIOV_SUPPORTED_PAGE_SIZE = 32'h00000000; + parameter [15:0] PF1_SRIOV_VF_DEVICE_ID = 16'h0000; + parameter [15:0] PF1_SUBSYSTEM_ID = 16'h0000; + parameter PF1_TPHR_CAP_DEV_SPECIFIC_MODE = "TRUE"; + parameter PF1_TPHR_CAP_ENABLE = "FALSE"; + parameter PF1_TPHR_CAP_INT_VEC_MODE = "TRUE"; + parameter [11:0] PF1_TPHR_CAP_NEXTPTR = 12'h000; + parameter [2:0] PF1_TPHR_CAP_ST_MODE_SEL = 3'h0; + parameter [1:0] PF1_TPHR_CAP_ST_TABLE_LOC = 2'h0; + parameter [10:0] PF1_TPHR_CAP_ST_TABLE_SIZE = 11'h000; + parameter [3:0] PF1_TPHR_CAP_VER = 4'h1; + parameter PL_DISABLE_EI_INFER_IN_L0 = "FALSE"; + parameter PL_DISABLE_GEN3_DC_BALANCE = "FALSE"; + parameter PL_DISABLE_SCRAMBLING = "FALSE"; + parameter PL_DISABLE_UPCONFIG_CAPABLE = "FALSE"; + parameter PL_EQ_ADAPT_DISABLE_COEFF_CHECK = "FALSE"; + parameter PL_EQ_ADAPT_DISABLE_PRESET_CHECK = "FALSE"; + parameter [4:0] PL_EQ_ADAPT_ITER_COUNT = 5'h02; + parameter [1:0] PL_EQ_ADAPT_REJECT_RETRY_COUNT = 2'h1; + parameter PL_EQ_BYPASS_PHASE23 = "FALSE"; + parameter PL_EQ_SHORT_ADAPT_PHASE = "FALSE"; + parameter [15:0] PL_LANE0_EQ_CONTROL = 16'h3F00; + parameter [15:0] PL_LANE1_EQ_CONTROL = 16'h3F00; + parameter [15:0] PL_LANE2_EQ_CONTROL = 16'h3F00; + parameter [15:0] PL_LANE3_EQ_CONTROL = 16'h3F00; + parameter [15:0] PL_LANE4_EQ_CONTROL = 16'h3F00; + parameter [15:0] PL_LANE5_EQ_CONTROL = 16'h3F00; + parameter [15:0] PL_LANE6_EQ_CONTROL = 16'h3F00; + parameter [15:0] PL_LANE7_EQ_CONTROL = 16'h3F00; + parameter [2:0] PL_LINK_CAP_MAX_LINK_SPEED = 3'h4; + parameter [3:0] PL_LINK_CAP_MAX_LINK_WIDTH = 4'h8; + parameter integer PL_N_FTS_COMCLK_GEN1 = 255; + parameter integer PL_N_FTS_COMCLK_GEN2 = 255; + parameter integer PL_N_FTS_COMCLK_GEN3 = 255; + parameter integer PL_N_FTS_GEN1 = 255; + parameter integer PL_N_FTS_GEN2 = 255; + parameter integer PL_N_FTS_GEN3 = 255; + parameter PL_SIM_FAST_LINK_TRAINING = "FALSE"; + parameter PL_UPSTREAM_FACING = "TRUE"; + parameter [15:0] PM_ASPML0S_TIMEOUT = 16'h05DC; + parameter [19:0] PM_ASPML1_ENTRY_DELAY = 20'h00000; + parameter PM_ENABLE_SLOT_POWER_CAPTURE = "TRUE"; + parameter [31:0] PM_L1_REENTRY_DELAY = 32'h00000000; + parameter [19:0] PM_PME_SERVICE_TIMEOUT_DELAY = 20'h186A0; + parameter [15:0] PM_PME_TURNOFF_ACK_DELAY = 16'h0064; + parameter SIM_VERSION = "1.0"; + parameter integer SPARE_BIT0 = 0; + parameter integer SPARE_BIT1 = 0; + parameter integer SPARE_BIT2 = 0; + parameter integer SPARE_BIT3 = 0; + parameter integer SPARE_BIT4 = 0; + parameter integer SPARE_BIT5 = 0; + parameter integer SPARE_BIT6 = 0; + parameter integer SPARE_BIT7 = 0; + parameter integer SPARE_BIT8 = 0; + parameter [7:0] SPARE_BYTE0 = 8'h00; + parameter [7:0] SPARE_BYTE1 = 8'h00; + parameter [7:0] SPARE_BYTE2 = 8'h00; + parameter [7:0] SPARE_BYTE3 = 8'h00; + parameter [31:0] SPARE_WORD0 = 32'h00000000; + parameter [31:0] SPARE_WORD1 = 32'h00000000; + parameter [31:0] SPARE_WORD2 = 32'h00000000; + parameter [31:0] SPARE_WORD3 = 32'h00000000; + parameter SRIOV_CAP_ENABLE = "FALSE"; + parameter [23:0] TL_COMPL_TIMEOUT_REG0 = 24'hBEBC20; + parameter [27:0] TL_COMPL_TIMEOUT_REG1 = 28'h0000000; + parameter [11:0] TL_CREDITS_CD = 12'h3E0; + parameter [7:0] TL_CREDITS_CH = 8'h20; + parameter [11:0] TL_CREDITS_NPD = 12'h028; + parameter [7:0] TL_CREDITS_NPH = 8'h20; + parameter [11:0] TL_CREDITS_PD = 12'h198; + parameter [7:0] TL_CREDITS_PH = 8'h20; + parameter TL_ENABLE_MESSAGE_RID_CHECK_ENABLE = "TRUE"; + parameter TL_EXTENDED_CFG_EXTEND_INTERFACE_ENABLE = "FALSE"; + parameter TL_LEGACY_CFG_EXTEND_INTERFACE_ENABLE = "FALSE"; + parameter TL_LEGACY_MODE_ENABLE = "FALSE"; + parameter TL_PF_ENABLE_REG = "FALSE"; + parameter TL_TAG_MGMT_ENABLE = "TRUE"; + parameter [11:0] VF0_ARI_CAP_NEXTPTR = 12'h000; + parameter [7:0] VF0_CAPABILITY_POINTER = 8'h50; + parameter integer VF0_MSIX_CAP_PBA_BIR = 0; + parameter [28:0] VF0_MSIX_CAP_PBA_OFFSET = 29'h00000050; + parameter integer VF0_MSIX_CAP_TABLE_BIR = 0; + parameter [28:0] VF0_MSIX_CAP_TABLE_OFFSET = 29'h00000040; + parameter [10:0] VF0_MSIX_CAP_TABLE_SIZE = 11'h000; + parameter integer VF0_MSI_CAP_MULTIMSGCAP = 0; + parameter [7:0] VF0_PM_CAP_ID = 8'h01; + parameter [7:0] VF0_PM_CAP_NEXTPTR = 8'h00; + parameter [2:0] VF0_PM_CAP_VER_ID = 3'h3; + parameter VF0_TPHR_CAP_DEV_SPECIFIC_MODE = "TRUE"; + parameter VF0_TPHR_CAP_ENABLE = "FALSE"; + parameter VF0_TPHR_CAP_INT_VEC_MODE = "TRUE"; + parameter [11:0] VF0_TPHR_CAP_NEXTPTR = 12'h000; + parameter [2:0] VF0_TPHR_CAP_ST_MODE_SEL = 3'h0; + parameter [1:0] VF0_TPHR_CAP_ST_TABLE_LOC = 2'h0; + parameter [10:0] VF0_TPHR_CAP_ST_TABLE_SIZE = 11'h000; + parameter [3:0] VF0_TPHR_CAP_VER = 4'h1; + parameter [11:0] VF1_ARI_CAP_NEXTPTR = 12'h000; + parameter integer VF1_MSIX_CAP_PBA_BIR = 0; + parameter [28:0] VF1_MSIX_CAP_PBA_OFFSET = 29'h00000050; + parameter integer VF1_MSIX_CAP_TABLE_BIR = 0; + parameter [28:0] VF1_MSIX_CAP_TABLE_OFFSET = 29'h00000040; + parameter [10:0] VF1_MSIX_CAP_TABLE_SIZE = 11'h000; + parameter integer VF1_MSI_CAP_MULTIMSGCAP = 0; + parameter [7:0] VF1_PM_CAP_ID = 8'h01; + parameter [7:0] VF1_PM_CAP_NEXTPTR = 8'h00; + parameter [2:0] VF1_PM_CAP_VER_ID = 3'h3; + parameter VF1_TPHR_CAP_DEV_SPECIFIC_MODE = "TRUE"; + parameter VF1_TPHR_CAP_ENABLE = "FALSE"; + parameter VF1_TPHR_CAP_INT_VEC_MODE = "TRUE"; + parameter [11:0] VF1_TPHR_CAP_NEXTPTR = 12'h000; + parameter [2:0] VF1_TPHR_CAP_ST_MODE_SEL = 3'h0; + parameter [1:0] VF1_TPHR_CAP_ST_TABLE_LOC = 2'h0; + parameter [10:0] VF1_TPHR_CAP_ST_TABLE_SIZE = 11'h000; + parameter [3:0] VF1_TPHR_CAP_VER = 4'h1; + parameter [11:0] VF2_ARI_CAP_NEXTPTR = 12'h000; + parameter integer VF2_MSIX_CAP_PBA_BIR = 0; + parameter [28:0] VF2_MSIX_CAP_PBA_OFFSET = 29'h00000050; + parameter integer VF2_MSIX_CAP_TABLE_BIR = 0; + parameter [28:0] VF2_MSIX_CAP_TABLE_OFFSET = 29'h00000040; + parameter [10:0] VF2_MSIX_CAP_TABLE_SIZE = 11'h000; + parameter integer VF2_MSI_CAP_MULTIMSGCAP = 0; + parameter [7:0] VF2_PM_CAP_ID = 8'h01; + parameter [7:0] VF2_PM_CAP_NEXTPTR = 8'h00; + parameter [2:0] VF2_PM_CAP_VER_ID = 3'h3; + parameter VF2_TPHR_CAP_DEV_SPECIFIC_MODE = "TRUE"; + parameter VF2_TPHR_CAP_ENABLE = "FALSE"; + parameter VF2_TPHR_CAP_INT_VEC_MODE = "TRUE"; + parameter [11:0] VF2_TPHR_CAP_NEXTPTR = 12'h000; + parameter [2:0] VF2_TPHR_CAP_ST_MODE_SEL = 3'h0; + parameter [1:0] VF2_TPHR_CAP_ST_TABLE_LOC = 2'h0; + parameter [10:0] VF2_TPHR_CAP_ST_TABLE_SIZE = 11'h000; + parameter [3:0] VF2_TPHR_CAP_VER = 4'h1; + parameter [11:0] VF3_ARI_CAP_NEXTPTR = 12'h000; + parameter integer VF3_MSIX_CAP_PBA_BIR = 0; + parameter [28:0] VF3_MSIX_CAP_PBA_OFFSET = 29'h00000050; + parameter integer VF3_MSIX_CAP_TABLE_BIR = 0; + parameter [28:0] VF3_MSIX_CAP_TABLE_OFFSET = 29'h00000040; + parameter [10:0] VF3_MSIX_CAP_TABLE_SIZE = 11'h000; + parameter integer VF3_MSI_CAP_MULTIMSGCAP = 0; + parameter [7:0] VF3_PM_CAP_ID = 8'h01; + parameter [7:0] VF3_PM_CAP_NEXTPTR = 8'h00; + parameter [2:0] VF3_PM_CAP_VER_ID = 3'h3; + parameter VF3_TPHR_CAP_DEV_SPECIFIC_MODE = "TRUE"; + parameter VF3_TPHR_CAP_ENABLE = "FALSE"; + parameter VF3_TPHR_CAP_INT_VEC_MODE = "TRUE"; + parameter [11:0] VF3_TPHR_CAP_NEXTPTR = 12'h000; + parameter [2:0] VF3_TPHR_CAP_ST_MODE_SEL = 3'h0; + parameter [1:0] VF3_TPHR_CAP_ST_TABLE_LOC = 2'h0; + parameter [10:0] VF3_TPHR_CAP_ST_TABLE_SIZE = 11'h000; + parameter [3:0] VF3_TPHR_CAP_VER = 4'h1; + parameter [11:0] VF4_ARI_CAP_NEXTPTR = 12'h000; + parameter integer VF4_MSIX_CAP_PBA_BIR = 0; + parameter [28:0] VF4_MSIX_CAP_PBA_OFFSET = 29'h00000050; + parameter integer VF4_MSIX_CAP_TABLE_BIR = 0; + parameter [28:0] VF4_MSIX_CAP_TABLE_OFFSET = 29'h00000040; + parameter [10:0] VF4_MSIX_CAP_TABLE_SIZE = 11'h000; + parameter integer VF4_MSI_CAP_MULTIMSGCAP = 0; + parameter [7:0] VF4_PM_CAP_ID = 8'h01; + parameter [7:0] VF4_PM_CAP_NEXTPTR = 8'h00; + parameter [2:0] VF4_PM_CAP_VER_ID = 3'h3; + parameter VF4_TPHR_CAP_DEV_SPECIFIC_MODE = "TRUE"; + parameter VF4_TPHR_CAP_ENABLE = "FALSE"; + parameter VF4_TPHR_CAP_INT_VEC_MODE = "TRUE"; + parameter [11:0] VF4_TPHR_CAP_NEXTPTR = 12'h000; + parameter [2:0] VF4_TPHR_CAP_ST_MODE_SEL = 3'h0; + parameter [1:0] VF4_TPHR_CAP_ST_TABLE_LOC = 2'h0; + parameter [10:0] VF4_TPHR_CAP_ST_TABLE_SIZE = 11'h000; + parameter [3:0] VF4_TPHR_CAP_VER = 4'h1; + parameter [11:0] VF5_ARI_CAP_NEXTPTR = 12'h000; + parameter integer VF5_MSIX_CAP_PBA_BIR = 0; + parameter [28:0] VF5_MSIX_CAP_PBA_OFFSET = 29'h00000050; + parameter integer VF5_MSIX_CAP_TABLE_BIR = 0; + parameter [28:0] VF5_MSIX_CAP_TABLE_OFFSET = 29'h00000040; + parameter [10:0] VF5_MSIX_CAP_TABLE_SIZE = 11'h000; + parameter integer VF5_MSI_CAP_MULTIMSGCAP = 0; + parameter [7:0] VF5_PM_CAP_ID = 8'h01; + parameter [7:0] VF5_PM_CAP_NEXTPTR = 8'h00; + parameter [2:0] VF5_PM_CAP_VER_ID = 3'h3; + parameter VF5_TPHR_CAP_DEV_SPECIFIC_MODE = "TRUE"; + parameter VF5_TPHR_CAP_ENABLE = "FALSE"; + parameter VF5_TPHR_CAP_INT_VEC_MODE = "TRUE"; + parameter [11:0] VF5_TPHR_CAP_NEXTPTR = 12'h000; + parameter [2:0] VF5_TPHR_CAP_ST_MODE_SEL = 3'h0; + parameter [1:0] VF5_TPHR_CAP_ST_TABLE_LOC = 2'h0; + parameter [10:0] VF5_TPHR_CAP_ST_TABLE_SIZE = 11'h000; + parameter [3:0] VF5_TPHR_CAP_VER = 4'h1; + output CFGERRCOROUT; + output CFGERRFATALOUT; + output CFGERRNONFATALOUT; + output CFGEXTREADRECEIVED; + output CFGEXTWRITERECEIVED; + output CFGHOTRESETOUT; + output CFGINPUTUPDATEDONE; + output CFGINTERRUPTAOUTPUT; + output CFGINTERRUPTBOUTPUT; + output CFGINTERRUPTCOUTPUT; + output CFGINTERRUPTDOUTPUT; + output CFGINTERRUPTMSIFAIL; + output CFGINTERRUPTMSIMASKUPDATE; + output CFGINTERRUPTMSISENT; + output CFGINTERRUPTMSIXFAIL; + output CFGINTERRUPTMSIXSENT; + output CFGINTERRUPTSENT; + output CFGLOCALERROR; + output CFGLTRENABLE; + output CFGMCUPDATEDONE; + output CFGMGMTREADWRITEDONE; + output CFGMSGRECEIVED; + output CFGMSGTRANSMITDONE; + output CFGPERFUNCTIONUPDATEDONE; + output CFGPHYLINKDOWN; + output CFGPLSTATUSCHANGE; + output CFGPOWERSTATECHANGEINTERRUPT; + output CFGTPHSTTREADENABLE; + output CFGTPHSTTWRITEENABLE; + output DRPRDY; + output MAXISCQTLAST; + output MAXISCQTVALID; + output MAXISRCTLAST; + output MAXISRCTVALID; + output PCIERQSEQNUMVLD; + output PCIERQTAGVLD; + output PIPERX0POLARITY; + output PIPERX1POLARITY; + output PIPERX2POLARITY; + output PIPERX3POLARITY; + output PIPERX4POLARITY; + output PIPERX5POLARITY; + output PIPERX6POLARITY; + output PIPERX7POLARITY; + output PIPETX0COMPLIANCE; + output PIPETX0DATAVALID; + output PIPETX0ELECIDLE; + output PIPETX0STARTBLOCK; + output PIPETX1COMPLIANCE; + output PIPETX1DATAVALID; + output PIPETX1ELECIDLE; + output PIPETX1STARTBLOCK; + output PIPETX2COMPLIANCE; + output PIPETX2DATAVALID; + output PIPETX2ELECIDLE; + output PIPETX2STARTBLOCK; + output PIPETX3COMPLIANCE; + output PIPETX3DATAVALID; + output PIPETX3ELECIDLE; + output PIPETX3STARTBLOCK; + output PIPETX4COMPLIANCE; + output PIPETX4DATAVALID; + output PIPETX4ELECIDLE; + output PIPETX4STARTBLOCK; + output PIPETX5COMPLIANCE; + output PIPETX5DATAVALID; + output PIPETX5ELECIDLE; + output PIPETX5STARTBLOCK; + output PIPETX6COMPLIANCE; + output PIPETX6DATAVALID; + output PIPETX6ELECIDLE; + output PIPETX6STARTBLOCK; + output PIPETX7COMPLIANCE; + output PIPETX7DATAVALID; + output PIPETX7ELECIDLE; + output PIPETX7STARTBLOCK; + output PIPETXDEEMPH; + output PIPETXRCVRDET; + output PIPETXRESET; + output PIPETXSWING; + output PLEQINPROGRESS; + output [11:0] CFGFCCPLD; + output [11:0] CFGFCNPD; + output [11:0] CFGFCPD; + output [11:0] CFGVFSTATUS; + output [143:0] MIREPLAYRAMWRITEDATA; + output [143:0] MIREQUESTRAMWRITEDATA; + output [15:0] CFGPERFUNCSTATUSDATA; + output [15:0] DBGDATAOUT; + output [15:0] DRPDO; + output [17:0] CFGVFPOWERSTATE; + output [17:0] CFGVFTPHSTMODE; + output [1:0] CFGDPASUBSTATECHANGE; + output [1:0] CFGFLRINPROCESS; + output [1:0] CFGINTERRUPTMSIENABLE; + output [1:0] CFGINTERRUPTMSIXENABLE; + output [1:0] CFGINTERRUPTMSIXMASK; + output [1:0] CFGLINKPOWERSTATE; + output [1:0] CFGOBFFENABLE; + output [1:0] CFGPHYLINKSTATUS; + output [1:0] CFGRCBSTATUS; + output [1:0] CFGTPHREQUESTERENABLE; + output [1:0] MIREPLAYRAMREADENABLE; + output [1:0] MIREPLAYRAMWRITEENABLE; + output [1:0] PCIERQTAGAV; + output [1:0] PCIETFCNPDAV; + output [1:0] PCIETFCNPHAV; + output [1:0] PIPERX0EQCONTROL; + output [1:0] PIPERX1EQCONTROL; + output [1:0] PIPERX2EQCONTROL; + output [1:0] PIPERX3EQCONTROL; + output [1:0] PIPERX4EQCONTROL; + output [1:0] PIPERX5EQCONTROL; + output [1:0] PIPERX6EQCONTROL; + output [1:0] PIPERX7EQCONTROL; + output [1:0] PIPETX0CHARISK; + output [1:0] PIPETX0EQCONTROL; + output [1:0] PIPETX0POWERDOWN; + output [1:0] PIPETX0SYNCHEADER; + output [1:0] PIPETX1CHARISK; + output [1:0] PIPETX1EQCONTROL; + output [1:0] PIPETX1POWERDOWN; + output [1:0] PIPETX1SYNCHEADER; + output [1:0] PIPETX2CHARISK; + output [1:0] PIPETX2EQCONTROL; + output [1:0] PIPETX2POWERDOWN; + output [1:0] PIPETX2SYNCHEADER; + output [1:0] PIPETX3CHARISK; + output [1:0] PIPETX3EQCONTROL; + output [1:0] PIPETX3POWERDOWN; + output [1:0] PIPETX3SYNCHEADER; + output [1:0] PIPETX4CHARISK; + output [1:0] PIPETX4EQCONTROL; + output [1:0] PIPETX4POWERDOWN; + output [1:0] PIPETX4SYNCHEADER; + output [1:0] PIPETX5CHARISK; + output [1:0] PIPETX5EQCONTROL; + output [1:0] PIPETX5POWERDOWN; + output [1:0] PIPETX5SYNCHEADER; + output [1:0] PIPETX6CHARISK; + output [1:0] PIPETX6EQCONTROL; + output [1:0] PIPETX6POWERDOWN; + output [1:0] PIPETX6SYNCHEADER; + output [1:0] PIPETX7CHARISK; + output [1:0] PIPETX7EQCONTROL; + output [1:0] PIPETX7POWERDOWN; + output [1:0] PIPETX7SYNCHEADER; + output [1:0] PIPETXRATE; + output [1:0] PLEQPHASE; + output [255:0] MAXISCQTDATA; + output [255:0] MAXISRCTDATA; + output [2:0] CFGCURRENTSPEED; + output [2:0] CFGMAXPAYLOAD; + output [2:0] CFGMAXREADREQ; + output [2:0] CFGTPHFUNCTIONNUM; + output [2:0] PIPERX0EQPRESET; + output [2:0] PIPERX1EQPRESET; + output [2:0] PIPERX2EQPRESET; + output [2:0] PIPERX3EQPRESET; + output [2:0] PIPERX4EQPRESET; + output [2:0] PIPERX5EQPRESET; + output [2:0] PIPERX6EQPRESET; + output [2:0] PIPERX7EQPRESET; + output [2:0] PIPETXMARGIN; + output [31:0] CFGEXTWRITEDATA; + output [31:0] CFGINTERRUPTMSIDATA; + output [31:0] CFGMGMTREADDATA; + output [31:0] CFGTPHSTTWRITEDATA; + output [31:0] PIPETX0DATA; + output [31:0] PIPETX1DATA; + output [31:0] PIPETX2DATA; + output [31:0] PIPETX3DATA; + output [31:0] PIPETX4DATA; + output [31:0] PIPETX5DATA; + output [31:0] PIPETX6DATA; + output [31:0] PIPETX7DATA; + output [3:0] CFGEXTWRITEBYTEENABLE; + output [3:0] CFGNEGOTIATEDWIDTH; + output [3:0] CFGTPHSTTWRITEBYTEVALID; + output [3:0] MICOMPLETIONRAMREADENABLEL; + output [3:0] MICOMPLETIONRAMREADENABLEU; + output [3:0] MICOMPLETIONRAMWRITEENABLEL; + output [3:0] MICOMPLETIONRAMWRITEENABLEU; + output [3:0] MIREQUESTRAMREADENABLE; + output [3:0] MIREQUESTRAMWRITEENABLE; + output [3:0] PCIERQSEQNUM; + output [3:0] PIPERX0EQLPTXPRESET; + output [3:0] PIPERX1EQLPTXPRESET; + output [3:0] PIPERX2EQLPTXPRESET; + output [3:0] PIPERX3EQLPTXPRESET; + output [3:0] PIPERX4EQLPTXPRESET; + output [3:0] PIPERX5EQLPTXPRESET; + output [3:0] PIPERX6EQLPTXPRESET; + output [3:0] PIPERX7EQLPTXPRESET; + output [3:0] PIPETX0EQPRESET; + output [3:0] PIPETX1EQPRESET; + output [3:0] PIPETX2EQPRESET; + output [3:0] PIPETX3EQPRESET; + output [3:0] PIPETX4EQPRESET; + output [3:0] PIPETX5EQPRESET; + output [3:0] PIPETX6EQPRESET; + output [3:0] PIPETX7EQPRESET; + output [3:0] SAXISCCTREADY; + output [3:0] SAXISRQTREADY; + output [4:0] CFGMSGRECEIVEDTYPE; + output [4:0] CFGTPHSTTADDRESS; + output [5:0] CFGFUNCTIONPOWERSTATE; + output [5:0] CFGINTERRUPTMSIMMENABLE; + output [5:0] CFGINTERRUPTMSIVFENABLE; + output [5:0] CFGINTERRUPTMSIXVFENABLE; + output [5:0] CFGINTERRUPTMSIXVFMASK; + output [5:0] CFGLTSSMSTATE; + output [5:0] CFGTPHSTMODE; + output [5:0] CFGVFFLRINPROCESS; + output [5:0] CFGVFTPHREQUESTERENABLE; + output [5:0] PCIECQNPREQCOUNT; + output [5:0] PCIERQTAG; + output [5:0] PIPERX0EQLPLFFS; + output [5:0] PIPERX1EQLPLFFS; + output [5:0] PIPERX2EQLPLFFS; + output [5:0] PIPERX3EQLPLFFS; + output [5:0] PIPERX4EQLPLFFS; + output [5:0] PIPERX5EQLPLFFS; + output [5:0] PIPERX6EQLPLFFS; + output [5:0] PIPERX7EQLPLFFS; + output [5:0] PIPETX0EQDEEMPH; + output [5:0] PIPETX1EQDEEMPH; + output [5:0] PIPETX2EQDEEMPH; + output [5:0] PIPETX3EQDEEMPH; + output [5:0] PIPETX4EQDEEMPH; + output [5:0] PIPETX5EQDEEMPH; + output [5:0] PIPETX6EQDEEMPH; + output [5:0] PIPETX7EQDEEMPH; + output [71:0] MICOMPLETIONRAMWRITEDATAL; + output [71:0] MICOMPLETIONRAMWRITEDATAU; + output [74:0] MAXISRCTUSER; + output [7:0] CFGEXTFUNCTIONNUMBER; + output [7:0] CFGFCCPLH; + output [7:0] CFGFCNPH; + output [7:0] CFGFCPH; + output [7:0] CFGFUNCTIONSTATUS; + output [7:0] CFGMSGRECEIVEDDATA; + output [7:0] MAXISCQTKEEP; + output [7:0] MAXISRCTKEEP; + output [7:0] PLGEN3PCSRXSLIDE; + output [84:0] MAXISCQTUSER; + output [8:0] MIREPLAYRAMADDRESS; + output [8:0] MIREQUESTRAMREADADDRESSA; + output [8:0] MIREQUESTRAMREADADDRESSB; + output [8:0] MIREQUESTRAMWRITEADDRESSA; + output [8:0] MIREQUESTRAMWRITEADDRESSB; + output [9:0] CFGEXTREGISTERNUMBER; + output [9:0] MICOMPLETIONRAMREADADDRESSAL; + output [9:0] MICOMPLETIONRAMREADADDRESSAU; + output [9:0] MICOMPLETIONRAMREADADDRESSBL; + output [9:0] MICOMPLETIONRAMREADADDRESSBU; + output [9:0] MICOMPLETIONRAMWRITEADDRESSAL; + output [9:0] MICOMPLETIONRAMWRITEADDRESSAU; + output [9:0] MICOMPLETIONRAMWRITEADDRESSBL; + output [9:0] MICOMPLETIONRAMWRITEADDRESSBU; + input CFGCONFIGSPACEENABLE; + input CFGERRCORIN; + input CFGERRUNCORIN; + input CFGEXTREADDATAVALID; + input CFGHOTRESETIN; + input CFGINPUTUPDATEREQUEST; + input CFGINTERRUPTMSITPHPRESENT; + input CFGINTERRUPTMSIXINT; + input CFGLINKTRAININGENABLE; + input CFGMCUPDATEREQUEST; + input CFGMGMTREAD; + input CFGMGMTTYPE1CFGREGACCESS; + input CFGMGMTWRITE; + input CFGMSGTRANSMIT; + input CFGPERFUNCTIONOUTPUTREQUEST; + input CFGPOWERSTATECHANGEACK; + input CFGREQPMTRANSITIONL23READY; + input CFGTPHSTTREADDATAVALID; + input CORECLK; + input CORECLKMICOMPLETIONRAML; + input CORECLKMICOMPLETIONRAMU; + input CORECLKMIREPLAYRAM; + input CORECLKMIREQUESTRAM; + input DRPCLK; + input DRPEN; + input DRPWE; + input MGMTRESETN; + input MGMTSTICKYRESETN; + input PCIECQNPREQ; + input PIPECLK; + input PIPERESETN; + input PIPERX0DATAVALID; + input PIPERX0ELECIDLE; + input PIPERX0EQDONE; + input PIPERX0EQLPADAPTDONE; + input PIPERX0EQLPLFFSSEL; + input PIPERX0PHYSTATUS; + input PIPERX0STARTBLOCK; + input PIPERX0VALID; + input PIPERX1DATAVALID; + input PIPERX1ELECIDLE; + input PIPERX1EQDONE; + input PIPERX1EQLPADAPTDONE; + input PIPERX1EQLPLFFSSEL; + input PIPERX1PHYSTATUS; + input PIPERX1STARTBLOCK; + input PIPERX1VALID; + input PIPERX2DATAVALID; + input PIPERX2ELECIDLE; + input PIPERX2EQDONE; + input PIPERX2EQLPADAPTDONE; + input PIPERX2EQLPLFFSSEL; + input PIPERX2PHYSTATUS; + input PIPERX2STARTBLOCK; + input PIPERX2VALID; + input PIPERX3DATAVALID; + input PIPERX3ELECIDLE; + input PIPERX3EQDONE; + input PIPERX3EQLPADAPTDONE; + input PIPERX3EQLPLFFSSEL; + input PIPERX3PHYSTATUS; + input PIPERX3STARTBLOCK; + input PIPERX3VALID; + input PIPERX4DATAVALID; + input PIPERX4ELECIDLE; + input PIPERX4EQDONE; + input PIPERX4EQLPADAPTDONE; + input PIPERX4EQLPLFFSSEL; + input PIPERX4PHYSTATUS; + input PIPERX4STARTBLOCK; + input PIPERX4VALID; + input PIPERX5DATAVALID; + input PIPERX5ELECIDLE; + input PIPERX5EQDONE; + input PIPERX5EQLPADAPTDONE; + input PIPERX5EQLPLFFSSEL; + input PIPERX5PHYSTATUS; + input PIPERX5STARTBLOCK; + input PIPERX5VALID; + input PIPERX6DATAVALID; + input PIPERX6ELECIDLE; + input PIPERX6EQDONE; + input PIPERX6EQLPADAPTDONE; + input PIPERX6EQLPLFFSSEL; + input PIPERX6PHYSTATUS; + input PIPERX6STARTBLOCK; + input PIPERX6VALID; + input PIPERX7DATAVALID; + input PIPERX7ELECIDLE; + input PIPERX7EQDONE; + input PIPERX7EQLPADAPTDONE; + input PIPERX7EQLPLFFSSEL; + input PIPERX7PHYSTATUS; + input PIPERX7STARTBLOCK; + input PIPERX7VALID; + input PIPETX0EQDONE; + input PIPETX1EQDONE; + input PIPETX2EQDONE; + input PIPETX3EQDONE; + input PIPETX4EQDONE; + input PIPETX5EQDONE; + input PIPETX6EQDONE; + input PIPETX7EQDONE; + input PLDISABLESCRAMBLER; + input PLEQRESETEIEOSCOUNT; + input PLGEN3PCSDISABLE; + input RECCLK; + input RESETN; + input SAXISCCTLAST; + input SAXISCCTVALID; + input SAXISRQTLAST; + input SAXISRQTVALID; + input USERCLK; + input [10:0] DRPADDR; + input [143:0] MICOMPLETIONRAMREADDATA; + input [143:0] MIREPLAYRAMREADDATA; + input [143:0] MIREQUESTRAMREADDATA; + input [15:0] CFGDEVID; + input [15:0] CFGSUBSYSID; + input [15:0] CFGSUBSYSVENDID; + input [15:0] CFGVENDID; + input [15:0] DRPDI; + input [17:0] PIPERX0EQLPNEWTXCOEFFORPRESET; + input [17:0] PIPERX1EQLPNEWTXCOEFFORPRESET; + input [17:0] PIPERX2EQLPNEWTXCOEFFORPRESET; + input [17:0] PIPERX3EQLPNEWTXCOEFFORPRESET; + input [17:0] PIPERX4EQLPNEWTXCOEFFORPRESET; + input [17:0] PIPERX5EQLPNEWTXCOEFFORPRESET; + input [17:0] PIPERX6EQLPNEWTXCOEFFORPRESET; + input [17:0] PIPERX7EQLPNEWTXCOEFFORPRESET; + input [17:0] PIPETX0EQCOEFF; + input [17:0] PIPETX1EQCOEFF; + input [17:0] PIPETX2EQCOEFF; + input [17:0] PIPETX3EQCOEFF; + input [17:0] PIPETX4EQCOEFF; + input [17:0] PIPETX5EQCOEFF; + input [17:0] PIPETX6EQCOEFF; + input [17:0] PIPETX7EQCOEFF; + input [18:0] CFGMGMTADDR; + input [1:0] CFGFLRDONE; + input [1:0] CFGINTERRUPTMSITPHTYPE; + input [1:0] CFGINTERRUPTPENDING; + input [1:0] PIPERX0CHARISK; + input [1:0] PIPERX0SYNCHEADER; + input [1:0] PIPERX1CHARISK; + input [1:0] PIPERX1SYNCHEADER; + input [1:0] PIPERX2CHARISK; + input [1:0] PIPERX2SYNCHEADER; + input [1:0] PIPERX3CHARISK; + input [1:0] PIPERX3SYNCHEADER; + input [1:0] PIPERX4CHARISK; + input [1:0] PIPERX4SYNCHEADER; + input [1:0] PIPERX5CHARISK; + input [1:0] PIPERX5SYNCHEADER; + input [1:0] PIPERX6CHARISK; + input [1:0] PIPERX6SYNCHEADER; + input [1:0] PIPERX7CHARISK; + input [1:0] PIPERX7SYNCHEADER; + input [21:0] MAXISCQTREADY; + input [21:0] MAXISRCTREADY; + input [255:0] SAXISCCTDATA; + input [255:0] SAXISRQTDATA; + input [2:0] CFGDSFUNCTIONNUMBER; + input [2:0] CFGFCSEL; + input [2:0] CFGINTERRUPTMSIATTR; + input [2:0] CFGINTERRUPTMSIFUNCTIONNUMBER; + input [2:0] CFGMSGTRANSMITTYPE; + input [2:0] CFGPERFUNCSTATUSCONTROL; + input [2:0] CFGPERFUNCTIONNUMBER; + input [2:0] PIPERX0STATUS; + input [2:0] PIPERX1STATUS; + input [2:0] PIPERX2STATUS; + input [2:0] PIPERX3STATUS; + input [2:0] PIPERX4STATUS; + input [2:0] PIPERX5STATUS; + input [2:0] PIPERX6STATUS; + input [2:0] PIPERX7STATUS; + input [31:0] CFGEXTREADDATA; + input [31:0] CFGINTERRUPTMSIINT; + input [31:0] CFGINTERRUPTMSIXDATA; + input [31:0] CFGMGMTWRITEDATA; + input [31:0] CFGMSGTRANSMITDATA; + input [31:0] CFGTPHSTTREADDATA; + input [31:0] PIPERX0DATA; + input [31:0] PIPERX1DATA; + input [31:0] PIPERX2DATA; + input [31:0] PIPERX3DATA; + input [31:0] PIPERX4DATA; + input [31:0] PIPERX5DATA; + input [31:0] PIPERX6DATA; + input [31:0] PIPERX7DATA; + input [32:0] SAXISCCTUSER; + input [3:0] CFGINTERRUPTINT; + input [3:0] CFGINTERRUPTMSISELECT; + input [3:0] CFGMGMTBYTEENABLE; + input [4:0] CFGDSDEVICENUMBER; + input [59:0] SAXISRQTUSER; + input [5:0] CFGVFFLRDONE; + input [5:0] PIPEEQFS; + input [5:0] PIPEEQLF; + input [63:0] CFGDSN; + input [63:0] CFGINTERRUPTMSIPENDINGSTATUS; + input [63:0] CFGINTERRUPTMSIXADDRESS; + input [7:0] CFGDSBUSNUMBER; + input [7:0] CFGDSPORTNUMBER; + input [7:0] CFGREVID; + input [7:0] PLGEN3PCSRXSYNCDONE; + input [7:0] SAXISCCTKEEP; + input [7:0] SAXISRQTKEEP; + input [8:0] CFGINTERRUPTMSITPHSTTAG; +endmodule + +module PCIE_3_1 (...); + parameter ARI_CAP_ENABLE = "FALSE"; + parameter AXISTEN_IF_CC_ALIGNMENT_MODE = "FALSE"; + parameter AXISTEN_IF_CC_PARITY_CHK = "TRUE"; + parameter AXISTEN_IF_CQ_ALIGNMENT_MODE = "FALSE"; + parameter AXISTEN_IF_ENABLE_CLIENT_TAG = "FALSE"; + parameter [17:0] AXISTEN_IF_ENABLE_MSG_ROUTE = 18'h00000; + parameter AXISTEN_IF_ENABLE_RX_MSG_INTFC = "FALSE"; + parameter AXISTEN_IF_RC_ALIGNMENT_MODE = "FALSE"; + parameter AXISTEN_IF_RC_STRADDLE = "FALSE"; + parameter AXISTEN_IF_RQ_ALIGNMENT_MODE = "FALSE"; + parameter AXISTEN_IF_RQ_PARITY_CHK = "TRUE"; + parameter [1:0] AXISTEN_IF_WIDTH = 2'h2; + parameter CRM_CORE_CLK_FREQ_500 = "TRUE"; + parameter [1:0] CRM_USER_CLK_FREQ = 2'h2; + parameter DEBUG_CFG_LOCAL_MGMT_REG_ACCESS_OVERRIDE = "FALSE"; + parameter DEBUG_PL_DISABLE_EI_INFER_IN_L0 = "FALSE"; + parameter DEBUG_TL_DISABLE_RX_TLP_ORDER_CHECKS = "FALSE"; + parameter [7:0] DNSTREAM_LINK_NUM = 8'h00; + parameter [8:0] LL_ACK_TIMEOUT = 9'h000; + parameter LL_ACK_TIMEOUT_EN = "FALSE"; + parameter integer LL_ACK_TIMEOUT_FUNC = 0; + parameter [15:0] LL_CPL_FC_UPDATE_TIMER = 16'h0000; + parameter LL_CPL_FC_UPDATE_TIMER_OVERRIDE = "FALSE"; + parameter [15:0] LL_FC_UPDATE_TIMER = 16'h0000; + parameter LL_FC_UPDATE_TIMER_OVERRIDE = "FALSE"; + parameter [15:0] LL_NP_FC_UPDATE_TIMER = 16'h0000; + parameter LL_NP_FC_UPDATE_TIMER_OVERRIDE = "FALSE"; + parameter [15:0] LL_P_FC_UPDATE_TIMER = 16'h0000; + parameter LL_P_FC_UPDATE_TIMER_OVERRIDE = "FALSE"; + parameter [8:0] LL_REPLAY_TIMEOUT = 9'h000; + parameter LL_REPLAY_TIMEOUT_EN = "FALSE"; + parameter integer LL_REPLAY_TIMEOUT_FUNC = 0; + parameter [9:0] LTR_TX_MESSAGE_MINIMUM_INTERVAL = 10'h0FA; + parameter LTR_TX_MESSAGE_ON_FUNC_POWER_STATE_CHANGE = "FALSE"; + parameter LTR_TX_MESSAGE_ON_LTR_ENABLE = "FALSE"; + parameter [11:0] MCAP_CAP_NEXTPTR = 12'h000; + parameter MCAP_CONFIGURE_OVERRIDE = "FALSE"; + parameter MCAP_ENABLE = "FALSE"; + parameter MCAP_EOS_DESIGN_SWITCH = "FALSE"; + parameter [31:0] MCAP_FPGA_BITSTREAM_VERSION = 32'h00000000; + parameter MCAP_GATE_IO_ENABLE_DESIGN_SWITCH = "FALSE"; + parameter MCAP_GATE_MEM_ENABLE_DESIGN_SWITCH = "FALSE"; + parameter MCAP_INPUT_GATE_DESIGN_SWITCH = "FALSE"; + parameter MCAP_INTERRUPT_ON_MCAP_EOS = "FALSE"; + parameter MCAP_INTERRUPT_ON_MCAP_ERROR = "FALSE"; + parameter [15:0] MCAP_VSEC_ID = 16'h0000; + parameter [11:0] MCAP_VSEC_LEN = 12'h02C; + parameter [3:0] MCAP_VSEC_REV = 4'h0; + parameter PF0_AER_CAP_ECRC_CHECK_CAPABLE = "FALSE"; + parameter PF0_AER_CAP_ECRC_GEN_CAPABLE = "FALSE"; + parameter [11:0] PF0_AER_CAP_NEXTPTR = 12'h000; + parameter [11:0] PF0_ARI_CAP_NEXTPTR = 12'h000; + parameter [7:0] PF0_ARI_CAP_NEXT_FUNC = 8'h00; + parameter [3:0] PF0_ARI_CAP_VER = 4'h1; + parameter [5:0] PF0_BAR0_APERTURE_SIZE = 6'h03; + parameter [2:0] PF0_BAR0_CONTROL = 3'h4; + parameter [5:0] PF0_BAR1_APERTURE_SIZE = 6'h00; + parameter [2:0] PF0_BAR1_CONTROL = 3'h0; + parameter [4:0] PF0_BAR2_APERTURE_SIZE = 5'h03; + parameter [2:0] PF0_BAR2_CONTROL = 3'h4; + parameter [4:0] PF0_BAR3_APERTURE_SIZE = 5'h03; + parameter [2:0] PF0_BAR3_CONTROL = 3'h0; + parameter [4:0] PF0_BAR4_APERTURE_SIZE = 5'h03; + parameter [2:0] PF0_BAR4_CONTROL = 3'h4; + parameter [4:0] PF0_BAR5_APERTURE_SIZE = 5'h03; + parameter [2:0] PF0_BAR5_CONTROL = 3'h0; + parameter [7:0] PF0_BIST_REGISTER = 8'h00; + parameter [7:0] PF0_CAPABILITY_POINTER = 8'h50; + parameter [23:0] PF0_CLASS_CODE = 24'h000000; + parameter [15:0] PF0_DEVICE_ID = 16'h0000; + parameter PF0_DEV_CAP2_128B_CAS_ATOMIC_COMPLETER_SUPPORT = "TRUE"; + parameter PF0_DEV_CAP2_32B_ATOMIC_COMPLETER_SUPPORT = "TRUE"; + parameter PF0_DEV_CAP2_64B_ATOMIC_COMPLETER_SUPPORT = "TRUE"; + parameter PF0_DEV_CAP2_ARI_FORWARD_ENABLE = "FALSE"; + parameter PF0_DEV_CAP2_CPL_TIMEOUT_DISABLE = "TRUE"; + parameter PF0_DEV_CAP2_LTR_SUPPORT = "TRUE"; + parameter [1:0] PF0_DEV_CAP2_OBFF_SUPPORT = 2'h0; + parameter PF0_DEV_CAP2_TPH_COMPLETER_SUPPORT = "FALSE"; + parameter integer PF0_DEV_CAP_ENDPOINT_L0S_LATENCY = 0; + parameter integer PF0_DEV_CAP_ENDPOINT_L1_LATENCY = 0; + parameter PF0_DEV_CAP_EXT_TAG_SUPPORTED = "TRUE"; + parameter PF0_DEV_CAP_FUNCTION_LEVEL_RESET_CAPABLE = "TRUE"; + parameter [2:0] PF0_DEV_CAP_MAX_PAYLOAD_SIZE = 3'h3; + parameter [11:0] PF0_DPA_CAP_NEXTPTR = 12'h000; + parameter [4:0] PF0_DPA_CAP_SUB_STATE_CONTROL = 5'h00; + parameter PF0_DPA_CAP_SUB_STATE_CONTROL_EN = "TRUE"; + parameter [7:0] PF0_DPA_CAP_SUB_STATE_POWER_ALLOCATION0 = 8'h00; + parameter [7:0] PF0_DPA_CAP_SUB_STATE_POWER_ALLOCATION1 = 8'h00; + parameter [7:0] PF0_DPA_CAP_SUB_STATE_POWER_ALLOCATION2 = 8'h00; + parameter [7:0] PF0_DPA_CAP_SUB_STATE_POWER_ALLOCATION3 = 8'h00; + parameter [7:0] PF0_DPA_CAP_SUB_STATE_POWER_ALLOCATION4 = 8'h00; + parameter [7:0] PF0_DPA_CAP_SUB_STATE_POWER_ALLOCATION5 = 8'h00; + parameter [7:0] PF0_DPA_CAP_SUB_STATE_POWER_ALLOCATION6 = 8'h00; + parameter [7:0] PF0_DPA_CAP_SUB_STATE_POWER_ALLOCATION7 = 8'h00; + parameter [3:0] PF0_DPA_CAP_VER = 4'h1; + parameter [11:0] PF0_DSN_CAP_NEXTPTR = 12'h10C; + parameter [4:0] PF0_EXPANSION_ROM_APERTURE_SIZE = 5'h03; + parameter PF0_EXPANSION_ROM_ENABLE = "FALSE"; + parameter [7:0] PF0_INTERRUPT_LINE = 8'h00; + parameter [2:0] PF0_INTERRUPT_PIN = 3'h1; + parameter integer PF0_LINK_CAP_ASPM_SUPPORT = 0; + parameter integer PF0_LINK_CAP_L0S_EXIT_LATENCY_COMCLK_GEN1 = 7; + parameter integer PF0_LINK_CAP_L0S_EXIT_LATENCY_COMCLK_GEN2 = 7; + parameter integer PF0_LINK_CAP_L0S_EXIT_LATENCY_COMCLK_GEN3 = 7; + parameter integer PF0_LINK_CAP_L0S_EXIT_LATENCY_GEN1 = 7; + parameter integer PF0_LINK_CAP_L0S_EXIT_LATENCY_GEN2 = 7; + parameter integer PF0_LINK_CAP_L0S_EXIT_LATENCY_GEN3 = 7; + parameter integer PF0_LINK_CAP_L1_EXIT_LATENCY_COMCLK_GEN1 = 7; + parameter integer PF0_LINK_CAP_L1_EXIT_LATENCY_COMCLK_GEN2 = 7; + parameter integer PF0_LINK_CAP_L1_EXIT_LATENCY_COMCLK_GEN3 = 7; + parameter integer PF0_LINK_CAP_L1_EXIT_LATENCY_GEN1 = 7; + parameter integer PF0_LINK_CAP_L1_EXIT_LATENCY_GEN2 = 7; + parameter integer PF0_LINK_CAP_L1_EXIT_LATENCY_GEN3 = 7; + parameter PF0_LINK_STATUS_SLOT_CLOCK_CONFIG = "TRUE"; + parameter [9:0] PF0_LTR_CAP_MAX_NOSNOOP_LAT = 10'h000; + parameter [9:0] PF0_LTR_CAP_MAX_SNOOP_LAT = 10'h000; + parameter [11:0] PF0_LTR_CAP_NEXTPTR = 12'h000; + parameter [3:0] PF0_LTR_CAP_VER = 4'h1; + parameter [7:0] PF0_MSIX_CAP_NEXTPTR = 8'h00; + parameter integer PF0_MSIX_CAP_PBA_BIR = 0; + parameter [28:0] PF0_MSIX_CAP_PBA_OFFSET = 29'h00000050; + parameter integer PF0_MSIX_CAP_TABLE_BIR = 0; + parameter [28:0] PF0_MSIX_CAP_TABLE_OFFSET = 29'h00000040; + parameter [10:0] PF0_MSIX_CAP_TABLE_SIZE = 11'h000; + parameter integer PF0_MSI_CAP_MULTIMSGCAP = 0; + parameter [7:0] PF0_MSI_CAP_NEXTPTR = 8'h00; + parameter PF0_MSI_CAP_PERVECMASKCAP = "FALSE"; + parameter [31:0] PF0_PB_CAP_DATA_REG_D0 = 32'h00000000; + parameter [31:0] PF0_PB_CAP_DATA_REG_D0_SUSTAINED = 32'h00000000; + parameter [31:0] PF0_PB_CAP_DATA_REG_D1 = 32'h00000000; + parameter [31:0] PF0_PB_CAP_DATA_REG_D3HOT = 32'h00000000; + parameter [11:0] PF0_PB_CAP_NEXTPTR = 12'h000; + parameter PF0_PB_CAP_SYSTEM_ALLOCATED = "FALSE"; + parameter [3:0] PF0_PB_CAP_VER = 4'h1; + parameter [7:0] PF0_PM_CAP_ID = 8'h01; + parameter [7:0] PF0_PM_CAP_NEXTPTR = 8'h00; + parameter PF0_PM_CAP_PMESUPPORT_D0 = "TRUE"; + parameter PF0_PM_CAP_PMESUPPORT_D1 = "TRUE"; + parameter PF0_PM_CAP_PMESUPPORT_D3HOT = "TRUE"; + parameter PF0_PM_CAP_SUPP_D1_STATE = "TRUE"; + parameter [2:0] PF0_PM_CAP_VER_ID = 3'h3; + parameter PF0_PM_CSR_NOSOFTRESET = "TRUE"; + parameter PF0_RBAR_CAP_ENABLE = "FALSE"; + parameter [11:0] PF0_RBAR_CAP_NEXTPTR = 12'h000; + parameter [19:0] PF0_RBAR_CAP_SIZE0 = 20'h00000; + parameter [19:0] PF0_RBAR_CAP_SIZE1 = 20'h00000; + parameter [19:0] PF0_RBAR_CAP_SIZE2 = 20'h00000; + parameter [3:0] PF0_RBAR_CAP_VER = 4'h1; + parameter [2:0] PF0_RBAR_CONTROL_INDEX0 = 3'h0; + parameter [2:0] PF0_RBAR_CONTROL_INDEX1 = 3'h0; + parameter [2:0] PF0_RBAR_CONTROL_INDEX2 = 3'h0; + parameter [4:0] PF0_RBAR_CONTROL_SIZE0 = 5'h00; + parameter [4:0] PF0_RBAR_CONTROL_SIZE1 = 5'h00; + parameter [4:0] PF0_RBAR_CONTROL_SIZE2 = 5'h00; + parameter [2:0] PF0_RBAR_NUM = 3'h1; + parameter [7:0] PF0_REVISION_ID = 8'h00; + parameter [11:0] PF0_SECONDARY_PCIE_CAP_NEXTPTR = 12'h000; + parameter [4:0] PF0_SRIOV_BAR0_APERTURE_SIZE = 5'h03; + parameter [2:0] PF0_SRIOV_BAR0_CONTROL = 3'h4; + parameter [4:0] PF0_SRIOV_BAR1_APERTURE_SIZE = 5'h00; + parameter [2:0] PF0_SRIOV_BAR1_CONTROL = 3'h0; + parameter [4:0] PF0_SRIOV_BAR2_APERTURE_SIZE = 5'h03; + parameter [2:0] PF0_SRIOV_BAR2_CONTROL = 3'h4; + parameter [4:0] PF0_SRIOV_BAR3_APERTURE_SIZE = 5'h03; + parameter [2:0] PF0_SRIOV_BAR3_CONTROL = 3'h0; + parameter [4:0] PF0_SRIOV_BAR4_APERTURE_SIZE = 5'h03; + parameter [2:0] PF0_SRIOV_BAR4_CONTROL = 3'h4; + parameter [4:0] PF0_SRIOV_BAR5_APERTURE_SIZE = 5'h03; + parameter [2:0] PF0_SRIOV_BAR5_CONTROL = 3'h0; + parameter [15:0] PF0_SRIOV_CAP_INITIAL_VF = 16'h0000; + parameter [11:0] PF0_SRIOV_CAP_NEXTPTR = 12'h000; + parameter [15:0] PF0_SRIOV_CAP_TOTAL_VF = 16'h0000; + parameter [3:0] PF0_SRIOV_CAP_VER = 4'h1; + parameter [15:0] PF0_SRIOV_FIRST_VF_OFFSET = 16'h0000; + parameter [15:0] PF0_SRIOV_FUNC_DEP_LINK = 16'h0000; + parameter [31:0] PF0_SRIOV_SUPPORTED_PAGE_SIZE = 32'h00000000; + parameter [15:0] PF0_SRIOV_VF_DEVICE_ID = 16'h0000; + parameter [15:0] PF0_SUBSYSTEM_ID = 16'h0000; + parameter PF0_TPHR_CAP_DEV_SPECIFIC_MODE = "TRUE"; + parameter PF0_TPHR_CAP_ENABLE = "FALSE"; + parameter PF0_TPHR_CAP_INT_VEC_MODE = "TRUE"; + parameter [11:0] PF0_TPHR_CAP_NEXTPTR = 12'h000; + parameter [2:0] PF0_TPHR_CAP_ST_MODE_SEL = 3'h0; + parameter [1:0] PF0_TPHR_CAP_ST_TABLE_LOC = 2'h0; + parameter [10:0] PF0_TPHR_CAP_ST_TABLE_SIZE = 11'h000; + parameter [3:0] PF0_TPHR_CAP_VER = 4'h1; + parameter PF0_VC_CAP_ENABLE = "FALSE"; + parameter [11:0] PF0_VC_CAP_NEXTPTR = 12'h000; + parameter [3:0] PF0_VC_CAP_VER = 4'h1; + parameter PF1_AER_CAP_ECRC_CHECK_CAPABLE = "FALSE"; + parameter PF1_AER_CAP_ECRC_GEN_CAPABLE = "FALSE"; + parameter [11:0] PF1_AER_CAP_NEXTPTR = 12'h000; + parameter [11:0] PF1_ARI_CAP_NEXTPTR = 12'h000; + parameter [7:0] PF1_ARI_CAP_NEXT_FUNC = 8'h00; + parameter [5:0] PF1_BAR0_APERTURE_SIZE = 6'h03; + parameter [2:0] PF1_BAR0_CONTROL = 3'h4; + parameter [5:0] PF1_BAR1_APERTURE_SIZE = 6'h00; + parameter [2:0] PF1_BAR1_CONTROL = 3'h0; + parameter [4:0] PF1_BAR2_APERTURE_SIZE = 5'h03; + parameter [2:0] PF1_BAR2_CONTROL = 3'h4; + parameter [4:0] PF1_BAR3_APERTURE_SIZE = 5'h03; + parameter [2:0] PF1_BAR3_CONTROL = 3'h0; + parameter [4:0] PF1_BAR4_APERTURE_SIZE = 5'h03; + parameter [2:0] PF1_BAR4_CONTROL = 3'h4; + parameter [4:0] PF1_BAR5_APERTURE_SIZE = 5'h03; + parameter [2:0] PF1_BAR5_CONTROL = 3'h0; + parameter [7:0] PF1_BIST_REGISTER = 8'h00; + parameter [7:0] PF1_CAPABILITY_POINTER = 8'h50; + parameter [23:0] PF1_CLASS_CODE = 24'h000000; + parameter [15:0] PF1_DEVICE_ID = 16'h0000; + parameter [2:0] PF1_DEV_CAP_MAX_PAYLOAD_SIZE = 3'h3; + parameter [11:0] PF1_DPA_CAP_NEXTPTR = 12'h000; + parameter [4:0] PF1_DPA_CAP_SUB_STATE_CONTROL = 5'h00; + parameter PF1_DPA_CAP_SUB_STATE_CONTROL_EN = "TRUE"; + parameter [7:0] PF1_DPA_CAP_SUB_STATE_POWER_ALLOCATION0 = 8'h00; + parameter [7:0] PF1_DPA_CAP_SUB_STATE_POWER_ALLOCATION1 = 8'h00; + parameter [7:0] PF1_DPA_CAP_SUB_STATE_POWER_ALLOCATION2 = 8'h00; + parameter [7:0] PF1_DPA_CAP_SUB_STATE_POWER_ALLOCATION3 = 8'h00; + parameter [7:0] PF1_DPA_CAP_SUB_STATE_POWER_ALLOCATION4 = 8'h00; + parameter [7:0] PF1_DPA_CAP_SUB_STATE_POWER_ALLOCATION5 = 8'h00; + parameter [7:0] PF1_DPA_CAP_SUB_STATE_POWER_ALLOCATION6 = 8'h00; + parameter [7:0] PF1_DPA_CAP_SUB_STATE_POWER_ALLOCATION7 = 8'h00; + parameter [3:0] PF1_DPA_CAP_VER = 4'h1; + parameter [11:0] PF1_DSN_CAP_NEXTPTR = 12'h10C; + parameter [4:0] PF1_EXPANSION_ROM_APERTURE_SIZE = 5'h03; + parameter PF1_EXPANSION_ROM_ENABLE = "FALSE"; + parameter [7:0] PF1_INTERRUPT_LINE = 8'h00; + parameter [2:0] PF1_INTERRUPT_PIN = 3'h1; + parameter [7:0] PF1_MSIX_CAP_NEXTPTR = 8'h00; + parameter integer PF1_MSIX_CAP_PBA_BIR = 0; + parameter [28:0] PF1_MSIX_CAP_PBA_OFFSET = 29'h00000050; + parameter integer PF1_MSIX_CAP_TABLE_BIR = 0; + parameter [28:0] PF1_MSIX_CAP_TABLE_OFFSET = 29'h00000040; + parameter [10:0] PF1_MSIX_CAP_TABLE_SIZE = 11'h000; + parameter integer PF1_MSI_CAP_MULTIMSGCAP = 0; + parameter [7:0] PF1_MSI_CAP_NEXTPTR = 8'h00; + parameter PF1_MSI_CAP_PERVECMASKCAP = "FALSE"; + parameter [31:0] PF1_PB_CAP_DATA_REG_D0 = 32'h00000000; + parameter [31:0] PF1_PB_CAP_DATA_REG_D0_SUSTAINED = 32'h00000000; + parameter [31:0] PF1_PB_CAP_DATA_REG_D1 = 32'h00000000; + parameter [31:0] PF1_PB_CAP_DATA_REG_D3HOT = 32'h00000000; + parameter [11:0] PF1_PB_CAP_NEXTPTR = 12'h000; + parameter PF1_PB_CAP_SYSTEM_ALLOCATED = "FALSE"; + parameter [3:0] PF1_PB_CAP_VER = 4'h1; + parameter [7:0] PF1_PM_CAP_ID = 8'h01; + parameter [7:0] PF1_PM_CAP_NEXTPTR = 8'h00; + parameter [2:0] PF1_PM_CAP_VER_ID = 3'h3; + parameter PF1_RBAR_CAP_ENABLE = "FALSE"; + parameter [11:0] PF1_RBAR_CAP_NEXTPTR = 12'h000; + parameter [19:0] PF1_RBAR_CAP_SIZE0 = 20'h00000; + parameter [19:0] PF1_RBAR_CAP_SIZE1 = 20'h00000; + parameter [19:0] PF1_RBAR_CAP_SIZE2 = 20'h00000; + parameter [3:0] PF1_RBAR_CAP_VER = 4'h1; + parameter [2:0] PF1_RBAR_CONTROL_INDEX0 = 3'h0; + parameter [2:0] PF1_RBAR_CONTROL_INDEX1 = 3'h0; + parameter [2:0] PF1_RBAR_CONTROL_INDEX2 = 3'h0; + parameter [4:0] PF1_RBAR_CONTROL_SIZE0 = 5'h00; + parameter [4:0] PF1_RBAR_CONTROL_SIZE1 = 5'h00; + parameter [4:0] PF1_RBAR_CONTROL_SIZE2 = 5'h00; + parameter [2:0] PF1_RBAR_NUM = 3'h1; + parameter [7:0] PF1_REVISION_ID = 8'h00; + parameter [4:0] PF1_SRIOV_BAR0_APERTURE_SIZE = 5'h03; + parameter [2:0] PF1_SRIOV_BAR0_CONTROL = 3'h4; + parameter [4:0] PF1_SRIOV_BAR1_APERTURE_SIZE = 5'h00; + parameter [2:0] PF1_SRIOV_BAR1_CONTROL = 3'h0; + parameter [4:0] PF1_SRIOV_BAR2_APERTURE_SIZE = 5'h03; + parameter [2:0] PF1_SRIOV_BAR2_CONTROL = 3'h4; + parameter [4:0] PF1_SRIOV_BAR3_APERTURE_SIZE = 5'h03; + parameter [2:0] PF1_SRIOV_BAR3_CONTROL = 3'h0; + parameter [4:0] PF1_SRIOV_BAR4_APERTURE_SIZE = 5'h03; + parameter [2:0] PF1_SRIOV_BAR4_CONTROL = 3'h4; + parameter [4:0] PF1_SRIOV_BAR5_APERTURE_SIZE = 5'h03; + parameter [2:0] PF1_SRIOV_BAR5_CONTROL = 3'h0; + parameter [15:0] PF1_SRIOV_CAP_INITIAL_VF = 16'h0000; + parameter [11:0] PF1_SRIOV_CAP_NEXTPTR = 12'h000; + parameter [15:0] PF1_SRIOV_CAP_TOTAL_VF = 16'h0000; + parameter [3:0] PF1_SRIOV_CAP_VER = 4'h1; + parameter [15:0] PF1_SRIOV_FIRST_VF_OFFSET = 16'h0000; + parameter [15:0] PF1_SRIOV_FUNC_DEP_LINK = 16'h0000; + parameter [31:0] PF1_SRIOV_SUPPORTED_PAGE_SIZE = 32'h00000000; + parameter [15:0] PF1_SRIOV_VF_DEVICE_ID = 16'h0000; + parameter [15:0] PF1_SUBSYSTEM_ID = 16'h0000; + parameter PF1_TPHR_CAP_DEV_SPECIFIC_MODE = "TRUE"; + parameter PF1_TPHR_CAP_ENABLE = "FALSE"; + parameter PF1_TPHR_CAP_INT_VEC_MODE = "TRUE"; + parameter [11:0] PF1_TPHR_CAP_NEXTPTR = 12'h000; + parameter [2:0] PF1_TPHR_CAP_ST_MODE_SEL = 3'h0; + parameter [1:0] PF1_TPHR_CAP_ST_TABLE_LOC = 2'h0; + parameter [10:0] PF1_TPHR_CAP_ST_TABLE_SIZE = 11'h000; + parameter [3:0] PF1_TPHR_CAP_VER = 4'h1; + parameter PF2_AER_CAP_ECRC_CHECK_CAPABLE = "FALSE"; + parameter PF2_AER_CAP_ECRC_GEN_CAPABLE = "FALSE"; + parameter [11:0] PF2_AER_CAP_NEXTPTR = 12'h000; + parameter [11:0] PF2_ARI_CAP_NEXTPTR = 12'h000; + parameter [7:0] PF2_ARI_CAP_NEXT_FUNC = 8'h00; + parameter [5:0] PF2_BAR0_APERTURE_SIZE = 6'h03; + parameter [2:0] PF2_BAR0_CONTROL = 3'h4; + parameter [5:0] PF2_BAR1_APERTURE_SIZE = 6'h00; + parameter [2:0] PF2_BAR1_CONTROL = 3'h0; + parameter [4:0] PF2_BAR2_APERTURE_SIZE = 5'h03; + parameter [2:0] PF2_BAR2_CONTROL = 3'h4; + parameter [4:0] PF2_BAR3_APERTURE_SIZE = 5'h03; + parameter [2:0] PF2_BAR3_CONTROL = 3'h0; + parameter [4:0] PF2_BAR4_APERTURE_SIZE = 5'h03; + parameter [2:0] PF2_BAR4_CONTROL = 3'h4; + parameter [4:0] PF2_BAR5_APERTURE_SIZE = 5'h03; + parameter [2:0] PF2_BAR5_CONTROL = 3'h0; + parameter [7:0] PF2_BIST_REGISTER = 8'h00; + parameter [7:0] PF2_CAPABILITY_POINTER = 8'h50; + parameter [23:0] PF2_CLASS_CODE = 24'h000000; + parameter [15:0] PF2_DEVICE_ID = 16'h0000; + parameter [2:0] PF2_DEV_CAP_MAX_PAYLOAD_SIZE = 3'h3; + parameter [11:0] PF2_DPA_CAP_NEXTPTR = 12'h000; + parameter [4:0] PF2_DPA_CAP_SUB_STATE_CONTROL = 5'h00; + parameter PF2_DPA_CAP_SUB_STATE_CONTROL_EN = "TRUE"; + parameter [7:0] PF2_DPA_CAP_SUB_STATE_POWER_ALLOCATION0 = 8'h00; + parameter [7:0] PF2_DPA_CAP_SUB_STATE_POWER_ALLOCATION1 = 8'h00; + parameter [7:0] PF2_DPA_CAP_SUB_STATE_POWER_ALLOCATION2 = 8'h00; + parameter [7:0] PF2_DPA_CAP_SUB_STATE_POWER_ALLOCATION3 = 8'h00; + parameter [7:0] PF2_DPA_CAP_SUB_STATE_POWER_ALLOCATION4 = 8'h00; + parameter [7:0] PF2_DPA_CAP_SUB_STATE_POWER_ALLOCATION5 = 8'h00; + parameter [7:0] PF2_DPA_CAP_SUB_STATE_POWER_ALLOCATION6 = 8'h00; + parameter [7:0] PF2_DPA_CAP_SUB_STATE_POWER_ALLOCATION7 = 8'h00; + parameter [3:0] PF2_DPA_CAP_VER = 4'h1; + parameter [11:0] PF2_DSN_CAP_NEXTPTR = 12'h10C; + parameter [4:0] PF2_EXPANSION_ROM_APERTURE_SIZE = 5'h03; + parameter PF2_EXPANSION_ROM_ENABLE = "FALSE"; + parameter [7:0] PF2_INTERRUPT_LINE = 8'h00; + parameter [2:0] PF2_INTERRUPT_PIN = 3'h1; + parameter [7:0] PF2_MSIX_CAP_NEXTPTR = 8'h00; + parameter integer PF2_MSIX_CAP_PBA_BIR = 0; + parameter [28:0] PF2_MSIX_CAP_PBA_OFFSET = 29'h00000050; + parameter integer PF2_MSIX_CAP_TABLE_BIR = 0; + parameter [28:0] PF2_MSIX_CAP_TABLE_OFFSET = 29'h00000040; + parameter [10:0] PF2_MSIX_CAP_TABLE_SIZE = 11'h000; + parameter integer PF2_MSI_CAP_MULTIMSGCAP = 0; + parameter [7:0] PF2_MSI_CAP_NEXTPTR = 8'h00; + parameter PF2_MSI_CAP_PERVECMASKCAP = "FALSE"; + parameter [31:0] PF2_PB_CAP_DATA_REG_D0 = 32'h00000000; + parameter [31:0] PF2_PB_CAP_DATA_REG_D0_SUSTAINED = 32'h00000000; + parameter [31:0] PF2_PB_CAP_DATA_REG_D1 = 32'h00000000; + parameter [31:0] PF2_PB_CAP_DATA_REG_D3HOT = 32'h00000000; + parameter [11:0] PF2_PB_CAP_NEXTPTR = 12'h000; + parameter PF2_PB_CAP_SYSTEM_ALLOCATED = "FALSE"; + parameter [3:0] PF2_PB_CAP_VER = 4'h1; + parameter [7:0] PF2_PM_CAP_ID = 8'h01; + parameter [7:0] PF2_PM_CAP_NEXTPTR = 8'h00; + parameter [2:0] PF2_PM_CAP_VER_ID = 3'h3; + parameter PF2_RBAR_CAP_ENABLE = "FALSE"; + parameter [11:0] PF2_RBAR_CAP_NEXTPTR = 12'h000; + parameter [19:0] PF2_RBAR_CAP_SIZE0 = 20'h00000; + parameter [19:0] PF2_RBAR_CAP_SIZE1 = 20'h00000; + parameter [19:0] PF2_RBAR_CAP_SIZE2 = 20'h00000; + parameter [3:0] PF2_RBAR_CAP_VER = 4'h1; + parameter [2:0] PF2_RBAR_CONTROL_INDEX0 = 3'h0; + parameter [2:0] PF2_RBAR_CONTROL_INDEX1 = 3'h0; + parameter [2:0] PF2_RBAR_CONTROL_INDEX2 = 3'h0; + parameter [4:0] PF2_RBAR_CONTROL_SIZE0 = 5'h00; + parameter [4:0] PF2_RBAR_CONTROL_SIZE1 = 5'h00; + parameter [4:0] PF2_RBAR_CONTROL_SIZE2 = 5'h00; + parameter [2:0] PF2_RBAR_NUM = 3'h1; + parameter [7:0] PF2_REVISION_ID = 8'h00; + parameter [4:0] PF2_SRIOV_BAR0_APERTURE_SIZE = 5'h03; + parameter [2:0] PF2_SRIOV_BAR0_CONTROL = 3'h4; + parameter [4:0] PF2_SRIOV_BAR1_APERTURE_SIZE = 5'h00; + parameter [2:0] PF2_SRIOV_BAR1_CONTROL = 3'h0; + parameter [4:0] PF2_SRIOV_BAR2_APERTURE_SIZE = 5'h03; + parameter [2:0] PF2_SRIOV_BAR2_CONTROL = 3'h4; + parameter [4:0] PF2_SRIOV_BAR3_APERTURE_SIZE = 5'h03; + parameter [2:0] PF2_SRIOV_BAR3_CONTROL = 3'h0; + parameter [4:0] PF2_SRIOV_BAR4_APERTURE_SIZE = 5'h03; + parameter [2:0] PF2_SRIOV_BAR4_CONTROL = 3'h4; + parameter [4:0] PF2_SRIOV_BAR5_APERTURE_SIZE = 5'h03; + parameter [2:0] PF2_SRIOV_BAR5_CONTROL = 3'h0; + parameter [15:0] PF2_SRIOV_CAP_INITIAL_VF = 16'h0000; + parameter [11:0] PF2_SRIOV_CAP_NEXTPTR = 12'h000; + parameter [15:0] PF2_SRIOV_CAP_TOTAL_VF = 16'h0000; + parameter [3:0] PF2_SRIOV_CAP_VER = 4'h1; + parameter [15:0] PF2_SRIOV_FIRST_VF_OFFSET = 16'h0000; + parameter [15:0] PF2_SRIOV_FUNC_DEP_LINK = 16'h0000; + parameter [31:0] PF2_SRIOV_SUPPORTED_PAGE_SIZE = 32'h00000000; + parameter [15:0] PF2_SRIOV_VF_DEVICE_ID = 16'h0000; + parameter [15:0] PF2_SUBSYSTEM_ID = 16'h0000; + parameter PF2_TPHR_CAP_DEV_SPECIFIC_MODE = "TRUE"; + parameter PF2_TPHR_CAP_ENABLE = "FALSE"; + parameter PF2_TPHR_CAP_INT_VEC_MODE = "TRUE"; + parameter [11:0] PF2_TPHR_CAP_NEXTPTR = 12'h000; + parameter [2:0] PF2_TPHR_CAP_ST_MODE_SEL = 3'h0; + parameter [1:0] PF2_TPHR_CAP_ST_TABLE_LOC = 2'h0; + parameter [10:0] PF2_TPHR_CAP_ST_TABLE_SIZE = 11'h000; + parameter [3:0] PF2_TPHR_CAP_VER = 4'h1; + parameter PF3_AER_CAP_ECRC_CHECK_CAPABLE = "FALSE"; + parameter PF3_AER_CAP_ECRC_GEN_CAPABLE = "FALSE"; + parameter [11:0] PF3_AER_CAP_NEXTPTR = 12'h000; + parameter [11:0] PF3_ARI_CAP_NEXTPTR = 12'h000; + parameter [7:0] PF3_ARI_CAP_NEXT_FUNC = 8'h00; + parameter [5:0] PF3_BAR0_APERTURE_SIZE = 6'h03; + parameter [2:0] PF3_BAR0_CONTROL = 3'h4; + parameter [5:0] PF3_BAR1_APERTURE_SIZE = 6'h00; + parameter [2:0] PF3_BAR1_CONTROL = 3'h0; + parameter [4:0] PF3_BAR2_APERTURE_SIZE = 5'h03; + parameter [2:0] PF3_BAR2_CONTROL = 3'h4; + parameter [4:0] PF3_BAR3_APERTURE_SIZE = 5'h03; + parameter [2:0] PF3_BAR3_CONTROL = 3'h0; + parameter [4:0] PF3_BAR4_APERTURE_SIZE = 5'h03; + parameter [2:0] PF3_BAR4_CONTROL = 3'h4; + parameter [4:0] PF3_BAR5_APERTURE_SIZE = 5'h03; + parameter [2:0] PF3_BAR5_CONTROL = 3'h0; + parameter [7:0] PF3_BIST_REGISTER = 8'h00; + parameter [7:0] PF3_CAPABILITY_POINTER = 8'h50; + parameter [23:0] PF3_CLASS_CODE = 24'h000000; + parameter [15:0] PF3_DEVICE_ID = 16'h0000; + parameter [2:0] PF3_DEV_CAP_MAX_PAYLOAD_SIZE = 3'h3; + parameter [11:0] PF3_DPA_CAP_NEXTPTR = 12'h000; + parameter [4:0] PF3_DPA_CAP_SUB_STATE_CONTROL = 5'h00; + parameter PF3_DPA_CAP_SUB_STATE_CONTROL_EN = "TRUE"; + parameter [7:0] PF3_DPA_CAP_SUB_STATE_POWER_ALLOCATION0 = 8'h00; + parameter [7:0] PF3_DPA_CAP_SUB_STATE_POWER_ALLOCATION1 = 8'h00; + parameter [7:0] PF3_DPA_CAP_SUB_STATE_POWER_ALLOCATION2 = 8'h00; + parameter [7:0] PF3_DPA_CAP_SUB_STATE_POWER_ALLOCATION3 = 8'h00; + parameter [7:0] PF3_DPA_CAP_SUB_STATE_POWER_ALLOCATION4 = 8'h00; + parameter [7:0] PF3_DPA_CAP_SUB_STATE_POWER_ALLOCATION5 = 8'h00; + parameter [7:0] PF3_DPA_CAP_SUB_STATE_POWER_ALLOCATION6 = 8'h00; + parameter [7:0] PF3_DPA_CAP_SUB_STATE_POWER_ALLOCATION7 = 8'h00; + parameter [3:0] PF3_DPA_CAP_VER = 4'h1; + parameter [11:0] PF3_DSN_CAP_NEXTPTR = 12'h10C; + parameter [4:0] PF3_EXPANSION_ROM_APERTURE_SIZE = 5'h03; + parameter PF3_EXPANSION_ROM_ENABLE = "FALSE"; + parameter [7:0] PF3_INTERRUPT_LINE = 8'h00; + parameter [2:0] PF3_INTERRUPT_PIN = 3'h1; + parameter [7:0] PF3_MSIX_CAP_NEXTPTR = 8'h00; + parameter integer PF3_MSIX_CAP_PBA_BIR = 0; + parameter [28:0] PF3_MSIX_CAP_PBA_OFFSET = 29'h00000050; + parameter integer PF3_MSIX_CAP_TABLE_BIR = 0; + parameter [28:0] PF3_MSIX_CAP_TABLE_OFFSET = 29'h00000040; + parameter [10:0] PF3_MSIX_CAP_TABLE_SIZE = 11'h000; + parameter integer PF3_MSI_CAP_MULTIMSGCAP = 0; + parameter [7:0] PF3_MSI_CAP_NEXTPTR = 8'h00; + parameter PF3_MSI_CAP_PERVECMASKCAP = "FALSE"; + parameter [31:0] PF3_PB_CAP_DATA_REG_D0 = 32'h00000000; + parameter [31:0] PF3_PB_CAP_DATA_REG_D0_SUSTAINED = 32'h00000000; + parameter [31:0] PF3_PB_CAP_DATA_REG_D1 = 32'h00000000; + parameter [31:0] PF3_PB_CAP_DATA_REG_D3HOT = 32'h00000000; + parameter [11:0] PF3_PB_CAP_NEXTPTR = 12'h000; + parameter PF3_PB_CAP_SYSTEM_ALLOCATED = "FALSE"; + parameter [3:0] PF3_PB_CAP_VER = 4'h1; + parameter [7:0] PF3_PM_CAP_ID = 8'h01; + parameter [7:0] PF3_PM_CAP_NEXTPTR = 8'h00; + parameter [2:0] PF3_PM_CAP_VER_ID = 3'h3; + parameter PF3_RBAR_CAP_ENABLE = "FALSE"; + parameter [11:0] PF3_RBAR_CAP_NEXTPTR = 12'h000; + parameter [19:0] PF3_RBAR_CAP_SIZE0 = 20'h00000; + parameter [19:0] PF3_RBAR_CAP_SIZE1 = 20'h00000; + parameter [19:0] PF3_RBAR_CAP_SIZE2 = 20'h00000; + parameter [3:0] PF3_RBAR_CAP_VER = 4'h1; + parameter [2:0] PF3_RBAR_CONTROL_INDEX0 = 3'h0; + parameter [2:0] PF3_RBAR_CONTROL_INDEX1 = 3'h0; + parameter [2:0] PF3_RBAR_CONTROL_INDEX2 = 3'h0; + parameter [4:0] PF3_RBAR_CONTROL_SIZE0 = 5'h00; + parameter [4:0] PF3_RBAR_CONTROL_SIZE1 = 5'h00; + parameter [4:0] PF3_RBAR_CONTROL_SIZE2 = 5'h00; + parameter [2:0] PF3_RBAR_NUM = 3'h1; + parameter [7:0] PF3_REVISION_ID = 8'h00; + parameter [4:0] PF3_SRIOV_BAR0_APERTURE_SIZE = 5'h03; + parameter [2:0] PF3_SRIOV_BAR0_CONTROL = 3'h4; + parameter [4:0] PF3_SRIOV_BAR1_APERTURE_SIZE = 5'h00; + parameter [2:0] PF3_SRIOV_BAR1_CONTROL = 3'h0; + parameter [4:0] PF3_SRIOV_BAR2_APERTURE_SIZE = 5'h03; + parameter [2:0] PF3_SRIOV_BAR2_CONTROL = 3'h4; + parameter [4:0] PF3_SRIOV_BAR3_APERTURE_SIZE = 5'h03; + parameter [2:0] PF3_SRIOV_BAR3_CONTROL = 3'h0; + parameter [4:0] PF3_SRIOV_BAR4_APERTURE_SIZE = 5'h03; + parameter [2:0] PF3_SRIOV_BAR4_CONTROL = 3'h4; + parameter [4:0] PF3_SRIOV_BAR5_APERTURE_SIZE = 5'h03; + parameter [2:0] PF3_SRIOV_BAR5_CONTROL = 3'h0; + parameter [15:0] PF3_SRIOV_CAP_INITIAL_VF = 16'h0000; + parameter [11:0] PF3_SRIOV_CAP_NEXTPTR = 12'h000; + parameter [15:0] PF3_SRIOV_CAP_TOTAL_VF = 16'h0000; + parameter [3:0] PF3_SRIOV_CAP_VER = 4'h1; + parameter [15:0] PF3_SRIOV_FIRST_VF_OFFSET = 16'h0000; + parameter [15:0] PF3_SRIOV_FUNC_DEP_LINK = 16'h0000; + parameter [31:0] PF3_SRIOV_SUPPORTED_PAGE_SIZE = 32'h00000000; + parameter [15:0] PF3_SRIOV_VF_DEVICE_ID = 16'h0000; + parameter [15:0] PF3_SUBSYSTEM_ID = 16'h0000; + parameter PF3_TPHR_CAP_DEV_SPECIFIC_MODE = "TRUE"; + parameter PF3_TPHR_CAP_ENABLE = "FALSE"; + parameter PF3_TPHR_CAP_INT_VEC_MODE = "TRUE"; + parameter [11:0] PF3_TPHR_CAP_NEXTPTR = 12'h000; + parameter [2:0] PF3_TPHR_CAP_ST_MODE_SEL = 3'h0; + parameter [1:0] PF3_TPHR_CAP_ST_TABLE_LOC = 2'h0; + parameter [10:0] PF3_TPHR_CAP_ST_TABLE_SIZE = 11'h000; + parameter [3:0] PF3_TPHR_CAP_VER = 4'h1; + parameter PL_DISABLE_AUTO_EQ_SPEED_CHANGE_TO_GEN3 = "FALSE"; + parameter PL_DISABLE_AUTO_SPEED_CHANGE_TO_GEN2 = "FALSE"; + parameter PL_DISABLE_EI_INFER_IN_L0 = "FALSE"; + parameter PL_DISABLE_GEN3_DC_BALANCE = "FALSE"; + parameter PL_DISABLE_GEN3_LFSR_UPDATE_ON_SKP = "TRUE"; + parameter PL_DISABLE_RETRAIN_ON_FRAMING_ERROR = "FALSE"; + parameter PL_DISABLE_SCRAMBLING = "FALSE"; + parameter PL_DISABLE_SYNC_HEADER_FRAMING_ERROR = "FALSE"; + parameter PL_DISABLE_UPCONFIG_CAPABLE = "FALSE"; + parameter PL_EQ_ADAPT_DISABLE_COEFF_CHECK = "FALSE"; + parameter PL_EQ_ADAPT_DISABLE_PRESET_CHECK = "FALSE"; + parameter [4:0] PL_EQ_ADAPT_ITER_COUNT = 5'h02; + parameter [1:0] PL_EQ_ADAPT_REJECT_RETRY_COUNT = 2'h1; + parameter PL_EQ_BYPASS_PHASE23 = "FALSE"; + parameter [2:0] PL_EQ_DEFAULT_GEN3_RX_PRESET_HINT = 3'h3; + parameter [3:0] PL_EQ_DEFAULT_GEN3_TX_PRESET = 4'h4; + parameter PL_EQ_PHASE01_RX_ADAPT = "FALSE"; + parameter PL_EQ_SHORT_ADAPT_PHASE = "FALSE"; + parameter [15:0] PL_LANE0_EQ_CONTROL = 16'h3F00; + parameter [15:0] PL_LANE1_EQ_CONTROL = 16'h3F00; + parameter [15:0] PL_LANE2_EQ_CONTROL = 16'h3F00; + parameter [15:0] PL_LANE3_EQ_CONTROL = 16'h3F00; + parameter [15:0] PL_LANE4_EQ_CONTROL = 16'h3F00; + parameter [15:0] PL_LANE5_EQ_CONTROL = 16'h3F00; + parameter [15:0] PL_LANE6_EQ_CONTROL = 16'h3F00; + parameter [15:0] PL_LANE7_EQ_CONTROL = 16'h3F00; + parameter [2:0] PL_LINK_CAP_MAX_LINK_SPEED = 3'h4; + parameter [3:0] PL_LINK_CAP_MAX_LINK_WIDTH = 4'h8; + parameter integer PL_N_FTS_COMCLK_GEN1 = 255; + parameter integer PL_N_FTS_COMCLK_GEN2 = 255; + parameter integer PL_N_FTS_COMCLK_GEN3 = 255; + parameter integer PL_N_FTS_GEN1 = 255; + parameter integer PL_N_FTS_GEN2 = 255; + parameter integer PL_N_FTS_GEN3 = 255; + parameter PL_REPORT_ALL_PHY_ERRORS = "TRUE"; + parameter PL_SIM_FAST_LINK_TRAINING = "FALSE"; + parameter PL_UPSTREAM_FACING = "TRUE"; + parameter [15:0] PM_ASPML0S_TIMEOUT = 16'h05DC; + parameter [19:0] PM_ASPML1_ENTRY_DELAY = 20'h00000; + parameter PM_ENABLE_L23_ENTRY = "FALSE"; + parameter PM_ENABLE_SLOT_POWER_CAPTURE = "TRUE"; + parameter [31:0] PM_L1_REENTRY_DELAY = 32'h00000000; + parameter [19:0] PM_PME_SERVICE_TIMEOUT_DELAY = 20'h186A0; + parameter [15:0] PM_PME_TURNOFF_ACK_DELAY = 16'h0064; + parameter [31:0] SIM_JTAG_IDCODE = 32'h00000000; + parameter SIM_VERSION = "1.0"; + parameter integer SPARE_BIT0 = 0; + parameter integer SPARE_BIT1 = 0; + parameter integer SPARE_BIT2 = 0; + parameter integer SPARE_BIT3 = 0; + parameter integer SPARE_BIT4 = 0; + parameter integer SPARE_BIT5 = 0; + parameter integer SPARE_BIT6 = 0; + parameter integer SPARE_BIT7 = 0; + parameter integer SPARE_BIT8 = 0; + parameter [7:0] SPARE_BYTE0 = 8'h00; + parameter [7:0] SPARE_BYTE1 = 8'h00; + parameter [7:0] SPARE_BYTE2 = 8'h00; + parameter [7:0] SPARE_BYTE3 = 8'h00; + parameter [31:0] SPARE_WORD0 = 32'h00000000; + parameter [31:0] SPARE_WORD1 = 32'h00000000; + parameter [31:0] SPARE_WORD2 = 32'h00000000; + parameter [31:0] SPARE_WORD3 = 32'h00000000; + parameter SRIOV_CAP_ENABLE = "FALSE"; + parameter TL_COMPLETION_RAM_SIZE_16K = "TRUE"; + parameter [23:0] TL_COMPL_TIMEOUT_REG0 = 24'hBEBC20; + parameter [27:0] TL_COMPL_TIMEOUT_REG1 = 28'h2FAF080; + parameter [11:0] TL_CREDITS_CD = 12'h3E0; + parameter [7:0] TL_CREDITS_CH = 8'h20; + parameter [11:0] TL_CREDITS_NPD = 12'h028; + parameter [7:0] TL_CREDITS_NPH = 8'h20; + parameter [11:0] TL_CREDITS_PD = 12'h198; + parameter [7:0] TL_CREDITS_PH = 8'h20; + parameter TL_ENABLE_MESSAGE_RID_CHECK_ENABLE = "TRUE"; + parameter TL_EXTENDED_CFG_EXTEND_INTERFACE_ENABLE = "FALSE"; + parameter TL_LEGACY_CFG_EXTEND_INTERFACE_ENABLE = "FALSE"; + parameter TL_LEGACY_MODE_ENABLE = "FALSE"; + parameter [1:0] TL_PF_ENABLE_REG = 2'h0; + parameter TL_TX_MUX_STRICT_PRIORITY = "TRUE"; + parameter TWO_LAYER_MODE_DLCMSM_ENABLE = "TRUE"; + parameter TWO_LAYER_MODE_ENABLE = "FALSE"; + parameter TWO_LAYER_MODE_WIDTH_256 = "TRUE"; + parameter [11:0] VF0_ARI_CAP_NEXTPTR = 12'h000; + parameter [7:0] VF0_CAPABILITY_POINTER = 8'h50; + parameter integer VF0_MSIX_CAP_PBA_BIR = 0; + parameter [28:0] VF0_MSIX_CAP_PBA_OFFSET = 29'h00000050; + parameter integer VF0_MSIX_CAP_TABLE_BIR = 0; + parameter [28:0] VF0_MSIX_CAP_TABLE_OFFSET = 29'h00000040; + parameter [10:0] VF0_MSIX_CAP_TABLE_SIZE = 11'h000; + parameter integer VF0_MSI_CAP_MULTIMSGCAP = 0; + parameter [7:0] VF0_PM_CAP_ID = 8'h01; + parameter [7:0] VF0_PM_CAP_NEXTPTR = 8'h00; + parameter [2:0] VF0_PM_CAP_VER_ID = 3'h3; + parameter VF0_TPHR_CAP_DEV_SPECIFIC_MODE = "TRUE"; + parameter VF0_TPHR_CAP_ENABLE = "FALSE"; + parameter VF0_TPHR_CAP_INT_VEC_MODE = "TRUE"; + parameter [11:0] VF0_TPHR_CAP_NEXTPTR = 12'h000; + parameter [2:0] VF0_TPHR_CAP_ST_MODE_SEL = 3'h0; + parameter [1:0] VF0_TPHR_CAP_ST_TABLE_LOC = 2'h0; + parameter [10:0] VF0_TPHR_CAP_ST_TABLE_SIZE = 11'h000; + parameter [3:0] VF0_TPHR_CAP_VER = 4'h1; + parameter [11:0] VF1_ARI_CAP_NEXTPTR = 12'h000; + parameter integer VF1_MSIX_CAP_PBA_BIR = 0; + parameter [28:0] VF1_MSIX_CAP_PBA_OFFSET = 29'h00000050; + parameter integer VF1_MSIX_CAP_TABLE_BIR = 0; + parameter [28:0] VF1_MSIX_CAP_TABLE_OFFSET = 29'h00000040; + parameter [10:0] VF1_MSIX_CAP_TABLE_SIZE = 11'h000; + parameter integer VF1_MSI_CAP_MULTIMSGCAP = 0; + parameter [7:0] VF1_PM_CAP_ID = 8'h01; + parameter [7:0] VF1_PM_CAP_NEXTPTR = 8'h00; + parameter [2:0] VF1_PM_CAP_VER_ID = 3'h3; + parameter VF1_TPHR_CAP_DEV_SPECIFIC_MODE = "TRUE"; + parameter VF1_TPHR_CAP_ENABLE = "FALSE"; + parameter VF1_TPHR_CAP_INT_VEC_MODE = "TRUE"; + parameter [11:0] VF1_TPHR_CAP_NEXTPTR = 12'h000; + parameter [2:0] VF1_TPHR_CAP_ST_MODE_SEL = 3'h0; + parameter [1:0] VF1_TPHR_CAP_ST_TABLE_LOC = 2'h0; + parameter [10:0] VF1_TPHR_CAP_ST_TABLE_SIZE = 11'h000; + parameter [3:0] VF1_TPHR_CAP_VER = 4'h1; + parameter [11:0] VF2_ARI_CAP_NEXTPTR = 12'h000; + parameter integer VF2_MSIX_CAP_PBA_BIR = 0; + parameter [28:0] VF2_MSIX_CAP_PBA_OFFSET = 29'h00000050; + parameter integer VF2_MSIX_CAP_TABLE_BIR = 0; + parameter [28:0] VF2_MSIX_CAP_TABLE_OFFSET = 29'h00000040; + parameter [10:0] VF2_MSIX_CAP_TABLE_SIZE = 11'h000; + parameter integer VF2_MSI_CAP_MULTIMSGCAP = 0; + parameter [7:0] VF2_PM_CAP_ID = 8'h01; + parameter [7:0] VF2_PM_CAP_NEXTPTR = 8'h00; + parameter [2:0] VF2_PM_CAP_VER_ID = 3'h3; + parameter VF2_TPHR_CAP_DEV_SPECIFIC_MODE = "TRUE"; + parameter VF2_TPHR_CAP_ENABLE = "FALSE"; + parameter VF2_TPHR_CAP_INT_VEC_MODE = "TRUE"; + parameter [11:0] VF2_TPHR_CAP_NEXTPTR = 12'h000; + parameter [2:0] VF2_TPHR_CAP_ST_MODE_SEL = 3'h0; + parameter [1:0] VF2_TPHR_CAP_ST_TABLE_LOC = 2'h0; + parameter [10:0] VF2_TPHR_CAP_ST_TABLE_SIZE = 11'h000; + parameter [3:0] VF2_TPHR_CAP_VER = 4'h1; + parameter [11:0] VF3_ARI_CAP_NEXTPTR = 12'h000; + parameter integer VF3_MSIX_CAP_PBA_BIR = 0; + parameter [28:0] VF3_MSIX_CAP_PBA_OFFSET = 29'h00000050; + parameter integer VF3_MSIX_CAP_TABLE_BIR = 0; + parameter [28:0] VF3_MSIX_CAP_TABLE_OFFSET = 29'h00000040; + parameter [10:0] VF3_MSIX_CAP_TABLE_SIZE = 11'h000; + parameter integer VF3_MSI_CAP_MULTIMSGCAP = 0; + parameter [7:0] VF3_PM_CAP_ID = 8'h01; + parameter [7:0] VF3_PM_CAP_NEXTPTR = 8'h00; + parameter [2:0] VF3_PM_CAP_VER_ID = 3'h3; + parameter VF3_TPHR_CAP_DEV_SPECIFIC_MODE = "TRUE"; + parameter VF3_TPHR_CAP_ENABLE = "FALSE"; + parameter VF3_TPHR_CAP_INT_VEC_MODE = "TRUE"; + parameter [11:0] VF3_TPHR_CAP_NEXTPTR = 12'h000; + parameter [2:0] VF3_TPHR_CAP_ST_MODE_SEL = 3'h0; + parameter [1:0] VF3_TPHR_CAP_ST_TABLE_LOC = 2'h0; + parameter [10:0] VF3_TPHR_CAP_ST_TABLE_SIZE = 11'h000; + parameter [3:0] VF3_TPHR_CAP_VER = 4'h1; + parameter [11:0] VF4_ARI_CAP_NEXTPTR = 12'h000; + parameter integer VF4_MSIX_CAP_PBA_BIR = 0; + parameter [28:0] VF4_MSIX_CAP_PBA_OFFSET = 29'h00000050; + parameter integer VF4_MSIX_CAP_TABLE_BIR = 0; + parameter [28:0] VF4_MSIX_CAP_TABLE_OFFSET = 29'h00000040; + parameter [10:0] VF4_MSIX_CAP_TABLE_SIZE = 11'h000; + parameter integer VF4_MSI_CAP_MULTIMSGCAP = 0; + parameter [7:0] VF4_PM_CAP_ID = 8'h01; + parameter [7:0] VF4_PM_CAP_NEXTPTR = 8'h00; + parameter [2:0] VF4_PM_CAP_VER_ID = 3'h3; + parameter VF4_TPHR_CAP_DEV_SPECIFIC_MODE = "TRUE"; + parameter VF4_TPHR_CAP_ENABLE = "FALSE"; + parameter VF4_TPHR_CAP_INT_VEC_MODE = "TRUE"; + parameter [11:0] VF4_TPHR_CAP_NEXTPTR = 12'h000; + parameter [2:0] VF4_TPHR_CAP_ST_MODE_SEL = 3'h0; + parameter [1:0] VF4_TPHR_CAP_ST_TABLE_LOC = 2'h0; + parameter [10:0] VF4_TPHR_CAP_ST_TABLE_SIZE = 11'h000; + parameter [3:0] VF4_TPHR_CAP_VER = 4'h1; + parameter [11:0] VF5_ARI_CAP_NEXTPTR = 12'h000; + parameter integer VF5_MSIX_CAP_PBA_BIR = 0; + parameter [28:0] VF5_MSIX_CAP_PBA_OFFSET = 29'h00000050; + parameter integer VF5_MSIX_CAP_TABLE_BIR = 0; + parameter [28:0] VF5_MSIX_CAP_TABLE_OFFSET = 29'h00000040; + parameter [10:0] VF5_MSIX_CAP_TABLE_SIZE = 11'h000; + parameter integer VF5_MSI_CAP_MULTIMSGCAP = 0; + parameter [7:0] VF5_PM_CAP_ID = 8'h01; + parameter [7:0] VF5_PM_CAP_NEXTPTR = 8'h00; + parameter [2:0] VF5_PM_CAP_VER_ID = 3'h3; + parameter VF5_TPHR_CAP_DEV_SPECIFIC_MODE = "TRUE"; + parameter VF5_TPHR_CAP_ENABLE = "FALSE"; + parameter VF5_TPHR_CAP_INT_VEC_MODE = "TRUE"; + parameter [11:0] VF5_TPHR_CAP_NEXTPTR = 12'h000; + parameter [2:0] VF5_TPHR_CAP_ST_MODE_SEL = 3'h0; + parameter [1:0] VF5_TPHR_CAP_ST_TABLE_LOC = 2'h0; + parameter [10:0] VF5_TPHR_CAP_ST_TABLE_SIZE = 11'h000; + parameter [3:0] VF5_TPHR_CAP_VER = 4'h1; + parameter [11:0] VF6_ARI_CAP_NEXTPTR = 12'h000; + parameter integer VF6_MSIX_CAP_PBA_BIR = 0; + parameter [28:0] VF6_MSIX_CAP_PBA_OFFSET = 29'h00000050; + parameter integer VF6_MSIX_CAP_TABLE_BIR = 0; + parameter [28:0] VF6_MSIX_CAP_TABLE_OFFSET = 29'h00000040; + parameter [10:0] VF6_MSIX_CAP_TABLE_SIZE = 11'h000; + parameter integer VF6_MSI_CAP_MULTIMSGCAP = 0; + parameter [7:0] VF6_PM_CAP_ID = 8'h01; + parameter [7:0] VF6_PM_CAP_NEXTPTR = 8'h00; + parameter [2:0] VF6_PM_CAP_VER_ID = 3'h3; + parameter VF6_TPHR_CAP_DEV_SPECIFIC_MODE = "TRUE"; + parameter VF6_TPHR_CAP_ENABLE = "FALSE"; + parameter VF6_TPHR_CAP_INT_VEC_MODE = "TRUE"; + parameter [11:0] VF6_TPHR_CAP_NEXTPTR = 12'h000; + parameter [2:0] VF6_TPHR_CAP_ST_MODE_SEL = 3'h0; + parameter [1:0] VF6_TPHR_CAP_ST_TABLE_LOC = 2'h0; + parameter [10:0] VF6_TPHR_CAP_ST_TABLE_SIZE = 11'h000; + parameter [3:0] VF6_TPHR_CAP_VER = 4'h1; + parameter [11:0] VF7_ARI_CAP_NEXTPTR = 12'h000; + parameter integer VF7_MSIX_CAP_PBA_BIR = 0; + parameter [28:0] VF7_MSIX_CAP_PBA_OFFSET = 29'h00000050; + parameter integer VF7_MSIX_CAP_TABLE_BIR = 0; + parameter [28:0] VF7_MSIX_CAP_TABLE_OFFSET = 29'h00000040; + parameter [10:0] VF7_MSIX_CAP_TABLE_SIZE = 11'h000; + parameter integer VF7_MSI_CAP_MULTIMSGCAP = 0; + parameter [7:0] VF7_PM_CAP_ID = 8'h01; + parameter [7:0] VF7_PM_CAP_NEXTPTR = 8'h00; + parameter [2:0] VF7_PM_CAP_VER_ID = 3'h3; + parameter VF7_TPHR_CAP_DEV_SPECIFIC_MODE = "TRUE"; + parameter VF7_TPHR_CAP_ENABLE = "FALSE"; + parameter VF7_TPHR_CAP_INT_VEC_MODE = "TRUE"; + parameter [11:0] VF7_TPHR_CAP_NEXTPTR = 12'h000; + parameter [2:0] VF7_TPHR_CAP_ST_MODE_SEL = 3'h0; + parameter [1:0] VF7_TPHR_CAP_ST_TABLE_LOC = 2'h0; + parameter [10:0] VF7_TPHR_CAP_ST_TABLE_SIZE = 11'h000; + parameter [3:0] VF7_TPHR_CAP_VER = 4'h1; + output [2:0] CFGCURRENTSPEED; + output [3:0] CFGDPASUBSTATECHANGE; + output CFGERRCOROUT; + output CFGERRFATALOUT; + output CFGERRNONFATALOUT; + output [7:0] CFGEXTFUNCTIONNUMBER; + output CFGEXTREADRECEIVED; + output [9:0] CFGEXTREGISTERNUMBER; + output [3:0] CFGEXTWRITEBYTEENABLE; + output [31:0] CFGEXTWRITEDATA; + output CFGEXTWRITERECEIVED; + output [11:0] CFGFCCPLD; + output [7:0] CFGFCCPLH; + output [11:0] CFGFCNPD; + output [7:0] CFGFCNPH; + output [11:0] CFGFCPD; + output [7:0] CFGFCPH; + output [3:0] CFGFLRINPROCESS; + output [11:0] CFGFUNCTIONPOWERSTATE; + output [15:0] CFGFUNCTIONSTATUS; + output CFGHOTRESETOUT; + output [31:0] CFGINTERRUPTMSIDATA; + output [3:0] CFGINTERRUPTMSIENABLE; + output CFGINTERRUPTMSIFAIL; + output CFGINTERRUPTMSIMASKUPDATE; + output [11:0] CFGINTERRUPTMSIMMENABLE; + output CFGINTERRUPTMSISENT; + output [7:0] CFGINTERRUPTMSIVFENABLE; + output [3:0] CFGINTERRUPTMSIXENABLE; + output CFGINTERRUPTMSIXFAIL; + output [3:0] CFGINTERRUPTMSIXMASK; + output CFGINTERRUPTMSIXSENT; + output [7:0] CFGINTERRUPTMSIXVFENABLE; + output [7:0] CFGINTERRUPTMSIXVFMASK; + output CFGINTERRUPTSENT; + output [1:0] CFGLINKPOWERSTATE; + output CFGLOCALERROR; + output CFGLTRENABLE; + output [5:0] CFGLTSSMSTATE; + output [2:0] CFGMAXPAYLOAD; + output [2:0] CFGMAXREADREQ; + output [31:0] CFGMGMTREADDATA; + output CFGMGMTREADWRITEDONE; + output CFGMSGRECEIVED; + output [7:0] CFGMSGRECEIVEDDATA; + output [4:0] CFGMSGRECEIVEDTYPE; + output CFGMSGTRANSMITDONE; + output [3:0] CFGNEGOTIATEDWIDTH; + output [1:0] CFGOBFFENABLE; + output [15:0] CFGPERFUNCSTATUSDATA; + output CFGPERFUNCTIONUPDATEDONE; + output CFGPHYLINKDOWN; + output [1:0] CFGPHYLINKSTATUS; + output CFGPLSTATUSCHANGE; + output CFGPOWERSTATECHANGEINTERRUPT; + output [3:0] CFGRCBSTATUS; + output [3:0] CFGTPHFUNCTIONNUM; + output [3:0] CFGTPHREQUESTERENABLE; + output [11:0] CFGTPHSTMODE; + output [4:0] CFGTPHSTTADDRESS; + output CFGTPHSTTREADENABLE; + output [3:0] CFGTPHSTTWRITEBYTEVALID; + output [31:0] CFGTPHSTTWRITEDATA; + output CFGTPHSTTWRITEENABLE; + output [7:0] CFGVFFLRINPROCESS; + output [23:0] CFGVFPOWERSTATE; + output [15:0] CFGVFSTATUS; + output [7:0] CFGVFTPHREQUESTERENABLE; + output [23:0] CFGVFTPHSTMODE; + output CONFMCAPDESIGNSWITCH; + output CONFMCAPEOS; + output CONFMCAPINUSEBYPCIE; + output CONFREQREADY; + output [31:0] CONFRESPRDATA; + output CONFRESPVALID; + output [15:0] DBGDATAOUT; + output DBGMCAPCSB; + output [31:0] DBGMCAPDATA; + output DBGMCAPEOS; + output DBGMCAPERROR; + output DBGMCAPMODE; + output DBGMCAPRDATAVALID; + output DBGMCAPRDWRB; + output DBGMCAPRESET; + output DBGPLDATABLOCKRECEIVEDAFTEREDS; + output DBGPLGEN3FRAMINGERRORDETECTED; + output DBGPLGEN3SYNCHEADERERRORDETECTED; + output [7:0] DBGPLINFERREDRXELECTRICALIDLE; + output [15:0] DRPDO; + output DRPRDY; + output LL2LMMASTERTLPSENT0; + output LL2LMMASTERTLPSENT1; + output [3:0] LL2LMMASTERTLPSENTTLPID0; + output [3:0] LL2LMMASTERTLPSENTTLPID1; + output [255:0] LL2LMMAXISRXTDATA; + output [17:0] LL2LMMAXISRXTUSER; + output [7:0] LL2LMMAXISRXTVALID; + output [7:0] LL2LMSAXISTXTREADY; + output [255:0] MAXISCQTDATA; + output [7:0] MAXISCQTKEEP; + output MAXISCQTLAST; + output [84:0] MAXISCQTUSER; + output MAXISCQTVALID; + output [255:0] MAXISRCTDATA; + output [7:0] MAXISRCTKEEP; + output MAXISRCTLAST; + output [74:0] MAXISRCTUSER; + output MAXISRCTVALID; + output [9:0] MICOMPLETIONRAMREADADDRESSAL; + output [9:0] MICOMPLETIONRAMREADADDRESSAU; + output [9:0] MICOMPLETIONRAMREADADDRESSBL; + output [9:0] MICOMPLETIONRAMREADADDRESSBU; + output [3:0] MICOMPLETIONRAMREADENABLEL; + output [3:0] MICOMPLETIONRAMREADENABLEU; + output [9:0] MICOMPLETIONRAMWRITEADDRESSAL; + output [9:0] MICOMPLETIONRAMWRITEADDRESSAU; + output [9:0] MICOMPLETIONRAMWRITEADDRESSBL; + output [9:0] MICOMPLETIONRAMWRITEADDRESSBU; + output [71:0] MICOMPLETIONRAMWRITEDATAL; + output [71:0] MICOMPLETIONRAMWRITEDATAU; + output [3:0] MICOMPLETIONRAMWRITEENABLEL; + output [3:0] MICOMPLETIONRAMWRITEENABLEU; + output [8:0] MIREPLAYRAMADDRESS; + output [1:0] MIREPLAYRAMREADENABLE; + output [143:0] MIREPLAYRAMWRITEDATA; + output [1:0] MIREPLAYRAMWRITEENABLE; + output [8:0] MIREQUESTRAMREADADDRESSA; + output [8:0] MIREQUESTRAMREADADDRESSB; + output [3:0] MIREQUESTRAMREADENABLE; + output [8:0] MIREQUESTRAMWRITEADDRESSA; + output [8:0] MIREQUESTRAMWRITEADDRESSB; + output [143:0] MIREQUESTRAMWRITEDATA; + output [3:0] MIREQUESTRAMWRITEENABLE; + output [5:0] PCIECQNPREQCOUNT; + output PCIEPERST0B; + output PCIEPERST1B; + output [3:0] PCIERQSEQNUM; + output PCIERQSEQNUMVLD; + output [5:0] PCIERQTAG; + output [1:0] PCIERQTAGAV; + output PCIERQTAGVLD; + output [1:0] PCIETFCNPDAV; + output [1:0] PCIETFCNPHAV; + output [1:0] PIPERX0EQCONTROL; + output [5:0] PIPERX0EQLPLFFS; + output [3:0] PIPERX0EQLPTXPRESET; + output [2:0] PIPERX0EQPRESET; + output PIPERX0POLARITY; + output [1:0] PIPERX1EQCONTROL; + output [5:0] PIPERX1EQLPLFFS; + output [3:0] PIPERX1EQLPTXPRESET; + output [2:0] PIPERX1EQPRESET; + output PIPERX1POLARITY; + output [1:0] PIPERX2EQCONTROL; + output [5:0] PIPERX2EQLPLFFS; + output [3:0] PIPERX2EQLPTXPRESET; + output [2:0] PIPERX2EQPRESET; + output PIPERX2POLARITY; + output [1:0] PIPERX3EQCONTROL; + output [5:0] PIPERX3EQLPLFFS; + output [3:0] PIPERX3EQLPTXPRESET; + output [2:0] PIPERX3EQPRESET; + output PIPERX3POLARITY; + output [1:0] PIPERX4EQCONTROL; + output [5:0] PIPERX4EQLPLFFS; + output [3:0] PIPERX4EQLPTXPRESET; + output [2:0] PIPERX4EQPRESET; + output PIPERX4POLARITY; + output [1:0] PIPERX5EQCONTROL; + output [5:0] PIPERX5EQLPLFFS; + output [3:0] PIPERX5EQLPTXPRESET; + output [2:0] PIPERX5EQPRESET; + output PIPERX5POLARITY; + output [1:0] PIPERX6EQCONTROL; + output [5:0] PIPERX6EQLPLFFS; + output [3:0] PIPERX6EQLPTXPRESET; + output [2:0] PIPERX6EQPRESET; + output PIPERX6POLARITY; + output [1:0] PIPERX7EQCONTROL; + output [5:0] PIPERX7EQLPLFFS; + output [3:0] PIPERX7EQLPTXPRESET; + output [2:0] PIPERX7EQPRESET; + output PIPERX7POLARITY; + output [1:0] PIPETX0CHARISK; + output PIPETX0COMPLIANCE; + output [31:0] PIPETX0DATA; + output PIPETX0DATAVALID; + output PIPETX0DEEMPH; + output PIPETX0ELECIDLE; + output [1:0] PIPETX0EQCONTROL; + output [5:0] PIPETX0EQDEEMPH; + output [3:0] PIPETX0EQPRESET; + output [2:0] PIPETX0MARGIN; + output [1:0] PIPETX0POWERDOWN; + output [1:0] PIPETX0RATE; + output PIPETX0RCVRDET; + output PIPETX0RESET; + output PIPETX0STARTBLOCK; + output PIPETX0SWING; + output [1:0] PIPETX0SYNCHEADER; + output [1:0] PIPETX1CHARISK; + output PIPETX1COMPLIANCE; + output [31:0] PIPETX1DATA; + output PIPETX1DATAVALID; + output PIPETX1DEEMPH; + output PIPETX1ELECIDLE; + output [1:0] PIPETX1EQCONTROL; + output [5:0] PIPETX1EQDEEMPH; + output [3:0] PIPETX1EQPRESET; + output [2:0] PIPETX1MARGIN; + output [1:0] PIPETX1POWERDOWN; + output [1:0] PIPETX1RATE; + output PIPETX1RCVRDET; + output PIPETX1RESET; + output PIPETX1STARTBLOCK; + output PIPETX1SWING; + output [1:0] PIPETX1SYNCHEADER; + output [1:0] PIPETX2CHARISK; + output PIPETX2COMPLIANCE; + output [31:0] PIPETX2DATA; + output PIPETX2DATAVALID; + output PIPETX2DEEMPH; + output PIPETX2ELECIDLE; + output [1:0] PIPETX2EQCONTROL; + output [5:0] PIPETX2EQDEEMPH; + output [3:0] PIPETX2EQPRESET; + output [2:0] PIPETX2MARGIN; + output [1:0] PIPETX2POWERDOWN; + output [1:0] PIPETX2RATE; + output PIPETX2RCVRDET; + output PIPETX2RESET; + output PIPETX2STARTBLOCK; + output PIPETX2SWING; + output [1:0] PIPETX2SYNCHEADER; + output [1:0] PIPETX3CHARISK; + output PIPETX3COMPLIANCE; + output [31:0] PIPETX3DATA; + output PIPETX3DATAVALID; + output PIPETX3DEEMPH; + output PIPETX3ELECIDLE; + output [1:0] PIPETX3EQCONTROL; + output [5:0] PIPETX3EQDEEMPH; + output [3:0] PIPETX3EQPRESET; + output [2:0] PIPETX3MARGIN; + output [1:0] PIPETX3POWERDOWN; + output [1:0] PIPETX3RATE; + output PIPETX3RCVRDET; + output PIPETX3RESET; + output PIPETX3STARTBLOCK; + output PIPETX3SWING; + output [1:0] PIPETX3SYNCHEADER; + output [1:0] PIPETX4CHARISK; + output PIPETX4COMPLIANCE; + output [31:0] PIPETX4DATA; + output PIPETX4DATAVALID; + output PIPETX4DEEMPH; + output PIPETX4ELECIDLE; + output [1:0] PIPETX4EQCONTROL; + output [5:0] PIPETX4EQDEEMPH; + output [3:0] PIPETX4EQPRESET; + output [2:0] PIPETX4MARGIN; + output [1:0] PIPETX4POWERDOWN; + output [1:0] PIPETX4RATE; + output PIPETX4RCVRDET; + output PIPETX4RESET; + output PIPETX4STARTBLOCK; + output PIPETX4SWING; + output [1:0] PIPETX4SYNCHEADER; + output [1:0] PIPETX5CHARISK; + output PIPETX5COMPLIANCE; + output [31:0] PIPETX5DATA; + output PIPETX5DATAVALID; + output PIPETX5DEEMPH; + output PIPETX5ELECIDLE; + output [1:0] PIPETX5EQCONTROL; + output [5:0] PIPETX5EQDEEMPH; + output [3:0] PIPETX5EQPRESET; + output [2:0] PIPETX5MARGIN; + output [1:0] PIPETX5POWERDOWN; + output [1:0] PIPETX5RATE; + output PIPETX5RCVRDET; + output PIPETX5RESET; + output PIPETX5STARTBLOCK; + output PIPETX5SWING; + output [1:0] PIPETX5SYNCHEADER; + output [1:0] PIPETX6CHARISK; + output PIPETX6COMPLIANCE; + output [31:0] PIPETX6DATA; + output PIPETX6DATAVALID; + output PIPETX6DEEMPH; + output PIPETX6ELECIDLE; + output [1:0] PIPETX6EQCONTROL; + output [5:0] PIPETX6EQDEEMPH; + output [3:0] PIPETX6EQPRESET; + output [2:0] PIPETX6MARGIN; + output [1:0] PIPETX6POWERDOWN; + output [1:0] PIPETX6RATE; + output PIPETX6RCVRDET; + output PIPETX6RESET; + output PIPETX6STARTBLOCK; + output PIPETX6SWING; + output [1:0] PIPETX6SYNCHEADER; + output [1:0] PIPETX7CHARISK; + output PIPETX7COMPLIANCE; + output [31:0] PIPETX7DATA; + output PIPETX7DATAVALID; + output PIPETX7DEEMPH; + output PIPETX7ELECIDLE; + output [1:0] PIPETX7EQCONTROL; + output [5:0] PIPETX7EQDEEMPH; + output [3:0] PIPETX7EQPRESET; + output [2:0] PIPETX7MARGIN; + output [1:0] PIPETX7POWERDOWN; + output [1:0] PIPETX7RATE; + output PIPETX7RCVRDET; + output PIPETX7RESET; + output PIPETX7STARTBLOCK; + output PIPETX7SWING; + output [1:0] PIPETX7SYNCHEADER; + output PLEQINPROGRESS; + output [1:0] PLEQPHASE; + output [3:0] SAXISCCTREADY; + output [3:0] SAXISRQTREADY; + output [31:0] SPAREOUT; + input CFGCONFIGSPACEENABLE; + input [15:0] CFGDEVID; + input [7:0] CFGDSBUSNUMBER; + input [4:0] CFGDSDEVICENUMBER; + input [2:0] CFGDSFUNCTIONNUMBER; + input [63:0] CFGDSN; + input [7:0] CFGDSPORTNUMBER; + input CFGERRCORIN; + input CFGERRUNCORIN; + input [31:0] CFGEXTREADDATA; + input CFGEXTREADDATAVALID; + input [2:0] CFGFCSEL; + input [3:0] CFGFLRDONE; + input CFGHOTRESETIN; + input [3:0] CFGINTERRUPTINT; + input [2:0] CFGINTERRUPTMSIATTR; + input [3:0] CFGINTERRUPTMSIFUNCTIONNUMBER; + input [31:0] CFGINTERRUPTMSIINT; + input [31:0] CFGINTERRUPTMSIPENDINGSTATUS; + input CFGINTERRUPTMSIPENDINGSTATUSDATAENABLE; + input [3:0] CFGINTERRUPTMSIPENDINGSTATUSFUNCTIONNUM; + input [3:0] CFGINTERRUPTMSISELECT; + input CFGINTERRUPTMSITPHPRESENT; + input [8:0] CFGINTERRUPTMSITPHSTTAG; + input [1:0] CFGINTERRUPTMSITPHTYPE; + input [63:0] CFGINTERRUPTMSIXADDRESS; + input [31:0] CFGINTERRUPTMSIXDATA; + input CFGINTERRUPTMSIXINT; + input [3:0] CFGINTERRUPTPENDING; + input CFGLINKTRAININGENABLE; + input [18:0] CFGMGMTADDR; + input [3:0] CFGMGMTBYTEENABLE; + input CFGMGMTREAD; + input CFGMGMTTYPE1CFGREGACCESS; + input CFGMGMTWRITE; + input [31:0] CFGMGMTWRITEDATA; + input CFGMSGTRANSMIT; + input [31:0] CFGMSGTRANSMITDATA; + input [2:0] CFGMSGTRANSMITTYPE; + input [2:0] CFGPERFUNCSTATUSCONTROL; + input [3:0] CFGPERFUNCTIONNUMBER; + input CFGPERFUNCTIONOUTPUTREQUEST; + input CFGPOWERSTATECHANGEACK; + input CFGREQPMTRANSITIONL23READY; + input [7:0] CFGREVID; + input [15:0] CFGSUBSYSID; + input [15:0] CFGSUBSYSVENDID; + input [31:0] CFGTPHSTTREADDATA; + input CFGTPHSTTREADDATAVALID; + input [15:0] CFGVENDID; + input [7:0] CFGVFFLRDONE; + input CONFMCAPREQUESTBYCONF; + input [31:0] CONFREQDATA; + input [3:0] CONFREQREGNUM; + input [1:0] CONFREQTYPE; + input CONFREQVALID; + input CORECLK; + input CORECLKMICOMPLETIONRAML; + input CORECLKMICOMPLETIONRAMU; + input CORECLKMIREPLAYRAM; + input CORECLKMIREQUESTRAM; + input DBGCFGLOCALMGMTREGOVERRIDE; + input [3:0] DBGDATASEL; + input [9:0] DRPADDR; + input DRPCLK; + input [15:0] DRPDI; + input DRPEN; + input DRPWE; + input [13:0] LL2LMSAXISTXTUSER; + input LL2LMSAXISTXTVALID; + input [3:0] LL2LMTXTLPID0; + input [3:0] LL2LMTXTLPID1; + input [21:0] MAXISCQTREADY; + input [21:0] MAXISRCTREADY; + input MCAPCLK; + input MCAPPERST0B; + input MCAPPERST1B; + input MGMTRESETN; + input MGMTSTICKYRESETN; + input [143:0] MICOMPLETIONRAMREADDATA; + input [143:0] MIREPLAYRAMREADDATA; + input [143:0] MIREQUESTRAMREADDATA; + input PCIECQNPREQ; + input PIPECLK; + input [5:0] PIPEEQFS; + input [5:0] PIPEEQLF; + input PIPERESETN; + input [1:0] PIPERX0CHARISK; + input [31:0] PIPERX0DATA; + input PIPERX0DATAVALID; + input PIPERX0ELECIDLE; + input PIPERX0EQDONE; + input PIPERX0EQLPADAPTDONE; + input PIPERX0EQLPLFFSSEL; + input [17:0] PIPERX0EQLPNEWTXCOEFFORPRESET; + input PIPERX0PHYSTATUS; + input PIPERX0STARTBLOCK; + input [2:0] PIPERX0STATUS; + input [1:0] PIPERX0SYNCHEADER; + input PIPERX0VALID; + input [1:0] PIPERX1CHARISK; + input [31:0] PIPERX1DATA; + input PIPERX1DATAVALID; + input PIPERX1ELECIDLE; + input PIPERX1EQDONE; + input PIPERX1EQLPADAPTDONE; + input PIPERX1EQLPLFFSSEL; + input [17:0] PIPERX1EQLPNEWTXCOEFFORPRESET; + input PIPERX1PHYSTATUS; + input PIPERX1STARTBLOCK; + input [2:0] PIPERX1STATUS; + input [1:0] PIPERX1SYNCHEADER; + input PIPERX1VALID; + input [1:0] PIPERX2CHARISK; + input [31:0] PIPERX2DATA; + input PIPERX2DATAVALID; + input PIPERX2ELECIDLE; + input PIPERX2EQDONE; + input PIPERX2EQLPADAPTDONE; + input PIPERX2EQLPLFFSSEL; + input [17:0] PIPERX2EQLPNEWTXCOEFFORPRESET; + input PIPERX2PHYSTATUS; + input PIPERX2STARTBLOCK; + input [2:0] PIPERX2STATUS; + input [1:0] PIPERX2SYNCHEADER; + input PIPERX2VALID; + input [1:0] PIPERX3CHARISK; + input [31:0] PIPERX3DATA; + input PIPERX3DATAVALID; + input PIPERX3ELECIDLE; + input PIPERX3EQDONE; + input PIPERX3EQLPADAPTDONE; + input PIPERX3EQLPLFFSSEL; + input [17:0] PIPERX3EQLPNEWTXCOEFFORPRESET; + input PIPERX3PHYSTATUS; + input PIPERX3STARTBLOCK; + input [2:0] PIPERX3STATUS; + input [1:0] PIPERX3SYNCHEADER; + input PIPERX3VALID; + input [1:0] PIPERX4CHARISK; + input [31:0] PIPERX4DATA; + input PIPERX4DATAVALID; + input PIPERX4ELECIDLE; + input PIPERX4EQDONE; + input PIPERX4EQLPADAPTDONE; + input PIPERX4EQLPLFFSSEL; + input [17:0] PIPERX4EQLPNEWTXCOEFFORPRESET; + input PIPERX4PHYSTATUS; + input PIPERX4STARTBLOCK; + input [2:0] PIPERX4STATUS; + input [1:0] PIPERX4SYNCHEADER; + input PIPERX4VALID; + input [1:0] PIPERX5CHARISK; + input [31:0] PIPERX5DATA; + input PIPERX5DATAVALID; + input PIPERX5ELECIDLE; + input PIPERX5EQDONE; + input PIPERX5EQLPADAPTDONE; + input PIPERX5EQLPLFFSSEL; + input [17:0] PIPERX5EQLPNEWTXCOEFFORPRESET; + input PIPERX5PHYSTATUS; + input PIPERX5STARTBLOCK; + input [2:0] PIPERX5STATUS; + input [1:0] PIPERX5SYNCHEADER; + input PIPERX5VALID; + input [1:0] PIPERX6CHARISK; + input [31:0] PIPERX6DATA; + input PIPERX6DATAVALID; + input PIPERX6ELECIDLE; + input PIPERX6EQDONE; + input PIPERX6EQLPADAPTDONE; + input PIPERX6EQLPLFFSSEL; + input [17:0] PIPERX6EQLPNEWTXCOEFFORPRESET; + input PIPERX6PHYSTATUS; + input PIPERX6STARTBLOCK; + input [2:0] PIPERX6STATUS; + input [1:0] PIPERX6SYNCHEADER; + input PIPERX6VALID; + input [1:0] PIPERX7CHARISK; + input [31:0] PIPERX7DATA; + input PIPERX7DATAVALID; + input PIPERX7ELECIDLE; + input PIPERX7EQDONE; + input PIPERX7EQLPADAPTDONE; + input PIPERX7EQLPLFFSSEL; + input [17:0] PIPERX7EQLPNEWTXCOEFFORPRESET; + input PIPERX7PHYSTATUS; + input PIPERX7STARTBLOCK; + input [2:0] PIPERX7STATUS; + input [1:0] PIPERX7SYNCHEADER; + input PIPERX7VALID; + input [17:0] PIPETX0EQCOEFF; + input PIPETX0EQDONE; + input [17:0] PIPETX1EQCOEFF; + input PIPETX1EQDONE; + input [17:0] PIPETX2EQCOEFF; + input PIPETX2EQDONE; + input [17:0] PIPETX3EQCOEFF; + input PIPETX3EQDONE; + input [17:0] PIPETX4EQCOEFF; + input PIPETX4EQDONE; + input [17:0] PIPETX5EQCOEFF; + input PIPETX5EQDONE; + input [17:0] PIPETX6EQCOEFF; + input PIPETX6EQDONE; + input [17:0] PIPETX7EQCOEFF; + input PIPETX7EQDONE; + input PLEQRESETEIEOSCOUNT; + input PLGEN2UPSTREAMPREFERDEEMPH; + input RESETN; + input [255:0] SAXISCCTDATA; + input [7:0] SAXISCCTKEEP; + input SAXISCCTLAST; + input [32:0] SAXISCCTUSER; + input SAXISCCTVALID; + input [255:0] SAXISRQTDATA; + input [7:0] SAXISRQTKEEP; + input SAXISRQTLAST; + input [59:0] SAXISRQTUSER; + input SAXISRQTVALID; + input [31:0] SPAREIN; + input USERCLK; +endmodule + +module PCIE40E4 (...); + parameter ARI_CAP_ENABLE = "FALSE"; + parameter AUTO_FLR_RESPONSE = "FALSE"; + parameter [1:0] AXISTEN_IF_CC_ALIGNMENT_MODE = 2'h0; + parameter [23:0] AXISTEN_IF_COMPL_TIMEOUT_REG0 = 24'hBEBC20; + parameter [27:0] AXISTEN_IF_COMPL_TIMEOUT_REG1 = 28'h2FAF080; + parameter [1:0] AXISTEN_IF_CQ_ALIGNMENT_MODE = 2'h0; + parameter AXISTEN_IF_CQ_EN_POISONED_MEM_WR = "FALSE"; + parameter AXISTEN_IF_ENABLE_256_TAGS = "FALSE"; + parameter AXISTEN_IF_ENABLE_CLIENT_TAG = "FALSE"; + parameter AXISTEN_IF_ENABLE_INTERNAL_MSIX_TABLE = "FALSE"; + parameter AXISTEN_IF_ENABLE_MESSAGE_RID_CHECK = "TRUE"; + parameter [17:0] AXISTEN_IF_ENABLE_MSG_ROUTE = 18'h00000; + parameter AXISTEN_IF_ENABLE_RX_MSG_INTFC = "FALSE"; + parameter AXISTEN_IF_EXT_512 = "FALSE"; + parameter AXISTEN_IF_EXT_512_CC_STRADDLE = "FALSE"; + parameter AXISTEN_IF_EXT_512_CQ_STRADDLE = "FALSE"; + parameter AXISTEN_IF_EXT_512_RC_STRADDLE = "FALSE"; + parameter AXISTEN_IF_EXT_512_RQ_STRADDLE = "FALSE"; + parameter AXISTEN_IF_LEGACY_MODE_ENABLE = "FALSE"; + parameter AXISTEN_IF_MSIX_FROM_RAM_PIPELINE = "FALSE"; + parameter AXISTEN_IF_MSIX_RX_PARITY_EN = "TRUE"; + parameter AXISTEN_IF_MSIX_TO_RAM_PIPELINE = "FALSE"; + parameter [1:0] AXISTEN_IF_RC_ALIGNMENT_MODE = 2'h0; + parameter AXISTEN_IF_RC_STRADDLE = "FALSE"; + parameter [1:0] AXISTEN_IF_RQ_ALIGNMENT_MODE = 2'h0; + parameter AXISTEN_IF_RX_PARITY_EN = "TRUE"; + parameter AXISTEN_IF_SIM_SHORT_CPL_TIMEOUT = "FALSE"; + parameter AXISTEN_IF_TX_PARITY_EN = "TRUE"; + parameter [1:0] AXISTEN_IF_WIDTH = 2'h2; + parameter CFG_BYPASS_MODE_ENABLE = "FALSE"; + parameter CRM_CORE_CLK_FREQ_500 = "TRUE"; + parameter [1:0] CRM_USER_CLK_FREQ = 2'h2; + parameter [15:0] DEBUG_AXI4ST_SPARE = 16'h0000; + parameter [7:0] DEBUG_AXIST_DISABLE_FEATURE_BIT = 8'h00; + parameter [3:0] DEBUG_CAR_SPARE = 4'h0; + parameter [15:0] DEBUG_CFG_SPARE = 16'h0000; + parameter [15:0] DEBUG_LL_SPARE = 16'h0000; + parameter DEBUG_PL_DISABLE_LES_UPDATE_ON_DEFRAMER_ERROR = "FALSE"; + parameter DEBUG_PL_DISABLE_LES_UPDATE_ON_SKP_ERROR = "FALSE"; + parameter DEBUG_PL_DISABLE_LES_UPDATE_ON_SKP_PARITY_ERROR = "FALSE"; + parameter DEBUG_PL_DISABLE_REC_ENTRY_ON_DYNAMIC_DSKEW_FAIL = "FALSE"; + parameter DEBUG_PL_DISABLE_REC_ENTRY_ON_RX_BUFFER_UNDER_OVER_FLOW = "FALSE"; + parameter DEBUG_PL_DISABLE_SCRAMBLING = "FALSE"; + parameter DEBUG_PL_SIM_RESET_LFSR = "FALSE"; + parameter [15:0] DEBUG_PL_SPARE = 16'h0000; + parameter DEBUG_TL_DISABLE_FC_TIMEOUT = "FALSE"; + parameter DEBUG_TL_DISABLE_RX_TLP_ORDER_CHECKS = "FALSE"; + parameter [15:0] DEBUG_TL_SPARE = 16'h0000; + parameter [7:0] DNSTREAM_LINK_NUM = 8'h00; + parameter DSN_CAP_ENABLE = "FALSE"; + parameter EXTENDED_CFG_EXTEND_INTERFACE_ENABLE = "FALSE"; + parameter HEADER_TYPE_OVERRIDE = "FALSE"; + parameter IS_SWITCH_PORT = "FALSE"; + parameter LEGACY_CFG_EXTEND_INTERFACE_ENABLE = "FALSE"; + parameter [8:0] LL_ACK_TIMEOUT = 9'h000; + parameter LL_ACK_TIMEOUT_EN = "FALSE"; + parameter integer LL_ACK_TIMEOUT_FUNC = 0; + parameter LL_DISABLE_SCHED_TX_NAK = "FALSE"; + parameter LL_REPLAY_FROM_RAM_PIPELINE = "FALSE"; + parameter [8:0] LL_REPLAY_TIMEOUT = 9'h000; + parameter LL_REPLAY_TIMEOUT_EN = "FALSE"; + parameter integer LL_REPLAY_TIMEOUT_FUNC = 0; + parameter LL_REPLAY_TO_RAM_PIPELINE = "FALSE"; + parameter LL_RX_TLP_PARITY_GEN = "TRUE"; + parameter LL_TX_TLP_PARITY_CHK = "TRUE"; + parameter [15:0] LL_USER_SPARE = 16'h0000; + parameter [9:0] LTR_TX_MESSAGE_MINIMUM_INTERVAL = 10'h250; + parameter LTR_TX_MESSAGE_ON_FUNC_POWER_STATE_CHANGE = "FALSE"; + parameter LTR_TX_MESSAGE_ON_LTR_ENABLE = "FALSE"; + parameter [11:0] MCAP_CAP_NEXTPTR = 12'h000; + parameter MCAP_CONFIGURE_OVERRIDE = "FALSE"; + parameter MCAP_ENABLE = "FALSE"; + parameter MCAP_EOS_DESIGN_SWITCH = "FALSE"; + parameter [31:0] MCAP_FPGA_BITSTREAM_VERSION = 32'h00000000; + parameter MCAP_GATE_IO_ENABLE_DESIGN_SWITCH = "FALSE"; + parameter MCAP_GATE_MEM_ENABLE_DESIGN_SWITCH = "FALSE"; + parameter MCAP_INPUT_GATE_DESIGN_SWITCH = "FALSE"; + parameter MCAP_INTERRUPT_ON_MCAP_EOS = "FALSE"; + parameter MCAP_INTERRUPT_ON_MCAP_ERROR = "FALSE"; + parameter [15:0] MCAP_VSEC_ID = 16'h0000; + parameter [11:0] MCAP_VSEC_LEN = 12'h02C; + parameter [3:0] MCAP_VSEC_REV = 4'h0; + parameter PF0_AER_CAP_ECRC_GEN_AND_CHECK_CAPABLE = "FALSE"; + parameter [11:0] PF0_AER_CAP_NEXTPTR = 12'h000; + parameter [11:0] PF0_ARI_CAP_NEXTPTR = 12'h000; + parameter [7:0] PF0_ARI_CAP_NEXT_FUNC = 8'h00; + parameter [3:0] PF0_ARI_CAP_VER = 4'h1; + parameter [5:0] PF0_BAR0_APERTURE_SIZE = 6'h03; + parameter [2:0] PF0_BAR0_CONTROL = 3'h4; + parameter [4:0] PF0_BAR1_APERTURE_SIZE = 5'h00; + parameter [2:0] PF0_BAR1_CONTROL = 3'h0; + parameter [5:0] PF0_BAR2_APERTURE_SIZE = 6'h03; + parameter [2:0] PF0_BAR2_CONTROL = 3'h4; + parameter [4:0] PF0_BAR3_APERTURE_SIZE = 5'h03; + parameter [2:0] PF0_BAR3_CONTROL = 3'h0; + parameter [5:0] PF0_BAR4_APERTURE_SIZE = 6'h03; + parameter [2:0] PF0_BAR4_CONTROL = 3'h4; + parameter [4:0] PF0_BAR5_APERTURE_SIZE = 5'h03; + parameter [2:0] PF0_BAR5_CONTROL = 3'h0; + parameter [7:0] PF0_CAPABILITY_POINTER = 8'h80; + parameter [23:0] PF0_CLASS_CODE = 24'h000000; + parameter PF0_DEV_CAP2_128B_CAS_ATOMIC_COMPLETER_SUPPORT = "TRUE"; + parameter PF0_DEV_CAP2_32B_ATOMIC_COMPLETER_SUPPORT = "TRUE"; + parameter PF0_DEV_CAP2_64B_ATOMIC_COMPLETER_SUPPORT = "TRUE"; + parameter PF0_DEV_CAP2_ARI_FORWARD_ENABLE = "FALSE"; + parameter PF0_DEV_CAP2_CPL_TIMEOUT_DISABLE = "TRUE"; + parameter PF0_DEV_CAP2_LTR_SUPPORT = "TRUE"; + parameter [1:0] PF0_DEV_CAP2_OBFF_SUPPORT = 2'h0; + parameter PF0_DEV_CAP2_TPH_COMPLETER_SUPPORT = "FALSE"; + parameter integer PF0_DEV_CAP_ENDPOINT_L0S_LATENCY = 0; + parameter integer PF0_DEV_CAP_ENDPOINT_L1_LATENCY = 0; + parameter PF0_DEV_CAP_EXT_TAG_SUPPORTED = "TRUE"; + parameter PF0_DEV_CAP_FUNCTION_LEVEL_RESET_CAPABLE = "TRUE"; + parameter [2:0] PF0_DEV_CAP_MAX_PAYLOAD_SIZE = 3'h3; + parameter [11:0] PF0_DSN_CAP_NEXTPTR = 12'h10C; + parameter [4:0] PF0_EXPANSION_ROM_APERTURE_SIZE = 5'h03; + parameter PF0_EXPANSION_ROM_ENABLE = "FALSE"; + parameter [2:0] PF0_INTERRUPT_PIN = 3'h1; + parameter integer PF0_LINK_CAP_ASPM_SUPPORT = 0; + parameter integer PF0_LINK_CAP_L0S_EXIT_LATENCY_COMCLK_GEN1 = 7; + parameter integer PF0_LINK_CAP_L0S_EXIT_LATENCY_COMCLK_GEN2 = 7; + parameter integer PF0_LINK_CAP_L0S_EXIT_LATENCY_COMCLK_GEN3 = 7; + parameter integer PF0_LINK_CAP_L0S_EXIT_LATENCY_COMCLK_GEN4 = 7; + parameter integer PF0_LINK_CAP_L0S_EXIT_LATENCY_GEN1 = 7; + parameter integer PF0_LINK_CAP_L0S_EXIT_LATENCY_GEN2 = 7; + parameter integer PF0_LINK_CAP_L0S_EXIT_LATENCY_GEN3 = 7; + parameter integer PF0_LINK_CAP_L0S_EXIT_LATENCY_GEN4 = 7; + parameter integer PF0_LINK_CAP_L1_EXIT_LATENCY_COMCLK_GEN1 = 7; + parameter integer PF0_LINK_CAP_L1_EXIT_LATENCY_COMCLK_GEN2 = 7; + parameter integer PF0_LINK_CAP_L1_EXIT_LATENCY_COMCLK_GEN3 = 7; + parameter integer PF0_LINK_CAP_L1_EXIT_LATENCY_COMCLK_GEN4 = 7; + parameter integer PF0_LINK_CAP_L1_EXIT_LATENCY_GEN1 = 7; + parameter integer PF0_LINK_CAP_L1_EXIT_LATENCY_GEN2 = 7; + parameter integer PF0_LINK_CAP_L1_EXIT_LATENCY_GEN3 = 7; + parameter integer PF0_LINK_CAP_L1_EXIT_LATENCY_GEN4 = 7; + parameter [0:0] PF0_LINK_CONTROL_RCB = 1'h0; + parameter PF0_LINK_STATUS_SLOT_CLOCK_CONFIG = "TRUE"; + parameter [9:0] PF0_LTR_CAP_MAX_NOSNOOP_LAT = 10'h000; + parameter [9:0] PF0_LTR_CAP_MAX_SNOOP_LAT = 10'h000; + parameter [11:0] PF0_LTR_CAP_NEXTPTR = 12'h000; + parameter [3:0] PF0_LTR_CAP_VER = 4'h1; + parameter [7:0] PF0_MSIX_CAP_NEXTPTR = 8'h00; + parameter integer PF0_MSIX_CAP_PBA_BIR = 0; + parameter [28:0] PF0_MSIX_CAP_PBA_OFFSET = 29'h00000050; + parameter integer PF0_MSIX_CAP_TABLE_BIR = 0; + parameter [28:0] PF0_MSIX_CAP_TABLE_OFFSET = 29'h00000040; + parameter [10:0] PF0_MSIX_CAP_TABLE_SIZE = 11'h000; + parameter [5:0] PF0_MSIX_VECTOR_COUNT = 6'h04; + parameter integer PF0_MSI_CAP_MULTIMSGCAP = 0; + parameter [7:0] PF0_MSI_CAP_NEXTPTR = 8'h00; + parameter PF0_MSI_CAP_PERVECMASKCAP = "FALSE"; + parameter [7:0] PF0_PCIE_CAP_NEXTPTR = 8'h00; + parameter [7:0] PF0_PM_CAP_ID = 8'h01; + parameter [7:0] PF0_PM_CAP_NEXTPTR = 8'h00; + parameter PF0_PM_CAP_PMESUPPORT_D0 = "TRUE"; + parameter PF0_PM_CAP_PMESUPPORT_D1 = "TRUE"; + parameter PF0_PM_CAP_PMESUPPORT_D3HOT = "TRUE"; + parameter PF0_PM_CAP_SUPP_D1_STATE = "TRUE"; + parameter [2:0] PF0_PM_CAP_VER_ID = 3'h3; + parameter PF0_PM_CSR_NOSOFTRESET = "TRUE"; + parameter [11:0] PF0_SECONDARY_PCIE_CAP_NEXTPTR = 12'h000; + parameter PF0_SRIOV_ARI_CAPBL_HIER_PRESERVED = "FALSE"; + parameter [5:0] PF0_SRIOV_BAR0_APERTURE_SIZE = 6'h03; + parameter [2:0] PF0_SRIOV_BAR0_CONTROL = 3'h4; + parameter [4:0] PF0_SRIOV_BAR1_APERTURE_SIZE = 5'h00; + parameter [2:0] PF0_SRIOV_BAR1_CONTROL = 3'h0; + parameter [5:0] PF0_SRIOV_BAR2_APERTURE_SIZE = 6'h03; + parameter [2:0] PF0_SRIOV_BAR2_CONTROL = 3'h4; + parameter [4:0] PF0_SRIOV_BAR3_APERTURE_SIZE = 5'h03; + parameter [2:0] PF0_SRIOV_BAR3_CONTROL = 3'h0; + parameter [5:0] PF0_SRIOV_BAR4_APERTURE_SIZE = 6'h03; + parameter [2:0] PF0_SRIOV_BAR4_CONTROL = 3'h4; + parameter [4:0] PF0_SRIOV_BAR5_APERTURE_SIZE = 5'h03; + parameter [2:0] PF0_SRIOV_BAR5_CONTROL = 3'h0; + parameter [15:0] PF0_SRIOV_CAP_INITIAL_VF = 16'h0000; + parameter [11:0] PF0_SRIOV_CAP_NEXTPTR = 12'h000; + parameter [15:0] PF0_SRIOV_CAP_TOTAL_VF = 16'h0000; + parameter [3:0] PF0_SRIOV_CAP_VER = 4'h1; + parameter [15:0] PF0_SRIOV_FIRST_VF_OFFSET = 16'h0000; + parameter [15:0] PF0_SRIOV_FUNC_DEP_LINK = 16'h0000; + parameter [31:0] PF0_SRIOV_SUPPORTED_PAGE_SIZE = 32'h00000000; + parameter [15:0] PF0_SRIOV_VF_DEVICE_ID = 16'h0000; + parameter PF0_TPHR_CAP_DEV_SPECIFIC_MODE = "TRUE"; + parameter PF0_TPHR_CAP_ENABLE = "FALSE"; + parameter PF0_TPHR_CAP_INT_VEC_MODE = "TRUE"; + parameter [11:0] PF0_TPHR_CAP_NEXTPTR = 12'h000; + parameter [2:0] PF0_TPHR_CAP_ST_MODE_SEL = 3'h0; + parameter [1:0] PF0_TPHR_CAP_ST_TABLE_LOC = 2'h0; + parameter [10:0] PF0_TPHR_CAP_ST_TABLE_SIZE = 11'h000; + parameter [3:0] PF0_TPHR_CAP_VER = 4'h1; + parameter PF0_VC_CAP_ENABLE = "FALSE"; + parameter [11:0] PF0_VC_CAP_NEXTPTR = 12'h000; + parameter [3:0] PF0_VC_CAP_VER = 4'h1; + parameter [11:0] PF1_AER_CAP_NEXTPTR = 12'h000; + parameter [11:0] PF1_ARI_CAP_NEXTPTR = 12'h000; + parameter [7:0] PF1_ARI_CAP_NEXT_FUNC = 8'h00; + parameter [5:0] PF1_BAR0_APERTURE_SIZE = 6'h03; + parameter [2:0] PF1_BAR0_CONTROL = 3'h4; + parameter [4:0] PF1_BAR1_APERTURE_SIZE = 5'h00; + parameter [2:0] PF1_BAR1_CONTROL = 3'h0; + parameter [5:0] PF1_BAR2_APERTURE_SIZE = 6'h03; + parameter [2:0] PF1_BAR2_CONTROL = 3'h4; + parameter [4:0] PF1_BAR3_APERTURE_SIZE = 5'h03; + parameter [2:0] PF1_BAR3_CONTROL = 3'h0; + parameter [5:0] PF1_BAR4_APERTURE_SIZE = 6'h03; + parameter [2:0] PF1_BAR4_CONTROL = 3'h4; + parameter [4:0] PF1_BAR5_APERTURE_SIZE = 5'h03; + parameter [2:0] PF1_BAR5_CONTROL = 3'h0; + parameter [7:0] PF1_CAPABILITY_POINTER = 8'h80; + parameter [23:0] PF1_CLASS_CODE = 24'h000000; + parameter [2:0] PF1_DEV_CAP_MAX_PAYLOAD_SIZE = 3'h3; + parameter [11:0] PF1_DSN_CAP_NEXTPTR = 12'h10C; + parameter [4:0] PF1_EXPANSION_ROM_APERTURE_SIZE = 5'h03; + parameter PF1_EXPANSION_ROM_ENABLE = "FALSE"; + parameter [2:0] PF1_INTERRUPT_PIN = 3'h1; + parameter [7:0] PF1_MSIX_CAP_NEXTPTR = 8'h00; + parameter integer PF1_MSIX_CAP_PBA_BIR = 0; + parameter [28:0] PF1_MSIX_CAP_PBA_OFFSET = 29'h00000050; + parameter integer PF1_MSIX_CAP_TABLE_BIR = 0; + parameter [28:0] PF1_MSIX_CAP_TABLE_OFFSET = 29'h00000040; + parameter [10:0] PF1_MSIX_CAP_TABLE_SIZE = 11'h000; + parameter integer PF1_MSI_CAP_MULTIMSGCAP = 0; + parameter [7:0] PF1_MSI_CAP_NEXTPTR = 8'h00; + parameter PF1_MSI_CAP_PERVECMASKCAP = "FALSE"; + parameter [7:0] PF1_PCIE_CAP_NEXTPTR = 8'h00; + parameter [7:0] PF1_PM_CAP_NEXTPTR = 8'h00; + parameter PF1_SRIOV_ARI_CAPBL_HIER_PRESERVED = "FALSE"; + parameter [5:0] PF1_SRIOV_BAR0_APERTURE_SIZE = 6'h03; + parameter [2:0] PF1_SRIOV_BAR0_CONTROL = 3'h4; + parameter [4:0] PF1_SRIOV_BAR1_APERTURE_SIZE = 5'h00; + parameter [2:0] PF1_SRIOV_BAR1_CONTROL = 3'h0; + parameter [5:0] PF1_SRIOV_BAR2_APERTURE_SIZE = 6'h03; + parameter [2:0] PF1_SRIOV_BAR2_CONTROL = 3'h4; + parameter [4:0] PF1_SRIOV_BAR3_APERTURE_SIZE = 5'h03; + parameter [2:0] PF1_SRIOV_BAR3_CONTROL = 3'h0; + parameter [5:0] PF1_SRIOV_BAR4_APERTURE_SIZE = 6'h03; + parameter [2:0] PF1_SRIOV_BAR4_CONTROL = 3'h4; + parameter [4:0] PF1_SRIOV_BAR5_APERTURE_SIZE = 5'h03; + parameter [2:0] PF1_SRIOV_BAR5_CONTROL = 3'h0; + parameter [15:0] PF1_SRIOV_CAP_INITIAL_VF = 16'h0000; + parameter [11:0] PF1_SRIOV_CAP_NEXTPTR = 12'h000; + parameter [15:0] PF1_SRIOV_CAP_TOTAL_VF = 16'h0000; + parameter [3:0] PF1_SRIOV_CAP_VER = 4'h1; + parameter [15:0] PF1_SRIOV_FIRST_VF_OFFSET = 16'h0000; + parameter [15:0] PF1_SRIOV_FUNC_DEP_LINK = 16'h0000; + parameter [31:0] PF1_SRIOV_SUPPORTED_PAGE_SIZE = 32'h00000000; + parameter [15:0] PF1_SRIOV_VF_DEVICE_ID = 16'h0000; + parameter [11:0] PF1_TPHR_CAP_NEXTPTR = 12'h000; + parameter [2:0] PF1_TPHR_CAP_ST_MODE_SEL = 3'h0; + parameter [11:0] PF2_AER_CAP_NEXTPTR = 12'h000; + parameter [11:0] PF2_ARI_CAP_NEXTPTR = 12'h000; + parameter [7:0] PF2_ARI_CAP_NEXT_FUNC = 8'h00; + parameter [5:0] PF2_BAR0_APERTURE_SIZE = 6'h03; + parameter [2:0] PF2_BAR0_CONTROL = 3'h4; + parameter [4:0] PF2_BAR1_APERTURE_SIZE = 5'h00; + parameter [2:0] PF2_BAR1_CONTROL = 3'h0; + parameter [5:0] PF2_BAR2_APERTURE_SIZE = 6'h03; + parameter [2:0] PF2_BAR2_CONTROL = 3'h4; + parameter [4:0] PF2_BAR3_APERTURE_SIZE = 5'h03; + parameter [2:0] PF2_BAR3_CONTROL = 3'h0; + parameter [5:0] PF2_BAR4_APERTURE_SIZE = 6'h03; + parameter [2:0] PF2_BAR4_CONTROL = 3'h4; + parameter [4:0] PF2_BAR5_APERTURE_SIZE = 5'h03; + parameter [2:0] PF2_BAR5_CONTROL = 3'h0; + parameter [7:0] PF2_CAPABILITY_POINTER = 8'h80; + parameter [23:0] PF2_CLASS_CODE = 24'h000000; + parameter [2:0] PF2_DEV_CAP_MAX_PAYLOAD_SIZE = 3'h3; + parameter [11:0] PF2_DSN_CAP_NEXTPTR = 12'h10C; + parameter [4:0] PF2_EXPANSION_ROM_APERTURE_SIZE = 5'h03; + parameter PF2_EXPANSION_ROM_ENABLE = "FALSE"; + parameter [2:0] PF2_INTERRUPT_PIN = 3'h1; + parameter [7:0] PF2_MSIX_CAP_NEXTPTR = 8'h00; + parameter integer PF2_MSIX_CAP_PBA_BIR = 0; + parameter [28:0] PF2_MSIX_CAP_PBA_OFFSET = 29'h00000050; + parameter integer PF2_MSIX_CAP_TABLE_BIR = 0; + parameter [28:0] PF2_MSIX_CAP_TABLE_OFFSET = 29'h00000040; + parameter [10:0] PF2_MSIX_CAP_TABLE_SIZE = 11'h000; + parameter integer PF2_MSI_CAP_MULTIMSGCAP = 0; + parameter [7:0] PF2_MSI_CAP_NEXTPTR = 8'h00; + parameter PF2_MSI_CAP_PERVECMASKCAP = "FALSE"; + parameter [7:0] PF2_PCIE_CAP_NEXTPTR = 8'h00; + parameter [7:0] PF2_PM_CAP_NEXTPTR = 8'h00; + parameter PF2_SRIOV_ARI_CAPBL_HIER_PRESERVED = "FALSE"; + parameter [5:0] PF2_SRIOV_BAR0_APERTURE_SIZE = 6'h03; + parameter [2:0] PF2_SRIOV_BAR0_CONTROL = 3'h4; + parameter [4:0] PF2_SRIOV_BAR1_APERTURE_SIZE = 5'h00; + parameter [2:0] PF2_SRIOV_BAR1_CONTROL = 3'h0; + parameter [5:0] PF2_SRIOV_BAR2_APERTURE_SIZE = 6'h03; + parameter [2:0] PF2_SRIOV_BAR2_CONTROL = 3'h4; + parameter [4:0] PF2_SRIOV_BAR3_APERTURE_SIZE = 5'h03; + parameter [2:0] PF2_SRIOV_BAR3_CONTROL = 3'h0; + parameter [5:0] PF2_SRIOV_BAR4_APERTURE_SIZE = 6'h03; + parameter [2:0] PF2_SRIOV_BAR4_CONTROL = 3'h4; + parameter [4:0] PF2_SRIOV_BAR5_APERTURE_SIZE = 5'h03; + parameter [2:0] PF2_SRIOV_BAR5_CONTROL = 3'h0; + parameter [15:0] PF2_SRIOV_CAP_INITIAL_VF = 16'h0000; + parameter [11:0] PF2_SRIOV_CAP_NEXTPTR = 12'h000; + parameter [15:0] PF2_SRIOV_CAP_TOTAL_VF = 16'h0000; + parameter [3:0] PF2_SRIOV_CAP_VER = 4'h1; + parameter [15:0] PF2_SRIOV_FIRST_VF_OFFSET = 16'h0000; + parameter [15:0] PF2_SRIOV_FUNC_DEP_LINK = 16'h0000; + parameter [31:0] PF2_SRIOV_SUPPORTED_PAGE_SIZE = 32'h00000000; + parameter [15:0] PF2_SRIOV_VF_DEVICE_ID = 16'h0000; + parameter [11:0] PF2_TPHR_CAP_NEXTPTR = 12'h000; + parameter [2:0] PF2_TPHR_CAP_ST_MODE_SEL = 3'h0; + parameter [11:0] PF3_AER_CAP_NEXTPTR = 12'h000; + parameter [11:0] PF3_ARI_CAP_NEXTPTR = 12'h000; + parameter [7:0] PF3_ARI_CAP_NEXT_FUNC = 8'h00; + parameter [5:0] PF3_BAR0_APERTURE_SIZE = 6'h03; + parameter [2:0] PF3_BAR0_CONTROL = 3'h4; + parameter [4:0] PF3_BAR1_APERTURE_SIZE = 5'h00; + parameter [2:0] PF3_BAR1_CONTROL = 3'h0; + parameter [5:0] PF3_BAR2_APERTURE_SIZE = 6'h03; + parameter [2:0] PF3_BAR2_CONTROL = 3'h4; + parameter [4:0] PF3_BAR3_APERTURE_SIZE = 5'h03; + parameter [2:0] PF3_BAR3_CONTROL = 3'h0; + parameter [5:0] PF3_BAR4_APERTURE_SIZE = 6'h03; + parameter [2:0] PF3_BAR4_CONTROL = 3'h4; + parameter [4:0] PF3_BAR5_APERTURE_SIZE = 5'h03; + parameter [2:0] PF3_BAR5_CONTROL = 3'h0; + parameter [7:0] PF3_CAPABILITY_POINTER = 8'h80; + parameter [23:0] PF3_CLASS_CODE = 24'h000000; + parameter [2:0] PF3_DEV_CAP_MAX_PAYLOAD_SIZE = 3'h3; + parameter [11:0] PF3_DSN_CAP_NEXTPTR = 12'h10C; + parameter [4:0] PF3_EXPANSION_ROM_APERTURE_SIZE = 5'h03; + parameter PF3_EXPANSION_ROM_ENABLE = "FALSE"; + parameter [2:0] PF3_INTERRUPT_PIN = 3'h1; + parameter [7:0] PF3_MSIX_CAP_NEXTPTR = 8'h00; + parameter integer PF3_MSIX_CAP_PBA_BIR = 0; + parameter [28:0] PF3_MSIX_CAP_PBA_OFFSET = 29'h00000050; + parameter integer PF3_MSIX_CAP_TABLE_BIR = 0; + parameter [28:0] PF3_MSIX_CAP_TABLE_OFFSET = 29'h00000040; + parameter [10:0] PF3_MSIX_CAP_TABLE_SIZE = 11'h000; + parameter integer PF3_MSI_CAP_MULTIMSGCAP = 0; + parameter [7:0] PF3_MSI_CAP_NEXTPTR = 8'h00; + parameter PF3_MSI_CAP_PERVECMASKCAP = "FALSE"; + parameter [7:0] PF3_PCIE_CAP_NEXTPTR = 8'h00; + parameter [7:0] PF3_PM_CAP_NEXTPTR = 8'h00; + parameter PF3_SRIOV_ARI_CAPBL_HIER_PRESERVED = "FALSE"; + parameter [5:0] PF3_SRIOV_BAR0_APERTURE_SIZE = 6'h03; + parameter [2:0] PF3_SRIOV_BAR0_CONTROL = 3'h4; + parameter [4:0] PF3_SRIOV_BAR1_APERTURE_SIZE = 5'h00; + parameter [2:0] PF3_SRIOV_BAR1_CONTROL = 3'h0; + parameter [5:0] PF3_SRIOV_BAR2_APERTURE_SIZE = 6'h03; + parameter [2:0] PF3_SRIOV_BAR2_CONTROL = 3'h4; + parameter [4:0] PF3_SRIOV_BAR3_APERTURE_SIZE = 5'h03; + parameter [2:0] PF3_SRIOV_BAR3_CONTROL = 3'h0; + parameter [5:0] PF3_SRIOV_BAR4_APERTURE_SIZE = 6'h03; + parameter [2:0] PF3_SRIOV_BAR4_CONTROL = 3'h4; + parameter [4:0] PF3_SRIOV_BAR5_APERTURE_SIZE = 5'h03; + parameter [2:0] PF3_SRIOV_BAR5_CONTROL = 3'h0; + parameter [15:0] PF3_SRIOV_CAP_INITIAL_VF = 16'h0000; + parameter [11:0] PF3_SRIOV_CAP_NEXTPTR = 12'h000; + parameter [15:0] PF3_SRIOV_CAP_TOTAL_VF = 16'h0000; + parameter [3:0] PF3_SRIOV_CAP_VER = 4'h1; + parameter [15:0] PF3_SRIOV_FIRST_VF_OFFSET = 16'h0000; + parameter [15:0] PF3_SRIOV_FUNC_DEP_LINK = 16'h0000; + parameter [31:0] PF3_SRIOV_SUPPORTED_PAGE_SIZE = 32'h00000000; + parameter [15:0] PF3_SRIOV_VF_DEVICE_ID = 16'h0000; + parameter [11:0] PF3_TPHR_CAP_NEXTPTR = 12'h000; + parameter [2:0] PF3_TPHR_CAP_ST_MODE_SEL = 3'h0; + parameter PL_CFG_STATE_ROBUSTNESS_ENABLE = "TRUE"; + parameter PL_DEEMPH_SOURCE_SELECT = "TRUE"; + parameter PL_DESKEW_ON_SKIP_IN_GEN12 = "FALSE"; + parameter PL_DISABLE_AUTO_EQ_SPEED_CHANGE_TO_GEN3 = "FALSE"; + parameter PL_DISABLE_AUTO_EQ_SPEED_CHANGE_TO_GEN4 = "FALSE"; + parameter PL_DISABLE_AUTO_SPEED_CHANGE_TO_GEN2 = "FALSE"; + parameter PL_DISABLE_DC_BALANCE = "FALSE"; + parameter PL_DISABLE_EI_INFER_IN_L0 = "FALSE"; + parameter PL_DISABLE_LANE_REVERSAL = "FALSE"; + parameter [1:0] PL_DISABLE_LFSR_UPDATE_ON_SKP = 2'h0; + parameter PL_DISABLE_RETRAIN_ON_EB_ERROR = "FALSE"; + parameter PL_DISABLE_RETRAIN_ON_FRAMING_ERROR = "FALSE"; + parameter [15:0] PL_DISABLE_RETRAIN_ON_SPECIFIC_FRAMING_ERROR = 16'h0000; + parameter PL_DISABLE_UPCONFIG_CAPABLE = "FALSE"; + parameter [1:0] PL_EQ_ADAPT_DISABLE_COEFF_CHECK = 2'h0; + parameter [1:0] PL_EQ_ADAPT_DISABLE_PRESET_CHECK = 2'h0; + parameter [4:0] PL_EQ_ADAPT_ITER_COUNT = 5'h02; + parameter [1:0] PL_EQ_ADAPT_REJECT_RETRY_COUNT = 2'h1; + parameter [1:0] PL_EQ_BYPASS_PHASE23 = 2'h0; + parameter [5:0] PL_EQ_DEFAULT_RX_PRESET_HINT = 6'h33; + parameter [7:0] PL_EQ_DEFAULT_TX_PRESET = 8'h44; + parameter PL_EQ_DISABLE_MISMATCH_CHECK = "TRUE"; + parameter [1:0] PL_EQ_RX_ADAPT_EQ_PHASE0 = 2'h0; + parameter [1:0] PL_EQ_RX_ADAPT_EQ_PHASE1 = 2'h0; + parameter PL_EQ_SHORT_ADAPT_PHASE = "FALSE"; + parameter PL_EQ_TX_8G_EQ_TS2_ENABLE = "FALSE"; + parameter PL_EXIT_LOOPBACK_ON_EI_ENTRY = "TRUE"; + parameter PL_INFER_EI_DISABLE_LPBK_ACTIVE = "TRUE"; + parameter PL_INFER_EI_DISABLE_REC_RC = "FALSE"; + parameter PL_INFER_EI_DISABLE_REC_SPD = "FALSE"; + parameter [31:0] PL_LANE0_EQ_CONTROL = 32'h00003F00; + parameter [31:0] PL_LANE10_EQ_CONTROL = 32'h00003F00; + parameter [31:0] PL_LANE11_EQ_CONTROL = 32'h00003F00; + parameter [31:0] PL_LANE12_EQ_CONTROL = 32'h00003F00; + parameter [31:0] PL_LANE13_EQ_CONTROL = 32'h00003F00; + parameter [31:0] PL_LANE14_EQ_CONTROL = 32'h00003F00; + parameter [31:0] PL_LANE15_EQ_CONTROL = 32'h00003F00; + parameter [31:0] PL_LANE1_EQ_CONTROL = 32'h00003F00; + parameter [31:0] PL_LANE2_EQ_CONTROL = 32'h00003F00; + parameter [31:0] PL_LANE3_EQ_CONTROL = 32'h00003F00; + parameter [31:0] PL_LANE4_EQ_CONTROL = 32'h00003F00; + parameter [31:0] PL_LANE5_EQ_CONTROL = 32'h00003F00; + parameter [31:0] PL_LANE6_EQ_CONTROL = 32'h00003F00; + parameter [31:0] PL_LANE7_EQ_CONTROL = 32'h00003F00; + parameter [31:0] PL_LANE8_EQ_CONTROL = 32'h00003F00; + parameter [31:0] PL_LANE9_EQ_CONTROL = 32'h00003F00; + parameter [3:0] PL_LINK_CAP_MAX_LINK_SPEED = 4'h4; + parameter [4:0] PL_LINK_CAP_MAX_LINK_WIDTH = 5'h08; + parameter integer PL_N_FTS = 255; + parameter PL_QUIESCE_GUARANTEE_DISABLE = "FALSE"; + parameter PL_REDO_EQ_SOURCE_SELECT = "TRUE"; + parameter [7:0] PL_REPORT_ALL_PHY_ERRORS = 8'h00; + parameter [1:0] PL_RX_ADAPT_TIMER_CLWS_CLOBBER_TX_TS = 2'h0; + parameter [3:0] PL_RX_ADAPT_TIMER_CLWS_GEN3 = 4'h0; + parameter [3:0] PL_RX_ADAPT_TIMER_CLWS_GEN4 = 4'h0; + parameter [1:0] PL_RX_ADAPT_TIMER_RRL_CLOBBER_TX_TS = 2'h0; + parameter [3:0] PL_RX_ADAPT_TIMER_RRL_GEN3 = 4'h0; + parameter [3:0] PL_RX_ADAPT_TIMER_RRL_GEN4 = 4'h0; + parameter [1:0] PL_RX_L0S_EXIT_TO_RECOVERY = 2'h0; + parameter [1:0] PL_SIM_FAST_LINK_TRAINING = 2'h0; + parameter PL_SRIS_ENABLE = "FALSE"; + parameter [6:0] PL_SRIS_SKPOS_GEN_SPD_VEC = 7'h00; + parameter [6:0] PL_SRIS_SKPOS_REC_SPD_VEC = 7'h00; + parameter PL_UPSTREAM_FACING = "TRUE"; + parameter [15:0] PL_USER_SPARE = 16'h0000; + parameter [15:0] PM_ASPML0S_TIMEOUT = 16'h1500; + parameter [19:0] PM_ASPML1_ENTRY_DELAY = 20'h003E8; + parameter PM_ENABLE_L23_ENTRY = "FALSE"; + parameter PM_ENABLE_SLOT_POWER_CAPTURE = "TRUE"; + parameter [31:0] PM_L1_REENTRY_DELAY = 32'h00000100; + parameter [19:0] PM_PME_SERVICE_TIMEOUT_DELAY = 20'h00000; + parameter [15:0] PM_PME_TURNOFF_ACK_DELAY = 16'h0100; + parameter SIM_DEVICE = "ULTRASCALE_PLUS"; + parameter [31:0] SIM_JTAG_IDCODE = 32'h00000000; + parameter SIM_VERSION = "1.0"; + parameter SPARE_BIT0 = "FALSE"; + parameter integer SPARE_BIT1 = 0; + parameter integer SPARE_BIT2 = 0; + parameter SPARE_BIT3 = "FALSE"; + parameter integer SPARE_BIT4 = 0; + parameter integer SPARE_BIT5 = 0; + parameter integer SPARE_BIT6 = 0; + parameter integer SPARE_BIT7 = 0; + parameter integer SPARE_BIT8 = 0; + parameter [7:0] SPARE_BYTE0 = 8'h00; + parameter [7:0] SPARE_BYTE1 = 8'h00; + parameter [7:0] SPARE_BYTE2 = 8'h00; + parameter [7:0] SPARE_BYTE3 = 8'h00; + parameter [31:0] SPARE_WORD0 = 32'h00000000; + parameter [31:0] SPARE_WORD1 = 32'h00000000; + parameter [31:0] SPARE_WORD2 = 32'h00000000; + parameter [31:0] SPARE_WORD3 = 32'h00000000; + parameter [3:0] SRIOV_CAP_ENABLE = 4'h0; + parameter TL2CFG_IF_PARITY_CHK = "TRUE"; + parameter [1:0] TL_COMPLETION_RAM_NUM_TLPS = 2'h0; + parameter [1:0] TL_COMPLETION_RAM_SIZE = 2'h1; + parameter [11:0] TL_CREDITS_CD = 12'h000; + parameter [7:0] TL_CREDITS_CH = 8'h00; + parameter [11:0] TL_CREDITS_NPD = 12'h004; + parameter [7:0] TL_CREDITS_NPH = 8'h20; + parameter [11:0] TL_CREDITS_PD = 12'h0E0; + parameter [7:0] TL_CREDITS_PH = 8'h20; + parameter [4:0] TL_FC_UPDATE_MIN_INTERVAL_TIME = 5'h02; + parameter [4:0] TL_FC_UPDATE_MIN_INTERVAL_TLP_COUNT = 5'h08; + parameter [1:0] TL_PF_ENABLE_REG = 2'h0; + parameter [0:0] TL_POSTED_RAM_SIZE = 1'h0; + parameter TL_RX_COMPLETION_FROM_RAM_READ_PIPELINE = "FALSE"; + parameter TL_RX_COMPLETION_TO_RAM_READ_PIPELINE = "FALSE"; + parameter TL_RX_COMPLETION_TO_RAM_WRITE_PIPELINE = "FALSE"; + parameter TL_RX_POSTED_FROM_RAM_READ_PIPELINE = "FALSE"; + parameter TL_RX_POSTED_TO_RAM_READ_PIPELINE = "FALSE"; + parameter TL_RX_POSTED_TO_RAM_WRITE_PIPELINE = "FALSE"; + parameter TL_TX_MUX_STRICT_PRIORITY = "TRUE"; + parameter TL_TX_TLP_STRADDLE_ENABLE = "FALSE"; + parameter TL_TX_TLP_TERMINATE_PARITY = "FALSE"; + parameter [15:0] TL_USER_SPARE = 16'h0000; + parameter TPH_FROM_RAM_PIPELINE = "FALSE"; + parameter TPH_TO_RAM_PIPELINE = "FALSE"; + parameter [7:0] VF0_CAPABILITY_POINTER = 8'h80; + parameter [11:0] VFG0_ARI_CAP_NEXTPTR = 12'h000; + parameter [7:0] VFG0_MSIX_CAP_NEXTPTR = 8'h00; + parameter integer VFG0_MSIX_CAP_PBA_BIR = 0; + parameter [28:0] VFG0_MSIX_CAP_PBA_OFFSET = 29'h00000050; + parameter integer VFG0_MSIX_CAP_TABLE_BIR = 0; + parameter [28:0] VFG0_MSIX_CAP_TABLE_OFFSET = 29'h00000040; + parameter [10:0] VFG0_MSIX_CAP_TABLE_SIZE = 11'h000; + parameter [7:0] VFG0_PCIE_CAP_NEXTPTR = 8'h00; + parameter [11:0] VFG0_TPHR_CAP_NEXTPTR = 12'h000; + parameter [2:0] VFG0_TPHR_CAP_ST_MODE_SEL = 3'h0; + parameter [11:0] VFG1_ARI_CAP_NEXTPTR = 12'h000; + parameter [7:0] VFG1_MSIX_CAP_NEXTPTR = 8'h00; + parameter integer VFG1_MSIX_CAP_PBA_BIR = 0; + parameter [28:0] VFG1_MSIX_CAP_PBA_OFFSET = 29'h00000050; + parameter integer VFG1_MSIX_CAP_TABLE_BIR = 0; + parameter [28:0] VFG1_MSIX_CAP_TABLE_OFFSET = 29'h00000040; + parameter [10:0] VFG1_MSIX_CAP_TABLE_SIZE = 11'h000; + parameter [7:0] VFG1_PCIE_CAP_NEXTPTR = 8'h00; + parameter [11:0] VFG1_TPHR_CAP_NEXTPTR = 12'h000; + parameter [2:0] VFG1_TPHR_CAP_ST_MODE_SEL = 3'h0; + parameter [11:0] VFG2_ARI_CAP_NEXTPTR = 12'h000; + parameter [7:0] VFG2_MSIX_CAP_NEXTPTR = 8'h00; + parameter integer VFG2_MSIX_CAP_PBA_BIR = 0; + parameter [28:0] VFG2_MSIX_CAP_PBA_OFFSET = 29'h00000050; + parameter integer VFG2_MSIX_CAP_TABLE_BIR = 0; + parameter [28:0] VFG2_MSIX_CAP_TABLE_OFFSET = 29'h00000040; + parameter [10:0] VFG2_MSIX_CAP_TABLE_SIZE = 11'h000; + parameter [7:0] VFG2_PCIE_CAP_NEXTPTR = 8'h00; + parameter [11:0] VFG2_TPHR_CAP_NEXTPTR = 12'h000; + parameter [2:0] VFG2_TPHR_CAP_ST_MODE_SEL = 3'h0; + parameter [11:0] VFG3_ARI_CAP_NEXTPTR = 12'h000; + parameter [7:0] VFG3_MSIX_CAP_NEXTPTR = 8'h00; + parameter integer VFG3_MSIX_CAP_PBA_BIR = 0; + parameter [28:0] VFG3_MSIX_CAP_PBA_OFFSET = 29'h00000050; + parameter integer VFG3_MSIX_CAP_TABLE_BIR = 0; + parameter [28:0] VFG3_MSIX_CAP_TABLE_OFFSET = 29'h00000040; + parameter [10:0] VFG3_MSIX_CAP_TABLE_SIZE = 11'h000; + parameter [7:0] VFG3_PCIE_CAP_NEXTPTR = 8'h00; + parameter [11:0] VFG3_TPHR_CAP_NEXTPTR = 12'h000; + parameter [2:0] VFG3_TPHR_CAP_ST_MODE_SEL = 3'h0; + output [7:0] AXIUSEROUT; + output [7:0] CFGBUSNUMBER; + output [1:0] CFGCURRENTSPEED; + output CFGERRCOROUT; + output CFGERRFATALOUT; + output CFGERRNONFATALOUT; + output [7:0] CFGEXTFUNCTIONNUMBER; + output CFGEXTREADRECEIVED; + output [9:0] CFGEXTREGISTERNUMBER; + output [3:0] CFGEXTWRITEBYTEENABLE; + output [31:0] CFGEXTWRITEDATA; + output CFGEXTWRITERECEIVED; + output [11:0] CFGFCCPLD; + output [7:0] CFGFCCPLH; + output [11:0] CFGFCNPD; + output [7:0] CFGFCNPH; + output [11:0] CFGFCPD; + output [7:0] CFGFCPH; + output [3:0] CFGFLRINPROCESS; + output [11:0] CFGFUNCTIONPOWERSTATE; + output [15:0] CFGFUNCTIONSTATUS; + output CFGHOTRESETOUT; + output [31:0] CFGINTERRUPTMSIDATA; + output [3:0] CFGINTERRUPTMSIENABLE; + output CFGINTERRUPTMSIFAIL; + output CFGINTERRUPTMSIMASKUPDATE; + output [11:0] CFGINTERRUPTMSIMMENABLE; + output CFGINTERRUPTMSISENT; + output [3:0] CFGINTERRUPTMSIXENABLE; + output [3:0] CFGINTERRUPTMSIXMASK; + output CFGINTERRUPTMSIXVECPENDINGSTATUS; + output CFGINTERRUPTSENT; + output [1:0] CFGLINKPOWERSTATE; + output [4:0] CFGLOCALERROROUT; + output CFGLOCALERRORVALID; + output CFGLTRENABLE; + output [5:0] CFGLTSSMSTATE; + output [1:0] CFGMAXPAYLOAD; + output [2:0] CFGMAXREADREQ; + output [31:0] CFGMGMTREADDATA; + output CFGMGMTREADWRITEDONE; + output CFGMSGRECEIVED; + output [7:0] CFGMSGRECEIVEDDATA; + output [4:0] CFGMSGRECEIVEDTYPE; + output CFGMSGTRANSMITDONE; + output [12:0] CFGMSIXRAMADDRESS; + output CFGMSIXRAMREADENABLE; + output [3:0] CFGMSIXRAMWRITEBYTEENABLE; + output [35:0] CFGMSIXRAMWRITEDATA; + output [2:0] CFGNEGOTIATEDWIDTH; + output [1:0] CFGOBFFENABLE; + output CFGPHYLINKDOWN; + output [1:0] CFGPHYLINKSTATUS; + output CFGPLSTATUSCHANGE; + output CFGPOWERSTATECHANGEINTERRUPT; + output [3:0] CFGRCBSTATUS; + output [1:0] CFGRXPMSTATE; + output [11:0] CFGTPHRAMADDRESS; + output CFGTPHRAMREADENABLE; + output [3:0] CFGTPHRAMWRITEBYTEENABLE; + output [35:0] CFGTPHRAMWRITEDATA; + output [3:0] CFGTPHREQUESTERENABLE; + output [11:0] CFGTPHSTMODE; + output [1:0] CFGTXPMSTATE; + output CONFMCAPDESIGNSWITCH; + output CONFMCAPEOS; + output CONFMCAPINUSEBYPCIE; + output CONFREQREADY; + output [31:0] CONFRESPRDATA; + output CONFRESPVALID; + output [31:0] DBGCTRL0OUT; + output [31:0] DBGCTRL1OUT; + output [255:0] DBGDATA0OUT; + output [255:0] DBGDATA1OUT; + output [15:0] DRPDO; + output DRPRDY; + output [255:0] MAXISCQTDATA; + output [7:0] MAXISCQTKEEP; + output MAXISCQTLAST; + output [87:0] MAXISCQTUSER; + output MAXISCQTVALID; + output [255:0] MAXISRCTDATA; + output [7:0] MAXISRCTKEEP; + output MAXISRCTLAST; + output [74:0] MAXISRCTUSER; + output MAXISRCTVALID; + output [8:0] MIREPLAYRAMADDRESS0; + output [8:0] MIREPLAYRAMADDRESS1; + output MIREPLAYRAMREADENABLE0; + output MIREPLAYRAMREADENABLE1; + output [127:0] MIREPLAYRAMWRITEDATA0; + output [127:0] MIREPLAYRAMWRITEDATA1; + output MIREPLAYRAMWRITEENABLE0; + output MIREPLAYRAMWRITEENABLE1; + output [8:0] MIRXCOMPLETIONRAMREADADDRESS0; + output [8:0] MIRXCOMPLETIONRAMREADADDRESS1; + output [1:0] MIRXCOMPLETIONRAMREADENABLE0; + output [1:0] MIRXCOMPLETIONRAMREADENABLE1; + output [8:0] MIRXCOMPLETIONRAMWRITEADDRESS0; + output [8:0] MIRXCOMPLETIONRAMWRITEADDRESS1; + output [143:0] MIRXCOMPLETIONRAMWRITEDATA0; + output [143:0] MIRXCOMPLETIONRAMWRITEDATA1; + output [1:0] MIRXCOMPLETIONRAMWRITEENABLE0; + output [1:0] MIRXCOMPLETIONRAMWRITEENABLE1; + output [8:0] MIRXPOSTEDREQUESTRAMREADADDRESS0; + output [8:0] MIRXPOSTEDREQUESTRAMREADADDRESS1; + output MIRXPOSTEDREQUESTRAMREADENABLE0; + output MIRXPOSTEDREQUESTRAMREADENABLE1; + output [8:0] MIRXPOSTEDREQUESTRAMWRITEADDRESS0; + output [8:0] MIRXPOSTEDREQUESTRAMWRITEADDRESS1; + output [143:0] MIRXPOSTEDREQUESTRAMWRITEDATA0; + output [143:0] MIRXPOSTEDREQUESTRAMWRITEDATA1; + output MIRXPOSTEDREQUESTRAMWRITEENABLE0; + output MIRXPOSTEDREQUESTRAMWRITEENABLE1; + output [5:0] PCIECQNPREQCOUNT; + output PCIEPERST0B; + output PCIEPERST1B; + output [5:0] PCIERQSEQNUM0; + output [5:0] PCIERQSEQNUM1; + output PCIERQSEQNUMVLD0; + output PCIERQSEQNUMVLD1; + output [7:0] PCIERQTAG0; + output [7:0] PCIERQTAG1; + output [3:0] PCIERQTAGAV; + output PCIERQTAGVLD0; + output PCIERQTAGVLD1; + output [3:0] PCIETFCNPDAV; + output [3:0] PCIETFCNPHAV; + output [1:0] PIPERX00EQCONTROL; + output PIPERX00POLARITY; + output [1:0] PIPERX01EQCONTROL; + output PIPERX01POLARITY; + output [1:0] PIPERX02EQCONTROL; + output PIPERX02POLARITY; + output [1:0] PIPERX03EQCONTROL; + output PIPERX03POLARITY; + output [1:0] PIPERX04EQCONTROL; + output PIPERX04POLARITY; + output [1:0] PIPERX05EQCONTROL; + output PIPERX05POLARITY; + output [1:0] PIPERX06EQCONTROL; + output PIPERX06POLARITY; + output [1:0] PIPERX07EQCONTROL; + output PIPERX07POLARITY; + output [1:0] PIPERX08EQCONTROL; + output PIPERX08POLARITY; + output [1:0] PIPERX09EQCONTROL; + output PIPERX09POLARITY; + output [1:0] PIPERX10EQCONTROL; + output PIPERX10POLARITY; + output [1:0] PIPERX11EQCONTROL; + output PIPERX11POLARITY; + output [1:0] PIPERX12EQCONTROL; + output PIPERX12POLARITY; + output [1:0] PIPERX13EQCONTROL; + output PIPERX13POLARITY; + output [1:0] PIPERX14EQCONTROL; + output PIPERX14POLARITY; + output [1:0] PIPERX15EQCONTROL; + output PIPERX15POLARITY; + output [5:0] PIPERXEQLPLFFS; + output [3:0] PIPERXEQLPTXPRESET; + output [1:0] PIPETX00CHARISK; + output PIPETX00COMPLIANCE; + output [31:0] PIPETX00DATA; + output PIPETX00DATAVALID; + output PIPETX00ELECIDLE; + output [1:0] PIPETX00EQCONTROL; + output [5:0] PIPETX00EQDEEMPH; + output [1:0] PIPETX00POWERDOWN; + output PIPETX00STARTBLOCK; + output [1:0] PIPETX00SYNCHEADER; + output [1:0] PIPETX01CHARISK; + output PIPETX01COMPLIANCE; + output [31:0] PIPETX01DATA; + output PIPETX01DATAVALID; + output PIPETX01ELECIDLE; + output [1:0] PIPETX01EQCONTROL; + output [5:0] PIPETX01EQDEEMPH; + output [1:0] PIPETX01POWERDOWN; + output PIPETX01STARTBLOCK; + output [1:0] PIPETX01SYNCHEADER; + output [1:0] PIPETX02CHARISK; + output PIPETX02COMPLIANCE; + output [31:0] PIPETX02DATA; + output PIPETX02DATAVALID; + output PIPETX02ELECIDLE; + output [1:0] PIPETX02EQCONTROL; + output [5:0] PIPETX02EQDEEMPH; + output [1:0] PIPETX02POWERDOWN; + output PIPETX02STARTBLOCK; + output [1:0] PIPETX02SYNCHEADER; + output [1:0] PIPETX03CHARISK; + output PIPETX03COMPLIANCE; + output [31:0] PIPETX03DATA; + output PIPETX03DATAVALID; + output PIPETX03ELECIDLE; + output [1:0] PIPETX03EQCONTROL; + output [5:0] PIPETX03EQDEEMPH; + output [1:0] PIPETX03POWERDOWN; + output PIPETX03STARTBLOCK; + output [1:0] PIPETX03SYNCHEADER; + output [1:0] PIPETX04CHARISK; + output PIPETX04COMPLIANCE; + output [31:0] PIPETX04DATA; + output PIPETX04DATAVALID; + output PIPETX04ELECIDLE; + output [1:0] PIPETX04EQCONTROL; + output [5:0] PIPETX04EQDEEMPH; + output [1:0] PIPETX04POWERDOWN; + output PIPETX04STARTBLOCK; + output [1:0] PIPETX04SYNCHEADER; + output [1:0] PIPETX05CHARISK; + output PIPETX05COMPLIANCE; + output [31:0] PIPETX05DATA; + output PIPETX05DATAVALID; + output PIPETX05ELECIDLE; + output [1:0] PIPETX05EQCONTROL; + output [5:0] PIPETX05EQDEEMPH; + output [1:0] PIPETX05POWERDOWN; + output PIPETX05STARTBLOCK; + output [1:0] PIPETX05SYNCHEADER; + output [1:0] PIPETX06CHARISK; + output PIPETX06COMPLIANCE; + output [31:0] PIPETX06DATA; + output PIPETX06DATAVALID; + output PIPETX06ELECIDLE; + output [1:0] PIPETX06EQCONTROL; + output [5:0] PIPETX06EQDEEMPH; + output [1:0] PIPETX06POWERDOWN; + output PIPETX06STARTBLOCK; + output [1:0] PIPETX06SYNCHEADER; + output [1:0] PIPETX07CHARISK; + output PIPETX07COMPLIANCE; + output [31:0] PIPETX07DATA; + output PIPETX07DATAVALID; + output PIPETX07ELECIDLE; + output [1:0] PIPETX07EQCONTROL; + output [5:0] PIPETX07EQDEEMPH; + output [1:0] PIPETX07POWERDOWN; + output PIPETX07STARTBLOCK; + output [1:0] PIPETX07SYNCHEADER; + output [1:0] PIPETX08CHARISK; + output PIPETX08COMPLIANCE; + output [31:0] PIPETX08DATA; + output PIPETX08DATAVALID; + output PIPETX08ELECIDLE; + output [1:0] PIPETX08EQCONTROL; + output [5:0] PIPETX08EQDEEMPH; + output [1:0] PIPETX08POWERDOWN; + output PIPETX08STARTBLOCK; + output [1:0] PIPETX08SYNCHEADER; + output [1:0] PIPETX09CHARISK; + output PIPETX09COMPLIANCE; + output [31:0] PIPETX09DATA; + output PIPETX09DATAVALID; + output PIPETX09ELECIDLE; + output [1:0] PIPETX09EQCONTROL; + output [5:0] PIPETX09EQDEEMPH; + output [1:0] PIPETX09POWERDOWN; + output PIPETX09STARTBLOCK; + output [1:0] PIPETX09SYNCHEADER; + output [1:0] PIPETX10CHARISK; + output PIPETX10COMPLIANCE; + output [31:0] PIPETX10DATA; + output PIPETX10DATAVALID; + output PIPETX10ELECIDLE; + output [1:0] PIPETX10EQCONTROL; + output [5:0] PIPETX10EQDEEMPH; + output [1:0] PIPETX10POWERDOWN; + output PIPETX10STARTBLOCK; + output [1:0] PIPETX10SYNCHEADER; + output [1:0] PIPETX11CHARISK; + output PIPETX11COMPLIANCE; + output [31:0] PIPETX11DATA; + output PIPETX11DATAVALID; + output PIPETX11ELECIDLE; + output [1:0] PIPETX11EQCONTROL; + output [5:0] PIPETX11EQDEEMPH; + output [1:0] PIPETX11POWERDOWN; + output PIPETX11STARTBLOCK; + output [1:0] PIPETX11SYNCHEADER; + output [1:0] PIPETX12CHARISK; + output PIPETX12COMPLIANCE; + output [31:0] PIPETX12DATA; + output PIPETX12DATAVALID; + output PIPETX12ELECIDLE; + output [1:0] PIPETX12EQCONTROL; + output [5:0] PIPETX12EQDEEMPH; + output [1:0] PIPETX12POWERDOWN; + output PIPETX12STARTBLOCK; + output [1:0] PIPETX12SYNCHEADER; + output [1:0] PIPETX13CHARISK; + output PIPETX13COMPLIANCE; + output [31:0] PIPETX13DATA; + output PIPETX13DATAVALID; + output PIPETX13ELECIDLE; + output [1:0] PIPETX13EQCONTROL; + output [5:0] PIPETX13EQDEEMPH; + output [1:0] PIPETX13POWERDOWN; + output PIPETX13STARTBLOCK; + output [1:0] PIPETX13SYNCHEADER; + output [1:0] PIPETX14CHARISK; + output PIPETX14COMPLIANCE; + output [31:0] PIPETX14DATA; + output PIPETX14DATAVALID; + output PIPETX14ELECIDLE; + output [1:0] PIPETX14EQCONTROL; + output [5:0] PIPETX14EQDEEMPH; + output [1:0] PIPETX14POWERDOWN; + output PIPETX14STARTBLOCK; + output [1:0] PIPETX14SYNCHEADER; + output [1:0] PIPETX15CHARISK; + output PIPETX15COMPLIANCE; + output [31:0] PIPETX15DATA; + output PIPETX15DATAVALID; + output PIPETX15ELECIDLE; + output [1:0] PIPETX15EQCONTROL; + output [5:0] PIPETX15EQDEEMPH; + output [1:0] PIPETX15POWERDOWN; + output PIPETX15STARTBLOCK; + output [1:0] PIPETX15SYNCHEADER; + output PIPETXDEEMPH; + output [2:0] PIPETXMARGIN; + output [1:0] PIPETXRATE; + output PIPETXRCVRDET; + output PIPETXRESET; + output PIPETXSWING; + output PLEQINPROGRESS; + output [1:0] PLEQPHASE; + output PLGEN34EQMISMATCH; + output [3:0] SAXISCCTREADY; + output [3:0] SAXISRQTREADY; + output [31:0] USERSPAREOUT; + input [7:0] AXIUSERIN; + input CFGCONFIGSPACEENABLE; + input [15:0] CFGDEVIDPF0; + input [15:0] CFGDEVIDPF1; + input [15:0] CFGDEVIDPF2; + input [15:0] CFGDEVIDPF3; + input [7:0] CFGDSBUSNUMBER; + input [4:0] CFGDSDEVICENUMBER; + input [2:0] CFGDSFUNCTIONNUMBER; + input [63:0] CFGDSN; + input [7:0] CFGDSPORTNUMBER; + input CFGERRCORIN; + input CFGERRUNCORIN; + input [31:0] CFGEXTREADDATA; + input CFGEXTREADDATAVALID; + input [2:0] CFGFCSEL; + input [3:0] CFGFLRDONE; + input CFGHOTRESETIN; + input [3:0] CFGINTERRUPTINT; + input [2:0] CFGINTERRUPTMSIATTR; + input [7:0] CFGINTERRUPTMSIFUNCTIONNUMBER; + input [31:0] CFGINTERRUPTMSIINT; + input [31:0] CFGINTERRUPTMSIPENDINGSTATUS; + input CFGINTERRUPTMSIPENDINGSTATUSDATAENABLE; + input [1:0] CFGINTERRUPTMSIPENDINGSTATUSFUNCTIONNUM; + input [1:0] CFGINTERRUPTMSISELECT; + input CFGINTERRUPTMSITPHPRESENT; + input [7:0] CFGINTERRUPTMSITPHSTTAG; + input [1:0] CFGINTERRUPTMSITPHTYPE; + input [63:0] CFGINTERRUPTMSIXADDRESS; + input [31:0] CFGINTERRUPTMSIXDATA; + input CFGINTERRUPTMSIXINT; + input [1:0] CFGINTERRUPTMSIXVECPENDING; + input [3:0] CFGINTERRUPTPENDING; + input CFGLINKTRAININGENABLE; + input [9:0] CFGMGMTADDR; + input [3:0] CFGMGMTBYTEENABLE; + input CFGMGMTDEBUGACCESS; + input [7:0] CFGMGMTFUNCTIONNUMBER; + input CFGMGMTREAD; + input CFGMGMTWRITE; + input [31:0] CFGMGMTWRITEDATA; + input CFGMSGTRANSMIT; + input [31:0] CFGMSGTRANSMITDATA; + input [2:0] CFGMSGTRANSMITTYPE; + input [35:0] CFGMSIXRAMREADDATA; + input CFGPMASPML1ENTRYREJECT; + input CFGPMASPMTXL0SENTRYDISABLE; + input CFGPOWERSTATECHANGEACK; + input CFGREQPMTRANSITIONL23READY; + input [7:0] CFGREVIDPF0; + input [7:0] CFGREVIDPF1; + input [7:0] CFGREVIDPF2; + input [7:0] CFGREVIDPF3; + input [15:0] CFGSUBSYSIDPF0; + input [15:0] CFGSUBSYSIDPF1; + input [15:0] CFGSUBSYSIDPF2; + input [15:0] CFGSUBSYSIDPF3; + input [15:0] CFGSUBSYSVENDID; + input [35:0] CFGTPHRAMREADDATA; + input [15:0] CFGVENDID; + input CFGVFFLRDONE; + input [7:0] CFGVFFLRFUNCNUM; + input CONFMCAPREQUESTBYCONF; + input [31:0] CONFREQDATA; + input [3:0] CONFREQREGNUM; + input [1:0] CONFREQTYPE; + input CONFREQVALID; + input CORECLK; + input CORECLKMIREPLAYRAM0; + input CORECLKMIREPLAYRAM1; + input CORECLKMIRXCOMPLETIONRAM0; + input CORECLKMIRXCOMPLETIONRAM1; + input CORECLKMIRXPOSTEDREQUESTRAM0; + input CORECLKMIRXPOSTEDREQUESTRAM1; + input [5:0] DBGSEL0; + input [5:0] DBGSEL1; + input [9:0] DRPADDR; + input DRPCLK; + input [15:0] DRPDI; + input DRPEN; + input DRPWE; + input [21:0] MAXISCQTREADY; + input [21:0] MAXISRCTREADY; + input MCAPCLK; + input MCAPPERST0B; + input MCAPPERST1B; + input MGMTRESETN; + input MGMTSTICKYRESETN; + input [5:0] MIREPLAYRAMERRCOR; + input [5:0] MIREPLAYRAMERRUNCOR; + input [127:0] MIREPLAYRAMREADDATA0; + input [127:0] MIREPLAYRAMREADDATA1; + input [11:0] MIRXCOMPLETIONRAMERRCOR; + input [11:0] MIRXCOMPLETIONRAMERRUNCOR; + input [143:0] MIRXCOMPLETIONRAMREADDATA0; + input [143:0] MIRXCOMPLETIONRAMREADDATA1; + input [5:0] MIRXPOSTEDREQUESTRAMERRCOR; + input [5:0] MIRXPOSTEDREQUESTRAMERRUNCOR; + input [143:0] MIRXPOSTEDREQUESTRAMREADDATA0; + input [143:0] MIRXPOSTEDREQUESTRAMREADDATA1; + input [1:0] PCIECOMPLDELIVERED; + input [7:0] PCIECOMPLDELIVEREDTAG0; + input [7:0] PCIECOMPLDELIVEREDTAG1; + input [1:0] PCIECQNPREQ; + input PCIECQNPUSERCREDITRCVD; + input PCIECQPIPELINEEMPTY; + input PCIEPOSTEDREQDELIVERED; + input PIPECLK; + input PIPECLKEN; + input [5:0] PIPEEQFS; + input [5:0] PIPEEQLF; + input PIPERESETN; + input [1:0] PIPERX00CHARISK; + input [31:0] PIPERX00DATA; + input PIPERX00DATAVALID; + input PIPERX00ELECIDLE; + input PIPERX00EQDONE; + input PIPERX00EQLPADAPTDONE; + input PIPERX00EQLPLFFSSEL; + input [17:0] PIPERX00EQLPNEWTXCOEFFORPRESET; + input PIPERX00PHYSTATUS; + input [1:0] PIPERX00STARTBLOCK; + input [2:0] PIPERX00STATUS; + input [1:0] PIPERX00SYNCHEADER; + input PIPERX00VALID; + input [1:0] PIPERX01CHARISK; + input [31:0] PIPERX01DATA; + input PIPERX01DATAVALID; + input PIPERX01ELECIDLE; + input PIPERX01EQDONE; + input PIPERX01EQLPADAPTDONE; + input PIPERX01EQLPLFFSSEL; + input [17:0] PIPERX01EQLPNEWTXCOEFFORPRESET; + input PIPERX01PHYSTATUS; + input [1:0] PIPERX01STARTBLOCK; + input [2:0] PIPERX01STATUS; + input [1:0] PIPERX01SYNCHEADER; + input PIPERX01VALID; + input [1:0] PIPERX02CHARISK; + input [31:0] PIPERX02DATA; + input PIPERX02DATAVALID; + input PIPERX02ELECIDLE; + input PIPERX02EQDONE; + input PIPERX02EQLPADAPTDONE; + input PIPERX02EQLPLFFSSEL; + input [17:0] PIPERX02EQLPNEWTXCOEFFORPRESET; + input PIPERX02PHYSTATUS; + input [1:0] PIPERX02STARTBLOCK; + input [2:0] PIPERX02STATUS; + input [1:0] PIPERX02SYNCHEADER; + input PIPERX02VALID; + input [1:0] PIPERX03CHARISK; + input [31:0] PIPERX03DATA; + input PIPERX03DATAVALID; + input PIPERX03ELECIDLE; + input PIPERX03EQDONE; + input PIPERX03EQLPADAPTDONE; + input PIPERX03EQLPLFFSSEL; + input [17:0] PIPERX03EQLPNEWTXCOEFFORPRESET; + input PIPERX03PHYSTATUS; + input [1:0] PIPERX03STARTBLOCK; + input [2:0] PIPERX03STATUS; + input [1:0] PIPERX03SYNCHEADER; + input PIPERX03VALID; + input [1:0] PIPERX04CHARISK; + input [31:0] PIPERX04DATA; + input PIPERX04DATAVALID; + input PIPERX04ELECIDLE; + input PIPERX04EQDONE; + input PIPERX04EQLPADAPTDONE; + input PIPERX04EQLPLFFSSEL; + input [17:0] PIPERX04EQLPNEWTXCOEFFORPRESET; + input PIPERX04PHYSTATUS; + input [1:0] PIPERX04STARTBLOCK; + input [2:0] PIPERX04STATUS; + input [1:0] PIPERX04SYNCHEADER; + input PIPERX04VALID; + input [1:0] PIPERX05CHARISK; + input [31:0] PIPERX05DATA; + input PIPERX05DATAVALID; + input PIPERX05ELECIDLE; + input PIPERX05EQDONE; + input PIPERX05EQLPADAPTDONE; + input PIPERX05EQLPLFFSSEL; + input [17:0] PIPERX05EQLPNEWTXCOEFFORPRESET; + input PIPERX05PHYSTATUS; + input [1:0] PIPERX05STARTBLOCK; + input [2:0] PIPERX05STATUS; + input [1:0] PIPERX05SYNCHEADER; + input PIPERX05VALID; + input [1:0] PIPERX06CHARISK; + input [31:0] PIPERX06DATA; + input PIPERX06DATAVALID; + input PIPERX06ELECIDLE; + input PIPERX06EQDONE; + input PIPERX06EQLPADAPTDONE; + input PIPERX06EQLPLFFSSEL; + input [17:0] PIPERX06EQLPNEWTXCOEFFORPRESET; + input PIPERX06PHYSTATUS; + input [1:0] PIPERX06STARTBLOCK; + input [2:0] PIPERX06STATUS; + input [1:0] PIPERX06SYNCHEADER; + input PIPERX06VALID; + input [1:0] PIPERX07CHARISK; + input [31:0] PIPERX07DATA; + input PIPERX07DATAVALID; + input PIPERX07ELECIDLE; + input PIPERX07EQDONE; + input PIPERX07EQLPADAPTDONE; + input PIPERX07EQLPLFFSSEL; + input [17:0] PIPERX07EQLPNEWTXCOEFFORPRESET; + input PIPERX07PHYSTATUS; + input [1:0] PIPERX07STARTBLOCK; + input [2:0] PIPERX07STATUS; + input [1:0] PIPERX07SYNCHEADER; + input PIPERX07VALID; + input [1:0] PIPERX08CHARISK; + input [31:0] PIPERX08DATA; + input PIPERX08DATAVALID; + input PIPERX08ELECIDLE; + input PIPERX08EQDONE; + input PIPERX08EQLPADAPTDONE; + input PIPERX08EQLPLFFSSEL; + input [17:0] PIPERX08EQLPNEWTXCOEFFORPRESET; + input PIPERX08PHYSTATUS; + input [1:0] PIPERX08STARTBLOCK; + input [2:0] PIPERX08STATUS; + input [1:0] PIPERX08SYNCHEADER; + input PIPERX08VALID; + input [1:0] PIPERX09CHARISK; + input [31:0] PIPERX09DATA; + input PIPERX09DATAVALID; + input PIPERX09ELECIDLE; + input PIPERX09EQDONE; + input PIPERX09EQLPADAPTDONE; + input PIPERX09EQLPLFFSSEL; + input [17:0] PIPERX09EQLPNEWTXCOEFFORPRESET; + input PIPERX09PHYSTATUS; + input [1:0] PIPERX09STARTBLOCK; + input [2:0] PIPERX09STATUS; + input [1:0] PIPERX09SYNCHEADER; + input PIPERX09VALID; + input [1:0] PIPERX10CHARISK; + input [31:0] PIPERX10DATA; + input PIPERX10DATAVALID; + input PIPERX10ELECIDLE; + input PIPERX10EQDONE; + input PIPERX10EQLPADAPTDONE; + input PIPERX10EQLPLFFSSEL; + input [17:0] PIPERX10EQLPNEWTXCOEFFORPRESET; + input PIPERX10PHYSTATUS; + input [1:0] PIPERX10STARTBLOCK; + input [2:0] PIPERX10STATUS; + input [1:0] PIPERX10SYNCHEADER; + input PIPERX10VALID; + input [1:0] PIPERX11CHARISK; + input [31:0] PIPERX11DATA; + input PIPERX11DATAVALID; + input PIPERX11ELECIDLE; + input PIPERX11EQDONE; + input PIPERX11EQLPADAPTDONE; + input PIPERX11EQLPLFFSSEL; + input [17:0] PIPERX11EQLPNEWTXCOEFFORPRESET; + input PIPERX11PHYSTATUS; + input [1:0] PIPERX11STARTBLOCK; + input [2:0] PIPERX11STATUS; + input [1:0] PIPERX11SYNCHEADER; + input PIPERX11VALID; + input [1:0] PIPERX12CHARISK; + input [31:0] PIPERX12DATA; + input PIPERX12DATAVALID; + input PIPERX12ELECIDLE; + input PIPERX12EQDONE; + input PIPERX12EQLPADAPTDONE; + input PIPERX12EQLPLFFSSEL; + input [17:0] PIPERX12EQLPNEWTXCOEFFORPRESET; + input PIPERX12PHYSTATUS; + input [1:0] PIPERX12STARTBLOCK; + input [2:0] PIPERX12STATUS; + input [1:0] PIPERX12SYNCHEADER; + input PIPERX12VALID; + input [1:0] PIPERX13CHARISK; + input [31:0] PIPERX13DATA; + input PIPERX13DATAVALID; + input PIPERX13ELECIDLE; + input PIPERX13EQDONE; + input PIPERX13EQLPADAPTDONE; + input PIPERX13EQLPLFFSSEL; + input [17:0] PIPERX13EQLPNEWTXCOEFFORPRESET; + input PIPERX13PHYSTATUS; + input [1:0] PIPERX13STARTBLOCK; + input [2:0] PIPERX13STATUS; + input [1:0] PIPERX13SYNCHEADER; + input PIPERX13VALID; + input [1:0] PIPERX14CHARISK; + input [31:0] PIPERX14DATA; + input PIPERX14DATAVALID; + input PIPERX14ELECIDLE; + input PIPERX14EQDONE; + input PIPERX14EQLPADAPTDONE; + input PIPERX14EQLPLFFSSEL; + input [17:0] PIPERX14EQLPNEWTXCOEFFORPRESET; + input PIPERX14PHYSTATUS; + input [1:0] PIPERX14STARTBLOCK; + input [2:0] PIPERX14STATUS; + input [1:0] PIPERX14SYNCHEADER; + input PIPERX14VALID; + input [1:0] PIPERX15CHARISK; + input [31:0] PIPERX15DATA; + input PIPERX15DATAVALID; + input PIPERX15ELECIDLE; + input PIPERX15EQDONE; + input PIPERX15EQLPADAPTDONE; + input PIPERX15EQLPLFFSSEL; + input [17:0] PIPERX15EQLPNEWTXCOEFFORPRESET; + input PIPERX15PHYSTATUS; + input [1:0] PIPERX15STARTBLOCK; + input [2:0] PIPERX15STATUS; + input [1:0] PIPERX15SYNCHEADER; + input PIPERX15VALID; + input [17:0] PIPETX00EQCOEFF; + input PIPETX00EQDONE; + input [17:0] PIPETX01EQCOEFF; + input PIPETX01EQDONE; + input [17:0] PIPETX02EQCOEFF; + input PIPETX02EQDONE; + input [17:0] PIPETX03EQCOEFF; + input PIPETX03EQDONE; + input [17:0] PIPETX04EQCOEFF; + input PIPETX04EQDONE; + input [17:0] PIPETX05EQCOEFF; + input PIPETX05EQDONE; + input [17:0] PIPETX06EQCOEFF; + input PIPETX06EQDONE; + input [17:0] PIPETX07EQCOEFF; + input PIPETX07EQDONE; + input [17:0] PIPETX08EQCOEFF; + input PIPETX08EQDONE; + input [17:0] PIPETX09EQCOEFF; + input PIPETX09EQDONE; + input [17:0] PIPETX10EQCOEFF; + input PIPETX10EQDONE; + input [17:0] PIPETX11EQCOEFF; + input PIPETX11EQDONE; + input [17:0] PIPETX12EQCOEFF; + input PIPETX12EQDONE; + input [17:0] PIPETX13EQCOEFF; + input PIPETX13EQDONE; + input [17:0] PIPETX14EQCOEFF; + input PIPETX14EQDONE; + input [17:0] PIPETX15EQCOEFF; + input PIPETX15EQDONE; + input PLEQRESETEIEOSCOUNT; + input PLGEN2UPSTREAMPREFERDEEMPH; + input PLGEN34REDOEQSPEED; + input PLGEN34REDOEQUALIZATION; + input RESETN; + input [255:0] SAXISCCTDATA; + input [7:0] SAXISCCTKEEP; + input SAXISCCTLAST; + input [32:0] SAXISCCTUSER; + input SAXISCCTVALID; + input [255:0] SAXISRQTDATA; + input [7:0] SAXISRQTKEEP; + input SAXISRQTLAST; + input [61:0] SAXISRQTUSER; + input SAXISRQTVALID; + input USERCLK; + input USERCLK2; + input USERCLKEN; + input [31:0] USERSPAREIN; +endmodule + +module PCIE4CE4 (...); + parameter ARI_CAP_ENABLE = "FALSE"; + parameter AUTO_FLR_RESPONSE = "FALSE"; + parameter [7:0] AXISTEN_IF_CCIX_RX_CREDIT_LIMIT = 8'h08; + parameter [7:0] AXISTEN_IF_CCIX_TX_CREDIT_LIMIT = 8'h08; + parameter AXISTEN_IF_CCIX_TX_REGISTERED_TREADY = "FALSE"; + parameter [1:0] AXISTEN_IF_CC_ALIGNMENT_MODE = 2'h0; + parameter [23:0] AXISTEN_IF_COMPL_TIMEOUT_REG0 = 24'hBEBC20; + parameter [27:0] AXISTEN_IF_COMPL_TIMEOUT_REG1 = 28'h2FAF080; + parameter [1:0] AXISTEN_IF_CQ_ALIGNMENT_MODE = 2'h0; + parameter AXISTEN_IF_CQ_EN_POISONED_MEM_WR = "FALSE"; + parameter AXISTEN_IF_ENABLE_256_TAGS = "FALSE"; + parameter AXISTEN_IF_ENABLE_CLIENT_TAG = "FALSE"; + parameter AXISTEN_IF_ENABLE_INTERNAL_MSIX_TABLE = "FALSE"; + parameter AXISTEN_IF_ENABLE_MESSAGE_RID_CHECK = "TRUE"; + parameter [17:0] AXISTEN_IF_ENABLE_MSG_ROUTE = 18'h00000; + parameter AXISTEN_IF_ENABLE_RX_MSG_INTFC = "FALSE"; + parameter AXISTEN_IF_EXT_512 = "FALSE"; + parameter AXISTEN_IF_EXT_512_CC_STRADDLE = "FALSE"; + parameter AXISTEN_IF_EXT_512_CQ_STRADDLE = "FALSE"; + parameter AXISTEN_IF_EXT_512_RC_STRADDLE = "FALSE"; + parameter AXISTEN_IF_EXT_512_RQ_STRADDLE = "FALSE"; + parameter AXISTEN_IF_LEGACY_MODE_ENABLE = "FALSE"; + parameter AXISTEN_IF_MSIX_FROM_RAM_PIPELINE = "FALSE"; + parameter AXISTEN_IF_MSIX_RX_PARITY_EN = "TRUE"; + parameter AXISTEN_IF_MSIX_TO_RAM_PIPELINE = "FALSE"; + parameter [1:0] AXISTEN_IF_RC_ALIGNMENT_MODE = 2'h0; + parameter AXISTEN_IF_RC_STRADDLE = "FALSE"; + parameter [1:0] AXISTEN_IF_RQ_ALIGNMENT_MODE = 2'h0; + parameter AXISTEN_IF_RX_PARITY_EN = "TRUE"; + parameter AXISTEN_IF_SIM_SHORT_CPL_TIMEOUT = "FALSE"; + parameter AXISTEN_IF_TX_PARITY_EN = "TRUE"; + parameter [1:0] AXISTEN_IF_WIDTH = 2'h2; + parameter CCIX_DIRECT_ATTACH_MODE = "FALSE"; + parameter CCIX_ENABLE = "FALSE"; + parameter [15:0] CCIX_VENDOR_ID = 16'h0000; + parameter CFG_BYPASS_MODE_ENABLE = "FALSE"; + parameter CRM_CORE_CLK_FREQ_500 = "TRUE"; + parameter [1:0] CRM_USER_CLK_FREQ = 2'h2; + parameter [15:0] DEBUG_AXI4ST_SPARE = 16'h0000; + parameter [7:0] DEBUG_AXIST_DISABLE_FEATURE_BIT = 8'h00; + parameter [3:0] DEBUG_CAR_SPARE = 4'h0; + parameter [15:0] DEBUG_CFG_SPARE = 16'h0000; + parameter [15:0] DEBUG_LL_SPARE = 16'h0000; + parameter DEBUG_PL_DISABLE_LES_UPDATE_ON_DEFRAMER_ERROR = "FALSE"; + parameter DEBUG_PL_DISABLE_LES_UPDATE_ON_SKP_ERROR = "FALSE"; + parameter DEBUG_PL_DISABLE_LES_UPDATE_ON_SKP_PARITY_ERROR = "FALSE"; + parameter DEBUG_PL_DISABLE_REC_ENTRY_ON_DYNAMIC_DSKEW_FAIL = "FALSE"; + parameter DEBUG_PL_DISABLE_REC_ENTRY_ON_RX_BUFFER_UNDER_OVER_FLOW = "FALSE"; + parameter DEBUG_PL_DISABLE_SCRAMBLING = "FALSE"; + parameter DEBUG_PL_SIM_RESET_LFSR = "FALSE"; + parameter [15:0] DEBUG_PL_SPARE = 16'h0000; + parameter DEBUG_TL_DISABLE_FC_TIMEOUT = "FALSE"; + parameter DEBUG_TL_DISABLE_RX_TLP_ORDER_CHECKS = "FALSE"; + parameter [15:0] DEBUG_TL_SPARE = 16'h0000; + parameter [7:0] DNSTREAM_LINK_NUM = 8'h00; + parameter DSN_CAP_ENABLE = "FALSE"; + parameter EXTENDED_CFG_EXTEND_INTERFACE_ENABLE = "FALSE"; + parameter HEADER_TYPE_OVERRIDE = "FALSE"; + parameter IS_SWITCH_PORT = "FALSE"; + parameter LEGACY_CFG_EXTEND_INTERFACE_ENABLE = "FALSE"; + parameter [8:0] LL_ACK_TIMEOUT = 9'h000; + parameter LL_ACK_TIMEOUT_EN = "FALSE"; + parameter integer LL_ACK_TIMEOUT_FUNC = 0; + parameter LL_DISABLE_SCHED_TX_NAK = "FALSE"; + parameter LL_REPLAY_FROM_RAM_PIPELINE = "FALSE"; + parameter [8:0] LL_REPLAY_TIMEOUT = 9'h000; + parameter LL_REPLAY_TIMEOUT_EN = "FALSE"; + parameter integer LL_REPLAY_TIMEOUT_FUNC = 0; + parameter LL_REPLAY_TO_RAM_PIPELINE = "FALSE"; + parameter LL_RX_TLP_PARITY_GEN = "TRUE"; + parameter LL_TX_TLP_PARITY_CHK = "TRUE"; + parameter [15:0] LL_USER_SPARE = 16'h0000; + parameter [9:0] LTR_TX_MESSAGE_MINIMUM_INTERVAL = 10'h250; + parameter LTR_TX_MESSAGE_ON_FUNC_POWER_STATE_CHANGE = "FALSE"; + parameter LTR_TX_MESSAGE_ON_LTR_ENABLE = "FALSE"; + parameter [11:0] MCAP_CAP_NEXTPTR = 12'h000; + parameter MCAP_CONFIGURE_OVERRIDE = "FALSE"; + parameter MCAP_ENABLE = "FALSE"; + parameter MCAP_EOS_DESIGN_SWITCH = "FALSE"; + parameter [31:0] MCAP_FPGA_BITSTREAM_VERSION = 32'h00000000; + parameter MCAP_GATE_IO_ENABLE_DESIGN_SWITCH = "FALSE"; + parameter MCAP_GATE_MEM_ENABLE_DESIGN_SWITCH = "FALSE"; + parameter MCAP_INPUT_GATE_DESIGN_SWITCH = "FALSE"; + parameter MCAP_INTERRUPT_ON_MCAP_EOS = "FALSE"; + parameter MCAP_INTERRUPT_ON_MCAP_ERROR = "FALSE"; + parameter [15:0] MCAP_VSEC_ID = 16'h0000; + parameter [11:0] MCAP_VSEC_LEN = 12'h02C; + parameter [3:0] MCAP_VSEC_REV = 4'h0; + parameter PF0_AER_CAP_ECRC_GEN_AND_CHECK_CAPABLE = "FALSE"; + parameter [11:0] PF0_AER_CAP_NEXTPTR = 12'h000; + parameter [11:0] PF0_ARI_CAP_NEXTPTR = 12'h000; + parameter [7:0] PF0_ARI_CAP_NEXT_FUNC = 8'h00; + parameter [3:0] PF0_ARI_CAP_VER = 4'h1; + parameter [4:0] PF0_ATS_CAP_INV_QUEUE_DEPTH = 5'h00; + parameter [11:0] PF0_ATS_CAP_NEXTPTR = 12'h000; + parameter PF0_ATS_CAP_ON = "FALSE"; + parameter [5:0] PF0_BAR0_APERTURE_SIZE = 6'h03; + parameter [2:0] PF0_BAR0_CONTROL = 3'h4; + parameter [4:0] PF0_BAR1_APERTURE_SIZE = 5'h00; + parameter [2:0] PF0_BAR1_CONTROL = 3'h0; + parameter [5:0] PF0_BAR2_APERTURE_SIZE = 6'h03; + parameter [2:0] PF0_BAR2_CONTROL = 3'h4; + parameter [4:0] PF0_BAR3_APERTURE_SIZE = 5'h03; + parameter [2:0] PF0_BAR3_CONTROL = 3'h0; + parameter [5:0] PF0_BAR4_APERTURE_SIZE = 6'h03; + parameter [2:0] PF0_BAR4_CONTROL = 3'h4; + parameter [4:0] PF0_BAR5_APERTURE_SIZE = 5'h03; + parameter [2:0] PF0_BAR5_CONTROL = 3'h0; + parameter [7:0] PF0_CAPABILITY_POINTER = 8'h80; + parameter [23:0] PF0_CLASS_CODE = 24'h000000; + parameter PF0_DEV_CAP2_128B_CAS_ATOMIC_COMPLETER_SUPPORT = "TRUE"; + parameter PF0_DEV_CAP2_32B_ATOMIC_COMPLETER_SUPPORT = "TRUE"; + parameter PF0_DEV_CAP2_64B_ATOMIC_COMPLETER_SUPPORT = "TRUE"; + parameter PF0_DEV_CAP2_ARI_FORWARD_ENABLE = "FALSE"; + parameter PF0_DEV_CAP2_CPL_TIMEOUT_DISABLE = "TRUE"; + parameter PF0_DEV_CAP2_LTR_SUPPORT = "TRUE"; + parameter [1:0] PF0_DEV_CAP2_OBFF_SUPPORT = 2'h0; + parameter PF0_DEV_CAP2_TPH_COMPLETER_SUPPORT = "FALSE"; + parameter integer PF0_DEV_CAP_ENDPOINT_L0S_LATENCY = 0; + parameter integer PF0_DEV_CAP_ENDPOINT_L1_LATENCY = 0; + parameter PF0_DEV_CAP_EXT_TAG_SUPPORTED = "TRUE"; + parameter PF0_DEV_CAP_FUNCTION_LEVEL_RESET_CAPABLE = "TRUE"; + parameter [2:0] PF0_DEV_CAP_MAX_PAYLOAD_SIZE = 3'h3; + parameter [11:0] PF0_DSN_CAP_NEXTPTR = 12'h10C; + parameter [4:0] PF0_EXPANSION_ROM_APERTURE_SIZE = 5'h03; + parameter PF0_EXPANSION_ROM_ENABLE = "FALSE"; + parameter [2:0] PF0_INTERRUPT_PIN = 3'h1; + parameter integer PF0_LINK_CAP_ASPM_SUPPORT = 0; + parameter integer PF0_LINK_CAP_L0S_EXIT_LATENCY_COMCLK_GEN1 = 7; + parameter integer PF0_LINK_CAP_L0S_EXIT_LATENCY_COMCLK_GEN2 = 7; + parameter integer PF0_LINK_CAP_L0S_EXIT_LATENCY_COMCLK_GEN3 = 7; + parameter integer PF0_LINK_CAP_L0S_EXIT_LATENCY_COMCLK_GEN4 = 7; + parameter integer PF0_LINK_CAP_L0S_EXIT_LATENCY_GEN1 = 7; + parameter integer PF0_LINK_CAP_L0S_EXIT_LATENCY_GEN2 = 7; + parameter integer PF0_LINK_CAP_L0S_EXIT_LATENCY_GEN3 = 7; + parameter integer PF0_LINK_CAP_L0S_EXIT_LATENCY_GEN4 = 7; + parameter integer PF0_LINK_CAP_L1_EXIT_LATENCY_COMCLK_GEN1 = 7; + parameter integer PF0_LINK_CAP_L1_EXIT_LATENCY_COMCLK_GEN2 = 7; + parameter integer PF0_LINK_CAP_L1_EXIT_LATENCY_COMCLK_GEN3 = 7; + parameter integer PF0_LINK_CAP_L1_EXIT_LATENCY_COMCLK_GEN4 = 7; + parameter integer PF0_LINK_CAP_L1_EXIT_LATENCY_GEN1 = 7; + parameter integer PF0_LINK_CAP_L1_EXIT_LATENCY_GEN2 = 7; + parameter integer PF0_LINK_CAP_L1_EXIT_LATENCY_GEN3 = 7; + parameter integer PF0_LINK_CAP_L1_EXIT_LATENCY_GEN4 = 7; + parameter [0:0] PF0_LINK_CONTROL_RCB = 1'h0; + parameter PF0_LINK_STATUS_SLOT_CLOCK_CONFIG = "TRUE"; + parameter [9:0] PF0_LTR_CAP_MAX_NOSNOOP_LAT = 10'h000; + parameter [9:0] PF0_LTR_CAP_MAX_SNOOP_LAT = 10'h000; + parameter [11:0] PF0_LTR_CAP_NEXTPTR = 12'h000; + parameter [3:0] PF0_LTR_CAP_VER = 4'h1; + parameter [7:0] PF0_MSIX_CAP_NEXTPTR = 8'h00; + parameter integer PF0_MSIX_CAP_PBA_BIR = 0; + parameter [28:0] PF0_MSIX_CAP_PBA_OFFSET = 29'h00000050; + parameter integer PF0_MSIX_CAP_TABLE_BIR = 0; + parameter [28:0] PF0_MSIX_CAP_TABLE_OFFSET = 29'h00000040; + parameter [10:0] PF0_MSIX_CAP_TABLE_SIZE = 11'h000; + parameter [5:0] PF0_MSIX_VECTOR_COUNT = 6'h04; + parameter integer PF0_MSI_CAP_MULTIMSGCAP = 0; + parameter [7:0] PF0_MSI_CAP_NEXTPTR = 8'h00; + parameter PF0_MSI_CAP_PERVECMASKCAP = "FALSE"; + parameter [7:0] PF0_PCIE_CAP_NEXTPTR = 8'h00; + parameter [7:0] PF0_PM_CAP_ID = 8'h01; + parameter [7:0] PF0_PM_CAP_NEXTPTR = 8'h00; + parameter PF0_PM_CAP_PMESUPPORT_D0 = "TRUE"; + parameter PF0_PM_CAP_PMESUPPORT_D1 = "TRUE"; + parameter PF0_PM_CAP_PMESUPPORT_D3HOT = "TRUE"; + parameter PF0_PM_CAP_SUPP_D1_STATE = "TRUE"; + parameter [2:0] PF0_PM_CAP_VER_ID = 3'h3; + parameter PF0_PM_CSR_NOSOFTRESET = "TRUE"; + parameter [11:0] PF0_PRI_CAP_NEXTPTR = 12'h000; + parameter PF0_PRI_CAP_ON = "FALSE"; + parameter [31:0] PF0_PRI_OST_PR_CAPACITY = 32'h00000000; + parameter [11:0] PF0_SECONDARY_PCIE_CAP_NEXTPTR = 12'h000; + parameter PF0_SRIOV_ARI_CAPBL_HIER_PRESERVED = "FALSE"; + parameter [5:0] PF0_SRIOV_BAR0_APERTURE_SIZE = 6'h03; + parameter [2:0] PF0_SRIOV_BAR0_CONTROL = 3'h4; + parameter [4:0] PF0_SRIOV_BAR1_APERTURE_SIZE = 5'h00; + parameter [2:0] PF0_SRIOV_BAR1_CONTROL = 3'h0; + parameter [5:0] PF0_SRIOV_BAR2_APERTURE_SIZE = 6'h03; + parameter [2:0] PF0_SRIOV_BAR2_CONTROL = 3'h4; + parameter [4:0] PF0_SRIOV_BAR3_APERTURE_SIZE = 5'h03; + parameter [2:0] PF0_SRIOV_BAR3_CONTROL = 3'h0; + parameter [5:0] PF0_SRIOV_BAR4_APERTURE_SIZE = 6'h03; + parameter [2:0] PF0_SRIOV_BAR4_CONTROL = 3'h4; + parameter [4:0] PF0_SRIOV_BAR5_APERTURE_SIZE = 5'h03; + parameter [2:0] PF0_SRIOV_BAR5_CONTROL = 3'h0; + parameter [15:0] PF0_SRIOV_CAP_INITIAL_VF = 16'h0000; + parameter [11:0] PF0_SRIOV_CAP_NEXTPTR = 12'h000; + parameter [15:0] PF0_SRIOV_CAP_TOTAL_VF = 16'h0000; + parameter [3:0] PF0_SRIOV_CAP_VER = 4'h1; + parameter [15:0] PF0_SRIOV_FIRST_VF_OFFSET = 16'h0000; + parameter [15:0] PF0_SRIOV_FUNC_DEP_LINK = 16'h0000; + parameter [31:0] PF0_SRIOV_SUPPORTED_PAGE_SIZE = 32'h00000000; + parameter [15:0] PF0_SRIOV_VF_DEVICE_ID = 16'h0000; + parameter PF0_TPHR_CAP_DEV_SPECIFIC_MODE = "TRUE"; + parameter PF0_TPHR_CAP_ENABLE = "FALSE"; + parameter PF0_TPHR_CAP_INT_VEC_MODE = "TRUE"; + parameter [11:0] PF0_TPHR_CAP_NEXTPTR = 12'h000; + parameter [2:0] PF0_TPHR_CAP_ST_MODE_SEL = 3'h0; + parameter [1:0] PF0_TPHR_CAP_ST_TABLE_LOC = 2'h0; + parameter [10:0] PF0_TPHR_CAP_ST_TABLE_SIZE = 11'h000; + parameter [3:0] PF0_TPHR_CAP_VER = 4'h1; + parameter [3:0] PF0_VC_ARB_CAPABILITY = 4'h0; + parameter [7:0] PF0_VC_ARB_TBL_OFFSET = 8'h00; + parameter PF0_VC_CAP_ENABLE = "FALSE"; + parameter [11:0] PF0_VC_CAP_NEXTPTR = 12'h000; + parameter [3:0] PF0_VC_CAP_VER = 4'h1; + parameter PF0_VC_EXTENDED_COUNT = "FALSE"; + parameter PF0_VC_LOW_PRIORITY_EXTENDED_COUNT = "FALSE"; + parameter [11:0] PF1_AER_CAP_NEXTPTR = 12'h000; + parameter [11:0] PF1_ARI_CAP_NEXTPTR = 12'h000; + parameter [7:0] PF1_ARI_CAP_NEXT_FUNC = 8'h00; + parameter [4:0] PF1_ATS_CAP_INV_QUEUE_DEPTH = 5'h00; + parameter [11:0] PF1_ATS_CAP_NEXTPTR = 12'h000; + parameter PF1_ATS_CAP_ON = "FALSE"; + parameter [5:0] PF1_BAR0_APERTURE_SIZE = 6'h03; + parameter [2:0] PF1_BAR0_CONTROL = 3'h4; + parameter [4:0] PF1_BAR1_APERTURE_SIZE = 5'h00; + parameter [2:0] PF1_BAR1_CONTROL = 3'h0; + parameter [5:0] PF1_BAR2_APERTURE_SIZE = 6'h03; + parameter [2:0] PF1_BAR2_CONTROL = 3'h4; + parameter [4:0] PF1_BAR3_APERTURE_SIZE = 5'h03; + parameter [2:0] PF1_BAR3_CONTROL = 3'h0; + parameter [5:0] PF1_BAR4_APERTURE_SIZE = 6'h03; + parameter [2:0] PF1_BAR4_CONTROL = 3'h4; + parameter [4:0] PF1_BAR5_APERTURE_SIZE = 5'h03; + parameter [2:0] PF1_BAR5_CONTROL = 3'h0; + parameter [7:0] PF1_CAPABILITY_POINTER = 8'h80; + parameter [23:0] PF1_CLASS_CODE = 24'h000000; + parameter [2:0] PF1_DEV_CAP_MAX_PAYLOAD_SIZE = 3'h3; + parameter [11:0] PF1_DSN_CAP_NEXTPTR = 12'h10C; + parameter [4:0] PF1_EXPANSION_ROM_APERTURE_SIZE = 5'h03; + parameter PF1_EXPANSION_ROM_ENABLE = "FALSE"; + parameter [2:0] PF1_INTERRUPT_PIN = 3'h1; + parameter [7:0] PF1_MSIX_CAP_NEXTPTR = 8'h00; + parameter integer PF1_MSIX_CAP_PBA_BIR = 0; + parameter [28:0] PF1_MSIX_CAP_PBA_OFFSET = 29'h00000050; + parameter integer PF1_MSIX_CAP_TABLE_BIR = 0; + parameter [28:0] PF1_MSIX_CAP_TABLE_OFFSET = 29'h00000040; + parameter [10:0] PF1_MSIX_CAP_TABLE_SIZE = 11'h000; + parameter integer PF1_MSI_CAP_MULTIMSGCAP = 0; + parameter [7:0] PF1_MSI_CAP_NEXTPTR = 8'h00; + parameter PF1_MSI_CAP_PERVECMASKCAP = "FALSE"; + parameter [7:0] PF1_PCIE_CAP_NEXTPTR = 8'h00; + parameter [7:0] PF1_PM_CAP_NEXTPTR = 8'h00; + parameter [11:0] PF1_PRI_CAP_NEXTPTR = 12'h000; + parameter PF1_PRI_CAP_ON = "FALSE"; + parameter [31:0] PF1_PRI_OST_PR_CAPACITY = 32'h00000000; + parameter PF1_SRIOV_ARI_CAPBL_HIER_PRESERVED = "FALSE"; + parameter [5:0] PF1_SRIOV_BAR0_APERTURE_SIZE = 6'h03; + parameter [2:0] PF1_SRIOV_BAR0_CONTROL = 3'h4; + parameter [4:0] PF1_SRIOV_BAR1_APERTURE_SIZE = 5'h00; + parameter [2:0] PF1_SRIOV_BAR1_CONTROL = 3'h0; + parameter [5:0] PF1_SRIOV_BAR2_APERTURE_SIZE = 6'h03; + parameter [2:0] PF1_SRIOV_BAR2_CONTROL = 3'h4; + parameter [4:0] PF1_SRIOV_BAR3_APERTURE_SIZE = 5'h03; + parameter [2:0] PF1_SRIOV_BAR3_CONTROL = 3'h0; + parameter [5:0] PF1_SRIOV_BAR4_APERTURE_SIZE = 6'h03; + parameter [2:0] PF1_SRIOV_BAR4_CONTROL = 3'h4; + parameter [4:0] PF1_SRIOV_BAR5_APERTURE_SIZE = 5'h03; + parameter [2:0] PF1_SRIOV_BAR5_CONTROL = 3'h0; + parameter [15:0] PF1_SRIOV_CAP_INITIAL_VF = 16'h0000; + parameter [11:0] PF1_SRIOV_CAP_NEXTPTR = 12'h000; + parameter [15:0] PF1_SRIOV_CAP_TOTAL_VF = 16'h0000; + parameter [3:0] PF1_SRIOV_CAP_VER = 4'h1; + parameter [15:0] PF1_SRIOV_FIRST_VF_OFFSET = 16'h0000; + parameter [15:0] PF1_SRIOV_FUNC_DEP_LINK = 16'h0000; + parameter [31:0] PF1_SRIOV_SUPPORTED_PAGE_SIZE = 32'h00000000; + parameter [15:0] PF1_SRIOV_VF_DEVICE_ID = 16'h0000; + parameter [11:0] PF1_TPHR_CAP_NEXTPTR = 12'h000; + parameter [2:0] PF1_TPHR_CAP_ST_MODE_SEL = 3'h0; + parameter [11:0] PF2_AER_CAP_NEXTPTR = 12'h000; + parameter [11:0] PF2_ARI_CAP_NEXTPTR = 12'h000; + parameter [7:0] PF2_ARI_CAP_NEXT_FUNC = 8'h00; + parameter [4:0] PF2_ATS_CAP_INV_QUEUE_DEPTH = 5'h00; + parameter [11:0] PF2_ATS_CAP_NEXTPTR = 12'h000; + parameter PF2_ATS_CAP_ON = "FALSE"; + parameter [5:0] PF2_BAR0_APERTURE_SIZE = 6'h03; + parameter [2:0] PF2_BAR0_CONTROL = 3'h4; + parameter [4:0] PF2_BAR1_APERTURE_SIZE = 5'h00; + parameter [2:0] PF2_BAR1_CONTROL = 3'h0; + parameter [5:0] PF2_BAR2_APERTURE_SIZE = 6'h03; + parameter [2:0] PF2_BAR2_CONTROL = 3'h4; + parameter [4:0] PF2_BAR3_APERTURE_SIZE = 5'h03; + parameter [2:0] PF2_BAR3_CONTROL = 3'h0; + parameter [5:0] PF2_BAR4_APERTURE_SIZE = 6'h03; + parameter [2:0] PF2_BAR4_CONTROL = 3'h4; + parameter [4:0] PF2_BAR5_APERTURE_SIZE = 5'h03; + parameter [2:0] PF2_BAR5_CONTROL = 3'h0; + parameter [7:0] PF2_CAPABILITY_POINTER = 8'h80; + parameter [23:0] PF2_CLASS_CODE = 24'h000000; + parameter [2:0] PF2_DEV_CAP_MAX_PAYLOAD_SIZE = 3'h3; + parameter [11:0] PF2_DSN_CAP_NEXTPTR = 12'h10C; + parameter [4:0] PF2_EXPANSION_ROM_APERTURE_SIZE = 5'h03; + parameter PF2_EXPANSION_ROM_ENABLE = "FALSE"; + parameter [2:0] PF2_INTERRUPT_PIN = 3'h1; + parameter [7:0] PF2_MSIX_CAP_NEXTPTR = 8'h00; + parameter integer PF2_MSIX_CAP_PBA_BIR = 0; + parameter [28:0] PF2_MSIX_CAP_PBA_OFFSET = 29'h00000050; + parameter integer PF2_MSIX_CAP_TABLE_BIR = 0; + parameter [28:0] PF2_MSIX_CAP_TABLE_OFFSET = 29'h00000040; + parameter [10:0] PF2_MSIX_CAP_TABLE_SIZE = 11'h000; + parameter integer PF2_MSI_CAP_MULTIMSGCAP = 0; + parameter [7:0] PF2_MSI_CAP_NEXTPTR = 8'h00; + parameter PF2_MSI_CAP_PERVECMASKCAP = "FALSE"; + parameter [7:0] PF2_PCIE_CAP_NEXTPTR = 8'h00; + parameter [7:0] PF2_PM_CAP_NEXTPTR = 8'h00; + parameter [11:0] PF2_PRI_CAP_NEXTPTR = 12'h000; + parameter PF2_PRI_CAP_ON = "FALSE"; + parameter [31:0] PF2_PRI_OST_PR_CAPACITY = 32'h00000000; + parameter PF2_SRIOV_ARI_CAPBL_HIER_PRESERVED = "FALSE"; + parameter [5:0] PF2_SRIOV_BAR0_APERTURE_SIZE = 6'h03; + parameter [2:0] PF2_SRIOV_BAR0_CONTROL = 3'h4; + parameter [4:0] PF2_SRIOV_BAR1_APERTURE_SIZE = 5'h00; + parameter [2:0] PF2_SRIOV_BAR1_CONTROL = 3'h0; + parameter [5:0] PF2_SRIOV_BAR2_APERTURE_SIZE = 6'h03; + parameter [2:0] PF2_SRIOV_BAR2_CONTROL = 3'h4; + parameter [4:0] PF2_SRIOV_BAR3_APERTURE_SIZE = 5'h03; + parameter [2:0] PF2_SRIOV_BAR3_CONTROL = 3'h0; + parameter [5:0] PF2_SRIOV_BAR4_APERTURE_SIZE = 6'h03; + parameter [2:0] PF2_SRIOV_BAR4_CONTROL = 3'h4; + parameter [4:0] PF2_SRIOV_BAR5_APERTURE_SIZE = 5'h03; + parameter [2:0] PF2_SRIOV_BAR5_CONTROL = 3'h0; + parameter [15:0] PF2_SRIOV_CAP_INITIAL_VF = 16'h0000; + parameter [11:0] PF2_SRIOV_CAP_NEXTPTR = 12'h000; + parameter [15:0] PF2_SRIOV_CAP_TOTAL_VF = 16'h0000; + parameter [3:0] PF2_SRIOV_CAP_VER = 4'h1; + parameter [15:0] PF2_SRIOV_FIRST_VF_OFFSET = 16'h0000; + parameter [15:0] PF2_SRIOV_FUNC_DEP_LINK = 16'h0000; + parameter [31:0] PF2_SRIOV_SUPPORTED_PAGE_SIZE = 32'h00000000; + parameter [15:0] PF2_SRIOV_VF_DEVICE_ID = 16'h0000; + parameter [11:0] PF2_TPHR_CAP_NEXTPTR = 12'h000; + parameter [2:0] PF2_TPHR_CAP_ST_MODE_SEL = 3'h0; + parameter [11:0] PF3_AER_CAP_NEXTPTR = 12'h000; + parameter [11:0] PF3_ARI_CAP_NEXTPTR = 12'h000; + parameter [7:0] PF3_ARI_CAP_NEXT_FUNC = 8'h00; + parameter [4:0] PF3_ATS_CAP_INV_QUEUE_DEPTH = 5'h00; + parameter [11:0] PF3_ATS_CAP_NEXTPTR = 12'h000; + parameter PF3_ATS_CAP_ON = "FALSE"; + parameter [5:0] PF3_BAR0_APERTURE_SIZE = 6'h03; + parameter [2:0] PF3_BAR0_CONTROL = 3'h4; + parameter [4:0] PF3_BAR1_APERTURE_SIZE = 5'h00; + parameter [2:0] PF3_BAR1_CONTROL = 3'h0; + parameter [5:0] PF3_BAR2_APERTURE_SIZE = 6'h03; + parameter [2:0] PF3_BAR2_CONTROL = 3'h4; + parameter [4:0] PF3_BAR3_APERTURE_SIZE = 5'h03; + parameter [2:0] PF3_BAR3_CONTROL = 3'h0; + parameter [5:0] PF3_BAR4_APERTURE_SIZE = 6'h03; + parameter [2:0] PF3_BAR4_CONTROL = 3'h4; + parameter [4:0] PF3_BAR5_APERTURE_SIZE = 5'h03; + parameter [2:0] PF3_BAR5_CONTROL = 3'h0; + parameter [7:0] PF3_CAPABILITY_POINTER = 8'h80; + parameter [23:0] PF3_CLASS_CODE = 24'h000000; + parameter [2:0] PF3_DEV_CAP_MAX_PAYLOAD_SIZE = 3'h3; + parameter [11:0] PF3_DSN_CAP_NEXTPTR = 12'h10C; + parameter [4:0] PF3_EXPANSION_ROM_APERTURE_SIZE = 5'h03; + parameter PF3_EXPANSION_ROM_ENABLE = "FALSE"; + parameter [2:0] PF3_INTERRUPT_PIN = 3'h1; + parameter [7:0] PF3_MSIX_CAP_NEXTPTR = 8'h00; + parameter integer PF3_MSIX_CAP_PBA_BIR = 0; + parameter [28:0] PF3_MSIX_CAP_PBA_OFFSET = 29'h00000050; + parameter integer PF3_MSIX_CAP_TABLE_BIR = 0; + parameter [28:0] PF3_MSIX_CAP_TABLE_OFFSET = 29'h00000040; + parameter [10:0] PF3_MSIX_CAP_TABLE_SIZE = 11'h000; + parameter integer PF3_MSI_CAP_MULTIMSGCAP = 0; + parameter [7:0] PF3_MSI_CAP_NEXTPTR = 8'h00; + parameter PF3_MSI_CAP_PERVECMASKCAP = "FALSE"; + parameter [7:0] PF3_PCIE_CAP_NEXTPTR = 8'h00; + parameter [7:0] PF3_PM_CAP_NEXTPTR = 8'h00; + parameter [11:0] PF3_PRI_CAP_NEXTPTR = 12'h000; + parameter PF3_PRI_CAP_ON = "FALSE"; + parameter [31:0] PF3_PRI_OST_PR_CAPACITY = 32'h00000000; + parameter PF3_SRIOV_ARI_CAPBL_HIER_PRESERVED = "FALSE"; + parameter [5:0] PF3_SRIOV_BAR0_APERTURE_SIZE = 6'h03; + parameter [2:0] PF3_SRIOV_BAR0_CONTROL = 3'h4; + parameter [4:0] PF3_SRIOV_BAR1_APERTURE_SIZE = 5'h00; + parameter [2:0] PF3_SRIOV_BAR1_CONTROL = 3'h0; + parameter [5:0] PF3_SRIOV_BAR2_APERTURE_SIZE = 6'h03; + parameter [2:0] PF3_SRIOV_BAR2_CONTROL = 3'h4; + parameter [4:0] PF3_SRIOV_BAR3_APERTURE_SIZE = 5'h03; + parameter [2:0] PF3_SRIOV_BAR3_CONTROL = 3'h0; + parameter [5:0] PF3_SRIOV_BAR4_APERTURE_SIZE = 6'h03; + parameter [2:0] PF3_SRIOV_BAR4_CONTROL = 3'h4; + parameter [4:0] PF3_SRIOV_BAR5_APERTURE_SIZE = 5'h03; + parameter [2:0] PF3_SRIOV_BAR5_CONTROL = 3'h0; + parameter [15:0] PF3_SRIOV_CAP_INITIAL_VF = 16'h0000; + parameter [11:0] PF3_SRIOV_CAP_NEXTPTR = 12'h000; + parameter [15:0] PF3_SRIOV_CAP_TOTAL_VF = 16'h0000; + parameter [3:0] PF3_SRIOV_CAP_VER = 4'h1; + parameter [15:0] PF3_SRIOV_FIRST_VF_OFFSET = 16'h0000; + parameter [15:0] PF3_SRIOV_FUNC_DEP_LINK = 16'h0000; + parameter [31:0] PF3_SRIOV_SUPPORTED_PAGE_SIZE = 32'h00000000; + parameter [15:0] PF3_SRIOV_VF_DEVICE_ID = 16'h0000; + parameter [11:0] PF3_TPHR_CAP_NEXTPTR = 12'h000; + parameter [2:0] PF3_TPHR_CAP_ST_MODE_SEL = 3'h0; + parameter PL_CFG_STATE_ROBUSTNESS_ENABLE = "TRUE"; + parameter PL_CTRL_SKP_GEN_ENABLE = "FALSE"; + parameter PL_CTRL_SKP_PARITY_AND_CRC_CHECK_DISABLE = "TRUE"; + parameter PL_DEEMPH_SOURCE_SELECT = "TRUE"; + parameter PL_DESKEW_ON_SKIP_IN_GEN12 = "FALSE"; + parameter PL_DISABLE_AUTO_EQ_SPEED_CHANGE_TO_GEN3 = "FALSE"; + parameter PL_DISABLE_AUTO_EQ_SPEED_CHANGE_TO_GEN4 = "FALSE"; + parameter PL_DISABLE_AUTO_SPEED_CHANGE_TO_GEN2 = "FALSE"; + parameter PL_DISABLE_DC_BALANCE = "FALSE"; + parameter PL_DISABLE_EI_INFER_IN_L0 = "FALSE"; + parameter PL_DISABLE_LANE_REVERSAL = "FALSE"; + parameter [1:0] PL_DISABLE_LFSR_UPDATE_ON_SKP = 2'h0; + parameter PL_DISABLE_RETRAIN_ON_EB_ERROR = "FALSE"; + parameter PL_DISABLE_RETRAIN_ON_FRAMING_ERROR = "FALSE"; + parameter [15:0] PL_DISABLE_RETRAIN_ON_SPECIFIC_FRAMING_ERROR = 16'h0000; + parameter PL_DISABLE_UPCONFIG_CAPABLE = "FALSE"; + parameter [1:0] PL_EQ_ADAPT_DISABLE_COEFF_CHECK = 2'h0; + parameter [1:0] PL_EQ_ADAPT_DISABLE_PRESET_CHECK = 2'h0; + parameter [4:0] PL_EQ_ADAPT_ITER_COUNT = 5'h02; + parameter [1:0] PL_EQ_ADAPT_REJECT_RETRY_COUNT = 2'h1; + parameter [1:0] PL_EQ_BYPASS_PHASE23 = 2'h0; + parameter [5:0] PL_EQ_DEFAULT_RX_PRESET_HINT = 6'h33; + parameter [7:0] PL_EQ_DEFAULT_TX_PRESET = 8'h44; + parameter PL_EQ_DISABLE_MISMATCH_CHECK = "TRUE"; + parameter [1:0] PL_EQ_RX_ADAPT_EQ_PHASE0 = 2'h0; + parameter [1:0] PL_EQ_RX_ADAPT_EQ_PHASE1 = 2'h0; + parameter PL_EQ_SHORT_ADAPT_PHASE = "FALSE"; + parameter PL_EQ_TX_8G_EQ_TS2_ENABLE = "FALSE"; + parameter PL_EXIT_LOOPBACK_ON_EI_ENTRY = "TRUE"; + parameter PL_INFER_EI_DISABLE_LPBK_ACTIVE = "TRUE"; + parameter PL_INFER_EI_DISABLE_REC_RC = "FALSE"; + parameter PL_INFER_EI_DISABLE_REC_SPD = "FALSE"; + parameter [31:0] PL_LANE0_EQ_CONTROL = 32'h00003F00; + parameter [31:0] PL_LANE10_EQ_CONTROL = 32'h00003F00; + parameter [31:0] PL_LANE11_EQ_CONTROL = 32'h00003F00; + parameter [31:0] PL_LANE12_EQ_CONTROL = 32'h00003F00; + parameter [31:0] PL_LANE13_EQ_CONTROL = 32'h00003F00; + parameter [31:0] PL_LANE14_EQ_CONTROL = 32'h00003F00; + parameter [31:0] PL_LANE15_EQ_CONTROL = 32'h00003F00; + parameter [31:0] PL_LANE1_EQ_CONTROL = 32'h00003F00; + parameter [31:0] PL_LANE2_EQ_CONTROL = 32'h00003F00; + parameter [31:0] PL_LANE3_EQ_CONTROL = 32'h00003F00; + parameter [31:0] PL_LANE4_EQ_CONTROL = 32'h00003F00; + parameter [31:0] PL_LANE5_EQ_CONTROL = 32'h00003F00; + parameter [31:0] PL_LANE6_EQ_CONTROL = 32'h00003F00; + parameter [31:0] PL_LANE7_EQ_CONTROL = 32'h00003F00; + parameter [31:0] PL_LANE8_EQ_CONTROL = 32'h00003F00; + parameter [31:0] PL_LANE9_EQ_CONTROL = 32'h00003F00; + parameter [3:0] PL_LINK_CAP_MAX_LINK_SPEED = 4'h4; + parameter [4:0] PL_LINK_CAP_MAX_LINK_WIDTH = 5'h08; + parameter integer PL_N_FTS = 255; + parameter PL_QUIESCE_GUARANTEE_DISABLE = "FALSE"; + parameter PL_REDO_EQ_SOURCE_SELECT = "TRUE"; + parameter [7:0] PL_REPORT_ALL_PHY_ERRORS = 8'h00; + parameter [1:0] PL_RX_ADAPT_TIMER_CLWS_CLOBBER_TX_TS = 2'h0; + parameter [3:0] PL_RX_ADAPT_TIMER_CLWS_GEN3 = 4'h0; + parameter [3:0] PL_RX_ADAPT_TIMER_CLWS_GEN4 = 4'h0; + parameter [1:0] PL_RX_ADAPT_TIMER_RRL_CLOBBER_TX_TS = 2'h0; + parameter [3:0] PL_RX_ADAPT_TIMER_RRL_GEN3 = 4'h0; + parameter [3:0] PL_RX_ADAPT_TIMER_RRL_GEN4 = 4'h0; + parameter [1:0] PL_RX_L0S_EXIT_TO_RECOVERY = 2'h0; + parameter [1:0] PL_SIM_FAST_LINK_TRAINING = 2'h0; + parameter PL_SRIS_ENABLE = "FALSE"; + parameter [6:0] PL_SRIS_SKPOS_GEN_SPD_VEC = 7'h00; + parameter [6:0] PL_SRIS_SKPOS_REC_SPD_VEC = 7'h00; + parameter PL_UPSTREAM_FACING = "TRUE"; + parameter [15:0] PL_USER_SPARE = 16'h0000; + parameter [15:0] PL_USER_SPARE2 = 16'h0000; + parameter [15:0] PM_ASPML0S_TIMEOUT = 16'h1500; + parameter [19:0] PM_ASPML1_ENTRY_DELAY = 20'h003E8; + parameter PM_ENABLE_L23_ENTRY = "FALSE"; + parameter PM_ENABLE_SLOT_POWER_CAPTURE = "TRUE"; + parameter [31:0] PM_L1_REENTRY_DELAY = 32'h00000100; + parameter [19:0] PM_PME_SERVICE_TIMEOUT_DELAY = 20'h00000; + parameter [15:0] PM_PME_TURNOFF_ACK_DELAY = 16'h0100; + parameter SIM_DEVICE = "ULTRASCALE_PLUS"; + parameter [31:0] SIM_JTAG_IDCODE = 32'h00000000; + parameter SIM_VERSION = "1.0"; + parameter SPARE_BIT0 = "FALSE"; + parameter integer SPARE_BIT1 = 0; + parameter integer SPARE_BIT2 = 0; + parameter SPARE_BIT3 = "FALSE"; + parameter integer SPARE_BIT4 = 0; + parameter integer SPARE_BIT5 = 0; + parameter integer SPARE_BIT6 = 0; + parameter integer SPARE_BIT7 = 0; + parameter integer SPARE_BIT8 = 0; + parameter [7:0] SPARE_BYTE0 = 8'h00; + parameter [7:0] SPARE_BYTE1 = 8'h00; + parameter [7:0] SPARE_BYTE2 = 8'h00; + parameter [7:0] SPARE_BYTE3 = 8'h00; + parameter [31:0] SPARE_WORD0 = 32'h00000000; + parameter [31:0] SPARE_WORD1 = 32'h00000000; + parameter [31:0] SPARE_WORD2 = 32'h00000000; + parameter [31:0] SPARE_WORD3 = 32'h00000000; + parameter [3:0] SRIOV_CAP_ENABLE = 4'h0; + parameter TL2CFG_IF_PARITY_CHK = "TRUE"; + parameter [1:0] TL_COMPLETION_RAM_NUM_TLPS = 2'h0; + parameter [1:0] TL_COMPLETION_RAM_SIZE = 2'h1; + parameter [11:0] TL_CREDITS_CD = 12'h000; + parameter [11:0] TL_CREDITS_CD_VC1 = 12'h000; + parameter [7:0] TL_CREDITS_CH = 8'h00; + parameter [7:0] TL_CREDITS_CH_VC1 = 8'h00; + parameter [11:0] TL_CREDITS_NPD = 12'h004; + parameter [11:0] TL_CREDITS_NPD_VC1 = 12'h000; + parameter [7:0] TL_CREDITS_NPH = 8'h20; + parameter [7:0] TL_CREDITS_NPH_VC1 = 8'h01; + parameter [11:0] TL_CREDITS_PD = 12'h0E0; + parameter [11:0] TL_CREDITS_PD_VC1 = 12'h3E0; + parameter [7:0] TL_CREDITS_PH = 8'h20; + parameter [7:0] TL_CREDITS_PH_VC1 = 8'h20; + parameter [4:0] TL_FC_UPDATE_MIN_INTERVAL_TIME = 5'h02; + parameter [4:0] TL_FC_UPDATE_MIN_INTERVAL_TIME_VC1 = 5'h02; + parameter [4:0] TL_FC_UPDATE_MIN_INTERVAL_TLP_COUNT = 5'h08; + parameter [4:0] TL_FC_UPDATE_MIN_INTERVAL_TLP_COUNT_VC1 = 5'h08; + parameter TL_FEATURE_ENABLE_FC_SCALING = "FALSE"; + parameter [1:0] TL_PF_ENABLE_REG = 2'h0; + parameter [0:0] TL_POSTED_RAM_SIZE = 1'h0; + parameter TL_RX_COMPLETION_FROM_RAM_READ_PIPELINE = "FALSE"; + parameter TL_RX_COMPLETION_TO_RAM_READ_PIPELINE = "FALSE"; + parameter TL_RX_COMPLETION_TO_RAM_WRITE_PIPELINE = "FALSE"; + parameter TL_RX_POSTED_FROM_RAM_READ_PIPELINE = "FALSE"; + parameter TL_RX_POSTED_TO_RAM_READ_PIPELINE = "FALSE"; + parameter TL_RX_POSTED_TO_RAM_WRITE_PIPELINE = "FALSE"; + parameter TL_TX_MUX_STRICT_PRIORITY = "TRUE"; + parameter TL_TX_TLP_STRADDLE_ENABLE = "FALSE"; + parameter TL_TX_TLP_TERMINATE_PARITY = "FALSE"; + parameter [15:0] TL_USER_SPARE = 16'h0000; + parameter TPH_FROM_RAM_PIPELINE = "FALSE"; + parameter TPH_TO_RAM_PIPELINE = "FALSE"; + parameter [7:0] VF0_CAPABILITY_POINTER = 8'h80; + parameter [11:0] VFG0_ARI_CAP_NEXTPTR = 12'h000; + parameter [4:0] VFG0_ATS_CAP_INV_QUEUE_DEPTH = 5'h00; + parameter [11:0] VFG0_ATS_CAP_NEXTPTR = 12'h000; + parameter VFG0_ATS_CAP_ON = "FALSE"; + parameter [7:0] VFG0_MSIX_CAP_NEXTPTR = 8'h00; + parameter integer VFG0_MSIX_CAP_PBA_BIR = 0; + parameter [28:0] VFG0_MSIX_CAP_PBA_OFFSET = 29'h00000050; + parameter integer VFG0_MSIX_CAP_TABLE_BIR = 0; + parameter [28:0] VFG0_MSIX_CAP_TABLE_OFFSET = 29'h00000040; + parameter [10:0] VFG0_MSIX_CAP_TABLE_SIZE = 11'h000; + parameter [7:0] VFG0_PCIE_CAP_NEXTPTR = 8'h00; + parameter [11:0] VFG0_TPHR_CAP_NEXTPTR = 12'h000; + parameter [2:0] VFG0_TPHR_CAP_ST_MODE_SEL = 3'h0; + parameter [11:0] VFG1_ARI_CAP_NEXTPTR = 12'h000; + parameter [4:0] VFG1_ATS_CAP_INV_QUEUE_DEPTH = 5'h00; + parameter [11:0] VFG1_ATS_CAP_NEXTPTR = 12'h000; + parameter VFG1_ATS_CAP_ON = "FALSE"; + parameter [7:0] VFG1_MSIX_CAP_NEXTPTR = 8'h00; + parameter integer VFG1_MSIX_CAP_PBA_BIR = 0; + parameter [28:0] VFG1_MSIX_CAP_PBA_OFFSET = 29'h00000050; + parameter integer VFG1_MSIX_CAP_TABLE_BIR = 0; + parameter [28:0] VFG1_MSIX_CAP_TABLE_OFFSET = 29'h00000040; + parameter [10:0] VFG1_MSIX_CAP_TABLE_SIZE = 11'h000; + parameter [7:0] VFG1_PCIE_CAP_NEXTPTR = 8'h00; + parameter [11:0] VFG1_TPHR_CAP_NEXTPTR = 12'h000; + parameter [2:0] VFG1_TPHR_CAP_ST_MODE_SEL = 3'h0; + parameter [11:0] VFG2_ARI_CAP_NEXTPTR = 12'h000; + parameter [4:0] VFG2_ATS_CAP_INV_QUEUE_DEPTH = 5'h00; + parameter [11:0] VFG2_ATS_CAP_NEXTPTR = 12'h000; + parameter VFG2_ATS_CAP_ON = "FALSE"; + parameter [7:0] VFG2_MSIX_CAP_NEXTPTR = 8'h00; + parameter integer VFG2_MSIX_CAP_PBA_BIR = 0; + parameter [28:0] VFG2_MSIX_CAP_PBA_OFFSET = 29'h00000050; + parameter integer VFG2_MSIX_CAP_TABLE_BIR = 0; + parameter [28:0] VFG2_MSIX_CAP_TABLE_OFFSET = 29'h00000040; + parameter [10:0] VFG2_MSIX_CAP_TABLE_SIZE = 11'h000; + parameter [7:0] VFG2_PCIE_CAP_NEXTPTR = 8'h00; + parameter [11:0] VFG2_TPHR_CAP_NEXTPTR = 12'h000; + parameter [2:0] VFG2_TPHR_CAP_ST_MODE_SEL = 3'h0; + parameter [11:0] VFG3_ARI_CAP_NEXTPTR = 12'h000; + parameter [4:0] VFG3_ATS_CAP_INV_QUEUE_DEPTH = 5'h00; + parameter [11:0] VFG3_ATS_CAP_NEXTPTR = 12'h000; + parameter VFG3_ATS_CAP_ON = "FALSE"; + parameter [7:0] VFG3_MSIX_CAP_NEXTPTR = 8'h00; + parameter integer VFG3_MSIX_CAP_PBA_BIR = 0; + parameter [28:0] VFG3_MSIX_CAP_PBA_OFFSET = 29'h00000050; + parameter integer VFG3_MSIX_CAP_TABLE_BIR = 0; + parameter [28:0] VFG3_MSIX_CAP_TABLE_OFFSET = 29'h00000040; + parameter [10:0] VFG3_MSIX_CAP_TABLE_SIZE = 11'h000; + parameter [7:0] VFG3_PCIE_CAP_NEXTPTR = 8'h00; + parameter [11:0] VFG3_TPHR_CAP_NEXTPTR = 12'h000; + parameter [2:0] VFG3_TPHR_CAP_ST_MODE_SEL = 3'h0; + output [7:0] AXIUSEROUT; + output CCIXTXCREDIT; + output [7:0] CFGBUSNUMBER; + output [1:0] CFGCURRENTSPEED; + output CFGERRCOROUT; + output CFGERRFATALOUT; + output CFGERRNONFATALOUT; + output [7:0] CFGEXTFUNCTIONNUMBER; + output CFGEXTREADRECEIVED; + output [9:0] CFGEXTREGISTERNUMBER; + output [3:0] CFGEXTWRITEBYTEENABLE; + output [31:0] CFGEXTWRITEDATA; + output CFGEXTWRITERECEIVED; + output [11:0] CFGFCCPLD; + output [7:0] CFGFCCPLH; + output [11:0] CFGFCNPD; + output [7:0] CFGFCNPH; + output [11:0] CFGFCPD; + output [7:0] CFGFCPH; + output [3:0] CFGFLRINPROCESS; + output [11:0] CFGFUNCTIONPOWERSTATE; + output [15:0] CFGFUNCTIONSTATUS; + output CFGHOTRESETOUT; + output [31:0] CFGINTERRUPTMSIDATA; + output [3:0] CFGINTERRUPTMSIENABLE; + output CFGINTERRUPTMSIFAIL; + output CFGINTERRUPTMSIMASKUPDATE; + output [11:0] CFGINTERRUPTMSIMMENABLE; + output CFGINTERRUPTMSISENT; + output [3:0] CFGINTERRUPTMSIXENABLE; + output [3:0] CFGINTERRUPTMSIXMASK; + output CFGINTERRUPTMSIXVECPENDINGSTATUS; + output CFGINTERRUPTSENT; + output [1:0] CFGLINKPOWERSTATE; + output [4:0] CFGLOCALERROROUT; + output CFGLOCALERRORVALID; + output CFGLTRENABLE; + output [5:0] CFGLTSSMSTATE; + output [1:0] CFGMAXPAYLOAD; + output [2:0] CFGMAXREADREQ; + output [31:0] CFGMGMTREADDATA; + output CFGMGMTREADWRITEDONE; + output CFGMSGRECEIVED; + output [7:0] CFGMSGRECEIVEDDATA; + output [4:0] CFGMSGRECEIVEDTYPE; + output CFGMSGTRANSMITDONE; + output [12:0] CFGMSIXRAMADDRESS; + output CFGMSIXRAMREADENABLE; + output [3:0] CFGMSIXRAMWRITEBYTEENABLE; + output [35:0] CFGMSIXRAMWRITEDATA; + output [2:0] CFGNEGOTIATEDWIDTH; + output [1:0] CFGOBFFENABLE; + output CFGPHYLINKDOWN; + output [1:0] CFGPHYLINKSTATUS; + output CFGPLSTATUSCHANGE; + output CFGPOWERSTATECHANGEINTERRUPT; + output [3:0] CFGRCBSTATUS; + output [1:0] CFGRXPMSTATE; + output [11:0] CFGTPHRAMADDRESS; + output CFGTPHRAMREADENABLE; + output [3:0] CFGTPHRAMWRITEBYTEENABLE; + output [35:0] CFGTPHRAMWRITEDATA; + output [3:0] CFGTPHREQUESTERENABLE; + output [11:0] CFGTPHSTMODE; + output [1:0] CFGTXPMSTATE; + output CFGVC1ENABLE; + output CFGVC1NEGOTIATIONPENDING; + output CONFMCAPDESIGNSWITCH; + output CONFMCAPEOS; + output CONFMCAPINUSEBYPCIE; + output CONFREQREADY; + output [31:0] CONFRESPRDATA; + output CONFRESPVALID; + output [129:0] DBGCCIXOUT; + output [31:0] DBGCTRL0OUT; + output [31:0] DBGCTRL1OUT; + output [255:0] DBGDATA0OUT; + output [255:0] DBGDATA1OUT; + output [15:0] DRPDO; + output DRPRDY; + output [45:0] MAXISCCIXRXTUSER; + output MAXISCCIXRXTVALID; + output [255:0] MAXISCQTDATA; + output [7:0] MAXISCQTKEEP; + output MAXISCQTLAST; + output [87:0] MAXISCQTUSER; + output MAXISCQTVALID; + output [255:0] MAXISRCTDATA; + output [7:0] MAXISRCTKEEP; + output MAXISRCTLAST; + output [74:0] MAXISRCTUSER; + output MAXISRCTVALID; + output [8:0] MIREPLAYRAMADDRESS0; + output [8:0] MIREPLAYRAMADDRESS1; + output MIREPLAYRAMREADENABLE0; + output MIREPLAYRAMREADENABLE1; + output [127:0] MIREPLAYRAMWRITEDATA0; + output [127:0] MIREPLAYRAMWRITEDATA1; + output MIREPLAYRAMWRITEENABLE0; + output MIREPLAYRAMWRITEENABLE1; + output [8:0] MIRXCOMPLETIONRAMREADADDRESS0; + output [8:0] MIRXCOMPLETIONRAMREADADDRESS1; + output [1:0] MIRXCOMPLETIONRAMREADENABLE0; + output [1:0] MIRXCOMPLETIONRAMREADENABLE1; + output [8:0] MIRXCOMPLETIONRAMWRITEADDRESS0; + output [8:0] MIRXCOMPLETIONRAMWRITEADDRESS1; + output [143:0] MIRXCOMPLETIONRAMWRITEDATA0; + output [143:0] MIRXCOMPLETIONRAMWRITEDATA1; + output [1:0] MIRXCOMPLETIONRAMWRITEENABLE0; + output [1:0] MIRXCOMPLETIONRAMWRITEENABLE1; + output [8:0] MIRXPOSTEDREQUESTRAMREADADDRESS0; + output [8:0] MIRXPOSTEDREQUESTRAMREADADDRESS1; + output MIRXPOSTEDREQUESTRAMREADENABLE0; + output MIRXPOSTEDREQUESTRAMREADENABLE1; + output [8:0] MIRXPOSTEDREQUESTRAMWRITEADDRESS0; + output [8:0] MIRXPOSTEDREQUESTRAMWRITEADDRESS1; + output [143:0] MIRXPOSTEDREQUESTRAMWRITEDATA0; + output [143:0] MIRXPOSTEDREQUESTRAMWRITEDATA1; + output MIRXPOSTEDREQUESTRAMWRITEENABLE0; + output MIRXPOSTEDREQUESTRAMWRITEENABLE1; + output [5:0] PCIECQNPREQCOUNT; + output PCIEPERST0B; + output PCIEPERST1B; + output [5:0] PCIERQSEQNUM0; + output [5:0] PCIERQSEQNUM1; + output PCIERQSEQNUMVLD0; + output PCIERQSEQNUMVLD1; + output [7:0] PCIERQTAG0; + output [7:0] PCIERQTAG1; + output [3:0] PCIERQTAGAV; + output PCIERQTAGVLD0; + output PCIERQTAGVLD1; + output [3:0] PCIETFCNPDAV; + output [3:0] PCIETFCNPHAV; + output [1:0] PIPERX00EQCONTROL; + output PIPERX00POLARITY; + output [1:0] PIPERX01EQCONTROL; + output PIPERX01POLARITY; + output [1:0] PIPERX02EQCONTROL; + output PIPERX02POLARITY; + output [1:0] PIPERX03EQCONTROL; + output PIPERX03POLARITY; + output [1:0] PIPERX04EQCONTROL; + output PIPERX04POLARITY; + output [1:0] PIPERX05EQCONTROL; + output PIPERX05POLARITY; + output [1:0] PIPERX06EQCONTROL; + output PIPERX06POLARITY; + output [1:0] PIPERX07EQCONTROL; + output PIPERX07POLARITY; + output [1:0] PIPERX08EQCONTROL; + output PIPERX08POLARITY; + output [1:0] PIPERX09EQCONTROL; + output PIPERX09POLARITY; + output [1:0] PIPERX10EQCONTROL; + output PIPERX10POLARITY; + output [1:0] PIPERX11EQCONTROL; + output PIPERX11POLARITY; + output [1:0] PIPERX12EQCONTROL; + output PIPERX12POLARITY; + output [1:0] PIPERX13EQCONTROL; + output PIPERX13POLARITY; + output [1:0] PIPERX14EQCONTROL; + output PIPERX14POLARITY; + output [1:0] PIPERX15EQCONTROL; + output PIPERX15POLARITY; + output [5:0] PIPERXEQLPLFFS; + output [3:0] PIPERXEQLPTXPRESET; + output [1:0] PIPETX00CHARISK; + output PIPETX00COMPLIANCE; + output [31:0] PIPETX00DATA; + output PIPETX00DATAVALID; + output PIPETX00ELECIDLE; + output [1:0] PIPETX00EQCONTROL; + output [5:0] PIPETX00EQDEEMPH; + output [1:0] PIPETX00POWERDOWN; + output PIPETX00STARTBLOCK; + output [1:0] PIPETX00SYNCHEADER; + output [1:0] PIPETX01CHARISK; + output PIPETX01COMPLIANCE; + output [31:0] PIPETX01DATA; + output PIPETX01DATAVALID; + output PIPETX01ELECIDLE; + output [1:0] PIPETX01EQCONTROL; + output [5:0] PIPETX01EQDEEMPH; + output [1:0] PIPETX01POWERDOWN; + output PIPETX01STARTBLOCK; + output [1:0] PIPETX01SYNCHEADER; + output [1:0] PIPETX02CHARISK; + output PIPETX02COMPLIANCE; + output [31:0] PIPETX02DATA; + output PIPETX02DATAVALID; + output PIPETX02ELECIDLE; + output [1:0] PIPETX02EQCONTROL; + output [5:0] PIPETX02EQDEEMPH; + output [1:0] PIPETX02POWERDOWN; + output PIPETX02STARTBLOCK; + output [1:0] PIPETX02SYNCHEADER; + output [1:0] PIPETX03CHARISK; + output PIPETX03COMPLIANCE; + output [31:0] PIPETX03DATA; + output PIPETX03DATAVALID; + output PIPETX03ELECIDLE; + output [1:0] PIPETX03EQCONTROL; + output [5:0] PIPETX03EQDEEMPH; + output [1:0] PIPETX03POWERDOWN; + output PIPETX03STARTBLOCK; + output [1:0] PIPETX03SYNCHEADER; + output [1:0] PIPETX04CHARISK; + output PIPETX04COMPLIANCE; + output [31:0] PIPETX04DATA; + output PIPETX04DATAVALID; + output PIPETX04ELECIDLE; + output [1:0] PIPETX04EQCONTROL; + output [5:0] PIPETX04EQDEEMPH; + output [1:0] PIPETX04POWERDOWN; + output PIPETX04STARTBLOCK; + output [1:0] PIPETX04SYNCHEADER; + output [1:0] PIPETX05CHARISK; + output PIPETX05COMPLIANCE; + output [31:0] PIPETX05DATA; + output PIPETX05DATAVALID; + output PIPETX05ELECIDLE; + output [1:0] PIPETX05EQCONTROL; + output [5:0] PIPETX05EQDEEMPH; + output [1:0] PIPETX05POWERDOWN; + output PIPETX05STARTBLOCK; + output [1:0] PIPETX05SYNCHEADER; + output [1:0] PIPETX06CHARISK; + output PIPETX06COMPLIANCE; + output [31:0] PIPETX06DATA; + output PIPETX06DATAVALID; + output PIPETX06ELECIDLE; + output [1:0] PIPETX06EQCONTROL; + output [5:0] PIPETX06EQDEEMPH; + output [1:0] PIPETX06POWERDOWN; + output PIPETX06STARTBLOCK; + output [1:0] PIPETX06SYNCHEADER; + output [1:0] PIPETX07CHARISK; + output PIPETX07COMPLIANCE; + output [31:0] PIPETX07DATA; + output PIPETX07DATAVALID; + output PIPETX07ELECIDLE; + output [1:0] PIPETX07EQCONTROL; + output [5:0] PIPETX07EQDEEMPH; + output [1:0] PIPETX07POWERDOWN; + output PIPETX07STARTBLOCK; + output [1:0] PIPETX07SYNCHEADER; + output [1:0] PIPETX08CHARISK; + output PIPETX08COMPLIANCE; + output [31:0] PIPETX08DATA; + output PIPETX08DATAVALID; + output PIPETX08ELECIDLE; + output [1:0] PIPETX08EQCONTROL; + output [5:0] PIPETX08EQDEEMPH; + output [1:0] PIPETX08POWERDOWN; + output PIPETX08STARTBLOCK; + output [1:0] PIPETX08SYNCHEADER; + output [1:0] PIPETX09CHARISK; + output PIPETX09COMPLIANCE; + output [31:0] PIPETX09DATA; + output PIPETX09DATAVALID; + output PIPETX09ELECIDLE; + output [1:0] PIPETX09EQCONTROL; + output [5:0] PIPETX09EQDEEMPH; + output [1:0] PIPETX09POWERDOWN; + output PIPETX09STARTBLOCK; + output [1:0] PIPETX09SYNCHEADER; + output [1:0] PIPETX10CHARISK; + output PIPETX10COMPLIANCE; + output [31:0] PIPETX10DATA; + output PIPETX10DATAVALID; + output PIPETX10ELECIDLE; + output [1:0] PIPETX10EQCONTROL; + output [5:0] PIPETX10EQDEEMPH; + output [1:0] PIPETX10POWERDOWN; + output PIPETX10STARTBLOCK; + output [1:0] PIPETX10SYNCHEADER; + output [1:0] PIPETX11CHARISK; + output PIPETX11COMPLIANCE; + output [31:0] PIPETX11DATA; + output PIPETX11DATAVALID; + output PIPETX11ELECIDLE; + output [1:0] PIPETX11EQCONTROL; + output [5:0] PIPETX11EQDEEMPH; + output [1:0] PIPETX11POWERDOWN; + output PIPETX11STARTBLOCK; + output [1:0] PIPETX11SYNCHEADER; + output [1:0] PIPETX12CHARISK; + output PIPETX12COMPLIANCE; + output [31:0] PIPETX12DATA; + output PIPETX12DATAVALID; + output PIPETX12ELECIDLE; + output [1:0] PIPETX12EQCONTROL; + output [5:0] PIPETX12EQDEEMPH; + output [1:0] PIPETX12POWERDOWN; + output PIPETX12STARTBLOCK; + output [1:0] PIPETX12SYNCHEADER; + output [1:0] PIPETX13CHARISK; + output PIPETX13COMPLIANCE; + output [31:0] PIPETX13DATA; + output PIPETX13DATAVALID; + output PIPETX13ELECIDLE; + output [1:0] PIPETX13EQCONTROL; + output [5:0] PIPETX13EQDEEMPH; + output [1:0] PIPETX13POWERDOWN; + output PIPETX13STARTBLOCK; + output [1:0] PIPETX13SYNCHEADER; + output [1:0] PIPETX14CHARISK; + output PIPETX14COMPLIANCE; + output [31:0] PIPETX14DATA; + output PIPETX14DATAVALID; + output PIPETX14ELECIDLE; + output [1:0] PIPETX14EQCONTROL; + output [5:0] PIPETX14EQDEEMPH; + output [1:0] PIPETX14POWERDOWN; + output PIPETX14STARTBLOCK; + output [1:0] PIPETX14SYNCHEADER; + output [1:0] PIPETX15CHARISK; + output PIPETX15COMPLIANCE; + output [31:0] PIPETX15DATA; + output PIPETX15DATAVALID; + output PIPETX15ELECIDLE; + output [1:0] PIPETX15EQCONTROL; + output [5:0] PIPETX15EQDEEMPH; + output [1:0] PIPETX15POWERDOWN; + output PIPETX15STARTBLOCK; + output [1:0] PIPETX15SYNCHEADER; + output PIPETXDEEMPH; + output [2:0] PIPETXMARGIN; + output [1:0] PIPETXRATE; + output PIPETXRCVRDET; + output PIPETXRESET; + output PIPETXSWING; + output PLEQINPROGRESS; + output [1:0] PLEQPHASE; + output PLGEN34EQMISMATCH; + output [3:0] SAXISCCTREADY; + output [3:0] SAXISRQTREADY; + output [23:0] USERSPAREOUT; + input [7:0] AXIUSERIN; + input CCIXOPTIMIZEDTLPTXANDRXENABLE; + input CCIXRXCORRECTABLEERRORDETECTED; + input CCIXRXFIFOOVERFLOW; + input CCIXRXTLPFORWARDED0; + input CCIXRXTLPFORWARDED1; + input [5:0] CCIXRXTLPFORWARDEDLENGTH0; + input [5:0] CCIXRXTLPFORWARDEDLENGTH1; + input CCIXRXUNCORRECTABLEERRORDETECTED; + input CFGCONFIGSPACEENABLE; + input [15:0] CFGDEVIDPF0; + input [15:0] CFGDEVIDPF1; + input [15:0] CFGDEVIDPF2; + input [15:0] CFGDEVIDPF3; + input [7:0] CFGDSBUSNUMBER; + input [4:0] CFGDSDEVICENUMBER; + input [2:0] CFGDSFUNCTIONNUMBER; + input [63:0] CFGDSN; + input [7:0] CFGDSPORTNUMBER; + input CFGERRCORIN; + input CFGERRUNCORIN; + input [31:0] CFGEXTREADDATA; + input CFGEXTREADDATAVALID; + input [2:0] CFGFCSEL; + input CFGFCVCSEL; + input [3:0] CFGFLRDONE; + input CFGHOTRESETIN; + input [3:0] CFGINTERRUPTINT; + input [2:0] CFGINTERRUPTMSIATTR; + input [7:0] CFGINTERRUPTMSIFUNCTIONNUMBER; + input [31:0] CFGINTERRUPTMSIINT; + input [31:0] CFGINTERRUPTMSIPENDINGSTATUS; + input CFGINTERRUPTMSIPENDINGSTATUSDATAENABLE; + input [1:0] CFGINTERRUPTMSIPENDINGSTATUSFUNCTIONNUM; + input [1:0] CFGINTERRUPTMSISELECT; + input CFGINTERRUPTMSITPHPRESENT; + input [7:0] CFGINTERRUPTMSITPHSTTAG; + input [1:0] CFGINTERRUPTMSITPHTYPE; + input [63:0] CFGINTERRUPTMSIXADDRESS; + input [31:0] CFGINTERRUPTMSIXDATA; + input CFGINTERRUPTMSIXINT; + input [1:0] CFGINTERRUPTMSIXVECPENDING; + input [3:0] CFGINTERRUPTPENDING; + input CFGLINKTRAININGENABLE; + input [9:0] CFGMGMTADDR; + input [3:0] CFGMGMTBYTEENABLE; + input CFGMGMTDEBUGACCESS; + input [7:0] CFGMGMTFUNCTIONNUMBER; + input CFGMGMTREAD; + input CFGMGMTWRITE; + input [31:0] CFGMGMTWRITEDATA; + input CFGMSGTRANSMIT; + input [31:0] CFGMSGTRANSMITDATA; + input [2:0] CFGMSGTRANSMITTYPE; + input [35:0] CFGMSIXRAMREADDATA; + input CFGPMASPML1ENTRYREJECT; + input CFGPMASPMTXL0SENTRYDISABLE; + input CFGPOWERSTATECHANGEACK; + input CFGREQPMTRANSITIONL23READY; + input [7:0] CFGREVIDPF0; + input [7:0] CFGREVIDPF1; + input [7:0] CFGREVIDPF2; + input [7:0] CFGREVIDPF3; + input [15:0] CFGSUBSYSIDPF0; + input [15:0] CFGSUBSYSIDPF1; + input [15:0] CFGSUBSYSIDPF2; + input [15:0] CFGSUBSYSIDPF3; + input [15:0] CFGSUBSYSVENDID; + input [35:0] CFGTPHRAMREADDATA; + input [15:0] CFGVENDID; + input CFGVFFLRDONE; + input [7:0] CFGVFFLRFUNCNUM; + input CONFMCAPREQUESTBYCONF; + input [31:0] CONFREQDATA; + input [3:0] CONFREQREGNUM; + input [1:0] CONFREQTYPE; + input CONFREQVALID; + input CORECLK; + input CORECLKCCIX; + input CORECLKMIREPLAYRAM0; + input CORECLKMIREPLAYRAM1; + input CORECLKMIRXCOMPLETIONRAM0; + input CORECLKMIRXCOMPLETIONRAM1; + input CORECLKMIRXPOSTEDREQUESTRAM0; + input CORECLKMIRXPOSTEDREQUESTRAM1; + input [5:0] DBGSEL0; + input [5:0] DBGSEL1; + input [9:0] DRPADDR; + input DRPCLK; + input [15:0] DRPDI; + input DRPEN; + input DRPWE; + input [21:0] MAXISCQTREADY; + input [21:0] MAXISRCTREADY; + input MCAPCLK; + input MCAPPERST0B; + input MCAPPERST1B; + input MGMTRESETN; + input MGMTSTICKYRESETN; + input [5:0] MIREPLAYRAMERRCOR; + input [5:0] MIREPLAYRAMERRUNCOR; + input [127:0] MIREPLAYRAMREADDATA0; + input [127:0] MIREPLAYRAMREADDATA1; + input [11:0] MIRXCOMPLETIONRAMERRCOR; + input [11:0] MIRXCOMPLETIONRAMERRUNCOR; + input [143:0] MIRXCOMPLETIONRAMREADDATA0; + input [143:0] MIRXCOMPLETIONRAMREADDATA1; + input [5:0] MIRXPOSTEDREQUESTRAMERRCOR; + input [5:0] MIRXPOSTEDREQUESTRAMERRUNCOR; + input [143:0] MIRXPOSTEDREQUESTRAMREADDATA0; + input [143:0] MIRXPOSTEDREQUESTRAMREADDATA1; + input [1:0] PCIECOMPLDELIVERED; + input [7:0] PCIECOMPLDELIVEREDTAG0; + input [7:0] PCIECOMPLDELIVEREDTAG1; + input [1:0] PCIECQNPREQ; + input PCIECQNPUSERCREDITRCVD; + input PCIECQPIPELINEEMPTY; + input PCIEPOSTEDREQDELIVERED; + input PIPECLK; + input PIPECLKEN; + input [5:0] PIPEEQFS; + input [5:0] PIPEEQLF; + input PIPERESETN; + input [1:0] PIPERX00CHARISK; + input [31:0] PIPERX00DATA; + input PIPERX00DATAVALID; + input PIPERX00ELECIDLE; + input PIPERX00EQDONE; + input PIPERX00EQLPADAPTDONE; + input PIPERX00EQLPLFFSSEL; + input [17:0] PIPERX00EQLPNEWTXCOEFFORPRESET; + input PIPERX00PHYSTATUS; + input [1:0] PIPERX00STARTBLOCK; + input [2:0] PIPERX00STATUS; + input [1:0] PIPERX00SYNCHEADER; + input PIPERX00VALID; + input [1:0] PIPERX01CHARISK; + input [31:0] PIPERX01DATA; + input PIPERX01DATAVALID; + input PIPERX01ELECIDLE; + input PIPERX01EQDONE; + input PIPERX01EQLPADAPTDONE; + input PIPERX01EQLPLFFSSEL; + input [17:0] PIPERX01EQLPNEWTXCOEFFORPRESET; + input PIPERX01PHYSTATUS; + input [1:0] PIPERX01STARTBLOCK; + input [2:0] PIPERX01STATUS; + input [1:0] PIPERX01SYNCHEADER; + input PIPERX01VALID; + input [1:0] PIPERX02CHARISK; + input [31:0] PIPERX02DATA; + input PIPERX02DATAVALID; + input PIPERX02ELECIDLE; + input PIPERX02EQDONE; + input PIPERX02EQLPADAPTDONE; + input PIPERX02EQLPLFFSSEL; + input [17:0] PIPERX02EQLPNEWTXCOEFFORPRESET; + input PIPERX02PHYSTATUS; + input [1:0] PIPERX02STARTBLOCK; + input [2:0] PIPERX02STATUS; + input [1:0] PIPERX02SYNCHEADER; + input PIPERX02VALID; + input [1:0] PIPERX03CHARISK; + input [31:0] PIPERX03DATA; + input PIPERX03DATAVALID; + input PIPERX03ELECIDLE; + input PIPERX03EQDONE; + input PIPERX03EQLPADAPTDONE; + input PIPERX03EQLPLFFSSEL; + input [17:0] PIPERX03EQLPNEWTXCOEFFORPRESET; + input PIPERX03PHYSTATUS; + input [1:0] PIPERX03STARTBLOCK; + input [2:0] PIPERX03STATUS; + input [1:0] PIPERX03SYNCHEADER; + input PIPERX03VALID; + input [1:0] PIPERX04CHARISK; + input [31:0] PIPERX04DATA; + input PIPERX04DATAVALID; + input PIPERX04ELECIDLE; + input PIPERX04EQDONE; + input PIPERX04EQLPADAPTDONE; + input PIPERX04EQLPLFFSSEL; + input [17:0] PIPERX04EQLPNEWTXCOEFFORPRESET; + input PIPERX04PHYSTATUS; + input [1:0] PIPERX04STARTBLOCK; + input [2:0] PIPERX04STATUS; + input [1:0] PIPERX04SYNCHEADER; + input PIPERX04VALID; + input [1:0] PIPERX05CHARISK; + input [31:0] PIPERX05DATA; + input PIPERX05DATAVALID; + input PIPERX05ELECIDLE; + input PIPERX05EQDONE; + input PIPERX05EQLPADAPTDONE; + input PIPERX05EQLPLFFSSEL; + input [17:0] PIPERX05EQLPNEWTXCOEFFORPRESET; + input PIPERX05PHYSTATUS; + input [1:0] PIPERX05STARTBLOCK; + input [2:0] PIPERX05STATUS; + input [1:0] PIPERX05SYNCHEADER; + input PIPERX05VALID; + input [1:0] PIPERX06CHARISK; + input [31:0] PIPERX06DATA; + input PIPERX06DATAVALID; + input PIPERX06ELECIDLE; + input PIPERX06EQDONE; + input PIPERX06EQLPADAPTDONE; + input PIPERX06EQLPLFFSSEL; + input [17:0] PIPERX06EQLPNEWTXCOEFFORPRESET; + input PIPERX06PHYSTATUS; + input [1:0] PIPERX06STARTBLOCK; + input [2:0] PIPERX06STATUS; + input [1:0] PIPERX06SYNCHEADER; + input PIPERX06VALID; + input [1:0] PIPERX07CHARISK; + input [31:0] PIPERX07DATA; + input PIPERX07DATAVALID; + input PIPERX07ELECIDLE; + input PIPERX07EQDONE; + input PIPERX07EQLPADAPTDONE; + input PIPERX07EQLPLFFSSEL; + input [17:0] PIPERX07EQLPNEWTXCOEFFORPRESET; + input PIPERX07PHYSTATUS; + input [1:0] PIPERX07STARTBLOCK; + input [2:0] PIPERX07STATUS; + input [1:0] PIPERX07SYNCHEADER; + input PIPERX07VALID; + input [1:0] PIPERX08CHARISK; + input [31:0] PIPERX08DATA; + input PIPERX08DATAVALID; + input PIPERX08ELECIDLE; + input PIPERX08EQDONE; + input PIPERX08EQLPADAPTDONE; + input PIPERX08EQLPLFFSSEL; + input [17:0] PIPERX08EQLPNEWTXCOEFFORPRESET; + input PIPERX08PHYSTATUS; + input [1:0] PIPERX08STARTBLOCK; + input [2:0] PIPERX08STATUS; + input [1:0] PIPERX08SYNCHEADER; + input PIPERX08VALID; + input [1:0] PIPERX09CHARISK; + input [31:0] PIPERX09DATA; + input PIPERX09DATAVALID; + input PIPERX09ELECIDLE; + input PIPERX09EQDONE; + input PIPERX09EQLPADAPTDONE; + input PIPERX09EQLPLFFSSEL; + input [17:0] PIPERX09EQLPNEWTXCOEFFORPRESET; + input PIPERX09PHYSTATUS; + input [1:0] PIPERX09STARTBLOCK; + input [2:0] PIPERX09STATUS; + input [1:0] PIPERX09SYNCHEADER; + input PIPERX09VALID; + input [1:0] PIPERX10CHARISK; + input [31:0] PIPERX10DATA; + input PIPERX10DATAVALID; + input PIPERX10ELECIDLE; + input PIPERX10EQDONE; + input PIPERX10EQLPADAPTDONE; + input PIPERX10EQLPLFFSSEL; + input [17:0] PIPERX10EQLPNEWTXCOEFFORPRESET; + input PIPERX10PHYSTATUS; + input [1:0] PIPERX10STARTBLOCK; + input [2:0] PIPERX10STATUS; + input [1:0] PIPERX10SYNCHEADER; + input PIPERX10VALID; + input [1:0] PIPERX11CHARISK; + input [31:0] PIPERX11DATA; + input PIPERX11DATAVALID; + input PIPERX11ELECIDLE; + input PIPERX11EQDONE; + input PIPERX11EQLPADAPTDONE; + input PIPERX11EQLPLFFSSEL; + input [17:0] PIPERX11EQLPNEWTXCOEFFORPRESET; + input PIPERX11PHYSTATUS; + input [1:0] PIPERX11STARTBLOCK; + input [2:0] PIPERX11STATUS; + input [1:0] PIPERX11SYNCHEADER; + input PIPERX11VALID; + input [1:0] PIPERX12CHARISK; + input [31:0] PIPERX12DATA; + input PIPERX12DATAVALID; + input PIPERX12ELECIDLE; + input PIPERX12EQDONE; + input PIPERX12EQLPADAPTDONE; + input PIPERX12EQLPLFFSSEL; + input [17:0] PIPERX12EQLPNEWTXCOEFFORPRESET; + input PIPERX12PHYSTATUS; + input [1:0] PIPERX12STARTBLOCK; + input [2:0] PIPERX12STATUS; + input [1:0] PIPERX12SYNCHEADER; + input PIPERX12VALID; + input [1:0] PIPERX13CHARISK; + input [31:0] PIPERX13DATA; + input PIPERX13DATAVALID; + input PIPERX13ELECIDLE; + input PIPERX13EQDONE; + input PIPERX13EQLPADAPTDONE; + input PIPERX13EQLPLFFSSEL; + input [17:0] PIPERX13EQLPNEWTXCOEFFORPRESET; + input PIPERX13PHYSTATUS; + input [1:0] PIPERX13STARTBLOCK; + input [2:0] PIPERX13STATUS; + input [1:0] PIPERX13SYNCHEADER; + input PIPERX13VALID; + input [1:0] PIPERX14CHARISK; + input [31:0] PIPERX14DATA; + input PIPERX14DATAVALID; + input PIPERX14ELECIDLE; + input PIPERX14EQDONE; + input PIPERX14EQLPADAPTDONE; + input PIPERX14EQLPLFFSSEL; + input [17:0] PIPERX14EQLPNEWTXCOEFFORPRESET; + input PIPERX14PHYSTATUS; + input [1:0] PIPERX14STARTBLOCK; + input [2:0] PIPERX14STATUS; + input [1:0] PIPERX14SYNCHEADER; + input PIPERX14VALID; + input [1:0] PIPERX15CHARISK; + input [31:0] PIPERX15DATA; + input PIPERX15DATAVALID; + input PIPERX15ELECIDLE; + input PIPERX15EQDONE; + input PIPERX15EQLPADAPTDONE; + input PIPERX15EQLPLFFSSEL; + input [17:0] PIPERX15EQLPNEWTXCOEFFORPRESET; + input PIPERX15PHYSTATUS; + input [1:0] PIPERX15STARTBLOCK; + input [2:0] PIPERX15STATUS; + input [1:0] PIPERX15SYNCHEADER; + input PIPERX15VALID; + input [17:0] PIPETX00EQCOEFF; + input PIPETX00EQDONE; + input [17:0] PIPETX01EQCOEFF; + input PIPETX01EQDONE; + input [17:0] PIPETX02EQCOEFF; + input PIPETX02EQDONE; + input [17:0] PIPETX03EQCOEFF; + input PIPETX03EQDONE; + input [17:0] PIPETX04EQCOEFF; + input PIPETX04EQDONE; + input [17:0] PIPETX05EQCOEFF; + input PIPETX05EQDONE; + input [17:0] PIPETX06EQCOEFF; + input PIPETX06EQDONE; + input [17:0] PIPETX07EQCOEFF; + input PIPETX07EQDONE; + input [17:0] PIPETX08EQCOEFF; + input PIPETX08EQDONE; + input [17:0] PIPETX09EQCOEFF; + input PIPETX09EQDONE; + input [17:0] PIPETX10EQCOEFF; + input PIPETX10EQDONE; + input [17:0] PIPETX11EQCOEFF; + input PIPETX11EQDONE; + input [17:0] PIPETX12EQCOEFF; + input PIPETX12EQDONE; + input [17:0] PIPETX13EQCOEFF; + input PIPETX13EQDONE; + input [17:0] PIPETX14EQCOEFF; + input PIPETX14EQDONE; + input [17:0] PIPETX15EQCOEFF; + input PIPETX15EQDONE; + input PLEQRESETEIEOSCOUNT; + input PLGEN2UPSTREAMPREFERDEEMPH; + input PLGEN34REDOEQSPEED; + input PLGEN34REDOEQUALIZATION; + input RESETN; + input [255:0] SAXISCCIXTXTDATA; + input [45:0] SAXISCCIXTXTUSER; + input SAXISCCIXTXTVALID; + input [255:0] SAXISCCTDATA; + input [7:0] SAXISCCTKEEP; + input SAXISCCTLAST; + input [32:0] SAXISCCTUSER; + input SAXISCCTVALID; + input [255:0] SAXISRQTDATA; + input [7:0] SAXISRQTKEEP; + input SAXISRQTLAST; + input [61:0] SAXISRQTUSER; + input SAXISRQTVALID; + input USERCLK; + input USERCLK2; + input USERCLKEN; + input [31:0] USERSPAREIN; +endmodule + +module EMAC (...); + parameter EMAC0_MODE = "RGMII"; + parameter EMAC1_MODE = "RGMII"; + output DCRHOSTDONEIR; + output EMAC0CLIENTANINTERRUPT; + output EMAC0CLIENTRXBADFRAME; + output EMAC0CLIENTRXCLIENTCLKOUT; + output EMAC0CLIENTRXDVLD; + output EMAC0CLIENTRXDVLDMSW; + output EMAC0CLIENTRXDVREG6; + output EMAC0CLIENTRXFRAMEDROP; + output EMAC0CLIENTRXGOODFRAME; + output EMAC0CLIENTRXSTATSBYTEVLD; + output EMAC0CLIENTRXSTATSVLD; + output EMAC0CLIENTTXACK; + output EMAC0CLIENTTXCLIENTCLKOUT; + output EMAC0CLIENTTXCOLLISION; + output EMAC0CLIENTTXGMIIMIICLKOUT; + output EMAC0CLIENTTXRETRANSMIT; + output EMAC0CLIENTTXSTATS; + output EMAC0CLIENTTXSTATSBYTEVLD; + output EMAC0CLIENTTXSTATSVLD; + output EMAC0PHYENCOMMAALIGN; + output EMAC0PHYLOOPBACKMSB; + output EMAC0PHYMCLKOUT; + output EMAC0PHYMDOUT; + output EMAC0PHYMDTRI; + output EMAC0PHYMGTRXRESET; + output EMAC0PHYMGTTXRESET; + output EMAC0PHYPOWERDOWN; + output EMAC0PHYSYNCACQSTATUS; + output EMAC0PHYTXCHARDISPMODE; + output EMAC0PHYTXCHARDISPVAL; + output EMAC0PHYTXCHARISK; + output EMAC0PHYTXCLK; + output EMAC0PHYTXEN; + output EMAC0PHYTXER; + output EMAC1CLIENTANINTERRUPT; + output EMAC1CLIENTRXBADFRAME; + output EMAC1CLIENTRXCLIENTCLKOUT; + output EMAC1CLIENTRXDVLD; + output EMAC1CLIENTRXDVLDMSW; + output EMAC1CLIENTRXDVREG6; + output EMAC1CLIENTRXFRAMEDROP; + output EMAC1CLIENTRXGOODFRAME; + output EMAC1CLIENTRXSTATSBYTEVLD; + output EMAC1CLIENTRXSTATSVLD; + output EMAC1CLIENTTXACK; + output EMAC1CLIENTTXCLIENTCLKOUT; + output EMAC1CLIENTTXCOLLISION; + output EMAC1CLIENTTXGMIIMIICLKOUT; + output EMAC1CLIENTTXRETRANSMIT; + output EMAC1CLIENTTXSTATS; + output EMAC1CLIENTTXSTATSBYTEVLD; + output EMAC1CLIENTTXSTATSVLD; + output EMAC1PHYENCOMMAALIGN; + output EMAC1PHYLOOPBACKMSB; + output EMAC1PHYMCLKOUT; + output EMAC1PHYMDOUT; + output EMAC1PHYMDTRI; + output EMAC1PHYMGTRXRESET; + output EMAC1PHYMGTTXRESET; + output EMAC1PHYPOWERDOWN; + output EMAC1PHYSYNCACQSTATUS; + output EMAC1PHYTXCHARDISPMODE; + output EMAC1PHYTXCHARDISPVAL; + output EMAC1PHYTXCHARISK; + output EMAC1PHYTXCLK; + output EMAC1PHYTXEN; + output EMAC1PHYTXER; + output EMACDCRACK; + output HOSTMIIMRDY; + output [0:31] EMACDCRDBUS; + output [15:0] EMAC0CLIENTRXD; + output [15:0] EMAC1CLIENTRXD; + output [31:0] HOSTRDDATA; + output [6:0] EMAC0CLIENTRXSTATS; + output [6:0] EMAC1CLIENTRXSTATS; + output [7:0] EMAC0PHYTXD; + output [7:0] EMAC1PHYTXD; + input CLIENTEMAC0DCMLOCKED; + input CLIENTEMAC0PAUSEREQ; + input CLIENTEMAC0RXCLIENTCLKIN; + input CLIENTEMAC0TXCLIENTCLKIN; + input CLIENTEMAC0TXDVLD; + input CLIENTEMAC0TXDVLDMSW; + input CLIENTEMAC0TXFIRSTBYTE; + input CLIENTEMAC0TXGMIIMIICLKIN; + input CLIENTEMAC0TXUNDERRUN; + input CLIENTEMAC1DCMLOCKED; + input CLIENTEMAC1PAUSEREQ; + input CLIENTEMAC1RXCLIENTCLKIN; + input CLIENTEMAC1TXCLIENTCLKIN; + input CLIENTEMAC1TXDVLD; + input CLIENTEMAC1TXDVLDMSW; + input CLIENTEMAC1TXFIRSTBYTE; + input CLIENTEMAC1TXGMIIMIICLKIN; + input CLIENTEMAC1TXUNDERRUN; + input DCREMACCLK; + input DCREMACENABLE; + input DCREMACREAD; + input DCREMACWRITE; + input HOSTCLK; + input HOSTEMAC1SEL; + input HOSTMIIMSEL; + input HOSTREQ; + input PHYEMAC0COL; + input PHYEMAC0CRS; + input PHYEMAC0GTXCLK; + input PHYEMAC0MCLKIN; + input PHYEMAC0MDIN; + input PHYEMAC0MIITXCLK; + input PHYEMAC0RXBUFERR; + input PHYEMAC0RXCHARISCOMMA; + input PHYEMAC0RXCHARISK; + input PHYEMAC0RXCHECKINGCRC; + input PHYEMAC0RXCLK; + input PHYEMAC0RXCOMMADET; + input PHYEMAC0RXDISPERR; + input PHYEMAC0RXDV; + input PHYEMAC0RXER; + input PHYEMAC0RXNOTINTABLE; + input PHYEMAC0RXRUNDISP; + input PHYEMAC0SIGNALDET; + input PHYEMAC0TXBUFERR; + input PHYEMAC1COL; + input PHYEMAC1CRS; + input PHYEMAC1GTXCLK; + input PHYEMAC1MCLKIN; + input PHYEMAC1MDIN; + input PHYEMAC1MIITXCLK; + input PHYEMAC1RXBUFERR; + input PHYEMAC1RXCHARISCOMMA; + input PHYEMAC1RXCHARISK; + input PHYEMAC1RXCHECKINGCRC; + input PHYEMAC1RXCLK; + input PHYEMAC1RXCOMMADET; + input PHYEMAC1RXDISPERR; + input PHYEMAC1RXDV; + input PHYEMAC1RXER; + input PHYEMAC1RXNOTINTABLE; + input PHYEMAC1RXRUNDISP; + input PHYEMAC1SIGNALDET; + input PHYEMAC1TXBUFERR; + input RESET; + input [0:31] DCREMACDBUS; + input [15:0] CLIENTEMAC0PAUSEVAL; + input [15:0] CLIENTEMAC0TXD; + input [15:0] CLIENTEMAC1PAUSEVAL; + input [15:0] CLIENTEMAC1TXD; + input [1:0] HOSTOPCODE; + input [1:0] PHYEMAC0RXBUFSTATUS; + input [1:0] PHYEMAC0RXLOSSOFSYNC; + input [1:0] PHYEMAC1RXBUFSTATUS; + input [1:0] PHYEMAC1RXLOSSOFSYNC; + input [2:0] PHYEMAC0RXCLKCORCNT; + input [2:0] PHYEMAC1RXCLKCORCNT; + input [31:0] HOSTWRDATA; + input [47:0] TIEEMAC0UNICASTADDR; + input [47:0] TIEEMAC1UNICASTADDR; + input [4:0] PHYEMAC0PHYAD; + input [4:0] PHYEMAC1PHYAD; + input [79:0] TIEEMAC0CONFIGVEC; + input [79:0] TIEEMAC1CONFIGVEC; + input [7:0] CLIENTEMAC0TXIFGDELAY; + input [7:0] CLIENTEMAC1TXIFGDELAY; + input [7:0] PHYEMAC0RXD; + input [7:0] PHYEMAC1RXD; + input [8:9] DCREMACABUS; + input [9:0] HOSTADDR; +endmodule + +module TEMAC (...); + parameter EMAC0_1000BASEX_ENABLE = "FALSE"; + parameter EMAC0_ADDRFILTER_ENABLE = "FALSE"; + parameter EMAC0_BYTEPHY = "FALSE"; + parameter EMAC0_CONFIGVEC_79 = "FALSE"; + parameter EMAC0_GTLOOPBACK = "FALSE"; + parameter EMAC0_HOST_ENABLE = "FALSE"; + parameter EMAC0_LTCHECK_DISABLE = "FALSE"; + parameter EMAC0_MDIO_ENABLE = "FALSE"; + parameter EMAC0_PHYINITAUTONEG_ENABLE = "FALSE"; + parameter EMAC0_PHYISOLATE = "FALSE"; + parameter EMAC0_PHYLOOPBACKMSB = "FALSE"; + parameter EMAC0_PHYPOWERDOWN = "FALSE"; + parameter EMAC0_PHYRESET = "FALSE"; + parameter EMAC0_RGMII_ENABLE = "FALSE"; + parameter EMAC0_RX16BITCLIENT_ENABLE = "FALSE"; + parameter EMAC0_RXFLOWCTRL_ENABLE = "FALSE"; + parameter EMAC0_RXHALFDUPLEX = "FALSE"; + parameter EMAC0_RXINBANDFCS_ENABLE = "FALSE"; + parameter EMAC0_RXJUMBOFRAME_ENABLE = "FALSE"; + parameter EMAC0_RXRESET = "FALSE"; + parameter EMAC0_RXVLAN_ENABLE = "FALSE"; + parameter EMAC0_RX_ENABLE = "FALSE"; + parameter EMAC0_SGMII_ENABLE = "FALSE"; + parameter EMAC0_SPEED_LSB = "FALSE"; + parameter EMAC0_SPEED_MSB = "FALSE"; + parameter EMAC0_TX16BITCLIENT_ENABLE = "FALSE"; + parameter EMAC0_TXFLOWCTRL_ENABLE = "FALSE"; + parameter EMAC0_TXHALFDUPLEX = "FALSE"; + parameter EMAC0_TXIFGADJUST_ENABLE = "FALSE"; + parameter EMAC0_TXINBANDFCS_ENABLE = "FALSE"; + parameter EMAC0_TXJUMBOFRAME_ENABLE = "FALSE"; + parameter EMAC0_TXRESET = "FALSE"; + parameter EMAC0_TXVLAN_ENABLE = "FALSE"; + parameter EMAC0_TX_ENABLE = "FALSE"; + parameter EMAC0_UNIDIRECTION_ENABLE = "FALSE"; + parameter EMAC0_USECLKEN = "FALSE"; + parameter EMAC1_1000BASEX_ENABLE = "FALSE"; + parameter EMAC1_ADDRFILTER_ENABLE = "FALSE"; + parameter EMAC1_BYTEPHY = "FALSE"; + parameter EMAC1_CONFIGVEC_79 = "FALSE"; + parameter EMAC1_GTLOOPBACK = "FALSE"; + parameter EMAC1_HOST_ENABLE = "FALSE"; + parameter EMAC1_LTCHECK_DISABLE = "FALSE"; + parameter EMAC1_MDIO_ENABLE = "FALSE"; + parameter EMAC1_PHYINITAUTONEG_ENABLE = "FALSE"; + parameter EMAC1_PHYISOLATE = "FALSE"; + parameter EMAC1_PHYLOOPBACKMSB = "FALSE"; + parameter EMAC1_PHYPOWERDOWN = "FALSE"; + parameter EMAC1_PHYRESET = "FALSE"; + parameter EMAC1_RGMII_ENABLE = "FALSE"; + parameter EMAC1_RX16BITCLIENT_ENABLE = "FALSE"; + parameter EMAC1_RXFLOWCTRL_ENABLE = "FALSE"; + parameter EMAC1_RXHALFDUPLEX = "FALSE"; + parameter EMAC1_RXINBANDFCS_ENABLE = "FALSE"; + parameter EMAC1_RXJUMBOFRAME_ENABLE = "FALSE"; + parameter EMAC1_RXRESET = "FALSE"; + parameter EMAC1_RXVLAN_ENABLE = "FALSE"; + parameter EMAC1_RX_ENABLE = "FALSE"; + parameter EMAC1_SGMII_ENABLE = "FALSE"; + parameter EMAC1_SPEED_LSB = "FALSE"; + parameter EMAC1_SPEED_MSB = "FALSE"; + parameter EMAC1_TX16BITCLIENT_ENABLE = "FALSE"; + parameter EMAC1_TXFLOWCTRL_ENABLE = "FALSE"; + parameter EMAC1_TXHALFDUPLEX = "FALSE"; + parameter EMAC1_TXIFGADJUST_ENABLE = "FALSE"; + parameter EMAC1_TXINBANDFCS_ENABLE = "FALSE"; + parameter EMAC1_TXJUMBOFRAME_ENABLE = "FALSE"; + parameter EMAC1_TXRESET = "FALSE"; + parameter EMAC1_TXVLAN_ENABLE = "FALSE"; + parameter EMAC1_TX_ENABLE = "FALSE"; + parameter EMAC1_UNIDIRECTION_ENABLE = "FALSE"; + parameter EMAC1_USECLKEN = "FALSE"; + parameter [0:7] EMAC0_DCRBASEADDR = 8'h00; + parameter [0:7] EMAC1_DCRBASEADDR = 8'h00; + parameter [47:0] EMAC0_PAUSEADDR = 48'h000000000000; + parameter [47:0] EMAC0_UNICASTADDR = 48'h000000000000; + parameter [47:0] EMAC1_PAUSEADDR = 48'h000000000000; + parameter [47:0] EMAC1_UNICASTADDR = 48'h000000000000; + parameter [8:0] EMAC0_LINKTIMERVAL = 9'h000; + parameter [8:0] EMAC1_LINKTIMERVAL = 9'h000; + output DCRHOSTDONEIR; + output EMAC0CLIENTANINTERRUPT; + output EMAC0CLIENTRXBADFRAME; + output EMAC0CLIENTRXCLIENTCLKOUT; + output EMAC0CLIENTRXDVLD; + output EMAC0CLIENTRXDVLDMSW; + output EMAC0CLIENTRXFRAMEDROP; + output EMAC0CLIENTRXGOODFRAME; + output EMAC0CLIENTRXSTATSBYTEVLD; + output EMAC0CLIENTRXSTATSVLD; + output EMAC0CLIENTTXACK; + output EMAC0CLIENTTXCLIENTCLKOUT; + output EMAC0CLIENTTXCOLLISION; + output EMAC0CLIENTTXRETRANSMIT; + output EMAC0CLIENTTXSTATS; + output EMAC0CLIENTTXSTATSBYTEVLD; + output EMAC0CLIENTTXSTATSVLD; + output EMAC0PHYENCOMMAALIGN; + output EMAC0PHYLOOPBACKMSB; + output EMAC0PHYMCLKOUT; + output EMAC0PHYMDOUT; + output EMAC0PHYMDTRI; + output EMAC0PHYMGTRXRESET; + output EMAC0PHYMGTTXRESET; + output EMAC0PHYPOWERDOWN; + output EMAC0PHYSYNCACQSTATUS; + output EMAC0PHYTXCHARDISPMODE; + output EMAC0PHYTXCHARDISPVAL; + output EMAC0PHYTXCHARISK; + output EMAC0PHYTXCLK; + output EMAC0PHYTXEN; + output EMAC0PHYTXER; + output EMAC0PHYTXGMIIMIICLKOUT; + output EMAC0SPEEDIS10100; + output EMAC1CLIENTANINTERRUPT; + output EMAC1CLIENTRXBADFRAME; + output EMAC1CLIENTRXCLIENTCLKOUT; + output EMAC1CLIENTRXDVLD; + output EMAC1CLIENTRXDVLDMSW; + output EMAC1CLIENTRXFRAMEDROP; + output EMAC1CLIENTRXGOODFRAME; + output EMAC1CLIENTRXSTATSBYTEVLD; + output EMAC1CLIENTRXSTATSVLD; + output EMAC1CLIENTTXACK; + output EMAC1CLIENTTXCLIENTCLKOUT; + output EMAC1CLIENTTXCOLLISION; + output EMAC1CLIENTTXRETRANSMIT; + output EMAC1CLIENTTXSTATS; + output EMAC1CLIENTTXSTATSBYTEVLD; + output EMAC1CLIENTTXSTATSVLD; + output EMAC1PHYENCOMMAALIGN; + output EMAC1PHYLOOPBACKMSB; + output EMAC1PHYMCLKOUT; + output EMAC1PHYMDOUT; + output EMAC1PHYMDTRI; + output EMAC1PHYMGTRXRESET; + output EMAC1PHYMGTTXRESET; + output EMAC1PHYPOWERDOWN; + output EMAC1PHYSYNCACQSTATUS; + output EMAC1PHYTXCHARDISPMODE; + output EMAC1PHYTXCHARDISPVAL; + output EMAC1PHYTXCHARISK; + output EMAC1PHYTXCLK; + output EMAC1PHYTXEN; + output EMAC1PHYTXER; + output EMAC1PHYTXGMIIMIICLKOUT; + output EMAC1SPEEDIS10100; + output EMACDCRACK; + output HOSTMIIMRDY; + output [0:31] EMACDCRDBUS; + output [15:0] EMAC0CLIENTRXD; + output [15:0] EMAC1CLIENTRXD; + output [31:0] HOSTRDDATA; + output [6:0] EMAC0CLIENTRXSTATS; + output [6:0] EMAC1CLIENTRXSTATS; + output [7:0] EMAC0PHYTXD; + output [7:0] EMAC1PHYTXD; + input CLIENTEMAC0DCMLOCKED; + input CLIENTEMAC0PAUSEREQ; + input CLIENTEMAC0RXCLIENTCLKIN; + input CLIENTEMAC0TXCLIENTCLKIN; + input CLIENTEMAC0TXDVLD; + input CLIENTEMAC0TXDVLDMSW; + input CLIENTEMAC0TXFIRSTBYTE; + input CLIENTEMAC0TXUNDERRUN; + input CLIENTEMAC1DCMLOCKED; + input CLIENTEMAC1PAUSEREQ; + input CLIENTEMAC1RXCLIENTCLKIN; + input CLIENTEMAC1TXCLIENTCLKIN; + input CLIENTEMAC1TXDVLD; + input CLIENTEMAC1TXDVLDMSW; + input CLIENTEMAC1TXFIRSTBYTE; + input CLIENTEMAC1TXUNDERRUN; + input DCREMACCLK; + input DCREMACENABLE; + input DCREMACREAD; + input DCREMACWRITE; + input HOSTCLK; + input HOSTEMAC1SEL; + input HOSTMIIMSEL; + input HOSTREQ; + input PHYEMAC0COL; + input PHYEMAC0CRS; + input PHYEMAC0GTXCLK; + input PHYEMAC0MCLKIN; + input PHYEMAC0MDIN; + input PHYEMAC0MIITXCLK; + input PHYEMAC0RXBUFERR; + input PHYEMAC0RXCHARISCOMMA; + input PHYEMAC0RXCHARISK; + input PHYEMAC0RXCHECKINGCRC; + input PHYEMAC0RXCLK; + input PHYEMAC0RXCOMMADET; + input PHYEMAC0RXDISPERR; + input PHYEMAC0RXDV; + input PHYEMAC0RXER; + input PHYEMAC0RXNOTINTABLE; + input PHYEMAC0RXRUNDISP; + input PHYEMAC0SIGNALDET; + input PHYEMAC0TXBUFERR; + input PHYEMAC0TXGMIIMIICLKIN; + input PHYEMAC1COL; + input PHYEMAC1CRS; + input PHYEMAC1GTXCLK; + input PHYEMAC1MCLKIN; + input PHYEMAC1MDIN; + input PHYEMAC1MIITXCLK; + input PHYEMAC1RXBUFERR; + input PHYEMAC1RXCHARISCOMMA; + input PHYEMAC1RXCHARISK; + input PHYEMAC1RXCHECKINGCRC; + input PHYEMAC1RXCLK; + input PHYEMAC1RXCOMMADET; + input PHYEMAC1RXDISPERR; + input PHYEMAC1RXDV; + input PHYEMAC1RXER; + input PHYEMAC1RXNOTINTABLE; + input PHYEMAC1RXRUNDISP; + input PHYEMAC1SIGNALDET; + input PHYEMAC1TXBUFERR; + input PHYEMAC1TXGMIIMIICLKIN; + input RESET; + input [0:31] DCREMACDBUS; + input [0:9] DCREMACABUS; + input [15:0] CLIENTEMAC0PAUSEVAL; + input [15:0] CLIENTEMAC0TXD; + input [15:0] CLIENTEMAC1PAUSEVAL; + input [15:0] CLIENTEMAC1TXD; + input [1:0] HOSTOPCODE; + input [1:0] PHYEMAC0RXBUFSTATUS; + input [1:0] PHYEMAC0RXLOSSOFSYNC; + input [1:0] PHYEMAC1RXBUFSTATUS; + input [1:0] PHYEMAC1RXLOSSOFSYNC; + input [2:0] PHYEMAC0RXCLKCORCNT; + input [2:0] PHYEMAC1RXCLKCORCNT; + input [31:0] HOSTWRDATA; + input [4:0] PHYEMAC0PHYAD; + input [4:0] PHYEMAC1PHYAD; + input [7:0] CLIENTEMAC0TXIFGDELAY; + input [7:0] CLIENTEMAC1TXIFGDELAY; + input [7:0] PHYEMAC0RXD; + input [7:0] PHYEMAC1RXD; + input [9:0] HOSTADDR; +endmodule + +module TEMAC_SINGLE (...); + parameter EMAC_1000BASEX_ENABLE = "FALSE"; + parameter EMAC_ADDRFILTER_ENABLE = "FALSE"; + parameter EMAC_BYTEPHY = "FALSE"; + parameter EMAC_CTRLLENCHECK_DISABLE = "FALSE"; + parameter [0:7] EMAC_DCRBASEADDR = 8'h00; + parameter EMAC_GTLOOPBACK = "FALSE"; + parameter EMAC_HOST_ENABLE = "FALSE"; + parameter [8:0] EMAC_LINKTIMERVAL = 9'h000; + parameter EMAC_LTCHECK_DISABLE = "FALSE"; + parameter EMAC_MDIO_ENABLE = "FALSE"; + parameter EMAC_MDIO_IGNORE_PHYADZERO = "FALSE"; + parameter [47:0] EMAC_PAUSEADDR = 48'h000000000000; + parameter EMAC_PHYINITAUTONEG_ENABLE = "FALSE"; + parameter EMAC_PHYISOLATE = "FALSE"; + parameter EMAC_PHYLOOPBACKMSB = "FALSE"; + parameter EMAC_PHYPOWERDOWN = "FALSE"; + parameter EMAC_PHYRESET = "FALSE"; + parameter EMAC_RGMII_ENABLE = "FALSE"; + parameter EMAC_RX16BITCLIENT_ENABLE = "FALSE"; + parameter EMAC_RXFLOWCTRL_ENABLE = "FALSE"; + parameter EMAC_RXHALFDUPLEX = "FALSE"; + parameter EMAC_RXINBANDFCS_ENABLE = "FALSE"; + parameter EMAC_RXJUMBOFRAME_ENABLE = "FALSE"; + parameter EMAC_RXRESET = "FALSE"; + parameter EMAC_RXVLAN_ENABLE = "FALSE"; + parameter EMAC_RX_ENABLE = "TRUE"; + parameter EMAC_SGMII_ENABLE = "FALSE"; + parameter EMAC_SPEED_LSB = "FALSE"; + parameter EMAC_SPEED_MSB = "FALSE"; + parameter EMAC_TX16BITCLIENT_ENABLE = "FALSE"; + parameter EMAC_TXFLOWCTRL_ENABLE = "FALSE"; + parameter EMAC_TXHALFDUPLEX = "FALSE"; + parameter EMAC_TXIFGADJUST_ENABLE = "FALSE"; + parameter EMAC_TXINBANDFCS_ENABLE = "FALSE"; + parameter EMAC_TXJUMBOFRAME_ENABLE = "FALSE"; + parameter EMAC_TXRESET = "FALSE"; + parameter EMAC_TXVLAN_ENABLE = "FALSE"; + parameter EMAC_TX_ENABLE = "TRUE"; + parameter [47:0] EMAC_UNICASTADDR = 48'h000000000000; + parameter EMAC_UNIDIRECTION_ENABLE = "FALSE"; + parameter EMAC_USECLKEN = "FALSE"; + parameter SIM_VERSION = "1.0"; + output DCRHOSTDONEIR; + output EMACCLIENTANINTERRUPT; + output EMACCLIENTRXBADFRAME; + output EMACCLIENTRXCLIENTCLKOUT; + output EMACCLIENTRXDVLD; + output EMACCLIENTRXDVLDMSW; + output EMACCLIENTRXFRAMEDROP; + output EMACCLIENTRXGOODFRAME; + output EMACCLIENTRXSTATSBYTEVLD; + output EMACCLIENTRXSTATSVLD; + output EMACCLIENTTXACK; + output EMACCLIENTTXCLIENTCLKOUT; + output EMACCLIENTTXCOLLISION; + output EMACCLIENTTXRETRANSMIT; + output EMACCLIENTTXSTATS; + output EMACCLIENTTXSTATSBYTEVLD; + output EMACCLIENTTXSTATSVLD; + output EMACDCRACK; + output EMACPHYENCOMMAALIGN; + output EMACPHYLOOPBACKMSB; + output EMACPHYMCLKOUT; + output EMACPHYMDOUT; + output EMACPHYMDTRI; + output EMACPHYMGTRXRESET; + output EMACPHYMGTTXRESET; + output EMACPHYPOWERDOWN; + output EMACPHYSYNCACQSTATUS; + output EMACPHYTXCHARDISPMODE; + output EMACPHYTXCHARDISPVAL; + output EMACPHYTXCHARISK; + output EMACPHYTXCLK; + output EMACPHYTXEN; + output EMACPHYTXER; + output EMACPHYTXGMIIMIICLKOUT; + output EMACSPEEDIS10100; + output HOSTMIIMRDY; + output [0:31] EMACDCRDBUS; + output [15:0] EMACCLIENTRXD; + output [31:0] HOSTRDDATA; + output [6:0] EMACCLIENTRXSTATS; + output [7:0] EMACPHYTXD; + input CLIENTEMACDCMLOCKED; + input CLIENTEMACPAUSEREQ; + input CLIENTEMACRXCLIENTCLKIN; + input CLIENTEMACTXCLIENTCLKIN; + input CLIENTEMACTXDVLD; + input CLIENTEMACTXDVLDMSW; + input CLIENTEMACTXFIRSTBYTE; + input CLIENTEMACTXUNDERRUN; + input DCREMACCLK; + input DCREMACENABLE; + input DCREMACREAD; + input DCREMACWRITE; + input HOSTCLK; + input HOSTMIIMSEL; + input HOSTREQ; + input PHYEMACCOL; + input PHYEMACCRS; + input PHYEMACGTXCLK; + input PHYEMACMCLKIN; + input PHYEMACMDIN; + input PHYEMACMIITXCLK; + input PHYEMACRXCHARISCOMMA; + input PHYEMACRXCHARISK; + input PHYEMACRXCLK; + input PHYEMACRXDISPERR; + input PHYEMACRXDV; + input PHYEMACRXER; + input PHYEMACRXNOTINTABLE; + input PHYEMACRXRUNDISP; + input PHYEMACSIGNALDET; + input PHYEMACTXBUFERR; + input PHYEMACTXGMIIMIICLKIN; + input RESET; + input [0:31] DCREMACDBUS; + input [0:9] DCREMACABUS; + input [15:0] CLIENTEMACPAUSEVAL; + input [15:0] CLIENTEMACTXD; + input [1:0] HOSTOPCODE; + input [1:0] PHYEMACRXBUFSTATUS; + input [2:0] PHYEMACRXCLKCORCNT; + input [31:0] HOSTWRDATA; + input [4:0] PHYEMACPHYAD; + input [7:0] CLIENTEMACTXIFGDELAY; + input [7:0] PHYEMACRXD; + input [9:0] HOSTADDR; +endmodule + +module CMAC (...); + parameter CTL_PTP_TRANSPCLK_MODE = "FALSE"; + parameter CTL_RX_CHECK_ACK = "TRUE"; + parameter CTL_RX_CHECK_PREAMBLE = "FALSE"; + parameter CTL_RX_CHECK_SFD = "FALSE"; + parameter CTL_RX_DELETE_FCS = "TRUE"; + parameter [15:0] CTL_RX_ETYPE_GCP = 16'h8808; + parameter [15:0] CTL_RX_ETYPE_GPP = 16'h8808; + parameter [15:0] CTL_RX_ETYPE_PCP = 16'h8808; + parameter [15:0] CTL_RX_ETYPE_PPP = 16'h8808; + parameter CTL_RX_FORWARD_CONTROL = "FALSE"; + parameter CTL_RX_IGNORE_FCS = "FALSE"; + parameter [14:0] CTL_RX_MAX_PACKET_LEN = 15'h2580; + parameter [7:0] CTL_RX_MIN_PACKET_LEN = 8'h40; + parameter [15:0] CTL_RX_OPCODE_GPP = 16'h0001; + parameter [15:0] CTL_RX_OPCODE_MAX_GCP = 16'hFFFF; + parameter [15:0] CTL_RX_OPCODE_MAX_PCP = 16'hFFFF; + parameter [15:0] CTL_RX_OPCODE_MIN_GCP = 16'h0000; + parameter [15:0] CTL_RX_OPCODE_MIN_PCP = 16'h0000; + parameter [15:0] CTL_RX_OPCODE_PPP = 16'h0001; + parameter [47:0] CTL_RX_PAUSE_DA_MCAST = 48'h0180C2000001; + parameter [47:0] CTL_RX_PAUSE_DA_UCAST = 48'h000000000000; + parameter [47:0] CTL_RX_PAUSE_SA = 48'h000000000000; + parameter CTL_RX_PROCESS_LFI = "FALSE"; + parameter [15:0] CTL_RX_VL_LENGTH_MINUS1 = 16'h3FFF; + parameter [63:0] CTL_RX_VL_MARKER_ID0 = 64'hC16821003E97DE00; + parameter [63:0] CTL_RX_VL_MARKER_ID1 = 64'h9D718E00628E7100; + parameter [63:0] CTL_RX_VL_MARKER_ID10 = 64'hFD6C990002936600; + parameter [63:0] CTL_RX_VL_MARKER_ID11 = 64'hB9915500466EAA00; + parameter [63:0] CTL_RX_VL_MARKER_ID12 = 64'h5CB9B200A3464D00; + parameter [63:0] CTL_RX_VL_MARKER_ID13 = 64'h1AF8BD00E5074200; + parameter [63:0] CTL_RX_VL_MARKER_ID14 = 64'h83C7CA007C383500; + parameter [63:0] CTL_RX_VL_MARKER_ID15 = 64'h3536CD00CAC93200; + parameter [63:0] CTL_RX_VL_MARKER_ID16 = 64'hC4314C003BCEB300; + parameter [63:0] CTL_RX_VL_MARKER_ID17 = 64'hADD6B70052294800; + parameter [63:0] CTL_RX_VL_MARKER_ID18 = 64'h5F662A00A099D500; + parameter [63:0] CTL_RX_VL_MARKER_ID19 = 64'hC0F0E5003F0F1A00; + parameter [63:0] CTL_RX_VL_MARKER_ID2 = 64'h594BE800A6B41700; + parameter [63:0] CTL_RX_VL_MARKER_ID3 = 64'h4D957B00B26A8400; + parameter [63:0] CTL_RX_VL_MARKER_ID4 = 64'hF50709000AF8F600; + parameter [63:0] CTL_RX_VL_MARKER_ID5 = 64'hDD14C20022EB3D00; + parameter [63:0] CTL_RX_VL_MARKER_ID6 = 64'h9A4A260065B5D900; + parameter [63:0] CTL_RX_VL_MARKER_ID7 = 64'h7B45660084BA9900; + parameter [63:0] CTL_RX_VL_MARKER_ID8 = 64'hA02476005FDB8900; + parameter [63:0] CTL_RX_VL_MARKER_ID9 = 64'h68C9FB0097360400; + parameter CTL_TEST_MODE_PIN_CHAR = "FALSE"; + parameter [47:0] CTL_TX_DA_GPP = 48'h0180C2000001; + parameter [47:0] CTL_TX_DA_PPP = 48'h0180C2000001; + parameter [15:0] CTL_TX_ETHERTYPE_GPP = 16'h8808; + parameter [15:0] CTL_TX_ETHERTYPE_PPP = 16'h8808; + parameter CTL_TX_FCS_INS_ENABLE = "TRUE"; + parameter CTL_TX_IGNORE_FCS = "FALSE"; + parameter [15:0] CTL_TX_OPCODE_GPP = 16'h0001; + parameter [15:0] CTL_TX_OPCODE_PPP = 16'h0001; + parameter CTL_TX_PTP_1STEP_ENABLE = "FALSE"; + parameter [10:0] CTL_TX_PTP_LATENCY_ADJUST = 11'h2C1; + parameter [47:0] CTL_TX_SA_GPP = 48'h000000000000; + parameter [47:0] CTL_TX_SA_PPP = 48'h000000000000; + parameter [15:0] CTL_TX_VL_LENGTH_MINUS1 = 16'h3FFF; + parameter [63:0] CTL_TX_VL_MARKER_ID0 = 64'hC16821003E97DE00; + parameter [63:0] CTL_TX_VL_MARKER_ID1 = 64'h9D718E00628E7100; + parameter [63:0] CTL_TX_VL_MARKER_ID10 = 64'hFD6C990002936600; + parameter [63:0] CTL_TX_VL_MARKER_ID11 = 64'hB9915500466EAA00; + parameter [63:0] CTL_TX_VL_MARKER_ID12 = 64'h5CB9B200A3464D00; + parameter [63:0] CTL_TX_VL_MARKER_ID13 = 64'h1AF8BD00E5074200; + parameter [63:0] CTL_TX_VL_MARKER_ID14 = 64'h83C7CA007C383500; + parameter [63:0] CTL_TX_VL_MARKER_ID15 = 64'h3536CD00CAC93200; + parameter [63:0] CTL_TX_VL_MARKER_ID16 = 64'hC4314C003BCEB300; + parameter [63:0] CTL_TX_VL_MARKER_ID17 = 64'hADD6B70052294800; + parameter [63:0] CTL_TX_VL_MARKER_ID18 = 64'h5F662A00A099D500; + parameter [63:0] CTL_TX_VL_MARKER_ID19 = 64'hC0F0E5003F0F1A00; + parameter [63:0] CTL_TX_VL_MARKER_ID2 = 64'h594BE800A6B41700; + parameter [63:0] CTL_TX_VL_MARKER_ID3 = 64'h4D957B00B26A8400; + parameter [63:0] CTL_TX_VL_MARKER_ID4 = 64'hF50709000AF8F600; + parameter [63:0] CTL_TX_VL_MARKER_ID5 = 64'hDD14C20022EB3D00; + parameter [63:0] CTL_TX_VL_MARKER_ID6 = 64'h9A4A260065B5D900; + parameter [63:0] CTL_TX_VL_MARKER_ID7 = 64'h7B45660084BA9900; + parameter [63:0] CTL_TX_VL_MARKER_ID8 = 64'hA02476005FDB8900; + parameter [63:0] CTL_TX_VL_MARKER_ID9 = 64'h68C9FB0097360400; + parameter SIM_VERSION = "2.0"; + parameter TEST_MODE_PIN_CHAR = "FALSE"; + output [15:0] DRP_DO; + output DRP_RDY; + output [127:0] RX_DATAOUT0; + output [127:0] RX_DATAOUT1; + output [127:0] RX_DATAOUT2; + output [127:0] RX_DATAOUT3; + output RX_ENAOUT0; + output RX_ENAOUT1; + output RX_ENAOUT2; + output RX_ENAOUT3; + output RX_EOPOUT0; + output RX_EOPOUT1; + output RX_EOPOUT2; + output RX_EOPOUT3; + output RX_ERROUT0; + output RX_ERROUT1; + output RX_ERROUT2; + output RX_ERROUT3; + output [6:0] RX_LANE_ALIGNER_FILL_0; + output [6:0] RX_LANE_ALIGNER_FILL_1; + output [6:0] RX_LANE_ALIGNER_FILL_10; + output [6:0] RX_LANE_ALIGNER_FILL_11; + output [6:0] RX_LANE_ALIGNER_FILL_12; + output [6:0] RX_LANE_ALIGNER_FILL_13; + output [6:0] RX_LANE_ALIGNER_FILL_14; + output [6:0] RX_LANE_ALIGNER_FILL_15; + output [6:0] RX_LANE_ALIGNER_FILL_16; + output [6:0] RX_LANE_ALIGNER_FILL_17; + output [6:0] RX_LANE_ALIGNER_FILL_18; + output [6:0] RX_LANE_ALIGNER_FILL_19; + output [6:0] RX_LANE_ALIGNER_FILL_2; + output [6:0] RX_LANE_ALIGNER_FILL_3; + output [6:0] RX_LANE_ALIGNER_FILL_4; + output [6:0] RX_LANE_ALIGNER_FILL_5; + output [6:0] RX_LANE_ALIGNER_FILL_6; + output [6:0] RX_LANE_ALIGNER_FILL_7; + output [6:0] RX_LANE_ALIGNER_FILL_8; + output [6:0] RX_LANE_ALIGNER_FILL_9; + output [3:0] RX_MTYOUT0; + output [3:0] RX_MTYOUT1; + output [3:0] RX_MTYOUT2; + output [3:0] RX_MTYOUT3; + output [4:0] RX_PTP_PCSLANE_OUT; + output [79:0] RX_PTP_TSTAMP_OUT; + output RX_SOPOUT0; + output RX_SOPOUT1; + output RX_SOPOUT2; + output RX_SOPOUT3; + output STAT_RX_ALIGNED; + output STAT_RX_ALIGNED_ERR; + output [6:0] STAT_RX_BAD_CODE; + output [3:0] STAT_RX_BAD_FCS; + output STAT_RX_BAD_PREAMBLE; + output STAT_RX_BAD_SFD; + output STAT_RX_BIP_ERR_0; + output STAT_RX_BIP_ERR_1; + output STAT_RX_BIP_ERR_10; + output STAT_RX_BIP_ERR_11; + output STAT_RX_BIP_ERR_12; + output STAT_RX_BIP_ERR_13; + output STAT_RX_BIP_ERR_14; + output STAT_RX_BIP_ERR_15; + output STAT_RX_BIP_ERR_16; + output STAT_RX_BIP_ERR_17; + output STAT_RX_BIP_ERR_18; + output STAT_RX_BIP_ERR_19; + output STAT_RX_BIP_ERR_2; + output STAT_RX_BIP_ERR_3; + output STAT_RX_BIP_ERR_4; + output STAT_RX_BIP_ERR_5; + output STAT_RX_BIP_ERR_6; + output STAT_RX_BIP_ERR_7; + output STAT_RX_BIP_ERR_8; + output STAT_RX_BIP_ERR_9; + output [19:0] STAT_RX_BLOCK_LOCK; + output STAT_RX_BROADCAST; + output [3:0] STAT_RX_FRAGMENT; + output [3:0] STAT_RX_FRAMING_ERR_0; + output [3:0] STAT_RX_FRAMING_ERR_1; + output [3:0] STAT_RX_FRAMING_ERR_10; + output [3:0] STAT_RX_FRAMING_ERR_11; + output [3:0] STAT_RX_FRAMING_ERR_12; + output [3:0] STAT_RX_FRAMING_ERR_13; + output [3:0] STAT_RX_FRAMING_ERR_14; + output [3:0] STAT_RX_FRAMING_ERR_15; + output [3:0] STAT_RX_FRAMING_ERR_16; + output [3:0] STAT_RX_FRAMING_ERR_17; + output [3:0] STAT_RX_FRAMING_ERR_18; + output [3:0] STAT_RX_FRAMING_ERR_19; + output [3:0] STAT_RX_FRAMING_ERR_2; + output [3:0] STAT_RX_FRAMING_ERR_3; + output [3:0] STAT_RX_FRAMING_ERR_4; + output [3:0] STAT_RX_FRAMING_ERR_5; + output [3:0] STAT_RX_FRAMING_ERR_6; + output [3:0] STAT_RX_FRAMING_ERR_7; + output [3:0] STAT_RX_FRAMING_ERR_8; + output [3:0] STAT_RX_FRAMING_ERR_9; + output STAT_RX_FRAMING_ERR_VALID_0; + output STAT_RX_FRAMING_ERR_VALID_1; + output STAT_RX_FRAMING_ERR_VALID_10; + output STAT_RX_FRAMING_ERR_VALID_11; + output STAT_RX_FRAMING_ERR_VALID_12; + output STAT_RX_FRAMING_ERR_VALID_13; + output STAT_RX_FRAMING_ERR_VALID_14; + output STAT_RX_FRAMING_ERR_VALID_15; + output STAT_RX_FRAMING_ERR_VALID_16; + output STAT_RX_FRAMING_ERR_VALID_17; + output STAT_RX_FRAMING_ERR_VALID_18; + output STAT_RX_FRAMING_ERR_VALID_19; + output STAT_RX_FRAMING_ERR_VALID_2; + output STAT_RX_FRAMING_ERR_VALID_3; + output STAT_RX_FRAMING_ERR_VALID_4; + output STAT_RX_FRAMING_ERR_VALID_5; + output STAT_RX_FRAMING_ERR_VALID_6; + output STAT_RX_FRAMING_ERR_VALID_7; + output STAT_RX_FRAMING_ERR_VALID_8; + output STAT_RX_FRAMING_ERR_VALID_9; + output STAT_RX_GOT_SIGNAL_OS; + output STAT_RX_HI_BER; + output STAT_RX_INRANGEERR; + output STAT_RX_INTERNAL_LOCAL_FAULT; + output STAT_RX_JABBER; + output [7:0] STAT_RX_LANE0_VLM_BIP7; + output STAT_RX_LANE0_VLM_BIP7_VALID; + output STAT_RX_LOCAL_FAULT; + output [19:0] STAT_RX_MF_ERR; + output [19:0] STAT_RX_MF_LEN_ERR; + output [19:0] STAT_RX_MF_REPEAT_ERR; + output STAT_RX_MISALIGNED; + output STAT_RX_MULTICAST; + output STAT_RX_OVERSIZE; + output STAT_RX_PACKET_1024_1518_BYTES; + output STAT_RX_PACKET_128_255_BYTES; + output STAT_RX_PACKET_1519_1522_BYTES; + output STAT_RX_PACKET_1523_1548_BYTES; + output STAT_RX_PACKET_1549_2047_BYTES; + output STAT_RX_PACKET_2048_4095_BYTES; + output STAT_RX_PACKET_256_511_BYTES; + output STAT_RX_PACKET_4096_8191_BYTES; + output STAT_RX_PACKET_512_1023_BYTES; + output STAT_RX_PACKET_64_BYTES; + output STAT_RX_PACKET_65_127_BYTES; + output STAT_RX_PACKET_8192_9215_BYTES; + output STAT_RX_PACKET_BAD_FCS; + output STAT_RX_PACKET_LARGE; + output [3:0] STAT_RX_PACKET_SMALL; + output STAT_RX_PAUSE; + output [15:0] STAT_RX_PAUSE_QUANTA0; + output [15:0] STAT_RX_PAUSE_QUANTA1; + output [15:0] STAT_RX_PAUSE_QUANTA2; + output [15:0] STAT_RX_PAUSE_QUANTA3; + output [15:0] STAT_RX_PAUSE_QUANTA4; + output [15:0] STAT_RX_PAUSE_QUANTA5; + output [15:0] STAT_RX_PAUSE_QUANTA6; + output [15:0] STAT_RX_PAUSE_QUANTA7; + output [15:0] STAT_RX_PAUSE_QUANTA8; + output [8:0] STAT_RX_PAUSE_REQ; + output [8:0] STAT_RX_PAUSE_VALID; + output STAT_RX_RECEIVED_LOCAL_FAULT; + output STAT_RX_REMOTE_FAULT; + output STAT_RX_STATUS; + output [3:0] STAT_RX_STOMPED_FCS; + output [19:0] STAT_RX_SYNCED; + output [19:0] STAT_RX_SYNCED_ERR; + output [2:0] STAT_RX_TEST_PATTERN_MISMATCH; + output STAT_RX_TOOLONG; + output [7:0] STAT_RX_TOTAL_BYTES; + output [13:0] STAT_RX_TOTAL_GOOD_BYTES; + output STAT_RX_TOTAL_GOOD_PACKETS; + output [3:0] STAT_RX_TOTAL_PACKETS; + output STAT_RX_TRUNCATED; + output [3:0] STAT_RX_UNDERSIZE; + output STAT_RX_UNICAST; + output STAT_RX_USER_PAUSE; + output STAT_RX_VLAN; + output [19:0] STAT_RX_VL_DEMUXED; + output [4:0] STAT_RX_VL_NUMBER_0; + output [4:0] STAT_RX_VL_NUMBER_1; + output [4:0] STAT_RX_VL_NUMBER_10; + output [4:0] STAT_RX_VL_NUMBER_11; + output [4:0] STAT_RX_VL_NUMBER_12; + output [4:0] STAT_RX_VL_NUMBER_13; + output [4:0] STAT_RX_VL_NUMBER_14; + output [4:0] STAT_RX_VL_NUMBER_15; + output [4:0] STAT_RX_VL_NUMBER_16; + output [4:0] STAT_RX_VL_NUMBER_17; + output [4:0] STAT_RX_VL_NUMBER_18; + output [4:0] STAT_RX_VL_NUMBER_19; + output [4:0] STAT_RX_VL_NUMBER_2; + output [4:0] STAT_RX_VL_NUMBER_3; + output [4:0] STAT_RX_VL_NUMBER_4; + output [4:0] STAT_RX_VL_NUMBER_5; + output [4:0] STAT_RX_VL_NUMBER_6; + output [4:0] STAT_RX_VL_NUMBER_7; + output [4:0] STAT_RX_VL_NUMBER_8; + output [4:0] STAT_RX_VL_NUMBER_9; + output STAT_TX_BAD_FCS; + output STAT_TX_BROADCAST; + output STAT_TX_FRAME_ERROR; + output STAT_TX_LOCAL_FAULT; + output STAT_TX_MULTICAST; + output STAT_TX_PACKET_1024_1518_BYTES; + output STAT_TX_PACKET_128_255_BYTES; + output STAT_TX_PACKET_1519_1522_BYTES; + output STAT_TX_PACKET_1523_1548_BYTES; + output STAT_TX_PACKET_1549_2047_BYTES; + output STAT_TX_PACKET_2048_4095_BYTES; + output STAT_TX_PACKET_256_511_BYTES; + output STAT_TX_PACKET_4096_8191_BYTES; + output STAT_TX_PACKET_512_1023_BYTES; + output STAT_TX_PACKET_64_BYTES; + output STAT_TX_PACKET_65_127_BYTES; + output STAT_TX_PACKET_8192_9215_BYTES; + output STAT_TX_PACKET_LARGE; + output STAT_TX_PACKET_SMALL; + output STAT_TX_PAUSE; + output [8:0] STAT_TX_PAUSE_VALID; + output STAT_TX_PTP_FIFO_READ_ERROR; + output STAT_TX_PTP_FIFO_WRITE_ERROR; + output [6:0] STAT_TX_TOTAL_BYTES; + output [13:0] STAT_TX_TOTAL_GOOD_BYTES; + output STAT_TX_TOTAL_GOOD_PACKETS; + output STAT_TX_TOTAL_PACKETS; + output STAT_TX_UNICAST; + output STAT_TX_USER_PAUSE; + output STAT_TX_VLAN; + output TX_OVFOUT; + output [4:0] TX_PTP_PCSLANE_OUT; + output [79:0] TX_PTP_TSTAMP_OUT; + output [15:0] TX_PTP_TSTAMP_TAG_OUT; + output TX_PTP_TSTAMP_VALID_OUT; + output TX_RDYOUT; + output [15:0] TX_SERDES_ALT_DATA0; + output [15:0] TX_SERDES_ALT_DATA1; + output [15:0] TX_SERDES_ALT_DATA2; + output [15:0] TX_SERDES_ALT_DATA3; + output [63:0] TX_SERDES_DATA0; + output [63:0] TX_SERDES_DATA1; + output [63:0] TX_SERDES_DATA2; + output [63:0] TX_SERDES_DATA3; + output [31:0] TX_SERDES_DATA4; + output [31:0] TX_SERDES_DATA5; + output [31:0] TX_SERDES_DATA6; + output [31:0] TX_SERDES_DATA7; + output [31:0] TX_SERDES_DATA8; + output [31:0] TX_SERDES_DATA9; + output TX_UNFOUT; + input CTL_CAUI4_MODE; + input CTL_RX_CHECK_ETYPE_GCP; + input CTL_RX_CHECK_ETYPE_GPP; + input CTL_RX_CHECK_ETYPE_PCP; + input CTL_RX_CHECK_ETYPE_PPP; + input CTL_RX_CHECK_MCAST_GCP; + input CTL_RX_CHECK_MCAST_GPP; + input CTL_RX_CHECK_MCAST_PCP; + input CTL_RX_CHECK_MCAST_PPP; + input CTL_RX_CHECK_OPCODE_GCP; + input CTL_RX_CHECK_OPCODE_GPP; + input CTL_RX_CHECK_OPCODE_PCP; + input CTL_RX_CHECK_OPCODE_PPP; + input CTL_RX_CHECK_SA_GCP; + input CTL_RX_CHECK_SA_GPP; + input CTL_RX_CHECK_SA_PCP; + input CTL_RX_CHECK_SA_PPP; + input CTL_RX_CHECK_UCAST_GCP; + input CTL_RX_CHECK_UCAST_GPP; + input CTL_RX_CHECK_UCAST_PCP; + input CTL_RX_CHECK_UCAST_PPP; + input CTL_RX_ENABLE; + input CTL_RX_ENABLE_GCP; + input CTL_RX_ENABLE_GPP; + input CTL_RX_ENABLE_PCP; + input CTL_RX_ENABLE_PPP; + input CTL_RX_FORCE_RESYNC; + input [8:0] CTL_RX_PAUSE_ACK; + input [8:0] CTL_RX_PAUSE_ENABLE; + input [79:0] CTL_RX_SYSTEMTIMERIN; + input CTL_RX_TEST_PATTERN; + input CTL_TX_ENABLE; + input CTL_TX_LANE0_VLM_BIP7_OVERRIDE; + input [7:0] CTL_TX_LANE0_VLM_BIP7_OVERRIDE_VALUE; + input [8:0] CTL_TX_PAUSE_ENABLE; + input [15:0] CTL_TX_PAUSE_QUANTA0; + input [15:0] CTL_TX_PAUSE_QUANTA1; + input [15:0] CTL_TX_PAUSE_QUANTA2; + input [15:0] CTL_TX_PAUSE_QUANTA3; + input [15:0] CTL_TX_PAUSE_QUANTA4; + input [15:0] CTL_TX_PAUSE_QUANTA5; + input [15:0] CTL_TX_PAUSE_QUANTA6; + input [15:0] CTL_TX_PAUSE_QUANTA7; + input [15:0] CTL_TX_PAUSE_QUANTA8; + input [15:0] CTL_TX_PAUSE_REFRESH_TIMER0; + input [15:0] CTL_TX_PAUSE_REFRESH_TIMER1; + input [15:0] CTL_TX_PAUSE_REFRESH_TIMER2; + input [15:0] CTL_TX_PAUSE_REFRESH_TIMER3; + input [15:0] CTL_TX_PAUSE_REFRESH_TIMER4; + input [15:0] CTL_TX_PAUSE_REFRESH_TIMER5; + input [15:0] CTL_TX_PAUSE_REFRESH_TIMER6; + input [15:0] CTL_TX_PAUSE_REFRESH_TIMER7; + input [15:0] CTL_TX_PAUSE_REFRESH_TIMER8; + input [8:0] CTL_TX_PAUSE_REQ; + input CTL_TX_PTP_VLANE_ADJUST_MODE; + input CTL_TX_RESEND_PAUSE; + input CTL_TX_SEND_IDLE; + input CTL_TX_SEND_RFI; + input [79:0] CTL_TX_SYSTEMTIMERIN; + input CTL_TX_TEST_PATTERN; + input [9:0] DRP_ADDR; + input DRP_CLK; + input [15:0] DRP_DI; + input DRP_EN; + input DRP_WE; + input RX_CLK; + input RX_RESET; + input [15:0] RX_SERDES_ALT_DATA0; + input [15:0] RX_SERDES_ALT_DATA1; + input [15:0] RX_SERDES_ALT_DATA2; + input [15:0] RX_SERDES_ALT_DATA3; + input [9:0] RX_SERDES_CLK; + input [63:0] RX_SERDES_DATA0; + input [63:0] RX_SERDES_DATA1; + input [63:0] RX_SERDES_DATA2; + input [63:0] RX_SERDES_DATA3; + input [31:0] RX_SERDES_DATA4; + input [31:0] RX_SERDES_DATA5; + input [31:0] RX_SERDES_DATA6; + input [31:0] RX_SERDES_DATA7; + input [31:0] RX_SERDES_DATA8; + input [31:0] RX_SERDES_DATA9; + input [9:0] RX_SERDES_RESET; + input TX_CLK; + input [127:0] TX_DATAIN0; + input [127:0] TX_DATAIN1; + input [127:0] TX_DATAIN2; + input [127:0] TX_DATAIN3; + input TX_ENAIN0; + input TX_ENAIN1; + input TX_ENAIN2; + input TX_ENAIN3; + input TX_EOPIN0; + input TX_EOPIN1; + input TX_EOPIN2; + input TX_EOPIN3; + input TX_ERRIN0; + input TX_ERRIN1; + input TX_ERRIN2; + input TX_ERRIN3; + input [3:0] TX_MTYIN0; + input [3:0] TX_MTYIN1; + input [3:0] TX_MTYIN2; + input [3:0] TX_MTYIN3; + input [1:0] TX_PTP_1588OP_IN; + input [15:0] TX_PTP_CHKSUM_OFFSET_IN; + input [63:0] TX_PTP_RXTSTAMP_IN; + input [15:0] TX_PTP_TAG_FIELD_IN; + input [15:0] TX_PTP_TSTAMP_OFFSET_IN; + input TX_PTP_UPD_CHKSUM_IN; + input TX_RESET; + input TX_SOPIN0; + input TX_SOPIN1; + input TX_SOPIN2; + input TX_SOPIN3; +endmodule + +module CMACE4 (...); + parameter CTL_PTP_TRANSPCLK_MODE = "FALSE"; + parameter CTL_RX_CHECK_ACK = "TRUE"; + parameter CTL_RX_CHECK_PREAMBLE = "FALSE"; + parameter CTL_RX_CHECK_SFD = "FALSE"; + parameter CTL_RX_DELETE_FCS = "TRUE"; + parameter [15:0] CTL_RX_ETYPE_GCP = 16'h8808; + parameter [15:0] CTL_RX_ETYPE_GPP = 16'h8808; + parameter [15:0] CTL_RX_ETYPE_PCP = 16'h8808; + parameter [15:0] CTL_RX_ETYPE_PPP = 16'h8808; + parameter CTL_RX_FORWARD_CONTROL = "FALSE"; + parameter CTL_RX_IGNORE_FCS = "FALSE"; + parameter [14:0] CTL_RX_MAX_PACKET_LEN = 15'h2580; + parameter [7:0] CTL_RX_MIN_PACKET_LEN = 8'h40; + parameter [15:0] CTL_RX_OPCODE_GPP = 16'h0001; + parameter [15:0] CTL_RX_OPCODE_MAX_GCP = 16'hFFFF; + parameter [15:0] CTL_RX_OPCODE_MAX_PCP = 16'hFFFF; + parameter [15:0] CTL_RX_OPCODE_MIN_GCP = 16'h0000; + parameter [15:0] CTL_RX_OPCODE_MIN_PCP = 16'h0000; + parameter [15:0] CTL_RX_OPCODE_PPP = 16'h0001; + parameter [47:0] CTL_RX_PAUSE_DA_MCAST = 48'h0180C2000001; + parameter [47:0] CTL_RX_PAUSE_DA_UCAST = 48'h000000000000; + parameter [47:0] CTL_RX_PAUSE_SA = 48'h000000000000; + parameter CTL_RX_PROCESS_LFI = "FALSE"; + parameter [8:0] CTL_RX_RSFEC_AM_THRESHOLD = 9'h046; + parameter [1:0] CTL_RX_RSFEC_FILL_ADJUST = 2'h0; + parameter [15:0] CTL_RX_VL_LENGTH_MINUS1 = 16'h3FFF; + parameter [63:0] CTL_RX_VL_MARKER_ID0 = 64'hC16821003E97DE00; + parameter [63:0] CTL_RX_VL_MARKER_ID1 = 64'h9D718E00628E7100; + parameter [63:0] CTL_RX_VL_MARKER_ID10 = 64'hFD6C990002936600; + parameter [63:0] CTL_RX_VL_MARKER_ID11 = 64'hB9915500466EAA00; + parameter [63:0] CTL_RX_VL_MARKER_ID12 = 64'h5CB9B200A3464D00; + parameter [63:0] CTL_RX_VL_MARKER_ID13 = 64'h1AF8BD00E5074200; + parameter [63:0] CTL_RX_VL_MARKER_ID14 = 64'h83C7CA007C383500; + parameter [63:0] CTL_RX_VL_MARKER_ID15 = 64'h3536CD00CAC93200; + parameter [63:0] CTL_RX_VL_MARKER_ID16 = 64'hC4314C003BCEB300; + parameter [63:0] CTL_RX_VL_MARKER_ID17 = 64'hADD6B70052294800; + parameter [63:0] CTL_RX_VL_MARKER_ID18 = 64'h5F662A00A099D500; + parameter [63:0] CTL_RX_VL_MARKER_ID19 = 64'hC0F0E5003F0F1A00; + parameter [63:0] CTL_RX_VL_MARKER_ID2 = 64'h594BE800A6B41700; + parameter [63:0] CTL_RX_VL_MARKER_ID3 = 64'h4D957B00B26A8400; + parameter [63:0] CTL_RX_VL_MARKER_ID4 = 64'hF50709000AF8F600; + parameter [63:0] CTL_RX_VL_MARKER_ID5 = 64'hDD14C20022EB3D00; + parameter [63:0] CTL_RX_VL_MARKER_ID6 = 64'h9A4A260065B5D900; + parameter [63:0] CTL_RX_VL_MARKER_ID7 = 64'h7B45660084BA9900; + parameter [63:0] CTL_RX_VL_MARKER_ID8 = 64'hA02476005FDB8900; + parameter [63:0] CTL_RX_VL_MARKER_ID9 = 64'h68C9FB0097360400; + parameter CTL_TEST_MODE_PIN_CHAR = "FALSE"; + parameter CTL_TX_CUSTOM_PREAMBLE_ENABLE = "FALSE"; + parameter [47:0] CTL_TX_DA_GPP = 48'h0180C2000001; + parameter [47:0] CTL_TX_DA_PPP = 48'h0180C2000001; + parameter [15:0] CTL_TX_ETHERTYPE_GPP = 16'h8808; + parameter [15:0] CTL_TX_ETHERTYPE_PPP = 16'h8808; + parameter CTL_TX_FCS_INS_ENABLE = "TRUE"; + parameter CTL_TX_IGNORE_FCS = "FALSE"; + parameter [3:0] CTL_TX_IPG_VALUE = 4'hC; + parameter [15:0] CTL_TX_OPCODE_GPP = 16'h0001; + parameter [15:0] CTL_TX_OPCODE_PPP = 16'h0001; + parameter CTL_TX_PTP_1STEP_ENABLE = "FALSE"; + parameter [10:0] CTL_TX_PTP_LATENCY_ADJUST = 11'h2C1; + parameter [47:0] CTL_TX_SA_GPP = 48'h000000000000; + parameter [47:0] CTL_TX_SA_PPP = 48'h000000000000; + parameter [15:0] CTL_TX_VL_LENGTH_MINUS1 = 16'h3FFF; + parameter [63:0] CTL_TX_VL_MARKER_ID0 = 64'hC16821003E97DE00; + parameter [63:0] CTL_TX_VL_MARKER_ID1 = 64'h9D718E00628E7100; + parameter [63:0] CTL_TX_VL_MARKER_ID10 = 64'hFD6C990002936600; + parameter [63:0] CTL_TX_VL_MARKER_ID11 = 64'hB9915500466EAA00; + parameter [63:0] CTL_TX_VL_MARKER_ID12 = 64'h5CB9B200A3464D00; + parameter [63:0] CTL_TX_VL_MARKER_ID13 = 64'h1AF8BD00E5074200; + parameter [63:0] CTL_TX_VL_MARKER_ID14 = 64'h83C7CA007C383500; + parameter [63:0] CTL_TX_VL_MARKER_ID15 = 64'h3536CD00CAC93200; + parameter [63:0] CTL_TX_VL_MARKER_ID16 = 64'hC4314C003BCEB300; + parameter [63:0] CTL_TX_VL_MARKER_ID17 = 64'hADD6B70052294800; + parameter [63:0] CTL_TX_VL_MARKER_ID18 = 64'h5F662A00A099D500; + parameter [63:0] CTL_TX_VL_MARKER_ID19 = 64'hC0F0E5003F0F1A00; + parameter [63:0] CTL_TX_VL_MARKER_ID2 = 64'h594BE800A6B41700; + parameter [63:0] CTL_TX_VL_MARKER_ID3 = 64'h4D957B00B26A8400; + parameter [63:0] CTL_TX_VL_MARKER_ID4 = 64'hF50709000AF8F600; + parameter [63:0] CTL_TX_VL_MARKER_ID5 = 64'hDD14C20022EB3D00; + parameter [63:0] CTL_TX_VL_MARKER_ID6 = 64'h9A4A260065B5D900; + parameter [63:0] CTL_TX_VL_MARKER_ID7 = 64'h7B45660084BA9900; + parameter [63:0] CTL_TX_VL_MARKER_ID8 = 64'hA02476005FDB8900; + parameter [63:0] CTL_TX_VL_MARKER_ID9 = 64'h68C9FB0097360400; + parameter SIM_DEVICE = "ULTRASCALE_PLUS"; + parameter TEST_MODE_PIN_CHAR = "FALSE"; + output [15:0] DRP_DO; + output DRP_RDY; + output [329:0] RSFEC_BYPASS_RX_DOUT; + output RSFEC_BYPASS_RX_DOUT_CW_START; + output RSFEC_BYPASS_RX_DOUT_VALID; + output [329:0] RSFEC_BYPASS_TX_DOUT; + output RSFEC_BYPASS_TX_DOUT_CW_START; + output RSFEC_BYPASS_TX_DOUT_VALID; + output [127:0] RX_DATAOUT0; + output [127:0] RX_DATAOUT1; + output [127:0] RX_DATAOUT2; + output [127:0] RX_DATAOUT3; + output RX_ENAOUT0; + output RX_ENAOUT1; + output RX_ENAOUT2; + output RX_ENAOUT3; + output RX_EOPOUT0; + output RX_EOPOUT1; + output RX_EOPOUT2; + output RX_EOPOUT3; + output RX_ERROUT0; + output RX_ERROUT1; + output RX_ERROUT2; + output RX_ERROUT3; + output [6:0] RX_LANE_ALIGNER_FILL_0; + output [6:0] RX_LANE_ALIGNER_FILL_1; + output [6:0] RX_LANE_ALIGNER_FILL_10; + output [6:0] RX_LANE_ALIGNER_FILL_11; + output [6:0] RX_LANE_ALIGNER_FILL_12; + output [6:0] RX_LANE_ALIGNER_FILL_13; + output [6:0] RX_LANE_ALIGNER_FILL_14; + output [6:0] RX_LANE_ALIGNER_FILL_15; + output [6:0] RX_LANE_ALIGNER_FILL_16; + output [6:0] RX_LANE_ALIGNER_FILL_17; + output [6:0] RX_LANE_ALIGNER_FILL_18; + output [6:0] RX_LANE_ALIGNER_FILL_19; + output [6:0] RX_LANE_ALIGNER_FILL_2; + output [6:0] RX_LANE_ALIGNER_FILL_3; + output [6:0] RX_LANE_ALIGNER_FILL_4; + output [6:0] RX_LANE_ALIGNER_FILL_5; + output [6:0] RX_LANE_ALIGNER_FILL_6; + output [6:0] RX_LANE_ALIGNER_FILL_7; + output [6:0] RX_LANE_ALIGNER_FILL_8; + output [6:0] RX_LANE_ALIGNER_FILL_9; + output [3:0] RX_MTYOUT0; + output [3:0] RX_MTYOUT1; + output [3:0] RX_MTYOUT2; + output [3:0] RX_MTYOUT3; + output [7:0] RX_OTN_BIP8_0; + output [7:0] RX_OTN_BIP8_1; + output [7:0] RX_OTN_BIP8_2; + output [7:0] RX_OTN_BIP8_3; + output [7:0] RX_OTN_BIP8_4; + output [65:0] RX_OTN_DATA_0; + output [65:0] RX_OTN_DATA_1; + output [65:0] RX_OTN_DATA_2; + output [65:0] RX_OTN_DATA_3; + output [65:0] RX_OTN_DATA_4; + output RX_OTN_ENA; + output RX_OTN_LANE0; + output RX_OTN_VLMARKER; + output [55:0] RX_PREOUT; + output [4:0] RX_PTP_PCSLANE_OUT; + output [79:0] RX_PTP_TSTAMP_OUT; + output RX_SOPOUT0; + output RX_SOPOUT1; + output RX_SOPOUT2; + output RX_SOPOUT3; + output STAT_RX_ALIGNED; + output STAT_RX_ALIGNED_ERR; + output [2:0] STAT_RX_BAD_CODE; + output [2:0] STAT_RX_BAD_FCS; + output STAT_RX_BAD_PREAMBLE; + output STAT_RX_BAD_SFD; + output STAT_RX_BIP_ERR_0; + output STAT_RX_BIP_ERR_1; + output STAT_RX_BIP_ERR_10; + output STAT_RX_BIP_ERR_11; + output STAT_RX_BIP_ERR_12; + output STAT_RX_BIP_ERR_13; + output STAT_RX_BIP_ERR_14; + output STAT_RX_BIP_ERR_15; + output STAT_RX_BIP_ERR_16; + output STAT_RX_BIP_ERR_17; + output STAT_RX_BIP_ERR_18; + output STAT_RX_BIP_ERR_19; + output STAT_RX_BIP_ERR_2; + output STAT_RX_BIP_ERR_3; + output STAT_RX_BIP_ERR_4; + output STAT_RX_BIP_ERR_5; + output STAT_RX_BIP_ERR_6; + output STAT_RX_BIP_ERR_7; + output STAT_RX_BIP_ERR_8; + output STAT_RX_BIP_ERR_9; + output [19:0] STAT_RX_BLOCK_LOCK; + output STAT_RX_BROADCAST; + output [2:0] STAT_RX_FRAGMENT; + output [1:0] STAT_RX_FRAMING_ERR_0; + output [1:0] STAT_RX_FRAMING_ERR_1; + output [1:0] STAT_RX_FRAMING_ERR_10; + output [1:0] STAT_RX_FRAMING_ERR_11; + output [1:0] STAT_RX_FRAMING_ERR_12; + output [1:0] STAT_RX_FRAMING_ERR_13; + output [1:0] STAT_RX_FRAMING_ERR_14; + output [1:0] STAT_RX_FRAMING_ERR_15; + output [1:0] STAT_RX_FRAMING_ERR_16; + output [1:0] STAT_RX_FRAMING_ERR_17; + output [1:0] STAT_RX_FRAMING_ERR_18; + output [1:0] STAT_RX_FRAMING_ERR_19; + output [1:0] STAT_RX_FRAMING_ERR_2; + output [1:0] STAT_RX_FRAMING_ERR_3; + output [1:0] STAT_RX_FRAMING_ERR_4; + output [1:0] STAT_RX_FRAMING_ERR_5; + output [1:0] STAT_RX_FRAMING_ERR_6; + output [1:0] STAT_RX_FRAMING_ERR_7; + output [1:0] STAT_RX_FRAMING_ERR_8; + output [1:0] STAT_RX_FRAMING_ERR_9; + output STAT_RX_FRAMING_ERR_VALID_0; + output STAT_RX_FRAMING_ERR_VALID_1; + output STAT_RX_FRAMING_ERR_VALID_10; + output STAT_RX_FRAMING_ERR_VALID_11; + output STAT_RX_FRAMING_ERR_VALID_12; + output STAT_RX_FRAMING_ERR_VALID_13; + output STAT_RX_FRAMING_ERR_VALID_14; + output STAT_RX_FRAMING_ERR_VALID_15; + output STAT_RX_FRAMING_ERR_VALID_16; + output STAT_RX_FRAMING_ERR_VALID_17; + output STAT_RX_FRAMING_ERR_VALID_18; + output STAT_RX_FRAMING_ERR_VALID_19; + output STAT_RX_FRAMING_ERR_VALID_2; + output STAT_RX_FRAMING_ERR_VALID_3; + output STAT_RX_FRAMING_ERR_VALID_4; + output STAT_RX_FRAMING_ERR_VALID_5; + output STAT_RX_FRAMING_ERR_VALID_6; + output STAT_RX_FRAMING_ERR_VALID_7; + output STAT_RX_FRAMING_ERR_VALID_8; + output STAT_RX_FRAMING_ERR_VALID_9; + output STAT_RX_GOT_SIGNAL_OS; + output STAT_RX_HI_BER; + output STAT_RX_INRANGEERR; + output STAT_RX_INTERNAL_LOCAL_FAULT; + output STAT_RX_JABBER; + output [7:0] STAT_RX_LANE0_VLM_BIP7; + output STAT_RX_LANE0_VLM_BIP7_VALID; + output STAT_RX_LOCAL_FAULT; + output [19:0] STAT_RX_MF_ERR; + output [19:0] STAT_RX_MF_LEN_ERR; + output [19:0] STAT_RX_MF_REPEAT_ERR; + output STAT_RX_MISALIGNED; + output STAT_RX_MULTICAST; + output STAT_RX_OVERSIZE; + output STAT_RX_PACKET_1024_1518_BYTES; + output STAT_RX_PACKET_128_255_BYTES; + output STAT_RX_PACKET_1519_1522_BYTES; + output STAT_RX_PACKET_1523_1548_BYTES; + output STAT_RX_PACKET_1549_2047_BYTES; + output STAT_RX_PACKET_2048_4095_BYTES; + output STAT_RX_PACKET_256_511_BYTES; + output STAT_RX_PACKET_4096_8191_BYTES; + output STAT_RX_PACKET_512_1023_BYTES; + output STAT_RX_PACKET_64_BYTES; + output STAT_RX_PACKET_65_127_BYTES; + output STAT_RX_PACKET_8192_9215_BYTES; + output STAT_RX_PACKET_BAD_FCS; + output STAT_RX_PACKET_LARGE; + output [2:0] STAT_RX_PACKET_SMALL; + output STAT_RX_PAUSE; + output [15:0] STAT_RX_PAUSE_QUANTA0; + output [15:0] STAT_RX_PAUSE_QUANTA1; + output [15:0] STAT_RX_PAUSE_QUANTA2; + output [15:0] STAT_RX_PAUSE_QUANTA3; + output [15:0] STAT_RX_PAUSE_QUANTA4; + output [15:0] STAT_RX_PAUSE_QUANTA5; + output [15:0] STAT_RX_PAUSE_QUANTA6; + output [15:0] STAT_RX_PAUSE_QUANTA7; + output [15:0] STAT_RX_PAUSE_QUANTA8; + output [8:0] STAT_RX_PAUSE_REQ; + output [8:0] STAT_RX_PAUSE_VALID; + output STAT_RX_RECEIVED_LOCAL_FAULT; + output STAT_RX_REMOTE_FAULT; + output STAT_RX_RSFEC_AM_LOCK0; + output STAT_RX_RSFEC_AM_LOCK1; + output STAT_RX_RSFEC_AM_LOCK2; + output STAT_RX_RSFEC_AM_LOCK3; + output STAT_RX_RSFEC_CORRECTED_CW_INC; + output STAT_RX_RSFEC_CW_INC; + output [2:0] STAT_RX_RSFEC_ERR_COUNT0_INC; + output [2:0] STAT_RX_RSFEC_ERR_COUNT1_INC; + output [2:0] STAT_RX_RSFEC_ERR_COUNT2_INC; + output [2:0] STAT_RX_RSFEC_ERR_COUNT3_INC; + output STAT_RX_RSFEC_HI_SER; + output STAT_RX_RSFEC_LANE_ALIGNMENT_STATUS; + output [13:0] STAT_RX_RSFEC_LANE_FILL_0; + output [13:0] STAT_RX_RSFEC_LANE_FILL_1; + output [13:0] STAT_RX_RSFEC_LANE_FILL_2; + output [13:0] STAT_RX_RSFEC_LANE_FILL_3; + output [7:0] STAT_RX_RSFEC_LANE_MAPPING; + output [31:0] STAT_RX_RSFEC_RSVD; + output STAT_RX_RSFEC_UNCORRECTED_CW_INC; + output STAT_RX_STATUS; + output [2:0] STAT_RX_STOMPED_FCS; + output [19:0] STAT_RX_SYNCED; + output [19:0] STAT_RX_SYNCED_ERR; + output [2:0] STAT_RX_TEST_PATTERN_MISMATCH; + output STAT_RX_TOOLONG; + output [6:0] STAT_RX_TOTAL_BYTES; + output [13:0] STAT_RX_TOTAL_GOOD_BYTES; + output STAT_RX_TOTAL_GOOD_PACKETS; + output [2:0] STAT_RX_TOTAL_PACKETS; + output STAT_RX_TRUNCATED; + output [2:0] STAT_RX_UNDERSIZE; + output STAT_RX_UNICAST; + output STAT_RX_USER_PAUSE; + output STAT_RX_VLAN; + output [19:0] STAT_RX_VL_DEMUXED; + output [4:0] STAT_RX_VL_NUMBER_0; + output [4:0] STAT_RX_VL_NUMBER_1; + output [4:0] STAT_RX_VL_NUMBER_10; + output [4:0] STAT_RX_VL_NUMBER_11; + output [4:0] STAT_RX_VL_NUMBER_12; + output [4:0] STAT_RX_VL_NUMBER_13; + output [4:0] STAT_RX_VL_NUMBER_14; + output [4:0] STAT_RX_VL_NUMBER_15; + output [4:0] STAT_RX_VL_NUMBER_16; + output [4:0] STAT_RX_VL_NUMBER_17; + output [4:0] STAT_RX_VL_NUMBER_18; + output [4:0] STAT_RX_VL_NUMBER_19; + output [4:0] STAT_RX_VL_NUMBER_2; + output [4:0] STAT_RX_VL_NUMBER_3; + output [4:0] STAT_RX_VL_NUMBER_4; + output [4:0] STAT_RX_VL_NUMBER_5; + output [4:0] STAT_RX_VL_NUMBER_6; + output [4:0] STAT_RX_VL_NUMBER_7; + output [4:0] STAT_RX_VL_NUMBER_8; + output [4:0] STAT_RX_VL_NUMBER_9; + output STAT_TX_BAD_FCS; + output STAT_TX_BROADCAST; + output STAT_TX_FRAME_ERROR; + output STAT_TX_LOCAL_FAULT; + output STAT_TX_MULTICAST; + output STAT_TX_PACKET_1024_1518_BYTES; + output STAT_TX_PACKET_128_255_BYTES; + output STAT_TX_PACKET_1519_1522_BYTES; + output STAT_TX_PACKET_1523_1548_BYTES; + output STAT_TX_PACKET_1549_2047_BYTES; + output STAT_TX_PACKET_2048_4095_BYTES; + output STAT_TX_PACKET_256_511_BYTES; + output STAT_TX_PACKET_4096_8191_BYTES; + output STAT_TX_PACKET_512_1023_BYTES; + output STAT_TX_PACKET_64_BYTES; + output STAT_TX_PACKET_65_127_BYTES; + output STAT_TX_PACKET_8192_9215_BYTES; + output STAT_TX_PACKET_LARGE; + output STAT_TX_PACKET_SMALL; + output STAT_TX_PAUSE; + output [8:0] STAT_TX_PAUSE_VALID; + output STAT_TX_PTP_FIFO_READ_ERROR; + output STAT_TX_PTP_FIFO_WRITE_ERROR; + output [5:0] STAT_TX_TOTAL_BYTES; + output [13:0] STAT_TX_TOTAL_GOOD_BYTES; + output STAT_TX_TOTAL_GOOD_PACKETS; + output STAT_TX_TOTAL_PACKETS; + output STAT_TX_UNICAST; + output STAT_TX_USER_PAUSE; + output STAT_TX_VLAN; + output TX_OVFOUT; + output [4:0] TX_PTP_PCSLANE_OUT; + output [79:0] TX_PTP_TSTAMP_OUT; + output [15:0] TX_PTP_TSTAMP_TAG_OUT; + output TX_PTP_TSTAMP_VALID_OUT; + output TX_RDYOUT; + output [15:0] TX_SERDES_ALT_DATA0; + output [15:0] TX_SERDES_ALT_DATA1; + output [15:0] TX_SERDES_ALT_DATA2; + output [15:0] TX_SERDES_ALT_DATA3; + output [63:0] TX_SERDES_DATA0; + output [63:0] TX_SERDES_DATA1; + output [63:0] TX_SERDES_DATA2; + output [63:0] TX_SERDES_DATA3; + output [31:0] TX_SERDES_DATA4; + output [31:0] TX_SERDES_DATA5; + output [31:0] TX_SERDES_DATA6; + output [31:0] TX_SERDES_DATA7; + output [31:0] TX_SERDES_DATA8; + output [31:0] TX_SERDES_DATA9; + output TX_UNFOUT; + input CTL_CAUI4_MODE; + input CTL_RSFEC_ENABLE_TRANSCODER_BYPASS_MODE; + input CTL_RSFEC_IEEE_ERROR_INDICATION_MODE; + input CTL_RX_CHECK_ETYPE_GCP; + input CTL_RX_CHECK_ETYPE_GPP; + input CTL_RX_CHECK_ETYPE_PCP; + input CTL_RX_CHECK_ETYPE_PPP; + input CTL_RX_CHECK_MCAST_GCP; + input CTL_RX_CHECK_MCAST_GPP; + input CTL_RX_CHECK_MCAST_PCP; + input CTL_RX_CHECK_MCAST_PPP; + input CTL_RX_CHECK_OPCODE_GCP; + input CTL_RX_CHECK_OPCODE_GPP; + input CTL_RX_CHECK_OPCODE_PCP; + input CTL_RX_CHECK_OPCODE_PPP; + input CTL_RX_CHECK_SA_GCP; + input CTL_RX_CHECK_SA_GPP; + input CTL_RX_CHECK_SA_PCP; + input CTL_RX_CHECK_SA_PPP; + input CTL_RX_CHECK_UCAST_GCP; + input CTL_RX_CHECK_UCAST_GPP; + input CTL_RX_CHECK_UCAST_PCP; + input CTL_RX_CHECK_UCAST_PPP; + input CTL_RX_ENABLE; + input CTL_RX_ENABLE_GCP; + input CTL_RX_ENABLE_GPP; + input CTL_RX_ENABLE_PCP; + input CTL_RX_ENABLE_PPP; + input CTL_RX_FORCE_RESYNC; + input [8:0] CTL_RX_PAUSE_ACK; + input [8:0] CTL_RX_PAUSE_ENABLE; + input CTL_RX_RSFEC_ENABLE; + input CTL_RX_RSFEC_ENABLE_CORRECTION; + input CTL_RX_RSFEC_ENABLE_INDICATION; + input [79:0] CTL_RX_SYSTEMTIMERIN; + input CTL_RX_TEST_PATTERN; + input CTL_TX_ENABLE; + input CTL_TX_LANE0_VLM_BIP7_OVERRIDE; + input [7:0] CTL_TX_LANE0_VLM_BIP7_OVERRIDE_VALUE; + input [8:0] CTL_TX_PAUSE_ENABLE; + input [15:0] CTL_TX_PAUSE_QUANTA0; + input [15:0] CTL_TX_PAUSE_QUANTA1; + input [15:0] CTL_TX_PAUSE_QUANTA2; + input [15:0] CTL_TX_PAUSE_QUANTA3; + input [15:0] CTL_TX_PAUSE_QUANTA4; + input [15:0] CTL_TX_PAUSE_QUANTA5; + input [15:0] CTL_TX_PAUSE_QUANTA6; + input [15:0] CTL_TX_PAUSE_QUANTA7; + input [15:0] CTL_TX_PAUSE_QUANTA8; + input [15:0] CTL_TX_PAUSE_REFRESH_TIMER0; + input [15:0] CTL_TX_PAUSE_REFRESH_TIMER1; + input [15:0] CTL_TX_PAUSE_REFRESH_TIMER2; + input [15:0] CTL_TX_PAUSE_REFRESH_TIMER3; + input [15:0] CTL_TX_PAUSE_REFRESH_TIMER4; + input [15:0] CTL_TX_PAUSE_REFRESH_TIMER5; + input [15:0] CTL_TX_PAUSE_REFRESH_TIMER6; + input [15:0] CTL_TX_PAUSE_REFRESH_TIMER7; + input [15:0] CTL_TX_PAUSE_REFRESH_TIMER8; + input [8:0] CTL_TX_PAUSE_REQ; + input CTL_TX_PTP_VLANE_ADJUST_MODE; + input CTL_TX_RESEND_PAUSE; + input CTL_TX_RSFEC_ENABLE; + input CTL_TX_SEND_IDLE; + input CTL_TX_SEND_LFI; + input CTL_TX_SEND_RFI; + input [79:0] CTL_TX_SYSTEMTIMERIN; + input CTL_TX_TEST_PATTERN; + input [9:0] DRP_ADDR; + input DRP_CLK; + input [15:0] DRP_DI; + input DRP_EN; + input DRP_WE; + input [329:0] RSFEC_BYPASS_RX_DIN; + input RSFEC_BYPASS_RX_DIN_CW_START; + input [329:0] RSFEC_BYPASS_TX_DIN; + input RSFEC_BYPASS_TX_DIN_CW_START; + input RX_CLK; + input RX_RESET; + input [15:0] RX_SERDES_ALT_DATA0; + input [15:0] RX_SERDES_ALT_DATA1; + input [15:0] RX_SERDES_ALT_DATA2; + input [15:0] RX_SERDES_ALT_DATA3; + input [9:0] RX_SERDES_CLK; + input [63:0] RX_SERDES_DATA0; + input [63:0] RX_SERDES_DATA1; + input [63:0] RX_SERDES_DATA2; + input [63:0] RX_SERDES_DATA3; + input [31:0] RX_SERDES_DATA4; + input [31:0] RX_SERDES_DATA5; + input [31:0] RX_SERDES_DATA6; + input [31:0] RX_SERDES_DATA7; + input [31:0] RX_SERDES_DATA8; + input [31:0] RX_SERDES_DATA9; + input [9:0] RX_SERDES_RESET; + input TX_CLK; + input [127:0] TX_DATAIN0; + input [127:0] TX_DATAIN1; + input [127:0] TX_DATAIN2; + input [127:0] TX_DATAIN3; + input TX_ENAIN0; + input TX_ENAIN1; + input TX_ENAIN2; + input TX_ENAIN3; + input TX_EOPIN0; + input TX_EOPIN1; + input TX_EOPIN2; + input TX_EOPIN3; + input TX_ERRIN0; + input TX_ERRIN1; + input TX_ERRIN2; + input TX_ERRIN3; + input [3:0] TX_MTYIN0; + input [3:0] TX_MTYIN1; + input [3:0] TX_MTYIN2; + input [3:0] TX_MTYIN3; + input [55:0] TX_PREIN; + input [1:0] TX_PTP_1588OP_IN; + input [15:0] TX_PTP_CHKSUM_OFFSET_IN; + input [63:0] TX_PTP_RXTSTAMP_IN; + input [15:0] TX_PTP_TAG_FIELD_IN; + input [15:0] TX_PTP_TSTAMP_OFFSET_IN; + input TX_PTP_UPD_CHKSUM_IN; + input TX_RESET; + input TX_SOPIN0; + input TX_SOPIN1; + input TX_SOPIN2; + input TX_SOPIN3; +endmodule + +module MCB (...); + parameter integer ARB_NUM_TIME_SLOTS = 12; + parameter [17:0] ARB_TIME_SLOT_0 = 18'b111111111111111111; + parameter [17:0] ARB_TIME_SLOT_1 = 18'b111111111111111111; + parameter [17:0] ARB_TIME_SLOT_10 = 18'b111111111111111111; + parameter [17:0] ARB_TIME_SLOT_11 = 18'b111111111111111111; + parameter [17:0] ARB_TIME_SLOT_2 = 18'b111111111111111111; + parameter [17:0] ARB_TIME_SLOT_3 = 18'b111111111111111111; + parameter [17:0] ARB_TIME_SLOT_4 = 18'b111111111111111111; + parameter [17:0] ARB_TIME_SLOT_5 = 18'b111111111111111111; + parameter [17:0] ARB_TIME_SLOT_6 = 18'b111111111111111111; + parameter [17:0] ARB_TIME_SLOT_7 = 18'b111111111111111111; + parameter [17:0] ARB_TIME_SLOT_8 = 18'b111111111111111111; + parameter [17:0] ARB_TIME_SLOT_9 = 18'b111111111111111111; + parameter [2:0] CAL_BA = 3'h0; + parameter CAL_BYPASS = "YES"; + parameter [11:0] CAL_CA = 12'h000; + parameter CAL_CALIBRATION_MODE = "NOCALIBRATION"; + parameter integer CAL_CLK_DIV = 1; + parameter CAL_DELAY = "QUARTER"; + parameter [14:0] CAL_RA = 15'h0000; + parameter MEM_ADDR_ORDER = "BANK_ROW_COLUMN"; + parameter integer MEM_BA_SIZE = 3; + parameter integer MEM_BURST_LEN = 8; + parameter integer MEM_CAS_LATENCY = 4; + parameter integer MEM_CA_SIZE = 11; + parameter MEM_DDR1_2_ODS = "FULL"; + parameter MEM_DDR2_3_HIGH_TEMP_SR = "NORMAL"; + parameter MEM_DDR2_3_PA_SR = "FULL"; + parameter integer MEM_DDR2_ADD_LATENCY = 0; + parameter MEM_DDR2_DIFF_DQS_EN = "YES"; + parameter MEM_DDR2_RTT = "50OHMS"; + parameter integer MEM_DDR2_WRT_RECOVERY = 4; + parameter MEM_DDR3_ADD_LATENCY = "OFF"; + parameter MEM_DDR3_AUTO_SR = "ENABLED"; + parameter integer MEM_DDR3_CAS_LATENCY = 7; + parameter integer MEM_DDR3_CAS_WR_LATENCY = 5; + parameter MEM_DDR3_DYN_WRT_ODT = "OFF"; + parameter MEM_DDR3_ODS = "DIV7"; + parameter MEM_DDR3_RTT = "DIV2"; + parameter integer MEM_DDR3_WRT_RECOVERY = 7; + parameter MEM_MDDR_ODS = "FULL"; + parameter MEM_MOBILE_PA_SR = "FULL"; + parameter integer MEM_MOBILE_TC_SR = 0; + parameter integer MEM_RAS_VAL = 0; + parameter integer MEM_RA_SIZE = 13; + parameter integer MEM_RCD_VAL = 1; + parameter integer MEM_REFI_VAL = 0; + parameter integer MEM_RFC_VAL = 0; + parameter integer MEM_RP_VAL = 0; + parameter integer MEM_RTP_VAL = 0; + parameter MEM_TYPE = "DDR3"; + parameter integer MEM_WIDTH = 4; + parameter integer MEM_WR_VAL = 0; + parameter integer MEM_WTR_VAL = 3; + parameter PORT_CONFIG = "B32_B32_B32_B32"; + output CAS; + output CKE; + output DQIOWEN0; + output DQSIOWEN90N; + output DQSIOWEN90P; + output IOIDRPADD; + output IOIDRPBROADCAST; + output IOIDRPCLK; + output IOIDRPCS; + output IOIDRPSDO; + output IOIDRPTRAIN; + output IOIDRPUPDATE; + output LDMN; + output LDMP; + output ODT; + output P0CMDEMPTY; + output P0CMDFULL; + output P0RDEMPTY; + output P0RDERROR; + output P0RDFULL; + output P0RDOVERFLOW; + output P0WREMPTY; + output P0WRERROR; + output P0WRFULL; + output P0WRUNDERRUN; + output P1CMDEMPTY; + output P1CMDFULL; + output P1RDEMPTY; + output P1RDERROR; + output P1RDFULL; + output P1RDOVERFLOW; + output P1WREMPTY; + output P1WRERROR; + output P1WRFULL; + output P1WRUNDERRUN; + output P2CMDEMPTY; + output P2CMDFULL; + output P2EMPTY; + output P2ERROR; + output P2FULL; + output P2RDOVERFLOW; + output P2WRUNDERRUN; + output P3CMDEMPTY; + output P3CMDFULL; + output P3EMPTY; + output P3ERROR; + output P3FULL; + output P3RDOVERFLOW; + output P3WRUNDERRUN; + output P4CMDEMPTY; + output P4CMDFULL; + output P4EMPTY; + output P4ERROR; + output P4FULL; + output P4RDOVERFLOW; + output P4WRUNDERRUN; + output P5CMDEMPTY; + output P5CMDFULL; + output P5EMPTY; + output P5ERROR; + output P5FULL; + output P5RDOVERFLOW; + output P5WRUNDERRUN; + output RAS; + output RST; + output SELFREFRESHMODE; + output UDMN; + output UDMP; + output UOCALSTART; + output UOCMDREADYIN; + output UODATAVALID; + output UODONECAL; + output UOREFRSHFLAG; + output UOSDO; + output WE; + output [14:0] ADDR; + output [15:0] DQON; + output [15:0] DQOP; + output [2:0] BA; + output [31:0] P0RDDATA; + output [31:0] P1RDDATA; + output [31:0] P2RDDATA; + output [31:0] P3RDDATA; + output [31:0] P4RDDATA; + output [31:0] P5RDDATA; + output [31:0] STATUS; + output [4:0] IOIDRPADDR; + output [6:0] P0RDCOUNT; + output [6:0] P0WRCOUNT; + output [6:0] P1RDCOUNT; + output [6:0] P1WRCOUNT; + output [6:0] P2COUNT; + output [6:0] P3COUNT; + output [6:0] P4COUNT; + output [6:0] P5COUNT; + output [7:0] UODATA; + input DQSIOIN; + input DQSIOIP; + input IOIDRPSDI; + input P0ARBEN; + input P0CMDCLK; + input P0CMDEN; + input P0RDCLK; + input P0RDEN; + input P0WRCLK; + input P0WREN; + input P1ARBEN; + input P1CMDCLK; + input P1CMDEN; + input P1RDCLK; + input P1RDEN; + input P1WRCLK; + input P1WREN; + input P2ARBEN; + input P2CLK; + input P2CMDCLK; + input P2CMDEN; + input P2EN; + input P3ARBEN; + input P3CLK; + input P3CMDCLK; + input P3CMDEN; + input P3EN; + input P4ARBEN; + input P4CLK; + input P4CMDCLK; + input P4CMDEN; + input P4EN; + input P5ARBEN; + input P5CLK; + input P5CMDCLK; + input P5CMDEN; + input P5EN; + input PLLLOCK; + input RECAL; + input SELFREFRESHENTER; + input SYSRST; + input UDQSIOIN; + input UDQSIOIP; + input UIADD; + input UIBROADCAST; + input UICLK; + input UICMD; + input UICMDEN; + input UICMDIN; + input UICS; + input UIDONECAL; + input UIDQLOWERDEC; + input UIDQLOWERINC; + input UIDQUPPERDEC; + input UIDQUPPERINC; + input UIDRPUPDATE; + input UILDQSDEC; + input UILDQSINC; + input UIREAD; + input UISDI; + input UIUDQSDEC; + input UIUDQSINC; + input [11:0] P0CMDCA; + input [11:0] P1CMDCA; + input [11:0] P2CMDCA; + input [11:0] P3CMDCA; + input [11:0] P4CMDCA; + input [11:0] P5CMDCA; + input [14:0] P0CMDRA; + input [14:0] P1CMDRA; + input [14:0] P2CMDRA; + input [14:0] P3CMDRA; + input [14:0] P4CMDRA; + input [14:0] P5CMDRA; + input [15:0] DQI; + input [1:0] PLLCE; + input [1:0] PLLCLK; + input [2:0] P0CMDBA; + input [2:0] P0CMDINSTR; + input [2:0] P1CMDBA; + input [2:0] P1CMDINSTR; + input [2:0] P2CMDBA; + input [2:0] P2CMDINSTR; + input [2:0] P3CMDBA; + input [2:0] P3CMDINSTR; + input [2:0] P4CMDBA; + input [2:0] P4CMDINSTR; + input [2:0] P5CMDBA; + input [2:0] P5CMDINSTR; + input [31:0] P0WRDATA; + input [31:0] P1WRDATA; + input [31:0] P2WRDATA; + input [31:0] P3WRDATA; + input [31:0] P4WRDATA; + input [31:0] P5WRDATA; + input [3:0] P0RWRMASK; + input [3:0] P1RWRMASK; + input [3:0] P2WRMASK; + input [3:0] P3WRMASK; + input [3:0] P4WRMASK; + input [3:0] P5WRMASK; + input [3:0] UIDQCOUNT; + input [4:0] UIADDR; + input [5:0] P0CMDBL; + input [5:0] P1CMDBL; + input [5:0] P2CMDBL; + input [5:0] P3CMDBL; + input [5:0] P4CMDBL; + input [5:0] P5CMDBL; +endmodule + +(* keep *) +module HBM_REF_CLK (...); + input REF_CLK; +endmodule + +(* keep *) +module HBM_SNGLBLI_INTF_APB (...); + parameter CLK_SEL = "FALSE"; + parameter [0:0] IS_PCLK_INVERTED = 1'b0; + parameter [0:0] IS_PRESET_N_INVERTED = 1'b0; + parameter MC_ENABLE = "FALSE"; + parameter PHY_ENABLE = "FALSE"; + parameter PHY_PCLK_INVERT = "FALSE"; + parameter SWITCH_ENABLE = "FALSE"; + output CATTRIP_PIPE; + output [31:0] PRDATA_PIPE; + output PREADY_PIPE; + output PSLVERR_PIPE; + output [2:0] TEMP_PIPE; + input [21:0] PADDR; + (* invertible_pin = "IS_PCLK_INVERTED" *) + input PCLK; + input PENABLE; + (* invertible_pin = "IS_PRESET_N_INVERTED" *) + input PRESET_N; + input PSEL; + input [31:0] PWDATA; + input PWRITE; +endmodule + +(* keep *) +module HBM_SNGLBLI_INTF_AXI (...); + parameter CLK_SEL = "FALSE"; + parameter integer DATARATE = 1800; + parameter [0:0] IS_ACLK_INVERTED = 1'b0; + parameter [0:0] IS_ARESET_N_INVERTED = 1'b0; + parameter MC_ENABLE = "FALSE"; + parameter integer PAGEHIT_PERCENT = 75; + parameter PHY_ENABLE = "FALSE"; + parameter integer READ_PERCENT = 50; + parameter SWITCH_ENABLE = "FALSE"; + parameter integer WRITE_PERCENT = 50; + output ARREADY_PIPE; + output AWREADY_PIPE; + output [5:0] BID_PIPE; + output [1:0] BRESP_PIPE; + output BVALID_PIPE; + output [1:0] DFI_AW_AERR_N_PIPE; + output DFI_CLK_BUF; + output DFI_CTRLUPD_ACK_PIPE; + output [7:0] DFI_DBI_BYTE_DISABLE_PIPE; + output [20:0] DFI_DW_RDDATA_DBI_PIPE; + output [7:0] DFI_DW_RDDATA_DERR_PIPE; + output [1:0] DFI_DW_RDDATA_PAR_VALID_PIPE; + output [1:0] DFI_DW_RDDATA_VALID_PIPE; + output DFI_INIT_COMPLETE_PIPE; + output DFI_PHYUPD_REQ_PIPE; + output DFI_PHYUPD_TYPE_PIPE; + output DFI_PHY_LP_STATE_PIPE; + output DFI_RST_N_BUF; + output [5:0] MC_STATUS; + output [7:0] PHY_STATUS; + output [31:0] RDATA_PARITY_PIPE; + output [255:0] RDATA_PIPE; + output [5:0] RID_PIPE; + output RLAST_PIPE; + output [1:0] RRESP_PIPE; + output RVALID_PIPE; + output [5:0] STATUS; + output WREADY_PIPE; + (* invertible_pin = "IS_ACLK_INVERTED" *) + input ACLK; + input [36:0] ARADDR; + input [1:0] ARBURST; + (* invertible_pin = "IS_ARESET_N_INVERTED" *) + input ARESET_N; + input [5:0] ARID; + input [3:0] ARLEN; + input [2:0] ARSIZE; + input ARVALID; + input [36:0] AWADDR; + input [1:0] AWBURST; + input [5:0] AWID; + input [3:0] AWLEN; + input [2:0] AWSIZE; + input AWVALID; + input BREADY; + input BSCAN_CK; + input DFI_LP_PWR_X_REQ; + input MBIST_EN; + input RREADY; + input [255:0] WDATA; + input [31:0] WDATA_PARITY; + input WLAST; + input [31:0] WSTRB; + input WVALID; +endmodule + +(* keep *) +module HBM_ONE_STACK_INTF (...); + parameter CLK_SEL_00 = "FALSE"; + parameter CLK_SEL_01 = "FALSE"; + parameter CLK_SEL_02 = "FALSE"; + parameter CLK_SEL_03 = "FALSE"; + parameter CLK_SEL_04 = "FALSE"; + parameter CLK_SEL_05 = "FALSE"; + parameter CLK_SEL_06 = "FALSE"; + parameter CLK_SEL_07 = "FALSE"; + parameter CLK_SEL_08 = "FALSE"; + parameter CLK_SEL_09 = "FALSE"; + parameter CLK_SEL_10 = "FALSE"; + parameter CLK_SEL_11 = "FALSE"; + parameter CLK_SEL_12 = "FALSE"; + parameter CLK_SEL_13 = "FALSE"; + parameter CLK_SEL_14 = "FALSE"; + parameter CLK_SEL_15 = "FALSE"; + parameter integer DATARATE_00 = 1800; + parameter integer DATARATE_01 = 1800; + parameter integer DATARATE_02 = 1800; + parameter integer DATARATE_03 = 1800; + parameter integer DATARATE_04 = 1800; + parameter integer DATARATE_05 = 1800; + parameter integer DATARATE_06 = 1800; + parameter integer DATARATE_07 = 1800; + parameter DA_LOCKOUT = "FALSE"; + parameter [0:0] IS_APB_0_PCLK_INVERTED = 1'b0; + parameter [0:0] IS_APB_0_PRESET_N_INVERTED = 1'b0; + parameter [0:0] IS_AXI_00_ACLK_INVERTED = 1'b0; + parameter [0:0] IS_AXI_00_ARESET_N_INVERTED = 1'b0; + parameter [0:0] IS_AXI_01_ACLK_INVERTED = 1'b0; + parameter [0:0] IS_AXI_01_ARESET_N_INVERTED = 1'b0; + parameter [0:0] IS_AXI_02_ACLK_INVERTED = 1'b0; + parameter [0:0] IS_AXI_02_ARESET_N_INVERTED = 1'b0; + parameter [0:0] IS_AXI_03_ACLK_INVERTED = 1'b0; + parameter [0:0] IS_AXI_03_ARESET_N_INVERTED = 1'b0; + parameter [0:0] IS_AXI_04_ACLK_INVERTED = 1'b0; + parameter [0:0] IS_AXI_04_ARESET_N_INVERTED = 1'b0; + parameter [0:0] IS_AXI_05_ACLK_INVERTED = 1'b0; + parameter [0:0] IS_AXI_05_ARESET_N_INVERTED = 1'b0; + parameter [0:0] IS_AXI_06_ACLK_INVERTED = 1'b0; + parameter [0:0] IS_AXI_06_ARESET_N_INVERTED = 1'b0; + parameter [0:0] IS_AXI_07_ACLK_INVERTED = 1'b0; + parameter [0:0] IS_AXI_07_ARESET_N_INVERTED = 1'b0; + parameter [0:0] IS_AXI_08_ACLK_INVERTED = 1'b0; + parameter [0:0] IS_AXI_08_ARESET_N_INVERTED = 1'b0; + parameter [0:0] IS_AXI_09_ACLK_INVERTED = 1'b0; + parameter [0:0] IS_AXI_09_ARESET_N_INVERTED = 1'b0; + parameter [0:0] IS_AXI_10_ACLK_INVERTED = 1'b0; + parameter [0:0] IS_AXI_10_ARESET_N_INVERTED = 1'b0; + parameter [0:0] IS_AXI_11_ACLK_INVERTED = 1'b0; + parameter [0:0] IS_AXI_11_ARESET_N_INVERTED = 1'b0; + parameter [0:0] IS_AXI_12_ACLK_INVERTED = 1'b0; + parameter [0:0] IS_AXI_12_ARESET_N_INVERTED = 1'b0; + parameter [0:0] IS_AXI_13_ACLK_INVERTED = 1'b0; + parameter [0:0] IS_AXI_13_ARESET_N_INVERTED = 1'b0; + parameter [0:0] IS_AXI_14_ACLK_INVERTED = 1'b0; + parameter [0:0] IS_AXI_14_ARESET_N_INVERTED = 1'b0; + parameter [0:0] IS_AXI_15_ACLK_INVERTED = 1'b0; + parameter [0:0] IS_AXI_15_ARESET_N_INVERTED = 1'b0; + parameter MC_ENABLE_0 = "FALSE"; + parameter MC_ENABLE_1 = "FALSE"; + parameter MC_ENABLE_2 = "FALSE"; + parameter MC_ENABLE_3 = "FALSE"; + parameter MC_ENABLE_4 = "FALSE"; + parameter MC_ENABLE_5 = "FALSE"; + parameter MC_ENABLE_6 = "FALSE"; + parameter MC_ENABLE_7 = "FALSE"; + parameter MC_ENABLE_APB = "FALSE"; + parameter integer PAGEHIT_PERCENT_00 = 75; + parameter PHY_ENABLE_00 = "FALSE"; + parameter PHY_ENABLE_01 = "FALSE"; + parameter PHY_ENABLE_02 = "FALSE"; + parameter PHY_ENABLE_03 = "FALSE"; + parameter PHY_ENABLE_04 = "FALSE"; + parameter PHY_ENABLE_05 = "FALSE"; + parameter PHY_ENABLE_06 = "FALSE"; + parameter PHY_ENABLE_07 = "FALSE"; + parameter PHY_ENABLE_08 = "FALSE"; + parameter PHY_ENABLE_09 = "FALSE"; + parameter PHY_ENABLE_10 = "FALSE"; + parameter PHY_ENABLE_11 = "FALSE"; + parameter PHY_ENABLE_12 = "FALSE"; + parameter PHY_ENABLE_13 = "FALSE"; + parameter PHY_ENABLE_14 = "FALSE"; + parameter PHY_ENABLE_15 = "FALSE"; + parameter PHY_ENABLE_APB = "FALSE"; + parameter PHY_PCLK_INVERT_01 = "FALSE"; + parameter integer READ_PERCENT_00 = 50; + parameter integer READ_PERCENT_01 = 50; + parameter integer READ_PERCENT_02 = 50; + parameter integer READ_PERCENT_03 = 50; + parameter integer READ_PERCENT_04 = 50; + parameter integer READ_PERCENT_05 = 50; + parameter integer READ_PERCENT_06 = 50; + parameter integer READ_PERCENT_07 = 50; + parameter integer READ_PERCENT_08 = 50; + parameter integer READ_PERCENT_09 = 50; + parameter integer READ_PERCENT_10 = 50; + parameter integer READ_PERCENT_11 = 50; + parameter integer READ_PERCENT_12 = 50; + parameter integer READ_PERCENT_13 = 50; + parameter integer READ_PERCENT_14 = 50; + parameter integer READ_PERCENT_15 = 50; + parameter SIM_DEVICE = "ULTRASCALE_PLUS"; + parameter integer STACK_LOCATION = 0; + parameter SWITCH_ENABLE = "FALSE"; + parameter integer WRITE_PERCENT_00 = 50; + parameter integer WRITE_PERCENT_01 = 50; + parameter integer WRITE_PERCENT_02 = 50; + parameter integer WRITE_PERCENT_03 = 50; + parameter integer WRITE_PERCENT_04 = 50; + parameter integer WRITE_PERCENT_05 = 50; + parameter integer WRITE_PERCENT_06 = 50; + parameter integer WRITE_PERCENT_07 = 50; + parameter integer WRITE_PERCENT_08 = 50; + parameter integer WRITE_PERCENT_09 = 50; + parameter integer WRITE_PERCENT_10 = 50; + parameter integer WRITE_PERCENT_11 = 50; + parameter integer WRITE_PERCENT_12 = 50; + parameter integer WRITE_PERCENT_13 = 50; + parameter integer WRITE_PERCENT_14 = 50; + parameter integer WRITE_PERCENT_15 = 50; + output [31:0] APB_0_PRDATA; + output APB_0_PREADY; + output APB_0_PSLVERR; + output AXI_00_ARREADY; + output AXI_00_AWREADY; + output [5:0] AXI_00_BID; + output [1:0] AXI_00_BRESP; + output AXI_00_BVALID; + output [1:0] AXI_00_DFI_AW_AERR_N; + output AXI_00_DFI_CLK_BUF; + output [7:0] AXI_00_DFI_DBI_BYTE_DISABLE; + output [20:0] AXI_00_DFI_DW_RDDATA_DBI; + output [7:0] AXI_00_DFI_DW_RDDATA_DERR; + output [1:0] AXI_00_DFI_DW_RDDATA_VALID; + output AXI_00_DFI_INIT_COMPLETE; + output AXI_00_DFI_PHYUPD_REQ; + output AXI_00_DFI_PHY_LP_STATE; + output AXI_00_DFI_RST_N_BUF; + output [5:0] AXI_00_MC_STATUS; + output [7:0] AXI_00_PHY_STATUS; + output [255:0] AXI_00_RDATA; + output [31:0] AXI_00_RDATA_PARITY; + output [5:0] AXI_00_RID; + output AXI_00_RLAST; + output [1:0] AXI_00_RRESP; + output AXI_00_RVALID; + output AXI_00_WREADY; + output AXI_01_ARREADY; + output AXI_01_AWREADY; + output [5:0] AXI_01_BID; + output [1:0] AXI_01_BRESP; + output AXI_01_BVALID; + output [1:0] AXI_01_DFI_AW_AERR_N; + output AXI_01_DFI_CLK_BUF; + output [7:0] AXI_01_DFI_DBI_BYTE_DISABLE; + output [20:0] AXI_01_DFI_DW_RDDATA_DBI; + output [7:0] AXI_01_DFI_DW_RDDATA_DERR; + output [1:0] AXI_01_DFI_DW_RDDATA_VALID; + output AXI_01_DFI_INIT_COMPLETE; + output AXI_01_DFI_PHYUPD_REQ; + output AXI_01_DFI_PHY_LP_STATE; + output AXI_01_DFI_RST_N_BUF; + output [255:0] AXI_01_RDATA; + output [31:0] AXI_01_RDATA_PARITY; + output [5:0] AXI_01_RID; + output AXI_01_RLAST; + output [1:0] AXI_01_RRESP; + output AXI_01_RVALID; + output AXI_01_WREADY; + output AXI_02_ARREADY; + output AXI_02_AWREADY; + output [5:0] AXI_02_BID; + output [1:0] AXI_02_BRESP; + output AXI_02_BVALID; + output [1:0] AXI_02_DFI_AW_AERR_N; + output AXI_02_DFI_CLK_BUF; + output [7:0] AXI_02_DFI_DBI_BYTE_DISABLE; + output [20:0] AXI_02_DFI_DW_RDDATA_DBI; + output [7:0] AXI_02_DFI_DW_RDDATA_DERR; + output [1:0] AXI_02_DFI_DW_RDDATA_VALID; + output AXI_02_DFI_INIT_COMPLETE; + output AXI_02_DFI_PHYUPD_REQ; + output AXI_02_DFI_PHY_LP_STATE; + output AXI_02_DFI_RST_N_BUF; + output [5:0] AXI_02_MC_STATUS; + output [7:0] AXI_02_PHY_STATUS; + output [255:0] AXI_02_RDATA; + output [31:0] AXI_02_RDATA_PARITY; + output [5:0] AXI_02_RID; + output AXI_02_RLAST; + output [1:0] AXI_02_RRESP; + output AXI_02_RVALID; + output AXI_02_WREADY; + output AXI_03_ARREADY; + output AXI_03_AWREADY; + output [5:0] AXI_03_BID; + output [1:0] AXI_03_BRESP; + output AXI_03_BVALID; + output [1:0] AXI_03_DFI_AW_AERR_N; + output AXI_03_DFI_CLK_BUF; + output [7:0] AXI_03_DFI_DBI_BYTE_DISABLE; + output [20:0] AXI_03_DFI_DW_RDDATA_DBI; + output [7:0] AXI_03_DFI_DW_RDDATA_DERR; + output [1:0] AXI_03_DFI_DW_RDDATA_VALID; + output AXI_03_DFI_INIT_COMPLETE; + output AXI_03_DFI_PHYUPD_REQ; + output AXI_03_DFI_PHY_LP_STATE; + output AXI_03_DFI_RST_N_BUF; + output [255:0] AXI_03_RDATA; + output [31:0] AXI_03_RDATA_PARITY; + output [5:0] AXI_03_RID; + output AXI_03_RLAST; + output [1:0] AXI_03_RRESP; + output AXI_03_RVALID; + output AXI_03_WREADY; + output AXI_04_ARREADY; + output AXI_04_AWREADY; + output [5:0] AXI_04_BID; + output [1:0] AXI_04_BRESP; + output AXI_04_BVALID; + output [1:0] AXI_04_DFI_AW_AERR_N; + output AXI_04_DFI_CLK_BUF; + output [7:0] AXI_04_DFI_DBI_BYTE_DISABLE; + output [20:0] AXI_04_DFI_DW_RDDATA_DBI; + output [7:0] AXI_04_DFI_DW_RDDATA_DERR; + output [1:0] AXI_04_DFI_DW_RDDATA_VALID; + output AXI_04_DFI_INIT_COMPLETE; + output AXI_04_DFI_PHYUPD_REQ; + output AXI_04_DFI_PHY_LP_STATE; + output AXI_04_DFI_RST_N_BUF; + output [5:0] AXI_04_MC_STATUS; + output [7:0] AXI_04_PHY_STATUS; + output [255:0] AXI_04_RDATA; + output [31:0] AXI_04_RDATA_PARITY; + output [5:0] AXI_04_RID; + output AXI_04_RLAST; + output [1:0] AXI_04_RRESP; + output AXI_04_RVALID; + output AXI_04_WREADY; + output AXI_05_ARREADY; + output AXI_05_AWREADY; + output [5:0] AXI_05_BID; + output [1:0] AXI_05_BRESP; + output AXI_05_BVALID; + output [1:0] AXI_05_DFI_AW_AERR_N; + output AXI_05_DFI_CLK_BUF; + output [7:0] AXI_05_DFI_DBI_BYTE_DISABLE; + output [20:0] AXI_05_DFI_DW_RDDATA_DBI; + output [7:0] AXI_05_DFI_DW_RDDATA_DERR; + output [1:0] AXI_05_DFI_DW_RDDATA_VALID; + output AXI_05_DFI_INIT_COMPLETE; + output AXI_05_DFI_PHYUPD_REQ; + output AXI_05_DFI_PHY_LP_STATE; + output AXI_05_DFI_RST_N_BUF; + output [255:0] AXI_05_RDATA; + output [31:0] AXI_05_RDATA_PARITY; + output [5:0] AXI_05_RID; + output AXI_05_RLAST; + output [1:0] AXI_05_RRESP; + output AXI_05_RVALID; + output AXI_05_WREADY; + output AXI_06_ARREADY; + output AXI_06_AWREADY; + output [5:0] AXI_06_BID; + output [1:0] AXI_06_BRESP; + output AXI_06_BVALID; + output [1:0] AXI_06_DFI_AW_AERR_N; + output AXI_06_DFI_CLK_BUF; + output [7:0] AXI_06_DFI_DBI_BYTE_DISABLE; + output [20:0] AXI_06_DFI_DW_RDDATA_DBI; + output [7:0] AXI_06_DFI_DW_RDDATA_DERR; + output [1:0] AXI_06_DFI_DW_RDDATA_VALID; + output AXI_06_DFI_INIT_COMPLETE; + output AXI_06_DFI_PHYUPD_REQ; + output AXI_06_DFI_PHY_LP_STATE; + output AXI_06_DFI_RST_N_BUF; + output [5:0] AXI_06_MC_STATUS; + output [7:0] AXI_06_PHY_STATUS; + output [255:0] AXI_06_RDATA; + output [31:0] AXI_06_RDATA_PARITY; + output [5:0] AXI_06_RID; + output AXI_06_RLAST; + output [1:0] AXI_06_RRESP; + output AXI_06_RVALID; + output AXI_06_WREADY; + output AXI_07_ARREADY; + output AXI_07_AWREADY; + output [5:0] AXI_07_BID; + output [1:0] AXI_07_BRESP; + output AXI_07_BVALID; + output [1:0] AXI_07_DFI_AW_AERR_N; + output AXI_07_DFI_CLK_BUF; + output [7:0] AXI_07_DFI_DBI_BYTE_DISABLE; + output [20:0] AXI_07_DFI_DW_RDDATA_DBI; + output [7:0] AXI_07_DFI_DW_RDDATA_DERR; + output [1:0] AXI_07_DFI_DW_RDDATA_VALID; + output AXI_07_DFI_INIT_COMPLETE; + output AXI_07_DFI_PHYUPD_REQ; + output AXI_07_DFI_PHY_LP_STATE; + output AXI_07_DFI_RST_N_BUF; + output [255:0] AXI_07_RDATA; + output [31:0] AXI_07_RDATA_PARITY; + output [5:0] AXI_07_RID; + output AXI_07_RLAST; + output [1:0] AXI_07_RRESP; + output AXI_07_RVALID; + output AXI_07_WREADY; + output AXI_08_ARREADY; + output AXI_08_AWREADY; + output [5:0] AXI_08_BID; + output [1:0] AXI_08_BRESP; + output AXI_08_BVALID; + output [1:0] AXI_08_DFI_AW_AERR_N; + output AXI_08_DFI_CLK_BUF; + output [7:0] AXI_08_DFI_DBI_BYTE_DISABLE; + output [20:0] AXI_08_DFI_DW_RDDATA_DBI; + output [7:0] AXI_08_DFI_DW_RDDATA_DERR; + output [1:0] AXI_08_DFI_DW_RDDATA_VALID; + output AXI_08_DFI_INIT_COMPLETE; + output AXI_08_DFI_PHYUPD_REQ; + output AXI_08_DFI_PHY_LP_STATE; + output AXI_08_DFI_RST_N_BUF; + output [5:0] AXI_08_MC_STATUS; + output [7:0] AXI_08_PHY_STATUS; + output [255:0] AXI_08_RDATA; + output [31:0] AXI_08_RDATA_PARITY; + output [5:0] AXI_08_RID; + output AXI_08_RLAST; + output [1:0] AXI_08_RRESP; + output AXI_08_RVALID; + output AXI_08_WREADY; + output AXI_09_ARREADY; + output AXI_09_AWREADY; + output [5:0] AXI_09_BID; + output [1:0] AXI_09_BRESP; + output AXI_09_BVALID; + output [1:0] AXI_09_DFI_AW_AERR_N; + output AXI_09_DFI_CLK_BUF; + output [7:0] AXI_09_DFI_DBI_BYTE_DISABLE; + output [20:0] AXI_09_DFI_DW_RDDATA_DBI; + output [7:0] AXI_09_DFI_DW_RDDATA_DERR; + output [1:0] AXI_09_DFI_DW_RDDATA_VALID; + output AXI_09_DFI_INIT_COMPLETE; + output AXI_09_DFI_PHYUPD_REQ; + output AXI_09_DFI_PHY_LP_STATE; + output AXI_09_DFI_RST_N_BUF; + output [255:0] AXI_09_RDATA; + output [31:0] AXI_09_RDATA_PARITY; + output [5:0] AXI_09_RID; + output AXI_09_RLAST; + output [1:0] AXI_09_RRESP; + output AXI_09_RVALID; + output AXI_09_WREADY; + output AXI_10_ARREADY; + output AXI_10_AWREADY; + output [5:0] AXI_10_BID; + output [1:0] AXI_10_BRESP; + output AXI_10_BVALID; + output [1:0] AXI_10_DFI_AW_AERR_N; + output AXI_10_DFI_CLK_BUF; + output [7:0] AXI_10_DFI_DBI_BYTE_DISABLE; + output [20:0] AXI_10_DFI_DW_RDDATA_DBI; + output [7:0] AXI_10_DFI_DW_RDDATA_DERR; + output [1:0] AXI_10_DFI_DW_RDDATA_VALID; + output AXI_10_DFI_INIT_COMPLETE; + output AXI_10_DFI_PHYUPD_REQ; + output AXI_10_DFI_PHY_LP_STATE; + output AXI_10_DFI_RST_N_BUF; + output [5:0] AXI_10_MC_STATUS; + output [7:0] AXI_10_PHY_STATUS; + output [255:0] AXI_10_RDATA; + output [31:0] AXI_10_RDATA_PARITY; + output [5:0] AXI_10_RID; + output AXI_10_RLAST; + output [1:0] AXI_10_RRESP; + output AXI_10_RVALID; + output AXI_10_WREADY; + output AXI_11_ARREADY; + output AXI_11_AWREADY; + output [5:0] AXI_11_BID; + output [1:0] AXI_11_BRESP; + output AXI_11_BVALID; + output [1:0] AXI_11_DFI_AW_AERR_N; + output AXI_11_DFI_CLK_BUF; + output [7:0] AXI_11_DFI_DBI_BYTE_DISABLE; + output [20:0] AXI_11_DFI_DW_RDDATA_DBI; + output [7:0] AXI_11_DFI_DW_RDDATA_DERR; + output [1:0] AXI_11_DFI_DW_RDDATA_VALID; + output AXI_11_DFI_INIT_COMPLETE; + output AXI_11_DFI_PHYUPD_REQ; + output AXI_11_DFI_PHY_LP_STATE; + output AXI_11_DFI_RST_N_BUF; + output [255:0] AXI_11_RDATA; + output [31:0] AXI_11_RDATA_PARITY; + output [5:0] AXI_11_RID; + output AXI_11_RLAST; + output [1:0] AXI_11_RRESP; + output AXI_11_RVALID; + output AXI_11_WREADY; + output AXI_12_ARREADY; + output AXI_12_AWREADY; + output [5:0] AXI_12_BID; + output [1:0] AXI_12_BRESP; + output AXI_12_BVALID; + output [1:0] AXI_12_DFI_AW_AERR_N; + output AXI_12_DFI_CLK_BUF; + output [7:0] AXI_12_DFI_DBI_BYTE_DISABLE; + output [20:0] AXI_12_DFI_DW_RDDATA_DBI; + output [7:0] AXI_12_DFI_DW_RDDATA_DERR; + output [1:0] AXI_12_DFI_DW_RDDATA_VALID; + output AXI_12_DFI_INIT_COMPLETE; + output AXI_12_DFI_PHYUPD_REQ; + output AXI_12_DFI_PHY_LP_STATE; + output AXI_12_DFI_RST_N_BUF; + output [5:0] AXI_12_MC_STATUS; + output [7:0] AXI_12_PHY_STATUS; + output [255:0] AXI_12_RDATA; + output [31:0] AXI_12_RDATA_PARITY; + output [5:0] AXI_12_RID; + output AXI_12_RLAST; + output [1:0] AXI_12_RRESP; + output AXI_12_RVALID; + output AXI_12_WREADY; + output AXI_13_ARREADY; + output AXI_13_AWREADY; + output [5:0] AXI_13_BID; + output [1:0] AXI_13_BRESP; + output AXI_13_BVALID; + output [1:0] AXI_13_DFI_AW_AERR_N; + output AXI_13_DFI_CLK_BUF; + output [7:0] AXI_13_DFI_DBI_BYTE_DISABLE; + output [20:0] AXI_13_DFI_DW_RDDATA_DBI; + output [7:0] AXI_13_DFI_DW_RDDATA_DERR; + output [1:0] AXI_13_DFI_DW_RDDATA_VALID; + output AXI_13_DFI_INIT_COMPLETE; + output AXI_13_DFI_PHYUPD_REQ; + output AXI_13_DFI_PHY_LP_STATE; + output AXI_13_DFI_RST_N_BUF; + output [255:0] AXI_13_RDATA; + output [31:0] AXI_13_RDATA_PARITY; + output [5:0] AXI_13_RID; + output AXI_13_RLAST; + output [1:0] AXI_13_RRESP; + output AXI_13_RVALID; + output AXI_13_WREADY; + output AXI_14_ARREADY; + output AXI_14_AWREADY; + output [5:0] AXI_14_BID; + output [1:0] AXI_14_BRESP; + output AXI_14_BVALID; + output [1:0] AXI_14_DFI_AW_AERR_N; + output AXI_14_DFI_CLK_BUF; + output [7:0] AXI_14_DFI_DBI_BYTE_DISABLE; + output [20:0] AXI_14_DFI_DW_RDDATA_DBI; + output [7:0] AXI_14_DFI_DW_RDDATA_DERR; + output [1:0] AXI_14_DFI_DW_RDDATA_VALID; + output AXI_14_DFI_INIT_COMPLETE; + output AXI_14_DFI_PHYUPD_REQ; + output AXI_14_DFI_PHY_LP_STATE; + output AXI_14_DFI_RST_N_BUF; + output [5:0] AXI_14_MC_STATUS; + output [7:0] AXI_14_PHY_STATUS; + output [255:0] AXI_14_RDATA; + output [31:0] AXI_14_RDATA_PARITY; + output [5:0] AXI_14_RID; + output AXI_14_RLAST; + output [1:0] AXI_14_RRESP; + output AXI_14_RVALID; + output AXI_14_WREADY; + output AXI_15_ARREADY; + output AXI_15_AWREADY; + output [5:0] AXI_15_BID; + output [1:0] AXI_15_BRESP; + output AXI_15_BVALID; + output [1:0] AXI_15_DFI_AW_AERR_N; + output AXI_15_DFI_CLK_BUF; + output [7:0] AXI_15_DFI_DBI_BYTE_DISABLE; + output [20:0] AXI_15_DFI_DW_RDDATA_DBI; + output [7:0] AXI_15_DFI_DW_RDDATA_DERR; + output [1:0] AXI_15_DFI_DW_RDDATA_VALID; + output AXI_15_DFI_INIT_COMPLETE; + output AXI_15_DFI_PHYUPD_REQ; + output AXI_15_DFI_PHY_LP_STATE; + output AXI_15_DFI_RST_N_BUF; + output [255:0] AXI_15_RDATA; + output [31:0] AXI_15_RDATA_PARITY; + output [5:0] AXI_15_RID; + output AXI_15_RLAST; + output [1:0] AXI_15_RRESP; + output AXI_15_RVALID; + output AXI_15_WREADY; + output DRAM_0_STAT_CATTRIP; + output [2:0] DRAM_0_STAT_TEMP; + input [21:0] APB_0_PADDR; + (* invertible_pin = "IS_APB_0_PCLK_INVERTED" *) + input APB_0_PCLK; + input APB_0_PENABLE; + (* invertible_pin = "IS_APB_0_PRESET_N_INVERTED" *) + input APB_0_PRESET_N; + input APB_0_PSEL; + input [31:0] APB_0_PWDATA; + input APB_0_PWRITE; + (* invertible_pin = "IS_AXI_00_ACLK_INVERTED" *) + input AXI_00_ACLK; + input [36:0] AXI_00_ARADDR; + input [1:0] AXI_00_ARBURST; + (* invertible_pin = "IS_AXI_00_ARESET_N_INVERTED" *) + input AXI_00_ARESET_N; + input [5:0] AXI_00_ARID; + input [3:0] AXI_00_ARLEN; + input [2:0] AXI_00_ARSIZE; + input AXI_00_ARVALID; + input [36:0] AXI_00_AWADDR; + input [1:0] AXI_00_AWBURST; + input [5:0] AXI_00_AWID; + input [3:0] AXI_00_AWLEN; + input [2:0] AXI_00_AWSIZE; + input AXI_00_AWVALID; + input AXI_00_BREADY; + input AXI_00_DFI_LP_PWR_X_REQ; + input AXI_00_RREADY; + input [255:0] AXI_00_WDATA; + input [31:0] AXI_00_WDATA_PARITY; + input AXI_00_WLAST; + input [31:0] AXI_00_WSTRB; + input AXI_00_WVALID; + (* invertible_pin = "IS_AXI_01_ACLK_INVERTED" *) + input AXI_01_ACLK; + input [36:0] AXI_01_ARADDR; + input [1:0] AXI_01_ARBURST; + (* invertible_pin = "IS_AXI_01_ARESET_N_INVERTED" *) + input AXI_01_ARESET_N; + input [5:0] AXI_01_ARID; + input [3:0] AXI_01_ARLEN; + input [2:0] AXI_01_ARSIZE; + input AXI_01_ARVALID; + input [36:0] AXI_01_AWADDR; + input [1:0] AXI_01_AWBURST; + input [5:0] AXI_01_AWID; + input [3:0] AXI_01_AWLEN; + input [2:0] AXI_01_AWSIZE; + input AXI_01_AWVALID; + input AXI_01_BREADY; + input AXI_01_DFI_LP_PWR_X_REQ; + input AXI_01_RREADY; + input [255:0] AXI_01_WDATA; + input [31:0] AXI_01_WDATA_PARITY; + input AXI_01_WLAST; + input [31:0] AXI_01_WSTRB; + input AXI_01_WVALID; + (* invertible_pin = "IS_AXI_02_ACLK_INVERTED" *) + input AXI_02_ACLK; + input [36:0] AXI_02_ARADDR; + input [1:0] AXI_02_ARBURST; + (* invertible_pin = "IS_AXI_02_ARESET_N_INVERTED" *) + input AXI_02_ARESET_N; + input [5:0] AXI_02_ARID; + input [3:0] AXI_02_ARLEN; + input [2:0] AXI_02_ARSIZE; + input AXI_02_ARVALID; + input [36:0] AXI_02_AWADDR; + input [1:0] AXI_02_AWBURST; + input [5:0] AXI_02_AWID; + input [3:0] AXI_02_AWLEN; + input [2:0] AXI_02_AWSIZE; + input AXI_02_AWVALID; + input AXI_02_BREADY; + input AXI_02_DFI_LP_PWR_X_REQ; + input AXI_02_RREADY; + input [255:0] AXI_02_WDATA; + input [31:0] AXI_02_WDATA_PARITY; + input AXI_02_WLAST; + input [31:0] AXI_02_WSTRB; + input AXI_02_WVALID; + (* invertible_pin = "IS_AXI_03_ACLK_INVERTED" *) + input AXI_03_ACLK; + input [36:0] AXI_03_ARADDR; + input [1:0] AXI_03_ARBURST; + (* invertible_pin = "IS_AXI_03_ARESET_N_INVERTED" *) + input AXI_03_ARESET_N; + input [5:0] AXI_03_ARID; + input [3:0] AXI_03_ARLEN; + input [2:0] AXI_03_ARSIZE; + input AXI_03_ARVALID; + input [36:0] AXI_03_AWADDR; + input [1:0] AXI_03_AWBURST; + input [5:0] AXI_03_AWID; + input [3:0] AXI_03_AWLEN; + input [2:0] AXI_03_AWSIZE; + input AXI_03_AWVALID; + input AXI_03_BREADY; + input AXI_03_DFI_LP_PWR_X_REQ; + input AXI_03_RREADY; + input [255:0] AXI_03_WDATA; + input [31:0] AXI_03_WDATA_PARITY; + input AXI_03_WLAST; + input [31:0] AXI_03_WSTRB; + input AXI_03_WVALID; + (* invertible_pin = "IS_AXI_04_ACLK_INVERTED" *) + input AXI_04_ACLK; + input [36:0] AXI_04_ARADDR; + input [1:0] AXI_04_ARBURST; + (* invertible_pin = "IS_AXI_04_ARESET_N_INVERTED" *) + input AXI_04_ARESET_N; + input [5:0] AXI_04_ARID; + input [3:0] AXI_04_ARLEN; + input [2:0] AXI_04_ARSIZE; + input AXI_04_ARVALID; + input [36:0] AXI_04_AWADDR; + input [1:0] AXI_04_AWBURST; + input [5:0] AXI_04_AWID; + input [3:0] AXI_04_AWLEN; + input [2:0] AXI_04_AWSIZE; + input AXI_04_AWVALID; + input AXI_04_BREADY; + input AXI_04_DFI_LP_PWR_X_REQ; + input AXI_04_RREADY; + input [255:0] AXI_04_WDATA; + input [31:0] AXI_04_WDATA_PARITY; + input AXI_04_WLAST; + input [31:0] AXI_04_WSTRB; + input AXI_04_WVALID; + (* invertible_pin = "IS_AXI_05_ACLK_INVERTED" *) + input AXI_05_ACLK; + input [36:0] AXI_05_ARADDR; + input [1:0] AXI_05_ARBURST; + (* invertible_pin = "IS_AXI_05_ARESET_N_INVERTED" *) + input AXI_05_ARESET_N; + input [5:0] AXI_05_ARID; + input [3:0] AXI_05_ARLEN; + input [2:0] AXI_05_ARSIZE; + input AXI_05_ARVALID; + input [36:0] AXI_05_AWADDR; + input [1:0] AXI_05_AWBURST; + input [5:0] AXI_05_AWID; + input [3:0] AXI_05_AWLEN; + input [2:0] AXI_05_AWSIZE; + input AXI_05_AWVALID; + input AXI_05_BREADY; + input AXI_05_DFI_LP_PWR_X_REQ; + input AXI_05_RREADY; + input [255:0] AXI_05_WDATA; + input [31:0] AXI_05_WDATA_PARITY; + input AXI_05_WLAST; + input [31:0] AXI_05_WSTRB; + input AXI_05_WVALID; + (* invertible_pin = "IS_AXI_06_ACLK_INVERTED" *) + input AXI_06_ACLK; + input [36:0] AXI_06_ARADDR; + input [1:0] AXI_06_ARBURST; + (* invertible_pin = "IS_AXI_06_ARESET_N_INVERTED" *) + input AXI_06_ARESET_N; + input [5:0] AXI_06_ARID; + input [3:0] AXI_06_ARLEN; + input [2:0] AXI_06_ARSIZE; + input AXI_06_ARVALID; + input [36:0] AXI_06_AWADDR; + input [1:0] AXI_06_AWBURST; + input [5:0] AXI_06_AWID; + input [3:0] AXI_06_AWLEN; + input [2:0] AXI_06_AWSIZE; + input AXI_06_AWVALID; + input AXI_06_BREADY; + input AXI_06_DFI_LP_PWR_X_REQ; + input AXI_06_RREADY; + input [255:0] AXI_06_WDATA; + input [31:0] AXI_06_WDATA_PARITY; + input AXI_06_WLAST; + input [31:0] AXI_06_WSTRB; + input AXI_06_WVALID; + (* invertible_pin = "IS_AXI_07_ACLK_INVERTED" *) + input AXI_07_ACLK; + input [36:0] AXI_07_ARADDR; + input [1:0] AXI_07_ARBURST; + (* invertible_pin = "IS_AXI_07_ARESET_N_INVERTED" *) + input AXI_07_ARESET_N; + input [5:0] AXI_07_ARID; + input [3:0] AXI_07_ARLEN; + input [2:0] AXI_07_ARSIZE; + input AXI_07_ARVALID; + input [36:0] AXI_07_AWADDR; + input [1:0] AXI_07_AWBURST; + input [5:0] AXI_07_AWID; + input [3:0] AXI_07_AWLEN; + input [2:0] AXI_07_AWSIZE; + input AXI_07_AWVALID; + input AXI_07_BREADY; + input AXI_07_DFI_LP_PWR_X_REQ; + input AXI_07_RREADY; + input [255:0] AXI_07_WDATA; + input [31:0] AXI_07_WDATA_PARITY; + input AXI_07_WLAST; + input [31:0] AXI_07_WSTRB; + input AXI_07_WVALID; + (* invertible_pin = "IS_AXI_08_ACLK_INVERTED" *) + input AXI_08_ACLK; + input [36:0] AXI_08_ARADDR; + input [1:0] AXI_08_ARBURST; + (* invertible_pin = "IS_AXI_08_ARESET_N_INVERTED" *) + input AXI_08_ARESET_N; + input [5:0] AXI_08_ARID; + input [3:0] AXI_08_ARLEN; + input [2:0] AXI_08_ARSIZE; + input AXI_08_ARVALID; + input [36:0] AXI_08_AWADDR; + input [1:0] AXI_08_AWBURST; + input [5:0] AXI_08_AWID; + input [3:0] AXI_08_AWLEN; + input [2:0] AXI_08_AWSIZE; + input AXI_08_AWVALID; + input AXI_08_BREADY; + input AXI_08_DFI_LP_PWR_X_REQ; + input AXI_08_RREADY; + input [255:0] AXI_08_WDATA; + input [31:0] AXI_08_WDATA_PARITY; + input AXI_08_WLAST; + input [31:0] AXI_08_WSTRB; + input AXI_08_WVALID; + (* invertible_pin = "IS_AXI_09_ACLK_INVERTED" *) + input AXI_09_ACLK; + input [36:0] AXI_09_ARADDR; + input [1:0] AXI_09_ARBURST; + (* invertible_pin = "IS_AXI_09_ARESET_N_INVERTED" *) + input AXI_09_ARESET_N; + input [5:0] AXI_09_ARID; + input [3:0] AXI_09_ARLEN; + input [2:0] AXI_09_ARSIZE; + input AXI_09_ARVALID; + input [36:0] AXI_09_AWADDR; + input [1:0] AXI_09_AWBURST; + input [5:0] AXI_09_AWID; + input [3:0] AXI_09_AWLEN; + input [2:0] AXI_09_AWSIZE; + input AXI_09_AWVALID; + input AXI_09_BREADY; + input AXI_09_DFI_LP_PWR_X_REQ; + input AXI_09_RREADY; + input [255:0] AXI_09_WDATA; + input [31:0] AXI_09_WDATA_PARITY; + input AXI_09_WLAST; + input [31:0] AXI_09_WSTRB; + input AXI_09_WVALID; + (* invertible_pin = "IS_AXI_10_ACLK_INVERTED" *) + input AXI_10_ACLK; + input [36:0] AXI_10_ARADDR; + input [1:0] AXI_10_ARBURST; + (* invertible_pin = "IS_AXI_10_ARESET_N_INVERTED" *) + input AXI_10_ARESET_N; + input [5:0] AXI_10_ARID; + input [3:0] AXI_10_ARLEN; + input [2:0] AXI_10_ARSIZE; + input AXI_10_ARVALID; + input [36:0] AXI_10_AWADDR; + input [1:0] AXI_10_AWBURST; + input [5:0] AXI_10_AWID; + input [3:0] AXI_10_AWLEN; + input [2:0] AXI_10_AWSIZE; + input AXI_10_AWVALID; + input AXI_10_BREADY; + input AXI_10_DFI_LP_PWR_X_REQ; + input AXI_10_RREADY; + input [255:0] AXI_10_WDATA; + input [31:0] AXI_10_WDATA_PARITY; + input AXI_10_WLAST; + input [31:0] AXI_10_WSTRB; + input AXI_10_WVALID; + (* invertible_pin = "IS_AXI_11_ACLK_INVERTED" *) + input AXI_11_ACLK; + input [36:0] AXI_11_ARADDR; + input [1:0] AXI_11_ARBURST; + (* invertible_pin = "IS_AXI_11_ARESET_N_INVERTED" *) + input AXI_11_ARESET_N; + input [5:0] AXI_11_ARID; + input [3:0] AXI_11_ARLEN; + input [2:0] AXI_11_ARSIZE; + input AXI_11_ARVALID; + input [36:0] AXI_11_AWADDR; + input [1:0] AXI_11_AWBURST; + input [5:0] AXI_11_AWID; + input [3:0] AXI_11_AWLEN; + input [2:0] AXI_11_AWSIZE; + input AXI_11_AWVALID; + input AXI_11_BREADY; + input AXI_11_DFI_LP_PWR_X_REQ; + input AXI_11_RREADY; + input [255:0] AXI_11_WDATA; + input [31:0] AXI_11_WDATA_PARITY; + input AXI_11_WLAST; + input [31:0] AXI_11_WSTRB; + input AXI_11_WVALID; + (* invertible_pin = "IS_AXI_12_ACLK_INVERTED" *) + input AXI_12_ACLK; + input [36:0] AXI_12_ARADDR; + input [1:0] AXI_12_ARBURST; + (* invertible_pin = "IS_AXI_12_ARESET_N_INVERTED" *) + input AXI_12_ARESET_N; + input [5:0] AXI_12_ARID; + input [3:0] AXI_12_ARLEN; + input [2:0] AXI_12_ARSIZE; + input AXI_12_ARVALID; + input [36:0] AXI_12_AWADDR; + input [1:0] AXI_12_AWBURST; + input [5:0] AXI_12_AWID; + input [3:0] AXI_12_AWLEN; + input [2:0] AXI_12_AWSIZE; + input AXI_12_AWVALID; + input AXI_12_BREADY; + input AXI_12_DFI_LP_PWR_X_REQ; + input AXI_12_RREADY; + input [255:0] AXI_12_WDATA; + input [31:0] AXI_12_WDATA_PARITY; + input AXI_12_WLAST; + input [31:0] AXI_12_WSTRB; + input AXI_12_WVALID; + (* invertible_pin = "IS_AXI_13_ACLK_INVERTED" *) + input AXI_13_ACLK; + input [36:0] AXI_13_ARADDR; + input [1:0] AXI_13_ARBURST; + (* invertible_pin = "IS_AXI_13_ARESET_N_INVERTED" *) + input AXI_13_ARESET_N; + input [5:0] AXI_13_ARID; + input [3:0] AXI_13_ARLEN; + input [2:0] AXI_13_ARSIZE; + input AXI_13_ARVALID; + input [36:0] AXI_13_AWADDR; + input [1:0] AXI_13_AWBURST; + input [5:0] AXI_13_AWID; + input [3:0] AXI_13_AWLEN; + input [2:0] AXI_13_AWSIZE; + input AXI_13_AWVALID; + input AXI_13_BREADY; + input AXI_13_DFI_LP_PWR_X_REQ; + input AXI_13_RREADY; + input [255:0] AXI_13_WDATA; + input [31:0] AXI_13_WDATA_PARITY; + input AXI_13_WLAST; + input [31:0] AXI_13_WSTRB; + input AXI_13_WVALID; + (* invertible_pin = "IS_AXI_14_ACLK_INVERTED" *) + input AXI_14_ACLK; + input [36:0] AXI_14_ARADDR; + input [1:0] AXI_14_ARBURST; + (* invertible_pin = "IS_AXI_14_ARESET_N_INVERTED" *) + input AXI_14_ARESET_N; + input [5:0] AXI_14_ARID; + input [3:0] AXI_14_ARLEN; + input [2:0] AXI_14_ARSIZE; + input AXI_14_ARVALID; + input [36:0] AXI_14_AWADDR; + input [1:0] AXI_14_AWBURST; + input [5:0] AXI_14_AWID; + input [3:0] AXI_14_AWLEN; + input [2:0] AXI_14_AWSIZE; + input AXI_14_AWVALID; + input AXI_14_BREADY; + input AXI_14_DFI_LP_PWR_X_REQ; + input AXI_14_RREADY; + input [255:0] AXI_14_WDATA; + input [31:0] AXI_14_WDATA_PARITY; + input AXI_14_WLAST; + input [31:0] AXI_14_WSTRB; + input AXI_14_WVALID; + (* invertible_pin = "IS_AXI_15_ACLK_INVERTED" *) + input AXI_15_ACLK; + input [36:0] AXI_15_ARADDR; + input [1:0] AXI_15_ARBURST; + (* invertible_pin = "IS_AXI_15_ARESET_N_INVERTED" *) + input AXI_15_ARESET_N; + input [5:0] AXI_15_ARID; + input [3:0] AXI_15_ARLEN; + input [2:0] AXI_15_ARSIZE; + input AXI_15_ARVALID; + input [36:0] AXI_15_AWADDR; + input [1:0] AXI_15_AWBURST; + input [5:0] AXI_15_AWID; + input [3:0] AXI_15_AWLEN; + input [2:0] AXI_15_AWSIZE; + input AXI_15_AWVALID; + input AXI_15_BREADY; + input AXI_15_DFI_LP_PWR_X_REQ; + input AXI_15_RREADY; + input [255:0] AXI_15_WDATA; + input [31:0] AXI_15_WDATA_PARITY; + input AXI_15_WLAST; + input [31:0] AXI_15_WSTRB; + input AXI_15_WVALID; + input BSCAN_DRCK; + input BSCAN_TCK; + input HBM_REF_CLK; + input MBIST_EN_00; + input MBIST_EN_01; + input MBIST_EN_02; + input MBIST_EN_03; + input MBIST_EN_04; + input MBIST_EN_05; + input MBIST_EN_06; + input MBIST_EN_07; +endmodule + +(* keep *) +module HBM_TWO_STACK_INTF (...); + parameter CLK_SEL_00 = "FALSE"; + parameter CLK_SEL_01 = "FALSE"; + parameter CLK_SEL_02 = "FALSE"; + parameter CLK_SEL_03 = "FALSE"; + parameter CLK_SEL_04 = "FALSE"; + parameter CLK_SEL_05 = "FALSE"; + parameter CLK_SEL_06 = "FALSE"; + parameter CLK_SEL_07 = "FALSE"; + parameter CLK_SEL_08 = "FALSE"; + parameter CLK_SEL_09 = "FALSE"; + parameter CLK_SEL_10 = "FALSE"; + parameter CLK_SEL_11 = "FALSE"; + parameter CLK_SEL_12 = "FALSE"; + parameter CLK_SEL_13 = "FALSE"; + parameter CLK_SEL_14 = "FALSE"; + parameter CLK_SEL_15 = "FALSE"; + parameter CLK_SEL_16 = "FALSE"; + parameter CLK_SEL_17 = "FALSE"; + parameter CLK_SEL_18 = "FALSE"; + parameter CLK_SEL_19 = "FALSE"; + parameter CLK_SEL_20 = "FALSE"; + parameter CLK_SEL_21 = "FALSE"; + parameter CLK_SEL_22 = "FALSE"; + parameter CLK_SEL_23 = "FALSE"; + parameter CLK_SEL_24 = "FALSE"; + parameter CLK_SEL_25 = "FALSE"; + parameter CLK_SEL_26 = "FALSE"; + parameter CLK_SEL_27 = "FALSE"; + parameter CLK_SEL_28 = "FALSE"; + parameter CLK_SEL_29 = "FALSE"; + parameter CLK_SEL_30 = "FALSE"; + parameter CLK_SEL_31 = "FALSE"; + parameter integer DATARATE_00 = 1800; + parameter integer DATARATE_01 = 1800; + parameter integer DATARATE_02 = 1800; + parameter integer DATARATE_03 = 1800; + parameter integer DATARATE_04 = 1800; + parameter integer DATARATE_05 = 1800; + parameter integer DATARATE_06 = 1800; + parameter integer DATARATE_07 = 1800; + parameter integer DATARATE_08 = 1800; + parameter integer DATARATE_09 = 1800; + parameter integer DATARATE_10 = 1800; + parameter integer DATARATE_11 = 1800; + parameter integer DATARATE_12 = 1800; + parameter integer DATARATE_13 = 1800; + parameter integer DATARATE_14 = 1800; + parameter integer DATARATE_15 = 1800; + parameter DA_LOCKOUT_0 = "FALSE"; + parameter DA_LOCKOUT_1 = "FALSE"; + parameter [0:0] IS_APB_0_PCLK_INVERTED = 1'b0; + parameter [0:0] IS_APB_0_PRESET_N_INVERTED = 1'b0; + parameter [0:0] IS_APB_1_PCLK_INVERTED = 1'b0; + parameter [0:0] IS_APB_1_PRESET_N_INVERTED = 1'b0; + parameter [0:0] IS_AXI_00_ACLK_INVERTED = 1'b0; + parameter [0:0] IS_AXI_00_ARESET_N_INVERTED = 1'b0; + parameter [0:0] IS_AXI_01_ACLK_INVERTED = 1'b0; + parameter [0:0] IS_AXI_01_ARESET_N_INVERTED = 1'b0; + parameter [0:0] IS_AXI_02_ACLK_INVERTED = 1'b0; + parameter [0:0] IS_AXI_02_ARESET_N_INVERTED = 1'b0; + parameter [0:0] IS_AXI_03_ACLK_INVERTED = 1'b0; + parameter [0:0] IS_AXI_03_ARESET_N_INVERTED = 1'b0; + parameter [0:0] IS_AXI_04_ACLK_INVERTED = 1'b0; + parameter [0:0] IS_AXI_04_ARESET_N_INVERTED = 1'b0; + parameter [0:0] IS_AXI_05_ACLK_INVERTED = 1'b0; + parameter [0:0] IS_AXI_05_ARESET_N_INVERTED = 1'b0; + parameter [0:0] IS_AXI_06_ACLK_INVERTED = 1'b0; + parameter [0:0] IS_AXI_06_ARESET_N_INVERTED = 1'b0; + parameter [0:0] IS_AXI_07_ACLK_INVERTED = 1'b0; + parameter [0:0] IS_AXI_07_ARESET_N_INVERTED = 1'b0; + parameter [0:0] IS_AXI_08_ACLK_INVERTED = 1'b0; + parameter [0:0] IS_AXI_08_ARESET_N_INVERTED = 1'b0; + parameter [0:0] IS_AXI_09_ACLK_INVERTED = 1'b0; + parameter [0:0] IS_AXI_09_ARESET_N_INVERTED = 1'b0; + parameter [0:0] IS_AXI_10_ACLK_INVERTED = 1'b0; + parameter [0:0] IS_AXI_10_ARESET_N_INVERTED = 1'b0; + parameter [0:0] IS_AXI_11_ACLK_INVERTED = 1'b0; + parameter [0:0] IS_AXI_11_ARESET_N_INVERTED = 1'b0; + parameter [0:0] IS_AXI_12_ACLK_INVERTED = 1'b0; + parameter [0:0] IS_AXI_12_ARESET_N_INVERTED = 1'b0; + parameter [0:0] IS_AXI_13_ACLK_INVERTED = 1'b0; + parameter [0:0] IS_AXI_13_ARESET_N_INVERTED = 1'b0; + parameter [0:0] IS_AXI_14_ACLK_INVERTED = 1'b0; + parameter [0:0] IS_AXI_14_ARESET_N_INVERTED = 1'b0; + parameter [0:0] IS_AXI_15_ACLK_INVERTED = 1'b0; + parameter [0:0] IS_AXI_15_ARESET_N_INVERTED = 1'b0; + parameter [0:0] IS_AXI_16_ACLK_INVERTED = 1'b0; + parameter [0:0] IS_AXI_16_ARESET_N_INVERTED = 1'b0; + parameter [0:0] IS_AXI_17_ACLK_INVERTED = 1'b0; + parameter [0:0] IS_AXI_17_ARESET_N_INVERTED = 1'b0; + parameter [0:0] IS_AXI_18_ACLK_INVERTED = 1'b0; + parameter [0:0] IS_AXI_18_ARESET_N_INVERTED = 1'b0; + parameter [0:0] IS_AXI_19_ACLK_INVERTED = 1'b0; + parameter [0:0] IS_AXI_19_ARESET_N_INVERTED = 1'b0; + parameter [0:0] IS_AXI_20_ACLK_INVERTED = 1'b0; + parameter [0:0] IS_AXI_20_ARESET_N_INVERTED = 1'b0; + parameter [0:0] IS_AXI_21_ACLK_INVERTED = 1'b0; + parameter [0:0] IS_AXI_21_ARESET_N_INVERTED = 1'b0; + parameter [0:0] IS_AXI_22_ACLK_INVERTED = 1'b0; + parameter [0:0] IS_AXI_22_ARESET_N_INVERTED = 1'b0; + parameter [0:0] IS_AXI_23_ACLK_INVERTED = 1'b0; + parameter [0:0] IS_AXI_23_ARESET_N_INVERTED = 1'b0; + parameter [0:0] IS_AXI_24_ACLK_INVERTED = 1'b0; + parameter [0:0] IS_AXI_24_ARESET_N_INVERTED = 1'b0; + parameter [0:0] IS_AXI_25_ACLK_INVERTED = 1'b0; + parameter [0:0] IS_AXI_25_ARESET_N_INVERTED = 1'b0; + parameter [0:0] IS_AXI_26_ACLK_INVERTED = 1'b0; + parameter [0:0] IS_AXI_26_ARESET_N_INVERTED = 1'b0; + parameter [0:0] IS_AXI_27_ACLK_INVERTED = 1'b0; + parameter [0:0] IS_AXI_27_ARESET_N_INVERTED = 1'b0; + parameter [0:0] IS_AXI_28_ACLK_INVERTED = 1'b0; + parameter [0:0] IS_AXI_28_ARESET_N_INVERTED = 1'b0; + parameter [0:0] IS_AXI_29_ACLK_INVERTED = 1'b0; + parameter [0:0] IS_AXI_29_ARESET_N_INVERTED = 1'b0; + parameter [0:0] IS_AXI_30_ACLK_INVERTED = 1'b0; + parameter [0:0] IS_AXI_30_ARESET_N_INVERTED = 1'b0; + parameter [0:0] IS_AXI_31_ACLK_INVERTED = 1'b0; + parameter [0:0] IS_AXI_31_ARESET_N_INVERTED = 1'b0; + parameter MC_ENABLE_00 = "FALSE"; + parameter MC_ENABLE_01 = "FALSE"; + parameter MC_ENABLE_02 = "FALSE"; + parameter MC_ENABLE_03 = "FALSE"; + parameter MC_ENABLE_04 = "FALSE"; + parameter MC_ENABLE_05 = "FALSE"; + parameter MC_ENABLE_06 = "FALSE"; + parameter MC_ENABLE_07 = "FALSE"; + parameter MC_ENABLE_08 = "FALSE"; + parameter MC_ENABLE_09 = "FALSE"; + parameter MC_ENABLE_10 = "FALSE"; + parameter MC_ENABLE_11 = "FALSE"; + parameter MC_ENABLE_12 = "FALSE"; + parameter MC_ENABLE_13 = "FALSE"; + parameter MC_ENABLE_14 = "FALSE"; + parameter MC_ENABLE_15 = "FALSE"; + parameter MC_ENABLE_APB_00 = "FALSE"; + parameter MC_ENABLE_APB_01 = "FALSE"; + parameter integer PAGEHIT_PERCENT_00 = 75; + parameter integer PAGEHIT_PERCENT_01 = 75; + parameter PHY_ENABLE_00 = "FALSE"; + parameter PHY_ENABLE_01 = "FALSE"; + parameter PHY_ENABLE_02 = "FALSE"; + parameter PHY_ENABLE_03 = "FALSE"; + parameter PHY_ENABLE_04 = "FALSE"; + parameter PHY_ENABLE_05 = "FALSE"; + parameter PHY_ENABLE_06 = "FALSE"; + parameter PHY_ENABLE_07 = "FALSE"; + parameter PHY_ENABLE_08 = "FALSE"; + parameter PHY_ENABLE_09 = "FALSE"; + parameter PHY_ENABLE_10 = "FALSE"; + parameter PHY_ENABLE_11 = "FALSE"; + parameter PHY_ENABLE_12 = "FALSE"; + parameter PHY_ENABLE_13 = "FALSE"; + parameter PHY_ENABLE_14 = "FALSE"; + parameter PHY_ENABLE_15 = "FALSE"; + parameter PHY_ENABLE_16 = "FALSE"; + parameter PHY_ENABLE_17 = "FALSE"; + parameter PHY_ENABLE_18 = "FALSE"; + parameter PHY_ENABLE_19 = "FALSE"; + parameter PHY_ENABLE_20 = "FALSE"; + parameter PHY_ENABLE_21 = "FALSE"; + parameter PHY_ENABLE_22 = "FALSE"; + parameter PHY_ENABLE_23 = "FALSE"; + parameter PHY_ENABLE_24 = "FALSE"; + parameter PHY_ENABLE_25 = "FALSE"; + parameter PHY_ENABLE_26 = "FALSE"; + parameter PHY_ENABLE_27 = "FALSE"; + parameter PHY_ENABLE_28 = "FALSE"; + parameter PHY_ENABLE_29 = "FALSE"; + parameter PHY_ENABLE_30 = "FALSE"; + parameter PHY_ENABLE_31 = "FALSE"; + parameter PHY_ENABLE_APB_00 = "FALSE"; + parameter PHY_ENABLE_APB_01 = "FALSE"; + parameter PHY_PCLK_INVERT_01 = "FALSE"; + parameter PHY_PCLK_INVERT_02 = "FALSE"; + parameter integer READ_PERCENT_00 = 50; + parameter integer READ_PERCENT_01 = 50; + parameter integer READ_PERCENT_02 = 50; + parameter integer READ_PERCENT_03 = 50; + parameter integer READ_PERCENT_04 = 50; + parameter integer READ_PERCENT_05 = 50; + parameter integer READ_PERCENT_06 = 50; + parameter integer READ_PERCENT_07 = 50; + parameter integer READ_PERCENT_08 = 50; + parameter integer READ_PERCENT_09 = 50; + parameter integer READ_PERCENT_10 = 50; + parameter integer READ_PERCENT_11 = 50; + parameter integer READ_PERCENT_12 = 50; + parameter integer READ_PERCENT_13 = 50; + parameter integer READ_PERCENT_14 = 50; + parameter integer READ_PERCENT_15 = 50; + parameter integer READ_PERCENT_16 = 50; + parameter integer READ_PERCENT_17 = 50; + parameter integer READ_PERCENT_18 = 50; + parameter integer READ_PERCENT_19 = 50; + parameter integer READ_PERCENT_20 = 50; + parameter integer READ_PERCENT_21 = 50; + parameter integer READ_PERCENT_22 = 50; + parameter integer READ_PERCENT_23 = 50; + parameter integer READ_PERCENT_24 = 50; + parameter integer READ_PERCENT_25 = 50; + parameter integer READ_PERCENT_26 = 50; + parameter integer READ_PERCENT_27 = 50; + parameter integer READ_PERCENT_28 = 50; + parameter integer READ_PERCENT_29 = 50; + parameter integer READ_PERCENT_30 = 50; + parameter integer READ_PERCENT_31 = 50; + parameter SIM_DEVICE = "ULTRASCALE_PLUS"; + parameter SWITCH_ENABLE_00 = "FALSE"; + parameter SWITCH_ENABLE_01 = "FALSE"; + parameter integer WRITE_PERCENT_00 = 50; + parameter integer WRITE_PERCENT_01 = 50; + parameter integer WRITE_PERCENT_02 = 50; + parameter integer WRITE_PERCENT_03 = 50; + parameter integer WRITE_PERCENT_04 = 50; + parameter integer WRITE_PERCENT_05 = 50; + parameter integer WRITE_PERCENT_06 = 50; + parameter integer WRITE_PERCENT_07 = 50; + parameter integer WRITE_PERCENT_08 = 50; + parameter integer WRITE_PERCENT_09 = 50; + parameter integer WRITE_PERCENT_10 = 50; + parameter integer WRITE_PERCENT_11 = 50; + parameter integer WRITE_PERCENT_12 = 50; + parameter integer WRITE_PERCENT_13 = 50; + parameter integer WRITE_PERCENT_14 = 50; + parameter integer WRITE_PERCENT_15 = 50; + parameter integer WRITE_PERCENT_16 = 50; + parameter integer WRITE_PERCENT_17 = 50; + parameter integer WRITE_PERCENT_18 = 50; + parameter integer WRITE_PERCENT_19 = 50; + parameter integer WRITE_PERCENT_20 = 50; + parameter integer WRITE_PERCENT_21 = 50; + parameter integer WRITE_PERCENT_22 = 50; + parameter integer WRITE_PERCENT_23 = 50; + parameter integer WRITE_PERCENT_24 = 50; + parameter integer WRITE_PERCENT_25 = 50; + parameter integer WRITE_PERCENT_26 = 50; + parameter integer WRITE_PERCENT_27 = 50; + parameter integer WRITE_PERCENT_28 = 50; + parameter integer WRITE_PERCENT_29 = 50; + parameter integer WRITE_PERCENT_30 = 50; + parameter integer WRITE_PERCENT_31 = 50; + output [31:0] APB_0_PRDATA; + output APB_0_PREADY; + output APB_0_PSLVERR; + output [31:0] APB_1_PRDATA; + output APB_1_PREADY; + output APB_1_PSLVERR; + output AXI_00_ARREADY; + output AXI_00_AWREADY; + output [5:0] AXI_00_BID; + output [1:0] AXI_00_BRESP; + output AXI_00_BVALID; + output [1:0] AXI_00_DFI_AW_AERR_N; + output AXI_00_DFI_CLK_BUF; + output [7:0] AXI_00_DFI_DBI_BYTE_DISABLE; + output [20:0] AXI_00_DFI_DW_RDDATA_DBI; + output [7:0] AXI_00_DFI_DW_RDDATA_DERR; + output [1:0] AXI_00_DFI_DW_RDDATA_VALID; + output AXI_00_DFI_INIT_COMPLETE; + output AXI_00_DFI_PHYUPD_REQ; + output AXI_00_DFI_PHY_LP_STATE; + output AXI_00_DFI_RST_N_BUF; + output [5:0] AXI_00_MC_STATUS; + output [7:0] AXI_00_PHY_STATUS; + output [255:0] AXI_00_RDATA; + output [31:0] AXI_00_RDATA_PARITY; + output [5:0] AXI_00_RID; + output AXI_00_RLAST; + output [1:0] AXI_00_RRESP; + output AXI_00_RVALID; + output AXI_00_WREADY; + output AXI_01_ARREADY; + output AXI_01_AWREADY; + output [5:0] AXI_01_BID; + output [1:0] AXI_01_BRESP; + output AXI_01_BVALID; + output [1:0] AXI_01_DFI_AW_AERR_N; + output AXI_01_DFI_CLK_BUF; + output [7:0] AXI_01_DFI_DBI_BYTE_DISABLE; + output [20:0] AXI_01_DFI_DW_RDDATA_DBI; + output [7:0] AXI_01_DFI_DW_RDDATA_DERR; + output [1:0] AXI_01_DFI_DW_RDDATA_VALID; + output AXI_01_DFI_INIT_COMPLETE; + output AXI_01_DFI_PHYUPD_REQ; + output AXI_01_DFI_PHY_LP_STATE; + output AXI_01_DFI_RST_N_BUF; + output [255:0] AXI_01_RDATA; + output [31:0] AXI_01_RDATA_PARITY; + output [5:0] AXI_01_RID; + output AXI_01_RLAST; + output [1:0] AXI_01_RRESP; + output AXI_01_RVALID; + output AXI_01_WREADY; + output AXI_02_ARREADY; + output AXI_02_AWREADY; + output [5:0] AXI_02_BID; + output [1:0] AXI_02_BRESP; + output AXI_02_BVALID; + output [1:0] AXI_02_DFI_AW_AERR_N; + output AXI_02_DFI_CLK_BUF; + output [7:0] AXI_02_DFI_DBI_BYTE_DISABLE; + output [20:0] AXI_02_DFI_DW_RDDATA_DBI; + output [7:0] AXI_02_DFI_DW_RDDATA_DERR; + output [1:0] AXI_02_DFI_DW_RDDATA_VALID; + output AXI_02_DFI_INIT_COMPLETE; + output AXI_02_DFI_PHYUPD_REQ; + output AXI_02_DFI_PHY_LP_STATE; + output AXI_02_DFI_RST_N_BUF; + output [5:0] AXI_02_MC_STATUS; + output [7:0] AXI_02_PHY_STATUS; + output [255:0] AXI_02_RDATA; + output [31:0] AXI_02_RDATA_PARITY; + output [5:0] AXI_02_RID; + output AXI_02_RLAST; + output [1:0] AXI_02_RRESP; + output AXI_02_RVALID; + output AXI_02_WREADY; + output AXI_03_ARREADY; + output AXI_03_AWREADY; + output [5:0] AXI_03_BID; + output [1:0] AXI_03_BRESP; + output AXI_03_BVALID; + output [1:0] AXI_03_DFI_AW_AERR_N; + output AXI_03_DFI_CLK_BUF; + output [7:0] AXI_03_DFI_DBI_BYTE_DISABLE; + output [20:0] AXI_03_DFI_DW_RDDATA_DBI; + output [7:0] AXI_03_DFI_DW_RDDATA_DERR; + output [1:0] AXI_03_DFI_DW_RDDATA_VALID; + output AXI_03_DFI_INIT_COMPLETE; + output AXI_03_DFI_PHYUPD_REQ; + output AXI_03_DFI_PHY_LP_STATE; + output AXI_03_DFI_RST_N_BUF; + output [255:0] AXI_03_RDATA; + output [31:0] AXI_03_RDATA_PARITY; + output [5:0] AXI_03_RID; + output AXI_03_RLAST; + output [1:0] AXI_03_RRESP; + output AXI_03_RVALID; + output AXI_03_WREADY; + output AXI_04_ARREADY; + output AXI_04_AWREADY; + output [5:0] AXI_04_BID; + output [1:0] AXI_04_BRESP; + output AXI_04_BVALID; + output [1:0] AXI_04_DFI_AW_AERR_N; + output AXI_04_DFI_CLK_BUF; + output [7:0] AXI_04_DFI_DBI_BYTE_DISABLE; + output [20:0] AXI_04_DFI_DW_RDDATA_DBI; + output [7:0] AXI_04_DFI_DW_RDDATA_DERR; + output [1:0] AXI_04_DFI_DW_RDDATA_VALID; + output AXI_04_DFI_INIT_COMPLETE; + output AXI_04_DFI_PHYUPD_REQ; + output AXI_04_DFI_PHY_LP_STATE; + output AXI_04_DFI_RST_N_BUF; + output [5:0] AXI_04_MC_STATUS; + output [7:0] AXI_04_PHY_STATUS; + output [255:0] AXI_04_RDATA; + output [31:0] AXI_04_RDATA_PARITY; + output [5:0] AXI_04_RID; + output AXI_04_RLAST; + output [1:0] AXI_04_RRESP; + output AXI_04_RVALID; + output AXI_04_WREADY; + output AXI_05_ARREADY; + output AXI_05_AWREADY; + output [5:0] AXI_05_BID; + output [1:0] AXI_05_BRESP; + output AXI_05_BVALID; + output [1:0] AXI_05_DFI_AW_AERR_N; + output AXI_05_DFI_CLK_BUF; + output [7:0] AXI_05_DFI_DBI_BYTE_DISABLE; + output [20:0] AXI_05_DFI_DW_RDDATA_DBI; + output [7:0] AXI_05_DFI_DW_RDDATA_DERR; + output [1:0] AXI_05_DFI_DW_RDDATA_VALID; + output AXI_05_DFI_INIT_COMPLETE; + output AXI_05_DFI_PHYUPD_REQ; + output AXI_05_DFI_PHY_LP_STATE; + output AXI_05_DFI_RST_N_BUF; + output [255:0] AXI_05_RDATA; + output [31:0] AXI_05_RDATA_PARITY; + output [5:0] AXI_05_RID; + output AXI_05_RLAST; + output [1:0] AXI_05_RRESP; + output AXI_05_RVALID; + output AXI_05_WREADY; + output AXI_06_ARREADY; + output AXI_06_AWREADY; + output [5:0] AXI_06_BID; + output [1:0] AXI_06_BRESP; + output AXI_06_BVALID; + output [1:0] AXI_06_DFI_AW_AERR_N; + output AXI_06_DFI_CLK_BUF; + output [7:0] AXI_06_DFI_DBI_BYTE_DISABLE; + output [20:0] AXI_06_DFI_DW_RDDATA_DBI; + output [7:0] AXI_06_DFI_DW_RDDATA_DERR; + output [1:0] AXI_06_DFI_DW_RDDATA_VALID; + output AXI_06_DFI_INIT_COMPLETE; + output AXI_06_DFI_PHYUPD_REQ; + output AXI_06_DFI_PHY_LP_STATE; + output AXI_06_DFI_RST_N_BUF; + output [5:0] AXI_06_MC_STATUS; + output [7:0] AXI_06_PHY_STATUS; + output [255:0] AXI_06_RDATA; + output [31:0] AXI_06_RDATA_PARITY; + output [5:0] AXI_06_RID; + output AXI_06_RLAST; + output [1:0] AXI_06_RRESP; + output AXI_06_RVALID; + output AXI_06_WREADY; + output AXI_07_ARREADY; + output AXI_07_AWREADY; + output [5:0] AXI_07_BID; + output [1:0] AXI_07_BRESP; + output AXI_07_BVALID; + output [1:0] AXI_07_DFI_AW_AERR_N; + output AXI_07_DFI_CLK_BUF; + output [7:0] AXI_07_DFI_DBI_BYTE_DISABLE; + output [20:0] AXI_07_DFI_DW_RDDATA_DBI; + output [7:0] AXI_07_DFI_DW_RDDATA_DERR; + output [1:0] AXI_07_DFI_DW_RDDATA_VALID; + output AXI_07_DFI_INIT_COMPLETE; + output AXI_07_DFI_PHYUPD_REQ; + output AXI_07_DFI_PHY_LP_STATE; + output AXI_07_DFI_RST_N_BUF; + output [255:0] AXI_07_RDATA; + output [31:0] AXI_07_RDATA_PARITY; + output [5:0] AXI_07_RID; + output AXI_07_RLAST; + output [1:0] AXI_07_RRESP; + output AXI_07_RVALID; + output AXI_07_WREADY; + output AXI_08_ARREADY; + output AXI_08_AWREADY; + output [5:0] AXI_08_BID; + output [1:0] AXI_08_BRESP; + output AXI_08_BVALID; + output [1:0] AXI_08_DFI_AW_AERR_N; + output AXI_08_DFI_CLK_BUF; + output [7:0] AXI_08_DFI_DBI_BYTE_DISABLE; + output [20:0] AXI_08_DFI_DW_RDDATA_DBI; + output [7:0] AXI_08_DFI_DW_RDDATA_DERR; + output [1:0] AXI_08_DFI_DW_RDDATA_VALID; + output AXI_08_DFI_INIT_COMPLETE; + output AXI_08_DFI_PHYUPD_REQ; + output AXI_08_DFI_PHY_LP_STATE; + output AXI_08_DFI_RST_N_BUF; + output [5:0] AXI_08_MC_STATUS; + output [7:0] AXI_08_PHY_STATUS; + output [255:0] AXI_08_RDATA; + output [31:0] AXI_08_RDATA_PARITY; + output [5:0] AXI_08_RID; + output AXI_08_RLAST; + output [1:0] AXI_08_RRESP; + output AXI_08_RVALID; + output AXI_08_WREADY; + output AXI_09_ARREADY; + output AXI_09_AWREADY; + output [5:0] AXI_09_BID; + output [1:0] AXI_09_BRESP; + output AXI_09_BVALID; + output [1:0] AXI_09_DFI_AW_AERR_N; + output AXI_09_DFI_CLK_BUF; + output [7:0] AXI_09_DFI_DBI_BYTE_DISABLE; + output [20:0] AXI_09_DFI_DW_RDDATA_DBI; + output [7:0] AXI_09_DFI_DW_RDDATA_DERR; + output [1:0] AXI_09_DFI_DW_RDDATA_VALID; + output AXI_09_DFI_INIT_COMPLETE; + output AXI_09_DFI_PHYUPD_REQ; + output AXI_09_DFI_PHY_LP_STATE; + output AXI_09_DFI_RST_N_BUF; + output [255:0] AXI_09_RDATA; + output [31:0] AXI_09_RDATA_PARITY; + output [5:0] AXI_09_RID; + output AXI_09_RLAST; + output [1:0] AXI_09_RRESP; + output AXI_09_RVALID; + output AXI_09_WREADY; + output AXI_10_ARREADY; + output AXI_10_AWREADY; + output [5:0] AXI_10_BID; + output [1:0] AXI_10_BRESP; + output AXI_10_BVALID; + output [1:0] AXI_10_DFI_AW_AERR_N; + output AXI_10_DFI_CLK_BUF; + output [7:0] AXI_10_DFI_DBI_BYTE_DISABLE; + output [20:0] AXI_10_DFI_DW_RDDATA_DBI; + output [7:0] AXI_10_DFI_DW_RDDATA_DERR; + output [1:0] AXI_10_DFI_DW_RDDATA_VALID; + output AXI_10_DFI_INIT_COMPLETE; + output AXI_10_DFI_PHYUPD_REQ; + output AXI_10_DFI_PHY_LP_STATE; + output AXI_10_DFI_RST_N_BUF; + output [5:0] AXI_10_MC_STATUS; + output [7:0] AXI_10_PHY_STATUS; + output [255:0] AXI_10_RDATA; + output [31:0] AXI_10_RDATA_PARITY; + output [5:0] AXI_10_RID; + output AXI_10_RLAST; + output [1:0] AXI_10_RRESP; + output AXI_10_RVALID; + output AXI_10_WREADY; + output AXI_11_ARREADY; + output AXI_11_AWREADY; + output [5:0] AXI_11_BID; + output [1:0] AXI_11_BRESP; + output AXI_11_BVALID; + output [1:0] AXI_11_DFI_AW_AERR_N; + output AXI_11_DFI_CLK_BUF; + output [7:0] AXI_11_DFI_DBI_BYTE_DISABLE; + output [20:0] AXI_11_DFI_DW_RDDATA_DBI; + output [7:0] AXI_11_DFI_DW_RDDATA_DERR; + output [1:0] AXI_11_DFI_DW_RDDATA_VALID; + output AXI_11_DFI_INIT_COMPLETE; + output AXI_11_DFI_PHYUPD_REQ; + output AXI_11_DFI_PHY_LP_STATE; + output AXI_11_DFI_RST_N_BUF; + output [255:0] AXI_11_RDATA; + output [31:0] AXI_11_RDATA_PARITY; + output [5:0] AXI_11_RID; + output AXI_11_RLAST; + output [1:0] AXI_11_RRESP; + output AXI_11_RVALID; + output AXI_11_WREADY; + output AXI_12_ARREADY; + output AXI_12_AWREADY; + output [5:0] AXI_12_BID; + output [1:0] AXI_12_BRESP; + output AXI_12_BVALID; + output [1:0] AXI_12_DFI_AW_AERR_N; + output AXI_12_DFI_CLK_BUF; + output [7:0] AXI_12_DFI_DBI_BYTE_DISABLE; + output [20:0] AXI_12_DFI_DW_RDDATA_DBI; + output [7:0] AXI_12_DFI_DW_RDDATA_DERR; + output [1:0] AXI_12_DFI_DW_RDDATA_VALID; + output AXI_12_DFI_INIT_COMPLETE; + output AXI_12_DFI_PHYUPD_REQ; + output AXI_12_DFI_PHY_LP_STATE; + output AXI_12_DFI_RST_N_BUF; + output [5:0] AXI_12_MC_STATUS; + output [7:0] AXI_12_PHY_STATUS; + output [255:0] AXI_12_RDATA; + output [31:0] AXI_12_RDATA_PARITY; + output [5:0] AXI_12_RID; + output AXI_12_RLAST; + output [1:0] AXI_12_RRESP; + output AXI_12_RVALID; + output AXI_12_WREADY; + output AXI_13_ARREADY; + output AXI_13_AWREADY; + output [5:0] AXI_13_BID; + output [1:0] AXI_13_BRESP; + output AXI_13_BVALID; + output [1:0] AXI_13_DFI_AW_AERR_N; + output AXI_13_DFI_CLK_BUF; + output [7:0] AXI_13_DFI_DBI_BYTE_DISABLE; + output [20:0] AXI_13_DFI_DW_RDDATA_DBI; + output [7:0] AXI_13_DFI_DW_RDDATA_DERR; + output [1:0] AXI_13_DFI_DW_RDDATA_VALID; + output AXI_13_DFI_INIT_COMPLETE; + output AXI_13_DFI_PHYUPD_REQ; + output AXI_13_DFI_PHY_LP_STATE; + output AXI_13_DFI_RST_N_BUF; + output [255:0] AXI_13_RDATA; + output [31:0] AXI_13_RDATA_PARITY; + output [5:0] AXI_13_RID; + output AXI_13_RLAST; + output [1:0] AXI_13_RRESP; + output AXI_13_RVALID; + output AXI_13_WREADY; + output AXI_14_ARREADY; + output AXI_14_AWREADY; + output [5:0] AXI_14_BID; + output [1:0] AXI_14_BRESP; + output AXI_14_BVALID; + output [1:0] AXI_14_DFI_AW_AERR_N; + output AXI_14_DFI_CLK_BUF; + output [7:0] AXI_14_DFI_DBI_BYTE_DISABLE; + output [20:0] AXI_14_DFI_DW_RDDATA_DBI; + output [7:0] AXI_14_DFI_DW_RDDATA_DERR; + output [1:0] AXI_14_DFI_DW_RDDATA_VALID; + output AXI_14_DFI_INIT_COMPLETE; + output AXI_14_DFI_PHYUPD_REQ; + output AXI_14_DFI_PHY_LP_STATE; + output AXI_14_DFI_RST_N_BUF; + output [5:0] AXI_14_MC_STATUS; + output [7:0] AXI_14_PHY_STATUS; + output [255:0] AXI_14_RDATA; + output [31:0] AXI_14_RDATA_PARITY; + output [5:0] AXI_14_RID; + output AXI_14_RLAST; + output [1:0] AXI_14_RRESP; + output AXI_14_RVALID; + output AXI_14_WREADY; + output AXI_15_ARREADY; + output AXI_15_AWREADY; + output [5:0] AXI_15_BID; + output [1:0] AXI_15_BRESP; + output AXI_15_BVALID; + output [1:0] AXI_15_DFI_AW_AERR_N; + output AXI_15_DFI_CLK_BUF; + output [7:0] AXI_15_DFI_DBI_BYTE_DISABLE; + output [20:0] AXI_15_DFI_DW_RDDATA_DBI; + output [7:0] AXI_15_DFI_DW_RDDATA_DERR; + output [1:0] AXI_15_DFI_DW_RDDATA_VALID; + output AXI_15_DFI_INIT_COMPLETE; + output AXI_15_DFI_PHYUPD_REQ; + output AXI_15_DFI_PHY_LP_STATE; + output AXI_15_DFI_RST_N_BUF; + output [255:0] AXI_15_RDATA; + output [31:0] AXI_15_RDATA_PARITY; + output [5:0] AXI_15_RID; + output AXI_15_RLAST; + output [1:0] AXI_15_RRESP; + output AXI_15_RVALID; + output AXI_15_WREADY; + output AXI_16_ARREADY; + output AXI_16_AWREADY; + output [5:0] AXI_16_BID; + output [1:0] AXI_16_BRESP; + output AXI_16_BVALID; + output [1:0] AXI_16_DFI_AW_AERR_N; + output AXI_16_DFI_CLK_BUF; + output [7:0] AXI_16_DFI_DBI_BYTE_DISABLE; + output [20:0] AXI_16_DFI_DW_RDDATA_DBI; + output [7:0] AXI_16_DFI_DW_RDDATA_DERR; + output [1:0] AXI_16_DFI_DW_RDDATA_VALID; + output AXI_16_DFI_INIT_COMPLETE; + output AXI_16_DFI_PHYUPD_REQ; + output AXI_16_DFI_PHY_LP_STATE; + output AXI_16_DFI_RST_N_BUF; + output [5:0] AXI_16_MC_STATUS; + output [7:0] AXI_16_PHY_STATUS; + output [255:0] AXI_16_RDATA; + output [31:0] AXI_16_RDATA_PARITY; + output [5:0] AXI_16_RID; + output AXI_16_RLAST; + output [1:0] AXI_16_RRESP; + output AXI_16_RVALID; + output AXI_16_WREADY; + output AXI_17_ARREADY; + output AXI_17_AWREADY; + output [5:0] AXI_17_BID; + output [1:0] AXI_17_BRESP; + output AXI_17_BVALID; + output [1:0] AXI_17_DFI_AW_AERR_N; + output AXI_17_DFI_CLK_BUF; + output [7:0] AXI_17_DFI_DBI_BYTE_DISABLE; + output [20:0] AXI_17_DFI_DW_RDDATA_DBI; + output [7:0] AXI_17_DFI_DW_RDDATA_DERR; + output [1:0] AXI_17_DFI_DW_RDDATA_VALID; + output AXI_17_DFI_INIT_COMPLETE; + output AXI_17_DFI_PHYUPD_REQ; + output AXI_17_DFI_PHY_LP_STATE; + output AXI_17_DFI_RST_N_BUF; + output [255:0] AXI_17_RDATA; + output [31:0] AXI_17_RDATA_PARITY; + output [5:0] AXI_17_RID; + output AXI_17_RLAST; + output [1:0] AXI_17_RRESP; + output AXI_17_RVALID; + output AXI_17_WREADY; + output AXI_18_ARREADY; + output AXI_18_AWREADY; + output [5:0] AXI_18_BID; + output [1:0] AXI_18_BRESP; + output AXI_18_BVALID; + output [1:0] AXI_18_DFI_AW_AERR_N; + output AXI_18_DFI_CLK_BUF; + output [7:0] AXI_18_DFI_DBI_BYTE_DISABLE; + output [20:0] AXI_18_DFI_DW_RDDATA_DBI; + output [7:0] AXI_18_DFI_DW_RDDATA_DERR; + output [1:0] AXI_18_DFI_DW_RDDATA_VALID; + output AXI_18_DFI_INIT_COMPLETE; + output AXI_18_DFI_PHYUPD_REQ; + output AXI_18_DFI_PHY_LP_STATE; + output AXI_18_DFI_RST_N_BUF; + output [5:0] AXI_18_MC_STATUS; + output [7:0] AXI_18_PHY_STATUS; + output [255:0] AXI_18_RDATA; + output [31:0] AXI_18_RDATA_PARITY; + output [5:0] AXI_18_RID; + output AXI_18_RLAST; + output [1:0] AXI_18_RRESP; + output AXI_18_RVALID; + output AXI_18_WREADY; + output AXI_19_ARREADY; + output AXI_19_AWREADY; + output [5:0] AXI_19_BID; + output [1:0] AXI_19_BRESP; + output AXI_19_BVALID; + output [1:0] AXI_19_DFI_AW_AERR_N; + output AXI_19_DFI_CLK_BUF; + output [7:0] AXI_19_DFI_DBI_BYTE_DISABLE; + output [20:0] AXI_19_DFI_DW_RDDATA_DBI; + output [7:0] AXI_19_DFI_DW_RDDATA_DERR; + output [1:0] AXI_19_DFI_DW_RDDATA_VALID; + output AXI_19_DFI_INIT_COMPLETE; + output AXI_19_DFI_PHYUPD_REQ; + output AXI_19_DFI_PHY_LP_STATE; + output AXI_19_DFI_RST_N_BUF; + output [255:0] AXI_19_RDATA; + output [31:0] AXI_19_RDATA_PARITY; + output [5:0] AXI_19_RID; + output AXI_19_RLAST; + output [1:0] AXI_19_RRESP; + output AXI_19_RVALID; + output AXI_19_WREADY; + output AXI_20_ARREADY; + output AXI_20_AWREADY; + output [5:0] AXI_20_BID; + output [1:0] AXI_20_BRESP; + output AXI_20_BVALID; + output [1:0] AXI_20_DFI_AW_AERR_N; + output AXI_20_DFI_CLK_BUF; + output [7:0] AXI_20_DFI_DBI_BYTE_DISABLE; + output [20:0] AXI_20_DFI_DW_RDDATA_DBI; + output [7:0] AXI_20_DFI_DW_RDDATA_DERR; + output [1:0] AXI_20_DFI_DW_RDDATA_VALID; + output AXI_20_DFI_INIT_COMPLETE; + output AXI_20_DFI_PHYUPD_REQ; + output AXI_20_DFI_PHY_LP_STATE; + output AXI_20_DFI_RST_N_BUF; + output [5:0] AXI_20_MC_STATUS; + output [7:0] AXI_20_PHY_STATUS; + output [255:0] AXI_20_RDATA; + output [31:0] AXI_20_RDATA_PARITY; + output [5:0] AXI_20_RID; + output AXI_20_RLAST; + output [1:0] AXI_20_RRESP; + output AXI_20_RVALID; + output AXI_20_WREADY; + output AXI_21_ARREADY; + output AXI_21_AWREADY; + output [5:0] AXI_21_BID; + output [1:0] AXI_21_BRESP; + output AXI_21_BVALID; + output [1:0] AXI_21_DFI_AW_AERR_N; + output AXI_21_DFI_CLK_BUF; + output [7:0] AXI_21_DFI_DBI_BYTE_DISABLE; + output [20:0] AXI_21_DFI_DW_RDDATA_DBI; + output [7:0] AXI_21_DFI_DW_RDDATA_DERR; + output [1:0] AXI_21_DFI_DW_RDDATA_VALID; + output AXI_21_DFI_INIT_COMPLETE; + output AXI_21_DFI_PHYUPD_REQ; + output AXI_21_DFI_PHY_LP_STATE; + output AXI_21_DFI_RST_N_BUF; + output [255:0] AXI_21_RDATA; + output [31:0] AXI_21_RDATA_PARITY; + output [5:0] AXI_21_RID; + output AXI_21_RLAST; + output [1:0] AXI_21_RRESP; + output AXI_21_RVALID; + output AXI_21_WREADY; + output AXI_22_ARREADY; + output AXI_22_AWREADY; + output [5:0] AXI_22_BID; + output [1:0] AXI_22_BRESP; + output AXI_22_BVALID; + output [1:0] AXI_22_DFI_AW_AERR_N; + output AXI_22_DFI_CLK_BUF; + output [7:0] AXI_22_DFI_DBI_BYTE_DISABLE; + output [20:0] AXI_22_DFI_DW_RDDATA_DBI; + output [7:0] AXI_22_DFI_DW_RDDATA_DERR; + output [1:0] AXI_22_DFI_DW_RDDATA_VALID; + output AXI_22_DFI_INIT_COMPLETE; + output AXI_22_DFI_PHYUPD_REQ; + output AXI_22_DFI_PHY_LP_STATE; + output AXI_22_DFI_RST_N_BUF; + output [5:0] AXI_22_MC_STATUS; + output [7:0] AXI_22_PHY_STATUS; + output [255:0] AXI_22_RDATA; + output [31:0] AXI_22_RDATA_PARITY; + output [5:0] AXI_22_RID; + output AXI_22_RLAST; + output [1:0] AXI_22_RRESP; + output AXI_22_RVALID; + output AXI_22_WREADY; + output AXI_23_ARREADY; + output AXI_23_AWREADY; + output [5:0] AXI_23_BID; + output [1:0] AXI_23_BRESP; + output AXI_23_BVALID; + output [1:0] AXI_23_DFI_AW_AERR_N; + output AXI_23_DFI_CLK_BUF; + output [7:0] AXI_23_DFI_DBI_BYTE_DISABLE; + output [20:0] AXI_23_DFI_DW_RDDATA_DBI; + output [7:0] AXI_23_DFI_DW_RDDATA_DERR; + output [1:0] AXI_23_DFI_DW_RDDATA_VALID; + output AXI_23_DFI_INIT_COMPLETE; + output AXI_23_DFI_PHYUPD_REQ; + output AXI_23_DFI_PHY_LP_STATE; + output AXI_23_DFI_RST_N_BUF; + output [255:0] AXI_23_RDATA; + output [31:0] AXI_23_RDATA_PARITY; + output [5:0] AXI_23_RID; + output AXI_23_RLAST; + output [1:0] AXI_23_RRESP; + output AXI_23_RVALID; + output AXI_23_WREADY; + output AXI_24_ARREADY; + output AXI_24_AWREADY; + output [5:0] AXI_24_BID; + output [1:0] AXI_24_BRESP; + output AXI_24_BVALID; + output [1:0] AXI_24_DFI_AW_AERR_N; + output AXI_24_DFI_CLK_BUF; + output [7:0] AXI_24_DFI_DBI_BYTE_DISABLE; + output [20:0] AXI_24_DFI_DW_RDDATA_DBI; + output [7:0] AXI_24_DFI_DW_RDDATA_DERR; + output [1:0] AXI_24_DFI_DW_RDDATA_VALID; + output AXI_24_DFI_INIT_COMPLETE; + output AXI_24_DFI_PHYUPD_REQ; + output AXI_24_DFI_PHY_LP_STATE; + output AXI_24_DFI_RST_N_BUF; + output [5:0] AXI_24_MC_STATUS; + output [7:0] AXI_24_PHY_STATUS; + output [255:0] AXI_24_RDATA; + output [31:0] AXI_24_RDATA_PARITY; + output [5:0] AXI_24_RID; + output AXI_24_RLAST; + output [1:0] AXI_24_RRESP; + output AXI_24_RVALID; + output AXI_24_WREADY; + output AXI_25_ARREADY; + output AXI_25_AWREADY; + output [5:0] AXI_25_BID; + output [1:0] AXI_25_BRESP; + output AXI_25_BVALID; + output [1:0] AXI_25_DFI_AW_AERR_N; + output AXI_25_DFI_CLK_BUF; + output [7:0] AXI_25_DFI_DBI_BYTE_DISABLE; + output [20:0] AXI_25_DFI_DW_RDDATA_DBI; + output [7:0] AXI_25_DFI_DW_RDDATA_DERR; + output [1:0] AXI_25_DFI_DW_RDDATA_VALID; + output AXI_25_DFI_INIT_COMPLETE; + output AXI_25_DFI_PHYUPD_REQ; + output AXI_25_DFI_PHY_LP_STATE; + output AXI_25_DFI_RST_N_BUF; + output [255:0] AXI_25_RDATA; + output [31:0] AXI_25_RDATA_PARITY; + output [5:0] AXI_25_RID; + output AXI_25_RLAST; + output [1:0] AXI_25_RRESP; + output AXI_25_RVALID; + output AXI_25_WREADY; + output AXI_26_ARREADY; + output AXI_26_AWREADY; + output [5:0] AXI_26_BID; + output [1:0] AXI_26_BRESP; + output AXI_26_BVALID; + output [1:0] AXI_26_DFI_AW_AERR_N; + output AXI_26_DFI_CLK_BUF; + output [7:0] AXI_26_DFI_DBI_BYTE_DISABLE; + output [20:0] AXI_26_DFI_DW_RDDATA_DBI; + output [7:0] AXI_26_DFI_DW_RDDATA_DERR; + output [1:0] AXI_26_DFI_DW_RDDATA_VALID; + output AXI_26_DFI_INIT_COMPLETE; + output AXI_26_DFI_PHYUPD_REQ; + output AXI_26_DFI_PHY_LP_STATE; + output AXI_26_DFI_RST_N_BUF; + output [5:0] AXI_26_MC_STATUS; + output [7:0] AXI_26_PHY_STATUS; + output [255:0] AXI_26_RDATA; + output [31:0] AXI_26_RDATA_PARITY; + output [5:0] AXI_26_RID; + output AXI_26_RLAST; + output [1:0] AXI_26_RRESP; + output AXI_26_RVALID; + output AXI_26_WREADY; + output AXI_27_ARREADY; + output AXI_27_AWREADY; + output [5:0] AXI_27_BID; + output [1:0] AXI_27_BRESP; + output AXI_27_BVALID; + output [1:0] AXI_27_DFI_AW_AERR_N; + output AXI_27_DFI_CLK_BUF; + output [7:0] AXI_27_DFI_DBI_BYTE_DISABLE; + output [20:0] AXI_27_DFI_DW_RDDATA_DBI; + output [7:0] AXI_27_DFI_DW_RDDATA_DERR; + output [1:0] AXI_27_DFI_DW_RDDATA_VALID; + output AXI_27_DFI_INIT_COMPLETE; + output AXI_27_DFI_PHYUPD_REQ; + output AXI_27_DFI_PHY_LP_STATE; + output AXI_27_DFI_RST_N_BUF; + output [255:0] AXI_27_RDATA; + output [31:0] AXI_27_RDATA_PARITY; + output [5:0] AXI_27_RID; + output AXI_27_RLAST; + output [1:0] AXI_27_RRESP; + output AXI_27_RVALID; + output AXI_27_WREADY; + output AXI_28_ARREADY; + output AXI_28_AWREADY; + output [5:0] AXI_28_BID; + output [1:0] AXI_28_BRESP; + output AXI_28_BVALID; + output [1:0] AXI_28_DFI_AW_AERR_N; + output AXI_28_DFI_CLK_BUF; + output [7:0] AXI_28_DFI_DBI_BYTE_DISABLE; + output [20:0] AXI_28_DFI_DW_RDDATA_DBI; + output [7:0] AXI_28_DFI_DW_RDDATA_DERR; + output [1:0] AXI_28_DFI_DW_RDDATA_VALID; + output AXI_28_DFI_INIT_COMPLETE; + output AXI_28_DFI_PHYUPD_REQ; + output AXI_28_DFI_PHY_LP_STATE; + output AXI_28_DFI_RST_N_BUF; + output [5:0] AXI_28_MC_STATUS; + output [7:0] AXI_28_PHY_STATUS; + output [255:0] AXI_28_RDATA; + output [31:0] AXI_28_RDATA_PARITY; + output [5:0] AXI_28_RID; + output AXI_28_RLAST; + output [1:0] AXI_28_RRESP; + output AXI_28_RVALID; + output AXI_28_WREADY; + output AXI_29_ARREADY; + output AXI_29_AWREADY; + output [5:0] AXI_29_BID; + output [1:0] AXI_29_BRESP; + output AXI_29_BVALID; + output [1:0] AXI_29_DFI_AW_AERR_N; + output AXI_29_DFI_CLK_BUF; + output [7:0] AXI_29_DFI_DBI_BYTE_DISABLE; + output [20:0] AXI_29_DFI_DW_RDDATA_DBI; + output [7:0] AXI_29_DFI_DW_RDDATA_DERR; + output [1:0] AXI_29_DFI_DW_RDDATA_VALID; + output AXI_29_DFI_INIT_COMPLETE; + output AXI_29_DFI_PHYUPD_REQ; + output AXI_29_DFI_PHY_LP_STATE; + output AXI_29_DFI_RST_N_BUF; + output [255:0] AXI_29_RDATA; + output [31:0] AXI_29_RDATA_PARITY; + output [5:0] AXI_29_RID; + output AXI_29_RLAST; + output [1:0] AXI_29_RRESP; + output AXI_29_RVALID; + output AXI_29_WREADY; + output AXI_30_ARREADY; + output AXI_30_AWREADY; + output [5:0] AXI_30_BID; + output [1:0] AXI_30_BRESP; + output AXI_30_BVALID; + output [1:0] AXI_30_DFI_AW_AERR_N; + output AXI_30_DFI_CLK_BUF; + output [7:0] AXI_30_DFI_DBI_BYTE_DISABLE; + output [20:0] AXI_30_DFI_DW_RDDATA_DBI; + output [7:0] AXI_30_DFI_DW_RDDATA_DERR; + output [1:0] AXI_30_DFI_DW_RDDATA_VALID; + output AXI_30_DFI_INIT_COMPLETE; + output AXI_30_DFI_PHYUPD_REQ; + output AXI_30_DFI_PHY_LP_STATE; + output AXI_30_DFI_RST_N_BUF; + output [5:0] AXI_30_MC_STATUS; + output [7:0] AXI_30_PHY_STATUS; + output [255:0] AXI_30_RDATA; + output [31:0] AXI_30_RDATA_PARITY; + output [5:0] AXI_30_RID; + output AXI_30_RLAST; + output [1:0] AXI_30_RRESP; + output AXI_30_RVALID; + output AXI_30_WREADY; + output AXI_31_ARREADY; + output AXI_31_AWREADY; + output [5:0] AXI_31_BID; + output [1:0] AXI_31_BRESP; + output AXI_31_BVALID; + output [1:0] AXI_31_DFI_AW_AERR_N; + output AXI_31_DFI_CLK_BUF; + output [7:0] AXI_31_DFI_DBI_BYTE_DISABLE; + output [20:0] AXI_31_DFI_DW_RDDATA_DBI; + output [7:0] AXI_31_DFI_DW_RDDATA_DERR; + output [1:0] AXI_31_DFI_DW_RDDATA_VALID; + output AXI_31_DFI_INIT_COMPLETE; + output AXI_31_DFI_PHYUPD_REQ; + output AXI_31_DFI_PHY_LP_STATE; + output AXI_31_DFI_RST_N_BUF; + output [255:0] AXI_31_RDATA; + output [31:0] AXI_31_RDATA_PARITY; + output [5:0] AXI_31_RID; + output AXI_31_RLAST; + output [1:0] AXI_31_RRESP; + output AXI_31_RVALID; + output AXI_31_WREADY; + output DRAM_0_STAT_CATTRIP; + output [2:0] DRAM_0_STAT_TEMP; + output DRAM_1_STAT_CATTRIP; + output [2:0] DRAM_1_STAT_TEMP; + input [21:0] APB_0_PADDR; + (* invertible_pin = "IS_APB_0_PCLK_INVERTED" *) + input APB_0_PCLK; + input APB_0_PENABLE; + (* invertible_pin = "IS_APB_0_PRESET_N_INVERTED" *) + input APB_0_PRESET_N; + input APB_0_PSEL; + input [31:0] APB_0_PWDATA; + input APB_0_PWRITE; + input [21:0] APB_1_PADDR; + (* invertible_pin = "IS_APB_1_PCLK_INVERTED" *) + input APB_1_PCLK; + input APB_1_PENABLE; + (* invertible_pin = "IS_APB_1_PRESET_N_INVERTED" *) + input APB_1_PRESET_N; + input APB_1_PSEL; + input [31:0] APB_1_PWDATA; + input APB_1_PWRITE; + (* invertible_pin = "IS_AXI_00_ACLK_INVERTED" *) + input AXI_00_ACLK; + input [36:0] AXI_00_ARADDR; + input [1:0] AXI_00_ARBURST; + (* invertible_pin = "IS_AXI_00_ARESET_N_INVERTED" *) + input AXI_00_ARESET_N; + input [5:0] AXI_00_ARID; + input [3:0] AXI_00_ARLEN; + input [2:0] AXI_00_ARSIZE; + input AXI_00_ARVALID; + input [36:0] AXI_00_AWADDR; + input [1:0] AXI_00_AWBURST; + input [5:0] AXI_00_AWID; + input [3:0] AXI_00_AWLEN; + input [2:0] AXI_00_AWSIZE; + input AXI_00_AWVALID; + input AXI_00_BREADY; + input AXI_00_DFI_LP_PWR_X_REQ; + input AXI_00_RREADY; + input [255:0] AXI_00_WDATA; + input [31:0] AXI_00_WDATA_PARITY; + input AXI_00_WLAST; + input [31:0] AXI_00_WSTRB; + input AXI_00_WVALID; + (* invertible_pin = "IS_AXI_01_ACLK_INVERTED" *) + input AXI_01_ACLK; + input [36:0] AXI_01_ARADDR; + input [1:0] AXI_01_ARBURST; + (* invertible_pin = "IS_AXI_01_ARESET_N_INVERTED" *) + input AXI_01_ARESET_N; + input [5:0] AXI_01_ARID; + input [3:0] AXI_01_ARLEN; + input [2:0] AXI_01_ARSIZE; + input AXI_01_ARVALID; + input [36:0] AXI_01_AWADDR; + input [1:0] AXI_01_AWBURST; + input [5:0] AXI_01_AWID; + input [3:0] AXI_01_AWLEN; + input [2:0] AXI_01_AWSIZE; + input AXI_01_AWVALID; + input AXI_01_BREADY; + input AXI_01_DFI_LP_PWR_X_REQ; + input AXI_01_RREADY; + input [255:0] AXI_01_WDATA; + input [31:0] AXI_01_WDATA_PARITY; + input AXI_01_WLAST; + input [31:0] AXI_01_WSTRB; + input AXI_01_WVALID; + (* invertible_pin = "IS_AXI_02_ACLK_INVERTED" *) + input AXI_02_ACLK; + input [36:0] AXI_02_ARADDR; + input [1:0] AXI_02_ARBURST; + (* invertible_pin = "IS_AXI_02_ARESET_N_INVERTED" *) + input AXI_02_ARESET_N; + input [5:0] AXI_02_ARID; + input [3:0] AXI_02_ARLEN; + input [2:0] AXI_02_ARSIZE; + input AXI_02_ARVALID; + input [36:0] AXI_02_AWADDR; + input [1:0] AXI_02_AWBURST; + input [5:0] AXI_02_AWID; + input [3:0] AXI_02_AWLEN; + input [2:0] AXI_02_AWSIZE; + input AXI_02_AWVALID; + input AXI_02_BREADY; + input AXI_02_DFI_LP_PWR_X_REQ; + input AXI_02_RREADY; + input [255:0] AXI_02_WDATA; + input [31:0] AXI_02_WDATA_PARITY; + input AXI_02_WLAST; + input [31:0] AXI_02_WSTRB; + input AXI_02_WVALID; + (* invertible_pin = "IS_AXI_03_ACLK_INVERTED" *) + input AXI_03_ACLK; + input [36:0] AXI_03_ARADDR; + input [1:0] AXI_03_ARBURST; + (* invertible_pin = "IS_AXI_03_ARESET_N_INVERTED" *) + input AXI_03_ARESET_N; + input [5:0] AXI_03_ARID; + input [3:0] AXI_03_ARLEN; + input [2:0] AXI_03_ARSIZE; + input AXI_03_ARVALID; + input [36:0] AXI_03_AWADDR; + input [1:0] AXI_03_AWBURST; + input [5:0] AXI_03_AWID; + input [3:0] AXI_03_AWLEN; + input [2:0] AXI_03_AWSIZE; + input AXI_03_AWVALID; + input AXI_03_BREADY; + input AXI_03_DFI_LP_PWR_X_REQ; + input AXI_03_RREADY; + input [255:0] AXI_03_WDATA; + input [31:0] AXI_03_WDATA_PARITY; + input AXI_03_WLAST; + input [31:0] AXI_03_WSTRB; + input AXI_03_WVALID; + (* invertible_pin = "IS_AXI_04_ACLK_INVERTED" *) + input AXI_04_ACLK; + input [36:0] AXI_04_ARADDR; + input [1:0] AXI_04_ARBURST; + (* invertible_pin = "IS_AXI_04_ARESET_N_INVERTED" *) + input AXI_04_ARESET_N; + input [5:0] AXI_04_ARID; + input [3:0] AXI_04_ARLEN; + input [2:0] AXI_04_ARSIZE; + input AXI_04_ARVALID; + input [36:0] AXI_04_AWADDR; + input [1:0] AXI_04_AWBURST; + input [5:0] AXI_04_AWID; + input [3:0] AXI_04_AWLEN; + input [2:0] AXI_04_AWSIZE; + input AXI_04_AWVALID; + input AXI_04_BREADY; + input AXI_04_DFI_LP_PWR_X_REQ; + input AXI_04_RREADY; + input [255:0] AXI_04_WDATA; + input [31:0] AXI_04_WDATA_PARITY; + input AXI_04_WLAST; + input [31:0] AXI_04_WSTRB; + input AXI_04_WVALID; + (* invertible_pin = "IS_AXI_05_ACLK_INVERTED" *) + input AXI_05_ACLK; + input [36:0] AXI_05_ARADDR; + input [1:0] AXI_05_ARBURST; + (* invertible_pin = "IS_AXI_05_ARESET_N_INVERTED" *) + input AXI_05_ARESET_N; + input [5:0] AXI_05_ARID; + input [3:0] AXI_05_ARLEN; + input [2:0] AXI_05_ARSIZE; + input AXI_05_ARVALID; + input [36:0] AXI_05_AWADDR; + input [1:0] AXI_05_AWBURST; + input [5:0] AXI_05_AWID; + input [3:0] AXI_05_AWLEN; + input [2:0] AXI_05_AWSIZE; + input AXI_05_AWVALID; + input AXI_05_BREADY; + input AXI_05_DFI_LP_PWR_X_REQ; + input AXI_05_RREADY; + input [255:0] AXI_05_WDATA; + input [31:0] AXI_05_WDATA_PARITY; + input AXI_05_WLAST; + input [31:0] AXI_05_WSTRB; + input AXI_05_WVALID; + (* invertible_pin = "IS_AXI_06_ACLK_INVERTED" *) + input AXI_06_ACLK; + input [36:0] AXI_06_ARADDR; + input [1:0] AXI_06_ARBURST; + (* invertible_pin = "IS_AXI_06_ARESET_N_INVERTED" *) + input AXI_06_ARESET_N; + input [5:0] AXI_06_ARID; + input [3:0] AXI_06_ARLEN; + input [2:0] AXI_06_ARSIZE; + input AXI_06_ARVALID; + input [36:0] AXI_06_AWADDR; + input [1:0] AXI_06_AWBURST; + input [5:0] AXI_06_AWID; + input [3:0] AXI_06_AWLEN; + input [2:0] AXI_06_AWSIZE; + input AXI_06_AWVALID; + input AXI_06_BREADY; + input AXI_06_DFI_LP_PWR_X_REQ; + input AXI_06_RREADY; + input [255:0] AXI_06_WDATA; + input [31:0] AXI_06_WDATA_PARITY; + input AXI_06_WLAST; + input [31:0] AXI_06_WSTRB; + input AXI_06_WVALID; + (* invertible_pin = "IS_AXI_07_ACLK_INVERTED" *) + input AXI_07_ACLK; + input [36:0] AXI_07_ARADDR; + input [1:0] AXI_07_ARBURST; + (* invertible_pin = "IS_AXI_07_ARESET_N_INVERTED" *) + input AXI_07_ARESET_N; + input [5:0] AXI_07_ARID; + input [3:0] AXI_07_ARLEN; + input [2:0] AXI_07_ARSIZE; + input AXI_07_ARVALID; + input [36:0] AXI_07_AWADDR; + input [1:0] AXI_07_AWBURST; + input [5:0] AXI_07_AWID; + input [3:0] AXI_07_AWLEN; + input [2:0] AXI_07_AWSIZE; + input AXI_07_AWVALID; + input AXI_07_BREADY; + input AXI_07_DFI_LP_PWR_X_REQ; + input AXI_07_RREADY; + input [255:0] AXI_07_WDATA; + input [31:0] AXI_07_WDATA_PARITY; + input AXI_07_WLAST; + input [31:0] AXI_07_WSTRB; + input AXI_07_WVALID; + (* invertible_pin = "IS_AXI_08_ACLK_INVERTED" *) + input AXI_08_ACLK; + input [36:0] AXI_08_ARADDR; + input [1:0] AXI_08_ARBURST; + (* invertible_pin = "IS_AXI_08_ARESET_N_INVERTED" *) + input AXI_08_ARESET_N; + input [5:0] AXI_08_ARID; + input [3:0] AXI_08_ARLEN; + input [2:0] AXI_08_ARSIZE; + input AXI_08_ARVALID; + input [36:0] AXI_08_AWADDR; + input [1:0] AXI_08_AWBURST; + input [5:0] AXI_08_AWID; + input [3:0] AXI_08_AWLEN; + input [2:0] AXI_08_AWSIZE; + input AXI_08_AWVALID; + input AXI_08_BREADY; + input AXI_08_DFI_LP_PWR_X_REQ; + input AXI_08_RREADY; + input [255:0] AXI_08_WDATA; + input [31:0] AXI_08_WDATA_PARITY; + input AXI_08_WLAST; + input [31:0] AXI_08_WSTRB; + input AXI_08_WVALID; + (* invertible_pin = "IS_AXI_09_ACLK_INVERTED" *) + input AXI_09_ACLK; + input [36:0] AXI_09_ARADDR; + input [1:0] AXI_09_ARBURST; + (* invertible_pin = "IS_AXI_09_ARESET_N_INVERTED" *) + input AXI_09_ARESET_N; + input [5:0] AXI_09_ARID; + input [3:0] AXI_09_ARLEN; + input [2:0] AXI_09_ARSIZE; + input AXI_09_ARVALID; + input [36:0] AXI_09_AWADDR; + input [1:0] AXI_09_AWBURST; + input [5:0] AXI_09_AWID; + input [3:0] AXI_09_AWLEN; + input [2:0] AXI_09_AWSIZE; + input AXI_09_AWVALID; + input AXI_09_BREADY; + input AXI_09_DFI_LP_PWR_X_REQ; + input AXI_09_RREADY; + input [255:0] AXI_09_WDATA; + input [31:0] AXI_09_WDATA_PARITY; + input AXI_09_WLAST; + input [31:0] AXI_09_WSTRB; + input AXI_09_WVALID; + (* invertible_pin = "IS_AXI_10_ACLK_INVERTED" *) + input AXI_10_ACLK; + input [36:0] AXI_10_ARADDR; + input [1:0] AXI_10_ARBURST; + (* invertible_pin = "IS_AXI_10_ARESET_N_INVERTED" *) + input AXI_10_ARESET_N; + input [5:0] AXI_10_ARID; + input [3:0] AXI_10_ARLEN; + input [2:0] AXI_10_ARSIZE; + input AXI_10_ARVALID; + input [36:0] AXI_10_AWADDR; + input [1:0] AXI_10_AWBURST; + input [5:0] AXI_10_AWID; + input [3:0] AXI_10_AWLEN; + input [2:0] AXI_10_AWSIZE; + input AXI_10_AWVALID; + input AXI_10_BREADY; + input AXI_10_DFI_LP_PWR_X_REQ; + input AXI_10_RREADY; + input [255:0] AXI_10_WDATA; + input [31:0] AXI_10_WDATA_PARITY; + input AXI_10_WLAST; + input [31:0] AXI_10_WSTRB; + input AXI_10_WVALID; + (* invertible_pin = "IS_AXI_11_ACLK_INVERTED" *) + input AXI_11_ACLK; + input [36:0] AXI_11_ARADDR; + input [1:0] AXI_11_ARBURST; + (* invertible_pin = "IS_AXI_11_ARESET_N_INVERTED" *) + input AXI_11_ARESET_N; + input [5:0] AXI_11_ARID; + input [3:0] AXI_11_ARLEN; + input [2:0] AXI_11_ARSIZE; + input AXI_11_ARVALID; + input [36:0] AXI_11_AWADDR; + input [1:0] AXI_11_AWBURST; + input [5:0] AXI_11_AWID; + input [3:0] AXI_11_AWLEN; + input [2:0] AXI_11_AWSIZE; + input AXI_11_AWVALID; + input AXI_11_BREADY; + input AXI_11_DFI_LP_PWR_X_REQ; + input AXI_11_RREADY; + input [255:0] AXI_11_WDATA; + input [31:0] AXI_11_WDATA_PARITY; + input AXI_11_WLAST; + input [31:0] AXI_11_WSTRB; + input AXI_11_WVALID; + (* invertible_pin = "IS_AXI_12_ACLK_INVERTED" *) + input AXI_12_ACLK; + input [36:0] AXI_12_ARADDR; + input [1:0] AXI_12_ARBURST; + (* invertible_pin = "IS_AXI_12_ARESET_N_INVERTED" *) + input AXI_12_ARESET_N; + input [5:0] AXI_12_ARID; + input [3:0] AXI_12_ARLEN; + input [2:0] AXI_12_ARSIZE; + input AXI_12_ARVALID; + input [36:0] AXI_12_AWADDR; + input [1:0] AXI_12_AWBURST; + input [5:0] AXI_12_AWID; + input [3:0] AXI_12_AWLEN; + input [2:0] AXI_12_AWSIZE; + input AXI_12_AWVALID; + input AXI_12_BREADY; + input AXI_12_DFI_LP_PWR_X_REQ; + input AXI_12_RREADY; + input [255:0] AXI_12_WDATA; + input [31:0] AXI_12_WDATA_PARITY; + input AXI_12_WLAST; + input [31:0] AXI_12_WSTRB; + input AXI_12_WVALID; + (* invertible_pin = "IS_AXI_13_ACLK_INVERTED" *) + input AXI_13_ACLK; + input [36:0] AXI_13_ARADDR; + input [1:0] AXI_13_ARBURST; + (* invertible_pin = "IS_AXI_13_ARESET_N_INVERTED" *) + input AXI_13_ARESET_N; + input [5:0] AXI_13_ARID; + input [3:0] AXI_13_ARLEN; + input [2:0] AXI_13_ARSIZE; + input AXI_13_ARVALID; + input [36:0] AXI_13_AWADDR; + input [1:0] AXI_13_AWBURST; + input [5:0] AXI_13_AWID; + input [3:0] AXI_13_AWLEN; + input [2:0] AXI_13_AWSIZE; + input AXI_13_AWVALID; + input AXI_13_BREADY; + input AXI_13_DFI_LP_PWR_X_REQ; + input AXI_13_RREADY; + input [255:0] AXI_13_WDATA; + input [31:0] AXI_13_WDATA_PARITY; + input AXI_13_WLAST; + input [31:0] AXI_13_WSTRB; + input AXI_13_WVALID; + (* invertible_pin = "IS_AXI_14_ACLK_INVERTED" *) + input AXI_14_ACLK; + input [36:0] AXI_14_ARADDR; + input [1:0] AXI_14_ARBURST; + (* invertible_pin = "IS_AXI_14_ARESET_N_INVERTED" *) + input AXI_14_ARESET_N; + input [5:0] AXI_14_ARID; + input [3:0] AXI_14_ARLEN; + input [2:0] AXI_14_ARSIZE; + input AXI_14_ARVALID; + input [36:0] AXI_14_AWADDR; + input [1:0] AXI_14_AWBURST; + input [5:0] AXI_14_AWID; + input [3:0] AXI_14_AWLEN; + input [2:0] AXI_14_AWSIZE; + input AXI_14_AWVALID; + input AXI_14_BREADY; + input AXI_14_DFI_LP_PWR_X_REQ; + input AXI_14_RREADY; + input [255:0] AXI_14_WDATA; + input [31:0] AXI_14_WDATA_PARITY; + input AXI_14_WLAST; + input [31:0] AXI_14_WSTRB; + input AXI_14_WVALID; + (* invertible_pin = "IS_AXI_15_ACLK_INVERTED" *) + input AXI_15_ACLK; + input [36:0] AXI_15_ARADDR; + input [1:0] AXI_15_ARBURST; + (* invertible_pin = "IS_AXI_15_ARESET_N_INVERTED" *) + input AXI_15_ARESET_N; + input [5:0] AXI_15_ARID; + input [3:0] AXI_15_ARLEN; + input [2:0] AXI_15_ARSIZE; + input AXI_15_ARVALID; + input [36:0] AXI_15_AWADDR; + input [1:0] AXI_15_AWBURST; + input [5:0] AXI_15_AWID; + input [3:0] AXI_15_AWLEN; + input [2:0] AXI_15_AWSIZE; + input AXI_15_AWVALID; + input AXI_15_BREADY; + input AXI_15_DFI_LP_PWR_X_REQ; + input AXI_15_RREADY; + input [255:0] AXI_15_WDATA; + input [31:0] AXI_15_WDATA_PARITY; + input AXI_15_WLAST; + input [31:0] AXI_15_WSTRB; + input AXI_15_WVALID; + (* invertible_pin = "IS_AXI_16_ACLK_INVERTED" *) + input AXI_16_ACLK; + input [36:0] AXI_16_ARADDR; + input [1:0] AXI_16_ARBURST; + (* invertible_pin = "IS_AXI_16_ARESET_N_INVERTED" *) + input AXI_16_ARESET_N; + input [5:0] AXI_16_ARID; + input [3:0] AXI_16_ARLEN; + input [2:0] AXI_16_ARSIZE; + input AXI_16_ARVALID; + input [36:0] AXI_16_AWADDR; + input [1:0] AXI_16_AWBURST; + input [5:0] AXI_16_AWID; + input [3:0] AXI_16_AWLEN; + input [2:0] AXI_16_AWSIZE; + input AXI_16_AWVALID; + input AXI_16_BREADY; + input AXI_16_DFI_LP_PWR_X_REQ; + input AXI_16_RREADY; + input [255:0] AXI_16_WDATA; + input [31:0] AXI_16_WDATA_PARITY; + input AXI_16_WLAST; + input [31:0] AXI_16_WSTRB; + input AXI_16_WVALID; + (* invertible_pin = "IS_AXI_17_ACLK_INVERTED" *) + input AXI_17_ACLK; + input [36:0] AXI_17_ARADDR; + input [1:0] AXI_17_ARBURST; + (* invertible_pin = "IS_AXI_17_ARESET_N_INVERTED" *) + input AXI_17_ARESET_N; + input [5:0] AXI_17_ARID; + input [3:0] AXI_17_ARLEN; + input [2:0] AXI_17_ARSIZE; + input AXI_17_ARVALID; + input [36:0] AXI_17_AWADDR; + input [1:0] AXI_17_AWBURST; + input [5:0] AXI_17_AWID; + input [3:0] AXI_17_AWLEN; + input [2:0] AXI_17_AWSIZE; + input AXI_17_AWVALID; + input AXI_17_BREADY; + input AXI_17_DFI_LP_PWR_X_REQ; + input AXI_17_RREADY; + input [255:0] AXI_17_WDATA; + input [31:0] AXI_17_WDATA_PARITY; + input AXI_17_WLAST; + input [31:0] AXI_17_WSTRB; + input AXI_17_WVALID; + (* invertible_pin = "IS_AXI_18_ACLK_INVERTED" *) + input AXI_18_ACLK; + input [36:0] AXI_18_ARADDR; + input [1:0] AXI_18_ARBURST; + (* invertible_pin = "IS_AXI_18_ARESET_N_INVERTED" *) + input AXI_18_ARESET_N; + input [5:0] AXI_18_ARID; + input [3:0] AXI_18_ARLEN; + input [2:0] AXI_18_ARSIZE; + input AXI_18_ARVALID; + input [36:0] AXI_18_AWADDR; + input [1:0] AXI_18_AWBURST; + input [5:0] AXI_18_AWID; + input [3:0] AXI_18_AWLEN; + input [2:0] AXI_18_AWSIZE; + input AXI_18_AWVALID; + input AXI_18_BREADY; + input AXI_18_DFI_LP_PWR_X_REQ; + input AXI_18_RREADY; + input [255:0] AXI_18_WDATA; + input [31:0] AXI_18_WDATA_PARITY; + input AXI_18_WLAST; + input [31:0] AXI_18_WSTRB; + input AXI_18_WVALID; + (* invertible_pin = "IS_AXI_19_ACLK_INVERTED" *) + input AXI_19_ACLK; + input [36:0] AXI_19_ARADDR; + input [1:0] AXI_19_ARBURST; + (* invertible_pin = "IS_AXI_19_ARESET_N_INVERTED" *) + input AXI_19_ARESET_N; + input [5:0] AXI_19_ARID; + input [3:0] AXI_19_ARLEN; + input [2:0] AXI_19_ARSIZE; + input AXI_19_ARVALID; + input [36:0] AXI_19_AWADDR; + input [1:0] AXI_19_AWBURST; + input [5:0] AXI_19_AWID; + input [3:0] AXI_19_AWLEN; + input [2:0] AXI_19_AWSIZE; + input AXI_19_AWVALID; + input AXI_19_BREADY; + input AXI_19_DFI_LP_PWR_X_REQ; + input AXI_19_RREADY; + input [255:0] AXI_19_WDATA; + input [31:0] AXI_19_WDATA_PARITY; + input AXI_19_WLAST; + input [31:0] AXI_19_WSTRB; + input AXI_19_WVALID; + (* invertible_pin = "IS_AXI_20_ACLK_INVERTED" *) + input AXI_20_ACLK; + input [36:0] AXI_20_ARADDR; + input [1:0] AXI_20_ARBURST; + (* invertible_pin = "IS_AXI_20_ARESET_N_INVERTED" *) + input AXI_20_ARESET_N; + input [5:0] AXI_20_ARID; + input [3:0] AXI_20_ARLEN; + input [2:0] AXI_20_ARSIZE; + input AXI_20_ARVALID; + input [36:0] AXI_20_AWADDR; + input [1:0] AXI_20_AWBURST; + input [5:0] AXI_20_AWID; + input [3:0] AXI_20_AWLEN; + input [2:0] AXI_20_AWSIZE; + input AXI_20_AWVALID; + input AXI_20_BREADY; + input AXI_20_DFI_LP_PWR_X_REQ; + input AXI_20_RREADY; + input [255:0] AXI_20_WDATA; + input [31:0] AXI_20_WDATA_PARITY; + input AXI_20_WLAST; + input [31:0] AXI_20_WSTRB; + input AXI_20_WVALID; + (* invertible_pin = "IS_AXI_21_ACLK_INVERTED" *) + input AXI_21_ACLK; + input [36:0] AXI_21_ARADDR; + input [1:0] AXI_21_ARBURST; + (* invertible_pin = "IS_AXI_21_ARESET_N_INVERTED" *) + input AXI_21_ARESET_N; + input [5:0] AXI_21_ARID; + input [3:0] AXI_21_ARLEN; + input [2:0] AXI_21_ARSIZE; + input AXI_21_ARVALID; + input [36:0] AXI_21_AWADDR; + input [1:0] AXI_21_AWBURST; + input [5:0] AXI_21_AWID; + input [3:0] AXI_21_AWLEN; + input [2:0] AXI_21_AWSIZE; + input AXI_21_AWVALID; + input AXI_21_BREADY; + input AXI_21_DFI_LP_PWR_X_REQ; + input AXI_21_RREADY; + input [255:0] AXI_21_WDATA; + input [31:0] AXI_21_WDATA_PARITY; + input AXI_21_WLAST; + input [31:0] AXI_21_WSTRB; + input AXI_21_WVALID; + (* invertible_pin = "IS_AXI_22_ACLK_INVERTED" *) + input AXI_22_ACLK; + input [36:0] AXI_22_ARADDR; + input [1:0] AXI_22_ARBURST; + (* invertible_pin = "IS_AXI_22_ARESET_N_INVERTED" *) + input AXI_22_ARESET_N; + input [5:0] AXI_22_ARID; + input [3:0] AXI_22_ARLEN; + input [2:0] AXI_22_ARSIZE; + input AXI_22_ARVALID; + input [36:0] AXI_22_AWADDR; + input [1:0] AXI_22_AWBURST; + input [5:0] AXI_22_AWID; + input [3:0] AXI_22_AWLEN; + input [2:0] AXI_22_AWSIZE; + input AXI_22_AWVALID; + input AXI_22_BREADY; + input AXI_22_DFI_LP_PWR_X_REQ; + input AXI_22_RREADY; + input [255:0] AXI_22_WDATA; + input [31:0] AXI_22_WDATA_PARITY; + input AXI_22_WLAST; + input [31:0] AXI_22_WSTRB; + input AXI_22_WVALID; + (* invertible_pin = "IS_AXI_23_ACLK_INVERTED" *) + input AXI_23_ACLK; + input [36:0] AXI_23_ARADDR; + input [1:0] AXI_23_ARBURST; + (* invertible_pin = "IS_AXI_23_ARESET_N_INVERTED" *) + input AXI_23_ARESET_N; + input [5:0] AXI_23_ARID; + input [3:0] AXI_23_ARLEN; + input [2:0] AXI_23_ARSIZE; + input AXI_23_ARVALID; + input [36:0] AXI_23_AWADDR; + input [1:0] AXI_23_AWBURST; + input [5:0] AXI_23_AWID; + input [3:0] AXI_23_AWLEN; + input [2:0] AXI_23_AWSIZE; + input AXI_23_AWVALID; + input AXI_23_BREADY; + input AXI_23_DFI_LP_PWR_X_REQ; + input AXI_23_RREADY; + input [255:0] AXI_23_WDATA; + input [31:0] AXI_23_WDATA_PARITY; + input AXI_23_WLAST; + input [31:0] AXI_23_WSTRB; + input AXI_23_WVALID; + (* invertible_pin = "IS_AXI_24_ACLK_INVERTED" *) + input AXI_24_ACLK; + input [36:0] AXI_24_ARADDR; + input [1:0] AXI_24_ARBURST; + (* invertible_pin = "IS_AXI_24_ARESET_N_INVERTED" *) + input AXI_24_ARESET_N; + input [5:0] AXI_24_ARID; + input [3:0] AXI_24_ARLEN; + input [2:0] AXI_24_ARSIZE; + input AXI_24_ARVALID; + input [36:0] AXI_24_AWADDR; + input [1:0] AXI_24_AWBURST; + input [5:0] AXI_24_AWID; + input [3:0] AXI_24_AWLEN; + input [2:0] AXI_24_AWSIZE; + input AXI_24_AWVALID; + input AXI_24_BREADY; + input AXI_24_DFI_LP_PWR_X_REQ; + input AXI_24_RREADY; + input [255:0] AXI_24_WDATA; + input [31:0] AXI_24_WDATA_PARITY; + input AXI_24_WLAST; + input [31:0] AXI_24_WSTRB; + input AXI_24_WVALID; + (* invertible_pin = "IS_AXI_25_ACLK_INVERTED" *) + input AXI_25_ACLK; + input [36:0] AXI_25_ARADDR; + input [1:0] AXI_25_ARBURST; + (* invertible_pin = "IS_AXI_25_ARESET_N_INVERTED" *) + input AXI_25_ARESET_N; + input [5:0] AXI_25_ARID; + input [3:0] AXI_25_ARLEN; + input [2:0] AXI_25_ARSIZE; + input AXI_25_ARVALID; + input [36:0] AXI_25_AWADDR; + input [1:0] AXI_25_AWBURST; + input [5:0] AXI_25_AWID; + input [3:0] AXI_25_AWLEN; + input [2:0] AXI_25_AWSIZE; + input AXI_25_AWVALID; + input AXI_25_BREADY; + input AXI_25_DFI_LP_PWR_X_REQ; + input AXI_25_RREADY; + input [255:0] AXI_25_WDATA; + input [31:0] AXI_25_WDATA_PARITY; + input AXI_25_WLAST; + input [31:0] AXI_25_WSTRB; + input AXI_25_WVALID; + (* invertible_pin = "IS_AXI_26_ACLK_INVERTED" *) + input AXI_26_ACLK; + input [36:0] AXI_26_ARADDR; + input [1:0] AXI_26_ARBURST; + (* invertible_pin = "IS_AXI_26_ARESET_N_INVERTED" *) + input AXI_26_ARESET_N; + input [5:0] AXI_26_ARID; + input [3:0] AXI_26_ARLEN; + input [2:0] AXI_26_ARSIZE; + input AXI_26_ARVALID; + input [36:0] AXI_26_AWADDR; + input [1:0] AXI_26_AWBURST; + input [5:0] AXI_26_AWID; + input [3:0] AXI_26_AWLEN; + input [2:0] AXI_26_AWSIZE; + input AXI_26_AWVALID; + input AXI_26_BREADY; + input AXI_26_DFI_LP_PWR_X_REQ; + input AXI_26_RREADY; + input [255:0] AXI_26_WDATA; + input [31:0] AXI_26_WDATA_PARITY; + input AXI_26_WLAST; + input [31:0] AXI_26_WSTRB; + input AXI_26_WVALID; + (* invertible_pin = "IS_AXI_27_ACLK_INVERTED" *) + input AXI_27_ACLK; + input [36:0] AXI_27_ARADDR; + input [1:0] AXI_27_ARBURST; + (* invertible_pin = "IS_AXI_27_ARESET_N_INVERTED" *) + input AXI_27_ARESET_N; + input [5:0] AXI_27_ARID; + input [3:0] AXI_27_ARLEN; + input [2:0] AXI_27_ARSIZE; + input AXI_27_ARVALID; + input [36:0] AXI_27_AWADDR; + input [1:0] AXI_27_AWBURST; + input [5:0] AXI_27_AWID; + input [3:0] AXI_27_AWLEN; + input [2:0] AXI_27_AWSIZE; + input AXI_27_AWVALID; + input AXI_27_BREADY; + input AXI_27_DFI_LP_PWR_X_REQ; + input AXI_27_RREADY; + input [255:0] AXI_27_WDATA; + input [31:0] AXI_27_WDATA_PARITY; + input AXI_27_WLAST; + input [31:0] AXI_27_WSTRB; + input AXI_27_WVALID; + (* invertible_pin = "IS_AXI_28_ACLK_INVERTED" *) + input AXI_28_ACLK; + input [36:0] AXI_28_ARADDR; + input [1:0] AXI_28_ARBURST; + (* invertible_pin = "IS_AXI_28_ARESET_N_INVERTED" *) + input AXI_28_ARESET_N; + input [5:0] AXI_28_ARID; + input [3:0] AXI_28_ARLEN; + input [2:0] AXI_28_ARSIZE; + input AXI_28_ARVALID; + input [36:0] AXI_28_AWADDR; + input [1:0] AXI_28_AWBURST; + input [5:0] AXI_28_AWID; + input [3:0] AXI_28_AWLEN; + input [2:0] AXI_28_AWSIZE; + input AXI_28_AWVALID; + input AXI_28_BREADY; + input AXI_28_DFI_LP_PWR_X_REQ; + input AXI_28_RREADY; + input [255:0] AXI_28_WDATA; + input [31:0] AXI_28_WDATA_PARITY; + input AXI_28_WLAST; + input [31:0] AXI_28_WSTRB; + input AXI_28_WVALID; + (* invertible_pin = "IS_AXI_29_ACLK_INVERTED" *) + input AXI_29_ACLK; + input [36:0] AXI_29_ARADDR; + input [1:0] AXI_29_ARBURST; + (* invertible_pin = "IS_AXI_29_ARESET_N_INVERTED" *) + input AXI_29_ARESET_N; + input [5:0] AXI_29_ARID; + input [3:0] AXI_29_ARLEN; + input [2:0] AXI_29_ARSIZE; + input AXI_29_ARVALID; + input [36:0] AXI_29_AWADDR; + input [1:0] AXI_29_AWBURST; + input [5:0] AXI_29_AWID; + input [3:0] AXI_29_AWLEN; + input [2:0] AXI_29_AWSIZE; + input AXI_29_AWVALID; + input AXI_29_BREADY; + input AXI_29_DFI_LP_PWR_X_REQ; + input AXI_29_RREADY; + input [255:0] AXI_29_WDATA; + input [31:0] AXI_29_WDATA_PARITY; + input AXI_29_WLAST; + input [31:0] AXI_29_WSTRB; + input AXI_29_WVALID; + (* invertible_pin = "IS_AXI_30_ACLK_INVERTED" *) + input AXI_30_ACLK; + input [36:0] AXI_30_ARADDR; + input [1:0] AXI_30_ARBURST; + (* invertible_pin = "IS_AXI_30_ARESET_N_INVERTED" *) + input AXI_30_ARESET_N; + input [5:0] AXI_30_ARID; + input [3:0] AXI_30_ARLEN; + input [2:0] AXI_30_ARSIZE; + input AXI_30_ARVALID; + input [36:0] AXI_30_AWADDR; + input [1:0] AXI_30_AWBURST; + input [5:0] AXI_30_AWID; + input [3:0] AXI_30_AWLEN; + input [2:0] AXI_30_AWSIZE; + input AXI_30_AWVALID; + input AXI_30_BREADY; + input AXI_30_DFI_LP_PWR_X_REQ; + input AXI_30_RREADY; + input [255:0] AXI_30_WDATA; + input [31:0] AXI_30_WDATA_PARITY; + input AXI_30_WLAST; + input [31:0] AXI_30_WSTRB; + input AXI_30_WVALID; + (* invertible_pin = "IS_AXI_31_ACLK_INVERTED" *) + input AXI_31_ACLK; + input [36:0] AXI_31_ARADDR; + input [1:0] AXI_31_ARBURST; + (* invertible_pin = "IS_AXI_31_ARESET_N_INVERTED" *) + input AXI_31_ARESET_N; + input [5:0] AXI_31_ARID; + input [3:0] AXI_31_ARLEN; + input [2:0] AXI_31_ARSIZE; + input AXI_31_ARVALID; + input [36:0] AXI_31_AWADDR; + input [1:0] AXI_31_AWBURST; + input [5:0] AXI_31_AWID; + input [3:0] AXI_31_AWLEN; + input [2:0] AXI_31_AWSIZE; + input AXI_31_AWVALID; + input AXI_31_BREADY; + input AXI_31_DFI_LP_PWR_X_REQ; + input AXI_31_RREADY; + input [255:0] AXI_31_WDATA; + input [31:0] AXI_31_WDATA_PARITY; + input AXI_31_WLAST; + input [31:0] AXI_31_WSTRB; + input AXI_31_WVALID; + input BSCAN_DRCK_0; + input BSCAN_DRCK_1; + input BSCAN_TCK_0; + input BSCAN_TCK_1; + input HBM_REF_CLK_0; + input HBM_REF_CLK_1; + input MBIST_EN_00; + input MBIST_EN_01; + input MBIST_EN_02; + input MBIST_EN_03; + input MBIST_EN_04; + input MBIST_EN_05; + input MBIST_EN_06; + input MBIST_EN_07; + input MBIST_EN_08; + input MBIST_EN_09; + input MBIST_EN_10; + input MBIST_EN_11; + input MBIST_EN_12; + input MBIST_EN_13; + input MBIST_EN_14; + input MBIST_EN_15; +endmodule + +module PPC405_ADV (...); + parameter in_delay=100; + parameter out_delay=100; + output APUFCMDECODED; + output APUFCMDECUDIVALID; + output APUFCMENDIAN; + output APUFCMFLUSH; + output APUFCMINSTRVALID; + output APUFCMLOADDVALID; + output APUFCMOPERANDVALID; + output APUFCMWRITEBACKOK; + output APUFCMXERCA; + output C405CPMCORESLEEPREQ; + output C405CPMMSRCE; + output C405CPMMSREE; + output C405CPMTIMERIRQ; + output C405CPMTIMERRESETREQ; + output C405DBGLOADDATAONAPUDBUS; + output C405DBGMSRWE; + output C405DBGSTOPACK; + output C405DBGWBCOMPLETE; + output C405DBGWBFULL; + output C405JTGCAPTUREDR; + output C405JTGEXTEST; + output C405JTGPGMOUT; + output C405JTGSHIFTDR; + output C405JTGTDO; + output C405JTGTDOEN; + output C405JTGUPDATEDR; + output C405PLBDCUABORT; + output C405PLBDCUCACHEABLE; + output C405PLBDCUGUARDED; + output C405PLBDCUREQUEST; + output C405PLBDCURNW; + output C405PLBDCUSIZE2; + output C405PLBDCUU0ATTR; + output C405PLBDCUWRITETHRU; + output C405PLBICUABORT; + output C405PLBICUCACHEABLE; + output C405PLBICUREQUEST; + output C405PLBICUU0ATTR; + output C405RSTCHIPRESETREQ; + output C405RSTCORERESETREQ; + output C405RSTSYSRESETREQ; + output C405TRCCYCLE; + output C405TRCTRIGGEREVENTOUT; + output C405XXXMACHINECHECK; + output DCREMACCLK; + output DCREMACENABLER; + output DCREMACREAD; + output DCREMACWRITE; + output DSOCMBRAMEN; + output DSOCMBUSY; + output DSOCMRDADDRVALID; + output DSOCMWRADDRVALID; + output EXTDCRREAD; + output EXTDCRWRITE; + output ISOCMBRAMEN; + output ISOCMBRAMEVENWRITEEN; + output ISOCMBRAMODDWRITEEN; + output ISOCMDCRBRAMEVENEN; + output ISOCMDCRBRAMODDEN; + output ISOCMDCRBRAMRDSELECT; + output [0:10] C405TRCTRIGGEREVENTTYPE; + output [0:1] C405PLBDCUPRIORITY; + output [0:1] C405PLBICUPRIORITY; + output [0:1] C405TRCEVENEXECUTIONSTATUS; + output [0:1] C405TRCODDEXECUTIONSTATUS; + output [0:29] C405DBGWBIAR; + output [0:29] C405PLBICUABUS; + output [0:2] APUFCMDECUDI; + output [0:31] APUFCMINSTRUCTION; + output [0:31] APUFCMLOADDATA; + output [0:31] APUFCMRADATA; + output [0:31] APUFCMRBDATA; + output [0:31] C405PLBDCUABUS; + output [0:31] DCREMACDBUS; + output [0:31] DSOCMBRAMWRDBUS; + output [0:31] EXTDCRDBUSOUT; + output [0:31] ISOCMBRAMWRDBUS; + output [0:3] APUFCMLOADBYTEEN; + output [0:3] C405TRCTRACESTATUS; + output [0:3] DSOCMBRAMBYTEWRITE; + output [0:63] C405PLBDCUWRDBUS; + output [0:7] C405PLBDCUBE; + output [0:9] EXTDCRABUS; + output [2:3] C405PLBICUSIZE; + output [8:28] ISOCMBRAMRDABUS; + output [8:28] ISOCMBRAMWRABUS; + output [8:29] DSOCMBRAMABUS; + output [8:9] DCREMACABUS; + input BRAMDSOCMCLK; + input BRAMISOCMCLK; + input CPMC405CLOCK; + input CPMC405CORECLKINACTIVE; + input CPMC405CPUCLKEN; + input CPMC405JTAGCLKEN; + input CPMC405SYNCBYPASS; + input CPMC405TIMERCLKEN; + input CPMC405TIMERTICK; + input CPMDCRCLK; + input CPMFCMCLK; + input DBGC405DEBUGHALT; + input DBGC405EXTBUSHOLDACK; + input DBGC405UNCONDDEBUGEVENT; + input DSOCMRWCOMPLETE; + input EICC405CRITINPUTIRQ; + input EICC405EXTINPUTIRQ; + input EMACDCRACK; + input EXTDCRACK; + input FCMAPUDCDCREN; + input FCMAPUDCDFORCEALIGN; + input FCMAPUDCDFORCEBESTEERING; + input FCMAPUDCDFPUOP; + input FCMAPUDCDGPRWRITE; + input FCMAPUDCDLDSTBYTE; + input FCMAPUDCDLDSTDW; + input FCMAPUDCDLDSTHW; + input FCMAPUDCDLDSTQW; + input FCMAPUDCDLDSTWD; + input FCMAPUDCDLOAD; + input FCMAPUDCDPRIVOP; + input FCMAPUDCDRAEN; + input FCMAPUDCDRBEN; + input FCMAPUDCDSTORE; + input FCMAPUDCDTRAPBE; + input FCMAPUDCDTRAPLE; + input FCMAPUDCDUPDATE; + input FCMAPUDCDXERCAEN; + input FCMAPUDCDXEROVEN; + input FCMAPUDECODEBUSY; + input FCMAPUDONE; + input FCMAPUEXCEPTION; + input FCMAPUEXEBLOCKINGMCO; + input FCMAPUEXENONBLOCKINGMCO; + input FCMAPUINSTRACK; + input FCMAPULOADWAIT; + input FCMAPURESULTVALID; + input FCMAPUSLEEPNOTREADY; + input FCMAPUXERCA; + input FCMAPUXEROV; + input JTGC405BNDSCANTDO; + input JTGC405TCK; + input JTGC405TDI; + input JTGC405TMS; + input JTGC405TRSTNEG; + input MCBCPUCLKEN; + input MCBJTAGEN; + input MCBTIMEREN; + input MCPPCRST; + input PLBC405DCUADDRACK; + input PLBC405DCUBUSY; + input PLBC405DCUERR; + input PLBC405DCURDDACK; + input PLBC405DCUSSIZE1; + input PLBC405DCUWRDACK; + input PLBC405ICUADDRACK; + input PLBC405ICUBUSY; + input PLBC405ICUERR; + input PLBC405ICURDDACK; + input PLBC405ICUSSIZE1; + input PLBCLK; + input RSTC405RESETCHIP; + input RSTC405RESETCORE; + input RSTC405RESETSYS; + input TIEC405DETERMINISTICMULT; + input TIEC405DISOPERANDFWD; + input TIEC405MMUEN; + input TIEPVRBIT10; + input TIEPVRBIT11; + input TIEPVRBIT28; + input TIEPVRBIT29; + input TIEPVRBIT30; + input TIEPVRBIT31; + input TIEPVRBIT8; + input TIEPVRBIT9; + input TRCC405TRACEDISABLE; + input TRCC405TRIGGEREVENTIN; + input [0:15] TIEAPUCONTROL; + input [0:23] TIEAPUUDI1; + input [0:23] TIEAPUUDI2; + input [0:23] TIEAPUUDI3; + input [0:23] TIEAPUUDI4; + input [0:23] TIEAPUUDI5; + input [0:23] TIEAPUUDI6; + input [0:23] TIEAPUUDI7; + input [0:23] TIEAPUUDI8; + input [0:2] FCMAPUEXECRFIELD; + input [0:31] BRAMDSOCMRDDBUS; + input [0:31] BRAMISOCMDCRRDDBUS; + input [0:31] EMACDCRDBUS; + input [0:31] EXTDCRDBUSIN; + input [0:31] FCMAPURESULT; + input [0:3] FCMAPUCR; + input [0:5] TIEDCRADDR; + input [0:63] BRAMISOCMRDDBUS; + input [0:63] PLBC405DCURDDBUS; + input [0:63] PLBC405ICURDDBUS; + input [0:7] DSARCVALUE; + input [0:7] DSCNTLVALUE; + input [0:7] ISARCVALUE; + input [0:7] ISCNTLVALUE; + input [1:3] PLBC405DCURDWDADDR; + input [1:3] PLBC405ICURDWDADDR; +endmodule + +module PPC440 (...); + parameter CLOCK_DELAY = "FALSE"; + parameter DCR_AUTOLOCK_ENABLE = "TRUE"; + parameter PPCDM_ASYNCMODE = "FALSE"; + parameter PPCDS_ASYNCMODE = "FALSE"; + parameter PPCS0_WIDTH_128N64 = "TRUE"; + parameter PPCS1_WIDTH_128N64 = "TRUE"; + parameter [0:16] APU_CONTROL = 17'h02000; + parameter [0:23] APU_UDI0 = 24'h000000; + parameter [0:23] APU_UDI1 = 24'h000000; + parameter [0:23] APU_UDI10 = 24'h000000; + parameter [0:23] APU_UDI11 = 24'h000000; + parameter [0:23] APU_UDI12 = 24'h000000; + parameter [0:23] APU_UDI13 = 24'h000000; + parameter [0:23] APU_UDI14 = 24'h000000; + parameter [0:23] APU_UDI15 = 24'h000000; + parameter [0:23] APU_UDI2 = 24'h000000; + parameter [0:23] APU_UDI3 = 24'h000000; + parameter [0:23] APU_UDI4 = 24'h000000; + parameter [0:23] APU_UDI5 = 24'h000000; + parameter [0:23] APU_UDI6 = 24'h000000; + parameter [0:23] APU_UDI7 = 24'h000000; + parameter [0:23] APU_UDI8 = 24'h000000; + parameter [0:23] APU_UDI9 = 24'h000000; + parameter [0:31] DMA0_RXCHANNELCTRL = 32'h01010000; + parameter [0:31] DMA0_TXCHANNELCTRL = 32'h01010000; + parameter [0:31] DMA1_RXCHANNELCTRL = 32'h01010000; + parameter [0:31] DMA1_TXCHANNELCTRL = 32'h01010000; + parameter [0:31] DMA2_RXCHANNELCTRL = 32'h01010000; + parameter [0:31] DMA2_TXCHANNELCTRL = 32'h01010000; + parameter [0:31] DMA3_RXCHANNELCTRL = 32'h01010000; + parameter [0:31] DMA3_TXCHANNELCTRL = 32'h01010000; + parameter [0:31] INTERCONNECT_IMASK = 32'hFFFFFFFF; + parameter [0:31] INTERCONNECT_TMPL_SEL = 32'h3FFFFFFF; + parameter [0:31] MI_ARBCONFIG = 32'h00432010; + parameter [0:31] MI_BANKCONFLICT_MASK = 32'h00000000; + parameter [0:31] MI_CONTROL = 32'h0000008F; + parameter [0:31] MI_ROWCONFLICT_MASK = 32'h00000000; + parameter [0:31] PPCM_ARBCONFIG = 32'h00432010; + parameter [0:31] PPCM_CONTROL = 32'h8000019F; + parameter [0:31] PPCM_COUNTER = 32'h00000500; + parameter [0:31] PPCS0_ADDRMAP_TMPL0 = 32'hFFFFFFFF; + parameter [0:31] PPCS0_ADDRMAP_TMPL1 = 32'hFFFFFFFF; + parameter [0:31] PPCS0_ADDRMAP_TMPL2 = 32'hFFFFFFFF; + parameter [0:31] PPCS0_ADDRMAP_TMPL3 = 32'hFFFFFFFF; + parameter [0:31] PPCS0_CONTROL = 32'h8033336C; + parameter [0:31] PPCS1_ADDRMAP_TMPL0 = 32'hFFFFFFFF; + parameter [0:31] PPCS1_ADDRMAP_TMPL1 = 32'hFFFFFFFF; + parameter [0:31] PPCS1_ADDRMAP_TMPL2 = 32'hFFFFFFFF; + parameter [0:31] PPCS1_ADDRMAP_TMPL3 = 32'hFFFFFFFF; + parameter [0:31] PPCS1_CONTROL = 32'h8033336C; + parameter [0:31] XBAR_ADDRMAP_TMPL0 = 32'hFFFF0000; + parameter [0:31] XBAR_ADDRMAP_TMPL1 = 32'h00000000; + parameter [0:31] XBAR_ADDRMAP_TMPL2 = 32'h00000000; + parameter [0:31] XBAR_ADDRMAP_TMPL3 = 32'h00000000; + parameter [0:7] DMA0_CONTROL = 8'h00; + parameter [0:7] DMA1_CONTROL = 8'h00; + parameter [0:7] DMA2_CONTROL = 8'h00; + parameter [0:7] DMA3_CONTROL = 8'h00; + parameter [0:9] DMA0_RXIRQTIMER = 10'h3FF; + parameter [0:9] DMA0_TXIRQTIMER = 10'h3FF; + parameter [0:9] DMA1_RXIRQTIMER = 10'h3FF; + parameter [0:9] DMA1_TXIRQTIMER = 10'h3FF; + parameter [0:9] DMA2_RXIRQTIMER = 10'h3FF; + parameter [0:9] DMA2_TXIRQTIMER = 10'h3FF; + parameter [0:9] DMA3_RXIRQTIMER = 10'h3FF; + parameter [0:9] DMA3_TXIRQTIMER = 10'h3FF; + output APUFCMDECFPUOP; + output APUFCMDECLOAD; + output APUFCMDECNONAUTON; + output APUFCMDECSTORE; + output APUFCMDECUDIVALID; + output APUFCMENDIAN; + output APUFCMFLUSH; + output APUFCMINSTRVALID; + output APUFCMLOADDVALID; + output APUFCMMSRFE0; + output APUFCMMSRFE1; + output APUFCMNEXTINSTRREADY; + output APUFCMOPERANDVALID; + output APUFCMWRITEBACKOK; + output C440CPMCORESLEEPREQ; + output C440CPMDECIRPTREQ; + output C440CPMFITIRPTREQ; + output C440CPMMSRCE; + output C440CPMMSREE; + output C440CPMTIMERRESETREQ; + output C440CPMWDIRPTREQ; + output C440JTGTDO; + output C440JTGTDOEN; + output C440MACHINECHECK; + output C440RSTCHIPRESETREQ; + output C440RSTCORERESETREQ; + output C440RSTSYSTEMRESETREQ; + output C440TRCCYCLE; + output C440TRCTRIGGEREVENTOUT; + output DMA0LLRSTENGINEACK; + output DMA0LLRXDSTRDYN; + output DMA0LLTXEOFN; + output DMA0LLTXEOPN; + output DMA0LLTXSOFN; + output DMA0LLTXSOPN; + output DMA0LLTXSRCRDYN; + output DMA0RXIRQ; + output DMA0TXIRQ; + output DMA1LLRSTENGINEACK; + output DMA1LLRXDSTRDYN; + output DMA1LLTXEOFN; + output DMA1LLTXEOPN; + output DMA1LLTXSOFN; + output DMA1LLTXSOPN; + output DMA1LLTXSRCRDYN; + output DMA1RXIRQ; + output DMA1TXIRQ; + output DMA2LLRSTENGINEACK; + output DMA2LLRXDSTRDYN; + output DMA2LLTXEOFN; + output DMA2LLTXEOPN; + output DMA2LLTXSOFN; + output DMA2LLTXSOPN; + output DMA2LLTXSRCRDYN; + output DMA2RXIRQ; + output DMA2TXIRQ; + output DMA3LLRSTENGINEACK; + output DMA3LLRXDSTRDYN; + output DMA3LLTXEOFN; + output DMA3LLTXEOPN; + output DMA3LLTXSOFN; + output DMA3LLTXSOPN; + output DMA3LLTXSRCRDYN; + output DMA3RXIRQ; + output DMA3TXIRQ; + output MIMCADDRESSVALID; + output MIMCBANKCONFLICT; + output MIMCREADNOTWRITE; + output MIMCROWCONFLICT; + output MIMCWRITEDATAVALID; + output PPCCPMINTERCONNECTBUSY; + output PPCDMDCRREAD; + output PPCDMDCRWRITE; + output PPCDSDCRACK; + output PPCDSDCRTIMEOUTWAIT; + output PPCEICINTERCONNECTIRQ; + output PPCMPLBABORT; + output PPCMPLBBUSLOCK; + output PPCMPLBLOCKERR; + output PPCMPLBRDBURST; + output PPCMPLBREQUEST; + output PPCMPLBRNW; + output PPCMPLBWRBURST; + output PPCS0PLBADDRACK; + output PPCS0PLBRDBTERM; + output PPCS0PLBRDCOMP; + output PPCS0PLBRDDACK; + output PPCS0PLBREARBITRATE; + output PPCS0PLBWAIT; + output PPCS0PLBWRBTERM; + output PPCS0PLBWRCOMP; + output PPCS0PLBWRDACK; + output PPCS1PLBADDRACK; + output PPCS1PLBRDBTERM; + output PPCS1PLBRDCOMP; + output PPCS1PLBRDDACK; + output PPCS1PLBREARBITRATE; + output PPCS1PLBWAIT; + output PPCS1PLBWRBTERM; + output PPCS1PLBWRCOMP; + output PPCS1PLBWRDACK; + output [0:127] APUFCMLOADDATA; + output [0:127] MIMCWRITEDATA; + output [0:127] PPCMPLBWRDBUS; + output [0:127] PPCS0PLBRDDBUS; + output [0:127] PPCS1PLBRDDBUS; + output [0:13] C440TRCTRIGGEREVENTTYPE; + output [0:15] MIMCBYTEENABLE; + output [0:15] PPCMPLBBE; + output [0:15] PPCMPLBTATTRIBUTE; + output [0:1] PPCMPLBPRIORITY; + output [0:1] PPCS0PLBSSIZE; + output [0:1] PPCS1PLBSSIZE; + output [0:2] APUFCMDECLDSTXFERSIZE; + output [0:2] C440TRCBRANCHSTATUS; + output [0:2] PPCMPLBTYPE; + output [0:31] APUFCMINSTRUCTION; + output [0:31] APUFCMRADATA; + output [0:31] APUFCMRBDATA; + output [0:31] DMA0LLTXD; + output [0:31] DMA1LLTXD; + output [0:31] DMA2LLTXD; + output [0:31] DMA3LLTXD; + output [0:31] PPCDMDCRDBUSOUT; + output [0:31] PPCDSDCRDBUSIN; + output [0:31] PPCMPLBABUS; + output [0:35] MIMCADDRESS; + output [0:3] APUFCMDECUDI; + output [0:3] APUFCMLOADBYTEADDR; + output [0:3] DMA0LLTXREM; + output [0:3] DMA1LLTXREM; + output [0:3] DMA2LLTXREM; + output [0:3] DMA3LLTXREM; + output [0:3] PPCMPLBSIZE; + output [0:3] PPCS0PLBMBUSY; + output [0:3] PPCS0PLBMIRQ; + output [0:3] PPCS0PLBMRDERR; + output [0:3] PPCS0PLBMWRERR; + output [0:3] PPCS0PLBRDWDADDR; + output [0:3] PPCS1PLBMBUSY; + output [0:3] PPCS1PLBMIRQ; + output [0:3] PPCS1PLBMRDERR; + output [0:3] PPCS1PLBMWRERR; + output [0:3] PPCS1PLBRDWDADDR; + output [0:4] C440TRCEXECUTIONSTATUS; + output [0:6] C440TRCTRACESTATUS; + output [0:7] C440DBGSYSTEMCONTROL; + output [0:9] PPCDMDCRABUS; + output [20:21] PPCDMDCRUABUS; + output [28:31] PPCMPLBUABUS; + input CPMC440CLK; + input CPMC440CLKEN; + input CPMC440CORECLOCKINACTIVE; + input CPMC440TIMERCLOCK; + input CPMDCRCLK; + input CPMDMA0LLCLK; + input CPMDMA1LLCLK; + input CPMDMA2LLCLK; + input CPMDMA3LLCLK; + input CPMFCMCLK; + input CPMINTERCONNECTCLK; + input CPMINTERCONNECTCLKEN; + input CPMINTERCONNECTCLKNTO1; + input CPMMCCLK; + input CPMPPCMPLBCLK; + input CPMPPCS0PLBCLK; + input CPMPPCS1PLBCLK; + input DBGC440DEBUGHALT; + input DBGC440UNCONDDEBUGEVENT; + input DCRPPCDMACK; + input DCRPPCDMTIMEOUTWAIT; + input DCRPPCDSREAD; + input DCRPPCDSWRITE; + input EICC440CRITIRQ; + input EICC440EXTIRQ; + input FCMAPUCONFIRMINSTR; + input FCMAPUDONE; + input FCMAPUEXCEPTION; + input FCMAPUFPSCRFEX; + input FCMAPURESULTVALID; + input FCMAPUSLEEPNOTREADY; + input JTGC440TCK; + input JTGC440TDI; + input JTGC440TMS; + input JTGC440TRSTNEG; + input LLDMA0RSTENGINEREQ; + input LLDMA0RXEOFN; + input LLDMA0RXEOPN; + input LLDMA0RXSOFN; + input LLDMA0RXSOPN; + input LLDMA0RXSRCRDYN; + input LLDMA0TXDSTRDYN; + input LLDMA1RSTENGINEREQ; + input LLDMA1RXEOFN; + input LLDMA1RXEOPN; + input LLDMA1RXSOFN; + input LLDMA1RXSOPN; + input LLDMA1RXSRCRDYN; + input LLDMA1TXDSTRDYN; + input LLDMA2RSTENGINEREQ; + input LLDMA2RXEOFN; + input LLDMA2RXEOPN; + input LLDMA2RXSOFN; + input LLDMA2RXSOPN; + input LLDMA2RXSRCRDYN; + input LLDMA2TXDSTRDYN; + input LLDMA3RSTENGINEREQ; + input LLDMA3RXEOFN; + input LLDMA3RXEOPN; + input LLDMA3RXSOFN; + input LLDMA3RXSOPN; + input LLDMA3RXSRCRDYN; + input LLDMA3TXDSTRDYN; + input MCMIADDRREADYTOACCEPT; + input MCMIREADDATAERR; + input MCMIREADDATAVALID; + input PLBPPCMADDRACK; + input PLBPPCMMBUSY; + input PLBPPCMMIRQ; + input PLBPPCMMRDERR; + input PLBPPCMMWRERR; + input PLBPPCMRDBTERM; + input PLBPPCMRDDACK; + input PLBPPCMRDPENDREQ; + input PLBPPCMREARBITRATE; + input PLBPPCMTIMEOUT; + input PLBPPCMWRBTERM; + input PLBPPCMWRDACK; + input PLBPPCMWRPENDREQ; + input PLBPPCS0ABORT; + input PLBPPCS0BUSLOCK; + input PLBPPCS0LOCKERR; + input PLBPPCS0PAVALID; + input PLBPPCS0RDBURST; + input PLBPPCS0RDPENDREQ; + input PLBPPCS0RDPRIM; + input PLBPPCS0RNW; + input PLBPPCS0SAVALID; + input PLBPPCS0WRBURST; + input PLBPPCS0WRPENDREQ; + input PLBPPCS0WRPRIM; + input PLBPPCS1ABORT; + input PLBPPCS1BUSLOCK; + input PLBPPCS1LOCKERR; + input PLBPPCS1PAVALID; + input PLBPPCS1RDBURST; + input PLBPPCS1RDPENDREQ; + input PLBPPCS1RDPRIM; + input PLBPPCS1RNW; + input PLBPPCS1SAVALID; + input PLBPPCS1WRBURST; + input PLBPPCS1WRPENDREQ; + input PLBPPCS1WRPRIM; + input RSTC440RESETCHIP; + input RSTC440RESETCORE; + input RSTC440RESETSYSTEM; + input TIEC440ENDIANRESET; + input TRCC440TRACEDISABLE; + input TRCC440TRIGGEREVENTIN; + input [0:127] FCMAPUSTOREDATA; + input [0:127] MCMIREADDATA; + input [0:127] PLBPPCMRDDBUS; + input [0:127] PLBPPCS0WRDBUS; + input [0:127] PLBPPCS1WRDBUS; + input [0:15] PLBPPCS0BE; + input [0:15] PLBPPCS0TATTRIBUTE; + input [0:15] PLBPPCS1BE; + input [0:15] PLBPPCS1TATTRIBUTE; + input [0:1] PLBPPCMRDPENDPRI; + input [0:1] PLBPPCMREQPRI; + input [0:1] PLBPPCMSSIZE; + input [0:1] PLBPPCMWRPENDPRI; + input [0:1] PLBPPCS0MASTERID; + input [0:1] PLBPPCS0MSIZE; + input [0:1] PLBPPCS0RDPENDPRI; + input [0:1] PLBPPCS0REQPRI; + input [0:1] PLBPPCS0WRPENDPRI; + input [0:1] PLBPPCS1MASTERID; + input [0:1] PLBPPCS1MSIZE; + input [0:1] PLBPPCS1RDPENDPRI; + input [0:1] PLBPPCS1REQPRI; + input [0:1] PLBPPCS1WRPENDPRI; + input [0:1] TIEC440DCURDLDCACHEPLBPRIO; + input [0:1] TIEC440DCURDNONCACHEPLBPRIO; + input [0:1] TIEC440DCURDTOUCHPLBPRIO; + input [0:1] TIEC440DCURDURGENTPLBPRIO; + input [0:1] TIEC440DCUWRFLUSHPLBPRIO; + input [0:1] TIEC440DCUWRSTOREPLBPRIO; + input [0:1] TIEC440DCUWRURGENTPLBPRIO; + input [0:1] TIEC440ICURDFETCHPLBPRIO; + input [0:1] TIEC440ICURDSPECPLBPRIO; + input [0:1] TIEC440ICURDTOUCHPLBPRIO; + input [0:1] TIEDCRBASEADDR; + input [0:2] PLBPPCS0TYPE; + input [0:2] PLBPPCS1TYPE; + input [0:31] DCRPPCDMDBUSIN; + input [0:31] DCRPPCDSDBUSOUT; + input [0:31] FCMAPURESULT; + input [0:31] LLDMA0RXD; + input [0:31] LLDMA1RXD; + input [0:31] LLDMA2RXD; + input [0:31] LLDMA3RXD; + input [0:31] PLBPPCS0ABUS; + input [0:31] PLBPPCS1ABUS; + input [0:3] FCMAPUCR; + input [0:3] LLDMA0RXREM; + input [0:3] LLDMA1RXREM; + input [0:3] LLDMA2RXREM; + input [0:3] LLDMA3RXREM; + input [0:3] PLBPPCMRDWDADDR; + input [0:3] PLBPPCS0SIZE; + input [0:3] PLBPPCS1SIZE; + input [0:3] TIEC440ERPNRESET; + input [0:3] TIEC440USERRESET; + input [0:4] DBGC440SYSTEMSTATUS; + input [0:9] DCRPPCDSABUS; + input [28:31] PLBPPCS0UABUS; + input [28:31] PLBPPCS1UABUS; + input [28:31] TIEC440PIR; + input [28:31] TIEC440PVR; +endmodule + +(* keep *) +module PS7 (...); + output DMA0DAVALID; + output DMA0DRREADY; + output DMA0RSTN; + output DMA1DAVALID; + output DMA1DRREADY; + output DMA1RSTN; + output DMA2DAVALID; + output DMA2DRREADY; + output DMA2RSTN; + output DMA3DAVALID; + output DMA3DRREADY; + output DMA3RSTN; + output EMIOCAN0PHYTX; + output EMIOCAN1PHYTX; + output EMIOENET0GMIITXEN; + output EMIOENET0GMIITXER; + output EMIOENET0MDIOMDC; + output EMIOENET0MDIOO; + output EMIOENET0MDIOTN; + output EMIOENET0PTPDELAYREQRX; + output EMIOENET0PTPDELAYREQTX; + output EMIOENET0PTPPDELAYREQRX; + output EMIOENET0PTPPDELAYREQTX; + output EMIOENET0PTPPDELAYRESPRX; + output EMIOENET0PTPPDELAYRESPTX; + output EMIOENET0PTPSYNCFRAMERX; + output EMIOENET0PTPSYNCFRAMETX; + output EMIOENET0SOFRX; + output EMIOENET0SOFTX; + output EMIOENET1GMIITXEN; + output EMIOENET1GMIITXER; + output EMIOENET1MDIOMDC; + output EMIOENET1MDIOO; + output EMIOENET1MDIOTN; + output EMIOENET1PTPDELAYREQRX; + output EMIOENET1PTPDELAYREQTX; + output EMIOENET1PTPPDELAYREQRX; + output EMIOENET1PTPPDELAYREQTX; + output EMIOENET1PTPPDELAYRESPRX; + output EMIOENET1PTPPDELAYRESPTX; + output EMIOENET1PTPSYNCFRAMERX; + output EMIOENET1PTPSYNCFRAMETX; + output EMIOENET1SOFRX; + output EMIOENET1SOFTX; + output EMIOI2C0SCLO; + output EMIOI2C0SCLTN; + output EMIOI2C0SDAO; + output EMIOI2C0SDATN; + output EMIOI2C1SCLO; + output EMIOI2C1SCLTN; + output EMIOI2C1SDAO; + output EMIOI2C1SDATN; + output EMIOPJTAGTDO; + output EMIOPJTAGTDTN; + output EMIOSDIO0BUSPOW; + output EMIOSDIO0CLK; + output EMIOSDIO0CMDO; + output EMIOSDIO0CMDTN; + output EMIOSDIO0LED; + output EMIOSDIO1BUSPOW; + output EMIOSDIO1CLK; + output EMIOSDIO1CMDO; + output EMIOSDIO1CMDTN; + output EMIOSDIO1LED; + output EMIOSPI0MO; + output EMIOSPI0MOTN; + output EMIOSPI0SCLKO; + output EMIOSPI0SCLKTN; + output EMIOSPI0SO; + output EMIOSPI0SSNTN; + output EMIOSPI0STN; + output EMIOSPI1MO; + output EMIOSPI1MOTN; + output EMIOSPI1SCLKO; + output EMIOSPI1SCLKTN; + output EMIOSPI1SO; + output EMIOSPI1SSNTN; + output EMIOSPI1STN; + output EMIOTRACECTL; + output EMIOUART0DTRN; + output EMIOUART0RTSN; + output EMIOUART0TX; + output EMIOUART1DTRN; + output EMIOUART1RTSN; + output EMIOUART1TX; + output EMIOUSB0VBUSPWRSELECT; + output EMIOUSB1VBUSPWRSELECT; + output EMIOWDTRSTO; + output EVENTEVENTO; + output MAXIGP0ARESETN; + output MAXIGP0ARVALID; + output MAXIGP0AWVALID; + output MAXIGP0BREADY; + output MAXIGP0RREADY; + output MAXIGP0WLAST; + output MAXIGP0WVALID; + output MAXIGP1ARESETN; + output MAXIGP1ARVALID; + output MAXIGP1AWVALID; + output MAXIGP1BREADY; + output MAXIGP1RREADY; + output MAXIGP1WLAST; + output MAXIGP1WVALID; + output SAXIACPARESETN; + output SAXIACPARREADY; + output SAXIACPAWREADY; + output SAXIACPBVALID; + output SAXIACPRLAST; + output SAXIACPRVALID; + output SAXIACPWREADY; + output SAXIGP0ARESETN; + output SAXIGP0ARREADY; + output SAXIGP0AWREADY; + output SAXIGP0BVALID; + output SAXIGP0RLAST; + output SAXIGP0RVALID; + output SAXIGP0WREADY; + output SAXIGP1ARESETN; + output SAXIGP1ARREADY; + output SAXIGP1AWREADY; + output SAXIGP1BVALID; + output SAXIGP1RLAST; + output SAXIGP1RVALID; + output SAXIGP1WREADY; + output SAXIHP0ARESETN; + output SAXIHP0ARREADY; + output SAXIHP0AWREADY; + output SAXIHP0BVALID; + output SAXIHP0RLAST; + output SAXIHP0RVALID; + output SAXIHP0WREADY; + output SAXIHP1ARESETN; + output SAXIHP1ARREADY; + output SAXIHP1AWREADY; + output SAXIHP1BVALID; + output SAXIHP1RLAST; + output SAXIHP1RVALID; + output SAXIHP1WREADY; + output SAXIHP2ARESETN; + output SAXIHP2ARREADY; + output SAXIHP2AWREADY; + output SAXIHP2BVALID; + output SAXIHP2RLAST; + output SAXIHP2RVALID; + output SAXIHP2WREADY; + output SAXIHP3ARESETN; + output SAXIHP3ARREADY; + output SAXIHP3AWREADY; + output SAXIHP3BVALID; + output SAXIHP3RLAST; + output SAXIHP3RVALID; + output SAXIHP3WREADY; + output [11:0] MAXIGP0ARID; + output [11:0] MAXIGP0AWID; + output [11:0] MAXIGP0WID; + output [11:0] MAXIGP1ARID; + output [11:0] MAXIGP1AWID; + output [11:0] MAXIGP1WID; + output [1:0] DMA0DATYPE; + output [1:0] DMA1DATYPE; + output [1:0] DMA2DATYPE; + output [1:0] DMA3DATYPE; + output [1:0] EMIOUSB0PORTINDCTL; + output [1:0] EMIOUSB1PORTINDCTL; + output [1:0] EVENTSTANDBYWFE; + output [1:0] EVENTSTANDBYWFI; + output [1:0] MAXIGP0ARBURST; + output [1:0] MAXIGP0ARLOCK; + output [1:0] MAXIGP0ARSIZE; + output [1:0] MAXIGP0AWBURST; + output [1:0] MAXIGP0AWLOCK; + output [1:0] MAXIGP0AWSIZE; + output [1:0] MAXIGP1ARBURST; + output [1:0] MAXIGP1ARLOCK; + output [1:0] MAXIGP1ARSIZE; + output [1:0] MAXIGP1AWBURST; + output [1:0] MAXIGP1AWLOCK; + output [1:0] MAXIGP1AWSIZE; + output [1:0] SAXIACPBRESP; + output [1:0] SAXIACPRRESP; + output [1:0] SAXIGP0BRESP; + output [1:0] SAXIGP0RRESP; + output [1:0] SAXIGP1BRESP; + output [1:0] SAXIGP1RRESP; + output [1:0] SAXIHP0BRESP; + output [1:0] SAXIHP0RRESP; + output [1:0] SAXIHP1BRESP; + output [1:0] SAXIHP1RRESP; + output [1:0] SAXIHP2BRESP; + output [1:0] SAXIHP2RRESP; + output [1:0] SAXIHP3BRESP; + output [1:0] SAXIHP3RRESP; + output [28:0] IRQP2F; + output [2:0] EMIOSDIO0BUSVOLT; + output [2:0] EMIOSDIO1BUSVOLT; + output [2:0] EMIOSPI0SSON; + output [2:0] EMIOSPI1SSON; + output [2:0] EMIOTTC0WAVEO; + output [2:0] EMIOTTC1WAVEO; + output [2:0] MAXIGP0ARPROT; + output [2:0] MAXIGP0AWPROT; + output [2:0] MAXIGP1ARPROT; + output [2:0] MAXIGP1AWPROT; + output [2:0] SAXIACPBID; + output [2:0] SAXIACPRID; + output [2:0] SAXIHP0RACOUNT; + output [2:0] SAXIHP1RACOUNT; + output [2:0] SAXIHP2RACOUNT; + output [2:0] SAXIHP3RACOUNT; + output [31:0] EMIOTRACEDATA; + output [31:0] FTMTP2FDEBUG; + output [31:0] MAXIGP0ARADDR; + output [31:0] MAXIGP0AWADDR; + output [31:0] MAXIGP0WDATA; + output [31:0] MAXIGP1ARADDR; + output [31:0] MAXIGP1AWADDR; + output [31:0] MAXIGP1WDATA; + output [31:0] SAXIGP0RDATA; + output [31:0] SAXIGP1RDATA; + output [3:0] EMIOSDIO0DATAO; + output [3:0] EMIOSDIO0DATATN; + output [3:0] EMIOSDIO1DATAO; + output [3:0] EMIOSDIO1DATATN; + output [3:0] FCLKCLK; + output [3:0] FCLKRESETN; + output [3:0] FTMTF2PTRIGACK; + output [3:0] FTMTP2FTRIG; + output [3:0] MAXIGP0ARCACHE; + output [3:0] MAXIGP0ARLEN; + output [3:0] MAXIGP0ARQOS; + output [3:0] MAXIGP0AWCACHE; + output [3:0] MAXIGP0AWLEN; + output [3:0] MAXIGP0AWQOS; + output [3:0] MAXIGP0WSTRB; + output [3:0] MAXIGP1ARCACHE; + output [3:0] MAXIGP1ARLEN; + output [3:0] MAXIGP1ARQOS; + output [3:0] MAXIGP1AWCACHE; + output [3:0] MAXIGP1AWLEN; + output [3:0] MAXIGP1AWQOS; + output [3:0] MAXIGP1WSTRB; + output [5:0] SAXIGP0BID; + output [5:0] SAXIGP0RID; + output [5:0] SAXIGP1BID; + output [5:0] SAXIGP1RID; + output [5:0] SAXIHP0BID; + output [5:0] SAXIHP0RID; + output [5:0] SAXIHP0WACOUNT; + output [5:0] SAXIHP1BID; + output [5:0] SAXIHP1RID; + output [5:0] SAXIHP1WACOUNT; + output [5:0] SAXIHP2BID; + output [5:0] SAXIHP2RID; + output [5:0] SAXIHP2WACOUNT; + output [5:0] SAXIHP3BID; + output [5:0] SAXIHP3RID; + output [5:0] SAXIHP3WACOUNT; + output [63:0] EMIOGPIOO; + output [63:0] EMIOGPIOTN; + output [63:0] SAXIACPRDATA; + output [63:0] SAXIHP0RDATA; + output [63:0] SAXIHP1RDATA; + output [63:0] SAXIHP2RDATA; + output [63:0] SAXIHP3RDATA; + output [7:0] EMIOENET0GMIITXD; + output [7:0] EMIOENET1GMIITXD; + output [7:0] SAXIHP0RCOUNT; + output [7:0] SAXIHP0WCOUNT; + output [7:0] SAXIHP1RCOUNT; + output [7:0] SAXIHP1WCOUNT; + output [7:0] SAXIHP2RCOUNT; + output [7:0] SAXIHP2WCOUNT; + output [7:0] SAXIHP3RCOUNT; + output [7:0] SAXIHP3WCOUNT; + inout DDRCASB; + inout DDRCKE; + inout DDRCKN; + inout DDRCKP; + inout DDRCSB; + inout DDRDRSTB; + inout DDRODT; + inout DDRRASB; + inout DDRVRN; + inout DDRVRP; + inout DDRWEB; + inout PSCLK; + inout PSPORB; + inout PSSRSTB; + inout [14:0] DDRA; + inout [2:0] DDRBA; + inout [31:0] DDRDQ; + inout [3:0] DDRDM; + inout [3:0] DDRDQSN; + inout [3:0] DDRDQSP; + inout [53:0] MIO; + input DMA0ACLK; + input DMA0DAREADY; + input DMA0DRLAST; + input DMA0DRVALID; + input DMA1ACLK; + input DMA1DAREADY; + input DMA1DRLAST; + input DMA1DRVALID; + input DMA2ACLK; + input DMA2DAREADY; + input DMA2DRLAST; + input DMA2DRVALID; + input DMA3ACLK; + input DMA3DAREADY; + input DMA3DRLAST; + input DMA3DRVALID; + input EMIOCAN0PHYRX; + input EMIOCAN1PHYRX; + input EMIOENET0EXTINTIN; + input EMIOENET0GMIICOL; + input EMIOENET0GMIICRS; + input EMIOENET0GMIIRXCLK; + input EMIOENET0GMIIRXDV; + input EMIOENET0GMIIRXER; + input EMIOENET0GMIITXCLK; + input EMIOENET0MDIOI; + input EMIOENET1EXTINTIN; + input EMIOENET1GMIICOL; + input EMIOENET1GMIICRS; + input EMIOENET1GMIIRXCLK; + input EMIOENET1GMIIRXDV; + input EMIOENET1GMIIRXER; + input EMIOENET1GMIITXCLK; + input EMIOENET1MDIOI; + input EMIOI2C0SCLI; + input EMIOI2C0SDAI; + input EMIOI2C1SCLI; + input EMIOI2C1SDAI; + input EMIOPJTAGTCK; + input EMIOPJTAGTDI; + input EMIOPJTAGTMS; + input EMIOSDIO0CDN; + input EMIOSDIO0CLKFB; + input EMIOSDIO0CMDI; + input EMIOSDIO0WP; + input EMIOSDIO1CDN; + input EMIOSDIO1CLKFB; + input EMIOSDIO1CMDI; + input EMIOSDIO1WP; + input EMIOSPI0MI; + input EMIOSPI0SCLKI; + input EMIOSPI0SI; + input EMIOSPI0SSIN; + input EMIOSPI1MI; + input EMIOSPI1SCLKI; + input EMIOSPI1SI; + input EMIOSPI1SSIN; + input EMIOSRAMINTIN; + input EMIOTRACECLK; + input EMIOUART0CTSN; + input EMIOUART0DCDN; + input EMIOUART0DSRN; + input EMIOUART0RIN; + input EMIOUART0RX; + input EMIOUART1CTSN; + input EMIOUART1DCDN; + input EMIOUART1DSRN; + input EMIOUART1RIN; + input EMIOUART1RX; + input EMIOUSB0VBUSPWRFAULT; + input EMIOUSB1VBUSPWRFAULT; + input EMIOWDTCLKI; + input EVENTEVENTI; + input FPGAIDLEN; + input FTMDTRACEINCLOCK; + input FTMDTRACEINVALID; + input MAXIGP0ACLK; + input MAXIGP0ARREADY; + input MAXIGP0AWREADY; + input MAXIGP0BVALID; + input MAXIGP0RLAST; + input MAXIGP0RVALID; + input MAXIGP0WREADY; + input MAXIGP1ACLK; + input MAXIGP1ARREADY; + input MAXIGP1AWREADY; + input MAXIGP1BVALID; + input MAXIGP1RLAST; + input MAXIGP1RVALID; + input MAXIGP1WREADY; + input SAXIACPACLK; + input SAXIACPARVALID; + input SAXIACPAWVALID; + input SAXIACPBREADY; + input SAXIACPRREADY; + input SAXIACPWLAST; + input SAXIACPWVALID; + input SAXIGP0ACLK; + input SAXIGP0ARVALID; + input SAXIGP0AWVALID; + input SAXIGP0BREADY; + input SAXIGP0RREADY; + input SAXIGP0WLAST; + input SAXIGP0WVALID; + input SAXIGP1ACLK; + input SAXIGP1ARVALID; + input SAXIGP1AWVALID; + input SAXIGP1BREADY; + input SAXIGP1RREADY; + input SAXIGP1WLAST; + input SAXIGP1WVALID; + input SAXIHP0ACLK; + input SAXIHP0ARVALID; + input SAXIHP0AWVALID; + input SAXIHP0BREADY; + input SAXIHP0RDISSUECAP1EN; + input SAXIHP0RREADY; + input SAXIHP0WLAST; + input SAXIHP0WRISSUECAP1EN; + input SAXIHP0WVALID; + input SAXIHP1ACLK; + input SAXIHP1ARVALID; + input SAXIHP1AWVALID; + input SAXIHP1BREADY; + input SAXIHP1RDISSUECAP1EN; + input SAXIHP1RREADY; + input SAXIHP1WLAST; + input SAXIHP1WRISSUECAP1EN; + input SAXIHP1WVALID; + input SAXIHP2ACLK; + input SAXIHP2ARVALID; + input SAXIHP2AWVALID; + input SAXIHP2BREADY; + input SAXIHP2RDISSUECAP1EN; + input SAXIHP2RREADY; + input SAXIHP2WLAST; + input SAXIHP2WRISSUECAP1EN; + input SAXIHP2WVALID; + input SAXIHP3ACLK; + input SAXIHP3ARVALID; + input SAXIHP3AWVALID; + input SAXIHP3BREADY; + input SAXIHP3RDISSUECAP1EN; + input SAXIHP3RREADY; + input SAXIHP3WLAST; + input SAXIHP3WRISSUECAP1EN; + input SAXIHP3WVALID; + input [11:0] MAXIGP0BID; + input [11:0] MAXIGP0RID; + input [11:0] MAXIGP1BID; + input [11:0] MAXIGP1RID; + input [19:0] IRQF2P; + input [1:0] DMA0DRTYPE; + input [1:0] DMA1DRTYPE; + input [1:0] DMA2DRTYPE; + input [1:0] DMA3DRTYPE; + input [1:0] MAXIGP0BRESP; + input [1:0] MAXIGP0RRESP; + input [1:0] MAXIGP1BRESP; + input [1:0] MAXIGP1RRESP; + input [1:0] SAXIACPARBURST; + input [1:0] SAXIACPARLOCK; + input [1:0] SAXIACPARSIZE; + input [1:0] SAXIACPAWBURST; + input [1:0] SAXIACPAWLOCK; + input [1:0] SAXIACPAWSIZE; + input [1:0] SAXIGP0ARBURST; + input [1:0] SAXIGP0ARLOCK; + input [1:0] SAXIGP0ARSIZE; + input [1:0] SAXIGP0AWBURST; + input [1:0] SAXIGP0AWLOCK; + input [1:0] SAXIGP0AWSIZE; + input [1:0] SAXIGP1ARBURST; + input [1:0] SAXIGP1ARLOCK; + input [1:0] SAXIGP1ARSIZE; + input [1:0] SAXIGP1AWBURST; + input [1:0] SAXIGP1AWLOCK; + input [1:0] SAXIGP1AWSIZE; + input [1:0] SAXIHP0ARBURST; + input [1:0] SAXIHP0ARLOCK; + input [1:0] SAXIHP0ARSIZE; + input [1:0] SAXIHP0AWBURST; + input [1:0] SAXIHP0AWLOCK; + input [1:0] SAXIHP0AWSIZE; + input [1:0] SAXIHP1ARBURST; + input [1:0] SAXIHP1ARLOCK; + input [1:0] SAXIHP1ARSIZE; + input [1:0] SAXIHP1AWBURST; + input [1:0] SAXIHP1AWLOCK; + input [1:0] SAXIHP1AWSIZE; + input [1:0] SAXIHP2ARBURST; + input [1:0] SAXIHP2ARLOCK; + input [1:0] SAXIHP2ARSIZE; + input [1:0] SAXIHP2AWBURST; + input [1:0] SAXIHP2AWLOCK; + input [1:0] SAXIHP2AWSIZE; + input [1:0] SAXIHP3ARBURST; + input [1:0] SAXIHP3ARLOCK; + input [1:0] SAXIHP3ARSIZE; + input [1:0] SAXIHP3AWBURST; + input [1:0] SAXIHP3AWLOCK; + input [1:0] SAXIHP3AWSIZE; + input [2:0] EMIOTTC0CLKI; + input [2:0] EMIOTTC1CLKI; + input [2:0] SAXIACPARID; + input [2:0] SAXIACPARPROT; + input [2:0] SAXIACPAWID; + input [2:0] SAXIACPAWPROT; + input [2:0] SAXIACPWID; + input [2:0] SAXIGP0ARPROT; + input [2:0] SAXIGP0AWPROT; + input [2:0] SAXIGP1ARPROT; + input [2:0] SAXIGP1AWPROT; + input [2:0] SAXIHP0ARPROT; + input [2:0] SAXIHP0AWPROT; + input [2:0] SAXIHP1ARPROT; + input [2:0] SAXIHP1AWPROT; + input [2:0] SAXIHP2ARPROT; + input [2:0] SAXIHP2AWPROT; + input [2:0] SAXIHP3ARPROT; + input [2:0] SAXIHP3AWPROT; + input [31:0] FTMDTRACEINDATA; + input [31:0] FTMTF2PDEBUG; + input [31:0] MAXIGP0RDATA; + input [31:0] MAXIGP1RDATA; + input [31:0] SAXIACPARADDR; + input [31:0] SAXIACPAWADDR; + input [31:0] SAXIGP0ARADDR; + input [31:0] SAXIGP0AWADDR; + input [31:0] SAXIGP0WDATA; + input [31:0] SAXIGP1ARADDR; + input [31:0] SAXIGP1AWADDR; + input [31:0] SAXIGP1WDATA; + input [31:0] SAXIHP0ARADDR; + input [31:0] SAXIHP0AWADDR; + input [31:0] SAXIHP1ARADDR; + input [31:0] SAXIHP1AWADDR; + input [31:0] SAXIHP2ARADDR; + input [31:0] SAXIHP2AWADDR; + input [31:0] SAXIHP3ARADDR; + input [31:0] SAXIHP3AWADDR; + input [3:0] DDRARB; + input [3:0] EMIOSDIO0DATAI; + input [3:0] EMIOSDIO1DATAI; + input [3:0] FCLKCLKTRIGN; + input [3:0] FTMDTRACEINATID; + input [3:0] FTMTF2PTRIG; + input [3:0] FTMTP2FTRIGACK; + input [3:0] SAXIACPARCACHE; + input [3:0] SAXIACPARLEN; + input [3:0] SAXIACPARQOS; + input [3:0] SAXIACPAWCACHE; + input [3:0] SAXIACPAWLEN; + input [3:0] SAXIACPAWQOS; + input [3:0] SAXIGP0ARCACHE; + input [3:0] SAXIGP0ARLEN; + input [3:0] SAXIGP0ARQOS; + input [3:0] SAXIGP0AWCACHE; + input [3:0] SAXIGP0AWLEN; + input [3:0] SAXIGP0AWQOS; + input [3:0] SAXIGP0WSTRB; + input [3:0] SAXIGP1ARCACHE; + input [3:0] SAXIGP1ARLEN; + input [3:0] SAXIGP1ARQOS; + input [3:0] SAXIGP1AWCACHE; + input [3:0] SAXIGP1AWLEN; + input [3:0] SAXIGP1AWQOS; + input [3:0] SAXIGP1WSTRB; + input [3:0] SAXIHP0ARCACHE; + input [3:0] SAXIHP0ARLEN; + input [3:0] SAXIHP0ARQOS; + input [3:0] SAXIHP0AWCACHE; + input [3:0] SAXIHP0AWLEN; + input [3:0] SAXIHP0AWQOS; + input [3:0] SAXIHP1ARCACHE; + input [3:0] SAXIHP1ARLEN; + input [3:0] SAXIHP1ARQOS; + input [3:0] SAXIHP1AWCACHE; + input [3:0] SAXIHP1AWLEN; + input [3:0] SAXIHP1AWQOS; + input [3:0] SAXIHP2ARCACHE; + input [3:0] SAXIHP2ARLEN; + input [3:0] SAXIHP2ARQOS; + input [3:0] SAXIHP2AWCACHE; + input [3:0] SAXIHP2AWLEN; + input [3:0] SAXIHP2AWQOS; + input [3:0] SAXIHP3ARCACHE; + input [3:0] SAXIHP3ARLEN; + input [3:0] SAXIHP3ARQOS; + input [3:0] SAXIHP3AWCACHE; + input [3:0] SAXIHP3AWLEN; + input [3:0] SAXIHP3AWQOS; + input [4:0] SAXIACPARUSER; + input [4:0] SAXIACPAWUSER; + input [5:0] SAXIGP0ARID; + input [5:0] SAXIGP0AWID; + input [5:0] SAXIGP0WID; + input [5:0] SAXIGP1ARID; + input [5:0] SAXIGP1AWID; + input [5:0] SAXIGP1WID; + input [5:0] SAXIHP0ARID; + input [5:0] SAXIHP0AWID; + input [5:0] SAXIHP0WID; + input [5:0] SAXIHP1ARID; + input [5:0] SAXIHP1AWID; + input [5:0] SAXIHP1WID; + input [5:0] SAXIHP2ARID; + input [5:0] SAXIHP2AWID; + input [5:0] SAXIHP2WID; + input [5:0] SAXIHP3ARID; + input [5:0] SAXIHP3AWID; + input [5:0] SAXIHP3WID; + input [63:0] EMIOGPIOI; + input [63:0] SAXIACPWDATA; + input [63:0] SAXIHP0WDATA; + input [63:0] SAXIHP1WDATA; + input [63:0] SAXIHP2WDATA; + input [63:0] SAXIHP3WDATA; + input [7:0] EMIOENET0GMIIRXD; + input [7:0] EMIOENET1GMIIRXD; + input [7:0] SAXIACPWSTRB; + input [7:0] SAXIHP0WSTRB; + input [7:0] SAXIHP1WSTRB; + input [7:0] SAXIHP2WSTRB; + input [7:0] SAXIHP3WSTRB; +endmodule + +(* keep *) +module PS8 (...); + output [7:0] ADMA2PLCACK; + output [7:0] ADMA2PLTVLD; + output DPAUDIOREFCLK; + output DPAUXDATAOEN; + output DPAUXDATAOUT; + output DPLIVEVIDEODEOUT; + output [31:0] DPMAXISMIXEDAUDIOTDATA; + output DPMAXISMIXEDAUDIOTID; + output DPMAXISMIXEDAUDIOTVALID; + output DPSAXISAUDIOTREADY; + output DPVIDEOOUTHSYNC; + output [35:0] DPVIDEOOUTPIXEL1; + output DPVIDEOOUTVSYNC; + output DPVIDEOREFCLK; + output EMIOCAN0PHYTX; + output EMIOCAN1PHYTX; + output [1:0] EMIOENET0DMABUSWIDTH; + output EMIOENET0DMATXENDTOG; + output [93:0] EMIOENET0GEMTSUTIMERCNT; + output [7:0] EMIOENET0GMIITXD; + output EMIOENET0GMIITXEN; + output EMIOENET0GMIITXER; + output EMIOENET0MDIOMDC; + output EMIOENET0MDIOO; + output EMIOENET0MDIOTN; + output [7:0] EMIOENET0RXWDATA; + output EMIOENET0RXWEOP; + output EMIOENET0RXWERR; + output EMIOENET0RXWFLUSH; + output EMIOENET0RXWSOP; + output [44:0] EMIOENET0RXWSTATUS; + output EMIOENET0RXWWR; + output [2:0] EMIOENET0SPEEDMODE; + output EMIOENET0TXRRD; + output [3:0] EMIOENET0TXRSTATUS; + output [1:0] EMIOENET1DMABUSWIDTH; + output EMIOENET1DMATXENDTOG; + output [7:0] EMIOENET1GMIITXD; + output EMIOENET1GMIITXEN; + output EMIOENET1GMIITXER; + output EMIOENET1MDIOMDC; + output EMIOENET1MDIOO; + output EMIOENET1MDIOTN; + output [7:0] EMIOENET1RXWDATA; + output EMIOENET1RXWEOP; + output EMIOENET1RXWERR; + output EMIOENET1RXWFLUSH; + output EMIOENET1RXWSOP; + output [44:0] EMIOENET1RXWSTATUS; + output EMIOENET1RXWWR; + output [2:0] EMIOENET1SPEEDMODE; + output EMIOENET1TXRRD; + output [3:0] EMIOENET1TXRSTATUS; + output [1:0] EMIOENET2DMABUSWIDTH; + output EMIOENET2DMATXENDTOG; + output [7:0] EMIOENET2GMIITXD; + output EMIOENET2GMIITXEN; + output EMIOENET2GMIITXER; + output EMIOENET2MDIOMDC; + output EMIOENET2MDIOO; + output EMIOENET2MDIOTN; + output [7:0] EMIOENET2RXWDATA; + output EMIOENET2RXWEOP; + output EMIOENET2RXWERR; + output EMIOENET2RXWFLUSH; + output EMIOENET2RXWSOP; + output [44:0] EMIOENET2RXWSTATUS; + output EMIOENET2RXWWR; + output [2:0] EMIOENET2SPEEDMODE; + output EMIOENET2TXRRD; + output [3:0] EMIOENET2TXRSTATUS; + output [1:0] EMIOENET3DMABUSWIDTH; + output EMIOENET3DMATXENDTOG; + output [7:0] EMIOENET3GMIITXD; + output EMIOENET3GMIITXEN; + output EMIOENET3GMIITXER; + output EMIOENET3MDIOMDC; + output EMIOENET3MDIOO; + output EMIOENET3MDIOTN; + output [7:0] EMIOENET3RXWDATA; + output EMIOENET3RXWEOP; + output EMIOENET3RXWERR; + output EMIOENET3RXWFLUSH; + output EMIOENET3RXWSOP; + output [44:0] EMIOENET3RXWSTATUS; + output EMIOENET3RXWWR; + output [2:0] EMIOENET3SPEEDMODE; + output EMIOENET3TXRRD; + output [3:0] EMIOENET3TXRSTATUS; + output EMIOGEM0DELAYREQRX; + output EMIOGEM0DELAYREQTX; + output EMIOGEM0PDELAYREQRX; + output EMIOGEM0PDELAYREQTX; + output EMIOGEM0PDELAYRESPRX; + output EMIOGEM0PDELAYRESPTX; + output EMIOGEM0RXSOF; + output EMIOGEM0SYNCFRAMERX; + output EMIOGEM0SYNCFRAMETX; + output EMIOGEM0TSUTIMERCMPVAL; + output EMIOGEM0TXRFIXEDLAT; + output EMIOGEM0TXSOF; + output EMIOGEM1DELAYREQRX; + output EMIOGEM1DELAYREQTX; + output EMIOGEM1PDELAYREQRX; + output EMIOGEM1PDELAYREQTX; + output EMIOGEM1PDELAYRESPRX; + output EMIOGEM1PDELAYRESPTX; + output EMIOGEM1RXSOF; + output EMIOGEM1SYNCFRAMERX; + output EMIOGEM1SYNCFRAMETX; + output EMIOGEM1TSUTIMERCMPVAL; + output EMIOGEM1TXRFIXEDLAT; + output EMIOGEM1TXSOF; + output EMIOGEM2DELAYREQRX; + output EMIOGEM2DELAYREQTX; + output EMIOGEM2PDELAYREQRX; + output EMIOGEM2PDELAYREQTX; + output EMIOGEM2PDELAYRESPRX; + output EMIOGEM2PDELAYRESPTX; + output EMIOGEM2RXSOF; + output EMIOGEM2SYNCFRAMERX; + output EMIOGEM2SYNCFRAMETX; + output EMIOGEM2TSUTIMERCMPVAL; + output EMIOGEM2TXRFIXEDLAT; + output EMIOGEM2TXSOF; + output EMIOGEM3DELAYREQRX; + output EMIOGEM3DELAYREQTX; + output EMIOGEM3PDELAYREQRX; + output EMIOGEM3PDELAYREQTX; + output EMIOGEM3PDELAYRESPRX; + output EMIOGEM3PDELAYRESPTX; + output EMIOGEM3RXSOF; + output EMIOGEM3SYNCFRAMERX; + output EMIOGEM3SYNCFRAMETX; + output EMIOGEM3TSUTIMERCMPVAL; + output EMIOGEM3TXRFIXEDLAT; + output EMIOGEM3TXSOF; + output [95:0] EMIOGPIOO; + output [95:0] EMIOGPIOTN; + output EMIOI2C0SCLO; + output EMIOI2C0SCLTN; + output EMIOI2C0SDAO; + output EMIOI2C0SDATN; + output EMIOI2C1SCLO; + output EMIOI2C1SCLTN; + output EMIOI2C1SDAO; + output EMIOI2C1SDATN; + output EMIOSDIO0BUSPOWER; + output [2:0] EMIOSDIO0BUSVOLT; + output EMIOSDIO0CLKOUT; + output EMIOSDIO0CMDENA; + output EMIOSDIO0CMDOUT; + output [7:0] EMIOSDIO0DATAENA; + output [7:0] EMIOSDIO0DATAOUT; + output EMIOSDIO0LEDCONTROL; + output EMIOSDIO1BUSPOWER; + output [2:0] EMIOSDIO1BUSVOLT; + output EMIOSDIO1CLKOUT; + output EMIOSDIO1CMDENA; + output EMIOSDIO1CMDOUT; + output [7:0] EMIOSDIO1DATAENA; + output [7:0] EMIOSDIO1DATAOUT; + output EMIOSDIO1LEDCONTROL; + output EMIOSPI0MO; + output EMIOSPI0MOTN; + output EMIOSPI0SCLKO; + output EMIOSPI0SCLKTN; + output EMIOSPI0SO; + output EMIOSPI0SSNTN; + output [2:0] EMIOSPI0SSON; + output EMIOSPI0STN; + output EMIOSPI1MO; + output EMIOSPI1MOTN; + output EMIOSPI1SCLKO; + output EMIOSPI1SCLKTN; + output EMIOSPI1SO; + output EMIOSPI1SSNTN; + output [2:0] EMIOSPI1SSON; + output EMIOSPI1STN; + output [2:0] EMIOTTC0WAVEO; + output [2:0] EMIOTTC1WAVEO; + output [2:0] EMIOTTC2WAVEO; + output [2:0] EMIOTTC3WAVEO; + output EMIOU2DSPORTVBUSCTRLUSB30; + output EMIOU2DSPORTVBUSCTRLUSB31; + output EMIOU3DSPORTVBUSCTRLUSB30; + output EMIOU3DSPORTVBUSCTRLUSB31; + output EMIOUART0DTRN; + output EMIOUART0RTSN; + output EMIOUART0TX; + output EMIOUART1DTRN; + output EMIOUART1RTSN; + output EMIOUART1TX; + output EMIOWDT0RSTO; + output EMIOWDT1RSTO; + output FMIOGEM0FIFORXCLKTOPLBUFG; + output FMIOGEM0FIFOTXCLKTOPLBUFG; + output FMIOGEM1FIFORXCLKTOPLBUFG; + output FMIOGEM1FIFOTXCLKTOPLBUFG; + output FMIOGEM2FIFORXCLKTOPLBUFG; + output FMIOGEM2FIFOTXCLKTOPLBUFG; + output FMIOGEM3FIFORXCLKTOPLBUFG; + output FMIOGEM3FIFOTXCLKTOPLBUFG; + output FMIOGEMTSUCLKTOPLBUFG; + output [31:0] FTMGPO; + output [7:0] GDMA2PLCACK; + output [7:0] GDMA2PLTVLD; + output [39:0] MAXIGP0ARADDR; + output [1:0] MAXIGP0ARBURST; + output [3:0] MAXIGP0ARCACHE; + output [15:0] MAXIGP0ARID; + output [7:0] MAXIGP0ARLEN; + output MAXIGP0ARLOCK; + output [2:0] MAXIGP0ARPROT; + output [3:0] MAXIGP0ARQOS; + output [2:0] MAXIGP0ARSIZE; + output [15:0] MAXIGP0ARUSER; + output MAXIGP0ARVALID; + output [39:0] MAXIGP0AWADDR; + output [1:0] MAXIGP0AWBURST; + output [3:0] MAXIGP0AWCACHE; + output [15:0] MAXIGP0AWID; + output [7:0] MAXIGP0AWLEN; + output MAXIGP0AWLOCK; + output [2:0] MAXIGP0AWPROT; + output [3:0] MAXIGP0AWQOS; + output [2:0] MAXIGP0AWSIZE; + output [15:0] MAXIGP0AWUSER; + output MAXIGP0AWVALID; + output MAXIGP0BREADY; + output MAXIGP0RREADY; + output [127:0] MAXIGP0WDATA; + output MAXIGP0WLAST; + output [15:0] MAXIGP0WSTRB; + output MAXIGP0WVALID; + output [39:0] MAXIGP1ARADDR; + output [1:0] MAXIGP1ARBURST; + output [3:0] MAXIGP1ARCACHE; + output [15:0] MAXIGP1ARID; + output [7:0] MAXIGP1ARLEN; + output MAXIGP1ARLOCK; + output [2:0] MAXIGP1ARPROT; + output [3:0] MAXIGP1ARQOS; + output [2:0] MAXIGP1ARSIZE; + output [15:0] MAXIGP1ARUSER; + output MAXIGP1ARVALID; + output [39:0] MAXIGP1AWADDR; + output [1:0] MAXIGP1AWBURST; + output [3:0] MAXIGP1AWCACHE; + output [15:0] MAXIGP1AWID; + output [7:0] MAXIGP1AWLEN; + output MAXIGP1AWLOCK; + output [2:0] MAXIGP1AWPROT; + output [3:0] MAXIGP1AWQOS; + output [2:0] MAXIGP1AWSIZE; + output [15:0] MAXIGP1AWUSER; + output MAXIGP1AWVALID; + output MAXIGP1BREADY; + output MAXIGP1RREADY; + output [127:0] MAXIGP1WDATA; + output MAXIGP1WLAST; + output [15:0] MAXIGP1WSTRB; + output MAXIGP1WVALID; + output [39:0] MAXIGP2ARADDR; + output [1:0] MAXIGP2ARBURST; + output [3:0] MAXIGP2ARCACHE; + output [15:0] MAXIGP2ARID; + output [7:0] MAXIGP2ARLEN; + output MAXIGP2ARLOCK; + output [2:0] MAXIGP2ARPROT; + output [3:0] MAXIGP2ARQOS; + output [2:0] MAXIGP2ARSIZE; + output [15:0] MAXIGP2ARUSER; + output MAXIGP2ARVALID; + output [39:0] MAXIGP2AWADDR; + output [1:0] MAXIGP2AWBURST; + output [3:0] MAXIGP2AWCACHE; + output [15:0] MAXIGP2AWID; + output [7:0] MAXIGP2AWLEN; + output MAXIGP2AWLOCK; + output [2:0] MAXIGP2AWPROT; + output [3:0] MAXIGP2AWQOS; + output [2:0] MAXIGP2AWSIZE; + output [15:0] MAXIGP2AWUSER; + output MAXIGP2AWVALID; + output MAXIGP2BREADY; + output MAXIGP2RREADY; + output [127:0] MAXIGP2WDATA; + output MAXIGP2WLAST; + output [15:0] MAXIGP2WSTRB; + output MAXIGP2WVALID; + output OSCRTCCLK; + output [3:0] PLCLK; + output PMUAIBAFIFMFPDREQ; + output PMUAIBAFIFMLPDREQ; + output [46:0] PMUERRORTOPL; + output [31:0] PMUPLGPO; + output PSPLEVENTO; + output [63:0] PSPLIRQFPD; + output [99:0] PSPLIRQLPD; + output [3:0] PSPLSTANDBYWFE; + output [3:0] PSPLSTANDBYWFI; + output PSPLTRACECTL; + output [31:0] PSPLTRACEDATA; + output [3:0] PSPLTRIGACK; + output [3:0] PSPLTRIGGER; + output PSS_ALTO_CORE_PAD_MGTTXN0OUT; + output PSS_ALTO_CORE_PAD_MGTTXN1OUT; + output PSS_ALTO_CORE_PAD_MGTTXN2OUT; + output PSS_ALTO_CORE_PAD_MGTTXN3OUT; + output PSS_ALTO_CORE_PAD_MGTTXP0OUT; + output PSS_ALTO_CORE_PAD_MGTTXP1OUT; + output PSS_ALTO_CORE_PAD_MGTTXP2OUT; + output PSS_ALTO_CORE_PAD_MGTTXP3OUT; + output PSS_ALTO_CORE_PAD_PADO; + output RPUEVENTO0; + output RPUEVENTO1; + output [43:0] SACEFPDACADDR; + output [2:0] SACEFPDACPROT; + output [3:0] SACEFPDACSNOOP; + output SACEFPDACVALID; + output SACEFPDARREADY; + output SACEFPDAWREADY; + output [5:0] SACEFPDBID; + output [1:0] SACEFPDBRESP; + output SACEFPDBUSER; + output SACEFPDBVALID; + output SACEFPDCDREADY; + output SACEFPDCRREADY; + output [127:0] SACEFPDRDATA; + output [5:0] SACEFPDRID; + output SACEFPDRLAST; + output [3:0] SACEFPDRRESP; + output SACEFPDRUSER; + output SACEFPDRVALID; + output SACEFPDWREADY; + output SAXIACPARREADY; + output SAXIACPAWREADY; + output [4:0] SAXIACPBID; + output [1:0] SAXIACPBRESP; + output SAXIACPBVALID; + output [127:0] SAXIACPRDATA; + output [4:0] SAXIACPRID; + output SAXIACPRLAST; + output [1:0] SAXIACPRRESP; + output SAXIACPRVALID; + output SAXIACPWREADY; + output SAXIGP0ARREADY; + output SAXIGP0AWREADY; + output [5:0] SAXIGP0BID; + output [1:0] SAXIGP0BRESP; + output SAXIGP0BVALID; + output [3:0] SAXIGP0RACOUNT; + output [7:0] SAXIGP0RCOUNT; + output [127:0] SAXIGP0RDATA; + output [5:0] SAXIGP0RID; + output SAXIGP0RLAST; + output [1:0] SAXIGP0RRESP; + output SAXIGP0RVALID; + output [3:0] SAXIGP0WACOUNT; + output [7:0] SAXIGP0WCOUNT; + output SAXIGP0WREADY; + output SAXIGP1ARREADY; + output SAXIGP1AWREADY; + output [5:0] SAXIGP1BID; + output [1:0] SAXIGP1BRESP; + output SAXIGP1BVALID; + output [3:0] SAXIGP1RACOUNT; + output [7:0] SAXIGP1RCOUNT; + output [127:0] SAXIGP1RDATA; + output [5:0] SAXIGP1RID; + output SAXIGP1RLAST; + output [1:0] SAXIGP1RRESP; + output SAXIGP1RVALID; + output [3:0] SAXIGP1WACOUNT; + output [7:0] SAXIGP1WCOUNT; + output SAXIGP1WREADY; + output SAXIGP2ARREADY; + output SAXIGP2AWREADY; + output [5:0] SAXIGP2BID; + output [1:0] SAXIGP2BRESP; + output SAXIGP2BVALID; + output [3:0] SAXIGP2RACOUNT; + output [7:0] SAXIGP2RCOUNT; + output [127:0] SAXIGP2RDATA; + output [5:0] SAXIGP2RID; + output SAXIGP2RLAST; + output [1:0] SAXIGP2RRESP; + output SAXIGP2RVALID; + output [3:0] SAXIGP2WACOUNT; + output [7:0] SAXIGP2WCOUNT; + output SAXIGP2WREADY; + output SAXIGP3ARREADY; + output SAXIGP3AWREADY; + output [5:0] SAXIGP3BID; + output [1:0] SAXIGP3BRESP; + output SAXIGP3BVALID; + output [3:0] SAXIGP3RACOUNT; + output [7:0] SAXIGP3RCOUNT; + output [127:0] SAXIGP3RDATA; + output [5:0] SAXIGP3RID; + output SAXIGP3RLAST; + output [1:0] SAXIGP3RRESP; + output SAXIGP3RVALID; + output [3:0] SAXIGP3WACOUNT; + output [7:0] SAXIGP3WCOUNT; + output SAXIGP3WREADY; + output SAXIGP4ARREADY; + output SAXIGP4AWREADY; + output [5:0] SAXIGP4BID; + output [1:0] SAXIGP4BRESP; + output SAXIGP4BVALID; + output [3:0] SAXIGP4RACOUNT; + output [7:0] SAXIGP4RCOUNT; + output [127:0] SAXIGP4RDATA; + output [5:0] SAXIGP4RID; + output SAXIGP4RLAST; + output [1:0] SAXIGP4RRESP; + output SAXIGP4RVALID; + output [3:0] SAXIGP4WACOUNT; + output [7:0] SAXIGP4WCOUNT; + output SAXIGP4WREADY; + output SAXIGP5ARREADY; + output SAXIGP5AWREADY; + output [5:0] SAXIGP5BID; + output [1:0] SAXIGP5BRESP; + output SAXIGP5BVALID; + output [3:0] SAXIGP5RACOUNT; + output [7:0] SAXIGP5RCOUNT; + output [127:0] SAXIGP5RDATA; + output [5:0] SAXIGP5RID; + output SAXIGP5RLAST; + output [1:0] SAXIGP5RRESP; + output SAXIGP5RVALID; + output [3:0] SAXIGP5WACOUNT; + output [7:0] SAXIGP5WCOUNT; + output SAXIGP5WREADY; + output SAXIGP6ARREADY; + output SAXIGP6AWREADY; + output [5:0] SAXIGP6BID; + output [1:0] SAXIGP6BRESP; + output SAXIGP6BVALID; + output [3:0] SAXIGP6RACOUNT; + output [7:0] SAXIGP6RCOUNT; + output [127:0] SAXIGP6RDATA; + output [5:0] SAXIGP6RID; + output SAXIGP6RLAST; + output [1:0] SAXIGP6RRESP; + output SAXIGP6RVALID; + output [3:0] SAXIGP6WACOUNT; + output [7:0] SAXIGP6WCOUNT; + output SAXIGP6WREADY; + inout [3:0] PSS_ALTO_CORE_PAD_BOOTMODE; + inout PSS_ALTO_CORE_PAD_CLK; + inout PSS_ALTO_CORE_PAD_DONEB; + inout [17:0] PSS_ALTO_CORE_PAD_DRAMA; + inout PSS_ALTO_CORE_PAD_DRAMACTN; + inout PSS_ALTO_CORE_PAD_DRAMALERTN; + inout [1:0] PSS_ALTO_CORE_PAD_DRAMBA; + inout [1:0] PSS_ALTO_CORE_PAD_DRAMBG; + inout [1:0] PSS_ALTO_CORE_PAD_DRAMCK; + inout [1:0] PSS_ALTO_CORE_PAD_DRAMCKE; + inout [1:0] PSS_ALTO_CORE_PAD_DRAMCKN; + inout [1:0] PSS_ALTO_CORE_PAD_DRAMCSN; + inout [8:0] PSS_ALTO_CORE_PAD_DRAMDM; + inout [71:0] PSS_ALTO_CORE_PAD_DRAMDQ; + inout [8:0] PSS_ALTO_CORE_PAD_DRAMDQS; + inout [8:0] PSS_ALTO_CORE_PAD_DRAMDQSN; + inout [1:0] PSS_ALTO_CORE_PAD_DRAMODT; + inout PSS_ALTO_CORE_PAD_DRAMPARITY; + inout PSS_ALTO_CORE_PAD_DRAMRAMRSTN; + inout PSS_ALTO_CORE_PAD_ERROROUT; + inout PSS_ALTO_CORE_PAD_ERRORSTATUS; + inout PSS_ALTO_CORE_PAD_INITB; + inout PSS_ALTO_CORE_PAD_JTAGTCK; + inout PSS_ALTO_CORE_PAD_JTAGTDI; + inout PSS_ALTO_CORE_PAD_JTAGTDO; + inout PSS_ALTO_CORE_PAD_JTAGTMS; + inout [77:0] PSS_ALTO_CORE_PAD_MIO; + inout PSS_ALTO_CORE_PAD_PORB; + inout PSS_ALTO_CORE_PAD_PROGB; + inout PSS_ALTO_CORE_PAD_RCALIBINOUT; + inout PSS_ALTO_CORE_PAD_SRSTB; + inout PSS_ALTO_CORE_PAD_ZQ; + input [7:0] ADMAFCICLK; + input AIBPMUAFIFMFPDACK; + input AIBPMUAFIFMLPDACK; + input DDRCEXTREFRESHRANK0REQ; + input DDRCEXTREFRESHRANK1REQ; + input DDRCREFRESHPLCLK; + input DPAUXDATAIN; + input DPEXTERNALCUSTOMEVENT1; + input DPEXTERNALCUSTOMEVENT2; + input DPEXTERNALVSYNCEVENT; + input DPHOTPLUGDETECT; + input [7:0] DPLIVEGFXALPHAIN; + input [35:0] DPLIVEGFXPIXEL1IN; + input DPLIVEVIDEOINDE; + input DPLIVEVIDEOINHSYNC; + input [35:0] DPLIVEVIDEOINPIXEL1; + input DPLIVEVIDEOINVSYNC; + input DPMAXISMIXEDAUDIOTREADY; + input DPSAXISAUDIOCLK; + input [31:0] DPSAXISAUDIOTDATA; + input DPSAXISAUDIOTID; + input DPSAXISAUDIOTVALID; + input DPVIDEOINCLK; + input EMIOCAN0PHYRX; + input EMIOCAN1PHYRX; + input EMIOENET0DMATXSTATUSTOG; + input EMIOENET0EXTINTIN; + input EMIOENET0GMIICOL; + input EMIOENET0GMIICRS; + input EMIOENET0GMIIRXCLK; + input [7:0] EMIOENET0GMIIRXD; + input EMIOENET0GMIIRXDV; + input EMIOENET0GMIIRXER; + input EMIOENET0GMIITXCLK; + input EMIOENET0MDIOI; + input EMIOENET0RXWOVERFLOW; + input EMIOENET0TXRCONTROL; + input [7:0] EMIOENET0TXRDATA; + input EMIOENET0TXRDATARDY; + input EMIOENET0TXREOP; + input EMIOENET0TXRERR; + input EMIOENET0TXRFLUSHED; + input EMIOENET0TXRSOP; + input EMIOENET0TXRUNDERFLOW; + input EMIOENET0TXRVALID; + input EMIOENET1DMATXSTATUSTOG; + input EMIOENET1EXTINTIN; + input EMIOENET1GMIICOL; + input EMIOENET1GMIICRS; + input EMIOENET1GMIIRXCLK; + input [7:0] EMIOENET1GMIIRXD; + input EMIOENET1GMIIRXDV; + input EMIOENET1GMIIRXER; + input EMIOENET1GMIITXCLK; + input EMIOENET1MDIOI; + input EMIOENET1RXWOVERFLOW; + input EMIOENET1TXRCONTROL; + input [7:0] EMIOENET1TXRDATA; + input EMIOENET1TXRDATARDY; + input EMIOENET1TXREOP; + input EMIOENET1TXRERR; + input EMIOENET1TXRFLUSHED; + input EMIOENET1TXRSOP; + input EMIOENET1TXRUNDERFLOW; + input EMIOENET1TXRVALID; + input EMIOENET2DMATXSTATUSTOG; + input EMIOENET2EXTINTIN; + input EMIOENET2GMIICOL; + input EMIOENET2GMIICRS; + input EMIOENET2GMIIRXCLK; + input [7:0] EMIOENET2GMIIRXD; + input EMIOENET2GMIIRXDV; + input EMIOENET2GMIIRXER; + input EMIOENET2GMIITXCLK; + input EMIOENET2MDIOI; + input EMIOENET2RXWOVERFLOW; + input EMIOENET2TXRCONTROL; + input [7:0] EMIOENET2TXRDATA; + input EMIOENET2TXRDATARDY; + input EMIOENET2TXREOP; + input EMIOENET2TXRERR; + input EMIOENET2TXRFLUSHED; + input EMIOENET2TXRSOP; + input EMIOENET2TXRUNDERFLOW; + input EMIOENET2TXRVALID; + input EMIOENET3DMATXSTATUSTOG; + input EMIOENET3EXTINTIN; + input EMIOENET3GMIICOL; + input EMIOENET3GMIICRS; + input EMIOENET3GMIIRXCLK; + input [7:0] EMIOENET3GMIIRXD; + input EMIOENET3GMIIRXDV; + input EMIOENET3GMIIRXER; + input EMIOENET3GMIITXCLK; + input EMIOENET3MDIOI; + input EMIOENET3RXWOVERFLOW; + input EMIOENET3TXRCONTROL; + input [7:0] EMIOENET3TXRDATA; + input EMIOENET3TXRDATARDY; + input EMIOENET3TXREOP; + input EMIOENET3TXRERR; + input EMIOENET3TXRFLUSHED; + input EMIOENET3TXRSOP; + input EMIOENET3TXRUNDERFLOW; + input EMIOENET3TXRVALID; + input EMIOENETTSUCLK; + input [1:0] EMIOGEM0TSUINCCTRL; + input [1:0] EMIOGEM1TSUINCCTRL; + input [1:0] EMIOGEM2TSUINCCTRL; + input [1:0] EMIOGEM3TSUINCCTRL; + input [95:0] EMIOGPIOI; + input EMIOHUBPORTOVERCRNTUSB20; + input EMIOHUBPORTOVERCRNTUSB21; + input EMIOHUBPORTOVERCRNTUSB30; + input EMIOHUBPORTOVERCRNTUSB31; + input EMIOI2C0SCLI; + input EMIOI2C0SDAI; + input EMIOI2C1SCLI; + input EMIOI2C1SDAI; + input EMIOSDIO0CDN; + input EMIOSDIO0CMDIN; + input [7:0] EMIOSDIO0DATAIN; + input EMIOSDIO0FBCLKIN; + input EMIOSDIO0WP; + input EMIOSDIO1CDN; + input EMIOSDIO1CMDIN; + input [7:0] EMIOSDIO1DATAIN; + input EMIOSDIO1FBCLKIN; + input EMIOSDIO1WP; + input EMIOSPI0MI; + input EMIOSPI0SCLKI; + input EMIOSPI0SI; + input EMIOSPI0SSIN; + input EMIOSPI1MI; + input EMIOSPI1SCLKI; + input EMIOSPI1SI; + input EMIOSPI1SSIN; + input [2:0] EMIOTTC0CLKI; + input [2:0] EMIOTTC1CLKI; + input [2:0] EMIOTTC2CLKI; + input [2:0] EMIOTTC3CLKI; + input EMIOUART0CTSN; + input EMIOUART0DCDN; + input EMIOUART0DSRN; + input EMIOUART0RIN; + input EMIOUART0RX; + input EMIOUART1CTSN; + input EMIOUART1DCDN; + input EMIOUART1DSRN; + input EMIOUART1RIN; + input EMIOUART1RX; + input EMIOWDT0CLKI; + input EMIOWDT1CLKI; + input FMIOGEM0FIFORXCLKFROMPL; + input FMIOGEM0FIFOTXCLKFROMPL; + input FMIOGEM0SIGNALDETECT; + input FMIOGEM1FIFORXCLKFROMPL; + input FMIOGEM1FIFOTXCLKFROMPL; + input FMIOGEM1SIGNALDETECT; + input FMIOGEM2FIFORXCLKFROMPL; + input FMIOGEM2FIFOTXCLKFROMPL; + input FMIOGEM2SIGNALDETECT; + input FMIOGEM3FIFORXCLKFROMPL; + input FMIOGEM3FIFOTXCLKFROMPL; + input FMIOGEM3SIGNALDETECT; + input FMIOGEMTSUCLKFROMPL; + input [31:0] FTMGPI; + input [7:0] GDMAFCICLK; + input MAXIGP0ACLK; + input MAXIGP0ARREADY; + input MAXIGP0AWREADY; + input [15:0] MAXIGP0BID; + input [1:0] MAXIGP0BRESP; + input MAXIGP0BVALID; + input [127:0] MAXIGP0RDATA; + input [15:0] MAXIGP0RID; + input MAXIGP0RLAST; + input [1:0] MAXIGP0RRESP; + input MAXIGP0RVALID; + input MAXIGP0WREADY; + input MAXIGP1ACLK; + input MAXIGP1ARREADY; + input MAXIGP1AWREADY; + input [15:0] MAXIGP1BID; + input [1:0] MAXIGP1BRESP; + input MAXIGP1BVALID; + input [127:0] MAXIGP1RDATA; + input [15:0] MAXIGP1RID; + input MAXIGP1RLAST; + input [1:0] MAXIGP1RRESP; + input MAXIGP1RVALID; + input MAXIGP1WREADY; + input MAXIGP2ACLK; + input MAXIGP2ARREADY; + input MAXIGP2AWREADY; + input [15:0] MAXIGP2BID; + input [1:0] MAXIGP2BRESP; + input MAXIGP2BVALID; + input [127:0] MAXIGP2RDATA; + input [15:0] MAXIGP2RID; + input MAXIGP2RLAST; + input [1:0] MAXIGP2RRESP; + input MAXIGP2RVALID; + input MAXIGP2WREADY; + input NFIQ0LPDRPU; + input NFIQ1LPDRPU; + input NIRQ0LPDRPU; + input NIRQ1LPDRPU; + input [7:0] PL2ADMACVLD; + input [7:0] PL2ADMATACK; + input [7:0] PL2GDMACVLD; + input [7:0] PL2GDMATACK; + input PLACECLK; + input PLACPINACT; + input [3:0] PLFPGASTOP; + input [2:0] PLLAUXREFCLKFPD; + input [1:0] PLLAUXREFCLKLPD; + input [31:0] PLPMUGPI; + input [3:0] PLPSAPUGICFIQ; + input [3:0] PLPSAPUGICIRQ; + input PLPSEVENTI; + input [7:0] PLPSIRQ0; + input [7:0] PLPSIRQ1; + input PLPSTRACECLK; + input [3:0] PLPSTRIGACK; + input [3:0] PLPSTRIGGER; + input [3:0] PMUERRORFROMPL; + input PSS_ALTO_CORE_PAD_MGTRXN0IN; + input PSS_ALTO_CORE_PAD_MGTRXN1IN; + input PSS_ALTO_CORE_PAD_MGTRXN2IN; + input PSS_ALTO_CORE_PAD_MGTRXN3IN; + input PSS_ALTO_CORE_PAD_MGTRXP0IN; + input PSS_ALTO_CORE_PAD_MGTRXP1IN; + input PSS_ALTO_CORE_PAD_MGTRXP2IN; + input PSS_ALTO_CORE_PAD_MGTRXP3IN; + input PSS_ALTO_CORE_PAD_PADI; + input PSS_ALTO_CORE_PAD_REFN0IN; + input PSS_ALTO_CORE_PAD_REFN1IN; + input PSS_ALTO_CORE_PAD_REFN2IN; + input PSS_ALTO_CORE_PAD_REFN3IN; + input PSS_ALTO_CORE_PAD_REFP0IN; + input PSS_ALTO_CORE_PAD_REFP1IN; + input PSS_ALTO_CORE_PAD_REFP2IN; + input PSS_ALTO_CORE_PAD_REFP3IN; + input RPUEVENTI0; + input RPUEVENTI1; + input SACEFPDACREADY; + input [43:0] SACEFPDARADDR; + input [1:0] SACEFPDARBAR; + input [1:0] SACEFPDARBURST; + input [3:0] SACEFPDARCACHE; + input [1:0] SACEFPDARDOMAIN; + input [5:0] SACEFPDARID; + input [7:0] SACEFPDARLEN; + input SACEFPDARLOCK; + input [2:0] SACEFPDARPROT; + input [3:0] SACEFPDARQOS; + input [3:0] SACEFPDARREGION; + input [2:0] SACEFPDARSIZE; + input [3:0] SACEFPDARSNOOP; + input [15:0] SACEFPDARUSER; + input SACEFPDARVALID; + input [43:0] SACEFPDAWADDR; + input [1:0] SACEFPDAWBAR; + input [1:0] SACEFPDAWBURST; + input [3:0] SACEFPDAWCACHE; + input [1:0] SACEFPDAWDOMAIN; + input [5:0] SACEFPDAWID; + input [7:0] SACEFPDAWLEN; + input SACEFPDAWLOCK; + input [2:0] SACEFPDAWPROT; + input [3:0] SACEFPDAWQOS; + input [3:0] SACEFPDAWREGION; + input [2:0] SACEFPDAWSIZE; + input [2:0] SACEFPDAWSNOOP; + input [15:0] SACEFPDAWUSER; + input SACEFPDAWVALID; + input SACEFPDBREADY; + input [127:0] SACEFPDCDDATA; + input SACEFPDCDLAST; + input SACEFPDCDVALID; + input [4:0] SACEFPDCRRESP; + input SACEFPDCRVALID; + input SACEFPDRACK; + input SACEFPDRREADY; + input SACEFPDWACK; + input [127:0] SACEFPDWDATA; + input SACEFPDWLAST; + input [15:0] SACEFPDWSTRB; + input SACEFPDWUSER; + input SACEFPDWVALID; + input SAXIACPACLK; + input [39:0] SAXIACPARADDR; + input [1:0] SAXIACPARBURST; + input [3:0] SAXIACPARCACHE; + input [4:0] SAXIACPARID; + input [7:0] SAXIACPARLEN; + input SAXIACPARLOCK; + input [2:0] SAXIACPARPROT; + input [3:0] SAXIACPARQOS; + input [2:0] SAXIACPARSIZE; + input [1:0] SAXIACPARUSER; + input SAXIACPARVALID; + input [39:0] SAXIACPAWADDR; + input [1:0] SAXIACPAWBURST; + input [3:0] SAXIACPAWCACHE; + input [4:0] SAXIACPAWID; + input [7:0] SAXIACPAWLEN; + input SAXIACPAWLOCK; + input [2:0] SAXIACPAWPROT; + input [3:0] SAXIACPAWQOS; + input [2:0] SAXIACPAWSIZE; + input [1:0] SAXIACPAWUSER; + input SAXIACPAWVALID; + input SAXIACPBREADY; + input SAXIACPRREADY; + input [127:0] SAXIACPWDATA; + input SAXIACPWLAST; + input [15:0] SAXIACPWSTRB; + input SAXIACPWVALID; + input [48:0] SAXIGP0ARADDR; + input [1:0] SAXIGP0ARBURST; + input [3:0] SAXIGP0ARCACHE; + input [5:0] SAXIGP0ARID; + input [7:0] SAXIGP0ARLEN; + input SAXIGP0ARLOCK; + input [2:0] SAXIGP0ARPROT; + input [3:0] SAXIGP0ARQOS; + input [2:0] SAXIGP0ARSIZE; + input SAXIGP0ARUSER; + input SAXIGP0ARVALID; + input [48:0] SAXIGP0AWADDR; + input [1:0] SAXIGP0AWBURST; + input [3:0] SAXIGP0AWCACHE; + input [5:0] SAXIGP0AWID; + input [7:0] SAXIGP0AWLEN; + input SAXIGP0AWLOCK; + input [2:0] SAXIGP0AWPROT; + input [3:0] SAXIGP0AWQOS; + input [2:0] SAXIGP0AWSIZE; + input SAXIGP0AWUSER; + input SAXIGP0AWVALID; + input SAXIGP0BREADY; + input SAXIGP0RCLK; + input SAXIGP0RREADY; + input SAXIGP0WCLK; + input [127:0] SAXIGP0WDATA; + input SAXIGP0WLAST; + input [15:0] SAXIGP0WSTRB; + input SAXIGP0WVALID; + input [48:0] SAXIGP1ARADDR; + input [1:0] SAXIGP1ARBURST; + input [3:0] SAXIGP1ARCACHE; + input [5:0] SAXIGP1ARID; + input [7:0] SAXIGP1ARLEN; + input SAXIGP1ARLOCK; + input [2:0] SAXIGP1ARPROT; + input [3:0] SAXIGP1ARQOS; + input [2:0] SAXIGP1ARSIZE; + input SAXIGP1ARUSER; + input SAXIGP1ARVALID; + input [48:0] SAXIGP1AWADDR; + input [1:0] SAXIGP1AWBURST; + input [3:0] SAXIGP1AWCACHE; + input [5:0] SAXIGP1AWID; + input [7:0] SAXIGP1AWLEN; + input SAXIGP1AWLOCK; + input [2:0] SAXIGP1AWPROT; + input [3:0] SAXIGP1AWQOS; + input [2:0] SAXIGP1AWSIZE; + input SAXIGP1AWUSER; + input SAXIGP1AWVALID; + input SAXIGP1BREADY; + input SAXIGP1RCLK; + input SAXIGP1RREADY; + input SAXIGP1WCLK; + input [127:0] SAXIGP1WDATA; + input SAXIGP1WLAST; + input [15:0] SAXIGP1WSTRB; + input SAXIGP1WVALID; + input [48:0] SAXIGP2ARADDR; + input [1:0] SAXIGP2ARBURST; + input [3:0] SAXIGP2ARCACHE; + input [5:0] SAXIGP2ARID; + input [7:0] SAXIGP2ARLEN; + input SAXIGP2ARLOCK; + input [2:0] SAXIGP2ARPROT; + input [3:0] SAXIGP2ARQOS; + input [2:0] SAXIGP2ARSIZE; + input SAXIGP2ARUSER; + input SAXIGP2ARVALID; + input [48:0] SAXIGP2AWADDR; + input [1:0] SAXIGP2AWBURST; + input [3:0] SAXIGP2AWCACHE; + input [5:0] SAXIGP2AWID; + input [7:0] SAXIGP2AWLEN; + input SAXIGP2AWLOCK; + input [2:0] SAXIGP2AWPROT; + input [3:0] SAXIGP2AWQOS; + input [2:0] SAXIGP2AWSIZE; + input SAXIGP2AWUSER; + input SAXIGP2AWVALID; + input SAXIGP2BREADY; + input SAXIGP2RCLK; + input SAXIGP2RREADY; + input SAXIGP2WCLK; + input [127:0] SAXIGP2WDATA; + input SAXIGP2WLAST; + input [15:0] SAXIGP2WSTRB; + input SAXIGP2WVALID; + input [48:0] SAXIGP3ARADDR; + input [1:0] SAXIGP3ARBURST; + input [3:0] SAXIGP3ARCACHE; + input [5:0] SAXIGP3ARID; + input [7:0] SAXIGP3ARLEN; + input SAXIGP3ARLOCK; + input [2:0] SAXIGP3ARPROT; + input [3:0] SAXIGP3ARQOS; + input [2:0] SAXIGP3ARSIZE; + input SAXIGP3ARUSER; + input SAXIGP3ARVALID; + input [48:0] SAXIGP3AWADDR; + input [1:0] SAXIGP3AWBURST; + input [3:0] SAXIGP3AWCACHE; + input [5:0] SAXIGP3AWID; + input [7:0] SAXIGP3AWLEN; + input SAXIGP3AWLOCK; + input [2:0] SAXIGP3AWPROT; + input [3:0] SAXIGP3AWQOS; + input [2:0] SAXIGP3AWSIZE; + input SAXIGP3AWUSER; + input SAXIGP3AWVALID; + input SAXIGP3BREADY; + input SAXIGP3RCLK; + input SAXIGP3RREADY; + input SAXIGP3WCLK; + input [127:0] SAXIGP3WDATA; + input SAXIGP3WLAST; + input [15:0] SAXIGP3WSTRB; + input SAXIGP3WVALID; + input [48:0] SAXIGP4ARADDR; + input [1:0] SAXIGP4ARBURST; + input [3:0] SAXIGP4ARCACHE; + input [5:0] SAXIGP4ARID; + input [7:0] SAXIGP4ARLEN; + input SAXIGP4ARLOCK; + input [2:0] SAXIGP4ARPROT; + input [3:0] SAXIGP4ARQOS; + input [2:0] SAXIGP4ARSIZE; + input SAXIGP4ARUSER; + input SAXIGP4ARVALID; + input [48:0] SAXIGP4AWADDR; + input [1:0] SAXIGP4AWBURST; + input [3:0] SAXIGP4AWCACHE; + input [5:0] SAXIGP4AWID; + input [7:0] SAXIGP4AWLEN; + input SAXIGP4AWLOCK; + input [2:0] SAXIGP4AWPROT; + input [3:0] SAXIGP4AWQOS; + input [2:0] SAXIGP4AWSIZE; + input SAXIGP4AWUSER; + input SAXIGP4AWVALID; + input SAXIGP4BREADY; + input SAXIGP4RCLK; + input SAXIGP4RREADY; + input SAXIGP4WCLK; + input [127:0] SAXIGP4WDATA; + input SAXIGP4WLAST; + input [15:0] SAXIGP4WSTRB; + input SAXIGP4WVALID; + input [48:0] SAXIGP5ARADDR; + input [1:0] SAXIGP5ARBURST; + input [3:0] SAXIGP5ARCACHE; + input [5:0] SAXIGP5ARID; + input [7:0] SAXIGP5ARLEN; + input SAXIGP5ARLOCK; + input [2:0] SAXIGP5ARPROT; + input [3:0] SAXIGP5ARQOS; + input [2:0] SAXIGP5ARSIZE; + input SAXIGP5ARUSER; + input SAXIGP5ARVALID; + input [48:0] SAXIGP5AWADDR; + input [1:0] SAXIGP5AWBURST; + input [3:0] SAXIGP5AWCACHE; + input [5:0] SAXIGP5AWID; + input [7:0] SAXIGP5AWLEN; + input SAXIGP5AWLOCK; + input [2:0] SAXIGP5AWPROT; + input [3:0] SAXIGP5AWQOS; + input [2:0] SAXIGP5AWSIZE; + input SAXIGP5AWUSER; + input SAXIGP5AWVALID; + input SAXIGP5BREADY; + input SAXIGP5RCLK; + input SAXIGP5RREADY; + input SAXIGP5WCLK; + input [127:0] SAXIGP5WDATA; + input SAXIGP5WLAST; + input [15:0] SAXIGP5WSTRB; + input SAXIGP5WVALID; + input [48:0] SAXIGP6ARADDR; + input [1:0] SAXIGP6ARBURST; + input [3:0] SAXIGP6ARCACHE; + input [5:0] SAXIGP6ARID; + input [7:0] SAXIGP6ARLEN; + input SAXIGP6ARLOCK; + input [2:0] SAXIGP6ARPROT; + input [3:0] SAXIGP6ARQOS; + input [2:0] SAXIGP6ARSIZE; + input SAXIGP6ARUSER; + input SAXIGP6ARVALID; + input [48:0] SAXIGP6AWADDR; + input [1:0] SAXIGP6AWBURST; + input [3:0] SAXIGP6AWCACHE; + input [5:0] SAXIGP6AWID; + input [7:0] SAXIGP6AWLEN; + input SAXIGP6AWLOCK; + input [2:0] SAXIGP6AWPROT; + input [3:0] SAXIGP6AWQOS; + input [2:0] SAXIGP6AWSIZE; + input SAXIGP6AWUSER; + input SAXIGP6AWVALID; + input SAXIGP6BREADY; + input SAXIGP6RCLK; + input SAXIGP6RREADY; + input SAXIGP6WCLK; + input [127:0] SAXIGP6WDATA; + input SAXIGP6WLAST; + input [15:0] SAXIGP6WSTRB; + input SAXIGP6WVALID; + input [59:0] STMEVENT; +endmodule + +module ILKN (...); + parameter BYPASS = "FALSE"; + parameter [1:0] CTL_RX_BURSTMAX = 2'h3; + parameter [1:0] CTL_RX_CHAN_EXT = 2'h0; + parameter [3:0] CTL_RX_LAST_LANE = 4'hB; + parameter [15:0] CTL_RX_MFRAMELEN_MINUS1 = 16'h07FF; + parameter CTL_RX_PACKET_MODE = "TRUE"; + parameter [2:0] CTL_RX_RETRANS_MULT = 3'h0; + parameter [3:0] CTL_RX_RETRANS_RETRY = 4'h2; + parameter [15:0] CTL_RX_RETRANS_TIMER1 = 16'h0000; + parameter [15:0] CTL_RX_RETRANS_TIMER2 = 16'h0008; + parameter [11:0] CTL_RX_RETRANS_WDOG = 12'h000; + parameter [7:0] CTL_RX_RETRANS_WRAP_TIMER = 8'h00; + parameter CTL_TEST_MODE_PIN_CHAR = "FALSE"; + parameter [1:0] CTL_TX_BURSTMAX = 2'h3; + parameter [2:0] CTL_TX_BURSTSHORT = 3'h1; + parameter [1:0] CTL_TX_CHAN_EXT = 2'h0; + parameter CTL_TX_DISABLE_SKIPWORD = "TRUE"; + parameter [6:0] CTL_TX_FC_CALLEN = 7'h00; + parameter [3:0] CTL_TX_LAST_LANE = 4'hB; + parameter [15:0] CTL_TX_MFRAMELEN_MINUS1 = 16'h07FF; + parameter [13:0] CTL_TX_RETRANS_DEPTH = 14'h0800; + parameter [2:0] CTL_TX_RETRANS_MULT = 3'h0; + parameter [1:0] CTL_TX_RETRANS_RAM_BANKS = 2'h3; + parameter MODE = "TRUE"; + parameter SIM_VERSION = "2.0"; + parameter TEST_MODE_PIN_CHAR = "FALSE"; + output [15:0] DRP_DO; + output DRP_RDY; + output [65:0] RX_BYPASS_DATAOUT00; + output [65:0] RX_BYPASS_DATAOUT01; + output [65:0] RX_BYPASS_DATAOUT02; + output [65:0] RX_BYPASS_DATAOUT03; + output [65:0] RX_BYPASS_DATAOUT04; + output [65:0] RX_BYPASS_DATAOUT05; + output [65:0] RX_BYPASS_DATAOUT06; + output [65:0] RX_BYPASS_DATAOUT07; + output [65:0] RX_BYPASS_DATAOUT08; + output [65:0] RX_BYPASS_DATAOUT09; + output [65:0] RX_BYPASS_DATAOUT10; + output [65:0] RX_BYPASS_DATAOUT11; + output [11:0] RX_BYPASS_ENAOUT; + output [11:0] RX_BYPASS_IS_AVAILOUT; + output [11:0] RX_BYPASS_IS_BADLYFRAMEDOUT; + output [11:0] RX_BYPASS_IS_OVERFLOWOUT; + output [11:0] RX_BYPASS_IS_SYNCEDOUT; + output [11:0] RX_BYPASS_IS_SYNCWORDOUT; + output [10:0] RX_CHANOUT0; + output [10:0] RX_CHANOUT1; + output [10:0] RX_CHANOUT2; + output [10:0] RX_CHANOUT3; + output [127:0] RX_DATAOUT0; + output [127:0] RX_DATAOUT1; + output [127:0] RX_DATAOUT2; + output [127:0] RX_DATAOUT3; + output RX_ENAOUT0; + output RX_ENAOUT1; + output RX_ENAOUT2; + output RX_ENAOUT3; + output RX_EOPOUT0; + output RX_EOPOUT1; + output RX_EOPOUT2; + output RX_EOPOUT3; + output RX_ERROUT0; + output RX_ERROUT1; + output RX_ERROUT2; + output RX_ERROUT3; + output [3:0] RX_MTYOUT0; + output [3:0] RX_MTYOUT1; + output [3:0] RX_MTYOUT2; + output [3:0] RX_MTYOUT3; + output RX_OVFOUT; + output RX_SOPOUT0; + output RX_SOPOUT1; + output RX_SOPOUT2; + output RX_SOPOUT3; + output STAT_RX_ALIGNED; + output STAT_RX_ALIGNED_ERR; + output [11:0] STAT_RX_BAD_TYPE_ERR; + output STAT_RX_BURSTMAX_ERR; + output STAT_RX_BURST_ERR; + output STAT_RX_CRC24_ERR; + output [11:0] STAT_RX_CRC32_ERR; + output [11:0] STAT_RX_CRC32_VALID; + output [11:0] STAT_RX_DESCRAM_ERR; + output [11:0] STAT_RX_DIAGWORD_INTFSTAT; + output [11:0] STAT_RX_DIAGWORD_LANESTAT; + output [255:0] STAT_RX_FC_STAT; + output [11:0] STAT_RX_FRAMING_ERR; + output STAT_RX_MEOP_ERR; + output [11:0] STAT_RX_MF_ERR; + output [11:0] STAT_RX_MF_LEN_ERR; + output [11:0] STAT_RX_MF_REPEAT_ERR; + output STAT_RX_MISALIGNED; + output STAT_RX_MSOP_ERR; + output [7:0] STAT_RX_MUBITS; + output STAT_RX_MUBITS_UPDATED; + output STAT_RX_OVERFLOW_ERR; + output STAT_RX_RETRANS_CRC24_ERR; + output STAT_RX_RETRANS_DISC; + output [15:0] STAT_RX_RETRANS_LATENCY; + output STAT_RX_RETRANS_REQ; + output STAT_RX_RETRANS_RETRY_ERR; + output [7:0] STAT_RX_RETRANS_SEQ; + output STAT_RX_RETRANS_SEQ_UPDATED; + output [2:0] STAT_RX_RETRANS_STATE; + output [4:0] STAT_RX_RETRANS_SUBSEQ; + output STAT_RX_RETRANS_WDOG_ERR; + output STAT_RX_RETRANS_WRAP_ERR; + output [11:0] STAT_RX_SYNCED; + output [11:0] STAT_RX_SYNCED_ERR; + output [11:0] STAT_RX_WORD_SYNC; + output STAT_TX_BURST_ERR; + output STAT_TX_ERRINJ_BITERR_DONE; + output STAT_TX_OVERFLOW_ERR; + output STAT_TX_RETRANS_BURST_ERR; + output STAT_TX_RETRANS_BUSY; + output STAT_TX_RETRANS_RAM_PERROUT; + output [8:0] STAT_TX_RETRANS_RAM_RADDR; + output STAT_TX_RETRANS_RAM_RD_B0; + output STAT_TX_RETRANS_RAM_RD_B1; + output STAT_TX_RETRANS_RAM_RD_B2; + output STAT_TX_RETRANS_RAM_RD_B3; + output [1:0] STAT_TX_RETRANS_RAM_RSEL; + output [8:0] STAT_TX_RETRANS_RAM_WADDR; + output [643:0] STAT_TX_RETRANS_RAM_WDATA; + output STAT_TX_RETRANS_RAM_WE_B0; + output STAT_TX_RETRANS_RAM_WE_B1; + output STAT_TX_RETRANS_RAM_WE_B2; + output STAT_TX_RETRANS_RAM_WE_B3; + output STAT_TX_UNDERFLOW_ERR; + output TX_OVFOUT; + output TX_RDYOUT; + output [63:0] TX_SERDES_DATA00; + output [63:0] TX_SERDES_DATA01; + output [63:0] TX_SERDES_DATA02; + output [63:0] TX_SERDES_DATA03; + output [63:0] TX_SERDES_DATA04; + output [63:0] TX_SERDES_DATA05; + output [63:0] TX_SERDES_DATA06; + output [63:0] TX_SERDES_DATA07; + output [63:0] TX_SERDES_DATA08; + output [63:0] TX_SERDES_DATA09; + output [63:0] TX_SERDES_DATA10; + output [63:0] TX_SERDES_DATA11; + input CORE_CLK; + input CTL_RX_FORCE_RESYNC; + input CTL_RX_RETRANS_ACK; + input CTL_RX_RETRANS_ENABLE; + input CTL_RX_RETRANS_ERRIN; + input CTL_RX_RETRANS_FORCE_REQ; + input CTL_RX_RETRANS_RESET; + input CTL_RX_RETRANS_RESET_MODE; + input CTL_TX_DIAGWORD_INTFSTAT; + input [11:0] CTL_TX_DIAGWORD_LANESTAT; + input CTL_TX_ENABLE; + input CTL_TX_ERRINJ_BITERR_GO; + input [3:0] CTL_TX_ERRINJ_BITERR_LANE; + input [255:0] CTL_TX_FC_STAT; + input [7:0] CTL_TX_MUBITS; + input CTL_TX_RETRANS_ENABLE; + input CTL_TX_RETRANS_RAM_PERRIN; + input [643:0] CTL_TX_RETRANS_RAM_RDATA; + input CTL_TX_RETRANS_REQ; + input CTL_TX_RETRANS_REQ_VALID; + input [11:0] CTL_TX_RLIM_DELTA; + input CTL_TX_RLIM_ENABLE; + input [7:0] CTL_TX_RLIM_INTV; + input [11:0] CTL_TX_RLIM_MAX; + input [9:0] DRP_ADDR; + input DRP_CLK; + input [15:0] DRP_DI; + input DRP_EN; + input DRP_WE; + input LBUS_CLK; + input RX_BYPASS_FORCE_REALIGNIN; + input RX_BYPASS_RDIN; + input RX_RESET; + input [11:0] RX_SERDES_CLK; + input [63:0] RX_SERDES_DATA00; + input [63:0] RX_SERDES_DATA01; + input [63:0] RX_SERDES_DATA02; + input [63:0] RX_SERDES_DATA03; + input [63:0] RX_SERDES_DATA04; + input [63:0] RX_SERDES_DATA05; + input [63:0] RX_SERDES_DATA06; + input [63:0] RX_SERDES_DATA07; + input [63:0] RX_SERDES_DATA08; + input [63:0] RX_SERDES_DATA09; + input [63:0] RX_SERDES_DATA10; + input [63:0] RX_SERDES_DATA11; + input [11:0] RX_SERDES_RESET; + input TX_BCTLIN0; + input TX_BCTLIN1; + input TX_BCTLIN2; + input TX_BCTLIN3; + input [11:0] TX_BYPASS_CTRLIN; + input [63:0] TX_BYPASS_DATAIN00; + input [63:0] TX_BYPASS_DATAIN01; + input [63:0] TX_BYPASS_DATAIN02; + input [63:0] TX_BYPASS_DATAIN03; + input [63:0] TX_BYPASS_DATAIN04; + input [63:0] TX_BYPASS_DATAIN05; + input [63:0] TX_BYPASS_DATAIN06; + input [63:0] TX_BYPASS_DATAIN07; + input [63:0] TX_BYPASS_DATAIN08; + input [63:0] TX_BYPASS_DATAIN09; + input [63:0] TX_BYPASS_DATAIN10; + input [63:0] TX_BYPASS_DATAIN11; + input TX_BYPASS_ENAIN; + input [7:0] TX_BYPASS_GEARBOX_SEQIN; + input [3:0] TX_BYPASS_MFRAMER_STATEIN; + input [10:0] TX_CHANIN0; + input [10:0] TX_CHANIN1; + input [10:0] TX_CHANIN2; + input [10:0] TX_CHANIN3; + input [127:0] TX_DATAIN0; + input [127:0] TX_DATAIN1; + input [127:0] TX_DATAIN2; + input [127:0] TX_DATAIN3; + input TX_ENAIN0; + input TX_ENAIN1; + input TX_ENAIN2; + input TX_ENAIN3; + input TX_EOPIN0; + input TX_EOPIN1; + input TX_EOPIN2; + input TX_EOPIN3; + input TX_ERRIN0; + input TX_ERRIN1; + input TX_ERRIN2; + input TX_ERRIN3; + input [3:0] TX_MTYIN0; + input [3:0] TX_MTYIN1; + input [3:0] TX_MTYIN2; + input [3:0] TX_MTYIN3; + input TX_RESET; + input TX_SERDES_REFCLK; + input TX_SERDES_REFCLK_RESET; + input TX_SOPIN0; + input TX_SOPIN1; + input TX_SOPIN2; + input TX_SOPIN3; +endmodule + +module ILKNE4 (...); + parameter BYPASS = "FALSE"; + parameter [1:0] CTL_RX_BURSTMAX = 2'h3; + parameter [1:0] CTL_RX_CHAN_EXT = 2'h0; + parameter [3:0] CTL_RX_LAST_LANE = 4'hB; + parameter [15:0] CTL_RX_MFRAMELEN_MINUS1 = 16'h07FF; + parameter CTL_RX_PACKET_MODE = "FALSE"; + parameter [2:0] CTL_RX_RETRANS_MULT = 3'h0; + parameter [3:0] CTL_RX_RETRANS_RETRY = 4'h2; + parameter [15:0] CTL_RX_RETRANS_TIMER1 = 16'h0009; + parameter [15:0] CTL_RX_RETRANS_TIMER2 = 16'h0000; + parameter [11:0] CTL_RX_RETRANS_WDOG = 12'h000; + parameter [7:0] CTL_RX_RETRANS_WRAP_TIMER = 8'h00; + parameter CTL_TEST_MODE_PIN_CHAR = "FALSE"; + parameter [1:0] CTL_TX_BURSTMAX = 2'h3; + parameter [2:0] CTL_TX_BURSTSHORT = 3'h1; + parameter [1:0] CTL_TX_CHAN_EXT = 2'h0; + parameter CTL_TX_DISABLE_SKIPWORD = "FALSE"; + parameter [3:0] CTL_TX_FC_CALLEN = 4'hF; + parameter [3:0] CTL_TX_LAST_LANE = 4'hB; + parameter [15:0] CTL_TX_MFRAMELEN_MINUS1 = 16'h07FF; + parameter [13:0] CTL_TX_RETRANS_DEPTH = 14'h0800; + parameter [2:0] CTL_TX_RETRANS_MULT = 3'h0; + parameter [1:0] CTL_TX_RETRANS_RAM_BANKS = 2'h3; + parameter MODE = "TRUE"; + parameter SIM_DEVICE = "ULTRASCALE_PLUS"; + parameter TEST_MODE_PIN_CHAR = "FALSE"; + output [15:0] DRP_DO; + output DRP_RDY; + output [65:0] RX_BYPASS_DATAOUT00; + output [65:0] RX_BYPASS_DATAOUT01; + output [65:0] RX_BYPASS_DATAOUT02; + output [65:0] RX_BYPASS_DATAOUT03; + output [65:0] RX_BYPASS_DATAOUT04; + output [65:0] RX_BYPASS_DATAOUT05; + output [65:0] RX_BYPASS_DATAOUT06; + output [65:0] RX_BYPASS_DATAOUT07; + output [65:0] RX_BYPASS_DATAOUT08; + output [65:0] RX_BYPASS_DATAOUT09; + output [65:0] RX_BYPASS_DATAOUT10; + output [65:0] RX_BYPASS_DATAOUT11; + output [11:0] RX_BYPASS_ENAOUT; + output [11:0] RX_BYPASS_IS_AVAILOUT; + output [11:0] RX_BYPASS_IS_BADLYFRAMEDOUT; + output [11:0] RX_BYPASS_IS_OVERFLOWOUT; + output [11:0] RX_BYPASS_IS_SYNCEDOUT; + output [11:0] RX_BYPASS_IS_SYNCWORDOUT; + output [10:0] RX_CHANOUT0; + output [10:0] RX_CHANOUT1; + output [10:0] RX_CHANOUT2; + output [10:0] RX_CHANOUT3; + output [127:0] RX_DATAOUT0; + output [127:0] RX_DATAOUT1; + output [127:0] RX_DATAOUT2; + output [127:0] RX_DATAOUT3; + output RX_ENAOUT0; + output RX_ENAOUT1; + output RX_ENAOUT2; + output RX_ENAOUT3; + output RX_EOPOUT0; + output RX_EOPOUT1; + output RX_EOPOUT2; + output RX_EOPOUT3; + output RX_ERROUT0; + output RX_ERROUT1; + output RX_ERROUT2; + output RX_ERROUT3; + output [3:0] RX_MTYOUT0; + output [3:0] RX_MTYOUT1; + output [3:0] RX_MTYOUT2; + output [3:0] RX_MTYOUT3; + output RX_OVFOUT; + output RX_SOPOUT0; + output RX_SOPOUT1; + output RX_SOPOUT2; + output RX_SOPOUT3; + output STAT_RX_ALIGNED; + output STAT_RX_ALIGNED_ERR; + output [11:0] STAT_RX_BAD_TYPE_ERR; + output STAT_RX_BURSTMAX_ERR; + output STAT_RX_BURST_ERR; + output STAT_RX_CRC24_ERR; + output [11:0] STAT_RX_CRC32_ERR; + output [11:0] STAT_RX_CRC32_VALID; + output [11:0] STAT_RX_DESCRAM_ERR; + output [11:0] STAT_RX_DIAGWORD_INTFSTAT; + output [11:0] STAT_RX_DIAGWORD_LANESTAT; + output [255:0] STAT_RX_FC_STAT; + output [11:0] STAT_RX_FRAMING_ERR; + output STAT_RX_MEOP_ERR; + output [11:0] STAT_RX_MF_ERR; + output [11:0] STAT_RX_MF_LEN_ERR; + output [11:0] STAT_RX_MF_REPEAT_ERR; + output STAT_RX_MISALIGNED; + output STAT_RX_MSOP_ERR; + output [7:0] STAT_RX_MUBITS; + output STAT_RX_MUBITS_UPDATED; + output STAT_RX_OVERFLOW_ERR; + output STAT_RX_RETRANS_CRC24_ERR; + output STAT_RX_RETRANS_DISC; + output [15:0] STAT_RX_RETRANS_LATENCY; + output STAT_RX_RETRANS_REQ; + output STAT_RX_RETRANS_RETRY_ERR; + output [7:0] STAT_RX_RETRANS_SEQ; + output STAT_RX_RETRANS_SEQ_UPDATED; + output [2:0] STAT_RX_RETRANS_STATE; + output [4:0] STAT_RX_RETRANS_SUBSEQ; + output STAT_RX_RETRANS_WDOG_ERR; + output STAT_RX_RETRANS_WRAP_ERR; + output [11:0] STAT_RX_SYNCED; + output [11:0] STAT_RX_SYNCED_ERR; + output [11:0] STAT_RX_WORD_SYNC; + output STAT_TX_BURST_ERR; + output STAT_TX_ERRINJ_BITERR_DONE; + output STAT_TX_OVERFLOW_ERR; + output STAT_TX_RETRANS_BURST_ERR; + output STAT_TX_RETRANS_BUSY; + output STAT_TX_RETRANS_RAM_PERROUT; + output [8:0] STAT_TX_RETRANS_RAM_RADDR; + output STAT_TX_RETRANS_RAM_RD_B0; + output STAT_TX_RETRANS_RAM_RD_B1; + output STAT_TX_RETRANS_RAM_RD_B2; + output STAT_TX_RETRANS_RAM_RD_B3; + output [1:0] STAT_TX_RETRANS_RAM_RSEL; + output [8:0] STAT_TX_RETRANS_RAM_WADDR; + output [643:0] STAT_TX_RETRANS_RAM_WDATA; + output STAT_TX_RETRANS_RAM_WE_B0; + output STAT_TX_RETRANS_RAM_WE_B1; + output STAT_TX_RETRANS_RAM_WE_B2; + output STAT_TX_RETRANS_RAM_WE_B3; + output STAT_TX_UNDERFLOW_ERR; + output TX_OVFOUT; + output TX_RDYOUT; + output [63:0] TX_SERDES_DATA00; + output [63:0] TX_SERDES_DATA01; + output [63:0] TX_SERDES_DATA02; + output [63:0] TX_SERDES_DATA03; + output [63:0] TX_SERDES_DATA04; + output [63:0] TX_SERDES_DATA05; + output [63:0] TX_SERDES_DATA06; + output [63:0] TX_SERDES_DATA07; + output [63:0] TX_SERDES_DATA08; + output [63:0] TX_SERDES_DATA09; + output [63:0] TX_SERDES_DATA10; + output [63:0] TX_SERDES_DATA11; + input CORE_CLK; + input CTL_RX_FORCE_RESYNC; + input CTL_RX_RETRANS_ACK; + input CTL_RX_RETRANS_ENABLE; + input CTL_RX_RETRANS_ERRIN; + input CTL_RX_RETRANS_FORCE_REQ; + input CTL_RX_RETRANS_RESET; + input CTL_RX_RETRANS_RESET_MODE; + input CTL_TX_DIAGWORD_INTFSTAT; + input [11:0] CTL_TX_DIAGWORD_LANESTAT; + input CTL_TX_ENABLE; + input CTL_TX_ERRINJ_BITERR_GO; + input [3:0] CTL_TX_ERRINJ_BITERR_LANE; + input [255:0] CTL_TX_FC_STAT; + input [7:0] CTL_TX_MUBITS; + input CTL_TX_RETRANS_ENABLE; + input CTL_TX_RETRANS_RAM_PERRIN; + input [643:0] CTL_TX_RETRANS_RAM_RDATA; + input CTL_TX_RETRANS_REQ; + input CTL_TX_RETRANS_REQ_VALID; + input [11:0] CTL_TX_RLIM_DELTA; + input CTL_TX_RLIM_ENABLE; + input [7:0] CTL_TX_RLIM_INTV; + input [11:0] CTL_TX_RLIM_MAX; + input [9:0] DRP_ADDR; + input DRP_CLK; + input [15:0] DRP_DI; + input DRP_EN; + input DRP_WE; + input LBUS_CLK; + input RX_BYPASS_FORCE_REALIGNIN; + input RX_BYPASS_RDIN; + input RX_RESET; + input [11:0] RX_SERDES_CLK; + input [63:0] RX_SERDES_DATA00; + input [63:0] RX_SERDES_DATA01; + input [63:0] RX_SERDES_DATA02; + input [63:0] RX_SERDES_DATA03; + input [63:0] RX_SERDES_DATA04; + input [63:0] RX_SERDES_DATA05; + input [63:0] RX_SERDES_DATA06; + input [63:0] RX_SERDES_DATA07; + input [63:0] RX_SERDES_DATA08; + input [63:0] RX_SERDES_DATA09; + input [63:0] RX_SERDES_DATA10; + input [63:0] RX_SERDES_DATA11; + input [11:0] RX_SERDES_RESET; + input TX_BCTLIN0; + input TX_BCTLIN1; + input TX_BCTLIN2; + input TX_BCTLIN3; + input [11:0] TX_BYPASS_CTRLIN; + input [63:0] TX_BYPASS_DATAIN00; + input [63:0] TX_BYPASS_DATAIN01; + input [63:0] TX_BYPASS_DATAIN02; + input [63:0] TX_BYPASS_DATAIN03; + input [63:0] TX_BYPASS_DATAIN04; + input [63:0] TX_BYPASS_DATAIN05; + input [63:0] TX_BYPASS_DATAIN06; + input [63:0] TX_BYPASS_DATAIN07; + input [63:0] TX_BYPASS_DATAIN08; + input [63:0] TX_BYPASS_DATAIN09; + input [63:0] TX_BYPASS_DATAIN10; + input [63:0] TX_BYPASS_DATAIN11; + input TX_BYPASS_ENAIN; + input [7:0] TX_BYPASS_GEARBOX_SEQIN; + input [3:0] TX_BYPASS_MFRAMER_STATEIN; + input [10:0] TX_CHANIN0; + input [10:0] TX_CHANIN1; + input [10:0] TX_CHANIN2; + input [10:0] TX_CHANIN3; + input [127:0] TX_DATAIN0; + input [127:0] TX_DATAIN1; + input [127:0] TX_DATAIN2; + input [127:0] TX_DATAIN3; + input TX_ENAIN0; + input TX_ENAIN1; + input TX_ENAIN2; + input TX_ENAIN3; + input TX_EOPIN0; + input TX_EOPIN1; + input TX_EOPIN2; + input TX_EOPIN3; + input TX_ERRIN0; + input TX_ERRIN1; + input TX_ERRIN2; + input TX_ERRIN3; + input [3:0] TX_MTYIN0; + input [3:0] TX_MTYIN1; + input [3:0] TX_MTYIN2; + input [3:0] TX_MTYIN3; + input TX_RESET; + input TX_SERDES_REFCLK; + input TX_SERDES_REFCLK_RESET; + input TX_SOPIN0; + input TX_SOPIN1; + input TX_SOPIN2; + input TX_SOPIN3; +endmodule + +(* keep *) +module VCU (...); + parameter integer CORECLKREQ = 667; + parameter integer DECHORRESOLUTION = 3840; + parameter DECODERCHROMAFORMAT = "4_2_2"; + parameter DECODERCODING = "H.265"; + parameter integer DECODERCOLORDEPTH = 10; + parameter integer DECODERNUMCORES = 2; + parameter integer DECVERTRESOLUTION = 2160; + parameter ENABLEDECODER = "TRUE"; + parameter ENABLEENCODER = "TRUE"; + parameter integer ENCHORRESOLUTION = 3840; + parameter ENCODERCHROMAFORMAT = "4_2_2"; + parameter ENCODERCODING = "H.265"; + parameter integer ENCODERCOLORDEPTH = 10; + parameter integer ENCODERNUMCORES = 4; + parameter integer ENCVERTRESOLUTION = 2160; + output VCUPLARREADYAXILITEAPB; + output VCUPLAWREADYAXILITEAPB; + output [1:0] VCUPLBRESPAXILITEAPB; + output VCUPLBVALIDAXILITEAPB; + output VCUPLCORESTATUSCLKPLL; + output [43:0] VCUPLDECARADDR0; + output [43:0] VCUPLDECARADDR1; + output [1:0] VCUPLDECARBURST0; + output [1:0] VCUPLDECARBURST1; + output [3:0] VCUPLDECARCACHE0; + output [3:0] VCUPLDECARCACHE1; + output [3:0] VCUPLDECARID0; + output [3:0] VCUPLDECARID1; + output [7:0] VCUPLDECARLEN0; + output [7:0] VCUPLDECARLEN1; + output VCUPLDECARPROT0; + output VCUPLDECARPROT1; + output [3:0] VCUPLDECARQOS0; + output [3:0] VCUPLDECARQOS1; + output [2:0] VCUPLDECARSIZE0; + output [2:0] VCUPLDECARSIZE1; + output VCUPLDECARVALID0; + output VCUPLDECARVALID1; + output [43:0] VCUPLDECAWADDR0; + output [43:0] VCUPLDECAWADDR1; + output [1:0] VCUPLDECAWBURST0; + output [1:0] VCUPLDECAWBURST1; + output [3:0] VCUPLDECAWCACHE0; + output [3:0] VCUPLDECAWCACHE1; + output [3:0] VCUPLDECAWID0; + output [3:0] VCUPLDECAWID1; + output [7:0] VCUPLDECAWLEN0; + output [7:0] VCUPLDECAWLEN1; + output VCUPLDECAWPROT0; + output VCUPLDECAWPROT1; + output [3:0] VCUPLDECAWQOS0; + output [3:0] VCUPLDECAWQOS1; + output [2:0] VCUPLDECAWSIZE0; + output [2:0] VCUPLDECAWSIZE1; + output VCUPLDECAWVALID0; + output VCUPLDECAWVALID1; + output VCUPLDECBREADY0; + output VCUPLDECBREADY1; + output VCUPLDECRREADY0; + output VCUPLDECRREADY1; + output [127:0] VCUPLDECWDATA0; + output [127:0] VCUPLDECWDATA1; + output VCUPLDECWLAST0; + output VCUPLDECWLAST1; + output VCUPLDECWVALID0; + output VCUPLDECWVALID1; + output [16:0] VCUPLENCALL2CADDR; + output VCUPLENCALL2CRVALID; + output [319:0] VCUPLENCALL2CWDATA; + output VCUPLENCALL2CWVALID; + output [43:0] VCUPLENCARADDR0; + output [43:0] VCUPLENCARADDR1; + output [1:0] VCUPLENCARBURST0; + output [1:0] VCUPLENCARBURST1; + output [3:0] VCUPLENCARCACHE0; + output [3:0] VCUPLENCARCACHE1; + output [3:0] VCUPLENCARID0; + output [3:0] VCUPLENCARID1; + output [7:0] VCUPLENCARLEN0; + output [7:0] VCUPLENCARLEN1; + output VCUPLENCARPROT0; + output VCUPLENCARPROT1; + output [3:0] VCUPLENCARQOS0; + output [3:0] VCUPLENCARQOS1; + output [2:0] VCUPLENCARSIZE0; + output [2:0] VCUPLENCARSIZE1; + output VCUPLENCARVALID0; + output VCUPLENCARVALID1; + output [43:0] VCUPLENCAWADDR0; + output [43:0] VCUPLENCAWADDR1; + output [1:0] VCUPLENCAWBURST0; + output [1:0] VCUPLENCAWBURST1; + output [3:0] VCUPLENCAWCACHE0; + output [3:0] VCUPLENCAWCACHE1; + output [3:0] VCUPLENCAWID0; + output [3:0] VCUPLENCAWID1; + output [7:0] VCUPLENCAWLEN0; + output [7:0] VCUPLENCAWLEN1; + output VCUPLENCAWPROT0; + output VCUPLENCAWPROT1; + output [3:0] VCUPLENCAWQOS0; + output [3:0] VCUPLENCAWQOS1; + output [2:0] VCUPLENCAWSIZE0; + output [2:0] VCUPLENCAWSIZE1; + output VCUPLENCAWVALID0; + output VCUPLENCAWVALID1; + output VCUPLENCBREADY0; + output VCUPLENCBREADY1; + output VCUPLENCRREADY0; + output VCUPLENCRREADY1; + output [127:0] VCUPLENCWDATA0; + output [127:0] VCUPLENCWDATA1; + output VCUPLENCWLAST0; + output VCUPLENCWLAST1; + output VCUPLENCWVALID0; + output VCUPLENCWVALID1; + output [43:0] VCUPLMCUMAXIICDCARADDR; + output [1:0] VCUPLMCUMAXIICDCARBURST; + output [3:0] VCUPLMCUMAXIICDCARCACHE; + output [2:0] VCUPLMCUMAXIICDCARID; + output [7:0] VCUPLMCUMAXIICDCARLEN; + output VCUPLMCUMAXIICDCARLOCK; + output [2:0] VCUPLMCUMAXIICDCARPROT; + output [3:0] VCUPLMCUMAXIICDCARQOS; + output [2:0] VCUPLMCUMAXIICDCARSIZE; + output VCUPLMCUMAXIICDCARVALID; + output [43:0] VCUPLMCUMAXIICDCAWADDR; + output [1:0] VCUPLMCUMAXIICDCAWBURST; + output [3:0] VCUPLMCUMAXIICDCAWCACHE; + output [2:0] VCUPLMCUMAXIICDCAWID; + output [7:0] VCUPLMCUMAXIICDCAWLEN; + output VCUPLMCUMAXIICDCAWLOCK; + output [2:0] VCUPLMCUMAXIICDCAWPROT; + output [3:0] VCUPLMCUMAXIICDCAWQOS; + output [2:0] VCUPLMCUMAXIICDCAWSIZE; + output VCUPLMCUMAXIICDCAWVALID; + output VCUPLMCUMAXIICDCBREADY; + output VCUPLMCUMAXIICDCRREADY; + output [31:0] VCUPLMCUMAXIICDCWDATA; + output VCUPLMCUMAXIICDCWLAST; + output [3:0] VCUPLMCUMAXIICDCWSTRB; + output VCUPLMCUMAXIICDCWVALID; + output VCUPLMCUSTATUSCLKPLL; + output VCUPLPINTREQ; + output VCUPLPLLSTATUSPLLLOCK; + output VCUPLPWRSUPPLYSTATUSVCCAUX; + output VCUPLPWRSUPPLYSTATUSVCUINT; + output [31:0] VCUPLRDATAAXILITEAPB; + output [1:0] VCUPLRRESPAXILITEAPB; + output VCUPLRVALIDAXILITEAPB; + output VCUPLWREADYAXILITEAPB; + input INITPLVCUGASKETCLAMPCONTROLLVLSHVCCINTD; + input [19:0] PLVCUARADDRAXILITEAPB; + input [2:0] PLVCUARPROTAXILITEAPB; + input PLVCUARVALIDAXILITEAPB; + input [19:0] PLVCUAWADDRAXILITEAPB; + input [2:0] PLVCUAWPROTAXILITEAPB; + input PLVCUAWVALIDAXILITEAPB; + input PLVCUAXIDECCLK; + input PLVCUAXIENCCLK; + input PLVCUAXILITECLK; + input PLVCUAXIMCUCLK; + input PLVCUBREADYAXILITEAPB; + input PLVCUCORECLK; + input PLVCUDECARREADY0; + input PLVCUDECARREADY1; + input PLVCUDECAWREADY0; + input PLVCUDECAWREADY1; + input [3:0] PLVCUDECBID0; + input [3:0] PLVCUDECBID1; + input [1:0] PLVCUDECBRESP0; + input [1:0] PLVCUDECBRESP1; + input PLVCUDECBVALID0; + input PLVCUDECBVALID1; + input [127:0] PLVCUDECRDATA0; + input [127:0] PLVCUDECRDATA1; + input [3:0] PLVCUDECRID0; + input [3:0] PLVCUDECRID1; + input PLVCUDECRLAST0; + input PLVCUDECRLAST1; + input [1:0] PLVCUDECRRESP0; + input [1:0] PLVCUDECRRESP1; + input PLVCUDECRVALID0; + input PLVCUDECRVALID1; + input PLVCUDECWREADY0; + input PLVCUDECWREADY1; + input [319:0] PLVCUENCALL2CRDATA; + input PLVCUENCALL2CRREADY; + input PLVCUENCARREADY0; + input PLVCUENCARREADY1; + input PLVCUENCAWREADY0; + input PLVCUENCAWREADY1; + input [3:0] PLVCUENCBID0; + input [3:0] PLVCUENCBID1; + input [1:0] PLVCUENCBRESP0; + input [1:0] PLVCUENCBRESP1; + input PLVCUENCBVALID0; + input PLVCUENCBVALID1; + input PLVCUENCL2CCLK; + input [127:0] PLVCUENCRDATA0; + input [127:0] PLVCUENCRDATA1; + input [3:0] PLVCUENCRID0; + input [3:0] PLVCUENCRID1; + input PLVCUENCRLAST0; + input PLVCUENCRLAST1; + input [1:0] PLVCUENCRRESP0; + input [1:0] PLVCUENCRRESP1; + input PLVCUENCRVALID0; + input PLVCUENCRVALID1; + input PLVCUENCWREADY0; + input PLVCUENCWREADY1; + input PLVCUMCUCLK; + input PLVCUMCUMAXIICDCARREADY; + input PLVCUMCUMAXIICDCAWREADY; + input [2:0] PLVCUMCUMAXIICDCBID; + input [1:0] PLVCUMCUMAXIICDCBRESP; + input PLVCUMCUMAXIICDCBVALID; + input [31:0] PLVCUMCUMAXIICDCRDATA; + input [2:0] PLVCUMCUMAXIICDCRID; + input PLVCUMCUMAXIICDCRLAST; + input [1:0] PLVCUMCUMAXIICDCRRESP; + input PLVCUMCUMAXIICDCRVALID; + input PLVCUMCUMAXIICDCWREADY; + input PLVCUPLLREFCLKPL; + input PLVCURAWRSTN; + input PLVCURREADYAXILITEAPB; + input [31:0] PLVCUWDATAAXILITEAPB; + input [3:0] PLVCUWSTRBAXILITEAPB; + input PLVCUWVALIDAXILITEAPB; +endmodule + +module FE (...); + parameter MODE = "TURBO_DECODE"; + parameter real PHYSICAL_UTILIZATION = 100.00; + parameter SIM_DEVICE = "ULTRASCALE_PLUS"; + parameter STANDARD = "LTE"; + parameter real THROUGHPUT_UTILIZATION = 100.00; + output [399:0] DEBUG_DOUT; + output DEBUG_PHASE; + output INTERRUPT; + output [511:0] M_AXIS_DOUT_TDATA; + output M_AXIS_DOUT_TLAST; + output M_AXIS_DOUT_TVALID; + output [31:0] M_AXIS_STATUS_TDATA; + output M_AXIS_STATUS_TVALID; + output [15:0] SPARE_OUT; + output S_AXIS_CTRL_TREADY; + output S_AXIS_DIN_TREADY; + output S_AXIS_DIN_WORDS_TREADY; + output S_AXIS_DOUT_WORDS_TREADY; + output S_AXI_ARREADY; + output S_AXI_AWREADY; + output S_AXI_BVALID; + output [31:0] S_AXI_RDATA; + output S_AXI_RVALID; + output S_AXI_WREADY; + input CORE_CLK; + input DEBUG_CLK_EN; + input DEBUG_EN; + input [3:0] DEBUG_SEL_IN; + input M_AXIS_DOUT_ACLK; + input M_AXIS_DOUT_TREADY; + input M_AXIS_STATUS_ACLK; + input M_AXIS_STATUS_TREADY; + input RESET_N; + input [15:0] SPARE_IN; + input S_AXIS_CTRL_ACLK; + input [31:0] S_AXIS_CTRL_TDATA; + input S_AXIS_CTRL_TVALID; + input S_AXIS_DIN_ACLK; + input [511:0] S_AXIS_DIN_TDATA; + input S_AXIS_DIN_TLAST; + input S_AXIS_DIN_TVALID; + input S_AXIS_DIN_WORDS_ACLK; + input [31:0] S_AXIS_DIN_WORDS_TDATA; + input S_AXIS_DIN_WORDS_TLAST; + input S_AXIS_DIN_WORDS_TVALID; + input S_AXIS_DOUT_WORDS_ACLK; + input [31:0] S_AXIS_DOUT_WORDS_TDATA; + input S_AXIS_DOUT_WORDS_TLAST; + input S_AXIS_DOUT_WORDS_TVALID; + input S_AXI_ACLK; + input [17:0] S_AXI_ARADDR; + input S_AXI_ARVALID; + input [17:0] S_AXI_AWADDR; + input S_AXI_AWVALID; + input S_AXI_BREADY; + input S_AXI_RREADY; + input [31:0] S_AXI_WDATA; + input S_AXI_WVALID; +endmodule + diff --git a/resources/netlist/resources/kernel/share/xilinx/ff_map.v b/resources/netlist/resources/kernel/share/xilinx/ff_map.v new file mode 100644 index 0000000..2079fd9 --- /dev/null +++ b/resources/netlist/resources/kernel/share/xilinx/ff_map.v @@ -0,0 +1,120 @@ +/* + * yosys -- Yosys Open SYnthesis Suite + * + * Copyright (C) 2012 Claire Xenia Wolf + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + */ + +`ifndef _NO_FFS + +// Async reset, enable. + +module \$_DFFE_NP0P_ (input D, C, E, R, output Q); + parameter _TECHMAP_WIREINIT_Q_ = 1'bx; + FDCE_1 #(.INIT(_TECHMAP_WIREINIT_Q_)) _TECHMAP_REPLACE_ (.D(D), .Q(Q), .C(C), .CE(E), .CLR(R)); + wire _TECHMAP_REMOVEINIT_Q_ = 1; +endmodule +module \$_DFFE_PP0P_ (input D, C, E, R, output Q); + parameter _TECHMAP_WIREINIT_Q_ = 1'bx; + FDCE #(.INIT(_TECHMAP_WIREINIT_Q_)) _TECHMAP_REPLACE_ (.D(D), .Q(Q), .C(C), .CE(E), .CLR(R)); + wire _TECHMAP_REMOVEINIT_Q_ = 1; +endmodule + +module \$_DFFE_NP1P_ (input D, C, E, R, output Q); + parameter _TECHMAP_WIREINIT_Q_ = 1'bx; + FDPE_1 #(.INIT(_TECHMAP_WIREINIT_Q_)) _TECHMAP_REPLACE_ (.D(D), .Q(Q), .C(C), .CE(E), .PRE(R)); + wire _TECHMAP_REMOVEINIT_Q_ = 1; +endmodule +module \$_DFFE_PP1P_ (input D, C, E, R, output Q); + parameter _TECHMAP_WIREINIT_Q_ = 1'bx; + FDPE #(.INIT(_TECHMAP_WIREINIT_Q_)) _TECHMAP_REPLACE_ (.D(D), .Q(Q), .C(C), .CE(E), .PRE(R)); + wire _TECHMAP_REMOVEINIT_Q_ = 1; +endmodule + +// Async set and reset, enable. + +module \$_DFFSRE_NPPP_ (input D, C, E, S, R, output Q); + parameter _TECHMAP_WIREINIT_Q_ = 1'bx; + FDCPE #(.INIT(_TECHMAP_WIREINIT_Q_), .IS_C_INVERTED(1'b1)) _TECHMAP_REPLACE_ (.D(D), .Q(Q), .C(C), .CE(E), .CLR(R), .PRE(S)); + wire _TECHMAP_REMOVEINIT_Q_ = 1; +endmodule +module \$_DFFSRE_PPPP_ (input D, C, E, S, R, output Q); + parameter _TECHMAP_WIREINIT_Q_ = 1'bx; + FDCPE #(.INIT(_TECHMAP_WIREINIT_Q_)) _TECHMAP_REPLACE_ (.D(D), .Q(Q), .C(C), .CE(E), .CLR(R), .PRE(S)); + wire _TECHMAP_REMOVEINIT_Q_ = 1; +endmodule + +// Sync reset, enable. + +module \$_SDFFE_NP0P_ (input D, C, E, R, output Q); + parameter _TECHMAP_WIREINIT_Q_ = 1'bx; + FDRE_1 #(.INIT(_TECHMAP_WIREINIT_Q_)) _TECHMAP_REPLACE_ (.D(D), .Q(Q), .C(C), .CE(E), .R(R)); + wire _TECHMAP_REMOVEINIT_Q_ = 1; +endmodule +module \$_SDFFE_PP0P_ (input D, C, E, R, output Q); + parameter _TECHMAP_WIREINIT_Q_ = 1'bx; + FDRE #(.INIT(_TECHMAP_WIREINIT_Q_)) _TECHMAP_REPLACE_ (.D(D), .Q(Q), .C(C), .CE(E), .R(R)); + wire _TECHMAP_REMOVEINIT_Q_ = 1; +endmodule + +module \$_SDFFE_NP1P_ (input D, C, E, R, output Q); + parameter _TECHMAP_WIREINIT_Q_ = 1'bx; + FDSE_1 #(.INIT(_TECHMAP_WIREINIT_Q_)) _TECHMAP_REPLACE_ (.D(D), .Q(Q), .C(C), .CE(E), .S(R)); + wire _TECHMAP_REMOVEINIT_Q_ = 1; +endmodule +module \$_SDFFE_PP1P_ (input D, C, E, R, output Q); + parameter _TECHMAP_WIREINIT_Q_ = 1'bx; + FDSE #(.INIT(_TECHMAP_WIREINIT_Q_)) _TECHMAP_REPLACE_ (.D(D), .Q(Q), .C(C), .CE(E), .S(R)); + wire _TECHMAP_REMOVEINIT_Q_ = 1; +endmodule + +// Latches with reset. + +module \$_DLATCH_NP0_ (input E, R, D, output Q); + parameter _TECHMAP_WIREINIT_Q_ = 1'bx; + LDCE #(.INIT(_TECHMAP_WIREINIT_Q_), .IS_G_INVERTED(1'b1)) _TECHMAP_REPLACE_ (.D(D), .Q(Q), .G(E), .GE(1'b1), .CLR(R)); + wire _TECHMAP_REMOVEINIT_Q_ = 1; +endmodule +module \$_DLATCH_PP0_ (input E, R, D, output Q); + parameter _TECHMAP_WIREINIT_Q_ = 1'bx; + LDCE #(.INIT(_TECHMAP_WIREINIT_Q_)) _TECHMAP_REPLACE_ (.D(D), .Q(Q), .G(E), .GE(1'b1), .CLR(R)); + wire _TECHMAP_REMOVEINIT_Q_ = 1; +endmodule +module \$_DLATCH_NP1_ (input E, R, D, output Q); + parameter _TECHMAP_WIREINIT_Q_ = 1'bx; + LDPE #(.INIT(_TECHMAP_WIREINIT_Q_), .IS_G_INVERTED(1'b1)) _TECHMAP_REPLACE_ (.D(D), .Q(Q), .G(E), .GE(1'b1), .PRE(R)); + wire _TECHMAP_REMOVEINIT_Q_ = 1; +endmodule +module \$_DLATCH_PP1_ (input E, R, D, output Q); + parameter _TECHMAP_WIREINIT_Q_ = 1'bx; + LDPE #(.INIT(_TECHMAP_WIREINIT_Q_)) _TECHMAP_REPLACE_ (.D(D), .Q(Q), .G(E), .GE(1'b1), .PRE(R)); + wire _TECHMAP_REMOVEINIT_Q_ = 1; +endmodule + +// Latches with set and reset. + +module \$_DLATCH_NPP_ (input E, S, R, D, output Q); + parameter _TECHMAP_WIREINIT_Q_ = 1'bx; + LDCPE #(.INIT(_TECHMAP_WIREINIT_Q_), .IS_G_INVERTED(1'b1)) _TECHMAP_REPLACE_ (.D(D), .Q(Q), .G(E), .GE(1'b1), .CLR(R), .PRE(S)); + wire _TECHMAP_REMOVEINIT_Q_ = 1; +endmodule +module \$_DLATCH_PPP_ (input E, S, R, D, output Q); + parameter _TECHMAP_WIREINIT_Q_ = 1'bx; + LDCPE #(.INIT(_TECHMAP_WIREINIT_Q_)) _TECHMAP_REPLACE_ (.D(D), .Q(Q), .G(E), .GE(1'b1), .CLR(R), .PRE(S)); + wire _TECHMAP_REMOVEINIT_Q_ = 1; +endmodule + +`endif + diff --git a/resources/netlist/resources/kernel/share/xilinx/lut_map.v b/resources/netlist/resources/kernel/share/xilinx/lut_map.v new file mode 100644 index 0000000..30d7d80 --- /dev/null +++ b/resources/netlist/resources/kernel/share/xilinx/lut_map.v @@ -0,0 +1,101 @@ +/* + * yosys -- Yosys Open SYnthesis Suite + * + * Copyright (C) 2012 Claire Xenia Wolf + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + */ + +// ============================================================================ +// LUT mapping + +`ifndef _NO_LUTS + +module \$lut (A, Y); + parameter WIDTH = 0; + parameter LUT = 0; + + (* force_downto *) + input [WIDTH-1:0] A; + output Y; + + generate + if (WIDTH == 1) begin + if (LUT == 2'b01) begin + INV _TECHMAP_REPLACE_ (.O(Y), .I(A[0])); + end else begin + LUT1 #(.INIT(LUT)) _TECHMAP_REPLACE_ (.O(Y), + .I0(A[0])); + end + end else + if (WIDTH == 2) begin + LUT2 #(.INIT(LUT)) _TECHMAP_REPLACE_ (.O(Y), + .I0(A[0]), .I1(A[1])); + end else + if (WIDTH == 3) begin + LUT3 #(.INIT(LUT)) _TECHMAP_REPLACE_ (.O(Y), + .I0(A[0]), .I1(A[1]), .I2(A[2])); + end else + if (WIDTH == 4) begin + LUT4 #(.INIT(LUT)) _TECHMAP_REPLACE_ (.O(Y), + .I0(A[0]), .I1(A[1]), .I2(A[2]), + .I3(A[3])); + end else + if (WIDTH == 5 && WIDTH <= `LUT_WIDTH) begin + LUT5 #(.INIT(LUT)) _TECHMAP_REPLACE_ (.O(Y), + .I0(A[0]), .I1(A[1]), .I2(A[2]), + .I3(A[3]), .I4(A[4])); + end else + if (WIDTH == 6 && WIDTH <= `LUT_WIDTH) begin + LUT6 #(.INIT(LUT)) _TECHMAP_REPLACE_ (.O(Y), + .I0(A[0]), .I1(A[1]), .I2(A[2]), + .I3(A[3]), .I4(A[4]), .I5(A[5])); + end else + if (WIDTH == 5 && WIDTH > `LUT_WIDTH) begin + wire f0, f1; + \$lut #(.LUT(LUT[15: 0]), .WIDTH(4)) lut0 (.A(A[3:0]), .Y(f0)); + \$lut #(.LUT(LUT[31:16]), .WIDTH(4)) lut1 (.A(A[3:0]), .Y(f1)); + MUXF5 mux5(.I0(f0), .I1(f1), .S(A[4]), .O(Y)); + end else + if (WIDTH == 6 && WIDTH > `LUT_WIDTH) begin + wire f0, f1; + \$lut #(.LUT(LUT[31: 0]), .WIDTH(5)) lut0 (.A(A[4:0]), .Y(f0)); + \$lut #(.LUT(LUT[63:32]), .WIDTH(5)) lut1 (.A(A[4:0]), .Y(f1)); + MUXF6 mux6(.I0(f0), .I1(f1), .S(A[5]), .O(Y)); + end else + if (WIDTH == 7) begin + wire f0, f1; + \$lut #(.LUT(LUT[ 63: 0]), .WIDTH(6)) lut0 (.A(A[5:0]), .Y(f0)); + \$lut #(.LUT(LUT[127:64]), .WIDTH(6)) lut1 (.A(A[5:0]), .Y(f1)); + MUXF7 mux7(.I0(f0), .I1(f1), .S(A[6]), .O(Y)); + end else + if (WIDTH == 8) begin + wire f0, f1; + \$lut #(.LUT(LUT[127: 0]), .WIDTH(7)) lut0 (.A(A[6:0]), .Y(f0)); + \$lut #(.LUT(LUT[255:128]), .WIDTH(7)) lut1 (.A(A[6:0]), .Y(f1)); + MUXF8 mux8(.I0(f0), .I1(f1), .S(A[7]), .O(Y)); + end else + if (WIDTH == 9) begin + wire f0, f1; + \$lut #(.LUT(LUT[255: 0]), .WIDTH(8)) lut0 (.A(A[7:0]), .Y(f0)); + \$lut #(.LUT(LUT[511:256]), .WIDTH(8)) lut1 (.A(A[7:0]), .Y(f1)); + MUXF9 mux9(.I0(f0), .I1(f1), .S(A[8]), .O(Y)); + end else begin + wire _TECHMAP_FAIL_ = 1; + end + endgenerate +endmodule + +`endif + diff --git a/resources/netlist/resources/kernel/share/xilinx/lutrams_xc5v.txt b/resources/netlist/resources/kernel/share/xilinx/lutrams_xc5v.txt new file mode 100644 index 0000000..8ab8076 --- /dev/null +++ b/resources/netlist/resources/kernel/share/xilinx/lutrams_xc5v.txt @@ -0,0 +1,100 @@ +# LUT RAMs for Virtex 5, Virtex 6, Spartan 6, Series 7. +# The corresponding mapping file is lutrams_xc5v_map.v + +# Single-port RAMs. + +ram distributed $__XILINX_LUTRAM_SP_ { + cost 8; + widthscale; + option "ABITS" 5 { + abits 5; + widths 8 global; + } + option "ABITS" 6 { + abits 6; + widths 4 global; + } + option "ABITS" 7 { + abits 7; + widths 2 global; + } + option "ABITS" 8 { + abits 8; + widths 1 global; + } + init no_undef; + prune_rom; + port arsw "RW" { + clock posedge; + } +} + +# Dual-port RAMs. + +ram distributed $__XILINX_LUTRAM_DP_ { + cost 8; + widthscale; + option "ABITS" 5 { + abits 5; + widths 4 global; + } + option "ABITS" 6 { + abits 6; + widths 2 global; + } + option "ABITS" 7 { + abits 7; + widths 1 global; + } + init no_undef; + prune_rom; + port arsw "RW" { + clock posedge; + } + port ar "R" { + } +} + +# Quad-port RAMs. + +ram distributed $__XILINX_LUTRAM_QP_ { + cost 7; + widthscale; + option "ABITS" 5 { + abits 5; + widths 2 global; + } + option "ABITS" 6 { + abits 6; + widths 1 global; + } + init no_undef; + prune_rom; + port arsw "RW" { + clock posedge; + } + port ar "R0" "R1" "R2" { + } +} + +# Simple dual port RAMs. + +ram distributed $__XILINX_LUTRAM_SDP_ { + cost 8; + widthscale 7; + option "ABITS" 5 { + abits 5; + widths 6 global; + } + option "ABITS" 6 { + abits 6; + widths 3 global; + } + init no_undef; + prune_rom; + port sw "W" { + clock posedge; + } + port ar "R" { + } +} diff --git a/resources/netlist/resources/kernel/share/xilinx/lutrams_xc5v_map.v b/resources/netlist/resources/kernel/share/xilinx/lutrams_xc5v_map.v new file mode 100644 index 0000000..18ce3a5 --- /dev/null +++ b/resources/netlist/resources/kernel/share/xilinx/lutrams_xc5v_map.v @@ -0,0 +1,901 @@ +// LUT RAMs for Virtex 5, Virtex 6, Spartan 6, Series 7, Ultrascale. +// The definitions are in lutrams_xc5v.txt (everything but Ultrascale) +// and lutrams_xcu.txt (Ultrascale). + + +module $__XILINX_LUTRAM_SP_ (...); + +parameter INIT = 0; +parameter OPTION_ABITS = 5; +parameter WIDTH = 8; +parameter BITS_USED = 0; + +output [WIDTH-1:0] PORT_RW_RD_DATA; +input [WIDTH-1:0] PORT_RW_WR_DATA; +input [OPTION_ABITS-1:0] PORT_RW_ADDR; +input PORT_RW_WR_EN; +input PORT_RW_CLK; + +function [(1 << OPTION_ABITS)-1:0] init_slice; + input integer idx; + integer i; + for (i = 0; i < (1 << OPTION_ABITS); i = i + 1) + init_slice[i] = INIT[i * WIDTH + idx]; +endfunction + +function [(2 << OPTION_ABITS)-1:0] init_slice2; + input integer idx; + integer i; + for (i = 0; i < (1 << OPTION_ABITS); i = i + 1) + init_slice2[2 * i +: 2] = INIT[i * WIDTH + idx * 2 +: 2]; +endfunction + +generate +case(OPTION_ABITS) +5: if (WIDTH == 8) + RAM32M + #( + .INIT_D(init_slice2(0)), + .INIT_C(init_slice2(1)), + .INIT_B(init_slice2(2)), + .INIT_A(init_slice2(3)), + ) + _TECHMAP_REPLACE_ + ( + .DOA(PORT_RW_RD_DATA[7:6]), + .DOB(PORT_RW_RD_DATA[5:4]), + .DOC(PORT_RW_RD_DATA[3:2]), + .DOD(PORT_RW_RD_DATA[1:0]), + .DIA(PORT_RW_WR_DATA[7:6]), + .DIB(PORT_RW_WR_DATA[5:4]), + .DIC(PORT_RW_WR_DATA[3:2]), + .DID(PORT_RW_WR_DATA[1:0]), + .ADDRA(PORT_RW_ADDR), + .ADDRB(PORT_RW_ADDR), + .ADDRC(PORT_RW_ADDR), + .ADDRD(PORT_RW_ADDR), + .WE(PORT_RW_WR_EN), + .WCLK(PORT_RW_CLK), + ); +else + RAM32M16 + #( + .INIT_H(init_slice2(0)), + .INIT_G(init_slice2(1)), + .INIT_F(init_slice2(2)), + .INIT_E(init_slice2(3)), + .INIT_D(init_slice2(4)), + .INIT_C(init_slice2(5)), + .INIT_B(init_slice2(6)), + .INIT_A(init_slice2(7)), + ) + _TECHMAP_REPLACE_ + ( + .DOA(PORT_RW_RD_DATA[15:14]), + .DOB(PORT_RW_RD_DATA[13:12]), + .DOC(PORT_RW_RD_DATA[11:10]), + .DOD(PORT_RW_RD_DATA[9:8]), + .DOE(PORT_RW_RD_DATA[7:6]), + .DOF(PORT_RW_RD_DATA[5:4]), + .DOG(PORT_RW_RD_DATA[3:2]), + .DOH(PORT_RW_RD_DATA[1:0]), + .DIA(PORT_RW_WR_DATA[15:14]), + .DIB(PORT_RW_WR_DATA[13:12]), + .DIC(PORT_RW_WR_DATA[11:10]), + .DID(PORT_RW_WR_DATA[9:8]), + .DIE(PORT_RW_WR_DATA[7:6]), + .DIF(PORT_RW_WR_DATA[5:4]), + .DIG(PORT_RW_WR_DATA[3:2]), + .DIH(PORT_RW_WR_DATA[1:0]), + .ADDRA(PORT_RW_ADDR), + .ADDRB(PORT_RW_ADDR), + .ADDRC(PORT_RW_ADDR), + .ADDRD(PORT_RW_ADDR), + .ADDRE(PORT_RW_ADDR), + .ADDRF(PORT_RW_ADDR), + .ADDRG(PORT_RW_ADDR), + .ADDRH(PORT_RW_ADDR), + .WE(PORT_RW_WR_EN), + .WCLK(PORT_RW_CLK), + ); +6: begin + genvar i; + for (i = 0; i < WIDTH; i = i + 1) + if (BITS_USED[i]) + RAM64X1S + #( + .INIT(init_slice(i)), + ) + slice + ( + .A0(PORT_RW_ADDR[0]), + .A1(PORT_RW_ADDR[1]), + .A2(PORT_RW_ADDR[2]), + .A3(PORT_RW_ADDR[3]), + .A4(PORT_RW_ADDR[4]), + .A5(PORT_RW_ADDR[5]), + .D(PORT_RW_WR_DATA[i]), + .O(PORT_RW_RD_DATA[i]), + .WE(PORT_RW_WR_EN), + .WCLK(PORT_RW_CLK), + ); +end +7: begin + genvar i; + for (i = 0; i < WIDTH; i = i + 1) + if (BITS_USED[i]) + RAM128X1S + #( + .INIT(init_slice(i)), + ) + slice + ( + .A0(PORT_RW_ADDR[0]), + .A1(PORT_RW_ADDR[1]), + .A2(PORT_RW_ADDR[2]), + .A3(PORT_RW_ADDR[3]), + .A4(PORT_RW_ADDR[4]), + .A5(PORT_RW_ADDR[5]), + .A6(PORT_RW_ADDR[6]), + .D(PORT_RW_WR_DATA[i]), + .O(PORT_RW_RD_DATA[i]), + .WE(PORT_RW_WR_EN), + .WCLK(PORT_RW_CLK), + ); +end +8: begin + genvar i; + for (i = 0; i < WIDTH; i = i + 1) + if (BITS_USED[i]) + RAM256X1S + #( + .INIT(init_slice(i)), + ) + slice + ( + .A(PORT_RW_ADDR), + .D(PORT_RW_WR_DATA[i]), + .O(PORT_RW_RD_DATA[i]), + .WE(PORT_RW_WR_EN), + .WCLK(PORT_RW_CLK), + ); +end +9: begin + genvar i; + for (i = 0; i < WIDTH; i = i + 1) + if (BITS_USED[i]) + RAM512X1S + #( + .INIT(init_slice(i)), + ) + slice + ( + .A(PORT_RW_ADDR), + .D(PORT_RW_WR_DATA[i]), + .O(PORT_RW_RD_DATA[i]), + .WE(PORT_RW_WR_EN), + .WCLK(PORT_RW_CLK), + ); +end +default: + $error("invalid OPTION_ABITS/WIDTH combination"); +endcase +endgenerate + +endmodule + + +module $__XILINX_LUTRAM_DP_ (...); + +parameter INIT = 0; +parameter OPTION_ABITS = 5; +parameter WIDTH = 4; +parameter BITS_USED = 0; + +output [WIDTH-1:0] PORT_RW_RD_DATA; +input [WIDTH-1:0] PORT_RW_WR_DATA; +input [OPTION_ABITS-1:0] PORT_RW_ADDR; +input PORT_RW_WR_EN; +input PORT_RW_CLK; + +output [WIDTH-1:0] PORT_R_RD_DATA; +input [OPTION_ABITS-1:0] PORT_R_ADDR; + +function [(1 << OPTION_ABITS)-1:0] init_slice; + input integer idx; + integer i; + for (i = 0; i < (1 << OPTION_ABITS); i = i + 1) + init_slice[i] = INIT[i * WIDTH + idx]; +endfunction + +function [(2 << OPTION_ABITS)-1:0] init_slice2; + input integer idx; + integer i; + for (i = 0; i < (1 << OPTION_ABITS); i = i + 1) + init_slice2[2 * i +: 2] = INIT[i * WIDTH + idx * 2 +: 2]; +endfunction + +generate +case (OPTION_ABITS) +5: if (WIDTH == 4) + RAM32M + #( + .INIT_D(init_slice2(0)), + .INIT_C(init_slice2(0)), + .INIT_B(init_slice2(1)), + .INIT_A(init_slice2(1)), + ) + _TECHMAP_REPLACE_ + ( + .DOA(PORT_R_RD_DATA[3:2]), + .DOB(PORT_RW_RD_DATA[3:2]), + .DOC(PORT_R_RD_DATA[1:0]), + .DOD(PORT_RW_RD_DATA[1:0]), + .DIA(PORT_RW_WR_DATA[3:2]), + .DIB(PORT_RW_WR_DATA[3:2]), + .DIC(PORT_RW_WR_DATA[1:0]), + .DID(PORT_RW_WR_DATA[1:0]), + .ADDRA(PORT_R_ADDR), + .ADDRB(PORT_RW_ADDR), + .ADDRC(PORT_R_ADDR), + .ADDRD(PORT_RW_ADDR), + .WE(PORT_RW_WR_EN), + .WCLK(PORT_RW_CLK), + ); +else + RAM32M16 + #( + .INIT_H(init_slice2(0)), + .INIT_G(init_slice2(0)), + .INIT_F(init_slice2(1)), + .INIT_E(init_slice2(1)), + .INIT_D(init_slice2(2)), + .INIT_C(init_slice2(2)), + .INIT_B(init_slice2(3)), + .INIT_A(init_slice2(3)), + ) + _TECHMAP_REPLACE_ + ( + .DOA(PORT_R_RD_DATA[7:6]), + .DOB(PORT_RW_RD_DATA[7:6]), + .DOC(PORT_R_RD_DATA[5:4]), + .DOD(PORT_RW_RD_DATA[5:4]), + .DOE(PORT_R_RD_DATA[3:2]), + .DOF(PORT_RW_RD_DATA[3:2]), + .DOG(PORT_R_RD_DATA[1:0]), + .DOH(PORT_RW_RD_DATA[1:0]), + .DIA(PORT_RW_WR_DATA[7:6]), + .DIB(PORT_RW_WR_DATA[7:6]), + .DIC(PORT_RW_WR_DATA[5:4]), + .DID(PORT_RW_WR_DATA[5:4]), + .DIE(PORT_RW_WR_DATA[3:2]), + .DIF(PORT_RW_WR_DATA[3:2]), + .DIG(PORT_RW_WR_DATA[1:0]), + .DIH(PORT_RW_WR_DATA[1:0]), + .ADDRA(PORT_R_ADDR), + .ADDRB(PORT_RW_ADDR), + .ADDRC(PORT_R_ADDR), + .ADDRD(PORT_RW_ADDR), + .ADDRE(PORT_R_ADDR), + .ADDRF(PORT_RW_ADDR), + .ADDRG(PORT_R_ADDR), + .ADDRH(PORT_RW_ADDR), + .WE(PORT_RW_WR_EN), + .WCLK(PORT_RW_CLK), + ); +6: begin + genvar i; + for (i = 0; i < WIDTH; i = i + 1) + if (BITS_USED[i]) + RAM64X1D + #( + .INIT(init_slice(i)), + ) + slice + ( + .A0(PORT_RW_ADDR[0]), + .A1(PORT_RW_ADDR[1]), + .A2(PORT_RW_ADDR[2]), + .A3(PORT_RW_ADDR[3]), + .A4(PORT_RW_ADDR[4]), + .A5(PORT_RW_ADDR[5]), + .D(PORT_RW_WR_DATA[i]), + .SPO(PORT_RW_RD_DATA[i]), + .WE(PORT_RW_WR_EN), + .WCLK(PORT_RW_CLK), + .DPRA0(PORT_R_ADDR[0]), + .DPRA1(PORT_R_ADDR[1]), + .DPRA2(PORT_R_ADDR[2]), + .DPRA3(PORT_R_ADDR[3]), + .DPRA4(PORT_R_ADDR[4]), + .DPRA5(PORT_R_ADDR[5]), + .DPO(PORT_R_RD_DATA[i]), + ); +end +7: begin + genvar i; + for (i = 0; i < WIDTH; i = i + 1) + if (BITS_USED[i]) + RAM128X1D + #( + .INIT(init_slice(i)), + ) + slice + ( + .A(PORT_RW_ADDR), + .D(PORT_RW_WR_DATA[i]), + .SPO(PORT_RW_RD_DATA[i]), + .WE(PORT_RW_WR_EN), + .WCLK(PORT_RW_CLK), + .DPRA(PORT_R_ADDR), + .DPO(PORT_R_RD_DATA[i]), + ); +end +8: begin + genvar i; + for (i = 0; i < WIDTH; i = i + 1) + if (BITS_USED[i]) + RAM256X1D + #( + .INIT(init_slice(i)), + ) + slice + ( + .A(PORT_RW_ADDR), + .D(PORT_RW_WR_DATA[i]), + .SPO(PORT_RW_RD_DATA[i]), + .WE(PORT_RW_WR_EN), + .WCLK(PORT_RW_CLK), + .DPRA(PORT_R_ADDR), + .DPO(PORT_R_RD_DATA[i]), + ); +end +default: + $error("invalid OPTION_ABITS/WIDTH combination"); +endcase +endgenerate + +endmodule + + +module $__XILINX_LUTRAM_QP_ (...); + +parameter INIT = 0; +parameter OPTION_ABITS = 5; +parameter WIDTH = 2; +parameter BITS_USED = 0; + +output [WIDTH-1:0] PORT_RW_RD_DATA; +input [WIDTH-1:0] PORT_RW_WR_DATA; +input [OPTION_ABITS-1:0] PORT_RW_ADDR; +input PORT_RW_WR_EN; +input PORT_RW_CLK; + +output [WIDTH-1:0] PORT_R0_RD_DATA; +input [OPTION_ABITS-1:0] PORT_R0_ADDR; +output [WIDTH-1:0] PORT_R1_RD_DATA; +input [OPTION_ABITS-1:0] PORT_R1_ADDR; +output [WIDTH-1:0] PORT_R2_RD_DATA; +input [OPTION_ABITS-1:0] PORT_R2_ADDR; + +function [(1 << OPTION_ABITS)-1:0] init_slice; + input integer idx; + integer i; + for (i = 0; i < (1 << OPTION_ABITS); i = i + 1) + init_slice[i] = INIT[i * WIDTH + idx]; +endfunction + +function [(2 << OPTION_ABITS)-1:0] init_slice2; + input integer idx; + integer i; + for (i = 0; i < (1 << OPTION_ABITS); i = i + 1) + init_slice2[2 * i +: 2] = INIT[i * WIDTH + idx * 2 +: 2]; +endfunction + +generate +case (OPTION_ABITS) +5: if (WIDTH == 2) + RAM32M + #( + .INIT_D(init_slice2(0)), + .INIT_C(init_slice2(0)), + .INIT_B(init_slice2(0)), + .INIT_A(init_slice2(0)), + ) + _TECHMAP_REPLACE_ + ( + .DOA(PORT_R2_RD_DATA[1:0]), + .DOB(PORT_R1_RD_DATA[1:0]), + .DOC(PORT_R0_RD_DATA[1:0]), + .DOD(PORT_RW_RD_DATA[1:0]), + .DIA(PORT_RW_WR_DATA[1:0]), + .DIB(PORT_RW_WR_DATA[1:0]), + .DIC(PORT_RW_WR_DATA[1:0]), + .DID(PORT_RW_WR_DATA[1:0]), + .ADDRA(PORT_R2_ADDR), + .ADDRB(PORT_R1_ADDR), + .ADDRC(PORT_R0_ADDR), + .ADDRD(PORT_RW_ADDR), + .WE(PORT_RW_WR_EN), + .WCLK(PORT_RW_CLK), + ); +else + RAM32M16 + #( + .INIT_H(init_slice2(0)), + .INIT_G(init_slice2(0)), + .INIT_F(init_slice2(0)), + .INIT_E(init_slice2(0)), + .INIT_D(init_slice2(1)), + .INIT_C(init_slice2(1)), + .INIT_B(init_slice2(1)), + .INIT_A(init_slice2(1)), + ) + _TECHMAP_REPLACE_ + ( + .DOA(PORT_R2_RD_DATA[3:2]), + .DOB(PORT_R1_RD_DATA[3:2]), + .DOC(PORT_R0_RD_DATA[3:2]), + .DOD(PORT_RW_RD_DATA[3:2]), + .DOE(PORT_R2_RD_DATA[1:0]), + .DOF(PORT_R1_RD_DATA[1:0]), + .DOG(PORT_R0_RD_DATA[1:0]), + .DOH(PORT_RW_RD_DATA[1:0]), + .DIA(PORT_RW_WR_DATA[3:2]), + .DIB(PORT_RW_WR_DATA[3:2]), + .DIC(PORT_RW_WR_DATA[3:2]), + .DID(PORT_RW_WR_DATA[3:2]), + .DIE(PORT_RW_WR_DATA[1:0]), + .DIF(PORT_RW_WR_DATA[1:0]), + .DIG(PORT_RW_WR_DATA[1:0]), + .DIH(PORT_RW_WR_DATA[1:0]), + .ADDRA(PORT_R2_ADDR), + .ADDRB(PORT_R1_ADDR), + .ADDRC(PORT_R0_ADDR), + .ADDRD(PORT_RW_ADDR), + .ADDRE(PORT_R2_ADDR), + .ADDRF(PORT_R1_ADDR), + .ADDRG(PORT_R0_ADDR), + .ADDRH(PORT_RW_ADDR), + .WE(PORT_RW_WR_EN), + .WCLK(PORT_RW_CLK), + ); +6: if (WIDTH == 1) + RAM64M + #( + .INIT_D(init_slice(0)), + .INIT_C(init_slice(0)), + .INIT_B(init_slice(0)), + .INIT_A(init_slice(0)), + ) + _TECHMAP_REPLACE_ + ( + .DOA(PORT_R2_RD_DATA[0]), + .DOB(PORT_R1_RD_DATA[0]), + .DOC(PORT_R0_RD_DATA[0]), + .DOD(PORT_RW_RD_DATA[0]), + .DIA(PORT_RW_WR_DATA[0]), + .DIB(PORT_RW_WR_DATA[0]), + .DIC(PORT_RW_WR_DATA[0]), + .DID(PORT_RW_WR_DATA[0]), + .ADDRA(PORT_R2_ADDR), + .ADDRB(PORT_R1_ADDR), + .ADDRC(PORT_R0_ADDR), + .ADDRD(PORT_RW_ADDR), + .WE(PORT_RW_WR_EN), + .WCLK(PORT_RW_CLK), + ); +else + RAM64M8 + #( + .INIT_H(init_slice(0)), + .INIT_G(init_slice(0)), + .INIT_F(init_slice(0)), + .INIT_E(init_slice(0)), + .INIT_D(init_slice(1)), + .INIT_C(init_slice(1)), + .INIT_B(init_slice(1)), + .INIT_A(init_slice(1)), + ) + _TECHMAP_REPLACE_ + ( + .DOA(PORT_R2_RD_DATA[1]), + .DOB(PORT_R1_RD_DATA[1]), + .DOC(PORT_R0_RD_DATA[1]), + .DOD(PORT_RW_RD_DATA[1]), + .DOE(PORT_R2_RD_DATA[0]), + .DOF(PORT_R1_RD_DATA[0]), + .DOG(PORT_R0_RD_DATA[0]), + .DOH(PORT_RW_RD_DATA[0]), + .DIA(PORT_RW_WR_DATA[1]), + .DIB(PORT_RW_WR_DATA[1]), + .DIC(PORT_RW_WR_DATA[1]), + .DID(PORT_RW_WR_DATA[1]), + .DIE(PORT_RW_WR_DATA[0]), + .DIF(PORT_RW_WR_DATA[0]), + .DIG(PORT_RW_WR_DATA[0]), + .DIH(PORT_RW_WR_DATA[0]), + .ADDRA(PORT_R2_ADDR), + .ADDRB(PORT_R1_ADDR), + .ADDRC(PORT_R0_ADDR), + .ADDRD(PORT_RW_ADDR), + .ADDRE(PORT_R2_ADDR), + .ADDRF(PORT_R1_ADDR), + .ADDRG(PORT_R0_ADDR), + .ADDRH(PORT_RW_ADDR), + .WE(PORT_RW_WR_EN), + .WCLK(PORT_RW_CLK), + ); +default: + $error("invalid OPTION_ABITS/WIDTH combination"); +endcase +endgenerate + +endmodule + + +module $__XILINX_LUTRAM_OP_ (...); + +parameter INIT = 0; +parameter OPTION_ABITS = 5; +parameter WIDTH = 2; +parameter BITS_USED = 0; + +output [WIDTH-1:0] PORT_RW_RD_DATA; +input [WIDTH-1:0] PORT_RW_WR_DATA; +input [OPTION_ABITS-1:0] PORT_RW_ADDR; +input PORT_RW_WR_EN; +input PORT_RW_CLK; + +output [WIDTH-1:0] PORT_R0_RD_DATA; +input [OPTION_ABITS-1:0] PORT_R0_ADDR; +output [WIDTH-1:0] PORT_R1_RD_DATA; +input [OPTION_ABITS-1:0] PORT_R1_ADDR; +output [WIDTH-1:0] PORT_R2_RD_DATA; +input [OPTION_ABITS-1:0] PORT_R2_ADDR; +output [WIDTH-1:0] PORT_R3_RD_DATA; +input [OPTION_ABITS-1:0] PORT_R3_ADDR; +output [WIDTH-1:0] PORT_R4_RD_DATA; +input [OPTION_ABITS-1:0] PORT_R4_ADDR; +output [WIDTH-1:0] PORT_R5_RD_DATA; +input [OPTION_ABITS-1:0] PORT_R5_ADDR; +output [WIDTH-1:0] PORT_R6_RD_DATA; +input [OPTION_ABITS-1:0] PORT_R6_ADDR; + +generate +case (OPTION_ABITS) +5: RAM32M16 + #( + .INIT_H(INIT), + .INIT_G(INIT), + .INIT_F(INIT), + .INIT_E(INIT), + .INIT_D(INIT), + .INIT_C(INIT), + .INIT_B(INIT), + .INIT_A(INIT), + ) + _TECHMAP_REPLACE_ + ( + .DOA(PORT_R6_RD_DATA), + .DOB(PORT_R5_RD_DATA), + .DOC(PORT_R4_RD_DATA), + .DOD(PORT_R3_RD_DATA), + .DOE(PORT_R2_RD_DATA), + .DOF(PORT_R1_RD_DATA), + .DOG(PORT_R0_RD_DATA), + .DOH(PORT_RW_RD_DATA), + .DIA(PORT_RW_WR_DATA), + .DIB(PORT_RW_WR_DATA), + .DIC(PORT_RW_WR_DATA), + .DID(PORT_RW_WR_DATA), + .DIE(PORT_RW_WR_DATA), + .DIF(PORT_RW_WR_DATA), + .DIG(PORT_RW_WR_DATA), + .DIH(PORT_RW_WR_DATA), + .ADDRA(PORT_R6_ADDR), + .ADDRB(PORT_R5_ADDR), + .ADDRC(PORT_R4_ADDR), + .ADDRD(PORT_R3_ADDR), + .ADDRE(PORT_R2_ADDR), + .ADDRF(PORT_R1_ADDR), + .ADDRG(PORT_R0_ADDR), + .ADDRH(PORT_RW_ADDR), + .WE(PORT_RW_WR_EN), + .WCLK(PORT_RW_CLK), + ); +6: RAM64M8 + #( + .INIT_H(INIT), + .INIT_G(INIT), + .INIT_F(INIT), + .INIT_E(INIT), + .INIT_D(INIT), + .INIT_C(INIT), + .INIT_B(INIT), + .INIT_A(INIT), + ) + _TECHMAP_REPLACE_ + ( + .DOA(PORT_R6_RD_DATA), + .DOB(PORT_R5_RD_DATA), + .DOC(PORT_R4_RD_DATA), + .DOD(PORT_R3_RD_DATA), + .DOE(PORT_R2_RD_DATA), + .DOF(PORT_R1_RD_DATA), + .DOG(PORT_R0_RD_DATA), + .DOH(PORT_RW_RD_DATA), + .DIA(PORT_RW_WR_DATA), + .DIB(PORT_RW_WR_DATA), + .DIC(PORT_RW_WR_DATA), + .DID(PORT_RW_WR_DATA), + .DIE(PORT_RW_WR_DATA), + .DIF(PORT_RW_WR_DATA), + .DIG(PORT_RW_WR_DATA), + .DIH(PORT_RW_WR_DATA), + .ADDRA(PORT_R6_ADDR), + .ADDRB(PORT_R5_ADDR), + .ADDRC(PORT_R4_ADDR), + .ADDRD(PORT_R3_ADDR), + .ADDRE(PORT_R2_ADDR), + .ADDRF(PORT_R1_ADDR), + .ADDRG(PORT_R0_ADDR), + .ADDRH(PORT_RW_ADDR), + .WE(PORT_RW_WR_EN), + .WCLK(PORT_RW_CLK), + ); +default: + $error("invalid OPTION_ABITS/WIDTH combination"); +endcase +endgenerate + +endmodule + + +module $__XILINX_LUTRAM_SDP_ (...); + +parameter INIT = 0; +parameter OPTION_ABITS = 5; +parameter WIDTH = 6; +parameter BITS_USED = 0; + +input [WIDTH-1:0] PORT_W_WR_DATA; +input [OPTION_ABITS-1:0] PORT_W_ADDR; +input PORT_W_WR_EN; +input PORT_W_CLK; + +output [WIDTH-1:0] PORT_R_RD_DATA; +input [OPTION_ABITS-1:0] PORT_R_ADDR; + +function [(1 << OPTION_ABITS)-1:0] init_slice; + input integer idx; + integer i; + for (i = 0; i < (1 << OPTION_ABITS); i = i + 1) + init_slice[i] = INIT[i * WIDTH + idx]; +endfunction + +function [(2 << OPTION_ABITS)-1:0] init_slice2; + input integer idx; + integer i; + for (i = 0; i < (1 << OPTION_ABITS); i = i + 1) + init_slice2[2 * i +: 2] = INIT[i * WIDTH + idx * 2 +: 2]; +endfunction + +generate +case (OPTION_ABITS) +5: if (WIDTH == 6) + RAM32M + #( + .INIT_C(init_slice2(0)), + .INIT_B(init_slice2(1)), + .INIT_A(init_slice2(2)), + ) + _TECHMAP_REPLACE_ + ( + .DOA(PORT_R_RD_DATA[5:4]), + .DOB(PORT_R_RD_DATA[3:2]), + .DOC(PORT_R_RD_DATA[1:0]), + .DIA(PORT_W_WR_DATA[5:4]), + .DIB(PORT_W_WR_DATA[3:2]), + .DIC(PORT_W_WR_DATA[1:0]), + .ADDRA(PORT_R_ADDR), + .ADDRB(PORT_R_ADDR), + .ADDRC(PORT_R_ADDR), + .ADDRD(PORT_W_ADDR), + .WE(PORT_W_WR_EN), + .WCLK(PORT_W_CLK), + ); +else + RAM32M16 + #( + .INIT_G(init_slice2(0)), + .INIT_F(init_slice2(1)), + .INIT_E(init_slice2(2)), + .INIT_D(init_slice2(3)), + .INIT_C(init_slice2(4)), + .INIT_B(init_slice2(5)), + .INIT_A(init_slice2(6)), + ) + _TECHMAP_REPLACE_ + ( + .DOA(PORT_R_RD_DATA[13:12]), + .DOB(PORT_R_RD_DATA[11:10]), + .DOC(PORT_R_RD_DATA[9:8]), + .DOD(PORT_R_RD_DATA[7:6]), + .DOE(PORT_R_RD_DATA[5:4]), + .DOF(PORT_R_RD_DATA[3:2]), + .DOG(PORT_R_RD_DATA[1:0]), + .DIA(PORT_W_WR_DATA[13:12]), + .DIB(PORT_W_WR_DATA[11:10]), + .DIC(PORT_W_WR_DATA[9:8]), + .DID(PORT_W_WR_DATA[7:6]), + .DIE(PORT_W_WR_DATA[5:4]), + .DIF(PORT_W_WR_DATA[3:2]), + .DIG(PORT_W_WR_DATA[1:0]), + .ADDRA(PORT_R_ADDR), + .ADDRB(PORT_R_ADDR), + .ADDRC(PORT_R_ADDR), + .ADDRD(PORT_R_ADDR), + .ADDRE(PORT_R_ADDR), + .ADDRF(PORT_R_ADDR), + .ADDRG(PORT_R_ADDR), + .ADDRH(PORT_W_ADDR), + .WE(PORT_W_WR_EN), + .WCLK(PORT_W_CLK), + ); +6: if (WIDTH == 3) + RAM64M + #( + .INIT_C(init_slice(0)), + .INIT_B(init_slice(1)), + .INIT_A(init_slice(2)), + ) + _TECHMAP_REPLACE_ + ( + .DOA(PORT_R_RD_DATA[2]), + .DOB(PORT_R_RD_DATA[1]), + .DOC(PORT_R_RD_DATA[0]), + .DIA(PORT_W_WR_DATA[2]), + .DIB(PORT_W_WR_DATA[1]), + .DIC(PORT_W_WR_DATA[0]), + .ADDRA(PORT_R_ADDR), + .ADDRB(PORT_R_ADDR), + .ADDRC(PORT_R_ADDR), + .ADDRD(PORT_W_ADDR), + .WE(PORT_W_WR_EN), + .WCLK(PORT_W_CLK), + ); +else + RAM64M8 + #( + .INIT_G(init_slice(0)), + .INIT_F(init_slice(1)), + .INIT_E(init_slice(2)), + .INIT_D(init_slice(3)), + .INIT_C(init_slice(4)), + .INIT_B(init_slice(5)), + .INIT_A(init_slice(6)), + ) + _TECHMAP_REPLACE_ + ( + .DOA(PORT_R_RD_DATA[6]), + .DOB(PORT_R_RD_DATA[5]), + .DOC(PORT_R_RD_DATA[4]), + .DOD(PORT_R_RD_DATA[3]), + .DOE(PORT_R_RD_DATA[2]), + .DOF(PORT_R_RD_DATA[1]), + .DOG(PORT_R_RD_DATA[0]), + .DIA(PORT_W_WR_DATA[6]), + .DIB(PORT_W_WR_DATA[5]), + .DIC(PORT_W_WR_DATA[4]), + .DID(PORT_W_WR_DATA[3]), + .DIE(PORT_W_WR_DATA[2]), + .DIF(PORT_W_WR_DATA[1]), + .DIG(PORT_W_WR_DATA[0]), + .ADDRA(PORT_R_ADDR), + .ADDRB(PORT_R_ADDR), + .ADDRC(PORT_R_ADDR), + .ADDRD(PORT_R_ADDR), + .ADDRE(PORT_R_ADDR), + .ADDRF(PORT_R_ADDR), + .ADDRG(PORT_R_ADDR), + .ADDRH(PORT_W_ADDR), + .WE(PORT_W_WR_EN), + .WCLK(PORT_W_CLK), + ); +default: + $error("invalid OPTION_ABITS/WIDTH combination"); +endcase +endgenerate + +endmodule + + +module $__XILINX_LUTRAM_64X8SW_ (...); + +parameter INIT = 0; +parameter OPTION_ABITS = 9; +parameter PORT_RW_WR_WIDTH = 1; +parameter PORT_RW_RD_WIDTH = 8; + +output [PORT_RW_RD_WIDTH-1:0] PORT_RW_RD_DATA; +input [PORT_RW_WR_WIDTH-1:0] PORT_RW_WR_DATA; +input [OPTION_ABITS-1:0] PORT_RW_ADDR; +input PORT_RW_WR_EN; +input PORT_RW_CLK; + +function [63:0] init_slice; + input integer idx; + integer i; + for (i = 0; i < 64; i = i + 1) + init_slice[i] = INIT[i * 8 + idx]; +endfunction + +RAM64X8SW +#( + .INIT_A(init_slice(7)), + .INIT_B(init_slice(6)), + .INIT_C(init_slice(5)), + .INIT_D(init_slice(4)), + .INIT_E(init_slice(3)), + .INIT_F(init_slice(2)), + .INIT_G(init_slice(1)), + .INIT_H(init_slice(0)), +) +_TECHMAP_REPLACE_ +( + .A(PORT_RW_ADDR[8:3]), + .WSEL(PORT_RW_ADDR[2:0]), + .D(PORT_RW_WR_DATA), + .O(PORT_RW_RD_DATA), + .WE(PORT_RW_WR_EN), + .WCLK(PORT_RW_CLK), +); + +endmodule + + +module $__XILINX_LUTRAM_32X16DR8_ (...); + +parameter OPTION_ABITS = 6; +parameter BITS_USED = 0; +parameter PORT_W_WIDTH = 14; +parameter PORT_R_WIDTH = 7; + +input [PORT_W_WIDTH-1:0] PORT_W_WR_DATA; +input [OPTION_ABITS-1:0] PORT_W_ADDR; +input PORT_W_WR_EN; +input PORT_W_CLK; + +output [PORT_R_WIDTH-1:0] PORT_R_RD_DATA; +input [OPTION_ABITS-1:0] PORT_R_ADDR; + +RAM32X16DR8 _TECHMAP_REPLACE_ +( + .DOA(PORT_R_RD_DATA[6]), + .DOB(PORT_R_RD_DATA[5]), + .DOC(PORT_R_RD_DATA[4]), + .DOD(PORT_R_RD_DATA[3]), + .DOE(PORT_R_RD_DATA[2]), + .DOF(PORT_R_RD_DATA[1]), + .DOG(PORT_R_RD_DATA[0]), + .DIA({PORT_W_WR_DATA[13], PORT_W_WR_DATA[6]}), + .DIB({PORT_W_WR_DATA[12], PORT_W_WR_DATA[5]}), + .DIC({PORT_W_WR_DATA[11], PORT_W_WR_DATA[4]}), + .DID({PORT_W_WR_DATA[10], PORT_W_WR_DATA[3]}), + .DIE({PORT_W_WR_DATA[9], PORT_W_WR_DATA[2]}), + .DIF({PORT_W_WR_DATA[8], PORT_W_WR_DATA[1]}), + .DIG({PORT_W_WR_DATA[7], PORT_W_WR_DATA[0]}), + .ADDRA(PORT_R_ADDR), + .ADDRB(PORT_R_ADDR), + .ADDRC(PORT_R_ADDR), + .ADDRD(PORT_R_ADDR), + .ADDRE(PORT_R_ADDR), + .ADDRF(PORT_R_ADDR), + .ADDRG(PORT_R_ADDR), + .ADDRH(PORT_W_ADDR[5:1]), + .WE(PORT_W_WR_EN), + .WCLK(PORT_W_CLK), +); + +endmodule diff --git a/resources/netlist/resources/kernel/share/xilinx/lutrams_xcu.txt b/resources/netlist/resources/kernel/share/xilinx/lutrams_xcu.txt new file mode 100644 index 0000000..8062250 --- /dev/null +++ b/resources/netlist/resources/kernel/share/xilinx/lutrams_xcu.txt @@ -0,0 +1,162 @@ +# LUT RAMs for Ultrascale. +# The corresponding mapping file is lutrams_xc5v_map.v + +# Single-port RAMs. + +ram distributed $__XILINX_LUTRAM_SP_ { + cost 16; + widthscale; + option "ABITS" 5 { + abits 5; + widths 16 global; + } + option "ABITS" 6 { + abits 6; + widths 8 global; + } + option "ABITS" 7 { + abits 7; + widths 4 global; + } + option "ABITS" 8 { + abits 8; + widths 2 global; + } + option "ABITS" 16 { + abits 16; + widths 1 global; + } + init any; + prune_rom; + port arsw "RW" { + clock posedge; + } +} + +# Dual-port RAMs. + +ram distributed $__XILINX_LUTRAM_DP_ { + cost 16; + widthscale; + option "ABITS" 5 { + abits 5; + widths 8 global; + } + option "ABITS" 6 { + abits 6; + widths 4 global; + } + option "ABITS" 7 { + abits 7; + widths 2 global; + } + option "ABITS" 8 { + abits 8; + widths 1 global; + } + init any; + prune_rom; + port arsw "RW" { + clock posedge; + } + port ar "R" { + } +} + +# Quad-port RAMs. + +ram distributed $__XILINX_LUTRAM_QP_ { + cost 16; + widthscale; + option "ABITS" 5 { + abits 5; + widths 4 global; + } + option "ABITS" 6 { + abits 6; + widths 2 global; + } + init any; + prune_rom; + port arsw "RW" { + clock posedge; + } + port ar "R0" "R1" "R2" { + } +} + +# Octal-port RAMs. + +ram distributed $__XILINX_LUTRAM_OP_ { + cost 16; + widthscale; + option "ABITS" 5 { + abits 5; + widths 2 global; + } + option "ABITS" 6 { + abits 6; + widths 1 global; + } + init any; + prune_rom; + port arsw "RW" { + clock posedge; + } + port ar "R0" "R1" "R2" "R3" "R4" "R5" "R6" { + } +} + +# Simple dual port RAMs. + +ram distributed $__XILINX_LUTRAM_SDP_ { + cost 16; + widthscale; + option "ABITS" 5 { + abits 5; + widths 14 global; + } + option "ABITS" 6 { + abits 6; + widths 7 global; + } + init any; + prune_rom; + port sw "W" { + clock posedge; + } + port ar "R" { + } +} + +# Wide-read RAM. + +ram distributed $__XILINX_LUTRAM_64X8SW_ { + cost 16; + abits 9; + widths 1 2 4 8 per_port; + init any; + prune_rom; + port arsw "RW" { + width rd 8 wr 1; + clock posedge; + } +} + +# Wide-write RAM. + +ram distributed $__XILINX_LUTRAM_32X16DR8_ { + cost 16; + widthscale; + abits 6; + widths 7 14 per_port; + # Yes, no initialization capability. + prune_rom; + port sw "W" { + width 14; + clock posedge; + } + port ar "R" { + width 7; + } +} diff --git a/resources/netlist/resources/kernel/share/xilinx/lutrams_xcv.txt b/resources/netlist/resources/kernel/share/xilinx/lutrams_xcv.txt new file mode 100644 index 0000000..0bf17ae --- /dev/null +++ b/resources/netlist/resources/kernel/share/xilinx/lutrams_xcv.txt @@ -0,0 +1,59 @@ +# LUT RAMs for Virtex, Virtex 2, Spartan 3, Virtex 4. +# The corresponding mapping file is lutrams_xcv_map.v + +ram distributed $__XILINX_LUTRAM_SP_ { + width 1; + option "ABITS" 4 { + abits 4; + cost 3; + } + option "ABITS" 5 { + abits 5; + cost 5; + } + ifndef IS_VIRTEX { + option "ABITS" 6 { + abits 6; + cost 9; + } + } + ifdef IS_VIRTEX2 { + # RAM128X1S + option "ABITS" 7 { + abits 7; + cost 17; + } + } + init no_undef; + prune_rom; + port arsw "RW" { + clock posedge; + } +} + +ram distributed $__XILINX_LUTRAM_DP_ { + width 1; + option "ABITS" 4 { + abits 4; + cost 5; + } + ifdef IS_VIRTEX2 { + # RAM32X1D + option "ABITS" 5 { + abits 5; + cost 9; + } + # RAM64X1D + option "ABITS" 6 { + abits 6; + cost 17; + } + } + init no_undef; + prune_rom; + port arsw "RW" { + clock posedge; + } + port ar "R" { + } +} diff --git a/resources/netlist/resources/kernel/share/xilinx/lutrams_xcv_map.v b/resources/netlist/resources/kernel/share/xilinx/lutrams_xcv_map.v new file mode 100644 index 0000000..91a9694 --- /dev/null +++ b/resources/netlist/resources/kernel/share/xilinx/lutrams_xcv_map.v @@ -0,0 +1,177 @@ +// LUT RAMs for Virtex, Virtex 2, Spartan 3, Virtex 4. +// The corresponding definition file is lutrams_xcv.txt + +module $__XILINX_LUTRAM_SP_ (...); + +parameter INIT = 0; +parameter OPTION_ABITS = 4; + +output PORT_RW_RD_DATA; +input PORT_RW_WR_DATA; +input [OPTION_ABITS-1:0] PORT_RW_ADDR; +input PORT_RW_WR_EN; +input PORT_RW_CLK; + +generate +case(OPTION_ABITS) +4: RAM16X1S + #( + .INIT(INIT), + ) + _TECHMAP_REPLACE_ + ( + .A0(PORT_RW_ADDR[0]), + .A1(PORT_RW_ADDR[1]), + .A2(PORT_RW_ADDR[2]), + .A3(PORT_RW_ADDR[3]), + .D(PORT_RW_WR_DATA), + .O(PORT_RW_RD_DATA), + .WE(PORT_RW_WR_EN), + .WCLK(PORT_RW_CLK), + ); +5: RAM32X1S + #( + .INIT(INIT), + ) + _TECHMAP_REPLACE_ + ( + .A0(PORT_RW_ADDR[0]), + .A1(PORT_RW_ADDR[1]), + .A2(PORT_RW_ADDR[2]), + .A3(PORT_RW_ADDR[3]), + .A4(PORT_RW_ADDR[4]), + .D(PORT_RW_WR_DATA), + .O(PORT_RW_RD_DATA), + .WE(PORT_RW_WR_EN), + .WCLK(PORT_RW_CLK), + ); +6: RAM64X1S + #( + .INIT(INIT), + ) + _TECHMAP_REPLACE_ + ( + .A0(PORT_RW_ADDR[0]), + .A1(PORT_RW_ADDR[1]), + .A2(PORT_RW_ADDR[2]), + .A3(PORT_RW_ADDR[3]), + .A4(PORT_RW_ADDR[4]), + .A5(PORT_RW_ADDR[5]), + .D(PORT_RW_WR_DATA), + .O(PORT_RW_RD_DATA), + .WE(PORT_RW_WR_EN), + .WCLK(PORT_RW_CLK), + ); +7: RAM128X1S + #( + .INIT(INIT), + ) + _TECHMAP_REPLACE_ + ( + .A0(PORT_RW_ADDR[0]), + .A1(PORT_RW_ADDR[1]), + .A2(PORT_RW_ADDR[2]), + .A3(PORT_RW_ADDR[3]), + .A4(PORT_RW_ADDR[4]), + .A5(PORT_RW_ADDR[5]), + .A6(PORT_RW_ADDR[6]), + .D(PORT_RW_WR_DATA), + .O(PORT_RW_RD_DATA), + .WE(PORT_RW_WR_EN), + .WCLK(PORT_RW_CLK), + ); +default: + $error("invalid OPTION_ABITS"); +endcase +endgenerate + +endmodule + +module $__XILINX_LUTRAM_DP_ (...); + +parameter INIT = 0; +parameter OPTION_ABITS = 4; + +output PORT_RW_RD_DATA; +input PORT_RW_WR_DATA; +input [OPTION_ABITS-1:0] PORT_RW_ADDR; +input PORT_RW_WR_EN; +input PORT_RW_CLK; + +output PORT_R_RD_DATA; +input [OPTION_ABITS-1:0] PORT_R_ADDR; + +generate +case (OPTION_ABITS) +4: RAM16X1D + #( + .INIT(INIT), + ) + _TECHMAP_REPLACE_ + ( + .A0(PORT_RW_ADDR[0]), + .A1(PORT_RW_ADDR[1]), + .A2(PORT_RW_ADDR[2]), + .A3(PORT_RW_ADDR[3]), + .D(PORT_RW_WR_DATA), + .SPO(PORT_RW_RD_DATA), + .WE(PORT_RW_WR_EN), + .WCLK(PORT_RW_CLK), + .DPRA0(PORT_R_ADDR[0]), + .DPRA1(PORT_R_ADDR[1]), + .DPRA2(PORT_R_ADDR[2]), + .DPRA3(PORT_R_ADDR[3]), + .DPO(PORT_R_RD_DATA), + ); +5: RAM32X1D + #( + .INIT(INIT), + ) + _TECHMAP_REPLACE_ + ( + .A0(PORT_RW_ADDR[0]), + .A1(PORT_RW_ADDR[1]), + .A2(PORT_RW_ADDR[2]), + .A3(PORT_RW_ADDR[3]), + .A4(PORT_RW_ADDR[4]), + .D(PORT_RW_WR_DATA), + .SPO(PORT_RW_RD_DATA), + .WE(PORT_RW_WR_EN), + .WCLK(PORT_RW_CLK), + .DPRA0(PORT_R_ADDR[0]), + .DPRA1(PORT_R_ADDR[1]), + .DPRA2(PORT_R_ADDR[2]), + .DPRA3(PORT_R_ADDR[3]), + .DPRA4(PORT_R_ADDR[4]), + .DPO(PORT_R_RD_DATA), + ); +6: RAM64X1D + #( + .INIT(INIT), + ) + _TECHMAP_REPLACE_ + ( + .A0(PORT_RW_ADDR[0]), + .A1(PORT_RW_ADDR[1]), + .A2(PORT_RW_ADDR[2]), + .A3(PORT_RW_ADDR[3]), + .A4(PORT_RW_ADDR[4]), + .A5(PORT_RW_ADDR[5]), + .D(PORT_RW_WR_DATA), + .SPO(PORT_RW_RD_DATA), + .WE(PORT_RW_WR_EN), + .WCLK(PORT_RW_CLK), + .DPRA0(PORT_R_ADDR[0]), + .DPRA1(PORT_R_ADDR[1]), + .DPRA2(PORT_R_ADDR[2]), + .DPRA3(PORT_R_ADDR[3]), + .DPRA4(PORT_R_ADDR[4]), + .DPRA5(PORT_R_ADDR[5]), + .DPO(PORT_R_RD_DATA), + ); +default: + $error("invalid OPTION_ABITS"); +endcase +endgenerate + +endmodule diff --git a/resources/netlist/resources/kernel/share/xilinx/mux_map.v b/resources/netlist/resources/kernel/share/xilinx/mux_map.v new file mode 100644 index 0000000..f498344 --- /dev/null +++ b/resources/netlist/resources/kernel/share/xilinx/mux_map.v @@ -0,0 +1,74 @@ +/* + * yosys -- Yosys Open SYnthesis Suite + * + * Copyright (C) 2012 Claire Xenia Wolf + * 2019 Eddie Hung + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + */ + +// The purpose of these mapping rules is to allow preserve all (sufficiently +// wide) $shiftx cells during 'techmap' so that they can be mapped to hard +// resources, rather than being bit-blasted to gates during 'techmap' +// execution + +module \$shiftx (A, B, Y); + parameter A_SIGNED = 0; + parameter B_SIGNED = 0; + parameter A_WIDTH = 1; + parameter B_WIDTH = 1; + parameter Y_WIDTH = 1; + + (* force_downto *) + input [A_WIDTH-1:0] A; + (* force_downto *) + input [B_WIDTH-1:0] B; + (* force_downto *) + output [Y_WIDTH-1:0] Y; + + parameter [B_WIDTH-1:0] _TECHMAP_CONSTMSK_B_ = 0; + parameter [B_WIDTH-1:0] _TECHMAP_CONSTVAL_B_ = 0; + + generate + if (B_SIGNED) begin + if (_TECHMAP_CONSTMSK_B_[B_WIDTH-1] && (_TECHMAP_CONSTVAL_B_[B_WIDTH-1] == 1'b0 || _TECHMAP_CONSTVAL_B_[B_WIDTH-1] === 1'bx)) + // Optimisation to remove B_SIGNED if sign bit of B is constant-0 + \$shiftx #( + .A_SIGNED(A_SIGNED), + .B_SIGNED(0), + .A_WIDTH(A_WIDTH), + .B_WIDTH(B_WIDTH-1'd1), + .Y_WIDTH(Y_WIDTH) + ) _TECHMAP_REPLACE_ ( + .A(A), .B(B[B_WIDTH-2:0]), .Y(Y) + ); + else + wire _TECHMAP_FAIL_ = 1; + end + else begin + if (((A_WIDTH + Y_WIDTH - 1) / Y_WIDTH) < `MIN_MUX_INPUTS) + wire _TECHMAP_FAIL_ = 1; + else + \$__XILINX_SHIFTX #( + .A_SIGNED(A_SIGNED), + .B_SIGNED(B_SIGNED), + .A_WIDTH(A_WIDTH), + .B_WIDTH(B_WIDTH), + .Y_WIDTH(Y_WIDTH) + ) _TECHMAP_REPLACE_ ( + .A(A), .B(B), .Y(Y) + ); + end + endgenerate +endmodule diff --git a/resources/netlist/resources/kernel/share/xilinx/urams.txt b/resources/netlist/resources/kernel/share/xilinx/urams.txt new file mode 100644 index 0000000..6a59204 --- /dev/null +++ b/resources/netlist/resources/kernel/share/xilinx/urams.txt @@ -0,0 +1,37 @@ +ram huge $__XILINX_URAM_ { + abits 12; + width 72; + cost 1024; + option "BYTEWIDTH" 8 byte 8; + option "BYTEWIDTH" 9 byte 9; + init zero; + port srsw "A" { + clock anyedge "C"; + clken; + rdwr no_change; + rdinit zero; + portoption "RST_MODE" "SYNC" { + rdsrst zero ungated; + } + portoption "RST_MODE" "ASYNC" { + rdarst zero; + } + wrtrans all new; + wrbe_separate; + } + port srsw "B" { + clock anyedge "C"; + clken; + rdwr no_change; + rdinit zero; + portoption "RST_MODE" "SYNC" { + rdsrst zero ungated; + } + portoption "RST_MODE" "ASYNC" { + rdarst zero; + } + wrtrans all old; + wrprio "A"; + wrbe_separate; + } +} diff --git a/resources/netlist/resources/kernel/share/xilinx/urams_map.v b/resources/netlist/resources/kernel/share/xilinx/urams_map.v new file mode 100644 index 0000000..3ecbe70 --- /dev/null +++ b/resources/netlist/resources/kernel/share/xilinx/urams_map.v @@ -0,0 +1,152 @@ +module $__XILINX_URAM_ (...); + parameter OPTION_BYTEWIDTH = 8; + localparam WR_BE_WIDTH = 72 / OPTION_BYTEWIDTH; + + parameter CLK_C_POL = 1; + parameter PORT_A_CLK_POL = 1; + parameter PORT_A_OPTION_RST_MODE = "SYNC"; + parameter PORT_B_CLK_POL = 1; + parameter PORT_B_OPTION_RST_MODE = "SYNC"; + + input CLK_C; + + input PORT_A_CLK; + input PORT_A_CLK_EN; + input PORT_A_RD_SRST; + input PORT_A_RD_ARST; + input PORT_A_WR_EN; + input [WR_BE_WIDTH-1:0] PORT_A_WR_BE; + input [11:0] PORT_A_ADDR; + input [71:0] PORT_A_WR_DATA; + output [71:0] PORT_A_RD_DATA; + + input PORT_B_CLK; + input PORT_B_CLK_EN; + input PORT_B_RD_SRST; + input PORT_B_RD_ARST; + input PORT_B_WR_EN; + input [WR_BE_WIDTH-1:0] PORT_B_WR_BE; + input [11:0] PORT_B_ADDR; + input [71:0] PORT_B_WR_DATA; + output [71:0] PORT_B_RD_DATA; + + wire [71:0] DIN_A, DIN_B, DOUT_A, DOUT_B; + + generate + if (OPTION_BYTEWIDTH == 8) begin + assign DIN_A = PORT_A_WR_DATA; + assign DIN_B = PORT_B_WR_DATA; + assign PORT_A_RD_DATA = DOUT_A; + assign PORT_B_RD_DATA = DOUT_B; + end else begin + assign DIN_A = { + PORT_A_WR_DATA[71], + PORT_A_WR_DATA[62], + PORT_A_WR_DATA[53], + PORT_A_WR_DATA[44], + PORT_A_WR_DATA[35], + PORT_A_WR_DATA[26], + PORT_A_WR_DATA[17], + PORT_A_WR_DATA[8], + PORT_A_WR_DATA[70:63], + PORT_A_WR_DATA[61:54], + PORT_A_WR_DATA[52:45], + PORT_A_WR_DATA[43:36], + PORT_A_WR_DATA[34:27], + PORT_A_WR_DATA[25:18], + PORT_A_WR_DATA[16:9], + PORT_A_WR_DATA[7:0] + }; + assign DIN_B = { + PORT_B_WR_DATA[71], + PORT_B_WR_DATA[62], + PORT_B_WR_DATA[53], + PORT_B_WR_DATA[44], + PORT_B_WR_DATA[35], + PORT_B_WR_DATA[26], + PORT_B_WR_DATA[17], + PORT_B_WR_DATA[8], + PORT_B_WR_DATA[70:63], + PORT_B_WR_DATA[61:54], + PORT_B_WR_DATA[52:45], + PORT_B_WR_DATA[43:36], + PORT_B_WR_DATA[34:27], + PORT_B_WR_DATA[25:18], + PORT_B_WR_DATA[16:9], + PORT_B_WR_DATA[7:0] + }; + assign PORT_A_RD_DATA = { + DOUT_A[71], + DOUT_A[63:56], + DOUT_A[70], + DOUT_A[55:48], + DOUT_A[69], + DOUT_A[47:40], + DOUT_A[68], + DOUT_A[39:32], + DOUT_A[67], + DOUT_A[31:24], + DOUT_A[66], + DOUT_A[23:16], + DOUT_A[65], + DOUT_A[15:8], + DOUT_A[64], + DOUT_A[7:0] + }; + assign PORT_B_RD_DATA = { + DOUT_B[71], + DOUT_B[63:56], + DOUT_B[70], + DOUT_B[55:48], + DOUT_B[69], + DOUT_B[47:40], + DOUT_B[68], + DOUT_B[39:32], + DOUT_B[67], + DOUT_B[31:24], + DOUT_B[66], + DOUT_B[23:16], + DOUT_B[65], + DOUT_B[15:8], + DOUT_B[64], + DOUT_B[7:0] + }; + end + endgenerate + + URAM288 #( + .BWE_MODE_A(OPTION_BYTEWIDTH == 8 ? "PARITY_INDEPENDENT" : "PARITY_INTERLEAVED"), + .BWE_MODE_B(OPTION_BYTEWIDTH == 8 ? "PARITY_INDEPENDENT" : "PARITY_INTERLEAVED"), + .EN_AUTO_SLEEP_MODE("FALSE"), + .IREG_PRE_A("FALSE"), + .IREG_PRE_B("FALSE"), + .IS_CLK_INVERTED(!CLK_C_POL), + .OREG_A("FALSE"), + .OREG_B("FALSE"), + .RST_MODE_A(PORT_A_OPTION_RST_MODE), + .RST_MODE_B(PORT_B_OPTION_RST_MODE), + ) _TECHMAP_REPLACE_ ( + .ADDR_A({11'b0, PORT_A_ADDR}), + .BWE_A(PORT_A_WR_BE), + .EN_A(PORT_A_CLK_EN), + .RDB_WR_A(PORT_A_WR_EN), + .INJECT_DBITERR_A(1'b0), + .INJECT_SBITERR_A(1'b0), + .RST_A(PORT_A_OPTION_RST_MODE == "SYNC" ? PORT_A_RD_SRST : PORT_A_RD_ARST), + .DIN_A(DIN_A), + .DOUT_A(DOUT_A), + + .ADDR_B({11'b0, PORT_B_ADDR}), + .BWE_B(PORT_B_WR_BE), + .EN_B(PORT_B_CLK_EN), + .RDB_WR_B(PORT_B_WR_EN), + .INJECT_DBITERR_B(1'b0), + .INJECT_SBITERR_B(1'b0), + .RST_B(PORT_B_OPTION_RST_MODE == "SYNC" ? PORT_B_RD_SRST : PORT_B_RD_ARST), + .DIN_B(DIN_B), + .DOUT_B(DOUT_B), + + .CLK(CLK_C), + .SLEEP(1'b0) + ); +endmodule diff --git a/resources/netlist/resources/kernel/share/xilinx/xc3s_mult_map.v b/resources/netlist/resources/kernel/share/xilinx/xc3s_mult_map.v new file mode 100644 index 0000000..67cd4ac --- /dev/null +++ b/resources/netlist/resources/kernel/share/xilinx/xc3s_mult_map.v @@ -0,0 +1,14 @@ +module \$__MUL18X18 (input [17:0] A, input [17:0] B, output [35:0] Y); + parameter A_SIGNED = 0; + parameter B_SIGNED = 0; + parameter A_WIDTH = 0; + parameter B_WIDTH = 0; + parameter Y_WIDTH = 0; + + MULT18X18 _TECHMAP_REPLACE_ ( + .A(A), + .B(B), + .P(Y) + ); +endmodule + diff --git a/resources/netlist/resources/kernel/share/xilinx/xc3sda_dsp_map.v b/resources/netlist/resources/kernel/share/xilinx/xc3sda_dsp_map.v new file mode 100644 index 0000000..258f903 --- /dev/null +++ b/resources/netlist/resources/kernel/share/xilinx/xc3sda_dsp_map.v @@ -0,0 +1,34 @@ +module \$__MUL18X18 (input [17:0] A, input [17:0] B, output [35:0] Y); + parameter A_SIGNED = 0; + parameter B_SIGNED = 0; + parameter A_WIDTH = 0; + parameter B_WIDTH = 0; + parameter Y_WIDTH = 0; + + wire [47:0] P_48; + DSP48A #( + // Disable all registers + .A0REG(0), + .A1REG(0), + .B0REG(0), + .B1REG(0), + .CARRYINREG(0), + .CARRYINSEL("OPMODE5"), + .CREG(0), + .DREG(0), + .MREG(0), + .OPMODEREG(0), + .PREG(0) + ) _TECHMAP_REPLACE_ ( + //Data path + .A(A), + .B(B), + .C(48'b0), + .D(18'b0), + .P(P_48), + + .OPMODE(8'b0000001) + ); + assign Y = P_48; +endmodule + diff --git a/resources/netlist/resources/kernel/share/xilinx/xc4v_dsp_map.v b/resources/netlist/resources/kernel/share/xilinx/xc4v_dsp_map.v new file mode 100644 index 0000000..69c42f3 --- /dev/null +++ b/resources/netlist/resources/kernel/share/xilinx/xc4v_dsp_map.v @@ -0,0 +1,38 @@ +module \$__MUL18X18 (input [17:0] A, input [17:0] B, output [35:0] Y); + parameter A_SIGNED = 0; + parameter B_SIGNED = 0; + parameter A_WIDTH = 0; + parameter B_WIDTH = 0; + parameter Y_WIDTH = 0; + + wire [47:0] P_48; + DSP48 #( + // Disable all registers + .AREG(0), + .BREG(0), + .B_INPUT("DIRECT"), + .CARRYINREG(0), + .CARRYINSELREG(0), + .CREG(0), + .MREG(0), + .OPMODEREG(0), + .PREG(0), + .SUBTRACTREG(0), + .LEGACY_MODE("MULT18X18") + ) _TECHMAP_REPLACE_ ( + //Data path + .A(A), + .B(B), + .C(48'b0), + .P(P_48), + + .SUBTRACT(1'b0), + .OPMODE(7'b000101), + .CARRYINSEL(2'b00), + + .BCIN(18'b0), + .PCIN(48'b0), + .CARRYIN(1'b0) + ); + assign Y = P_48; +endmodule diff --git a/resources/netlist/resources/kernel/share/xilinx/xc5v_dsp_map.v b/resources/netlist/resources/kernel/share/xilinx/xc5v_dsp_map.v new file mode 100644 index 0000000..fc7ba46 --- /dev/null +++ b/resources/netlist/resources/kernel/share/xilinx/xc5v_dsp_map.v @@ -0,0 +1,45 @@ +module \$__MUL25X18 (input [24:0] A, input [17:0] B, output [42:0] Y); + parameter A_SIGNED = 0; + parameter B_SIGNED = 0; + parameter A_WIDTH = 0; + parameter B_WIDTH = 0; + parameter Y_WIDTH = 0; + + wire [47:0] P_48; + DSP48E #( + // Disable all registers + .ACASCREG(0), + .A_INPUT("DIRECT"), + .ALUMODEREG(0), + .AREG(0), + .BCASCREG(0), + .B_INPUT("DIRECT"), + .BREG(0), + .MULTCARRYINREG(0), + .CARRYINREG(0), + .CARRYINSELREG(0), + .CREG(0), + .MREG(0), + .OPMODEREG(0), + .PREG(0), + .USE_MULT("MULT"), + .USE_SIMD("ONE48") + ) _TECHMAP_REPLACE_ ( + //Data path + .A({{5{A[24]}}, A}), + .B(B), + .C(48'b0), + .P(P_48), + + .ALUMODE(4'b0000), + .OPMODE(7'b000101), + .CARRYINSEL(3'b000), + + .ACIN(30'b0), + .BCIN(18'b0), + .PCIN(48'b0), + .CARRYIN(1'b0) + ); + assign Y = P_48; +endmodule + diff --git a/resources/netlist/resources/kernel/share/xilinx/xc6s_dsp_map.v b/resources/netlist/resources/kernel/share/xilinx/xc6s_dsp_map.v new file mode 100644 index 0000000..bdce60c --- /dev/null +++ b/resources/netlist/resources/kernel/share/xilinx/xc6s_dsp_map.v @@ -0,0 +1,35 @@ +module \$__MUL18X18 (input [17:0] A, input [17:0] B, output [35:0] Y); + parameter A_SIGNED = 0; + parameter B_SIGNED = 0; + parameter A_WIDTH = 0; + parameter B_WIDTH = 0; + parameter Y_WIDTH = 0; + + wire [47:0] P_48; + DSP48A1 #( + // Disable all registers + .A0REG(0), + .A1REG(0), + .B0REG(0), + .B1REG(0), + .CARRYINREG(0), + .CARRYINSEL("OPMODE5"), + .CREG(0), + .DREG(0), + .MREG(0), + .OPMODEREG(0), + .PREG(0) + ) _TECHMAP_REPLACE_ ( + //Data path + .A(A), + .B(B), + .C(48'b0), + .D(18'b0), + .P(P_48), + + .OPMODE(8'b0000001) + ); + assign Y = P_48; +endmodule + + diff --git a/resources/netlist/resources/kernel/share/xilinx/xc7_dsp_map.v b/resources/netlist/resources/kernel/share/xilinx/xc7_dsp_map.v new file mode 100644 index 0000000..58df977 --- /dev/null +++ b/resources/netlist/resources/kernel/share/xilinx/xc7_dsp_map.v @@ -0,0 +1,50 @@ +module \$__MUL25X18 (input [24:0] A, input [17:0] B, output [42:0] Y); + parameter A_SIGNED = 0; + parameter B_SIGNED = 0; + parameter A_WIDTH = 0; + parameter B_WIDTH = 0; + parameter Y_WIDTH = 0; + + wire [47:0] P_48; + DSP48E1 #( + // Disable all registers + .ACASCREG(0), + .ADREG(0), + .A_INPUT("DIRECT"), + .ALUMODEREG(0), + .AREG(0), + .BCASCREG(0), + .B_INPUT("DIRECT"), + .BREG(0), + .CARRYINREG(0), + .CARRYINSELREG(0), + .CREG(0), + .DREG(0), + .INMODEREG(0), + .MREG(0), + .OPMODEREG(0), + .PREG(0), + .USE_MULT("MULTIPLY"), + .USE_SIMD("ONE48"), + .USE_DPORT("FALSE") + ) _TECHMAP_REPLACE_ ( + //Data path + .A({{5{A[24]}}, A}), + .B(B), + .C(48'b0), + .D(25'b0), + .CARRYIN(1'b0), + .P(P_48), + + .INMODE(5'b00000), + .ALUMODE(4'b0000), + .OPMODE(7'b000101), + .CARRYINSEL(3'b000), + + .ACIN(30'b0), + .BCIN(18'b0), + .PCIN(48'b0), + .CARRYIN(1'b0) + ); + assign Y = P_48; +endmodule diff --git a/resources/netlist/resources/kernel/share/xilinx/xcu_dsp_map.v b/resources/netlist/resources/kernel/share/xilinx/xcu_dsp_map.v new file mode 100644 index 0000000..fa95a57 --- /dev/null +++ b/resources/netlist/resources/kernel/share/xilinx/xcu_dsp_map.v @@ -0,0 +1,51 @@ +module \$__MUL27X18 (input [26:0] A, input [17:0] B, output [44:0] Y); + parameter A_SIGNED = 0; + parameter B_SIGNED = 0; + parameter A_WIDTH = 0; + parameter B_WIDTH = 0; + parameter Y_WIDTH = 0; + + wire [47:0] P_48; + DSP48E2 #( + // Disable all registers + .ACASCREG(0), + .ADREG(0), + .A_INPUT("DIRECT"), + .ALUMODEREG(0), + .AREG(0), + .BCASCREG(0), + .B_INPUT("DIRECT"), + .BREG(0), + .CARRYINREG(0), + .CARRYINSELREG(0), + .CREG(0), + .DREG(0), + .INMODEREG(0), + .MREG(0), + .OPMODEREG(0), + .PREG(0), + .USE_MULT("MULTIPLY"), + .USE_SIMD("ONE48"), + .AMULTSEL("A"), + .BMULTSEL("B") + ) _TECHMAP_REPLACE_ ( + //Data path + .A({{3{A[26]}}, A}), + .B(B), + .C(48'b0), + .D(27'b0), + .P(P_48), + + .INMODE(5'b00000), + .ALUMODE(4'b0000), + .OPMODE(9'b00000101), + .CARRYINSEL(3'b000), + + .ACIN(30'b0), + .BCIN(18'b0), + .PCIN(48'b0), + .CARRYIN(1'b0) + ); + assign Y = P_48; +endmodule + diff --git a/resources/public/elk.bundled.js b/resources/public/elk.bundled.js new file mode 100644 index 0000000..60772b4 --- /dev/null +++ b/resources/public/elk.bundled.js @@ -0,0 +1,6123 @@ +(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.ELK = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o 0 && arguments[0] !== undefined ? arguments[0] : {}, + _ref$defaultLayoutOpt = _ref.defaultLayoutOptions, + defaultLayoutOptions = _ref$defaultLayoutOpt === undefined ? {} : _ref$defaultLayoutOpt, + _ref$algorithms = _ref.algorithms, + algorithms = _ref$algorithms === undefined ? ['layered', 'stress', 'mrtree', 'radial', 'force', 'disco'] : _ref$algorithms, + workerFactory = _ref.workerFactory, + workerUrl = _ref.workerUrl; + + _classCallCheck(this, ELK); + + this.defaultLayoutOptions = defaultLayoutOptions; + this.initialized = false; + + // check valid worker construction possible + if (typeof workerUrl === 'undefined' && typeof workerFactory === 'undefined') { + throw new Error("Cannot construct an ELK without both 'workerUrl' and 'workerFactory'."); + } + var factory = workerFactory; + if (typeof workerUrl !== 'undefined' && typeof workerFactory === 'undefined') { + // use default Web Worker + factory = function factory(url) { + return new Worker(url); + }; + } + + // create the worker + var worker = factory(workerUrl); + if (typeof worker.postMessage !== 'function') { + throw new TypeError("Created worker does not provide" + " the required 'postMessage' function."); + } + + // wrap the worker to return promises + this.worker = new PromisedWorker(worker); + + // initially register algorithms + this.worker.postMessage({ + cmd: 'register', + algorithms: algorithms + }).then(function (r) { + return _this.initialized = true; + }).catch(console.err); + } + + _createClass(ELK, [{ + key: 'layout', + value: function layout(graph) { + var _ref2 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}, + _ref2$layoutOptions = _ref2.layoutOptions, + layoutOptions = _ref2$layoutOptions === undefined ? this.defaultLayoutOptions : _ref2$layoutOptions; + + if (!graph) { + return Promise.reject(new Error("Missing mandatory parameter 'graph'.")); + } + return this.worker.postMessage({ + cmd: 'layout', + graph: graph, + options: layoutOptions + }); + } + }, { + key: 'knownLayoutAlgorithms', + value: function knownLayoutAlgorithms() { + return this.worker.postMessage({ cmd: 'algorithms' }); + } + }, { + key: 'knownLayoutOptions', + value: function knownLayoutOptions() { + return this.worker.postMessage({ cmd: 'options' }); + } + }, { + key: 'knownLayoutCategories', + value: function knownLayoutCategories() { + return this.worker.postMessage({ cmd: 'categories' }); + } + }, { + key: 'terminateWorker', + value: function terminateWorker() { + this.worker.terminate(); + } + }]); + + return ELK; +}(); + +exports.default = ELK; + +var PromisedWorker = function () { + function PromisedWorker(worker) { + var _this2 = this; + + _classCallCheck(this, PromisedWorker); + + if (worker === undefined) { + throw new Error("Missing mandatory parameter 'worker'."); + } + this.resolvers = {}; + this.worker = worker; + this.worker.onmessage = function (answer) { + // why is this necessary? + setTimeout(function () { + _this2.receive(_this2, answer); + }, 0); + }; + } + + _createClass(PromisedWorker, [{ + key: 'postMessage', + value: function postMessage(msg) { + var id = this.id || 0; + this.id = id + 1; + msg.id = id; + var self = this; + return new Promise(function (resolve, reject) { + // prepare the resolver + self.resolvers[id] = function (err, res) { + if (err) { + reject(err); + } else { + resolve(res); + } + }; + // post the message + self.worker.postMessage(msg); + }); + } + }, { + key: 'receive', + value: function receive(self, answer) { + var json = answer.data; + var resolver = self.resolvers[json.id]; + if (resolver) { + delete self.resolvers[json.id]; + if (json.error) { + resolver(json.error); + } else { + resolver(null, json.data); + } + } + } + }, { + key: 'terminate', + value: function terminate() { + if (this.worker.terminate) { + this.worker.terminate(); + } + } + }]); + + return PromisedWorker; +}(); +},{}],2:[function(require,module,exports){ +(function (global){ + +// -------------- FAKE ELEMENTS GWT ASSUMES EXIST -------------- +var $wnd; +if (typeof window !== 'undefined') + $wnd = window +else if (typeof global !== 'undefined') + $wnd = global // nodejs +else if (typeof self !== 'undefined') + $wnd = self // web worker + +var $moduleName, + $moduleBase; + +// -------------- GENERATED CODE -------------- +function g3(){} +function d3(){} +function ib(){} +function sb(){} +function xf(){} +function xw(){} +function Hw(){} +function Hn(){} +function Oi(){} +function Ow(){} +function qo(){} +function Ao(){} +function np(){} +function $t(){} +function Du(){} +function Ku(){} +function vx(){} +function yx(){} +function Ex(){} +function yy(){} +function j3(){} +function ldb(){} +function tdb(){} +function Edb(){} +function Mdb(){} +function afb(){} +function ffb(){} +function wfb(){} +function wnb(){} +function qnb(){} +function snb(){} +function unb(){} +function ynb(){} +function Bnb(){} +function Jnb(){} +function Lnb(){} +function Nnb(){} +function Nmb(){} +function amb(){} +function Pmb(){} +function Pnb(){} +function Tnb(){} +function Xnb(){} +function Uib(){} +function Zib(){} +function _ib(){} +function kpb(){} +function rpb(){} +function Hqb(){} +function Kqb(){} +function grb(){} +function wrb(){} +function Brb(){} +function Frb(){} +function ysb(){} +function Csb(){} +function Esb(){} +function Gsb(){} +function Jsb(){} +function Nsb(){} +function Qsb(){} +function Vsb(){} +function $sb(){} +function dtb(){} +function htb(){} +function otb(){} +function rtb(){} +function utb(){} +function xtb(){} +function Dtb(){} +function rub(){} +function Bub(){} +function Iub(){} +function Jvb(){} +function awb(){} +function cwb(){} +function ewb(){} +function gwb(){} +function iwb(){} +function Cwb(){} +function Mwb(){} +function Owb(){} +function uyb(){} +function Vyb(){} +function Fzb(){} +function hAb(){} +function zAb(){} +function AAb(){} +function DAb(){} +function NAb(){} +function fBb(){} +function wBb(){} +function BBb(){} +function BCb(){} +function mCb(){} +function tCb(){} +function xCb(){} +function FCb(){} +function JCb(){} +function qDb(){} +function QDb(){} +function TDb(){} +function bEb(){} +function GFb(){} +function fGb(){} +function oHb(){} +function tHb(){} +function xHb(){} +function BHb(){} +function FHb(){} +function JHb(){} +function JIb(){} +function HIb(){} +function LIb(){} +function PIb(){} +function TIb(){} +function TJb(){} +function nJb(){} +function qJb(){} +function QJb(){} +function tKb(){} +function yKb(){} +function EKb(){} +function IKb(){} +function KKb(){} +function MKb(){} +function OKb(){} +function $Kb(){} +function cLb(){} +function gLb(){} +function iLb(){} +function mLb(){} +function vLb(){} +function xLb(){} +function zLb(){} +function BLb(){} +function DLb(){} +function DMb(){} +function mMb(){} +function uMb(){} +function xMb(){} +function RMb(){} +function UMb(){} +function ZMb(){} +function dNb(){} +function pNb(){} +function qNb(){} +function tNb(){} +function yNb(){} +function CNb(){} +function FNb(){} +function KNb(){} +function QNb(){} +function WNb(){} +function wPb(){} +function CPb(){} +function EPb(){} +function GPb(){} +function RPb(){} +function YPb(){} +function kQb(){} +function rQb(){} +function tQb(){} +function wQb(){} +function KQb(){} +function MQb(){} +function UQb(){} +function XQb(){} +function $Qb(){} +function $Rb(){} +function cRb(){} +function jRb(){} +function qRb(){} +function uRb(){} +function IRb(){} +function PRb(){} +function RRb(){} +function WRb(){} +function gSb(){} +function mSb(){} +function qSb(){} +function uSb(){} +function xSb(){} +function zSb(){} +function BSb(){} +function DSb(){} +function HSb(){} +function PSb(){} +function qTb(){} +function wTb(){} +function GTb(){} +function QTb(){} +function $Tb(){} +function $Ub(){} +function mUb(){} +function sUb(){} +function uUb(){} +function yUb(){} +function CUb(){} +function GUb(){} +function KUb(){} +function OUb(){} +function QUb(){} +function cVb(){} +function gVb(){} +function iVb(){} +function mVb(){} +function CVb(){} +function cWb(){} +function eWb(){} +function gWb(){} +function iWb(){} +function kWb(){} +function mWb(){} +function oWb(){} +function sWb(){} +function uWb(){} +function wWb(){} +function yWb(){} +function MWb(){} +function OWb(){} +function QWb(){} +function WWb(){} +function YWb(){} +function bXb(){} +function iYb(){} +function qYb(){} +function MYb(){} +function OYb(){} +function QYb(){} +function VYb(){} +function gZb(){} +function iZb(){} +function oZb(){} +function rZb(){} +function yZb(){} +function BZb(){} +function M$b(){} +function N6b(){} +function J9b(){} +function Jgc(){} +function tgc(){} +function xgc(){} +function Hgc(){} +function Lgc(){} +function Pgc(){} +function Vgc(){} +function Zgc(){} +function _gc(){} +function Oac(){} +function kcc(){} +function wdc(){} +function ydc(){} +function Cdc(){} +function bhc(){} +function dhc(){} +function jhc(){} +function lhc(){} +function qhc(){} +function shc(){} +function yhc(){} +function Ahc(){} +function Ehc(){} +function Ghc(){} +function Khc(){} +function Mhc(){} +function Ohc(){} +function Qhc(){} +function Qkc(){} +function Dic(){} +function ajc(){} +function Ajc(){} +function znc(){} +function Knc(){} +function Mnc(){} +function loc(){} +function ooc(){} +function opc(){} +function apc(){} +function cpc(){} +function hpc(){} +function jpc(){} +function upc(){} +function usc(){} +function isc(){} +function nsc(){} +function qsc(){} +function ssc(){} +function ysc(){} +function jqc(){} +function Lrc(){} +function Luc(){} +function buc(){} +function iuc(){} +function Auc(){} +function stc(){} +function Ttc(){} +function Wtc(){} +function Ztc(){} +function bvc(){} +function fvc(){} +function mvc(){} +function Rvc(){} +function awc(){} +function twc(){} +function uwc(){} +function wwc(){} +function ywc(){} +function Awc(){} +function Cwc(){} +function Ewc(){} +function Gwc(){} +function Iwc(){} +function Kwc(){} +function Mwc(){} +function Owc(){} +function Qwc(){} +function Swc(){} +function Uwc(){} +function Wwc(){} +function Ywc(){} +function $wc(){} +function $Fc(){} +function mFc(){} +function qFc(){} +function uFc(){} +function axc(){} +function Axc(){} +function zzc(){} +function dCc(){} +function WDc(){} +function NEc(){} +function aGc(){} +function wGc(){} +function sHc(){} +function sJc(){} +function oJc(){} +function VIc(){} +function XIc(){} +function ZIc(){} +function _Ic(){} +function mKc(){} +function vKc(){} +function xKc(){} +function zKc(){} +function HKc(){} +function tLc(){} +function wLc(){} +function yLc(){} +function MLc(){} +function QLc(){} +function QOc(){} +function MPc(){} +function cQc(){} +function BQc(){} +function rRc(){} +function NSc(){} +function NYc(){} +function cYc(){} +function FYc(){} +function F7c(){} +function ATc(){} +function _Tc(){} +function e_c(){} +function R2c(){} +function W3c(){} +function i4c(){} +function q6c(){} +function D6c(){} +function n8c(){} +function H8c(){} +function ced(){} +function fed(){} +function ied(){} +function qed(){} +function Ded(){} +function Ged(){} +function ngd(){} +function Ikd(){} +function rld(){} +function Mmd(){} +function Pmd(){} +function Smd(){} +function Vmd(){} +function Ymd(){} +function _md(){} +function cnd(){} +function fnd(){} +function ind(){} +function zod(){} +function Dod(){} +function npd(){} +function Fpd(){} +function Hpd(){} +function Kpd(){} +function Npd(){} +function Qpd(){} +function Tpd(){} +function Wpd(){} +function Zpd(){} +function aqd(){} +function dqd(){} +function gqd(){} +function jqd(){} +function mqd(){} +function pqd(){} +function sqd(){} +function vqd(){} +function yqd(){} +function Bqd(){} +function Eqd(){} +function Hqd(){} +function Kqd(){} +function Nqd(){} +function Qqd(){} +function Tqd(){} +function Wqd(){} +function Zqd(){} +function ard(){} +function drd(){} +function grd(){} +function jrd(){} +function mrd(){} +function prd(){} +function srd(){} +function vrd(){} +function yrd(){} +function Brd(){} +function Erd(){} +function Hrd(){} +function Krd(){} +function Nrd(){} +function Qrd(){} +function Trd(){} +function Wrd(){} +function Zrd(){} +function $wd(){} +function Ayd(){} +function AAd(){} +function qBd(){} +function DBd(){} +function FBd(){} +function IBd(){} +function LBd(){} +function OBd(){} +function RBd(){} +function UBd(){} +function XBd(){} +function $Bd(){} +function bCd(){} +function eCd(){} +function hCd(){} +function kCd(){} +function nCd(){} +function qCd(){} +function tCd(){} +function wCd(){} +function zCd(){} +function CCd(){} +function FCd(){} +function ICd(){} +function LCd(){} +function OCd(){} +function RCd(){} +function UCd(){} +function XCd(){} +function $Cd(){} +function bDd(){} +function eDd(){} +function hDd(){} +function kDd(){} +function nDd(){} +function qDd(){} +function tDd(){} +function wDd(){} +function zDd(){} +function CDd(){} +function FDd(){} +function IDd(){} +function LDd(){} +function ODd(){} +function RDd(){} +function UDd(){} +function XDd(){} +function $Dd(){} +function bEd(){} +function eEd(){} +function hEd(){} +function kEd(){} +function nEd(){} +function qEd(){} +function tEd(){} +function SEd(){} +function rId(){} +function BId(){} +function Iid(a){} +function ymc(a){} +function gl(){rb()} +function fsb(){esb()} +function rvb(){qvb()} +function Hvb(){Fvb()} +function G4b(){F4b()} +function Txb(){Sxb()} +function Tyb(){Ryb()} +function syb(){qyb()} +function Jyb(){Iyb()} +function aJb(){WIb()} +function nNb(){hNb()} +function k9b(){h9b()} +function V9b(){Q9b()} +function PPb(){LPb()} +function dSb(){bSb()} +function L6b(){J6b()} +function eac(){$9b()} +function xcc(){tcc()} +function pfc(){mfc()} +function Ffc(){vfc()} +function Vhc(){Thc()} +function Vpc(){Upc()} +function $qc(){Uqc()} +function hqc(){fqc()} +function Jqc(){Dqc()} +function Qqc(){Nqc()} +function Pjc(){Mjc()} +function erc(){crc()} +function dtc(){ctc()} +function qtc(){otc()} +function B7c(){o7c()} +function xzc(){vzc()} +function _Ac(){$Ac()} +function gRc(){$Qc()} +function bCc(){_Bc()} +function UDc(){SDc()} +function Sbd(){wbd()} +function pyd(){qId()} +function Xd(a){this.a=a} +function Yb(a){this.a=a} +function jc(a){this.a=a} +function Vg(a){this.a=a} +function _g(a){this.a=a} +function Qi(a){this.a=a} +function Qq(a){this.a=a} +function Uq(a){this.a=a} +function bj(a){this.a=a} +function fj(a){this.a=a} +function vk(a){this.a=a} +function zk(a){this.a=a} +function vl(a){this.a=a} +function vt(a){this.a=a} +function lt(a){this.a=a} +function Jt(a){this.a=a} +function Ot(a){this.a=a} +function Os(a){this.a=a} +function Fo(a){this.a=a} +function xo(a){this.b=a} +function Ut(a){this.a=a} +function fu(a){this.a=a} +function ju(a){this.a=a} +function pu(a){this.a=a} +function su(a){this.a=a} +function gy(a){this.a=a} +function qy(a){this.a=a} +function Cy(a){this.a=a} +function Qy(a){this.a=a} +function m3(a){this.a=a} +function L3(a){this.a=a} +function V3(a){this.a=a} +function F4(a){this.a=a} +function S4(a){this.a=a} +function k5(a){this.a=a} +function K5(a){this.a=a} +function X8(a){this.a=a} +function G9(a){this.a=a} +function M9(a){this.a=a} +function R9(a){this.a=a} +function W9(a){this.a=a} +function m9(a){this.d=a} +function fy(){this.a=[]} +function Bgb(){L8(this)} +function jub(a,b){a.i=b} +function iub(a,b){a.g=b} +function _ub(a,b){a.b=b} +function bvb(a,b){a.b=b} +function bGb(a,b){a.a=b} +function qpb(a,b){a.a=b} +function dxb(a,b){a.c=b} +function dGb(a,b){a.c=b} +function cGb(a,b){a.b=b} +function eGb(a,b){a.d=b} +function exb(a,b){a.d=b} +function GGb(a,b){a.j=b} +function $bc(a,b){a.a=b} +function _bc(a,b){a.f=b} +function _rc(a,b){a.f=b} +function $rc(a,b){a.e=b} +function bmc(a,b){a.k=b} +function qmc(a,b){a.a=b} +function rmc(a,b){a.b=b} +function asc(a,b){a.g=b} +function BHc(a,b){a.j=b} +function P9c(a,b){a.n=b} +function Btd(a,b){a.a=b} +function Ktd(a,b){a.a=b} +function Ctd(a,b){a.c=b} +function Ltd(a,b){a.c=b} +function Mtd(a,b){a.d=b} +function Ntd(a,b){a.e=b} +function Otd(a,b){a.g=b} +function eud(a,b){a.a=b} +function fud(a,b){a.c=b} +function gud(a,b){a.d=b} +function hud(a,b){a.e=b} +function iud(a,b){a.f=b} +function jud(a,b){a.j=b} +function yAd(a,b){a.a=b} +function GAd(a,b){a.a=b} +function zAd(a,b){a.b=b} +function AXb(a){a.b=a.a} +function ri(a){a.c=a.d.d} +function Gb(a){pA(Pb(a))} +function sab(a){this.b=a} +function xab(a){this.a=a} +function Eab(a){this.a=a} +function Qdb(a){this.a=a} +function Xdb(a){this.b=a} +function neb(a){this.b=a} +function nkb(a){this.a=a} +function pkb(a){this.a=a} +function jfb(a){this.a=a} +function Rfb(a){this.a=a} +function Rmb(a){this.a=a} +function Lmb(a){this.a=a} +function Mgb(a){this.a=a} +function Yhb(a){this.a=a} +function yjb(a){this.a=a} +function onb(a){this.a=a} +function Dnb(a){this.a=a} +function Fnb(a){this.a=a} +function Hnb(a){this.a=a} +function Rnb(a){this.a=a} +function Vnb(a){this.a=a} +function job(a){this.a=a} +function qob(a){this.a=a} +function sob(a){this.a=a} +function uob(a){this.a=a} +function epb(a){this.a=a} +function ipb(a){this.a=a} +function mpb(a){this.a=a} +function tpb(a){this.a=a} +function erb(a){this.a=a} +function Btb(a){this.a=a} +function kwb(a){this.a=a} +function mwb(a){this.a=a} +function Fwb(a){this.a=a} +function qzb(a){this.a=a} +function Dzb(a){this.a=a} +function BEb(a){this.a=a} +function cFb(a){this.a=a} +function ccb(a){this.c=a} +function pFb(a){this.e=a} +function NHb(a){this.a=a} +function QHb(a){this.a=a} +function VHb(a){this.a=a} +function YHb(a){this.a=a} +function NIb(a){this.a=a} +function RIb(a){this.a=a} +function dJb(a){this.a=a} +function fJb(a){this.a=a} +function hJb(a){this.a=a} +function jJb(a){this.a=a} +function vJb(a){this.a=a} +function DJb(a){this.a=a} +function kLb(a){this.a=a} +function oLb(a){this.a=a} +function ZLb(a){this.a=a} +function ZNb(a){this.a=a} +function TNb(a){this.a=a} +function aOb(a){this.a=a} +function dOb(a){this.a=a} +function nQb(a){this.a=a} +function xRb(a){this.a=a} +function ARb(a){this.a=a} +function UTb(a){this.a=a} +function qUb(a){this.a=a} +function wUb(a){this.a=a} +function EUb(a){this.a=a} +function EVb(a){this.a=a} +function zVb(a){this.a=a} +function qWb(a){this.a=a} +function AWb(a){this.a=a} +function CWb(a){this.a=a} +function GWb(a){this.a=a} +function IWb(a){this.a=a} +function KWb(a){this.a=a} +function SWb(a){this.a=a} +function kZb(a){this.a=a} +function mZb(a){this.a=a} +function z9b(a){this.a=a} +function D9b(a){this.a=a} +function CYb(a){this.b=a} +function iac(a){this.a=a} +function ibc(a){this.a=a} +function Gbc(a){this.a=a} +function Ebc(a){this.c=a} +function Bcc(a){this.a=a} +function idc(a){this.a=a} +function kdc(a){this.a=a} +function mdc(a){this.a=a} +function wec(a){this.a=a} +function Aec(a){this.a=a} +function Eec(a){this.a=a} +function Iec(a){this.a=a} +function Nec(a){this.a=a} +function Ngc(a){this.a=a} +function Tgc(a){this.a=a} +function Xgc(a){this.a=a} +function hhc(a){this.a=a} +function nhc(a){this.a=a} +function uhc(a){this.a=a} +function Chc(a){this.a=a} +function Ihc(a){this.a=a} +function fjc(a){this.a=a} +function kkc(a){this.a=a} +function pkc(a){this.a=a} +function ukc(a){this.a=a} +function Aoc(a){this.a=a} +function Doc(a){this.a=a} +function dvc(a){this.a=a} +function hvc(a){this.a=a} +function QEc(a){this.a=a} +function lGc(a){this.a=a} +function IGc(a){this.a=a} +function _Gc(a){this.f=a} +function kfc(a){this.i=a} +function AHc(a){this.a=a} +function UKc(a){this.a=a} +function dMc(a){this.a=a} +function fVc(a){this.a=a} +function gVc(a){this.a=a} +function lVc(a){this.a=a} +function mVc(a){this.a=a} +function nVc(a){this.a=a} +function oVc(a){this.a=a} +function qVc(a){this.a=a} +function rVc(a){this.a=a} +function uVc(a){this.a=a} +function wVc(a){this.a=a} +function xVc(a){this.a=a} +function yVc(a){this.a=a} +function zVc(a){this.a=a} +function AVc(a){this.a=a} +function CVc(a){this.a=a} +function DVc(a){this.a=a} +function EVc(a){this.a=a} +function FVc(a){this.a=a} +function GVc(a){this.a=a} +function HVc(a){this.a=a} +function IVc(a){this.a=a} +function SVc(a){this.a=a} +function TVc(a){this.a=a} +function XVc(a){this.a=a} +function eWc(a){this.a=a} +function gWc(a){this.a=a} +function iWc(a){this.a=a} +function kWc(a){this.a=a} +function OWc(a){this.a=a} +function DWc(a){this.b=a} +function M2c(a){this.a=a} +function T2c(a){this.a=a} +function Z2c(a){this.a=a} +function d3c(a){this.a=a} +function v3c(a){this.a=a} +function Fdd(a){this.a=a} +function med(a){this.a=a} +function Yed(a){this.b=a} +function kgd(a){this.a=a} +function hhd(a){this.a=a} +function jkd(a){this.a=a} +function Sod(a){this.a=a} +function $od(a){this.a=a} +function Asd(a){this.a=a} +function Psd(a){this.a=a} +function tsd(a){this.d=a} +function Gld(a){this.c=a} +function kmd(a){this.e=a} +function VGd(a){this.e=a} +function Nxd(a){this.a=a} +function AHd(a){this.a=a} +function UFc(){this.a=0} +function $ab(){Mab(this)} +function Gbb(){rbb(this)} +function mrb(){lrb(this)} +function h3(){QYc();RYc()} +function By(){return null} +function fz(){return null} +function nz(a){return a.a} +function my(a){return a.a} +function uy(a){return a.a} +function Iy(a){return a.a} +function Wy(a){return a.a} +function x2(a){return a.e} +function xhd(){this.c=ihd} +function Xgd(){this.a=this} +function G4(a){this.a=L4(a)} +function z4(){Sv.call(this)} +function N4(){Sv.call(this)} +function P4(){Sv.call(this)} +function p3(){Sv.call(this)} +function t3(){Sv.call(this)} +function x3(){Lv.call(this)} +function Sv(){Lv.call(this)} +function A5(){Sv.call(this)} +function U6(){Sv.call(this)} +function r3(){p3.call(this)} +function _Jc(a){a.b.Te(a.e)} +function euc(a,b){b.jd(a.a)} +function NLb(a,b){a.a=b-a.a} +function QLb(a,b){a.b=b-a.b} +function yYb(a,b){a.b+=b} +function Oc(a,b){a.d.b.$b(b)} +function jp(a,b){a.e=b;b.b=a} +function Cpb(a,b){a.length=b} +function wEc(a){a.a=new yib} +function Qw(){Qw=d3;new Bgb} +function fzb(){this.b=new Zp} +function sgd(){this.Bb|=256} +function qfb(){Sv.call(this)} +function zfb(){Sv.call(this)} +function djb(){Sv.call(this)} +function Muc(){Sv.call(this)} +function Lyd(a){Cud(a.c,a.b)} +function TKc(a,b){wIc(a.c,b)} +function J2c(a,b){M1c(a.a,b)} +function K2c(a,b){N1c(a.a,b)} +function Rkb(a,b){tbb(a.a,b)} +function jjc(a,b){Ggb(a.b,b)} +function ocd(a,b){vMc(a.e,b)} +function Cw(a){Bw();Aw.Rd(a)} +function uw(){uw=d3;tw=new xw} +function rb(){rb=d3;qb=new sb} +function Vv(){Vv=d3;Uv=new ib} +function Fk(){Fk=d3;Ek=new Gk} +function Uk(){Uk=d3;Tk=new Vk} +function Iu(){Iu=d3;Hu=new Ku} +function tx(){tx=d3;sx=new vx} +function xy(){xy=d3;wy=new yy} +function Jgb(){this.a=new Bgb} +function Pzb(){this.a=new Bzb} +function Ukb(){this.a=new Gbb} +function dCb(){this.a=new Gbb} +function dDb(){this.a=new Gbb} +function xDb(){this.a=new Gbb} +function LDb(){this.a=new Gbb} +function FDb(){this.a=new Jgb} +function Bmb(){this.a=new Klb} +function tqb(){this.a=new pqb} +function Aqb(){this.a=new uqb} +function Zwb(){this.a=new Mwb} +function IZb(){this.a=new BZb} +function NZb(){this.a=new Gbb} +function SZb(){this.a=new Gbb} +function M9b(){this.b=new Gbb} +function Lfc(){this.f=new Gbb} +function Fic(){this.d=new Gbb} +function rpc(){this.a=new Gbb} +function r$b(){this.a=new PZb} +function fuc(){this.a=new iuc} +function Suc(){this.j=new Gbb} +function Vyc(){yib.call(this)} +function Ggc(){Gbb.call(this)} +function qlb(){Ukb.call(this)} +function qGb(){mGb.call(this)} +function mGb(){fGb.call(this)} +function XGb(){fGb.call(this)} +function $Gb(){XGb.call(this)} +function o6c(){Bgb.call(this)} +function x6c(){Bgb.call(this)} +function I6c(){Bgb.call(this)} +function njc(){mjc.call(this)} +function ujc(){mjc.call(this)} +function SHc(){CHc.call(this)} +function S4c(){e4c.call(this)} +function t4c(){e4c.call(this)} +function bTc(){MPc.call(this)} +function pTc(){MPc.call(this)} +function pjd(){s9c.call(this)} +function Okd(){s9c.call(this)} +function zad(){V9c.call(this)} +function rAd(){F7c.call(this)} +function NAd(){F7c.call(this)} +function IAd(){rAd.call(this)} +function Hgd(){sgd.call(this)} +function qgd(){Jgb.call(this)} +function Lkd(){Bgb.call(this)} +function Ood(){Bgb.call(this)} +function dpd(){Bgb.call(this)} +function FFd(){SEd.call(this)} +function gf(a){Re.call(this,a)} +function Aj(a){Re.call(this,a)} +function Sj(a){Aj.call(this,a)} +function vf(a){qf.call(this,a)} +function zf(a){qf.call(this,a)} +function dn(a){tm.call(this,a)} +function au(a){Mm.call(this,a)} +function ap(a){Uo.call(this,a)} +function rs(a){gs.call(this,a)} +function Tv(a){Mv.call(this,a)} +function vy(a){Tv.call(this,a)} +function o3(a){Tv.call(this,a)} +function q3(a){Tv.call(this,a)} +function u3(a){Tv.call(this,a)} +function v3(a){Mv.call(this,a)} +function s3(a){q3.call(this,a)} +function A4(a){Tv.call(this,a)} +function O4(a){Tv.call(this,a)} +function Q4(a){Tv.call(this,a)} +function z5(a){Tv.call(this,a)} +function B5(a){Tv.call(this,a)} +function I5(a){O4.call(this,a)} +function Py(){Qy.call(this,{})} +function z6(){m3.call(this,'')} +function A6(){m3.call(this,'')} +function M6(){m3.call(this,'')} +function N6(){m3.call(this,'')} +function P6(a){q3.call(this,a)} +function V6(a){Tv.call(this,a)} +function k7(a){c7();e7(this,a)} +function kjb(a){ijb();this.a=a} +function ulb(a){a.b=null;a.c=0} +function nBb(a,b){a.a=b;pBb(a)} +function Exb(a,b){return a*a/b} +function u5(a){return a<0?-a:a} +function Ycc(a){Gcc();this.a=a} +function LGc(a){zGc();this.f=a} +function NGc(a){zGc();this.f=a} +function PIc(a,b,c){a.a[b.g]=c} +function FFc(a,b,c){LFc(c,a,b)} +function zPb(a,b,c){APb(c,a,b)} +function LKc(a,b,c){KKc(a,c,b)} +function ILc(){this.d=new Gbb} +function e4c(){this.a=new i4c} +function ge(){throw x2(new U6)} +function lj(){throw x2(new U6)} +function ol(){throw x2(new U6)} +function ir(){throw x2(new U6)} +function mr(){throw x2(new U6)} +function Chb(){throw x2(new U6)} +function Cb(a){this.c=pA(Pb(a))} +function cz(a){return new Cy(a)} +function ez(a){return new hz(a)} +function pz(a,b){return p4(a,b)} +function K3(a,b){return a.a-b.a} +function U3(a,b){return a.a-b.a} +function J5(a,b){return a.a-b.a} +function Rs(a,b){return a.g-b.g} +function v5(a,b){return a>b?a:b} +function x5(a,b){return a0} +function H2(a,b){return A2(a,b)<0} +function M8(a){return a.d.c+a.e.c} +function Hyc(){this.a=0;this.b=0} +function Wyc(a){zib.call(this,a)} +function f_c(a){dYc.call(this,a)} +function q3c(a){k3c.call(this,a)} +function s3c(a){k3c.call(this,a)} +function Cgb(a){N8.call(this,a,0)} +function Lkb(a){this.c=(Npb(a),a)} +function Kgb(a){this.a=new Cgb(a)} +function Cmb(a){this.a=new Llb(a)} +function yId(){throw x2(new djb)} +function zId(){throw x2(new djb)} +function pjb(){pjb=d3;ojb=new sjb} +function sdb(){sdb=d3;rdb=new tdb} +function Gqb(){Gqb=d3;Fqb=new Hqb} +function fvb(){fvb=d3;evb=new gvb} +function bAb(){bAb=d3;aAb=new hAb} +function MAb(){MAb=d3;LAb=new NAb} +function RAb(){RAb=d3;QAb=new qBb} +function iCb(){iCb=d3;hCb=new mCb} +function YDb(){YDb=d3;XDb=new bEb} +function rVb(){rVb=d3;qVb=new bXb} +function LPb(){LPb=d3;KPb=new RPb} +function bSb(){bSb=d3;aSb=new gSb} +function WIb(){WIb=d3;VIb=new Hyc} +function crc(){crc=d3;brc=new yvc} +function Wnc(){this.b=new $uc(bS)} +function wrc(){this.a=new $uc(ES)} +function ZJb(){this.a=(gBc(),eBc)} +function eKb(){this.a=(gBc(),eBc)} +function Grc(a){this.a=0;this.b=a} +function Fib(a){return a.b!=a.d.c} +function rec(a,b){return a.d[b.o]} +function mkb(a,b){while(a.sd(b));} +function Bpb(a,b,c){a.splice(b,c)} +function Bvc(a,b,c){J8(a.d,b.f,c)} +function ued(a,b){o_c(Ibd(a.a),b)} +function zed(a,b){o_c(Ibd(a.a),b)} +function yIc(a){a.c?xIc(a):zIc(a)} +function C6c(){C6c=d3;B6c=new D6c} +function v6c(){v6c=d3;u6c=new x6c} +function G6c(){G6c=d3;F6c=new I6c} +function A6c(){A6c=d3;z6c=new Lkd} +function L6c(){L6c=d3;K6c=new dpd} +function r5c(){r5c=d3;q5c=new Bgb} +function upd(){upd=d3;spd=new Gbb} +function tId(){tId=d3;sId=new BId} +function Ohd(){Ohd=d3;Nhd=new lwd} +function iid(){iid=d3;hid=new pwd} +function Zwd(){Zwd=d3;Ywd=new $wd} +function wyd(){wyd=d3;vyd=new Ayd} +function nId(a){this.a=new CHd(a)} +function dc(a){this.a=kA(Pb(a),13)} +function cd(a,b){this.b=a;this.c=b} +function od(a,b){this.b=a;this.a=b} +function Ud(a,b){this.b=a;this.d=b} +function eg(a,b){this.e=a;this.d=b} +function xh(a,b){this.b=a;this.c=b} +function Zj(a,b){this.a=a;this.b=b} +function ck(a,b){this.a=a;this.b=b} +function ek(a,b){this.a=a;this.b=b} +function nk(a,b){this.a=a;this.b=b} +function pk(a,b){this.b=a;this.a=b} +function Nh(a,b){ph.call(this,a,b)} +function Ph(a,b){Nh.call(this,a,b)} +function Pn(a,b){this.b=a;this.a=b} +function Vn(a,b){this.a=a;this.b=b} +function _m(a,b){this.g=a;this.i=b} +function Po(a,b){this.b=a;this.a=b} +function Nq(a,b){this.a=a;this.b=b} +function er(a,b){this.a=a;this.f=b} +function Re(a){Lb(a.Wb());this.c=a} +function ts(a,b){this.b=a;this.c=b} +function Ts(a,b){this.f=a;this.g=b} +function ct(a,b){Ts.call(this,a,b)} +function yu(a,b){this.e=a;this.c=b} +function Mm(a){this.b=kA(Pb(a),43)} +function bs(a){this.a=kA(Pb(a),15)} +function gs(a){this.a=kA(Pb(a),15)} +function Xy(a,b){this.a=a;this.b=b} +function $m(a,b){return a>b&&b0?a:b} +function Bz(a){return Cz(a.l,a.m,a.h)} +function Vx(a){return a<10?'0'+a:''+a} +function PBb(a){return a==KBb||a==NBb} +function QBb(a){return a==KBb||a==LBb} +function kIb(a){return ybb(a.b.b,a,0)} +function Zgb(a){this.a=khb();this.b=a} +function phb(a){this.a=khb();this.b=a} +function ll(a){this.a=a;gl.call(this)} +function En(a){this.a=a;gl.call(this)} +function Ecb(a,b){Acb(a,0,a.length,b)} +function plb(a,b){tbb(a.a,b);return b} +function tuc(a,b){tbb(a.c,b);return a} +function Tuc(a,b){svc(a.a,b);return a} +function $Vb(a,b){IVb();return b.a+=a} +function _Vb(a,b){IVb();return b.c+=a} +function aWb(a,b){IVb();return b.a+=a} +function i7b(a){return a==e7b||a==d7b} +function hBc(a){return a==cBc||a==dBc} +function iBc(a){return a==fBc||a==bBc} +function XCc(a){return a!=TCc&&a!=UCc} +function PMc(a){return a.eg()&&a.fg()} +function zvc(a){return svc(new yvc,a)} +function yjc(){yjc=d3;xjc=new Hfb(iU)} +function iib(){Mgb.call(this,new Jhb)} +function nGb(){gGb.call(this,0,0,0,0)} +function oyc(){pyc.call(this,0,0,0,0)} +function DYc(a){yYc.call(this,a,true)} +function Kyc(a){this.a=a.a;this.b=a.b} +function pPc(a,b,c){rPc(a,b);sPc(a,c)} +function nPc(a,b,c){qPc(a,b);oPc(a,c)} +function NOc(a,b,c){OOc(a,b);POc(a,c)} +function qQc(a,b,c){rQc(a,b);sQc(a,c)} +function xQc(a,b,c){yQc(a,b);zQc(a,c)} +function Uad(a,b){Kad(a,b);Lad(a,a.D)} +function xud(a,b){return new gwd(b,a)} +function yud(a,b){return new gwd(b,a)} +function U4(a,b){return ab?1:0} +function Kn(a){return fo(a.b.tc(),a.a)} +function Rn(a){return oo(a.a.tc(),a.b)} +function q6(a){return r6(a,0,a.length)} +function fjb(a){return a!=null?ob(a):0} +function Zo(a){Uo.call(this,new ap(a))} +function mmb(){hmb.call(this,'Head',1)} +function rmb(){hmb.call(this,'Tail',3)} +function Li(a,b,c){Ji.call(this,a,b,c)} +function _ob(a,b,c){qpb(a,b.le(a.a,c))} +function $pb(a,b){return parseInt(a,b)} +function FIb(a,b){return dXc(b,mTc(a))} +function GIb(a,b){return dXc(b,mTc(a))} +function YGb(a){gGb.call(this,a,a,a,a)} +function rbb(a){a.c=tz(NE,oJd,1,0,5,1)} +function Mab(a){a.a=tz(NE,oJd,1,8,5,1)} +function Kub(a){a.b&&Oub(a);return a.a} +function Lub(a){a.b&&Oub(a);return a.c} +function bTb(a){a.d&&fTb(a);return a.c} +function aTb(a){a.d&&fTb(a);return a.b} +function _Sb(a){a.d&&fTb(a);return a.a} +function I0c(a,b,c){wz(a,b,c);return c} +function o8b(a,b,c){wz(a.c[b.g],b.g,c)} +function UVb(a,b,c){return I8(a.g,c,b)} +function Xfc(a,b,c){return I8(a.k,c,b)} +function GFc(a,b,c){pPc(c,c.i+a,c.j+b)} +function GWc(a,b){EWc.call(this,a.b,b)} +function hId(a){UGd();VGd.call(this,a)} +function jmd(){jmd=d3;imd=(C6c(),B6c)} +function isd(){isd=d3;new jsd;new Gbb} +function jsd(){new Bgb;new Bgb;new Bgb} +function Zn(){Zn=d3;Xn=new qo;Yn=new Ao} +function bt(){bt=d3;_s=new ft;at=new ht} +function sk(){sk=d3;rk=Bb(new Cb(qJd))} +function Es(){Es=d3;new Gb((sk(),'='))} +function Ev(a){a.j=tz(QE,cKd,287,0,0,1)} +function Ai(a){this.a=a;ui.call(this,a)} +function U1c(a){return a==null?0:ob(a)} +function p6(a){return a==null?mJd:f3(a)} +function X5(a,b){return a.charCodeAt(b)} +function a6(a,b,c){return c6(a,o6(b),c)} +function Cz(a,b,c){return {l:a,m:b,h:c}} +function _bb(a){return a.ab-1?0:b-1} +function Yac(a,b,c){return c?b!=0:b!=a-1} +function _Hc(a,b,c){return a.a[b.g][c.g]} +function _ac(a,b){return a.e[b.c.o][b.o]} +function tbc(a,b){return a.a[b.c.o][b.o]} +function Obc(a,b){return a.a[b.c.o][b.o]} +function $fc(a,b){return a.j[b.o]=mgc(b)} +function xLc(a,b){return C4(a.c.d,b.c.d)} +function JLc(a,b){return C4(a.c.c,b.c.c)} +function sVc(a,b,c){vUc(a.a,a.b,a.c,b,c)} +function eIc(a,b,c,d){wz(a.a[b.g],c.g,d)} +function SXc(a,b,c){wz(a.g,b,c);return c} +function Dyc(a,b){a.a*=b;a.b*=b;return a} +function Jx(a,b){a.q.setHours(b);Hx(a,b)} +function fdd(a,b,c){Ycd.call(this,a,b,c)} +function jdd(a,b,c){fdd.call(this,a,b,c)} +function Bwd(a,b,c){fdd.call(this,a,b,c)} +function Ewd(a,b,c){jdd.call(this,a,b,c)} +function twd(a,b,c){lud.call(this,a,b,c)} +function xwd(a,b,c){lud.call(this,a,b,c)} +function zwd(a,b,c){twd.call(this,a,b,c)} +function Vwd(a,b,c){Owd.call(this,a,b,c)} +function Owd(a,b,c){Ycd.call(this,a,b,c)} +function Swd(a,b,c){Ycd.call(this,a,b,c)} +function ph(a,b){this.a=a;hh.call(this,b)} +function a0c(a){this.i=a;this.f=this.i.j} +function QId(a){this.c=a;this.a=this.c.a} +function s9c(){this.Bb|=256;this.Bb|=512} +function Rm(a,b){this.a=a;Mm.call(this,b)} +function Qo(a,b){this.a=b;Mm.call(this,a)} +function qp(a){this.b=a;this.a=this.b.a.e} +function si(a){a.b.jc();--a.d.f.d;Sh(a.d)} +function h1c(a){a.a=kA(VNc(a.b.a,4),116)} +function p1c(a){a.a=kA(VNc(a.b.a,4),116)} +function Nk(a){zk.call(this,kA(Pb(a),34))} +function al(a){zk.call(this,kA(Pb(a),34))} +function Bb(a){Pb(mJd);return new Eb(a,a)} +function Mq(a,b){return new Br(a.a,a.b,b)} +function j6(a,b,c){return a.substr(b,c-b)} +function Zv(a){return a==null?null:a.name} +function Lz(a){return a.l+a.m*fLd+a.h*gLd} +function uA(a){return typeof a==='number'} +function G2(a){return typeof a==='number'} +function kgb(a,b){return !!b&&a.b[b.g]==b} +function ofb(a,b){var c;c=a[BLd];b[BLd]=c} +function seb(a){Xdb.call(this,a);this.a=a} +function Geb(a){neb.call(this,a);this.a=a} +function Teb(a){Peb.call(this,a);this.a=a} +function jib(a){Mgb.call(this,new Khb(a))} +function bbb(a){if(!a){throw x2(new qfb)}} +function Lpb(a){if(!a){throw x2(new djb)}} +function d4(a){if(a.o!=null){return}t4(a)} +function jjb(a){Lpb(a.a!=null);return a.a} +function qqb(a,b){tbb(b.a,a.a);return a.a} +function wqb(a,b){tbb(b.b,a.a);return a.a} +function nob(a,b){!!b&&(a.a=(aob(b),b.a))} +function Amb(a,b){return Elb(a.a,b)!=null} +function YCb(a,b){return kA(Ke(a.a,b),15)} +function Rlb(a){return a.b=kA(k9(a.a),38)} +function bqb(a){return a.$H||(a.$H=++aqb)} +function eIb(a){return _bb(a.a)||_bb(a.b)} +function oub(a,b){return !!a.p&&D8(a.p,b)} +function LNb(a,b){return a.k.b=(Npb(b),b)} +function MNb(a,b){return a.k.b=(Npb(b),b)} +function QZb(a,b){++a.b;return tbb(a.a,b)} +function RZb(a,b){++a.b;return Abb(a.a,b)} +function h8b(a,b,c){return i8b(a,b,c,a.b)} +function k8b(a,b,c){return i8b(a,b,c,a.c)} +function kAb(a,b){lAb.call(this,a,b,null)} +function Ms(a,b){this.a=b;Mm.call(this,a)} +function Zlb(a){this.a=a;sab.call(this,a)} +function tVb(){rVb();this.b=new zVb(this)} +function QGc(a,b){zGc();this.f=b;this.d=a} +function Lv(){Ev(this);Gv(this);this.Pd()} +function j0c(a){this.d=a;a0c.call(this,a)} +function v0c(a){this.c=a;a0c.call(this,a)} +function y0c(a){this.c=a;j0c.call(this,a)} +function L2c(a,b,c){N1c(a.a,c);M1c(a.a,b)} +function xvc(a,b,c){kA(Quc(a,b),19).nc(c)} +function p$b(a,b){tbb(b.a,a.a);return a.a} +function ULb(a){var b;b=a.a;a.a=a.b;a.b=b} +function Rhd(a,b){Ohd();this.a=a;this.b=b} +function oid(a,b){iid();this.b=a;this.c=b} +function qi(a,b,c,d){fi.call(this,a,b,c,d)} +function Dq(a,b,c){var d;d=a.fd(b);d.Bc(c)} +function _pb(b,c,d){try{b[c]=d}catch(a){}} +function bLc(){bLc=d3;aLc=new EWc(DOd,0)} +function irc(){irc=d3;hrc=new DWc('root')} +function Y3c(){Y3c=d3;X3c=new t4c;new S4c} +function YGd(a){++TGd;return new JHd(3,a)} +function Tr(a){Wj(a,hKd);return new Hbb(a)} +function co(a){Zn();Pb(a);return new Jo(a)} +function dt(a){bt();return Zs((kt(),jt),a)} +function Fw(a){Bw();return parseInt(a)||-1} +function D3(a,b){B3();return a==b?0:a?1:-1} +function fBd(a){return a==null?null:f3(a)} +function gBd(a){return a==null?null:f3(a)} +function Ss(a){return a.f!=null?a.f:''+a.g} +function Ebb(a){return wpb(a.c,a.c.length)} +function Dhb(a){a.b=new Vhb(a);a.c=new Bgb} +function Rx(a){this.q=new $wnd.Date(T2(a))} +function BXb(a){this.c=a;this.a=1;this.b=1} +function tjb(a){pjb();this.b=a;this.a=true} +function fsc(){this.a=new Xm;this.b=new Xm} +function Vhb(a){Whb.call(this,a,null,null)} +function gvb(){Ts.call(this,'POLYOMINO',0)} +function LQc(a){sA(a,142)&&kA(a,142).Xg()} +function qib(a){Lpb(a.b!=0);return a.a.a.c} +function rib(a){Lpb(a.b!=0);return a.c.b.c} +function uyc(a,b,c){a.a+=b;a.b+=c;return a} +function Eyc(a,b,c){a.a*=b;a.b*=c;return a} +function Fyc(a,b,c){a.a-=b;a.b-=c;return a} +function K6(a,b,c){a.a+=r6(b,0,c);return a} +function Byc(a){a.a=-a.a;a.b=-a.b;return a} +function rgc(a){return u5(a.d.e-a.e.e)-a.a} +function H1c(a,b){return a.c.nc(kA(b,134))} +function Vuc(a,b,c){return tbb(b,Xuc(a,c))} +function Jxb(a,b){return a>0?b*b/a:b*b*100} +function Cxb(a,b){return a>0?b/(a*a):b*100} +function zfd(a,b,c){eXc(Ebd(a.a),b,Dfd(c))} +function yjd(a,b,c){eXc(njd(a.a),b,Cjd(c))} +function f9c(a,b,c){T8c.call(this,a,b,c,2)} +function did(a,b){Ohd();Rhd.call(this,a,b)} +function Cid(a,b){iid();oid.call(this,a,b)} +function Gid(a,b){iid();oid.call(this,a,b)} +function Eid(a,b){iid();Cid.call(this,a,b)} +function Gnd(a,b){jmd();vnd.call(this,a,b)} +function Wnd(a,b){jmd();vnd.call(this,a,b)} +function Ind(a,b){jmd();Gnd.call(this,a,b)} +function Knd(a,b){jmd();Gnd.call(this,a,b)} +function Mnd(a,b){jmd();Knd.call(this,a,b)} +function Ynd(a,b){jmd();Wnd.call(this,a,b)} +function cod(a,b){jmd();vnd.call(this,a,b)} +function Mud(a,b,c){return b.ak(a.e,a.c,c)} +function Oud(a,b,c){return b.bk(a.e,a.c,c)} +function xtd(a,b,c){return Wtd(qtd(a,b),c)} +function Yud(a,b){return XMc(a.e,kA(b,42))} +function $Ad(a){return a==null?null:AEd(a)} +function cBd(a){return a==null?null:HEd(a)} +function aFc(a){this.c=a;rPc(a,0);sPc(a,0)} +function Ch(a,b){this.c=a;eg.call(this,a,b)} +function Ih(a,b){this.a=a;Ch.call(this,a,b)} +function ae(a){this.a=a;this.b=Kc(this.a.d)} +function vi(a,b){this.d=a;ri(this);this.b=b} +function ald(){V9c.call(this);this.Bb|=sLd} +function Gm(){Qc.call(this,new Jhb,new Bgb)} +function Ji(a,b,c){Uh.call(this,a,b,c,null)} +function Mi(a,b,c){Uh.call(this,a,b,c,null)} +function r9(a,b){a.a.bd(a.b,b);++a.b;a.c=-1} +function _9(a,b){var c;c=a.e;a.e=b;return c} +function mA(a){Upb(a==null||tA(a));return a} +function nA(a){Upb(a==null||uA(a));return a} +function pA(a){Upb(a==null||wA(a));return a} +function Ju(a,b){Pb(a);Pb(b);return E3(a,b)} +function Ptb(a){if(a>8){return 0}return a+1} +function Ehb(a){L8(a.c);a.b.b=a.b;a.b.a=a.b} +function iob(a,b){cob.call(this,a);this.a=b} +function Zob(a,b){cob.call(this,a);this.a=b} +function kub(a){hub.call(this,0,0);this.f=a} +function pfb(a){var b;b=a[BLd]|0;a[BLd]=b+1} +function Kmb(a,b,c){return a.Ld(b,c)<=0?c:b} +function cwc(a,b){return kA(Fhb(a.b,b),180)} +function fwc(a,b){return kA(Fhb(a.c,b),199)} +function uXb(a){return kA(xbb(a.a,a.b),269)} +function iyc(a){return new Jyc(a.c,a.d+a.a)} +function M2(a){return B2(Tz(G2(a)?S2(a):a))} +function phc(a){return Rfc(),i7b(kA(a,179))} +function CKc(){CKc=d3;BKc=fgb((bEc(),aEc))} +function ayc(){ayc=d3;$wnd.Math.pow(2,-65)} +function dZc(a,b,c){++a.j;a.Yh();iXc(a,b,c)} +function bZc(a,b,c){++a.j;a.Vh(b,a.Ch(b,c))} +function VPc(a,b,c){c=CMc(a,b,3,c);return c} +function lQc(a,b,c){c=CMc(a,b,6,c);return c} +function kTc(a,b,c){c=CMc(a,b,9,c);return c} +function DIc(a,b){gjb(b,GSd);a.f=b;return a} +function V1c(a,b){return (b&jJd)%a.d.length} +function cJb(a,b){WIb();return SFb(b.d.g,a)} +function Qod(a,b){return I8(a.a,b,'')==null} +function Kyd(a,b,c){return Bud(a.c,a.b,b,c)} +function Fhd(a,b,c){var d;d=a.fd(b);d.Bc(c)} +function Efd(a,b){this.a=a;Yed.call(this,b)} +function Djd(a,b){this.a=a;Yed.call(this,b)} +function W_c(a,b){this.c=a;dYc.call(this,b)} +function Ld(a){this.b=a;this.a=this.b.b.Tb()} +function Pld(a,b){Gld.call(this,a);this.a=b} +function uod(a,b){Gld.call(this,a);this.a=b} +function EWc(a,b){DWc.call(this,a);this.a=b} +function Z_c(a,b){q3.call(this,NUd+a+OUd+b)} +function Vj(){gf.call(this,new Bgb);this.a=3} +function ux(a){!a.a&&(a.a=new Ex);return a.a} +function Qh(a){a.b?Qh(a.b):a.f.c.Zb(a.e,a.d)} +function mv(a){this.a=(bdb(),new Qdb(Pb(a)))} +function Ub(a,b){if(!a){throw x2(new Q4(b))}} +function Mb(a,b){if(!a){throw x2(new O4(b))}} +function e6(a,b,c){return a.lastIndexOf(b,c)} +function lw(a,b,c){return a.apply(b,c);var d} +function Efb(a,b,c){return Dfb(a,kA(b,23),c)} +function wmb(a,b){return Nf(xlb(a.a,b,true))} +function xmb(a,b){return Nf(ylb(a.a,b,true))} +function fob(a){return new Lkb((aob(a),a.a))} +function qA(a){return String.fromCharCode(a)} +function Yv(a){return a==null?null:a.message} +function Jv(a,b){a.e=b;b!=null&&_pb(b,qKd,a)} +function gzb(a,b,c){return C4(a[b.b],a[c.b])} +function oGb(a,b,c,d){gGb.call(this,a,b,c,d)} +function Tlb(a){Ulb.call(this,a,(gmb(),cmb))} +function NNb(a,b){return a.k.a=(Npb(b),b)+10} +function ONb(a,b){return a.k.a=(Npb(b),b)+10} +function bJb(a,b){WIb();return !SFb(b.d.g,a)} +function f5(){f5=d3;e5=tz(GE,cKd,21,256,0,1)} +function B3(){B3=d3;z3=(B3(),false);A3=true} +function uqb(){this.b=new Hyc;this.c=new Gbb} +function _wb(){this.d=new Hyc;this.e=new Hyc} +function XFb(){this.k=new Hyc;this.n=new Hyc} +function ioc(){this.b=new Wnc;this.a=new Knc} +function Koc(){this.b=new Bgb;this.a=new Bgb} +function Kac(){this.b=new Jgb;this.a=new Jgb} +function Pec(){this.a=new Gbb;this.d=new Gbb} +function gxb(){this.a=new Gbb;this.b=new Gbb} +function Yyb(){this.a=new Mwb;this.b=new fzb} +function PDb(){this.a=new dDb;this.c=new QDb} +function CHc(){this.n=new XGb;this.i=new oyc} +function EHc(){CHc.call(this);this.a=new Hyc} +function WSc(a,b,c){c=CMc(a,b,11,c);return c} +function vyc(a,b){a.a+=b.a;a.b+=b.b;return a} +function Gyc(a,b){a.a-=b.a;a.b-=b.b;return a} +function itd(a,b){var c;c=b.Yg(a.a);return c} +function Wlc(a,b){return kA(a.b.cd(b),190).a} +function Obd(a,b){return b==a||VXc(Dbd(b),a)} +function s_c(a){return a<100?null:new f_c(a)} +function EUc(a,b,c){c!=null&&uQc(b,TUc(a,c))} +function FUc(a,b,c){c!=null&&vQc(b,TUc(a,c))} +function Dkd(a,b,c,d){zkd.call(this,a,b,c,d)} +function Hwd(a,b,c,d){zkd.call(this,a,b,c,d)} +function Lwd(a,b,c,d){Hwd.call(this,a,b,c,d)} +function exd(a,b,c,d){_wd.call(this,a,b,c,d)} +function gxd(a,b,c,d){_wd.call(this,a,b,c,d)} +function mxd(a,b,c,d){_wd.call(this,a,b,c,d)} +function kxd(a,b,c,d){gxd.call(this,a,b,c,d)} +function rxd(a,b,c,d){gxd.call(this,a,b,c,d)} +function pxd(a,b,c,d){mxd.call(this,a,b,c,d)} +function uxd(a,b,c,d){rxd.call(this,a,b,c,d)} +function Vxd(a,b,c,d){Pxd.call(this,a,b,c,d)} +function Jm(a,b,c){this.a=a;Ud.call(this,b,c)} +function gk(a,b,c){return a.d=kA(b.Kb(c),206)} +function Zxd(a,b){return a.Pi().dh().Zg(a,b)} +function $xd(a,b){return a.Pi().dh()._g(a,b)} +function vn(a,b){return Zn(),lo(a.tc(),b)!=-1} +function Fs(a,b){Es();return new Ms(a.tc(),b)} +function jo(a){Zn();return a.hc()?a.ic():null} +function J3(a){return uA(a)?(Npb(a),a):a.$d()} +function D4(a){return !isNaN(a)&&!isFinite(a)} +function tm(a){nl();this.b=(bdb(),new Peb(a))} +function nl(){nl=d3;new vl((bdb(),bdb(),$cb))} +function o7c(){o7c=d3;n7c=tz(NE,oJd,1,0,5,1)} +function S7c(){S7c=d3;R7c=tz(NE,oJd,1,0,5,1)} +function H0c(){H0c=d3;G0c=tz(NE,oJd,1,0,5,1)} +function T3(){T3=d3;S3=tz(uE,cKd,192,256,0,1)} +function t5(){t5=d3;s5=tz(IE,cKd,149,256,0,1)} +function S5(){S5=d3;R5=tz(PE,cKd,168,256,0,1)} +function b4(){b4=d3;a4=tz(vE,cKd,159,128,0,1)} +function Jo(a){this.b=a;this.a=(Zn(),Zn(),Yn)} +function oob(a){this.b=a;Akb.call(this,TJd,0)} +function cpb(a){this.c=a;Akb.call(this,TJd,0)} +function wGb(a){return !a.c?-1:ybb(a.c.a,a,0)} +function zmb(a,b){return Nf(ylb(a.a,b,false))} +function ymb(a,b){return Nf(xlb(a.a,b,false))} +function Cob(a,b){return a.b.sd(new Eob(a,b))} +function Hob(a,b){return a.b.sd(new Kob(a,b))} +function Fpb(a,b){if(!a){throw x2(new O4(b))}} +function Kpb(a,b){if(!a){throw x2(new u3(b))}} +function EEc(a,b){wEc(this);this.e=a;this.f=b} +function DEc(){wEc(this);this.e=0;this.f=true} +function z0c(a,b){this.c=a;k0c.call(this,a,b)} +function R1c(a,b){return sA(b,15)&&jXc(a.c,b)} +function R8c(a,b,c){return kA(a.c,64).yj(b,c)} +function Q8c(a,b,c){return kA(a.c,64).xj(b,c)} +function Nud(a,b,c){return Mud(a,kA(b,311),c)} +function Pud(a,b,c){return Oud(a,kA(b,311),c)} +function evd(a,b,c){return dvd(a,kA(b,311),c)} +function gvd(a,b,c){return fvd(a,kA(b,311),c)} +function ted(a,b){S6();return fXc(Ibd(a.a),b)} +function yed(a,b){S6();return fXc(Ibd(a.a),b)} +function io(a){Zn();return Fib(a.a)?ho(a):null} +function Mc(a,b){return a.b.Qb(b)?Nc(a,b):null} +function i6(a,b){return a.substr(b,a.length-b)} +function nHb(a){return kA(a,11).f.c.length!=0} +function sHb(a){return kA(a,11).d.c.length!=0} +function WCc(a){return a==PCc||a==RCc||a==QCc} +function Slb(a){l9(a.a);Flb(a.c,a.b);a.b=null} +function Ibb(a){rbb(this);Apb(this.c,0,a.yc())} +function zib(a){lib(this);xib(this);pg(this,a)} +function Jib(a,b,c){this.d=a;this.b=c;this.a=b} +function ngb(a,b,c){this.a=a;this.b=b;this.c=c} +function xhb(a,b,c){this.a=a;this.b=b;this.c=c} +function cnb(a,b,c){this.c=a;this.a=b;this.b=c} +function Pc(a,b,c,d){a.d.b.$b(c);a.d.b.Zb(d,b)} +function oo(a,b){Zn();Pb(b);return new Qo(a,b)} +function Nrb(a){Lrb();return Zs((Qrb(),Prb),a)} +function Vrb(a){Trb();return Zs((Yrb(),Xrb),a)} +function kmb(a){gmb();return Zs((umb(),tmb),a)} +function $mb(a){Ymb();return Zs((bnb(),anb),a)} +function ssb(a){qsb();return Zs((vsb(),usb),a)} +function Ltb(a){Jtb();return Zs((Otb(),Ntb),a)} +function Wub(a){Uub();return Zs((Zub(),Yub),a)} +function hvb(a){fvb();return Zs((kvb(),jvb),a)} +function Zxb(a){Xxb();return Zs((ayb(),_xb),a)} +function mzb(a){kzb();return Zs((pzb(),ozb),a)} +function Yzb(a){Wzb();return Zs((_zb(),$zb),a)} +function UBb(a){OBb();return Zs((XBb(),WBb),a)} +function TGb(a){RGb();return Zs((WGb(),VGb),a)} +function pGb(a){gGb.call(this,a.d,a.c,a.a,a.b)} +function ZGb(a){gGb.call(this,a.d,a.c,a.a,a.b)} +function eMb(a){cMb();return Zs((hMb(),gMb),a)} +function oPb(a){lPb();return Zs((rPb(),qPb),a)} +function V$b(a){T$b();return Zs((Y$b(),X$b),a)} +function b_b(a){_$b();return Zs((e_b(),d_b),a)} +function n_b(a){l_b();return Zs((q_b(),p_b),a)} +function y_b(a){t_b();return Zs((B_b(),A_b),a)} +function H_b(a){F_b();return Zs((K_b(),J_b),a)} +function T_b(a){O_b();return Zs((W_b(),V_b),a)} +function a0b(a){$_b();return Zs((d0b(),c0b),a)} +function n0b(a){k0b();return Zs((q0b(),p0b),a)} +function z0b(a){x0b();return Zs((C0b(),B0b),a)} +function L0b(a){J0b();return Zs((O0b(),N0b),a)} +function _0b(a){Z0b();return Zs((c1b(),b1b),a)} +function i1b(a){g1b();return Zs((l1b(),k1b),a)} +function r1b(a){p1b();return Zs((u1b(),t1b),a)} +function z1b(a){x1b();return Zs((C1b(),B1b),a)} +function M2b(a){K2b();return Zs((P2b(),O2b),a)} +function _6b(a){W6b();return Zs((c7b(),b7b),a)} +function l7b(a){h7b();return Zs((o7b(),n7b),a)} +function z7b(a){u7b();return Zs((C7b(),B7b),a)} +function N7b(a){L7b();return Zs((Q7b(),P7b),a)} +function W7b(a){U7b();return Zs((Z7b(),Y7b),a)} +function d8b(a){b8b();return Zs((g8b(),f8b),a)} +function y8b(a){w8b();return Zs((B8b(),A8b),a)} +function H8b(a){F8b();return Zs((K8b(),J8b),a)} +function Q8b(a){O8b();return Zs((T8b(),S8b),a)} +function rkb(a,b){while(a.b.sd(new Eob(a,b)));} +function yEb(a,b,c){this.b=a;this.a=b;this.c=c} +function zub(a,b,c){this.a=a;this.b=b;this.c=c} +function eLb(a,b,c){this.a=a;this.b=b;this.c=c} +function qFb(a,b,c){this.e=b;this.b=a;this.d=c} +function N$b(a){var b;b=new M$b;b.e=a;return b} +function Vbc(a){!a.e&&(a.e=new Gbb);return a.e} +function IVb(){IVb=d3;GVb=new eWb;HVb=new gWb} +function Yib(){Yib=d3;Wib=new Zib;Xib=new _ib} +function hNb(){hNb=d3;fNb=new qNb;gNb=new tNb} +function Yec(a){Wec();return Zs((_ec(),$ec),a)} +function edc(a){cdc();return Zs((hdc(),gdc),a)} +function eoc(a){_nc();return Zs((hoc(),goc),a)} +function Woc(a){Toc();return Zs((Zoc(),Yoc),a)} +function jic(a){hic();return Zs((mic(),lic),a)} +function ric(a){pic();return Zs((uic(),tic),a)} +function Xic(a){Vic();return Zs(($ic(),Zic),a)} +function Plc(a){Flc();return Zs((Slc(),Rlc),a)} +function Psc(a){Msc();return Zs((Ssc(),Rsc),a)} +function Fsc(a){Csc();return Zs((Isc(),Hsc),a)} +function knc(a){inc();return Zs((nnc(),mnc),a)} +function qqc(a){oqc();return Zs((tqc(),sqc),a)} +function yqc(a){wqc();return Zs((Bqc(),Aqc),a)} +function qrc(a){lrc();return Zs((urc(),trc),a)} +function Trc(a){Qrc();return Zs((Wrc(),Vrc),a)} +function Ctc(a){ztc();return Zs((Ftc(),Etc),a)} +function Mtc(a){Jtc();return Zs((Ptc(),Otc),a)} +function Ixc(a){Gxc();return Zs((Lxc(),Kxc),a)} +function Wxc(a){Uxc();return Zs((Zxc(),Yxc),a)} +function gzc(a){ezc();return Zs((jzc(),izc),a)} +function gDc(a){eDc();return Zs((jDc(),iDc),a)} +function JDc(a){FDc();return Zs((MDc(),LDc),a)} +function ZCc(a){VCc();return Zs((aDc(),_Cc),a)} +function lCc(a){jCc();return Zs((oCc(),nCc),a)} +function ACc(a){yCc();return Zs((DCc(),CCc),a)} +function LCc(a){JCc();return Zs((OCc(),NCc),a)} +function lBc(a){gBc();return Zs((oBc(),nBc),a)} +function vBc(a){tBc();return Zs((yBc(),xBc),a)} +function FBc(a){DBc();return Zs((IBc(),HBc),a)} +function RBc(a){PBc();return Zs((UBc(),TBc),a)} +function dEc(a){bEc();return Zs((gEc(),fEc),a)} +function sEc(a){qEc();return Zs((vEc(),uEc),a)} +function iFc(a){gFc();return Zs((lFc(),kFc),a)} +function mHc(a){jHc();return Zs((pHc(),oHc),a)} +function MHc(a){KHc();return Zs((PHc(),OHc),a)} +function rIc(a){pIc();return Zs((uIc(),tIc),a)} +function gJc(a){eJc();return Zs((jJc(),iJc),a)} +function XJc(a){SJc();return Zs(($Jc(),ZJc),a)} +function $Lc(a){YLc();return Zs((bMc(),aMc),a)} +function wWc(a){uWc();return Zs((zWc(),yWc),a)} +function Dnc(a,b,c){return a=b){throw x2(new r3)}} +function ucb(a,b){var c;for(c=0;c0?1:0} +function rA(a){return !Array.isArray(a)&&a.sl===g3} +function vA(a){return a!=null&&xA(a)&&!(a.sl===g3)} +function jgb(a,b){return sA(b,23)&&kgb(a,kA(b,23))} +function lgb(a,b){return sA(b,23)&&mgb(a,kA(b,23))} +function lhb(a,b){return !(a.a.get(b)===undefined)} +function Wjb(a){return Yjb(a,26)*ILd+Yjb(a,27)*JLd} +function lnb(a,b){return fnb(new Xnb,new onb(a),b)} +function Opb(a,b){if(a==null){throw x2(new B5(b))}} +function Dfb(a,b,c){hgb(a.a,b);return Gfb(a,b.g,c)} +function Dcb(a,b,c){Hpb(0,b,a.length);Acb(a,0,b,c)} +function sbb(a,b,c){Ppb(b,a.c.length);zpb(a.c,b,c)} +function hUb(a,b,c){cUb(c,a,1);tbb(b,new YUb(c,a))} +function iUb(a,b,c){dUb(c,a,1);tbb(b,new SUb(c,a))} +function prb(){this.d=new Brb;this.e=new vrb(this)} +function qBb(){this.b=new BBb;this.c=new uBb(this)} +function d9b(){a9b();this.e=new yib;this.d=new yib} +function cMc(a,b){this.b=new yib;this.a=a;this.c=b} +function M7(a,b,c){y7();this.e=a;this.d=b;this.a=c} +function RHc(a,b,c){var d;if(a){d=a.i;d.d=b;d.a=c}} +function QHc(a,b,c){var d;if(a){d=a.i;d.c=b;d.b=c}} +function tcb(a,b,c){var d;for(d=0;d0?$wnd.Math.log(a/b):-100} +function KLc(a,b){return C4(a.c.c+a.c.b,b.c.c+b.c.b)} +function k0c(a,b){this.d=a;a0c.call(this,a);this.e=b} +function Zuc(a,b,c){Ruc(a,b.g,c);hgb(a.c,b);return a} +function ZAb(a){XAb(a,(gBc(),cBc));a.d=true;return a} +function Pb(a){if(a==null){throw x2(new A5)}return a} +function hz(a){if(a==null){throw x2(new A5)}this.a=a} +function Up(a){a.a=null;a.e=null;L8(a.b);a.d=0;++a.c} +function dud(a){!a.j&&jud(a,etd(a.g,a.b));return a.j} +function GJb(a){a.b.k.a+=a.a.f*(a.a.a-1);return null} +function bcb(a){Rpb(a.b!=-1);zbb(a.c,a.a=a.b);a.b=-1} +function _ab(a){Mab(this);Cpb(this.a,Z4(8>a?8:a)<<1)} +function PHd(a,b){VGd.call(this,1);this.a=a;this.b=b} +function gn(a,b,c){this.a=a;Rb(c,b);this.c=b;this.b=c} +function Tm(a,b){this.a=a;this.b=b;this.c=this.b.lc()} +function _ud(a,b){rcd(a,sA(b,184)?b:kA(b,1630).rk())} +function Ab(a){Pb(a);return sA(a,476)?kA(a,476):f3(a)} +function SYb(a,b){if(!b){return false}return pg(a,b)} +function s6(a,b){a.a+=String.fromCharCode(b);return a} +function C6(a,b){a.a+=String.fromCharCode(b);return a} +function G6(a,b,c,d){a.a+=''+b.substr(c,d-c);return a} +function dy(a,b,c){var d;d=cy(a,b);ey(a,b,c);return d} +function vcb(a,b,c){var d;for(d=0;d=a.g} +function Zvb(a,b){Tvb();return a==_Wc(b)?bXc(b):_Wc(b)} +function I8(a,b,c){return wA(b)?J8(a,b,c):Xgb(a.d,b,c)} +function iec(a,b,c){var d;d=kec(a,b,c);return hec(a,d)} +function es(a,b){var c;c=a.a._b();Ob(b,c);return c-1-b} +function Gmc(a,b){var c;c=new Emc(a);Amc(c,b);return c} +function wz(a,b,c){Jpb(c==null||oz(a,c));return a[b]=c} +function OTc(a,b){var c;c=a.a.length;cy(a,c);ey(a,c,b)} +function cZc(a,b){var c;++a.j;c=a.hi();a.Wh(a.Ch(c,b))} +function cWc(a,b){OTc(a,new hz(b.f!=null?b.f:''+b.g))} +function aWc(a,b){OTc(a,new hz(b.f!=null?b.f:''+b.g))} +function HAb(a){this.b=new Gbb;this.a=new Gbb;this.c=a} +function lIb(a){this.c=new Hyc;this.a=new Gbb;this.b=a} +function pxb(a){_wb.call(this);this.a=new Hyc;this.c=a} +function wnd(a,b,c){kmd.call(this,b);this.a=a;this.b=c} +function _Hd(a,b,c){VGd.call(this,a);this.a=b;this.b=c} +function kod(a,b,c){this.a=a;Gld.call(this,b);this.b=c} +function gsd(a,b,c){this.a=a;L$c.call(this,8,b,null,c)} +function swc(a){this.c=a;this.a=new yib;this.b=new yib} +function Np(a){this.c=a;this.b=this.c.a;this.a=this.c.e} +function Atd(a){this.a=(Npb(xVd),xVd);this.b=a;new Lkd} +function ohd(a){!a.d&&(a.d=new fdd(pY,a,1));return a.d} +function Nc(a,b){var c;c=a.b.$b(b);a.d.b.$b(c);return c} +function b5(a,b){while(b-->0){a=a<<1|(a<0?1:0)}return a} +function Hb(a,b){return yA(a)===yA(b)||a!=null&&kb(a,b)} +function Skb(a,b){return Ykb(b,a.a.c.length),xbb(a.a,b)} +function Ayc(a){return $wnd.Math.sqrt(a.a*a.a+a.b*a.b)} +function n6(a){return String.fromCharCode.apply(null,a)} +function Cn(a){return sA(a,13)?kA(a,13)._b():mo(a.tc())} +function kv(a){if(sA(a,543)){return a}return new lv(a)} +function uGb(a){if(!a.a&&!!a.c){return a.c.b}return a.a} +function Znb(a){if(!a.c){a.d=true;_nb(a)}else{Znb(a.c)}} +function aob(a){if(!a.c){bob(a);a.d=true}else{aob(a.c)}} +function Afb(a){rg(a.a);a.b=tz(NE,oJd,1,a.b.length,5,1)} +function dib(a){this.c=a;this.b=a.a.b.a;ofb(a.a.c,this)} +function dGc(a,b){a.c<0||a.b.b0?new EEc(a-1,b):new EEc(a,b)} +function Tu(a,b){Pu();return new Ru(new al(a),new Nk(b))} +function ti(a){Rh(a.d);if(a.d.d!=a.c){throw x2(new qfb)}} +function Vgb(a,b){var c;c=a.a.get(b);return c==null?[]:c} +function fUc(a,b){var c;c=F8(a.f,b);VUc(b,c);return null} +function dSc(a,b,c,d){cSc(a,b,c,false);rgd(a,d);return a} +function y6(a,b){a.a=j6(a.a,0,b)+''+i6(a.a,b+1);return a} +function wvc(a){a.j.c=tz(NE,oJd,1,0,5,1);a.a=-1;return a} +function ZPc(a){!a.c&&(a.c=new pxd(HV,a,5,8));return a.c} +function YPc(a){!a.b&&(a.b=new pxd(HV,a,4,7));return a.b} +function _Oc(a){!a.n&&(a.n=new zkd(LV,a,1,7));return a.n} +function $Sc(a){!a.c&&(a.c=new zkd(NV,a,9,9));return a.c} +function bud(a){a.e==mWd&&hud(a,btd(a.g,a.b));return a.e} +function cud(a){a.f==mWd&&iud(a,ctd(a.g,a.b));return a.f} +function oA(a){Upb(a==null||xA(a)&&!(a.sl===g3));return a} +function Qb(a,b){if(a==null){throw x2(new B5(b))}return a} +function mj(a){var b;b=a.b;!b&&(a.b=b=new ju(a));return b} +function wYc(a){var b;b=a.Gh(a.f);fXc(a,b);return b.hc()} +function rg(a){var b;for(b=a.tc();b.hc();){b.ic();b.jc()}} +function k9(a){Lpb(a.bd&&++d;return d} +function TRc(a){var b,c;c=(b=new xhd,b);qhd(c,a);return c} +function URc(a){var b,c;c=(b=new xhd,b);uhd(c,a);return c} +function u$c(a){if(a.p!=5)throw x2(new P4);return U2(a.f)} +function D$c(a){if(a.p!=5)throw x2(new P4);return U2(a.k)} +function aJd(a){if(a)return a.Wb();return !null.tc().hc()} +function Gv(a){if(a.n){a.e!==pKd&&a.Pd();a.j=null}return a} +function $5c(a){return a!=null&&Udb(I5c,a.toLowerCase())} +function k3c(a){this.f=a;this.c=this.f.e;a.f>0&&j3c(this)} +function amd(a,b,c,d){this.e=a;this.a=b;this.c=c;this.d=d} +function lnd(a,b,c,d){jmd();wmd.call(this,b,c,d);this.a=a} +function rnd(a,b,c,d){jmd();wmd.call(this,b,c,d);this.a=a} +function gpb(a,b,c,d){this.b=a;this.c=d;Akb.call(this,b,c)} +function Bi(a,b){this.a=a;vi.call(this,a,kA(a.d,15).fd(b))} +function xib(a){a.a.a=a.c;a.c.b=a.a;a.a.b=a.c.a=null;a.b=0} +function aGb(a,b){a.b=b.b;a.c=b.c;a.d=b.d;a.a=b.a;return a} +function mXb(a,b,c){a.i=0;a.e=0;if(b==c){return}iXb(a,b,c)} +function nXb(a,b,c){a.i=0;a.e=0;if(b==c){return}jXb(a,b,c)} +function _Xb(a,b){var c;c=$Xb(b);return kA(F8(a.c,c),21).a} +function h6(a,b,c){return c>=0&&Z5(a.substr(c,b.length),b)} +function H8(a,b){return b==null?!!Wgb(a.d,null):lhb(a.e,b)} +function zYb(a,b){if(!!a.d&&!a.d.a){yYb(a.d,b);zYb(a.d,b)}} +function AYb(a,b){if(!!a.e&&!a.e.a){yYb(a.e,b);AYb(a.e,b)}} +function Xbc(a,b){this.g=a;this.d=xz(pz(RK,1),VNd,8,0,[b])} +function roc(a,b){new yib;this.a=new Vyc;this.b=a;this.c=b} +function kSc(){hSc(this,new gRc);this.wb=(P6c(),O6c);N6c()} +function BWc(a,b){return sA(b,166)&&Z5(a.b,kA(b,166).Lf())} +function lvc(a,b){mb(a);mb(b);return Rs(kA(a,23),kA(b,23))} +function cjd(a,b,c,d,e,f){bjd.call(this,a,b,c,d,e,f?-2:-1)} +function Lxd(a,b,c,d){tcd.call(this,b,c);this.b=a;this.a=d} +function tv(a,b){Sj.call(this,new Llb(a));this.a=a;this.b=b} +function dr(a){this.b=a;this.c=a;a.e=null;a.c=null;this.a=1} +function Kv(a,b){var c;c=f4(a.ql);return b==null?c:c+': '+b} +function z2(a,b){return B2(Oz(G2(a)?S2(a):a,G2(b)?S2(b):b))} +function N2(a,b){return B2(Uz(G2(a)?S2(a):a,G2(b)?S2(b):b))} +function W2(a,b){return B2(aA(G2(a)?S2(a):a,G2(b)?S2(b):b))} +function bw(a){return !!a&&!!a.hashCode?a.hashCode():bqb(a)} +function jdb(a){bdb();return sA(a,49)?new Oeb(a):new seb(a)} +function bdb(){bdb=d3;$cb=new ldb;_cb=new Edb;adb=new Mdb} +function $eb(){$eb=d3;Xeb=new afb;Yeb=new afb;Zeb=new ffb} +function Pqb(){Pqb=d3;Mqb=new Kqb;Oqb=new prb;Nqb=new grb} +function Bw(){Bw=d3;var a,b;b=!Gw();a=new Ow;Aw=b?new Hw:a} +function uBb(a){this.c=a;this.b=new Cmb(kA(Pb(new wBb),65))} +function vrb(a){this.c=a;this.b=new Cmb(kA(Pb(new wrb),65))} +function PEb(){this.a=new Vyc;this.b=(Wj(3,hKd),new Hbb(3))} +function fFb(a,b,c){this.a=a;this.e=false;this.d=b;this.c=c} +function Wqb(a,b,c){if(a.f){return a.f.re(b,c)}return false} +function Ibd(a){!a.s&&(a.s=new zkd(zY,a,21,17));return a.s} +function Fbd(a){!a.q&&(a.q=new zkd(tY,a,11,10));return a.q} +function YSc(a){!a.a&&(a.a=new zkd(MV,a,10,11));return a.a} +function JAb(a,b){var c;c=Igb(a.a,b);c&&(b.d=null);return c} +function m8b(a,b,c,d){wz(a.c[b.g],c.g,d);wz(a.c[c.g],b.g,d)} +function p8b(a,b,c,d){wz(a.c[b.g],b.g,c);wz(a.b[b.g],b.g,d)} +function LYc(a,b,c){IYc();!!a&&I8(HYc,a,b);!!a&&I8(GYc,a,c)} +function _jb(a,b){$jb(a,U2(z2(P2(b,24),NLd)),U2(z2(b,NLd)))} +function RNc(a){var b;b=kA(VNc(a,16),24);return !b?a.Rg():b} +function p$c(a){if(a.p!=0)throw x2(new P4);return L2(a.f,0)} +function y$c(a){if(a.p!=0)throw x2(new P4);return L2(a.k,0)} +function Kbd(a){if(!a.u){Jbd(a);a.u=new Efd(a,a)}return a.u} +function Llc(a){if(a==klc||a==hlc){return true}return false} +function qw(a){kw();$wnd.setTimeout(function(){throw a},0)} +function qyc(a){this.c=a.c;this.d=a.d;this.b=a.b;this.a=a.a} +function bmd(a,b){this.e=a;this.a=NE;this.b=Ixd(b);this.c=b} +function mjc(){this.b=new Jgb;this.c=new yib;this.d=new qlb} +function hic(){hic=d3;gic=new iic(yOd,0);fic=new iic(xOd,1)} +function inc(){inc=d3;gnc=new jnc(xOd,0);hnc=new jnc(yOd,1)} +function kn(){kn=d3;nl();jn=(Iu(),Hu);hn=new cv(new Cmb(jn))} +function nn(a){kn();Pb(a);return jn==a?hn:new cv(new Cmb(a))} +function Gud(a,b,c,d,e,f,g){return new qzd(a.e,b,c,d,e,f,g)} +function _$c(a,b,c,d,e,f){this.a=a;M$c.call(this,b,c,d,e,f)} +function S_c(a,b,c,d,e,f){this.a=a;M$c.call(this,b,c,d,e,f)} +function ahb(a){this.e=a;this.b=this.e.a.entries();this.a=[]} +function zmc(a){a.d=a.d-15;a.b=a.b-15;a.c=a.c+15;a.a=a.a+15} +function eTb(a,b){var c;c=kA(Ihb(a.e,b),249);!!c&&(a.d=true)} +function G8(a,b){return b==null?Of(Wgb(a.d,null)):mhb(a.e,b)} +function Wgb(a,b){return Ugb(a,b,Vgb(a,b==null?0:a.b.he(b)))} +function Ff(a,b){return b===a?'(this Map)':b==null?mJd:f3(b)} +function usd(a,b){return a.a?b.pg().tc():kA(b.pg(),64).oh()} +function L6(a,b,c){a.a=j6(a.a,0,b)+(''+c)+i6(a.a,b);return a} +function Ly(a,b){if(b==null){throw x2(new A5)}return My(a,b)} +function Orb(){Lrb();return xz(pz(iI,1),jKd,391,0,[Krb,Jrb])} +function Wrb(){Trb();return xz(pz(jI,1),jKd,390,0,[Rrb,Srb])} +function $xb(){Xxb();return xz(pz(sJ,1),jKd,387,0,[Vxb,Wxb])} +function c_b(){_$b();return xz(pz(dP,1),jKd,386,0,[Z$b,$$b])} +function z_b(){t_b();return xz(pz(fP,1),jKd,317,0,[s_b,r_b])} +function A1b(){x1b();return xz(pz(pP,1),jKd,383,0,[v1b,w1b])} +function zqc(){wqc();return xz(pz(zS,1),jKd,388,0,[vqc,uqc])} +function rqc(){oqc();return xz(pz(yS,1),jKd,438,0,[mqc,nqc])} +function rrc(){lrc();return xz(pz(ES,1),jKd,447,0,[jrc,krc])} +function Yic(){Vic();return xz(pz(wR,1),jKd,437,0,[Uic,Tic])} +function kic(){hic();return xz(pz(oR,1),jKd,466,0,[gic,fic])} +function sic(){pic();return xz(pz(pR,1),jKd,465,0,[nic,oic])} +function lnc(){inc();return xz(pz(UR,1),jKd,417,0,[gnc,hnc])} +function Zec(){Wec();return xz(pz(uQ,1),jKd,472,0,[Vec,Uec])} +function Gsc(){Csc();return xz(pz(RS,1),jKd,389,0,[Asc,Bsc])} +function NMc(a,b,c,d){return c>=0?a.Dg(b,c,d):a.lg(null,c,d)} +function _tc(a,b){var c;c=kA(AOc(b,(irc(),hrc)),35);auc(a,c)} +function Wkc(a){var b;b=Vr(a.b);pg(b,a.c);pg(b,a.i);return b} +function Xdd(a){yA(a.a)===yA((wbd(),vbd))&&Ydd(a);return a.a} +function cGc(a){if(a.b.b==0){return a.a.Be()}return uib(a.b)} +function Wp(a){var b;return b=a.g,kA(!b?(a.g=new Qq(a)):b,15)} +function pic(){pic=d3;nic=new qic(WQd,0);oic=new qic('UP',1)} +function tmc(a,b){qmc(this,new Jyc(a.a,a.b));rmc(this,Vr(b))} +function GIc(a,b){CHc.call(this);vIc(this);this.a=a;this.c=b} +function nmd(a,b,c){jmd();kmd.call(this,b);this.a=a;this.b=c} +function dId(a,b,c){UGd();VGd.call(this,a);this.b=b;this.a=c} +function ew(a,b){var c=dw[a.charCodeAt(0)];return c==null?a:c} +function uAb(a,b){var c;c=dAb(a.f,b);return vyc(Byc(c),a.f.d)} +function Thb(a){var b;b=a.c.b.b;a.b=b;a.a=a.c.b;b.a=a.c.b.b=a} +function tib(a){return a.b==0?null:(Lpb(a.b!=0),wib(a,a.a.a))} +function Zjb(a){return y2(O2(E2(Yjb(a,32)),32),E2(Yjb(a,32)))} +function Phd(a){return sA(a,62)&&(kA(kA(a,17),62).Bb&bTd)!=0} +function zA(a){return Math.max(Math.min(a,jJd),-2147483648)|0} +function icb(a,b){Ipb(b);return kcb(a,tz(FA,OKd,22,b,15,1),b)} +function Yvb(a,b){Tvb();return a==ZSc(_Wc(b))||a==ZSc(bXc(b))} +function HGb(a){var b;return b=yGb(a),'n_'+(b==null?''+a.o:b)} +function Uo(a){this.b=(Zn(),Zn(),Zn(),Xn);this.a=kA(Pb(a),43)} +function EIc(a){CHc.call(this);vIc(this);this.a=a;this.c=true} +function pKb(a,b,c){this.d=a;this.b=new Gbb;this.c=b;this.a=c} +function pKc(a,b,c,d){var e;e=new EHc;b.a[c.g]=e;Dfb(a.b,d,e)} +function p4(a,b){var c=a.a=a.a||[];return c[b]||(c[b]=a._d(b))} +function Ix(a,b){var c;c=a.q.getHours();a.q.setDate(b);Hx(a,c)} +function hv(a){var b;b=new Kgb(Gs(a.length));cdb(b,a);return b} +function e3(a){function b(){} +;b.prototype=a||{};return new b} +function Vab(a,b){if(Qab(a,b)){lbb(a);return true}return false} +function XPc(a){if(a.Db>>16!=3)return null;return kA(a.Cb,35)} +function mTc(a){if(a.Db>>16!=9)return null;return kA(a.Cb,35)} +function r$c(a){if(a.p!=2)throw x2(new P4);return U2(a.f)&AKd} +function A$c(a){if(a.p!=2)throw x2(new P4);return U2(a.k)&AKd} +function oqc(){oqc=d3;mqc=new pqc(kRd,0);nqc=new pqc('FAN',1)} +function jec(a,b,c){var d;d=sec(a,b,c);a.b=new _dc(d.c.length)} +function J8(a,b,c){return b==null?Xgb(a.d,null,c):nhb(a.e,b,c)} +function Anb(a,b){return r5(y2(r5(kA(a,149).a).a,kA(b,149).a))} +function $9b(){$9b=d3;Z9b=Tu(d5(1),d5(4));Y9b=Tu(d5(1),d5(2))} +function a9b(){a9b=d3;_8b=rvc(new yvc,(Wzb(),Vzb),(lPb(),bPb))} +function V8b(){V8b=d3;U8b=rvc(new yvc,(Wzb(),Vzb),(lPb(),bPb))} +function mfc(){mfc=d3;lfc=tvc(new yvc,(Wzb(),Vzb),(lPb(),BOb))} +function Rfc(){Rfc=d3;Qfc=tvc(new yvc,(Wzb(),Vzb),(lPb(),BOb))} +function Thc(){Thc=d3;Shc=tvc(new yvc,(Wzb(),Vzb),(lPb(),BOb))} +function Hic(){Hic=d3;Gic=tvc(new yvc,(Wzb(),Vzb),(lPb(),BOb))} +function Dqc(){Dqc=d3;Cqc=rvc(new yvc,(_nc(),$nc),(Toc(),Noc))} +function pQc(a){if(a.Db>>16!=6)return null;return kA(a.Cb,105)} +function ORc(a){if(a.Db>>16!=7)return null;return kA(a.Cb,207)} +function JSc(a){if(a.Db>>16!=7)return null;return kA(a.Cb,253)} +function ZSc(a){if(a.Db>>16!=11)return null;return kA(a.Cb,35)} +function I9c(a){if(a.Db>>16!=17)return null;return kA(a.Cb,24)} +function C8c(a){if(a.Db>>16!=3)return null;return kA(a.Cb,139)} +function Jad(a){if(a.Db>>16!=6)return null;return kA(a.Cb,207)} +function ncd(a,b,c,d,e,f){return new Oid(a.e,b,a.pi(),c,d,e,f)} +function Ffb(a,b){return lgb(a.a,b)?Gfb(a,kA(b,23).g,null):null} +function Gx(a,b){return l5(E2(a.q.getTime()),E2(b.q.getTime()))} +function Lx(a,b){var c;c=a.q.getHours();a.q.setMonth(b);Hx(a,c)} +function LEb(a,b){!!a.c&&Abb(a.c.f,a);a.c=b;!!a.c&&tbb(a.c.f,a)} +function FGb(a,b){!!a.c&&Abb(a.c.a,a);a.c=b;!!a.c&&tbb(a.c.a,a)} +function MEb(a,b){!!a.d&&Abb(a.d.d,a);a.d=b;!!a.d&&tbb(a.d.d,a)} +function jHb(a,b){!!a.g&&Abb(a.g.i,a);a.g=b;!!a.g&&tbb(a.g.i,a)} +function _Fb(a,b){a.b+=b.b;a.c+=b.c;a.d+=b.d;a.a+=b.a;return a} +function yr(a){_p(a.c);a.e=a.a=a.c;a.c=a.c.c;++a.d;return a.a.f} +function zr(a){_p(a.e);a.c=a.a=a.e;a.e=a.e.e;--a.d;return a.a.f} +function r9b(a,b){var c;c=new lIb(a);b.c[b.c.length]=c;return c} +function bWc(a,b){var c,d;c=b.c;d=c!=null;d&&OTc(a,new hz(b.c))} +function hsc(a){var b;b=Nsc(kA(AOc(a,(otc(),gtc)),349));b.Ef(a)} +function Q9c(a,b){sA(a.Cb,96)&&Edd(Jbd(kA(a.Cb,96)),4);wRc(a,b)} +function Xad(a,b){sA(a.Cb,248)&&(kA(a.Cb,248).tb=null);wRc(a,b)} +function Ykd(a,b){Zkd(a,b);sA(a.Cb,96)&&Edd(Jbd(kA(a.Cb,96)),2)} +function w3(a,b){Ev(this);this.f=b;this.g=a;Gv(this);this.Pd()} +function Svc(a){this.c=new yib;this.b=a.b;this.d=a.c;this.a=a.a} +function pqb(){this.a=new iib;this.e=new Jgb;this.g=0;this.i=0} +function A9(a,b,c){Qpb(b,c,a._b());this.c=a;this.a=b;this.b=c-b} +function s9(a,b){this.a=a;m9.call(this,a);Ppb(b,a._b());this.b=b} +function qdc(a){this.a=a;this.b=tz(gQ,cKd,1637,a.e.length,0,2)} +function Iyc(a){this.a=$wnd.Math.cos(a);this.b=$wnd.Math.sin(a)} +function ekb(a,b){this.b=(Npb(a),a);this.a=(b&qLd)==0?b|64|RJd:b} +function Bbb(a,b,c){var d;Qpb(b,c,a.c.length);d=c-b;Bpb(a.c,b,d)} +function Rt(a,b){var c;c=kA(Js(Tp(a.a),b),13);return !c?0:c._b()} +function Dfd(a){var b,c;c=(N6c(),b=new xhd,b);qhd(c,a);return c} +function Cjd(a){var b,c;c=(N6c(),b=new xhd,b);qhd(c,a);return c} +function uVb(a){rVb();if(sA(a.g,8)){return kA(a.g,8)}return null} +function SVb(a,b){var c;c=kA(F8(a.g,b),57);wbb(b.d,new EWb(a,c))} +function Sud(a,b){return wyd(),K9c(b)?new tzd(b,a):new Nyd(b,a)} +function gHb(a){return Pyc(xz(pz(aU,1),cKd,9,0,[a.g.k,a.k,a.a]))} +function fMb(){cMb();return xz(pz($L,1),jKd,412,0,[aMb,bMb,_Lb])} +function _mb(){Ymb();return xz(pz($G,1),jKd,150,0,[Vmb,Wmb,Xmb])} +function s1b(){p1b();return xz(pz(oP,1),jKd,280,0,[n1b,o1b,m1b])} +function j1b(){g1b();return xz(pz(nP,1),jKd,318,0,[e1b,f1b,d1b])} +function I_b(){F_b();return xz(pz(gP,1),jKd,319,0,[C_b,E_b,D_b])} +function U_b(){O_b();return xz(pz(hP,1),jKd,384,0,[M_b,L_b,N_b])} +function b0b(){$_b();return xz(pz(iP,1),jKd,406,0,[Y_b,X_b,Z_b])} +function X7b(){U7b();return xz(pz(yP,1),jKd,410,0,[T7b,R7b,S7b])} +function e8b(){b8b();return xz(pz(zP,1),jKd,345,0,[$7b,a8b,_7b])} +function z8b(){w8b();return xz(pz(BP,1),jKd,347,0,[v8b,t8b,u8b])} +function R8b(){O8b();return xz(pz(DP,1),jKd,346,0,[M8b,N8b,L8b])} +function I8b(){F8b();return xz(pz(CP,1),jKd,385,0,[E8b,C8b,D8b])} +function nzb(){kzb();return xz(pz(zJ,1),jKd,348,0,[izb,hzb,jzb])} +function Qsc(){Msc();return xz(pz(SS,1),jKd,349,0,[Jsc,Ksc,Lsc])} +function Urc(){Qrc();return xz(pz(IS,1),jKd,401,0,[Prc,Nrc,Orc])} +function fdc(){cdc();return xz(pz(bQ,1),jKd,413,0,[_cc,adc,bdc])} +function sIc(){pIc();return xz(pz(cV,1),jKd,419,0,[nIc,mIc,oIc])} +function hJc(){eJc();return xz(pz(jV,1),jKd,420,0,[dJc,cJc,bJc])} +function hDc(){eDc();return xz(pz(qU,1),jKd,275,0,[dDc,cDc,bDc])} +function Ntc(){Jtc();return xz(pz(XS,1),jKd,277,0,[Htc,Itc,Gtc])} +function NHc(){KHc();return xz(pz(_U,1),jKd,203,0,[HHc,IHc,JHc])} +function mCc(){jCc();return xz(pz(mU,1),jKd,316,0,[hCc,gCc,iCc])} +function kt(){kt=d3;jt=Vs((bt(),xz(pz(bD,1),jKd,350,0,[_s,at])))} +function wqc(){wqc=d3;vqc=new xqc('DFS',0);uqc=new xqc('BFS',1)} +function Tvb(){Tvb=d3;Svb=new Gbb;Rvb=(Es(),new Bgb);Qvb=new Gbb} +function Eic(a,b,c){var d;d=new Dic;d.b=b;d.a=c;++b.b;tbb(a.d,d)} +function XHd(a,b,c){VGd.call(this,25);this.b=a;this.a=b;this.c=c} +function wHd(a){UGd();VGd.call(this,a);this.c=false;this.a=false} +function $td(a){a.a==(Usd(),Tsd)&&eud(a,Vsd(a.g,a.b));return a.a} +function aud(a){a.d==(Usd(),Tsd)&&gud(a,Zsd(a.g,a.b));return a.d} +function $s(a,b){var c;c=(Npb(a),a).g;Epb(!!c);Npb(b);return c(b)} +function ds(a,b){var c,d;d=fs(a,b);c=a.a.fd(d);return new ts(a,c)} +function T2(a){var b;if(G2(a)){b=a;return b==-0.?0:b}return Zz(a)} +function Oad(a){if(a.Db>>16!=6)return null;return kA(DMc(a),207)} +function acb(a){Lpb(a.a=b){throw x2(new q3(Ib(a,b)))}return a} +function Sb(a,b,c){if(a<0||bc){throw x2(new q3(Kb(a,b,c)))}} +function no(a){Zn();return C6(yb((sk(),rk),C6(new M6,91),a),93).a} +function zn(a){Pb(a);return go((Zn(),new Zo(Rn(Dn(a.a,new Hn)))))} +function Ur(a){return new Hbb((Wj(a,gKd),Dv(y2(y2(5,a),a/10|0))))} +function aw(a,b){return !!a&&!!a.equals?a.equals(b):yA(a)===yA(b)} +function xOc(a,b){if(b==0){return !!a.o&&a.o.f!=0}return OMc(a,b)} +function yHc(a,b){var c;c=Vpb(nA(a.a.xe(($Ac(),UAc))));zHc(a,b,c)} +function ZMc(a,b,c){var d;d=Mbd(a.d,b);d>=0?YMc(a,d,c):VMc(a,b,c)} +function uec(a,b,c){var d;d=a.d[b.o];a.d[b.o]=a.d[c.o];a.d[c.o]=d} +function Loc(a,b){var c;c=a+'';while(c.length0&&a.a[--a.d]==0);a.a[a.d++]==0&&(a.e=0)} +function Nbd(a){return !!a.u&&Ebd(a.u.a).i!=0&&!(!!a.n&&ndd(a.n))} +function Zu(a){Gl();this.a=(bdb(),sA(a,49)?new Oeb(a):new seb(a))} +function Bzb(){this.c=new Nzb;this.a=new PDb;this.b=new tEb;YDb()} +function J$c(a,b,c){this.d=a;this.j=b;this.e=c;this.o=-1;this.p=3} +function K$c(a,b,c){this.d=a;this.k=b;this.f=c;this.o=-1;this.p=5} +function Rid(a,b,c,d,e,f){Qid.call(this,a,b,c,d,e);f&&(this.o=-2)} +function Tid(a,b,c,d,e,f){Sid.call(this,a,b,c,d,e);f&&(this.o=-2)} +function Vid(a,b,c,d,e,f){Uid.call(this,a,b,c,d,e);f&&(this.o=-2)} +function Xid(a,b,c,d,e,f){Wid.call(this,a,b,c,d,e);f&&(this.o=-2)} +function Zid(a,b,c,d,e,f){Yid.call(this,a,b,c,d,e);f&&(this.o=-2)} +function _id(a,b,c,d,e,f){$id.call(this,a,b,c,d,e);f&&(this.o=-2)} +function ejd(a,b,c,d,e,f){djd.call(this,a,b,c,d,e);f&&(this.o=-2)} +function gjd(a,b,c,d,e,f){fjd.call(this,a,b,c,d,e);f&&(this.o=-2)} +function xmd(a,b,c,d){kmd.call(this,c);this.b=a;this.c=b;this.d=d} +function Ptd(a,b){this.f=a;this.a=(Usd(),Ssd);this.c=Ssd;this.b=b} +function kud(a,b){this.g=a;this.d=(Usd(),Tsd);this.a=Tsd;this.b=b} +function HAd(a,b){!a.c&&(a.c=new pvd(a,0));bvd(a.c,(qAd(),iAd),b)} +function bSc(a,b,c,d,e,f){cSc(a,b,c,f);Pbd(a,d);Qbd(a,e);return a} +function W8(a,b){if(sA(b,38)){return Bf(a.a,kA(b,38))}return false} +function Ov(b){if(!('stack' in b)){try{throw b}catch(a){}}return b} +function q$c(a){if(a.p!=1)throw x2(new P4);return U2(a.f)<<24>>24} +function z$c(a){if(a.p!=1)throw x2(new P4);return U2(a.k)<<24>>24} +function F$c(a){if(a.p!=7)throw x2(new P4);return U2(a.k)<<16>>16} +function w$c(a){if(a.p!=7)throw x2(new P4);return U2(a.f)<<16>>16} +function bkb(a){Vjb();$jb(this,U2(z2(P2(a,24),NLd)),U2(z2(a,NLd)))} +function kvb(){kvb=d3;jvb=Vs((fvb(),xz(pz(SI,1),jKd,439,0,[evb])))} +function x1b(){x1b=d3;v1b=new y1b(COd,0);w1b=new y1b('TOP_LEFT',1)} +function muc(a,b){var c;a.e=new fuc;c=Drc(b);Dbb(c,a.c);nuc(a,c,0)} +function mwc(a,b,c,d){var e;e=new twc;e.a=b;e.b=c;e.c=d;mib(a.b,e)} +function lwc(a,b,c,d){var e;e=new twc;e.a=b;e.b=c;e.c=d;mib(a.a,e)} +function xe(a,b,c){var d;d=kA(a.Hc().Vb(b),13);return !!d&&d.pc(c)} +function Ae(a,b,c){var d;d=kA(a.Hc().Vb(b),13);return !!d&&d.vc(c)} +function Ilb(a,b){var c;c=1-b;a.a[c]=Jlb(a.a[c],c);return Jlb(a,b)} +function Hib(a){Lpb(a.b.b!=a.d.a);a.c=a.b=a.b.b;--a.a;return a.c.c} +function kr(a){jr(a);_p(a.c);a.e=a.a=a.c;a.c=a.c.b;++a.d;return a.a} +function lr(a){jr(a);_p(a.e);a.c=a.a=a.e;a.e=a.e.d;--a.d;return a.a} +function To(a){if(!So(a)){throw x2(new djb)}a.c=a.b;return a.b.ic()} +function Qfb(a,b){if(sA(b,38)){return Bf(a.a,kA(b,38))}return false} +function Xhb(a,b){if(sA(b,38)){return Bf(a.a,kA(b,38))}return false} +function eob(a){var b;aob(a);b=new wfb;rkb(a.a,new job(b));return b} +function wpd(){var a,b,c;b=(c=(a=new xhd,a),c);tbb(spd,b);return b} +function $Sb(a){var b;b=(Flc(),Flc(),elc);a.d&&fTb(a);ol();return b} +function Wuc(a){a.j.c=tz(NE,oJd,1,0,5,1);rg(a.c);wvc(a.a);return a} +function yvc(){Suc.call(this);this.j.c=tz(NE,oJd,1,0,5,1);this.a=-1} +function ubc(a,b,c){this.b=new Gbc(this);this.c=a;this.f=b;this.d=c} +function NEb(a,b,c){!!a.d&&Abb(a.d.d,a);a.d=b;!!a.d&&sbb(a.d.d,c,a)} +function ojd(a){return !!a.a&&njd(a.a.a).i!=0&&!(!!a.b&&mkd(a.b))} +function ogc(a){Rfc();return !JEb(a)&&!(!JEb(a)&&a.c.g.c==a.d.g.c)} +function KYc(a){IYc();return D8(HYc,a)?kA(F8(HYc,a),337).Mf():null} +function fv(a){return sA(a,13)?new Lgb((sk(),kA(a,13))):gv(a.tc())} +function ktb(a,b,c){return c.f.c.length>0?ztb(a.a,b,c):ztb(a.b,b,c)} +function OUc(a,b,c){var d;d=UTc(c);I8(a.b,d,b);I8(a.c,b,c);return b} +function WTc(a,b){var c,d;c=Ly(a,b);d=null;!!c&&(d=c.Vd());return d} +function YTc(a,b){var c,d;c=Ly(a,b);d=null;!!c&&(d=c.Yd());return d} +function XTc(a,b){var c,d;c=cy(a,b);d=null;!!c&&(d=c.Yd());return d} +function ZTc(a,b){var c,d;c=Ly(a,b);d=null;!!c&&(d=$Tc(c));return d} +function aYc(a){var b;b=a.Fh(a.i);a.i>0&&T6(a.g,0,b,0,a.i);return b} +function Hl(a){var b;b=(Pb(a),new Ibb((sk(),a)));hdb(b);return Xl(b)} +function Ebd(a){if(!a.n){Jbd(a);a.n=new rdd(pY,a);Kbd(a)}return a.n} +function Yu(a,b){var c;c=new N6;a.wd(c);c.a+='..';b.xd(c);return c.a} +function s5c(a,b){r5c();var c;c=kA(F8(q5c,a),47);return !c||c.Li(b)} +function Bn(a){if(sA(a,13)){return kA(a,13).Wb()}return !a.tc().hc()} +function r4(a){if(a.ee()){return null}var b=a.n;var c=a3[b];return c} +function Gib(a){Lpb(a.b!=a.d.c);a.c=a.b;a.b=a.b.a;++a.a;return a.c.c} +function Oab(a,b){Npb(b);wz(a.a,a.c,b);a.c=a.c+1&a.a.length-1;Sab(a)} +function Nab(a,b){Npb(b);a.b=a.b-1&a.a.length-1;wz(a.a,a.b,b);Sab(a)} +function iyd(a){var b;b=a.pg();this.a=sA(b,64)?kA(b,64).oh():b.tc()} +function ow(a,b,c){var d;d=mw();try{return lw(a,b,c)}finally{pw(d)}} +function Qe(a,b,c,d){return sA(c,49)?new qi(a,b,c,d):new fi(a,b,c,d)} +function lmb(){gmb();return xz(pz(SG,1),jKd,278,0,[cmb,dmb,emb,fmb])} +function VBb(){OBb();return xz(pz($J,1),jKd,373,0,[KBb,NBb,LBb,MBb])} +function Mtb(){Jtb();return xz(pz(EI,1),jKd,304,0,[Gtb,Ftb,Htb,Itb])} +function Xub(){Uub();return xz(pz(NI,1),jKd,362,0,[Rub,Qub,Sub,Tub])} +function pJb(a){return Vpb(mA(nub(a,(E2b(),G1b))))&&nub(a,i2b)!=null} +function SJb(a){return Vpb(mA(nub(a,(E2b(),G1b))))&&nub(a,i2b)!=null} +function vVb(a){rVb();if(sA(a.g,153)){return kA(a.g,153)}return null} +function TVb(a,b,c){var d;d=kA(F8(a.g,c),57);tbb(a.a.c,new fGc(b,d))} +function i8b(a,b,c,d){var e;e=d[b.g][c.g];return Vpb(nA(nub(a.a,e)))} +function hk(a,b,c,d){this.e=d;this.d=null;this.c=a;this.a=b;this.b=c} +function L$c(a,b,c,d){this.d=a;this.n=b;this.g=c;this.o=d;this.p=-1} +function YTb(a,b,c,d,e){this.c=a;this.e=b;this.d=c;this.b=d;this.a=e} +function sYb(a,b,c,d,e){this.i=a;this.a=b;this.e=c;this.j=d;this.f=e} +function Mlc(a,b,c,d,e){Ts.call(this,a,b);this.a=c;this.b=d;this.c=e} +function Wec(){Wec=d3;Vec=new Xec('UPPER',0);Uec=new Xec('LOWER',1)} +function foc(){_nc();return xz(pz(bS,1),jKd,360,0,[Xnc,Ync,Znc,$nc])} +function Dtc(){ztc();return xz(pz(WS,1),jKd,320,0,[ytc,wtc,xtc,vtc])} +function wBc(){tBc();return xz(pz(hU,1),jKd,226,0,[sBc,pBc,qBc,rBc])} +function GBc(){DBc();return xz(pz(iU,1),jKd,197,0,[CBc,ABc,zBc,BBc])} +function eEc(){bEc();return xz(pz(uU,1),jKd,344,0,[_Dc,aEc,$Dc,ZDc])} +function _Lc(){YLc();return xz(pz(BV,1),jKd,374,0,[XLc,ULc,VLc,WLc])} +function jFc(){gFc();return xz(pz(zU,1),jKd,288,0,[fFc,cFc,eFc,dFc])} +function nHc(){jHc();return xz(pz(WU,1),jKd,265,0,[iHc,fHc,gHc,hHc])} +function m7b(){h7b();return xz(pz(vP,1),jKd,179,0,[f7b,g7b,e7b,d7b])} +function FMc(a,b,c){return b<0?UMc(a,c):kA(c,61).aj().fj(a,a.Qg(),b)} +function Puc(a,b){var c;for(c=a.j.c.length;c=0&&a.a[c]===b[c];c--);return c<0} +function Ox(a,b){var c;c=a.q.getHours();a.q.setFullYear(b+NKd);Hx(a,c)} +function H7(a,b){if(b==0||a.e==0){return a}return b>0?_7(a,b):c8(a,-b)} +function I7(a,b){if(b==0||a.e==0){return a}return b>0?c8(a,b):_7(a,-b)} +function Pab(a){if(a.b==a.c){return}a.a=tz(NE,oJd,1,8,5,1);a.b=0;a.c=0} +function vgb(a){Lpb(a.a0){d+=a.a[c];c-=c&-c}return d} +function KFc(a,b){var c;c=b;while(c){uyc(a,-c.i,-c.j);c=ZSc(c)}return a} +function rlb(a,b){!a.a?(a.a=new O6(a.d)):I6(a.a,a.b);F6(a.a,b);return a} +function xjb(a,b){Npb(b);while(a.a||(a.a=Cob(a.c,a)),a.a){b.ie(Kkb(a))}} +function fxb(a){return !!a.c&&!!a.d?oxb(a.c)+'->'+oxb(a.d):'e_'+bqb(a)} +function n6c(a,b,c){return kA(b==null?Xgb(a.d,null,c):nhb(a.e,b,c),261)} +function nUc(a,b,c){var d,e;d=Ly(a,c);e=null;!!d&&(e=$Tc(d));SUc(b,c,e)} +function wUc(a,b){var c;c=new Py;QTc(c,'x',b.a);QTc(c,'y',b.b);OTc(a,c)} +function BUc(a,b){var c;c=new Py;QTc(c,'x',b.a);QTc(c,'y',b.b);OTc(a,c)} +function kvd(a,b){return lvd(a,b,sA(b,62)&&(kA(kA(b,17),62).Bb&sLd)!=0)} +function Qr(a){Pb(a);return sA(a,13)?new Ibb((sk(),kA(a,13))):Rr(a.tc())} +function KDc(){FDc();return xz(pz(rU,1),jKd,69,0,[DDc,lDc,kDc,CDc,EDc])} +function nw(b){kw();return function(){return ow(b,this,arguments);var a}} +function cw(){if(Date.now){return Date.now()}return (new Date).getTime()} +function ss(a){if(!a.c.Cc()){throw x2(new djb)}a.a=true;return a.c.Ec()} +function Rb(a,b){if(a<0||a>b){throw x2(new q3(Jb(a,b,'index')))}return a} +function Cvc(a,b){if(sA(b,180)){return Z5(a.c,kA(b,180).c)}return false} +function ue(a){a.d=3;a.c=Oo(a);if(a.d!=2){a.d=0;return true}return false} +function hcb(a,b){var c,d;c=(d=a.slice(0,b),yz(d,a));c.length=b;return c} +function Cbb(a,b,c){var d;d=(Mpb(b,a.c.length),a.c[b]);a.c[b]=c;return d} +function q8(a,b,c,d){var e;e=tz(FA,OKd,22,b,15,1);r8(e,a,b,c,d);return e} +function aKb(a,b,c,d){this.e=a;this.b=new Gbb;this.d=b;this.a=c;this.c=d} +function slb(a,b){this.b=qJd;this.d=a;this.e=b;this.c=this.d+(''+this.e)} +function tDb(){rbb(this);this.b=new Jyc(oLd,oLd);this.a=new Jyc(pLd,pLd)} +function Usd(){Usd=d3;var a,b;Ssd=(N6c(),b=new sgd,b);Tsd=(a=new zad,a)} +function yuc(){suc();this.b=(Es(),new Bgb);this.a=new Bgb;this.c=new Gbb} +function L8(a){var b;a.d=new Zgb(a);a.e=new phb(a);b=a[BLd]|0;a[BLd]=b+1} +function Mob(a,b){return (bob(a),Qob(new Zob(a,new xob(b,a.a)))).a!=null} +function Zzb(){Wzb();return xz(pz(HJ,1),jKd,328,0,[Rzb,Szb,Tzb,Uzb,Vzb])} +function W$b(){T$b();return xz(pz(cP,1),jKd,276,0,[Q$b,S$b,O$b,R$b,P$b])} +function N2b(){K2b();return xz(pz(qP,1),jKd,178,0,[J2b,F2b,G2b,H2b,I2b])} +function A7b(){u7b();return xz(pz(wP,1),jKd,292,0,[t7b,q7b,r7b,p7b,s7b])} +function MCc(){JCc();return xz(pz(oU,1),jKd,225,0,[GCc,ICc,ECc,FCc,HCc])} +function Jxc(){Gxc();return xz(pz(UT,1),jKd,163,0,[Exc,Dxc,Bxc,Fxc,Cxc])} +function mBc(){gBc();return xz(pz(gU,1),jKd,110,0,[eBc,dBc,cBc,bBc,fBc])} +function w6c(a,b){var c;return c=b!=null?G8(a,b):Of(Wgb(a.d,null)),AA(c)} +function H6c(a,b){var c;return c=b!=null?G8(a,b):Of(Wgb(a.d,null)),AA(c)} +function gwc(a,b){var c;c=kA(Fhb(a.d,b),27);return c?c:kA(Fhb(a.e,b),27)} +function Xqc(a,b){var c;c=0;!!a&&(c+=a.f.a/2);!!b&&(c+=b.f.a/2);return c} +function Jbd(a){if(!a.t){a.t=new Fdd(a);eXc(new dsd(a),0,a.t)}return a.t} +function Vkd(a){var b;if(!a.c){b=a.r;sA(b,96)&&(a.c=kA(b,24))}return a.c} +function Rod(a,b){if(D8(a.a,b)){K8(a.a,b);return true}else{return false}} +function JEb(a){if(!a.c||!a.d){return false}return !!a.c.g&&a.c.g==a.d.g} +function tk(a){Wj(a,'size');return U2(H2(J2(a,8),UJd)?J2(a,8):UJd),new N6} +function wn(a,b){return hl((Gl(),new Zu(Ql(xz(pz(NE,1),oJd,1,5,[a,b])))))} +function pw(a){a&&ww((uw(),tw));--hw;if(a){if(jw!=-1){rw(jw);jw=-1}}} +function Ne(a,b){var c,d;c=kA(Ks(a.c,b),13);if(c){d=c._b();c.Pb();a.d-=d}} +function mo(a){Zn();var b;b=0;while(a.hc()){a.ic();b=y2(b,1)}return Dv(b)} +function Az(a){var b,c,d;b=a&cLd;c=a>>22&cLd;d=a<0?dLd:0;return Cz(b,c,d)} +function kab(a,b){var c,d;c=b.kc();d=vlb(a,c);return !!d&&ejb(d.e,b.lc())} +function vfb(a){var b;b=a.e+a.f;if(isNaN(b)&&D4(a.d)){return a.d}return b} +function e1c(a){this.b=a;a0c.call(this,a);this.a=kA(VNc(this.b.a,4),116)} +function n1c(a){this.b=a;v0c.call(this,a);this.a=kA(VNc(this.b.a,4),116)} +function Pid(a,b,c,d,e){N$c.call(this,b,d,e);Iid(this);this.c=a;this.b=c} +function Uid(a,b,c,d,e){J$c.call(this,b,d,e);Iid(this);this.c=a;this.a=c} +function Yid(a,b,c,d,e){K$c.call(this,b,d,e);Iid(this);this.c=a;this.a=c} +function fjd(a,b,c,d,e){N$c.call(this,b,d,e);Iid(this);this.c=a;this.a=c} +function aKc(a,b){this.d=new mGb;this.a=a;this.b=b;this.e=new Kyc(b.Qe())} +function L7(a,b){y7();this.e=a;this.d=1;this.a=xz(pz(FA,1),OKd,22,15,[b])} +function K8(a,b){return wA(b)?b==null?Ygb(a.d,null):ohb(a.e,b):Ygb(a.d,b)} +function JMc(a,b,c){var d;return d=a.rg(b),d>=0?a.ug(d,c,true):TMc(a,b,c)} +function lqb(a,b,c){var d;d=(Pb(a),new Ibb((sk(),a)));jqb(new kqb(d,b,c))} +function PCb(a,b,c){var d;d=(Pb(a),new Ibb((sk(),a)));NCb(new OCb(d,b,c))} +function PUc(a,b,c){var d;d=UTc(c);Lc(a.d,d,b,false);I8(a.e,b,c);return b} +function RUc(a,b,c){var d;d=UTc(c);Lc(a.j,d,b,false);I8(a.k,b,c);return b} +function Hyd(a,b,c){var d;d=new Iyd(a.a);Ef(d,a.a.a);Xgb(d.d,b,c);a.a.a=d} +function hEb(a){var b;b=new PEb;lub(b,a);qub(b,(J6b(),p5b),null);return b} +function Sr(a){var b,c;Pb(a);b=Mr(a.length);c=new Hbb(b);cdb(c,a);return c} +function UXc(a){var b,c;++a.j;b=a.g;c=a.i;a.g=null;a.i=0;a.uh(c,b);a.th()} +function RXc(a,b){a.Eh(a.i+1);SXc(a,a.i,a.Ch(a.i,b));a.sh(a.i++,b);a.th()} +function zbb(a,b){var c;c=(Mpb(b,a.c.length),a.c[b]);Bpb(a.c,b,1);return c} +function l8(a,b,c,d){var e;e=tz(FA,OKd,22,b+1,15,1);m8(e,a,b,c,d);return e} +function ZHc(a,b,c,d){var e;for(e=0;eb.o){return -1}return 0} +function Ppb(a,b){if(a<0||a>b){throw x2(new q3('Index: '+a+', Size: '+b))}} +function Tpb(a,b,c){if(a<0||b>c||b=b){throw x2(new q3('Index: '+a+', Size: '+b))}} +function Kx(a,b){var c;c=a.q.getHours()+(b/60|0);a.q.setMinutes(b);Hx(a,c)} +function enc(a,b,c){this.a=a;this.b=b;this.c=c;tbb(a.q,this);tbb(b.g,this)} +function Uh(a,b,c,d){this.f=a;this.e=b;this.d=c;this.b=d;this.c=!d?null:d.d} +function Khb(a){N8.call(this,a,0);Dhb(this);this.b.b=this.b;this.b.a=this.b} +function xob(a,b){Akb.call(this,b.rd(),b.qd()&-65);Npb(a);this.a=a;this.c=b} +function gkb(a,b,c){this.d=(Npb(a),a);this.a=(c&qLd)==0?c|64|RJd:c;this.c=b} +function toc(){this.b=new yib;this.a=new yib;this.b=new yib;this.a=new yib} +function h9b(){h9b=d3;g9b=rvc(tvc(new yvc,(Wzb(),Rzb),(lPb(),GOb)),Vzb,bPb)} +function o9b(){o9b=d3;n9b=tvc(tvc(new yvc,(Wzb(),Rzb),(lPb(),sOb)),Tzb,OOb)} +function BOc(a,b){return !a.o&&(a.o=new T8c((uMc(),rMc),$V,a,0)),I1c(a.o,b)} +function vQb(a,b){xEc(b,'Label management',1);AA(nub(a,(_xc(),$xc)));zEc(b)} +function aic(a,b){var c;c=a.c;if(b>0){return kA(xbb(c.a,b-1),8)}return null} +function woc(a){var b;b=a.b;if(b.b==0){return null}return kA(Fq(b,0),170).b} +function TLb(a){var b,c,d,e;e=a.d;b=a.a;c=a.b;d=a.c;a.d=c;a.a=d;a.b=e;a.c=b} +function sKc(a,b){var c;if(a.A){c=kA(Cfb(a.b,b),114).n;c.d=a.A.d;c.a=a.A.a}} +function iXc(a,b,c){var d,e;if(c!=null){for(d=0;d=0,'Initial capacity must not be negative')} +function Awb(a){this.b=(Es(),new Bgb);this.c=new Bgb;this.d=new Bgb;this.a=a} +function cob(a){if(!a){this.c=null;this.b=new Gbb}else{this.c=a;this.b=null}} +function _lb(a,b){gab.call(this,a,b);this.a=tz(NG,oJd,398,2,0,1);this.b=true} +function Dud(a,b,c){return Eud(a,b,c,sA(b,62)&&(kA(kA(b,17),62).Bb&sLd)!=0)} +function Kud(a,b,c){return Lud(a,b,c,sA(b,62)&&(kA(kA(b,17),62).Bb&sLd)!=0)} +function mvd(a,b,c){return nvd(a,b,c,sA(b,62)&&(kA(kA(b,17),62).Bb&sLd)!=0)} +function YMb(a,b){return C4(Vpb(nA(nub(a,(E2b(),q2b)))),Vpb(nA(nub(b,q2b))))} +function o_b(){l_b();return xz(pz(eP,1),jKd,290,0,[k_b,j_b,i_b,g_b,f_b,h_b])} +function o0b(){k0b();return xz(pz(jP,1),jKd,241,0,[f0b,e0b,h0b,g0b,j0b,i0b])} +function A0b(){x0b();return xz(pz(kP,1),jKd,255,0,[u0b,t0b,w0b,s0b,v0b,r0b])} +function M0b(){J0b();return xz(pz(lP,1),jKd,256,0,[H0b,E0b,I0b,G0b,F0b,D0b])} +function a7b(){W6b();return xz(pz(uP,1),jKd,291,0,[U6b,S6b,Q6b,R6b,V6b,T6b])} +function $Cc(){VCc();return xz(pz(pU,1),jKd,83,0,[UCc,TCc,SCc,PCc,RCc,QCc])} +function Xoc(){Toc();return xz(pz(nS,1),jKd,308,0,[Soc,Ooc,Qoc,Poc,Roc,Noc])} +function hzc(){ezc();return xz(pz(cU,1),jKd,224,0,[$yc,bzc,czc,dzc,_yc,azc])} +function SBc(){PBc();return xz(pz(jU,1),jKd,289,0,[NBc,LBc,OBc,JBc,MBc,KBc])} +function Nqc(){Nqc=d3;Mqc=qvc(qvc(vvc(new yvc,(_nc(),Ync)),(Toc(),Soc)),Ooc)} +function suc(){suc=d3;new DWc('org.eclipse.elk.addLayoutConfig');ruc=new Auc} +function YAd(){YAd=d3;$Qc();VAd=oLd;UAd=pLd;XAd=new F4(oLd);WAd=new F4(pLd)} +function hHd(a,b,c){UGd();var d;d=gHd(a,b);c&&!!d&&jHd(a)&&(d=null);return d} +function tz(a,b,c,d,e,f){var g;g=uz(e,d);e!=10&&xz(pz(a,f),b,c,e,g);return g} +function xn(a,b,c){return hl((Gl(),new Zu(Ql(xz(pz(NE,1),oJd,1,5,[a,b,c])))))} +function dg(a,b){var c;c=b.kc();return Es(),new _m(c,Pe(a.e,c,kA(b.lc(),13)))} +function yyc(a,b){var c,d;c=a.a-b.a;d=a.b-b.b;return $wnd.Math.sqrt(c*c+d*d)} +function odc(a,b,c){var d;d=a.b[c.c.o][c.o];d.b+=b.b;d.c+=b.c;d.a+=b.a;++d.a} +function kcb(a,b,c){var d,e;e=a.length;d=c=a.i)throw x2(new t1c(b,a.i));return a.g[b]} +function Xed(a,b,c){pXc(a,c);if(c!=null&&!a.Li(c)){throw x2(new t3)}return c} +function CIc(a,b){gjb(b,'Horizontal alignment cannot be null');a.b=b;return a} +function IMc(a,b){var c;return c=a.rg(b),c>=0?a.ug(c,true,true):TMc(a,b,true)} +function wtd(a,b,c){var d,e;e=(d=Kkd(a.b,b),d);return !e?null:Wtd(qtd(a,e),c)} +function ipd(a){if(sA(a,159)){return ''+kA(a,159).a}return a==null?null:f3(a)} +function jpd(a){if(sA(a,159)){return ''+kA(a,159).a}return a==null?null:f3(a)} +function K2(a){var b;if(G2(a)){b=0-a;if(!isNaN(b)){return b}}return B2(Sz(a))} +function Zm(a){var b;a=a>2?a:2;b=Z4(a);if(a>b){b<<=1;return b>0?b:UJd}return b} +function R3(a){var b,c;b=a+128;c=(T3(),S3)[b];!c&&(c=S3[b]=new L3(a));return c} +function yz(a,b){qz(b)!=10&&xz(mb(b),b.rl,b.__elementTypeId$,qz(b),a);return a} +function F7(a,b){if(b.e==0){return x7}if(a.e==0){return x7}return u8(),v8(a,b)} +function mob(a){while(!a.a){if(!dkb(a.b,new qob(a))){return false}}return true} +function apb(a){while(!a.a){if(!Hob(a.c,new epb(a))){return false}}return true} +function oqb(a,b){if(b.a){throw x2(new Tv(_Ld))}Ggb(a.a,b);b.a=a;!a.j&&(a.j=b)} +function Nid(a,b,c,d,e,f){L$c.call(this,b,d,e,f);Iid(this);this.c=a;this.b=c} +function bjd(a,b,c,d,e,f){L$c.call(this,b,d,e,f);Iid(this);this.c=a;this.a=c} +function T8c(a,b,c,d){this.Gi();this.a=b;this.b=a;this.c=new Pxd(this,b,c,d)} +function j7(a,b){this.e=b;this.a=m7(a);this.a<54?(this.f=T2(a)):(this.c=Z7(a))} +function jCb(a,b){if(a.a.Ld(b.d,a.b)>0){tbb(a.c,new GBb(b.c,b.d,a.d));a.b=b.d}} +function Ydc(a){a.a=tz(FA,OKd,22,a.b+1,15,1);a.c=tz(FA,OKd,22,a.b,15,1);a.d=0} +function umb(){umb=d3;tmb=Vs((gmb(),xz(pz(SG,1),jKd,278,0,[cmb,dmb,emb,fmb])))} +function o7b(){o7b=d3;n7b=Vs((h7b(),xz(pz(vP,1),jKd,179,0,[f7b,g7b,e7b,d7b])))} +function XBb(){XBb=d3;WBb=Vs((OBb(),xz(pz($J,1),jKd,373,0,[KBb,NBb,LBb,MBb])))} +function Otb(){Otb=d3;Ntb=Vs((Jtb(),xz(pz(EI,1),jKd,304,0,[Gtb,Ftb,Htb,Itb])))} +function Zub(){Zub=d3;Yub=Vs((Uub(),xz(pz(NI,1),jKd,362,0,[Rub,Qub,Sub,Tub])))} +function hoc(){hoc=d3;goc=Vs((_nc(),xz(pz(bS,1),jKd,360,0,[Xnc,Ync,Znc,$nc])))} +function Ftc(){Ftc=d3;Etc=Vs((ztc(),xz(pz(WS,1),jKd,320,0,[ytc,wtc,xtc,vtc])))} +function yBc(){yBc=d3;xBc=Vs((tBc(),xz(pz(hU,1),jKd,226,0,[sBc,pBc,qBc,rBc])))} +function IBc(){IBc=d3;HBc=Vs((DBc(),xz(pz(iU,1),jKd,197,0,[CBc,ABc,zBc,BBc])))} +function gEc(){gEc=d3;fEc=Vs((bEc(),xz(pz(uU,1),jKd,344,0,[_Dc,aEc,$Dc,ZDc])))} +function bMc(){bMc=d3;aMc=Vs((YLc(),xz(pz(BV,1),jKd,374,0,[XLc,ULc,VLc,WLc])))} +function lFc(){lFc=d3;kFc=Vs((gFc(),xz(pz(zU,1),jKd,288,0,[fFc,cFc,eFc,dFc])))} +function pHc(){pHc=d3;oHc=Vs((jHc(),xz(pz(WU,1),jKd,265,0,[iHc,fHc,gHc,hHc])))} +function pIc(){pIc=d3;nIc=new qIc(xOd,0);mIc=new qIc(COd,1);oIc=new qIc(yOd,2)} +function Vic(){Vic=d3;Uic=new Wic(wOd,0);Tic=new Wic('IMPROVE_STRAIGHTNESS',1)} +function Csc(){Csc=d3;Asc=new Esc('LEAF_NUMBER',0);Bsc=new Esc('NODE_SIZE',1)} +function gmb(){gmb=d3;cmb=new hmb('All',0);dmb=new mmb;emb=new omb;fmb=new rmb} +function njd(a){if(!a.b){a.b=new qkd(pY,a);!a.a&&(a.a=new Djd(a,a))}return a.b} +function Quc(a,b){if(b<0){throw x2(new q3(NRd+b))}Puc(a,b+1);return xbb(a.j,b)} +function te(a){var b;if(!se(a)){throw x2(new djb)}a.d=1;b=a.c;a.c=null;return b} +function k6(a){var b,c;c=a.length;b=tz(CA,yKd,22,c,15,1);_5(a,0,c,b,0);return b} +function Ar(a,b){var c;this.f=a;this.b=b;c=kA(F8(a.b,b),264);this.c=!c?null:c.b} +function dec(a,b,c){var d;d=sec(a,b,c);a.b=new _dc(d.c.length);return fec(a,d)} +function bg(a,b){var c;c=kA(Js(a.d,b),13);if(!c){return null}return Pe(a.e,b,c)} +function Ihb(a,b){var c;c=kA(K8(a.c,b),353);if(c){Uhb(c);return c.e}return null} +function wlb(a){var b,c;if(!a.b){return null}c=a.b;while(b=c.a[0]){c=b}return c} +function QUc(a,b,c){var d;d=UTc(c);Lc(a.g,d,b,false);Lc(a.i,b,c,false);return b} +function Acb(a,b,c,d){var e;d=($eb(),!d?Xeb:d);e=a.slice(b,c);Bcb(e,a,b,c,-b,d)} +function EMc(a,b,c,d,e){return b<0?TMc(a,c,d):kA(c,61).aj().cj(a,a.Qg(),b,d,e)} +function d6c(a,b){return b0){return jJd}if(A2(a,oKd)<0){return oKd}return U2(a)} +function Gpb(a,b){if(!a){throw x2(new O4(Wpb('Enum constant undefined: %s',b)))}} +function t6c(a){Ev(this);this.g=!a?null:Kv(a,a.Od());this.f=a;Gv(this);this.Pd()} +function Oid(a,b,c,d,e,f,g){M$c.call(this,b,d,e,f,g);Iid(this);this.c=a;this.b=c} +function nx(a,b,c){var d,e;d=10;for(e=0;e=0){a.gd(c);return true}else{return false}} +function KMc(a,b){var c;c=Mbd(a.d,b);return c>=0?HMc(a,c,true,true):TMc(a,b,true)} +function dJd(a,b){var c;c=0;while(a.e!=a.i._b()){sVc(b,$_c(a),d5(c));c!=jJd&&++c}} +function Nu(a,b){var c,d,e;e=0;for(d=a.tc();d.hc();){c=d.ic();wz(b,e++,c)}return b} +function Ny(a,b,c){var d;if(b==null){throw x2(new A5)}d=Ly(a,b);Oy(a,b,c);return d} +function Bv(a){if(a<0){throw x2(new O4('tolerance ('+a+') must be >= 0'))}return a} +function Ejb(a){var b;b=a.b.c.length==0?null:xbb(a.b,0);b!=null&&Gjb(a,0);return b} +function sqb(a,b){var c,d,e;for(d=0,e=b.length;d=a.a.c.length){tbb(a.a,new yib)}return kA(xbb(a.a,b),15)} +function Zz(a){if(Pz(a,(fA(),eA))<0){return -Lz(Sz(a))}return a.l+a.m*fLd+a.h*gLd} +function Dx(a){var b,c;b=a/60|0;c=a%60;if(c==0){return ''+b}return ''+b+':'+(''+c)} +function dXb(a,b){var c;c=zv(a.e.c,b.e.c);if(c==0){return C4(a.e.d,b.e.d)}return c} +function cy(d,a){var b=d.a[a];var c=(az(),_y)[typeof b];return c?c(b):gz(typeof b)} +function l6(a,b){return b==(Yib(),Yib(),Xib)?a.toLocaleLowerCase():a.toLowerCase()} +function qz(a){return a.__elementTypeCategory$==null?10:a.__elementTypeCategory$} +function g4(a){return ((a.i&2)!=0?'interface ':(a.i&1)!=0?'':'class ')+(d4(a),a.o)} +function ejc(a,b,c){var d;d=a.a.e[kA(b.a,8).o]-a.a.e[kA(c.a,8).o];return zA(y5(d))} +function Xdc(a,b){var c;++a.d;++a.c[b];c=b+1;while(c=0&&ba||a>b){throw x2(new s3('fromIndex: 0, toIndex: '+a+OLd+b))}} +function zQb(a,b){var c,d;for(d=a.tc();d.hc();){c=kA(d.ic(),68);qub(c,(E2b(),b2b),b)}} +function jUb(a,b,c){var d;d=$wnd.Math.max(0,a.b/2-0.5);dUb(c,d,1);tbb(b,new UUb(c,d))} +function OPb(a){var b;b=Vpb(nA(nub(a,(J6b(),f5b))));if(b<0){b=0;qub(a,f5b,b)}return b} +function hyc(a){ayc();var b,c;c=cRd;for(b=0;bc&&(c=a[b])}return c} +function Y2(){Z2();var a=X2;for(var b=0;b=a.i)throw x2(new t1c(b,a.i));return a.zh(b,a.g[b])} +function scd(a,b,c){pXc(a,c);if(!a.Nj()&&c!=null&&!a.Li(c)){throw x2(new t3)}return c} +function dXc(a,b){var c;c=a;while(ZSc(c)){c=ZSc(c);if(c==b){return true}}return false} +function mgb(a,b){if(!!b&&a.b[b.g]==b){wz(a.b,b.g,null);--a.c;return true}return false} +function wib(a,b){var c;c=b.c;b.a.b=b.b;b.b.a=b.a;b.a=b.b=null;b.c=null;--a.b;return c} +function wbb(a,b){var c,d,e,f;Npb(b);for(d=a.c,e=0,f=d.length;e>5;e=b&31;d=z2(Q2(a.n[c][f],U2(O2(e,1))),3);return d} +function dx(a,b){while(b[0]=0){++b[0]}} +function FIc(a,b){CHc.call(this);vIc(this);this.a=a;this.c=true;this.b=b.d;this.f=b.e} +function Av(a,b){yv();Bv(nKd);return $wnd.Math.abs(a-b)<=nKd||a==b||isNaN(a)&&isNaN(b)} +function g7(a){if(a.a<54){return a.f<0?-1:a.f>0?1:0}return (!a.c&&(a.c=Y7(a.f)),a.c).e} +function OEb(a){return !!a.c&&!!a.d?a.c.g+'('+a.c+')->'+a.d.g+'('+a.d+')':'e_'+bqb(a)} +function cic(a,b,c){var d,e;d=b;do{e=Vpb(a.p[d.o])+c;a.p[d.o]=e;d=a.a[d.o]}while(d!=b)} +function abc(a,b,c){var d,e,f;e=b[c];for(d=0;d=14&&b<=16)));return a} +function $n(a,b){Zn();var c;Pb(a);Pb(b);c=false;while(b.hc()){c=c|a.nc(b.ic())}return c} +function Wj(a,b){if(a<0){throw x2(new O4(b+' cannot be negative but was: '+a))}return a} +function SSb(a,b){var c,d;for(d=new ccb(a);d.ac)throw x2(new Z_c(b,c));return new z0c(a,b)} +function n9c(a,b){var c;c=a.s;a.s=b;(a.Db&4)!=0&&(a.Db&1)==0&&vMc(a,new Lid(a,4,c,a.s))} +function q9c(a,b){var c;c=a.t;a.t=b;(a.Db&4)!=0&&(a.Db&1)==0&&vMc(a,new Lid(a,5,c,a.t))} +function Wgd(a,b){var c;c=a.d;a.d=b;(a.Db&4)!=0&&(a.Db&1)==0&&vMc(a,new Lid(a,2,c,a.d))} +function Lad(a,b){var c;c=a.F;a.F=b;(a.Db&4)!=0&&(a.Db&1)==0&&vMc(a,new Mid(a,1,5,c,b))} +function ZWc(a,b){var c,d,e;c=(d=(gMc(),e=new NSc,e),!!b&&KSc(d,b),d);LSc(c,a);return c} +function cdc(){cdc=d3;_cc=new ddc('BARYCENTER',0);adc=new ddc(gOd,1);bdc=new ddc(hOd,2)} +function F_b(){F_b=d3;C_b=new G_b('ARD',0);E_b=new G_b('MSD',1);D_b=new G_b('MANUAL',2)} +function U7b(){U7b=d3;T7b=new V7b(LQd,0);R7b=new V7b('INPUT',1);S7b=new V7b('OUTPUT',2)} +function ZVb(){IVb();this.b=(Es(),new Bgb);this.f=new Bgb;this.g=new Bgb;this.e=new Bgb} +function Qid(a,b,c,d,e){this.d=b;this.k=d;this.f=e;this.o=-1;this.p=1;this.c=a;this.a=c} +function Sid(a,b,c,d,e){this.d=b;this.k=d;this.f=e;this.o=-1;this.p=2;this.c=a;this.a=c} +function $id(a,b,c,d,e){this.d=b;this.k=d;this.f=e;this.o=-1;this.p=6;this.c=a;this.a=c} +function djd(a,b,c,d,e){this.d=b;this.k=d;this.f=e;this.o=-1;this.p=7;this.c=a;this.a=c} +function Wid(a,b,c,d,e){this.d=b;this.j=d;this.e=e;this.o=-1;this.p=4;this.c=a;this.a=c} +function Bqb(a,b){return yv(),Bv(nKd),$wnd.Math.abs(a-b)<=nKd||a==b||isNaN(a)&&isNaN(b)} +function tsb(){qsb();return xz(pz(lI,1),jKd,228,0,[psb,ksb,lsb,jsb,nsb,osb,msb,isb,hsb])} +function BCc(){yCc();return xz(pz(nU,1),jKd,86,0,[qCc,pCc,sCc,xCc,wCc,vCc,tCc,uCc,rCc])} +function tEc(){qEc();return xz(pz(vU,1),jKd,239,0,[jEc,lEc,iEc,mEc,nEc,pEc,oEc,kEc,hEc])} +function h5(){h5=d3;g5=xz(pz(FA,1),OKd,22,15,[0,8,4,12,2,10,6,14,1,9,5,13,3,11,7,15])} +function tcc(){tcc=d3;scc=rvc(tvc(tvc(new yvc,(Wzb(),Tzb),(lPb(),TOb)),Uzb,IOb),Vzb,SOb)} +function kwc(){if(!bwc){bwc=new jwc;iwc(bwc,xz(pz(tT,1),oJd,154,0,[new _Ac]))}return bwc} +function eSc(a,b,c){l9c(a,b);wRc(a,c);n9c(a,0);q9c(a,1);p9c(a,true);o9c(a,true);return a} +function $1c(a,b){var c;if(sA(b,38)){return a.c.vc(b)}else{c=I1c(a,b);a2c(a,b);return c}} +function w2(a){var b;if(sA(a,78)){return a}b=a&&a[qKd];if(!b){b=new Xv(a);Cw(b)}return b} +function _4(a){var b,c;if(a==0){return 32}else{c=0;for(b=1;(b&a)==0;b<<=1){++c}return c}} +function _hc(a,b){var c;c=a.c;if(b=0);if(Wab(a.d,a.c)<0){a.a=a.a-1&a.d.a.length-1;a.b=a.d.c}a.c=-1} +function AEc(a,b){if(a.j>0&&a.c0&&a.e!=0&&AEc(a.g,b/a.j*a.g.d)}} +function zTc(a,b){var c;c=a.c;a.c=b;(a.Db&4)!=0&&(a.Db&1)==0&&vMc(a,new Mid(a,1,1,c,a.c))} +function yTc(a,b){var c;c=a.b;a.b=b;(a.Db&4)!=0&&(a.Db&1)==0&&vMc(a,new Mid(a,1,0,c,a.b))} +function aPc(a,b){var c;c=a.k;a.k=b;(a.Db&4)!=0&&(a.Db&1)==0&&vMc(a,new Mid(a,1,2,c,a.k))} +function uQc(a,b){var c;c=a.f;a.f=b;(a.Db&4)!=0&&(a.Db&1)==0&&vMc(a,new Mid(a,1,8,c,a.f))} +function vQc(a,b){var c;c=a.i;a.i=b;(a.Db&4)!=0&&(a.Db&1)==0&&vMc(a,new Mid(a,1,7,c,a.i))} +function LSc(a,b){var c;c=a.a;a.a=b;(a.Db&4)!=0&&(a.Db&1)==0&&vMc(a,new Mid(a,1,8,c,a.a))} +function F8c(a,b){var c;c=a.d;a.d=b;(a.Db&4)!=0&&(a.Db&1)==0&&vMc(a,new Mid(a,1,1,c,a.d))} +function pld(a,b){var c;c=a.c;a.c=b;(a.Db&4)!=0&&(a.Db&1)==0&&vMc(a,new Mid(a,1,1,c,a.c))} +function Vgd(a,b){var c;c=a.c;a.c=b;(a.Db&4)!=0&&(a.Db&1)==0&&vMc(a,new Mid(a,1,4,c,a.c))} +function Vad(a,b){var c;c=a.D;a.D=b;(a.Db&4)!=0&&(a.Db&1)==0&&vMc(a,new Mid(a,1,2,c,a.D))} +function old(a,b){var c;c=a.b;a.b=b;(a.Db&4)!=0&&(a.Db&1)==0&&vMc(a,new Mid(a,1,0,c,a.b))} +function BHd(a,b,c){var d;a.b=b;a.a=c;d=(a.a&512)==512?new FFd:new SEd;a.c=MEd(d,a.b,a.a)} +function cvd(a,b){return zyd(a.e,b)?(wyd(),K9c(b)?new tzd(b,a):new Nyd(b,a)):new Ezd(b,a)} +function E3(a,b){B3();return wA(a)?Y5(a,pA(b)):uA(a)?B4(a,nA(b)):tA(a)?C3(a,mA(b)):a.vd(b)} +function Ew(a){var b=/function(?:\s+([\w$]+))?\s*\(/;var c=b.exec(a);return c&&c[1]||vKd} +function Usb(a,b){var c,d;c=a.o+a.p;d=b.o+b.p;if(c>>31}d!=0&&(a[c]=d)} +function m7(a){var b;A2(a,0)<0&&(a=M2(a));return b=U2(P2(a,32)),64-(b!=0?$4(b):$4(U2(a))+32)} +function Qcc(a){var b,c;for(c=a.c.a.Xb().tc();c.hc();){b=kA(c.ic(),204);$bc(b,new Ndc(b.f))}} +function Rcc(a){var b,c;for(c=a.c.a.Xb().tc();c.hc();){b=kA(c.ic(),204);_bc(b,new Odc(b.e))}} +function qf(a){this.d=a;this.c=a.c.Tb().tc();this.b=null;this.a=null;this.e=(Zn(),Zn(),Yn)} +function $q(a){this.e=a;this.d=new Kgb(Gs(ze(this.e)._b()));this.c=this.e.a;this.b=this.e.c} +function _dc(a){this.b=a;this.a=tz(FA,OKd,22,a+1,15,1);this.c=tz(FA,OKd,22,a,15,1);this.d=0} +function _ic(a){a.a=null;a.e=null;a.b.c=tz(NE,oJd,1,0,5,1);a.f.c=tz(NE,oJd,1,0,5,1);a.c=null} +function WRc(a,b){var c,d;d=(c=new ald,c);d.n=b;fXc((!a.s&&(a.s=new zkd(zY,a,21,17)),a.s),d)} +function QRc(a,b){var c,d;c=(d=new zad,d);c.n=b;fXc((!a.s&&(a.s=new zkd(zY,a,21,17)),a.s),c)} +function wRc(a,b){var c;c=a.zb;a.zb=b;(a.Db&4)!=0&&(a.Db&1)==0&&vMc(a,new Mid(a,1,1,c,a.zb))} +function iSc(a,b){var c;c=a.xb;a.xb=b;(a.Db&4)!=0&&(a.Db&1)==0&&vMc(a,new Mid(a,1,3,c,a.xb))} +function jSc(a,b){var c;c=a.yb;a.yb=b;(a.Db&4)!=0&&(a.Db&1)==0&&vMc(a,new Mid(a,1,2,c,a.yb))} +function ZUc(a,b,c){var d,e,f;e=WTc(b,'labels');d=new jVc(a,c);f=(oUc(d.a,d.b,e),e);return f} +function _Rc(a,b,c,d,e,f,g,h,i,j,k,l,m){gSc(a,b,c,d,e,f,g,h,i,j,k,l,m);xad(a,false);return a} +function pg(a,b){var c,d,e;Npb(b);c=false;for(e=b.tc();e.hc();){d=e.ic();c=c|a.nc(d)}return c} +function An(a){if(a){if(a.Wb()){throw x2(new djb)}return a.cd(a._b()-1)}return ho(null.tc())} +function Q7(a){Npb(a);if(a.length==0){throw x2(new I5('Zero length BigInteger'))}W7(this,a)} +function w8b(){w8b=d3;v8b=new x8b('NO',0);t8b=new x8b('GREEDY',1);u8b=new x8b('LOOK_BACK',2)} +function wbd(){wbd=d3;tbd=new qgd;vbd=xz(pz(zY,1),sVd,158,0,[]);ubd=xz(pz(tY,1),tVd,53,0,[])} +function WGb(){WGb=d3;VGb=Vs((RGb(),xz(pz(QK,1),jKd,232,0,[PGb,OGb,MGb,QGb,NGb,KGb,LGb])))} +function a1b(){Z0b();return xz(pz(mP,1),jKd,233,0,[Q0b,S0b,T0b,U0b,V0b,W0b,Y0b,P0b,R0b,X0b])} +function SBb(a,b){OBb();return a==KBb&&b==NBb||a==NBb&&b==KBb||a==MBb&&b==LBb||a==LBb&&b==MBb} +function TBb(a,b){OBb();return a==KBb&&b==LBb||a==KBb&&b==MBb||a==NBb&&b==MBb||a==NBb&&b==LBb} +function ZYb(a,b){return Vpb(nA(jjb(Xob(Tob(new Zob(null,new ekb(a.c.b,16)),new mZb(a)),b))))} +function aZb(a,b){return Vpb(nA(jjb(Xob(Tob(new Zob(null,new ekb(a.c.b,16)),new kZb(a)),b))))} +function Sad(a,b){if(b){if(a.B==null){a.B=a.D;a.D=null}}else if(a.B!=null){a.D=a.B;a.B=null}} +function _o(a){var b;if(sA(a,182)){b=kA(a,182);return new ap(b.a)}else{return Zn(),new xo(a)}} +function gob(a){var b;b=eob(a);if(D2(b.a,0)){return pjb(),pjb(),ojb}return pjb(),new tjb(b.b)} +function hob(a){var b;b=eob(a);if(D2(b.a,0)){return pjb(),pjb(),ojb}return pjb(),new tjb(b.c)} +function kUb(a){prb.call(this);this.b=Vpb(nA(nub(a,(J6b(),k6b))));this.a=kA(nub(a,a5b),197)} +function ouc(){this.c=new Grc(0);this.b=new Grc(fRd);this.d=new Grc(eRd);this.a=new Grc(YMd)} +function _Ec(a){this.b=(Pb(a),new Ibb((sk(),a)));this.a=new Gbb;this.d=new Gbb;this.e=new Hyc} +function fHb(){fHb=d3;cHb=new oHb;aHb=new tHb;bHb=new xHb;_Gb=new BHb;dHb=new FHb;eHb=new JHb} +function O_b(){O_b=d3;M_b=new Q_b('GREEDY',0);L_b=new Q_b('DEPTH_FIRST',1);N_b=new Q_b(vOd,2)} +function eDc(){eDc=d3;dDc=new fDc('OUTSIDE',0);cDc=new fDc('INSIDE',1);bDc=new fDc('FIXED',2)} +function Gcc(){Gcc=d3;Fcc=qvc(uvc(tvc(tvc(new yvc,(Wzb(),Tzb),(lPb(),TOb)),Uzb,IOb),Vzb),SOb)} +function wEb(a){if(a.b.c.g.j==(RGb(),MGb)){return kA(nub(a.b.c.g,(E2b(),i2b)),11)}return a.b.c} +function xEb(a){if(a.b.d.g.j==(RGb(),MGb)){return kA(nub(a.b.d.g,(E2b(),i2b)),11)}return a.b.d} +function D7(a){var b;if(a.b==-2){if(a.e==0){b=-1}else{for(b=0;a.a[b]==0;b++);}a.b=b}return a.b} +function ev(a){var b,c,d;b=0;for(d=a.tc();d.hc();){c=d.ic();b+=c!=null?ob(c):0;b=~~b}return b} +function Tyc(a,b,c){var d,e;for(e=sib(a,0);e.b!=e.d.c;){d=kA(Gib(e),9);d.a+=b;d.b+=c}return a} +function mmc(a){var b,c,d;b=0;for(d=a.tc();d.hc();){c=nA(d.ic());b+=(Npb(c),c)}return b/a._b()} +function Bx(a){var b;if(a==0){return 'UTC'}if(a<0){a=-a;b='UTC+'}else{b='UTC-'}return b+Dx(a)} +function gdb(a,b){bdb();var c,d;d=new Gbb;for(c=0;c0){this.g=this.Fh(this.i+(this.i/8|0)+1);a.zc(this.g)}} +function jKc(a,b){return yv(),Bv(gNd),$wnd.Math.abs(0-b)<=gNd||0==b||isNaN(0)&&isNaN(b)?0:a/b} +function pvd(a,b){lud.call(this,F0,a,b);this.b=this;this.a=yyd(a.mg(),Gbd(this.e.mg(),this.c))} +function nGd(a,b){var c,d;d=b.length;for(c=0;ce&&b.af&&b.b1||a.hc()){++a.a;a.g=0;b=a.i;a.hc();return b}else{throw x2(new djb)}} +function L1c(a){var b;if(a.d==null){++a.e;a.f=0;K1c(null)}else{++a.e;b=a.d;a.d=null;a.f=0;K1c(b)}} +function S8c(a,b){var c;if(sA(b,109)){kA(a.c,81).ij();c=kA(b,109);Z1c(a,c)}else{kA(a.c,81).Gc(b)}} +function Wr(a){return sA(a,193)?Hl(kA(a,193)):sA(a,160)?kA(a,160).a:sA(a,49)?new rs(a):new gs(a)} +function rcc(a,b,c){return a==(cdc(),bdc)?new kcc:Yjb(b,1)!=0?new Idc(c.length):new Gdc(c.length)} +function vMc(a,b){var c,d,e;c=a.cg();if(c!=null&&a.fg()){for(d=0,e=c.length;d=128)return false;return a<64?L2(z2(O2(1,a),c),0):L2(z2(O2(1,a-64),b),0)} +function Pkc(a){var b;b=kA(nub(a,(E2b(),V1b)),69);return a.j==(RGb(),MGb)&&(b==(FDc(),EDc)||b==kDc)} +function tn(a,b){var c;if(sA(b,13)){c=(sk(),kA(b,13));return a.oc(c)}return $n(a,kA(Pb(b),20).tc())} +function Djc(a){yjc();var b;if(!Bfb(xjc,a)){b=new Ajc;b.a=a;Efb(xjc,a,b)}return kA(Cfb(xjc,a),573)} +function Gs(a){Es();if(a<3){Wj(a,'expectedSize');return a+1}if(a>22);e=a.h+b.h+(d>>22);return Cz(c&cLd,d&cLd,e&dLd)} +function Yz(a,b){var c,d,e;c=a.l-b.l;d=a.m-b.m+(c>>22);e=a.h-b.h+(d>>22);return Cz(c&cLd,d&cLd,e&dLd)} +function YOc(a,b,c,d){if(c==1){return !a.n&&(a.n=new zkd(LV,a,1,7)),q_c(a.n,b,d)}return wOc(a,b,c,d)} +function Qab(a,b){if(b==null){return false}while(a.a!=a.b){if(kb(b,kbb(a))){return true}}return false} +function b9(a){if(a.a.hc()){return true}if(a.a!=a.d){return false}a.a=new ahb(a.e.d);return a.a.hc()} +function vbb(a,b){var c,d;c=b.yc();d=c.length;if(d==0){return false}Apb(a.c,a.c.length,c);return true} +function knb(a,b,c){var d,e;for(e=b.Tb().tc();e.hc();){d=kA(e.ic(),38);a.Yb(d.kc(),d.lc(),c)}return a} +function ohb(a,b){var c;c=a.a.get(b);if(c===undefined){++a.d}else{a.a[HLd](b);--a.c;pfb(a.b)}return c} +function gwd(a,b){this.b=a;this.e=b;this.d=b.j;this.f=(wyd(),kA(a,61).bj());this.k=yyd(b.e.mg(),a)} +function fkc(a){this.o=a;this.g=new Gbb;this.j=new yib;this.n=new yib;this.e=new Gbb;this.b=new Gbb} +function Pbc(a){this.a=tz(UP,cKd,1704,a.length,0,2);this.b=tz(XP,cKd,1705,a.length,0,2);this.c=new cp} +function Xqb(a,b){a.d==(gBc(),cBc)||a.d==fBc?kA(b.a,57).c.nc(kA(b.b,57)):kA(b.b,57).c.nc(kA(b.a,57))} +function AQb(a,b){var c,d;for(d=new ccb(a.b);d.ab){return 1}if(a==b){return 0}return isNaN(a)?isNaN(b)?0:1:-1} +function nrb(a,b){if(!a||!b||a==b){return false}return Dqb(a.d.c,b.d.c+b.d.b)&&Dqb(b.d.c,a.d.c+a.d.b)} +function N8(a,b){Fpb(a>=0,'Negative initial capacity');Fpb(b>=0,'Non-positive load factor');L8(this)} +function NRc(a){var b,c;c=(b=new Dod,b);wRc(c,'T');fXc((!a.d&&(a.d=new Bwd(AY,a,11)),a.d),c);return c} +function Yuc(a,b){var c;c=Tr(b.a._b());Sob(Yob(new Zob(null,new ekb(b,1)),a.i),new jvc(a,c));return c} +function voc(a){var b,c,d;b=new yib;for(d=sib(a.d,0);d.b!=d.d.c;){c=kA(Gib(d),170);mib(b,c.c)}return b} +function lXc(a){var b,c,d,e;b=1;for(c=0,e=a._b();c>=1);return b}} +function L4(a){var b;b=G3(a);if(b>nLd){return oLd}else if(b<-3.4028234663852886E38){return pLd}return b} +function xz(a,b,c,d,e){e.ql=a;e.rl=b;e.sl=g3;e.__elementTypeId$=c;e.__elementTypeCategory$=d;return e} +function fub(a,b,c,d,e){var f,g;for(g=c;g<=e;g++){for(f=b;f<=d;f++){Qtb(a,f,g)||Utb(a,f,g,true,false)}}} +function YXb(a){var b,c,d,e;for(c=a.a,d=0,e=c.length;da.f;c=a.u+a.e[a.o.o]*a.d>a.f*a.s*a.d;return b||c} +function Dlb(a,b,c){var d,e;d=new _lb(b,c);e=new amb;a.b=Blb(a,a.b,d,e);e.b||++a.c;a.b.b=false;return e.d} +function Xkd(a){var b;if(!a.c||(a.Bb&1)==0&&(a.c.Db&64)!=0){b=j9c(a);sA(b,96)&&(a.c=kA(b,24))}return a.c} +function Yqb(a){var b,c;for(c=new ccb(a.a.b);c.a=0&&a[d]===b[d];d--);return d<0?0:H2(z2(a[d],yLd),z2(b[d],yLd))?-1:1} +function h6c(a){var b;if(a==null)return true;b=a.length;return b>0&&a.charCodeAt(b-1)==58&&!Q5c(a,E5c,F5c)} +function Enc(a){switch(a.g){case 1:return eRd;default:case 2:return 0;case 3:return YMd;case 4:return fRd;}} +function Xl(a){switch(a._b()){case 0:return Fl;case 1:return new mv(a.tc().ic());default:return new Zu(a);}} +function lo(a,b){Zn();var c,d;Qb(b,'predicate');for(d=0;a.hc();d++){c=a.ic();if(b.Mb(c)){return d}}return -1} +function xb(a,b,c){Pb(b);if(c.hc()){E6(b,a.Lb(c.ic()));while(c.hc()){E6(b,a.c);E6(b,a.Lb(c.ic()))}}return b} +function xt(a,b){var c;if(b===a){return true}if(sA(b,238)){c=kA(b,238);return kb(a.Hc(),c.Hc())}return false} +function A2(a,b){var c;if(G2(a)&&G2(b)){c=a-b;if(!isNaN(c)){return c}}return Pz(G2(a)?S2(a):a,G2(b)?S2(b):b)} +function Y7(a){y7();if(a<0){if(a!=-1){return new K7(-1,-a)}return s7}else return a<=10?u7[zA(a)]:new K7(1,a)} +function eHd(){UGd();var a;if(BGd)return BGd;a=YGd(gHd('M',true));a=ZGd(gHd('M',false),a);BGd=a;return BGd} +function JRc(a,b,c){var d,e;e=(d=new pjd,d);eSc(e,b,c);fXc((!a.q&&(a.q=new zkd(tY,a,11,10)),a.q),e);return e} +function Q5c(a,b,c){var d,e;for(d=0,e=a.length;d=a.b.c.length){return}Bjb(a,2*b+1);c=2*b+2;cb){throw x2(new O4(VLd+a+WLd+b))}if(a<0||b>c){throw x2(new s3(VLd+a+XLd+b+OLd+c))}} +function Ruc(a,b,c){if(b<0){throw x2(new q3(NRd+b))}if(b0){return Ykb(b-1,a.a.c.length),zbb(a.a,b-1)}else{throw x2(new zfb)}} +function wsc(a,b){var c;if(b.c.length!=0){while(Zrc(a,b)){Xrc(a,b,false)}c=Brc(b);if(a.a){a.a.If(c);wsc(a,c)}}} +function Mcc(a,b){var c,d;for(d=sib(a,0);d.b!=d.d.c;){c=kA(Gib(d),204);if(c.e.length>0){b.td(c);c.i&&Scc(c)}}} +function Syc(a,b,c){var d,e,f;d=new yib;for(f=sib(c,0);f.b!=f.d.c;){e=kA(Gib(f),9);mib(d,new Kyc(e))}Eq(a,b,d)} +function L5c(a,b){var c;c=new P5c((a.f&256)!=0,a.i,a.a,a.d,(a.f&16)!=0,a.j,a.g,b);a.e!=null||(c.c=a);return c} +function cg(a,b){var c,d;c=kA(a.d.$b(b),13);if(!c){return null}d=a.e.Oc();d.oc(c);a.e.d-=c._b();c.Pb();return d} +function a6c(a){var b,c,d,e;e=0;for(c=0,d=a.length;c1||b>=0&&a.b<3} +function _Xc(a){var b;++a.j;if(a.i==0){a.g=null}else if(a.i>>0).toString(16)}return a.toString()} +function Kad(a,b){if(a.D==null&&a.B!=null){a.D=a.B;a.B=null}Vad(a,b==null?null:(Npb(b),b));!!a.C&&a.Kj(null)} +function Yab(a,b){var c,d;c=a.a.length-1;a.c=a.c-1&c;while(b!=a.c){d=b+1&c;wz(a.a,b,a.a[d]);b=d}wz(a.a,a.c,null)} +function Zab(a,b){var c,d;c=a.a.length-1;while(b!=a.b){d=b-1&c;wz(a.a,b,a.a[d]);b=d}wz(a.a,a.b,null);a.b=a.b+1&c} +function Qc(a,b){Tb(!this.b);Tb(!this.d);Lb(M8(a.c)==0);Lb(b.d.c+b.e.c==0);Lb(true);this.b=a;this.d=this.ec(b)} +function qbc(a,b,c,d,e){if(d){rbc(a,b)}else{nbc(a,b,e);obc(a,b,c)}if(b.c.length>1){bdb();Dbb(b,a.b);Nbc(a.c,b)}} +function w8(a,b,c,d,e){if(b==0||d==0){return}b==1?(e[d]=y8(e,c,d,a[0])):d==1?(e[b]=y8(e,a,b,c[0])):x8(a,c,e,b,d)} +function X5c(a){var b,c;if(a==null)return null;for(b=0,c=a.length;b=a.c.b:a.a<=a.c.b)){throw x2(new djb)}b=a.a;a.a+=a.c.c;++a.b;return d5(b)} +function Q5(a){var b,c;if(a>-129&&a<128){b=a+128;c=(S5(),R5)[b];!c&&(c=R5[b]=new K5(a));return c}return new K5(a)} +function d5(a){var b,c;if(a>-129&&a<128){b=a+128;c=(f5(),e5)[b];!c&&(c=e5[b]=new S4(a));return c}return new S4(a)} +function THc(a,b){if(!a){return 0}if(b&&!a.j){return 0}if(sA(a,114)){if(kA(a,114).a.b==0){return 0}}return a.Pf()} +function UHc(a,b){if(!a){return 0}if(b&&!a.k){return 0}if(sA(a,114)){if(kA(a,114).a.a==0){return 0}}return a.Qf()} +function kb(a,b){return wA(a)?Z5(a,b):uA(a)?(Npb(a),a===b):tA(a)?(Npb(a),a===b):rA(a)?a.Fb(b):vz(a)?a===b:aw(a,b)} +function ob(a){return wA(a)?hqb(a):uA(a)?zA((Npb(a),a)):tA(a)?(Npb(a),a)?1231:1237:rA(a)?a.Hb():vz(a)?bqb(a):bw(a)} +function mb(a){return wA(a)?UE:uA(a)?yE:tA(a)?tE:rA(a)?a.ql:vz(a)?a.ql:a.ql||Array.isArray(a)&&pz(ND,1)||ND} +function gyd(a){return !a?null:(a.i&1)!=0?a==u2?tE:a==FA?GE:a==EA?CE:a==DA?yE:a==GA?IE:a==t2?PE:a==BA?uE:vE:a} +function otc(){otc=d3;jtc=($Ac(),JAc);mtc=WAc;ftc=(ctc(),Tsc);gtc=Usc;htc=Wsc;itc=Ysc;ktc=Zsc;ltc=$sc;ntc=atc} +function pAb(){pAb=d3;nAb=hv(xz(pz(gU,1),jKd,110,0,[(gBc(),cBc),dBc]));oAb=hv(xz(pz(gU,1),jKd,110,0,[fBc,bBc]))} +function cMb(){cMb=d3;aMb=new dMb('MIRROR_X',0);bMb=new dMb('TRANSPOSE',1);_Lb=new dMb('MIRROR_AND_TRANSPOSE',2)} +function cCb(a){var b;b=new rCb(a);PCb(a.a,aCb,new Rcb(xz(pz(jK,1),oJd,341,0,[b])));!!b.d&&tbb(b.f,b.d);return b.f} +function Iac(a){var b,c;for(c=new ccb(a.r);c.a=48&&a<58){return a-48}if(a>=97&&a<97){return a-97+10}if(a>=65&&a<65){return a-65+10}return -1} +function j6c(a){var b,c;if(a==null)return false;for(b=0,c=a.length;bnOd?a-c>nOd:c-a>nOd} +function y2(a,b){var c;if(G2(a)&&G2(b)){c=a+b;if(iLdd)throw x2(new Z_c(b,d));if(a.xh()&&a.pc(c)){throw x2(new O4(UTd))}a.mh(b,c)} +function Qpb(a,b,c){if(a<0||b>c){throw x2(new q3(VLd+a+XLd+b+', size: '+c))}if(a>b){throw x2(new O4(VLd+a+WLd+b))}} +function gz(a){az();throw x2(new vy("Unexpected typeof result '"+a+"'; please report this bug to the GWT team"))} +function en(a){nl();switch(a.c){case 0:return av(),_u;case 1:return new ov(ko(new wgb(a)));default:return new dn(a);}} +function G8c(a){var b;if((a.Db&64)!=0)return aNc(a);b=new B6(aNc(a));b.a+=' (source: ';w6(b,a.d);b.a+=')';return b.a} +function qub(a,b,c){c==null?(!a.p&&(a.p=(Es(),new Bgb)),K8(a.p,b)):(!a.p&&(a.p=(Es(),new Bgb)),I8(a.p,b,c));return a} +function pub(a,b,c){return c==null?(!a.p&&(a.p=(Es(),new Bgb)),K8(a.p,b)):(!a.p&&(a.p=(Es(),new Bgb)),I8(a.p,b,c)),a} +function QXc(a,b,c){var d;a.Eh(a.i+1);d=a.Ch(b,c);b!=a.i&&T6(a.g,b,a.g,b+1,a.i-b);wz(a.g,b,d);++a.i;a.sh(b,c);a.th()} +function Yjc(a,b,c){var d,e,f;d=0;for(f=sib(a,0);f.b!=f.d.c;){e=Vpb(nA(Gib(f)));if(e>c){break}else e>=b&&++d}return d} +function ZXb(a,b){var c,d,e;c=0;for(e=AGb(a,b).tc();e.hc();){d=kA(e.ic(),11);c+=nub(d,(E2b(),p2b))!=null?1:0}return c} +function rwc(a){var b;b=kA(Fhb(a.c.c,''),199);if(!b){b=new Svc(_vc($vc(new awc,''),'Other'));Ghb(a.c.c,'',b)}return b} +function alc(a){this.a=new iib;this.d=new iib;this.b=new iib;this.c=new iib;this.g=new iib;this.i=new iib;this.f=a} +function gBc(){gBc=d3;eBc=new kBc(LQd,0);dBc=new kBc(yOd,1);cBc=new kBc(xOd,2);bBc=new kBc(WQd,3);fBc=new kBc('UP',4)} +function jCc(){jCc=d3;hCc=new kCc('INHERIT',0);gCc=new kCc('INCLUDE_CHILDREN',1);iCc=new kCc('SEPARATE_CHILDREN',2)} +function nkd(a,b,c){var d,e;d=new Oid(a.e,3,13,null,(e=b.c,e?e:(j7c(),Z6c)),pcd(a,b),false);!c?(c=d):c.Sh(d);return c} +function okd(a,b,c){var d,e;d=new Oid(a.e,4,13,(e=b.c,e?e:(j7c(),Z6c)),null,pcd(a,b),false);!c?(c=d):c.Sh(d);return c} +function PRc(a,b,c){var d,e;e=a.sb;a.sb=b;if((a.Db&4)!=0&&(a.Db&1)==0){d=new Mid(a,1,4,e,b);!c?(c=d):c.Sh(d)}return c} +function m9c(a,b,c){var d,e;e=a.r;a.r=b;if((a.Db&4)!=0&&(a.Db&1)==0){d=new Mid(a,1,8,e,a.r);!c?(c=d):c.Sh(d)}return c} +function ptd(a,b){var c,d;c=kA(b,614);d=c.Hj();!d&&c.Ij(d=sA(b,96)?new Dtd(a,kA(b,24)):new Ptd(a,kA(b,140)));return d} +function B7(a,b){var c;if(a===b){return true}if(sA(b,89)){c=kA(b,89);return a.e==c.e&&a.d==c.d&&C7(a,c.a)}return false} +function BMc(a,b){var c;c=Hbd(a,b);if(sA(c,335)){return kA(c,29)}throw x2(new O4(ZSd+b+"' is not a valid attribute"))} +function Xob(a,b){var c;c=new rpb;if(!a.a.sd(c)){aob(a);return ijb(),ijb(),hjb}return ijb(),new kjb(Npb(Wob(a,c.a,b)))} +function IMb(a,b){var c;if(a.c.length==0){return}c=kA(Fbb(a,tz(RK,VNd,8,a.c.length,0,1)),123);Ecb(c,new UMb);FMb(c,b)} +function OMb(a,b){var c;if(a.c.length==0){return}c=kA(Fbb(a,tz(RK,VNd,8,a.c.length,0,1)),123);Ecb(c,new ZMb);FMb(c,b)} +function aec(a,b){switch(b.g){case 2:case 1:return AGb(a,b);case 3:case 4:return Wr(AGb(a,b));}return bdb(),bdb(),$cb} +function WOc(a,b,c,d){switch(b){case 1:return !a.n&&(a.n=new zkd(LV,a,1,7)),a.n;case 2:return a.k;}return vOc(a,b,c,d)} +function zcb(a,b,c,d,e,f,g,h){var i;i=c;while(f=d||b=65&&a<=70){return a-65+10}if(a>=97&&a<=102){return a-97+10}if(a>=48&&a<=57){return a-48}return 0} +function T4(a){a-=a>>1&1431655765;a=(a>>2&858993459)+(a&858993459);a=(a>>4)+a&252645135;a+=a>>8;a+=a>>16;return a&63} +function o9c(a,b){var c;c=(a.Bb&256)!=0;b?(a.Bb|=256):(a.Bb&=-257);(a.Db&4)!=0&&(a.Db&1)==0&&vMc(a,new Pid(a,1,2,c,b))} +function Pbd(a,b){var c;c=(a.Bb&256)!=0;b?(a.Bb|=256):(a.Bb&=-257);(a.Db&4)!=0&&(a.Db&1)==0&&vMc(a,new Pid(a,1,8,c,b))} +function rgd(a,b){var c;c=(a.Bb&256)!=0;b?(a.Bb|=256):(a.Bb&=-257);(a.Db&4)!=0&&(a.Db&1)==0&&vMc(a,new Pid(a,1,8,c,b))} +function Qbd(a,b){var c;c=(a.Bb&512)!=0;b?(a.Bb|=512):(a.Bb&=-513);(a.Db&4)!=0&&(a.Db&1)==0&&vMc(a,new Pid(a,1,9,c,b))} +function p9c(a,b){var c;c=(a.Bb&512)!=0;b?(a.Bb|=512):(a.Bb&=-513);(a.Db&4)!=0&&(a.Db&1)==0&&vMc(a,new Pid(a,1,3,c,b))} +function pzd(a,b){var c;if(a.b==-1&&!!a.a){c=a.a.Vi();a.b=!c?Mbd(a.c.mg(),a.a):a.c.qg(a.a.pi(),c)}return a.c.hg(a.b,b)} +function rhd(a,b,c){var d,e;e=a.a;a.a=b;if((a.Db&4)!=0&&(a.Db&1)==0){d=new Mid(a,1,5,e,a.a);!c?(c=d):n$c(c,d)}return c} +function gUc(a,b){var c;c=qc(a.i,b);if(c==null){throw x2(new aUc('Node did not exist in input.'))}VUc(b,c);return null} +function hUc(a,b){var c;c=F8(a.k,b);if(c==null){throw x2(new aUc('Port did not exist in input.'))}VUc(b,c);return null} +function bob(a){if(a.c){bob(a.c)}else if(a.d){throw x2(new Q4("Stream already terminated, can't be modified or used"))}} +function xYb(a){var b;if(!a.a){throw x2(new Q4('Cannot offset an unassigned cut.'))}b=a.c-a.b;a.b+=b;zYb(a,b);AYb(a,b)} +function Scc(a){var b;if(a.g){b=a.c.pf()?a.f:a.a;Ucc(b.a,a.o,true);Ucc(b.a,a.o,false);qub(a.o,(J6b(),Z5b),(VCc(),PCc))}} +function tpc(a){var b,c,d;b=kA(nub(a,(Ppc(),Jpc)),15);for(d=b.tc();d.hc();){c=kA(d.ic(),170);mib(c.b.d,c);mib(c.c.b,c)}} +function aac(a){var b,c,d;d=0;for(c=(Zn(),new Zo(Rn(Dn(a.a,new Hn))));So(c);){b=kA(To(c),14);b.c.g==b.d.g||++d}return d} +function Bfd(a,b){var c,d;for(d=new a0c(a);d.e!=d.i._b();){c=kA($_c(d),24);if(yA(b)===yA(c)){return true}}return false} +function Ajd(a,b){var c,d;for(d=new a0c(a);d.e!=d.i._b();){c=kA($_c(d),133);if(yA(b)===yA(c)){return true}}return false} +function jtd(a,b,c){var d,e,f;f=(e=Kkd(a.b,b),e);if(f){d=kA(Wtd(qtd(a,f),''),24);if(d){return std(a,d,b,c)}}return null} +function mtd(a,b,c){var d,e,f;f=(e=Kkd(a.b,b),e);if(f){d=kA(Wtd(qtd(a,f),''),24);if(d){return ttd(a,d,b,c)}}return null} +function pMb(a){var b,c;b=a.j;if(b==(RGb(),MGb)){c=kA(nub(a,(E2b(),V1b)),69);return c==(FDc(),lDc)||c==CDc}return false} +function eXb(a){var b;b=new M6;b.a+='VerticalSegment ';H6(b,a.e);b.a+=' ';I6(b,zb(new Cb(qJd),new ccb(a.k)));return b.a} +function vDb(a){var b,c,d;b=new Gbb;for(d=new ccb(a.b);d.a0){d+=e;++c}}c>1&&(d+=a.d*(c-1));return d} +function dac(a,b,c){var d,e;for(e=a.a.Xb().tc();e.hc();){d=kA(e.ic(),8);if(sg(c,kA(xbb(b,d.o),13))){return d}}return null} +function W5c(a,b,c,d){var e;e=a.length;if(b>=e)return e;for(b=b>0?b:0;b=1?dBc:bBc}return c} +function Eac(a){var b,c,d;b=0;for(d=new ccb(a.c.a);d.a=64&&b<128&&(e=N2(e,O2(1,b-64)))}return e} +function QQb(a,b,c){var d,e,f;for(e=kl(b?vGb(a):zGb(a));So(e);){d=kA(To(e),14);f=b?d.c.g:d.d.g;f.j==(RGb(),NGb)&&FGb(f,c)}} +function RKc(a,b,c){var d;d=new aKc(a,b);Le(a.r,b.ef(),d);if(c&&a.t!=(eDc(),bDc)){d.c=new EIc(a.d);wbb(b.We(),new UKc(d))}} +function WWc(a,b,c){var d,e;d=(gMc(),e=new QOc,e);OOc(d,b);POc(d,c);!!a&&fXc((!a.a&&(a.a=new fdd(GV,a,5)),a.a),d);return d} +function zEc(a){if(a.i==null){throw x2(new Q4('The task has not begun yet.'))}if(!a.b){a.c0&&b.charCodeAt(0)==43?b.substr(1,b.length-1):b))} +function pBd(a){var b;return a==null?null:new P7((b=mId(a,true),b.length>0&&b.charCodeAt(0)==43?b.substr(1,b.length-1):b))} +function pGd(a){var b;b=tz(CA,yKd,22,2,15,1);a-=sLd;b[0]=(a>>10)+tLd&AKd;b[1]=(a&1023)+56320&AKd;return r6(b,0,b.length)} +function cyd(a){var b,c;for(c=dyd(Nad(I9c(a))).tc();c.hc();){b=pA(c.ic());if(MQc(a,b))return H6c((G6c(),F6c),b)}return null} +function r6(a,b,c){var d,e,f,g;f=b+c;Tpb(b,f,a.length);g='';for(e=b;eb&&d.Ld(a[f-1],a[f])>0;--f){g=a[f];wz(a,f,a[f-1]);wz(a,f-1,g)}}} +function f7(a,b){var c;a.c=b;a.a=$7(b);a.a<54&&(a.f=(c=b.d>1?N2(O2(b.a[1],32),z2(b.a[0],yLd)):z2(b.a[0],yLd),T2(J2(b.e,c))))} +function akb(){Vjb();var a,b,c;c=Ujb+++Dpb();a=zA($wnd.Math.floor(c*LLd))&NLd;b=zA(c-a*MLd);this.a=a^1502;this.b=b^KLd} +function cub(a,b,c){a.n=rz(GA,[cKd,rLd],[378,22],14,[c,zA($wnd.Math.ceil(b/32))],2);a.o=b;a.p=c;a.j=b-1>>1;a.k=c-1>>1} +function fUb(a,b){var c,d,e;d=uVb(b);e=Vpb(nA(s8b(d,(J6b(),k6b))));c=$wnd.Math.max(0,e/2-0.5);dUb(b,c,1);tbb(a,new WUb(b,c))} +function $jc(a,b){var c,d;c=sib(a,0);while(c.b!=c.d.c){d=Vpb(nA(Gib(c)));if(d==b){return}else if(d>b){Hib(c);break}}Eib(c,b)} +function qwc(a,b){var c,d,e,f,g;c=b.f;Ghb(a.c.d,c,b);if(b.g!=null){for(e=b.g,f=0,g=e.length;fb?1:Cv(isNaN(a),isNaN(b))} +function Xv(a){Vv();Ev(this);Gv(this);this.e=a;a!=null&&_pb(a,qKd,this);this.g=a==null?mJd:f3(a);this.a='';this.b=a;this.a=''} +function Hfb(a){var b;this.a=(b=kA(a.e&&a.e(),10),new ngb(b,kA(ypb(b,b.length),10),0));this.b=tz(NE,oJd,1,this.a.a.length,5,1)} +function Ou(a,b){var c,d;c=a._b();b.lengthc&&wz(b,c,null);return b} +function oXc(a){var b,c,d;d=new z6;d.a+='[';for(b=0,c=a._b();b>5;b=a&31;d=tz(FA,OKd,22,c+1,15,1);d[c]=1<f?b:f}return d5(b)} +function Mub(a,b){var c,d;for(d=a.e.a.Xb().tc();d.hc();){c=kA(d.ic(),247);if(fyc(b,c.d)||dyc(b,c.d)){return true}}return false} +function Zlc(a,b){var c,d,e,f;f=a.g.ed();c=0;while(f.hc()){d=Vpb(nA(f.ic()));e=d-b;if(e>_Qd){return c}else e>aRd&&++c}return c} +function Smc(a,b){var c,d,e;e=b.d.g;d=e.j;if(d==(RGb(),PGb)||d==KGb||d==LGb){return}c=kl(zGb(e));So(c)&&I8(a.k,b,kA(To(c),14))} +function iQb(a,b){var c,d;c=b==(T$b(),P$b);d=gQb(a);c&&!d||!c&&d?qub(a,(J6b(),I4b),(ezc(),czc)):qub(a,(J6b(),I4b),(ezc(),bzc))} +function DBc(){DBc=d3;CBc=new EBc(LQd,0);ABc=new EBc('POLYLINE',1);zBc=new EBc('ORTHOGONAL',2);BBc=new EBc('SPLINES',3)} +function Qrc(){Qrc=d3;Prc=new Rrc('OVERLAP_REMOVAL',0);Nrc=new Rrc('COMPACTION',1);Orc=new Rrc('GRAPH_SIZE_CALCULATION',2)} +function b8b(){b8b=d3;$7b=new c8b('EQUALLY_DISTRIBUTED',0);a8b=new c8b('NORTH_STACKED',1);_7b=new c8b('NORTH_SEQUENCE',2)} +function ZVc(a){var b,c,d,e,f;f=_Vc(a);c=bJd(a.c);d=!c;if(d){e=new fy;Ny(f,'knownLayouters',e);b=new iWc(e);i5(a.c,b)}return f} +function Uud(a,b,c){var d,e;e=sA(b,62)&&(kA(kA(b,17),62).Bb&sLd)!=0?new jwd(b,a):new gwd(b,a);for(d=0;d3){e*=10;--f}a=(a+(e>>1))/e|0}d.i=a;return true} +function qg(a,b,c){var d,e;for(e=a.tc();e.hc();){d=e.ic();if(yA(b)===yA(d)||b!=null&&kb(b,d)){c&&e.jc();return true}}return false} +function d_c(a,b){var c,d;if(!b){return false}else{for(c=0;c0){if(b.lengtha.i&&wz(b,a.i,null);return b} +function _7(a,b){var c,d,e,f;c=b>>5;b&=31;e=a.d+c+(b==0?0:1);d=tz(FA,OKd,22,e,15,1);a8(d,a.a,c,b);f=new M7(a.e,e,d);A7(f);return f} +function rx(a,b){px();var c,d;c=ux((tx(),tx(),sx));d=null;b==c&&(d=kA(G8(ox,a),556));if(!d){d=new qx(a);b==c&&J8(ox,a,d)}return d} +function Mbd(a,b){var c,d,e;c=(a.i==null&&Cbd(a),a.i);d=b.pi();if(d!=-1){for(e=c.length;d=0;--d){b=c[d];for(e=0;e0&&A2(a,128)<0){b=U2(a)+128;c=(t5(),s5)[b];!c&&(c=s5[b]=new k5(a));return c}return new k5(a)} +function Z7(a){y7();if(A2(a,0)<0){if(A2(a,-1)!=0){return new N7(-1,K2(a))}return s7}else return A2(a,10)<=0?u7[U2(a)]:new N7(1,a)} +function cp(){Aj.call(this,new Khb(16));Wj(2,'expectedValuesPerKey');this.b=2;this.a=new vp(null,null,0,null);jp(this.a,this.a)} +function gFc(){gFc=d3;fFc=new hFc('SIMPLE',0);cFc=new hFc('GROUP_DEC',1);eFc=new hFc('GROUP_MIXED',2);dFc=new hFc('GROUP_INC',3)} +function SDc(){SDc=d3;PDc=new YGb(15);ODc=new GWc(($Ac(),oAc),PDc);RDc=new GWc(WAc,15);QDc=new GWc(LAc,d5(0));NDc=new GWc(Fzc,oNd)} +function Lmd(){Lmd=d3;Jmd=new Mmd;Cmd=new Pmd;Dmd=new Smd;Emd=new Vmd;Fmd=new Ymd;Gmd=new _md;Hmd=new cnd;Imd=new fnd;Kmd=new ind} +function Rdc(a){this.e=tz(FA,OKd,22,a.length,15,1);this.c=tz(u2,$Md,22,a.length,16,1);this.b=tz(u2,$Md,22,a.length,16,1);this.f=0} +function hub(a,b){this.n=rz(GA,[cKd,rLd],[378,22],14,[b,zA($wnd.Math.ceil(a/32))],2);this.o=a;this.p=b;this.j=a-1>>1;this.k=b-1>>1} +function hIc(a,b,c){XHc();SHc.call(this);this.a=rz($U,[cKd,fOd],[537,171],0,[WHc,VHc],2);this.c=new oyc;this.g=a;this.f=b;this.d=c} +function p_c(a,b,c){var d,e,f;if(a.ti()){d=a.i;f=a.ui();QXc(a,d,b);e=a.mi(3,null,b,d,f);!c?(c=e):c.Sh(e)}else{QXc(a,a.i,b)}return c} +function S1c(a,b){var c,d,e;if(a.f>0){a.Fi();d=b==null?0:ob(b);e=(d&jJd)%a.d.length;c=O1c(a,e,d,b);if(c){return c.lc()}}return null} +function I1c(a,b){var c,d,e;if(a.f>0){a.Fi();d=b==null?0:ob(b);e=(d&jJd)%a.d.length;c=P1c(a,e,d,b);return c!=-1}else{return false}} +function Qud(a,b){var c,d,e,f;f=yyd(a.e.mg(),b);c=kA(a.g,124);for(e=0;e2000){iw=a;jw=$wnd.setTimeout(sw,10)}}if(hw++==0){vw((uw(),tw));return true}return false} +function Gw(){if(Error.stackTraceLimit>0){$wnd.Error.stackTraceLimit=Error.stackTraceLimit=64;return true}return 'stack' in new Error} +function z7(a,b){if(a.e>b.e){return 1}if(a.eb.d){return a.e}if(a.d=0){f=f.a[1]}else{e=f;f=f.a[0]}}return e} +function ylb(a,b,c){var d,e,f;e=null;f=a.b;while(f){d=a.a.Ld(b,f.d);if(c&&d==0){return f}if(d<=0){f=f.a[0]}else{e=f;f=f.a[1]}}return e} +function LXb(a,b,c,d){var e,f,g;e=false;if(dYb(a.f,c,d)){gYb(a.f,a.a[b][c],a.a[b][d]);f=a.a[b];g=f[d];f[d]=f[c];f[c]=g;e=true}return e} +function Ylc(a,b){var c,d,e;e=a.g.ed();while(e.hc()){c=Vpb(nA(e.ic()));d=$wnd.Math.abs(c-b);if(d<_Qd){return e.Dc()-1}}return a.g._b()} +function Hqc(a,b){var c,d,e,f;f=b.b.b;a.a=new yib;a.b=tz(FA,OKd,22,f,15,1);c=0;for(e=sib(b.b,0);e.b!=e.d.c;){d=kA(Gib(e),76);d.g=c++}} +function j8b(a,b,c){var d,e,f,g,h;g=a.j;h=b.j;d=c[g.g][h.g];e=nA(s8b(a,d));f=nA(s8b(b,d));return $wnd.Math.max((Npb(e),e),(Npb(f),f))} +function bEc(){bEc=d3;_Dc=new cEc('PORTS',0);aEc=new cEc('PORT_LABELS',1);$Dc=new cEc('NODE_LABELS',2);ZDc=new cEc('MINIMUM_SIZE',3)} +function Cqb(a,b){return yv(),yv(),Bv(nKd),($wnd.Math.abs(a-b)<=nKd||a==b||isNaN(a)&&isNaN(b)?0:ab?1:Cv(isNaN(a),isNaN(b)))>0} +function Eqb(a,b){return yv(),yv(),Bv(nKd),($wnd.Math.abs(a-b)<=nKd||a==b||isNaN(a)&&isNaN(b)?0:ab?1:Cv(isNaN(a),isNaN(b)))<0} +function Dqb(a,b){return yv(),yv(),Bv(nKd),($wnd.Math.abs(a-b)<=nKd||a==b||isNaN(a)&&isNaN(b)?0:ab?1:Cv(isNaN(a),isNaN(b)))<=0} +function tac(a,b){if(b.c==a){return b.d}else if(b.d==a){return b.c}throw x2(new O4('Input edge is not connected to the input port.'))} +function $5(a,b){Npb(a);if(b==null){return false}if(Z5(a,b)){return true}return a.length==b.length&&Z5(a.toLowerCase(),b.toLowerCase())} +function jBd(a){var b,c,d,e,f;if(a==null)return null;f=new Gbb;for(c=fRc(a),d=0,e=c.length;db.e){return 1}else if(a.fb.f){return 1}return ob(a)-ob(b)} +function Js(b,c){Es();Pb(b);try{return b.Vb(c)}catch(a){a=w2(a);if(sA(a,177)){return null}else if(sA(a,169)){return null}else throw x2(a)}} +function Ks(b,c){Es();Pb(b);try{return b.$b(c)}catch(a){a=w2(a);if(sA(a,177)){return null}else if(sA(a,169)){return null}else throw x2(a)}} +function O7(a){y7();if(a.length==0){this.e=0;this.d=1;this.a=xz(pz(FA,1),OKd,22,15,[0])}else{this.e=1;this.d=a.length;this.a=a;A7(this)}} +function y8(a,b,c,d){u8();var e,f;e=0;for(f=0;f=f){Yab(a,b);return -1}else{Zab(a,b);return 1}} +function XXc(a,b){var c,d,e;++a.j;d=a.g==null?0:a.g.length;if(b>d){e=a.g;c=d+(d/2|0)+4;cwLd){return c.zg()}d=c.sg();if(!!d||c==a){break}}}return d} +function atd(a,b){var c,d;c=b.Yg(a.a);if(c){d=pA(S1c((!c.b&&(c.b=new f9c((j7c(),f7c),CZ,c)),c.b),RTd));if(d!=null){return d}}return b.be()} +function btd(a,b){var c,d;c=b.Yg(a.a);if(c){d=pA(S1c((!c.b&&(c.b=new f9c((j7c(),f7c),CZ,c)),c.b),RTd));if(d!=null){return d}}return b.be()} +function CWc(a){var b;if(sA(a.a,4)){b=JYc(a.a);if(b==null){throw x2(new Q4(VRd+a.b+"'. "+RRd+(d4(cX),cX.k)+SRd))}return b}else{return a.a}} +function lBd(a){var b;if(a==null)return null;b=GEd(mId(a,true));if(b==null){throw x2(new Pzd("Invalid hexBinary value: '"+a+"'"))}return b} +function Wvb(a,b){var c,d,e;tbb(Svb,a);b.nc(a);c=kA(F8(Rvb,a),19);if(c){for(e=c.tc();e.hc();){d=kA(e.ic(),35);ybb(Svb,d,0)!=-1||Wvb(d,b)}}} +function gYb(a,b,c){var d,e;tec(a.e,b,c,(FDc(),EDc));tec(a.i,b,c,kDc);if(a.a){e=kA(nub(b,(E2b(),i2b)),11);d=kA(nub(c,i2b),11);uec(a.g,e,d)}} +function Fuc(a){var b;if(yA(AOc(a,($Ac(),Vzc)))===yA((jCc(),hCc))){if(!ZSc(a)){COc(a,Vzc,iCc)}else{b=kA(AOc(ZSc(a),Vzc),316);COc(a,Vzc,b)}}} +function lAb(a,b,c){this.c=a;this.f=new Gbb;this.e=new Hyc;this.j=new kBb;this.n=new kBb;this.b=b;this.g=new pyc(b.c,b.d,b.b,b.a);this.a=c} +function fmc(a,b,c,d,e,f){Tlc(this);this.e=a;this.f=b;this.d=c;this.c=d;this.g=e;this.b=f;this.j=Vpb(nA(e.tc().ic()));this.i=Vpb(nA(An(e)))} +function aQb(a){var b;b=kA(To(kl(vGb(a))),14).c.g;while(b.j==(RGb(),OGb)){qub(b,(E2b(),c2b),(B3(),B3(),true));b=kA(To(kl(vGb(b))),14).c.g}} +function $ac(a,b,c){var d,e,f,g;f=b.i;g=c.i;if(f!=g){return f.g-g.g}else{d=a.f[b.o];e=a.f[c.o];return d==0&&e==0?0:d==0?-1:e==0?1:C4(d,e)}} +function $_c(b){var c;try{c=b.i.cd(b.e);b.Bi();b.g=b.e++;return c}catch(a){a=w2(a);if(sA(a,79)){b.Bi();throw x2(new djb)}else throw x2(a)}} +function u0c(b){var c;try{c=b.c.yh(b.e);b.Bi();b.g=b.e++;return c}catch(a){a=w2(a);if(sA(a,79)){b.Bi();throw x2(new djb)}else throw x2(a)}} +function Fq(b,c){var d;d=b.fd(c);try{return d.ic()}catch(a){a=w2(a);if(sA(a,101)){throw x2(new q3("Can't get element "+c))}else throw x2(a)}} +function uk(b,c){sk();Pb(b);try{return b.pc(c)}catch(a){a=w2(a);if(sA(a,177)){return false}else if(sA(a,169)){return false}else throw x2(a)}} +function Is(b,c){Es();Pb(b);try{return b.Qb(c)}catch(a){a=w2(a);if(sA(a,177)){return false}else if(sA(a,169)){return false}else throw x2(a)}} +function nDb(a,b,c){return new pyc($wnd.Math.min(a.a,b.a)-c/2,$wnd.Math.min(a.b,b.b)-c/2,$wnd.Math.abs(a.a-b.a)+c,$wnd.Math.abs(a.b-b.b)+c)} +function _Yb(a,b){var c,d,e,f;c=0;for(e=new ccb(b.a);e.a0),b.a.cd(b.c=--b.b))} +function Gxc(){Gxc=d3;Exc=new Hxc('PARENTS',0);Dxc=new Hxc('NODES',1);Bxc=new Hxc('EDGES',2);Fxc=new Hxc('PORTS',3);Cxc=new Hxc('LABELS',4)} +function JCc(){JCc=d3;GCc=new KCc('DISTRIBUTED',0);ICc=new KCc('JUSTIFIED',1);ECc=new KCc('BEGIN',2);FCc=new KCc(COd,3);HCc=new KCc('END',4)} +function QIc(a,b,c){SHc.call(this);this.a=tz($U,fOd,171,(KHc(),xz(pz(_U,1),jKd,203,0,[HHc,IHc,JHc])).length,0,1);this.b=a;this.d=b;this.c=c} +function csd(a,b){var c,d;++a.j;if(b!=null){c=(d=a.a.Cb,sA(d,92)?kA(d,92).cg():null);if(mcb(b,c)){XNc(a.a,4,c);return}}XNc(a.a,4,kA(b,116))} +function ewc(a,b){var c,d;if(b!=null&&m6(b).length!=0){c=dwc(a,b);if(c){return c}}if(YPd.length!=0){d=dwc(a,YPd);if(d){return d}}return null} +function HYb(a){var b,c;if(a.j==(RGb(),OGb)){for(c=kl(tGb(a));So(c);){b=kA(To(c),14);if(!JEb(b)&&a.c==GEb(b,a).c){return true}}}return false} +function Lrb(){Lrb=d3;Krb=new Mrb('NUM_OF_EXTERNAL_SIDES_THAN_NUM_OF_EXTENSIONS_LAST',0);Jrb=new Mrb('CORNER_CASES_THAN_SINGLE_SIDE_LAST',1)} +function YJc(){SJc();return xz(pz(nV,1),jKd,147,0,[PJc,OJc,QJc,GJc,FJc,HJc,KJc,JJc,IJc,NJc,MJc,LJc,DJc,CJc,EJc,AJc,zJc,BJc,xJc,wJc,yJc,RJc])} +function YKc(a,b){var c;c=!a.v.pc((bEc(),aEc))||a.q==(VCc(),QCc);switch(a.t.g){case 1:c?WKc(a,b):$Kc(a,b);break;case 0:c?XKc(a,b):_Kc(a,b);}} +function Vw(a,b,c){var d;d=c.q.getFullYear()-NKd+NKd;d<0&&(d=-d);switch(b){case 1:a.a+=d;break;case 2:nx(a,d%100,2);break;default:nx(a,d,b);}} +function Bdd(a){var b;b=a.Mh(null);switch(b){case 10:return 0;case 15:return 1;case 14:return 2;case 11:return 3;case 21:return 4;}return -1} +function mDb(a){switch(a.g){case 1:return gBc(),fBc;case 4:return gBc(),cBc;case 2:return gBc(),dBc;case 3:return gBc(),bBc;}return gBc(),eBc} +function pkd(a,b,c,d){var e,f,g;e=new Oid(a.e,1,13,(g=b.c,g?g:(j7c(),Z6c)),(f=c.c,f?f:(j7c(),Z6c)),pcd(a,b),false);!d?(d=e):d.Sh(e);return d} +function sib(a,b){var c,d;Ppb(b,a.b);if(b>=a.b>>1){d=a.c;for(c=a.b;c>b;--c){d=d.b}}else{d=a.a.a;for(c=0;c=0?a.Fg(e):UMc(a,d)):c<0?UMc(a,d):kA(d,61).aj().fj(a,a.Qg(),c)} +function zOc(a){var b,c,d;d=(!a.o&&(a.o=new T8c((uMc(),rMc),$V,a,0)),a.o);for(c=d.c.tc();c.e!=c.i._b();){b=kA(c.Ci(),38);b.lc()}return X1c(d)} +function yJb(a){var b,c,d,e;d=tz(IA,oJd,144,a.c.length,0,1);e=0;for(c=new ccb(a);c.a0){tbb(a.b,new Fx(b.a,c));d=b.a.length;0d&&(b.a+=q6(tz(CA,yKd,22,-d,15,1)))}} +function kCb(a){iCb();this.c=new Gbb;this.d=a;switch(a.g){case 0:case 2:this.a=idb(hCb);this.b=oLd;break;case 3:case 1:this.a=hCb;this.b=pLd;}} +function K7(a,b){this.e=a;if(b0.5&&f<50){e=omc(d);c=$lc(d,e,true);b=$wnd.Math.abs(c.b);++f}return $lc(a,e,false)} +function jmc(a){var b,c,d,e,f;d=gmc(a);b=oLd;f=0;e=0;while(b>0.5&&f<50){e=nmc(d);c=$lc(d,e,true);b=$wnd.Math.abs(c.a);++f}return $lc(a,e,false)} +function FEc(a,b){var c,d,e,f;f=0;for(d=sib(a,0);d.b!=d.d.c;){c=kA(Gib(d),35);f+=$wnd.Math.pow(c.g*c.f-b,2)}e=$wnd.Math.sqrt(f/(a.b-1));return e} +function iLc(a,b){var c,d,e;c=a.o;for(e=kA(kA(Ke(a.r,b),19),60).tc();e.hc();){d=kA(e.ic(),111);d.e.a=cLc(d,c.a);d.e.b=c.b*Vpb(nA(d.b.xe(aLc)))}} +function MMc(a,b,c,d){var e;if(c>=0){return a.Bg(b,c,d)}else{!!a.yg()&&(d=(e=a.og(),e>=0?a.jg(d):a.yg().Cg(a,-1-e,null,d)));return a.lg(b,c,d)}} +function nXc(a,b,c){var d,e;e=a._b();if(b>=e)throw x2(new Z_c(b,e));if(a.xh()){d=a.dd(c);if(d>=0&&d!=b){throw x2(new O4(UTd))}}return a.Ah(b,c)} +function UZc(a,b,c){var d,e,f,g;d=a.dd(b);if(d!=-1){if(a.ti()){f=a.ui();g=eZc(a,d);e=a.mi(4,g,null,d,f);!c?(c=e):c.Sh(e)}else{eZc(a,d)}}return c} +function q_c(a,b,c){var d,e,f,g;d=a.dd(b);if(d!=-1){if(a.ti()){f=a.ui();g=ZXc(a,d);e=a.mi(4,g,null,d,f);!c?(c=e):c.Sh(e)}else{ZXc(a,d)}}return c} +function Sab(a){var b,c,d;if(a.b!=a.c){return}d=a.a.length;c=Z4(8>d?8:d)<<1;if(a.b!=0){b=ypb(a.a,c);Rab(a,b,d);a.a=b;a.b=0}else{Cpb(a.a,c)}a.c=d} +function eQb(a){var b,c;b=new Gbb;c=a;do{c=kA(To(kl(zGb(c))),14).d.g;c.j==(RGb(),OGb)&&(b.c[b.c.length]=c,true)}while(c.j==(RGb(),OGb));return b} +function wDb(a){var b,c;this.b=new Gbb;this.c=a;this.a=false;for(c=new ccb(a.a);c.a0||a==(Fk(),Ek)||b==(Uk(),Tk)){throw x2(new O4('Invalid range: '+Yu(a,b)))}} +function VKb(a){switch(a.g){case 1:return YLc(),XLc;case 3:return YLc(),ULc;case 2:return YLc(),WLc;case 4:return YLc(),VLc;default:return null;}} +function Ktc(a){switch(a.g){case 0:return null;case 1:return new ouc;case 2:return new fuc;default:throw x2(new O4(xRd+(a.f!=null?a.f:''+a.g)));}} +function EXb(a,b,c){if(a.e){switch(a.b){case 1:mXb(a.c,b,c);break;case 0:nXb(a.c,b,c);}}else{kXb(a.c,b,c)}a.a[b.o][c.o]=a.c.i;a.a[c.o][b.o]=a.c.e} +function h7b(){h7b=d3;f7b=new j7b(wOd,0);g7b=new j7b('PORT_POSITION',1);e7b=new j7b('NODE_SIZE_WHERE_SPACE_PERMITS',2);d7b=new j7b('NODE_SIZE',3)} +function Ymc(a){var b,c,d;for(c=new ccb(a.a);c.a=0?a.ug(g,c,true):TMc(a,f,c)):kA(f,61).aj().cj(a,a.Qg(),e,c,d)} +function Zsb(a,b){var c,d,e,f;f=a.o;c=a.p;f=0)return e;if(a.Rj()){for(d=0;de&&wz(b,e,null);return b} +function Qcb(a,b){var c,d,e;e=a.a.length;b.lengthe&&wz(b,e,null);return b} +function Qtb(b,c,d){try{return D2(Ttb(b,c,d),1)}catch(a){a=w2(a);if(sA(a,305)){throw x2(new q3(zMd+b.o+'*'+b.p+AMd+c+qJd+d+BMd))}else throw x2(a)}} +function Rtb(b,c,d){try{return D2(Ttb(b,c,d),0)}catch(a){a=w2(a);if(sA(a,305)){throw x2(new q3(zMd+b.o+'*'+b.p+AMd+c+qJd+d+BMd))}else throw x2(a)}} +function Stb(b,c,d){try{return D2(Ttb(b,c,d),2)}catch(a){a=w2(a);if(sA(a,305)){throw x2(new q3(zMd+b.o+'*'+b.p+AMd+c+qJd+d+BMd))}else throw x2(a)}} +function _tb(b,c,d){var e;try{return Qtb(b,c+b.j,d+b.k)}catch(a){a=w2(a);if(sA(a,79)){e=a;throw x2(new q3(e.g+CMd+c+qJd+d+').'))}else throw x2(a)}} +function aub(b,c,d){var e;try{return Rtb(b,c+b.j,d+b.k)}catch(a){a=w2(a);if(sA(a,79)){e=a;throw x2(new q3(e.g+CMd+c+qJd+d+').'))}else throw x2(a)}} +function bub(b,c,d){var e;try{return Stb(b,c+b.j,d+b.k)}catch(a){a=w2(a);if(sA(a,79)){e=a;throw x2(new q3(e.g+CMd+c+qJd+d+').'))}else throw x2(a)}} +function i0c(b,c){if(b.g==-1){throw x2(new P4)}b.Bi();try{b.d.hd(b.g,c);b.f=b.d.j}catch(a){a=w2(a);if(sA(a,79)){throw x2(new qfb)}else throw x2(a)}} +function nEb(a,b,c){xEc(c,'Compound graph preprocessor',1);a.a=new Xm;sEb(a,b,null);mEb(a,b);rEb(a);qub(b,(E2b(),O1b),a.a);a.a=null;L8(a.b);zEc(c)} +function Xjb(a,b){var c,d;Epb(b>0);if((b&-b)==b){return zA(b*Yjb(a,31)*4.6566128730773926E-10)}do{c=Yjb(a,31);d=c%b}while(c-d+(b-1)<0);return zA(d)} +function KFb(a,b,c){switch(c.g){case 1:a.a=b.a/2;a.b=0;break;case 2:a.a=b.a;a.b=b.b/2;break;case 3:a.a=b.a/2;a.b=b.b;break;case 4:a.a=0;a.b=b.b/2;}} +function fQb(a){var b,c;for(c=kA(nub(a,(E2b(),t2b)),15).tc();c.hc();){b=kA(c.ic(),68);if(oub(b,(J6b(),Y4b))){return kA(nub(b,Y4b),276)}}return null} +function JZb(a,b){var c,d,e;c=p$b(new r$b,a);for(e=new ccb(b);e.a1&&(f=JZb(a,b));return f} +function v9b(a,b){var c,d,e,f;for(f=new ccb(b.a);f.a102)return -1;if(a<=57)return a-48;if(a<65)return -1;if(a<=70)return a-65+10;if(a<97)return -1;return a-97+10} +function Gqc(a,b){var c,d,e;a.b[b.g]=1;for(d=sib(b.d,0);d.b!=d.d.c;){c=kA(Gib(d),170);e=c.c;a.b[e.g]==1?mib(a.a,c):a.b[e.g]==2?(a.b[e.g]=1):Gqc(a,e)}} +function NIc(a,b){var c;c=xz(pz(DA,1),vLd,22,15,[THc(a.a[0],b),THc(a.a[1],b),THc(a.a[2],b)]);if(a.d){c[0]=$wnd.Math.max(c[0],c[2]);c[2]=c[0]}return c} +function OIc(a,b){var c;c=xz(pz(DA,1),vLd,22,15,[UHc(a.a[0],b),UHc(a.a[1],b),UHc(a.a[2],b)]);if(a.d){c[0]=$wnd.Math.max(c[0],c[2]);c[2]=c[0]}return c} +function urb(a){var b,c,d;ulb(a.b.a);a.a=tz(WH,oJd,57,a.c.c.a.b.c.length,0,1);b=0;for(d=new ccb(a.c.c.a.b);d.ad&&a.charCodeAt(b-1)<=32){--b}return d>0||bf&&wz(b,f,null);return b} +function go(a){Zn();var b;b=_n(a);if(!So(a)){throw x2(new q3('position (0) must be less than the number of elements that remained ('+b+')'))}return To(a)} +function a5(a){var b;b=(h5(),g5);return b[a>>>28]|b[a>>24&15]<<4|b[a>>20&15]<<8|b[a>>16&15]<<12|b[a>>12&15]<<16|b[a>>8&15]<<20|b[a>>4&15]<<24|b[a&15]<<28} +function cZb(a){var b,c,d;d=a.f;a.k=tz(DA,vLd,22,d,15,1);a.d=tz(DA,vLd,22,d,15,1);for(b=0;b0&&(e.b+=b);return e} +function cDb(a,b){var c,d,e;e=new Hyc;for(d=a.tc();d.hc();){c=kA(d.ic(),31);SCb(c,0,e.b);e.b+=c.e.b+b;e.a=$wnd.Math.max(e.a,c.e.a)}e.a>0&&(e.a+=b);return e} +function PVb(a,b){var c,d;if(b<0||b>=a._b()){return null}for(c=b;c=a.i)throw x2(new t1c(b,a.i));++a.j;c=a.g[b];d=a.i-b-1;d>0&&T6(a.g,b+1,a.g,b,d);wz(a.g,--a.i,null);a.vh(b,c);a.th();return c} +function Mad(a,b){var c,d;if(a.Db>>16==6){return a.Cb.Cg(a,5,uY,b)}return d=Wkd(kA(Gbd((c=kA(VNc(a,16),24),!c?a.Rg():c),a.Db>>16),17)),a.Cb.Cg(a,d.n,d.f,b)} +function Gq(b,c){var d,e;d=b.fd(c);try{e=d.ic();d.jc();return e}catch(a){a=w2(a);if(sA(a,101)){throw x2(new q3("Can't remove element "+c))}else throw x2(a)}} +function lob(a,b){var c,d,e;e=new ekb(new Rcb(xz(pz(NH,1),oJd,1700,0,[a,b])),16);d=new oob(e);c=new Zob(null,d);$nb(c,new sob(a));$nb(c,new uob(b));return c} +function xpb(a,b,c,d,e,f){var g,h,i;if(yA(a)===yA(c)){a=a.slice(b,b+e);b=0}for(h=b,i=b+e;h>22);e+=d>>22;if(e<0){return false}a.l=c&cLd;a.m=d&cLd;a.h=e&dLd;return true} +function Alb(a,b,c,d,e,f,g){var h,i;if(b.je()&&(i=a.a.Ld(c,d),i<0||!e&&i==0)){return false}if(b.ke()&&(h=a.a.Ld(c,f),h>0||!g&&h==0)){return false}return true} +function Jtb(){Jtb=d3;Gtb=new Ktb('NORTH',0);Ftb=new Ktb('EAST',1);Htb=new Ktb('SOUTH',2);Itb=new Ktb('WEST',3);Gtb.a=false;Ftb.a=true;Htb.a=false;Itb.a=true} +function Uub(){Uub=d3;Rub=new Vub('NORTH',0);Qub=new Vub('EAST',1);Sub=new Vub('SOUTH',2);Tub=new Vub('WEST',3);Rub.a=false;Qub.a=true;Sub.a=false;Tub.a=true} +function jHc(){jHc=d3;iHc=new lHc('UNKNOWN',0);fHc=new lHc('ABOVE',1);gHc=new lHc('BELOW',2);hHc=new lHc('INLINE',3);new EWc('org.eclipse.elk.labelSide',iHc)} +function EGb(a,b,c){if(!!c&&(b<0||b>c.a.c.length)){throw x2(new O4('index must be >= 0 and <= layer node count'))}!!a.c&&Abb(a.c.a,a);a.c=c;!!c&&sbb(c.a,b,a)} +function l0b(a){switch(a.g){case 0:return e0b;case 1:return f0b;case 2:return g0b;case 3:return h0b;case 4:return i0b;case 5:return j0b;default:return null;}} +function _nc(){_nc=d3;Xnc=new boc('P1_TREEIFICATION',0);Ync=new boc('P2_NODE_ORDERING',1);Znc=new boc('P3_NODE_PLACEMENT',2);$nc=new boc('P4_EDGE_ROUTING',3)} +function KRc(a,b,c){var d,e;d=(e=new Okd,l9c(e,b),wRc(e,c),fXc((!a.c&&(a.c=new zkd(vY,a,12,10)),a.c),e),e);n9c(d,0);q9c(d,1);p9c(d,true);o9c(d,true);return d} +function G9c(a,b){var c,d;if(a.Db>>16==17){return a.Cb.Cg(a,21,iY,b)}return d=Wkd(kA(Gbd((c=kA(VNc(a,16),24),!c?a.Rg():c),a.Db>>16),17)),a.Cb.Cg(a,d.n,d.f,b)} +function _w(a,b){var c,d,e;d=new Px;e=new Qx(d.q.getFullYear()-NKd,d.q.getMonth(),d.q.getDate());c=$w(a,b,e);if(c==0||c>16==6){return a.Cb.Cg(a,6,JV,b)}return d=Wkd(kA(Gbd((c=kA(VNc(a,16),24),!c?(uMc(),mMc):c),a.Db>>16),17)),a.Cb.Cg(a,d.n,d.f,b)} +function ISc(a,b){var c,d;if(a.Db>>16==7){return a.Cb.Cg(a,1,KV,b)}return d=Wkd(kA(Gbd((c=kA(VNc(a,16),24),!c?(uMc(),oMc):c),a.Db>>16),17)),a.Cb.Cg(a,d.n,d.f,b)} +function lTc(a,b){var c,d;if(a.Db>>16==9){return a.Cb.Cg(a,9,MV,b)}return d=Wkd(kA(Gbd((c=kA(VNc(a,16),24),!c?(uMc(),qMc):c),a.Db>>16),17)),a.Cb.Cg(a,d.n,d.f,b)} +function WPc(a,b){var c,d;if(a.Db>>16==3){return a.Cb.Cg(a,12,MV,b)}return d=Wkd(kA(Gbd((c=kA(VNc(a,16),24),!c?(uMc(),lMc):c),a.Db>>16),17)),a.Cb.Cg(a,d.n,d.f,b)} +function B8c(a,b){var c,d;if(a.Db>>16==3){return a.Cb.Cg(a,0,qY,b)}return d=Wkd(kA(Gbd((c=kA(VNc(a,16),24),!c?(j7c(),Q6c):c),a.Db>>16),17)),a.Cb.Cg(a,d.n,d.f,b)} +function YRc(a,b){var c,d;if(a.Db>>16==7){return a.Cb.Cg(a,6,uY,b)}return d=Wkd(kA(Gbd((c=kA(VNc(a,16),24),!c?(j7c(),c7c):c),a.Db>>16),17)),a.Cb.Cg(a,d.n,d.f,b)} +function Sgd(a,b){var c,d;if(a.Db>>16==5){return a.Cb.Cg(a,9,nY,b)}return d=Wkd(kA(Gbd((c=kA(VNc(a,16),24),!c?(j7c(),W6c):c),a.Db>>16),17)),a.Cb.Cg(a,d.n,d.f,b)} +function eyd(a,b){var c,d;if(b){if(b==a){return true}c=0;for(d=kA(b,42).yg();!!d&&d!=b;d=d.yg()){if(++c>wLd){return eyd(a,d)}if(d==a){return true}}}return false} +function Xwb(a){var b,c;b=kA(nub(a,(qyb(),jyb)),21);if(b){c=b.a;c==0?qub(a,(Byb(),Ayb),new akb):qub(a,(Byb(),Ayb),new bkb(c))}else{qub(a,(Byb(),Ayb),new bkb(1))}} +function IFb(a,b){var c;c=a.g;switch(b.g){case 1:return -(a.k.b+a.n.b);case 2:return a.k.a-c.n.a;case 3:return a.k.b-c.n.b;case 4:return -(a.k.a+a.n.a);}return 0} +function W8b(a,b,c,d){var e,f,g;if(a.a[b.o]!=-1){return}a.a[b.o]=c;a.b[b.o]=d;for(f=kl(zGb(b));So(f);){e=kA(To(f),14);if(JEb(e)){continue}g=e.d.g;W8b(a,g,c+1,d)}} +function gLc(a){bLc();switch(a.q.g){case 5:dLc(a,(FDc(),lDc));dLc(a,CDc);break;case 4:eLc(a,(FDc(),lDc));eLc(a,CDc);break;default:fLc(a,(FDc(),lDc));fLc(a,CDc);}} +function kLc(a){bLc();switch(a.q.g){case 5:hLc(a,(FDc(),kDc));hLc(a,EDc);break;case 4:iLc(a,(FDc(),kDc));iLc(a,EDc);break;default:jLc(a,(FDc(),kDc));jLc(a,EDc);}} +function j9c(a){var b;if((a.Bb&1)==0&&!!a.r&&a.r.Eg()){b=kA(a.r,42);a.r=kA(XMc(a,b),133);a.r!=b&&(a.Db&4)!=0&&(a.Db&1)==0&&vMc(a,new Mid(a,9,8,b,a.r))}return a.r} +function dUb(a,b,c){var d,e;d=b*c;if(sA(a.g,153)){e=vVb(a);if(e.f.d){e.f.a||(a.d.a+=d+gNd)}else{a.d.d-=d+gNd;a.d.a+=d+gNd}}else if(sA(a.g,8)){a.d.d-=d;a.d.a+=2*d}} +function $mc(){Nmc();this.c=new Gbb;this.i=new Gbb;this.e=new iib;this.f=new iib;this.g=new iib;this.j=new Gbb;this.a=new Gbb;this.b=(Es(),new Bgb);this.k=new Bgb} +function drc(a,b){var c,d,e,f;xEc(b,'Dull edge routing',1);for(f=sib(a.b,0);f.b!=f.d.c;){e=kA(Gib(f),76);for(d=sib(e.d,0);d.b!=d.d.c;){c=kA(Gib(d),170);xib(c.a)}}} +function aIc(a,b,c){var d;d=xz(pz(DA,1),vLd,22,15,[dIc(a,(KHc(),HHc),b,c),dIc(a,IHc,b,c),dIc(a,JHc,b,c)]);if(a.f){d[0]=$wnd.Math.max(d[0],d[2]);d[2]=d[0]}return d} +function vRc(){$Qc();var b,c;try{c=kA(Jkd((A6c(),z6c),lTd),1698);if(c){return c}}catch(a){a=w2(a);if(sA(a,104)){b=a;XYc((isd(),b))}else throw x2(a)}return new rRc} +function rpd(){$Qc();var b,c;try{c=kA(Jkd((A6c(),z6c),HVd),1635);if(c){return c}}catch(a){a=w2(a);if(sA(a,104)){b=a;XYc((isd(),b))}else throw x2(a)}return new npd} +function uBd(){YAd();var b,c;try{c=kA(Jkd((A6c(),z6c),kWd),1710);if(c){return c}}catch(a){a=w2(a);if(sA(a,104)){b=a;XYc((isd(),b))}else throw x2(a)}return new qBd} +function XSc(a,b){var c,d;if(a.Db>>16==11){return a.Cb.Cg(a,10,MV,b)}return d=Wkd(kA(Gbd((c=kA(VNc(a,16),24),!c?(uMc(),pMc):c),a.Db>>16),17)),a.Cb.Cg(a,d.n,d.f,b)} +function mjd(a,b){var c,d;if(a.Db>>16==10){return a.Cb.Cg(a,11,iY,b)}return d=Wkd(kA(Gbd((c=kA(VNc(a,16),24),!c?(j7c(),b7c):c),a.Db>>16),17)),a.Cb.Cg(a,d.n,d.f,b)} +function Nkd(a,b){var c,d;if(a.Db>>16==10){return a.Cb.Cg(a,12,tY,b)}return d=Wkd(kA(Gbd((c=kA(VNc(a,16),24),!c?(j7c(),d7c):c),a.Db>>16),17)),a.Cb.Cg(a,d.n,d.f,b)} +function uUc(a,b){var c,d,e,f,g;if(b){e=b.a.length;c=new uId(e);for(g=(c.b-c.a)*c.c<0?(tId(),sId):new QId(c);g.hc();){f=kA(g.ic(),21);d=XTc(b,f.a);!!d&&YUc(a,d)}}} +function Epd(){upd();var a,b;ypd((P6c(),O6c));xpd(O6c);ZRc(O6c);ihd=(j7c(),Z6c);for(b=new ccb(spd);b.a>19;j=b.h>>19;if(i!=j){return j-i}e=a.h;h=b.h;if(e!=h){return e-h}d=a.m;g=b.m;if(d!=g){return d-g}c=a.l;f=b.l;return c-f} +function rrb(a,b){var c,d,e;d=a.b.d.d;a.a||(d+=a.b.d.a);e=b.b.d.d;b.a||(e+=b.b.d.a);c=C4(d,e);if(c==0){if(!a.a&&b.a){return -1}else if(!b.a&&a.a){return 1}}return c} +function rBb(a,b){var c,d,e;d=a.b.g.d;a.a||(d+=a.b.g.a);e=b.b.g.d;b.a||(e+=b.b.g.a);c=C4(d,e);if(c==0){if(!a.a&&b.a){return -1}else if(!b.a&&a.a){return 1}}return c} +function Wtb(a,b,c,d){var e,f,g,h;for(e=0;eg&&(h=g/d);e>f&&(i=f/e);Dyc(a,$wnd.Math.min(h,i));return a} +function khd(a,b,c){var d,e;e=a.e;a.e=b;if((a.Db&4)!=0&&(a.Db&1)==0){d=new Mid(a,1,4,e,b);!c?(c=d):c.Sh(d)}e!=b&&(b?(c=thd(a,phd(a,b),c)):(c=thd(a,a.a,c)));return c} +function Yx(){Px.call(this);this.e=-1;this.a=false;this.p=oKd;this.k=-1;this.c=-1;this.b=-1;this.g=false;this.f=-1;this.j=-1;this.n=-1;this.i=-1;this.d=-1;this.o=oKd} +function rbc(a,b){var c,d;for(d=new ccb(b);d.a=0){c=C2(a,hLd);d=I2(a,hLd)}else{b=Q2(a,1);c=C2(b,500000000);d=I2(b,500000000);d=y2(O2(d,1),z2(a,1))}return N2(O2(d,32),z2(c,yLd))} +function esb(){esb=d3;dsb=(qsb(),nsb);csb=new FWc(qMd,dsb);bsb=(Trb(),Srb);asb=new FWc(rMd,bsb);_rb=(Lrb(),Krb);$rb=new FWc(sMd,_rb);Zrb=new FWc(tMd,(B3(),B3(),true))} +function GEb(a,b){if(b==a.c.g){return a.d.g}else if(b==a.d.g){return a.c.g}else{throw x2(new O4("'node' must either be the source node or target node of the edge."))}} +function ofc(a,b,c){var d,e;xEc(c,'Interactive node placement',1);a.a=kA(nub(b,(E2b(),v2b)),266);for(e=new ccb(b.b);e.a0){g=(f&jJd)%a.d.length;e=O1c(a,g,f,b);if(e){h=e.mc(c);return h}}d=a.Ii(f,b,c);a.c.nc(d);return null} +function utd(a,b){var c,d,e,f;switch(ptd(a,b).lk()){case 3:case 2:{c=xbd(b);for(e=0,f=c.i;e=0;d--){if(Z5(a[d].d,b)||Z5(a[d].d,c)){a.length>=d+1&&(a.splice(0,d+1),undefined);break}}return a} +function BJb(a,b,c){this.b=new Vj;this.i=new Gbb;this.d=new DJb(this);this.g=a;this.a=b.c.length;this.c=b;this.e=kA(xbb(this.c,this.c.c.length-1),8);this.f=c;zJb(this)} +function cVc(){this.a=new _Tc;this.g=new Gm;this.j=new Gm;this.b=(Es(),new Bgb);this.d=new Gm;this.i=new Gm;this.k=new Bgb;this.c=new Bgb;this.e=new Bgb;this.f=new Bgb} +function LVb(a){var b,c,d,e,f;for(d=new e9((new X8(a.b)).a);d.b;){c=c9(d);b=kA(c.kc(),8);f=kA(kA(c.lc(),48).a,8);e=kA(kA(c.lc(),48).b,9);vyc(Cyc(b.k),vyc(xyc(f.k),e))}} +function T$b(){T$b=d3;Q$b=new U$b('MEDIAN_LAYER',0);S$b=new U$b('WIDEST_LAYER',1);O$b=new U$b('CENTER_LAYER',2);R$b=new U$b('TAIL_LAYER',3);P$b=new U$b('HEAD_LAYER',4)} +function Gac(a){var b,c,d;for(c=new ccb(a.p);c.ac);return e} +function $Oc(a,b,c){switch(b){case 1:!a.n&&(a.n=new zkd(LV,a,1,7));r_c(a.n);!a.n&&(a.n=new zkd(LV,a,1,7));gXc(a.n,kA(c,13));return;case 2:aPc(a,pA(c));return;}yOc(a,b,c)} +function mPc(a,b,c){switch(b){case 3:oPc(a,Vpb(nA(c)));return;case 4:qPc(a,Vpb(nA(c)));return;case 5:rPc(a,Vpb(nA(c)));return;case 6:sPc(a,Vpb(nA(c)));return;}$Oc(a,b,c)} +function LRc(a,b,c){var d,e,f;f=(d=new Okd,d);e=k9c(f,b,null);!!e&&e.Th();wRc(f,c);fXc((!a.c&&(a.c=new zkd(vY,a,12,10)),a.c),f);n9c(f,0);q9c(f,1);p9c(f,true);o9c(f,true)} +function Rbd(a){var b;if((a.Db&64)!=0)return Yad(a);b=new B6(Yad(a));b.a+=' (abstract: ';x6(b,(a.Bb&256)!=0);b.a+=', interface: ';x6(b,(a.Bb&512)!=0);b.a+=')';return b.a} +function Jkd(a,b){var c,d,e;c=mhb(a.e,b);if(sA(c,207)){e=kA(c,207);e.gh()==null&&undefined;return e.dh()}else if(sA(c,456)){d=kA(c,1631);e=d.b;return e}else{return null}} +function nr(a,b){var c;this.f=a;this.b=this.f.c;c=a.d;Rb(b,c);if(b>=(c/2|0)){this.e=a.e;this.d=c;while(b++0){kr(this)}}this.a=null} +function sz(a,b,c,d,e,f,g){var h,i,j,k,l;k=e[f];j=f==g-1;h=j?d:0;l=uz(h,k);d!=10&&xz(pz(a,g-f),b[f],c[f],h,l);if(!j){++f;for(i=0;i0&&X5(b,b.length-1)==33){try{c=R5c(j6(b,0,b.length-1));return c.e==null}catch(a){a=w2(a);if(!sA(a,30))throw x2(a)}}return false} +function Jod(a,b,c){var d,e,f,g;c=MMc(b,a.e,-1-a.c,c);g=Cod(a.a);for(f=(d=new e9((new X8(g.a)).a),new $od(d));f.a.b;){e=kA(c9(f.a).kc(),84);c=thd(e,phd(e,a.a),c)}return c} +function Kod(a,b,c){var d,e,f,g;c=NMc(b,a.e,-1-a.c,c);g=Cod(a.a);for(f=(d=new e9((new X8(g.a)).a),new $od(d));f.a.b;){e=kA(c9(f.a).kc(),84);c=thd(e,phd(e,a.a),c)}return c} +function aBd(a){var b,c,d;if(a==null)return null;c=kA(a,15);if(c.Wb())return '';d=new z6;for(b=c.tc();b.hc();){w6(d,(qAd(),pA(b.ic())));d.a+=' '}return l3(d,d.a.length-1)} +function eBd(a){var b,c,d;if(a==null)return null;c=kA(a,15);if(c.Wb())return '';d=new z6;for(b=c.tc();b.hc();){w6(d,(qAd(),pA(b.ic())));d.a+=' '}return l3(d,d.a.length-1)} +function A8(a,b){u8();var c,d;d=(y7(),t7);c=a;for(;b>1;b>>=1){(b&1)!=0&&(d=F7(d,c));c.d==1?(c=F7(c,c)):(c=new O7(C8(c.a,c.d,tz(FA,OKd,22,c.d<<1,15,1))))}d=F7(d,c);return d} +function rDb(a,b){a.b.a=$wnd.Math.min(a.b.a,b.c);a.b.b=$wnd.Math.min(a.b.b,b.d);a.a.a=$wnd.Math.max(a.a.a,b.c);a.a.b=$wnd.Math.max(a.a.b,b.d);return a.c[a.c.length]=b,true} +function kEb(a){var b,c,d,e;e=-1;d=0;for(c=new ccb(a);c.a=0&&Z5(a.substr(b,'GMT'.length),'GMT')){c[0]=b+3;return cx(a,c,d)}if(b>=0&&Z5(a.substr(b,'UTC'.length),'UTC')){c[0]=b+3;return cx(a,c,d)}return cx(a,c,d)} +function Vjb(){Vjb=d3;var a,b,c,d;Sjb=tz(DA,vLd,22,25,15,1);Tjb=tz(DA,vLd,22,33,15,1);d=1.52587890625E-5;for(b=32;b>=0;b--){Tjb[b]=d;d*=0.5}c=1;for(a=24;a>=0;a--){Sjb[a]=c;c*=0.5}} +function owb(a,b,c){var d,e;d=(Lpb(b.b!=0),kA(wib(b,b.a.a),9));switch(c.g){case 0:d.b=0;break;case 2:d.b=a.f;break;case 3:d.a=0;break;default:d.a=a.g;}e=sib(b,0);Eib(e,d);return b} +function W6b(){W6b=d3;U6b=new Y6b(KQd,0);S6b=new Y6b('LONGEST_PATH',1);Q6b=new Y6b('COFFMAN_GRAHAM',2);R6b=new Y6b(vOd,3);V6b=new Y6b('STRETCH_WIDTH',4);T6b=new Y6b('MIN_WIDTH',5)} +function Vkc(a,b){var c,d,e,f;c=0;d=0;for(f=new ccb(b.b);f.ac;f--){a[f]|=b[f-c-1]>>>g;a[f-1]=b[f-c-1]<=a.f){break}f.c[f.c.length]=c}return f} +function Qdc(a,b,c){var d,e,f;f=0;d=c[b];if(b>4&15;f=a[d]&15;g[e++]=YQc[c];g[e++]=YQc[f]}return r6(g,0,g.length)}} +function OXc(a,b,c){var d,e,f,g,h;d=c._b();XXc(a,a.i+d);h=a.i-b;h>0&&T6(a.g,b,a.g,b+d,h);g=c.tc();a.i+=d;for(e=0;e=sLd){b=tLd+(a-sLd>>10&1023)&AKd;c=56320+(a-sLd&1023)&AKd;return String.fromCharCode(b)+(''+String.fromCharCode(c))}else{return String.fromCharCode(a&AKd)}} +function ixb(a){var b,c,d;d=a.e.c.length;a.a=rz(FA,[cKd,OKd],[37,22],15,[d,d],2);for(c=new ccb(a.c);c.a0&&pXb(this,this.c-1,(FDc(),kDc));this.c1&&(b.c[b.c.length]=f,true)}} +function zrc(a){var b,c,d;for(c=new a0c((!a.a&&(a.a=new zkd(MV,a,10,11)),a.a));c.e!=c.i._b();){b=kA($_c(c),35);d=SWc(b);if(!So((Zn(),new Zo(Rn(Dn(d.a,new Hn)))))){return b}}return null} +function MFc(a,b,c){var d,e;for(e=new a0c((!a.a&&(a.a=new zkd(MV,a,10,11)),a.a));e.e!=e.i._b();){d=kA($_c(e),35);pPc(d,d.i+b,d.j+c)}i5((!a.b&&(a.b=new zkd(JV,a,12,3)),a.b),new NFc(b,c))} +function dsc(a,b,c,d,e){var f,g,h;f=esc(a,b,c,d,e);h=false;while(!f){Xrc(a,e,true);h=true;f=esc(a,b,c,d,e)}h&&Xrc(a,e,false);g=Brc(e);if(g.c.length!=0){!!a.d&&a.d.If(g);dsc(a,e,c,d,g)}} +function lSc(a,b){var c;c=G8((A6c(),z6c),a);sA(c,456)?J8(z6c,a,new ykd(this,b)):J8(z6c,a,this);hSc(this,b);if(b==(N6c(),M6c)){this.wb=kA(this,1633);kA(b,1635)}else{this.wb=(P6c(),O6c)}} +function mpd(b){var c,d,e;if(b==null){return null}c=null;for(d=0;d0){c=d;d=(d-1)/2|0;if(a.a.Ld(xbb(a.b,d),b)<=0){Cbb(a.b,c,b);return true}Cbb(a.b,c,xbb(a.b,d))}Cbb(a.b,d,b);return true} +function G$b(a){var b,c,d,e;while(a.o.a.c.length!=0){c=kA(olb(a.o),48);d=kA(c.a,113);b=kA(c.b,189);e=AZb(b,d);if(b.e==d){QZb(e.g,b);d.e=e.e+b.a}else{QZb(e.b,b);d.e=e.e-b.a}tbb(a.e.a,d)}} +function dIc(a,b,c,d){var e,f;e=0;if(!c){for(f=0;fwLd){return byd(c)}d=c;if(c==a){throw x2(new Q4('There is a cycle in the containment hierarchy of '+a))}}}return d} +function tfb(){tfb=d3;rfb=xz(pz(UE,1),cKd,2,6,['Sun','Mon','Tue','Wed','Thu','Fri','Sat']);sfb=xz(pz(UE,1),cKd,2,6,['Jan','Feb','Mar','Apr',FKd,'Jun','Jul','Aug','Sep','Oct','Nov','Dec'])} +function Hlb(a,b,c,d){var e,f;f=b;e=f.d==null||a.a.Ld(c.d,f.d)>0?1:0;while(f.a[e]!=c){f=f.a[e];e=a.a.Ld(c.d,f.d)>0?1:0}f.a[e]=d;d.b=c.b;d.a[0]=c.a[0];d.a[1]=c.a[1];c.a[0]=null;c.a[1]=null} +function Wzb(){Wzb=d3;Rzb=new Xzb('P1_CYCLE_BREAKING',0);Szb=new Xzb('P2_LAYERING',1);Tzb=new Xzb('P3_NODE_ORDERING',2);Uzb=new Xzb('P4_NODE_PLACEMENT',3);Vzb=new Xzb('P5_EDGE_ROUTING',4)} +function jYb(a){var b,c;c=$wnd.Math.sqrt(a.f*(a.i==null&&(a.i=aZb(a,new gZb)),Vpb(a.i))/(a.b*(a.g==null&&(a.g=ZYb(a,new iZb)),Vpb(a.g))));b=U2(E2($wnd.Math.round(c)));b=x5(b,a.f);return b} +function Dmc(a){var b,c;ymc(this);c=a.k;b=vyc(new Jyc(c.a,c.b),a.n);this.d=$wnd.Math.min(c.b,b.b);this.a=$wnd.Math.max(c.b,b.b);this.b=$wnd.Math.min(c.a,b.a);this.c=$wnd.Math.max(c.a,b.a)} +function lm(a){var b,c;if(a.a>=a.c.c.length){return av(),_u}c=acb(a);if(a.a>=a.c.c.length){return new ov(c)}b=new iib;Ggb(b,Pb(c));do{Ggb(b,Pb(acb(a)))}while(a.a0&&bNb((Mpb(0,c.c.length),kA(c.c[0],26)),a);c.c.length>1&&bNb(kA(xbb(c,c.c.length-1),26),a);zEc(b)} +function jcc(a,b,c,d){var e,f,g,h,i;g=eec(a.a,b,c);h=kA(g.a,21).a;f=kA(g.b,21).a;if(d){i=kA(nub(b,(E2b(),p2b)),8);e=kA(nub(c,p2b),8);if(!!i&&!!e){kXb(a.b,i,e);h+=a.b.i;f+=a.b.e}}return h>f} +function msc(a,b){var c,d,e;if(Zrc(a,b)){return true}for(d=new ccb(b);d.af&&g6(j,l6(c[h],Wib))){e=h;f=i}}e>=0&&(d[0]=b+f);return e} +function ax(a,b){var c,d,e;e=0;d=b[0];if(d>=a.length){return -1}c=a.charCodeAt(d);while(c>=48&&c<=57){e=e*10+(c-48);++d;if(d>=a.length){break}c=a.charCodeAt(d)}d>b[0]?(b[0]=d):(e=-1);return e} +function zwb(a,b){var c,d,e;d=(Uub(),Rub);e=$wnd.Math.abs(a.b);c=$wnd.Math.abs(b.f-a.b);if(cuXb(a.d).c){a.i+=a.g.c;wXb(a.d)}else if(uXb(a.d).c>uXb(a.g).c){a.e+=a.d.c;wXb(a.g)}else{a.i+=tXb(a.g);a.e+=tXb(a.d);wXb(a.g);wXb(a.d)}}} +function J0b(){J0b=d3;H0b=new K0b(wOd,0);E0b=new K0b(xOd,1);I0b=new K0b(yOd,2);G0b=new K0b('LEFT_RIGHT_CONSTRAINT_LOCKING',3);F0b=new K0b('LEFT_RIGHT_CONNECTION_LOCKING',4);D0b=new K0b(zOd,5)} +function kmc(a){var b,c,d,e,f,g;d=hmc(gmc(a));b=oLd;f=0;e=0;while(b>0.5&&f<50){e=omc(d);c=$lc(d,e,true);b=$wnd.Math.abs(c.b);++f}g=nA(Fq(Vr(a.g),Vr(a.g).b-1));return $lc(a,(Npb(g),g)-e,false)} +function lmc(a){var b,c,d,e,f,g;d=hmc(gmc(a));b=oLd;f=0;e=0;while(b>0.5&&f<50){e=nmc(d);c=$lc(d,e,true);b=$wnd.Math.abs(c.a);++f}g=nA(Fq(Vr(a.g),Vr(a.g).b-1));return $lc(a,(Npb(g),g)-e,false)} +function vnc(a,b,c,d){a.a.d=$wnd.Math.min(b,c);a.a.a=$wnd.Math.max(b,d)-a.a.d;if(bh&&(i=h/d);e>f&&(j=f/e);g=$wnd.Math.min(i,j);a.a+=g*(b.a-a.a);a.b+=g*(b.b-a.b)} +function fyc(a,b){ayc();var c,d,e,f;if(b.b<2){return false}f=sib(b,0);c=kA(Gib(f),9);d=c;while(f.b!=f.d.c){e=kA(Gib(f),9);if(eyc(a,d,e)){return true}d=e}if(eyc(a,d,c)){return true}return false} +function wOc(a,b,c,d){var e,f;if(c==0){return !a.o&&(a.o=new T8c((uMc(),rMc),$V,a,0)),R8c(a.o,b,d)}return f=kA(Gbd((e=kA(VNc(a,16),24),!e?a.Rg():e),c),61),f.aj().ej(a,TNc(a),c-Lbd(a.Rg()),b,d)} +function eRc(a,b){var c;if(b!=a.a){c=null;!!a.a&&(c=kA(a.a,42).Cg(a,4,uY,null));!!b&&(c=kA(b,42).Ag(a,4,uY,c));c=_Qc(a,b,c);!!c&&c.Th()}else (a.Db&4)!=0&&(a.Db&1)==0&&vMc(a,new Mid(a,1,1,b,b))} +function MSc(a){var b;if((a.Db&64)!=0)return tPc(a);b=new O6(USd);!a.a||I6(I6((b.a+=' "',b),a.a),'"');I6(D6(I6(D6(I6(D6(I6(D6((b.a+=' (',b),a.i),','),a.j),' | '),a.g),','),a.f),')');return b.a} +function $Vc(a){var b,c,d,e,f,g,h,i,j;j=_Vc(a);c=a.e;f=c!=null;f&&STc(j,QTd,a.e);h=a.k;g=!!h;g&&STc(j,'type',Ss(a.k));d=bJd(a.j);e=!d;if(e){i=new fy;Ny(j,yTd,i);b=new kWc(i);i5(a.j,b)}return j} +function Fld(a,b){var c;if(b!=null&&!a.c.jj().Li(b)){c=sA(b,51)?kA(b,51).mg().zb:f4(mb(b));throw x2(new A4(ZSd+a.c.be()+"'s type '"+a.c.jj().be()+"' does not permit a value of type '"+c+"'"))}} +function Lg(a,b){var c,d,e,f;Npb(b);f=a.a._b();if(f>22-b;e=a.h<>22-b}else if(b<44){c=0;d=a.l<>44-b}else{c=0;d=0;e=a.l<>>e|c[g+d+1]<>>e;++g}return f} +function Ozb(a){Kzb();var b,c,d,e;d=kA(nub(a,(J6b(),Q4b)),318);e=Vpb(mA(nub(a,S4b)))||yA(nub(a,T4b))===yA((t_b(),r_b));b=kA(nub(a,P4b),21).a;c=a.a.c.length;return !e&&d!=(g1b(),d1b)&&(b==0||b>c)} +function aEb(a,b,c){var d,e;e=new s9(a.b,0);while(e.b=g){return ec.a._b()?kA(xbb(d,e-c.a._b()-1),8):null}}return null} +function hSc(a,b){var c;if(b!=a.sb){c=null;!!a.sb&&(c=kA(a.sb,42).Cg(a,1,oY,null));!!b&&(c=kA(b,42).Ag(a,1,oY,c));c=PRc(a,b,c);!!c&&c.Th()}else (a.Db&4)!=0&&(a.Db&1)==0&&vMc(a,new Mid(a,1,4,b,b))} +function kUc(a,b,c){var d,e,f,g,h;if(c){e=c.a.length;d=new uId(e);for(h=(d.b-d.a)*d.c<0?(tId(),sId):new QId(d);h.hc();){g=kA(h.ic(),21);f=XTc(c,g.a);xTd in f.a||yTd in f.a?WUc(a,f,b):_Uc(a,f,b)}}} +function u_b(a){switch(a.g){case 0:return new Ycc((cdc(),_cc));case 1:return new xcc;default:throw x2(new O4('No implementation is available for the crossing minimizer '+(a.f!=null?a.f:''+a.g)));}} +function HEd(a){FEd();var b,c,d,e,f;if(a==null)return null;d=a.length;e=d*2;b=tz(CA,yKd,22,e,15,1);for(c=0;c>4];b[c*2+1]=EEd[f&15]}return r6(b,0,b.length)} +function lHb(){fHb();XFb.call(this);this.i=(FDc(),DDc);this.a=new Hyc;new qGb;this.e=(Wj(2,hKd),new Hbb(2));this.d=(Wj(4,hKd),new Hbb(4));this.f=(Wj(4,hKd),new Hbb(4));this.c=new bIb(this.d,this.f)} +function AKb(a,b){var c,d;if(Vpb(mA(nub(b,(E2b(),u2b))))){return false}if(a==(K2b(),F2b)){d=b.c.g;if(d.j==(RGb(),NGb)){return false}c=kA(nub(d,(J6b(),r5b)),178);if(c==G2b){return false}}return true} +function BKb(a,b){var c,d;if(Vpb(mA(nub(b,(E2b(),u2b))))){return false}if(a==(K2b(),H2b)){d=b.d.g;if(d.j==(RGb(),NGb)){return false}c=kA(nub(d,(J6b(),r5b)),178);if(c==I2b){return false}}return true} +function rXb(a,b){var c,d,e;c=sXb(b,a.e);d=kA(F8(a.g.f,c),21).a;e=a.a.c.length-1;if(a.a.c.length!=0&&kA(xbb(a.a,e),269).c==d){++kA(xbb(a.a,e),269).a;++kA(xbb(a.a,e),269).b}else{tbb(a.a,new BXb(d))}} +function wyc(a,b,c,d,e){if(dd&&(a.a=d);a.be&&(a.b=e);return a} +function dWc(a){if(sA(a,180)){return YVc(kA(a,180))}else if(sA(a,199)){return ZVc(kA(a,199))}else if(sA(a,27)){return $Vc(kA(a,27))}else{throw x2(new O4(JTd+vg(new Rcb(xz(pz(NE,1),oJd,1,5,[a])))))}} +function DGb(a,b){switch(b.g){case 1:return yn(a.i,(fHb(),bHb));case 2:return yn(a.i,(fHb(),_Gb));case 3:return yn(a.i,(fHb(),dHb));case 4:return yn(a.i,(fHb(),eHb));default:return bdb(),bdb(),$cb;}} +function r8b(a){var b;this.a=a;b=(RGb(),xz(pz(QK,1),jKd,232,0,[PGb,OGb,MGb,QGb,NGb,KGb,LGb])).length;this.b=rz(XW,[cKd,MQd],[616,166],0,[b,b],2);this.c=rz(XW,[cKd,MQd],[616,166],0,[b,b],2);q8b(this)} +function Hkc(a){var b,c;c=kA(nub(a,(E2b(),X1b)),19);b=new yvc;if(c.pc((Z0b(),V0b))||Vpb(mA(nub(a,(J6b(),g5b))))){svc(b,Bkc);c.pc(W0b)&&svc(b,Ckc)}c.pc(P0b)&&svc(b,zkc);c.pc(R0b)&&svc(b,Akc);return b} +function npc(a,b,c){var d,e,f,g;if(b.b!=0){d=new yib;for(g=sib(b,0);g.b!=g.d.c;){f=kA(Gib(g),76);pg(d,voc(f));e=f.e;e.a=kA(nub(f,(Ppc(),Npc)),21).a;e.b=kA(nub(f,Opc),21).a}npc(a,d,BEc(c,d.b/a.a|0))}} +function DFc(a){var b,c,d;d=new Vyc;mib(d,new Jyc(a.j,a.k));for(c=new a0c((!a.a&&(a.a=new fdd(GV,a,5)),a.a));c.e!=c.i._b();){b=kA($_c(c),531);mib(d,new Jyc(b.a,b.b))}mib(d,new Jyc(a.b,a.c));return d} +function MUc(a,b,c,d,e){var f,g,h,i,j,k;if(e){i=e.a.length;f=new uId(i);for(k=(f.b-f.a)*f.c<0?(tId(),sId):new QId(f);k.hc();){j=kA(k.ic(),21);h=XTc(e,j.a);g=new BVc(a,b,c,d);yUc(g.a,g.b,g.c,g.d,h)}}} +function mm(a){nl();var b,c,d;d=new iib;cdb(d,a);for(c=d.a.Xb().tc();c.hc();){b=c.ic();Pb(b)}switch(d.a._b()){case 0:return av(),_u;case 1:return new ov(d.a.Xb().tc().ic());default:return new bv(d);}} +function F$b(a,b){var c,d,e;e=jJd;for(d=new ccb(OZb(b));d.a1&&(a.e.b+=a.a)}else{a.e.a+=c.a;a.e.b=$wnd.Math.max(a.e.b,c.b);a.d.c.length>1&&(a.e.a+=a.a)}} +function bsd(a,b,c){var d,e,f,g;f=kA(VNc(a.a,8),1629);if(f!=null){for(d=0,e=f.length;d1){throw x2(new O4('In straight spline segments there may be only one edge.'))}d=a.a.c;c=a.a.c+a.a.b;mib(kA(b.a.Xb().tc().ic(),14).a,new Jyc(d+(c-d)/2,a.b))} +function GXb(a,b,c,d){var e;this.b=d;this.e=a==(cdc(),adc);e=b[c];this.d=rz(u2,[cKd,$Md],[221,22],16,[e.length,e.length],2);this.a=rz(FA,[cKd,OKd],[37,22],15,[e.length,e.length],2);this.c=new qXb(b,c)} +function bZb(a){var b,c,d;if(a.a!=null){return}a.a=tz(u2,$Md,22,a.c.b.c.length,16,1);a.a[0]=false;d=new ccb(a.c.b);d.a>>b;e=a.m>>b|c<<22-b;d=a.l>>b|a.m<<22-b}else if(b<44){f=0;e=c>>>b-22;d=a.m>>b-22|a.h<<44-b}else{f=0;e=0;d=c>>>b-44}return Cz(d&cLd,e&cLd,f&dLd)} +function Vud(a,b,c){var d,e,f,g,h;h=yyd(a.e.mg(),b);e=kA(a.g,124);d=0;for(g=0;gc){return Jb(a,c,'start index')}if(b<0||b>c){return Jb(b,c,'end index')}return Vb('end index (%s) must not be less than start index (%s)',xz(pz(NE,1),oJd,1,5,[d5(b),d5(a)]))} +function Cf(a,b){var c,d,e;if(b===a){return true}if(!sA(b,109)){return false}e=kA(b,109);if(a._b()!=e._b()){return false}for(d=e.Tb().tc();d.hc();){c=kA(d.ic(),38);if(!a.Wc(c)){return false}}return true} +function zw(b,c){var d,e,f,g;for(e=0,f=b.length;e0?h[g-1]:tz(RK,VNd,8,0,0,1);e=h[g];j=g0&&i9b(a,f,c))}}b.o=0} +function Ykc(a,b){var c,d,e;for(e=new ccb(b.f);e.ab){throw x2(new O4('Top must be smaller or equal to bottom.'))}else if(0>a){throw x2(new O4('Left must be smaller or equal to right.'))}this.d=0;this.c=a;this.a=b;this.b=0} +function lsc(a,b){var c,d,e;if(b.c.length!=0){c=msc(a,b);e=false;while(!c){Xrc(a,b,true);e=true;c=msc(a,b)}e&&Xrc(a,b,false);d=Brc(b);!!a.b&&a.b.If(d);a.a=ksc(a,(Mpb(0,b.c.length),kA(b.c[0],35)));lsc(a,d)}} +function ixc(a){var b;this.c=new yib;this.f=a.e;this.e=a.d;this.i=a.g;this.d=a.c;this.b=a.b;this.k=a.j;this.a=a.a;!a.i?(this.j=(b=kA(e4(UT),10),new ngb(b,kA(ypb(b,b.length),10),0))):(this.j=a.i);this.g=a.f} +function Uxc(){Uxc=d3;Txc=new Vxc(LQd,0);Mxc=new Vxc('BOOLEAN',1);Qxc=new Vxc('INT',2);Sxc=new Vxc('STRING',3);Nxc=new Vxc('DOUBLE',4);Oxc=new Vxc('ENUM',5);Pxc=new Vxc('ENUMSET',6);Rxc=new Vxc('OBJECT',7)} +function uyd(){uyd=d3;ryd=xz(pz(UE,1),cKd,2,6,[$Vd,_Vd,aWd,bWd,cWd,dWd,QTd]);qyd=xz(pz(UE,1),cKd,2,6,[$Vd,'empty',_Vd,wVd,'elementOnly']);tyd=xz(pz(UE,1),cKd,2,6,[$Vd,'preserve','replace',eWd]);syd=new ztd} +function Ke(a,b){var c;c=kA(a.c.Vb(b),13);!c&&(c=a.Pc(b));return sA(c,196)?new Li(a,b,kA(c,196)):sA(c,60)?new Ji(a,b,kA(c,60)):sA(c,19)?new Mi(a,b,kA(c,19)):sA(c,15)?Qe(a,b,kA(c,15),null):new Uh(a,b,c,null)} +function nub(a,b){var c,d;d=(!a.p&&(a.p=(Es(),new Bgb)),F8(a.p,b));if(d!=null){return d}c=b.Of();sA(c,4)&&(c==null?(!a.p&&(a.p=(Es(),new Bgb)),K8(a.p,b)):(!a.p&&(a.p=(Es(),new Bgb)),I8(a.p,b,c)),a);return c} +function yPb(a,b){var c,d,e,f;if(a.e.c.length==0){return null}else{f=new oyc;for(d=new ccb(a.e);d.a=(e/2|0)){this.e=!d?null:d.c;this.d=e;while(c++0){yr(this)}}this.b=b;this.a=null} +function ntb(a){var b,c,d,e,f;e=kA(a.a,21).a;f=kA(a.b,21).a;b=(e<0?-e:e)>(f<0?-f:f)?e<0?-e:e:f<0?-f:f;if(e<=0&&e==f){c=0;d=f-1}else{if(e==-b&&f!=b){c=f;d=e;f>=0&&++c}else{c=-f;d=e}}return new fGc(d5(c),d5(d))} +function Dgc(a,b){var c;if(a.c.length==0){return false}c=k7b((Mpb(0,a.c.length),kA(a.c[0],14)).c.g);Rfc();if(c==(h7b(),e7b)||c==d7b){return true}return Mob(Tob(new Zob(null,new ekb(a,16)),new Lgc),new Ngc(b))} +function Fnc(a,b,c){var d,e,f;if(!a.b[b.g]){a.b[b.g]=true;d=c;!c&&(d=new toc);mib(d.b,b);for(f=a.a[b.g].tc();f.hc();){e=kA(f.ic(),170);e.b!=b&&Fnc(a,e.b,d);e.c!=b&&Fnc(a,e.c,d);mib(d.a,e)}return d}return null} +function TJc(a){switch(a.g){case 0:case 1:case 2:return FDc(),lDc;case 3:case 4:case 5:return FDc(),CDc;case 6:case 7:case 8:return FDc(),EDc;case 9:case 10:case 11:return FDc(),kDc;default:return FDc(),DDc;}} +function gqb(a){var b,c,d,e;b=0;d=a.length;e=d-4;c=0;while(c0){try{f=H3(c,oKd,jJd)}catch(a){a=w2(a);if(sA(a,118)){e=a;throw x2(new t6c(e))}else throw x2(a)}}d=(!b.a&&(b.a=new Asd(b)),b.a);return f=0?kA(WXc(d,f),51):null} +function gx(a,b,c,d){var e;e=Zw(a,c,xz(pz(UE,1),cKd,2,6,[RKd,SKd,TKd,UKd,VKd,WKd,XKd]),b);e<0&&(e=Zw(a,c,xz(pz(UE,1),cKd,2,6,['Sun','Mon','Tue','Wed','Thu','Fri','Sat']),b));if(e<0){return false}d.d=e;return true} +function jx(a,b,c,d){var e;e=Zw(a,c,xz(pz(UE,1),cKd,2,6,[RKd,SKd,TKd,UKd,VKd,WKd,XKd]),b);e<0&&(e=Zw(a,c,xz(pz(UE,1),cKd,2,6,['Sun','Mon','Tue','Wed','Thu','Fri','Sat']),b));if(e<0){return false}d.d=e;return true} +function pBb(a){var b,c,d;mBb(a);d=new Gbb;for(c=new ccb(a.a.a.b);c.a>1);Bcb(b,a,i,j,-e,f);Bcb(b,a,j,h,-e,f);if(f.Ld(a[j-1],a[j])<=0){while(c=0){if(!b){b=new A6;d>0&&w6(b,a.substr(0,d))}b.a+='\\';s6(b,c&AKd)}else !!b&&s6(b,c&AKd)}return b?b.a:a} +function Kkc(a,b,c){var d,e,f,g;f=a.c;g=a.d;e=(Pyc(xz(pz(aU,1),cKd,9,0,[f.g.k,f.k,f.a])).b+Pyc(xz(pz(aU,1),cKd,9,0,[g.g.k,g.k,g.a])).b)/2;f.i==(FDc(),kDc)?(d=new Jyc(b+f.g.c.c.a+c,e)):(d=new Jyc(b-c,e));Dq(a.a,0,d)} +function vrc(a,b){var c,d;Wuc(a.a);Zuc(a.a,(lrc(),jrc),jrc);Zuc(a.a,krc,krc);d=new yvc;tvc(d,krc,(Qrc(),Prc));yA(AOc(b,(otc(),gtc)))!==yA((Msc(),Jsc))&&tvc(d,krc,Nrc);tvc(d,krc,Orc);Tuc(a.a,d);c=Uuc(a.a,b);return c} +function dz(a){if(!a){return xy(),wy}var b=a.valueOf?a.valueOf():a;if(b!==a){var c=_y[typeof b];return c?c(b):gz(typeof b)}else if(a instanceof Array||a instanceof $wnd.Array){return new gy(a)}else{return new Qy(a)}} +function G7(a,b){var c;if(b<0){throw x2(new o3('Negative exponent'))}if(b==0){return t7}else if(b==1||B7(a,t7)||B7(a,x7)){return a}if(!J7(a,0)){c=1;while(!J7(a,c)){++c}return F7(U7(c*b),G7(I7(a,c),b))}return A8(a,b)} +function eUb(a,b){var c,d,e;if(sA(b.g,8)&&kA(b.g,8).j==(RGb(),MGb)){return oLd}e=vVb(b);if(e){return $wnd.Math.max(0,a.b/2-0.5)}c=uVb(b);if(c){d=Vpb(nA(s8b(c,(J6b(),t6b))));return $wnd.Math.max(0,d/2-0.5)}return oLd} +function gUb(a,b){var c,d,e;if(sA(b.g,8)&&kA(b.g,8).j==(RGb(),MGb)){return oLd}e=vVb(b);if(e){return $wnd.Math.max(0,a.b/2-0.5)}c=uVb(b);if(c){d=Vpb(nA(s8b(c,(J6b(),t6b))));return $wnd.Math.max(0,d/2-0.5)}return oLd} +function KVb(a,b){var c,d,e,f,g;if(b.Wb()){return}e=kA(b.cd(0),125);if(b._b()==1){JVb(a,e,e,1,0,b);return}c=1;while(cf.a&&!b&&(e.b=f.a);e.c=-(e.b-f.a)/2;switch(c.g){case 1:e.d=-e.a;break;case 3:e.d=f.b;}LIc(d);MIc(d)} +function uKc(a,b,c){var d,e,f;f=a.o;d=kA(Cfb(a.p,c),219);e=d.i;e.b=KIc(d);e.a=JIc(d);e.a=$wnd.Math.max(e.a,f.b);e.a>f.b&&!b&&(e.a=f.b);e.d=-(e.a-f.b)/2;switch(c.g){case 4:e.c=-e.b;break;case 2:e.c=f.a;}LIc(d);MIc(d)} +function Edd(a,b){Add(a,b);(a.b&1)!=0&&(a.a.a=null);(a.b&2)!=0&&(a.a.f=null);if((a.b&4)!=0){a.a.g=null;a.a.i=null}if((a.b&16)!=0){a.a.d=null;a.a.e=null}(a.b&8)!=0&&(a.a.b=null);if((a.b&32)!=0){a.a.j=null;a.a.c=null}} +function fyd(b){var c,d,e,f;d=kA(b,42).Kg();if(d){try{e=null;c=Kkd((A6c(),z6c),N5c(O5c(d)));if(c){f=c.Lg();!!f&&(e=f.gk(pA(Vpb(d.e))))}if(!!e&&e!=b){return fyd(e)}}catch(a){a=w2(a);if(!sA(a,54))throw x2(a)}}return b} +function Yp(a,b){var c;b.d?(b.d.b=b.b):(a.a=b.b);b.b?(b.b.d=b.d):(a.e=b.d);if(!b.e&&!b.c){c=kA(K8(a.b,b.a),264);c.a=0;++a.c}else{c=kA(F8(a.b,b.a),264);--c.a;!b.e?(c.b=b.c):(b.e.c=b.c);!b.c?(c.c=b.e):(b.c.e=b.e)}--a.d} +function l7(a){var b,c;if(a>-140737488355328&&a<140737488355328){if(a==0){return 0}b=a<0;b&&(a=-a);c=zA($wnd.Math.floor($wnd.Math.log(a)/0.6931471805599453));(!b||a!=$wnd.Math.pow(2,c))&&++c;return c}return m7(E2(a))} +function Cjb(a,b){var c,d,e,f,g,h;c=a.b.c.length;e=xbb(a.b,b);while(b*2+10){g=a.c.d;h=a.d.d;e=Dyc(Gyc(new Jyc(h.a,h.b),g),1/(d+1));f=new Jyc(g.a,g.b);for(c=new ccb(a.a);c.a0){g+=c;++b}}b>1&&(g+=a.c*(b-1))}else{g=qjb(gob(Uob(Pob(Gcb(a.a),new ZIc),new _Ic)))}return g>0?g+a.n.d+a.n.a:0} +function KIc(a){var b,c,d,e,f,g;g=0;if(a.b==0){g=qjb(gob(Uob(Pob(Gcb(a.a),new VIc),new XIc)))}else{f=OIc(a,true);b=0;for(d=0,e=f.length;d0){g+=c;++b}}b>1&&(g+=a.c*(b-1))}return g>0?g+a.n.b+a.n.c:0} +function xx(a){var b,c;c=-a.a;b=xz(pz(CA,1),yKd,22,15,[43,48,48,48,48]);if(c<0){b[0]=45;c=-c}b[1]=b[1]+((c/60|0)/10|0)&AKd;b[2]=b[2]+(c/60|0)%10&AKd;b[3]=b[3]+(c%60/10|0)&AKd;b[4]=b[4]+c%10&AKd;return r6(b,0,b.length)} +function vXb(a){var b,c,d,e,f,g;g=aec(a.d,a.e);for(f=g.tc();f.hc();){e=kA(f.ic(),11);d=a.e==(FDc(),EDc)?e.d:e.f;for(c=new ccb(d);c.a=0;f+=c?1:-1){g=g|b.c.qf(i,f,c,d);g=g|b.q.xf(i,f,c);g=g|Vcc(a,i[f],c,d)}Ggb(a.c,b);return g} +function FQb(a,b){var c,d,e,f,g,h;for(f=new ccb(a.b);f.a=0&&f0){b=kA(a.k.cd(a.n-1),75);c=b.nj();if(sA(c,62)&&(kA(kA(c,17),62).Bb&bTd)!=0&&(!a.e||c.Vi()!=FV||c.pi()!=0)&&b.lc()!=null){return true}else{--a.n}}return false}else{return a.n>0}} +function REd(a,b){var c,d,e,f;LEd(a);if(a.c!=0||a.a!=123)throw x2(new KEd(WYc((isd(),kUd))));f=b==112;d=a.d;c=a6(a.i,125,d);if(c<0)throw x2(new KEd(WYc((isd(),lUd))));e=j6(a.i,d,c);a.d=c+1;return hHd(e,f,(a.e&512)==512)} +function wx(a){var b,c;c=-a.a;b=xz(pz(CA,1),yKd,22,15,[43,48,48,58,48,48]);if(c<0){b[0]=45;c=-c}b[1]=b[1]+((c/60|0)/10|0)&AKd;b[2]=b[2]+(c/60|0)%10&AKd;b[4]=b[4]+(c%60/10|0)&AKd;b[5]=b[5]+c%10&AKd;return r6(b,0,b.length)} +function zx(a){var b;b=xz(pz(CA,1),yKd,22,15,[71,77,84,45,48,48,58,48,48]);if(a<=0){b[3]=43;a=-a}b[4]=b[4]+((a/60|0)/10|0)&AKd;b[5]=b[5]+(a/60|0)%10&AKd;b[7]=b[7]+(a%60/10|0)&AKd;b[8]=b[8]+a%10&AKd;return r6(b,0,b.length)} +function oMb(a,b){var c,d,e;d=new IGb(a);lub(d,b);qub(d,(E2b(),U1b),b);qub(d,(J6b(),Z5b),(VCc(),QCc));qub(d,I4b,(ezc(),azc));GGb(d,(RGb(),MGb));c=new lHb;jHb(c,d);kHb(c,(FDc(),EDc));e=new lHb;jHb(e,d);kHb(e,kDc);return d} +function rac(a,b){var c,d,e,f,g;a.c[b.o]=true;tbb(a.a,b);for(g=new ccb(b.i);g.a0&&(e=c);for(g=new ccb(a.f.e);g.a=f){g.Pb()}else{e=g.tc();for(d=0;d0?lj():g<0&&Tt(a,b,-g);return true}else{return false}} +function Ytb(a){var b,c,d,e,f,g,h,i,j,k;c=a.o;b=a.p;g=jJd;e=oKd;h=jJd;f=oKd;for(j=0;jj?e:j;h=hk?f:k}}}i=e-g+1;d=f-h+1;return new qGc(d5(g),d5(h),d5(i),d5(d))} +function Nwb(a,b){var c,d,e;c=kA(nub(b,(qyb(),iyb)),21).a-kA(nub(a,iyb),21).a;if(c==0){d=Gyc(xyc(kA(nub(a,(Byb(),xyb)),9)),kA(nub(a,yyb),9));e=Gyc(xyc(kA(nub(b,xyb),9)),kA(nub(b,yyb),9));return C4(d.a*d.b,e.a*e.b)}return c} +function Lnc(a,b){var c,d,e;c=kA(nub(b,(fqc(),aqc)),21).a-kA(nub(a,aqc),21).a;if(c==0){d=Gyc(xyc(kA(nub(a,(Ppc(),wpc)),9)),kA(nub(a,xpc),9));e=Gyc(xyc(kA(nub(b,wpc),9)),kA(nub(b,xpc),9));return C4(d.a*d.b,e.a*e.b)}return c} +function RKb(a,b,c){var d,e,f,g,h,i;if(!a||a.c.length==0){return null}f=new GIc(b,!c);for(e=new ccb(a);e.a0){switch(b.g){case 2:f.n.c=a.s;break;case 4:f.n.b=a.s;}}} +function UMc(a,b){var c,d,e;e=ftd((uyd(),syd),a.mg(),b);if(e){wyd();kA(e,61).bj()||(e=aud(rtd(syd,e)));d=(c=a.rg(e),kA(c>=0?a.ug(c,true,true):TMc(a,e,true),184));return kA(d,237).wk(b)}else{throw x2(new O4(ZSd+b.be()+aTd))}} +function SUc(a,b,c){var d,e,f,g;f=hwc(kwc(),b);d=null;if(f){g=hxc(f,c);e=null;g!=null&&(e=(g==null?(!a.o&&(a.o=new T8c((uMc(),rMc),$V,a,0)),a2c(a.o,f)):(!a.o&&(a.o=new T8c((uMc(),rMc),$V,a,0)),Y1c(a.o,f,g)),a));d=e}return d} +function O1c(a,b,c,d){var e,f,g,h,i;e=a.d[b];if(e){f=e.g;i=e.i;if(d!=null){for(h=0;h1||c==-1){a.b=-1;return true}else{b=j9c(a);if(!!b&&(wyd(),b.Ri()==gVd)){a.b=-1;return true}else{a.b=1;return false}}}default:case 1:{return false}}} +function ltd(a,b){var c,d,e,f,g;d=(!b.s&&(b.s=new zkd(zY,b,21,17)),b.s);f=null;for(e=0,g=d.i;ee){return Lpb(f.a!=null),kA(f.a,8)}}return null} +function bWb(a,b){IVb();var c,d,e,f,g,h;c=null;for(g=b.tc();g.hc();){f=kA(g.ic(),125);if(f.k){continue}d=lyc(f.a);e=jyc(f.a);h=new fXb(d,e,null,kA(f.d.a.Xb().tc().ic(),14));tbb(h.c,f.a);a.c[a.c.length]=h;!!c&&tbb(c.d,h);c=h}} +function q9b(a,b,c){var d,e,f,g,h,i;d=kA(Ke(a.c,b),15);e=kA(Ke(a.c,c),15);f=d.fd(d._b());g=e.fd(e._b());while(f.Cc()&&g.Cc()){h=kA(f.Ec(),21);i=kA(g.Ec(),21);if(h!=i){return U4(h.a,i.a)}}return !f.hc()&&!g.hc()?0:f.hc()?1:-1} +function Zud(a,b,c,d,e){var f,g,h,i;i=Yud(a,kA(e,51));if(yA(i)!==yA(e)){h=kA(a.g[c],75);f=xyd(b,i);SXc(a,c,ovd(a,c,f));if(PMc(a.e)){g=Gud(a,9,f.nj(),e,i,d,false);n$c(g,new Oid(a.e,9,a.c,h,f,d,false));o$c(g)}return i}return e} +function qLc(a,b,c){var d,e,f,g;e=c;f=fob(Uob(kA(kA(Ke(a.r,b),19),60).xc(),new tLc));g=0;while(f.a||(f.a=Cob(f.c,f)),f.a){if(e){Kkb(f);e=false;continue}else{d=Kkb(f);f.a||(f.a=Cob(f.c,f));f.a&&(g=$wnd.Math.max(g,d))}}return g} +function Le(a,b,c){var d;d=kA(a.c.Vb(b),13);if(!d){d=a.Pc(b);if(d.nc(c)){++a.d;a.c.Zb(b,d);return true}else{throw x2(new y3('New Collection violated the Collection spec'))}}else if(d.nc(c)){++a.d;return true}else{return false}} +function Cac(a){var b,c,d,e,f,g;e=0;a.q=new Gbb;b=new Jgb;for(g=new ccb(a.p);g.a>16);b=d>>16&16;c=16-b;a=a>>b;d=a-256;b=d>>16&8;c+=b;a<<=b;d=a-qLd;b=d>>16&4;c+=b;a<<=b;d=a-RJd;b=d>>16&2;c+=b;a<<=b;d=a>>14;b=d&~(d>>1);return c+2-b}} +function Ztb(a,b,c,d){var e,f,g,h,i,j;for(e=0;e=0&&j>=0&&i=0?a.ug(d,true,true):TMc(a,f,true),184));return kA(e,237).sk(b,c)}else{throw x2(new O4(ZSd+b.be()+aTd))}} +function lSb(a){var b,c;if(XCc(kA(nub(a,(J6b(),Z5b)),83))){for(c=new ccb(a.i);c.a>24}return g} +function L0c(a,b){var c,d,e,f,g;c=kA(VNc(a.a,4),116);g=c==null?0:c.length;if(b>=g)throw x2(new Z_c(b,g));e=c[b];if(g==1){d=null}else{d=tz(eX,PUd,380,g-1,0,1);T6(c,0,d,0,b);f=g-b-1;f>0&&T6(c,b+1,d,b,f)}csd(a,d);bsd(a,b,e);return e} +function mcb(a,b){var c,d,e;if(yA(a)===yA(b)){return true}if(a==null||b==null){return false}if(a.length!=b.length){return false}for(c=0;c=null.tl()){xYc(a);return vsd(a)}else{return b.hc()}} +function Cmc(a){var b,c;if(Bn(a)){throw x2(new O4(bRd))}for(c=sib(a,0);c.b!=c.d.c;){b=kA(Gib(c),9);this.d=$wnd.Math.min(this.d,b.b);this.c=$wnd.Math.max(this.c,b.a);this.a=$wnd.Math.max(this.a,b.b);this.b=$wnd.Math.min(this.b,b.a)}} +function Umc(a){var b,c;b=new yvc;svc(b,Hmc);c=kA(nub(a,(E2b(),X1b)),19);c.pc((Z0b(),Y0b))&&svc(b,Mmc);c.pc(P0b)&&svc(b,Imc);if(c.pc(V0b)||Vpb(mA(nub(a,(J6b(),g5b))))){svc(b,Kmc);c.pc(W0b)&&svc(b,Lmc)}c.pc(R0b)&&svc(b,Jmc);return b} +function Huc(a){var b,c;b=pA(AOc(a,($Ac(),Czc)));c=ewc(kwc(),b);if(!c){if(b==null||b.length==0){throw x2(new Nuc('No layout algorithm has been specified ('+a+').'))}else{throw x2(new Nuc('Layout algorithm not found: '+b))}}return c} +function Ozd(){Ozd=d3;Mzd=kA(WXc(Ibd((Tzd(),Szd).qb),6),29);Jzd=kA(WXc(Ibd(Szd.qb),3),29);Kzd=kA(WXc(Ibd(Szd.qb),4),29);Lzd=kA(WXc(Ibd(Szd.qb),5),17);J9c(Mzd);J9c(Jzd);J9c(Kzd);J9c(Lzd);Nzd=new Rcb(xz(pz(zY,1),sVd,158,0,[Mzd,Jzd]))} +function fw(b){var c=(!dw&&(dw=gw()),dw);var d=b.replace(/[\x00-\x1f\xad\u0600-\u0603\u06dd\u070f\u17b4\u17b5\u200b-\u200f\u2028-\u202e\u2060-\u2064\u206a-\u206f\ufeff\ufff9-\ufffb"\\]/g,function(a){return ew(a,c)});return '"'+d+'"'} +function Hwb(a){var b,c,d,e,f,g;e=a.e.c.length;d=tz(mG,ZMd,15,e,0,1);for(g=new ccb(a.e);g.a=0;){d=c[f];g.Bk(d.nj())&&fXc(e,d)}!u_c(a,e)&&PMc(a.e)&&ocd(a,b.lj()?Gud(a,6,b,(bdb(),$cb),null,-1,false):Gud(a,b.Zi()?2:1,b,null,null,-1,false))} +function uLb(a,b){var c,d,e,f,g;if(a.a==(J0b(),H0b)){return true}f=b.a.c;c=b.a.c+b.a.b;if(b.i){d=b.u;g=d.c.c.a-d.n.a/2;e=f-(d.k.a+d.n.a);if(e>g){return false}}if(b.n){d=b.v;g=d.c.c.a-d.n.a/2;e=d.k.a-c;if(e>g){return false}}return true} +function CMb(a,b,c){var d,e,f,g,h,i;d=0;i=c;if(!b){d=c*(a.c.length-1);i*=-1}for(f=new ccb(a);f.a1?(a.e*=Vpb(a.a)):(a.f/=Vpb(a.a));Gub(a);Hub(a);Dub(a);qub(a.b,(Fvb(),xvb),a.g)} +function $vb(a){Tvb();var b,c,d,e;Svb=new Gbb;Rvb=(Es(),new Bgb);Qvb=new Gbb;b=(!a.a&&(a.a=new zkd(MV,a,10,11)),a.a);Vvb(b);for(e=new a0c(b);e.e!=e.i._b();){d=kA($_c(e),35);if(ybb(Svb,d,0)==-1){c=new Gbb;tbb(Qvb,c);Wvb(d,c)}}return Qvb} +function WNc(a,b){var c,d,e,f,g,h,i;d=T4(a.Db&254);if(d==1){a.Eb=null}else{f=lA(a.Eb);if(d==2){e=UNc(a,b);a.Eb=f[e==0?1:0]}else{g=tz(NE,oJd,1,d-1,5,1);for(c=2,h=0,i=0;c<=128;c<<=1){c==b?++h:(a.Db&c)!=0&&(g[i++]=f[h++])}a.Eb=g}}a.Db&=~b} +function n_c(a,b,c){var d,e,f;if(a.ti()){f=a.ui();QXc(a,b,c);d=a.mi(3,null,c,b,f);if(a.qi()){e=a.ri(c,null);a.xi()&&(e=a.yi(c,e));if(!e){a.ni(d)}else{e.Sh(d);e.Th()}}else{a.ni(d)}}else{QXc(a,b,c);if(a.qi()){e=a.ri(c,null);!!e&&e.Th()}}} +function o_c(a,b){var c,d,e,f;if(a.ti()){c=a.i;f=a.ui();RXc(a,b);d=a.mi(3,null,b,c,f);if(a.qi()){e=a.ri(b,null);a.xi()&&(e=a.yi(b,e));if(!e){a.ni(d)}else{e.Sh(d);e.Th()}}else{a.ni(d)}}else{RXc(a,b);if(a.qi()){e=a.ri(b,null);!!e&&e.Th()}}} +function mq(a,b){var c,d,e,f,g;if(b===a){return true}if(!sA(b,15)){return false}g=kA(b,15);if(a._b()!=g._b()){return false}f=g.tc();for(d=a.tc();d.hc();){c=d.ic();e=f.ic();if(!(yA(c)===yA(e)||c!=null&&kb(c,e))){return false}}return true} +function J7(a,b){var c,d,e;if(b==0){return (a.a[0]&1)!=0}if(b<0){throw x2(new o3('Negative bit address'))}e=b>>5;if(e>=a.d){return a.e<0}c=a.a[e];b=1<<(b&31);if(a.e<0){d=D7(a);if(e=0?a.jg(null):a.yg().Cg(a,-1-b,null,null));a.kg(kA(e,42),c);!!d&&d.Th();a.eg()&&a.fg()&&c>-1&&vMc(a,new Mid(a,9,c,f,e));return e}}}return f} +function uWc(){uWc=d3;tWc=new vWc(AOd,0);qWc=new vWc('INSIDE_SELF_LOOPS',1);rWc=new vWc('MULTI_EDGES',2);pWc=new vWc('EDGE_LABELS',3);sWc=new vWc('PORTS',4);nWc=new vWc('COMPOUND',5);mWc=new vWc('CLUSTERS',6);oWc=new vWc('DISCONNECTED',7)} +function kid(a){var b,c;if(a.f){while(a.n>16)),15).dd(f);if(h0){!(hBc(a.a.c)&&b.n.d)&&!(iBc(a.a.c)&&b.n.b)&&(b.g.d+=$wnd.Math.max(0,d/2-0.5));!(hBc(a.a.c)&&b.n.a)&&!(iBc(a.a.c)&&b.n.c)&&(b.g.a-=d-1)}}} +function vPb(a,b,c){var d,e,f,g,h,i;f=kA(xbb(b.d,0),14).c;d=f.g;e=d.j;i=kA(xbb(c.f,0),14).d;g=i.g;h=g.j;e==(RGb(),OGb)?qub(a,(E2b(),e2b),kA(nub(d,e2b),11)):qub(a,(E2b(),e2b),f);h==OGb?qub(a,(E2b(),f2b),kA(nub(g,f2b),11)):qub(a,(E2b(),f2b),i)} +function Fmc(a){var b,c,d;ymc(this);if(a.length==0){throw x2(new O4(bRd))}for(c=0,d=a.length;c>b;f=a.m>>b|c<<22-b;e=a.l>>b|a.m<<22-b}else if(b<44){g=d?dLd:0;f=c>>b-22;e=a.m>>b-22|c<<44-b}else{g=d?dLd:0;f=d?cLd:0;e=c>>b-44}return Cz(e&cLd,f&cLd,g&dLd)} +function $ub(a){var b,c,d,e,f,g;this.c=new Gbb;this.d=a;d=oLd;e=oLd;b=pLd;c=pLd;for(g=sib(a,0);g.b!=g.d.c;){f=kA(Gib(g),9);d=$wnd.Math.min(d,f.a);e=$wnd.Math.min(e,f.b);b=$wnd.Math.max(b,f.a);c=$wnd.Math.max(c,f.b)}this.a=new pyc(d,e,b-d,c-e)} +function fZb(a){var b,c,d;this.c=a;d=kA(nub(a,(J6b(),W4b)),110);b=Vpb(nA(nub(a,J4b)));c=Vpb(nA(nub(a,A6b)));d==(gBc(),cBc)||d==dBc||d==eBc?(this.b=b*c):(this.b=1/(b*c));this.j=Vpb(nA(nub(a,u6b)));this.e=Vpb(nA(nub(a,t6b)));this.f=a.b.c.length} +function v7b(a){switch(a.g){case 0:return new Vhc;case 1:return new pfc;case 2:return new Ffc;case 3:return new Nic;case 4:return new kgc;default:throw x2(new O4('No implementation is available for the node placer '+(a.f!=null?a.f:''+a.g)));}} +function aNc(a){var b;b=new O6(f4(a.ql));b.a+='@';I6(b,(ob(a)>>>0).toString(16));if(a.Eg()){b.a+=' (eProxyURI: ';H6(b,a.Kg());if(a.tg()){b.a+=' eClass: ';H6(b,a.tg())}b.a+=')'}else if(a.tg()){b.a+=' (eClass: ';H6(b,a.tg());b.a+=')'}return b.a} +function c3c(a,b){var c,d,e,f,g,h,i,j,k;if(a.a.f>0&&sA(b,38)){a.a.Fi();j=kA(b,38);i=j.kc();f=i==null?0:ob(i);g=V1c(a.a,f);c=a.a.d[g];if(c){d=kA(c.g,339);k=c.i;for(h=0;h0&&e0}else if(e<0&&-e0}return false} +function lKc(a,b,c,d,e){var f,g,h,i,j,k;f=d;for(j=kA(kA(Ke(a.r,b),19),60).tc();j.hc();){i=kA(j.ic(),111);if(f){f=false;continue}g=0;e>0?(g=e):!!i.c&&(g=BIc(i.c));if(g>0){if(c){k=i.b.Re().a;if(g>k){h=(g-k)/2;i.d.b=h;i.d.c=h}}else{i.d.c=a.s+g}}}} +function LPc(a,b,c){switch(b){case 7:!a.e&&(a.e=new pxd(JV,a,7,4));r_c(a.e);!a.e&&(a.e=new pxd(JV,a,7,4));gXc(a.e,kA(c,13));return;case 8:!a.d&&(a.d=new pxd(JV,a,8,5));r_c(a.d);!a.d&&(a.d=new pxd(JV,a,8,5));gXc(a.d,kA(c,13));return;}mPc(a,b,c)} +function Fgc(a){var b,c;if(a.c.length!=2){throw x2(new Q4('Order only allowed for two paths.'))}b=(Mpb(0,a.c.length),kA(a.c[0],14));c=(Mpb(1,a.c.length),kA(a.c[1],14));if(b.d.g!=c.c.g){a.c=tz(NE,oJd,1,0,5,1);a.c[a.c.length]=c;a.c[a.c.length]=b}} +function iBd(a){var b,c,d,e;if(a==null){return null}else{d=mId(a,true);e=tWd.length;if(Z5(d.substr(d.length-e,e),tWd)){c=d.length;if(c==4){b=d.charCodeAt(0);if(b==43){return VAd}else if(b==45){return UAd}}else if(c==3){return VAd}}return G3(d)}} +function fDb(a,b,c){var d;d=null;!!b&&(d=b.d);rDb(a,new FBb(b.k.a-d.b+c.a,b.k.b-d.d+c.b));rDb(a,new FBb(b.k.a-d.b+c.a,b.k.b+b.n.b+d.a+c.b));rDb(a,new FBb(b.k.a+b.n.a+d.c+c.a,b.k.b-d.d+c.b));rDb(a,new FBb(b.k.a+b.n.a+d.c+c.a,b.k.b+b.n.b+d.a+c.b))} +function kSb(a,b){var c,d,e,f,g;xEc(b,'Port side processing',1);for(g=new ccb(a.a);g.ai-c&&h=a.c.a.length){return b}d=H6(I6(new M6,'expected one element but was: <'),b);for(c=0;c<4&&a.a=0?a.Mg(f,c):VMc(a,e,c)}else{throw x2(new O4(ZSd+e.be()+$Sd))}}else{GMc(a,d,e,c)}} +function twb(a,b,c,d,e){var f,g,h,i,j,k,l,m,n;g=c-a;h=d-b;f=$wnd.Math.atan2(g,h);i=f+YMd;j=f-YMd;k=e*$wnd.Math.sin(i)+a;m=e*$wnd.Math.cos(i)+b;l=e*$wnd.Math.sin(j)+a;n=e*$wnd.Math.cos(j)+b;return Sr(xz(pz(aU,1),cKd,9,0,[new Jyc(k,m),new Jyc(l,n)]))} +function _yb(a){var b,c,d,e,f,g,h;f=0;e=a.f.e;for(c=0;c=0){return e}else{f=1;for(h=new ccb(b.i);h.ai+1?f:i+1}}}T9b(a,b,f);return f}} +function yCc(){yCc=d3;qCc=new zCc('H_LEFT',0);pCc=new zCc('H_CENTER',1);sCc=new zCc('H_RIGHT',2);xCc=new zCc('V_TOP',3);wCc=new zCc('V_CENTER',4);vCc=new zCc('V_BOTTOM',5);tCc=new zCc('INSIDE',6);uCc=new zCc('OUTSIDE',7);rCc=new zCc('H_PRIORITY',8)} +function AOc(a,b){var c,d;d=(!a.o&&(a.o=new T8c((uMc(),rMc),$V,a,0)),S1c(a.o,b));if(d!=null){return d}c=b.Of();sA(c,4)&&(c==null?(!a.o&&(a.o=new T8c((uMc(),rMc),$V,a,0)),a2c(a.o,b)):(!a.o&&(a.o=new T8c((uMc(),rMc),$V,a,0)),Y1c(a.o,b,c)),a);return c} +function dyd(a){var b,c,d,e,f,g,h;b=a.Yg(HVd);if(b){h=pA(S1c((!b.b&&(b.b=new f9c((j7c(),f7c),CZ,b)),b.b),'settingDelegates'));if(h!=null){c=new Gbb;for(e=f6(h,'\\w+'),f=0,g=e.length;f0){b-=1;c-=1}else{if(d>=0&&e<0){b+=1;c+=1}else{if(d>0&&e>=0){b-=1;c+=1}else{b+=1;c-=1}}}}}return new fGc(d5(b),d5(c))} +function LFb(a,b,c){var d,e,f;if(b==c){return}d=b;do{vyc(a,d.c);e=kA(nub(d,(E2b(),n2b)),8);if(e){f=d.d;uyc(a,f.b,f.d);vyc(a,e.k);d=uGb(e)}}while(e);d=c;do{Gyc(a,d.c);e=kA(nub(d,(E2b(),n2b)),8);if(e){f=d.d;Fyc(a,f.b,f.d);Gyc(a,e.k);d=uGb(e)}}while(e)} +function jKb(a,b,c){var d,e,f,g,h,i;d=new Gbb;d.c[d.c.length]=b;i=b;h=0;do{i=oKb(a,i);!!i&&(d.c[d.c.length]=i,true);++h}while(i);g=(c-(d.c.length-1)*a.d.d)/d.c.length;for(f=new ccb(d);f.ab.c){return 1}else if(a.bb.b){return 1}else if(a.a!=b.a){return ob(a.a)-ob(b.a)}else if(a.d==(Wec(),Vec)&&b.d==Uec){return -1}else if(a.d==Uec&&b.d==Vec){return 1}return 0} +function bic(a){var b,c,d,e,f,g,h,i;e=oLd;d=pLd;for(c=new ccb(a.e.b);c.a=0;b-=2){for(c=0;c<=b;c+=2){if(a.b[c]>a.b[c+2]||a.b[c]===a.b[c+2]&&a.b[c+1]>a.b[c+3]){d=a.b[c+2];a.b[c+2]=a.b[c];a.b[c]=d;d=a.b[c+3];a.b[c+3]=a.b[c+1];a.b[c+1]=d}}}a.c=true} +function yAb(a,b){var c,d,e,f,g,h,i,j;g=b==1?oAb:nAb;for(f=g.a.Xb().tc();f.hc();){e=kA(f.ic(),110);for(i=kA(Ke(a.f.c,e),19).tc();i.hc();){h=kA(i.ic(),48);d=kA(h.b,80);j=kA(h.a,172);c=j.c;switch(e.g){case 2:case 1:d.g.d+=c;break;case 4:case 3:d.g.c+=c;}}}} +function GEd(a){FEd();var b,c,d,e,f,g,h;if(a==null)return null;e=a.length;if(e%2!=0)return null;b=k6(a);f=e/2|0;c=tz(BA,jTd,22,f,15,1);for(d=0;d>24}return c} +function Kkd(a,b){var c,d,e;c=b==null?Of(Wgb(a.d,null)):mhb(a.e,b);if(sA(c,207)){e=kA(c,207);e.gh()==null&&undefined;return e}else if(sA(c,456)){d=kA(c,1631);e=d.a;!!e&&(e.yb==null?undefined:b==null?Xgb(a.d,null,e):nhb(a.e,b,e));return e}else{return null}} +function sud(a,b){var c,d,e,f,g;d=b.nj();if(zyd(a.e,d)){if(d.xh()&&Dud(a,d,b.lc())){return false}}else{g=yyd(a.e.mg(),d);c=kA(a.g,124);for(e=0;e0){!(hBc(a.a.c)&&b.n.d)&&!(iBc(a.a.c)&&b.n.b)&&(b.g.d-=$wnd.Math.max(0,d/2-0.5));!(hBc(a.a.c)&&b.n.a)&&!(iBc(a.a.c)&&b.n.c)&&(b.g.a+=$wnd.Math.max(0,d-1))}}} +function JQb(a,b,c){var d,e;if((a.c-a.b&a.a.length-1)==2){if(b==(FDc(),lDc)||b==kDc){zQb(kA(Uab(a),15),(jHc(),fHc));zQb(kA(Uab(a),15),gHc)}else{zQb(kA(Uab(a),15),(jHc(),gHc));zQb(kA(Uab(a),15),fHc)}}else{for(e=new mbb(a);e.a!=e.b;){d=kA(kbb(e),15);zQb(d,c)}}} +function ayd(a){var b,c,d,e,f,g,h;if(a){b=a.Yg(HVd);if(b){g=pA(S1c((!b.b&&(b.b=new f9c((j7c(),f7c),CZ,b)),b.b),'conversionDelegates'));if(g!=null){h=new Gbb;for(d=f6(g,'\\w+'),e=0,f=d.length;e=2147483648&&(d-=zLd);return d}} +function XXb(a,b,c){var d,e,f,g;if(_Xb(a,b)>_Xb(a,c)){d=AGb(c,(FDc(),kDc));a.d=d.Wb()?0:hHb(kA(d.cd(0),11));g=AGb(b,EDc);a.b=g.Wb()?0:hHb(kA(g.cd(0),11))}else{e=AGb(c,(FDc(),EDc));a.d=e.Wb()?0:hHb(kA(e.cd(0),11));f=AGb(b,kDc);a.b=f.Wb()?0:hHb(kA(f.cd(0),11))}} +function GMb(a){var b,c,d,e,f,g;e=kA(xbb(a.i,0),11);if(e.d.c.length+e.f.c.length==0){a.k.a=0}else{g=0;for(d=kl(wn(new NHb(e),new VHb(e)));So(d);){c=kA(To(d),11);g+=c.g.k.a+c.k.a+c.a.a}b=kA(nub(a,(J6b(),X5b)),9);f=!b?0:b.a;a.k.a=g/(e.d.c.length+e.f.c.length)-f}} +function X6b(a){switch(a.g){case 0:return new wac;case 1:return new V9b;case 2:return new w9b;case 3:return new J9b;case 4:return new Kac;case 5:return new eac;default:throw x2(new O4('No implementation is available for the layerer '+(a.f!=null?a.f:''+a.g)));}} +function eLc(a,b){var c,d,e,f;c=a.o.a;for(f=kA(kA(Ke(a.r,b),19),60).tc();f.hc();){e=kA(f.ic(),111);e.e.a=c*Vpb(nA(e.b.xe(aLc)));e.e.b=(d=e.b,d.ye(($Ac(),AAc))?d.ef()==(FDc(),lDc)?-d.Re().b-Vpb(nA(d.xe(AAc))):Vpb(nA(d.xe(AAc))):d.ef()==(FDc(),lDc)?-d.Re().b:0)}} +function v8(a,b){u8();var c,d,e,f,g,h,i,j,k;if(b.d>a.d){h=a;a=b;b=h}if(b.d<63){return z8(a,b)}g=(a.d&-2)<<4;j=I7(a,g);k=I7(b,g);d=p8(a,H7(j,g));e=p8(b,H7(k,g));i=v8(j,k);c=v8(d,e);f=v8(p8(j,d),p8(e,k));f=k8(k8(f,i),c);f=H7(f,g);i=H7(i,g<<1);return k8(k8(i,f),c)} +function Pvb(a,b,c){var d,e,f;kub.call(this,new Gbb);this.a=b;this.b=c;this.e=a;d=(a.b&&Oub(a),a.a);this.d=Nvb(d.a,this.a);this.c=Nvb(d.b,this.b);cub(this,this.d,this.c);Ovb(this);for(f=this.e.e.a.Xb().tc();f.hc();){e=kA(f.ic(),247);e.c.c.length>0&&Mvb(this,e)}} +function mgc(a){var b,c,d,e;b=0;c=0;for(e=new ccb(a.i);e.a1||c>1){return 2}}if(b+c==1){return 2}return 0} +function Zhc(a,b,c){var d,e,f,g,h,i,j;d=c;e=b;do{e=a.a[e.o];g=(j=a.g[e.o],Vpb(a.p[j.o])+Vpb(a.d[e.o])-e.d.d);h=aic(e,!e.c?-1:ybb(e.c.a,e,0));if(h){f=(i=a.g[h.o],Vpb(a.p[i.o])+Vpb(a.d[h.o])+h.n.b+h.d.a);d=$wnd.Math.min(d,g-(f+l8b(a.k,e,h)))}}while(b!=e);return d} +function $hc(a,b,c){var d,e,f,g,h,i,j;d=c;e=b;do{e=a.a[e.o];f=(j=a.g[e.o],Vpb(a.p[j.o])+Vpb(a.d[e.o])+e.n.b+e.d.a);h=_hc(e,!e.c?-1:ybb(e.c.a,e,0));if(h){g=(i=a.g[h.o],Vpb(a.p[i.o])+Vpb(a.d[h.o])-h.d.d);d=$wnd.Math.min(d,g-(f+l8b(a.k,e,h)))}}while(b!=e);return d} +function hKc(a,b,c){var d,e,f,g;e=c;f=fob(Uob(kA(kA(Ke(a.r,b),19),60).xc(),new mKc));g=0;while(f.a||(f.a=Cob(f.c,f)),f.a){if(e){Lpb((f.a||(f.a=Cob(f.c,f)),f.a));f.a=false;e=false;continue}else{d=Kkb(f);f.a||(f.a=Cob(f.c,f));f.a&&(g=$wnd.Math.max(g,d))}}return g} +function pUc(a,b,c){var d,e,f,g,h,i,j,k;if(c){f=c.a.length;d=new uId(f);for(h=(d.b-d.a)*d.c<0?(tId(),sId):new QId(d);h.hc();){g=kA(h.ic(),21);e=XTc(c,g.a);!!e&&(i=RUc(a,(j=(gMc(),k=new pTc,k),!!b&&nTc(j,b),j),e),aPc(i,ZTc(e,HTd)),aVc(e,i),bVc(e,i),ZUc(a,e,i))}}} +function wtb(a){var b,c,d;c=kA(a.a,21).a;d=kA(a.b,21).a;b=(c<0?-c:c)>(d<0?-d:d)?c<0?-c:c:d<0?-d:d;if(c=-b&&d==b){return new fGc(d5(c-1),d5(d))}return new fGc(d5(c),d5(d-1))} +function sMb(a){var b,c,d,e,f,g;g=kA(Fbb(a.a,tz(RK,VNd,8,a.a.c.length,0,1)),123);Ecb(g,new xMb);c=null;for(e=0,f=g.length;ed.o?kHb(e,CDc):e.i==CDc&&d.o>a.o&&kHb(e,lDc);break}}return d} +function akc(a,b,c){var d,e,f;for(f=new ccb(a.e);f.a0){d.b.c-=d.c;d.b.c<=0&&d.b.f>0&&mib(b,d.b)}}for(e=new ccb(a.b);e.a0){d.a.f-=d.c;d.a.f<=0&&d.a.c>0&&mib(c,d.a)}}} +function dnc(a,b,c){var d,e,f;for(f=new ccb(a.q);f.a0){d.b.j-=d.c;d.b.j<=0&&d.b.r>0&&mib(b,d.b)}}for(e=new ccb(a.g);e.a0){d.a.r-=d.c;d.a.r<=0&&d.a.j>0&&mib(c,d.a)}}} +function xYc(a){var b,c,d,e,f;if(a.g==null){a.d=a.Gh(a.f);fXc(a,a.d);if(a.c){f=a.f;return f}}b=kA(a.g[a.i-1],43);e=b.ic();a.e=b;c=a.Gh(e);if(c.hc()){a.d=c;fXc(a,c)}else{a.d=null;while(!b.hc()){wz(a.g,--a.i,null);if(a.i==0){break}d=kA(a.g[a.i-1],43);b=d}}return e} +function Vb(a,b){var c,d,e,f;a=a;c=new N6;f=0;d=0;while(d=0?a.ug(d,true,true):TMc(a,f,true),184));kA(e,237).xk(b,c)}else{throw x2(new O4(ZSd+b.be()+$Sd))}} +function kDb(a,b,c){switch(c.g){case 1:return new Jyc(b.a,$wnd.Math.min(a.d.b,b.b));case 2:return new Jyc($wnd.Math.max(a.c.a,b.a),b.b);case 3:return new Jyc(b.a,$wnd.Math.max(a.c.b,b.b));case 4:return new Jyc($wnd.Math.min(b.a,a.d.a),b.b);}return new Jyc(b.a,b.b)} +function SWc(a){var b,c,d;b=Tr(1+(!a.c&&(a.c=new zkd(NV,a,9,9)),a.c).i);tbb(b,(!a.d&&(a.d=new pxd(JV,a,8,5)),a.d));for(d=new a0c((!a.c&&(a.c=new zkd(NV,a,9,9)),a.c));d.e!=d.i._b();){c=kA($_c(d),121);tbb(b,(!c.d&&(c.d=new pxd(JV,c,8,5)),c.d))}return Pb(b),new ll(b)} +function TWc(a){var b,c,d;b=Tr(1+(!a.c&&(a.c=new zkd(NV,a,9,9)),a.c).i);tbb(b,(!a.e&&(a.e=new pxd(JV,a,7,4)),a.e));for(d=new a0c((!a.c&&(a.c=new zkd(NV,a,9,9)),a.c));d.e!=d.i._b();){c=kA($_c(d),121);tbb(b,(!c.e&&(c.e=new pxd(JV,c,7,4)),c.e))}return Pb(b),new ll(b)} +function KYb(a,b){var c,d,e,f,g;xEc(b,'Breaking Point Processor',1);JYb(a);if(Vpb(mA(nub(a,(J6b(),G6b))))){for(e=new ccb(a.b);e.a3&&nx(a,0,b-3)}} +function Kz(a){var b,c,d;c=a.l;if((c&c-1)!=0){return -1}d=a.m;if((d&d-1)!=0){return -1}b=a.h;if((b&b-1)!=0){return -1}if(b==0&&d==0&&c==0){return -1}if(b==0&&d==0&&c!=0){return _4(c)}if(b==0&&d!=0&&c==0){return _4(d)+22}if(b!=0&&d==0&&c==0){return _4(b)+44}return -1} +function ZQb(a,b){var c,d,e,f,g;xEc(b,'Edge joining',1);c=Vpb(mA(nub(a,(J6b(),y6b))));for(e=new ccb(a.b);e.a0);f.a.cd(f.c=--f.b);r9(f,e);Lpb(f.b_Qd;i=k_Qd;i=k_Qd;i=k_Qd;i=k=0){if(b==c){return new fGc(d5(-b-1),d5(-b-1))}if(b==-c){return new fGc(d5(-b),d5(c+1))}}if((b<0?-b:b)>(c<0?-c:c)){if(b<0){return new fGc(d5(-b),d5(c))}return new fGc(d5(-b),d5(c+1))}return new fGc(d5(b+1),d5(c))} +function PEc(a,b,c){var d,e,f,g,h;e=kA(AOc(b,(vzc(),tzc)),21);!e&&(e=d5(0));f=kA(AOc(c,tzc),21);!f&&(f=d5(0));if(e.a>f.a){return -1}else if(e.a1){b=p$b((c=new r$b,++a.b,c),a.d);for(h=sib(f,0);h.b!=h.d.c;){g=kA(Gib(h),113);DZb(GZb(FZb(HZb(EZb(new IZb,1),0),b),g))}}} +function TYb(a,b,c){var d,e,f,g,h;xEc(c,'Breaking Point Removing',1);a.a=kA(nub(b,(J6b(),a5b)),197);for(f=new ccb(b.b);f.a>16!=6&&!!b){if(eyd(a,b))throw x2(new O4(fTd+AQc(a)));d=null;!!a.Cb&&(d=(c=a.Db>>16,c>=0?mQc(a,null):a.Cb.Cg(a,-1-c,null,null)));!!b&&(d=MMc(b,a,6,d));d=lQc(a,b,d);!!d&&d.Th()}else (a.Db&4)!=0&&(a.Db&1)==0&&vMc(a,new Mid(a,1,6,b,b))} +function aQc(a,b){var c,d;if(b!=a.Cb||a.Db>>16!=3&&!!b){if(eyd(a,b))throw x2(new O4(fTd+bQc(a)));d=null;!!a.Cb&&(d=(c=a.Db>>16,c>=0?WPc(a,null):a.Cb.Cg(a,-1-c,null,null)));!!b&&(d=MMc(b,a,12,d));d=VPc(a,b,d);!!d&&d.Th()}else (a.Db&4)!=0&&(a.Db&1)==0&&vMc(a,new Mid(a,1,3,b,b))} +function nTc(a,b){var c,d;if(b!=a.Cb||a.Db>>16!=9&&!!b){if(eyd(a,b))throw x2(new O4(fTd+oTc(a)));d=null;!!a.Cb&&(d=(c=a.Db>>16,c>=0?lTc(a,null):a.Cb.Cg(a,-1-c,null,null)));!!b&&(d=MMc(b,a,9,d));d=kTc(a,b,d);!!d&&d.Th()}else (a.Db&4)!=0&&(a.Db&1)==0&&vMc(a,new Mid(a,1,9,b,b))} +function _Sc(a,b){var c,d;if(b!=a.Cb||a.Db>>16!=11&&!!b){if(eyd(a,b))throw x2(new O4(fTd+aTc(a)));d=null;!!a.Cb&&(d=(c=a.Db>>16,c>=0?XSc(a,null):a.Cb.Cg(a,-1-c,null,null)));!!b&&(d=MMc(b,a,10,d));d=WSc(a,b,d);!!d&&d.Th()}else (a.Db&4)!=0&&(a.Db&1)==0&&vMc(a,new Mid(a,1,11,b,b))} +function UUc(a,b){if(sA(b,246)){return gUc(a,kA(b,35))}else if(sA(b,187)){return hUc(a,kA(b,121))}else if(sA(b,263)){return fUc(a,kA(b,137))}else if(sA(b,183)){return eUc(a,kA(b,105))}else if(b){return null}else{throw x2(new O4(JTd+vg(new Rcb(xz(pz(NE,1),oJd,1,5,[null])))))}} +function YVc(a){var b,c,d,e,f,g,h,i,j,k,l;l=_Vc(a);b=a.a;i=b!=null;i&&STc(l,'category',a.a);e=bJd(new G9(a.d));g=!e;if(g){j=new fy;Ny(l,'knownOptions',j);c=new eWc(j);i5(new G9(a.d),c)}f=bJd(a.g);h=!f;if(h){k=new fy;Ny(l,'supportedFeatures',k);d=new gWc(k);i5(a.g,d)}return l} +function MVb(a,b,c){var d,e,f;for(e=new ccb(a.a.b);e.ai){k=a.d;a.d=tz(EX,RUd,55,2*i+4,0,1);for(f=0;f=9223372036854775807){return fA(),bA}e=false;if(a<0){e=true;a=-a}d=0;if(a>=gLd){d=zA(a/gLd);a-=d*gLd}c=0;if(a>=fLd){c=zA(a/fLd);a-=c*fLd}b=zA(a);f=Cz(b,c,d);e&&Iz(f);return f} +function _oc(a,b,c){var d,e,f,g,h,i;if(!Bn(b)){i=BEc(c,(sA(b,13)?kA(b,13)._b():mo(b.tc()))/a.a|0);xEc(i,jRd,1);h=new cpc;g=0;for(f=b.tc();f.hc();){d=kA(f.ic(),76);h=wn(h,new Aoc(d));gnOd;f=d-gnOd;if(e||f){i=kA(b.e,249).b;g=kA(b.e,249).a;h=kA(b.d,129);if(i==0&&g==0){return h}}}}return h} +function sSb(a,b,c,d){var e,f,g,h;g=new IGb(a);GGb(g,(RGb(),OGb));qub(g,(E2b(),i2b),b);qub(g,(J6b(),Z5b),(VCc(),QCc));qub(g,e2b,c);qub(g,f2b,d);f=new lHb;kHb(f,(FDc(),EDc));jHb(f,g);h=new lHb;kHb(h,kDc);jHb(h,g);MEb(b,f);e=new PEb;lub(e,b);qub(e,p5b,null);LEb(e,h);MEb(e,d);return g} +function Fkc(a,b,c,d,e){var f,g;if(!JEb(b)&&b.c.g.c==b.d.g.c||!zyc(Pyc(xz(pz(aU,1),cKd,9,0,[e.g.k,e.k,e.a])),c)){b.c==e?Dq(b.a,0,new Kyc(c)):mib(b.a,new Kyc(c));if(d&&!Hgb(a.a,c)){g=kA(nub(b,(J6b(),p5b)),74);if(!g){g=new Vyc;qub(b,p5b,g)}f=new Kyc(c);pib(g,f,g.c.b,g.c);Ggb(a.a,f)}}} +function trb(a,b){var c,d;d=vmb(a.b,b.b);if(!d){throw x2(new Q4('Invalid hitboxes for scanline constraint calculation.'))}(nrb(b.b,kA(xmb(a.b,b.b),57))||nrb(b.b,kA(wmb(a.b,b.b),57)))&&(S6(),b.b+' has overlap.');a.a[b.b.f]=kA(zmb(a.b,b.b),57);c=kA(ymb(a.b,b.b),57);!!c&&(a.a[c.f]=b.b)} +function JVb(a,b,c,d,e,f){var g,h,i,j,k,l,m,n,o,p,q,r;k=d;if(b.i&&b.k){n=kA(F8(a.f,b.u),57);p=n.d.c+n.d.b;--k}else{p=b.a.c+b.a.b}l=e;if(c.n&&c.k){n=kA(F8(a.f,c.v),57);j=n.d.c;++l}else{j=c.a.c}q=j-p;i=2>l-k?2:l-k;h=q/i;o=p+h;for(m=k;m>16!=7&&!!b){if(eyd(a,b))throw x2(new O4(fTd+MSc(a)));d=null;!!a.Cb&&(d=(c=a.Db>>16,c>=0?ISc(a,null):a.Cb.Cg(a,-1-c,null,null)));!!b&&(d=kA(b,42).Ag(a,1,KV,d));d=HSc(a,b,d);!!d&&d.Th()}else (a.Db&4)!=0&&(a.Db&1)==0&&vMc(a,new Mid(a,1,7,b,b))} +function D8c(a,b){var c,d;if(b!=a.Cb||a.Db>>16!=3&&!!b){if(eyd(a,b))throw x2(new O4(fTd+G8c(a)));d=null;!!a.Cb&&(d=(c=a.Db>>16,c>=0?B8c(a,null):a.Cb.Cg(a,-1-c,null,null)));!!b&&(d=kA(b,42).Ag(a,0,qY,d));d=A8c(a,b,d);!!d&&d.Th()}else (a.Db&4)!=0&&(a.Db&1)==0&&vMc(a,new Mid(a,1,3,b,b))} +function VAb(a){var b,c,d,e,f,g,h;for(f=new ccb(a.a.a);f.a0&&f>0?(g.o=b++):d>0?(g.o=c++):f>0?(g.o=e++):(g.o=c++);}}bdb();Dbb(a.i,new RRb)} +function Euc(a,b){var c,d,e;e=(!b.a&&(b.a=new zkd(MV,b,10,11)),b.a).i;for(d=new a0c((!b.a&&(b.a=new zkd(MV,b,10,11)),b.a));d.e!=d.i._b();){c=kA($_c(d),35);yA(AOc(c,($Ac(),Vzc)))!==yA((jCc(),iCc))&&Cvc(Huc(b),Huc(c))&&((!c.a&&(c.a=new zkd(MV,c,10,11)),c.a).i==0||(e+=Euc(a,c)))}return e} +function Vsd(a,b){var c,d,e;c=b.Yg(a.a);if(c){e=pA(S1c((!c.b&&(c.b=new f9c((j7c(),f7c),CZ,c)),c.b),'affiliation'));if(e!=null){d=d6(e,o6(35));return d==-1?mtd(a,vtd(a,Nad(b.Wi())),e):d==0?mtd(a,null,e.substr(1,e.length-1)):mtd(a,e.substr(0,d),e.substr(d+1,e.length-(d+1)))}}return null} +function _nb(a){var b,c,d,e,f;f=new Gbb;wbb(a.b,new tpb(f));a.b.c=tz(NE,oJd,1,0,5,1);if(f.c.length!=0){b=(Mpb(0,f.c.length),kA(f.c[0],78));for(c=1,d=f.c.length;c=a.a){return -1}if(!jNb(b,c)){return -1}if(Bn(kA(d.Kb(b),20))){return 1}e=0;for(g=kA(d.Kb(b),20).tc();g.hc();){f=kA(g.ic(),14);i=f.c.g==b?f.d.g:f.c.g;h=kNb(a,i,c,d);if(h==-1){return -1}e=e>h?e:h;if(e>a.c-1){return -1}}return e+1} +function hcc(a,b,c,d){var e,f,g,h,i,j,k,l,m;l=d?(FDc(),EDc):(FDc(),kDc);e=false;for(i=b[c],j=0,k=i.length;j>5;b&=31;if(d>=a.d){return a.e<0?(y7(),s7):(y7(),x7)}f=a.d-d;e=tz(FA,OKd,22,f+1,15,1);d8(e,f,a.a,d,b);if(a.e<0){for(c=0;c0&&a.a[c]<<32-b!=0){for(c=0;c0){f=kA(xbb(this.b,0),157);e+=f.o;d+=f.p}e*=2;d*=2;b>1?(e=zA($wnd.Math.ceil(e*b))):(d=zA($wnd.Math.ceil(d/b)));this.a=new hub(e,d)} +function lec(a,b,c,d,e,f){var g,h,i,j,k,l;j=c.c.length;f&&(a.c=tz(FA,OKd,22,b.length,15,1));for(g=e?0:b.length-1;e?g=0;g+=e?1:-1){h=b[g];i=d==(FDc(),kDc)?e?AGb(h,d):Wr(AGb(h,d)):e?Wr(AGb(h,d)):AGb(h,d);f&&(a.c[h.o]=i._b());for(l=i.tc();l.hc();){k=kA(l.ic(),11);a.d[k.o]=j++}vbb(c,i)}} +function smc(a,b,c){var d,e,f,g,h,i,j,k;f=Vpb(nA(a.b.tc().ic()));j=Vpb(nA(An(b.b)));d=Dyc(xyc(a.a),j-c);e=Dyc(xyc(b.a),c-f);k=vyc(d,e);Dyc(k,1/(j-f));this.a=k;this.b=new Gbb;h=true;g=a.b.tc();g.ic();while(g.hc()){i=Vpb(nA(g.ic()));if(h&&i-c>_Qd){this.b.nc(c);h=false}this.b.nc(i)}h&&this.b.nc(c)} +function x$b(a){var b,c,d,e;A$b(a,a.n);if(a.d.c.length>0){rcb(a.c);while(I$b(a,kA(acb(new ccb(a.e.a)),113))=e&&(a.c=false,a.a=false);a.b[d++]=e;a.b[d]=f;a.c||uHd(a)}} +function Xvb(a){var b,c,d,e;e=mTc(a);c=new kwb(e);d=new mwb(e);b=new Gbb;vbb(b,(!a.d&&(a.d=new pxd(JV,a,8,5)),a.d));vbb(b,(!a.e&&(a.e=new pxd(JV,a,7,4)),a.e));return kA(Nob(Tob(Pob(new Zob(null,new ekb(b,16)),c),d),Tmb(new unb,new wnb,new Nnb,new Pnb,xz(pz($G,1),jKd,150,0,[(Ymb(),Xmb),Wmb]))),19)} +function oSb(a){var b,c,d;c=kA(nub(a,(E2b(),p2b)),8);c?kHb(a,kA(nub(c,V1b),69)):a.d.c.length-a.f.c.length<0?kHb(a,(FDc(),kDc)):kHb(a,(FDc(),EDc));if(!a.b){d=a.n;b=a.a;switch(a.i.g){case 1:b.a=d.a/2;b.b=0;break;case 2:b.a=d.a;b.b=d.b/2;break;case 3:b.a=d.a/2;b.b=d.b;break;case 4:b.a=0;b.b=d.b/2;}}} +function S9b(a,b,c){var d,e,f,g,h;xEc(c,'Longest path layering',1);a.a=b;h=a.a.a;a.b=tz(FA,OKd,22,h.c.length,15,1);d=0;for(g=new ccb(h);g.a=0){return false}else{c=ftd((uyd(),syd),e,b);if(!c){return true}else{d=c.kj();return (d>1||d==-1)&&_td(rtd(syd,c))!=3}}}}else{return false}} +function EQb(a,b){var c;c=kA(nub(a,(J6b(),_4b)),241);xEc(b,'Label side selection ('+c+')',1);switch(c.g){case 0:FQb(a,(jHc(),fHc));break;case 1:FQb(a,(jHc(),gHc));break;case 2:DQb(a,(jHc(),fHc));break;case 3:DQb(a,(jHc(),gHc));break;case 4:GQb(a,(jHc(),fHc));break;case 5:GQb(a,(jHc(),gHc));}zEc(b)} +function Ucc(a,b,c){var d,e,f,g,h,i;d=Jcc(c,a.length);g=a[d];if(g[0].j!=(RGb(),MGb)){return}f=Kcc(c,g.length);i=b.i;for(e=0;e0){c[0]+=a.d;g-=c[0]}if(c[2]>0){c[2]+=a.d;g-=c[2]}f=$wnd.Math.max(0,g);c[1]=$wnd.Math.max(c[1],g);ZHc(a,IHc,e.c+d.b+c[0]-(c[1]-g)/2,c);if(b==IHc){a.c.b=f;a.c.c=e.c+d.b+(f-g)/2}} +function nfc(a,b){var c,d,e,f,g,h,i;c=pLd;h=(RGb(),PGb);for(e=new ccb(b.a);e.a0?(g=c):!!i.c&&(g=AIc(i.c));if(g>0){if(d&&(CKc(),i.a.B&&(!Vpb(mA(i.a.e.xe(($Ac(),EAc))))||i.b.ff()))){i.d.a=a.s+g}else{k=i.b.Re().b;if(g>k){h=(g-k)/2;i.d.d=h;i.d.a=h}}}}} +function Wsd(a,b){var c,d,e,f,g;e=b.Yg(a.a);if(e){d=(!e.b&&(e.b=new f9c((j7c(),f7c),CZ,e)),e.b);c=pA(S1c(d,KVd));if(c!=null){f=c.lastIndexOf('#');g=f==-1?xtd(a,b.Pi(),c):f==0?wtd(a,null,c.substr(1,c.length-1)):wtd(a,c.substr(0,f),c.substr(f+1,c.length-(f+1)));if(sA(g,140)){return kA(g,140)}}}return null} +function $sd(a,b){var c,d,e,f,g;d=b.Yg(a.a);if(d){c=(!d.b&&(d.b=new f9c((j7c(),f7c),CZ,d)),d.b);f=pA(S1c(c,fWd));if(f!=null){e=f.lastIndexOf('#');g=e==-1?xtd(a,b.Pi(),f):e==0?wtd(a,null,f.substr(1,f.length-1)):wtd(a,f.substr(0,e),f.substr(e+1,f.length-(e+1)));if(sA(g,140)){return kA(g,140)}}}return null} +function esc(a,b,c,d,e){var f,g,h,i,j,k;!!a.d&&a.d.If(e);f=kA(e.cd(0),35);if(csc(a,c,f,false)){return true}g=kA(e.cd(e._b()-1),35);if(csc(a,d,g,true)){return true}if(Zrc(a,e)){return true}for(k=e.tc();k.hc();){j=kA(k.ic(),35);for(i=b.tc();i.hc();){h=kA(i.ic(),35);if(Yrc(a,j,h)){return true}}}return false} +function RMc(a,b,c){var d,e,f,g,h,i,j,k,l,m;m=b.c.length;l=(j=a.rg(c),kA(j>=0?a.ug(j,false,true):TMc(a,c,false),52));n:for(f=l.tc();f.hc();){e=kA(f.ic(),51);for(k=0;ka.d[g.o]){c+=Zdc(a.b,f);Nab(a.a,d5(f))}}while(!Tab(a.a)){Xdc(a.b,kA(Xab(a.a),21).a)}}return c} +function $Wc(a,b,c){var d,e;if((!a.a&&(a.a=new zkd(IV,a,6,6)),a.a).i==0){return YWc(a)}else{d=kA(WXc((!a.a&&(a.a=new zkd(IV,a,6,6)),a.a),0),270);if(b){r_c((!d.a&&(d.a=new fdd(GV,d,5)),d.a));yQc(d,0);zQc(d,0);rQc(d,0);sQc(d,0)}if(c){e=(!a.a&&(a.a=new zkd(IV,a,6,6)),a.a);while(e.i>1){t_c(e,e.i-1)}}return d}} +function xIb(a,b){var c,d,e,f;f=tIb(b);e=kA(nub(f,(E2b(),X1b)),19);sIb(b,e);if(e.pc((Z0b(),S0b))){for(d=new a0c((!b.c&&(b.c=new zkd(NV,b,9,9)),b.c));d.e!=d.i._b();){c=kA($_c(d),121);AIb(a,b,f,c)}}pIb(b,f);Vpb(mA(nub(f,(J6b(),Q5b))))&&e.nc(X0b);yA(AOc(b,h5b))===yA((jCc(),gCc))?yIb(a,b,f):wIb(a,b,f);return f} +function Z0b(){Z0b=d3;Q0b=new $0b('COMMENTS',0);S0b=new $0b('EXTERNAL_PORTS',1);T0b=new $0b('HYPEREDGES',2);U0b=new $0b('HYPERNODES',3);V0b=new $0b('NON_FREE_PORTS',4);W0b=new $0b('NORTH_SOUTH_PORTS',5);Y0b=new $0b(AOd,6);P0b=new $0b('CENTER_LABELS',7);R0b=new $0b('END_LABELS',8);X0b=new $0b('PARTITIONS',9)} +function Duc(a,b,c){var d,e,f,g;f=(!b.a&&(b.a=new zkd(MV,b,10,11)),b.a).i;for(e=new a0c((!b.a&&(b.a=new zkd(MV,b,10,11)),b.a));e.e!=e.i._b();){d=kA($_c(e),35);(!d.a&&(d.a=new zkd(MV,d,10,11)),d.a).i==0||(f+=Duc(a,d,false))}if(c){g=ZSc(b);while(g){f+=(!g.a&&(g.a=new zkd(MV,g,10,11)),g.a).i;g=ZSc(g)}}return f} +function t_c(a,b){var c,d,e,f;if(a.ti()){d=null;e=a.ui();a.xi()&&(d=a.zi(a.Dh(b),null));c=a.mi(4,f=ZXc(a,b),null,b,e);if(a.qi()&&f!=null){d=a.si(f,d);if(!d){a.ni(c)}else{d.Sh(c);d.Th()}}else{if(!d){a.ni(c)}else{d.Sh(c);d.Th()}}return f}else{f=ZXc(a,b);if(a.qi()&&f!=null){d=a.si(f,null);!!d&&d.Th()}return f}} +function dTb(a){var b,c,d,e,f,g,h,i,j;g=oLd;i=oLd;h=null;for(c=new dib(new Yhb(a.e));c.b!=c.c.a.b;){b=cib(c);if(yA(b.d)===yA((Flc(),hlc))||yA(b.d)===yA(ilc)){d=kA(b.e,249).a;j=kA(b.e,249).b;e=g-d>nOd;f=d-gnOd;if(e||f){i=kA(b.e,249).b;g=kA(b.e,249).a;h=kA(b.d,129);if(i==0&&g==0){return h}}}}return h} +function vLc(a){var b,c,d,e,f,g,h,i,j,k;f=a.a;b=new Jgb;j=0;for(d=new ccb(a.d);d.ai.d&&(k=i.d+i.a+f)}}c.c.d=k;b.a.Zb(c,b);j=$wnd.Math.max(j,c.c.d+c.c.a)}return j} +function ix(a,b,c,d,e){if(d<0){d=Zw(a,e,xz(pz(UE,1),cKd,2,6,[BKd,CKd,DKd,EKd,FKd,GKd,HKd,IKd,JKd,KKd,LKd,MKd]),b);d<0&&(d=Zw(a,e,xz(pz(UE,1),cKd,2,6,['Jan','Feb','Mar','Apr',FKd,'Jun','Jul','Aug','Sep','Oct','Nov','Dec']),b));if(d<0){return false}c.k=d;return true}else if(d>0){c.k=d-1;return true}return false} +function kx(a,b,c,d,e){if(d<0){d=Zw(a,e,xz(pz(UE,1),cKd,2,6,[BKd,CKd,DKd,EKd,FKd,GKd,HKd,IKd,JKd,KKd,LKd,MKd]),b);d<0&&(d=Zw(a,e,xz(pz(UE,1),cKd,2,6,['Jan','Feb','Mar','Apr',FKd,'Jun','Jul','Aug','Sep','Oct','Nov','Dec']),b));if(d<0){return false}c.k=d;return true}else if(d>0){c.k=d-1;return true}return false} +function MEd(a,b,c){var d,e,f;a.e=c;a.d=0;a.b=0;a.f=1;a.i=b;(a.e&16)==16&&(a.i=tGd(a.i));a.j=a.i.length;LEd(a);f=PEd(a);if(a.d!=a.j)throw x2(new KEd(WYc((isd(),ZTd))));if(a.g){for(d=0;dJRd?Dbb(i,a.b):d<=JRd&&d>KRd?Dbb(i,a.d):d<=KRd&&d>LRd?Dbb(i,a.c):d<=LRd&&Dbb(i,a.a);f=nuc(a,i,f)}return e} +function TDc(a){owc(a,new Evc(Pvc(Mvc(Ovc(Nvc(new Rvc,ASd),'Randomizer'),'Distributes the nodes randomly on the plane, leading to very obfuscating layouts. Can be useful to demonstrate the power of "real" layout algorithms.'),new WDc)));mwc(a,ASd,WMd,PDc);mwc(a,ASd,rNd,15);mwc(a,ASd,tNd,d5(0));mwc(a,ASd,VMd,oNd)} +function AJb(a,b){var c,d,e,f,g,h,i,j,k,l;i=b.a.length;h=zA($wnd.Math.ceil(i/a.a));l=b.a;g=0;j=h;for(f=0;fg?0:g)g?0:g:i,(0>(jg?0:g)g?0:g:i));g=j;j+=h;d=kA(xbb(a.c,f),8);c=new ZFb(k);c.n.b=b.n.b;Le(a.b,b,c);tbb(d.b,c)}Abb(a.g.b,b);tbb(a.i,(e=new LJb(a,b),e))} +function H9b(a,b,c){var d,e,f,g,h,i,j,k,l;b.o=1;f=b.c;for(l=BGb(b,(U7b(),S7b)).tc();l.hc();){k=kA(l.ic(),11);for(e=new ccb(k.f);e.a=a.length){return false}h=a.charCodeAt(b[0]);if(h!=43&&h!=45){return false}++b[0];d=ax(a,b);if(d<0){return false}h==45&&(d=-d)}if(h==32&&b[0]-c==2&&e.b==2){i=new Px;j=i.q.getFullYear()-NKd+NKd-80;g=j%100;f.a=d==g;d+=(j/100|0)*100+(d0){a.Fi();if(b!=null){for(f=0;f=48;c--){DEd[c]=c-48<<24>>24}for(d=70;d>=65;d--){DEd[d]=d-65+10<<24>>24}for(e=102;e>=97;e--){DEd[e]=e-97+10<<24>>24}for(f=0;f<10;f++)EEd[f]=48+f&AKd;for(a=10;a<=15;a++)EEd[a]=65+a-10&AKd} +function lxb(a){var b,c,d,e;c=Vpb(nA(nub(a.a,(qyb(),nyb))));d=a.a.c.d;e=a.a.d.d;b=a.d;if(d.a>=e.a){if(d.b>=e.b){b.a=e.a+(d.a-e.a)/2+c;b.b=e.b+(d.b-e.b)/2-c}else{b.a=e.a+(d.a-e.a)/2+c;b.b=d.b+(e.b-d.b)/2+c}}else{if(d.b>=e.b){b.a=d.a+(e.a-d.a)/2+c;b.b=e.b+(d.b-e.b)/2+c}else{b.a=d.a+(e.a-d.a)/2+c;b.b=d.b+(e.b-d.b)/2-c}}} +function uIb(a,b,c,d){var e,f,g,h,i;h=UWc(kA(WXc((!b.b&&(b.b=new pxd(HV,b,4,7)),b.b),0),97));i=UWc(kA(WXc((!b.c&&(b.c=new pxd(HV,b,5,8)),b.c),0),97));if(ZSc(h)==ZSc(i)){return null}if(dXc(i,h)){return null}g=XPc(b);if(g==c){return d}else{f=kA(F8(a.a,g),8);if(f){e=kA(nub(f,(E2b(),h2b)),31);if(e){return e}}}return null} +function XKb(a,b,c,d){var e,f,g,h,i;f=a.i.c.length;i=tz(dV,fOd,267,f,0,1);for(g=0;gm+i&&d.jc()}for(g=new ccb(n);g.a>19!=0){return '-'+_z(Sz(a))}c=a;d='';while(!(c.l==0&&c.m==0&&c.h==0)){e=Az(hLd);c=Dz(c,e,true);b=''+$z(zz);if(!(c.l==0&&c.m==0&&c.h==0)){f=9-b.length;for(;f>0;f--){b='0'+b}}d=b+d}return d} +function H3(a,b,c){var d,e,f,g,h;if(a==null){throw x2(new I5(mJd))}f=a.length;g=f>0&&(a.charCodeAt(0)==45||a.charCodeAt(0)==43)?1:0;for(d=g;dc){throw x2(new I5(mLd+a+'"'))}return h} +function hhb(){if(!Object.create||!Object.getOwnPropertyNames){return false}var a='__proto__';var b=Object.create(null);if(b[a]!==undefined){return false}var c=Object.getOwnPropertyNames(b);if(c.length!=0){return false}b[a]=42;if(b[a]!==42){return false}if(Object.getOwnPropertyNames(b).length==0){return false}return true} +function jMb(a,b){var c,d,e,f;xEc(b,'Resize child graph to fit parent.',1);for(d=new ccb(a.b);d.a>24}case 97:case 98:case 99:case 100:case 101:case 102:{return a-97+10<<24>>24}case 65:case 66:case 67:case 68:case 69:case 70:{return a-65+10<<24>>24}default:{throw x2(new I5('Invalid hexadecimal'))}}} +function eUc(a,b){var c,d,e,f,g,h,i,j,k;j=kA(F8(a.c,b),191);if(!j){throw x2(new aUc('Edge did not exist in input.'))}g=UTc(j);k=new fy;c=new tVc(a,g,k);_Id((!b.a&&(b.a=new zkd(IV,b,6,6)),b.a),c);Ny(j,zTd,k);h=kA(AOc(b,($Ac(),_zc)),74);e=!h||aJd(h);f=!e;if(f){i=new fy;d=new uVc(i);i5(h,d);Ny(j,'junctionPoints',i)}return null} +function KMb(a,b,c){var d,e,f,g;xEc(c,'Orthogonally routing hierarchical port edges',1);a.a=0;d=NMb(b);QMb(b,d);PMb(a,b,d);LMb(b);e=kA(nub(b,(J6b(),Z5b)),83);f=b.b;JMb((Mpb(0,f.c.length),kA(f.c[0],26)),e,b);JMb(kA(xbb(f,f.c.length-1),26),e,b);g=b.b;HMb((Mpb(0,g.c.length),kA(g.c[0],26)));HMb(kA(xbb(g,g.c.length-1),26));zEc(c)} +function WVb(a){var b,c,d;b=kA(nub(a.d,(J6b(),a5b)),197);switch(b.g){case 2:c=OVb(a);break;case 3:c=(d=new Gbb,Sob(Pob(Tob(Rob(Rob(new Zob(null,new ekb(a.d.b,16)),new MWb),new OWb),new QWb),new cWb),new SWb(d)),d);break;default:throw x2(new Q4('Compaction not supported for '+b+' edges.'));}VVb(a,c);i5(new G9(a.g),new CWb(a))} +function Uac(a,b,c,d){var e,f,g,h,i;e=false;f=false;for(h=new ccb(d.i);h.a1){c?(g=kIb(b.c)+1):(g=kIb(j.c)-1);h=kA(xbb(a.a.b,g),26);FGb(j,h)}lJb(a,j,c)}}return b} +function hYb(a,b,c,d,e,f){this.b=c;this.d=e;if(a>=b.length){throw x2(new q3('Greedy SwitchDecider: Free layer not in graph.'))}this.c=b[a];this.e=new vec(d);kec(this.e,this.c,(FDc(),EDc));this.i=new vec(d);kec(this.i,this.c,kDc);this.f=new cYb(this.c);this.a=!f&&e.i&&!e.s&&this.c[0].j==(RGb(),MGb);this.a&&fYb(this,a,b.length)} +function Yqc(a,b,c){var d,e,f,g;xEc(c,'Processor order nodes',2);a.a=Vpb(nA(nub(b,(fqc(),dqc))));e=new yib;for(g=sib(b.b,0);g.b!=g.d.c;){f=kA(Gib(g),76);Vpb(mA(nub(f,(Ppc(),Mpc))))&&(pib(e,f,e.c.b,e.c),true)}d=(Lpb(e.b!=0),kA(e.a.a.c,76));Wqc(a,d);!c.b&&AEc(c,1);Zqc(a,d,0-Vpb(nA(nub(d,(Ppc(),Epc))))/2,0);!c.b&&AEc(c,1);zEc(c)} +function jwc(){this.b=(Es(),new Jhb);this.d=new Jhb;this.e=new Jhb;this.c=new Jhb;this.a=new Bgb;this.f=new Bgb;LYc(aU,new uwc,new wwc);LYc(_T,new Owc,new Qwc);LYc(YT,new Swc,new Uwc);LYc(ZT,new Wwc,new Ywc);LYc(xF,new $wc,new axc);LYc(lG,new ywc,new Awc);LYc($F,new Cwc,new Ewc);LYc(iG,new Gwc,new Iwc);LYc(UG,new Kwc,new Mwc)} +function DYb(a,b,c,d){var e,f,g,h,i,j;i=IYb(a,c);j=IYb(b,c);e=false;while(!!i&&!!j){if(d||GYb(i,j,c)){g=IYb(i,c);h=IYb(j,c);LYb(b);LYb(a);f=i.c;_Qb(i,false);_Qb(j,false);if(c){EGb(b,j.o,f);b.o=j.o;EGb(a,i.o+1,f);a.o=i.o}else{EGb(a,i.o,f);a.o=i.o;EGb(b,j.o+1,f);b.o=j.o}FGb(i,null);FGb(j,null);i=g;j=h;e=true}else{break}}return e} +function P5c(a,b,c,d,e,f,g,h){var i,j,k;i=0;b!=null&&(i^=hqb(b.toLowerCase()));c!=null&&(i^=hqb(c));d!=null&&(i^=hqb(d));g!=null&&(i^=hqb(g));h!=null&&(i^=hqb(h));for(j=0,k=f.length;ji){new bkc(b,a,h-i)}else if(h>0&&i>0){new bkc(a,b,0);new bkc(b,a,0)}} +function aCc(a){owc(a,new Evc(Pvc(Mvc(Ovc(Nvc(new Rvc,ySd),zSd),'Keeps the current layout as it is, without any automatic modification. Optional coordinates can be given for nodes and edge bend points.'),new dCc)));mwc(a,ySd,WMd,ZBc);mwc(a,ySd,HQd,CWc($Bc));mwc(a,ySd,aSd,CWc(VBc));mwc(a,ySd,mQd,CWc(WBc));mwc(a,ySd,xQd,CWc(XBc))} +function WLb(a){var b,c,d;d=kA(nub(a,(J6b(),B5b)),19);if(d.Wb()){return}c=(b=kA(e4(nU),10),new ngb(b,kA(ypb(b,b.length),10),0));d.pc((yCc(),tCc))?hgb(c,tCc):hgb(c,uCc);d.pc(rCc)||hgb(c,rCc);d.pc(qCc)?hgb(c,xCc):d.pc(pCc)?hgb(c,wCc):d.pc(sCc)&&hgb(c,vCc);d.pc(xCc)?hgb(c,qCc):d.pc(wCc)?hgb(c,pCc):d.pc(vCc)&&hgb(c,sCc);qub(a,B5b,c)} +function koc(a,b){var c,d,e,f;if(0<(sA(a,13)?kA(a,13)._b():mo(a.tc()))){e=b;if(1=b.o){throw x2(new r3)}i=c>>5;h=c&31;g=O2(1,U2(O2(h,1)));f?(b.n[d][i]=N2(b.n[d][i],g)):(b.n[d][i]=z2(b.n[d][i],M2(g)));g=O2(g,1);e?(b.n[d][i]=N2(b.n[d][i],g)):(b.n[d][i]=z2(b.n[d][i],M2(g)))}catch(a){a=w2(a);if(sA(a,305)){throw x2(new q3(zMd+b.o+'*'+b.p+AMd+c+qJd+d+BMd))}else throw x2(a)}} +function lTb(a,b){var c,d,e,f,g,h,i;e=new Gbb;i=new Gbb;c=kA(Cfb(iTb,a),15).tc();while(c.hc()){d=kA(c.ic(),151);ubb(e,d.b);ubb(e,Xkc(d));if(c.hc()){d=kA(c.ic(),151);vbb(i,Xkc(d));vbb(i,d.b)}}SSb(e,a.b);SSb(i,a.a);for(h=new ccb(e);h.aa.d[h.o]){c+=Zdc(a.b,f);Nab(a.a,d5(f))}}else{++g}}c+=a.b.d*g;while(!Tab(a.a)){Xdc(a.b,kA(Xab(a.a),21).a)}}return c} +function cmc(a){var b,c,d,e,f,g;e=a.g.ed();d=a.b.ed();if(a.e){for(c=0;c_Qd){f=b;g=0;while($wnd.Math.abs(b-f)<_Qd){++g;b=Vpb(nA(e.ic()));d.ic()}if(g0){d=(!a.n&&(a.n=new zkd(LV,a,1,7)),kA(kA(WXc(a.n,0),137),263)).a;!d||I6(I6((b.a+=' "',b),d),'"')}}else{I6(I6((b.a+=' "',b),c),'"')}I6(D6(I6(D6(I6(D6(I6(D6((b.a+=' (',b),a.i),','),a.j),' | '),a.g),','),a.f),')');return b.a} +function oTc(a){var b,c,d;if((a.Db&64)!=0)return tPc(a);b=new O6(WSd);c=a.k;if(!c){!a.n&&(a.n=new zkd(LV,a,1,7));if(a.n.i>0){d=(!a.n&&(a.n=new zkd(LV,a,1,7)),kA(kA(WXc(a.n,0),137),263)).a;!d||I6(I6((b.a+=' "',b),d),'"')}}else{I6(I6((b.a+=' "',b),c),'"')}I6(D6(I6(D6(I6(D6(I6(D6((b.a+=' (',b),a.i),','),a.j),' | '),a.g),','),a.f),')');return b.a} +function Ixd(a){var b,c,d,e,f,g;f=0;b=j9c(a);!!b.Qi()&&(f|=4);(a.Bb&iVd)!=0&&(f|=2);if(sA(a,62)){c=kA(a,17);e=Wkd(c);(c.Bb&bTd)!=0&&(f|=32);if(e){Lbd(I9c(e));f|=8;g=e.t;(g>1||g==-1)&&(f|=16);(e.Bb&bTd)!=0&&(f|=64)}(c.Bb&sLd)!=0&&(f|=jVd);f|=hVd}else{if(sA(b,425)){f|=512}else{d=b.Qi();!!d&&(d.i&1)!=0&&(f|=256)}}(a.Bb&512)!=0&&(f|=128);return f} +function dwc(a,b){var c,d,e,f,g,h,i;if(b==null||b.length==0){return null}e=kA(G8(a.a,b),180);if(!e){for(d=(h=(new R9(a.b)).a.Tb().tc(),new W9(h));d.a.hc();){c=(f=kA(d.a.ic(),38),kA(f.lc(),180));g=c.c;i=b.length;if(Z5(g.substr(g.length-i,i),b)&&(b.length==g.length||X5(g,g.length-b.length-1)==46)){if(e){return null}e=c}}!!e&&J8(a.a,b,e)}return e} +function Eyd(a,b){var c;if(a.f==Cyd){c=_td(rtd((uyd(),syd),b));return a.e?c==4&&b!=(Ozd(),Mzd)&&b!=(Ozd(),Jzd)&&b!=(Ozd(),Kzd)&&b!=(Ozd(),Lzd):c==2}if(!!a.d&&(a.d.pc(b)||a.d.pc(aud(rtd((uyd(),syd),b)))||a.d.pc(ftd((uyd(),syd),a.b,b)))){return true}if(a.f){if(ytd((uyd(),a.f),cud(rtd(syd,b)))){c=_td(rtd(syd,b));return a.e?c==4:c==2}}return false} +function Frc(a,b,c,d){var e,f,g,h,i,j,k,l;g=kA(AOc(c,($Ac(),JAc)),9);i=g.a;k=g.b+a;e=$wnd.Math.atan2(k,i);e<0&&(e+=rRd);e+=b;e>rRd&&(e-=rRd);h=kA(AOc(d,JAc),9);j=h.a;l=h.b+a;f=$wnd.Math.atan2(l,j);f<0&&(f+=rRd);f+=b;f>rRd&&(f-=rRd);return yv(),Bv(1.0E-10),$wnd.Math.abs(e-f)<=1.0E-10||e==f||isNaN(e)&&isNaN(f)?0:ef?1:Cv(isNaN(e),isNaN(f))} +function Xtb(a,b,c,d){var e,f;Wtb(a,b,c,d);iub(b,a.j-b.j+c);jub(b,a.k-b.k+d);for(f=new ccb(b.f);f.ac.k&&hj&&d>j){j=Vpb(c.p[h.o])+Vpb(c.d[h.o])+h.n.b+h.d.a}else{e=false;a.a&&(S6(),R6);break}}if(!e){break}}a.a&&(S6(),R6);return e} +function qac(a,b){var c,d,e,f,g;a.c==null||a.c.lengthf*2){k=new _Ec(l);j=WEc(g)/VEc(g);i=MEc(k,b,new XGb,c,d,e,j);vyc(Cyc(k.e),i);l.c=tz(NE,oJd,1,0,5,1);l.c[l.c.length]=k;l.c[l.c.length]=g;f=WEc(k)*VEc(k)+WEc(g)*VEc(g)}else{l.c[l.c.length]=g;f+=WEc(g)*VEc(g)}}return l} +function DFd(a){switch(a){case 100:return IFd(VWd,true);case 68:return IFd(VWd,false);case 119:return IFd(WWd,true);case 87:return IFd(WWd,false);case 115:return IFd(XWd,true);case 83:return IFd(XWd,false);case 99:return IFd(YWd,true);case 67:return IFd(YWd,false);case 105:return IFd(ZWd,true);case 73:return IFd(ZWd,false);default:throw x2(new Tv(UWd+a.toString(16)));}} +function NDb(a,b,c){var d,e,f,g,h,i,j,k;if(b.o==0){b.o=1;g=c;if(!c){e=new Gbb;f=(d=kA(e4(rU),10),new ngb(d,kA(ypb(d,d.length),10),0));g=new fGc(e,f)}kA(g.a,15).nc(b);b.j==(RGb(),MGb)&&kA(g.b,19).nc(kA(nub(b,(E2b(),V1b)),69));for(i=new ccb(b.i);i.ah){h=e;k.c=tz(NE,oJd,1,0,5,1)}e==h&&tbb(k,new fGc(c.c.g,c))}bdb();Dbb(k,a.c);sbb(a.b,i.o,k)}}} +function djc(a,b){var c,d,e,f,g,h,i,j,k;for(g=new ccb(b.b);g.ah){h=e;k.c=tz(NE,oJd,1,0,5,1)}e==h&&tbb(k,new fGc(c.d.g,c))}bdb();Dbb(k,a.c);sbb(a.f,i.o,k)}}} +function Jwb(a,b,c,d){var e,f,g,h,i,j,k,l,m;i=new Jyc(c,d);Gyc(i,kA(nub(b,(Byb(),yyb)),9));for(m=new ccb(b.e);m.a=40;g&&H$b(a);y$b(a);x$b(a);c=B$b(a);d=0;while(!!c&&d0&&mib(a.e,f)}else{a.c[g]-=j+1;a.c[g]<=0&&a.a[g]>0&&mib(a.d,f)}}}}} +function hmc(a){var b,c,d,e,f,g,h,i,j,k,l;h=new Gbb;f=Vpb(nA(a.g.cd(a.g._b()-1)));for(l=a.g.tc();l.hc();){k=nA(l.ic());sbb(h,0,f-(Npb(k),k))}g=Yyc(Xlc(a));j=new Gbb;e=new ccb(h);i=new Gbb;for(b=0;b1)&&b==1&&kA(a.a[a.b],8).j==(RGb(),NGb)){BQb(kA(a.a[a.b],8),(jHc(),fHc))}else if(d&&(!c||(a.c-a.b&a.a.length-1)>1)&&b==1&&kA(a.a[a.c-1&a.a.length-1],8).j==(RGb(),NGb)){BQb(kA(a.a[a.c-1&a.a.length-1],8),(jHc(),gHc))}else if((a.c-a.b&a.a.length-1)==2){BQb(kA(Uab(a),8),(jHc(),fHc));BQb(kA(Uab(a),8),gHc)}else{yQb(a,e)}Pab(a)} +function LSb(a){var b,c;if(a.Wb()){return}c=kA(a.cd(0),151).f;new oTb(a);b=new s9(c.i,0);mTb((Flc(),klc),b);nTb(Blc,b);KSb((FDc(),lDc),b);lTb(jlc,b);nTb(nlc,b);kTb(glc,b);mTb(hlc,b);KSb(kDc,b);lTb(flc,b);mTb(ilc,b);kTb(mlc,b);mTb(nlc,b);KSb(CDc,b);lTb(llc,b);mTb(Blc,b);kTb(Elc,b);nTb(ilc,b);while(b.b=0){h=Mz(a,g);if(h){j<22?(i.l|=1<>>1;g.m=k>>>1|(l&1)<<21;g.l=m>>>1|(k&1)<<21;--j}c&&Iz(i);if(f){if(d){zz=Sz(a);e&&(zz=Yz(zz,(fA(),dA)))}else{zz=Cz(a.l,a.m,a.h)}}return i} +function Xac(a,b,c,d){var e,f,g,h,i,j,k,l;abc(a,b,c);f=b[c];l=d?(FDc(),EDc):(FDc(),kDc);if(Yac(b.length,c,d)){e=b[d?c-1:c+1];Tac(a,e,d?(U7b(),S7b):(U7b(),R7b));for(i=0,k=f.length;i0){e=h.length;while(e>0&&h[e-1]==''){--e}e=0&&h!=c){f=new Mid(a,1,h,g,null);!d?(d=f):d.Sh(f)}if(c>=0){f=new Mid(a,1,c,h==c?g:null,b);!d?(d=f):d.Sh(f)}}return d} +function $tb(a,b,c,d){var e,f,g,h,i,j,k;if(Ztb(a,b,c,d)){return true}else{for(g=new ccb(b.f);g.a=e){for(g=1;g0){e=kA(a.Ab.g,1627);if(b==null){for(f=0;f1){for(d=new ccb(e);d.ab.f?1:0}d=a.e-b.e;c=(a.d>0?a.d:$wnd.Math.floor((a.a-1)*xLd)+1)-(b.d>0?b.d:$wnd.Math.floor((b.a-1)*xLd)+1);if(c>d+1){return e}else if(c0&&(g=F7(g,B8(d)));return z7(f,g)}}else return ei+o){p=l.i+m.i;m.a=(m.i*m.a+l.i*l.a)/p;m.i=p;l.g=m;c=true}}f=h;l=m}}return c} +function JFb(a,b){var c,d,e,f,g,h,i,j,k;e=a.g;g=e.n.a;f=e.n.b;if(g<=0&&f<=0){return FDc(),DDc}j=a.k.a;k=a.k.b;h=a.n.a;c=a.n.b;switch(b.g){case 2:case 1:if(j<0){return FDc(),EDc}else if(j+h>g){return FDc(),kDc}break;case 4:case 3:if(k<0){return FDc(),lDc}else if(k+c>f){return FDc(),CDc}}i=(j+h/2)/g;d=(k+c/2)/f;return i+d<=1&&i-d<=0?(FDc(),EDc):i+d>=1&&i-d>=0?(FDc(),kDc):d<0.5?(FDc(),lDc):(FDc(),CDc)} +function cx(a,b,c){var d,e,f,g;if(b[0]>=a.length){c.o=0;return true}switch(a.charCodeAt(b[0])){case 43:e=1;break;case 45:e=-1;break;default:c.o=0;return true;}++b[0];f=b[0];g=ax(a,b);if(g==0&&b[0]==f){return false}if(b[0]=14&&c<=16));case 11:return b!=null&&typeof b===iJd;case 12:return b!=null&&(typeof b===fJd||typeof b==iJd);case 0:return jA(b,a.__elementTypeId$);case 2:return xA(b)&&!(b.sl===g3);case 1:return xA(b)&&!(b.sl===g3)||jA(b,a.__elementTypeId$);default:return true;}} +function BQb(a,b){var c,d,e,f,g,h;if(a.j==(RGb(),NGb)){c=Qob(Pob(kA(nub(a,(E2b(),t2b)),15).xc(),new Rmb(new MQb))).a==null?(jHc(),hHc):b;qub(a,b2b,c);if(c!=(jHc(),gHc)){d=kA(nub(a,i2b),14);h=Vpb(nA(nub(d,(J6b(),f5b))));g=0;if(c==fHc){g=a.n.b-$wnd.Math.ceil(h/2)}else if(c==hHc){a.n.b-=Vpb(nA(nub(uGb(a),m6b)));g=(a.n.b-$wnd.Math.ceil(h))/2}for(f=new ccb(a.i);f.a0){krb(i,false,(gBc(),cBc));krb(i,true,dBc)}wbb(b.g,new UWb(a,c));I8(a.g,b,c)} +function $yb(a,b){var c,d,e,f,g,h,i;f=0;h=0;i=0;for(e=new ccb(a.f.e);e.a0&&a.d!=(kzb(),jzb)&&(h+=g*(d.d.a+a.a[b.b][d.b]*(b.d.a-d.d.a)/c));c>0&&a.d!=(kzb(),hzb)&&(i+=g*(d.d.b+a.a[b.b][d.b]*(b.d.b-d.d.b)/c))}switch(a.d.g){case 1:return new Jyc(h/f,b.d.b);case 2:return new Jyc(b.d.a,i/f);default:return new Jyc(h/f,i/f);}} +function oTb(a){jTb();var b,c,d,e,f,g,h,i,j,k;this.b=new qTb;this.c=new Gbb;this.a=new Gbb;for(i=Qlc(),j=0,k=i.length;j0){for(g=0;g>16==-15&&a.Cb.Hg()&&o$c(new Nid(a.Cb,9,13,c,a.c,pcd(njd(kA(a.Cb,53)),a)))}else if(sA(a.Cb,96)){if(a.Db>>16==-23&&a.Cb.Hg()){b=a.c;sA(b,96)||(b=(j7c(),a7c));sA(c,96)||(c=(j7c(),a7c));o$c(new Nid(a.Cb,9,10,c,b,pcd(Ebd(kA(a.Cb,24)),a)))}}}}return a.c} +function xHd(a){UGd();var b,c,d,e,f;if(a.e!=4&&a.e!=5)throw x2(new O4('Token#complementRanges(): must be RANGE: '+a.e));uHd(a);rHd(a);d=a.b.length+2;a.b[0]==0&&(d-=2);c=a.b[a.b.length-1];c==TWd&&(d-=2);e=(++TGd,new wHd(4));e.b=tz(FA,OKd,22,d,15,1);f=0;if(a.b[0]>0){e.b[f++]=0;e.b[f++]=a.b[0]-1}for(b=1;b=65;c--){wEd[c]=c-65<<24>>24}for(d=122;d>=97;d--){wEd[d]=d-97+26<<24>>24}for(e=57;e>=48;e--){wEd[e]=e-48+52<<24>>24}wEd[43]=62;wEd[47]=63;for(f=0;f<=25;f++)xEd[f]=65+f&AKd;for(g=26,i=0;g<=51;++g,i++)xEd[g]=97+i&AKd;for(a=52,h=0;a<=61;++a,h++)xEd[a]=48+h&AKd;xEd[62]=43;xEd[63]=47} +function iRb(a,b){var c,d,e,f,g,h,i,j,k,l;g=a.d;k=kA(nub(a,(E2b(),D2b)),15);l=0;if(k){i=0;for(f=k.tc();f.hc();){e=kA(f.ic(),8);i=$wnd.Math.max(i,e.n.b);l+=e.n.a}l+=b/2*(k._b()-1);g.d+=i+b}c=kA(nub(a,I1b),15);d=0;if(c){i=0;for(f=c.tc();f.hc();){e=kA(f.ic(),8);i=$wnd.Math.max(i,e.n.b);d+=e.n.a}d+=b/2*(c._b()-1);g.a+=i+b}h=$wnd.Math.max(l,d);if(h>a.n.a){j=(h-a.n.a)/2;g.b=$wnd.Math.max(g.b,j);g.c=$wnd.Math.max(g.c,j)}} +function H$b(a){var b,c,d,e,f,g,h;a.o=new qlb;d=new yib;for(g=new ccb(a.e.a);g.a0;h=AZb(b,f);c?RZb(h.b,b):RZb(h.g,b);OZb(h).c.length==1&&(pib(d,h,d.c.b,d.c),true);e=new fGc(f,b);plb(a.o,e);Abb(a.e.a,f)}} +function sjc(a,b){var c,d,e,f,g;b.d?(e=a.a.c==(hic(),gic)?vGb(b.b):zGb(b.b)):(e=a.a.c==(hic(),fic)?vGb(b.b):zGb(b.b));f=false;for(d=(Zn(),new Zo(Rn(Dn(e.a,new Hn))));So(d);){c=kA(To(d),14);g=Vpb(a.a.f[a.a.g[b.b.o].o]);if(!g&&!JEb(c)&&c.c.g.c==c.d.g.c){continue}if(Vpb(a.a.n[a.a.g[b.b.o].o])||Vpb(a.a.n[a.a.g[b.b.o].o])){continue}f=true;if(Hgb(a.b,a.a.g[kjc(c,b.b).o])){b.c=true;b.a=c;return b}}b.c=f;b.a=null;return b} +function CFc(a,b){var c,d,e,f,g,h,i;if(!mTc(a)){throw x2(new Q4(BSd))}d=mTc(a);f=d.g;e=d.f;if(f<=0&&e<=0){return FDc(),DDc}h=a.i;i=a.j;switch(b.g){case 2:case 1:if(h<0){return FDc(),EDc}else if(h+a.g>f){return FDc(),kDc}break;case 4:case 3:if(i<0){return FDc(),lDc}else if(i+a.f>e){return FDc(),CDc}}g=(h+a.g/2)/f;c=(i+a.f/2)/e;return g+c<=1&&g-c<=0?(FDc(),EDc):g+c>=1&&g-c>=0?(FDc(),kDc):c<0.5?(FDc(),lDc):(FDc(),CDc)} +function bDb(a,b){var c,d,e,f,g,h,i,j,k,l,m,n;if(a.Wb()){return new Hyc}j=0;l=0;for(e=a.tc();e.hc();){d=kA(e.ic(),31);f=d.e;j=$wnd.Math.max(j,f.a);l+=f.a*f.b}j=$wnd.Math.max(j,$wnd.Math.sqrt(l)*Vpb(nA(nub(kA(a.tc().ic(),31),(J6b(),J4b)))));m=0;n=0;i=0;c=b;for(h=a.tc();h.hc();){g=kA(h.ic(),31);k=g.e;if(m+k.a>j){m=0;n+=i+b;i=0}SCb(g,m,n);c=$wnd.Math.max(c,m+k.a);i=$wnd.Math.max(i,k.b);m+=k.a+b}return new Jyc(c+b,n+i+b)} +function m_c(a,b,c){var d,e,f,g,h,i,j,k;d=c._b();if(d==0){return false}else{if(a.ti()){j=a.ui();OXc(a,b,c);g=d==1?a.mi(3,null,c.tc().ic(),b,j):a.mi(5,null,c,b,j);if(a.qi()){h=d<100?null:new f_c(d);f=b+d;for(e=b;e1){for(d=sib(e,0);d.b!=d.d.c;){c=kA(Gib(d),202);f=0;for(i=new ccb(c.e);i.ah?1:-1:n8(a.a,b.a,f);if(e==-1){l=-i;k=g==i?q8(b.a,h,a.a,f):l8(b.a,h,a.a,f)}else{l=g;if(g==i){if(e==0){return y7(),x7}k=q8(a.a,f,b.a,h)}else{k=l8(a.a,f,b.a,h)}}j=new M7(l,k.length,k);A7(j);return j} +function B8(a){u8();var b,c,d,e;b=zA(a);if(a1000000){throw x2(new o3('power of ten too big'))}if(a<=jJd){return H7(G7(s8[1],b),b)}d=G7(s8[1],jJd);e=d;c=E2(a-jJd);b=zA(a%jJd);while(A2(c,jJd)>0){e=F7(e,d);c=R2(c,jJd)}e=F7(e,G7(s8[1],b));e=H7(e,jJd);c=E2(a-jJd);while(A2(c,jJd)>0){e=H7(e,jJd);c=R2(c,jJd)}e=H7(e,b);return e} +function hgc(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q;c=p$b(new r$b,a.f);j=a.i[b.c.g.o];n=a.i[b.d.g.o];i=b.c;m=b.d;h=i.a.b;l=m.a.b;j.b||(h+=i.k.b);n.b||(l+=m.k.b);k=zA($wnd.Math.max(0,h-l));g=zA($wnd.Math.max(0,l-h));o=(p=v5(1,kA(nub(b,(J6b(),g6b)),21).a),q=Vfc(b.c.g.j,b.d.g.j),p*q);e=DZb(GZb(FZb(EZb(HZb(new IZb,o),g),c),kA(F8(a.k,b.c),113)));f=DZb(GZb(FZb(EZb(HZb(new IZb,o),k),c),kA(F8(a.k,b.d),113)));d=new Bgc(e,f);a.c[b.o]=d} +function LIc(a){var b,c,d,e,f,g,h,i,j,k,l,m,n;c=a.i;b=a.n;if(a.b==0){n=c.c+b.b;m=c.b-b.b-b.c;for(g=a.a,i=0,k=g.length;i0){l-=d[0]+a.c;d[0]+=a.c}d[2]>0&&(l-=d[2]+a.c);d[1]=$wnd.Math.max(d[1],l);QHc(a.a[1],c.c+b.b+d[0]-(d[1]-l)/2,d[1])}for(f=a.a,h=0,j=f.length;h0){b[0]+=a.c;l-=b[0]}b[2]>0&&(l-=b[2]+a.c);b[1]=$wnd.Math.max(b[1],l);RHc(a.a[1],d.d+c.d+b[0]-(b[1]-l)/2,b[1])}else{o=d.d+c.d;n=d.a-c.d-c.a;for(g=a.a,i=0,k=g.length;i>>0).toString(16);c='\\x'+j6(b,b.length-2,b.length)}else if(a>=sLd){b='0'+(a>>>0).toString(16);c='\\v'+j6(b,b.length-6,b.length)}else c=''+String.fromCharCode(a&AKd);}return c} +function emc(a){var b,c,d,e,f,g;Tlc(this);for(c=a._b()-1;c<3;c++){a.bd(0,kA(a.cd(0),9))}if(a._b()<4){throw x2(new O4('At (least dimension + 1) control points are necessary!'))}else{this.c=3;this.e=true;this.f=true;this.d=false;Ulc(this,a._b()+this.c-1);g=new Gbb;f=this.g.tc();for(b=0;b=0&&f!=c){throw x2(new O4(UTd))}}e=0;for(i=0;iVpb(Obc(g.g,g.d[0]).a)){Lpb(i.b>0);i.a.cd(i.c=--i.b);r9(i,g);e=true}else if(!!h.e&&h.e._b()>0){f=(!h.e&&(h.e=new Gbb),h.e).vc(b);j=(!h.e&&(h.e=new Gbb),h.e).vc(c);if(f||j){(!h.e&&(h.e=new Gbb),h.e).nc(g);++g.c}}}e||(d.c[d.c.length]=g,true)} +function Vwb(a,b,c){var d,e,f,g,h,i;d=0;for(f=new a0c((!a.a&&(a.a=new zkd(MV,a,10,11)),a.a));f.e!=f.i._b();){e=kA($_c(f),35);g='';(!e.n&&(e.n=new zkd(LV,e,1,7)),e.n).i==0||(g=kA(kA(WXc((!e.n&&(e.n=new zkd(LV,e,1,7)),e.n),0),137),263).a);h=new pxb(g);lub(h,e);qub(h,(Byb(),zyb),e);h.b=d++;h.d.a=e.i+e.g/2;h.d.b=e.j+e.f/2;h.e.a=$wnd.Math.max(e.g,1);h.e.b=$wnd.Math.max(e.f,1);tbb(b.e,h);Xgb(c.d,e,h);i=kA(AOc(e,(qyb(),hyb)),83);i==(VCc(),UCc)&&TCc}} +function sPb(a,b,c,d){var e,f,g,h,i,j,k;if(c.c.g==b.g){return}e=new IGb(a);GGb(e,(RGb(),OGb));qub(e,(E2b(),i2b),c);qub(e,(J6b(),Z5b),(VCc(),QCc));d.c[d.c.length]=e;g=new lHb;jHb(g,e);kHb(g,(FDc(),EDc));h=new lHb;jHb(h,e);kHb(h,kDc);MEb(c,g);f=new PEb;lub(f,c);qub(f,p5b,null);LEb(f,h);MEb(f,b);vPb(e,g,h);j=new s9(c.b,0);while(j.b0){i=h/60|0;j=h%60;e=a.q.getDate();c=a.q.getHours();c+i>=24&&++e;f=new $wnd.Date(a.q.getFullYear(),a.q.getMonth(),e,b+i,a.q.getMinutes()+j,a.q.getSeconds(),a.q.getMilliseconds());a.q.setTime(f.getTime())}}g=a.q.getTime();a.q.setTime(g+3600000);a.q.getHours()!=b&&a.q.setTime(g)} +function ENb(a,b){var c,d,e,f,g,h,i,j,k;xEc(b,'Layer constraint edge reversal',1);for(g=new ccb(a.b);g.ac){zEc(b);return}switch(kA(nub(a,(J6b(),D6b)),319).g){case 2:f=new oZb;break;case 0:f=new iYb;break;default:f=new rZb;}d=f.sf(a,e);if(!f.tf()){switch(kA(nub(a,H6b),347).g){case 2:d=xZb(e,d);break;case 1:d=wZb(e,d);}}uZb(a,e,d);zEc(b)} +function v_c(a,b,c){var d,e,f,g;if(a.ti()){e=null;f=a.ui();d=a.mi(1,g=$Xc(a,b,c),c,b,f);if(a.qi()&&!(a.Bh()&&g!=null?kb(g,c):yA(g)===yA(c))){g!=null&&(e=a.si(g,null));e=a.ri(c,e);a.xi()&&(e=a.Ai(g,c,e));if(!e){a.ni(d)}else{e.Sh(d);e.Th()}}else{a.xi()&&(e=a.Ai(g,c,null));if(!e){a.ni(d)}else{e.Sh(d);e.Th()}}return g}else{g=$Xc(a,b,c);if(a.qi()&&!(a.Bh()&&g!=null?kb(g,c):yA(g)===yA(c))){e=null;g!=null&&(e=a.si(g,null));e=a.ri(c,e);!!e&&e.Th()}return g}} +function Abd(a){var b,c,d,e,f,g,h;if(!a.d){h=new Ded;b=tbd;f=b.a.Zb(a,b);if(f==null){for(d=new a0c(Kbd(a));d.e!=d.i._b();){c=kA($_c(d),24);gXc(h,Abd(c))}b.a.$b(a)!=null;b.a._b()==0&&undefined}g=h.i;for(e=(!a.q&&(a.q=new zkd(tY,a,11,10)),new a0c(a.q));e.e!=e.i._b();++g){kA($_c(e),371)}gXc(h,(!a.q&&(a.q=new zkd(tY,a,11,10)),a.q));_Xc(h);a.d=new Vdd((kA(WXc(Ibd((P6c(),O6c).o),9),17),h.i),h.g);a.e=kA(h.g,611);a.e==null&&(a.e=ubd);Jbd(a).b&=-17}return a.d} +function Lud(a,b,c,d){var e,f,g,h,i,j;j=yyd(a.e.mg(),b);i=0;e=kA(a.g,124);wyd();if(kA(b,61).bj()){for(g=0;g1&&(i>WEc(h)*VEc(h)/2||g.b==0)){l=new _Ec(m);k=WEc(h)/VEc(h);j=MEc(l,b,new XGb,c,d,e,k);vyc(Cyc(l.e),j);h=l;n.c[n.c.length]=l;i=0;m.c=tz(NE,oJd,1,0,5,1)}}}vbb(n,m);return n} +function BMb(a,b){var c,d,e,f,g,h,i,j,k;xEc(b,'Hierarchical port dummy size processing',1);i=new Gbb;k=new Gbb;d=Vpb(nA(nub(a,(J6b(),l6b))));c=d*2;for(f=new ccb(a.b);f.a=q&&a.e[i.o]>o*a.b||t>=c*q){m.c[m.c.length]=h;h=new Gbb;pg(g,f);f.a.Pb();j-=k;n=$wnd.Math.max(n,j*a.b+p);j+=t;s=t;t=0;k=0;p=0}}return new fGc(n,m)} +function vic(a){var b,c,d,e,f,g,h,i,j,k,l,m;b=Oic(a);for(k=(h=(new G9(b)).a.Tb().tc(),new M9(h));k.a.hc();){j=(e=kA(k.a.ic(),38),kA(e.kc(),8));l=j.d.d;m=j.n.b+j.d.a;a.d[j.o]=0;c=j;while((f=a.a[c.o])!=j){d=Qic(c,f);a.c==(hic(),fic)?(i=d.d.k.b+d.d.a.b-d.c.k.b-d.c.a.b):(i=d.c.k.b+d.c.a.b-d.d.k.b-d.d.a.b);g=Vpb(a.d[c.o])+i;a.d[f.o]=g;l=$wnd.Math.max(l,f.d.d-g);m=$wnd.Math.max(m,g+f.n.b+f.d.a);c=f}c=j;do{a.d[c.o]=Vpb(a.d[c.o])+l;c=a.a[c.o]}while(c!=j);a.b[j.o]=l+m}} +function xnc(a,b,c){var d,e,f,g,h,i,j,k,l,m;snc(this);c==(inc(),gnc)?Ggb(this.o,a):Ggb(this.t,a);k=oLd;j=pLd;for(g=b.a.Xb().tc();g.hc();){e=kA(g.ic(),48);h=kA(e.a,417);d=kA(e.b,14);i=d.c;i==a&&(i=d.d);h==gnc?Ggb(this.o,i):Ggb(this.t,i);m=Pyc(xz(pz(aU,1),cKd,9,0,[i.g.k,i.k,i.a])).b;k=$wnd.Math.min(k,m);j=$wnd.Math.max(j,m)}l=Pyc(xz(pz(aU,1),cKd,9,0,[a.g.k,a.k,a.a])).b;vnc(this,l,k,j);for(f=b.a.Xb().tc();f.hc();){e=kA(f.ic(),48);tnc(this,kA(e.b,14))}this.k=false} +function h7(a){var b,c,d,e;d=j8((!a.c&&(a.c=Y7(a.f)),a.c),0);if(a.e==0||a.a==0&&a.f!=-1&&a.e<0){return d}b=g7(a)<0?1:0;c=a.e;e=(d.length+1+u5(zA(a.e)),new N6);b==1&&(e.a+='-',e);if(a.e>0){c-=d.length-b;if(c>=0){e.a+='0.';for(;c>X6.length;c-=X6.length){J6(e,X6)}K6(e,X6,zA(c));I6(e,d.substr(b,d.length-b))}else{c=b-c;I6(e,j6(d,b,zA(c)));e.a+='.';I6(e,i6(d,zA(c)))}}else{I6(e,d.substr(b,d.length-b));for(;c<-X6.length;c+=X6.length){J6(e,X6)}K6(e,X6,zA(-c))}return e.a} +function mId(a,b){var c,d,e,f,g,h,i;if(a==null){return null}f=a.length;if(f==0){return ''}i=tz(CA,yKd,22,f,15,1);Tpb(0,f,a.length);Tpb(0,f,i.length);_5(a,0,f,i,0);c=null;h=b;for(e=0,g=0;e0?j6(c.a,0,f-1):''}}else{return !c?a:c.a}} +function nwc(a){var b,c,d,e,f,g,h,i,j,k,l,m,n;for(c=(j=(new R9(a.c.b)).a.Tb().tc(),new W9(j));c.a.hc();){b=(h=kA(c.a.ic(),38),kA(h.lc(),180));e=b.a;e==null&&(e='');d=fwc(a.c,e);!d&&e.length==0&&(d=rwc(a));!!d&&!qg(d.c,b,false)&&mib(d.c,b)}for(g=sib(a.a,0);g.b!=g.d.c;){f=kA(Gib(g),436);k=gwc(a.c,f.a);n=gwc(a.c,f.b);!!k&&!!n&&mib(k.c,new fGc(n,f.c))}xib(a.a);for(m=sib(a.b,0);m.b!=m.d.c;){l=kA(Gib(m),436);b=cwc(a.c,l.a);i=gwc(a.c,l.b);!!b&&!!i&&Bvc(b,i,l.c)}xib(a.b)} +function Lkc(a,b,c){var d,e,f,g,h,i,j,k,l;i=c+b.c.c.a;for(l=new ccb(b.i);l.a1;for(h=new fIb(k.c);_bb(h.a)||_bb(h.b);){g=kA(_bb(h.a)?acb(h.a):acb(h.b),14);j=g.c==k?g.d:g.c;$wnd.Math.abs(Pyc(xz(pz(aU,1),cKd,9,0,[j.g.k,j.k,j.a])).b-f.b)>1&&Fkc(a,g,f,e,k)}}} +function Bbd(a){var b,c,d,e,f,g,h,i;if(!a.f){i=new ied;h=new ied;b=tbd;g=b.a.Zb(a,b);if(g==null){for(f=new a0c(Kbd(a));f.e!=f.i._b();){e=kA($_c(f),24);gXc(i,Bbd(e))}b.a.$b(a)!=null;b.a._b()==0&&undefined}for(d=(!a.s&&(a.s=new zkd(zY,a,21,17)),new a0c(a.s));d.e!=d.i._b();){c=kA($_c(d),158);sA(c,62)&&fXc(h,kA(c,17))}_Xc(h);a.r=new Aed(a,(kA(WXc(Ibd((P6c(),O6c).o),6),17),h.i),h.g);gXc(i,a.r);_Xc(i);a.f=new Vdd((kA(WXc(Ibd(O6c.o),5),17),i.i),i.g);Jbd(a).b&=-3}return a.f} +function jtb(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o;g=a.o;d=tz(FA,OKd,22,g,15,1);e=tz(FA,OKd,22,g,15,1);c=a.p;b=tz(FA,OKd,22,c,15,1);f=tz(FA,OKd,22,c,15,1);for(j=0;j=0&&!Qtb(a,k,l)){--l}e[k]=l}for(n=0;n=0&&!Qtb(a,h,o)){--h}f[o]=h}for(i=0;ib[m]&&md[i]&&Utb(a,i,m,false,true)}}} +function $Qc(){$Qc=d3;YQc=xz(pz(CA,1),yKd,22,15,[48,49,50,51,52,53,54,55,56,57,65,66,67,68,69,70]);ZQc=new RegExp('[ \t\n\r\f]+');try{XQc=xz(pz(hZ,1),oJd,1699,0,[new hhd((px(),rx("yyyy-MM-dd'T'HH:mm:ss'.'SSSZ",ux((tx(),tx(),sx))))),new hhd(rx("yyyy-MM-dd'T'HH:mm:ss'.'SSS",ux((null,sx)))),new hhd(rx("yyyy-MM-dd'T'HH:mm:ss",ux((null,sx)))),new hhd(rx("yyyy-MM-dd'T'HH:mm",ux((null,sx)))),new hhd(rx('yyyy-MM-dd',ux((null,sx))))])}catch(a){a=w2(a);if(!sA(a,78))throw x2(a)}} +function UYb(a,b){var c,d,e,f,g;f=new Vyc;switch(a.a.g){case 1:case 3:pg(f,b.e.a);mib(f,b.i.k);pg(f,Wr(b.j.a));mib(f,b.a.k);pg(f,b.f.a);break;default:pg(f,b.e.a);pg(f,Wr(b.j.a));pg(f,b.f.a);}xib(b.f.a);pg(b.f.a,f);LEb(b.f,b.e.c);c=kA(nub(b.e,(J6b(),p5b)),74);e=kA(nub(b.j,p5b),74);d=kA(nub(b.f,p5b),74);if(!!c||!!e||!!d){g=new Vyc;SYb(g,d);SYb(g,e);SYb(g,c);qub(b.f,p5b,g)}LEb(b.j,null);MEb(b.j,null);LEb(b.e,null);MEb(b.e,null);FGb(b.a,null);FGb(b.i,null);!!b.g&&UYb(a,b.g)} +function Gvb(a){owc(a,new Evc(Pvc(Mvc(Ovc(Nvc(new Rvc,SMd),'ELK DisCo'),'Layouter for arranging unconnected subgraphs. The subgraphs themselves are, by default, not laid out.'),new Jvb)));mwc(a,SMd,TMd,CWc(Evb));mwc(a,SMd,UMd,CWc(yvb));mwc(a,SMd,VMd,CWc(tvb));mwc(a,SMd,WMd,CWc(zvb));mwc(a,SMd,rMd,CWc(Cvb));mwc(a,SMd,sMd,CWc(Bvb));mwc(a,SMd,qMd,CWc(Dvb));mwc(a,SMd,tMd,CWc(Avb));mwc(a,SMd,NMd,CWc(vvb));mwc(a,SMd,OMd,CWc(uvb));mwc(a,SMd,PMd,CWc(wvb));mwc(a,SMd,QMd,CWc(xvb))} +function $w(a,b,c){var d,e,f,g,h,i,j,k,l;g=new Yx;j=xz(pz(FA,1),OKd,22,15,[0]);e=-1;f=0;d=0;for(i=0;i0){if(e<0&&k.a){e=i;f=j[0];d=0}if(e>=0){h=k.b;if(i==e){h-=d++;if(h==0){return 0}}if(!fx(b,j,k,h,g)){i=e-1;j[0]=f;continue}}else{e=-1;if(!fx(b,j,k,0,g)){return 0}}}else{e=-1;if(k.c.charCodeAt(0)==32){l=j[0];dx(b,j);if(j[0]>l){continue}}else if(h6(b,k.c,j[0])){j[0]+=k.c.length;continue}return 0}}if(!Xx(g,c)){return 0}return j[0]} +function Azb(a,b,c){var d,e,f,g,h;d=kA(nub(a,(J6b(),O4b)),19);c.a>b.a&&(d.pc((l_b(),f_b))?(a.c.a+=(c.a-b.a)/2):d.pc(h_b)&&(a.c.a+=c.a-b.a));c.b>b.b&&(d.pc((l_b(),j_b))?(a.c.b+=(c.b-b.b)/2):d.pc(i_b)&&(a.c.b+=c.b-b.b));if(kA(nub(a,(E2b(),X1b)),19).pc((Z0b(),S0b))&&(c.a>b.a||c.b>b.b)){for(h=new ccb(a.a);h.ab.a&&(d.pc((l_b(),f_b))?(a.c.a+=(c.a-b.a)/2):d.pc(h_b)&&(a.c.a+=c.a-b.a));c.b>b.b&&(d.pc((l_b(),j_b))?(a.c.b+=(c.b-b.b)/2):d.pc(i_b)&&(a.c.b+=c.b-b.b));if(kA(nub(a,(E2b(),X1b)),19).pc((Z0b(),S0b))&&(c.a>b.a||c.b>b.b)){for(g=new ccb(a.a);g.an||d+e>j){throw x2(new p3)}if((l.i&1)==0&&m!=i){k=lA(a);f=lA(c);if(yA(a)===yA(c)&&bd;){wz(f,h,k[--b])}}else{for(h=d+e;d0&&xpb(a,b,c,d,e,true)} +function azb(a,b,c){var d,e,f,g,h,i,j,k,l,m;k=new Hjb(new qzb(c));h=tz(u2,$Md,22,a.f.e.c.length,16,1);wcb(h,h.length);c[b.b]=0;for(j=new ccb(a.f.e);j.a=a.b.length){f[e++]=g.b[d++];f[e++]=g.b[d++]}else if(d>=g.b.length){f[e++]=a.b[c++];f[e++]=a.b[c++]}else if(g.b[d]=h?l8(a.a,f,b.a,h):l8(b.a,h,a.a,f)}else{e=f!=h?f>h?1:-1:n8(a.a,b.a,f);if(e==0){return y7(),x7}if(e==1){m=g;l=q8(a.a,f,b.a,h)}else{m=i;l=q8(b.a,h,a.a,f)}}j=new M7(m,l.length,l);A7(j);return j} +function xAb(a,b){var c,d,e,f,g,h;for(g=new e9((new X8(a.f.b)).a);g.b;){f=c9(g);e=kA(f.kc(),536);if(b==1){if(e.Je()!=(gBc(),fBc)&&e.Je()!=bBc){continue}}else{if(e.Je()!=(gBc(),cBc)&&e.Je()!=dBc){continue}}d=kA(kA(f.lc(),48).b,80);h=kA(kA(f.lc(),48).a,172);c=h.c;switch(e.Je().g){case 2:d.g.c=a.e.a;d.g.b=$wnd.Math.max(1,d.g.b+c);break;case 1:d.g.c=d.g.c+c;d.g.b=$wnd.Math.max(1,d.g.b-c);break;case 4:d.g.d=a.e.b;d.g.a=$wnd.Math.max(1,d.g.a+c);break;case 3:d.g.d=d.g.d+c;d.g.a=$wnd.Math.max(1,d.g.a-c);}}} +function NFb(a,b,c,d){var e,f,g,h,i,j,k;f=PFb(d);h=Vpb(mA(nub(d,(J6b(),z5b))));if((h||Vpb(mA(nub(a,l5b))))&&!XCc(kA(nub(a,Z5b),83))){e=IDc(f);i=VFb(a,c,c==(U7b(),S7b)?e:GDc(e))}else{i=new lHb;jHb(i,a);if(b){k=i.k;k.a=b.a-a.k.a;k.b=b.b-a.k.b;wyc(k,0,0,a.n.a,a.n.b);kHb(i,JFb(i,f))}else{e=IDc(f);kHb(i,c==(U7b(),S7b)?e:GDc(e))}g=kA(nub(d,(E2b(),X1b)),19);j=i.i;switch(f.g){case 2:case 1:(j==(FDc(),lDc)||j==CDc)&&g.nc((Z0b(),W0b));break;case 4:case 3:(j==(FDc(),kDc)||j==EDc)&&g.nc((Z0b(),W0b));}}return i} +function zfc(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p;h=tz(FA,OKd,22,b.b.c.length,15,1);j=tz(QK,jKd,232,b.b.c.length,0,1);i=tz(RK,VNd,8,b.b.c.length,0,1);for(l=a.a,m=0,n=l.length;m0&&!!i[d]&&(o=l8b(a.b,i[d],e));p=$wnd.Math.max(p,e.c.c.b+o)}for(f=new ccb(k.f);f.a'}i!=null&&(b.a+=''+i,b)}else if(a.e){h=a.e.zb;h!=null&&(b.a+=''+h,b)}else{b.a+='?';if(a.b){b.a+=' super ';whd(a.b,b)}else{if(a.f){b.a+=' extends ';whd(a.f,b)}}}} +function ezb(a,b){var c,d,e,f,g,h,i,j;a.f=b;a.d=kA(nub(a.f,(Ryb(),Myb)),348);a.g=kA(nub(a.f,Qyb),21).a;a.e=Vpb(nA(nub(a.f,Nyb)));a.c=Vpb(nA(nub(a.f,Lyb)));Up(a.b);for(d=new ccb(a.f.c);d.a=0){return false}else if(!!c.e&&e==(RGb(),KGb)&&e!=c.e){return false}else{b.o=c.b;tbb(c.f,b)}c.e=e;if(e==(RGb(),OGb)||e==QGb||e==KGb){for(g=new ccb(b.i);g.a0&&d<=e){j-=d;f=h;g=h}else{a.a==null&&bZb(a);if(a.a[g]){j+=e;f=g}}if(f>0){tbb(l,d5(f));h=-1;k=false;do{if(c.hc()){i=d5(kA(c.ic(),21).a+j)}else{break m}}while(i.a<=g)}}else{a.a==null&&bZb(a);a.a[g]&&(h=g);if(g==i.a){a.a==null&&bZb(a);if(a.a[g]){l.c[l.c.length]=i;h=-1;if(c.hc()){i=d5(kA(c.ic(),21).a+j)}else{break}}else{k=true}}}++g}return l} +function bQc(a){var b,c,d,e;if((a.Db&64)!=0)return bPc(a);b=new O6(QSd);d=a.k;if(!d){!a.n&&(a.n=new zkd(LV,a,1,7));if(a.n.i>0){e=(!a.n&&(a.n=new zkd(LV,a,1,7)),kA(kA(WXc(a.n,0),137),263)).a;!e||I6(I6((b.a+=' "',b),e),'"')}}else{I6(I6((b.a+=' "',b),d),'"')}c=(!a.b&&(a.b=new pxd(HV,a,4,7)),!(a.b.i<=1&&(!a.c&&(a.c=new pxd(HV,a,5,8)),a.c.i<=1)));c?(b.a+=' [',b):(b.a+=' ',b);I6(b,zb(new Cb(qJd),new a0c(a.b)));c&&(b.a+=']',b);b.a+=' -> ';c&&(b.a+='[',b);I6(b,zb(new Cb(qJd),new a0c(a.c)));c&&(b.a+=']',b);return b.a} +function iKb(a){var b,c,d,e,f,g;e=new Gbb;for(g=new ccb(a.c.i);g.aa.n.b){return false}c=AGb(a,kDc);h=b.d+b.a+(c._b()-1)*g;if(h>a.n.b){return false}}return true} +function rjc(a,b,c){var d,e,f,g,h,i,j,k;d=a.a.o==(pic(),oic)?oLd:pLd;h=sjc(a,new qjc(b,c));if(!h.a&&h.c){mib(a.c,h);return d}else if(h.a){e=h.a.c;i=h.a.d;if(c){j=a.a.c==(hic(),gic)?i:e;f=a.a.c==gic?e:i;g=a.a.g[f.g.o];k=Vpb(a.a.p[g.o])+Vpb(a.a.d[f.g.o])+f.k.b+f.a.b-Vpb(a.a.d[j.g.o])-j.k.b-j.a.b}else{j=a.a.c==(hic(),fic)?i:e;f=a.a.c==fic?e:i;k=Vpb(a.a.p[a.a.g[f.g.o].o])+Vpb(a.a.d[f.g.o])+f.k.b+f.a.b-Vpb(a.a.d[j.g.o])-j.k.b-j.a.b}a.a.n[a.a.g[e.g.o].o]=(B3(),B3(),true);a.a.n[a.a.g[i.g.o].o]=(null,true);return k}return d} +function lEb(a,b,c,d,e,f,g){var h,i,j,k,l,m,n;l=Vpb(mA(nub(b,(J6b(),A5b))));m=null;f==(U7b(),R7b)&&d.c.g==c?(m=d.c):f==S7b&&d.d.g==c&&(m=d.d);j=g;if(!g||!l||!!m){k=(FDc(),DDc);m?(k=m.i):XCc(kA(nub(c,Z5b),83))&&(k=f==R7b?EDc:kDc);i=iEb(a,b,c,f,k,d);h=hEb((uGb(c),d));if(f==R7b){LEb(h,kA(xbb(i.i,0),11));MEb(h,e)}else{LEb(h,e);MEb(h,kA(xbb(i.i,0),11))}j=new vEb(d,h,i,kA(nub(i,(E2b(),i2b)),11),f,!m)}else{tbb(g.e,d);n=$wnd.Math.max(Vpb(nA(nub(g.d,f5b))),Vpb(nA(nub(d,f5b))));qub(g.d,f5b,n)}Le(a.a,d,new yEb(j.d,b,f));return j} +function Wqc(a,b){var c,d,e,f,g,h,i,j,k,l;qub(b,(Ppc(),Fpc),0);i=kA(nub(b,Dpc),76);if(b.d.b==0){if(i){k=Vpb(nA(nub(i,Ipc)))+a.a+Xqc(i,b);qub(b,Ipc,k)}else{qub(b,Ipc,0)}}else{for(d=(f=sib((new Aoc(b)).a.d,0),new Doc(f));Fib(d.a);){c=kA(Gib(d.a),170).c;Wqc(a,c)}h=kA(jo((g=sib((new Aoc(b)).a.d,0),new Doc(g))),76);l=kA(io((e=sib((new Aoc(b)).a.d,0),new Doc(e))),76);j=(Vpb(nA(nub(l,Ipc)))+Vpb(nA(nub(h,Ipc))))/2;if(i){k=Vpb(nA(nub(i,Ipc)))+a.a+Xqc(i,b);qub(b,Ipc,k);qub(b,Fpc,Vpb(nA(nub(b,Ipc)))-j);Vqc(a,b)}else{qub(b,Ipc,j)}}} +function MMb(a,b){var c,d,e,f,g,h,i,j,k;j=kA(nub(a,(E2b(),V1b)),69);d=kA(xbb(a.i,0),11);j==(FDc(),lDc)?kHb(d,CDc):j==CDc&&kHb(d,lDc);if(kA(nub(b,(J6b(),J5b)),185).pc((bEc(),aEc))){i=Vpb(nA(nub(a,s6b)));g=Vpb(nA(nub(a,q6b)));h=kA(nub(b,a6b),275);if(h==(eDc(),cDc)){c=i;k=a.n.a/2-d.k.a;for(f=new ccb(d.e);f.a0&&d>=-6){if(d>=0){L6(f,c-zA(a.e),String.fromCharCode(46))}else{f.a=j6(f.a,0,b-1)+'0.'+i6(f.a,b-1);L6(f,b+1,r6(X6,0,-zA(d)-1))}}else{if(c-b>=1){L6(f,b,String.fromCharCode(46));++c}L6(f,c,String.fromCharCode(69));d>0&&L6(f,++c,String.fromCharCode(43));L6(f,++c,''+V2(E2(d)))}a.g=f.a;return a.g} +function acc(a,b,c){var d,e,f,g;this.j=a;this.e=REb(a);this.o=kA(nub(this.j,(E2b(),n2b)),8);this.i=!!this.o;this.p=this.i?kA(xbb(c,uGb(this.o).o),204):null;e=kA(nub(a,X1b),19);this.g=e.pc((Z0b(),S0b));this.b=new Gbb;this.d=new Rdc(this.e);g=kA(nub(this.j,s2b),214);this.q=rcc(b,g,this.e);this.k=new qdc(this);f=Sr(xz(pz(yQ,1),oJd,208,0,[this,this.d,this.k,this.q]));if(b==(cdc(),_cc)){d=new Pbc(this.e);f.c[f.c.length]=d;this.c=new ubc(d,g,kA(this.q,422))}else{this.c=new MXb(b,this)}tbb(f,this.c);afc(f,this.e);this.s=pdc(this.k)} +function xsb(a,b){var c,d,e,f;c=new Csb;d=kA(Nob(Tob(new Zob(null,new ekb(a.f,16)),c),Tmb(new unb,new wnb,new Nnb,new Pnb,xz(pz($G,1),jKd,150,0,[(Ymb(),Xmb),Wmb]))),19);e=d._b();e=e==2?1:0;e==1&&D2(I2(kA(Nob(Pob(d.uc(),new Esb),mnb(r5(0),new Bnb)),149).a,2),0)&&(e=0);d=kA(Nob(Tob(new Zob(null,new ekb(b.f,16)),c),Tmb(new unb,new wnb,new Nnb,new Pnb,xz(pz($G,1),jKd,150,0,[Xmb,Wmb]))),19);f=d._b();f=f==2?1:0;f==1&&D2(I2(kA(Nob(Pob(d.uc(),new Gsb),mnb(r5(0),new Bnb)),149).a,2),0)&&(f=0);if(e=a.b[e+1]){e+=2}else if(c0){d=new Ibb(kA(Ke(a.a,f),19));bdb();Dbb(d,new BEb(b));e=new s9(f.b,0);while(e.b=sLd?w6(c,pGd(d)):s6(c,d&AKd);g=(++TGd,new dId(10,null,0));Tkb(a.a,g,h-1)}else{c=(g.ll().length+f,new A6);w6(c,g.ll())}if(b.e==0){d=b.jl();d>=sLd?w6(c,pGd(d)):s6(c,d&AKd)}else{w6(c,b.ll())}kA(g,474).b=c.a} +function bRb(a,b){var c,d,e,f,g,h,i,j,k,l,m,n;xEc(b,'Edge splitting',1);if(a.b.c.length<=2){zEc(b);return}f=new s9(a.b,0);g=(Lpb(f.bv)){i=2;g=jJd}else if(i==0){i=1;g=A}else{i=0;g=A}}else{n=A>=g||g-A0){e=d+(o-1)*c;!!l&&(e+=d);e0){Rw(a,c,0);c.a+=String.fromCharCode(d);e=Ww(b,f);Rw(a,c,e);f+=e-1;continue}if(d==39){if(f+10){b=new u1c(a.i,a.g);c=a.i;f=c<100?null:new f_c(c);if(a.xi()){for(d=0;d0){h=a.g;j=a.i;UXc(a);f=j<100?null:new f_c(j);for(d=0;d0){b=new eYc(a.Uh());e=i<100?null:new f_c(i);dZc(a,i,b.g);d=i==1?a.mi(4,WXc(b,0),null,0,h):a.mi(6,b,null,-1,h);if(a.qi()){for(c=new a0c(b);c.e!=c.i._b();){e=a.si($_c(c),e)}if(!e){a.ni(d)}else{e.Sh(d);e.Th()}}else{if(!e){a.ni(d)}else{e.Sh(d);e.Th()}}}else{dZc(a,a.hi(),a.ii());a.ni(a.mi(6,(bdb(),$cb),null,-1,h))}}else if(a.qi()){i=a.hi();if(i>0){g=a.ii();dZc(a,i,g);e=i<100?null:new f_c(i);for(c=0;c>13|(a.m&15)<<9;e=a.m>>4&8191;f=a.m>>17|(a.h&255)<<5;g=(a.h&1048320)>>8;h=b.l&8191;i=b.l>>13|(b.m&15)<<9;j=b.m>>4&8191;k=b.m>>17|(b.h&255)<<5;l=(b.h&1048320)>>8;B=c*h;C=d*h;D=e*h;F=f*h;G=g*h;if(i!=0){C+=c*i;D+=d*i;F+=e*i;G+=f*i}if(j!=0){D+=c*j;F+=d*j;G+=e*j}if(k!=0){F+=c*k;G+=d*k}l!=0&&(G+=c*l);n=B&cLd;o=(C&511)<<13;m=n+o;q=B>>22;r=C>>9;s=(D&262143)<<4;t=(F&31)<<17;p=q+r+s+t;v=D>>18;w=F>>5;A=(G&4095)<<8;u=v+w+A;p+=m>>22;m&=cLd;u+=p>>22;p&=cLd;u&=dLd;return Cz(m,p,u)} +function Mzb(a,b){var c,d,e,f,g;c=Vpb(nA(nub(b,(J6b(),k6b))));c<2&&qub(b,k6b,2);d=kA(nub(b,W4b),110);d==(gBc(),eBc)&&qub(b,W4b,PFb(b));e=kA(nub(b,h6b),21);e.a==0?qub(b,(E2b(),s2b),new akb):qub(b,(E2b(),s2b),new bkb(e.a));f=mA(nub(b,E5b));f==null&&qub(b,E5b,(B3(),yA(nub(b,a5b))===yA((DBc(),zBc))?true:false));g=new r8b(b);qub(b,(E2b(),v2b),g);Wuc(a.a);Zuc(a.a,(Wzb(),Rzb),kA(nub(b,U4b),285));Zuc(a.a,Szb,kA(nub(b,w5b),285));Zuc(a.a,Tzb,kA(nub(b,T4b),285));Zuc(a.a,Uzb,kA(nub(b,I5b),285));Zuc(a.a,Vzb,Djc(kA(nub(b,a5b),197)));Tuc(a.a,Lzb(b));qub(b,r2b,Uuc(a.a,b))} +function SMc(b,c){var d,e,f,g,h,i,j,k,l,m;j=c.length-1;i=c.charCodeAt(j);if(i==93){h=b6(c,o6(91));if(h>=0){f=WMc(b,c.substr(1,h-1));l=c.substr(h+1,j-(h+1));return QMc(b,l,f)}}else{d=-1;if(/\d/.test(String.fromCharCode(i))){d=e6(c,o6(46),j-1);if(d>=0){e=kA(JMc(b,_Mc(b,c.substr(1,d-1)),false),52);try{k=H3(c.substr(d+1,c.length-(d+1)),oKd,jJd)}catch(a){a=w2(a);if(sA(a,118)){g=a;throw x2(new t6c(g))}else throw x2(a)}if(k4){if(a.Li(b)){if(a.Dj()){e=kA(b,42);d=e.ng();i=d==a.e&&(a.Pj()?e.hg(e.og(),a.Lj())==a.Mj():-1-e.og()==a.pi());if(a.Qj()&&!i&&!d&&!!e.sg()){for(f=0;f=q-1){return null}e=new Gbb;e.c[e.c.length]=b;u=b;g=c;o=-1;h=kA(xbb(a.d.c.b,c),26);for(n=0;n1&&g0&&(j=a.k.a/f);break;case 2:case 4:e=a.g.n.b;e>0&&(j=a.k.b/e);}qub(a,(E2b(),q2b),j)}i=a.n;g=a.a;if(d){g.a=d.a;g.b=d.b;a.b=true}else if(b!=TCc&&b!=UCc&&h!=DDc){switch(h.g){case 1:g.a=i.a/2;break;case 2:g.a=i.a;g.b=i.b/2;break;case 3:g.a=i.a/2;g.b=i.b;break;case 4:g.b=i.b/2;}}else{g.a=i.a/2;g.b=i.b/2}} +function YJb(a,b,c){var d,e,f,g,h,i,j,k,l,m,n,o;xEc(c,dOd,1);a.c=b;m=a.c.a;f=0;for(j=new ccb(m);j.ao){n=1;e=h.n.a;while(e>g){++n;e=(h.n.a-(n-1)*a.d)/n}tbb(d,new aKb(a,h,n,e))}}for(i=new ccb(d);i.a1&&WEc(g)*VEc(g)/2>h[0]){f=0;while(fh[f]){++f}o=new A9(p,0,f+1);l=new _Ec(o);k=WEc(g)/VEc(g);i=MEc(l,b,new XGb,c,d,e,k);vyc(Cyc(l.e),i);Spb(Djb(m,l));n=new A9(p,f+1,p.c.length);Ajb(m,n);p.c=tz(NE,oJd,1,0,5,1);j=0;tcb(h,h.length,0)}else{q=m.b.c.length==0?null:xbb(m.b,0);q!=null&&Gjb(m,0);j>0&&(h[j]=h[j-1]);h[j]+=WEc(g)*VEc(g);++j;p.c[p.c.length]=g}}return p} +function Uuc(a,b){var c,d,e,f,g,h,i,j,k,l,m;if(a.e&&a.c.c0.5?(r-=g*2*(o-0.5)):o<0.5&&(r+=f*2*(0.5-o));e=h.d.b;rq.a-p-k&&(r=q.a-p-k);h.k.a=b+r}} +function SQb(a,b){var c,d,e,f,g;for(g=new ccb(a.i);g.a0&&i9b(a,h,l)}for(e=new ccb(l);e.a0){a.a=i+(n-1)*f;b.c.b+=a.a;b.e.b+=a.a}}if(o.a._b()!=0){m=new Vjc(1,f);n=Ujc(m,b,o,p,b.e.b+i-b.c.b);n>0&&(b.e.b+=i+(n-1)*f)}} +function Dz(a,b,c){var d,e,f,g,h,i;if(b.l==0&&b.m==0&&b.h==0){throw x2(new o3('divide by zero'))}if(a.l==0&&a.m==0&&a.h==0){c&&(zz=Cz(0,0,0));return Cz(0,0,0)}if(b.h==eLd&&b.m==0&&b.l==0){return Ez(a,c)}i=false;if(b.h>>19!=0){b=Sz(b);i=true}g=Kz(b);f=false;e=false;d=false;if(a.h==eLd&&a.m==0&&a.l==0){e=true;f=true;if(g==-1){a=Bz((fA(),bA));d=true;i=!i}else{h=Wz(a,g);i&&Iz(h);c&&(zz=Cz(0,0,0));return h}}else if(a.h>>19!=0){f=true;a=Sz(a);d=true;i=!i}if(g!=-1){return Fz(a,g,i,f,c)}if(Pz(a,b)<0){c&&(f?(zz=Sz(a)):(zz=Cz(a.l,a.m,a.h)));return Cz(0,0,0)}return Gz(d?a:Cz(a.l,a.m,a.h),b,i,f,e,c)} +function Mvb(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s;j=b.c;e=Lub(a.e);l=Dyc(Fyc(xyc(Kub(a.e)),a.d*a.a,a.c*a.b),-0.5);c=e.a-l.a;d=e.b-l.b;g=b.a;c=g.c-c;d=g.d-d;for(i=new ccb(j);i.a=0){return c}switch(_td(rtd(a,c))){case 2:{if(Z5('',ptd(a,c.Wi()).be())){i=cud(rtd(a,c));h=bud(rtd(a,c));k=std(a,b,i,h);if(k){return k}e=gtd(a,b);for(g=0,l=e._b();gb.e||b.f>a.e){return}c=0;d=0;for(g=a.t.a.Xb().tc();g.hc();){e=kA(g.ic(),11);Cnc(Pyc(xz(pz(aU,1),cKd,9,0,[e.g.k,e.k,e.a])).b,b.f,b.e)&&++c}for(h=a.o.a.Xb().tc();h.hc();){e=kA(h.ic(),11);Cnc(Pyc(xz(pz(aU,1),cKd,9,0,[e.g.k,e.k,e.a])).b,b.f,b.e)&&--c}for(i=b.t.a.Xb().tc();i.hc();){e=kA(i.ic(),11);Cnc(Pyc(xz(pz(aU,1),cKd,9,0,[e.g.k,e.k,e.a])).b,a.f,a.e)&&++d}for(f=b.o.a.Xb().tc();f.hc();){e=kA(f.ic(),11);Cnc(Pyc(xz(pz(aU,1),cKd,9,0,[e.g.k,e.k,e.a])).b,a.f,a.e)&&--d}if(c0&&c.charCodeAt(0)!=47)){throw x2(new O4('invalid opaquePart: '+c))}if(a&&!(b!=null&&Udb(I5c,b.toLowerCase()))&&!(c==null||!Q5c(c,E5c,F5c))){throw x2(new O4(UUd+c))}if(a&&b!=null&&Udb(I5c,b.toLowerCase())&&!g6c(c)){throw x2(new O4(UUd+c))}if(!h6c(d)){throw x2(new O4('invalid device: '+d))}if(!j6c(e)){g=e==null?'invalid segments: null':'invalid segment: '+X5c(e);throw x2(new O4(g))}if(!(f==null||b6(f,o6(35))==-1)){throw x2(new O4('invalid query: '+f))}} +function hxc(b,c){var d;if(c==null||Z5(c,mJd)){return null}if(c.length==0&&b.k!=(Uxc(),Pxc)){return null}switch(b.k.g){case 1:return $5(c,TRd)?(B3(),A3):$5(c,URd)?(B3(),z3):null;case 2:try{return d5(H3(c,oKd,jJd))}catch(a){a=w2(a);if(sA(a,118)){return null}else throw x2(a)}case 4:try{return G3(c)}catch(a){a=w2(a);if(sA(a,118)){return null}else throw x2(a)}case 3:return c;case 5:cxc(b);return fxc(b,c);case 6:cxc(b);return gxc(b,b.a,c);case 7:try{d=exc(b);d.gf(c);return d}catch(a){a=w2(a);if(sA(a,30)){return null}else throw x2(a)}default:throw x2(new Q4('Invalid type set for this layout option.'));}} +function XVb(a){var b,c,d,e,f,g,h,i,j,k,l;for(g=new ccb(a.d.b);g.a0&&krb(j,true,(gBc(),dBc));h.j==(RGb(),MGb)&&lrb(j);I8(a.f,h,b)}}} +function tud(a,b,c){var d,e,f,g,h,i,j,k;if(c._b()==0){return false}h=(wyd(),kA(b,61).bj());f=h?c:new dYc(c._b());if(zyd(a.e,b)){if(b.xh()){for(j=c.tc();j.hc();){i=j.ic();if(!Eud(a,b,i,sA(b,62)&&(kA(kA(b,17),62).Bb&sLd)!=0)){e=xyd(b,i);f.pc(e)||f.nc(e)}}}else if(!h){for(j=c.tc();j.hc();){i=j.ic();e=xyd(b,i);f.nc(e)}}}else{if(c._b()>1){throw x2(new O4(nWd))}k=yyd(a.e.mg(),b);d=kA(a.g,124);for(g=0;g1&&g>1){k=hKb(a,u);h=kA(xbb(a.d.c.b,g),26);l=kA(xbb(a.d.c.b,g-1),26);w=kA(p.cd(m++),21).a;r=x5(w,l.a.c.length);EGb(u,r,l);EGb(k,t,h);t=r;!!u&&(e.c[e.c.length]=u,true);u=k;--v;++f;--g}s=(d-(e.c.length-1)*a.d.d)/e.c.length;for(j=new ccb(e);j.a0&&lKc(a,b,false,false,e);l=kKc(a,b,true,false)}else{lKc(a,b,false,i,0);l=kKc(a,b,true,false)}}else{if(k){h=kA(kA(Ke(a.r,b),19),60)._b();f=iKc(a,b);l=f*h+a.u*(h-1);f>0&&lKc(a,b,true,false,f)}else{lKc(a,b,true,false,0);l=kKc(a,b,true,true)}}kJc(a,b)==(JCc(),GCc)&&(l+=2*a.u);c.a.a=l} +function nLc(a,b){var c,d,e,f,g,h,i,j,k,l;c=kA(Cfb(a.b,b),114);if(kA(kA(Ke(a.r,b),19),60).Wb()){c.n.d=0;c.n.a=0;return}c.n.d=a.A.d;c.n.a=a.A.a;e=a.v.pc((bEc(),aEc));k=kA(kA(Ke(a.r,b),19),60)._b()==2;h=a.t==(eDc(),dDc);j=a.w.pc((qEc(),oEc));l=a.w.pc(pEc);d=0;if(!e||k&&h){d=rLc(a,b,false,false)}else if(h){if(l){f=qLc(a,b,j);f>0&&sLc(a,b,f,false,false);d=rLc(a,b,true,false)}else{sLc(a,b,0,false,j);d=rLc(a,b,true,false)}}else{if(l){i=kA(kA(Ke(a.r,b),19),60)._b();g=pLc(a,b);d=g*i+a.u*(i-1);g>0&&sLc(a,b,g,true,false)}else{sLc(a,b,0,true,false);d=rLc(a,b,true,true)}}kJc(a,b)==(JCc(),GCc)&&(d+=2*a.u);c.a.b=d} +function qAd(){qAd=d3;Uzd=(Tzd(),Szd).b;Xzd=kA(WXc(Ibd(Szd.b),0),29);Vzd=kA(WXc(Ibd(Szd.b),1),29);Wzd=kA(WXc(Ibd(Szd.b),2),29);fAd=Szd.bb;kA(WXc(Ibd(Szd.bb),0),29);kA(WXc(Ibd(Szd.bb),1),29);hAd=Szd.fb;iAd=kA(WXc(Ibd(Szd.fb),0),29);kA(WXc(Ibd(Szd.fb),1),29);kA(WXc(Ibd(Szd.fb),2),17);kAd=Szd.qb;nAd=kA(WXc(Ibd(Szd.qb),0),29);kA(WXc(Ibd(Szd.qb),1),17);kA(WXc(Ibd(Szd.qb),2),17);lAd=kA(WXc(Ibd(Szd.qb),3),29);mAd=kA(WXc(Ibd(Szd.qb),4),29);pAd=kA(WXc(Ibd(Szd.qb),6),29);oAd=kA(WXc(Ibd(Szd.qb),5),17);Yzd=Szd.j;Zzd=Szd.k;$zd=Szd.q;_zd=Szd.w;aAd=Szd.B;bAd=Szd.A;cAd=Szd.C;dAd=Szd.D;eAd=Szd._;gAd=Szd.cb;jAd=Szd.hb} +function Zac(a,b,c){var d,e,f,g,h,i,j,k,l,m,n;a.c=0;a.b=0;d=2*b.c.a.c.length+1;o:for(l=c.tc();l.hc();){k=kA(l.ic(),11);h=k.i==(FDc(),lDc)||k.i==CDc;n=0;if(h){m=kA(nub(k,(E2b(),p2b)),8);if(!m){continue}n+=Uac(a,d,k,m)}else{for(j=new ccb(k.f);j.a0){a.f[k.o]=n/(k.d.c.length+k.f.c.length);a.c=$wnd.Math.min(a.c,a.f[k.o]);a.b=$wnd.Math.max(a.b,a.f[k.o])}else h&&(a.f[k.o]=n)}} +function wBd(a){a.b=null;a.bb=null;a.fb=null;a.qb=null;a.a=null;a.c=null;a.d=null;a.e=null;a.f=null;a.n=null;a.M=null;a.L=null;a.Q=null;a.R=null;a.K=null;a.db=null;a.eb=null;a.g=null;a.i=null;a.j=null;a.k=null;a.gb=null;a.o=null;a.p=null;a.q=null;a.r=null;a.$=null;a.ib=null;a.S=null;a.T=null;a.t=null;a.s=null;a.u=null;a.v=null;a.w=null;a.B=null;a.A=null;a.C=null;a.D=null;a.F=null;a.G=null;a.H=null;a.I=null;a.J=null;a.P=null;a.Z=null;a.U=null;a.V=null;a.W=null;a.X=null;a.Y=null;a._=null;a.ab=null;a.cb=null;a.hb=null;a.nb=null;a.lb=null;a.mb=null;a.ob=null;a.pb=null;a.jb=null;a.kb=null;a.N=false;a.O=false} +function Lic(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t;p=b.b.c.length;if(p<3){return}n=tz(FA,OKd,22,p,15,1);l=0;for(k=new ccb(b.b);k.ag)&&Ggb(a.c,kA(q.b,14))}}++h}f=g}}}} +function I$c(a){var b;switch(a.d){case 1:{if(a.wi()){return a.o!=-2}break}case 2:{if(a.wi()){return a.o==-2}break}case 3:case 5:case 4:case 6:case 7:{return a.o>-2}default:{return false}}b=a.vi();switch(a.p){case 0:return b!=null&&Vpb(mA(b))!=L2(a.k,0);case 1:return b!=null&&kA(b,192).a!=U2(a.k)<<24>>24;case 2:return b!=null&&kA(b,159).a!=(U2(a.k)&AKd);case 6:return b!=null&&L2(kA(b,149).a,a.k);case 5:return b!=null&&kA(b,21).a!=U2(a.k);case 7:return b!=null&&kA(b,168).a!=U2(a.k)<<16>>16;case 3:return b!=null&&Vpb(nA(b))!=a.j;case 4:return b!=null&&kA(b,126).a!=a.j;default:return b==null?a.n!=null:!kb(b,a.n);}} +function Wad(a,b){var c,d,e,f;f=a.F;if(b==null){a.F=null;Kad(a,null)}else{a.F=(Npb(b),b);d=b6(b,o6(60));if(d!=-1){e=b.substr(0,d);b6(b,o6(46))==-1&&!Z5(e,gJd)&&!Z5(e,kVd)&&!Z5(e,lVd)&&!Z5(e,mVd)&&!Z5(e,nVd)&&!Z5(e,oVd)&&!Z5(e,pVd)&&!Z5(e,qVd)&&(e=rVd);c=d6(b,o6(62));c!=-1&&(e+=''+b.substr(c+1,b.length-(c+1)));Kad(a,e)}else{e=b;if(b6(b,o6(46))==-1){d=b6(b,o6(91));d!=-1&&(e=b.substr(0,d));if(!Z5(e,gJd)&&!Z5(e,kVd)&&!Z5(e,lVd)&&!Z5(e,mVd)&&!Z5(e,nVd)&&!Z5(e,oVd)&&!Z5(e,pVd)&&!Z5(e,qVd)){e=rVd;d!=-1&&(e+=''+b.substr(d,b.length-d))}else{e=b}}Kad(a,e);e==b&&(a.F=a.D)}}(a.Db&4)!=0&&(a.Db&1)==0&&vMc(a,new Mid(a,1,5,f,b))} +function gCb(a){bCb();var b,c,d,e,f,g,h;h=new dCb;for(c=new ccb(a);c.a=h.b.c)&&(h.b=b);if(!h.c||b.c<=h.c.c){h.d=h.c;h.c=b}(!h.e||b.d>=h.e.d)&&(h.e=b);(!h.f||b.d<=h.f.d)&&(h.f=b)}d=new kCb((OBb(),KBb));PCb(a,_Bb,new Rcb(xz(pz(jK,1),oJd,341,0,[d])));g=new kCb(NBb);PCb(a,$Bb,new Rcb(xz(pz(jK,1),oJd,341,0,[g])));e=new kCb(LBb);PCb(a,ZBb,new Rcb(xz(pz(jK,1),oJd,341,0,[e])));f=new kCb(MBb);PCb(a,YBb,new Rcb(xz(pz(jK,1),oJd,341,0,[f])));eCb(d.c,KBb);eCb(e.c,LBb);eCb(f.c,MBb);eCb(g.c,NBb);h.a.c=tz(NE,oJd,1,0,5,1);vbb(h.a,d.c);vbb(h.a,Wr(e.c));vbb(h.a,f.c);vbb(h.a,Wr(g.c));return h} +function Ved(a,b,c){var d,e,f,g;if(a.Rj()&&a.Qj()){g=Wed(a,kA(c,51));if(yA(g)!==yA(c)){a.ai(b);a.gi(b,Xed(a,b,g));if(a.Dj()){f=(e=kA(c,42),a.Pj()?a.Nj()?e.Cg(a.b,Wkd(kA(Gbd(RNc(a.b),a.pi()),17)).n,kA(Gbd(RNc(a.b),a.pi()).jj(),24).Qi(),null):e.Cg(a.b,Mbd(e.mg(),Wkd(kA(Gbd(RNc(a.b),a.pi()),17))),null,null):e.Cg(a.b,-1-a.pi(),null,null));!kA(g,42).yg()&&(f=(d=kA(g,42),a.Pj()?a.Nj()?d.Ag(a.b,Wkd(kA(Gbd(RNc(a.b),a.pi()),17)).n,kA(Gbd(RNc(a.b),a.pi()).jj(),24).Qi(),f):d.Ag(a.b,Mbd(d.mg(),Wkd(kA(Gbd(RNc(a.b),a.pi()),17))),null,f):d.Ag(a.b,-1-a.pi(),null,f)));!!f&&f.Th()}PMc(a.b)&&a.ni(a.mi(9,c,g,b,false));return g}}return c} +function XYb(a,b,c){var d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u;k=Vpb(nA(nub(a,(J6b(),n6b))));d=Vpb(nA(nub(a,z6b)));m=new aGc;qub(m,n6b,k+d);j=b;r=b.d;p=b.c.g;s=b.d.g;q=kIb(p.c);t=kIb(s.c);e=new Gbb;for(l=q;l<=t;l++){h=new IGb(a);GGb(h,(RGb(),OGb));qub(h,(E2b(),i2b),j);qub(h,Z5b,(VCc(),QCc));qub(h,p6b,m);n=kA(xbb(a.b,l),26);l==q?EGb(h,n.a.c.length-c,n):FGb(h,n);u=Vpb(nA(nub(j,f5b)));if(u<0){u=0;qub(j,f5b,u)}h.n.b=u;o=$wnd.Math.floor(u/2);g=new lHb;kHb(g,(FDc(),EDc));jHb(g,h);g.k.b=o;i=new lHb;kHb(i,kDc);jHb(i,h);i.k.b=o;MEb(j,g);f=new PEb;lub(f,j);qub(f,p5b,null);LEb(f,i);MEb(f,r);YYb(h,j,f);e.c[e.c.length]=f;j=f}return e} +function fAb(a,b){var c,d,e,f,g,h,i,j,k,l;a.a=new HAb(egb(gU));for(d=new ccb(b.a);d.a0){p=(Mpb(0,i.c.length),kA(i.c[0],14));e=(Mpb(0,n.c.length),kA(n.c[0],14));s=e.d.d;f=ybb(s,e,0);NEb(p,e.d,f);LEb(e,null);MEb(e,null);o=p.a;b&&mib(o,new Kyc(t));for(d=sib(e.a,0);d.b!=d.d.c;){c=kA(Gib(d),9);mib(o,new Kyc(c))}r=p.b;for(m=new ccb(e.b);m.a0?Wbc(this,this.f/this.a):Obc(b.g,b.d[0]).a!=null&&Obc(c.g,c.d[0]).a!=null?Wbc(this,(Vpb(Obc(b.g,b.d[0]).a)+Vpb(Obc(c.g,c.d[0]).a))/2):Obc(b.g,b.d[0]).a!=null?Wbc(this,Obc(b.g,b.d[0]).a):Obc(c.g,c.d[0]).a!=null&&Wbc(this,Obc(c.g,c.d[0]).a)} +function lJc(a){var b;this.r=vv(new oJc,new sJc);this.b=(Es(),new Hfb(kA(Pb(rU),274)));this.p=new Hfb(kA(Pb(rU),274));this.i=new Hfb(kA(Pb(nV),274));this.e=a;this.o=new Kyc(a.Re());this.B=a.bf()||Vpb(mA(a.xe(($Ac(),Yzc))));this.v=kA(a.xe(($Ac(),hAc)),19);this.w=kA(a.xe(lAc),19);this.q=kA(a.xe(BAc),83);this.t=kA(a.xe(FAc),275);this.j=kA(a.xe(fAc),19);this.n=kA(bGc(a,dAc),119);this.k=Vpb(nA(bGc(a,UAc)));this.d=Vpb(nA(bGc(a,TAc)));this.u=Vpb(nA(bGc(a,ZAc)));this.s=Vpb(nA(bGc(a,VAc)));this.A=kA(bGc(a,XAc),135);this.c=2*this.d;b=!this.w.pc((qEc(),hEc));this.f=new QIc(0,b,0);this.g=new QIc(1,b,0);PIc(this.f,(KHc(),IHc),this.g)} +function hwc(a,b){var c,d,e,f,g,h,i,j,k,l,m,n;if(b==null||b.length==0){return null}f=kA(G8(a.f,b),27);if(!f){for(e=(m=(new R9(a.d)).a.Tb().tc(),new W9(m));e.a.hc();){c=(g=kA(e.a.ic(),38),kA(g.lc(),27));h=c.f;n=b.length;if(Z5(h.substr(h.length-n,n),b)&&(b.length==h.length||X5(h,h.length-b.length-1)==46)){if(f){return null}f=c}}if(!f){for(d=(l=(new R9(a.d)).a.Tb().tc(),new W9(l));d.a.hc();){c=(g=kA(d.a.ic(),38),kA(g.lc(),27));k=c.g;if(k!=null){for(i=0,j=k.length;i=1){if(q-g>0&&l>=0){i.k.a+=p;i.k.b+=f*g}else if(q-g<0&&k>=0){i.k.a+=p*q;i.k.b+=f}}}a.n.a=b.a;a.n.b=b.b;qub(a,(J6b(),J5b),(bEc(),d=kA(e4(uU),10),new ngb(d,kA(ypb(d,d.length),10),0)))} +function nRb(a,b){var c,d,e,f,g,h,i,j,k,l;i=true;e=0;j=a.f[b.o];k=b.n.b+a.n;c=a.c[b.o][2];Cbb(a.a,j,d5(kA(xbb(a.a,j),21).a-1+c));Cbb(a.b,j,Vpb(nA(xbb(a.b,j)))-k+c*a.e);++j;if(j>=a.i){++a.i;tbb(a.a,d5(1));tbb(a.b,k)}else{d=a.c[b.o][1];Cbb(a.a,j,d5(kA(xbb(a.a,j),21).a+1-d));Cbb(a.b,j,Vpb(nA(xbb(a.b,j)))+k-d*a.e)}(a.q==(L7b(),E7b)&&(kA(xbb(a.a,j),21).a>a.j||kA(xbb(a.a,j-1),21).a>a.j)||a.q==H7b&&(Vpb(nA(xbb(a.b,j)))>a.k||Vpb(nA(xbb(a.b,j-1)))>a.k))&&(i=false);for(g=kl(vGb(b));So(g);){f=kA(To(g),14);h=f.c.g;if(a.f[h.o]==j){l=nRb(a,h);e=e+kA(l.a,21).a;i=i&&Vpb(mA(l.b))}}a.f[b.o]=j;e=e+a.c[b.o][0];return new fGc(d5(e),(B3(),i?true:false))} +function cnc(a){var b,c,d,e,f,g,h,i,j,k;j=new yib;h=new yib;for(f=new ccb(a);f.a-1){for(e=sib(h,0);e.b!=e.d.c;){d=kA(Gib(e),125);d.s=g}while(h.b!=0){d=kA(Gq(h,0),125);for(c=new ccb(d.g);c.a-1){for(f=new ccb(h);f.a0){continue}i.i=x5(i.i,e.i-1);--i.f;i.f==0&&(h.c[h.c.length]=i,true)}}}} +function sHd(a,b){var c,d,e,f,g,h,i,j;if(b.b==null||a.b==null)return;uHd(a);rHd(a);uHd(b);rHd(b);c=tz(FA,OKd,22,a.b.length+b.b.length,15,1);j=0;d=0;g=0;while(d=h&&e<=i){if(h<=e&&f<=i){c[j++]=e;c[j++]=f;d+=2}else if(h<=e){c[j++]=e;c[j++]=i;a.b[d]=i+1;g+=2}else if(f<=i){c[j++]=h;c[j++]=f;d+=2}else{c[j++]=h;c[j++]=i;a.b[d]=i+1}}else if(ia.j){a.q=E7b;oRb(a,f)}break;case 4:a.q=(L7b(),K7b);oRb(a,f);j=0;for(e=new ccb(a.b);e.aa.k){a.q=H7b;oRb(a,f)}break;case 6:m=zA($wnd.Math.ceil(a.f.length*k/100));oRb(a,new xRb(m));break;case 5:l=zA($wnd.Math.ceil(a.d*k/100));oRb(a,new ARb(l));break;default:oRb(a,f);}pRb(a,b);zEc(c)} +function tAb(a){var b,c,d,e,f,g,h;b=new Gbb;a.g=new Gbb;a.d=new Gbb;for(g=new e9((new X8(a.f.b)).a);g.b;){f=c9(g);tbb(b,kA(kA(f.lc(),48).b,80));hBc(kA(f.kc(),536).Je())?tbb(a.d,kA(f.lc(),48)):tbb(a.g,kA(f.lc(),48))}qAb(a,a.d);qAb(a,a.g);a.c=new eBb(a.b);cBb(a.c,(bAb(),aAb));vAb(a,a.d);vAb(a,a.g);vbb(b,a.c.a.b);a.e=new Jyc(oLd,oLd);a.a=new Jyc(pLd,pLd);for(d=new ccb(b);d.anKd)&&h<10);bBb(a.c,new DAb);sAb(a);ZAb(a.c);cAb(a.f)} +function sAb(a){var b,c,d,e,f,g,h;b=0;for(f=new ccb(a.b.a);f.a=2){i=sib(c,0);g=kA(Gib(i),9);h=kA(Gib(i),9);while(h.a0&&(h=$wnd.Math.max(h,jKc(a.A.b+d.d.b,e)))}else{o=n+l.d.c+a.u+d.d.b;h=$wnd.Math.max(h,(yv(),Bv(gNd),$wnd.Math.abs(m-e)<=gNd||m==e||isNaN(m)&&isNaN(e)?0:o/(e-m)))}l=d;m=e;n=f}if(!!a.A&&a.A.c>0){o=n+a.A.c;k&&(o+=l.d.c);h=$wnd.Math.max(h,(yv(),Bv(gNd),$wnd.Math.abs(m-1)<=gNd||m==1||isNaN(m)&&isNaN(1)?0:o/(1-m)))}c.n.b=0;c.a.a=h} +function mLc(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p;c=kA(Cfb(a.b,b),114);j=kA(kA(Ke(a.r,b),19),60);if(j.Wb()){c.n.d=0;c.n.a=0;return}g=a.v.pc((bEc(),aEc));p=a.w.pc((qEc(),oEc));k=a.t==(eDc(),cDc);h=0;i=j.tc();l=null;n=0;m=0;while(i.hc()){d=kA(i.ic(),111);f=Vpb(nA(d.b.xe((bLc(),aLc))));e=d.b.Re().b;g&&sLc(a,b,0,k,!k&&p);if(!l){!!a.A&&a.A.d>0&&(h=$wnd.Math.max(h,jKc(a.A.d+d.d.d,f)))}else{o=m+l.d.a+a.u+d.d.d;h=$wnd.Math.max(h,(yv(),Bv(gNd),$wnd.Math.abs(n-f)<=gNd||n==f||isNaN(n)&&isNaN(f)?0:o/(f-n)))}l=d;n=f;m=e}if(!!a.A&&a.A.a>0){o=m+a.A.a;k&&(o+=l.d.a);h=$wnd.Math.max(h,(yv(),Bv(gNd),$wnd.Math.abs(n-1)<=gNd||n==1||isNaN(n)&&isNaN(1)?0:o/(1-n)))}c.n.d=0;c.a.b=h} +function dYb(a,b,c){var d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w;if(m=a.c[b],n=a.c[c],(o=kA(nub(m,(E2b(),a2b)),15),!!o&&o._b()!=0&&o.pc(n))||(p=m.j!=(RGb(),OGb)&&n.j!=OGb,q=kA(nub(m,_1b),8),r=kA(nub(n,_1b),8),s=q!=r,t=!!q&&q!=m||!!r&&r!=n,u=eYb(m,(FDc(),lDc)),v=eYb(n,CDc),t=t|(eYb(m,CDc)||eYb(n,lDc)),w=t&&s||u||v,p&&w)||m.j==(RGb(),QGb)&&n.j==PGb||n.j==(RGb(),QGb)&&m.j==PGb){return false}k=a.c[b];f=a.c[c];e=gec(a.e,k,f,(FDc(),EDc));i=gec(a.i,k,f,kDc);WXb(a.f,k,f);j=FXb(a.b,k,f)+kA(e.a,21).a+kA(i.a,21).a+a.f.d;h=FXb(a.b,f,k)+kA(e.b,21).a+kA(i.b,21).a+a.f.b;if(a.a){l=kA(nub(k,i2b),11);g=kA(nub(f,i2b),11);d=eec(a.g,l,g);j+=kA(d.a,21).a;h+=kA(d.b,21).a}return j>h} +function bRc(b,c,d){var e,f,g,h,i,j,k,l,m;if(b.a!=c.Pi()){throw x2(new O4(gTd+c.be()+hTd))}e=ptd((uyd(),syd),c).kk();if(e){return e.Pi().dh().Zg(e,d)}h=ptd(syd,c).mk();if(h){if(d==null){return null}i=kA(d,15);if(i.Wb()){return ''}m=new z6;for(g=i.tc();g.hc();){f=g.ic();w6(m,h.Pi().dh().Zg(h,f));m.a+=' '}return l3(m,m.a.length-1)}l=ptd(syd,c).nk();if(!l.Wb()){for(k=l.tc();k.hc();){j=kA(k.ic(),140);if(j.Li(d)){try{m=j.Pi().dh().Zg(j,d);if(m!=null){return m}}catch(a){a=w2(a);if(!sA(a,104))throw x2(a)}}}throw x2(new O4("Invalid value: '"+d+"' for datatype :"+c.be()))}kA(c,737).Ui();return d==null?null:sA(d,159)?''+kA(d,159).a:mb(d)==PF?fhd(XQc[0],kA(d,181)):f3(d)} +function dKb(a,b,c){var d,e,f,g,h,i,j,k,l,m,n,o,p,q;xEc(c,dOd,1);bKb=Vpb(mA(nub(b,(J6b(),V4b))));a.c=b;o=new Gbb;for(h=new ccb(b.b);h.aq){p=1;e=j.n.a;while(e>i){++p;e=(j.n.a-(p-1)*a.d)/p}tbb(d,new pKb(a,j,p))}}for(k=new ccb(d);k.aj?0:j),1),g),a.c[d.a.d]));DZb(GZb(FZb(HZb(EZb(new IZb,0>-j?0:-j),1),g),a.c[h.a.d]))}else{m=1;(sA(d.g,153)&&sA(h.g,8)||sA(h.g,153)&&sA(d.g,8))&&(m=2);DZb(GZb(FZb(HZb(EZb(new IZb,zA(f)),m),a.c[d.a.d]),a.c[h.a.d]))}}}} +function QMb(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p;c=kA(nub(a,(J6b(),Z5b)),83);g=a.e;f=a.d;h=g.a+f.b+f.c;i=0-f.d-a.c.b;k=g.b+f.d+f.a-a.c.b;j=new Gbb;l=new Gbb;for(e=new ccb(b);e.a0),kA(k.a.cd(k.c=--k.b),14));while(f!=d&&k.b>0){a.a[f.o]=true;a.a[d.o]=true;f=(Lpb(k.b>0),kA(k.a.cd(k.c=--k.b),14))}k.b>0&&l9(k)}}}} +function DSc(a){if(a.q)return;a.q=true;a.p=RRc(a,0);a.a=RRc(a,1);WRc(a.a,0);a.f=RRc(a,2);WRc(a.f,1);QRc(a.f,2);a.n=RRc(a,3);QRc(a.n,3);QRc(a.n,4);QRc(a.n,5);QRc(a.n,6);a.g=RRc(a,4);WRc(a.g,7);QRc(a.g,8);a.c=RRc(a,5);WRc(a.c,7);WRc(a.c,8);a.i=RRc(a,6);WRc(a.i,9);WRc(a.i,10);WRc(a.i,11);WRc(a.i,12);QRc(a.i,13);a.j=RRc(a,7);WRc(a.j,9);a.d=RRc(a,8);WRc(a.d,3);WRc(a.d,4);WRc(a.d,5);WRc(a.d,6);QRc(a.d,7);QRc(a.d,8);QRc(a.d,9);QRc(a.d,10);a.b=RRc(a,9);QRc(a.b,0);QRc(a.b,1);a.e=RRc(a,10);QRc(a.e,1);QRc(a.e,2);QRc(a.e,3);QRc(a.e,4);WRc(a.e,5);WRc(a.e,6);WRc(a.e,7);WRc(a.e,8);WRc(a.e,9);WRc(a.e,10);QRc(a.e,11);a.k=RRc(a,11);QRc(a.k,0);QRc(a.k,1);a.o=SRc(a,12);a.s=SRc(a,13)} +function wcc(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r;xEc(b,'Interactive crossing minimization',1);g=0;for(f=new ccb(a.b);f.a0){c+=i.k.a+i.n.a/2;++l}for(o=new ccb(i.i);o.a=h&&e<=i){if(h<=e&&f<=i){d+=2}else if(h<=e){a.b[d]=i+1;g+=2}else if(f<=i){c[j++]=e;c[j++]=h-1;d+=2}else{c[j++]=e;c[j++]=h-1;a.b[d]=i+1;g+=2}}else if(i0);g.a.cd(g.c=--g.b);r9(g,d);Eib(j,d);RSb(d,i.i);Hib(j);Hib(j);e.a.$b(d)!=null}}}}} +function vTb(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q;xEc(b,'Spline SelfLoop pre-processing.',1);j=new iib;for(l=new ccb(a.a);l.a0?(e-=86400000):(e+=86400000);i=new Rx(y2(E2(b.q.getTime()),e))}k=new N6;j=a.a.length;for(f=0;f=97&&d<=122||d>=65&&d<=90){for(g=f+1;g=j){throw x2(new O4("Missing trailing '"))}g+1=14&&j<=16))){if(b.a.Qb(d)){!c.a?(c.a=new O6(c.d)):I6(c.a,c.b);F6(c.a,'[...]')}else{g=lA(d);i=new Lgb(b);rlb(c,lcb(g,i))}}else sA(d,221)?rlb(c,Ocb(kA(d,221))):sA(d,173)?rlb(c,Hcb(kA(d,173))):sA(d,176)?rlb(c,Icb(kA(d,176))):sA(d,1697)?rlb(c,Ncb(kA(d,1697))):sA(d,37)?rlb(c,Lcb(kA(d,37))):sA(d,378)?rlb(c,Mcb(kA(d,378))):sA(d,736)?rlb(c,Kcb(kA(d,736))):sA(d,106)&&rlb(c,Jcb(kA(d,106)))}else{rlb(c,d==null?mJd:f3(d))}}return !c.a?c.c:c.e.length==0?c.a.a:c.a.a+(''+c.e)} +function pEb(a,b,c){var d,e,f,g,h,i,j,k,l,m,n,o,p;if(!Vpb(mA(nub(c,(J6b(),m5b))))){return}for(h=new ccb(c.i);h.a1){break}}}h>0?(i=true):m==(eDc(),cDc)&&(!f.n&&(f.n=new zkd(LV,f,1,7)),f.n).i>0&&(i=true);h>1&&(j=true)}i&&b.nc((Z0b(),S0b));j&&b.nc((Z0b(),T0b))} +function rHc(a,b,c){var d,e,f;e=new lJc(a);SKc(e,c);JKc(e,false);wbb(e.e.We(),new NKc(e,false));pKc(e,e.f,(KHc(),HHc),(FDc(),lDc));pKc(e,e.f,JHc,CDc);pKc(e,e.g,HHc,EDc);pKc(e,e.g,JHc,kDc);rKc(e,lDc);rKc(e,CDc);qKc(e,kDc);qKc(e,EDc);CKc();d=e.v.pc((bEc(),ZDc))&&e.w.pc((qEc(),lEc))?DKc(e):null;!!d&&fIc(e.a,d);GKc(e);gKc(e);oLc(e);bKc(e);QKc(e);gLc(e);YKc(e,lDc);YKc(e,CDc);cKc(e);PKc(e);if(!b){return e.o}EKc(e);kLc(e);YKc(e,kDc);YKc(e,EDc);f=e.w.pc((qEc(),mEc));tKc(e,f,lDc);tKc(e,f,CDc);uKc(e,f,kDc);uKc(e,f,EDc);Sob(new Zob(null,new ekb(new R9(e.i),0)),new vKc);Sob(Pob(new Zob(null,Kj(e.r).wc()),new xKc),new zKc);FKc(e);e.e.Ue(e.o);Sob(new Zob(null,Kj(e.r).wc()),new HKc);return e.o} +function NSb(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o;xEc(b,'Spline SelfLoop positioning',1);k=kA(nub(a,(J6b(),c5b)),345);for(j=new ccb(a.b);j.a2){k=new Gbb;vbb(k,new A9(r,1,r.b));f=swb(k,t+a.a);s=new $ub(f);lub(s,b);c.c[c.c.length]=s}else{d?(s=kA(F8(a.b,_Wc(b)),247)):(s=kA(F8(a.b,bXc(b)),247))}i=_Wc(b);d&&(i=bXc(b));g=zwb(q,i);j=t+a.a;if(g.a){j+=$wnd.Math.abs(q.b-l.b);p=new Jyc(l.a,(l.b+q.b)/2)}else{j+=$wnd.Math.abs(q.a-l.a);p=new Jyc((l.a+q.a)/2,l.b)}d?I8(a.d,b,new avb(s,g,p,j)):I8(a.c,b,new avb(s,g,p,j));I8(a.b,b,s);o=(!b.n&&(b.n=new zkd(LV,b,1,7)),b.n);for(n=new a0c(o);n.e!=n.i._b();){m=kA($_c(n),137);e=wwb(a,m,true,0,0);c.c[c.c.length]=e}} +function Dpd(){t5c(hY,new jqd);t5c(gY,new Qqd);t5c(iY,new vrd);t5c(jY,new Nrd);t5c(lY,new Qrd);t5c(nY,new Trd);t5c(mY,new Wrd);t5c(oY,new Zrd);t5c(qY,new Hpd);t5c(rY,new Kpd);t5c(sY,new Npd);t5c(tY,new Qpd);t5c(uY,new Tpd);t5c(vY,new Wpd);t5c(wY,new Zpd);t5c(zY,new aqd);t5c(BY,new dqd);t5c(CZ,new gqd);t5c(pY,new mqd);t5c(AY,new pqd);t5c(tE,new sqd);t5c(pz(BA,1),new vqd);t5c(uE,new yqd);t5c(vE,new Bqd);t5c(PF,new Eqd);t5c(UX,new Hqd);t5c(yE,new Kqd);t5c(ZX,new Nqd);t5c($X,new Tqd);t5c(Q0,new Wqd);t5c(G0,new Zqd);t5c(CE,new ard);t5c(GE,new drd);t5c(xE,new grd);t5c(IE,new jrd);t5c(rG,new mrd);t5c(y_,new prd);t5c(x_,new srd);t5c(PE,new yrd);t5c(UE,new Brd);t5c(bY,new Erd);t5c(_X,new Hrd)} +function Lbc(a){var b,c,d,e,f,g,h,i;b=null;for(d=new ccb(a);d.a0&&c.c==0){!b&&(b=new Gbb);b.c[b.c.length]=c}}if(b){while(b.c.length!=0){c=kA(zbb(b,0),205);if(!!c.b&&c.b.c.length>0){for(f=(!c.b&&(c.b=new Gbb),new ccb(c.b));f.aybb(a,c,0)){return new fGc(e,c)}}else if(Vpb(Obc(e.g,e.d[0]).a)>Vpb(Obc(c.g,c.d[0]).a)){return new fGc(e,c)}}}for(h=(!c.e&&(c.e=new Gbb),c.e).tc();h.hc();){g=kA(h.ic(),205);i=(!g.b&&(g.b=new Gbb),g.b);Ppb(0,i.c.length);zpb(i.c,0,c);g.c==i.c.length&&(b.c[b.c.length]=g,true)}}}return null} +function NPb(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p;xEc(b,'Label dummy insertions',1);l=new Gbb;g=Vpb(nA(nub(a,(J6b(),m6b))));j=Vpb(nA(nub(a,q6b)));k=kA(nub(a,W4b),110);for(n=new ccb(a.a);n.a>16==-10){c=kA(a.Cb,268).zj(b,c)}else if(a.Db>>16==-15){!b&&(b=(j7c(),Z6c));!j&&(j=(j7c(),Z6c));if(a.Cb.Hg()){i=new Oid(a.Cb,1,13,j,b,pcd(njd(kA(a.Cb,53)),a),false);!c?(c=i):c.Sh(i)}}}else if(sA(a.Cb,96)){if(a.Db>>16==-23){sA(b,96)||(b=(j7c(),a7c));sA(j,96)||(j=(j7c(),a7c));if(a.Cb.Hg()){i=new Oid(a.Cb,1,10,j,b,pcd(Ebd(kA(a.Cb,24)),a),false);!c?(c=i):c.Sh(i)}}}else if(sA(a.Cb,411)){h=kA(a.Cb,742);g=(!h.b&&(h.b=new Sod(new Ood)),h.b);for(f=(d=new e9((new X8(g.a)).a),new $od(d));f.a.b;){e=kA(c9(f.a).kc(),84);c=thd(e,phd(e,h),c)}}}return c} +function X8b(a,b,c){var d,e,f,g,h,i,j,k,l,m,n,o,p,q;xEc(c,'Depth-first cycle removal',1);k=b.a;p=k.c.length;a.a=tz(FA,OKd,22,p,15,1);pcb(a.a);a.b=tz(FA,OKd,22,p,15,1);pcb(a.b);g=0;for(j=new ccb(k);j.a=0){i=null;h=new s9(k.a,j+1);while(h.b=j.c.c.length?(k=Vfc((RGb(),PGb),OGb)):(k=Vfc((RGb(),OGb),OGb));k*=2;f=c.a.g;c.a.g=$wnd.Math.max(f,f+(k-f));g=c.b.g;c.b.g=$wnd.Math.max(g,g+(k-g));e=b}}} +function _Kc(a,b){var c,d,e,f,g,h,i,j,k;g=kA(kA(Ke(a.r,b),19),60);k=g._b()==2||g._b()>2&&a.w.pc((qEc(),oEc));for(f=g.tc();f.hc();){e=kA(f.ic(),111);if(!e.c||e.c.d.c.length<=0){continue}j=e.b.Re();h=e.c;i=h.i;i.b=(d=h.n,h.e.a+d.b+d.c);i.a=(c=h.n,h.e.b+c.d+c.a);switch(b.g){case 1:if(k){i.c=-i.b-a.s;CIc(h,(pIc(),oIc))}else{i.c=j.a+a.s;CIc(h,(pIc(),nIc))}i.d=-i.a-a.s;DIc(h,(eJc(),bJc));break;case 3:if(k){i.c=-i.b-a.s;CIc(h,(pIc(),oIc))}else{i.c=j.a+a.s;CIc(h,(pIc(),nIc))}i.d=j.b+a.s;DIc(h,(eJc(),dJc));break;case 2:i.c=j.a+a.s;if(k){i.d=-i.a-a.s;DIc(h,(eJc(),bJc))}else{i.d=j.b+a.s;DIc(h,(eJc(),dJc))}CIc(h,(pIc(),nIc));break;case 4:i.c=-i.b-a.s;if(k){i.d=-i.a-a.s;DIc(h,(eJc(),bJc))}else{i.d=j.b+a.s;DIc(h,(eJc(),dJc))}CIc(h,(pIc(),oIc));}k=false}} +function Tqb(a,b){var c;if(a.e){throw x2(new Q4((d4(_H),bMd+_H.k+cMd)))}if(!mqb(a.a,b)){throw x2(new Tv(dMd+b+eMd))}if(b==a.d){return a}c=a.d;a.d=b;switch(c.g){case 0:switch(b.g){case 2:Qqb(a);break;case 1:Yqb(a);Qqb(a);break;case 4:crb(a);Qqb(a);break;case 3:crb(a);Yqb(a);Qqb(a);}break;case 2:switch(b.g){case 1:Yqb(a);Zqb(a);break;case 4:crb(a);Qqb(a);break;case 3:crb(a);Yqb(a);Qqb(a);}break;case 1:switch(b.g){case 2:Yqb(a);Zqb(a);break;case 4:Yqb(a);crb(a);Qqb(a);break;case 3:Yqb(a);crb(a);Yqb(a);Qqb(a);}break;case 4:switch(b.g){case 2:crb(a);Qqb(a);break;case 1:crb(a);Yqb(a);Qqb(a);break;case 3:Yqb(a);Zqb(a);}break;case 3:switch(b.g){case 2:Yqb(a);crb(a);Qqb(a);break;case 1:Yqb(a);crb(a);Yqb(a);Qqb(a);break;case 4:Yqb(a);Zqb(a);}}return a} +function XAb(a,b){var c;if(a.d){throw x2(new Q4((d4(TJ),bMd+TJ.k+cMd)))}if(!GAb(a.a,b)){throw x2(new Tv(dMd+b+eMd))}if(b==a.c){return a}c=a.c;a.c=b;switch(c.g){case 0:switch(b.g){case 2:UAb(a);break;case 1:_Ab(a);UAb(a);break;case 4:dBb(a);UAb(a);break;case 3:dBb(a);_Ab(a);UAb(a);}break;case 2:switch(b.g){case 1:_Ab(a);aBb(a);break;case 4:dBb(a);UAb(a);break;case 3:dBb(a);_Ab(a);UAb(a);}break;case 1:switch(b.g){case 2:_Ab(a);aBb(a);break;case 4:_Ab(a);dBb(a);UAb(a);break;case 3:_Ab(a);dBb(a);_Ab(a);UAb(a);}break;case 4:switch(b.g){case 2:dBb(a);UAb(a);break;case 1:dBb(a);_Ab(a);UAb(a);break;case 3:_Ab(a);aBb(a);}break;case 3:switch(b.g){case 2:_Ab(a);dBb(a);UAb(a);break;case 1:_Ab(a);dBb(a);_Ab(a);UAb(a);break;case 4:_Ab(a);aBb(a);}}return a} +function sEb(a,b,c){var d,e,f,g,h,i,j,k,l,m,n,o,p,q,r;e=new Gbb;for(o=new ccb(b.a);o.ar?i:r;for(t=new ccb(k.i);t.a=j&&v>=q){m+=o.k.b+p.k.b+p.a.b-u;++h}}}}if(c){for(g=new ccb(s.d);g.a=j&&v>=q){m+=o.k.b+p.k.b+p.a.b-u;++h}}}}}if(h>0){w+=m/h;++n}}if(n>0){b.a=e*w/n;b.i=n}else{b.a=0;b.i=0}} +function ywb(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,A;a.e=b;h=$vb(b);w=new Gbb;for(d=new ccb(h);d.a0){l.d+=j.n.d;l.d+=j.d}if(l.a>0){l.a+=j.n.a;l.a+=j.d}if(l.b>0){l.b+=j.n.b;l.b+=j.d}if(l.c>0){l.c+=j.n.c;l.c+=j.d}return l} +function Hac(a,b,c){var d;xEc(c,'StretchWidth layering',1);if(b.a.c.length==0){zEc(c);return}a.c=b;a.t=0;a.u=0;a.i=oLd;a.g=pLd;a.d=Vpb(nA(nub(b,(J6b(),k6b))));Bac(a);Cac(a);zac(a);Gac(a);Aac(a);a.i=$wnd.Math.max(1,a.i);a.g=$wnd.Math.max(1,a.g);a.d=a.d/a.i;a.f=a.g/a.i;a.s=Eac(a);d=new lIb(a.c);tbb(a.c.b,d);a.r=Qr(a.p);a.n=icb(a.k,a.k.length);while(a.r.c.length!=0){a.o=Iac(a);if(!a.o||Dac(a)&&a.b.a._b()!=0){Jac(a,d);d=new lIb(a.c);tbb(a.c.b,d);pg(a.a,a.b);a.b.a.Pb();a.t=a.u;a.u=0}else{if(Dac(a)){a.c.b.c=tz(NE,oJd,1,0,5,1);d=new lIb(a.c);tbb(a.c.b,d);a.t=0;a.u=0;a.b.a.Pb();a.a.a.Pb();++a.f;a.r=Qr(a.p);a.n=icb(a.k,a.k.length)}else{FGb(a.o,d);Abb(a.r,a.o);Ggb(a.b,a.o);a.t=a.t-a.k[a.o.o]*a.d+a.j[a.o.o];a.u+=a.e[a.o.o]*a.d}}}b.a.c=tz(NE,oJd,1,0,5,1);hdb(b.b);zEc(c)} +function SLb(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q;for(o=new ccb(a);o.a0){a.a[b.c.o][b.o].d+=Yjb(a.f,24)*LLd*0.07000000029802322-0.03500000014901161;a.a[b.c.o][b.o].a=a.a[b.c.o][b.o].d/a.a[b.c.o][b.o].b}} +function vUc(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,A,B,C,D,F,G;D=F8(a.e,d);if(D==null){D=new Py;n=kA(D,191);s=b+'_s';t=s+e;m=new hz(t);Ny(n,HTd,m)}C=kA(D,191);OTc(c,C);G=new Py;QTc(G,'x',d.j);QTc(G,'y',d.k);Ny(C,KTd,G);A=new Py;QTc(A,'x',d.b);QTc(A,'y',d.c);Ny(C,'endPoint',A);l=bJd((!d.a&&(d.a=new fdd(GV,d,5)),d.a));o=!l;if(o){w=new fy;f=new IVc(w);i5((!d.a&&(d.a=new fdd(GV,d,5)),d.a),f);Ny(C,ATd,w)}i=nQc(d);u=!!i;u&&RTc(a.a,C,CTd,iUc(a,nQc(d)));r=oQc(d);v=!!r;v&&RTc(a.a,C,BTd,iUc(a,oQc(d)));j=(!d.e&&(d.e=new pxd(IV,d,10,9)),d.e).i==0;p=!j;if(p){B=new fy;g=new KVc(a,B);i5((!d.e&&(d.e=new pxd(IV,d,10,9)),d.e),g);Ny(C,ETd,B)}k=(!d.g&&(d.g=new pxd(IV,d,9,10)),d.g).i==0;q=!k;if(q){F=new fy;h=new MVc(a,F);i5((!d.g&&(d.g=new pxd(IV,d,9,10)),d.g),h);Ny(C,DTd,F)}} +function I3(a){var b,c,d,e,f,g,h,i,j,k,l;if(a==null){throw x2(new I5(mJd))}j=a;f=a.length;i=false;if(f>0){b=a.charCodeAt(0);if(b==45||b==43){a=a.substr(1,a.length-1);--f;i=b==45}}if(f==0){throw x2(new I5(mLd+j+'"'))}while(a.length>0&&a.charCodeAt(0)==48){a=a.substr(1,a.length-1);--f}if(f>(H5(),F5)[10]){throw x2(new I5(mLd+j+'"'))}for(e=0;e0){l=-$pb(a.substr(0,d),10);a=a.substr(d,a.length-d);f-=d;c=false}while(f>=g){d=$pb(a.substr(0,g),10);a=a.substr(g,a.length-g);f-=g;if(c){c=false}else{if(A2(l,h)<0){throw x2(new I5(mLd+j+'"'))}l=J2(l,k)}l=R2(l,d)}if(A2(l,0)>0){throw x2(new I5(mLd+j+'"'))}if(!i){l=K2(l);if(A2(l,0)<0){throw x2(new I5(mLd+j+'"'))}}return l} +function vGc(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,A,B,C,D;t=0;o=0;n=0;m=1;for(s=new a0c((!a.a&&(a.a=new zkd(MV,a,10,11)),a.a));s.e!=s.i._b();){q=kA($_c(s),35);m+=Cn(TWc(q));B=q.g;o=$wnd.Math.max(o,B);l=q.f;n=$wnd.Math.max(n,l);t+=B*l}p=(!a.a&&(a.a=new zkd(MV,a,10,11)),a.a).i;g=t+2*d*d*m*p;f=$wnd.Math.sqrt(g);i=$wnd.Math.max(f*c,o);h=$wnd.Math.max(f/c,n);for(r=new a0c((!a.a&&(a.a=new zkd(MV,a,10,11)),a.a));r.e!=r.i._b();){q=kA($_c(r),35);C=e.b+(Yjb(b,26)*ILd+Yjb(b,27)*JLd)*(i-q.g);D=e.b+(Yjb(b,26)*ILd+Yjb(b,27)*JLd)*(h-q.f);rPc(q,C);sPc(q,D)}A=i+(e.b+e.c);w=h+(e.d+e.a);for(v=new a0c((!a.a&&(a.a=new zkd(MV,a,10,11)),a.a));v.e!=v.i._b();){u=kA($_c(v),35);for(k=kl(TWc(u));So(k);){j=kA(To(k),105);$Pc(j)||uGc(j,b,A,w)}}A+=e.b+e.c;w+=e.d+e.a;IFc(a,A,w,false,true)} +function sKb(a,b,c,d){var e,f,g,h,i,j,k,l,m,n,o,p,q,r;p=a.k;q=a.n;m=a.d;if(b){l=d/2*(b._b()-1);n=0;for(j=b.tc();j.hc();){h=kA(j.ic(),8);l+=h.n.a;n=$wnd.Math.max(n,h.n.b)}r=p.a-(l-q.a)/2;g=p.b-m.d+n;e=q.a/(b._b()+1);f=e;for(i=b.tc();i.hc();){h=kA(i.ic(),8);h.k.a=r;h.k.b=g-h.n.b;r+=h.n.a+d/2;k=qKb(h);k.k.a=h.n.a/2-k.a.a;k.k.b=h.n.b;o=kA(nub(h,(E2b(),K1b)),11);if(o.d.c.length+o.f.c.length==1){o.k.a=f-o.a.a;o.k.b=0;jHb(o,a)}f+=e}}if(c){l=d/2*(c._b()-1);n=0;for(j=c.tc();j.hc();){h=kA(j.ic(),8);l+=h.n.a;n=$wnd.Math.max(n,h.n.b)}r=p.a-(l-q.a)/2;g=p.b+q.b+m.a-n;e=q.a/(c._b()+1);f=e;for(i=c.tc();i.hc();){h=kA(i.ic(),8);h.k.a=r;h.k.b=g;r+=h.n.a+d/2;k=qKb(h);k.k.a=h.n.a/2-k.a.a;k.k.b=0;o=kA(nub(h,(E2b(),K1b)),11);if(o.d.c.length+o.f.c.length==1){o.k.a=f-o.a.a;o.k.b=q.b;jHb(o,a)}f+=e}}} +function zic(a,b){var c,d,e,f,g,h,i,j,k,l,m;for(e=new ccb(a.a.b);e.apLd||b.o==nic&&k0&&rPc(r,u*w);v>0&&sPc(r,v*A)}bjb(a.b,new Cwb);b=new Gbb;for(h=new e9((new X8(a.c)).a);h.b;){g=c9(h);d=kA(g.kc(),105);c=kA(g.lc(),363).a;e=$Wc(d,false,false);l=owb(_Wc(d),DFc(e),c);zFc(l,e);t=aXc(d);if(!!t&&ybb(b,t,0)==-1){b.c[b.c.length]=t;pwb(t,(Lpb(l.b!=0),kA(l.a.a.c,9)),c)}}for(q=new e9((new X8(a.d)).a);q.b;){p=c9(q);d=kA(p.kc(),105);c=kA(p.lc(),363).a;e=$Wc(d,false,false);l=owb(bXc(d),Yyc(DFc(e)),c);l=Yyc(l);zFc(l,e);t=cXc(d);if(!!t&&ybb(b,t,0)==-1){b.c[b.c.length]=t;pwb(t,(Lpb(l.b!=0),kA(l.c.b.c,9)),c)}}} +function uPb(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s;xEc(b,'Inverted port preprocessing',1);j=a.b;i=new s9(j,0);c=null;s=new Gbb;while(i.b0&&(kA(Cfb(a.b,b),114).a.b=c)} +function wmc(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q,r;m=Enc(a.i);o=Enc(b.i);n=vyc(xyc(a.k),a.a);p=vyc(xyc(b.k),b.a);i=vyc(new Jyc(n.a,n.b),Dyc(new Iyc(m),1.3*c));q=vyc(new Jyc(p.a,p.b),Dyc(new Iyc(o),1.3*d));h=$wnd.Math.abs(i.a-q.a);he+2&&b6c(a.charCodeAt(e+1),z5c,A5c)&&b6c(a.charCodeAt(e+2),z5c,A5c)){c=f6c(a.charCodeAt(e+1),a.charCodeAt(e+2));e+=2;if(d>0){(c&192)==128?(b[h++]=c<<24>>24):(d=0)}else if(c>=128){if((c&224)==192){b[h++]=c<<24>>24;d=2}else if((c&240)==224){b[h++]=c<<24>>24;d=3}else if((c&248)==240){b[h++]=c<<24>>24;d=4}}if(d>0){if(h==d){switch(h){case 2:{C6(i,((b[0]&31)<<6|b[1]&63)&AKd);break}case 3:{C6(i,((b[0]&15)<<12|(b[1]&63)<<6|b[2]&63)&AKd);break}}h=0;d=0}}else{for(f=0;f0&&tbb(a.p,k);tbb(a.o,k)}b-=d;n=i+b;j+=b*a.e;Cbb(a.a,h,d5(n));Cbb(a.b,h,j);a.j=v5(a.j,n);a.k=$wnd.Math.max(a.k,j);a.d+=b;b+=p}} +function c7(){c7=d3;var a,b,c;new j7(1,0);new j7(10,0);new j7(0,0);W6=tz(XE,cKd,216,11,0,1);X6=tz(CA,yKd,22,100,15,1);Y6=xz(pz(DA,1),vLd,22,15,[1,5,25,125,625,3125,15625,78125,390625,1953125,9765625,48828125,244140625,1220703125,6103515625,30517578125,152587890625,762939453125,3814697265625,19073486328125,95367431640625,476837158203125,2384185791015625]);Z6=tz(FA,OKd,22,Y6.length,15,1);$6=xz(pz(DA,1),vLd,22,15,[1,10,100,zKd,uLd,wLd,1000000,10000000,100000000,hLd,10000000000,100000000000,1000000000000,10000000000000,100000000000000,1000000000000000,10000000000000000]);_6=tz(FA,OKd,22,$6.length,15,1);a7=tz(XE,cKd,216,11,0,1);a=0;for(;a1){n=new xnc(o,t,d);i5(t,new onc(a,n));g.c[g.c.length]=n;for(l=t.a.Xb().tc();l.hc();){k=kA(l.ic(),48);Abb(f,k.b)}}if(h.a._b()>1){n=new xnc(o,h,d);i5(h,new qnc(a,n));g.c[g.c.length]=n;for(l=h.a.Xb().tc();l.hc();){k=kA(l.ic(),48);Abb(f,k.b)}}}} +function hQb(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o;xEc(b,'Label dummy switching',1);l=kA(nub(a,(J6b(),Y4b)),276);d=kA(Nob(Pob(Rob(new Zob(null,new ekb(a.b,16)),new rQb),new tQb),Umb(new snb,new qnb,new Lnb,xz(pz($G,1),jKd,150,0,[(Ymb(),Wmb)]))),15);g=l==(T$b(),S$b)||l==O$b?$Pb(a):null;for(f=d.tc();f.hc();){e=kA(f.ic(),8);c=fQb(e);!c&&(c=l);h=dQb(e);k=eQb(e);m=null;switch(c.g){case 2:m=bQb(e,g,h,k);break;case 0:m=(n=h.a._b()+k.c.length+1,o=(n-1)/2|0,oh.a._b()?kA(xbb(k,o-h.a._b()-1),8):null);break;case 1:m=cQb(e,g,h,k);break;case 4:iQb(e,c);m=(j=gQb(e),j?h.a._b()==0?null:kA(h.a.cd(es(h,0)),8):k.c.length==0?null:kA(xbb(k,k.c.length-1),8));break;case 3:iQb(e,c);m=(i=gQb(e),i?k.c.length==0?null:kA(xbb(k,k.c.length-1),8):h.a._b()==0?null:kA(h.a.cd(es(h,0)),8));}!!m&&jQb(e,m);aQb(e)}zEc(b)} +function KQc(b,c){var d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u;n=c.length;if(n>0){j=c.charCodeAt(0);if(j!=64){if(j==37){m=c.lastIndexOf('%');k=false;if(m!=0&&(m==n-1||(k=c.charCodeAt(m+1)==46))){h=c.substr(1,m-1);u=Z5('%',h)?null:S5c(h);e=0;if(k){try{e=H3(c.substr(m+2,c.length-(m+2)),oKd,jJd)}catch(a){a=w2(a);if(sA(a,118)){i=a;throw x2(new t6c(i))}else throw x2(a)}}for(r=Qhd(b.pg());r.hc();){p=jid(r);if(sA(p,469)){f=kA(p,609);t=f.d;if((u==null?t==null:Z5(u,t))&&e--==0){return f}}}return null}}l=c.lastIndexOf('.');o=l==-1?c:c.substr(0,l);d=0;if(l!=-1){try{d=H3(c.substr(l+1,c.length-(l+1)),oKd,jJd)}catch(a){a=w2(a);if(sA(a,118)){o=c}else throw x2(a)}}o=Z5('%',o)?null:S5c(o);for(q=Qhd(b.pg());q.hc();){p=jid(q);if(sA(p,174)){g=kA(p,174);s=g.be();if((o==null?s==null:Z5(o,s))&&d--==0){return g}}}return null}}return SMc(b,c)} +function AEd(a){yEd();var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q;if(a==null)return null;l=a.length*8;if(l==0){return ''}h=l%24;n=l/24|0;m=h!=0?n+1:n;f=tz(CA,yKd,22,m*4,15,1);g=0;e=0;for(i=0;i>24;j=(b&3)<<24>>24;o=(b&-128)==0?b>>2<<24>>24:(b>>2^192)<<24>>24;p=(c&-128)==0?c>>4<<24>>24:(c>>4^240)<<24>>24;q=(d&-128)==0?d>>6<<24>>24:(d>>6^252)<<24>>24;f[g++]=xEd[o];f[g++]=xEd[p|j<<4];f[g++]=xEd[k<<2|q];f[g++]=xEd[d&63]}if(h==8){b=a[e];j=(b&3)<<24>>24;o=(b&-128)==0?b>>2<<24>>24:(b>>2^192)<<24>>24;f[g++]=xEd[o];f[g++]=xEd[j<<4];f[g++]=61;f[g++]=61}else if(h==16){b=a[e];c=a[e+1];k=(c&15)<<24>>24;j=(b&3)<<24>>24;o=(b&-128)==0?b>>2<<24>>24:(b>>2^192)<<24>>24;p=(c&-128)==0?c>>4<<24>>24:(c>>4^240)<<24>>24;f[g++]=xEd[o];f[g++]=xEd[p|j<<4];f[g++]=xEd[k<<2];f[g++]=61}return r6(f,0,f.length)} +function sLb(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,A,B,C,D;w=b.a.c;j=b.a.c+b.a.b;t=a.c&&uLb(a,b);d=t?(w+j)/2:w+(b.s+1)*a.b;for(h=b.d.a.Xb().tc();h.hc();){g=kA(h.ic(),14);i=kA(F8(b.c,g),589);C=i.f;D=i.a;v=new Jyc(d,C);B=new Jyc(d,D);u=new Jyc(w-10,C);A=new Jyc(j,D);l=false;m=false;if(i.b){l=true;u.a=j}if(i.c){m=true;A.a=w-10}n=i.d;o=i.e;if(!t||!(n||o)||m||l){if(b.d.a._b()==1){Ryc(g.a,xz(pz(aU,1),cKd,9,0,[u,v,B,A]))}else{c=new Jyc(d,b.b);Ryc(g.a,xz(pz(aU,1),cKd,9,0,[u,v,c,B,A]))}}else{if(n&&o){k=0;p=0;for(s=new ccb(g.d.g.i);s.a=0&&gn){if(f){oib(u,m);oib(w,d5(j.a-1))}F=c.b;G+=m+b;m=0;k=$wnd.Math.max(k,c.b+c.c+D)}rPc(h,F);sPc(h,G);k=$wnd.Math.max(k,F+D+c.c);m=$wnd.Math.max(m,l);F+=D+b}k=$wnd.Math.max(k,d);C=G+m+c.a;if(C0&&(a.p=-(a.p-1));a.p>oKd&&Ox(b,a.p-NKd);g=b.q.getDate();Ix(b,1);a.k>=0&&Lx(b,a.k);if(a.c>=0){Ix(b,a.c)}else if(a.k>=0){i=new Qx(b.q.getFullYear()-NKd,b.q.getMonth(),35);d=35-i.q.getDate();Ix(b,d0&&a.f<12&&(a.f+=12);Jx(b,a.f==24&&a.g?0:a.f);a.j>=0&&Kx(b,a.j);a.n>=0&&Mx(b,a.n);a.i>=0&&Nx(b,y2(J2(C2(E2(b.q.getTime()),zKd),zKd),a.i));if(a.a){e=new Px;Ox(e,e.q.getFullYear()-NKd-80);H2(E2(b.q.getTime()),E2(e.q.getTime()))&&Ox(b,e.q.getFullYear()-NKd+100)}if(a.d>=0){if(a.c==-1){c=(7+a.d-b.q.getDay())%7;c>3&&(c-=7);h=b.q.getMonth();Ix(b,b.q.getDate()+c);b.q.getMonth()!=h&&Ix(b,b.q.getDate()+(c>0?-7:7))}else{if(b.q.getDay()!=a.d){return false}}}if(a.o>oKd){f=b.q.getTimezoneOffset();Nx(b,y2(E2(b.q.getTime()),(a.o-f)*60*zKd))}return true} +function VCb(){VCb=d3;UCb=new Xm;Le(UCb,(FDc(),BDc),xDc);Le(UCb,mDc,tDc);Le(UCb,rDc,vDc);Le(UCb,zDc,oDc);Le(UCb,wDc,pDc);Le(UCb,wDc,vDc);Le(UCb,wDc,oDc);Le(UCb,pDc,wDc);Le(UCb,pDc,xDc);Le(UCb,pDc,tDc);Le(UCb,yDc,yDc);Le(UCb,yDc,vDc);Le(UCb,yDc,xDc);Le(UCb,sDc,sDc);Le(UCb,sDc,vDc);Le(UCb,sDc,tDc);Le(UCb,ADc,ADc);Le(UCb,ADc,oDc);Le(UCb,ADc,xDc);Le(UCb,nDc,nDc);Le(UCb,nDc,oDc);Le(UCb,nDc,tDc);Le(UCb,vDc,rDc);Le(UCb,vDc,wDc);Le(UCb,vDc,yDc);Le(UCb,vDc,sDc);Le(UCb,vDc,vDc);Le(UCb,vDc,xDc);Le(UCb,vDc,tDc);Le(UCb,oDc,zDc);Le(UCb,oDc,wDc);Le(UCb,oDc,ADc);Le(UCb,oDc,nDc);Le(UCb,oDc,oDc);Le(UCb,oDc,xDc);Le(UCb,oDc,tDc);Le(UCb,xDc,BDc);Le(UCb,xDc,pDc);Le(UCb,xDc,yDc);Le(UCb,xDc,ADc);Le(UCb,xDc,vDc);Le(UCb,xDc,oDc);Le(UCb,xDc,xDc);Le(UCb,tDc,mDc);Le(UCb,tDc,pDc);Le(UCb,tDc,sDc);Le(UCb,tDc,nDc);Le(UCb,tDc,vDc);Le(UCb,tDc,oDc);Le(UCb,tDc,tDc)} +function CBd(){t5c(S0,new hCd);t5c(U0,new OCd);t5c(V0,new tDd);t5c(W0,new $Dd);t5c(UE,new kEd);t5c(pz(BA,1),new nEd);t5c(tE,new qEd);t5c(uE,new tEd);t5c(UE,new FBd);t5c(UE,new IBd);t5c(UE,new LBd);t5c(yE,new OBd);t5c(UE,new RBd);t5c(mG,new UBd);t5c(mG,new XBd);t5c(UE,new $Bd);t5c(CE,new bCd);t5c(UE,new eCd);t5c(UE,new kCd);t5c(UE,new nCd);t5c(UE,new qCd);t5c(UE,new tCd);t5c(pz(BA,1),new wCd);t5c(UE,new zCd);t5c(UE,new CCd);t5c(mG,new FCd);t5c(mG,new ICd);t5c(UE,new LCd);t5c(GE,new RCd);t5c(UE,new UCd);t5c(IE,new XCd);t5c(UE,new $Cd);t5c(UE,new bDd);t5c(UE,new eDd);t5c(UE,new hDd);t5c(mG,new kDd);t5c(mG,new nDd);t5c(UE,new qDd);t5c(UE,new wDd);t5c(UE,new zDd);t5c(UE,new CDd);t5c(UE,new FDd);t5c(UE,new IDd);t5c(PE,new LDd);t5c(UE,new ODd);t5c(UE,new RDd);t5c(UE,new UDd);t5c(PE,new XDd);t5c(IE,new bEd);t5c(UE,new eEd);t5c(GE,new hEd)} +function ZIb(a,b){var c,d,e,f,g,h,i,j,k,l,m,n;d=kA(nub(a,(E2b(),i2b)),35);rPc(d,a.k.a+b.a);sPc(d,a.k.b+b.b);if(kA(AOc(d,(J6b(),J5b)),185)._b()!=0||nub(a,h2b)!=null||yA(nub(uGb(a),I5b))===yA((u7b(),s7b))&&i7b((h7b(),(!a.p?(bdb(),bdb(),_cb):a.p).Qb(G5b)?(l=kA(nub(a,G5b),179)):(l=kA(nub(uGb(a),H5b),179)),l))){qPc(d,a.n.a);oPc(d,a.n.b)}for(k=new ccb(a.i);k.a1){b=$wnd.Math.min(f,a.c);j=(l=new IGb(a.e.c),GGb(l,(RGb(),KGb)),qub(l,(J6b(),Z5b),kA(nub(j,Z5b),83)),qub(l,B5b,kA(nub(j,B5b),185)),l.o=a.e.b++,tbb(a.b,l),l.n.b=j.n.b,l.n.a=b,m=new lHb,kHb(m,(FDc(),kDc)),jHb(m,j),m.k.a=l.n.a,m.k.b=l.n.b/2,n=new lHb,kHb(n,EDc),jHb(n,l),n.k.b=l.n.b/2,n.k.a=-n.n.a,o=new PEb,LEb(o,m),MEb(o,n),l);tbb(a.e.c.a,j);--k;f-=a.c+a.e.d}new BJb(a.d,a.b,a.c);for(h=new ccb(e);h.a=b.length)return {done:true};var a=b[d++];return {value:[a,c.get(a)],done:false}}}};if(!hhb()){e.prototype.createObject=function(){return {}};e.prototype.get=function(a){return this.obj[':'+a]};e.prototype.set=function(a,b){this.obj[':'+a]=b};e.prototype[HLd]=function(a){delete this.obj[':'+a]};e.prototype.keys=function(){var a=[];for(var b in this.obj){b.charCodeAt(0)==58&&a.push(b.substring(1))}return a}}return e} +function oKb(a,b){var c,d,e,f,g,h,i,j,k;if(Cn(vGb(b))!=1||kA(zn(vGb(b)),14).c.g.j!=(RGb(),OGb)){return null}c=kA(zn(vGb(b)),14);d=c.c.g;GGb(d,(RGb(),PGb));qub(d,(E2b(),e2b),null);qub(d,f2b,null);qub(d,H1b,kA(nub(b,H1b),126));qub(d,G1b,(B3(),B3(),true));qub(d,i2b,nub(b,i2b));d.n.b=b.n.b;f=nub(c.d,i2b);g=null;for(j=DGb(d,(FDc(),EDc)).tc();j.hc();){h=kA(j.ic(),11);if(h.d.c.length!=0){qub(h,i2b,f);k=c.d;h.n.a=k.n.a;h.n.b=k.n.b;h.a.a=k.a.a;h.a.b=k.a.b;vbb(h.e,k.e);k.e.c=tz(NE,oJd,1,0,5,1);g=h;break}}qub(c.d,i2b,null);if(Cn(DGb(b,EDc))>1){for(i=sib(Vr(DGb(b,EDc)),0);i.b!=i.d.c;){h=kA(Gib(i),11);if(h.d.c.length==0){e=new lHb;kHb(e,EDc);e.n.a=h.n.a;e.n.b=h.n.b;jHb(e,d);qub(e,i2b,nub(h,i2b));jHb(h,null)}else{jHb(g,d)}}}qub(b,i2b,null);qub(b,G1b,(null,false));GGb(b,KGb);qub(d,(J6b(),Z5b),kA(nub(b,Z5b),83));qub(d,B5b,kA(nub(b,B5b),185));sbb(a.b,0,d);return d} +function Jkc(a,b,c){var d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t;xEc(c,'Polyline edge routing',1);n=Vpb(nA(nub(b,(J6b(),u6b))));e=Vpb(nA(nub(b,l6b)));d=$wnd.Math.min(1,e/n);s=0;if(b.b.c.length!=0){t=Gkc(kA(xbb(b.b,0),26));s=0.4*d*t}h=new s9(b.b,0);while(h.b0&&(s-=n);UFb(g,s);k=0;for(m=new ccb(g.a);m.a0);h.a.cd(h.c=--h.b)}i=0.4*d*k;!f&&h.b0||k.i==EDc&&k.d.c.length-k.f.c.length<0)){c=false;break}if(k.i==EDc){for(e=new ccb(k.f);e.a=h){Lpb(q.b>0);q.a.cd(q.c=--q.b);break}else if(o.a>i){if(!e){tbb(o.b,k);o.c=$wnd.Math.min(o.c,i);o.a=$wnd.Math.max(o.a,h);e=o}else{vbb(e.b,o.b);e.a=$wnd.Math.max(e.a,o.a);l9(q)}}}if(!e){e=new M9b;e.c=i;e.a=h;r9(q,e);tbb(e.b,k)}}g=b.b;j=0;for(p=new ccb(d);p.a0&&A2(d,-6)>=0){if(A2(d,0)>=0){e=c+U2(d);for(g=17;g>=e;g--){j[g+1]=j[g]}j[++e]=46;h&&(j[--c]=45);return r6(j,c,18-c+1)}for(f=2;H2(f,y2(K2(d),1));f++){j[--c]=48}j[--c]=46;j[--c]=48;h&&(j[--c]=45);return r6(j,c,18-c)}m=c+1;k=new N6;h&&(k.a+='-',k);if(18-m>=1){C6(k,j[c]);k.a+='.';k.a+=r6(j,c+1,18-c-1)}else{k.a+=r6(j,c,18-c)}k.a+='E';A2(d,0)>0&&(k.a+='+',k);k.a+=''+V2(d);return k.a} +function Swb(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,A,B,C,D,F,G,H,I;l=kA(nub(a,(Byb(),zyb)),35);r=jJd;s=jJd;p=oKd;q=oKd;for(u=new ccb(a.e);u.ab.d.c){n=a.c[b.a.d];q=a.c[l.a.d];if(n==q){continue}DZb(GZb(FZb(HZb(EZb(new IZb,1),100),n),q))}}}}}}} +function DIb(a,b,c,d,e,f){var g,h,i,j,k,l;j=new lHb;lub(j,b);kHb(j,kA(AOc(b,(J6b(),b6b)),69));qub(j,(E2b(),i2b),b);jHb(j,c);l=j.n;l.a=b.g;l.b=b.f;k=j.k;k.a=b.i;k.b=b.j;I8(a.a,b,j);g=Mob(Tob(Rob(new Zob(null,(!b.e&&(b.e=new pxd(JV,b,7,4)),new ekb(b.e,16))),new LIb),new HIb),new NIb(b));g||(g=Mob(Tob(Rob(new Zob(null,(!b.d&&(b.d=new pxd(JV,b,8,5)),new ekb(b.d,16))),new PIb),new JIb),new RIb(b)));g||(g=Mob(new Zob(null,(!b.e&&(b.e=new pxd(JV,b,7,4)),new ekb(b.e,16))),new TIb));qub(j,Z1b,(B3(),g?true:false));RFb(j,f,e,kA(AOc(b,X5b),9));for(i=new a0c((!b.n&&(b.n=new zkd(LV,b,1,7)),b.n));i.e!=i.i._b();){h=kA($_c(i),137);!Vpb(mA(AOc(h,N5b)))&&!!h.a&&tbb(j.e,BIb(h))}(!b.d&&(b.d=new pxd(JV,b,8,5)),b.d).i+(!b.e&&(b.e=new pxd(JV,b,7,4)),b.e).i>1&&d.nc((Z0b(),T0b));switch(e.g){case 2:case 1:(j.i==(FDc(),lDc)||j.i==CDc)&&d.nc((Z0b(),W0b));break;case 4:case 3:(j.i==(FDc(),kDc)||j.i==EDc)&&d.nc((Z0b(),W0b));}return j} +function gHd(a,b){UGd();var c,d,e,f,g,h,i,j,k,l,m,n,o;if(M8(vGd)==0){l=tz(n2,cKd,112,xGd.length,0,1);for(g=0;gj&&(d.a+=q6(tz(CA,yKd,22,-j,15,1)));d.a+='Is';if(b6(i,o6(32))>=0){for(e=0;e0){if(g+d>a.length){return false}h=ax(a.substr(0,g+d),b)}else{h=ax(a,b)}}switch(f){case 71:h=Zw(a,g,xz(pz(UE,1),cKd,2,6,[PKd,QKd]),b);e.e=h;return true;case 77:return ix(a,b,e,h,g);case 76:return kx(a,b,e,h,g);case 69:return gx(a,b,g,e);case 99:return jx(a,b,g,e);case 97:h=Zw(a,g,xz(pz(UE,1),cKd,2,6,['AM','PM']),b);e.b=h;return true;case 121:return mx(a,b,g,h,c,e);case 100:if(h<=0){return false}e.c=h;return true;case 83:if(h<0){return false}return hx(h,g,b[0],e);case 104:h==12&&(h=0);case 75:case 72:if(h<0){return false}e.f=h;e.g=false;return true;case 107:if(h<0){return false}e.f=h;e.g=true;return true;case 109:if(h<0){return false}e.j=h;return true;case 115:if(h<0){return false}e.n=h;return true;case 90:if(gB[i]&&(q=i);for(l=new ccb(a.b.b);l.a0?(m=IDc(h)):(m=GDc(IDc(h)));a.ze(b6b,m)}switch(m.g){case 4:qub(k,r5b,(K2b(),G2b));qub(k,Q1b,($_b(),Z_b));k.n.b=g.b;kHb(l,(FDc(),kDc));l.k.b=j.b;break;case 2:qub(k,r5b,(K2b(),I2b));qub(k,Q1b,($_b(),X_b));k.n.b=g.b;kHb(l,(FDc(),EDc));l.k.b=j.b;break;case 1:qub(k,$1b,(p1b(),o1b));k.n.a=g.a;kHb(l,(FDc(),CDc));l.k.a=j.a;break;case 3:qub(k,$1b,(p1b(),m1b));k.n.a=g.a;kHb(l,(FDc(),lDc));l.k.a=j.a;}if(b==PCc||b==RCc||b==QCc){n=0;if(b==PCc&&a.ye($5b)){switch(m.g){case 1:case 2:n=kA(a.xe($5b),21).a;break;case 3:case 4:n=-kA(a.xe($5b),21).a;}}else{switch(m.g){case 4:case 2:n=f.b;b==RCc&&(n/=e.b);break;case 1:case 3:n=f.a;b==RCc&&(n/=e.a);}}qub(k,q2b,n)}qub(k,V1b,m);return k} +function WKc(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w;m=kA(kA(Ke(a.r,b),19),60);if(b==(FDc(),kDc)||b==EDc){$Kc(a,b);return}f=b==lDc?(YLc(),ULc):(YLc(),XLc);u=b==lDc?(eJc(),dJc):(eJc(),bJc);c=kA(Cfb(a.b,b),114);d=c.i;e=d.c+hyc(xz(pz(DA,1),vLd,22,15,[c.n.b,a.A.b,a.k]));r=d.c+d.b-hyc(xz(pz(DA,1),vLd,22,15,[c.n.c,a.A.c,a.k]));g=GLc(LLc(f),a.s);s=b==lDc?sRd:YQd;for(l=m.tc();l.hc();){j=kA(l.ic(),111);if(!j.c||j.c.d.c.length<=0){continue}q=j.b.Re();p=j.e;n=j.c;o=n.i;o.b=(i=n.n,n.e.a+i.b+i.c);o.a=(h=n.n,n.e.b+h.d+h.a);gjb(u,GSd);n.f=u;CIc(n,(pIc(),oIc));o.c=p.a-(o.b-q.a)/2;v=$wnd.Math.min(e,p.a);w=$wnd.Math.max(r,p.a+q.a);o.cw&&(o.c=w-o.b);tbb(g.d,new cMc(o,ELc(g,o)));s=b==lDc?$wnd.Math.max(s,p.b+j.b.Re().b):$wnd.Math.min(s,p.b)}s+=b==lDc?a.s:-a.s;t=FLc((g.e=s,g));t>0&&(kA(Cfb(a.b,b),114).a.b=t);for(k=m.tc();k.hc();){j=kA(k.ic(),111);if(!j.c||j.c.d.c.length<=0){continue}o=j.c.i;o.c-=j.e.a;o.d-=j.e.b}} +function zHc(a,b,c){var d,e,f,g,h,i,j,k,l,m;d=new pyc(b.Qe().a,b.Qe().b,b.Re().a,b.Re().b);e=new oyc;if(a.c){for(g=new ccb(b.We());g.a=2){if((!a.a&&(a.a=new zkd(IV,a,6,6)),a.a).i==0){c=(gMc(),e=new BQc,e);fXc((!a.a&&(a.a=new zkd(IV,a,6,6)),a.a),c)}else if((!a.a&&(a.a=new zkd(IV,a,6,6)),a.a).i>1){m=new j0c((!a.a&&(a.a=new zkd(IV,a,6,6)),a.a));while(m.e!=m.i._b()){__c(m)}}zFc(b,kA(WXc((!a.a&&(a.a=new zkd(IV,a,6,6)),a.a),0),270))}if(l){for(d=new a0c((!a.a&&(a.a=new zkd(IV,a,6,6)),a.a));d.e!=d.i._b();){c=kA($_c(d),270);for(j=new a0c((!c.a&&(c.a=new fdd(GV,c,5)),c.a));j.e!=j.i._b();){i=kA($_c(j),531);h.a=$wnd.Math.max(h.a,i.a);h.b=$wnd.Math.max(h.b,i.b)}}}for(g=new a0c((!a.n&&(a.n=new zkd(LV,a,1,7)),a.n));g.e!=g.i._b();){f=kA($_c(g),137);k=kA(AOc(f,$Bc),9);!!k&&pPc(f,k.a,k.b);if(l){h.a=$wnd.Math.max(h.a,f.i+f.g);h.b=$wnd.Math.max(h.b,f.j+f.f)}}return h} +function Omc(a,b,c){var d,e,f,g,h,i,j,k,l,m,n;a.e.a.Pb();a.f.a.Pb();a.c.c=tz(NE,oJd,1,0,5,1);a.i.c=tz(NE,oJd,1,0,5,1);a.g.a.Pb();if(b){for(g=new ccb(b.a);g.a>4)<<24>>24;l[m++]=((c&15)<<4|d>>2&15)<<24>>24;l[m++]=(d<<6|e)<<24>>24}if(!BEd(g=f[k++])||!BEd(h=f[k++])){return null}b=wEd[g];c=wEd[h];i=f[k++];j=f[k++];if(wEd[i]==-1||wEd[j]==-1){if(i==61&&j==61){if((c&15)!=0)return null;q=tz(BA,jTd,22,n*3+1,15,1);T6(l,0,q,0,n*3);q[m]=(b<<2|c>>4)<<24>>24;return q}else if(i!=61&&j==61){d=wEd[i];if((d&3)!=0)return null;q=tz(BA,jTd,22,n*3+2,15,1);T6(l,0,q,0,n*3);q[m++]=(b<<2|c>>4)<<24>>24;q[m]=((c&15)<<4|d>>2&15)<<24>>24;return q}else{return null}}else{d=wEd[i];e=wEd[j];l[m++]=(b<<2|c>>4)<<24>>24;l[m++]=((c&15)<<4|d>>2&15)<<24>>24;l[m++]=(d<<6|e)<<24>>24}return l} +function QMc(a,b,c){var d,e,f,g,h,i,j,k,l,m;i=new Gbb;l=b.length;g=Xkd(c);for(j=0;jh){t=0;u+=g+r;g=0}Jwb(p,c,t,u);b=$wnd.Math.max(b,t+q.a);g=$wnd.Math.max(g,q.b);t+=q.a+r}return p} +function UKb(a,b,c){var d,e,f,g,h;d=b.i;f=a.g.n;e=a.g.d;h=a.k;g=Pyc(xz(pz(aU,1),cKd,9,0,[h,a.a]));switch(a.i.g){case 1:DIc(b,(eJc(),bJc));d.d=-e.d-c-d.a;if(kA(kA(jdb(b.d).a.cd(0),271).xe((E2b(),b2b)),265)==(jHc(),fHc)){CIc(b,(pIc(),oIc));d.c=g.a-Vpb(nA(nub(a,g2b)))-c-d.b}else{CIc(b,(pIc(),nIc));d.c=g.a+Vpb(nA(nub(a,g2b)))+c}break;case 2:CIc(b,(pIc(),nIc));d.c=f.a+e.c+c;if(kA(kA(jdb(b.d).a.cd(0),271).xe((E2b(),b2b)),265)==(jHc(),fHc)){DIc(b,(eJc(),bJc));d.d=g.b-Vpb(nA(nub(a,g2b)))-c-d.a}else{DIc(b,(eJc(),dJc));d.d=g.b+Vpb(nA(nub(a,g2b)))+c}break;case 3:DIc(b,(eJc(),dJc));d.d=f.b+e.a+c;if(kA(kA(jdb(b.d).a.cd(0),271).xe((E2b(),b2b)),265)==(jHc(),fHc)){CIc(b,(pIc(),oIc));d.c=g.a-Vpb(nA(nub(a,g2b)))-c-d.b}else{CIc(b,(pIc(),nIc));d.c=g.a+Vpb(nA(nub(a,g2b)))+c}break;case 4:CIc(b,(pIc(),oIc));d.c=-e.b-c-d.b;if(kA(kA(jdb(b.d).a.cd(0),271).xe((E2b(),b2b)),265)==(jHc(),fHc)){DIc(b,(eJc(),bJc));d.d=g.b-Vpb(nA(nub(a,g2b)))-c-d.a}else{DIc(b,(eJc(),dJc));d.d=g.b+Vpb(nA(nub(a,g2b)))+c}}} +function FTb(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o;g=new LTb(a);h=Qr(yn(b,g));bdb();Dbb(h,new QTb);e=a.b;switch(e.c){case 2:i=new UTb(e.a);c=Kn(yn(h,i));se(c)?(j=kA(te(c),188).b):(j=15);i=new UTb(Glc(e));c=Kn(yn(h,i));se(c)?(f=kA(te(c),188).b):(f=15);i=new UTb(e.b);c=Kn(yn(h,i));se(c)?(k=kA(te(c),188).b):(k=15);d=ATb(a,j,f,k);Ggb(b,new ITb(d,a.c,a.e,a.a.c.g,e.a));Ggb(b,new ITb(d,a.c,a.e,a.a.c.g,Glc(e)));Ggb(b,new ITb(d,a.c,a.e,a.a.c.g,e.b));break;case 1:i=new UTb(e.a);c=Kn(yn(h,i));se(c)?(j=kA(te(c),188).b):(j=15);i=new UTb(e.b);c=Kn(yn(h,i));se(c)?(k=kA(te(c),188).b):(k=15);d=BTb(a,j,k);Ggb(b,new ITb(d,a.c,a.e,a.a.c.g,e.a));Ggb(b,new ITb(d,a.c,a.e,a.a.c.g,e.b));break;case 0:i=new UTb(e.a);c=Kn(yn(h,i));se(c)?(j=kA(te(c),188).b):(j=15);d=(l=a.b,m=xmc(a.a.c,a.a.d,j),pg(a.a.a,Vlc(m)),n=DTb(a.a.b,m.a,l),o=new Emc((!m.k&&(m.k=new Cmc(Xlc(m))),m.k)),zmc(o),!n?o:Gmc(o,n));Ggb(b,new ITb(d,a.c,a.e,a.a.c.g,e.a));break;default:throw x2(new O4('The loopside must be defined.'));}return d} +function ZDb(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,A,B,C;xEc(b,'Compound graph postprocessor',1);c=Vpb(mA(nub(a,(J6b(),y6b))));h=kA(nub(a,(E2b(),O1b)),238);k=new Jgb;for(r=h.Xb().tc();r.hc();){q=kA(r.ic(),14);g=new Ibb(h.Mc(q));bdb();Dbb(g,new BEb(a));v=wEb((Mpb(0,g.c.length),kA(g.c[0],234)));A=xEb(kA(xbb(g,g.c.length-1),234));t=v.g;SFb(A.g,t)?(s=kA(nub(t,h2b),31)):(s=uGb(t));l=$Db(q,g);xib(q.a);m=null;for(f=new ccb(g);f.alNd;C=$wnd.Math.abs(m.b-o.b)>lNd;(!c&&B&&C||c&&(B||C))&&mib(q.a,u)}pg(q.a,d);d.b==0?(m=u):(m=(Lpb(d.b!=0),kA(d.c.b.c,9)));_Db(n,l,p);if(xEb(e)==A){if(uGb(A.g)!=e.a){p=new Hyc;LFb(p,uGb(A.g),s)}qub(q,C2b,p)}aEb(n,q,s);k.a.Zb(n,k)}LEb(q,v);MEb(q,A)}for(j=k.a.Xb().tc();j.hc();){i=kA(j.ic(),14);LEb(i,null);MEb(i,null)}zEc(b)} +function mYb(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,A,B,C,D,F,G,H;s=new s9(a.b,0);k=b.tc();o=0;j=kA(k.ic(),21).a;v=0;c=new Jgb;A=new iib;while(s.b=a.a){d=iNb(a,s);k=v5(k,d.b);u=v5(u,d.d);tbb(h,new fGc(s,d))}}B=new Gbb;for(j=0;j0),q.a.cd(q.c=--q.b),C=new lIb(a.b),r9(q,C),Lpb(q.b=d.n.b/2}else{s=!l}if(s){r=kA(nub(d,(E2b(),D2b)),15);if(!r){f=new Gbb;qub(d,D2b,f)}else if(m){f=r}else{e=kA(nub(d,I1b),15);if(!e){f=new Gbb;qub(d,I1b,f)}else{r._b()<=e._b()?(f=r):(f=e)}}}else{e=kA(nub(d,(E2b(),I1b)),15);if(!e){f=new Gbb;qub(d,I1b,f)}else if(l){f=e}else{r=kA(nub(d,D2b),15);if(!r){f=new Gbb;qub(d,D2b,f)}else{e._b()<=r._b()?(f=e):(f=r)}}}f.nc(a);qub(a,(E2b(),K1b),c);if(b.d==c){MEb(b,null);c.d.c.length+c.f.c.length==0&&jHb(c,null);xKb(c)}else{LEb(b,null);c.d.c.length+c.f.c.length==0&&jHb(c,null)}xib(b.a)} +function cKb(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o;if(yA(nub(a.c,(J6b(),Z5b)))===yA((VCc(),RCc))||yA(nub(a.c,Z5b))===yA(QCc)){for(k=new ccb(a.c.i);k.a0){e=kA(xbb(q.c.a,w-1),8);g=a.i[e.o];B=$wnd.Math.ceil(l8b(a.n,e,q));f=v.a.e-q.d.d-(g.a.e+e.n.b+e.d.a)-B}j=oLd;if(w0&&A.a.e.e-A.a.a-(A.b.e.e-A.b.a)<0;o=t.a.e.e-t.a.a-(t.b.e.e-t.b.a)<0&&A.a.e.e-A.a.a-(A.b.e.e-A.b.a)>0;n=t.a.e.e+t.b.aA.b.e.e+A.a.a;u=0;!p&&!o&&(m?f+l>0?(u=l):j-d>0&&(u=d):n&&(f+h>0?(u=h):j-s>0&&(u=s)));v.a.e+=u;v.b&&(v.d.e+=u);return false} +function gw(){var a=['\\u0000','\\u0001','\\u0002','\\u0003','\\u0004','\\u0005','\\u0006','\\u0007','\\b','\\t','\\n','\\u000B','\\f','\\r','\\u000E','\\u000F','\\u0010','\\u0011','\\u0012','\\u0013','\\u0014','\\u0015','\\u0016','\\u0017','\\u0018','\\u0019','\\u001A','\\u001B','\\u001C','\\u001D','\\u001E','\\u001F'];a[34]='\\"';a[92]='\\\\';a[173]='\\u00ad';a[1536]='\\u0600';a[1537]='\\u0601';a[1538]='\\u0602';a[1539]='\\u0603';a[1757]='\\u06dd';a[1807]='\\u070f';a[6068]='\\u17b4';a[6069]='\\u17b5';a[8203]='\\u200b';a[8204]='\\u200c';a[8205]='\\u200d';a[8206]='\\u200e';a[8207]='\\u200f';a[8232]='\\u2028';a[8233]='\\u2029';a[8234]='\\u202a';a[8235]='\\u202b';a[8236]='\\u202c';a[8237]='\\u202d';a[8238]='\\u202e';a[8288]='\\u2060';a[8289]='\\u2061';a[8290]='\\u2062';a[8291]='\\u2063';a[8292]='\\u2064';a[8298]='\\u206a';a[8299]='\\u206b';a[8300]='\\u206c';a[8301]='\\u206d';a[8302]='\\u206e';a[8303]='\\u206f';a[65279]='\\ufeff';a[65529]='\\ufff9';a[65530]='\\ufffa';a[65531]='\\ufffb';return a} +function Flc(){Flc=d3;jlc=new Mlc('N',0,(FDc(),lDc),lDc,0);glc=new Mlc('EN',1,kDc,lDc,1);flc=new Mlc('E',2,kDc,kDc,0);mlc=new Mlc('SE',3,CDc,kDc,1);llc=new Mlc('S',4,CDc,CDc,0);Elc=new Mlc('WS',5,EDc,CDc,1);Dlc=new Mlc('W',6,EDc,EDc,0);klc=new Mlc('NW',7,lDc,EDc,1);hlc=new Mlc('ENW',8,kDc,EDc,2);ilc=new Mlc('ESW',9,kDc,EDc,2);nlc=new Mlc('SEN',10,CDc,lDc,2);Blc=new Mlc('SWN',11,CDc,lDc,2);Clc=new Mlc(LQd,12,DDc,DDc,3);clc=qm(jlc,glc,flc,mlc,llc,Elc,xz(pz(OR,1),jKd,129,0,[Dlc,klc,hlc,ilc,nlc,Blc]));elc=(nl(),mm(xz(pz(NE,1),oJd,1,5,[jlc,flc,llc,Dlc])));dlc=mm(xz(pz(NE,1),oJd,1,5,[glc,mlc,Elc,klc]));slc=new ov(lDc);plc=mm(xz(pz(NE,1),oJd,1,5,[kDc,lDc]));olc=new ov(kDc);vlc=mm(xz(pz(NE,1),oJd,1,5,[CDc,kDc]));ulc=new ov(CDc);Alc=mm(xz(pz(NE,1),oJd,1,5,[EDc,CDc]));zlc=new ov(EDc);tlc=mm(xz(pz(NE,1),oJd,1,5,[lDc,EDc]));qlc=mm(xz(pz(NE,1),oJd,1,5,[kDc,lDc,EDc]));rlc=mm(xz(pz(NE,1),oJd,1,5,[kDc,CDc,EDc]));xlc=mm(xz(pz(NE,1),oJd,1,5,[CDc,EDc,lDc]));wlc=mm(xz(pz(NE,1),oJd,1,5,[CDc,kDc,lDc]));ylc=(av(),_u)} +function pdc(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,A,B;c=Vpb(nA(nub(a.a.j,(J6b(),R4b))));if(c<-1||!a.a.i||WCc(kA(nub(a.a.o,Z5b),83))||AGb(a.a.o,(FDc(),kDc))._b()<2&&AGb(a.a.o,EDc)._b()<2){return true}if(a.a.c.pf()){return false}u=0;t=0;s=new Gbb;for(i=a.a.e,j=0,k=i.length;j=c} +function DRb(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u;xEc(b,mOd,1);n=kA(nub(a,(J6b(),a5b)),197);for(e=new ccb(a.b);e.a=2){o=true;l=new ccb(f.i);c=kA(acb(l),11);while(l.a0){m=k<100?null:new f_c(k);j=new eYc(b);o=j.g;r=tz(FA,OKd,22,k,15,1);d=0;u=new dYc(k);for(e=0;e=0;){if(h!=null?kb(h,o[i]):null==o[i]){if(r.length<=d){q=r;r=tz(FA,OKd,22,2*r.length,15,1);T6(q,0,r,0,d)}r[d++]=e;fXc(u,o[i]);break v}}if(yA(h)===yA(h)){break}}}o=u.g;if(d>r.length){q=r;r=tz(FA,OKd,22,d,15,1);T6(q,0,r,0,d)}if(d>0){t=true;for(f=0;f=0;){ZXc(a,r[g])}if(d!=d){for(e=d;--e>=d;){ZXc(u,e)}q=r;r=tz(FA,OKd,22,d,15,1);T6(q,0,r,0,d)}b=u}}}else{b=kXc(a,b);for(e=a.i;--e>=0;){if(b.pc(a.g[e])){ZXc(a,e);t=true}}}if(t){if(r!=null){c=b._b();l=c==1?ncd(a,4,b.tc().ic(),null,r[0],p):ncd(a,6,b,r,r[0],p);m=c<100?null:new f_c(c);for(e=b.tc();e.hc();){n=e.ic();m=Pud(a,kA(n,75),m)}if(!m){vMc(a.e,l)}else{m.Sh(l);m.Th()}}else{m=s_c(b._b());for(e=b.tc();e.hc();){n=e.ic();m=Pud(a,kA(n,75),m)}!!m&&m.Th()}return true}else{return false}} +function cac(a,b,c){var d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,A,B,C,D,F,G,H,I;xEc(c,'MinWidth layering',1);n=b.b;A=b.a;I=kA(nub(b,(J6b(),s5b)),21).a;h=kA(nub(b,t5b),21).a;a.b=Vpb(nA(nub(b,k6b)));a.d=oLd;for(u=new ccb(A);u.a0||c.o==oic&&e0){l=kA(xbb(m.c.a,g-1),8);B=l8b(a.b,m,l);q=m.k.b-m.d.d-(l.k.b+l.n.b+l.d.a+B)}else{q=m.k.b-m.d.d}j=$wnd.Math.min(q,j);if(g=1){if(B-j>0&&o>=0){rPc(l,l.i+A);sPc(l,l.j+i*j)}else if(B-j<0&&n>=0){rPc(l,l.i+A*B);sPc(l,l.j+i)}}}}COc(a,hAc,(f=kA(e4(uU),10),new ngb(f,kA(ypb(f,f.length),10),0)));return new Jyc(C,k)} +function OVb(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q;p=new Gbb;for(m=new ccb(a.d.b);m.ae.d.d+e.d.a){k.f.d=true}else{k.f.d=true;k.f.a=true}}}d.b!=d.d.c&&(b=c)}if(k){f=kA(F8(a.f,g.d.g),57);if(b.bf.d.d+f.d.a){k.f.d=true}else{k.f.d=true;k.f.a=true}}}}for(h=kl(vGb(n));So(h);){g=kA(To(h),14);if(g.a.b!=0){b=kA(rib(g.a),9);if(g.d.i==(FDc(),lDc)){q=new fXb(b,new Jyc(b.a,e.d.d),e,g);q.f.a=true;q.a=g.d;p.c[p.c.length]=q}if(g.d.i==CDc){q=new fXb(b,new Jyc(b.a,e.d.d+e.d.a),e,g);q.f.d=true;q.a=g.d;p.c[p.c.length]=q}}}}}return p} +function RYc(){QYc();function h(f){var g=this;this.dispatch=function(a){var b=a.data;switch(b.cmd){case 'algorithms':var c=SYc((bdb(),new Xdb(new R9(PYc.b))));f.postMessage({id:b.id,data:c});break;case 'categories':var d=SYc((bdb(),new Xdb(new R9(PYc.c))));f.postMessage({id:b.id,data:d});break;case 'options':var e=SYc((bdb(),new Xdb(new R9(PYc.d))));f.postMessage({id:b.id,data:e});break;case 'register':VYc(b.algorithms);f.postMessage({id:b.id});break;case 'layout':TYc(b.graph,b.options||{});f.postMessage({id:b.id,data:b.graph});break;}};this.saveDispatch=function(b){try{g.dispatch(b)}catch(a){delete a[qKd];f.postMessage({id:b.data.id,error:a.message})}}} +function j(b){var c=this;this.dispatcher=new h({postMessage:function(a){c.onmessage({data:a})}});this.postMessage=function(a){setTimeout(function(){c.dispatcher.saveDispatch({data:a})},0)}} +if(typeof document===YTd&&typeof self!==YTd){var i=new h(self);self.onmessage=i.saveDispatch}else if(typeof module!==YTd&&module.exports){Object.defineProperty(exports,'__esModule',{value:true});module.exports={'default':j,Worker:j}}} +function LLb(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u;s=0;if(b.e.a==0){for(q=new ccb(a);q.a50?(r.c[r.c.length]=e,true):e.k>0?(s.c[s.c.length]=e,true):(t.c[t.c.length]=e,true)}if(s.c.length==1&&r.c.length==0){vbb(r,s);s.c=tz(NE,oJd,1,0,5,1)}r.c.length!=0&&kgb(aTb(a.a),(Flc(),jlc))&&kgb(aTb(a.a),(Flc(),llc))?TSb(a,r):vbb(s,r);s.c.length==0||USb(a,s);if(t.c.length!=0){c=bTb(a.a);if(c.c!=0){k=new ccb(t);i=(Pb(c),co((new En(c)).a));while(k.a1){p=kA(Io(i),129);Zkc(e,p,true);bcb(k);eTb(a.a,p)}}}m=t.c.length;d=WSb(a);n=new Gbb;g=m/_Sb(a.a).c|0;for(h=0;h3){vbb(n,(Flc(),Flc(),dlc));o-=4}switch(o){case 3:tbb(n,Jlc(d));case 2:q=Ilc(Jlc(d));do{q=Ilc(q)}while(!kgb(aTb(a.a),q));n.c[n.c.length]=q;q=Klc(Jlc(d));do{q=Klc(q)}while(!kgb(aTb(a.a),q));n.c[n.c.length]=q;break;case 1:tbb(n,Jlc(d));}l=new ccb(n);j=new ccb(t);while(l.ap){if(f){oib(w,n);oib(B,d5(k.b-1));tbb(a.d,o);h.c=tz(NE,oJd,1,0,5,1)}H=c.b;I+=n+b;n=0;l=$wnd.Math.max(l,c.b+c.c+G)}h.c[h.c.length]=i;ZEc(i,H,I);l=$wnd.Math.max(l,H+G+c.c);n=$wnd.Math.max(n,m);H+=G+b;o=i}vbb(a.a,h);tbb(a.d,kA(xbb(h,h.c.length-1),145));l=$wnd.Math.max(l,d);F=I+n+c.a;if(F1&&(g=$wnd.Math.min(g,$wnd.Math.abs(kA(Fq(h.a,1),9).b-k.b)))}}}}}else{for(p=new ccb(b.i);p.ae){f=m.a-e;g=jJd;d.c=tz(NE,oJd,1,0,5,1);e=m.a}if(m.a>=e){d.c[d.c.length]=h;h.a.b>1&&(g=$wnd.Math.min(g,$wnd.Math.abs(kA(Fq(h.a,h.a.b-2),9).b-m.b)))}}}}}if(d.c.length!=0&&f>b.n.a/2&&g>b.n.b/2){n=new lHb;jHb(n,b);kHb(n,(FDc(),lDc));n.k.a=b.n.a/2;r=new lHb;jHb(r,b);kHb(r,CDc);r.k.a=b.n.a/2;r.k.b=b.n.b;for(i=new ccb(d);i.a=j.b?LEb(h,r):LEb(h,n)}else{j=kA(vib(h.a),9);q=h.a.b==0?gHb(h.c):kA(rib(h.a),9);q.b>=j.b?MEb(h,r):MEb(h,n)}l=kA(nub(h,(J6b(),p5b)),74);!!l&&qg(l,j,true)}b.k.a=e-b.n.a/2}} +function wic(a,b,c){var d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v;for(h=new ccb(a.a.b);h.a0){d=l._b();j=zA($wnd.Math.floor((d+1)/2))-1;e=zA($wnd.Math.ceil((d+1)/2))-1;if(b.o==oic){for(k=e;k>=j;k--){if(b.a[u.o]==u){p=kA(l.cd(k),48);o=kA(p.a,8);if(!Hgb(c,p.b)&&n>a.b.e[o.o]){b.a[o.o]=u;b.g[u.o]=b.g[o.o];b.a[u.o]=b.g[u.o];b.f[b.g[u.o].o]=(B3(),Vpb(b.f[b.g[u.o].o])&u.j==(RGb(),OGb)?true:false);n=a.b.e[o.o]}}}}else{for(k=j;k<=e;k++){if(b.a[u.o]==u){r=kA(l.cd(k),48);q=kA(r.a,8);if(!Hgb(c,r.b)&&n=48&&b<=57){d=b-48;while(e=48&&b<=57){d=d*10+b-48;if(d<0)throw x2(new KEd(WYc((isd(),IUd))))}}else{throw x2(new KEd(WYc((isd(),EUd))))}c=d;if(b==44){if(e>=a.j){throw x2(new KEd(WYc((isd(),GUd))))}else if((b=X5(a.i,e++))>=48&&b<=57){c=b-48;while(e=48&&b<=57){c=c*10+b-48;if(c<0)throw x2(new KEd(WYc((isd(),IUd))))}if(d>c)throw x2(new KEd(WYc((isd(),HUd))))}else{c=-1}}if(b!=125)throw x2(new KEd(WYc((isd(),FUd))));if(a.Ck(e)){f=(UGd(),UGd(),++TGd,new JHd(9,f));a.d=e+1}else{f=(UGd(),UGd(),++TGd,new JHd(3,f));a.d=e}f.nl(d);f.ml(c);LEd(a)}}return f} +function _Cb(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,A,B,C,D;l=bDb(YCb(a,(FDc(),qDc)),b);o=aDb(YCb(a,rDc),b);u=aDb(YCb(a,zDc),b);B=cDb(YCb(a,BDc),b);m=cDb(YCb(a,mDc),b);s=aDb(YCb(a,yDc),b);p=aDb(YCb(a,sDc),b);w=aDb(YCb(a,ADc),b);v=aDb(YCb(a,nDc),b);C=cDb(YCb(a,pDc),b);r=aDb(YCb(a,wDc),b);t=aDb(YCb(a,vDc),b);A=aDb(YCb(a,oDc),b);D=cDb(YCb(a,xDc),b);n=cDb(YCb(a,tDc),b);q=aDb(YCb(a,uDc),b);c=hyc(xz(pz(DA,1),vLd,22,15,[s.a,B.a,w.a,D.a]));d=hyc(xz(pz(DA,1),vLd,22,15,[o.a,l.a,u.a,q.a]));e=r.a;f=hyc(xz(pz(DA,1),vLd,22,15,[p.a,m.a,v.a,n.a]));j=hyc(xz(pz(DA,1),vLd,22,15,[s.b,o.b,p.b,t.b]));i=hyc(xz(pz(DA,1),vLd,22,15,[B.b,l.b,m.b,q.b]));k=C.b;h=hyc(xz(pz(DA,1),vLd,22,15,[w.b,u.b,v.b,A.b]));TCb(YCb(a,qDc),c+e,j+k);TCb(YCb(a,uDc),c+e,j+k);TCb(YCb(a,rDc),c+e,0);TCb(YCb(a,zDc),c+e,j+k+i);TCb(YCb(a,BDc),0,j+k);TCb(YCb(a,mDc),c+e+d,j+k);TCb(YCb(a,sDc),c+e+d,0);TCb(YCb(a,ADc),0,j+k+i);TCb(YCb(a,nDc),c+e+d,j+k+i);TCb(YCb(a,pDc),0,j);TCb(YCb(a,wDc),c,0);TCb(YCb(a,oDc),0,j+k+i);TCb(YCb(a,tDc),c+e+d,0);g=new Hyc;g.a=hyc(xz(pz(DA,1),vLd,22,15,[c+d+e+f,C.a,t.a,A.a]));g.b=hyc(xz(pz(DA,1),vLd,22,15,[j+i+k+h,r.b,D.b,n.b]));return g} +function uMc(){uMc=d3;iMc();tMc=hMc.a;kA(WXc(Ibd(hMc.a),0),17);nMc=hMc.f;kA(WXc(Ibd(hMc.f),0),17);kA(WXc(Ibd(hMc.f),1),29);sMc=hMc.n;kA(WXc(Ibd(hMc.n),0),29);kA(WXc(Ibd(hMc.n),1),29);kA(WXc(Ibd(hMc.n),2),29);kA(WXc(Ibd(hMc.n),3),29);oMc=hMc.g;kA(WXc(Ibd(hMc.g),0),17);kA(WXc(Ibd(hMc.g),1),29);kMc=hMc.c;kA(WXc(Ibd(hMc.c),0),17);kA(WXc(Ibd(hMc.c),1),17);pMc=hMc.i;kA(WXc(Ibd(hMc.i),0),17);kA(WXc(Ibd(hMc.i),1),17);kA(WXc(Ibd(hMc.i),2),17);kA(WXc(Ibd(hMc.i),3),17);kA(WXc(Ibd(hMc.i),4),29);qMc=hMc.j;kA(WXc(Ibd(hMc.j),0),17);lMc=hMc.d;kA(WXc(Ibd(hMc.d),0),17);kA(WXc(Ibd(hMc.d),1),17);kA(WXc(Ibd(hMc.d),2),17);kA(WXc(Ibd(hMc.d),3),17);kA(WXc(Ibd(hMc.d),4),29);kA(WXc(Ibd(hMc.d),5),29);kA(WXc(Ibd(hMc.d),6),29);kA(WXc(Ibd(hMc.d),7),29);jMc=hMc.b;kA(WXc(Ibd(hMc.b),0),29);kA(WXc(Ibd(hMc.b),1),29);mMc=hMc.e;kA(WXc(Ibd(hMc.e),0),29);kA(WXc(Ibd(hMc.e),1),29);kA(WXc(Ibd(hMc.e),2),29);kA(WXc(Ibd(hMc.e),3),29);kA(WXc(Ibd(hMc.e),4),17);kA(WXc(Ibd(hMc.e),5),17);kA(WXc(Ibd(hMc.e),6),17);kA(WXc(Ibd(hMc.e),7),17);kA(WXc(Ibd(hMc.e),8),17);kA(WXc(Ibd(hMc.e),9),17);kA(WXc(Ibd(hMc.e),10),29);rMc=hMc.k;kA(WXc(Ibd(hMc.k),0),29);kA(WXc(Ibd(hMc.k),1),29)} +function _mc(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,A,B,C,D,F;C=new yib;w=new yib;q=-1;for(i=new ccb(a);i.a=o){if(s>o){n.c=tz(NE,oJd,1,0,5,1);o=s}n.c[n.c.length]=g}}if(n.c.length!=0){m=kA(xbb(n,Xjb(b,n.c.length)),125);F.a.$b(m)!=null;m.p=p++;dnc(m,C,w);n.c=tz(NE,oJd,1,0,5,1)}}u=a.c.length+1;for(h=new ccb(a);h.aD.p){l9(c);Abb(D.g,d);if(d.c>0){d.a=D;tbb(D.q,d);d.b=A;tbb(A.g,d)}}}}} +function ggc(a,b,c){var d,e,f,g,h,i,j,k,l;xEc(c,'Network simplex node placement',1);a.e=b;a.n=kA(nub(b,(E2b(),v2b)),266);fgc(a);Tfc(a);Sob(Rob(new Zob(null,new ekb(a.e.b,16)),new Vgc),new Xgc(a));Sob(Pob(Rob(Pob(Rob(new Zob(null,new ekb(a.e.b,16)),new Khc),new Mhc),new Ohc),new Qhc),new Tgc(a));if(Vpb(mA(nub(a.e,(J6b(),E5b))))){g=BEc(c,1);xEc(g,'Straight Edges Pre-Processing',1);egc(a);zEc(g)}MZb(a.f);f=kA(nub(b,x6b),21).a*a.f.a.c.length;w$b(J$b(K$b(N$b(a.f),f),false),BEc(c,1));if(a.d.a._b()!=0){g=BEc(c,1);xEc(g,'Flexible Where Space Processing',1);h=kA(jjb(Xob(Tob(new Zob(null,new ekb(a.f.a,16)),new Zgc),(Npb(new tgc),new Nmb))),21).a;i=kA(jjb(Vob(Tob(new Zob(null,new ekb(a.f.a,16)),new _gc),new xgc)),21).a;j=i-h;k=p$b(new r$b,a.f);l=p$b(new r$b,a.f);DZb(GZb(FZb(EZb(HZb(new IZb,20000),j),k),l));Sob(Pob(Pob(Gcb(a.i),new bhc),new dhc),new fhc(h,k,j,l));for(e=a.d.a.Xb().tc();e.hc();){d=kA(e.ic(),189);d.g=1}w$b(J$b(K$b(N$b(a.f),f),false),BEc(g,1));zEc(g)}if(Vpb(mA(nub(b,E5b)))){g=BEc(c,1);xEc(g,'Straight Edges Post-Processing',1);dgc(a);zEc(g)}Sfc(a);a.e=null;a.f=null;a.i=null;a.c=null;L8(a.k);a.j=null;a.a=null;a.o=null;a.d.a.Pb();zEc(c)} +function LRb(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,A,B,C,D,F;p=new Hbb(b.b);u=new Hbb(b.b);m=new Hbb(b.b);B=new Hbb(b.b);q=new Hbb(b.b);for(A=sib(b,0);A.b!=A.d.c;){v=kA(Gib(A),11);for(h=new ccb(v.f);h.a0;r=v.f.c.length>0;j&&r?(m.c[m.c.length]=v,true):j?(p.c[p.c.length]=v,true):r&&(u.c[u.c.length]=v,true)}for(o=new ccb(p);o.a=0&&Z5(a.substr(h,'//'.length),'//')){h+=2;i=W5c(a,h,E5c,F5c);d=a.substr(h,i-h);h=i}else if(l!=null&&(h==a.length||a.charCodeAt(h)!=47)){g=false;i=c6(a,o6(35),h);i==-1&&(i=a.length);d=a.substr(h,i-h);h=i}if(!c&&h0&&X5(k,k.length-1)==58){e=k;h=i}}if(h=m){if(u>m){l.c=tz(NE,oJd,1,0,5,1);m=u}l.c[l.c.length]=q}}if(l.c.length!=0){k=kA(xbb(l,Xjb(b,l.c.length)),165);Elb(H.a,k)!=null;k.d=n++;akc(k,F,B);l.c=tz(NE,oJd,1,0,5,1)}}w=a.c.length+1;for(r=new ccb(a);r.aG.d){l9(c);Abb(G.b,d);if(d.c>0){d.a=G;tbb(G.e,d);d.b=C;tbb(C.b,d)}}}}} +function XUc(a,b,c){var d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,A,B,C,D,F;s=new Xm;t=new Xm;k=WTc(b,zTd);d=new WVc(a,c,s,t);MUc(d.a,d.b,d.c,d.d,k);i=(w=s.i,!w?(s.i=sA(s.c,122)?new Ph(s,kA(s.c,122)):sA(s.c,115)?new Nh(s,kA(s.c,115)):new ph(s,s.c)):w);for(B=i.tc();B.hc();){A=kA(B.ic(),270);e=kA(Ke(s,A),19);for(p=e.tc();p.hc();){o=p.ic();u=kA(qc(a.d,o),270);if(u){h=(!A.e&&(A.e=new pxd(IV,A,10,9)),A.e);fXc(h,u)}else{g=ZTc(b,HTd);m=NTd+o+OTd+g;n=m+MTd;throw x2(new aUc(n))}}}j=(v=t.i,!v?(t.i=sA(t.c,122)?new Ph(t,kA(t.c,122)):sA(t.c,115)?new Nh(t,kA(t.c,115)):new ph(t,t.c)):v);for(D=j.tc();D.hc();){C=kA(D.ic(),270);f=kA(Ke(t,C),19);for(r=f.tc();r.hc();){q=r.ic();u=kA(qc(a.d,q),270);if(u){l=(!C.g&&(C.g=new pxd(IV,C,9,10)),C.g);fXc(l,u)}else{g=ZTc(b,HTd);m=NTd+q+OTd+g;n=m+MTd;throw x2(new aUc(n))}}}!c.b&&(c.b=new pxd(HV,c,4,7));if(c.b.i!=0&&(!c.c&&(c.c=new pxd(HV,c,5,8)),c.c.i!=0)&&(!c.b&&(c.b=new pxd(HV,c,4,7)),c.b.i<=1&&(!c.c&&(c.c=new pxd(HV,c,5,8)),c.c.i<=1))&&(!c.a&&(c.a=new zkd(IV,c,6,6)),c.a).i==1){F=kA(WXc((!c.a&&(c.a=new zkd(IV,c,6,6)),c.a),0),270);if(!nQc(F)&&!oQc(F)){uQc(F,kA(WXc((!c.b&&(c.b=new pxd(HV,c,4,7)),c.b),0),97));vQc(F,kA(WXc((!c.c&&(c.c=new pxd(HV,c,5,8)),c.c),0),97))}}} +function gDb(a,b,c){var d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,A,B;a.d=new Jyc(oLd,oLd);a.c=new Jyc(pLd,pLd);for(m=b.tc();m.hc();){k=kA(m.ic(),31);for(t=new ccb(k.a);t.a=v||!p9b(r,d))&&(d=r9b(b,k));FGb(r,d);for(f=kl(vGb(r));So(f);){e=kA(To(f),14);if(a.a[e.o]){continue}p=e.c.g;--a.e[p.o];a.e[p.o]==0&&(Spb(Djb(n,p)),true)}}for(j=k.c.length-1;j>=0;--j){tbb(b.b,(Mpb(j,k.c.length),kA(k.c[j],26)))}b.a.c=tz(NE,oJd,1,0,5,1);zEc(c)} +function _Uc(a,b,c){var d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,A,B,C,D,F,G,H,I,J,K,L,M,N,O,P,Q;F=OUc(a,XWc(c),b);aPc(F,ZTc(b,HTd));G=kA(qc(a.g,TTc(Ly(b,oTd))),35);m=Ly(b,'sourcePort');d=null;!!m&&(d=TTc(m));H=kA(qc(a.j,d),121);if(!G){h=UTc(b);o="An edge must have a source node (edge id: '"+h;p=o+MTd;throw x2(new aUc(p))}if(!!H&&!Hb(mTc(H),G)){i=ZTc(b,HTd);q="The source port of an edge must be a port of the edge's source node (edge id: '"+i;r=q+MTd;throw x2(new aUc(r))}B=(!F.b&&(F.b=new pxd(HV,F,4,7)),F.b);H?(f=H):(f=G);fXc(B,f);I=kA(qc(a.g,TTc(Ly(b,PTd))),35);n=Ly(b,'targetPort');e=null;!!n&&(e=TTc(n));J=kA(qc(a.j,e),121);if(!I){l=UTc(b);s="An edge must have a target node (edge id: '"+l;t=s+MTd;throw x2(new aUc(t))}if(!!J&&!Hb(mTc(J),I)){j=ZTc(b,HTd);u="The target port of an edge must be a port of the edge's target node (edge id: '"+j;v=u+MTd;throw x2(new aUc(v))}C=(!F.c&&(F.c=new pxd(HV,F,5,8)),F.c);J?(g=J):(g=I);fXc(C,g);if((!F.b&&(F.b=new pxd(HV,F,4,7)),F.b).i==0||(!F.c&&(F.c=new pxd(HV,F,5,8)),F.c).i==0){k=ZTc(b,HTd);w=LTd+k;A=w+MTd;throw x2(new aUc(A))}aVc(b,F);K=$Wc(F,true,true);L=YTc(b,'sourcePoint');M=new EVc(K);zUc(M.a,L);N=YTc(b,'targetPoint');O=new SVc(K);IUc(O.a,N);P=WTc(b,ATd);Q=new TVc(K);JUc(Q.a,P);D=ZUc(a,b,F);return D} +function j8(a,b){g8();var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,A,B,C,D,F,G;A=a.e;n=a.d;e=a.a;if(A==0){switch(b){case 0:return '0';case 1:return ALd;case 2:return '0.00';case 3:return '0.000';case 4:return '0.0000';case 5:return '0.00000';case 6:return '0.000000';default:v=new M6;b<0?(v.a+='0E+',v):(v.a+='0E',v);v.a+=-b;return v.a;}}s=n*10+1+7;t=tz(CA,yKd,22,s+1,15,1);c=s;if(n==1){g=e[0];if(g<0){G=z2(g,yLd);do{o=G;G=C2(G,10);t[--c]=48+U2(R2(o,J2(G,10)))&AKd}while(A2(G,0)!=0)}else{G=g;do{o=G;G=G/10|0;t[--c]=48+(o-G*10)&AKd}while(G!=0)}}else{C=tz(FA,OKd,22,n,15,1);F=n;T6(e,0,C,0,n);H:while(true){w=0;for(i=F-1;i>=0;i--){D=y2(O2(w,32),z2(C[i],yLd));q=h8(D);C[i]=U2(q);w=U2(P2(q,32))}r=U2(w);p=c;do{t[--c]=48+r%10&AKd}while((r=r/10|0)!=0&&c!=0);d=9-p+c;for(h=0;h0;h++){t[--c]=48}k=F-1;for(;C[k]==0;k--){if(k==0){break H}}F=k+1}while(t[c]==48){++c}}m=A<0;f=s-c-b-1;if(b==0){m&&(t[--c]=45);return r6(t,c,s-c)}if(b>0&&f>=-6){if(f>=0){j=c+f;for(l=s-1;l>=j;l--){t[l+1]=t[l]}t[++j]=46;m&&(t[--c]=45);return r6(t,c,s-c+1)}for(k=2;k<-f+1;k++){t[--c]=48}t[--c]=46;t[--c]=48;m&&(t[--c]=45);return r6(t,c,s-c)}B=c+1;u=new N6;m&&(u.a+='-',u);if(s-B>=1){C6(u,t[c]);u.a+='.';u.a+=r6(t,c+1,s-c-1)}else{u.a+=r6(t,c,s-c)}u.a+='E';f>0&&(u.a+='+',u);u.a+=''+f;return u.a} +function uGc(a,b,c,d){var e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,A,B,C,D,F,G,H,I,J,K,L,M,N,O,P;t=kA(WXc((!a.b&&(a.b=new pxd(HV,a,4,7)),a.b),0),97);v=t.Yf();w=t.Zf();u=t.Xf()/2;p=t.Wf()/2;if(sA(t,187)){s=kA(t,121);v+=mTc(s).i;v+=mTc(s).i}v+=u;w+=p;F=kA(WXc((!a.b&&(a.b=new pxd(HV,a,4,7)),a.b),0),97);H=F.Yf();I=F.Zf();G=F.Xf()/2;A=F.Wf()/2;if(sA(F,187)){D=kA(F,121);H+=mTc(D).i;H+=mTc(D).i}H+=G;I+=A;if((!a.a&&(a.a=new zkd(IV,a,6,6)),a.a).i==0){h=(gMc(),j=new BQc,j);fXc((!a.a&&(a.a=new zkd(IV,a,6,6)),a.a),h)}else if((!a.a&&(a.a=new zkd(IV,a,6,6)),a.a).i>1){o=new j0c((!a.a&&(a.a=new zkd(IV,a,6,6)),a.a));while(o.e!=o.i._b()){__c(o)}}g=kA(WXc((!a.a&&(a.a=new zkd(IV,a,6,6)),a.a),0),270);q=H;H>v+u?(q=v+u):Hw+p?(r=w+p):Iv-u&&qw-p&&rH+G?(B=H+G):vI+A?(C=I+A):wH-G&&BI-A&&Cc&&(m=c-1);n=N+Yjb(b,24)*LLd*l-l/2;n<0?(n=1):n>d&&(n=d-1);e=(gMc(),i=new QOc,i);OOc(e,m);POc(e,n);fXc((!g.a&&(g.a=new fdd(GV,g,5)),g.a),e)}} +function swb(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r;d=new Gbb;h=new Gbb;q=b/2;n=a._b();e=kA(a.cd(0),9);r=kA(a.cd(1),9);o=twb(e.a,e.b,r.a,r.b,q);tbb(d,(Mpb(0,o.c.length),kA(o.c[0],9)));tbb(h,(Mpb(1,o.c.length),kA(o.c[1],9)));for(j=2;j=0;i--){mib(c,(Mpb(i,g.c.length),kA(g.c[i],9)))}return c} +function tMb(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,A,B,C,D,F,G;A=kA(nub(a,(J6b(),Z5b)),83);if(!(A!=(VCc(),TCc)&&A!=UCc)){return}o=a.b;n=o.c.length;k=new Hbb((Wj(n+2,gKd),Dv(y2(y2(5,n+2),(n+2)/10|0))));p=new Hbb((Wj(n+2,gKd),Dv(y2(y2(5,n+2),(n+2)/10|0))));tbb(k,new Bgb);tbb(k,new Bgb);tbb(p,new Gbb);tbb(p,new Gbb);w=new Gbb;for(b=0;bF?l:F}for(d=new ccb(C.f);d.aF?B:F}}qub(u,tfc,d5(l));qub(u,ufc,d5(B))}}r=0;for(n=new ccb(b.b);n.a=a.j){a.a=-1;a.c=1;return}b=X5(a.i,a.d++);a.a=b;if(a.b==1){switch(b){case 92:d=10;if(a.d>=a.j)throw x2(new KEd(WYc((isd(),_Td))));a.a=X5(a.i,a.d++);break;case 45:if((a.e&512)==512&&a.d=a.j)break;if(X5(a.i,a.d)!=63)break;if(++a.d>=a.j)throw x2(new KEd(WYc((isd(),aUd))));b=X5(a.i,a.d++);switch(b){case 58:d=13;break;case 61:d=14;break;case 33:d=15;break;case 91:d=19;break;case 62:d=18;break;case 60:if(a.d>=a.j)throw x2(new KEd(WYc((isd(),aUd))));b=X5(a.i,a.d++);if(b==61){d=16}else if(b==33){d=17}else throw x2(new KEd(WYc((isd(),bUd))));break;case 35:while(a.d=a.j)throw x2(new KEd(WYc((isd(),_Td))));a.a=X5(a.i,a.d++);break;default:d=0;}a.c=d} +function EFd(a){var b,c,d,e,f,g,h,i,j;a.b=1;LEd(a);b=null;if(a.c==0&&a.a==94){LEd(a);b=(UGd(),UGd(),++TGd,new wHd(4));qHd(b,0,TWd);h=(null,++TGd,new wHd(4))}else{h=(UGd(),UGd(),++TGd,new wHd(4))}e=true;while((j=a.c)!=1){if(j==0&&a.a==93&&!e){if(b){vHd(b,h);h=b}break}c=a.a;d=false;if(j==10){switch(c){case 100:case 68:case 119:case 87:case 115:case 83:tHd(h,DFd(c));d=true;break;case 105:case 73:case 99:case 67:c=(tHd(h,DFd(c)),-1);d=true;break;case 112:case 80:i=REd(a,c);if(!i)throw x2(new KEd(WYc((isd(),nUd))));tHd(h,i);d=true;break;default:c=CFd(a);}}else if(j==24&&!e){if(b){vHd(b,h);h=b}f=EFd(a);vHd(h,f);if(a.c!=0||a.a!=93)throw x2(new KEd(WYc((isd(),rUd))));break}LEd(a);if(!d){if(j==0){if(c==91)throw x2(new KEd(WYc((isd(),sUd))));if(c==93)throw x2(new KEd(WYc((isd(),tUd))));if(c==45&&!e&&a.a!=93)throw x2(new KEd(WYc((isd(),uUd))))}if(a.c!=0||a.a!=45||c==45&&e){qHd(h,c,c)}else{LEd(a);if((j=a.c)==1)throw x2(new KEd(WYc((isd(),pUd))));if(j==0&&a.a==93){qHd(h,c,c);qHd(h,45,45)}else if(j==0&&a.a==93||j==24){throw x2(new KEd(WYc((isd(),uUd))))}else{g=a.a;if(j==0){if(g==91)throw x2(new KEd(WYc((isd(),sUd))));if(g==93)throw x2(new KEd(WYc((isd(),tUd))));if(g==45)throw x2(new KEd(WYc((isd(),uUd))))}else j==10&&(g=CFd(a));LEd(a);if(c>g)throw x2(new KEd(WYc((isd(),xUd))));qHd(h,c,g)}}}e=false}if(a.c==1)throw x2(new KEd(WYc((isd(),pUd))));uHd(h);rHd(h);a.b=0;LEd(a);return h} +function b9b(a,b,c){var d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,A,B,C,D,F,G,H,I,J,K;xEc(c,'Greedy cycle removal',1);s=b.a;K=s.c.length;a.a=tz(FA,OKd,22,K,15,1);a.c=tz(FA,OKd,22,K,15,1);a.b=tz(FA,OKd,22,K,15,1);i=0;for(q=new ccb(s);q.a0?D+1:1}for(f=new ccb(v.f);f.a0?D+1:1}}a.c[i]==0?mib(a.d,o):a.a[i]==0&&mib(a.e,o);++i}n=-1;m=1;k=new Gbb;F=kA(nub(b,(E2b(),s2b)),214);while(K>0){while(a.d.b!=0){H=kA(uib(a.d),8);a.b[H.o]=n--;c9b(a,H);--K}while(a.e.b!=0){I=kA(uib(a.e),8);a.b[I.o]=m++;c9b(a,I);--K}if(K>0){l=oKd;for(r=new ccb(s);r.a=l){if(t>l){k.c=tz(NE,oJd,1,0,5,1);l=t}k.c[k.c.length]=o}}}j=kA(xbb(k,Xjb(F,k.c.length)),8);a.b[j.o]=m++;c9b(a,j);--K}}G=s.c.length+1;for(i=0;ia.b[J]){KEb(d,true);qub(b,P1b,(B3(),B3(),true))}}}}a.a=null;a.c=null;a.b=null;xib(a.e);xib(a.d);zEc(c)} +function ypd(a){HRc(a.c,xVd,xz(pz(UE,1),cKd,2,6,[KVd,'http://www.w3.org/2001/XMLSchema#decimal']));HRc(a.d,xVd,xz(pz(UE,1),cKd,2,6,[KVd,'http://www.w3.org/2001/XMLSchema#integer']));HRc(a.e,xVd,xz(pz(UE,1),cKd,2,6,[KVd,'http://www.w3.org/2001/XMLSchema#boolean']));HRc(a.f,xVd,xz(pz(UE,1),cKd,2,6,[KVd,'EBoolean',RTd,'EBoolean:Object']));HRc(a.i,xVd,xz(pz(UE,1),cKd,2,6,[KVd,'http://www.w3.org/2001/XMLSchema#byte']));HRc(a.g,xVd,xz(pz(UE,1),cKd,2,6,[KVd,'http://www.w3.org/2001/XMLSchema#hexBinary']));HRc(a.j,xVd,xz(pz(UE,1),cKd,2,6,[KVd,'EByte',RTd,'EByte:Object']));HRc(a.n,xVd,xz(pz(UE,1),cKd,2,6,[KVd,'EChar',RTd,'EChar:Object']));HRc(a.t,xVd,xz(pz(UE,1),cKd,2,6,[KVd,'http://www.w3.org/2001/XMLSchema#double']));HRc(a.u,xVd,xz(pz(UE,1),cKd,2,6,[KVd,'EDouble',RTd,'EDouble:Object']));HRc(a.F,xVd,xz(pz(UE,1),cKd,2,6,[KVd,'http://www.w3.org/2001/XMLSchema#float']));HRc(a.G,xVd,xz(pz(UE,1),cKd,2,6,[KVd,'EFloat',RTd,'EFloat:Object']));HRc(a.I,xVd,xz(pz(UE,1),cKd,2,6,[KVd,'http://www.w3.org/2001/XMLSchema#int']));HRc(a.J,xVd,xz(pz(UE,1),cKd,2,6,[KVd,'EInt',RTd,'EInt:Object']));HRc(a.N,xVd,xz(pz(UE,1),cKd,2,6,[KVd,'http://www.w3.org/2001/XMLSchema#long']));HRc(a.O,xVd,xz(pz(UE,1),cKd,2,6,[KVd,'ELong',RTd,'ELong:Object']));HRc(a.Z,xVd,xz(pz(UE,1),cKd,2,6,[KVd,'http://www.w3.org/2001/XMLSchema#short']));HRc(a.$,xVd,xz(pz(UE,1),cKd,2,6,[KVd,'EShort',RTd,'EShort:Object']));HRc(a._,xVd,xz(pz(UE,1),cKd,2,6,[KVd,'http://www.w3.org/2001/XMLSchema#string']))} +function zIb(a,b,c,d){var e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,A,B,C,D,F,G,H;rIb(b);i=kA(WXc((!b.b&&(b.b=new pxd(HV,b,4,7)),b.b),0),97);k=kA(WXc((!b.c&&(b.c=new pxd(HV,b,5,8)),b.c),0),97);h=UWc(i);j=UWc(k);g=(!b.a&&(b.a=new zkd(IV,b,6,6)),b.a).i==0?null:kA(WXc((!b.a&&(b.a=new zkd(IV,b,6,6)),b.a),0),270);A=kA(F8(a.a,h),8);F=kA(F8(a.a,j),8);B=null;G=null;if(sA(i,187)){w=kA(F8(a.a,i),279);if(sA(w,11)){B=kA(w,11)}else if(sA(w,8)){A=kA(w,8);B=kA(xbb(A.i,0),11)}}if(sA(k,187)){D=kA(F8(a.a,k),279);if(sA(D,11)){G=kA(D,11)}else if(sA(D,8)){F=kA(D,8);G=kA(xbb(F.i,0),11)}}if(!A||!F){return null}p=new PEb;lub(p,b);qub(p,(E2b(),i2b),b);qub(p,(J6b(),p5b),null);n=kA(nub(d,X1b),19);A==F&&n.nc((Z0b(),Y0b));if(!B){v=(U7b(),S7b);C=null;if(!!g&&XCc(kA(nub(A,Z5b),83))){C=new Jyc(g.j,g.k);JFc(C,XPc(b));KFc(C,c);if(dXc(j,h)){v=R7b;vyc(C,A.k)}}B=NFb(A,C,v,d)}if(!G){v=(U7b(),R7b);H=null;if(!!g&&XCc(kA(nub(F,Z5b),83))){H=new Jyc(g.b,g.c);JFc(H,XPc(b));KFc(H,c)}G=NFb(F,H,v,uGb(F))}LEb(p,B);MEb(p,G);for(m=new a0c((!b.n&&(b.n=new zkd(LV,b,1,7)),b.n));m.e!=m.i._b();){l=kA($_c(m),137);if(!Vpb(mA(AOc(l,N5b)))&&!!l.a){q=BIb(l);tbb(p.b,q);switch(kA(nub(q,$4b),226).g){case 2:case 3:n.nc((Z0b(),R0b));break;case 1:case 0:n.nc((Z0b(),P0b));qub(q,$4b,(tBc(),pBc));}}}f=kA(nub(d,T4b),317);r=kA(nub(d,I5b),292);e=f==(t_b(),r_b)||r==(u7b(),q7b);if(!!g&&(!g.a&&(g.a=new fdd(GV,g,5)),g.a).i!=0&&e){s=DFc(g);o=new Vyc;for(u=sib(s,0);u.b!=u.d.c;){t=kA(Gib(u),9);mib(o,new Kyc(t))}qub(p,j2b,o)}return p} +function gKb(a,b,c,d,e,f){var g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,A,B,C,D,F,G,H;h=kA(xbb(a.d.c.b,d),26);F=new Jgb;n=new Jgb;for(m=0;mc&&(B=n.a.Zb(r,n),B==null)}G=new Jgb;o=new Jgb;for(t=F.a.Xb().tc();t.hc();){r=kA(t.ic(),8);g=b==1?zGb(r):vGb(r);for(j=(Zn(),new Zo(Rn(Dn(g.a,new Hn))));So(j);){i=kA(To(j),14);kIb(r.c)!=kIb(i.d.g.c)&&Ggb(G,i.d.g)}}for(u=n.a.Xb().tc();u.hc();){r=kA(u.ic(),8);g=b==1?zGb(r):vGb(r);for(j=(Zn(),new Zo(Rn(Dn(g.a,new Hn))));So(j);){i=kA(To(j),14);kIb(r.c)!=kIb(i.d.g.c)&&Ggb(o,i.d.g)}}if(bKb){S6()}A=kA(xbb(a.d.c.b,d+(b==1?1:-1)),26);p=oKd;q=jJd;for(l=0;ll?p:l):o.a.Qb(r)&&(q=ql){F=0;G+=k+A;k=0}Hnc(v,g,F,G);b=$wnd.Math.max(b,F+w.a);k=$wnd.Math.max(k,w.b);F+=w.a+A}u=new Bgb;c=new Bgb;for(C=new ccb(a);C.a=2){m=true;s=(Mpb(1,l.c.length),kA(l.c[1],26));for(p=new ccb(g.a);p.a=2){m=true;t=kA(xbb(l,l.c.length-2),26);for(p=new ccb(i.a);p.abic(f))&&(l=f)}}!l&&(l=(Mpb(0,q.c.length),kA(q.c[0],164)));for(p=new ccb(b.b);p.a0){o=(v+1)*a.d;o=0&&(R+=(v+2)*a.d)}t=D;h=i}while(D);for(e=new ccb(a.j);e.a=-1900?1:0;c>=4?I6(a,xz(pz(UE,1),cKd,2,6,[PKd,QKd])[h]):I6(a,xz(pz(UE,1),cKd,2,6,['BC','AD'])[h]);break;case 121:Vw(a,c,d);break;case 77:Uw(a,c,d);break;case 107:i=e.q.getHours();i==0?nx(a,24,c):nx(a,i,c);break;case 83:Tw(a,c,e);break;case 69:k=d.q.getDay();c==5?I6(a,xz(pz(UE,1),cKd,2,6,['S','M','T','W','T','F','S'])[k]):c==4?I6(a,xz(pz(UE,1),cKd,2,6,[RKd,SKd,TKd,UKd,VKd,WKd,XKd])[k]):I6(a,xz(pz(UE,1),cKd,2,6,['Sun','Mon','Tue','Wed','Thu','Fri','Sat'])[k]);break;case 97:e.q.getHours()>=12&&e.q.getHours()<24?I6(a,xz(pz(UE,1),cKd,2,6,['AM','PM'])[1]):I6(a,xz(pz(UE,1),cKd,2,6,['AM','PM'])[0]);break;case 104:l=e.q.getHours()%12;l==0?nx(a,12,c):nx(a,l,c);break;case 75:m=e.q.getHours()%12;nx(a,m,c);break;case 72:n=e.q.getHours();nx(a,n,c);break;case 99:o=d.q.getDay();c==5?I6(a,xz(pz(UE,1),cKd,2,6,['S','M','T','W','T','F','S'])[o]):c==4?I6(a,xz(pz(UE,1),cKd,2,6,[RKd,SKd,TKd,UKd,VKd,WKd,XKd])[o]):c==3?I6(a,xz(pz(UE,1),cKd,2,6,['Sun','Mon','Tue','Wed','Thu','Fri','Sat'])[o]):nx(a,o,1);break;case 76:p=d.q.getMonth();c==5?I6(a,xz(pz(UE,1),cKd,2,6,['J','F','M','A','M','J','J','A','S','O','N','D'])[p]):c==4?I6(a,xz(pz(UE,1),cKd,2,6,[BKd,CKd,DKd,EKd,FKd,GKd,HKd,IKd,JKd,KKd,LKd,MKd])[p]):c==3?I6(a,xz(pz(UE,1),cKd,2,6,['Jan','Feb','Mar','Apr',FKd,'Jun','Jul','Aug','Sep','Oct','Nov','Dec'])[p]):nx(a,p+1,c);break;case 81:q=d.q.getMonth()/3|0;c<4?I6(a,xz(pz(UE,1),cKd,2,6,['Q1','Q2','Q3','Q4'])[q]):I6(a,xz(pz(UE,1),cKd,2,6,['1st quarter','2nd quarter','3rd quarter','4th quarter'])[q]);break;case 100:r=d.q.getDate();nx(a,r,c);break;case 109:j=e.q.getMinutes();nx(a,j,c);break;case 115:g=e.q.getSeconds();nx(a,g,c);break;case 122:c<4?I6(a,f.c[0]):I6(a,f.c[1]);break;case 118:I6(a,f.b);break;case 90:c<3?I6(a,xx(f)):c==3?I6(a,wx(f)):I6(a,zx(f.a));break;default:return false;}return true} +function F4b(){F4b=d3;var a;W2b=(a=kA(e4(eP),10),new ngb(a,kA(ypb(a,a.length),10),0));V2b=new FWc(EOd,W2b);p3b=new FWc(FOd,(B3(),B3(),false));u3b=(x1b(),v1b);t3b=new FWc(GOd,u3b);M3b=new FWc(HOd,(null,false));N3b=new FWc(IOd,(null,true));d5(1);j4b=new FWc(JOd,d5(7));k4b=new FWc(KOd,(null,false));c4b=new FWc(LOd,(null,false));d3b=(O_b(),M_b);c3b=new FWc(MOd,d3b);J3b=(W6b(),U6b);I3b=new FWc(NOd,J3b);A3b=(K2b(),J2b);z3b=new FWc(OOd,A3b);L3b=(F8b(),E8b);K3b=new FWc(POd,L3b);d5(-1);B3b=new FWc(QOd,d5(4));d5(-1);D3b=new FWc(ROd,d5(2));H3b=(L7b(),J7b);G3b=new FWc(SOd,H3b);d5(0);F3b=new FWc(TOd,d5(0));x3b=new FWc(UOd,d5(jJd));b3b=(t_b(),s_b);a3b=new FWc(VOd,b3b);$2b=new FWc(WOd,0.1);_2b=new FWc(XOd,(null,false));d5(0);X2b=new FWc(YOd,d5(40));Z2b=(g1b(),f1b);Y2b=new FWc(ZOd,Z2b);b4b=(u7b(),p7b);a4b=new FWc($Od,b4b);U3b=new DWc(_Od);P3b=(Vic(),Tic);O3b=new FWc(aPd,P3b);S3b=(x0b(),u0b);R3b=new FWc(bPd,S3b);new UFc;W3b=new FWc(cPd,0.3);Y3b=new DWc(dPd);$3b=(h7b(),f7b);Z3b=new FWc(ePd,$3b);j3b=(b8b(),a8b);i3b=new FWc(fPd,j3b);n3b=new FWc(gPd,(null,true));l3b=new FWc(hPd,0.4);h4b=new FWc(iPd,10);g4b=new FWc(jPd,10);i4b=new FWc(kPd,20);d5(0);d4b=new FWc(lPd,d5(0));d5(0);e4b=new FWc(mPd,d5(0));d5(0);f4b=new FWc(nPd,d5(0));Q2b=new FWc(oPd,(null,false));U2b=(J0b(),H0b);T2b=new FWc(pPd,U2b);S2b=(_$b(),$$b);R2b=new FWc(qPd,S2b);r3b=new FWc(rPd,(null,false));d5(0);q3b=new FWc(sPd,d5(16));d5(0);s3b=new FWc(tPd,d5(5));E4b=(O8b(),M8b);D4b=new FWc(uPd,E4b);l4b=new FWc(vPd,10);m4b=new FWc(wPd,1);t4b=(F_b(),E_b);s4b=new FWc(xPd,t4b);n4b=new DWc(yPd);q4b=d5(1);d5(0);p4b=new FWc(zPd,q4b);B4b=(w8b(),t8b);A4b=new FWc(APd,B4b);w4b=new FWc(BPd,(null,true));u4b=new FWc(CPd,2);y4b=new FWc(DPd,(null,true));h3b=(k0b(),i0b);g3b=new FWc(EPd,h3b);f3b=(T$b(),Q$b);e3b=new FWc(FPd,f3b);w3b=N_b;v3b=r_b;C3b=T6b;E3b=T6b;y3b=Q6b;V3b=s7b;Q3b=p7b;T3b=p7b;X3b=r7b;_3b=s7b;k3b=(DBc(),BBc);o3b=BBc;m3b=BBc;o4b=D_b;r4b=E_b;C4b=N8b;x4b=L8b;v4b=L8b;z4b=L8b} +function $Ac(){$Ac=d3;var a,b;Czc=new DWc(_Rd);Ezc=(ezc(),$yc);Dzc=new FWc(iQd,Ezc);new UFc;Fzc=new FWc(VMd,null);Gzc=new DWc(aSd);Kzc=new FWc(hQd,(B3(),B3(),false));Mzc=(gBc(),eBc);Lzc=new FWc(oQd,Mzc);Rzc=(DBc(),CBc);Qzc=new FWc(OPd,Rzc);Uzc=new FWc(ZRd,(null,false));Wzc=(jCc(),hCc);Vzc=new FWc(jQd,Wzc);pAc=new YGb(12);oAc=new FWc(WMd,pAc);$zc=new FWc(vNd,(null,false));CAc=(VCc(),UCc);BAc=new FWc(wNd,CAc);JAc=new DWc(HQd);KAc=new DWc(qNd);LAc=new DWc(tNd);NAc=new DWc(uNd);aAc=new Vyc;_zc=new FWc(yQd,aAc);Jzc=new FWc(CQd,(null,false));Xzc=new FWc(DQd,(null,false));new DWc(bSd);cAc=new mGb;bAc=new FWc(IQd,cAc);nAc=new FWc(fQd,(null,false));new UFc;MAc=new FWc(cSd,1);new FWc(dSd,(null,true));d5(0);new FWc(eSd,d5(100));new FWc(fSd,(null,false));d5(0);new FWc(gSd,d5(4000));d5(0);new FWc(hSd,d5(400));new FWc(iSd,(null,false));new FWc(jSd,(null,true));new FWc(kSd,(null,false));Izc=(gFc(),fFc);Hzc=new FWc($Rd,Izc);OAc=new FWc(TMd,12);PAc=new FWc(ZPd,10);QAc=new FWc(sNd,2);RAc=new FWc($Pd,10);TAc=new FWc(_Pd,0);UAc=new FWc(bQd,5);VAc=new FWc(aQd,1);WAc=new FWc(rNd,20);ZAc=new FWc(cQd,10);SAc=new DWc(dQd);YAc=new nGb;XAc=new FWc(JQd,YAc);sAc=new DWc(GQd);rAc=(null,false);qAc=new FWc(FQd,rAc);eAc=new YGb(5);dAc=new FWc(lSd,eAc);gAc=(yCc(),b=kA(e4(nU),10),new ngb(b,kA(ypb(b,b.length),10),0));fAc=new FWc(pQd,gAc);uAc=(JCc(),GCc);tAc=new FWc(sQd,uAc);wAc=new DWc(tQd);xAc=new DWc(uQd);yAc=new DWc(vQd);vAc=new DWc(wQd);iAc=(a=kA(e4(uU),10),new ngb(a,kA(ypb(a,a.length),10),0));hAc=new FWc(mQd,iAc);mAc=fgb((qEc(),jEc));lAc=new FWc(nQd,mAc);kAc=new Jyc(0,0);jAc=new FWc(xQd,kAc);Pzc=(tBc(),sBc);Ozc=new FWc(zQd,Pzc);Nzc=new FWc(AQd,(null,false));new DWc(mSd);d5(1);new FWc(nSd,null);zAc=new DWc(EQd);DAc=new DWc(BQd);IAc=(FDc(),DDc);HAc=new FWc(gQd,IAc);AAc=new DWc(eQd);GAc=(eDc(),dDc);FAc=new FWc(qQd,GAc);EAc=new FWc(rQd,(null,false));Yzc=new FWc(kQd,(null,false));Zzc=new FWc(lQd,(null,false));Szc=new FWc(UMd,1);Tzc=(PBc(),NBc);new FWc(oSd,Tzc)} +function zpd(a){if(a.gb)return;a.gb=true;a.b=RRc(a,0);QRc(a.b,18);WRc(a.b,19);a.a=RRc(a,1);QRc(a.a,1);WRc(a.a,2);WRc(a.a,3);WRc(a.a,4);WRc(a.a,5);a.o=RRc(a,2);QRc(a.o,8);QRc(a.o,9);WRc(a.o,10);WRc(a.o,11);WRc(a.o,12);WRc(a.o,13);WRc(a.o,14);WRc(a.o,15);WRc(a.o,16);WRc(a.o,17);WRc(a.o,18);WRc(a.o,19);WRc(a.o,20);WRc(a.o,21);WRc(a.o,22);WRc(a.o,23);VRc(a.o);VRc(a.o);VRc(a.o);VRc(a.o);VRc(a.o);VRc(a.o);VRc(a.o);VRc(a.o);VRc(a.o);VRc(a.o);a.p=RRc(a,3);QRc(a.p,2);QRc(a.p,3);QRc(a.p,4);QRc(a.p,5);WRc(a.p,6);WRc(a.p,7);VRc(a.p);VRc(a.p);a.q=RRc(a,4);QRc(a.q,8);a.v=RRc(a,5);WRc(a.v,9);VRc(a.v);VRc(a.v);VRc(a.v);a.w=RRc(a,6);QRc(a.w,2);QRc(a.w,3);QRc(a.w,4);WRc(a.w,5);a.B=RRc(a,7);WRc(a.B,1);VRc(a.B);VRc(a.B);VRc(a.B);a.Q=RRc(a,8);WRc(a.Q,0);VRc(a.Q);a.R=RRc(a,9);QRc(a.R,1);a.S=RRc(a,10);VRc(a.S);VRc(a.S);VRc(a.S);VRc(a.S);VRc(a.S);VRc(a.S);VRc(a.S);VRc(a.S);VRc(a.S);VRc(a.S);VRc(a.S);VRc(a.S);VRc(a.S);VRc(a.S);VRc(a.S);a.T=RRc(a,11);WRc(a.T,10);WRc(a.T,11);WRc(a.T,12);WRc(a.T,13);WRc(a.T,14);VRc(a.T);VRc(a.T);a.U=RRc(a,12);QRc(a.U,2);QRc(a.U,3);WRc(a.U,4);WRc(a.U,5);WRc(a.U,6);WRc(a.U,7);VRc(a.U);a.V=RRc(a,13);WRc(a.V,10);a.W=RRc(a,14);QRc(a.W,18);QRc(a.W,19);QRc(a.W,20);WRc(a.W,21);WRc(a.W,22);WRc(a.W,23);a.bb=RRc(a,15);QRc(a.bb,10);QRc(a.bb,11);QRc(a.bb,12);QRc(a.bb,13);QRc(a.bb,14);QRc(a.bb,15);QRc(a.bb,16);WRc(a.bb,17);VRc(a.bb);VRc(a.bb);a.eb=RRc(a,16);QRc(a.eb,2);QRc(a.eb,3);QRc(a.eb,4);QRc(a.eb,5);QRc(a.eb,6);QRc(a.eb,7);WRc(a.eb,8);WRc(a.eb,9);a.ab=RRc(a,17);QRc(a.ab,0);QRc(a.ab,1);a.H=RRc(a,18);WRc(a.H,0);WRc(a.H,1);WRc(a.H,2);WRc(a.H,3);WRc(a.H,4);WRc(a.H,5);VRc(a.H);a.db=RRc(a,19);WRc(a.db,2);a.c=SRc(a,20);a.d=SRc(a,21);a.e=SRc(a,22);a.f=SRc(a,23);a.i=SRc(a,24);a.g=SRc(a,25);a.j=SRc(a,26);a.k=SRc(a,27);a.n=SRc(a,28);a.r=SRc(a,29);a.s=SRc(a,30);a.t=SRc(a,31);a.u=SRc(a,32);a.fb=SRc(a,33);a.A=SRc(a,34);a.C=SRc(a,35);a.D=SRc(a,36);a.F=SRc(a,37);a.G=SRc(a,38);a.I=SRc(a,39);a.J=SRc(a,40);a.L=SRc(a,41);a.M=SRc(a,42);a.N=SRc(a,43);a.O=SRc(a,44);a.P=SRc(a,45);a.X=SRc(a,46);a.Y=SRc(a,47);a.Z=SRc(a,48);a.$=SRc(a,49);a._=SRc(a,50);a.cb=SRc(a,51);a.K=SRc(a,52)} +function E2b(){E2b=d3;var a,b;i2b=new DWc(xNd);M1b=new DWc('coordinateOrigin');r2b=new DWc('processors');L1b=new EWc('compoundNode',(B3(),B3(),false));Z1b=new EWc('insideConnections',(null,false));h2b=new DWc('nestedLGraph');n2b=new DWc('parentLNode');j2b=new DWc('originalBendpoints');k2b=new DWc('originalDummyNodePosition');l2b=new DWc('originalLabelEdge');t2b=new DWc('representedLabels');R1b=new DWc('endLabels');b2b=new EWc('labelSide',(jHc(),iHc));g2b=new EWc('maxEdgeThickness',0);u2b=new EWc('reversed',(null,false));s2b=new DWc(yNd);e2b=new EWc('longEdgeSource',null);f2b=new EWc('longEdgeTarget',null);d2b=new EWc('longEdgeHasLabelDummies',(null,false));c2b=new EWc('longEdgeBeforeLabelDummy',(null,false));Q1b=new EWc('edgeConstraint',($_b(),Y_b));_1b=new DWc('inLayerLayoutUnit');$1b=new EWc('inLayerConstraint',(p1b(),n1b));a2b=new EWc('inLayerSuccessorConstraint',new Gbb);p2b=new DWc('portDummy');N1b=new EWc('crossingHint',d5(0));X1b=new EWc('graphProperties',(b=kA(e4(mP),10),new ngb(b,kA(ypb(b,b.length),10),0)));V1b=new EWc('externalPortSide',(FDc(),DDc));W1b=new EWc('externalPortSize',new Hyc);T1b=new DWc('externalPortReplacedDummies');U1b=new DWc('externalPortReplacedDummy');S1b=new EWc('externalPortConnections',(a=kA(e4(rU),10),new ngb(a,kA(ypb(a,a.length),10),0)));q2b=new EWc(DOd,0);D1b=new DWc('barycenterAssociates');D2b=new DWc('TopSideComments');I1b=new DWc('BottomSideComments');K1b=new DWc('CommentConnectionPort');Y1b=new EWc('inputCollect',(null,false));m2b=new EWc('outputCollect',(null,false));P1b=new EWc('cyclic',(null,false));H1b=new EWc('bigNodeOriginalSize',new F4(0));G1b=new EWc('bigNodeInitial',(null,false));E1b=new EWc('org.eclipse.elk.alg.layered.bigNodeLabels',new Gbb);F1b=new EWc('org.eclipse.elk.alg.layered.postProcess',null);O1b=new DWc('crossHierarchyMap');C2b=new DWc('targetOffset');x2b=new EWc('splineLabelSize',new Hyc);y2b=new EWc('splineLoopSide',(Flc(),Clc));A2b=new EWc('splineSelfLoopComponents',new Gbb);B2b=new EWc('splineSelfLoopMargins',new mGb);v2b=new DWc('spacings');o2b=new EWc('partitionConstraint',(null,false));J1b=new DWc('breakingPoint.info');z2b=new DWc('splines.route.start');w2b=new DWc('splines.edgeChain')} +function lPb(){lPb=d3;ROb=new mPb('LEFT_DIR_PREPROCESSOR',0);rOb=new mPb('DOWN_DIR_PREPROCESSOR',1);kPb=new mPb('UP_DIR_PREPROCESSOR',2);pOb=new mPb('COMMENT_PREPROCESSOR',3);sOb=new mPb('EDGE_AND_LAYER_CONSTRAINT_EDGE_REVERSER',4);gPb=new mPb('SPLINE_SELF_LOOP_PREPROCESSOR',5);GOb=new mPb('INTERACTIVE_EXTERNAL_PORT_POSITIONER',6);$Ob=new mPb('PARTITION_PREPROCESSOR',7);iOb=new mPb('BIG_NODES_PREPROCESSOR',8);KOb=new mPb('LABEL_DUMMY_INSERTER',9);COb=new mPb('HIGH_DEGREE_NODE_LAYER_PROCESSOR',10);ZOb=new mPb('PARTITION_POSTPROCESSOR',11);VOb=new mPb('NODE_PROMOTION',12);OOb=new mPb('LAYER_CONSTRAINT_PROCESSOR',13);yOb=new mPb('HIERARCHICAL_PORT_CONSTRAINT_PROCESSOR',14);gOb=new mPb('BIG_NODES_INTERMEDIATEPROCESSOR',15);dPb=new mPb('SEMI_INTERACTIVE_CROSSMIN_PROCESSOR',16);kOb=new mPb('BREAKING_POINT_INSERTER',17);TOb=new mPb('LONG_EDGE_SPLITTER',18);aPb=new mPb('PORT_SIDE_PROCESSOR',19);HOb=new mPb('INVERTED_PORT_PROCESSOR',20);cPb=new mPb('SELF_LOOP_PROCESSOR',21);_Ob=new mPb('PORT_LIST_SORTER',22);XOb=new mPb('NORTH_SOUTH_PORT_PREPROCESSOR',23);lOb=new mPb('BREAKING_POINT_PROCESSOR',24);YOb=new mPb(gOd,25);iPb=new mPb(hOd,26);fPb=new mPb('SPLINE_SELF_LOOP_POSITIONER',27);ePb=new mPb('SINGLE_EDGE_GRAPH_WRAPPER',28);IOb=new mPb('IN_LAYER_CONSTRAINT_PROCESSOR',29);jOb=new mPb('BIG_NODES_SPLITTER',30);vOb=new mPb('END_NODE_PORT_LABEL_MANAGEMENT_PROCESSOR',31);JOb=new mPb('LABEL_AND_NODE_SIZE_PROCESSOR',32);hPb=new mPb('SPLINE_SELF_LOOP_ROUTER',33);UOb=new mPb('NODE_MARGIN_CALCULATOR',34);uOb=new mPb('END_LABEL_PREPROCESSOR',35);MOb=new mPb('LABEL_DUMMY_SWITCHER',36);nOb=new mPb('CENTER_LABEL_MANAGEMENT_PROCESSOR',37);NOb=new mPb('LABEL_SIDE_SELECTOR',38);EOb=new mPb('HYPEREDGE_DUMMY_MERGER',39);zOb=new mPb('HIERARCHICAL_PORT_DUMMY_SIZE_PROCESSOR',40);POb=new mPb('LAYER_SIZE_AND_GRAPH_HEIGHT_CALCULATOR',41);BOb=new mPb('HIERARCHICAL_PORT_POSITION_PROCESSOR',42);hOb=new mPb('BIG_NODES_POSTPROCESSOR',43);oOb=new mPb('COMMENT_POSTPROCESSOR',44);FOb=new mPb('HYPERNODE_PROCESSOR',45);AOb=new mPb('HIERARCHICAL_PORT_ORTHOGONAL_EDGE_ROUTER',46);SOb=new mPb('LONG_EDGE_JOINER',47);mOb=new mPb('BREAKING_POINT_REMOVER',48);WOb=new mPb('NORTH_SOUTH_PORT_POSTPROCESSOR',49);DOb=new mPb('HORIZONTAL_COMPACTOR',50);LOb=new mPb('LABEL_DUMMY_REMOVER',51);wOb=new mPb('FINAL_SPLINE_BENDPOINTS_CALCULATOR',52);bPb=new mPb('REVERSED_EDGE_RESTORER',53);tOb=new mPb('END_LABEL_POSTPROCESSOR',54);xOb=new mPb('HIERARCHICAL_NODE_RESIZER',55);QOb=new mPb('LEFT_DIR_POSTPROCESSOR',56);qOb=new mPb('DOWN_DIR_POSTPROCESSOR',57);jPb=new mPb('UP_DIR_POSTPROCESSOR',58)} +function Mec(a,b,c){var d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,A,B,C,D,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,$,ab,bb,cb,db,eb,fb,gb,hb;Z=0;for(G=0,J=b.length;G0&&(a.a[Q.o]=Z++)}}db=0;for(H=0,K=c.length;H0){Q=(Lpb(U.b>0),kA(U.a.cd(U.c=--U.b),11));T=0;for(h=new ccb(Q.d);h.a0){if(Q.i==(FDc(),lDc)){a.a[Q.o]=db;++db}else{a.a[Q.o]=db+L+N;++N}}}db+=N}S=(Es(),new Bgb);n=new iib;for(F=0,I=b.length;Fj.b&&(j.b=V)}else if(Q.g.c==Y){Vj.c&&(j.c=V)}}}Acb(o,0,o.length,null);cb=tz(FA,OKd,22,o.length,15,1);d=tz(FA,OKd,22,db+1,15,1);for(q=0;q0){w%2>0&&(e+=gb[w+1]);w=(w-1)/2|0;++gb[w]}}B=tz(vQ,oJd,336,o.length*2,0,1);for(t=0;t'?":Z5(bUd,a)?"'(?<' or '(? toIndex: ',XLd=', toIndex: ',YLd='org.eclipse.elk.alg.common.compaction',ZLd='Scanline/EventHandler',$Ld='org.eclipse.elk.alg.common.compaction.oned',_Ld='CNode belongs to another CGroup.',aMd='ISpacingsHandler/1',bMd='The ',cMd=' instance has been finished already.',dMd='The direction ',eMd=' is not supported by the CGraph instance.',fMd='OneDimensionalCompactor',gMd='OneDimensionalCompactor/lambda$0$Type',hMd='Quadruplet',iMd='ScanlineConstraintCalculator',jMd='ScanlineConstraintCalculator/ConstraintsScanlineHandler',kMd='ScanlineConstraintCalculator/ConstraintsScanlineHandler/lambda$0$Type',lMd='ScanlineConstraintCalculator/Timestamp',mMd='ScanlineConstraintCalculator/lambda$0$Type',nMd={138:1,56:1},oMd='org.eclipse.elk.alg.common.compaction.options',pMd='org.eclipse.elk.core.data',qMd='org.eclipse.elk.polyomino.traversalStrategy',rMd='org.eclipse.elk.polyomino.lowLevelSort',sMd='org.eclipse.elk.polyomino.highLevelSort',tMd='org.eclipse.elk.polyomino.fill',uMd={154:1},vMd='polyomino',wMd='org.eclipse.elk.alg.common.compaction.polyomino',xMd='org.eclipse.elk.alg.common.compaction.polyomino.structures',yMd='Direction',zMd='Grid is only of size ',AMd='. Requested point (',BMd=') is out of bounds.',CMd=' Given center based coordinates were (',DMd='org.eclipse.elk.graph.properties',EMd='IPropertyHolder',FMd={3:1,93:1,131:1},GMd={244:1},HMd='org.eclipse.elk.core',IMd='Connected Components Compaction',JMd='org.eclipse.elk.alg.disco',KMd='org.eclipse.elk.alg.disco.graph',LMd='org.eclipse.elk.alg.disco.options',MMd='CompactionStrategy',NMd='org.eclipse.elk.disco.componentCompaction.strategy',OMd='org.eclipse.elk.disco.componentCompaction.componentLayoutAlgorithm',PMd='org.eclipse.elk.disco.debug.discoGraph',QMd='org.eclipse.elk.disco.debug.discoPolys',RMd='componentCompaction',SMd='org.eclipse.elk.disco',TMd='org.eclipse.elk.spacing.componentComponent',UMd='org.eclipse.elk.edge.thickness',VMd='org.eclipse.elk.aspectRatio',WMd='org.eclipse.elk.padding',XMd='org.eclipse.elk.alg.disco.transform',YMd=1.5707963267948966,ZMd={3:1,4:1,5:1,175:1},$Md={221:1,3:1,4:1},_Md={3:1,6:1,4:1,5:1,63:1,73:1},aNd='org.eclipse.elk.alg.force',bNd='ComponentsProcessor',cNd='ComponentsProcessor/1',dNd='org.eclipse.elk.alg.force.graph',eNd='Component Layout',fNd='org.eclipse.elk.alg.force.model',gNd=0.01,hNd='org.eclipse.elk.force.model',iNd='org.eclipse.elk.force.iterations',jNd='org.eclipse.elk.force.repulsivePower',kNd='org.eclipse.elk.force.temperature',lNd=0.001,mNd='org.eclipse.elk.force.repulsion',nNd='org.eclipse.elk.alg.force.options',oNd=1.600000023841858,pNd='org.eclipse.elk.force',qNd='org.eclipse.elk.priority',rNd='org.eclipse.elk.spacing.nodeNode',sNd='org.eclipse.elk.spacing.edgeLabel',tNd='org.eclipse.elk.randomSeed',uNd='org.eclipse.elk.separateConnectedComponents',vNd='org.eclipse.elk.interactive',wNd='org.eclipse.elk.portConstraints',xNd='origin',yNd='random',zNd='boundingBox.upLeft',ANd='boundingBox.lowRight',BNd='org.eclipse.elk.stress.fixed',CNd='org.eclipse.elk.stress.desiredEdgeLength',DNd='org.eclipse.elk.stress.dimension',ENd='org.eclipse.elk.stress.epsilon',FNd='org.eclipse.elk.stress.iterationLimit',GNd='org.eclipse.elk.stress',HNd='ELK Stress',INd='org.eclipse.elk.alg.force.stress',JNd='Layered layout',KNd='org.eclipse.elk.alg.layered',LNd='org.eclipse.elk.alg.layered.compaction.components',MNd='org.eclipse.elk.alg.layered.compaction.oned',NNd='org.eclipse.elk.alg.layered.compaction.oned.algs',ONd='org.eclipse.elk.alg.layered.compaction.recthull',PNd='org.eclipse.elk.alg.layered.components',QNd={3:1,6:1,4:1,5:1,85:1,63:1,73:1},RNd='org.eclipse.elk.alg.layered.compound',SNd={3:1,6:1,4:1,5:1,99:1,85:1,63:1,73:1},TNd={50:1},UNd='org.eclipse.elk.alg.layered.graph',VNd={3:1,6:1,4:1,5:1,85:1,123:1,148:1,63:1,73:1},WNd='Not supported by LGraph',XNd='([{"\' \t\r\n',YNd=')]}"\' \t\r\n',ZNd='The given string contains parts that cannot be parsed as numbers.',$Nd='org.eclipse.elk.core.math',_Nd={3:1,4:1,135:1,211:1,428:1},aOd={3:1,4:1,119:1,211:1,428:1},bOd='org.eclipse.elk.alg.layered.graph.transform',cOd='org.eclipse.elk.alg.layered.intermediate',dOd='Big nodes pre-processing',eOd={3:1,6:1,4:1,5:1,85:1,619:1,148:1,63:1,73:1},fOd={3:1,4:1,5:1,537:1},gOd='ONE_SIDED_GREEDY_SWITCH',hOd='TWO_SIDED_GREEDY_SWITCH',iOd='No implementation is available for the layout processor ',jOd='IntermediateProcessorStrategy',kOd="Node '",lOd='NodeMarginCalculator',mOd='Odd port side processing',nOd=1.0E-8,oOd='org.eclipse.elk.alg.layered.intermediate.compaction',pOd='org.eclipse.elk.alg.layered.intermediate.greedyswitch',qOd='org.eclipse.elk.alg.layered.p3order.counting',rOd={208:1},sOd='org.eclipse.elk.alg.layered.intermediate.wrapping',tOd='org.eclipse.elk.alg.layered.networksimplex',uOd='org.eclipse.elk.alg.layered.options',vOd='INTERACTIVE',wOd='NONE',xOd='LEFT',yOd='RIGHT',zOd='EDGE_LENGTH',AOd='SELF_LOOPS',BOd='BOTTOM',COd='CENTER',DOd='portRatioOrPosition',EOd='org.eclipse.elk.layered.contentAlignment',FOd='org.eclipse.elk.layered.feedbackEdges',GOd='org.eclipse.elk.layered.interactiveReferencePoint',HOd='org.eclipse.elk.layered.mergeEdges',IOd='org.eclipse.elk.layered.mergeHierarchyEdges',JOd='org.eclipse.elk.layered.thoroughness',KOd='org.eclipse.elk.layered.unnecessaryBendpoints',LOd='org.eclipse.elk.layered.northOrSouthPort',MOd='org.eclipse.elk.layered.cycleBreaking.strategy',NOd='org.eclipse.elk.layered.layering.strategy',OOd='org.eclipse.elk.layered.layering.layerConstraint',POd='org.eclipse.elk.layered.layering.wideNodesOnMultipleLayers',QOd='org.eclipse.elk.layered.layering.minWidth.upperBoundOnWidth',ROd='org.eclipse.elk.layered.layering.minWidth.upperLayerEstimationScalingFactor',SOd='org.eclipse.elk.layered.layering.nodePromotion.strategy',TOd='org.eclipse.elk.layered.layering.nodePromotion.maxIterations',UOd='org.eclipse.elk.layered.layering.coffmanGraham.layerBound',VOd='org.eclipse.elk.layered.crossingMinimization.strategy',WOd='org.eclipse.elk.layered.crossingMinimization.hierarchicalSweepiness',XOd='org.eclipse.elk.layered.crossingMinimization.semiInteractive',YOd='org.eclipse.elk.layered.crossingMinimization.greedySwitch.activationThreshold',ZOd='org.eclipse.elk.layered.crossingMinimization.greedySwitch.type',$Od='org.eclipse.elk.layered.nodePlacement.strategy',_Od='org.eclipse.elk.layered.nodePlacement.favorStraightEdges',aPd='org.eclipse.elk.layered.nodePlacement.bk.edgeStraightening',bPd='org.eclipse.elk.layered.nodePlacement.bk.fixedAlignment',cPd='org.eclipse.elk.layered.nodePlacement.linearSegments.deflectionDampening',dPd='org.eclipse.elk.layered.nodePlacement.networkSimplex.nodeFlexibility',ePd='org.eclipse.elk.layered.nodePlacement.networkSimplex.nodeFlexibility.default',fPd='org.eclipse.elk.layered.edgeRouting.selfLoopPlacement',gPd='org.eclipse.elk.layered.edgeRouting.sloppySplineRouting',hPd='org.eclipse.elk.layered.edgeRouting.sloppySplineLayerSpacing',iPd='org.eclipse.elk.layered.spacing.edgeNodeBetweenLayers',jPd='org.eclipse.elk.layered.spacing.edgeEdgeBetweenLayers',kPd='org.eclipse.elk.layered.spacing.nodeNodeBetweenLayers',lPd='org.eclipse.elk.layered.priority.direction',mPd='org.eclipse.elk.layered.priority.shortness',nPd='org.eclipse.elk.layered.priority.straightness',oPd='org.eclipse.elk.layered.compaction.connectedComponents',pPd='org.eclipse.elk.layered.compaction.postCompaction.strategy',qPd='org.eclipse.elk.layered.compaction.postCompaction.constraints',rPd='org.eclipse.elk.layered.highDegreeNodes.treatment',sPd='org.eclipse.elk.layered.highDegreeNodes.threshold',tPd='org.eclipse.elk.layered.highDegreeNodes.treeHeight',uPd='org.eclipse.elk.layered.wrapping.strategy',vPd='org.eclipse.elk.layered.wrapping.additionalEdgeSpacing',wPd='org.eclipse.elk.layered.wrapping.correctionFactor',xPd='org.eclipse.elk.layered.wrapping.cutting.strategy',yPd='org.eclipse.elk.layered.wrapping.cutting.cuts',zPd='org.eclipse.elk.layered.wrapping.cutting.msd.freedom',APd='org.eclipse.elk.layered.wrapping.singleEdge.validify.strategy',BPd='org.eclipse.elk.layered.wrapping.multiEdge.improveCuts',CPd='org.eclipse.elk.layered.wrapping.multiEdge.distancePenalty',DPd='org.eclipse.elk.layered.wrapping.multiEdge.improveWrappedEdges',EPd='org.eclipse.elk.layered.edgeLabels.sideSelection',FPd='org.eclipse.elk.layered.edgeLabels.centerLabelPlacementStrategy',GPd='layering',HPd='layering.minWidth',IPd='layering.nodePromotion',JPd='crossingMinimization',KPd='crossingMinimization.greedySwitch',LPd='nodePlacement',MPd='nodePlacement.bk',NPd='edgeRouting',OPd='org.eclipse.elk.edgeRouting',PPd='spacing',QPd='priority',RPd='compaction.postCompaction',SPd='Specifies whether and how post-process compaction is applied.',TPd='highDegreeNodes',UPd='wrapping',VPd='wrapping.cutting',WPd='wrapping.multiEdge',XPd='edgeLabels',YPd='org.eclipse.elk.layered',ZPd='org.eclipse.elk.spacing.edgeEdge',$Pd='org.eclipse.elk.spacing.edgeNode',_Pd='org.eclipse.elk.spacing.labelLabel',aQd='org.eclipse.elk.spacing.labelPort',bQd='org.eclipse.elk.spacing.labelNode',cQd='org.eclipse.elk.spacing.portPort',dQd='org.eclipse.elk.spacing.individualOverride',eQd='org.eclipse.elk.port.borderOffset',fQd='org.eclipse.elk.noLayout',gQd='org.eclipse.elk.port.side',hQd='org.eclipse.elk.debugMode',iQd='org.eclipse.elk.alignment',jQd='org.eclipse.elk.hierarchyHandling',kQd='org.eclipse.elk.insideSelfLoops.activate',lQd='org.eclipse.elk.insideSelfLoops.yo',mQd='org.eclipse.elk.nodeSize.constraints',nQd='org.eclipse.elk.nodeSize.options',oQd='org.eclipse.elk.direction',pQd='org.eclipse.elk.nodeLabels.placement',qQd='org.eclipse.elk.portLabels.placement',rQd='org.eclipse.elk.portLabels.nextToPortIfPossible',sQd='org.eclipse.elk.portAlignment.default',tQd='org.eclipse.elk.portAlignment.north',uQd='org.eclipse.elk.portAlignment.south',vQd='org.eclipse.elk.portAlignment.west',wQd='org.eclipse.elk.portAlignment.east',xQd='org.eclipse.elk.nodeSize.minimum',yQd='org.eclipse.elk.junctionPoints',zQd='org.eclipse.elk.edgeLabels.placement',AQd='org.eclipse.elk.edgeLabels.inline',BQd='org.eclipse.elk.port.index',CQd='org.eclipse.elk.commentBox',DQd='org.eclipse.elk.hypernode',EQd='org.eclipse.elk.port.anchor',FQd='org.eclipse.elk.partitioning.activate',GQd='org.eclipse.elk.partitioning.partition',HQd='org.eclipse.elk.position',IQd='org.eclipse.elk.margins',JQd='org.eclipse.elk.spacing.portsSurrounding',KQd='NETWORK_SIMPLEX',LQd='UNDEFINED',MQd={3:1,4:1,5:1,616:1},NQd={141:1,50:1},OQd='org.eclipse.elk.alg.layered.p1cycles',PQd='org.eclipse.elk.alg.layered.p2layers',QQd={422:1,208:1},RQd={736:1,3:1,4:1},SQd='org.eclipse.elk.alg.layered.p3order',TQd='org.eclipse.elk.alg.layered.p4nodes',UQd={3:1,4:1,5:1,745:1},VQd=1.0E-5,WQd='DOWN',XQd='org.eclipse.elk.alg.layered.p4nodes.bk',YQd=1.7976931348623157E308,ZQd='org.eclipse.elk.alg.layered.p5edges',$Qd='org.eclipse.elk.alg.layered.p5edges.splines',_Qd=1.0E-6,aRd=-1.0E-6,bRd='The list of vectors may not be empty.',cRd=-1.7976931348623157E308,dRd=0.09999999999999998,eRd=4.71238898038469,fRd=3.141592653589793,gRd='org.eclipse.elk.alg.mrtree',hRd='org.eclipse.elk.alg.mrtree.graph',iRd='org.eclipse.elk.alg.mrtree.intermediate',jRd='Set neighbors in level',kRd='DESCENDANTS',lRd='org.eclipse.elk.mrtree.weighting',mRd='org.eclipse.elk.mrtree.searchOrder',nRd='org.eclipse.elk.alg.mrtree.options',oRd='org.eclipse.elk.mrtree',pRd='org.eclipse.elk.tree',qRd='org.eclipse.elk.alg.radial',rRd=6.283185307179586,sRd=4.9E-324,tRd='org.eclipse.elk.alg.radial.intermediate',uRd='org.eclipse.elk.alg.radial.intermediate.compaction',vRd={3:1,4:1,5:1,63:1},wRd='org.eclipse.elk.alg.radial.intermediate.optimization',xRd='No implementation is available for the layout option ',yRd='org.eclipse.elk.alg.radial.options',zRd='org.eclipse.elk.radial.orderId',ARd='org.eclipse.elk.radial.radius',BRd='org.eclipse.elk.radial.compactor',CRd='org.eclipse.elk.radial.compactionStepSize',DRd='org.eclipse.elk.radial.sorter',ERd='org.eclipse.elk.radial.wedgeCriteria',FRd='org.eclipse.elk.radial.optimizationCriteria',GRd='org.eclipse.elk.radial',HRd='org.eclipse.elk.alg.radial.p1position.wedge',IRd='org.eclipse.elk.alg.radial.sorting',JRd=5.497787143782138,KRd=3.9269908169872414,LRd=2.356194490192345,MRd='org.eclipse.elk.core.util',NRd='Invalid index: ',ORd='org.eclipse.elk.core.alg',PRd={337:1},QRd={284:1},RRd="Make sure it's type is registered with the ",SRd=' utility class.',TRd='true',URd='false',VRd="Couldn't clone property '",WRd='org.eclipse.elk.core.options',XRd=1.2999999523162842,YRd='org.eclipse.elk.box',ZRd='org.eclipse.elk.expandNodes',$Rd='org.eclipse.elk.box.packingMode',_Rd='org.eclipse.elk.algorithm',aSd='org.eclipse.elk.bendPoints',bSd='org.eclipse.elk.labelManager',cSd='org.eclipse.elk.scaleFactor',dSd='org.eclipse.elk.animate',eSd='org.eclipse.elk.animTimeFactor',fSd='org.eclipse.elk.layoutAncestors',gSd='org.eclipse.elk.maxAnimTime',hSd='org.eclipse.elk.minAnimTime',iSd='org.eclipse.elk.progressBar',jSd='org.eclipse.elk.validateOptions',kSd='org.eclipse.elk.zoomToFit',lSd='org.eclipse.elk.nodeLabels.padding',mSd='org.eclipse.elk.font.name',nSd='org.eclipse.elk.font.size',oSd='org.eclipse.elk.edge.type',pSd='de.cau.cs.kieler.labelSpacing',qSd='partitioning',rSd='nodeLabels',sSd='portAlignment',tSd='nodeSize',uSd='port',vSd='portLabels',wSd='insideSelfLoops',xSd='de.cau.cs.kieler.selfLoopInside',ySd='org.eclipse.elk.fixed',zSd='Fixed Layout',ASd='org.eclipse.elk.random',BSd='port must have a parent node to calculate the port side',CSd='org.eclipse.elk.core.util.adapters',DSd='org.eclipse.elk.core.util.nodespacing',ESd='org.eclipse.elk.core.util.nodespacing.cellsystem',FSd={171:1,307:1},GSd='Vertical alignment cannot be null',HSd='org.eclipse.elk.core.util.nodespacing.internal',ISd='org.eclipse.elk.core.util.nodespacing.internal.algorithm',JSd='org.eclipse.elk.core.util.overlaps',KSd='org.eclipse.emf.ecore',LSd='org.eclipse.elk.graph',MSd='EMapPropertyHolder',NSd='ElkBendPoint',OSd='ElkGraphElement',PSd='ElkConnectableShape',QSd='ElkEdge',RSd='ElkEdgeSection',SSd='EModelElement',TSd='ENamedElement',USd='ElkLabel',VSd='ElkNode',WSd='ElkPort',XSd={91:1,87:1},YSd='org.eclipse.emf.common.notify.impl',ZSd="The feature '",$Sd="' is not a valid changeable feature",_Sd='Expecting null',aTd="' is not a valid feature",bTd=32768,cTd={95:1,91:1,87:1,51:1,42:1,92:1},dTd='org.eclipse.emf.ecore.impl',eTd='org.eclipse.elk.graph.impl',fTd='Recursive containment not allowed for ',gTd="The datatype '",hTd="' is not a valid classifier",iTd="The value '",jTd={173:1,3:1,4:1},kTd="The class '",lTd='http://www.eclipse.org/elk/ElkGraph',mTd='property',nTd='value',oTd='source',pTd='properties',qTd='identifier',rTd='height',sTd='width',tTd='parent',uTd='text',vTd='children',wTd='hierarchical',xTd='sources',yTd='targets',zTd='sections',ATd='bendPoints',BTd='outgoingShape',CTd='incomingShape',DTd='outgoingSections',ETd='incomingSections',FTd='org.eclipse.emf.common.util',GTd='Severe implementation error in the Json to ElkGraph importer.',HTd='id',ITd='org.eclipse.elk.graph.json',JTd='Unhandled parameter types: ',KTd='startPoint',LTd="An edge must have at least one source and one target (edge id: '",MTd="').",NTd='Referenced edge section does not exist: ',OTd=" (edge id: '",PTd='target',QTd='group',RTd='name',STd='connectableShape cannot be null',TTd="Passed edge is not 'simple'.",UTd="The 'no duplicates' constraint is violated",VTd={3:1,4:1,20:1,25:1,41:1,13:1,15:1,49:1,59:1,55:1,52:1},WTd={3:1,4:1,20:1,25:1,41:1,13:1,43:1,15:1,49:1,59:1,55:1,52:1,532:1},XTd='org.eclipse.elk.graph.util',YTd='undefined',ZTd='parser.parse.1',$Td='parser.parse.2',_Td='parser.next.1',aUd='parser.next.2',bUd='parser.next.3',cUd='parser.next.4',dUd='parser.factor.1',eUd='parser.factor.2',fUd='parser.factor.3',gUd='parser.factor.4',hUd='parser.factor.5',iUd='parser.factor.6',jUd='parser.atom.1',kUd='parser.atom.2',lUd='parser.atom.3',mUd='parser.atom.4',nUd='parser.atom.5',oUd='parser.cc.1',pUd='parser.cc.2',qUd='parser.cc.3',rUd='parser.cc.5',sUd='parser.cc.6',tUd='parser.cc.7',uUd='parser.cc.8',vUd='parser.ope.1',wUd='parser.ope.2',xUd='parser.ope.3',yUd='parser.descape.1',zUd='parser.descape.2',AUd='parser.descape.3',BUd='parser.descape.4',CUd='parser.descape.5',DUd='parser.process.1',EUd='parser.quantifier.1',FUd='parser.quantifier.2',GUd='parser.quantifier.3',HUd='parser.quantifier.4',IUd='parser.quantifier.5',JUd='org.eclipse.emf.common.notify',KUd={380:1,610:1},LUd={3:1,4:1,20:1,25:1,41:1,13:1,15:1,59:1,52:1},MUd={338:1,136:1},NUd='index=',OUd=', size=',PUd={3:1,4:1,5:1,116:1},QUd={3:1,4:1,20:1,25:1,41:1,13:1,15:1,49:1,59:1,52:1},RUd={3:1,6:1,4:1,5:1,175:1},SUd={3:1,4:1,5:1,339:1},TUd=';/?:@&=+$,',UUd='invalid authority: ',VUd='EAnnotation',WUd='ETypedElement',XUd='EStructuralFeature',YUd='EAttribute',ZUd='EClassifier',$Ud='EEnumLiteral',_Ud='EGenericType',aVd='EOperation',bVd='EParameter',cVd='EReference',dVd='ETypeParameter',eVd='org.eclipse.emf.ecore.util',fVd={3:1,20:1,13:1,15:1,52:1,533:1,81:1,64:1},gVd='org.eclipse.emf.ecore.util.FeatureMap$Entry',hVd=1024,iVd=8192,jVd=2048,kVd='byte',lVd='char',mVd='double',nVd='float',oVd='int',pVd='long',qVd='short',rVd='java.lang.Object',sVd={3:1,4:1,5:1,222:1},tVd={3:1,4:1,5:1,611:1},uVd={3:1,4:1,20:1,25:1,41:1,13:1,15:1,49:1,59:1,55:1,52:1,64:1},vVd={3:1,4:1,20:1,25:1,41:1,13:1,15:1,49:1,59:1,55:1,52:1,81:1,64:1},wVd='mixed',xVd='http:///org/eclipse/emf/ecore/util/ExtendedMetaData',yVd='kind',zVd={3:1,4:1,5:1,612:1},AVd={3:1,4:1,20:1,25:1,41:1,13:1,15:1,59:1,52:1,81:1,64:1},BVd={20:1,25:1,41:1,13:1,15:1,52:1,64:1},CVd={43:1,120:1,260:1},DVd={75:1,311:1},EVd="The value of type '",FVd="' must be of type '",GVd=1365,HVd='http://www.eclipse.org/emf/2002/Ecore',IVd=-32768,JVd='constraints',KVd='baseType',LVd='getEStructuralFeature',MVd='getFeatureID',NVd='feature',OVd='getOperationID',PVd='operation',QVd='defaultValue',RVd='eTypeParameters',SVd='isInstance',TVd='getEEnumLiteral',UVd='eContainingClass',VVd={47:1},WVd={3:1,4:1,5:1,124:1},XVd='org.eclipse.emf.ecore.resource',YVd={91:1,87:1,534:1,1628:1},ZVd='org.eclipse.emf.ecore.resource.impl',$Vd='unspecified',_Vd='simple',aWd='attribute',bWd='attributeWildcard',cWd='element',dWd='elementWildcard',eWd='collapse',fWd='itemType',gWd='namespace',hWd='##targetNamespace',iWd='whiteSpace',jWd='wildcards',kWd='http://www.eclipse.org/emf/2003/XMLType',lWd='##any',mWd='uninitialized',nWd='The multiplicity constraint is violated',oWd='org.eclipse.emf.ecore.xml.type',pWd='ProcessingInstruction',qWd='SimpleAnyType',rWd='XMLTypeDocumentRoot',sWd='org.eclipse.emf.ecore.xml.type.impl',tWd='INF',uWd='processing',vWd='ENTITIES_._base',wWd='minLength',xWd='ENTITY',yWd='NCName',zWd='IDREFS_._base',AWd='integer',BWd='token',CWd='pattern',DWd='[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*',EWd='\\i\\c*',FWd='[\\i-[:]][\\c-[:]]*',GWd='nonPositiveInteger',HWd='maxInclusive',IWd='NMTOKEN',JWd='NMTOKENS_._base',KWd='nonNegativeInteger',LWd='minInclusive',MWd='normalizedString',NWd='unsignedByte',OWd='unsignedInt',PWd='18446744073709551615',QWd='unsignedShort',RWd='processingInstruction',SWd='org.eclipse.emf.ecore.xml.type.internal',TWd=1114111,UWd='Internal Error: shorthands: \\u',VWd='xml:isDigit',WWd='xml:isWord',XWd='xml:isSpace',YWd='xml:isNameChar',ZWd='xml:isInitialNameChar',$Wd='09\u0660\u0669\u06F0\u06F9\u0966\u096F\u09E6\u09EF\u0A66\u0A6F\u0AE6\u0AEF\u0B66\u0B6F\u0BE7\u0BEF\u0C66\u0C6F\u0CE6\u0CEF\u0D66\u0D6F\u0E50\u0E59\u0ED0\u0ED9\u0F20\u0F29',_Wd='AZaz\xC0\xD6\xD8\xF6\xF8\u0131\u0134\u013E\u0141\u0148\u014A\u017E\u0180\u01C3\u01CD\u01F0\u01F4\u01F5\u01FA\u0217\u0250\u02A8\u02BB\u02C1\u0386\u0386\u0388\u038A\u038C\u038C\u038E\u03A1\u03A3\u03CE\u03D0\u03D6\u03DA\u03DA\u03DC\u03DC\u03DE\u03DE\u03E0\u03E0\u03E2\u03F3\u0401\u040C\u040E\u044F\u0451\u045C\u045E\u0481\u0490\u04C4\u04C7\u04C8\u04CB\u04CC\u04D0\u04EB\u04EE\u04F5\u04F8\u04F9\u0531\u0556\u0559\u0559\u0561\u0586\u05D0\u05EA\u05F0\u05F2\u0621\u063A\u0641\u064A\u0671\u06B7\u06BA\u06BE\u06C0\u06CE\u06D0\u06D3\u06D5\u06D5\u06E5\u06E6\u0905\u0939\u093D\u093D\u0958\u0961\u0985\u098C\u098F\u0990\u0993\u09A8\u09AA\u09B0\u09B2\u09B2\u09B6\u09B9\u09DC\u09DD\u09DF\u09E1\u09F0\u09F1\u0A05\u0A0A\u0A0F\u0A10\u0A13\u0A28\u0A2A\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59\u0A5C\u0A5E\u0A5E\u0A72\u0A74\u0A85\u0A8B\u0A8D\u0A8D\u0A8F\u0A91\u0A93\u0AA8\u0AAA\u0AB0\u0AB2\u0AB3\u0AB5\u0AB9\u0ABD\u0ABD\u0AE0\u0AE0\u0B05\u0B0C\u0B0F\u0B10\u0B13\u0B28\u0B2A\u0B30\u0B32\u0B33\u0B36\u0B39\u0B3D\u0B3D\u0B5C\u0B5D\u0B5F\u0B61\u0B85\u0B8A\u0B8E\u0B90\u0B92\u0B95\u0B99\u0B9A\u0B9C\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8\u0BAA\u0BAE\u0BB5\u0BB7\u0BB9\u0C05\u0C0C\u0C0E\u0C10\u0C12\u0C28\u0C2A\u0C33\u0C35\u0C39\u0C60\u0C61\u0C85\u0C8C\u0C8E\u0C90\u0C92\u0CA8\u0CAA\u0CB3\u0CB5\u0CB9\u0CDE\u0CDE\u0CE0\u0CE1\u0D05\u0D0C\u0D0E\u0D10\u0D12\u0D28\u0D2A\u0D39\u0D60\u0D61\u0E01\u0E2E\u0E30\u0E30\u0E32\u0E33\u0E40\u0E45\u0E81\u0E82\u0E84\u0E84\u0E87\u0E88\u0E8A\u0E8A\u0E8D\u0E8D\u0E94\u0E97\u0E99\u0E9F\u0EA1\u0EA3\u0EA5\u0EA5\u0EA7\u0EA7\u0EAA\u0EAB\u0EAD\u0EAE\u0EB0\u0EB0\u0EB2\u0EB3\u0EBD\u0EBD\u0EC0\u0EC4\u0F40\u0F47\u0F49\u0F69\u10A0\u10C5\u10D0\u10F6\u1100\u1100\u1102\u1103\u1105\u1107\u1109\u1109\u110B\u110C\u110E\u1112\u113C\u113C\u113E\u113E\u1140\u1140\u114C\u114C\u114E\u114E\u1150\u1150\u1154\u1155\u1159\u1159\u115F\u1161\u1163\u1163\u1165\u1165\u1167\u1167\u1169\u1169\u116D\u116E\u1172\u1173\u1175\u1175\u119E\u119E\u11A8\u11A8\u11AB\u11AB\u11AE\u11AF\u11B7\u11B8\u11BA\u11BA\u11BC\u11C2\u11EB\u11EB\u11F0\u11F0\u11F9\u11F9\u1E00\u1E9B\u1EA0\u1EF9\u1F00\u1F15\u1F18\u1F1D\u1F20\u1F45\u1F48\u1F4D\u1F50\u1F57\u1F59\u1F59\u1F5B\u1F5B\u1F5D\u1F5D\u1F5F\u1F7D\u1F80\u1FB4\u1FB6\u1FBC\u1FBE\u1FBE\u1FC2\u1FC4\u1FC6\u1FCC\u1FD0\u1FD3\u1FD6\u1FDB\u1FE0\u1FEC\u1FF2\u1FF4\u1FF6\u1FFC\u2126\u2126\u212A\u212B\u212E\u212E\u2180\u2182\u3007\u3007\u3021\u3029\u3041\u3094\u30A1\u30FA\u3105\u312C\u4E00\u9FA5\uAC00\uD7A3',aXd='Private Use',bXd='ASSIGNED',cXd='\x00\x7F\x80\xFF\u0100\u017F\u0180\u024F\u0250\u02AF\u02B0\u02FF\u0300\u036F\u0370\u03FF\u0400\u04FF\u0530\u058F\u0590\u05FF\u0600\u06FF\u0700\u074F\u0780\u07BF\u0900\u097F\u0980\u09FF\u0A00\u0A7F\u0A80\u0AFF\u0B00\u0B7F\u0B80\u0BFF\u0C00\u0C7F\u0C80\u0CFF\u0D00\u0D7F\u0D80\u0DFF\u0E00\u0E7F\u0E80\u0EFF\u0F00\u0FFF\u1000\u109F\u10A0\u10FF\u1100\u11FF\u1200\u137F\u13A0\u13FF\u1400\u167F\u1680\u169F\u16A0\u16FF\u1780\u17FF\u1800\u18AF\u1E00\u1EFF\u1F00\u1FFF\u2000\u206F\u2070\u209F\u20A0\u20CF\u20D0\u20FF\u2100\u214F\u2150\u218F\u2190\u21FF\u2200\u22FF\u2300\u23FF\u2400\u243F\u2440\u245F\u2460\u24FF\u2500\u257F\u2580\u259F\u25A0\u25FF\u2600\u26FF\u2700\u27BF\u2800\u28FF\u2E80\u2EFF\u2F00\u2FDF\u2FF0\u2FFF\u3000\u303F\u3040\u309F\u30A0\u30FF\u3100\u312F\u3130\u318F\u3190\u319F\u31A0\u31BF\u3200\u32FF\u3300\u33FF\u3400\u4DB5\u4E00\u9FFF\uA000\uA48F\uA490\uA4CF\uAC00\uD7A3\uE000\uF8FF\uF900\uFAFF\uFB00\uFB4F\uFB50\uFDFF\uFE20\uFE2F\uFE30\uFE4F\uFE50\uFE6F\uFE70\uFEFE\uFEFF\uFEFF\uFF00\uFFEF',dXd='UNASSIGNED',eXd={3:1,112:1},fXd='org.eclipse.emf.ecore.xml.type.util',gXd={3:1,4:1,5:1,342:1},hXd='org.eclipse.xtext.xbase.lib',iXd='Cannot add elements to a Range',jXd='Cannot set elements in a Range',kXd='Cannot remove elements from a Range',lXd='locale',mXd='default',nXd='user.agent';var _,a3,X2,v2=-1;b3();c3(1,null,{},ib);_.Fb=function jb(a){return this===a};_.Gb=function lb(){return this.ql};_.Hb=function nb(){return bqb(this)};_.Ib=function pb(){return f4(mb(this))+'@'+(ob(this)>>>0).toString(16)};_.equals=function(a){return this.Fb(a)};_.hashCode=function(){return this.Hb()};_.toString=function(){return this.Ib()};var gA,hA,iA;c3(274,1,{274:1,1712:1},h4);_._d=function i4(a){var b;b=new h4;b.i=4;a>1?(b.c=p4(this,a-1)):(b.c=this);return b};_.ae=function o4(){d4(this);return this.b};_.be=function q4(){return f4(this)};_.ce=function s4(){return d4(this),this.k};_.de=function u4(){return (this.i&4)!=0};_.ee=function v4(){return (this.i&1)!=0};_.Ib=function y4(){return g4(this)};_.i=0;var c4=1;var NE=k4(kJd,'Object',1);var xE=k4(kJd,'Class',274);c3(1692,1,{3:1});var MA=k4(lJd,'Optional',1692);c3(1060,1692,{3:1},sb);_.Fb=function tb(a){return a===this};_.Hb=function ub(){return 2040732332};_.Ib=function vb(){return 'Optional.absent()'};_.Jb=function wb(a){Pb(a);return rb(),qb};var qb;var HA=k4(lJd,'Absent',1060);var IA=m4(lJd,'Function');c3(393,1,{},Cb);_.Lb=function Db(a){return Ab(a)};var LA=k4(lJd,'Joiner',393);c3(875,393,{},Eb);_.Lb=function Fb(a){return a==null?this.b:Ab(a)};var JA=k4(lJd,'Joiner/1',875);c3(874,1,{},Gb);var KA=k4(lJd,'Joiner/MapJoiner',874);var NA=m4(lJd,'Predicate');var Wb;c3(494,1,{138:1,494:1,3:1,56:1},Yb);_.Nb=function ac(a){return this.Mb(a)};_.Mb=function Zb(a){var b;for(b=0;b0};_.ic=function oe(){if(this.b>=this.c){throw x2(new djb)}return fn(this,this.b++)};_.Dc=function pe(){return this.b};_.Ec=function qe(){if(this.b<=0){throw x2(new djb)}return fn(this,--this.b)};_.Fc=function re(){return this.b-1};_.b=0;_.c=0;var YA=k4(sJd,'AbstractIndexedListIterator',847);c3(949,257,CJd);_.hc=function ve(){return se(this)};_.ic=function we(){return te(this)};_.d=1;var ZA=k4(sJd,'AbstractIterator',949);c3(1677,1,{238:1});_.Hc=function Be(){var a;return a=this.f,!a?(this.f=this.Ic()):a};_.Jc=function Ce(){return new hh(this.Hc())};_.Lc=function De(){return new gkb(this.Kc(),this._b(),sA(this,475)?1:0)};_.Fb=function Ee(a){return xt(this,a)};_.Hb=function Fe(){return ob(this.Hc())};_.Wb=function Ge(){return this._b()==0};_.Xb=function He(){return ze(this)};_.Ib=function Ie(){return f3(this.Hc())};var CB=k4(sJd,'AbstractMultimap',1677);c3(654,1677,EJd);_.Pb=function Se(){Je(this)};_.Qb=function Te(a){return this.c.Qb(a)};_.Ic=function Ue(){return sA(this.c,122)?new Ih(this,kA(this.c,122)):sA(this.c,115)?new Ch(this,kA(this.c,115)):new eg(this,this.c)};_.Pc=function Ve(a){return this.Oc()};_.Jc=function We(){return sA(this.c,122)?new Ph(this,kA(this.c,122)):sA(this.c,115)?new Nh(this,kA(this.c,115)):new ph(this,this.c)};_.Qc=function Xe(){return df(this.Oc())};_.Kc=function Ye(){return new zf(this)};_.Lc=function Ze(){return Xj(this.c.Tb().wc(),new Oi,64,this.d)};_.Mc=function $e(a){return Ke(this,a)};_.Nc=function bf(a){return Me(this,a)};_._b=function cf(){return this.d};_.Rc=function ef(){return new vf(this)};_.Sc=function ff(){return Xj(this.c.ac().wc(),new xf,64,this.d)};_.d=0;var xB=k4(sJd,'AbstractMapBasedMultimap',654);c3(1483,654,EJd);_.Oc=function jf(){return new Hbb(this.a)};_.Qc=function kf(){return Gl(),Gl(),Fl};_.Mc=function mf(a){return kA(Ke(this,a),15)};_.Nc=function of(a){return kA(Me(this,a),15)};_.Hc=function hf(){var a;return a=this.f,!a?(this.f=sA(this.c,122)?new Ih(this,kA(this.c,122)):sA(this.c,115)?new Ch(this,kA(this.c,115)):new eg(this,this.c)):a};_.Fb=function lf(a){return xt(this,a)};_.Tc=function nf(a){return kA(Ke(this,a),15)};_.Uc=function pf(a){return kA(Me(this,a),15)};var $A=k4(sJd,'AbstractListMultimap',1483);c3(661,1,wJd);_.gc=function rf(a){Bhb(this,a)};_.hc=function sf(){return this.c.hc()||this.e.hc()};_.ic=function tf(){var a;if(!this.e.hc()){a=kA(this.c.ic(),38);this.b=a.kc();this.a=kA(a.lc(),13);this.e=this.a.tc()}return this.Vc(this.b,this.e.ic())};_.jc=function uf(){this.e.jc();this.a.Wb()&&this.c.jc();--this.d.d};var gB=k4(sJd,'AbstractMapBasedMultimap/Itr',661);c3(970,661,wJd,vf);_.Vc=function wf(a,b){return b};var _A=k4(sJd,'AbstractMapBasedMultimap/1',970);c3(971,1,FJd,xf);_.Kb=function yf(a){return kA(a,13).wc()};var aB=k4(sJd,'AbstractMapBasedMultimap/1methodref$spliterator$Type',971);c3(972,661,wJd,zf);_.Vc=function Af(a,b){return Es(),new _m(a,b)};var bB=k4(sJd,'AbstractMapBasedMultimap/2',972);c3(1666,1,uJd);_.Ub=function Lf(a){bjb(this,a)};_.Yb=function Sf(a,b,c){return cjb(this,a,b,c)};_.Pb=function Gf(){this.Tb().Pb()};_.Wc=function Hf(a){return Bf(this,a)};_.Qb=function If(a){return !!Df(this,a,false)};_.Rb=function Jf(a){var b,c,d;for(c=this.Tb().tc();c.hc();){b=kA(c.ic(),38);d=b.lc();if(yA(a)===yA(d)||a!=null&&kb(a,d)){return true}}return false};_.Fb=function Kf(a){return Cf(this,a)};_.Vb=function Mf(a){return Of(Df(this,a,false))};_.Hb=function Pf(){return edb(this.Tb())};_.Wb=function Qf(){return this._b()==0};_.Xb=function Rf(){return new G9(this)};_.Zb=function Tf(a,b){throw x2(new V6('Put not supported on this map'))};_.$b=function Uf(a){return Of(Df(this,a,true))};_._b=function Vf(){return this.Tb()._b()};_.Ib=function Wf(){var a,b,c;c=new slb('{','}');for(b=this.Tb().tc();b.hc();){a=kA(b.ic(),38);rlb(c,Ff(this,a.kc())+'='+Ff(this,a.lc()))}return !c.a?c.c:c.e.length==0?c.a.a:c.a.a+(''+c.e)};_.ac=function Xf(){return new R9(this)};var mF=k4(tJd,'AbstractMap',1666);c3(1678,1666,uJd);_.Jc=function Zf(){return new hh(this)};_.Tb=function $f(){return Yf(this)};_.Xb=function _f(){var a;a=this.g;return !a?(this.g=this.Jc()):a};_.ac=function ag(){var a;a=this.i;return !a?(this.i=new nt(this)):a};var hD=k4(sJd,'Maps/ViewCachingAbstractMap',1678);c3(357,1678,uJd,eg);_.Vb=function jg(a){return bg(this,a)};_.$b=function mg(a){return cg(this,a)};_.Pb=function fg(){this.d==this.e.c?this.e.Pb():bo(new bh(this))};_.Qb=function gg(a){return Is(this.d,a)};_.Yc=function hg(){return new Vg(this)};_.Xc=function(){return this.Yc()};_.Fb=function ig(a){return this===a||kb(this.d,a)};_.Hb=function kg(){return ob(this.d)};_.Xb=function lg(){return this.e.Xb()};_._b=function ng(){return this.d._b()};_.Ib=function og(){return f3(this.d)};var fB=k4(sJd,'AbstractMapBasedMultimap/AsMap',357);c3(25,1,HJd);_.sc=function Bg(a){i5(this,a)};_.uc=function Dg(){return new Zob(null,this.wc())};_.wc=function Fg(){return new ekb(this,0)};_.xc=function Gg(){return new Zob(null,this.wc())};_.nc=function wg(a){throw x2(new V6('Add not supported on this collection'))};_.oc=function xg(a){return pg(this,a)};_.Pb=function yg(){rg(this)};_.pc=function zg(a){return qg(this,a,false)};_.qc=function Ag(a){return sg(this,a)};_.Wb=function Cg(){return this._b()==0};_.vc=function Eg(a){return qg(this,a,true)};_.yc=function Hg(){return tg(this)};_.zc=function Ig(a){return ug(this,a)};_.Ib=function Jg(){return vg(this)};var ZE=k4(tJd,'AbstractCollection',25);c3(IJd,25,JJd);_.wc=function Og(){return new ekb(this,1)};_.Fb=function Mg(a){return Kg(this,a)};_.Hb=function Ng(){return edb(this)};var tF=k4(tJd,'AbstractSet',IJd);c3(1660,IJd,JJd);var ED=k4(sJd,'Sets/ImprovedAbstractSet',1660);c3(1679,1660,JJd);_.Pb=function Qg(){this.Zc().Pb()};_.pc=function Rg(a){return Pg(this,a)};_.Wb=function Sg(){return this.Zc().Wb()};_.vc=function Tg(a){var b;if(this.pc(a)){b=kA(a,38);return this.Zc().Xb().vc(b.kc())}return false};_._b=function Ug(){return this.Zc()._b()};var cD=k4(sJd,'Maps/EntrySet',1679);c3(968,1679,JJd,Vg);_.pc=function Wg(a){return uk(this.a.d.Tb(),a)};_.tc=function Xg(){return new bh(this.a)};_.Zc=function Yg(){return this.a};_.vc=function Zg(a){var b;if(!uk(this.a.d.Tb(),a)){return false}b=kA(a,38);Ne(this.a.e,b.kc());return true};_.wc=function $g(){return Yj(this.a.d.Tb().wc(),new _g(this.a))};var dB=k4(sJd,'AbstractMapBasedMultimap/AsMap/AsMapEntries',968);c3(969,1,FJd,_g);_.Kb=function ah(a){return dg(this.a,kA(a,38))};var cB=k4(sJd,'AbstractMapBasedMultimap/AsMap/AsMapEntries/0methodref$wrapEntry$Type',969);c3(659,1,wJd,bh);_.gc=function dh(a){Bhb(this,a)};_.ic=function fh(){var a;return a=kA(this.b.ic(),38),this.a=kA(a.lc(),13),dg(this.c,a)};_.hc=function eh(){return this.b.hc()};_.jc=function gh(){this.b.jc();this.c.e.d-=this.a._b();this.a.Pb()};var eB=k4(sJd,'AbstractMapBasedMultimap/AsMap/AsMapIterator',659);c3(541,1660,JJd,hh);_.Pb=function ih(){this.b.Pb()};_.pc=function jh(a){return this.b.Qb(a)};_.sc=function kh(a){Pb(a);this.b.Ub(new lt(a))};_.Wb=function lh(){return this.b.Wb()};_.tc=function mh(){return Es(),oo(this.b.Tb().tc(),(bt(),_s))};_.vc=function nh(a){if(this.b.Qb(a)){this.b.$b(a);return true}return false};_._b=function oh(){return this.b._b()};var eD=k4(sJd,'Maps/KeySet',541);c3(356,541,JJd,ph);_.Pb=function qh(){var a;bo((a=this.b.Tb().tc(),new xh(this,a)))};_.qc=function rh(a){return this.b.Xb().qc(a)};_.Fb=function sh(a){return this===a||kb(this.b.Xb(),a)};_.Hb=function th(){return ob(this.b.Xb())};_.tc=function uh(){var a;return a=this.b.Tb().tc(),new xh(this,a)};_.vc=function vh(a){var b,c;c=0;b=kA(this.b.$b(a),13);if(b){c=b._b();b.Pb();this.a.d-=c}return c>0};_.wc=function wh(){return this.b.Xb().wc()};var iB=k4(sJd,'AbstractMapBasedMultimap/KeySet',356);c3(660,1,wJd,xh);_.gc=function yh(a){Bhb(this,a)};_.hc=function zh(){return this.c.hc()};_.ic=function Ah(){this.a=kA(this.c.ic(),38);return this.a.kc()};_.jc=function Bh(){var a;Ub(!!this.a,xJd);a=kA(this.a.lc(),13);this.c.jc();this.b.a.d-=a._b();a.Pb()};var hB=k4(sJd,'AbstractMapBasedMultimap/KeySet/1',660);c3(358,357,{109:1,115:1},Ch);_.Jc=function Dh(){return this.$c()};_.Xb=function Fh(){return this._c()};_.$c=function Eh(){return new Nh(this.c,this.ad())};_._c=function Gh(){var a;return a=this.b,!a?(this.b=this.$c()):a};_.ad=function Hh(){return kA(this.d,115)};var mB=k4(sJd,'AbstractMapBasedMultimap/SortedAsMap',358);c3(396,358,KJd,Ih);_.$c=function Jh(){return new Ph(this.a,kA(kA(this.d,115),122))};_.Xb=function Kh(){var a;return a=this.b,kA(!a?(this.b=new Ph(this.a,kA(kA(this.d,115),122))):a,196)};_._c=function Lh(){var a;return a=this.b,kA(!a?(this.b=new Ph(this.a,kA(kA(this.d,115),122))):a,196)};_.ad=function Mh(){return kA(kA(this.d,115),122)};var jB=k4(sJd,'AbstractMapBasedMultimap/NavigableAsMap',396);c3(327,356,LJd,Nh);_.wc=function Oh(){return this.b.Xb().wc()};var nB=k4(sJd,'AbstractMapBasedMultimap/SortedKeySet',327);c3(299,327,MJd,Ph);var kB=k4(sJd,'AbstractMapBasedMultimap/NavigableKeySet',299);c3(448,25,HJd,Uh);_.nc=function Vh(a){var b,c;Rh(this);c=this.d.Wb();b=this.d.nc(a);if(b){++this.f.d;c&&Qh(this)}return b};_.oc=function Wh(a){var b,c,d;if(a.Wb()){return false}d=(Rh(this),this.d._b());b=this.d.oc(a);if(b){c=this.d._b();this.f.d+=c-d;d==0&&Qh(this)}return b};_.Pb=function Xh(){var a;a=(Rh(this),this.d._b());if(a==0){return}this.d.Pb();this.f.d-=a;Sh(this)};_.pc=function Yh(a){Rh(this);return this.d.pc(a)};_.qc=function Zh(a){Rh(this);return this.d.qc(a)};_.Fb=function $h(a){if(a===this){return true}Rh(this);return kb(this.d,a)};_.Hb=function _h(){Rh(this);return ob(this.d)};_.tc=function ai(){Rh(this);return new ui(this)};_.vc=function bi(a){var b;Rh(this);b=this.d.vc(a);if(b){--this.f.d;Sh(this)}return b};_._b=function ci(){return Th(this)};_.wc=function di(){return Rh(this),this.d.wc()};_.Ib=function ei(){Rh(this);return f3(this.d)};var pB=k4(sJd,'AbstractMapBasedMultimap/WrappedCollection',448);var mG=m4(tJd,'List');c3(657,448,{20:1,25:1,13:1,15:1},fi);_.jd=function ni(a){Vib(this,a)};_.wc=function oi(){return Rh(this),this.d.wc()};_.bd=function gi(a,b){var c;Rh(this);c=this.d.Wb();kA(this.d,15).bd(a,b);++this.a.d;c&&Qh(this)};_.cd=function hi(a){Rh(this);return kA(this.d,15).cd(a)};_.dd=function ii(a){Rh(this);return kA(this.d,15).dd(a)};_.ed=function ji(){Rh(this);return new Ai(this)};_.fd=function ki(a){Rh(this);return new Bi(this,a)};_.gd=function li(a){var b;Rh(this);b=kA(this.d,15).gd(a);--this.a.d;Sh(this);return b};_.hd=function mi(a,b){Rh(this);return kA(this.d,15).hd(a,b)};_.kd=function pi(a,b){Rh(this);return Qe(this.a,this.e,kA(this.d,15).kd(a,b),!this.b?this:this.b)};var rB=k4(sJd,'AbstractMapBasedMultimap/WrappedList',657);c3(967,657,{20:1,25:1,13:1,15:1,49:1},qi);var lB=k4(sJd,'AbstractMapBasedMultimap/RandomAccessWrappedList',967);c3(558,1,wJd,ui);_.gc=function wi(a){Bhb(this,a)};_.hc=function xi(){ti(this);return this.b.hc()};_.ic=function yi(){ti(this);return this.b.ic()};_.jc=function zi(){si(this)};var oB=k4(sJd,'AbstractMapBasedMultimap/WrappedCollection/WrappedIterator',558);c3(658,558,NJd,Ai,Bi);_.jc=function Hi(){si(this)};_.Bc=function Ci(a){var b;b=Th(this.a)==0;(ti(this),kA(this.b,120)).Bc(a);++this.a.a.d;b&&Qh(this.a)};_.Cc=function Di(){return (ti(this),kA(this.b,120)).Cc()};_.Dc=function Ei(){return (ti(this),kA(this.b,120)).Dc()};_.Ec=function Fi(){return (ti(this),kA(this.b,120)).Ec()};_.Fc=function Gi(){return (ti(this),kA(this.b,120)).Fc()};_.Gc=function Ii(a){(ti(this),kA(this.b,120)).Gc(a)};var qB=k4(sJd,'AbstractMapBasedMultimap/WrappedList/WrappedListIterator',658);c3(559,448,LJd,Ji);_.wc=function Ki(){return Rh(this),this.d.wc()};var uB=k4(sJd,'AbstractMapBasedMultimap/WrappedSortedSet',559);c3(656,559,MJd,Li);var sB=k4(sJd,'AbstractMapBasedMultimap/WrappedNavigableSet',656);c3(655,448,JJd,Mi);_.wc=function Ni(){return Rh(this),this.d.wc()};var tB=k4(sJd,'AbstractMapBasedMultimap/WrappedSet',655);c3(974,1,FJd,Oi);_.Kb=function Pi(a){var b,c;return b=a.kc(),c=kA(a.lc(),13),Yj(c.wc(),new Qi(b))};var vB=k4(sJd,'AbstractMapBasedMultimap/lambda$0$Type',974);c3(973,1,FJd,Qi);_.Kb=function Ri(a){return af(this.a,a)};var wB=k4(sJd,'AbstractMapBasedMultimap/lambda$2$Type',973);c3(392,1,OJd);_.Fb=function Si(a){var b;if(sA(a,38)){b=kA(a,38);return Hb(this.kc(),b.kc())&&Hb(this.lc(),b.lc())}return false};_.Hb=function Ti(){var a,b;a=this.kc();b=this.lc();return (a==null?0:ob(a))^(b==null?0:ob(b))};_.mc=function Ui(a){throw x2(new U6)};_.Ib=function Vi(){return this.kc()+'='+this.lc()};var yB=k4(sJd,PJd,392);c3(1680,25,HJd);_.Pb=function Wi(){this.ld().Pb()};_.pc=function Xi(a){var b;if(sA(a,38)){b=kA(a,38);return xe(this.ld(),b.kc(),b.lc())}return false};_.vc=function Yi(a){var b;if(sA(a,38)){b=kA(a,38);return Ae(this.ld(),b.kc(),b.lc())}return false};_._b=function Zi(){return this.ld()._b()};var lD=k4(sJd,'Multimaps/Entries',1680);c3(975,1680,HJd);_.tc=function $i(){return this.a.Kc()};_.ld=function _i(){return this.a};_.wc=function aj(){return this.a.Lc()};var zB=k4(sJd,'AbstractMultimap/Entries',975);c3(662,975,JJd,bj);_.wc=function ej(){return this.a.Lc()};_.Fb=function cj(a){return dv(this,a)};_.Hb=function dj(){return ev(this)};var AB=k4(sJd,'AbstractMultimap/EntrySet',662);c3(663,25,HJd,fj);_.Pb=function gj(){this.a.Pb()};_.pc=function hj(a){return ye(this.a,a)};_.tc=function ij(){return this.a.Rc()};_._b=function jj(){return this.a.d};_.wc=function kj(){return this.a.Sc()};var BB=k4(sJd,'AbstractMultimap/Values',663);c3(1681,25,{738:1,20:1,25:1,13:1});_.sc=function sj(a){Pb(a);mj(this).sc(new su(a))};_.wc=function yj(){var a;return a=mj(this).wc(),Xj(a,new Du,64|a.qd()&1296,xu(this))};_.nc=function nj(a){lj();return true};_.oc=function oj(a){return uu(this,a)};_.Pb=function pj(){bo(new au(Yf(Tp(this.a)).tc()))};_.pc=function qj(a){var b;return b=kA(Js(Tp(this.a),a),13),(!b?0:b._b())>0};_.Fb=function rj(a){return vu(this,a)};_.Hb=function tj(){return ob(mj(this))};_.Wb=function uj(){return mj(this).Wb()};_.tc=function vj(){return new yu(this,mj(this).tc())};_.vc=function wj(a){return Tt(this,a,1)>0};_._b=function xj(){return xu(this)};_.Ib=function zj(){return f3(mj(this))};var DB=k4(sJd,'AbstractMultiset',1681);c3(557,654,QJd);_.Oc=function Cj(){return this.md()};_.Qc=function Dj(){return this.nd()};_.Mc=function Gj(a){return this.od(a)};_.Nc=function Ij(a){return this.pd(a)};_.Hc=function Bj(){var a;return a=this.f,!a?(this.f=sA(this.c,122)?new Ih(this,kA(this.c,122)):sA(this.c,115)?new Ch(this,kA(this.c,115)):new eg(this,this.c)):a};_.nd=function Ej(){return nl(),av(),_u};_.Fb=function Fj(a){return xt(this,a)};_.od=function Hj(a){return kA(Ke(this,a),19)};_.pd=function Jj(a){return kA(Me(this,a),19)};var EB=k4(sJd,'AbstractSetMultimap',557);c3(1413,557,QJd);_.md=function Mj(){return new Cmb(this.b)};_.nd=function Nj(){var a;return a=this.b,!a?(bdb(),new Teb(new Cmb(this.b))):nn(this.b)};_.Mc=function Oj(a){return kA(kA(Ke(this,a),19),60)};_.od=function Pj(a){return kA(kA(Ke(this,a),19),60)};_.Nc=function Qj(a){return kA(kA(Me(this,a),19),60)};_.pd=function Rj(a){return kA(kA(Me(this,a),19),60)};_.Hc=function Lj(){var a;return a=this.f,!a?(this.f=sA(this.c,122)?new Ih(this,kA(this.c,122)):sA(this.c,115)?new Ch(this,kA(this.c,115)):new eg(this,this.c)):a};var GB=k4(sJd,'AbstractSortedSetMultimap',1413);c3(1414,1413,QJd);_.Hc=function Tj(){var a;return a=this.f,kA(kA(!a?(this.f=sA(this.c,122)?new Ih(this,kA(this.c,122)):sA(this.c,115)?new Ch(this,kA(this.c,115)):new eg(this,this.c)):a,115),122)};_.Xb=function Uj(){var a;return a=this.i,kA(kA(!a?(this.i=sA(this.c,122)?new Ph(this,kA(this.c,122)):sA(this.c,115)?new Nh(this,kA(this.c,115)):new ph(this,this.c)):a,60),196)};var FB=k4(sJd,'AbstractSortedKeySortedSetMultimap',1414);c3(521,1483,EJd,Vj);_.a=0;var HB=k4(sJd,'ArrayListMultimap',521);c3(1156,1,SJd,Zj);_.qd=function $j(){return this.a.qd()&-262};_.rd=function _j(){return this.a.rd()};_.gc=function ak(a){this.a.gc(new ek(a,this.b))};_.sd=function bk(a){return this.a.sd(new ck(a,this.b))};var NB=k4(sJd,'CollectSpliterators/1',1156);c3(1157,1,{},ck);_.td=function dk(a){this.a.td(this.b.Kb(a))};var IB=k4(sJd,'CollectSpliterators/1/lambda$0$Type',1157);c3(1158,1,{},ek);_.td=function fk(a){this.a.td(this.b.Kb(a))};var JB=k4(sJd,'CollectSpliterators/1/lambda$1$Type',1158);c3(1159,1,SJd,hk);_.qd=function ik(){return this.a};_.rd=function jk(){!!this.d&&(this.b=w5(this.b,this.d.rd()));return w5(this.b,0)};_.gc=function kk(a){if(this.d){this.d.gc(a);this.d=null}this.c.gc(new pk(this.e,a));this.b=0};_.sd=function mk(a){while(true){if(!!this.d&&this.d.sd(a)){L2(this.b,TJd)&&(this.b=R2(this.b,1));return true}else{this.d=null}if(!this.c.sd(new nk(this,this.e))){return false}}};_.a=0;_.b=0;var MB=k4(sJd,'CollectSpliterators/1FlatMapSpliterator',1159);c3(1160,1,{},nk);_.td=function ok(a){gk(this.a,this.b,a)};var KB=k4(sJd,'CollectSpliterators/1FlatMapSpliterator/lambda$0$Type',1160);c3(1161,1,{},pk);_.td=function qk(a){lk(this.b,this.a,a)};var LB=k4(sJd,'CollectSpliterators/1FlatMapSpliterator/lambda$1$Type',1161);var rk;c3(844,1,VJd,vk);_.Fb=function xk(a){return this===a};_.Kb=function wk(a){return yA(a)===yA(this.a)?GJd:a};var OB=k4(sJd,'Collections2/1',844);c3(220,1,WJd);_.vd=function Bk(a){return this.ud(kA(a,220))};_.ud=function Ak(a){var b;if(a==(Uk(),Tk)){return 1}if(a==(Fk(),Ek)){return -1}b=(Pu(),E3(this.a,a.a));if(b!=0){return b}return sA(this,467)==sA(a,467)?0:sA(this,467)?1:-1};_.yd=function Ck(){return this.a};_.Fb=function Dk(a){return yk(this,a)};var TB=k4(sJd,'Cut',220);c3(1508,220,WJd,Gk);_.ud=function Hk(a){return a==this?0:1};_.wd=function Ik(a){throw x2(new x3)};_.xd=function Jk(a){a.a+='+\u221E)'};_.yd=function Kk(){throw x2(new Q4(XJd))};_.zd=function Lk(a){return false};_.Ib=function Mk(){return '+\u221E'};var Ek;var PB=k4(sJd,'Cut/AboveAll',1508);c3(467,220,{220:1,467:1,3:1,34:1},Nk);_.wd=function Ok(a){H6((a.a+='(',a),this.a)};_.xd=function Pk(a){C6(H6(a,this.a),93)};_.Hb=function Qk(){return ~ob(this.a)};_.zd=function Rk(a){return Pu(),E3(this.a,a)<0};_.Ib=function Sk(){return '/'+this.a+'\\'};var QB=k4(sJd,'Cut/AboveValue',467);c3(1507,220,WJd,Vk);_.ud=function Wk(a){return a==this?0:-1};_.wd=function Xk(a){a.a+='(-\u221E'};_.xd=function Yk(a){throw x2(new x3)};_.yd=function Zk(){throw x2(new Q4(XJd))};_.zd=function $k(a){return true};_.Ib=function _k(){return '-\u221E'};var Tk;var RB=k4(sJd,'Cut/BelowAll',1507);c3(1509,220,WJd,al);_.wd=function bl(a){H6((a.a+='[',a),this.a)};_.xd=function cl(a){C6(H6(a,this.a),41)};_.Hb=function dl(){return ob(this.a)};_.zd=function el(a){return Pu(),E3(this.a,a)<=0};_.Ib=function fl(){return '\\'+this.a+'/'};var SB=k4(sJd,'Cut/BelowValue',1509);c3(482,1,YJd);_.sc=function il(a){i5(this,a)};_.Ib=function jl(){return no(kA(Qb(this,'use Optional.orNull() instead of Optional.or(null)'),20).tc())};var VB=k4(sJd,'FluentIterable',482);c3(325,482,YJd,ll);_.tc=function ml(){return kl(this)};var UB=k4(sJd,'FluentIterable/2',325);c3(1670,25,ZJd);_.tc=function tl(){return this.Ad()};_.nc=function pl(a){throw x2(new U6)};_.oc=function ql(a){throw x2(new U6)};_.Pb=function rl(){throw x2(new U6)};_.pc=function sl(a){return a!=null&&qg(this,a,false)};_.vc=function ul(a){throw x2(new U6)};var iC=k4(sJd,'ImmutableCollection',1670);c3(912,1670,ZJd,vl);_.tc=function Al(){return po((bdb(),sdb(),rdb))};_.pc=function wl(a){return false};_.qc=function xl(a){return sg(this.a,a)};_.Wb=function yl(){return true};_.Ad=function zl(){return po((bdb(),sdb(),rdb))};_._b=function Bl(){return 0};_.yc=function Cl(){return tg(this.a)};_.zc=function Dl(a){return ug(this.a,a)};_.Ib=function El(){return vg(this.a)};var XB=k4(sJd,'ForwardingImmutableCollection',912);c3(193,1670,$Jd);_.tc=function Nl(){return this.Ad()};_.ed=function Ol(){return new gn(this,this._b(),0)};_.fd=function Pl(a){return new gn(this,this._b(),a)};_.jd=function Tl(a){Vib(this,a)};_.wc=function Ul(){return new ekb(this,16)};_.kd=function Wl(a,b){return this.Bd(a,b)};_.bd=function Il(a,b){throw x2(new U6)};_.Fb=function Jl(a){return Nr(this,a)};_.Hb=function Kl(){return Or(this)};_.dd=function Ll(a){return a==null?-1:Pr(this,a)};_.Ad=function Ml(){return new gn(this,this._b(),0)};_.gd=function Rl(a){throw x2(new U6)};_.hd=function Sl(a,b){throw x2(new U6)};_.Bd=function Vl(a,b){var c;return Xl((c=new bs(this),new A9(c,a,b)))};var Fl;var mC=k4(sJd,'ImmutableList',193);c3(1675,193,$Jd);_.tc=function em(){return po(this.Cd().tc())};_.kd=function hm(a,b){return Xl(this.Cd().kd(a,b))};_.pc=function Yl(a){return a!=null&&this.Cd().pc(a)};_.qc=function Zl(a){return this.Cd().qc(a)};_.Fb=function $l(a){return kb(this.Cd(),a)};_.cd=function _l(a){return this.Cd().cd(a)};_.Hb=function am(){return ob(this.Cd())};_.dd=function bm(a){return this.Cd().dd(a)};_.Wb=function cm(){return this.Cd().Wb()};_.Ad=function dm(){return po(this.Cd().tc())};_._b=function fm(){return this.Cd()._b()};_.Bd=function gm(a,b){return Xl(this.Cd().kd(a,b))};_.yc=function im(){return this.Cd().zc(tz(NE,oJd,1,this.Cd()._b(),5,1))};_.zc=function jm(a){return this.Cd().zc(a)};_.Ib=function km(){return f3(this.Cd())};var YB=k4(sJd,'ForwardingImmutableList',1675);c3(1671,1670,_Jd);_.tc=function pm(){return this.Ad()};_.wc=function rm(){return new ekb(this,1)};_.Fb=function nm(a){return dv(this,a)};_.Hb=function om(){return ev(this)};var nC=k4(sJd,'ImmutableSet',1671);c3(550,1671,_Jd);_.tc=function zm(){return this.Ad()};_.pc=function um(a){return a!=null&&Udb(this.b,a)};_.qc=function vm(a){return Vdb(this.b,a)};_.Hb=function wm(){return ob(this.b.b)};_.Wb=function xm(){return this.b.b.Wb()};_.Ad=function ym(){return po(new neb(this.b.b.tc()))};_._b=function Am(){return this.b.b._b()};_.yc=function Bm(){return this.b.b.yc()};_.zc=function Cm(a){return Wdb(this.b,a)};_.Ib=function Dm(){return f3(this.b.b)};var ZB=k4(sJd,'ForwardingImmutableSet',550);c3(1664,1663,aKd);_.Ac=function Em(){return bdb(),new Teb(this.a)};_.wc=function Fm(){return new lkb(this)};var cC=k4(sJd,'ForwardingSortedSet',1664);c3(481,632,vJd,Gm);_.ec=function Hm(a){return new Jm(this,a,this)};_.Zb=function Im(a,b){return Lc(this,a,b,false)};var gC=k4(sJd,'HashBiMap',481);c3(892,633,vJd,Jm);_.dc=function Km(){return new Rm(this,this.a.b.Tb().tc())};var fC=k4(sJd,'HashBiMap/1',892);c3(479,1,wJd);_.gc=function Nm(a){Bhb(this,a)};_.hc=function Om(){return this.b.hc()};_.ic=function Pm(){return Lm(this)};_.jc=function Qm(){this.b.jc()};var ID=k4(sJd,'TransformedIterator',479);c3(893,479,wJd,Rm);_.Ed=function Sm(a){return new Tm(this,kA(a,38))};_.Dd=function(a){return this.Ed(a)};var eC=k4(sJd,'HashBiMap/1/1',893);c3(894,392,OJd,Tm);_.kc=function Um(){return this.c};_.lc=function Vm(){return this.a.a.b.Vb(this.c)};_.mc=function Wm(a){var b;Ub(Kd(Jc(this.a.a),this),zJd);b=this.a.a.b.Vb(this.c);if(yA(a)===yA(b)||a!=null&&kb(a,b)){return a}Lc(this.a.a,this.c,a,true);return b};var dC=k4(sJd,'HashBiMap/1/1/1',894);c3(298,557,QJd,Xm);_.md=function Ym(){return new Kgb(Gs(this.a))};_.a=2;var hC=k4(sJd,'HashMultimap',298);c3(372,392,{392:1,372:1,3:1,38:1},_m);_.kc=function an(){return this.g};_.lc=function bn(){return this.i};_.mc=function cn(a){throw x2(new U6)};var jC=k4(sJd,'ImmutableEntry',372);c3(903,550,_Jd,dn);var kC=k4(sJd,'ImmutableEnumSet',903);c3(544,847,DJd,gn);var lC=k4(sJd,'ImmutableList/1',544);c3(1561,550,bKd);_.tc=function pn(){return po(new neb(this.b.b.tc()))};_.wc=function qn(){return new lkb(this)};_.pc=function ln(b){try{return b!=null&&Udb(this.a,b)}catch(a){a=w2(a);if(sA(a,177)){return false}else throw x2(a)}};_.qc=function mn(b){var c,d;for(d=b.tc();d.hc();){c=d.ic();if(c==null){return false}}try{return Vdb(this.a,b)}catch(a){a=w2(a);if(sA(a,177)){return false}else throw x2(a)}};_.Ad=function on(){return po(new neb(this.b.b.tc()))};_.yc=function rn(){return Nu(this,tz(NE,oJd,1,this.b.b._b(),5,1))};_.zc=function sn(a){return Ou(this,a)};var hn,jn;var oC=k4(sJd,'ImmutableSortedSet',1561);c3(904,482,YJd,En);_.tc=function Fn(){return co(this.a)};_.Ib=function Gn(){return vg(this.a)+' (cycled)'};var qC=k4(sJd,'Iterables/1',904);c3(200,1,VJd,Hn);_.Kb=function In(a){return kA(a,20).tc()};_.Fb=function Jn(a){return this===a};var pC=k4(sJd,'Iterables/12',200);c3(905,482,YJd,Ln);_.sc=function Mn(a){Pb(a);this.b.sc(new Pn(this.a,a))};_.tc=function Nn(){return Kn(this)};var sC=k4(sJd,'Iterables/4',905);c3(906,1,{},Pn);_.td=function Qn(a){On(this.b,this.a,a)};var rC=k4(sJd,'Iterables/4/lambda$0$Type',906);c3(907,482,YJd,Sn);_.sc=function Tn(a){Pb(a);this.a.sc(new Vn(a,this.b))};_.tc=function Un(){return Rn(this)};var uC=k4(sJd,'Iterables/5',907);c3(908,1,{},Vn);_.td=function Wn(a){this.a.td(this.b.Kb(a))};var tC=k4(sJd,'Iterables/5/lambda$0$Type',908);var Xn,Yn;c3(945,1665,DJd,qo);_.hc=function ro(){return false};_.Cc=function so(){return false};_.ic=function to(){throw x2(new djb)};_.Dc=function uo(){return 0};_.Ec=function vo(){throw x2(new djb)};_.Fc=function wo(){return -1};var wC=k4(sJd,'Iterators/1',945);c3(555,257,CJd,xo);_.hc=function yo(){return !this.a};_.ic=function zo(){if(this.a){throw x2(new djb)}this.a=true;return this.b};_.a=false;var vC=k4(sJd,'Iterators/11',555);c3(946,1,wJd,Ao);_.gc=function Bo(a){Bhb(this,a)};_.hc=function Co(){return false};_.ic=function Do(){throw x2(new djb)};_.jc=function Eo(){Ub(false,xJd)};var xC=k4(sJd,'Iterators/2',946);c3(947,257,CJd,Fo);_.hc=function Go(){return this.a.hc()};_.ic=function Ho(){return this.a.ic()};var yC=k4(sJd,'Iterators/3',947);c3(948,1,wJd,Jo);_.gc=function Ko(a){Bhb(this,a)};_.hc=function Lo(){return this.a.hc()||this.b.tc().hc()};_.ic=function Mo(){return Io(this)};_.jc=function No(){this.a.jc()};var zC=k4(sJd,'Iterators/4',948);c3(950,949,CJd,Po);var AC=k4(sJd,'Iterators/6',950);c3(951,479,wJd,Qo);_.Dd=function Ro(a){return this.a.Kb(a)};var BC=k4(sJd,'Iterators/7',951);c3(647,1,wJd);_.gc=function Vo(a){Bhb(this,a)};_.hc=function Wo(){return So(this)};_.ic=function Xo(){return To(this)};_.jc=function Yo(){Ub(!!this.c,xJd);this.c.jc();this.c=null};var xD=k4(sJd,'MultitransformedIterator',647);c3(182,647,{182:1,43:1},Zo);_.Fd=function $o(a){return kA(a,43)};var DC=k4(sJd,'Iterators/ConcatenatedIterator',182);c3(648,647,wJd,ap);_.Fd=function bp(a){return _o(kA(a,43))};var CC=k4(sJd,'Iterators/ConcatenatedIterator/1',648);c3(1540,557,QJd,cp);_.Pb=function dp(){Je(this);jp(this.a,this.a)};_.md=function ep(){return new jib(this.b)};_.Pc=function fp(a){return new Bp(this,a,this.b)};_.Kc=function gp(){return new qp(this)};_.Lc=function hp(){var a;return new ekb((a=this.g,kA(!a?(this.g=new bj(this)):a,19)),17)};_.Xb=function ip(){var a;return a=this.i,!a?(this.i=sA(this.c,122)?new Ph(this,kA(this.c,122)):sA(this.c,115)?new Nh(this,kA(this.c,115)):new ph(this,this.c)):a};_.Rc=function lp(){return Es(),oo(new qp(this),(bt(),at))};_.Sc=function mp(){var a;return Yj(new ekb((a=this.g,kA(!a?(this.g=new bj(this)):a,19)),17),new np)};_.b=2;var JC=k4(sJd,'LinkedHashMultimap',1540);c3(1543,1,FJd,np);_.Kb=function op(a){return kA(a,38).lc()};var EC=k4(sJd,'LinkedHashMultimap/0methodref$getValue$Type',1543);c3(728,1,wJd,qp);_.gc=function rp(a){Bhb(this,a)};_.ic=function tp(){return pp(this)};_.hc=function sp(){return this.a!=this.b.a};_.jc=function up(){Ub(!!this.c,xJd);Ae(this.b,this.c.g,this.c.i);this.c=null};var FC=k4(sJd,'LinkedHashMultimap/1',728);c3(310,372,{392:1,372:1,310:1,1706:1,3:1,38:1},vp);_.Gd=function wp(){return this.f};_.Hd=function xp(a){this.c=a};_.Id=function yp(a){this.f=a};_.d=0;var GC=k4(sJd,'LinkedHashMultimap/ValueEntry',310);c3(1541,1660,{1706:1,20:1,25:1,13:1,19:1},Bp);_.nc=function Cp(a){var b,c,d,e,f;f=dKd*b5((a==null?0:ob(a))*eKd,15);b=f&this.b.length-1;e=this.b[b];for(c=e;c;c=c.a){if(c.d==f&&Hb(c.i,a)){return false}}d=new vp(this.c,a,f,e);kp(this.d,d);d.f=this;this.d=d;jp(this.g.a.b,d);jp(d,this.g.a);this.b[b]=d;++this.f;++this.e;zp(this);return true};_.Pb=function Dp(){var a,b;qcb(this.b,null);this.f=0;for(a=this.a;a!=this;a=a.Gd()){b=kA(a,310);jp(b.b,b.e)}this.a=this;this.d=this;++this.e};_.pc=function Ep(a){var b,c;c=dKd*b5((a==null?0:ob(a))*eKd,15);for(b=this.b[c&this.b.length-1];b;b=b.a){if(b.d==c&&Hb(b.i,a)){return true}}return false};_.sc=function Fp(a){var b;Pb(a);for(b=this.a;b!=this;b=b.Gd()){a.td(kA(b,310).i)}};_.Gd=function Gp(){return this.a};_.tc=function Hp(){return new Np(this)};_.vc=function Ip(a){return Ap(this,a)};_.Hd=function Jp(a){this.d=a};_.Id=function Kp(a){this.a=a};_._b=function Lp(){return this.f};_.e=0;_.f=0;var IC=k4(sJd,'LinkedHashMultimap/ValueSet',1541);c3(1542,1,wJd,Np);_.gc=function Op(a){Bhb(this,a)};_.hc=function Pp(){return Mp(this),this.b!=this.c};_.ic=function Qp(){var a,b;Mp(this);if(this.b==this.c){throw x2(new djb)}a=kA(this.b,310);b=a.i;this.d=a;this.b=a.f;return b};_.jc=function Rp(){Mp(this);Ub(!!this.d,xJd);Ap(this.c,this.d.i);this.a=this.c.e;this.d=null};_.a=0;var HC=k4(sJd,'LinkedHashMultimap/ValueSet/1',1542);c3(689,1677,EJd,Zp);_.Hc=function $p(){return Tp(this)};_.Fb=function fq(a){return xt(this,a)};_.Mc=function gq(a){return new Nq(this,a)};_.Nc=function jq(a){return Xp(this,a)};_.Pb=function aq(){Up(this)};_.Qb=function bq(a){return Vp(this,a)};_.Ic=function cq(){return new At(this)};_.Jc=function dq(){return new Uq(this)};_.Kc=function eq(){throw x2(new y3('should never be called'))};_.Tc=function hq(a){return new Nq(this,a)};_.Wb=function iq(){return !this.a};_.Uc=function kq(a){return Xp(this,a)};_._b=function lq(){return this.d};_.c=0;_.d=0;var SC=k4(sJd,'LinkedListMultimap',689);c3(41,25,fKd);_.jd=function Aq(a){Vib(this,a)};_.wc=function Bq(){return new ekb(this,16)};_.bd=function oq(a,b){throw x2(new V6('Add not supported on this list'))};_.nc=function pq(a){this.bd(this._b(),a);return true};_.Pb=function qq(){this.Jd(0,this._b())};_.Fb=function rq(a){return mq(this,a)};_.Hb=function sq(){return fdb(this)};_.dd=function tq(a){return nq(this,a)};_.tc=function uq(){return new m9(this)};_.ed=function vq(){return this.fd(0)};_.fd=function wq(a){return new s9(this,a)};_.gd=function xq(a){throw x2(new V6('Remove not supported on this list'))};_.Jd=function yq(a,b){var c,d;d=this.fd(a);for(c=a;c0||this.c.hc()};_.ic=function Bu(){if(!(this.d>0||this.c.hc())){throw x2(new djb)}if(this.d==0){this.b=kA(this.c.ic(),312);this.f=this.d=kA(this.b.a.lc(),13)._b()}--this.d;this.a=true;return this.b.a.kc()};_.jc=function Cu(){Ub(this.a,xJd);this.f==1?this.c.jc():Tt(this.e,this.b.a.kc(),1)>0;--this.f;this.a=false};_.a=false;_.d=0;_.f=0;var vD=k4(sJd,'Multisets/MultisetIteratorImpl',981);c3(667,1,FJd,Du);_.Kb=function Eu(a){return new ekb(gdb(kA(kA(a,300).a.lc(),13)._b(),kA(a,300).a.kc()),16)};var wD=k4(sJd,'Multisets/lambda$0$Type',667);c3(1684,1,lKd);_.Fb=function Fu(a){return this===a};_.Md=function Gu(){return new jfb(this)};var zD=k4(sJd,'Ordering',1684);c3(1565,1684,mKd,Ku);_.Ld=function Lu(a,b){return Ju(kA(a,34),kA(b,34))};_.Ib=function Mu(){return 'Ordering.natural()'};var Hu;var yD=k4(sJd,'NaturalOrdering',1565);c3(464,1,{138:1,464:1,3:1,56:1},Ru);_.Mb=function Su(a){return Qu(this,kA(a,34))};_.Nb=function Wu(a){return this.Mb(a)};_.Fb=function Uu(a){var b;if(sA(a,464)){b=kA(a,464);return yk(this.a,b.a)&&yk(this.b,b.b)}return false};_.Hb=function Vu(){return ob(this.a)*31+ob(this.b)};_.Ib=function Xu(){return Yu(this.a,this.b)};var AD=k4(sJd,'Range',464);c3(485,1675,$Jd,Zu);_.Cd=function $u(){return this.a};var BD=k4(sJd,'RegularImmutableList',485);c3(554,550,_Jd,bv);var _u;var CD=k4(sJd,'RegularImmutableSet',554);c3(729,1561,bKd,cv);var DD=k4(sJd,'RegularImmutableSortedSet',729);c3(543,1664,{543:1,3:1,20:1,13:1,196:1,19:1,60:1},lv);var FD=k4(sJd,'Sets/UnmodifiableNavigableSet',543);c3(1165,1675,$Jd,mv);_.Cd=function nv(){return this.a};var GD=k4(sJd,'SingletonImmutableList',1165);c3(326,1671,_Jd,ov);_.tc=function rv(){return Zn(),new xo(this.a)};_.pc=function pv(a){return kb(this.a,a)};_.Ad=function qv(){return Zn(),new xo(this.a)};_._b=function sv(){return 1};var HD=k4(sJd,'SingletonImmutableSet',326);c3(1415,1414,QJd,tv);_.Hc=function uv(){var a;return a=this.f,kA(kA(!a?(this.f=sA(this.c,122)?new Ih(this,kA(this.c,122)):sA(this.c,115)?new Ch(this,kA(this.c,115)):new eg(this,this.c)):a,115),122)};_.Xb=function xv(){var a;return a=this.i,kA(kA(!a?(this.i=sA(this.c,122)?new Ph(this,kA(this.c,122)):sA(this.c,115)?new Nh(this,kA(this.c,115)):new ph(this,this.c)):a,60),196)};_.Pc=function wv(a){a==null&&this.a.Ld(null,null);return new Cmb(this.b)};var JD=k4(sJd,'TreeMultimap',1415);c3(78,1,{3:1,78:1});_.Nd=function Nv(a){return new $wnd.Error(a)};_.Od=function Pv(){return this.g};_.Pd=function Qv(){var a,b,c;c=this.g==null?null:this.g.replace(new $wnd.RegExp('\n','g'),' ');b=(a=f4(this.ql),c==null?a:a+': '+c);Jv(this,Ov(this.Nd(b)));Cw(this)};_.Ib=function Rv(){return Kv(this,this.Od())};_.e=pKd;_.i=false;_.n=true;var VE=k4(kJd,'Throwable',78);c3(104,78,{3:1,104:1,78:1});var BE=k4(kJd,'Exception',104);c3(54,104,rKd,Sv,Tv);var OE=k4(kJd,'RuntimeException',54);c3(539,54,rKd);var HE=k4(kJd,'JsException',539);c3(760,539,rKd);var PD=k4(sKd,'JavaScriptExceptionBase',760);c3(435,760,{435:1,3:1,104:1,54:1,78:1},Xv);_.Od=function $v(){Wv(this);return this.c};_.Qd=function _v(){return yA(this.b)===yA(Uv)?null:this.b};var Uv;var MD=k4(uKd,'JavaScriptException',435);var ND=k4(uKd,'JavaScriptObject$',0);var dw;c3(1640,1,{});var OD=k4(uKd,'Scheduler',1640);var hw=0,iw=0,jw=-1;c3(787,1640,{},xw);var tw;var QD=k4(sKd,'SchedulerImpl',787);var Aw;c3(1653,1,{});var UD=k4(sKd,'StackTraceCreator/Collector',1653);c3(761,1653,{},Hw);_.Rd=function Iw(a){var b={},j;var c=[];a[wKd]=c;var d=arguments.callee.caller;while(d){var e=(Bw(),d.name||(d.name=Ew(d.toString())));c.push(e);var f=':'+e;var g=b[f];if(g){var h,i;for(h=0,i=g.length;h=0?'+':'')+(c/60|0);b=(c<0?-c:c)%60<10?'0'+(c<0?-c:c)%60:''+(c<0?-c:c)%60;return (tfb(),rfb)[this.q.getDay()]+' '+sfb[this.q.getMonth()]+' '+Vx(this.q.getDate())+' '+Vx(this.q.getHours())+':'+Vx(this.q.getMinutes())+':'+Vx(this.q.getSeconds())+' GMT'+a+b+' '+this.q.getFullYear()};var PF=k4(tJd,'Date',181);c3(1622,181,aLd,Yx);_.a=false;_.b=0;_.c=0;_.d=0;_.e=0;_.f=0;_.g=false;_.i=0;_.j=0;_.k=0;_.n=0;_.o=0;_.p=0;var bE=k4('com.google.gwt.i18n.shared.impl','DateRecord',1622);c3(1659,1,{});_.Vd=function Zx(){return null};_.Wd=function $x(){return null};_.Xd=function _x(){return null};_.Yd=function ay(){return null};_.Zd=function by(){return null};var kE=k4(bLd,'JSONValue',1659);c3(209,1659,{209:1},fy,gy);_.Fb=function hy(a){if(!sA(a,209)){return false}return aw(this.a,kA(a,209).a)};_.Ud=function iy(){return my};_.Hb=function jy(){return bw(this.a)};_.Vd=function ky(){return this};_.Ib=function ly(){var a,b,c;c=new O6('[');for(b=0,a=this.a.length;b0&&(c.a+=',',c);H6(c,cy(this,b))}c.a+=']';return c.a};var cE=k4(bLd,'JSONArray',209);c3(443,1659,{443:1},qy);_.Ud=function ry(){return uy};_.Wd=function sy(){return this};_.Ib=function ty(){return B3(),''+this.a};_.a=false;var ny,oy;var dE=k4(bLd,'JSONBoolean',443);c3(877,54,rKd,vy);var eE=k4(bLd,'JSONException',877);c3(913,1659,{},yy);_.Ud=function zy(){return By};_.Ib=function Ay(){return mJd};var wy;var fE=k4(bLd,'JSONNull',913);c3(259,1659,{259:1},Cy);_.Fb=function Dy(a){if(!sA(a,259)){return false}return this.a==kA(a,259).a};_.Ud=function Ey(){return Iy};_.Hb=function Fy(){return zA(Vpb(this.a))};_.Xd=function Gy(){return this};_.Ib=function Hy(){return this.a+''};_.a=0;var gE=k4(bLd,'JSONNumber',259);c3(191,1659,{191:1},Py,Qy);_.Fb=function Ry(a){if(!sA(a,191)){return false}return aw(this.a,kA(a,191).a)};_.Ud=function Sy(){return Wy};_.Hb=function Ty(){return bw(this.a)};_.Yd=function Uy(){return this};_.Ib=function Vy(){var a,b,c,d,e,f;f=new O6('{');a=true;e=Jy(this,tz(UE,cKd,2,0,6,1));for(c=0,d=e.length;c=0?':'+this.c:'')+')'};_.c=0;var QE=k4(kJd,'StackTraceElement',287);iA={3:1,476:1,34:1,2:1};var UE=k4(kJd,tKd,2);c3(100,381,{476:1},z6,A6,B6);var RE=k4(kJd,'StringBuffer',100);c3(98,381,{476:1},M6,N6,O6);var SE=k4(kJd,'StringBuilder',98);c3(763,79,kLd,P6);var TE=k4(kJd,'StringIndexOutOfBoundsException',763);c3(1722,1,{});var Q6,R6;c3(46,54,{3:1,104:1,54:1,78:1,46:1},U6,V6);var WE=k4(kJd,'UnsupportedOperationException',46);c3(216,210,{3:1,34:1,210:1,216:1},j7,k7);_.vd=function n7(a){return d7(this,kA(a,216))};_.$d=function o7(){return G3(i7(this))};_.Fb=function p7(a){var b;if(this===a){return true}if(sA(a,216)){b=kA(a,216);return this.e==b.e&&d7(this,b)==0}return false};_.Hb=function q7(){var a;if(this.b!=0){return this.b}if(this.a<54){a=E2(this.f);this.b=U2(z2(a,-1));this.b=33*this.b+U2(z2(P2(a,32),-1));this.b=17*this.b+zA(this.e);return this.b}this.b=17*E7(this.c)+zA(this.e);return this.b};_.Ib=function r7(){return i7(this)};_.a=0;_.b=0;_.d=0;_.e=0;_.f=0;var W6,X6,Y6,Z6,$6,_6,a7,b7;var XE=k4('java.math','BigDecimal',216);c3(89,210,{3:1,34:1,210:1,89:1},K7,L7,M7,N7,O7,P7);_.vd=function R7(a){return z7(this,kA(a,89))};_.$d=function S7(){return G3(j8(this,0))};_.Fb=function T7(a){return B7(this,a)};_.Hb=function V7(){return E7(this)};_.Ib=function X7(){return j8(this,0)};_.b=-2;_.c=0;_.d=0;_.e=0;var s7,t7,u7,v7,w7,x7;var YE=k4('java.math','BigInteger',89);var e8,f8;var s8,t8;c3(441,1666,uJd);_.Pb=function O8(){L8(this)};_.Qb=function P8(a){return D8(this,a)};_.Rb=function Q8(a){return E8(this,a,this.e)||E8(this,a,this.d)};_.Tb=function R8(){return new X8(this)};_.Vb=function S8(a){return F8(this,a)};_.Zb=function T8(a,b){return I8(this,a,b)};_.$b=function U8(a){return K8(this,a)};_._b=function V8(){return M8(this)};var aF=k4(tJd,'AbstractHashMap',441);c3(242,IJd,JJd,X8);_.Pb=function Y8(){this.a.Pb()};_.pc=function Z8(a){return W8(this,a)};_.tc=function $8(){return new e9(this.a)};_.vc=function _8(a){var b;if(W8(this,a)){b=kA(a,38).kc();this.a.$b(b);return true}return false};_._b=function a9(){return this.a._b()};var _E=k4(tJd,'AbstractHashMap/EntrySet',242);c3(243,1,wJd,e9);_.gc=function f9(a){Bhb(this,a)};_.ic=function h9(){return c9(this)};_.hc=function g9(){return this.b};_.jc=function i9(){d9(this)};_.b=false;var $E=k4(tJd,'AbstractHashMap/EntrySetIterator',243);c3(433,1,wJd,m9);_.gc=function n9(a){Bhb(this,a)};_.hc=function o9(){return j9(this)};_.ic=function p9(){return k9(this)};_.jc=function q9(){l9(this)};_.b=0;_.c=-1;var bF=k4(tJd,'AbstractList/IteratorImpl',433);c3(94,433,NJd,s9);_.jc=function y9(){l9(this)};_.Bc=function t9(a){r9(this,a)};_.Cc=function u9(){return this.b>0};_.Dc=function v9(){return this.b};_.Ec=function w9(){return Lpb(this.b>0),this.a.cd(this.c=--this.b)};_.Fc=function x9(){return this.b-1};_.Gc=function z9(a){Rpb(this.c!=-1);this.a.hd(this.c,a)};var cF=k4(tJd,'AbstractList/ListIteratorImpl',94);c3(227,41,fKd,A9);_.bd=function B9(a,b){Ppb(a,this.b);this.c.bd(this.a+a,b);++this.b};_.cd=function C9(a){Mpb(a,this.b);return this.c.cd(this.a+a)};_.gd=function D9(a){var b;Mpb(a,this.b);b=this.c.gd(this.a+a);--this.b;return b};_.hd=function E9(a,b){Mpb(a,this.b);return this.c.hd(this.a+a,b)};_._b=function F9(){return this.b};_.a=0;_.b=0;var dF=k4(tJd,'AbstractList/SubList',227);c3(352,IJd,JJd,G9);_.Pb=function H9(){this.a.Pb()};_.pc=function I9(a){return this.a.Qb(a)};_.tc=function J9(){var a;return a=this.a.Tb().tc(),new M9(a)};_.vc=function K9(a){if(this.a.Qb(a)){this.a.$b(a);return true}return false};_._b=function L9(){return this.a._b()};var gF=k4(tJd,'AbstractMap/1',352);c3(542,1,wJd,M9);_.gc=function N9(a){Bhb(this,a)};_.hc=function O9(){return this.a.hc()};_.ic=function P9(){var a;return a=kA(this.a.ic(),38),a.kc()};_.jc=function Q9(){this.a.jc()};var fF=k4(tJd,'AbstractMap/1/1',542);c3(223,25,HJd,R9);_.Pb=function S9(){this.a.Pb()};_.pc=function T9(a){return this.a.Rb(a)};_.tc=function U9(){var a;return a=this.a.Tb().tc(),new W9(a)};_._b=function V9(){return this.a._b()};var iF=k4(tJd,'AbstractMap/2',223);c3(321,1,wJd,W9);_.gc=function X9(a){Bhb(this,a)};_.hc=function Y9(){return this.a.hc()};_.ic=function Z9(){var a;return a=kA(this.a.ic(),38),a.lc()};_.jc=function $9(){this.a.jc()};var hF=k4(tJd,'AbstractMap/2/1',321);c3(440,1,{440:1,38:1});_.Fb=function aab(a){var b;if(!sA(a,38)){return false}b=kA(a,38);return ejb(this.d,b.kc())&&ejb(this.e,b.lc())};_.kc=function bab(){return this.d};_.lc=function cab(){return this.e};_.Hb=function dab(){return fjb(this.d)^fjb(this.e)};_.mc=function eab(a){return _9(this,a)};_.Ib=function fab(){return this.d+'='+this.e};var jF=k4(tJd,'AbstractMap/AbstractEntry',440);c3(351,440,{440:1,351:1,38:1},gab);var kF=k4(tJd,'AbstractMap/SimpleEntry',351);c3(1672,1,yJd);_.Fb=function hab(a){var b;if(!sA(a,38)){return false}b=kA(a,38);return ejb(this.kc(),b.kc())&&ejb(this.lc(),b.lc())};_.Hb=function iab(){return fjb(this.kc())^fjb(this.lc())};_.Ib=function jab(){return this.kc()+'='+this.lc()};var lF=k4(tJd,PJd,1672);c3(1685,1666,KJd);_.Wc=function mab(a){return kab(this,a)};_.Qb=function nab(a){return lab(this,a)};_.Tb=function oab(){return new sab(this)};_.Vb=function pab(a){return Of(vlb(this,a))};_.Xb=function rab(){return new xab(this)};var qF=k4(tJd,'AbstractNavigableMap',1685);c3(668,IJd,JJd,sab);_.pc=function tab(a){return sA(a,38)&&kab(this.b,kA(a,38))};_.tc=function uab(){return new Tlb(this.b)};_.vc=function vab(a){var b;if(sA(a,38)){b=kA(a,38);return Flb(this.b,b)}return false};_._b=function wab(){return this.b.c};var nF=k4(tJd,'AbstractNavigableMap/EntrySet',668);c3(488,IJd,MJd,xab);_.wc=function Dab(){return new lkb(this)};_.Pb=function yab(){ulb(this.a)};_.pc=function zab(a){return lab(this.a,a)};_.tc=function Aab(){var a;return a=new Tlb((new Zlb(this.a)).b),new Eab(a)};_.vc=function Bab(a){if(lab(this.a,a)){Elb(this.a,a);return true}return false};_._b=function Cab(){return this.a.c};var pF=k4(tJd,'AbstractNavigableMap/NavigableKeySet',488);c3(489,1,wJd,Eab);_.gc=function Fab(a){Bhb(this,a)};_.hc=function Gab(){return j9(this.a.a)};_.ic=function Hab(){var a;return a=Rlb(this.a),a.kc()};_.jc=function Iab(){Slb(this.a)};var oF=k4(tJd,'AbstractNavigableMap/NavigableKeySet/1',489);c3(1693,25,HJd);_.nc=function Jab(a){return Spb(Djb(this,a)),true};_.oc=function Kab(a){Npb(a);Fpb(a!=this,"Can't add a queue to itself");return pg(this,a)};_.Pb=function Lab(){while(Ejb(this)!=null);};var rF=k4(tJd,'AbstractQueue',1693);c3(407,25,{4:1,20:1,25:1,13:1},$ab,_ab);_.nc=function abb(a){return Oab(this,a),true};_.Pb=function cbb(){Pab(this)};_.pc=function dbb(a){return Qab(new mbb(this),a)};_.Wb=function ebb(){return Tab(this)};_.tc=function fbb(){return new mbb(this)};_.vc=function gbb(a){return Vab(new mbb(this),a)};_._b=function hbb(){return this.c-this.b&this.a.length-1};_.wc=function ibb(){return new ekb(this,272)};_.zc=function jbb(a){var b,c;c=this.c-this.b&this.a.length-1;a.lengthc&&wz(a,c,null);return a};_.b=0;_.c=0;var vF=k4(tJd,'ArrayDeque',407);c3(408,1,wJd,mbb);_.gc=function nbb(a){Bhb(this,a)};_.hc=function obb(){return this.a!=this.b};_.ic=function pbb(){return kbb(this)};_.jc=function qbb(){lbb(this)};_.a=0;_.b=0;_.c=-1;var uF=k4(tJd,'ArrayDeque/IteratorImpl',408);c3(12,41,CLd,Gbb,Hbb,Ibb);_.bd=function Jbb(a,b){sbb(this,a,b)};_.nc=function Kbb(a){return tbb(this,a)};_.oc=function Lbb(a){return vbb(this,a)};_.Pb=function Mbb(){this.c=tz(NE,oJd,1,0,5,1)};_.pc=function Nbb(a){return ybb(this,a,0)!=-1};_.sc=function Obb(a){wbb(this,a)};_.cd=function Pbb(a){return xbb(this,a)};_.dd=function Qbb(a){return ybb(this,a,0)};_.Wb=function Rbb(){return this.c.length==0};_.tc=function Sbb(){return new ccb(this)};_.gd=function Tbb(a){return zbb(this,a)};_.vc=function Ubb(a){return Abb(this,a)};_.Jd=function Vbb(a,b){Bbb(this,a,b)};_.hd=function Wbb(a,b){return Cbb(this,a,b)};_._b=function Xbb(){return this.c.length};_.jd=function Ybb(a){Dbb(this,a)};_.yc=function Zbb(){return Ebb(this)};_.zc=function $bb(a){return Fbb(this,a)};var xF=k4(tJd,'ArrayList',12);c3(7,1,wJd,ccb);_.gc=function dcb(a){Bhb(this,a)};_.hc=function ecb(){return _bb(this)};_.ic=function fcb(){return acb(this)};_.jc=function gcb(){bcb(this)};_.a=0;_.b=-1;var wF=k4(tJd,'ArrayList/1',7);c3(155,41,DLd,Rcb);_.pc=function Scb(a){return nq(this,a)!=-1};_.sc=function Tcb(a){var b,c,d,e;Npb(a);for(c=this.a,d=0,e=c.length;d=0};_.qc=function Ljb(a){return sg(this.b,a)};_.tc=function Mjb(){return new neb(jdb(this.b).b.tc())};_.vc=function Njb(a){return Fjb(this,a)};_._b=function Ojb(){return this.b.c.length};_.wc=function Pjb(){return new ekb(this,256)};_.yc=function Qjb(){return Ebb(this.b)};_.zc=function Rjb(a){return Fbb(this.b,a)};var wG=k4(tJd,'PriorityQueue',453);c3(214,1,{214:1},akb,bkb);_.a=0;_.b=0;var Sjb,Tjb,Ujb=0;var xG=k4(tJd,'Random',214);c3(39,1,SJd,ekb,fkb,gkb);_.qd=function hkb(){return this.a};_.rd=function ikb(){ckb(this);return this.c};_.gc=function jkb(a){ckb(this);this.d.gc(a)};_.sd=function kkb(a){return dkb(this,a)};_.a=0;_.c=0;var IG=k4(tJd,'Spliterators/IteratorSpliterator',39);c3(382,39,SJd,lkb);var zG=k4(tJd,'SortedSet/1',382);c3(625,1,{},nkb);_.ie=function okb(a){this.a.td(a)};var AG=k4(tJd,'Spliterator/OfDouble/0methodref$accept$Type',625);c3(626,1,{},pkb);_.ie=function qkb(a){this.a.td(a)};var BG=k4(tJd,'Spliterator/OfDouble/1methodref$accept$Type',626);c3(642,1,SJd);_.gc=function wkb(a){mkb(this,a)};_.qd=function ukb(){return this.d};_.rd=function vkb(){return this.e};_.d=0;_.e=0;var GG=k4(tJd,'Spliterators/BaseSpliterator',642);c3(929,642,SJd);_.gc=function ykb(a){sA(a,273)?rkb(this,kA(a,273)):rkb(this,new pkb(a))};_.sd=function zkb(a){return sA(a,273)?Cob(this,kA(a,273)):Cob(this,new nkb(a))};var CG=k4(tJd,'Spliterators/AbstractDoubleSpliterator',929);c3(446,642,SJd);var DG=k4(tJd,'Spliterators/AbstractSpliterator',446);c3(790,1,SJd);_.gc=function Fkb(a){mkb(this,a)};_.qd=function Dkb(){return this.b};_.rd=function Ekb(){return this.d-this.c};_.b=0;_.c=0;_.d=0;var FG=k4(tJd,'Spliterators/BaseArraySpliterator',790);c3(791,790,SJd,Hkb);_.gc=function Ikb(a){Bkb(this,a)};_.sd=function Jkb(a){return Ckb(this,a)};var EG=k4(tJd,'Spliterators/ArraySpliterator',791);c3(789,1,wJd,Lkb);_.gc=function Nkb(a){sA(a,273)?xjb(this,kA(a,273)):xjb(this,new yjb(a))};_.ic=function Pkb(){return Kkb(this)};_.jc=function Qkb(){Chb()};_.ie=function Mkb(a){this.b=a};_.hc=function Okb(){return this.a||(this.a=Cob(this.c,this)),this.a};_.a=false;_.b=0;var HG=k4(tJd,'Spliterators/DoubleConsumerIterator',789);c3(523,41,PLd,Ukb);_.bd=function Vkb(a,b){Ykb(a,this.a.c.length+1);sbb(this.a,a,b)};_.nc=function Wkb(a){return tbb(this.a,a)};_.oc=function Xkb(a){return vbb(this.a,a)};_.Pb=function Zkb(){this.a.c=tz(NE,oJd,1,0,5,1)};_.pc=function $kb(a){return ybb(this.a,a,0)!=-1};_.qc=function _kb(a){return sg(this.a,a)};_.sc=function alb(a){wbb(this.a,a)};_.cd=function blb(a){return Ykb(a,this.a.c.length),xbb(this.a,a)};_.dd=function clb(a){return ybb(this.a,a,0)};_.Wb=function dlb(){return this.a.c.length==0};_.tc=function elb(){return new ccb(this.a)};_.gd=function flb(a){return Ykb(a,this.a.c.length),zbb(this.a,a)};_.Jd=function glb(a,b){Bbb(this.a,a,b)};_.hd=function hlb(a,b){return Ykb(a,this.a.c.length),Cbb(this.a,a,b)};_._b=function ilb(){return this.a.c.length};_.jd=function jlb(a){Dbb(this.a,a)};_.kd=function klb(a,b){return new A9(this.a,a,b)};_.yc=function llb(){return Ebb(this.a)};_.zc=function mlb(a){return Fbb(this.a,a)};_.Ib=function nlb(){return vg(this.a)};var VG=k4(tJd,'Vector',523);c3(596,523,PLd,qlb);var JG=k4(tJd,'Stack',596);c3(254,1,{},slb);_.Ib=function tlb(){return !this.a?this.c:this.e.length==0?this.a.a:this.a.a+(''+this.e)};var KG=k4(tJd,'StringJoiner',254);c3(487,1685,{3:1,109:1,122:1,115:1},Klb,Llb);_.Pb=function Mlb(){ulb(this)};_.Tb=function Nlb(){return new Zlb(this)};_.Zb=function Olb(a,b){return Dlb(this,a,b)};_.$b=function Plb(a){return Elb(this,a)};_._b=function Qlb(){return this.c};_.c=0;var TG=k4(tJd,'TreeMap',487);c3(397,1,wJd,Tlb);_.gc=function Vlb(a){Bhb(this,a)};_.ic=function Xlb(){return Rlb(this)};_.hc=function Wlb(){return j9(this.a)};_.jc=function Ylb(){Slb(this)};var LG=k4(tJd,'TreeMap/EntryIterator',397);c3(449,668,JJd,Zlb);_.Pb=function $lb(){ulb(this.a)};var MG=k4(tJd,'TreeMap/EntrySet',449);c3(398,351,{440:1,351:1,38:1,398:1},_lb);_.b=false;var NG=k4(tJd,'TreeMap/Node',398);c3(560,1,{},amb);_.Ib=function bmb(){return 'State: mv='+this.c+' value='+this.d+' done='+this.a+' found='+this.b};_.a=false;_.b=false;_.c=false;var OG=k4(tJd,'TreeMap/State',560);c3(278,23,QLd,hmb);_.je=function imb(){return false};_.ke=function jmb(){return false};var cmb,dmb,emb,fmb;var SG=l4(tJd,'TreeMap/SubMapType',278,zE,lmb,kmb);c3(982,278,QLd,mmb);_.ke=function nmb(){return true};var PG=l4(tJd,'TreeMap/SubMapType/1',982,SG,null,null);c3(983,278,QLd,omb);_.je=function pmb(){return true};_.ke=function qmb(){return true};var QG=l4(tJd,'TreeMap/SubMapType/2',983,SG,null,null);c3(984,278,QLd,rmb);_.je=function smb(){return true};var RG=l4(tJd,'TreeMap/SubMapType/3',984,SG,null,null);var tmb;c3(212,IJd,{3:1,20:1,25:1,13:1,196:1,19:1,60:1,212:1},Bmb,Cmb);_.wc=function Jmb(){return new lkb(this)};_.nc=function Dmb(a){return vmb(this,a)};_.Pb=function Emb(){ulb(this.a)};_.pc=function Fmb(a){return lab(this.a,a)};_.tc=function Gmb(){var a;return a=new Tlb((new Zlb((new xab(this.a)).a)).b),new Eab(a)};_.vc=function Hmb(a){return Amb(this,a)};_._b=function Imb(){return this.a.c};var UG=k4(tJd,'TreeSet',212);c3(845,1,{},Lmb);_.le=function Mmb(a,b){return Kmb(this.a,a,b)};var WG=k4(RLd,'BinaryOperator/lambda$0$Type',845);c3(846,1,{},Nmb);_.le=function Omb(a,b){return U4(kA(a,21).a,kA(b,21).a)<=0?a:b};var XG=k4(RLd,'BinaryOperator/lambda$1$Type',846);c3(843,1,FJd,Pmb);_.Kb=function Qmb(a){return a};var YG=k4(RLd,'Function/lambda$0$Type',843);c3(627,1,SLd,Rmb);_.Nb=function Smb(a){return !this.a.Nb(a)};var ZG=k4(RLd,'Predicate/lambda$0$Type',627);c3(150,23,{3:1,34:1,23:1,150:1},Zmb);var Vmb,Wmb,Xmb;var $G=l4(TLd,'Collector/Characteristics',150,zE,_mb,$mb);var anb;c3(684,1,{},cnb,dnb);var _G=k4(TLd,'Collector/CollectorImpl',684);c3(1053,1,FJd,onb);_.Kb=function pnb(a){return B3(),_vb(a)?true:false};var aH=k4(TLd,'Collectors/12methodref$test$Type',1053);c3(365,1,{},qnb);_.Kd=function rnb(a,b){kA(a,13).nc(b)};var bH=k4(TLd,'Collectors/20methodref$add$Type',365);c3(367,1,{},snb);_.ne=function tnb(){return new Gbb};var cH=k4(TLd,'Collectors/21methodref$ctor$Type',367);c3(331,1,{},unb);_.ne=function vnb(){return new Jgb};var dH=k4(TLd,'Collectors/23methodref$ctor$Type',331);c3(332,1,{},wnb);_.Kd=function xnb(a,b){Ggb(kA(a,67),b)};var eH=k4(TLd,'Collectors/24methodref$add$Type',332);c3(1050,1,{},ynb);_.le=function znb(a,b){return enb(kA(a,15),kA(b,13))};var fH=k4(TLd,'Collectors/4methodref$addAll$Type',1050);c3(683,1,{},Bnb);_.le=function Cnb(a,b){return Anb(a,b)};var gH=k4(TLd,'Collectors/lambda$1$Type',683);c3(1055,1,{},Dnb);_.ne=function Enb(){return xz(pz(NE,1),oJd,1,5,[this.a])};var hH=k4(TLd,'Collectors/lambda$10$Type',1055);c3(1056,1,{},Fnb);_.Kd=function Gnb(a,b){gnb(this.a,a)};var iH=k4(TLd,'Collectors/lambda$11$Type',1056);c3(1057,1,{},Hnb);_.le=function Inb(a,b){return hnb(this.a,a,b)};var jH=k4(TLd,'Collectors/lambda$12$Type',1057);c3(1058,1,FJd,Jnb);_.Kb=function Knb(a){return lA(a)[0]};var kH=k4(TLd,'Collectors/lambda$13$Type',1058);c3(366,1,{},Lnb);_.le=function Mnb(a,b){return kA(a,13).oc(kA(b,13)),kA(a,13)};var lH=k4(TLd,'Collectors/lambda$21$Type',366);c3(333,1,{},Nnb);_.le=function Onb(a,b){return pg(kA(a,67),kA(b,67)),kA(a,67)};var mH=k4(TLd,'Collectors/lambda$25$Type',333);c3(334,1,FJd,Pnb);_.Kb=function Qnb(a){return kA(a,67)};var nH=k4(TLd,'Collectors/lambda$26$Type',334);c3(1049,1,{},Rnb);_.Kd=function Snb(a,b){inb(this.a,a,b)};var oH=k4(TLd,'Collectors/lambda$3$Type',1049);c3(1051,1,{},Tnb);_.le=function Unb(a,b){return knb(kA(a,109),kA(b,109),new ynb)};var pH=k4(TLd,'Collectors/lambda$4$Type',1051);c3(1052,1,FJd,Vnb);_.Kb=function Wnb(a){return jnb(this.a,a)};var qH=k4(TLd,'Collectors/lambda$5$Type',1052);c3(1054,1,{},Xnb);_.ne=function Ynb(){var a;return a=new Jhb,Ghb(a,(B3(),B3(),false),new Gbb),Ghb(a,(null,true),new Gbb),a};var rH=k4(TLd,'Collectors/lambda$8$Type',1054);c3(645,1,{});_.d=false;var PH=k4(TLd,'TerminatableStream',645);c3(1416,645,{607:1,1701:1},iob);var tH=k4(TLd,'DoubleStream/DoubleStreamSource',1416);c3(1417,1,{},job);_.ie=function kob(a){ufb(this.a,a)};var sH=k4(TLd,'DoubleStream/DoubleStreamSource/lambda$2$Type',1417);var NH=m4(TLd,'Stream');c3(940,446,SJd,oob);_.sd=function pob(a){while(mob(this)){if(this.a.sd(a)){return true}else{this.a=null}}return false};var vH=k4(TLd,'Stream/2',940);c3(941,1,{},qob);_.td=function rob(a){nob(this.a,a)};var uH=k4(TLd,'Stream/2/lambda$0$Type',941);c3(942,1,ULd,sob);_.fe=function tob(){Znb(this.a)};var wH=k4(TLd,'Stream/3methodref$close$Type',942);c3(943,1,ULd,uob);_.fe=function vob(){Znb(this.a)};var xH=k4(TLd,'Stream/4methodref$close$Type',943);c3(644,446,SJd,xob);_.sd=function yob(a){this.b=false;while(!this.b&&this.c.sd(new zob(this,a)));return this.b};_.b=false;var zH=k4(TLd,'Stream/FilterSpliterator',644);c3(932,1,{},zob);_.td=function Aob(a){wob(this.a,this.b,a)};var yH=k4(TLd,'Stream/FilterSpliterator/lambda$0$Type',932);c3(930,929,SJd,Dob);var BH=k4(TLd,'Stream/MapToDoubleSpliterator',930);c3(646,1,{},Eob);_.td=function Fob(a){Bob(this.a,this.b,a)};var AH=k4(TLd,'Stream/MapToDoubleSpliterator/lambda$0$Type',646);c3(643,446,SJd,Iob);_.sd=function Job(a){return Hob(this,a)};var DH=k4(TLd,'Stream/MapToObjSpliterator',643);c3(931,1,{},Kob);_.td=function Lob(a){Gob(this.a,this.b,a)};var CH=k4(TLd,'Stream/MapToObjSpliterator/lambda$0$Type',931);c3(45,645,{607:1,1701:1,1700:1},Zob);var LH=k4(TLd,'Stream/StreamSource',45);c3(936,446,SJd,cpb);_.sd=function dpb(a){while(apb(this)){if(this.a.sd(a)){return true}else{Znb(this.b);this.b=null;this.a=null}}return false};var FH=k4(TLd,'Stream/StreamSource/1',936);c3(937,1,{},epb);_.td=function fpb(a){bpb(this.a,a)};var EH=k4(TLd,'Stream/StreamSource/1/lambda$0$Type',937);c3(938,446,SJd,gpb);_.sd=function hpb(a){var b;if(!this.a){b=new Gbb;this.b.a.gc(new ipb(b));bdb();Dbb(b,this.c);this.a=new ekb(b,16)}return dkb(this.a,a)};_.a=null;var HH=k4(TLd,'Stream/StreamSource/5',938);c3(939,1,{},ipb);_.td=function jpb(a){tbb(this.a,a)};var GH=k4(TLd,'Stream/StreamSource/5/2methodref$add$Type',939);c3(933,1,{},kpb);_.td=function lpb(a){};var IH=k4(TLd,'Stream/StreamSource/lambda$0$Type',933);c3(934,1,{},mpb);_.le=function npb(a,b){return $ob(this.a,a,b)};var JH=k4(TLd,'Stream/StreamSource/lambda$3$Type',934);c3(935,1,{},opb);_.td=function ppb(a){_ob(this.b,this.a,a)};var KH=k4(TLd,'Stream/StreamSource/lambda$4$Type',935);c3(553,1,{},rpb);_.td=function spb(a){qpb(this,a)};var MH=k4(TLd,'Stream/ValueConsumer',553);c3(944,1,{},tpb);_.td=function upb(a){dob(this.a,a)};var OH=k4(TLd,'TerminatableStream/lambda$0$Type',944);var aqb=0;var cqb,dqb=0,eqb;c3(1480,1,{},kqb);var RH=k4(YLd,'Scanline',1480);var QH=m4(YLd,ZLd);c3(1450,1,{},nqb);var SH=k4($Ld,'CGraph',1450);c3(309,1,{309:1},pqb);_.b=0;_.c=0;_.d=0;_.g=0;_.i=0;_.k=pLd;var UH=k4($Ld,'CGroup',309);c3(723,1,{},tqb);var TH=k4($Ld,'CGroup/CGroupBuilder',723);c3(57,1,{57:1},uqb);_.Ib=function vqb(){if(this.j){return pA(this.j.Kb(this))}return d4(WH),WH.o+'@'+(bqb(this)>>>0).toString(16)};_.f=0;_.i=pLd;var WH=k4($Ld,'CNode',57);c3(722,1,{},Aqb);var VH=k4($Ld,'CNode/CNodeBuilder',722);var Fqb;c3(1236,1,{},Hqb);_.se=function Iqb(a,b){return 0};_.te=function Jqb(a,b){return 0};var XH=k4($Ld,aMd,1236);c3(1505,1,{},Kqb);_.pe=function Lqb(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p;j=oLd;for(d=new ccb(a.a.b);d.ad.d.c||d.d.c==f.d.c&&d.d.b=0?'b'+a+'['+fxb(this.a)+']':'b['+fxb(this.a)+']'}return 'b_'+bqb(this)};var iJ=k4(dNd,'FBendpoint',497);c3(262,131,{3:1,262:1,93:1,131:1},gxb);_.Ib=function hxb(){return fxb(this)};var jJ=k4(dNd,'FEdge',262);c3(202,131,{3:1,202:1,93:1,131:1},kxb);var kJ=k4(dNd,'FGraph',202);c3(454,329,{3:1,454:1,329:1,93:1,131:1},mxb);_.Ib=function nxb(){return this.b==null||this.b.length==0?'l['+fxb(this.a)+']':'l_'+this.b};var lJ=k4(dNd,'FLabel',454);c3(146,329,{3:1,146:1,329:1,93:1,131:1},pxb);_.Ib=function qxb(){return oxb(this)};_.b=0;var mJ=k4(dNd,'FNode',146);c3(1691,1,{});_.Ee=function vxb(a){rxb(this,a)};_.Fe=function wxb(){sxb(this)};_.d=0;var oJ=k4(fNd,'AbstractForceModel',1691);c3(568,1691,{568:1},xxb);_.De=function zxb(a,b){var c,d,e,f,g;uxb(this.f,a,b);e=Gyc(xyc(b.d),a.d);g=$wnd.Math.sqrt(e.a*e.a+e.b*e.b);d=$wnd.Math.max(0,g-Ayc(a.e)/2-Ayc(b.e)/2);c=jxb(this.e,a,b);c>0?(f=-yxb(d,this.c)*c):(f=Cxb(d,this.b)*kA(nub(a,(qyb(),iyb)),21).a);Dyc(e,f/g);return e};_.Ee=function Axb(a){rxb(this,a);this.a=kA(nub(a,(qyb(),dyb)),21).a;this.c=Vpb(nA(nub(a,oyb)));this.b=Vpb(nA(nub(a,kyb)))};_.Ge=function Bxb(a){return a0&&(f-=Exb(d,this.a)*c);Dyc(e,f*this.b/g);return e};_.Ee=function Gxb(a){var b,c,d,e,f,g,h;rxb(this,a);this.b=Vpb(nA(nub(a,(qyb(),pyb))));this.c=this.b/kA(nub(a,dyb),21).a;d=a.e.c.length;f=0;e=0;for(h=new ccb(a.e);h.a0};_.a=0;_.b=0;_.c=0;var qJ=k4(fNd,'FruchtermanReingoldModel',569);c3(748,1,uMd,Txb);_.ue=function Uxb(a){qwc(a,new ixc(yxc(xxc(zxc(rxc(sxc(wxc(txc(uxc(new Axc,hNd),''),'Force Model'),'Determines the model for force calculation.'),Mxb),(Uxc(),Oxc)),sJ),fgb((Gxc(),Exc)))));qwc(a,new ixc(yxc(xxc(zxc(rxc(sxc(wxc(txc(uxc(new Axc,iNd),''),'Iterations'),'The number of iterations on the force model.'),d5(300)),Qxc),GE),fgb(Exc))));qwc(a,new ixc(yxc(xxc(zxc(rxc(sxc(wxc(txc(uxc(new Axc,jNd),''),'Repulsive Power'),'Determines how many bend points are added to the edge; such bend points are regarded as repelling particles in the force model'),d5(0)),Qxc),GE),fgb(Bxc))));qwc(a,new ixc(yxc(xxc(zxc(rxc(sxc(wxc(txc(uxc(new Axc,kNd),''),'FR Temperature'),'The temperature is used as a scaling factor for particle displacements.'),lNd),Nxc),yE),fgb(Exc))));lwc(a,kNd,hNd,Rxb);qwc(a,new ixc(yxc(xxc(zxc(rxc(sxc(wxc(txc(uxc(new Axc,mNd),''),'Eades Repulsion'),"Factor for repulsive forces in Eades' model."),5),Nxc),yE),fgb(Exc))));lwc(a,mNd,hNd,Oxb);ryb((new syb,a))};var Kxb,Lxb,Mxb,Nxb,Oxb,Pxb,Qxb,Rxb;var rJ=k4(nNd,'ForceMetaDataProvider',748);c3(387,23,{3:1,34:1,23:1,387:1},Yxb);var Vxb,Wxb;var sJ=l4(nNd,'ForceModelStrategy',387,zE,$xb,Zxb);var _xb;c3(880,1,uMd,syb);_.ue=function tyb(a){ryb(a)};var byb,cyb,dyb,eyb,fyb,gyb,hyb,iyb,jyb,kyb,lyb,myb,nyb,oyb,pyb;var uJ=k4(nNd,'ForceOptions',880);c3(881,1,{},uyb);_.Be=function vyb(){var a;return a=new Zwb,a};_.Ce=function wyb(a){};var tJ=k4(nNd,'ForceOptions/ForceFactory',881);var xyb,yyb,zyb,Ayb;c3(749,1,uMd,Jyb);_.ue=function Kyb(a){qwc(a,new ixc(yxc(xxc(zxc(rxc(sxc(wxc(txc(uxc(new Axc,BNd),''),'Fixed Position'),'Prevent that the node is moved by the layout algorithm.'),(B3(),B3(),false)),(Uxc(),Mxc)),tE),fgb((Gxc(),Dxc)))));qwc(a,new ixc(yxc(xxc(zxc(rxc(sxc(wxc(txc(uxc(new Axc,CNd),''),'Desired Edge Length'),'Either specified for parent nodes or for individual edges, where the latter takes higher precedence.'),100),Nxc),yE),ggb(Exc,xz(pz(UT,1),jKd,163,0,[Bxc])))));qwc(a,new ixc(yxc(xxc(zxc(rxc(sxc(wxc(txc(uxc(new Axc,DNd),''),'Layout Dimension'),'Dimensions that are permitted to be altered during layout.'),Eyb),Oxc),zJ),fgb(Exc))));qwc(a,new ixc(yxc(xxc(zxc(rxc(sxc(wxc(txc(uxc(new Axc,ENd),''),'Stress Epsilon'),'Termination criterion for the iterative process.'),lNd),Nxc),yE),fgb(Exc))));qwc(a,new ixc(yxc(xxc(zxc(rxc(sxc(wxc(txc(uxc(new Axc,FNd),''),'Iteration Limit'),"Maximum number of performed iterations. Takes higher precedence than 'epsilon'."),d5(jJd)),Qxc),GE),fgb(Exc))));Syb((new Tyb,a))};var Cyb,Dyb,Eyb,Fyb,Gyb,Hyb;var vJ=k4(nNd,'StressMetaDataProvider',749);c3(884,1,uMd,Tyb);_.ue=function Uyb(a){Syb(a)};var Lyb,Myb,Nyb,Oyb,Pyb,Qyb;var xJ=k4(nNd,'StressOptions',884);c3(885,1,{},Vyb);_.Be=function Wyb(){var a;return a=new Yyb,a};_.Ce=function Xyb(a){};var wJ=k4(nNd,'StressOptions/StressFactory',885);c3(959,244,GMd,Yyb);_.Ae=function Zyb(a,b){var c,d,e,f;xEc(b,HNd,1);Vpb(mA(AOc(a,(Ryb(),Pyb))))||Wwb(new Zwb,a,BEc(b,1));d=Twb(a);c=Lwb(this.a,d);for(f=c.tc();f.hc();){e=kA(f.ic(),202);ezb(this.b,e);czb(this.b)}d=Kwb(c);Swb(d);zEc(b)};var yJ=k4(INd,'StressLayoutProvider',959);c3(882,1,{},fzb);_.c=0;_.e=0;_.g=0;var BJ=k4(INd,'StressMajorization',882);c3(348,23,{3:1,34:1,23:1,348:1},lzb);var hzb,izb,jzb;var zJ=l4(INd,'StressMajorization/Dimension',348,zE,nzb,mzb);var ozb;c3(883,1,lKd,qzb);_.Fb=function szb(a){return this===a};_.Md=function tzb(){return new jfb(this)};_.Ld=function rzb(a,b){return gzb(this.a,a,b)};var AJ=k4(INd,'StressMajorization/lambda$0$Type',883);c3(985,1,{},Bzb);var EJ=k4(KNd,'ElkLayered',985);c3(986,1,{},Dzb);_.td=function Ezb(a){Czb(this.a,a)};var CJ=k4(KNd,'ElkLayered/lambda$0$Type',986);c3(987,1,{},Fzb);_.td=function Gzb(a){qub(kA(a,31),(J6b(),Q4b),(g1b(),d1b))};var DJ=k4(KNd,'ElkLayered/lambda$1$Type',987);c3(1033,1,{},Nzb);var Hzb,Izb,Jzb;var FJ=k4(KNd,'GraphConfigurator',1033);c3(958,244,GMd,Pzb);_.Ae=function Qzb(a,b){var c;c=xIb(new EIb,a);yA(AOc(a,(J6b(),h5b)))===yA((jCc(),gCc))?vzb(this.a,c,b):wzb(this.a,c,b);YIb(new aJb,c)};var GJ=k4(KNd,'LayeredLayoutProvider',958);c3(328,23,{3:1,34:1,23:1,328:1},Xzb);var Rzb,Szb,Tzb,Uzb,Vzb;var HJ=l4(KNd,'LayeredPhases',328,zE,Zzb,Yzb);var $zb;c3(1407,1,{},gAb);_.i=0;var aAb;var KJ=k4(LNd,'ComponentsToCGraphTransformer',1407);var LAb;c3(1408,1,{},hAb);_.He=function iAb(a,b){return $wnd.Math.min(a.a!=null?Vpb(a.a):a.c.i,b.a!=null?Vpb(b.a):b.c.i)};_.Ie=function jAb(a,b){return $wnd.Math.min(a.a!=null?Vpb(a.a):a.c.i,b.a!=null?Vpb(b.a):b.c.i)};var IJ=k4(LNd,'ComponentsToCGraphTransformer/1',1408);c3(80,1,{80:1});_.i=0;_.k=true;_.o=pLd;var QJ=k4(MNd,'CNode',80);c3(282,80,{282:1,80:1},kAb,lAb);_.Ib=function mAb(){return ''};var JJ=k4(LNd,'ComponentsToCGraphTransformer/CRectNode',282);c3(1391,1,{},zAb);var nAb,oAb;var NJ=k4(LNd,'OneDimensionalComponentsCompaction',1391);c3(1392,1,VJd,AAb);_.Fb=function CAb(a){return this===a};_.Kb=function BAb(a){return pAb(),B3(),kA(kA(a,48).a,80).d.e!=0?true:false};var LJ=k4(LNd,'OneDimensionalComponentsCompaction/lambda$0$Type',1392);c3(1393,1,VJd,DAb);_.Fb=function FAb(a){return this===a};_.Kb=function EAb(a){return pAb(),B3(),iBb(kA(kA(a,48).a,80).j,kA(kA(a,48).b,110))||kA(kA(a,48).a,80).d.e!=0&&iBb(kA(kA(a,48).a,80).j,kA(kA(a,48).b,110))?true:false};var MJ=k4(LNd,'OneDimensionalComponentsCompaction/lambda$1$Type',1393);c3(1410,1,{},HAb);var OJ=k4(MNd,'CGraph',1410);c3(172,1,{172:1},KAb);_.b=0;_.c=0;_.e=0;_.g=true;_.i=pLd;var PJ=k4(MNd,'CGroup',172);c3(1409,1,{},NAb);_.He=function OAb(a,b){return $wnd.Math.max(a.a!=null?Vpb(a.a):a.c.i,b.a!=null?Vpb(b.a):b.c.i)};_.Ie=function PAb(a,b){return $wnd.Math.max(a.a!=null?Vpb(a.a):a.c.i,b.a!=null?Vpb(b.a):b.c.i)};var RJ=k4(MNd,aMd,1409);c3(1411,1,{},eBb);_.d=false;var QAb;var TJ=k4(MNd,fMd,1411);c3(1412,1,VJd,fBb);_.Fb=function hBb(a){return this===a};_.Kb=function gBb(a){return RAb(),B3(),kA(kA(a,48).a,80).d.e!=0?true:false};var SJ=k4(MNd,gMd,1412);c3(726,1,{},kBb);_.a=false;_.b=false;_.c=false;_.d=false;var UJ=k4(MNd,hMd,726);c3(1521,1,{},qBb);var ZJ=k4(NNd,iMd,1521);var jK=m4(ONd,ZLd);c3(1522,1,{341:1},uBb);_.Ne=function vBb(a){sBb(this,kA(a,524))};var WJ=k4(NNd,jMd,1522);c3(1523,1,lKd,wBb);_.Fb=function yBb(a){return this===a};_.Md=function zBb(){return new jfb(this)};_.Ld=function xBb(a,b){return C4(kA(a,282).g.c+kA(a,282).g.b/2,kA(b,282).g.c+kA(b,282).g.b/2)};var VJ=k4(NNd,kMd,1523);c3(524,1,{524:1},ABb);_.a=false;var XJ=k4(NNd,lMd,524);c3(1524,1,lKd,BBb);_.Fb=function DBb(a){return this===a};_.Md=function EBb(){return new jfb(this)};_.Ld=function CBb(a,b){return rBb(a,b)};var YJ=k4(NNd,mMd,1524);c3(102,1,{102:1},FBb,GBb);_.Fb=function HBb(a){var b;if(a==null){return false}if(_J!=mb(a)){return false}b=kA(a,102);return ejb(this.c,b.c)&&ejb(this.d,b.d)};_.Hb=function IBb(){return xcb(xz(pz(NE,1),oJd,1,5,[this.c,this.d]))};_.Ib=function JBb(){return '('+this.c+qJd+this.d+(this.a?'cx':'')+this.b+')'};_.a=true;_.c=0;_.d=0;var _J=k4(ONd,'Point',102);c3(373,23,{3:1,34:1,23:1,373:1},RBb);var KBb,LBb,MBb,NBb;var $J=l4(ONd,'Point/Quadrant',373,zE,VBb,UBb);var WBb;c3(1398,1,{},dCb);_.b=null;_.c=null;_.d=null;_.e=null;_.f=null;var YBb,ZBb,$Bb,_Bb,aCb;var iK=k4(ONd,'RectilinearConvexHull',1398);c3(516,1,{341:1},kCb);_.Ne=function lCb(a){jCb(this,kA(a,102))};_.b=0;var hCb;var bK=k4(ONd,'RectilinearConvexHull/MaximalElementsEventHandler',516);c3(1400,1,lKd,mCb);_.Fb=function oCb(a){return this===a};_.Md=function pCb(){return new jfb(this)};_.Ld=function nCb(a,b){return iCb(),C4(Vpb(nA(a)),Vpb(nA(b)))};var aK=k4(ONd,'RectilinearConvexHull/MaximalElementsEventHandler/lambda$0$Type',1400);c3(1399,1,{341:1},rCb);_.Ne=function sCb(a){qCb(this,kA(a,102))};_.a=0;_.b=null;_.c=null;_.d=null;_.e=null;var cK=k4(ONd,'RectilinearConvexHull/RectangleEventHandler',1399);c3(1401,1,lKd,tCb);_.Fb=function vCb(a){return this===a};_.Md=function wCb(){return new jfb(this)};_.Ld=function uCb(a,b){return bCb(),kA(a,102).c==kA(b,102).c?C4(kA(b,102).d,kA(a,102).d):C4(kA(a,102).c,kA(b,102).c)};var dK=k4(ONd,'RectilinearConvexHull/lambda$0$Type',1401);c3(1402,1,lKd,xCb);_.Fb=function zCb(a){return this===a};_.Md=function ACb(){return new jfb(this)};_.Ld=function yCb(a,b){return bCb(),kA(a,102).c==kA(b,102).c?C4(kA(a,102).d,kA(b,102).d):C4(kA(a,102).c,kA(b,102).c)};var eK=k4(ONd,'RectilinearConvexHull/lambda$1$Type',1402);c3(1403,1,lKd,BCb);_.Fb=function DCb(a){return this===a};_.Md=function ECb(){return new jfb(this)};_.Ld=function CCb(a,b){return bCb(),kA(a,102).c==kA(b,102).c?C4(kA(b,102).d,kA(a,102).d):C4(kA(b,102).c,kA(a,102).c)};var fK=k4(ONd,'RectilinearConvexHull/lambda$2$Type',1403);c3(1404,1,lKd,FCb);_.Fb=function HCb(a){return this===a};_.Md=function ICb(){return new jfb(this)};_.Ld=function GCb(a,b){return bCb(),kA(a,102).c==kA(b,102).c?C4(kA(a,102).d,kA(b,102).d):C4(kA(b,102).c,kA(a,102).c)};var gK=k4(ONd,'RectilinearConvexHull/lambda$3$Type',1404);c3(1405,1,lKd,JCb);_.Fb=function LCb(a){return this===a};_.Md=function MCb(){return new jfb(this)};_.Ld=function KCb(a,b){return fCb(a,b)};var hK=k4(ONd,'RectilinearConvexHull/lambda$4$Type',1405);c3(1406,1,{},OCb);var kK=k4(ONd,'Scanline',1406);c3(1694,1,{});var lK=k4(PNd,'AbstractGraphPlacer',1694);c3(458,1,{458:1},ZCb);var UCb;var nK=k4(PNd,'ComponentGroup',458);c3(1076,1694,{},dDb);_.Oe=function eDb(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o;this.a.c=tz(NE,oJd,1,0,5,1);b.a.c=tz(NE,oJd,1,0,5,1);if(a.Wb()){b.e.a=0;b.e.b=0;return}g=kA(a.cd(0),31);lub(b,g);for(e=a.tc();e.hc();){d=kA(e.ic(),31);$Cb(this,d)}o=new Hyc;f=Vpb(nA(nub(g,(J6b(),j6b))));for(j=new ccb(this.a);j.an){v=0;w+=m+e;m=0}q=g.c;SCb(g,v+q.a,w+q.b);Cyc(q);c=$wnd.Math.max(c,v+s.a);m=$wnd.Math.max(m,s.b);v+=s.a+e}b.e.a=c;b.e.b=w+m;if(Vpb(mA(nub(f,L4b)))){d=new qDb;gDb(d,a,e);for(l=a.tc();l.hc();){k=kA(l.ic(),31);vyc(Cyc(k.c),d.e)}vyc(Cyc(b.e),d.a)}RCb(b,a)};var yK=k4(PNd,'SimpleRowGraphPlacer',1074);c3(1075,1,lKd,TDb);_.Ld=function UDb(a,b){return SDb(kA(a,31),kA(b,31))};_.Fb=function VDb(a){return this===a};_.Md=function WDb(){return new jfb(this)};var xK=k4(PNd,'SimpleRowGraphPlacer/1',1075);var XDb;c3(1032,1,nMd,bEb);_.Mb=function cEb(a){var b;return b=kA(nub(kA(a,234).b,(J6b(),p5b)),74),!!b&&b.b!=0};_.Fb=function dEb(a){return this===a};_.Nb=function eEb(a){return this.Mb(a)};var zK=k4(RNd,'CompoundGraphPostprocessor/1',1032);c3(1031,1,TNd,tEb);_.Pe=function uEb(a,b){nEb(this,kA(a,31),b)};var BK=k4(RNd,'CompoundGraphPreprocessor',1031);c3(400,1,{400:1},vEb);_.c=false;var AK=k4(RNd,'CompoundGraphPreprocessor/ExternalPort',400);c3(234,1,{234:1},yEb);_.Ib=function zEb(){return Ss(this.c)+':'+OEb(this.b)};var DK=k4(RNd,'CrossHierarchyEdge',234);c3(687,1,lKd,BEb);_.Ld=function CEb(a,b){return AEb(this,kA(a,234),kA(b,234))};_.Fb=function DEb(a){return this===a};_.Md=function FEb(){return new jfb(this)};var CK=k4(RNd,'CrossHierarchyEdgeComparator',687);c3(279,131,{3:1,279:1,93:1,131:1});_.o=0;var MK=k4(UNd,'LGraphElement',279);c3(14,279,{3:1,14:1,279:1,93:1,131:1},PEb);_.Ib=function QEb(){return OEb(this)};var EK=k4(UNd,'LEdge',14);c3(31,279,{3:1,20:1,31:1,279:1,93:1,131:1},SEb);_.sc=function TEb(a){i5(this,a)};_.tc=function UEb(){return new ccb(this.b)};_.Ib=function VEb(){if(this.b.c.length==0){return 'G-unlayered'+vg(this.a)}else if(this.a.c.length==0){return 'G-layered'+vg(this.b)}return 'G[layerless'+vg(this.a)+', layers'+vg(this.b)+']'};var NK=k4(UNd,'LGraph',31);c3(591,1,{});_.Qe=function WEb(){return this.e.k};_.xe=function XEb(a){return nub(this.e,a)};_.Re=function YEb(){return this.e.n};_.Se=function ZEb(){return this.e.o};_.ye=function $Eb(a){return oub(this.e,a)};_.Te=function _Eb(a){this.e.k.a=a.a;this.e.k.b=a.b};_.Ue=function aFb(a){this.e.n.a=a.a;this.e.n.b=a.b};_.Ve=function bFb(a){this.e.o=a};var FK=k4(UNd,'LGraphAdapters/AbstractLShapeAdapter',591);c3(520,1,{741:1},cFb);_.We=function dFb(){var a,b;if(!this.b){this.b=Tr(this.a.b.c.length);for(b=new ccb(this.a.b);b.a0&&jGb(b.charCodeAt(c-1),YNd)){--c}if(g '+this.a+' '+Ss(this.c)};_.a=0;_.b=0;_.d=0;var tN=k4(cOd,'SplineSelfLoopRouter/LoopPadding',188);c3(1294,1,nMd,LTb);_.Mb=function MTb(a){return KTb(this,kA(a,188))};_.Fb=function NTb(a){return this===a};_.Nb=function OTb(a){return this.Mb(a)};_.a=0;_.c=0;var qN=k4(cOd,'SplineSelfLoopRouter/LoopPadding/EnclosingPredicate',1294);c3(1293,1,lKd,QTb);_.Ld=function RTb(a,b){return PTb(kA(a,188),kA(b,188))};_.Fb=function STb(a){return this===a};_.Md=function TTb(){return new jfb(this)};var rN=k4(cOd,'SplineSelfLoopRouter/LoopPadding/MarginComparator',1293);c3(415,1,nMd,UTb);_.Mb=function VTb(a){return kA(a,188).c==this.a};_.Fb=function WTb(a){return this===a};_.Nb=function XTb(a){return this.Mb(a)};var sN=k4(cOd,'SplineSelfLoopRouter/LoopPadding/PortSidePredicate',415);c3(414,1,{414:1},YTb);_.c=0;_.d=0;_.e=0;var vN=k4(cOd,'SplineSelfLoopRouter/SelfLoopEdge',414);c3(1292,1,lKd,$Tb);_.Ld=function _Tb(a,b){return ZTb(kA(a,414),kA(b,414))};_.Fb=function aUb(a){return this===a};_.Md=function bUb(){return new jfb(this)};var uN=k4(cOd,'SplineSelfLoopRouter/SelfLoopEdge/StepSizeComparator',1292);c3(1451,715,{},kUb);_.qe=function lUb(a){var b,c,d,e;this.c=a;switch(this.a.g){case 2:b=new Gbb;Sob(Pob(new Zob(null,new ekb(this.c.a.b,16)),new iVb),new kVb(this,b));orb(this,new mVb);wbb(b,new sUb);b.c=tz(NE,oJd,1,0,5,1);Sob(Pob(new Zob(null,new ekb(this.c.a.b,16)),new uUb),new wUb(b));orb(this,new yUb);wbb(b,new CUb);b.c=tz(NE,oJd,1,0,5,1);c=rjb(hob(Uob(new Zob(null,new ekb(this.c.a.b,16)),new EUb(this))),new GUb);Sob(new Zob(null,new ekb(this.c.a.a,16)),new IUb(c,b));orb(this,new KUb);wbb(b,new OUb);b.c=tz(NE,oJd,1,0,5,1);break;case 3:d=new Gbb;orb(this,new mUb);e=rjb(hob(Uob(new Zob(null,new ekb(this.c.a.b,16)),new qUb(this))),new QUb);Sob(Pob(new Zob(null,new ekb(this.c.a.b,16)),new $Ub),new aVb(e,d));orb(this,new cVb);wbb(d,new gVb);d.c=tz(NE,oJd,1,0,5,1);break;default:throw x2(new Muc);}};_.b=0;var VN=k4(oOd,'EdgeAwareScanlineConstraintCalculation',1451);c3(1452,1,nMd,mUb);_.Fb=function oUb(a){return this===a};_.Nb=function pUb(a){return this.Mb(a)};_.Mb=function nUb(a){return sA(kA(a,57).g,153)};var xN=k4(oOd,'EdgeAwareScanlineConstraintCalculation/lambda$0$Type',1452);c3(1453,1,{},qUb);_.oe=function rUb(a){return eUb(this.a,a)};var yN=k4(oOd,'EdgeAwareScanlineConstraintCalculation/lambda$1$Type',1453);c3(1464,1,{},sUb);_.td=function tUb(a){kA(a,340).fe()};var zN=k4(oOd,'EdgeAwareScanlineConstraintCalculation/lambda$10$Type',1464);c3(1465,1,SLd,uUb);_.Nb=function vUb(a){return sA(kA(a,57).g,8)};var AN=k4(oOd,'EdgeAwareScanlineConstraintCalculation/lambda$11$Type',1465);c3(1467,1,{},wUb);_.td=function xUb(a){fUb(this.a,a)};var BN=k4(oOd,'EdgeAwareScanlineConstraintCalculation/lambda$12$Type',1467);c3(1468,1,nMd,yUb);_.Fb=function AUb(a){return this===a};_.Nb=function BUb(a){return this.Mb(a)};_.Mb=function zUb(a){return sA(kA(a,57).g,8)};var CN=k4(oOd,'EdgeAwareScanlineConstraintCalculation/lambda$13$Type',1468);c3(1469,1,{},CUb);_.td=function DUb(a){kA(a,340).fe()};var DN=k4(oOd,'EdgeAwareScanlineConstraintCalculation/lambda$14$Type',1469);c3(1470,1,{},EUb);_.oe=function FUb(a){return gUb(this.a,a)};var EN=k4(oOd,'EdgeAwareScanlineConstraintCalculation/lambda$15$Type',1470);c3(1471,1,{},GUb);_.me=function HUb(){return 0};var FN=k4(oOd,'EdgeAwareScanlineConstraintCalculation/lambda$16$Type',1471);c3(1473,1,{},IUb);_.td=function JUb(a){hUb(this.a,this.b,a)};_.a=0;var GN=k4(oOd,'EdgeAwareScanlineConstraintCalculation/lambda$17$Type',1473);c3(1474,1,nMd,KUb);_.Fb=function MUb(a){return this===a};_.Nb=function NUb(a){return this.Mb(a)};_.Mb=function LUb(a){return true};var HN=k4(oOd,'EdgeAwareScanlineConstraintCalculation/lambda$18$Type',1474);c3(1475,1,{},OUb);_.td=function PUb(a){kA(a,340).fe()};var IN=k4(oOd,'EdgeAwareScanlineConstraintCalculation/lambda$19$Type',1475);c3(1454,1,{},QUb);_.me=function RUb(){return 0};var JN=k4(oOd,'EdgeAwareScanlineConstraintCalculation/lambda$2$Type',1454);c3(1456,1,ULd,SUb);_.fe=function TUb(){dUb(this.b,this.a,-1)};_.a=0;var KN=k4(oOd,'EdgeAwareScanlineConstraintCalculation/lambda$20$Type',1456);c3(1461,1,ULd,UUb);_.fe=function VUb(){dUb(this.a,this.b,-1)};_.b=0;var LN=k4(oOd,'EdgeAwareScanlineConstraintCalculation/lambda$21$Type',1461);c3(1466,1,ULd,WUb);_.fe=function XUb(){dUb(this.b,this.a,-1)};_.a=0;var MN=k4(oOd,'EdgeAwareScanlineConstraintCalculation/lambda$22$Type',1466);c3(1472,1,ULd,YUb);_.fe=function ZUb(){cUb(this.a,this.b,-1)};_.b=0;var NN=k4(oOd,'EdgeAwareScanlineConstraintCalculation/lambda$23$Type',1472);c3(1455,1,SLd,$Ub);_.Nb=function _Ub(a){return sA(kA(a,57).g,8)};var ON=k4(oOd,'EdgeAwareScanlineConstraintCalculation/lambda$3$Type',1455);c3(1457,1,{},aVb);_.td=function bVb(a){iUb(this.a,this.b,a)};_.a=0;var PN=k4(oOd,'EdgeAwareScanlineConstraintCalculation/lambda$4$Type',1457);c3(1458,1,nMd,cVb);_.Fb=function eVb(a){return this===a};_.Nb=function fVb(a){return this.Mb(a)};_.Mb=function dVb(a){return true};var QN=k4(oOd,'EdgeAwareScanlineConstraintCalculation/lambda$5$Type',1458);c3(1459,1,{},gVb);_.td=function hVb(a){kA(a,340).fe()};var RN=k4(oOd,'EdgeAwareScanlineConstraintCalculation/lambda$6$Type',1459);c3(1460,1,SLd,iVb);_.Nb=function jVb(a){return sA(kA(a,57).g,153)};var SN=k4(oOd,'EdgeAwareScanlineConstraintCalculation/lambda$7$Type',1460);c3(1462,1,{},kVb);_.td=function lVb(a){jUb(this.a,this.b,a)};var TN=k4(oOd,'EdgeAwareScanlineConstraintCalculation/lambda$8$Type',1462);c3(1463,1,nMd,mVb);_.Fb=function oVb(a){return this===a};_.Nb=function pVb(a){return this.Mb(a)};_.Mb=function nVb(a){return sA(kA(a,57).g,153)};var UN=k4(oOd,'EdgeAwareScanlineConstraintCalculation/lambda$9$Type',1463);c3(1232,1,TNd,tVb);_.Pe=function yVb(a,b){sVb(this,kA(a,31),b)};var qVb;var ZN=k4(oOd,'HorizontalGraphCompactor',1232);c3(1233,1,{},zVb);_.se=function AVb(a,b){var c,d,e;if(yA(nub(this.a.a,(J6b(),a5b)))===yA((DBc(),BBc))){if(sA(a.g,153)&&sA(b.g,8)||sA(b.g,153)&&sA(a.g,8)){return Vpb(mA(nub(this.a.a,e5b)))?0:10}}if(wVb(a,b)){return 0}c=uVb(a);d=uVb(b);if(!!c&&c.j==(RGb(),MGb)||!!d&&d.j==(RGb(),MGb)){return 0}e=kA(nub(this.a.a,(E2b(),v2b)),266);return h8b(e,c?c.j:(RGb(),OGb),d?d.j:(RGb(),OGb))};_.te=function BVb(a,b){var c,d,e;if(wVb(a,b)){return 1}c=uVb(a);d=uVb(b);e=kA(nub(this.a.a,(E2b(),v2b)),266);return k8b(e,c?c.j:(RGb(),OGb),d?d.j:(RGb(),OGb))};var WN=k4(oOd,'HorizontalGraphCompactor/1',1233);c3(1234,1,{},CVb);_.re=function DVb(a,b){return rVb(),a.a.i==0};var XN=k4(oOd,'HorizontalGraphCompactor/lambda$0$Type',1234);c3(1235,1,{},EVb);_.re=function FVb(a,b){return xVb(this.a,a,b)};var YN=k4(oOd,'HorizontalGraphCompactor/lambda$1$Type',1235);c3(1422,1,{},ZVb);var GVb,HVb;var xO=k4(oOd,'LGraphToCGraphTransformer',1422);c3(1430,1,SLd,cWb);_.Nb=function dWb(a){return a!=null};var $N=k4(oOd,'LGraphToCGraphTransformer/0methodref$nonNull$Type',1430);c3(1423,1,FJd,eWb);_.Kb=function fWb(a){return IVb(),f3(nub(kA(kA(a,57).g,8),(E2b(),i2b)))};var _N=k4(oOd,'LGraphToCGraphTransformer/lambda$0$Type',1423);c3(1424,1,FJd,gWb);_.Kb=function hWb(a){return IVb(),eXb(kA(kA(a,57).g,153))};var aO=k4(oOd,'LGraphToCGraphTransformer/lambda$1$Type',1424);c3(1435,1,SLd,iWb);_.Nb=function jWb(a){return IVb(),sA(kA(a,57).g,153)};var bO=k4(oOd,'LGraphToCGraphTransformer/lambda$10$Type',1435);c3(1439,1,{},kWb);_.td=function lWb(a){var b,c;IVb();b=a.d.c-a.e.c;c=kA(a.g,153);wbb(c.b,new GWb(b));wbb(c.c,new IWb(b));i5(c.i,new KWb(b))};var cO=k4(oOd,'LGraphToCGraphTransformer/lambda$11$Type',1439);c3(1440,1,FJd,mWb);_.Kb=function nWb(a){return IVb(),new Zob(null,new fkb(kl(zGb(kA(a,8)))))};var dO=k4(oOd,'LGraphToCGraphTransformer/lambda$12$Type',1440);c3(1441,1,SLd,oWb);_.Nb=function pWb(a){return IVb(),JEb(kA(a,14))};var eO=k4(oOd,'LGraphToCGraphTransformer/lambda$13$Type',1441);c3(1442,1,{},qWb);_.td=function rWb(a){RVb(this.a,a)};var fO=k4(oOd,'LGraphToCGraphTransformer/lambda$14$Type',1442);c3(1443,1,FJd,sWb);_.Kb=function tWb(a){return IVb(),new Zob(null,new ekb(kA(a,26).a,16))};var gO=k4(oOd,'LGraphToCGraphTransformer/lambda$15$Type',1443);c3(1444,1,FJd,uWb);_.Kb=function vWb(a){return IVb(),new Zob(null,new fkb(kl(zGb(kA(a,8)))))};var hO=k4(oOd,'LGraphToCGraphTransformer/lambda$16$Type',1444);c3(1445,1,FJd,wWb);_.Kb=function xWb(a){return IVb(),kA(nub(kA(a,14),(E2b(),z2b)),15)};var iO=k4(oOd,'LGraphToCGraphTransformer/lambda$17$Type',1445);c3(1446,1,SLd,yWb);_.Nb=function zWb(a){return IVb(),!!kA(a,15)&&!kA(a,15).Wb()};var jO=k4(oOd,'LGraphToCGraphTransformer/lambda$18$Type',1446);c3(1447,1,{},AWb);_.td=function BWb(a){KVb(this.a,kA(a,15))};var kO=k4(oOd,'LGraphToCGraphTransformer/lambda$19$Type',1447);c3(1426,1,{},CWb);_.td=function DWb(a){SVb(this.a,a)};var lO=k4(oOd,'LGraphToCGraphTransformer/lambda$2$Type',1426);c3(1425,1,{},EWb);_.td=function FWb(a){TVb(this.a,this.b,a)};var mO=k4(oOd,'LGraphToCGraphTransformer/lambda$20$Type',1425);c3(1436,1,{},GWb);_.td=function HWb(a){$Vb(this.a,a)};_.a=0;var nO=k4(oOd,'LGraphToCGraphTransformer/lambda$21$Type',1436);c3(1437,1,{},IWb);_.td=function JWb(a){_Vb(this.a,a)};_.a=0;var oO=k4(oOd,'LGraphToCGraphTransformer/lambda$22$Type',1437);c3(1438,1,{},KWb);_.td=function LWb(a){aWb(this.a,a)};_.a=0;var pO=k4(oOd,'LGraphToCGraphTransformer/lambda$23$Type',1438);c3(1427,1,FJd,MWb);_.Kb=function NWb(a){return IVb(),new Zob(null,new ekb(kA(a,26).a,16))};var qO=k4(oOd,'LGraphToCGraphTransformer/lambda$3$Type',1427);c3(1428,1,FJd,OWb);_.Kb=function PWb(a){return IVb(),new Zob(null,new fkb(kl(zGb(kA(a,8)))))};var rO=k4(oOd,'LGraphToCGraphTransformer/lambda$4$Type',1428);c3(1429,1,FJd,QWb);_.Kb=function RWb(a){return IVb(),kA(nub(kA(a,14),(E2b(),z2b)),15)};var sO=k4(oOd,'LGraphToCGraphTransformer/lambda$5$Type',1429);c3(1431,1,{},SWb);_.td=function TWb(a){bWb(this.a,a)};var tO=k4(oOd,'LGraphToCGraphTransformer/lambda$6$Type',1431);c3(1432,1,{},UWb);_.td=function VWb(a){UVb(this.a,this.b,a)};var uO=k4(oOd,'LGraphToCGraphTransformer/lambda$7$Type',1432);c3(1433,1,SLd,WWb);_.Nb=function XWb(a){return IVb(),sA(kA(a,57).g,8)};var vO=k4(oOd,'LGraphToCGraphTransformer/lambda$8$Type',1433);c3(1434,1,{},YWb);_.td=function ZWb(a){var b;IVb();b=kA(a.g,8);b.k.a=a.d.c+b.d.b};var wO=k4(oOd,'LGraphToCGraphTransformer/lambda$9$Type',1434);c3(1421,1,{},bXb);_.pe=function cXb(a){var b,c,d,e,f;this.a=a;this.d=new NZb;this.c=tz(aP,oJd,113,this.a.a.a.c.length,0,1);this.b=0;for(c=new ccb(this.a.a.a);c.ae-g?0:e-g;m<=x5(b.f-1,e+g);m++){p=r/(m+1);q=0;k=1;f=new Gbb;s=pLd;l=0;h=0;o=i[0];if(m==0){s=r;h=(b.g==null&&(b.g=ZYb(b,new iZb)),Vpb(b.g))}else{while(k=p){tbb(f,d5(k));s=$wnd.Math.max(s,t[k-1]-l);h+=o;q+=t[k-1]-q;l=t[k-1];o=i[k]}o=$wnd.Math.max(o,i[k]);++k}h+=o}n=$wnd.Math.min(1/s,1/b.b/h);if(n>d){d=n;c=f}}return c};_.tf=function tZb(){return false};var VO=k4(sOd,'MSDCutIndexHeuristic',714);c3(1279,1,TNd,yZb);_.Pe=function zZb(a,b){vZb(kA(a,31),b)};var WO=k4(sOd,'SingleEdgeGraphWrapper',1279);c3(189,1,{189:1},BZb);_.Ib=function CZb(){return 'NEdge[id='+this.b+' w='+this.g+' d='+this.a+']'};_.a=1;_.b=0;_.c=0;_.f=false;_.g=0;var YO=k4(tOd,'NEdge',189);c3(162,1,{},IZb);var XO=k4(tOd,'NEdge/NEdgeBuilder',162);c3(592,1,{},NZb);var ZO=k4(tOd,'NGraph',592);c3(113,1,{113:1},PZb);_.c=-1;_.d=0;_.e=0;_.i=-1;_.j=false;var aP=k4(tOd,'NNode',113);c3(717,1,ELd,SZb);_.sc=function ZZb(a){i5(this,a)};_.uc=function e$b(){return this.xc()};_.jd=function j$b(a){Vib(this,a)};_.wc=function k$b(){return new ekb(this,16)};_.xc=function l$b(){return new Zob(null,this.wc())};_.bd=function TZb(a,b){++this.b;sbb(this.a,a,b)};_.nc=function UZb(a){return QZb(this,a)};_.oc=function VZb(a){++this.b;return vbb(this.a,a)};_.Pb=function WZb(){++this.b;this.a.c=tz(NE,oJd,1,0,5,1)};_.pc=function XZb(a){return ybb(this.a,a,0)!=-1};_.qc=function YZb(a){return sg(this.a,a)};_.cd=function $Zb(a){return xbb(this.a,a)};_.dd=function _Zb(a){return ybb(this.a,a,0)};_.Wb=function a$b(){return this.a.c.length==0};_.tc=function b$b(){return po(new ccb(this.a))};_.ed=function c$b(){throw x2(new U6)};_.fd=function d$b(a){throw x2(new U6)};_.gd=function f$b(a){++this.b;return zbb(this.a,a)};_.vc=function g$b(a){return RZb(this,a)};_.hd=function h$b(a,b){++this.b;return Cbb(this.a,a,b)};_._b=function i$b(){return this.a.c.length};_.kd=function m$b(a,b){return new A9(this.a,a,b)};_.yc=function n$b(){return Ebb(this.a)};_.zc=function o$b(a){return Fbb(this.a,a)};_.b=0;var $O=k4(tOd,'NNode/ChangeAwareArrayList',717);c3(251,1,{},r$b);var _O=k4(tOd,'NNode/NNodeBuilder',251);c3(1482,1,{},M$b);_.a=false;_.f=jJd;_.j=0;var bP=k4(tOd,'NetworkSimplex',1482);c3(276,23,{3:1,34:1,23:1,276:1},U$b);var O$b,P$b,Q$b,R$b,S$b;var cP=l4(uOd,'CenterEdgeLabelPlacementStrategy',276,zE,W$b,V$b);var X$b;c3(386,23,{3:1,34:1,23:1,386:1},a_b);var Z$b,$$b;var dP=l4(uOd,'ConstraintCalculationStrategy',386,zE,c_b,b_b);var d_b;c3(290,23,{3:1,34:1,23:1,290:1},m_b);var f_b,g_b,h_b,i_b,j_b,k_b;var eP=l4(uOd,'ContentAlignment',290,zE,o_b,n_b);var p_b;c3(317,23,{3:1,34:1,23:1,317:1,285:1,286:1},v_b);_.hf=function x_b(){return u_b(this)};_.uf=function w_b(){return u_b(this)};var r_b,s_b;var fP=l4(uOd,'CrossingMinimizationStrategy',317,zE,z_b,y_b);var A_b;c3(319,23,{3:1,34:1,23:1,319:1},G_b);var C_b,D_b,E_b;var gP=l4(uOd,'CuttingStrategy',319,zE,I_b,H_b);var J_b;c3(384,23,{3:1,34:1,23:1,384:1,285:1,286:1},Q_b);_.hf=function S_b(){return P_b(this)};_.uf=function R_b(){return P_b(this)};var L_b,M_b,N_b;var hP=l4(uOd,'CycleBreakingStrategy',384,zE,U_b,T_b);var V_b;c3(406,23,{3:1,34:1,23:1,406:1},__b);var X_b,Y_b,Z_b;var iP=l4(uOd,'EdgeConstraint',406,zE,b0b,a0b);var c0b;c3(241,23,{3:1,34:1,23:1,241:1},m0b);var e0b,f0b,g0b,h0b,i0b,j0b;var jP=l4(uOd,'EdgeLabelSideSelection',241,zE,o0b,n0b);var p0b;c3(255,23,{3:1,34:1,23:1,255:1},y0b);var r0b,s0b,t0b,u0b,v0b,w0b;var kP=l4(uOd,'FixedAlignment',255,zE,A0b,z0b);var B0b;c3(256,23,{3:1,34:1,23:1,256:1},K0b);var D0b,E0b,F0b,G0b,H0b,I0b;var lP=l4(uOd,'GraphCompactionStrategy',256,zE,M0b,L0b);var N0b;c3(233,23,{3:1,34:1,23:1,233:1},$0b);var P0b,Q0b,R0b,S0b,T0b,U0b,V0b,W0b,X0b,Y0b;var mP=l4(uOd,'GraphProperties',233,zE,a1b,_0b);var b1b;c3(318,23,{3:1,34:1,23:1,318:1},h1b);var d1b,e1b,f1b;var nP=l4(uOd,'GreedySwitchType',318,zE,j1b,i1b);var k1b;c3(280,23,{3:1,34:1,23:1,280:1},q1b);var m1b,n1b,o1b;var oP=l4(uOd,'InLayerConstraint',280,zE,s1b,r1b);var t1b;c3(383,23,{3:1,34:1,23:1,383:1},y1b);var v1b,w1b;var pP=l4(uOd,'InteractiveReferencePoint',383,zE,A1b,z1b);var B1b;var D1b,E1b,F1b,G1b,H1b,I1b,J1b,K1b,L1b,M1b,N1b,O1b,P1b,Q1b,R1b,S1b,T1b,U1b,V1b,W1b,X1b,Y1b,Z1b,$1b,_1b,a2b,b2b,c2b,d2b,e2b,f2b,g2b,h2b,i2b,j2b,k2b,l2b,m2b,n2b,o2b,p2b,q2b,r2b,s2b,t2b,u2b,v2b,w2b,x2b,y2b,z2b,A2b,B2b,C2b,D2b;c3(178,23,{3:1,34:1,23:1,178:1},L2b);var F2b,G2b,H2b,I2b,J2b;var qP=l4(uOd,'LayerConstraint',178,zE,N2b,M2b);var O2b;c3(747,1,uMd,G4b);_.ue=function H4b(a){qwc(a,new ixc(vxc(yxc(xxc(zxc(rxc(sxc(wxc(txc(uxc(new Axc,EOd),''),'Content Alignment'),'Specifies how the content of compound nodes is to be aligned, e.g. top-left.'),W2b),(Uxc(),Pxc)),eP),fgb((Gxc(),Exc))),xz(pz(UE,1),cKd,2,6,['de.cau.cs.kieler.klay.layered.contentAlignment']))));qwc(a,new ixc(vxc(yxc(xxc(zxc(rxc(sxc(wxc(txc(uxc(new Axc,FOd),''),'Feedback Edges'),'Whether feedback edges should be highlighted by routing around the nodes.'),(B3(),B3(),false)),Mxc),tE),fgb(Exc)),xz(pz(UE,1),cKd,2,6,['de.cau.cs.kieler.klay.layered.feedBackEdges']))));qwc(a,new ixc(vxc(yxc(xxc(zxc(rxc(sxc(wxc(txc(uxc(new Axc,GOd),''),'Interactive Reference Point'),'Determines which point of a node is considered by interactive layout phases.'),u3b),Oxc),pP),fgb(Exc)),xz(pz(UE,1),cKd,2,6,['de.cau.cs.kieler.klay.layered.interactiveReferencePoint']))));lwc(a,GOd,MOd,w3b);lwc(a,GOd,VOd,v3b);qwc(a,new ixc(vxc(yxc(xxc(zxc(rxc(sxc(wxc(txc(uxc(new Axc,HOd),''),'Merge Edges'),'Edges that have no ports are merged so they touch the connected nodes at the same points. When this option is disabled, one port is created for each edge directly connected to a node. When it is enabled, all such incoming edges share an input port, and all outgoing edges share an output port.'),(null,false)),Mxc),tE),fgb(Exc)),xz(pz(UE,1),cKd,2,6,['de.cau.cs.kieler.klay.layered.mergeEdges']))));qwc(a,new ixc(vxc(yxc(xxc(zxc(rxc(sxc(wxc(txc(uxc(new Axc,IOd),''),'Merge Hierarchy-Crossing Edges'),'If hierarchical layout is active, hierarchy-crossing edges use as few hierarchical ports as possible. They are broken by the algorithm, with hierarchical ports inserted as required. Usually, one such port is created for each edge at each hierarchy crossing point. With this option set to true, we try to create as few hierarchical ports as possible in the process. In particular, all edges that form a hyperedge can share a port.'),(null,true)),Mxc),tE),fgb(Exc)),xz(pz(UE,1),cKd,2,6,['de.cau.cs.kieler.klay.layered.mergeHierarchyEdges']))));qwc(a,new ixc(vxc(yxc(xxc(zxc(rxc(sxc(wxc(txc(uxc(new Axc,JOd),''),'Thoroughness'),'How much effort should be spent to produce a nice layout.'),d5(7)),Qxc),GE),fgb(Exc)),xz(pz(UE,1),cKd,2,6,['de.cau.cs.kieler.klay.layered.thoroughness']))));qwc(a,new ixc(vxc(yxc(xxc(zxc(rxc(sxc(wxc(txc(uxc(new Axc,KOd),''),'Add Unnecessary Bendpoints'),'Adds bend points even if an edge does not change direction. If true, each long edge dummy will contribute a bend point to its edges and hierarchy-crossing edges will always get a bend point where they cross hierarchy boundaries. By default, bend points are only added where an edge changes direction.'),(null,false)),Mxc),tE),fgb(Exc)),xz(pz(UE,1),cKd,2,6,['de.cau.cs.kieler.klay.layered.unnecessaryBendpoints']))));qwc(a,new ixc(vxc(yxc(xxc(zxc(rxc(sxc(wxc(txc(uxc(new Axc,LOd),''),'North or South Port'),'Specifies that this port can either be placed on the north side of a node or on the south side (if port constraints permit)'),(null,false)),Mxc),tE),fgb(Fxc)),xz(pz(UE,1),cKd,2,6,['de.cau.cs.kieler.klay.layered.northOrSouthPort']))));qwc(a,new ixc(vxc(yxc(xxc(zxc(rxc(sxc(wxc(txc(uxc(new Axc,MOd),'cycleBreaking'),'Cycle Breaking Strategy'),'Strategy for cycle breaking. Cycle breaking looks for cycles in the graph and determines which edges to reverse to break the cycles. Reversed edges will end up pointing to the opposite direction of regular edges (that is, reversed edges will point left if edges usually point right).'),d3b),Oxc),hP),fgb(Exc)),xz(pz(UE,1),cKd,2,6,['de.cau.cs.kieler.klay.layered.cycleBreaking']))));qwc(a,new ixc(vxc(yxc(xxc(zxc(rxc(sxc(wxc(txc(uxc(new Axc,NOd),GPd),'Node Layering Strategy'),'Strategy for node layering.'),J3b),Oxc),uP),fgb(Exc)),xz(pz(UE,1),cKd,2,6,['de.cau.cs.kieler.klay.layered.nodeLayering']))));qwc(a,new ixc(vxc(yxc(xxc(zxc(rxc(sxc(wxc(txc(uxc(new Axc,OOd),GPd),'Layer Constraint'),'Determines a constraint on the placement of the node regarding the layering.'),A3b),Oxc),qP),fgb(Dxc)),xz(pz(UE,1),cKd,2,6,['de.cau.cs.kieler.klay.layered.layerConstraint']))));qwc(a,new ixc(vxc(yxc(xxc(zxc(rxc(sxc(wxc(txc(uxc(new Axc,POd),GPd),'Wide Nodes on Multiple Layers'),'Strategy to distribute wide nodes over multiple layers.'),L3b),Oxc),CP),fgb(Exc)),xz(pz(UE,1),cKd,2,6,['de.cau.cs.kieler.klay.layered.wideNodesOnMultipleLayers']))));qwc(a,new ixc(vxc(yxc(xxc(zxc(rxc(sxc(wxc(txc(uxc(new Axc,QOd),HPd),'Upper Bound On Width [MinWidth Layerer]'),"Defines a loose upper bound on the width of the MinWidth layerer. If set to '-1' multiple values are tested and the best result is selected."),d5(4)),Qxc),GE),fgb(Exc)),xz(pz(UE,1),cKd,2,6,['de.cau.cs.kieler.klay.layered.minWidthUpperBoundOnWidth']))));lwc(a,QOd,NOd,C3b);qwc(a,new ixc(vxc(yxc(xxc(zxc(rxc(sxc(wxc(txc(uxc(new Axc,ROd),HPd),'Upper Layer Estimation Scaling Factor [MinWidth Layerer]'),"Multiplied with Upper Bound On Width for defining an upper bound on the width of layers which haven't been determined yet, but whose maximum width had been (roughly) estimated by the MinWidth algorithm. Compensates for too high estimations. If set to '-1' multiple values are tested and the best result is selected."),d5(2)),Qxc),GE),fgb(Exc)),xz(pz(UE,1),cKd,2,6,['de.cau.cs.kieler.klay.layered.minWidthUpperLayerEstimationScalingFactor']))));lwc(a,ROd,NOd,E3b);qwc(a,new ixc(vxc(yxc(xxc(zxc(rxc(sxc(wxc(txc(uxc(new Axc,SOd),IPd),'Node Promotion Strategy'),'Reduces number of dummy nodes after layering phase (if possible).'),H3b),Oxc),xP),fgb(Exc)),xz(pz(UE,1),cKd,2,6,['de.cau.cs.kieler.klay.layered.nodePromotion']))));qwc(a,new ixc(vxc(yxc(xxc(zxc(rxc(sxc(wxc(txc(uxc(new Axc,TOd),IPd),'Max Node Promotion Iterations'),'Limits the number of iterations for node promotion.'),d5(0)),Qxc),GE),fgb(Exc)),xz(pz(UE,1),cKd,2,6,['de.cau.cs.kieler.klay.layered.nodePromotionBoundary']))));lwc(a,TOd,SOd,null);qwc(a,new ixc(yxc(xxc(zxc(rxc(sxc(wxc(txc(uxc(new Axc,UOd),'layering.coffmanGraham'),'Layer Bound'),'The maximum number of nodes allowed per layer.'),d5(jJd)),Qxc),GE),fgb(Exc))));lwc(a,UOd,NOd,y3b);qwc(a,new ixc(vxc(yxc(xxc(zxc(rxc(sxc(wxc(txc(uxc(new Axc,VOd),JPd),'Crossing Minimization Strategy'),'Strategy for crossing minimization.'),b3b),Oxc),fP),fgb(Exc)),xz(pz(UE,1),cKd,2,6,['de.cau.cs.kieler.klay.layered.crossMin']))));qwc(a,new ixc(yxc(xxc(zxc(rxc(sxc(wxc(txc(uxc(new Axc,WOd),JPd),'Hierarchical Sweepiness'),'How likely it is to use cross-hierarchy (1) vs bottom-up (-1).'),0.1),Nxc),yE),fgb(Exc))));qwc(a,new ixc(yxc(xxc(zxc(rxc(sxc(wxc(txc(uxc(new Axc,XOd),JPd),'Semi-Interactive Crossing Minimization'),"Preserves the order of nodes within a layer but still minimizes crossings between edges connecting long edge dummies. Derives the desired order from positions specified by the 'org.eclipse.elk.position' layout option. Requires a crossing minimization strategy that is able to process 'in-layer' constraints."),(null,false)),Mxc),tE),fgb(Exc))));qwc(a,new ixc(yxc(xxc(zxc(rxc(sxc(wxc(txc(uxc(new Axc,YOd),KPd),'Greedy Switch Activation Threshold'),"By default it is decided automatically if the greedy switch is activated or not. The decision is based on whether the size of the input graph (without dummy nodes) is smaller than the value of this option. A '0' enforces the activation."),d5(40)),Qxc),GE),fgb(Exc))));qwc(a,new ixc(vxc(yxc(xxc(zxc(rxc(sxc(wxc(txc(uxc(new Axc,ZOd),KPd),'Greedy Switch Crossing Minimization'),'Greedy Switch strategy for crossing minimization. The greedy switch heuristic is executed after the regular layer sweep as a post-processor.'),Z2b),Oxc),nP),fgb(Exc)),xz(pz(UE,1),cKd,2,6,['de.cau.cs.kieler.klay.layered.greedySwitch']))));qwc(a,new ixc(vxc(yxc(xxc(zxc(rxc(sxc(wxc(txc(uxc(new Axc,$Od),LPd),'Node Placement Strategy'),'Strategy for node placement.'),b4b),Oxc),wP),fgb(Exc)),xz(pz(UE,1),cKd,2,6,['de.cau.cs.kieler.klay.layered.nodePlace']))));qwc(a,new ixc(yxc(xxc(zxc(sxc(wxc(txc(uxc(new Axc,_Od),LPd),'Favor Straight Edges Over Balancing'),"Favor straight edges over a balanced node placement. The default behavior is determined automatically based on the used 'edgeRouting'. For an orthogonal style it is set to true, for all other styles to false."),Mxc),tE),fgb(Exc))));lwc(a,_Od,$Od,V3b);qwc(a,new ixc(vxc(yxc(xxc(zxc(rxc(sxc(wxc(txc(uxc(new Axc,aPd),MPd),'BK Edge Straightening'),"Specifies whether the Brandes Koepf node placer tries to increase the number of straight edges at the expense of diagram size. There is a subtle difference to the 'favorStraightEdges' option, which decides whether a balanced placement of the nodes is desired, or not. In bk terms this means combining the four alignments into a single balanced one, or not. This option on the other hand tries to straighten additional edges during the creation of each of the four alignments."),P3b),Oxc),wR),fgb(Exc)),xz(pz(UE,1),cKd,2,6,['de.cau.cs.kieler.klay.layered.nodeplace.compactionStrategy']))));lwc(a,aPd,$Od,Q3b);qwc(a,new ixc(vxc(yxc(xxc(zxc(rxc(sxc(wxc(txc(uxc(new Axc,bPd),MPd),'BK Fixed Alignment'),'Tells the BK node placer to use a certain alignment (out of its four) instead of the one producing the smallest height, or the combination of all four.'),S3b),Oxc),kP),fgb(Exc)),xz(pz(UE,1),cKd,2,6,['de.cau.cs.kieler.klay.layered.fixedAlignment']))));lwc(a,bPd,$Od,T3b);qwc(a,new ixc(vxc(yxc(xxc(zxc(rxc(sxc(wxc(txc(uxc(new Axc,cPd),'nodePlacement.linearSegments'),'Linear Segments Deflection Dampening'),'Dampens the movement of nodes to keep the diagram from getting too large.'),0.3),Nxc),yE),fgb(Exc)),xz(pz(UE,1),cKd,2,6,['de.cau.cs.kieler.klay.layered.linearSegmentsDeflectionDampening']))));lwc(a,cPd,$Od,X3b);qwc(a,new ixc(yxc(xxc(zxc(sxc(wxc(txc(uxc(new Axc,dPd),'nodePlacement.networkSimplex'),'Node Flexibility'),"Aims at shorter and straighter edges. Two configurations are possible: (a) allow ports to move freely on the side they are assigned to (the order is always defined beforehand), (b) additionally allow to enlarge a node wherever it helps. If this option is not configured for a node, the 'nodeFlexibility.default' value is used, which is specified for the node's parent."),Oxc),vP),fgb(Dxc))));lwc(a,dPd,$Od,_3b);qwc(a,new ixc(yxc(xxc(zxc(rxc(sxc(wxc(txc(uxc(new Axc,ePd),'nodePlacement.networkSimplex.nodeFlexibility'),'Node Flexibility Default'),"Default value of the 'nodeFlexibility' option for the children of a hierarchical node."),$3b),Oxc),vP),fgb(Exc))));qwc(a,new ixc(vxc(yxc(xxc(zxc(rxc(sxc(wxc(txc(uxc(new Axc,fPd),NPd),'Spline Self-Loop Placement'),null),j3b),Oxc),zP),fgb(Exc)),xz(pz(UE,1),cKd,2,6,['de.cau.cs.kieler.klay.layered.splines.selfLoopPlacement']))));lwc(a,fPd,OPd,k3b);qwc(a,new ixc(yxc(xxc(zxc(rxc(sxc(wxc(txc(uxc(new Axc,gPd),NPd),'Sloppy Spline Routing'),'Use less spline control points at the start and end of an edge. Might lead to crossings edge/node overlap.'),(null,true)),Mxc),tE),fgb(Exc))));lwc(a,gPd,OPd,o3b);qwc(a,new ixc(yxc(xxc(zxc(rxc(sxc(wxc(txc(uxc(new Axc,hPd),NPd),'Sloppy Spline Layer Spacing Factor'),'Spacing factor for routing area between layers when using sloppy spline routing.'),0.4),Nxc),yE),fgb(Exc))));lwc(a,hPd,OPd,m3b);lwc(a,hPd,gPd,(null,true));qwc(a,new ixc(yxc(xxc(zxc(rxc(sxc(wxc(txc(uxc(new Axc,iPd),PPd),'Edge Node Between Layers Spacing'),"The spacing to be preserved between nodes and edges that are routed next to the node's layer. For the spacing between nodes and edges that cross the node's layer 'spacing.edgeNode' is used."),10),Nxc),yE),fgb(Exc))));qwc(a,new ixc(yxc(xxc(zxc(rxc(sxc(wxc(txc(uxc(new Axc,jPd),PPd),'Edge Edge Between Layer Spacing'),"Spacing to be preserved between pairs of edges that are routed between the same pair of layers. Note that 'spacing.edgeEdge' is used for the spacing between pairs of edges crossing the same layer."),10),Nxc),yE),fgb(Exc))));qwc(a,new ixc(yxc(xxc(zxc(rxc(sxc(wxc(txc(uxc(new Axc,kPd),PPd),'Node Node Between Layers Spacing'),"The spacing to be preserved between any pair of nodes of two adjacent layers. Note that 'spacing.nodeNode' is used for the spacing between nodes within the layer itself."),20),Nxc),yE),fgb(Exc))));qwc(a,new ixc(yxc(xxc(zxc(rxc(sxc(wxc(txc(uxc(new Axc,lPd),QPd),'Direction Priority'),'Defines how important it is to have a certain edge point into the direction of the overall layout. This option is evaluated during the cycle breaking phase.'),d5(0)),Qxc),GE),fgb(Bxc))));qwc(a,new ixc(yxc(xxc(zxc(rxc(sxc(wxc(txc(uxc(new Axc,mPd),QPd),'Shortness Priority'),'Defines how important it is to keep an edge as short as possible. This option is evaluated during the layering phase.'),d5(0)),Qxc),GE),fgb(Bxc))));qwc(a,new ixc(yxc(xxc(zxc(rxc(sxc(wxc(txc(uxc(new Axc,nPd),QPd),'Straightness Priority'),'Defines how important it is to keep an edge straight, i.e. aligned with one of the two axes. This option is evaluated during node placement.'),d5(0)),Qxc),GE),fgb(Bxc))));qwc(a,new ixc(vxc(yxc(xxc(zxc(rxc(sxc(wxc(txc(uxc(new Axc,oPd),'compaction'),IMd),'Tries to further compact components (disconnected sub-graphs).'),(null,false)),Mxc),tE),fgb(Exc)),xz(pz(UE,1),cKd,2,6,['de.cau.cs.kieler.klay.layered.components.compact']))));lwc(a,oPd,uNd,(null,true));qwc(a,new ixc(vxc(yxc(xxc(zxc(rxc(sxc(wxc(txc(uxc(new Axc,pPd),RPd),'Post Compaction Strategy'),SPd),U2b),Oxc),lP),fgb(Exc)),xz(pz(UE,1),cKd,2,6,['de.cau.cs.kieler.klay.layered.postCompaction']))));qwc(a,new ixc(vxc(yxc(xxc(zxc(rxc(sxc(wxc(txc(uxc(new Axc,qPd),RPd),'Post Compaction Constraint Calculation'),SPd),S2b),Oxc),dP),fgb(Exc)),xz(pz(UE,1),cKd,2,6,['de.cau.cs.kieler.klay.layered.postCompaction.constraints']))));qwc(a,new ixc(vxc(yxc(xxc(zxc(rxc(sxc(wxc(txc(uxc(new Axc,rPd),TPd),'High Degree Node Treatment'),'Makes room around high degree nodes to place leafs and trees.'),(null,false)),Mxc),tE),fgb(Exc)),xz(pz(UE,1),cKd,2,6,['de.cau.cs.kieler.klay.layered.highDegreeNode.treatment']))));qwc(a,new ixc(vxc(yxc(xxc(zxc(rxc(sxc(wxc(txc(uxc(new Axc,sPd),TPd),'High Degree Node Threshold'),'Whether a node is considered to have a high degree.'),d5(16)),Qxc),GE),fgb(Exc)),xz(pz(UE,1),cKd,2,6,['de.cau.cs.kieler.klay.layered.highDegreeNode.threshold']))));lwc(a,sPd,rPd,(null,true));qwc(a,new ixc(vxc(yxc(xxc(zxc(rxc(sxc(wxc(txc(uxc(new Axc,tPd),TPd),'High Degree Node Maximum Tree Height'),'Maximum height of a subtree connected to a high degree node to be moved to separate layers.'),d5(5)),Qxc),GE),fgb(Exc)),xz(pz(UE,1),cKd,2,6,['de.cau.cs.kieler.klay.layered.highDegreeNode.treeHeight']))));lwc(a,tPd,rPd,(null,true));qwc(a,new ixc(yxc(xxc(zxc(rxc(sxc(wxc(txc(uxc(new Axc,uPd),UPd),'Graph Wrapping Strategy'),"For certain graphs and certain prescribed drawing areas it may be desirable to split the laid out graph into chunks that are placed side by side. The edges that connect different chunks are 'wrapped' around from the end of one chunk to the start of the other chunk. The points between the chunks are referred to as 'cuts'."),E4b),Oxc),DP),fgb(Exc))));qwc(a,new ixc(yxc(xxc(zxc(rxc(sxc(wxc(txc(uxc(new Axc,vPd),UPd),'Additional Wrapped Edges Spacing'),'To visually separate edges that are wrapped from regularly routed edges an additional spacing value can be specified in form of this layout option. The spacing is added to the regular edgeNode spacing.'),10),Nxc),yE),fgb(Exc))));qwc(a,new ixc(yxc(xxc(zxc(rxc(sxc(wxc(txc(uxc(new Axc,wPd),UPd),'Correction factor for the wrapping'),"At times and for certain types of graphs the executed wrapping may produce results that are consistently biased in the same fashion: either wrapping to often or to rarely. This factor can be used to correct the bias. Internally, it is simplay multiplied with the 'aspect ratio' layout option."),1),Nxc),yE),fgb(Exc))));qwc(a,new ixc(yxc(xxc(zxc(rxc(sxc(wxc(txc(uxc(new Axc,xPd),VPd),'Cutting Strategy'),'The strategy by which the layer indexes are determined at which the layering crumbles into chunks.'),t4b),Oxc),gP),fgb(Exc))));qwc(a,new ixc(yxc(xxc(zxc(sxc(wxc(txc(uxc(new Axc,yPd),VPd),'Manually Specified Cuts'),'Allows the user to specify her own cuts for a certain graph.'),Rxc),mG),fgb(Exc))));lwc(a,yPd,xPd,o4b);qwc(a,new ixc(yxc(xxc(zxc(rxc(sxc(wxc(txc(uxc(new Axc,zPd),'wrapping.cutting.msd'),'MSD Freedom'),'The MSD cutting strategy starts with an initial guess on the number of chunks the graph should be split into. The freedom specifies how much the strategy may deviate from this guess. E.g. if an initial number of 3 is computed, a freedom of 1 allows 2, 3, and 4 cuts.'),q4b),Qxc),GE),fgb(Exc))));lwc(a,zPd,xPd,r4b);qwc(a,new ixc(yxc(xxc(zxc(rxc(sxc(wxc(txc(uxc(new Axc,APd),'wrapping.singleEdge.validify'),'Path-Like Validify Strategy'),'When wrapping path-like graphs, the graph must not be split between any pair of layers. The validify strategy makes sure every computed split point is allowed.'),B4b),Oxc),BP),fgb(Exc))));lwc(a,APd,uPd,C4b);qwc(a,new ixc(yxc(xxc(zxc(rxc(sxc(wxc(txc(uxc(new Axc,BPd),WPd),'Improve Cuts'),'For general graphs it is important that not too many edges wrap backwards. Thus a compromise between evenly-distributed cuts and the total number of cut edges is sought.'),(null,true)),Mxc),tE),fgb(Exc))));lwc(a,BPd,uPd,x4b);qwc(a,new ixc(yxc(xxc(zxc(rxc(sxc(wxc(txc(uxc(new Axc,CPd),WPd),'Distance Penalty When Improving Cuts'),null),2),Nxc),yE),fgb(Exc))));lwc(a,CPd,uPd,v4b);lwc(a,CPd,BPd,(null,true));qwc(a,new ixc(yxc(xxc(zxc(rxc(sxc(wxc(txc(uxc(new Axc,DPd),WPd),'Improve Wrapped Edges'),'The initial wrapping is performed in a very simple way. As a consequence, edges that wrap from one chunk to another may be unnecessarily long. Activating this option tries to shorten such edges.'),(null,true)),Mxc),tE),fgb(Exc))));lwc(a,DPd,uPd,z4b);qwc(a,new ixc(vxc(yxc(xxc(zxc(rxc(sxc(wxc(txc(uxc(new Axc,EPd),XPd),'Edge Label Side Selection'),'Method to decide on edge label sides.'),h3b),Oxc),jP),fgb(Exc)),xz(pz(UE,1),cKd,2,6,['de.cau.cs.kieler.klay.layered.edgeLabelSideSelection']))));qwc(a,new ixc(vxc(yxc(xxc(zxc(rxc(sxc(wxc(txc(uxc(new Axc,FPd),XPd),'Edge Center Label Placement Strategy'),'Determines in which layer center labels of long edges should be placed.'),f3b),Oxc),cP),ggb(Exc,xz(pz(UT,1),jKd,163,0,[Cxc]))),xz(pz(UE,1),cKd,2,6,['de.cau.cs.kieler.edgeLabelPlacementStrategy']))));K6b((new L6b,a))};var Q2b,R2b,S2b,T2b,U2b,V2b,W2b,X2b,Y2b,Z2b,$2b,_2b,a3b,b3b,c3b,d3b,e3b,f3b,g3b,h3b,i3b,j3b,k3b,l3b,m3b,n3b,o3b,p3b,q3b,r3b,s3b,t3b,u3b,v3b,w3b,x3b,y3b,z3b,A3b,B3b,C3b,D3b,E3b,F3b,G3b,H3b,I3b,J3b,K3b,L3b,M3b,N3b,O3b,P3b,Q3b,R3b,S3b,T3b,U3b,V3b,W3b,X3b,Y3b,Z3b,$3b,_3b,a4b,b4b,c4b,d4b,e4b,f4b,g4b,h4b,i4b,j4b,k4b,l4b,m4b,n4b,o4b,p4b,q4b,r4b,s4b,t4b,u4b,v4b,w4b,x4b,y4b,z4b,A4b,B4b,C4b,D4b,E4b;var rP=k4(uOd,'LayeredMetaDataProvider',747);c3(878,1,uMd,L6b);_.ue=function M6b(a){K6b(a)};var I4b,J4b,K4b,L4b,M4b,N4b,O4b,P4b,Q4b,R4b,S4b,T4b,U4b,V4b,W4b,X4b,Y4b,Z4b,$4b,_4b,a5b,b5b,c5b,d5b,e5b,f5b,g5b,h5b,i5b,j5b,k5b,l5b,m5b,n5b,o5b,p5b,q5b,r5b,s5b,t5b,u5b,v5b,w5b,x5b,y5b,z5b,A5b,B5b,C5b,D5b,E5b,F5b,G5b,H5b,I5b,J5b,K5b,L5b,M5b,N5b,O5b,P5b,Q5b,R5b,S5b,T5b,U5b,V5b,W5b,X5b,Y5b,Z5b,$5b,_5b,a6b,b6b,c6b,d6b,e6b,f6b,g6b,h6b,i6b,j6b,k6b,l6b,m6b,n6b,o6b,p6b,q6b,r6b,s6b,t6b,u6b,v6b,w6b,x6b,y6b,z6b,A6b,B6b,C6b,D6b,E6b,F6b,G6b,H6b,I6b;var tP=k4(uOd,'LayeredOptions',878);c3(879,1,{},N6b);_.Be=function O6b(){var a;return a=new Pzb,a};_.Ce=function P6b(a){};var sP=k4(uOd,'LayeredOptions/LayeredFactory',879);c3(291,23,{3:1,34:1,23:1,291:1,285:1,286:1},Y6b);_.hf=function $6b(){return X6b(this)};_.uf=function Z6b(){return X6b(this)};var Q6b,R6b,S6b,T6b,U6b,V6b;var uP=l4(uOd,'LayeringStrategy',291,zE,a7b,_6b);var b7b;c3(179,23,{3:1,34:1,23:1,179:1},j7b);var d7b,e7b,f7b,g7b;var vP=l4(uOd,'NodeFlexibility',179,zE,m7b,l7b);var n7b;c3(292,23,{3:1,34:1,23:1,292:1,285:1,286:1},w7b);_.hf=function y7b(){return v7b(this)};_.uf=function x7b(){return v7b(this)};var p7b,q7b,r7b,s7b,t7b;var wP=l4(uOd,'NodePlacementStrategy',292,zE,A7b,z7b);var B7b;c3(240,23,{3:1,34:1,23:1,240:1},M7b);var D7b,E7b,F7b,G7b,H7b,I7b,J7b,K7b;var xP=l4(uOd,'NodePromotionStrategy',240,zE,O7b,N7b);var P7b;c3(410,23,{3:1,34:1,23:1,410:1},V7b);var R7b,S7b,T7b;var yP=l4(uOd,'PortType',410,zE,X7b,W7b);var Y7b;c3(345,23,{3:1,34:1,23:1,345:1},c8b);var $7b,_7b,a8b;var zP=l4(uOd,'SelfLoopPlacement',345,zE,e8b,d8b);var f8b;c3(266,1,{266:1},r8b);var AP=k4(uOd,'Spacings',266);c3(347,23,{3:1,34:1,23:1,347:1},x8b);var t8b,u8b,v8b;var BP=l4(uOd,'ValidifyStrategy',347,zE,z8b,y8b);var A8b;c3(385,23,{3:1,34:1,23:1,385:1},G8b);var C8b,D8b,E8b;var CP=l4(uOd,'WideNodesStrategy',385,zE,I8b,H8b);var J8b;c3(346,23,{3:1,34:1,23:1,346:1},P8b);var L8b,M8b,N8b;var DP=l4(uOd,'WrappingStrategy',346,zE,R8b,Q8b);var S8b;c3(1296,1,NQd,Y8b);_.vf=function Z8b(a){return kA(a,31),U8b};_.Pe=function $8b(a,b){X8b(this,kA(a,31),b)};var U8b;var EP=k4(OQd,'DepthFirstCycleBreaker',1296);c3(1295,1,NQd,d9b);_.vf=function e9b(a){return kA(a,31),_8b};_.Pe=function f9b(a,b){b9b(this,kA(a,31),b)};var _8b;var FP=k4(OQd,'GreedyCycleBreaker',1295);c3(1297,1,NQd,k9b);_.vf=function l9b(a){return kA(a,31),g9b};_.Pe=function m9b(a,b){j9b(this,kA(a,31),b)};var g9b;var GP=k4(OQd,'InteractiveCycleBreaker',1297);c3(1300,1,NQd,w9b);_.vf=function x9b(a){return kA(a,31),n9b};_.Pe=function y9b(a,b){u9b(this,kA(a,31),b)};var n9b;var JP=k4(PQd,'CoffmanGrahamLayerer',1300);c3(1301,1,lKd,z9b);_.Fb=function B9b(a){return this===a};_.Md=function C9b(){return new jfb(this)};_.Ld=function A9b(a,b){return q9b(this.a,kA(a,8),kA(b,8))};var HP=k4(PQd,'CoffmanGrahamLayerer/lambda$0$Type',1301);c3(1302,1,lKd,D9b);_.Fb=function F9b(a){return this===a};_.Md=function G9b(){return new jfb(this)};_.Ld=function E9b(a,b){return t9b(this.a,a,b)};var IP=k4(PQd,'CoffmanGrahamLayerer/lambda$1$Type',1302);c3(1303,1,NQd,J9b);_.vf=function K9b(a){return kA(a,31),tvc(tvc(new yvc,(Wzb(),Rzb),(lPb(),GOb)),Tzb,OOb)};_.Pe=function L9b(a,b){I9b(this,kA(a,31),b)};var LP=k4(PQd,'InteractiveLayerer',1303);c3(511,1,{511:1},M9b);_.a=0;_.c=0;var KP=k4(PQd,'InteractiveLayerer/LayerSpan',511);c3(1299,1,NQd,V9b);_.vf=function W9b(a){return R9b(kA(a,31))};_.Pe=function X9b(a,b){S9b(this,kA(a,31),b)};var N9b,O9b,P9b;var MP=k4(PQd,'LongestPathLayerer',1299);c3(1306,1,NQd,eac);_.vf=function fac(a){return kA(a,31),tvc(tvc(new yvc,(Wzb(),Rzb),(lPb(),sOb)),Tzb,OOb)};_.Pe=function gac(a,b){cac(this,kA(a,31),b)};_.a=0;_.b=0;_.d=0;var Y9b,Z9b;var OP=k4(PQd,'MinWidthLayerer',1306);c3(1307,1,lKd,iac);_.Ld=function jac(a,b){return hac(this,kA(a,8),kA(b,8))};_.Fb=function kac(a){return this===a};_.Md=function lac(){return new jfb(this)};var NP=k4(PQd,'MinWidthLayerer/MinOutgoingEdgesComparator',1307);c3(1298,1,NQd,wac);_.vf=function xac(a){return sac(this,kA(a,31))};_.Pe=function yac(a,b){vac(this,kA(a,31),b)};var mac,nac,oac;var PP=k4(PQd,'NetworkSimplexLayerer',1298);c3(1304,1,NQd,Kac);_.vf=function Lac(a){return kA(a,31),tvc(tvc(new yvc,(Wzb(),Rzb),(lPb(),sOb)),Tzb,OOb)};_.Pe=function Mac(a,b){Hac(this,kA(a,31),b)};_.d=0;_.f=0;_.g=0;_.i=0;_.s=0;_.t=0;_.u=0;var RP=k4(PQd,'StretchWidthLayerer',1304);c3(1305,1,lKd,Oac);_.Ld=function Pac(a,b){return Nac(kA(a,8),kA(b,8))};_.Fb=function Qac(a){return this===a};_.Md=function Rac(){return new jfb(this)};var QP=k4(PQd,'StretchWidthLayerer/1',1305);c3(422,1,QQd);_.lf=function ebc(a,b,c,d,e,f){};_.xf=function cbc(a,b,c){return Xac(this,a,b,c)};_.kf=function dbc(){this.g=tz(EA,RQd,22,this.d,15,1);this.f=tz(EA,RQd,22,this.d,15,1)};_.mf=function fbc(a,b){this.e[a]=tz(FA,OKd,22,b[a].length,15,1)};_.nf=function gbc(a,b,c){var d;d=c[a][b];d.o=b;this.e[a][b]=b};_.of=function hbc(a,b,c,d){kA(xbb(d[a][b].i,c),11).o=this.d++};_.b=0;_.c=0;_.d=0;var TP=k4(SQd,'AbstractBarycenterPortDistributor',422);c3(1484,1,lKd,ibc);_.Fb=function kbc(a){return this===a};_.Md=function lbc(){return new jfb(this)};_.Ld=function jbc(a,b){return $ac(this.a,a,b)};var SP=k4(SQd,'AbstractBarycenterPortDistributor/lambda$0$Type',1484);c3(1532,1,rOd,ubc);_.lf=function xbc(a,b,c,d,e,f){};_.nf=function zbc(a,b,c){};_.of=function Abc(a,b,c,d){};_.jf=function vbc(){return false};_.kf=function wbc(){this.a=this.c.a;this.e=this.d.g};_.mf=function ybc(a,b){b[a][0].c.o=a};_.pf=function Bbc(){return false};_.qf=function Cbc(a,b,c,d){var e,f,g,h,i,j,k;if(b!=sbc(c,a.length)){f=a[b-(c?1:-1)];Tac(this.d,f,c?(U7b(),S7b):(U7b(),R7b))}e=a[b][0];k=!d||e.j==(RGb(),MGb);j=Sr(a[b]);qbc(this,j,k,false,c);g=0;for(i=new ccb(j);i.a');a0?(jec(this.a,a[b-1],a[b]),undefined):!c&&b1&&(e.i==(FDc(),kDc)?(this.b[a]=true):e.i==EDc&&a>0&&(this.b[a-1]=true))};_.f=0;var nQ=k4(qOd,'AllCrossingsCounter',1528);c3(602,1,{},_dc);_.b=0;_.d=0;var oQ=k4(qOd,'BinaryIndexedTree',602);c3(473,1,{},vec);var tQ=k4(qOd,'CrossingsCounter',473);c3(1557,1,lKd,wec);_.Fb=function yec(a){return this===a};_.Md=function zec(){return new jfb(this)};_.Ld=function xec(a,b){return nec(this.a,a,b)};var pQ=k4(qOd,'CrossingsCounter/lambda$0$Type',1557);c3(1558,1,lKd,Aec);_.Fb=function Cec(a){return this===a};_.Md=function Dec(){return new jfb(this)};_.Ld=function Bec(a,b){return oec(this.a,a,b)};var qQ=k4(qOd,'CrossingsCounter/lambda$1$Type',1558);c3(1559,1,lKd,Eec);_.Fb=function Gec(a){return this===a};_.Md=function Hec(){return new jfb(this)};_.Ld=function Fec(a,b){return pec(this.a,a,b)};var rQ=k4(qOd,'CrossingsCounter/lambda$2$Type',1559);c3(1560,1,lKd,Iec);_.Fb=function Kec(a){return this===a};_.Md=function Lec(){return new jfb(this)};_.Ld=function Jec(a,b){return qec(this.a,a,b)};var sQ=k4(qOd,'CrossingsCounter/lambda$3$Type',1560);c3(1555,1,{},Nec);var xQ=k4(qOd,'HyperedgeCrossingsCounter',1555);c3(426,1,{34:1,426:1},Pec);_.vd=function Qec(a){return Oec(this,kA(a,426))};_.b=0;_.c=0;_.e=0;_.f=0;var wQ=k4(qOd,'HyperedgeCrossingsCounter/Hyperedge',426);c3(336,1,{34:1,336:1},Sec);_.vd=function Tec(a){return Rec(this,kA(a,336))};_.b=0;_.c=0;var vQ=k4(qOd,'HyperedgeCrossingsCounter/HyperedgeCorner',336);c3(472,23,{3:1,34:1,23:1,472:1},Xec);var Uec,Vec;var uQ=l4(qOd,'HyperedgeCrossingsCounter/HyperedgeCorner/Type',472,zE,Zec,Yec);var $ec;c3(1556,1,{},kfc);_.e=true;_.f=0;_.g=0;var zQ=k4(qOd,'NorthSouthEdgeAllCrossingsCounter',1556);c3(1311,1,NQd,pfc);_.vf=function qfc(a){return kA(nub(kA(a,31),(E2b(),X1b)),19).pc((Z0b(),S0b))?lfc:null};_.Pe=function rfc(a,b){ofc(this,kA(a,31),b)};var lfc;var AQ=k4(TQd,'InteractiveNodePlacer',1311);c3(1312,1,NQd,Ffc);_.vf=function Gfc(a){return kA(nub(kA(a,31),(E2b(),X1b)),19).pc((Z0b(),S0b))?sfc:null};_.Pe=function Hfc(a,b){Dfc(this,kA(a,31),b)};var sfc,tfc,ufc;var CQ=k4(TQd,'LinearSegmentsNodePlacer',1312);c3(235,1,{34:1,235:1},Lfc);_.vd=function Mfc(a){return Ifc(this,kA(a,235))};_.Fb=function Nfc(a){var b;if(sA(a,235)){b=kA(a,235);return this.b==b.b}return false};_.Hb=function Ofc(){return this.b};_.Ib=function Pfc(){return 'ls'+vg(this.f)};_.a=0;_.b=0;_.c=-1;_.d=-1;_.i=0;var BQ=k4(TQd,'LinearSegmentsNodePlacer/LinearSegment',235);c3(1314,1,NQd,kgc);_.vf=function lgc(a){return kA(nub(kA(a,31),(E2b(),X1b)),19).pc((Z0b(),S0b))?Qfc:null};_.Pe=function sgc(a,b){ggc(this,kA(a,31),b)};_.b=0;_.g=0;var Qfc;var mR=k4(TQd,'NetworkSimplexPlacer',1314);c3(1333,1,lKd,tgc);_.Fb=function vgc(a){return this===a};_.Md=function wgc(){return new jfb(this)};_.Ld=function ugc(a,b){return U4(kA(a,21).a,kA(b,21).a)};var DQ=k4(TQd,'NetworkSimplexPlacer/0methodref$compare$Type',1333);c3(1335,1,lKd,xgc);_.Fb=function zgc(a){return this===a};_.Md=function Agc(){return new jfb(this)};_.Ld=function ygc(a,b){return U4(kA(a,21).a,kA(b,21).a)};var EQ=k4(TQd,'NetworkSimplexPlacer/1methodref$compare$Type',1335);c3(584,1,{584:1},Bgc);var FQ=k4(TQd,'NetworkSimplexPlacer/EdgeRep',584);c3(416,1,{416:1},Cgc);_.b=false;var GQ=k4(TQd,'NetworkSimplexPlacer/NodeRep',416);c3(460,12,{3:1,4:1,20:1,25:1,41:1,12:1,13:1,15:1,49:1,460:1},Ggc);var LQ=k4(TQd,'NetworkSimplexPlacer/Path',460);c3(1315,1,FJd,Hgc);_.Kb=function Igc(a){return kA(a,14).d.g.j};var HQ=k4(TQd,'NetworkSimplexPlacer/Path/lambda$0$Type',1315);c3(1316,1,SLd,Jgc);_.Nb=function Kgc(a){return kA(a,232)==(RGb(),OGb)};var IQ=k4(TQd,'NetworkSimplexPlacer/Path/lambda$1$Type',1316);c3(1317,1,FJd,Lgc);_.Kb=function Mgc(a){return kA(a,14).d.g};var JQ=k4(TQd,'NetworkSimplexPlacer/Path/lambda$2$Type',1317);c3(1318,1,SLd,Ngc);_.Nb=function Ogc(a){return phc(k7b(kA(a,8)))};var KQ=k4(TQd,'NetworkSimplexPlacer/Path/lambda$3$Type',1318);c3(1319,1,SLd,Pgc);_.Nb=function Qgc(a){return Rfc(),(FDc(),pDc).pc(kA(a,11).i)};var MQ=k4(TQd,'NetworkSimplexPlacer/lambda$0$Type',1319);c3(1320,1,{},Rgc);_.td=function Sgc(a){Xfc(this.a,this.b,a)};var NQ=k4(TQd,'NetworkSimplexPlacer/lambda$1$Type',1320);c3(1329,1,{},Tgc);_.td=function Ugc(a){Yfc(this.a,a)};var OQ=k4(TQd,'NetworkSimplexPlacer/lambda$10$Type',1329);c3(1330,1,FJd,Vgc);_.Kb=function Wgc(a){return Rfc(),new Zob(null,new ekb(kA(a,26).a,16))};var PQ=k4(TQd,'NetworkSimplexPlacer/lambda$11$Type',1330);c3(1331,1,{},Xgc);_.td=function Ygc(a){Zfc(this.a,a)};var QQ=k4(TQd,'NetworkSimplexPlacer/lambda$12$Type',1331);c3(1332,1,FJd,Zgc);_.Kb=function $gc(a){return Rfc(),d5(kA(a,113).e)};var RQ=k4(TQd,'NetworkSimplexPlacer/lambda$13$Type',1332);c3(1334,1,FJd,_gc);_.Kb=function ahc(a){return Rfc(),d5(kA(a,113).e)};var SQ=k4(TQd,'NetworkSimplexPlacer/lambda$14$Type',1334);c3(1336,1,SLd,bhc);_.Nb=function chc(a){return Rfc(),kA(a,416).c.j==(RGb(),PGb)};var TQ=k4(TQd,'NetworkSimplexPlacer/lambda$15$Type',1336);c3(1337,1,SLd,dhc);_.Nb=function ehc(a){return Rfc(),kA(a,416).c.i.c.length>1};var UQ=k4(TQd,'NetworkSimplexPlacer/lambda$16$Type',1337);c3(1338,1,{},fhc);_.td=function ghc(a){pgc(this.c,this.b,this.d,this.a,a)};_.c=0;_.d=0;var VQ=k4(TQd,'NetworkSimplexPlacer/lambda$17$Type',1338);c3(1339,1,{},hhc);_.td=function ihc(a){qgc(this.a,a)};_.a=0;var WQ=k4(TQd,'NetworkSimplexPlacer/lambda$18$Type',1339);c3(1340,1,FJd,jhc);_.Kb=function khc(a){return Rfc(),new Zob(null,new ekb(kA(a,26).a,16))};var XQ=k4(TQd,'NetworkSimplexPlacer/lambda$19$Type',1340);c3(1321,1,FJd,lhc);_.Kb=function mhc(a){return Rfc(),new Zob(null,new ekb(kA(a,26).a,16))};var YQ=k4(TQd,'NetworkSimplexPlacer/lambda$2$Type',1321);c3(1341,1,{},nhc);_.td=function ohc(a){$fc(this.a,a)};var ZQ=k4(TQd,'NetworkSimplexPlacer/lambda$20$Type',1341);c3(1342,1,SLd,qhc);_.Nb=function rhc(a){return phc(a)};var $Q=k4(TQd,'NetworkSimplexPlacer/lambda$21$Type',1342);c3(1343,1,FJd,shc);_.Kb=function thc(a){return Rfc(),new Zob(null,new ekb(kA(a,26).a,16))};var _Q=k4(TQd,'NetworkSimplexPlacer/lambda$22$Type',1343);c3(1344,1,SLd,uhc);_.Nb=function vhc(a){return _fc(this.a,a)};var aR=k4(TQd,'NetworkSimplexPlacer/lambda$23$Type',1344);c3(1345,1,{},whc);_.td=function xhc(a){agc(this.a,this.b,a)};var bR=k4(TQd,'NetworkSimplexPlacer/lambda$24$Type',1345);c3(1346,1,SLd,yhc);_.Nb=function zhc(a){return Rfc(),!JEb(kA(a,14))};var cR=k4(TQd,'NetworkSimplexPlacer/lambda$25$Type',1346);c3(1347,1,SLd,Ahc);_.Nb=function Bhc(a){return Rfc(),!JEb(kA(a,14))};var dR=k4(TQd,'NetworkSimplexPlacer/lambda$26$Type',1347);c3(1348,1,{},Chc);_.le=function Dhc(a,b){return bgc(this.a,a,b)};var eR=k4(TQd,'NetworkSimplexPlacer/lambda$27$Type',1348);c3(1322,1,FJd,Ehc);_.Kb=function Fhc(a){return Rfc(),new Zob(null,new fkb(kl(zGb(kA(a,8)))))};var fR=k4(TQd,'NetworkSimplexPlacer/lambda$3$Type',1322);c3(1323,1,SLd,Ghc);_.Nb=function Hhc(a){return Rfc(),ogc(kA(a,14))};var gR=k4(TQd,'NetworkSimplexPlacer/lambda$4$Type',1323);c3(1324,1,{},Ihc);_.td=function Jhc(a){hgc(this.a,kA(a,14))};var hR=k4(TQd,'NetworkSimplexPlacer/lambda$5$Type',1324);c3(1325,1,FJd,Khc);_.Kb=function Lhc(a){return Rfc(),new Zob(null,new ekb(kA(a,26).a,16))};var iR=k4(TQd,'NetworkSimplexPlacer/lambda$6$Type',1325);c3(1326,1,SLd,Mhc);_.Nb=function Nhc(a){return Rfc(),kA(a,8).j==(RGb(),PGb)};var jR=k4(TQd,'NetworkSimplexPlacer/lambda$7$Type',1326);c3(1327,1,FJd,Ohc);_.Kb=function Phc(a){return Rfc(),new Zob(null,new fkb(kl(tGb(kA(a,8)))))};var kR=k4(TQd,'NetworkSimplexPlacer/lambda$8$Type',1327);c3(1328,1,SLd,Qhc);_.Nb=function Rhc(a){return Rfc(),IEb(kA(a,14))};var lR=k4(TQd,'NetworkSimplexPlacer/lambda$9$Type',1328);c3(1310,1,NQd,Vhc);_.vf=function Whc(a){return kA(nub(kA(a,31),(E2b(),X1b)),19).pc((Z0b(),S0b))?Shc:null};_.Pe=function Xhc(a,b){Uhc(kA(a,31),b)};var Shc;var nR=k4(TQd,'SimpleNodePlacer',1310);c3(164,1,{164:1},dic);_.Ib=function eic(){var a;a='';this.c==(hic(),gic)?(a+=yOd):this.c==fic&&(a+=xOd);this.o==(pic(),nic)?(a+=WQd):this.o==oic?(a+='UP'):(a+='BALANCED');return a};var qR=k4(XQd,'BKAlignedLayout',164);c3(466,23,{3:1,34:1,23:1,466:1},iic);var fic,gic;var oR=l4(XQd,'BKAlignedLayout/HDirection',466,zE,kic,jic);var lic;c3(465,23,{3:1,34:1,23:1,465:1},qic);var nic,oic;var pR=l4(XQd,'BKAlignedLayout/VDirection',465,zE,sic,ric);var tic;c3(1485,1,{},xic);var rR=k4(XQd,'BKAligner',1485);c3(1488,1,{},Cic);var uR=k4(XQd,'BKCompactor',1488);c3(593,1,{593:1},Dic);_.a=0;var sR=k4(XQd,'BKCompactor/ClassEdge',593);c3(423,1,{423:1},Fic);_.a=null;_.b=0;var tR=k4(XQd,'BKCompactor/ClassNode',423);c3(1313,1,NQd,Nic);_.vf=function Ric(a){return kA(nub(kA(a,31),(E2b(),X1b)),19).pc((Z0b(),S0b))?Gic:null};_.Pe=function Sic(a,b){Mic(this,kA(a,31),b)};_.a=false;_.e=false;var Gic;var vR=k4(XQd,'BKNodePlacer',1313);c3(437,23,{3:1,34:1,23:1,437:1},Wic);var Tic,Uic;var wR=l4(XQd,'EdgeStraighteningStrategy',437,zE,Yic,Xic);var Zic;c3(1486,1,{},ajc);_.d=0;var yR=k4(XQd,'NeighborhoodInformation',1486);c3(1487,1,lKd,fjc);_.Ld=function gjc(a,b){return ejc(this,kA(a,48),kA(b,48))};_.Fb=function hjc(a){return this===a};_.Md=function ijc(){return new jfb(this)};var xR=k4(XQd,'NeighborhoodInformation/NeighborComparator',1487);c3(724,1,{});var CR=k4(XQd,'ThresholdStrategy',724);c3(1510,724,{},njc);_.yf=function ojc(a,b,c){return this.a.o==(pic(),oic)?oLd:pLd};_.zf=function pjc(){};var zR=k4(XQd,'ThresholdStrategy/NullThresholdStrategy',1510);c3(522,1,{522:1},qjc);_.c=false;_.d=false;var AR=k4(XQd,'ThresholdStrategy/Postprocessable',522);c3(1511,724,{},ujc);_.yf=function vjc(a,b,c){var d,e,f;e=b==c;d=this.a.a[c.o]==b;if(!(e||d)){return a}f=a;if(this.a.c==(hic(),gic)){e&&(f=rjc(this,b,true));!isNaN(f)&&!isFinite(f)&&d&&(f=rjc(this,c,false))}else{e&&(f=rjc(this,b,true));!isNaN(f)&&!isFinite(f)&&d&&(f=rjc(this,c,false))}return f};_.zf=function wjc(){var a,b,c,d,e;while(this.c.b!=0){e=kA(tib(this.c),522);d=sjc(this,e);if(!d.a){continue}a=d.a;c=Vpb(this.a.f[this.a.g[e.b.o].o]);if(!c&&!JEb(a)&&a.c.g.c==a.d.g.c){continue}b=tjc(this,e);b||plb(this.d,e)}while(this.d.a.c.length!=0){tjc(this,kA(olb(this.d),522))}};var BR=k4(XQd,'ThresholdStrategy/SimpleThresholdStrategy',1511);c3(573,1,{573:1,285:1,286:1},Ajc);_.hf=function Cjc(){return zjc(this)};_.uf=function Bjc(){return zjc(this)};var xjc;var DR=k4(ZQd,'EdgeRouterFactory',573);c3(1356,1,NQd,Pjc);_.vf=function Qjc(a){return Njc(kA(a,31))};_.Pe=function Rjc(a,b){Ojc(kA(a,31),b)};var Ejc,Fjc,Gjc,Hjc,Ijc,Jjc,Kjc,Ljc;var ER=k4(ZQd,'OrthogonalEdgeRouter',1356);c3(594,1,{},Vjc);_.a=0;_.c=0;var KR=k4(ZQd,'OrthogonalRoutingGenerator',594);c3(252,1,{252:1},bkc);_.Ib=function ckc(){return this.a+'->'+this.b};_.c=0;var FR=k4(ZQd,'OrthogonalRoutingGenerator/Dependency',252);c3(165,1,{34:1,165:1},fkc);_.vd=function gkc(a){return ekc(this,kA(a,165))};_.Fb=function hkc(a){var b;if(sA(a,165)){b=kA(a,165);return this.d==b.d}return false};_.Hb=function ikc(){return this.d};_.Ib=function jkc(){var a,b,c,d;a=new O6('{');d=new ccb(this.g);while(d.alNd){e=new Jyc(i,l);mib(c.a,e);Sjc(this.a,c,a,e,false);f=new Jyc(k,l);mib(c.a,f);Sjc(this.a,c,a,f,false)}}}};_.Bf=function mkc(a){return a.g.k.a+a.k.a+a.a.a};_.Cf=function nkc(){return FDc(),CDc};_.Df=function okc(){return FDc(),lDc};var HR=k4(ZQd,'OrthogonalRoutingGenerator/NorthToSouthRoutingStrategy',1490);c3(1491,1,{},pkc);_.Af=function qkc(a,b){var c,d,e,f,g,h,i,j,k,l;l=b-a.i*this.a.c;for(h=new ccb(a.g);h.alNd){e=new Jyc(i,l);mib(c.a,e);Sjc(this.a,c,a,e,false);f=new Jyc(k,l);mib(c.a,f);Sjc(this.a,c,a,f,false)}}}};_.Bf=function rkc(a){return a.g.k.a+a.k.a+a.a.a};_.Cf=function skc(){return FDc(),lDc};_.Df=function tkc(){return FDc(),CDc};var IR=k4(ZQd,'OrthogonalRoutingGenerator/SouthToNorthRoutingStrategy',1491);c3(1489,1,{},ukc);_.Af=function vkc(a,b){var c,d,e,f,g,h,i,j,k,l;l=b+a.i*this.a.c;for(h=new ccb(a.g);h.alNd){e=new Jyc(l,i);mib(c.a,e);Sjc(this.a,c,a,e,true);f=new Jyc(l,k);mib(c.a,f);Sjc(this.a,c,a,f,true)}}}};_.Bf=function wkc(a){return a.g.k.b+a.k.b+a.a.b};_.Cf=function xkc(){return FDc(),kDc};_.Df=function ykc(){return FDc(),EDc};var JR=k4(ZQd,'OrthogonalRoutingGenerator/WestToEastRoutingStrategy',1489);c3(1351,1,NQd,Mkc);_.vf=function Nkc(a){return Hkc(kA(a,31))};_.Pe=function Okc(a,b){Jkc(this,kA(a,31),b)};var zkc,Akc,Bkc,Ckc,Dkc;var MR=k4(ZQd,'PolylineEdgeRouter',1351);c3(1352,1,nMd,Qkc);_.Mb=function Rkc(a){return Pkc(kA(a,8))};_.Fb=function Skc(a){return this===a};_.Nb=function Tkc(a){return this.Mb(a)};var LR=k4(ZQd,'PolylineEdgeRouter/1',1352);c3(151,1,{151:1},alc);_.Ib=function blc(){var a,b,c,d;c=new M6;!!this.e&&I6(I6(c,Ss(this.e)),': ');for(b=sib(Wkc(this),0);b.b!=b.d.c;){a=kA(Gib(b),11);I6(I6(C6(I6(c,(d=iHb(a),d==null?'p_'+a.o:'p_'+d)),32),Ss(a.i)),' / ')}return l3(c,c.a.length-2-1)};_.j=0;_.k=0;var NR=k4($Qd,'ConnectedSelfLoopComponent',151);c3(129,23,{3:1,34:1,23:1,129:1},Mlc);_.c=0;var clc,dlc,elc,flc,glc,hlc,ilc,jlc,klc,llc,mlc,nlc,olc,plc,qlc,rlc,slc,tlc,ulc,vlc,wlc,xlc,ylc,zlc,Alc,Blc,Clc,Dlc,Elc;var OR=l4($Qd,'LoopSide',129,zE,Qlc,Plc);var Rlc;c3(424,1,{},dmc,emc,fmc);_.Ib=function pmc(){return this.b.Ib()};_.c=0;_.d=false;_.e=false;_.f=false;_.i=0;_.j=0;var QR=k4($Qd,'NubSpline',424);c3(190,1,{190:1},smc,tmc);var PR=k4($Qd,'NubSpline/PolarCP',190);c3(599,424,{},umc);var RR=k4($Qd,'NubsSelfLoop',599);c3(236,1,{},Bmc,Cmc,Dmc,Emc,Fmc);_.a=cRd;_.b=YQd;_.c=cRd;_.d=YQd;var SR=k4($Qd,'Rectangle',236);c3(1353,1,NQd,$mc);_.vf=function anc(a){return Umc(kA(a,31))};_.Pe=function bnc(a,b){Zmc(this,kA(a,31),b)};_.d=3;var Hmc,Imc,Jmc,Kmc,Lmc,Mmc;var XR=k4($Qd,'SplineEdgeRouter',1353);c3(250,1,{250:1},enc);_.Ib=function fnc(){return this.a+' ->('+this.c+') '+this.b};_.c=0;var TR=k4($Qd,'SplineEdgeRouter/Dependency',250);c3(417,23,{3:1,34:1,23:1,417:1},jnc);var gnc,hnc;var UR=l4($Qd,'SplineEdgeRouter/SideToProcess',417,zE,lnc,knc);var mnc;c3(1354,1,{},onc);_.td=function pnc(a){Wmc(this.a,this.b,a)};var VR=k4($Qd,'SplineEdgeRouter/lambda$0$Type',1354);c3(1355,1,{},qnc);_.td=function rnc(a){Xmc(this.a,this.b,a)};var WR=k4($Qd,'SplineEdgeRouter/lambda$1$Type',1355);c3(125,1,{34:1,125:1},wnc,xnc);_.vd=function ync(a){return unc(this,kA(a,125))};_.b=0;_.e=0;_.f=0;_.i=false;_.j=0;_.k=false;_.n=false;_.p=0;_.r=0;_.s=0;var ZR=k4($Qd,'SplineSegment',125);c3(589,1,{589:1},znc);_.a=0;_.b=false;_.c=false;_.d=false;_.e=false;_.f=0;var YR=k4($Qd,'SplineSegment/EdgeInformation',589);c3(990,1,{},Knc);var _R=k4(gRd,bNd,990);c3(991,1,lKd,Mnc);_.Ld=function Nnc(a,b){return Lnc(kA(a,128),kA(b,128))};_.Fb=function Onc(a){return this===a};_.Md=function Pnc(){return new jfb(this)};var $R=k4(gRd,cNd,991);c3(989,1,{},Wnc);var aS=k4(gRd,'MrTree',989);c3(360,23,{3:1,34:1,23:1,360:1,285:1,286:1},boc);_.hf=function doc(){return aoc(this)};_.uf=function coc(){return aoc(this)};var Xnc,Ync,Znc,$nc;var bS=l4(gRd,'TreeLayoutPhases',360,zE,foc,eoc);var goc;c3(960,244,GMd,ioc);_.Ae=function joc(a,b){var c,d,e,f,g,h;f=(g=new toc,lub(g,a),qub(g,(Ppc(),Gpc),a),h=new Bgb,Snc(a,g,h),Rnc(a,g,h),g);e=Jnc(this.a,f);for(d=new ccb(e);d.a'+xoc(this.c):'e_'+ob(this)};var fS=k4(hRd,'TEdge',170);c3(128,131,{3:1,128:1,93:1,131:1},toc);_.Ib=function uoc(){var a,b,c,d,e;e=null;for(d=sib(this.b,0);d.b!=d.d.c;){c=kA(Gib(d),76);e+=(c.c==null||c.c.length==0?'n_'+c.g:'n_'+c.c)+'\n'}for(b=sib(this.a,0);b.b!=b.d.c;){a=kA(Gib(b),170);e+=(!!a.b&&!!a.c?xoc(a.b)+'->'+xoc(a.c):'e_'+ob(a))+'\n'}return e};var hS=k4(hRd,'TGraph',128);c3(570,452,{3:1,452:1,570:1,93:1,131:1});var lS=k4(hRd,'TShape',570);c3(76,570,{3:1,452:1,76:1,570:1,93:1,131:1},yoc);_.Ib=function zoc(){return xoc(this)};var kS=k4(hRd,'TNode',76);c3(231,1,YJd,Aoc);_.sc=function Boc(a){i5(this,a)};_.tc=function Coc(){var a;return a=sib(this.a.d,0),new Doc(a)};var jS=k4(hRd,'TNode/2',231);c3(330,1,wJd,Doc);_.gc=function Eoc(a){Bhb(this,a)};_.ic=function Goc(){return kA(Gib(this.a),170).c};_.hc=function Foc(){return Fib(this.a)};_.jc=function Hoc(){Iib(this.a)};var iS=k4(hRd,'TNode/2/1',330);c3(1545,1,TNd,Koc);_.Pe=function Moc(a,b){Joc(this,kA(a,128),b)};var mS=k4(iRd,'FanProcessor',1545);c3(308,23,{3:1,34:1,23:1,308:1,286:1},Uoc);_.hf=function Voc(){switch(this.g){case 0:return new rpc;case 1:return new Koc;case 2:return new hpc;case 3:return new apc;case 4:return new opc;case 5:return new upc;default:throw x2(new O4(iOd+(this.f!=null?this.f:''+this.g)));}};var Noc,Ooc,Poc,Qoc,Roc,Soc;var nS=l4(iRd,jOd,308,zE,Xoc,Woc);var Yoc;c3(1548,1,TNd,apc);_.Pe=function bpc(a,b){$oc(this,kA(a,128),b)};_.a=0;var pS=k4(iRd,'LevelHeightProcessor',1548);c3(1549,1,YJd,cpc);_.sc=function dpc(a){i5(this,a)};_.tc=function epc(){return bdb(),sdb(),rdb};var oS=k4(iRd,'LevelHeightProcessor/1',1549);c3(1546,1,TNd,hpc);_.Pe=function ipc(a,b){fpc(this,kA(a,128),b)};_.a=0;var rS=k4(iRd,'NeighborsProcessor',1546);c3(1547,1,YJd,jpc);_.sc=function kpc(a){i5(this,a)};_.tc=function lpc(){return bdb(),sdb(),rdb};var qS=k4(iRd,'NeighborsProcessor/1',1547);c3(1550,1,TNd,opc);_.Pe=function ppc(a,b){mpc(this,kA(a,128),b)};_.a=0;var sS=k4(iRd,'NodePositionProcessor',1550);c3(1544,1,TNd,rpc);_.Pe=function spc(a,b){qpc(this,kA(a,128))};var tS=k4(iRd,'RootProcessor',1544);c3(1551,1,TNd,upc);_.Pe=function vpc(a,b){tpc(kA(a,128))};var uS=k4(iRd,'Untreeifyer',1551);var wpc,xpc,ypc,zpc,Apc,Bpc,Cpc,Dpc,Epc,Fpc,Gpc,Hpc,Ipc,Jpc,Kpc,Lpc,Mpc,Npc,Opc;c3(750,1,uMd,Vpc);_.ue=function Wpc(a){qwc(a,new ixc(yxc(xxc(zxc(rxc(sxc(wxc(txc(uxc(new Axc,lRd),''),'Weighting of Nodes'),'Which weighting to use when computing a node order.'),Tpc),(Uxc(),Oxc)),yS),fgb((Gxc(),Exc)))));qwc(a,new ixc(yxc(xxc(zxc(rxc(sxc(wxc(txc(uxc(new Axc,mRd),''),'Search Order'),'Which search order to use when computing a spanning tree.'),Rpc),Oxc),zS),fgb(Exc))));gqc((new hqc,a))};var Qpc,Rpc,Spc,Tpc;var vS=k4(nRd,'MrTreeMetaDataProvider',750);c3(886,1,uMd,hqc);_.ue=function iqc(a){gqc(a)};var Xpc,Ypc,Zpc,$pc,_pc,aqc,bqc,cqc,dqc,eqc;var xS=k4(nRd,'MrTreeOptions',886);c3(887,1,{},jqc);_.Be=function kqc(){var a;return a=new ioc,a};_.Ce=function lqc(a){};var wS=k4(nRd,'MrTreeOptions/MrtreeFactory',887);c3(438,23,{3:1,34:1,23:1,438:1},pqc);var mqc,nqc;var yS=l4(nRd,'OrderWeighting',438,zE,rqc,qqc);var sqc;c3(388,23,{3:1,34:1,23:1,388:1},xqc);var uqc,vqc;var zS=l4(nRd,'TreeifyingOrder',388,zE,zqc,yqc);var Aqc;c3(1357,1,NQd,Jqc);_.vf=function Kqc(a){return kA(a,128),Cqc};_.Pe=function Lqc(a,b){Iqc(this,kA(a,128),b)};var Cqc;var AS=k4('org.eclipse.elk.alg.mrtree.p1treeify','DFSTreeifyer',1357);c3(1358,1,NQd,Qqc);_.vf=function Rqc(a){return kA(a,128),Mqc};_.Pe=function Sqc(a,b){Pqc(this,kA(a,128),b)};var Mqc;var BS=k4('org.eclipse.elk.alg.mrtree.p2order','NodeOrderer',1358);c3(1359,1,NQd,$qc);_.vf=function _qc(a){return kA(a,128),Tqc};_.Pe=function arc(a,b){Yqc(this,kA(a,128),b)};_.a=0;var Tqc;var CS=k4('org.eclipse.elk.alg.mrtree.p3place','NodePlacer',1359);c3(1360,1,NQd,erc);_.vf=function frc(a){return kA(a,128),brc};_.Pe=function grc(a,b){drc(kA(a,128),b)};var brc;var DS=k4('org.eclipse.elk.alg.mrtree.p4route','EdgeRouter',1360);var hrc;c3(447,23,{3:1,34:1,23:1,447:1,285:1,286:1},nrc);_.hf=function prc(){return mrc(this)};_.uf=function orc(){return mrc(this)};var jrc,krc;var ES=l4(qRd,'RadialLayoutPhases',447,zE,rrc,qrc);var trc;c3(961,244,GMd,wrc);_.Ae=function xrc(a,b){var c,d,e,f,g,h,i;d=vrc(this,a);xEc(b,'Radial layout',d.c.length);i=zrc(a);COc(a,(irc(),hrc),i);if(!i){throw x2(new O4('The given graph is not a tree!'))}f=Vpb(nA(AOc(a,(otc(),ktc))));f==0&&(f=yrc(a));COc(a,ktc,f);c=new LGc(a);wbb(KGc(c),new sHc);e=new AHc(c);wHc(e);for(h=new ccb(vrc(this,a));h.a0&&Nyc(b.charCodeAt(c-1),YNd)){--c}if(e>=c){throw x2(new O4('The given string does not contain any numbers.'))}f=f6(b.substr(e,c-e),',|;|\r|\n');if(f.length!=2){throw x2(new O4('Exactly two numbers are expected, '+f.length+' were found.'))}try{this.a=G3(m6(f[0]));this.b=G3(m6(f[1]))}catch(a){a=w2(a);if(sA(a,118)){d=a;throw x2(new O4(ZNd+d))}else throw x2(a)}};_.Ib=function Qyc(){return '('+this.a+','+this.b+')'};_.a=0;_.b=0;var aU=k4($Nd,'KVector',9);c3(74,66,{3:1,4:1,20:1,25:1,41:1,13:1,66:1,15:1,74:1,428:1},Vyc,Wyc);_.gf=function Xyc(b){var c,d,e,f,g,h;e=f6(b,',|;|\\(|\\)|\\[|\\]|\\{|\\}| |\t|\n');xib(this);try{d=0;g=0;f=0;h=0;while(d0){g%2==0?(f=G3(e[d])):(h=G3(e[d]));g>0&&g%2!=0&&mib(this,new Jyc(f,h));++g}++d}}catch(a){a=w2(a);if(sA(a,118)){c=a;throw x2(new O4('The given string does not match the expected format for vectors.'+c))}else throw x2(a)}};_.Ib=function Zyc(){var a,b,c;a=new O6('(');b=sib(this,0);while(b.b!=b.d.c){c=kA(Gib(b),9);I6(a,c.a+','+c.b);b.b!=b.d.c&&(a.a+='; ',a)}return (a.a+=')',a).a};var _T=k4($Nd,'KVectorChain',74);c3(224,23,{3:1,34:1,23:1,224:1},fzc);var $yc,_yc,azc,bzc,czc,dzc;var cU=l4(WRd,'Alignment',224,zE,hzc,gzc);var izc;c3(855,1,uMd,xzc);_.ue=function yzc(a){wzc(a)};var kzc,lzc,mzc,nzc,ozc,pzc,qzc,rzc,szc,tzc,uzc;var eU=k4(WRd,'BoxLayouterOptions',855);c3(856,1,{},zzc);_.Be=function Azc(){var a;return a=new NEc,a};_.Ce=function Bzc(a){};var dU=k4(WRd,'BoxLayouterOptions/BoxFactory',856);c3(785,1,uMd,_Ac);_.ue=function aBc(a){qwc(a,new ixc(yxc(xxc(zxc(sxc(wxc(txc(uxc(new Axc,_Rd),''),'Layout Algorithm'),'Select a specific layout algorithm.'),(Uxc(),Sxc)),UE),fgb((Gxc(),Exc)))));qwc(a,new ixc(vxc(yxc(xxc(zxc(rxc(sxc(wxc(txc(uxc(new Axc,iQd),''),'Alignment'),'Alignment of the selected node relative to other nodes, the exact meaning depends on the used algorithm.'),Ezc),Oxc),cU),fgb(Dxc)),xz(pz(UE,1),cKd,2,6,['de.cau.cs.kieler.alignment']))));qwc(a,new ixc(vxc(yxc(xxc(zxc(sxc(wxc(txc(uxc(new Axc,VMd),''),'Aspect Ratio'),'The desired aspect ratio of the drawing, that is the quotient of width by height.'),Nxc),yE),fgb(Exc)),xz(pz(UE,1),cKd,2,6,['de.cau.cs.kieler.aspectRatio']))));qwc(a,new ixc(vxc(yxc(xxc(zxc(sxc(wxc(txc(uxc(new Axc,aSd),''),'Bend Points'),"A fixed list of bend points for the edge. This is used by the 'Fixed Layout' algorithm to specify a pre-defined routing for an edge. The vector chain must include the source point, any bend points, and the target point, so it must have at least two points."),Rxc),_T),fgb(Bxc)),xz(pz(UE,1),cKd,2,6,['de.cau.cs.kieler.bendPoints']))));qwc(a,new ixc(vxc(yxc(xxc(zxc(rxc(sxc(wxc(txc(uxc(new Axc,hQd),''),'Debug Mode'),'Whether additional debug information shall be generated.'),(B3(),B3(),false)),Mxc),tE),fgb(Exc)),xz(pz(UE,1),cKd,2,6,['de.cau.cs.kieler.debugMode']))));qwc(a,new ixc(vxc(yxc(xxc(zxc(rxc(sxc(wxc(txc(uxc(new Axc,oQd),''),yMd),'Overall direction of edges: horizontal (right / left) or vertical (down / up).'),Mzc),Oxc),gU),fgb(Exc)),xz(pz(UE,1),cKd,2,6,['de.cau.cs.kieler.direction']))));qwc(a,new ixc(vxc(yxc(xxc(zxc(rxc(sxc(wxc(txc(uxc(new Axc,OPd),''),'Edge Routing'),'What kind of edge routing style should be applied for the content of a parent node. Algorithms may also set this option to single edges in order to mark them as splines. The bend point list of edges with this option set to SPLINES must be interpreted as control points for a piecewise cubic spline.'),Rzc),Oxc),iU),fgb(Exc)),xz(pz(UE,1),cKd,2,6,['de.cau.cs.kieler.edgeRouting']))));qwc(a,new ixc(vxc(yxc(xxc(zxc(rxc(sxc(wxc(txc(uxc(new Axc,ZRd),''),'Expand Nodes'),'If active, nodes are expanded to fill the area of their parent.'),(null,false)),Mxc),tE),fgb(Exc)),xz(pz(UE,1),cKd,2,6,['de.cau.cs.kieler.expandNodes']))));qwc(a,new ixc(vxc(yxc(xxc(zxc(rxc(sxc(wxc(txc(uxc(new Axc,jQd),''),'Hierarchy Handling'),'If this option is set to SEPARATE_CHILDREN, each hierarchy level of the graph is processed independently, possibly by different layout algorithms, beginning with the lowest level. If it is set to INCLUDE_CHILDREN, the algorithm is responsible to process all hierarchy levels that are contained in the associated parent node. If the root node is set to inherit (or not set at all), the default behavior is SEPARATE_CHILDREN.'),Wzc),Oxc),mU),ggb(Exc,xz(pz(UT,1),jKd,163,0,[Dxc]))),xz(pz(UE,1),cKd,2,6,['de.cau.cs.kieler.hierarchyHandling']))));qwc(a,new ixc(yxc(xxc(zxc(rxc(sxc(wxc(txc(uxc(new Axc,WMd),''),'Padding'),"The padding to be left to a parent element's border when placing child elements. This can also serve as an output option of a layout algorithm if node size calculation is setup appropriately."),pAc),Rxc),ZT),ggb(Exc,xz(pz(UT,1),jKd,163,0,[Dxc])))));qwc(a,new ixc(yxc(xxc(zxc(rxc(sxc(wxc(txc(uxc(new Axc,vNd),''),'Interactive'),'Whether the algorithm should be run in interactive mode for the content of a parent node. What this means exactly depends on how the specific algorithm interprets this option. Usually in the interactive mode algorithms try to modify the current layout as little as possible.'),(null,false)),Mxc),tE),fgb(Exc))));qwc(a,new ixc(vxc(yxc(xxc(zxc(rxc(sxc(wxc(txc(uxc(new Axc,wNd),''),'Port Constraints'),'Defines constraints of the position of the ports of a node.'),CAc),Oxc),pU),fgb(Dxc)),xz(pz(UE,1),cKd,2,6,['de.cau.cs.kieler.portConstraints']))));qwc(a,new ixc(vxc(yxc(xxc(zxc(sxc(wxc(txc(uxc(new Axc,HQd),''),'Position'),"The position of a node, port, or label. This is used by the 'Fixed Layout' algorithm to specify a pre-defined position."),Rxc),aU),ggb(Dxc,xz(pz(UT,1),jKd,163,0,[Fxc,Cxc]))),xz(pz(UE,1),cKd,2,6,['de.cau.cs.kieler.position']))));qwc(a,new ixc(vxc(yxc(xxc(zxc(sxc(wxc(txc(uxc(new Axc,qNd),''),'Priority'),'Defines the priority of an object; its meaning depends on the specific layout algorithm and the context where it is used.'),Qxc),GE),ggb(Dxc,xz(pz(UT,1),jKd,163,0,[Bxc]))),xz(pz(UE,1),cKd,2,6,['de.cau.cs.kieler.priority']))));qwc(a,new ixc(vxc(yxc(xxc(zxc(sxc(wxc(txc(uxc(new Axc,tNd),''),'Randomization Seed'),'Seed used for pseudo-random number generators to control the layout algorithm. If the value is 0, the seed shall be determined pseudo-randomly (e.g. from the system time).'),Qxc),GE),fgb(Exc)),xz(pz(UE,1),cKd,2,6,['de.cau.cs.kieler.randomSeed']))));qwc(a,new ixc(vxc(yxc(xxc(zxc(sxc(wxc(txc(uxc(new Axc,uNd),''),'Separate Connected Components'),'Whether each connected component should be processed separately.'),Mxc),tE),fgb(Exc)),xz(pz(UE,1),cKd,2,6,['de.cau.cs.kieler.separateConnComp']))));qwc(a,new ixc(vxc(yxc(xxc(zxc(rxc(sxc(wxc(txc(uxc(new Axc,yQd),''),'Junction Points'),'This option is not used as option, but as output of the layout algorithms. It is attached to edges and determines the points where junction symbols should be drawn in order to represent hyperedges with orthogonal routing. Whether such points are computed depends on the chosen layout algorithm and edge routing style. The points are put into the vector chain with no specific order.'),aAc),Rxc),_T),fgb(Bxc)),xz(pz(UE,1),cKd,2,6,['de.cau.cs.kieler.junctionPoints']))));qwc(a,new ixc(vxc(yxc(xxc(zxc(rxc(sxc(wxc(txc(uxc(new Axc,CQd),''),'Comment Box'),'Whether the node should be regarded as a comment box instead of a regular node. In that case its placement should be similar to how labels are handled. Any edges incident to a comment box specify to which graph elements the comment is related.'),(null,false)),Mxc),tE),fgb(Dxc)),xz(pz(UE,1),cKd,2,6,['de.cau.cs.kieler.commentBox']))));qwc(a,new ixc(vxc(yxc(xxc(zxc(rxc(sxc(wxc(txc(uxc(new Axc,DQd),''),'Hypernode'),'Whether the node should be handled as a hypernode.'),(null,false)),Mxc),tE),fgb(Dxc)),xz(pz(UE,1),cKd,2,6,['de.cau.cs.kieler.hypernode']))));qwc(a,new ixc(yxc(xxc(zxc(sxc(wxc(txc(uxc(new Axc,bSd),''),'Label Manager'),"Label managers can shorten labels upon a layout algorithm's request."),Rxc),XT),ggb(Exc,xz(pz(UT,1),jKd,163,0,[Cxc])))));qwc(a,new ixc(vxc(yxc(xxc(zxc(rxc(sxc(wxc(txc(uxc(new Axc,IQd),''),'Margins'),"Margins define additional space around the actual bounds of a graph element. For instance, ports or labels being placed on the outside of a node's border might introduce such a margin. The margin is used to guarantee non-overlap of other graph elements with those ports or labels."),cAc),Rxc),YT),fgb(Dxc)),xz(pz(UE,1),cKd,2,6,['de.cau.cs.kieler.margins']))));qwc(a,new ixc(vxc(yxc(xxc(zxc(rxc(sxc(wxc(txc(uxc(new Axc,fQd),''),'No Layout'),"No layout is done for the associated element. This is used to mark parts of a diagram to avoid their inclusion in the layout graph, or to mark parts of the layout graph to prevent layout engines from processing them. If you wish to exclude the contents of a compound node from automatic layout, while the node itself is still considered on its own layer, use the 'Fixed Layout' algorithm for that node."),(null,false)),Mxc),tE),ggb(Dxc,xz(pz(UT,1),jKd,163,0,[Bxc,Fxc,Cxc]))),xz(pz(UE,1),cKd,2,6,['de.cau.cs.kieler.noLayout']))));qwc(a,new ixc(vxc(yxc(xxc(zxc(rxc(sxc(wxc(txc(uxc(new Axc,cSd),''),'Scale Factor'),"The scaling factor to be applied to the corresponding node in recursive layout. It causes the corresponding node's size to be adjusted, and its ports and labels to be sized and placed accordingly after the layout of that node has been determined (and before the node itself and its siblings are arranged). The scaling is not reverted afterwards, so the resulting layout graph contains the adjusted size and position data. This option is currently not supported if 'Layout Hierarchy' is set."),1),Nxc),yE),fgb(Dxc)),xz(pz(UE,1),cKd,2,6,['de.cau.cs.kieler.scaleFactor']))));qwc(a,new ixc(vxc(yxc(xxc(zxc(rxc(sxc(wxc(txc(uxc(new Axc,dSd),''),'Animate'),'Whether the shift from the old layout to the new computed layout shall be animated.'),(null,true)),Mxc),tE),fgb(Exc)),xz(pz(UE,1),cKd,2,6,['de.cau.cs.kieler.animate']))));qwc(a,new ixc(vxc(yxc(xxc(zxc(rxc(sxc(wxc(txc(uxc(new Axc,eSd),''),'Animation Time Factor'),"Factor for computation of animation time. The higher the value, the longer the animation time. If the value is 0, the resulting time is always equal to the minimum defined by 'Minimal Animation Time'."),d5(100)),Qxc),GE),fgb(Exc)),xz(pz(UE,1),cKd,2,6,['de.cau.cs.kieler.animTimeFactor']))));qwc(a,new ixc(vxc(yxc(xxc(zxc(rxc(sxc(wxc(txc(uxc(new Axc,fSd),''),'Layout Ancestors'),'Whether the hierarchy levels on the path from the selected element to the root of the diagram shall be included in the layout process.'),(null,false)),Mxc),tE),fgb(Exc)),xz(pz(UE,1),cKd,2,6,['de.cau.cs.kieler.layoutAncestors']))));qwc(a,new ixc(vxc(yxc(xxc(zxc(rxc(sxc(wxc(txc(uxc(new Axc,gSd),''),'Maximal Animation Time'),'The maximal time for animations, in milliseconds.'),d5(4000)),Qxc),GE),fgb(Exc)),xz(pz(UE,1),cKd,2,6,['de.cau.cs.kieler.maxAnimTime']))));qwc(a,new ixc(vxc(yxc(xxc(zxc(rxc(sxc(wxc(txc(uxc(new Axc,hSd),''),'Minimal Animation Time'),'The minimal time for animations, in milliseconds.'),d5(400)),Qxc),GE),fgb(Exc)),xz(pz(UE,1),cKd,2,6,['de.cau.cs.kieler.minAnimTime']))));qwc(a,new ixc(vxc(yxc(xxc(zxc(rxc(sxc(wxc(txc(uxc(new Axc,iSd),''),'Progress Bar'),'Whether a progress bar shall be displayed during layout computations.'),(null,false)),Mxc),tE),fgb(Exc)),xz(pz(UE,1),cKd,2,6,['de.cau.cs.kieler.progressBar']))));qwc(a,new ixc(yxc(xxc(zxc(rxc(sxc(wxc(txc(uxc(new Axc,jSd),''),'Validate Options'),'Whether layout options shall be validated before any layout algorithm is applied. If this option is enabled and at least one error is found, the layout process is aborted and a message is shown to the user.'),(null,true)),Mxc),tE),fgb(Exc))));qwc(a,new ixc(vxc(yxc(xxc(zxc(rxc(sxc(wxc(txc(uxc(new Axc,kSd),''),'Zoom to Fit'),'Whether the zoom level shall be set to view the whole diagram after layout.'),(null,false)),Mxc),tE),fgb(Exc)),xz(pz(UE,1),cKd,2,6,['de.cau.cs.kieler.zoomToFit']))));qwc(a,new ixc(yxc(xxc(zxc(rxc(sxc(wxc(txc(uxc(new Axc,$Rd),'box'),'Box Layout Mode'),'Configures the packing mode used by the {@link BoxLayoutProvider}. If SIMPLE is not required (neither priorities are used nor the interactive mode), GROUP_DEC can improve the packing and decrease the area. GROUP_MIXED and GROUP_INC may, in very specific scenarios, work better.'),Izc),Oxc),zU),fgb(Exc))));qwc(a,new ixc(vxc(yxc(xxc(zxc(rxc(sxc(wxc(txc(uxc(new Axc,TMd),PPd),'Components Spacing'),"Spacing to be preserved between pairs of connected components. This option is only relevant if 'separateConnectedComponents' is activated."),12),Nxc),yE),fgb(Exc)),xz(pz(UE,1),cKd,2,6,['de.cau.cs.kieler.borderSpacing']))));qwc(a,new ixc(yxc(xxc(zxc(rxc(sxc(wxc(txc(uxc(new Axc,ZPd),PPd),'Edge Spacing'),'Spacing to be preserved between any two edges. Note that while this can somewhat easily be satisfied for the segments of orthogonally drawn edges, it is harder for general polylines or splines.'),10),Nxc),yE),fgb(Exc))));qwc(a,new ixc(yxc(xxc(zxc(rxc(sxc(wxc(txc(uxc(new Axc,sNd),PPd),'Edge Label Spacing'),"The minimal distance to be preserved between a label and the edge it is associated with. Note that the placement of a label is influenced by the 'edgelabels.placement' option."),2),Nxc),yE),fgb(Exc))));qwc(a,new ixc(yxc(xxc(zxc(rxc(sxc(wxc(txc(uxc(new Axc,$Pd),PPd),'Edge Node Spacing'),'Spacing to be preserved between nodes and edges.'),10),Nxc),yE),fgb(Exc))));qwc(a,new ixc(vxc(yxc(xxc(zxc(rxc(sxc(wxc(txc(uxc(new Axc,_Pd),PPd),'Label Spacing'),'Determines the amount of space to be left between two labels of the same graph element.'),0),Nxc),yE),fgb(Exc)),xz(pz(UE,1),cKd,2,6,[pSd]))));qwc(a,new ixc(vxc(yxc(xxc(zxc(rxc(sxc(wxc(txc(uxc(new Axc,bQd),PPd),'Label Node Spacing'),"Spacing to be preserved between labels and the border of node they are associated with. Note that the placement of a label is influenced by the 'nodelabels.placement' option."),5),Nxc),yE),fgb(Exc)),xz(pz(UE,1),cKd,2,6,[pSd]))));qwc(a,new ixc(yxc(xxc(zxc(rxc(sxc(wxc(txc(uxc(new Axc,aQd),PPd),'Label Port Spacing'),"Spacing to be preserved between labels and the ports they are associated with. Note that the placement of a label is influenced by the 'portlabels.placement' option."),1),Nxc),yE),fgb(Exc))));qwc(a,new ixc(vxc(yxc(xxc(zxc(rxc(sxc(wxc(txc(uxc(new Axc,rNd),PPd),'Node Spacing'),'The minimal distance to be preserved between each two nodes.'),20),Nxc),yE),fgb(Exc)),xz(pz(UE,1),cKd,2,6,['de.cau.cs.kieler.spacing']))));qwc(a,new ixc(vxc(yxc(xxc(zxc(rxc(sxc(wxc(txc(uxc(new Axc,cQd),PPd),'Port Spacing'),'Spacing between pairs of ports of the same node.'),10),Nxc),yE),ggb(Exc,xz(pz(UT,1),jKd,163,0,[Dxc]))),xz(pz(UE,1),cKd,2,6,['de.cau.cs.kieler.portSpacing']))));qwc(a,new ixc(yxc(xxc(zxc(sxc(wxc(txc(uxc(new Axc,dQd),PPd),'Individual Spacing Override'),'In general spacing values apply to the children of the hierarchical node (possibly the root node) for which the values are actually specified. Hereby, the children include ports, edges, and labels.'),Rxc),KU),ggb(Dxc,xz(pz(UT,1),jKd,163,0,[Bxc,Fxc,Cxc])))));qwc(a,new ixc(yxc(xxc(zxc(rxc(sxc(wxc(txc(uxc(new Axc,JQd),PPd),'Additional Port Space'),'Additional space around the sets of ports on each node side. For each side of a node, this option can reserve additional space before and after the ports on each side. For example, a top spacing of 20 makes sure that the first port on the western and eastern side is 20 units away from the northern border.'),YAc),Rxc),YT),fgb(Exc))));qwc(a,new ixc(vxc(yxc(xxc(zxc(sxc(wxc(txc(uxc(new Axc,GQd),qSd),'Layout Partition'),"Partition to which the node belongs to. If 'layoutPartitions' is true, all nodes are expected to have a partition."),Qxc),GE),ggb(Exc,xz(pz(UT,1),jKd,163,0,[Dxc]))),xz(pz(UE,1),cKd,2,6,['de.cau.cs.kieler.partition']))));qwc(a,new ixc(vxc(yxc(xxc(zxc(rxc(sxc(wxc(txc(uxc(new Axc,FQd),qSd),'Layout Partitioning'),'Whether to activate partitioned layout.'),rAc),Mxc),tE),fgb(Exc)),xz(pz(UE,1),cKd,2,6,['de.cau.cs.kieler.layoutPartitions']))));qwc(a,new ixc(vxc(yxc(xxc(zxc(rxc(sxc(wxc(txc(uxc(new Axc,lSd),rSd),'Node Label Padding'),'Define padding for node labels that are placed inside of a node.'),eAc),Rxc),ZT),fgb(Dxc)),xz(pz(UE,1),cKd,2,6,['de.cau.cs.kieler.nodeLabelInset']))));qwc(a,new ixc(vxc(yxc(xxc(zxc(rxc(sxc(wxc(txc(uxc(new Axc,pQd),rSd),'Node Label Placement'),"Hints for where node labels are to be placed; if empty, the node label's position is not modified."),gAc),Pxc),nU),ggb(Dxc,xz(pz(UT,1),jKd,163,0,[Cxc]))),xz(pz(UE,1),cKd,2,6,['de.cau.cs.kieler.nodeLabelPlacement']))));qwc(a,new ixc(vxc(yxc(xxc(zxc(rxc(sxc(wxc(txc(uxc(new Axc,sQd),sSd),'Port Alignment'),'Defines the default port distribution for a node. May be overridden for each side individually.'),uAc),Oxc),oU),fgb(Dxc)),xz(pz(UE,1),cKd,2,6,['de.cau.cs.kieler.portAlignment']))));qwc(a,new ixc(vxc(yxc(xxc(zxc(sxc(wxc(txc(uxc(new Axc,tQd),sSd),'Port Alignment (North)'),"Defines how ports on the northern side are placed, overriding the node's general port alignment."),Oxc),oU),fgb(Dxc)),xz(pz(UE,1),cKd,2,6,['de.cau.cs.kieler.portAlignment.north']))));qwc(a,new ixc(vxc(yxc(xxc(zxc(sxc(wxc(txc(uxc(new Axc,uQd),sSd),'Port Alignment (South)'),"Defines how ports on the southern side are placed, overriding the node's general port alignment."),Oxc),oU),fgb(Dxc)),xz(pz(UE,1),cKd,2,6,['de.cau.cs.kieler.portAlignment.south']))));qwc(a,new ixc(vxc(yxc(xxc(zxc(sxc(wxc(txc(uxc(new Axc,vQd),sSd),'Port Alignment (West)'),"Defines how ports on the western side are placed, overriding the node's general port alignment."),Oxc),oU),fgb(Dxc)),xz(pz(UE,1),cKd,2,6,['de.cau.cs.kieler.portAlignment.west']))));qwc(a,new ixc(vxc(yxc(xxc(zxc(sxc(wxc(txc(uxc(new Axc,wQd),sSd),'Port Alignment (East)'),"Defines how ports on the eastern side are placed, overriding the node's general port alignment."),Oxc),oU),fgb(Dxc)),xz(pz(UE,1),cKd,2,6,['de.cau.cs.kieler.portAlignment.east']))));qwc(a,new ixc(yxc(xxc(zxc(rxc(sxc(wxc(txc(uxc(new Axc,mQd),tSd),'Node Size Constraints'),'Constraints for determining node sizes. Each member of the set specifies something that should be taken into account when calculating node sizes. The empty set corresponds to node sizes being fixed.'),iAc),Pxc),uU),fgb(Dxc))));qwc(a,new ixc(yxc(xxc(zxc(rxc(sxc(wxc(txc(uxc(new Axc,nQd),tSd),'Node Size Options'),'Options modifying the behavior of the size constraints set on a node. Each member of the set specifies something that should be taken into account when calculating node sizes. The empty set corresponds to no further modifications.'),mAc),Pxc),vU),fgb(Dxc))));qwc(a,new ixc(yxc(xxc(zxc(rxc(sxc(wxc(txc(uxc(new Axc,xQd),tSd),'Node Size Minimum'),'The minimal size to which a node can be reduced.'),kAc),Rxc),aU),fgb(Dxc))));qwc(a,new ixc(vxc(yxc(xxc(zxc(rxc(sxc(wxc(txc(uxc(new Axc,zQd),XPd),'Edge Label Placement'),'Gives a hint on where to put edge labels.'),Pzc),Oxc),hU),fgb(Cxc)),xz(pz(UE,1),cKd,2,6,['de.cau.cs.kieler.edgeLabelPlacement']))));qwc(a,new ixc(yxc(xxc(zxc(rxc(sxc(wxc(txc(uxc(new Axc,AQd),XPd),'Inline Edge Labels'),"If true, an edge label is placed directly on its edge. May only apply to center edge labels. This kind of label placement is only advisable if the label's rendering is such that it is not crossed by its edge and thus stays legible."),(null,false)),Mxc),tE),fgb(Cxc))));qwc(a,new ixc(vxc(yxc(xxc(zxc(sxc(wxc(txc(uxc(new Axc,mSd),'font'),'Font Name'),'Font name used for a label.'),Sxc),UE),fgb(Cxc)),xz(pz(UE,1),cKd,2,6,['de.cau.cs.kieler.fontName']))));qwc(a,new ixc(vxc(yxc(xxc(zxc(sxc(wxc(txc(uxc(new Axc,nSd),'font'),'Font Size'),'Font size used for a label.'),Qxc),GE),fgb(Cxc)),xz(pz(UE,1),cKd,2,6,['de.cau.cs.kieler.fontSize']))));qwc(a,new ixc(vxc(yxc(xxc(zxc(sxc(wxc(txc(uxc(new Axc,EQd),uSd),'Port Anchor Offset'),'The offset to the port position where connections shall be attached.'),Rxc),aU),fgb(Fxc)),xz(pz(UE,1),cKd,2,6,['de.cau.cs.kieler.portAnchor']))));qwc(a,new ixc(vxc(yxc(xxc(zxc(sxc(wxc(txc(uxc(new Axc,BQd),uSd),'Port Index'),"The index of a port in the fixed order around a node. The order is assumed as clockwise, starting with the leftmost port on the top side. This option must be set if 'Port Constraints' is set to FIXED_ORDER and no specific positions are given for the ports. Additionally, the option 'Port Side' must be defined in this case."),Qxc),GE),fgb(Fxc)),xz(pz(UE,1),cKd,2,6,['de.cau.cs.kieler.portIndex']))));qwc(a,new ixc(vxc(yxc(xxc(zxc(rxc(sxc(wxc(txc(uxc(new Axc,gQd),uSd),'Port Side'),"The side of a node on which a port is situated. This option must be set if 'Port Constraints' is set to FIXED_SIDE or FIXED_ORDER and no specific positions are given for the ports."),IAc),Oxc),rU),fgb(Fxc)),xz(pz(UE,1),cKd,2,6,['de.cau.cs.kieler.portSide']))));qwc(a,new ixc(vxc(yxc(xxc(zxc(sxc(wxc(txc(uxc(new Axc,eQd),uSd),'Port Border Offset'),"The offset of ports on the node border. With a positive offset the port is moved outside of the node, while with a negative offset the port is moved towards the inside. An offset of 0 means that the port is placed directly on the node border, i.e. if the port side is north, the port's south border touches the nodes's north border; if the port side is east, the port's west border touches the nodes's east border; if the port side is south, the port's north border touches the node's south border; if the port side is west, the port's east border touches the node's west border."),Nxc),yE),fgb(Fxc)),xz(pz(UE,1),cKd,2,6,['de.cau.cs.kieler.offset']))));qwc(a,new ixc(vxc(yxc(xxc(zxc(rxc(sxc(wxc(txc(uxc(new Axc,qQd),vSd),'Port Label Placement'),'Decides on a placement method for port labels.'),GAc),Oxc),qU),fgb(Dxc)),xz(pz(UE,1),cKd,2,6,['de.cau.cs.kieler.portLabelPlacement']))));qwc(a,new ixc(yxc(xxc(zxc(rxc(sxc(wxc(txc(uxc(new Axc,rQd),vSd),'Port Labels Next to Port'),"Usually, inside port labels of hierarchical nodes are placed not next to their port, but with an offset to avoid edge-label crossings. The offset is not necessary if the port has no connections that would cross the label, but is usually applied anyway to keep things uniform. Setting this option to true places labels next to their ports if they won't be crossed by edges."),(null,false)),Mxc),tE),fgb(Dxc))));qwc(a,new ixc(vxc(yxc(xxc(zxc(rxc(sxc(wxc(txc(uxc(new Axc,kQd),wSd),'Activate Inside Self Loops'),"Whether this node allows to route self loops inside of it instead of around it. If set to true, this will make the node a compound node if it isn't already, and will require the layout algorithm to support compound nodes with hierarchical ports."),(null,false)),Mxc),tE),fgb(Dxc)),xz(pz(UE,1),cKd,2,6,[xSd]))));qwc(a,new ixc(vxc(yxc(xxc(zxc(rxc(sxc(wxc(txc(uxc(new Axc,lQd),wSd),'Inside Self Loop'),'Whether a self loop should be routed inside a node instead of around that node.'),(null,false)),Mxc),tE),fgb(Bxc)),xz(pz(UE,1),cKd,2,6,[xSd]))));qwc(a,new ixc(vxc(yxc(xxc(zxc(rxc(sxc(wxc(txc(uxc(new Axc,UMd),'edge'),'Edge Thickness'),'The thickness of an edge. This is a hint on the line width used to draw an edge, possibly requiring more space to be reserved for it.'),1),Nxc),yE),fgb(Bxc)),xz(pz(UE,1),cKd,2,6,['de.cau.cs.kieler.thickness']))));qwc(a,new ixc(vxc(yxc(xxc(zxc(rxc(sxc(wxc(txc(uxc(new Axc,oSd),'edge'),'Edge Type'),'The type of an edge. This is usually used for UML class diagrams, where associations must be handled differently from generalizations.'),Tzc),Oxc),jU),fgb(Bxc)),xz(pz(UE,1),cKd,2,6,['de.cau.cs.kieler.edgeType']))));pwc(a,new Svc(Zvc(_vc($vc(new awc,YPd),'Layered'),'The layer-based method was introduced by Sugiyama, Tagawa and Toda in 1981. It emphasizes the direction of edges by pointing as many edges as possible into the same direction. The nodes are arranged in layers, which are sometimes called "hierarchies", and then reordered such that the number of edge crossings is minimized. Afterwards, concrete coordinates are computed for the nodes and edge bend points.')));pwc(a,new Svc(Zvc(_vc($vc(new awc,'org.eclipse.elk.orthogonal'),'Orthogonal'),'Orthogonal methods that follow the "topology-shape-metrics" approach by Batini, Nardelli and Tamassia \'86. The first phase determines the topology of the drawing by applying a planarization technique, which results in a planar representation of the graph. The orthogonal shape is computed in the second phase, which aims at minimizing the number of edge bends, and is called orthogonalization. The third phase leads to concrete coordinates for nodes and edge bend points by applying a compaction method, thus defining the metrics.')));pwc(a,new Svc(Zvc(_vc($vc(new awc,pNd),'Force'),'Layout algorithms that follow physical analogies by simulating a system of attractive and repulsive forces. The first successful method of this kind was proposed by Eades in 1984.')));pwc(a,new Svc(Zvc(_vc($vc(new awc,'org.eclipse.elk.circle'),'Circle'),'Circular layout algorithms emphasize cycles or biconnected components of a graph by arranging them in circles. This is useful if a drawing is desired where such components are clearly grouped, or where cycles are shown as prominent OPTIONS of the graph.')));pwc(a,new Svc(Zvc(_vc($vc(new awc,pRd),'Tree'),'Specialized layout methods for trees, i.e. acyclic graphs. The regular structure of graphs that have no undirected cycles can be emphasized using an algorithm of this type.')));pwc(a,new Svc(Zvc(_vc($vc(new awc,'org.eclipse.elk.planar'),'Planar'),'Algorithms that require a planar or upward planar graph. Most of these algorithms are theoretically interesting, but not practically usable.')));pwc(a,new Svc(Zvc(_vc($vc(new awc,GRd),'Radial'),'Radial layout algorithms usually position the nodes of the graph on concentric circles.')));aCc((new bCc,a));wzc((new xzc,a));TDc((new UDc,a))};var Czc,Dzc,Ezc,Fzc,Gzc,Hzc,Izc,Jzc,Kzc,Lzc,Mzc,Nzc,Ozc,Pzc,Qzc,Rzc,Szc,Tzc,Uzc,Vzc,Wzc,Xzc,Yzc,Zzc,$zc,_zc,aAc,bAc,cAc,dAc,eAc,fAc,gAc,hAc,iAc,jAc,kAc,lAc,mAc,nAc,oAc,pAc,qAc,rAc,sAc,tAc,uAc,vAc,wAc,xAc,yAc,zAc,AAc,BAc,CAc,DAc,EAc,FAc,GAc,HAc,IAc,JAc,KAc,LAc,MAc,NAc,OAc,PAc,QAc,RAc,SAc,TAc,UAc,VAc,WAc,XAc,YAc,ZAc;var fU=k4(WRd,'CoreOptions',785);c3(110,23,{3:1,34:1,23:1,110:1},kBc);var bBc,cBc,dBc,eBc,fBc;var gU=l4(WRd,yMd,110,zE,mBc,lBc);var nBc;c3(226,23,{3:1,34:1,23:1,226:1},uBc);var pBc,qBc,rBc,sBc;var hU=l4(WRd,'EdgeLabelPlacement',226,zE,wBc,vBc);var xBc;c3(197,23,{3:1,34:1,23:1,197:1},EBc);var zBc,ABc,BBc,CBc;var iU=l4(WRd,'EdgeRouting',197,zE,GBc,FBc);var HBc;c3(289,23,{3:1,34:1,23:1,289:1},QBc);var JBc,KBc,LBc,MBc,NBc,OBc;var jU=l4(WRd,'EdgeType',289,zE,SBc,RBc);var TBc;c3(853,1,uMd,bCc);_.ue=function cCc(a){aCc(a)};var VBc,WBc,XBc,YBc,ZBc,$Bc;var lU=k4(WRd,'FixedLayouterOptions',853);c3(854,1,{},dCc);_.Be=function eCc(){var a;return a=new $Fc,a};_.Ce=function fCc(a){};var kU=k4(WRd,'FixedLayouterOptions/FixedFactory',854);c3(316,23,{3:1,34:1,23:1,316:1},kCc);var gCc,hCc,iCc;var mU=l4(WRd,'HierarchyHandling',316,zE,mCc,lCc);var nCc;c3(86,23,{3:1,34:1,23:1,86:1},zCc);var pCc,qCc,rCc,sCc,tCc,uCc,vCc,wCc,xCc;var nU=l4(WRd,'NodeLabelPlacement',86,zE,BCc,ACc);var CCc;c3(225,23,{3:1,34:1,23:1,225:1},KCc);var ECc,FCc,GCc,HCc,ICc;var oU=l4(WRd,'PortAlignment',225,zE,MCc,LCc);var NCc;c3(83,23,{3:1,34:1,23:1,83:1},YCc);var PCc,QCc,RCc,SCc,TCc,UCc;var pU=l4(WRd,'PortConstraints',83,zE,$Cc,ZCc);var _Cc;c3(275,23,{3:1,34:1,23:1,275:1},fDc);var bDc,cDc,dDc;var qU=l4(WRd,'PortLabelPlacement',275,zE,hDc,gDc);var iDc;c3(69,23,{3:1,34:1,23:1,69:1},HDc);var kDc,lDc,mDc,nDc,oDc,pDc,qDc,rDc,sDc,tDc,uDc,vDc,wDc,xDc,yDc,zDc,ADc,BDc,CDc,DDc,EDc;var rU=l4(WRd,'PortSide',69,zE,KDc,JDc);var LDc;c3(857,1,uMd,UDc);_.ue=function VDc(a){TDc(a)};var NDc,ODc,PDc,QDc,RDc;var tU=k4(WRd,'RandomLayouterOptions',857);c3(858,1,{},WDc);_.Be=function XDc(){var a;return a=new wGc,a};_.Ce=function YDc(a){};var sU=k4(WRd,'RandomLayouterOptions/RandomFactory',858);c3(344,23,{3:1,34:1,23:1,344:1},cEc);var ZDc,$Dc,_Dc,aEc;var uU=l4(WRd,'SizeConstraint',344,zE,eEc,dEc);var fEc;c3(239,23,{3:1,34:1,23:1,239:1},rEc);var hEc,iEc,jEc,kEc,lEc,mEc,nEc,oEc,pEc;var vU=l4(WRd,'SizeOptions',239,zE,tEc,sEc);var uEc;c3(313,1,{},CEc,DEc,EEc);_.b=false;_.c=0;_.d=-1;_.e=0;_.f=false;_.j=0;var wU=k4(MRd,'BasicProgressMonitor',313);c3(848,244,GMd,NEc);_.Ae=function OEc(a,b){var c,d,e,f,g,h,i,j,k,l;xEc(b,'Box layout',2);f=Vpb(nA(AOc(a,(vzc(),uzc))));g=kA(AOc(a,rzc),119);c=Vpb(mA(AOc(a,mzc)));d=Vpb(mA(AOc(a,nzc)));e=kA(AOc(a,lzc),288);switch(e.g){case 0:h=(i=new zib((!a.a&&(a.a=new zkd(MV,a,10,11)),a.a)),bdb(),Vib(i,new QEc(d)),i);j=kA(AOc(a,pzc),9);j.a=$wnd.Math.max(j.a-g.b-g.c,0);j.b=$wnd.Math.max(j.b-g.d-g.a,0);k=nA(AOc(a,kzc));(k==null||(Npb(k),k)<=0)&&(k=1.3);l=KEc(h,f,g,j.a,j.b,c,(Npb(k),k));IFc(a,l.a,l.b,false,true);break;default:LEc(a,f,g,c);}zEc(b)};var DU=k4(MRd,'BoxLayoutProvider',848);c3(849,1,lKd,QEc);_.Ld=function REc(a,b){return PEc(this,kA(a,35),kA(b,35))};_.Fb=function SEc(a){return this===a};_.Md=function TEc(){return new jfb(this)};_.a=false;var xU=k4(MRd,'BoxLayoutProvider/1',849);c3(145,1,{145:1},_Ec,aFc);_.Ib=function bFc(){return this.c?aTc(this.c):vg(this.b)};var yU=k4(MRd,'BoxLayoutProvider/Group',145);c3(288,23,{3:1,34:1,23:1,288:1},hFc);var cFc,dFc,eFc,fFc;var zU=l4(MRd,'BoxLayoutProvider/PackingMode',288,zE,jFc,iFc);var kFc;c3(850,1,lKd,mFc);_.Fb=function oFc(a){return this===a};_.Md=function pFc(){return new jfb(this)};_.Ld=function nFc(a,b){return -C4(UEc(kA(a,145)),UEc(kA(b,145)))};var AU=k4(MRd,'BoxLayoutProvider/lambda$0$Type',850);c3(851,1,lKd,qFc);_.Fb=function sFc(a){return this===a};_.Md=function tFc(){return new jfb(this)};_.Ld=function rFc(a,b){return C4(UEc(kA(a,145)),UEc(kA(b,145)))};var BU=k4(MRd,'BoxLayoutProvider/lambda$1$Type',851);c3(852,1,lKd,uFc);_.Fb=function wFc(a){return this===a};_.Md=function xFc(){return new jfb(this)};_.Ld=function vFc(a,b){return C4(UEc(kA(a,145)),UEc(kA(b,145)))};var CU=k4(MRd,'BoxLayoutProvider/lambda$2$Type',852);c3(833,1,{},NFc);_.td=function OFc(a){EFc(this.a,this.b,a)};_.a=0;_.b=0;var EU=k4(MRd,'ElkUtil/lambda$0$Type',833);c3(834,1,{},PFc);_.td=function QFc(a){FFc(this.a,this.b,a)};_.a=0;_.b=0;var FU=k4(MRd,'ElkUtil/lambda$1$Type',834);c3(835,1,{},RFc);_.td=function SFc(a){GFc(this.a,this.b,a)};_.a=0;_.b=0;var GU=k4(MRd,'ElkUtil/lambda$2$Type',835);c3(322,1,{34:1,322:1},UFc);_.vd=function VFc(a){return TFc(this,kA(a,210))};_.Fb=function WFc(a){var b;if(sA(a,322)){b=kA(a,322);return this.a==b.a}return false};_.Hb=function XFc(){return zA(this.a)};_.Ib=function YFc(){return this.a+' (exclusive)'};_.a=0;var HU=k4(MRd,'ExclusiveBounds/ExclusiveLowerBound',322);c3(963,244,GMd,$Fc);_.Ae=function _Fc(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,A,B,C;xEc(b,zSd,1);f=kA(AOc(a,($Ac(),Qzc)),197);m=0;n=0;for(t=new a0c((!a.a&&(a.a=new zkd(MV,a,10,11)),a.a));t.e!=t.i._b();){r=kA($_c(t),35);C=kA(AOc(r,(_Bc(),$Bc)),9);if(C){pPc(r,C.a,C.b);if(kA(AOc(r,WBc),185).pc((bEc(),ZDc))){o=kA(AOc(r,XBc),9);o.a>0&&o.b>0&&IFc(r,o.a,o.b,true,true)}}m=$wnd.Math.max(m,r.i+r.g);n=$wnd.Math.max(n,r.j+r.f);for(k=new a0c((!r.n&&(r.n=new zkd(LV,r,1,7)),r.n));k.e!=k.i._b();){i=kA($_c(k),137);C=kA(AOc(i,$Bc),9);!!C&&pPc(i,C.a,C.b);m=$wnd.Math.max(m,r.i+i.i+i.g);n=$wnd.Math.max(n,r.j+i.j+i.f)}for(w=new a0c((!r.c&&(r.c=new zkd(NV,r,9,9)),r.c));w.e!=w.i._b();){v=kA($_c(w),121);C=kA(AOc(v,$Bc),9);!!C&&pPc(v,C.a,C.b);A=r.i+v.i;B=r.j+v.j;m=$wnd.Math.max(m,A+v.g);n=$wnd.Math.max(n,B+v.f);for(j=new a0c((!v.n&&(v.n=new zkd(LV,v,1,7)),v.n));j.e!=j.i._b();){i=kA($_c(j),137);C=kA(AOc(i,$Bc),9);!!C&&pPc(i,C.a,C.b);m=$wnd.Math.max(m,A+i.i+i.g);n=$wnd.Math.max(n,B+i.j+i.f)}}for(e=kl(TWc(r));So(e);){c=kA(To(e),105);l=ZFc(c);m=$wnd.Math.max(m,l.a);n=$wnd.Math.max(n,l.b)}for(d=kl(SWc(r));So(d);){c=kA(To(d),105);if(UWc(kA(WXc((!c.b&&(c.b=new pxd(HV,c,4,7)),c.b),0),97))!=a){l=ZFc(c);m=$wnd.Math.max(m,l.a);n=$wnd.Math.max(n,l.b)}}}if(f==(DBc(),zBc)){for(s=new a0c((!a.a&&(a.a=new zkd(MV,a,10,11)),a.a));s.e!=s.i._b();){r=kA($_c(s),35);for(d=kl(TWc(r));So(d);){c=kA(To(d),105);h=(g=new Vyc,g);h.b==0?COc(c,_zc,null):COc(c,_zc,h)}}}u=kA(AOc(a,(_Bc(),YBc)),119);q=m+u.b+u.c;p=n+u.d+u.a;IFc(a,q,p,true,true);zEc(b)};var IU=k4(MRd,'FixedLayoutProvider',963);c3(786,131,FMd,aGc);var KU=k4(MRd,'IndividualSpacings',786);c3(635,1,{},eGc);_.c=0;var LU=k4(MRd,'InstancePool',635);c3(48,1,{20:1,48:1},fGc);_.sc=function hGc(a){i5(this,a)};_.Fb=function gGc(a){var b,c,d;if(sA(a,48)){c=kA(a,48);b=this.a==null?c.a==null:kb(this.a,c.a);d=this.b==null?c.b==null:kb(this.b,c.b);return b&&d}else{return false}};_.Hb=function iGc(){var a,b,c,d,e,f;c=this.a==null?0:ob(this.a);a=c&AKd;b=c&-65536;f=this.b==null?0:ob(this.b);d=f&AKd;e=f&-65536;return a^e>>16&AKd|b^d<<16};_.tc=function jGc(){return new lGc(this)};_.Ib=function kGc(){return this.a==null&&this.b==null?'pair(null,null)':this.a==null?'pair(null,'+f3(this.b)+')':this.b==null?'pair('+f3(this.a)+',null)':'pair('+f3(this.a)+','+f3(this.b)+')'};var NU=k4(MRd,'Pair',48);c3(859,1,wJd,lGc);_.gc=function mGc(a){Bhb(this,a)};_.hc=function nGc(){return !this.c&&(!this.b&&this.a.a!=null||this.a.b!=null)};_.ic=function oGc(){if(!this.c&&!this.b&&this.a.a!=null){this.b=true;return this.a.a}else if(!this.c&&this.a.b!=null){this.c=true;return this.a.b}throw x2(new djb)};_.jc=function pGc(){this.c&&this.a.b!=null?(this.a.b=null):this.b&&this.a.a!=null&&(this.a.a=null);throw x2(new P4)};_.b=false;_.c=false;var MU=k4(MRd,'Pair/1',859);c3(404,1,{404:1},qGc);_.Fb=function rGc(a){return ejb(this.a,kA(a,404).a)&&ejb(this.c,kA(a,404).c)&&ejb(this.d,kA(a,404).d)&&ejb(this.b,kA(a,404).b)};_.Hb=function sGc(){return xcb(xz(pz(NE,1),oJd,1,5,[this.a,this.c,this.d,this.b]))};_.Ib=function tGc(){return '('+this.a+qJd+this.c+qJd+this.d+qJd+this.b+')'};var OU=k4(MRd,'Quadruple',404);c3(957,244,GMd,wGc);_.Ae=function xGc(a,b){var c,d,e,f,g;xEc(b,'Random Layout',1);if((!a.a&&(a.a=new zkd(MV,a,10,11)),a.a).i==0){zEc(b);return}f=kA(AOc(a,(SDc(),QDc)),21);!!f&&f.a!=0?(e=new bkb(f.a)):(e=new akb);c=Vpb(nA(AOc(a,NDc)));g=Vpb(nA(AOc(a,RDc)));d=kA(AOc(a,ODc),119);vGc(a,e,c,g,d);zEc(b)};var PU=k4(MRd,'RandomLayoutProvider',957);c3(490,1,{});_.Qe=function AGc(){return new Jyc(this.f.i,this.f.j)};_.xe=function BGc(a){if(BWc(a,($Ac(),AAc))){return AOc(this.f,yGc)}return AOc(this.f,a)};_.Re=function CGc(){return new Jyc(this.f.g,this.f.f)};_.Se=function DGc(){return this.g};_.ye=function EGc(a){return BOc(this.f,a)};_.Te=function FGc(a){rPc(this.f,a.a);sPc(this.f,a.b)};_.Ue=function GGc(a){qPc(this.f,a.a);oPc(this.f,a.b)};_.Ve=function HGc(a){this.g=a};_.g=0;var yGc;var QU=k4(CSd,'ElkGraphAdapters/AbstractElkGraphElementAdapter',490);c3(491,1,{741:1},IGc);_.We=function JGc(){var a,b;if(!this.b){this.b=Ur(_Oc(this.a).i);for(b=new a0c(_Oc(this.a));b.e!=b.i._b();){a=kA($_c(b),137);tbb(this.b,new NGc(a))}}return this.b};_.b=null;var RU=k4(CSd,'ElkGraphAdapters/ElkEdgeAdapter',491);c3(562,490,{},LGc);_.Xe=function MGc(){return KGc(this)};_.a=null;var SU=k4(CSd,'ElkGraphAdapters/ElkGraphAdapter',562);c3(564,490,{271:1},NGc);var TU=k4(CSd,'ElkGraphAdapters/ElkLabelAdapter',564);c3(563,490,{739:1},QGc);_.We=function TGc(){return OGc(this)};_.$e=function UGc(){var a;return a=kA(AOc(this.f,($Ac(),bAc)),135),!a&&(a=new mGb),a};_.af=function WGc(){return PGc(this)};_.cf=function YGc(a){var b;b=new pGb(a);COc(this.f,($Ac(),bAc),b)};_.df=function ZGc(a){COc(this.f,($Ac(),oAc),new ZGb(a))};_.Ye=function RGc(){return this.d};_.Ze=function SGc(){var a,b;if(!this.a){this.a=new Gbb;for(b=kl(SWc(kA(this.f,35)));So(b);){a=kA(To(b),105);tbb(this.a,new IGc(a))}}return this.a};_._e=function VGc(){var a,b;if(!this.c){this.c=new Gbb;for(b=kl(TWc(kA(this.f,35)));So(b);){a=kA(To(b),105);tbb(this.c,new IGc(a))}}return this.c};_.bf=function XGc(){return YSc(kA(this.f,35)).i!=0||Vpb(mA(kA(this.f,35).xe(($Ac(),Yzc))))};_.a=null;_.b=null;_.c=null;_.d=null;_.e=null;var UU=k4(CSd,'ElkGraphAdapters/ElkNodeAdapter',563);c3(997,490,{740:1},_Gc);_.We=function bHc(){return $Gc(this)};_.Ze=function aHc(){var a,b;if(!this.a){this.a=Tr(kA(this.f,121).Tf().i);for(b=new a0c(kA(this.f,121).Tf());b.e!=b.i._b();){a=kA($_c(b),105);tbb(this.a,new IGc(a))}}return this.a};_._e=function cHc(){var a,b;if(!this.c){this.c=Tr(kA(this.f,121).Uf().i);for(b=new a0c(kA(this.f,121).Uf());b.e!=b.i._b();){a=kA($_c(b),105);tbb(this.c,new IGc(a))}}return this.c};_.ef=function dHc(){return kA(kA(this.f,121).xe(($Ac(),HAc)),69)};_.ff=function eHc(){var a,b,c,d,e,f,g,h;d=mTc(kA(this.f,121));for(c=new a0c(kA(this.f,121).Uf());c.e!=c.i._b();){a=kA($_c(c),105);for(h=new a0c((!a.c&&(a.c=new pxd(HV,a,5,8)),a.c));h.e!=h.i._b();){g=kA($_c(h),97);if(dXc(UWc(g),d)){return true}else if(UWc(g)==d&&Vpb(mA(AOc(a,($Ac(),Zzc))))){return true}}}for(b=new a0c(kA(this.f,121).Tf());b.e!=b.i._b();){a=kA($_c(b),105);for(f=new a0c((!a.b&&(a.b=new pxd(HV,a,4,7)),a.b));f.e!=f.i._b();){e=kA($_c(f),97);if(dXc(UWc(e),d)){return true}}}return false};_.a=null;_.b=null;_.c=null;var VU=k4(CSd,'ElkGraphAdapters/ElkPortAdapter',997);c3(265,23,{3:1,34:1,23:1,265:1},lHc);var fHc,gHc,hHc,iHc;var WU=l4(DSd,'LabelSide',265,zE,nHc,mHc);var oHc;c3(676,1,{},sHc);_.td=function tHc(a){rHc(kA(a,739),true,false)};var XU=k4(DSd,'NodeLabelAndSizeCalculator/lambda$0$Type',676);c3(571,1,{},AHc);_.b=true;_.c=true;_.d=true;_.e=true;var YU=k4(DSd,lOd,571);c3(171,1,{171:1});_.j=false;_.k=false;var $U=k4(ESd,'Cell',171);c3(114,171,{114:1,171:1},EHc);_.Pf=function FHc(){return DHc(this)};_.Qf=function GHc(){var a;a=this.n;return this.a.a+a.b+a.c};var ZU=k4(ESd,'AtomicCell',114);c3(203,23,{3:1,34:1,23:1,203:1},LHc);var HHc,IHc,JHc;var _U=l4(ESd,'ContainerArea',203,zE,NHc,MHc);var OHc;c3(307,171,FSd);var aV=k4(ESd,'ContainerCell',307);c3(1179,307,FSd,hIc);_.Pf=function iIc(){var a;a=0;this.e?this.b?(a=this.b.b):!!this.a[1][1]&&(a=this.a[1][1].Pf()):(a=gIc(this,cIc(this,true)));return a>0?a+this.n.d+this.n.a:0};_.Qf=function jIc(){var a,b,c,d,e;e=0;if(this.e){this.b?(e=this.b.a):!!this.a[1][1]&&(e=this.a[1][1].Qf())}else if(this.g){e=gIc(this,aIc(this,null,true))}else{for(b=(KHc(),xz(pz(_U,1),jKd,203,0,[HHc,IHc,JHc])),c=0,d=b.length;c0?e+this.n.b+this.n.c:0};_.Rf=function kIc(){var a,b,c,d,e;if(this.g){a=aIc(this,null,false);for(c=(KHc(),xz(pz(_U,1),jKd,203,0,[HHc,IHc,JHc])),d=0,e=c.length;d0){d[0]+=this.d;c-=d[0]}if(d[2]>0){d[2]+=this.d;c-=d[2]}this.c.a=$wnd.Math.max(0,c);this.c.d=b.d+a.d+(this.c.a-c)/2;d[1]=$wnd.Math.max(d[1],c);YHc(this,IHc,b.d+a.d+d[0]-(d[1]-c)/2,d)};_.b=null;_.d=0;_.e=false;_.f=false;_.g=false;var VHc=0,WHc=0;var bV=k4(ESd,'GridContainerCell',1179);c3(419,23,{3:1,34:1,23:1,419:1},qIc);var mIc,nIc,oIc;var cV=l4(ESd,'HorizontalLabelAlignment',419,zE,sIc,rIc);var tIc;c3(267,171,{171:1,267:1},EIc,FIc,GIc);_.Pf=function HIc(){return AIc(this)};_.Qf=function IIc(){return BIc(this)};_.a=0;_.c=false;var dV=k4(ESd,'LabelCell',267);c3(219,307,{171:1,307:1,219:1},QIc);_.Pf=function RIc(){return JIc(this)};_.Qf=function SIc(){return KIc(this)};_.Rf=function TIc(){LIc(this)};_.Sf=function UIc(){MIc(this)};_.b=0;_.c=0;_.d=false;var iV=k4(ESd,'StripContainerCell',219);c3(1394,1,SLd,VIc);_.Nb=function WIc(a){return !!kA(a,171)&&kA(a,171).k};var eV=k4(ESd,'StripContainerCell/lambda$0$Type',1394);c3(1395,1,{},XIc);_.oe=function YIc(a){return kA(a,171).Qf()};var fV=k4(ESd,'StripContainerCell/lambda$1$Type',1395);c3(1396,1,SLd,ZIc);_.Nb=function $Ic(a){return !!kA(a,171)&&kA(a,171).j};var gV=k4(ESd,'StripContainerCell/lambda$2$Type',1396);c3(1397,1,{},_Ic);_.oe=function aJc(a){return kA(a,171).Pf()};var hV=k4(ESd,'StripContainerCell/lambda$3$Type',1397);c3(420,23,{3:1,34:1,23:1,420:1},fJc);var bJc,cJc,dJc;var jV=l4(ESd,'VerticalLabelAlignment',420,zE,hJc,gJc);var iJc;c3(697,1,{},lJc);_.c=0;_.d=0;_.k=0;_.s=0;_.u=0;_.B=false;var mV=k4(HSd,'NodeContext',697);c3(1177,1,lKd,oJc);_.Fb=function qJc(a){return this===a};_.Md=function rJc(){return new jfb(this)};_.Ld=function pJc(a,b){return nJc(kA(a,69),kA(b,69))};var kV=k4(HSd,'NodeContext/0methodref$comparePortSides$Type',1177);c3(1178,1,lKd,sJc);_.Fb=function uJc(a){return this===a};_.Md=function vJc(){return new jfb(this)};_.Ld=function tJc(a,b){return mJc(kA(a,111),kA(b,111))};var lV=k4(HSd,'NodeContext/1methodref$comparePortContexts$Type',1178);c3(147,23,{3:1,34:1,23:1,147:1},VJc);var wJc,xJc,yJc,zJc,AJc,BJc,CJc,DJc,EJc,FJc,GJc,HJc,IJc,JJc,KJc,LJc,MJc,NJc,OJc,PJc,QJc,RJc;var nV=l4(HSd,'NodeLabelLocation',147,zE,YJc,XJc);var ZJc;c3(111,1,{111:1},aKc);var oV=k4(HSd,'PortContext',111);c3(1182,1,{},mKc);_.oe=function nKc(a){return !kA(a,111).c?0:BIc(kA(a,111).c)};var pV=k4(ISd,'HorizontalPortPlacementSizeCalculator/lambda$0$Type',1182);c3(1184,1,{},vKc);_.td=function wKc(a){yIc(kA(a,267))};var qV=k4(ISd,'LabelPlacer/lambda$0$Type',1184);c3(1185,1,SLd,xKc);_.Nb=function yKc(a){return !!kA(a,111).c};var rV=k4(ISd,'LabelPlacer/lambda$1$Type',1185);c3(1186,1,{},zKc);_.td=function AKc(a){yIc(kA(a,111).c)};var sV=k4(ISd,'LabelPlacer/lambda$2$Type',1186);var BKc;c3(1181,1,{},HKc);_.td=function IKc(a){CKc();_Jc(kA(a,111))};var tV=k4(ISd,'NodeLabelAndSizeUtilities/lambda$0$Type',1181);c3(698,1,{},NKc);_.td=function OKc(a){LKc(this.a,this.b,a)};_.b=false;var uV=k4(ISd,'NodeLabelCellCreator/lambda$0$Type',698);c3(1180,1,{},UKc);_.td=function VKc(a){TKc(this.a,a)};var vV=k4(ISd,'PortContextCreator/lambda$0$Type',1180);var aLc;c3(1183,1,{},tLc);_.oe=function uLc(a){return !kA(a,111).c?0:AIc(kA(a,111).c)};var wV=k4(ISd,'VerticalPortPlacementSizeCalculator/lambda$0$Type',1183);c3(1525,1,{},wLc);var yV=k4(JSd,'GreedyRectangleStripOverlapRemover',1525);c3(1526,1,lKd,yLc);_.Fb=function ALc(a){return this===a};_.Md=function BLc(){return new jfb(this)};_.Ld=function zLc(a,b){return xLc(kA(a,194),kA(b,194))};var xV=k4(JSd,'GreedyRectangleStripOverlapRemover/0methodref$compareByYCoordinate$Type',1526);c3(1497,1,{},ILc);_.a=5;_.e=0;var EV=k4(JSd,'RectangleStripOverlapRemover',1497);c3(1498,1,lKd,MLc);_.Fb=function OLc(a){return this===a};_.Md=function PLc(){return new jfb(this)};_.Ld=function NLc(a,b){return JLc(kA(a,194),kA(b,194))};var zV=k4(JSd,'RectangleStripOverlapRemover/0methodref$compareLeftRectangleBorders$Type',1498);c3(1500,1,lKd,QLc);_.Fb=function SLc(a){return this===a};_.Md=function TLc(){return new jfb(this)};_.Ld=function RLc(a,b){return KLc(kA(a,194),kA(b,194))};var AV=k4(JSd,'RectangleStripOverlapRemover/1methodref$compareRightRectangleBorders$Type',1500);c3(374,23,{3:1,34:1,23:1,374:1},ZLc);var ULc,VLc,WLc,XLc;var BV=l4(JSd,'RectangleStripOverlapRemover/OverlapRemovalDirection',374,zE,_Lc,$Lc);var aMc;c3(194,1,{194:1},cMc);var CV=k4(JSd,'RectangleStripOverlapRemover/RectangleNode',194);c3(1499,1,{},dMc);_.td=function eMc(a){DLc(this.a,kA(a,194))};var DV=k4(JSd,'RectangleStripOverlapRemover/lambda$0$Type',1499);var sY=m4(KSd,'EObject');var FV=m4(LSd,MSd);var GV=m4(LSd,NSd);var KV=m4(LSd,OSd);var OV=m4(LSd,'ElkShape');var HV=m4(LSd,PSd);var JV=m4(LSd,QSd);var IV=m4(LSd,RSd);var qY=m4(KSd,SSd);var oY=m4(KSd,'EFactory');var fMc;var rY=m4(KSd,TSd);var uY=m4(KSd,'EPackage');var hMc;var jMc,kMc,lMc,mMc,nMc,oMc,pMc,qMc,rMc,sMc,tMc;var LV=m4(LSd,USd);var MV=m4(LSd,VSd);var NV=m4(LSd,WSd);c3(87,1,XSd);_.cg=function wMc(){this.dg();return null};_.dg=function xMc(){return null};_.eg=function yMc(){return this.dg(),false};_.fg=function zMc(){return false};_.gg=function AMc(a){vMc(this,a)};var hX=k4(YSd,'BasicNotifierImpl',87);c3(92,87,cTd);_.Hg=function DNc(){return PMc(this)};_.hg=function bNc(a,b){return a};_.ig=function cNc(){throw x2(new U6)};_.jg=function dNc(a){var b;return b=Wkd(kA(Gbd(this.mg(),this.og()),17)),this.yg().Cg(this,b.n,b.f,a)};_.kg=function eNc(a,b){throw x2(new U6)};_.lg=function fNc(a,b,c){return CMc(this,a,b,c)};_.mg=function gNc(){var a;if(this.ig()){a=this.ig().pj();if(a){return a}}return this.Rg()};_.ng=function hNc(){return DMc(this)};_.og=function iNc(){throw x2(new U6)};_.pg=function kNc(){var a,b;b=this.Jg().qj();!b&&this.ig().vj(b=(Ohd(),a=Xdd(Cbd(this.mg())),a==null?Nhd:new Rhd(this,a)));return b};_.qg=function mNc(a,b){return a};_.rg=function nNc(a){var b;b=a.Vi();return !b?Mbd(this.mg(),a):a.pi()};_.sg=function oNc(){var a;a=this.ig();return !a?null:a.sj()};_.tg=function pNc(){return !this.ig()?null:this.ig().pj()};_.ug=function qNc(a,b,c){return HMc(this,a,b,c)};_.vg=function rNc(a){return IMc(this,a)};_.wg=function sNc(a,b){return JMc(this,a,b)};_.xg=function tNc(){var a;a=this.ig();return !!a&&a.tj()};_.yg=function uNc(){throw x2(new U6)};_.zg=function vNc(){return LMc(this)};_.Ag=function wNc(a,b,c,d){return MMc(this,a,b,d)};_.Bg=function xNc(a,b,c){var d;return d=kA(Gbd(this.mg(),b),61),d.aj().dj(this,this.Qg(),b-this.Sg(),a,c)};_.Cg=function yNc(a,b,c,d){return NMc(this,a,b,d)};_.Dg=function zNc(a,b,c){var d;return d=kA(Gbd(this.mg(),b),61),d.aj().ej(this,this.Qg(),b-this.Sg(),a,c)};_.Eg=function ANc(){return !!this.ig()&&(this.ig().rj(),false)};_.Fg=function BNc(a){return OMc(this,a)};_.Gg=function CNc(a){var b;return b=this.rg(a),b>=0?this.Fg(b):UMc(this,a)};_.Ig=function ENc(a){return SMc(this,a)};_.Jg=function FNc(){throw x2(new U6)};_.Kg=function GNc(){return !this.ig()?null:this.ig().rj()};_.Lg=function HNc(){return LMc(this)};_.Mg=function INc(a,b){YMc(this,a,b)};_.Ng=function JNc(a){this.Jg().uj(a)};_.Og=function KNc(a){this.Jg().wj(a)};_.Pg=function LNc(a,b){var c,d,e,f;f=this.sg();if(!!f&&!!a){b=q_c(f.fk(),this,b);f.jk(this)}d=this.yg();if(d){if((jNc(this,this.yg(),this.og()).Bb&sLd)!=0){e=d.zg();!!e&&(!a?e.ik(this):!f&&e.jk(this))}else{b=(c=this.og(),c>=0?this.jg(b):this.yg().Cg(this,-1-c,null,b));b=this.lg(null,-1,b)}}this.Og(a);return b};_.Qg=function MNc(){return $Mc(this)};_.Rg=function NNc(){return (P6c(),O6c).S};_.Sg=function ONc(){return Lbd(this.Rg())};_.Ib=function PNc(){return aNc(this)};var GY=k4(dTd,'BasicEObjectImpl',92);var B6c;c3(107,92,{95:1,91:1,87:1,51:1,103:1,42:1,92:1,107:1});_.Tg=function YNc(a){var b;b=SNc(this);return b[a]};_.Ug=function ZNc(a,b){var c;c=SNc(this);wz(c,a,b)};_.Vg=function $Nc(a){var b;b=SNc(this);wz(b,a,null)};_.cg=function _Nc(){return kA(VNc(this,4),116)};_.dg=function aOc(){throw x2(new U6)};_.eg=function bOc(){return (this.Db&4)!=0};_.ig=function cOc(){throw x2(new U6)};_.Wg=function dOc(a){XNc(this,2,a)};_.kg=function eOc(a,b){this.Db=b<<16|this.Db&255;this.Wg(a)};_.mg=function fOc(){return RNc(this)};_.og=function gOc(){return this.Db>>16};_.pg=function hOc(){var a,b;return Ohd(),b=Xdd(Cbd((a=kA(VNc(this,16),24),!a?this.Rg():a))),b==null?(null,Nhd):new Rhd(this,b)};_.fg=function iOc(){return (this.Db&1)==0};_.sg=function jOc(){return kA(VNc(this,128),1628)};_.tg=function kOc(){return kA(VNc(this,16),24)};_.xg=function lOc(){return (this.Db&32)!=0};_.yg=function mOc(){return kA(VNc(this,2),42)};_.Eg=function nOc(){return (this.Db&64)!=0};_.Jg=function oOc(){throw x2(new U6)};_.Kg=function pOc(){return kA(VNc(this,64),261)};_.Ng=function qOc(a){XNc(this,16,a)};_.Og=function rOc(a){XNc(this,128,a)};_.Qg=function sOc(){return TNc(this)};_.Db=0;var v_=k4(dTd,'MinimalEObjectImpl',107);c3(108,107,{95:1,91:1,87:1,51:1,103:1,42:1,92:1,107:1,108:1});_.Wg=function tOc(a){this.Cb=a};_.yg=function uOc(){return this.Cb};var u_=k4(dTd,'MinimalEObjectImpl/Container',108);c3(1676,108,{95:1,379:1,93:1,91:1,87:1,51:1,103:1,42:1,92:1,107:1,108:1});_.ve=function DOc(a){!this.o&&(this.o=new T8c((uMc(),rMc),$V,this,0));Z1c(this.o,!a.p?(bdb(),bdb(),_cb):a.p);return this};_.ug=function EOc(a,b,c){return vOc(this,a,b,c)};_.Dg=function FOc(a,b,c){return wOc(this,a,b,c)};_.Fg=function GOc(a){return xOc(this,a)};_.Mg=function HOc(a,b){yOc(this,a,b)};_.Rg=function IOc(){return uMc(),tMc};_.we=function JOc(){return zOc(this)};_.xe=function KOc(a){return AOc(this,a)};_.ye=function LOc(a){return BOc(this,a)};_.ze=function MOc(a,b){return COc(this,a,b)};var PV=k4(eTd,'EMapPropertyHolderImpl',1676);c3(502,108,{95:1,531:1,91:1,87:1,51:1,103:1,42:1,92:1,107:1,108:1},QOc);_.ug=function ROc(a,b,c){switch(a){case 0:return this.a;case 1:return this.b;}return HMc(this,a,b,c)};_.Fg=function SOc(a){switch(a){case 0:return this.a!=0;case 1:return this.b!=0;}return OMc(this,a)};_.Mg=function TOc(a,b){switch(a){case 0:OOc(this,Vpb(nA(b)));return;case 1:POc(this,Vpb(nA(b)));return;}YMc(this,a,b)};_.Rg=function UOc(){return uMc(),jMc};_.Ib=function VOc(){var a;if((this.Db&64)!=0)return aNc(this);a=new B6(aNc(this));a.a+=' (x: ';t6(a,this.a);a.a+=', y: ';t6(a,this.b);a.a+=')';return a.a};_.a=0;_.b=0;var QV=k4(eTd,'ElkBendPointImpl',502);c3(651,1676,{95:1,379:1,253:1,93:1,91:1,87:1,51:1,103:1,42:1,92:1,107:1,108:1});_.ug=function cPc(a,b,c){return WOc(this,a,b,c)};_.Bg=function dPc(a,b,c){return XOc(this,a,b,c)};_.Dg=function ePc(a,b,c){return YOc(this,a,b,c)};_.Fg=function fPc(a){return ZOc(this,a)};_.Mg=function gPc(a,b){$Oc(this,a,b)};_.Rg=function hPc(){return uMc(),nMc};_.Vf=function iPc(){return _Oc(this)};_.Ib=function jPc(){return bPc(this)};_.k=null;var UV=k4(eTd,'ElkGraphElementImpl',651);c3(652,651,{95:1,379:1,253:1,429:1,93:1,91:1,87:1,51:1,103:1,42:1,92:1,107:1,108:1});_.ug=function uPc(a,b,c){return kPc(this,a,b,c)};_.Fg=function vPc(a){return lPc(this,a)};_.Mg=function wPc(a,b){mPc(this,a,b)};_.Rg=function xPc(){return uMc(),sMc};_.Wf=function yPc(){return this.f};_.Xf=function zPc(){return this.g};_.Yf=function APc(){return this.i};_.Zf=function BPc(){return this.j};_.$f=function CPc(a,b){nPc(this,a,b)};_._f=function DPc(a,b){pPc(this,a,b)};_.ag=function EPc(a){rPc(this,a)};_.bg=function FPc(a){sPc(this,a)};_.Ib=function GPc(){return tPc(this)};_.f=0;_.g=0;_.i=0;_.j=0;var _V=k4(eTd,'ElkShapeImpl',652);c3(653,652,{95:1,379:1,97:1,253:1,429:1,93:1,91:1,87:1,51:1,103:1,42:1,92:1,107:1,108:1});_.ug=function NPc(a,b,c){return HPc(this,a,b,c)};_.Bg=function OPc(a,b,c){return IPc(this,a,b,c)};_.Dg=function PPc(a,b,c){return JPc(this,a,b,c)};_.Fg=function QPc(a){return KPc(this,a)};_.Mg=function RPc(a,b){LPc(this,a,b)};_.Rg=function SPc(){return uMc(),kMc};_.Tf=function TPc(){return !this.d&&(this.d=new pxd(JV,this,8,5)),this.d};_.Uf=function UPc(){return !this.e&&(this.e=new pxd(JV,this,7,4)),this.e};var RV=k4(eTd,'ElkConnectableShapeImpl',653);c3(183,651,{95:1,379:1,105:1,253:1,183:1,93:1,91:1,87:1,51:1,103:1,42:1,92:1,107:1,108:1},cQc);_.jg=function dQc(a){return WPc(this,a)};_.ug=function eQc(a,b,c){switch(a){case 3:return XPc(this);case 4:return !this.b&&(this.b=new pxd(HV,this,4,7)),this.b;case 5:return !this.c&&(this.c=new pxd(HV,this,5,8)),this.c;case 6:return !this.a&&(this.a=new zkd(IV,this,6,6)),this.a;case 7:return B3(),!this.b&&(this.b=new pxd(HV,this,4,7)),this.b.i<=1&&(!this.c&&(this.c=new pxd(HV,this,5,8)),this.c.i<=1)?false:true;case 8:return B3(),$Pc(this)?true:false;case 9:return B3(),_Pc(this)?true:false;case 10:return B3(),!this.b&&(this.b=new pxd(HV,this,4,7)),this.b.i!=0&&(!this.c&&(this.c=new pxd(HV,this,5,8)),this.c.i!=0)?true:false;}return WOc(this,a,b,c)};_.Bg=function fQc(a,b,c){var d;switch(b){case 3:!!this.Cb&&(c=(d=this.Db>>16,d>=0?WPc(this,c):this.Cb.Cg(this,-1-d,null,c)));return VPc(this,kA(a,35),c);case 4:return !this.b&&(this.b=new pxd(HV,this,4,7)),p_c(this.b,a,c);case 5:return !this.c&&(this.c=new pxd(HV,this,5,8)),p_c(this.c,a,c);case 6:return !this.a&&(this.a=new zkd(IV,this,6,6)),p_c(this.a,a,c);}return XOc(this,a,b,c)};_.Dg=function gQc(a,b,c){switch(b){case 3:return VPc(this,null,c);case 4:return !this.b&&(this.b=new pxd(HV,this,4,7)),q_c(this.b,a,c);case 5:return !this.c&&(this.c=new pxd(HV,this,5,8)),q_c(this.c,a,c);case 6:return !this.a&&(this.a=new zkd(IV,this,6,6)),q_c(this.a,a,c);}return YOc(this,a,b,c)};_.Fg=function hQc(a){switch(a){case 3:return !!XPc(this);case 4:return !!this.b&&this.b.i!=0;case 5:return !!this.c&&this.c.i!=0;case 6:return !!this.a&&this.a.i!=0;case 7:return !this.b&&(this.b=new pxd(HV,this,4,7)),!(this.b.i<=1&&(!this.c&&(this.c=new pxd(HV,this,5,8)),this.c.i<=1));case 8:return $Pc(this);case 9:return _Pc(this);case 10:return !this.b&&(this.b=new pxd(HV,this,4,7)),this.b.i!=0&&(!this.c&&(this.c=new pxd(HV,this,5,8)),this.c.i!=0);}return ZOc(this,a)};_.Mg=function iQc(a,b){switch(a){case 3:aQc(this,kA(b,35));return;case 4:!this.b&&(this.b=new pxd(HV,this,4,7));r_c(this.b);!this.b&&(this.b=new pxd(HV,this,4,7));gXc(this.b,kA(b,13));return;case 5:!this.c&&(this.c=new pxd(HV,this,5,8));r_c(this.c);!this.c&&(this.c=new pxd(HV,this,5,8));gXc(this.c,kA(b,13));return;case 6:!this.a&&(this.a=new zkd(IV,this,6,6));r_c(this.a);!this.a&&(this.a=new zkd(IV,this,6,6));gXc(this.a,kA(b,13));return;}$Oc(this,a,b)};_.Rg=function jQc(){return uMc(),lMc};_.Ib=function kQc(){return bQc(this)};var SV=k4(eTd,'ElkEdgeImpl',183);c3(405,1676,{95:1,379:1,270:1,405:1,93:1,91:1,87:1,51:1,103:1,42:1,92:1,107:1,108:1},BQc);_.jg=function CQc(a){return mQc(this,a)};_.ug=function DQc(a,b,c){switch(a){case 1:return this.j;case 2:return this.k;case 3:return this.b;case 4:return this.c;case 5:return !this.a&&(this.a=new fdd(GV,this,5)),this.a;case 6:return pQc(this);case 7:if(b)return oQc(this);return this.i;case 8:if(b)return nQc(this);return this.f;case 9:return !this.g&&(this.g=new pxd(IV,this,9,10)),this.g;case 10:return !this.e&&(this.e=new pxd(IV,this,10,9)),this.e;case 11:return this.d;}return vOc(this,a,b,c)};_.Bg=function EQc(a,b,c){var d,e,f;switch(b){case 6:!!this.Cb&&(c=(e=this.Db>>16,e>=0?mQc(this,c):this.Cb.Cg(this,-1-e,null,c)));return lQc(this,kA(a,105),c);case 9:return !this.g&&(this.g=new pxd(IV,this,9,10)),p_c(this.g,a,c);case 10:return !this.e&&(this.e=new pxd(IV,this,10,9)),p_c(this.e,a,c);}return f=kA(Gbd((d=kA(VNc(this,16),24),!d?(uMc(),mMc):d),b),61),f.aj().dj(this,TNc(this),b-Lbd((uMc(),mMc)),a,c)};_.Dg=function FQc(a,b,c){switch(b){case 5:return !this.a&&(this.a=new fdd(GV,this,5)),q_c(this.a,a,c);case 6:return lQc(this,null,c);case 9:return !this.g&&(this.g=new pxd(IV,this,9,10)),q_c(this.g,a,c);case 10:return !this.e&&(this.e=new pxd(IV,this,10,9)),q_c(this.e,a,c);}return wOc(this,a,b,c)};_.Fg=function GQc(a){switch(a){case 1:return this.j!=0;case 2:return this.k!=0;case 3:return this.b!=0;case 4:return this.c!=0;case 5:return !!this.a&&this.a.i!=0;case 6:return !!pQc(this);case 7:return !!this.i;case 8:return !!this.f;case 9:return !!this.g&&this.g.i!=0;case 10:return !!this.e&&this.e.i!=0;case 11:return this.d!=null;}return xOc(this,a)};_.Mg=function HQc(a,b){switch(a){case 1:yQc(this,Vpb(nA(b)));return;case 2:zQc(this,Vpb(nA(b)));return;case 3:rQc(this,Vpb(nA(b)));return;case 4:sQc(this,Vpb(nA(b)));return;case 5:!this.a&&(this.a=new fdd(GV,this,5));r_c(this.a);!this.a&&(this.a=new fdd(GV,this,5));gXc(this.a,kA(b,13));return;case 6:wQc(this,kA(b,105));return;case 7:vQc(this,kA(b,97));return;case 8:uQc(this,kA(b,97));return;case 9:!this.g&&(this.g=new pxd(IV,this,9,10));r_c(this.g);!this.g&&(this.g=new pxd(IV,this,9,10));gXc(this.g,kA(b,13));return;case 10:!this.e&&(this.e=new pxd(IV,this,10,9));r_c(this.e);!this.e&&(this.e=new pxd(IV,this,10,9));gXc(this.e,kA(b,13));return;case 11:tQc(this,pA(b));return;}yOc(this,a,b)};_.Rg=function IQc(){return uMc(),mMc};_.Ib=function JQc(){return AQc(this)};_.b=0;_.c=0;_.d=null;_.j=0;_.k=0;var TV=k4(eTd,'ElkEdgeSectionImpl',405);c3(142,108,{95:1,91:1,87:1,139:1,51:1,103:1,42:1,92:1,142:1,107:1,108:1});_.ug=function NQc(a,b,c){var d;if(a==0){return !this.Ab&&(this.Ab=new zkd(gY,this,0,3)),this.Ab}return EMc(this,a-Lbd(this.Rg()),Gbd((d=kA(VNc(this,16),24),!d?this.Rg():d),a),b,c)};_.Bg=function OQc(a,b,c){var d,e;if(b==0){return !this.Ab&&(this.Ab=new zkd(gY,this,0,3)),p_c(this.Ab,a,c)}return e=kA(Gbd((d=kA(VNc(this,16),24),!d?this.Rg():d),b),61),e.aj().dj(this,TNc(this),b-Lbd(this.Rg()),a,c)};_.Dg=function PQc(a,b,c){var d,e;if(b==0){return !this.Ab&&(this.Ab=new zkd(gY,this,0,3)),q_c(this.Ab,a,c)}return e=kA(Gbd((d=kA(VNc(this,16),24),!d?this.Rg():d),b),61),e.aj().ej(this,TNc(this),b-Lbd(this.Rg()),a,c)};_.Fg=function QQc(a){var b;if(a==0){return !!this.Ab&&this.Ab.i!=0}return FMc(this,a-Lbd(this.Rg()),Gbd((b=kA(VNc(this,16),24),!b?this.Rg():b),a))};_.Ig=function RQc(a){return KQc(this,a)};_.Mg=function SQc(a,b){var c;switch(a){case 0:!this.Ab&&(this.Ab=new zkd(gY,this,0,3));r_c(this.Ab);!this.Ab&&(this.Ab=new zkd(gY,this,0,3));gXc(this.Ab,kA(b,13));return;}GMc(this,a-Lbd(this.Rg()),Gbd((c=kA(VNc(this,16),24),!c?this.Rg():c),a),b)};_.Og=function TQc(a){XNc(this,128,a)};_.Rg=function UQc(){return j7c(),$6c};_.Xg=function VQc(){this.Bb|=1};_.Yg=function WQc(a){return MQc(this,a)};_.Bb=0;var kZ=k4(dTd,'EModelElementImpl',142);c3(638,142,{95:1,91:1,87:1,430:1,139:1,51:1,103:1,42:1,92:1,142:1,107:1,108:1},gRc);_.Zg=function hRc(a,b){return bRc(this,a,b)};_.$g=function iRc(a){var b,c,d,e,f;if(this.a!=Nad(a)||(a.Bb&256)!=0){throw x2(new O4(kTd+a.zb+hTd))}for(d=Kbd(a);Ebd(d.a).i!=0;){c=kA(Ved(d,0,(b=kA(WXc(Ebd(d.a),0),84),f=b.c,sA(f,96)?kA(f,24):(j7c(),a7c))),24);if(Pad(c)){e=Nad(c).dh().$g(c);kA(e,42).Ng(a);return e}d=Kbd(c)}return (a.D!=null?a.D:a.B)=='java.util.Map$Entry'?new d8c(a):new T7c(a)};_._g=function jRc(a,b){return cRc(this,a,b)};_.ug=function kRc(a,b,c){var d;switch(a){case 0:return !this.Ab&&(this.Ab=new zkd(gY,this,0,3)),this.Ab;case 1:return this.a;}return EMc(this,a-Lbd((j7c(),X6c)),Gbd((d=kA(VNc(this,16),24),!d?X6c:d),a),b,c)};_.Bg=function lRc(a,b,c){var d,e;switch(b){case 0:return !this.Ab&&(this.Ab=new zkd(gY,this,0,3)),p_c(this.Ab,a,c);case 1:!!this.a&&(c=kA(this.a,42).Cg(this,4,uY,c));return _Qc(this,kA(a,207),c);}return e=kA(Gbd((d=kA(VNc(this,16),24),!d?(j7c(),X6c):d),b),61),e.aj().dj(this,TNc(this),b-Lbd((j7c(),X6c)),a,c)};_.Dg=function mRc(a,b,c){var d,e;switch(b){case 0:return !this.Ab&&(this.Ab=new zkd(gY,this,0,3)),q_c(this.Ab,a,c);case 1:return _Qc(this,null,c);}return e=kA(Gbd((d=kA(VNc(this,16),24),!d?(j7c(),X6c):d),b),61),e.aj().ej(this,TNc(this),b-Lbd((j7c(),X6c)),a,c)};_.Fg=function nRc(a){var b;switch(a){case 0:return !!this.Ab&&this.Ab.i!=0;case 1:return !!this.a;}return FMc(this,a-Lbd((j7c(),X6c)),Gbd((b=kA(VNc(this,16),24),!b?X6c:b),a))};_.Mg=function oRc(a,b){var c;switch(a){case 0:!this.Ab&&(this.Ab=new zkd(gY,this,0,3));r_c(this.Ab);!this.Ab&&(this.Ab=new zkd(gY,this,0,3));gXc(this.Ab,kA(b,13));return;case 1:eRc(this,kA(b,207));return;}GMc(this,a-Lbd((j7c(),X6c)),Gbd((c=kA(VNc(this,16),24),!c?X6c:c),a),b)};_.Rg=function pRc(){return j7c(),X6c};var XQc,YQc,ZQc;var iZ=k4(dTd,'EFactoryImpl',638);c3(914,638,{95:1,1698:1,91:1,87:1,430:1,139:1,51:1,103:1,42:1,92:1,142:1,107:1,108:1},rRc);_.Zg=function sRc(a,b){switch(a.Ni()){case 12:return kA(b,166).Lf();case 13:return f3(b);default:throw x2(new O4(gTd+a.be()+hTd));}};_.$g=function tRc(a){var b,c,d,e,f,g,h,i;switch(a.G==-1&&(a.G=(b=Nad(a),b?pcd(b.bh(),a):-1)),a.G){case 4:return f=new NSc,f;case 6:return g=new bTc,g;case 7:return h=new pTc,h;case 8:return d=new cQc,d;case 9:return c=new QOc,c;case 10:return e=new BQc,e;case 11:return i=new ATc,i;default:throw x2(new O4(kTd+a.zb+hTd));}};_._g=function uRc(a,b){switch(a.Ni()){case 13:case 12:return null;default:throw x2(new O4(gTd+a.be()+hTd));}};var VV=k4(eTd,'ElkGraphFactoryImpl',914);c3(399,142,{95:1,91:1,87:1,139:1,174:1,51:1,103:1,42:1,92:1,142:1,107:1,108:1});_.pg=function yRc(){var a,b;b=(a=kA(VNc(this,16),24),Xdd(Cbd(!a?this.Rg():a)));return b==null?(Ohd(),Ohd(),Nhd):new did(this,b)};_.ug=function zRc(a,b,c){var d;switch(a){case 0:return !this.Ab&&(this.Ab=new zkd(gY,this,0,3)),this.Ab;case 1:return this.be();}return EMc(this,a-Lbd(this.Rg()),Gbd((d=kA(VNc(this,16),24),!d?this.Rg():d),a),b,c)};_.Fg=function ARc(a){var b;switch(a){case 0:return !!this.Ab&&this.Ab.i!=0;case 1:return this.zb!=null;}return FMc(this,a-Lbd(this.Rg()),Gbd((b=kA(VNc(this,16),24),!b?this.Rg():b),a))};_.Mg=function BRc(a,b){var c;switch(a){case 0:!this.Ab&&(this.Ab=new zkd(gY,this,0,3));r_c(this.Ab);!this.Ab&&(this.Ab=new zkd(gY,this,0,3));gXc(this.Ab,kA(b,13));return;case 1:this.ah(pA(b));return;}GMc(this,a-Lbd(this.Rg()),Gbd((c=kA(VNc(this,16),24),!c?this.Rg():c),a),b)};_.Rg=function CRc(){return j7c(),_6c};_.be=function DRc(){return this.zb};_.ah=function ERc(a){wRc(this,a)};_.Ib=function FRc(){return xRc(this)};_.zb=null;var oZ=k4(dTd,'ENamedElementImpl',399);c3(248,399,{95:1,91:1,87:1,139:1,174:1,51:1,207:1,103:1,42:1,92:1,142:1,248:1,107:1,108:1,613:1},kSc);_.jg=function mSc(a){return YRc(this,a)};_.ug=function nSc(a,b,c){var d;switch(a){case 0:return !this.Ab&&(this.Ab=new zkd(gY,this,0,3)),this.Ab;case 1:return this.zb;case 2:return this.yb;case 3:return this.xb;case 4:return this.sb;case 5:return !this.rb&&(this.rb=new Gkd(this,jY,this)),this.rb;case 6:return !this.vb&&(this.vb=new Dkd(uY,this,6,7)),this.vb;case 7:if(b)return this.Db>>16==7?kA(this.Cb,207):null;return ORc(this);}return EMc(this,a-Lbd((j7c(),c7c)),Gbd((d=kA(VNc(this,16),24),!d?c7c:d),a),b,c)};_.Bg=function oSc(a,b,c){var d,e,f;switch(b){case 0:return !this.Ab&&(this.Ab=new zkd(gY,this,0,3)),p_c(this.Ab,a,c);case 4:!!this.sb&&(c=kA(this.sb,42).Cg(this,1,oY,c));return PRc(this,kA(a,430),c);case 5:return !this.rb&&(this.rb=new Gkd(this,jY,this)),p_c(this.rb,a,c);case 6:return !this.vb&&(this.vb=new Dkd(uY,this,6,7)),p_c(this.vb,a,c);case 7:!!this.Cb&&(c=(e=this.Db>>16,e>=0?YRc(this,c):this.Cb.Cg(this,-1-e,null,c)));return CMc(this,a,7,c);}return f=kA(Gbd((d=kA(VNc(this,16),24),!d?(j7c(),c7c):d),b),61),f.aj().dj(this,TNc(this),b-Lbd((j7c(),c7c)),a,c)};_.Dg=function pSc(a,b,c){var d,e;switch(b){case 0:return !this.Ab&&(this.Ab=new zkd(gY,this,0,3)),q_c(this.Ab,a,c);case 4:return PRc(this,null,c);case 5:return !this.rb&&(this.rb=new Gkd(this,jY,this)),q_c(this.rb,a,c);case 6:return !this.vb&&(this.vb=new Dkd(uY,this,6,7)),q_c(this.vb,a,c);case 7:return CMc(this,null,7,c);}return e=kA(Gbd((d=kA(VNc(this,16),24),!d?(j7c(),c7c):d),b),61),e.aj().ej(this,TNc(this),b-Lbd((j7c(),c7c)),a,c)};_.Fg=function qSc(a){var b;switch(a){case 0:return !!this.Ab&&this.Ab.i!=0;case 1:return this.zb!=null;case 2:return this.yb!=null;case 3:return this.xb!=null;case 4:return !!this.sb;case 5:return !!this.rb&&this.rb.i!=0;case 6:return !!this.vb&&this.vb.i!=0;case 7:return !!ORc(this);}return FMc(this,a-Lbd((j7c(),c7c)),Gbd((b=kA(VNc(this,16),24),!b?c7c:b),a))};_.Ig=function rSc(a){var b;b=$Rc(this,a);return b?b:KQc(this,a)};_.Mg=function sSc(a,b){var c;switch(a){case 0:!this.Ab&&(this.Ab=new zkd(gY,this,0,3));r_c(this.Ab);!this.Ab&&(this.Ab=new zkd(gY,this,0,3));gXc(this.Ab,kA(b,13));return;case 1:wRc(this,pA(b));return;case 2:jSc(this,pA(b));return;case 3:iSc(this,pA(b));return;case 4:hSc(this,kA(b,430));return;case 5:!this.rb&&(this.rb=new Gkd(this,jY,this));r_c(this.rb);!this.rb&&(this.rb=new Gkd(this,jY,this));gXc(this.rb,kA(b,13));return;case 6:!this.vb&&(this.vb=new Dkd(uY,this,6,7));r_c(this.vb);!this.vb&&(this.vb=new Dkd(uY,this,6,7));gXc(this.vb,kA(b,13));return;}GMc(this,a-Lbd((j7c(),c7c)),Gbd((c=kA(VNc(this,16),24),!c?c7c:c),a),b)};_.Rg=function tSc(){return j7c(),c7c};_.Xg=function uSc(){ZRc(this)};_.bh=function vSc(){return !this.rb&&(this.rb=new Gkd(this,jY,this)),this.rb};_.dh=function wSc(){return this.sb};_.eh=function xSc(){return this.ub};_.fh=function ySc(){return this.xb};_.gh=function zSc(){return this.yb};_.hh=function ASc(a){this.ub=a};_.Ib=function BSc(){var a;if((this.Db&64)!=0)return xRc(this);a=new B6(xRc(this));a.a+=' (nsURI: ';w6(a,this.yb);a.a+=', nsPrefix: ';w6(a,this.xb);a.a+=')';return a.a};_.xb=null;_.yb=null;var GRc;var yZ=k4(dTd,'EPackageImpl',248);c3(506,248,{95:1,1702:1,506:1,91:1,87:1,139:1,174:1,51:1,207:1,103:1,42:1,92:1,142:1,248:1,107:1,108:1,613:1},FSc);_.q=false;_.r=false;var CSc=false;var WV=k4(eTd,'ElkGraphPackageImpl',506);c3(263,652,{95:1,379:1,253:1,137:1,429:1,263:1,93:1,91:1,87:1,51:1,103:1,42:1,92:1,107:1,108:1},NSc);_.jg=function OSc(a){return ISc(this,a)};_.ug=function PSc(a,b,c){switch(a){case 7:return JSc(this);case 8:return this.a;}return kPc(this,a,b,c)};_.Bg=function QSc(a,b,c){var d;switch(b){case 7:!!this.Cb&&(c=(d=this.Db>>16,d>=0?ISc(this,c):this.Cb.Cg(this,-1-d,null,c)));return HSc(this,kA(a,253),c);}return XOc(this,a,b,c)};_.Dg=function RSc(a,b,c){if(b==7){return HSc(this,null,c)}return YOc(this,a,b,c)};_.Fg=function SSc(a){switch(a){case 7:return !!JSc(this);case 8:return !Z5('',this.a);}return lPc(this,a)};_.Mg=function TSc(a,b){switch(a){case 7:KSc(this,kA(b,253));return;case 8:LSc(this,pA(b));return;}mPc(this,a,b)};_.Rg=function USc(){return uMc(),oMc};_.Ib=function VSc(){return MSc(this)};_.a='';var XV=k4(eTd,'ElkLabelImpl',263);c3(246,653,{95:1,379:1,97:1,253:1,35:1,429:1,246:1,93:1,91:1,87:1,51:1,103:1,42:1,92:1,107:1,108:1},bTc);_.jg=function cTc(a){return XSc(this,a)};_.ug=function dTc(a,b,c){switch(a){case 9:return !this.c&&(this.c=new zkd(NV,this,9,9)),this.c;case 10:return !this.a&&(this.a=new zkd(MV,this,10,11)),this.a;case 11:return ZSc(this);case 12:return !this.b&&(this.b=new zkd(JV,this,12,3)),this.b;case 13:return B3(),!this.a&&(this.a=new zkd(MV,this,10,11)),this.a.i>0?true:false;}return HPc(this,a,b,c)};_.Bg=function eTc(a,b,c){var d;switch(b){case 9:return !this.c&&(this.c=new zkd(NV,this,9,9)),p_c(this.c,a,c);case 10:return !this.a&&(this.a=new zkd(MV,this,10,11)),p_c(this.a,a,c);case 11:!!this.Cb&&(c=(d=this.Db>>16,d>=0?XSc(this,c):this.Cb.Cg(this,-1-d,null,c)));return WSc(this,kA(a,35),c);case 12:return !this.b&&(this.b=new zkd(JV,this,12,3)),p_c(this.b,a,c);}return IPc(this,a,b,c)};_.Dg=function fTc(a,b,c){switch(b){case 9:return !this.c&&(this.c=new zkd(NV,this,9,9)),q_c(this.c,a,c);case 10:return !this.a&&(this.a=new zkd(MV,this,10,11)),q_c(this.a,a,c);case 11:return WSc(this,null,c);case 12:return !this.b&&(this.b=new zkd(JV,this,12,3)),q_c(this.b,a,c);}return JPc(this,a,b,c)};_.Fg=function gTc(a){switch(a){case 9:return !!this.c&&this.c.i!=0;case 10:return !!this.a&&this.a.i!=0;case 11:return !!ZSc(this);case 12:return !!this.b&&this.b.i!=0;case 13:return !this.a&&(this.a=new zkd(MV,this,10,11)),this.a.i>0;}return KPc(this,a)};_.Mg=function hTc(a,b){switch(a){case 9:!this.c&&(this.c=new zkd(NV,this,9,9));r_c(this.c);!this.c&&(this.c=new zkd(NV,this,9,9));gXc(this.c,kA(b,13));return;case 10:!this.a&&(this.a=new zkd(MV,this,10,11));r_c(this.a);!this.a&&(this.a=new zkd(MV,this,10,11));gXc(this.a,kA(b,13));return;case 11:_Sc(this,kA(b,35));return;case 12:!this.b&&(this.b=new zkd(JV,this,12,3));r_c(this.b);!this.b&&(this.b=new zkd(JV,this,12,3));gXc(this.b,kA(b,13));return;}LPc(this,a,b)};_.Rg=function iTc(){return uMc(),pMc};_.Ib=function jTc(){return aTc(this)};var YV=k4(eTd,'ElkNodeImpl',246);c3(187,653,{95:1,379:1,97:1,253:1,121:1,429:1,187:1,93:1,91:1,87:1,51:1,103:1,42:1,92:1,107:1,108:1},pTc);_.jg=function qTc(a){return lTc(this,a)};_.ug=function rTc(a,b,c){if(a==9){return mTc(this)}return HPc(this,a,b,c)};_.Bg=function sTc(a,b,c){var d;switch(b){case 9:!!this.Cb&&(c=(d=this.Db>>16,d>=0?lTc(this,c):this.Cb.Cg(this,-1-d,null,c)));return kTc(this,kA(a,35),c);}return IPc(this,a,b,c)};_.Dg=function tTc(a,b,c){if(b==9){return kTc(this,null,c)}return JPc(this,a,b,c)};_.Fg=function uTc(a){if(a==9){return !!mTc(this)}return KPc(this,a)};_.Mg=function vTc(a,b){switch(a){case 9:nTc(this,kA(b,35));return;}LPc(this,a,b)};_.Rg=function wTc(){return uMc(),qMc};_.Ib=function xTc(){return oTc(this)};var ZV=k4(eTd,'ElkPortImpl',187);var PX=m4(FTd,'BasicEMap/Entry');c3(966,108,{95:1,38:1,91:1,87:1,134:1,51:1,103:1,42:1,92:1,107:1,108:1},ATc);_.Fb=function FTc(a){return this===a};_.kc=function HTc(){return this.b};_.Hb=function JTc(){return bqb(this)};_.kh=function LTc(a){yTc(this,kA(a,166))};_.ug=function BTc(a,b,c){switch(a){case 0:return this.b;case 1:return this.c;}return HMc(this,a,b,c)};_.Fg=function CTc(a){switch(a){case 0:return !!this.b;case 1:return this.c!=null;}return OMc(this,a)};_.Mg=function DTc(a,b){switch(a){case 0:yTc(this,kA(b,166));return;case 1:zTc(this,b);return;}YMc(this,a,b)};_.Rg=function ETc(){return uMc(),rMc};_.ih=function GTc(){var a;if(this.a==-1){a=this.b;this.a=!a?0:ob(a)}return this.a};_.lc=function ITc(){return this.c};_.jh=function KTc(a){this.a=a};_.mc=function MTc(a){var b;b=this.c;zTc(this,a);return b};_.Ib=function NTc(){var a;if((this.Db&64)!=0)return aNc(this);a=new M6;I6(I6(I6(a,this.b?this.b.Lf():mJd),' -> '),p6(this.c));return a.a};_.a=-1;_.c=null;var $V=k4(eTd,'ElkPropertyToValueMapEntryImpl',966);c3(876,1,{},_Tc);var aW=k4(ITd,'JsonAdapter',876);c3(186,54,rKd,aUc);var bW=k4(ITd,'JsonImportException',186);c3(754,1,{},cVc);var QW=k4(ITd,'JsonImporter',754);c3(792,1,{},dVc);var cW=k4(ITd,'JsonImporter/lambda$0$Type',792);c3(793,1,{},eVc);var dW=k4(ITd,'JsonImporter/lambda$1$Type',793);c3(816,1,{},fVc);var eW=k4(ITd,'JsonImporter/lambda$10$Type',816);c3(818,1,{},gVc);var fW=k4(ITd,'JsonImporter/lambda$11$Type',818);c3(819,1,{},hVc);_.td=function iVc(a){nUc(this.b,this.a,a)};var gW=k4(ITd,'JsonImporter/lambda$12$Type',819);c3(820,1,{},jVc);var hW=k4(ITd,'JsonImporter/lambda$13$Type',820);c3(821,1,{},kVc);var iW=k4(ITd,'JsonImporter/lambda$14$Type',821);c3(822,1,{},lVc);var jW=k4(ITd,'JsonImporter/lambda$15$Type',822);c3(823,1,{},mVc);var kW=k4(ITd,'JsonImporter/lambda$16$Type',823);c3(824,1,{},nVc);var lW=k4(ITd,'JsonImporter/lambda$17$Type',824);c3(825,1,{},oVc);var mW=k4(ITd,'JsonImporter/lambda$18$Type',825);c3(756,1,{},qVc);var nW=k4(ITd,'JsonImporter/lambda$19$Type',756);c3(794,1,{},rVc);var oW=k4(ITd,'JsonImporter/lambda$2$Type',794);c3(829,1,{},tVc);var pW=k4(ITd,'JsonImporter/lambda$20$Type',829);c3(830,1,{},uVc);_.td=function vVc(a){wUc(this.a,a)};var qW=k4(ITd,'JsonImporter/lambda$21$Type',830);c3(795,1,{},wVc);var rW=k4(ITd,'JsonImporter/lambda$22$Type',795);c3(796,1,{},xVc);var sW=k4(ITd,'JsonImporter/lambda$23$Type',796);c3(798,1,{},yVc);var tW=k4(ITd,'JsonImporter/lambda$24$Type',798);c3(799,1,{},zVc);var uW=k4(ITd,'JsonImporter/lambda$25$Type',799);c3(801,1,{},AVc);var vW=k4(ITd,'JsonImporter/lambda$26$Type',801);c3(809,1,{},BVc);var wW=k4(ITd,'JsonImporter/lambda$27$Type',809);c3(811,1,{},CVc);var xW=k4(ITd,'JsonImporter/lambda$28$Type',811);c3(812,1,{},DVc);var yW=k4(ITd,'JsonImporter/lambda$29$Type',812);c3(797,1,{},EVc);var zW=k4(ITd,'JsonImporter/lambda$3$Type',797);c3(814,1,{},FVc);var AW=k4(ITd,'JsonImporter/lambda$30$Type',814);c3(815,1,{},GVc);var BW=k4(ITd,'JsonImporter/lambda$31$Type',815);c3(817,1,{},HVc);var CW=k4(ITd,'JsonImporter/lambda$32$Type',817);c3(826,1,{},IVc);_.td=function JVc(a){BUc(this.a,a)};var DW=k4(ITd,'JsonImporter/lambda$33$Type',826);c3(827,1,{},KVc);_.td=function LVc(a){CUc(this.a,this.b,a)};var EW=k4(ITd,'JsonImporter/lambda$34$Type',827);c3(828,1,{},MVc);_.td=function NVc(a){DUc(this.a,this.b,a)};var FW=k4(ITd,'JsonImporter/lambda$35$Type',828);c3(805,1,{},OVc);var GW=k4(ITd,'JsonImporter/lambda$36$Type',805);c3(806,1,{},PVc);var HW=k4(ITd,'JsonImporter/lambda$37$Type',806);c3(807,1,{},QVc);var IW=k4(ITd,'JsonImporter/lambda$38$Type',807);c3(808,1,{},RVc);var JW=k4(ITd,'JsonImporter/lambda$39$Type',808);c3(800,1,{},SVc);var KW=k4(ITd,'JsonImporter/lambda$4$Type',800);c3(802,1,{},TVc);var LW=k4(ITd,'JsonImporter/lambda$5$Type',802);c3(803,1,{},UVc);var MW=k4(ITd,'JsonImporter/lambda$6$Type',803);c3(804,1,{},VVc);var NW=k4(ITd,'JsonImporter/lambda$7$Type',804);c3(810,1,{},WVc);var OW=k4(ITd,'JsonImporter/lambda$8$Type',810);c3(813,1,{},XVc);var PW=k4(ITd,'JsonImporter/lambda$9$Type',813);c3(864,1,{},eWc);_.td=function fWc(a){OTc(this.a,new hz(pA(a)))};var RW=k4(ITd,'JsonMetaDataConverter/lambda$0$Type',864);c3(865,1,{},gWc);_.td=function hWc(a){aWc(this.a,a)};var SW=k4(ITd,'JsonMetaDataConverter/lambda$1$Type',865);c3(866,1,{},iWc);_.td=function jWc(a){bWc(this.a,a)};var TW=k4(ITd,'JsonMetaDataConverter/lambda$2$Type',866);c3(867,1,{},kWc);_.td=function lWc(a){cWc(this.a,a)};var UW=k4(ITd,'JsonMetaDataConverter/lambda$3$Type',867);c3(229,23,{3:1,34:1,23:1,229:1},vWc);var mWc,nWc,oWc,pWc,qWc,rWc,sWc,tWc;var VW=l4(DMd,'GraphFeature',229,zE,xWc,wWc);var yWc;c3(16,1,{34:1,166:1},DWc,EWc,FWc,GWc);_.vd=function HWc(a){return AWc(this,kA(a,166))};_.Fb=function IWc(a){return BWc(this,a)};_.Of=function JWc(){return CWc(this)};_.Lf=function KWc(){return this.b};_.Hb=function LWc(){return hqb(this.b)};_.Ib=function MWc(){return this.b};var $W=k4(DMd,'Property',16);c3(727,1,lKd,OWc);_.Ld=function PWc(a,b){return NWc(this,kA(a,93),kA(b,93))};_.Fb=function QWc(a){return this===a};_.Md=function RWc(){return new jfb(this)};var ZW=k4(DMd,'PropertyHolderComparator',727);var ZX=m4(FTd,'EList');c3(59,41,{20:1,25:1,41:1,13:1,15:1,59:1,52:1});_.bd=function qXc(a,b){eXc(this,a,b)};_.nc=function rXc(a){return fXc(this,a)};_.oc=function sXc(a){return gXc(this,a)};_.oh=function tXc(){return new v0c(this)};_.ph=function uXc(){return new y0c(this)};_.qh=function vXc(a){return hXc(this,a)};_.rh=function wXc(){return true};_.sh=function xXc(a,b){};_.th=function yXc(){};_.uh=function zXc(a,b){iXc(this,a,b)};_.vh=function AXc(a,b){};_.wh=function BXc(a,b,c){};_.Fb=function CXc(a){return jXc(this,a)};_.Hb=function DXc(){return lXc(this)};_.xh=function EXc(){return false};_.tc=function FXc(){return new a0c(this)};_.ed=function GXc(){return new j0c(this)};_.fd=function HXc(a){var b;b=this._b();if(a<0||a>b)throw x2(new Z_c(a,b));return new k0c(this,a)};_.vc=function IXc(a){return mXc(this,a)};_.zh=function JXc(a,b){return b};_.hd=function KXc(a,b){return nXc(this,a,b)};_.Ib=function LXc(){return oXc(this)};_.Bh=function MXc(){return true};_.Ch=function NXc(a,b){return pXc(this,b)};var vX=k4(FTd,'AbstractEList',59);c3(55,59,VTd,cYc,dYc,eYc);_.lh=function fYc(a){return PXc(this,a)};_.mh=function gYc(a,b){QXc(this,a,b)};_.nh=function hYc(a){RXc(this,a)};_.Dh=function iYc(a){return TXc(this,a)};_.Pb=function jYc(){UXc(this)};_.pc=function kYc(a){return VXc(this,a)};_.cd=function lYc(a){return WXc(this,a)};_.Eh=function mYc(a){XXc(this,a)};_.dd=function nYc(a){return YXc(this,a)};_.Wb=function oYc(){return this.i==0};_.Fh=function pYc(a){return tz(NE,oJd,1,a,5,1)};_.yh=function qYc(a){return this.g[a]};_.gd=function rYc(a){return ZXc(this,a)};_.Ah=function sYc(a,b){return $Xc(this,a,b)};_._b=function tYc(){return this.i};_.yc=function uYc(){return aYc(this)};_.zc=function vYc(a){return bYc(this,a)};_.i=0;var EX=k4(FTd,'BasicEList',55);var bY=m4(FTd,'TreeIterator');c3(629,55,WTd);_.gc=function zYc(a){Bhb(this,a)};_.hc=function AYc(){return this.g==null&&!this.c?wYc(this):this.g==null||this.i!=0&&kA(this.g[this.i-1],43).hc()};_.ic=function BYc(){return xYc(this)};_.jc=function CYc(){if(!this.e){throw x2(new Q4('There is no valid object to remove.'))}this.e.jc()};_.c=false;var wX=k4(FTd,'AbstractTreeIterator',629);c3(621,629,WTd,DYc);_.Gh=function EYc(a){var b;b=kA(a,51).pg().tc();sA(b,260)&&kA(b,260).Zj(new FYc);return b};var aX=k4(XTd,'ElkGraphUtil/PropertiesSkippingTreeIterator',621);c3(868,1,{},FYc);var _W=k4(XTd,'ElkGraphUtil/PropertiesSkippingTreeIterator/1',868);var GYc,HYc;var cX=k4(XTd,'ElkReflect',null);c3(784,1,QRd,NYc);_.Nf=function OYc(a){return IYc(),igb(kA(a,185))};var bX=k4(XTd,'ElkReflect/lambda$0$Type',784);var PYc;var aY=m4(FTd,'ResourceLocator');c3(953,1,{});var TX=k4(FTd,'DelegatingResourceLocator',953);c3(954,953,{});var dX=k4('org.eclipse.emf.common','EMFPlugin',954);var eX=m4(JUd,'Adapter');var fX=m4(JUd,'Notification');c3(1016,1,KUd);_.Hh=function YYc(){return this.d};_.Ih=function ZYc(a){};_.Jh=function $Yc(a){this.d=a};_.Kh=function _Yc(a){this.d==a&&(this.d=null)};_.d=null;var gX=k4(YSd,'AdapterImpl',1016);c3(1688,59,LUd);_.lh=function fZc(a){var b,c,d;++this.j;if(a.Wb()){return false}else{b=this.hi();for(d=a.tc();d.hc();){c=d.ic();this.Wh(this.Ch(b,c));++b}return true}};_.mh=function gZc(a,b){bZc(this,a,b)};_.nh=function hZc(a){cZc(this,a)};_.Uh=function iZc(){return this.Xh()};_.Pb=function jZc(){dZc(this,this.hi(),this.ii())};_.pc=function kZc(a){return this.Zh(a)};_.qc=function lZc(a){return this.$h(a)};_.Vh=function mZc(a,b){this.ei().tl()};_.Wh=function nZc(a){this.ei().tl()};_.Xh=function oZc(){return this.ei()};_.Yh=function pZc(){this.ei().tl()};_.Zh=function qZc(a){return this.ei().tl()};_.$h=function rZc(a){return this.ei().tl()};_._h=function sZc(a){return this.ei().tl()};_.ai=function tZc(a){return this.ei().tl()};_.bi=function uZc(){return this.ei().tl()};_.ci=function vZc(a){return this.ei().tl()};_.di=function wZc(){return this.ei().tl()};_.fi=function xZc(a){return this.ei().tl()};_.gi=function yZc(a,b){return this.ei().tl()};_.hi=function zZc(){return this.ei().tl()};_.ii=function AZc(){return this.ei().tl()};_.ji=function BZc(a){return this.ei().tl()};_.ki=function CZc(){return this.ei().tl()};_.Fb=function DZc(a){return this._h(a)};_.cd=function EZc(a){return this.zh(a,this.ai(a))};_.Hb=function FZc(){return this.bi()};_.dd=function GZc(a){return this.ci(a)};_.Wb=function HZc(){return this.di()};_.yh=function IZc(a){return this.ai(a)};_.gd=function JZc(a){return eZc(this,a)};_.vc=function KZc(a){var b;b=this.dd(a);if(b>=0){this.gd(b);return true}else{return false}};_.Ah=function LZc(a,b){return this.gi(a,this.Ch(a,b))};_._b=function MZc(){return this.hi()};_.yc=function NZc(){return this.ii()};_.zc=function OZc(a){return this.ji(a)};_.Ib=function PZc(){return this.ki()};var SX=k4(FTd,'DelegatingEList',1688);c3(1689,1688,LUd);_.li=function XZc(a,b){return QZc(this,a,b)};_.lh=function YZc(a){return this.li(this.hi(),a)};_.mh=function ZZc(a,b){RZc(this,a,b)};_.nh=function $Zc(a){SZc(this,a)};_.rh=function _Zc(){return !this.qi()};_.Pb=function a$c(){VZc(this)};_.mi=function b$c(a,b,c,d,e){return new _$c(this,a,b,c,d,e)};_.ni=function c$c(a){vMc(this.Oh(),a)};_.oi=function d$c(){return null};_.pi=function e$c(){return -1};_.Oh=function f$c(){return null};_.qi=function g$c(){return false};_.ri=function h$c(a,b){return b};_.si=function i$c(a,b){return b};_.ti=function j$c(){return false};_.ui=function k$c(){return !this.di()};_.gd=function l$c(a){var b,c,d,e;if(this.ti()){d=this.ui();b=this.mi(4,e=eZc(this,a),null,a,d);if(this.qi()&&!!e){c=this.si(e,null);if(!c){this.ni(b)}else{c.Sh(b);c.Th()}}else{this.ni(b)}return e}else{e=eZc(this,a);if(this.qi()&&!!e){c=this.si(e,null);!!c&&c.Th()}return e}};_.Ah=function m$c(a,b){return WZc(this,a,b)};var jX=k4(YSd,'DelegatingNotifyingListImpl',1689);c3(136,1,MUd);_.Sh=function O$c(a){return n$c(this,a)};_.Th=function P$c(){o$c(this)};_.Lh=function Q$c(){return this.d};_.oi=function R$c(){return null};_.vi=function S$c(){return null};_.Mh=function T$c(a){return -1};_.Nh=function U$c(){return x$c(this)};_.Oh=function V$c(){return null};_.Ph=function W$c(){return G$c(this)};_.Qh=function X$c(){return this.o<0?this.o<-2?-2-this.o-1:-1:this.o};_.wi=function Y$c(){return false};_.Rh=function Z$c(a){var b,c,d,e,f,g,h,i,j,k,l;switch(this.d){case 1:case 2:{e=a.Lh();switch(e){case 1:case 2:{f=a.Oh();if(yA(f)===yA(this.Oh())&&this.Mh(null)==a.Mh(null)){this.g=a.Nh();a.Lh()==1&&(this.d=1);return true}}}}case 4:{e=a.Lh();switch(e){case 4:{f=a.Oh();if(yA(f)===yA(this.Oh())&&this.Mh(null)==a.Mh(null)){j=I$c(this);i=this.o<0?this.o<-2?-2-this.o-1:-1:this.o;g=a.Qh();this.d=6;l=new dYc(2);if(i<=g){fXc(l,this.n);fXc(l,a.Ph());this.g=xz(pz(FA,1),OKd,22,15,[this.o=i,g+1])}else{fXc(l,a.Ph());fXc(l,this.n);this.g=xz(pz(FA,1),OKd,22,15,[this.o=g,i])}this.n=l;j||(this.o=-2-this.o-1);return true}break}}break}case 6:{e=a.Lh();switch(e){case 4:{f=a.Oh();if(yA(f)===yA(this.Oh())&&this.Mh(null)==a.Mh(null)){j=I$c(this);g=a.Qh();k=kA(this.g,37);d=tz(FA,OKd,22,k.length+1,15,1);b=0;while(b>>0).toString(16));c.a+=' (eventType: ';switch(this.d){case 1:{c.a+='SET';break}case 2:{c.a+='UNSET';break}case 3:{c.a+='ADD';break}case 5:{c.a+='ADD_MANY';break}case 4:{c.a+='REMOVE';break}case 6:{c.a+='REMOVE_MANY';break}case 7:{c.a+='MOVE';break}case 8:{c.a+='REMOVING_ADAPTER';break}case 9:{c.a+='RESOLVE';break}default:{u6(c,this.d);break}}H$c(this)&&(c.a+=', touch: true',c);c.a+=', position: ';u6(c,this.o<0?this.o<-2?-2-this.o-1:-1:this.o);c.a+=', notifier: ';v6(c,this.Oh());c.a+=', feature: ';v6(c,this.oi());c.a+=', oldValue: ';v6(c,G$c(this));c.a+=', newValue: ';if(this.d==6&&sA(this.g,37)){b=kA(this.g,37);c.a+='[';for(a=0;a10){if(!this.b||this.c.j!=this.a){this.b=new Lgb(this);this.a=this.j}return Hgb(this.b,a)}else{return VXc(this,a)}};_.Bh=function Y_c(){return true};_.a=0;var pX=k4(FTd,'AbstractEList/1',869);c3(295,79,kLd,Z_c);var qX=k4(FTd,'AbstractEList/BasicIndexOutOfBoundsException',295);c3(36,1,wJd,a0c);_.gc=function d0c(a){Bhb(this,a)};_.Bi=function b0c(){if(this.i.j!=this.f){throw x2(new qfb)}};_.Ci=function c0c(){return $_c(this)};_.hc=function e0c(){return this.e!=this.i._b()};_.ic=function f0c(){return this.Ci()};_.jc=function g0c(){__c(this)};_.e=0;_.f=0;_.g=-1;var rX=k4(FTd,'AbstractEList/EIterator',36);c3(296,36,NJd,j0c,k0c);_.jc=function s0c(){__c(this)};_.Bc=function l0c(a){h0c(this,a)};_.Di=function m0c(){var b;try{b=this.d.cd(--this.e);this.Bi();this.g=this.e;return b}catch(a){a=w2(a);if(sA(a,79)){this.Bi();throw x2(new djb)}else throw x2(a)}};_.Ei=function n0c(a){i0c(this,a)};_.Cc=function o0c(){return this.e!=0};_.Dc=function p0c(){return this.e};_.Ec=function q0c(){return this.Di()};_.Fc=function r0c(){return this.e-1};_.Gc=function t0c(a){this.Ei(a)};var sX=k4(FTd,'AbstractEList/EListIterator',296);c3(324,36,wJd,v0c);_.Ci=function w0c(){return u0c(this)};_.jc=function x0c(){throw x2(new U6)};var tX=k4(FTd,'AbstractEList/NonResolvingEIterator',324);c3(355,296,NJd,y0c,z0c);_.Bc=function A0c(a){throw x2(new U6)};_.Ci=function B0c(){var b;try{b=this.c.yh(this.e);this.Bi();this.g=this.e++;return b}catch(a){a=w2(a);if(sA(a,79)){this.Bi();throw x2(new djb)}else throw x2(a)}};_.Di=function C0c(){var b;try{b=this.c.yh(--this.e);this.Bi();this.g=this.e;return b}catch(a){a=w2(a);if(sA(a,79)){this.Bi();throw x2(new djb)}else throw x2(a)}};_.jc=function D0c(){throw x2(new U6)};_.Gc=function E0c(a){throw x2(new U6)};var uX=k4(FTd,'AbstractEList/NonResolvingEListIterator',355);c3(1673,59,QUd);_.lh=function M0c(a){var b,c,d,e,f,g,h,i,j;d=a._b();if(d!=0){i=(c=kA(VNc(this.a,4),116),c==null?0:c.length);j=i+d;b=K0c(this,j);h=a.tc();for(f=i;fc)throw x2(new Z_c(a,c));return new r1c(this,a)};_.Pb=function S0c(){var a,b;++this.j;a=kA(VNc(this.a,4),116);b=a==null?0:a.length;csd(this,null);iXc(this,b,a)};_.pc=function T0c(a){var b,c,d,e;b=kA(VNc(this.a,4),116);if(b!=null){if(a!=null){for(d=0,e=b.length;d=c)throw x2(new Z_c(a,c));return b[a]};_.dd=function V0c(a){var b,c,d;b=kA(VNc(this.a,4),116);if(b!=null){if(a!=null){for(c=0,d=b.length;cc)throw x2(new Z_c(a,c));return new j1c(this,a)};_.yh=function $0c(a){return kA(VNc(this.a,4),116)[a]};_.gd=function _0c(a){return L0c(this,a)};_.Ah=function a1c(a,b){var c,d;c=J0c(this);d=c[a];I0c(c,a,pXc(this,b));csd(this,c);return d};_._b=function b1c(){var a;return a=kA(VNc(this.a,4),116),a==null?0:a.length};_.yc=function c1c(){var a,b,c;a=kA(VNc(this.a,4),116);c=a==null?0:a.length;b=tz(eX,PUd,380,c,0,1);c>0&&T6(a,0,b,0,c);return b};_.zc=function d1c(a){var b,c,d;b=kA(VNc(this.a,4),116);d=b==null?0:b.length;if(d>0){if(a.lengthd&&wz(a,d,null);return a};var G0c;var BX=k4(FTd,'ArrayDelegatingEList',1673);c3(927,36,wJd,e1c);_.Bi=function f1c(){if(this.b.j!=this.f||yA(kA(VNc(this.b.a,4),116))!==yA(this.a)){throw x2(new qfb)}};_.jc=function g1c(){__c(this);this.a=kA(VNc(this.b.a,4),116)};var xX=k4(FTd,'ArrayDelegatingEList/EIterator',927);c3(640,296,NJd,i1c,j1c);_.Bi=function k1c(){if(this.b.j!=this.f||yA(kA(VNc(this.b.a,4),116))!==yA(this.a)){throw x2(new qfb)}};_.Ei=function l1c(a){i0c(this,a);this.a=kA(VNc(this.b.a,4),116)};_.jc=function m1c(){__c(this);this.a=kA(VNc(this.b.a,4),116)};var yX=k4(FTd,'ArrayDelegatingEList/EListIterator',640);c3(928,324,wJd,n1c);_.Bi=function o1c(){if(this.b.j!=this.f||yA(kA(VNc(this.b.a,4),116))!==yA(this.a)){throw x2(new qfb)}};var zX=k4(FTd,'ArrayDelegatingEList/NonResolvingEIterator',928);c3(641,355,NJd,q1c,r1c);_.Bi=function s1c(){if(this.b.j!=this.f||yA(kA(VNc(this.b.a,4),116))!==yA(this.a)){throw x2(new qfb)}};var AX=k4(FTd,'ArrayDelegatingEList/NonResolvingEListIterator',641);c3(549,295,kLd,t1c);var CX=k4(FTd,'BasicEList/BasicIndexOutOfBoundsException',549);c3(630,55,VTd,u1c);_.bd=function v1c(a,b){throw x2(new U6)};_.nc=function w1c(a){throw x2(new U6)};_.oc=function x1c(a){throw x2(new U6)};_.Pb=function y1c(){throw x2(new U6)};_.Eh=function z1c(a){throw x2(new U6)};_.tc=function A1c(){return this.oh()};_.ed=function B1c(){return this.ph()};_.fd=function C1c(a){return this.qh(a)};_.gd=function D1c(a){throw x2(new U6)};_.vc=function E1c(a){throw x2(new U6)};_.hd=function F1c(a,b){throw x2(new U6)};var DX=k4(FTd,'BasicEList/UnmodifiableEList',630);c3(639,1,{3:1,20:1,13:1,15:1,52:1,533:1});_.bd=function d2c(a,b){G1c(this,a,kA(b,38))};_.nc=function e2c(a){return H1c(this,kA(a,38))};_.sc=function l2c(a){i5(this,a)};_.cd=function m2c(a){return kA(WXc(this.c,a),134)};_.uc=function x2c(){return this.xc()};_.gd=function y2c(a){return kA(this.c.gd(a),38)};_.hd=function A2c(a,b){return b2c(this,a,kA(b,38))};_.jd=function C2c(a){Vib(this,a)};_.wc=function D2c(){return new ekb(this,16)};_.xc=function E2c(){return new Zob(null,this.wc())};_.oc=function f2c(a){return this.c.oc(a)};_.Pb=function g2c(){this.c.Pb()};_.pc=function h2c(a){return this.c.pc(a)};_.qc=function i2c(a){return sg(this.c,a)};_.Fi=function j2c(){var a,b,c;if(this.d==null){this.d=tz(EX,RUd,55,2*this.f+1,0,1);c=this.e;this.f=0;for(b=this.c.tc();b.e!=b.i._b();){a=kA(b.Ci(),134);M1c(this,a)}this.e=c}};_.Fb=function k2c(a){return R1c(this,a)};_.Hb=function n2c(){return lXc(this.c)};_.dd=function o2c(a){return this.c.dd(a)};_.Gi=function p2c(){this.c=new M2c(this)};_.Wb=function q2c(){return this.f==0};_.tc=function r2c(){return this.c.tc()};_.ed=function s2c(){return this.c.ed()};_.fd=function t2c(a){return this.c.fd(a)};_.Hi=function u2c(){return X1c(this)};_.Ii=function v2c(a,b,c){return new M3c(a,b,c)};_.Ji=function w2c(){return new R2c};_.vc=function z2c(a){return $1c(this,a)};_._b=function B2c(){return this.f};_.kd=function F2c(a,b){return new A9(this.c,a,b)};_.yc=function G2c(){return this.c.yc()};_.zc=function H2c(a){return this.c.zc(a)};_.Ib=function I2c(){return oXc(this.c)};_.e=0;_.f=0;var RX=k4(FTd,'BasicEMap',639);c3(922,55,VTd,M2c);_.sh=function N2c(a,b){J2c(this,kA(b,134))};_.vh=function P2c(a,b){K2c(this,kA(b,134))};_.wh=function Q2c(a,b,c){L2c(this,kA(b,134),kA(c,134))};_.uh=function O2c(a,b){L1c(this.a)};var FX=k4(FTd,'BasicEMap/1',922);c3(923,55,VTd,R2c);_.Fh=function S2c(a){return tz(OX,SUd,551,a,0,1)};var GX=k4(FTd,'BasicEMap/2',923);c3(924,IJd,JJd,T2c);_.Pb=function U2c(){this.a.c.Pb()};_.pc=function V2c(a){return I1c(this.a,a)};_.tc=function W2c(){return this.a.f==0?(Y3c(),X3c.a):new q3c(this.a)};_.vc=function X2c(a){var b;b=this.a.f;a2c(this.a,a);return this.a.f!=b};_._b=function Y2c(){return this.a.f};var HX=k4(FTd,'BasicEMap/3',924);c3(925,25,HJd,Z2c);_.Pb=function $2c(){this.a.c.Pb()};_.pc=function _2c(a){return J1c(this.a,a)};_.tc=function a3c(){return this.a.f==0?(Y3c(),X3c.a):new s3c(this.a)};_._b=function b3c(){return this.a.f};var IX=k4(FTd,'BasicEMap/4',925);c3(926,IJd,JJd,d3c);_.Pb=function e3c(){this.a.c.Pb()};_.pc=function f3c(a){var b,c,d,e,f,g,h,i,j;if(this.a.f>0&&sA(a,38)){this.a.Fi();i=kA(a,38);h=i.kc();e=h==null?0:ob(h);f=V1c(this.a,e);b=this.a.d[f];if(b){c=kA(b.g,339);j=b.i;for(g=0;g'+this.c};_.a=0;var OX=k4(FTd,'BasicEMap/EntryImpl',551);c3(484,1,{},W3c);var QX=k4(FTd,'BasicEMap/View',484);var X3c;c3(695,1,{});_.Fb=function f4c(a){return mq((bdb(),$cb),a)};_.Hb=function g4c(){return fdb((bdb(),$cb))};_.Ib=function h4c(){return vg((bdb(),$cb))};var WX=k4(FTd,'ECollections/BasicEmptyUnmodifiableEList',695);c3(1164,1,NJd,i4c);_.gc=function k4c(a){Bhb(this,a)};_.Bc=function j4c(a){throw x2(new U6)};_.hc=function l4c(){return false};_.Cc=function m4c(){return false};_.ic=function n4c(){throw x2(new djb)};_.Dc=function o4c(){return 0};_.Ec=function p4c(){throw x2(new djb)};_.Fc=function q4c(){return -1};_.jc=function r4c(){throw x2(new U6)};_.Gc=function s4c(a){throw x2(new U6)};var VX=k4(FTd,'ECollections/BasicEmptyUnmodifiableEList/1',1164);c3(1162,695,{20:1,13:1,15:1,52:1},t4c);_.bd=function u4c(a,b){Z3c()};_.nc=function v4c(a){return $3c()};_.oc=function w4c(a){return _3c()};_.Pb=function x4c(){a4c()};_.pc=function y4c(a){return false};_.qc=function z4c(a){return false};_.sc=function A4c(a){i5(this,a)};_.cd=function B4c(a){return kdb((bdb(),$cb,a)),null};_.dd=function C4c(a){return -1};_.Wb=function D4c(){return true};_.tc=function E4c(){return this.a};_.ed=function F4c(){return this.a};_.fd=function G4c(a){return this.a};_.uc=function H4c(){return this.xc()};_.gd=function I4c(a){return b4c()};_.vc=function J4c(a){return c4c()};_.hd=function K4c(a,b){return d4c()};_._b=function L4c(){return 0};_.jd=function M4c(a){Vib(this,a)};_.wc=function N4c(){return new ekb(this,16)};_.xc=function O4c(){return new Zob(null,this.wc())};_.kd=function P4c(a,b){return bdb(),new A9($cb,a,b)};_.yc=function Q4c(){return tg((bdb(),$cb))};_.zc=function R4c(a){return bdb(),ug($cb,a)};var XX=k4(FTd,'ECollections/EmptyUnmodifiableEList',1162);c3(1163,695,{20:1,13:1,15:1,52:1,533:1},S4c);_.bd=function T4c(a,b){Z3c()};_.nc=function U4c(a){return $3c()};_.oc=function V4c(a){return _3c()};_.Pb=function W4c(){a4c()};_.pc=function X4c(a){return false};_.qc=function Y4c(a){return false};_.sc=function Z4c(a){i5(this,a)};_.cd=function $4c(a){return kdb((bdb(),$cb,a)),null};_.dd=function _4c(a){return -1};_.Wb=function a5c(){return true};_.tc=function b5c(){return this.a};_.ed=function c5c(){return this.a};_.fd=function d5c(a){return this.a};_.uc=function f5c(){return this.xc()};_.gd=function g5c(a){return b4c()};_.vc=function h5c(a){return c4c()};_.hd=function i5c(a,b){return d4c()};_._b=function j5c(){return 0};_.jd=function k5c(a){Vib(this,a)};_.wc=function l5c(){return new ekb(this,16)};_.xc=function m5c(){return new Zob(null,this.wc())};_.kd=function n5c(a,b){return bdb(),new A9($cb,a,b)};_.yc=function o5c(){return tg((bdb(),$cb))};_.zc=function p5c(a){return bdb(),ug($cb,a)};_.Hi=function e5c(){return bdb(),bdb(),_cb};var YX=k4(FTd,'ECollections/EmptyUnmodifiableEMap',1163);var $X=m4(FTd,'Enumerator');var q5c;c3(261,1,{261:1},P5c);_.Fb=function T5c(a){var b;if(this===a)return true;if(!sA(a,261))return false;b=kA(a,261);return this.f==b.f&&V5c(this.i,b.i)&&U5c(this.a,(this.f&256)!=0?(b.f&256)!=0?b.a:null:(b.f&256)!=0?null:b.a)&&U5c(this.d,b.d)&&U5c(this.g,b.g)&&U5c(this.e,b.e)&&M5c(this,b)};_.Hb=function Y5c(){return this.f};_.Ib=function e6c(){return N5c(this)};_.f=0;var u5c=0,v5c=0,w5c=0,x5c=0,y5c=0,z5c=0,A5c=0,B5c=0,C5c=0,D5c,E5c=0,F5c=0,G5c=0,H5c=0,I5c,J5c;var dY=k4(FTd,'URI',261);c3(965,44,FLd,o6c);_.Zb=function p6c(a,b){return kA(J8(this,pA(a),kA(b,261)),261)};var cY=k4(FTd,'URI/URICache',965);c3(451,55,VTd,q6c,r6c);_.xh=function s6c(){return true};var eY=k4(FTd,'UniqueEList',451);c3(526,54,rKd,t6c);var fY=k4(FTd,'WrappedException',526);var gY=m4(KSd,VUd);var BY=m4(KSd,WUd);var zY=m4(KSd,XUd);var hY=m4(KSd,YUd);var jY=m4(KSd,ZUd);var iY=m4(KSd,'EClass');var lY=m4(KSd,'EDataType');var u6c;c3(1096,44,FLd,x6c);_.Vb=function y6c(a){return wA(a)?G8(this,a):Of(Wgb(this.d,a))};var kY=k4(KSd,'EDataType/Internal/ConversionDelegate/Factory/Registry/Impl',1096);var nY=m4(KSd,'EEnum');var mY=m4(KSd,$Ud);var pY=m4(KSd,_Ud);var tY=m4(KSd,aVd);var z6c;var vY=m4(KSd,bVd);var wY=m4(KSd,cVd);c3(918,1,{},D6c);_.Ib=function E6c(){return 'NIL'};var xY=k4(KSd,'EStructuralFeature/Internal/DynamicValueHolder/1',918);var F6c;c3(917,44,FLd,I6c);_.Vb=function J6c(a){return wA(a)?G8(this,a):Of(Wgb(this.d,a))};var yY=k4(KSd,'EStructuralFeature/Internal/SettingDelegate/Factory/Registry/Impl',917);var AY=m4(KSd,dVd);var CY=m4(KSd,'EValidator/PatternMatcher');var K6c;var M6c;var O6c;var Q6c,R6c,S6c,T6c,U6c,V6c,W6c,X6c,Y6c,Z6c,$6c,_6c,a7c,b7c,c7c,d7c,e7c,f7c,g7c,h7c,i7c;var G0=m4(eVd,'FeatureMap/Entry');c3(483,1,{75:1},k7c);_.nj=function l7c(){return this.a};_.lc=function m7c(){return this.b};var DY=k4(dTd,'BasicEObjectImpl/1',483);c3(1674,1,{103:1});_.oj=function p7c(a){this.e=a==0?n7c:tz(NE,oJd,1,a,5,1)};_.Tg=function q7c(a){return this.e[a]};_.Ug=function r7c(a,b){this.e[a]=b};_.Vg=function s7c(a){this.e[a]=null};_.pj=function t7c(){return this.c};_.qj=function u7c(){throw x2(new U6)};_.rj=function v7c(){throw x2(new U6)};_.sj=function w7c(){return this.d};_.tj=function x7c(){return this.e!=null};_.uj=function y7c(a){this.c=a};_.vj=function z7c(a){throw x2(new U6)};_.wj=function A7c(a){this.d=a};var n7c;var EY=k4(dTd,'BasicEObjectImpl/EPropertiesHolderBaseImpl',1674);c3(201,1674,{103:1},B7c);_.qj=function C7c(){return this.a};_.rj=function D7c(){return this.b};_.vj=function E7c(a){this.a=a};var FY=k4(dTd,'BasicEObjectImpl/EPropertiesHolderImpl',201);c3(463,92,cTd,F7c);_.dg=function G7c(){return this.f};_.ig=function H7c(){return this.k};_.kg=function I7c(a,b){this.g=a;this.i=b};_.mg=function J7c(){return (this.j&2)==0?this.Rg():this.Jg().pj()};_.og=function K7c(){return this.i};_.fg=function L7c(){return (this.j&1)!=0};_.yg=function M7c(){return this.g};_.Eg=function N7c(){return (this.j&4)!=0};_.Jg=function O7c(){return !this.k&&(this.k=new B7c),this.k};_.Ng=function P7c(a){this.Jg().uj(a);a?(this.j|=2):(this.j&=-3)};_.Rg=function Q7c(){return (P6c(),O6c).S};_.i=0;_.j=1;var qZ=k4(dTd,'EObjectImpl',463);c3(710,463,{95:1,91:1,87:1,51:1,103:1,42:1,92:1},T7c);_.Tg=function U7c(a){return this.e[a]};_.Ug=function V7c(a,b){this.e[a]=b};_.Vg=function W7c(a){this.e[a]=null};_.mg=function X7c(){return this.d};_.rg=function Y7c(a){return Mbd(this.d,a)};_.tg=function Z7c(){return this.d};_.xg=function $7c(){return this.e!=null};_.Jg=function _7c(){!this.k&&(this.k=new n8c);return this.k};_.Ng=function a8c(a){this.d=a};_.Qg=function b8c(){var a;if(this.e==null){a=Lbd(this.d);this.e=a==0?R7c:tz(NE,oJd,1,a,5,1)}return this};_.Sg=function c8c(){return 0};var R7c;var JY=k4(dTd,'DynamicEObjectImpl',710);c3(1389,710,{95:1,38:1,91:1,87:1,134:1,51:1,103:1,42:1,92:1},d8c);_.Fb=function f8c(a){return this===a};_.Hb=function j8c(){return bqb(this)};_.Ng=function e8c(a){this.d=a;this.b=Hbd(a,'key');this.c=Hbd(a,nTd)};_.ih=function g8c(){var a;if(this.a==-1){a=KMc(this,this.b);this.a=a==null?0:ob(a)}return this.a};_.kc=function h8c(){return KMc(this,this.b)};_.lc=function i8c(){return KMc(this,this.c)};_.jh=function k8c(a){this.a=a};_.kh=function l8c(a){ZMc(this,this.b,a)};_.mc=function m8c(a){var b;b=KMc(this,this.c);ZMc(this,this.c,a);return b};_.a=0;var HY=k4(dTd,'DynamicEObjectImpl/BasicEMapEntry',1389);c3(1390,1,{103:1},n8c);_.oj=function o8c(a){throw x2(new U6)};_.Tg=function p8c(a){throw x2(new U6)};_.Ug=function q8c(a,b){throw x2(new U6)};_.Vg=function r8c(a){throw x2(new U6)};_.pj=function s8c(){throw x2(new U6)};_.qj=function t8c(){return this.a};_.rj=function u8c(){return this.b};_.sj=function v8c(){return this.c};_.tj=function w8c(){throw x2(new U6)};_.uj=function x8c(a){throw x2(new U6)};_.vj=function y8c(a){this.a=a};_.wj=function z8c(a){this.c=a};var IY=k4(dTd,'DynamicEObjectImpl/DynamicEPropertiesHolderImpl',1390);c3(469,142,{95:1,91:1,87:1,609:1,139:1,51:1,103:1,42:1,92:1,469:1,142:1,107:1,108:1},H8c);_.jg=function I8c(a){return B8c(this,a)};_.ug=function J8c(a,b,c){var d;switch(a){case 0:return !this.Ab&&(this.Ab=new zkd(gY,this,0,3)),this.Ab;case 1:return this.d;case 2:return c?(!this.b&&(this.b=new f9c((j7c(),f7c),CZ,this)),this.b):(!this.b&&(this.b=new f9c((j7c(),f7c),CZ,this)),X1c(this.b));case 3:return C8c(this);case 4:return !this.a&&(this.a=new fdd(sY,this,4)),this.a;case 5:return !this.c&&(this.c=new Swd(sY,this,5)),this.c;}return EMc(this,a-Lbd((j7c(),Q6c)),Gbd((d=kA(VNc(this,16),24),!d?Q6c:d),a),b,c)};_.Bg=function K8c(a,b,c){var d,e,f;switch(b){case 0:return !this.Ab&&(this.Ab=new zkd(gY,this,0,3)),p_c(this.Ab,a,c);case 3:!!this.Cb&&(c=(e=this.Db>>16,e>=0?B8c(this,c):this.Cb.Cg(this,-1-e,null,c)));return A8c(this,kA(a,139),c);}return f=kA(Gbd((d=kA(VNc(this,16),24),!d?(j7c(),Q6c):d),b),61),f.aj().dj(this,TNc(this),b-Lbd((j7c(),Q6c)),a,c)};_.Dg=function L8c(a,b,c){var d,e;switch(b){case 0:return !this.Ab&&(this.Ab=new zkd(gY,this,0,3)),q_c(this.Ab,a,c);case 2:return !this.b&&(this.b=new f9c((j7c(),f7c),CZ,this)),R8c(this.b,a,c);case 3:return A8c(this,null,c);case 4:return !this.a&&(this.a=new fdd(sY,this,4)),q_c(this.a,a,c);}return e=kA(Gbd((d=kA(VNc(this,16),24),!d?(j7c(),Q6c):d),b),61),e.aj().ej(this,TNc(this),b-Lbd((j7c(),Q6c)),a,c)};_.Fg=function M8c(a){var b;switch(a){case 0:return !!this.Ab&&this.Ab.i!=0;case 1:return this.d!=null;case 2:return !!this.b&&this.b.f!=0;case 3:return !!C8c(this);case 4:return !!this.a&&this.a.i!=0;case 5:return !!this.c&&this.c.i!=0;}return FMc(this,a-Lbd((j7c(),Q6c)),Gbd((b=kA(VNc(this,16),24),!b?Q6c:b),a))};_.Mg=function N8c(a,b){var c;switch(a){case 0:!this.Ab&&(this.Ab=new zkd(gY,this,0,3));r_c(this.Ab);!this.Ab&&(this.Ab=new zkd(gY,this,0,3));gXc(this.Ab,kA(b,13));return;case 1:E8c(this,pA(b));return;case 2:!this.b&&(this.b=new f9c((j7c(),f7c),CZ,this));S8c(this.b,b);return;case 3:D8c(this,kA(b,139));return;case 4:!this.a&&(this.a=new fdd(sY,this,4));r_c(this.a);!this.a&&(this.a=new fdd(sY,this,4));gXc(this.a,kA(b,13));return;case 5:!this.c&&(this.c=new Swd(sY,this,5));r_c(this.c);!this.c&&(this.c=new Swd(sY,this,5));gXc(this.c,kA(b,13));return;}GMc(this,a-Lbd((j7c(),Q6c)),Gbd((c=kA(VNc(this,16),24),!c?Q6c:c),a),b)};_.Rg=function O8c(){return j7c(),Q6c};_.Ib=function P8c(){return G8c(this)};_.d=null;var LY=k4(dTd,'EAnnotationImpl',469);c3(143,639,fVd,T8c);_.xj=function U8c(a,b){return Q8c(this,kA(a,38),b)};_.Dh=function V8c(a){return kA(kA(this.c,64).Dh(a),134)};_.oh=function W8c(){return kA(this.c,64).oh()};_.ph=function X8c(){return kA(this.c,64).ph()};_.qh=function Y8c(a){return kA(this.c,64).qh(a)};_.yj=function Z8c(a,b){return R8c(this,a,b)};_.hj=function $8c(a){return kA(this.c,81).hj(a)};_.Gi=function _8c(){};_.ui=function a9c(){return kA(this.c,81).ui()};_.Ii=function b9c(a,b,c){var d;d=kA(Nad(this.b).dh().$g(this.b),134);d.jh(a);d.kh(b);d.mc(c);return d};_.Ji=function c9c(){return new Nxd(this)};_.Gc=function d9c(a){S8c(this,a)};_.ij=function e9c(){kA(this.c,81).ij()};var B0=k4(eVd,'EcoreEMap',143);c3(152,143,fVd,f9c);_.Fi=function g9c(){var a,b,c,d,e,f;if(this.d==null){f=tz(EX,RUd,55,2*this.f+1,0,1);for(c=this.c.tc();c.e!=c.i._b();){b=kA(c.Ci(),134);d=b.ih();e=(d&jJd)%f.length;a=f[e];!a&&(a=f[e]=new Nxd(this));a.nc(b)}this.d=f}};var KY=k4(dTd,'EAnnotationImpl/1',152);c3(268,399,{95:1,91:1,87:1,139:1,174:1,51:1,103:1,431:1,42:1,92:1,142:1,268:1,107:1,108:1});_.ug=function t9c(a,b,c){var d,e;switch(a){case 0:return !this.Ab&&(this.Ab=new zkd(gY,this,0,3)),this.Ab;case 1:return this.zb;case 2:return B3(),(this.Bb&256)!=0?true:false;case 3:return B3(),(this.Bb&512)!=0?true:false;case 4:return d5(this.s);case 5:return d5(this.t);case 6:return B3(),this.lj()?true:false;case 7:return B3(),e=this.s,e>=1?true:false;case 8:if(b)return j9c(this);return this.r;case 9:return this.q;}return EMc(this,a-Lbd(this.Rg()),Gbd((d=kA(VNc(this,16),24),!d?this.Rg():d),a),b,c)};_.Dg=function u9c(a,b,c){var d,e;switch(b){case 0:return !this.Ab&&(this.Ab=new zkd(gY,this,0,3)),q_c(this.Ab,a,c);case 9:return i9c(this,c);}return e=kA(Gbd((d=kA(VNc(this,16),24),!d?this.Rg():d),b),61),e.aj().ej(this,TNc(this),b-Lbd(this.Rg()),a,c)};_.Fg=function v9c(a){var b,c;switch(a){case 0:return !!this.Ab&&this.Ab.i!=0;case 1:return this.zb!=null;case 2:return (this.Bb&256)==0;case 3:return (this.Bb&512)==0;case 4:return this.s!=0;case 5:return this.t!=1;case 6:return this.lj();case 7:return c=this.s,c>=1;case 8:return !!this.r&&!this.q.e&&ohd(this.q).i==0;case 9:return !!this.q&&!(!!this.r&&!this.q.e&&ohd(this.q).i==0);}return FMc(this,a-Lbd(this.Rg()),Gbd((b=kA(VNc(this,16),24),!b?this.Rg():b),a))};_.Mg=function w9c(a,b){var c,d;switch(a){case 0:!this.Ab&&(this.Ab=new zkd(gY,this,0,3));r_c(this.Ab);!this.Ab&&(this.Ab=new zkd(gY,this,0,3));gXc(this.Ab,kA(b,13));return;case 1:this.ah(pA(b));return;case 2:o9c(this,Vpb(mA(b)));return;case 3:p9c(this,Vpb(mA(b)));return;case 4:n9c(this,kA(b,21).a);return;case 5:this.Aj(kA(b,21).a);return;case 8:l9c(this,kA(b,133));return;case 9:d=k9c(this,kA(b,84),null);!!d&&d.Th();return;}GMc(this,a-Lbd(this.Rg()),Gbd((c=kA(VNc(this,16),24),!c?this.Rg():c),a),b)};_.Rg=function x9c(){return j7c(),h7c};_.Xg=function y9c(){j9c(this);this.Bb|=1};_.jj=function z9c(){return j9c(this)};_.kj=function A9c(){return this.t};_.lj=function B9c(){var a;return a=this.t,a>1||a==-1};_.xh=function C9c(){return (this.Bb&512)!=0};_.zj=function D9c(a,b){return m9c(this,a,b)};_.Aj=function E9c(a){q9c(this,a)};_.Ib=function F9c(){return r9c(this)};_.s=0;_.t=1;var y$=k4(dTd,'ETypedElementImpl',268);c3(418,268,{95:1,91:1,87:1,139:1,174:1,51:1,158:1,61:1,103:1,431:1,42:1,92:1,142:1,418:1,268:1,107:1,108:1,615:1});_.jg=function W9c(a){return G9c(this,a)};_.ug=function X9c(a,b,c){var d,e;switch(a){case 0:return !this.Ab&&(this.Ab=new zkd(gY,this,0,3)),this.Ab;case 1:return this.zb;case 2:return B3(),(this.Bb&256)!=0?true:false;case 3:return B3(),(this.Bb&512)!=0?true:false;case 4:return d5(this.s);case 5:return d5(this.t);case 6:return B3(),this.lj()?true:false;case 7:return B3(),e=this.s,e>=1?true:false;case 8:if(b)return j9c(this);return this.r;case 9:return this.q;case 10:return B3(),(this.Bb&hVd)!=0?true:false;case 11:return B3(),(this.Bb&jVd)!=0?true:false;case 12:return B3(),(this.Bb&qLd)!=0?true:false;case 13:return this.j;case 14:return H9c(this);case 15:return B3(),(this.Bb&iVd)!=0?true:false;case 16:return B3(),(this.Bb&RJd)!=0?true:false;case 17:return I9c(this);}return EMc(this,a-Lbd(this.Rg()),Gbd((d=kA(VNc(this,16),24),!d?this.Rg():d),a),b,c)};_.Bg=function Y9c(a,b,c){var d,e,f;switch(b){case 0:return !this.Ab&&(this.Ab=new zkd(gY,this,0,3)),p_c(this.Ab,a,c);case 17:!!this.Cb&&(c=(e=this.Db>>16,e>=0?G9c(this,c):this.Cb.Cg(this,-1-e,null,c)));return CMc(this,a,17,c);}return f=kA(Gbd((d=kA(VNc(this,16),24),!d?this.Rg():d),b),61),f.aj().dj(this,TNc(this),b-Lbd(this.Rg()),a,c)};_.Dg=function Z9c(a,b,c){var d,e;switch(b){case 0:return !this.Ab&&(this.Ab=new zkd(gY,this,0,3)),q_c(this.Ab,a,c);case 9:return i9c(this,c);case 17:return CMc(this,null,17,c);}return e=kA(Gbd((d=kA(VNc(this,16),24),!d?this.Rg():d),b),61),e.aj().ej(this,TNc(this),b-Lbd(this.Rg()),a,c)};_.Fg=function $9c(a){var b,c;switch(a){case 0:return !!this.Ab&&this.Ab.i!=0;case 1:return this.zb!=null;case 2:return (this.Bb&256)==0;case 3:return (this.Bb&512)==0;case 4:return this.s!=0;case 5:return this.t!=1;case 6:return this.lj();case 7:return c=this.s,c>=1;case 8:return !!this.r&&!this.q.e&&ohd(this.q).i==0;case 9:return !!this.q&&!(!!this.r&&!this.q.e&&ohd(this.q).i==0);case 10:return (this.Bb&hVd)==0;case 11:return (this.Bb&jVd)!=0;case 12:return (this.Bb&qLd)!=0;case 13:return this.j!=null;case 14:return H9c(this)!=null;case 15:return (this.Bb&iVd)!=0;case 16:return (this.Bb&RJd)!=0;case 17:return !!I9c(this);}return FMc(this,a-Lbd(this.Rg()),Gbd((b=kA(VNc(this,16),24),!b?this.Rg():b),a))};_.Mg=function _9c(a,b){var c,d;switch(a){case 0:!this.Ab&&(this.Ab=new zkd(gY,this,0,3));r_c(this.Ab);!this.Ab&&(this.Ab=new zkd(gY,this,0,3));gXc(this.Ab,kA(b,13));return;case 1:Q9c(this,pA(b));return;case 2:o9c(this,Vpb(mA(b)));return;case 3:p9c(this,Vpb(mA(b)));return;case 4:n9c(this,kA(b,21).a);return;case 5:this.Aj(kA(b,21).a);return;case 8:l9c(this,kA(b,133));return;case 9:d=k9c(this,kA(b,84),null);!!d&&d.Th();return;case 10:L9c(this,Vpb(mA(b)));return;case 11:T9c(this,Vpb(mA(b)));return;case 12:R9c(this,Vpb(mA(b)));return;case 13:M9c(this,pA(b));return;case 15:S9c(this,Vpb(mA(b)));return;case 16:O9c(this,Vpb(mA(b)));return;}GMc(this,a-Lbd(this.Rg()),Gbd((c=kA(VNc(this,16),24),!c?this.Rg():c),a),b)};_.Rg=function aad(){return j7c(),g7c};_.Xg=function bad(){bud(rtd((uyd(),syd),this));j9c(this);this.Bb|=1};_.Vi=function cad(){return this.f};_.Oi=function dad(){return H9c(this)};_.Wi=function ead(){return I9c(this)};_.$i=function fad(){return null};_.Bj=function gad(){return this.k};_.pi=function had(){return this.n};_._i=function iad(){return J9c(this)};_.aj=function jad(){var a,b,c,d,e,f,g,h,i;if(!this.p){c=I9c(this);(c.i==null&&Cbd(c),c.i).length;d=this.$i();!!d&&Lbd(I9c(d));e=j9c(this);g=e.Qi();a=!g?null:(g.i&1)!=0?g==u2?tE:g==FA?GE:g==EA?CE:g==DA?yE:g==GA?IE:g==t2?PE:g==BA?uE:vE:g;b=H9c(this);h=e.Oi();cyd(this);(this.Bb&RJd)!=0&&(!!(f=utd((uyd(),syd),c))&&f!=this||!!(f=aud(rtd(syd,this))))?(this.p=new Uld(this,f)):this.lj()?this.Dj()?!d?(this.Bb&iVd)!=0?!a?this.Ej()?(this.p=new bmd(42,this)):(this.p=new bmd(0,this)):a==qG?(this.p=new _ld(50,PX,this)):this.Ej()?(this.p=new _ld(43,a,this)):(this.p=new _ld(1,a,this)):!a?this.Ej()?(this.p=new bmd(44,this)):(this.p=new bmd(2,this)):a==qG?(this.p=new _ld(41,PX,this)):this.Ej()?(this.p=new _ld(45,a,this)):(this.p=new _ld(3,a,this)):(this.Bb&iVd)!=0?!a?this.Ej()?(this.p=new cmd(46,this,d)):(this.p=new cmd(4,this,d)):this.Ej()?(this.p=new amd(47,a,this,d)):(this.p=new amd(5,a,this,d)):!a?this.Ej()?(this.p=new cmd(48,this,d)):(this.p=new cmd(6,this,d)):this.Ej()?(this.p=new amd(49,a,this,d)):(this.p=new amd(7,a,this,d)):sA(e,140)?a==G0?(this.p=new bmd(40,this)):(this.Bb&512)!=0?(this.Bb&iVd)!=0?!a?(this.p=new bmd(8,this)):(this.p=new _ld(9,a,this)):!a?(this.p=new bmd(10,this)):(this.p=new _ld(11,a,this)):(this.Bb&iVd)!=0?!a?(this.p=new bmd(12,this)):(this.p=new _ld(13,a,this)):!a?(this.p=new bmd(14,this)):(this.p=new _ld(15,a,this)):!d?this.Ej()?(this.Bb&iVd)!=0?!a?(this.p=new bmd(16,this)):(this.p=new _ld(17,a,this)):!a?(this.p=new bmd(18,this)):(this.p=new _ld(19,a,this)):(this.Bb&iVd)!=0?!a?(this.p=new bmd(20,this)):(this.p=new _ld(21,a,this)):!a?(this.p=new bmd(22,this)):(this.p=new _ld(23,a,this)):(i=d.t,i>1||i==-1?this.Ej()?(this.Bb&iVd)!=0?!a?(this.p=new cmd(24,this,d)):(this.p=new amd(25,a,this,d)):!a?(this.p=new cmd(26,this,d)):(this.p=new amd(27,a,this,d)):(this.Bb&iVd)!=0?!a?(this.p=new cmd(28,this,d)):(this.p=new amd(29,a,this,d)):!a?(this.p=new cmd(30,this,d)):(this.p=new amd(31,a,this,d)):this.Ej()?(this.Bb&iVd)!=0?!a?(this.p=new cmd(32,this,d)):(this.p=new amd(33,a,this,d)):!a?(this.p=new cmd(34,this,d)):(this.p=new amd(35,a,this,d)):(this.Bb&iVd)!=0?!a?(this.p=new cmd(36,this,d)):(this.p=new amd(37,a,this,d)):!a?(this.p=new cmd(38,this,d)):(this.p=new amd(39,a,this,d))):this.Cj()?this.Ej()?(this.p=new umd(kA(e,24),this,d)):(this.p=new nmd(kA(e,24),this,d)):sA(e,140)?a==G0?(this.p=new bmd(40,this)):(this.Bb&iVd)!=0?!a?(this.p=new rnd(kA(e,140),b,h,this)):(this.p=new tnd(b,h,this,(Lmd(),g==FA?Hmd:g==u2?Cmd:g==GA?Imd:g==EA?Gmd:g==DA?Fmd:g==t2?Kmd:g==BA?Dmd:g==CA?Emd:Jmd))):!a?(this.p=new lnd(kA(e,140),b,h,this)):(this.p=new nnd(b,h,this,(Lmd(),g==FA?Hmd:g==u2?Cmd:g==GA?Imd:g==EA?Gmd:g==DA?Fmd:g==t2?Kmd:g==BA?Dmd:g==CA?Emd:Jmd))):this.Dj()?!d?(this.Bb&iVd)!=0?this.Ej()?(this.p=new Mnd(kA(e,24),this)):(this.p=new Knd(kA(e,24),this)):this.Ej()?(this.p=new Ind(kA(e,24),this)):(this.p=new Gnd(kA(e,24),this)):(this.Bb&iVd)!=0?this.Ej()?(this.p=new Und(kA(e,24),this,d)):(this.p=new Snd(kA(e,24),this,d)):this.Ej()?(this.p=new Qnd(kA(e,24),this,d)):(this.p=new Ond(kA(e,24),this,d)):this.Ej()?!d?(this.Bb&iVd)!=0?(this.p=new Ynd(kA(e,24),this)):(this.p=new Wnd(kA(e,24),this)):(this.Bb&iVd)!=0?(this.p=new aod(kA(e,24),this,d)):(this.p=new $nd(kA(e,24),this,d)):!d?(this.Bb&iVd)!=0?(this.p=new cod(kA(e,24),this)):(this.p=new vnd(kA(e,24),this)):(this.Bb&iVd)!=0?(this.p=new god(kA(e,24),this,d)):(this.p=new eod(kA(e,24),this,d))}return this.p};_.Xi=function kad(){return (this.Bb&hVd)!=0};_.Cj=function lad(){return false};_.Dj=function mad(){return false};_.Yi=function nad(){return (this.Bb&RJd)!=0};_.bj=function oad(){return K9c(this)};_.Ej=function pad(){return false};_.Zi=function qad(){return (this.Bb&iVd)!=0};_.Fj=function rad(a){this.k=a};_.ah=function sad(a){Q9c(this,a)};_.Ib=function tad(){return U9c(this)};_.e=false;_.n=0;var q$=k4(dTd,'EStructuralFeatureImpl',418);c3(335,418,{95:1,91:1,87:1,29:1,139:1,174:1,51:1,158:1,61:1,103:1,431:1,42:1,92:1,335:1,142:1,418:1,268:1,107:1,108:1,615:1},zad);_.ug=function Aad(a,b,c){var d,e;switch(a){case 0:return !this.Ab&&(this.Ab=new zkd(gY,this,0,3)),this.Ab;case 1:return this.zb;case 2:return B3(),(this.Bb&256)!=0?true:false;case 3:return B3(),(this.Bb&512)!=0?true:false;case 4:return d5(this.s);case 5:return d5(this.t);case 6:return B3(),wad(this)?true:false;case 7:return B3(),e=this.s,e>=1?true:false;case 8:if(b)return j9c(this);return this.r;case 9:return this.q;case 10:return B3(),(this.Bb&hVd)!=0?true:false;case 11:return B3(),(this.Bb&jVd)!=0?true:false;case 12:return B3(),(this.Bb&qLd)!=0?true:false;case 13:return this.j;case 14:return H9c(this);case 15:return B3(),(this.Bb&iVd)!=0?true:false;case 16:return B3(),(this.Bb&RJd)!=0?true:false;case 17:return I9c(this);case 18:return B3(),(this.Bb&bTd)!=0?true:false;case 19:if(b)return vad(this);return uad(this);}return EMc(this,a-Lbd((j7c(),R6c)),Gbd((d=kA(VNc(this,16),24),!d?R6c:d),a),b,c)};_.Fg=function Bad(a){var b,c;switch(a){case 0:return !!this.Ab&&this.Ab.i!=0;case 1:return this.zb!=null;case 2:return (this.Bb&256)==0;case 3:return (this.Bb&512)==0;case 4:return this.s!=0;case 5:return this.t!=1;case 6:return wad(this);case 7:return c=this.s,c>=1;case 8:return !!this.r&&!this.q.e&&ohd(this.q).i==0;case 9:return !!this.q&&!(!!this.r&&!this.q.e&&ohd(this.q).i==0);case 10:return (this.Bb&hVd)==0;case 11:return (this.Bb&jVd)!=0;case 12:return (this.Bb&qLd)!=0;case 13:return this.j!=null;case 14:return H9c(this)!=null;case 15:return (this.Bb&iVd)!=0;case 16:return (this.Bb&RJd)!=0;case 17:return !!I9c(this);case 18:return (this.Bb&bTd)!=0;case 19:return !!uad(this);}return FMc(this,a-Lbd((j7c(),R6c)),Gbd((b=kA(VNc(this,16),24),!b?R6c:b),a))};_.Mg=function Cad(a,b){var c,d;switch(a){case 0:!this.Ab&&(this.Ab=new zkd(gY,this,0,3));r_c(this.Ab);!this.Ab&&(this.Ab=new zkd(gY,this,0,3));gXc(this.Ab,kA(b,13));return;case 1:Q9c(this,pA(b));return;case 2:o9c(this,Vpb(mA(b)));return;case 3:p9c(this,Vpb(mA(b)));return;case 4:n9c(this,kA(b,21).a);return;case 5:yad(this,kA(b,21).a);return;case 8:l9c(this,kA(b,133));return;case 9:d=k9c(this,kA(b,84),null);!!d&&d.Th();return;case 10:L9c(this,Vpb(mA(b)));return;case 11:T9c(this,Vpb(mA(b)));return;case 12:R9c(this,Vpb(mA(b)));return;case 13:M9c(this,pA(b));return;case 15:S9c(this,Vpb(mA(b)));return;case 16:O9c(this,Vpb(mA(b)));return;case 18:xad(this,Vpb(mA(b)));return;}GMc(this,a-Lbd((j7c(),R6c)),Gbd((c=kA(VNc(this,16),24),!c?R6c:c),a),b)};_.Rg=function Dad(){return j7c(),R6c};_.Xg=function Ead(){vad(this);bud(rtd((uyd(),syd),this));j9c(this);this.Bb|=1};_.lj=function Fad(){return wad(this)};_.zj=function Gad(a,b){this.b=0;this.a=null;return m9c(this,a,b)};_.Aj=function Had(a){yad(this,a)};_.Ib=function Iad(){var a;if((this.Db&64)!=0)return U9c(this);a=new B6(U9c(this));a.a+=' (iD: ';x6(a,(this.Bb&bTd)!=0);a.a+=')';return a.a};_.b=0;var MY=k4(dTd,'EAttributeImpl',335);c3(672,399,{95:1,91:1,87:1,133:1,139:1,174:1,51:1,103:1,42:1,92:1,142:1,107:1,108:1,614:1});_.Gj=function Zad(a){return a.mg()==this};_.jg=function $ad(a){return Mad(this,a)};_.kg=function _ad(a,b){this.w=null;this.Db=b<<16|this.Db&255;this.Cb=a};_.ug=function abd(a,b,c){var d;switch(a){case 0:return !this.Ab&&(this.Ab=new zkd(gY,this,0,3)),this.Ab;case 1:return this.zb;case 2:return this.D!=null?this.D:this.B;case 3:return Pad(this);case 4:return this.Oi();case 5:return this.F;case 6:if(b)return Nad(this);return Jad(this);case 7:return !this.A&&(this.A=new Bwd(AY,this,7)),this.A;}return EMc(this,a-Lbd(this.Rg()),Gbd((d=kA(VNc(this,16),24),!d?this.Rg():d),a),b,c)};_.Bg=function bbd(a,b,c){var d,e,f;switch(b){case 0:return !this.Ab&&(this.Ab=new zkd(gY,this,0,3)),p_c(this.Ab,a,c);case 6:!!this.Cb&&(c=(e=this.Db>>16,e>=0?Mad(this,c):this.Cb.Cg(this,-1-e,null,c)));return CMc(this,a,6,c);}return f=kA(Gbd((d=kA(VNc(this,16),24),!d?this.Rg():d),b),61),f.aj().dj(this,TNc(this),b-Lbd(this.Rg()),a,c)};_.Dg=function cbd(a,b,c){var d,e;switch(b){case 0:return !this.Ab&&(this.Ab=new zkd(gY,this,0,3)),q_c(this.Ab,a,c);case 6:return CMc(this,null,6,c);case 7:return !this.A&&(this.A=new Bwd(AY,this,7)),q_c(this.A,a,c);}return e=kA(Gbd((d=kA(VNc(this,16),24),!d?this.Rg():d),b),61),e.aj().ej(this,TNc(this),b-Lbd(this.Rg()),a,c)};_.Fg=function dbd(a){var b;switch(a){case 0:return !!this.Ab&&this.Ab.i!=0;case 1:return this.zb!=null;case 2:return this.D!=null&&this.D==this.F;case 3:return !!Pad(this);case 4:return this.Oi()!=null;case 5:return this.F!=null&&this.F!=this.D&&this.F!=this.B;case 6:return !!Jad(this);case 7:return !!this.A&&this.A.i!=0;}return FMc(this,a-Lbd(this.Rg()),Gbd((b=kA(VNc(this,16),24),!b?this.Rg():b),a))};_.Mg=function ebd(a,b){var c;switch(a){case 0:!this.Ab&&(this.Ab=new zkd(gY,this,0,3));r_c(this.Ab);!this.Ab&&(this.Ab=new zkd(gY,this,0,3));gXc(this.Ab,kA(b,13));return;case 1:Xad(this,pA(b));return;case 2:Uad(this,pA(b));return;case 5:Wad(this,pA(b));return;case 7:!this.A&&(this.A=new Bwd(AY,this,7));r_c(this.A);!this.A&&(this.A=new Bwd(AY,this,7));gXc(this.A,kA(b,13));return;}GMc(this,a-Lbd(this.Rg()),Gbd((c=kA(VNc(this,16),24),!c?this.Rg():c),a),b)};_.Rg=function fbd(){return j7c(),T6c};_.Ni=function gbd(){var a;return this.G==-1&&(this.G=(a=Nad(this),a?pcd(a.bh(),this):-1)),this.G};_.Oi=function hbd(){return null};_.Pi=function ibd(){return Nad(this)};_.Hj=function jbd(){return this.v};_.Qi=function kbd(){return Pad(this)};_.Ri=function lbd(){return this.D!=null?this.D:this.B};_.Si=function mbd(){return this.F};_.Li=function nbd(a){return Rad(this,a)};_.Ij=function obd(a){this.v=a};_.Jj=function pbd(a){Sad(this,a)};_.Kj=function qbd(a){this.C=a};_.ah=function rbd(a){Xad(this,a)};_.Ib=function sbd(){return Yad(this)};_.C=null;_.D=null;_.G=-1;var cZ=k4(dTd,'EClassifierImpl',672);c3(96,672,{95:1,91:1,87:1,24:1,133:1,139:1,174:1,51:1,103:1,42:1,92:1,96:1,142:1,432:1,107:1,108:1,614:1},Sbd);_.Gj=function Tbd(a){return Obd(this,a.mg())};_.ug=function Ubd(a,b,c){var d;switch(a){case 0:return !this.Ab&&(this.Ab=new zkd(gY,this,0,3)),this.Ab;case 1:return this.zb;case 2:return this.D!=null?this.D:this.B;case 3:return Pad(this);case 4:return null;case 5:return this.F;case 6:if(b)return Nad(this);return Jad(this);case 7:return !this.A&&(this.A=new Bwd(AY,this,7)),this.A;case 8:return B3(),(this.Bb&256)!=0?true:false;case 9:return B3(),(this.Bb&512)!=0?true:false;case 10:return Kbd(this);case 11:return !this.q&&(this.q=new zkd(tY,this,11,10)),this.q;case 12:return xbd(this);case 13:return Bbd(this);case 14:return Bbd(this),this.r;case 15:return xbd(this),this.k;case 16:return ybd(this);case 17:return Abd(this);case 18:return Cbd(this);case 19:return Dbd(this);case 20:return xbd(this),this.o;case 21:return !this.s&&(this.s=new zkd(zY,this,21,17)),this.s;case 22:return Ebd(this);case 23:return zbd(this);}return EMc(this,a-Lbd((j7c(),S6c)),Gbd((d=kA(VNc(this,16),24),!d?S6c:d),a),b,c)};_.Bg=function Vbd(a,b,c){var d,e,f;switch(b){case 0:return !this.Ab&&(this.Ab=new zkd(gY,this,0,3)),p_c(this.Ab,a,c);case 6:!!this.Cb&&(c=(e=this.Db>>16,e>=0?Mad(this,c):this.Cb.Cg(this,-1-e,null,c)));return CMc(this,a,6,c);case 11:return !this.q&&(this.q=new zkd(tY,this,11,10)),p_c(this.q,a,c);case 21:return !this.s&&(this.s=new zkd(zY,this,21,17)),p_c(this.s,a,c);}return f=kA(Gbd((d=kA(VNc(this,16),24),!d?(j7c(),S6c):d),b),61),f.aj().dj(this,TNc(this),b-Lbd((j7c(),S6c)),a,c)};_.Dg=function Wbd(a,b,c){var d,e;switch(b){case 0:return !this.Ab&&(this.Ab=new zkd(gY,this,0,3)),q_c(this.Ab,a,c);case 6:return CMc(this,null,6,c);case 7:return !this.A&&(this.A=new Bwd(AY,this,7)),q_c(this.A,a,c);case 11:return !this.q&&(this.q=new zkd(tY,this,11,10)),q_c(this.q,a,c);case 21:return !this.s&&(this.s=new zkd(zY,this,21,17)),q_c(this.s,a,c);case 22:return q_c(Ebd(this),a,c);}return e=kA(Gbd((d=kA(VNc(this,16),24),!d?(j7c(),S6c):d),b),61),e.aj().ej(this,TNc(this),b-Lbd((j7c(),S6c)),a,c)};_.Fg=function Xbd(a){var b;switch(a){case 0:return !!this.Ab&&this.Ab.i!=0;case 1:return this.zb!=null;case 2:return this.D!=null&&this.D==this.F;case 3:return !!Pad(this);case 4:return false;case 5:return this.F!=null&&this.F!=this.D&&this.F!=this.B;case 6:return !!Jad(this);case 7:return !!this.A&&this.A.i!=0;case 8:return (this.Bb&256)!=0;case 9:return (this.Bb&512)!=0;case 10:return !!this.u&&Ebd(this.u.a).i!=0&&!(!!this.n&&ndd(this.n));case 11:return !!this.q&&this.q.i!=0;case 12:return xbd(this).i!=0;case 13:return Bbd(this).i!=0;case 14:return Bbd(this),this.r.i!=0;case 15:return xbd(this),this.k.i!=0;case 16:return ybd(this).i!=0;case 17:return Abd(this).i!=0;case 18:return Cbd(this).i!=0;case 19:return Dbd(this).i!=0;case 20:return xbd(this),!!this.o;case 21:return !!this.s&&this.s.i!=0;case 22:return !!this.n&&ndd(this.n);case 23:return zbd(this).i!=0;}return FMc(this,a-Lbd((j7c(),S6c)),Gbd((b=kA(VNc(this,16),24),!b?S6c:b),a))};_.Ig=function Ybd(a){var b;b=this.i==null||!!this.q&&this.q.i!=0?null:Hbd(this,a);return b?b:KQc(this,a)};_.Mg=function Zbd(a,b){var c;switch(a){case 0:!this.Ab&&(this.Ab=new zkd(gY,this,0,3));r_c(this.Ab);!this.Ab&&(this.Ab=new zkd(gY,this,0,3));gXc(this.Ab,kA(b,13));return;case 1:Xad(this,pA(b));return;case 2:Uad(this,pA(b));return;case 5:Wad(this,pA(b));return;case 7:!this.A&&(this.A=new Bwd(AY,this,7));r_c(this.A);!this.A&&(this.A=new Bwd(AY,this,7));gXc(this.A,kA(b,13));return;case 8:Pbd(this,Vpb(mA(b)));return;case 9:Qbd(this,Vpb(mA(b)));return;case 10:VZc(Kbd(this));gXc(Kbd(this),kA(b,13));return;case 11:!this.q&&(this.q=new zkd(tY,this,11,10));r_c(this.q);!this.q&&(this.q=new zkd(tY,this,11,10));gXc(this.q,kA(b,13));return;case 21:!this.s&&(this.s=new zkd(zY,this,21,17));r_c(this.s);!this.s&&(this.s=new zkd(zY,this,21,17));gXc(this.s,kA(b,13));return;case 22:r_c(Ebd(this));gXc(Ebd(this),kA(b,13));return;}GMc(this,a-Lbd((j7c(),S6c)),Gbd((c=kA(VNc(this,16),24),!c?S6c:c),a),b)};_.Rg=function $bd(){return j7c(),S6c};_.Xg=function _bd(){var a,b;xbd(this);Bbd(this);ybd(this);Abd(this);Cbd(this);Dbd(this);zbd(this);UXc(zdd(Jbd(this)));if(this.s){for(a=0,b=this.s.i;a=0;--a){WXc(this,a)}}return aYc(this)};_.zc=function Vcd(a){var b;if(this.Qj()){for(b=this.i-1;b>=0;--b){WXc(this,b)}}return bYc(this,a)};_.ij=function Wcd(){r_c(this)};_.Ch=function Xcd(a,b){return scd(this,a,b)};var w0=k4(eVd,'EcoreEList',565);c3(450,565,vVd,Ycd);_.rh=function Zcd(){return false};_.pi=function $cd(){return this.c};_.qi=function _cd(){return false};_.Rj=function bdd(){return true};_.xh=function cdd(){return true};_.zh=function ddd(a,b){return b};_.Bh=function edd(){return false};_.c=0;var g0=k4(eVd,'EObjectEList',450);c3(88,450,vVd,fdd);_.qi=function gdd(){return true};_.Pj=function hdd(){return false};_.Dj=function idd(){return true};var a0=k4(eVd,'EObjectContainmentEList',88);c3(493,88,vVd,jdd);_.th=function kdd(){this.a=true};_.ui=function ldd(){return this.a};_.ij=function mdd(){var a;r_c(this);if(PMc(this.e)){a=this.a;this.a=false;vMc(this.e,new Pid(this.e,2,this.c,a,false))}else{this.a=false}};_.a=false;var __=k4(eVd,'EObjectContainmentEList/Unsettable',493);c3(1003,493,vVd,rdd);_.yi=function vdd(a,b){return odd(this,kA(a,84),b)};_.zi=function wdd(a,b){return pdd(this,kA(a,84),b)};_.Ai=function xdd(a,b,c){return qdd(this,kA(a,84),kA(b,84),c)};_.mi=function sdd(a,b,c,d,e){switch(a){case 3:{return ncd(this,3,b,c,d,this.i>1)}case 5:{return ncd(this,5,b,c,d,this.i-kA(c,15)._b()>0)}default:{return new Oid(this.e,a,this.c,b,c,d,true)}}};_.xi=function tdd(){return true};_.ui=function udd(){return ndd(this)};_.ij=function ydd(){r_c(this)};var SY=k4(dTd,'EClassImpl/1',1003);c3(1017,1016,KUd);_.Ih=function Cdd(a){var b,c,d,e,f,g,h;c=a.Lh();if(c!=8){d=Bdd(a);if(d==0){switch(c){case 1:case 9:{h=a.Ph();if(h!=null){b=Jbd(kA(h,432));!b.c&&(b.c=new zod);mXc(b.c,a.Oh())}g=a.Nh();if(g!=null){e=kA(g,432);if((e.Bb&1)==0){b=Jbd(e);!b.c&&(b.c=new zod);fXc(b.c,kA(a.Oh(),24))}}break}case 3:{g=a.Nh();if(g!=null){e=kA(g,432);if((e.Bb&1)==0){b=Jbd(e);!b.c&&(b.c=new zod);fXc(b.c,kA(a.Oh(),24))}}break}case 5:{g=a.Nh();if(g!=null){for(f=kA(g,13).tc();f.hc();){e=kA(f.ic(),432);if((e.Bb&1)==0){b=Jbd(e);!b.c&&(b.c=new zod);fXc(b.c,kA(a.Oh(),24))}}}break}case 4:{h=a.Ph();if(h!=null){e=kA(h,432);if((e.Bb&1)==0){b=Jbd(e);!b.c&&(b.c=new zod);mXc(b.c,a.Oh())}}break}case 6:{h=a.Ph();if(h!=null){for(f=kA(h,13).tc();f.hc();){e=kA(f.ic(),432);if((e.Bb&1)==0){b=Jbd(e);!b.c&&(b.c=new zod);mXc(b.c,a.Oh())}}}break}}}this.Tj(d)}};_.Tj=function Ddd(a){Add(this,a)};_.b=63;var s$=k4(dTd,'ESuperAdapter',1017);c3(1018,1017,KUd,Fdd);_.Tj=function Gdd(a){Edd(this,a)};var NY=k4(dTd,'EClassImpl/10',1018);c3(1007,630,vVd);_.lh=function Hdd(a){return PXc(this,a)};_.mh=function Idd(a,b){QXc(this,a,b)};_.nh=function Jdd(a){RXc(this,a)};_.Dh=function Ldd(a){return TXc(this,a)};_.Ah=function Tdd(a,b){return $Xc(this,a,b)};_.xj=function Kdd(a,b){throw x2(new U6)};_.oh=function Mdd(){return new v0c(this)};_.ph=function Ndd(){return new y0c(this)};_.qh=function Odd(a){return hXc(this,a)};_.yj=function Pdd(a,b){throw x2(new U6)};_.hj=function Qdd(a){return this};_.ui=function Rdd(){return this.i!=0};_.Gc=function Sdd(a){throw x2(new U6)};_.ij=function Udd(){throw x2(new U6)};var v0=k4(eVd,'EcoreEList/UnmodifiableEList',1007);c3(301,1007,vVd,Vdd);_.Bh=function Wdd(){return false};var u0=k4(eVd,'EcoreEList/UnmodifiableEList/FastCompare',301);c3(1010,301,vVd,Zdd);_.dd=function $dd(a){var b,c,d;if(sA(a,158)){b=kA(a,158);c=b.pi();if(c!=-1){for(d=this.i;c4){if(this.Li(a)){if(this.Dj()){d=kA(a,42);c=d.ng();h=c==this.b&&(this.Pj()?d.hg(d.og(),kA(Gbd(RNc(this.b),this.pi()).jj(),24).Qi())==Wkd(kA(Gbd(RNc(this.b),this.pi()),17)).n:-1-d.og()==this.pi());if(this.Qj()&&!h&&!c&&!!d.sg()){for(e=0;e1||d==-1)}else{return false}};_.Pj=function ifd(){var a,b,c;b=Gbd(RNc(this.b),this.pi());if(sA(b,62)){a=kA(b,17);c=Wkd(a);return !!c}else{return false}};_.Qj=function jfd(){var a,b;b=Gbd(RNc(this.b),this.pi());if(sA(b,62)){a=kA(b,17);return (a.Bb&sLd)!=0}else{return false}};_.dd=function kfd(a){var b,c,d,e;d=this.ci(a);if(d>=0)return d;if(this.Rj()){for(c=0,e=this.hi();c=0;--a){Ved(this,a,this.ai(a))}}return this.ii()};_.zc=function wfd(a){var b;if(this.Qj()){for(b=this.hi()-1;b>=0;--b){Ved(this,b,this.ai(b))}}return this.ji(a)};_.ij=function xfd(){VZc(this)};_.Ch=function yfd(a,b){return Xed(this,a,b)};var N_=k4(eVd,'DelegatingEcoreEList',674);c3(1013,674,AVd,Efd);_.Vh=function Hfd(a,b){zfd(this,a,kA(b,24))};_.Wh=function Ifd(a){Afd(this,kA(a,24))};_.ai=function Ofd(a){var b,c;return b=kA(WXc(Ebd(this.a),a),84),c=b.c,sA(c,96)?kA(c,24):(j7c(),a7c)};_.fi=function Tfd(a){var b,c;return b=kA(t_c(Ebd(this.a),a),84),c=b.c,sA(c,96)?kA(c,24):(j7c(),a7c)};_.gi=function Ufd(a,b){return Cfd(this,a,kA(b,24))};_.rh=function Ffd(){return false};_.mi=function Gfd(a,b,c,d,e){return null};_.Xh=function Jfd(){return new kgd(this)};_.Yh=function Kfd(){r_c(Ebd(this.a))};_.Zh=function Lfd(a){return Bfd(this,a)};_.$h=function Mfd(a){var b,c;for(c=a.tc();c.hc();){b=c.ic();if(!Bfd(this,b)){return false}}return true};_._h=function Nfd(a){var b,c,d;if(sA(a,15)){d=kA(a,15);if(d._b()==Ebd(this.a).i){for(b=d.tc(),c=new a0c(this);b.hc();){if(yA(b.ic())!==yA($_c(c))){return false}}return true}}return false};_.bi=function Pfd(){var a,b,c,d,e;c=1;for(b=new a0c(Ebd(this.a));b.e!=b.i._b();){a=kA($_c(b),84);d=(e=a.c,sA(e,96)?kA(e,24):(j7c(),a7c));c=31*c+(!d?0:bqb(d))}return c};_.ci=function Qfd(a){var b,c,d,e;d=0;for(c=new a0c(Ebd(this.a));c.e!=c.i._b();){b=kA($_c(c),84);if(yA(a)===yA((e=b.c,sA(e,96)?kA(e,24):(j7c(),a7c)))){return d}++d}return -1};_.di=function Rfd(){return Ebd(this.a).i==0};_.ei=function Sfd(){return null};_.hi=function Vfd(){return Ebd(this.a).i};_.ii=function Wfd(){var a,b,c,d,e,f;f=Ebd(this.a).i;e=tz(NE,oJd,1,f,5,1);c=0;for(b=new a0c(Ebd(this.a));b.e!=b.i._b();){a=kA($_c(b),84);e[c++]=(d=a.c,sA(d,96)?kA(d,24):(j7c(),a7c))}return e};_.ji=function Xfd(a){var b,c,d,e,f,g,h;h=Ebd(this.a).i;if(a.lengthh&&wz(a,h,null);d=0;for(c=new a0c(Ebd(this.a));c.e!=c.i._b();){b=kA($_c(c),84);f=(g=b.c,sA(g,96)?kA(g,24):(j7c(),a7c));wz(a,d++,f)}return a};_.ki=function Yfd(){var a,b,c,d,e;e=new z6;e.a+='[';a=Ebd(this.a);for(b=0,d=Ebd(this.a).i;b>16,e>=0?Mad(this,c):this.Cb.Cg(this,-1-e,null,c)));return CMc(this,a,6,c);case 9:return !this.a&&(this.a=new zkd(mY,this,9,5)),p_c(this.a,a,c);}return f=kA(Gbd((d=kA(VNc(this,16),24),!d?(j7c(),V6c):d),b),61),f.aj().dj(this,TNc(this),b-Lbd((j7c(),V6c)),a,c)};_.Dg=function Kgd(a,b,c){var d,e;switch(b){case 0:return !this.Ab&&(this.Ab=new zkd(gY,this,0,3)),q_c(this.Ab,a,c);case 6:return CMc(this,null,6,c);case 7:return !this.A&&(this.A=new Bwd(AY,this,7)),q_c(this.A,a,c);case 9:return !this.a&&(this.a=new zkd(mY,this,9,5)),q_c(this.a,a,c);}return e=kA(Gbd((d=kA(VNc(this,16),24),!d?(j7c(),V6c):d),b),61),e.aj().ej(this,TNc(this),b-Lbd((j7c(),V6c)),a,c)};_.Fg=function Lgd(a){var b;switch(a){case 0:return !!this.Ab&&this.Ab.i!=0;case 1:return this.zb!=null;case 2:return this.D!=null&&this.D==this.F;case 3:return !!Pad(this);case 4:return !!Fgd(this);case 5:return this.F!=null&&this.F!=this.D&&this.F!=this.B;case 6:return !!Jad(this);case 7:return !!this.A&&this.A.i!=0;case 8:return (this.Bb&256)==0;case 9:return !!this.a&&this.a.i!=0;}return FMc(this,a-Lbd((j7c(),V6c)),Gbd((b=kA(VNc(this,16),24),!b?V6c:b),a))};_.Mg=function Mgd(a,b){var c;switch(a){case 0:!this.Ab&&(this.Ab=new zkd(gY,this,0,3));r_c(this.Ab);!this.Ab&&(this.Ab=new zkd(gY,this,0,3));gXc(this.Ab,kA(b,13));return;case 1:Xad(this,pA(b));return;case 2:Uad(this,pA(b));return;case 5:Wad(this,pA(b));return;case 7:!this.A&&(this.A=new Bwd(AY,this,7));r_c(this.A);!this.A&&(this.A=new Bwd(AY,this,7));gXc(this.A,kA(b,13));return;case 8:rgd(this,Vpb(mA(b)));return;case 9:!this.a&&(this.a=new zkd(mY,this,9,5));r_c(this.a);!this.a&&(this.a=new zkd(mY,this,9,5));gXc(this.a,kA(b,13));return;}GMc(this,a-Lbd((j7c(),V6c)),Gbd((c=kA(VNc(this,16),24),!c?V6c:c),a),b)};_.Rg=function Ngd(){return j7c(),V6c};_.Xg=function Ogd(){var a,b;if(this.a){for(a=0,b=this.a.i;a>16==5?kA(this.Cb,608):null;}return EMc(this,a-Lbd((j7c(),W6c)),Gbd((d=kA(VNc(this,16),24),!d?W6c:d),a),b,c)};_.Bg=function $gd(a,b,c){var d,e,f;switch(b){case 0:return !this.Ab&&(this.Ab=new zkd(gY,this,0,3)),p_c(this.Ab,a,c);case 5:!!this.Cb&&(c=(e=this.Db>>16,e>=0?Sgd(this,c):this.Cb.Cg(this,-1-e,null,c)));return CMc(this,a,5,c);}return f=kA(Gbd((d=kA(VNc(this,16),24),!d?(j7c(),W6c):d),b),61),f.aj().dj(this,TNc(this),b-Lbd((j7c(),W6c)),a,c)};_.Dg=function _gd(a,b,c){var d,e;switch(b){case 0:return !this.Ab&&(this.Ab=new zkd(gY,this,0,3)),q_c(this.Ab,a,c);case 5:return CMc(this,null,5,c);}return e=kA(Gbd((d=kA(VNc(this,16),24),!d?(j7c(),W6c):d),b),61),e.aj().ej(this,TNc(this),b-Lbd((j7c(),W6c)),a,c)};_.Fg=function ahd(a){var b;switch(a){case 0:return !!this.Ab&&this.Ab.i!=0;case 1:return this.zb!=null;case 2:return this.d!=0;case 3:return !!this.b;case 4:return this.c!=null;case 5:return !!(this.Db>>16==5?kA(this.Cb,608):null);}return FMc(this,a-Lbd((j7c(),W6c)),Gbd((b=kA(VNc(this,16),24),!b?W6c:b),a))};_.Mg=function bhd(a,b){var c;switch(a){case 0:!this.Ab&&(this.Ab=new zkd(gY,this,0,3));r_c(this.Ab);!this.Ab&&(this.Ab=new zkd(gY,this,0,3));gXc(this.Ab,kA(b,13));return;case 1:wRc(this,pA(b));return;case 2:Wgd(this,kA(b,21).a);return;case 3:Ugd(this,kA(b,1634));return;case 4:Vgd(this,pA(b));return;}GMc(this,a-Lbd((j7c(),W6c)),Gbd((c=kA(VNc(this,16),24),!c?W6c:c),a),b)};_.Rg=function chd(){return j7c(),W6c};_.Ib=function ehd(){var a;return a=this.c,a==null?this.zb:a};_.b=null;_.c=null;_.d=0;var fZ=k4(dTd,'EEnumLiteralImpl',525);var hZ=m4(dTd,'EFactoryImpl/InternalEDateTimeFormat');c3(445,1,{1699:1},hhd);var gZ=k4(dTd,'EFactoryImpl/1ClientInternalEDateTimeFormat',445);c3(217,108,{95:1,91:1,87:1,84:1,51:1,103:1,42:1,92:1,217:1,107:1,108:1},xhd);_.lg=function yhd(a,b,c){var d;c=CMc(this,a,b,c);if(!!this.e&&sA(a,158)){d=phd(this,this.e);d!=this.c&&(c=thd(this,d,c))}return c};_.ug=function zhd(a,b,c){var d;switch(a){case 0:return this.f;case 1:return !this.d&&(this.d=new fdd(pY,this,1)),this.d;case 2:if(b)return nhd(this);return this.c;case 3:return this.b;case 4:return this.e;case 5:if(b)return mhd(this);return this.a;}return EMc(this,a-Lbd((j7c(),Y6c)),Gbd((d=kA(VNc(this,16),24),!d?Y6c:d),a),b,c)};_.Dg=function Ahd(a,b,c){var d,e;switch(b){case 0:return lhd(this,null,c);case 1:return !this.d&&(this.d=new fdd(pY,this,1)),q_c(this.d,a,c);case 3:return jhd(this,null,c);}return e=kA(Gbd((d=kA(VNc(this,16),24),!d?(j7c(),Y6c):d),b),61),e.aj().ej(this,TNc(this),b-Lbd((j7c(),Y6c)),a,c)};_.Fg=function Bhd(a){var b;switch(a){case 0:return !!this.f;case 1:return !!this.d&&this.d.i!=0;case 2:return !!this.c;case 3:return !!this.b;case 4:return !!this.e;case 5:return !!this.a;}return FMc(this,a-Lbd((j7c(),Y6c)),Gbd((b=kA(VNc(this,16),24),!b?Y6c:b),a))};_.Mg=function Chd(a,b){var c;switch(a){case 0:vhd(this,kA(b,84));return;case 1:!this.d&&(this.d=new fdd(pY,this,1));r_c(this.d);!this.d&&(this.d=new fdd(pY,this,1));gXc(this.d,kA(b,13));return;case 3:shd(this,kA(b,84));return;case 4:uhd(this,kA(b,742));return;case 5:qhd(this,kA(b,133));return;}GMc(this,a-Lbd((j7c(),Y6c)),Gbd((c=kA(VNc(this,16),24),!c?Y6c:c),a),b)};_.Rg=function Dhd(){return j7c(),Y6c};_.Ib=function Ehd(){var a;a=new O6(aNc(this));a.a+=' (expression: ';whd(this,a);a.a+=')';return a.a};var ihd;var jZ=k4(dTd,'EGenericTypeImpl',217);c3(1667,1657,BVd);_.xj=function Ghd(a,b){Fhd(this,this._b(),a);return b};_.Dh=function Hhd(a){return Fq(this.Uh(),a)};_.oh=function Ihd(){return this.ph()};_.Uh=function Jhd(){return new Psd(this)};_.ph=function Khd(){return this.qh(0)};_.qh=function Lhd(a){return this.Uh().fd(a)};_.yj=function Mhd(a,b){qg(this,a,true);return b};var E_=k4(eVd,'AbstractSequentialInternalEList',1667);c3(444,1667,BVd,Rhd);_.Dh=function Shd(a){return Fq(this.Uh(),a)};_.oh=function Thd(){if(this.b==null){return iid(),iid(),hid}return this.Vj()};_.Uh=function Uhd(){return new nwd(this.a,this.b)};_.ph=function Vhd(){if(this.b==null){return iid(),iid(),hid}return this.Vj()};_.qh=function Whd(a){var b,c;if(this.b==null){if(a<0||a>1){throw x2(new q3(NUd+a+', size=0'))}return iid(),iid(),hid}c=this.Vj();for(b=0;b0){b=this.c[--this.d];if((!this.e||b.Vi()!=FV||b.pi()!=0)&&(!this.Yj()||this.b.Gg(b))){f=this.b.wg(b,this.Xj());this.f=(wyd(),kA(b,61).bj());if(this.f||b.lj()){if(this.Xj()){d=kA(f,15);this.k=d}else{d=kA(f,64);this.k=this.j=d}if(sA(this.k,49)){this.o=this.k._b();this.n=this.o}else{this.p=!this.j?this.k.fd(this.k._b()):this.j.qh(this.k._b())}if(!this.p?mid(this):nid(this,this.p)){e=!this.p?!this.j?this.k.cd(--this.n):this.j.Dh(--this.n):this.p.Ec();if(this.f){a=kA(e,75);a.nj();c=a.lc();this.i=c}else{this.i=e}this.g=-3;return true}}else if(f!=null){this.k=null;this.p=null;this.i=f;this.g=-2;return true}}}this.k=null;this.p=null;this.g=-1;return false}else{e=!this.p?!this.j?this.k.cd(--this.n):this.j.Dh(--this.n):this.p.Ec();if(this.f){a=kA(e,75);a.nj();c=a.lc();this.i=c}else{this.i=e}this.g=-3;return true}}}};_.ic=function uid(){return jid(this)};_.Dc=function vid(){return this.a};_.Ec=function wid(){var a;if(this.g<-1||this.Cc()){--this.a;this.g=0;a=this.i;this.Cc();return a}else{throw x2(new djb)}};_.Fc=function xid(){return this.a-1};_.jc=function yid(){throw x2(new U6)};_.Xj=function zid(){return false};_.Gc=function Aid(a){throw x2(new U6)};_.Yj=function Bid(){return true};_.a=0;_.d=0;_.f=false;_.g=0;_.n=0;_.o=0;var hid;var S_=k4(eVd,'EContentsEList/FeatureIteratorImpl',260);c3(631,260,CVd,Cid);_.Xj=function Did(){return true};var T_=k4(eVd,'EContentsEList/ResolvingFeatureIteratorImpl',631);c3(1020,631,CVd,Eid);_.Yj=function Fid(){return false};var lZ=k4(dTd,'ENamedElementImpl/1/1',1020);c3(1021,260,CVd,Gid);_.Yj=function Hid(){return false};var mZ=k4(dTd,'ENamedElementImpl/1/2',1021);c3(32,136,MUd,Kid,Lid,Mid,Nid,Oid,Pid,Qid,Rid,Sid,Tid,Uid,Vid,Wid,Xid,Yid,Zid,$id,_id,ajd,cjd,djd,ejd,fjd,gjd);_.oi=function hjd(){return Jid(this)};_.vi=function ijd(){var a;a=Jid(this);if(a){return a.Oi()}return null};_.Mh=function jjd(a){this.b==-1&&!!this.a&&(this.b=this.c.qg(this.a.pi(),this.a.Vi()));return this.c.hg(this.b,a)};_.Oh=function kjd(){return this.c};_.wi=function ljd(){var a;a=Jid(this);if(a){return a.Zi()}return false};_.b=-1;var pZ=k4(dTd,'ENotificationImpl',32);c3(371,268,{95:1,91:1,87:1,139:1,174:1,51:1,53:1,103:1,431:1,42:1,92:1,142:1,371:1,268:1,107:1,108:1},pjd);_.jg=function qjd(a){return mjd(this,a)};_.ug=function rjd(a,b,c){var d,e,f;switch(a){case 0:return !this.Ab&&(this.Ab=new zkd(gY,this,0,3)),this.Ab;case 1:return this.zb;case 2:return B3(),(this.Bb&256)!=0?true:false;case 3:return B3(),(this.Bb&512)!=0?true:false;case 4:return d5(this.s);case 5:return d5(this.t);case 6:return B3(),f=this.t,f>1||f==-1?true:false;case 7:return B3(),e=this.s,e>=1?true:false;case 8:if(b)return j9c(this);return this.r;case 9:return this.q;case 10:return this.Db>>16==10?kA(this.Cb,24):null;case 11:return !this.d&&(this.d=new Bwd(AY,this,11)),this.d;case 12:return !this.c&&(this.c=new zkd(vY,this,12,10)),this.c;case 13:return !this.a&&(this.a=new Djd(this,this)),this.a;case 14:return njd(this);}return EMc(this,a-Lbd((j7c(),b7c)),Gbd((d=kA(VNc(this,16),24),!d?b7c:d),a),b,c)};_.Bg=function sjd(a,b,c){var d,e,f;switch(b){case 0:return !this.Ab&&(this.Ab=new zkd(gY,this,0,3)),p_c(this.Ab,a,c);case 10:!!this.Cb&&(c=(e=this.Db>>16,e>=0?mjd(this,c):this.Cb.Cg(this,-1-e,null,c)));return CMc(this,a,10,c);case 12:return !this.c&&(this.c=new zkd(vY,this,12,10)),p_c(this.c,a,c);}return f=kA(Gbd((d=kA(VNc(this,16),24),!d?(j7c(),b7c):d),b),61),f.aj().dj(this,TNc(this),b-Lbd((j7c(),b7c)),a,c)};_.Dg=function tjd(a,b,c){var d,e;switch(b){case 0:return !this.Ab&&(this.Ab=new zkd(gY,this,0,3)),q_c(this.Ab,a,c);case 9:return i9c(this,c);case 10:return CMc(this,null,10,c);case 11:return !this.d&&(this.d=new Bwd(AY,this,11)),q_c(this.d,a,c);case 12:return !this.c&&(this.c=new zkd(vY,this,12,10)),q_c(this.c,a,c);case 14:return q_c(njd(this),a,c);}return e=kA(Gbd((d=kA(VNc(this,16),24),!d?(j7c(),b7c):d),b),61),e.aj().ej(this,TNc(this),b-Lbd((j7c(),b7c)),a,c)};_.Fg=function ujd(a){var b,c,d;switch(a){case 0:return !!this.Ab&&this.Ab.i!=0;case 1:return this.zb!=null;case 2:return (this.Bb&256)==0;case 3:return (this.Bb&512)==0;case 4:return this.s!=0;case 5:return this.t!=1;case 6:return d=this.t,d>1||d==-1;case 7:return c=this.s,c>=1;case 8:return !!this.r&&!this.q.e&&ohd(this.q).i==0;case 9:return !!this.q&&!(!!this.r&&!this.q.e&&ohd(this.q).i==0);case 10:return !!(this.Db>>16==10?kA(this.Cb,24):null);case 11:return !!this.d&&this.d.i!=0;case 12:return !!this.c&&this.c.i!=0;case 13:return !!this.a&&njd(this.a.a).i!=0&&!(!!this.b&&mkd(this.b));case 14:return !!this.b&&mkd(this.b);}return FMc(this,a-Lbd((j7c(),b7c)),Gbd((b=kA(VNc(this,16),24),!b?b7c:b),a))};_.Mg=function vjd(a,b){var c,d;switch(a){case 0:!this.Ab&&(this.Ab=new zkd(gY,this,0,3));r_c(this.Ab);!this.Ab&&(this.Ab=new zkd(gY,this,0,3));gXc(this.Ab,kA(b,13));return;case 1:wRc(this,pA(b));return;case 2:o9c(this,Vpb(mA(b)));return;case 3:p9c(this,Vpb(mA(b)));return;case 4:n9c(this,kA(b,21).a);return;case 5:q9c(this,kA(b,21).a);return;case 8:l9c(this,kA(b,133));return;case 9:d=k9c(this,kA(b,84),null);!!d&&d.Th();return;case 11:!this.d&&(this.d=new Bwd(AY,this,11));r_c(this.d);!this.d&&(this.d=new Bwd(AY,this,11));gXc(this.d,kA(b,13));return;case 12:!this.c&&(this.c=new zkd(vY,this,12,10));r_c(this.c);!this.c&&(this.c=new zkd(vY,this,12,10));gXc(this.c,kA(b,13));return;case 13:!this.a&&(this.a=new Djd(this,this));VZc(this.a);!this.a&&(this.a=new Djd(this,this));gXc(this.a,kA(b,13));return;case 14:r_c(njd(this));gXc(njd(this),kA(b,13));return;}GMc(this,a-Lbd((j7c(),b7c)),Gbd((c=kA(VNc(this,16),24),!c?b7c:c),a),b)};_.Rg=function wjd(){return j7c(),b7c};_.Xg=function xjd(){var a,b;if(this.c){for(a=0,b=this.c.i;ah&&wz(a,h,null);d=0;for(c=new a0c(njd(this.a));c.e!=c.i._b();){b=kA($_c(c),84);f=(g=b.c,g?g:(j7c(),Z6c));wz(a,d++,f)}return a};_.ki=function Xjd(){var a,b,c,d,e;e=new z6;e.a+='[';a=njd(this.a);for(b=0,d=njd(this.a).i;b1)}case 5:{return ncd(this,5,b,c,d,this.i-kA(c,15)._b()>0)}default:{return new Oid(this.e,a,this.c,b,c,d,true)}}};_.xi=function skd(){return true};_.ui=function tkd(){return mkd(this)};_.ij=function xkd(){r_c(this)};var tZ=k4(dTd,'EOperationImpl/2',1388);c3(456,1,{1631:1,456:1},ykd);var vZ=k4(dTd,'EPackageImpl/1',456);c3(18,88,vVd,zkd);_.Lj=function Akd(){return this.d};_.Mj=function Bkd(){return this.b};_.Pj=function Ckd(){return true};_.b=0;var e0=k4(eVd,'EObjectContainmentWithInverseEList',18);c3(364,18,vVd,Dkd);_.Qj=function Ekd(){return true};_.zh=function Fkd(a,b){return qcd(this,a,kA(b,51))};var b0=k4(eVd,'EObjectContainmentWithInverseEList/Resolving',364);c3(303,364,vVd,Gkd);_.th=function Hkd(){this.a.tb=null};var wZ=k4(dTd,'EPackageImpl/2',303);c3(1155,1,{},Ikd);var xZ=k4(dTd,'EPackageImpl/3',1155);c3(650,44,FLd,Lkd);_.Qb=function Mkd(a){return wA(a)?H8(this,a):!!Wgb(this.d,a)};var zZ=k4(dTd,'EPackageRegistryImpl',650);c3(468,268,{95:1,91:1,87:1,139:1,174:1,51:1,1703:1,103:1,431:1,42:1,92:1,142:1,468:1,268:1,107:1,108:1},Okd);_.jg=function Pkd(a){return Nkd(this,a)};_.ug=function Qkd(a,b,c){var d,e,f;switch(a){case 0:return !this.Ab&&(this.Ab=new zkd(gY,this,0,3)),this.Ab;case 1:return this.zb;case 2:return B3(),(this.Bb&256)!=0?true:false;case 3:return B3(),(this.Bb&512)!=0?true:false;case 4:return d5(this.s);case 5:return d5(this.t);case 6:return B3(),f=this.t,f>1||f==-1?true:false;case 7:return B3(),e=this.s,e>=1?true:false;case 8:if(b)return j9c(this);return this.r;case 9:return this.q;case 10:return this.Db>>16==10?kA(this.Cb,53):null;}return EMc(this,a-Lbd((j7c(),d7c)),Gbd((d=kA(VNc(this,16),24),!d?d7c:d),a),b,c)};_.Bg=function Rkd(a,b,c){var d,e,f;switch(b){case 0:return !this.Ab&&(this.Ab=new zkd(gY,this,0,3)),p_c(this.Ab,a,c);case 10:!!this.Cb&&(c=(e=this.Db>>16,e>=0?Nkd(this,c):this.Cb.Cg(this,-1-e,null,c)));return CMc(this,a,10,c);}return f=kA(Gbd((d=kA(VNc(this,16),24),!d?(j7c(),d7c):d),b),61),f.aj().dj(this,TNc(this),b-Lbd((j7c(),d7c)),a,c)};_.Dg=function Skd(a,b,c){var d,e;switch(b){case 0:return !this.Ab&&(this.Ab=new zkd(gY,this,0,3)),q_c(this.Ab,a,c);case 9:return i9c(this,c);case 10:return CMc(this,null,10,c);}return e=kA(Gbd((d=kA(VNc(this,16),24),!d?(j7c(),d7c):d),b),61),e.aj().ej(this,TNc(this),b-Lbd((j7c(),d7c)),a,c)};_.Fg=function Tkd(a){var b,c,d;switch(a){case 0:return !!this.Ab&&this.Ab.i!=0;case 1:return this.zb!=null;case 2:return (this.Bb&256)==0;case 3:return (this.Bb&512)==0;case 4:return this.s!=0;case 5:return this.t!=1;case 6:return d=this.t,d>1||d==-1;case 7:return c=this.s,c>=1;case 8:return !!this.r&&!this.q.e&&ohd(this.q).i==0;case 9:return !!this.q&&!(!!this.r&&!this.q.e&&ohd(this.q).i==0);case 10:return !!(this.Db>>16==10?kA(this.Cb,53):null);}return FMc(this,a-Lbd((j7c(),d7c)),Gbd((b=kA(VNc(this,16),24),!b?d7c:b),a))};_.Rg=function Ukd(){return j7c(),d7c};var AZ=k4(dTd,'EParameterImpl',468);c3(62,418,{95:1,91:1,87:1,139:1,174:1,51:1,17:1,158:1,61:1,103:1,431:1,42:1,92:1,142:1,62:1,418:1,268:1,107:1,108:1,615:1},ald);_.ug=function bld(a,b,c){var d,e,f,g;switch(a){case 0:return !this.Ab&&(this.Ab=new zkd(gY,this,0,3)),this.Ab;case 1:return this.zb;case 2:return B3(),(this.Bb&256)!=0?true:false;case 3:return B3(),(this.Bb&512)!=0?true:false;case 4:return d5(this.s);case 5:return d5(this.t);case 6:return B3(),g=this.t,g>1||g==-1?true:false;case 7:return B3(),e=this.s,e>=1?true:false;case 8:if(b)return j9c(this);return this.r;case 9:return this.q;case 10:return B3(),(this.Bb&hVd)!=0?true:false;case 11:return B3(),(this.Bb&jVd)!=0?true:false;case 12:return B3(),(this.Bb&qLd)!=0?true:false;case 13:return this.j;case 14:return H9c(this);case 15:return B3(),(this.Bb&iVd)!=0?true:false;case 16:return B3(),(this.Bb&RJd)!=0?true:false;case 17:return I9c(this);case 18:return B3(),(this.Bb&bTd)!=0?true:false;case 19:return B3(),f=Wkd(this),!!f&&(f.Bb&bTd)!=0?true:false;case 20:return B3(),(this.Bb&sLd)!=0?true:false;case 21:if(b)return Wkd(this);return this.b;case 22:if(b)return Xkd(this);return Vkd(this);case 23:return !this.a&&(this.a=new Swd(hY,this,23)),this.a;}return EMc(this,a-Lbd((j7c(),e7c)),Gbd((d=kA(VNc(this,16),24),!d?e7c:d),a),b,c)};_.Fg=function cld(a){var b,c,d,e;switch(a){case 0:return !!this.Ab&&this.Ab.i!=0;case 1:return this.zb!=null;case 2:return (this.Bb&256)==0;case 3:return (this.Bb&512)==0;case 4:return this.s!=0;case 5:return this.t!=1;case 6:return e=this.t,e>1||e==-1;case 7:return c=this.s,c>=1;case 8:return !!this.r&&!this.q.e&&ohd(this.q).i==0;case 9:return !!this.q&&!(!!this.r&&!this.q.e&&ohd(this.q).i==0);case 10:return (this.Bb&hVd)==0;case 11:return (this.Bb&jVd)!=0;case 12:return (this.Bb&qLd)!=0;case 13:return this.j!=null;case 14:return H9c(this)!=null;case 15:return (this.Bb&iVd)!=0;case 16:return (this.Bb&RJd)!=0;case 17:return !!I9c(this);case 18:return (this.Bb&bTd)!=0;case 19:return d=Wkd(this),!!d&&(d.Bb&bTd)!=0;case 20:return (this.Bb&sLd)==0;case 21:return !!this.b;case 22:return !!Vkd(this);case 23:return !!this.a&&this.a.i!=0;}return FMc(this,a-Lbd((j7c(),e7c)),Gbd((b=kA(VNc(this,16),24),!b?e7c:b),a))};_.Mg=function dld(a,b){var c,d;switch(a){case 0:!this.Ab&&(this.Ab=new zkd(gY,this,0,3));r_c(this.Ab);!this.Ab&&(this.Ab=new zkd(gY,this,0,3));gXc(this.Ab,kA(b,13));return;case 1:Q9c(this,pA(b));return;case 2:o9c(this,Vpb(mA(b)));return;case 3:p9c(this,Vpb(mA(b)));return;case 4:n9c(this,kA(b,21).a);return;case 5:q9c(this,kA(b,21).a);return;case 8:l9c(this,kA(b,133));return;case 9:d=k9c(this,kA(b,84),null);!!d&&d.Th();return;case 10:L9c(this,Vpb(mA(b)));return;case 11:T9c(this,Vpb(mA(b)));return;case 12:R9c(this,Vpb(mA(b)));return;case 13:M9c(this,pA(b));return;case 15:S9c(this,Vpb(mA(b)));return;case 16:O9c(this,Vpb(mA(b)));return;case 18:Ykd(this,Vpb(mA(b)));return;case 20:_kd(this,Vpb(mA(b)));return;case 21:$kd(this,kA(b,17));return;case 23:!this.a&&(this.a=new Swd(hY,this,23));r_c(this.a);!this.a&&(this.a=new Swd(hY,this,23));gXc(this.a,kA(b,13));return;}GMc(this,a-Lbd((j7c(),e7c)),Gbd((c=kA(VNc(this,16),24),!c?e7c:c),a),b)};_.Rg=function eld(){return j7c(),e7c};_.Xg=function fld(){Xkd(this);bud(rtd((uyd(),syd),this));j9c(this);this.Bb|=1};_.$i=function gld(){return Wkd(this)};_.Cj=function hld(){var a;return a=Wkd(this),!!a&&(a.Bb&bTd)!=0};_.Dj=function ild(){return (this.Bb&bTd)!=0};_.Ej=function jld(){return (this.Bb&sLd)!=0};_.zj=function kld(a,b){this.c=null;return m9c(this,a,b)};_.Ib=function lld(){var a;if((this.Db&64)!=0)return U9c(this);a=new B6(U9c(this));a.a+=' (containment: ';x6(a,(this.Bb&bTd)!=0);a.a+=', resolveProxies: ';x6(a,(this.Bb&sLd)!=0);a.a+=')';return a.a};var BZ=k4(dTd,'EReferenceImpl',62);c3(505,108,{95:1,38:1,91:1,87:1,134:1,51:1,103:1,42:1,92:1,505:1,107:1,108:1},rld);_.Fb=function wld(a){return this===a};_.kc=function yld(){return this.b};_.lc=function zld(){return this.c};_.Hb=function Ald(){return bqb(this)};_.kh=function Cld(a){mld(this,pA(a))};_.mc=function Dld(a){return qld(this,pA(a))};_.ug=function sld(a,b,c){var d;switch(a){case 0:return this.b;case 1:return this.c;}return EMc(this,a-Lbd((j7c(),f7c)),Gbd((d=kA(VNc(this,16),24),!d?f7c:d),a),b,c)};_.Fg=function tld(a){var b;switch(a){case 0:return this.b!=null;case 1:return this.c!=null;}return FMc(this,a-Lbd((j7c(),f7c)),Gbd((b=kA(VNc(this,16),24),!b?f7c:b),a))};_.Mg=function uld(a,b){var c;switch(a){case 0:nld(this,pA(b));return;case 1:pld(this,pA(b));return;}GMc(this,a-Lbd((j7c(),f7c)),Gbd((c=kA(VNc(this,16),24),!c?f7c:c),a),b)};_.Rg=function vld(){return j7c(),f7c};_.ih=function xld(){var a;if(this.a==-1){a=this.b;this.a=a==null?0:hqb(a)}return this.a};_.jh=function Bld(a){this.a=a};_.Ib=function Eld(){var a;if((this.Db&64)!=0)return aNc(this);a=new B6(aNc(this));a.a+=' (key: ';w6(a,this.b);a.a+=', value: ';w6(a,this.c);a.a+=')';return a.a};_.a=-1;_.b=null;_.c=null;var CZ=k4(dTd,'EStringToStringMapEntryImpl',505);var F0=m4(eVd,'FeatureMap/Entry/Internal');c3(514,1,DVd);_.$j=function Hld(a){return this._j(kA(a,42))};_._j=function Ild(a){return this.$j(a)};_.Fb=function Jld(a){var b,c;if(this===a){return true}else if(sA(a,75)){b=kA(a,75);if(b.nj()==this.c){c=this.lc();return c==null?b.lc()==null:kb(c,b.lc())}else{return false}}else{return false}};_.nj=function Kld(){return this.c};_.Hb=function Lld(){var a;a=this.lc();return ob(this.c)^(a==null?0:ob(a))};_.Ib=function Mld(){var a,b;a=this.c;b=Nad(a.Wi()).fh();a.be();return (b!=null&&b.length!=0?b+':'+a.be():a.be())+'='+this.lc()};var DZ=k4(dTd,'EStructuralFeatureImpl/BasicFeatureMapEntry',514);c3(709,514,DVd,Pld);_._j=function Qld(a){return new Pld(this.c,a)};_.lc=function Rld(){return this.a};_.ak=function Sld(a,b,c){return Nld(this,a,this.a,b,c)};_.bk=function Tld(a,b,c){return Old(this,a,this.a,b,c)};var EZ=k4(dTd,'EStructuralFeatureImpl/ContainmentUpdatingFeatureMapEntry',709);c3(1363,1,{},Uld);_.cj=function Vld(a,b,c,d,e){var f;f=kA(IMc(a,this.b),237);return f.yk(this.a).hj(d)};_.dj=function Wld(a,b,c,d,e){var f;f=kA(IMc(a,this.b),237);return f.pk(this.a,d,e)};_.ej=function Xld(a,b,c,d,e){var f;f=kA(IMc(a,this.b),237);return f.qk(this.a,d,e)};_.fj=function Yld(a,b,c){var d;d=kA(IMc(a,this.b),237);return d.yk(this.a).ui()};_.gj=function Zld(a,b,c,d){var e;e=kA(IMc(a,this.b),237);e.yk(this.a).Gc(d)};var FZ=k4(dTd,'EStructuralFeatureImpl/InternalSettingDelegateFeatureMapDelegator',1363);c3(82,1,{},_ld,amd,bmd,cmd);_.cj=function dmd(a,b,c,d,e){var f;f=b.Tg(c);f==null&&b.Ug(c,f=$ld(this,a));if(!e){switch(this.e){case 50:case 41:return kA(f,533).Hi();case 40:return kA(f,237).vk();}}return f};_.dj=function emd(a,b,c,d,e){var f,g;g=b.Tg(c);g==null&&b.Ug(c,g=$ld(this,a));f=kA(g,64).xj(d,e);return f};_.ej=function fmd(a,b,c,d,e){var f;f=b.Tg(c);f!=null&&(e=kA(f,64).yj(d,e));return e};_.fj=function gmd(a,b,c){var d;d=b.Tg(c);return d!=null&&kA(d,81).ui()};_.gj=function hmd(a,b,c,d){var e;e=kA(b.Tg(c),81);!e&&b.Ug(c,e=$ld(this,a));e.Gc(d)};_.b=0;_.e=0;var GZ=k4(dTd,'EStructuralFeatureImpl/InternalSettingDelegateMany',82);c3(461,1,{});_.dj=function lmd(a,b,c,d,e){throw x2(new U6)};_.ej=function mmd(a,b,c,d,e){throw x2(new U6)};var imd;var m$=k4(dTd,'EStructuralFeatureImpl/InternalSettingDelegateSingle',461);c3(702,461,{},nmd);_.cj=function omd(a,b,c,d,e){return jNc(a,a.yg(),a.og())==this.b?this.Ej()&&d?DMc(a):a.yg():null};_.dj=function pmd(a,b,c,d,e){var f,g;!!a.yg()&&(e=(f=a.og(),f>=0?a.jg(e):a.yg().Cg(a,-1-f,null,e)));g=Mbd(a.mg(),this.e);return a.lg(d,g,e)};_.ej=function qmd(a,b,c,d,e){var f;f=Mbd(a.mg(),this.e);return a.lg(null,f,e)};_.fj=function rmd(a,b,c){var d;d=Mbd(a.mg(),this.e);return !!a.yg()&&a.og()==d};_.gj=function smd(a,b,c,d){var e,f,g,h,i;if(d!=null&&!Rad(this.a,d)){throw x2(new A4(EVd+(sA(d,51)?Rbd(kA(d,51).mg()):g4(mb(d)))+FVd+this.a+"'"))}e=a.yg();g=Mbd(a.mg(),this.e);if(yA(d)!==yA(e)||a.og()!=g&&d!=null){if(eyd(a,kA(d,51)))throw x2(new O4(fTd+a.Ib()));i=null;!!e&&(i=(f=a.og(),f>=0?a.jg(null):a.yg().Cg(a,-1-f,null,null)));h=kA(d,42);!!h&&(i=h.Ag(a,Mbd(h.mg(),this.b),null,i));i=a.lg(h,g,i);!!i&&i.Th()}else{a.eg()&&a.fg()&&vMc(a,new Mid(a,1,g,d,d))}};_.Ej=function tmd(){return false};var IZ=k4(dTd,'EStructuralFeatureImpl/InternalSettingDelegateSingleContainer',702);c3(1364,702,{},umd);_.Ej=function vmd(){return true};var HZ=k4(dTd,'EStructuralFeatureImpl/InternalSettingDelegateSingleContainerResolving',1364);c3(512,461,{});_.cj=function ymd(a,b,c,d,e){var f;return f=b.Tg(c),f==null?this.b:yA(f)===yA(imd)?null:f};_.fj=function zmd(a,b,c){var d;d=b.Tg(c);return d!=null&&(yA(d)===yA(imd)||!kb(d,this.b))};_.gj=function Amd(a,b,c,d){var e,f;if(a.eg()&&a.fg()){e=(f=b.Tg(c),f==null?this.b:yA(f)===yA(imd)?null:f);if(d==null){if(this.c!=null){b.Ug(c,null);d=this.b}else this.b!=null?b.Ug(c,imd):b.Ug(c,null)}else{this.ck(d);b.Ug(c,d)}vMc(a,this.d.dk(a,1,this.e,e,d))}else{if(d==null){this.c!=null?b.Ug(c,null):this.b!=null?b.Ug(c,imd):b.Ug(c,null)}else{this.ck(d);b.Ug(c,d)}}};_.ck=function Bmd(a){throw x2(new z4)};var XZ=k4(dTd,'EStructuralFeatureImpl/InternalSettingDelegateSingleData',512);c3(GVd,1,{},Mmd);_.dk=function Nmd(a,b,c,d,e){return new ajd(a,b,c,d,e)};_.ek=function Omd(a,b,c,d,e,f){return new cjd(a,b,c,d,e,f)};var Cmd,Dmd,Emd,Fmd,Gmd,Hmd,Imd,Jmd,Kmd;var RZ=k4(dTd,'EStructuralFeatureImpl/InternalSettingDelegateSingleData/NotificationCreator',GVd);c3(1379,GVd,{},Pmd);_.dk=function Qmd(a,b,c,d,e){return new fjd(a,b,c,Vpb(mA(d)),Vpb(mA(e)))};_.ek=function Rmd(a,b,c,d,e,f){return new gjd(a,b,c,Vpb(mA(d)),Vpb(mA(e)),f)};var JZ=k4(dTd,'EStructuralFeatureImpl/InternalSettingDelegateSingleData/NotificationCreator/1',1379);c3(1380,GVd,{},Smd);_.dk=function Tmd(a,b,c,d,e){return new Qid(a,b,c,kA(d,192).a,kA(e,192).a)};_.ek=function Umd(a,b,c,d,e,f){return new Rid(a,b,c,kA(d,192).a,kA(e,192).a,f)};var KZ=k4(dTd,'EStructuralFeatureImpl/InternalSettingDelegateSingleData/NotificationCreator/2',1380);c3(1381,GVd,{},Vmd);_.dk=function Wmd(a,b,c,d,e){return new Sid(a,b,c,kA(d,159).a,kA(e,159).a)};_.ek=function Xmd(a,b,c,d,e,f){return new Tid(a,b,c,kA(d,159).a,kA(e,159).a,f)};var LZ=k4(dTd,'EStructuralFeatureImpl/InternalSettingDelegateSingleData/NotificationCreator/3',1381);c3(1382,GVd,{},Ymd);_.dk=function Zmd(a,b,c,d,e){return new Uid(a,b,c,Vpb(nA(d)),Vpb(nA(e)))};_.ek=function $md(a,b,c,d,e,f){return new Vid(a,b,c,Vpb(nA(d)),Vpb(nA(e)),f)};var MZ=k4(dTd,'EStructuralFeatureImpl/InternalSettingDelegateSingleData/NotificationCreator/4',1382);c3(1383,GVd,{},_md);_.dk=function and(a,b,c,d,e){return new Wid(a,b,c,kA(d,126).a,kA(e,126).a)};_.ek=function bnd(a,b,c,d,e,f){return new Xid(a,b,c,kA(d,126).a,kA(e,126).a,f)};var NZ=k4(dTd,'EStructuralFeatureImpl/InternalSettingDelegateSingleData/NotificationCreator/5',1383);c3(1384,GVd,{},cnd);_.dk=function dnd(a,b,c,d,e){return new Yid(a,b,c,kA(d,21).a,kA(e,21).a)};_.ek=function end(a,b,c,d,e,f){return new Zid(a,b,c,kA(d,21).a,kA(e,21).a,f)};var OZ=k4(dTd,'EStructuralFeatureImpl/InternalSettingDelegateSingleData/NotificationCreator/6',1384);c3(1385,GVd,{},fnd);_.dk=function gnd(a,b,c,d,e){return new $id(a,b,c,kA(d,149).a,kA(e,149).a)};_.ek=function hnd(a,b,c,d,e,f){return new _id(a,b,c,kA(d,149).a,kA(e,149).a,f)};var PZ=k4(dTd,'EStructuralFeatureImpl/InternalSettingDelegateSingleData/NotificationCreator/7',1385);c3(1386,GVd,{},ind);_.dk=function jnd(a,b,c,d,e){return new djd(a,b,c,kA(d,168).a,kA(e,168).a)};_.ek=function knd(a,b,c,d,e,f){return new ejd(a,b,c,kA(d,168).a,kA(e,168).a,f)};var QZ=k4(dTd,'EStructuralFeatureImpl/InternalSettingDelegateSingleData/NotificationCreator/8',1386);c3(1366,512,{},lnd);_.ck=function mnd(a){if(!this.a.Li(a)){throw x2(new A4(EVd+mb(a)+FVd+this.a+"'"))}};var SZ=k4(dTd,'EStructuralFeatureImpl/InternalSettingDelegateSingleDataDynamic',1366);c3(1367,512,{},nnd);_.ck=function ond(a){};var TZ=k4(dTd,'EStructuralFeatureImpl/InternalSettingDelegateSingleDataStatic',1367);c3(703,512,{});_.fj=function pnd(a,b,c){var d;d=b.Tg(c);return d!=null};_.gj=function qnd(a,b,c,d){var e,f;if(a.eg()&&a.fg()){e=true;f=b.Tg(c);if(f==null){e=false;f=this.b}else yA(f)===yA(imd)&&(f=null);if(d==null){if(this.c!=null){b.Ug(c,null);d=this.b}else{b.Ug(c,imd)}}else{this.ck(d);b.Ug(c,d)}vMc(a,this.d.ek(a,1,this.e,f,d,!e))}else{if(d==null){this.c!=null?b.Ug(c,null):b.Ug(c,imd)}else{this.ck(d);b.Ug(c,d)}}};var WZ=k4(dTd,'EStructuralFeatureImpl/InternalSettingDelegateSingleDataUnsettable',703);c3(1368,703,{},rnd);_.ck=function snd(a){if(!this.a.Li(a)){throw x2(new A4(EVd+mb(a)+FVd+this.a+"'"))}};var UZ=k4(dTd,'EStructuralFeatureImpl/InternalSettingDelegateSingleDataUnsettableDynamic',1368);c3(1369,703,{},tnd);_.ck=function und(a){};var VZ=k4(dTd,'EStructuralFeatureImpl/InternalSettingDelegateSingleDataUnsettableStatic',1369);c3(370,461,{},vnd);_.cj=function xnd(a,b,c,d,e){var f,g,h,i,j;j=b.Tg(c);if(this.Zi()&&yA(j)===yA(imd)){return null}else if(this.Ej()&&d&&j!=null){h=kA(j,42);if(h.Eg()){i=XMc(a,h);if(h!=i){if(!Rad(this.a,i)){throw x2(new A4(EVd+mb(i)+FVd+this.a+"'"))}b.Ug(c,j=i);if(this.Dj()){f=kA(i,42);g=h.Cg(a,!this.b?-1-Mbd(a.mg(),this.e):Mbd(h.mg(),this.b),null,null);!f.yg()&&(g=f.Ag(a,!this.b?-1-Mbd(a.mg(),this.e):Mbd(f.mg(),this.b),null,g));!!g&&g.Th()}a.eg()&&a.fg()&&vMc(a,new ajd(a,9,this.e,h,i))}}return j}else{return j}};_.dj=function ynd(a,b,c,d,e){var f,g;g=b.Tg(c);yA(g)===yA(imd)&&(g=null);b.Ug(c,d);if(this.qi()){if(yA(g)!==yA(d)&&g!=null){f=kA(g,42);e=f.Cg(a,Mbd(f.mg(),this.b),null,e)}}else this.Dj()&&g!=null&&(e=kA(g,42).Cg(a,-1-Mbd(a.mg(),this.e),null,e));if(a.eg()&&a.fg()){!e&&(e=new f_c(4));e.Sh(new ajd(a,1,this.e,g,d))}return e};_.ej=function znd(a,b,c,d,e){var f;f=b.Tg(c);yA(f)===yA(imd)&&(f=null);b.Vg(c);if(a.eg()&&a.fg()){!e&&(e=new f_c(4));this.Zi()?e.Sh(new ajd(a,2,this.e,f,null)):e.Sh(new ajd(a,1,this.e,f,null))}return e};_.fj=function And(a,b,c){var d;d=b.Tg(c);return d!=null};_.gj=function Bnd(a,b,c,d){var e,f,g,h,i;if(d!=null&&!Rad(this.a,d)){throw x2(new A4(EVd+(sA(d,51)?Rbd(kA(d,51).mg()):g4(mb(d)))+FVd+this.a+"'"))}i=b.Tg(c);h=i!=null;this.Zi()&&yA(i)===yA(imd)&&(i=null);g=null;if(this.qi()){if(yA(i)!==yA(d)){if(i!=null){e=kA(i,42);g=e.Cg(a,Mbd(e.mg(),this.b),null,null)}if(d!=null){e=kA(d,42);g=e.Ag(a,Mbd(e.mg(),this.b),null,g)}}}else if(this.Dj()){if(yA(i)!==yA(d)){i!=null&&(g=kA(i,42).Cg(a,-1-Mbd(a.mg(),this.e),null,null));d!=null&&(g=kA(d,42).Ag(a,-1-Mbd(a.mg(),this.e),null,g))}}d==null&&this.Zi()?b.Ug(c,imd):b.Ug(c,d);if(a.eg()&&a.fg()){f=new cjd(a,1,this.e,i,d,this.Zi()&&!h);if(!g){vMc(a,f)}else{g.Sh(f);g.Th()}}else !!g&&g.Th()};_.qi=function Cnd(){return false};_.Dj=function Dnd(){return false};_.Ej=function End(){return false};_.Zi=function Fnd(){return false};var l$=k4(dTd,'EStructuralFeatureImpl/InternalSettingDelegateSingleEObject',370);c3(513,370,{},Gnd);_.Dj=function Hnd(){return true};var d$=k4(dTd,'EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectContainment',513);c3(1372,513,{},Ind);_.Ej=function Jnd(){return true};var YZ=k4(dTd,'EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectContainmentResolving',1372);c3(705,513,{},Knd);_.Zi=function Lnd(){return true};var $Z=k4(dTd,'EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectContainmentUnsettable',705);c3(1374,705,{},Mnd);_.Ej=function Nnd(){return true};var ZZ=k4(dTd,'EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectContainmentUnsettableResolving',1374);c3(585,513,{},Ond);_.qi=function Pnd(){return true};var c$=k4(dTd,'EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectContainmentWithInverse',585);c3(1373,585,{},Qnd);_.Ej=function Rnd(){return true};var _Z=k4(dTd,'EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectContainmentWithInverseResolving',1373);c3(706,585,{},Snd);_.Zi=function Tnd(){return true};var b$=k4(dTd,'EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectContainmentWithInverseUnsettable',706);c3(1375,706,{},Und);_.Ej=function Vnd(){return true};var a$=k4(dTd,'EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectContainmentWithInverseUnsettableResolving',1375);c3(586,370,{},Wnd);_.Ej=function Xnd(){return true};var h$=k4(dTd,'EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectResolving',586);c3(1376,586,{},Ynd);_.Zi=function Znd(){return true};var e$=k4(dTd,'EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectResolvingUnsettable',1376);c3(707,586,{},$nd);_.qi=function _nd(){return true};var g$=k4(dTd,'EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectResolvingWithInverse',707);c3(1377,707,{},aod);_.Zi=function bod(){return true};var f$=k4(dTd,'EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectResolvingWithInverseUnsettable',1377);c3(1370,370,{},cod);_.Zi=function dod(){return true};var i$=k4(dTd,'EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectUnsettable',1370);c3(704,370,{},eod);_.qi=function fod(){return true};var k$=k4(dTd,'EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectWithInverse',704);c3(1371,704,{},god);_.Zi=function hod(){return true};var j$=k4(dTd,'EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectWithInverseUnsettable',1371);c3(708,514,DVd,kod);_._j=function lod(a){return new kod(this.a,this.c,a)};_.lc=function mod(){return this.b};_.ak=function nod(a,b,c){return iod(this,a,this.b,c)};_.bk=function ood(a,b,c){return jod(this,a,this.b,c)};var n$=k4(dTd,'EStructuralFeatureImpl/InverseUpdatingFeatureMapEntry',708);c3(1378,514,DVd,pod);_.$j=function qod(a){return new uod((qAd(),pAd),this.b.Zg(this.a,a))};_.lc=function rod(){return null};_.ak=function sod(a,b,c){return c};_.bk=function tod(a,b,c){return c};var o$=k4(dTd,'EStructuralFeatureImpl/SimpleContentFeatureMapEntry',1378);c3(587,514,DVd,uod);_.$j=function vod(a){return new uod(this.c,a)};_.lc=function wod(){return this.a};_.ak=function xod(a,b,c){return c};_.bk=function yod(a,b,c){return c};var p$=k4(dTd,'EStructuralFeatureImpl/SimpleFeatureMapEntry',587);c3(361,451,VTd,zod);_.Fh=function Aod(a){return tz(iY,oJd,24,a,0,1)};_.Bh=function Bod(){return false};var r$=k4(dTd,'ESuperAdapter/1',361);c3(411,399,{95:1,91:1,87:1,139:1,174:1,51:1,103:1,742:1,42:1,92:1,142:1,411:1,107:1,108:1},Dod);_.ug=function Eod(a,b,c){var d;switch(a){case 0:return !this.Ab&&(this.Ab=new zkd(gY,this,0,3)),this.Ab;case 1:return this.zb;case 2:return !this.a&&(this.a=new Lod(this,pY,this)),this.a;}return EMc(this,a-Lbd((j7c(),i7c)),Gbd((d=kA(VNc(this,16),24),!d?i7c:d),a),b,c)};_.Dg=function Fod(a,b,c){var d,e;switch(b){case 0:return !this.Ab&&(this.Ab=new zkd(gY,this,0,3)),q_c(this.Ab,a,c);case 2:return !this.a&&(this.a=new Lod(this,pY,this)),q_c(this.a,a,c);}return e=kA(Gbd((d=kA(VNc(this,16),24),!d?(j7c(),i7c):d),b),61),e.aj().ej(this,TNc(this),b-Lbd((j7c(),i7c)),a,c)};_.Fg=function God(a){var b;switch(a){case 0:return !!this.Ab&&this.Ab.i!=0;case 1:return this.zb!=null;case 2:return !!this.a&&this.a.i!=0;}return FMc(this,a-Lbd((j7c(),i7c)),Gbd((b=kA(VNc(this,16),24),!b?i7c:b),a))};_.Mg=function Hod(a,b){var c;switch(a){case 0:!this.Ab&&(this.Ab=new zkd(gY,this,0,3));r_c(this.Ab);!this.Ab&&(this.Ab=new zkd(gY,this,0,3));gXc(this.Ab,kA(b,13));return;case 1:wRc(this,pA(b));return;case 2:!this.a&&(this.a=new Lod(this,pY,this));r_c(this.a);!this.a&&(this.a=new Lod(this,pY,this));gXc(this.a,kA(b,13));return;}GMc(this,a-Lbd((j7c(),i7c)),Gbd((c=kA(VNc(this,16),24),!c?i7c:c),a),b)};_.Rg=function Iod(){return j7c(),i7c};var x$=k4(dTd,'ETypeParameterImpl',411);c3(457,88,vVd,Lod);_.ri=function Mod(a,b){return Jod(this,kA(a,84),b)};_.si=function Nod(a,b){return Kod(this,kA(a,84),b)};var t$=k4(dTd,'ETypeParameterImpl/1',457);c3(579,44,FLd,Ood);_.Xb=function Pod(){return new Sod(this)};var w$=k4(dTd,'ETypeParameterImpl/2',579);c3(508,IJd,JJd,Sod);_.nc=function Tod(a){return Qod(this,kA(a,84))};_.oc=function Uod(a){var b,c,d;d=false;for(c=a.tc();c.hc();){b=kA(c.ic(),84);I8(this.a,b,'')==null&&(d=true)}return d};_.Pb=function Vod(){L8(this.a)};_.pc=function Wod(a){return D8(this.a,a)};_.tc=function Xod(){var a;return a=new e9((new X8(this.a)).a),new $od(a)};_.vc=function Yod(a){return Rod(this,a)};_._b=function Zod(){return M8(this.a)};var v$=k4(dTd,'ETypeParameterImpl/2/1',508);c3(509,1,wJd,$od);_.gc=function _od(a){Bhb(this,a)};_.ic=function bpd(){return kA(c9(this.a).kc(),84)};_.hc=function apd(){return this.a.b};_.jc=function cpd(){d9(this.a)};var u$=k4(dTd,'ETypeParameterImpl/2/1/1',509);c3(1169,44,FLd,dpd);_.Qb=function epd(a){return wA(a)?H8(this,a):!!Wgb(this.d,a)};_.Vb=function fpd(a){var b,c;b=wA(a)?G8(this,a):Of(Wgb(this.d,a));if(sA(b,743)){c=kA(b,743);b=c.mj();I8(this,kA(a,207),b);return b}else return b!=null?b:a==null?(Zwd(),Ywd):null};var z$=k4(dTd,'EValidatorRegistryImpl',1169);c3(1362,638,{95:1,91:1,87:1,430:1,139:1,51:1,103:1,1635:1,42:1,92:1,142:1,107:1,108:1},npd);_.Zg=function opd(a,b){switch(a.Ni()){case 21:case 22:case 23:case 24:case 26:case 31:case 32:case 37:case 38:case 39:case 40:case 43:case 44:case 48:case 49:case 20:return b==null?null:f3(b);case 25:return hpd(b);case 27:return ipd(b);case 28:return jpd(b);case 29:return b==null?null:fhd(XQc[0],kA(b,181));case 41:return b==null?'':f4(kA(b,274));case 42:return f3(b);case 50:return pA(b);default:throw x2(new O4(gTd+a.be()+hTd));}};_.$g=function ppd(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q;switch(a.G==-1&&(a.G=(m=Nad(a),m?pcd(m.bh(),a):-1)),a.G){case 0:return c=new zad,c;case 1:return b=new H8c,b;case 2:return d=new Sbd,d;case 4:return e=new sgd,e;case 5:return f=new Hgd,f;case 6:return g=new Xgd,g;case 7:return h=new gRc,h;case 10:return j=new F7c,j;case 11:return k=new pjd,k;case 12:return l=new kSc,l;case 13:return n=new Okd,n;case 14:return o=new ald,o;case 17:return p=new rld,p;case 18:return i=new xhd,i;case 19:return q=new Dod,q;default:throw x2(new O4(kTd+a.zb+hTd));}};_._g=function qpd(a,b){switch(a.Ni()){case 20:return b==null?null:new k7(b);case 21:return b==null?null:new P7(b);case 23:case 22:return b==null?null:gpd(b);case 26:case 24:return b==null?null:R3(H3(b,-128,127)<<24>>24);case 25:return dRc(b);case 27:return kpd(b);case 28:return lpd(b);case 29:return mpd(b);case 32:case 31:return b==null?null:G3(b);case 38:case 37:return b==null?null:new G4(b);case 40:case 39:return b==null?null:d5(H3(b,oKd,jJd));case 41:return null;case 42:return b==null?null:null;case 44:case 43:return b==null?null:r5(I3(b));case 49:case 48:return b==null?null:Q5(H3(b,IVd,32767)<<16>>16);case 50:return b;default:throw x2(new O4(gTd+a.be()+hTd));}};var A$=k4(dTd,'EcoreFactoryImpl',1362);c3(504,248,{95:1,91:1,87:1,139:1,174:1,51:1,207:1,103:1,1633:1,42:1,92:1,142:1,248:1,504:1,107:1,108:1,613:1},Bpd);_.gb=false;_.hb=false;var spd,tpd=false;var r_=k4(dTd,'EcorePackageImpl',504);c3(1111,1,{743:1},Fpd);_.mj=function Gpd(){return oyd(),nyd};var L$=k4(dTd,'EcorePackageImpl/1',1111);c3(1120,1,VVd,Hpd);_.Li=function Ipd(a){return sA(a,139)};_.Mi=function Jpd(a){return tz(qY,oJd,139,a,0,1)};var B$=k4(dTd,'EcorePackageImpl/10',1120);c3(1121,1,VVd,Kpd);_.Li=function Lpd(a){return sA(a,174)};_.Mi=function Mpd(a){return tz(rY,oJd,174,a,0,1)};var C$=k4(dTd,'EcorePackageImpl/11',1121);c3(1122,1,VVd,Npd);_.Li=function Opd(a){return sA(a,51)};_.Mi=function Ppd(a){return tz(sY,oJd,51,a,0,1)};var D$=k4(dTd,'EcorePackageImpl/12',1122);c3(1123,1,VVd,Qpd);_.Li=function Rpd(a){return sA(a,371)};_.Mi=function Spd(a){return tz(tY,tVd,53,a,0,1)};var E$=k4(dTd,'EcorePackageImpl/13',1123);c3(1124,1,VVd,Tpd);_.Li=function Upd(a){return sA(a,207)};_.Mi=function Vpd(a){return tz(uY,oJd,207,a,0,1)};var F$=k4(dTd,'EcorePackageImpl/14',1124);c3(1125,1,VVd,Wpd);_.Li=function Xpd(a){return sA(a,468)};_.Mi=function Ypd(a){return tz(vY,oJd,1703,a,0,1)};var G$=k4(dTd,'EcorePackageImpl/15',1125);c3(1126,1,VVd,Zpd);_.Li=function $pd(a){return sA(a,62)};_.Mi=function _pd(a){return tz(wY,sVd,17,a,0,1)};var H$=k4(dTd,'EcorePackageImpl/16',1126);c3(1127,1,VVd,aqd);_.Li=function bqd(a){return sA(a,158)};_.Mi=function cqd(a){return tz(zY,sVd,158,a,0,1)};var I$=k4(dTd,'EcorePackageImpl/17',1127);c3(1128,1,VVd,dqd);_.Li=function eqd(a){return sA(a,431)};_.Mi=function fqd(a){return tz(BY,oJd,431,a,0,1)};var J$=k4(dTd,'EcorePackageImpl/18',1128);c3(1129,1,VVd,gqd);_.Li=function hqd(a){return sA(a,505)};_.Mi=function iqd(a){return tz(CZ,SUd,505,a,0,1)};var K$=k4(dTd,'EcorePackageImpl/19',1129);c3(1112,1,VVd,jqd);_.Li=function kqd(a){return sA(a,335)};_.Mi=function lqd(a){return tz(hY,sVd,29,a,0,1)};var W$=k4(dTd,'EcorePackageImpl/2',1112);c3(1130,1,VVd,mqd);_.Li=function nqd(a){return sA(a,217)};_.Mi=function oqd(a){return tz(pY,zVd,84,a,0,1)};var M$=k4(dTd,'EcorePackageImpl/20',1130);c3(1131,1,VVd,pqd);_.Li=function qqd(a){return sA(a,411)};_.Mi=function rqd(a){return tz(AY,oJd,742,a,0,1)};var N$=k4(dTd,'EcorePackageImpl/21',1131);c3(1132,1,VVd,sqd);_.Li=function tqd(a){return tA(a)};_.Mi=function uqd(a){return tz(tE,cKd,434,a,8,1)};var O$=k4(dTd,'EcorePackageImpl/22',1132);c3(1133,1,VVd,vqd);_.Li=function wqd(a){return sA(a,173)};_.Mi=function xqd(a){return tz(BA,cKd,173,a,0,2)};var P$=k4(dTd,'EcorePackageImpl/23',1133);c3(1134,1,VVd,yqd);_.Li=function zqd(a){return sA(a,192)};_.Mi=function Aqd(a){return tz(uE,cKd,192,a,0,1)};var Q$=k4(dTd,'EcorePackageImpl/24',1134);c3(1135,1,VVd,Bqd);_.Li=function Cqd(a){return sA(a,159)};_.Mi=function Dqd(a){return tz(vE,cKd,159,a,0,1)};var R$=k4(dTd,'EcorePackageImpl/25',1135);c3(1136,1,VVd,Eqd);_.Li=function Fqd(a){return sA(a,181)};_.Mi=function Gqd(a){return tz(PF,cKd,181,a,0,1)};var S$=k4(dTd,'EcorePackageImpl/26',1136);c3(1137,1,VVd,Hqd);_.Li=function Iqd(a){return false};_.Mi=function Jqd(a){return tz(UX,oJd,1787,a,0,1)};var T$=k4(dTd,'EcorePackageImpl/27',1137);c3(1138,1,VVd,Kqd);_.Li=function Lqd(a){return uA(a)};_.Mi=function Mqd(a){return tz(yE,cKd,315,a,7,1)};var U$=k4(dTd,'EcorePackageImpl/28',1138);c3(1139,1,VVd,Nqd);_.Li=function Oqd(a){return sA(a,52)};_.Mi=function Pqd(a){return tz(ZX,ZMd,52,a,0,1)};var V$=k4(dTd,'EcorePackageImpl/29',1139);c3(1113,1,VVd,Qqd);_.Li=function Rqd(a){return sA(a,469)};_.Mi=function Sqd(a){return tz(gY,{3:1,4:1,5:1,1627:1},609,a,0,1)};var f_=k4(dTd,'EcorePackageImpl/3',1113);c3(1140,1,VVd,Tqd);_.Li=function Uqd(a){return sA(a,525)};_.Mi=function Vqd(a){return tz($X,oJd,1634,a,0,1)};var X$=k4(dTd,'EcorePackageImpl/30',1140);c3(1141,1,VVd,Wqd);_.Li=function Xqd(a){return sA(a,184)};_.Mi=function Yqd(a){return tz(Q0,ZMd,184,a,0,1)};var Y$=k4(dTd,'EcorePackageImpl/31',1141);c3(1142,1,VVd,Zqd);_.Li=function $qd(a){return sA(a,75)};_.Mi=function _qd(a){return tz(G0,WVd,75,a,0,1)};var Z$=k4(dTd,'EcorePackageImpl/32',1142);c3(1143,1,VVd,ard);_.Li=function brd(a){return sA(a,126)};_.Mi=function crd(a){return tz(CE,cKd,126,a,0,1)};var $$=k4(dTd,'EcorePackageImpl/33',1143);c3(1144,1,VVd,drd);_.Li=function erd(a){return sA(a,21)};_.Mi=function frd(a){return tz(GE,cKd,21,a,0,1)};var _$=k4(dTd,'EcorePackageImpl/34',1144);c3(1145,1,VVd,grd);_.Li=function hrd(a){return sA(a,274)};_.Mi=function ird(a){return tz(xE,oJd,274,a,0,1)};var a_=k4(dTd,'EcorePackageImpl/35',1145);c3(1146,1,VVd,jrd);_.Li=function krd(a){return sA(a,149)};_.Mi=function lrd(a){return tz(IE,cKd,149,a,0,1)};var b_=k4(dTd,'EcorePackageImpl/36',1146);c3(1147,1,VVd,mrd);_.Li=function nrd(a){return sA(a,109)};_.Mi=function ord(a){return tz(rG,oJd,109,a,0,1)};var c_=k4(dTd,'EcorePackageImpl/37',1147);c3(1148,1,VVd,prd);_.Li=function qrd(a){return sA(a,534)};_.Mi=function rrd(a){return tz(y_,oJd,534,a,0,1)};var d_=k4(dTd,'EcorePackageImpl/38',1148);c3(1149,1,VVd,srd);_.Li=function trd(a){return false};_.Mi=function urd(a){return tz(x_,oJd,1788,a,0,1)};var e_=k4(dTd,'EcorePackageImpl/39',1149);c3(1114,1,VVd,vrd);_.Li=function wrd(a){return sA(a,96)};_.Mi=function xrd(a){return tz(iY,oJd,24,a,0,1)};var l_=k4(dTd,'EcorePackageImpl/4',1114);c3(1150,1,VVd,yrd);_.Li=function zrd(a){return sA(a,168)};_.Mi=function Ard(a){return tz(PE,cKd,168,a,0,1)};var g_=k4(dTd,'EcorePackageImpl/40',1150);c3(1151,1,VVd,Brd);_.Li=function Crd(a){return wA(a)};_.Mi=function Drd(a){return tz(UE,cKd,2,a,6,1)};var h_=k4(dTd,'EcorePackageImpl/41',1151);c3(1152,1,VVd,Erd);_.Li=function Frd(a){return sA(a,532)};_.Mi=function Grd(a){return tz(bY,oJd,532,a,0,1)};var i_=k4(dTd,'EcorePackageImpl/42',1152);c3(1153,1,VVd,Hrd);_.Li=function Ird(a){return false};_.Mi=function Jrd(a){return tz(_X,cKd,1789,a,0,1)};var j_=k4(dTd,'EcorePackageImpl/43',1153);c3(1154,1,VVd,Krd);_.Li=function Lrd(a){return sA(a,38)};_.Mi=function Mrd(a){return tz(qG,oJd,38,a,0,1)};var k_=k4(dTd,'EcorePackageImpl/44',1154);c3(1115,1,VVd,Nrd);_.Li=function Ord(a){return sA(a,133)};_.Mi=function Prd(a){return tz(jY,oJd,133,a,0,1)};var m_=k4(dTd,'EcorePackageImpl/5',1115);c3(1116,1,VVd,Qrd);_.Li=function Rrd(a){return sA(a,140)};_.Mi=function Srd(a){return tz(lY,oJd,140,a,0,1)};var n_=k4(dTd,'EcorePackageImpl/6',1116);c3(1117,1,VVd,Trd);_.Li=function Urd(a){return sA(a,425)};_.Mi=function Vrd(a){return tz(nY,oJd,608,a,0,1)};var o_=k4(dTd,'EcorePackageImpl/7',1117);c3(1118,1,VVd,Wrd);_.Li=function Xrd(a){return sA(a,525)};_.Mi=function Yrd(a){return tz(mY,oJd,617,a,0,1)};var p_=k4(dTd,'EcorePackageImpl/8',1118);c3(1119,1,VVd,Zrd);_.Li=function $rd(a){return sA(a,430)};_.Mi=function _rd(a){return tz(oY,oJd,430,a,0,1)};var q_=k4(dTd,'EcorePackageImpl/9',1119);c3(915,1673,QUd,dsd);_.sh=function esd(a,b){asd(this,kA(b,380))};_.vh=function fsd(a,b){bsd(this,a,kA(b,380))};var t_=k4(dTd,'MinimalEObjectImpl/1ArrayDelegatingAdapterList',915);c3(916,136,MUd,gsd);_.Oh=function hsd(){return this.a.a};var s_=k4(dTd,'MinimalEObjectImpl/1ArrayDelegatingAdapterList/1',916);c3(955,954,{},jsd);var w_=k4('org.eclipse.emf.ecore.plugin','EcorePlugin',955);var y_=m4(XVd,'Resource');c3(719,1492,YVd);_.ik=function nsd(a){};_.jk=function osd(a){};_.fk=function psd(){return !this.a&&(this.a=new Asd(this)),this.a};_.gk=function qsd(a){var b,c,d,e,f;d=a.length;if(d>0){if(a.charCodeAt(0)==47){f=new Hbb(4);e=1;for(b=1;b0&&(a=a.substr(0,c))}}return lsd(this,a)};_.hk=function rsd(){return this.c};_.Ib=function ssd(){return f4(this.ql)+'@'+(ob(this)>>>0).toString(16)+" uri='"+this.d+"'"};_.b=false;var C_=k4(ZVd,'ResourceImpl',719);c3(1493,719,YVd,tsd);var z_=k4(ZVd,'BinaryResourceImpl',1493);c3(1048,629,WTd);_.Gh=function wsd(a){return sA(a,51)?usd(this,kA(a,51)):sA(a,534)?new a0c(kA(a,534).fk()):yA(a)===yA(this.f)?kA(a,13).tc():(Y3c(),X3c.a)};_.hc=function xsd(){return vsd(this)};_.a=false;var C0=k4(eVd,'EcoreUtil/ContentTreeIterator',1048);c3(1494,1048,WTd,ysd);_.Gh=function zsd(a){return yA(a)===yA(this.f)?kA(a,15).tc():new iyd(kA(a,51))};var A_=k4(ZVd,'ResourceImpl/5',1494);c3(595,1687,uVd,Asd);_.pc=function Bsd(a){return this.i<=4?VXc(this,a):sA(a,42)&&kA(a,42).sg()==this.a};_.sh=function Csd(a,b){a==this.i-1&&(this.a.b||(this.a.b=true,null))};_.uh=function Dsd(a,b){a==0?this.a.b||(this.a.b=true,null):iXc(this,a,b)};_.vh=function Esd(a,b){};_.wh=function Fsd(a,b,c){};_.pi=function Gsd(){return 2};_.Oh=function Hsd(){return this.a};_.qi=function Isd(){return true};_.ri=function Jsd(a,b){var c;c=kA(a,42);b=c.Pg(this.a,b);return b};_.si=function Ksd(a,b){var c;c=kA(a,42);return c.Pg(null,b)};_.ti=function Lsd(){return false};_.xh=function Msd(){return true};_.Fh=function Nsd(a){return tz(sY,oJd,51,a,0,1)};_.Bh=function Osd(){return false};var B_=k4(ZVd,'ResourceImpl/ContentsEList',595);c3(873,1657,fKd,Psd);_.fd=function Qsd(a){return this.a.qh(a)};_._b=function Rsd(){return this.a._b()};var D_=k4(eVd,'AbstractSequentialInternalEList/1',873);var qyd,ryd,syd,tyd;c3(567,1,{},ztd);var Ssd,Tsd;var J_=k4(eVd,'BasicExtendedMetaData',567);c3(1023,1,{},Dtd);_.kk=function Etd(){return null};_.lk=function Ftd(){this.a==-2&&Btd(this,Xsd(this.d,this.b));return this.a};_.mk=function Gtd(){return null};_.nk=function Htd(){return bdb(),bdb(),$cb};_.be=function Itd(){this.c==mWd&&Ctd(this,atd(this.d,this.b));return this.c};_.ok=function Jtd(){return 0};_.a=-2;_.c=mWd;var F_=k4(eVd,'BasicExtendedMetaData/EClassExtendedMetaDataImpl',1023);c3(hVd,1,{},Ptd);_.kk=function Qtd(){this.a==(Usd(),Ssd)&&Ktd(this,Wsd(this.f,this.b));return this.a};_.lk=function Rtd(){return 0};_.mk=function Std(){this.c==(Usd(),Ssd)&&Ltd(this,$sd(this.f,this.b));return this.c};_.nk=function Ttd(){!this.d&&Mtd(this,_sd(this.f,this.b));return this.d};_.be=function Utd(){this.e==mWd&&Ntd(this,atd(this.f,this.b));return this.e};_.ok=function Vtd(){this.g==-2&&Otd(this,dtd(this.f,this.b));return this.g};_.e=mWd;_.g=-2;var G_=k4(eVd,'BasicExtendedMetaData/EDataTypeExtendedMetaDataImpl',hVd);c3(1022,1,{},Ztd);_.b=false;_.c=false;var H_=k4(eVd,'BasicExtendedMetaData/EPackageExtendedMetaDataImpl',1022);c3(1025,1,{},kud);_.c=-2;_.e=mWd;_.f=mWd;var I_=k4(eVd,'BasicExtendedMetaData/EStructuralFeatureExtendedMetaDataImpl',1025);c3(529,565,vVd,lud);_.pi=function mud(){return this.c};_.Rj=function nud(){return false};_.zh=function oud(a,b){return b};_.c=0;var W_=k4(eVd,'EDataTypeEList',529);var Q0=m4(eVd,'FeatureMap');c3(90,529,{3:1,4:1,20:1,25:1,41:1,13:1,15:1,49:1,59:1,55:1,52:1,81:1,184:1,237:1,1630:1,64:1},pvd);_.bd=function qvd(a,b){pud(this,a,kA(b,75))};_.nc=function rvd(a){return sud(this,kA(a,75))};_.nh=function uvd(a){vud(this,kA(a,75))};_.ri=function Fvd(a,b){return Nud(this,kA(a,75),b)};_.si=function Gvd(a,b){return Pud(this,kA(a,75),b)};_.zh=function Jvd(a,b){return Xud(this,a,kA(b,75))};_.hd=function Lvd(a,b){return $ud(this,a,kA(b,75))};_.yi=function Pvd(a,b){return evd(this,kA(a,75),b)};_.zi=function Qvd(a,b){return gvd(this,kA(a,75),b)};_.Ai=function Rvd(a,b,c){return hvd(this,kA(a,75),kA(b,75),c)};_.Ch=function Svd(a,b){return ovd(this,a,kA(b,75))};_.oc=function svd(a){var b,c,d,e,f,g,h,i,j;i=new dYc(a._b());for(d=a.tc();d.hc();){c=kA(d.ic(),75);e=c.nj();if(zyd(this.e,e)){(!e.xh()||!Dud(this,e,c.lc())&&!VXc(i,c))&&fXc(i,c)}else{j=yyd(this.e.mg(),e);b=kA(this.g,124);f=true;for(g=0;g=0){b=a[this.c];if(this.k.Bk(b.nj())){this.j=this.f?b:b.lc();this.i=-2;return true}}this.i=-1;this.g=-1;return false};var K_=k4(eVd,'BasicFeatureMap/FeatureEIterator',377);c3(601,377,NJd,jwd);_.Xj=function kwd(){return true};var L_=k4(eVd,'BasicFeatureMap/ResolvingFeatureEIterator',601);c3(871,444,BVd,lwd);_.Uh=function mwd(){return this};var P_=k4(eVd,'EContentsEList/1',871);c3(872,444,BVd,nwd);_.Xj=function owd(){return false};var Q_=k4(eVd,'EContentsEList/2',872);c3(870,260,CVd,pwd);_.Zj=function qwd(a){};_.hc=function rwd(){return false};_.Cc=function swd(){return false};var R_=k4(eVd,'EContentsEList/FeatureIteratorImpl/1',870);c3(734,529,vVd,twd);_.th=function uwd(){this.a=true};_.ui=function vwd(){return this.a};_.ij=function wwd(){var a;r_c(this);if(PMc(this.e)){a=this.a;this.a=false;vMc(this.e,new Pid(this.e,2,this.c,a,false))}else{this.a=false}};_.a=false;var V_=k4(eVd,'EDataTypeEList/Unsettable',734);c3(1566,529,vVd,xwd);_.xh=function ywd(){return true};var Y_=k4(eVd,'EDataTypeUniqueEList',1566);c3(1567,734,vVd,zwd);_.xh=function Awd(){return true};var X_=k4(eVd,'EDataTypeUniqueEList/Unsettable',1567);c3(156,88,vVd,Bwd);_.Qj=function Cwd(){return true};_.zh=function Dwd(a,b){return qcd(this,a,kA(b,51))};var Z_=k4(eVd,'EObjectContainmentEList/Resolving',156);c3(1026,493,vVd,Ewd);_.Qj=function Fwd(){return true};_.zh=function Gwd(a,b){return qcd(this,a,kA(b,51))};var $_=k4(eVd,'EObjectContainmentEList/Unsettable/Resolving',1026);c3(679,18,vVd,Hwd);_.th=function Iwd(){this.a=true};_.ui=function Jwd(){return this.a};_.ij=function Kwd(){var a;r_c(this);if(PMc(this.e)){a=this.a;this.a=false;vMc(this.e,new Pid(this.e,2,this.c,a,false))}else{this.a=false}};_.a=false;var d0=k4(eVd,'EObjectContainmentWithInverseEList/Unsettable',679);c3(1044,679,vVd,Lwd);_.Qj=function Mwd(){return true};_.zh=function Nwd(a,b){return qcd(this,a,kA(b,51))};var c0=k4(eVd,'EObjectContainmentWithInverseEList/Unsettable/Resolving',1044);c3(675,450,vVd,Owd);_.th=function Pwd(){this.a=true};_.ui=function Qwd(){return this.a};_.ij=function Rwd(){var a;r_c(this);if(PMc(this.e)){a=this.a;this.a=false;vMc(this.e,new Pid(this.e,2,this.c,a,false))}else{this.a=false}};_.a=false;var f0=k4(eVd,'EObjectEList/Unsettable',675);c3(376,450,vVd,Swd);_.Qj=function Twd(){return true};_.zh=function Uwd(a,b){return qcd(this,a,kA(b,51))};var i0=k4(eVd,'EObjectResolvingEList',376);c3(1554,675,vVd,Vwd);_.Qj=function Wwd(){return true};_.zh=function Xwd(a,b){return qcd(this,a,kA(b,51))};var h0=k4(eVd,'EObjectResolvingEList/Unsettable',1554);c3(1495,1,{},$wd);var Ywd;var j0=k4(eVd,'EObjectValidator',1495);c3(496,450,vVd,_wd);_.Lj=function axd(){return this.d};_.Mj=function bxd(){return this.b};_.qi=function cxd(){return true};_.Pj=function dxd(){return true};_.b=0;var n0=k4(eVd,'EObjectWithInverseEList',496);c3(1047,496,vVd,exd);_.Oj=function fxd(){return true};var k0=k4(eVd,'EObjectWithInverseEList/ManyInverse',1047);c3(572,496,vVd,gxd);_.th=function hxd(){this.a=true};_.ui=function ixd(){return this.a};_.ij=function jxd(){var a;r_c(this);if(PMc(this.e)){a=this.a;this.a=false;vMc(this.e,new Pid(this.e,2,this.c,a,false))}else{this.a=false}};_.a=false;var m0=k4(eVd,'EObjectWithInverseEList/Unsettable',572);c3(1046,572,vVd,kxd);_.Oj=function lxd(){return true};var l0=k4(eVd,'EObjectWithInverseEList/Unsettable/ManyInverse',1046);c3(680,496,vVd,mxd);_.Qj=function nxd(){return true};_.zh=function oxd(a,b){return qcd(this,a,kA(b,51))};var r0=k4(eVd,'EObjectWithInverseResolvingEList',680);c3(33,680,vVd,pxd);_.Oj=function qxd(){return true};var o0=k4(eVd,'EObjectWithInverseResolvingEList/ManyInverse',33);c3(681,572,vVd,rxd);_.Qj=function sxd(){return true};_.zh=function txd(a,b){return qcd(this,a,kA(b,51))};var q0=k4(eVd,'EObjectWithInverseResolvingEList/Unsettable',681);c3(1045,681,vVd,uxd);_.Oj=function vxd(){return true};var p0=k4(eVd,'EObjectWithInverseResolvingEList/Unsettable/ManyInverse',1045);c3(1027,565,vVd);_.rh=function wxd(){return (this.b&1792)==0};_.th=function xxd(){this.b|=1};_.Nj=function yxd(){return (this.b&4)!=0};_.qi=function zxd(){return (this.b&40)!=0};_.Oj=function Axd(){return (this.b&16)!=0};_.Pj=function Bxd(){return (this.b&8)!=0};_.Qj=function Cxd(){return (this.b&jVd)!=0};_.Dj=function Dxd(){return (this.b&32)!=0};_.Rj=function Exd(){return (this.b&hVd)!=0};_.Li=function Fxd(a){return !this.d?this.nj().jj().Li(a):s5c(this.d,a)};_.ui=function Gxd(){return (this.b&2)!=0?(this.b&1)!=0:this.i!=0};_.xh=function Hxd(){return (this.b&128)!=0};_.ij=function Jxd(){var a;r_c(this);if((this.b&2)!=0){if(PMc(this.e)){a=(this.b&1)!=0;this.b&=-2;ocd(this,new Pid(this.e,2,Mbd(this.e.mg(),this.nj()),a,false))}else{this.b&=-2}}};_.Bh=function Kxd(){return (this.b&1536)==0};_.b=0;var t0=k4(eVd,'EcoreEList/Generic',1027);c3(1028,1027,vVd,Lxd);_.nj=function Mxd(){return this.a};var s0=k4(eVd,'EcoreEList/Dynamic',1028);c3(678,55,VTd,Nxd);_.Fh=function Oxd(a){return F0c(this.a.a,a)};var x0=k4(eVd,'EcoreEMap/1',678);c3(677,88,vVd,Pxd);_.sh=function Qxd(a,b){M1c(this.b,kA(b,134))};_.uh=function Rxd(a,b){L1c(this.b)};_.vh=function Sxd(a,b){N1c(this.b,kA(b,134))};_.wh=function Txd(a,b,c){N1c(this.b,kA(c,134));yA(c)===yA(b)&&kA(c,134).jh(U1c(kA(b,134).kc()));M1c(this.b,kA(b,134))};var y0=k4(eVd,'EcoreEMap/DelegateEObjectContainmentEList',677);c3(1042,143,fVd,Uxd);var A0=k4(eVd,'EcoreEMap/Unsettable',1042);c3(1043,677,vVd,Vxd);_.th=function Wxd(){this.a=true};_.ui=function Xxd(){return this.a};_.ij=function Yxd(){var a;r_c(this);if(PMc(this.e)){a=this.a;this.a=false;vMc(this.e,new Pid(this.e,2,this.c,a,false))}else{this.a=false}};_.a=false;var z0=k4(eVd,'EcoreEMap/Unsettable/UnsettableDelegateEObjectContainmentEList',1043);c3(682,1,wJd,iyd);_.gc=function jyd(a){Bhb(this,a)};_.hc=function kyd(){return hyd(this)};_.ic=function lyd(){var a;hyd(this);a=this.b;this.b=null;return a};_.jc=function myd(){this.a.jc()};var D0=k4(eVd,'EcoreUtil/ProperContentIterator',682);c3(1496,1495,{},pyd);var nyd;var E0=k4(eVd,'EcoreValidator',1496);var vyd;var P0=m4(eVd,'FeatureMapUtil/Validator');c3(1095,1,{1632:1},Ayd);_.Bk=function Byd(a){return true};var H0=k4(eVd,'FeatureMapUtil/1',1095);c3(692,1,{1632:1},Fyd);_.Bk=function Gyd(a){var b;if(this.c==a)return true;b=mA(F8(this.a,a));if(b==null){if(Eyd(this,a)){Hyd(this.a,a,(B3(),A3));return true}else{Hyd(this.a,a,(B3(),z3));return false}}else{return b==(B3(),A3)}};_.e=false;var Cyd;var K0=k4(eVd,'FeatureMapUtil/BasicValidator',692);c3(693,44,FLd,Iyd);var J0=k4(eVd,'FeatureMapUtil/BasicValidator/Cache',693);c3(455,41,{20:1,25:1,41:1,13:1,15:1,52:1,81:1,64:1},Nyd);_.bd=function Oyd(a,b){qud(this.c,this.b,a,b)};_.nc=function Pyd(a){return rud(this.c,this.b,a)};_.oc=function Qyd(a){return Jyd(this,a)};_.xj=function Ryd(a,b){return wud(this.c,this.b,a,b)};_.Dh=function Syd(a){return Iud(this.c,this.b,a,false)};_.oh=function Tyd(){return xud(this.c,this.b)};_.ph=function Uyd(){return yud(this.c,this.b)};_.qh=function Vyd(a){return zud(this.c,this.b,a)};_.yj=function Wyd(a,b){return Kyd(this,a,b)};_.Pb=function Xyd(){Lyd(this)};_.pc=function Yyd(a){return Dud(this.c,this.b,a)};_.qc=function Zyd(a){return Fud(this.c,this.b,a)};_.cd=function $yd(a){return Iud(this.c,this.b,a,true)};_.hj=function _yd(a){return this};_.dd=function azd(a){return Kud(this.c,this.b,a)};_.Wb=function bzd(){return Myd(this)};_.ui=function czd(){return !Qud(this.c,this.b)};_.tc=function dzd(){return Rud(this.c,this.b)};_.ed=function ezd(){return Tud(this.c,this.b)};_.fd=function fzd(a){return Uud(this.c,this.b,a)};_.gd=function gzd(a){return Vud(this.c,this.b,a)};_.vc=function hzd(a){return Wud(this.c,this.b,a)};_.hd=function izd(a,b){return avd(this.c,this.b,a,b)};_.Gc=function jzd(a){Cud(this.c,this.b);Jyd(this,kA(a,15))};_._b=function kzd(){return jvd(this.c,this.b)};_.yc=function lzd(){return kvd(this.c,this.b)};_.zc=function mzd(a){return mvd(this.c,this.b,a)};_.Ib=function nzd(){var a,b;b=new z6;b.a+='[';for(a=xud(this.c,this.b);Uvd(a);){w6(b,p6(Wvd(a)));Uvd(a)&&(b.a+=qJd,b)}b.a+=']';return b.a};_.ij=function ozd(){Cud(this.c,this.b)};var L0=k4(eVd,'FeatureMapUtil/FeatureEList',455);c3(575,32,MUd,qzd);_.Mh=function rzd(a){return pzd(this,a)};_.Rh=function szd(a){var b,c,d,e,f,g,h;switch(this.d){case 1:case 2:{f=a.Oh();if(yA(f)===yA(this.c)&&pzd(this,null)==a.Mh(null)){this.g=a.Nh();a.Lh()==1&&(this.d=1);return true}break}case 3:{e=a.Lh();switch(e){case 3:{f=a.Oh();if(yA(f)===yA(this.c)&&pzd(this,null)==a.Mh(null)){this.d=5;b=new dYc(2);fXc(b,this.g);fXc(b,a.Nh());this.g=b;return true}break}}break}case 5:{e=a.Lh();switch(e){case 3:{f=a.Oh();if(yA(f)===yA(this.c)&&pzd(this,null)==a.Mh(null)){c=kA(this.g,13);c.nc(a.Nh());return true}break}}break}case 4:{e=a.Lh();switch(e){case 3:{f=a.Oh();if(yA(f)===yA(this.c)&&pzd(this,null)==a.Mh(null)){this.d=1;this.g=a.Nh();return true}break}case 4:{f=a.Oh();if(yA(f)===yA(this.c)&&pzd(this,null)==a.Mh(null)){this.d=6;h=new dYc(2);fXc(h,this.n);fXc(h,a.Ph());this.n=h;g=xz(pz(FA,1),OKd,22,15,[this.o,a.Qh()]);this.g=g;return true}break}}break}case 6:{e=a.Lh();switch(e){case 4:{f=a.Oh();if(yA(f)===yA(this.c)&&pzd(this,null)==a.Mh(null)){c=kA(this.n,13);c.nc(a.Ph());g=kA(this.g,37);d=tz(FA,OKd,22,g.length+1,15,1);T6(g,0,d,0,g.length);d[g.length]=a.Qh();this.g=d;return true}break}}break}}return false};var M0=k4(eVd,'FeatureMapUtil/FeatureENotificationImpl',575);c3(501,455,{20:1,25:1,41:1,13:1,15:1,52:1,81:1,184:1,237:1,1630:1,64:1},tzd);_.pk=function uzd(a,b,c){return wud(this.c,a,b,c)};_.qk=function vzd(a,b,c){return Bud(this.c,a,b,c)};_.rk=function wzd(){return this};_.sk=function xzd(a,b){return Jud(this.c,a,b)};_.tk=function yzd(a){return kA(Iud(this.c,this.b,a,false),75).nj()};_.uk=function zzd(a){return kA(Iud(this.c,this.b,a,false),75).lc()};_.vk=function Azd(){return this.a};_.wk=function Bzd(a){return !Qud(this.c,a)};_.xk=function Czd(a,b){bvd(this.c,a,b)};_.yk=function Dzd(a){return cvd(this.c,a)};var N0=k4(eVd,'FeatureMapUtil/FeatureFeatureMap',501);c3(1094,1,{81:1},Ezd);_.hj=function Fzd(a){return Iud(this.b,this.a,-1,a)};_.ui=function Gzd(){return !Qud(this.b,this.a)};_.Gc=function Hzd(a){bvd(this.b,this.a,a)};_.ij=function Izd(){Cud(this.b,this.a)};var O0=k4(eVd,'FeatureMapUtil/FeatureValue',1094);var Jzd,Kzd,Lzd,Mzd,Nzd;var S0=m4(oWd,'AnyType');c3(603,54,rKd,Pzd);var T0=k4(oWd,'InvalidDatatypeValueException',603);var U0=m4(oWd,pWd);var V0=m4(oWd,qWd);var W0=m4(oWd,rWd);var Qzd;var Szd;var Uzd,Vzd,Wzd,Xzd,Yzd,Zzd,$zd,_zd,aAd,bAd,cAd,dAd,eAd,fAd,gAd,hAd,iAd,jAd,kAd,lAd,mAd,nAd,oAd,pAd;c3(735,463,{95:1,91:1,87:1,51:1,42:1,92:1,746:1},rAd);_.ug=function sAd(a,b,c){switch(a){case 0:if(c)return !this.c&&(this.c=new pvd(this,0)),this.c;return !this.c&&(this.c=new pvd(this,0)),this.c.b;case 1:if(c)return !this.c&&(this.c=new pvd(this,0)),kA(Sud(this.c,(qAd(),Vzd)),184);return (!this.c&&(this.c=new pvd(this,0)),kA(kA(Sud(this.c,(qAd(),Vzd)),184),237)).vk();case 2:if(c)return !this.b&&(this.b=new pvd(this,2)),this.b;return !this.b&&(this.b=new pvd(this,2)),this.b.b;}return EMc(this,a-Lbd(this.Rg()),Gbd((this.j&2)==0?this.Rg():(!this.k&&(this.k=new B7c),this.k).pj(),a),b,c)};_.Dg=function tAd(a,b,c){var d;switch(b){case 0:return !this.c&&(this.c=new pvd(this,0)),Aud(this.c,a,c);case 1:return (!this.c&&(this.c=new pvd(this,0)),kA(kA(Sud(this.c,(qAd(),Vzd)),184),64)).yj(a,c);case 2:return !this.b&&(this.b=new pvd(this,2)),Aud(this.b,a,c);}return d=kA(Gbd((this.j&2)==0?this.Rg():(!this.k&&(this.k=new B7c),this.k).pj(),b),61),d.aj().ej(this,$Mc(this),b-Lbd(this.Rg()),a,c)};_.Fg=function uAd(a){switch(a){case 0:return !!this.c&&this.c.i!=0;case 1:return !(!this.c&&(this.c=new pvd(this,0)),kA(Sud(this.c,(qAd(),Vzd)),184)).Wb();case 2:return !!this.b&&this.b.i!=0;}return FMc(this,a-Lbd(this.Rg()),Gbd((this.j&2)==0?this.Rg():(!this.k&&(this.k=new B7c),this.k).pj(),a))};_.Mg=function vAd(a,b){switch(a){case 0:!this.c&&(this.c=new pvd(this,0));_ud(this.c,b);return;case 1:(!this.c&&(this.c=new pvd(this,0)),kA(kA(Sud(this.c,(qAd(),Vzd)),184),237)).Gc(b);return;case 2:!this.b&&(this.b=new pvd(this,2));_ud(this.b,b);return;}GMc(this,a-Lbd(this.Rg()),Gbd((this.j&2)==0?this.Rg():(!this.k&&(this.k=new B7c),this.k).pj(),a),b)};_.Rg=function wAd(){return qAd(),Uzd};_.Ib=function xAd(){var a;if((this.j&4)!=0)return aNc(this);a=new B6(aNc(this));a.a+=' (mixed: ';v6(a,this.c);a.a+=', anyAttribute: ';v6(a,this.b);a.a+=')';return a.a};var X0=k4(sWd,'AnyTypeImpl',735);c3(604,463,{95:1,91:1,87:1,51:1,42:1,92:1,1707:1,604:1},AAd);_.ug=function BAd(a,b,c){switch(a){case 0:return this.a;case 1:return this.b;}return EMc(this,a-Lbd((qAd(),fAd)),Gbd((this.j&2)==0?fAd:(!this.k&&(this.k=new B7c),this.k).pj(),a),b,c)};_.Fg=function CAd(a){switch(a){case 0:return this.a!=null;case 1:return this.b!=null;}return FMc(this,a-Lbd((qAd(),fAd)),Gbd((this.j&2)==0?fAd:(!this.k&&(this.k=new B7c),this.k).pj(),a))};_.Mg=function DAd(a,b){switch(a){case 0:yAd(this,pA(b));return;case 1:zAd(this,pA(b));return;}GMc(this,a-Lbd((qAd(),fAd)),Gbd((this.j&2)==0?fAd:(!this.k&&(this.k=new B7c),this.k).pj(),a),b)};_.Rg=function EAd(){return qAd(),fAd};_.Ib=function FAd(){var a;if((this.j&4)!=0)return aNc(this);a=new B6(aNc(this));a.a+=' (data: ';w6(a,this.a);a.a+=', target: ';w6(a,this.b);a.a+=')';return a.a};_.a=null;_.b=null;var Y0=k4(sWd,'ProcessingInstructionImpl',604);c3(605,735,{95:1,91:1,87:1,51:1,42:1,92:1,746:1,1708:1,605:1},IAd);_.ug=function JAd(a,b,c){switch(a){case 0:if(c)return !this.c&&(this.c=new pvd(this,0)),this.c;return !this.c&&(this.c=new pvd(this,0)),this.c.b;case 1:if(c)return !this.c&&(this.c=new pvd(this,0)),kA(Sud(this.c,(qAd(),Vzd)),184);return (!this.c&&(this.c=new pvd(this,0)),kA(kA(Sud(this.c,(qAd(),Vzd)),184),237)).vk();case 2:if(c)return !this.b&&(this.b=new pvd(this,2)),this.b;return !this.b&&(this.b=new pvd(this,2)),this.b.b;case 3:return !this.c&&(this.c=new pvd(this,0)),pA(Jud(this.c,(qAd(),iAd),true));case 4:return $xd(this.a,(!this.c&&(this.c=new pvd(this,0)),pA(Jud(this.c,(qAd(),iAd),true))));case 5:return this.a;}return EMc(this,a-Lbd((qAd(),hAd)),Gbd((this.j&2)==0?hAd:(!this.k&&(this.k=new B7c),this.k).pj(),a),b,c)};_.Fg=function KAd(a){switch(a){case 0:return !!this.c&&this.c.i!=0;case 1:return !(!this.c&&(this.c=new pvd(this,0)),kA(Sud(this.c,(qAd(),Vzd)),184)).Wb();case 2:return !!this.b&&this.b.i!=0;case 3:return !this.c&&(this.c=new pvd(this,0)),pA(Jud(this.c,(qAd(),iAd),true))!=null;case 4:return $xd(this.a,(!this.c&&(this.c=new pvd(this,0)),pA(Jud(this.c,(qAd(),iAd),true))))!=null;case 5:return !!this.a;}return FMc(this,a-Lbd((qAd(),hAd)),Gbd((this.j&2)==0?hAd:(!this.k&&(this.k=new B7c),this.k).pj(),a))};_.Mg=function LAd(a,b){switch(a){case 0:!this.c&&(this.c=new pvd(this,0));_ud(this.c,b);return;case 1:(!this.c&&(this.c=new pvd(this,0)),kA(kA(Sud(this.c,(qAd(),Vzd)),184),237)).Gc(b);return;case 2:!this.b&&(this.b=new pvd(this,2));_ud(this.b,b);return;case 3:HAd(this,pA(b));return;case 4:HAd(this,Zxd(this.a,b));return;case 5:GAd(this,kA(b,140));return;}GMc(this,a-Lbd((qAd(),hAd)),Gbd((this.j&2)==0?hAd:(!this.k&&(this.k=new B7c),this.k).pj(),a),b)};_.Rg=function MAd(){return qAd(),hAd};var Z0=k4(sWd,'SimpleAnyTypeImpl',605);c3(606,463,{95:1,91:1,87:1,51:1,42:1,92:1,1709:1,606:1},NAd);_.ug=function OAd(a,b,c){switch(a){case 0:if(c)return !this.a&&(this.a=new pvd(this,0)),this.a;return !this.a&&(this.a=new pvd(this,0)),this.a.b;case 1:return c?(!this.b&&(this.b=new T8c((j7c(),f7c),CZ,this,1)),this.b):(!this.b&&(this.b=new T8c((j7c(),f7c),CZ,this,1)),X1c(this.b));case 2:return c?(!this.c&&(this.c=new T8c((j7c(),f7c),CZ,this,2)),this.c):(!this.c&&(this.c=new T8c((j7c(),f7c),CZ,this,2)),X1c(this.c));case 3:return !this.a&&(this.a=new pvd(this,0)),Sud(this.a,(qAd(),lAd));case 4:return !this.a&&(this.a=new pvd(this,0)),Sud(this.a,(qAd(),mAd));case 5:return !this.a&&(this.a=new pvd(this,0)),Sud(this.a,(qAd(),oAd));case 6:return !this.a&&(this.a=new pvd(this,0)),Sud(this.a,(qAd(),pAd));}return EMc(this,a-Lbd((qAd(),kAd)),Gbd((this.j&2)==0?kAd:(!this.k&&(this.k=new B7c),this.k).pj(),a),b,c)};_.Dg=function PAd(a,b,c){var d;switch(b){case 0:return !this.a&&(this.a=new pvd(this,0)),Aud(this.a,a,c);case 1:return !this.b&&(this.b=new T8c((j7c(),f7c),CZ,this,1)),R8c(this.b,a,c);case 2:return !this.c&&(this.c=new T8c((j7c(),f7c),CZ,this,2)),R8c(this.c,a,c);case 5:return !this.a&&(this.a=new pvd(this,0)),Kyd(Sud(this.a,(qAd(),oAd)),a,c);}return d=kA(Gbd((this.j&2)==0?(qAd(),kAd):(!this.k&&(this.k=new B7c),this.k).pj(),b),61),d.aj().ej(this,$Mc(this),b-Lbd((qAd(),kAd)),a,c)};_.Fg=function QAd(a){switch(a){case 0:return !!this.a&&this.a.i!=0;case 1:return !!this.b&&this.b.f!=0;case 2:return !!this.c&&this.c.f!=0;case 3:return !this.a&&(this.a=new pvd(this,0)),!Myd(Sud(this.a,(qAd(),lAd)));case 4:return !this.a&&(this.a=new pvd(this,0)),!Myd(Sud(this.a,(qAd(),mAd)));case 5:return !this.a&&(this.a=new pvd(this,0)),!Myd(Sud(this.a,(qAd(),oAd)));case 6:return !this.a&&(this.a=new pvd(this,0)),!Myd(Sud(this.a,(qAd(),pAd)));}return FMc(this,a-Lbd((qAd(),kAd)),Gbd((this.j&2)==0?kAd:(!this.k&&(this.k=new B7c),this.k).pj(),a))};_.Mg=function RAd(a,b){switch(a){case 0:!this.a&&(this.a=new pvd(this,0));_ud(this.a,b);return;case 1:!this.b&&(this.b=new T8c((j7c(),f7c),CZ,this,1));S8c(this.b,b);return;case 2:!this.c&&(this.c=new T8c((j7c(),f7c),CZ,this,2));S8c(this.c,b);return;case 3:!this.a&&(this.a=new pvd(this,0));Lyd(Sud(this.a,(qAd(),lAd)));!this.a&&(this.a=new pvd(this,0));Jyd(Sud(this.a,lAd),kA(b,13));return;case 4:!this.a&&(this.a=new pvd(this,0));Lyd(Sud(this.a,(qAd(),mAd)));!this.a&&(this.a=new pvd(this,0));Jyd(Sud(this.a,mAd),kA(b,13));return;case 5:!this.a&&(this.a=new pvd(this,0));Lyd(Sud(this.a,(qAd(),oAd)));!this.a&&(this.a=new pvd(this,0));Jyd(Sud(this.a,oAd),kA(b,13));return;case 6:!this.a&&(this.a=new pvd(this,0));Lyd(Sud(this.a,(qAd(),pAd)));!this.a&&(this.a=new pvd(this,0));Jyd(Sud(this.a,pAd),kA(b,13));return;}GMc(this,a-Lbd((qAd(),kAd)),Gbd((this.j&2)==0?kAd:(!this.k&&(this.k=new B7c),this.k).pj(),a),b)};_.Rg=function SAd(){return qAd(),kAd};_.Ib=function TAd(){var a;if((this.j&4)!=0)return aNc(this);a=new B6(aNc(this));a.a+=' (mixed: ';v6(a,this.a);a.a+=')';return a.a};var $0=k4(sWd,'XMLTypeDocumentRootImpl',606);c3(1626,638,{95:1,91:1,87:1,430:1,139:1,51:1,103:1,42:1,92:1,142:1,107:1,108:1,1710:1},qBd);_.Zg=function rBd(a,b){switch(a.Ni()){case 7:case 8:case 9:case 10:case 16:case 22:case 23:case 24:case 25:case 26:case 32:case 33:case 34:case 36:case 37:case 44:case 45:case 50:case 51:case 53:case 55:case 56:case 57:case 58:case 60:case 61:case 4:return b==null?null:f3(b);case 19:case 28:case 29:case 35:case 38:case 39:case 41:case 46:case 52:case 54:case 5:return pA(b);case 6:return $Ad(kA(b,173));case 12:case 47:case 49:case 11:return bRc(this,a,b);case 13:return b==null?null:h7(kA(b,216));case 15:case 14:return b==null?null:_Ad(Vpb(nA(b)));case 17:return aBd((qAd(),b));case 18:return aBd(b);case 21:case 20:return b==null?null:bBd(kA(b,126).a);case 27:return cBd(kA(b,173));case 30:return dBd((qAd(),kA(b,15)));case 31:return dBd(kA(b,15));case 40:return gBd((qAd(),b));case 42:return eBd((qAd(),b));case 43:return eBd(b);case 59:case 48:return fBd((qAd(),b));default:throw x2(new O4(gTd+a.be()+hTd));}};_.$g=function sBd(a){var b,c,d,e,f;switch(a.G==-1&&(a.G=(c=Nad(a),c?pcd(c.bh(),a):-1)),a.G){case 0:return b=new rAd,b;case 1:return d=new AAd,d;case 2:return e=new IAd,e;case 3:return f=new NAd,f;default:throw x2(new O4(kTd+a.zb+hTd));}};_._g=function tBd(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r;switch(a.Ni()){case 5:case 52:case 4:return b;case 6:return hBd(b);case 8:case 7:return b==null?null:ZAd(b);case 9:return b==null?null:R3(H3((d=mId(b,true),d.length>0&&d.charCodeAt(0)==43?d.substr(1,d.length-1):d),-128,127)<<24>>24);case 10:return b==null?null:R3(H3((e=mId(b,true),e.length>0&&e.charCodeAt(0)==43?e.substr(1,e.length-1):e),-128,127)<<24>>24);case 11:return pA(cRc(this,(qAd(),Yzd),b));case 12:return pA(cRc(this,(qAd(),Zzd),b));case 13:return b==null?null:new k7(mId(b,true));case 15:case 14:return iBd(b);case 16:return pA(cRc(this,(qAd(),$zd),b));case 17:return jBd((qAd(),b));case 18:return jBd(b);case 28:case 29:case 35:case 38:case 39:case 41:case 54:case 19:return mId(b,true);case 21:case 20:return kBd(b);case 22:return pA(cRc(this,(qAd(),_zd),b));case 23:return pA(cRc(this,(qAd(),aAd),b));case 24:return pA(cRc(this,(qAd(),bAd),b));case 25:return pA(cRc(this,(qAd(),cAd),b));case 26:return pA(cRc(this,(qAd(),dAd),b));case 27:return lBd(b);case 30:return mBd((qAd(),b));case 31:return mBd(b);case 32:return b==null?null:d5(H3((k=mId(b,true),k.length>0&&k.charCodeAt(0)==43?k.substr(1,k.length-1):k),oKd,jJd));case 33:return b==null?null:new P7((l=mId(b,true),l.length>0&&l.charCodeAt(0)==43?l.substr(1,l.length-1):l));case 34:return b==null?null:d5(H3((m=mId(b,true),m.length>0&&m.charCodeAt(0)==43?m.substr(1,m.length-1):m),oKd,jJd));case 36:return b==null?null:r5(I3((n=mId(b,true),n.length>0&&n.charCodeAt(0)==43?n.substr(1,n.length-1):n)));case 37:return b==null?null:r5(I3((o=mId(b,true),o.length>0&&o.charCodeAt(0)==43?o.substr(1,o.length-1):o)));case 40:return pBd((qAd(),b));case 42:return nBd((qAd(),b));case 43:return nBd(b);case 44:return b==null?null:new P7((p=mId(b,true),p.length>0&&p.charCodeAt(0)==43?p.substr(1,p.length-1):p));case 45:return b==null?null:new P7((q=mId(b,true),q.length>0&&q.charCodeAt(0)==43?q.substr(1,q.length-1):q));case 46:return mId(b,false);case 47:return pA(cRc(this,(qAd(),eAd),b));case 59:case 48:return oBd((qAd(),b));case 49:return pA(cRc(this,(qAd(),gAd),b));case 50:return b==null?null:Q5(H3((r=mId(b,true),r.length>0&&r.charCodeAt(0)==43?r.substr(1,r.length-1):r),IVd,32767)<<16>>16);case 51:return b==null?null:Q5(H3((f=mId(b,true),f.length>0&&f.charCodeAt(0)==43?f.substr(1,f.length-1):f),IVd,32767)<<16>>16);case 53:return pA(cRc(this,(qAd(),jAd),b));case 55:return b==null?null:Q5(H3((g=mId(b,true),g.length>0&&g.charCodeAt(0)==43?g.substr(1,g.length-1):g),IVd,32767)<<16>>16);case 56:return b==null?null:Q5(H3((h=mId(b,true),h.length>0&&h.charCodeAt(0)==43?h.substr(1,h.length-1):h),IVd,32767)<<16>>16);case 57:return b==null?null:r5(I3((i=mId(b,true),i.length>0&&i.charCodeAt(0)==43?i.substr(1,i.length-1):i)));case 58:return b==null?null:r5(I3((j=mId(b,true),j.length>0&&j.charCodeAt(0)==43?j.substr(1,j.length-1):j)));case 60:return b==null?null:d5(H3((c=mId(b,true),c.length>0&&c.charCodeAt(0)==43?c.substr(1,c.length-1):c),oKd,jJd));case 61:return b==null?null:d5(H3(mId(b,true),oKd,jJd));default:throw x2(new O4(gTd+a.be()+hTd));}};var UAd,VAd,WAd,XAd;var _0=k4(sWd,'XMLTypeFactoryImpl',1626);c3(530,248,{95:1,91:1,87:1,139:1,174:1,51:1,207:1,103:1,42:1,92:1,142:1,248:1,107:1,108:1,613:1,1639:1,530:1},ABd);_.N=false;_.O=false;var vBd=false;var $1=k4(sWd,'XMLTypePackageImpl',530);c3(1569,1,{743:1},DBd);_.mj=function EBd(){return qId(),pId};var k1=k4(sWd,'XMLTypePackageImpl/1',1569);c3(1578,1,VVd,FBd);_.Li=function GBd(a){return wA(a)};_.Mi=function HBd(a){return tz(UE,cKd,2,a,6,1)};var a1=k4(sWd,'XMLTypePackageImpl/10',1578);c3(1579,1,VVd,IBd);_.Li=function JBd(a){return wA(a)};_.Mi=function KBd(a){return tz(UE,cKd,2,a,6,1)};var b1=k4(sWd,'XMLTypePackageImpl/11',1579);c3(1580,1,VVd,LBd);_.Li=function MBd(a){return wA(a)};_.Mi=function NBd(a){return tz(UE,cKd,2,a,6,1)};var c1=k4(sWd,'XMLTypePackageImpl/12',1580);c3(1581,1,VVd,OBd);_.Li=function PBd(a){return uA(a)};_.Mi=function QBd(a){return tz(yE,cKd,315,a,7,1)};var d1=k4(sWd,'XMLTypePackageImpl/13',1581);c3(1582,1,VVd,RBd);_.Li=function SBd(a){return wA(a)};_.Mi=function TBd(a){return tz(UE,cKd,2,a,6,1)};var e1=k4(sWd,'XMLTypePackageImpl/14',1582);c3(1583,1,VVd,UBd);_.Li=function VBd(a){return sA(a,15)};_.Mi=function WBd(a){return tz(mG,ZMd,15,a,0,1)};var f1=k4(sWd,'XMLTypePackageImpl/15',1583);c3(1584,1,VVd,XBd);_.Li=function YBd(a){return sA(a,15)};_.Mi=function ZBd(a){return tz(mG,ZMd,15,a,0,1)};var g1=k4(sWd,'XMLTypePackageImpl/16',1584);c3(1585,1,VVd,$Bd);_.Li=function _Bd(a){return wA(a)};_.Mi=function aCd(a){return tz(UE,cKd,2,a,6,1)};var h1=k4(sWd,'XMLTypePackageImpl/17',1585);c3(1586,1,VVd,bCd);_.Li=function cCd(a){return sA(a,126)};_.Mi=function dCd(a){return tz(CE,cKd,126,a,0,1)};var i1=k4(sWd,'XMLTypePackageImpl/18',1586);c3(1587,1,VVd,eCd);_.Li=function fCd(a){return wA(a)};_.Mi=function gCd(a){return tz(UE,cKd,2,a,6,1)};var j1=k4(sWd,'XMLTypePackageImpl/19',1587);c3(1570,1,VVd,hCd);_.Li=function iCd(a){return sA(a,746)};_.Mi=function jCd(a){return tz(S0,oJd,746,a,0,1)};var v1=k4(sWd,'XMLTypePackageImpl/2',1570);c3(1588,1,VVd,kCd);_.Li=function lCd(a){return wA(a)};_.Mi=function mCd(a){return tz(UE,cKd,2,a,6,1)};var l1=k4(sWd,'XMLTypePackageImpl/20',1588);c3(1589,1,VVd,nCd);_.Li=function oCd(a){return wA(a)};_.Mi=function pCd(a){return tz(UE,cKd,2,a,6,1)};var m1=k4(sWd,'XMLTypePackageImpl/21',1589);c3(1590,1,VVd,qCd);_.Li=function rCd(a){return wA(a)};_.Mi=function sCd(a){return tz(UE,cKd,2,a,6,1)};var n1=k4(sWd,'XMLTypePackageImpl/22',1590);c3(1591,1,VVd,tCd);_.Li=function uCd(a){return wA(a)};_.Mi=function vCd(a){return tz(UE,cKd,2,a,6,1)};var o1=k4(sWd,'XMLTypePackageImpl/23',1591);c3(1592,1,VVd,wCd);_.Li=function xCd(a){return sA(a,173)};_.Mi=function yCd(a){return tz(BA,cKd,173,a,0,2)};var p1=k4(sWd,'XMLTypePackageImpl/24',1592);c3(1593,1,VVd,zCd);_.Li=function ACd(a){return wA(a)};_.Mi=function BCd(a){return tz(UE,cKd,2,a,6,1)};var q1=k4(sWd,'XMLTypePackageImpl/25',1593);c3(1594,1,VVd,CCd);_.Li=function DCd(a){return wA(a)};_.Mi=function ECd(a){return tz(UE,cKd,2,a,6,1)};var r1=k4(sWd,'XMLTypePackageImpl/26',1594);c3(1595,1,VVd,FCd);_.Li=function GCd(a){return sA(a,15)};_.Mi=function HCd(a){return tz(mG,ZMd,15,a,0,1)};var s1=k4(sWd,'XMLTypePackageImpl/27',1595);c3(1596,1,VVd,ICd);_.Li=function JCd(a){return sA(a,15)};_.Mi=function KCd(a){return tz(mG,ZMd,15,a,0,1)};var t1=k4(sWd,'XMLTypePackageImpl/28',1596);c3(1597,1,VVd,LCd);_.Li=function MCd(a){return wA(a)};_.Mi=function NCd(a){return tz(UE,cKd,2,a,6,1)};var u1=k4(sWd,'XMLTypePackageImpl/29',1597);c3(1571,1,VVd,OCd);_.Li=function PCd(a){return sA(a,604)};_.Mi=function QCd(a){return tz(U0,oJd,1707,a,0,1)};var G1=k4(sWd,'XMLTypePackageImpl/3',1571);c3(1598,1,VVd,RCd);_.Li=function SCd(a){return sA(a,21)};_.Mi=function TCd(a){return tz(GE,cKd,21,a,0,1)};var w1=k4(sWd,'XMLTypePackageImpl/30',1598);c3(1599,1,VVd,UCd);_.Li=function VCd(a){return wA(a)};_.Mi=function WCd(a){return tz(UE,cKd,2,a,6,1)};var x1=k4(sWd,'XMLTypePackageImpl/31',1599);c3(1600,1,VVd,XCd);_.Li=function YCd(a){return sA(a,149)};_.Mi=function ZCd(a){return tz(IE,cKd,149,a,0,1)};var y1=k4(sWd,'XMLTypePackageImpl/32',1600);c3(1601,1,VVd,$Cd);_.Li=function _Cd(a){return wA(a)};_.Mi=function aDd(a){return tz(UE,cKd,2,a,6,1)};var z1=k4(sWd,'XMLTypePackageImpl/33',1601);c3(1602,1,VVd,bDd);_.Li=function cDd(a){return wA(a)};_.Mi=function dDd(a){return tz(UE,cKd,2,a,6,1)};var A1=k4(sWd,'XMLTypePackageImpl/34',1602);c3(1603,1,VVd,eDd);_.Li=function fDd(a){return wA(a)};_.Mi=function gDd(a){return tz(UE,cKd,2,a,6,1)};var B1=k4(sWd,'XMLTypePackageImpl/35',1603);c3(1604,1,VVd,hDd);_.Li=function iDd(a){return wA(a)};_.Mi=function jDd(a){return tz(UE,cKd,2,a,6,1)};var C1=k4(sWd,'XMLTypePackageImpl/36',1604);c3(1605,1,VVd,kDd);_.Li=function lDd(a){return sA(a,15)};_.Mi=function mDd(a){return tz(mG,ZMd,15,a,0,1)};var D1=k4(sWd,'XMLTypePackageImpl/37',1605);c3(1606,1,VVd,nDd);_.Li=function oDd(a){return sA(a,15)};_.Mi=function pDd(a){return tz(mG,ZMd,15,a,0,1)};var E1=k4(sWd,'XMLTypePackageImpl/38',1606);c3(1607,1,VVd,qDd);_.Li=function rDd(a){return wA(a)};_.Mi=function sDd(a){return tz(UE,cKd,2,a,6,1)};var F1=k4(sWd,'XMLTypePackageImpl/39',1607);c3(1572,1,VVd,tDd);_.Li=function uDd(a){return sA(a,605)};_.Mi=function vDd(a){return tz(V0,oJd,1708,a,0,1)};var R1=k4(sWd,'XMLTypePackageImpl/4',1572);c3(1608,1,VVd,wDd);_.Li=function xDd(a){return wA(a)};_.Mi=function yDd(a){return tz(UE,cKd,2,a,6,1)};var H1=k4(sWd,'XMLTypePackageImpl/40',1608);c3(1609,1,VVd,zDd);_.Li=function ADd(a){return wA(a)};_.Mi=function BDd(a){return tz(UE,cKd,2,a,6,1)};var I1=k4(sWd,'XMLTypePackageImpl/41',1609);c3(1610,1,VVd,CDd);_.Li=function DDd(a){return wA(a)};_.Mi=function EDd(a){return tz(UE,cKd,2,a,6,1)};var J1=k4(sWd,'XMLTypePackageImpl/42',1610);c3(1611,1,VVd,FDd);_.Li=function GDd(a){return wA(a)};_.Mi=function HDd(a){return tz(UE,cKd,2,a,6,1)};var K1=k4(sWd,'XMLTypePackageImpl/43',1611);c3(1612,1,VVd,IDd);_.Li=function JDd(a){return wA(a)};_.Mi=function KDd(a){return tz(UE,cKd,2,a,6,1)};var L1=k4(sWd,'XMLTypePackageImpl/44',1612);c3(1613,1,VVd,LDd);_.Li=function MDd(a){return sA(a,168)};_.Mi=function NDd(a){return tz(PE,cKd,168,a,0,1)};var M1=k4(sWd,'XMLTypePackageImpl/45',1613);c3(1614,1,VVd,ODd);_.Li=function PDd(a){return wA(a)};_.Mi=function QDd(a){return tz(UE,cKd,2,a,6,1)};var N1=k4(sWd,'XMLTypePackageImpl/46',1614);c3(1615,1,VVd,RDd);_.Li=function SDd(a){return wA(a)};_.Mi=function TDd(a){return tz(UE,cKd,2,a,6,1)};var O1=k4(sWd,'XMLTypePackageImpl/47',1615);c3(1616,1,VVd,UDd);_.Li=function VDd(a){return wA(a)};_.Mi=function WDd(a){return tz(UE,cKd,2,a,6,1)};var P1=k4(sWd,'XMLTypePackageImpl/48',1616);c3(1617,1,VVd,XDd);_.Li=function YDd(a){return sA(a,168)};_.Mi=function ZDd(a){return tz(PE,cKd,168,a,0,1)};var Q1=k4(sWd,'XMLTypePackageImpl/49',1617);c3(1573,1,VVd,$Dd);_.Li=function _Dd(a){return sA(a,606)};_.Mi=function aEd(a){return tz(W0,oJd,1709,a,0,1)};var V1=k4(sWd,'XMLTypePackageImpl/5',1573);c3(1618,1,VVd,bEd);_.Li=function cEd(a){return sA(a,149)};_.Mi=function dEd(a){return tz(IE,cKd,149,a,0,1)};var S1=k4(sWd,'XMLTypePackageImpl/50',1618);c3(1619,1,VVd,eEd);_.Li=function fEd(a){return wA(a)};_.Mi=function gEd(a){return tz(UE,cKd,2,a,6,1)};var T1=k4(sWd,'XMLTypePackageImpl/51',1619);c3(1620,1,VVd,hEd);_.Li=function iEd(a){return sA(a,21)};_.Mi=function jEd(a){return tz(GE,cKd,21,a,0,1)};var U1=k4(sWd,'XMLTypePackageImpl/52',1620);c3(1574,1,VVd,kEd);_.Li=function lEd(a){return wA(a)};_.Mi=function mEd(a){return tz(UE,cKd,2,a,6,1)};var W1=k4(sWd,'XMLTypePackageImpl/6',1574);c3(1575,1,VVd,nEd);_.Li=function oEd(a){return sA(a,173)};_.Mi=function pEd(a){return tz(BA,cKd,173,a,0,2)};var X1=k4(sWd,'XMLTypePackageImpl/7',1575);c3(1576,1,VVd,qEd);_.Li=function rEd(a){return tA(a)};_.Mi=function sEd(a){return tz(tE,cKd,434,a,8,1)};var Y1=k4(sWd,'XMLTypePackageImpl/8',1576);c3(1577,1,VVd,tEd);_.Li=function uEd(a){return sA(a,192)};_.Mi=function vEd(a){return tz(uE,cKd,192,a,0,1)};var Z1=k4(sWd,'XMLTypePackageImpl/9',1577);var wEd,xEd;var DEd,EEd;var IEd;c3(40,54,rKd,KEd);var _1=k4(SWd,'RegEx/ParseException',40);c3(730,1,{},SEd);_.Ck=function TEd(a){return ac*16)throw x2(new KEd(WYc((isd(),zUd))));c=c*16+e}while(true);if(this.a!=125)throw x2(new KEd(WYc((isd(),AUd))));if(c>TWd)throw x2(new KEd(WYc((isd(),BUd))));a=c}else{e=0;if(this.c!=0||(e=WEd(this.a))<0)throw x2(new KEd(WYc((isd(),yUd))));c=e;LEd(this);if(this.c!=0||(e=WEd(this.a))<0)throw x2(new KEd(WYc((isd(),yUd))));c=c*16+e;a=c}break;case 117:d=0;LEd(this);if(this.c!=0||(d=WEd(this.a))<0)throw x2(new KEd(WYc((isd(),yUd))));b=d;LEd(this);if(this.c!=0||(d=WEd(this.a))<0)throw x2(new KEd(WYc((isd(),yUd))));b=b*16+d;LEd(this);if(this.c!=0||(d=WEd(this.a))<0)throw x2(new KEd(WYc((isd(),yUd))));b=b*16+d;LEd(this);if(this.c!=0||(d=WEd(this.a))<0)throw x2(new KEd(WYc((isd(),yUd))));b=b*16+d;a=b;break;case 118:LEd(this);if(this.c!=0||(d=WEd(this.a))<0)throw x2(new KEd(WYc((isd(),yUd))));b=d;LEd(this);if(this.c!=0||(d=WEd(this.a))<0)throw x2(new KEd(WYc((isd(),yUd))));b=b*16+d;LEd(this);if(this.c!=0||(d=WEd(this.a))<0)throw x2(new KEd(WYc((isd(),yUd))));b=b*16+d;LEd(this);if(this.c!=0||(d=WEd(this.a))<0)throw x2(new KEd(WYc((isd(),yUd))));b=b*16+d;LEd(this);if(this.c!=0||(d=WEd(this.a))<0)throw x2(new KEd(WYc((isd(),yUd))));b=b*16+d;LEd(this);if(this.c!=0||(d=WEd(this.a))<0)throw x2(new KEd(WYc((isd(),yUd))));b=b*16+d;if(b>TWd)throw x2(new KEd(WYc((isd(),'parser.descappe.4'))));a=b;break;case 65:case 90:case 122:throw x2(new KEd(WYc((isd(),CUd))));}return a};_.Ek=function VEd(a){var b;switch(a){case 100:b=(this.e&32)==32?gHd('Nd',true):(UGd(),AGd);break;case 68:b=(this.e&32)==32?gHd('Nd',false):(UGd(),HGd);break;case 119:b=(this.e&32)==32?gHd('IsWord',true):(UGd(),QGd);break;case 87:b=(this.e&32)==32?gHd('IsWord',false):(UGd(),JGd);break;case 115:b=(this.e&32)==32?gHd('IsSpace',true):(UGd(),LGd);break;case 83:b=(this.e&32)==32?gHd('IsSpace',false):(UGd(),IGd);break;default:throw x2(new Tv(UWd+a.toString(16)));}return b};_.Fk=function XEd(a){var b,c,d,e,f,g,h,i,j,k,l,m;this.b=1;LEd(this);b=null;if(this.c==0&&this.a==94){LEd(this);if(a){k=(UGd(),UGd(),++TGd,new wHd(5))}else{b=(UGd(),UGd(),++TGd,new wHd(4));qHd(b,0,TWd);k=(null,++TGd,new wHd(4))}}else{k=(UGd(),UGd(),++TGd,new wHd(4))}e=true;while((m=this.c)!=1){if(m==0&&this.a==93&&!e)break;e=false;c=this.a;d=false;if(m==10){switch(c){case 100:case 68:case 119:case 87:case 115:case 83:tHd(k,this.Ek(c));d=true;break;case 105:case 73:case 99:case 67:c=this.Vk(k,c);c<0&&(d=true);break;case 112:case 80:l=REd(this,c);if(!l)throw x2(new KEd(WYc((isd(),nUd))));tHd(k,l);d=true;break;default:c=this.Dk();}}else if(m==20){g=a6(this.i,58,this.d);if(g<0)throw x2(new KEd(WYc((isd(),oUd))));h=true;if(X5(this.i,this.d)==94){++this.d;h=false}f=j6(this.i,this.d,g);i=hHd(f,h,(this.e&512)==512);if(!i)throw x2(new KEd(WYc((isd(),qUd))));tHd(k,i);d=true;if(g+1>=this.j||X5(this.i,g+1)!=93)throw x2(new KEd(WYc((isd(),oUd))));this.d=g+2}LEd(this);if(!d){if(this.c!=0||this.a!=45){qHd(k,c,c)}else{LEd(this);if((m=this.c)==1)throw x2(new KEd(WYc((isd(),pUd))));if(m==0&&this.a==93){qHd(k,c,c);qHd(k,45,45)}else{j=this.a;m==10&&(j=this.Dk());LEd(this);qHd(k,c,j)}}}(this.e&hVd)==hVd&&this.c==0&&this.a==44&&LEd(this)}if(this.c==1)throw x2(new KEd(WYc((isd(),pUd))));if(b){vHd(b,k);k=b}uHd(k);rHd(k);this.b=0;LEd(this);return k};_.Gk=function YEd(){var a,b,c,d;c=this.Fk(false);while((d=this.c)!=7){a=this.a;if(d==0&&(a==45||a==38)||d==4){LEd(this);if(this.c!=9)throw x2(new KEd(WYc((isd(),vUd))));b=this.Fk(false);if(d==4)tHd(c,b);else if(a==45)vHd(c,b);else if(a==38)sHd(c,b);else throw x2(new Tv('ASSERT'))}else{throw x2(new KEd(WYc((isd(),wUd))))}}LEd(this);return c};_.Hk=function ZEd(){var a,b;a=this.a-48;b=(UGd(),UGd(),++TGd,new dId(12,null,a));!this.g&&(this.g=new Ukb);Rkb(this.g,new AHd(a));LEd(this);return b};_.Ik=function $Ed(){LEd(this);return UGd(),MGd};_.Jk=function _Ed(){LEd(this);return UGd(),KGd};_.Kk=function aFd(){throw x2(new KEd(WYc((isd(),DUd))))};_.Lk=function bFd(){throw x2(new KEd(WYc((isd(),DUd))))};_.Mk=function cFd(){LEd(this);return eHd()};_.Nk=function dFd(){LEd(this);return UGd(),OGd};_.Ok=function eFd(){LEd(this);return UGd(),RGd};_.Pk=function fFd(){var a;if(this.d>=this.j||((a=X5(this.i,this.d++))&65504)!=64)throw x2(new KEd(WYc((isd(),jUd))));LEd(this);return UGd(),UGd(),++TGd,new GHd(0,a-64)};_.Qk=function gFd(){LEd(this);return fHd()};_.Rk=function hFd(){LEd(this);return UGd(),SGd};_.Sk=function iFd(){var a;a=(UGd(),UGd(),++TGd,new GHd(0,105));LEd(this);return a};_.Tk=function jFd(){LEd(this);return UGd(),PGd};_.Uk=function kFd(){LEd(this);return UGd(),NGd};_.Vk=function lFd(a,b){return this.Dk()};_.Wk=function mFd(){LEd(this);return UGd(),FGd};_.Xk=function nFd(){var a,b,c,d,e;if(this.d+1>=this.j)throw x2(new KEd(WYc((isd(),gUd))));d=-1;b=null;a=X5(this.i,this.d);if(49<=a&&a<=57){d=a-48;!this.g&&(this.g=new Ukb);Rkb(this.g,new AHd(d));++this.d;if(X5(this.i,this.d)!=41)throw x2(new KEd(WYc((isd(),dUd))));++this.d}else{a==63&&--this.d;LEd(this);b=OEd(this);switch(b.e){case 20:case 21:case 22:case 23:break;case 8:if(this.c!=7)throw x2(new KEd(WYc((isd(),dUd))));break;default:throw x2(new KEd(WYc((isd(),hUd))));}}LEd(this);e=PEd(this);c=null;if(e.e==2){if(e.ol()!=2)throw x2(new KEd(WYc((isd(),iUd))));c=e.kl(1);e=e.kl(0)}if(this.c!=7)throw x2(new KEd(WYc((isd(),dUd))));LEd(this);return UGd(),UGd(),++TGd,new THd(d,b,e,c)};_.Yk=function oFd(){LEd(this);return UGd(),GGd};_.Zk=function pFd(){var a;LEd(this);a=$Gd(24,PEd(this));if(this.c!=7)throw x2(new KEd(WYc((isd(),dUd))));LEd(this);return a};_.$k=function qFd(){var a;LEd(this);a=$Gd(20,PEd(this));if(this.c!=7)throw x2(new KEd(WYc((isd(),dUd))));LEd(this);return a};_._k=function rFd(){var a;LEd(this);a=$Gd(22,PEd(this));if(this.c!=7)throw x2(new KEd(WYc((isd(),dUd))));LEd(this);return a};_.al=function sFd(){var a,b,c,d,e;a=0;c=0;b=-1;while(this.d=this.j)throw x2(new KEd(WYc((isd(),eUd))));if(b==45){++this.d;while(this.d=this.j)throw x2(new KEd(WYc((isd(),eUd))))}if(b==58){++this.d;LEd(this);d=_Gd(PEd(this),a,c);if(this.c!=7)throw x2(new KEd(WYc((isd(),dUd))));LEd(this)}else if(b==41){++this.d;LEd(this);d=_Gd(PEd(this),a,c)}else throw x2(new KEd(WYc((isd(),fUd))));return d};_.bl=function tFd(){var a;LEd(this);a=$Gd(21,PEd(this));if(this.c!=7)throw x2(new KEd(WYc((isd(),dUd))));LEd(this);return a};_.cl=function uFd(){var a;LEd(this);a=$Gd(23,PEd(this));if(this.c!=7)throw x2(new KEd(WYc((isd(),dUd))));LEd(this);return a};_.dl=function vFd(){var a,b;LEd(this);a=this.f++;b=aHd(PEd(this),a);if(this.c!=7)throw x2(new KEd(WYc((isd(),dUd))));LEd(this);return b};_.el=function wFd(){var a;LEd(this);a=aHd(PEd(this),0);if(this.c!=7)throw x2(new KEd(WYc((isd(),dUd))));LEd(this);return a};_.fl=function xFd(a){LEd(this);if(this.c==5){LEd(this);return ZGd(a,(UGd(),UGd(),++TGd,new JHd(9,a)))}else return ZGd(a,(UGd(),UGd(),++TGd,new JHd(3,a)))};_.gl=function yFd(a){var b;LEd(this);b=(UGd(),UGd(),++TGd,new hId(2));if(this.c==5){LEd(this);gId(b,(null,DGd));gId(b,a)}else{gId(b,a);gId(b,(null,DGd))}return b};_.hl=function zFd(a){LEd(this);if(this.c==5){LEd(this);return UGd(),UGd(),++TGd,new JHd(9,a)}else return UGd(),UGd(),++TGd,new JHd(3,a)};_.a=0;_.b=0;_.c=0;_.d=0;_.e=0;_.f=1;_.g=null;_.j=0;var d2=k4(SWd,'RegEx/RegexParser',730);c3(1564,730,{},FFd);_.Ck=function GFd(a){return false};_.Dk=function HFd(){return CFd(this)};_.Ek=function JFd(a){return DFd(a)};_.Fk=function KFd(a){return EFd(this)};_.Gk=function LFd(){throw x2(new KEd(WYc((isd(),DUd))))};_.Hk=function MFd(){throw x2(new KEd(WYc((isd(),DUd))))};_.Ik=function NFd(){throw x2(new KEd(WYc((isd(),DUd))))};_.Jk=function OFd(){throw x2(new KEd(WYc((isd(),DUd))))};_.Kk=function PFd(){LEd(this);return DFd(67)};_.Lk=function QFd(){LEd(this);return DFd(73)};_.Mk=function RFd(){throw x2(new KEd(WYc((isd(),DUd))))};_.Nk=function SFd(){throw x2(new KEd(WYc((isd(),DUd))))};_.Ok=function TFd(){throw x2(new KEd(WYc((isd(),DUd))))};_.Pk=function UFd(){LEd(this);return DFd(99)};_.Qk=function VFd(){throw x2(new KEd(WYc((isd(),DUd))))};_.Rk=function WFd(){throw x2(new KEd(WYc((isd(),DUd))))};_.Sk=function XFd(){LEd(this);return DFd(105)};_.Tk=function YFd(){throw x2(new KEd(WYc((isd(),DUd))))};_.Uk=function ZFd(){throw x2(new KEd(WYc((isd(),DUd))))};_.Vk=function $Fd(a,b){return tHd(a,DFd(b)),-1};_.Wk=function _Fd(){LEd(this);return UGd(),UGd(),++TGd,new GHd(0,94)};_.Xk=function aGd(){throw x2(new KEd(WYc((isd(),DUd))))};_.Yk=function bGd(){LEd(this);return UGd(),UGd(),++TGd,new GHd(0,36)};_.Zk=function cGd(){throw x2(new KEd(WYc((isd(),DUd))))};_.$k=function dGd(){throw x2(new KEd(WYc((isd(),DUd))))};_._k=function eGd(){throw x2(new KEd(WYc((isd(),DUd))))};_.al=function fGd(){throw x2(new KEd(WYc((isd(),DUd))))};_.bl=function gGd(){throw x2(new KEd(WYc((isd(),DUd))))};_.cl=function hGd(){throw x2(new KEd(WYc((isd(),DUd))))};_.dl=function iGd(){var a;LEd(this);a=aHd(PEd(this),0);if(this.c!=7)throw x2(new KEd(WYc((isd(),dUd))));LEd(this);return a};_.el=function jGd(){throw x2(new KEd(WYc((isd(),DUd))))};_.fl=function kGd(a){LEd(this);return ZGd(a,(UGd(),UGd(),++TGd,new JHd(3,a)))};_.gl=function lGd(a){var b;LEd(this);b=(UGd(),UGd(),++TGd,new hId(2));gId(b,a);gId(b,(null,DGd));return b};_.hl=function mGd(a){LEd(this);return UGd(),UGd(),++TGd,new JHd(3,a)};var AFd=null,BFd=null;var a2=k4(SWd,'RegEx/ParserForXMLSchema',1564);c3(112,1,eXd,VGd);_.il=function WGd(a){throw x2(new Tv('Not supported.'))};_.jl=function cHd(){return -1};_.kl=function dHd(a){return null};_.ll=function iHd(){return null};_.ml=function lHd(a){};_.nl=function mHd(a){};_.ol=function nHd(){return 0};_.Ib=function oHd(){return this.pl(0)};_.pl=function pHd(a){return this.e==11?'.':''};_.e=0;var uGd,vGd,wGd,xGd,yGd,zGd=null,AGd,BGd=null,CGd,DGd,EGd=null,FGd,GGd,HGd,IGd,JGd,KGd,LGd,MGd,NGd,OGd,PGd,QGd,RGd,SGd,TGd=0;var n2=k4(SWd,'RegEx/Token',112);c3(130,112,{3:1,130:1,112:1},wHd);_.pl=function zHd(a){var b,c,d;if(this.e==4){if(this==CGd)c='.';else if(this==AGd)c='\\d';else if(this==QGd)c='\\w';else if(this==LGd)c='\\s';else{d=new z6;d.a+='[';for(b=0;b0&&(d.a+=',',d);if(this.b[b]===this.b[b+1]){w6(d,yHd(this.b[b]))}else{w6(d,yHd(this.b[b]));d.a+='-';w6(d,yHd(this.b[b+1]))}}d.a+=']';c=d.a}}else{if(this==HGd)c='\\D';else if(this==JGd)c='\\W';else if(this==IGd)c='\\S';else{d=new z6;d.a+='[^';for(b=0;b0&&(d.a+=',',d);if(this.b[b]===this.b[b+1]){w6(d,yHd(this.b[b]))}else{w6(d,yHd(this.b[b]));d.a+='-';w6(d,yHd(this.b[b+1]))}}d.a+=']';c=d.a}}return c};_.a=false;_.c=false;var b2=k4(SWd,'RegEx/RangeToken',130);c3(528,1,{528:1},AHd);_.a=0;var c2=k4(SWd,'RegEx/RegexParser/ReferencePosition',528);c3(527,1,{3:1,527:1},CHd);_.Fb=function DHd(a){var b;if(a==null)return false;if(!sA(a,527))return false;b=kA(a,527);return Z5(this.b,b.b)&&this.a==b.a};_.Hb=function EHd(){return hqb(this.b+'/'+oGd(this.a))};_.Ib=function FHd(){return this.c.pl(this.a)};_.a=0;var e2=k4(SWd,'RegEx/RegularExpression',527);c3(195,112,eXd,GHd);_.jl=function HHd(){return this.a};_.pl=function IHd(a){var b,c;switch(this.e){case 0:switch(this.a){case 124:case 42:case 43:case 63:case 40:case 41:case 46:case 91:case 123:case 92:c='\\'+qA(this.a&AKd);break;case 12:c='\\f';break;case 10:c='\\n';break;case 13:c='\\r';break;case 9:c='\\t';break;case 27:c='\\e';break;default:if(this.a>=sLd){b='0'+(this.a>>>0).toString(16);c='\\v'+j6(b,b.length-6,b.length)}else c=''+qA(this.a&AKd);}break;case 8:this==FGd||this==GGd?(c=''+qA(this.a&AKd)):(c='\\'+qA(this.a&AKd));break;default:c=null;}return c};_.a=0;var f2=k4(SWd,'RegEx/Token/CharToken',195);c3(283,112,eXd,JHd);_.kl=function KHd(a){return this.a};_.ml=function LHd(a){this.b=a};_.nl=function MHd(a){this.c=a};_.ol=function NHd(){return 1};_.pl=function OHd(a){var b;if(this.e==3){if(this.c<0&&this.b<0){b=this.a.pl(a)+'*'}else if(this.c==this.b){b=this.a.pl(a)+'{'+this.c+'}'}else if(this.c>=0&&this.b>=0){b=this.a.pl(a)+'{'+this.c+','+this.b+'}'}else if(this.c>=0&&this.b<0){b=this.a.pl(a)+'{'+this.c+',}'}else throw x2(new Tv('Token#toString(): CLOSURE '+this.c+qJd+this.b))}else{if(this.c<0&&this.b<0){b=this.a.pl(a)+'*?'}else if(this.c==this.b){b=this.a.pl(a)+'{'+this.c+'}?'}else if(this.c>=0&&this.b>=0){b=this.a.pl(a)+'{'+this.c+','+this.b+'}?'}else if(this.c>=0&&this.b<0){b=this.a.pl(a)+'{'+this.c+',}?'}else throw x2(new Tv('Token#toString(): NONGREEDYCLOSURE '+this.c+qJd+this.b))}return b};_.b=0;_.c=0;var g2=k4(SWd,'RegEx/Token/ClosureToken',283);c3(731,112,eXd,PHd);_.kl=function QHd(a){return a==0?this.a:this.b};_.ol=function RHd(){return 2};_.pl=function SHd(a){var b;this.b.e==3&&this.b.kl(0)==this.a?(b=this.a.pl(a)+'+'):this.b.e==9&&this.b.kl(0)==this.a?(b=this.a.pl(a)+'+?'):(b=this.a.pl(a)+(''+this.b.pl(a)));return b};var h2=k4(SWd,'RegEx/Token/ConcatToken',731);c3(1562,112,eXd,THd);_.kl=function UHd(a){if(a==0)return this.d;if(a==1)return this.b;throw x2(new Tv('Internal Error: '+a))};_.ol=function VHd(){return !this.b?1:2};_.pl=function WHd(a){var b;this.c>0?(b='(?('+this.c+')'):this.a.e==8?(b='(?('+this.a+')'):(b='(?'+this.a);!this.b?(b+=this.d+')'):(b+=this.d+'|'+this.b+')');return b};_.c=0;var i2=k4(SWd,'RegEx/Token/ConditionToken',1562);c3(1563,112,eXd,XHd);_.kl=function YHd(a){return this.b};_.ol=function ZHd(){return 1};_.pl=function $Hd(a){return '(?'+(this.a==0?'':oGd(this.a))+(this.c==0?'':oGd(this.c))+':'+this.b.pl(a)+')'};_.a=0;_.c=0;var j2=k4(SWd,'RegEx/Token/ModifierToken',1563);c3(732,112,eXd,_Hd);_.kl=function aId(a){return this.a};_.ol=function bId(){return 1};_.pl=function cId(a){var b;b=null;switch(this.e){case 6:this.b==0?(b='(?:'+this.a.pl(a)+')'):(b='('+this.a.pl(a)+')');break;case 20:b='(?='+this.a.pl(a)+')';break;case 21:b='(?!'+this.a.pl(a)+')';break;case 22:b='(?<='+this.a.pl(a)+')';break;case 23:b='(?'+this.a.pl(a)+')';}return b};_.b=0;var k2=k4(SWd,'RegEx/Token/ParenToken',732);c3(474,112,{3:1,112:1,474:1},dId);_.ll=function eId(){return this.b};_.pl=function fId(a){return this.e==12?'\\'+this.a:sGd(this.b)};_.a=0;var l2=k4(SWd,'RegEx/Token/StringToken',474);c3(427,112,eXd,hId);_.il=function iId(a){gId(this,a)};_.kl=function jId(a){return kA(Skb(this.a,a),112)};_.ol=function kId(){return !this.a?0:this.a.a.c.length};_.pl=function lId(a){var b,c,d,e,f;if(this.e==1){if(this.a.a.c.length==2){b=kA(Skb(this.a,0),112);c=kA(Skb(this.a,1),112);c.e==3&&c.kl(0)==b?(e=b.pl(a)+'+'):c.e==9&&c.kl(0)==b?(e=b.pl(a)+'+?'):(e=b.pl(a)+(''+c.pl(a)))}else{f=new z6;for(d=0;d=this.c.b:this.a<=this.c.b};_.Cc=function UId(){return this.b>0};_.Dc=function WId(){return this.b};_.Fc=function YId(){return this.b-1};_.jc=function ZId(){throw x2(new V6(kXd))};_.a=0;_.b=0;var r2=k4(hXd,'ExclusiveRange/RangeIterator',230);var CA=n4(lVd,'C');var FA=n4(oVd,'I');var u2=n4(gJd,'Z');var GA=n4(pVd,'J');var BA=n4(kVd,'B');var DA=n4(mVd,'D');var EA=n4(nVd,'F');var t2=n4(qVd,'S');var XT=m4('org.eclipse.elk.core.labels','ILabelManager');var UX=m4(FTd,'DiagnosticChain');var x_=m4(XVd,'ResourceSet');var _X=k4(FTd,'InvocationTargetException',null);var eJd=(kw(),nw);var gwtOnLoad=gwtOnLoad=$2;Y2(h3);_2('permProps',[[[lXd,mXd],[nXd,'gecko1_8']],[[lXd,mXd],[nXd,'ie10']],[[lXd,mXd],[nXd,'ie8']],[[lXd,mXd],[nXd,'ie9']],[[lXd,mXd],[nXd,'safari']]]); +// -------------- RUN GWT INITIALIZATION CODE -------------- +gwtOnLoad(null, 'elk', null); + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{}],3:[function(require,module,exports){ +'use strict'; + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var ELK = require('./elk-api.js').default; + +var ELKNode = function (_ELK) { + _inherits(ELKNode, _ELK); + + function ELKNode() { + var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + + _classCallCheck(this, ELKNode); + + var optionsClone = Object.assign({}, options); + + var workerThreadsExist = false; + try { + require.resolve('webworker-threads'); + workerThreadsExist = true; + } catch (e) {} + + // user requested a worker + if (options.workerUrl) { + if (workerThreadsExist) { + var _require = require('webworker-threads'), + Worker = _require.Worker; + + optionsClone.workerFactory = function (url) { + return new Worker(url); + }; + } else { + console.warn('Web worker requested but \'webworker-threads\' package not installed. \nConsider installing the package or pass your own \'workerFactory\' to ELK\'s constructor.\n... Falling back to non-web worker version. '); + } + } + + // unless no other workerFactory is registered, use the fake worker + if (!optionsClone.workerFactory) { + var _require2 = require('./elk-worker.min.js'), + _Worker = _require2.Worker; + + optionsClone.workerFactory = function (url) { + return new _Worker(url); + }; + } + + return _possibleConstructorReturn(this, (ELKNode.__proto__ || Object.getPrototypeOf(ELKNode)).call(this, optionsClone)); + } + + return ELKNode; +}(ELK); + +Object.defineProperty(module.exports, "__esModule", { + value: true +}); +module.exports = ELKNode; +ELKNode.default = ELKNode; +},{"./elk-api.js":1,"./elk-worker.min.js":2,"webworker-threads":8}],4:[function(require,module,exports){ +(function (process,__filename){ + +/** + * Module dependencies. + */ + +var fs = require('fs') + , path = require('path') + , join = path.join + , dirname = path.dirname + , exists = ((fs.accessSync && function (path) { try { fs.accessSync(path); } catch (e) { return false; } return true; }) + || fs.existsSync || path.existsSync) + , defaults = { + arrow: process.env.NODE_BINDINGS_ARROW || ' → ' + , compiled: process.env.NODE_BINDINGS_COMPILED_DIR || 'compiled' + , platform: process.platform + , arch: process.arch + , version: process.versions.node + , bindings: 'bindings.node' + , try: [ + // node-gyp's linked version in the "build" dir + [ 'module_root', 'build', 'bindings' ] + // node-waf and gyp_addon (a.k.a node-gyp) + , [ 'module_root', 'build', 'Debug', 'bindings' ] + , [ 'module_root', 'build', 'Release', 'bindings' ] + // Debug files, for development (legacy behavior, remove for node v0.9) + , [ 'module_root', 'out', 'Debug', 'bindings' ] + , [ 'module_root', 'Debug', 'bindings' ] + // Release files, but manually compiled (legacy behavior, remove for node v0.9) + , [ 'module_root', 'out', 'Release', 'bindings' ] + , [ 'module_root', 'Release', 'bindings' ] + // Legacy from node-waf, node <= 0.4.x + , [ 'module_root', 'build', 'default', 'bindings' ] + // Production "Release" buildtype binary (meh...) + , [ 'module_root', 'compiled', 'version', 'platform', 'arch', 'bindings' ] + ] + } + +/** + * The main `bindings()` function loads the compiled bindings for a given module. + * It uses V8's Error API to determine the parent filename that this function is + * being invoked from, which is then used to find the root directory. + */ + +function bindings (opts) { + + // Argument surgery + if (typeof opts == 'string') { + opts = { bindings: opts } + } else if (!opts) { + opts = {} + } + + // maps `defaults` onto `opts` object + Object.keys(defaults).map(function(i) { + if (!(i in opts)) opts[i] = defaults[i]; + }); + + // Get the module root + if (!opts.module_root) { + opts.module_root = exports.getRoot(exports.getFileName()) + } + + // Ensure the given bindings name ends with .node + if (path.extname(opts.bindings) != '.node') { + opts.bindings += '.node' + } + + var tries = [] + , i = 0 + , l = opts.try.length + , n + , b + , err + + for (; i 0 + var up = 0; + for (var i = parts.length - 1; i >= 0; i--) { + var last = parts[i]; + if (last === '.') { + parts.splice(i, 1); + } else if (last === '..') { + parts.splice(i, 1); + up++; + } else if (up) { + parts.splice(i, 1); + up--; + } + } + + // if the path is allowed to go above the root, restore leading ..s + if (allowAboveRoot) { + for (; up--; up) { + parts.unshift('..'); + } + } + + return parts; +} + +// Split a filename into [root, dir, basename, ext], unix version +// 'root' is just a slash, or nothing. +var splitPathRe = + /^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/; +var splitPath = function(filename) { + return splitPathRe.exec(filename).slice(1); +}; + +// path.resolve([from ...], to) +// posix version +exports.resolve = function() { + var resolvedPath = '', + resolvedAbsolute = false; + + for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) { + var path = (i >= 0) ? arguments[i] : process.cwd(); + + // Skip empty and invalid entries + if (typeof path !== 'string') { + throw new TypeError('Arguments to path.resolve must be strings'); + } else if (!path) { + continue; + } + + resolvedPath = path + '/' + resolvedPath; + resolvedAbsolute = path.charAt(0) === '/'; + } + + // At this point the path should be resolved to a full absolute path, but + // handle relative paths to be safe (might happen when process.cwd() fails) + + // Normalize the path + resolvedPath = normalizeArray(filter(resolvedPath.split('/'), function(p) { + return !!p; + }), !resolvedAbsolute).join('/'); + + return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.'; +}; + +// path.normalize(path) +// posix version +exports.normalize = function(path) { + var isAbsolute = exports.isAbsolute(path), + trailingSlash = substr(path, -1) === '/'; + + // Normalize the path + path = normalizeArray(filter(path.split('/'), function(p) { + return !!p; + }), !isAbsolute).join('/'); + + if (!path && !isAbsolute) { + path = '.'; + } + if (path && trailingSlash) { + path += '/'; + } + + return (isAbsolute ? '/' : '') + path; +}; + +// posix version +exports.isAbsolute = function(path) { + return path.charAt(0) === '/'; +}; + +// posix version +exports.join = function() { + var paths = Array.prototype.slice.call(arguments, 0); + return exports.normalize(filter(paths, function(p, index) { + if (typeof p !== 'string') { + throw new TypeError('Arguments to path.join must be strings'); + } + return p; + }).join('/')); +}; + + +// path.relative(from, to) +// posix version +exports.relative = function(from, to) { + from = exports.resolve(from).substr(1); + to = exports.resolve(to).substr(1); + + function trim(arr) { + var start = 0; + for (; start < arr.length; start++) { + if (arr[start] !== '') break; + } + + var end = arr.length - 1; + for (; end >= 0; end--) { + if (arr[end] !== '') break; + } + + if (start > end) return []; + return arr.slice(start, end - start + 1); + } + + var fromParts = trim(from.split('/')); + var toParts = trim(to.split('/')); + + var length = Math.min(fromParts.length, toParts.length); + var samePartsLength = length; + for (var i = 0; i < length; i++) { + if (fromParts[i] !== toParts[i]) { + samePartsLength = i; + break; + } + } + + var outputParts = []; + for (var i = samePartsLength; i < fromParts.length; i++) { + outputParts.push('..'); + } + + outputParts = outputParts.concat(toParts.slice(samePartsLength)); + + return outputParts.join('/'); +}; + +exports.sep = '/'; +exports.delimiter = ':'; + +exports.dirname = function(path) { + var result = splitPath(path), + root = result[0], + dir = result[1]; + + if (!root && !dir) { + // No dirname whatsoever + return '.'; + } + + if (dir) { + // It has a dirname, strip trailing slash + dir = dir.substr(0, dir.length - 1); + } + + return root + dir; +}; + + +exports.basename = function(path, ext) { + var f = splitPath(path)[2]; + // TODO: make this comparison case-insensitive on windows? + if (ext && f.substr(-1 * ext.length) === ext) { + f = f.substr(0, f.length - ext.length); + } + return f; +}; + + +exports.extname = function(path) { + return splitPath(path)[3]; +}; + +function filter (xs, f) { + if (xs.filter) return xs.filter(f); + var res = []; + for (var i = 0; i < xs.length; i++) { + if (f(xs[i], i, xs)) res.push(xs[i]); + } + return res; +} + +// String.prototype.substr - negative index don't work in IE8 +var substr = 'ab'.substr(-1) === 'b' + ? function (str, start, len) { return str.substr(start, len) } + : function (str, start, len) { + if (start < 0) start = str.length + start; + return str.substr(start, len); + } +; + +}).call(this,require('_process')) +},{"_process":7}],7:[function(require,module,exports){ +// shim for using process in browser +var process = module.exports = {}; + +// cached from whatever global is present so that test runners that stub it +// don't break things. But we need to wrap it in a try catch in case it is +// wrapped in strict mode code which doesn't define any globals. It's inside a +// function because try/catches deoptimize in certain engines. + +var cachedSetTimeout; +var cachedClearTimeout; + +function defaultSetTimout() { + throw new Error('setTimeout has not been defined'); +} +function defaultClearTimeout () { + throw new Error('clearTimeout has not been defined'); +} +(function () { + try { + if (typeof setTimeout === 'function') { + cachedSetTimeout = setTimeout; + } else { + cachedSetTimeout = defaultSetTimout; + } + } catch (e) { + cachedSetTimeout = defaultSetTimout; + } + try { + if (typeof clearTimeout === 'function') { + cachedClearTimeout = clearTimeout; + } else { + cachedClearTimeout = defaultClearTimeout; + } + } catch (e) { + cachedClearTimeout = defaultClearTimeout; + } +} ()) +function runTimeout(fun) { + if (cachedSetTimeout === setTimeout) { + //normal enviroments in sane situations + return setTimeout(fun, 0); + } + // if setTimeout wasn't available but was latter defined + if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) { + cachedSetTimeout = setTimeout; + return setTimeout(fun, 0); + } + try { + // when when somebody has screwed with setTimeout but no I.E. maddness + return cachedSetTimeout(fun, 0); + } catch(e){ + try { + // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally + return cachedSetTimeout.call(null, fun, 0); + } catch(e){ + // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error + return cachedSetTimeout.call(this, fun, 0); + } + } + + +} +function runClearTimeout(marker) { + if (cachedClearTimeout === clearTimeout) { + //normal enviroments in sane situations + return clearTimeout(marker); + } + // if clearTimeout wasn't available but was latter defined + if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) { + cachedClearTimeout = clearTimeout; + return clearTimeout(marker); + } + try { + // when when somebody has screwed with setTimeout but no I.E. maddness + return cachedClearTimeout(marker); + } catch (e){ + try { + // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally + return cachedClearTimeout.call(null, marker); + } catch (e){ + // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error. + // Some versions of I.E. have different rules for clearTimeout vs setTimeout + return cachedClearTimeout.call(this, marker); + } + } + + + +} +var queue = []; +var draining = false; +var currentQueue; +var queueIndex = -1; + +function cleanUpNextTick() { + if (!draining || !currentQueue) { + return; + } + draining = false; + if (currentQueue.length) { + queue = currentQueue.concat(queue); + } else { + queueIndex = -1; + } + if (queue.length) { + drainQueue(); + } +} + +function drainQueue() { + if (draining) { + return; + } + var timeout = runTimeout(cleanUpNextTick); + draining = true; + + var len = queue.length; + while(len) { + currentQueue = queue; + queue = []; + while (++queueIndex < len) { + if (currentQueue) { + currentQueue[queueIndex].run(); + } + } + queueIndex = -1; + len = queue.length; + } + currentQueue = null; + draining = false; + runClearTimeout(timeout); +} + +process.nextTick = function (fun) { + var args = new Array(arguments.length - 1); + if (arguments.length > 1) { + for (var i = 1; i < arguments.length; i++) { + args[i - 1] = arguments[i]; + } + } + queue.push(new Item(fun, args)); + if (queue.length === 1 && !draining) { + runTimeout(drainQueue); + } +}; + +// v8 likes predictible objects +function Item(fun, array) { + this.fun = fun; + this.array = array; +} +Item.prototype.run = function () { + this.fun.apply(null, this.array); +}; +process.title = 'browser'; +process.browser = true; +process.env = {}; +process.argv = []; +process.version = ''; // empty string to avoid regexp issues +process.versions = {}; + +function noop() {} + +process.on = noop; +process.addListener = noop; +process.once = noop; +process.off = noop; +process.removeListener = noop; +process.removeAllListeners = noop; +process.emit = noop; +process.prependListener = noop; +process.prependOnceListener = noop; + +process.listeners = function (name) { return [] } + +process.binding = function (name) { + throw new Error('process.binding is not supported'); +}; + +process.cwd = function () { return '/' }; +process.chdir = function (dir) { + throw new Error('process.chdir is not supported'); +}; +process.umask = function() { return 0; }; + +},{}],8:[function(require,module,exports){ +var WebWorkerThreads = require('bindings')('WebWorkerThreads'); + +module.exports = WebWorkerThreads; + +},{"bindings":4}]},{},[3])(3) +}); \ No newline at end of file diff --git a/resources/public/full.render.js b/resources/public/full.render.js new file mode 100644 index 0000000..ced6626 --- /dev/null +++ b/resources/public/full.render.js @@ -0,0 +1,90 @@ +/* +Viz.js 2.1.2 (Graphviz 2.40.1, Expat 2.2.5, Emscripten 1.37.36) +*/ +(function(global) { +var Module = function(Module) { + Module = Module || {}; +var Module=typeof Module!=="undefined"?Module:{};var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}Module["arguments"]=[];Module["thisProgram"]="./this.program";Module["quit"]=(function(status,toThrow){throw toThrow});Module["preRun"]=[];Module["postRun"]=[];var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;if(Module["ENVIRONMENT"]){if(Module["ENVIRONMENT"]==="WEB"){ENVIRONMENT_IS_WEB=true}else if(Module["ENVIRONMENT"]==="WORKER"){ENVIRONMENT_IS_WORKER=true}else if(Module["ENVIRONMENT"]==="NODE"){ENVIRONMENT_IS_NODE=true}else if(Module["ENVIRONMENT"]==="SHELL"){ENVIRONMENT_IS_SHELL=true}else{throw new Error("Module['ENVIRONMENT'] value is not valid. must be one of: WEB|WORKER|NODE|SHELL.")}}else{ENVIRONMENT_IS_WEB=typeof window==="object";ENVIRONMENT_IS_WORKER=typeof importScripts==="function";ENVIRONMENT_IS_NODE=typeof process==="object"&&typeof require==="function"&&!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_WORKER;ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER}if(ENVIRONMENT_IS_NODE){var nodeFS;var nodePath;Module["read"]=function shell_read(filename,binary){var ret;ret=tryParseAsDataURI(filename);if(!ret){if(!nodeFS)nodeFS=require("fs");if(!nodePath)nodePath=require("path");filename=nodePath["normalize"](filename);ret=nodeFS["readFileSync"](filename)}return binary?ret:ret.toString()};Module["readBinary"]=function readBinary(filename){var ret=Module["read"](filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};if(process["argv"].length>1){Module["thisProgram"]=process["argv"][1].replace(/\\/g,"/")}Module["arguments"]=process["argv"].slice(2);if(typeof module!=="undefined"){module["exports"]=Module}process["on"]("uncaughtException",(function(ex){if(!(ex instanceof ExitStatus)){throw ex}}));process["on"]("unhandledRejection",(function(reason,p){process["exit"](1)}));Module["inspect"]=(function(){return"[Emscripten Module object]"})}else if(ENVIRONMENT_IS_SHELL){if(typeof read!="undefined"){Module["read"]=function shell_read(f){var data=tryParseAsDataURI(f);if(data){return intArrayToString(data)}return read(f)}}Module["readBinary"]=function readBinary(f){var data;data=tryParseAsDataURI(f);if(data){return data}if(typeof readbuffer==="function"){return new Uint8Array(readbuffer(f))}data=read(f,"binary");assert(typeof data==="object");return data};if(typeof scriptArgs!="undefined"){Module["arguments"]=scriptArgs}else if(typeof arguments!="undefined"){Module["arguments"]=arguments}if(typeof quit==="function"){Module["quit"]=(function(status,toThrow){quit(status)})}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){Module["read"]=function shell_read(url){try{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText}catch(err){var data=tryParseAsDataURI(url);if(data){return intArrayToString(data)}throw err}};if(ENVIRONMENT_IS_WORKER){Module["readBinary"]=function readBinary(url){try{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}catch(err){var data=tryParseAsDataURI(url);if(data){return data}throw err}}}Module["readAsync"]=function readAsync(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=function xhr_onload(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}var data=tryParseAsDataURI(url);if(data){onload(data.buffer);return}onerror()};xhr.onerror=onerror;xhr.send(null)};if(typeof arguments!="undefined"){Module["arguments"]=arguments}Module["setWindowTitle"]=(function(title){document.title=title})}Module["print"]=typeof console!=="undefined"?console.log.bind(console):typeof print!=="undefined"?print:null;Module["printErr"]=typeof printErr!=="undefined"?printErr:typeof console!=="undefined"&&console.warn.bind(console)||Module["print"];Module.print=Module["print"];Module.printErr=Module["printErr"];for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=undefined;var STACK_ALIGN=16;function staticAlloc(size){assert(!staticSealed);var ret=STATICTOP;STATICTOP=STATICTOP+size+15&-16;return ret}function dynamicAlloc(size){assert(DYNAMICTOP_PTR);var ret=HEAP32[DYNAMICTOP_PTR>>2];var end=ret+size+15&-16;HEAP32[DYNAMICTOP_PTR>>2]=end;if(end>=TOTAL_MEMORY){var success=enlargeMemory();if(!success){HEAP32[DYNAMICTOP_PTR>>2]=ret;return 0}}return ret}function alignMemory(size,factor){if(!factor)factor=STACK_ALIGN;var ret=size=Math.ceil(size/factor)*factor;return ret}function getNativeTypeSize(type){switch(type){case"i1":case"i8":return 1;case"i16":return 2;case"i32":return 4;case"i64":return 8;case"float":return 4;case"double":return 8;default:{if(type[type.length-1]==="*"){return 4}else if(type[0]==="i"){var bits=parseInt(type.substr(1));assert(bits%8===0);return bits/8}else{return 0}}}}function warnOnce(text){if(!warnOnce.shown)warnOnce.shown={};if(!warnOnce.shown[text]){warnOnce.shown[text]=1;Module.printErr(text)}}var jsCallStartIndex=1;var functionPointers=new Array(0);var funcWrappers={};function dynCall(sig,ptr,args){if(args&&args.length){return Module["dynCall_"+sig].apply(null,[ptr].concat(args))}else{return Module["dynCall_"+sig].call(null,ptr)}}var GLOBAL_BASE=8;var ABORT=0;var EXITSTATUS=0;function assert(condition,text){if(!condition){abort("Assertion failed: "+text)}}function getCFunc(ident){var func=Module["_"+ident];assert(func,"Cannot call unknown function "+ident+", make sure it is exported");return func}var JSfuncs={"stackSave":(function(){stackSave()}),"stackRestore":(function(){stackRestore()}),"arrayToC":(function(arr){var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}),"stringToC":(function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){var len=(str.length<<2)+1;ret=stackAlloc(len);stringToUTF8(str,ret,len)}return ret})};var toC={"string":JSfuncs["stringToC"],"array":JSfuncs["arrayToC"]};function ccall(ident,returnType,argTypes,args,opts){var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i>0]=value;break;case"i8":HEAP8[ptr>>0]=value;break;case"i16":HEAP16[ptr>>1]=value;break;case"i32":HEAP32[ptr>>2]=value;break;case"i64":tempI64=[value>>>0,(tempDouble=value,+Math_abs(tempDouble)>=+1?tempDouble>+0?(Math_min(+Math_floor(tempDouble/+4294967296),+4294967295)|0)>>>0:~~+Math_ceil((tempDouble- +(~~tempDouble>>>0))/+4294967296)>>>0:0)],HEAP32[ptr>>2]=tempI64[0],HEAP32[ptr+4>>2]=tempI64[1];break;case"float":HEAPF32[ptr>>2]=value;break;case"double":HEAPF64[ptr>>3]=value;break;default:abort("invalid type for setValue: "+type)}}var ALLOC_STATIC=2;var ALLOC_NONE=4;function allocate(slab,types,allocator,ptr){var zeroinit,size;if(typeof slab==="number"){zeroinit=true;size=slab}else{zeroinit=false;size=slab.length}var singleType=typeof types==="string"?types:null;var ret;if(allocator==ALLOC_NONE){ret=ptr}else{ret=[typeof _malloc==="function"?_malloc:staticAlloc,stackAlloc,staticAlloc,dynamicAlloc][allocator===undefined?ALLOC_STATIC:allocator](Math.max(size,singleType?1:types.length))}if(zeroinit){var stop;ptr=ret;assert((ret&3)==0);stop=ret+(size&~3);for(;ptr>2]=0}stop=ret+size;while(ptr>0]=0}return ret}if(singleType==="i8"){if(slab.subarray||slab.slice){HEAPU8.set(slab,ret)}else{HEAPU8.set(new Uint8Array(slab),ret)}return ret}var i=0,type,typeSize,previousType;while(i>0];hasUtf|=t;if(t==0&&!length)break;i++;if(length&&i==length)break}if(!length)length=i;var ret="";if(hasUtf<128){var MAX_CHUNK=1024;var curr;while(length>0){curr=String.fromCharCode.apply(String,HEAPU8.subarray(ptr,ptr+Math.min(length,MAX_CHUNK)));ret=ret?ret+curr:curr;ptr+=MAX_CHUNK;length-=MAX_CHUNK}return ret}return UTF8ToString(ptr)}var UTF8Decoder=typeof TextDecoder!=="undefined"?new TextDecoder("utf8"):undefined;function UTF8ArrayToString(u8Array,idx){var endPtr=idx;while(u8Array[endPtr])++endPtr;if(endPtr-idx>16&&u8Array.subarray&&UTF8Decoder){return UTF8Decoder.decode(u8Array.subarray(idx,endPtr))}else{var u0,u1,u2,u3,u4,u5;var str="";while(1){u0=u8Array[idx++];if(!u0)return str;if(!(u0&128)){str+=String.fromCharCode(u0);continue}u1=u8Array[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}u2=u8Array[idx++]&63;if((u0&240)==224){u0=(u0&15)<<12|u1<<6|u2}else{u3=u8Array[idx++]&63;if((u0&248)==240){u0=(u0&7)<<18|u1<<12|u2<<6|u3}else{u4=u8Array[idx++]&63;if((u0&252)==248){u0=(u0&3)<<24|u1<<18|u2<<12|u3<<6|u4}else{u5=u8Array[idx++]&63;u0=(u0&1)<<30|u1<<24|u2<<18|u3<<12|u4<<6|u5}}}if(u0<65536){str+=String.fromCharCode(u0)}else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}}}function UTF8ToString(ptr){return UTF8ArrayToString(HEAPU8,ptr)}function stringToUTF8Array(str,outU8Array,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127){if(outIdx>=endIdx)break;outU8Array[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;outU8Array[outIdx++]=192|u>>6;outU8Array[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;outU8Array[outIdx++]=224|u>>12;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}else if(u<=2097151){if(outIdx+3>=endIdx)break;outU8Array[outIdx++]=240|u>>18;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}else if(u<=67108863){if(outIdx+4>=endIdx)break;outU8Array[outIdx++]=248|u>>24;outU8Array[outIdx++]=128|u>>18&63;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}else{if(outIdx+5>=endIdx)break;outU8Array[outIdx++]=252|u>>30;outU8Array[outIdx++]=128|u>>24&63;outU8Array[outIdx++]=128|u>>18&63;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}}outU8Array[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127){++len}else if(u<=2047){len+=2}else if(u<=65535){len+=3}else if(u<=2097151){len+=4}else if(u<=67108863){len+=5}else{len+=6}}return len}var UTF16Decoder=typeof TextDecoder!=="undefined"?new TextDecoder("utf-16le"):undefined;function allocateUTF8(str){var size=lengthBytesUTF8(str)+1;var ret=_malloc(size);if(ret)stringToUTF8Array(str,HEAP8,ret,size);return ret}function demangle(func){return func}function demangleAll(text){var regex=/__Z[\w\d_]+/g;return text.replace(regex,(function(x){var y=demangle(x);return x===y?x:x+" ["+y+"]"}))}function jsStackTrace(){var err=new Error;if(!err.stack){try{throw new Error(0)}catch(e){err=e}if(!err.stack){return"(no stack trace available)"}}return err.stack.toString()}function stackTrace(){var js=jsStackTrace();if(Module["extraStackTrace"])js+="\n"+Module["extraStackTrace"]();return demangleAll(js)}var PAGE_SIZE=16384;var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferViews(){Module["HEAP8"]=HEAP8=new Int8Array(buffer);Module["HEAP16"]=HEAP16=new Int16Array(buffer);Module["HEAP32"]=HEAP32=new Int32Array(buffer);Module["HEAPU8"]=HEAPU8=new Uint8Array(buffer);Module["HEAPU16"]=HEAPU16=new Uint16Array(buffer);Module["HEAPU32"]=HEAPU32=new Uint32Array(buffer);Module["HEAPF32"]=HEAPF32=new Float32Array(buffer);Module["HEAPF64"]=HEAPF64=new Float64Array(buffer)}var STATIC_BASE,STATICTOP,staticSealed;var STACK_BASE,STACKTOP,STACK_MAX;var DYNAMIC_BASE,DYNAMICTOP_PTR;STATIC_BASE=STATICTOP=STACK_BASE=STACKTOP=STACK_MAX=DYNAMIC_BASE=DYNAMICTOP_PTR=0;staticSealed=false;function abortOnCannotGrowMemory(){abort("Cannot enlarge memory arrays. Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value "+TOTAL_MEMORY+", (2) compile with -s ALLOW_MEMORY_GROWTH=1 which allows increasing the size at runtime but prevents some optimizations, (3) set Module.TOTAL_MEMORY to a higher value before the program runs, or (4) if you want malloc to return NULL (0) instead of this abort, compile with -s ABORTING_MALLOC=0 ")}function enlargeMemory(){abortOnCannotGrowMemory()}var TOTAL_STACK=Module["TOTAL_STACK"]||5242880;var TOTAL_MEMORY=Module["TOTAL_MEMORY"]||16777216;if(TOTAL_MEMORY0){var callback=callbacks.shift();if(typeof callback=="function"){callback();continue}var func=callback.func;if(typeof func==="number"){if(callback.arg===undefined){Module["dynCall_v"](func)}else{Module["dynCall_vi"](func,callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=false;function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function ensureInitRuntime(){if(runtimeInitialized)return;runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){callRuntimeCallbacks(__ATEXIT__);runtimeExited=true}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i>0]=str.charCodeAt(i)}if(!dontAddNull)HEAP8[buffer>>0]=0}if(!Math["imul"]||Math["imul"](4294967295,5)!==-5)Math["imul"]=function imul(a,b){var ah=a>>>16;var al=a&65535;var bh=b>>>16;var bl=b&65535;return al*bl+(ah*bl+al*bh<<16)|0};Math.imul=Math["imul"];if(!Math["clz32"])Math["clz32"]=(function(x){x=x>>>0;for(var i=0;i<32;i++){if(x&1<<31-i)return i}return 32});Math.clz32=Math["clz32"];if(!Math["trunc"])Math["trunc"]=(function(x){return x<0?Math.ceil(x):Math.floor(x)});Math.trunc=Math["trunc"];var Math_abs=Math.abs;var Math_cos=Math.cos;var Math_sin=Math.sin;var Math_tan=Math.tan;var Math_acos=Math.acos;var Math_asin=Math.asin;var Math_atan=Math.atan;var Math_atan2=Math.atan2;var Math_exp=Math.exp;var Math_log=Math.log;var Math_sqrt=Math.sqrt;var Math_ceil=Math.ceil;var Math_floor=Math.floor;var Math_pow=Math.pow;var Math_imul=Math.imul;var Math_fround=Math.fround;var Math_round=Math.round;var Math_min=Math.min;var Math_max=Math.max;var Math_clz32=Math.clz32;var Math_trunc=Math.trunc;var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function getUniqueRunDependency(id){return id}function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module["preloadedImages"]={};Module["preloadedAudios"]={};var memoryInitializer=null;var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return String.prototype.startsWith?filename.startsWith(dataURIPrefix):filename.indexOf(dataURIPrefix)===0}var ASM_CONSTS=[(function($0,$1){var path=Pointer_stringify($0);var data=Pointer_stringify($1);FS.createPath("/",PATH.dirname(path));FS.writeFile(PATH.join("/",path),data)})];function _emscripten_asm_const_iii(code,a0,a1){return ASM_CONSTS[code](a0,a1)}STATIC_BASE=GLOBAL_BASE;STATICTOP=STATIC_BASE+194160;__ATINIT__.push();memoryInitializer="data:application/octet-stream;base64,AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/ACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAIMEAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABSQAAAAAAAAFJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFJAAAAAAAAAUkAAIMEAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABSQAAAAAAAAFJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFJAAAAAAAAAUkACEAAAAAAAAAAAAAAAABBAoC8AAAgAAAABAAAAAAAAAAIQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICWQAAAAAAAgJZABJDDAAAAAAAAAAAAAAAQQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWEAAAAAAAABYQAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABYQAAAAAAAAFhAAAAAAAAAAAAAAAAAAAAQQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUkAAAAAAAABSQAAgAwIAAAAAAAAAAAAAEEAAAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAABCQAAAAAAAAEJAAAAAAAAgg0AAAAAAAMCIQAAAAAAAAFJAAAAAAAAAUkAAAAAAAAAAAAAAAAAAAEJAAAAAAAAAQkAAAAAAACCDQAAAAAAAwIhAAAAAAAAAUkAAAAAAAABSQACwwQAAAAAAAAAAAAAAEEBANgAAkwAAAAEAAAAAAAAAQAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFJAAAAAAAAAUkAAEAACAAAAAAAAAAAAABBAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABYQAAAAAAAAFhAALDBAAAAAAAAAAAAAAAAABw6AAAQAAAAAQAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWEAAAAAAAABYQEAgPgMAAAAAAAAAAAAAEEAkOwAAegAAAAEAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFJAAAAAAAAAUkAAAAAAAAAAAAAAAAAAABBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABSQAAAAAAAAFJA////////73/////////vf////////+//////////7/8AAAAAAAD4PzMzMzMzM9M/PAAAAAAAAACamZmZmZmpPwEAAAAAAAAAAQAAAAAAAAAAAAAAAADwPwEAAAAAAAAAAgAAAAAAAAAAAAAAAADwPwIAAAAAAAAAAwAAAAAAAAAAAAAAAADgPwMAAAAAAAAABAAAAAAAAAAAAAAAAADwPwQAAAAAAAAABQAAAAAAAAAzMzMzMzPzPwUAAAAAAAAABgAAAAAAAACamZmZmZnpPwYAAAAAAAAABwAAAAAAAAAAAAAAAADwPwcAAAAAAAAACAAAAAAAAAAAAAAAAADgPwgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAMzMzMzMz078AAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAgEZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAmpmZmZmZ2b8AAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzMzMzMzPjPwAAAAAAAAAAAAAAAAEAAAAFAAAAAAAAAAAAAAAAAAAAexSuR+F65L8AAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAEAAAATAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABqQVQAAAQAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAADAAAAAAAAAAAAAAAAgGZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAgGZAmpmZmZmZ2b8AAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAFAAAAAAAAAAAAAAAAgGZAexSuR+F65L8AAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAgEZAAAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAQAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABIAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABYAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABkAAAAAAAAAAAEAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACIVQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAAAAQAAAAAAAAAAAAAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQP1ioNc07TtU/JXUCmggb2j8AAAAAAADgPwAAAAAAAOA/LNSa5h2n6j9q3nGKjuToP1ioNc07TtU/WKg1zTtO1T9YqDXNO07VPwAAAAAAAOA/XdxGA3gL4j8AAAAAAADQP1ioNc07TtU/AAAAAAAA0D/TvOMUHcnRPwAAAAAAAOA/AAAAAAAA4D8AAAAAAADgPwAAAAAAAOA/AAAAAAAA4D8AAAAAAADgPwAAAAAAAOA/AAAAAAAA4D8AAAAAAADgPwAAAAAAAOA/07zjFB3J0T/TvOMUHcnRP13cRgN4C+I/XdxGA3gL4j9d3EYDeAviPw1xrIvbaNw/ZF3cRgN47T/Sb18HzhnnPxB6Nqs+V+U/EHo2qz5X5T/Sb18HzhnnP3gLJCh+jOM/tRX7y+7J4T/Sb18HzhnnP9JvXwfOGec/WKg1zTtO1T+IhVrTvOPYP9JvXwfOGec/eAskKH6M4z/EQq1p3nHsP9JvXwfOGec/0m9fB84Z5z+1FfvL7snhP9JvXwfOGec/EHo2qz5X5T+1FfvL7snhP3gLJCh+jOM/0m9fB84Z5z/Sb18HzhnnP4Y41sVtNO4/0m9fB84Z5z/Sb18HzhnnP3gLJCh+jOM/WKg1zTtO1T/TvOMUHcnRP1ioNc07TtU/pgpGJXUC3j8AAAAAAADgP1ioNc07TtU/DXGsi9to3D8AAAAAAADgPw1xrIvbaNw/AAAAAAAA4D8NcayL22jcP1ioNc07TtU/AAAAAAAA4D8AAAAAAADgP9O84xQdydE/07zjFB3J0T8AAAAAAADgP9O84xQdydE/at5xio7k6D8AAAAAAADgPwAAAAAAAOA/AAAAAAAA4D8AAAAAAADgP1ioNc07TtU/iIVa07zj2D/TvOMUHcnRPwAAAAAAAOA/AAAAAAAA4D/Sb18HzhnnPwAAAAAAAOA/AAAAAAAA4D8NcayL22jcP/RsVn2utt4/ETY8vVKWyT/0bFZ9rrbePzsBTYQNT+E/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D9YqDXNO07VPwAAAAAAAOA/AAAAAAAA4D8+6Nms+lzFPwAAAAAAAOA/AAAAAAAA4D8AAAAAAADgPwAAAAAAAOA/gnNGlPYGxz8NcayL22jcPwAAAAAAAOA/WKg1zTtO1T9YqDXNO07VP7UV+8vuyeE/tRX7y+7J4T8AAAAAAADQPwAAAAAAAOA/AAAAAAAA4D8AAAAAAADgPwAAAAAAANA/AAAAAAAA0D8H8BZIUPzcP6K0N/jCZNY/WKg1zTtO1T8NcayL22jcPw1xrIvbaNw/AAAAAAAA4D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA0D8NcayL22jcPwAAAAAAANA/WKg1zTtO1T9YqDXNO07VP1ioNc07TtU/WKg1zTtO1T9YqDXNO07VP1ioNc07TtU/WKg1zTtO1T9YqDXNO07VPwAAAAAAANA/WKg1zTtO1T9YqDXNO07VPwAAAAAAANA/WKg1zTtO1T9YqDXNO07VP1ioNc07TtU/AAAAAAAA8D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQP8RCrWnecew/AAAAAAAA0D9/2T15WKjRPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/eAskKH6M4z/Sb18HzhnnP8RCrWnecew/E/JBz2bV0z8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/EHo2qz5X5T8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D/TvOMUHcnRPwAAAAAAANA/AAAAAAAA0D/TvOMUHcnRPwAAAAAAAOA/0m9fB84Z5z8AAAAAAADgPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8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CAAAAFxlAQAOAAAAfWUBAAgAAACGZQEAEgAAAKdlAQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAABAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAwAAAACAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAIAAAABAAAAAAAAAADAAAAIQAAAAQAAAAAAAAAAAAAAAAAAAAIAAAABAAAAAAAAAAEAAAAIgAAAAUAAAAAAAAAAAAAAAAAAAAFAAAAQAAAACBHAAAwRwAABgAAAAQAAAA8RwAABgAAAAgAAAAGAAAABAAAAERHAAAABAAACAAAAP////8AAAAAAAAAACMAAAAAAAAAAAAAAAAAAAAAAAAANQAAAAAAAAAAAAAAIAAAAAAAAAAAAAAABgAAAAAAAAAHAAAAAAAAAAAAAAAAAAAA/////wAAAAAAAAAABgAAAAAAAAAHAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAACAAAAAAAAAAHAAAAAAAAAAAAAAAAAAAA/////wAAAAAAAAAACAAAAAAAAAAHAAAAAAAAAAAAAAAAAAAAHAAAAAAAAAAAAAAACQAAAAAAAAAHAAAAAAAAAAkAAAALAAAACAAAAAoAAADISAAATEgAALBIAAABAAAAAQAAAAoAAAAWAAAACwAAAFgAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAANAAAAAAAAAAcAAAAAAAAABwAAAAIAAAAFAAAACAAAAAAAAAAAAAAABgAAAAMAAAAOAAAACwAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAA8AAAAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJQAAABAAAAAAAAAABwAAAAAAAAAIAAAACAAAAAAAAAAAAAAAJgAAAAAAAAAAAAAAAAAAAAAAAAAQAAAA/////wAAAAAAAAAAJwAAAAAAAAAAAAAABwAAAAAAAAABAAAAAAAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAgAAAAMAAAABAAAAAQAAAAIAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAACAAAAAQAAAAQAAAAFAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAABgAAAAEAAAABAAAABwAAAAgAAAAJAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAEAAAABAAAACwAAAAEAAAAMAAAAAQAAAA0AAAAOAAAADwAAABAAAAARAAAAEgAAABMAAAAUAAAAFQAAABYAAAATAAAAEwAAABMAAAATAAAAFwAAABgAAAAZAAAAEwAAABoAAAAbAAAAHAAAAB0AAAATAAAAEwAAABMAAAATAAAAEwAAAAEAAAAeAAAAAQAAAAEAAAATAAAAAQAAAB8AAAAgAAAAIQAAACIAAAAjAAAAEwAAACQAAAAlAAAAJgAAABMAAAATAAAAEwAAABMAAAAnAAAAKAAAACkAAAATAAAAKgAAACsAAAAsAAAALQAAABMAAAATAAAAEwAAABMAAAATAAAAAQAAAAEAAAABAAAAAQAAAAEAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAAC4AAAATAAAAEwAAABMAAAAvAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAAwAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAA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R74BAANO+/u0rv8AU74BAJI147PN4/8AX74BAE0p68zrxf8Aa74BAMob5N7L5P8Ad74BABhY/v7Zpv8Ag74BAANO+/u0rv8Aj74BAJI147PN4/8Am74BAE0p68zrxf8Ap74BAMob5N7L5P8As74BABhY/v7Zpv8Av74BACoy////zP8Ay74BAANO+/u0rv8A174BAJI147PN4/8A474BAE0p68zrxf8A774BAMob5N7L5P8A+74BABhY/v7Zpv8AB78BACoy////zP8AE78BABws5eXYvf8AH78BAANO+/u0rv8AK78BAJI147PN4/8AN78BAE0p68zrxf8AQ78BAMob5N7L5P8AT78BABhY/v7Zpv8AW78BACoy////zP8AZ78BABws5eXYvf8Ac78BAOkj/f3a7P8Af78BAANO+/u0rv8Ai78BAJI147PN4/8Al78BAE0p68zrxf8Ao78BAMob5N7L5P8Ar78BABhY/v7Zpv8Au78BACoy////zP8Ax78BABws5eXYvf8A078BAOkj/f3a7P8A378BAAAA8vLy8v8A678BAGw14rPizf8A978BABFR/f3NrP8AA8ABAJsf6MvV6P8AD8ABAGw14rPizf8AG8ABABFR/f3NrP8AJ8ABAJsf6MvV6P8AM8ABAOQr9PTK5P8AP8ABAGw14rPizf8AS8ABABFR/f3NrP8AV8ABAJsf6MvV6P8AY8ABAOQr9PTK5P8Ab8ABADgt9eb1yf8Ae8ABAGw14rPizf8Ah8ABABFR/f3NrP8Ak8ABAJsf6MvV6P8An8ABAOQr9PTK5P8Aq8ABADgt9eb1yf8At8ABACNR///yrv8Aw8ABAGw14rPizf8Az8ABABFR/f3NrP8A28ABAJsf6MvV6P8A58ABAOQr9PTK5P8A88ABADgt9eb1yf8A/8ABACNR///yrv8AC8EBABkn8fHizP8AF8EBAGw14rPizf8AI8EBABFR/f3NrP8AL8EBAJsf6MvV6P8AO8EBAOQr9PTK5P8AR8EBADgt9eb1yf8AU8EBACNR///yrv8AX8EBABkn8fHizP8Aa8EBAAAAzMzMzP8Ad8EBAOb9jo4BUv8AgcEBAE2/ZCdkGf8AjMEBAObcxcUbff8AlsEBAOh23t53rv8AoMEBAOU+8fG22v8AqsEBAOkd/f3g7/8AtMEBADsm9eb10P8A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it4BADqb2KbYVP8Ak94BACLQ///ZL/8AnN4BABla5eXElP8Apd4BAHJ4wmbCpf8Art4BAAub/PyNYv8At94BAJxNy42gy/8AwN4BAORm5+eKw/8Ayd4BADqb2KbYVP8A0t4BACLQ///ZL/8A294BABla5eXElP8A5N4BAAAAs7Ozs/8A7d4BAHhU043Tx/8A994BANNSvbyAvf8AAt8BACpM////s/8ADN8BAK8l2r662v8AFt8BAASL+/uAcv8AIN8BAJBk04Cx0/8AKt8BABac/f20Yv8ANN8BADqG3rPeaf8APt8BAOkv/PzN5f8ASN8BAAAA2dnZ2f8AUt8BAHhU043Tx/8AXN8BANNSvbyAvf8AZ98BAE0p68zrxf8Act8BACpM////s/8AfN8BAK8l2r662v8Aht8BAASL+/uAcv8AkN8BAJBk04Cx0/8Amt8BABac/f20Yv8ApN8BADqG3rPeaf8Art8BAOkv/PzN5f8AuN8BAAAA2dnZ2f8Awt8BAHhU043Tx/8AzN8BANNSvbyAvf8A198BAE0p68zrxf8A4t8BACWQ///tb/8A7d8BACpM////s/8A998BAK8l2r662v8AAeABAASL+/uAcv8AC+ABAJBk04Cx0/8AFeABABac/f20Yv8AH+ABADqG3rPeaf8AKeABAOkv/PzN5f8AM+ABAAAA2dnZ2f8APeABAHhU043Tx/8ARuABACpM////s/8AT+ABAK8l2r662v8AWOABAHhU043Tx/8AYeABACpM////s/8AauABAK8l2r662v8Ac+ABAASL+/uAcv8AfOABAHhU043Tx/8AheABACpM////s/8AjuABAK8l2r662v8Al+ABAASL+/uAcv8AoOABAJBk04Cx0/8AqeABAHhU043Tx/8AsuABACpM////s/8Au+ABAK8l2r662v8AxOABAASL+/uAcv8AzeABAJBk04Cx0/8A1uABABac/f20Yv8A3+ABAHhU043Tx/8A6OABACpM////s/8A8eABAK8l2r662v8A+uABAASL+/uAcv8AA+EBAJBk04Cx0/8ADOEBABac/f20Yv8AFeEBADqG3rPeaf8AHuEBAHhU043Tx/8AJ+EBACpM////s/8AMOEBAK8l2r662v8AOeEBAASL+/uAcv8AQuEBAJBk04Cx0/8AS+EBABac/f20Yv8AVOEBADqG3rPeaf8AXeEBAOkv/PzN5f8AZuEBAHhU043Tx/8Ab+EBACpM////s/8AeOEBAK8l2r662v8AgeEBAASL+/uAcv8AiuEBAJBk04Cx0/8Ak+EBABac/f20Yv8AnOEBADqG3rPeaf8ApeEBAOkv/PzN5f8AruEBAAAA2dnZ2f8At+EBAO39np4BQv8AxeEBALGCol5Pov8A1OEBAPq01dU+T/8A4uEBAAq49PRtQ/8A8OEBABSd/f2uYf8A/uEBAB9z/v7gi/8ADOIBADFg9eb1mP8AGuIBAE9B3avdpP8AKOIBAHJ4wmbCpf8ANuIBAI+7vTKIvf8AROIBAO39np4BQv8AUuIBAI+7vTKIvf8AYeIBALGCol5Pov8AcOIBAPq01dU+T/8AfuIBAAq49PRtQ/8AjOIBABSd/f2uYf8AmuIBAB9z/v7gi/8AqOIBACpA////v/8AtuIBADFg9eb1mP8AxOIBAE9B3avdpP8A0uIBAHJ4wmbCpf8A4OIBAA2k/PyNWf8A7eIBACpA////v/8A+uIBAFFN1ZnVlP8AB+MBAP7h19cZHP8AFOMBABSd/f2uYf8AIeMBAE9B3avdpP8ALuMBAI/EuiuDuv8AO+MBAP7h19cZHP8ASOMBABSd/f2uYf8AVeMBACpA////v/8AYuMBAE9B3avdpP8Ab+MBAI/EuiuDuv8AfOMBAPq01dU+T/8AieMBAA2k/PyNWf8AluMBAB9z/v7gi/8Ao+MBADFg9eb1mP8AsOMBAFFN1ZnVlP8AveMBAI+7vTKIvf8AyuMBAPq01dU+T/8A1+MBAA2k/PyNWf8A5OMBAB9z/v7gi/8A8eMBACpA////v/8A/uMBADFg9eb1mP8AC+QBAFFN1ZnVlP8AGOQBAI+7vTKIvf8AJeQBAPq01dU+T/8AMuQBAAq49PRtQ/8AP+QBABSd/f2uYf8ATOQBAB9z/v7gi/8AWeQBADFg9eb1mP8AZuQBAE9B3avdpP8Ac+QBAHJ4wmbCpf8AgOQBAI+7vTKIvf8AjeQBAPq01dU+T/8AmuQBAAq49PRtQ/8Ap+QBABSd/f2uYf8AtOQBAB9z/v7gi/8AweQBACpA////v/8AzuQBADFg9eb1mP8A2+QBAE9B3avdpP8A6OQBAHJ4wmbCpf8A9eQBAI+7vTKIvf8AAuUBAJMP//D4//8AEeUBABgj+vrr1/8AI+UBAH///wD///8ALeUBAHGA/3//1P8APeUBAH8P//D///8ASOUBACoa9fX13P8AU+UBABc6///kxP8AX+UBAAAAAAAAAP8AauUBABkx///rzf8AfuUBAKr//wAA//8AiOUBAMDO4oor4v8AmOUBAAC+paUqKv8Ao+UBABdj3t64h/8AsuUBAIBnoF+eoP8AweUBAD///3//AP8A0eUBABHa0tJpHv8A4OUBAAuv//9/UP8A6+UBAJqT7WSV7f8A/+UBACEi///43P8ADeYBAPbn3NwUPP8AGuYBAH///wD///8AJOYBAKr/iwAAi/8AMuYBAH//iwCLi/8AQOYBAB7vuLiGC/8AU+YBAAAAqampqf8AYeYBAFX/ZABkAP8AcOYBAAAAqampqf8AfuYBACduvb23a/8AjeYBANT/i4sAi/8AnuYBADqOa1VrL/8AsuYBABf///+MAP8AwuYBAMbAzJkyzP8A0uYBAAD/i4sAAP8A3+YBAAp56emWev8A7+YBAFU9vI+8j/8AAecBAK+Pi0g9i/8AFOcBAH9nTy9PT/8AJ+cBAH9nTy9PT/8AOucBAID/0QDO0f8ATecBAMf/05QA0/8AXecBAOjr//8Uk/8Aa+cBAIr//wC///8AfOcBAAAAaWlpaf8AiecBAAAAaWlpaf8AlucBAJTh/x6Q//8ApucBAADOsrIiIv8AtecBABwP///68P8AxucBAFXAiyKLIv8A1+cBANT///8A//8A5OcBAAAA3Nzc3P8A8+cBAKoH//j4//8AA+gBACP////XAP8ADegBAB7Z2tqlIP8AHOgBAAAAgICAgP8AJugBAFX/gACAAP8AMegBADvQ/63/L/8AQugBAAAAgICAgP8ATOgBAFUP//D/8P8AWugBAOmW//9ptP8AZ+gBAACMzc1cXP8AdugBAML/gksAgv8AgugBACoP////8P8AjegBACZq8PDmjP8AmOgBAKoU+ubm+v8ApugBAPAP///w9f8AuegBAED//Hz8AP8AyOgBACYx///6zf8A2ugBAIk/5q3Y5v8A6egBAAB38PCAgP8A+egBAH8f/+D///8ACOkBACoo+vr60v8AIukBAAAA09PT0/8AMekBAFVk7pDukP8AQekBAAAA09PT0/8AUOkBAPhJ//+2wf8AX+kBAAyE//+gev8A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VAACAOqR//9utP8AXQACAOuN7u5qp/8AZgACAOyHzc1gkP8AbwACAOqUi4s6Yv8AeAACAACMzc1cXP8AggACAACU//9qav8AjQACAACU7u5jY/8AmAACAACVzc1VVf8AowACAACUi4s6Ov8ArgACAML/gksAgv8AtQACACoA/////gAAuwACACoP////8P8AwQACACoP////8P8AyAACACoP7u7u4P8AzwACACoOzc3Nwf8A1gACACoOi4uLg/8A3QACACZq8PDmjP8A4wACACdw///2j/8A6gACACdw7u7mhf8A8QACACdvzc3Gc/8A+AACACdvi4uGTv8A/wACAKoU+ubm+v8ACAECAPAP///w9f8AFgECAPAP///w9f8AJQECAO8P7u7g5f8ANAECAPAOzc3Bxf8AQwECAO8Oi4uDhv8AUgECAED//Hz8AP8AXAECACYx///6zf8AaQECACYx///6zf8AdwECACUy7u7pv/8AhQECACYxzc3Jpf8AkwECACcxi4uJcP8AoQECAIk/5q3Y5v8AqwECAIpA/7/v//8AtgECAIpA7rLf7v8AwQECAIo/zZrAzf8AzAECAIlAi2iDi/8A1wECAAB38PCAgP8A4gECAH8f/+D///8A7AECAH8f/+D///8A9wECAH8f7tHu7v8AAgICAH8fzbTNzf8ADQICAH8fi3qLi/8AGAICACNz7u7dgv8AJwICACN0///si/8ANwICACNz7u7cgv8ARwICACNzzc2+cP8AVwICACNzi4uBTP8AZwICACoo+vr60v8AfAICAAAA09PT0/8AhgICAAAA09PT0/8AkAICAPhJ//+2wf8AmgICAPlR//+uuf8ApQICAPhR7u6irf8AsAICAPlQzc2Mlf8AuwICAPlQi4tfZf8AxgICAAyE//+gev8A0gICAAyE//+gev8A3wICAAuE7u6Vcv8A7AICAAyFzc2BYv8A+QICAAyFi4tXQv8ABgMCAH3RsiCyqv8AFAMCAI91+ofO+v8AIQMCAI9P/7Di//8ALwMCAI9P7qTT7v8APQMCAI5PzY22zf8ASwMCAI9Oi2B7i/8AWQMCAK+P/4Rw//8AaAMCAJQ4mXeImf8AdwMCAJQ4mXeImf8AhgMCAJc03rDE3v8AlQMCAJc1/8rh//8ApQMCAJc17rzS7v8AtQMCAJc1zaK1zf8A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HBwcHBwcFhwcHBwcHBwcHBwWHBocHBYcHBwcHBYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWHBYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYcFhYWFhYWFhYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////////////////////////////////////////AAAAAAAAAAT+//+H/v//BwAAAAAAAAAA//9/////f//////////zf/79//////9///////////8P4P////8x/P///wAAAAAAAAD//////////////wEA+AMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEDX///7/////39/VP3/DwD+3////////////t//////AwD///////+fGf///88/AwAAAAAAAP7///9/Av7///9/AAAAAAAAAAAA////BwcAAAAAAP7//wf+BwAAAAD+//////////98/38vAGAAAADg////////IwAAAP8DAAAA4J/5///9xQMAAACwAwADAOCH+f///W0DAAAAXgAAHADgr/v///3tIwAAAAABAAAA4J/5///9zSMAAACwAwAAAODHPdYYx78DAAAAAAAAAADg3/3///3vAwAAAAADAAAA4N/9///97wMAAABAAwAAAODf/f///f8DAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAA/v////9/DQA/AAAAAAAAAJYl8P6ubA0gHwAAAAAAAAAAAAAAAAAAAP/+////AwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/////z8A/////38A7doHAAAAAFABUDGCq2IsAAAAAEAAyYD1BwAAAAAIAQL/////////////////////////D///////////////A///Pz//////Pz//qv///z/////////fX9wfzw//H9wfAAAAAEBMAAAAAAAAAAAAAAcAAAAAAAAAAAAAAAAAAACAAAAA/gMAAP7///////////8fAP7/////////////B+D/////HwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//////////////////////////8/AAAAAAAAAAAAAAD//////////////////////////w8AAAAAAAAAAAAAAAAAAAAAYP8H/v//h/7//wcAAAAAAACAAP//f////3//////AAAAAAAAAP//////////////AQD4AwADAAAAAAD//////////z8AAAADAAAAwNf///v/////f39U/f8PAP7f///////////+3/////97AP///////58Z////zz8DAAAAAAAA/v///38C/v///38A/v/7//+7FgD///8HBwAAAAAA/v//B///BwD/A////////////3z/f+///z3/A+7////////z/z8e/8//AADun/n///3F0585gLDP/wMA5If5///9bdOHOQBewP8fAO6v+////e3zvzsAAMH/AADun/n///3N8485wLDD/wAA7Mc91hjHv8PHPYAAgP8AAO7f/f///e/D3z1gAMP/AADs3/3///3vw989YEDD/wAA7N/9///9/8PPPYAAw/8AAAAAAAAAAAAAAAAAAAAAAAD+/////3//B/9//wMAAAAAliXw/q5s/ztfP/8DAAAAAAAAAAP/A6DC//7///8D/v/fD7/+/z/+AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/HwIAAACgAAAA/v8+AP7///////////8fZv7/////////////dxkAAAAaAAAAGwAAABwAAAAdAAAAHgAAAB8AAAAoAAAAKQAAACAAAAAqAAAADAAAABkAAAAhAAAABgAAAAcAAAABAAAAAQAAAAAAAAAAAAAAABUKAAAVAAAAAAAAAAAAAAAAAAAAAAAAFRAMExweAw0fICEiIxsaERkZGRkZGRkZGRkWEgIOCw8cGBgYGBgYFhYWFhYWFhYWFhYWFhYWFhYWFhYUHAQcFhwYGBgYGBgWFhYWFhYWFhYWFhYWFhYWFhYWFhwkHBwcCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBgYGBgYGBgYGBgYGBgYGBgcHBwcHAAAAAAAAAAAAAQErAAAALAAAAC0AAAAuAAAALwAAAC0AAAAwAAAAMQAAADIAAAAZAAAAGgAAABsAAAAcAAAAHQAAAB4AAAAfAAAA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AGd2cmVuZGVyX2NvcmVfbXAuYwBtcF9yZXNvbHZlX2NvbG9yACVkICVkICVkICVkICVkICVkICUuMWYgJS40ZiAlZCAlLjFmICUuMWYgJWQgJWQgJXNcMDAxCgAjIGVuZCBvZiBGSUcgZmlsZQoAI0ZJRyAzLjIKACMgR2VuZXJhdGVkIGJ5ICVzIHZlcnNpb24gJXMgKCVzKQoAIyBUaXRsZTogJXMKACMgUGFnZXM6ICVkCgBQb3J0cmFpdAoAQ2VudGVyCgBJbmNoZXMKAExldHRlcgoAMTAwLjAwCgBTaW5nbGUKAC0yCgAxMjAwACAyCgBtcABtcDptcAAgXSAgJWQgdHJ1ZSAlcwoAIF0gICVkIGZhbHNlICVzCgAgc2V0bGluZXdpZHRoCgAlcyAAc2V0aHNiACUuNWcgJS41ZyAlLjVnICVzY29sb3IKACUgAG5ld3BhdGggACBtb3ZldG8KACBsaW5ldG8KAHN0cm9rZQoAIGN1cnZldG8KAGNsb3NlcGF0aCBmaWxsCgBjbG9zZXBhdGggc3Ryb2tlCgAgZWxsaXBzZV9wYXRoIGZpbGwKACBlbGxpcHNlX3BhdGggc3Ryb2tlCgAgLyVzIHNldF9mb250CgAgbW92ZXRvIAAgJXMgYWxpZ25lZHRleHQKAFsgL1JlY3QgWyAAIF0KACAgL0JvcmRlciBbIDAgMCAwIF0KICAvQWN0aW9uIDw8IC9TdWJ0eXBlIC9VUkkgL1VSSSAlcyA+PgogIC9TdWJ0eXBlIC9MaW5rCi9BTk4gcGRmbWFyawoAZ3NhdmUKACUlICVzCgAwIDAgMCBlZGdlY29sb3IKAGVuZHBhZ2UKc2hvd3BhZ2UKZ3Jlc3RvcmUKACUlUGFnZVRyYWlsZXIKACUlJSVFbmRQYWdlOiAlZAoAJSUlJVBhZ2U6ICVkICVkCgAlJSUlUGFnZUJvdW5kaW5nQm94OiAlZCAlZCAlZCAlZAoATGFuZHNjYXBlAFBvcnRyYWl0ACUlJSVQYWdlT3JpZW50YXRpb246ICVzCgA8PCAvUGFnZVNpemUgWyVkICVkXSA+PiBzZXRwYWdlZGV2aWNlCgAlZCAlZCAlZCBiZWdpbnBhZ2UKAGdzYXZlCiVkICVkICVkICVkIGJveHByaW0gY2xpcCBuZXdwYXRoCgAlZyAlZyBzZXRfc2NhbGUgJWQgcm90YXRlICVnICVnIHRyYW5zbGF0ZQoAY2FudmFzIHNpemUgKCVkLCVkKSBleGNlZWRzIFBERiBsaW1pdCAoJWQpCgkoc3VnZ2VzdCBzZXR0aW5nIGEgYm91bmRpbmcgYm94IHNpemUsIHNlZSBkb3QoMSkpCgBbIC9Dcm9wQm94IFslZCAlZCAlZCAlZF0gL1BBR0VTIHBkZm1hcmsKACVkICVkIHNldGxheWVyCgAlJSUlVGl0bGU6ICVzCgAlJVBhZ2VzOiAoYXRlbmQpCgAlJVBhZ2VzOiAxCgAlJUJvdW5kaW5nQm94OiAoYXRlbmQpCgAlJSUlQm91bmRpbmdCb3g6ICVkICVkICVkICVkCgAlJUVuZENvbW1lbnRzCnNhdmUKAHNldHVwTGF0aW4xCgBbIHtDYXRhbG9nfSA8PCAvVVJJIDw8IC9CYXNlICVzID4+ID4+Ci9QVVQgcGRmbWFyawoAJSVCZWdpblByb2xvZwAvRG90RGljdCAyMDAgZGljdCBkZWYARG90RGljdCBiZWdpbgAvc2V0dXBMYXRpbjEgewBtYXJrAC9FbmNvZGluZ1ZlY3RvciAyNTYgYXJyYXkgZGVmACBFbmNvZGluZ1ZlY3RvciAwAElTT0xhdGluMUVuY29kaW5nIDAgMjU1IGdldGludGVydmFsIHB1dGludGVydmFsAEVuY29kaW5nVmVjdG9yIDQ1IC9oeXBoZW4gcHV0ACUgU2V0IHVwIElTTyBMYXRpbiAxIGNoYXJhY3RlciBlbmNvZGluZwAvc3Rhcm5ldElTTyB7ACAgICAgICAgZHVwIGR1cCBmaW5kZm9udCBkdXAgbGVuZ3RoIGRpY3QgYmVnaW4AICAgICAgICB7IDEgaW5kZXggL0ZJRCBuZSB7IGRlZiB9eyBwb3AgcG9wIH0gaWZlbHNlACAgICAgICAgfSBmb3JhbGwAICAgICAgICAvRW5jb2RpbmcgRW5jb2RpbmdWZWN0b3IgZGVmACAgICAgICAgY3VycmVudGRpY3QgZW5kIGRlZmluZWZvbnQAfSBkZWYAL1RpbWVzLVJvbWFuIHN0YXJuZXRJU08gZGVmAC9UaW1lcy1JdGFsaWMgc3Rhcm5ldElTTyBkZWYAL1RpbWVzLUJvbGQgc3Rhcm5ldElTTyBkZWYAL1RpbWVzLUJvbGRJdGFsaWMgc3Rhcm5ldElTTyBkZWYAL0hlbHZldGljYSBzdGFybmV0SVNPIGRlZgAvSGVsdmV0aWNhLU9ibGlxdWUgc3Rhcm5ldElTTyBkZWYAL0hlbHZldGljYS1Cb2xkIHN0YXJuZXRJU08gZGVmAC9IZWx2ZXRpY2EtQm9sZE9ibGlxdWUgc3Rhcm5ldElTTyBkZWYAL0NvdXJpZXIgc3Rhcm5ldElTTyBkZWYAL0NvdXJpZXItT2JsaXF1ZSBzdGFybmV0SVNPIGRlZgAvQ291cmllci1Cb2xkIHN0YXJuZXRJU08gZGVmAC9Db3VyaWVyLUJvbGRPYmxpcXVlIHN0YXJuZXRJU08gZGVmAGNsZWFydG9tYXJrAH0gYmluZCBkZWYAJSVCZWdpblJlc291cmNlOiBwcm9jc2V0IGdyYXBodml6IDAgMAAvY29vcmQtZm9udC1mYW1pbHkgL1RpbWVzLVJvbWFuIGRlZgAvZGVmYXVsdC1mb250LWZhbWlseSAvVGltZXMtUm9tYW4gZGVmAC9jb29yZGZvbnQgY29vcmQtZm9udC1mYW1pbHkgZmluZGZvbnQgOCBzY2FsZWZvbnQgZGVmAC9JbnZTY2FsZUZhY3RvciAxLjAgZGVmAC9zZXRfc2NhbGUgewAgICAgICAgZHVwIDEgZXhjaCBkaXYgL0ludlNjYWxlRmFjdG9yIGV4Y2ggZGVmACAgICAgICBzY2FsZQAlIHN0eWxlcwAvc29saWQgeyBbXSAwIHNldGRhc2ggfSBiaW5kIGRlZgAvZGFzaGVkIHsgWzkgSW52U2NhbGVGYWN0b3IgbXVsIGR1cCBdIDAgc2V0ZGFzaCB9IGJpbmQgZGVmAC9kb3R0ZWQgeyBbMSBJbnZTY2FsZUZhY3RvciBtdWwgNiBJbnZTY2FsZUZhY3RvciBtdWxdIDAgc2V0ZGFzaCB9IGJpbmQgZGVmAC9pbnZpcyB7L2ZpbGwge25ld3BhdGh9IGRlZiAvc3Ryb2tlIHtuZXdwYXRofSBkZWYgL3Nob3cge3BvcCBuZXdwYXRofSBkZWZ9IGJpbmQgZGVmAC9ib2xkIHsgMiBzZXRsaW5ld2lkdGggfSBiaW5kIGRlZgAvZmlsbGVkIHsgfSBiaW5kIGRlZgAvdW5maWxsZWQgeyB9IGJpbmQgZGVmAC9yb3VuZGVkIHsgfSBiaW5kIGRlZgAvZGlhZ29uYWxzIHsgfSBiaW5kIGRlZgAvdGFwZXJlZCB7IH0gYmluZCBkZWYAJSBob29rcyBmb3Igc2V0dGluZyBjb2xvciAAL25vZGVjb2xvciB7IHNldGhzYmNvbG9yIH0gYmluZCBkZWYAL2VkZ2Vjb2xvciB7IHNldGhzYmNvbG9yIH0gYmluZCBkZWYAL2dyYXBoY29sb3IgeyBzZXRoc2Jjb2xvciB9IGJpbmQgZGVmAC9ub3Bjb2xvciB7cG9wIHBvcCBwb3B9IGJpbmQgZGVmAC9iZWdpbnBhZ2UgewklIGkgaiBucGFnZXMACS9ucGFnZXMgZXhjaCBkZWYACS9qIGV4Y2ggZGVmAAkvaSBleGNoIGRlZgAJL3N0ciAxMCBzdHJpbmcgZGVmAAlucGFnZXMgMSBndCB7AAkJZ3NhdmUACQkJY29vcmRmb250IHNldGZvbnQACQkJMCAwIG1vdmV0bwAJCQkoXCgpIHNob3cgaSBzdHIgY3ZzIHNob3cgKCwpIHNob3cgaiBzdHIgY3ZzIHNob3cgKFwpKSBzaG93AAkJZ3Jlc3RvcmUACX0gaWYAL3NldF9mb250IHsACWZpbmRmb250IGV4Y2gACXNjYWxlZm9udCBzZXRmb250ACUgZHJhdyB0ZXh0IGZpdHRlZCB0byBpdHMgZXhwZWN0ZWQgd2lkdGgAL2FsaWduZWR0ZXh0IHsJCQklIHdpZHRoIHRleHQACS90ZXh0IGV4Y2ggZGVmAAkvd2lkdGggZXhjaCBkZWYACWdzYXZlAAkJd2lkdGggMCBndCB7AAkJCVtdIDAgc2V0ZGFzaAAJCQl0ZXh0IHN0cmluZ3dpZHRoIHBvcCB3aWR0aCBleGNoIHN1YiB0ZXh0IGxlbmd0aCBkaXYgMCB0ZXh0IGFzaG93AAkJfSBpZgAJZ3Jlc3RvcmUAL2JveHByaW0gewkJCQklIHhjb3JuZXIgeWNvcm5lciB4c2l6ZSB5c2l6ZQAJCTQgMiByb2xsAAkJbW92ZXRvAAkJMiBjb3B5AAkJZXhjaCAwIHJsaW5ldG8ACQkwIGV4Y2ggcmxpbmV0bwAJCXBvcCBuZWcgMCBybGluZXRvAAkJY2xvc2VwYXRoAC9lbGxpcHNlX3BhdGggewAJL3J5IGV4Y2ggZGVmAAkvcnggZXhjaCBkZWYACS95IGV4Y2ggZGVmAAkveCBleGNoIGRlZgAJbWF0cml4IGN1cnJlbnRtYXRyaXgACW5ld3BhdGgACXggeSB0cmFuc2xhdGUACXJ4IHJ5IHNjYWxlAAkwIDAgMSAwIDM2MCBhcmMACXNldG1hdHJpeAAvZW5kcGFnZSB7IHNob3dwYWdlIH0gYmluZCBkZWYAL3Nob3dwYWdlIHsgfSBkZWYAL2xheWVyY29sb3JzZXEACVsJJSBsYXllciBjb2xvciBzZXF1ZW5jZSAtIGRhcmtlc3QgdG8gbGlnaHRlc3QACQlbMCAwIDBdAAkJWy4yIC44IC44XQAJCVsuNCAuOCAuOF0ACQlbLjYgLjggLjhdAAkJWy44IC44IC44XQAJXQBkZWYAL2xheWVybGVuIGxheWVyY29sb3JzZXEgbGVuZ3RoIGRlZgAvc2V0bGF5ZXIgey9tYXhsYXllciBleGNoIGRlZiAvY3VybGF5ZXIgZXhjaCBkZWYACWxheWVyY29sb3JzZXEgY3VybGF5ZXIgMSBzdWIgbGF5ZXJsZW4gbW9kIGdldAAJYWxvYWQgcG9wIHNldGhzYmNvbG9yAAkvbm9kZWNvbG9yIHtub3Bjb2xvcn0gZGVmAAkvZWRnZWNvbG9yIHtub3Bjb2xvcn0gZGVmAAkvZ3JhcGhjb2xvciB7bm9wY29sb3J9IGRlZgAvb25sYXllciB7IGN1cmxheWVyIG5lIHtpbnZpc30gaWYgfSBkZWYAL29ubGF5ZXJzIHsACS9teXVwcGVyIGV4Y2ggZGVmAAkvbXlsb3dlciBleGNoIGRlZgAJY3VybGF5ZXIgbXlsb3dlciBsdAAJY3VybGF5ZXIgbXl1cHBlciBndAAJb3IACXtpbnZpc30gaWYAL2N1cmxheWVyIDAgZGVmACUlRW5kUmVzb3VyY2UAJSVFbmRQcm9sb2cAJSVCZWdpblNldHVwADE0IGRlZmF1bHQtZm9udC1mYW1pbHkgc2V0X2ZvbnQAJSAvYXJyb3dsZW5ndGggMTAgZGVmACUgL2Fycm93d2lkdGggNSBkZWYAJSBtYWtlIHN1cmUgcGRmbWFyayBpcyBoYXJtbGVzcyBmb3IgUFMtaW50ZXJwcmV0ZXJzIG90aGVyIHRoYW4gRGlzdGlsbGVyAC9wZGZtYXJrIHdoZXJlIHtwb3B9IHt1c2VyZGljdCAvcGRmbWFyayAvY2xlYXJ0b21hcmsgbG9hZCBwdXR9IGlmZWxzZQAlIG1ha2UgJzw8JyBhbmQgJz4+JyBzYWZlIG9uIFBTIExldmVsIDEgZGV2aWNlcwAvbGFuZ3VhZ2VsZXZlbCB3aGVyZSB7cG9wIGxhbmd1YWdlbGV2ZWx9ezF9IGlmZWxzZQAyIGx0IHsAICAgIHVzZXJkaWN0ICg8PCkgY3ZuIChbKSBjdm4gbG9hZCBwdXQAICAgIHVzZXJkaWN0ICg+PikgY3ZuIChbKSBjdm4gbG9hZCBwdXQAfSBpZgAlJUVuZFNldHVwACUlVHJhaWxlcgoAJSUlJVBhZ2VzOiAlZAoAZW5kCnJlc3RvcmUKACUlRU9GCgAlIVBTLUFkb2JlLTMuMAAgRVBTRi0zLjAKACUlJSVDcmVhdG9yOiAlcyB2ZXJzaW9uICVzICglcykKAHBzMjpwcwA8IS0tIAA8cG9seWxpbmUAIHBvaW50cz0iACIvPgoAIGZpbGw9IgB1cmwoI2xfJWQpAHVybCgjcl8lZCkAIiBmaWxsLW9wYWNpdHk9IiVmACIgc3Ryb2tlPSIAIiBzdHJva2Utd2lkdGg9IgAiIHN0cm9rZS1kYXNoYXJyYXk9IiVzADUsMgAxLDUAIiBzdHJva2Utb3BhY2l0eT0iJWYAZ3ZyZW5kZXJfY29yZV9zdmcuYwBzdmdfcHJpbnRfY29sb3IAPHBhdGgAIGlkPSIAX3AiIAAgZD0iACVjADxkZWZzPgo8cmFkaWFsR3JhZGllbnQgaWQ9InJfJWQiIGN4PSI1MCUlIiBjeT0iNTAlJSIgcj0iNzUlJSIgZng9IiVkJSUiIGZ5PSIlZCUlIj4KADxzdG9wIG9mZnNldD0iMCIgc3R5bGU9InN0b3AtY29sb3I6ADtzdG9wLW9wYWNpdHk6ADEuADsiLz4KADxzdG9wIG9mZnNldD0iMSIgc3R5bGU9InN0b3AtY29sb3I6ADsiLz4KPC9yYWRpYWxHcmFkaWVudD4KPC9kZWZzPgoAPGRlZnM+CjxsaW5lYXJHcmFkaWVudCBpZD0ibF8lZCIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIAB4MT0iACIgeTE9IgAiIHgyPSIAIiB5Mj0iACIgPgoAPHN0b3Agb2Zmc2V0PSIlLjAzZiIgc3R5bGU9InN0b3AtY29sb3I6ADsiLz4KPC9saW5lYXJHcmFkaWVudD4KPC9kZWZzPgoAPHBvbHlnb24APGVsbGlwc2UAIGN4PSIAIiBjeT0iACIgcng9IgAiIHJ5PSIAPHRleHQAIHRleHQtYW5jaG9yPSJzdGFydCIAIHRleHQtYW5jaG9yPSJlbmQiACB0ZXh0LWFuY2hvcj0ibWlkZGxlIgAgeD0iACIgeT0iACBmb250LWZhbWlseT0iJXMALCVzACBmb250LXdlaWdodD0iJXMiACBmb250LXN0cmV0Y2g9IiVzIgAgZm9udC1zdHlsZT0iJXMiACBmb250LWZhbWlseT0iJXMiACBmb250LXdlaWdodD0iYm9sZCIAIGZvbnQtc3R5bGU9Iml0YWxpYyIAIHRleHQtZGVjb3JhdGlvbj0iACVzb3ZlcmxpbmUAJXNsaW5lLXRocm91Z2gAIGJhc2VsaW5lLXNoaWZ0PSJzdXBlciIAIGJhc2VsaW5lLXNoaWZ0PSJzdWIiACBmb250LXNpemU9IiUuMmYiACBmaWxsPSIlcyIAIGZpbGw9IiMlMDJ4JTAyeCUwMngiAHN2Z190ZXh0c3BhbgA+ADx0ZXh0UGF0aCB4bGluazpocmVmPSIjJXNfcCIgc3RhcnRPZmZzZXQ9IjUwJSUiPgA8dHNwYW4geD0iMCIgZHk9IgAiPgA8L3RzcGFuPjwvdGV4dFBhdGg+ADwvdGV4dD4KADwvZz4KADxnACBpZD0iYV8AIHhsaW5rOmhyZWY9IgAgeGxpbms6dGl0bGU9IgAgdGFyZ2V0PSIAPHRpdGxlPgA8L3RpdGxlPgoAPGcgaWQ9IgBfJXMAIiBjbGFzcz0iJXMAY2xhc3MAIHRyYW5zZm9ybT0ic2NhbGUoACkgcm90YXRlKCVkKSB0cmFuc2xhdGUoACkiPgoAPC9zdmc+CgA8IS0tACBQYWdlczogJWQgLS0+CgA8c3ZnIHdpZHRoPSIlZHB0IiBoZWlnaHQ9IiVkcHQiCgAgdmlld0JveD0iJS4yZiAlLjJmICUuMmYgJS4yZiIAIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIAIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIgA8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgc3RhbmRhbG9uZT0ibm8iPz4KAHN0eWxlc2hlZXQAPD94bWwtc3R5bGVzaGVldCBocmVmPSIAIiB0eXBlPSJ0ZXh0L2NzcyI/PgoAPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIgoAICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPgoAPCEtLSBHZW5lcmF0ZWQgYnkgAGRhcmtibHVlAGRhcmtjeWFuAGRhcmtncmF5AGRhcmtncmV5AGRhcmttYWdlbnRhAGRhcmtyZWQAbGlnaHRncmVlbgAjIAAgY3JlYXRlIGxpbmUgACAtZmlsbCAAIC1kYXNoIDUAIC1kYXNoIDIAZ3ZyZW5kZXJfY29yZV90ay5jAHRrZ2VuX3ByaW50X3RhZ3MAZ3JhcGggbGFiZWwAIC10YWdzIHslZCVzJXB9AHRrZ2VuX3ByaW50X2NvbG9yACRjACAtd2lkdGggACAtc21vb3RoIGJlemllciAAIGNyZWF0ZSBwb2x5Z29uIAAgLW91dGxpbmUgACBjcmVhdGUgb3ZhbCAAIGNyZWF0ZSB0ZXh0IAAgLXRleHQgewB9ACAtZm9udCB7ACAlZH0AIC1hbmNob3IgdwAgLWFuY2hvciBlACMAIFRpdGxlOiAAIFBhZ2VzOiAlZAoAIyBHZW5lcmF0ZWQgYnkgACkKAHRrAHRrOnRrACAgICAgIDwhLS0gACAtLT4KAEVycm9yIGR1cmluZyBjb252ZXJzaW9uIHRvICJVVEYtOCIuICBRdWl0aW5nLgoAIDx2OnNoYXBlIHN0eWxlPSJwb3NpdGlvbjphYnNvbHV0ZTsgACB3aWR0aDogJWQ7IGhlaWdodDogJWQiIGZpbGxlZD0iZmFsc2UiPgA8djpwYXRoIHY9IgAgbSAAJS4wZiwlLjBmIAAgbCAAIGUgACIvPgA8L3Y6c2hhcGU+CgA8djpzdHJva2UgY29sb3I9IgAiIHdlaWdodD0iJS4wZnB0ACIgZGFzaHN0eWxlPSJkYXNoACIgZGFzaHN0eWxlPSJkb3QAIiAvPgAjJTAyeCUwMnglMDJ4AGd2cmVuZGVyX2NvcmVfdm1sLmMAdm1sX3ByaW50X2NvbG9yACB3aWR0aDogJWQ7IGhlaWdodDogJWQiACA+ADx2OnBhdGggIHY9IgAvPjwvdjpzaGFwZT4KAG0gACVzJS4wZiwlLjBmIABjIAAgZmlsbGVkPSJ0cnVlIiBmaWxsY29sb3I9IgAiIAAgZmlsbGVkPSJmYWxzZSIgACUuMGYgJS4wZiAAbCAAeCBlICIvPgAgIDx2Om92YWwgc3R5bGU9InBvc2l0aW9uOmFic29sdXRlOwAgbGVmdDogJS4yZjsgdG9wOiAlLjJmOwAgd2lkdGg6ICUuMmY7IGhlaWdodDogJS4yZiIAPC92Om92YWw+CgA8djpyZWN0IHN0eWxlPSJwb3NpdGlvbjphYnNvbHV0ZTsgACBzdHJva2VkPSJmYWxzZSIgZmlsbGVkPSJmYWxzZSI+CgA8djp0ZXh0Ym94IGluc2V0PSIwLDAsMCwwIiBzdHlsZT0icG9zaXRpb246YWJzb2x1dGU7IHYtdGV4dC13cmFwcGluZzonZmFsc2UnO3BhZGRpbmc6JzAnOwBmb250LWZhbWlseTogJyVzJzsAZm9udC13ZWlnaHQ6ICVzOwBmb250LXN0cmV0Y2g6ICVzOwBmb250LXN0eWxlOiAlczsAIGZvbnQtc2l6ZTogJS4yZnB0OwBjb2xvcjolczsAY29sb3I6IyUwMnglMDJ4JTAyeDsAdm1sX3RleHRzcGFuACI+PGNlbnRlcj4APC9jZW50ZXI+PC92OnRleHRib3g+CgA8L3Y6cmVjdD4KADwvYT4KADxhACBocmVmPSIlcyIAIHRpdGxlPSIlcyIAIHRhcmdldD0iJXMiAD4KADwvdjpncm91cD4KADwvRElWPgoAPERJViBpZD0nX1ZNTDJfJyBzdHlsZT0icG9zaXRpb246cmVsYXRpdmU7dmlzaWJpbGl0eTpoaWRkZW4iPgoAPCEtLSBpbnNlcnQgYW55IG90aGVyIGh0bWwgY29udGVudCBoZXJlIC0tPgoAPERJViBpZD0nX25vdFZNTDFfJyBzdHlsZT0icG9zaXRpb246cmVsYXRpdmU7Ij4KADwhLS0gdGhpcyBzaG91bGQgb25seSBkaXNwbGF5IG9uIE5PTi1JRSBicm93c2VycyAtLT4KADxIMj5Tb3JyeSwgdGhpcyBkaWFncmFtIHdpbGwgb25seSBkaXNwbGF5IGNvcnJlY3RseSBvbiBJbnRlcm5ldCBFeHBsb3JlciA1IChhbmQgdXApIGJyb3dzZXJzLjwvSDI+CgA8RElWIGlkPSdfbm90Vk1MMl8nIHN0eWxlPSJwb3NpdGlvbjpyZWxhdGl2ZTsiPgoAPCEtLSBpbnNlcnQgYW55IG90aGVyIE5PTi1JRSBodG1sIGNvbnRlbnQgaGVyZSAtLT4KADwvQk9EWT4KPC9IVE1MPgoAPEhFQUQ+ADxNRVRBIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KADxUSVRMRT4APC9USVRMRT4APCEtLSBQYWdlczogJWQgLS0+CgAgICA8U0NSSVBUIExBTkdVQUdFPSdKYXZhc2NyaXB0Jz4KACAgIGZ1bmN0aW9uIGJyb3dzZXJjaGVjaygpCgAgICB7CgAgICAgICB2YXIgdWEgPSB3aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudAoAICAgICAgdmFyIG1zaWUgPSB1YS5pbmRleE9mICggJ01TSUUgJyApCgAgICAgICB2YXIgaWV2ZXJzOwoAICAgICAgdmFyIGl0ZW07CgAgICAgICB2YXIgVk1MeWVzPW5ldyBBcnJheSgnX1ZNTDFfJywnX1ZNTDJfJyk7CgAgICAgICB2YXIgVk1Mbm89bmV3IEFycmF5KCdfbm90Vk1MMV8nLCdfbm90Vk1MMl8nKTsKACAgICAgIGlmICggbXNpZSA+IDAgKXsgICAgICAvLyBJZiBJbnRlcm5ldCBFeHBsb3JlciwgcmV0dXJuIHZlcnNpb24gbnVtYmVyCgAgICAgICAgICBpZXZlcnM9IHBhcnNlSW50ICh1YS5zdWJzdHJpbmcgKG1zaWUrNSwgdWEuaW5kZXhPZiAoJy4nLCBtc2llICkpKQoAICAgICAgfQoAICAgICAgaWYgKGlldmVycz49NSl7CgAgICAgICAgZm9yICh4IGluIFZNTHllcyl7CgAgICAgICAgICBpdGVtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoVk1MeWVzW3hdKTsKACAgICAg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ZW5kX3BhZ2UKAC8vKioqIGJlZ2luX3BhZ2UKAC8vKioqIGVuZF9sYXllcgoALy8qKiogYmVnaW5fbGF5ZXI6ICVzLCAlZC8lZAoALy8qKiogZW5kX2dyYXBoCgAvLyoqKiBiZWdpbl9ncmFwaCAlcwoAY2FtZXJhIHsgbG9jYXRpb24gPCUuM2YgLCAlLjNmICwgJS4zZj4KICAgICAgICAgbG9va19hdCAgPCUuM2YgLCAlLjNmICwgJS4zZj4KICAgICAgICAgcmlnaHQgeCAqIGltYWdlX3dpZHRoIC8gaW1hZ2VfaGVpZ2h0CiAgICAgICAgIGFuZ2xlICUuM2YKfQoALy9za3kKcGxhbmUgeyA8MCwgMSwgMD4sIDEgaG9sbG93CiAgICB0ZXh0dXJlIHsKICAgICAgICBwaWdtZW50IHsgYm96byB0dXJidWxlbmNlIDAuOTUKICAgICAgICAgICAgY29sb3JfbWFwIHsKICAgICAgICAgICAgICAgIFswLjAwIHJnYiA8MC4wNSwgMC4yMCwgMC41MD5dCiAgICAgICAgICAgICAgICBbMC41MCByZ2IgPDAuMDUsIDAuMjAsIDAuNTA+XQogICAgICAgICAgICAgICAgWzAuNzUgcmdiIDwxLjAwLCAxLjAwLCAxLjAwPl0KICAgICAgICAgICAgICAgIFswLjc1IHJnYiA8MC4yNSwgMC4yNSwgMC4yNT5dCiAgICAgICAgICAgICAgICBbMS4wMCByZ2IgPDAuNTAsIDAuNTAsIDAuNTA+XQogICAgICAgICAgICB9CiAgICAgICAgICAgIHNjYWxlIDwxLjAwLCAxLjAwLCAxLjUwPiAqIDIuNTAKICAgICAgICAgICAgdHJhbnNsYXRlIDwwLjAwLCAwLjAwLCAwLjAwPgogICAgICAgIH0KICAgICAgICBmaW5pc2ggeyBhbWJpZW50IDEgZGlmZnVzZSAwIH0KICAgIH0KICAgIHNjYWxlIDEwMDAwCn0KLy9taXN0CmZvZyB7IGZvZ190eXBlIDIKICAgIGRpc3RhbmNlIDUwCiAgICBjb2xvciByZ2IgPDEuMDAsIDEuMDAsIDEuMDA+ICogMC43NQogICAgZm9nX29mZnNldCAwLjEwCiAgICBmb2dfYWx0IDEuNTAKICAgIHR1cmJ1bGVuY2UgMS43NQp9Ci8vZ25kCnBsYW5lIHsgPDAuMDAsIDEuMDAsIDAuMDA+LCAwCiAgICB0ZXh0dXJlIHsKICAgICAgICBwaWdtZW50eyBjb2xvciByZ2IgPDAuMjUsIDAuNDUsIDAuMDA+IH0KICAgICAgICBub3JtYWwgeyBidW1wcyAwLjc1IHNjYWxlIDAuMDEgfQogICAgICAgIGZpbmlzaCB7IHBob25nIDAuMTAgfQogICAgfQp9CgBsaWdodF9zb3VyY2UgeyA8MTUwMCwzMDAwLC0yNTAwPiBjb2xvciBXaGl0ZSB9CgAjdmVyc2lvbiAzLjY7CgBnbG9iYWxfc2V0dGluZ3MgeyBhc3N1bWVkX2dhbW1hIDEuMCB9CgAjZGVmYXVsdCB7IGZpbmlzaCB7IGFtYmllbnQgMC4xIGRpZmZ1c2UgMC45IH0gfQoAI2luY2x1ZGUgImNvbG9ycy5pbmMiCiNpbmNsdWRlICJ0ZXh0dXJlcy5pbmMiCiNpbmNsdWRlICJzaGFwZXMuaW5jIgoAI2RlY2xhcmUgJXMgPSAlczsKAEJsYWNrAFdoaXRlAGJha2Vyc2Nob2MAYnJhc3MAYnJpZ2h0Z29sZABicm9uemUAYnJvbnplMgBjbGVhcgBjb29sY29wcGVyAGNvcHBlcgBkYXJrYnJvd24AZGFya3B1cnBsZQBkYXJrdGFuAGRhcmt3b29kAGRrZ3JlZW5jb3BwZXIAZHVzdHlyb3NlAGZlbGRzcGFyAGZsZXNoAGdyYXkwNQBncmVlbmNvcHBlcgBodW50ZXJzZ3JlZW4AbGlnaHRfcHVycGxlAGxpZ2h0d29vZABtYW5kYXJpbm9yYW5nZQBtZWRpdW1mb3Jlc3RncmVlbgBtZWRpdW1nb2xkZW5yb2QAbWVkaXVtd29vZABtZWRfcHVycGxlAG1pY2EAbmVvbmJsdWUAbmVvbnBpbmsAbmV3bWlkbmlnaHRibHVlAG5ld3RhbgBvbGRnb2xkAHF1YXJ0egByaWNoYmx1ZQBzY2FybGV0AHNlbWlTd2VldENob2MAc2lsdmVyAHNwaWN5cGluawBzdW1tZXJza3kAdmVyeWRhcmticm93bgB2ZXJ5X2xpZ2h0X3B1cnBsZQBwb3YAcG92OnBvdgAlcyAlcwoALlwiIAAgJWQgJWQAICVzCgAgJWQAZmlsbCAAZWxsaXBzZSBhdHRycyVkICVzd2lkICUuNWYgaHQgJS41ZiBhdCAoJS41ZiwlLjVmKTsKAC5mdCAlcwoALnBzICVkKlxuKFNGdS8lLjBmdQoAIiVzIiBhdCAoJS41ZiwlLjVmKTsKACUwM28AJXMlcyBpcyBub3QgYSB0cm9mZiBmb250CgBkb3QgcGljIHBsdWdpbjogAFIAXQouUEUKAC5QUyAlLjVmICUuNWYKACVzIHRvIGNoYW5nZSBkcmF3aW5nIHNpemUsIG11bHRpcGx5IHRoZSB3aWR0aCBhbmQgaGVpZ2h0IG9uIHRoZSAuUFMgbGluZSBhYm92ZSBhbmQgdGhlIG51bWJlciBvbiB0aGUgdHdvIGxpbmVzIGJlbG93IChyb3VuZGVkIHRvIHRoZSBuZWFyZXN0IGludGVnZXIpIGJ5IGEgc2NhbGUgZmFjdG9yCgAubnIgU0YgJS4wZgpzY2FsZXRoaWNrbmVzcyA9ICUuMGYKACVzIGRvbid0IGNoYW5nZSBhbnl0aGluZyBiZWxvdyB0aGlzIGxpbmUgaW4gdGhpcyBkcmF3aW5nCgAlcyBub24tZmF0YWwgcnVuLXRpbWUgcGljIHZlcnNpb24gZGV0ZXJtaW5hdGlvbiwgdmVyc2lvbiAyCgBib3hyYWQ9Mi4wICVzIHdpbGwgYmUgcmVzZXQgdG8gMC4wIGJ5IGdwaWMgb25seQoAc2NhbGU9MS4wICVzIHJlcXVpcmVkIGZvciBjb21wYXJpc29ucwoAJXMgYm94cmFkIGlzIG5vdyAwLjAgaW4gZ3BpYywgZWxzZSBpdCByZW1haW5zIDIuMAoAJXMgZGFzaHdpZCBpcyAwLjEgaW4gMTB0aCBFZGl0aW9uLCAwLjA1IGluIERXQiAyIGFuZCBpbiBncGljCgAlcyBmaWxsdmFsIGlzIDAuMyBpbiAxMHRoIEVkaXRpb24gKGZpbGwgMCBtZWFucyBibGFjayksIDAuNSBpbiBncGljIChmaWxsIDAgbWVhbnMgd2hpdGUpLCB1bmRlZmluZWQgaW4gRFdCIDIKACVzIGZpbGwgaGFzIG5vIG1lYW5pbmcgaW4gRFdCIDIsIGdwaWMgY2FuIHVzZSBmaWxsIG9yIGZpbGxlZCwgMTB0aCBFZGl0aW9uIHVzZXMgZmlsbCBvbmx5CgAlcyBEV0IgMiBkb2Vzbid0IHVzZSBmaWxsIGFuZCBkb2Vzbid0IGRlZmluZSBmaWxsdmFsCgAlcyByZXNldCB3b3JrcyBpbiBncGljIGFuZCAxMHRoIGVkaXRpb24sIGJ1dCBpc24ndCBkZWZpbmVkIGluIERXQiAyCgAlcyBEV0IgMiBjb21wYXRpYmlsaXR5IGRlZmluaXRpb25zCgBpZiBib3hyYWQgPiAxLjAgJiYgZGFzaHdpZCA8IDAuMDc1IHRoZW4gWAoJZmlsbHZhbCA9IDE7CglkZWZpbmUgZmlsbCBZIFk7CglkZWZpbmUgc29saWQgWSBZOwoJZGVmaW5lIHJlc2V0IFkgc2NhbGU9MS4wIFk7ClgKAHJlc2V0ICVzIHNldCB0byBrbm93biBzdGF0ZQoAJXMgR05VIHBpYyB2cy4gMTB0aCBFZGl0aW9uIGRcKGUndGVudGUKAGlmIGZpbGx2YWwgPiAwLjQgdGhlbiBYCglkZWZpbmUgc2V0ZmlsbHZhbCBZIGZpbGx2YWwgPSAxIC0gWTsKCWRlZmluZSBib2xkIFkgdGhpY2tuZXNzIDIgWTsKAAklcyBpZiB5b3UgdXNlIGdwaWMgYW5kIGl0IGJhcmZzIG9uIGVuY291bnRlcmluZyAic29saWQiLAoACSVzCWluc3RhbGwgYSBtb3JlIHJlY2VudCB2ZXJzaW9uIG9mIGdwaWMgb3Igc3dpdGNoIHRvIERXQiBvciAxMHRoIEVkaXRpb24gcGljOwoACSVzCXNvcnJ5LCB0aGUgZ3JvZmYgZm9sa3MgY2hhbmdlZCBncGljOyBzZW5kIGFueSBjb21wbGFpbnQgdG8gdGhlbTsKAFggZWxzZSBaCglkZWZpbmUgc2V0ZmlsbHZhbCBZIGZpbGx2YWwgPSBZOwoJZGVmaW5lIGJvbGQgWSBZOwoJZGVmaW5lIGZpbGxlZCBZIGZpbGwgWTsKWgoAJXMgYXJyb3doZWFkIGhhcyBubyBtZWFuaW5nIGluIERXQiAyLCBhcnJvd2hlYWQgPSA3IG1ha2VzIGZpbGxlZCBhcnJvd2hlYWRzIGluIGdwaWMgYW5kIGluIDEwdGggRWRpdGlvbgoAJXMgYXJyb3doZWFkIGlzIHVuZGVmaW5lZCBpbiBEV0IgMiwgaW5pdGlh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IH0KACAgICB0ZXh0dXJlIEltYWdlVGV4dHVyZSB7IHVybCAiJXMiIH0KACAgfQoAY29yZV9sb2FkaW1hZ2VfZmlnACVkICVkICVkICVkICVkICVkICVkICVkICVkICUuMWYgJWQgJWQgJWQgJWQgJWQgJWQKICVkICVzCgAgJWQgJWQgJWQgJWQgJWQgJWQgJWQgJWQgJWQgJWQKAGNvcmVfbG9hZGltYWdlX3N2ZwA8aW1hZ2UgeGxpbms6aHJlZj0iACIgd2lkdGg9IiVncHgiIGhlaWdodD0iJWdweCIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQgbWVldCIgeD0iJWciIHk9IiVnIgAgdHJhbnNmb3JtPSJyb3RhdGUoJWQgJWcgJWcpIgAiIHdpZHRoPSIlZ3B4IiBoZWlnaHQ9IiVncHgiIHByZXNlcnZlQXNwZWN0UmF0aW89InhNaW5ZTWluIG1lZXQiIHg9IiVnIiB5PSIlZyIALz4KAGRvdF9sYXlvdXQAcGhhc2UAZG90IGRvZXMgbm90IHN1cHBvcnQgdGhlIGFzcGVjdCBhdHRyaWJ1dGUgZm9yIGRpc2Nvbm5lY3RlZCBncmFwaHMgb3IgZ3JhcGhzIHdpdGggY2x1c3RlcnMKAGNvbXBvdW5kAHYgPT0gbgBkb3Rpbml0LmMAcmVtb3ZlX2Zyb21fcmFuawBvcmRlcgBlZGdlIGxhYmVscyB3aXRoIHNwbGluZXM9Y3VydmVkIG5vdCBzdXBwb3J0ZWQgaW4gZG90IC0gdXNlIHhsYWJlbHMKAEVEX2xhYmVsKGZlKQBkb3RzcGxpbmVzLmMAX2RvdF9zcGxpbmVzAGZsYXQgZWRnZSBiZXR3ZWVuIGFkamFjZW50IG5vZGVzIG9uZSBvZiB3aGljaCBoYXMgYSByZWNvcmQgc2hhcGUgLSByZXBsYWNlIHJlY29yZHMgd2l0aCBIVE1MLWxpa2UgbGFiZWxzCgAgIEVkZ2UgJXMgJXMgJXMKAHh4eAAxMDAwMAB7JXN9AGF1eGcAbGFiZWxfZmxvYXQAZml4ZWQAKGwgPSBFRF9sYWJlbChmZSkpAHNldEVkZ2VMYWJlbFBvcwBlICE9IE5VTEwAZmFzdGdyLmMAZGVsZXRlX2Zhc3RfZWRnZQBuICE9IE5EX25leHQobikAZmFzdF9ub2RlAHUgIT0gdgBmYXN0X25vZGVhcHAATkRfbmV4dCh2KSA9PSBOVUxMAGZpbmRfZmFzdF9ub2RlKGcsIG4pAGRlbGV0ZV9mYXN0X25vZGUAZGVsZXRlX2ZsYXRfZWRnZQBtZXJnZV9vbmV3YXkgZ2xpdGNoCgBtZXJnZV9vbmV3YXkAc2FmZV9kZWxldGVfZmFzdF9lZGdlAGxnAGNvbXAAY250ID09IHN6AG1pbmNyb3NzLmMAZml4TGFiZWxPcmRlcgByZW1pbmNyb3NzAG1pbmNyb3NzICVzOiAlZCBjcm9zc2luZ3MsICUuMmYgc2Vjcy4KAHYAbmVpZ2hib3IAKHJ2ID09IDApIHx8IChORF9vcmRlcihydiktTkRfb3JkZXIodikpKmRpciA+IDAAY29uc3RyYWluaW5nX2ZsYXRfZWRnZShnLHYsZSkgPT0gRkFMU0UAZmxhdF9yZW9yZGVyAE5EX3JhbmsodikgPT0gcgBwb3N0b3JkZXIAZmxhdGluZGV4KGFnaGVhZChlKSkgPCBNLT5ucm93cwBmbGF0X3NlYXJjaABmbGF0aW5kZXgoYWd0YWlsKGUpKSA8IE0tPm5jb2xzAG91dABvcmRlcmluZyAnJXMnIG5vdCByZWNvZ25pemVkLgoAb3JkZXJpbmcgJyVzJyBub3QgcmVjb2duaXplZCBmb3Igbm9kZSAnJXMnLgoAbWVyZ2UyOiBncmFwaCAlcywgcmFuayAlZCBoYXMgb25seSAlZCA8ICVkIG5vZGVzCgBtaW5jcm9zczogcGFzcyAlZCBpdGVyICVkIHRyeWluZyAlZCBjdXJfY3Jvc3MgJWQgYmVzdF9jcm9zcyAlZAoATkRfb3JkZXIodikgPCBORF9vcmRlcih3KQBiYWxhbmNlAHRyYW5zcG9zZV9zdGVwAHN1cnByaXNlCgBpbnN0YWxsX2luX3JhbmssIGxpbmUgJWQ6ICVzICVzIHJhbmsgJWQgaSA9ICVkIGFuID0gMAoAR0RfcmFuayhnKVtyXS5uIDw9IEdEX3JhbmsoZylbcl0uYW4AaW5zdGFsbF9pbl9yYW5rAGluc3RhbGxfaW5fcmFuaywgbGluZSAlZDogTkRfb3JkZXIoJXMpIFslZF0gPiBHRF9yYW5rKFJvb3QpWyVkXS5hbiBbJWRdCgBpbnN0YWxsX2luX3JhbmssIGxpbmUgJWQ6IHJhbmsgJWQgbm90IGluIHJhbmsgcmFuZ2UgWyVkLCVkXQoAaW5zdGFsbF9pbl9yYW5rLCBsaW5lICVkOiBHRF9yYW5rKGcpWyVkXS52ICsgTkRfb3JkZXIoJXMpIFslZF0gPiBHRF9yYW5rKGcpWyVkXS5hdiArIEdEX3JhbmsoUm9vdClbJWRdLmFuIFslZF0KAF9uZXdfcmFuawBtY2xpbWl0AHJhbmsoZywgMiwgbnNpdGVyMihnKSkgPT0gMABwb3NpdGlvbi5jAGRvdF9wb3NpdGlvbgBBUj0lMC40bGYJIEFyZWE9ICUwLjRsZgkARHVtbXk9JWQKAEdvaW5nIHRvIGFwcGx5IGFub3RoZXIgZXhwYW5zaW9uLgoAbmV4dCNpdGVyPSVkCgBocABjb25uZWN0R3JhcGgARWRnZSBsZW5ndGggJWYgbGFyZ2VyIHRoYW4gbWF4aW11bSAldSBhbGxvd2VkLgpDaGVjayBmb3Igb3ZlcndpZGUgbm9kZShzKS4KAG5zbGltaXQAY29udGFpbl9ub2RlcyBjbHVzdCAlcyByYW5rICVkIG1pc3Npbmcgbm9kZQoAbnNsaW1pdDEAbmV3cmFuawBNYXhyYW5rID0gJWQsIG1pbnJhbmsgPSAlZAoAbGVhZGVyICE9IE5VTEwAcmFuay5jAGNsdXN0ZXJfbGVhZGVyAChORF9VRl9zaXplKG4pIDw9IDEpIHx8IChuID09IGxlYWRlcikAYWdoZWFkKGUpID09IFVGX2ZpbmQoYWdoZWFkKGUpKQBtaW5tYXhfZWRnZXMAYWd0YWlsKGUpID09IFVGX2ZpbmQoYWd0YWlsKGUpKQByYW5rAHNhbWUAbWluAHNvdXJjZQBtYXgAc2luawBsZXZlbCBhc3NpZ25tZW50IGNvbnN0cmFpbnRzAGxldmVsIGdyYXBoIHJlYwB/cm9vdAB/dG9wAH9ib3QAY29tcGFjdABfd2Vha18lZAByYW5raW5nOiBmYWlsdXJlIHRvIGNyZWF0ZSBzdHJvbmcgY29uc3RyYWludCBlZGdlIGJldHdlZW4gbm9kZXMgJXMgYW5kICVzCgAlcyBoYXMgdW5yZWNvZ25pemVkIHJhbms9JXMAbGV2ZWwgZWRnZSByZWMAbGV2ZWwgbm9kZSByZWMAc2FtZWhlYWQAc2FtZXRhaWwAdG9vIG1hbnkgKD4gJWQpIHNhbWV7aGVhZCx0YWlsfSBncm91cHMgZm9yIG5vZGUgJXMKAGNvbWJpQVIgPSAlbGYKACVsZiwlZAB0aGUgYXNwZWN0IGF0dHJpYnV0ZSBoYXMgYmVlbiBkaXNhYmxlZCBkdWUgdG8gaW1wbGVtZW50YXRpb24gZmxhd3MgLSBhdHRyaWJ1dGUgaWdub3JlZC4KAEVEX3RvX3ZpcnQoZSkgPT0gTlVMTABjbGFzczIuYwBtZXJnZV9jaGFpbgBFRF90b192aXJ0KG9yaWcpID09IE5VTEwAbWFrZV9jaGFpbgBFRF90b192aXJ0KG9yaWcpICE9IE5VTEwATkRfcmFuayhmcm9tKSA8IE5EX3JhbmsodG8pAGNsdXN0ZXIuYwBtYXBfcGF0aAAlcyB3YXMgYWxyZWFkeSBpbiBhIHJhbmtzZXQsIGRlbGV0ZWQgZnJvbSBjbHVzdGVyICVzCgBsaGVhZABsdGFpbAAlcyAtPiAlczogc3BsaW5lIHNpemUgPiAxIG5vdCBzdXBwb3J0ZWQKACVzIC0+ICVzOiBoZWFkIG5vdCBpbnNpZGUgaGVhZCBjbHVzdGVyICVzCgAlcyAtPiAlczogdGFpbCBpcyBpbnNpZGUgaGVhZCBjbHVzdGVyICVzCgBiZXotPnNmbGFnAGNvbXBvdW5kLmMAbWFrZUNvbXBvdW5kRWRnZQBiZXotPmVmbGFnACVzIC0+ICVzOiB0YWlsIG5vdCBpbnNpZGUgdGFpbCBjbHVzdGVyICVzCgAlcyAtPiAlczogaGVhZCBpcyBpbnNpZGUgdGFpbCBjbHVzdGVyICVzCgBzZWdtZW50IFslcywlc10gZG9lcyBub3QgaW50ZXJzZWN0IGJveCBsbD0lcyx1cj0lcwoAYm94SW50ZXJzZWN0ZgAoJS41ZywlLjVnKQBjbHVzdGVyIG5hbWVkICVzIG5vdCBmb3VuZAoAY29uY2VudHJhdGU9dHJ1ZSBtYXkgbm90IHdvcmsgY29ycmVjdGx5LgoAcmVidWlsdGRfdmxpc3RzOiByYW5rIGxlYWQgJXMgbm90IGluIG9yZGVyICVkIG9mIHJhbmsgJWQKAGRlZ2VuZXJhdGUgY29uY2VudHJhdGVkIHJhbmsgJXMsJWQKAE5EX2luKHJpZ2h0KS5zaXplICsgTkRfb3V0KHJpZ2h0KS5zaXplID09IDAAY29uYy5jAG1lcmdldmlydHVhbABkb3Q6IE91dCBvZiBtZW1vcnkKAE5EX291dCh2KS5zaXplID09IDIAZmxhdC5jAHNldGJvdW5kcwBHRF9taW5yYW5rKGcpID09IDAAYWJvbWluYXRpb24AbmVhdG9fbGF5b3V0AG5lYXRvAGZkcAB0d29waQBjaXJjbwBwYXRjaHdvcmsAb3NhZ2UAbm9wAG5vcDEAbm9wMgAlbGYsJWxmLCVsZiVjAG5vZGUgJXMsIHBvc2l0aW9uICVzLCBleHBlY3RlZCB0d28gZG91YmxlcwoAbm90cmFuc2xhdGUAbm9kZSAlcyBpbiBncmFwaCAlcyBoYXMgbm8gcG9zaXRpb24KAHMsJWxmLCVsZiVuACBlLCVsZiwlbGYlbgBwb3MgYXR0cmlidXRlIGZvciBlZGdlICglcywlcykgZG9lc24ndCBoYXZlIDNuKzEgcG9pbnRzCgAlbGYsJWxmJW4Ac3ludGF4IGVycm9yIGluIHBvcyBhdHRyaWJ1dGUgZm9yIGVkZ2UgKCVzLCVzKQoAJWxmLCVsZiwlbGYsJWxmAHN0YXJ0AHNlbGYAcmFuZG9tAG5vZGUgcG9zaXRpb25zIGFyZSBpZ25vcmVkIHVubGVzcyBzdGFydD1yYW5kb20KAGFzIHJlcXVpcmVkIGJ5IHRoZSAtbiBmbGFnCgBfbmVhdG9fY2MAZ3JhcGggJXMgaXMgZGlzY29ubmVjdGVkLiBIZW5jZSwgdGhlIGNpcmN1aXQgbW9kZWwKAEFsdGVybmF0aXZlbHksIGNvbnNpZGVyIHJ1bm5pbmcgbmVhdG8gdXNpbmcgLUdwYWNrPXRydWUgb3IgZGVjb21wb3NpbmcKAHRoZSBncmFwaCBpbnRvIGNvbm5lY3RlZCBjb21wb25lbnRzLgoAU29sdmluZyBtb2RlbCAlZCBpdGVyYXRpb25zICVkIHRvbCAlZgoATkRfaWQobnApID09IGkAbmVhdG9pbml0LmMAbWFrZUdyYXBoRGF0YQBmIDwgZ3JhcGhbal0ubmVkZ2VzAGRmc0N5Y2xlAG1vZGVsICVkIHNtYXJ0X2luaXQgJWQgc3RyZXNzd3QgJWQgaXRlcmF0aW9ucyAlZCB0b2wgJWYKAGNvbnZlcnQgZ3JhcGg6IABtYWpvcml6YXRpb24KACVkIG5vZGVzICUuMmYgc2VjCgBsZXZlbHNnYXAAbGF5b3V0IGFib3J0ZWQKAHN0cmVzc3d0ACVzIGF0dHJpYnV0ZSB2YWx1ZSBtdXN0IGJlIDEgb3IgMiAtIGlnbm9yaW5nCgBtb2RlbABjaXJjdWl0AHN1YnNldABzaG9ydHBhdGgAbWRzAGVkZ2VzIGluIGdyYXBoICVzIGhhdmUgbm8gbGVuIGF0dHJpYnV0ZS4gSGVuY2UsIHRoZSBtZHMgbW9kZWwKAGlzIGluYXBwcm9wcmlhdGUuIFJldmVydGluZyB0byB0aGUgc2hvcnRlc3QgcGF0aCBtb2RlbC4KAFVua25vd24gdmFsdWUgJXMgZm9yIGF0dHJpYnV0ZSAibW9kZWwiIGluIGdyYXBoICVzIC0gaWdub3JlZAoAbW9kZQBLSwBtYWpvcgBoaWVyAElsbGVnYWwgdmFsdWUgJXMgZm9yIGF0dHJpYnV0ZSAibW9kZSIgaW4gZ3JhcGggJXMgLSBpZ25vcmVkCgBkaW1lbgBtYWtlU3BsaW5lOiBmYWlsZWQgdG8gbWFrZSBzcGxpbmUgZWRnZSAoJXMsJXMpCgBzcGxpbmUgJXMgJXMKAGIgPT0gbgBuZWF0b3NwbGluZXMuYwBtYWtlX2JhcnJpZXJzAHRoZSBib3VuZGluZyBib3hlcyBvZiBzb21lIG5vZGVzIHRvdWNoIC0gZmFsbGluZyBiYWNrIHRvIHN0cmFpZ2h0IGxpbmUgZWRnZXMKAHNvbWUgbm9kZXMgd2l0aCBtYXJnaW4gKCUuMDJmLCUuMDJmKSB0b3VjaCAtIGZhbGxpbmcgYmFjayB0byBzdHJhaWdodCBsaW5lIGVkZ2VzCgBwb2x5bGluZXMAbGluZSBzZWdtZW50cwBvcnRob2dvbmFsIGxpbmVzAENyZWF0aW5nIGVkZ2VzIHVzaW5nICVzCgBwb2x5bGluZSAlcyAlcwoAbWRzTW9kZWw6IGRlbHRhID0gJWYKAFNldHRpbmcgdXAgc3RyZXNzIGZ1bmN0aW9uAFNvbHZpbmcgbW9kZWw6IAAKZmluYWwgZSA9ICVmICVkIGl0ZXJhdGlvbnMgJS4yZiBzZWMKAERhbXBpbmcAZGVmYXVsdGRpc3QAIGluICVzIC0gc2V0dGluZyB0byAlLjAyZgoAYmFkIGVkZ2UgbGVuICIlcyIAU2V0dGluZyBpbml0aWFsIHBvc2l0aW9ucwoAc3RhcnQ9JXMgbm90IHN1cHBvcnRlZCB3aXRoIG1vZGU9c2VsZiAtIGlnbm9yZWQKAFNldHRpbmcgdXAgc3ByaW5nIG1vZGVsOiAAJS4yZiBzZWMKAApmaW5hbCBlID0gJWYAIQAgJWQlcyBpdGVyYXRpb25zICUuMmYgc2VjCgBNYXguIGl0ZXJhdGlvbnMgKCVkKSByZWFjaGVkIG9uIGdyYXBoICVzCgAlcyAlLjNmCgAlLjNmIABORF9oZWFwaW5kZXgodikgPCAwAHN0dWZmLmMAbmVhdG9fZW5xdWV1ZQBDYWxjdWxhdGluZyBzaG9ydGVzdCBwYXRoczogAHNwZWNpZmllZCByb290IG5vZGUgIiVzIiB3YXMgbm90IGZvdW5kLgBVc2luZyBkZWZhdWx0IGNhbGN1bGF0aW9uIGZvciByb290IG5vZGUKAHJlcG9zaXRpb24gJXMKACVzIDogJWYgJWYKACVzIDogJWYgJWYgJWYgJWYKACAgAEdyYXBoICVzIGhhcyBhcnJheSBwYWNraW5nIHdpdGggdXNlciB2YWx1ZXMgYnV0IG5vICJzb3J0diIgYXR0cmlidXRlcyBhcmUgZGVmaW5lZC4AbGVuAHBpbgBXYXJuaW5nOiBub2RlICVzLCBwb3NpdGlvbiAlcywgZXhwZWN0ZWQgdHdvIGZsb2F0cwoAY29vcmRzAGRpbQBsYXlvdXQgJXMKAGVuZCAlcwoAaWR4ID09IHN6AGxheW91dC5jAGV4cGFuZENsdXN0ZXIAaSA9PSBkZWcAZ2V0RWRnZUxpc3QAX2RnXyVkAGRlcml2ZSBncmFwaCAlcyBvZiAlcwoAbm9kZSAiJXMiIGlzIGNvbnRhaW5lZCBpbiB0d28gbm9uLWNvbXBhcmFibGUgY2x1c3RlcnMgIiVzIiBhbmQgIiVzIgoAX3BvcnRfJXNfJXNfJXNfJWxkAF9wb3J0XyVzXyglZClfKCVkKV8lbGQAJWxmLCVsZiwlbGYsJWxmJWMAZ3JhcGggJXMsIGNvb3JkICVzLCBleHBlY3RlZCBmb3VyIGRvdWJsZXMKAHNwbGluZXMgYW5kIGNsdXN0ZXIgZWRnZXMgbm90IHN1cHBvcnRlZCAtIHVzaW5nIGxpbmUgc2VnbWVudHMKAG1heGl0ZXIASwBUMABmZHAgZG9lcyBub3Qgc3VwcG9ydCBzdGFydD1zZWxmIC0gaWdub3JpbmcKAHhMYXlvdXQgADk6cHJpc20AdHJpZXMgPSAlZCwgbW9kZSA9ICVzCgBkZXJpdmVkAGluZm8Abm9ybWFsaXplAG92ZXJsYXAAT3ZlcmxhcCB2YWx1ZSAiJXMiIHVuc3VwcG9ydGVkIC0gaWdub3JlZAoAVW5yZWNvZ25pemVkIG92ZXJsYXAgdmFsdWUgIiVzIiAtIHVzaW5nIGZhbHNlCgBWb3Jvbm9pAG92ZXJsYXA6ICVzIHZhbHVlICVkIHNjYWxpbmcgJS4wNGYKAG92ZXJsYXBfc2NhbGluZwB2b3Jvbm9pAHNjYWxpbmcAdnBzYwBpcHNlcABvc2NhbGUAb2xkIHNjYWxpbmcAc2NhbGV4eQB4IGFuZCB5IHNjYWxpbmcAb3J0aG8Ab3J0aG9nb25hbCBjb25zdHJhaW50cwBvcnRob195eABvcnRob3h5AHh5IG9ydGhvZ29uYWwgY29uc3RyYWludHMAb3J0aG95eAB5eCBvcnRob2dvbmFsIGNvbnN0cmFpbnRzAHBvcnRobwBwc2V1ZG8tb3J0aG9nb25hbCBjb25zdHJhaW50cwBwb3J0aG9feXgAcG9ydGhveHkAeHkgcHNldWRvLW9ydGhvZ29uYWwgY29uc3RyYWludHMAcG9ydGhveXgAeXggcHNldWRvLW9ydGhvZ29uYWwgY29uc3RyYWludHMAcHJpc20AQWRqdXN0aW5nICVzIHVzaW5nICVzCgBVbmhhbmRsZWQgYWRqdXN0IG9wdGlvbiAlcwoATnVtYmVyIG9mIGl0ZXJhdGlvbnMgPSAlZAoATnVtYmVyIG9mIGluY3JlYXNlcyA9ICVkCgBvdmVybGFwIFslZF0gOiAlZAoAdm9yb19tYXJnaW4Ac2VwAGVzZXAATm9kZSBzZXBhcmF0aW9uOiBhZGQ9JWQgKCVmLCVmKQoAJWYsJWYAc2NhbGUgPSAoJS4wM2YsJS4wM2YpCgBFZGdlIHNlcGFyYXRpb246IGFkZD0lZCAoJWYsJWYpCgBDYWxjdWxhdGluZyBjaXJjdWl0IG1vZGVsAGNvbmp1Z2F0ZV9ncmFkaWVudDogdW5leHBlY3RlZCBsZW5ndGggMCB2ZWN0b3IKAENhbGN1bGF0aW5nIHN1YnNldCBtb2RlbABncmFwaCBpcyBkaXNjb25uZWN0ZWQuIEhlbmNlLCB0aGUgY2lyY3VpdCBtb2RlbAoAaXMgdW5kZWZpbmVkLiBSZXZlcnRpbmcgdG8gdGhlIHNob3J0ZXN0IHBhdGggbW9kZWwuCgBDYWxjdWxhdGluZyBNRFMgbW9kZWwAQ2FsY3VsYXRpbmcgc2hvcnRlc3QgcGF0aHMAOiAlLjJmIHNlYwoAU2V0dGluZyBpbml0aWFsIHBvc2l0aW9ucwA6ICUuMmYgc2VjAGNnAGRlbHRhIDw9IDB4RkZGRgBjb25zdHJhaW50LmMAbWtOQ29uc3RyYWludEcAdmcAY29tcHJlc3MgJWcgCgBzY2FsZSBieSAlZywlZyAKAGJlc3Rjb3N0IDwgSFVHRV9WQUwAY29tcHV0ZVNjYWxlWFkAdHJ5aW5nIHRvIGRlbGV0ZSBhIG5vbi1saW5lCgAKaW50ZXJzZWN0aW9uIGF0ICUuM2YgJS4zZgoAc2VnIyVkIDogKCUuM2YsICUuM2YpICglLjNmLCAlLjNmKQoAbWFrZUFkZFBvbHk6IHVua25vd24gc2hhcGUgdHlwZSAlcwoAbWFrZVBvbHk6IHVua25vd24gc2hhcGUgdHlwZSAlcwoAeCE9TlVMTABzbWFydF9pbmlfeC5jAElNRFNfZ2l2ZW5fZGltAGlsbC1jb25kaXRpb25lZAByb290ID0gJXMgbWF4IHN0ZXBzIHRvIHJvb3QgPSAlZAoAdHdvcGk6IHVzZSBvZiB3ZWlnaHQ9MCBjcmVhdGVzIGRpc2Nvbm5lY3RlZCBjb21wb25lbnQuCgBSYW5rIHNlcGFyYXRpb24gPSAAJS4wM2xmIABhcmVhAGluc2V0ACVzIGNvb3JkICUuNWcgJS41ZyBodCAlZiB3aWR0aCAlZgoAJS4wM2YAcmVjICVmICVmICVmICVmCgAlZiAtICVmICVmICVmICVmID0gJWYgKCVmICVmICVmICVmKQoAdHJ5aW5nIHRvIGFkZCB0byByZWN0IHslZiArLy0gJWYsICVmICsvLSAlZn0KAHRvdGFsIGFkZGVkIHNvIGZhciA9ICVkCgBhZGRpbmcgJWQgaXRlbXMsIHRvdGFsIGFyZWEgPSAlZiwgdyA9ICVmLCBhcmVhL3c9JWYKAGNvbXBvdW5kRWRnZXM6IGNvdWxkIG5vdCBjb25zdHJ1Y3Qgb2JzdGFjbGVzIC0gZmFsbGluZyBiYWNrIHRvIHN0cmFpZ2h0IGxpbmUgZWRnZXMKAGNvbXBvdW5kRWRnZXM6IG5vZGVzIHRvdWNoIC0gZmFsbGluZyBiYWNrIHRvIHN0cmFpZ2h0IGxpbmUgZWRnZXMKAHBhY2sgdmFsdWUgJWQgaXMgc21hbGxlciB0aGFuIGVzZXAgKCUuMDNmLCUuMDNmKQoAc2VwIHZhbHVlICglLjAzZiwlLjAzZikgaXMgc21hbGxlciB0aGFuIGVzZXAgKCUuMDNmLCUuMDNmKQoAY2Mlc18lZABjYyVzKyVkAGNfY250ID09IDAAY29tcC5jAGZpbmRDQ29tcABncmlkKCVkLCVkKTogJXMKAG9uZWJsb2NrAG1pbmRpc3QAYXJ0aWN1bGF0aW9uX3BvcwByb290AHJvb3QgPSAlcwoAX2Jsb2NrXyVkAHMtPnN6ID4gMABibG9ja3RyZWUuYwBwb3AAYWN0dWFsAG5vZGVsaXN0LmMAaW5zZXJ0Tm9kZWxpc3QAX3NwYW5fJWQAX2Nsb25lXyVkAGlwAGRlZ2xpc3QuYwByZW1vdmVEZWdsaXN0AEVycm9yAFdhcm5pbmcAJXM6IAB1c2Vyb3V0OiBjb3VsZCBub3QgYWxsb2NhdGUgbWVtb3J5CgBfQUdfc3RyZGF0YQBfQUdfZGF0YWRpY3QAYWdkaWN0b2Y6IHVua25vd24ga2luZCAlZAoAJWMlbGQAbWVtb3J5IGFsbG9jYXRpb24gZmFpbHVyZQBhZ2RlbGV0ZSBvbiB3cm9uZyBncmFwaABfQUdfcGVuZGluZwBhZ3JlY29yZF9jYWxsYmFjayBvZiBhIGJhZCBvYmplY3QAcGVuZCBkaWN0b2YgYSBiYWQgb2JqZWN0AG1vdmUgdG8gZnJvbnQgbG9jayBpbmNvbnNpc3RlbmN5AFxcAGZhdGFsIGZsZXggc2Nhbm5lciBpbnRlcm5hbCBlcnJvci0tbm8gYWN0aW9uIGZvdW5kACVzCgBmYXRhbCBmbGV4IHNjYW5u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JWQsJWQpICglZCwlZCkKAGNjICglZCBjZWxscykgYXQgKCVkLCVkKQoAJXMgbm8uIGNlbGxzICVkIFcgJWQgSCAlZAoAICAlZCAlZCBjZWxsCgBsaWJwYWNrOiBkaXNjID0gJWYgKCA8IDApCgBQYWNraW5nOiBjb21wdXRlIGdyaWQgc2l6ZQoAYSAlZiBiICVmIGMgJWYgZCAlZiByICVmCgByb290ICVkICglZikgJWQgKCVmKQoAIHIxICVmIHIyICVmCgBwaW5mbwBwYWNrLmMAZ2V0UGFja0luZm8AICBtYXJnaW4gJWQKAHBhY2ttb2RlAHBhcnNlUGFja01vZGVJbmZvAGFycmF5AGFzcGVjdAAlZgBwYWNrIGluZm86CgAgIG1vZGUgICAlcwoAICBhc3BlY3QgJWYKACAgc2l6ZSAgICVkCgAgIGZsYWdzICAlZAoAdW5kZWZpbmVkAHBhY2sAQXJyb3cgdHlwZSAiJXMiIHVua25vd24gLSBpZ25vcmluZwoAbm9ybWFsAGNyb3cAdGVlAGRvdABpbnYAdmVlAHBlbgBtcHR5AGN1cnZlAGljdXJ2ZQBsAGhhbGYAaW52ZW1wdHkAX2JhY2tncm91bmQAX2RyYXdfAENvdWxkIG5vdCBwYXJzZSAiX2JhY2tncm91bmQiIGF0dHJpYnV0ZSBpbiBncmFwaCAlcwoAICAiJXMiCgBubyBtZW1vcnkgZnJvbSB6bWFsbG9jKCkKAG9iagBlbWl0LmMAcG9wX29ial9zdGF0ZQBjbHVzdAAlbGQAcGFnZSVkLCVkXwBUb3RhbCBzaXplID4gMSBpbiAiJXMiIGNvbG9yIHNwZWMgAElsbGVnYWwgbGVuZ3RoIHZhbHVlIGluICIlcyIgY29sb3IgYXR0cmlidXRlIABsbnJjb2xvcnNjaGVtZQBlbWl0X2VkZ2VfbGFiZWwAJXMtJXMAZm9yd2FyZABiYWNrACAtPiAAIC0tIABpbiBlZGdlICVzJXMlcwoAbGFiZWxhbGlnbmVkAGVkZ2VocmVmAGVkZ2VVUkwAbGFiZWxocmVmAGxhYmVsVVJMAHRhaWxocmVmAHRhaWxVUkwAaGVhZGhyZWYAaGVhZFVSTABlZGdldGFyZ2V0AGxhYmVsdGFyZ2V0AHRhaWx0YXJnZXQAaGVhZHRhcmdldABlZGdldG9vbHRpcABsYWJlbHRvb2x0aXAAdGFpbHRvb2x0aXAAaGVhZHRvb2x0aXAAAW5lc3Rpbmcgbm90IGFsbG93ZWQgaW4gc3R5bGU6ICVzCgB1bm1hdGNoZWQgJyknIGluIHN0eWxlOiAlcwoAdHJ1bmNhdGluZyBzdHlsZSAnJXMnCgB1bm1hdGNoZWQgJygnIGluIHN0eWxlOiAlcwoAYWxsAGluIGNsdXN0ZXIgJXMKAE1vcmUgdGhhbiAyIGNvbG9ycyBzcGVjaWZpZWQgZm9yIGEgZ3JhZGllbnQgLSBpZ25vcmluZyByZW1haW5pbmcKAGdyYWRpZW50IHBlbiBjb2xvcnMgbm90IHlldCBzdXBwb3J0ZWQuCgBJbWFnZXMgdW5zdXBwb3J0ZWQgaW4gImJhY2tncm91bmQiIGF0dHJpYnV0ZQoAbGF5ZXJzIG5vdCBzdXBwb3J0ZWQgaW4gJXMgb3V0cHV0CgBMYXlvdXQgd2FzIG5vdCBkb25lLiAgTWlzc2luZyBsYXlvdXQgcGx1Z2lucz8gCgBndlJlbmRlckpvYnMgJXM6ICUuMmYgc2Vjcy4KAGxheW91dCB3YXMgbm90IGRvbmUKAHJlbmRlcmVyIGZvciAlcyBpcyB1bmF2YWlsYWJsZQoAcGFnZWRpcj0lcyBpZ25vcmVkCgB2aWV3cG9ydAAlbGYsJWxmLCVsZiwnJVteJ10nACVsZiwlbGYsJWxmLCVbXixdJXMAJWxmLCVsZiwlbGYsJWxmLCVsZgBvdXRwdXRvcmRlcgBvZGVzZmlyc3QAZGdlc2ZpcnN0AGxheWVycwBsYXllcnNlbGVjdABUaGUgbGF5ZXJzZWxlY3QgYXR0cmlidXRlICIlcyIgZG9lcyBub3QgbWF0Y2ggYW55IGxheWVyIHNwZWNpZmVkIGJ5IHRoZSBsYXllcnMgYXR0cmlidXRlIC0gaWdub3JlZC4KAGxheWVyc2VwADoJIABsYXllcmxpc3RzZXAALABUaGUgY2hhcmFjdGVyICclYycgYXBwZWFycyBpbiBib3RoIHRoZSBsYXllcnNlcCBhbmQgbGF5ZXJsaXN0c2VwIGF0dHJpYnV0ZXMgLSBsYXllcmxpc3RzZXAgaWdub3JlZC4KAHBhZABCTABwYWdlZGlyAHNvbGlkAABzZXRsaW5ld2lkdGgAMQAAc3BsLT5zaXplID4gMABpbml0X3NwbGluZXNfYmIAYnouc2l6ZSA+IDAAYmV6aWVyX2JiAGJ6LnNpemUgJSAzID09IDEAJWxmAGZvbnRwYXRoAERPVEZPTlRQQVRIAEdERk9OVFBBVEgAaW1hZ2VwYXRoAHF1YW50dW0AcmFua2RpcgBMUgBCVABSTABub2Rlc2VwAHJhbmtzZXAAZXF1YWxseQBzaG93Ym94ZXMAZm9udG5hbWVzAHNpemUAcGFnZQBjZW50ZXIAcm90YXRlAG9yaWVudGF0aW9uAGxhbmRzY2FwZQBjbHVzdGVycmFuawBjb25jZW50cmF0ZQBkcGkAcmVzb2x1dGlvbgBvcmRlcmluZwBmaWxsY29sb3IAZm9udHNpemUAZm9udG5hbWUAZm9udGNvbG9yAHhsYWJlbABwZW53aWR0aABwZXJpcGhlcmllcwBza2V3AGRpc3RvcnRpb24Abm9qdXN0aWZ5AGxheWVyAGdyb3VwAGNvbW1lbnQAdmVydGljZXMAegB3ZWlnaHQAbGFiZWxmbG9hdABkaXIAYXJyb3doZWFkAGFycm93dGFpbABoZWFkbGFiZWwAdGFpbGxhYmVsAGxhYmVsZm9udHNpemUAbGFiZWxmb250bmFtZQBsYWJlbGZvbnRjb2xvcgBsYWJlbGRpc3RhbmNlAGxhYmVsYW5nbGUAbWlubGVuAGRlY29yYXRlAGFycm93c2l6ZQBjb25zdHJhaW50AHRhaWxjbGlwAGhlYWRjbGlwAGxhYmVsanVzdABsb2NhbABnbG9iYWwAJWxmLCVsZiVjACVsZiVjAHJhdGlvAGF1dG8AY29tcHJlc3MAZXhwYW5kAGZpbGwAZ2QAcHMAc3ZnAGNoYXJzZXQAdXRmLTgAbGF0aW4tMQBsYXRpbjEAbDEASVNPLTg4NTktMQBJU09fODg1OS0xAElTTzg4NTktMQBJU08tSVItMTAwAGJpZy01AGJpZzUAdXRmOABVbnN1cHBvcnRlZCBjaGFyc2V0ICIlcyIgLSBhc3N1bWluZyB1dGYtOAoAVW5zdXBwb3J0ZWQgY2hhcnNldCB2YWx1ZSAlZAoAVVRGLTgAQklHLTUAaW4gbGFiZWwgb2YgZ3JhcGggJXMKAGluIGxhYmVsIG9mIG5vZGUgJXMKAGluIGxhYmVsIG9mIGVkZ2UgJXMgJXMgJXMKAGtpbmQgPT0gTFRfTk9ORQBsYWJlbHMuYwBtYWtlX2xhYmVsAFxMAFxHAFxFAFxIAFxUACYjMTM7ACYjMTA7ACZxdW90OwAmIzE2MDsAJmFtcDsAJmd0OwAmIzM5OwAmIzQ1OwAmbHQ7ACVzICVkIG5vZGVzICVkIGVkZ2VzIG1heGl0ZXI9JWQgYmFsYW5jZT0lZAoAbmV0d29yayBzaW1wbGV4OiAAJWQgACVzJWQgbm9kZXMgJWQgZWRnZXMgJWQgaXRlciAlLjJmIHNlYwoAdXBkYXRlOiBtaXNtYXRjaGVkIGxjYSBpbiB0cmVldXBkYXRlcwoAVHJlZV9lZGdlLnNpemUgPT0gTl9ub2RlcyAtIDEAbnMuYwBmZWFzaWJsZV90cmVlACFUUkVFX0VER0UoZSkAbWVyZ2VfdHJlZXMAKHIwLT5oZWFwX2luZGV4ID4gLTEpIHx8IChyMS0+aGVhcF9pbmRleCA+IC0xKQBTVHNldFVuaW9uAHItPmhlYXBfaW5kZXggPj0gMABhZGRfdHJlZV9lZGdlOiBtaXNzaW5nIHRyZWUgZWRnZQoAYWRkX3RyZWVfZWRnZTogZW1wdHkgb3V0ZWRnZSBsaXN0CgBhZGRfdHJlZV9lZGdlOiBlbXB0eSBpbmVkZ2UgbGlzdAoAdHJvdWJsZSBpbiBpbml0X3JhbmsKAAklcyAlZAoAc2VhcmNoc2l6ZQBncmFwaCAAIABub2RlIABzdG9wCgAlLjVnAHBvcwByZWN0cwB4bHAAbHAAaGVhZF9scAB0YWlsX2xwAGx3aWR0aABsaGVpZ2h0AGJiACUuNWcsJS41ZywlLjVnACwlLjVnACUuNWcsJS41ZwBzYW1wbGVwb2ludHMAJS41ZyAlLjVnAHMsJS41ZywlLjVnIABlLCUuNWcsJS41ZyAAJS41ZywlLjVnLCUuNWcsJS41ZwAlLjJmACUuNWcsJS41ZywlLjVnLCUuNWcgAC9wYXRoYm94IHsKICAgIC9YIGV4Y2ggbmVnICUuNWcgc3ViIGRlZgogICAgL1kgZXhjaCAlLjVnIHN1YiBkZWYKICAgIC94IGV4Y2ggbmVnICUuNWcgc3ViIGRlZgogICAgL3kgZXhjaCAlLjVnIHN1YiBkZWYKICAgIG5ld3BhdGggeCB5IG1vdmV0bwogICAgWCB5IGxpbmV0bwogICAgWCBZIGxpbmV0bwogICAgeCBZIGxpbmV0bwogICAgY2xvc2VwYXRoIHN0cm9rZQp9IGRlZgoAL3BhdGhib3ggewogICAgL1kgZXhjaCAlLjVnIHN1YiBkZWYKICAgIC9YIGV4Y2ggJS41ZyBzdWIgZGVmCiAgICAveSBleGNoICUuNWcgc3ViIGRlZgogICAgL3ggZXhjaCAlLjVnIHN1YiBkZWYKICAgIG5ld3BhdGggeCB5IG1vdmV0bwogICAgWCB5IGxpbmV0bwogICAgWCBZIGxpbmV0bwogICAgeCBZIGxpbmV0bwogICAgY2xvc2VwYXRoIHN0cm9rZQogfSBkZWYKL2RiZ3N0YXJ0IHsgZ3NhdmUgJS41ZyAlLjVnIHRyYW5zbGF0ZSB9IGRlZgovYXJyb3dsZW5ndGggMTAgZGVmCi9hcnJvd3dpZHRoIGFycm93bGVuZ3RoIDIgZGl2IGRlZgovYXJyb3doZWFkIHsKICAgIGdzYXZlCiAgICByb3RhdGUKICAgIGN1cnJlbnRwb2ludAogICAgbmV3cGF0aAogICAgbW92ZXRvCiAgICBhcnJvd2xlbmd0aCBhcnJvd3dpZHRoIDIgZGl2IHJsaW5ldG8KICAgIDAgYXJyb3d3aWR0aCBuZWcgcmxpbmV0bwogICAgY2xvc2VwYXRoIGZpbGwKICAgIGdyZXN0b3JlCn0gYmluZCBkZWYKL21ha2VhcnJvdyB7CiAgICBjdXJyZW50cG9pbnQgZXhjaCBwb3Agc3ViIGV4Y2ggY3VycmVudHBvaW50IHBvcCBzdWIgYXRhbgogICAgYXJyb3doZWFkCn0gYmluZCBkZWYKL3BvaW50IHsgICAgbmV3cGF0aCAgICAyIDAgMzYwIGFyYyBmaWxsfSBkZWYvbWFrZXZlYyB7CiAgICAvWSBleGNoIGRlZgogICAgL1ggZXhjaCBkZWYKICAgIC95IGV4Y2ggZGVmCiAgICAveCBleGNoIGRlZgogICAgbmV3cGF0aCB4IHkgbW92ZXRvCiAgICBYIFkgbGluZXRvIHN0cm9rZQogICAgWCBZIG1vdmV0bwogICAgeCB5IG1ha2VhcnJvdwp9IGRlZgoAbG9zdCAlcyAlcyBlZGdlCgBubyBwb3NpdGlvbiBmb3IgZWRnZSB3aXRoIGxhYmVsICVzAG5vIHBvc2l0aW9uIGZvciBlZGdlIHdpdGggdGFpbCBsYWJlbCAlcwBubyBwb3NpdGlvbiBmb3IgZWRnZSB3aXRoIGhlYWQgbGFiZWwgJXMAbm8gcG9zaXRpb24gZm9yIGVkZ2Ugd2l0aCB4bGFiZWwgJXMAZm9yY2VsYWJlbHMAJWQgb3V0IG9mICVkIGxhYmVscyBwb3NpdGlvbmVkLgoAJWQgb3V0IG9mICVkIGV4dGVyaW9yIGxhYmVscyBwb3NpdGlvbmVkLgoAJWQgb2JqcyAlZCB4bGFiZWxzIGZvcmNlPSVkIGJiPSglLjAyZiwlLjAyZikgKCUuMDJmLCUuMDJmKQoAb2JqZWN0cwoAIFslZF0gKCUuMDJmLCUuMDJmKSAoJS4wMmYsJS4wMmYpICVwICIlcyIKAHhsYWJlbHMKACBbJWRdICVwIHNldCAlZCAoJS4wMmYsJS4wMmYpICglLjAyZiwlLjAyZikgJXMKAHNoYXBlZmlsZSBub3Qgc2V0IG9yIG5vdCBmb3VuZCBmb3IgZXBzZiBub2RlICVzCgBjb3VsZG4ndCBvcGVuIGVwc2YgZmlsZSAlcwoAJSUlJUJvdW5kaW5nQm94OiAlZCAlZCAlZCAlZAByZWFkAEJvdW5kaW5nQm94IG5vdCBmb3VuZCBpbiBlcHNmIGZpbGUgJXMKAGNhbid0IGZpbmQgbGlicmFyeSBmaWxlICVzCgBjYW4ndCBvcGVuIGxpYnJhcnkgZmlsZSAlcwoARU9GAEJFR0lOAEVORABUUkFJTEVSAC91c2VyX3NoYXBlXyVkIHsKACUlQmVnaW5Eb2N1bWVudDoKACUlRW5kRG9jdW1lbnQKAH0gYmluZCBkZWYKAFVURi04IGlucHV0IHVzZXMgbm9uLUxhdGluMSBjaGFyYWN0ZXJzIHdoaWNoIGNhbm5vdCBiZSBoYW5kbGVkIGJ5IHRoaXMgUG9zdFNjcmlwdCBkcml2ZXIKAGNhbm5vdCByZS1hbGxvY2F0ZSBwcwoAcm91dGVzcGxpbmVzaW5pdDogY2Fubm90IGFsbG9jYXRlIHBzCgByb3V0ZXNwbGluZXM6ICVkIGVkZ2VzLCAlZCBib3hlcyAlLjJmIHNlYwoAaW4gcm91dGVzcGxpbmVzLCBjYW5ub3QgZmluZCBOT1JNQUwgZWRnZQoAaW4gcm91dGVzcGxpbmVzLCBpbGxlZ2FsIHZhbHVlcyBvZiBwcmV2ICVkIGFuZCBuZXh0ICVkLCBsaW5lICVkCgBpbiByb3V0ZXNwbGluZXMsIGVkZ2UgaXMgYSBsb29wIGF0ICVzCgBpbiByb3V0ZXNwbGluZXMsIFBzaG9ydGVzdHBhdGggZmFpbGVkCgBpbiByb3V0ZXNwbGluZXMsIFByb3V0ZXNwbGluZSBmYWlsZWQKAFVuYWJsZSB0byByZWNsYWltIGJveCBzcGFjZSBpbiBzcGxpbmUgcm91dGluZyBmb3IgZWRnZSAiJXMiIC0+ICIlcyIuIFNvbWV0aGluZyBpcyBwcm9iYWJseSBzZXJpb3VzbHkgd3JvbmcuCgBpbiBjaGVja3BhdGgsIGJveCAwIGhhcyBMTCBjb29yZCA+IFVSIGNvb3JkCgBpbiBjaGVja3BhdGgsIGJveCAlZCBoYXMgTEwgY29vcmQgPiBVUiBjb29yZAoAaW4gY2hlY2twYXRoLCBib3hlcyAlZCBhbmQgJWQgZG9uJ3QgdG91Y2gKAGluIGNoZWNrcGF0aCwgc3RhcnQgcG9ydCBub3QgaW4gZmlyc3QgYm94CgBpbiBjaGVja3BhdGgsIGVuZCBwb3J0IG5vdCBpbiBsYXN0IGJveAoAJWQgYm94ZXM6CgAlZCAoJS41ZywgJS41ZyksICglLjVnLCAlLjVnKQoAY29uc3RyYWluZWQAbm90IGNvbnN0cmFpbmVkAHN0YXJ0IHBvcnQ6ICglLjVnLCAlLjVnKSwgdGFuZ2VudCBhbmdsZTogJS41ZywgJXMKAGVuZCBwb3J0OiAoJS41ZywgJS41ZyksIHRhbmdlbnQgYW5nbGU6ICUuNWcsICVzCgBzaWRlcyA9PSA0AHNoYXBlcy5jAHJvdW5kX2Nvcm5lcnMAYmFkIGxhYmVsIGZvcm1hdCAlcwoAXE4AbWFyZ2luACVsZiwlbGYAcmVndWxhcgBjdXN0b20Ac2hhcGVmaWxlADxuaWw+AE5vIG9yIGltcHJvcGVyIHNoYXBlZmlsZT0iJXMiIGZvciBub2RlICIlcyIKAE5vIG9yIGltcHJvcGVyIGltYWdlPSIlcyIgZm9yIG5vZGUgIiVzIgoAbGFiZWxsb2MAbm9kZSAnJXMnLCBncmFwaCAnJXMnIHNpemUgdG9vIHNtYWxsIGZvciBsYWJlbAoAZXBzZgB1c2luZyAlcyBmb3IgdW5rbm93biBzaGFwZSAlcwoAcG9seWdvbgBvdmFsAGNpcmNsZQBwb2ludABlZ2cAdHJpYW5nbGUAcGxhaW50ZXh0AHBsYWluAGRpYW1vbmQAdHJhcGV6aXVtAHBhcmFsbGVsb2dyYW0AaG91c2UAcGVudGFnb24AaGV4YWdvbgBzZXB0YWdvbgBvY3RhZ29uAG5vdGUAdGFiAGZvbGRlcgBib3gzZABjb21wb25lbnQAY3lsaW5kZXIAcmVjdAByZWN0YW5nbGUAc3F1YXJlAGRvdWJsZWNpcmNsZQBkb3VibGVvY3RhZ29uAHRyaXBsZW9jdGFnb24AaW52dHJpYW5nbGUAaW52dHJhcGV6aXVtAGludmhvdXNlAHVuZGVybGluZQBNZGlhbW9uZABNc3F1YXJlAE1jaXJjbGUAcHJvbW90ZXIAY2RzAHRlcm1pbmF0b3IAdXRyAGluc3VsYXRvcgByaWJvc2l0ZQBybmFzdGFiAHByb3RlYXNlc2l0ZQBwcm90ZWluc3RhYgBwcmltZXJzaXRlAHJlc3RyaWN0aW9uc2l0ZQBmaXZlcG92ZXJoYW5nAHRocmVlcG92ZXJoYW5nAG5vdmVyaGFuZwBhc3NlbWJseQBzaWduYXR1cmUAcnByb21vdGVyAGxhcnJvdwByYXJyb3cAbHByb21vdGVyAHJlY29yZABNcmVjb3JkAHN0YXIAIzgwODA4MAAjZmNmY2ZjACMzMDMwMzAAI2U4ZThlOAAjZTBlMGUwACNmMGYwZjAAIzEwMTAxMAAjZjhmOGY4AGluIG5vZGUgJXMKAHJvdW5kZWQAZGlhZ29uYWxzAHJhZGlhbABzdHJpcGVkAHdlZGdlZABfAG5vZGUgJXMsIHBvcnQgJXMsIHVucmVjb2duaXplZCBjb21wYXNzIHBvaW50ICclcycgLSBpZ25vcmVkCgBub2RlICVzLCBwb3J0ICVzIHVucmVjb2duaXplZAoAJS41ZyAlLjVnIHRyYW5zbGF0ZSBuZXdwYXRoIHVzZXJfc2hhcGVfJWQKAGludmlzAABmaWxsZWQAAHMAZQB3AHNwbGluZXMuYwBiZWdpbnBhdGgAUC0+ZW5kLnRoZXRhIDwgMiAqIE1fUEkAZW5kcGF0aABtYWtlU2VsZkVkZ2UAZ2V0c3BsaW5lcG9pbnRzOiBubyBzcGxpbmUgcG9pbnRzIGF2YWlsYWJsZSBmb3IgZWRnZSAoJXMsJXMpCgBwb2x5bGluZU1pZHBvaW50AHNwYW4tPmZvbnQAdGV4dHNwYW4uYwB0ZXh0c3Bhbl9zaXplAGZvbnQtPm5hbWUAZm9udG5hbWU6ICIlcyIgcmVzb2x2ZWQgdG86ICVzCgBmb250bmFtZTogdW5hYmxlIHRvIHJlc29sdmUgIiVzIgoAY291cgBhcmlhbABoZWx2ZXRpY2EAW2ludGVybmFsIHRpbWVzXQBbaW50ZXJuYWwgY291cmllcl0AW2ludGVybmFsIGFyaWFsXQBBdmFudEdhcmRlLUJvb2sAVVJXIEdvdGhpYyBMAGJvb2sAc2Fucy1TZXJpZgBBdmFudEdhcmRlLUJvb2tPYmxpcXVlAG9ibGlxdWUAaXRhbGljAEF2YW50R2FyZGUtRGVtaQBkZW1pAEF2YW50R2FyZGUtRGVtaU9ibGlxdWUAQm9va21hbi1EZW1pAFVSVyBCb29rbWFuIEwAc2VyaWYAQm9va21hbi1EZW1pSXRhbGljAEJvb2ttYW4tTGlnaHQAbGlnaHQAQm9va21hbi1MaWdodEl0YWxpYwBDb3VyaWVyAG1vbm9zcGFjZQBDb3VyaWVyLUJvbGQAQ291cmllci1Cb2xkT2JsaXF1ZQBDb3VyaWVyLU9ibGlxdWUASGVsdmV0aWNhAEhlbHZldGljYS1Cb2xkAEhlbHZldGljYS1Cb2xkT2JsaXF1ZQBIZWx2ZXRpY2EtTmFycm93AGNvbmRlbnNlZABIZWx2ZXRpY2EtTmFycm93LUJvbGQASGVsdmV0aWNhLU5hcnJvdy1Cb2xkT2JsaXF1ZQBIZWx2ZXRpY2EtTmFycm93LU9ibGlxdWUASGVsdmV0aWNhLU9ibGlxdWUATmV3Q2VudHVyeVNjaGxiay1Cb2xkAENlbnR1cnkgU2Nob29sYm9vayBMAE5ld0NlbnR1cnlTY2hsYmstQm9sZEl0YWxpYwBOZXdDZW50dXJ5U2NobGJrLUl0YWxpYwBOZXdDZW50dXJ5U2NobGJrLVJvbWFuAHJvbWFuAFBhbGF0aW5vLUJvbGQAUGFsYXRpbm8gTGlub3R5cGUAUGFsYXRpbm8tQm9sZEl0YWxpYwBQYWxhdGluby1JdGFsaWMAUGFsYXRpbm8tUm9tYW4AU3ltYm9sAGZhbnRhc3kAVGltZXMtQm9sZABUaW1lcwBUaW1lcy1Cb2xkSXRhbGljAFRpbWVzLUl0YWxpYwBaYXBmQ2hhbmNlcnktTWVkaXVtSXRhbGljAFVSVyBDaGFuY2VyeSBMAG1lZGl1bQBaYXBmRGluZ2JhdHMARGluZ2JhdHMAaW5wdXRzY2FsZQBubwB0cnVlAHllcwB1dGlscy5jAHUgPT0gVUZfZmluZCh1KQBVRl9zZXRuYW1lAAFmaWxlIGxvYWRpbmcgaXMgZGlzYWJsZWQgYmVjYXVzZSB0aGUgZW52aXJvbm1lbnQgY29udGFpbnMgU0VSVkVSX05BTUU9IiVzIgphbmQgdGhlIEdWX0ZJTEVfUEFUSCB2YXJpYWJsZSBpcyB1bnNldCBvciBlbXB0eS4KAFBhdGggcHJvdmlkZWQgdG8gZmlsZTogIiVzIiBoYXMgYmVlbiBpZ25vcmVkIGJlY2F1c2UgZmlsZXMgYXJlIG9ubHkgcGVybWl0dGVkIHRvIGJlIGxvYWRlZCBmcm9tIHRoZSBkaXJlY3RvcmllcyBpbiAiJXMiIHdoZW4gcnVubmluZyBpbiBhbiBodHRwIHNlcnZlci4KACVzJXMlcwAvADoAZWxsaXBzZQBUaW1lcy1Sb21hbgBjbHVzdGVyAF9fY2x1c3Rlcm5vZGVzAGNsdXN0ZXIgY3ljbGUgJXMgLS0gJXMgbm90IHN1cHBvcnRlZAoAdGFpbCBjbHVzdGVyICVzIGluc2lkZSBoZWFkIGNsdXN0ZXIgJXMKAGhlYWQgY2x1c3RlciAlcyBpbnNpZGUgdGFpbCBjbHVzdGVyICVzCgB0YWlsIG5vZGUgJXMgaW5zaWRlIGhlYWQgY2x1c3RlciAlcwoAaGVhZCBub2RlICVzIGluc2lkZSB0YWlsIGNsdXN0ZXIgJXMKAF9fAGxhYmVsAHNoYXBlAGJveABUd28gY2x1c3RlcnMgbmFtZWQgJXMgLSB0aGUgc2Vjb25kIHdpbGwgYmUgaWdub3JlZAoAbWFwTgBBRWxpZwBBYWN1dGUAQWNpcmMAQWdyYXZlAEFscGhhAEFyaW5nAEF0aWxkZQBBdW1sAEJldGEAQ2NlZGlsAENoaQBEYWdnZXIARGVsdGEARVRIAEVhY3V0ZQBFY2lyYwBFZ3JhdmUARXBzaWxvbgBFdGEARXVtbABHYW1tYQBJYWN1dGUASWNpcmMASWdyYXZlAElvdGEASXVtbABLYXBwYQBMYW1iZGEATXUATnRpbGRlAE51AE9FbGlnAE9hY3V0ZQBPY2lyYwBPZ3JhdmUAT21lZ2EAT21pY3JvbgBPc2xhc2gAT3RpbGRlAE91bWwAUGhpAFBpAFByaW1lAFBzaQBSaG8AU2Nhcm9uAFNpZ21hAFRIT1JOAFRhdQBUaGV0YQBVYWN1dGUAVWNpcmMAVWdyYXZlAFVwc2lsb24AVXVtbABYaQBZYWN1dGUAWXVtbABaZXRhAGFhY3V0ZQBhY2lyYwBhY3V0ZQBhZWxpZwBhZ3JhdmUAYWxlZnN5bQBhbHBoYQBhbXAAYW5kAGFuZwBhcmluZwBhc3ltcABhdGlsZGUAYXVtbABiZHF1bwBiZXRhAGJydmJhcgBidWxsAGNhcABjY2VkaWwAY2VkaWwAY2VudABjaGkAY2lyYwBjbHVicwBjb25nAGNvcHkAY3JhcnIAY3VwAGN1cnJlbgBkQXJyAGRhZ2dlcgBkYXJyAGRlZwBkZWx0YQBkaWFtcwBkaXZpZGUAZWFjdXRlAGVjaXJjAGVncmF2ZQBlbXB0eQBlbXNwAGVuc3AAZXBzaWxvbgBlcXVpdgBldGEAZXRoAGV1bWwAZXVybwBleGlzdABmbm9mAGZvcmFsbABmcmFjMTIAZnJhYzE0AGZyYWMzNABmcmFzbABnYW1tYQBnZQBndABoQXJyAGhhcnIAaGVhcnRzAGhlbGxpcABpYWN1dGUAaWNpcmMAaWV4Y2wAaWdyYXZlAGltYWdlAGluZmluAGludABpb3RhAGlxdWVzdABpc2luAGl1bWwAa2FwcGEAbEFycgBsYW1iZGEAbGFuZwBsYXF1bwBsYXJyAGxjZWlsAGxkcXVvAGxlAGxmbG9vcgBsb3dhc3QAbG96AGxybQBsc2FxdW8AbHNxdW8AbHQAbWFjcgBtZGFzaABtaWNybwBtaWRkb3QAbXUAbmFibGEAbmJzcABuZGFzaABuZQBuaQBub3QAbm90aW4AbnN1YgBudGlsZGUAbnUAb2FjdXRlAG9jaXJjAG9lbGlnAG9ncmF2ZQBvbGluZQBvbWVnYQBvbWljcm9uAG9wbHVzAG9yAG9yZGYAb3JkbQBvc2xhc2gAb3RpbGRlAG90aW1lcwBvdW1sAHBhcmEAcGFydABwZXJtaWwAcGVycABwaGkAcGkAcGl2AHBsdXNtbgBwb3VuZABwcmltZQBwcm9kAHByb3AAcHNpAHF1b3QAckFycgByYWRpYwByYW5nAHJhcXVvAHJhcnIAcmNlaWwAcmRxdW8AcmVhbAByZWcAcmZsb29yAHJobwBybG0AcnNhcXVvAHJzcXVvAHNicXVvAHNjYXJvbgBzZG90AHNlY3QAc2h5AHNpZ21hAHNpZ21hZgBzaW0Ac3BhZGVzAHN1YgBzdWJlAHN1bQBzdXAAc3VwMQBzdXAyAHN1cDMAc3VwZQBzemxpZwB0YXUAdGhlcmU0AHRoZXRhAHRoZXRhc3ltAHRoaW5zcAB0aG9ybgB0aWxkZQB0aW1lcwB0cmFkZQB1QXJyAHVhY3V0ZQB1YXJyAHVjaXJjAHVncmF2ZQB1bWwAdXBzaWgAdXBzaWxvbgB1dW1sAHdlaWVycAB4aQB5YWN1dGUAeWVuAHl1bWwAemV0YQB6d2oAenduagBVVEY4IGNvZGVzID4gNCBieXRlcyBhcmUgbm90IGN1cnJlbnRseSBzdXBwb3J0ZWQgKGdyYXBoICVzKSAtIHRyZWF0ZWQgYXMgTGF0aW4tMS4gUGVyaGFwcyAiLUdjaGFyc2V0PWxhdGluMSIgaXMgbmVlZGVkPwoASW52YWxpZCAlZC1ieXRlIFVURjggZm91bmQgaW4gaW5wdXQgb2YgZ3JhcGggJXMgLSB0cmVhdGVkIGFzIExhdGluLTEuIFBlcmhhcHMgIi1HY2hhcnNldD1sYXRpbjEiIGlzIG5lZWRlZD8KAGJ6LnNpemUAb3ZlcmxhcF9iZXppZXIAdXJ2ZWQAb21wb3VuZABhbHNlAGluZQBvbmUAbwBydGhvAG9seWxpbmUAcGxpbmUAcnVlAGVzAFVua25vd24gInNwbGluZXMiIHZhbHVlOiAiJXMiIC0gaWdub3JlZAoAc3BsaW5lcwBvZGIAT3J0aG9nb25hbCBlZGdlcyBkbyBub3QgY3VycmVudGx5IGhhbmRsZSBlZGdlIGxhYmVscy4gVHJ5IHVzaW5nIHhsYWJlbHMuCgBvcnRobyAlcyAlcwoAY2hhbmkAb3J0aG8uYwBjaGFuU2VhcmNoAGNwACUlIVBTLUFkb2JlLTIuMAolJSUlQm91bmRpbmdCb3g6IChhdGVuZCkKL3BvaW50IHsKICAvWSBleGNoIGRlZgogIC9YIGV4Y2ggZGVmCiAgbmV3cGF0aAogIFggWSAzIDAgMzYwIGFyYyBmaWxsCn0gZGVmCi9jZWxsIHsKICAvWSBleGNoIGRlZgogIC9YIGV4Y2ggZGVmCiAgL3kgZXhjaCBkZWYKICAveCBleGNoIGRlZgogIG5ld3BhdGgKICB4IHkgbW92ZXRvCiAgeCBZIGxpbmV0bwogIFggWSBsaW5ldG8KICBYIHkgbGluZXRvCiAgY2xvc2VwYXRoIHN0cm9rZQp9IGRlZgovbm9kZSB7CiAvdSBleGNoIGRlZgogL3IgZXhjaCBkZWYKIC9kIGV4Y2ggZGVmCiAvbCBleGNoIGRlZgogbmV3cGF0aCBsIGQgbW92ZXRvCiByIGQgbGluZXRvIHIgdSBsaW5ldG8gbCB1IGxpbmV0bwogY2xvc2VwYXRoIGZpbGwKfSBkZWYKCgAlZCAlZCB0cmFuc2xhdGUKADAuOCAwLjggMC44IHNldHJnYmNvbG9yCgBzaG93cGFnZQolJSUlVHJhaWxlcgolJSUlQm91bmRpbmdCb3g6ICVkICVkICVkICVkCgBuZXdwYXRoICVkICVkIG1vdmV0bwoAJWQgJWQgbGluZXRvCgAlZCAlZCBsaW5ldG8gc3Ryb2tlCgBjaGFubmVsICVkICglZiwlZikKACAtPgoAICAgICAAKCglZiwlZiksKCVmLCVmKSkgJXMgJXMAQl9SSUdIVABCX0RPV04AQl9MRUZUAEJfVVAAQl9OT0RFAHNlZwBuZXh0X3NlZwBkZWNpZGVfcG9pbnQAaW5jb21wYXJhYmxlIHNlZ21lbnRzICEhIC0tIEFib3J0aW5nCgBzMS0+Y29tbV9jb29yZD09czItPmNvbW1fY29vcmQAaXNfcGFyYWxsZWwAZ3JhcGggRyB7CgAgbm9kZVtzaGFwZT1wb2ludF0KACAgJWQgW3Bvcz0iJWQsJWQiXQoAICAlZCAtLSAlZFtsZW49IiVmIl0KAH0KAGNvbG9yICVzACVzIGlzIG5vdCBhIGtub3duIGNvbG9yLgoAZXJyb3IgaW4gY29seGxhdGUoKQoAc29saWQAaW52aXNpYmxlAGJvbGQAc2V0bGluZXdpZHRoAGZpbGxlZAB1bmZpbGxlZAB0YXBlcmVkAGd2cmVuZGVyX3NldF9zdHlsZTogdW5zdXBwb3J0ZWQgc3R5bGUgJXMgLSBpZ25vcmluZwoAZ3ZyZW5kZXIuYwBndnJlbmRlcl91c2Vyc2hhcGUAbmFtZQBuYW1lWzBdAGJvdGgAam9iAGd2bG9hZGltYWdlLmMAZ3Zsb2FkaW1hZ2UAdXMAdXMtPm5hbWUAdXMtPm5hbWVbMF0ATm8gbG9hZGltYWdlIHBsdWdpbiBmb3IgIiVzIgoAUQBMZWZ0AEtQX0xlZnQAUmlnaHQAS1BfUmlnaHQAVXAAS1BfVXAARG93bgBLUF9Eb3duAHBsdXMAS1BfQWRkAG1pbnVzAEtQX1N1YnRyYWN0AEYAZWRnZQB0YWlscG9ydABoZWFkcG9ydABrZXkAVVJMAG5vZGUAZGlncmFwaABncmFwaABzdWJncmFwaABfTFRYX2xpYnJhcnkAdGV4dGxheW91dABvYmpwLT5sYmwAeGxhYmVscy5jAHhsYWRqdXN0AHhsaW50ZXJzZWN0aW9ucwBscCAhPSBjbHAAZ2V0aW50cnN4aQBvYmpwMS0+c3oueCA9PSAwICYmIG9ianAxLT5zei55ID09IDAAbGJsZW5jbG9zaW5nAHZwAHhsaGR4dW5sb2FkAHNpemU9PWZyZWVkAHJlY3QuYm91bmRhcnlbMl0gPCBJTlRfTUFYAG9ianBscG1rcwByZWN0LmJvdW5kYXJ5WzNdIDwgSU5UX01BWABvdXQgb2YgbWVtb3J5CgAjJTJ4JTJ4JTJ4JTJ4ACVsZiVsZiVsZgAvYWNjZW50My8xAC9hY2NlbnQzLzIAL2FjY2VudDMvMwAvYWNjZW50NC8xAC9hY2NlbnQ0LzIAL2FjY2VudDQvMwAvYWNjZW50NC80AC9hY2NlbnQ1LzEAL2FjY2VudDUvMgAvYWNjZW50NS8zAC9hY2NlbnQ1LzQAL2FjY2VudDUvNQAvYWNjZW50Ni8xAC9hY2NlbnQ2LzIAL2FjY2VudDYvMwAvYWNjZW50Ni80AC9hY2NlbnQ2LzUAL2FjY2VudDYvNgAvYWNjZW50Ny8xAC9hY2NlbnQ3LzIAL2FjY2VudDcvMwAvYWNjZW50Ny80AC9hY2NlbnQ3LzUAL2FjY2VudDcvNgAvYWNjZW50Ny83AC9hY2NlbnQ4LzEAL2FjY2VudDgvMgAvYWNjZW50OC8zAC9hY2NlbnQ4LzQAL2FjY2VudDgvNQAvYWNjZW50OC82AC9hY2NlbnQ4LzcAL2FjY2VudDgvOAAvYmx1ZXMzLzEAL2JsdWVzMy8yAC9ibHVlczMvMwAvYmx1ZXM0LzEAL2JsdWVzNC8yAC9ibHVlczQvMwAvYmx1ZXM0LzQAL2JsdWVzNS8xAC9ibHVlczUvMgAvYmx1ZXM1LzMAL2JsdWVzNS80AC9ibHVlczUvNQAvYmx1ZXM2LzEAL2JsdWVzNi8yAC9ibHVlczYvMwAvYmx1ZXM2LzQAL2JsdWVzNi81AC9ibHVlczYvNgAvYmx1ZXM3LzEAL2JsdWVzNy8yAC9ibHVlczcvMwAvYmx1ZXM3LzQAL2JsdWVzNy81AC9ibHVlczcvNgAvYmx1ZXM3LzcAL2JsdWVzOC8xAC9ibHVlczgvMgAvYmx1ZXM4LzMAL2JsdWVzOC80AC9ibHVlczgvNQAvYmx1ZXM4LzYAL2JsdWVzOC83AC9ibHVlczgvOAAvYmx1ZXM5LzEAL2JsdWVzOS8yAC9ibHVlczkvMwAvYmx1ZXM5LzQAL2JsdWVzOS81AC9ibHVlczkvNgAvYmx1ZXM5LzcAL2JsdWVzOS84AC9ibHVlczkvOQAvYnJiZzEwLzEAL2JyYmcxMC8xMAAvYnJiZzEwLzIAL2JyYmcxMC8zAC9icmJnMTAvNAAvYnJiZzEwLzUAL2JyYmcxMC82AC9icmJnMTAvNwAvYnJiZzEwLzgAL2JyYmcxMC85AC9icmJnMTEvMQAvYnJiZzExLzEwAC9icmJnMTEvMTEAL2JyYmcxMS8yAC9icmJnMTEvMwAvYnJiZzExLzQAL2JyYmcxMS81AC9icmJnMTEvNgAvYnJiZzExLzcAL2JyYmcxMS84AC9icmJnMTEvOQAvYnJiZzMvMQAvYnJiZzMvMgAvYnJiZzMvMwAvYnJiZzQvMQAvYnJiZzQvMgAvYnJiZzQvMwAvYnJiZzQvNAAvYnJiZzUvMQAvYnJiZzUvMgAvYnJiZzUvMwAvYnJiZzUvNAAvYnJiZzUvNQAvYnJiZzYvMQAvYnJiZzYvMgAvYnJiZzYvMwAvYnJiZzYvNAAvYnJiZzYvNQAvYnJiZzYvNgAvYnJiZzcvMQAvYnJiZzcvMgAvYnJiZzcvMwAvYnJiZzcvNAAvYnJiZzcvNQAvYnJiZzcvNgAvYnJiZzcvNwAvYnJiZzgvMQAvYnJiZzgvMgAvYnJiZzgvMwAvYnJiZzgvNAAvYnJiZzgvNQAvYnJiZzgvNgAvYnJiZzgvNwAvYnJiZzgvOAAvYnJiZzkvMQAvYnJiZzkvMgAvYnJiZzkvMwAvYnJiZzkvNAAvYnJiZzkvNQAvYnJiZzkvNgAvYnJiZzkvNwAvYnJiZzkvOAAvYnJiZzkvOQAvYnVnbjMvMQAvYnVnbjMvMgAvYnVnbjMvMwAvYnVnbjQvMQAvYnVnbjQvMgAvYnVnbjQvMwAvYnVnbjQvNAAvYnVnbjUvMQAvYnVnbjUvMgAvYnVnbjUvMwAvYnVnbjUvNAAvYnVnbjUvNQAvYnVnbjYvMQAvYnVnbjYvMgAvYnVnbjYvMwAvYnVnbjYvNAAvYnVnbjYvNQAvYnVnbjYvNgAvYnVnbjcvMQAvYnVnbjcvMgAvYnVnbjcvMwAvYnVnbjcvNAAvYnVnbjcvNQAvYnVnbjcvNgAvYnVnbjcvNwAvYnVnbjgvMQAvYnVnbjgvMgAvYnVnbjgvMwAvYnVnbjgvNAAvYnVnbjgvNQAvYnVnbjgvNgAvYnVnbjgvNwAvYnVnbjgvOAAvYnVnbjkvMQAvYnVnbjkvMgAvYnVnbjkvMwAvYnVnbjkvNAAvYnVnbjkvNQAvYnVnbjkvNgAvYnVnbjkvNwAvYnVnbjkvOAAvYnVnbjkvOQAvYnVwdTMvMQAvYnVwdTMvMgAvYnVwdTMvMwAvYnVwdTQvMQAvYnVwdTQvMgAvYnVwdTQvMwAvYnVwdTQvNAAvYnVwdTUvMQAvYnVwdTUvMgAvYnVwdTUvMwAvYnVwdTUvNAAvYnVwdTUvNQAvYnVwdTYvMQAvYnVwdTYvMgAvYnVwdTYvMwAvYnVwdTYvNAAvYnVwdTYvNQAvYnVwdTYvNgAvYnVwdTcvMQAvYnVwdTcvMgAvYnVwdTcvMwAvYnVwdTcvNAAvYnVwdTcvNQAvYnVwdTcvNgAvYnVwdTcvNwAvYnVwdTgvMQAvYnVwdTgvMgAvYnVwdTgvMwAvYnVwdTgvNAAvYnVwdTgvNQAvYnVwdTgvNgAvYnVwdTgvNwAvYnVwdTgvOAAvYnVwdTkvMQAvYnVwdTkvMgAvYnVwdTkvMwAvYnVwdTkvNAAvYnVwdTkvNQAvYnVwdTkvNgAvYnVwdTkvNwAvYnVwdTkvOAAvYnVwdTkvOQAvZGFyazIzLzEAL2RhcmsyMy8yAC9kYXJrMjMvMwAvZGFyazI0LzEAL2RhcmsyNC8yAC9kYXJrMjQvMwAvZGFyazI0LzQAL2RhcmsyNS8xAC9kYXJrMjUvMgAvZGFyazI1LzMAL2RhcmsyNS80AC9kYXJrMjUvNQAvZGFyazI2LzEAL2RhcmsyNi8yAC9kYXJrMjYvMwAvZGFyazI2LzQAL2RhcmsyNi81AC9kYXJrMjYvNgAvZGFyazI3LzEAL2RhcmsyNy8yAC9kYXJrMjcvMwAvZGFyazI3LzQAL2RhcmsyNy81AC9kYXJrMjcvNgAvZGFyazI3LzcAL2RhcmsyOC8xAC9kYXJrMjgvMgAvZGFyazI4LzMAL2RhcmsyOC80AC9kYXJrMjgvNQAvZGFyazI4LzYAL2RhcmsyOC83AC9kYXJrMjgvOAAvZ25idTMvMQAvZ25idTMvMgAvZ25idTMvMwAvZ25idTQvMQAvZ25idTQvMgAvZ25idTQvMwAvZ25idTQvNAAvZ25idTUvMQAvZ25idTUvMgAvZ25idTUvMwAvZ25idTUvNAAvZ25idTUvNQAvZ25idTYvMQAvZ25idTYvMgAvZ25idTYvMwAvZ25idTYvNAAvZ25idTYvNQAvZ25idTYvNgAvZ25idTcvMQAvZ25idTcvMgAvZ25idTcvMwAvZ25idTcvNAAvZ25idTcvNQAvZ25idTcvNgAvZ25idTcvNwAvZ25idTgvMQAvZ25idTgvMgAvZ25idTgvMwAvZ25idTgvNAAvZ25idTgvNQAvZ25idTgvNgAvZ25idTgvNwAvZ25idTgvOAAvZ25idTkvMQAvZ25idTkvMgAvZ25idTkvMwAvZ25idTkvNAAvZ25idTkvNQAvZ25idTkvNgAvZ25idTkvNwAvZ25idTkvOAAvZ25idTkvOQAvZ3JlZW5zMy8xAC9ncmVlbnMzLzIAL2dyZWVuczMvMwAvZ3JlZW5zNC8xAC9ncmVlbnM0LzIAL2dyZWVuczQvMwAvZ3JlZW5zNC80AC9ncmVlbnM1LzEAL2dyZWVuczUvMgAvZ3JlZW5zNS8zAC9ncmVlbnM1LzQAL2dyZWVuczUvNQAvZ3JlZW5zNi8xAC9ncmVlbnM2LzIAL2dyZWVuczYvMwAvZ3JlZW5zNi80AC9ncmVlbnM2LzUAL2dyZWVuczYvNgAvZ3JlZW5zNy8xAC9ncmVlbnM3LzIAL2dyZWVuczcvMwAvZ3JlZW5zNy80AC9ncmVlbnM3LzUAL2dyZWVuczcvNgAvZ3JlZW5zNy83AC9ncmVlbnM4LzEAL2dyZWVuczgvMgAvZ3JlZW5zOC8zAC9ncmVlbnM4LzQAL2dyZWVuczgvNQAvZ3JlZW5zOC82AC9ncmVlbnM4LzcAL2dyZWVuczgvOAAvZ3JlZW5zOS8xAC9ncmVlbnM5LzIAL2dyZWVuczkvMwAvZ3JlZW5zOS80AC9ncmVlbnM5LzUAL2dyZWVuczkvNgAvZ3JlZW5zOS83AC9ncmVlbnM5LzgAL2dyZWVuczkvOQAvZ3JleXMzLzEAL2dyZXlzMy8yAC9ncmV5czMvMwAvZ3JleXM0LzEAL2dyZXlzNC8yAC9ncmV5czQvMwAvZ3JleXM0LzQAL2dyZXlzNS8xAC9ncmV5czUvMgAvZ3JleXM1LzMAL2dyZXlzNS80AC9ncmV5czUvNQAvZ3JleXM2LzEAL2dyZXlzNi8yAC9ncmV5czYvMwAvZ3JleXM2LzQAL2dyZXlzNi81AC9ncmV5czYvNgAvZ3JleXM3LzEAL2dyZXlzNy8yAC9ncmV5czcvMwAvZ3JleXM3LzQAL2dyZXlzNy81AC9ncmV5czcvNgAvZ3JleXM3LzcAL2dyZXlzOC8xAC9ncmV5czgvMgAvZ3JleXM4LzMAL2dyZXlzOC80AC9ncmV5czgvNQAvZ3JleXM4LzYAL2dyZXlzOC83AC9ncmV5czgvOAAvZ3JleXM5LzEAL2dyZXlzOS8yAC9ncmV5czkvMwAvZ3JleXM5LzQAL2dyZXlzOS81AC9ncmV5czkvNgAvZ3JleXM5LzcAL2dyZXlzOS84AC9ncmV5czkvOQAvb3JhbmdlczMvMQAvb3JhbmdlczMvMgAvb3JhbmdlczMvMwAvb3JhbmdlczQvMQAvb3JhbmdlczQvMgAvb3JhbmdlczQvMwAvb3JhbmdlczQvNAAvb3JhbmdlczUvMQAvb3JhbmdlczUvMgAvb3JhbmdlczUvMwAvb3JhbmdlczUvNAAvb3JhbmdlczUvNQAvb3JhbmdlczYvMQAvb3JhbmdlczYvMgAvb3JhbmdlczYvMwAvb3JhbmdlczYvNAAvb3JhbmdlczYvNQAvb3JhbmdlczYvNgAvb3JhbmdlczcvMQAvb3JhbmdlczcvMgAvb3JhbmdlczcvMwAvb3JhbmdlczcvNAAvb3JhbmdlczcvNQAvb3JhbmdlczcvNgAvb3JhbmdlczcvNwAvb3JhbmdlczgvMQAvb3JhbmdlczgvMgAvb3JhbmdlczgvMwAvb3JhbmdlczgvNAAvb3JhbmdlczgvNQAvb3JhbmdlczgvNgAvb3JhbmdlczgvNwAvb3JhbmdlczgvOAAvb3JhbmdlczkvMQAvb3JhbmdlczkvMgAvb3JhbmdlczkvMwAvb3JhbmdlczkvNAAvb3JhbmdlczkvNQAvb3JhbmdlczkvNgAvb3JhbmdlczkvNwAvb3JhbmdlczkvOAAvb3JhbmdlczkvOQAvb3JyZDMvMQAvb3JyZDMvMgAvb3JyZDMvMwAvb3JyZDQvMQAvb3JyZDQvMgAvb3JyZDQvMwAvb3JyZDQvNAAvb3JyZDUvMQAvb3JyZDUvMgAvb3JyZDUvMwAvb3JyZDUvNAAvb3JyZDUvNQAvb3JyZDYvMQAvb3JyZDYvMgAvb3JyZDYvMwAvb3JyZDYvNAAvb3JyZDYvNQAvb3JyZDYvNgAvb3JyZDcvMQAvb3JyZDcvMgAvb3JyZDcvMwAvb3JyZDcvNAAvb3JyZDcvNQAvb3JyZDcvNgAvb3JyZDcvNwAvb3JyZDgvMQAvb3JyZDgvMgAvb3JyZDgvMwAvb3JyZDgvNAAvb3JyZDgvNQAvb3JyZDgvNgAvb3JyZDgvNwAvb3JyZDgvOAAvb3JyZDkvMQAvb3JyZDkvMgAvb3JyZDkvMwAvb3JyZDkvNAAvb3JyZDkvNQAvb3JyZDkvNgAvb3JyZDkvNwAvb3JyZDkvOAAvb3JyZDkvOQAvcGFpcmVkMTAvMQAvcGFpcmVkMTAvMTAAL3BhaXJlZDEwLzIAL3BhaXJlZDEwLzMAL3BhaXJlZDEwLzQAL3BhaXJlZDEwLzUAL3BhaXJlZDEwLzYAL3BhaXJlZDEwLzcAL3BhaXJlZDEwLzgAL3BhaXJlZDEwLzkAL3BhaXJlZDExLzEAL3BhaXJlZDExLzEwAC9wYWlyZWQxMS8xMQAvcGFpcmVkMTEvMgAvcGFpcmVkMTEvMwAvcGFpcmVkMTEvNAAvcGFpcmVkMTEvNQAvcGFpcmVkMTEvNgAvcGFpcmVkMTEvNwAvcGFpcmVkMTEvOAAvcGFpcmVkMTEvOQAvcGFpcmVkMTIvMQAvcGFpcmVkMTIvMTAAL3BhaXJlZDEyLzExAC9wYWlyZWQxMi8xMgAvcGFpcmVkMTIvMgAvcGFpcmVkMTIvMwAvcGFpcmVkMTIvNAAvcGFpcmVkMTIvNQAvcGFpcmVkMTIvNgAvcGFpcmVkMTIvNwAvcGFpcmVkMTIvOAAvcGFpcmVkMTIvOQAvcGFpcmVkMy8xAC9wYWlyZWQzLzIAL3BhaXJlZDMvMwAvcGFpcmVkNC8xAC9wYWlyZWQ0LzIAL3BhaXJlZDQvMwAvcGFpcmVkNC80AC9wYWlyZWQ1LzEAL3BhaXJlZDUvMgAvcGFpcmVkNS8zAC9wYWlyZWQ1LzQAL3BhaXJlZDUvNQAvcGFpcmVkNi8xAC9wYWlyZWQ2LzIAL3BhaXJlZDYvMwAvcGFpcmVkNi80AC9wYWlyZWQ2LzUAL3BhaXJlZDYvNgAvcGFpcmVkNy8xAC9wYWlyZWQ3LzIAL3BhaXJlZDcvMwAvcGFpcmVkNy80AC9wYWlyZWQ3LzUAL3BhaXJlZDcvNgAvcGFpcmVkNy83AC9wYWlyZWQ4LzEAL3BhaXJlZDgvMgAvcGFpcmVkOC8zAC9wYWlyZWQ4LzQAL3BhaXJlZDgvNQAvcGFpcmVkOC82AC9wYWlyZWQ4LzcAL3BhaXJlZDgvOAAvcGFpcmVkOS8xAC9wYWlyZWQ5LzIAL3BhaXJlZDkvMwAvcGFpcmVkOS80AC9wYWlyZWQ5LzUAL3BhaXJlZDkvNgAvcGFpcmVkOS83AC9wYWlyZWQ5LzgAL3BhaXJlZDkvOQAvcGFzdGVsMTMvMQAvcGFzdGVsMTMvMgAvcGFzdGVsMTMvMwAvcGFzdGVsMTQvMQAvcGFzdGVsMTQvMgAvcGFzdGVsMTQvMwAvcGFzdGVsMTQvNAAvcGFzdGVsMTUvMQAvcGFzdGVsMTUvMgAvcGFzdGVsMTUvMwAvcGFzdGVsMTUvNAAvcGFzdGVsMTUvNQAvcGFzdGVsMTYvMQAvcGFzdGVsMTYvMgAvcGFzdGVsMTYvMwAvcGFzdGVsMTYvNAAvcGFzdGVsMTYvNQAvcGFzdGVsMTYvNgAvcGFzdGVsMTcvMQAvcGFzdGVsMTcvMgAvcGFzdGVsMTcvMwAvcGFzdGVsMTcvNAAvcGFzdGVsMTcvNQAvcGFzdGVsMTcvNgAvcGFzdGVsMTcvNwAvcGFzdGVsMTgvMQAvcGFzdGVsMTgvMgAvcGFzdGVsMTgvMwAvcGFzdGVsMTgvNAAvcGFzdGVsMTgvNQAvcGFzdGVsMTgvNgAvcGFzdGVsMTgvNwAvcGFzdGVsMTgvOAAvcGFzdGVsMTkvMQAvcGFzdGVsMTkvMgAvcGFzdGVsMTkvMwAvcGFzdGVsMTkvNAAvcGFzdGVsMTkvNQAvcGFzdGVsMTkvNgAvcGFzdGVsMTkvNwAvcGFzdGVsMTkvOAAvcGFzdGVsMTkvOQAvcGFzdGVsMjMvMQAvcGFzdGVsMjMvMgAvcGFzdGVsMjMvMwAvcGFzdGVsMjQvMQAvcGFzdGVsMjQvMgAvcGFzdGVsMjQvMwAvcGFzdGVsMjQvNAAvcGFzdGVsMjUvMQAvcGFzdGVsMjUvMgAvcGFzdGVsMjUvMwAvcGFzdGVsMjUvNAAvcGFzdGVsMjUvNQAvcGFzdGVsMjYvMQAvcGFzdGVsMjYvMgAvcGFzdGVsMjYvMwAvcGFzdGVsMjYvNAAvcGFzdGVsMjYvNQAvcGFzdGVsMjYvNgAvcGFzdGVsMjcvMQAvcGFzdGVsMjcvMgAvcGFzdGVsMjcvMwAvcGFzdGVsMjcvNAAvcGFzdGVsMjcvNQAvcGFzdGVsMjcvNgAvcGFzdGVsMjcvNwAvcGFzdGVsMjgvMQAvcGFzdGVsMjgvMgAvcGFzdGVsMjgvMwAvcGFzdGVsMjgvNAAvcGFzdGVsMjgvNQAvcGFzdGVsMjgvNgAvcGFzdGVsMjgvNwAvcGFzdGVsMjgvOAAvcGl5ZzEwLzEAL3BpeWcxMC8xMAAvcGl5ZzEwLzIAL3BpeWcxMC8zAC9waXlnMTAvNAAvcGl5ZzEwLzUAL3BpeWcxMC82AC9waXlnMTAvNwAvcGl5ZzEwLzgAL3BpeWcxMC85AC9waXlnMTEvMQAvcGl5ZzExLzEwAC9waXlnMTEvMTEAL3BpeWcxMS8yAC9waXlnMTEvMwAvcGl5ZzExLzQAL3BpeWcxMS81AC9waXlnMTEvNgAvcGl5ZzExLzcAL3BpeWcxMS84AC9waXlnMTEvOQAvcGl5ZzMvMQAvcGl5ZzMvMgAvcGl5ZzMvMwAvcGl5ZzQvMQAvcGl5ZzQvMgAvcGl5ZzQvMwAvcGl5ZzQvNAAvcGl5ZzUvMQAvcGl5ZzUvMgAvcGl5ZzUvMwAvcGl5ZzUvNAAvcGl5ZzUvNQAvcGl5ZzYvMQAvcGl5ZzYvMgAvcGl5ZzYvMwAvcGl5ZzYvNAAvcGl5ZzYvNQAvcGl5ZzYvNgAvcGl5ZzcvMQAvcGl5ZzcvMgAvcGl5ZzcvMwAvcGl5ZzcvNAAvcGl5ZzcvNQAvcGl5ZzcvNgAvcGl5ZzcvNwAvcGl5ZzgvMQAvcGl5ZzgvMgAvcGl5ZzgvMwAvcGl5ZzgvNAAvcGl5ZzgvNQAvcGl5ZzgvNgAvcGl5ZzgvNwAvcGl5ZzgvOAAvcGl5ZzkvMQAvcGl5ZzkvMgAvcGl5ZzkvMwAvcGl5ZzkvNAAvcGl5ZzkvNQAvcGl5ZzkvNgAvcGl5ZzkvNwAvcGl5ZzkvOAAvcGl5ZzkvOQAvcHJnbjEwLzEAL3ByZ24xMC8xMAAvcHJnbjEwLzIAL3ByZ24xMC8zAC9wcmduMTAvNAAvcHJnbjEwLzUAL3ByZ24xMC82AC9wcmduMTAvNwAvcHJnbjEwLzgAL3ByZ24xMC85AC9wcmduMTEvMQAvcHJnbjExLzEwAC9wcmduMTEvMTEAL3ByZ24xMS8yAC9wcmduMTEvMwAvcHJnbjExLzQAL3ByZ24xMS81AC9wcmduMTEvNgAvcHJnbjExLzcAL3ByZ24xMS84AC9wcmduMTEvOQAvcHJnbjMvMQAvcHJnbjMvMgAvcHJnbjMvMwAvcHJnbjQvMQAvcHJnbjQvMgAvcHJnbjQvMwAvcHJnbjQvNAAvcHJnbjUvMQAvcHJnbjUvMgAvcHJnbjUvMwAvcHJnbjUvNAAvcHJnbjUvNQAvcHJnbjYvMQAvcHJnbjYvMgAvcHJnbjYvMwAvcHJnbjYvNAAvcHJnbjYvNQAvcHJnbjYvNgAvcHJnbjcvMQAvcHJnbjcvMgAvcHJnbjcvMwAvcHJnbjcvNAAvcHJnbjcvNQAvcHJnbjcvNgAvcHJnbjcvNwAvcHJnbjgvMQAvcHJnbjgvMgAvcHJnbjgvMwAvcHJnbjgvNAAvcHJnbjgvNQAvcHJnbjgvNgAvcHJnbjgvNwAvcHJnbjgvOAAvcHJnbjkvMQAvcHJnbjkvMgAvcHJnbjkvMwAvcHJnbjkvNAAvcHJnbjkvNQAvcHJnbjkvNgAvcHJnbjkvNwAvcHJnbjkvOAAvcHJnbjkvOQAvcHVidTMvMQAvcHVidTMvMgAvcHVidTMvMwAvcHVidTQvMQAvcHVidTQvMgAvcHVidTQvMwAvcHVidTQvNAAvcHVidTUvMQAvcHVidTUvMgAvcHVidTUvMwAvcHVidTUvNAAvcHVidTUvNQAvcHVidTYvMQAvcHVidTYvMgAvcHVidTYvMwAvcHVidTYvNAAvcHVidTYvNQAvcHVidTYvNgAvcHVidTcvMQAvcHVidTcvMgAvcHVidTcvMwAvcHVidTcvNAAvcHVidTcvNQAvcHVidTcvNgAvcHVidTcvNwAvcHVidTgvMQAvcHVidTgvMgAvcHVidTgvMwAvcHVidTgvNAAvcHVidTgvNQAvcHVidTgvNgAvcHVidTgvNwAvcHVidTgvOAAvcHVidTkvMQAvcHVidTkvMgAvcHVidTkvMwAvcHVidTkvNAAvcHVidTkvNQAvcHVidTkvNgAvcHVidTkvNwAvcHVidTkvOAAvcHVidTkvOQAvcHVidWduMy8xAC9wdWJ1Z24zLzIAL3B1YnVnbjMvMwAvcHVidWduNC8xAC9wdWJ1Z240LzIAL3B1YnVnbjQvMwAvcHVidWduNC80AC9wdWJ1Z241LzEAL3B1YnVnbjUvMgAvcHVidWduNS8zAC9wdWJ1Z241LzQAL3B1YnVnbjUvNQAvcHVidWduNi8xAC9wdWJ1Z242LzIAL3B1YnVnbjYvMwAvcHVidWduNi80AC9wdWJ1Z242LzUAL3B1YnVnbjYvNgAvcHVidWduNy8xAC9wdWJ1Z243LzIAL3B1YnVnbjcvMwAvcHVidWduNy80AC9wdWJ1Z243LzUAL3B1YnVnbjcvNgAvcHVidWduNy83AC9wdWJ1Z244LzEAL3B1YnVnbjgvMgAvcHVidWduOC8zAC9wdWJ1Z244LzQAL3B1YnVnbjgvNQAvcHVidWduOC82AC9wdWJ1Z244LzcAL3B1YnVnbjgvOAAvcHVidWduOS8xAC9wdWJ1Z245LzIAL3B1YnVnbjkvMwAvcHVidWduOS80AC9wdWJ1Z245LzUAL3B1YnVnbjkvNgAvcHVidWduOS83AC9wdWJ1Z245LzgAL3B1YnVnbjkvOQAvcHVvcjEwLzEAL3B1b3IxMC8xMAAvcHVvcjEwLzIAL3B1b3IxMC8zAC9wdW9yMTAvNAAvcHVvcjEwLzUAL3B1b3IxMC82AC9wdW9yMTAvNwAvcHVvcjEwLzgAL3B1b3IxMC85AC9wdW9yMTEvMQAvcHVvcjExLzEwAC9wdW9yMTEvMTEAL3B1b3IxMS8yAC9wdW9yMTEvMwAvcHVvcjExLzQAL3B1b3IxMS81AC9wdW9yMTEvNgAvcHVvcjExLzcAL3B1b3IxMS84AC9wdW9yMTEvOQAvcHVvcjMvMQAvcHVvcjMvMgAvcHVvcjMvMwAvcHVvcjQvMQAvcHVvcjQvMgAvcHVvcjQvMwAvcHVvcjQvNAAvcHVvcjUvMQAvcHVvcjUvMgAvcHVvcjUvMwAvcHVvcjUvNAAvcHVvcjUvNQAvcHVvcjYvMQAvcHVvcjYvMgAvcHVvcjYvMwAvcHVvcjYvNAAvcHVvcjYvNQAvcHVvcjYvNgAvcHVvcjcvMQAvcHVvcjcvMgAvcHVvcjcvMwAvcHVvcjcvNAAvcHVvcjcvNQAvcHVvcjcvNgAvcHVvcjcvNwAvcHVvcjgvMQAvcHVvcjgvMgAvcHVvcjgvMwAvcHVvcjgvNAAvcHVvcjgvNQAvcHVvcjgvNgAvcHVvcjgvNwAvcHVvcjgvOAAvcHVvcjkvMQAvcHVvcjkvMgAvcHVvcjkvMwAvcHVvcjkvNAAvcHVvcjkvNQAvcHVvcjkvNgAvcHVvcjkvNwAvcHVvcjkvOAAvcHVvcjkvOQAvcHVyZDMvMQAvcHVyZDMvMgAvcHVyZDMvMwAvcHVyZDQvMQAvcHVyZDQvMgAvcHVyZDQvMwAvcHVyZDQvNAAvcHVyZDUvMQAvcHVyZDUvMgAvcHVyZDUvMwAvcHVyZDUvNAAvcHVyZDUvNQAvcHVyZDYvMQAvcHVyZDYvMgAvcHVyZDYvMwAvcHVyZDYvNAAvcHVyZDYvNQAvcHVyZDYvNgAvcHVyZDcvMQAvcHVyZDcvMgAvcHVyZDcvMwAvcHVyZDcvNAAvcHVyZDcvNQAvcHVyZDcvNgAvcHVyZDcvNwAvcHVyZDgvMQAvcHVyZDgvMgAvcHVyZDgvMwAvcHVyZDgvNAAvcHVyZDgvNQAvcHVyZDgvNgAvcHVyZDgvNwAvcHVyZDgvOAAvcHVyZDkvMQAvcHVyZDkvMgAvcHVyZDkvMwAvcHVyZDkvNAAvcHVyZDkvNQAvcHVyZDkvNgAvcHVyZDkvNwAvcHVyZDkvOAAvcHVyZDkvOQAvcHVycGxlczMvMQAvcHVycGxlczMvMgAvcHVycGxlczMvMwAvcHVycGxlczQvMQAvcHVycGxlczQvMgAvcHVycGxlczQvMwAvcHVycGxlczQvNAAvcHVycGxlczUvMQAvcHVycGxlczUvMgAvcHVycGxlczUvMwAvcHVycGxlczUvNAAvcHVycGxlczUvNQAvcHVycGxlczYvMQAvcHVycGxlczYvMgAvcHVycGxlczYvMwAvcHVycGxlczYvNAAvcHVycGxlczYvNQAvcHVycGxlczYvNgAvcHVycGxlczcvMQAvcHVycGxlczcvMgAvcHVycGxlczcvMwAvcHVycGxlczcvNAAvcHVycGxlczcvNQAvcHVycGxlczcvNgAvcHVycGxlczcvNwAvcHVycGxlczgvMQAvcHVycGxlczgvMgAvcHVycGxlczgvMwAvcHVycGxlczgvNAAvcHVycGxlczgvNQAvcHVycGxlczgvNgAvcHVycGxlczgvNwAvcHVycGxlczgvOAAvcHVycGxlczkvMQAvcHVycGxlczkvMgAvcHVycGxlczkvMwAvcHVycGxlczkvNAAvcHVycGxlczkvNQAvcHVycGxlczkvNgAvcHVycGxlczkvNwAvcHVycGxlczkvOAAvcHVycGxlczkvOQAvcmRidTEwLzEAL3JkYnUxMC8xMAAvcmRidTEwLzIAL3JkYnUxMC8zAC9yZGJ1MTAvNAAvcmRidTEwLzUAL3JkYnUxMC82AC9yZGJ1MTAvNwAvcmRidTEwLzgAL3JkYnUxMC85AC9yZGJ1MTEvMQAvcmRidTExLzEwAC9yZGJ1MTEvMTEAL3JkYnUxMS8yAC9yZGJ1MTEvMwAvcmRidTExLzQAL3JkYnUxMS81AC9yZGJ1MTEvNgAvcmRidTExLzcAL3JkYnUxMS84AC9yZGJ1MTEvOQAvcmRidTMvMQAvcmRidTMvMgAvcmRidTMvMwAvcmRidTQvMQAvcmRidTQvMgAvcmRidTQvMwAvcmRidTQvNAAvcmRidTUvMQAvcmRidTUvMgAvcmRidTUvMwAvcmRidTUvNAAvcmRidTUvNQAvcmRidTYvMQAvcmRidTYvMgAvcmRidTYvMwAvcmRidTYvNAAvcmRidTYvNQAvcmRidTYvNgAvcmRidTcvMQAvcmRidTcvMgAvcmRidTcvMwAvcmRidTcvNAAvcmRidTcvNQAvcmRidTcvNgAvcmRidTcvNwAvcmRidTgvMQAvcmRidTgvMgAvcmRidTgvMwAvcmRidTgvNAAvcmRidTgvNQAvcmRidTgvNgAvcmRidTgvNwAvcmRidTgvOAAvcmRidTkvMQAvcmRidTkvMgAvcmRidTkvMwAvcmRidTkvNAAvcmRidTkvNQAvcmRidTkvNgAvcmRidTkvNwAvcmRidTkvOAAvcmRidTkvOQAvcmRneTEwLzEAL3JkZ3kxMC8xMAAvcmRneTEwLzIAL3JkZ3kxMC8zAC9yZGd5MTAvNAAvcmRneTEwLzUAL3JkZ3kxMC82AC9yZGd5MTAvNwAvcmRneTEwLzgAL3JkZ3kxMC85AC9yZGd5MTEvMQAvcmRneTExLzEwAC9yZGd5MTEvMTEAL3JkZ3kxMS8yAC9yZGd5MTEvMwAvcmRneTExLzQAL3JkZ3kxMS81AC9yZGd5MTEvNgAvcmRneTExLzcAL3JkZ3kxMS84AC9yZGd5MTEvOQAvcmRneTMvMQAvcmRneTMvMgAvcmRneTMvMwAvcmRneTQvMQAvcmRneTQvMgAvcmRneTQvMwAvcmRneTQvNAAvcmRneTUvMQAvcmRneTUvMgAvcmRneTUvMwAvcmRneTUvNAAvcmRneTUvNQAvcmRneTYvMQAvcmRneTYvMgAvcmRneTYvMwAvcmRneTYvNAAvcmRneTYvNQAvcmRneTYvNgAvcmRneTcvMQAvcmRneTcvMgAvcmRneTcvMwAvcmRneTcvNAAvcmRneTcvNQAvcmRneTcvNgAvcmRneTcvNwAvcmRneTgvMQAvcmRneTgvMgAvcmRneTgvMwAvcmRneTgvNAAvcmRneTgvNQAvcmRneTgvNgAvcmRneTgvNwAvcmRneTgvOAAvcmRneTkvMQAvcmRneTkvMgAvcmRneTkvMwAvcmRneTkvNAAvcmRneTkvNQAvcmRneTkvNgAvcmRneTkvNwAvcmRneTkvOAAvcmRneTkvOQAvcmRwdTMvMQAvcmRwdTMvMgAvcmRwdTMvMwAvcmRwdTQvMQAvcmRwdTQvMgAvcmRwdTQvMwAvcmRwdTQvNAAvcmRwdTUvMQAvcmRwdTUvMgAvcmRwdTUvMwAvcmRwdTUvNAAvcmRwdTUvNQAvcmRwdTYvMQAvcmRwdTYvMgAvcmRwdTYvMwAvcmRwdTYvNAAvcmRwdTYvNQAvcmRwdTYvNgAvcmRwdTcvMQAvcmRwdTcvMgAvcmRwdTcvMwAvcmRwdTcvNAAvcmRwdTcvNQAvcmRwdTcvNgAvcmRwdTcvNwAvcmRwdTgvMQAvcmRwdTgvMgAvcmRwdTgvMwAvcmRwdTgvNAAvcmRwdTgvNQAvcmRwdTgvNgAvcmRwdTgvNwAvcmRwdTgvOAAvcmRwdTkvMQAvcmRwdTkvMgAvcmRwdTkvMwAvcmRwdTkvNAAvcmRwdTkvNQAvcmRwdTkvNgAvcmRwdTkvNwAvcmRwdTkvOAAvcmRwdTkvOQAvcmR5bGJ1MTAvMQAvcmR5bGJ1MTAvMTAAL3JkeWxidTEwLzIAL3JkeWxidTEwLzMAL3JkeWxidTEwLzQAL3JkeWxidTEwLzUAL3JkeWxidTEwLzYAL3JkeWxidTEwLzcAL3JkeWxidTEwLzgAL3JkeWxidTEwLzkAL3JkeWxidTExLzEAL3JkeWxidTExLzEwAC9yZHlsYnUxMS8xMQAvcmR5bGJ1MTEvMgAvcmR5bGJ1MTEvMwAvcmR5bGJ1MTEvNAAvcmR5bGJ1MTEvNQAvcmR5bGJ1MTEvNgAvcmR5bGJ1MTEvNwAvcmR5bGJ1MTEvOAAvcmR5bGJ1MTEvOQAvcmR5bGJ1My8xAC9yZHlsYnUzLzIAL3JkeWxidTMvMwAvcmR5bGJ1NC8xAC9yZHlsYnU0LzIAL3JkeWxidTQvMwAvcmR5bGJ1NC80AC9yZHlsYnU1LzEAL3JkeWxidTUvMgAvcmR5bGJ1NS8zAC9yZHlsYnU1LzQAL3JkeWxidTUvNQAvcmR5bGJ1Ni8xAC9yZHlsYnU2LzIAL3JkeWxidTYvMwAvcmR5bGJ1Ni80AC9yZHlsYnU2LzUAL3JkeWxidTYvNgAvcmR5bGJ1Ny8xAC9yZHlsYnU3LzIAL3JkeWxidTcvMwAvcmR5bGJ1Ny80AC9yZHlsYnU3LzUAL3JkeWxidTcvNgAvcmR5bGJ1Ny83AC9yZHlsYnU4LzEAL3JkeWxidTgvMgAvcmR5bGJ1OC8zAC9yZHlsYnU4LzQAL3JkeWxidTgvNQAvcmR5bGJ1OC82AC9yZHlsYnU4LzcAL3JkeWxidTgvOAAvcmR5bGJ1OS8xAC9yZHlsYnU5LzIAL3JkeWxidTkvMwAvcmR5bGJ1OS80AC9yZHlsYnU5LzUAL3JkeWxidTkvNgAvcmR5bGJ1OS83AC9yZHlsYnU5LzgAL3JkeWxidTkvOQAvcmR5bGduMTAvMQAvcmR5bGduMTAvMTAAL3JkeWxnbjEwLzIAL3JkeWxnbjEwLzMAL3JkeWxnbjEwLzQAL3JkeWxnbjEwLzUAL3JkeWxnbjEwLzYAL3JkeWxnbjEwLzcAL3JkeWxnbjEwLzgAL3JkeWxnbjEwLzkAL3JkeWxnbjExLzEAL3JkeWxnbjExLzEwAC9yZHlsZ24xMS8xMQAvcmR5bGduMTEvMgAvcmR5bGduMTEvMwAvcmR5bGduMTEvNAAvcmR5bGduMTEvNQAvcmR5bGduMTEvNgAvcmR5bGduMTEvNwAvcmR5bGduMTEvOAAvcmR5bGduMTEvOQAvcmR5bGduMy8xAC9yZHlsZ24zLzIAL3JkeWxnbjMvMwAvcmR5bGduNC8xAC9yZHlsZ240LzIAL3JkeWxnbjQvMwAvcmR5bGduNC80AC9yZHlsZ241LzEAL3JkeWxnbjUvMgAvcmR5bGduNS8zAC9yZHlsZ241LzQAL3JkeWxnbjUvNQAvcmR5bGduNi8xAC9yZHlsZ242LzIAL3JkeWxnbjYvMwAvcmR5bGduNi80AC9yZHlsZ242LzUAL3JkeWxnbjYvNgAvcmR5bGduNy8xAC9yZHlsZ243LzIAL3JkeWxnbjcvMwAvcmR5bGduNy80AC9yZHlsZ243LzUAL3JkeWxnbjcvNgAvcmR5bGduNy83AC9yZHlsZ244LzEAL3JkeWxnbjgvMgAvcmR5bGduOC8zAC9yZHlsZ244LzQAL3JkeWxnbjgvNQAvcmR5bGduOC82AC9yZHlsZ244LzcAL3JkeWxnbjgvOAAvcmR5bGduOS8xAC9yZHlsZ245LzIAL3JkeWxnbjkvMwAvcmR5bGduOS80AC9yZHlsZ245LzUAL3JkeWxnbjkvNgAvcmR5bGduOS83AC9yZHlsZ245LzgAL3JkeWxnbjkvOQAvcmVkczMvMQAvcmVkczMvMgAvcmVkczMvMwAvcmVkczQvMQAvcmVkczQvMgAvcmVkczQvMwAvcmVkczQvNAAvcmVkczUvMQAvcmVkczUvMgAvcmVkczUvMwAvcmVkczUvNAAvcmVkczUvNQAvcmVkczYvMQAvcmVkczYvMgAvcmVkczYvMwAvcmVkczYvNAAvcmVkczYvNQAvcmVkczYvNgAvcmVkczcvMQAvcmVkczcvMgAvcmVkczcvMwAvcmVkczcvNAAvcmVkczcvNQAvcmVkczcvNgAvcmVkczcvNwAvcmVkczgvMQAvcmVkczgvMgAvcmVkczgvMwAvcmVkczgvNAAvcmVkczgvNQAvcmVkczgvNgAvcmVkczgvNwAvcmVkczgvOAAvcmVkczkvMQAvcmVkczkvMgAvcmVkczkvMwAvcmVkczkvNAAvcmVkczkvNQAvcmVkczkvNgAvcmVkczkvNwAvcmVkczkvOAAvcmVkczkvOQAvc2V0MTMvMQAvc2V0MTMvMgAvc2V0MTMvMwAvc2V0MTQvMQAvc2V0MTQvMgAvc2V0MTQvMwAvc2V0MTQvNAAvc2V0MTUvMQAvc2V0MTUvMgAvc2V0MTUvMwAvc2V0MTUvNAAvc2V0MTUvNQAvc2V0MTYvMQAvc2V0MTYvMgAvc2V0MTYvMwAvc2V0MTYvNAAvc2V0MTYvNQAvc2V0MTYvNgAvc2V0MTcvMQAvc2V0MTcvMgAvc2V0MTcvMwAvc2V0MTcvNAAvc2V0MTcvNQAvc2V0MTcvNgAvc2V0MTcvNwAvc2V0MTgvMQAvc2V0MTgvMgAvc2V0MTgvMwAvc2V0MTgvNAAvc2V0MTgvNQAvc2V0MTgvNgAvc2V0MTgvNwAvc2V0MTgvOAAvc2V0MTkvMQAvc2V0MTkvMgAvc2V0MTkvMwAvc2V0MTkvNAAvc2V0MTkvNQAvc2V0MTkvNgAvc2V0MTkvNwAvc2V0MTkvOAAvc2V0MTkvOQAvc2V0MjMvMQAvc2V0MjMvMgAvc2V0MjMvMwAvc2V0MjQvMQAvc2V0MjQvMgAvc2V0MjQvMwAvc2V0MjQvNAAvc2V0MjUvMQAvc2V0MjUvMgAvc2V0MjUvMwAvc2V0MjUvNAAvc2V0MjUvNQAvc2V0MjYvMQAvc2V0MjYvMgAvc2V0MjYvMwAvc2V0MjYvNAAvc2V0MjYvNQAvc2V0MjYvNgAvc2V0MjcvMQAvc2V0MjcvMgAvc2V0MjcvMwAvc2V0MjcvNAAvc2V0MjcvNQAvc2V0MjcvNgAvc2V0MjcvNwAvc2V0MjgvMQAvc2V0MjgvMgAvc2V0MjgvMwAvc2V0MjgvNAAvc2V0MjgvNQAvc2V0MjgvNgAvc2V0MjgvNwAvc2V0MjgvOAAvc2V0MzEwLzEAL3NldDMxMC8xMAAvc2V0MzEwLzIAL3NldDMxMC8zAC9zZXQzMTAvNAAvc2V0MzEwLzUAL3NldDMxMC82AC9zZXQzMTAvNwAvc2V0MzEwLzgAL3NldDMxMC85AC9zZXQzMTEvMQAvc2V0MzExLzEwAC9zZXQzMTEvMTEAL3NldDMxMS8yAC9zZXQzMTEvMwAvc2V0MzExLzQAL3NldDMxMS81AC9zZXQzMTEvNgAvc2V0MzExLzcAL3NldDMxMS84AC9zZXQzMTEvOQAvc2V0MzEyLzEAL3NldDMxMi8xMAAvc2V0MzEyLzExAC9zZXQzMTIvMTIAL3NldDMxMi8yAC9zZXQzMTIvMwAvc2V0MzEyLzQAL3NldDMxMi81AC9zZXQzMTIvNgAvc2V0MzEyLzcAL3NldDMxMi84AC9zZXQzMTIvOQAvc2V0MzMvMQAvc2V0MzMvMgAvc2V0MzMvMwAvc2V0MzQvMQAvc2V0MzQvMgAvc2V0MzQvMwAvc2V0MzQvNAAvc2V0MzUvMQAvc2V0MzUvMgAvc2V0MzUvMwAvc2V0MzUvNAAvc2V0MzUvNQAvc2V0MzYvMQAvc2V0MzYvMgAvc2V0MzYvMwAvc2V0MzYvNAAvc2V0MzYvNQAvc2V0MzYvNgAvc2V0MzcvMQAvc2V0MzcvMgAvc2V0MzcvMwAvc2V0MzcvNAAvc2V0MzcvNQAvc2V0MzcvNgAvc2V0MzcvNwAvc2V0MzgvMQAvc2V0MzgvMgAvc2V0MzgvMwAvc2V0MzgvNAAvc2V0MzgvNQAvc2V0MzgvNgAvc2V0MzgvNwAvc2V0MzgvOAAvc2V0MzkvMQAvc2V0MzkvMgAvc2V0MzkvMwAvc2V0MzkvNAAvc2V0MzkvNQAvc2V0MzkvNgAvc2V0MzkvNwAvc2V0MzkvOAAvc2V0MzkvOQAvc3BlY3RyYWwxMC8xAC9zcGVjdHJhbDEwLzEwAC9zcGVjdHJhbDEwLzIAL3NwZWN0cmFsMTAvMwAvc3BlY3RyYWwxMC80AC9zcGVjdHJhbDEwLzUAL3NwZWN0cmFsMTAvNgAvc3BlY3RyYWwxMC83AC9zcGVjdHJhbDEwLzgAL3NwZWN0cmFsMTAvOQAvc3BlY3RyYWwxMS8xAC9zcGVjdHJhbDExLzEwAC9zcGVjdHJhbDExLzExAC9zcGVjdHJhbDExLzIAL3NwZWN0cmFsMTEvMwAvc3BlY3RyYWwxMS80AC9zcGVjdHJhbDExLzUAL3NwZWN0cmFsMTEvNgAvc3BlY3RyYWwxMS83AC9zcGVjdHJhbDExLzgAL3NwZWN0cmFsMTEvOQAvc3BlY3RyYWwzLzEAL3NwZWN0cmFsMy8yAC9zcGVjdHJhbDMvMwAvc3BlY3RyYWw0LzEAL3NwZWN0cmFsNC8yAC9zcGVjdHJhbDQvMwAvc3BlY3RyYWw0LzQAL3NwZWN0cmFsNS8xAC9zcGVjdHJhbDUvMgAvc3BlY3RyYWw1LzMAL3NwZWN0cmFsNS80AC9zcGVjdHJhbDUvNQAvc3BlY3RyYWw2LzEAL3NwZWN0cmFsNi8yAC9zcGVjdHJhbDYvMwAvc3BlY3RyYWw2LzQAL3NwZWN0cmFsNi81AC9zcGVjdHJhbDYvNgAvc3BlY3RyYWw3LzEAL3NwZWN0cmFsNy8yAC9zcGVjdHJhbDcvMwAvc3BlY3RyYWw3LzQAL3NwZWN0cmFsNy81AC9zcGVjdHJhbDcvNgAvc3BlY3RyYWw3LzcAL3NwZWN0cmFsOC8xAC9zcGVjdHJhbDgvMgAvc3BlY3RyYWw4LzMAL3NwZWN0cmFsOC80AC9zcGVjdHJhbDgvNQAvc3BlY3RyYWw4LzYAL3NwZWN0cmFsOC83AC9zcGVjdHJhbDgvOAAvc3BlY3RyYWw5LzEAL3NwZWN0cmFsOS8yAC9zcGVjdHJhbDkvMwAvc3BlY3RyYWw5LzQAL3NwZWN0cmFsOS81AC9zcGVjdHJhbDkvNgAvc3BlY3RyYWw5LzcAL3NwZWN0cmFsOS84AC9zcGVjdHJhbDkvOQAvc3ZnL2FsaWNlYmx1ZQAvc3ZnL2FudGlxdWV3aGl0ZQAvc3ZnL2FxdWEAL3N2Zy9hcXVhbWFyaW5lAC9zdmcvYXp1cmUAL3N2Zy9iZWlnZQAvc3ZnL2Jpc3F1ZQAvc3ZnL2JsYWNrAC9zdmcvYmxhbmNoZWRhbG1vbmQAL3N2Zy9ibHVlAC9zdmcvYmx1ZXZpb2xldAAvc3ZnL2Jyb3duAC9zdmcvYnVybHl3b29kAC9zdmcvY2FkZXRibHVlAC9zdmcvY2hhcnRyZXVzZQAvc3ZnL2Nob2NvbGF0ZQAvc3ZnL2NvcmFsAC9zdmcvY29ybmZsb3dlcmJsdWUAL3N2Zy9jb3Juc2lsawAvc3ZnL2NyaW1zb24AL3N2Zy9jeWFuAC9zdmcvZGFya2JsdWUAL3N2Zy9kYXJrY3lhbgAvc3ZnL2Rhcmtnb2xkZW5yb2QAL3N2Zy9kYXJrZ3JheQAvc3ZnL2RhcmtncmVlbgAvc3ZnL2RhcmtncmV5AC9zdmcvZGFya2toYWtpAC9zdmcvZGFya21hZ2VudGEAL3N2Zy9kYXJrb2xpdmVncmVlbgAvc3ZnL2RhcmtvcmFuZ2UAL3N2Zy9kYXJrb3JjaGlkAC9zdmcvZGFya3JlZAAvc3ZnL2RhcmtzYWxtb24AL3N2Zy9kYXJrc2VhZ3JlZW4AL3N2Zy9kYXJrc2xhdGVibHVlAC9zdmcvZGFya3NsYXRlZ3JheQAvc3ZnL2RhcmtzbGF0ZWdyZXkAL3N2Zy9kYXJrdHVycXVvaXNlAC9zdmcvZGFya3Zpb2xldAAvc3ZnL2RlZXBwaW5rAC9zdmcvZGVlcHNreWJsdWUAL3N2Zy9kaW1ncmF5AC9zdmcvZGltZ3JleQAvc3ZnL2RvZGdlcmJsdWUAL3N2Zy9maXJlYnJpY2sAL3N2Zy9mbG9yYWx3aGl0ZQAvc3ZnL2ZvcmVzdGdyZWVuAC9zdmcvZnVjaHNpYQAvc3ZnL2dhaW5zYm9ybwAvc3ZnL2dob3N0d2hpdGUAL3N2Zy9nb2xkAC9zdmcvZ29sZGVucm9kAC9zdmcvZ3JheQAvc3ZnL2dyZWVuAC9zdmcvZ3JlZW55ZWxsb3cAL3N2Zy9ncmV5AC9zdmcvaG9uZXlkZXcAL3N2Zy9ob3RwaW5rAC9zdmcvaW5kaWFucmVkAC9zdmcvaW5kaWdvAC9zdmcvaXZvcnkAL3N2Zy9raGFraQAvc3ZnL2xhdmVuZGVyAC9zdmcvbGF2ZW5kZXJibHVzaAAvc3ZnL2xhd25ncmVlbgAvc3ZnL2xlbW9uY2hpZmZvbgAvc3ZnL2xpZ2h0Ymx1ZQAvc3ZnL2xpZ2h0Y29yYWwAL3N2Zy9saWdodGN5YW4AL3N2Zy9saWdodGdvbGRlbnJvZHllbGxvdwAvc3ZnL2xpZ2h0Z3JheQAvc3ZnL2xpZ2h0Z3JlZW4AL3N2Zy9saWdodGdyZXkAL3N2Zy9saWdodHBpbmsAL3N2Zy9saWdodHNhbG1vbgAvc3ZnL2xpZ2h0c2VhZ3JlZW4AL3N2Zy9saWdodHNreWJsdWUAL3N2Zy9saWdodHNsYXRlZ3JheQAvc3ZnL2xpZ2h0c2xhdGVncmV5AC9zdmcvbGlnaHRzdGVlbGJsdWUAL3N2Zy9saWdodHllbGxvdwAvc3ZnL2xpbWUAL3N2Zy9saW1lZ3JlZW4AL3N2Zy9saW5lbgAvc3ZnL21hZ2VudGEAL3N2Zy9tYXJvb24AL3N2Zy9tZWRpdW1hcXVhbWFyaW5lAC9zdmcvbWVkaXVtYmx1ZQAvc3ZnL21lZGl1bW9yY2hpZAAvc3ZnL21lZGl1bXB1cnBsZQAvc3ZnL21lZGl1bXNlYWdyZWVuAC9zdmcvbWVkaXVtc2xhdGVibHVlAC9zdmcvbWVkaXVtc3ByaW5nZ3JlZW4AL3N2Zy9tZWRpdW10dXJxdW9pc2UAL3N2Zy9tZWRpdW12aW9sZXRyZWQAL3N2Zy9taWRuaWdodGJsdWUAL3N2Zy9taW50Y3JlYW0AL3N2Zy9taXN0eXJvc2UAL3N2Zy9tb2NjYXNpbgAvc3ZnL25hdmFqb3doaXRlAC9zdmcvbmF2eQAvc3ZnL29sZGxhY2UAL3N2Zy9vbGl2ZQAvc3ZnL29saXZlZHJhYgAvc3ZnL29yYW5nZQAvc3ZnL29yYW5nZXJlZAAvc3ZnL29yY2hpZAAvc3ZnL3BhbGVnb2xkZW5yb2QAL3N2Zy9wYWxlZ3JlZW4AL3N2Zy9wYWxldHVycXVvaXNlAC9zdmcvcGFsZXZpb2xldHJlZAAvc3ZnL3BhcGF5YXdoaXAAL3N2Zy9wZWFjaHB1ZmYAL3N2Zy9wZXJ1AC9zdmcvcGluawAvc3ZnL3BsdW0AL3N2Zy9wb3dkZXJibHVlAC9zdmcvcHVycGxlAC9zdmcvcmVkAC9zdmcvcm9zeWJyb3duAC9zdmcvcm95YWxibHVlAC9zdmcvc2FkZGxlYnJvd24AL3N2Zy9zYWxtb24AL3N2Zy9zYW5keWJyb3duAC9zdmcvc2VhZ3JlZW4AL3N2Zy9zZWFzaGVsbAAvc3ZnL3NpZW5uYQAvc3ZnL3NpbHZlcgAvc3ZnL3NreWJsdWUAL3N2Zy9zbGF0ZWJsdWUAL3N2Zy9zbGF0ZWdyYXkAL3N2Zy9zbGF0ZWdyZXkAL3N2Zy9zbm93AC9zdmcvc3ByaW5nZ3JlZW4AL3N2Zy9zdGVlbGJsdWUAL3N2Zy90YW4AL3N2Zy90ZWFsAC9zdmcvdGhpc3RsZQAvc3ZnL3RvbWF0bwAvc3ZnL3R1cnF1b2lzZQAvc3ZnL3Zpb2xldAAvc3ZnL3doZWF0AC9zdmcvd2hpdGUAL3N2Zy93aGl0ZXNtb2tlAC9zdmcveWVsbG93AC9zdmcveWVsbG93Z3JlZW4AL3lsZ24zLzEAL3lsZ24zLzIAL3lsZ24zLzMAL3lsZ240LzEAL3lsZ240LzIAL3lsZ240LzMAL3lsZ240LzQAL3lsZ241LzEAL3lsZ241LzIAL3lsZ241LzMAL3lsZ241LzQAL3lsZ241LzUAL3lsZ242LzEAL3lsZ242LzIAL3lsZ242LzMAL3lsZ242LzQAL3lsZ242LzUAL3lsZ242LzYAL3lsZ243LzEAL3lsZ243LzIAL3lsZ243LzMAL3lsZ243LzQAL3lsZ243LzUAL3lsZ243LzYAL3lsZ243LzcAL3lsZ244LzEAL3lsZ244LzIAL3lsZ244LzMAL3lsZ244LzQAL3lsZ244LzUAL3lsZ244LzYAL3lsZ244LzcAL3lsZ244LzgAL3lsZ245LzEAL3lsZ245LzIAL3lsZ245LzMAL3lsZ245LzQAL3lsZ245LzUAL3lsZ245LzYAL3lsZ245LzcAL3lsZ245LzgAL3lsZ245LzkAL3lsZ25idTMvMQAveWxnbmJ1My8yAC95bGduYnUzLzMAL3lsZ25idTQvMQAveWxnbmJ1NC8yAC95bGduYnU0LzMAL3lsZ25idTQvNAAveWxnbmJ1NS8xAC95bGduYnU1LzIAL3lsZ25idTUvMwAveWxnbmJ1NS80AC95bGduYnU1LzUAL3lsZ25idTYvMQAveWxnbmJ1Ni8yAC95bGduYnU2LzMAL3lsZ25idTYvNAAveWxnbmJ1Ni81AC95bGduYnU2LzYAL3lsZ25idTcvMQAveWxnbmJ1Ny8yAC95bGduYnU3LzMAL3lsZ25idTcvNAAveWxnbmJ1Ny81AC95bGduYnU3LzYAL3lsZ25idTcvNwAveWxnbmJ1OC8xAC95bGduYnU4LzIAL3lsZ25idTgvMwAveWxnbmJ1OC80AC95bGduYnU4LzUAL3lsZ25idTgvNgAveWxnbmJ1OC83AC95bGduYnU4LzgAL3lsZ25idTkvMQAveWxnbmJ1OS8yAC95bGduYnU5LzMAL3lsZ25idTkvNAAveWxnbmJ1OS81AC95bGduYnU5LzYAL3lsZ25idTkvNwAveWxnbmJ1OS84AC95bGduYnU5LzkAL3lsb3JicjMvMQAveWxvcmJyMy8yAC95bG9yYnIzLzMAL3lsb3JicjQvMQAveWxvcmJyNC8yAC95bG9yYnI0LzMAL3lsb3JicjQvNAAveWxvcmJyNS8xAC95bG9yYnI1LzIAL3lsb3JicjUvMwAveWxvcmJyNS80AC95bG9yYnI1LzUAL3lsb3JicjYvMQAveWxvcmJyNi8yAC95bG9yYnI2LzMAL3lsb3JicjYvNAAveWxvcmJyNi81AC95bG9yYnI2LzYAL3lsb3JicjcvMQAveWxvcmJyNy8yAC95bG9yYnI3LzMAL3lsb3JicjcvNAAveWxvcmJyNy81AC95bG9yYnI3LzYAL3lsb3JicjcvNwAveWxvcmJyOC8xAC95bG9yYnI4LzIAL3lsb3JicjgvMwAveWxvcmJyOC80AC95bG9yYnI4LzUAL3lsb3JicjgvNgAveWxvcmJyOC83AC95bG9yYnI4LzgAL3lsb3JicjkvMQAveWxvcmJyOS8yAC95bG9yYnI5LzMAL3lsb3JicjkvNAAveWxvcmJyOS81AC95bG9yYnI5LzYAL3lsb3JicjkvNwAveWxvcmJyOS84AC95bG9yYnI5LzkAL3lsb3JyZDMvMQAveWxvcnJkMy8yAC95bG9ycmQzLzMAL3lsb3JyZDQvMQAveWxvcnJkNC8yAC95bG9ycmQ0LzMAL3lsb3JyZDQvNAAveWxvcnJkNS8xAC95bG9ycmQ1LzIAL3lsb3JyZDUvMwAveWxvcnJkNS80AC95bG9ycmQ1LzUAL3lsb3JyZDYvMQAveWxvcnJkNi8yAC95bG9ycmQ2LzMAL3lsb3JyZDYvNAAveWxvcnJkNi81AC95bG9ycmQ2LzYAL3lsb3JyZDcvMQAveWxvcnJkNy8yAC95bG9ycmQ3LzMAL3lsb3JyZDcvNAAveWxvcnJkNy81AC95bG9ycmQ3LzYAL3lsb3JyZDcvNwAveWxvcnJkOC8xAC95bG9ycmQ4LzIAL3lsb3JyZDgvMwAveWxvcnJkOC80AC95bG9ycmQ4LzUAL3lsb3JyZDgvNgAveWxvcnJkOC83AC95bG9ycmQ4LzgAL3lsb3JyZDkvMQAveWxvcnJkOS8yAC95bG9ycmQ5LzMAL3lsb3JyZDkvNAAveWxvcnJkOS81AC95bG9ycmQ5LzYAL3lsb3JyZDkvNwAveWxvcnJkOS84AC95bG9ycmQ5LzkAYWxpY2VibHVlAGFudGlxdWV3aGl0ZQBhbnRpcXVld2hpdGUxAGFudGlxdWV3aGl0ZTIAYW50aXF1ZXdoaXRlMwBhbnRpcXVld2hpdGU0AGFxdWFtYXJpbmUAYXF1YW1hcmluZTEAYXF1YW1hcmluZTIAYXF1YW1hcmluZTMAYXF1YW1hcmluZTQAYXp1cmUAYXp1cmUxAGF6dXJlMgBhenVyZTMAYXp1cmU0AGJlaWdlAGJpc3F1ZQBiaXNxdWUxAGJpc3F1ZTIAYmlzcXVlMwBiaXNxdWU0AGJsYW5jaGVkYWxtb25kAGJsdWUAYmx1ZTEAYmx1ZTIAYmx1ZTMAYmx1ZTQAYmx1ZXZpb2xldABicm93bgBicm93bjEAYnJvd24yAGJyb3duMwBicm93bjQAYnVybHl3b29kAGJ1cmx5d29vZDEAYnVybHl3b29kMgBidXJseXdvb2QzAGJ1cmx5d29vZDQAY2FkZXRibHVlAGNhZGV0Ymx1ZTEAY2FkZXRibHVlMgBjYWRldGJsdWUzAGNhZGV0Ymx1ZTQAY2hhcnRyZXVzZQBjaGFydHJldXNlMQBjaGFydHJldXNlMgBjaGFydHJldXNlMwBjaGFydHJldXNlNABjaG9jb2xhdGUAY2hvY29sYXRlMQBjaG9jb2xhdGUyAGNob2NvbGF0ZTMAY2hvY29sYXRlNABjb3JhbABjb3JhbDEAY29yYWwyAGNvcmFsMwBjb3JhbDQAY29ybmZsb3dlcmJsdWUAY29ybnNpbGsAY29ybnNpbGsxAGNvcm5zaWxrMgBjb3Juc2lsazMAY29ybnNpbGs0AGNyaW1zb24AY3lhbgBjeWFuMQBjeWFuMgBjeWFuMwBjeWFuNABkYXJrZ29sZGVucm9kAGRhcmtnb2xkZW5yb2QxAGRhcmtnb2xkZW5yb2QyAGRhcmtnb2xkZW5yb2QzAGRhcmtnb2xkZW5yb2Q0AGRhcmtncmVlbgBkYXJra2hha2kAZGFya29saXZlZ3JlZW4AZGFya29saXZlZ3JlZW4xAGRhcmtvbGl2ZWdyZWVuMgBkYXJrb2xpdmVncmVlbjMAZGFya29saXZlZ3JlZW40AGRhcmtvcmFuZ2UAZGFya29yYW5nZTEAZGFya29yYW5nZTIAZGFya29yYW5nZTMAZGFya29yYW5nZTQAZGFya29yY2hpZABkYXJrb3JjaGlkMQBkYXJrb3JjaGlkMgBkYXJrb3JjaGlkMwBkYXJrb3JjaGlkNABkYXJrc2FsbW9uAGRhcmtzZWFncmVlbgBkYXJrc2VhZ3JlZW4xAGRhcmtzZWFncmVlbjIAZGFya3NlYWdyZWVuMwBkYXJrc2VhZ3JlZW40AGRhcmtzbGF0ZWJsdWUAZGFya3NsYXRlZ3JheQBkYXJrc2xhdGVncmF5MQBkYXJrc2xhdGVncmF5MgBkYXJrc2xhdGVncmF5MwBkYXJrc2xhdGVncmF5NABkYXJrc2xhdGVncmV5AGRhcmt0dXJxdW9pc2UAZGFya3Zpb2xldABkZWVwcGluawBkZWVwcGluazEAZGVlcHBpbmsyAGRlZXBwaW5rMwBkZWVwcGluazQAZGVlcHNreWJsdWUAZGVlcHNreWJsdWUxAGRlZXBza3libHVlMgBkZWVwc2t5Ymx1ZTMAZGVlcHNreWJsdWU0AGRpbWdyYXkAZGltZ3JleQBkb2RnZXJibHVlAGRvZGdlcmJsdWUxAGRvZGdlcmJsdWUyAGRvZGdlcmJsdWUzAGRvZGdlcmJsdWU0AGZpcmVicmljawBmaXJlYnJpY2sxAGZpcmVicmljazIAZmlyZWJyaWNrMwBmaXJlYnJpY2s0AGZsb3JhbHdoaXRlAGZvcmVzdGdyZWVuAGdhaW5zYm9ybwBnaG9zdHdoaXRlAGdvbGQAZ29sZDEAZ29sZDIAZ29sZDMAZ29sZDQAZ29sZGVucm9kAGdvbGRlbnJvZDEAZ29sZGVucm9kMgBnb2xkZW5yb2QzAGdvbGRlbnJvZDQAZ3JheQBncmF5MABncmF5MQBncmF5MTAAZ3JheTEwMABncmF5MTEAZ3JheTEyAGdyYXkxMwBncmF5MTQAZ3JheTE1AGdyYXkxNgBncmF5MTcAZ3JheTE4AGdyYXkxOQBncmF5MgBncmF5MjAAZ3JheTIxAGdyYXkyMgBncmF5MjMAZ3JheTI0AGdyYXkyNQBncmF5MjYAZ3JheTI3AGdyYXkyOABncmF5MjkAZ3JheTMAZ3JheTMwAGdyYXkzMQBncmF5MzIAZ3JheTMzAGdyYXkzNABncmF5MzUAZ3JheTM2AGdyYXkzNwBncmF5MzgAZ3JheTM5AGdyYXk0AGdyYXk0MABncmF5NDEAZ3JheTQyAGdyYXk0MwBncmF5NDQAZ3JheTQ1AGdyYXk0NgBncmF5NDcAZ3JheTQ4AGdyYXk0OQBncmF5NQBncmF5NTAAZ3JheTUxAGdyYXk1MgBncmF5NTMAZ3JheTU0AGdyYXk1NQBncmF5NTYAZ3JheTU3AGdyYXk1OABncmF5NTkAZ3JheTYAZ3JheTYwAGdyYXk2MQBncmF5NjIAZ3JheTYzAGdyYXk2NABncmF5NjUAZ3JheTY2AGdyYXk2NwBncmF5NjgAZ3JheTY5AGdyYXk3AGdyYXk3MABncmF5NzEAZ3JheTcyAGdyYXk3MwBncmF5NzQAZ3JheTc1AGdyYXk3NgBncmF5NzcAZ3JheTc4AGdyYXk3OQBncmF5OABncmF5ODAAZ3JheTgxAGdyYXk4MgBncmF5ODMAZ3JheTg0AGdyYXk4NQBncmF5ODYAZ3JheTg3AGdyYXk4OABncmF5ODkAZ3JheTkAZ3JheTkwAGdyYXk5MQBncmF5OTIAZ3JheTkzAGdyYXk5NABncmF5OTUAZ3JheTk2AGdyYXk5NwBncmF5OTgAZ3JheTk5AGdyZWVuAGdyZWVuMQBncmVlbjIAZ3JlZW4zAGdyZWVuNABncmVlbnllbGxvdwBncmV5AGdyZXkwAGdyZXkxAGdyZXkxMABncmV5MTAwAGdyZXkxMQBncmV5MTIAZ3JleTEzAGdyZXkxNABncmV5MTUAZ3JleTE2AGdyZXkxNwBncmV5MTgAZ3JleTE5AGdyZXkyAGdyZXkyMABncmV5MjEAZ3JleTIyAGdyZXkyMwBncmV5MjQAZ3JleTI1AGdyZXkyNgBncmV5MjcAZ3JleTI4AGdyZXkyOQBncmV5MwBncmV5MzAAZ3JleTMxAGdyZXkzMgBncmV5MzMAZ3JleTM0AGdyZXkzNQBncmV5MzYAZ3JleTM3AGdyZXkzOABncmV5MzkAZ3JleTQAZ3JleTQwAGdyZXk0MQBncmV5NDIAZ3JleTQzAGdyZXk0NABncmV5NDUAZ3JleTQ2AGdyZXk0NwBncmV5NDgAZ3JleTQ5AGdyZXk1AGdyZXk1MABncmV5NTEAZ3JleTUyAGdyZXk1MwBncmV5NTQAZ3JleTU1AGdyZXk1NgBncmV5NTcAZ3JleTU4AGdyZXk1OQBncmV5NgBncmV5NjAAZ3JleTYxAGdyZXk2MgBncmV5NjMAZ3JleTY0AGdyZXk2NQBncmV5NjYAZ3JleTY3AGdyZXk2OABncmV5NjkAZ3JleTcAZ3JleTcwAGdyZXk3MQBncmV5NzIAZ3JleTczAGdyZXk3NABncmV5NzUAZ3JleTc2AGdyZXk3NwBncmV5NzgAZ3JleTc5AGdyZXk4AGdyZXk4MABncmV5ODEAZ3JleTgyAGdyZXk4MwBncmV5ODQAZ3JleTg1AGdyZXk4NgBncmV5ODcAZ3JleTg4AGdyZXk4OQBncmV5OQBncmV5OTAAZ3JleTkxAGdyZXk5MgBncmV5OTMAZ3JleTk0AGdyZXk5NQBncmV5OTYAZ3JleTk3AGdyZXk5OABncmV5OTkAaG9uZXlkZXcAaG9uZXlkZXcxAGhvbmV5ZGV3MgBob25leWRldzMAaG9uZXlkZXc0AGhvdHBpbmsAaG90cGluazEAaG90cGluazIAaG90cGluazMAaG90cGluazQAaW5kaWFucmVkAGluZGlhbnJlZDEAaW5kaWFucmVkMgBpbmRpYW5yZWQzAGluZGlhbnJlZDQAaW5kaWdvAGludmlzAGl2b3J5AGl2b3J5MQBpdm9yeTIAaXZvcnkzAGl2b3J5NABraGFraQBraGFraTEAa2hha2kyAGtoYWtpMwBraGFraTQAbGF2ZW5kZXIAbGF2ZW5kZXJibHVzaABsYXZlbmRlcmJsdXNoMQBsYXZlbmRlcmJsdXNoMgBsYXZlbmRlcmJsdXNoMwBsYXZlbmRlcmJsdXNoNABsYXduZ3JlZW4AbGVtb25jaGlmZm9uAGxlbW9uY2hpZmZvbjEAbGVtb25jaGlmZm9uMgBsZW1vbmNoaWZmb24zAGxlbW9uY2hpZmZvbjQAbGlnaHRibHVlAGxpZ2h0Ymx1ZTEAbGlnaHRibHVlMgBsaWdodGJsdWUzAGxpZ2h0Ymx1ZTQAbGlnaHRjb3JhbABsaWdodGN5YW4AbGlnaHRjeWFuMQBsaWdodGN5YW4yAGxpZ2h0Y3lhbjMAbGlnaHRjeWFuNABsaWdodGdvbGRlbnJvZABsaWdodGdvbGRlbnJvZDEAbGlnaHRnb2xkZW5yb2QyAGxpZ2h0Z29sZGVucm9kMwBsaWdodGdvbGRlbnJvZDQAbGlnaHRnb2xkZW5yb2R5ZWxsb3cAbGlnaHRncmF5AGxpZ2h0Z3JleQBsaWdodHBpbmsAbGlnaHRwaW5rMQBsaWdodHBpbmsyAGxpZ2h0cGluazMAbGlnaHRwaW5rNABsaWdodHNhbG1vbgBsaWdodHNhbG1vbjEAbGlnaHRzYWxtb24yAGxpZ2h0c2FsbW9uMwBsaWdodHNhbG1vbjQAbGlnaHRzZWFncmVlbgBsaWdodHNreWJsdWUAbGlnaHRza3libHVlMQBsaWdodHNreWJsdWUyAGxpZ2h0c2t5Ymx1ZTMAbGlnaHRza3libHVlNABsaWdodHNsYXRlYmx1ZQBsaWdodHNsYXRlZ3JheQBsaWdodHNsYXRlZ3JleQBsaWdodHN0ZWVsYmx1ZQBsaWdodHN0ZWVsYmx1ZTEAbGlnaHRzdGVlbGJsdWUyAGxpZ2h0c3RlZWxibHVlMwBsaWdodHN0ZWVsYmx1ZTQAbGlnaHR5ZWxsb3cAbGlnaHR5ZWxsb3cxAGxpZ2h0eWVsbG93MgBsaWdodHllbGxvdzMAbGlnaHR5ZWxsb3c0AGxpbWVncmVlbgBsaW5lbgBtYWdlbnRhAG1hZ2VudGExAG1hZ2VudGEyAG1hZ2VudGEzAG1hZ2VudGE0AG1hcm9vbgBtYXJvb24xAG1hcm9vbjIAbWFyb29uMwBtYXJvb240AG1lZGl1bWFxdWFtYXJpbmUAbWVkaXVtYmx1ZQBtZWRpdW1vcmNoaWQAbWVkaXVtb3JjaGlkMQBtZWRpdW1vcmNoaWQyAG1lZGl1bW9yY2hpZDMAbWVkaXVtb3JjaGlkNABtZWRpdW1wdXJwbGUAbWVkaXVtcHVycGxlMQBtZWRpdW1wdXJwbGUyAG1lZGl1bXB1cnBsZTMAbWVkaXVtcHVycGxlNABtZWRpdW1zZWFncmVlbgBtZWRpdW1zbGF0ZWJsdWUAbWVkaXVtc3ByaW5nZ3JlZW4AbWVkaXVtdHVycXVvaXNlAG1lZGl1bXZpb2xldHJlZABtaWRuaWdodGJsdWUAbWludGNyZWFtAG1pc3R5cm9zZQBtaXN0eXJvc2UxAG1pc3R5cm9zZTIAbWlzdHlyb3NlMwBtaXN0eXJvc2U0AG1vY2Nhc2luAG5hdmFqb3doaXRlAG5hdmFqb3doaXRlMQBuYXZham93aGl0ZTIAbmF2YWpvd2hpdGUzAG5hdmFqb3doaXRlNABuYXZ5AG5hdnlibHVlAG5vbmUAb2xkbGFjZQBvbGl2ZWRyYWIAb2xpdmVkcmFiMQBvbGl2ZWRyYWIyAG9saXZlZHJhYjMAb2xpdmVkcmFiNABvcmFuZ2UAb3JhbmdlMQBvcmFuZ2UyAG9yYW5nZTMAb3JhbmdlNABvcmFuZ2VyZWQAb3JhbmdlcmVkMQBvcmFuZ2VyZWQyAG9yYW5nZXJlZDMAb3JhbmdlcmVkNABvcmNoaWQAb3JjaGlkMQBvcmNoaWQyAG9yY2hpZDMAb3JjaGlkNABwYWxlZ29sZGVucm9kAHBhbGVncmVlbgBwYWxlZ3JlZW4xAHBhbGVncmVlbjIAcGFsZWdyZWVuMwBwYWxlZ3JlZW40AHBhbGV0dXJxdW9pc2UAcGFsZXR1cnF1b2lzZTEAcGFsZXR1cnF1b2lzZTIAcGFsZXR1cnF1b2lzZTMAcGFsZXR1cnF1b2lzZTQAcGFsZXZpb2xldHJlZABwYWxldmlvbGV0cmVkMQBwYWxldmlvbGV0cmVkMgBwYWxldmlvbGV0cmVkMwBwYWxldmlvbGV0cmVkNABwYXBheWF3aGlwAHBlYWNocHVmZgBwZWFjaHB1ZmYxAHBlYWNocHVmZjIAcGVhY2hwdWZmMwBwZWFjaHB1ZmY0AHBlcnUAcGluawBwaW5rMQBwaW5rMgBwaW5rMwBwaW5rNABwbHVtAHBsdW0xAHBsdW0yAHBsdW0zAHBsdW00AHBvd2RlcmJsdWUAcHVycGxlAHB1cnBsZTEAcHVycGxlMgBwdXJwbGUzAHB1cnBsZTQAcmVkAHJlZDEAcmVkMgByZWQzAHJlZDQAcm9zeWJyb3duAHJvc3licm93bjEAcm9zeWJyb3duMgByb3N5YnJvd24zAHJvc3licm93bjQAcm95YWxibHVlAHJveWFsYmx1ZTEAcm95YWxibHVlMgByb3lhbGJsdWUzAHJveWFsYmx1ZTQAc2FkZGxlYnJvd24Ac2FsbW9uAHNhbG1vbjEAc2FsbW9uMgBzYWxtb24zAHNhbG1vbjQAc2FuZHlicm93bgBzZWFncmVlbgBzZWFncmVlbjEAc2VhZ3JlZW4yAHNlYWdyZWVuMwBzZWFncmVlbjQAc2Vhc2hlbGwAc2Vhc2hlbGwxAHNlYXNoZWxsMgBzZWFzaGVsbDMAc2Vhc2hlbGw0AHNpZW5uYQBzaWVubmExAHNpZW5uYTIAc2llbm5hMwBzaWVubmE0AHNreWJsdWUAc2t5Ymx1ZTEAc2t5Ymx1ZTIAc2t5Ymx1ZTMAc2t5Ymx1ZTQAc2xhdGVibHVlAHNsYXRlYmx1ZTEAc2xhdGVibHVlMgBzbGF0ZWJsdWUzAHNsYXRlYmx1ZTQAc2xhdGVncmF5AHNsYXRlZ3JheTEAc2xhdGVncmF5MgBzbGF0ZWdyYXkzAHNsYXRlZ3JheTQAc2xhdGVncmV5AHNub3cAc25vdzEAc25vdzIAc25vdzMAc25vdzQAc3ByaW5nZ3JlZW4Ac3ByaW5nZ3JlZW4xAHNwcmluZ2dyZWVuMgBzcHJpbmdncmVlbjMAc3ByaW5nZ3JlZW40AHN0ZWVsYmx1ZQBzdGVlbGJsdWUxAHN0ZWVsYmx1ZTIAc3RlZWxibHVlMwBzdGVlbGJsdWU0AHRhbgB0YW4xAHRhbjIAdGFuMwB0YW40AHRoaXN0bGUAdGhpc3RsZTEAdGhpc3RsZTIAdGhpc3RsZTMAdGhpc3RsZTQAdG9tYXRvAHRvbWF0bzEAdG9tYXRvMgB0b21hdG8zAHRvbWF0bzQAdHVycXVvaXNlAHR1cnF1b2lzZTEAdHVycXVvaXNlMgB0dXJxdW9pc2UzAHR1cnF1b2lzZTQAdmlvbGV0AHZpb2xldHJlZAB2aW9sZXRyZWQxAHZpb2xldHJlZDIAdmlvbGV0cmVkMwB2aW9sZXRyZWQ0AHdoZWF0AHdoZWF0MQB3aGVhdDIAd2hlYXQzAHdoZWF0NAB3aGl0ZQB3aGl0ZXNtb2tlAHllbGxvdwB5ZWxsb3cxAHllbGxvdzIAeWVsbG93MwB5ZWxsb3c0AHllbGxvd2dyZWVuAGxhY2sAaGl0ZQBpZ2h0Z3JleQBYMTEvAC8lcy8lcwBpbWFnZXNjYWxlAGZhbHNlAGJsYWNrAGRvdHRlZABkYXNoZWQAY3AtPnNyYwBodG1sdGFibGUuYwBlbWl0X2h0bWxfaW1nAGNwLT5zcmNbMF0AdHJhbnNwYXJlbnQAXyVkACVkADIAMwA0ADUANgA3ADgAOQAxMAAxMQAxMgAxMwAxNAAxNQAxNgAxNwAxOAAxOQAyMABBZ25vZGVpbmZvX3QAQWdlZGdlaW5mb190AHJvd2cAY29sZwBBZ3JhcGhpbmZvX3QAZGVseCA+PSAwAHBvc19odG1sX3RibABkZWx5ID49IDAAdGFibGUgc2l6ZSB0b28gc21hbGwgZm9yIGNvbnRlbnQKAGZpeGVkIHRhYmxlIHNpemUgd2l0aCB1bnNwZWNpZmllZCB3aWR0aCBvciBoZWlnaHQKAGNlbGwgc2l6ZSB0b28gc21hbGwgZm9yIGNvbnRlbnQKAGZpeGVkIGNlbGwgc2l6ZSB3aXRoIHVuc3BlY2lmaWVkIHdpZHRoIG9yIGhlaWdodAoATm8gb3IgaW1wcm9wZXIgaW1hZ2UgZmlsZT0iJXMiCgBwZW5jb2xvcgAtPgBmUFEuYwBQUWNoZWNrAEhlYXAgb3ZlcmZsb3cKACUhUFMtQWRvYmUtMi4wCi9ub2RlIHsKICAvWSBleGNoIGRlZgogIC9YIGV4Y2ggZGVmCiAgL3kgZXhjaCBkZWYKICAveCBleGNoIGRlZgogIG5ld3BhdGgKICB4IHkgbW92ZXRvCiAgeCBZIGxpbmV0bwogIFggWSBsaW5ldG8KICBYIHkgbGluZXRvCiAgY2xvc2VwYXRoIGZpbGwKfSBkZWYKL2NlbGwgewogIC9ZIGV4Y2ggZGVmCiAgL1ggZXhjaCBkZWYKICAveSBleGNoIGRlZgogIC94IGV4Y2ggZGVmCiAgbmV3cGF0aAogIHggeSBtb3ZldG8KICB4IFkgbGluZXRvCiAgWCBZIGxpbmV0bwogIFggeSBsaW5ldG8KICBjbG9zZXBhdGggc3Ryb2tlCn0gZGVmCgBzaG93cGFnZQoAZmFpbGVkIGF0IG5vZGUgJWRbMF0KAG5wLT5jZWxsc1swXQBtYXplLmMAY2hrU2dyYXBoAGZhaWxlZCBhdCBub2RlICVkWzFdCgBucC0+Y2VsbHNbMV0AZGl0ZW1zAGZpbmRTVmVydAAlJSUlUGFnZTogMSAxCiUlJSVQYWdlQm91bmRpbmdCb3g6ICVkICVkICVkICVkCgAlZiAlZiB0cmFuc2xhdGUKADAgMCAxIHNldHJnYmNvbG9yCgAlZiAlZiAlZiAlZiBub2RlCgAwIDAgMCBzZXRyZ2Jjb2xvcgoAJWYgJWYgJWYgJWYgY2VsbAoAMSAwIDAgc2V0cmdiY29sb3IKAHVuZXhwZWN0ZWQgY2FzZSBpbiBsb2NhdGVfZW5kcG9pbnQKADAAdHJhcGV6b2lkLmMAbG9jYXRlX2VuZHBvaW50AGFkZF9zZWdtZW50OiBlcnJvcgoAbmV3bm9kZTogUXVlcnktdGFibGUgb3ZlcmZsb3cKAG5ld25vZGUAbmV3dHJhcDogVHJhcGV6b2lkLXRhYmxlIG92ZXJmbG93ICVkCgBuZXd0cmFwAGluZGV4LmMAUlRyZWVTZWFyY2gAbi0+bGV2ZWwgPj0gMABSVHJlZUluc2VydABsZXZlbCA+PSAwICYmIGxldmVsIDw9ICgqbiktPmxldmVsAHItPmJvdW5kYXJ5W2ldIDw9IHItPmJvdW5kYXJ5W05VTURJTVMgKyBpXQByICYmIG4gJiYgbmV3AFJUcmVlSW5zZXJ0MgBsZXZlbCA+PSAwICYmIGxldmVsIDw9IG4tPmxldmVsAEZBTFNFAG5vZGUuYwBOb2RlQ292ZXIAciAmJiBuAFBpY2tCcmFuY2gAQWRkQnJhbmNoAGkgPCBOT0RFQ0FSRABuZXcAbiAmJiBpID49IDAgJiYgaSA8IE5PREVDQVJEAERpc2NvbkJyYW5jaAByAHJlY3RhbmdsZS5jAFJlY3RBcmVhAHIgJiYgcnIAQ29tYmluZVJlY3QAciAmJiBzAE92ZXJsYXAAbgBzcGxpdC5xLmMAU3BsaXROb2RlAGIAbi0+Y291bnQgKyAoKm5uKS0+Y291bnQgPT0gTk9ERUNBUkQgKyAxAExvYWROb2RlcwBxAHAAcnRwLT5zcGxpdC5QYXJ0aXRpb25zWzBdLnBhcnRpdGlvbltpXSA9PSAwIHx8IHJ0cC0+c3BsaXQuUGFydGl0aW9uc1swXS5wYXJ0aXRpb25baV0gPT0gMQBydHAtPnNwbGl0LlBhcnRpdGlvbnNbMF0uY291bnRbMF0gKyBydHAtPnNwbGl0LlBhcnRpdGlvbnNbMF0uY291bnRbMV0gPT0gTk9ERUNBUkQgKyAxAE1ldGhvZFplcm8AcnRwLT5zcGxpdC5QYXJ0aXRpb25zWzBdLmNvdW50WzBdID49IHJ0cC0+TWluRmlsbCAmJiBydHAtPnNwbGl0LlBhcnRpdGlvbnNbMF0uY291bnRbMV0gPj0gcnRwLT5NaW5GaWxsACFydHAtPnNwbGl0LlBhcnRpdGlvbnNbMF0udGFrZW5baV0AQ2xhc3NpZnkAR2V0QnJhbmNoZXMAbi0+YnJhbmNoW2ldLmNoaWxkAAACAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIBAgMEBQYHCAkKCwwNDg8QERITFBUWFxgZGhscHR4fICEiIyQlJicoAgICAgICEAxZAQAfUAgDBxITFFcWFwgLaQwfCgUMDikRKw8tEC8wIDIGNDUbHB0eCwwhIiMkJSYnKAwYGRcEChscGiAqCiEiIyQlJicoDAoOUwosWDFYWFhYWFgMGxwPLlgzISIjJCUmJygbHP9T//8hIiMkJSYnKAz//wX///8JFP//////DBsc/xAVFiEiIyQlJicoGxz/////ISIjJCUmJygM/xITFBEWF////////wwbHP///xIhIiMkJSYnKBsc/////yEiIyQlJicoDP///////xP///////8MGxz/////ISIjJCUmJygbHP////8hIiMkJSYnKBITFBUWFxgZ////////////IyQlJicbEhMUFhciNmgBHzhWISACGxsbXhsbNzlwNtLCTwQ8IkciPyJEIiJYImUiIgUGX2A5BAcICQoLDA0OBGZnXWptBQZvWDtxBwgJCgsMDQ4Ecjxbcz5hRhsSExQWFwQFBj9BYkkHCAkKCwwNDgUGAFwAAAcICQoLDA0OBAAATwAAAFNCAAAAAAAEBQYARFRVBwgJCgsMDQ4FBgAAAAAHCAkKCwwNDgQAKiwuRzEzAAAAAAAABAUGAAAASgcICQoLDA0OBQYAAAAABwgJCgsMDQ4EAAAAAAAATAAAAAAAAAQFBgAAAAAHCAkKCwwNDgUGAAAAAAcICQoLDA0OKSstLzAyNDUAAAAAAAAAAAApKy0wMgAELwAkIwASFBYaHB4gGAAFBy8vLwAvLwAACQgoAAABIgIGAAAAAAAIAAAAAAAAAAAAAAAAACUDJhMKKRULKhcOLRkRGwwrHQ0sHw8hEAAzADAAL0MAMQAvADUuJ0IyQQA6OAA8NEUANgBAAAA/AEQ3Ozk9AAIDAwEBAgEBAQMDAwMDAwMDAQEBAQEBAQEBAQEBAQEBAQIBAQIABgEDAwMDAwEAAQIDAAQBAgMABAAEAAQAAwIBAgECAVN5bnRheCBlcnJvcjogbm9uLXNwYWNlIHN0cmluZyB1c2VkIGJlZm9yZSA8VEFCTEU+AFN5bnRheCBlcnJvcjogbm9uLXNwYWNlIHN0cmluZyB1c2VkIGFmdGVyIDwvVEFCTEU+AAApKioqKywsLS0tLS0tLS0tLS4vMDEyMzQ1Njc4OTo7PD0+Pj8/QUBCQkJCQkJDQ0REREZFR0dHSUhKSEtITEhNTU5OT0//Aw8QESM6JD0lQBVDJkUnSBhLGU0aKBxOHR5QUVJZWmxrbmNkV2ltZW1vcnkgZXhoYXVzdGVkACVzIGluIGxpbmUgJWQgCgAuLi4gJXMgLi4uCgBUQUJMRQBUUgBUSABURABIVE1MAEZPTlQAQgBVAE8ASQBTVVAAU1VCAFMAQlIASFIAVlIASU1HAFVua25vd24gSFRNTCBlbGVtZW50IDwlcz4gb24gbGluZSAlZCAKADxJTUc+AElsbGVnYWwgYXR0cmlidXRlICVzIGluICVzIC0gaWdub3JlZAoAc2NhbGUAc3JjADxCUj4AYWxpZ24ASUdIVABFRlQARU5URVIASWxsZWdhbCB2YWx1ZSAlcyBmb3IgQUxJR04gLSBpZ25vcmVkCgA8Rk9OVD4AY29sb3IAZmFjZQBwb2ludC1zaXplAFBPSU5ULVNJWkUASW1wcm9wZXIgJXMgdmFsdWUgJXMgLSBpZ25vcmVkACVzIHZhbHVlICVzID4gJWQgLSB0b28gbGFyZ2UgLSBpZ25vcmVkACVzIHZhbHVlICVzIDwgJWQgLSB0b28gc21hbGwgLSBpZ25vcmVkADxURD4AYmFsaWduAGJnY29sb3IAYm9yZGVyAGNlbGxwYWRkaW5nAGNlbGxzcGFjaW5nAGNvbHNwYW4AZml4ZWRzaXplAGdyYWRpZW50YW5nbGUAaGVpZ2h0AGhyZWYAaWQAcG9ydAByb3dzcGFuAHNpZGVzAHN0eWxlAHRhcmdldAB0aXRsZQB0b29sdGlwAHZhbGlnbgB3aWR0aABXSURUSABPVFRPTQBPUABJRERMRQBJbGxlZ2FsIHZhbHVlICVzIGZvciBWQUxJR04gLSBpZ25vcmVkCgAgLABPVU5ERUQAQURJQUwASWxsZWdhbCB2YWx1ZSAlcyBmb3IgU1RZTEUgLSBpZ25vcmVkCgBTT0xJRABJTlZJU0lCTEUASU5WSVMARE9UVEVEAERBU0hFRABVbnJlY29nbml6ZWQgY2hhcmFjdGVyICclYycgKCVkKSBpbiBzaWRlcyBhdHRyaWJ1dGUKAFJPV1NQQU4AUk9XU1BBTiB2YWx1ZSBjYW5ub3QgYmUgMCAtIGlnbm9yZWQKAEhFSUdIVABHUkFESUVOVEFOR0xFAFJVRQBBTFNFAElsbGVnYWwgdmFsdWUgJXMgZm9yIEZJWEVEU0laRSAtIGlnbm9yZWQKAENPTFNQQU4AQ09MU1BBTiB2YWx1ZSBjYW5ub3QgYmUgMCAtIGlnbm9yZWQKAENFTExTUEFDSU5HAENFTExQQURESU5HAEJPUkRFUgBJbGxlZ2FsIHZhbHVlICVzIGZvciBCQUxJR04gaW4gVEQgLSBpZ25vcmVkCgBFWFQASWxsZWdhbCB2YWx1ZSAlcyBmb3IgQUxJR04gaW4gVEQgLSBpZ25vcmVkCgA8VEFCTEU+AGNlbGxib3JkZXIAY29sdW1ucwByb3dzAFVua25vd24gdmFsdWUgJXMgZm9yIFJPV1MgLSBpZ25vcmVkCgBVbmtub3duIHZhbHVlICVzIGZvciBDT0xVTU5TIC0gaWdub3JlZAoAQ0VMTFNCT1JERVIAPEhUTUw+ADwvSFRNTD4ALS0ATGFiZWwgY2xvc2VkIGJlZm9yZSBlbmQgb2YgSFRNTCBlbGVtZW50CgBVbmNsb3NlZCBjb21tZW50CgBqID09IDAAY3Z0LmMAUG9ic3BhdGgAcm91dGUuYwBsaWJwYXRoLyVzOiVkOiAlcwoAc2hvcnRlc3QuYwBzb3VyY2UgcG9pbnQgbm90IGluIGFueSB0cmlhbmdsZQBkZXN0aW5hdGlvbiBwb2ludCBub3QgaW4gYW55IHRyaWFuZ2xlAGNhbm5vdCBmaW5kIHRyaWFuZ2xlIHBhdGgAY2Fubm90IG1hbGxvYyBvcHMAY2Fubm90IHJlYWxsb2Mgb3BzAHRyaWFuZ3VsYXRpb24gZmFpbGVkAGNhbm5vdCBtYWxsb2MgdHJpcwBjYW5ub3QgcmVhbGxvYyB0cmlzAGNhbm5vdCBtYWxsb2MgZHEucG5scwBjYW5ub3QgcmVhbGxvYyBkcS5wbmxzAGNhbm5vdCBtYWxsb2MgcG5scwBjYW5ub3QgbWFsbG9jIHBubHBzAGNhbm5vdCByZWFsbG9jIHBubHMAY2Fubm90IHJlYWxsb2MgcG5scHMAQ0RBVEEASUQASURSRUYASURSRUZTAEVOVElUWQBFTlRJVElFUwBOTVRPS0VOAE5NVE9LRU5TAE5PVEFUSU9OKAAoAHwAaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlAGh0dHA6Ly93d3cudzMub3JnLzIwMDAveG1sbnMvAHhtbD1odHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2UAL2Rldi91cmFuZG9tAGZhbGxiYWNrKDQpAGdldHRpbWVvZmRheV9yZXMgPT0gMAB4bWxwYXJzZS5jAGdhdGhlcl90aW1lX2VudHJvcHkARVhQQVRfRU5UUk9QWV9ERUJVRwAxAEVudHJvcHk6ICVzIC0tPiAweCUwKmx4ICglbHUgYnl0ZXMpCgBpbnZhbGlkIGFyZ3VtZW50AHByZWZpeCBtdXN0IG5vdCBiZSBib3VuZCB0byBvbmUgb2YgdGhlIHJlc2VydmVkIG5hbWVzcGFjZSBuYW1lcwByZXNlcnZlZCBwcmVmaXggKHhtbG5zKSBtdXN0IG5vdCBiZSBkZWNsYXJlZCBvciB1bmRlY2xhcmVkAHJlc2VydmVkIHByZWZpeCAoeG1sKSBtdXN0IG5vdCBiZSB1bmRlY2xhcmVkIG9yIGJvdW5kIHRvIGFub3RoZXIgbmFtZXNwYWNlIG5hbWUAY2Fubm90IHN1c3BlbmQgaW4gZXh0ZXJuYWwgcGFyYW1ldGVyIGVudGl0eQBwYXJzaW5nIGZpbmlzaGVkAHBhcnNpbmcgYWJvcnRlZABwYXJzZXIgbm90IHN1c3BlbmRlZABwYXJzZXIgc3VzcGVuZGVkAGlsbGVnYWwgY2hhcmFjdGVyKHMpIGluIHB1YmxpYyBpZAB0ZXh0IGRlY2xhcmF0aW9uIG5vdCB3ZWxsLWZvcm1lZABYTUwgZGVjbGFyYXRpb24gbm90IHdlbGwtZm9ybWVkAGluY29tcGxldGUgbWFya3VwIGluIHBhcmFtZXRlciBlbnRpdHkAbXVzdCBub3QgdW5kZWNsYXJlIHByZWZpeAB1bmJvdW5kIHByZWZpeABjYW5ub3QgY2hhbmdlIHNldHRpbmcgb25jZSBwYXJzaW5nIGhhcyBiZWd1bgByZXF1ZXN0ZWQgZmVhdHVyZSByZXF1aXJlcyBYTUxfRFREIHN1cHBvcnQgaW4gRXhwYXQAZW50aXR5IGRlY2xhcmVkIGluIHBhcmFtZXRlciBlbnRpdHkAdW5leHBlY3RlZCBwYXJzZXIgc3RhdGUgLSBwbGVhc2Ugc2VuZCBhIGJ1ZyByZXBvcnQAZG9jdW1lbnQgaXMgbm90IHN0YW5kYWxvbmUAZXJyb3IgaW4gcHJvY2Vzc2luZyBleHRlcm5hbCBlbnRpdHkgcmVmZXJlbmNlAHVuY2xvc2VkIENEQVRBIHNlY3Rpb24AZW5jb2Rpbmcgc3BlY2lmaWVkIGluIFhNTCBkZWNsYXJhdGlvbiBpcyBpbmNvcnJlY3QAdW5rbm93biBlbmNvZGluZwBYTUwgb3IgdGV4dCBkZWNsYXJhdGlvbiBub3QgYXQgc3RhcnQgb2YgZW50aXR5AHJlZmVyZW5jZSB0byBleHRlcm5hbCBlbnRpdHkgaW4gYXR0cmlidXRlAHJlZmVyZW5jZSB0byBiaW5hcnkgZW50aXR5AHJlZmVyZW5jZSB0byBpbnZhbGlkIGNoYXJhY3RlciBudW1iZXIAYXN5bmNocm9ub3VzIGVudGl0eQByZWN1cnNpdmUgZW50aXR5IHJlZmVyZW5jZQB1bmRlZmluZWQgZW50aXR5AGlsbGVnYWwgcGFyYW1ldGVyIGVudGl0eSByZWZlcmVuY2UAanVuayBhZnRlciBkb2N1bWVudCBlbGVtZW50AGR1cGxpY2F0ZSBhdHRyaWJ1dGUAbWlzbWF0Y2hlZCB0YWcAcGFydGlhbCBjaGFyYWN0ZXIAdW5jbG9zZWQgdG9rZW4Abm90IHdlbGwtZm9ybWVkIChpbnZhbGlkIHRva2VuKQBubyBlbGVtZW50IGZvdW5kAHN5bnRheCBlcnJvcgBvdXQgb2YgbWVtb3J5AAIDBAUGBwgAAAkKCwwNDg8QEQAAAAAAAAAAAAAAABITABQAAAAAAAAAAAAAAAAAABUWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBARcAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZAxobHB0eAAAfICEiIyQlEBEAAAAAAAAAAAAAAAASEyYUAAAAAAAAAAAAAAAAAAAnFgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEXAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBARgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQ0RBVEFbVVMtQVNDSUkAVVRGLTE2AFVURi0xNkJFAFVURi0xNkxFAHZlcnNpb24AZW5jb2RpbmcAc3RhbmRhbG9uZQBET0NUWVBFAFNZU1RFTQBQVUJMSUMARU5USVRZAEFUVExJU1QARUxFTUVOVABOT1RBVElPTgBJTkNMVURFAElHTk9SRQBFTVBUWQBBTlkAUENEQVRBAElNUExJRUQAUkVRVUlSRUQARklYRUQAQ0RBVEEASUQASURSRUYASURSRUZTAEVOVElUSUVTAE5NVE9LRU4ATk1UT0tFTlMATkRBVEEAVCEiGQ0BAgMRSxwMEAQLHRIeJ2hub3BxYiAFBg8TFBUaCBYHKCQXGAkKDhsfJSODgn0mKis8PT4/Q0dKTVhZWltcXV5fYGFjZGVmZ2lqa2xyc3R5ent8AElsbGVnYWwgYnl0ZSBzZXF1ZW5jZQBEb21haW4gZXJyb3IAUmVzdWx0IG5vdCByZXByZXNlbnRhYmxlAE5vdCBhIHR0eQBQZXJtaXNzaW9uIGRlbmllZABPcGVyYXRpb24gbm90IHBlcm1pdHRlZABObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5AE5vIHN1Y2ggcHJvY2VzcwBGaWxlIGV4aXN0cwBWYWx1ZSB0b28gbGFyZ2UgZm9yIGRhdGEgdHlwZQBObyBzcGFjZSBsZWZ0IG9uIGRldmljZQBPdXQgb2YgbWVtb3J5AFJlc291cmNlIGJ1c3kASW50ZXJydXB0ZWQgc3lzdGVtIGNhbGwAUmVzb3VyY2UgdGVtcG9yYXJpbHkgdW5hdmFpbGFibGUASW52YWxpZCBzZWVrAENyb3NzLWRldmljZSBsaW5rAFJlYWQtb25seSBmaWxlIHN5c3RlbQBEaXJlY3Rvcnkgbm90IGVtcHR5AENvbm5lY3Rpb24gcmVzZXQgYnkgcGVlcgBPcGVyYXRpb24gdGltZWQgb3V0AENvbm5lY3Rpb24gcmVmdXNlZABIb3N0IGlzIGRvd24ASG9zdCBpcyB1bnJlYWNoYWJsZQBBZGRyZXNzIGluIHVzZQBCcm9rZW4gcGlwZQBJL08gZXJyb3IATm8gc3VjaCBkZXZpY2Ugb3IgYWRkcmVzcwBCbG9jayBkZXZpY2UgcmVxdWlyZWQATm8gc3VjaCBkZXZpY2UATm90IGEgZGlyZWN0b3J5AElzIGEgZGlyZWN0b3J5AFRleHQgZmlsZSBidXN5AEV4ZWMgZm9ybWF0IGVycm9yAEludmFsaWQgYXJndW1lbnQAQXJndW1lbnQgbGlzdCB0b28gbG9uZwBTeW1ib2xpYyBsaW5rIGxvb3AARmlsZW5hbWUgdG9vIGxvbmcAVG9vIG1hbnkgb3BlbiBmaWxlcyBpbiBzeXN0ZW0ATm8gZmlsZSBkZXNjcmlwdG9ycyBhdmFpbGFibGUAQmFkIGZpbGUgZGVzY3JpcHRvcgBObyBjaGlsZCBwcm9jZXNzAEJhZCBhZGRyZXNzAEZpbGUgdG9vIGxhcmdlAFRvbyBtYW55IGxpbmtzAE5vIGxvY2tzIGF2YWlsYWJsZQBSZXNvdXJjZSBkZWFkbG9jayB3b3VsZCBvY2N1cgBTdGF0ZSBub3QgcmVjb3ZlcmFibGUAUHJldmlvdXMgb3duZXIgZGllZABPcGVyYXRpb24gY2FuY2VsZWQARnVuY3Rpb24gbm90IGltcGxlbWVudGVkAE5vIG1lc3NhZ2Ugb2YgZGVzaXJlZCB0eXBlAElkZW50aWZpZXIgcmVtb3ZlZABEZXZpY2Ugbm90IGEgc3RyZWFtAE5vIGRhdGEgYXZhaWxhYmxlAERldmljZSB0aW1lb3V0AE91dCBvZiBzdHJlYW1zIHJlc291cmNlcwBMaW5rIGhhcyBiZWVuIHNldmVyZWQAUHJvdG9jb2wgZXJyb3IAQmFkIG1lc3NhZ2UARmlsZSBkZXNjcmlwdG9yIGluIGJhZCBzdGF0ZQBOb3QgYSBzb2NrZXQARGVzdGluYXRpb24gYWRkcmVzcyByZXF1aXJlZABNZXNzYWdlIHRvbyBsYXJnZQBQcm90b2NvbCB3cm9uZyB0eXBlIGZvciBzb2NrZXQAUHJvdG9jb2wgbm90IGF2YWlsYWJsZQBQcm90b2NvbCBub3Qgc3VwcG9ydGVkAFNvY2tldCB0eXBlIG5vdCBzdXBwb3J0ZWQATm90IHN1cHBvcnRlZABQcm90b2NvbCBmYW1pbHkgbm90IHN1cHBvcnRlZABBZGRyZXNzIGZhbWlseSBub3Qgc3VwcG9ydGVkIGJ5IHByb3RvY29sAEFkZHJlc3Mgbm90IGF2YWlsYWJsZQBOZXR3b3JrIGlzIGRvd24ATmV0d29yayB1bnJlYWNoYWJsZQBDb25uZWN0aW9uIHJlc2V0IGJ5IG5ldHdvcmsAQ29ubmVjdGlvbiBhYm9ydGVkAE5vIGJ1ZmZlciBzcGFjZSBhdmFpbGFibGUAU29ja2V0IGlzIGNvbm5lY3RlZABTb2NrZXQgbm90IGNvbm5lY3RlZABDYW5ub3Qgc2VuZCBhZnRlciBzb2NrZXQgc2h1dGRvd24AT3BlcmF0aW9uIGFscmVhZHkgaW4gcHJvZ3Jlc3MAT3BlcmF0aW9uIGluIHByb2dyZXNzAFN0YWxlIGZpbGUgaGFuZGxlAFJlbW90ZSBJL08gZXJyb3IAUXVvdGEgZXhjZWVkZWQATm8gbWVkaXVtIGZvdW5kAFdyb25nIG1lZGl1bSB0eXBlAE5vIGVycm9yIGluZm9ybWF0aW9uAAASEBMUFRYXGBkaGxwdHh8gIRAQIiMQJCUmJygpKisQLC0uES8wERExERERMjM0NTY3ODkREBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEDoQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEDsQPD0+P0BBEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEEIQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEEMQEEQQRUZHEEgQSRAQEBBKS0xNEBBOEE9QEBAQEFEQEBAQEBAQEBAQEBAQUhAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQUxAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEFRVVlcQEFhZEBAQEBAQEBAQEBAQEBAQEBAQEBAQEFoQW1xdXl9gYWIQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//////////////////////////////////////////8AAAAA/v8A/AEAAPgBAAB4AAAAAP/73/sAAIAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwA/P/gr//////////////f//////8gQLAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAA/AMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/AAAAAAAhv7///8AQEkAAAAAABgA3/8AyAAAAAAAAAABADwAAAAAAAAAAAAAAAAQ4AEeAGD/vwAAAAAAAP8HAAAAAAAAAAAAAAAAAAAAAAAAAPjPAwAAAAMAIP9/AAAATgAAAAAAAAAAAAAAAAAAAAAA/AAAAAAAAAAAABAAIB4AMAABAAAAAAAAAAAQACAAAAAA/A8AAAAAAAAAEAAgAAAAAAAAAAAAAAAAABAAIAAAAAADAAAAAAAAAAAQACAAAAAA/QAAAAAAAAAAAAAgAAAAAP8HAAAAAAAAAAAAIAAAAAAA/wAAAAAAAAAQACAAAAAAAAAAAAAAAAAAAAAgAAAAAD8CAAAAAAAAAAAABAAAAAAQAAAAAAAAgACAwN8ADAAAAAAAAAAAAAAAAAAfAAAAAAAA/v///wD8//8AAAAAAAAAAPwAAAAAAADA/9//BwAAAAAAAAAAAACABgD8AAAYPgAAgL8AzAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAYP///x8AAP8DAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAQAAGAAAAAAAAAAAADgAAAAAEAAAAHAAAAAAAAAAAAAAAAAAAAAwAAD+fy8AAP8D/38AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADjEAAAAAAAAAAAAAAAAAAAAAAADE/////wAAAMAAAAAAAAAAAAEA4J8AAAAAfz8AAAAAAAAAAAAAAAAAAAAAEAAQAAD8////HwAAAAAADAAAAAAAAEAADPAAAAAAAADA+AAAAAAAAADAAAAAAAAAAAD/AP///yEQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////9/AADwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgA+AA4ADgAGCA+P////z//////38f/PF//38AAP///wMAAP////8BAHsD0MGvQgAMH7z//wAAAAAAAv//////////////////////////////////////////////////////////DwD/////fwAAAP8HAAD/////////////PwAAAAAAAPz///7/////////////////////////////////////////////////////H/8DAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4IcD/gAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAAA//////9//w8AAAAAAAAAAP////v/////////////DwD//////////////////////////////////z8AAAD/Dx7///8B/MHgAAAAAAAAAAAAAAAeAQAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAA//8AAAAA/////w8AAAD///9/////////////////////////////////////fwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////////AAAAAAAAAAAAAAAAAAAAAAAA////////fwAAAAAAAMAA4AAAAAAAAAAAAAAAgA9wAAAAAAAAAAAAAAAAAAD/AP//fwADAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAARAgAAAAP/wMAAAAAAADwAAAAAAAAAAAAEMAAAP//AwcAAAAAAPgAAAAACIAAAAAAAAAAAAAACAD/PwDAAAAAAAAAAAAAAAAAAAAA8AAAgAsAAAAAAAAAgAIAAMAAAEMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAACAAAAAAAAAAAAAAAAAAAAAPz/AwAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMP///wN/AP/////3/38PAAAAAAAAAAAAAAAAAAAAAACA/v8A/AEAAPgBAAD4PwAAAAAAAAAAAAAAAAAAAH9/ADCH//////+P/wAAAAAAAOD//wf/DwAAAAAAAP//////PwAAAAAPAAAAAAAAAAAAAAAAAACAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAID/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAMCPAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH/wD/AQAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP4AAAD/AAAA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///9/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwD/8/z8AAAADAAAAAAAA/gMAAAAAAAAAAAAAAAAAGAAPAAAAAAAAAAAAAAAAAAAA4QEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACABwAAAAAAAAAAAAAAAAD///////////////////////////////////////8/AP////9//v///////////////////////////z8AAAAA//////////8/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/////////////fwD//wMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAgAAAAIAAAgAAAAIAAAgAAAAIAAAAACAAAAAgAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAP//////D////////////////w8A/3/+f/7//v8AAAAA/wf///9//////////w///////wcAAAAAAAAAAMD///8HAP//////B/8BAwAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8BAL///////////x///w8A/////98HAAD//wEA/////////3/9/////////////////////////////x7/////////Pw8A////AAAAAAAAAAAAAAAAAAAAAAAA+P//////////4f8AAAAAAAD//////////z8AAAAAAAAA//////////////////8PAAAAAAAAAAAAAAAAAAAAAAD/////////////////////////////////////////////////////////////////AAECAwQFBgcICf////////8KCwwNDg8QERITFBUWFxgZGhscHR4fICEiI////////woLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIj/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wABAgQHAwYFABIRExQVFhcYGRobHB0eHyAhESIjJBElJicoKSorLBEtLi8QEDAQEBAQEBAQMTIzEDQ1EBARERERERERERERERERERERERERERERERERNhERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERETcREREROBE5Ojs8PT4RERERERERERERERERERERERERERERERERERERERERERERERERERERERERPxAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBFAQRFCQ0RFRkdISRAQEEpLTE1OEBAQT1AQEBAQURAQEBAQEBAQEBEREVJTEBAQEBAQEBAQEBARERERVBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBERVRAQEBBWEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEFcQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEFhZWlsQEBAQEBAQEBAQEBAQEBAQEBAQEBAQXBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//////////////////////////////////////////wAAAAAAAAAA/v//B/7//wcAAAAAAAQgBP//f////3//////////////////////////////////w/8DAB9QAAAAAAAAAAAAACAAAAAAAN88QNf///v///////////+///////////////////////8D/P////////////////////////8A/v///38C/v////8AAAAAAP+/tgD///8HBwAAAP8H//////////7/w////////////////+8f/uH/nwAA////////AOD///////////////8DAP//////BzAE/////P8fAAD///8BAAAAAAAAAAD9HwAAAAAAAPAD/3//////////7//f4f/P//7+7p/5///9xeOfWYCwz/8DAO6H+f///W3DhxkCXsD/PwDuv/v///3t478bAQDP/wAA7p/5///97eOfGcCwz/8CAOzHPdYYx//Dxx2BAMD/AADu3/3///3v498dYAPP/wAA7N/9///97+PfHWBAz/8GAOzf/f/////n312AAM//APzs/3/8///7L3+AX/8AAAwA/v////9//wc/IP8DAAAAAJYl8P6u7P87XyD/8wAAAAABAAAA/wMAAP/+////H/7/A////v///x8AAAAAAAAAAP///////3/5/wP//+fB//9/QP8z/////78g///////3////////////PX89//////89/////z1/Pf9//////////z3//////////4cAAAAA//8AAP////////////8fAP7//////////////////////////////////////////////////////////5////7//wf////////////HAQD/3w8A//8PAP//DwD/3w0A////////z///AYAQ/wMAAAAA/wP//////////////wD//////wf//////////z8A////H/8P/wHA/////z8fAP//////D////wP/AwAAAAD///8P/////////3/+/x8A/wP/A4AAAAAAAAAAAAAAAP///////+//7w//AwAAAAD///////P///////+//wMA////////PwD/4///////PwAAAAAAAAAAAAAAAADebwD///////////////////////////////8AAAAAAAAAAP//Pz//////Pz//qv///z/////////fX9wfzw//H9wfAAAAAAAAAAAAAAAAAAACgAAA/x8AAAAAAAAAAAAAAACE/C8+UL3/8+BDAAD//////wEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADA////////AwAA//////9///////9//////////////////////x94DAD/////vyD/////////gAAA//9/AH9/f39/f39//////wAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAP4DPh/+////////////f+D+//////////////fg/////z/+/////////////38AAP///wcAAAAAAAD///////////////////////////////8/AAAAAAAAAAAA/////////////////////////////////x8AAAAAAAD//////////////////////x8AAAAAAAAAAP//////P/8f////DwAA//////9/8I////+A/////////////wAAAACA//z///////////////95DwD/BwAAAAAAAAAAAP+79////wAAAP///////w8A//////////8PAP8DAAD8CP//////B/////8HAP///x/////////3/wCA/wMAAAAA////////fwD/P/8D//9/BP////////9/BQAAOP//PAB+fn4Af38AAAAAAAAAAAAAAAAAAAAAAAD//////wf/A///////////////////////////DwD//3/4//////8P/////////////////z//////////////////AwAAAAB/APjg//1/X9v/////////////////AwAAAPj///////////////8/AAD///////////z///////8AAAAAAP8PAAAAAAAAAAAAAAAAAADf/////////////////////x8AAP8D/v//B/7//wfA/////////////3/8/PwcAAAAAP/v//9///+3/z//PwAAAAD///////////////////8HAAAAAAAAAAD///////8fAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////H////////wEAAAAAAP///38AAP///wcAAAAAAAD///8//////w//PgAAAAAA/////////////////////////z//AwAAAAAAAAAAAAA//f////+/kf//PwAAAAAAAAAAAAAAAAAAAAAAAAAAAP//PwD///8DAAAAAAAAAAD/////////wAAAAAAAAAAAb/Dv/v//DwAAAAAA////HwAAAAAAAAAAAAAAAAAAAAD///////8/AP//PwD//wcAAAAAAAAAAAAAAAAAAAAAAP///////////wEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//////////8/AAAAwP8AAPz///////8BAAD///8B/wP////////H/wAAAAAAAAAA//////////8eAP8DAAAAAAAAAAAAAAAAAAAAAAAAAAD///////8/AP8DAAAAAAAA/////////////////38AAAAAAAAAAAAAAAAAAAAAAAD///////////////8HAAAAAAAAAAAAAAAAAAAAAAAAAP//////fwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/////////wEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//////////x8A//////9/AAD4/wAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/////////////9///////////99k3v/r7/////////+/59/f////e1/8/f//////////////////////////////////////////////////////P/////3///f////3///f////3///f////3/////9/////f//98/////////v////lv73CoTqlqqW9/de//v/D+77/w8AAAAAAAAAAExDX0FMTABMQ19DVFlQRQAAAABMQ19OVU1FUklDAABMQ19USU1FAAAAAABMQ19DT0xMQVRFAABMQ19NT05FVEFSWQBMQ19NRVNTQUdFUwBMQU5HAEMuVVRGLTgAUE9TSVgATVVTTF9MT0NQQVRIABEACgAREREAAAAABQAAAAAAAAkAAAAACwAAAAAAAAAAEQAPChEREQMKBwABEwkLCwAACQYLAAALAAYRAAAAERERAAAAAAAAAAAAAAAAAAAAAAsAAAAAAAAAABEACgoREREACgAAAgAJCwAAAAkACwAACwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAAAAwAAAAACQwAAAAAAAwAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAADQAAAAQNAAAAAAkOAAAAAAAOAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAA8AAAAADwAAAAAJEAAAAAAAEAAAEAAAEgAAABISEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASAAAAEhISAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAAAAAAAAAAACgAAAAAKAAAAAAkLAAAAAAALAAALAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAADAAAAAAJDAAAAAAADAAADAAALSsgICAwWDB4AChudWxsKQAtMFgrMFggMFgtMHgrMHggMHgAaW5mAElORgBOQU4AMDEyMzQ1Njc4OUFCQ0RFRi4AYWxudW0AYWxwaGEAYmxhbmsAY250cmwAZGlnaXQAZ3JhcGgAbG93ZXIAcHJpbnQAcHVuY3QAc3BhY2UAdXBwZXIAeGRpZ2l0AEMuVVRGLTgAAAAAAAAAAABDAC9wcm9jL3NlbGYvZmQvAHJ3YQBpbmZpbml0eQBuYW4ACQAKAA0ADAAHABsAW1s6YWxudW06XV9dAFteWzphbG51bTpdX10AW1s6c3BhY2U6XV0AW15bOnNwYWNlOl1dAFtbOmRpZ2l0Ol1dAFteWzpkaWdpdDpdXQAvdG1wL3RtcGZpbGVfWFhYWFhYAHcr";var tempDoublePtr=STATICTOP;STATICTOP+=16;function ___assert_fail(condition,filename,line,func){abort("Assertion failed: "+Pointer_stringify(condition)+", at: "+[filename?Pointer_stringify(filename):"unknown filename",line,func?Pointer_stringify(func):"unknown function"])}function _emscripten_get_now(){abort()}function _emscripten_get_now_is_monotonic(){return ENVIRONMENT_IS_NODE||typeof dateNow!=="undefined"||(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&self["performance"]&&self["performance"]["now"]}var ERRNO_CODES={EPERM:1,ENOENT:2,ESRCH:3,EINTR:4,EIO:5,ENXIO:6,E2BIG:7,ENOEXEC:8,EBADF:9,ECHILD:10,EAGAIN:11,EWOULDBLOCK:11,ENOMEM:12,EACCES:13,EFAULT:14,ENOTBLK:15,EBUSY:16,EEXIST:17,EXDEV:18,ENODEV:19,ENOTDIR:20,EISDIR:21,EINVAL:22,ENFILE:23,EMFILE:24,ENOTTY:25,ETXTBSY:26,EFBIG:27,ENOSPC:28,ESPIPE:29,EROFS:30,EMLINK:31,EPIPE:32,EDOM:33,ERANGE:34,ENOMSG:42,EIDRM:43,ECHRNG:44,EL2NSYNC:45,EL3HLT:46,EL3RST:47,ELNRNG:48,EUNATCH:49,ENOCSI:50,EL2HLT:51,EDEADLK:35,ENOLCK:37,EBADE:52,EBADR:53,EXFULL:54,ENOANO:55,EBADRQC:56,EBADSLT:57,EDEADLOCK:35,EBFONT:59,ENOSTR:60,ENODATA:61,ETIME:62,ENOSR:63,ENONET:64,ENOPKG:65,EREMOTE:66,ENOLINK:67,EADV:68,ESRMNT:69,ECOMM:70,EPROTO:71,EMULTIHOP:72,EDOTDOT:73,EBADMSG:74,ENOTUNIQ:76,EBADFD:77,EREMCHG:78,ELIBACC:79,ELIBBAD:80,ELIBSCN:81,ELIBMAX:82,ELIBEXEC:83,ENOSYS:38,ENOTEMPTY:39,ENAMETOOLONG:36,ELOOP:40,EOPNOTSUPP:95,EPFNOSUPPORT:96,ECONNRESET:104,ENOBUFS:105,EAFNOSUPPORT:97,EPROTOTYPE:91,ENOTSOCK:88,ENOPROTOOPT:92,ESHUTDOWN:108,ECONNREFUSED:111,EADDRINUSE:98,ECONNABORTED:103,ENETUNREACH:101,ENETDOWN:100,ETIMEDOUT:110,EHOSTDOWN:112,EHOSTUNREACH:113,EINPROGRESS:115,EALREADY:114,EDESTADDRREQ:89,EMSGSIZE:90,EPROTONOSUPPORT:93,ESOCKTNOSUPPORT:94,EADDRNOTAVAIL:99,ENETRESET:102,EISCONN:106,ENOTCONN:107,ETOOMANYREFS:109,EUSERS:87,EDQUOT:122,ESTALE:116,ENOTSUP:95,ENOMEDIUM:123,EILSEQ:84,EOVERFLOW:75,ECANCELED:125,ENOTRECOVERABLE:131,EOWNERDEAD:130,ESTRPIPE:86};function ___setErrNo(value){if(Module["___errno_location"])HEAP32[Module["___errno_location"]()>>2]=value;return value}function _clock_gettime(clk_id,tp){var now;if(clk_id===0){now=Date.now()}else if(clk_id===1&&_emscripten_get_now_is_monotonic()){now=_emscripten_get_now()}else{___setErrNo(ERRNO_CODES.EINVAL);return-1}HEAP32[tp>>2]=now/1e3|0;HEAP32[tp+4>>2]=now%1e3*1e3*1e3|0;return 0}function ___clock_gettime(){return _clock_gettime.apply(null,arguments)}function ___lock(){}function ___map_file(pathname,size){___setErrNo(ERRNO_CODES.EPERM);return-1}var ERRNO_MESSAGES={0:"Success",1:"Not super-user",2:"No such file or directory",3:"No such process",4:"Interrupted system call",5:"I/O error",6:"No such device or address",7:"Arg list too long",8:"Exec format error",9:"Bad file number",10:"No children",11:"No more processes",12:"Not enough core",13:"Permission denied",14:"Bad address",15:"Block device required",16:"Mount device busy",17:"File exists",18:"Cross-device link",19:"No such device",20:"Not a directory",21:"Is a directory",22:"Invalid argument",23:"Too many open files in system",24:"Too many open files",25:"Not a typewriter",26:"Text file busy",27:"File too large",28:"No space left on device",29:"Illegal seek",30:"Read only file system",31:"Too many links",32:"Broken pipe",33:"Math arg out of domain of func",34:"Math result not representable",35:"File locking deadlock error",36:"File or path name too long",37:"No record locks available",38:"Function not implemented",39:"Directory not empty",40:"Too many symbolic links",42:"No message of desired type",43:"Identifier removed",44:"Channel number out of range",45:"Level 2 not synchronized",46:"Level 3 halted",47:"Level 3 reset",48:"Link number out of range",49:"Protocol driver not attached",50:"No CSI structure available",51:"Level 2 halted",52:"Invalid exchange",53:"Invalid request descriptor",54:"Exchange full",55:"No anode",56:"Invalid request code",57:"Invalid slot",59:"Bad font file fmt",60:"Device not a stream",61:"No data (for no delay io)",62:"Timer expired",63:"Out of streams resources",64:"Machine is not on the network",65:"Package not installed",66:"The object is remote",67:"The link has been severed",68:"Advertise error",69:"Srmount error",70:"Communication error on send",71:"Protocol error",72:"Multihop attempted",73:"Cross mount point (not really error)",74:"Trying to read unreadable message",75:"Value too large for defined data type",76:"Given log. name not unique",77:"f.d. invalid for this operation",78:"Remote address changed",79:"Can access a needed shared lib",80:"Accessing a corrupted shared lib",81:".lib section in a.out corrupted",82:"Attempting to link in too many libs",83:"Attempting to exec a shared library",84:"Illegal byte sequence",86:"Streams pipe error",87:"Too many users",88:"Socket operation on non-socket",89:"Destination address required",90:"Message too long",91:"Protocol wrong type for socket",92:"Protocol not available",93:"Unknown protocol",94:"Socket type not supported",95:"Not supported",96:"Protocol family not supported",97:"Address family not supported by protocol family",98:"Address already in use",99:"Address not available",100:"Network interface is not configured",101:"Network is unreachable",102:"Connection reset by network",103:"Connection aborted",104:"Connection reset by peer",105:"No buffer space available",106:"Socket is already connected",107:"Socket is not connected",108:"Can't send after socket shutdown",109:"Too many references",110:"Connection timed out",111:"Connection refused",112:"Host is down",113:"Host is unreachable",114:"Socket already connected",115:"Connection already in progress",116:"Stale file handle",122:"Quota exceeded",123:"No medium (in tape drive)",125:"Operation canceled",130:"Previous owner died",131:"State not recoverable"};var PATH={splitPath:(function(filename){var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)}),normalizeArray:(function(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift("..")}}return parts}),normalize:(function(path){var isAbsolute=path.charAt(0)==="/",trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter((function(p){return!!p})),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path}),dirname:(function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return"."}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir}),basename:(function(path){if(path==="/")return"/";var lastSlash=path.lastIndexOf("/");if(lastSlash===-1)return path;return path.substr(lastSlash+1)}),extname:(function(path){return PATH.splitPath(path)[3]}),join:(function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))}),join2:(function(l,r){return PATH.normalize(l+"/"+r)}),resolve:(function(){var resolvedPath="",resolvedAbsolute=false;for(var i=arguments.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?arguments[i]:FS.cwd();if(typeof path!=="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){return""}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=path.charAt(0)==="/"}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter((function(p){return!!p})),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."}),relative:(function(from,to){from=PATH.resolve(from).substr(1);to=PATH.resolve(to).substr(1);function trim(arr){var start=0;for(;start=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i0){result=buf.slice(0,bytesRead).toString("utf-8")}else{result=null}}else if(typeof window!="undefined"&&typeof window.prompt=="function"){result=window.prompt("Input: ");if(result!==null){result+="\n"}}else if(typeof readline=="function"){result=readline();if(result!==null){result+="\n"}}if(!result){return null}tty.input=intArrayFromString(result,true)}return tty.input.shift()}),put_char:(function(tty,val){if(val===null||val===10){Module["print"](UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}}),flush:(function(tty){if(tty.output&&tty.output.length>0){Module["print"](UTF8ArrayToString(tty.output,0));tty.output=[]}})},default_tty1_ops:{put_char:(function(tty,val){if(val===null||val===10){Module["printErr"](UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}}),flush:(function(tty){if(tty.output&&tty.output.length>0){Module["printErr"](UTF8ArrayToString(tty.output,0));tty.output=[]}})}};var MEMFS={ops_table:null,mount:(function(mount){return MEMFS.createNode(null,"/",16384|511,0)}),createNode:(function(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}if(!MEMFS.ops_table){MEMFS.ops_table={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}}}var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.timestamp=Date.now();if(parent){parent.contents[name]=node}return node}),getFileDataAsRegularArray:(function(node){if(node.contents&&node.contents.subarray){var arr=[];for(var i=0;inode.contents.length){node.contents=MEMFS.getFileDataAsRegularArray(node);node.usedBytes=node.contents.length}if(!node.contents||node.contents.subarray){var prevCapacity=node.contents?node.contents.length:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity0)node.contents.set(oldContents.subarray(0,node.usedBytes),0);return}if(!node.contents&&newCapacity>0)node.contents=[];while(node.contents.lengthnewSize)node.contents.length=newSize;else while(node.contents.length=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);assert(size>=0);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i0||position+lengthe2.timestamp){create.push(key);total++}}));var remove=[];Object.keys(dst.entries).forEach((function(key){var e=dst.entries[key];var e2=src.entries[key];if(!e2){remove.push(key);total++}}));if(!total){return callback(null)}var completed=0;var db=src.type==="remote"?src.db:dst.db;var transaction=db.transaction([IDBFS.DB_STORE_NAME],"readwrite");var store=transaction.objectStore(IDBFS.DB_STORE_NAME);function done(err){if(err){if(!done.errored){done.errored=true;return callback(err)}return}if(++completed>=total){return callback(null)}}transaction.onerror=(function(e){done(this.error);e.preventDefault()});create.sort().forEach((function(path){if(dst.type==="local"){IDBFS.loadRemoteEntry(store,path,(function(err,entry){if(err)return done(err);IDBFS.storeLocalEntry(path,entry,done)}))}else{IDBFS.loadLocalEntry(path,(function(err,entry){if(err)return done(err);IDBFS.storeRemoteEntry(store,path,entry,done)}))}}));remove.sort().reverse().forEach((function(path){if(dst.type==="local"){IDBFS.removeLocalEntry(path,done)}else{IDBFS.removeRemoteEntry(store,path,done)}}))})};var NODEFS={isWindows:false,staticInit:(function(){NODEFS.isWindows=!!process.platform.match(/^win/);var flags=process["binding"]("constants");if(flags["fs"]){flags=flags["fs"]}NODEFS.flagsForNodeMap={"1024":flags["O_APPEND"],"64":flags["O_CREAT"],"128":flags["O_EXCL"],"0":flags["O_RDONLY"],"2":flags["O_RDWR"],"4096":flags["O_SYNC"],"512":flags["O_TRUNC"],"1":flags["O_WRONLY"]}}),bufferFrom:(function(arrayBuffer){return Buffer.alloc?Buffer.from(arrayBuffer):new Buffer(arrayBuffer)}),mount:(function(mount){assert(ENVIRONMENT_IS_NODE);return NODEFS.createNode(null,"/",NODEFS.getMode(mount.opts.root),0)}),createNode:(function(parent,name,mode,dev){if(!FS.isDir(mode)&&!FS.isFile(mode)&&!FS.isLink(mode)){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var node=FS.createNode(parent,name,mode);node.node_ops=NODEFS.node_ops;node.stream_ops=NODEFS.stream_ops;return node}),getMode:(function(path){var stat;try{stat=fs.lstatSync(path);if(NODEFS.isWindows){stat.mode=stat.mode|(stat.mode&292)>>2}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}return stat.mode}),realPath:(function(node){var parts=[];while(node.parent!==node){parts.push(node.name);node=node.parent}parts.push(node.mount.opts.root);parts.reverse();return PATH.join.apply(null,parts)}),flagsForNode:(function(flags){flags&=~2097152;flags&=~2048;flags&=~32768;flags&=~524288;var newFlags=0;for(var k in NODEFS.flagsForNodeMap){if(flags&k){newFlags|=NODEFS.flagsForNodeMap[k];flags^=k}}if(!flags){return newFlags}else{throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}}),node_ops:{getattr:(function(node){var path=NODEFS.realPath(node);var stat;try{stat=fs.lstatSync(path)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}if(NODEFS.isWindows&&!stat.blksize){stat.blksize=4096}if(NODEFS.isWindows&&!stat.blocks){stat.blocks=(stat.size+stat.blksize-1)/stat.blksize|0}return{dev:stat.dev,ino:stat.ino,mode:stat.mode,nlink:stat.nlink,uid:stat.uid,gid:stat.gid,rdev:stat.rdev,size:stat.size,atime:stat.atime,mtime:stat.mtime,ctime:stat.ctime,blksize:stat.blksize,blocks:stat.blocks}}),setattr:(function(node,attr){var path=NODEFS.realPath(node);try{if(attr.mode!==undefined){fs.chmodSync(path,attr.mode);node.mode=attr.mode}if(attr.timestamp!==undefined){var date=new Date(attr.timestamp);fs.utimesSync(path,date,date)}if(attr.size!==undefined){fs.truncateSync(path,attr.size)}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),lookup:(function(parent,name){var path=PATH.join2(NODEFS.realPath(parent),name);var mode=NODEFS.getMode(path);return NODEFS.createNode(parent,name,mode)}),mknod:(function(parent,name,mode,dev){var node=NODEFS.createNode(parent,name,mode,dev);var path=NODEFS.realPath(node);try{if(FS.isDir(node.mode)){fs.mkdirSync(path,node.mode)}else{fs.writeFileSync(path,"",{mode:node.mode})}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}return node}),rename:(function(oldNode,newDir,newName){var oldPath=NODEFS.realPath(oldNode);var newPath=PATH.join2(NODEFS.realPath(newDir),newName);try{fs.renameSync(oldPath,newPath)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),unlink:(function(parent,name){var path=PATH.join2(NODEFS.realPath(parent),name);try{fs.unlinkSync(path)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),rmdir:(function(parent,name){var path=PATH.join2(NODEFS.realPath(parent),name);try{fs.rmdirSync(path)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),readdir:(function(node){var path=NODEFS.realPath(node);try{return fs.readdirSync(path)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),symlink:(function(parent,newName,oldPath){var newPath=PATH.join2(NODEFS.realPath(parent),newName);try{fs.symlinkSync(oldPath,newPath)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),readlink:(function(node){var path=NODEFS.realPath(node);try{path=fs.readlinkSync(path);path=NODEJS_PATH.relative(NODEJS_PATH.resolve(node.mount.opts.root),path);return path}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}})},stream_ops:{open:(function(stream){var path=NODEFS.realPath(stream.node);try{if(FS.isFile(stream.node.mode)){stream.nfd=fs.openSync(path,NODEFS.flagsForNode(stream.flags))}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),close:(function(stream){try{if(FS.isFile(stream.node.mode)&&stream.nfd){fs.closeSync(stream.nfd)}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),read:(function(stream,buffer,offset,length,position){if(length===0)return 0;try{return fs.readSync(stream.nfd,NODEFS.bufferFrom(buffer.buffer),offset,length,position)}catch(e){throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),write:(function(stream,buffer,offset,length,position){try{return fs.writeSync(stream.nfd,NODEFS.bufferFrom(buffer.buffer),offset,length,position)}catch(e){throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),llseek:(function(stream,offset,whence){var position=offset;if(whence===1){position+=stream.position}else if(whence===2){if(FS.isFile(stream.node.mode)){try{var stat=fs.fstatSync(stream.nfd);position+=stat.size}catch(e){throw new FS.ErrnoError(ERRNO_CODES[e.code])}}}if(position<0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}return position})}};var WORKERFS={DIR_MODE:16895,FILE_MODE:33279,reader:null,mount:(function(mount){assert(ENVIRONMENT_IS_WORKER);if(!WORKERFS.reader)WORKERFS.reader=new FileReaderSync;var root=WORKERFS.createNode(null,"/",WORKERFS.DIR_MODE,0);var createdParents={};function ensureParent(path){var parts=path.split("/");var parent=root;for(var i=0;i=stream.node.size)return 0;var chunk=stream.node.contents.slice(position,position+length);var ab=WORKERFS.reader.readAsArrayBuffer(chunk);buffer.set(new Uint8Array(ab),offset);return chunk.size}),write:(function(stream,buffer,offset,length,position){throw new FS.ErrnoError(ERRNO_CODES.EIO)}),llseek:(function(stream,offset,whence){var position=offset;if(whence===1){position+=stream.position}else if(whence===2){if(FS.isFile(stream.node.mode)){position+=stream.node.size}}if(position<0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}return position})}};STATICTOP+=16;STATICTOP+=16;STATICTOP+=16;var FS={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,trackingDelegate:{},tracking:{openFlags:{READ:1,WRITE:2}},ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,handleFSError:(function(e){if(!(e instanceof FS.ErrnoError))throw e+" : "+stackTrace();return ___setErrNo(e.errno)}),lookupPath:(function(path,opts){path=PATH.resolve(FS.cwd(),path);opts=opts||{};if(!path)return{path:"",node:null};var defaults={follow_mount:true,recurse_count:0};for(var key in defaults){if(opts[key]===undefined){opts[key]=defaults[key]}}if(opts.recurse_count>8){throw new FS.ErrnoError(ERRNO_CODES.ELOOP)}var parts=PATH.normalizeArray(path.split("/").filter((function(p){return!!p})),false);var current=FS.root;var current_path="/";for(var i=0;i40){throw new FS.ErrnoError(ERRNO_CODES.ELOOP)}}}}return{path:current_path,node:current}}),getPath:(function(node){var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!=="/"?mount+"/"+path:mount+path}path=path?node.name+"/"+path:node.name;node=node.parent}}),hashName:(function(parentid,name){var hash=0;for(var i=0;i>>0)%FS.nameTable.length}),hashAddNode:(function(node){var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node}),hashRemoveNode:(function(node){var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}}),lookupNode:(function(parent,name){var err=FS.mayLookup(parent);if(err){throw new FS.ErrnoError(err,parent)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)}),createNode:(function(parent,name,mode,rdev){if(!FS.FSNode){FS.FSNode=(function(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.mounted=null;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.node_ops={};this.stream_ops={};this.rdev=rdev});FS.FSNode.prototype={};var readMode=292|73;var writeMode=146;Object.defineProperties(FS.FSNode.prototype,{read:{get:(function(){return(this.mode&readMode)===readMode}),set:(function(val){val?this.mode|=readMode:this.mode&=~readMode})},write:{get:(function(){return(this.mode&writeMode)===writeMode}),set:(function(val){val?this.mode|=writeMode:this.mode&=~writeMode})},isFolder:{get:(function(){return FS.isDir(this.mode)})},isDevice:{get:(function(){return FS.isChrdev(this.mode)})}})}var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node}),destroyNode:(function(node){FS.hashRemoveNode(node)}),isRoot:(function(node){return node===node.parent}),isMountpoint:(function(node){return!!node.mounted}),isFile:(function(mode){return(mode&61440)===32768}),isDir:(function(mode){return(mode&61440)===16384}),isLink:(function(mode){return(mode&61440)===40960}),isChrdev:(function(mode){return(mode&61440)===8192}),isBlkdev:(function(mode){return(mode&61440)===24576}),isFIFO:(function(mode){return(mode&61440)===4096}),isSocket:(function(mode){return(mode&49152)===49152}),flagModes:{"r":0,"rs":1052672,"r+":2,"w":577,"wx":705,"xw":705,"w+":578,"wx+":706,"xw+":706,"a":1089,"ax":1217,"xa":1217,"a+":1090,"ax+":1218,"xa+":1218},modeStringToFlags:(function(str){var flags=FS.flagModes[str];if(typeof flags==="undefined"){throw new Error("Unknown file open mode: "+str)}return flags}),flagsToPermissionString:(function(flag){var perms=["r","w","rw"][flag&3];if(flag&512){perms+="w"}return perms}),nodePermissions:(function(node,perms){if(FS.ignorePermissions){return 0}if(perms.indexOf("r")!==-1&&!(node.mode&292)){return ERRNO_CODES.EACCES}else if(perms.indexOf("w")!==-1&&!(node.mode&146)){return ERRNO_CODES.EACCES}else if(perms.indexOf("x")!==-1&&!(node.mode&73)){return ERRNO_CODES.EACCES}return 0}),mayLookup:(function(dir){var err=FS.nodePermissions(dir,"x");if(err)return err;if(!dir.node_ops.lookup)return ERRNO_CODES.EACCES;return 0}),mayCreate:(function(dir,name){try{var node=FS.lookupNode(dir,name);return ERRNO_CODES.EEXIST}catch(e){}return FS.nodePermissions(dir,"wx")}),mayDelete:(function(dir,name,isdir){var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var err=FS.nodePermissions(dir,"wx");if(err){return err}if(isdir){if(!FS.isDir(node.mode)){return ERRNO_CODES.ENOTDIR}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return ERRNO_CODES.EBUSY}}else{if(FS.isDir(node.mode)){return ERRNO_CODES.EISDIR}}return 0}),mayOpen:(function(node,flags){if(!node){return ERRNO_CODES.ENOENT}if(FS.isLink(node.mode)){return ERRNO_CODES.ELOOP}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!=="r"||flags&512){return ERRNO_CODES.EISDIR}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))}),MAX_OPEN_FDS:4096,nextfd:(function(fd_start,fd_end){fd_start=fd_start||0;fd_end=fd_end||FS.MAX_OPEN_FDS;for(var fd=fd_start;fd<=fd_end;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(ERRNO_CODES.EMFILE)}),getStream:(function(fd){return FS.streams[fd]}),createStream:(function(stream,fd_start,fd_end){if(!FS.FSStream){FS.FSStream=(function(){});FS.FSStream.prototype={};Object.defineProperties(FS.FSStream.prototype,{object:{get:(function(){return this.node}),set:(function(val){this.node=val})},isRead:{get:(function(){return(this.flags&2097155)!==1})},isWrite:{get:(function(){return(this.flags&2097155)!==0})},isAppend:{get:(function(){return this.flags&1024})}})}var newStream=new FS.FSStream;for(var p in stream){newStream[p]=stream[p]}stream=newStream;var fd=FS.nextfd(fd_start,fd_end);stream.fd=fd;FS.streams[fd]=stream;return stream}),closeStream:(function(fd){FS.streams[fd]=null}),chrdev_stream_ops:{open:(function(stream){var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;if(stream.stream_ops.open){stream.stream_ops.open(stream)}}),llseek:(function(){throw new FS.ErrnoError(ERRNO_CODES.ESPIPE)})},major:(function(dev){return dev>>8}),minor:(function(dev){return dev&255}),makedev:(function(ma,mi){return ma<<8|mi}),registerDevice:(function(dev,ops){FS.devices[dev]={stream_ops:ops}}),getDevice:(function(dev){return FS.devices[dev]}),getMounts:(function(mount){var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push.apply(check,m.mounts)}return mounts}),syncfs:(function(populate,callback){if(typeof populate==="function"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){console.log("warning: "+FS.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work")}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(err){assert(FS.syncFSRequests>0);FS.syncFSRequests--;return callback(err)}function done(err){if(err){if(!done.errored){done.errored=true;return doCallback(err)}return}if(++completed>=mounts.length){doCallback(null)}}mounts.forEach((function(mount){if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)}))}),mount:(function(type,opts,mountpoint){var root=mountpoint==="/";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR)}}var mount={type:type,opts:opts,mountpoint:mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot}),unmount:(function(mountpoint){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach((function(hash){var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.indexOf(current.mount)!==-1){FS.destroyNode(current)}current=next}}));node.mounted=null;var idx=node.mount.mounts.indexOf(mount);assert(idx!==-1);node.mount.mounts.splice(idx,1)}),lookup:(function(parent,name){return parent.node_ops.lookup(parent,name)}),mknod:(function(path,mode,dev){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name==="."||name===".."){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var err=FS.mayCreate(parent,name);if(err){throw new FS.ErrnoError(err)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}return parent.node_ops.mknod(parent,name,mode,dev)}),create:(function(path,mode){mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)}),mkdir:(function(path,mode){mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)}),mkdirTree:(function(path,mode){var dirs=path.split("/");var d="";for(var i=0;ithis.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]};LazyUint8Array.prototype.setDataGetter=function LazyUint8Array_setDataGetter(getter){this.getter=getter};LazyUint8Array.prototype.cacheLength=function LazyUint8Array_cacheLength(){var xhr=new XMLHttpRequest;xhr.open("HEAD",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);var datalength=Number(xhr.getResponseHeader("Content-length"));var header;var hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&header==="bytes";var usesGzip=(header=xhr.getResponseHeader("Content-Encoding"))&&header==="gzip";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=(function(from,to){if(from>to)throw new Error("invalid range ("+from+", "+to+") or no bytes requested!");if(to>datalength-1)throw new Error("only "+datalength+" bytes available! programmer error!");var xhr=new XMLHttpRequest;xhr.open("GET",url,false);if(datalength!==chunkSize)xhr.setRequestHeader("Range","bytes="+from+"-"+to);if(typeof Uint8Array!="undefined")xhr.responseType="arraybuffer";if(xhr.overrideMimeType){xhr.overrideMimeType("text/plain; charset=x-user-defined")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}else{return intArrayFromString(xhr.responseText||"",true)}});var lazyArray=this;lazyArray.setDataGetter((function(chunkNum){var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]==="undefined"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]==="undefined")throw new Error("doXHR failed!");return lazyArray.chunks[chunkNum]}));if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;console.log("LazyFiles on gzip forces download of the whole file when length is accessed")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true};if(typeof XMLHttpRequest!=="undefined"){if(!ENVIRONMENT_IS_WORKER)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var lazyArray=new LazyUint8Array;Object.defineProperties(lazyArray,{length:{get:(function(){if(!this.lengthKnown){this.cacheLength()}return this._length})},chunkSize:{get:(function(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize})}});var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url:url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperties(node,{usedBytes:{get:(function(){return this.contents.length})}});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach((function(key){var fn=node.stream_ops[key];stream_ops[key]=function forceLoadLazyFile(){if(!FS.forceLoadFile(node)){throw new FS.ErrnoError(ERRNO_CODES.EIO)}return fn.apply(null,arguments)}}));stream_ops.read=function stream_ops_read(stream,buffer,offset,length,position){if(!FS.forceLoadFile(node)){throw new FS.ErrnoError(ERRNO_CODES.EIO)}var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);assert(size>=0);if(contents.slice){for(var i=0;i>2]=stat.dev;HEAP32[buf+4>>2]=0;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAP32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;HEAP32[buf+32>>2]=0;HEAP32[buf+36>>2]=stat.size;HEAP32[buf+40>>2]=4096;HEAP32[buf+44>>2]=stat.blocks;HEAP32[buf+48>>2]=stat.atime.getTime()/1e3|0;HEAP32[buf+52>>2]=0;HEAP32[buf+56>>2]=stat.mtime.getTime()/1e3|0;HEAP32[buf+60>>2]=0;HEAP32[buf+64>>2]=stat.ctime.getTime()/1e3|0;HEAP32[buf+68>>2]=0;HEAP32[buf+72>>2]=stat.ino;return 0}),doMsync:(function(addr,stream,len,flags){var buffer=new Uint8Array(HEAPU8.subarray(addr,addr+len));FS.msync(stream,buffer,0,len,flags)}),doMkdir:(function(path,mode){path=PATH.normalize(path);if(path[path.length-1]==="/")path=path.substr(0,path.length-1);FS.mkdir(path,mode,0);return 0}),doMknod:(function(path,mode,dev){switch(mode&61440){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-ERRNO_CODES.EINVAL}FS.mknod(path,mode,dev);return 0}),doReadlink:(function(path,buf,bufsize){if(bufsize<=0)return-ERRNO_CODES.EINVAL;var ret=FS.readlink(path);var len=Math.min(bufsize,lengthBytesUTF8(ret));var endChar=HEAP8[buf+len];stringToUTF8(ret,buf,bufsize+1);HEAP8[buf+len]=endChar;return len}),doAccess:(function(path,amode){if(amode&~7){return-ERRNO_CODES.EINVAL}var node;var lookup=FS.lookupPath(path,{follow:true});node=lookup.node;var perms="";if(amode&4)perms+="r";if(amode&2)perms+="w";if(amode&1)perms+="x";if(perms&&FS.nodePermissions(node,perms)){return-ERRNO_CODES.EACCES}return 0}),doDup:(function(path,flags,suggestFD){var suggest=FS.getStream(suggestFD);if(suggest)FS.close(suggest);return FS.open(path,flags,0,suggestFD,suggestFD).fd}),doReadv:(function(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr}return ret}),varargs:0,get:(function(varargs){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret}),getStr:(function(){var ret=Pointer_stringify(SYSCALLS.get());return ret}),getStreamFromFD:(function(){var stream=FS.getStream(SYSCALLS.get());if(!stream)throw new FS.ErrnoError(ERRNO_CODES.EBADF);return stream}),getSocketFromFD:(function(){var socket=SOCKFS.getSocket(SYSCALLS.get());if(!socket)throw new FS.ErrnoError(ERRNO_CODES.EBADF);return socket}),getSocketAddress:(function(allowNull){var addrp=SYSCALLS.get(),addrlen=SYSCALLS.get();if(allowNull&&addrp===0)return null;var info=__read_sockaddr(addrp,addrlen);if(info.errno)throw new FS.ErrnoError(info.errno);info.addr=DNS.lookup_addr(info.addr)||info.addr;return info}),get64:(function(){var low=SYSCALLS.get(),high=SYSCALLS.get();if(low>=0)assert(high===0);else assert(high===-1);return low}),getZero:(function(){assert(SYSCALLS.get()===0)})};function ___syscall10(which,varargs){SYSCALLS.varargs=varargs;try{var path=SYSCALLS.getStr();FS.unlink(path);return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall140(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),offset_high=SYSCALLS.get(),offset_low=SYSCALLS.get(),result=SYSCALLS.get(),whence=SYSCALLS.get();var offset=offset_low;FS.llseek(stream,offset,whence);HEAP32[result>>2]=stream.position;if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall145(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),iov=SYSCALLS.get(),iovcnt=SYSCALLS.get();return SYSCALLS.doReadv(stream,iov,iovcnt)}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall146(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),iov=SYSCALLS.get(),iovcnt=SYSCALLS.get();return SYSCALLS.doWritev(stream,iov,iovcnt)}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall192(which,varargs){SYSCALLS.varargs=varargs;try{var addr=SYSCALLS.get(),len=SYSCALLS.get(),prot=SYSCALLS.get(),flags=SYSCALLS.get(),fd=SYSCALLS.get(),off=SYSCALLS.get();off<<=12;var ptr;var allocated=false;if(fd===-1){ptr=_memalign(PAGE_SIZE,len);if(!ptr)return-ERRNO_CODES.ENOMEM;_memset(ptr,0,len);allocated=true}else{var info=FS.getStream(fd);if(!info)return-ERRNO_CODES.EBADF;var res=FS.mmap(info,HEAPU8,addr,len,off,prot,flags);ptr=res.ptr;allocated=res.allocated}SYSCALLS.mappings[ptr]={malloc:ptr,len:len,allocated:allocated,fd:fd,flags:flags};return ptr}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall195(which,varargs){SYSCALLS.varargs=varargs;try{var path=SYSCALLS.getStr(),buf=SYSCALLS.get();return SYSCALLS.doStat(FS.stat,path,buf)}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall197(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),buf=SYSCALLS.get();return SYSCALLS.doStat(FS.stat,stream.path,buf)}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}var PROCINFO={ppid:1,pid:42,sid:42,pgid:42};function ___syscall20(which,varargs){SYSCALLS.varargs=varargs;try{return PROCINFO.pid}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall221(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),cmd=SYSCALLS.get();switch(cmd){case 0:{var arg=SYSCALLS.get();if(arg<0){return-ERRNO_CODES.EINVAL}var newStream;newStream=FS.open(stream.path,stream.flags,0,arg);return newStream.fd};case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=SYSCALLS.get();stream.flags|=arg;return 0};case 12:case 12:{var arg=SYSCALLS.get();var offset=0;HEAP16[arg+offset>>1]=2;return 0};case 13:case 14:case 13:case 14:return 0;case 16:case 8:return-ERRNO_CODES.EINVAL;case 9:___setErrNo(ERRNO_CODES.EINVAL);return-1;default:{return-ERRNO_CODES.EINVAL}}}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall3(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),buf=SYSCALLS.get(),count=SYSCALLS.get();return FS.read(stream,HEAP8,buf,count)}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall33(which,varargs){SYSCALLS.varargs=varargs;try{var path=SYSCALLS.getStr(),amode=SYSCALLS.get();return SYSCALLS.doAccess(path,amode)}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall5(which,varargs){SYSCALLS.varargs=varargs;try{var pathname=SYSCALLS.getStr(),flags=SYSCALLS.get(),mode=SYSCALLS.get();var stream=FS.open(pathname,flags,mode);return stream.fd}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall54(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),op=SYSCALLS.get();switch(op){case 21509:case 21505:{if(!stream.tty)return-ERRNO_CODES.ENOTTY;return 0};case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:{if(!stream.tty)return-ERRNO_CODES.ENOTTY;return 0};case 21519:{if(!stream.tty)return-ERRNO_CODES.ENOTTY;var argp=SYSCALLS.get();HEAP32[argp>>2]=0;return 0};case 21520:{if(!stream.tty)return-ERRNO_CODES.ENOTTY;return-ERRNO_CODES.EINVAL};case 21531:{var argp=SYSCALLS.get();return FS.ioctl(stream,op,argp)};case 21523:{if(!stream.tty)return-ERRNO_CODES.ENOTTY;return 0};default:abort("bad ioctl syscall "+op)}}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall6(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD();FS.close(stream);return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall91(which,varargs){SYSCALLS.varargs=varargs;try{var addr=SYSCALLS.get(),len=SYSCALLS.get();var info=SYSCALLS.mappings[addr];if(!info)return 0;if(len===info.len){var stream=FS.getStream(info.fd);SYSCALLS.doMsync(addr,stream,len,info.flags);FS.munmap(stream);SYSCALLS.mappings[addr]=null;if(info.allocated){_free(info.malloc)}}return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}var cttz_i8=allocate([8,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,7,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0],"i8",ALLOC_STATIC);function ___unlock(){}function __exit(status){Module["exit"](status)}function _exit(status){__exit(status)}var _environ=STATICTOP;STATICTOP+=16;function ___buildEnvironment(env){var MAX_ENV_VALUES=64;var TOTAL_ENV_SIZE=1024;var poolPtr;var envPtr;if(!___buildEnvironment.called){___buildEnvironment.called=true;ENV["USER"]=ENV["LOGNAME"]="web_user";ENV["PATH"]="/";ENV["PWD"]="/";ENV["HOME"]="/home/web_user";ENV["LANG"]="C.UTF-8";ENV["_"]=Module["thisProgram"];poolPtr=staticAlloc(TOTAL_ENV_SIZE);envPtr=staticAlloc(MAX_ENV_VALUES*4);HEAP32[envPtr>>2]=poolPtr;HEAP32[_environ>>2]=envPtr}else{envPtr=HEAP32[_environ>>2];poolPtr=HEAP32[envPtr>>2]}var strings=[];var totalSize=0;for(var key in env){if(typeof env[key]==="string"){var line=key+"="+env[key];strings.push(line);totalSize+=line.length}}if(totalSize>TOTAL_ENV_SIZE){throw new Error("Environment size exceeded TOTAL_ENV_SIZE!")}var ptrSize=4;for(var i=0;i>2]=poolPtr;poolPtr+=line.length+1}HEAP32[envPtr+strings.length*ptrSize>>2]=0}var ENV={};function _getenv(name){if(name===0)return 0;name=Pointer_stringify(name);if(!ENV.hasOwnProperty(name))return 0;if(_getenv.ret)_free(_getenv.ret);_getenv.ret=allocateUTF8(ENV[name]);return _getenv.ret}function _gettimeofday(ptr){var now=Date.now();HEAP32[ptr>>2]=now/1e3|0;HEAP32[ptr+4>>2]=now%1e3*1e3|0;return 0}var _llvm_ceil_f64=Math_ceil;var _llvm_fabs_f32=Math_abs;var _llvm_fabs_f64=Math_abs;var _llvm_floor_f64=Math_floor;var _llvm_pow_f64=Math_pow;var _llvm_sqrt_f32=Math_sqrt;var _llvm_sqrt_f64=Math_sqrt;function _llvm_trap(){abort("trap!")}function _longjmp(env,value){Module["setThrew"](env,value||1);throw"longjmp"}function _emscripten_memcpy_big(dest,src,num){HEAPU8.set(HEAPU8.subarray(src,src+num),dest);return dest}function _setenv(envname,envval,overwrite){if(envname===0){___setErrNo(ERRNO_CODES.EINVAL);return-1}var name=Pointer_stringify(envname);var val=Pointer_stringify(envval);if(name===""||name.indexOf("=")!==-1){___setErrNo(ERRNO_CODES.EINVAL);return-1}if(ENV.hasOwnProperty(name)&&!overwrite)return 0;ENV[name]=val;___buildEnvironment(ENV);return 0}function _time(ptr){var ret=Date.now()/1e3|0;if(ptr){HEAP32[ptr>>2]=ret}return ret}function _times(buffer){if(buffer!==0){_memset(buffer,0,16)}return 0}if(ENVIRONMENT_IS_NODE){_emscripten_get_now=function _emscripten_get_now_actual(){var t=process["hrtime"]();return t[0]*1e3+t[1]/1e6}}else if(typeof dateNow!=="undefined"){_emscripten_get_now=dateNow}else if(typeof self==="object"&&self["performance"]&&typeof self["performance"]["now"]==="function"){_emscripten_get_now=(function(){return self["performance"]["now"]()})}else if(typeof performance==="object"&&typeof performance["now"]==="function"){_emscripten_get_now=(function(){return performance["now"]()})}else{_emscripten_get_now=Date.now}FS.staticInit();__ATINIT__.unshift((function(){if(!Module["noFSInit"]&&!FS.init.initialized)FS.init()}));__ATMAIN__.push((function(){FS.ignorePermissions=false}));__ATEXIT__.push((function(){FS.quit()}));__ATINIT__.unshift((function(){TTY.init()}));__ATEXIT__.push((function(){TTY.shutdown()}));if(ENVIRONMENT_IS_NODE){var fs=require("fs");var NODEJS_PATH=require("path");NODEFS.staticInit()}___buildEnvironment(ENV);DYNAMICTOP_PTR=staticAlloc(4);STACK_BASE=STACKTOP=alignMemory(STATICTOP);STACK_MAX=STACK_BASE+TOTAL_STACK;DYNAMIC_BASE=alignMemory(STACK_MAX);HEAP32[DYNAMICTOP_PTR>>2]=DYNAMIC_BASE;staticSealed=true;var ASSERTIONS=false;function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}function intArrayToString(array){var ret=[];for(var i=0;i255){if(ASSERTIONS){assert(false,"Character code "+chr+" ("+String.fromCharCode(chr)+") at offset "+i+" not in 0x00-0xFF.")}chr&=255}ret.push(String.fromCharCode(chr))}return ret.join("")}var decodeBase64=typeof atob==="function"?atob:(function(input){var keyStr="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";var output="";var chr1,chr2,chr3;var enc1,enc2,enc3,enc4;var i=0;input=input.replace(/[^A-Za-z0-9\+\/\=]/g,"");do{enc1=keyStr.indexOf(input.charAt(i++));enc2=keyStr.indexOf(input.charAt(i++));enc3=keyStr.indexOf(input.charAt(i++));enc4=keyStr.indexOf(input.charAt(i++));chr1=enc1<<2|enc2>>4;chr2=(enc2&15)<<4|enc3>>2;chr3=(enc3&3)<<6|enc4;output=output+String.fromCharCode(chr1);if(enc3!==64){output=output+String.fromCharCode(chr2)}if(enc4!==64){output=output+String.fromCharCode(chr3)}}while(i>2]|0;if(!i)qa(108233,108204,54,108218);if(!(a[i>>0]|0))qa(108242,108204,55,108218);b0(h,c[d+28>>2]|0)|0;i=h+(W_(h)|0)|0;a[i>>0]=58;a[i+1>>0]=0;p1(h,g)|0;if((hP(b,h)|0)==999){c[j>>2]=h;Pw(0,108254,j)|0}g=c[b+92>>2]|0;if(g|0?(m=c[g>>2]|0,m|0):0){c[k>>2]=c[e>>2];c[k+4>>2]=c[e+4>>2];c[k+8>>2]=c[e+8>>2];c[k+12>>2]=c[e+12>>2];c[k+16>>2]=c[e+16>>2];c[k+20>>2]=c[e+20>>2];c[k+24>>2]=c[e+24>>2];c[k+28>>2]=c[e+28>>2];xb[m&31](b,d,k,f)}l=n;return}function hP(a,b){a=a|0;b=b|0;b=wC(c[a>>2]|0,4,b)|0;if(!b)b=999;else{b=c[b+16>>2]|0;c[a+92>>2]=c[b+12>>2];c[a+96>>2]=c[b>>2];b=300}return b|0}function iP(a){a=a|0;return 1}function jP(b){b=b|0;var c=0;a[b+536>>0]=0;c=b+336|0;h[c>>3]=+h[c>>3]+10.0/+h[b+352>>3];a[b+537>>0]=1;return 0}function kP(b){b=b|0;var c=0;a[b+536>>0]=0;c=b+336|0;h[c>>3]=+h[c>>3]-10.0/+h[b+352>>3];a[b+537>>0]=1;return 0}function lP(b){b=b|0;var c=0;a[b+536>>0]=0;c=b+344|0;h[c>>3]=+h[c>>3]-10.0/+h[b+352>>3];a[b+537>>0]=1;return 0}function mP(b){b=b|0;var c=0;a[b+536>>0]=0;c=b+344|0;h[c>>3]=+h[c>>3]+10.0/+h[b+352>>3];a[b+537>>0]=1;return 0}function nP(b){b=b|0;var c=0;a[b+536>>0]=0;c=b+352|0;h[c>>3]=+h[c>>3]*1.1;a[b+537>>0]=1;return 0}function oP(b){b=b|0;var c=0;a[b+536>>0]=0;c=b+352|0;h[c>>3]=+h[c>>3]*.9090909090909091;a[b+537>>0]=1;return 0}function pP(b){b=b|0;var d=0,e=0,f=0,g=0.0,i=0.0;e=b+536|0;d=(a[e>>0]|0)==0;a[e>>0]=d&1;if(d){d=c[b+448>>2]|0;e=c[b+452>>2]|0;i=+(d>>>0);g=+(e>>>0);f=i/+(d|0)>3]=(f?i:g)/+((f?d:e)|0);e=b+336|0;c[e>>2]=0;c[e+4>>2]=0;c[e+8>>2]=0;c[e+12>>2]=0;a[b+537>>0]=1}return 0}function qP(b){b=b|0;var d=0,e=0;d=c[(c[b>>2]|0)+168>>2]|0;e=b+580|0;if(!(c[e>>2]|0)){c[e>>2]=d;e=(c[d+16>>2]|0)+112|0;a[e>>0]=a[e>>0]|2;GP(b,d)}dF(b,d);a[b+540>>0]=1;return}function rP(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0.0,i=0.0,j=0,k=0;k=l;l=l+16|0;f=k;switch(d|0){case 1:{c[f>>2]=c[e>>2];c[f+4>>2]=c[e+4>>2];c[f+8>>2]=c[e+8>>2];c[f+12>>2]=c[e+12>>2];zP(b,f);FP(b);a[b+538>>0]=1;a[b+541>>0]=1;j=13;break}case 2:{a[b+538>>0]=1;a[b+541>>0]=2;j=13;break}case 3:{c[f>>2]=c[e>>2];c[f+4>>2]=c[e+4>>2];c[f+8>>2]=c[e+8>>2];c[f+12>>2]=c[e+12>>2];zP(b,f);a[b+538>>0]=1;a[b+541>>0]=3;j=13;break}case 4:{a[b+536>>0]=0;if(!(c[b+360>>2]|0)){f=b+352|0;i=+h[f>>3];d=b+336|0;h[d>>3]=(+h[e>>3]-+((c[b+448>>2]|0)>>>0)*.5)*.10000000000000009/(+h[b+520>>3]*i)+ +h[d>>3];g=+h[e+8>>3]-+((c[b+452>>2]|0)>>>0)*.5;d=b+528|0}else{f=b+352|0;i=+h[f>>3];d=b+336|0;h[d>>3]=+h[d>>3]-(+h[e+8>>3]-+((c[b+452>>2]|0)>>>0)*.5)*.10000000000000009/(+h[b+528>>3]*i);g=+h[e>>3]-+((c[b+448>>2]|0)>>>0)*.5;d=b+520|0}j=b+344|0;h[j>>3]=g*.10000000000000009/(+h[d>>3]*i)+ +h[j>>3];h[f>>3]=i*1.1;j=13;break}case 5:{a[b+536>>0]=0;j=b+352|0;i=+h[j>>3]*.9090909090909091;h[j>>3]=i;if(!(c[b+360>>2]|0)){f=b+336|0;h[f>>3]=+h[f>>3]-(+h[e>>3]-+((c[b+448>>2]|0)>>>0)*.5)*.10000000000000009/(+h[b+520>>3]*i);g=+h[e+8>>3]-+((c[b+452>>2]|0)>>>0)*.5;f=b+528|0}else{f=b+336|0;h[f>>3]=(+h[e+8>>3]-+((c[b+452>>2]|0)>>>0)*.5)*.10000000000000009/(+h[b+528>>3]*i)+ +h[f>>3];g=+h[e>>3]-+((c[b+448>>2]|0)>>>0)*.5;f=b+520|0}j=b+344|0;h[j>>3]=+h[j>>3]-g*.10000000000000009/(+h[f>>3]*i);j=13;break}default:{}}if((j|0)==13)a[b+537>>0]=1;b=b+560|0;c[b>>2]=c[e>>2];c[b+4>>2]=c[e+4>>2];c[b+8>>2]=c[e+8>>2];c[b+12>>2]=c[e+12>>2];l=k;return}function sP(b,c,d){b=b|0;c=c|0;d=d|0;a[b+538>>0]=0;a[b+541>>0]=0;return}function tP(b,d){b=b|0;d=d|0;var e=0,f=0.0,g=0.0,i=0,j=0.0,k=0;k=l;l=l+16|0;e=k;i=b+560|0;j=(+h[d>>3]-+h[i>>3])/+h[b+520>>3];g=(+h[d+8>>3]-+h[b+568>>3])/+h[b+528>>3];if(!(+B(+j)<.0001&+B(+g)<.0001)){switch(a[b+541>>0]|0){case 0:{c[e>>2]=c[d>>2];c[e+4>>2]=c[d+4>>2];c[e+8>>2]=c[d+8>>2];c[e+12>>2]=c[d+12>>2];zP(b,e);break}case 2:{f=+h[b+352>>3];if(!(c[b+360>>2]|0)){e=b+336|0;h[e>>3]=+h[e>>3]-j/f;e=b+344|0;h[e>>3]=+h[e>>3]-g/f}else{e=b+336|0;h[e>>3]=+h[e>>3]-g/f;e=b+344|0;h[e>>3]=+h[e>>3]+j/f}a[b+537>>0]=1;break}default:{}}c[i>>2]=c[d>>2];c[i+4>>2]=c[d+4>>2];c[i+8>>2]=c[d+8>>2];c[i+12>>2]=c[d+12>>2]}l=k;return}function uP(a,b,c){a=a|0;b=b|0;c=c|0;return}function vP(a){a=a|0;return}function wP(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;j=c[b>>2]|0;if(d){d=L1(d,135739)|0;if(d|0){i=TB(d,0)|0;s1(d)|0;f=5}}else{i=TB(c[15621]|0,0)|0;f=5}if((f|0)==5?i|0:0){g=j+168|0;d=c[g>>2]|0;if(d|0){f=c[j+172>>2]|0;if((f|0)!=0?(h=c[f+4>>2]|0,(h|0)!=0):0){tb[h&127](d);d=c[g>>2]|0}gH(d);$x(c[g>>2]|0)|0}Fz(i,0,134401,280,1);Fz(i,1,134365,304,1);Fz(i,2,134378,176,1);c[g>>2]=i;c[(c[i+16>>2]|0)+144>>2]=j;if((_C(j,i,e)|0)!=-1){c[b+580>>2]=0;c[b+576>>2]=0;a[b+537>>0]=1}}return}function xP(a,b){a=a|0;b=b|0;a=c[a>>2]|0;_C(a,c[a+168>>2]|0,b)|0;return}function yP(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;g=c[a>>2]|0;f=g+160|0;e=c[f>>2]|0;if((e|0)!=0?(c[g+164>>2]|0)==0:0){i=g+192|0;h=c[i>>2]|0;c[f>>2]=0;c[i>>2]=0;f=h}else{f=0;e=0}aD(g,c[g+168>>2]|0,b,d)|0;if(e|0){i=c[a>>2]|0;c[i+160>>2]=e;c[i+192>>2]=f}return}function zP(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,i=0.0,j=0.0,k=0.0,m=0;f=l;l=l+80|0;e=f+48|0;g=f;m=f+32|0;c[e>>2]=c[d>>2];c[e+4>>2]=c[d+4>>2];c[e+8>>2]=c[d+8>>2];c[e+12>>2]=c[d+12>>2];AP(m,b,e);k=+h[m>>3];j=+h[m+8>>3];i=1.0/+h[b+352>>3];h[g+16>>3]=i+k;h[g+24>>3]=i+j;h[g>>3]=k-i;h[g+8>>3]=j-i;d=c[(c[b>>2]|0)+168>>2]|0;c[e>>2]=c[g>>2];c[e+4>>2]=c[g+4>>2];c[e+8>>2]=c[g+8>>2];c[e+12>>2]=c[g+12>>2];c[e+16>>2]=c[g+16>>2];c[e+20>>2]=c[g+20>>2];c[e+24>>2]=c[g+24>>2];c[e+28>>2]=c[g+28>>2];d=BP(d,e)|0;e=b+576|0;if((d|0)!=(c[e>>2]|0)){CP(b);c[e>>2]=d;DP(b);a[b+537>>0]=1}l=f;return}function AP(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0.0,g=0.0,i=0;if(!(c[b+360>>2]|0)){e=+h[b+352>>3];f=+h[d+8>>3];g=e;i=b+528|0;e=+h[d>>3]/(+h[b+520>>3]*e)-+h[b+504>>3]}else{e=+h[b+352>>3];f=-+h[d>>3];g=e;i=b+520|0;e=+h[d+8>>3]/(+h[b+528>>3]*e)-+h[b+504>>3]}g=f/(+h[i>>3]*g)-+h[b+512>>3];h[a>>3]=e;h[a+8>>3]=g;return}function BP(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=l;l=l+32|0;f=g;e=Sy(a)|0;a:while(1){if(!e){e=9;break}d=Ex(a,e)|0;while(1){if(!d)break;c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];c[f+16>>2]=c[b+16>>2];c[f+20>>2]=c[b+20>>2];c[f+24>>2]=c[b+24>>2];c[f+28>>2]=c[b+28>>2];if((WM(d,f)|0)<<24>>24){e=6;break a}d=Gx(a,d)|0}e=Ty(a,e)|0}do if((e|0)!=6)if((e|0)==9){d=Uy(a)|0;while(1){if(!d)break;c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];c[f+16>>2]=c[b+16>>2];c[f+20>>2]=c[b+20>>2];c[f+24>>2]=c[b+24>>2];c[f+28>>2]=c[b+28>>2];if((TM(d,f)|0)<<24>>24){e=12;break}d=Vy(a,d)|0}if((e|0)==12)break;c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];c[f+16>>2]=c[b+16>>2];c[f+20>>2]=c[b+20>>2];c[f+24>>2]=c[b+24>>2];c[f+28>>2]=c[b+28>>2];d=EP(a,f)|0;if(!d){d=a;break}else break}while(0);l=g;return d|0}function CP(b){b=b|0;var d=0;d=c[b+576>>2]|0;a:do if(d|0)switch(pz(d)|0){case 0:{d=(c[d+16>>2]|0)+112|0;a[d>>0]=a[d>>0]&-2;break a}case 1:{d=(c[d+16>>2]|0)+117|0;a[d>>0]=a[d>>0]&-2;break a}case 2:{d=(c[d+16>>2]|0)+115|0;a[d>>0]=a[d>>0]&-2;break a}default:break a}while(0);c[b+584>>2]=0;return}function DP(b){b=b|0;var d=0,e=0;e=b+584|0;d=c[e>>2]|0;if(d|0){D_(d);c[e>>2]=0}d=c[b+576>>2]|0;a:do if(d|0)switch(pz(d)|0){case 0:{b=(c[d+16>>2]|0)+112|0;a[b>>0]=a[b>>0]|1;b=nx(d,0,138019,0)|0;if(!b)break a;c[e>>2]=pH(yx(d,b)|0,d)|0;break a}case 1:{b=(c[d+16>>2]|0)+117|0;a[b>>0]=a[b>>0]|1;b=nx(ez(d)|0,1,138019,0)|0;if(!b)break a;c[e>>2]=pH(yx(d,b)|0,d)|0;break a}case 2:{b=(c[d+16>>2]|0)+115|0;a[b>>0]=a[b>>0]|1;b=nx(ez(c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0)|0,2,138019,0)|0;if(!b)break a;c[e>>2]=pH(yx(d,b)|0,d)|0;break a}default:break a}while(0);return}function EP(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0.0,o=0.0;m=l;l=l+32|0;e=m;g=c[a+16>>2]|0;i=c[g+180>>2]|0;j=g+184|0;d=1;while(1){if((d|0)>(i|0)){k=4;break}f=c[(c[j>>2]|0)+(d<<2)>>2]|0;c[e>>2]=c[b>>2];c[e+4>>2]=c[b+4>>2];c[e+8>>2]=c[b+8>>2];c[e+12>>2]=c[b+12>>2];c[e+16>>2]=c[b+16>>2];c[e+20>>2]=c[b+20>>2];c[e+24>>2]=c[b+24>>2];c[e+28>>2]=c[b+28>>2];f=EP(f,e)|0;if(!f)d=d+1|0;else{a=f;break}}do if((k|0)==4){o=+h[g+24>>3];n=+h[g+40>>3];if(((+h[b+16>>3]>=+h[g+16>>3]?+h[g+32>>3]>=+h[b>>3]:0)?+h[b+24>>3]>=o:0)?n>=+h[b+8>>3]:0)break;a=0}while(0);l=m;return a|0}function FP(b){b=b|0;var d=0,e=0,f=0;f=b+580|0;d=c[f>>2]|0;a:do if(d|0)switch(pz(d)|0){case 0:{e=(c[d+16>>2]|0)+112|0;a[e>>0]=a[e>>0]&-7|4;break a}case 1:{e=(c[d+16>>2]|0)+117|0;a[e>>0]=a[e>>0]&-7|4;break a}case 2:{e=(c[d+16>>2]|0)+115|0;a[e>>0]=a[e>>0]&-7|4;break a}default:break a}while(0);d=b+588|0;e=c[d>>2]|0;if(e|0){D_(e);c[d>>2]=0}d=c[b+576>>2]|0;c[f>>2]=d;b:do if(d|0)switch(pz(d)|0){case 0:{f=(c[d+16>>2]|0)+112|0;a[f>>0]=a[f>>0]|2;GP(b,d);break b}case 1:{f=(c[d+16>>2]|0)+117|0;a[f>>0]=a[f>>0]|2;HP(b,d);break b}case 2:{f=(c[d+16>>2]|0)+115|0;a[f>>0]=a[f>>0]|2;IP(b,d);break b}default:break b}while(0);return}function GP(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=a+592|0;do if((fz(b)|0)==(b|0))if(!(ey(b)|0)){rC(d,0,108412);break}else{rC(d,0,108404);break}else rC(d,0,108418);while(0);rC(d,1,ry(b)|0);c[a+596>>2]=2;f=a+604|0;d=0;e=2;while(1){d=sx(b,0,d)|0;if(!d)break;rC(f,e,c[d+8>>2]|0);rC(f,e+1|0,yx(b,d)|0);rC(f,e+2|0,0);e=e+3|0}c[a+608>>2]=e;d=nx(b,0,137973,0)|0;if(!d){d=nx(b,0,108395,0)|0;if(d|0)g=11}else g=11;if((g|0)==11)c[a+588>>2]=pH(yx(b,d)|0,b)|0;return}function HP(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;f=a+592|0;rC(f,0,108399);rC(f,1,ry(b)|0);c[a+596>>2]=2;f=a+604|0;g=fz(ez(b)|0)|0;e=2;d=0;while(1){d=sx(g,1,d)|0;if(!d)break;rC(f,e,c[d+8>>2]|0);rC(f,e|1,yx(b,d)|0);e=e+2|0}c[a+608>>2]=e;d=nx(ez(b)|0,1,137973,0)|0;if(!d){d=nx(ez(b)|0,1,108395,0)|0;if(d|0)h=6}else h=6;if((h|0)==6)c[a+588>>2]=pH(yx(b,d)|0,b)|0;return}function IP(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;h=a+592|0;rC(h,0,108368);k=b+48|0;rC(h,1,ry(c[((c[b>>2]&3|0)==3?b:k)+40>>2]|0)|0);k=(ey(ez(c[((c[b>>2]&3|0)==3?b:k)+40>>2]|0)|0)|0)!=0;rC(h,3,k?134656:138665);k=b+-48|0;rC(h,4,ry(c[((c[b>>2]&3|0)==2?b:k)+40>>2]|0)|0);c[a+596>>2]=7;i=a+604|0;j=fz(ez(c[((c[b>>2]&3|0)==2?b:k)+40>>2]|0)|0)|0;g=7;d=0;a:while(1){while(1){d=sx(j,2,d)|0;if(!d)break a;e=d+8|0;f=c[e>>2]|0;if(!(b$(f,108373)|0)){l=5;break}if(!(b$(f,108382)|0)){l=7;break}if(b$(f,108391)|0)break;rC(h,6,yx(b,d)|0)}if((l|0)==5){l=0;rC(h,2,yx(b,d)|0)}else if((l|0)==7){l=0;rC(h,5,yx(b,d)|0)}rC(i,g,c[e>>2]|0);rC(i,g+1|0,yx(b,d)|0);g=g+2|0}c[a+608>>2]=g;d=nx(ez(c[((c[b>>2]&3|0)==2?b:k)+40>>2]|0)|0,2,137973,0)|0;if(!d){d=nx(ez(c[((c[b>>2]&3|0)==2?b:k)+40>>2]|0)|0,2,108395,0)|0;if(d|0)l=13}else l=13;if((l|0)==13)c[a+588>>2]=pH(yx(b,d)|0,b)|0;return}function JP(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;g=KP(a,b,c[d>>2]|0)|0;d=c[d+4>>2]|0;while(1){f=c[d+4>>2]|0;if(!f)break;b=0;while(1){e=c[f+(b*20|0)+4>>2]|0;if(!e)break;uC(a,c[d>>2]|0,e,c[f+(b*20|0)+8>>2]|0,g,f+(b*20|0)|0)|0;b=b+1|0}d=d+8|0}return}function KP(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=vH(12)|0;if(!b)b=0;else b=n1(b)|0;c[e+4>>2]=b;c[e+8>>2]=n1(d)|0;d=a+100|0;c[e>>2]=c[d>>2];c[d>>2]=e;return e|0}function LP(b,c){b=b|0;c=c|0;MP(b);a[b+44>>0]=0;NP(b)|0;AL(b)|0;return}function MP(b){b=b|0;var d=0,e=0;d=c[b+32>>2]|0;a:do if(d|0)while(1){e=c[d>>2]|0;if(!e)break a;if((a[e>>0]|0)==103?P0(e,108427)|0:0)JP(b,0,c[d+4>>2]|0);d=d+8|0}while(0);return}function NP(a){a=a|0;var b=0;b=wC(a,2,108440)|0;if(!b)a=999;else{c[a+148>>2]=c[(c[b+16>>2]|0)+12>>2];a=300}return a|0}function OP(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;a=c[a+148>>2]|0;if((a|0)!=0?(e=c[a>>2]|0,(e|0)!=0):0)a=lb[e&127](b,d)|0;else a=0;return a|0}function PP(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;return (c[b>>2]|0)-(c[d>>2]|0)|0}function QP(a){a=a|0;var b=0.0,d=0.0;a=c[a+16>>2]|0;d=+h[a+16>>3];b=+h[a+24>>3];return (RP(~~(d>b?d:b)>>>0)|0)+1|0}function RP(a){a=a|0;var b=0,c=0;if(!a)a=-1;else{c=a>>>0>65535;a=c?a>>>16:a;c=c?16:0;b=a>>>0>255;a=b?a>>>8:a;c=b?c|8:c;b=a>>>0>15;a=b?a>>>4:a;c=b?c|4:c;b=a>>>0>3;a=(b?c|2:c)+((b?a>>>2:a)>>>0>1&1)|0}return a|0}function SP(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0.0,j=0.0,k=0,m=0,n=0,o=0,p=0,q=0,r=0;r=l;l=l+32|0;q=r;p=TP(b,d,e,f,g)|0;e=UP(p)|0;if((e|0)>=0){n=q+16|0;o=q+24|0;m=q+8|0;k=g+32|0;e=0;g=0;while(1){if((g|0)>=(d|0))break;f=b+(g*40|0)+32|0;do if(c[f>>2]|0){VP(q,p,b+(g*40|0)|0);i=+h[n>>3];j=+h[o>>3];if(!(c[q>>2]|0)){a[(c[f>>2]|0)+36>>0]=1;break}if(+h[m>>3]==0.0){f=c[f>>2]|0;h[f+16>>3]=i;h[f+24>>3]=j;a[f+36>>0]=1;break}if((a[k>>0]|0)==1){f=c[f>>2]|0;h[f+16>>3]=i;h[f+24>>3]=j;a[f+36>>0]=1}else e=1}while(0);g=g+1|0}WP(p)}l=r;return e|0}function TP(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;g=uH(28)|0;j=Cw(25808,c[4558]|0)|0;h=g+20|0;c[h>>2]=j;do if(j){j=CS()|0;c[g+24>>2]=j;if(!j){E1(108658,14,1,c[15686]|0)|0;i=6;break}else{c[g>>2]=a;c[g+4>>2]=b;c[g+8>>2]=d;c[g+12>>2]=e;c[g+16>>2]=f;break}}else{E1(108658,14,1,c[15686]|0)|0;i=6}while(0);if((i|0)==6){a=c[h>>2]|0;if(a|0)yw(a)|0;a=c[g+24>>2]|0;if(a|0)ES(a)|0;D_(g);g=0}return g|0}function UP(a){a=a|0;var b=0;b=dQ(a)|0;if((b|0)>=0){eQ(a);fQ(a);b=yw(c[a+20>>2]|0)|0}return b|0}function VP(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0,g=0,i=0.0,j=0,k=0.0,m=0,n=0,o=0,p=0,q=0.0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0.0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0.0,L=0,M=0;M=l;l=l+464|0;J=M+416|0;L=M+400|0;G=M+384|0;m=M+352|0;n=M+320|0;o=M+288|0;p=M+256|0;r=M+224|0;s=M+192|0;t=M+160|0;u=M+128|0;v=M+96|0;x=M+64|0;y=M+32|0;H=M;z=c[d+32>>2]|0;e=+h[z>>3];C=d+16|0;A=(e*2.0+ +h[C>>3])*.125;D=z+8|0;I=d+24|0;i=+h[I>>3];K=(+h[D>>3]*2.0+i)*.5;if(!z)qa(108451,108461,445,108471);f=J;g=f+36|0;do{c[f>>2]=0;f=f+4|0}while((f|0)<(g|0));B=z+16|0;h[B>>3]=+h[d>>3]-e;E=d+8|0;F=z+24|0;h[F>>3]=i+ +h[E>>3];XP(m,b,d,J);j=c[m>>2]|0;f=c[m+4>>2]|0;e=+h[m+8>>3];m=m+16|0;c[L>>2]=c[m>>2];c[L+4>>2]=c[m+4>>2];c[L+8>>2]=c[m+8>>2];c[L+12>>2]=c[m+12>>2];a:do if(!j){c[a>>2]=0;c[a+4>>2]=f;h[a+8>>3]=e;a=a+16|0;c[a>>2]=c[L>>2];c[a+4>>2]=c[L+4>>2];c[a+8>>2]=c[L+8>>2];c[a+12>>2]=c[L+12>>2]}else{h[F>>3]=+h[E>>3];XP(n,b,d,J);g=c[n>>2]|0;m=c[n+4>>2]|0;i=+h[n+8>>3];n=n+16|0;c[G>>2]=c[n>>2];c[G+4>>2]=c[n+4>>2];c[G+8>>2]=c[n+8>>2];c[G+12>>2]=c[n+12>>2];if(!g){c[a>>2]=0;c[a+4>>2]=m;h[a+8>>3]=i;a=a+16|0;c[a>>2]=c[G>>2];c[a+4>>2]=c[G+4>>2];c[a+8>>2]=c[G+8>>2];c[a+12>>2]=c[G+12>>2];break}if(i>2]=c[G>>2];c[L+4>>2]=c[G+4>>2];c[L+8>>2]=c[G+8>>2];c[L+12>>2]=c[G+12>>2];f=m;e=i}else g=j;h[F>>3]=+h[E>>3]-+h[D>>3];XP(o,b,d,J);m=c[o>>2]|0;j=c[o+4>>2]|0;i=+h[o+8>>3];o=o+16|0;c[G>>2]=c[o>>2];c[G+4>>2]=c[o+4>>2];c[G+8>>2]=c[o+8>>2];c[G+12>>2]=c[o+12>>2];if(!m){c[a>>2]=0;c[a+4>>2]=j;h[a+8>>3]=i;a=a+16|0;c[a>>2]=c[G>>2];c[a+4>>2]=c[G+4>>2];c[a+8>>2]=c[G+8>>2];c[a+12>>2]=c[G+12>>2];break}if(i>2]=c[G>>2];c[L+4>>2]=c[G+4>>2];c[L+8>>2]=c[G+8>>2];c[L+12>>2]=c[G+12>>2];f=j;e=i}else m=g;h[B>>3]=+h[d>>3];h[F>>3]=+h[I>>3]+ +h[E>>3];XP(p,b,d,J);g=c[p>>2]|0;j=c[p+4>>2]|0;i=+h[p+8>>3];p=p+16|0;c[G>>2]=c[p>>2];c[G+4>>2]=c[p+4>>2];c[G+8>>2]=c[p+8>>2];c[G+12>>2]=c[p+12>>2];if(!g){c[a>>2]=0;c[a+4>>2]=j;h[a+8>>3]=i;a=a+16|0;c[a>>2]=c[G>>2];c[a+4>>2]=c[G+4>>2];c[a+8>>2]=c[G+8>>2];c[a+12>>2]=c[G+12>>2];break}if(i>2]=c[G>>2];c[L+4>>2]=c[G+4>>2];c[L+8>>2]=c[G+8>>2];c[L+12>>2]=c[G+12>>2];m=g;f=j;e=i}h[F>>3]=+h[E>>3]-+h[D>>3];XP(r,b,d,J);g=c[r>>2]|0;j=c[r+4>>2]|0;i=+h[r+8>>3];r=r+16|0;c[G>>2]=c[r>>2];c[G+4>>2]=c[r+4>>2];c[G+8>>2]=c[r+8>>2];c[G+12>>2]=c[r+12>>2];if(!g){c[a>>2]=0;c[a+4>>2]=j;h[a+8>>3]=i;a=a+16|0;c[a>>2]=c[G>>2];c[a+4>>2]=c[G+4>>2];c[a+8>>2]=c[G+8>>2];c[a+12>>2]=c[G+12>>2];break}if(i>2]=c[G>>2];c[L+4>>2]=c[G+4>>2];c[L+8>>2]=c[G+8>>2];c[L+12>>2]=c[G+12>>2];m=g;f=j;e=i}h[B>>3]=+h[C>>3]+ +h[d>>3];h[F>>3]=+h[I>>3]+ +h[E>>3];XP(s,b,d,J);g=c[s>>2]|0;j=c[s+4>>2]|0;i=+h[s+8>>3];s=s+16|0;c[G>>2]=c[s>>2];c[G+4>>2]=c[s+4>>2];c[G+8>>2]=c[s+8>>2];c[G+12>>2]=c[s+12>>2];if(!g){c[a>>2]=0;c[a+4>>2]=j;h[a+8>>3]=i;a=a+16|0;c[a>>2]=c[G>>2];c[a+4>>2]=c[G+4>>2];c[a+8>>2]=c[G+8>>2];c[a+12>>2]=c[G+12>>2];break}if(i>2]=c[G>>2];c[L+4>>2]=c[G+4>>2];c[L+8>>2]=c[G+8>>2];c[L+12>>2]=c[G+12>>2];m=g;f=j;e=i}h[F>>3]=+h[E>>3];XP(t,b,d,J);g=c[t>>2]|0;j=c[t+4>>2]|0;i=+h[t+8>>3];t=t+16|0;c[G>>2]=c[t>>2];c[G+4>>2]=c[t+4>>2];c[G+8>>2]=c[t+8>>2];c[G+12>>2]=c[t+12>>2];if(!g){c[a>>2]=0;c[a+4>>2]=j;h[a+8>>3]=i;a=a+16|0;c[a>>2]=c[G>>2];c[a+4>>2]=c[G+4>>2];c[a+8>>2]=c[G+8>>2];c[a+12>>2]=c[G+12>>2];break}if(i>2]=c[G>>2];c[L+4>>2]=c[G+4>>2];c[L+8>>2]=c[G+8>>2];c[L+12>>2]=c[G+12>>2];m=g;f=j;e=i}h[F>>3]=+h[E>>3]-+h[D>>3];XP(u,b,d,J);g=c[u>>2]|0;j=c[u+4>>2]|0;i=+h[u+8>>3];u=u+16|0;c[G>>2]=c[u>>2];c[G+4>>2]=c[u+4>>2];c[G+8>>2]=c[u+8>>2];c[G+12>>2]=c[u+12>>2];if(!g){c[a>>2]=0;c[a+4>>2]=j;h[a+8>>3]=i;a=a+16|0;c[a>>2]=c[G>>2];c[a+4>>2]=c[G+4>>2];c[a+8>>2]=c[G+8>>2];c[a+12>>2]=c[G+12>>2];break}if(i>2]=c[G>>2];c[L+4>>2]=c[G+4>>2];c[L+8>>2]=c[G+8>>2];c[L+12>>2]=c[G+12>>2];f=j;e=i}else g=m;j=(c[J+28>>2]|0)==0;do if(!(c[J+24>>2]|0))if(j){if(c[J+32>>2]|0){w=38;break}if(!((c[J+12>>2]|0)==0&(c[J>>2]|0)==0))w=38}else w=46;else if(j)w=38;else w=46;while(0);b:do if((w|0)==38)if(!(c[J+32>>2]|0)){h[B>>3]=+h[d>>3]-+h[z>>3];p=v+4|0;r=v+8|0;s=v+16|0;m=F;j=E;i=+h[I>>3];c:while(1){while(1){h[m>>3]=+h[j>>3]+i;if(!(+h[B>>3]<=+h[C>>3]+ +h[d>>3])){w=46;break b}XP(v,b,d,J);n=c[v>>2]|0;o=c[p>>2]|0;k=+h[r>>3];c[G>>2]=c[s>>2];c[G+4>>2]=c[s+4>>2];c[G+8>>2]=c[s+8>>2];c[G+12>>2]=c[s+12>>2];if(!n)break c;if(k>2]=c[G>>2];c[L+4>>2]=c[G+4>>2];c[L+8>>2]=c[G+8>>2];c[L+12>>2]=c[G+12>>2];m=B;j=B;i=A;g=n;f=o;e=k}c[a>>2]=0;c[a+4>>2]=o;h[a+8>>3]=k;a=a+16|0;c[a>>2]=c[G>>2];c[a+4>>2]=c[G+4>>2];c[a+8>>2]=c[G+8>>2];c[a+12>>2]=c[G+12>>2];break a}else w=46;while(0);d:do if((w|0)==46)if((c[J+12>>2]|0)==0&(c[J>>2]|0)==0){h[B>>3]=+h[d>>3]-+h[z>>3];k=+h[E>>3];n=x+4|0;o=x+8|0;p=x+16|0;i=k;k=+h[I>>3]+k;while(1){h[F>>3]=k;if(!(k>=i-+h[D>>3]))break d;XP(x,b,d,J);j=c[x>>2]|0;m=c[n>>2]|0;i=+h[o>>3];c[G>>2]=c[p>>2];c[G+4>>2]=c[p+4>>2];c[G+8>>2]=c[p+8>>2];c[G+12>>2]=c[p+12>>2];if(!j)break;if(i>2]=c[G>>2];c[L+4>>2]=c[G+4>>2];c[L+8>>2]=c[G+8>>2];c[L+12>>2]=c[G+12>>2];g=j;f=m;e=i}i=+h[E>>3];k=+h[F>>3]-K}c[a>>2]=0;c[a+4>>2]=m;h[a+8>>3]=i;a=a+16|0;c[a>>2]=c[G>>2];c[a+4>>2]=c[G+4>>2];c[a+8>>2]=c[G+8>>2];c[a+12>>2]=c[G+12>>2];break a}while(0);i=+h[d>>3];k=+h[C>>3]+i;h[B>>3]=k;q=+h[D>>3];h[F>>3]=+h[E>>3]-q;j=c[J+4>>2]|0;do if(!(c[J+8>>2]|0)){m=c[J>>2]|0;if(!((j|0)==0&(m|0)==0)){w=59;break}if(c[J+20>>2]|0){j=0;m=0;w=59;break}if(c[J+32>>2]|0){j=0;m=0;w=59}}else{m=c[J>>2]|0;w=59}while(0);e:do if((w|0)==59){f:do if((j|0)==0&(m|0)==0){h[B>>3]=k;p=y+4|0;r=y+8|0;s=y+16|0;m=F;j=E;i=q;g:while(1){while(1){h[m>>3]=+h[j>>3]-i;i=+h[d>>3];if(!(+h[B>>3]>=i-+h[z>>3]))break f;XP(y,b,d,J);n=c[y>>2]|0;o=c[p>>2]|0;k=+h[r>>3];c[G>>2]=c[s>>2];c[G+4>>2]=c[s+4>>2];c[G+8>>2]=c[s+8>>2];c[G+12>>2]=c[s+12>>2];if(!n)break g;if(k>2]=c[G>>2];c[L+4>>2]=c[G+4>>2];c[L+8>>2]=c[G+8>>2];c[L+12>>2]=c[G+12>>2];m=B;j=B;i=A;g=n;f=o;e=k}c[a>>2]=0;c[a+4>>2]=o;h[a+8>>3]=k;a=a+16|0;c[a>>2]=c[G>>2];c[a+4>>2]=c[G+4>>2];c[a+8>>2]=c[G+8>>2];c[a+12>>2]=c[G+12>>2];break a}while(0);if(c[J+20>>2]|0)break;if(c[J+32>>2]|0)break;h[B>>3]=+h[C>>3]+i;i=+h[E>>3];n=H+4|0;o=H+8|0;p=H+16|0;k=i;i=i-+h[D>>3];while(1){h[F>>3]=i;if(!(i<=+h[I>>3]+k))break e;XP(H,b,d,J);j=c[H>>2]|0;m=c[n>>2]|0;i=+h[o>>3];c[G>>2]=c[p>>2];c[G+4>>2]=c[p+4>>2];c[G+8>>2]=c[p+8>>2];c[G+12>>2]=c[p+12>>2];if(!j)break;if(i>2]=c[G>>2];c[L+4>>2]=c[G+4>>2];c[L+8>>2]=c[G+8>>2];c[L+12>>2]=c[G+12>>2];g=j;f=m;e=i}k=+h[E>>3];i=+h[F>>3]+K}c[a>>2]=0;c[a+4>>2]=m;h[a+8>>3]=i;a=a+16|0;c[a>>2]=c[G>>2];c[a+4>>2]=c[G+4>>2];c[a+8>>2]=c[G+8>>2];c[a+12>>2]=c[G+12>>2];break a}while(0);c[a>>2]=g;c[a+4>>2]=f;h[a+8>>3]=e;a=a+16|0;c[a>>2]=c[L>>2];c[a+4>>2]=c[L+4>>2];c[a+8>>2]=c[L+8>>2];c[a+12>>2]=c[L+12>>2]}while(0);l=M;return}function WP(a){a=a|0;ES(c[a+24>>2]|0)|0;D_(a);return}function XP(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0.0,j=0,k=0,m=0,n=0.0,o=0,p=0,q=0,r=0.0,s=0,t=0;t=l;l=l+48|0;q=t+32|0;s=t+16|0;p=t;g=c[e+32>>2]|0;if(!g)qa(108451,108461,382,108480);o=g+16|0;c[p>>2]=c[o>>2];c[p+4>>2]=c[o+4>>2];c[p+8>>2]=c[o+8>>2];c[p+12>>2]=c[o+12>>2];o=d+4|0;m=0;g=0;while(1){if((m|0)>=(c[o>>2]|0))break;j=c[d>>2]|0;k=j+(m*40|0)|0;do if((k|0)!=(e|0)){if(+h[j+(m*40|0)+16>>3]>0.0?+h[j+(m*40|0)+24>>3]>0.0:0)break;g=g+((YP(e,k)|0)!=0&1)|0}while(0);m=m+1|0}ZP(e,q);m=c[d+24>>2]|0;m=GS(m,c[m>>2]|0,q)|0;if(!m){c[b>>2]=g;h[b+8>>3]=0.0;s=b+16|0;c[s>>2]=c[p>>2];c[s+4>>2]=c[p+4>>2];c[s+8>>2]=c[p+8>>2];c[s+12>>2]=c[p+12>>2]}else{k=m;i=0.0;while(1){if(!k)break;j=c[(c[k+4>>2]|0)+16>>2]|0;if((j|0)!=(e|0)){_P(j,s);n=+$P(q,s);if(n>0.0){g=g+1|0;i=+aQ(e,j,q,n,f)+i}d=c[j+32>>2]|0;if(((d|0)!=0?(a[d+36>>0]|0)!=0:0)?(ZP(j,s),r=+$P(q,s),r>0.0):0){g=g+1|0;i=+bQ(e,j,q,r,f)+i}}k=c[k>>2]|0}BS(m);c[b>>2]=g;h[b+8>>3]=i;s=b+16|0;c[s>>2]=c[p>>2];c[s+4>>2]=c[p+4>>2];c[s+8>>2]=c[p+8>>2];c[s+12>>2]=c[p+12>>2]}l=t;return}function YP(a,b){a=a|0;b=b|0;var d=0.0,e=0.0,f=0.0,g=0.0;a=c[a+32>>2]|0;if(+h[b+16>>3]==0.0?+h[b+24>>3]==0.0:0){if((((a|0)!=0?(d=+h[b>>3],e=+h[a+16>>3],d>e):0)?d<+h[a>>3]+e:0)?(f=+h[b+8>>3],g=+h[a+24>>3],f>g):0)a=f<+h[a+8>>3]+g&1;else a=0;return a|0}qa(108517,108461,219,108554);return 0}function ZP(a,b){a=a|0;b=b|0;var d=0.0,e=0.0;a=c[a+32>>2]|0;e=+h[a+16>>3];c[b>>2]=~~e;d=+h[a+24>>3];c[b+4>>2]=~~d;c[b+8>>2]=~~(+h[a>>3]+e);c[b+12>>2]=~~(+h[a+8>>3]+d);return}function _P(a,b){a=a|0;b=b|0;var d=0.0,e=0.0;e=+h[a>>3];c[b>>2]=~~e;d=+h[a+8>>3];c[b+4>>2]=~~d;c[b+8>>2]=~~(+h[a+16>>3]+e);c[b+12>>2]=~~(+h[a+24>>3]+d);return}function $P(a,b){a=a|0;b=b|0;var d=0.0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;i=c[a+8>>2]|0;j=c[b>>2]|0;if((((i|0)>=(j|0)?(k=c[a>>2]|0,l=c[b+8>>2]|0,(k|0)<=(l|0)):0)?(e=c[a+12>>2]|0,f=c[b+4>>2]|0,(e|0)>=(f|0)):0)?(g=c[a+4>>2]|0,h=c[b+12>>2]|0,(g|0)<=(h|0)):0)d=(+(c[((e|0)<(h|0)?a:b)+12>>2]|0)-+(c[((g|0)>(f|0)?a:b)+4>>2]|0))*(+(c[((i|0)<(l|0)?a:b)+8>>2]|0)-+(c[((k|0)>(j|0)?a:b)>>2]|0));else d=0.0;return +d}function aQ(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=+e;f=f|0;var g=0.0,h=0.0,i=0,j=0;j=l;l=l+16|0;i=j;a=cQ(a,b)|0;f=f+(((a|0)<0?5:a)<<2)|0;a=c[f>>2]|0;if(!a){c[f>>2]=b;g=e}else{_P(a,i);g=+$P(d,i);g=g>e?g:0.0;a=c[f>>2]|0;if((c[a+32>>2]|0)!=0?(ZP(a,i),h=+$P(d,i),h>e):0)g=h>g?h:g;if(!(g>0.0)){c[f>>2]=b;g=e}}l=j;return +g}function bQ(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=+e;f=f|0;var g=0.0,h=0.0,i=0,j=0;j=l;l=l+16|0;i=j;a=cQ(a,b)|0;f=f+(((a|0)<0?5:a)<<2)|0;a=c[f>>2]|0;if(!a){c[f>>2]=b;g=e}else{_P(a,i);g=+$P(d,i);g=g>e?g:0.0;a=c[f>>2]|0;if((c[a+32>>2]|0)!=0?(ZP(a,i),h=+$P(d,i),h>e):0)g=h>g?h:g;if(!(g>0.0)){c[f>>2]=b;g=e}}l=j;return +g}function cQ(b,d){b=b|0;d=d|0;var e=0,f=0,g=0.0,i=0.0,j=0.0,k=0.0;e=c[b+32>>2]|0;f=c[d+32>>2]|0;if((e|0)==(f|0))qa(108496,108461,276,108506);do if((a[e+36>>0]|0)!=0?(a[f+36>>0]|0)!=0:0){j=+h[b>>3];if(j==0.0?+h[b+8>>3]==0.0:0){e=-1;break}k=+h[d>>3];i=+h[d+8>>3];if(!(k==0.0&i==0.0)){g=+h[b+8>>3];if(ij?2:1;break}e=kg){if(e){e=6;break}e=k>j?8:7;break}if(!e)if(k>j)e=5;else e=-1;else e=3}else e=-1}else e=-1;while(0);return e|0}function dQ(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;k=l;l=l+32|0;d=k+24|0;e=k+16|0;f=k;g=QP(a)|0;h=a+4|0;i=e+4|0;j=a+20|0;b=0;while(1){if((b|0)>=(c[h>>2]|0)){b=0;break}m=uH(32)|0;o=(c[a>>2]|0)+(b*40|0)|0;n=m+12|0;c[m+28>>2]=o;gQ(f,o);c[n>>2]=c[f>>2];c[n+4>>2]=c[f+4>>2];c[n+8>>2]=c[f+8>>2];c[n+12>>2]=c[f+12>>2];n=c[n>>2]|0;c[e>>2]=(((c[m+20>>2]|0)-n|0)/2|0)+n;n=c[m+16>>2]|0;c[i>>2]=(((c[m+24>>2]|0)-n|0)/2|0)+n;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[m+8>>2]=hQ(d,g)|0;n=c[j>>2]|0;if(!(nb[c[n>>2]&63](n,m,1)|0)){b=-1;break}else b=b+1|0}l=k;return b|0}function eQ(a){a=a|0;var b=0,d=0,e=0;d=a+20|0;e=c[d>>2]|0;b=a+24|0;a=nb[c[e>>2]&63](e,0,128)|0;while(1){if(!a)break;e=c[b>>2]|0;HS(e,a+12|0,c[a+28>>2]|0,e,0)|0;e=c[d>>2]|0;a=nb[c[e>>2]&63](e,a,8)|0}return}function fQ(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;e=a+20|0;f=Ew(c[e>>2]|0)|0;d=0;while(1){if(!(Ew(c[e>>2]|0)|0))break;g=c[e>>2]|0;a=c[(c[g+8>>2]|0)+4>>2]|0;if(!a){h=8;break}b=c[(c[g+4>>2]|0)+8>>2]|0;if((b|0)<0)a=c[a+8>>2]|0;else a=a+(0-b)|0;if(!a){h=8;break}nb[c[g>>2]&63](g,a,4096)|0;D_(a);d=d+1|0}if((h|0)==8)qa(108567,108461,616,108570);if((f|0)==(d|0))return;else qa(108582,108461,623,108570)}function gQ(a,b){a=a|0;b=b|0;var d=0,e=0.0,f=0.0,g=0.0,i=0,j=0,k=0,l=0.0;d=c[b+32>>2]|0;if(!d){e=0.0;f=0.0}else{e=+h[d>>3];f=+h[d+8>>3]}l=+h[b>>3];k=~~+A(+(l-e));g=+h[b+8>>3];j=~~+A(+(g-f));i=~~+N(+(l+e+ +h[b+16>>3]));if((i|0)==2147483647)qa(108594,108461,264,108621);d=~~+N(+(g+f+ +h[b+24>>3]));if((d|0)==2147483647)qa(108631,108461,266,108621);else{c[a>>2]=k;c[a+4>>2]=j;c[a+8>>2]=i;c[a+12>>2]=d;return}}function hQ(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;f=0;e=c[a>>2]|0;d=c[a+4>>2]|0;while(1){a=b+-1|0;if((b|0)<=0)break;i=e>>>a&1;b=d>>>a&1;g=b+-1|0;h=g&(e^d);g=g&0-i;f=i<<1|f<<2|i^b;b=a;e=h^e^g;d=h^d^g}return f|0}function iQ(b){b=b|0;var d=0,e=0,f=0,g=0;d=W_(b)|0;if(d>>>0>=(c[46595]|0)>>>0){d=d+11|0;c[46595]=d;d=xH(c[46596]|0,d)|0;c[46596]=d;if(!d)d=0;else e=4}else{d=c[46596]|0;e=4}if((e|0)==4){g=d;while(1){e=a[b>>0]|0;if(!(e<<24>>24))break;f=e&255;if(Q$(f)|0)e=(P$(f)|0)&255;a[g>>0]=e;g=g+1|0;b=b+1|0}a[g>>0]=0}return d|0}function jQ(b,e,f){b=b|0;e=e|0;f=f|0;var g=0.0,i=0,j=0.0,k=0.0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0.0;F=l;l=l+144|0;s=F+96|0;p=F+80|0;v=F+124|0;t=F+72|0;w=F+64|0;x=F+56|0;C=F+48|0;D=F+40|0;E=F+32|0;y=F+24|0;z=F+16|0;A=F+8|0;B=F;i=F+120|0;m=F+116|0;n=F+112|0;o=F+108|0;c[e+32>>2]=f;r=b;while(1)if((a[r>>0]|0)==32)r=r+1|0;else break;c[o>>2]=255;b=a[r>>0]|0;a:do if(b<<24>>24==35){c[p>>2]=i;c[p+4>>2]=m;c[p+8>>2]=n;c[p+12>>2]=o;if((N1(r,108673,p)|0)<=2){b=a[r>>0]|0;q=12;break}switch(f|0){case 0:{G=+((c[i>>2]|0)>>>0)*.00392156862745098;h[C>>3]=G;g=+((c[m>>2]|0)>>>0)*.00392156862745098;h[D>>3]=g;j=+((c[n>>2]|0)>>>0)*.00392156862745098;h[E>>3]=j;k=+((c[o>>2]|0)>>>0)*.00392156862745098;kQ(G,g,j,t,w,x);h[e>>3]=+h[t>>3];h[e+8>>3]=+h[w>>3];h[e+16>>3]=+h[x>>3];h[e+24>>3]=k;b=0;break a}case 1:{a[e>>0]=c[i>>2];a[e+1>>0]=c[m>>2];a[e+2>>0]=c[n>>2];a[e+3>>0]=c[o>>2];b=0;break a}case 3:{j=+((c[i>>2]|0)>>>0)*.00392156862745098;h[C>>3]=j;k=+((c[m>>2]|0)>>>0)*.00392156862745098;h[D>>3]=k;G=+((c[n>>2]|0)>>>0)*.00392156862745098;h[E>>3]=G;lQ(j,k,G,y,z,A,B);a[e>>0]=~~+h[y>>3]*255;a[e+1>>0]=~~+h[z>>3]*255;a[e+2>>0]=~~+h[A>>3]*255;a[e+3>>0]=~~+h[B>>3]*255;b=0;break a}case 2:{c[e>>2]=(((c[i>>2]|0)*65535|0)>>>0)/255|0;c[e+4>>2]=(((c[m>>2]|0)*65535|0)>>>0)/255|0;c[e+8>>2]=(((c[n>>2]|0)*65535|0)>>>0)/255|0;c[e+12>>2]=(((c[o>>2]|0)*65535|0)>>>0)/255|0;b=0;break a}case 4:{h[e>>3]=+((c[i>>2]|0)>>>0)*.00392156862745098;h[e+8>>3]=+((c[m>>2]|0)>>>0)*.00392156862745098;h[e+16>>3]=+((c[n>>2]|0)>>>0)*.00392156862745098;h[e+24>>3]=+((c[o>>2]|0)>>>0)*.00392156862745098;b=0;break a}default:{b=0;break a}}}else q=12;while(0);b:do if((q|0)==12){if(!(b<<24>>24!=46?((b&255)+-48|0)>>>0>=10:0)){b=W_(r)|0;if(b>>>0>=(c[46597]|0)>>>0){b=b+11|0;c[46597]=b;b=xH(c[46598]|0,b)|0;c[46598]=b;if(!b){b=-1;break}}else b=c[46598]|0;m=b;i=r;c:while(1){n=i+1|0;i=a[i>>0]|0;switch(i<<24>>24){case 0:break c;case 44:{i=32;break}default:{}}a[m>>0]=i;m=m+1|0;i=n}a[m>>0]=0;c[s>>2]=t;c[s+4>>2]=w;c[s+8>>2]=x;if((N1(b,108687,s)|0)==3){k=+h[t>>3];k=k<1.0?k:1.0;k=k>0.0?k:0.0;h[t>>3]=k;j=+h[w>>3];j=j<1.0?j:1.0;j=j>0.0?j:0.0;h[w>>3]=j;g=+h[x>>3];g=g<1.0?g:1.0;g=g>0.0?g:0.0;h[x>>3]=g;switch(f|0){case 0:{h[e>>3]=k;h[e+8>>3]=j;h[e+16>>3]=g;h[e+24>>3]=1.0;b=0;break b}case 1:{mQ(k,j,g,C,D,E);a[e>>0]=~~(+h[C>>3]*255.0);a[e+1>>0]=~~(+h[D>>3]*255.0);a[e+2>>0]=~~(+h[E>>3]*255.0);a[e+3>>0]=-1;b=0;break b}case 3:{mQ(k,j,g,C,D,E);lQ(+h[C>>3],+h[D>>3],+h[E>>3],y,z,A,B);a[e>>0]=~~+h[y>>3]*255;a[e+1>>0]=~~+h[z>>3]*255;a[e+2>>0]=~~+h[A>>3]*255;a[e+3>>0]=~~+h[B>>3]*255;b=0;break b}case 2:{mQ(k,j,g,C,D,E);c[e>>2]=~~(+h[C>>3]*65535.0);c[e+4>>2]=~~(+h[D>>3]*65535.0);c[e+8>>2]=~~(+h[E>>3]*65535.0);c[e+12>>2]=65535;b=0;break b}case 4:{mQ(k,j,g,C,D,E);h[e>>3]=+h[C>>3];h[e+8>>3]=+h[D>>3];h[e+16>>3]=+h[E>>3];h[e+24>>3]=1.0;b=0;break b}default:{b=0;break b}}}}i=nQ(r)|0;c[v>>2]=i;if(!i)b=-1;else{b=c[46599]|0;if(!(((b|0)!=0?(u=c[b>>2]|0,(a[u>>0]|0)==(a[i>>0]|0)):0)?(b$(u,i)|0)==0:0)){b=e2(v,25844,2491,12,101)|0;c[46599]=b;if(!b)switch(f|0){case 0:{c[e>>2]=0;c[e+4>>2]=0;c[e+8>>2]=0;c[e+12>>2]=0;c[e+16>>2]=0;c[e+20>>2]=0;h[e+24>>3]=1.0;b=1;break b}case 1:{a[e+2>>0]=0;a[e+1>>0]=0;a[e>>0]=0;a[e+3>>0]=-1;b=1;break b}case 3:{c[e>>2]=0;b=1;break b}case 2:{c[e+8>>2]=0;c[e+4>>2]=0;c[e>>2]=0;c[e+12>>2]=65535;b=1;break b}case 4:{c[e>>2]=0;c[e+4>>2]=0;c[e+8>>2]=0;c[e+12>>2]=0;c[e+16>>2]=0;c[e+20>>2]=0;h[e+24>>3]=1.0;b=1;break b}default:{b=1;break b}}}switch(f|0){case 0:{h[e>>3]=+(d[b+4>>0]|0)*.00392156862745098;h[e+8>>3]=+(d[b+5>>0]|0)*.00392156862745098;h[e+16>>3]=+(d[b+6>>0]|0)*.00392156862745098;h[e+24>>3]=+(d[b+10>>0]|0)*.00392156862745098;b=0;break b}case 1:{a[e>>0]=a[b+7>>0]|0;a[e+1>>0]=a[b+8>>0]|0;a[e+2>>0]=a[b+9>>0]|0;a[e+3>>0]=a[b+10>>0]|0;b=0;break b}case 3:{j=+(d[b+7>>0]|0)*.00392156862745098;h[C>>3]=j;k=+(d[b+8>>0]|0)*.00392156862745098;h[D>>3]=k;G=+(d[b+9>>0]|0)*.00392156862745098;h[E>>3]=G;lQ(j,k,G,y,z,A,B);a[e>>0]=~~+h[y>>3]*255;a[e+1>>0]=~~+h[z>>3]*255;a[e+2>>0]=~~+h[A>>3]*255;a[e+3>>0]=~~+h[B>>3]*255;b=0;break b}case 2:{c[e>>2]=(d[b+7>>0]|0)*257;c[e+4>>2]=(d[b+8>>0]|0)*257;c[e+8>>2]=(d[b+9>>0]|0)*257;c[e+12>>2]=(d[b+10>>0]|0)*257;b=0;break b}case 4:{h[e>>3]=+(d[b+7>>0]|0)*.00392156862745098;h[e+8>>3]=+(d[b+8>>0]|0)*.00392156862745098;h[e+16>>3]=+(d[b+9>>0]|0)*.00392156862745098;h[e+24>>3]=+(d[b+10>>0]|0)*.00392156862745098;b=0;break b}default:{b=0;break b}}}}while(0);l=F;return b|0}function kQ(a,b,c,d,e,f){a=+a;b=+b;c=+c;d=d|0;e=e|0;f=f|0;var g=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0;i=bc?b:c;m=ma?a:i);g=i/m;if(m>0.0)if(g>0.0){j=(m-a)/i;k=(m-b)/i;l=(m-c)/i;do if(!(m==a)){if(m==b){a=j+2.0-l;break}if(m==c)a=k+4.0-j;else a=0.0}else a=(b-c)/i;while(0);a=a*60.0;if(a<0.0)a=a+360.0}else a=0.0;else{g=0.0;a=0.0}h[d>>3]=a*.002777777777777778;h[f>>3]=m;h[e>>3]=g;return}function lQ(a,b,c,d,e,f,g){a=+a;b=+b;c=+c;d=d|0;e=e|0;f=f|0;g=g|0;h[d>>3]=1.0-a;h[e>>3]=1.0-b;h[f>>3]=1.0-c;b=+h[d>>3];c=+h[e>>3];c=b>3]=c;b=+h[f>>3];c=b>3]=c;h[d>>3]=+h[d>>3]-c;h[e>>3]=+h[e>>3]-+h[g>>3];h[f>>3]=+h[f>>3]-+h[g>>3];return}function mQ(a,b,c,d,e,f){a=+a;b=+b;c=+c;d=d|0;e=e|0;f=f|0;var g=0.0,i=0.0,j=0.0,k=0,l=0;a:do if(!(b<=0.0)){i=!(a>=1.0)?a*6.0:0.0;l=~~i;i=i-+(l|0);a=(1.0-b)*c;j=(1.0-i*b)*c;b=(1.0-(1.0-i)*b)*c;switch(l|0){case 0:{g=a;i=b;a=c;k=8;break a}case 1:{g=a;i=c;a=j;k=8;break a}case 2:{g=b;i=c;k=8;break a}case 3:{g=c;i=j;k=8;break a}case 4:{g=c;i=a;a=b;k=8;break a}case 5:{g=j;i=a;a=c;k=8;break a}default:break a}}else{g=c;i=c;a=c;k=8}while(0);if((k|0)==8){h[d>>3]=a;h[e>>3]=i;h[f>>3]=g}return}function nQ(b){b=b|0;var d=0,e=0;d=a[b>>0]|0;if(((d<<24>>24!=98?(e=b+1|0,!(d<<24>>24==119|(z$(e,134184,4)|0)==0)):0)?!(d<<24>>24==108|(z$(e,134189,4)|0)==0):0)?(z$(e,134194,8)|0)!=0:0){do if(d<<24>>24==47){d=A$(e,47)|0;if(!d)b=e;else{if((a[e>>0]|0)!=47){e=(V$(134203,e,4)|0)==0;b=e?d+1|0:b;break}d=c[46600]|0;if((d|0?a[d>>0]|0:0)?V$(134203,d,3)|0:0){b=pQ(d,b+2|0)|0;break}b=b+2|0}}else{d=c[46600]|0;if(((d|0)!=0?(a[d>>0]|0)!=0:0)?(V$(134203,d,3)|0)!=0:0)b=pQ(d,b)|0}while(0);b=iQ(b)|0}return b|0}function oQ(a,b){a=a|0;b=b|0;return O$(c[a>>2]|0,c[b>>2]|0)|0}function pQ(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;f=l;l=l+16|0;e=f;g=W_(a)|0;g=(W_(b)|0)+g|0;d=g+13|0;if((g+3|0)>>>0<(c[46601]|0)>>>0)d=c[46602]|0;else{c[46601]=d;d=xH(c[46602]|0,d)|0;c[46602]=d}c[e>>2]=a;c[e+4>>2]=b;Y0(d,134208,e)|0;l=f;return c[46602]|0}function qQ(a){a=a|0;c[46600]=a;return}function rQ(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=+e;var f=0,g=0;f=l;l=l+208|0;g=f;sQ(g,+h[a>>3],+h[a+8>>3],b,c,d,e);a=tQ(g)|0;l=f;return a|0}function sQ(a,b,c,d,e,f,g){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;var i=0,j=0;h[a>>3]=b;h[a+8>>3]=c;j=a+16|0;h[j>>3]=d;i=a+24|0;h[i>>3]=e;h[a+32>>3]=0.0;c=+K(+(+F(+f)/e),+(+E(+f)/d));h[a+56>>3]=c;e=+K(+(+F(+g)/e),+(+E(+g)/d));h[a+40>>3]=1.0;h[a+48>>3]=0.0;e=e-+A(+((e-c)*.15915494309189535))*6.283185307179586;h[a+64>>3]=g-f>3.141592653589793&e-c<3.141592653589793?e+6.283185307179586:e;zQ(a);AQ(a);BQ(a);g=+h[j>>3];g=(g-+h[i>>3])/g;h[a+168>>3]=g;h[a+176>>3]=(2.0-g)*g;g=1.0-g;h[a+184>>3]=g;h[a+192>>3]=g*g;return}function tQ(a){a=a|0;var b=0,c=0.0,d=0,e=0.0,f=0.0,g=0.0,i=0.0,j=0,k=0,l=0,m=0,n=0.0,o=0.0,p=0,q=0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0;q=uH(8)|0;f=+h[a+56>>3];e=+h[a+64>>3]-f;p=1;b=0;while(1){o=e/+(p|0);if(!(b<<24>>24==0&(p|0)<1024))break;a:do if(!(o<=1.5707963267948966))b=0;else{c=f;d=0;b=1;while(1){if(!(b<<24>>24!=0&(d|0)<(p|0)))break a;n=c+o;b=+uQ(a,c,n)<=1.0e-05&1;c=n;d=d+1|0}}while(0);p=p<<1}i=+E(+f);u=+F(+f);d=a+16|0;s=+h[d>>3];v=s*i;j=a+24|0;c=+h[j>>3];g=c*u;i=c*i;c=+h[a>>3];k=a+40|0;t=+h[k>>3];l=a+48|0;r=+h[l>>3];e=t*v+c-r*g;m=a+8|0;n=+h[m>>3];g=r*v+t*g+n;s=-(u*s);vQ(q,c,n);wQ(q,e,g);n=+G(+(o*.5));n=+F(+o)*.3333333333333333*(+C(+(n*n*3.0+4.0))+-1.0);c=f;f=g;g=r*s+t*i;i=t*s-r*i;b=0;while(1){if((b|0)>=(p|0))break;r=c+o;u=+E(+r);v=+F(+r);x=+h[d>>3];z=x*u;w=+h[j>>3];t=w*v;u=w*u;w=+h[k>>3];y=+h[l>>3];s=w*z+ +h[a>>3]-y*t;t=y*z+w*t+ +h[m>>3];x=-(v*x);v=w*x-y*u;u=y*x+w*u;xQ(q,e+i*n,f+g*n,s-v*n,t-u*n,s,t);c=r;e=s;f=t;g=u;i=v;b=b+1|0}yQ(q);return q|0}function uQ(a,b,c){a=a|0;b=+b;c=+c;var d=0.0,e=0.0,f=0.0,g=0.0,i=0.0;d=c+b;i=+h[a+16>>3];e=+h[a+24>>3]/i;g=+E(+d);f=+E(+(d*2.0));d=+E(+(d*3.0));a=e<.25?10392:10648;return +(((e*.001+4.98)*e+.207)/(e+.0067)*i*+L(+(((+h[a+32>>3]*e+ +h[a+40>>3])*e+ +h[a+48>>3])/(+h[a+56>>3]+e)*g+((+h[a>>3]*e+ +h[a+8>>3])*e+ +h[a+16>>3])/(+h[a+24>>3]+e)+((+h[a+64>>3]*e+ +h[a+72>>3])*e+ +h[a+80>>3])/(+h[a+88>>3]+e)*f+((+h[a+96>>3]*e+ +h[a+104>>3])*e+ +h[a+112>>3])/(+h[a+120>>3]+e)*d+(((+h[a+160>>3]*e+ +h[a+168>>3])*e+ +h[a+176>>3])/(+h[a+184>>3]+e)*g+((+h[a+128>>3]*e+ +h[a+136>>3])*e+ +h[a+144>>3])/(+h[a+152>>3]+e)+((+h[a+192>>3]*e+ +h[a+200>>3])*e+ +h[a+208>>3])/(+h[a+216>>3]+e)*f+((+h[a+224>>3]*e+ +h[a+232>>3])*e+ +h[a+240>>3])/(+h[a+248>>3]+e)*d)*(c-b))))}function vQ(a,b,d){a=a|0;b=+b;d=+d;var e=0;c[46603]=100;e=uH(1600)|0;c[a>>2]=e;h[e>>3]=b;h[e+8>>3]=d;c[a+4>>2]=1;return}function wQ(a,b,d){a=a|0;b=+b;d=+d;var e=0,f=0;f=c[a>>2]|0;e=(c[a+4>>2]|0)+-1|0;xQ(a,+h[f+(e<<4)>>3],+h[f+(e<<4)+8>>3],b,d,b,d);return}function xQ(a,b,d,e,f,g,i){a=a|0;b=+b;d=+d;e=+e;f=+f;g=+g;i=+i;var j=0,k=0,l=0,m=0;l=a+4|0;j=c[l>>2]|0;k=c[46603]|0;if((j+3|0)<(k|0))a=c[a>>2]|0;else{c[46603]=k<<1;j=F_(c[a>>2]|0,k<<5)|0;c[a>>2]=j;a=j;j=c[l>>2]|0}h[a+(j<<4)>>3]=b;m=j+1|0;h[a+(j<<4)+8>>3]=d;h[a+(m<<4)>>3]=e;k=j+2|0;h[a+(m<<4)+8>>3]=f;h[a+(k<<4)>>3]=g;c[l>>2]=j+3;h[a+(k<<4)+8>>3]=i;return}function yQ(a){a=a|0;var b=0;b=c[a>>2]|0;wQ(a,+h[b>>3],+h[b+8>>3]);c[a>>2]=F_(c[a>>2]|0,c[a+4>>2]<<4)|0;c[46603]=0;return}function zQ(a){a=a|0;var b=0.0,c=0.0,d=0.0,e=0.0;d=+h[a+16>>3];b=+h[a+24>>3];b=+C(+(d*d-b*b));d=b*+h[a+40>>3];b=b*+h[a+48>>3];e=+h[a>>3];h[a+104>>3]=e-d;c=+h[a+8>>3];h[a+112>>3]=c-b;h[a+120>>3]=e+d;h[a+128>>3]=c+b;return}function AQ(a){a=a|0;var b=0.0,c=0.0,d=0.0,e=0.0,f=0.0,g=0.0,i=0.0,j=0.0;d=+h[a+16>>3];i=+h[a+56>>3];j=+E(+i)*d;b=+h[a+24>>3];i=+F(+i)*b;g=+h[a+64>>3];d=+E(+g)*d;b=+F(+g)*b;g=+h[a>>3];c=+h[a+40>>3];e=+h[a+48>>3];h[a+72>>3]=c*j+g-e*i;f=+h[a+8>>3];h[a+80>>3]=e*j+f+c*i;h[a+88>>3]=g+c*d-e*b;h[a+96>>3]=f+e*d+c*b;return}function BQ(a){a=a|0;var b=0.0,c=0.0,d=0.0,e=0.0,f=0.0,g=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0;k=+h[a+24>>3];l=+h[a+16>>3];e=k/l;m=+h[a+48>>3];n=+B(+m)<.1;j=+h[a+40>>3];do if(n){b=m/j;c=+J(+(b*e));d=-c;if(j<0.0){b=+J(+(b/e));e=d;d=3.141592653589793-c;c=4.71238898038469-b;b=1.5707963267948966-b;break}else{b=+J(+(b/e));e=-3.141592653589793-c;c=1.5707963267948966-b;b=-1.5707963267948966-b;break}}else{b=j/m;c=+J(+(b/e));d=c+1.5707963267948966;if(m<0.0){b=+J(+(b*e));e=c+-1.5707963267948966;c=b+3.141592653589793;break}else{b=+J(+(b*e));e=d;d=c+4.71238898038469;c=b;b=b+-3.141592653589793;break}}while(0);g=+h[a+56>>3];e=e-+A(+((e-g)*.15915494309189535))*6.283185307179586;b=b-+A(+((b-g)*.15915494309189535))*6.283185307179586;f=d-+A(+((d-g)*.15915494309189535))*6.283185307179586;g=c-+A(+((c-g)*.15915494309189535))*6.283185307179586;i=+h[a+64>>3];if(!(e<=i)){e=+h[a+72>>3];c=+h[a+88>>3];c=e>3]-k*+F(+e)*m;h[a+136>>3]=c;if(!(b<=i)){e=+h[a+80>>3];d=+h[a+96>>3];d=e>3]+ +F(+b)*k*j;h[a+144>>3]=d;if(!(f<=i)){f=+h[a+72>>3];b=+h[a+88>>3];b=f>b?f:b}else b=+E(+f)*l*j+ +h[a>>3]-k*+F(+f)*m;h[a+152>>3]=b-c;if(!(g<=i)){m=+h[a+80>>3];b=+h[a+96>>3];b=m>b?m:b}else b=+E(+g)*l*m+ +h[a+8>>3]+ +F(+g)*k*j;h[a+160>>3]=b-d;return}function CQ(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0.0,i=0,j=0,k=0.0,m=0,n=0;n=l;l=l+80|0;m=n;DQ(b);k=+h[e+56>>3];g=+h[e+64>>3];switch(a[e+80>>0]|0){case 116:{g=(+h[e+48>>3]-+EQ(d))*.5+g;f=4;break}case 98:{g=g-(+h[e+48>>3]-+EQ(d))*.5;f=4;break}default:{}}if((f|0)==4)g=g+-1.0;h[m>>3]=k;h[m+8>>3]=g;c[m+20>>2]=c[e+8>>2];c[m+16>>2]=c[e+4>>2];h[m+32>>3]=+h[e+16>>3];j=b+16|0;f=xx(c[(c[j>>2]|0)+8>>2]|0,134215)|0;e=m+56|0;c[e>>2]=f;i=m+60|0;c[i>>2]=c[(c[j>>2]|0)+212>>2];j=m+64|0;a[j>>0]=0;if(!((f|0)!=0?(a[f>>0]|0)!=0:0))c[e>>2]=134226;if((a[d+4>>0]|0)==1){e=c[d>>2]|0;YO(b,c[(c[b>>2]|0)+336>>2]|0);f=c[e+24>>2]|0;if(!f)UO(b,134232);else UO(b,f);GQ(b,e,m);if(a[j>>0]|0)D_(c[i>>2]|0)}else FQ(b,c[d>>2]|0,m);HQ(b);l=n;return}function DQ(a){a=a|0;var d=0,e=0,f=0;d=NE(a)|0;e=c[d>>2]|0;a=c[e+4>>2]|0;c[d+4>>2]=a;c[d+12>>2]=c[e+12>>2];switch(a|0){case 2:{a=e+8|0;f=6;break}case 0:{a=e+8|0;f=6;break}case 1:{a=e+8|0;f=6;break}case 3:{a=e+8|0;f=6;break}default:{}}if((f|0)==6)c[d+8>>2]=c[a>>2];c[d+208>>2]=c[e+208>>2];c[d+228>>2]=c[e+228>>2];c[d+244>>2]=c[e+244>>2];f=d+260|0;b[f>>1]=b[f>>1]&-2|b[e+260>>1]&1;return}function EQ(b){b=b|0;var d=0.0,e=0,f=0;switch(a[b+4>>0]|0){case 1:{e=c[b>>2]|0;b=e+72|0;e=e+56|0;f=5;break}case 3:{e=c[b>>2]|0;b=e+24|0;e=e+8|0;f=5;break}case 2:{e=c[b>>2]|0;b=e+32|0;e=e+16|0;f=5;break}default:d=0.0}if((f|0)==5)d=+h[b>>3]-+h[e>>3];return +d}function FQ(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0,k=0,m=0,n=0,o=0.0,p=0.0,q=0,r=0,s=0;n=l;l=l+96|0;j=n+64|0;i=n+32|0;g=n+16|0;k=n;m=b[e+4>>1]|0;if(m<<16>>16>=1){r=e+8|0;p=+h[e+24>>3];o=+h[r>>3];h[k>>3]=(o+p)*.5+ +h[f>>3];h[k+8>>3]=(+h[e+16>>3]+ +h[e+32>>3])*.5+ +h[f+8>>3];q=c[e>>2]|0;s=f+16|0;f=a[e+6>>0]|0;c[g>>2]=c[k>>2];c[g+4>>2]=c[k+4>>2];c[g+8>>2]=c[k+8>>2];c[g+12>>2]=c[k+12>>2];c[i>>2]=c[s>>2];c[i+4>>2]=c[s+4>>2];c[i+8>>2]=c[s+8>>2];c[i+12>>2]=c[s+12>>2];c[i+16>>2]=c[s+16>>2];c[i+20>>2]=c[s+20>>2];c[i+24>>2]=c[s+24>>2];c[i+28>>2]=c[s+28>>2];c[j>>2]=c[r>>2];c[j+4>>2]=c[r+4>>2];c[j+8>>2]=c[r+8>>2];c[j+12>>2]=c[r+12>>2];c[j+16>>2]=c[r+16>>2];c[j+20>>2]=c[r+20>>2];c[j+24>>2]=c[r+24>>2];c[j+28>>2]=c[r+28>>2];TQ(d,m<<16>>16,q,g,(p-o)*.5,i,j,f)}l=n;return}function GQ(e,f,g){e=e|0;f=f|0;g=g|0;var i=0,j=0,k=0,m=0.0,n=0.0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;y=l;l=l+176|0;t=y+96|0;v=y+64|0;w=y+136|0;p=y;q=y+128|0;r=f+48|0;c[v>>2]=c[r>>2];c[v+4>>2]=c[r+4>>2];c[v+8>>2]=c[r+8>>2];c[v+12>>2]=c[r+12>>2];c[v+16>>2]=c[r+16>>2];c[v+20>>2]=c[r+20>>2];c[v+24>>2]=c[r+24>>2];c[v+28>>2]=c[r+28>>2];m=+h[g>>3];n=+h[g+8>>3];r=f+84|0;i=c[r>>2]|0;if(!(c[f>>2]|0))x=(c[f+8>>2]|0)!=0;else x=1;u=f+108|0;j=c[u>>2]|0;if(j|0)IQ(g,j,183464);h[v>>3]=+h[v>>3]+m;s=v+16|0;h[s>>3]=+h[s>>3]+m;s=v+8|0;h[s>>3]=+h[s>>3]+n;s=v+24|0;h[s>>3]=+h[s>>3]+n;if(x?(c[e+152>>2]&4|0)==0:0){c[t>>2]=c[v>>2];c[t+4>>2]=c[v+4>>2];c[t+8>>2]=c[v+8>>2];c[t+12>>2]=c[v+12>>2];c[t+16>>2]=c[v+16>>2];c[t+20>>2]=c[v+20>>2];c[t+24>>2]=c[v+24>>2];c[t+28>>2]=c[v+28>>2];s=JQ(e,g,f,t,w)|0}else s=0;o=f+42|0;j=b[o>>1]|0;if(!(j&32)){k=c[f+20>>2]|0;if(k){j=KQ(e,k,c[f+28>>2]|0,j&65535,q)|0;if(!(b[o>>1]&4)){c[t>>2]=c[v>>2];c[t+4>>2]=c[v+4>>2];c[t+8>>2]=c[v+8>>2];c[t+12>>2]=c[v+12>>2];c[t+16>>2]=c[v+16>>2];c[t+20>>2]=c[v+20>>2];c[t+24>>2]=c[v+24>>2];c[t+28>>2]=c[v+28>>2];$O(e,t,j)}else{o=d[f+33>>0]|0;c[t>>2]=c[v>>2];c[t+4>>2]=c[v+4>>2];c[t+8>>2]=c[v+8>>2];c[t+12>>2]=c[v+12>>2];c[t+16>>2]=c[v+16>>2];c[t+20>>2]=c[v+20>>2];c[t+24>>2]=c[v+24>>2];c[t+28>>2]=c[v+28>>2];EJ(e,LQ(p,t,o)|0,4,4,j)}D_(c[q>>2]|0)}while(1){j=c[i>>2]|0;if(!j)break;MQ(e,j,g);i=i+4|0}i=c[r>>2]|0;fP(e,1.0);j=f+24|0;while(1){k=i+4|0;i=c[i>>2]|0;if(!i)break;if(!(a[i+100>>0]|0)){i=k;continue}NQ(e,i,g,c[j>>2]|0,c[k>>2]|0);i=k}if(a[f+33>>0]|0){c[t>>2]=c[v>>2];c[t+4>>2]=c[v+4>>2];c[t+8>>2]=c[v+8>>2];c[t+12>>2]=c[v+12>>2];c[t+16>>2]=c[v+16>>2];c[t+20>>2]=c[v+20>>2];c[t+24>>2]=c[v+24>>2];c[t+28>>2]=c[v+28>>2];OQ(e,f,t)}}if(s|0)PQ(e,w);if((x?c[e+152>>2]&4|0:0)?(c[t>>2]=c[v>>2],c[t+4>>2]=c[v+4>>2],c[t+8>>2]=c[v+8>>2],c[t+12>>2]=c[v+12>>2],c[t+16>>2]=c[v+16>>2],c[t+20>>2]=c[v+20>>2],c[t+24>>2]=c[v+24>>2],c[t+28>>2]=c[v+28>>2],JQ(e,g,f,t,w)|0):0)PQ(e,w);if(c[u>>2]|0)QQ(g,183464);l=y;return}function HQ(a){a=a|0;var b=0;b=c[a+16>>2]|0;c[b+208>>2]=0;c[b+228>>2]=0;c[b+244>>2]=0;c[b+212>>2]=0;OE(a);return}function IQ(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0,g=0,i=0;i=a+16|0;f=c[i>>2]|0;if(f|0){if(!(c[b>>2]|0)){f=0;g=d}else{c[d>>2]=f;f=c[b>>2]|0;g=i}c[g>>2]=f}f=c[a+20>>2]|0;if(f|0){g=b+4|0;if(!(c[g>>2]|0)){f=0;g=d}else{c[d+4>>2]=f;f=c[g>>2]|0;g=i}c[g+4>>2]=f}e=+h[a+32>>3];if(e>=0.0){f=b+16|0;if(!(+h[f>>3]>=0.0))e=-1.0;else{h[d+16>>3]=e;e=+h[f>>3];d=i}h[d+16>>3]=e}return}function JQ(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=l;l=l+224|0;n=u+8|0;k=u;t=u+40|0;j=u+184|0;i=u+56|0;m=c[d+16>>2]|0;o=m+208|0;c[h>>2]=c[o>>2];p=m+228|0;c[h+4>>2]=c[p>>2];q=m+244|0;c[h+8>>2]=c[q>>2];r=m+212|0;c[h+12>>2]=c[r>>2];s=m+260|0;a[h+16>>0]=(b[s>>1]<<15&65535)<<16>>16>>15;h=c[f+16>>2]|0;if((h|0)!=0?(a[h>>0]|0)!=0:0)i=0;else{Tw(t,128,i);i=e+60|0;h=c[i>>2]|0;if(!h){h=n1(QE(d,c[m+8>>2]|0,t)|0)|0;c[i>>2]=h;a[e+64>>0]=1}Ww(t,h)|0;i=c[46604]|0;c[46604]=i+1;c[k>>2]=i;Y0(j,134309,k)|0;Ww(t,j)|0;i=t+4|0;h=c[i>>2]|0;if(h>>>0>=(c[t+8>>2]|0)>>>0){Uw(t,1)|0;h=c[i>>2]|0}a[h>>0]=0;h=c[t>>2]|0;c[i>>2]=h;i=1}h=PE(d,0,c[f>>2]|0,c[f+12>>2]|0,c[f+8>>2]|0,h,c[m+8>>2]|0)|0;if(i)Xw(t);do if(h|0){if((c[o>>2]|0)==0?(b[s>>1]&1)==0:0)break;c[n>>2]=c[g>>2];c[n+4>>2]=c[g+4>>2];c[n+8>>2]=c[g+8>>2];c[n+12>>2]=c[g+12>>2];c[n+16>>2]=c[g+16>>2];c[n+20>>2]=c[g+20>>2];c[n+24>>2]=c[g+24>>2];c[n+28>>2]=c[g+28>>2];XE(d,n);PO(d,c[o>>2]|0,c[p>>2]|0,c[q>>2]|0,c[r>>2]|0)}while(0);l=u;return h|0}function KQ(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var h=0.0,i=0,j=0;j=l;l=l+16|0;i=j;if(!((uG(b,f,i)|0)<<24>>24)){WO(a,b);b=1}else{WO(a,c[f>>2]|0);b=c[f+4>>2]|0;h=+g[i>>2];if(!b)XO(a,134232,d,h);else XO(a,b,d,h);b=e>>>1&1|2}UO(a,134297);l=j;return b|0}function LQ(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0.0,g=0.0,i=0.0,j=0.0;c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];e=a+32|0;b=b+16|0;c[e>>2]=c[b>>2];c[e+4>>2]=c[b+4>>2];c[e+8>>2]=c[b+8>>2];c[e+12>>2]=c[b+12>>2];if((d|0)>1){j=+(d|0)*.5;i=+h[a>>3]+j;h[a>>3]=i;d=a+8|0;g=+h[d>>3]+j;h[d>>3]=g;f=+h[e>>3]-j;h[e>>3]=f;e=a+40|0;j=+h[e>>3]-j;h[e>>3]=j}else{f=+h[e>>3];g=+h[a+8>>3];i=+h[a>>3];j=+h[a+40>>3]}h[a+16>>3]=f;h[a+24>>3]=g;h[a+48>>3]=i;h[a+56>>3]=j;return a|0}function MQ(e,f,g){e=e|0;f=f|0;g=g|0;var i=0,j=0.0,k=0.0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;v=l;l=l+176|0;r=v+96|0;s=v+136|0;t=v+64|0;p=v;q=v+128|0;u=f+48|0;c[t>>2]=c[u>>2];c[t+4>>2]=c[u+4>>2];c[t+8>>2]=c[u+8>>2];c[t+12>>2]=c[u+12>>2];c[t+16>>2]=c[u+16>>2];c[t+20>>2]=c[u+20>>2];c[t+24>>2]=c[u+24>>2];c[t+28>>2]=c[u+28>>2];j=+h[g>>3];k=+h[g+8>>3];if(!(c[f>>2]|0))u=(c[f+8>>2]|0)!=0;else u=1;h[t>>3]=+h[t>>3]+j;o=t+16|0;h[o>>3]=+h[o>>3]+j;o=t+8|0;h[o>>3]=+h[o>>3]+k;o=t+24|0;h[o>>3]=+h[o>>3]+k;if(u?(c[e+152>>2]&4|0)==0:0){c[r>>2]=c[t>>2];c[r+4>>2]=c[t+4>>2];c[r+8>>2]=c[t+8>>2];c[r+12>>2]=c[t+12>>2];c[r+16>>2]=c[t+16>>2];c[r+20>>2]=c[t+20>>2];c[r+24>>2]=c[t+24>>2];c[r+28>>2]=c[t+28>>2];o=JQ(e,g,f,r,s)|0}else o=0;n=f+42|0;i=b[n>>1]|0;a:do if(!(i&32)){m=c[f+20>>2]|0;if(m|0){i=KQ(e,m,c[f+28>>2]|0,i&65535,q)|0;if(!(b[n>>1]&4)){c[r>>2]=c[t>>2];c[r+4>>2]=c[t+4>>2];c[r+8>>2]=c[t+8>>2];c[r+12>>2]=c[t+12>>2];c[r+16>>2]=c[t+16>>2];c[r+20>>2]=c[t+20>>2];c[r+24>>2]=c[t+24>>2];c[r+28>>2]=c[t+28>>2];$O(e,r,i)}else{n=d[f+33>>0]|0;c[r>>2]=c[t>>2];c[r+4>>2]=c[t+4>>2];c[r+8>>2]=c[t+8>>2];c[r+12>>2]=c[t+12>>2];c[r+16>>2]=c[t+16>>2];c[r+20>>2]=c[t+20>>2];c[r+24>>2]=c[t+24>>2];c[r+28>>2]=c[t+28>>2];EJ(e,LQ(p,r,n)|0,4,4,i)}D_(c[q>>2]|0)}if(a[f+33>>0]|0){c[r>>2]=c[t>>2];c[r+4>>2]=c[t+4>>2];c[r+8>>2]=c[t+8>>2];c[r+12>>2]=c[t+12>>2];c[r+16>>2]=c[t+16>>2];c[r+20>>2]=c[t+20>>2];c[r+24>>2]=c[t+24>>2];c[r+28>>2]=c[t+28>>2];OQ(e,f,r)}i=f+88|0;switch(a[f+92>>0]|0){case 1:{GQ(e,c[i>>2]|0,g);break a}case 3:{SQ(e,c[i>>2]|0,g);break a}default:{FQ(e,c[i>>2]|0,g);break a}}}while(0);if(o|0)PQ(e,s);if((u?c[e+152>>2]&4|0:0)?(c[r>>2]=c[t>>2],c[r+4>>2]=c[t+4>>2],c[r+8>>2]=c[t+8>>2],c[r+12>>2]=c[t+12>>2],c[r+16>>2]=c[t+16>>2],c[r+20>>2]=c[t+20>>2],c[r+24>>2]=c[t+24>>2],c[r+28>>2]=c[t+28>>2],JQ(e,g,f,r,s)|0):0)PQ(e,s);l=v;return}function NQ(f,g,i,j,k){f=f|0;g=g|0;i=i|0;j=j|0;k=k|0;var m=0.0,n=0,o=0.0,p=0.0,q=0,r=0.0,s=0.0,t=0.0,u=0.0,v=0,w=0,x=0.0,y=0,z=0,A=0,B=0,C=0;A=l;l=l+32|0;y=A+16|0;z=A;r=+h[i>>3];x=+h[i+8>>3];q=(j|0)==0?134232:j;WO(f,q);UO(f,q);t=+h[g+48>>3];o=+h[g+56>>3];u=+h[g+64>>3];p=+h[g+72>>3];s=t+r;r=u+r;x=o+x;q=g+100|0;i=a[q>>0]|0;if((i&1)!=0?(n=c[g+96>>2]|0,((e[g+80>>1]|0)+(e[g+84>>1]|0)|0)<(c[n+104>>2]|0)):0){i=b[g+86>>1]|0;do if(i<<16>>16)if(((e[g+82>>1]|0)+(i&65535)|0)==(c[n+100>>2]|0)){B=a[n+32>>0]|0;C=(B<<24>>24)/2|0;j=(C<<24>>24)+(d[n+33>>0]|0)|0;i=j;j=j&255;m=x-+(C<<24>>24);n=B;break}else{n=a[n+32>>0]|0;i=0;j=((n<<24>>24)/2|0)<<24>>24;m=x;break}else{C=a[n+32>>0]|0;j=((C<<24>>24)/2|0)<<24>>24;i=j+(d[n+33>>0]|0)|0;m=x;n=C}while(0);h[z+8>>3]=m-+(j|0);h[z>>3]=r+ +(((n<<24>>24)/2|0)<<24>>24);c[y>>2]=c[z>>2];c[y+4>>2]=c[z+4>>2];c[y+8>>2]=c[z+8>>2];c[y+12>>2]=c[z+12>>2];RQ(f,y,0.0,p-o+ +(i&255|0)+ +(n<<24>>24));i=a[q>>0]|0}if(i&2?(v=b[g+86>>1]|0,w=c[g+96>>2]|0,((e[g+82>>1]|0)+(v&65535)|0)<(c[w+100>>2]|0)):0){i=b[g+84>>1]|0;do if(!(i<<16>>16)){i=a[w+32>>0]|0;C=(i<<24>>24)/2|0;n=(C<<24>>24)+(d[w+33>>0]|0)|0;j=n&255;n=n&255;m=+(C<<24>>24);h[z>>3]=s-m-+(n|0);if((c[w+104>>2]|0)==(e[g+80>>1]|0)){j=n<<1&255;break}if((k|0)!=0?(b[k+86>>1]|0)!=v<<16>>16:0)j=~~(+(j&255)-u+ +h[w+64>>3]-m)&255}else{if(((e[g+80>>1]|0)+(i&65535)|0)==(c[w+104>>2]|0)){i=a[w+32>>0]|0;C=(i<<24>>24)/2|0;j=(C&255)+(d[w+33>>0]|0)&255;h[z>>3]=s-+(C<<24>>24);break}i=a[w+32>>0]|0;m=+(((i<<24>>24)/2|0)<<24>>24);h[z>>3]=s-m;if((k|0)!=0?(b[k+86>>1]|0)!=v<<16>>16:0)j=~~(+h[w+64>>3]-u-m)&255;else j=0}while(0);h[z+8>>3]=x-+(((i<<24>>24)/2|0)<<24>>24);c[y>>2]=c[z>>2];c[y+4>>2]=c[z+4>>2];c[y+8>>2]=c[z+8>>2];c[y+12>>2]=c[z+12>>2];RQ(f,y,u-t+ +(j&255)+ +(i<<24>>24),0.0)}l=A;return}function OQ(e,f,g){e=e|0;f=f|0;g=g|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0.0;p=l;l=l+160|0;o=p+112|0;n=p;j=p+144|0;m=c[f+24>>2]|0;UO(e,(m|0)==0?134232:m);m=f+42|0;i=b[m>>1]|0;if(!(i&384))YO(e,c[(c[e>>2]|0)+336>>2]|0);else{c[j+4>>2]=0;c[j>>2]=0;i=i&65535;if(!(i&256)){if(i&128|0){i=134238;k=4}}else{i=134245;k=4}if((k|0)==4)c[j>>2]=i;YO(e,j)}k=f+33|0;fP(e,+(d[k>>0]|0));a:do if(!(b[m>>1]&4)){i=b[f+36>>1]&15360;if(!(i<<16>>16)){i=a[k>>0]|0;if((i&255)>1){q=+(i&255)*.5;h[g>>3]=+h[g>>3]+q;n=g+8|0;h[n>>3]=+h[n>>3]+q;n=g+16|0;h[n>>3]=+h[n>>3]-q;n=g+24|0;h[n>>3]=+h[n>>3]-q};c[o>>2]=c[g>>2];c[o+4>>2]=c[g+4>>2];c[o+8>>2]=c[g+8>>2];c[o+12>>2]=c[g+12>>2];c[o+16>>2]=c[g+16>>2];c[o+20>>2]=c[g+20>>2];c[o+24>>2]=c[g+24>>2];c[o+28>>2]=c[g+28>>2];$O(e,o,0);break}j=n+16|0;m=d[k>>0]|0;c[o>>2]=c[g>>2];c[o+4>>2]=c[g+4>>2];c[o+8>>2]=c[g+8>>2];c[o+12>>2]=c[g+12>>2];c[o+16>>2]=c[g+16>>2];c[o+20>>2]=c[g+20>>2];c[o+24>>2]=c[g+24>>2];c[o+28>>2]=c[g+28>>2];LQ(j,o,m)|0;do switch(((i&65535)+-1024|0)>>>10&4194303|0){case 7:{bP(e,j,2);break a}case 3:{bP(e,n+32|0,2);break a}case 1:{bP(e,n+48|0,2);break a}case 0:{g=n+64|0;c[n>>2]=c[g>>2];c[n+4>>2]=c[g+4>>2];c[n+8>>2]=c[g+8>>2];c[n+12>>2]=c[g+12>>2];bP(e,n,2);break a}case 11:{bP(e,j,3);break a}case 5:{bP(e,n+32|0,3);break a}case 2:{g=n+80|0;c[g>>2]=c[j>>2];c[g+4>>2]=c[j+4>>2];c[g+8>>2]=c[j+8>>2];c[g+12>>2]=c[j+12>>2];bP(e,n+48|0,3);break a}case 8:{g=n+64|0;c[n>>2]=c[g>>2];c[n+4>>2]=c[g+4>>2];c[n+8>>2]=c[g+8>>2];c[n+12>>2]=c[g+12>>2];bP(e,n,3);break a}case 13:{bP(e,j,4);break a}case 6:{g=n+80|0;c[g>>2]=c[j>>2];c[g+4>>2]=c[j+4>>2];c[g+8>>2]=c[j+8>>2];c[g+12>>2]=c[j+12>>2];bP(e,n+32|0,4);break a}case 10:{g=n+80|0;c[g>>2]=c[j>>2];c[g+4>>2]=c[j+4>>2];c[g+8>>2]=c[j+8>>2];c[g+12>>2]=c[j+12>>2];g=n+96|0;o=n+32|0;c[g>>2]=c[o>>2];c[g+4>>2]=c[o+4>>2];c[g+8>>2]=c[o+8>>2];c[g+12>>2]=c[o+12>>2];bP(e,n+48|0,4);break a}case 12:{g=n+64|0;c[n>>2]=c[g>>2];c[n+4>>2]=c[g+4>>2];c[n+8>>2]=c[g+8>>2];c[n+12>>2]=c[g+12>>2];bP(e,n,4);break a}case 9:{bP(e,j,2);bP(e,n+48|0,2);break a}case 4:{g=n+64|0;c[n>>2]=c[g>>2];c[n+4>>2]=c[g+4>>2];c[n+8>>2]=c[g+8>>2];c[n+12>>2]=c[g+12>>2];bP(e,n,2);bP(e,n+32|0,2);break a}default:break a}while(0)}else{m=d[k>>0]|0;c[o>>2]=c[g>>2];c[o+4>>2]=c[g+4>>2];c[o+8>>2]=c[g+8>>2];c[o+12>>2]=c[g+12>>2];c[o+16>>2]=c[g+16>>2];c[o+20>>2]=c[g+20>>2];c[o+24>>2]=c[g+24>>2];c[o+28>>2]=c[g+28>>2];EJ(e,LQ(n,o,m)|0,4,4,0)}while(0);l=p;return}function PQ(d,e){d=d|0;e=e|0;var f=0,g=0,h=0;h=c[d+16>>2]|0;f=h+208|0;if((c[f>>2]|0)==0?(b[h+260>>1]&1)==0:0)d=0;else{QO(d);d=c[f>>2]|0}if((d|0)!=(c[e>>2]|0)){D_(d);c[f>>2]=c[e>>2]}d=h+228|0;f=c[d>>2]|0;g=e+4|0;if((f|0)!=(c[g>>2]|0)){D_(f);c[d>>2]=c[g>>2]}d=h+244|0;f=c[d>>2]|0;g=e+8|0;if((f|0)!=(c[g>>2]|0)){D_(f);c[d>>2]=c[g>>2]}d=h+212|0;f=c[d>>2]|0;g=e+12|0;if((f|0)!=(c[g>>2]|0)){D_(f);c[d>>2]=c[g>>2]}h=h+260|0;b[h>>1]=b[h>>1]&-2|a[e+16>>0]&1;return}function QQ(a,b){a=a|0;b=b|0;var d=0.0,e=0;e=c[b>>2]|0;if(e|0)c[a+16>>2]=e;e=c[b+4>>2]|0;if(e|0)c[a+20>>2]=e;d=+h[b+16>>3];if(d>=0.0)h[a+32>>3]=d;return}function RQ(a,b,d,e){a=a|0;b=b|0;d=+d;e=+e;var f=0,g=0,i=0;f=l;l=l+64|0;g=f+32|0;i=f;c[i>>2]=c[b>>2];c[i+4>>2]=c[b+4>>2];c[i+8>>2]=c[b+8>>2];c[i+12>>2]=c[b+12>>2];h[i+16>>3]=+h[b>>3]+d;h[i+24>>3]=+h[b+8>>3]+e;c[g>>2]=c[i>>2];c[g+4>>2]=c[i+4>>2];c[g+8>>2]=c[i+8>>2];c[g+12>>2]=c[i+12>>2];c[g+16>>2]=c[i+16>>2];c[g+20>>2]=c[i+20>>2];c[g+24>>2]=c[i+24>>2];c[g+28>>2]=c[i+28>>2];$O(a,g,1);l=f;return}function SQ(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0.0,k=0.0,m=0.0,n=0.0;i=l;l=l+64|0;g=i;k=+h[e>>3];n=k+ +h[d>>3];m=+h[e+8>>3];j=m+ +h[d+8>>3];k=k+ +h[d+16>>3];m=m+ +h[d+24>>3];h[g>>3]=k;h[g+8>>3]=m;h[g+32>>3]=n;h[g+40>>3]=j;h[g+16>>3]=n;h[g+24>>3]=m;h[g+48>>3]=k;h[g+56>>3]=j;f=c[d+36>>2]|0;if(!f)f=c[e+56>>2]|0;e=c[d+32>>2]|0;if(!e)qa(134252,134260,623,134272);if(!(a[e>>0]|0))qa(134286,134260,624,134272);else{dP(b,e,g,4,1,f);l=i;return}}function TQ(d,e,f,g,i,j,k,m){d=d|0;e=e|0;f=f|0;g=g|0;i=+i;j=j|0;k=k|0;m=m|0;var n=0.0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0.0,J=0,K=0,L=0,M=0.0,N=0.0,O=0,P=0,Q=0,R=0;R=l;l=l+128|0;K=R+104|0;O=R+48|0;P=R+16|0;L=R;J=L;c[J>>2]=0;c[J+4>>2]=0;M=+h[g>>3];N=M-i;I=M+i;J=L+8|0;h[J>>3]=(+h[k+24>>3]-+h[k+8>>3])*.5+ +h[g+8>>3];RO(d,1);D=P+16|0;E=P+4|0;F=P+24|0;G=O+4|0;H=O+16|0;s=(m|0)==0;t=O+24|0;u=O+8|0;v=O+32|0;w=O+40|0;x=O+48|0;y=j+16|0;z=j+4|0;A=P+8|0;q=0;while(1){if((q|0)>=(e|0))break;switch(a[f+(q*24|0)+6>>0]|0){case 108:{i=N;break}case 114:{i=I-+h[f+(q*24|0)+8>>3];break}default:i=M-+h[f+(q*24|0)+8>>3]*.5}h[g>>3]=i;B=f+(q*24|0)+16|0;h[J>>3]=+h[J>>3]-+h[B>>3];C=f+(q*24|0)+4|0;p=c[f+(q*24|0)>>2]|0;r=0;while(1){if((r|0)>=(b[C>>1]|0))break;o=p+4|0;m=c[o>>2]|0;if(m){h[D>>3]=+h[(+h[m+16>>3]>0.0?m:j)+16>>3];c[P>>2]=c[((c[m>>2]|0)==0?j:m)>>2];k=c[((c[m+4>>2]|0)==0?j:m)+4>>2]|0;c[E>>2]=k;m=c[m+24>>2]&127;if(!m)Q=12;else m=c[F>>2]&-128|m}else{h[D>>3]=+h[y>>3];c[P>>2]=c[j>>2];k=c[z>>2]|0;c[E>>2]=k;Q=12}if((Q|0)==12){Q=0;m=c[F>>2]&-128}c[F>>2]=m;UO(d,k);c[O>>2]=c[p>>2];c[G>>2]=P;h[H>>3]=+h[p+16>>3];if(s)n=1.0;else n=+h[p+24>>3];h[t>>3]=n;c[A>>2]=c[(c[o>>2]|0)+8>>2];c[u>>2]=c[p+8>>2];o=p+32|0;h[v>>3]=+h[o>>3];h[w>>3]=+h[B>>3];a[x>>0]=108;h[L>>3]=i;c[K>>2]=c[L>>2];c[K+4>>2]=c[L+4>>2];c[K+8>>2]=c[L+8>>2];c[K+12>>2]=c[L+12>>2];TO(d,K,O);n=+h[o>>3]+i;h[g>>3]=n;p=p+56|0;r=r+1|0;i=n}q=q+1|0}SO(d);l=R;return}function UQ(a){a=a|0;D_(c[a>>2]|0);D_(c[a+4>>2]|0);D_(c[a+8>>2]|0);D_(c[a+16>>2]|0);D_(c[a+12>>2]|0);D_(c[a+20>>2]|0);D_(c[a+24>>2]|0);return}function VQ(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;if(a|0){j=a+4|0;e=0;g=c[a>>2]|0;while(1){if((e|0)>=(b[j>>1]|0))break;k=g+4|0;d=0;f=c[g>>2]|0;while(1){if((d|0)>=(b[k>>1]|0))break;D_(c[f>>2]|0);h=c[f+8>>2]|0;if(h|0?(i=c[f+12>>2]|0,i|0):0)tb[i&127](h);d=d+1|0;f=f+56|0}e=e+1|0;g=g+24|0}d=c[a>>2]|0;if(d|0)D_(d);D_(a)}return}function WQ(a){a=a|0;D_(c[a+32>>2]|0);D_(a);return}function XQ(b,d){b=b|0;d=d|0;switch(a[b+4>>0]|0){case 1:{YQ(c[b>>2]|0);break}case 3:{WQ(c[b>>2]|0);break}default:VQ(c[b>>2]|0)}if(d|0)D_(b);return}function YQ(a){a=a|0;var b=0,d=0,e=0;e=a+84|0;if((c[a+100>>2]|0)==-1)yw(c[e>>2]|0)|0;else{b=c[e>>2]|0;D_(c[a+92>>2]|0);D_(c[a+96>>2]|0);while(1){d=c[b>>2]|0;if(!d)break;ZQ(d);b=b+4|0}D_(c[e>>2]|0)}UQ(a);D_(a);return}function ZQ(a){a=a|0;XQ(a+88|0,0);UQ(a);D_(a);return}function _Q(b,e,f){b=b|0;e=e|0;f=f|0;var g=0;b=c[(c[(c[b+16>>2]|0)+104>>2]|0)+72>>2]|0;if((a[b+4>>0]|0)!=2?(g=$Q(c[b>>2]|0,e)|0,(g|0)!=0):0){c[f>>2]=d[g+35>>0];b=g+48|0}else b=0;return b|0}function $Q(a,b){a=a|0;b=b|0;var d=0,e=0;d=c[a+4>>2]|0;if(!((d|0)!=0?(O$(d,b)|0)==0:0))e=3;a:do if((e|0)==3){d=c[a+84>>2]|0;while(1){a=c[d>>2]|0;if(!a){a=0;break a}a=aR(a,b)|0;if(!a)d=d+4|0;else break}}while(0);return a|0}function aR(b,d){b=b|0;d=d|0;var e=0;e=c[b+4>>2]|0;if(!((e|0)!=0?(O$(e,d)|0)==0:0))if((a[b+92>>0]|0)==1)b=$Q(c[b+88>>2]|0,d)|0;else b=0;return b|0}function bR(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return 0}function cR(d){d=d|0;var f=0.0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;p=d+92|0;c[p>>2]=uH((c[d+100>>2]<<2)+4|0)|0;n=uH((c[d+104>>2]<<2)+4|0)|0;c[d+96>>2]=n;o=d+32|0;m=c[d+84>>2]|0;while(1){l=c[m>>2]|0;if(!l)break;d=b[l+82>>1]|0;f=+h[l+72>>3];if(d<<16>>16==1)i=~~f;else{i=~~((f-+(O((a[o>>0]|0)+-1|0,(d&65535)+-1|0)|0))/+(d&65535));i=(i|0)>1?i:1}j=b[l+80>>1]|0;f=+h[l+64>>3];if(j<<16>>16==1)k=~~f;else{k=~~((f-+(O((a[o>>0]|0)+-1|0,(j&65535)+-1|0)|0))/+(j&65535));k=(k|0)>1?k:1}q=e[l+86>>1]|0;g=(d&65535)+q|0;d=q;while(1){if((d|0)>=(g|0))break;q=(c[p>>2]|0)+(d<<2)|0;r=c[q>>2]|0;c[q>>2]=(r|0)>(i|0)?r:i;d=d+1|0}d=e[l+84>>1]|0;g=(j&65535)+d|0;while(1){if((d|0)>=(g|0))break;r=n+(d<<2)|0;q=c[r>>2]|0;c[r>>2]=(q|0)>(k|0)?q:k;d=d+1|0}m=m+4|0}return}function dR(a){a=a|0;var b=0,d=0;d=l;l=l+16|0;b=d;if(a>>>0<21)a=c[55736+(a<<2)>>2]|0;else{c[b>>2]=a;Y0(191879,134313,b)|0;a=191879}l=d;return a|0}function eR(a,b,d){a=a|0;b=b|0;d=d|0;var f=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;k=a+104|0;l=a+100|0;j=d+16|0;f=0;g=0;while(1){if((f|0)>(c[k>>2]|0))break;i=az(d,dR(f)|0,1)|0;Az(i,134365,304,1)|0;m=i+16|0;c[(c[m>>2]|0)+176>>2]=0;o=uH((c[l>>2]<<2)+4|0)|0;n=c[m>>2]|0;c[n+172>>2]=o;c[n+184>>2]=0;n=uH((c[l>>2]<<2)+4|0)|0;c[(c[m>>2]|0)+180>>2]=n;if(!g)c[(c[j>>2]|0)+192>>2]=i;else c[(c[g+16>>2]|0)+164>>2]=i;f=f+1|0;g=i}j=b+16|0;f=0;g=0;while(1){if((f|0)>(c[l>>2]|0))break;i=az(b,dR(f)|0,1)|0;Az(i,134365,304,1)|0;o=i+16|0;c[(c[o>>2]|0)+176>>2]=0;m=uH((c[k>>2]<<2)+4|0)|0;n=c[o>>2]|0;c[n+172>>2]=m;c[n+184>>2]=0;n=uH((c[k>>2]<<2)+4|0)|0;c[(c[o>>2]|0)+180>>2]=n;if(!g)c[(c[j>>2]|0)+192>>2]=i;else c[(c[g+16>>2]|0)+164>>2]=i;f=f+1|0;g=i}f=c[a+84>>2]|0;while(1){g=c[f>>2]|0;if(!g)break;o=g+84|0;n=az(d,dR(e[o>>1]|0)|0,0)|0;o=az(d,dR((e[g+80>>1]|0)+(e[o>>1]|0)|0)|0,0)|0;fR(d,n,o,~~+h[g+64>>3]);o=g+86|0;n=az(b,dR(e[o>>1]|0)|0,0)|0;o=az(b,dR((e[g+82>>1]|0)+(e[o>>1]|0)|0)|0,0)|0;fR(b,n,o,~~+h[g+72>>3]);f=f+4|0}gR(d);gR(b);return}function fR(a,d,f,g){a=a|0;d=d|0;f=f|0;g=g|0;var h=0,i=0;h=Rx(a,d,f,0,0)|0;if(!h){i=Rx(a,d,f,0,1)|0;Az(i,134378,176,1)|0;b[(c[i+16>>2]|0)+170>>1]=g;d=d+16|0;a=c[d>>2]|0;h=c[a+180>>2]|0;if(!h)a=vH((c[a+184>>2]<<2)+8|0)|0;else a=xH(h,(c[a+184>>2]<<2)+8|0)|0;g=c[d>>2]|0;c[g+180>>2]=a;g=g+184|0;h=c[g>>2]|0;c[g>>2]=h+1;c[a+(h<<2)>>2]=i;d=c[d>>2]|0;c[(c[d+180>>2]|0)+(c[d+184>>2]<<2)>>2]=0;d=f+16|0;a=c[d>>2]|0;h=c[a+172>>2]|0;if(!h)a=vH((c[a+176>>2]<<2)+8|0)|0;else a=xH(h,(c[a+176>>2]<<2)+8|0)|0;g=c[d>>2]|0;c[g+172>>2]=a;g=g+176|0;f=c[g>>2]|0;c[g>>2]=f+1;c[a+(f<<2)>>2]=i;i=c[d>>2]|0;c[(c[i+172>>2]|0)+(c[i+176>>2]<<2)>>2]=0}else{i=(c[h+16>>2]|0)+170|0;f=e[i>>1]|0;b[i>>1]=(f|0)>(g|0)?f:g}return}function gR(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,i=0;d=c[(c[a+16>>2]|0)+192>>2]|0;while(1){f=d+16|0;h=c[(c[f>>2]|0)+164>>2]|0;if(!h)break;if(Rx(a,d,h,0,0)|0){d=h;continue}g=Rx(a,d,h,0,1)|0;Az(g,134378,176,1)|0;b[(c[g+16>>2]|0)+170>>1]=0;d=c[f>>2]|0;e=c[d+180>>2]|0;if(!e)d=vH((c[d+184>>2]<<2)+8|0)|0;else d=xH(e,(c[d+184>>2]<<2)+8|0)|0;i=c[f>>2]|0;c[i+180>>2]=d;i=i+184|0;e=c[i>>2]|0;c[i>>2]=e+1;c[d+(e<<2)>>2]=g;f=c[f>>2]|0;c[(c[f+180>>2]|0)+(c[f+184>>2]<<2)>>2]=0;f=h+16|0;d=c[f>>2]|0;e=c[d+172>>2]|0;if(!e)d=vH((c[d+176>>2]<<2)+8|0)|0;else d=xH(e,(c[d+176>>2]<<2)+8|0)|0;e=c[f>>2]|0;c[e+172>>2]=d;e=e+176|0;i=c[e>>2]|0;c[e>>2]=i+1;c[d+(i<<2)>>2]=g;d=c[f>>2]|0;c[(c[d+172>>2]|0)+(c[d+176>>2]<<2)>>2]=0;d=h}return}function hR(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=a+92|0;e=0;f=0;b=c[(c[(c[b+16>>2]|0)+192>>2]|0)+16>>2]|0;while(1){b=c[b+164>>2]|0;if(!b)break;b=c[b+16>>2]|0;h=b+232|0;c[(c[g>>2]|0)+(f<<2)>>2]=(c[h>>2]|0)-e;e=c[h>>2]|0;f=f+1|0}a=a+96|0;e=0;f=0;b=c[(c[(c[d+16>>2]|0)+192>>2]|0)+16>>2]|0;while(1){b=c[b+164>>2]|0;if(!b)break;b=c[b+16>>2]|0;h=b+232|0;c[(c[a>>2]|0)+(f<<2)>>2]=(c[h>>2]|0)-e;e=c[h>>2]|0;f=f+1|0}return}function iR(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;h=l;l=l+16|0;g=h+4|0;d=h;c[d>>2]=c[4621];e=c[b+100>>2]|0;if((e|0)!=1?(f=b+104|0,(c[f>>2]|0)!=1):0){c[b+92>>2]=uH((e<<2)+4|0)|0;c[b+96>>2]=uH((c[f>>2]<<2)+4|0)|0;a[g>>0]=a[d>>0]|0;a[g+1>>0]=a[d+1>>0]|0;a[g+2>>0]=a[d+2>>0]|0;a[g+3>>0]=a[d+3>>0]|0;f=Xx(134391,g,0)|0;a[g>>0]=a[d>>0]|0;a[g+1>>0]=a[d+1>>0]|0;a[g+2>>0]=a[d+2>>0]|0;a[g+3>>0]=a[d+3>>0]|0;g=Xx(134396,g,0)|0;Az(f,134401,280,1)|0;Az(g,134401,280,1)|0;eR(b,f,g);fI(f,2,2147483647)|0;fI(g,2,2147483647)|0;hR(b,f,g);jR(f,g)}else cR(b);l=h;return}function jR(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=(c[b+16>>2]|0)+192|0;while(1){d=c[d>>2]|0;if(!d)break;f=d+16|0;d=c[f>>2]|0;e=c[d+172>>2]|0;if(e){D_(e);d=c[f>>2]|0}e=c[d+180>>2]|0;if(e){D_(e);d=c[f>>2]|0}d=d+164|0}$x(a)|0;$x(b)|0;return}function kR(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0.0,r=0.0;p=l;l=l+272|0;n=p+104|0;o=p+136|0;j=p+72|0;k=p;g=p+144|0;c[k+48>>2]=b;switch(pz(b)|0){case 0:{e=c[b+60>>2]|0;break}case 1:{e=ez(b)|0;break}case 2:{e=ez(c[((c[b>>2]&3|0)==2?b:b+-48|0)+40>>2]|0)|0;break}default:{}}i=k+52|0;c[i>>2]=e;m=c[e+60>>2]|0;h[k+32>>3]=+h[d+16>>3];c[k+16>>2]=c[d+4>>2];c[k+20>>2]=c[d+8>>2];c[k+40>>2]=0;f=uT(c[d>>2]|0,o,k)|0;if(!f){Tw(n,128,g);a[d+82>>0]=0;e=n1(lR(b,n)|0)|0;c[d>>2]=e;if((c[d+12>>2]|0)==1)e=RM(e)|0;else e=OM(e,c[i>>2]|0)|0;D_(c[d>>2]|0);c[d>>2]=e;iH(c[(c[m+16>>2]|0)+144>>2]|0,d);Xw(n);e=c[o>>2]|0}else{e=f+4|0;if((a[e>>0]|0)==1){if((c[(c[f>>2]|0)+24>>2]|0)==0?mR(b)|0:0){i=n1(mR(b)|0)|0;c[(c[f>>2]|0)+24>>2]=i}m=nR(m,c[f>>2]|0,0,k)|0;c[o>>2]=c[o>>2]|m;m=c[f>>2]|0;r=+h[m+64>>3]*.5;q=+h[m+72>>3]*.5;oR(j,-r,-q,r,q);m=c[f>>2]|0;c[n>>2]=c[j>>2];c[n+4>>2]=c[j+4>>2];c[n+8>>2]=c[j+8>>2];c[n+12>>2]=c[j+12>>2];c[n+16>>2]=c[j+16>>2];c[n+20>>2]=c[j+20>>2];c[n+24>>2]=c[j+24>>2];c[n+28>>2]=c[j+28>>2];pR(m,n,15)}else{qR(c[(c[m+16>>2]|0)+144>>2]|0,c[f>>2]|0,k);n=c[f>>2]|0;q=+h[n+24>>3]*.5;r=+h[n+32>>3]*.5;oR(j,-q,-r,q,r);n=(c[f>>2]|0)+8|0;c[n>>2]=c[j>>2];c[n+4>>2]=c[j+4>>2];c[n+8>>2]=c[j+8>>2];c[n+12>>2]=c[j+12>>2];c[n+16>>2]=c[j+16>>2];c[n+20>>2]=c[j+20>>2];c[n+24>>2]=c[j+24>>2];c[n+28>>2]=c[j+28>>2]}h[d+24>>3]=+h[j+16>>3]-+h[j>>3];h[d+32>>3]=+h[j+24>>3]-+h[j+8>>3];c[d+72>>2]=f;if((a[e>>0]|0)==1){D_(c[d>>2]|0);c[d>>2]=n1(138529)|0}e=c[o>>2]|0}l=p;return e|0}function lR(b,d){b=b|0;d=d|0;var e=0;a:do switch(pz(b)|0){case 0:{Ww(d,ry(b)|0)|0;break}case 1:{Ww(d,ry(b)|0)|0;break}case 2:{Ww(d,ry(c[((c[b>>2]&3|0)==3?b:b+48|0)+40>>2]|0)|0)|0;e=b+-48|0;Ww(d,ry(c[((c[b>>2]&3|0)==2?b:e)+40>>2]|0)|0)|0;if(!(ey(ez(c[((c[b>>2]&3|0)==2?b:e)+40>>2]|0)|0)|0)){Ww(d,138665)|0;break a}else{Ww(d,134656)|0;break a}}default:{}}while(0);e=d+4|0;b=c[e>>2]|0;if(b>>>0>=(c[d+8>>2]|0)>>>0){Uw(d,1)|0;b=c[e>>2]|0}a[b>>0]=0;d=c[d>>2]|0;c[e>>2]=d;return d|0}function mR(b){b=b|0;var c=0,d=0;c=xx(b,134647)|0;if(!((c|0)!=0?(a[c>>0]|0)!=0:0))d=3;do if((d|0)==3){c=xx(b,137741)|0;if(c|0?a[c>>0]|0:0)break;c=0}while(0);return c|0}function nR(f,g,i,j){f=f|0;g=g|0;i=i|0;j=j|0;var k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;w=l;l=l+16|0;u=w+8|0;t=w;v=g+108|0;k=c[v>>2]|0;if(k|0)IQ(j,k,183496);c[g+80>>2]=i;k=uR(f,g,j)|0;r=g+36|0;f=b[r>>1]|0;if(!(f&128))a[g+32>>0]=2;i=g+33|0;if(!(f&32))a[i>>0]=1;iR(g);n=c[g+104>>2]|0;p=a[g+32>>0]|0;f=O(n+1|0,p)|0;o=d[i>>0]<<1;q=c[g+100>>2]|0;p=O(q+1|0,p)|0;m=g+96|0;f=o+f|0;i=0;while(1){if((i|0)>=(n|0))break;f=(c[(c[m>>2]|0)+(i<<2)>>2]|0)+f|0;i=i+1|0}n=g+92|0;i=p+o|0;m=0;while(1){if((m|0)>=(q|0))break;i=(c[(c[n>>2]|0)+(m<<2)>>2]|0)+i|0;m=m+1|0}n=g+38|0;do if(b[r>>1]&1){r=b[n>>1]|0;m=r&65535;if(r<<16>>16?(s=b[g+40>>1]|0,s<<16>>16):0){if(!((f|0)>(m|0)|(i|0)>(s&65535|0))){i=0;f=0;break}Pw(0,134447,t)|0;k=1;i=0;f=0;break}Pw(0,134481,u)|0;k=1}while(0);u=e[n>>1]|0;h[g+64>>3]=+(((f|0)>(u|0)?f:u)|0);u=e[g+40>>1]|0;h[g+72>>3]=+(((i|0)>(u|0)?i:u)|0);if(c[v>>2]|0)QQ(j,183496);l=w;return k|0}function oR(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=+e;h[a>>3]=b;h[a+8>>3]=c;h[a+16>>3]=d;h[a+24>>3]=e;return}function pR(e,f,g){e=e|0;f=f|0;g=g|0;var i=0,j=0,k=0,m=0.0,n=0.0,o=0,p=0,q=0.0,r=0.0,s=0,t=0,u=0,v=0,w=0,x=0,y=0.0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0.0,K=0;I=l;l=l+64|0;G=I+32|0;H=I;E=c[e+84>>2]|0;k=c[e+80>>2]|0;if((k|0?(i=c[k+24>>2]|0,i|0):0)?(j=e+24|0,(c[j>>2]|0)==0):0)c[j>>2]=n1(i)|0;F=e+48|0;i=f+16|0;n=+h[i>>3];m=+h[f>>3];k=~~(n-m-+(~~+h[e+64>>3]|0));if((k|0)<=-1)qa(134414,134260,1761,134424);o=f+24|0;y=+h[o>>3];p=f+8|0;q=+h[p>>3];r=+(~~+h[e+72>>3]|0);s=~~(y-q-r);if((s|0)<=-1)qa(134437,134260,1764,134424);t=b[e+36>>1]|0;j=t&65535;a:do if(j&1){b:do if((k|0)>0)switch(j&6){case 4:{h[i>>3]=m+r;break b}case 2:{J=+(k|0);h[i>>3]=n+J;m=m+J;h[f>>3]=m;break b}default:{J=+(k>>>1|0);m=m+J;h[f>>3]=m;h[i>>3]=n-J;break b}}while(0);if((s|0)>0)switch(t&24){case 16:{y=q+r;h[o>>3]=y;s=0;i=0;break a}case 8:{J=+(s|0);y=y+J;h[o>>3]=y;h[p>>3]=q+J;s=0;i=0;break a}default:{J=+(s>>>1|0);h[p>>3]=q+J;y=y-J;h[o>>3]=y;s=0;i=0;break a}}else{s=0;i=0}}else i=k;while(0);n=+(d[e+33>>0]|0);C=e+32|0;u=a[C>>0]|0;q=+(u<<24>>24);D=e+104|0;k=c[D>>2]|0;t=(i|0)/(k|0)|0;o=i-(O(t,k)|0)|0;o=~~(((o|0)>-1?.5:-.5)+ +(o|0));B=e+96|0;p=u<<24>>24;i=~~(m+n+q);j=0;while(1){if((j|0)>(k|0))break;A=(c[B>>2]|0)+(j<<2)|0;k=c[A>>2]|0;c[A>>2]=i;i=i+t+((j|0)<(o|0)&1)+k+p|0;j=j+1|0;k=c[D>>2]|0}A=e+100|0;k=c[A>>2]|0;t=(s|0)/(k|0)|0;p=s-(O(t,k)|0)|0;p=~~(((p|0)>-1?.5:-.5)+ +(p|0));z=e+92|0;o=u<<24>>24;i=~~(y-n-q);j=0;while(1){if((j|0)>(k|0))break;x=(c[z>>2]|0)+(j<<2)|0;k=c[x>>2]|0;c[x>>2]=i;i=i-t+(((j|0)<(p|0))<<31>>31)-k-o|0;j=j+1|0;k=c[A>>2]|0}u=(g|0)==0;v=H+16|0;w=H+24|0;x=H+8|0;i=E;while(1){o=c[i>>2]|0;if(!o)break;k=b[o+84>>1]|0;if(u){j=0;p=b[o+80>>1]|0;s=b[o+86>>1]|0;t=b[o+82>>1]|0}else{j=k<<16>>16==0?8:0;s=b[o+86>>1]|0;j=s<<16>>16==0?j|4:j;p=b[o+80>>1]|0;t=b[o+82>>1]|0;j=(((p&65535)+(k&65535)|0)==(c[D>>2]|0)?j|2:j)|((t&65535)+(s&65535)|0)==(c[A>>2]|0)}K=c[B>>2]|0;k=k&65535;h[H>>3]=+(c[K+(k<<2)>>2]|0);E=a[C>>0]|0;h[v>>3]=+((c[K+((p&65535)+k<<2)>>2]|0)-E|0);p=c[z>>2]|0;h[w>>3]=+(c[p+((s&65535)<<2)>>2]|0);h[x>>3]=+((c[p+((t&65535)+(s&65535)<<2)>>2]|0)+E|0);c[G>>2]=c[H>>2];c[G+4>>2]=c[H+4>>2];c[G+8>>2]=c[H+8>>2];c[G+12>>2]=c[H+12>>2];c[G+16>>2]=c[H+16>>2];c[G+20>>2]=c[H+20>>2];c[G+24>>2]=c[H+24>>2];c[G+28>>2]=c[H+28>>2];rR(o,G,j&g);i=i+4|0}a[e+35>>0]=g;c[F>>2]=c[f>>2];c[F+4>>2]=c[f+4>>2];c[F+8>>2]=c[f+8>>2];c[F+12>>2]=c[f+12>>2];c[F+16>>2]=c[f+16>>2];c[F+20>>2]=c[f+20>>2];c[F+24>>2]=c[f+24>>2];c[F+28>>2]=c[f+28>>2];l=I;return}function qR(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0.0,k=0.0,m=0,n=0,o=0.0,p=0.0,q=0.0,r=0,s=0.0,t=0.0,u=0.0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0.0,Q=0.0,R=0.0;O=l;l=l+112|0;H=O+48|0;I=O+16|0;J=O;c[I>>2]=0;c[I+4>>2]=0;c[I+8>>2]=0;c[I+12>>2]=0;c[I+16>>2]=0;c[I+20>>2]=0;c[I+24>>2]=0;c[I+28>>2]=0;K=e+4|0;L=f+16|0;M=f+32|0;N=I+16|0;r=b[K>>1]|0;n=r<<16>>16;g=0;j=-1.0;m=0;while(1){if((m|0)>=(n|0)){g=1;break}i=c[e>>2]|0;if((b[i+(m*24|0)+4>>1]|0)>1){g=0;break}i=c[(c[i+(m*24|0)>>2]|0)+4>>2]|0;if(!i){k=+h[M>>3];h[N>>3]=k;i=L}else{if(c[i+24>>2]&127|0){g=0;break}k=+h[(+h[i+16>>3]>0.0?i:L)+16>>3];h[N>>3]=k;i=(c[i>>2]|0)==0?L:i}i=c[i>>2]|0;c[I>>2]=i;if(!(j==-1.0)){if(k!=j){g=0;break}}else j=k;if(g){if(b$(i,g)|0){g=0;break}}else g=i;m=m+1|0}a[e+6>>0]=g;E=f+48|0;F=f+20|0;G=I+4|0;w=f+40|0;x=I+24|0;y=d+144|0;z=H+4|0;v=J+8|0;A=H+16|0;B=H+24|0;C=H+8|0;D=H+12|0;f=(g|0)==0;j=0.0;s=0.0;t=0.0;u=0.0;n=0;g=r;while(1){if((n|0)>=(g<<16>>16|0))break;k=0.0;q=0.0;m=0;p=0.0;j=0.0;i=c[e>>2]|0;while(1){if((m|0)>=(b[i+(n*24|0)+4>>1]|0))break;c[H>>2]=pH(c[(c[i+(n*24|0)>>2]|0)+(m*56|0)>>2]|0,c[E>>2]|0)|0;i=(c[e>>2]|0)+(n*24|0)|0;g=c[(c[i>>2]|0)+(m*56|0)+4>>2]|0;if(!g){h[N>>3]=+h[M>>3];c[I>>2]=c[L>>2];c[G>>2]=c[F>>2];c[x>>2]=c[x>>2]&-128|c[w>>2]&127}else{g=c[g+24>>2]&127;if(!g)g=c[w>>2]&127;c[x>>2]=c[x>>2]&-128|g;r=c[(c[i>>2]|0)+(m*56|0)+4>>2]|0;h[N>>3]=+h[(+h[r+16>>3]>0.0?r:L)+16>>3];c[I>>2]=c[((c[r>>2]|0)==0?L:r)>>2];c[G>>2]=c[((c[r+4>>2]|0)==0?L:r)+4>>2]}i=c[y>>2]|0;c[z>>2]=nb[c[i>>2]&63](i,I,1)|0;wL(J,d,H);Q=+h[J>>3];o=+h[v>>3];D_(c[(c[(c[e>>2]|0)+(n*24|0)>>2]|0)+(m*56|0)>>2]|0);i=c[e>>2]|0;r=c[i+(n*24|0)>>2]|0;c[r+(m*56|0)>>2]=c[H>>2];h[r+(m*56|0)+32>>3]=Q;h[r+(m*56|0)+16>>3]=+h[A>>3];h[r+(m*56|0)+24>>3]=+h[B>>3];c[r+(m*56|0)+4>>2]=c[z>>2];c[r+(m*56|0)+8>>2]=c[C>>2];c[r+(m*56|0)+12>>2]=c[D>>2];P=+h[N>>3];R=+h[B>>3];k=R>k?R:k;q=Q+q;m=m+1|0;p=P>p?P:p;j=o>j?o:j}h[i+(n*24|0)+8>>3]=q;g=(n|0)==0;do if(f)if(g){o=p;k=p-k;g=i;break}else{o=p;k=t-u+p-k;g=i+(n*24|0)|0;break}else{o=j;k=g?p:j;g=i+(n*24|0)|0}while(0);h[g+16>>3]=k;s=q>s?q:s;t=o+t;u=+h[i+(n*24|0)+16>>3]+u;n=n+1|0;g=b[K>>1]|0}h[e+24>>3]=s;h[e+32>>3]=g<<16>>16==1?j:t;l=O;return}function rR(e,f,g){e=e|0;f=f|0;g=g|0;var i=0,j=0,k=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0.0,A=0.0;y=l;l=l+64|0;v=y+32|0;x=y;j=e+24|0;if((c[j>>2]|0)==0?(i=c[(c[e+96>>2]|0)+24>>2]|0,i|0):0)c[j>>2]=n1(i)|0;t=e+36|0;w=b[t>>1]|0;i=w&65535;a:do if(i&1){k=+h[e+64>>3];q=+h[e+72>>3];j=f+16|0;m=+h[j>>3];o=+h[f>>3];n=m-o-k;b:do if(n>0.0)switch(i&6){case 4:{m=o+k;h[j>>3]=m;k=o;break b}case 2:{m=n+m;h[j>>3]=m;k=o+n;h[f>>3]=k;break b}default:{p=n*.5;k=p+o;h[f>>3]=k;m=m-p;h[j>>3]=m;break b}}else k=o;while(0);i=f+24|0;p=+h[i>>3];j=f+8|0;n=+h[j>>3];o=p-n-q;if(o>0.0)switch(w&24){case 16:{o=n+q;h[i>>3]=o;break a}case 8:{q=o+p;h[i>>3]=q;n=n+o;h[j>>3]=n;o=q;break a}default:{o=o*.5;n=o+n;h[j>>3]=n;o=p-o;h[i>>3]=o;break a}}else o=p}else{k=+h[f>>3];n=+h[f+8>>3];m=+h[f+16>>3];o=+h[f+24>>3]}while(0);s=e+48|0;c[s>>2]=c[f>>2];c[s+4>>2]=c[f+4>>2];c[s+8>>2]=c[f+8>>2];c[s+12>>2]=c[f+12>>2];c[s+16>>2]=c[f+16>>2];c[s+20>>2]=c[f+20>>2];c[s+24>>2]=c[f+24>>2];c[s+28>>2]=c[f+28>>2];a[e+35>>0]=g;A=+(d[e+33>>0]|0);z=+(d[e+34>>0]|0);p=k+A+z;h[x>>3]=p;q=n+A+z;s=x+8|0;h[s>>3]=q;n=m-A-z;f=x+16|0;h[f>>3]=n;o=o-A-z;r=x+24|0;h[r>>3]=o;j=e+88|0;switch(a[e+92>>0]|0){case 1:{w=c[j>>2]|0;c[v>>2]=c[x>>2];c[v+4>>2]=c[x+4>>2];c[v+8>>2]=c[x+8>>2];c[v+12>>2]=c[x+12>>2];c[v+16>>2]=c[x+16>>2];c[v+20>>2]=c[x+20>>2];c[v+24>>2]=c[x+24>>2];c[v+28>>2]=c[x+28>>2];pR(w,v,g);break}case 3:{i=c[j>>2]|0;k=+h[i+24>>3];m=n-p-+h[i+16>>3];c:do if(m>0.0)switch(w&6){case 4:{h[f>>3]=n-m;break c}case 2:{h[x>>3]=m+p;break c}default:break c}while(0);k=o-q-k;d:do if(k>0.0)switch(w&24){case 16:{h[r>>3]=o-k;break d}case 8:{h[s>>3]=k+q;break d}default:break d}while(0);c[v>>2]=c[x>>2];c[v+4>>2]=c[x+4>>2];c[v+8>>2]=c[x+8>>2];c[v+12>>2]=c[x+12>>2];c[v+16>>2]=c[x+16>>2];c[v+20>>2]=c[x+20>>2];c[v+24>>2]=c[x+24>>2];c[v+28>>2]=c[x+28>>2];sR(i,v);break}default:{i=c[j>>2]|0;k=+h[i+32>>3];m=n-p-+h[i+24>>3];e:do if(m>0.0?(u=w&6,u<<16>>16!=6):0)switch(u&7){case 4:{h[f>>3]=n-m;break e}case 2:{h[x>>3]=m+p;break e}default:{A=m*.5;h[x>>3]=A+p;h[f>>3]=n-A;break e}}while(0);k=o-q-k;f:do if(k>0.0)switch(w&24){case 16:{h[r>>3]=o-k;break f}case 8:{h[s>>3]=k+q;break f}default:{A=k*.5;h[s>>3]=A+q;h[r>>3]=o-A;break f}}while(0);w=i+8|0;c[w>>2]=c[x>>2];c[w+4>>2]=c[x+4>>2];c[w+8>>2]=c[x+8>>2];c[w+12>>2]=c[x+12>>2];c[w+16>>2]=c[x+16>>2];c[w+20>>2]=c[x+20>>2];c[w+24>>2]=c[x+24>>2];c[w+28>>2]=c[x+28>>2];x=b[t>>1]&768;tR(c[j>>2]|0,(x&1023)==512?108:(x&1023)==256?114:110)}}l=y;return}function sR(a,b){a=a|0;b=b|0;c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];c[a+16>>2]=c[b+16>>2];c[a+20>>2]=c[b+20>>2];c[a+24>>2]=c[b+24>>2];c[a+28>>2]=c[b+28>>2];return}function tR(d,e){d=d|0;e=e|0;var f=0,g=0,h=0;g=b[d+4>>1]|0;f=0;while(1){if((f|0)>=(g|0))break;h=(c[d>>2]|0)+(f*24|0)+6|0;if(!(a[h>>0]|0))a[h>>0]=e;f=f+1|0}return}function uR(d,f,g){d=d|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;l=f+84|0;t=c[l>>2]|0;u=vI()|0;v=yR()|0;i=0;h=0;k=Aw(t)|0;while(1){if(!k)break;j=Aw(c[k+8>>2]|0)|0;while(1){if(!j)break;j=c[j>>2]|0;i=i+1|0}h=h+1|0;if(a[k+12>>0]|0)CR(v,h);k=c[k>>2]|0}h=uH((i<<2)+4|0)|0;c[l>>2]=h;i=0;j=0;k=0;q=0;r=Aw(t)|0;while(1){if(!r)break;s=q&65535;p=0;o=Aw(c[r+8>>2]|0)|0;while(1){if(!o)break;n=c[o+8>>2]|0;c[h>>2]=n;k=vR(d,n,f,g)|0|k;l=wR(u,q,p,n)|0;b[n+86>>1]=s;b[n+84>>1]=l;l=l+(e[n+80>>1]|0)|0;m=q+(e[n+82>>1]|0)|0;if(DR(v,m)|0){p=n+100|0;a[p>>0]=a[p>>0]|2}p=l;h=h+4|0;o=c[o>>2]|0;i=(l|0)>(i|0)?l:i;j=(m|0)>(j|0)?m:j}q=q+1|0;r=c[r>>2]|0}c[f+100>>2]=j;c[f+104>>2]=i;yw(t)|0;yw(v)|0;yI(u);return k|0}function vR(f,g,i,j){f=f|0;g=g|0;i=i|0;j=j|0;var k=0.0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0.0;u=l;l=l+16|0;t=u+8|0;s=u;c[g+96>>2]=i;q=g+36|0;o=b[q>>1]|0;if(!(o&64)){if(!(b[i+36>>1]&64))n=2;else n=a[i+34>>0]|0;a[g+34>>0]=n}if(!(o&32)){n=a[i+88>>0]|0;if(n<<24>>24<=-1)if(!(b[i+36>>1]&32))n=1;else n=a[i+33>>0]|0;a[g+33>>0]=n}n=g+88|0;p=g+92|0;switch(a[p>>0]|0){case 1:{o=nR(f,c[n>>2]|0,g,j)|0;i=c[n>>2]|0;n=o;o=i+64|0;i=i+72|0;break}case 3:{o=xR(c[n>>2]|0,j)|0;i=c[n>>2]|0;n=o;o=i+16|0;i=i+24|0;break}default:{qR(c[(c[f+16>>2]|0)+144>>2]|0,c[n>>2]|0,j);i=c[n>>2]|0;n=0;o=i+24|0;i=i+32|0}}k=+((d[g+33>>0]|0)+(d[g+34>>0]|0)<<1|0);m=+h[o>>3]+k;k=+h[i>>3]+k;i=g+38|0;do if(b[q>>1]&1){o=b[i>>1]|0;if(o<<16>>16?(r=b[g+40>>1]|0,r<<16>>16):0){if(!(m>+(o&65535)|k>+(r&65535))){m=0.0;k=0.0;break}if((a[p>>0]|0)==3){m=0.0;k=0.0;break}Pw(0,134532,s)|0;n=1;m=0.0;k=0.0;break}Pw(0,134565,t)|0;n=1}while(0);v=+(e[i>>1]|0);h[g+64>>3]=m>v?m:v;m=+(e[g+40>>1]|0);h[g+72>>3]=k>m?k:m;l=u;return n|0}function wR(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var f=0,g=0,h=0,i=0,j=0;j=d+80|0;i=(e[j>>1]|0)+-1|0;h=0;a:while(1){f=c;while(1){if(h)break a;g=i+f|0;while(1){if((g|0)<(f|0)){c=f;h=1;continue a}if(DI(a,g,b)|0)break;g=g+-1|0}f=g+1|0}}h=d+82|0;f=c;while(1){if((f|0)<(c+(e[j>>1]|0)|0))g=b;else break;while(1){if((g|0)>=((e[h>>1]|0)+b|0))break;BI(a,f,g);g=g+1|0}f=f+1|0}return c|0}function xR(b,d){b=b|0;d=d|0;var e=0.0,f=0.0,g=0,i=0,j=0,k=0,m=0;m=l;l=l+16|0;j=m;i=m+8|0;d=d+52|0;g=b+32|0;CC(i,c[d>>2]|0,c[g>>2]|0);k=c[i>>2]|0;i=c[i+4>>2]|0;if((i&k|0)==-1){c[j>>2]=c[g>>2];Pw(1,134615,j)|0;d=1;f=0.0;e=0.0}else{a[(c[(c[d>>2]|0)+16>>2]|0)+114>>0]=1;d=0;f=+(i|0);e=+(k|0)}c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;h[b+16>>3]=e;h[b+24>>3]=f;l=m;return d|0}function yR(){return Cw(55820,c[4555]|0)|0}function zR(a,b,d){a=a|0;b=b|0;d=d|0;d=uH(12)|0;c[d>>2]=c[b>>2];return d|0}function AR(a,b,c){a=a|0;b=b|0;c=c|0;D_(b);return}function BR(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;b=c[b>>2]|0;e=c[d>>2]|0;return ((b|0)>(e|0)?1:((b|0)<(e|0))<<31>>31)|0}function CR(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;c[e>>2]=b;nb[c[a>>2]&63](a,e,1)|0;l=d;return}function DR(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;c[e>>2]=b;b=(nb[c[a>>2]&63](a,e,512)|0)!=0&1;l=d;return b|0}function ER(a){a=a|0;var b=0;if(!(c[46605]|0)){b=uH((a<<2)+4|0)|0;c[46605]=b;c[b>>2]=186424;c[46616]=a}c[46617]=0;return}function FR(){D_(c[46605]|0);c[46605]=0;c[46617]=0;return}function GR(){c[46617]=0;return}function HR(){var a=0,b=0,d=0;b=c[46617]|0;d=c[46605]|0;a=1;while(1){if((a|0)>(b|0)){a=5;break}if((c[(c[d+(a<<2)>>2]|0)+4>>2]|0)==(a|0))a=a+1|0;else{a=4;break}}if((a|0)==4)qa(135312,134659,59,134665);else if((a|0)==5)return}function IR(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;f=c[46605]|0;g=c[f+(a<<2)>>2]|0;h=c[g>>2]|0;while(1){b=(a|0)/2|0;d=c[f+(b<<2)>>2]|0;e=f+(a<<2)|0;if((c[d>>2]|0)>=(h|0))break;c[e>>2]=d;c[d+4>>2]=a;a=b}c[e>>2]=g;c[g+4>>2]=a;return}function JR(a){a=a|0;var b=0,d=0;d=l;l=l+16|0;b=c[46617]|0;if((b|0)==(c[46616]|0)){Pw(1,134673,d)|0;a=1}else{b=b+1|0;c[46617]=b;c[(c[46605]|0)+(b<<2)>>2]=a;IR(b);HR();a=0}l=d;return a|0}function KR(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;e=c[46605]|0;f=c[e+(a<<2)>>2]|0;g=c[f>>2]|0;h=c[46617]|0;i=(h|0)/2|0;while(1){if((a|0)>(i|0))break;d=a<<1;b=c[e+(d<<2)>>2]|0;if((d|0)<(h|0)){l=d|1;j=c[e+(l<<2)>>2]|0;k=(c[b>>2]|0)<(c[j>>2]|0);d=k?l:d;b=k?j:b}if((g|0)>=(c[b>>2]|0))break;c[e+(a<<2)>>2]=b;c[b+4>>2]=a;a=d}c[e+(a<<2)>>2]=f;c[f+4>>2]=a;return}function LR(){var a=0,b=0,d=0,e=0;b=c[46617]|0;if(!b)a=0;else{e=c[46605]|0;d=e+4|0;a=c[d>>2]|0;c[d>>2]=c[e+(b<<2)>>2];b=b+-1|0;c[46617]=b;if(b|0)KR(1);HR()}return a|0}function MR(a,b){a=a|0;b=b|0;c[a>>2]=b;IR(c[a+4>>2]|0);HR();return}function NR(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;m=b+16|0;j=c[m>>2]|0;j=(a[j+((c[e+12>>2]|0)*40|0)+36>>0]|0)!=(a[j+((c[e+16>>2]|0)*40|0)+36>>0]|0);k=~~((+h[d+64>>3]+-3.0-+h[d+48>>3])*.5);l=~~((+h[d+56>>3]+-3.0-+h[d+40>>3])*.5);g=(k|0)<(l|0)?k:l;n=d+4|0;f=0;while(1){b=c[n>>2]|0;if((f|0)>=(b|0)){g=f;break}i=c[d+8+(f<<2)>>2]|0;o=c[m>>2]|0;if((a[o+((c[i+12>>2]|0)*40|0)+36>>0]|0)==(a[o+((c[i+16>>2]|0)*40|0)+36>>0]|0)){g=f;break}OR(i,g);f=f+1|0}while(1){if((g|0)>=(b|0))break;f=c[d+8+(g<<2)>>2]|0;if(j|(f|0)==(e|0)){OR(f,a[(c[m>>2]|0)+((c[f+12>>2]|0)*40|0)+36>>0]|0?k:l);b=c[n>>2]|0}g=g+1|0}return}function OR(a,b){a=a|0;b=b|0;var d=0,e=0;d=a+8|0;e=c[d>>2]|0;c[d>>2]=e+1;if((e|0)>=(b|0)){c[d>>2]=0;h[a>>3]=+h[a>>3]+16384.0}return}function PR(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0.0,o=0.0,p=0.0,q=0.0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0.0,z=0.0,A=0.0,B=0.0,C=0,D=0,E=0.0;x=l;l=l+112|0;u=x+64|0;t=x+96|0;m=x+32|0;v=x;w=uH(28)|0;b=ay(a)|0;s=w+4|0;c[s>>2]=b;b=uH(b*72|0)|0;r=w+12|0;c[r>>2]=b;e=v+8|0;h[e>>3]=1797693134862315708145274.0e284;h[v>>3]=1797693134862315708145274.0e284;f=v+24|0;h[f>>3]=-1797693134862315708145274.0e284;g=v+16|0;h[g>>3]=-1797693134862315708145274.0e284;i=m+16|0;j=m+8|0;k=m+24|0;d=Sy(a)|0;n=1797693134862315708145274.0e284;o=1797693134862315708145274.0e284;p=-1797693134862315708145274.0e284;q=-1797693134862315708145274.0e284;while(1){if(!d)break;C=d+16|0;D=c[C>>2]|0;z=(+h[D+96>>3]+ +h[D+88>>3])*.5;z=z<1.0?1.0:z;y=+h[D+80>>3]*.5;y=y<1.0?1.0:y;E=+h[D+16>>3];B=E-z;h[m>>3]=B;z=E+z;h[i>>3]=z;E=+h[D+24>>3];A=E-y;h[j>>3]=A;y=E+y;h[k>>3]=y;B=+h[(n>3];h[v>>3]=B;A=+h[(o>3];h[e>>3]=A;z=+h[(p>z?v:m)+16>>3];h[g>>3]=z;y=+h[(q>y?v:m)+24>>3];h[f>>3]=y;D=b+40|0;c[D>>2]=c[m>>2];c[D+4>>2]=c[m+4>>2];c[D+8>>2]=c[m+8>>2];c[D+12>>2]=c[m+12>>2];c[D+16>>2]=c[m+16>>2];c[D+20>>2]=c[m+20>>2];c[D+24>>2]=c[m+24>>2];c[D+28>>2]=c[m+28>>2];c[b>>2]=c[b>>2]|1;c[(c[C>>2]|0)+112>>2]=b;b=b+72|0;d=Ty(a,d)|0;n=B;o=A;p=z;q=y}h[v>>3]=n+-36.0;h[e>>3]=o+-36.0;h[g>>3]=p+36.0;h[f>>3]=q+36.0;D=c[r>>2]|0;f=c[s>>2]|0;c[u>>2]=c[v>>2];c[u+4>>2]=c[v+4>>2];c[u+8>>2]=c[v+8>>2];c[u+12>>2]=c[v+12>>2];c[u+16>>2]=c[v+16>>2];c[u+20>>2]=c[v+20>>2];c[u+24>>2]=c[v+24>>2];c[u+28>>2]=c[v+28>>2];f=ZR(D,f,t,u)|0;if(c[46553]&1|0){r=c[r>>2]|0;C=c[s>>2]|0;D=c[t>>2]|0;c[u>>2]=c[v>>2];c[u+4>>2]=c[v+4>>2];c[u+8>>2]=c[v+8>>2];c[u+12>>2]=c[v+12>>2];c[u+16>>2]=c[v+16>>2];c[u+20>>2]=c[v+20>>2];c[u+24>>2]=c[v+24>>2];c[u+28>>2]=c[v+28>>2];QR(r,C,u,f,D)}e=w+8|0;c[e>>2]=uH((c[t>>2]|0)*72|0)|0;c[w>>2]=c[t>>2];d=c[t>>2]|0;b=0;while(1){if((b|0)>=(d|0))break;D=(c[e>>2]|0)+(b*72|0)+40|0;C=f+(b<<5)|0;c[D>>2]=c[C>>2];c[D+4>>2]=c[C+4>>2];c[D+8>>2]=c[C+8>>2];c[D+12>>2]=c[C+12>>2];c[D+16>>2]=c[C+16>>2];c[D+20>>2]=c[C+20>>2];c[D+24>>2]=c[C+24>>2];c[D+28>>2]=c[C+28>>2];b=b+1|0}D_(f);c[u>>2]=c[v>>2];c[u+4>>2]=c[v+4>>2];c[u+8>>2]=c[v+8>>2];c[u+12>>2]=c[v+12>>2];c[u+16>>2]=c[v+16>>2];c[u+20>>2]=c[v+20>>2];c[u+24>>2]=c[v+24>>2];c[u+28>>2]=c[v+28>>2];c[w+16>>2]=RR(w,u)|0;l=x;return w|0}function QR(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0.0,i=0,j=0,k=0.0,m=0.0,n=0.0,o=0,p=0,q=0,r=0,s=0,t=0.0,u=0.0,v=0.0;q=l;l=l+128|0;p=q+96|0;o=q+64|0;j=q+32|0;r=q+16|0;s=q;m=+h[d+16>>3];n=+h[d>>3];k=+h[d+24>>3];g=+h[d+8>>3];i=c[15686]|0;D1(134688,i)|0;c[s>>2]=10;c[s+4>>2]=10;c[s+8>>2]=~~(m+10.0-n);c[s+12>>2]=~~(k+10.0-g);g1(i,135118,s)|0;h[r>>3]=10.0-n;h[r+8>>3]=10.0-g;g1(i,135166,r)|0;D1(135183,i)|0;d=0;while(1){if((d|0)>=(b|0))break;v=+h[a+(d*72|0)+48>>3];u=+h[a+(d*72|0)+56>>3];t=+h[a+(d*72|0)+64>>3];h[j>>3]=+h[a+(d*72|0)+40>>3];h[j+8>>3]=v;h[j+16>>3]=u;h[j+24>>3]=t;g1(i,135202,j)|0;d=d+1|0}D1(135220,i)|0;d=0;while(1){if((d|0)>=(f|0))break;t=+h[e+(d<<5)+8>>3];u=+h[e+(d<<5)+16>>3];v=+h[e+(d<<5)+24>>3];h[o>>3]=+h[e+(d<<5)>>3];h[o+8>>3]=t;h[o+16>>3]=u;h[o+24>>3]=v;g1(i,135239,o)|0;d=d+1|0}D1(135257,i)|0;h[p>>3]=n;h[p+8>>3]=g;h[p+16>>3]=m;h[p+24>>3]=k;g1(i,135239,p)|0;D1(135004,i)|0;l=q;return}function RR(a,b){a=a|0;b=b|0;var d=0,e=0.0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;A=l;l=l+32|0;t=A+16|0;k=A;w=c[a>>2]|0;y=nO(w<<2|2)|0;z=Cw(55856,c[4555]|0)|0;v=Cw(55892,c[4555]|0)|0;w=uH(w<<7)|0;f=uH(c[a>>2]<<4)|0;x=a+8|0;g=b+16|0;i=k+8|0;j=b+24|0;m=b+8|0;d=0;while(1){if((d|0)>=(c[a>>2]|0))break;n=c[x>>2]|0;o=n+(d*72|0)|0;c[n+(d*72|0)+32>>2]=4;p=n+(d*72|0)+36|0;c[p>>2]=f+(d<<2<<2);q=n+(d*72|0)+40|0;e=+h[n+(d*72|0)+56>>3];if(e<+h[g>>3]){h[k>>3]=e;h[i>>3]=+h[n+(d*72|0)+48>>3];c[t>>2]=c[k>>2];c[t+4>>2]=c[k+4>>2];c[t+8>>2]=c[k+8>>2];c[t+12>>2]=c[k+12>>2];s=SR(y,z,t,w,1)|0;c[s+20>>2]=o;c[c[p>>2]>>2]=s}e=+h[n+(d*72|0)+64>>3];if(e<+h[j>>3]){h[k>>3]=+h[q>>3];h[i>>3]=e;c[t>>2]=c[k>>2];c[t+4>>2]=c[k+4>>2];c[t+8>>2]=c[k+8>>2];c[t+12>>2]=c[k+12>>2];s=SR(y,v,t,w,0)|0;c[s+20>>2]=o;c[(c[p>>2]|0)+4>>2]=s}if(+h[q>>3]>+h[b>>3]){c[t>>2]=c[q>>2];c[t+4>>2]=c[q+4>>2];c[t+8>>2]=c[q+8>>2];c[t+12>>2]=c[q+12>>2];s=SR(y,z,t,w,1)|0;c[s+24>>2]=o;c[(c[p>>2]|0)+8>>2]=s}if(+h[n+(d*72|0)+48>>3]>+h[m>>3]){c[t>>2]=c[q>>2];c[t+4>>2]=c[q+4>>2];c[t+8>>2]=c[q+8>>2];c[t+12>>2]=c[q+12>>2];s=SR(y,v,t,w,0)|0;c[s+24>>2]=o;c[(c[p>>2]|0)+12>>2]=s}d=d+1|0}o=uH(c[y>>2]<<2)|0;r=a+4|0;s=a+12|0;p=t+8|0;m=0;q=0;n=0;while(1){d=c[r>>2]|0;if((n|0)>=(d|0)){b=0;break}g=c[s>>2]|0;i=g+(n*72|0)|0;j=g+(n*72|0)+36|0;c[j>>2]=o+(m<<2);b=g+(n*72|0)+40|0;c[t>>2]=c[b>>2];c[t+4>>2]=c[b+4>>2];c[t+8>>2]=c[b+8>>2];c[t+12>>2]=c[b+12>>2];b=g+(n*72|0)+56|0;k=g+(n*72|0)+32|0;d=nb[c[v>>2]&63](v,t,512)|0;while(1){if(!d)break;if(!(+h[d+8>>3]<+h[b>>3]))break;C=c[d>>2]|0;B=c[j>>2]|0;f=c[k>>2]|0;c[k>>2]=f+1;c[B+(f<<2)>>2]=C;c[(c[d>>2]|0)+24>>2]=i;d=nb[c[v>>2]&63](v,d,8)|0}f=g+(n*72|0)+64|0;d=nb[c[z>>2]&63](z,t,512)|0;while(1){if(!d){u=20;break}e=+h[f>>3];if(!(+h[d+16>>3]>2]|0;B=c[j>>2]|0;C=c[k>>2]|0;c[k>>2]=C+1;c[B+(C<<2)>>2]=b;c[(c[d>>2]|0)+24>>2]=i;d=nb[c[z>>2]&63](z,d,8)|0}if((u|0)==20){u=0;e=+h[f>>3]}h[p>>3]=e;b=g+(n*72|0)+56|0;d=nb[c[v>>2]&63](v,t,512)|0;while(1){if(!d){u=25;break}e=+h[b>>3];if(!(+h[d+8>>3]>2]|0;B=c[j>>2]|0;C=c[k>>2]|0;c[k>>2]=C+1;c[B+(C<<2)>>2]=D;c[(c[d>>2]|0)+20>>2]=i;d=nb[c[v>>2]&63](v,d,8)|0}if((u|0)==25){u=0;e=+h[b>>3]}h[t>>3]=e;h[p>>3]=+h[g+(n*72|0)+48>>3];d=nb[c[z>>2]&63](z,t,512)|0;while(1){if(!d)break;if(!(+h[d+16>>3]<+h[f>>3]))break;B=c[d>>2]|0;C=c[j>>2]|0;D=c[k>>2]|0;c[k>>2]=D+1;c[C+(D<<2)>>2]=B;c[(c[d>>2]|0)+20>>2]=i;d=nb[c[z>>2]&63](z,d,8)|0}D=c[k>>2]|0;m=D+m|0;q=(D|0)>(q|0)?D:q;n=n+1|0}while(1){if((b|0)>=(d|0))break;TR((c[s>>2]|0)+(b*72|0)|0);b=b+1|0;d=c[r>>2]|0}d=c[y>>2]|0;D=c[y+16>>2]|0;c[D+(d*40|0)+32>>2]=d;d=d+1|0;c[D+(d*40|0)+32>>2]=d;mO(y,q);d=0;while(1){if((d|0)>=(c[a>>2]|0))break;UR((c[x>>2]|0)+(d*72|0)|0,y);d=d+1|0}yw(z)|0;yw(v)|0;D_(w);VR(y);kO(y);l=A;return y|0}function SR(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=nb[c[d>>2]&63](d,e,512)|0;do if(!h){b=oO(b)|0;if(!f)qa(135101,135049,291,135108);else{h=c[b+32>>2]|0;i=f+(h<<5)|0;f=f+(h<<5)+8|0;c[f>>2]=c[e>>2];c[f+4>>2]=c[e+4>>2];c[f+8>>2]=c[e+8>>2];c[f+12>>2]=c[e+12>>2];c[i>>2]=b;a[b+36>>0]=g;nb[c[d>>2]&63](d,i,1)|0;break}}else i=h;while(0);return c[i>>2]|0}function TR(b){b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0;a:do if((+h[b+64>>3]+-3.0-+h[b+48>>3])*.5<2.0){i=c[b+32>>2]|0;j=b+36|0;g=0;while(1){if((g|0)>=(i|0))break a;d=c[(c[j>>2]|0)+(g<<2)>>2]|0;b:do if(a[d+36>>0]|0){f=c[d+20>>2]|0;if((f|0)==(b|0)){e=c[d+24>>2]|0;d=e;e=c[e>>2]|0;do{c[d>>2]=e|8;d=c[c[d+36>>2]>>2]|0;if(!d)break b;d=c[d+24>>2]|0;e=c[d>>2]|0}while(!(e&1|0))}else{e=f;d=c[f>>2]|0;do{c[e>>2]=d|8;d=c[(c[e+36>>2]|0)+8>>2]|0;if(!d)break b;e=c[d+20>>2]|0;d=c[e>>2]|0}while(!(d&1|0))}}while(0);g=g+1|0}}while(0);c:do if((+h[b+56>>3]+-3.0-+h[b+40>>3])*.5<2.0){i=c[b+32>>2]|0;j=b+36|0;g=0;while(1){if((g|0)>=(i|0))break c;d=c[(c[j>>2]|0)+(g<<2)>>2]|0;d:do if(!(a[d+36>>0]|0)){f=c[d+20>>2]|0;if((f|0)==(b|0)){e=c[d+24>>2]|0;d=e;e=c[e>>2]|0;do{c[d>>2]=e|16;d=c[(c[d+36>>2]|0)+4>>2]|0;if(!d)break d;d=c[d+24>>2]|0;e=c[d>>2]|0}while(!(e&1|0))}else{e=f;d=c[f>>2]|0;do{c[e>>2]=d|16;d=c[(c[e+36>>2]|0)+12>>2]|0;if(!d)break d;e=c[d+20>>2]|0;d=c[e>>2]|0}while(!(d&1|0))}}while(0);g=g+1|0}}while(0);return}function UR(a,b){a=a|0;b=b|0;var d=0,e=0,f=0.0,g=0.0,i=0.0,j=0,k=0,l=0,m=0,n=0,o=0,p=0.0,q=0;g=+h[a+56>>3]-+h[a+40>>3];i=+h[a+64>>3]-+h[a+48>>3];f=(i+g)*.5+500.0;if((i+-3.0)*.5<2.0){l=(c[a>>2]&8|0)==0;f=l?16384.0:f;p=l?16384.0:g}else p=g;if((g+-3.0)*.5<2.0){l=(c[a>>2]&16|0)==0;i=l?16384.0:i;f=l?16384.0:f}l=a+36|0;d=c[l>>2]|0;e=c[d+8>>2]|0;if((e|0)!=0?(j=c[d+4>>2]|0,(j|0)!=0):0){j=pO(b,e,j,f)|0;e=a+4|0;d=c[e>>2]|0;c[e>>2]=d+1;c[a+8+(d<<2)>>2]=j;d=c[l>>2]|0}e=c[d+4>>2]|0;if((e|0)!=0?(k=c[d>>2]|0,(k|0)!=0):0){k=pO(b,e,k,f)|0;j=a+4|0;d=c[j>>2]|0;c[j>>2]=d+1;c[a+8+(d<<2)>>2]=k;d=c[l>>2]|0}e=c[d+8>>2]|0;if((e|0)!=0?(m=c[d+12>>2]|0,(m|0)!=0):0){m=pO(b,e,m,f)|0;k=a+4|0;d=c[k>>2]|0;c[k>>2]=d+1;c[a+8+(d<<2)>>2]=m;d=c[l>>2]|0}e=c[d+12>>2]|0;if((e|0)!=0?(n=c[d>>2]|0,(n|0)!=0):0){n=pO(b,e,n,f)|0;m=a+4|0;d=c[m>>2]|0;c[m>>2]=d+1;c[a+8+(d<<2)>>2]=n;d=c[l>>2]|0}e=c[d+4>>2]|0;if((e|0)!=0?(o=c[d+12>>2]|0,(o|0)!=0):0){o=pO(b,e,o,i)|0;n=a+4|0;d=c[n>>2]|0;c[n>>2]=d+1;c[a+8+(d<<2)>>2]=o;d=c[l>>2]|0}e=c[d+8>>2]|0;if(e|0?(q=c[d>>2]|0,q|0):0){b=pO(b,e,q,p)|0;o=a+4|0;q=c[o>>2]|0;c[o>>2]=q+1;c[a+8+(q<<2)>>2]=b}return}function VR(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;j=l;l=l+16|0;i=j+8|0;h=j;f=a+16|0;g=c[15686]|0;e=0;while(1){if((e|0)>=(c[a>>2]|0)){b=10;break}b=c[f>>2]|0;d=b+(e*40|0)+20|0;if((c[d>>2]|0)==0?(c[h>>2]=e,g1(g,135014,h)|0,(c[d>>2]|0)==0):0){b=5;break}b=b+(e*40|0)+24|0;if((c[b>>2]|0)==0?(c[i>>2]=e,g1(g,135066,i)|0,(c[b>>2]|0)==0):0){b=8;break}e=e+1|0}if((b|0)==5)qa(135036,135049,311,135056);else if((b|0)==8)qa(135088,135049,313,135056);else if((b|0)==10){l=j;return}}function WR(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0.0,f=0.0;e=+h[b+8>>3];f=+h[c+8>>3];if(!(e>f))if(!(e>3];e=+h[c>>3];if(f>e)a=1;else a=(f>31}else a=-1;else a=1;return a|0}function XR(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0.0,f=0.0;e=+h[b>>3];f=+h[c>>3];if(!(e>f))if(!(e>3];e=+h[c+8>>3];if(f>e)a=1;else a=(f>31}else a=-1;else a=1;return a|0}function YR(a){a=a|0;var b=0,d=0;d=a+8|0;D_(c[(c[d>>2]|0)+36>>2]|0);b=a+12|0;D_(c[(c[b>>2]|0)+36>>2]|0);D_(c[d>>2]|0);D_(c[b>>2]|0);rO(c[a+16>>2]|0);yw(c[a+20>>2]|0)|0;yw(c[a+24>>2]|0)|0;D_(a);return}function ZR(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;p=l;l=l+32|0;h=p;i=b<<2;f=i+4|0;i=i+5|0;o=vH(i*56|0)|0;i=uH(i<<2)|0;g=f*5|1;j=vH(g*72|0)|0;m=g<<5;k=uH(m)|0;m=uH(m)|0;c[h>>2]=c[e>>2];c[h+4>>2]=c[e+4>>2];c[h+8>>2]=c[e+8>>2];c[h+12>>2]=c[e+12>>2];c[h+16>>2]=c[e+16>>2];c[h+20>>2]=c[e+20>>2];c[h+24>>2]=c[e+24>>2];c[h+28>>2]=c[e+28>>2];_R(a,b,h,o,0);i2(173);$R(f,i);jS(f,o,i,g,j)|0;n=aS(f,o,j,0,k)|0;c[h>>2]=c[e>>2];c[h+4>>2]=c[e+4>>2];c[h+8>>2]=c[e+8>>2];c[h+12>>2]=c[e+12>>2];c[h+16>>2]=c[e+16>>2];c[h+20>>2]=c[e+20>>2];c[h+24>>2]=c[e+24>>2];c[h+28>>2]=c[e+28>>2];_R(a,b,h,o,1);$R(f,i);jS(f,o,i,g,j)|0;f=aS(f,o,j,1,m)|0;g=uH(O(n<<5,f)|0)|0;b=0;a=0;while(1){if((b|0)>=(f|0))break;h=m+(b<<5)|0;e=0;while(1){if((e|0)>=(n|0))break;q=a+((bS(g+(a<<5)|0,h,k+(e<<5)|0)|0)!=0&1)|0;e=e+1|0;a=q}b=b+1|0}q=xH(g,a<<5)|0;D_(o);D_(i);D_(j);D_(k);D_(m);c[d>>2]=a;l=p;return q|0}function _R(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0;j=l;l=l+96|0;h=j+64|0;i=j;c[h>>2]=c[d>>2];c[h+4>>2]=c[d+4>>2];c[h+8>>2]=c[d+8>>2];c[h+12>>2]=c[d+12>>2];c[h+16>>2]=c[d+16>>2];c[h+20>>2]=c[d+20>>2];c[h+24>>2]=c[d+24>>2];c[h+28>>2]=c[d+28>>2];hS(h,f,1,i);d=iS(e,1,i)|0;g=0;while(1){if((g|0)>=(b|0))break;k=a+(g*72|0)+40|0;c[h>>2]=c[k>>2];c[h+4>>2]=c[k+4>>2];c[h+8>>2]=c[k+8>>2];c[h+12>>2]=c[k+12>>2];c[h+16>>2]=c[k+16>>2];c[h+20>>2]=c[k+20>>2];c[h+24>>2]=c[k+24>>2];c[h+28>>2]=c[k+28>>2];hS(h,f,0,i);d=iS(e,d,i)|0;g=g+1|0}l=j;return}function $R(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=0;while(1){if((d|0)>(a|0))break;c[b+(d<<2)>>2]=d;d=d+1|0}g=a+1|0;d=1;while(1){if((d|0)>(a|0))break;h=~~(+k2()*+(g-d|0)+ +(d|0));e=b+(d<<2)|0;f=b+(h<<2)|0;if((d|0)!=(h|0)){h=c[e>>2]|0;c[e>>2]=c[f>>2];c[f>>2]=h}d=d+1|0}return}function aS(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;g=a*5|0;j=g+1|0;l=uH(j<<2)|0;c[46618]=uH(j<<4)|0;c[46619]=uH((a*56|0)+56|0)|0;j=uH(a<<2)|0;c[46620]=j;k=0;while(1){if((k|0)>(g|0))break;if(cS(d+(k*72|0)|0,b)|0)break;k=k+1|0}h=c[46618]|0;i=c[46619]|0;g=1;while(1){if((g|0)>(a|0))break;c[h+(g<<4)+8>>2]=c[b+(g*56|0)+48>>2];m=b+(g*56|0)+44|0;c[h+(g<<4)+4>>2]=c[m>>2];c[h+(g<<4)>>2]=g;n=i+(g*56|0)|0;o=b+(g*56|0)|0;c[n>>2]=c[o>>2];c[n+4>>2]=c[o+4>>2];c[n+8>>2]=c[o+8>>2];c[n+12>>2]=c[o+12>>2];c[i+(g*56|0)+16>>2]=c[m>>2];c[i+(g*56|0)+32>>2]=g;c[i+(g*56|0)+48>>2]=1;g=g+1|0}c[46621]=a;c[46622]=0;c[j>>2]=1;g=c[d+(k*72|0)+40>>2]|0;if((g|0)<=0){g=c[d+(k*72|0)+48>>2]|0;if((g|0)>0)g=dS(l,f,0,b,d,0,k,g,e,2)|0;else g=0}else g=dS(l,f,0,b,d,0,k,g,e,1)|0;D_(l);D_(c[46618]|0);D_(c[46619]|0);D_(c[46620]|0);return g|0}function bS(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0,f=0.0,g=0.0;g=+h[(+h[b>>3]>+h[c>>3]?b:c)>>3];f=+h[(+h[b+16>>3]<+h[c+16>>3]?b:c)+16>>3];h[a+16>>3]=f;h[a>>3]=g;e=+h[(+h[b+8>>3]>+h[c+8>>3]?b:c)+8>>3];d=+h[(+h[b+24>>3]<+h[c+24>>3]?b:c)+24>>3];h[a+24>>3]=d;h[a+8>>3]=e;return !(g>=f)&!(e>=d)&1|0}function cS(a,b){a=a|0;b=b|0;var d=0.0,e=0.0,f=0;f=c[a+4>>2]|0;do if((c[a+68>>2]|0)!=2?!((f|0)<1|(c[a>>2]|0)<1):0){if(!((c[a+40>>2]|0)<1?(c[a+44>>2]|0)<1:0)){if((c[a+48>>2]|0)>=1){a=0;break}if((c[a+52>>2]|0)>=1){a=0;break}}d=+h[b+(f*56|0)+24>>3];e=+h[b+(f*56|0)+8>>3];if(!(d>e+1.0e-07))if(d>3]>+h[b+(f*56|0)>>3]&1;else a=1}else a=0;while(0);return a|0}function dS(a,b,d,e,f,g,i,j,k,l){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0.0,p=0.0,q=0.0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0.0,J=0,K=0.0,L=0,M=0,N=0,O=0,P=0;D=(k|0)==0;C=i;a:while(1){y=f+(C*72|0)|0;if((C|0)<1)break;i=a+(C<<2)|0;if(c[i>>2]|0)break;c[i>>2]=1;v=f+(C*72|0)+8|0;t=f+(C*72|0)+16|0;p=+h[t>>3];w=f+(C*72|0)+24|0;x=f+(C*72|0)+32|0;o=+h[x>>3];if((p>o?(A=c[y>>2]|0,I=+h[e+(A*56|0)>>3],I==+h[e+(A*56|0)+16>>3]):0)?(A=c[f+(C*72|0)+4>>2]|0,K=+h[e+(A*56|0)>>3],K==+h[e+(A*56|0)+16>>3]):0){i=b+(d<<5)|0;if(D){h[i>>3]=I;q=p;p=K}else{h[i>>3]=o;q=-I;o=-K}h[b+(d<<5)+8>>3]=o;h[b+(d<<5)+16>>3]=p;h[b+(d<<5)+24>>3]=q;d=d+1|0}i=f+(C*72|0)+40|0;z=c[i>>2]|0;do if((z|0)<1?(L=f+(C*72|0)+44|0,(c[L>>2]|0)<1):0){i=f+(C*72|0)+48|0;n=f+(C*72|0)+52|0;if((c[i>>2]|0)>0?(M=c[n>>2]|0,(M|0)>0):0){m=c[f+(M*72|0)>>2]|0;l=c[y>>2]|0;if((M|0)==(j|0)){l=eS(g,l,m)|0;d=dS(a,b,d,e,f,g,c[n>>2]|0,C,k,1)|0;g=l;l=1;break}else{l=eS(g,m,l)|0;d=dS(a,b,d,e,f,g,c[i>>2]|0,C,k,1)|0;g=l;i=n;l=1;break}}d=dS(a,b,d,e,f,g,z,C,k,2)|0;d=dS(a,b,d,e,f,g,c[L>>2]|0,C,k,2)|0;d=dS(a,b,d,e,f,g,c[i>>2]|0,C,k,1)|0;i=n;l=1}else P=19;while(0);do if((P|0)==19){P=0;A=f+(C*72|0)+48|0;r=c[A>>2]|0;if((r|0)<1?(N=f+(C*72|0)+52|0,(c[N>>2]|0)<1):0){n=f+(C*72|0)+44|0;if((z|0)>0?(O=c[n>>2]|0,(O|0)>0):0){m=c[f+(C*72|0)+4>>2]|0;l=c[f+(z*72|0)+4>>2]|0;if((O|0)==(j|0)){l=eS(g,l,m)|0;d=dS(a,b,d,e,f,g,c[n>>2]|0,C,k,2)|0;g=l;l=2;break}else{l=eS(g,m,l)|0;d=dS(a,b,d,e,f,g,c[i>>2]|0,C,k,2)|0;g=l;i=n;l=2;break}}d=dS(a,b,d,e,f,g,z,C,k,2)|0;d=dS(a,b,d,e,f,g,c[n>>2]|0,C,k,2)|0;d=dS(a,b,d,e,f,g,c[A>>2]|0,C,k,1)|0;i=N;l=1;break}u=f+(C*72|0)+44|0;s=c[u>>2]|0;m=(s|0)>0;if((z|0)>0){if(m){if((r|0)>0?(E=f+(C*72|0)+52|0,F=c[E>>2]|0,(F|0)>0):0){n=c[f+(F*72|0)>>2]|0;m=c[f+(z*72|0)+4>>2]|0;if(!((l|0)==2&(F|0)==(j|0))?!((l|0)==1&(s|0)==(j|0)):0){l=eS(g,n,m)|0;d=dS(a,b,d,e,f,g,c[i>>2]|0,C,k,2)|0;d=dS(a,b,d,e,f,g,c[A>>2]|0,C,k,1)|0;d=dS(a,b,d,e,f,l,c[u>>2]|0,C,k,2)|0;g=l;i=E;l=1;break}l=eS(g,m,n)|0;d=dS(a,b,d,e,f,g,c[u>>2]|0,C,k,2)|0;d=dS(a,b,d,e,f,g,c[E>>2]|0,C,k,1)|0;d=dS(a,b,d,e,f,l,c[i>>2]|0,C,k,2)|0;g=l;i=A;l=1;break}m=c[y>>2]|0;if(+B(+(+h[x>>3]-+h[e+(m*56|0)+24>>3]))<=1.0e-07?+B(+(+h[w>>3]-+h[e+(m*56|0)+16>>3]))<=1.0e-07:0){n=c[f+(z*72|0)+4>>2]|0;m=c[e+(m*56|0)+44>>2]|0;if((l|0)==1&(z|0)==(j|0)){l=eS(g,m,n)|0;d=dS(a,b,d,e,f,g,c[i>>2]|0,C,k,2)|0;d=dS(a,b,d,e,f,l,c[A>>2]|0,C,k,1)|0;d=dS(a,b,d,e,f,l,c[u>>2]|0,C,k,2)|0;g=l;i=f+(C*72|0)+52|0;l=1;break}else{l=eS(g,n,m)|0;d=dS(a,b,d,e,f,g,c[u>>2]|0,C,k,2)|0;d=dS(a,b,d,e,f,g,c[A>>2]|0,C,k,1)|0;d=dS(a,b,d,e,f,g,c[f+(C*72|0)+52>>2]|0,C,k,1)|0;g=l;l=2;break}}n=c[f+(C*72|0)+4>>2]|0;m=c[f+(z*72|0)+4>>2]|0;if((l|0)==1&(s|0)==(j|0)){l=eS(g,m,n)|0;d=dS(a,b,d,e,f,g,c[u>>2]|0,C,k,2)|0;d=dS(a,b,d,e,f,l,c[f+(C*72|0)+52>>2]|0,C,k,1)|0;d=dS(a,b,d,e,f,l,c[A>>2]|0,C,k,1)|0;g=l;l=2;break}else{l=eS(g,n,m)|0;d=dS(a,b,d,e,f,g,c[i>>2]|0,C,k,2)|0;d=dS(a,b,d,e,f,g,c[A>>2]|0,C,k,1)|0;d=dS(a,b,d,e,f,g,c[f+(C*72|0)+52>>2]|0,C,k,1)|0;g=l;i=u;l=2;break}}}else if(!m)break a;if((r|0)>0?(G=f+(C*72|0)+52|0,H=c[G>>2]|0,(H|0)>0):0){n=c[y>>2]|0;if(+B(+(+h[t>>3]-+h[e+(n*56|0)+8>>3]))<=1.0e-07?+B(+(+h[v>>3]-+h[e+(n*56|0)>>3]))<=1.0e-07:0){m=c[f+(H*72|0)>>2]|0;if((l|0)==2&(r|0)==(j|0)){l=eS(g,m,n)|0;d=dS(a,b,d,e,f,g,c[A>>2]|0,C,k,1)|0;d=dS(a,b,d,e,f,l,c[i>>2]|0,C,k,2)|0;d=dS(a,b,d,e,f,l,c[f+(C*72|0)+44>>2]|0,C,k,2)|0;g=l;i=G;l=1;break}else{l=eS(g,n,m)|0;d=dS(a,b,d,e,f,g,c[f+(C*72|0)+44>>2]|0,C,k,2)|0;d=dS(a,b,d,e,f,g,c[G>>2]|0,C,k,1)|0;d=dS(a,b,d,e,f,g,c[i>>2]|0,C,k,2)|0;g=l;i=A;l=1;break}}m=c[f+(H*72|0)>>2]|0;n=c[e+((c[f+(C*72|0)+4>>2]|0)*56|0)+44>>2]|0;if((l|0)==2&(H|0)==(j|0)){l=eS(g,n,m)|0;d=dS(a,b,d,e,f,g,c[G>>2]|0,C,k,1)|0;d=dS(a,b,d,e,f,l,c[f+(C*72|0)+44>>2]|0,C,k,2)|0;d=dS(a,b,d,e,f,l,c[i>>2]|0,C,k,2)|0;g=l;i=A;l=1;break}else{l=eS(g,m,n)|0;d=dS(a,b,d,e,f,g,c[i>>2]|0,C,k,2)|0;d=dS(a,b,d,e,f,g,c[A>>2]|0,C,k,1)|0;d=dS(a,b,d,e,f,g,c[f+(C*72|0)+44>>2]|0,C,k,2)|0;g=l;i=G;l=1;break}}o=+h[t>>3];n=c[y>>2]|0;if(((+B(+(o-+h[e+(n*56|0)+8>>3]))<=1.0e-07?+B(+(+h[v>>3]-+h[e+(n*56|0)>>3]))<=1.0e-07:0)?(J=c[f+(C*72|0)+4>>2]|0,+B(+(+h[x>>3]-+h[e+(J*56|0)+8>>3]))<=1.0e-07):0)?+B(+(+h[w>>3]-+h[e+(J*56|0)>>3]))<=1.0e-07:0)if((l|0)==1){l=eS(g,n,J)|0;d=dS(a,b,d,e,f,g,c[i>>2]|0,C,k,2)|0;d=dS(a,b,d,e,f,g,c[f+(C*72|0)+44>>2]|0,C,k,2)|0;d=dS(a,b,d,e,f,l,c[f+(C*72|0)+52>>2]|0,C,k,1)|0;g=l;i=A;l=1;break}else{l=eS(g,J,n)|0;d=dS(a,b,d,e,f,g,c[f+(C*72|0)+52>>2]|0,C,k,1)|0;d=dS(a,b,d,e,f,g,c[A>>2]|0,C,k,1)|0;d=dS(a,b,d,e,f,l,c[i>>2]|0,C,k,2)|0;g=l;i=f+(C*72|0)+44|0;l=2;break}j=c[f+(C*72|0)+4>>2]|0;if(((+B(+(o-+h[e+(j*56|0)+24>>3]))<=1.0e-07?+B(+(+h[v>>3]-+h[e+(j*56|0)+16>>3]))<=1.0e-07:0)?+B(+(+h[x>>3]-+h[e+(n*56|0)+24>>3]))<=1.0e-07:0)?+B(+(+h[w>>3]-+h[e+(n*56|0)+16>>3]))<=1.0e-07:0){m=c[e+(j*56|0)+44>>2]|0;j=c[e+(n*56|0)+44>>2]|0;if((l|0)==1){l=eS(g,j,m)|0;d=dS(a,b,d,e,f,g,c[i>>2]|0,C,k,2)|0;d=dS(a,b,d,e,f,g,c[f+(C*72|0)+44>>2]|0,C,k,2)|0;d=dS(a,b,d,e,f,l,c[f+(C*72|0)+52>>2]|0,C,k,1)|0;g=l;i=A;l=1;break}else{l=eS(g,m,j)|0;d=dS(a,b,d,e,f,g,c[f+(C*72|0)+52>>2]|0,C,k,1)|0;d=dS(a,b,d,e,f,g,c[A>>2]|0,C,k,1)|0;d=dS(a,b,d,e,f,l,c[i>>2]|0,C,k,2)|0;g=l;i=f+(C*72|0)+44|0;l=2;break}}d=dS(a,b,d,e,f,g,z,C,k,2)|0;d=dS(a,b,d,e,f,g,c[A>>2]|0,C,k,1)|0;d=dS(a,b,d,e,f,g,c[f+(C*72|0)+44>>2]|0,C,k,2)|0;i=f+(C*72|0)+52|0;l=1}while(0);j=C;C=c[i>>2]|0}return d|0}function eS(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0;f=l;l=l+16|0;r=f+4|0;i=f;e=(c[46622]|0)+1|0;c[46622]=e;m=c[46619]|0;fS(b,d,r,i);r=c[r>>2]|0;h=c[m+(b*56|0)+32+(r<<2)>>2]|0;i=c[m+(d*56|0)+32+(c[i>>2]<<2)>>2]|0;n=c[46621]|0;g=n+1|0;n=n+2|0;c[46621]=n;q=c[46618]|0;c[q+(g<<4)>>2]=b;c[q+(n<<4)>>2]=d;o=q+(h<<4)+4|0;p=q+(g<<4)+4|0;c[p>>2]=c[o>>2];c[q+(c[o>>2]<<4)+8>>2]=g;c[q+(g<<4)+8>>2]=n;c[q+(n<<4)+4>>2]=g;j=q+(i<<4)+8|0;c[q+(n<<4)+8>>2]=c[j>>2];c[q+(c[j>>2]<<4)+4>>2]=n;c[o>>2]=i;c[j>>2]=h;j=m+(b*56|0)+48|0;o=c[j>>2]|0;i=m+(d*56|0)+48|0;k=c[i>>2]|0;c[m+(b*56|0)+16+(r<<2)>>2]=d;c[m+(b*56|0)+32+(o<<2)>>2]=g;c[m+(b*56|0)+16+(o<<2)>>2]=c[q+(c[p>>2]<<4)>>2];c[m+(d*56|0)+32+(k<<2)>>2]=n;c[m+(d*56|0)+16+(k<<2)>>2]=b;c[j>>2]=(c[j>>2]|0)+1;c[i>>2]=(c[i>>2]|0)+1;d=c[46620]|0;c[d+(a<<2)>>2]=h;c[d+(e<<2)>>2]=g;l=f;return e|0}function fS(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0.0,h=0,i=0,j=0.0,k=0.0,l=0,m=0,n=0;l=c[46619]|0;m=l+(a*56|0)|0;n=l+(b*56|0)|0;f=0;g=-4.0;i=0;while(1){if((i|0)==4)break;h=c[l+(a*56|0)+16+(i<<2)>>2]|0;if((h|0)>=1?(j=+gS(m,l+(h*56|0)|0,n),j>g):0){f=i;g=j}i=i+1|0}c[d>>2]=f;f=0;i=0;g=-4.0;while(1){if((i|0)==4)break;h=c[l+(b*56|0)+16+(i<<2)>>2]|0;if((h|0)>=1?(k=+gS(n,l+(h*56|0)|0,m),k>g):0){f=i;g=k}i=i+1|0}c[e>>2]=f;return}function gS(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0,f=0.0,g=0.0,i=0.0;g=+h[a>>3];i=+h[b>>3]-g;d=+h[a+8>>3];f=+h[b+8>>3]-d;g=+h[c>>3]-g;d=+h[c+8>>3]-d;e=d*f+g*i;if(!(d*i-g*f>=0.0))d=-e/(+C(+(d*d+g*g))*+C(+(f*f+i*i)))+-2.0;else d=e/(+C(+(d*d+g*g))*+C(+(f*f+i*i)));return +d}function hS(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0.0,l=0.0;c[e>>2]=c[a>>2];c[e+4>>2]=c[a+4>>2];c[e+8>>2]=c[a+8>>2];c[e+12>>2]=c[a+12>>2];i=e+32|0;j=a+16|0;c[i>>2]=c[j>>2];c[i+4>>2]=c[j+4>>2];c[i+8>>2]=c[j+8>>2];c[i+12>>2]=c[j+12>>2];if(!d){f=a+8|0;g=j;i=a+24|0;d=a}else{f=a+24|0;g=a;i=a+8|0;d=j}k=+h[g>>3];l=+h[i>>3];h[e+16>>3]=+h[d>>3];h[e+24>>3]=l;h[e+48>>3]=k;h[e+56>>3]=+h[f>>3];a:do if(b|0){d=0;while(1){if((d|0)==4)break a;j=e+(d<<4)+8|0;l=+h[j>>3];b=e+(d<<4)|0;h[j>>3]=+h[b>>3];h[b>>3]=-l;d=d+1|0}}while(0);return}function iS(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;h=b+3|0;i=b+1|0;j=b+2|0;k=a+(b*56|0)+44|0;l=a+(h*56|0)+44|0;e=0;f=b;while(1){if((f|0)>(h|0))break;do if((f|0)!=(b|0))if((f|0)==(h|0)){c[l>>2]=b;g=j;break}else{c[a+(f*56|0)+44>>2]=f+1;g=f+-1|0;break}else{c[k>>2]=i;g=h}while(0);c[a+(f*56|0)+48>>2]=g;c[a+(f*56|0)+32>>2]=0;n=a+(f*56|0)|0;m=d+(e<<4)|0;c[n>>2]=c[m>>2];c[n+4>>2]=c[m+4>>2];c[n+8>>2]=c[m+8>>2];c[n+12>>2]=c[m+12>>2];G3(a+(g*56|0)+16|0,m|0,16)|0;e=e+1|0;f=f+1|0}return b+4|0}function jS(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0;c[46623]=e<<1;c[46624]=e;k=uH(e*80|0)|0;c[46625]=1;c[46626]=1;H3(f|0,0,e*72|0)|0;g=kS(c[d+4>>2]|0,b,f,k)|0;e=1;while(1){if((e|0)>(a|0))break;c[b+(e*56|0)+40>>2]=g;c[b+(e*56|0)+36>>2]=g;e=e+1|0}j=lS(a)|0;g=2;i=1;while(1){if((i|0)>(j|0))break;e=mS(a,i+-1|0)|0;h=mS(a,i)|0;while(1){if((e|0)>=(h|0)){e=1;break}nS(c[d+(g<<2)>>2]|0,b,f,k);e=e+1|0;g=g+1|0}while(1){if((e|0)>(a|0))break;oS(e,b,f,k);e=e+1|0}i=i+1|0}e=mS(a,j)|0;while(1){if((e|0)>=(a|0))break;nS(c[d+(g<<2)>>2]|0,b,f,k);g=g+1|0;e=e+1|0}D_(k);return c[46625]|0}function kS(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;f=tS()|0;c[e+(f*40|0)>>2]=2;s=e+(f*40|0)+8|0;k=b+(a*56|0)|0;l=b+(a*56|0)+16|0;xS(s,k,l);n=tS()|0;c[e+(f*40|0)+36>>2]=n;c[e+(n*40|0)>>2]=3;c[e+(n*40|0)+28>>2]=f;j=tS()|0;c[e+(f*40|0)+32>>2]=j;c[e+(j*40|0)>>2]=2;r=e+(j*40|0)+8|0;yS(r,k,l);c[e+(j*40|0)+28>>2]=f;l=tS()|0;c[e+(j*40|0)+32>>2]=l;c[e+(l*40|0)>>2]=3;c[e+(l*40|0)+28>>2]=j;k=tS()|0;c[e+(j*40|0)+36>>2]=k;c[e+(k*40|0)>>2]=1;c[e+(k*40|0)+4>>2]=a;c[e+(k*40|0)+28>>2]=j;j=tS()|0;c[e+(k*40|0)+32>>2]=j;c[e+(j*40|0)>>2]=3;c[e+(j*40|0)+28>>2]=k;g=tS()|0;c[e+(k*40|0)+36>>2]=g;c[e+(g*40|0)>>2]=3;c[e+(g*40|0)+28>>2]=k;k=sS(d)|0;i=sS(d)|0;m=sS(d)|0;o=sS(d)|0;p=d+(k*72|0)+8|0;q=d+(i*72|0)+8|0;t=d+(o*72|0)+24|0;c[t>>2]=c[s>>2];c[t+4>>2]=c[s+4>>2];c[t+8>>2]=c[s+8>>2];c[t+12>>2]=c[s+12>>2];G3(q|0,s|0,16)|0;c[p>>2]=c[q>>2];c[p+4>>2]=c[q+4>>2];c[p+8>>2]=c[q+8>>2];c[p+12>>2]=c[q+12>>2];p=d+(k*72|0)+24|0;q=d+(i*72|0)+24|0;s=d+(m*72|0)+8|0;c[s>>2]=c[r>>2];c[s+4>>2]=c[r+4>>2];c[s+8>>2]=c[r+8>>2];c[s+12>>2]=c[r+12>>2];G3(q|0,r|0,16)|0;c[p>>2]=c[q>>2];c[p+4>>2]=c[q+4>>2];c[p+8>>2]=c[q+8>>2];c[p+12>>2]=c[q+12>>2];h[d+(o*72|0)+16>>3]=1073741824.0;h[d+(o*72|0)+8>>3]=1073741824.0;h[d+(m*72|0)+32>>3]=-1073741824.0;h[d+(m*72|0)+24>>3]=-1073741824.0;c[d+(i*72|0)>>2]=a;c[d+(k*72|0)+4>>2]=a;c[d+(i*72|0)+40>>2]=o;c[d+(k*72|0)+40>>2]=o;c[d+(i*72|0)+48>>2]=m;c[d+(k*72|0)+48>>2]=m;c[d+(m*72|0)+40>>2]=k;c[d+(o*72|0)+48>>2]=k;c[d+(m*72|0)+44>>2]=i;c[d+(o*72|0)+52>>2]=i;c[d+(k*72|0)+56>>2]=j;c[d+(i*72|0)+56>>2]=g;c[d+(m*72|0)+56>>2]=l;c[d+(o*72|0)+56>>2]=n;c[d+(i*72|0)+68>>2]=1;c[d+(k*72|0)+68>>2]=1;c[d+(o*72|0)+68>>2]=1;c[d+(m*72|0)+68>>2]=1;c[e+(n*40|0)+24>>2]=o;c[e+(l*40|0)+24>>2]=m;c[e+(j*40|0)+24>>2]=k;c[e+(g*40|0)+24>>2]=i;c[b+(a*56|0)+32>>2]=1;return f|0}function lS(a){a=a|0;var b=0.0;b=+(a|0);a=0;while(1){if(!(b>=1.0))break;b=+g$(b);a=a+1|0}return a+-1|0}function mS(a,b){a=a|0;b=b|0;var c=0.0,d=0.0;d=+(a|0);c=d;a=0;while(1){if((a|0)>=(b|0))break;c=+g$(c);a=a+1|0}return ~~+N(+(d/c))|0}function nS(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0.0,j=0.0,k=0,m=0,n=0,o=0,p=0,q=0.0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0;W=l;l=l+96|0;S=W+32|0;f=W+16|0;T=W;s=S;k=b+(a*56|0)|0;r=s+56|0;do{c[s>>2]=c[k>>2];s=s+4|0;k=k+4|0}while((s|0)<(r|0));U=S+16|0;V=S+24|0;i=+h[V>>3];H=S+8|0;j=+h[H>>3];do if(!(i>j+1.0e-07)){if(!(i>3]>+h[S>>3]:0){G=4;break}G=(rS(a,b,1)|0)==0;f=c[S+36>>2]|0;if(G){n=0;G=7}else{f=pS(S,U,f,b,e)|0;G=20}}else G=4;while(0);if((G|0)==4){c[f>>2]=c[S>>2];c[f+4>>2]=c[S+4>>2];c[f+8>>2]=c[S+8>>2];c[f+12>>2]=c[S+12>>2];c[S>>2]=c[U>>2];c[S+4>>2]=c[U+4>>2];c[S+8>>2]=c[U+8>>2];c[S+12>>2]=c[U+12>>2];c[U>>2]=c[f>>2];c[U+4>>2]=c[f+4>>2];c[U+8>>2]=c[f+8>>2];c[U+12>>2]=c[f+12>>2];E=S+36|0;F=c[E>>2]|0;G=S+40|0;f=c[G>>2]|0;c[E>>2]=f;c[G>>2]=F;if(!(rS(a,b,2)|0)){n=1;G=7}else{f=pS(S,U,f,b,e)|0;G=19}}if((G|0)==7){m=pS(S,U,f,b,e)|0;f=sS(d)|0;c[d+(f*72|0)+68>>2]=1;s=d+(f*72|0)|0;k=d+(m*72|0)|0;r=s+72|0;do{c[s>>2]=c[k>>2];s=s+4|0;k=k+4|0}while((s|0)<(r|0));q=+h[H>>3];h[d+(f*72|0)+16>>3]=q;h[d+(m*72|0)+32>>3]=q;q=+h[S>>3];h[d+(f*72|0)+8>>3]=q;h[d+(m*72|0)+24>>3]=q;c[d+(m*72|0)+48>>2]=f;c[d+(m*72|0)+52>>2]=0;c[d+(f*72|0)+40>>2]=m;c[d+(f*72|0)+44>>2]=0;g=c[d+(f*72|0)+48>>2]|0;if((g|0)>0){k=d+(g*72|0)+40|0;if((c[k>>2]|0)==(m|0))c[k>>2]=f;g=d+(g*72|0)+44|0;if((c[g>>2]|0)==(m|0))c[g>>2]=f}g=c[d+(f*72|0)+52>>2]|0;if((g|0)>0){k=d+(g*72|0)+40|0;if((c[k>>2]|0)==(m|0))c[k>>2]=f;g=d+(g*72|0)+44|0;if((c[g>>2]|0)==(m|0))c[g>>2]=f}E=tS()|0;G=tS()|0;F=d+(m*72|0)+56|0;D=c[F>>2]|0;c[e+(D*40|0)>>2]=2;C=e+(D*40|0)+8|0;c[C>>2]=c[S>>2];c[C+4>>2]=c[S+4>>2];c[C+8>>2]=c[S+8>>2];c[C+12>>2]=c[S+12>>2];c[e+(D*40|0)+4>>2]=a;c[e+(D*40|0)+32>>2]=G;c[e+(D*40|0)+36>>2]=E;c[e+(E*40|0)>>2]=3;c[e+(E*40|0)+24>>2]=m;c[e+(E*40|0)+28>>2]=D;c[e+(G*40|0)>>2]=3;c[e+(G*40|0)+24>>2]=f;c[e+(G*40|0)+28>>2]=D;c[F>>2]=E;c[d+(f*72|0)+56>>2]=G;if(n)G=19;else G=20}if((G|0)==19)if(!(rS(a,b,1)|0)){g=1;G=21}else{g=1;G=32}else if((G|0)==20)if(!(rS(a,b,2)|0)){g=0;G=21}else{g=0;G=32}if((G|0)==21){o=pS(U,S,c[S+40>>2]|0,b,e)|0;n=sS(d)|0;c[d+(n*72|0)+68>>2]=1;s=d+(n*72|0)|0;k=d+(o*72|0)|0;r=s+72|0;do{c[s>>2]=c[k>>2];s=s+4|0;k=k+4|0}while((s|0)<(r|0));q=+h[V>>3];h[d+(n*72|0)+16>>3]=q;h[d+(o*72|0)+32>>3]=q;q=+h[U>>3];h[d+(n*72|0)+8>>3]=q;h[d+(o*72|0)+24>>3]=q;c[d+(o*72|0)+48>>2]=n;c[d+(o*72|0)+52>>2]=0;c[d+(n*72|0)+40>>2]=o;c[d+(n*72|0)+44>>2]=0;k=c[d+(n*72|0)+48>>2]|0;if((k|0)>0){m=d+(k*72|0)+40|0;if((c[m>>2]|0)==(o|0))c[m>>2]=n;k=d+(k*72|0)+44|0;if((c[k>>2]|0)==(o|0))c[k>>2]=n}k=c[d+(n*72|0)+52>>2]|0;if((k|0)>0){m=d+(k*72|0)+40|0;if((c[m>>2]|0)==(o|0))c[m>>2]=n;k=d+(k*72|0)+44|0;if((c[k>>2]|0)==(o|0))c[k>>2]=n}D=tS()|0;F=tS()|0;E=d+(o*72|0)+56|0;C=c[E>>2]|0;c[e+(C*40|0)>>2]=2;A=e+(C*40|0)+8|0;c[A>>2]=c[U>>2];c[A+4>>2]=c[U+4>>2];c[A+8>>2]=c[U+8>>2];c[A+12>>2]=c[U+12>>2];c[e+(C*40|0)+4>>2]=a;c[e+(C*40|0)+32>>2]=F;c[e+(C*40|0)+36>>2]=D;c[e+(D*40|0)>>2]=3;c[e+(D*40|0)+24>>2]=o;c[e+(D*40|0)+28>>2]=C;c[e+(F*40|0)>>2]=3;c[e+(F*40|0)+24>>2]=n;c[e+(F*40|0)+28>>2]=C;c[E>>2]=D;c[d+(n*72|0)+56>>2]=F;F=f;f=0}else if((G|0)==32){F=f;o=pS(U,S,c[S+40>>2]|0,b,e)|0;f=1}a:do if((F|0)>0){D=d+(o*72|0)+24|0;E=d+(o*72|0)+32|0;C=(f|0)!=0;y=g?b+(a*56|0)+48|0:b+(a*56|0)+44|0;z=T+8|0;g=0;f=0;x=F;b:while(1){k=d+(x*72|0)|0;v=d+(x*72|0)+24|0;if(!(uS(v,D)|0))break a;m=d+(x*72|0)+56|0;u=c[m>>2]|0;n=tS()|0;p=tS()|0;c[e+(u*40|0)>>2]=1;c[e+(u*40|0)+4>>2]=a;c[e+(u*40|0)+32>>2]=n;c[e+(u*40|0)+36>>2]=p;c[e+(n*40|0)>>2]=3;c[e+(n*40|0)+24>>2]=x;c[e+(n*40|0)+28>>2]=u;c[e+(p*40|0)>>2]=3;w=sS(d)|0;c[e+(p*40|0)+24>>2]=w;A=d+(w*72|0)|0;c[d+(w*72|0)+68>>2]=1;c[e+(p*40|0)+28>>2]=u;g=(x|0)==(F|0)?w:g;u=d+(x*72|0)+32|0;if(+B(+(+h[u>>3]-+h[E>>3]))<=1.0e-07?+B(+(+h[v>>3]-+h[D>>3]))<=1.0e-07:0)f=w;s=A;r=s+72|0;do{c[s>>2]=c[k>>2];s=s+4|0;k=k+4|0}while((s|0)<(r|0));c[m>>2]=n;c[d+(w*72|0)+56>>2]=p;t=d+(x*72|0)+48|0;m=d+(x*72|0)+52|0;k=(c[m>>2]|0)<1;do if((c[t>>2]|0)<1){if(k)break b;s=d+(x*72|0)+40|0;k=c[s>>2]|0;do if((k|0)>0?(M=d+(x*72|0)+44|0,N=c[M>>2]|0,(N|0)>0):0){r=d+(x*72|0)+60|0;k=c[r>>2]|0;if((k|0)<=0){c[d+(w*72|0)+40>>2]=N;c[d+(w*72|0)+44>>2]=-1;c[M>>2]=-1;c[d+(N*72|0)+48>>2]=w;break}if((c[d+(x*72|0)+64>>2]|0)==1){c[d+(w*72|0)+40>>2]=N;c[M>>2]=-1;c[d+(w*72|0)+44>>2]=k;c[d+((c[s>>2]|0)*72|0)+48>>2]=x;p=w;n=N}else{c[d+(w*72|0)+44>>2]=-1;t=d+(w*72|0)+40|0;c[t>>2]=c[M>>2];n=c[s>>2]|0;c[M>>2]=n;c[s>>2]=k;c[d+(k*72|0)+48>>2]=x;p=x;k=c[t>>2]|0}c[d+(n*72|0)+48>>2]=p;c[d+(k*72|0)+48>>2]=w;c[d+(w*72|0)+60>>2]=0;c[r>>2]=0}else G=77;while(0);do if((G|0)==77){G=0;n=d+(k*72|0)+48|0;p=c[n>>2]|0;k=d+(k*72|0)+52|0;if((p|0)>0?(c[k>>2]|0)>0:0){k=c[d+(p*72|0)+4>>2]|0;if((k|0)>0?(qS(k,b,U)|0)==0:0){c[d+(w*72|0)+44>>2]=-1;c[d+(x*72|0)+44>>2]=-1;c[s>>2]=-1;c[d+((c[d+(w*72|0)+40>>2]|0)*72|0)+52>>2]=w;break}c[d+(x*72|0)+44>>2]=-1;c[d+(w*72|0)+44>>2]=-1;c[d+(w*72|0)+40>>2]=-1;c[d+((c[s>>2]|0)*72|0)+48>>2]=x;break}c[n>>2]=x;c[k>>2]=w}while(0);if(+B(+(+h[u>>3]-+h[E>>3]))<=1.0e-07?C&+B(+(+h[v>>3]-+h[D>>3]))<=1.0e-07:0){k=c[y>>2]|0;if((k|0)>0?(qS(k,b,S)|0)!=0:0){c[d+((c[m>>2]|0)*72|0)+40>>2]=x;n=d+(w*72|0)+52|0;k=w}else{c[d+((c[d+(w*72|0)+52>>2]|0)*72|0)+44>>2]=w;n=m;k=x}c[n>>2]=-1;c[d+(k*72|0)+48>>2]=-1;k=c[m>>2]|0;break}k=c[m>>2]|0;m=d+(k*72|0)+40|0;n=c[m>>2]|0;p=d+(k*72|0)+44|0;if((n|0)>0?(O=c[p>>2]|0,P=(n|0)==(x|0),(O|0)>0):0){c[d+(k*72|0)+60>>2]=P?O:n;c[d+(k*72|0)+64>>2]=P?1:2}c[m>>2]=x;c[p>>2]=w}else{if(!k){i=+h[u>>3];j=+h[H>>3];q=i-j;if(!(+B(+q)<=1.0e-07)){h[z>>3]=i;i=+h[S>>3];h[T>>3]=(+h[U>>3]-i)*(q/(+h[V>>3]-j))+i;s=(vS(T,v)|0)!=0}else s=+h[v>>3]>+h[S>>3];r=d+(x*72|0)+40|0;k=c[r>>2]|0;do if((k|0)>0?(Q=d+(x*72|0)+44|0,R=c[Q>>2]|0,(R|0)>0):0){p=d+(x*72|0)+60|0;k=c[p>>2]|0;if((k|0)<=0){c[d+(w*72|0)+40>>2]=R;c[d+(w*72|0)+44>>2]=-1;c[Q>>2]=-1;c[d+(R*72|0)+48>>2]=w;break}if((c[d+(x*72|0)+64>>2]|0)==1){c[d+(w*72|0)+40>>2]=R;c[Q>>2]=-1;c[d+(w*72|0)+44>>2]=k;c[d+((c[r>>2]|0)*72|0)+48>>2]=x;n=w;m=R}else{c[d+(w*72|0)+44>>2]=-1;X=d+(w*72|0)+40|0;c[X>>2]=c[Q>>2];m=c[r>>2]|0;c[Q>>2]=m;c[r>>2]=k;c[d+(k*72|0)+48>>2]=x;n=x;k=c[X>>2]|0}c[d+(m*72|0)+48>>2]=n;c[d+(k*72|0)+48>>2]=w;c[d+(w*72|0)+60>>2]=0;c[p>>2]=0}else G=106;while(0);do if((G|0)==106){G=0;m=d+(k*72|0)+48|0;n=c[m>>2]|0;k=d+(k*72|0)+52|0;if((n|0)>0?(c[k>>2]|0)>0:0){k=c[d+(n*72|0)+4>>2]|0;if((k|0)>0?(qS(k,b,U)|0)==0:0){c[d+(w*72|0)+44>>2]=-1;c[d+(x*72|0)+44>>2]=-1;c[r>>2]=-1;c[d+((c[d+(w*72|0)+40>>2]|0)*72|0)+52>>2]=w;break}c[d+(x*72|0)+44>>2]=-1;c[d+(w*72|0)+44>>2]=-1;c[d+(w*72|0)+40>>2]=-1;c[d+((c[r>>2]|0)*72|0)+48>>2]=x;break}c[m>>2]=x;c[k>>2]=w}while(0);if(+B(+(+h[u>>3]-+h[E>>3]))<=1.0e-07?C&+B(+(+h[v>>3]-+h[D>>3]))<=1.0e-07:0){k=c[t>>2]|0;c[d+(k*72|0)+40>>2]=x;c[d+(k*72|0)+44>>2]=-1;k=d+(x*72|0)+52|0;X=c[k>>2]|0;c[d+(X*72|0)+40>>2]=w;c[d+(X*72|0)+44>>2]=-1;c[d+(w*72|0)+48>>2]=X;c[d+(w*72|0)+52>>2]=-1;c[k>>2]=-1;k=-1}else G=116;do if((G|0)==116){G=0;k=c[t>>2]|0;c[d+(k*72|0)+40>>2]=x;m=d+(k*72|0)+44|0;if(s){c[m>>2]=w;X=d+(x*72|0)+52|0;v=c[X>>2]|0;c[d+(v*72|0)+40>>2]=w;c[d+(v*72|0)+44>>2]=-1;c[X>>2]=-1;break}else{c[m>>2]=-1;k=d+(x*72|0)+52|0;X=c[k>>2]|0;c[d+(X*72|0)+40>>2]=x;c[d+(X*72|0)+44>>2]=w;c[d+(w*72|0)+48>>2]=X;c[d+(w*72|0)+52>>2]=-1;k=c[k>>2]|0;break}}while(0);break}s=d+(x*72|0)+40|0;k=c[s>>2]|0;do if((k|0)>0?(I=d+(x*72|0)+44|0,J=c[I>>2]|0,(J|0)>0):0){r=d+(x*72|0)+60|0;k=c[r>>2]|0;if((k|0)<=0){c[d+(w*72|0)+40>>2]=J;c[d+(w*72|0)+44>>2]=-1;c[I>>2]=-1;c[d+(J*72|0)+48>>2]=w;break}if((c[d+(x*72|0)+64>>2]|0)==1){c[d+(w*72|0)+40>>2]=J;c[I>>2]=-1;c[d+(w*72|0)+44>>2]=k;c[d+((c[s>>2]|0)*72|0)+48>>2]=x;p=w;n=J}else{c[d+(w*72|0)+44>>2]=-1;X=d+(w*72|0)+40|0;c[X>>2]=c[I>>2];n=c[s>>2]|0;c[I>>2]=n;c[s>>2]=k;c[d+(k*72|0)+48>>2]=x;p=x;k=c[X>>2]|0}c[d+(n*72|0)+48>>2]=p;c[d+(k*72|0)+48>>2]=w;c[d+(w*72|0)+60>>2]=0;c[r>>2]=0}else G=51;while(0);do if((G|0)==51){G=0;n=d+(k*72|0)+48|0;p=c[n>>2]|0;k=d+(k*72|0)+52|0;if((p|0)>0?(c[k>>2]|0)>0:0){k=c[d+(p*72|0)+4>>2]|0;if((k|0)>0?(qS(k,b,U)|0)==0:0){c[d+(w*72|0)+44>>2]=-1;c[d+(x*72|0)+44>>2]=-1;c[s>>2]=-1;c[d+((c[d+(w*72|0)+40>>2]|0)*72|0)+52>>2]=w;break}c[d+(x*72|0)+44>>2]=-1;c[d+(w*72|0)+44>>2]=-1;c[d+(w*72|0)+40>>2]=-1;c[d+((c[s>>2]|0)*72|0)+48>>2]=x;break}c[n>>2]=x;c[k>>2]=w}while(0);if(+B(+(+h[u>>3]-+h[E>>3]))<=1.0e-07?C&+B(+(+h[v>>3]-+h[D>>3]))<=1.0e-07:0){k=c[y>>2]|0;if((k|0)>0?(qS(k,b,S)|0)!=0:0){c[d+((c[t>>2]|0)*72|0)+40>>2]=x;m=d+(w*72|0)+52|0;k=w}else{c[d+((c[d+(w*72|0)+48>>2]|0)*72|0)+44>>2]=w;k=x}c[m>>2]=-1;c[d+(k*72|0)+48>>2]=-1;k=c[t>>2]|0;break}k=c[t>>2]|0;m=d+(k*72|0)+40|0;n=c[m>>2]|0;p=d+(k*72|0)+44|0;if((n|0)>0?(K=c[p>>2]|0,L=(n|0)==(x|0),(K|0)>0):0){c[d+(k*72|0)+60>>2]=L?K:n;c[d+(k*72|0)+64>>2]=L?1:2}c[m>>2]=x;c[p>>2]=w}while(0);c[A>>2]=a;c[d+(x*72|0)+4>>2]=a;if((k|0)>0)x=k;else break a}E1(135342,19,1,c[15686]|0)|0}else{g=0;f=0}while(0);wS(a,F,o,1,d,e);wS(a,g,f,2,d,e);c[b+(a*56|0)+32>>2]=1;l=W;return}function oS(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;if(!(c[b+(a*56|0)+32>>2]|0)){f=b+(a*56|0)|0;g=b+(a*56|0)+16|0;h=b+(a*56|0)+36|0;c[h>>2]=c[d+((pS(f,g,c[h>>2]|0,b,e)|0)*72|0)+56>>2];a=b+(a*56|0)+40|0;c[a>>2]=c[d+((pS(g,f,c[a>>2]|0,b,e)|0)*72|0)+56>>2]}return}function pS(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0.0,i=0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0,p=0.0,q=0,r=0;o=a+8|0;q=b+8|0;a:while(1){b:do switch(c[f+(d*40|0)>>2]|0){case 3:{r=3;break a}case 2:{g=+h[o>>3];i=f+(d*40|0)+8|0;j=+h[f+(d*40|0)+16>>3];k=j+1.0e-07;do if(!(g>k)){l=j+-1.0e-07;if(!(g>3]>+h[i>>3]:0)break;if(+B(+(g-j))<=1.0e-07?(m=+h[i>>3],+B(+(+h[a>>3]-m))<=1.0e-07):0){g=+h[q>>3];do if(!(g>k)){if(!(g>3]>m:0)break;d=f+(d*40|0)+32|0;break b}while(0);d=f+(d*40|0)+36|0;break b}d=f+(d*40|0)+32|0;break b}while(0);d=f+(d*40|0)+36|0;break}case 1:{g=+h[o>>3];i=c[f+(d*40|0)+4>>2]|0;if(+B(+(g-+h[e+(i*56|0)+8>>3]))<=1.0e-07?(n=+h[a>>3],+B(+(n-+h[e+(i*56|0)>>3]))<=1.0e-07):0)j=n;else r=19;do if((r|0)==19){r=0;if(+B(+(g-+h[e+(i*56|0)+24>>3]))<=1.0e-07?(p=+h[a>>3],+B(+(p-+h[e+(i*56|0)+16>>3]))<=1.0e-07):0){j=p;break}if(!(qS(i,e,a)|0)){d=f+(d*40|0)+36|0;break b}else{d=f+(d*40|0)+32|0;break b}}while(0);if(!(+B(+(g-+h[q>>3]))<=1.0e-07))if(!(qS(i,e,b)|0)){d=f+(d*40|0)+36|0;break b}else{d=f+(d*40|0)+32|0;break b}else if(+h[b>>3]>2]|0}if((r|0)==3)return c[f+(d*40|0)+24>>2]|0;else if((r|0)==31){E1(135276,35,1,c[15686]|0)|0;qa(135312,135314,349,135326)}return 0}function qS(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0,f=0,g=0.0,i=0,j=0,k=0.0;f=b+(a*56|0)+16|0;g=+h[b+(a*56|0)+24>>3];i=b+(a*56|0)|0;e=+h[b+(a*56|0)+8>>3];do if(!(g>e+1.0e-07)){if(!(g>3]>+h[i>>3]:0){j=4;break}d=+h[c+8>>3];if(+B(+(g-d))<=1.0e-07){d=+h[c>>3]<+h[f>>3]?1.0:-1.0;break}if(!(+B(+(e-d))<=1.0e-07)){k=+h[f>>3];d=(+h[i>>3]-k)*(d-g)-(+h[c>>3]-k)*(e-g);break}else{d=+h[c>>3]<+h[i>>3]?1.0:-1.0;break}}else j=4;while(0);do if((j|0)==4){d=+h[c+8>>3];if(+B(+(g-d))<=1.0e-07){d=+h[c>>3]<+h[f>>3]?1.0:-1.0;break}if(!(+B(+(e-d))<=1.0e-07)){k=+h[i>>3];d=(+h[f>>3]-k)*(d-e)-(+h[c>>3]-k)*(g-e);break}else{d=+h[c>>3]<+h[i>>3]?1.0:-1.0;break}}while(0);return d>0.0|0}function rS(a,b,d){a=a|0;b=b|0;d=d|0;return c[b+((c[((d|0)==1?b+(a*56|0)+48|0:b+(a*56|0)+44|0)>>2]|0)*56|0)+32>>2]|0}function sS(a){a=a|0;var b=0,d=0,e=0;e=l;l=l+16|0;d=e;b=c[46625]|0;if((b|0)<(c[46624]|0)){c[a+(b*72|0)>>2]=-1;c[a+(b*72|0)+4>>2]=-1;c[a+(b*72|0)+68>>2]=1;c[46625]=b+1;l=e;return b|0}else{e=c[15686]|0;c[d>>2]=b;g1(e,135401,d)|0;qa(135312,135314,88,135439)}return 0}function tS(){var a=0;a=c[46626]|0;if((a|0)<(c[46623]|0)){c[46626]=a+1;return a|0}else{E1(135362,30,1,c[15686]|0)|0;qa(135312,135314,72,135393)}return 0}function uS(a,b){a=a|0;b=b|0;var c=0.0,d=0.0;c=+h[a+8>>3];d=+h[b+8>>3];if(!(c>d+1.0e-07))if(c>3]>=+h[b>>3]&1;else a=1;return a|0}function vS(a,b){a=a|0;b=b|0;var c=0.0,d=0.0;c=+h[a+8>>3];d=+h[b+8>>3];if(!(cd+1.0e-07)a=0;else a=+h[a>>3]<+h[b>>3]&1;else a=1;return a|0}function wS(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;q=f+(d*72|0)+24|0;p=(e|0)==1;a:while(1){o=f+(b*72|0)+24|0;j=f+(b*72|0)+48|0;k=f+(b*72|0)+52|0;l=f+(b*72|0)|0;m=f+(b*72|0)+4|0;n=f+(b*72|0)+56|0;if((b|0)<=0)break;while(1){if(!(uS(o,q)|0))break a;d=c[j>>2]|0;e=(d|0)>0;do if(p){if(e?(c[f+(d*72|0)+4>>2]|0)==(a|0):0)break;d=c[k>>2]|0;if((d|0)<=0){b=d;continue a}if((c[f+(d*72|0)+4>>2]|0)!=(a|0)){b=d;continue a}}else{if(e?(c[f+(d*72|0)>>2]|0)==(a|0):0)break;d=c[k>>2]|0;if((d|0)<=0){b=d;continue a}if((c[f+(d*72|0)>>2]|0)!=(a|0)){b=d;continue a}}while(0);if((c[l>>2]|0)!=(c[f+(d*72|0)>>2]|0)){b=d;continue a}if((c[m>>2]|0)!=(c[f+(d*72|0)+4>>2]|0)){b=d;continue a}r=c[f+(d*72|0)+56>>2]|0;e=c[g+(r*40|0)+28>>2]|0;h=g+(e*40|0)+32|0;i=c[n>>2]|0;if((c[h>>2]|0)==(r|0))c[h>>2]=i;else c[g+(e*40|0)+36>>2]=i;e=c[f+(d*72|0)+48>>2]|0;c[j>>2]=e;do if((e|0)>0){h=f+(e*72|0)+40|0;if((c[h>>2]|0)==(d|0)){c[h>>2]=b;break}e=f+(e*72|0)+44|0;if((c[e>>2]|0)==(d|0))c[e>>2]=b}while(0);e=c[f+(d*72|0)+52>>2]|0;c[k>>2]=e;do if((e|0)>0){h=f+(e*72|0)+40|0;if((c[h>>2]|0)==(d|0)){c[h>>2]=b;break}e=f+(e*72|0)+44|0;if((c[e>>2]|0)==(d|0))c[e>>2]=b}while(0);r=f+(d*72|0)+24|0;c[o>>2]=c[r>>2];c[o+4>>2]=c[r+4>>2];c[o+8>>2]=c[r+8>>2];c[o+12>>2]=c[r+12>>2];c[f+(d*72|0)+68>>2]=2}}return}function xS(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0.0;e=+h[b+8>>3];f=+h[d+8>>3];do if(!(e>f+1.0e-07)){if(!(+B(+(e-f))<=1.0e-07)){c[a>>2]=c[d>>2];c[a+4>>2]=c[d+4>>2];c[a+8>>2]=c[d+8>>2];c[a+12>>2]=c[d+12>>2];break}if(+h[b>>3]>+h[d>>3]+1.0e-07){c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];break}else{c[a>>2]=c[d>>2];c[a+4>>2]=c[d+4>>2];c[a+8>>2]=c[d+8>>2];c[a+12>>2]=c[d+12>>2];break}}else{c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2]}while(0);return}function yS(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0.0;e=+h[b+8>>3];f=+h[d+8>>3];do if(!(e>2]=c[d>>2];c[a+4>>2]=c[d+4>>2];c[a+8>>2]=c[d+8>>2];c[a+12>>2]=c[d+12>>2];break}if(+h[b>>3]<+h[d>>3]){c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];break}else{c[a>>2]=c[d>>2];c[a+4>>2]=c[d+4>>2];c[a+8>>2]=c[d+8>>2];c[a+12>>2]=c[d+12>>2];break}}else{c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2]}while(0);return}function zS(a){a=a|0;var b=0;b=uH(8)|0;if(b|0){c[b+4>>2]=a;c[b>>2]=0}return b|0}function AS(a,b){a=a|0;b=b|0;if(b){b=zS(b)|0;c[b>>2]=a;a=b}return a|0}function BS(a){a=a|0;var b=0;do{b=a;a=c[a>>2]|0;D_(b)}while((a|0)!=0);return}function CS(){var a=0;a=uH(1992)|0;if(a|0)c[a>>2]=DS(a)|0;return a|0}function DS(a){a=a|0;var b=0;b=JS(a)|0;c[b+4>>2]=0;a=a+1972|0;c[a>>2]=(c[a>>2]|0)+1;return b|0}function ES(a){a=a|0;FS(a,c[a>>2]|0);D_(c[a>>2]|0);D_(a);return 0}function FS(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;g=a+1980|0;h=a+1912|0;i=a+1936|0;a:do if((c[b+4>>2]|0)>0){d=0;while(1){if((d|0)==64)break a;e=b+8+(d*20|0)+16|0;f=c[e>>2]|0;if(f|0?(FS(a,f),D_(c[e>>2]|0),PS(b,d),c[g>>2]=(c[g>>2]|0)+-1,c[h>>2]|0):0)c[i>>2]=(c[i>>2]|0)+1;d=d+1|0}}else{d=0;while(1){if((d|0)==64)break a;if(c[b+8+(d*20|0)+16>>2]|0?(PS(b,d),c[g>>2]=(c[g>>2]|0)+-1,c[h>>2]|0):0)c[i>>2]=(c[i>>2]|0)+1;d=d+1|0}}while(0);return}function GS(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;if(!b)qa(135797,135447,194,135455);e=c[b+4>>2]|0;if((e|0)<=-1)qa(135467,135447,195,135455);if(!d)qa(135739,135447,196,135455);i=a+1952|0;c[i>>2]=(c[i>>2]|0)+1;a:do if((e|0)>0){i=0;e=0;while(1){if((i|0)==64)break a;f=b+8+(i*20|0)+16|0;if((c[f>>2]|0)!=0?(US(d,b+8+(i*20|0)|0)|0)!=0:0){g=GS(a,c[f>>2]|0,d)|0;if(!e)e=g;else{f=e;while(1){h=c[f>>2]|0;if(!h)break;else f=h}c[f>>2]=g}}i=i+1|0}}else{g=0;e=0;while(1){if((g|0)==64)break a;f=b+8+(g*20|0)|0;if((c[b+8+(g*20|0)+16>>2]|0)!=0?(US(d,f)|0)!=0:0)e=AS(e,f)|0;g=g+1|0}}while(0);return e|0}function HS(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;p=l;l=l+64|0;k=p+52|0;m=p+32|0;n=p+16|0;o=p;c[k>>2]=0;if(!((b|0)!=0&(e|0)!=0))qa(135653,135447,247,135481);if((f|0)>-1?(j=c[e>>2]|0,(c[j+4>>2]|0)>=(f|0)):0){g=0;while(1){if((g|0)>=2)break;if((c[b+(g<<2)>>2]|0)>(c[b+(g+2<<2)>>2]|0)){h=8;break}else g=g+1|0}if((h|0)==8)qa(135528,135447,250,135481);i=a+1912|0;g=a+1908|0;h=c[g>>2]|0;if(c[i>>2]|0){q=h|0?a+1924|0:a+1916|0;c[q>>2]=(c[q>>2]|0)+1}if(!h){q=a+1964|0;c[q>>2]=(c[q>>2]|0)+1}if(!(IS(a,b,d,j,k,f)|0))g=0;else{if(c[i>>2]|0){q=c[g>>2]|0?a+1948|0:a+1944|0;c[q>>2]=(c[q>>2]|0)+1}g=JS(a)|0;q=a+1976|0;c[q>>2]=(c[q>>2]|0)+1;q=c[e>>2]|0;c[g+4>>2]=(c[q+4>>2]|0)+1;MS(n,q);c[m>>2]=c[n>>2];c[m+4>>2]=c[n+4>>2];c[m+8>>2]=c[n+8>>2];c[m+12>>2]=c[n+12>>2];q=m+16|0;c[q>>2]=c[e>>2];OS(a,m,g,0)|0;MS(o,c[k>>2]|0);c[m>>2]=c[o>>2];c[m+4>>2]=c[o+4>>2];c[m+8>>2]=c[o+8>>2];c[m+12>>2]=c[o+12>>2];c[q>>2]=c[k>>2];OS(a,m,g,0)|0;c[e>>2]=g;g=a+1980|0;c[g>>2]=(c[g>>2]|0)+2;g=1}l=p;return g|0}qa(135493,135447,248,135481);return 0}function IS(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;q=l;l=l+80|0;m=q+52|0;n=q+48|0;o=q+32|0;p=q+16|0;k=q;c[n>>2]=0;if(!((b|0)!=0&(e|0)!=0&(f|0)!=0))qa(135571,135447,311,135585);if((g|0)>-1?(i=e+4|0,h=c[i>>2]|0,(h|0)>=(g|0)):0){if(c[a+1912>>2]|0){h=c[a+1908>>2]|0?a+1948|0:a+1944|0;c[h>>2]=(c[h>>2]|0)+1;h=c[i>>2]|0}do if((h|0)>(g|0)){i=NS(b,e)|0;h=e+8+(i*20|0)+16|0;i=e+8+(i*20|0)|0;if(!(IS(a,b,d,c[h>>2]|0,n,g)|0)){TS(o,b,i);c[i>>2]=c[o>>2];c[i+4>>2]=c[o+4>>2];c[i+8>>2]=c[o+8>>2];c[i+12>>2]=c[o+12>>2];j=0;break}else{MS(p,c[h>>2]|0);c[i>>2]=c[p>>2];c[i+4>>2]=c[p+4>>2];c[i+8>>2]=c[p+8>>2];c[i+12>>2]=c[p+12>>2];j=c[n>>2]|0;c[m+16>>2]=j;MS(k,j);c[m>>2]=c[k>>2];c[m+4>>2]=c[k+4>>2];c[m+8>>2]=c[k+8>>2];c[m+12>>2]=c[k+12>>2];j=a+1980|0;c[j>>2]=(c[j>>2]|0)+1;j=OS(a,m,e,f)|0;break}}else if((h|0)==(g|0)){c[m>>2]=c[b>>2];c[m+4>>2]=c[b+4>>2];c[m+8>>2]=c[b+8>>2];c[m+12>>2]=c[b+12>>2];c[m+16>>2]=d;j=a+1980|0;c[j>>2]=(c[j>>2]|0)+1;j=OS(a,m,e,f)|0;break}else qa(135630,135447,341,135585);while(0);l=q;return j|0}qa(135598,135447,312,135585);return 0}function JS(a){a=a|0;a=a+1968|0;c[a>>2]=(c[a>>2]|0)+1;a=C_(1288)|0;KS(a);return a|0}function KS(a){a=a|0;var b=0;c[a>>2]=0;c[a+4>>2]=-1;b=0;while(1){if((b|0)==64)break;LS(a+8+(b*20|0)|0);b=b+1|0}return}function LS(a){a=a|0;QS(a);c[a+16>>2]=0;return}function MS(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=l;l=l+32|0;g=i+16|0;h=i;if(!b)qa(135797,135636,99,135643);QS(g);d=1;f=0;while(1){if((f|0)==64)break;do if(c[b+8+(f*20|0)+16>>2]|0){e=b+8+(f*20|0)|0;if(!d){TS(h,g,e);c[g>>2]=c[h>>2];c[g+4>>2]=c[h+4>>2];c[g+8>>2]=c[h+8>>2];c[g+12>>2]=c[h+12>>2];d=0;break}else{c[g>>2]=c[e>>2];c[g+4>>2]=c[e+4>>2];c[g+8>>2]=c[e+8>>2];c[g+12>>2]=c[e+12>>2];d=0;break}}while(0);f=f+1|0}c[a>>2]=c[g>>2];c[a+4>>2]=c[g+4>>2];c[a+8>>2]=c[g+8>>2];c[a+12>>2]=c[g+12>>2];l=i;return}function NS(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;k=l;l=l+32|0;i=k+16|0;j=k;if(!((a|0)!=0&(b|0)!=0))qa(135653,135636,125,135660);d=0;e=0;f=0;g=1;h=0;while(1){if((h|0)==64)break;if(c[b+8+(h*20|0)+16>>2]|0){n=b+8+(h*20|0)|0;p=SS(n)|0;TS(j,a,n);c[i>>2]=c[j>>2];c[i+4>>2]=c[j+4>>2];c[i+8>>2]=c[j+8>>2];c[i+12>>2]=c[j+12>>2];n=(SS(i)|0)-p|0;m=(g|0)!=0|(n|0)<(f|0);o=m|(p|0)<(e|0)&(n|0)==(f|0);d=o?h:d;e=o?p:e;f=o?n:f;g=m?0:g}h=h+1|0}l=k;return d|0}function OS(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;if(!b)qa(135819,135636,167,135671);if(!d)qa(135797,135636,168,135671);do if((c[d>>2]|0)<64){a=0;while(1){if((a|0)>=64){e=10;break}if(!(c[d+8+(a*20|0)+16>>2]|0)){e=8;break}a=a+1|0}if((e|0)==8){f=d+8+(a*20|0)|0;c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];c[f+16>>2]=c[b+16>>2];f=0;g=d;break}else if((e|0)==10)qa(135681,135636,178,135671)}else{if(c[a+1912>>2]|0){h=c[a+1908>>2]|0?a+1948|0:a+1944|0;c[h>>2]=(c[h>>2]|0)+1}if(!e)qa(135694,135636,187,135671);else{VS(a,d,b,e);f=1;g=(c[d+4>>2]|0)==0?a+1972|0:a+1976|0;break}}while(0);c[g>>2]=(c[g>>2]|0)+1;return f|0}function PS(a,b){a=a|0;b=b|0;if(!((a|0)!=0&b>>>0<64))qa(135698,135636,201,135726);if(!(c[a+8+(b*20|0)+16>>2]|0))qa(136220,135636,202,135726);else{LS(a+8+(b*20|0)|0);c[a>>2]=(c[a>>2]|0)+-1;return}}function QS(a){a=a|0;var b=0;b=0;while(1){if((b|0)==4)break;c[a+(b<<2)>>2]=0;b=b+1|0}return}function RS(a){a=a|0;var b=0,d=0,e=0;e=l;l=l+16|0;d=e;c[d>>2]=1;c[d+8>>2]=-1;b=1;while(1){if((b|0)==2)break;c[d+(b+2<<2)>>2]=0;c[d+(b<<2)>>2]=0;b=b+1|0}c[a>>2]=c[d>>2];c[a+4>>2]=c[d+4>>2];c[a+8>>2]=c[d+8>>2];c[a+12>>2]=c[d+12>>2];l=e;return}function SS(a){a=a|0;var b=0,d=0,e=0;if(!a)qa(135739,135741,128,135753);a:do if((c[a>>2]|0)>(c[a+8>>2]|0))b=0;else{b=1;d=0;while(1){if((d|0)==2)break a;e=O(c[a+(d+2<<2)>>2]|0,b)|0;b=e-(c[a+(d<<2)>>2]|0)|0;d=d+1|0}}while(0);return b|0}function TS(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;g=l;l=l+16|0;f=g;if(!((b|0)!=0&(d|0)!=0))qa(135762,135741,195,135770);do if((c[b>>2]|0)>(c[b+8>>2]|0)){c[a>>2]=c[d>>2];c[a+4>>2]=c[d+4>>2];c[a+8>>2]=c[d+8>>2];c[a+12>>2]=c[d+12>>2]}else{if((c[d>>2]|0)>(c[d+8>>2]|0)){c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];break}else e=0;while(1){if((e|0)==2)break;j=c[b+(e<<2)>>2]|0;h=c[d+(e<<2)>>2]|0;c[f+(e<<2)>>2]=(j|0)<(h|0)?j:h;h=e+2|0;j=c[b+(h<<2)>>2]|0;i=c[d+(h<<2)>>2]|0;c[f+(h<<2)>>2]=(j|0)>(i|0)?j:i;e=e+1|0}c[a>>2]=c[f>>2];c[a+4>>2]=c[f+4>>2];c[a+8>>2]=c[f+8>>2];c[a+12>>2]=c[f+12>>2]}while(0);l=g;return}function US(a,b){a=a|0;b=b|0;var d=0,e=0;if((a|0)!=0&(b|0)!=0)d=0;else qa(135782,135741,216,135789);while(1){if((d|0)>=2){d=1;break}e=d+2|0;if((c[a+(d<<2)>>2]|0)>(c[b+(e<<2)>>2]|0)){d=0;break}if((c[b+(d<<2)>>2]|0)>(c[a+(e<<2)>>2]|0)){d=0;break}else d=d+1|0}return d|0}function VS(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,i=0,j=0;if(!b)qa(135797,135799,40,135809);if(!d)qa(135819,135799,41,135809);j=a+1912|0;if(c[j>>2]|0){i=c[a+1908>>2]|0?a+1932|0:a+1928|0;c[i>>2]=(c[i>>2]|0)+1}h=b+4|0;i=c[h>>2]|0;WS(a,b,d);d=a+1324|0;XS(a);f=SS(a+1852|0)|0;f=(SS(a+1868|0)|0)+f|0;if(c[j>>2]|0?(f|0)!=0&(c[a+1908>>2]|0)==0:0){j=a+1960|0;g[j>>2]=+((c[a+1320>>2]|0)>>>0)/+(f|0)+ +g[j>>2]}j=JS(a)|0;c[e>>2]=j;c[h>>2]=i;c[j+4>>2]=i;YS(a,b,j,d);if(((c[c[e>>2]>>2]|0)+(c[b>>2]|0)|0)==65)return;else qa(135821,135799,86,135809)}function WS(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;h=l;l=l+16|0;g=h;if(!b)qa(135797,135799,106,136208);if(!d)qa(135819,135799,107,136208);else e=0;while(1){if((e|0)>=64)break;if(!(c[b+8+(e*20|0)+16>>2]|0)){f=7;break}j=b+8+(e*20|0)|0;i=a+4+(e*20|0)|0;c[i>>2]=c[j>>2];c[i+4>>2]=c[j+4>>2];c[i+8>>2]=c[j+8>>2];c[i+12>>2]=c[j+12>>2];c[i+16>>2]=c[j+16>>2];e=e+1|0}if((f|0)==7)qa(136220,135799,111,136208);e=a+4|0;j=a+1284|0;c[j>>2]=c[d>>2];c[j+4>>2]=c[d+4>>2];c[j+8>>2]=c[d+8>>2];c[j+12>>2]=c[d+12>>2];c[j+16>>2]=c[d+16>>2];d=a+1304|0;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];e=1;while(1){if((e|0)==65)break;TS(g,d,a+4+(e*20|0)|0);c[d>>2]=c[g>>2];c[d+4>>2]=c[g+4>>2];c[d+8>>2]=c[g+8>>2];c[d+12>>2]=c[g+12>>2];e=e+1|0}c[a+1320>>2]=SS(d)|0;KS(b);l=h;return}function XS(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;u=l;l=l+48|0;i=u+32|0;k=u+16|0;m=u;ZS(a);_S(a);q=a+1844|0;s=a+1848|0;t=a+1892|0;n=a+1852|0;o=a+1884|0;p=a+1868|0;j=a+1888|0;f=0;e=0;while(1){d=c[q>>2]|0;b=c[s>>2]|0;if((b+d|0)>=65)break;h=65-(c[t>>2]|0)|0;if((d|0)<(h|0)&(b|0)<(h|0)){g=-1;h=0}else{r=12;break}while(1){if((h|0)==65)break;if(!(c[a+1584+(h<<2)>>2]|0)){v=a+4+(h*20|0)|0;TS(k,v,n);c[i>>2]=c[k>>2];c[i+4>>2]=c[k+4>>2];c[i+8>>2]=c[k+8>>2];c[i+12>>2]=c[k+12>>2];b=SS(i)|0;d=c[o>>2]|0;TS(m,v,p);c[i>>2]=c[m>>2];c[i+4>>2]=c[m+4>>2];c[i+8>>2]=c[m+8>>2];c[i+12>>2]=c[m+12>>2];v=SS(i)|0;b=v-(c[j>>2]|0)+(d-b)|0;d=(b|0)>-1;b=d?b:0-b|0;d=(d^1)&1;if((b|0)<=(g|0))if((b|0)==(g|0)){v=(c[a+1844+(d<<2)>>2]|0)<(c[a+1844+(f<<2)>>2]|0);b=g;d=v?d:f;e=v?h:e}else{b=g;d=f}else e=h}else{b=g;d=f}g=b;h=h+1|0;f=d}$S(a,e,f)}if((r|0)==12){b=(d|0)>=(65-(c[t>>2]|0)|0)&1;d=0;while(1){if((d|0)==65)break;if(!(c[a+1584+(d<<2)>>2]|0))$S(a,d,b);d=d+1|0}d=c[q>>2]|0;b=c[s>>2]|0}if((b+d|0)!=65)qa(135964,135799,210,136050);v=c[t>>2]|0;if((d|0)<(v|0)|(b|0)<(v|0))qa(136061,135799,212,136050);else{l=u;return}}function YS(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;if(!b)qa(135797,135799,297,135861);if(!d)qa(135871,135799,298,135861);if(!e)qa(135873,135799,299,135861);else f=0;while(1){if((f|0)>=65){e=14;break}e=c[a+1324+(f<<2)>>2]|0;if(e>>>0>=2){e=9;break}switch(e|0){case 0:{OS(a,a+4+(f*20|0)|0,b,0)|0;break}case 1:{OS(a,a+4+(f*20|0)|0,d,0)|0;break}default:{}}f=f+1|0}if((e|0)==9)qa(135875,135799,303,135861);else if((e|0)==14)return}function ZS(a){a=a|0;var b=0,d=0,e=0,f=0;d=l;l=l+16|0;e=d;c[a+1848>>2]=0;c[a+1844>>2]=0;b=a+1852|0;f=a+1868|0;RS(e);c[f>>2]=c[e>>2];c[f+4>>2]=c[e+4>>2];c[f+8>>2]=c[e+8>>2];c[f+12>>2]=c[e+12>>2];c[b>>2]=c[e>>2];c[b+4>>2]=c[e+4>>2];c[b+8>>2]=c[e+8>>2];c[b+12>>2]=c[e+12>>2];c[a+1888>>2]=0;c[a+1884>>2]=0;b=0;while(1){if((b|0)==65)break;c[a+1584+(b<<2)>>2]=0;c[a+1324+(b<<2)>>2]=-1;b=b+1|0}l=d;return}function _S(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0;o=l;l=l+304|0;k=o+32|0;m=o+16|0;n=o;b=0;while(1){if((b|0)==65)break;c[k+(b<<2)>>2]=SS(a+4+(b*20|0)|0)|0;b=b+1|0}b=0;d=0;e=0;g=0;a:while(1){if((g|0)==64)break;i=g+1|0;j=a+4+(g*20|0)|0;h=k+(g<<2)|0;f=i;while(1){if((f|0)==65){g=i;continue a}TS(n,j,a+4+(f*20|0)|0);c[m>>2]=c[n>>2];c[m+4>>2]=c[n+4>>2];c[m+8>>2]=c[n+8>>2];c[m+12>>2]=c[n+12>>2];p=SS(m)|0;p=p-(c[h>>2]|0)-(c[k+(f<<2)>>2]|0)|0;q=p>>>0>e>>>0;r=q?f:b;f=f+1|0;b=r;d=q?g:d;e=q?p:e}}$S(a,d,0);$S(a,b,1);l=o;return}function $S(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;i=l;l=l+16|0;h=i;e=a+1584+(b<<2)|0;if(c[e>>2]|0)qa(136164,135799,257,136199);c[a+1324+(b<<2)>>2]=d;c[e>>2]=1;g=a+1844+(d<<2)|0;f=a+1852+(d<<4)|0;e=a+4+(b*20|0)|0;if(!(c[g>>2]|0)){c[f>>2]=c[e>>2];c[f+4>>2]=c[e+4>>2];c[f+8>>2]=c[e+8>>2];c[f+12>>2]=c[e+12>>2]}else{TS(h,e,f);c[f>>2]=c[h>>2];c[f+4>>2]=c[h+4>>2];c[f+8>>2]=c[h+8>>2];c[f+12>>2]=c[h+12>>2]}c[a+1884+(d<<2)>>2]=SS(f)|0;c[g>>2]=(c[g>>2]|0)+1;l=i;return}function aT(){var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=l;l=l+1200|0;r=t+800|0;g=t;c[46627]=0;c[46628]=-2;f=r;i=200;n=g;p=0;q=0;o=r;a:while(1){b[o>>1]=p;if((f+(i<<1)+-2|0)>>>0>o>>>0)k=i;else{m=o-f>>1;e=m+1|0;if(i>>>0>9999){s=95;break}k=i<<1;k=k>>>0<1e4?k:1e4;h=C_(k*6|3)|0;if(h){F3(h|0,f|0,e<<1|0)|0;i=h+(k>>>1<<2)|0;F3(i|0,n|0,e<<2|0)|0;if((f|0)==(r|0)){e=0;f=h}else{D_(f);e=0;f=h}}else{e=4;i=n}j=(e|0)==0;h=f+(m<<1)|0;switch((j?((f+(k<<1)+-2|0)>>>0>h>>>0?0:9):e)&15){case 9:{e=1;s=96;break a}case 4:{s=95;break a}case 0:{g=j?i+(m<<2)|0:g;n=i;o=j?h:o;break}default:{e=0;break a}}}if((p|0)==31){e=0;s=96;break}e=b[65430+(p<<1)>>1]|0;j=e<<16>>16;do if(e<<16>>16!=-82){h=c[46628]|0;if((h|0)==-2){h=pU()|0;c[46628]=h}if((h|0)>=1)if(h>>>0<296)i=d[136239+h>>0]|0;else i=2;else{c[46628]=0;i=0}h=i+j|0;if(h>>>0<=271?(i|0)==(a[136535+h>>0]|0):0){p=a[136807+h>>0]|0;e=p<<24>>24;if(p<<24>>24<1){h=0-e|0;s=23;break}else{c[46628]=-2;g=g+4|0;c[g>>2]=c[46629];j=(q|0)==0?0:q+-1|0;h=o;break}}else s=22}else s=22;while(0);if((s|0)==22){s=0;p=a[137079+p>>0]|0;h=p&255;if(!(p<<24>>24)){h=c[46628]|0;b:do switch(q|0){case 0:{c[46627]=(c[46627]|0)+1;vT(140679);h=o;break}case 3:if((h|0)<1)if(!h){e=1;s=96;break a}else{h=o;break b}else{c[46628]=-2;h=o;break b}default:h=o}while(0);while(1){if(e<<16>>16==8)break;if((h|0)==(f|0)){e=1;s=96;break a}e=h+-2|0;g=g+-4|0;h=e;e=b[65430+(b[e>>1]<<1)>>1]|0}g=g+4|0;c[g>>2]=c[46629];e=1;j=3}else s=23}do if((s|0)==23){s=0;j=d[137195+h>>0]|0;e=c[g+(1-j<<2)>>2]|0;do switch(h|0){case 4:{s=26;break a}case 2:{c[46630]=bT(c[g+-4>>2]|0,2)|0;break}case 3:{c[46630]=bT(c[g+-4>>2]|0,1)|0;break}case 5:{e=dT()|0;break}case 8:{eT(c[46631]|0);break}case 9:{fT(c[g>>2]|0);break}case 18:{gT(c[g>>2]|0);break}case 19:{hT();break}case 20:{gT(c[g>>2]|0);break}case 21:{hT();break}case 22:{gT(c[g>>2]|0);break}case 23:{hT();break}case 24:{gT(c[g>>2]|0);break}case 25:{hT();break}case 26:{gT(c[g>>2]|0);break}case 27:{hT();break}case 28:{gT(c[g>>2]|0);break}case 29:{hT();break}case 30:{gT(c[g>>2]|0);break}case 31:{hT();break}case 32:{gT(c[g>>2]|0);break}case 33:{hT();break}case 34:{e=c[g+-4>>2]|0;break}case 35:{e=c[g>>2]|0;break}case 38:{e=c[46631]|0;i=c[e+4>>2]|0;if(i>>>0>=(c[e+8>>2]|0)>>>0){Uw(e,1)|0;i=c[46631]|0;e=i;i=c[i+4>>2]|0}a[i>>0]=0;p=c[e>>2]|0;c[e+4>>2]=p;if(iT(p)|0){s=51;break a}c[(c[g>>2]|0)+80>>2]=c[46632];e=Cw(55928,c[4554]|0)|0;c[(c[g>>2]|0)+84>>2]=e;c[46632]=c[g>>2];c[(c[g>>2]|0)+108>>2]=c[c[46633]>>2];e=c[g>>2]|0;break}case 39:{e=c[46631]|0;i=c[e+4>>2]|0;if(i>>>0>=(c[e+8>>2]|0)>>>0){Uw(e,1)|0;i=c[46631]|0;e=i;i=c[i+4>>2]|0}a[i>>0]=0;p=c[e>>2]|0;c[e+4>>2]=p;if(iT(p)|0){s=56;break a}e=c[46632]|0;c[46632]=c[e+80>>2];break}case 40:{e=c[g>>2]|0;break}case 41:{e=c[g+-4>>2]|0;break}case 42:{e=c[g+-4>>2]|0;break}case 43:{e=c[g+-4>>2]|0;break}case 44:{e=c[g+-4>>2]|0;break}case 45:{e=c[g+-4>>2]|0;break}case 48:{e=c[g>>2]|0;break}case 49:{e=c[g>>2]|0;break}case 50:{a[(c[g+-8>>2]|0)+12>>0]=1;e=c[g>>2]|0;break}case 51:{jT();break}case 52:{e=kT()|0;break}case 53:{e=c[g>>2]|0;break}case 54:{e=c[g>>2]|0;break}case 55:{e=(c[g+-8>>2]|0)+100|0;a[e>>0]=a[e>>0]|1;e=c[g>>2]|0;break}case 56:{lT(c[g+-4>>2]|0,c[g>>2]|0,1);break}case 57:{e=c[g+-12>>2]|0;break}case 58:{lT(c[g+-4>>2]|0,c[g>>2]|0,2);break}case 59:{e=c[g+-12>>2]|0;break}case 60:{lT(c[g+-4>>2]|0,c[g>>2]|0,3);break}case 61:{e=c[g+-12>>2]|0;break}case 62:{lT(c[g>>2]|0,dT()|0,2);break}case 63:{e=c[g+-8>>2]|0;break}case 64:{e=c[g+-4>>2]|0;break}case 65:{e=c[g>>2]|0;break}default:{}}while(0);i=0-j|0;p=g+(i<<2)|0;i=o+(i<<1)|0;g=p+4|0;c[p+4>>2]=e;e=(d[137367+h>>0]|0)+-41|0;p=b[i>>1]|0;h=p+(b[65662+(e<<1)>>1]|0)|0;if(h>>>0<272?(a[136535+h>>0]|0)==(p|0):0){e=a[136807+h>>0]|0;j=q;h=i;break}e=a[137437+e>>0]|0;j=q;h=i}while(0);i=k;p=e;q=j;o=h+2|0}if((s|0)==26){cT();e=1;s=96}else if((s|0)==51){vT(137265);cT();e=1;s=96}else if((s|0)==56){vT(137316);cT();e=1;s=96}else if((s|0)==95){vT(137476);e=2;s=96}if((s|0)==96)if((f|0)!=(r|0))D_(f);l=t;return e|0}function bT(b,d){b=b|0;d=d|0;var e=0;e=uH(8)|0;a[e+4>>0]=d;c[e>>2]=b;return e|0}function cT(){var a=0,b=0;a=c[46632]|0;b=c[46630]|0;if(b|0){XQ(b,1);c[46630]=0}c[13995]=67;while(1){if(!a)break;b=c[a+80>>2]|0;pT(a);a=b}c[13995]=56;c[14004]=68;b=c[46635]|0;nb[c[b>>2]&63](b,0,64)|0;c[14004]=56;c[14013]=69;b=c[46636]|0;nb[c[b>>2]&63](b,0,64)|0;c[14013]=56;sT();return}function dT(){var a=0,d=0,e=0,f=0,g=0,h=0;e=c[46636]|0;f=uH(40)|0;if(Ew(c[46635]|0)|0)fT(0);a=Ew(e)|0;b[f+4>>1]=a;a:do if(!a)a=e;else{c[f>>2]=uH(a*24|0)|0;a=0;d=nb[c[e>>2]&63](e,0,128)|0;while(1){if(!d){a=e;break a}g=(c[f>>2]|0)+(a*24|0)|0;h=d+8|0;c[g>>2]=c[h>>2];c[g+4>>2]=c[h+4>>2];c[g+8>>2]=c[h+8>>2];c[g+12>>2]=c[h+12>>2];c[g+16>>2]=c[h+16>>2];c[g+20>>2]=c[h+20>>2];a=a+1|0;d=nb[c[e>>2]&63](e,d,8)|0}}while(0);nb[c[a>>2]&63](e,0,64)|0;return f|0}function eT(b){b=b|0;var d=0,e=0,f=0;e=uH(64)|0;f=b+4|0;d=c[f>>2]|0;if(d>>>0>=(c[b+8>>2]|0)>>>0){Uw(b,1)|0;d=c[f>>2]|0}a[d>>0]=0;b=c[b>>2]|0;c[f>>2]=b;c[e+8>>2]=n1(b)|0;c[e+12>>2]=c[c[46633]>>2];f=c[46635]|0;nb[c[f>>2]&63](f,e,1)|0;return}function fT(d){d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;i=uH(32)|0;j=c[46635]|0;e=Ew(j)|0;k=i+8|0;a[i+14>>0]=d;a:do if(!e){c[k>>2]=uH(56)|0;b[i+12>>1]=1;h=n1(191979)|0;k=c[k>>2]|0;c[k>>2]=h;c[k+4>>2]=c[c[46633]>>2]}else{b[i+12>>1]=e;c[k>>2]=uH(e*56|0)|0;d=0;e=Aw(j)|0;while(1){if(!e)break a;f=(c[k>>2]|0)+(d*56|0)|0;g=e+8|0;h=f+56|0;do{c[f>>2]=c[g>>2];f=f+4|0;g=g+4|0}while((f|0)<(h|0));d=d+1|0;e=c[e>>2]|0}}while(0);nb[c[j>>2]&63](j,0,64)|0;k=c[46636]|0;nb[c[k>>2]&63](k,i,1)|0;return}function gT(a){a=a|0;var b=0,d=0.0,e=0,f=0,g=0,i=0,j=0;j=l;l=l+32|0;g=j;i=uH(8)|0;f=c[c[46633]>>2]|0;c[g>>2]=c[a>>2];c[g+4>>2]=c[a+4>>2];c[g+8>>2]=c[a+8>>2];c[g+12>>2]=c[a+12>>2];c[g+16>>2]=c[a+16>>2];c[g+20>>2]=c[a+20>>2];c[g+24>>2]=c[a+24>>2];c[g+28>>2]=c[a+28>>2];if(f|0){a=g+4|0;if((c[a>>2]|0)==0?(b=c[f+4>>2]|0,b|0):0)c[a>>2]=b;a=g+16|0;if(+h[a>>3]<0.0?(d=+h[f+16>>3],d>=0.0):0)h[a>>3]=d;if((c[g>>2]|0)==0?(e=c[f>>2]|0,e|0):0)c[g>>2]=e;a=c[f+24>>2]&127;if(a|0){f=g+24|0;e=c[f>>2]|0;c[f>>2]=e&127|a|e&-128}}f=c[(c[46634]|0)+144>>2]|0;c[i>>2]=nb[c[f>>2]&63](f,g,1)|0;c[i+4>>2]=c[46633];c[46633]=i;l=j;return}function hT(){var a=0,b=0;b=c[46633]|0;a=c[b+4>>2]|0;D_(b);c[46633]=a;return}function iT(b){b=b|0;var c=0;while(1){c=a[b>>0]|0;if(!(c<<24>>24)){b=0;break}if(c<<24>>24==32)b=b+1|0;else{b=1;break}}return b|0}function jT(){var b=0,d=0,e=0;e=Cw(55964,c[4554]|0)|0;b=c[46632]|0;d=uH(16)|0;c[d+8>>2]=e;if(a[b+112>>0]&2)a[d+12>>0]=1;e=c[b+84>>2]|0;nb[c[e>>2]&63](e,d,1)|0;return}function kT(){var a=0;a=c[(c[46632]|0)+84>>2]|0;return nb[c[a>>2]&63](a,0,256)|0}function lT(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;g=uH(16)|0;f=c[46632]|0;h=c[f+84>>2]|0;h=c[(nb[c[h>>2]&63](h,0,256)|0)+8>>2]|0;c[g+8>>2]=b;nb[c[h>>2]&63](h,g,1)|0;a[b+92>>0]=e;if(a[f+112>>0]&1)a[b+100>>0]=1;c[b+88>>2]=d;return}function mT(a,b,c){a=a|0;b=b|0;c=c|0;D_(b);return}function nT(a,b,d){a=a|0;b=b|0;d=d|0;yw(c[b+8>>2]|0)|0;D_(b);return}function oT(a,b,d){a=a|0;b=b|0;d=d|0;tT(c[b+8>>2]|0);D_(b);return}function pT(a){a=a|0;yw(c[a+84>>2]|0)|0;UQ(a);D_(a);return}function qT(a,b,d){a=a|0;b=b|0;d=d|0;D_(c[b+8>>2]|0);D_(b);return}function rT(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0,h=0;g=d+12|0;a=b[g>>1]|0;if(a<<16>>16){h=d+8|0;e=0;f=c[h>>2]|0;while(1){if((e|0)>=(a<<16>>16|0))break;D_(c[f>>2]|0);e=e+1|0;f=f+56|0;a=b[g>>1]|0}D_(c[h>>2]|0)}D_(d);return}function sT(){var a=0,b=0;a=c[46633]|0;while(1){b=c[a+4>>2]|0;if(!b)break;D_(a);a=b}return}function tT(b){b=b|0;var d=0;d=b+88|0;switch(a[b+92>>0]|0){case 1:{pT(c[d>>2]|0);break}case 2:{VQ(c[d>>2]|0);break}default:{}}UQ(b);D_(b);return}function uT(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;f=l;l=l+160|0;e=f+8|0;g=f;c[g>>2]=0;c[g+4>>2]=0;c[46633]=g;c[46632]=0;c[46630]=0;c[46634]=c[(c[(c[d+52>>2]|0)+16>>2]|0)+144>>2];c[46635]=Cw(56e3,c[4554]|0)|0;c[46636]=Cw(56036,c[4554]|0)|0;Tw(e,128,f+24|0);c[46631]=e;if(!(yT(a,e,d)|0)){aT()|0;c[b>>2]=oU()|0;a=c[46630]|0}else{c[b>>2]=2;a=0}yw(c[46635]|0)|0;yw(c[46636]|0)|0;c[46635]=0;c[46636]=0;c[46633]=0;Xw(e);l=f;return a|0}function vT(b){b=b|0;var d=0,e=0,f=0;e=l;l=l+16|0;d=e;if(!(a[186581]|0)){a[186581]=1;f=wT()|0;c[d>>2]=b;c[d+4>>2]=f;Pw(1,137493,d)|0;xT()}l=e;return}function wT(){return dX(c[46637]|0)|0}function xT(){var b=0,d=0,e=0,f=0;f=l;l=l+16|0;e=f;b=c[46640]|0;c[b+4>>2]=c[b>>2];d=c[46649]|0;if((d|0)>0){Vw(b,c[46647]|0,d)|0;b=c[46640]|0}Vw(b,c[46646]|0,c[46648]|0)|0;d=c[46640]|0;b=c[d+4>>2]|0;if(b>>>0>=(c[d+8>>2]|0)>>>0){Uw(d,1)|0;b=c[46640]|0;d=b;b=c[b+4>>2]|0}c[d+4>>2]=b+1;a[b>>0]=0;b=c[46640]|0;d=c[b>>2]|0;c[b+4>>2]=d;c[e>>2]=d;Pw(3,137509,e)|0;l=f;return}function yT(b,e,f){b=b|0;e=e|0;f=f|0;c[46640]=e;Tw(186564,128,0);c[46638]=b;a[186583]=0;a[186580]=0;a[186581]=0;c[46648]=0;c[46649]=0;a[186582]=1;f=f+52|0;e=DV(hH(d[(c[(c[f>>2]|0)+16>>2]|0)+115>>0]|0)|0)|0;c[46637]=e;SW(e,c[(c[(c[f>>2]|0)+16>>2]|0)+144>>2]|0);TW(c[46637]|0,70,27);UW(c[46637]|0,71);return 0}function zT(b,d,e){b=b|0;d=d|0;e=e|0;do if(!(O$(d,137521)|0)){c[46629]=DT(e)|0;a[186582]=0;c[46639]=286}else{if(O$(d,137527)|0?O$(d,137530)|0:0){if(!(O$(d,137533)|0)){a[186582]=1;c[46629]=ET(e)|0;c[46639]=287;break}if(!(O$(d,137541)|0)){c[46629]=FT(b,e,0)|0;c[46639]=288;break}if(!(O$(d,137546)|0)){c[46629]=FT(b,0,1)|0;c[46639]=290;break}if(!(O$(d,137562)|0)){c[46629]=FT(b,0,32)|0;c[46639]=295;break}if(!(O$(d,137548)|0)){c[46629]=FT(b,0,4)|0;c[46639]=291;break}if(!(O$(d,137550)|0)){c[46629]=FT(b,0,64)|0;c[46639]=292;break}if(!(O$(d,137552)|0)){c[46629]=FT(b,0,2)|0;c[46639]=289;break}if(!(O$(d,137554)|0)){c[46629]=FT(b,0,8)|0;c[46639]=293;break}if(!(O$(d,137558)|0)){c[46629]=FT(b,0,16)|0;c[46639]=294;break}if(!(O$(d,137564)|0)){GT(e);c[46639]=283;break}if(!(O$(d,137567)|0)){c[46639]=277;break}if(!(O$(d,137570)|0)){c[46639]=280;break}if(!(O$(d,137573)|0)){c[46629]=HT(e)|0;c[46639]=285;break}if(!(O$(d,137536)|0)){c[46639]=262;break}else{CT(d);break}}a[186582]=0;c[46639]=260}while(0);return}function AT(b,d){b=b|0;d=d|0;do if(!(O$(d,137521)|0)){c[46639]=264;a[186582]=1}else{if(O$(d,137527)|0?O$(d,137530)|0:0){if(!(O$(d,137533)|0)){c[46639]=265;a[186582]=0;break}if(!(O$(d,137536)|0)){c[46639]=263;break}if(!(O$(d,137541)|0)){c[46639]=266;break}if(!(O$(d,137546)|0)){c[46639]=270;break}if(!(O$(d,137548)|0)){c[46639]=271;break}if(!(O$(d,137550)|0)){c[46639]=272;break}if(!(O$(d,137552)|0)){c[46639]=269;break}if(!(O$(d,137554)|0)){c[46639]=273;break}if(!(O$(d,137558)|0)){c[46639]=274;break}if(!(O$(d,137562)|0)){c[46639]=275;break}if(!(O$(d,137564)|0)){c[46639]=(c[46639]|0)==283?282:258;break}if(!(O$(d,137567)|0)){c[46639]=(c[46639]|0)==277?276:278;break}if(!(O$(d,137570)|0)){c[46639]=(c[46639]|0)==280?279:281;break}if(!(O$(d,137573)|0)){c[46639]=(c[46639]|0)==285?284:259;break}else{CT(d);break}}c[46639]=261}while(0);return}function BT(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;if(a[186582]|0){b=0;while(1){if(!e)break;h=d+1|0;g=a[d>>0]|0;if((g&255)>31){d=c[46640]|0;f=c[d+4>>2]|0;if(f>>>0>=(c[d+8>>2]|0)>>>0){Uw(d,1)|0;f=c[46640]|0;d=f;f=c[f+4>>2]|0}c[d+4>>2]=f+1;a[f>>0]=g;b=b+1|0}d=h;e=e+-1|0}if(b|0)c[46639]=267}return}function CT(b){b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d;c[46639]=268;a[186581]=1;f=wT()|0;c[e>>2]=b;c[e+4>>2]=f;Pw(1,137577,e)|0;l=d;return}function DT(b){b=b|0;var d=0;d=uH(120)|0;c[d+100>>2]=-1;a[d+88>>0]=-1;IT(d,56296,22,b,138529);return d|0}function ET(a){a=a|0;var c=0;c=uH(104)|0;b[c+80>>1]=1;b[c+82>>1]=1;IT(c,56120,22,a,137883);return c|0}function FT(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;f=l;l=l+32|0;e=f;c[e>>2]=0;c[e+4>>2]=0;c[e+8>>2]=0;c[e+12>>2]=0;c[e+16>>2]=0;c[e+20>>2]=0;c[e+24>>2]=0;c[e+28>>2]=0;h[e+16>>3]=-1.0;c[e+24>>2]=d&127;if(b|0)IT(e,56096,3,b,137734);d=c[a+144>>2]|0;e=nb[c[d>>2]&63](d,e,1)|0;l=f;return e|0}function GT(a){a=a|0;c[46629]=0;IT(186516,56088,1,a,137670);return}function HT(a){a=a|0;var b=0;b=uH(40)|0;IT(b,56072,2,a,137616);return b|0}function IT(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0;o=l;l=l+16|0;n=o;m=o+8|0;while(1){k=c[g>>2]|0;if(!k)break;i=c[g+4>>2]|0;c[m>>2]=k;j=e2(m,e,f,8,102)|0;if(!j){c[n>>2]=k;c[n+4>>2]=h;Pw(0,137622,n)|0;i=1}else{i=lb[c[j+4>>2]&127](b,i)|0;i=(i|(d[186580]|0))&255}a[186580]=i;g=g+8|0}l=o;return}function JT(a,b){a=a|0;b=b|0;return O$(c[a>>2]|0,c[b>>2]|0)|0}function KT(a,b){a=a|0;b=b|0;c[a+36>>2]=n1(b)|0;return 0}function LT(a,b){a=a|0;b=b|0;c[a+32>>2]=n1(b)|0;return 0}function MT(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;i=l;l=l+16|0;g=i;f=(I0(a[d>>0]|0)|0)<<24>>24;switch(f|0){case 82:{e=d+1|0;if(!(O$(e,137681)|0)){c[b>>2]=114;e=0}else h=5;break}case 76:{h=6;break}default:{e=d+1|0;h=5}}do if((h|0)==5)if(!(O$(e,137686)|0))h=6;else{if((f|0)!=67?(O$(e,137690)|0)==0:0){c[g>>2]=d;Pw(0,137696,g)|0;e=1;break}c[b>>2]=110;e=0}while(0);if((h|0)==6){c[b>>2]=108;e=0}l=i;return e|0}function NT(a,b){a=a|0;b=b|0;c[a+4>>2]=b;return 0}function OT(a,b){a=a|0;b=b|0;c[a>>2]=b;return 0}function PT(a,b){a=a|0;b=b|0;var d=0,e=0;e=l;l=l+16|0;d=e;if(!(QT(b,137763,0,255,d)|0)){h[a+16>>3]=+(c[d>>2]|0);a=0}else a=1;l=e;return a|0}function QT(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0;k=l;l=l+48|0;j=k+24|0;i=k+8|0;h=k;m=k+36|0;g=i1(a,m,10)|0;do if((c[m>>2]|0)!=(a|0)){if((g|0)>(e|0)){c[i>>2]=b;c[i+4>>2]=a;c[i+8>>2]=e;Pw(0,137805,i)|0;a=1;break}if((g|0)<(d|0)){c[j>>2]=b;c[j+4>>2]=a;c[j+8>>2]=d;Pw(0,137844,j)|0;a=1;break}else{c[f>>2]=g;a=0;break}}else{c[h>>2]=b;c[h+4>>2]=a;Pw(0,137774,h)|0;a=1}while(0);l=k;return a|0}function RT(d,e){d=d|0;e=e|0;var f=0,g=0,h=0;h=l;l=l+16|0;f=h;switch((I0(a[e>>0]|0)|0)<<24>>24|0){case 76:{if(!(O$(e+1|0,137686)|0)){d=d+36|0;b[d>>1]=b[d>>1]|4;d=0}else g=9;break}case 82:{if(!(O$(e+1|0,137681)|0)){d=d+36|0;b[d>>1]=b[d>>1]|2;d=0}else g=9;break}case 84:{if(!(O$(e+1|0,138481)|0)){d=d+36|0;b[d>>1]=b[d>>1]|6;d=0}else g=9;break}case 67:{if(!(O$(e+1|0,137690)|0))d=0;else g=9;break}default:g=9}if((g|0)==9){c[f>>2]=e;Pw(0,138485,f)|0;d=1}l=h;return d|0}function ST(d,e){d=d|0;e=e|0;var f=0,g=0,h=0;h=l;l=l+16|0;f=h;switch((I0(a[e>>0]|0)|0)<<24>>24|0){case 76:{if(!(O$(e+1|0,137686)|0)){d=d+36|0;b[d>>1]=b[d>>1]|512;d=0}else g=7;break}case 82:{if(!(O$(e+1|0,137681)|0)){d=d+36|0;b[d>>1]=b[d>>1]|256;d=0}else g=7;break}case 67:{if(!(O$(e+1|0,137690)|0))d=0;else g=7;break}default:g=7}if((g|0)==7){c[f>>2]=e;Pw(0,138436,f)|0;d=1}l=h;return d|0}function TT(a,b){a=a|0;b=b|0;c[a+20>>2]=n1(b)|0;return 0}function UT(d,e){d=d|0;e=e|0;var f=0,g=0;g=l;l=l+16|0;f=g;if(!(QT(e,138429,0,255,f)|0)){a[d+33>>0]=c[f>>2];d=d+36|0;b[d>>1]=b[d>>1]|32;d=0}else d=1;l=g;return d|0}function VT(d,e){d=d|0;e=e|0;var f=0,g=0;g=l;l=l+16|0;f=g;if(!(QT(e,138417,0,255,f)|0)){a[d+34>>0]=c[f>>2];d=d+36|0;b[d>>1]=b[d>>1]|64;d=0}else d=1;l=g;return d|0}function WT(d,e){d=d|0;e=e|0;var f=0,g=0;g=l;l=l+16|0;f=g;if(!(QT(e,138405,-128,127,f)|0)){a[d+32>>0]=c[f>>2];d=d+36|0;b[d>>1]=b[d>>1]|128;d=0}else d=1;l=g;return d|0}function XT(a,b){a=a|0;b=b|0;c[a+24>>2]=n1(b)|0;return 0}function YT(a,d){a=a|0;d=d|0;var e=0,f=0,g=0;g=l;l=l+16|0;f=g;e=g+4|0;do if(!(QT(d,138360,0,65535,e)|0)){d=c[e>>2]|0;if(!d){Pw(0,138368,f)|0;d=1;break}else{b[a+80>>1]=d;d=0;break}}else d=1;while(0);l=g;return d|0}function ZT(a,e){a=a|0;e=e|0;var f=0,g=0,h=0;h=l;l=l+16|0;f=h;switch((I0(d[e>>0]|0)|0)<<24>>24|0){case 84:{if(!(O$(e+1|0,138309)|0)){a=a+36|0;b[a>>1]=b[a>>1]|1;a=0}else g=5;break}case 70:{if(!(O$(e+1|0,138313)|0))a=0;else g=5;break}default:g=5}if((g|0)==5){c[f>>2]=e;Pw(0,138318,f)|0;a=1}l=h;return a|0}function _T(a,b){a=a|0;b=b|0;var d=0,e=0;e=l;l=l+16|0;d=e;if(!(QT(b,138295,0,360,d)|0)){c[a+28>>2]=c[d>>2]&65535;a=0}else a=1;l=e;return a|0}function $T(a,d){a=a|0;d=d|0;var e=0,f=0;f=l;l=l+16|0;e=f;if(!(QT(d,138288,0,65535,e)|0)){b[a+40>>1]=c[e>>2];a=0}else a=1;l=f;return a|0}function aU(a,b){a=a|0;b=b|0;c[a>>2]=n1(b)|0;return 0}function bU(a,b){a=a|0;b=b|0;c[a+16>>2]=n1(b)|0;return 0}function cU(a,b){a=a|0;b=b|0;c[a+4>>2]=n1(b)|0;return 0}function dU(a,d){a=a|0;d=d|0;var e=0,f=0,g=0;g=l;l=l+16|0;f=g;e=g+4|0;do if(!(QT(d,138243,0,65535,e)|0)){d=c[e>>2]|0;if(!d){Pw(0,138251,f)|0;d=1;break}else{b[a+82>>1]=d;d=0;break}}else d=1;while(0);l=g;return d|0}function eU(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;k=l;l=l+16|0;i=k;h=0;a:while(1){b:while(1){g=e+1|0;e=a[e>>0]|0;if(!(e<<24>>24))break a;e=e<<24>>24;f=(P$(e)|0)+-98|0;switch(f>>>1|f<<31|0){case 5:{j=5;break b}case 9:{f=2048;break b}case 8:{j=6;break b}case 0:{j=7;break b}default:{}}c[i>>2]=e;c[i+4>>2]=e;Pw(0,138190,i)|0;e=g}if((j|0)==5){j=0;f=1024}else if((j|0)==6){j=0;f=4096}else if((j|0)==7){j=0;f=8192}e=g;h=h|f}if(h<<16>>16!=15360){j=d+36|0;b[j>>1]=b[j>>1]|h}l=k;return 0}function fU(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;k=l;l=l+16|0;j=k+8|0;i=k;h=n1(e)|0;g=d+42|0;f=0;e=h;while(1){d=k1(e,138100)|0;if(!d)break;if(((I0(a[d>>0]|0)|0)&255|0)==82){e=d+1|0;if(!(O$(e,138103)|0)){b[g>>1]=b[g>>1]|4;d=f;e=0;f=d;continue}if(!(O$(e,138110)|0)){b[g>>1]=b[g>>1]|2;d=f;e=0;f=d;continue}else{c[i>>2]=d;Pw(0,138116,i)|0;f=1;e=0;continue}}if(!(O$(d,138154)|0)){b[g>>1]=b[g>>1]&-385;d=f;e=0;f=d;continue}if(O$(d,138160)|0?O$(d,138170)|0:0){if(!(O$(d,138176)|0)){b[g>>1]=b[g>>1]|128;d=f;e=0;f=d;continue}if(!(O$(d,138183)|0)){b[g>>1]=b[g>>1]|256;d=f;e=0;f=d;continue}else{c[j>>2]=d;Pw(0,138116,j)|0;f=1;e=0;continue}}b[g>>1]=b[g>>1]|32;d=f;e=0;f=d}D_(h);l=k;return f|0}function gU(a,b){a=a|0;b=b|0;c[a+8>>2]=n1(b)|0;return 0}function hU(a,b){a=a|0;b=b|0;c[a+12>>2]=n1(b)|0;return 0}function iU(d,e){d=d|0;e=e|0;var f=0,g=0,h=0;h=l;l=l+16|0;f=h;switch((I0(a[e>>0]|0)|0)<<24>>24|0){case 66:{if(!(O$(e+1|0,138046)|0)){d=d+36|0;b[d>>1]=b[d>>1]|16;d=0}else g=7;break}case 84:{if(!(O$(e+1|0,138052)|0)){d=d+36|0;b[d>>1]=b[d>>1]|8;d=0}else g=7;break}case 77:{if(!(O$(e+1|0,138055)|0))d=0;else g=7;break}default:g=7}if((g|0)==7){c[f>>2]=e;Pw(0,138061,f)|0;d=1}l=h;return d|0}function jU(a,d){a=a|0;d=d|0;var e=0,f=0;f=l;l=l+16|0;e=f;if(!(QT(d,138040,0,65535,e)|0)){b[a+38>>1]=c[e>>2];a=0}else a=1;l=f;return a|0}function kU(d,e){d=d|0;e=e|0;var f=0,g=0,h=0;h=l;l=l+16|0;f=h;switch((I0(a[e>>0]|0)|0)<<24>>24|0){case 76:{if(!(O$(e+1|0,137686)|0)){d=d+36|0;b[d>>1]=b[d>>1]|4;d=0}else g=7;break}case 82:{if(!(O$(e+1|0,137681)|0)){d=d+36|0;b[d>>1]=b[d>>1]|2;d=0}else g=7;break}case 67:{if(!(O$(e+1|0,137690)|0))d=0;else g=7;break}default:g=7}if((g|0)==7){c[f>>2]=e;Pw(0,137696,f)|0;d=1}l=h;return d|0}function lU(b,d){b=b|0;d=d|0;var e=0,f=0;f=l;l=l+16|0;e=f;if(!(QT(d,138638,0,127,e)|0)){a[b+88>>0]=c[e>>2];b=0}else b=1;l=f;return b|0}function mU(b,d){b=b|0;d=d|0;var e=0,f=0;f=l;l=l+16|0;e=f;if((a[d>>0]|0)==42){b=b+112|0;a[b>>0]=a[b>>0]|1;b=0}else{c[e>>2]=d;Pw(0,138598,e)|0;b=1}l=f;return b|0}function nU(b,d){b=b|0;d=d|0;var e=0,f=0;f=l;l=l+16|0;e=f;if((a[d>>0]|0)==42){b=b+112|0;a[b>>0]=a[b>>0]|2;b=0}else{c[e>>2]=d;Pw(0,138561,e)|0;b=1}l=f;return b|0}function oU(){var b=0;b=(a[186581]|a[186580])<<24>>24;JV(c[46637]|0);Xw(186564);return b|0}function pU(){var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;j=l;l=l+16|0;i=j;c[46639]=0;d=0;a:do{b:do switch(a[186583]|0){case 2:{b=-1;break a}case 0:{a[186583]=1;h=6;b=138650;d=0;break}default:{b=c[46638]|0;if(!(a[b>>0]|0)){a[186583]=2;h=7;b=138657;break b}else{d=qU(b)|0;h=d-b|0;break b}}}while(0);c[46647]=c[46646];c[46649]=c[46648];c[46646]=b;c[46648]=h;e=c[46642]|0;f=e-(c[46641]|0)|0;g=c[46637]|0;if(!f)b=VW(g,b,h,(h|0)==0&1)|0;else{if(e>>>0<(c[46643]|0)>>>0)b=e;else{Uw(186564,1)|0;b=c[46642]|0}a[b>>0]=0;b=c[46641]|0;c[46642]=b;b=VW(g,b,f,0)|0}if(!((b|0)!=0|(a[186581]|0)!=0)){g=eX(cX(c[46637]|0)|0)|0;h=wT()|0;c[i>>2]=g;c[i+4>>2]=h;Pw(1,137493,i)|0;xT();a[186581]=1;c[46639]=268}if(d|0)c[46638]=d;b=c[46639]|0}while((b|0)==0);l=j;return b|0}function qU(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;h=l;l=l+16|0;f=h;d=b+1|0;e=a[b>>0]|0;a:do if(e<<24>>24==60){e=a[d>>0]|0;if(e<<24>>24==33)if(!(z$(b+2|0,138665,2)|0)){e=rU(b+4|0)|0;d=e;e=a[e>>0]|0;g=8}else{e=d;g=5}else g=6;b:while(1)if((g|0)==5){d=e;e=a[e>>0]|0;g=6;continue}else if((g|0)==6){switch(e<<24>>24){case 62:case 0:{g=8;continue b}default:{}}e=d+1|0;g=5;continue}else if((g|0)==8)if(e<<24>>24==62){g=10;break}else{g=9;break}if((g|0)==9){Pw(0,138668,f)|0;a[186580]=1;break}else if((g|0)==10){d=d+1|0;break}}else{d=b;b=e;while(1){switch(b<<24>>24){case 60:case 0:break a;case 38:{e=d+1|0;if((a[e>>0]|0)==35)g=15;else e=MM(e,186564)|0;break}default:g=15}if((g|0)==15){g=0;e=c[46642]|0;if(e>>>0>=(c[46643]|0)>>>0){Uw(186564,1)|0;e=c[46642]|0}c[46642]=e+1;a[e>>0]=b;e=d+1|0}d=e;b=a[e>>0]|0}}while(0);l=h;return d|0}function rU(b){b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;j=l;l=l+16|0;i=j;f=1;c=b;a:while(1){e=(f|0)==0;d=c;b:while(1){if(e)break a;g=d+1|0;switch(a[d>>0]|0){case 0:{c=g;break a}case 60:{h=5;break b}case 62:{c=-1;break b}default:d=g}}if((h|0)==5){h=0;c=1}f=f+c|0;c=g}d=c+-1|0;do if(a[d>>0]|0){c=c+-3|0;if(c>>>0>=b>>>0?(z$(c,138665,2)|0)==0:0)break;Pw(0,138709,i)|0;a[186580]=1}while(0);l=j;return d|0}function sU(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;d=C_(28)|0;if(!d)d=0;else{e=0;f=0;while(1){if((e|0)>=(b|0))break;r=(c[(c[a+(e<<2)>>2]|0)+4>>2]|0)+f|0;e=e+1|0;f=r}o=d+8|0;c[o>>2]=tU(f<<4)|0;p=d+12|0;c[p>>2]=tU((b<<2)+4|0)|0;e=f<<2;q=d+16|0;c[q>>2]=tU(e)|0;e=tU(e)|0;r=d+20|0;c[r>>2]=e;c[d+4>>2]=f;c[d>>2]=b;f=0;h=0;while(1){c[(c[p>>2]|0)+(h<<2)>>2]=f;if((h|0)>=(b|0))break;j=a+(h<<2)|0;n=c[j>>2]|0;k=c[n+4>>2]|0;l=f+-1|0;g=0;i=f;m=k;while(1){if((g|0)>=(m|0))break;m=(c[o>>2]|0)+(i<<4)|0;e=(c[n>>2]|0)+(g<<4)|0;c[m>>2]=c[e>>2];c[m+4>>2]=c[e+4>>2];c[m+8>>2]=c[e+8>>2];c[m+12>>2]=c[e+12>>2];m=i+1|0;c[(c[q>>2]|0)+(i<<2)>>2]=m;e=c[r>>2]|0;c[e+(i<<2)>>2]=i+-1;s=c[j>>2]|0;g=g+1|0;i=m;m=c[s+4>>2]|0;n=s}s=l+k|0;c[(c[q>>2]|0)+(s<<2)>>2]=f;c[e+(f<<2)>>2]=s;f=i;h=h+1|0}tV(d)}return d|0}function tU(a){a=a|0;if(!a)a=0;else a=C_(a)|0;return a|0}function uU(a){a=a|0;var b=0,d=0;D_(c[a+8>>2]|0);D_(c[a+12>>2]|0);D_(c[a+16>>2]|0);D_(c[a+20>>2]|0);d=a+24|0;b=c[d>>2]|0;if(b|0){D_(c[b>>2]|0);D_(c[d>>2]|0)}D_(a);return}function vU(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;p=l;l=l+32|0;m=p+16|0;j=p;c[m>>2]=c[b>>2];c[m+4>>2]=c[b+4>>2];c[m+8>>2]=c[b+8>>2];c[m+12>>2]=c[b+12>>2];n=AV(a,d,m)|0;c[m>>2]=c[e>>2];c[m+4>>2]=c[e+4>>2];c[m+8>>2]=c[e+8>>2];c[m+12>>2]=c[e+12>>2];o=AV(a,f,m)|0;c[j>>2]=c[b>>2];c[j+4>>2]=c[b+4>>2];c[j+8>>2]=c[b+8>>2];c[j+12>>2]=c[b+12>>2];c[m>>2]=c[e>>2];c[m+4>>2]=c[e+4>>2];c[m+8>>2]=c[e+8>>2];c[m+12>>2]=c[e+12>>2];m=jV(j,d,n,m,f,o,a)|0;d=c[a+4>>2]|0;j=d+1|0;f=1;h=d;while(1){h=c[m+(h<<2)>>2]|0;k=f+1|0;if((h|0)==(j|0))break;else f=k}i=C_(k<<4)|0;h=i+(f<<4)|0;c[h>>2]=c[e>>2];c[h+4>>2]=c[e+4>>2];c[h+8>>2]=c[e+8>>2];c[h+12>>2]=c[e+12>>2];a=a+8|0;while(1){d=c[m+(d<<2)>>2]|0;f=f+-1|0;h=i+(f<<4)|0;if((d|0)==(j|0))break;e=(c[a>>2]|0)+(d<<4)|0;c[h>>2]=c[e>>2];c[h+4>>2]=c[e+4>>2];c[h+8>>2]=c[e+8>>2];c[h+12>>2]=c[e+12>>2]}c[h>>2]=c[b>>2];c[h+4>>2]=c[b+4>>2];c[h+8>>2]=c[b+8>>2];c[h+12>>2]=c[b+12>>2];if(f|0)qa(138727,138734,148,138740);if(n|0)D_(n);if(o|0)D_(o);c[g+4>>2]=k;c[g>>2]=i;D_(m);l=p;return 1}function wU(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0;j=l;l=l+48|0;h=j+32|0;g=j+16|0;f=j;i=c[a>>2]|0;d=c[a+4>>2]|0;e=d+-1|0;a=0;while(1){if((a|0)>=(d|0)){a=1;break}m=i+(((e+a|0)%(d|0)|0)<<4)|0;k=i+(a<<4)|0;c[f>>2]=c[m>>2];c[f+4>>2]=c[m+4>>2];c[f+8>>2]=c[m+8>>2];c[f+12>>2]=c[m+12>>2];c[g>>2]=c[k>>2];c[g+4>>2]=c[k+4>>2];c[g+8>>2]=c[k+8>>2];c[g+12>>2]=c[k+12>>2];c[h>>2]=c[b>>2];c[h+4>>2]=c[b+4>>2];c[h+8>>2]=c[b+8>>2];c[h+12>>2]=c[b+12>>2];if((pV(f,g,h)|0)==1){a=0;break}else a=a+1|0}l=j;return a|0}function xU(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,q=0,r=0,s=0,t=0,u=0;u=l;l=l+64|0;m=u+48|0;k=u+32|0;s=4;j=C_(40)|0;c[j>>2]=0;n=u+16|0;q=u;r=c[d>>2]|0;i=c[d+4>>2]|0;s=D3(186600,1,j|0,s|0)|0;j=z;o=0;d=o;o=0;if((d|0)!=0&(p|0)!=0){g=E3(c[d>>2]|0,s|0,j|0)|0;if(!g)bb(d|0,p|0);z=p}else g=-1;if((g|0)==1)d=z;else d=0;while(1){if(d|0){d=-1;break}o=0;c[m>>2]=c[e>>2];c[m+4>>2]=c[e+4>>2];c[m+8>>2]=c[e+8>>2];c[m+12>>2]=c[e+12>>2];ja(28,n|0,m|0);d=o;o=0;if((d|0)!=0&(p|0)!=0){g=E3(c[d>>2]|0,s|0,j|0)|0;if(!g)bb(d|0,p|0);z=p}else g=-1;if((g|0)==1){d=z;continue};c[e>>2]=c[n>>2];c[e+4>>2]=c[n+4>>2];c[e+8>>2]=c[n+8>>2];c[e+12>>2]=c[n+12>>2];h=e+16|0;o=0;c[m>>2]=c[h>>2];c[m+4>>2]=c[h+4>>2];c[m+8>>2]=c[h+8>>2];c[m+12>>2]=c[h+12>>2];ja(28,q|0,m|0);d=o;o=0;if((d|0)!=0&(p|0)!=0){g=E3(c[d>>2]|0,s|0,j|0)|0;if(!g)bb(d|0,p|0);z=p}else g=-1;if((g|0)==1){d=z;continue};c[h>>2]=c[q>>2];c[h+4>>2]=c[q+4>>2];c[h+8>>2]=c[q+8>>2];c[h+12>>2]=c[q+12>>2];c[46689]=0;o=0;ia(112,4);d=o;o=0;if((d|0)!=0&(p|0)!=0){g=E3(c[d>>2]|0,s|0,j|0)|0;if(!g)bb(d|0,p|0);z=p}else g=-1;if((g|0)==1){d=z;continue}g=c[46690]|0;d=c[46689]|0;c[46689]=d+1;d=g+(d<<4)|0;c[d>>2]=c[r>>2];c[d+4>>2]=c[r+4>>2];c[d+8>>2]=c[r+8>>2];c[d+12>>2]=c[r+12>>2];o=0;c[k>>2]=c[e>>2];c[k+4>>2]=c[e+4>>2];c[k+8>>2]=c[e+8>>2];c[k+12>>2]=c[e+12>>2];c[m>>2]=c[h>>2];c[m+4>>2]=c[h+4>>2];c[m+8>>2]=c[h+8>>2];c[m+12>>2]=c[h+12>>2];d=fa(1,a|0,b|0,r|0,i|0,k|0,m|0)|0;g=o;o=0;if((g|0)!=0&(p|0)!=0){h=E3(c[g>>2]|0,s|0,j|0)|0;if(!h)bb(g|0,p|0);z=p}else h=-1;if((h|0)==1)d=z;else{t=8;break}}if((t|0)==8)if((d|0)==-1)d=-1;else{c[f+4>>2]=c[46689];c[f>>2]=c[46690];d=0}D_(s|0);l=u;return d|0}function yU(a,b){a=a|0;b=b|0;var d=0.0,e=0,f=0.0,g=0.0,i=0.0;d=+h[b>>3];e=b+8|0;f=+h[e>>3];i=f*f+d*d;g=+C(+i);if(i>1.0e-06){h[b>>3]=d/g;h[e>>3]=f/g};c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];return}function zU(a){a=a|0;var b=0,d=0,e=0,f=0;f=l;l=l+32|0;e=f+16|0;d=f;if((c[46693]|0)<(a|0)){b=c[46690]|0;if(!b){e=C_(a<<4)|0;c[46690]=e;if(!e){e=c[15686]|0;c[d>>2]=138749;c[d+4>>2]=531;c[d+8>>2]=138884;g1(e,138757,d)|0;bb(186600,1)}}else{d=F_(b,a<<4)|0;c[46690]=d;if(!d){d=c[15686]|0;c[e>>2]=138749;c[e+4>>2]=537;c[e+8>>2]=138902;g1(d,138757,e)|0;bb(186600,1)}}c[46693]=a}l=f;return}function AU(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0,j=0.0,k=0,m=0.0,n=0,o=0.0,p=0.0,q=0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0.0,U=0.0,V=0.0,W=0.0;R=l;l=l+336|0;J=R+320|0;I=R+304|0;w=R+144|0;q=R+128|0;G=R+112|0;H=R+96|0;Q=R+80|0;A=R+64|0;C=R+48|0;K=R+32|0;L=R+16|0;M=R;x=R+288|0;y=R+272|0;z=R+256|0;B=R+240|0;D=R+224|0;E=R+208|0;N=R+192|0;O=R+176|0;P=R+160|0;i=c[46692]|0;do if((c[46691]|0)<(e|0)){if(!i){i=C_(e*40|0)|0;c[46692]=i;if(!i){i=-1;break}}else{i=F_(i,e*40|0)|0;c[46692]=i;if(!i){i=-1;break}}c[46691]=e;k=6}else k=6;while(0);if((k|0)==6){h[i>>3]=0.0;k=1;j=0.0;while(1){if((k|0)>=(e|0))break;n=d+(k<<4)|0;F=d+(k+-1<<4)|0;c[I>>2]=c[n>>2];c[I+4>>2]=c[n+4>>2];c[I+8>>2]=c[n+8>>2];c[I+12>>2]=c[n+12>>2];c[J>>2]=c[F>>2];c[J+4>>2]=c[F+4>>2];c[J+8>>2]=c[F+8>>2];c[J+12>>2]=c[F+12>>2];v=+BU(I,J)+j;h[i+(k*40|0)>>3]=v;k=k+1|0;j=v}F=e+-1|0;n=i+(F*40|0)|0;k=1;while(1){if((k|0)>=(e|0))break;S=i+(k*40|0)|0;h[S>>3]=+h[S>>3]/+h[n>>3];k=k+1|0}k=0;while(1){if((k|0)>=(e|0))break;S=i+(k*40|0)+8|0;n=i+(k*40|0)|0;v=+CU(+h[n>>3]);c[J>>2]=c[f>>2];c[J+4>>2]=c[f+4>>2];c[J+8>>2]=c[f+8>>2];c[J+12>>2]=c[f+12>>2];DU(x,J,v);c[S>>2]=c[x>>2];c[S+4>>2]=c[x+4>>2];c[S+8>>2]=c[x+8>>2];c[S+12>>2]=c[x+12>>2];S=i+(k*40|0)+24|0;v=+EU(+h[n>>3]);c[J>>2]=c[g>>2];c[J+4>>2]=c[g+4>>2];c[J+8>>2]=c[g+8>>2];c[J+12>>2]=c[g+12>>2];DU(y,J,v);c[S>>2]=c[y>>2];c[S+4>>2]=c[y+4>>2];c[S+8>>2]=c[y+8>>2];c[S+12>>2]=c[y+12>>2];k=k+1|0}c[I>>2]=c[f>>2];c[I+4>>2]=c[f+4>>2];c[I+8>>2]=c[f+8>>2];c[I+12>>2]=c[f+12>>2];c[J>>2]=c[g>>2];c[J+4>>2]=c[g+4>>2];c[J+8>>2]=c[g+8>>2];c[J+12>>2]=c[g+12>>2];FU(d,e,i,I,J,G,A,H,C);c[q>>2]=c[G>>2];c[q+4>>2]=c[G+4>>2];c[q+8>>2]=c[G+8>>2];c[q+12>>2]=c[G+12>>2];c[w>>2]=c[A>>2];c[w+4>>2]=c[A+4>>2];c[w+8>>2]=c[A+8>>2];c[w+12>>2]=c[A+12>>2];c[I>>2]=c[H>>2];c[I+4>>2]=c[H+4>>2];c[I+8>>2]=c[H+8>>2];c[I+12>>2]=c[H+12>>2];c[J>>2]=c[C>>2];c[J+4>>2]=c[C+4>>2];c[J+8>>2]=c[C+8>>2];c[J+12>>2]=c[C+12>>2];if(!(GU(a,b,q,w,I,J,d,e)|0)){c[J>>2]=c[A>>2];c[J+4>>2]=c[A+4>>2];c[J+8>>2]=c[A+8>>2];c[J+12>>2]=c[A+12>>2];DU(z,J,.3333333333333333);c[I>>2]=c[G>>2];c[I+4>>2]=c[G+4>>2];c[I+8>>2]=c[G+8>>2];c[I+12>>2]=c[G+12>>2];c[J>>2]=c[z>>2];c[J+4>>2]=c[z+4>>2];c[J+8>>2]=c[z+8>>2];c[J+12>>2]=c[z+12>>2];HU(B,I,J);v=+h[B>>3];u=+h[B+8>>3];c[J>>2]=c[C>>2];c[J+4>>2]=c[C+4>>2];c[J+8>>2]=c[C+8>>2];c[J+12>>2]=c[C+12>>2];DU(D,J,.3333333333333333);c[I>>2]=c[H>>2];c[I+4>>2]=c[H+4>>2];c[I+8>>2]=c[H+8>>2];c[I+12>>2]=c[H+12>>2];c[J>>2]=c[D>>2];c[J+4>>2]=c[D+4>>2];c[J+8>>2]=c[D+8>>2];c[J+12>>2]=c[D+12>>2];IU(E,I,J);t=+h[E>>3];p=+h[E+8>>3];q=c[46692]|0;r=+h[G>>3];s=+h[H>>3];o=+h[G+8>>3];m=+h[H+8>>3];n=Q+8|0;i=-1;j=-1.0;k=1;while(1){if((k|0)>=(F|0))break;T=+h[q+(k*40|0)>>3];U=+JU(T);V=+CU(T);W=+EU(T);T=+KU(T);h[Q>>3]=V*v+r*U+W*t+s*T;h[n>>3]=W*p+V*u+o*U+m*T;S=d+(k<<4)|0;c[I>>2]=c[Q>>2];c[I+4>>2]=c[Q+4>>2];c[I+8>>2]=c[Q+8>>2];c[I+12>>2]=c[Q+12>>2];c[J>>2]=c[S>>2];c[J+4>>2]=c[S+4>>2];c[J+8>>2]=c[S+8>>2];c[J+12>>2]=c[S+12>>2];T=+BU(I,J);S=T>j;i=S?k:i;j=S?T:j;k=k+1|0}S=d+(i<<4)|0;Q=d+(i+-1<<4)|0;c[I>>2]=c[S>>2];c[I+4>>2]=c[S+4>>2];c[I+8>>2]=c[S+8>>2];c[I+12>>2]=c[S+12>>2];c[J>>2]=c[Q>>2];c[J+4>>2]=c[Q+4>>2];c[J+8>>2]=c[Q+8>>2];c[J+12>>2]=c[Q+12>>2];IU(N,I,J);c[J>>2]=c[N>>2];c[J+4>>2]=c[N+4>>2];c[J+8>>2]=c[N+8>>2];c[J+12>>2]=c[N+12>>2];yU(L,J);Q=i+1|0;N=d+(Q<<4)|0;c[I>>2]=c[N>>2];c[I+4>>2]=c[N+4>>2];c[I+8>>2]=c[N+8>>2];c[I+12>>2]=c[N+12>>2];c[J>>2]=c[S>>2];c[J+4>>2]=c[S+4>>2];c[J+8>>2]=c[S+8>>2];c[J+12>>2]=c[S+12>>2];IU(O,I,J);c[J>>2]=c[O>>2];c[J+4>>2]=c[O+4>>2];c[J+8>>2]=c[O+8>>2];c[J+12>>2]=c[O+12>>2];yU(M,J);c[I>>2]=c[L>>2];c[I+4>>2]=c[L+4>>2];c[I+8>>2]=c[L+8>>2];c[I+12>>2]=c[L+12>>2];c[J>>2]=c[M>>2];c[J+4>>2]=c[M+4>>2];c[J+8>>2]=c[M+8>>2];c[J+12>>2]=c[M+12>>2];HU(P,I,J);c[J>>2]=c[P>>2];c[J+4>>2]=c[P+4>>2];c[J+8>>2]=c[P+8>>2];c[J+12>>2]=c[P+12>>2];yU(K,J);c[I>>2]=c[f>>2];c[I+4>>2]=c[f+4>>2];c[I+8>>2]=c[f+8>>2];c[I+12>>2]=c[f+12>>2];c[J>>2]=c[K>>2];c[J+4>>2]=c[K+4>>2];c[J+8>>2]=c[K+8>>2];c[J+12>>2]=c[K+12>>2];AU(a,b,d,Q,I,J)|0;c[I>>2]=c[K>>2];c[I+4>>2]=c[K+4>>2];c[I+8>>2]=c[K+8>>2];c[I+12>>2]=c[K+12>>2];c[J>>2]=c[g>>2];c[J+4>>2]=c[g+4>>2];c[J+8>>2]=c[g+8>>2];c[J+12>>2]=c[g+12>>2];AU(a,b,S,e-i|0,I,J)|0;i=0}else i=0}l=R;return i|0}function BU(a,b){a=a|0;b=b|0;var c=0.0,d=0.0;c=+h[b>>3]-+h[a>>3];d=+h[b+8>>3]-+h[a+8>>3];return +(+C(+(d*d+c*c)))}function CU(a){a=+a;var b=0.0;b=1.0-a;return +(b*b*(a*3.0))}function DU(a,b,d){a=a|0;b=b|0;d=+d;var e=0;h[b>>3]=+h[b>>3]*d;e=b+8|0;h[e>>3]=+h[e>>3]*d;c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];return}function EU(a){a=+a;return +(a*a*3.0*(1.0-a))}function FU(a,b,d,e,f,g,i,j,k){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;j=j|0;k=k|0;var m=0.0,n=0.0,o=0.0,p=0.0,q=0,r=0,s=0,t=0,u=0,v=0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0,C=0,D=0,E=0,F=0,G=0,H=0.0,I=0.0,J=0,K=0,L=0,M=0;G=l;l=l+128|0;B=G+112|0;v=G+80|0;u=G;r=G+96|0;s=G+64|0;t=G+48|0;C=G+32|0;D=G+16|0;E=a+(b+-1<<4)|0;q=0;w=0.0;x=0.0;y=0.0;z=0.0;A=0.0;while(1){if((q|0)>=(b|0))break;K=d+(q*40|0)+8|0;c[v>>2]=c[K>>2];c[v+4>>2]=c[K+4>>2];c[v+8>>2]=c[K+8>>2];c[v+12>>2]=c[K+12>>2];c[B>>2]=c[K>>2];c[B+4>>2]=c[K+4>>2];c[B+8>>2]=c[K+8>>2];c[B+12>>2]=c[K+12>>2];H=+QU(v,B)+x;J=d+(q*40|0)+24|0;c[v>>2]=c[K>>2];c[v+4>>2]=c[K+4>>2];c[v+8>>2]=c[K+8>>2];c[v+12>>2]=c[K+12>>2];c[B>>2]=c[J>>2];c[B+4>>2]=c[J+4>>2];c[B+8>>2]=c[J+8>>2];c[B+12>>2]=c[J+12>>2];p=+QU(v,B)+A;c[v>>2]=c[J>>2];c[v+4>>2]=c[J+4>>2];c[v+8>>2]=c[J+8>>2];c[v+12>>2]=c[J+12>>2];c[B>>2]=c[J>>2];c[B+4>>2]=c[J+4>>2];c[B+8>>2]=c[J+8>>2];c[B+12>>2]=c[J+12>>2];o=+QU(v,B)+y;L=a+(q<<4)|0;M=d+(q*40|0)|0;I=+RU(+h[M>>3]);c[B>>2]=c[a>>2];c[B+4>>2]=c[a+4>>2];c[B+8>>2]=c[a+8>>2];c[B+12>>2]=c[a+12>>2];DU(s,B,I);I=+SU(+h[M>>3]);c[B>>2]=c[E>>2];c[B+4>>2]=c[E+4>>2];c[B+8>>2]=c[E+8>>2];c[B+12>>2]=c[E+12>>2];DU(t,B,I);c[v>>2]=c[s>>2];c[v+4>>2]=c[s+4>>2];c[v+8>>2]=c[s+8>>2];c[v+12>>2]=c[s+12>>2];c[B>>2]=c[t>>2];c[B+4>>2]=c[t+4>>2];c[B+8>>2]=c[t+8>>2];c[B+12>>2]=c[t+12>>2];HU(r,v,B);c[v>>2]=c[L>>2];c[v+4>>2]=c[L+4>>2];c[v+8>>2]=c[L+8>>2];c[v+12>>2]=c[L+12>>2];c[B>>2]=c[r>>2];c[B+4>>2]=c[r+4>>2];c[B+8>>2]=c[r+8>>2];c[B+12>>2]=c[r+12>>2];IU(u,v,B);c[v>>2]=c[K>>2];c[v+4>>2]=c[K+4>>2];c[v+8>>2]=c[K+8>>2];c[v+12>>2]=c[K+12>>2];c[B>>2]=c[u>>2];c[B+4>>2]=c[u+4>>2];c[B+8>>2]=c[u+8>>2];c[B+12>>2]=c[u+12>>2];I=+QU(v,B)+w;c[v>>2]=c[J>>2];c[v+4>>2]=c[J+4>>2];c[v+8>>2]=c[J+8>>2];c[v+12>>2]=c[J+12>>2];c[B>>2]=c[u>>2];c[B+4>>2]=c[u+4>>2];c[B+8>>2]=c[u+8>>2];c[B+12>>2]=c[u+12>>2];q=q+1|0;w=I;x=H;y=o;z=+QU(v,B)+z;A=p}o=y*x-A*A;p=o>=0.0?o:-o;if(!(p>=1.0e-06?(m=(y*w-A*z)/o,n=(x*z-A*w)/o,!(p<1.0e-06|m<=0.0|n<=0.0)):0))F=6;if((F|0)==6){c[v>>2]=c[a>>2];c[v+4>>2]=c[a+4>>2];c[v+8>>2]=c[a+8>>2];c[v+12>>2]=c[a+12>>2];c[B>>2]=c[E>>2];c[B+4>>2]=c[E+4>>2];c[B+8>>2]=c[E+8>>2];c[B+12>>2]=c[E+12>>2];m=+BU(v,B)*.3333333333333333;n=m};c[g>>2]=c[a>>2];c[g+4>>2]=c[a+4>>2];c[g+8>>2]=c[a+8>>2];c[g+12>>2]=c[a+12>>2];c[B>>2]=c[e>>2];c[B+4>>2]=c[e+4>>2];c[B+8>>2]=c[e+8>>2];c[B+12>>2]=c[e+12>>2];DU(C,B,m);c[i>>2]=c[C>>2];c[i+4>>2]=c[C+4>>2];c[i+8>>2]=c[C+8>>2];c[i+12>>2]=c[C+12>>2];c[j>>2]=c[E>>2];c[j+4>>2]=c[E+4>>2];c[j+8>>2]=c[E+8>>2];c[j+12>>2]=c[E+12>>2];c[B>>2]=c[f>>2];c[B+4>>2]=c[f+4>>2];c[B+8>>2]=c[f+8>>2];c[B+12>>2]=c[f+12>>2];DU(D,B,n);c[k>>2]=c[D>>2];c[k+4>>2]=c[D+4>>2];c[k+8>>2]=c[D+8>>2];c[k+12>>2]=c[D+12>>2];l=G;return}function GU(a,b,d,e,f,g,i,j){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;j=j|0;var k=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0,r=0.0,s=0.0,t=0,u=0.0,v=0,w=0.0,x=0,y=0.0,z=0,A=0,B=0,C=0,D=0.0,E=0;C=l;l=l+64|0;B=C;z=(j|0)==2;y=+h[d>>3];u=+h[d+8>>3];v=B+8|0;w=+h[e>>3];x=B+16|0;p=+h[e+8>>3];q=B+24|0;r=+h[f>>3];s=+h[g>>3];t=B+32|0;o=+h[f+8>>3];n=+h[g+8>>3];e=B+40|0;f=B+48|0;g=B+56|0;d=1;k=4.0;m=4.0;while(1){h[B>>3]=y;h[v>>3]=u;D=m*.3333333333333333;h[x>>3]=D*w+y;h[q>>3]=D*p+u;D=k*.3333333333333333;h[t>>3]=r-D*s;h[e>>3]=o-D*n;h[f>>3]=r;h[g>>3]=o;if(d?(D=+LU(B,4),D<+LU(i,j)+-.001):0){d=0;break}if(MU(a,b,B)|0){A=5;break}if(m==0.0&k==0.0){A=9;break}E=m>.01;d=0;k=E?k*.5:0.0;m=E?m*.5:0.0}a:do if((A|0)==5){zU((c[46689]|0)+4|0);e=c[46690]|0;d=1;while(1){if((d|0)==4){d=1;break a}E=c[46689]|0;h[e+(E<<4)>>3]=+h[B+(d<<4)>>3];D=+h[B+(d<<4)+8>>3];c[46689]=E+1;h[e+(E<<4)+8>>3]=D;d=d+1|0}}else if((A|0)==9)if(z){zU((c[46689]|0)+4|0);e=c[46690]|0;d=1;while(1){if((d|0)==4){d=1;break a}E=c[46689]|0;h[e+(E<<4)>>3]=+h[B+(d<<4)>>3];D=+h[B+(d<<4)+8>>3];c[46689]=E+1;h[e+(E<<4)+8>>3]=D;d=d+1|0}}else d=0;while(0);l=C;return d|0}function HU(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;h[b>>3]=+h[b>>3]+ +h[d>>3];e=b+8|0;h[e>>3]=+h[e>>3]+ +h[d+8>>3];c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];return}function IU(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;h[b>>3]=+h[b>>3]-+h[d>>3];e=b+8|0;h[e>>3]=+h[e>>3]-+h[d+8>>3];c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];return}function JU(a){a=+a;a=1.0-a;return +(a*a*a)}function KU(a){a=+a;return +(a*a*a)}function LU(a,b){a=a|0;b=b|0;var c=0.0,d=0,e=0.0,f=0.0,g=0;c=0.0;d=1;while(1){if((d|0)>=(b|0))break;g=d+-1|0;e=+h[a+(d<<4)>>3]-+h[a+(g<<4)>>3];f=+h[a+(d<<4)+8>>3]-+h[a+(g<<4)+8>>3];c=+C(+(f*f+e*e))+c;d=d+1|0}return +c}function MU(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0,u=0,v=0.0,w=0,x=0.0,y=0,z=0,A=0,B=0,C=0,D=0.0,E=0.0;C=l;l=l+64|0;t=C+32|0;u=C;w=u+16|0;y=d+16|0;z=d+32|0;A=d+48|0;B=d+8|0;g=d+24|0;i=d+40|0;j=d+56|0;k=u+8|0;m=u+24|0;f=0;a:while(1){if((f|0)>=(b|0)){e=1;break}n=a+(f<<5)|0;c[u>>2]=c[n>>2];c[u+4>>2]=c[n+4>>2];c[u+8>>2]=c[n+8>>2];c[u+12>>2]=c[n+12>>2];n=a+(f<<5)+16|0;c[w>>2]=c[n>>2];c[w+4>>2]=c[n+4>>2];c[w+8>>2]=c[n+8>>2];c[w+12>>2]=c[n+12>>2];n=NU(d,u,t)|0;b:do if((n|0)!=4){o=+h[u>>3];p=+h[k>>3];q=+h[w>>3];r=+h[m>>3];e=0;while(1){if((e|0)>=(n|0))break b;s=+h[t+(e<<3)>>3];if((!(s<1.0e-06|s>.999999)?(x=s*s*s,E=s*3.0,D=1.0-s,s=E*s*D,v=D*D,E=v*E,D=v*D,v=+h[y>>3]*E+ +h[d>>3]*D+ +h[z>>3]*s+ +h[A>>3]*x,x=+h[g>>3]*E+ +h[B>>3]*D+ +h[i>>3]*s+ +h[j>>3]*x,s=v-o,D=x-p,!(D*D+s*s<.001)):0)?(E=v-q,D=x-r,!(D*D+E*E<.001)):0){e=0;break a}e=e+1|0}}while(0);f=f+1|0}l=C;return e|0}function NU(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0.0,i=0,j=0.0,k=0,m=0,n=0,o=0,p=0.0,q=0.0,r=0,s=0,t=0,u=0,v=0;v=l;l=l+96|0;s=v+48|0;t=v+24|0;k=v;u=v+80|0;p=+h[b>>3];g=+h[b+16>>3]-p;q=+h[b+8>>3];j=+h[b+24>>3]-q;c[u>>2]=0;a:do if(!(g==0.0)){j=j/g;m=a+16|0;n=a+32|0;o=a+48|0;OU(+h[a+8>>3]-+h[a>>3]*j,+h[a+24>>3]-+h[m>>3]*j,+h[a+40>>3]-+h[n>>3]*j,+h[a+56>>3]-+h[o>>3]*j,s);h[s>>3]=j*p-q+ +h[s>>3];e=kV(s,t)|0;if((e|0)==4)b=4;else{f=s+8|0;i=s+16|0;k=s+24|0;g=1.0/g;b=0;while(1){if((b|0)>=(e|0))break;j=+h[t+(b<<3)>>3];if(j>=0.0&j<=1.0?(OU(+h[a>>3],+h[m>>3],+h[n>>3],+h[o>>3],s),q=(+h[s>>3]-p+((+h[k>>3]*j+ +h[i>>3])*j+ +h[f>>3])*j)*g,q>=0.0&q<=1.0):0)PU(j,d,u);b=b+1|0}b=c[u>>2]|0}}else{OU(+h[a>>3],+h[a+16>>3],+h[a+32>>3],+h[a+48>>3],s);h[s>>3]=+h[s>>3]-p;r=kV(s,t)|0;if(!(j==0.0)){if((r|0)==4){b=4;break}m=a+8|0;n=a+24|0;o=a+40|0;e=a+56|0;f=s+8|0;i=s+16|0;k=s+24|0;g=1.0/j;b=0;while(1){if((b|0)>=(r|0))break;j=+h[t+(b<<3)>>3];if(j>=0.0&j<=1.0?(OU(+h[m>>3],+h[n>>3],+h[o>>3],+h[e>>3],s),p=(+h[s>>3]-q+((+h[k>>3]*j+ +h[i>>3])*j+ +h[f>>3])*j)*g,p>=0.0&p<=1.0):0)PU(j,d,u);b=b+1|0}b=c[u>>2]|0;break}OU(+h[a+8>>3],+h[a+24>>3],+h[a+40>>3],+h[a+56>>3],s);h[s>>3]=+h[s>>3]-q;i=kV(s,k)|0;b=(i|0)==4;b:do if((r|0)==4){if(b){b=4;break a}else b=0;while(1){if((b|0)>=(i|0))break b;PU(+h[k+(b<<3)>>3],d,u);b=b+1|0}}else{if(b){b=0;while(1){if((b|0)>=(r|0))break b;PU(+h[t+(b<<3)>>3],d,u);b=b+1|0}}else e=0;while(1){if((e|0)>=(r|0))break b;f=t+(e<<3)|0;b=0;while(1){if((b|0)>=(i|0))break;g=+h[f>>3];if(g==+h[k+(b<<3)>>3])PU(g,d,u);b=b+1|0}e=e+1|0}}while(0);b=c[u>>2]|0}while(0);l=v;return b|0}function OU(a,b,c,d,e){a=+a;b=+b;c=+c;d=+d;e=e|0;h[e+24>>3]=d-a+(b-c)*3.0;h[e+16>>3]=(c+a)*3.0-b*6.0;h[e+8>>3]=(b-a)*3.0;h[e>>3]=a;return}function PU(a,b,d){a=+a;b=b|0;d=d|0;var e=0;if(a>=0.0&a<=1.0){e=c[d>>2]|0;h[b+(e<<3)>>3]=a;c[d>>2]=e+1}return}function QU(a,b){a=a|0;b=b|0;return +(+h[b+8>>3]*+h[a+8>>3]+ +h[b>>3]*+h[a>>3])}function RU(a){a=+a;var b=0.0;b=1.0-a;return +(b*b*(b+a*3.0))}function SU(a){a=+a;return +(a*a*((1.0-a)*3.0+a))}function TU(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,i=0.0,j=0,k=0,m=0,n=0,q=0,r=0,s=0,u=0,v=0,w=0,x=0,y=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0.0;H=l;l=l+112|0;E=H+80|0;D=H+64|0;C=H+48|0;G=4;F=C_(40)|0;c[F>>2]=0;w=H+32|0;x=H+16|0;y=H;A=H+96|0;G=D3(186776,1,F|0,G|0)|0;F=z;o=0;e=o;o=0;if((e|0)!=0&(p|0)!=0){f=E3(c[e>>2]|0,G|0,F|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)==1)e=z;else e=0;a:while(1){if(e|0){e=-2;break}g=a+4|0;o=0;ia(113,c[g>>2]|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=E3(c[e>>2]|0,G|0,F|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)==1){e=z;continue}c[46733]=0;c[46734]=0;o=0;ia(114,c[g>>2]<<1|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=E3(c[e>>2]|0,G|0,F|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)==1){e=z;continue}m=(c[46736]|0)/2|0;c[46737]=m;c[46738]=m+-1;m=c[g>>2]|0;g=c[a>>2]|0;e=0;f=-1;i=t;while(1){if((e|0)>=(m|0))break;I=+h[g+(e<<4)>>3];v=i>I;u=v?e:f;e=e+1|0;f=u;i=v?I:i}v=g+(f<<4)|0;c[x>>2]=c[v>>2];c[x+4>>2]=c[v+4>>2];c[x+8>>2]=c[v+8>>2];c[x+12>>2]=c[v+12>>2];v=g+(((f|0)==0?m:f)+-1<<4)|0;c[w>>2]=c[v>>2];c[w+4>>2]=c[v+4>>2];c[w+8>>2]=c[v+8>>2];c[w+12>>2]=c[v+12>>2];v=g+(((f|0)==(m+-1|0)?0:f+1|0)<<4)|0;c[y>>2]=c[v>>2];c[y+4>>2]=c[v+4>>2];c[y+8>>2]=c[v+8>>2];c[y+12>>2]=c[v+12>>2];I=+h[x>>3];if((+h[w>>3]==I?I==+h[y>>3]:0)?+h[y+8>>3]>+h[x+8>>3]:0)v=15;else v=12;b:do if((v|0)==12){v=0;o=0;e=ca(33,w|0,x|0,y|0)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){g=E3(c[f>>2]|0,G|0,F|0)|0;if(!g)bb(f|0,p|0);z=p}else g=-1;if((g|0)==1){e=z;continue a}if((e|0)==1){g=c[46740]|0;e=c[46741]|0;f=0;while(1){if((f|0)>=(m|0))break b;j=c[a>>2]|0;if(!(((f|0)>0?(B=f+-1|0,+h[j+(f<<4)>>3]==+h[j+(B<<4)>>3]):0)?+h[j+(f<<4)+8>>3]==+h[j+(B<<4)+8>>3]:0)){u=c[46733]|0;c[g+(u<<3)>>2]=j+(f<<4);c[g+(u<<3)+4>>2]=g+(((u|0)%(m|0)|0)<<3);c[e+(u<<2)>>2]=g+(u<<3);c[46733]=u+1}f=f+1|0}}else v=15}while(0);c:do if((v|0)==15){v=0;j=c[46740]|0;e=c[46741]|0;g=m;while(1){f=g+-1|0;if((g|0)<=0)break c;k=c[a>>2]|0;if(((g|0)<(m|0)?+h[k+(f<<4)>>3]==+h[k+(g<<4)>>3]:0)?+h[k+(f<<4)+8>>3]==+h[k+(g<<4)+8>>3]:0){g=f;continue}g=c[46733]|0;c[j+(g<<3)>>2]=k+(f<<4);c[j+(g<<3)+4>>2]=j+(((g|0)%(m|0)|0)<<3);c[e+(g<<2)>>2]=j+(g<<3);c[46733]=g+1;g=f}}while(0);o=0;ja(29,e|0,c[46733]|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=E3(c[e>>2]|0,G|0,F|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)==1){e=z;continue}j=0;e=c[46734]|0;d:while(1){if((j|0)>=(e|0)){s=0;break}k=j+1|0;g=k;while(1){if((g|0)>=(e|0)){j=k;continue d}o=0;ja(30,j|0,g|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=E3(c[e>>2]|0,G|0,F|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)==1){e=z;continue a}g=g+1|0;e=c[46734]|0}}while(1){if((s|0)>=(e|0))break;o=0;f=aa(103,s|0,b|0)|0;g=o;o=0;if((g|0)!=0&(p|0)!=0){j=E3(c[g>>2]|0,G|0,F|0)|0;if(!j)bb(g|0,p|0);z=p}else j=-1;if((j|0)==1){e=z;continue a}if(f|0)break;s=s+1|0}if((s|0)==(e|0)){e=c[15686]|0;o=0;c[C>>2]=138776;c[C+4>>2]=192;c[C+8>>2]=138787;ca(29,e|0,138757,C|0)|0;e=o;o=0;if((e|0)!=0&(p|0)!=0){f=E3(c[e>>2]|0,G|0,F|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)==1){e=z;continue}else{v=41;break}}u=b+16|0;k=0;while(1){if((k|0)>=(e|0))break;o=0;f=aa(103,k|0,u|0)|0;g=o;o=0;if((g|0)!=0&(p|0)!=0){j=E3(c[g>>2]|0,G|0,F|0)|0;if(!j)bb(g|0,p|0);z=p}else j=-1;if((j|0)==1){e=z;continue a}if(f|0)break;k=k+1|0}if((k|0)==(e|0)){e=c[15686]|0;o=0;c[D>>2]=138776;c[D+4>>2]=200;c[D+8>>2]=138820;ca(29,e|0,138757,D|0)|0;e=o;o=0;if((e|0)!=0&(p|0)!=0){f=E3(c[e>>2]|0,G|0,F|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)==1){e=z;continue}else{v=48;break}}o=0;e=aa(104,s|0,k|0)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){g=E3(c[f>>2]|0,G|0,F|0)|0;if(!g)bb(f|0,p|0);z=p}else g=-1;if((g|0)==1){e=z;continue}if(!e){e=c[15686]|0;o=0;c[E>>2]=138776;c[E+4>>2]=207;c[E+8>>2]=138858;ca(29,e|0,138757,E|0)|0;e=o;o=0;if((e|0)!=0&(p|0)!=0){f=E3(c[e>>2]|0,G|0,F|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)==1){e=z;continue}o=0;ia(115,2);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=E3(c[e>>2]|0,G|0,F|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)==1){e=z;continue}else{v=53;break}}if((s|0)==(k|0)){o=0;ia(115,2);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=E3(c[e>>2]|0,G|0,F|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)==1){e=z;continue}else{v=56;break}}c[A>>2]=b;c[A+4>>2]=0;f=A+8|0;c[f>>2]=u;c[A+12>>2]=0;o=0;ja(31,1,A|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){g=E3(c[e>>2]|0,G|0,F|0)|0;if(!g)bb(e|0,p|0);z=p}else g=-1;if((g|0)==1){e=z;continue}c[46739]=c[46737];q=s;e:while(1){if((q|0)==-1){g=f;e=0;break}r=c[46743]|0;c[r+(q*52|0)>>2]=2;e=0;while(1){if((e|0)>=3){v=65;break}v=c[r+(q*52|0)+4+(e<<4)+12>>2]|0;if(v|0?(c[v>>2]|0)==1:0){v=68;break}e=e+1|0}if((v|0)==65){v=0;if((e|0)==3){e=c[46735]|0;k=c[e+(c[46738]<<2)>>2]|0;o=0;e=ca(33,u|0,c[c[e+(c[46737]<<2)>>2]>>2]|0,c[k>>2]|0)|0;g=o;o=0;if((g|0)!=0&(p|0)!=0){j=E3(c[g>>2]|0,G|0,F|0)|0;if(!j)bb(g|0,p|0);z=p}else j=-1;if((j|0)==1){e=z;continue a}j=(e|0)==1;n=j?f:k;j=j?k:f}else v=68}if((v|0)==68){v=0;k=c[r+(q*52|0)+4+(e<<4)>>2]|0;m=c[r+(q*52|0)+4+(e<<4)+4>>2]|0;o=0;e=ca(33,c[k>>2]|0,c[c[r+(q*52|0)+4+(((e+1|0)%3|0)<<4)+4>>2]>>2]|0,c[m>>2]|0)|0;g=o;o=0;if((g|0)!=0&(p|0)!=0){j=E3(c[g>>2]|0,G|0,F|0)|0;if(!j)bb(g|0,p|0);z=p}else j=-1;if((j|0)==1){e=z;continue a}j=(e|0)==1;n=j?k:m;j=j?m:k}do if((q|0)==(s|0)){o=0;ja(31,2,j|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){g=E3(c[e>>2]|0,G|0,F|0)|0;if(!g)bb(e|0,p|0);z=p}else g=-1;if((g|0)==1){e=z;continue a}o=0;ja(31,1,n|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){g=E3(c[e>>2]|0,G|0,F|0)|0;if(!g)bb(e|0,p|0);z=p}else g=-1;if((g|0)==1){e=z;continue a}e=0}else{m=c[46735]|0;if((c[m+(c[46737]<<2)>>2]|0)!=(n|0)?(c[m+(c[46738]<<2)>>2]|0)!=(n|0):0){o=0;j=$(34,n|0)|0;e=o;o=0;if((e|0)!=0&(p|0)!=0){g=E3(c[e>>2]|0,G|0,F|0)|0;if(!g)bb(e|0,p|0);z=p}else g=-1;if((g|0)==1){e=z;continue a}o=0;ja(32,2,j|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){g=E3(c[e>>2]|0,G|0,F|0)|0;if(!g)bb(e|0,p|0);z=p}else g=-1;if((g|0)==1){e=z;continue a}o=0;ja(31,1,n|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){g=E3(c[e>>2]|0,G|0,F|0)|0;if(!g)bb(e|0,p|0);z=p}else g=-1;if((g|0)==1){e=z;continue a}if((j|0)<=(c[46739]|0)){e=0;break}c[46739]=j;e=0;break}o=0;k=$(34,j|0)|0;e=o;o=0;if((e|0)!=0&(p|0)!=0){g=E3(c[e>>2]|0,G|0,F|0)|0;if(!g)bb(e|0,p|0);z=p}else g=-1;if((g|0)==1){e=z;continue a}o=0;ja(32,1,k|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){g=E3(c[e>>2]|0,G|0,F|0)|0;if(!g)bb(e|0,p|0);z=p}else g=-1;if((g|0)==1){e=z;continue a}o=0;ja(31,2,j|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){g=E3(c[e>>2]|0,G|0,F|0)|0;if(!g)bb(e|0,p|0);z=p}else g=-1;if((g|0)==1){e=z;continue a}if((k|0)>=(c[46739]|0)){e=0;break}c[46739]=k;e=0}while(0);while(1){if((e|0)>=3){q=-1;continue e}g=c[r+(q*52|0)+4+(e<<4)+12>>2]|0;if(g|0?(c[g>>2]|0)==1:0)break;e=e+1|0}q=(g-(c[46743]|0)|0)/52|0}while(1){if(!g)break;g=c[g+4>>2]|0;e=e+1|0}o=0;ia(115,e|0);g=o;o=0;if((g|0)!=0&(p|0)!=0){j=E3(c[g>>2]|0,G|0,F|0)|0;if(!j)bb(g|0,p|0);z=p}else j=-1;if((j|0)==1)e=z;else{v=94;break}}if((v|0)==41)e=-1;else if((v|0)==48)e=-1;else if((v|0)==53){c[d+4>>2]=2;e=c[46742]|0;c[e>>2]=c[b>>2];c[e+4>>2]=c[b+4>>2];c[e+8>>2]=c[b+8>>2];c[e+12>>2]=c[b+12>>2];F=e+16|0;c[F>>2]=c[u>>2];c[F+4>>2]=c[u+4>>2];c[F+8>>2]=c[u+8>>2];c[F+12>>2]=c[u+12>>2];c[d>>2]=e;e=0}else if((v|0)==56){c[d+4>>2]=2;e=c[46742]|0;c[e>>2]=c[b>>2];c[e+4>>2]=c[b+4>>2];c[e+8>>2]=c[b+8>>2];c[e+12>>2]=c[b+12>>2];F=e+16|0;c[F>>2]=c[u>>2];c[F+4>>2]=c[u+4>>2];c[F+8>>2]=c[u+8>>2];c[F+12>>2]=c[u+12>>2];c[d>>2]=e;e=0}else if((v|0)==94){c[d+4>>2]=e;g=c[46742]|0;while(1){e=e+-1|0;if(!f)break;F=g+(e<<4)|0;E=c[f>>2]|0;c[F>>2]=c[E>>2];c[F+4>>2]=c[E+4>>2];c[F+8>>2]=c[E+8>>2];c[F+12>>2]=c[E+12>>2];f=c[f+4>>2]|0}c[d>>2]=g;e=0}D_(G|0);l=H;return e|0}function UU(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;h=l;l=l+64|0;e=h+48|0;g=h+32|0;f=h+16|0;d=h;if((c[46746]|0)<(a|0)){b=c[46740]|0;if(!b){g=C_(a<<3)|0;c[46740]=g;if(!g){g=c[15686]|0;c[d>>2]=138776;c[d+4>>2]=523;c[d+8>>2]=139026;g1(g,138757,d)|0;bb(186776,1)}g=C_(a<<2)|0;c[46741]=g;if(!g){g=c[15686]|0;c[f>>2]=138776;c[f+4>>2]=527;c[f+8>>2]=139045;g1(g,138757,f)|0;bb(186776,1)}}else{f=F_(b,a<<3)|0;c[46740]=f;if(!f){f=c[15686]|0;c[g>>2]=138776;c[g+4>>2]=533;c[g+8>>2]=139065;g1(f,138757,g)|0;bb(186776,1)}g=F_(c[46741]|0,a<<2)|0;c[46741]=g;if(!g){g=c[15686]|0;c[e>>2]=138776;c[e+4>>2]=539;c[e+8>>2]=139085;g1(g,138757,e)|0;bb(186776,1)}}c[46746]=a}l=h;return}function VU(a){a=a|0;var b=0,d=0,e=0,f=0;f=l;l=l+32|0;e=f+16|0;d=f;if((c[46736]|0)<(a|0)){b=c[46735]|0;if(!b){e=C_(a<<2)|0;c[46735]=e;if(!e){e=c[15686]|0;c[d>>2]=138776;c[d+4>>2]=573;c[d+8>>2]=138981;g1(e,138757,d)|0;bb(186776,1)}}else{d=F_(b,a<<2)|0;c[46735]=d;if(!d){d=c[15686]|0;c[e>>2]=138776;c[e+4>>2]=580;c[e+8>>2]=139003;g1(d,138757,e)|0;bb(186776,1)}}c[46736]=a}l=f;return}function WU(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0;d=+h[b+8>>3];e=+h[b>>3];d=(+h[c>>3]-e)*(+h[a+8>>3]-d)-(+h[a>>3]-e)*(+h[c+8>>3]-d);return (d>0.0?1:d<0.0?2:3)|0}function XU(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=l;l=l+16|0;h=i;a:while(1){if((b|0)>3)e=0;else{b=9;break}while(1){if((e|0)>=(b|0)){b=8;break a}f=e+1|0;d=(f|0)%(b|0)|0;g=(e+2|0)%(b|0)|0;if(!(dV(e,g,a,b)|0))e=f;else break}eV(c[a+(e<<2)>>2]|0,c[a+(d<<2)>>2]|0,c[a+(g<<2)>>2]|0);b=b+-1|0;while(1){if((d|0)>=(b|0))continue a;g=d+1|0;c[a+(d<<2)>>2]=c[a+(g<<2)>>2];d=g}}if((b|0)==8){a=c[15686]|0;c[h>>2]=138776;c[h+4>>2]=324;c[h+8>>2]=138921;g1(a,138757,h)|0}else if((b|0)==9)eV(c[a>>2]|0,c[a+4>>2]|0,c[a+8>>2]|0);l=i;return}function YU(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;i=c[46743]|0;j=i+(a*52|0)|0;k=i+(b*52|0)|0;g=0;while(1){if((g|0)==3)break;l=i+(a*52|0)+4+(g<<4)|0;m=i+(a*52|0)+4+(g<<4)+4|0;n=i+(a*52|0)+4+(g<<4)+12|0;f=0;while(1){if((f|0)==3)break;o=c[c[l>>2]>>2]|0;h=c[c[i+(b*52|0)+4+(f<<4)>>2]>>2]|0;if((o|0)==(h|0)){d=c[c[i+(b*52|0)+4+(f<<4)+4>>2]>>2]|0;if((c[c[m>>2]>>2]|0)==(d|0))e=10;else e=8}else{d=c[c[i+(b*52|0)+4+(f<<4)+4>>2]>>2]|0;e=8}if(((e|0)==8?(e=0,(o|0)==(d|0)):0)?(c[c[m>>2]>>2]|0)==(h|0):0)e=10;if((e|0)==10){c[n>>2]=k;c[i+(b*52|0)+4+(f<<4)+12>>2]=j}f=f+1|0}g=g+1|0}return}function ZU(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=c[46743]|0;d=0;e=0;while(1){if((e|0)==3)break;d=d+((WU(c[c[f+(a*52|0)+4+(e<<4)>>2]>>2]|0,c[c[f+(a*52|0)+4+(e<<4)+4>>2]>>2]|0,b)|0)!=2&1)|0;e=e+1|0}return ((d|0)==3|(d|0)==0)&1|0}function _U(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=c[46743]|0;e=d+(a*52|0)|0;a:do if(!(c[e>>2]|0)){c[e>>2]=1;if((a|0)==(b|0))d=1;else{f=0;while(1){if((f|0)>=3)break;e=c[d+(a*52|0)+4+(f<<4)+12>>2]|0;if(e){if(_U((e-d|0)/52|0,b)|0){d=1;break a}d=c[46743]|0}f=f+1|0}c[d+(a*52|0)>>2]=0;d=0}}else d=0;while(0);return d|0}function $U(a){a=a|0;var b=0,d=0,e=0,f=0;f=l;l=l+32|0;e=f+16|0;d=f;if((c[46744]|0)<(a|0)){b=c[46742]|0;if(!b){e=C_(a<<4)|0;c[46742]=e;if(!e){e=c[15686]|0;c[d>>2]=138776;c[d+4>>2]=593;c[d+8>>2]=138884;g1(e,138757,d)|0;bb(186776,1)}}else{d=F_(b,a<<4)|0;c[46742]=d;if(!d){d=c[15686]|0;c[e>>2]=138776;c[e+4>>2]=599;c[e+8>>2]=138902;g1(d,138757,e)|0;bb(186776,1)}}c[46744]=a}l=f;return}function aV(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=c[46738]|0;e=c[46737]|0;f=(d|0)>=(e|0);if((a|0)==1)if(f){c[b+4>>2]=c[(c[46735]|0)+(e<<2)>>2];a=186948;d=-1}else{a=186948;d=-1}else if(f){c[b+4>>2]=c[(c[46735]|0)+(d<<2)>>2];a=186952;d=1}else{a=186952;d=1}f=(c[a>>2]|0)+d|0;c[a>>2]=f;c[(c[46735]|0)+(f<<2)>>2]=b;return}function bV(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;f=c[46739]|0;g=c[46735]|0;b=c[46737]|0;while(1){if((b|0)>=(f|0)){e=4;break}d=b+1|0;if((WU(c[c[g+(d<<2)>>2]>>2]|0,c[c[g+(b<<2)>>2]>>2]|0,c[a>>2]|0)|0)==1)break;else b=d}a:do if((e|0)==4){b=c[46738]|0;while(1){if((b|0)<=(f|0)){b=f;break a}d=b+-1|0;if((WU(c[c[g+(d<<2)>>2]>>2]|0,c[c[g+(b<<2)>>2]>>2]|0,c[a>>2]|0)|0)==2)break;else b=d}}while(0);return b|0}function cV(a,b){a=a|0;b=b|0;c[((a|0)==1?186952:186948)>>2]=b;return}function dV(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;f=c[c[d+(((a+-1+e|0)%(e|0)|0)<<2)>>2]>>2]|0;i=c[c[d+(a<<2)>>2]>>2]|0;g=c[c[d+(((a+1|0)%(e|0)|0)<<2)>>2]>>2]|0;k=(WU(f,i,g)|0)==1;j=c[c[d+(b<<2)>>2]>>2]|0;if(k)if((WU(i,j,f)|0)==1){f=WU(j,i,g)|0;g=1;h=5}else f=0;else{f=WU(i,j,g)|0;g=2;h=5}a:do if((h|0)==5)if((f|0)==(g|0)){f=0;while(1){if((f|0)>=(e|0)){f=1;break a}g=f;f=f+1|0;h=(f|0)%(e|0)|0;if((h|0)==(b|0)|((g|0)==(b|0)|((g|0)==(a|0)|(h|0)==(a|0))))continue;if(gV(i,j,c[c[d+(g<<2)>>2]>>2]|0,c[c[d+(h<<2)>>2]>>2]|0)|0){f=0;break}}}else f=0;while(0);return f|0}function eV(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=c[46734]|0;f=c[46745]|0;if((e|0)<(f|0))h=e;else{fV(f+20|0);h=c[46734]|0}g=c[46743]|0;c[46734]=h+1;f=g+(h*52|0)|0;c[f>>2]=0;c[g+(h*52|0)+4>>2]=a;c[g+(h*52|0)+8>>2]=b;c[g+(h*52|0)+16>>2]=0;c[g+(h*52|0)+20>>2]=b;c[g+(h*52|0)+24>>2]=d;c[g+(h*52|0)+32>>2]=0;c[g+(h*52|0)+36>>2]=d;c[g+(h*52|0)+40>>2]=a;c[g+(h*52|0)+48>>2]=0;e=0;while(1){if((e|0)==3)break;c[g+(h*52|0)+4+(e<<4)+8>>2]=f;e=e+1|0}return}function fV(a){a=a|0;var b=0,d=0,e=0,f=0;f=l;l=l+32|0;e=f+16|0;d=f;if((c[46745]|0)<(a|0)){b=c[46743]|0;if(!b){e=C_(a*52|0)|0;c[46743]=e;if(!e){e=c[15686]|0;c[d>>2]=138776;c[d+4>>2]=552;c[d+8>>2]=138942;g1(e,138757,d)|0;bb(186776,1)}}else{d=F_(b,a*52|0)|0;c[46743]=d;if(!d){d=c[15686]|0;c[e>>2]=138776;c[e+4>>2]=558;c[e+8>>2]=138961;g1(d,138757,e)|0;bb(186776,1)}}c[46745]=a}l=f;return}function gV(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0;f=WU(a,b,c)|0;if((((f|0)!=3?(g=WU(a,b,d)|0,(g|0)!=3):0)?(h=WU(c,d,a)|0,(h|0)!=3):0)?(e=WU(c,d,b)|0,(e|0)!=3):0)return ((f|0)==1^(g|0)==1)&((h|0)==1^(e|0)==1)&1|0;if(((hV(a,b,c)|0)==0?(hV(a,b,d)|0)==0:0)?(hV(c,d,a)|0)==0:0)return (hV(c,d,b)|0)!=0|0;return 1}function hV(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0,f=0.0,g=0.0;e=+h[a>>3];g=+h[b>>3]-e;f=+h[a+8>>3];d=+h[b+8>>3]-f;e=+h[c>>3]-e;f=+h[c+8>>3]-f;if((WU(a,b,c)|0)==3?f*d+e*g>=0.0:0)a=f*f+e*e<=d*d+g*g&1;else a=0;return a|0}function iV(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0.0,i=0,j=0.0,k=0,l=0,m=0,n=0,o=0,p=0.0,q=0;m=C_(d<<2)|0;n=C_((d<<3)+8|0)|0;o=n+8|0;f=0;while(1){if((f|0)>=(d|0))break;c[m+(f<<2)>>2]=-1;h[o+(f<<3)>>3]=-2147483647.0;f=f+1|0}h[n>>3]=-2147483648.0;a:while(1){if((a|0)==(b|0))break;l=o+(a<<3)|0;j=+h[l>>3];h[l>>3]=j==-2147483647.0?0.0:-j;k=0;f=-1;while(1){if((k|0)>=(d|0)){a=f;continue a}i=o+(k<<3)|0;g=+h[i>>3];if(g<0.0){q=(a|0)<(k|0);p=+h[(c[e+((q?k:a)<<2)>>2]|0)+((q?a:k)<<3)>>3];j=-(p+ +h[l>>3]);if(p!=0.0&g>3]=j;c[m+(k<<2)>>2]=a;g=j}f=g>+h[o+(f<<3)>>3]?k:f}k=k+1|0}}D_(n);return m|0}function jV(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0;j=l;l=l+32|0;k=j+16|0;m=j;i=c[h+4>>2]|0;c[m>>2]=c[a>>2];c[m+4>>2]=c[a+4>>2];c[m+8>>2]=c[a+8>>2];c[m+12>>2]=c[a+12>>2];c[k>>2]=c[e>>2];c[k+4>>2]=c[e+4>>2];c[k+8>>2]=c[e+8>>2];c[k+12>>2]=c[e+12>>2];if(!(CV(m,b,k,f,h)|0)){a=c[h+24>>2]|0;c[a+(i<<2)>>2]=g;m=i+1|0;c[a+(m<<2)>>2]=d;a=iV(m,i,i+2|0,a)|0}else{a=C_((i<<2)+8|0)|0;m=i+1|0;c[a+(i<<2)>>2]=m;c[a+(m<<2)>>2]=-1}l=j;return a|0}function kV(a,b){a=a|0;b=b|0;var c=0,d=0.0,e=0.0,f=0.0,g=0.0,i=0.0,j=0;d=+h[a+24>>3];a:do if(d<1.0e-07&d>-1.0e-07)a=lV(a,b)|0;else{g=+h[a+16>>3]/(d*3.0);f=+h[a+8>>3]/d;e=g*g;d=g*2.0*e-g*f+ +h[a>>3]/d;e=f*.3333333333333333-e;e=e*e*4.0*e;f=d*d+e;if(!(f<0.0)){i=(+C(+f)-d)*.5;e=+n$(i);d=+n$(-d-i)+e;h[b>>3]=d;if(f>0.0)a=1;else{d=d*-.5;h[b+16>>3]=d;a=1;c=7}}else{i=+K(+(+C(+-f)),+-d);d=+n$(+C(+-e)*.5)*2.0;h[b>>3]=d*+E(+(i*.3333333333333333));h[b+8>>3]=+E(+((i+6.283185307179586)*.3333333333333333))*d;d=+E(+((i+-6.283185307179586)*.3333333333333333))*d;a=2;c=7}if((c|0)==7){h[b+(a<<3)>>3]=d;a=3}c=0;while(1){if((c|0)>=(a|0))break a;j=b+(c<<3)|0;h[j>>3]=+h[j>>3]-g;c=c+1|0}}while(0);return a|0}function lV(a,b){a=a|0;b=b|0;var c=0.0,d=0.0;c=+h[a+16>>3];do if(!(c<1.0e-07&c>-1.0e-07)){d=+h[a+8>>3]/(c*2.0);c=d*d-+h[a>>3]/c;if(!(c<0.0))if(c==0.0){h[b>>3]=-d;a=1;break}else{c=+C(+c)-d;h[b>>3]=c;h[b+8>>3]=d*-2.0-c;a=2;break}else a=0}else a=mV(a,b)|0;while(0);return a|0}function mV(a,b){a=a|0;b=b|0;var c=0.0,d=0.0;d=+h[a+8>>3];c=+h[a>>3];if(d<1.0e-07&d>-1.0e-07)a=c<1.0e-07&c>-1.0e-07?4:0;else{h[b>>3]=-c/d;a=1}return a|0}function nV(a){a=a|0;D_(c[a>>2]|0);D_(a);return}function oV(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;e=c[a+4>>2]|0;i=(e*3|0)+-2|0;d=c[46748]|0;if((i|0)>(c[46747]|0)){if(!d)d=C_(i<<4)|0;else d=F_(d,i<<4)|0;c[46748]=d;c[46747]=i;h=d;g=d}else{h=d;g=d}f=c[a>>2]|0;c[h>>2]=c[f>>2];c[h+4>>2]=c[f+4>>2];c[h+8>>2]=c[f+8>>2];c[h+12>>2]=c[f+12>>2];G3(h+16|0,f|0,16)|0;e=e+-1|0;d=1;a=2;while(1){if((d|0)>=(e|0))break;j=h+(a+2<<4)|0;k=h+(a+1<<4)|0;m=h+(a<<4)|0;l=f+(d<<4)|0;c[m>>2]=c[l>>2];c[m+4>>2]=c[l+4>>2];c[m+8>>2]=c[l+8>>2];c[m+12>>2]=c[l+12>>2];G3(k|0,l|0,16)|0;c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];c[j+8>>2]=c[k+8>>2];c[j+12>>2]=c[k+12>>2];d=d+1|0;a=a+3|0}l=h+(a<<4)|0;m=f+(d<<4)|0;c[l>>2]=c[m>>2];c[l+4>>2]=c[m+4>>2];c[l+8>>2]=c[m+8>>2];c[l+12>>2]=c[m+12>>2];G3(h+(a+1<<4)|0,m|0,16)|0;c[b+4>>2]=i;c[b>>2]=g;return}function pV(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0;d=+h[b+8>>3];e=+h[b>>3];d=(+h[c>>3]-e)*(+h[a+8>>3]-d)-(+h[a>>3]-e)*(+h[c+8>>3]-d);return (d>.0001?1:(d<-.0001)<<31>>31)|0}function qV(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0,f=0.0;e=+h[a>>3];f=+h[b>>3];if(e!=f){d=+h[c>>3];if(!(e>3];e=+h[c+8>>3];d=+h[b+8>>3];if(!(f>2]=c[a>>2];c[g+4>>2]=c[a+4>>2];c[g+8>>2]=c[a+8>>2];c[g+12>>2]=c[a+12>>2];c[h>>2]=c[b>>2];c[h+4>>2]=c[b+4>>2];c[h+8>>2]=c[b+8>>2];c[h+12>>2]=c[b+12>>2];c[i>>2]=c[d>>2];c[i+4>>2]=c[d+4>>2];c[i+8>>2]=c[d+8>>2];c[i+12>>2]=c[d+12>>2];j=pV(g,h,i)|0;if((j|0)==0?(c[g>>2]=c[a>>2],c[g+4>>2]=c[a+4>>2],c[g+8>>2]=c[a+8>>2],c[g+12>>2]=c[a+12>>2],c[h>>2]=c[b>>2],c[h+4>>2]=c[b+4>>2],c[h+8>>2]=c[b+8>>2],c[h+12>>2]=c[b+12>>2],c[i>>2]=c[d>>2],c[i+4>>2]=c[d+4>>2],c[i+8>>2]=c[d+8>>2],c[i+12>>2]=c[d+12>>2],(qV(g,h,i)|0)!=0):0)f=1;else k=3;do if((k|0)==3){c[g>>2]=c[a>>2];c[g+4>>2]=c[a+4>>2];c[g+8>>2]=c[a+8>>2];c[g+12>>2]=c[a+12>>2];c[h>>2]=c[b>>2];c[h+4>>2]=c[b+4>>2];c[h+8>>2]=c[b+8>>2];c[h+12>>2]=c[b+12>>2];c[i>>2]=c[e>>2];c[i+4>>2]=c[e+4>>2];c[i+8>>2]=c[e+8>>2];c[i+12>>2]=c[e+12>>2];f=pV(g,h,i)|0;if((f|0)==0?(c[g>>2]=c[a>>2],c[g+4>>2]=c[a+4>>2],c[g+8>>2]=c[a+8>>2],c[g+12>>2]=c[a+12>>2],c[h>>2]=c[b>>2],c[h+4>>2]=c[b+4>>2],c[h+8>>2]=c[b+8>>2],c[h+12>>2]=c[b+12>>2],c[i>>2]=c[e>>2],c[i+4>>2]=c[e+4>>2],c[i+8>>2]=c[e+8>>2],c[i+12>>2]=c[e+12>>2],qV(g,h,i)|0):0){f=1;break};c[g>>2]=c[d>>2];c[g+4>>2]=c[d+4>>2];c[g+8>>2]=c[d+8>>2];c[g+12>>2]=c[d+12>>2];c[h>>2]=c[e>>2];c[h+4>>2]=c[e+4>>2];c[h+8>>2]=c[e+8>>2];c[h+12>>2]=c[e+12>>2];c[i>>2]=c[a>>2];c[i+4>>2]=c[a+4>>2];c[i+8>>2]=c[a+8>>2];c[i+12>>2]=c[a+12>>2];a=pV(g,h,i)|0;c[g>>2]=c[d>>2];c[g+4>>2]=c[d+4>>2];c[g+8>>2]=c[d+8>>2];c[g+12>>2]=c[d+12>>2];c[h>>2]=c[e>>2];c[h+4>>2]=c[e+4>>2];c[h+8>>2]=c[e+8>>2];c[h+12>>2]=c[e+12>>2];c[i>>2]=c[b>>2];c[i+4>>2]=c[b+4>>2];c[i+8>>2]=c[b+8>>2];c[i+12>>2]=c[b+12>>2];k=(O(f,j)|0)<0;f=(O(pV(g,h,i)|0,a)|0)>>>31;f=k?f:0}while(0);l=m;return f|0}function sV(a,b){a=a|0;b=b|0;var c=0.0,d=0.0;c=+h[a>>3]-+h[b>>3];d=+h[a+8>>3]-+h[b+8>>3];return +(d*d+c*c)}function tV(a){a=a|0;c[a+24>>2]=uV(c[a+4>>2]|0)|0;vV(a);return}function uV(a){a=a|0;var b=0,d=0,e=0,f=0;e=a+2|0;f=C_(e<<2)|0;b=E_(O(a,a)|0,8)|0;d=0;while(1){if((d|0)>=(a|0))break;c[f+(d<<2)>>2]=b;b=b+(a<<3)|0;d=d+1|0}while(1){if((a|0)>=(e|0))break;c[f+(a<<2)>>2]=0;a=a+1|0}return f|0}function vV(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0.0;p=l;l=l+32|0;i=p+16|0;g=p;j=c[a+4>>2]|0;m=c[a+8>>2]|0;n=c[a+16>>2]|0;o=c[a+20>>2]|0;d=c[a+24>>2]|0;b=0;while(1){if((b|0)>=(j|0))break;q=c[o+(b<<2)>>2]|0;e=m+(b<<4)|0;f=m+(q<<4)|0;c[g>>2]=c[e>>2];c[g+4>>2]=c[e+4>>2];c[g+8>>2]=c[e+8>>2];c[g+12>>2]=c[e+12>>2];c[i>>2]=c[f>>2];c[i+4>>2]=c[f+4>>2];c[i+8>>2]=c[f+8>>2];c[i+12>>2]=c[f+12>>2];r=+wV(g,i);f=c[d+(b<<2)>>2]|0;h[f+(q<<3)>>3]=r;h[(c[d+(q<<2)>>2]|0)+(b<<3)>>3]=r;a=b+-1|0;a=(q|0)==(a|0)?b+-2|0:a;while(1){if((a|0)<=-1)break;if((xV(b,a,m,n,o)|0?xV(a,b,m,n,o)|0:0)?(k=m+(a<<4)|0,c[g>>2]=c[e>>2],c[g+4>>2]=c[e+4>>2],c[g+8>>2]=c[e+8>>2],c[g+12>>2]=c[e+12>>2],c[i>>2]=c[k>>2],c[i+4>>2]=c[k+4>>2],c[i+8>>2]=c[k+8>>2],c[i+12>>2]=c[k+12>>2],yV(g,i,j,j,j,m,n)|0):0){c[g>>2]=c[e>>2];c[g+4>>2]=c[e+4>>2];c[g+8>>2]=c[e+8>>2];c[g+12>>2]=c[e+12>>2];c[i>>2]=c[k>>2];c[i+4>>2]=c[k+4>>2];c[i+8>>2]=c[k+8>>2];c[i+12>>2]=c[k+12>>2];r=+wV(g,i);h[f+(a<<3)>>3]=r;h[(c[d+(a<<2)>>2]|0)+(b<<3)>>3]=r}a=a+-1|0}b=b+1|0}l=p;return}function wV(a,b){a=a|0;b=b|0;var d=0.0,e=0,f=0,g=0;e=l;l=l+32|0;f=e+16|0;g=e;c[g>>2]=c[a>>2];c[g+4>>2]=c[a+4>>2];c[g+8>>2]=c[a+8>>2];c[g+12>>2]=c[a+12>>2];c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];d=+C(+(+sV(g,f)));l=e;return +d}function xV(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0;g=l;l=l+64|0;h=g+48|0;i=g+32|0;j=g+16|0;k=g;n=d+(c[f+(a<<2)>>2]<<4)|0;m=d+(a<<4)|0;e=d+(c[e+(a<<2)>>2]<<4)|0;f=d+(b<<4)|0;c[k>>2]=c[n>>2];c[k+4>>2]=c[n+4>>2];c[k+8>>2]=c[n+8>>2];c[k+12>>2]=c[n+12>>2];c[j>>2]=c[m>>2];c[j+4>>2]=c[m+4>>2];c[j+8>>2]=c[m+8>>2];c[j+12>>2]=c[m+12>>2];c[i>>2]=c[e>>2];c[i+4>>2]=c[e+4>>2];c[i+8>>2]=c[e+8>>2];c[i+12>>2]=c[e+12>>2];c[h>>2]=c[f>>2];c[h+4>>2]=c[f+4>>2];c[h+8>>2]=c[f+8>>2];c[h+12>>2]=c[f+12>>2];f=zV(k,j,i,h)|0;l=g;return f|0}function yV(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0;p=l;l=l+64|0;n=p+48|0;m=p+32|0;k=p+16|0;j=p;i=0;while(1){if((i|0)>=(d|0)){o=4;break}r=g+(i<<4)|0;q=g+(c[h+(i<<2)>>2]<<4)|0;c[j>>2]=c[a>>2];c[j+4>>2]=c[a+4>>2];c[j+8>>2]=c[a+8>>2];c[j+12>>2]=c[a+12>>2];c[k>>2]=c[b>>2];c[k+4>>2]=c[b+4>>2];c[k+8>>2]=c[b+8>>2];c[k+12>>2]=c[b+12>>2];c[m>>2]=c[r>>2];c[m+4>>2]=c[r+4>>2];c[m+8>>2]=c[r+8>>2];c[m+12>>2]=c[r+12>>2];c[n>>2]=c[q>>2];c[n+4>>2]=c[q+4>>2];c[n+8>>2]=c[q+8>>2];c[n+12>>2]=c[q+12>>2];if(!(rV(j,k,m,n)|0))i=i+1|0;else{e=0;break}}a:do if((o|0)==4)while(1){if((e|0)>=(f|0)){e=1;break a}q=g+(e<<4)|0;r=g+(c[h+(e<<2)>>2]<<4)|0;c[j>>2]=c[a>>2];c[j+4>>2]=c[a+4>>2];c[j+8>>2]=c[a+8>>2];c[j+12>>2]=c[a+12>>2];c[k>>2]=c[b>>2];c[k+4>>2]=c[b+4>>2];c[k+8>>2]=c[b+8>>2];c[k+12>>2]=c[b+12>>2];c[m>>2]=c[q>>2];c[m+4>>2]=c[q+4>>2];c[m+8>>2]=c[q+8>>2];c[m+12>>2]=c[q+12>>2];c[n>>2]=c[r>>2];c[n+4>>2]=c[r+4>>2];c[n+8>>2]=c[r+8>>2];c[n+12>>2]=c[r+12>>2];if(!(rV(j,k,m,n)|0)){e=e+1|0;o=4}else{e=0;break}}while(0);l=p;return e|0}function zV(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;g=l;l=l+48|0;h=g+32|0;i=g+16|0;j=g;c[j>>2]=c[e>>2];c[j+4>>2]=c[e+4>>2];c[j+8>>2]=c[e+8>>2];c[j+12>>2]=c[e+12>>2];c[i>>2]=c[a>>2];c[i+4>>2]=c[a+4>>2];c[i+8>>2]=c[a+8>>2];c[i+12>>2]=c[a+12>>2];c[h>>2]=c[b>>2];c[h+4>>2]=c[b+4>>2];c[h+8>>2]=c[b+8>>2];c[h+12>>2]=c[b+12>>2];f=pV(j,i,h)|0;c[j>>2]=c[e>>2];c[j+4>>2]=c[e+4>>2];c[j+8>>2]=c[e+8>>2];c[j+12>>2]=c[e+12>>2];c[i>>2]=c[b>>2];c[i+4>>2]=c[b+4>>2];c[i+8>>2]=c[b+8>>2];c[i+12>>2]=c[b+12>>2];c[h>>2]=c[d>>2];c[h+4>>2]=c[d+4>>2];c[h+8>>2]=c[d+8>>2];c[h+12>>2]=c[d+12>>2];e=pV(j,i,h)|0;c[j>>2]=c[a>>2];c[j+4>>2]=c[a+4>>2];c[j+8>>2]=c[a+8>>2];c[j+12>>2]=c[a+12>>2];c[i>>2]=c[b>>2];c[i+4>>2]=c[b+4>>2];c[i+8>>2]=c[b+8>>2];c[i+12>>2]=c[b+12>>2];c[h>>2]=c[d>>2];c[h+4>>2]=c[d+4>>2];c[h+8>>2]=c[d+8>>2];c[h+12>>2]=c[d+12>>2];d=(pV(j,i,h)|0)>0;l=g;return (d?e|f:e&f)>>>31^1|0}function AV(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;s=l;l=l+80|0;j=s+64|0;i=s+48|0;g=s+32|0;k=s+16|0;o=s;p=c[a+4>>2]|0;q=c[a+8>>2]|0;r=c[a+16>>2]|0;m=c[a+20>>2]|0;n=C_((p<<3)+16|0)|0;if((b|0)==-2222){c[j>>2]=c[d>>2];c[j+4>>2]=c[d+4>>2];c[j+8>>2]=c[d+8>>2];c[j+12>>2]=c[d+12>>2];b=BV(a,j)|0}if((b|0)>-1){a=c[a+12>>2]|0;f=c[a+(b+1<<2)>>2]|0;a=c[a+(b<<2)>>2]|0}else{f=p;a=p}b=0;while(1){if((b|0)>=(a|0)){b=a;break}u=q+(b<<4)|0;c[o>>2]=c[u>>2];c[o+4>>2]=c[u+4>>2];c[o+8>>2]=c[u+8>>2];c[o+12>>2]=c[u+12>>2];u=q+(c[m+(b<<2)>>2]<<4)|0;t=q+(c[r+(b<<2)>>2]<<4)|0;c[k>>2]=c[u>>2];c[k+4>>2]=c[u+4>>2];c[k+8>>2]=c[u+8>>2];c[k+12>>2]=c[u+12>>2];c[g>>2]=c[o>>2];c[g+4>>2]=c[o+4>>2];c[g+8>>2]=c[o+8>>2];c[g+12>>2]=c[o+12>>2];c[i>>2]=c[t>>2];c[i+4>>2]=c[t+4>>2];c[i+8>>2]=c[t+8>>2];c[i+12>>2]=c[t+12>>2];c[j>>2]=c[d>>2];c[j+4>>2]=c[d+4>>2];c[j+8>>2]=c[d+8>>2];c[j+12>>2]=c[d+12>>2];if((zV(k,g,i,j)|0)!=0?(c[i>>2]=c[d>>2],c[i+4>>2]=c[d+4>>2],c[i+8>>2]=c[d+8>>2],c[i+12>>2]=c[d+12>>2],c[j>>2]=c[o>>2],c[j+4>>2]=c[o+4>>2],c[j+8>>2]=c[o+8>>2],c[j+12>>2]=c[o+12>>2],(yV(i,j,a,f,p,q,r)|0)!=0):0){c[i>>2]=c[d>>2];c[i+4>>2]=c[d+4>>2];c[i+8>>2]=c[d+8>>2];c[i+12>>2]=c[d+12>>2];c[j>>2]=c[o>>2];c[j+4>>2]=c[o+4>>2];c[j+8>>2]=c[o+8>>2];c[j+12>>2]=c[o+12>>2];e=+wV(i,j)}else e=0.0;h[n+(b<<3)>>3]=e;b=b+1|0}while(1){if((b|0)>=(f|0)){b=f;break}h[n+(b<<3)>>3]=0.0;b=b+1|0}while(1){if((b|0)>=(p|0))break;t=q+(b<<4)|0;c[o>>2]=c[t>>2];c[o+4>>2]=c[t+4>>2];c[o+8>>2]=c[t+8>>2];c[o+12>>2]=c[t+12>>2];t=q+(c[m+(b<<2)>>2]<<4)|0;u=q+(c[r+(b<<2)>>2]<<4)|0;c[k>>2]=c[t>>2];c[k+4>>2]=c[t+4>>2];c[k+8>>2]=c[t+8>>2];c[k+12>>2]=c[t+12>>2];c[g>>2]=c[o>>2];c[g+4>>2]=c[o+4>>2];c[g+8>>2]=c[o+8>>2];c[g+12>>2]=c[o+12>>2];c[i>>2]=c[u>>2];c[i+4>>2]=c[u+4>>2];c[i+8>>2]=c[u+8>>2];c[i+12>>2]=c[u+12>>2];c[j>>2]=c[d>>2];c[j+4>>2]=c[d+4>>2];c[j+8>>2]=c[d+8>>2];c[j+12>>2]=c[d+12>>2];if((zV(k,g,i,j)|0)!=0?(c[i>>2]=c[d>>2],c[i+4>>2]=c[d+4>>2],c[i+8>>2]=c[d+8>>2],c[i+12>>2]=c[d+12>>2],c[j>>2]=c[o>>2],c[j+4>>2]=c[o+4>>2],c[j+8>>2]=c[o+8>>2],c[j+12>>2]=c[o+12>>2],(yV(i,j,a,f,p,q,r)|0)!=0):0){c[i>>2]=c[d>>2];c[i+4>>2]=c[d+4>>2];c[i+8>>2]=c[d+8>>2];c[i+12>>2]=c[d+12>>2];c[j>>2]=c[o>>2];c[j+4>>2]=c[o+4>>2];c[j+8>>2]=c[o+8>>2];c[j+12>>2]=c[o+12>>2];e=+wV(i,j)}else e=0.0;h[n+(b<<3)>>3]=e;b=b+1|0}h[n+(p<<3)>>3]=0.0;h[n+(p+1<<3)>>3]=0.0;l=s;return n|0}function BV(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;m=l;l=l+32|0;f=m+8|0;e=m;h=m+24|0;i=a+8|0;j=a+12|0;k=h+4|0;d=0;while(1){if((d|0)>=(c[a>>2]|0)){d=-1111;break}o=c[j>>2]|0;n=c[o+(d<<2)>>2]|0;c[h>>2]=(c[i>>2]|0)+(n<<4);g=d+1|0;c[k>>2]=(c[o+(g<<2)>>2]|0)-n;c[e>>2]=c[h>>2];c[e+4>>2]=c[h+4>>2];c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];if(!(wU(e,f)|0))d=g;else break}l=m;return d|0}function CV(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=l;l=l+64|0;n=t+48|0;m=t+32|0;p=t+16|0;o=t;r=c[f+4>>2]|0;s=c[f+8>>2]|0;q=c[f+16>>2]|0;g=(e|0)<0;do if((b|0)<0)if(g){g=0;i=0;f=0;h=0}else{b=c[f+12>>2]|0;f=0;h=0;i=e;j=b;b=b+(e<<2)|0;k=9}else{if(g){k=c[f+12>>2]|0;f=0;h=0;i=b;j=k;b=k+(b<<2)|0;k=9;break}g=c[f+12>>2]|0;if((b|0)>(e|0)){f=c[g+(e+1<<2)>>2]|0;h=c[g+(e<<2)>>2]|0;i=b;j=g;b=g+(b<<2)|0;k=9;break}else{f=c[g+(b+1<<2)>>2]|0;h=c[g+(b<<2)>>2]|0;i=e;j=g;b=g+(e<<2)|0;k=9;break}}while(0);if((k|0)==9){g=c[j+(i+1<<2)>>2]|0;i=c[b>>2]|0}b=0;while(1){if((b|0)>=(h|0)){k=13;break}j=s+(b<<4)|0;e=s+(c[q+(b<<2)>>2]<<4)|0;c[o>>2]=c[a>>2];c[o+4>>2]=c[a+4>>2];c[o+8>>2]=c[a+8>>2];c[o+12>>2]=c[a+12>>2];c[p>>2]=c[d>>2];c[p+4>>2]=c[d+4>>2];c[p+8>>2]=c[d+8>>2];c[p+12>>2]=c[d+12>>2];c[m>>2]=c[j>>2];c[m+4>>2]=c[j+4>>2];c[m+8>>2]=c[j+8>>2];c[m+12>>2]=c[j+12>>2];c[n>>2]=c[e>>2];c[n+4>>2]=c[e+4>>2];c[n+8>>2]=c[e+8>>2];c[n+12>>2]=c[e+12>>2];if(!(rV(o,p,m,n)|0))b=b+1|0;else{g=0;break}}a:do if((k|0)==13){while(1){if((f|0)>=(i|0))break;e=s+(f<<4)|0;k=s+(c[q+(f<<2)>>2]<<4)|0;c[o>>2]=c[a>>2];c[o+4>>2]=c[a+4>>2];c[o+8>>2]=c[a+8>>2];c[o+12>>2]=c[a+12>>2];c[p>>2]=c[d>>2];c[p+4>>2]=c[d+4>>2];c[p+8>>2]=c[d+8>>2];c[p+12>>2]=c[d+12>>2];c[m>>2]=c[e>>2];c[m+4>>2]=c[e+4>>2];c[m+8>>2]=c[e+8>>2];c[m+12>>2]=c[e+12>>2];c[n>>2]=c[k>>2];c[n+4>>2]=c[k+4>>2];c[n+8>>2]=c[k+8>>2];c[n+12>>2]=c[k+12>>2];if(!(rV(o,p,m,n)|0)){f=f+1|0;k=13}else{g=0;break a}}while(1){if((g|0)>=(r|0)){g=1;break a}e=s+(g<<4)|0;k=s+(c[q+(g<<2)>>2]<<4)|0;c[o>>2]=c[a>>2];c[o+4>>2]=c[a+4>>2];c[o+8>>2]=c[a+8>>2];c[o+12>>2]=c[a+12>>2];c[p>>2]=c[d>>2];c[p+4>>2]=c[d+4>>2];c[p+8>>2]=c[d+8>>2];c[p+12>>2]=c[d+12>>2];c[m>>2]=c[e>>2];c[m+4>>2]=c[e+4>>2];c[m+8>>2]=c[e+8>>2];c[m+12>>2]=c[e+12>>2];c[n>>2]=c[k>>2];c[n+4>>2]=c[k+4>>2];c[n+8>>2]=c[k+8>>2];c[n+12>>2]=c[k+12>>2];if(!(rV(o,p,m,n)|0))g=g+1|0;else{g=0;break}}}while(0);l=t;return g|0}function DV(a){a=a|0;return EV(a,0,0)|0}function EV(a,b,c){a=a|0;b=b|0;c=c|0;return FV(a,b,c,0)|0}function FV(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;if(!d){g=C_(496)|0;if(!g)g=0;else{c[g+12>>2]=35;c[g+16>>2]=105;c[g+20>>2]=103;d=35;h=6}}else{g=kb[c[d>>2]&63](496)|0;if(!g)g=0;else{h=c[d>>2]|0;c[g+12>>2]=h;c[g+16>>2]=c[d+4>>2];c[g+20>>2]=c[d+8>>2];d=h;h=6}}do if((h|0)==6){c[g+8>>2]=0;c[g+32>>2]=0;c[g+376>>2]=16;j=g+12|0;i=kb[d&63](256)|0;d=g+388|0;c[d>>2]=i;if(!i){tb[c[g+20>>2]&127](g);g=0;break}h=kb[c[j>>2]&63](1024)|0;i=g+44|0;c[i>>2]=h;if(!h){e=g+20|0;tb[c[e>>2]&127](c[d>>2]|0);tb[c[e>>2]&127](g);g=0;break}c[g+48>>2]=h+1024;if(!f){f=GV(j)|0;c[g+352>>2]=f;if(!f){e=g+20|0;tb[c[e>>2]&127](c[i>>2]|0);tb[c[e>>2]&127](c[d>>2]|0);tb[c[e>>2]&127](g);g=0;break}}else c[g+352>>2]=f;c[g+372>>2]=0;c[g+364>>2]=0;c[g+300>>2]=0;c[g+464>>2]=0;c[g+460>>2]=0;c[g+124>>2]=0;c[g+244>>2]=0;d=g+468|0;a[d>>0]=33;h=g+232|0;a[h>>0]=0;a[g+233>>0]=0;c[g+392>>2]=0;c[g+396>>2]=0;a[g+400>>0]=0;f=g+228|0;c[f>>2]=0;HV(g+412|0,j);HV(g+436|0,j);IV(g,b);if(b|0?(c[f>>2]|0)==0:0){JV(g);g=0;break}if(!e){c[g+224>>2]=TX()|0;break}else{a[h>>0]=1;c[g+224>>2]=xZ()|0;a[d>>0]=a[e>>0]|0;break}}while(0);return g|0}function GV(b){b=b|0;var d=0;d=kb[c[b>>2]&63](188)|0;if(d|0){HV(d+80|0,b);HV(d+104|0,b);QW(d,b);QW(d+20|0,b);QW(d+40|0,b);QW(d+60|0,b);a[d+131>>0]=0;QW(d+132|0,b);c[d+152>>2]=0;c[d+156>>2]=0;a[d+160>>0]=0;b=d+164|0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;c[b+16>>2]=0;c[b+20>>2]=0;a[d+128>>0]=1;a[d+129>>0]=0;a[d+130>>0]=0}return d|0}function HV(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;c[a+12>>2]=0;c[a+16>>2]=0;c[a+20>>2]=b;return}function IV(d,e){d=d|0;e=e|0;var f=0,g=0,h=0;c[d+276>>2]=56;EZ(d+252|0);if(e|0)c[d+228>>2]=RV(e,d+12|0)|0;c[d+356>>2]=0;HY(d+148|0,d+144|0,0)|0;c[d>>2]=0;c[d+4>>2]=0;e=d+116|0;g=d+52|0;h=g+64|0;do{c[g>>2]=0;g=g+4|0}while((g|0)<(h|0));c[e>>2]=d;c[d+120>>2]=0;e=d+128|0;c[e>>2]=0;c[e+4>>2]=0;c[e+8>>2]=0;c[e+12>>2]=0;e=c[d+8>>2]|0;c[d+24>>2]=e;c[d+28>>2]=e;c[d+36>>2]=0;c[d+40>>2]=0;e=d+312|0;g=d+404|0;c[g>>2]=0;c[g+4>>2]=0;g=d+280|0;f=d+304|0;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;c[g+12>>2]=0;c[g+16>>2]=0;g=e;h=g+36|0;do{c[g>>2]=0;g=g+4|0}while((g|0)<(h|0));b[e+36>>1]=0;a[f>>0]=1;c[d+308>>2]=0;c[d+360>>2]=0;c[d+368>>2]=0;c[d+380>>2]=0;c[d+236>>2]=0;c[d+248>>2]=0;c[d+240>>2]=0;c[d+472>>2]=0;c[d+476>>2]=0;a[d+484>>0]=0;a[d+485>>0]=0;c[d+488>>2]=0;c[d+492>>2]=0;return}function JV(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;if(b|0){e=b+364|0;g=b+20|0;d=c[b+360>>2]|0;while(1){if(!d){d=c[e>>2]|0;if(!d)break;c[e>>2]=0}h=c[d>>2]|0;tb[c[g>>2]&127](c[d+36>>2]|0);KV(c[d+44>>2]|0,b);tb[c[g>>2]&127](d);d=h}e=b+300|0;d=c[b+296>>2]|0;while(1){if(!d){d=c[e>>2]|0;if(!d)break;c[e>>2]=0}h=c[d+8>>2]|0;tb[c[g>>2]&127](d);d=h}KV(c[b+372>>2]|0,b);KV(c[b+368>>2]|0,b);LV(b+412|0);LV(b+436|0);d=b+12|0;tb[c[g>>2]&127](c[b+228>>2]|0);if((a[b+484>>0]|0)==0?(f=c[b+352>>2]|0,f|0):0)MV(f,(c[b+472>>2]|0)==0&1,d);tb[c[g>>2]&127](c[b+388>>2]|0);tb[c[g>>2]&127](c[b+460>>2]|0);tb[c[g>>2]&127](c[b+8>>2]|0);tb[c[g>>2]&127](c[b+44>>2]|0);tb[c[g>>2]&127](c[b+392>>2]|0);tb[c[g>>2]&127](c[b+236>>2]|0);d=c[b+248>>2]|0;if(d|0)tb[d&127](c[b+240>>2]|0);tb[c[g>>2]&127](b)}return}function KV(a,b){a=a|0;b=b|0;var d=0;b=b+20|0;while(1){if(!a)break;d=c[a+4>>2]|0;tb[c[b>>2]&127](c[a+16>>2]|0);tb[c[b>>2]&127](a);a=d}return}function LV(a){a=a|0;var b=0,d=0,e=0;d=a+20|0;b=c[a>>2]|0;while(1){if(!b)break;e=c[b>>2]|0;tb[c[(c[d>>2]|0)+8>>2]&127](b);b=e}b=c[a+4>>2]|0;while(1){if(!b)break;e=c[b>>2]|0;tb[c[(c[d>>2]|0)+8>>2]&127](b);b=e}return}function MV(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=l;l=l+16|0;f=h;g=a+20|0;NV(f,g);d=d+8|0;while(1){e=OV(f)|0;if(!e)break;if(!(c[e+16>>2]|0))continue;tb[c[d>>2]&127](c[e+20>>2]|0)}PV(a);PV(a+132|0);PV(g);PV(a+40|0);PV(a+60|0);LV(a+80|0);LV(a+104|0);if(b<<24>>24){tb[c[d>>2]&127](c[a+184>>2]|0);tb[c[d>>2]&127](c[a+164>>2]|0)}tb[c[d>>2]&127](a);l=h;return}function NV(a,b){a=a|0;b=b|0;var d=0;d=c[b>>2]|0;c[a>>2]=d;c[a+4>>2]=d+(c[b+8>>2]<<2);return}function OV(a){a=a|0;var b=0,d=0,e=0;d=c[a+4>>2]|0;e=c[a>>2]|0;do{if((e|0)==(d|0)){b=0;break}b=e;e=e+4|0;c[a>>2]=e;b=c[b>>2]|0}while(!(b|0));return b|0}function PV(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;d=a+8|0;e=a+16|0;b=0;while(1){f=c[(c[e>>2]|0)+8>>2]|0;g=c[a>>2]|0;if(b>>>0>=(c[d>>2]|0)>>>0)break;tb[f&127](c[g+(b<<2)>>2]|0);b=b+1|0}tb[f&127](g);return}function QV(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=SV(a)|0;if(!f){c[a+276>>2]=57;f=TV(a,b,d,e)|0}return f|0}function RV(b,d){b=b|0;d=d|0;var e=0,f=0;e=0;do{f=e;e=e+1|0}while((a[b+f>>0]|0)!=0);d=kb[c[d>>2]&63](e)|0;if(!d)d=0;else F3(d|0,b|0,e|0)|0;return d|0}function SV(b){b=b|0;var d=0;d=b+228|0;if(!(nb[(a[b+232>>0]<<24>>24?35:34)&63](b+148|0,b+144|0,c[d>>2]|0)|0))b=PW(b,c[d>>2]|0)|0;else b=0;return b|0}function TV(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;g=l;l=l+16|0;h=g;c[h>>2]=d;j=b+144|0;i=c[j>>2]|0;i=ob[c[i>>2]&127](i,d,e,h)|0;f=UV(b,c[j>>2]|0,d,e,i,c[h>>2]|0,f,(a[b+480>>0]|0)==0&1)|0;l=g;return f|0}function UV(b,e,f,g,h,i,j,k){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0;Ga=l;l=l+16|0;Da=Ga;c[Da>>2]=i;r=c[b+352>>2]|0;s=b+144|0;if((c[s>>2]|0)==(e|0)){p=b+284|0;q=b+288|0;na=b+296|0}else{na=b+296|0;q=c[na>>2]|0;p=q;q=q+4|0}t=k<<24>>24!=0;pa=b+252|0;u=b+80|0;v=b+476|0;w=b+84|0;x=b+320|0;y=b+412|0;z=b+316|0;A=b+424|0;B=b+428|0;C=b+324|0;ra=b+4|0;D=b+485|0;E=r+132|0;F=b+312|0;ta=r+129|0;G=r+128|0;H=r+80|0;I=r+92|0;J=r+96|0;K=b+136|0;L=b+88|0;M=b+488|0;va=b+112|0;wa=r+131|0;xa=b+116|0;ya=r+130|0;za=b+108|0;Aa=b+356|0;N=b+340|0;O=b+132|0;P=b+344|0;Q=b+348|0;R=b+328|0;S=b+349|0;T=b+420|0;U=r+120|0;V=r+116|0;W=b+92|0;X=b+472|0;Y=b+336|0;Z=b+332|0;_=b+96|0;$=b+256|0;aa=b+464|0;ba=b+460|0;ca=r+160|0;da=r+184|0;ea=r+180|0;fa=r+164|0;ga=b+128|0;ha=b+12|0;ia=b+16|0;ja=b+268|0;ka=b+120|0;la=r+176|0;ma=r+168|0;o=e;n=f;e=h;a:while(1){c[p>>2]=n;f=c[Da>>2]|0;c[q>>2]=f;i=f;b:do if((e|0)<1){if(t&(e|0)!=0){m=7;break a}switch(e|0){case -1:{i=5;m=280;break a}case 0:{m=9;break a}case -2:{i=6;break a}case -4:{m=10;break a}case -15:{e=15;break b}default:{}}c[Da>>2]=g;e=0-e|0;i=g}while(0);h=pb[c[pa>>2]&127](pa,e,n,i,o)|0;c:do switch(h|0){case 2:{m=58;break a}case -1:{m=184;break a}case 1:{i=VV(b,0,n,c[Da>>2]|0)|0;if(i|0){m=280;break a}i=c[s>>2]|0;break}case 4:{if(!(c[w>>2]|0))i=1;else{m=WV(y,o,n,c[Da>>2]|0)|0;c[z>>2]=m;if(!m){i=1;m=280;break a}c[B>>2]=c[A>>2];c[C>>2]=0;i=0}c[x>>2]=0;m=274;break}case 7:{i=c[w>>2]|0;if(!i)m=275;else{yb[i&15](c[ra>>2]|0,c[z>>2]|0,c[x>>2]|0,c[C>>2]|0,1);c[z>>2]=0;XV(y);i=o}break}case 57:{i=VV(b,1,n,c[Da>>2]|0)|0;if(i|0){m=280;break a}i=c[s>>2]|0;break}case 6:{a[D>>0]=0;m=YV(b,E,75291,36)|0;c[F>>2]=m;if(!m){i=1;m=280;break a}a[ta>>0]=1;if(!(c[w>>2]|0))m=33;else{if(!(ob[c[o+52>>2]&127](o,n,c[Da>>2]|0,p)|0)){i=32;m=280;break a}i=c[o+64>>2]|0;i=WV(y,o,n+i|0,(c[Da>>2]|0)+(0-i)|0)|0;if(!i){i=1;m=280;break a}ZV(i);c[B>>2]=c[A>>2];c[C>>2]=i;i=0;m=34}break}case 14:{m=33;break}case 8:{i=c[z>>2]|0;if(!i)i=1;else{yb[c[w>>2]&15](c[ra>>2]|0,i,c[x>>2]|0,c[C>>2]|0,0);XV(y);i=0}if(!((c[x>>2]|0)==0?!(a[D>>0]|0):0)){f=a[ta>>0]|0;a[ta>>0]=1;do if(c[M>>2]|0?c[va>>2]|0:0){h=YV(b,E,75291,36)|0;if(!h){i=1;m=280;break a}if(!(a[D>>0]|0))e=h+20|0;else{e=h+20|0;c[e>>2]=c[Aa>>2]}a[wa>>0]=0;if(!(pb[c[va>>2]&127](c[xa>>2]|0,0,c[e>>2]|0,c[h+16>>2]|0,c[h+24>>2]|0)|0)){i=21;m=280;break a}if(!(a[wa>>0]|0)){if(c[x>>2]|0)break;a[ta>>0]=f;break}if(((a[ya>>0]|0)==0?(oa=c[za>>2]|0,oa|0):0)?(kb[oa&63](c[ra>>2]|0)|0)==0:0){i=22;m=280;break a}}while(0);a[D>>0]=0}e=c[L>>2]|0;if(!e)m=274;else{tb[e&127](c[ra>>2]|0);i=o}break}case 34:{m=$V(b,o,n,c[Da>>2]|0)|0;c[N>>2]=m;if(!m){i=1;m=280;break a}else m=80;break}case 22:{m=aW(b,o,n,c[Da>>2]|0)|0;c[P>>2]=m;if(!m){i=1;m=280;break a}a[Q>>0]=0;c[R>>2]=0;a[S>>0]=0;m=80;break}case 23:{a[Q>>0]=1;c[R>>2]=139106;m=80;break}case 24:{a[S>>0]=1;c[R>>2]=139112;m=80;break}case 25:{c[R>>2]=139115;m=80;break}case 26:{c[R>>2]=139121;m=80;break}case 27:{c[R>>2]=139128;m=80;break}case 28:{c[R>>2]=139135;m=80;break}case 29:{c[R>>2]=139144;m=80;break}case 30:{c[R>>2]=139152;m=80;break}case 32:case 31:{if((a[G>>0]|0)!=0?(c[O>>2]|0)!=0:0){if(!(bW(y,(c[R>>2]|0)==0?((h|0)==32?139161:139171):139173)|0)){i=1;m=280;break a}if(!(cW(y,o,n,c[Da>>2]|0)|0)){i=1;m=280;break a}c[R>>2]=c[B>>2];i=o}else m=275;break}case 36:case 35:{if(a[G>>0]|0){if(!(dW(c[N>>2]|0,c[P>>2]|0,a[Q>>0]|0,a[S>>0]|0,0,b)|0)){i=1;m=280;break a}if((c[O>>2]|0)!=0?(qa=c[R>>2]|0,(qa|0)!=0):0){switch(a[qa>>0]|0){case 40:{m=93;break}case 78:{if((a[qa+1>>0]|0)==79)m=93;break}default:{}}if((m|0)==93){m=0;i=c[A>>2]|0;if((i|0)==(c[T>>2]|0)){if(!((eW(y)|0)<<24>>24)){i=1;m=280;break a}i=c[A>>2]|0}c[A>>2]=i+1;a[i>>0]=41;i=c[A>>2]|0;if((i|0)==(c[T>>2]|0)){if(!((eW(y)|0)<<24>>24)){i=1;m=280;break a}i=c[A>>2]|0}c[A>>2]=i+1;a[i>>0]=0;c[R>>2]=c[B>>2];c[B>>2]=c[A>>2]}c[q>>2]=n;zb[c[O>>2]&15](c[ra>>2]|0,c[c[N>>2]>>2]|0,c[c[P>>2]>>2]|0,c[R>>2]|0,0,(h|0)==36&1);XV(y);i=o}else m=275}else m=275;break}case 38:case 37:{if(a[G>>0]|0){i=c[o+64>>2]|0;i=fW(b,o,a[Q>>0]|0,n+i|0,(c[Da>>2]|0)+(0-i)|0,H)|0;if(i|0){m=280;break a}e=c[J>>2]|0;c[J>>2]=c[I>>2];if(!(dW(c[N>>2]|0,c[P>>2]|0,a[Q>>0]|0,0,e,b)|0)){i=1;m=280;break a}if((c[O>>2]|0)!=0?(sa=c[R>>2]|0,(sa|0)!=0):0){switch(a[sa>>0]|0){case 40:{m=108;break}case 78:{if((a[sa+1>>0]|0)==79)m=108;break}default:{}}if((m|0)==108){m=0;i=c[A>>2]|0;if((i|0)==(c[T>>2]|0)){if(!((eW(y)|0)<<24>>24)){i=1;m=280;break a}i=c[A>>2]|0}c[A>>2]=i+1;a[i>>0]=41;i=c[A>>2]|0;if((i|0)==(c[T>>2]|0)){if(!((eW(y)|0)<<24>>24)){i=1;m=280;break a}i=c[A>>2]|0}c[A>>2]=i+1;a[i>>0]=0;c[R>>2]=c[B>>2];c[B>>2]=c[A>>2]}c[q>>2]=n;zb[c[O>>2]&15](c[ra>>2]|0,c[c[N>>2]>>2]|0,c[c[P>>2]>>2]|0,c[R>>2]|0,e,(h|0)==38&1);XV(y);i=o}else m=275}else m=275;break}case 12:{if(a[G>>0]|0){i=c[o+64>>2]|0;i=gW(b,o,n+i|0,(c[Da>>2]|0)+(0-i)|0)|0;e=c[F>>2]|0;f=c[U>>2]|0;if(e){c[e+4>>2]=f;c[(c[F>>2]|0)+8>>2]=(c[V>>2]|0)-(c[U>>2]|0);c[U>>2]=c[V>>2];if(!(c[K>>2]|0))e=1;else{c[q>>2]=n;e=c[F>>2]|0;Ab[c[K>>2]&0](c[ra>>2]|0,c[e>>2]|0,d[e+33>>0]|0,c[e+4>>2]|0,c[e+8>>2]|0,c[Aa>>2]|0,0,0,0);e=0}}else{c[V>>2]=f;e=1}if(!i){i=e;m=274}else{m=280;break a}}else m=275;break}case 5:{a[D>>0]=0;a[ta>>0]=1;if(!(c[w>>2]|0)){c[x>>2]=75291;i=1}else{m=c[o+64>>2]|0;m=WV(y,o,n+m|0,(c[Da>>2]|0)+(0-m)|0)|0;c[x>>2]=m;if(!m){i=1;m=280;break a}c[B>>2]=c[A>>2];i=0}if((((a[ya>>0]|0)==0?(c[M>>2]|0)==0:0)?(ua=c[za>>2]|0,ua|0):0)?(kb[ua&63](c[ra>>2]|0)|0)==0:0){i=22;m=280;break a}if(!(c[F>>2]|0)){e=YV(b,E,75291,36)|0;c[F>>2]=e;if(!e){i=1;m=280;break a}c[e+24>>2]=0;m=133}else m=133;break}case 13:{i=1;m=133;break}case 15:{if(((a[G>>0]|0)!=0?(c[F>>2]|0)!=0:0)?(c[K>>2]|0)!=0:0){c[q>>2]=n;i=c[F>>2]|0;Ab[c[K>>2]&0](c[ra>>2]|0,c[i>>2]|0,d[i+33>>0]|0,0,0,c[i+20>>2]|0,c[i+16>>2]|0,c[i+24>>2]|0,0);i=o}else m=275;break}case 16:{if((a[G>>0]|0)!=0?(c[F>>2]|0)!=0:0){h=WV(H,o,n,c[Da>>2]|0)|0;c[(c[F>>2]|0)+28>>2]=h;if(!(c[(c[F>>2]|0)+28>>2]|0)){i=1;m=280;break a}c[J>>2]=c[I>>2];if(c[W>>2]|0){c[q>>2]=n;i=c[F>>2]|0;zb[c[W>>2]&15](c[ra>>2]|0,c[i>>2]|0,c[i+20>>2]|0,c[i+16>>2]|0,c[i+24>>2]|0,c[i+28>>2]|0);i=o;break c}if(c[K>>2]|0){c[q>>2]=n;i=c[F>>2]|0;Ab[c[K>>2]&0](c[ra>>2]|0,c[i>>2]|0,0,0,0,c[i+20>>2]|0,c[i+16>>2]|0,c[i+24>>2]|0,c[i+28>>2]|0);i=o}else m=275}else m=275;break}case 9:{if(nb[c[o+44>>2]&63](o,n,c[Da>>2]|0)|0){c[F>>2]=0;m=275;break c}if(!(a[G>>0]|0)){c[I>>2]=c[J>>2];c[F>>2]=0;m=275;break c}i=WV(H,o,n,c[Da>>2]|0)|0;if(!i){i=1;m=280;break a}e=YV(b,r,i,36)|0;c[F>>2]=e;if(!e){i=1;m=280;break a}if((c[e>>2]|0)!=(i|0)){c[I>>2]=c[J>>2];c[F>>2]=0;m=275;break c}c[J>>2]=c[I>>2];c[(c[F>>2]|0)+24>>2]=0;a[(c[F>>2]|0)+33>>0]=0;if(!(c[X>>2]|0))i=(c[na>>2]|0)!=0;else i=1;a[(c[F>>2]|0)+34>>0]=(i^1)&1;if(!(c[K>>2]|0))m=275;else i=o;break}case 10:{if(!(a[G>>0]|0)){c[I>>2]=c[J>>2];c[F>>2]=0;m=275;break c}i=WV(H,o,n,c[Da>>2]|0)|0;if(!i){i=1;m=280;break a}e=YV(b,E,i,36)|0;c[F>>2]=e;if(!e){i=1;m=280;break a}if((c[e>>2]|0)!=(i|0)){c[I>>2]=c[J>>2];c[F>>2]=0;m=275;break c}c[J>>2]=c[I>>2];c[(c[F>>2]|0)+24>>2]=0;a[(c[F>>2]|0)+33>>0]=1;if(!(c[X>>2]|0))i=(c[na>>2]|0)!=0;else i=1;a[(c[F>>2]|0)+34>>0]=(i^1)&1;if(!(c[K>>2]|0))m=275;else i=o;break}case 18:{c[Y>>2]=0;c[Z>>2]=0;if(!(c[_>>2]|0))m=275;else{n=WV(y,o,n,c[Da>>2]|0)|0;c[Z>>2]=n;if(!n){i=1;m=280;break a}c[B>>2]=c[A>>2];i=o}break}case 21:{if(!(ob[c[o+52>>2]&127](o,n,c[Da>>2]|0,p)|0)){i=32;m=280;break a}if(!(c[Z>>2]|0))m=275;else{i=c[o+64>>2]|0;i=WV(y,o,n+i|0,(c[Da>>2]|0)+(0-i)|0)|0;if(!i){i=1;m=280;break a}ZV(i);c[Y>>2]=i;c[B>>2]=c[A>>2];i=o}break}case 19:{if((c[Z>>2]|0)!=0?(c[_>>2]|0)!=0:0){i=c[o+64>>2]|0;i=WV(y,o,n+i|0,(c[Da>>2]|0)+(0-i)|0)|0;if(!i){i=1;m=280;break a}c[q>>2]=n;yb[c[_>>2]&15](c[ra>>2]|0,c[Z>>2]|0,c[Aa>>2]|0,i,c[Y>>2]|0);i=0}else i=1;XV(y);m=274;break}case 20:{if((c[Y>>2]|0)!=0?(c[_>>2]|0)!=0:0){c[q>>2]=n;yb[c[_>>2]&15](c[ra>>2]|0,c[Z>>2]|0,c[Aa>>2]|0,0,c[Y>>2]|0);i=0}else i=1;XV(y);m=274;break}case 58:{if(c[u>>2]|0)hW(b,o,n,c[Da>>2]|0);i=iW(b,o,Da,g,j,k)|0;if(i|0){m=280;break a}if(!(c[Da>>2]|0)){m=189;break a}else i=o;break}case 44:{i=c[aa>>2]|0;do if((c[$>>2]|0)>>>0>=i>>>0){if(!i){h=c[ha>>2]|0;c[aa>>2]=32;h=kb[h&63](32)|0;c[ba>>2]=h;if(!h){m=198;break a}else break}f=c[ia>>2]|0;h=c[ba>>2]|0;i=i<<1;c[aa>>2]=i;i=lb[f&127](h,i)|0;if(!i){m=193;break a}c[ba>>2]=i;i=c[da>>2]|0;if(i|0){i=lb[c[ia>>2]&127](i,c[aa>>2]<<2)|0;if(!i){i=1;m=280;break a}c[da>>2]=i}}while(0);a[(c[ba>>2]|0)+(c[$>>2]|0)>>0]=0;if(a[ca>>0]|0){i=kW(b)|0;if((i|0)<0){i=1;m=280;break a}c[(c[da>>2]|0)+(c[ea>>2]<<2)>>2]=i;c[ea>>2]=(c[ea>>2]|0)+1;c[(c[fa>>2]|0)+(i*28|0)>>2]=6;if(c[ga>>2]|0)i=o;else m=275}else m=275;break}case 50:{i=(c[ba>>2]|0)+(c[$>>2]|0)|0;if((a[i>>0]|0)==124){i=2;m=280;break a}a[i>>0]=44;if((a[ca>>0]|0)!=0?(c[ga>>2]|0)!=0:0)i=o;else m=275;break}case 49:{f=c[ba>>2]|0;e=c[$>>2]|0;i=a[f+e>>0]|0;if(i<<24>>24==44){i=2;m=280;break a}if(i<<24>>24==0&(a[ca>>0]|0)!=0?(Ba=(c[fa>>2]|0)+((c[(c[da>>2]|0)+((c[ea>>2]|0)+-1<<2)>>2]|0)*28|0)|0,(c[Ba>>2]|0)!=3):0){c[Ba>>2]=5;i=(c[ga>>2]|0)==0&1;f=c[ba>>2]|0;e=c[$>>2]|0}else i=1;a[f+e>>0]=124;m=274;break}case 59:case 60:{a[ta>>0]=1;if(c[M>>2]|0){e=c[o+64>>2]|0;e=WV(H,o,n+e|0,(c[Da>>2]|0)+(0-e)|0)|0;if(!e){i=1;m=280;break a}f=YV(b,E,e,0)|0;c[I>>2]=c[J>>2];do if(c[ja>>2]|0){if(!(a[ya>>0]|0)){if(a[ta>>0]|0){m=219;break}}else if(c[na>>2]|0){m=219;break}if(!f){i=11;m=280;break a}if(!(a[f+34>>0]|0)){i=24;m=280;break a}}else m=219;while(0);if((m|0)==219?(m=0,(f|0)==0):0){a[G>>0]=a[ya>>0]|0;if((h|0)!=60){m=275;break c}i=c[ka>>2]|0;if(!i){m=275;break c}vb[i&127](c[ra>>2]|0,e,1);i=o;break c}i=f+32|0;if(a[i>>0]|0){i=12;m=280;break a}if(c[f+4>>2]|0){i=lW(b,f,(h|0)==60&1)|0;e=(i|0)==0;if(e){i=(e^1)&1;m=274;break c}else{m=280;break a}}if(!(c[va>>2]|0)){a[G>>0]=a[ya>>0]|0;m=275;break c}a[wa>>0]=0;a[i>>0]=1;h=(pb[c[va>>2]&127](c[xa>>2]|0,0,c[f+20>>2]|0,c[f+16>>2]|0,c[f+24>>2]|0)|0)==0;a[i>>0]=0;if(h){i=21;m=280;break a}e=a[ya>>0]|0;if(!(a[wa>>0]|0)){a[G>>0]=e;i=o;break c}else i=0}else{e=a[ya>>0]|0;a[G>>0]=e;i=1}if((e<<24>>24==0?(Ca=c[za>>2]|0,(Ca|0)!=0):0)?(kb[Ca&63](c[ra>>2]|0)|0)==0:0){i=22;m=280;break a}else m=274;break}case 40:{if(!(c[ga>>2]|0))m=275;else{n=$V(b,o,n,c[Da>>2]|0)|0;c[N>>2]=n;if(!n){i=1;m=280;break a}c[ea>>2]=0;c[la>>2]=0;a[ca>>0]=1;i=o}break}case 42:case 41:{if(!(a[ca>>0]|0))m=275;else{if(!(c[ga>>2]|0))i=1;else{i=kb[c[ha>>2]&63](20)|0;if(!i){i=1;m=280;break a}m=i+4|0;c[m>>2]=0;c[m+4>>2]=0;c[m+8>>2]=0;c[m+12>>2]=0;c[i>>2]=(h|0)==41?2:1;c[q>>2]=n;vb[c[ga>>2]&127](c[ra>>2]|0,c[c[N>>2]>>2]|0,i);i=0}a[ca>>0]=0;m=274}break}case 43:{if((a[ca>>0]|0)!=0?(c[(c[fa>>2]|0)+((c[(c[da>>2]|0)+((c[ea>>2]|0)+-1<<2)>>2]|0)*28|0)>>2]=3,(c[ga>>2]|0)!=0):0)i=o;else m=275;break}case 51:{e=0;m=247;break}case 53:{e=1;m=247;break}case 52:{e=2;m=247;break}case 54:{e=3;m=247;break}case 45:{f=0;m=258;break}case 47:{f=1;m=258;break}case 46:{f=2;m=258;break}case 48:{f=3;m=258;break}case 55:{if(!(nW(b,o,n,c[Da>>2]|0)|0)){i=1;m=280;break a}else i=o;break}case 56:{if(!(oW(b,o,n,c[Da>>2]|0)|0)){i=1;m=280;break a}else i=o;break}case 0:{if((e|0)==14)i=o;else m=275;break}case 3:{if(!(c[w>>2]|0))m=275;else i=o;break}case 11:{if((a[G>>0]|0)!=0?(c[K>>2]|0)!=0:0)i=o;else m=275;break}case 17:{if(!(c[_>>2]|0))m=275;else i=o;break}case 33:{if((a[G>>0]|0)!=0?(c[O>>2]|0)!=0:0)i=o;else m=275;break}case 39:{if(!(c[ga>>2]|0))m=275;else i=o;break}default:m=275}while(0);if((m|0)==33)if(!(ob[c[o+52>>2]&127](o,n,c[Da>>2]|0,p)|0)){i=32;m=280;break}else{i=1;m=34}else if((m|0)==80){m=0;if((a[G>>0]|0)!=0?(c[O>>2]|0)!=0:0)i=o;else m=275}else if((m|0)==133){m=0;if((a[G>>0]|0)!=0?(c[F>>2]|0)!=0:0){e=c[o+64>>2]|0;e=WV(H,o,n+e|0,(c[Da>>2]|0)+(0-e)|0)|0;c[(c[F>>2]|0)+16>>2]=e;e=c[F>>2]|0;if(!(c[e+16>>2]|0)){i=1;m=280;break}c[e+20>>2]=c[Aa>>2];c[J>>2]=c[I>>2];if((h|0)==13&(c[K>>2]|0)!=0)i=o;else m=274}else m=274}else if((m|0)==247){m=0;if(a[ca>>0]|0){i=c[Da>>2]|0;if(e)i=i+(0-(c[o+64>>2]|0))|0;f=kW(b)|0;if((f|0)<0){i=1;m=280;break}c[(c[fa>>2]|0)+(f*28|0)>>2]=4;c[(c[fa>>2]|0)+(f*28|0)+4>>2]=e;i=$V(b,o,n,i)|0;if(!i){i=1;m=280;break}e=c[i>>2]|0;c[(c[fa>>2]|0)+(f*28|0)+8>>2]=e;i=0;do{h=i;i=i+1|0}while((a[e+h>>0]|0)!=0);c[ma>>2]=(c[ma>>2]|0)+i;if(c[ga>>2]|0)i=o;else m=275}else m=275}else if((m|0)==258)if(a[ca>>0]|0){e=(c[ga>>2]|0)==0;i=e&1;m=(c[ea>>2]|0)+-1|0;c[ea>>2]=m;c[(c[fa>>2]|0)+((c[(c[da>>2]|0)+(m<<2)>>2]|0)*28|0)+4>>2]=f;if(!(c[ea>>2]|0)){if(!e){e=mW(b)|0;if(!e){i=1;m=280;break}c[q>>2]=n;vb[c[ga>>2]&127](c[ra>>2]|0,c[c[N>>2]>>2]|0,e)}a[ca>>0]=0;c[ma>>2]=0;m=274}else m=274}else m=275;if((m|0)==34){m=0;if((a[G>>0]|0)!=0?(c[F>>2]|0)!=0:0){e=c[o+64>>2]|0;e=WV(H,o,n+e|0,(c[Da>>2]|0)+(0-e)|0)|0;if(!e){i=1;m=280;break}ZV(e);c[(c[F>>2]|0)+24>>2]=e;c[J>>2]=c[I>>2];if((h|0)==14&(c[K>>2]|0)!=0)i=o;else m=274}else m=274}if((m|0)==274){m=0;if(!(i<<24>>24))i=o;else m=275}if((m|0)==275){m=0;if(!(c[u>>2]|0))i=o;else{hW(b,o,n,c[Da>>2]|0);i=o}}switch(c[v>>2]|0){case 3:{m=278;break a}case 2:{i=35;m=280;break a}default:{}}e=c[Da>>2]|0;o=i;n=e;e=ob[c[i>>2]&127](i,e,g,Da)|0}d:switch(m|0){case 7:{c[j>>2]=n;i=0;break}case 9:{c[p>>2]=f;i=4;break}case 10:{i=(o|0)==(c[s>>2]|0);if(!i?(a[(c[na>>2]|0)+20>>0]|0)==0:0){c[j>>2]=n;i=0;break}if((a[b+484>>0]|0)!=0|i^1)if((pb[c[pa>>2]&127](pa,-4,g,g,o)|0)==-1)i=29;else{c[j>>2]=n;i=0}else i=3;break}case 58:{do if((a[D>>0]|0?(Ea=a[ta>>0]|0,a[ta>>0]=1,c[M>>2]|0):0)?c[va>>2]|0:0){i=YV(b,E,75291,36)|0;if(!i){i=1;break d}Da=i+20|0;c[Da>>2]=c[Aa>>2];a[wa>>0]=0;if(!(pb[c[va>>2]&127](c[xa>>2]|0,0,c[Da>>2]|0,c[i+16>>2]|0,c[i+24>>2]|0)|0)){i=21;break d}if(!(a[wa>>0]|0)){a[ta>>0]=Ea;break}if(((a[ya>>0]|0)==0?(Fa=c[za>>2]|0,Fa|0):0)?(kb[Fa&63](c[ra>>2]|0)|0)==0:0){i=22;break d}}while(0);c[b+276>>2]=58;i=_V(b,n,g,j)|0;break}case 184:{i=(e|0)==28?10:(e|0)==12?17:2;break}case 189:{c[b+276>>2]=59;i=0;break}case 193:{c[aa>>2]=(c[aa>>2]|0)>>>1;i=1;break}case 198:{c[aa>>2]=0;i=1;break}case 278:{c[j>>2]=c[Da>>2];i=0;break}case 280:break}l=Ga;return i|0}function VV(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;q=l;l=l+32|0;p=q+16|0;m=q+12|0;i=q+8|0;j=q+4|0;k=q;c[p>>2]=0;c[m>>2]=0;c[i>>2]=0;c[k>>2]=-1;n=b+144|0;o=b+284|0;g=(d|0)!=0;a:do if(rb[(a[b+232>>0]<<24>>24?2:1)&3](d,c[n>>2]|0,e,f,o,i,j,p,m,k)|0){if((c[k>>2]|0)==1&(g^1)?(a[(c[b+352>>2]|0)+130>>0]=1,h=b+488|0,(c[h>>2]|0)==1):0)c[h>>2]=0;h=b+140|0;if(!(c[h>>2]|0))if(!(c[b+80>>2]|0)){e=0;d=0}else{hW(b,c[n>>2]|0,e,f);e=0;d=0}else{d=c[p>>2]|0;if(!d)d=0;else{f=c[n>>2]|0;d=WV(b+436|0,f,d,d+(lb[c[f+28>>2]&127](f,d)|0)|0)|0;if(!d){d=1;break}c[b+452>>2]=c[b+448>>2]}g=c[i>>2]|0;if(g){i=c[n>>2]|0;g=WV(b+436|0,i,g,(c[j>>2]|0)+(0-(c[i+64>>2]|0))|0)|0;if(!g){d=1;break}}else g=0;xb[c[h>>2]&31](c[b+4>>2]|0,g,d,c[k>>2]|0);e=g}do if(!(c[b+228>>2]|0)){g=c[m>>2]|0;h=g;if(g|0){k=c[g+64>>2]|0;m=c[n>>2]|0;if((k|0)==(c[m+64>>2]|0)?(k|0)!=2|(g|0)==(m|0):0){c[n>>2]=h;break}c[o>>2]=c[p>>2];d=19;break a}g=c[p>>2]|0;if(g|0){h=b+436|0;if(!d){d=c[n>>2]|0;d=WV(h,d,g,g+(lb[c[d+28>>2]&127](d,g)|0)|0)|0;if(!d){d=1;break a}}d=PW(b,d)|0;XV(h);if((d|0)!=18)break a;c[o>>2]=c[p>>2];d=18;break a}}while(0);if((d|0)!=0|(e|0)!=0){XV(b+436|0);d=0}else d=0}else d=g?31:30;while(0);l=q;return d|0}function WV(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;do if(!(cW(b,d,e,f)|0))d=0;else{e=b+12|0;d=c[e>>2]|0;if((d|0)==(c[b+8>>2]|0)){if(!((eW(b)|0)<<24>>24)){d=0;break}d=c[e>>2]|0}c[e>>2]=d+1;a[d>>0]=0;d=c[b+16>>2]|0}while(0);return d|0}function XV(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;e=a+4|0;b=c[e>>2]|0;a:do if(!b){c[e>>2]=c[a>>2];b=a}else{d=c[a>>2]|0;while(1){if(!d){b=a;break a}g=c[d>>2]|0;c[d>>2]=b;c[e>>2]=d;f=d;d=g;b=f}}while(0);c[b>>2]=0;c[a+16>>2]=0;c[a+12>>2]=0;c[a+8>>2]=0;return}function YV(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;w=e+8|0;a:do if(!(c[w>>2]|0))if(g){a[e+4>>0]=6;c[w>>2]=64;h=e+16|0;i=kb[c[c[h>>2]>>2]&63](256)|0;c[e>>2]=i;if(!i){c[w>>2]=0;h=0;break}else{H3(i|0,0,256)|0;j=NW(b,f)|0;j=(c[w>>2]|0)+-1&j;i=e;o=27;break}}else h=0;else{v=NW(b,f)|0;k=c[w>>2]|0;j=k+-1|0;l=c[e>>2]|0;m=v&0-k;u=e+4|0;n=j>>>2;i=0;j=j&v;while(1){h=c[l+(j<<2)>>2]|0;if(!h)break;if((OW(f,c[h>>2]|0)|0)<<24>>24)break a;if(!(i<<24>>24))h=(m>>>((d[u>>0]|0)+-1|0)&n|1)&255;else h=i;t=h&255;i=h;j=j-t+(j>>>0>>0?k:0)|0}if(g){i=a[u>>0]|0;h=i&255;if(!((c[e+12>>2]|0)>>>(h+-1|0))){h=e+16|0;i=e;o=27;break}q=h+1&255;j=i+1&255;s=1<>2]>>2]&63](i)|0;if(t){H3(t|0,0,i|0)|0;p=0-s|0;n=j+-1|0;o=r>>>2;m=0;while(1){if(m>>>0>=(c[w>>2]|0)>>>0)break;i=c[(c[e>>2]|0)+(m<<2)>>2]|0;if(i|0){i=NW(b,c[i>>2]|0)|0;k=((i&p)>>>n&o|1)&255;i=i&r;j=0;while(1){l=t+(i<<2)|0;if(!(c[l>>2]|0))break;l=j<<24>>24==0?k:j;x=l&255;i=i+(i>>>0>>0?s:0)-x|0;j=l}c[l>>2]=c[(c[e>>2]|0)+(m<<2)>>2]}m=m+1|0}tb[c[(c[h>>2]|0)+8>>2]&127](c[e>>2]|0);c[e>>2]=t;a[u>>0]=q;c[w>>2]=s;k=((v&p)>>>n&o|1)&255;i=r&v;j=0;while(1){if(!(c[t+(i<<2)>>2]|0)){j=i;i=e;o=27;break a}x=j<<24>>24==0?k:j;w=x&255;i=i+(i>>>0>>0?s:0)-w|0;j=x}}else h=0}else h=0}while(0);if((o|0)==27){h=kb[c[c[h>>2]>>2]&63](g)|0;c[(c[i>>2]|0)+(j<<2)>>2]=h;h=c[(c[i>>2]|0)+(j<<2)>>2]|0;if(!h)h=0;else{H3(h|0,0,g|0)|0;c[c[(c[i>>2]|0)+(j<<2)>>2]>>2]=f;h=e+12|0;c[h>>2]=(c[h>>2]|0)+1;h=c[(c[i>>2]|0)+(j<<2)>>2]|0}}return h|0}function ZV(b){b=b|0;var c=0,d=0,e=0;e=b;c=b;while(1){d=a[e>>0]|0;if(!(d<<24>>24))break;switch(d<<24>>24|0){case 10:case 13:case 32:{if((c|0)!=(b|0)){if((a[c+-1>>0]|0)!=32){a[c>>0]=32;c=c+1|0}}else c=b;break}default:{a[c>>0]=d;c=c+1|0}}e=e+1|0}if((c|0)!=(b|0)){b=c+-1|0;b=(a[b>>0]|0)==32?b:c}a[b>>0]=0;return}function _V(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;d=rW(b,0,c[b+144>>2]|0,d,e,f,(a[b+480>>0]|0)==0&1)|0;if((d|0)==0?(AW(b)|0)<<24>>24==0:0)d=1;return d|0}function $V(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;g=c[a+352>>2]|0;b=WV(g+80|0,b,d,e)|0;do if((b|0)!=0?(f=YV(a,g+20|0,b,24)|0,(f|0)!=0):0)if((c[f>>2]|0)==(b|0)){c[g+96>>2]=c[g+92>>2];if(!(CW(a,f)|0)){f=0;break}}else c[g+92>>2]=c[g+96>>2];else f=0;while(0);return f|0}function aW(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;m=c[b+352>>2]|0;k=m+80|0;n=m+92|0;h=c[n>>2]|0;l=m+88|0;if((h|0)==(c[l>>2]|0))if(!((eW(k)|0)<<24>>24))g=0;else{h=c[n>>2]|0;i=4}else i=4;a:do if((i|0)==4){c[n>>2]=h+1;a[h>>0]=0;d=WV(k,d,e,f)|0;if((d|0)!=0?(j=d+1|0,g=YV(b,m+40|0,j,12)|0,(g|0)!=0):0){if((c[g>>2]|0)!=(j|0)){c[n>>2]=c[m+96>>2];break}h=c[n>>2]|0;i=m+96|0;c[i>>2]=h;if(a[b+232>>0]|0){e=a[j>>0]|0;b:do if(e<<24>>24==120)if((((a[d+2>>0]|0)==109?(a[d+3>>0]|0)==108:0)?(a[d+4>>0]|0)==110:0)?(a[d+5>>0]|0)==115:0){switch(a[d+6>>0]|0){case 0:{h=m+152|0;break}case 58:{h=YV(b,m+60|0,d+7|0,8)|0;break}default:{f=0;d=120;break b}}c[g+4>>2]=h;a[g+9>>0]=1;break a}else{f=0;d=120}else{f=0;d=e}while(0);c:while(1){switch(d<<24>>24){case 0:break a;case 58:{e=0;break c}default:{}}d=f+1|0;f=d;d=a[j+d>>0]|0}while(1){d=(h|0)==(c[l>>2]|0);if((e|0)>=(f|0))break;if(d){if(!((eW(k)|0)<<24>>24)){g=0;break a}h=c[n>>2]|0}d=a[j+e>>0]|0;c[n>>2]=h+1;a[h>>0]=d;e=e+1|0;h=c[n>>2]|0}if(d){if(!((eW(k)|0)<<24>>24)){g=0;break}h=c[n>>2]|0}c[n>>2]=h+1;a[h>>0]=0;h=YV(b,m+60|0,c[i>>2]|0,8)|0;c[g+4>>2]=h;if(h){d=c[i>>2]|0;if((c[h>>2]|0)==(d|0)){c[i>>2]=c[n>>2];break}else{c[n>>2]=d;break}}else g=0}}else g=0}while(0);return g|0}function bW(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;g=b+12|0;h=b+8|0;while(1){e=a[d>>0]|0;if(!(e<<24>>24)){i=7;break}f=c[g>>2]|0;if((f|0)==(c[h>>2]|0)){if(!((eW(b)|0)<<24>>24)){d=0;break}f=c[g>>2]|0;e=a[d>>0]|0}c[g>>2]=f+1;a[f>>0]=e;d=d+1|0}if((i|0)==7)d=c[b+16>>2]|0;return d|0}function cW(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;i=l;l=l+16|0;h=i;c[h>>2]=d;g=a+12|0;if((c[g>>2]|0)==0?(eW(a)|0)<<24>>24==0:0)d=0;else f=3;a:do if((f|0)==3){d=b+56|0;f=a+8|0;while(1){if((pb[c[d>>2]&127](b,h,e,g,c[f>>2]|0)|0)>>>0<2)break;if(!((eW(a)|0)<<24>>24)){d=0;break a}}d=c[a+16>>2]|0}while(0);l=i;return d|0}function dW(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0;i=f<<24>>24==0;n=b+12|0;m=c[n>>2]|0;a:do if(!(i&(g|0)==0)){j=b+20|0;f=0;while(1){if((f|0)>=(m|0))break;if((c[(c[j>>2]|0)+(f*12|0)>>2]|0)==(d|0)){f=1;break a}else f=f+1|0}if((!i?(k=b+8|0,(c[k>>2]|0)==0):0)?(a[d+9>>0]|0)==0:0){c[k>>2]=d;l=9}else l=9}else l=9;while(0);b:do if((l|0)==9){j=b+16|0;do if((m|0)==(c[j>>2]|0))if(!m){c[j>>2]=8;f=kb[c[h+12>>2]&63](96)|0;c[b+20>>2]=f;if(f|0)break;c[j>>2]=0;f=0;break b}else{i=b+20|0;f=lb[c[h+16>>2]&127](c[i>>2]|0,m*24|0)|0;if(!f){f=0;break b}c[j>>2]=m<<1;c[i>>2]=f;break}else f=c[b+20>>2]|0;while(0);h=c[n>>2]|0;c[f+(h*12|0)>>2]=d;c[f+(h*12|0)+8>>2]=g;a[f+(h*12|0)+4>>0]=e;if(!(e<<24>>24))a[d+8>>0]=1;c[n>>2]=(c[n>>2]|0)+1;f=1}while(0);return f|0}function eW(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;b=a+4|0;e=c[b>>2]|0;do if(e){f=a+16|0;g=c[f>>2]|0;if(!g){c[a>>2]=e;c[b>>2]=c[e>>2];c[e>>2]=0;l=c[a>>2]|0;b=l+8|0;c[f>>2]=b;c[a+8>>2]=(c[l+4>>2]|0)+(l+8);c[a+12>>2]=b;b=1;break}d=a+8|0;if(((c[d>>2]|0)-g|0)<(c[e+4>>2]|0)){k=c[e>>2]|0;c[e>>2]=c[a>>2];l=c[b>>2]|0;c[a>>2]=l;c[b>>2]=k;b=c[f>>2]|0;F3(l+8|0,b|0,(c[d>>2]|0)-b|0)|0;b=c[a>>2]|0;l=a+12|0;c[l>>2]=(c[l>>2]|0)-(c[f>>2]|0)+(b+8);c[f>>2]=b+8;c[d>>2]=(c[b+4>>2]|0)+(b+8);b=1}else h=6}else h=6;while(0);a:do if((h|0)==6){e=c[a>>2]|0;k=a+16|0;do if(!e){i=k;b=c[k>>2]|0}else{j=c[k>>2]|0;b=j;if((j|0)!=(e+8|0)){i=k;break}f=a+8|0;g=(c[f>>2]|0)-b<<1;h=a+12|0;d=(c[h>>2]|0)-b|0;if((g|0)<0){b=0;break a}b=MW(g)|0;if(!b){b=0;break a}b=lb[c[(c[a+20>>2]|0)+4>>2]&127](e,b)|0;if(!b){b=0;break a}c[a>>2]=b;c[b+4>>2]=g;b=c[a>>2]|0;c[h>>2]=b+8+d;c[k>>2]=b+8;c[f>>2]=b+8+g;b=1;break a}while(0);j=a+8|0;b=(c[j>>2]|0)-b|0;if((b|0)>=0){if((b|0)>=1024){b=b<<1;if((b|0)<0){b=0;break}}else b=1024;d=MW(b)|0;if((d|0)!=0?(l=kb[c[c[a+20>>2]>>2]&63](d)|0,(l|0)!=0):0){c[l+4>>2]=b;c[l>>2]=c[a>>2];c[a>>2]=l;h=a+12|0;a=c[h>>2]|0;e=c[k>>2]|0;d=a;f=e;if((a|0)==(e|0)){g=l+8|0;e=f}else{g=l+8|0;F3(g|0,e|0,d-f|0)|0;e=c[i>>2]|0;d=c[h>>2]|0}c[h>>2]=l+8+(d-e);c[k>>2]=g;c[j>>2]=l+8+b;b=1}else b=0}else b=0}while(0);return b|0}function fW(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0;b=LW(b,d,e,f,g,h)|0;do if(!b){d=h+12|0;b=c[d>>2]|0;if((e<<24>>24==0?(c[h+16>>2]|0)!=(b|0):0)?(i=b+-1|0,(a[i>>0]|0)==32):0){c[d>>2]=i;b=i}if((b|0)==(c[h+8>>2]|0)){if(!((eW(h)|0)<<24>>24)){b=1;break}b=c[d>>2]|0}c[d>>2]=b+1;a[b>>0]=0;b=0}while(0);return b|0}function gW(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;H=l;l=l+16|0;B=H;C=H+4|0;g=c[b+352>>2]|0;D=g+104|0;F=b+272|0;E=c[F>>2]|0;c[F>>2]=1;if((c[D>>2]|0)==0?(eW(D)|0)<<24>>24==0:0)g=1;else{n=d+20|0;o=b+484|0;p=b+144|0;q=b+412|0;r=d+64|0;s=g+132|0;t=b+428|0;u=b+424|0;v=b+224|0;w=b+112|0;m=g+130|0;x=g+128|0;y=g+131|0;z=b+116|0;A=g+112|0;j=g+116|0;k=d+40|0;a:while(1){b:do switch(ob[c[n>>2]&127](d,e,f,B)|0){case -4:{g=0;break a}case -1:{G=37;break a}case 0:{G=39;break a}case 28:{if((a[o>>0]|0)==0?(c[p>>2]|0)==(d|0):0){G=19;break a}g=c[r>>2]|0;g=WV(q,d,e+g|0,(c[B>>2]|0)+(0-g)|0)|0;if(!g){g=1;break a}h=YV(b,s,g,0)|0;c[u>>2]=c[t>>2];if(!h){G=9;break a}i=h+32|0;if(a[i>>0]|0){G=11;break a}g=h+16|0;if(!(c[g>>2]|0)){a[i>>0]=1;g=c[h+4>>2]|0;g=gW(b,c[v>>2]|0,g,g+(c[h+8>>2]|0)|0)|0;a[i>>0]=0;if(!g)break b;else break a}if(c[w>>2]|0){a[y>>0]=0;a[i>>0]=1;h=(pb[c[w>>2]&127](c[z>>2]|0,0,c[h+20>>2]|0,c[g>>2]|0,c[h+24>>2]|0)|0)==0;a[i>>0]=0;if(h){g=21;break a}if(a[y>>0]|0)break b}a[x>>0]=a[m>>0]|0;break}case 6:case 9:{if(!(cW(D,d,e,c[B>>2]|0)|0)){g=1;break a}break}case -3:{c[B>>2]=e+(c[r>>2]|0);G=22;break}case 7:{G=22;break}case 10:{g=lb[c[k>>2]&127](d,e)|0;if((g|0)<0){G=27;break a}h=gX(g,C)|0;e=0;while(1){if((e|0)>=(h|0))break;g=c[j>>2]|0;if((c[A>>2]|0)==(g|0)){if(!((eW(D)|0)<<24>>24)){g=1;G=35;break a}g=c[j>>2]|0}i=a[C+e>>0]|0;c[j>>2]=g+1;a[g>>0]=i;e=e+1|0}break}default:{G=41;break a}}while(0);if((G|0)==22){G=0;g=c[j>>2]|0;if((c[A>>2]|0)==(g|0)){if(!((eW(D)|0)<<24>>24)){g=1;break}g=c[j>>2]|0}c[j>>2]=g+1;a[g>>0]=10}e=c[B>>2]|0}if((G|0)==9){a[x>>0]=a[m>>0]|0;g=0}else if((G|0)==11)if((c[p>>2]|0)==(d|0)){c[b+284>>2]=e;g=12}else g=12;else if((G|0)==19){c[b+284>>2]=e;g=10}else if((G|0)==27)if((c[p>>2]|0)==(d|0)){c[b+284>>2]=e;g=14;G=35}else{g=14;G=35}else if((G|0)==37)if((c[p>>2]|0)==(d|0)){c[b+284>>2]=e;g=4}else g=4;else if((G|0)==39)if((c[p>>2]|0)==(d|0)){c[b+284>>2]=c[B>>2];g=4}else g=4;else if((G|0)==41)if((c[p>>2]|0)==(d|0)){c[b+284>>2]=e;g=23}else g=23;c[F>>2]=E}l=H;return g|0}function hW(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;p=l;l=l+16|0;n=p;o=p+4|0;c[n>>2]=e;if(!(a[d+68>>0]|0)){if((c[b+144>>2]|0)==(d|0)){g=b+288|0;h=b+284|0}else{h=c[b+296>>2]|0;g=h+4|0}i=b+44|0;j=d+56|0;k=b+48|0;m=b+80|0;e=b+4|0;do{c[o>>2]=c[i>>2];b=pb[c[j>>2]&127](d,n,f,o,c[k>>2]|0)|0;c[g>>2]=c[n>>2];q=c[i>>2]|0;vb[c[m>>2]&127](c[e>>2]|0,q,(c[o>>2]|0)-q|0);c[h>>2]=c[n>>2]}while(b>>>0>1)}else vb[c[b+80>>2]&127](c[b+4>>2]|0,e,f-e|0);l=p;return}function iW(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0;m=l;l=l+16|0;j=m;k=c[d>>2]|0;if((c[a+144>>2]|0)==(b|0)){i=a+284|0;c[i>>2]=k;h=a+288|0}else{i=c[a+296>>2]|0;h=i+4|0}c[i>>2]=k;c[d>>2]=0;n=ob[c[b+12>>2]&127](b,k,e,j)|0;e=c[j>>2]|0;c[h>>2]=e;switch(n|0){case 42:{if(c[a+80>>2]|0){hW(a,b,k,e);e=c[j>>2]|0}c[d>>2]=e;c[f>>2]=e;e=(c[a+476>>2]|0)==2?35:0;break}case 0:{c[i>>2]=e;e=4;break}case -2:{if(!(g<<24>>24))e=6;else{c[f>>2]=k;e=0}break}case -4:case -1:{if(!(g<<24>>24))e=2;else{c[f>>2]=k;e=0}break}default:{c[i>>2]=e;e=23}}l=m;return e|0}function jW(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;h=l;l=l+16|0;g=h;c[g>>2]=d;d=iW(b,c[b+144>>2]|0,g,e,f,(a[b+480>>0]|0)==0&1)|0;g=c[g>>2]|0;if(!((d|0)!=0|(g|0)==0)){c[b+276>>2]=57;d=TV(b,g,e,f)|0}l=h;return d|0}function kW(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;i=c[a+352>>2]|0;j=i+184|0;if(!(c[j>>2]|0)){b=kb[c[a+12>>2]&63](c[a+464>>2]<<2)|0;c[j>>2]=b;if(!b)b=-1;else{c[b>>2]=0;d=4}}else d=4;do if((d|0)==4){h=i+176|0;b=c[h>>2]|0;g=i+172|0;d=c[g>>2]|0;f=i+164|0;e=c[f>>2]|0;if(b>>>0>>0)g=e;else{if(!e){b=kb[c[a+12>>2]&63](896)|0;if(!b){b=-1;break}else{d=b;b=32}}else{b=lb[c[a+16>>2]&127](e,d*56|0)|0;if(!b){b=-1;break}d=b;b=c[g>>2]<<1}c[g>>2]=b;c[f>>2]=d;b=c[h>>2]|0;g=d}c[h>>2]=b+1;d=c[i+180>>2]|0;if(d|0){a=c[(c[j>>2]|0)+(d+-1<<2)>>2]|0;f=g+(a*28|0)+16|0;d=c[f>>2]|0;if(d|0)c[g+(d*28|0)+24>>2]=b;d=g+(a*28|0)+20|0;e=c[d>>2]|0;if(!e)c[g+(a*28|0)+12>>2]=b;c[f>>2]=b;c[d>>2]=e+1}j=g+(b*28|0)+12|0;c[j>>2]=0;c[j+4>>2]=0;c[j+8>>2]=0;c[j+12>>2]=0}while(0);return b|0}function lW(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;p=l;l=l+16|0;n=p;o=b+300|0;f=c[o>>2]|0;if(!f){f=kb[c[b+12>>2]&63](24)|0;if(!f)f=1;else{m=f;g=4}}else{c[o>>2]=c[f+8>>2];m=f;g=4}do if((g|0)==4){h=d+32|0;a[h>>0]=1;i=d+12|0;c[i>>2]=0;j=b+296|0;k=m+8|0;c[k>>2]=c[j>>2];c[j>>2]=m;c[m+12>>2]=d;f=b+308|0;c[m+16>>2]=c[f>>2];a[m+20>>0]=e;c[m>>2]=0;c[m+4>>2]=0;g=c[d+4>>2]|0;e=g+(c[d+8>>2]|0)|0;c[n>>2]=g;if(!(a[d+33>>0]|0))f=rW(b,c[f>>2]|0,c[b+224>>2]|0,g,e,n,0)|0;else{d=b+224|0;f=c[d>>2]|0;f=ob[c[f>>2]&127](f,g,e,n)|0;f=UV(b,c[d>>2]|0,g,e,f,c[n>>2]|0,n,0)|0}if(!f){f=c[n>>2]|0;if((e|0)!=(f|0)?(c[b+476>>2]|0)==3:0){c[i>>2]=f-g;c[b+276>>2]=60;f=0;break}a[h>>0]=0;c[j>>2]=c[k>>2];c[k>>2]=c[o>>2];c[o>>2]=m;f=0}}while(0);l=p;return f|0}function mW(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;g=l;l=l+16|0;d=g+4|0;e=g;b=c[a+352>>2]|0;f=b+176|0;b=kb[c[a+12>>2]&63](((c[f>>2]|0)*20|0)+(c[b+168>>2]|0)|0)|0;if(!b)b=0;else{c[e>>2]=b+((c[f>>2]|0)*20|0);c[d>>2]=b+20;qW(a,0,b,d,e)}l=g;return b|0}function nW(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;j=a+64|0;if(!(c[j>>2]|0))if(!(c[a+80>>2]|0))d=1;else{hW(a,b,d,e);d=1}else{h=b+64|0;g=d+(c[h>>2]<<1)|0;d=g+(lb[c[b+28>>2]&127](b,g)|0)|0;f=a+412|0;g=WV(f,b,g,d)|0;if((g|0)!=0?(c[a+428>>2]=c[a+424>>2],i=lb[c[b+32>>2]&127](b,d)|0,i=WV(f,b,i,e+(0-(c[h>>2]<<1))|0)|0,(i|0)!=0):0){pW(i);vb[c[j>>2]&127](c[a+4>>2]|0,g,i);XV(f);d=1}else d=0}return d|0}function oW(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;g=a+68|0;if(!(c[g>>2]|0))if(!(c[a+80>>2]|0))b=1;else{hW(a,b,d,e);b=1}else{f=a+412|0;h=c[b+64>>2]|0;b=WV(f,b,d+(h<<2)|0,e+(O(h,-3)|0)|0)|0;if(!b)b=0;else{pW(b);ub[c[g>>2]&63](c[a+4>>2]|0,b);XV(f);b=1}}return b|0}function pW(b){b=b|0;var c=0,d=0,e=0;a:while(1){switch(a[b>>0]|0){case 0:break a;case 13:{d=b;c=13;e=4;break a}default:{}}b=b+1|0}if((e|0)==4){while(1){if(c<<24>>24==13){a[d>>0]=10;e=b+1|0;b=(a[e>>0]|0)==10?b+2|0:e}else{a[d>>0]=c;b=b+1|0}d=d+1|0;c=a[b>>0]|0;if(!(c<<24>>24))break;else e=4}a[d>>0]=0}return}function qW(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0;k=(c[b+352>>2]|0)+164|0;j=c[(c[k>>2]|0)+(d*28|0)>>2]|0;c[e>>2]=j;c[e+4>>2]=c[(c[k>>2]|0)+(d*28|0)+4>>2];if((j|0)==4){c[e+8>>2]=c[g>>2];d=c[(c[k>>2]|0)+(d*28|0)+8>>2]|0;while(1){j=a[d>>0]|0;k=c[g>>2]|0;c[g>>2]=k+1;a[k>>0]=j;if(!(a[d>>0]|0))break;else d=d+1|0}c[e+12>>2]=0;c[e+16>>2]=0}else{h=c[(c[k>>2]|0)+(d*28|0)+20>>2]|0;i=e+12|0;c[i>>2]=h;j=e+16|0;c[j>>2]=c[f>>2];c[f>>2]=(c[f>>2]|0)+(h*20|0);d=(c[k>>2]|0)+(d*28|0)+12|0;h=0;while(1){d=c[d>>2]|0;if(h>>>0>=(c[i>>2]|0)>>>0)break;qW(b,d,(c[j>>2]|0)+(h*20|0)|0,f,g);d=(c[k>>2]|0)+(d*28|0)+24|0;h=h+1|0}c[e+8>>2]=0}return}function rW(b,d,e,f,g,h,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0;ma=l;l=l+48|0;ja=ma+28|0;ea=ma+32|0;ka=ma+24|0;Z=ma;c[ja>>2]=f;_=c[b+352>>2]|0;if((c[b+144>>2]|0)==(e|0)){fa=b+284|0;Y=b+288|0}else{Y=c[b+296>>2]|0;fa=Y;Y=Y+4|0}c[fa>>2]=f;t=e+4|0;ga=b+80|0;u=b+476|0;v=e+44|0;w=e+64|0;x=_+80|0;y=_+96|0;z=_+92|0;A=_+129|0;B=b+112|0;C=b+116|0;D=b+428|0;E=b+424|0;F=b+304|0;G=b+120|0;ha=b+4|0;H=_+130|0;$=b+60|0;I=b+364|0;J=b+12|0;K=b+360|0;L=e+28|0;ia=b+308|0;aa=e+56|0;M=b+16|0;N=b+52|0;O=b+412|0;P=b+388|0;Q=b+56|0;R=b+232|0;S=b+233|0;T=b+468|0;U=b+104|0;V=b+372|0;W=e+40|0;X=b+72|0;ba=e+68|0;ca=b+44|0;da=b+48|0;a:while(1){s=c[ja>>2]|0;c[ea>>2]=s;s=ob[c[t>>2]&127](e,s,g,ea)|0;f=c[ea>>2]|0;c[Y>>2]=f;k=f;b:do switch(s|0){case -3:{la=6;break a}case -4:{la=15;break a}case 0:{la=20;break a}case -1:{la=21;break a}case -2:{la=23;break a}case 12:{f=17;break a}case -5:{la=134;break a}case 9:{s=c[w>>2]|0;s=(nb[c[v>>2]&63](e,(c[ja>>2]|0)+s|0,k+(0-s)|0)|0)&255;a[ka>>0]=s;do if(s<<24>>24){f=c[$>>2]|0;if(f|0){vb[f&127](c[ha>>2]|0,ka,1);break}if(c[ga>>2]|0)hW(b,e,c[ja>>2]|0,c[ea>>2]|0)}else{j=c[w>>2]|0;j=WV(x,e,(c[ja>>2]|0)+j|0,(c[ea>>2]|0)+(0-j)|0)|0;if(!j){f=1;la=56;break a}k=YV(b,_,j,0)|0;c[z>>2]=c[y>>2];if((a[A>>0]|0)!=0?(a[H>>0]|0)==0:0){if(!k){f=c[G>>2]|0;if(f|0){vb[f&127](c[ha>>2]|0,j,0);break}if(!(c[ga>>2]|0))break;hW(b,e,c[ja>>2]|0,c[ea>>2]|0);break}}else{if(!k){f=11;la=56;break a}if(!(a[k+34>>0]|0)){f=24;la=56;break a}}f=k+32|0;if(a[f>>0]|0){f=12;la=56;break a}if(c[k+28>>2]|0){f=15;la=56;break a}if(!(c[k+4>>2]|0)){if(!(c[B>>2]|0)){if(!(c[ga>>2]|0))break;hW(b,e,c[ja>>2]|0,c[ea>>2]|0);break}a[f>>0]=1;j=tW(b)|0;a[f>>0]=0;if(!j){f=1;la=56;break a}if(!(pb[c[B>>2]&127](c[C>>2]|0,j,c[k+20>>2]|0,c[k+16>>2]|0,c[k+24>>2]|0)|0)){f=21;la=56;break a}c[E>>2]=c[D>>2];break}if(a[F>>0]|0){f=lW(b,k,0)|0;if(!f)break;else{la=58;break a}}f=c[G>>2]|0;if(!f){if(c[ga>>2]|0)hW(b,e,c[ja>>2]|0,c[ea>>2]|0)}else vb[f&127](c[ha>>2]|0,c[k>>2]|0,0);break b}while(0);break}case 1:case 2:{f=c[I>>2]|0;if(!f){f=kb[c[J>>2]&63](48)|0;if(!f){f=1;la=75;break a}j=kb[c[J>>2]&63](32)|0;c[f+36>>2]=j;if(!j){la=63;break a}c[f+40>>2]=j+32}else c[I>>2]=c[f>>2];o=f+44|0;c[o>>2]=0;c[f>>2]=c[K>>2];c[K>>2]=f;s=f+12|0;c[f+16>>2]=0;c[f+20>>2]=0;r=(c[ja>>2]|0)+(c[w>>2]|0)|0;q=f+4|0;c[q>>2]=r;p=f+8|0;c[p>>2]=lb[c[L>>2]&127](e,r)|0;c[ia>>2]=(c[ia>>2]|0)+1;q=c[q>>2]|0;p=q+(c[p>>2]|0)|0;c[Z>>2]=q;q=f+36|0;c[ka>>2]=c[q>>2];r=f+40|0;j=c[r>>2]|0;while(1){na=pb[c[aa>>2]&127](e,Z,p,ka,j+-1|0)|0;j=c[ka>>2]|0;m=c[q>>2]|0;k=m;n=j-k|0;if((na|0)==1?1:(c[Z>>2]|0)>>>0>=p>>>0)break;k=(c[r>>2]|0)-k<<1;j=lb[c[M>>2]&127](m,k)|0;if(!j){la=69;break a}c[q>>2]=j;na=j+k|0;c[r>>2]=na;c[ka>>2]=j+n;j=na}c[f+24>>2]=n;c[s>>2]=k;a[j>>0]=0;f=uW(b,e,c[ja>>2]|0,s,o)|0;if(f|0){la=75;break a}f=c[N>>2]|0;if(!f){if(c[ga>>2]|0)hW(b,e,c[ja>>2]|0,c[ea>>2]|0)}else vb[f&127](c[ha>>2]|0,c[s>>2]|0,c[P>>2]|0);XV(O);break}case 3:case 4:{na=(c[ja>>2]|0)+(c[w>>2]|0)|0;c[ka>>2]=0;na=WV(O,e,na,na+(lb[c[L>>2]&127](e,na)|0)|0)|0;c[Z>>2]=na;if(!na){f=1;la=89;break a}c[D>>2]=c[E>>2];f=uW(b,e,c[ja>>2]|0,Z,ka)|0;if(f|0){la=79;break a}c[D>>2]=c[E>>2];f=c[N>>2]|0;if(!f)j=1;else{vb[f&127](c[ha>>2]|0,c[Z>>2]|0,c[P>>2]|0);j=0}f=c[Q>>2]|0;if(!f){if(j|0?c[ga>>2]|0:0)hW(b,e,c[ja>>2]|0,c[ea>>2]|0)}else{if(c[N>>2]|0){c[fa>>2]=c[Y>>2];f=c[Q>>2]|0}ub[f&63](c[ha>>2]|0,c[Z>>2]|0)}XV(O);vW(b,c[ka>>2]|0);if((c[ia>>2]|0)==0?(c[u>>2]&-2|0)!=2:0){la=92;break a}break}case 5:{if((c[ia>>2]|0)==(d|0)){f=13;break a}n=c[K>>2]|0;c[K>>2]=c[n>>2];c[n>>2]=c[I>>2];c[I>>2]=n;f=(c[ja>>2]|0)+(c[w>>2]<<1)|0;j=lb[c[L>>2]&127](e,f)|0;if((j|0)!=(c[n+8>>2]|0)){la=96;break a}if(L0(c[n+4>>2]|0,f,j)|0){la=96;break a}c[ia>>2]=(c[ia>>2]|0)+-1;f=c[Q>>2]|0;if(!f){if(c[ga>>2]|0)hW(b,e,c[ja>>2]|0,c[ea>>2]|0)}else{j=c[n+16>>2]|0;m=n+12|0;if((j|0)!=0&(a[R>>0]|0)!=0){f=(c[m>>2]|0)+(c[n+28>>2]|0)|0;while(1){k=a[j>>0]|0;if(!(k<<24>>24))break;a[f>>0]=k;f=f+1|0;j=j+1|0}j=c[n+20>>2]|0;c:do if((j|0)!=0&(a[S>>0]|0)!=0){a[f>>0]=a[T>>0]|0;while(1){f=f+1|0;k=a[j>>0]|0;if(!(k<<24>>24))break c;a[f>>0]=k;j=j+1|0}}while(0);a[f>>0]=0;f=c[Q>>2]|0}ub[f&63](c[ha>>2]|0,c[m>>2]|0)}k=n+44|0;while(1){m=c[k>>2]|0;if(!m)break;f=c[U>>2]|0;if(!f){f=m;j=m}else{ub[f&63](c[ha>>2]|0,c[c[m>>2]>>2]|0);f=m;j=c[k>>2]|0}c[k>>2]=c[j+4>>2];c[m+4>>2]=c[V>>2];c[V>>2]=m;c[(c[f>>2]|0)+4>>2]=c[m+8>>2]}if(!(c[ia>>2]|0)){la=117;break a}break}case 10:{f=lb[c[W>>2]&127](e,c[ja>>2]|0)|0;if((f|0)<0){f=14;break a}j=c[$>>2]|0;if(j|0){s=c[ha>>2]|0;na=gX(f,ka)|0;vb[j&127](s,ka,na);break b}if(c[ga>>2]|0)hW(b,e,c[ja>>2]|0,c[ea>>2]|0);break}case 7:{f=c[$>>2]|0;if(f|0){a[ka>>0]=10;vb[f&127](c[ha>>2]|0,ka,1);break b}if(c[ga>>2]|0)hW(b,e,c[ja>>2]|0,k);break}case 8:{f=c[X>>2]|0;if(!f){if(c[ga>>2]|0)hW(b,e,c[ja>>2]|0,k)}else tb[f&127](c[ha>>2]|0);f=xW(b,e,ea,g,h,i)|0;if(f|0)break a;if(!(c[ea>>2]|0)){la=133;break a}break}case 6:{j=c[$>>2]|0;if(!j){if(!(c[ga>>2]|0))break b;hW(b,e,c[ja>>2]|0,k);break b}if(!(a[ba>>0]|0))f=k;else{na=c[ja>>2]|0;vb[j&127](c[ha>>2]|0,na,f-na|0);break b}while(1){c[ka>>2]=c[ca>>2];na=pb[c[aa>>2]&127](e,ja,f,ka,c[da>>2]|0)|0;c[Y>>2]=c[ja>>2];s=c[ca>>2]|0;vb[j&127](c[ha>>2]|0,s,(c[ka>>2]|0)-s|0);if(na>>>0<2)break;c[fa>>2]=c[ja>>2];f=c[ea>>2]|0}break}case 11:{if(!(nW(b,e,c[ja>>2]|0,k)|0)){f=1;break a}break}case 13:{if(!(oW(b,e,c[ja>>2]|0,k)|0)){f=1;break a}break}default:if(c[ga>>2]|0)hW(b,e,c[ja>>2]|0,k)}while(0);na=c[ea>>2]|0;c[ja>>2]=na;c[fa>>2]=na;switch(c[u>>2]|0){case 2:{f=35;break a}case 3:{la=160;break a}default:{}}}switch(la|0){case 6:{if(i<<24>>24){c[h>>2]=c[ja>>2];f=0;break}c[Y>>2]=g;f=c[$>>2]|0;if(!f){if(c[ga>>2]|0)hW(b,e,c[ja>>2]|0,g)}else{a[ka>>0]=10;vb[f&127](c[ha>>2]|0,ka,1)}if(d)if((c[ia>>2]|0)==(d|0)){c[h>>2]=g;f=0}else f=13;else f=3;break}case 15:{if(i<<24>>24){c[h>>2]=c[ja>>2];f=0;break}if((d|0)>0)if((c[ia>>2]|0)==(d|0)){c[h>>2]=c[ja>>2];f=0}else f=13;else f=3;break}case 20:{c[fa>>2]=f;f=4;break}case 21:{if(!(i<<24>>24))f=5;else{c[h>>2]=c[ja>>2];f=0}break}case 23:{if(!(i<<24>>24))f=6;else{c[h>>2]=c[ja>>2];f=0}break}case 56:break;case 58:break;case 63:{tb[c[b+20>>2]&127](f);f=1;la=75;break}case 69:{f=1;la=75;break}case 79:{vW(b,c[ka>>2]|0);la=89;break}case 92:{f=wW(b,c[ea>>2]|0,g,h)|0;break}case 96:{c[fa>>2]=f;f=7;break}case 117:{f=wW(b,c[ea>>2]|0,g,h)|0;break}case 133:{c[b+276>>2]=61;f=0;break}case 134:{if(i<<24>>24){c[h>>2]=c[ja>>2];f=0;break}f=c[$>>2]|0;do if(!f){if(c[ga>>2]|0)hW(b,e,c[ja>>2]|0,g)}else if(!(a[ba>>0]|0)){c[ka>>2]=c[ca>>2];pb[c[aa>>2]&127](e,ja,g,ka,c[da>>2]|0)|0;na=c[ca>>2]|0;vb[c[$>>2]&127](c[ha>>2]|0,na,(c[ka>>2]|0)-na|0);break}else{na=c[ja>>2]|0;vb[f&127](c[ha>>2]|0,na,g-na|0);break}while(0);if(!d){c[fa>>2]=g;f=3;break}if((c[ia>>2]|0)==(d|0)){c[h>>2]=g;f=0;break}else{c[fa>>2]=g;f=13;break}}case 160:{c[h>>2]=c[ea>>2];f=0;break}}l=ma;return f|0}function sW(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;q=l;l=l+16|0;p=q;k=b+296|0;m=c[k>>2]|0;do if(m){n=c[m+12>>2]|0;h=n+4|0;j=c[h>>2]|0;i=n+12|0;g=j+(c[i>>2]|0)|0;j=j+(c[n+8>>2]|0)|0;c[p>>2]=g;o=n+33|0;if(!(a[o>>0]|0))g=rW(b,c[m+16>>2]|0,c[b+224>>2]|0,g,j,p,0)|0;else{s=b+224|0;r=c[s>>2]|0;r=ob[c[r>>2]&127](r,g,j,p)|0;g=UV(b,c[s>>2]|0,g,j,r,c[p>>2]|0,p,0)|0}if(!g){g=c[p>>2]|0;if((j|0)!=(g|0)?(c[b+476>>2]|0)==3:0){c[i>>2]=g-(c[h>>2]|0);g=0;break}a[n+32>>0]=0;s=m+8|0;c[k>>2]=c[s>>2];g=b+300|0;c[s>>2]=c[g>>2];c[g>>2]=m;g=b+276|0;if(!(a[o>>0]|0)){c[g>>2]=58;g=rW(b,(c[b+472>>2]|0)!=0&1,c[b+144>>2]|0,d,e,f,(a[b+480>>0]|0)==0&1)|0;break}else{c[g>>2]=57;s=b+144|0;g=c[s>>2]|0;g=ob[c[g>>2]&127](g,d,e,p)|0;g=UV(b,c[s>>2]|0,d,e,g,c[p>>2]|0,f,(a[b+480>>0]|0)==0&1)|0;break}}}else g=23;while(0);l=q;return g|0}function tW(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;q=l;l=l+16|0;n=q;m=c[b+352>>2]|0;h=m+156|0;o=b+412|0;p=b+424|0;a:do if(!(c[h>>2]|0)){d=0;i=b+420|0;k=b+468|0;j=12}else{d=c[p>>2]|0;i=b+420|0;if((d|0)==(c[i>>2]|0)){if(!((eW(o)|0)<<24>>24)){d=0;break}d=c[p>>2]|0}c[p>>2]=d+1;a[d>>0]=61;g=b+468|0;e=(c[(c[h>>2]|0)+20>>2]|0)+(((a[g>>0]|0)!=0)<<31>>31)|0;f=0;while(1){if((f|0)>=(e|0)){d=1;k=g;j=12;break a}d=c[p>>2]|0;if((d|0)==(c[i>>2]|0)){if(!((eW(o)|0)<<24>>24)){d=0;break a}d=c[p>>2]|0}k=a[(c[(c[h>>2]|0)+16>>2]|0)+f>>0]|0;c[p>>2]=d+1;a[d>>0]=k;f=f+1|0}}while(0);b:do if((j|0)==12){NV(n,m+60|0);c:while(1){do{e=OV(n)|0;if(!e)break c;h=e+4|0}while(!(c[h>>2]|0));if(d<<24>>24){d=c[p>>2]|0;if((d|0)==(c[i>>2]|0)){if(!((eW(o)|0)<<24>>24)){d=0;break b}d=c[p>>2]|0}c[p>>2]=d+1;a[d>>0]=12}g=c[e>>2]|0;while(1){e=a[g>>0]|0;d=c[p>>2]|0;f=(d|0)==(c[i>>2]|0);if(!(e<<24>>24))break;if(f){if(!((eW(o)|0)<<24>>24)){d=0;break b}d=c[p>>2]|0;e=a[g>>0]|0}c[p>>2]=d+1;a[d>>0]=e;g=g+1|0}if(f){if(!((eW(o)|0)<<24>>24)){d=0;break b}d=c[p>>2]|0}c[p>>2]=d+1;a[d>>0]=61;f=(c[(c[h>>2]|0)+20>>2]|0)+(((a[k>>0]|0)!=0)<<31>>31)|0;e=0;while(1){if((e|0)>=(f|0)){d=1;continue c}d=c[p>>2]|0;if((d|0)==(c[i>>2]|0)){if(!((eW(o)|0)<<24>>24)){d=0;break b}d=c[p>>2]|0}j=a[(c[(c[h>>2]|0)+16>>2]|0)+e>>0]|0;c[p>>2]=d+1;a[d>>0]=j;e=e+1|0}}NV(n,m);d:while(1){do{e=OV(n)|0;if(!e)break d}while(!(a[e+32>>0]|0));if(d<<24>>24){d=c[p>>2]|0;if((d|0)==(c[i>>2]|0)){if(!((eW(o)|0)<<24>>24)){d=0;break b}d=c[p>>2]|0}c[p>>2]=d+1;a[d>>0]=12}f=c[e>>2]|0;while(1){e=a[f>>0]|0;if(!(e<<24>>24)){d=1;continue d}d=c[p>>2]|0;if((d|0)==(c[i>>2]|0)){if(!((eW(o)|0)<<24>>24)){d=0;break b}d=c[p>>2]|0;e=a[f>>0]|0}c[p>>2]=d+1;a[d>>0]=e;f=f+1|0}}d=c[p>>2]|0;if((d|0)==(c[i>>2]|0)){if(!((eW(o)|0)<<24>>24)){d=0;break}d=c[p>>2]|0}c[p>>2]=d+1;a[d>>0]=0;d=c[b+428>>2]|0}while(0);l=q;return d|0}function uW(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0;O=l;l=l+80|0;K=O+16|0;L=O;M=c[b+352>>2]|0;k=M+20|0;i=YV(b,k,c[g>>2]|0,0)|0;if(!i){i=BW(M+80|0,c[g>>2]|0)|0;if((i|0)!=0?(j=YV(b,k,i,24)|0,(j|0)!=0):0)if((a[b+232>>0]|0)!=0?(CW(b,j)|0)==0:0)i=1;else A=6;else i=1}else{j=i;A=6}a:do if((A|0)==6){x=c[j+12>>2]|0;k=e+36|0;m=b+376|0;t=b+388|0;u=ob[c[k>>2]&127](e,f,c[m>>2]|0,c[t>>2]|0)|0;i=u+x|0;n=c[m>>2]|0;if((i|0)>(n|0)){i=i+16|0;c[m>>2]=i;i=lb[c[b+16>>2]&127](c[t>>2]|0,i<<4)|0;if(!i){c[m>>2]=n;i=1;break}c[t>>2]=i;if((u|0)>(n|0))ob[c[k>>2]&127](e,f,u,i)|0}J=c[t>>2]|0;r=e+28|0;H=b+412|0;I=b+428|0;w=j+20|0;q=b+424|0;s=0;p=0;k=0;while(1){if((p|0)>=(u|0))break;o=c[(c[t>>2]|0)+(p<<4)>>2]|0;o=aW(b,e,o,o+(lb[c[r>>2]&127](e,o)|0)|0)|0;if(!o){i=1;break a}i=(c[o>>2]|0)+-1|0;if(a[i>>0]|0){A=15;break}a[i>>0]=1;f=s+1|0;c[J+(s<<2)>>2]=c[o>>2];n=c[t>>2]|0;if(a[n+(p<<4)+12>>0]|0){G=WV(H,e,c[n+(p<<4)+4>>2]|0,c[n+(p<<4)+8>>2]|0)|0;c[J+(f<<2)>>2]=G;if(!G){i=1;break a}}else{b:do if(!(a[o+8>>0]|0))i=1;else{i=0;while(1){if((i|0)>=(x|0)){i=1;break b}m=c[w>>2]|0;if((o|0)==(c[m+(i*12|0)>>2]|0))break;i=i+1|0}i=a[m+(i*12|0)+4>>0]|0}while(0);i=fW(b,e,i,c[n+(p<<4)+4>>2]|0,c[n+(p<<4)+8>>2]|0,H)|0;if(i|0)break a;c[J+(f<<2)>>2]=c[I>>2]}c[I>>2]=c[q>>2];i=c[o+4>>2]|0;do if(i)if(a[o+9>>0]|0){i=DW(b,i,o,c[J+(f<<2)>>2]|0,h)|0;if(!i){i=s;break}else break a}else{a[(c[o>>2]|0)+-1>>0]=2;k=k+1|0;i=s+2|0;break}else i=s+2|0;while(0);s=i;p=p+1|0}if((A|0)==15){if((c[b+144>>2]|0)!=(e|0)){i=8;break}c[b+284>>2]=c[(c[t>>2]|0)+(p<<4)>>2];i=8;break}c[b+380>>2]=s;i=c[j+8>>2]|0;c:do if((i|0)!=0?(v=c[i>>2]|0,(a[v+-1>>0]|0)!=0):0){i=0;while(1){if((i|0)>=(s|0)){f=0;p=k;G=s;break c}if((c[J+(i<<2)>>2]|0)==(v|0)){A=37;break c}i=i+2|0}}else{i=-1;A=37}while(0);if((A|0)==37){c[b+384>>2]=i;f=0;p=k;G=s}while(1){if((f|0)>=(x|0))break;i=c[w>>2]|0;n=i+(f*12|0)|0;k=c[n>>2]|0;m=(c[k>>2]|0)+-1|0;d:do if((a[m>>0]|0)==0?(y=i+(f*12|0)+8|0,z=c[y>>2]|0,(z|0)!=0):0){i=c[k+4>>2]|0;do if(i)if(a[k+9>>0]|0){i=DW(b,i,k,z,h)|0;if(!i){i=p;k=G;break d}else break a}else{a[m>>0]=2;i=p+1|0;break}else{a[m>>0]=1;i=p}while(0);c[J+(G<<2)>>2]=c[c[n>>2]>>2];c[J+(G+1<<2)>>2]=c[y>>2];k=G+2|0}else{i=p;k=G}while(0);f=f+1|0;p=i;G=k}c[J+(G<<2)>>2]=0;e:do if(!p)i=0;else{o=b+396|0;n=c[o>>2]|0;F=b+400|0;f=a[F>>0]|0;i=f&255;do if(!(p<<1>>i)){i=1<>24}while((p>>(E&255)|0)!=0);i=(i&255)>3?i:3;a[F>>0]=i;i=i&255;m=b+392|0;k=lb[c[b+16>>2]&127](c[m>>2]|0,12<>0]=f;i=1;break a}else{c[m>>2]=k;k=1<>2]|0)+(E*12|0)>>2]=-1;i=E}}while(0);E=i+-1|0;c[o>>2]=E;w=M+40|0;x=b+424|0;y=b+420|0;z=k+-1|0;A=0-k|0;B=z>>>2;C=b+233|0;D=b+468|0;i=0;v=p;g:while(1){while(1){if((i|0)>=(G|0))break e;e=J+(i<<2)|0;n=c[e>>2]|0;f=n+-1|0;if((a[f>>0]|0)==2)break;a[f>>0]=0;i=i+2|0}EW(b,L);FW(K,L);a[f>>0]=0;f=YV(b,w,n,0)|0;if(!f){i=1;break}f=c[f+4>>2]|0;if(!f){i=1;break}u=c[f+4>>2]|0;if(!u){i=27;break}q=u+20|0;r=u+16|0;p=0;while(1){f=c[q>>2]|0;o=c[r>>2]|0;if((p|0)>=(f|0))break;o=a[o+p>>0]|0;f=c[x>>2]|0;if((f|0)==(c[y>>2]|0)){if(!((eW(H)|0)<<24>>24)){i=1;break g}f=c[x>>2]|0}c[x>>2]=f+1;a[f>>0]=o;p=p+1|0}GW(K,o,f);do{t=n;n=n+1|0}while((a[t>>0]|0)!=58);GW(K,n,HW(n)|0);while(1){f=c[x>>2]|0;if((f|0)==(c[y>>2]|0)){if(!((eW(H)|0)<<24>>24)){i=1;break g}f=c[x>>2]|0}t=a[n>>0]|0;c[x>>2]=f+1;a[f>>0]=t;if(!(a[n>>0]|0))break;else n=n+1|0}t=IW(K)|0;q=c[m>>2]|0;r=t&A;n=0;s=z&t;while(1){if((c[q+(s*12|0)>>2]|0)!=(E|0))break;if((c[q+(s*12|0)+4>>2]|0)==(t|0)){f=c[q+(s*12|0)+8>>2]|0;o=c[I>>2]|0;while(1){P=a[o>>0]|0;p=P<<24>>24==0;if(p|P<<24>>24!=(a[f>>0]|0))break;f=f+1|0;o=o+1|0}if(p){i=8;break g}}if(!(n<<24>>24))n=(r>>>((d[F>>0]|0)+-1|0)&B|1)&255;P=n&255;s=s+((s|0)<(P|0)?k:0)-P|0}if(a[C>>0]|0){a[(c[x>>2]|0)+-1>>0]=a[D>>0]|0;f=c[c[u>>2]>>2]|0;while(1){n=c[x>>2]|0;if((n|0)==(c[y>>2]|0)){if(!((eW(H)|0)<<24>>24)){i=1;break g}n=c[x>>2]|0}P=a[f>>0]|0;c[x>>2]=n+1;a[n>>0]=P;if(!(a[f>>0]|0))break;else f=f+1|0}}P=c[I>>2]|0;c[I>>2]=c[x>>2];c[e>>2]=P;c[(c[m>>2]|0)+(s*12|0)>>2]=E;c[(c[m>>2]|0)+(s*12|0)+4>>2]=t;c[(c[m>>2]|0)+(s*12|0)+8>>2]=P;v=v+-1|0;i=i+2|0;if(!v)break e}break a}while(0);while(1){if((i|0)>=(G|0)){i=h;break}a[(c[J+(i<<2)>>2]|0)+-1>>0]=0;i=i+2|0}while(1){i=c[i>>2]|0;if(!i)break;a[(c[c[i+12>>2]>>2]|0)+-1>>0]=0;i=i+4|0}if(!(a[b+232>>0]|0))i=0;else{i=c[j+4>>2]|0;if(!i){i=c[M+156>>2]|0;if(!i){i=0;break}k=c[g>>2]|0}else{i=c[i+4>>2]|0;if(!i){i=27;break}j=c[g>>2]|0;while(1){k=j+1|0;if((a[j>>0]|0)==58)break;else j=k}}if((a[b+233>>0]|0)!=0?(N=c[c[i>>2]>>2]|0,(N|0)!=0):0){j=0;while(1){m=j+1|0;if(!(a[N+j>>0]|0))break;else j=m}}else m=0;c[g+4>>2]=k;p=i+20|0;c[g+16>>2]=c[p>>2];c[g+8>>2]=c[c[i>>2]>>2];c[g+20>>2]=m;q=0;while(1){r=q+1|0;if(!(a[k+q>>0]|0))break;else q=r}j=c[p>>2]|0;n=r+m+j|0;f=i+24|0;if((n|0)>(c[f>>2]|0)){j=n+24|0;o=kb[c[b+12>>2]&63](j)|0;if(!o){i=1;break}c[f>>2]=j;f=i+16|0;F3(o|0,c[f>>2]|0,c[p>>2]|0)|0;j=b+360|0;while(1){j=c[j>>2]|0;if(!j)break;n=j+12|0;if((c[n>>2]|0)==(c[f>>2]|0))c[n>>2]=o}tb[c[b+20>>2]&127](c[f>>2]|0);c[f>>2]=o;n=o;j=c[p>>2]|0}else{n=i+16|0;f=n;n=c[n>>2]|0}j=n+j|0;F3(j|0,k|0,r|0)|0;if(m|0){P=j+q|0;a[P>>0]=a[b+468>>0]|0;F3(P+1|0,c[c[i>>2]>>2]|0,m|0)|0}c[g>>2]=c[f>>2];i=0}}while(0);l=O;return i|0}function vW(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=a+104|0;f=a+372|0;d=a+4|0;while(1){if(!b)break;a=c[e>>2]|0;if(!a)a=b;else{ub[a&63](c[d>>2]|0,c[c[b>>2]>>2]|0);a=b}h=b+4|0;g=c[h>>2]|0;c[h>>2]=c[f>>2];c[f>>2]=b;c[(c[a>>2]|0)+4>>2]=c[b+8>>2];b=g}return}function wW(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0;q=l;l=l+16|0;j=q;c[b+276>>2]=62;k=b+284|0;c[k>>2]=d;m=b+144|0;n=b+288|0;o=b+80|0;i=b+476|0;g=d;a:while(1){c[j>>2]=0;r=c[m>>2]|0;r=ob[c[r>>2]&127](r,g,e,j)|0;d=c[j>>2]|0;c[n>>2]=d;h=d;switch(r|0){case -15:{p=3;break a}case -4:{p=7;break a}case 0:{p=12;break a}case -1:{p=13;break a}case -2:{p=15;break a}case 15:{if(c[o>>2]|0)hW(b,c[m>>2]|0,g,h);break}case 11:{if(!(nW(b,c[m>>2]|0,g,h)|0)){d=1;break a}break}case 13:{if(!(oW(b,c[m>>2]|0,g,h)|0)){d=1;break a}break}default:{d=9;break a}}d=c[j>>2]|0;c[k>>2]=d;switch(c[i>>2]|0){case 2:{d=35;break a}case 3:{p=18;break a}default:{}}g=d}do if((p|0)==3){if(c[o>>2]|0){hW(b,c[m>>2]|0,g,h);if((c[i>>2]|0)==2){d=35;break}d=c[j>>2]|0}c[f>>2]=d;d=0}else if((p|0)==7){c[f>>2]=g;d=0}else if((p|0)==12){c[k>>2]=d;d=4}else if((p|0)==13)if(!(a[b+480>>0]|0)){c[f>>2]=g;d=0}else d=5;else if((p|0)==15)if(!(a[b+480>>0]|0)){c[f>>2]=g;d=0}else d=6;else if((p|0)==18){c[f>>2]=d;d=0}while(0);l=q;return d|0}function xW(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;B=l;l=l+16|0;y=B+8|0;z=B+4|0;x=B;i=c[e>>2]|0;c[y>>2]=i;if((c[b+144>>2]|0)==(d|0)){s=b+284|0;c[s>>2]=i;t=b+288|0}else{t=c[b+296>>2]|0;s=t;t=t+4|0}c[s>>2]=i;c[e>>2]=0;k=d+8|0;m=b+60|0;u=b+80|0;v=b+4|0;w=b+476|0;n=d+68|0;o=b+44|0;p=d+56|0;q=b+48|0;a:while(1){j=ob[c[k>>2]&127](d,c[y>>2]|0,f,z)|0;i=c[z>>2]|0;c[t>>2]=i;r=i;b:do switch(j|0){case 40:{A=6;break a}case 0:{A=23;break a}case -2:{A=24;break a}case -4:case -1:{A=26;break a}case 7:{i=c[m>>2]|0;if(i|0){a[x>>0]=10;vb[i&127](c[v>>2]|0,x,1);break b}if(c[u>>2]|0)hW(b,d,c[y>>2]|0,r);break}case 6:{j=c[m>>2]|0;if(!j){if(!(c[u>>2]|0))break b;hW(b,d,c[y>>2]|0,r);break b}if(!(a[n>>0]|0))i=r;else{r=c[y>>2]|0;vb[j&127](c[v>>2]|0,r,i-r|0);break b}while(1){c[x>>2]=c[o>>2];r=pb[c[p>>2]&127](d,y,i,x,c[q>>2]|0)|0;c[t>>2]=c[z>>2];i=c[o>>2]|0;vb[j&127](c[v>>2]|0,i,(c[x>>2]|0)-i|0);if(r>>>0<2)break;c[s>>2]=c[y>>2];i=c[z>>2]|0}break}default:{A=28;break a}}while(0);r=c[z>>2]|0;c[y>>2]=r;c[s>>2]=r;switch(c[w>>2]|0){case 3:{A=30;break a}case 2:{i=35;break a}default:{}}}if((A|0)==6){i=c[b+76>>2]|0;if(!i){if(c[u>>2]|0)hW(b,d,c[y>>2]|0,r)}else tb[i&127](c[v>>2]|0);i=c[z>>2]|0;c[e>>2]=i;c[g>>2]=i;i=(c[w>>2]|0)==2?35:0}else if((A|0)==23){c[s>>2]=i;i=4}else if((A|0)==24)if(!(h<<24>>24))i=6;else{c[g>>2]=c[y>>2];i=0}else if((A|0)==26)if(!(h<<24>>24))i=20;else{c[g>>2]=c[y>>2];i=0}else if((A|0)==28){c[s>>2]=i;i=23}else if((A|0)==30){c[g>>2]=c[z>>2];i=0}l=B;return i|0}function yW(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;h=l;l=l+16|0;g=h;c[g>>2]=d;d=xW(b,c[b+144>>2]|0,g,e,f,(a[b+480>>0]|0)==0&1)|0;g=c[g>>2]|0;do if(!((d|0)!=0|(g|0)==0)){d=b+276|0;if(!(c[b+472>>2]|0)){c[d>>2]=58;d=_V(b,g,e,f)|0;break}else{c[d>>2]=63;d=zW(b,g,e,f)|0;break}}while(0);l=h;return d|0}function zW(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;d=rW(b,1,c[b+144>>2]|0,d,e,f,(a[b+480>>0]|0)==0&1)|0;if((d|0)==0?(AW(b)|0)<<24>>24==0:0)d=1;return d|0}function AW(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;m=a+16|0;a=a+360|0;while(1){a=c[a>>2]|0;if(!a){a=1;break}i=(c[a+24>>2]|0)+1|0;j=a+36|0;f=c[j>>2]|0;e=f+i|0;l=a+4|0;d=c[l>>2]|0;if((d|0)==(e|0)){a=1;break}k=a+8|0;b=c[k>>2]|0;g=b+i|0;h=a+40|0;if((g|0)>((c[h>>2]|0)-f|0)){e=lb[c[m>>2]&127](f,g)|0;if(!e){a=0;break}b=a+12|0;f=c[j>>2]|0;if((c[b>>2]|0)==(f|0))c[b>>2]=e;b=a+16|0;d=c[b>>2]|0;if(d|0)c[b>>2]=e+(d-f);c[j>>2]=e;c[h>>2]=e+g;e=e+i|0;d=c[l>>2]|0;b=c[k>>2]|0}F3(e|0,d|0,b|0)|0;c[l>>2]=e}return a|0}function BW(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;f=b+12|0;g=b+8|0;while(1){e=c[f>>2]|0;if((e|0)==(c[g>>2]|0)){if(!((eW(b)|0)<<24>>24)){d=0;break}e=c[f>>2]|0}i=a[d>>0]|0;c[f>>2]=e+1;a[e>>0]=i;if(!(a[d>>0]|0)){h=6;break}else d=d+1|0}if((h|0)==6){i=b+16|0;d=c[i>>2]|0;c[i>>2]=c[f>>2]}return d|0}function CW(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;n=c[b+352>>2]|0;j=n+80|0;k=n+92|0;l=n+88|0;m=n+60|0;n=n+96|0;i=d+4|0;h=c[d>>2]|0;a:while(1){switch(a[h>>0]|0){case 0:{e=1;break a}case 58:{g=c[d>>2]|0;while(1){e=c[k>>2]|0;f=(e|0)==(c[l>>2]|0);if((g|0)==(h|0))break;if(f){if(!((eW(j)|0)<<24>>24)){e=0;break a}e=c[k>>2]|0}f=a[g>>0]|0;c[k>>2]=e+1;a[e>>0]=f;g=g+1|0}if(f){if(!((eW(j)|0)<<24>>24)){e=0;break a}e=c[k>>2]|0}c[k>>2]=e+1;a[e>>0]=0;e=YV(b,m,c[n>>2]|0,8)|0;if(!e){e=0;break a}f=c[n>>2]|0;if((c[e>>2]|0)==(f|0))c[n>>2]=c[k>>2];else c[k>>2]=f;c[i>>2]=e;break}default:{}}h=h+1|0}return e|0}function DW(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;k=a[f>>0]|0;i=c[d>>2]|0;h=(i|0)==0;do if(!(k<<24>>24))if(h){m=0;j=11}else h=28;else if(((!h?(a[i>>0]|0)==120:0)?(a[i+1>>0]|0)==109:0)?(a[i+2>>0]|0)==108:0){h=a[i+3>>0]|0;if((h<<24>>24==110?(a[i+4>>0]|0)==115:0)?(a[i+5>>0]|0)==0:0){h=39;break}m=h<<24>>24==0&1;j=11}else{m=0;j=11}while(0);a:do if((j|0)==11){l=m<<24>>24!=0;h=1;i=1;n=0;while(1){j=i<<24>>24!=0;if(!(k<<24>>24))break;do if(j){if((n|0)<=36?k<<24>>24==(a[139175+n>>0]|0):0)break;i=0}else i=0;while(0);do if(!(l|h<<24>>24==0)){if((n|0)<=29?k<<24>>24==(a[139212+n>>0]|0):0)break;h=0}while(0);k=n+1|0;n=k;k=a[f+k>>0]|0}if((m&255|0)!=(j&(n|0)==36&1|0)){h=l?38:40;break}if(!(h<<24>>24!=0&(n|0)==29)){o=b+468|0;n=n+((a[o>>0]|0)!=0&1)|0;h=b+372|0;j=c[h>>2]|0;do if(!j){h=b+12|0;i=kb[c[h>>2]&63](28)|0;if(!i){h=1;break a}j=n+24|0;m=kb[c[h>>2]&63](j)|0;c[i+16>>2]=m;if(!m){tb[c[b+20>>2]&127](i);h=1;break a}else{c[i+24>>2]=j;j=i;break}}else{i=j+24|0;if((n|0)>(c[i>>2]|0)){k=j+16|0;l=n+24|0;m=lb[c[b+16>>2]&127](c[k>>2]|0,l)|0;if(!m){h=1;break a}c[k>>2]=m;c[i>>2]=l}c[h>>2]=c[j+4>>2]}while(0);c[j+20>>2]=n;i=j+16|0;F3(c[i>>2]|0,f|0,n|0)|0;h=a[o>>0]|0;if(h<<24>>24)a[(c[i>>2]|0)+(n+-1)>>0]=h;c[j>>2]=d;c[j+12>>2]=e;i=d+4|0;c[j+8>>2]=c[i>>2];if((a[f>>0]|0)==0?((c[b+352>>2]|0)+152|0)==(d|0):0)h=0;else h=j;c[i>>2]=h;c[j+4>>2]=c[g>>2];c[g>>2]=j;if((e|0)!=0?(p=c[b+100>>2]|0,(p|0)!=0):0){vb[p&127](c[b+4>>2]|0,c[d>>2]|0,c[i>>2]|0?f:0);h=0}else h=0}else h=40}while(0);return h|0}function EW(a,b){a=a|0;b=b|0;var d=0;d=b;c[d>>2]=0;c[d+4>>2]=0;b=b+8|0;c[b>>2]=KW(a)|0;c[b+4>>2]=0;return}function FW(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=b;g=c[d+4>>2]^1936682341;e=a;c[e>>2]=c[d>>2]^1886610805;c[e+4>>2]=g;e=b+8|0;g=e;d=c[g+4>>2]^1685025377;f=a+8|0;c[f>>2]=c[g>>2]^1852075885;c[f+4>>2]=d;f=b;b=c[f+4>>2]^1819895653;d=a+16|0;c[d>>2]=c[f>>2]^1852142177;c[d+4>>2]=b;d=c[e+4>>2]^1952801890;b=a+24|0;c[b>>2]=c[e>>2]^2037671283;c[b+4>>2]=d;c[a+40>>2]=a+32;b=a+48|0;c[b>>2]=0;c[b+4>>2]=0;return}function GW(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,A=0,B=0;n=e+f|0;o=b+40|0;p=b+40|0;q=b+32|0;r=b+33|0;s=b+34|0;t=b+35|0;h=b+36|0;i=b+37|0;j=b+38|0;k=b+39|0;l=b+24|0;m=b+48|0;f=e;do{while(1){g=c[o>>2]|0;if(f>>>0>=n>>>0){e=0;break}if(g>>>0>=p>>>0){e=1;break}e=a[f>>0]|0;c[o>>2]=g+1;a[g>>0]=e;f=f+1|0}if(g>>>0

    >>0)break;A=d[q>>0]|0;B=A3(d[r>>0]|0|0,0,8)|0;g=z;y=A3(d[s>>0]|0|0,0,16)|0;g=g|z;w=A3(d[t>>0]|0|0,0,24)|0;g=g|z|(d[h>>0]|0);u=A3(d[i>>0]|0|0,0,40)|0;g=g|z;x=A3(d[j>>0]|0|0,0,48)|0;g=g|z;v=A3(d[k>>0]|0|0,0,56)|0;v=B|A|y|w|u|x|v;g=g|z;x=l;u=g^c[x+4>>2];w=l;c[w>>2]=v^c[x>>2];c[w+4>>2]=u;JW(b,2);w=b;g=c[w+4>>2]^g;u=b;c[u>>2]=c[w>>2]^v;c[u+4>>2]=g;c[o>>2]=q;u=m;u=s3(c[u>>2]|0,c[u+4>>2]|0,8,0)|0;g=m;c[g>>2]=u;c[g+4>>2]=z}while(e);return}function HW(b){b=b|0;var c=0;c=0;while(1){if(!(a[b>>0]|0))break;c=c+1|0;b=b+1|0}return c|0}function IW(a){a=a|0;var b=0,e=0,f=0,g=0,h=0,i=0;f=a+32|0;h=(c[a+40>>2]|0)-f|0;e=a+48|0;e=s3(c[e>>2]|0,c[e+4>>2]|0,h|0,0)|0;e=A3(e|0,z|0,56)|0;b=z;switch(h<<24>>24|0){case 7:{e=A3(d[a+38>>0]|0|0,0,48)|0|e;b=z|b;g=3;break}case 6:{g=3;break}case 5:{g=4;break}case 4:{g=5;break}case 3:{g=6;break}case 2:{g=7;break}case 1:{g=8;break}default:{}}if((g|0)==3){h=A3(d[a+37>>0]|0|0,0,40)|0;e=h|e;b=z|b;g=4}if((g|0)==4){b=d[a+36>>0]|0|b;g=5}if((g|0)==5){h=A3(d[a+35>>0]|0|0,0,24)|0;e=h|e;b=z|b;g=6}if((g|0)==6){h=A3(d[a+34>>0]|0|0,0,16)|0;e=h|e;b=z|b;g=7}if((g|0)==7){h=A3(d[a+33>>0]|0|0,0,8)|0;b=z|b;e=h|e;g=8}if((g|0)==8)e=e|(d[f>>0]|0);h=a+24|0;i=h;g=c[i+4>>2]^b;f=h;c[f>>2]=c[i>>2]^e;c[f+4>>2]=g;JW(a,2);f=a;b=c[f+4>>2]^b;g=a;c[g>>2]=c[f>>2]^e;c[g+4>>2]=b;g=a+16|0;b=g;e=c[b+4>>2]|0;f=g;c[f>>2]=c[b>>2]^255;c[f+4>>2]=e;JW(a,4);f=a;a=a+8|0;z=c[a+4>>2]^c[f+4>>2]^c[g+4>>2]^c[h+4>>2];return c[a>>2]^c[f>>2]^c[g>>2]^c[h>>2]|0}function JW(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;e=a+8|0;f=a+24|0;g=a+16|0;d=0;while(1){if((d|0)>=(b|0))break;h=e;n=c[h>>2]|0;h=c[h+4>>2]|0;o=a;o=s3(c[o>>2]|0,c[o+4>>2]|0,n|0,h|0)|0;k=z;m=A3(n|0,h|0,13)|0;l=z;h=z3(n|0,h|0,51)|0;h=(m|h)^o;l=(l|z)^k;m=f;n=c[m>>2]|0;m=c[m+4>>2]|0;j=g;j=s3(c[j>>2]|0,c[j+4>>2]|0,n|0,m|0)|0;i=z;q=A3(n|0,m|0,16)|0;p=z;m=z3(n|0,m|0,48)|0;m=(q|m)^j;p=(p|z)^i;o=s3(k|0,o|0,m|0,p|0)|0;k=z;q=a;c[q>>2]=o;c[q+4>>2]=k;q=A3(m|0,p|0,21)|0;n=z;p=z3(m|0,p|0,43)|0;m=f;c[m>>2]=(q|p)^o;c[m+4>>2]=(n|z)^k;i=s3(j|0,i|0,h|0,l|0)|0;j=z;m=A3(h|0,l|0,17)|0;k=z;l=z3(h|0,l|0,47)|0;h=e;c[h>>2]=(m|l)^i;c[h+4>>2]=(k|z)^j;h=g;c[h>>2]=j;c[h+4>>2]=i;d=d+1|0}return}function KW(a){a=a|0;var b=0;while(1){b=c[a+472>>2]|0;if(!b)break;else a=b}return c[a+492>>2]|0}function LW(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0;L=l;l=l+16|0;I=L;J=L+4|0;K=c[b+352>>2]|0;o=d+16|0;p=d+40|0;q=b+144|0;r=b+284|0;s=e<<24>>24==0;t=h+12|0;v=h+16|0;w=h+8|0;x=d+44|0;y=d+64|0;z=b+436|0;A=b+452|0;B=b+448|0;C=(K+80|0)==(h|0);D=b+268|0;E=K+130|0;F=K+129|0;G=b+296|0;H=b+224|0;i=0;a:while(1){b:while(1){switch(ob[c[o>>2]&127](d,f,g,I)|0){case -4:{i=0;n=61;break a}case 0:{n=4;break a}case -1:{n=6;break a}case 6:{n=21;break b}case -3:{n=22;break b}case 7:case 39:{n=23;break b}case 10:{j=lb[c[p>>2]&127](d,f)|0;c:do if((j|0)<0)if((c[q>>2]|0)==(d|0)){c[r>>2]=f;j=1;i=14}else{j=1;i=14}else{if(s&(j|0)==32){k=c[t>>2]|0;if((c[v>>2]|0)==(k|0)){j=4;break}if((a[k+-1>>0]|0)==32){j=4;break}}m=gX(j,J)|0;k=0;while(1){if((k|0)>=(m|0)){j=0;break c}j=c[t>>2]|0;if((j|0)==(c[w>>2]|0)){if(!((eW(h)|0)<<24>>24)){j=1;i=1;break c}j=c[t>>2]|0}M=a[J+k>>0]|0;c[t>>2]=j+1;a[j>>0]=M;k=k+1|0}}while(0);switch(j&7){case 4:case 0:break b;default:{}}break}case 9:{j=c[y>>2]|0;j=(nb[c[x>>2]&63](d,f+j|0,(c[I>>2]|0)+(0-j)|0)|0)&255;if(j<<24>>24){n=31;break b}j=c[y>>2]|0;j=WV(z,d,f+j|0,(c[I>>2]|0)+(0-j)|0)|0;if(!j){i=1;n=61;break a}m=YV(b,K,j,0)|0;c[B>>2]=c[A>>2];do if(C){if(!(c[D>>2]|0))if(!m)break b;else break;if(!(a[E>>0]|0)){j=(m|0)!=0;if(!(a[F>>0]|0)){n=45;break}else{u=j;n=47;break}}else{j=(m|0)!=0;if(!(c[G>>2]|0)){n=45;break}else{u=j;n=47;break}}}else if(!(a[F>>0]|0))if(!m){i=11;n=61;break a}else{n=46;break}else{j=(m|0)!=0;if(!(a[E>>0]|0)){u=j;n=47;break}else{n=45;break}}while(0);if((n|0)==45)if(j)n=46;else{i=11;n=61;break a}else if((n|0)==47?(n=0,!u):0)break b;if((n|0)==46?(n=0,(a[m+34>>0]|0)==0):0){i=24;n=61;break a}k=m+32|0;if(a[k>>0]|0){n=49;break a}if(c[m+28>>2]|0){n=52;break a}j=c[m+4>>2]|0;if(!j){n=55;break a}m=j+(c[m+8>>2]|0)|0;a[k>>0]=1;m=LW(b,c[H>>2]|0,e,j,m,h)|0;a[k>>0]=0;j=(m|0)==0;if(j)break b;else{j=(j^1)&1;i=m}break}default:{n=58;break a}}if(j)break a}if((n|0)==21){n=0;if(!(cW(h,d,f,c[I>>2]|0)|0)){i=1;n=61;break}}else if((n|0)==22){c[I>>2]=f+(c[y>>2]|0);n=23}else if((n|0)==31){n=0;f=c[t>>2]|0;if((f|0)==(c[w>>2]|0)){if(!((eW(h)|0)<<24>>24)){i=1;n=61;break}f=c[t>>2]|0}c[t>>2]=f+1;a[f>>0]=j}do if((n|0)==23){n=0;f=c[t>>2]|0;if(s){if((c[v>>2]|0)==(f|0))break;if((a[f+-1>>0]|0)==32)break}if((f|0)==(c[w>>2]|0)){if(!((eW(h)|0)<<24>>24)){i=1;n=61;break a}f=c[t>>2]|0}c[t>>2]=f+1;a[f>>0]=32}while(0);f=c[I>>2]|0}if((n|0)==4)if((c[q>>2]|0)==(d|0)){c[r>>2]=c[I>>2];i=4;n=61}else{i=4;n=61}else if((n|0)==6)if((c[q>>2]|0)==(d|0)){c[r>>2]=f;i=4;n=61}else{i=4;n=61}else if((n|0)==49)if((c[q>>2]|0)==(d|0)){c[r>>2]=f;i=12;n=61}else{i=12;n=61}else if((n|0)==52)if((c[q>>2]|0)==(d|0)){c[r>>2]=f;i=15;n=61}else{i=15;n=61}else if((n|0)==55)if((c[q>>2]|0)==(d|0)){c[r>>2]=f;i=16;n=61}else{i=16;n=61}else if((n|0)==58)if((c[q>>2]|0)==(d|0)){c[r>>2]=f;i=23;n=61}else{i=23;n=61}l=L;return i|0}function MW(a){a=a|0;var b=0;b=a+8|0;return ((a|0)<1?0:(b|0)>0?b:0)|0}function NW(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=l;l=l+80|0;d=c+16|0;e=c;EW(a,e);FW(d,e);GW(d,b,HW(b)|0);b=IW(d)|0;l=c;return b|0}function OW(b,c){b=b|0;c=c|0;var d=0;while(1){d=a[b>>0]|0;if(d<<24>>24!=(a[c>>0]|0)){c=0;break}if(!(d<<24>>24)){c=1;break}c=c+1|0;b=b+1|0}return c|0}function PW(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=l;l=l+1040|0;i=k;f=c[b+124>>2]|0;a:do if(!f)e=18;else{e=0;while(1){if((e|0)==256)break;c[i+(e<<2)>>2]=-1;e=e+1|0}g=i+1028|0;c[g>>2]=0;j=i+1024|0;c[j>>2]=0;h=i+1032|0;c[h>>2]=0;do if(nb[f&63](c[b+244>>2]|0,d,i)|0){f=c[b+12>>2]|0;e=hX()|0;e=kb[f&63](e)|0;c[b+236>>2]=e;if(!e){e=c[h>>2]|0;if(!e)e=1;else{tb[e&127](c[j>>2]|0);e=1}}else{e=ob[(a[b+232>>0]<<24>>24?65:64)&127](e,i,c[g>>2]|0,c[j>>2]|0)|0;if(!e)break;c[b+240>>2]=c[j>>2];c[b+248>>2]=c[h>>2];c[b+144>>2]=e;e=0}break a}while(0);e=c[h>>2]|0;if(e|0)tb[e&127](c[j>>2]|0);e=18}while(0);l=k;return e|0}function QW(b,d){b=b|0;d=d|0;a[b+4>>0]=0;c[b+8>>2]=0;c[b+12>>2]=0;c[b>>2]=0;c[b+16>>2]=d;return}function RW(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;l=c[b+352>>2]|0;m=b+424|0;n=b+420|0;o=b+412|0;p=b+428|0;q=l+152|0;r=b+368|0;j=l+60|0;k=l+80|0;a:while(1){h=d;b:while(1){if(!(a[d>>0]|0)){d=1;break a}f=a[h>>0]|0;switch(f<<24>>24){case 0:case 12:{s=5;break b}case 61:break b;default:{}}e=c[m>>2]|0;if((e|0)==(c[n>>2]|0)){if(!((eW(o)|0)<<24>>24)){d=0;break a}e=c[m>>2]|0;f=a[h>>0]|0}c[m>>2]=e+1;a[e>>0]=f;h=h+1|0}if((s|0)==5){s=0;d=c[m>>2]|0;if((d|0)==(c[n>>2]|0)){if(!((eW(o)|0)<<24>>24)){d=0;break}d=c[m>>2]|0}c[m>>2]=d+1;a[d>>0]=0;d=YV(b,l,c[p>>2]|0,0)|0;if(d|0)a[d+32>>0]=1;d=(a[h>>0]|0)==0?h:h+1|0;c[m>>2]=c[p>>2];continue}d=c[m>>2]|0;if((c[p>>2]|0)==(d|0))f=q;else{if((d|0)==(c[n>>2]|0)){if(!((eW(o)|0)<<24>>24)){d=0;break}d=c[m>>2]|0}c[m>>2]=d+1;a[d>>0]=0;f=YV(b,j,c[p>>2]|0,8)|0;if(!f){d=0;break}e=c[f>>2]|0;i=c[p>>2]|0;d=i;if((e|0)==(i|0)){i=BW(k,e)|0;c[f>>2]=i;if(!i){d=0;break}d=c[p>>2]|0}c[m>>2]=d}c:while(1){i=h+1|0;e=a[i>>0]|0;g=(d|0)==(c[n>>2]|0);switch(e<<24>>24){case 0:case 12:break c;default:{}}if(g){if(!((eW(o)|0)<<24>>24)){d=0;break a}d=c[m>>2]|0;e=a[i>>0]|0}c[m>>2]=d+1;a[d>>0]=e;h=i;d=c[m>>2]|0}if(g){if(!((eW(o)|0)<<24>>24)){d=0;break}d=c[m>>2]|0}c[m>>2]=d+1;a[d>>0]=0;if(DW(b,f,0,c[p>>2]|0,r)|0){d=0;break}c[m>>2]=c[p>>2];d=(a[i>>0]|0)==0?i:h+2|0}return d|0}function SW(a,b){a=a|0;b=b|0;var d=0,e=0;if(a|0?(d=a+4|0,e=(c[d>>2]|0)==(c[a>>2]|0),c[a>>2]=b,e):0)c[d>>2]=b;return}function TW(a,b,d){a=a|0;b=b|0;d=d|0;if(a|0){c[a+52>>2]=b;c[a+56>>2]=d}return}function UW(a,b){a=a|0;b=b|0;if(a|0)c[a+60>>2]=b;return}function VW(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;g=(b|0)==0;a:do if(!(g|(e|0)<0)?!((d|0)==0&(e|0)!=0):0){h=b+476|0;switch(c[h>>2]|0){case 3:{c[b+280>>2]=33;g=0;break a}case 2:{c[b+280>>2]=36;g=0;break a}case 0:{if((c[b+472>>2]|0)==0?(WW(b)|0)<<24>>24==0:0){c[b+280>>2]=1;g=0;break a}break}default:{}}c[h>>2]=1;if(e|0){g=YW(b,e)|0;if(!g){g=0;break}F3(g|0,d|0,e|0)|0;g=ZW(b,e,f)|0;break}a[b+480>>0]=f;if(!f)g=1;else{g=b+24|0;j=c[g>>2]|0;d=b+292|0;c[d>>2]=j;f=c[b+28>>2]|0;c[b+40>>2]=f;e=b+276|0;f=ob[c[e>>2]&127](b,j,f,g)|0;c[b+280>>2]=f;if(f|0){c[b+288>>2]=c[b+284>>2];c[e>>2]=66;g=0;break}switch(c[h>>2]|0){case 3:{j=c[b+144>>2]|0;xb[c[j+48>>2]&31](j,c[d>>2]|0,c[g>>2]|0,b+404|0);c[d>>2]=c[g>>2];g=2;break a}case 1:case 0:{c[h>>2]=2;g=1;break a}default:{g=1;break a}}}}else i=3;while(0);if((i|0)==3)if(g)g=0;else{c[b+280>>2]=41;g=0}return g|0}function WW(b){b=b|0;var d=0;d=b+492|0;if(!(c[d>>2]|0))c[d>>2]=_W()|0;if(!(a[b+232>>0]|0))b=1;else b=RW(b,139242)|0;return b|0}function XW(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;return c[a+280>>2]|0}function YW(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;a:do if(!a)d=0;else{if((b|0)<0){c[a+280>>2]=1;d=0;break}switch(c[a+476>>2]|0){case 3:{c[a+280>>2]=33;d=0;break a}case 2:{c[a+280>>2]=36;d=0;break a}default:{m=a+32|0;j=c[m>>2]|0;n=a+28|0;e=c[n>>2]|0;d=e;if((j-e|0)>=(b|0))break a;p=a+24|0;k=c[p>>2]|0;i=e-k|0;e=i+b|0;if((e|0)<0){c[a+280>>2]=1;d=0;break a}l=a+8|0;f=c[l>>2]|0;q=f;g=k-q|0;h=(g|0)>1024;b=h?1024:g;e=b+e|0;do if((e|0)>(j-q|0)){d=j-k|0;d=(d|0)==0?1024:d;do d=d<<1;while((d|0)<(e|0)&(d|0)>0);if((d|0)<1){c[a+280>>2]=1;d=0;break a}e=kb[c[a+12>>2]&63](d)|0;if(!e){c[a+280>>2]=1;d=0;break a}c[m>>2]=e+d;d=c[p>>2]|0;if(!d){d=e+(c[n>>2]|0)|0;c[n>>2]=d;c[l>>2]=e;o=22;break}else{q=d;o=q-(c[l>>2]|0)|0;o=(o|0)<1024?o:1024;F3(e|0,d+(0-o)|0,(c[n>>2]|0)-q+o|0)|0;tb[c[a+20>>2]&127](c[l>>2]|0);c[l>>2]=e;d=e+((c[n>>2]|0)-(c[p>>2]|0))+o|0;c[n>>2]=d;e=e+o|0;o=22;break}}else if(h){e=g-b|0;G3(f|0,f+e|0,b+i|0)|0;e=0-e|0;d=(c[n>>2]|0)+e|0;c[n>>2]=d;e=(c[p>>2]|0)+e|0;o=22}while(0);if((o|0)==22)c[p>>2]=e;c[a+288>>2]=0;c[a+284>>2]=0;c[a+292>>2]=0;break a}}}while(0);return d|0}function ZW(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;a:do if(!b)d=0;else{f=b+476|0;switch(c[f>>2]|0){case 3:{c[b+280>>2]=33;d=0;break a}case 2:{c[b+280>>2]=36;d=0;break a}case 0:{if((c[b+472>>2]|0)==0?(WW(b)|0)<<24>>24==0:0){c[b+280>>2]=1;d=0;break a}break}default:{}}c[f>>2]=1;g=b+24|0;j=c[g>>2]|0;h=b+292|0;c[h>>2]=j;k=b+28|0;i=(c[k>>2]|0)+d|0;c[k>>2]=i;c[b+40>>2]=i;k=b+36|0;c[k>>2]=(c[k>>2]|0)+d;a[b+480>>0]=e;d=b+276|0;i=ob[c[d>>2]&127](b,j,i,g)|0;c[b+280>>2]=i;if(i|0){c[b+288>>2]=c[b+284>>2];c[d>>2]=66;d=0;break}switch(c[f>>2]|0){case 3:{d=2;break}case 1:case 0:{if(!e)d=1;else{c[f>>2]=2;d=1;break a}break}default:d=1}k=c[b+144>>2]|0;xb[c[k+48>>2]&31](k,c[h>>2]|0,c[g>>2]|0,b+404|0);c[h>>2]=c[g>>2]}while(0);return d|0}function _W(){var a=0,b=0,d=0;b=l;l=l+16|0;a=b;if(!($W(a)|0)){d=bX()|0;d=(H1()|0)^d;c[a>>2]=d;a=aX(139296,O(d,2147483647)|0)|0}else a=aX(139283,c[a>>2]|0)|0;l=b;return a|0}function $W(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;f=l;l=l+16|0;e=X_(139283,0,f)|0;if((e|0)<0)b=0;else{b=0;while(1){g=G1(e,a+b|0,4-b|0)|0;d=g+b|0;if((g|0)>0)if(d>>>0<4)b=d;else{b=1;break}if((c[(O_()|0)>>2]|0)!=4){b=0;break}}X0(e)|0}l=f;return b|0}function aX(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=l;l=l+16|0;e=f;d=Ta(139361)|0;if(d|0?(b$(d,139381)|0)==0:0){d=c[15686]|0;c[e>>2]=a;c[e+4>>2]=8;c[e+8>>2]=b;c[e+12>>2]=4;g1(d,139383,e)|0}l=f;return b|0}function bX(){var a=0,b=0;b=l;l=l+16|0;a=b;if(!(Ua(a|0,0)|0)){l=b;return c[a+4>>2]|0}else qa(139308,139330,819,139341);return 0}function cX(a){a=a|0;if(!a)a=41;else a=c[a+280>>2]|0;return a|0}function dX(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;if(!a)a=0;else{b=a+284|0;d=c[b>>2]|0;if(d|0?(e=a+292|0,f=c[e>>2]|0,d>>>0>=f>>>0):0){g=c[a+144>>2]|0;xb[c[g+48>>2]&31](g,f,d,a+404|0);c[e>>2]=c[b>>2]}a=(c[a+404>>2]|0)+1|0}return a|0}function eX(a){a=a|0;do switch(a|0){case 41:{a=139420;break}case 1:{a=140692;break}case 2:{a=140679;break}case 3:{a=140662;break}case 4:{a=140630;break}case 5:{a=140615;break}case 6:{a=140597;break}case 7:{a=140582;break}case 8:{a=140562;break}case 9:{a=140534;break}case 10:{a=140499;break}case 11:{a=140482;break}case 12:{a=140455;break}case 13:{a=140435;break}case 14:{a=140397;break}case 15:{a=140370;break}case 16:{a=140328;break}case 17:{a=140281;break}case 18:{a=140264;break}case 19:{a=140213;break}case 20:{a=140190;break}case 21:{a=140144;break}case 22:{a=140117;break}case 23:{a=140066;break}case 24:{a=140030;break}case 25:{a=139978;break}case 26:{a=139933;break}case 27:{a=139918;break}case 28:{a=139892;break}case 29:{a=139854;break}case 30:{a=139822;break}case 31:{a=139789;break}case 32:{a=139755;break}case 33:{a=139738;break}case 34:{a=139717;break}case 35:{a=139701;break}case 36:{a=139684;break}case 37:{a=139640;break}case 38:{a=139560;break}case 39:{a=139501;break}case 40:{a=139437;break}default:a=0}while(0);return a|0}function fX(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,i=0;e=c[b>>2]|0;f=0;a:while(1){if(e>>>0<=a>>>0)break;h=e+-1|0;g=d[h>>0]|0;do if((g&248|0)==240)if((f+1|0)>>>0>3){i=5;break a}else f=0;else{if((g&240|0)==224)if((f+1|0)>>>0>2){i=8;break a}else{f=0;break}if((g&224|0)==192)if((f+1|0)>>>0>1){i=11;break a}else{f=0;break}else if(!(g&128))break a;else break}while(0);e=h;f=f+1|0}if((i|0)==5)e=e+3|0;else if((i|0)==8)e=e+2|0;else if((i|0)==11)e=e+1|0;c[b>>2]=e;return}function gX(b,c){b=b|0;c=c|0;do if((b|0)>=0){if((b|0)<128){a[c>>0]=b;b=1;break}if((b|0)<2048){a[c>>0]=b>>>6|192;a[c+1>>0]=b&63|128;b=2;break}if((b|0)<65536){a[c>>0]=b>>>12|224;a[c+1>>0]=b>>>6&63|128;a[c+2>>0]=b&63|128;b=3;break}if((b|0)<1114112){a[c>>0]=b>>>18|240;a[c+1>>0]=b>>>12&63|128;a[c+2>>0]=b>>>6&63|128;a[c+3>>0]=b&63|128;b=4}else b=0}else b=0;while(0);return b|0}function hX(){return 1908}function iX(e,f,g,h){e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;i=0;while(1){if((i|0)==364){i=0;break}a[e+i>>0]=a[56472+i>>0]|0;i=i+1|0}a:while(1){if((i|0)>=128){j=5;break}switch(a[56544+i>>0]|0){case 0:case 28:break;default:if((c[f+(i<<2)>>2]|0)!=(i|0)){e=0;break a}}i=i+1|0}b:do if((j|0)==5){q=e+72|0;m=e+372|0;n=e+884|0;o=(g|0)==0;l=0;while(1){if((l|0)>=256)break;p=c[f+(l<<2)>>2]|0;do if((p|0)==-1){a[q+l>>0]=1;b[m+(l<<1)>>1]=-1;a[n+(l<<2)>>0]=1;a[n+(l<<2)+1>>0]=0}else{if((p|0)<0){if(o|(p|0)<-4){e=0;break b}a[q+l>>0]=3-p;a[n+(l<<2)>>0]=0;b[m+(l<<1)>>1]=0;break}if((p|0)<128){i=a[56544+p>>0]|0;switch(i<<24>>24){case 0:case 28:break;default:if((p|0)!=(l|0)){e=0;break b}}a[q+l>>0]=i;a[n+(l<<2)>>0]=1;a[n+(l<<2)+1>>0]=p;b[m+(l<<1)>>1]=(p|0)==0?-1:p&65535;break}if((jX(p)|0)<0){a[q+l>>0]=0;b[m+(l<<1)>>1]=-1;a[n+(l<<2)>>0]=1;a[n+(l<<2)+1>>0]=0;break}if((p|0)>65535){e=0;break b}i=p>>>8;j=p>>>5&7;k=1<<(p&31);if(!(c[56836+((d[140706+i>>0]<<3|j)<<2)>>2]&k))a[q+l>>0]=c[56836+((d[140962+i>>0]<<3|j)<<2)>>2]&k|0?26:28;else a[q+l>>0]=22;a[n+(l<<2)>>0]=gX(p,n+(l<<2)+1|0)|0;b[m+(l<<1)>>1]=p}while(0);l=l+1|0}c[e+368>>2]=h;c[e+364>>2]=g;if(!o){c[e+328>>2]=106;c[e+332>>2]=106;c[e+336>>2]=106;c[e+340>>2]=107;c[e+344>>2]=107;c[e+348>>2]=107;c[e+352>>2]=108;c[e+356>>2]=108;c[e+360>>2]=108}c[e+56>>2]=13;c[e+60>>2]=14}while(0);return e|0}function jX(b){b=b|0;var c=0;switch(b>>8|0){case 223:case 222:case 221:case 220:case 219:case 218:case 217:case 216:{b=-1;break}case 0:{if(!(a[56544+b>>0]|0))b=-1;else c=4;break}case 255:{if((b|1|0)==65535)b=-1;else c=4;break}default:c=4}return b|0}function kX(a,b){a=a|0;b=b|0;a=lb[c[a+364>>2]&127](c[a+368>>2]|0,b)|0;if(a>>>0>65535)a=0;else a=c[56836+(((d[140962+(a>>>8)>>0]|0)<<3|a>>>5&7)<<2)>>2]&1<<(a&31);return a|0}function lX(a,b){a=a|0;b=b|0;a=lb[c[a+364>>2]&127](c[a+368>>2]|0,b)|0;if(a>>>0>65535)a=0;else a=c[56836+(((d[140706+(a>>>8)>>0]|0)<<3|a>>>5&7)<<2)>>2]&1<<(a&31);return a|0}function mX(a,b){a=a|0;b=b|0;a=lb[c[a+364>>2]&127](c[a+368>>2]|0,b)|0;if(a>>>0>65535)a=1;else a=(jX(a)|0)>>>31;return a|0}function nX(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0;q=l;l=l+16|0;m=q;n=b+364|0;o=b+884|0;p=b+368|0;k=b+72|0;while(1){i=c[e>>2]|0;if((i|0)==(f|0)){h=0;break}r=d[i>>0]|0;j=o+(r<<2)+1|0;r=a[o+(r<<2)>>0]|0;b=r<<24>>24;if(!(r<<24>>24)){b=gX(lb[c[n>>2]&127](c[p>>2]|0,i)|0,m)|0;if((b|0)>(h-(c[g>>2]|0)|0)){h=2;break}i=c[e>>2]|0;j=m;i=i+((d[k+(d[i>>0]|0)>>0]|0)+-3)|0}else{if((h-(c[g>>2]|0)|0)<(b|0)){h=2;break}i=i+1|0}c[e>>2]=i;F3(c[g>>2]|0,j|0,b|0)|0;c[g>>2]=(c[g>>2]|0)+b}l=q;return h|0}function oX(a,e,f,g,h){a=a|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0;m=a+372|0;n=a+364|0;o=a+368|0;l=a+72|0;while(1){k=c[e>>2]|0;a=k>>>0>>0;i=c[g>>2]|0;if(!(a&i>>>0>>0))break;a=b[m+((d[k>>0]|0)<<1)>>1]|0;if(!(a<<16>>16)){a=(lb[c[n>>2]&127](c[o>>2]|0,k)|0)&65535;i=c[e>>2]|0;j=(d[l+(d[i>>0]|0)>>0]|0)+-3|0}else{j=1;i=k}c[e>>2]=i+j;k=c[g>>2]|0;c[g>>2]=k+2;b[k>>1]=a}return ((i|0)!=(h|0)|a^1?0:2)|0}function pX(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0;a:do if(e>>>0>>0){n=b+72|0;do switch(a[n+(d[e>>0]|0)>>0]|0){case 12:{h=QX(12,b,e+1|0,f,g)|0;break a}case 13:{h=QX(13,b,e+1|0,f,g)|0;break a}case 2:{h=e+1|0;if((f-h|0)<=0){h=-1;break a}switch(a[n+(d[h>>0]|0)>>0]|0){case 16:{h=RX(b,e+2|0,f,g)|0;break a}case 15:{h=MX(b,e+2|0,f,g)|0;break a}case 7:case 6:case 5:case 29:case 24:case 22:{c[g>>2]=e;h=29;break a}default:{c[g>>2]=h;h=0;break a}}}case 9:{if((e+1|0)==(f|0)){c[g>>2]=f;h=-15;break a}else k=3;break}case 10:case 21:{k=3;break}case 30:{h=GX(b,e+1|0,f,g)|0;break a}case 35:{c[g>>2]=e+1;h=38;break a}case 20:{c[g>>2]=e+1;h=25;break a}case 4:{i=e+1|0;h=f-i|0;if((h|0)<=0){h=-26;break a}if((a[i>>0]|0)==93){if((h|0)<=1){h=-1;break a}if((a[e+2>>0]|0)==62){c[g>>2]=e+3;h=34;break a}}c[g>>2]=i;h=26;break a}case 31:{c[g>>2]=e+1;h=23;break a}case 32:{h=e+1|0;if((f-h|0)<=0){h=-24;break a}switch(a[n+(d[h>>0]|0)>>0]|0){case 33:{c[g>>2]=e+2;h=36;break a}case 15:{c[g>>2]=e+2;h=35;break a}case 34:{c[g>>2]=e+2;h=37;break a}case 32:case 36:case 35:case 11:case 21:case 10:case 9:{c[g>>2]=h;h=24;break a}default:{c[g>>2]=h;h=0;break a}}}case 36:{c[g>>2]=e+1;h=21;break a}case 11:{c[g>>2]=e+1;h=17;break a}case 19:{h=SX(b,e+1|0,f,g)|0;break a}case 5:{if((f-e|0)<2){h=-2;break a}if(!(lb[c[b+340>>2]&127](b,e)|0))if(!(lb[c[b+328>>2]&127](b,e)|0)){c[g>>2]=e;h=0;break a}else{h=19;i=2}else{h=18;i=2}break}case 6:{if((f-e|0)<3){h=-2;break a}if(!(lb[c[b+344>>2]&127](b,e)|0))if(!(lb[c[b+332>>2]&127](b,e)|0)){c[g>>2]=e;h=0;break a}else{h=19;i=3}else{h=18;i=3}break}case 7:{if((f-e|0)<4){h=-2;break a}if(!(lb[c[b+348>>2]&127](b,e)|0))if(!(lb[c[b+336>>2]&127](b,e)|0)){c[g>>2]=e;h=0;break a}else{h=19;i=4}else{h=18;i=4}break}case 24:case 22:{h=18;i=1;break}case 23:case 27:case 26:case 25:{h=19;i=1;break}default:{c[g>>2]=e;h=0;break a}}while(0);if((k|0)==3){j=f;i=e;b:while(1){h=i;i=i+1|0;if((j-i|0)<=0){k=18;break}switch(a[n+(d[i>>0]|0)>>0]|0){case 10:case 21:continue b;case 9:break;default:{k=17;break b}}if((h+2|0)==(f|0)){k=17;break}}if((k|0)==17){c[g>>2]=i;h=15;break}else if((k|0)==18){c[g>>2]=i;h=15;break}}k=b+328|0;l=b+332|0;m=b+336|0;j=e+i|0;c:while(1){i=f-j|0;if((i|0)<=0){k=99;break}switch(a[n+(d[j>>0]|0)>>0]|0){case 29:{k=56;break c}case 10:case 9:case 21:case 30:case 20:case 36:case 35:case 32:case 11:{k=70;break c}case 34:{k=89;break c}case 33:{k=92;break c}case 15:{k=95;break c}case 27:case 26:case 25:case 24:case 22:{e=h;j=j+1|0;h=e;continue c}case 5:{if((i|0)<2){h=-2;break a}if(!(lb[c[k>>2]&127](b,j)|0)){k=60;break c}e=h;j=j+2|0;h=e;continue c}case 6:{if((i|0)<3){h=-2;break a}if(!(lb[c[l>>2]&127](b,j)|0)){k=64;break c}e=h;j=j+3|0;h=e;continue c}case 7:{if((i|0)<4){h=-2;break a}if(!(lb[c[m>>2]&127](b,j)|0)){k=68;break c}e=h;j=j+4|0;h=e;continue c}case 23:{i=j+1|0;switch(h&63){case 18:break;case 41:{h=19;j=i;continue c}default:{e=h;j=i;h=e;continue c}}h=f-i|0;if((h|0)<=0){h=-1;break a}switch(a[n+(d[i>>0]|0)>>0]|0){case 29:{k=74;break c}case 27:case 26:case 25:case 24:case 22:{h=41;j=j+2|0;continue c}case 5:{if((h|0)<2){h=-2;break a}if(!(lb[c[k>>2]&127](b,i)|0)){k=78;break c}h=41;j=j+3|0;continue c}case 6:{if((h|0)<3){h=-2;break a}if(!(lb[c[l>>2]&127](b,i)|0)){k=82;break c}h=41;j=j+4|0;continue c}case 7:{if((h|0)<4){h=-2;break a}if(!(lb[c[m>>2]&127](b,i)|0)){k=86;break c}h=41;j=j+5|0;continue c}default:{h=19;j=i;continue c}}}default:{k=98;break c}}}switch(k|0){case 56:{c[g>>2]=j;h=0;break a}case 60:{c[g>>2]=j;h=0;break a}case 64:{c[g>>2]=j;h=0;break a}case 68:{c[g>>2]=j;h=0;break a}case 70:{c[g>>2]=j;break a}case 74:{c[g>>2]=i;h=0;break a}case 78:{c[g>>2]=i;h=0;break a}case 82:{c[g>>2]=i;h=0;break a}case 86:{c[g>>2]=i;h=0;break a}case 89:if((h|0)==19){c[g>>2]=j;h=0;break a}else{c[g>>2]=j+1;h=32;break a}case 92:if((h|0)==19){c[g>>2]=j;h=0;break a}else{c[g>>2]=j+1;h=31;break a}case 95:if((h|0)==19){c[g>>2]=j;h=0;break a}else{c[g>>2]=j+1;h=30;break a}case 98:{c[g>>2]=j;h=0;break a}case 99:{h=0-h|0;break a}}}else h=-4;while(0);return h|0}function qX(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0;a:do if(e>>>0>>0){m=b+72|0;b:do switch(a[m+(d[e>>0]|0)>>0]|0){case 2:{h=JX(b,e+1|0,f,g)|0;break a}case 3:{h=FX(b,e+1|0,f,g)|0;break a}case 9:{h=e+1|0;if((f-h|0)<=0){h=-3;break a}c[g>>2]=(a[m+(d[h>>0]|0)>>0]|0)==10?e+2|0:h;h=7;break a}case 10:{c[g>>2]=e+1;h=7;break a}case 4:{i=e+1|0;if((f-i|0)<=0){h=-5;break a}if((a[i>>0]|0)==93){h=e+2|0;if((f-h|0)<=0){h=-5;break a}if((a[h>>0]|0)==62){c[g>>2]=h;h=0;break a}else h=f}else h=f;break}case 5:{h=f;if((h-e|0)<2){h=-2;break a}if(!(lb[c[b+352>>2]&127](b,e)|0)){i=e+2|0;break b}else{c[g>>2]=e;h=0;break a}}case 6:{h=f;if((h-e|0)<3){h=-2;break a}if(!(lb[c[b+356>>2]&127](b,e)|0)){i=e+3|0;break b}else{c[g>>2]=e;h=0;break a}}case 7:{h=f;if((h-e|0)<4){h=-2;break a}if(!(lb[c[b+360>>2]&127](b,e)|0)){i=e+4|0;break b}else{c[g>>2]=e;h=0;break a}}case 8:case 1:case 0:{c[g>>2]=e;h=0;break a}default:{i=e+1|0;h=f}}while(0);j=b+352|0;k=b+356|0;l=b+360|0;c:while(1){f=h-i|0;if((f|0)<=0){f=49;break}switch(a[m+(d[i>>0]|0)>>0]|0){case 10:case 9:case 8:case 1:case 0:case 2:case 3:{f=47;break c}case 5:{if((f|0)<2){f=32;break c}if(lb[c[j>>2]&127](b,i)|0){f=32;break c}i=i+2|0;continue c}case 6:{if((f|0)<3){f=36;break c}if(lb[c[k>>2]&127](b,i)|0){f=36;break c}i=i+3|0;continue c}case 7:{if((f|0)<4){f=40;break c}if(lb[c[l>>2]&127](b,i)|0){f=40;break c}i=i+4|0;continue c}case 4:{if((f|0)<=1){f=47;break c}e=i+1|0;if((a[e>>0]|0)!=93){i=e;continue c}if((f|0)<=2){f=47;break c}i=i+2|0;if((a[i>>0]|0)==62){f=46;break c}else{i=e;continue c}}default:{i=i+1|0;continue c}}}if((f|0)==32){c[g>>2]=i;h=6;break}else if((f|0)==36){c[g>>2]=i;h=6;break}else if((f|0)==40){c[g>>2]=i;h=6;break}else if((f|0)==46){c[g>>2]=i;h=0;break}else if((f|0)==47){c[g>>2]=i;h=6;break}else if((f|0)==49){c[g>>2]=i;h=6;break}}else h=-4;while(0);return h|0}function rX(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;a:do if(e>>>0>>0){l=b+72|0;b:do switch(a[l+(d[e>>0]|0)>>0]|0){case 4:{i=e+1|0;h=f;if((h-i|0)<=0){h=-1;break a}if((a[i>>0]|0)==93){f=e+2|0;if((h-f|0)<=0){h=-1;break a}if((a[f>>0]|0)==62){c[g>>2]=e+3;h=40;break a}}break}case 9:{h=e+1|0;if((f-h|0)<=0){h=-1;break a}c[g>>2]=(a[l+(d[h>>0]|0)>>0]|0)==10?e+2|0:h;h=7;break a}case 10:{c[g>>2]=e+1;h=7;break a}case 5:{h=f;if((h-e|0)<2){h=-2;break a}if(!(lb[c[b+352>>2]&127](b,e)|0)){i=e+2|0;break b}else{c[g>>2]=e;h=0;break a}}case 6:{h=f;if((h-e|0)<3){h=-2;break a}if(!(lb[c[b+356>>2]&127](b,e)|0)){i=e+3|0;break b}else{c[g>>2]=e;h=0;break a}}case 7:{h=f;if((h-e|0)<4){h=-2;break a}if(!(lb[c[b+360>>2]&127](b,e)|0)){i=e+4|0;break b}else{c[g>>2]=e;h=0;break a}}case 8:case 1:case 0:{c[g>>2]=e;h=0;break a}default:{i=e+1|0;h=f}}while(0);e=b+352|0;j=b+356|0;k=b+360|0;c:while(1){f=h-i|0;if((f|0)<=0){f=39;break}switch(a[l+(d[i>>0]|0)>>0]|0){case 4:case 10:case 9:case 8:case 1:case 0:{f=37;break c}case 5:{if((f|0)<2){f=30;break c}if(!(lb[c[e>>2]&127](b,i)|0))f=2;else{f=30;break c}break}case 6:{if((f|0)<3){f=33;break c}if(!(lb[c[j>>2]&127](b,i)|0))f=3;else{f=33;break c}break}case 7:{if((f|0)<4){f=36;break c}if(!(lb[c[k>>2]&127](b,i)|0))f=4;else{f=36;break c}break}default:f=1}i=i+f|0}if((f|0)==30){c[g>>2]=i;h=6;break}else if((f|0)==33){c[g>>2]=i;h=6;break}else if((f|0)==36){c[g>>2]=i;h=6;break}else if((f|0)==37){c[g>>2]=i;h=6;break}else if((f|0)==39){c[g>>2]=i;h=6;break}}else h=-4;while(0);return h|0}function sX(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;j=b+72|0;k=b+352|0;l=b+356|0;m=b+360|0;i=0;a:while(1){h=f-e|0;if((h|0)<=0){f=-1;break}switch(a[j+(d[e>>0]|0)>>0]|0){case 8:case 1:case 0:{n=16;break a}case 5:{if((h|0)<2){f=-2;break a}if(lb[c[k>>2]&127](b,e)|0){n=6;break a}h=i;e=e+2|0;i=h;continue a}case 6:{if((h|0)<3){f=-2;break a}if(lb[c[l>>2]&127](b,e)|0){n=10;break a}h=i;e=e+3|0;i=h;continue a}case 7:{if((h|0)<4){f=-2;break a}if(lb[c[m>>2]&127](b,e)|0){n=14;break a}h=i;e=e+4|0;i=h;continue a}case 2:{h=e+1|0;if((f-h|0)<=0){f=-1;break a}if((a[h>>0]|0)!=33){o=i;e=h;i=o;continue a}h=e+2|0;if((f-h|0)<=0){f=-1;break a}o=(a[h>>0]|0)==91;i=i+(o&1)|0;e=o?e+3|0:h;continue a}case 4:{h=e+1|0;if((f-h|0)<=0){f=-1;break a}if((a[h>>0]|0)!=93){o=i;e=h;i=o;continue a}h=e+2|0;if((f-h|0)<=0){f=-1;break a}if((a[h>>0]|0)!=62){o=i;e=h;i=o;continue a}e=e+3|0;if(!i){n=26;break a}i=i+-1|0;continue a}default:{o=i;e=e+1|0;i=o;continue a}}}if((n|0)==6){c[g>>2]=e;f=0}else if((n|0)==10){c[g>>2]=e;f=0}else if((n|0)==14){c[g>>2]=e;f=0}else if((n|0)==16){c[g>>2]=e;f=0}else if((n|0)==26){c[g>>2]=e;f=42}return f|0}function tX(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;do if(e>>>0>>0){k=f;if((k-e|0)>0){l=b+72|0;i=e;a:while(1){if((k-i|0)<=0){j=24;break}switch(a[l+(d[i>>0]|0)>>0]|0){case 3:{j=8;break a}case 2:{j=11;break a}case 10:{j=12;break a}case 9:{j=15;break a}case 21:{j=19;break a}case 5:{h=2;break}case 6:{h=3;break}case 7:{h=4;break}default:h=1}i=i+h|0}if((j|0)==8)if((i|0)==(e|0)){h=FX(b,e+1|0,f,g)|0;break}else{c[g>>2]=i;h=6;break}else if((j|0)==11){c[g>>2]=i;h=0;break}else if((j|0)==12)if((i|0)==(e|0)){c[g>>2]=e+1;h=7;break}else{c[g>>2]=i;h=6;break}else if((j|0)==15){if((i|0)!=(e|0)){c[g>>2]=i;h=6;break}h=e+1|0;if((k-h|0)<=0){h=-3;break}c[g>>2]=(a[l+(d[h>>0]|0)>>0]|0)==10?e+2|0:h;h=7;break}else if((j|0)==19)if((i|0)==(e|0)){c[g>>2]=e+1;h=39;break}else{c[g>>2]=i;h=6;break}else if((j|0)==24){c[g>>2]=i;h=6;break}}else h=-1}else h=-4;while(0);return h|0}function uX(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;do if(e>>>0>>0){k=f;if((k-e|0)>0){l=b+72|0;i=e;a:while(1){if((k-i|0)<=0){j=23;break}switch(a[l+(d[i>>0]|0)>>0]|0){case 3:{j=8;break a}case 30:{j=11;break a}case 10:{j=14;break a}case 9:{j=17;break a}case 5:{h=2;break}case 6:{h=3;break}case 7:{h=4;break}default:h=1}i=i+h|0}if((j|0)==8)if((i|0)==(e|0)){h=FX(b,e+1|0,f,g)|0;break}else{c[g>>2]=i;h=6;break}else if((j|0)==11)if((i|0)==(e|0)){h=GX(b,e+1|0,f,g)|0;h=(h|0)==22?0:h;break}else{c[g>>2]=i;h=6;break}else if((j|0)==14)if((i|0)==(e|0)){c[g>>2]=e+1;h=7;break}else{c[g>>2]=i;h=6;break}else if((j|0)==17){if((i|0)!=(e|0)){c[g>>2]=i;h=6;break}h=e+1|0;if((k-h|0)<=0){h=-3;break}c[g>>2]=(a[l+(d[h>>0]|0)>>0]|0)==10?e+2|0:h;h=7;break}else if((j|0)==23){c[g>>2]=i;h=6;break}}else h=-1}else h=-4;while(0);return h|0}function vX(b,c,d,e){b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0;f=d;b=c;while(1){c=a[e>>0]|0;if(!(c<<24>>24)){g=6;break}if((f-b|0)<1){b=0;break}if((a[b>>0]|0)!=c<<24>>24){b=0;break}e=e+1|0;b=b+1|0}if((g|0)==6)b=(b|0)==(d|0)&1;return b|0}function wX(b,c){b=b|0;c=c|0;var e=0,f=0;f=b+72|0;b=c;a:while(1){switch(a[f+(d[b>>0]|0)>>0]|0){case 5:{e=2;break}case 6:{e=3;break}case 7:{e=4;break}case 27:case 26:case 25:case 24:case 23:case 22:case 29:{e=1;break}default:break a}b=b+e|0}return b-c|0}function xX(b,c){b=b|0;c=c|0;b=b+72|0;a:while(1){switch(a[b+(d[c>>0]|0)>>0]|0){case 21:case 9:case 10:break;default:break a}c=c+1|0}return c|0}function yX(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;l=b+72|0;j=0;k=0;b=1;a:while(1){h=e+1|0;i=a[h>>0]|0;do switch(a[l+(i&255)>>0]|0){case 5:{if(!b)if((k|0)<(f|0)){c[g+(k<<4)>>2]=h;a[g+(k<<4)+12>>0]=1;b=1}else b=1;h=k;i=j;e=e+2|0;k=h;j=i;continue a}case 6:{if(!b)if((k|0)<(f|0)){c[g+(k<<4)>>2]=h;a[g+(k<<4)+12>>0]=1;b=1}else b=1;h=k;i=j;e=e+3|0;k=h;j=i;continue a}case 7:{if(!b)if((k|0)<(f|0)){c[g+(k<<4)>>2]=h;a[g+(k<<4)+12>>0]=1;b=1}else b=1;h=k;i=j;e=e+4|0;k=h;j=i;continue a}case 24:case 22:case 29:{if(b|0){o=b;n=k;i=j;e=h;b=o;k=n;j=i;continue a}if((k|0)>=(f|0)){n=k;o=j;b=1;e=h;k=n;j=o;continue a}c[g+(k<<4)>>2]=h;a[g+(k<<4)+12>>0]=1;n=k;o=j;b=1;e=h;k=n;j=o;continue a}case 12:{if((b|0)!=2){if((k|0)>=(f|0)){o=k;j=12;b=2;e=h;k=o;continue a}c[g+(k<<4)+4>>2]=e+2;o=k;j=12;b=2;e=h;k=o;continue a}if((j|0)!=12){n=k;o=j;b=2;e=h;k=n;j=o;continue a}if((k|0)<(f|0))c[g+(k<<4)+8>>2]=h;j=12;k=k+1|0;b=0;e=h;continue a}case 13:{if((b|0)!=2){if((k|0)>=(f|0)){o=k;j=13;b=2;e=h;k=o;continue a}c[g+(k<<4)+4>>2]=e+2;o=k;j=13;b=2;e=h;k=o;continue a}if((j|0)!=13){n=k;o=j;b=2;e=h;k=n;j=o;continue a}if((k|0)<(f|0))c[g+(k<<4)+8>>2]=h;j=13;k=k+1|0;b=0;e=h;continue a}case 3:{if((k|0)>=(f|0)){i=b;n=k;o=j;e=h;b=i;k=n;j=o;continue a}a[g+(k<<4)+12>>0]=0;i=b;n=k;o=j;e=h;b=i;k=n;j=o;continue a}case 21:{switch(b|0){case 1:{n=k;o=j;b=0;e=h;k=n;j=o;continue a}case 2:break;default:{i=b;n=k;o=j;e=h;b=i;k=n;j=o;continue a}}if((k|0)>=(f|0)){n=k;o=j;b=2;e=h;k=n;j=o;continue a}b=g+(k<<4)+12|0;if(!(a[b>>0]|0)){n=k;o=j;b=2;e=h;k=n;j=o;continue a}if(((i<<24>>24==32?(h|0)!=(c[g+(k<<4)+4>>2]|0):0)?(m=a[e+2>>0]|0,m<<24>>24!=32):0)?(j|0)!=(d[l+(m&255)>>0]|0):0){n=k;o=j;b=2;e=h;k=n;j=o;continue a}a[b>>0]=0;n=k;o=j;b=2;e=h;k=n;j=o;continue a}case 10:case 9:{switch(b|0){case 1:{n=k;o=j;b=0;e=h;k=n;j=o;continue a}case 2:break;default:{i=b;n=k;o=j;e=h;b=i;k=n;j=o;continue a}}if((k|0)>=(f|0)){n=k;o=j;b=2;e=h;k=n;j=o;continue a}a[g+(k<<4)+12>>0]=0;n=k;o=j;b=2;e=h;k=n;j=o;continue a}case 17:case 11:if((b|0)==2){n=k;o=j;b=2;e=h;k=n;j=o;continue a}else break a;default:{i=b;n=k;o=j;e=h;b=i;k=n;j=o;continue a}}while(0)}return k|0}function zX(b,c){b=b|0;c=c|0;var d=0,e=0;b=c+2|0;d=a[b>>0]|0;a:do if(d<<24>>24==120){d=c+3|0;b=0;while(1){b:while(1){e=a[d>>0]|0;c=e<<24>>24;if(e<<24>>24==59){e=14;break a}switch(c|0){case 57:case 56:case 55:case 54:case 53:case 52:case 51:case 50:case 49:case 48:{e=7;break b}case 70:case 69:case 68:case 67:case 66:case 65:{e=8;break b}case 102:case 101:case 100:case 99:case 98:case 97:{e=9;break b}default:{}}d=d+1|0}if((e|0)==7){e=0;b=c+-48|b<<4}else if((e|0)==8){e=0;b=(b<<4)+-55+c|0}else if((e|0)==9){e=0;b=(b<<4)+-87+c|0}if((b|0)<1114112)d=d+1|0;else{b=-1;break}}}else{c=b;b=0;while(1){if(d<<24>>24==59){e=14;break a}b=(d<<24>>24)+-48+(b*10|0)|0;if((b|0)>=1114112){b=-1;break a}d=c+1|0;c=d;d=a[d>>0]|0}}while(0);if((e|0)==14)b=jX(b)|0;return b|0}function AX(b,c,d){b=b|0;c=c|0;d=d|0;var e=0;a:do switch(d-c|0){case 2:{if((a[c+1>>0]|0)==116){b=a[c>>0]|0;b=b<<24>>24==108?60:b<<24>>24==103?62:0}else e=14;break}case 3:{if(((a[c>>0]|0)==97?(a[c+1>>0]|0)==109:0)?(a[c+2>>0]|0)==112:0)b=38;else e=14;break}case 4:switch(a[c>>0]|0){case 113:{if((a[c+1>>0]|0)!=117){e=14;break a}if((a[c+2>>0]|0)!=111){e=14;break a}if((a[c+3>>0]|0)==116){b=34;break a}else{e=14;break a}}case 97:{if((a[c+1>>0]|0)!=112){e=14;break a}if((a[c+2>>0]|0)!=111){e=14;break a}if((a[c+3>>0]|0)==115){b=39;break a}else{e=14;break a}}default:{e=14;break a}}default:e=14}while(0);if((e|0)==14)b=0;return b|0}function BX(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=b+72|0;i=g+4|0;while(1){if((f-e|0)<=0)break;switch(a[h+(d[e>>0]|0)>>0]|0){case 5:{e=e+2|0;break}case 6:{e=e+3|0;break}case 7:{e=e+4|0;break}case 10:{c[i>>2]=-1;c[g>>2]=(c[g>>2]|0)+1;e=e+1|0;break}case 9:{c[g>>2]=(c[g>>2]|0)+1;b=e+1|0;if((f-b|0)>0)e=(a[h+(d[b>>0]|0)>>0]|0)==10?e+2|0:b;else e=b;c[i>>2]=-1;break}default:e=e+1|0}c[i>>2]=(c[i>>2]|0)+1}return}function CX(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;g=e+-1|0;b=b+72|0;a:while(1){d=d+1|0;if((g-d|0)<=0){d=1;break}e=a[d>>0]|0;switch(a[b+(e&255)>>0]|0){case 23:case 19:case 30:case 33:case 16:case 18:case 10:case 9:case 15:case 14:case 17:case 35:case 34:case 32:case 31:case 13:case 27:case 24:case 25:continue a;case 21:if(e<<24>>24==9){h=7;break a}else continue a;case 22:case 26:{if(e<<24>>24>=0)continue a;break}default:{}}switch(e<<24>>24|0){case 64:case 36:break;default:{h=7;break a}}}if((h|0)==7){c[f>>2]=d;d=0}return d|0}function DX(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0;i=h;while(1){j=c[e>>2]|0;if((j|0)==(f|0)){b=0;break}k=d[j>>0]|0;b=c[g>>2]|0;if(!(k&128)){if((b|0)==(h|0)){b=2;break}c[e>>2]=j+1;j=a[j>>0]|0;k=c[g>>2]|0;c[g>>2]=k+1;a[k>>0]=j;continue}else{if((i-b|0)<2){b=2;break}c[g>>2]=b+1;a[b>>0]=k>>>6|192;j=c[g>>2]|0;c[g>>2]=j+1;a[j>>0]=k&63|128;c[e>>2]=(c[e>>2]|0)+1;continue}}return b|0}function EX(a,e,f,g,h){a=a|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0;while(1){a=c[e>>2]|0;i=a>>>0>>0;j=c[g>>2]|0;if(!(i&j>>>0>>0))break;c[e>>2]=a+1;i=d[a>>0]|0;j=c[g>>2]|0;c[g>>2]=j+2;b[j>>1]=i}return ((j|0)!=(h|0)|i^1?0:2)|0}function FX(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;k=f;h=k-e|0;a:do if((h|0)>0){l=b+72|0;switch(a[l+(d[e>>0]|0)>>0]|0){case 29:{c[g>>2]=e;f=0;break a}case 24:case 22:{f=1;break}case 5:{if((h|0)<2){f=-2;break a}if(!(lb[c[b+340>>2]&127](b,e)|0)){c[g>>2]=e;f=0;break a}else f=2;break}case 6:{if((h|0)<3){f=-2;break a}if(!(lb[c[b+344>>2]&127](b,e)|0)){c[g>>2]=e;f=0;break a}else f=3;break}case 7:{if((h|0)<4){f=-2;break a}if(!(lb[c[b+348>>2]&127](b,e)|0)){c[g>>2]=e;f=0;break a}else f=4;break}case 19:{f=HX(b,e+1|0,f,g)|0;break a}default:{c[g>>2]=e;f=0;break a}}h=b+328|0;i=b+332|0;j=b+336|0;e=e+f|0;b:while(1){f=k-e|0;if((f|0)<=0){f=-1;break a}switch(a[l+(d[e>>0]|0)>>0]|0){case 29:{h=18;break b}case 18:{h=29;break b}case 27:case 26:case 25:case 24:case 22:{f=1;break}case 5:{if((f|0)<2){f=-2;break a}if(!(lb[c[h>>2]&127](b,e)|0)){h=21;break b}else f=2;break}case 6:{if((f|0)<3){f=-2;break a}if(!(lb[c[i>>2]&127](b,e)|0)){h=24;break b}else f=3;break}case 7:{if((f|0)<4){f=-2;break a}if(!(lb[c[j>>2]&127](b,e)|0)){h=27;break b}else f=4;break}default:{h=30;break b}}e=e+f|0}if((h|0)==18){c[g>>2]=e;f=0;break}else if((h|0)==21){c[g>>2]=e;f=0;break}else if((h|0)==24){c[g>>2]=e;f=0;break}else if((h|0)==27){c[g>>2]=e;f=0;break}else if((h|0)==29){c[g>>2]=e+1;f=9;break}else if((h|0)==30){c[g>>2]=e;f=0;break}}else f=-1;while(0);return f|0}function GX(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;h=f-e|0;a:do if((h|0)>0){l=b+72|0;switch(a[l+(d[e>>0]|0)>>0]|0){case 29:{c[g>>2]=e;f=0;break a}case 24:case 22:{h=1;break}case 5:{if((h|0)<2){f=-2;break a}if(!(lb[c[b+340>>2]&127](b,e)|0)){c[g>>2]=e;f=0;break a}else h=2;break}case 6:{if((h|0)<3){f=-2;break a}if(!(lb[c[b+344>>2]&127](b,e)|0)){c[g>>2]=e;f=0;break a}else h=3;break}case 7:{if((h|0)<4){f=-2;break a}if(!(lb[c[b+348>>2]&127](b,e)|0)){c[g>>2]=e;f=0;break a}else h=4;break}case 30:case 9:case 10:case 21:{c[g>>2]=e;f=22;break a}default:{c[g>>2]=e;f=0;break a}}i=b+328|0;j=b+332|0;k=b+336|0;e=e+h|0;b:while(1){h=f-e|0;if((h|0)<=0){f=-1;break a}switch(a[l+(d[e>>0]|0)>>0]|0){case 29:{h=18;break b}case 18:{h=29;break b}case 27:case 26:case 25:case 24:case 22:{h=1;break}case 5:{if((h|0)<2){f=-2;break a}if(!(lb[c[i>>2]&127](b,e)|0)){h=21;break b}else h=2;break}case 6:{if((h|0)<3){f=-2;break a}if(!(lb[c[j>>2]&127](b,e)|0)){h=24;break b}else h=3;break}case 7:{if((h|0)<4){f=-2;break a}if(!(lb[c[k>>2]&127](b,e)|0)){h=27;break b}else h=4;break}default:{h=30;break b}}e=e+h|0}if((h|0)==18){c[g>>2]=e;f=0;break}else if((h|0)==21){c[g>>2]=e;f=0;break}else if((h|0)==24){c[g>>2]=e;f=0;break}else if((h|0)==27){c[g>>2]=e;f=0;break}else if((h|0)==29){c[g>>2]=e+1;f=28;break}else if((h|0)==30){c[g>>2]=e;f=0;break}}else f=-1;while(0);return f|0}function HX(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;i=f;a:do if((i-e|0)>0){h=a[e>>0]|0;if(h<<24>>24==120){b=IX(b,e+1|0,f,g)|0;break}f=b+72|0;if((a[f+(h&255)>>0]|0)!=25){c[g>>2]=e;b=0;break}b:while(1){b=e+1|0;if((i-b|0)<=0){b=-1;break a}switch(a[f+(d[b>>0]|0)>>0]|0){case 25:{e=b;break}case 18:{f=8;break b}default:{f=9;break b}}}if((f|0)==8){c[g>>2]=e+2;b=10;break}else if((f|0)==9){c[g>>2]=b;b=0;break}}else b=-1;while(0);return b|0}function IX(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0;a:do if((f-e|0)>0){b=b+72|0;if((a[b+(d[e>>0]|0)>>0]&-2)<<24>>24!=24){c[g>>2]=e;f=0;break}b:while(1){h=e+1|0;if((f-h|0)<=0){f=-1;break a}switch(a[b+(d[h>>0]|0)>>0]|0){case 24:case 25:{e=h;break}case 18:{b=6;break b}default:{b=7;break b}}}if((b|0)==6){c[g>>2]=e+2;f=10;break}else if((b|0)==7){c[g>>2]=h;f=0;break}}else f=-1;while(0);return f|0}function JX(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;q=f;h=q-e|0;a:do if((h|0)>0){p=b+72|0;switch(a[p+(d[e>>0]|0)>>0]|0){case 29:{c[g>>2]=e;h=0;break a}case 24:case 22:{h=1;break}case 5:{if((h|0)<2){h=-2;break a}if(!(lb[c[b+340>>2]&127](b,e)|0)){c[g>>2]=e;h=0;break a}else h=2;break}case 6:{if((h|0)<3){h=-2;break a}if(!(lb[c[b+344>>2]&127](b,e)|0)){c[g>>2]=e;h=0;break a}else h=3;break}case 7:{if((h|0)<4){h=-2;break a}if(!(lb[c[b+348>>2]&127](b,e)|0)){c[g>>2]=e;h=0;break a}else h=4;break}case 16:{h=e+1|0;if((q-h|0)<=0){h=-1;break a}switch(a[p+(d[h>>0]|0)>>0]|0){case 27:{h=KX(b,e+2|0,f,g)|0;break a}case 20:{h=LX(e+2|0,f,g)|0;break a}default:{c[g>>2]=h;h=0;break a}}}case 15:{h=MX(b,e+1|0,f,g)|0;break a}case 17:{h=NX(b,e+1|0,f,g)|0;break a}default:{c[g>>2]=e;h=0;break a}}j=b+328|0;k=b+332|0;l=b+336|0;m=b+340|0;n=b+344|0;o=b+348|0;i=0;h=e+h|0;b:while(1){e=q-h|0;if((e|0)<=0){h=-1;break a}c:do switch(a[p+(d[h>>0]|0)>>0]|0){case 29:{r=24;break b}case 10:case 9:case 21:{r=50;break b}case 11:{r=64;break b}case 17:break b;case 27:case 26:case 25:case 24:case 22:{e=1;break}case 5:{if((e|0)<2){h=-2;break a}if(!(lb[c[j>>2]&127](b,h)|0)){r=27;break b}else e=2;break}case 6:{if((e|0)<3){h=-2;break a}if(!(lb[c[k>>2]&127](b,h)|0)){r=30;break b}else e=3;break}case 7:{if((e|0)<4){h=-2;break a}if(!(lb[c[l>>2]&127](b,h)|0)){r=33;break b}else e=4;break}case 23:{if(i|0){r=35;break b}i=h+1|0;e=q-i|0;if((e|0)<=0){h=-1;break a}switch(a[p+(d[i>>0]|0)>>0]|0){case 29:{r=38;break b}case 24:case 22:{i=1;e=2;break c}case 5:{if((e|0)<2){h=-2;break a}if(!(lb[c[m>>2]&127](b,i)|0)){r=42;break b}else{i=1;e=3;break c}}case 6:{if((e|0)<3){h=-2;break a}if(!(lb[c[n>>2]&127](b,i)|0)){r=45;break b}else{i=1;e=4;break c}}case 7:{if((e|0)<4){h=-2;break a}if(!(lb[c[o>>2]&127](b,i)|0)){r=48;break b}else{i=1;e=5;break c}}default:{r=49;break b}}}default:{r=69;break b}}while(0);h=h+e|0}d:switch(r|0){case 24:{c[g>>2]=h;h=0;break a}case 27:{c[g>>2]=h;h=0;break a}case 30:{c[g>>2]=h;h=0;break a}case 33:{c[g>>2]=h;h=0;break a}case 35:{c[g>>2]=h;h=0;break a}case 38:{c[g>>2]=i;h=0;break a}case 42:{c[g>>2]=i;h=0;break a}case 45:{c[g>>2]=i;h=0;break a}case 48:{c[g>>2]=i;h=0;break a}case 49:{c[g>>2]=i;h=0;break a}case 50:{e:while(1){r=0;i=h+1|0;e=q-i|0;if((e|0)<=0){h=-1;break a}switch(a[p+(d[i>>0]|0)>>0]|0){case 11:{h=i;r=64;break d}case 17:{h=i;break d}case 10:case 9:case 21:{h=i;r=50;break}case 29:{r=52;break e}case 24:case 22:{i=2;break e}case 5:{r=53;break e}case 6:{r=56;break e}case 7:{r=59;break e}default:{r=62;break e}}}if((r|0)==52){c[g>>2]=i;h=0;break a}else if((r|0)==53){if((e|0)<2){h=-2;break a}if(!(lb[c[m>>2]&127](b,i)|0)){c[g>>2]=i;h=0;break a}else i=3}else if((r|0)==56){if((e|0)<3){h=-2;break a}if(!(lb[c[n>>2]&127](b,i)|0)){c[g>>2]=i;h=0;break a}else i=4}else if((r|0)==59){if((e|0)<4){h=-2;break a}if(!(lb[c[o>>2]&127](b,i)|0)){c[g>>2]=i;h=0;break a}else i=5}else if((r|0)==62){c[g>>2]=i;h=0;break a}h=OX(b,h+i|0,f,g)|0;break a}case 69:{c[g>>2]=h;h=0;break a}}if((r|0)==64){c[g>>2]=h+1;h=2;break}i=h+1|0;if((q-i|0)>0)if((a[i>>0]|0)==62){c[g>>2]=h+2;h=4;break}else{c[g>>2]=i;h=0;break}else h=-1}else h=-1;while(0);return h|0}function KX(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;a:do if((f-e|0)>0){if((a[e>>0]|0)!=45){c[g>>2]=e;f=0;break}h=b+72|0;i=b+352|0;j=b+356|0;k=b+360|0;l=e+1|0;b:while(1){e=f-l|0;if((e|0)<=0){f=-1;break a}switch(a[h+(d[l>>0]|0)>>0]|0){case 8:case 1:case 0:{e=19;break b}case 5:{if((e|0)<2){f=-2;break a}if(lb[c[i>>2]&127](b,l)|0){e=9;break b}l=l+2|0;continue b}case 6:{if((e|0)<3){f=-2;break a}if(lb[c[j>>2]&127](b,l)|0){e=13;break b}l=l+3|0;continue b}case 7:{if((e|0)<4){f=-2;break a}if(lb[c[k>>2]&127](b,l)|0){e=17;break b}l=l+4|0;continue b}case 27:{e=l+1|0;if((f-e|0)<=0){f=-1;break a}if((a[e>>0]|0)==45){e=22;break b}else{l=e;continue b}}default:{l=l+1|0;continue b}}}if((e|0)==9){c[g>>2]=l;f=0;break}else if((e|0)==13){c[g>>2]=l;f=0;break}else if((e|0)==17){c[g>>2]=l;f=0;break}else if((e|0)==19){c[g>>2]=l;f=0;break}else if((e|0)==22){e=l+2|0;if((f-e|0)<=0){f=-1;break}if((a[e>>0]|0)==62){c[g>>2]=l+3;f=13;break}else{c[g>>2]=e;f=0;break}}}else f=-1;while(0);return f|0}function LX(b,d,e){b=b|0;d=d|0;e=e|0;if((d-b|0)>5){d=0;while(1){if((d|0)>=6){d=8;break}if((a[b>>0]|0)!=(a[141218+d>>0]|0)){d=0;break}d=d+1|0;b=b+1|0}c[e>>2]=b}else d=-1;return d|0}function MX(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;q=l;l=l+16|0;p=q;o=f;f=o-e|0;a:do if((f|0)>0){n=b+72|0;switch(a[n+(d[e>>0]|0)>>0]|0){case 29:{c[g>>2]=e;f=0;break a}case 24:case 22:{f=1;break}case 5:{if((f|0)<2){f=-2;break a}if(!(lb[c[b+340>>2]&127](b,e)|0)){c[g>>2]=e;f=0;break a}else f=2;break}case 6:{if((f|0)<3){f=-2;break a}if(!(lb[c[b+344>>2]&127](b,e)|0)){c[g>>2]=e;f=0;break a}else f=3;break}case 7:{if((f|0)<4){f=-2;break a}if(!(lb[c[b+348>>2]&127](b,e)|0)){c[g>>2]=e;f=0;break a}else f=4;break}default:{c[g>>2]=e;f=0;break a}}i=b+328|0;j=b+332|0;k=b+336|0;f=e+f|0;b:while(1){h=o-f|0;if((h|0)<=0){f=-1;break a}switch(a[n+(d[f>>0]|0)>>0]|0){case 29:{m=17;break b}case 10:case 9:case 21:{m=28;break b}case 15:{m=50;break b}case 27:case 26:case 25:case 24:case 22:{h=1;break}case 5:{if((h|0)<2){f=-2;break a}if(!(lb[c[i>>2]&127](b,f)|0)){m=20;break b}else h=2;break}case 6:{if((h|0)<3){f=-2;break a}if(!(lb[c[j>>2]&127](b,f)|0)){m=23;break b}else h=3;break}case 7:{if((h|0)<4){f=-2;break a}if(!(lb[c[k>>2]&127](b,f)|0)){m=26;break b}else h=4;break}default:break b}f=f+h|0}if((m|0)==17){c[g>>2]=f;f=0;break}else if((m|0)==20){c[g>>2]=f;f=0;break}else if((m|0)==23){c[g>>2]=f;f=0;break}else if((m|0)==26){c[g>>2]=f;f=0;break}else if((m|0)==28){if(!(PX(e,f,p)|0)){c[g>>2]=f;f=0;break}i=b+352|0;j=b+356|0;k=b+360|0;h=f+1|0;c:while(1){f=o-h|0;if((f|0)<=0){f=-1;break a}switch(a[n+(d[h>>0]|0)>>0]|0){case 8:case 1:case 0:{m=45;break c}case 5:{if((f|0)<2){f=-2;break a}if(lb[c[i>>2]&127](b,h)|0){m=35;break c}h=h+2|0;continue c}case 6:{if((f|0)<3){f=-2;break a}if(lb[c[j>>2]&127](b,h)|0){m=39;break c}h=h+3|0;continue c}case 7:{if((f|0)<4){f=-2;break a}if(lb[c[k>>2]&127](b,h)|0){m=43;break c}h=h+4|0;continue c}case 15:{f=h+1|0;if((o-f|0)<=0){f=-1;break a}if((a[f>>0]|0)==62){m=48;break c}else{h=f;continue c}}default:{h=h+1|0;continue c}}}if((m|0)==35){c[g>>2]=h;f=0;break}else if((m|0)==39){c[g>>2]=h;f=0;break}else if((m|0)==43){c[g>>2]=h;f=0;break}else if((m|0)==45){c[g>>2]=h;f=0;break}else if((m|0)==48){c[g>>2]=h+2;f=c[p>>2]|0;break}}else if((m|0)==50){if(!(PX(e,f,p)|0)){c[g>>2]=f;f=0;break}h=f+1|0;if((o-h|0)<=0){f=-1;break}if((a[h>>0]|0)==62){c[g>>2]=f+2;f=c[p>>2]|0;break}else f=h}c[g>>2]=f;f=0}else f=-1;while(0);l=q;return f|0}function NX(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;h=f-e|0;a:do if((h|0)>0){l=b+72|0;switch(a[l+(d[e>>0]|0)>>0]|0){case 29:{c[g>>2]=e;f=0;break a}case 24:case 22:{h=1;break}case 5:{if((h|0)<2){f=-2;break a}if(!(lb[c[b+340>>2]&127](b,e)|0)){c[g>>2]=e;f=0;break a}else h=2;break}case 6:{if((h|0)<3){f=-2;break a}if(!(lb[c[b+344>>2]&127](b,e)|0)){c[g>>2]=e;f=0;break a}else h=3;break}case 7:{if((h|0)<4){f=-2;break a}if(!(lb[c[b+348>>2]&127](b,e)|0)){c[g>>2]=e;f=0;break a}else h=4;break}default:{c[g>>2]=e;f=0;break a}}i=b+328|0;j=b+332|0;k=b+336|0;h=e+h|0;b:while(1){e=f-h|0;if((e|0)<=0){f=-1;break a}switch(a[l+(d[h>>0]|0)>>0]|0){case 29:{i=17;break b}case 10:case 9:case 21:{i=27;break b}case 11:{i=32;break b}case 23:case 27:case 26:case 25:case 24:case 22:{e=1;break}case 5:{if((e|0)<2){f=-2;break a}if(!(lb[c[i>>2]&127](b,h)|0)){i=20;break b}else e=2;break}case 6:{if((e|0)<3){f=-2;break a}if(!(lb[c[j>>2]&127](b,h)|0)){i=23;break b}else e=3;break}case 7:{if((e|0)<4){f=-2;break a}if(!(lb[c[k>>2]&127](b,h)|0)){i=26;break b}else e=4;break}default:{i=33;break b}}h=h+e|0}if((i|0)==17){c[g>>2]=h;f=0;break}else if((i|0)==20){c[g>>2]=h;f=0;break}else if((i|0)==23){c[g>>2]=h;f=0;break}else if((i|0)==26){c[g>>2]=h;f=0;break}else if((i|0)==27){c:while(1){e=h+1|0;if((f-e|0)<=0){f=-1;break a}switch(a[l+(d[e>>0]|0)>>0]|0){case 10:case 9:case 21:{h=e;i=27;break}case 11:{i=29;break c}default:{i=30;break c}}}if((i|0)==29){c[g>>2]=h+2;f=5;break}else if((i|0)==30){c[g>>2]=e;f=0;break}}else if((i|0)==32){c[g>>2]=h+1;f=5;break}else if((i|0)==33){c[g>>2]=h;f=0;break}}else f=-1;while(0);return f|0}function OX(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;y=l;l=l+16|0;v=y;c[v>>2]=e;w=f;r=b+72|0;s=b+328|0;t=b+332|0;u=b+336|0;k=b+340|0;m=b+344|0;n=b+348|0;o=b+352|0;p=b+356|0;q=b+360|0;i=0;a:while(1){h=w-e|0;if((h|0)<=0){e=-1;break}b:do switch(a[r+(d[e>>0]|0)>>0]|0){case 29:{x=4;break a}case 27:case 26:case 25:case 24:case 22:{h=e+1|0;c[v>>2]=h;j=i;e=h;i=j;continue a}case 5:{if((h|0)<2){e=-2;break a}if(!(lb[c[s>>2]&127](b,e)|0)){x=8;break a}h=e+2|0;c[v>>2]=h;j=i;e=h;i=j;continue a}case 6:{if((h|0)<3){e=-2;break a}if(!(lb[c[t>>2]&127](b,e)|0)){x=12;break a}h=e+3|0;c[v>>2]=h;j=i;e=h;i=j;continue a}case 7:{if((h|0)<4){e=-2;break a}if(!(lb[c[u>>2]&127](b,e)|0)){x=16;break a}h=e+4|0;c[v>>2]=h;j=i;e=h;i=j;continue a}case 23:{if(i|0){x=19;break a}h=e+1|0;c[v>>2]=h;i=w-h|0;if((i|0)<=0){e=-1;break a}switch(a[r+(d[h>>0]|0)>>0]|0){case 29:{x=22;break a}case 24:case 22:{j=e+2|0;c[v>>2]=j;i=1;e=j;continue a}case 5:{if((i|0)<2){e=-2;break a}if(!(lb[c[k>>2]&127](b,h)|0)){x=26;break a}j=e+3|0;c[v>>2]=j;i=1;e=j;continue a}case 6:{if((i|0)<3){e=-2;break a}if(!(lb[c[m>>2]&127](b,h)|0)){x=30;break a}j=e+4|0;c[v>>2]=j;i=1;e=j;continue a}case 7:{if((i|0)<4){e=-2;break a}if(!(lb[c[n>>2]&127](b,h)|0)){x=34;break a}j=e+5|0;c[v>>2]=j;i=1;e=j;continue a}default:{x=36;break a}}}case 10:case 9:case 21:while(1){e=e+1|0;c[v>>2]=e;if((w-e|0)<=0){e=-1;break a}switch(a[r+(d[e>>0]|0)>>0]|0){case 14:break b;case 9:case 10:case 21:break;default:{x=39;break a}}}case 14:break;default:{x=92;break a}}while(0);while(1){h=e+1|0;c[v>>2]=h;if((w-h|0)<=0){e=-1;break a}j=a[r+(d[h>>0]|0)>>0]|0;if((j|1)<<24>>24==13)break;switch(j<<24>>24){case 9:case 10:case 21:{e=h;break}default:{x=43;break a}}}e=e+2|0;c[v>>2]=e;c:while(1){h=w-e|0;if((h|0)<=0){e=-1;break a}i=a[r+(d[e>>0]|0)>>0]|0;if(i<<24>>24==j<<24>>24)break;switch(i<<24>>24){case 8:case 1:case 0:{x=60;break a}case 2:{x=65;break a}case 5:{if((h|0)<2){e=-2;break a}if(lb[c[o>>2]&127](b,e)|0){x=50;break a}i=e+2|0;c[v>>2]=i;e=i;continue c}case 6:{if((h|0)<3){e=-2;break a}if(lb[c[p>>2]&127](b,e)|0){x=54;break a}i=e+3|0;c[v>>2]=i;e=i;continue c}case 7:{if((h|0)<4){e=-2;break a}if(lb[c[q>>2]&127](b,e)|0){x=58;break a}i=e+4|0;c[v>>2]=i;e=i;continue c}case 3:{e=FX(b,e+1|0,f,v)|0;if((e|0)<1){x=63;break a}e=c[v>>2]|0;continue c}default:{i=e+1|0;c[v>>2]=i;e=i;continue c}}}h=e+1|0;c[v>>2]=h;if((w-h|0)<=0){e=-1;break}switch(a[r+(d[h>>0]|0)>>0]|0){case 11:{x=86;break a}case 17:{x=87;break a}case 10:case 9:case 21:{e=h;break}default:{x=69;break a}}d:while(1){h=e+1|0;c[v>>2]=h;i=w-h|0;if((i|0)<=0){e=-1;break a}switch(a[r+(d[h>>0]|0)>>0]|0){case 29:{x=72;break a}case 11:{x=86;break a}case 17:{x=87;break a}case 10:case 9:case 21:{e=h;break}case 24:case 22:{x=73;break d}case 5:{x=74;break d}case 6:{x=78;break d}case 7:{x=82;break d}default:{x=91;break a}}}if((x|0)==73){x=0;e=e+2|0;c[v>>2]=e;i=0;continue}else if((x|0)==74){x=0;if((i|0)<2){e=-2;break}if(!(lb[c[k>>2]&127](b,h)|0)){x=76;break}e=e+3|0;c[v>>2]=e;i=0;continue}else if((x|0)==78){x=0;if((i|0)<3){e=-2;break}if(!(lb[c[m>>2]&127](b,h)|0)){x=80;break}e=e+4|0;c[v>>2]=e;i=0;continue}else if((x|0)==82){x=0;if((i|0)<4){e=-2;break}if(!(lb[c[n>>2]&127](b,h)|0)){x=84;break}e=e+5|0;c[v>>2]=e;i=0;continue}}switch(x|0){case 4:{c[g>>2]=e;e=0;break}case 8:{c[g>>2]=e;e=0;break}case 12:{c[g>>2]=e;e=0;break}case 16:{c[g>>2]=e;e=0;break}case 19:{c[g>>2]=e;e=0;break}case 22:{c[g>>2]=h;e=0;break}case 26:{c[g>>2]=h;e=0;break}case 30:{c[g>>2]=h;e=0;break}case 34:{c[g>>2]=h;e=0;break}case 36:{c[g>>2]=h;e=0;break}case 39:{c[g>>2]=e;e=0;break}case 43:{c[g>>2]=h;e=0;break}case 50:{c[g>>2]=e;e=0;break}case 54:{c[g>>2]=e;e=0;break}case 58:{c[g>>2]=e;e=0;break}case 60:{c[g>>2]=e;e=0;break}case 63:{if(!e){c[g>>2]=c[v>>2];e=0}break}case 65:{c[g>>2]=e;e=0;break}case 69:{c[g>>2]=h;e=0;break}case 72:{c[g>>2]=h;e=0;break}case 76:{c[g>>2]=h;e=0;break}case 80:{c[g>>2]=h;e=0;break}case 84:{c[g>>2]=h;e=0;break}case 86:{c[g>>2]=e+2;e=1;break}case 87:{e=h+1|0;c[v>>2]=e;if((w-e|0)>0)if((a[e>>0]|0)==62){c[g>>2]=h+2;e=3;break}else{c[g>>2]=e;e=0;break}else e=-1;break}case 91:{c[g>>2]=h;e=0;break}case 92:{c[g>>2]=e;e=0;break}}l=y;return e|0}function PX(b,d,e){b=b|0;d=d|0;e=e|0;c[e>>2]=11;a:do if((d-b|0)==3){switch(a[b>>0]|0){case 120:{d=0;break}case 88:{d=1;break}default:{d=1;break a}}switch(a[b+1>>0]|0){case 109:break;case 77:{d=1;break}default:{d=1;break a}}switch(a[b+2>>0]|0){case 108:break;case 76:{d=0;break a}default:{d=1;break a}}if(!d){c[e>>2]=12;d=1}else d=0}else d=1;while(0);return d|0}function QX(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0;k=e+72|0;l=e+352|0;m=e+356|0;n=e+360|0;a:while(1){i=g-f|0;if((i|0)<=0){g=-1;break}j=a[k+(d[f>>0]|0)>>0]|0;switch(j<<24>>24){case 8:case 1:case 0:{o=16;break a}case 5:{if((i|0)<2){g=-2;break a}if(lb[c[l>>2]&127](e,f)|0){o=6;break a}f=f+2|0;continue a}case 6:{if((i|0)<3){g=-2;break a}if(lb[c[m>>2]&127](e,f)|0){o=10;break a}f=f+3|0;continue a}case 7:{if((i|0)<4){g=-2;break a}if(lb[c[n>>2]&127](e,f)|0){o=14;break a}f=f+4|0;continue a}case 13:case 12:{f=f+1|0;if((j&255|0)==(b|0)){o=18;break a}else continue a}default:{f=f+1|0;continue a}}}b:do if((o|0)==6){c[h>>2]=f;g=0}else if((o|0)==10){c[h>>2]=f;g=0}else if((o|0)==14){c[h>>2]=f;g=0}else if((o|0)==16){c[h>>2]=f;g=0}else if((o|0)==18)if((g-f|0)>0){c[h>>2]=f;switch(a[k+(d[f>>0]|0)>>0]|0){case 20:case 30:case 11:case 10:case 9:case 21:{g=27;break b}default:{}}g=0}else g=-27;while(0);return g|0}function RX(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;h=f;a:do if((h-e|0)>0){i=b+72|0;switch(a[i+(d[e>>0]|0)>>0]|0){case 27:{b=KX(b,e+1|0,f,g)|0;break a}case 20:{c[g>>2]=e+1;b=33;break a}case 24:case 22:{b:while(1){b=e+1|0;f=h-b|0;if((f|0)<=0){b=-1;break a}switch(a[i+(d[b>>0]|0)>>0]|0){case 24:case 22:{e=b;break}case 30:{j=8;break b}case 10:case 9:case 21:break b;default:{j=12;break b}}}if((j|0)==12){c[g>>2]=b;b=0;break a}c:do if((j|0)==8){if((f|0)<=1){b=-1;break a}switch(a[i+(d[e+2>>0]|0)>>0]|0){case 30:case 10:case 9:case 21:break;default:break c}c[g>>2]=b;b=0;break a}while(0);c[g>>2]=b;b=16;break a}default:{c[g>>2]=e;b=0;break a}}}else b=-1;while(0);return b|0} +function Rv(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;f=a;while(1){j=c[f>>2]|0;if(!j){k=6;break}if((c[j>>2]|0)==(b|0))break;f=j+4|0}if((k|0)==6)qa(93188,93195,217,93206);i=j+8|0;f=c[i>>2]|0;g=j+4|0;b=c[g>>2]|0;c[(f|0?f+4|0:a)>>2]=b;h=a+4|0;c[(b|0?b+8|0:h)>>2]=f;b=0;f=a;while(1){f=c[f>>2]|0;if(!f)break;if((c[f>>2]|0)==(d|0)){k=9;break}b=f;f=f+4|0}if((k|0)==9){do if(!e)if((f|0)==(c[a>>2]|0)){c[a>>2]=j;c[g>>2]=f;c[i>>2]=0;f=f+8|0;break}else{c[b+4>>2]=j;c[i>>2]=b;c[g>>2]=f;f=f+8|0;break}else if((f|0)==(c[h>>2]|0)){c[h>>2]=j;c[g>>2]=0;c[i>>2]=f;f=f+4|0;break}else{c[i>>2]=f;f=f+4|0;c[g>>2]=c[f>>2];c[(c[f>>2]|0)+8>>2]=j;break}while(0);c[f>>2]=j}return}function Sv(a){a=a|0;return c[a+8>>2]|0}function Tv(a,b){a=a|0;b=b|0;Uv(a,Ov(b)|0);D_(b);return}function Uv(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=c[b>>2]|0;if(d|0){e=a+4|0;f=c[e>>2]|0;c[f+4>>2]=d;c[d+8>>2]=f;c[e>>2]=c[b+4>>2];d=a+8|0;c[d>>2]=(c[d>>2]|0)+(c[b+8>>2]|0)}return}function Vv(a,b,d){a=a|0;b=b|0;d=+d;var e=0,f=0.0,g=0.0,i=0.0,j=0.0,k=0,l=0,m=0,n=0,o=0.0;m=c[b+8>>2]|0;Wv(a,b);l=Xv(m)|0;a=Zv(Yv(l)|0)|0;_v(m,a);m=$v(a,m)|0;a=Sv(m)|0;j=+aw(m);k=(a|0)==1;f=+(a|0);i=f*.15915494309189535*(j+d);g=k?0.0:i;a=m;while(1){a=c[a>>2]|0;if(!a)break;if(c[(c[(c[(c[a>>2]|0)+16>>2]|0)+112>>2]|0)+4>>2]&8|0){e=4;break}a=a+4|0}if((e|0)==4)Pv(m,a);d=1.0/f;e=0;a=m;while(1){a=c[a>>2]|0;if(!a)break;n=(c[a>>2]|0)+16|0;c[(c[(c[n>>2]|0)+112>>2]|0)+16>>2]=e;h[(c[(c[n>>2]|0)+112>>2]|0)+24>>3]=0.0;f=6.283185307179586*d*+(e|0);o=+E(+f)*g;n=c[(c[n>>2]|0)+132>>2]|0;h[n>>3]=o;h[n+8>>3]=+F(+f)*g;e=e+1|0;a=a+4|0}o=k?j*.5:i;h[b+16>>3]=o;h[b+24>>3]=o;h[b+48>>3]=-1.0;$x(l)|0;return m|0}function Wv(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=c[b+8>>2]|0;d=Sy(f)|0;while(1){if(!d)break;e=Ex(a,d)|0;while(1){if(!e)break;if((c[(c[(c[(c[((c[e>>2]&3|0)==2?e:e+-48|0)+40>>2]|0)+16>>2]|0)+112>>2]|0)+12>>2]|0)==(b|0))Vx(f,e,1)|0;e=Gx(a,e)|0}d=Ty(f,d)|0}return}function Xv(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=l;l=l+16|0;g=k;f=gw(a,g)|0;g=c[g>>2]|0;i=ay(g)|0;h=hw(g)|0;i=i+-3|0;e=0;while(1){if((e|0)>=(i|0))break;j=qw(h)|0;d=Jx(g,j)|0;while(1){if(!d)break;b=c[d>>2]&3;a=c[((b|0)==2?d:d+-48|0)+40>>2]|0;if((j|0)==(a|0))a=c[((b|0)==3?d:d+48|0)+40>>2]|0;pw(h,a);d=Kx(g,d,j)|0}iw(g,j,f);d=Jx(g,j)|0;while(1){if(!d)break;b=c[d>>2]&3;a=c[((b|0)==2?d:d+-48|0)+40>>2]|0;if((j|0)==(a|0))a=c[((b|0)==3?d:d+48|0)+40>>2]|0;b=(c[a+16>>2]|0)+236|0;c[b>>2]=(c[b>>2]|0)+-1;ow(h,a);d=Kx(g,d,j)|0}dz(g,j)|0;e=e+1|0}$x(g)|0;nw(h);l=k;return f|0}function Yv(a){a=a|0;var b=0,d=0,e=0,f=0;f=l;l=l+144|0;b=f;e=f+8|0;d=c[46162]|0;c[46162]=d+1;c[b>>2]=d;Y0(e,93221,b)|0;e=vA(a,e,1)|0;Az(e,134401,280,1)|0;b=Sy(a)|0;while(1){if(!b)break;Xy(e,b,1)|0;d=b+16|0;c[(c[(c[d>>2]|0)+112>>2]|0)+16+12>>2]=0;c[(c[(c[d>>2]|0)+112>>2]|0)+32>>2]=0;d=(c[(c[d>>2]|0)+112>>2]|0)+4|0;c[d>>2]=c[d>>2]&-2;b=Ty(a,b)|0}b=Sy(a)|0;while(1){if(!b)break;d=c[(c[b+16>>2]|0)+112>>2]|0;if(!(c[d+4>>2]&1)){c[d+16>>2]=0;fw(a,b,e)}b=Ty(a,b)|0}l=f;return e|0}function Zv(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;if((ay(a)|0)!=1){d=Sy(a)|0;while(1){if(!d)break;b=0;e=Jx(a,d)|0;while(1){if(!e)break;b=b+1|0;e=Kx(a,e,d)|0}if((b|0)==1)ew(d,d,0,0);d=Ty(a,d)|0}b=0;f=0;d=Sy(a)|0;while(1){if(!d)break;g=c[(c[d+16>>2]|0)+112>>2]|0;g=(c[g+32>>2]|0)+(c[g+16+12>>2]|0)|0;e=(g|0)>(b|0);b=e?g:b;f=e?d:f;d=Ty(a,d)|0}b=Kv()|0;e=f+16|0;d=(c[(c[e>>2]|0)+112>>2]|0)+16+4|0;while(1){d=c[d>>2]|0;if((d|0)==(f|0))break;Mv(b,0,d);d=c[(c[d+16>>2]|0)+112>>2]|0;g=d+4|0;c[g>>2]=c[g>>2]|16;d=d+16|0}Mv(b,0,f);g=c[(c[e>>2]|0)+112>>2]|0;a=g+4|0;c[a>>2]=c[a>>2]|16;if(c[g+32>>2]|0){a=Kv()|0;d=(c[(c[e>>2]|0)+112>>2]|0)+24|0;while(1){d=c[d>>2]|0;if((d|0)==(f|0))break;Mv(a,0,d);d=c[(c[d+16>>2]|0)+112>>2]|0;g=d+4|0;c[g>>2]=c[g>>2]|16;d=d+16|0}Tv(b,a)}}else{b=Kv()|0;g=Sy(a)|0;Mv(b,0,g);g=(c[(c[g+16>>2]|0)+112>>2]|0)+4|0;c[g>>2]=c[g>>2]|16}return b|0}function _v(a,b){a=a|0;b=b|0;var d=0;d=Sy(a)|0;while(1){if(!d)break;if(!(c[(c[(c[d+16>>2]|0)+112>>2]|0)+4>>2]&16))dw(a,d,b);d=Ty(a,d)|0}return}function $v(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;g=l;l=l+16|0;f=g;d=bw(a,b)|0;c[f>>2]=d;a:do if(d){e=0;while(1){if((e|0)>=10)break a;a=cw(a,b,f)|0;h=d;d=c[f>>2]|0;if((h|0)==(d|0)|(d|0)==0)break;else e=e+1|0}}while(0);l=g;return a|0}function aw(a){a=a|0;var b=0.0,d=0.0,e=0.0,f=0;b=0.0;while(1){a=c[a>>2]|0;if(!a)break;f=c[(c[c[(c[(c[a>>2]|0)+16>>2]|0)+112>>2]>>2]|0)+16>>2]|0;d=+h[f+32>>3];d=d>b?d:b;e=+h[f+40>>3];b=e>d?e:d;a=a+4|0}return +b}function bw(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;k=rw()|0;e=Sy(b)|0;while(1){if(!e)break;d=Ex(b,e)|0;while(1){if(!d)break;c[c[(c[d+16>>2]|0)+120>>2]>>2]=0;d=Gx(b,d)|0}e=Ty(b,e)|0}j=1;d=0;while(1){h=c[a>>2]|0;if(!h)break;i=c[h>>2]|0;g=Jx(b,i)|0;while(1){if(!g)break;f=g+16|0;if((c[c[(c[f>>2]|0)+120>>2]>>2]|0)>0){a=nb[c[k>>2]&63](k,0,128)|0;while(1){if(!a)break;e=c[a+8>>2]|0;if((c[c[(c[e+16>>2]|0)+120>>2]>>2]|0)>(c[c[(c[f>>2]|0)+120>>2]>>2]|0)?(l=c[e>>2]&3,(c[((l|0)==2?e:e+-48|0)+40>>2]|0)!=(i|0)):0)d=d+((c[((l|0)==3?e:e+48|0)+40>>2]|0)!=(i|0)&1)|0;a=nb[c[k>>2]&63](k,a,8)|0}xw(k,g)}g=Kx(b,g,i)|0}e=Jx(b,i)|0;while(1){if(!e)break;a=c[(c[e+16>>2]|0)+120>>2]|0;if(!(c[a>>2]|0)){c[a>>2]=j;ww(k,e)}e=Kx(b,e,i)|0}a=h+4|0;j=j+1|0}vw(k);return d|0}function cw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;e=c[d>>2]|0;k=Sy(b)|0;a:while(1){if(!k)break;j=Jx(b,k)|0;while(1){if(!j)break;g=c[j>>2]&3;f=c[((g|0)==3?j:j+48|0)+40>>2]|0;if((f|0)==(k|0))f=c[((g|0)==2?j:j+-48|0)+40>>2]|0;i=0;while(1){if((i|0)>=2)break;h=Qv(a)|0;Rv(a,k,f,i);g=bw(a,b)|0;if((g|0)<(e|0)){Lv(h);if(!g){e=0;break a}else e=g}else{Lv(a);a=h}i=i+1|0}j=Kx(b,j,k)|0}k=Ty(b,k)|0}c[d>>2]=e;return a|0}function dw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=Kv()|0;e=Ex(a,b)|0;while(1){if(!e)break;f=e+-48|0;Mv(h,0,c[((c[e>>2]&3|0)==2?e:f)+40>>2]|0);f=(c[(c[(c[((c[e>>2]&3|0)==2?e:f)+40>>2]|0)+16>>2]|0)+112>>2]|0)+4|0;c[f>>2]=c[f>>2]|32;e=Gx(a,e)|0}e=Hx(a,b)|0;while(1){if(!e)break;f=e+48|0;Mv(h,0,c[((c[e>>2]&3|0)==3?e:f)+40>>2]|0);f=(c[(c[(c[((c[e>>2]&3|0)==3?e:f)+40>>2]|0)+16>>2]|0)+112>>2]|0)+4|0;c[f>>2]=c[f>>2]|32;e=Ix(a,e)|0}a:do if((Sv(h)|0)>1){f=d+4|0;a=d;while(1){e=c[a>>2]|0;if(!e){g=13;break a}a=e+4|0;if(!(c[(c[(c[(c[e>>2]|0)+16>>2]|0)+112>>2]|0)+4>>2]&32))continue;if(c[(c[(c[(c[c[((e|0)==(c[f>>2]|0)?d:a)>>2]>>2]|0)+16>>2]|0)+112>>2]|0)+4>>2]&32|0)break}Mv(d,e,b)}else g=13;while(0);b:do if((g|0)==13){c:do if((Sv(h)|0)>0){e=d;while(1){e=c[e>>2]|0;if(!e)break c;if(c[(c[(c[(c[e>>2]|0)+16>>2]|0)+112>>2]|0)+4>>2]&32|0)break;e=e+4|0}Mv(d,e,b);break b}while(0);Mv(d,0,b)}while(0);e=h;while(1){e=c[e>>2]|0;if(!e)break;d=(c[(c[(c[e>>2]|0)+16>>2]|0)+112>>2]|0)+4|0;c[d>>2]=c[d>>2]&-33;e=e+4|0}Lv(h);return}function ew(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;while(1){g=c[(c[(c[b+16>>2]|0)+112>>2]|0)+16>>2]|0;if(!g)break;h=d+1|0;i=g+16|0;j=c[(c[i>>2]|0)+112>>2]|0;b=j+16|0;f=c[b+12>>2]|0;if(f){if((f|0)>(d|0)){k=11;break}b=c[b+4>>2]|0;f=b;if((b|0)==(e|0))b=j;else{d=j+24|0;if(!((c[j+32>>2]|0)!=0?(c[d>>2]|0)==(e|0):0))e=b;c[d>>2]=f;b=c[(c[i>>2]|0)+112>>2]|0;c[b+32>>2]=c[b+16+12>>2];b=c[(c[i>>2]|0)+112>>2]|0}b=b+16|0}c[b+4>>2]=a;c[(c[(c[i>>2]|0)+112>>2]|0)+16+12>>2]=h;b=g;d=h}if((k|0)==11?(c[j+32>>2]|0)<=(d|0):0){c[j+24>>2]=a;c[(c[(c[i>>2]|0)+112>>2]|0)+32>>2]=h}return}function fw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;g=(c[(c[b+16>>2]|0)+112>>2]|0)+4|0;c[g>>2]=c[g>>2]|1;g=Jx(a,b)|0;while(1){if(!g)break;f=c[g>>2]&3;e=c[((f|0)==2?g:g+-48|0)+40>>2]|0;if((e|0)==(b|0))e=c[((f|0)==3?g:g+48|0)+40>>2]|0;f=e+16|0;if(!(c[(c[(c[f>>2]|0)+112>>2]|0)+4>>2]&1)){Vx(d,g,1)|0;c[(c[(c[f>>2]|0)+112>>2]|0)+16>>2]=b;fw(a,e,d)}g=Kx(a,g,b)|0}return}function gw(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;k=l;l=l+144|0;j=k+8|0;i=k;e=k+16|0;h=c[46163]|0;c[46163]=h+1;c[i>>2]=h;Y0(e,93230,i)|0;i=vA(b,e,1)|0;Az(i,134401,280,1)|0;h=c[46163]|0;c[46163]=h+1;c[j>>2]=h;Y0(e,93230,j)|0;h=b+24|0;a[j>>0]=a[h>>0]|0;a[j+1>>0]=a[h+1>>0]|0;a[j+2>>0]=a[h+2>>0]|0;a[j+3>>0]=a[h+3>>0]|0;j=Xx(e,j,0)|0;e=Sy(b)|0;while(1){if(!e)break;Xy(i,e,1)|0;h=az(j,ry(e)|0,1)|0;Az(h,134365,304,1)|0;c[(c[(c[e+16>>2]|0)+112>>2]|0)+16>>2]=h;e=Ty(b,e)|0}f=Sy(b)|0;while(1){if(!f)break;g=c[(c[(c[f+16>>2]|0)+112>>2]|0)+16>>2]|0;h=g+16|0;e=Ex(b,f)|0;while(1){if(!e)break;Vx(i,e,1)|0;m=c[(c[(c[(c[((c[e>>2]&3|0)==2?e:e+-48|0)+40>>2]|0)+16>>2]|0)+112>>2]|0)+16>>2]|0;n=Rx(j,g,m,0,1)|0;Az(n,134378,176,1)|0;c[(c[n+16>>2]|0)+116>>2]=e;n=(c[h>>2]|0)+236|0;c[n>>2]=(c[n>>2]|0)+1;m=(c[m+16>>2]|0)+236|0;c[m>>2]=(c[m>>2]|0)+1;e=Gx(b,e)|0}f=Ty(b,f)|0}c[d>>2]=j;l=k;return i|0}function hw(a){a=a|0;var b=0,c=0;c=jw()|0;b=Sy(a)|0;while(1){if(!b)break;ow(c,b);b=Ty(a,b)|0}return c|0}function iw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;m=c[(c[b+16>>2]|0)+236>>2]|0;p=m<<2;o=vH(p)|0;p=vH(p)|0;i=0;l=Jx(a,b)|0;n=0;f=0;while(1){if(!l)break;e=c[l>>2]&3;g=c[((e|0)==2?l:l+-48|0)+40>>2]|0;if((g|0)==(b|0))g=c[((e|0)==3?l:l+48|0)+40>>2]|0;h=0;k=Jx(a,b)|0;j=i;while(1){if(!k)break;if((k|0)!=(l|0)){i=c[k>>2]&3;e=c[((i|0)==2?k:k+-48|0)+40>>2]|0;if((e|0)==(b|0))e=c[((i|0)==3?k:k+48|0)+40>>2]|0;i=Rx(a,g,e,0,0)|0;if(i)if(g>>>0>>0){e=j+1|0;h=i+16|0;i=c[(c[h>>2]|0)+116>>2]|0;if(!i)h=1;else{dz(d,i)|0;c[(c[h>>2]|0)+116>>2]=0;h=1}}else{h=1;e=j}else e=j}else e=j;k=Kx(a,k,b)|0;j=e}if(!h){c[p+(n<<2)>>2]=g;e=n+1|0}else{c[o+(f<<2)>>2]=g;e=n;f=f+1|0}i=j;l=Kx(a,l,b)|0;n=e}e=m+-1-i|0;a:do if((e|0)>0){if((e|0)<(n|0))g=0;else{if((e|0)!=(n|0))break;f=c[o>>2]|0;g=f+16|0;e=0;while(1){if((e|0)>=(n|0))break a;m=c[p+(e<<2)>>2]|0;Az(Rx(a,f,m,0,1)|0,134378,176,1)|0;d=(c[g>>2]|0)+236|0;c[d>>2]=(c[d>>2]|0)+1;m=(c[m+16>>2]|0)+236|0;c[m>>2]=(c[m>>2]|0)+1;e=e+1|0}}while(1){if((g|0)>=(n|0)){f=2;break}f=g|1;if((f|0)>=(n|0)){f=2;break}d=c[p+(g<<2)>>2]|0;m=c[p+(f<<2)>>2]|0;Az(Rx(a,d,m,0,1)|0,134378,176,1)|0;d=(c[d+16>>2]|0)+236|0;c[d>>2]=(c[d>>2]|0)+1;m=(c[m+16>>2]|0)+236|0;c[m>>2]=(c[m>>2]|0)+1;g=g+2|0;e=e+-1|0}while(1){if((e|0)<=0)break a;m=c[p>>2]|0;n=c[p+(f<<2)>>2]|0;Az(Rx(a,m,n,0,1)|0,134378,176,1)|0;m=(c[m+16>>2]|0)+236|0;c[m>>2]=(c[m>>2]|0)+1;n=(c[n+16>>2]|0)+236|0;c[n>>2]=(c[n>>2]|0)+1;f=f+1|0;e=e+-1|0}}while(0);D_(p);D_(o);return}function jw(){return Cw(18136,c[4555]|0)|0}function kw(a,b,d){a=a|0;b=b|0;d=d|0;d=vH(16)|0;c[d+12>>2]=0;c[d+8>>2]=c[b+8>>2];return d|0}function lw(a,b,c){a=a|0;b=b|0;c=c|0;D_(b);return}function mw(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;b=c[b>>2]|0;e=c[d>>2]|0;return ((b|0)<(e|0)?-1:(b|0)>(e|0)&1)|0}function nw(a){a=a|0;yw(a)|0;return}function ow(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;f=d;e=b+16|0;c[f+8>>2]=c[(c[e>>2]|0)+236>>2];a=(nb[c[a>>2]&63](a,f,1)|0)+12|0;c[(c[e>>2]|0)+164>>2]=c[a>>2];c[a>>2]=b;l=d;return}function pw(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;h=l;l=l+16|0;g=h;f=b+16|0;c[g+8>>2]=c[(c[f>>2]|0)+236>>2];g=nb[c[a>>2]&63](a,g,4)|0;if(!g)qa(93240,93243,107,93253);e=g+12|0;d=c[e>>2]|0;if((d|0)==(b|0)){b=c[(c[f>>2]|0)+164>>2]|0;c[e>>2]=b;if(!b)nb[c[a>>2]&63](a,g,2)|0}else{do{a=(c[d+16>>2]|0)+164|0;d=c[a>>2]|0;e=(d|0)!=0}while(e&(d|0)!=(b|0));if(e)c[a>>2]=c[(c[d+16>>2]|0)+164>>2]}l=h;return}function qw(a){a=a|0;var b=0,d=0,e=0,f=0;d=nb[c[a>>2]&63](a,0,128)|0;if(d){f=d+12|0;b=c[f>>2]|0;e=c[(c[b+16>>2]|0)+164>>2]|0;c[f>>2]=e;if(!e)nb[c[a>>2]&63](a,d,2)|0}else b=0;return b|0}function rw(){return Cw(18172,c[4555]|0)|0}function sw(a,b,d){a=a|0;b=b|0;d=d|0;d=vH(12)|0;c[d+8>>2]=c[b+8>>2];return d|0}function tw(a,b,c){a=a|0;b=b|0;c=c|0;D_(b);return}function uw(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;b=c[b>>2]|0;e=c[d>>2]|0;return (b>>>0>e>>>0?1:(b>>>0>>0)<<31>>31)|0}function vw(a){a=a|0;yw(a)|0;return}function ww(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;c[e+8>>2]=b;nb[c[a>>2]&63](a,e,1)|0;l=d;return}function xw(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;c[e+8>>2]=b;nb[c[a>>2]&63](a,e,2)|0;l=d;return}function yw(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;do if((a|0)!=0?(c[a+24>>2]|0)<=0:0){h=c[a+4>>2]|0;g=h+32|0;b=c[g>>2]|0;if(b){b=ob[b&127](a,2,0,h)|0;if((b|0)<0){b=-1;break}}else b=0;if(c[a+28>>2]|0)Hw(a,0)|0;f=(b|0)==0;if(f){nb[c[c[a+16>>2]>>2]&63](a,0,64)|0;if((Ew(a)|0)>0){b=-1;break}d=a+8|0;b=c[d>>2]|0;if((c[b+12>>2]|0)>0){e=a+12|0;ob[c[e>>2]&127](a,c[b+8>>2]|0,0,h)|0;b=c[d>>2]|0}else e=a+12|0;ob[c[e>>2]&127](a,b,0,h)|0}b=c[a+20>>2]|0;if(b){if(f&(b|0)==1)ob[c[a+12>>2]&127](a,a,0,h)|0}else D_(a);b=c[g>>2]|0;if(!b)b=0;else{ob[b&127](a,6,0,h)|0;b=0}}else b=-1;while(0);return b|0}function zw(a){a=a|0;var b=0,d=0,e=0;e=a+8|0;b=c[e>>2]|0;d=c[b>>2]|0;a:do if(!(d&12)){if(!(d&3)){d=b+8|0;a=c[d>>2]|0;c[d>>2]=0;break}a=Aw(a)|0;d=c[e>>2]|0;b=c[d+8>>2]|0;d=b+(c[d+12>>2]<<2)|0;while(1){if(b>>>0>=d>>>0)break a;c[b>>2]=0;b=b+4|0}}else a=c[b+4>>2]|0;while(0);e=c[e>>2]|0;c[e>>2]=c[e>>2]&-4097;c[e+16>>2]=0;c[e+4>>2]=0;return a|0}function Aw(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;g=a+8|0;a=c[g>>2]|0;b=c[a>>2]|0;if(!(b&4096)){a:do if(!(b&3)){if(b&112|0){a=c[a+8>>2]|0;break}a=c[a+4>>2]|0;if(!a)a=0;else{while(1){b=a+4|0;d=c[b>>2]|0;if(!d){e=a;break}c[b>>2]=c[d>>2];c[d>>2]=a;a=d}while(1){b=c[e>>2]|0;if(!b)break a;d=c[b+4>>2]|0;if(!d){e=b;continue}while(1){c[b+4>>2]=c[d>>2];c[d>>2]=b;b=c[d+4>>2]|0;if(!b)break;else{f=d;d=b;b=f}}c[e>>2]=d;e=d}}}else{e=c[a+8>>2]|0;f=e+(c[a+12>>2]<<2)|0;b=0;a=0;while(1){if(e>>>0>=f>>>0)break a;d=c[e>>2]|0;if(d){if(!b){b=d;a=d}else c[b>>2]=d;while(1){d=c[b>>2]|0;if(!d)break;else b=d}c[e>>2]=b}e=e+4|0}}while(0);g=c[g>>2]|0;c[g+4>>2]=a;c[g>>2]=c[g>>2]|4096}else a=c[a+4>>2]|0;return a|0}function Bw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;s=a+8|0;if(c[c[s>>2]>>2]&4096|0)Dw(a,0)|0;r=c[a+4>>2]|0;m=c[r>>2]|0;n=c[r+4>>2]|0;q=r+8|0;u=c[q>>2]|0;o=c[r+20>>2]|0;p=a+20|0;f=c[p>>2]&-32769;c[p>>2]=f;a:do if(!b){if(d&384|0){f=c[s>>2]|0;e=c[f+8>>2]|0;if(!e){e=0;break}if(d&256){e=c[e+4>>2]|0;c[f+4>>2]=e;if(!e){e=0;break}}else c[f+4>>2]=e;if((u|0)<0){e=c[e+8>>2]|0;break}else{e=e+(0-u)|0;break}}if(d&4098|0){e=c[s>>2]|0;if(c[e>>2]&144|0){e=0;break}e=c[e+8>>2]|0;if(!e){e=0;break}else{h=e;t=84;break}}if(!(d&64))e=0;else{i=r+16|0;b:do if((c[i>>2]|0)!=0|(u|0)<0){j=a+12|0;k=(u|0)<0;f=0-u|0;e=c[(c[s>>2]|0)+8>>2]|0;while(1){if(!e)break b;g=c[e>>2]|0;h=c[i>>2]|0;if(h|0){if(k)b=c[e+8>>2]|0;else b=e+f|0;vb[h&127](a,b,r)}if((c[q>>2]|0)>=0){e=g;continue}ob[c[j>>2]&127](a,e,0,r)|0;e=g}}while(0);e=c[s>>2]|0;c[e+4>>2]=0;c[e+8>>2]=0;c[(c[s>>2]|0)+16>>2]=0;e=0}}else{if(d&2049|0){g=r+12|0;e=c[g>>2]|0;h=(d&1|0)==0;if(!(h|(e|0)==0)){e=nb[e&63](a,b,r)|0;if(!e){e=0;break}else f=e}else f=b;do if((u|0)>-1)h=f+u|0;else{e=ob[c[a+12>>2]&127](a,0,12,r)|0;if(e|0){c[e+8>>2]=f;h=e;break}if(!(c[g>>2]|0)){e=0;break a}e=c[r+16>>2]|0;if(h|(e|0)==0){e=0;break a}vb[e&127](a,f,r);e=0;break a}while(0);g=c[s>>2]|0;e=c[g>>2]|0;do if(!(e&128)){if(!(e&16))if(!(e&32)){t=51;break}else{t=48;break}f=c[g+4>>2]|0;e=(f|0)!=0;if(!(d&8192)){if(!e){t=48;break}if((f|0)==(c[g+8>>2]|0)){t=48;break}r=f+4|0;a=c[r>>2]|0;c[h+4>>2]=a;c[a>>2]=h;c[h>>2]=f;c[r>>2]=h;break}else{if(!e){t=51;break}e=c[f>>2]|0;if(!e){t=51;break}c[h>>2]=e;c[e+4>>2]=h;c[h+4>>2]=f;c[f>>2]=h;break}}else if(!(d&8192))t=48;else t=51;while(0);if((t|0)==48){e=c[g+8>>2]|0;c[h>>2]=e;if(!e)e=h;else c[h+4>>2]=c[e+4>>2];c[e+4>>2]=h;c[(c[s>>2]|0)+8>>2]=h}else if((t|0)==51){f=g+8|0;e=c[f>>2]|0;if(!e){c[f>>2]=h;e=h}else{r=e+4|0;c[c[r>>2]>>2]=h;c[h+4>>2]=c[r>>2]}c[e+4>>2]=h;c[h>>2]=0}e=c[s>>2]|0;f=e+16|0;g=c[f>>2]|0;if((g|0)>-1)c[f>>2]=g+1;c[e+4>>2]=h;if((u|0)<0){e=c[h+8>>2]|0;break}else{e=h+(0-u)|0;break}}h=c[s>>2]|0;do if(!(d&512)){e=c[h+4>>2]|0;if(e|0){if((u|0)<0)g=c[e+8>>2]|0;else g=e+(0-u)|0;if((g|0)==(b|0))break}e=b+m|0;if((n|0)<0){b=c[e>>2]|0;t=68}else{b=e;t=68}}else t=68;while(0);if((t|0)==68){g=(u|0)<0;i=(n|0)<0;j=(o|0)==0;k=(n|0)<1;l=0-u|0;e=h+8|0;do{e=c[e>>2]|0;if(!e){e=0;break a}if(g)f=c[e+8>>2]|0;else f=e+l|0;f=f+m|0;if(i)f=c[f>>2]|0;do if(j)if(k){f=b$(b,f)|0;break}else{f=L0(b,f,n)|0;break}else f=ob[o&127](a,b,f,r)|0;while(0)}while((f|0)!=0);f=c[p>>2]|0}c[p>>2]=f|32768;if(!(d&4098)){do if(!(d&8)){f=c[s>>2]|0;if(!(d&16)){c[f+4>>2]=e;break}if((e|0)==(c[f+8>>2]|0)){c[f+4>>2]=0;e=0;break a}else{e=e+4|0;t=108;break}}else{f=c[s>>2]|0;t=108}while(0);if((t|0)==108){e=c[e>>2]|0;c[f+4>>2]=e;if(!e){e=0;break}}if((u|0)<0){e=c[e+8>>2]|0;break}else{e=e+(0-u)|0;break}}else{h=e;t=84}}while(0);if((t|0)==84){e=c[h>>2]|0;if(e){c[e+4>>2]=c[h+4>>2];e=c[h>>2]|0}f=(c[s>>2]|0)+8|0;g=c[f>>2]|0;if((h|0)==(g|0)){c[f>>2]=e;e=c[(c[s>>2]|0)+8>>2]|0;if(e|0)c[e+4>>2]=c[h+4>>2]}else{f=h+4|0;c[c[f>>2]>>2]=e;e=g+4|0;if((h|0)==(c[e>>2]|0))c[e>>2]=c[f>>2]}e=c[s>>2]|0;f=e+4|0;if((h|0)==(c[f>>2]|0))g=c[h>>2]|0;else g=0;c[f>>2]=g;t=e+16|0;c[t>>2]=(c[t>>2]|0)+-1;if((u|0)<0)e=c[h+8>>2]|0;else e=h+(0-u)|0;f=c[r+16>>2]|0;if(!((d&2|0)==0|(f|0)==0))vb[f&127](a,e,r);if((c[q>>2]|0)<0)ob[c[a+12>>2]&127](a,h,0,r)|0}return e|0}function Cw(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;j=l;l=l+16|0;g=j;a:do if((a|0)!=0&(b|0)!=0?(f=C_(40)|0,(f|0)!=0):0){c[f>>2]=0;c[f+16>>2]=0;c[f+4>>2]=0;Kw(f,a,0)|0;d=f+20|0;i=a+32|0;c[d>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;c[d+12>>2]=0;c[d+16>>2]=0;d=c[i>>2]|0;do if(d){c[g>>2]=0;d=ob[d&127](f,1,g,a)|0;if((d|0)>=0)if(d){e=c[g>>2]|0;if(e|0)if(!(c[b+4>>2]&c[e>>2])){d=f;h=12;break}else{d=f;break}d=a+28|0;if(!(c[d>>2]|0)){d=f;h=12}else{D_(f);e=ob[c[d>>2]&127](0,0,40,a)|0;if(!e){d=0;break a}c[e>>2]=0;c[e+16>>2]=0;c[e+4>>2]=0;Kw(e,a,0)|0;c[e+20>>2]=1;c[e+24>>2]=0;c[e+32>>2]=0;c[e+28>>2]=0;d=e;f=e;h=11}}else{d=f;h=11}else{d=f;h=12}}else{d=f;h=11}while(0);if((h|0)==11){e=ob[c[d+12>>2]&127](d,0,28,a)|0;c[g>>2]=e;if(!e){d=f;h=12}else{c[e>>2]=c[b+4>>2];g=e+4|0;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;c[g+12>>2]=0;c[g+16>>2]=0;c[g+20>>2]=0}}if((h|0)==12){D_(d);d=0;break}c[d+8>>2]=e;c[d>>2]=c[b>>2];c[d+16>>2]=b;e=c[i>>2]|0;if(e)ob[e&127](d,5,f,a)|0}else d=0;while(0);l=j;return d|0}function Dw(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;f=c[c[a+16>>2]>>2]|0;j=a+8|0;g=c[j>>2]|0;h=c[g>>2]|0;d=h&4096;if(!b)if(!d)b=-1;else{e=d;b=c[g+4>>2]|0;i=5}else if(!(c[g+16>>2]|0)){e=0;i=5}else b=-1;a:do if((i|0)==5){c[g>>2]=h&-4097;if(!(h&3)){d=g+4|0;if(!(h&12)){c[d>>2]=0;d=g+8|0}c[d>>2]=b;if(e|0){b=0;break}c[(c[j>>2]|0)+16>>2]=-1;b=0;break}c[g+4>>2]=0;if(!e){c[g+16>>2]=0;while(1){if(!b){b=0;break a}j=c[b>>2]|0;nb[f&63](a,b,32)|0;b=j}}e=c[g+8>>2]|0;a=e+(c[g+12>>2]<<2)|0;while(1){if(e>>>0>=a>>>0){b=0;break a}d=c[e>>2]|0;if(d){c[e>>2]=b;b=c[d>>2]|0;c[d>>2]=0}e=e+4|0}}while(0);return b|0}function Ew(a){a=a|0;var b=0,d=0,e=0;b=a+8|0;d=c[b>>2]|0;if(c[d>>2]&4096){Dw(a,0)|0;d=c[b>>2]|0}e=d+16|0;a=c[e>>2]|0;do if((a|0)<0){b=c[d>>2]|0;if(b&12|0){a=Fw(c[d+4>>2]|0)|0;c[e>>2]=a;break}if(b&112){a=0;b=d+8|0;while(1){b=c[b>>2]|0;if(!b)break;a=a+1|0}c[e>>2]=a}}while(0);return a|0}function Fw(a){a=a|0;var b=0;if(!a)return 0;else{b=Fw(c[a+4>>2]|0)|0;return b+1+(Fw(c[a>>2]|0)|0)|0}return 0}function Gw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;G=l;l=l+128|0;z=G+120|0;r=G;F=a+8|0;e=c[F>>2]|0;if(c[e>>2]&4096){Dw(a,0)|0;e=c[F>>2]|0}E=c[a+4>>2]|0;A=c[E>>2]|0;B=c[E+4>>2]|0;x=E+8|0;D=c[x>>2]|0;C=c[E+20>>2]|0;t=a+20|0;c[t>>2]=c[t>>2]&-32769;h=c[e+4>>2]|0;a:do if(!b)if((d&448|0)==0|(h|0)==0)e=0;else{if(!(d&64)){b:do if(!(d&256)){e=h;while(1){f=e+4|0;g=c[f>>2]|0;if(!g)break b;c[f>>2]=c[g>>2];c[g>>2]=e;e=g}}else{e=h;while(1){f=c[e>>2]|0;if(!f)break b;a=f+4|0;c[e>>2]=c[a>>2];c[a>>2]=e;e=f}}while(0);c[(c[F>>2]|0)+4>>2]=e;if((D|0)<0){e=c[e+8>>2]|0;break}else{e=e+(0-D)|0;break}}b=E+16|0;if((c[b>>2]|0)!=0|(D|0)<0){j=a+12|0;k=(D|0)<0;i=0-D|0;e=h;do{h=e;while(1){e=h+4|0;f=c[e>>2]|0;if(!f)break;c[e>>2]=c[f>>2];c[f>>2]=h;h=f}e=c[h>>2]|0;f=c[b>>2]|0;if(f|0){if(k)g=c[h+8>>2]|0;else g=h+i|0;vb[f&127](a,g,E)}if((c[x>>2]|0)<0)ob[c[j>>2]&127](a,h,0,E)|0}while((e|0)!=0);e=c[F>>2]|0}c[e+16>>2]=0;c[e+4>>2]=0;e=0}else{y=a+16|0;u=(d&4098|0)==0;c:do if(u|(c[(c[y>>2]|0)+4>>2]|0)!=8)v=45;else{k=(B|0)<0;e=b+A|0;if(k)e=c[e>>2]|0;i=(C|0)==0;j=(B|0)<1;g=nb[c[a>>2]&63](a,b,4)|0;while(1){if(!g){v=45;break c}f=g+A|0;if(k)f=c[f>>2]|0;do if(i)if(j){f=b$(e,f)|0;break}else{f=L0(e,f,B)|0;break}else f=ob[C&127](a,e,f,E)|0;while(0);if(f|0){v=45;break c}if((g|0)==(b|0))break;g=nb[c[a>>2]&63](a,g,8)|0}h=c[(c[F>>2]|0)+4>>2]|0;c[z>>2]=c[h+4>>2];c[z+4>>2]=c[h>>2];e=z;v=180}while(0);d:do if((v|0)==45){do if(!(d&2565)){if(d&32|0){if((D|0)<0)g=c[b+8>>2]|0;else g=b+(0-D)|0;e=g+A|0;if((B|0)<0)f=c[e>>2]|0;else f=e;if(!h){e=b;f=z;h=z;v=198;break}else{e=b;s=f;j=b;v=64;break}}if(h){if((D|0)<0)e=c[h+8>>2]|0;else e=h+(0-D)|0;if((e|0)!=(b|0)){f=b+A|0;if((B|0)<0){g=b;e=0;s=c[f>>2]|0;j=0;v=64}else{g=b;e=0;s=f;j=0;v=64}}else{e=0;g=b;f=z;k=z;j=0;v=141}}else{e=0;g=b;f=z;h=z;v=198}}else{if(!(d&512)){e=b+A|0;if((B|0)<0)f=c[e>>2]|0;else f=e}else f=b;if(!h){e=0;g=b;f=z;h=z;v=198}else{g=b;e=0;s=f;j=0;v=64}}while(0);e:do if((v|0)==64){f:do if((c[(c[y>>2]|0)+4>>2]|0)==4?(q=c[(c[F>>2]|0)+24>>2]|0,!((d&516|0)==0|(q|0)==0)):0){b=(D|0)<0;m=(B|0)<0;n=(C|0)==0;o=(B|0)<1;p=0-D|0;k=0;f=h;while(1){if((k|0)>=(q|0)){f=z;k=z;m=0;break}if(b)i=c[f+8>>2]|0;else i=f+p|0;i=i+A|0;if(m)i=c[i>>2]|0;do if(n)if(o){i=b$(s,i)|0;break}else{i=L0(s,i,B)|0;break}else i=ob[C&127](a,s,i,E)|0;while(0);if(!i){v=80;break}c[r+(k<<2)>>2]=i;f=c[((i|0)<0?f+4|0:f)>>2]|0;if(!f){e=0;break a}else k=k+1|0}if((v|0)==80)if(b){e=c[f+8>>2]|0;break a}else{e=f+p|0;break a}while(1){if((m|0)>=(q|0))break f;do if((c[r+(m<<2)>>2]|0)<0){i=h+4|0;b=c[i>>2]|0;if((c[r+((m|1)<<2)>>2]|0)<0){c[i>>2]=c[b>>2];c[b>>2]=h;c[f+4>>2]=b;f=b;h=k;i=b+4|0;break}else{c[k>>2]=b;c[f+4>>2]=h;f=h;h=b;i=b;break}}else{i=c[h>>2]|0;if((c[r+((m|1)<<2)>>2]|0)>0){p=i+4|0;c[h>>2]=c[p>>2];c[p>>2]=h;c[k>>2]=i;h=i;break}else{c[f+4>>2]=i;c[k>>2]=h;f=i;i=i+4|0;break}}while(0);k=h;m=m+2|0;h=c[i>>2]|0}}else{f=z;k=z}while(0);n=(D|0)<0;o=(B|0)<0;p=(C|0)!=0;q=(B|0)<1;r=0-D|0;i=h;g:while(1){h=i;while(1){if(n)i=c[h+8>>2]|0;else i=h+r|0;i=i+A|0;if(o)i=c[i>>2]|0;do if(!p)if(q){i=b$(s,i)|0;break}else{i=L0(s,i,B)|0;break}else i=ob[C&127](a,s,i,E)|0;while(0);if(!i){v=140;break g}if((i|0)>=0)break;b=h+4|0;m=c[b>>2]|0;if(!m){v=121;break g}if(n)i=c[m+8>>2]|0;else i=m+r|0;i=i+A|0;if(o)i=c[i>>2]|0;do if(!p)if(q){i=b$(s,i)|0;break}else{i=L0(s,i,B)|0;break}else i=ob[C&127](a,s,i,E)|0;while(0);if((i|0)>=0){v=118;break}c[b>>2]=c[m>>2];c[m>>2]=h;c[f+4>>2]=m;h=c[m+4>>2]|0;if(!h){f=m;h=k;v=198;break e}else f=m}if((v|0)==118){v=0;if(!i){v=119;break}c[k>>2]=m;c[f+4>>2]=h;i=c[m>>2]|0;if(!i){f=h;h=m;v=198;break e}else{f=h;k=m;continue}}b=c[h>>2]|0;if(!b){v=139;break}if(n)i=c[b+8>>2]|0;else i=b+r|0;i=i+A|0;if(o)i=c[i>>2]|0;do if(!p)if(q){i=b$(s,i)|0;break}else{i=L0(s,i,B)|0;break}else i=ob[C&127](a,s,i,E)|0;while(0);if((i|0)>0){i=b+4|0;c[h>>2]=c[i>>2];c[i>>2]=h;c[k>>2]=b;i=c[b>>2]|0;if(!i){h=b;v=198;break e}else{k=b;continue}}if(!i){v=137;break}c[f+4>>2]=b;c[k>>2]=h;i=c[b+4>>2]|0;if(!i){f=b;v=198;break e}else{f=b;k=h}}if((v|0)==119){c[f+4>>2]=h;f=h;h=m;v=141;break}else if((v|0)==121){c[f+4>>2]=h;f=h;h=k;v=198;break}else if((v|0)==137){c[k>>2]=h;k=h;h=b;v=141;break}else if((v|0)==139){c[k>>2]=h;v=198;break}else if((v|0)==140)if(!h){h=k;v=198;break}else{v=141;break}}while(0);do if((v|0)==141){c[t>>2]=c[t>>2]|32768;i=h+4|0;c[k>>2]=c[i>>2];c[f+4>>2]=c[h>>2];if(!(d&516)){if(d&8|0){c[i>>2]=c[z>>2];c[h>>2]=0;c[z>>2]=h;v=169;break}if(d&16|0){v=z+4|0;c[h>>2]=c[v>>2];c[i>>2]=0;c[v>>2]=h;v=175;break}if(!u){e=f;v=180;break d}if(d&2049|0){if(c[(c[y>>2]|0)+4>>2]&4|0){e=h;break}c[i>>2]=0;e=z+4|0;c[h>>2]=c[e>>2];c[e>>2]=h;e=h;v=205;break}if(!(d&32)){e=0;break a}if(!(c[(c[y>>2]|0)+4>>2]&4)){c[e+4>>2]=0;x=z+4|0;c[e>>2]=c[x>>2];c[x>>2]=j;e=(c[F>>2]|0)+16|0;c[e>>2]=(c[e>>2]|0)+1;e=h;break}e=c[E+16>>2]|0;if(e|0)vb[e&127](a,g,E);if((c[x>>2]|0)<0){ob[c[a+12>>2]&127](a,j,0,E)|0;e=h}else e=h}else e=h}else if((v|0)==198){c[f+4>>2]=0;c[h>>2]=0;if(!(d&8))if(!(d&16)){if(d&516|0){e=f;break d}if(!(d&2049)){if(!(d&32)){g=0;e=f;break d}x=(c[F>>2]|0)+16|0;c[x>>2]=(c[x>>2]|0)+1}else{e=0;v=205}}else v=175;else v=169}while(0);if((v|0)==169){h=z+4|0;e=c[h>>2]|0;if(!e){e=f;break}while(1){f=e+4|0;g=c[f>>2]|0;if(!g)break;c[f>>2]=c[g>>2];c[g>>2]=e;e=g}c[h>>2]=c[e>>2]}else if((v|0)==175){e=c[z>>2]|0;if(!e){e=f;break}while(1){f=c[e>>2]|0;if(!f)break;x=f+4|0;c[e>>2]=c[x>>2];c[x>>2]=e;e=f}c[z>>2]=c[e+4>>2]}else if((v|0)==205){i=E+12|0;h=c[i>>2]|0;j=(d&1|0)==0;if(!(j|(h|0)==0))g=nb[h&63](a,g,E)|0;do if(g){if((D|0)>-1){e=g+D|0;v=215;break}e=ob[c[a+12>>2]&127](a,0,12,E)|0;if(e|0){c[e+8>>2]=g;break}if((c[i>>2]|0)!=0?(w=c[E+16>>2]|0,!(j|(w|0)==0)):0){vb[w&127](a,g,E);v=215}else v=215}else v=215;while(0);if((v|0)==215)if(!e){e=f;break}f=(c[F>>2]|0)+16|0;g=c[f>>2]|0;if((g|0)>-1)c[f>>2]=g+1}c[e+4>>2]=c[z>>2];c[e>>2]=c[z+4>>2];h:do if(!((d&516|0)==0?1:(c[(c[y>>2]|0)+4>>2]&8|0)==0)){m=(D|0)<0;if(m)f=c[e+8>>2]|0;else f=e+(0-D)|0;n=(B|0)<0;f=f+A|0;if(n)f=c[f>>2]|0;j=(C|0)==0;k=(B|0)<1;b=0-D|0;while(1){i=e+4|0;g=c[i>>2]|0;if(!g)break h;while(1){h=c[g>>2]|0;if(!h)break;z=h+4|0;c[g>>2]=c[z>>2];c[z>>2]=g;g=h}c[i>>2]=g;if(m)h=c[g+8>>2]|0;else h=g+b|0;h=h+A|0;if(n)h=c[h>>2]|0;do if(j)if(k){h=b$(f,h)|0;break}else{h=L0(f,h,B)|0;break}else h=ob[C&127](a,f,h,E)|0;while(0);if(h|0)break h;c[i>>2]=c[g>>2];c[g>>2]=e;e=g}}while(0);c[(c[F>>2]|0)+4>>2]=e;if((D|0)<0){e=c[e+8>>2]|0;break a}else{e=e+(0-D)|0;break a}}while(0);if((v|0)==180){if((D|0)<0)g=c[h+8>>2]|0;else g=h+(0-D)|0;f=c[E+16>>2]|0;if(!((d&2|0)==0|(f|0)==0))vb[f&127](a,g,E);if((c[x>>2]|0)<0)ob[c[a+12>>2]&127](a,h,0,E)|0;a=(c[F>>2]|0)+16|0;E=c[a>>2]|0;c[a>>2]=(E|0)<1?-1:E+-1|0}do{f=e+4|0;e=c[f>>2]|0}while((e|0)!=0);c[f>>2]=c[z>>2];c[(c[F>>2]|0)+4>>2]=c[z+4>>2];e=d&2|0?g:0}while(0);l=G;return e|0}function Hw(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;if(c[c[a+8>>2]>>2]&4096|0)Dw(a,0)|0;f=(b|0)!=0;if(f){if(c[c[b+8>>2]>>2]&4096|0)Dw(b,0)|0;if((c[b+16>>2]|0)==(c[a+16>>2]|0)){d=b;e=7}else b=0}else{d=0;e=7}a:do if((e|0)==7){while(1){if(!d)break;if((d|0)==(a|0)){b=0;break a}d=c[d+28>>2]|0;e=7}d=a+28|0;e=c[d>>2]|0;if(e|0){g=e+24|0;c[g>>2]=(c[g>>2]|0)+-1}c[a+32>>2]=0;c[d>>2]=0;if(f){c[d>>2]=b;c[a>>2]=25;g=b+24|0;c[g>>2]=(c[g>>2]|0)+1;break}else{c[a>>2]=c[c[a+16>>2]>>2];b=e;break}}while(0);return b|0}function Iw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;a:do if(!(d&99)){if((d&516|0)==0?(e=c[(c[a+16>>2]|0)+4>>2]|0,!((d&384|0)!=0&(e&12|0)==0)):0){if(e&12|0){if(!(d&408)){e=0;break}o=(d&136|0)!=0;p=(d&272|0)!=0;l=0;f=0;e=0;n=a;while(1){if(!n)break;m=nb[c[c[n+16>>2]>>2]&63](n,b,d)|0;do if(!m)g=l;else{h=c[n+4>>2]|0;i=c[h+4>>2]|0;j=c[h+20>>2]|0;g=m+(c[h>>2]|0)|0;if((i|0)<0)k=c[g>>2]|0;else k=g;if(e|0){do if(!j)if((i|0)<1){g=b$(k,f)|0;break}else{g=L0(k,f,i)|0;break}else g=ob[j&127](n,k,f,h)|0;while(0);if(!(o&(g|0)<0|p&(g|0)>0)){g=l;break}}g=n;f=k;e=m}while(0);l=g;n=c[n+28>>2]|0}c[a+32>>2]=l;break}if(!(d&24)){e=0;break}j=a+32|0;f=c[j>>2]|0;if(f){e=c[(c[f+4>>2]|0)+8>>2]|0;g=c[(c[f+8>>2]|0)+4>>2]|0;if((e|0)<0)e=c[g+8>>2]|0;else e=g+(0-e)|0;if((e|0)==(b|0))e=b;else{f=a;h=32}}else{f=a;h=32}do if((h|0)==32){while(1){if(!f){h=33;break}e=nb[c[c[f+16>>2]>>2]&63](f,b,4)|0;if(e|0){h=36;break}f=c[f+28>>2]|0;h=32}if((h|0)==33){c[j>>2]=0;e=0;break a}else if((h|0)==36){c[j>>2]=f;break}}while(0);i=(d<<4&128^128)+128|0;e=nb[c[c[f+16>>2]>>2]&63](f,e,d)|0;while(1){h=f+16|0;while(1){if(!e)break;else g=a;while(1){if((g|0)==(f|0))break a;if(nb[c[c[g+16>>2]>>2]&63](g,e,4)|0)break;g=c[g+28>>2]|0}e=nb[c[c[h>>2]>>2]&63](f,e,d)|0}f=c[f+28>>2]|0;c[j>>2]=f;if(!f){e=0;break a}e=nb[c[c[f+16>>2]>>2]&63](f,0,i)|0}}else f=a;while(1){if(!f){f=0;e=0;break}e=nb[c[c[f+16>>2]>>2]&63](f,b,d)|0;if(e|0)break;f=c[f+28>>2]|0}c[a+32>>2]=f}else e=nb[c[c[a+16>>2]>>2]&63](a,b,d)|0;while(0);return e|0}function Jw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=a+32|0;f=nb[c[a>>2]&63](a,0,128)|0;do{if(!f){e=0;break}h=c[g>>2]|0;e=f;f=nb[c[a>>2]&63](a,f,8)|0;e=nb[b&63]((h|0)==0?a:h,e,d)|0}while((e|0)>=0);return e|0}function Kw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;f=a+4|0;n=c[f>>2]|0;a:do if(n)if(b){m=c[c[a+16>>2]>>2]|0;g=a+8|0;if(c[c[g>>2]>>2]&4096|0)Dw(a,0)|0;e=c[n+32>>2]|0;if(e|0?(ob[e&127](a,3,b,n)|0)<0:0){b=0;break}c[f>>2]=b;e=c[b+28>>2]|0;c[a+12>>2]=(e|0)==0?52:e;e=c[c[g>>2]>>2]|0;if(!(e&112)){do if(!(e&2))if(!(e&3))if(!(d&1))break;else{b=n;break a}else if((d&3|0)==3){b=n;break a}else break;else if(d&2|0){b=n;break a}while(0);h=Aw(a)|0;e=c[g>>2]|0;l=c[e>>2]|0;c[e>>2]=l&-4097;c[e+4>>2]=0;c[e+16>>2]=0;b:do if(l&3|0){l=c[e+8>>2]|0;f=l+(c[e+12>>2]<<2)|0;e=l;while(1){if(e>>>0>=f>>>0)break b;c[e>>2]=0;e=e+4|0}}while(0);i=(d&2|0)==0;j=b+8|0;k=b+4|0;l=b+24|0;while(1){if(!h){b=n;break a}d=c[h>>2]|0;if(i){e=c[j>>2]|0;if((e|0)<0)e=c[h+8>>2]|0;else e=h+(0-e)|0;g=c[k>>2]|0;e=e+(c[b>>2]|0)|0;if((g|0)<0)e=c[e>>2]|0;f=c[l>>2]|0;if(!f)e=Mw(0,e,g)|0;else e=nb[f&63](a,e,b)|0;c[h+4>>2]=e}nb[m&63](a,h,32)|0;h=d}}else b=n}else b=n;else{c[f>>2]=b;n=c[b+28>>2]|0;c[a+12>>2]=(n|0)==0?52:n}while(0);return b|0}function Lw(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;a=(c|0)==0;do if(!b)if(a)a=0;else a=C_(c)|0;else if(a){D_(b);a=0;break}else{a=F_(b,c)|0;break}while(0);return a|0}function Mw(b,c,e){b=b|0;c=c|0;e=e|0;var f=0,g=0,h=0;g=c;if((e|0)>=1){h=c+e+-1|0;g=(h>>>0>>0?c:h)+(1-g)&-2;f=c;while(1){if(f>>>0>=h>>>0)break;b=O(((d[f>>0]|0)<<8)+b+(d[f+1>>0]|0)|0,17109811)|0;f=f+2|0}f=c+g|0;if(f>>>0>h>>>0)c=e;else{c=e;b=O(((d[f>>0]|0)<<8)+b|0,17109811)|0}}else{while(1){f=a[c>>0]|0;if(!(f<<24>>24))break;h=a[c+1>>0]|0;e=O(((f&255)<<8)+b+(h&255)|0,17109811)|0;b=e;c=c+(h<<24>>24?2:1)|0}c=c-g|0}return O(b+c|0,17109811)|0}function Nw(a){a=a|0;var b=0;b=c[46164]|0;c[46164]=a;return b|0}function Ow(a){a=a|0;var b=0;b=c[46165]|0;c[46165]=a;return b|0}function Pw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=l;l=l+16|0;f=e;c[f>>2]=d;d=Qw(a,b,f)|0;l=e;return d|0}function Qw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;g=l;l=l+16|0;e=g;f=(a|0)==3;h=f?c[46167]|0:(a|0)==2?1:a;c[46167]=h;i=c[46168]|0;c[46168]=i>>>0>h>>>0?i:h;do if(h>>>0<(c[46165]|0)>>>0){a=c[46166]|0;if(!a){a=l3()|0;c[46166]=a;if(!a){a=1;break}}if(!f){o3(a)|0;a=c[46166]|0}r0(a,b,d)|0;a=0}else{if(c[46164]|0){Rw(a,b,d);a=0;break}if(f)a=c[15686]|0;else{i=c[15686]|0;c[e>>2]=(a|0)==1?93267:93273;g1(i,93281,e)|0;a=i}r0(a,b,d)|0;a=0}while(0);l=g;return a|0}function Rw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;if((c[46169]|0)==0?(f=C_(c[4564]|0)|0,c[46169]=f,(f|0)==0):0)D1(93286,c[15686]|0)|0;else e=4;do if((e|0)==4){if((a|0)!=3){kb[c[46164]&63]((a|0)==1?93267:93273)|0;kb[c[46164]&63](93945)|0}while(1){a=q0(c[46169]|0,c[4564]|0,b,d)|0;e=c[4564]|0;if((a|0)>-1&(a|0)<(e|0)){e=7;break}e=e<<1;f=a+1|0;f=(e|0)>(f|0)?e:f;c[4564]=f;if(!(F_(c[46169]|0,f)|0)){e=9;break}}if((e|0)==7){kb[c[46164]&63](c[46169]|0)|0;break}else if((e|0)==9){D1(93286,c[15686]|0)|0;break}}while(0);return}function Sw(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;c[e>>2]=b;Qw(1,a,e)|0;l=d;return}function Tw(b,d,e){b=b|0;d=d|0;e=e|0;var f=0;if(!e){e=(d|0)==0?1024:d;d=e;e=C_(e)|0;f=1}else f=0;c[b+12>>2]=f;c[b>>2]=e;c[b+8>>2]=e+d;c[b+4>>2]=e;a[e>>0]=0;return}function Uw(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;h=a+8|0;f=c[a>>2]|0;g=(c[h>>2]|0)-f|0;e=g<<1;g=g+b|0;e=g>>>0>e>>>0?g:e;g=a+4|0;b=f;f=(c[g>>2]|0)-f|0;d=a+12|0;if(!(c[d>>2]|0)){i=C_(e)|0;F3(i|0,b|0,f|0)|0;c[d>>2]=1;b=i}else b=F_(b,e)|0;c[a>>2]=b;c[g>>2]=b+f;c[h>>2]=b+e;return 0}function Vw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;f=a+4|0;e=c[f>>2]|0;if((e+d|0)>>>0>(c[a+8>>2]|0)>>>0){Uw(a,d)|0;e=c[f>>2]|0}F3(e|0,b|0,d|0)|0;c[f>>2]=(c[f>>2]|0)+d;return d|0}function Ww(a,b){a=a|0;b=b|0;return Vw(a,b,W_(b)|0)|0}function Xw(a){a=a|0;if(c[a+12>>2]|0)D_(c[a>>2]|0);return}function Yw(a){a=a|0;var b=0,e=0;b=a+4|0;e=c[b>>2]|0;if(e>>>0>(c[a>>2]|0)>>>0){c[b>>2]=e+-1;a=d[e>>0]|0}else a=-1;return a|0}function Zw(a,b,d){a=a|0;b=b|0;d=d|0;Qz(c[46171]|0,c[b+8>>2]|0)|0;Qz(c[46171]|0,c[b+12>>2]|0)|0;Ny(c[46171]|0,b);return}function _w(a,b){a=a|0;b=b|0;var c=0;c=yz(a,93334,0)|0;if((b|0)!=0&(c|0)==0){$w(a);c=yz(a,93334,0)|0}return c|0}function $w(a){a=a|0;var b=0,c=0,d=0;d=fz(a)|0;jB(d,d,104,0,1)|0;c=Sy(d)|0;while(1){if(!c)break;bx(a,c);b=Ex(d,c)|0;while(1){if(!b)break;cx(a,b);b=Gx(d,b)|0}c=Ty(d,c)|0}return}function ax(b){b=b|0;var c=0;c=b+24|0;a[c>>0]=a[c>>0]|64;hx(b);c=yA(b)|0;ex((c|0)==0?b:c,b);return}function bx(a,b){a=a|0;b=b|0;var d=0;d=dx(b)|0;if(!((d|0)!=0?(c[d+8>>2]|0)!=0:0))ex(a,b);return}function cx(a,b){a=a|0;b=b|0;var d=0;d=dx(b)|0;if(!((d|0)!=0?(c[d+8>>2]|0)!=0:0))ex(a,b);return}function dx(a){a=a|0;return yz(a,93322,0)|0}function ex(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=Az(b,93322,16,0)|0;f=fx(a,c[b>>2]&3)|0;e=d+8|0;a:do if(!(c[e>>2]|0)){a=fz(a)|0;c[e>>2]=fx(a,c[b>>2]&3)|0;a=gx(b)|0;d=d+12|0;c[d>>2]=My(ez(b)|0,((a|0)>4?a:4)<<2)|0;a=nb[c[f>>2]&63](f,0,128)|0;while(1){if(!a)break a;e=ez(b)|0;e=Oz(e,c[a+12>>2]|0)|0;c[(c[d>>2]|0)+(c[a+16>>2]<<2)>>2]=e;a=nb[c[f>>2]&63](f,a,8)|0}}while(0);return}function fx(a,b){a=a|0;b=b|0;var d=0,e=0;e=l;l=l+16|0;d=e;a=_w(a,0)|0;a:do if(!a)a=0;else switch(b|0){case 0:{a=c[a+16>>2]|0;break a}case 1:{a=c[a+8>>2]|0;break a}case 2:case 3:{a=c[a+12>>2]|0;break a}default:{c[d>>2]=b;Pw(1,93347,d)|0;a=0;break a}}while(0);l=e;return a|0}function gx(a){a=a|0;var b=0;b=fz(ez(a)|0)|0;a=fx(b,c[a>>2]&3)|0;if(!a)a=0;else a=Ew(a)|0;return a|0}function hx(a){a=a|0;var b=0,d=0,e=0,f=0;d=Az(a,93334,20,0)|0;e=d+8|0;c[e>>2]=CA(a,18260,c[4563]|0)|0;f=d+12|0;c[f>>2]=CA(a,18260,c[4563]|0)|0;d=d+16|0;c[d>>2]=CA(a,18260,c[4563]|0)|0;b=yA(a)|0;if(!b){b=c[46170]|0;if(!((b|0)==0|(b|0)==(a|0))){b=_w(b,0)|0;ix(c[b+8>>2]|0,c[e>>2]|0,a,1);ix(c[b+12>>2]|0,c[f>>2]|0,a,2);ix(c[b+16>>2]|0,c[d>>2]|0,a,0)}}else{a=_w(b,0)|0;Hw(c[e>>2]|0,c[a+8>>2]|0)|0;Hw(c[f>>2]|0,c[a+12>>2]|0)|0;Hw(c[d>>2]|0,c[a+16>>2]|0)|0}return}function ix(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;g=nb[c[b>>2]&63](b,0,128)|0;while(1){if(!g)break;h=jx(e,c[g+8>>2]|0,c[g+12>>2]|0,c[g+16>>2]|0,f)|0;a[h+22>>0]=a[g+22>>0]|0;a[h+21>>0]=a[g+21>>0]|0;nb[c[d>>2]&63](d,h,1)|0;g=nb[c[b>>2]&63](b,g,8)|0}return}function jx(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0;h=My(b,24)|0;a[h+20>>0]=g;c[h+8>>2]=Oz(b,d)|0;c[h+12>>2]=Oz(b,e)|0;c[h+16>>2]=f;return h|0}function kx(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+32|0;e=d;c[e+8>>2]=b;b=nb[c[a>>2]&63](a,e,4)|0;l=d;return b|0}function lx(a,b){a=a|0;b=b|0;var c=0;c=Hw(a,0)|0;b=kx(a,b)|0;Hw(a,c)|0;return b|0}function mx(a,b){a=a|0;b=b|0;a=dx(a)|0;if(!a)a=0;else a=kx(c[a+8>>2]|0,b)|0;return a|0}function nx(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;h=l;l=l+16|0;g=h;if(!b){b=c[46170]|0;if(!b){a[g>>0]=a[18296]|0;a[g+1>>0]=a[18297]|0;a[g+2>>0]=a[18298]|0;a[g+3>>0]=a[18299]|0;b=Xx(0,g,0)|0;c[46170]=b}}if(!f)b=px(b,d,e)|0;else b=ox(b,d,e,f)|0;l=h;return b|0}function ox(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;i=fz(a)|0;_w(a,1)|0;g=fx(a,b)|0;f=lx(g,d)|0;a:do if(!f){f=kx(g,d)|0;if(f|0){f=jx(a,d,e,c[f+16>>2]|0,b)|0;nb[c[g>>2]&63](g,f,1)|0;h=16;break}g=fx(i,b)|0;f=jx(a,d,e,Ew(g)|0,b)|0;nb[c[g>>2]&63](g,f,1)|0;switch(b|0){case 0:{jB(i,i,57,f,1)|0;h=16;break a}case 1:{d=Sy(i)|0;while(1){if(!d){h=16;break a}qx(a,d,f);d=Ty(i,d)|0}}case 2:case 3:{g=Sy(i)|0;while(1){if(!g){h=16;break a}d=Ex(i,g)|0;while(1){if(!d)break;qx(a,d,f);d=Gx(i,d)|0}g=Ty(i,g)|0}}default:break a}}else{h=f+12|0;Qz(a,c[h>>2]|0)|0;c[h>>2]=Oz(a,e)|0;h=16}while(0);if((h|0)==16)if((b|0)==0&(f|0)!=0)rx(a,f,e)|0;iz(a,a,f);return f|0}function px(a,b,c){a=a|0;b=b|0;c=c|0;a=fx(a,b)|0;if(!a)a=0;else a=kx(a,c)|0;return a|0}function qx(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;b=dx(b)|0;f=d+16|0;e=c[f>>2]|0;if((e|0)>3){g=c[a+64>>2]|0;b=b+12|0;e=e<<2;c[b>>2]=ob[c[(c[g>>2]|0)+8>>2]&127](c[g+12>>2]|0,c[b>>2]|0,e,e+4|0)|0}else b=b+12|0;g=Oz(a,c[d+12>>2]|0)|0;c[(c[b>>2]|0)+(c[f>>2]<<2)>>2]=g;return}function rx(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;h=ez(a)|0;g=(dx(a)|0)+12|0;i=b+16|0;Qz(h,c[(c[g>>2]|0)+(c[i>>2]<<2)>>2]|0)|0;f=Oz(h,d)|0;c[(c[g>>2]|0)+(c[i>>2]<<2)>>2]=f;do if(!(c[a>>2]&3)){e=c[(_w(h,0)|0)+16>>2]|0;f=b+8|0;g=lx(e,c[f>>2]|0)|0;if(!g){i=jx(h,c[f>>2]|0,d,c[i>>2]|0,c[a>>2]&3)|0;nb[c[e>>2]&63](e,i,1)|0;break}else{i=g+12|0;Qz(h,c[i>>2]|0)|0;c[i>>2]=Oz(h,d)|0;break}}while(0);iz(h,a,b);return 0}function sx(a,b,d){a=a|0;b=b|0;d=d|0;a=fx(a,b)|0;do if(a){b=c[a>>2]|0;if(!d){a=nb[b&63](a,0,128)|0;break}else{a=nb[b&63](a,d,8)|0;break}}else a=0;while(0);return a|0}function tx(a){a=a|0;var b=0;c[46171]=a;b=dx(a)|0;if(b|0){ux(a,b);Cz(a,c[b>>2]|0)|0}b=_w(a,0)|0;if(b)if(((EA(a,c[b+8>>2]|0)|0)==0?(EA(a,c[b+12>>2]|0)|0)==0:0)?(EA(a,c[b+16>>2]|0)|0)==0:0){Cz(a,c[b>>2]|0)|0;b=0}else b=1;else b=0;return b|0}function ux(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=ez(a)|0;e=gx(a)|0;b=b+12|0;a=0;while(1){d=c[b>>2]|0;if((a|0)>=(e|0))break;Qz(f,c[d+(a<<2)>>2]|0)|0;a=a+1|0}Ny(f,d);return}function vx(a){a=a|0;var b=0;b=dx(a)|0;if(b|0){ux(a,b);Cz(a,93322)|0}return}function wx(a){a=a|0;var b=0;b=dx(a)|0;if(b|0){ux(a,b);Cz(a,93322)|0}return}function xx(a,b){a=a|0;b=b|0;b=mx(a,b)|0;if(!b)b=0;else{a=c[(dx(a)|0)+12>>2]|0;b=c[a+(c[b+16>>2]<<2)>>2]|0}return b|0}function yx(a,b){a=a|0;b=b|0;a=c[(dx(a)|0)+12>>2]|0;return c[a+(c[b+16>>2]<<2)>>2]|0}function zx(a,b,c){a=a|0;b=b|0;c=c|0;b=mx(a,b)|0;if(!b)b=-1;else{rx(a,b,c)|0;b=0}return b|0}function Ax(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=ez(a)|0;f=nx(f,c[a>>2]&3,b,0)|0;if(!f){f=ez(a)|0;f=nx(f,c[a>>2]&3,b,e)|0}rx(a,f,d)|0;return 0}function Bx(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=ez(a)|0;f=c[a>>2]|0;a:do if(!((c[b>>2]^f)&3)){d=1;e=0;while(1){e=sx(g,f&3,e)|0;if(!e)break a;d=mx(b,c[e+8>>2]|0)|0;if(!d){d=1;break a}f=yx(a,e)|0;rx(b,d,f)|0;if(Rz(f)|0)Sz(yx(b,d)|0);d=0;f=c[a>>2]|0}}else d=1;while(0);return d|0}function Cx(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;a=c[b+40>>2]|0;f=c[d+40>>2]|0;if((a|0)==(f|0)){e=(c[b>>2]|0)>>>4;a=(c[d>>2]|0)>>>4;if(e>>>0>=a>>>0)if(e>>>0>a>>>0)a=1;else g=6;else a=-1}else{e=(c[a>>2]|0)>>>4;a=(c[f>>2]|0)>>>4;if(e>>>0>=a>>>0)if(e>>>0>a>>>0)a=1;else g=6;else a=-1}if((g|0)==6)a=0;return a|0}function Dx(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;a=(c[b+40>>2]|0)+8|0;g=c[a>>2]|0;a=c[a+4>>2]|0;f=(c[d+40>>2]|0)+8|0;e=c[f>>2]|0;f=c[f+4>>2]|0;do if(!(a>>>0>>0|(a|0)==(f|0)&g>>>0>>0))if(a>>>0>f>>>0|(a|0)==(f|0)&g>>>0>e>>>0)a=1;else{e=b+8|0;a=c[e>>2]|0;e=c[e+4>>2]|0;if(!((a|0)==0&(e|0)==0)?(i=d+8|0,h=c[i>>2]|0,i=c[i+4>>2]|0,!((h|0)==0&(i|0)==0)):0){if(e>>>0>>0|(e|0)==(i|0)&a>>>0>>0){a=-1;break}if(e>>>0>i>>>0|(e|0)==(i|0)&a>>>0>h>>>0){a=1;break}}a=0}else a=-1;while(0);return a|0}function Ex(a,b){a=a|0;b=b|0;var d=0;b=Fx(a,b)|0;if(!b)b=0;else{d=a+44|0;a=b+32|0;Dw(c[d>>2]|0,c[a>>2]|0)|0;b=c[d>>2]|0;b=nb[c[b>>2]&63](b,0,128)|0;c[a>>2]=zw(c[d>>2]|0)|0}return b|0}function Fx(a,b){a=a|0;b=b|0;var d=0,e=0;e=l;l=l+48|0;d=e;if((c[b+24>>2]|0)==(a|0))a=b+28|0;else{c[d+16>>2]=b;a=c[a+40>>2]|0;a=nb[c[a>>2]&63](a,d,4)|0}l=e;return a|0}function Gx(a,b){a=a|0;b=b|0;var d=0,e=0;d=Fx(a,c[((c[b>>2]&3|0)==3?b:b+48|0)+40>>2]|0)|0;if(!d)a=0;else{e=a+44|0;d=d+32|0;Dw(c[e>>2]|0,c[d>>2]|0)|0;a=c[e>>2]|0;a=nb[c[a>>2]&63](a,b,8)|0;c[d>>2]=zw(c[e>>2]|0)|0}return a|0}function Hx(a,b){a=a|0;b=b|0;var d=0;b=Fx(a,b)|0;if(!b)b=0;else{d=a+44|0;a=b+28|0;Dw(c[d>>2]|0,c[a>>2]|0)|0;b=c[d>>2]|0;b=nb[c[b>>2]&63](b,0,128)|0;c[a>>2]=zw(c[d>>2]|0)|0}return b|0}function Ix(a,b){a=a|0;b=b|0;var d=0,e=0;d=Fx(a,c[((c[b>>2]&3|0)==2?b:b+-48|0)+40>>2]|0)|0;if(!d)a=0;else{e=a+44|0;d=d+28|0;Dw(c[e>>2]|0,c[d>>2]|0)|0;a=c[e>>2]|0;a=nb[c[a>>2]&63](a,b,8)|0;c[d>>2]=zw(c[e>>2]|0)|0}return a|0}function Jx(a,b){a=a|0;b=b|0;var c=0;c=Ex(a,b)|0;if(!c)c=Hx(a,b)|0;return c|0}function Kx(a,b,d){a=a|0;b=b|0;d=d|0;a:do if((c[b>>2]&3|0)==2){b=Gx(a,b)|0;if(!b){b=0;do{if(!b)b=Hx(a,d)|0;else b=Ix(a,b)|0;if(!b){b=0;break a}}while((c[b+40>>2]|0)==(d|0))}}else do{b=Ix(a,b)|0;if(!b){b=0;break a}}while((c[b+40>>2]|0)==(d|0));while(0);return b|0}function Lx(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0;h=l;l=l+32|0;f=h+16|0;g=h;if((gy(a)|0)!=0?(c[g>>2]=0,c[g+4>>2]=0,c[g+8>>2]=0,c[g+12>>2]=0,c[f>>2]=c[g>>2],c[f+4>>2]=c[g+4>>2],c[f+8>>2]=c[g+8>>2],c[f+12>>2]=c[g+12>>2],(Px(a,b,e,f)|0)!=0):0)f=0;else f=((d[a+24>>0]|0)>>>2&1^1)&255|(b|0)!=(e|0);l=h;return f|0}function Mx(a,b){a=a|0;b=b|0;Ox(a,b);return}function Nx(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0;Xy(b,d,1)|0;Xy(b,e,1)|0;h=My(b,96)|0;i=h+48|0;l=_x(b,2)|0;j=c[i>>2]|0;k=c[h>>2]|0;m=h+8|0;c[m>>2]=f;c[m+4>>2]=g;m=h+56|0;c[m>>2]=f;c[m+4>>2]=g;g=l<<4;c[h>>2]=k&12|g|2;c[i>>2]=j&12|g|3;c[h+88>>2]=d;c[h+40>>2]=e;Ox(b,h);if(a[b+24>>0]&64){Az(h,93322,16,0)|0;cx(b,h)}gz(b,h);return h|0}function Ox(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0;i=l;l=l+16|0;d=i;h=c[b>>2]&3;g=(h|0)==2?b:b+-48|0;h=(h|0)==3?b:b+48|0;e=c[h+40>>2]|0;f=c[g+40>>2]|0;while(1){if(!a)break;c[d>>2]=c[b>>2];c[d+4>>2]=c[b+4>>2];c[d+8>>2]=c[b+8>>2];c[d+12>>2]=c[b+12>>2];if(Px(a,e,f,d)|0)break;j=Fx(a,e)|0;m=a+44|0;Qx(c[m>>2]|0,j+32|0,g);k=a+48|0;Qx(c[k>>2]|0,j+24|0,g);j=Fx(a,f)|0;Qx(c[m>>2]|0,j+28|0,h);Qx(c[k>>2]|0,j+20|0,h);a=yA(a)|0}l=i;return}function Px(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;h=l;l=l+48|0;f=h;if(!((b|0)==0|(d|0)==0)?(c[f>>2]=c[e>>2],c[f+4>>2]=c[e+4>>2],c[f+8>>2]=c[e+8>>2],c[f+12>>2]=c[e+12>>2],c[f+40>>2]=b,g=Fx(a,d)|0,(g|0)!=0):0){e=a+48|0;g=g+20|0;Dw(c[e>>2]|0,c[g>>2]|0)|0;a=c[e>>2]|0;a=nb[c[a>>2]&63](a,f,4)|0;c[g>>2]=zw(c[e>>2]|0)|0}else a=0;l=h;return a|0}function Qx(a,b,d){a=a|0;b=b|0;d=d|0;Dw(a,c[b>>2]|0)|0;nb[c[a>>2]&63](a,d,1)|0;c[b>>2]=zw(a)|0;return}function Rx(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;n=l;l=l+48|0;i=n+24|0;k=n+16|0;j=n;do if(!(oy(a,2,e,k,0)|0))if(!e){if(f|0?(gy(a)|0)==0:0){m=18;break};c[j>>2]=0;c[j+4>>2]=0;c[j+8>>2]=0;c[j+12>>2]=0;m=7}else m=17;else{o=j;c[o>>2]=0;c[o+4>>2]=0;o=k;g=c[o+4>>2]|0;m=j+8|0;c[m>>2]=c[o>>2];c[m+4>>2]=g;c[j>>2]=2;m=7}while(0);a:do if((m|0)==7){c[i>>2]=c[j>>2];c[i+4>>2]=c[j+4>>2];c[i+8>>2]=c[j+8>>2];c[i+12>>2]=c[j+12>>2];g=Px(a,b,d,i)|0;b:do if(!g){if(fy(a)|0?(c[i>>2]=c[j>>2],c[i+4>>2]=c[j+4>>2],c[i+8>>2]=c[j+8>>2],c[i+12>>2]=c[j+12>>2],h=Px(a,d,b,i)|0,h|0):0){g=h;break}do if(f|0){g=fz(a)|0;c[i>>2]=c[j>>2];c[i+4>>2]=c[j+4>>2];c[i+8>>2]=c[j+8>>2];c[i+12>>2]=c[j+12>>2];g=Px(g,b,d,i)|0;if(!g){if(!(fy(a)|0))break;g=fz(a)|0;c[i>>2]=c[j>>2];c[i+4>>2]=c[j+4>>2];c[i+8>>2]=c[j+8>>2];c[i+12>>2]=c[j+12>>2];g=Px(g,d,b,i)|0;if(!g)break}Mx(a,g);break b}while(0);m=17;break a}while(0)}while(0);if((m|0)==17)if(!f)g=0;else m=18;if((m|0)==18)if((Lx(a,b,d)|0)!=0?(oy(a,2,e,k,1)|0)!=0:0){g=k;g=Nx(a,b,d,c[g>>2]|0,c[g+4>>2]|0)|0;sy(a,2,g)}else g=0;l=n;return g|0}function Sx(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;d=(c[b>>2]&3|0)==3;g=d?b+-48|0:b;d=d?b:b+48|0;b=c[g+40>>2]|0;h=Fx(a,c[d+40>>2]|0)|0;f=a+44|0;Tx(c[f>>2]|0,h+32|0,g);e=a+48|0;Tx(c[e>>2]|0,h+24|0,g);b=Fx(a,b)|0;Tx(c[f>>2]|0,b+28|0,d);Tx(c[e>>2]|0,b+20|0,d);return}function Tx(a,b,d){a=a|0;b=b|0;d=d|0;Dw(a,c[b>>2]|0)|0;nb[c[a>>2]&63](a,d,2)|0;c[b>>2]=zw(a)|0;return}function Ux(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=e;d=(c[d>>2]&3|0)==2?d:d+-48|0;g=c[d>>2]&3;h=c[((g|0)==3?d:d+48|0)+40>>2]|0;g=c[((g|0)==2?d:d+-48|0)+40>>2]|0;c[f>>2]=c[d>>2];c[f+4>>2]=c[d+4>>2];c[f+8>>2]=c[d+8>>2];c[f+12>>2]=c[d+12>>2];if(Px(b,h,g,f)|0){if((fz(b)|0)==(b|0)){if(a[b+24>>0]&64)wx(d);kz(b,d);Iz(d);h=d+8|0;qy(b,2,c[h>>2]|0,c[h+4>>2]|0)}if(!(jB(b,d,58,0,0)|0))if((fz(b)|0)==(b|0)){Ny(b,d);d=0}else d=0;else d=-1}else d=-1;l=e;return d|0}function Vx(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=l;l=l+16|0;e=h;f=Xy(a,c[((c[b>>2]&3|0)==3?b:b+48|0)+40>>2]|0,d)|0;g=Xy(a,c[((c[b>>2]&3|0)==2?b:b+-48|0)+40>>2]|0,d)|0;do if((f|0)!=0&(g|0)!=0){c[e>>2]=c[b>>2];c[e+4>>2]=c[b+4>>2];c[e+8>>2]=c[b+8>>2];c[e+12>>2]=c[b+12>>2];e=Px(a,f,g,e)|0;f=(e|0)==0;if(!((d|0)!=0&f)){if(f)break}else{Ox(a,b);e=b}d=c[e>>2]&3;l=h;return ((d|0)==(c[b>>2]&3|0)?e:e+(((d|0)==3?-1:1)*48|0)|0)|0}while(0);l=h;return 0}function Wx(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;b=b+8|0;e=d+8|0;e=t3(c[b>>2]|0,c[b+4>>2]|0,c[e>>2]|0,c[e+4>>2]|0)|0;return ((e|0)==0?0:e>>31|1)|0}function Xx(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;h=l;l=l+16|0;g=h;j=Yx(e)|0;f=lb[c[(c[j>>2]|0)+4>>2]&127](c[j+12>>2]|0,72)|0;c[f>>2]=c[f>>2]&-4;i=f+64|0;c[i>>2]=j;k=f+24|0;d=c[d>>2]|0;c[k>>2]=d;a[k>>0]=d&255|8;c[f+60>>2]=f;e=lb[c[c[j+4>>2]>>2]&127](f,e)|0;c[(c[i>>2]|0)+16>>2]=e;if(oy(f,0,b,g,1)|0){i=g;j=c[i+4>>2]|0;k=f+8|0;c[k>>2]=c[i>>2];c[k+4>>2]=j}k=Zx(f)|0;sy(k,0,f);l=h;return k|0}function Yx(b){b=b|0;var d=0,e=0,f=0,g=0;d=(b|0)!=0;if(d){e=c[b>>2]|0;e=(e|0)==0?18632:e}else e=18632;g=kb[c[e>>2]&63](b)|0;f=lb[c[e+4>>2]&127](g,80)|0;c[f>>2]=e;c[f+12>>2]=g;if(d){g=c[b+4>>2]|0;c[f+4>>2]=(g|0)==0?18508:g;b=c[b+8>>2]|0;b=(b|0)==0?18608:b}else{c[f+4>>2]=18508;b=18608}c[f+8>>2]=b;a[f+52>>0]=1;return f|0}function Zx(b){b=b|0;var d=0,e=0;c[b+36>>2]=CA(b,18688,c[4563]|0)|0;c[b+40>>2]=CA(b,18652,c[4563]|0)|0;d=(fz(b)|0)==(b|0);c[b+44>>2]=CA(b,d?18300:18336,c[4563]|0)|0;d=(fz(b)|0)==(b|0);c[b+48>>2]=CA(b,d?18372:18408,c[4563]|0)|0;c[b+52>>2]=CA(b,18444,c[4563]|0)|0;d=yA(b)|0;if(!((d|0)!=0?(e=_x(d,0)|0,c[b>>2]=c[b>>2]&15|e<<4,e=c[d+52>>2]|0,nb[c[e>>2]&63](e,b,1)|0,!(a[d+24>>0]&64)):0))ax(b);gz(b,b);return b|0}function _x(a,b){a=a|0;b=b|0;var d=0;d=(c[a+64>>2]|0)+24+(b<<3)|0;b=d;b=s3(c[b>>2]|0,c[b+4>>2]|0,1,0)|0;a=z;c[d>>2]=b;c[d+4>>2]=a;z=a;return b|0}function $x(b){b=b|0;var d=0,e=0,f=0,g=0;f=yA(b)|0;g=(f|0)==0;if(g?(d=b+64|0,(c[(c[c[d>>2]>>2]|0)+16>>2]|0)!=0):0){kz(b,b);g=b+8|0;qy(b,0,c[g>>2]|0,c[g+4>>2]|0);d=c[d>>2]|0;tb[c[(c[d>>2]|0)+16>>2]&127](c[d+12>>2]|0);d=0}else e=4;do if((e|0)==4){d=wA(b)|0;while(1){if(!d)break;e=xA(d)|0;$x(d)|0;d=e}d=Sy(b)|0;while(1){if(!d)break;e=Ty(b,d)|0;cz(b,d)|0;d=e}By(b);kz(b,b);if(((((EA(b,c[b+40>>2]|0)|0)==0?(EA(b,c[b+36>>2]|0)|0)==0:0)?(EA(b,c[b+48>>2]|0)|0)==0:0)?(EA(b,c[b+44>>2]|0)|0)==0:0)?(EA(b,c[b+52>>2]|0)|0)==0:0){if(a[b+24>>0]&64?tx(b)|0:0){d=-1;break}Iz(b);e=b+8|0;qy(b,0,c[e>>2]|0,c[e+4>>2]|0);if(!g){zA(f,b)|0;Ny(f,b);d=0;break}d=b+64|0;while(1){e=c[d>>2]|0;f=c[e+48>>2]|0;if(!f)break;nz(b,c[f>>2]|0)|0}tb[c[(c[e+4>>2]|0)+20>>2]&127](c[e+16>>2]|0);if(!(Jz(b)|0)){d=c[d>>2]|0;g=c[d+12>>2]|0;f=(c[d>>2]|0)+12|0;ub[c[f>>2]&63](g,b);ub[c[f>>2]&63](g,d);d=0}else d=-1}else d=-1}while(0);return d|0}function ay(a){a=a|0;return Ew(c[a+40>>2]|0)|0}function by(a){a=a|0;var b=0,c=0,d=0;b=0;c=Sy(a)|0;while(1){if(!c)break;d=(cy(a,c,0,1)|0)+b|0;b=d;c=Ty(a,c)|0}return b|0}function cy(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=Fx(a,b)|0;if(f){if(!e)b=0;else b=dy(c[a+44>>2]|0,f+32|0)|0;if(d)b=(dy(c[a+44>>2]|0,f+28|0)|0)+b|0}else b=0;return b|0}function dy(a,b){a=a|0;b=b|0;var d=0;Dw(a,c[b>>2]|0)|0;d=Ew(a)|0;c[b>>2]=zw(a)|0;return d|0}function ey(b){b=b|0;return a[b+24>>0]&1|0}function fy(a){a=a|0;return (ey(a)|0)==0|0}function gy(a){a=a|0;return (d[a+24>>0]|0)>>>1&1|0}function hy(a,b){a=a|0;b=b|0;return a|0}function iy(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;if(!d){f=1392;d=c[f>>2]|0;f=c[f+4>>2]|0;c[e>>2]=d;c[e+4>>2]=f;f=s3(d|0,f|0,2,0)|0;e=1392;c[e>>2]=f;c[e+4>>2]=z}else{if(!f)a=Lz(a,d)|0;else a=Oz(a,d)|0;c[e>>2]=a;c[e+4>>2]=0}return 1}function jy(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return 0}function ky(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;if((c&1|0)==0&0==0)Qz(a,c)|0;return}function ly(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ((c&1|0)==0&0==0?c:0)|0}function my(a){a=a|0;return}function ny(a,b,c){a=a|0;b=b|0;c=c|0;return}function oy(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;i=(e|0)!=0;do if(i){if((a[e>>0]|0)!=37?(h=c[b+64>>2]|0,h=pb[c[(c[h+4>>2]|0)+4>>2]&127](c[h+16>>2]|0,d,e,f,g)|0,h|0):0)break;h=ty(b,d,e,f)|0;if(!h)j=5}else j=5;while(0);if((j|0)==5)if(g){h=c[b+64>>2]|0;h=pb[c[(c[h+4>>2]|0)+4>>2]&127](c[h+16>>2]|0,d,0,f,g)|0;if(i&(h|0)!=0){j=f;uy(b,d,e,c[j>>2]|0,c[j+4>>2]|0)}}else h=0;return h|0}function py(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;a=c[a+64>>2]|0;return ob[c[(c[a+4>>2]|0)+8>>2]&127](c[a+16>>2]|0,b,d,e)|0}function qy(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;zy(a,b,d,e)|0;a=c[a+64>>2]|0;xb[c[(c[a+4>>2]|0)+12>>2]&31](c[a+16>>2]|0,b,d,e);return}function ry(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;h=l;l=l+16|0;g=h;d=ez(a)|0;f=a+8|0;b=f;b=xy(d,c[a>>2]&3,c[b>>2]|0,c[b+4>>2]|0)|0;do if(!b){b=c[d+64>>2]|0;d=c[(c[b+4>>2]|0)+16>>2]|0;if(d|0?(e=f,e=ob[d&127](c[b+16>>2]|0,c[a>>2]&3,c[e>>2]|0,c[e+4>>2]|0)|0,e|0):0){b=e;break}if((c[a>>2]&3|0)==2)b=0;else{e=c[f>>2]|0;f=c[f+4>>2]|0;c[g>>2]=37;b=g+8|0;c[b>>2]=e;c[b+4>>2]=f;Y0(191693,93374,g)|0;b=191693}}while(0);l=h;return b|0}function sy(a,b,d){a=a|0;b=b|0;d=d|0;a=c[a+64>>2]|0;vb[c[(c[a+4>>2]|0)+24>>2]&127](c[a+16>>2]|0,b,d);return}function ty(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;i=l;l=l+32|0;h=i;b=c[(c[a+64>>2]|0)+56+(((b|0)==3?2:b)<<2)>>2]|0;if(((b|0)!=0?(f=Lz(a,d)|0,(f|0)!=0):0)?(c[h+24>>2]=f,g=nb[c[b>>2]&63](b,h,4)|0,(g|0)!=0):0){d=g+16|0;h=c[d+4>>2]|0;b=e;c[b>>2]=c[d>>2];c[b+4>>2]=h;b=1}else b=0;l=i;return b|0}function uy(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;h=My(a,32)|0;g=h+16|0;c[g>>2]=e;c[g+4>>2]=f;c[h+24>>2]=Oz(a,d)|0;e=(b|0)==3?2:b;g=a+64|0;d=c[g>>2]|0;b=c[d+56+(e<<2)>>2]|0;if(!b){f=CA(a,18536,c[4563]|0)|0;c[(c[g>>2]|0)+56+(e<<2)>>2]=f;b=c[g>>2]|0}else{f=b;b=d}b=c[b+68+(e<<2)>>2]|0;if(!b){b=CA(a,18572,c[4563]|0)|0;c[(c[g>>2]|0)+68+(e<<2)>>2]=b}nb[c[f>>2]&63](f,h,1)|0;nb[c[b>>2]&63](b,h,1)|0;return}function vy(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;a=b+16|0;b=c[a>>2]|0;a=c[a+4>>2]|0;d=d+16|0;e=c[d>>2]|0;d=c[d+4>>2]|0;return (a>>>0>d>>>0|(a|0)==(d|0)&b>>>0>e>>>0?1:(a>>>0>>0|(a|0)==(d|0)&b>>>0>>0)<<31>>31)|0}function wy(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;b=c[b+24>>2]|0;e=c[d+24>>2]|0;return (b>>>0>e>>>0?1:(b>>>0>>0)<<31>>31)|0}function xy(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;a=yy(a,b,d,e)|0;if(!a)a=0;else a=c[a+24>>2]|0;return a|0}function yy(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;g=l;l=l+32|0;f=g;a=c[(c[a+64>>2]|0)+68+(((b|0)==3?2:b)<<2)>>2]|0;if(!a)a=0;else{b=f+16|0;c[b>>2]=d;c[b+4>>2]=e;a=nb[c[a>>2]&63](a,f,4)|0}l=g;return a|0}function zy(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=(b|0)==3?2:b;b=yy(a,f,d,e)|0;if(!b)b=0;else{e=a+64|0;d=c[(c[e>>2]|0)+56+(f<<2)>>2]|0;nb[c[d>>2]&63](d,b,2)|0;e=c[(c[e>>2]|0)+68+(f<<2)>>2]|0;nb[c[e>>2]&63](e,b,2)|0;Qz(a,c[b+24>>2]|0)|0;Ny(a,b);b=1}return b|0}function Ay(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;c[46171]=b;g=c[b+64>>2]|0;f=0;while(1){if((f|0)==3)break;h=g+56+(f<<2)|0;d=c[h>>2]|0;a:do if(d|0){d=nb[c[d>>2]&63](d,0,128)|0;while(1){if(!d)break a;e=c[h>>2]|0;e=nb[c[e>>2]&63](e,d,8)|0;if((a[c[d+24>>2]>>0]|0)!=37){d=e;continue}i=d+16|0;zy(b,f,c[i>>2]|0,c[i+4>>2]|0)|0;d=e}}while(0);f=f+1|0}return}function By(a){a=a|0;c[46171]=a;a=a+64|0;Cy((c[a>>2]|0)+56|0);Cy((c[a>>2]|0)+68|0);return}function Cy(a){a=a|0;var b=0,d=0,e=0;b=0;while(1){if((b|0)==3)break;d=a+(b<<2)|0;e=c[d>>2]|0;if(e|0){yw(e)|0;c[d>>2]=0}b=b+1|0}return}function Dy(a,b,c){a=a|0;b=b|0;c=c|0;if(!(O0(b,c,a)|0))a=0;else a=W_(b)|0;return a|0}function Ey(a,b){a=a|0;b=b|0;return D1(b,a)|0}function Fy(a){a=a|0;return w1(a)|0}function Gy(a){a=a|0;var b=0,d=0,e=0;b=l;l=l+32|0;e=b+12|0;d=b;c[4656]=c[4653];c[4657]=c[4654];c[e>>2]=a;c[e+4>>2]=W_(a)|0;c[e+8>>2]=0;c[d>>2]=18632;c[d+4>>2]=18508;c[d+8>>2]=18620;a=TB(e,d)|0;Uz(0);l=b;return a|0}function Hy(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;if((e|0)!=0?(h=b+8|0,f=c[h>>2]|0,(f|0)<(c[b+4>>2]|0)):0){i=(c[b>>2]|0)+f|0;b=0;g=a[i>>0]|0;f=d;d=i;while(1){d=d+1|0;a[f>>0]=g;b=b+1|0;if(!(g<<24>>24!=10&(b|0)<(e|0)))break;g=a[d>>0]|0;if(!(g<<24>>24))break;else f=f+1|0}c[h>>2]=(c[h>>2]|0)+b}else b=0;return b|0}function Iy(a){a=a|0;return 0}function Jy(a,b){a=a|0;b=b|0;a=C_(b)|0;H3(a|0,0,b|0)|0;return a|0}function Ky(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;a=F_(b,d)|0;if(d>>>0>c>>>0)H3(a+c|0,0,d-c|0)|0;return a|0}function Ly(a,b){a=a|0;b=b|0;D_(b);return}function My(a,b){a=a|0;b=b|0;var d=0;d=l;l=l+16|0;a=c[a+64>>2]|0;a=lb[c[(c[a>>2]|0)+4>>2]&127](c[a+12>>2]|0,b)|0;if(!a)Pw(1,93380,d)|0;l=d;return a|0}function Ny(a,b){a=a|0;b=b|0;if(b|0){a=c[a+64>>2]|0;ub[c[(c[a>>2]|0)+12>>2]&63](c[a+12>>2]|0,b)}return}function Oy(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;a=(c[b+16>>2]|0)+8|0;b=c[a>>2]|0;a=c[a+4>>2]|0;d=(c[d+16>>2]|0)+8|0;e=c[d>>2]|0;d=c[d+4>>2]|0;return (a>>>0>>0|(a|0)==(d|0)&b>>>0>>0?-1:(a>>>0>d>>>0|(a|0)==(d|0)&b>>>0>e>>>0)&1)|0}function Py(a,b,d){a=a|0;b=b|0;d=d|0;a=c[b+16>>2]|0;if((a+28|0)!=(b|0))Ny(c[a+24>>2]|0,b);return}function Qy(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;b=(c[c[b+16>>2]>>2]|0)>>>4;e=(c[c[d+16>>2]>>2]|0)>>>4;return (b>>>0>>0?-1:b>>>0>e>>>0&1)|0}function Ry(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=183176;c[e>>2]=b;c[e+4>>2]=d;c[46176]=183168;a=c[a+40>>2]|0;a=nb[c[a>>2]&63](a,184688,4)|0;if(!a)a=0;else a=c[a+16>>2]|0;return a|0}function Sy(a){a=a|0;a=c[a+36>>2]|0;a=nb[c[a>>2]&63](a,0,128)|0;if(!a)a=0;else a=c[a+16>>2]|0;return a|0}function Ty(a,b){a=a|0;b=b|0;var d=0;b=Fx(a,b)|0;if((b|0)!=0?(d=c[a+36>>2]|0,d=nb[c[d>>2]&63](d,b,8)|0,(d|0)!=0):0)b=c[d+16>>2]|0;else b=0;return b|0}function Uy(a){a=a|0;a=c[a+36>>2]|0;a=nb[c[a>>2]&63](a,0,256)|0;if(!a)a=0;else a=c[a+16>>2]|0;return a|0}function Vy(a,b){a=a|0;b=b|0;var d=0;b=Fx(a,b)|0;if((b|0)!=0?(d=c[a+36>>2]|0,d=nb[c[d>>2]&63](d,b,16)|0,(d|0)!=0):0)b=c[d+16>>2]|0;else b=0;return b|0}function Wy(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;e=Ry(a,b,c)|0;do if((d|0)!=0&(e|0)==0){e=fz(a)|0;if((e|0)!=(a|0)?(f=Ry(e,b,c)|0,f|0):0){Xy(a,f,1)|0;e=f;break}if(!(py(a,1,b,c)|0))e=0;else{e=_x(a,1)|0;e=Yy(a,b,c,e,z)|0;Zy(a,e);_y(a,e)}}while(0);return e|0}function Xy(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=fz(a)|0;if((e|0)==(c[b+24>>2]|0)){e=b+8|0;e=Ry(a,c[e>>2]|0,c[e+4>>2]|0)|0;if((d|0)!=0&(e|0)==0){e=yA(a)|0;if(!e)e=0;else{d=Xy(e,b,d)|0;$y(a,d);return d|0}}}else e=0;return e|0}function Yy(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;g=My(b,64)|0;h=c[g>>2]|0;i=g+8|0;c[i>>2]=d;c[i+4>>2]=e;c[g>>2]=h&12|f<<4|1;c[g+24>>2]=fz(b)|0;if(a[(fz(b)|0)+24>>0]&64)Az(g,93322,16,0)|0;return g|0}function Zy(a,b){a=a|0;b=b|0;do{$y(a,b);a=yA(a)|0}while((a|0)!=0);return}function _y(b,c){b=b|0;c=c|0;if(a[(fz(b)|0)+24>>0]&64)bx(b,c);gz(b,c);return}function $y(a,b){a=a|0;b=b|0;var d=0,e=0;e=a+40|0;Ew(c[e>>2]|0)|0;if((fz(a)|0)==(a|0))d=b+28|0;else d=My(a,36)|0;c[d+16>>2]=b;e=c[e>>2]|0;nb[c[e>>2]&63](e,d,1)|0;e=c[a+36>>2]|0;nb[c[e>>2]&63](e,d,1)|0;return}function az(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;j=l;l=l+16|0;g=j;h=fz(a)|0;if(oy(a,1,b,g,0)|0){e=g;e=Ry(a,c[e>>2]|0,c[e+4>>2]|0)|0;if(!e)if(!((d|0)==0|(h|0)==(a|0))?(f=g,f=Ry(h,c[f>>2]|0,c[f+4>>2]|0)|0,(f|0)!=0):0)e=Xy(a,f,1)|0;else i=6}else i=6;if((i|0)==6)if((d|0)!=0?(oy(a,1,b,g,1)|0)!=0:0){i=g;h=c[i>>2]|0;i=c[i+4>>2]|0;e=_x(a,1)|0;e=Yy(a,h,i,e,z)|0;Zy(a,e);_y(a,e);sy(a,1,e)}else e=0;l=j;return e|0}function bz(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;c[46185]=b;d=Jx(a,b)|0;while(1){if(!d)break;e=Kx(a,d,b)|0;Sx(a,d,0);d=e}e=c[a+40>>2]|0;nb[c[e>>2]&63](e,184724,2)|0;e=c[a+36>>2]|0;nb[c[e>>2]&63](e,184724,2)|0;return}function cz(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;f=d+8|0;e=f;if(Ry(b,c[e>>2]|0,c[e+4>>2]|0)|0){if((fz(b)|0)==(b|0)){e=Jx(b,d)|0;while(1){if(!e)break;g=Kx(b,e,d)|0;Ux(b,e)|0;e=g}if(a[b+24>>0]&64)vx(d);kz(b,d);Iz(d);g=f;qy(b,1,c[g>>2]|0,c[g+4>>2]|0)}if(!(jB(b,d,59,0,0)|0))if((fz(b)|0)==(b|0)){Ny(b,d);e=0}else e=0;else e=-1}else e=-1;return e|0}function dz(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;h=l;l=l+16|0;e=h;d=c[b>>2]|0;do if(!(d&3))if((yA(b)|0)==(a|0)){d=c[b>>2]|0;g=5;break}else{Pw(1,93406,e)|0;f=-1;break}else g=5;while(0);a:do if((g|0)==5)switch(d&3){case 1:{f=cz(a,b)|0;break a}case 2:case 3:{f=Ux(a,b)|0;break a}case 0:{f=$x(b)|0;break a}default:{}}while(0);l=h;return f|0}function ez(a){a=a|0;var b=0;switch(c[a>>2]&3){case 2:case 3:{b=c[(c[a+40>>2]|0)+24>>2]|0;break}case 1:{b=c[a+24>>2]|0;break}case 0:{b=a;break}default:{}}return b|0}function fz(a){a=a|0;var b=0;switch(c[a>>2]&3){case 2:case 3:{b=(c[a+40>>2]|0)+24|0;break}case 1:{b=a+24|0;break}case 0:{b=a+60|0;break}default:{}}return c[b>>2]|0}function gz(b,d){b=b|0;d=d|0;var e=0;e=c[b+64>>2]|0;if(!(a[e+52>>0]|0))qz(b,d,100,0);else hz(b,d,c[e+48>>2]|0);return}function hz(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;a:do if(d|0){hz(a,b,c[d+8>>2]|0);switch(c[b>>2]&3){case 0:{e=c[d>>2]|0;break}case 1:{e=(c[d>>2]|0)+12|0;break}case 2:{e=(c[d>>2]|0)+24|0;break}default:break a}e=c[e>>2]|0;if(e|0)vb[e&127](a,b,c[d+4>>2]|0)}while(0);return}function iz(b,d,e){b=b|0;d=d|0;e=e|0;var f=0;f=c[b+64>>2]|0;if(!(a[f+52>>0]|0))qz(b,d,101,e);else jz(b,d,e,c[f+48>>2]|0);return}function jz(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;a:do if(e|0){jz(a,b,d,c[e+8>>2]|0);switch(c[b>>2]&3){case 0:{f=(c[e>>2]|0)+4|0;break}case 1:{f=(c[e>>2]|0)+16|0;break}case 2:{f=(c[e>>2]|0)+28|0;break}default:break a}f=c[f>>2]|0;if(f|0)xb[f&31](a,b,c[e+4>>2]|0,d)}while(0);return}function kz(b,d){b=b|0;d=d|0;var e=0;e=c[b+64>>2]|0;if(!(a[e+52>>0]|0))qz(b,d,102,0);else lz(b,d,c[e+48>>2]|0);return}function lz(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;a:do if(d|0){lz(a,b,c[d+8>>2]|0);switch(c[b>>2]&3){case 0:{e=(c[d>>2]|0)+8|0;break}case 1:{e=(c[d>>2]|0)+20|0;break}case 2:{e=(c[d>>2]|0)+32|0;break}default:break a}e=c[e>>2]|0;if(e|0)vb[e&127](a,b,c[d+4>>2]|0)}while(0);return}function mz(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=My(a,12)|0;c[e>>2]=b;c[e+4>>2]=d;d=(c[a+64>>2]|0)+48|0;c[e+8>>2]=c[d>>2];c[d>>2]=e;return}function nz(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;e=(c[a+64>>2]|0)+48|0;d=c[e>>2]|0;a:do if(!d)d=-1;else{if((c[d>>2]|0)!=(b|0)){while(1){if(!d){d=-1;break a}e=d+8|0;f=c[e>>2]|0;if((c[f>>2]|0)==(b|0))break;else d=f}if(f)c[e>>2]=c[f+8>>2]}else c[e>>2]=c[d+8>>2];Ny(a,d);d=0}while(0);return d|0}function oz(a,b){a=a|0;b=b|0;var d=0;d=fz(a)|0;a:do if((d|0)==(fz(b)|0))switch(c[b>>2]&3){case 0:{while(1){if((b|0)==(a|0)){b=1;break a}b=yA(b)|0;if(!b){b=0;break}}break}case 1:{b=b+8|0;b=(Wy(a,c[b>>2]|0,c[b+4>>2]|0,0)|0)!=0;break a}default:{b=(Vx(a,b,0)|0)!=0;break a}}else b=0;while(0);return b&1|0}function pz(a){a=a|0;return c[a>>2]&3|0}function qz(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0;h=l;l=l+16|0;g=h;f=Az(a,93430,44,0)|0;switch(c|0){case 100:{e=rz(f,b,100)|0;if(!(sz(e,b)|0))tz(e,a,b,d)|0;break}case 101:{if(((sz(rz(f,b,100)|0,b)|0)==0?(sz(rz(f,b,102)|0,b)|0)==0:0)?(e=rz(f,b,101)|0,(sz(e,b)|0)==0):0)tz(e,a,b,d)|0;break}case 102:{uz(rz(f,b,100)|0,b);uz(rz(f,b,101)|0,b);e=rz(f,b,102)|0;if(!(sz(e,b)|0))tz(e,a,b,d)|0;break}default:Pw(1,93442,g)|0}l=h;return}function rz(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;g=l;l=l+16|0;e=g;a:do switch(c[b>>2]&3){case 0:switch(d|0){case 100:{d=a+8|0;break a}case 101:{d=a+20|0;break a}case 102:{d=a+32|0;break a}default:{f=14;break a}}case 1:switch(d|0){case 100:{d=a+12|0;break a}case 101:{d=a+24|0;break a}case 102:{d=a+36|0;break a}default:{f=14;break a}}case 2:switch(d|0){case 100:{d=a+16|0;break a}case 101:{d=a+28|0;break a}case 102:{d=a+40|0;break a}default:{f=14;break a}}default:f=14}while(0);if((f|0)==14){Pw(1,93476,e)|0;d=0}a=c[d>>2]|0;if(!a){a=ez(b)|0;a=CA(a,18724,c[4563]|0)|0;c[d>>2]=a}l=g;return a|0}function sz(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+32|0;e=d;f=vz(b)|0;b=e+8|0;c[b>>2]=f;c[b+4>>2]=z;b=nb[c[a>>2]&63](a,e,4)|0;l=d;return b|0}function tz(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=My(ez(d)|0,32)|0;c[f+20>>2]=d;g=vz(d)|0;d=f+8|0;c[d>>2]=g;c[d+4>>2]=z;c[f+16>>2]=b;if(e|0){g=My(b,8)|0;c[f+24>>2]=g;c[g>>2]=e}nb[c[a>>2]&63](a,f,1)|0;return f|0}function uz(a,b){a=a|0;b=b|0;b=sz(a,b)|0;if(b|0)nb[c[a>>2]&63](a,b,2)|0;return}function vz(a){a=a|0;a=a+8|0;z=c[a+4>>2]|0;return c[a>>2]|0}function wz(a,b,d){a=a|0;b=b|0;d=d|0;xz(b);Ny(c[b+16>>2]|0,b);return}function xz(a){a=a|0;var b=0,d=0;b=a+16|0;a=c[a+24>>2]|0;while(1){if(!a)break;d=c[a+4>>2]|0;Ny(c[b>>2]|0,a);a=d}return}function yz(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;k=l;l=l+16|0;i=k;h=c[b+16>>2]|0;f=h;while(1){if(!f){f=0;break}g=c[f>>2]|0;if((g|0)==(d|0)){j=7;break}if((a[d>>0]|0)==(a[g>>0]|0)?(b$(d,g)|0)==0:0){j=7;break}f=c[f+4>>2]|0;if((f|0)==(h|0)){f=0;break}}do if((j|0)==7){if(!(c[b>>2]&4)){if((f|0)==(h|0)&(e|0)==0){f=h;break}zz(b,f,e);break}if(e)if((h|0)==(f|0))f=h;else Pw(1,93501,i)|0}while(0);l=k;return f|0}function zz(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;c[a+16>>2]=b;e=c[a>>2]|0;d=d<<2&4;c[a>>2]=e&-5|d;if(e&2|0){e=(e&3|0)==3?-1:1;c[a+(e*48|0)+16>>2]=b;e=a+(e*48|0)|0;c[e>>2]=c[e>>2]&-5|d}return}function Az(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;h=ez(a)|0;f=yz(a,b,0)|0;a:do if((d|0)!=0&(f|0)==0){d=My(h,d)|0;c[d>>2]=Oz(h,b)|0;switch(c[a>>2]&3){case 0:{Bz(a,d);g=d;break a}case 1:{Bz(a,d);g=d;break a}case 2:case 3:{Bz(a,d);g=d;break a}default:{}}}else g=f;while(0);if(e|0)yz(a,b,1)|0;return g|0}function Bz(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=c[a+16>>2]|0;do if(d){e=d+4|0;f=c[e>>2]|0;if((f|0)==(d|0)){c[e>>2]=b;e=d;d=b;break}else{c[b+4>>2]=f;e=b;break}}else{e=b;d=b}while(0);c[d+4>>2]=e;if(!(c[a>>2]&4))zz(a,b,0);return}function Cz(a,b){a=a|0;b=b|0;var d=0,e=0;e=ez(a)|0;d=yz(a,b,0)|0;if(!d)b=-1;else{Dz(a,d);if(!(c[a>>2]&3)){Ez(e,a,d);b=d}else{jB(fz(e)|0,a,60,d,0)|0;b=d}Qz(e,c[d>>2]|0)|0;Ny(e,b);b=0}return b|0}function Dz(a,b){a=a|0;b=b|0;var d=0;a=c[a+16>>2]|0;do{d=a+4|0;a=c[d>>2]|0}while((a|0)!=(b|0));c[d>>2]=c[b+4>>2];return}function Ez(a,b,d){a=a|0;b=b|0;d=d|0;if((c[b+16>>2]|0)==(d|0)){a=c[d+4>>2]|0;zz(b,(a|0)==(d|0)?0:a,0)}return}function Fz(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0;f=(d|0)>-1;g=f?d:0-d|0;a:do switch(b|0){case 0:{Az(a,c,g,e)|0;if(!f){b=wA(a)|0;while(1){if(!b)break a;Fz(b,0,c,d,e);b=xA(b)|0}}break}case 3:case 2:case 1:{d=(b|0)==1;b=Sy(a)|0;while(1){if(!b)break a;b:do if(d)Az(b,c,g,e)|0;else{f=Ex(a,b)|0;while(1){if(!f)break b;Az(f,c,g,e)|0;f=Gx(a,f)|0}}while(0);b=Ty(a,b)|0}}default:{}}while(0);return}function Gz(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;a:do switch(b|0){case 0:{jB(a,a,61,c,1)|0;break}case 3:case 2:case 1:{e=(b|0)==1;d=Sy(a)|0;while(1){if(!d)break a;b:do if(e)Cz(d,c)|0;else{b=Ex(a,d)|0;while(1){if(!b)break b;Cz(b,c)|0;b=Gx(a,b)|0}}while(0);d=Ty(a,d)|0}}default:{}}while(0);return}function Hz(a,b,c){a=a|0;b=b|0;c=c|0;Cz(b,c)|0;return}function Iz(a){a=a|0;var b=0,d=0,e=0;d=ez(a)|0;b=a+16|0;a=c[b>>2]|0;if(a|0)do{e=a;a=c[a+4>>2]|0;Qz(d,c[e>>2]|0)|0;Ny(d,e)}while((a|0)!=(c[b>>2]|0));c[b>>2]=0;return}function Jz(a){a=a|0;return EA(a,Kz(a)|0)|0}function Kz(a){a=a|0;var b=0,d=0;if(!a)d=184760;else d=(c[a+64>>2]|0)+20|0;b=c[d>>2]|0;if(!b){b=CA(a,18760,c[4563]|0)|0;c[d>>2]=b;a=183232;c[a>>2]=-2147483648;c[a+4>>2]=0;a=183240;c[a>>2]=2147483647;c[a+4>>2]=-1}return b|0}function Lz(a,b){a=a|0;b=b|0;return Mz(Kz(a)|0,b)|0}function Mz(a,b){a=a|0;b=b|0;a=Nz(a,b)|0;if(!a)a=0;else a=c[a+16>>2]|0;return a|0}function Nz(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+32|0;e=d;c[e+16>>2]=b;b=nb[c[a>>2]&63](a,e,4)|0;l=d;return b|0}function Oz(a,b){a=a|0;b=b|0;var d=0,e=0;if(!b)d=0;else{e=Kz(a)|0;d=Nz(e,b)|0;if(!d){d=(W_(b)|0)+24|0;if(!a)d=C_(d)|0;else d=My(a,d)|0;a=d+8|0;c[a>>2]=1;c[a+4>>2]=0;a=d+20|0;b0(a,b)|0;c[d+16>>2]=a;nb[c[e>>2]&63](e,d,1)|0}else{e=d+8|0;b=e;b=s3(c[b>>2]|0,c[b+4>>2]|0,1,0)|0;c[e>>2]=b;c[e+4>>2]=z}d=c[d+16>>2]|0}return d|0}function Pz(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;if(!b)d=0;else{e=Kz(a)|0;d=Nz(e,b)|0;if(!d){d=(W_(b)|0)+24|0;if(!a)d=C_(d)|0;else d=My(a,d)|0;g=183232;f=c[g+4>>2]|0;a=d+8|0;c[a>>2]=c[g>>2]|1;c[a+4>>2]=f;a=d+20|0;b0(a,b)|0;c[d+16>>2]=a;nb[c[e>>2]&63](e,d,1)|0}else{g=d+8|0;f=g;f=s3(c[f>>2]|0,c[f+4>>2]|0,1,0)|0;c[g>>2]=f;c[g+4>>2]=z}d=c[d+16>>2]|0}return d|0}function Qz(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;if((b|0)!=0?(d=Kz(a)|0,e=Nz(d,b)|0,(e|0)!=0):0)if((c[e+16>>2]|0)==(b|0)?(b=e+8|0,g=b,g=s3(c[g>>2]|0,c[g+4>>2]|0,-1,-1)|0,f=z,b,c[b>>2]=g,c[b+4>>2]=f,b=183240,(g|0)==0&(f|0)==0|(c[b>>2]|0)==0&(c[b+4>>2]|0)==0):0){DA(a,d,e)|0;a=0}else a=0;else a=-1;return a|0}function Rz(a){a=a|0;var b=0;if(!a)a=0;else{a=a+-12|0;b=183232;a=c[b>>2]&c[a>>2]}return a|0}function Sz(a){a=a|0;var b=0,d=0,e=0;if(a|0){d=183232;a=a+-12|0;e=a;b=c[e+4>>2]|c[d+4>>2];c[a>>2]=c[e>>2]|c[d>>2];c[a+4>>2]=b}return}function Tz(a){a=a|0;c[4699]=a;return}function Uz(a){a=a|0;c[46195]=a;c[4699]=1;return}function Vz(a,b){a=a|0;b=b|0;c[46196]=a;c[46197]=b;c[46198]=0;return}function Wz(){var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;if(!(c[46199]|0)){c[46199]=1;if(!(c[46200]|0))c[46200]=1;if(!(c[46191]|0))c[46191]=c[15621];if(!(c[46192]|0))c[46192]=c[15653];k=c[46201]|0;if(!((k|0)!=0?(c[k>>2]|0)!=0:0)){Xz();k=Yz(c[46191]|0,16384)|0;c[c[46201]>>2]=k}Zz()}a:while(1){j=c[46202]|0;a[j>>0]=a[191725]|0;e=(c[(c[c[46201]>>2]|0)+28>>2]|0)+(c[46200]|0)|0;f=j;b:while(1){h=f;while(1){f=c[18800+(d[h>>0]<<2)>>2]|0;if(b[63752+(e<<1)>>1]|0){c[46203]=e;c[46204]=h}c:while(1){g=f&255;do{f=g+(b[63938+(e<<1)>>1]|0)|0;if((e|0)==(b[64148+(f<<1)>>1]|0))break c;k=b[64684+(e<<1)>>1]|0;e=k<<16>>16}while(k<<16>>16<=92);f=c[19824+(g<<2)>>2]|0}e=b[64894+(f<<1)>>1]|0;f=h+1|0;if((b[63938+(e<<1)>>1]|0)==219)break;else h=f}d:while(1){k=j;e:while(1){e=b[63752+(e<<1)>>1]|0;if(!(e<<16>>16)){e=b[63752+(c[46203]<<1)>>1]|0;f=c[46204]|0}else e=e<<16>>16;c[46193]=j;i=f;c[46194]=i-k;a[191725]=a[f>>0]|0;a[f>>0]=0;c[46202]=f;f:while(1){switch(e|0){case 1:{m=27;break a}case 12:{m=53;break a}case 13:{m=55;break a}case 14:{m=57;break a}case 15:{m=61;break a}case 16:{m=65;break a}case 17:{m=67;break a}case 18:{m=69;break a}case 19:{m=72;break a}case 20:{m=75;break a}case 21:{m=78;break a}case 23:{m=86;break a}case 33:{m=118;break a}case 39:case 38:case 37:case 36:{l=0;break a}case 2:{m=29;break b}case 3:{m=32;break b}case 4:{m=35;break b}case 5:{m=37;break b}case 6:{m=39;break b}case 7:{m=42;break b}case 8:{m=44;break b}case 9:{m=47;break b}case 10:{m=49;break b}case 11:{m=51;break b}case 22:{m=83;break b}case 24:{m=89;break b}case 25:{m=92;break b}case 26:{m=95;break b}case 27:{m=98;break b}case 28:{m=101;break b}case 29:{m=104;break b}case 30:{m=109;break b}case 31:{m=112;break b}case 32:{m=115;break b}case 34:{m=121;break b}case 0:break f;case 35:break;default:{m=134;break a}}h=c[46193]|0;a[f>>0]=a[191725]|0;e=c[46201]|0;g=c[e>>2]|0;if(!(c[g+44>>2]|0)){n=c[g+16>>2]|0;c[46206]=n;c[g>>2]=c[46191];g=c[e>>2]|0;c[g+44>>2]=1;e=n}else e=c[46206]|0;if((c[46202]|0)>>>0<=((c[g+4>>2]|0)+e|0)>>>0){m=128;break e}switch(gA()|0){case 0:{m=132;break d}case 2:{m=133;break e}case 1:break;default:continue a}c[46202]=c[46193];e=(((c[46200]|0)+-1|0)/2|0)+36|0}a[f>>0]=a[191725]|0;f=c[46204]|0;e=c[46203]|0}if((m|0)==128){m=0;g=i-h|0;h=c[46193]|0;f=h+(g+-1)|0;c[46202]=f;e=eA()|0;i=fA(e)|0;j=c[46193]|0;if(!i)continue;else{m=129;break}}else if((m|0)==133){m=0;f=(c[(c[c[46201]>>2]|0)+4>>2]|0)+(c[46206]|0)|0;c[46202]=f;e=eA()|0;j=c[46193]|0;continue}}if((m|0)==129){m=0;f=h+g|0;c[46202]=f;e=i;continue}else if((m|0)==132){m=0;f=(c[46193]|0)+(i-h+-1)|0;c[46202]=f;e=eA()|0;j=c[46193]|0;continue}}switch(m|0){case 29:{m=0;e=c[46194]|0;if(e|0)c[(c[c[46201]>>2]|0)+28>>2]=(a[(c[46193]|0)+(e+-1)>>0]|0)==10&1;c[4699]=(c[4699]|0)+1;continue a}case 32:{m=0;e=c[46194]|0;if(e|0)c[(c[c[46201]>>2]|0)+28>>2]=(a[(c[46193]|0)+(e+-1)>>0]|0)==10&1;c[46200]=3;continue a}case 35:{m=0;e=c[46194]|0;if(!e)continue a;c[(c[c[46201]>>2]|0)+28>>2]=(a[(c[46193]|0)+(e+-1)>>0]|0)==10&1;continue a}case 37:{m=0;e=c[46194]|0;if(!e)continue a;c[(c[c[46201]>>2]|0)+28>>2]=(a[(c[46193]|0)+(e+-1)>>0]|0)==10&1;continue a}case 39:{m=0;e=c[46194]|0;if(e|0)c[(c[c[46201]>>2]|0)+28>>2]=(a[(c[46193]|0)+(e+-1)>>0]|0)==10&1;c[46200]=1;continue a}case 42:{m=0;e=c[46194]|0;if(!e)continue a;c[(c[c[46201]>>2]|0)+28>>2]=(a[(c[46193]|0)+(e+-1)>>0]|0)==10&1;continue a}case 44:{m=0;e=c[46194]|0;if(e|0)c[(c[c[46201]>>2]|0)+28>>2]=(a[(c[46193]|0)+(e+-1)>>0]|0)==10&1;_z();continue a}case 47:{m=0;e=c[46194]|0;if(!e)continue a;c[(c[c[46201]>>2]|0)+28>>2]=(a[(c[46193]|0)+(e+-1)>>0]|0)==10&1;continue a}case 49:{m=0;e=c[46194]|0;if(!e)continue a;c[(c[c[46201]>>2]|0)+28>>2]=(a[(c[46193]|0)+(e+-1)>>0]|0)==10&1;continue a}case 51:{m=0;e=c[46194]|0;if(!e)continue a;c[(c[c[46201]>>2]|0)+28>>2]=(a[(c[46193]|0)+(e+-1)>>0]|0)==10&1;continue a}case 83:{m=0;e=c[46194]|0;if(e|0)c[(c[c[46201]>>2]|0)+28>>2]=(a[(c[46193]|0)+(e+-1)>>0]|0)==10&1;c[46200]=5;aA();continue a}case 89:{m=0;e=c[46194]|0;if(e|0)c[(c[c[46201]>>2]|0)+28>>2]=(a[(c[46193]|0)+(e+-1)>>0]|0)==10&1;cA(95669);continue a}case 92:{m=0;e=c[46194]|0;if(e|0)c[(c[c[46201]>>2]|0)+28>>2]=(a[(c[46193]|0)+(e+-1)>>0]|0)==10&1;cA(93534);continue a}case 95:{m=0;e=c[46194]|0;if(e|0)c[(c[c[46201]>>2]|0)+28>>2]=(a[(c[46193]|0)+(e+-1)>>0]|0)==10&1;c[4699]=(c[4699]|0)+1;continue a}case 98:{m=0;f=c[46194]|0;e=c[46193]|0;if(f|0)c[(c[c[46201]>>2]|0)+28>>2]=(a[e+(f+-1)>>0]|0)==10&1;cA(e);continue a}case 101:{m=0;e=c[46194]|0;if(e|0)c[(c[c[46201]>>2]|0)+28>>2]=(a[(c[46193]|0)+(e+-1)>>0]|0)==10&1;c[46200]=7;c[46205]=1;aA();continue a}case 104:{m=0;e=c[46194]|0;if(e|0)c[(c[c[46201]>>2]|0)+28>>2]=(a[(c[46193]|0)+(e+-1)>>0]|0)==10&1;n=(c[46205]|0)+-1|0;c[46205]=n;if(!n){m=108;break a}cA(c[46193]|0);continue a}case 109:{m=0;f=c[46194]|0;e=c[46193]|0;if(f|0)c[(c[c[46201]>>2]|0)+28>>2]=(a[e+(f+-1)>>0]|0)==10&1;c[46205]=(c[46205]|0)+1;cA(e);continue a}case 112:{m=0;f=c[46194]|0;e=c[46193]|0;if(f|0)c[(c[c[46201]>>2]|0)+28>>2]=(a[e+(f+-1)>>0]|0)==10&1;cA(e);c[4699]=(c[4699]|0)+1;continue a}case 115:{m=0;f=c[46194]|0;e=c[46193]|0;if(f|0)c[(c[c[46201]>>2]|0)+28>>2]=(a[e+(f+-1)>>0]|0)==10&1;cA(e);continue a}case 121:{m=0;f=c[46194]|0;e=c[46193]|0;if(f|0)c[(c[c[46201]>>2]|0)+28>>2]=(a[e+(f+-1)>>0]|0)==10&1;E1(e,f,1,c[46192]|0)|0;continue a}}}switch(m|0){case 27:{e=c[46194]|0;if(!e)l=-1;else{c[(c[c[46201]>>2]|0)+28>>2]=(a[(c[46193]|0)+(e+-1)>>0]|0)==10&1;l=-1}break}case 53:{e=c[46194]|0;if(!e)l=259;else{c[(c[c[46201]>>2]|0)+28>>2]=(a[(c[46193]|0)+(e+-1)>>0]|0)==10&1;l=259}break}case 55:{e=c[46194]|0;if(!e)l=260;else{c[(c[c[46201]>>2]|0)+28>>2]=(a[(c[46193]|0)+(e+-1)>>0]|0)==10&1;l=260}break}case 57:{e=c[46194]|0;if(e|0)c[(c[c[46201]>>2]|0)+28>>2]=(a[(c[46193]|0)+(e+-1)>>0]|0)==10&1;if(!(c[46198]|0)){c[46198]=258;l=258}else l=258;break}case 61:{e=c[46194]|0;if(e|0)c[(c[c[46201]>>2]|0)+28>>2]=(a[(c[46193]|0)+(e+-1)>>0]|0)==10&1;if(!(c[46198]|0)){c[46198]=261;l=261}else l=261;break}case 65:{e=c[46194]|0;if(!e)l=263;else{c[(c[c[46201]>>2]|0)+28>>2]=(a[(c[46193]|0)+(e+-1)>>0]|0)==10&1;l=263}break}case 67:{e=c[46194]|0;if(!e)l=262;else{c[(c[c[46201]>>2]|0)+28>>2]=(a[(c[46193]|0)+(e+-1)>>0]|0)==10&1;l=262}break}case 69:{e=c[46194]|0;if(e|0)c[(c[c[46201]>>2]|0)+28>>2]=(a[(c[46193]|0)+(e+-1)>>0]|0)==10&1;l=(c[46198]|0)==261?264:45;break}case 72:{e=c[46194]|0;if(e|0)c[(c[c[46201]>>2]|0)+28>>2]=(a[(c[46193]|0)+(e+-1)>>0]|0)==10&1;l=(c[46198]|0)==258?264:45;break}case 75:{f=c[46194]|0;e=c[46193]|0;if(f|0)c[(c[c[46201]>>2]|0)+28>>2]=(a[e+(f+-1)>>0]|0)==10&1;c[46221]=Oz(c[46171]|0,e)|0;l=267;break}case 78:{e=c[46194]|0;if(e|0)c[(c[c[46201]>>2]|0)+28>>2]=(a[(c[46193]|0)+(e+-1)>>0]|0)==10&1;if($z()|0){m=(c[46194]|0)+-1|0;a[f>>0]=a[191725]|0;n=j+m|0;c[46202]=n;c[46193]=j;c[46194]=m;a[191725]=a[n>>0]|0;a[n>>0]=0;c[46202]=n}c[46221]=Oz(c[46171]|0,c[46193]|0)|0;l=267;break}case 86:{e=c[46194]|0;if(e|0)c[(c[c[46201]>>2]|0)+28>>2]=(a[(c[46193]|0)+(e+-1)>>0]|0)==10&1;c[46200]=1;bA();l=268;break}case 108:{c[46200]=1;dA();l=268;break}case 118:{f=c[46194]|0;e=c[46193]|0;if(f|0)c[(c[c[46201]>>2]|0)+28>>2]=(a[e+(f+-1)>>0]|0)==10&1;l=a[e>>0]|0;break}case 134:{hA(93537);break}}return l|0}function Xz(){var a=0,b=0,d=0;b=c[46201]|0;do if(!b){a=oA(4)|0;c[46201]=a;if(!a)hA(93895);else{c[a>>2]=0;a=1;d=9;break}}else{a=c[46212]|0;if(0>=(a+-1|0)>>>0){a=a+8|0;b=iA(b,a<<2)|0;c[46201]=b;if(!b)hA(93895);else{d=b+(c[46212]<<2)|0;c[d>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;c[d+12>>2]=0;c[d+16>>2]=0;c[d+20>>2]=0;c[d+24>>2]=0;c[d+28>>2]=0;d=9;break}}}while(0);if((d|0)==9)c[46212]=a;return}function Yz(a,b){a=a|0;b=b|0;var d=0;d=oA(48)|0;if(!d)hA(93850);c[d+12>>2]=b;b=oA(b+2|0)|0;c[d+4>>2]=b;if(!b)hA(93850);else{c[d+20>>2]=1;kA(d,a);return d|0}return 0}function Zz(){var b=0,d=0;d=c[46201]|0;b=c[d>>2]|0;c[46206]=c[b+16>>2];b=c[b+8>>2]|0;c[46202]=b;c[46193]=b;c[46191]=c[c[d>>2]>>2];a[191725]=a[b>>0]|0;return}function _z(){var b=0,d=0,e=0,f=0,g=0,h=0,i=0;g=l;l=l+32|0;f=g;d=g+16|0;e=g+12|0;h=c[46193]|0;b=h+1|0;i=(z$(b,93834,4)|0)==0;b=i?h+5|0:b;c[f>>2]=e;c[f+4>>2]=g+20;c[f+8>>2]=d;f=N1(b,93839,f)|0;if((f|0)>0?(c[4699]=(c[e>>2]|0)+-1,(f|0)!=1):0){d=b+(c[d>>2]|0)|0;b=d;a:while(1){e=a[b>>0]|0;switch(e<<24>>24){case 0:case 34:break a;default:{}}b=b+1|0}if((b|0)!=(d|0)&e<<24>>24==34){a[b>>0]=0;nA(d,b-d|0)}}l=g;return}function $z(){var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;j=l;l=l+2080|0;i=j+8|0;f=j;b=j+1056|0;d=j+32|0;h=j+16|0;k=a[(c[46193]|0)+((c[46194]|0)+-1)>>0]|0;e=k<<24>>24==46;if(e|((k&255)+-48|0)>>>0<10)if(e?(mA()|0)!=0:0)g=4;else b=0;else g=4;if((g|0)==4){k=c[46195]|0;Tw(h,1024,b);Ww(h,93745)|0;Ww(h,c[46193]|0)|0;c[f>>2]=c[4699];Y0(d,93789,f)|0;Ww(h,d)|0;Ww(h,(k|0)==0?93739:k)|0;Ww(h,93806)|0;d=h+4|0;b=c[d>>2]|0;if(b>>>0>=(c[h+8>>2]|0)>>>0){Uw(h,1)|0;b=c[d>>2]|0}a[b>>0]=0;b=c[h>>2]|0;c[d>>2]=b;c[i>>2]=b;Pw(0,93831,i)|0;Xw(h);b=1}l=j;return b|0}function aA(){var b=0;b=c[46207]|0;if(!b){b=C_(1024)|0;c[46207]=b;c[46209]=b+1024}c[46208]=b;a[b>>0]=0;return}function bA(){c[46221]=Oz(c[46171]|0,c[46207]|0)|0;a[c[46207]>>0]=0;return}function cA(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;e=c[46208]|0;d=c[46207]|0;if(e>>>0>d>>>0){e=e+-1|0;f=3}a:while(1){if((f|0)==3)c[46208]=e;f=c[46209]|0;g=f;do{h=b;b=b+1|0;h=a[h>>0]|0;i=e;e=e+1|0;a[i>>0]=h;if(!(h<<24>>24))break a}while(e>>>0>>0);c[46208]=e;f=d;i=g-f<<1;d=F_(d,i)|0;c[46207]=d;c[46209]=d+i;e=d+(e-f)|0;f=3}c[46208]=e;return}function dA(){c[46221]=Pz(c[46171]|0,c[46207]|0)|0;a[c[46207]>>0]=0;return}function eA(){var d=0,e=0,f=0,g=0,h=0;h=c[46202]|0;g=c[46193]|0;e=(c[(c[c[46201]>>2]|0)+28>>2]|0)+(c[46200]|0)|0;while(1){if(g>>>0>=h>>>0)break;d=a[g>>0]|0;if(!(d<<24>>24))d=1;else d=c[18800+((d&255)<<2)>>2]|0;if(b[63752+(e<<1)>>1]|0){c[46203]=e;c[46204]=g}a:while(1){f=d&255;do{d=f+(b[63938+(e<<1)>>1]|0)|0;if((e|0)==(b[64148+(d<<1)>>1]|0))break a;d=b[64684+(e<<1)>>1]|0;e=d<<16>>16}while(d<<16>>16<=92);d=c[19824+(f<<2)>>2]|0}g=g+1|0;e=b[64894+(d<<1)>>1]|0}return e|0}function fA(a){a=a|0;var d=0;if(b[63752+(a<<1)>>1]|0){d=c[46202]|0;c[46203]=a;c[46204]=d}while(1){d=(b[63938+(a<<1)>>1]|0)+1|0;if((a|0)==(b[64148+(d<<1)>>1]|0))break;a=b[64684+(a<<1)>>1]|0}d=b[64894+(d<<1)>>1]|0;return (d<<16>>16==92?0:d<<16>>16)|0}function gA(){var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;j=c[46201]|0;g=c[j>>2]|0;i=c[g+4>>2]|0;f=c[46193]|0;l=c[46202]|0;k=l;if(l>>>0>(i+((c[46206]|0)+1)|0)>>>0)hA(93592);h=k-f|0;if(!(c[g+40>>2]|0))b=(h|0)==1?1:2;else{l=h+-1|0;h=i;g=0;while(1){if((g|0)>=(l|0))break;a[h>>0]=a[f>>0]|0;h=h+1|0;f=f+1|0;g=g+1|0}f=c[j>>2]|0;do if((c[f+44>>2]|0)==2){c[46206]=0;c[f+16>>2]=0;e=f;m=17}else{while(1){i=f+12|0;h=c[i>>2]|0;g=h-l+-1|0;if(g|0){m=16;break}g=f+4|0;j=c[g>>2]|0;if(!(c[f+20>>2]|0)){m=12;break}f=h<<1;f=(f|0)==0?(h>>>3)+h|0:f;c[i>>2]=f;f=iA(j,f+2|0)|0;c[g>>2]=f;if(!f)break;j=f+(k-j)|0;c[46202]=j;f=c[c[46201]>>2]|0;k=j}if((m|0)==12)c[g>>2]=0;else if((m|0)==16){d=nb[c[c[(c[46196]|0)+8>>2]>>2]&63](c[46197]|0,(c[f+4>>2]|0)+l|0,g>>>0<8192?g:8192)|0;e=c[c[46201]>>2]|0;c[46206]=d;c[e+16>>2]=d;if(!d){m=17;break}else{b=0;break}}hA(93648)}while(0);do if((m|0)==17)if(!l){jA(c[46191]|0);b=1;d=c[46206]|0;e=c[c[46201]>>2]|0;break}else{c[e+44>>2]=2;b=2;d=0;break}while(0);f=d+l|0;do if(f>>>0>(c[e+12>>2]|0)>>>0){m=iA(c[e+4>>2]|0,f+(d>>>1)|0)|0;d=c[46201]|0;c[(c[d>>2]|0)+4>>2]=m;d=c[(c[d>>2]|0)+4>>2]|0;if(!d)hA(93692);else{n=c[46206]|0;o=d;break}}else{n=d;o=c[e+4>>2]|0}while(0);n=n+l|0;c[46206]=n;a[o+n>>0]=0;o=c[46201]|0;a[(c[(c[o>>2]|0)+4>>2]|0)+((c[46206]|0)+1)>>0]=0;c[46193]=c[(c[o>>2]|0)+4>>2]}return b|0}function hA(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=c[15686]|0;c[b>>2]=a;g1(d,93588,b)|0;Sa(2)}function iA(a,b){a=a|0;b=b|0;return F_(a,b)|0}function jA(a){a=a|0;var b=0,d=0,e=0;d=c[46201]|0;if((d|0)!=0?(b=c[d>>2]|0,(b|0)!=0):0)e=4;else{Xz();b=Yz(c[46191]|0,16384)|0;d=c[46201]|0;c[d>>2]=b;if(!d)b=0;else e=4}kA(b,a);Zz();return}function kA(a,b){a=a|0;b=b|0;var d=0;d=c[(O_()|0)>>2]|0;lA(a);c[a>>2]=b;c[a+40>>2]=1;b=c[46201]|0;if(!b)b=0;else b=c[b>>2]|0;if((b|0)!=(a|0)){c[a+32>>2]=1;c[a+36>>2]=0}c[a+24>>2]=0;c[(O_()|0)>>2]=d;return}function lA(b){b=b|0;var d=0;if(b|0){c[b+16>>2]=0;d=b+4|0;a[c[d>>2]>>0]=0;a[(c[d>>2]|0)+1>>0]=0;c[b+8>>2]=c[d>>2];c[b+28>>2]=1;c[b+44>>2]=0;d=c[46201]|0;if(!d)d=0;else d=c[d>>2]|0;if((d|0)==(b|0))Zz()}return}function mA(){var b=0,d=0;d=c[46193]|0;b=(c[46194]|0)+-2|0;while(1){if((b|0)<=-1){b=0;break}if((a[d+b>>0]|0)==46){b=1;break}else b=b+-1|0}return b|0}function nA(a,b){a=a|0;b=b|0;var d=0;d=c[46210]|0;if((d|0)<(b|0)){if(!d)d=C_(b+1|0)|0;else d=F_(c[46211]|0,b+1|0)|0;c[46211]=d;c[46210]=b}else d=c[46211]|0;b0(d,a)|0;c[46195]=c[46211];return}function oA(a){a=a|0;return C_(a)|0}function pA(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0;m=l;l=l+2112|0;k=m+32|0;i=m+24|0;h=m+16|0;g=m+8|0;f=m;d=m+56|0;j=m+40|0;Tw(j,1024,m+1080|0);e=c[46195]|0;if(e|0){Ww(j,e)|0;Ww(j,93945)|0}Ww(j,b)|0;c[f>>2]=c[4699];Y0(d,93948,f)|0;Ww(j,d)|0;a:do if(!(a[c[46193]>>0]|0))switch(((c[46200]|0)+-1|0)/2|0|0){case 2:{c[g>>2]=16384;Y0(d,93968,g)|0;Ww(j,d)|0;b=c[46207]|0;if(!(a[b>>0]|0))break a;i=W_(b)|0;Ww(j,94030)|0;b=c[46207]|0;if((i|0)>80)a[b+80>>0]=0;Ww(j,b)|0;break a}case 3:{c[h>>2]=16384;Y0(d,94049,h)|0;Ww(j,d)|0;b=c[46207]|0;if(!(a[b>>0]|0))break a;i=W_(b)|0;Ww(j,94117)|0;b=c[46207]|0;if((i|0)>80)a[b+80>>0]=0;Ww(j,b)|0;break a}case 1:{c[i>>2]=16384;Y0(d,94136,i)|0;Ww(j,d)|0;break a}default:break a}else{Ww(j,93960)|0;Ww(j,c[46193]|0)|0;d=j+4|0;b=c[d>>2]|0;if(b>>>0>=(c[j+8>>2]|0)>>>0){Uw(j,1)|0;b=c[d>>2]|0}c[d>>2]=b+1;a[b>>0]=39}while(0);e=j+4|0;b=c[e>>2]|0;d=j+8|0;if(b>>>0>=(c[d>>2]|0)>>>0){Uw(j,1)|0;b=c[e>>2]|0}c[e>>2]=b+1;a[b>>0]=10;b=c[e>>2]|0;if(b>>>0>=(c[d>>2]|0)>>>0){Uw(j,1)|0;b=c[e>>2]|0}a[b>>0]=0;i=c[j>>2]|0;c[e>>2]=i;c[k>>2]=i;Pw(1,93831,k)|0;Xw(j);l=m;return}function qA(){rA(c[46193]|0);return}function rA(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;j=c[46202]|0;a[j>>0]=a[191725]|0;i=c[46201]|0;e=c[i>>2]|0;d=c[e+4>>2]|0;if(j>>>0<(d+2|0)>>>0){f=d+((c[46206]|0)+2)|0;g=d+((c[e+12>>2]|0)+2)|0;k=d;h=e;while(1){if(f>>>0<=k>>>0)break;e=f+-1|0;k=g+-1|0;a[k>>0]=a[e>>0]|0;h=c[i>>2]|0;f=e;g=k;k=c[h+4>>2]|0}e=g-f|0;d=j+e|0;j=c[h+12>>2]|0;c[46206]=j;c[h+16>>2]=j;if(d>>>0<(k+2|0)>>>0)hA(94195);else{l=b+e|0;m=d}}else{l=b;m=j}b=m+-1|0;a[b>>0]=64;c[46193]=l;a[191725]=a[b>>0]|0;c[46202]=b;return}function sA(){var a=0;a=c[46201]|0;if(!a)a=0;else a=c[a>>2]|0;lA(a);return}function tA(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=l;l=l+80|0;f=e;g=a+52|0;FA(a,c[g>>2]|0,18444);a=f+8|0;c[a>>2]=b;c[a+4>>2]=d;d=c[g>>2]|0;d=nb[c[d>>2]&63](d,f,4)|0;l=e;return d|0}function uA(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;f=tA(b,d,e)|0;if(!f){f=My(b,72)|0;c[f+64>>2]=c[b+64>>2];g=f+24|0;h=c[b+24>>2]|0;c[g>>2]=h;a[g>>0]=h&255&-9;c[f+56>>2]=b;c[f+60>>2]=c[b+60>>2];b=f+8|0;c[b>>2]=d;c[b+4>>2]=e;Zx(f)|0}return f|0}function vA(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;g=l;l=l+16|0;f=g;if(!(((b|0)!=0?(oy(a,0,b,f,0)|0)!=0:0)?(e=f,e=tA(a,c[e>>2]|0,c[e+4>>2]|0)|0,(e|0)!=0):0))if((d|0)!=0?(oy(a,0,b,f,1)|0)!=0:0){e=f;e=uA(a,c[e>>2]|0,c[e+4>>2]|0)|0;sy(a,0,e)}else e=0;l=g;return e|0}function wA(a){a=a|0;a=c[a+52>>2]|0;return nb[c[a>>2]&63](a,0,128)|0}function xA(a){a=a|0;var b=0;b=yA(a)|0;if(!b)a=0;else{b=c[b+52>>2]|0;a=nb[c[b>>2]&63](b,a,8)|0}return a|0}function yA(a){a=a|0;return c[a+56>>2]|0}function zA(a,b){a=a|0;b=b|0;a=c[a+52>>2]|0;return nb[c[a>>2]&63](a,b,2)|0}function AA(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;a=c[46213]|0;e=(b|0)!=0;do if(!a)if(e){D_(b);a=0;break}else{a=C_(d)|0;break}else if(e){Ny(a,b);a=0;break}else{a=My(a,d)|0;break}while(0);return a|0}function BA(a,b,d){a=a|0;b=b|0;d=d|0;a=c[46213]|0;if(!a)D_(b);else Ny(a,b);return}function CA(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=b+28|0;f=c[e>>2]|0;c[e>>2]=7;c[46213]=a;d=Cw(b,d)|0;c[e>>2]=f;c[46213]=0;return d|0}function DA(a,b,d){a=a|0;b=b|0;d=d|0;c[46213]=a;return nb[c[b>>2]&63](b,d,2)|0}function EA(a,b){a=a|0;b=b|0;var d=0,e=0;d=(Kw(b,0,0)|0)+28|0;e=c[d>>2]|0;c[d>>2]=7;c[46213]=a;if(!(yw(b)|0)){c[d>>2]=e;c[46213]=0;a=0}else a=1;return a|0}function FA(a,b,c){a=a|0;b=b|0;c=c|0;if(c|0?(Kw(b,0,0)|0)!=(c|0):0)Kw(b,c,0)|0;return}function GA(a,b){a=a|0;b=b|0;if(!(Rz(a)|0))b=IA(a,b)|0;else HA(a,b)|0;return b|0}function HA(b,c){b=b|0;c=c|0;var d=0,e=0,f=0;a[c>>0]=60;e=c;while(1){d=e+1|0;f=a[b>>0]|0;if(!(f<<24>>24))break;a[d>>0]=f;b=b+1|0;e=d}a[d>>0]=62;a[e+2>>0]=0;return c|0}function IA(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;a:do if((b|0)!=0?(a[b>>0]|0)!=0:0){a[d>>0]=34;l=a[b>>0]|0;q=0;g=((l+-45&255)<2|((l&255)+-48|0)>>>0<10)&1;h=0;i=0;j=0;e=d+1|0;f=b+1|0;b:while(1){k=e;while(1){if(!(l<<24>>24))break b;e=l&255;c:do if(l<<24>>24==34){a[k>>0]=92;m=g;n=1;k=k+1|0}else{if(!g){n=l<<24>>24>-1&(l<<24>>24!=95&(M$(e)|0)==0);m=0;n=n?1:h;break}switch(l<<24>>24){case 45:{n=(j|0)==0;m=n?g:0;n=n?h:1;break c}case 46:{n=(i|0)==0;m=n?g:0;n=n?h:1;i=i+1|0;break c}default:{n=(e+-48|0)>>>0<10;m=n?g:0;n=n?h:1;break c}}}while(0);e=k+1|0;a[k>>0]=l;p=f+1|0;o=a[f>>0]|0;j=j+1|0;f=c[5005]|0;if(!f){g=m;h=n;k=e;f=p;l=o;continue}g=o&255;h=o<<24>>24!=0;if((q&h?!(l<<24>>24==92|l<<24>>24>-1&((l+-45&255)>1&(M$(l<<24>>24)|0)==0)^1):0)?!(o<<24>>24>-1&((o+-45&255)>1&(M$(g)|0)==0)):0)break;if((j|0)<(f|0)|h^1){g=m;h=n;k=e;f=p;l=o;continue}if(l<<24>>24==92|l<<24>>24>-1&((M$(l<<24>>24)|0)==0&(l+-45&255)>1)^1){q=1;g=m;h=n;l=o;f=p;continue b}if(o<<24>>24>-1&((o+-45&255)>1&(M$(g)|0)==0)){q=1;g=m;h=n;l=o;f=p;continue b}a[e>>0]=92;a[k+2>>0]=10;g=m;h=1;j=0;k=k+3|0;f=p;l=o}a[e>>0]=92;a[k+2>>0]=10;q=0;g=m;h=1;j=0;l=o;e=k+3|0;f=p}a[k>>0]=34;a[k+1>>0]=0;if(!h){if((j|0)==1?((a[b>>0]|0)+-45&255)<2:0){b=d;break}else e=20024;while(1){f=c[e>>2]|0;if(!f)break a;if(!(O$(f,b)|0)){b=d;break}else e=e+4|0}}else b=d}else b=94227;while(0);return b|0}function JA(a){a=a|0;return GA(a,KA(a)|0)|0}function KA(a){a=a|0;var b=0;b=((W_(a)|0)<<1)+2|0;b=b>>>0>1024?b:1024;a=c[46215]|0;if(b>>>0>(c[46214]|0)>>>0){if(!a)a=C_(b)|0;else a=F_(a,b)|0;c[46215]=a;c[46214]=b}return a|0}function LA(a,b){a=a|0;b=b|0;a=wA(a)|0;while(1){if(!a){a=0;break}if((MA(a)|0)==0?Xy(a,b,0)|0:0){a=1;break}a=xA(a)|0}return a|0}function MA(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;h=ry(b)|0;if((h|0)!=0?(a[h>>0]|0)!=37:0)d=0;else e=3;a:do if((e|0)==3){d=dx(b)|0;b:do if(d|0?(f=dx(yA(b)|0)|0,f|0):0){h=Ew(c[(dx(fz(b)|0)|0)+8>>2]|0)|0;g=d+12|0;e=f+12|0;d=0;while(1){if((d|0)>=(h|0))break b;f=c[(c[g>>2]|0)+(d<<2)>>2]|0;if((f|0?(i=c[(c[e>>2]|0)+(d<<2)>>2]|0,i|0):0)?b$(f,i)|0:0){d=0;break a}d=d+1|0}}while(0);d=_w(b,0)|0;if(d)if((Ew(c[d+8>>2]|0)|0)>0)d=0;else return (Ew(c[d+12>>2]|0)|0)<1|0;else d=1}while(0);return d|0}function NA(b,d){b=b|0;d=d|0;var e=0,f=0;c[46216]=0;e=xx(b,94237)|0;if((e|0?((a[e>>0]|0)+-48|0)>>>0<10:0)?(f=i1(e,0,10)|0,(f|0)==0|(f|0)>59):0)c[5005]=f;OA(b,1);if(((PA(b,d,1)|0)!=-1?(QA(b,d)|0)!=-1:0)?(RA(b,d)|0)!=-1:0){c[5005]=128;b=kb[c[(c[(c[b+64>>2]|0)+8>>2]|0)+8>>2]&63](d)|0}else b=-1;return b|0}function OA(a,b){a=a|0;b=b|0;var d=0;c[a>>2]=c[a>>2]&-9;d=wA(a)|0;while(1){if(!d)break;OA(d,0);d=xA(d)|0}a:do if(b|0){b=Sy(a)|0;while(1){if(!b)break a;c[b>>2]=c[b>>2]&-9;d=Ex(a,b)|0;while(1){if(!d)break;c[d>>2]=c[d>>2]&-9;d=Gx(a,d)|0}b=Ty(a,b)|0}}while(0);return}function PA(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;if((e|0)==0?(yA(b)|0)!=0:0){i=0;g=191979;k=106488}else{k=(a[b+24>>0]&1)==0?191979:94281;g=(gy(b)|0)==0;c[46217]=nx(b,2,108373,0)|0;c[46218]=nx(b,2,108382,0)|0;i=1;g=g?191979:94284}f=ry(b)|0;if((f|0)!=0?(a[f>>0]|0)!=37:0){h=1;j=99578}else{h=0;j=191979;f=191979}do if((SA(b,d)|0)!=-1?(TA(b,d,g)|0)!=-1:0){g=(h|0)==0;if(h|i|0){if((TA(b,d,k)|0)==-1){f=-1;break}if((TA(b,d,99571)|0)==-1){f=-1;break}}if(!g?(cB(b,d,f)|0)==-1:0){f=-1;break}if(((TA(b,d,j)|0)!=-1?(TA(b,d,94292)|0)!=-1:0)?(c[46216]=(c[46216]|0)+1,(hB(b,d,e)|0)!=-1):0){c[b>>2]=c[b>>2]|8;f=0}else f=-1}else f=-1;while(0);return f|0}function QA(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;a:do if((UA(a,b)|0)==-1)d=-1;else{k=_w(fz(a)|0,0)|0;i=(k|0)==0;j=k+12|0;k=k+8|0;h=Sy(a)|0;while(1){if(!h){d=0;break a}if(VA(a,h,(c[h>>2]|0)>>>4,0)|0){if(i)d=0;else d=c[k>>2]|0;if((WA(h,b,d)|0)==-1){d=-1;break a}}g=Ex(a,h)|0;d=h;while(1){if(!g)break;f=g+-48|0;e=c[((c[g>>2]&3|0)==2?g:f)+40>>2]|0;if((d|0)!=(e|0)?(VA(a,e,(c[h>>2]|0)>>>4,0)|0)!=0:0){if(i)d=0;else d=c[k>>2]|0;if((WA(c[((c[g>>2]&3|0)==2?g:f)+40>>2]|0,b,d)|0)==-1){d=-1;break a}d=c[((c[g>>2]&3|0)==2?g:f)+40>>2]|0}if(XA(a,g)|0){if(i)e=0;else e=c[j>>2]|0;if((YA(g,b,e)|0)==-1){d=-1;break a}}g=Gx(a,g)|0}h=Ty(a,h)|0}}while(0);return d|0}function RA(a,b){a=a|0;b=b|0;c[46216]=(c[46216]|0)+-1;if((SA(a,b)|0)==-1)a=-1;else a=((TA(a,b,107982)|0)==-1)<<31>>31;return a|0}function SA(a,b){a=a|0;b=b|0;var d=0;d=c[46216]|0;while(1){if((d|0)<=0){d=0;break}if((TA(a,b,150515)|0)==-1){d=-1;break}else d=d+-1|0}return d|0}function TA(a,b,d){a=a|0;b=b|0;d=d|0;return lb[c[(c[(c[a+64>>2]|0)+8>>2]|0)+4>>2]&127](b,d)|0}function UA(a,b){a=a|0;b=b|0;a=wA(a)|0;while(1){if(!a){a=0;break}if(!(MA(a)|0)){if((PA(a,b,0)|0)==-1){a=-1;break}if((QA(a,b)|0)==-1){a=-1;break}if((RA(a,b)|0)==-1){a=-1;break}}else UA(a,b)|0;a=xA(a)|0}return a|0}function VA(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;if((LA(a,b)|0)==0?(eB(a,b,c,d)|0)!=0:0)if((fB(a,b)|0)==0?(gB(b)|0)==0:0)e=5;else a=1;else e=5;if((e|0)==5)a=0;return a|0}function WA(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;d=ez(a)|0;do if((SA(d,b)|0)!=-1?(ZA(a,b)|0)!=-1:0){if(($A(a)|0)==0?(aB(a,b,c)|0)==-1:0){a=-1;break}a=TA(d,b,94248)|0}else a=-1;while(0);return a|0}function XA(a,b){a=a|0;b=b|0;a=wA(a)|0;while(1){if(!a){a=1;break}if((MA(a)|0)==0?Vx(a,b,0)|0:0){a=0;break}a=xA(a)|0}return a|0}function YA(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=c[a>>2]&3;g=c[((e|0)==3?a:a+48|0)+40>>2]|0;e=c[((e|0)==2?a:a+-48|0)+40>>2]|0;f=ez(g)|0;do if((((((SA(f,b)|0)!=-1?(ZA(g,b)|0)!=-1:0)?(_A(a,b,c[46217]|0)|0)!=-1:0)?(g=(ey(ez(g)|0)|0)!=0,(TA(f,b,g?97053:97058)|0)!=-1):0)?(ZA(e,b)|0)!=-1:0)?(_A(a,b,c[46218]|0)|0)!=-1:0){if(!($A(a)|0)){if((aB(a,b,d)|0)==-1){a=-1;break}}else if((bB(a,b,1)|0)==-1){a=-1;break}a=TA(f,b,94248)|0}else a=-1;while(0);return a|0}function ZA(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;i=l;l=l+32|0;g=i;d=i+8|0;e=ry(a)|0;f=ez(a)|0;if(!e){j=a+8|0;a=c[j+4>>2]|0;e=g;c[e>>2]=c[j>>2];c[e+4>>2]=a;Y0(d,94268,g)|0;if((TA(f,b,d)|0)==-1)a=-1;else h=4}else if((cB(f,b,e)|0)==-1)a=-1;else h=4;if((h|0)==4)a=0;l=i;return a|0}function _A(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0;a:do if((d|0)!=0?(e=ez(b)|0,f=yx(b,d)|0,(a[f>>0]|0)!=0):0)if((TA(e,c,104958)|0)==-1)b=-1;else{do if(Rz(f)|0){if((cB(e,c,f)|0)==-1){b=-1;break a}}else{b=A$(f,58)|0;if(!b)if((dB(e,c,f,0)|0)==-1){b=-1;break a}else break;a[b>>0]=0;if((dB(e,c,f,0)|0)==-1){b=-1;break a}if((TA(e,c,104958)|0)==-1){b=-1;break a}if((dB(e,c,b+1|0,0)|0)==-1){b=-1;break a}a[b>>0]=58}while(0);b=0}else b=0;while(0);return b|0}function $A(a){a=a|0;return (c[a>>2]|0)>>>3&1|0}function aB(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;a:do if(!(c[a>>2]&2)){e=0;k=4}else{switch(bB(a,b,0)|0){case -1:{e=-1;break a}case 0:{e=0;k=4;break a}default:{}}e=1;k=4}while(0);b:do if((k|0)==4){f=dx(a)|0;j=ez(a)|0;c:do if(f){i=f+12|0;h=nb[c[d>>2]&63](d,0,128)|0;while(1){if(!h)break c;do if(c[a>>2]&2){g=c[46217]|0;if(g|0?(c[h+16>>2]|0)==(c[g+16>>2]|0):0)break;g=c[46218]|0;if(!((g|0)!=0?(c[h+16>>2]|0)==(c[g+16>>2]|0):0))k=12}else k=12;while(0);if((k|0)==12){k=0;f=h+16|0;if((c[(c[i>>2]|0)+(c[f>>2]<<2)>>2]|0)!=(c[h+12>>2]|0)){g=e+1|0;if(e){if((TA(j,b,94263)|0)==-1){e=-1;break b}if((SA(j,b)|0)==-1){e=-1;break b}}else{if((SA(j,b)|0)==-1){e=-1;break b}if((TA(j,b,94260)|0)==-1){e=-1;break b}c[46216]=(c[46216]|0)+1}if((cB(j,b,c[h+8>>2]|0)|0)==-1){e=-1;break b}if((TA(j,b,94266)|0)==-1){e=-1;break b}if((cB(j,b,c[(c[i>>2]|0)+(c[f>>2]<<2)>>2]|0)|0)==-1){e=-1;break b}else e=g}}h=nb[c[d>>2]&63](d,h,8)|0}}while(0);if((e|0)>0){if((TA(j,b,94258)|0)==-1){e=-1;break}c[46216]=(c[46216]|0)+-1}c[a>>2]=c[a>>2]|8;e=0}while(0);return e|0}function bB(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0;e=ry(b)|0;b=ez(b)|0;if((e|0)!=0?(a[e>>0]|0)!=0:0)if((TA(b,c,94251)|0)!=-1?(cB(b,c,e)|0)!=-1:0)if((d|0)!=0?(TA(b,c,94258)|0)==-1:0)b=-1;else{b=1;f=7}else b=-1;else{b=0;f=7}return b|0}function cB(a,b,c){a=a|0;b=b|0;c=c|0;return dB(a,b,c,1)|0}function dB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;if(!d)c=IA(c,KA(c)|0)|0;else c=JA(c)|0;return TA(a,b,c)|0}function eB(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;a:do if(0>>0|(0==(e|0)?(c[b>>2]|0)>>>4>>>0>>0:0))b=0;else{b=Hx(a,b)|0;while(1){if(!b){b=1;break a}if(0>>0|(0==(e|0)?(c[c[b+40>>2]>>2]|0)>>>4>>>0>>0:0)){b=0;break a}b=Ix(a,b)|0}}while(0);return b|0}function fB(a,b){a=a|0;b=b|0;if(!(Hx(a,b)|0))a=(Ex(a,b)|0)==0&1;else a=0;return a|0}function gB(a){a=a|0;var b=0,d=0,e=0;a=dx(a)|0;a:do if(!a)a=0;else{d=a+8|0;e=c[d>>2]|0;b=a+12|0;a=nb[c[e>>2]&63](e,0,128)|0;while(1){if(!a){a=0;break a}if((c[(c[b>>2]|0)+(c[a+16>>2]<<2)>>2]|0)!=(c[a+12>>2]|0)){a=1;break a}e=c[d>>2]|0;a=nb[c[e>>2]&63](e,a,8)|0}}while(0);return a|0}function hB(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=_w(a,0)|0;if(e)if(((iB(a,b,108412,c[e+16>>2]|0,d)|0)!=-1?(iB(a,b,108399,c[e+8>>2]|0,d)|0)!=-1:0)?(iB(a,b,108368,c[e+12>>2]|0,d)|0)!=-1:0)f=5;else a=-1;else f=5;if((f|0)==5)a=0;return a|0}function iB(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;m=(g|0)!=0;if(m)l=0;else l=Hw(f,0)|0;k=(l|0)==0;j=nb[c[f>>2]&63](f,0,128)|0;g=0;while(1){if(!j){n=23;break}i=j+12|0;n=c[i>>2]|0;if((n|0)!=0?(a[n>>0]|0)!=0:0)n=12;else n=7;do if((n|0)==7){n=0;if(!(a[j+22>>0]|0)){if(!k){h=nb[c[l>>2]&63](l,j,4)|0;o=c[h+12>>2]|0;if(o|0?a[o>>0]|0:0){n=12;break}if(!(a[h+22>>0]|0))n=12}}else n=12}while(0);if((n|0)==12){n=0;h=g+1|0;if(g){if((TA(b,d,94263)|0)==-1){g=-1;break}if((SA(b,d)|0)==-1){g=-1;break}}else{if((SA(b,d)|0)==-1){g=-1;break}if((TA(b,d,e)|0)==-1){g=-1;break}if((TA(b,d,94260)|0)==-1){g=-1;break}c[46216]=(c[46216]|0)+1}if((cB(b,d,c[j+8>>2]|0)|0)==-1){g=-1;break}if((TA(b,d,94266)|0)==-1){g=-1;break}if((cB(b,d,c[i>>2]|0)|0)==-1){g=-1;break}else g=h}j=nb[c[f>>2]&63](f,j,8)|0}do if((n|0)==23){if((g|0)>0){c[46216]=(c[46216]|0)+-1;if((g|0)!=1){if((TA(b,d,150517)|0)==-1){g=-1;break}if((SA(b,d)|0)==-1){g=-1;break}}g=(TA(b,d,94295)|0)==-1;if(m|g){g=g<<31>>31;break}}else if(m){g=0;break}Hw(f,l)|0;g=0}while(0);return g|0}function jB(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0;switch(c[b>>2]&3){case 0:{g=80;break}case 1:{g=81;break}case 3:case 2:{g=82;break}default:{}}b=lb[g&127](a,b)|0;if(!b)b=-1;else{nB(a,b,d,e,g,f);b=0}return b|0}function kB(a,b){a=a|0;b=b|0;if((ez(b)|0)!=(a|0))b=Vx(a,b,0)|0;return b|0}function lB(a,b){a=a|0;b=b|0;if((ez(b)|0)!=(a|0))b=Xy(a,b,0)|0;return b|0}function mB(a,b){a=a|0;b=b|0;return a|0}function nB(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;h=(f|0)!=0;if(h)vb[c&127](a,b,d);g=wA(a)|0;while(1){if(!g)break;i=lb[e&127](g,b)|0;if(i|0)nB(g,i,c,d,e,f);g=xA(g)|0}if(!h)vb[c&127](a,b,d);return}function oB(){var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=l;l=l+1200|0;r=t+800|0;g=t;c[46219]=0;c[46220]=-2;f=r;i=200;n=g;p=0;q=0;o=r;a:while(1){b[o>>1]=p;if((f+(i<<1)+-2|0)>>>0>o>>>0)k=i;else{m=o-f>>1;e=m+1|0;if(i>>>0>9999){s=75;break}k=i<<1;k=k>>>0<1e4?k:1e4;h=C_(k*6|3)|0;if(h){F3(h|0,f|0,e<<1|0)|0;i=h+(k>>>1<<2)|0;F3(i|0,n|0,e<<2|0)|0;if((f|0)==(r|0)){e=0;f=h}else{D_(f);e=0;f=h}}else{e=4;i=n}j=(e|0)==0;h=f+(m<<1)|0;switch((j?((f+(k<<1)+-2|0)>>>0>h>>>0?0:9):e)&15){case 9:{e=1;s=76;break a}case 4:{s=75;break a}case 0:{g=j?i+(m<<2)|0:g;n=i;o=j?h:o;break}default:{e=0;break a}}}if((p|0)==6){e=0;s=76;break}e=a[94299+p>>0]|0;j=e<<24>>24;do if(e<<24>>24!=-18){h=c[46220]|0;if((h|0)==-2){h=Wz()|0;c[46220]=h}if((h|0)>=1)if(h>>>0<269)i=d[94379+h>>0]|0;else i=2;else{c[46220]=0;i=0}h=i+j|0;if(h>>>0<=59?(i|0)==(d[94648+h>>0]|0):0){p=a[94708+h>>0]|0;e=p<<24>>24;if(p<<24>>24<1){h=0-e|0;s=23;break}else{c[46220]=-2;g=g+4|0;c[g>>2]=c[46221];j=(q|0)==0?0:q+-1|0;h=o;break}}else s=22}else s=22;while(0);if((s|0)==22){s=0;p=a[94768+p>>0]|0;h=p&255;if(!(p<<24>>24)){h=c[46220]|0;b:do switch(q|0){case 0:{c[46219]=(c[46219]|0)+1;pA(140679);h=o;break}case 3:if((h|0)<1)if(!h){e=1;s=76;break a}else{h=o;break b}else{c[46220]=-2;h=o;break b}default:h=o}while(0);while(1){if(e<<24>>24==18)break;if((h|0)==(f|0)){e=1;s=76;break a}e=h+-2|0;g=g+-4|0;h=e;e=a[94299+(b[e>>1]|0)>>0]|0}g=g+4|0;c[g>>2]=c[46221];e=1;j=3}else s=23}do if((s|0)==23){s=0;i=d[94848+h>>0]|0;e=c[g+(1-i<<2)>>2]|0;c:do switch(h|0){case 2:{pB();qB();break}case 3:{if(c[46222]|0){pB();qB();$x(c[46222]|0)|0;c[46171]=0;c[46222]=0}break}case 6:{rB(c[g>>2]|0,c[g+-4>>2]|0,c[g+-8>>2]|0);break}case 7:{e=c[g>>2]|0;break}case 8:{e=0;break}case 9:{e=1;break}case 10:{e=0;break}case 11:{e=0;break}case 12:{e=1;break}case 21:if(!(c[g+-4>>2]|0)){tB();break c}else{sB();break c}case 24:{uB();break}case 25:{uB();break}case 26:{e=1;break}case 27:{e=0;break}case 30:{vB(c[g>>2]|0,0,0);break}case 31:{vB(c[g+-8>>2]|0,c[g>>2]|0,0);break}case 32:{vB(c[g+-16>>2]|0,c[g+-8>>2]|0,c[g>>2]|0);break}case 33:{wB(c[g+-8>>2]|0,c[g+-4>>2]|0);break}case 34:{wB(258,0);break}case 35:{e=258;break}case 36:{e=259;break}case 37:{e=260;break}case 38:{e=c[g+-4>>2]|0;break}case 39:{e=0;break}case 48:{xB(c[g+-8>>2]|0,c[g>>2]|0);break}case 49:{xB(c[g>>2]|0,0);break}case 51:{yB(c[g>>2]|0);break}case 52:{zB();break}case 53:{e=c[g>>2]|0;break}case 54:{e=0;break}case 55:{e=0;break}case 59:{e=c[g>>2]|0;break}case 60:{e=c[g>>2]|0;break}case 61:{e=c[g>>2]|0;break}case 62:{e=AB(c[g+-8>>2]|0,c[g>>2]|0)|0;break}default:{}}while(0);i=0-i|0;p=g+(i<<2)|0;i=o+(i<<1)|0;g=p+4|0;c[p+4>>2]=e;e=(d[94911+h>>0]|0)+-24|0;p=b[i>>1]|0;h=p+(a[94974+e>>0]|0)|0;if(h>>>0<60?(d[94648+h>>0]|0)==(p|0):0){e=a[94708+h>>0]|0;j=q;h=i;break}e=a[95009+e>>0]|0;j=q;h=i}while(0);i=k;p=e;q=j;o=h+2|0}if((s|0)==75){pA(137476);e=2;s=76}if((s|0)==76)if((f|0)!=(r|0))D_(f);l=t;return e|0}function pB(){var a=0,b=0;a=c[46223]|0;while(1){if(!a)break;IB(a+8|0);IB((c[46223]|0)+24|0);IB((c[46223]|0)+16|0);b=BB(c[46223]|0)|0;c[46223]=b;a=b}return}function qB(){qA();Ay(c[46222]|0);return}function rB(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;h=l;l=l+16|0;g=h;f=c[46222]|0;if(!f){a[184896]=d&1|(e&255)<<1&2|a[184896]&-12|8;f=c[46225]|0;a[g>>0]=a[184896]|0;a[g+1>>0]=a[184897]|0;a[g+2>>0]=a[184898]|0;a[g+3>>0]=a[184899]|0;f=Xx(b,g,f)|0;c[46222]=f}c[46171]=f;c[46223]=CB(c[46223]|0,f)|0;Qz(0,b)|0;l=h;return}function sB(){var b=0,d=0,e=0,f=0,g=0,h=0;HB(2);e=c[46223]|0;f=a[95044]|0;h=0;b=e+24|0;while(1){d=c[b>>2]|0;if(!d)break;if(((c[d>>2]|0)==267?(g=c[d+4>>2]|0,(a[g>>0]|0)==f<<24>>24):0)?(b$(g,95044)|0)==0:0)b=c[d+8>>2]|0;else b=h;h=b;b=d+12|0}b=e+16|0;a:while(1){e=c[b>>2]|0;b=e+12|0;if(!(c[b>>2]|0))break;d=e+4|0;if((c[e>>2]|0)==262){e=c[d>>2]|0;d=Sy(e)|0;while(1){if(!d)continue a;g=Xy(c[c[46223]>>2]|0,d,0)|0;PB(g,0,c[b>>2]|0,h);d=Ty(e,d)|0}}else while(1){d=c[d>>2]|0;if(!d)continue a;PB(c[d+4>>2]|0,c[d+8>>2]|0,c[b>>2]|0,h);d=d+12|0}}IB((c[46223]|0)+8|0);IB((c[46223]|0)+16|0);IB((c[46223]|0)+24|0);c[(c[46223]|0)+4>>2]=0;return}function tB(){var a=0;HB(1);a=(c[46223]|0)+8|0;while(1){a=c[a>>2]|0;if(!a)break;OB(c[a+4>>2]|0);a=a+12|0}IB((c[46223]|0)+8|0);IB((c[46223]|0)+24|0);IB((c[46223]|0)+16|0);c[(c[46223]|0)+4>>2]=0;return}function uB(){var a=0,b=0;a=c[46223]|0;b=c[a+8>>2]|0;if(!b){b=c[a+4>>2]|0;if(!b)b=0;else{b=NB(b)|0;a=c[46223]|0}c[a+4>>2]=0}else{b=MB(b)|0;a=c[46223]|0;c[a+12>>2]=0;c[a+8>>2]=0}if(b|0)EB(a+16|0,b);return}function vB(a,b,d){a=a|0;b=b|0;d=d|0;if(d)b=KB(b,d)|0;d=LB(az(c[c[46223]>>2]|0,a,1)|0,b)|0;EB((c[46223]|0)+8|0,d);Qz(c[46222]|0,a)|0;return}function wB(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;if(d|0)GB();d=(c[46223]|0)+24|0;while(1){d=c[d>>2]|0;if(!d)break;if(!(c[d+8>>2]|0))GB();d=d+12|0}g=(b|0)==260?2:(b|0)==259&1;HB(g);b=c[46223]|0;d=b+24|0;while(1){f=c[d>>2]|0;if(!f)break;do if((c[f>>2]|0)!=267){d=c[f+4>>2]|0;e=c[b>>2]|0;if(!((a[d+21>>0]|0)!=0&(e|0)==(c[46222]|0))){d=nx(e,g,c[d+8>>2]|0,c[f+8>>2]|0)|0;b=c[46223]|0;if((c[b>>2]|0)!=(c[46222]|0))break}a[d+22>>0]=1}while(0);d=f+12|0}IB(b+24|0);return}function xB(a,b){a=a|0;b=b|0;b=DB(a,b)|0;EB((c[46223]|0)+24|0,b);return}function yB(a){a=a|0;var b=0;b=c[46223]|0;c[46223]=CB(b,vA(c[b>>2]|0,a,1)|0)|0;Qz(c[46222]|0,a)|0;return}function zB(){var a=0,b=0;a=c[46223]|0;b=c[a>>2]|0;a=BB(a)|0;c[46223]=a;c[a+4>>2]=b;return}function AB(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=l;l=l+1024|0;f=g;d=W_(a)|0;d=d+1+(W_(b)|0)|0;if(d>>>0<1025)d=f;else d=C_(d)|0;b0(d,a)|0;p1(d,b)|0;e=Oz(c[46222]|0,d)|0;Qz(c[46222]|0,a)|0;Qz(c[46222]|0,b)|0;if((d|0)!=(f|0))D_(d);l=g;return e|0}function BB(a){a=a|0;var b=0;b=c[(c[46223]|0)+32>>2]|0;Ny(c[46222]|0,a);return b|0}function CB(a,b){a=a|0;b=b|0;var d=0;d=My(c[46222]|0,36)|0;c[d+32>>2]=a;c[d>>2]=b;return d|0}function DB(a,b){a=a|0;b=b|0;return FB(267,a,b)|0}function EB(a,b){a=a|0;b=b|0;var d=0,e=0;d=a+4|0;e=c[d>>2]|0;if(e|0)c[e+12>>2]=b;c[d>>2]=b;if(!(c[a>>2]|0))c[a>>2]=b;return}function FB(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=My(c[46222]|0,16)|0;c[e>>2]=a;c[e+4>>2]=b;c[e+8>>2]=d;return e|0}function GB(){var a=0;a=l;l=l+16|0;Pw(0,95048,a)|0;l=a;return}function HB(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;g=(b|0)==2;d=(c[46223]|0)+24|0;while(1){d=c[d>>2]|0;if(!d)break;e=d+4|0;f=c[e>>2]|0;if(!((g?(a[f>>0]|0)==(a[95044]|0):0)?!(b$(f,95044)|0):0)){h=nx(c[c[46223]>>2]|0,b,f,0)|0;c[e>>2]=h;if(!h)c[e>>2]=nx(c[c[46223]>>2]|0,b,f,191979)|0;c[d>>2]=266;Qz(c[46222]|0,f)|0}d=d+12|0}return}function IB(a){a=a|0;JB(c[a>>2]|0);c[a+4>>2]=0;c[a>>2]=0;return}function JB(a){a=a|0;var b=0;while(1){if(!a)break;b=c[a+12>>2]|0;switch(c[a>>2]|0){case 265:{JB(c[a+4>>2]|0);break}case 266:case 267:{Qz(c[46222]|0,c[a+8>>2]|0)|0;break}default:{}}Ny(c[46222]|0,a);a=b}return}function KB(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;h=l;l=l+1040|0;f=h;g=h+8|0;d=W_(a)|0;d=d+2+(W_(b)|0)|0;if(d>>>0<1025)e=g;else e=C_(d)|0;c[f>>2]=a;c[f+4>>2]=b;Y0(e,95081,f)|0;d=Oz(c[46222]|0,e)|0;Qz(c[46222]|0,a)|0;Qz(c[46222]|0,b)|0;if((e|0)!=(g|0))D_(e);l=h;return d|0}function LB(a,b){a=a|0;b=b|0;return FB(259,a,b)|0}function MB(a){a=a|0;return FB(265,a,0)|0}function NB(a){a=a|0;return FB(262,a,0)|0}function OB(a){a=a|0;var b=0,d=0;b=(c[46223]|0)+24|0;while(1){b=c[b>>2]|0;if(!b)break;if((c[b>>2]|0)==266?(d=c[b+4>>2]|0,d|0):0)rx(a,d,c[b+8>>2]|0)|0;b=b+12|0}return}function PB(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=d+4|0;a:do if((c[d>>2]|0)==262){d=c[f>>2]|0;f=Sy(d)|0;while(1){if(!f)break a;QB(a,b,Xy(c[c[46223]>>2]|0,f,0)|0,0,e);f=Ty(d,f)|0}}else while(1){f=c[f>>2]|0;if(!f)break a;d=Xy(c[c[46223]>>2]|0,c[f+4>>2]|0,0)|0;QB(a,b,d,c[f+8>>2]|0,e);f=f+12|0}while(0);return}function QB(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0;d=Rx(c[c[46223]>>2]|0,a,d,f,1)|0;if(d|0){g=c[d>>2]&3;f=c[((g|0)==2?d:d+-48|0)+40>>2]|0;a=(f|0)==(a|0)?(c[((g|0)==3?d:d+48|0)+40>>2]|0)!=(f|0):0;RB(d,108373,a?e:b);RB(d,108382,a?b:e);OB(d)}return}function RB(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;if(d|0){e=nx(c[c[46223]>>2]|0,2,b,0)|0;if(!e)e=nx(c[c[46223]>>2]|0,2,b,191979)|0;rx(a,e,d)|0}return}function SB(a,b,d){a=a|0;b=b|0;d=d|0;c[46191]=b;c[46222]=a;c[46171]=0;a=d|0?d:18496;c[46225]=a;Vz(a,b);oB()|0;a=c[46171]|0;if(!a){sA();a=c[46171]|0}return a|0}function TB(a,b){a=a|0;b=b|0;return SB(0,a,b)|0}function UB(a,b){a=a|0;b=b|0;b=wC(a,1,b)|0;if(!b)b=999;else{b=c[b+16>>2]|0;c[a+184>>2]=c[b+4>>2];c[a+172>>2]=c[b+12>>2];c[a+176>>2]=c[b>>2];c[a+180>>2]=c[b+16>>2];b=300}return b|0}function VB(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=l;l=l+16|0;f=i;Az(b,134401,280,1)|0;g=b+16|0;c[(c[g>>2]|0)+144>>2]=a;if((fz(b)|0)!=(b|0))c[(c[(fz(b)|0)+16>>2]|0)+144>>2]=a;e=xx(b,95297)|0;d=a+172|0;if((e|0)!=0?(c[d>>2]=0,(UB(a,e)|0)==999):0){d=xC(a,1,e)|0;c[f>>2]=e;c[f+4>>2]=d;Pw(1,95824,f)|0;d=-1}else{e=c[d>>2]|0;if(!e)d=-1;else{CG(1);bH(b,c[c[a+180>>2]>>2]&1);d=c[(c[g>>2]|0)+8>>2]|0;c[(c[(fz(b)|0)+16>>2]|0)+8>>2]=d;LK();d=c[e>>2]|0;if(d|0?(tb[d&127](b),h=c[e+4>>2]|0,h|0):0)c[(c[g>>2]|0)+148>>2]=h;CG(0);d=0}}l=i;return d|0}function WB(a,b){a=a|0;b=b|0;var d=0,e=0;if(Az(b,134401,0,1)|0){d=b+16|0;a=c[d>>2]|0;e=c[a+148>>2]|0;if(e){tb[e&127](b);a=c[d>>2]|0;c[a+148>>2]=0}if(c[a+8>>2]|0)gH(b)}return 0}function XB(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=l;l=l+16|0;j=k+8|0;i=k;d=c[b+76>>2]|0;f=c[b>>2]|0;if((d|0)!=0?(e=c[d>>2]|0,(e|0)!=0):0){tb[e&127](b);g=12}else g=4;do if((g|0)==4)if((c[b+40>>2]|0)==0?(h=b+36|0,(c[h>>2]|0)==0):0){if(a[f+13>>0]|0)YB(b);d=b+32|0;e=c[d>>2]|0;if(!e){c[h>>2]=c[15653];g=12;break}f=L1(e,103486)|0;c[h>>2]=f;if(!f){j=c[(c[b+12>>2]|0)+16>>2]|0;h=c[d>>2]|0;d=c$(c[(O_()|0)>>2]|0)|0;c[i>>2]=h;c[i+4>>2]=d;ub[j&63](95087,i);d=1}else g=12}else g=12;while(0);if((g|0)==12)if(!(c[b+152>>2]&1024))d=0;else{ub[c[(c[b+12>>2]|0)+16>>2]&63](95125,j);d=1}l=k;return d|0}function YB(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;h=l;l=l+112|0;e=h;g=h+4|0;d=c[b+24>>2]|0;if(!d)a[g>>0]=0;else{c[e>>2]=d+1;Y0(g,95143,e)|0}e=c[b+20>>2]|0;e=e|0?e:95147;d=W_(e)|0;i=W_(g)|0;f=b+52|0;i=d+1+i+(W_(c[f>>2]|0)|0)|0;d=i+11|0;if((c[46226]|0)>>>0<(i+1|0)>>>0){c[46226]=d;d=F_(c[46227]|0,d)|0;c[46227]=d}else d=c[46227]|0;b0(d,e)|0;p1(c[46227]|0,g)|0;d=c[46227]|0;d=d+(W_(d)|0)|0;a[d>>0]=46;a[d+1>>0]=0;d=n1(c[f>>2]|0)|0;f=c[46227]|0;while(1){e=o1(d,58)|0;if(!e)break;p1(f,e+1|0)|0;i=c[46227]|0;g=i+(W_(i)|0)|0;a[g>>0]=46;a[g+1>>0]=0;a[e>>0]=0;f=i}p1(f,d)|0;D_(d);c[b+32>>2]=c[46227];l=h;return}function ZB(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=l;l=l+16|0;g=h+8|0;f=h;if((b|0)!=0&(d|0)!=0){if(c[a+152>>2]&1024|0){ub[c[(c[a+12>>2]|0)+16>>2]&63](95125,f);Sa(1)}if((_B(a,b,d)|0)==(d|0))e=d;else{f=c[(c[a+12>>2]|0)+16>>2]|0;c[g>>2]=d;ub[f&63](95157,g);Sa(1)}}else e=0;l=h;return e|0}function _B(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;o=l;l=l+16|0;n=o;f=c[(c[b>>2]|0)+104>>2]|0;do if(!f){j=b+40|0;h=c[j>>2]|0;if(!h){e=E1(d,1,e,c[b+36>>2]|0)|0;break}f=b+44|0;i=b+48|0;g=c[i>>2]|0;do if(((c[f>>2]|0)+-1-g|0)>>>0>>0){g=e+4096+g&-4096;c[f>>2]=g;f=F_(h,g)|0;c[j>>2]=f;if(!f){ub[c[(c[b+12>>2]|0)+16>>2]&63](95182,n);Sa(1)}else{k=f;m=c[i>>2]|0;break}}else{k=h;m=g}while(0);F3(k+m|0,d|0,e|0)|0;n=(c[i>>2]|0)+e|0;c[i>>2]=n;a[(c[j>>2]|0)+n>>0]=0}else e=nb[f&63](b,d,e)|0;while(0);l=o;return e|0}function $B(a,b){a=a|0;b=b|0;var c=0;c=W_(b)|0;b=(ZB(a,b,c)|0)==(c|0);return (b?1:-1)|0}function aC(b,c){b=b|0;c=c|0;var d=0,e=0;d=l;l=l+16|0;e=d;a[e>>0]=c;b=(ZB(b,e,1)|0)==1;l=d;return (b?c:-1)|0}function bC(b){b=b|0;var d=0;d=c[b+36>>2]|0;if(((d|0)!=0?(a[b+144>>0]|0)==0:0)?(c[(c[b>>2]|0)+104>>2]|0)==0:0)b=w1(d)|0;else b=0;return b|0}function cC(a){a=a|0;var b=0,d=0;b=c[a+76>>2]|0;if(b|0?(d=c[b+4>>2]|0,d|0):0)tb[d&127](a);bC(a)|0;return}function dC(a){a=a|0;var b=0,d=0,e=0;e=l;l=l+16|0;d=c[a+76>>2]|0;if(c[a+152>>2]&1024|0){ub[c[(c[a+12>>2]|0)+16>>2]&63](95209,e);Sa(1)}if((d|0)!=0?(b=c[d+8>>2]|0,(b|0)!=0):0)tb[b&127](a);else{bC(a)|0;eC(a)}l=e;return}function eC(b){b=b|0;var d=0,e=0,f=0;d=b+32|0;if((c[d>>2]|0?(e=b+36|0,f=c[e>>2]|0,(f|0)!=(c[15653]|0)):0)?(a[b+144>>0]|0)==0:0){if(f|0){s1(f)|0;c[e>>2]=0}c[d>>2]=0}return}function fC(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;i=l;l=l+1056|0;f=i;h=i+24|0;g=i+8|0;c[g>>2]=d;e=q0(h,1024,b,g)|0;if((e|0)>=0){if((e|0)>1023){e=vH(e+1|0)|0;c[g>>2]=d;f=e;e=Z0(e,b,g)|0}else f=h;ZB(a,f,e)|0;if((f|0)!=(h|0))D_(f)}else{c[f>>2]=c$(c[(O_()|0)>>2]|0)|0;Pw(1,95226,f)|0}l=i;return}function gC(a,b){a=a|0;b=+b;var d=0,e=0,f=0;d=l;l=l+16|0;e=d;f=hC(e,b)|0;ZB(a,f,c[e>>2]|0)|0;l=d;return}function hC(b,d){b=b|0;d=+d;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;if(!(d<-1.0e15))if(!(d>1.0e15)){d=d*1.0e4;f=~~((d<0.0?-.5:.5)+d);if(!f){f=135312;e=1}else{l=(f|0)<0;k=4;i=0;e=191746;f=l?0-f|0:f;while(1){if(!((f|0)!=0|(k|0)>0))break;g=(f|0)%10|0;j=(f|0)/10|0;h=e+-1|0;if((g|0)==0&i<<24>>24==0)f=0;else{a[h>>0]=g|48;f=1;e=h}if((k|0)==1)if(!(f<<24>>24))f=1;else{e=e+-1|0;a[e>>0]=46;f=1}k=k+-1|0;i=f;f=j}if(l){e=e+-1|0;a[e>>0]=45}f=e;e=191746-e|0}}else{f=95241;e=18}else{f=95240;e=19}c[b>>2]=e;return f|0}function iC(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d;f=hC(e,+h[b>>3])|0;ZB(a,f,c[e>>2]|0)|0;ZB(a,99578,1)|0;b=hC(e,+h[b+8>>3])|0;ZB(a,b,c[e>>2]|0)|0;l=d;return}function jC(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=l;l=l+16|0;f=g;e=0;while(1){h=b+(e<<4)|0;c[f>>2]=c[h>>2];c[f+4>>2]=c[h+4>>2];c[f+8>>2]=c[h+8>>2];c[f+12>>2]=c[h+12>>2];iC(a,f);e=e+1|0;if((e|0)>=(d|0))break;ZB(a,99578,1)|0}l=g;return}function kC(a,b){a=a|0;b=b|0;var d=0;d=uH(392)|0;if(d|0){c[d>>2]=20052;c[d+16>>2]=23;c[d+32>>2]=a;c[d+36>>2]=b}return d|0}function lC(a){a=a|0;var b=0,d=0,e=0,f=0;b=uH(392)|0;d=b;e=a;f=d+40|0;do{c[d>>2]=c[e>>2];d=d+4|0;e=e+4|0}while((d|0)<(f|0));f=b+60|0;e=a+60|0;c[f>>2]=c[e>>2];c[f+4>>2]=c[e+4>>2];c[f+8>>2]=c[e+8>>2];c[f+12>>2]=c[e+12>>2];c[f+16>>2]=c[e+16>>2];f=b+80|0;e=a+80|0;c[f>>2]=c[e>>2];c[f+4>>2]=c[e+4>>2];c[f+8>>2]=c[e+8>>2];c[f+12>>2]=c[e+12>>2];c[f+16>>2]=c[e+16>>2];return b|0}function mC(a){a=a|0;tC(a);D_(a);return}function nC(a,b){a=a|0;b=b|0;var d=0,e=0;e=a+160|0;d=c[e>>2]|0;if(d){e=c[46228]|0;if(e){d=c[e+4>>2]|0;if(!d){d=uH(632)|0;c[(c[46228]|0)+4>>2]=d}}}else{d=uH(632)|0;c[e>>2]=d;c[a+164>>2]=d}c[46228]=d;c[d+32>>2]=b;c[d>>2]=a;return}function oC(a,b){a=a|0;b=b|0;var d=0,e=0;e=a+160|0;d=c[e>>2]|0;if(d){e=c[46229]|0;if(e){d=c[e+4>>2]|0;if(!d){d=uH(632)|0;c[(c[46229]|0)+4>>2]=d}}}else{d=uH(632)|0;c[e>>2]=d;c[a+164>>2]=d}c[46229]=d;c[d+52>>2]=b;c[d>>2]=a;return (wC(a,3,b)|0)!=0|0}function pC(a){a=a|0;var b=0;b=c[a+160>>2]|0;c[a+164>>2]=b;return b|0}function qC(a){a=a|0;var b=0,d=0,e=0;a=a+164|0;b=c[a>>2]|0;d=c[b+4>>2]|0;if(d|0?(e=d+52|0,(c[e>>2]|0)==0):0)c[e>>2]=c[b+52>>2];c[a>>2]=d;return d|0}function rC(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=a+8|0;f=b+10|0;if((c[e>>2]|0)>(b|0))a=c[a>>2]|0;else{c[e>>2]=f;f=xH(c[a>>2]|0,f<<2)|0;c[a>>2]=f;a=f}c[a+(b<<2)>>2]=d;return}function sC(a){a=a|0;var b=0;b=c[a>>2]|0;if(b|0)D_(b);c[a>>2]=0;c[a+8>>2]=0;c[a+4>>2]=0;return}function tC(a){a=a|0;var b=0,d=0,e=0;d=a+160|0;b=c[d>>2]|0;while(1){if(!b)break;e=c[b+4>>2]|0;sC(b+604|0);sC(b+592|0);D_(c[b+584>>2]|0);D_(c[b+588>>2]|0);D_(b);b=e}c[46229]=0;c[46228]=0;c[a+192>>2]=0;c[a+164>>2]=0;c[d>>2]=0;c[a+28>>2]=0;return}function uC(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0;n=l;l=l+128|0;k=n+64|0;m=n;U0(k,e,63)|0;i=A$(k,58)|0;if(i|0)a[i>>0]=0;b=b+60+(d<<2)|0;while(1){d=c[b>>2]|0;if(!d){d=b;b=0;break}U0(m,c[d+4>>2]|0,63)|0;d=A$(m,58)|0;if(d|0)a[d>>0]=0;if((b$(k,m)|0)<1){j=9;break}b=c[b>>2]|0}while(1){if((j|0)==9){d=b;b=c[b>>2]|0}if(!b)break;U0(m,c[b+4>>2]|0,63)|0;b=A$(m,58)|0;if(b|0)a[b>>0]=0;if(b$(k,m)|0)break;b=c[d>>2]|0;if((c[b+8>>2]|0)<=(f|0))break;j=9}m=vH(20)|0;c[m>>2]=c[d>>2];c[d>>2]=m;c[m+4>>2]=e;c[m+8>>2]=f;c[m+12>>2]=g;c[m+16>>2]=h;l=n;return 1}function vC(a,b){a=a|0;b=b|0;b=l;l=l+16|0;Pw(1,95321,b)|0;l=b;return 0}function wC(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=l;l=l+144|0;r=s;o=s+80|0;p=s+16|0;n=(d+-3|0)>>>0<2?0:d;U0(o,e,63)|0;e=A$(o,58)|0;if(e){f=e+1|0;a[e>>0]=0;e=A$(f,58)|0;if(!e)m=0;else{a[e>>0]=0;m=e+1|0}}else{m=0;f=0}i=(f|0)!=0;j=(m|0)==0;k=(n|0)==(d|0);h=b+60+(d<<2)|0;a:while(1){e=c[h>>2]|0;if(!e){e=0;break}U0(p,c[e+4>>2]|0,63)|0;e=A$(p,58)|0;if(!e)e=0;else{a[e>>0]=0;e=e+1|0}do if(!(b$(p,o)|0)){g=(e|0)!=0;if(i&g?b$(e,f)|0:0)break;if(!j?b$(m,c[(c[(c[h>>2]|0)+12>>2]|0)+8>>2]|0)|0:0)break;if(k|g^1){q=16;break a}if(wC(b,n,e)|0){q=16;break a}}while(0);h=c[h>>2]|0}do if((q|0)==16){e=c[h>>2]|0;if(e){f=e+16|0;if((c[f>>2]|0)==0?(vC(0,0)|0,(c[f>>2]|0)==0):0){e=0;break}if((c[b+8>>2]|0)>0){q=c[15686]|0;o=c[e+4>>2]|0;p=c[(c[e+12>>2]|0)+8>>2]|0;c[r>>2]=c[20064+(d<<2)>>2];c[r+4>>2]=o;c[r+8>>2]=p;g1(q,95352,r)|0}}else e=0}while(0);c[b+80+(d<<2)>>2]=e;l=s;return e|0}function xC(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;do if(!e)e=0;else{if(c[5021]|0){Tw(184920,0,0);c[5021]=0}h=n1(e)|0;e=A$(h,58)|0;if(e){a[e>>0]=0;f=b+60+(d<<2)|0;e=1;g=f;while(1){b=c[g>>2]|0;if(!b)break;d=n1(c[b+4>>2]|0)|0;b=A$(d,58)|0;if(b|0)a[b>>0]=0;if(!((a[h>>0]|0)!=0?(O$(h,d)|0)!=0:0)){e=c[46231]|0;if(e>>>0>=(c[46232]|0)>>>0){Uw(184920,1)|0;e=c[46231]|0}c[46231]=e+1;a[e>>0]=32;Ww(184920,c[(c[g>>2]|0)+4>>2]|0)|0;e=c[46231]|0;if(e>>>0>=(c[46232]|0)>>>0){Uw(184920,1)|0;e=c[46231]|0}c[46231]=e+1;a[e>>0]=58;Ww(184920,c[(c[(c[g>>2]|0)+12>>2]|0)+8>>2]|0)|0;e=0}D_(d);g=c[g>>2]|0}D_(h);if(e<<24>>24){g=0;i=19}}else{D_(h);g=0;f=b+60+(d<<2)|0;e=1;i=19}if((i|0)==19){while(1){b=c[f>>2]|0;if(!b)break;d=n1(c[b+4>>2]|0)|0;b=A$(d,58)|0;if(b|0)a[b>>0]=0;if(!((g|0)!=0?(O$(g,d)|0)==0:0)){e=c[46231]|0;if(e>>>0>=(c[46232]|0)>>>0){Uw(184920,1)|0;e=c[46231]|0}c[46231]=e+1;a[e>>0]=32;Ww(184920,d)|0;e=0}g=d;f=c[f>>2]|0;i=19}if(e<<24>>24){e=191979;break}}e=c[46231]|0;if(e>>>0>=(c[46232]|0)>>>0){Uw(184920,1)|0;e=c[46231]|0}a[e>>0]=0;e=c[46230]|0;c[46231]=e}while(0);return e|0}function yC(b){b=b|0;var d=0;if(!b)qa(108182,95369,573,95383);if(!(a[b>>0]|0))qa(108187,95369,574,95383);d=c[46234]|0;if(!d)b=0;else b=nb[c[d>>2]&63](d,b,512)|0;return b|0}function zC(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=l;l=l+16|0;j=k+8|0;i=k;if(!b)qa(108230,95369,589,95400);g=b+8|0;e=c[g>>2]|0;if(!e)qa(108233,95369,590,95400);if(!(a[e>>0]|0))qa(108242,95369,591,95400);h=b+20|0;f=c[h>>2]|0;do if(!f){d=ZL(e)|0;if(!d){c[i>>2]=c[g>>2];Pw(0,95424,i)|0;d=0;break}i=L1(d,135739)|0;c[h>>2]=i;if(!i){c[j>>2]=c$(c[(O_()|0)>>2]|0)|0;c[j+4>>2]=d;Pw(0,95449,j)|0;d=0;break}d=c[46235]|0;if((d|0)>49){a[b+17>>0]=1;d=1;break}else{c[46235]=d+1;d=1;break}}else{Z1(f,0,0)|0;if(!(c[h>>2]|0))qa(95470,95369,614,95400);else d=1}while(0);l=k;return d|0}function AC(b){b=b|0;var d=0,e=0;if(a[b+17>>0]|0?(d=b+20|0,e=c[d>>2]|0,e|0):0){s1(e)|0;c[d>>2]=0}return}function BC(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0.0,g=0.0;if(!b){e=-1;d=-1}else{e=c[b+48>>2]|0;f=+(e|0);if(!e){g=+h[d>>3];f=+h[d+8>>3]}else{h[d+8>>3]=f;h[d>>3]=f;g=f}e=~~(+((c[b+40>>2]|0)*72|0)/g);d=~~(+((c[b+44>>2]|0)*72|0)/f)}c[a>>2]=e;c[a+4>>2]=d;return}function CC(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,m=0,n=0.0;m=l;l=l+48|0;f=m+16|0;j=m;k=m+32|0;if((e|0)!=0?(a[e>>0]|0)!=0:0){if((0==0?(g=c[46362]|0,(c[46236]|0)!=(g|0)):0)?(c[46236]=g,i=c[46234]|0,i|0):0){yw(i)|0;c[46234]=0}n=+h[(c[(c[d+16>>2]|0)+8>>2]|0)+24>>3];n=!(n>=1.0)?96.0:n;h[j+8>>3]=n;h[j>>3]=n;d=DC(e)|0;c[f>>2]=c[j>>2];c[f+4>>2]=c[j+4>>2];c[f+8>>2]=c[j+8>>2];c[f+12>>2]=c[j+12>>2];BC(k,d,f);d=c[k>>2]|0;f=c[k+4>>2]|0}else{d=-1;f=-1}c[b>>2]=d;c[b+4>>2]=f;l=m;return}function DC(a){a=a|0;var b=0,d=0,e=0,f=0;f=l;l=l+16|0;e=f;if(!a)qa(108182,95369,638,95476);if(!(c[46234]|0))c[46234]=Cw(20088,c[4563]|0)|0;b=yC(a)|0;a:do if(!b){b=uH(64)|0;if(!b)b=0;else{d=b+8|0;c[d>>2]=Oz(0,a)|0;if(!((zC(b)|0)<<24>>24)){EC(b);b=0;break}if(!(c[b+20>>2]|0))qa(95470,95369,653,95476);do switch(FC(b)|0){case 0:{a=VJ(c[d>>2]|0)|0;c[b+52>>2]=a;if(!a){c[e>>2]=c[d>>2];Pw(0,95493,e)|0;EC(b);b=0;break a}break}case 2:{GC(b);break}case 3:{HC(b);break}case 1:{IC(b);break}case 4:{JC(b);break}case 6:{KC(b);break}case 11:{LC(b);break}case 8:{MC(b);break}case 5:{NC(b);break}case 12:{OC(b);break}default:{}}while(0);AC(b);e=c[46234]|0;nb[c[e>>2]&63](e,b,1)|0}}else AC(b);while(0);l=f;return b|0}function EC(a){a=a|0;var b=0;b=c[a+8>>2]|0;if(b|0)Qz(0,b)|0;D_(a);return}function FC(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;j=l;l=l+224|0;f=j+200|0;g=j;h=a+20|0;b=c[h>>2]|0;a:do if((b|0)!=0?(g3(f,1,20,b)|0)==20:0){d=0;while(1){if(d>>>0>=10){i=13;break a}if(!(L0(f,c[20124+(d<<4)>>2]|0,c[20124+(d<<4)+4>>2]|0)|0))break;d=d+1|0}e=a+28|0;c[e>>2]=c[20124+(d<<4)+12>>2];b=c[20124+(d<<4)+8>>2]|0;a=a+24|0;c[a>>2]=b;switch(d|0){case 7:break;case 8:{if(L0(f+8|0,95709,4)|0)break a;c[e>>2]=95714;c[a>>2]=11;b=11;break a}default:break a}while(1){if(!(O0(g,200,c[h>>2]|0)|0)){i=11;break}if(!(L0(g,95704,4)|0)){i=8;break}}if((i|0)==8){c[e>>2]=98777;c[a>>2]=8;b=8;break}else if((i|0)==11){b=c[a>>2]|0;break}}else i=13;while(0);if((i|0)==13){c[a+28>>2]=95719;c[a+24>>2]=0;b=0}l=j;return b|0}function GC(a){a=a|0;var b=0,d=0,e=0,f=0;f=l;l=l+16|0;b=f+4|0;d=f;c[a+48>>2]=0;e=a+20|0;Z1(c[e>>2]|0,6,0)|0;if((XC(c[e>>2]|0,2,b)|0)<<24>>24?(XC(c[e>>2]|0,2,d)|0)<<24>>24:0){c[a+40>>2]=c[b>>2];c[a+44>>2]=c[d>>2]}l=f;return}function HC(a){a=a|0;var b=0,d=0,e=0,f=0;f=l;l=l+16|0;b=f+4|0;d=f;c[a+48>>2]=0;e=a+20|0;Z1(c[e>>2]|0,16,0)|0;if((PC(c[e>>2]|0,4,b)|0)<<24>>24?(PC(c[e>>2]|0,4,d)|0)<<24>>24:0){c[a+40>>2]=c[b>>2];c[a+44>>2]=c[d>>2]}l=f;return}function IC(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;h=l;l=l+16|0;b=h+12|0;d=h+8|0;e=h+4|0;f=h;c[a+48>>2]=0;g=a+20|0;Z1(c[g>>2]|0,16,0)|0;if((((XC(c[g>>2]|0,2,b)|0)<<24>>24?(XC(c[g>>2]|0,2,d)|0)<<24>>24:0)?(XC(c[g>>2]|0,2,e)|0)<<24>>24:0)?(XC(c[g>>2]|0,2,f)|0)<<24>>24:0){c[a+40>>2]=c[b>>2]<<16|c[d>>2];c[a+44>>2]=c[e>>2]<<16|c[f>>2]}l=h;return}function JC(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0;m=l;l=l+32|0;b=m+16|0;e=m+12|0;f=m+8|0;h=m+4|0;i=m;c[a+48>>2]=0;j=a+20|0;while(1){if(!((PC(c[j>>2]|0,1,b)|0)<<24>>24))break;d=c[b>>2]|0;if((d|0)==255)continue;if(A$(95692,d)|0)continue;if((d|0)==192){k=6;break}g=c[j>>2]|0;if((d|0)==194){k=11;break}if(!((PC(g,2,e)|0)<<24>>24))break;Z1(c[j>>2]|0,(c[e>>2]|0)+-2|0,1)|0}if((k|0)==6){if(((PC(c[j>>2]|0,3,i)|0)<<24>>24?(PC(c[j>>2]|0,2,f)|0)<<24>>24:0)?(PC(c[j>>2]|0,2,h)|0)<<24>>24:0){c[a+44>>2]=c[f>>2];c[a+40>>2]=c[h>>2]}}else if((((k|0)==11?(PC(g,3,i)|0)<<24>>24:0)?(PC(c[j>>2]|0,2,f)|0)<<24>>24:0)?(PC(c[j>>2]|0,2,h)|0)<<24>>24:0){c[a+44>>2]=c[f>>2];c[a+40>>2]=c[h>>2]}l=m;return}function KC(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0;m=l;l=l+1056|0;j=m;b=m+32|0;e=m+28|0;f=m+24|0;g=m+20|0;h=m+16|0;c[a+48>>2]=72;i=a+20|0;Z1(c[i>>2]|0,0,0)|0;while(1){if(!(O0(b,1024,c[i>>2]|0)|0))break;d=P0(b,95677)|0;if(!d)continue;c[j>>2]=e;c[j+4>>2]=f;c[j+8>>2]=g;c[j+12>>2]=h;if((N1(d,101285,j)|0)==4){k=5;break}}if((k|0)==5){j=c[e>>2]|0;c[a+32>>2]=j;k=c[f>>2]|0;c[a+36>>2]=k;c[a+40>>2]=(c[g>>2]|0)-j;c[a+44>>2]=(c[h>>2]|0)-k}l=m;return}function LC(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;g=l;l=l+16|0;b=g+4|0;d=g;c[a+48>>2]=0;e=a+20|0;Z1(c[e>>2]|0,15,0)|0;h=(m3(c[e>>2]|0)|0)==88;f=c[e>>2]|0;if(h){Z1(f,24,0)|0;if((XC(c[e>>2]|0,4,b)|0)<<24>>24?(XC(c[e>>2]|0,4,d)|0)<<24>>24:0){c[a+40>>2]=c[b>>2];c[a+44>>2]=c[d>>2]}}else{Z1(f,26,0)|0;if((XC(c[e>>2]|0,2,b)|0)<<24>>24?(XC(c[e>>2]|0,2,d)|0)<<24>>24:0){c[a+40>>2]=c[b>>2];c[a+44>>2]=c[d>>2]}}l=g;return}function MC(b){b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;F=l;l=l+352|0;C=F+80|0;B=F+72|0;E=F+64|0;D=F+56|0;A=F+48|0;d=F+40|0;s=F+32|0;t=F+24|0;u=F+16|0;v=F+8|0;w=F;x=F+328|0;y=F+128|0;z=F+96|0;if(!(c[46237]|0)){if(o2(184952,95562,1)|0){c[d>>2]=95562;Pw(1,95589,d)|0}c[46237]=184952}m=b+20|0;Z1(c[m>>2]|0,0,0)|0;n=z+12|0;o=z+20|0;p=z+8|0;q=z+16|0;r=z+4|0;d=0;g=0;f=0;e=0;a:while(1){if(!(O0(y,200,c[m>>2]|0)|0))break;if(g<<24>>24==0|d<<24>>24==0){i=y;k=e}else break;b:while(1){j=f;c:while(1){while(1){if(a3(184952,i,4,z,0)|0){f=j;e=k;continue a}a[i+(c[n>>2]|0)>>0]=0;a[i+(c[o>>2]|0)>>0]=0;e=i+(c[p>>2]|0)|0;f=i+(c[q>>2]|0)|0;i=i+((c[r>>2]|0)+1)|0;if(!(b$(e,138034)|0))break;if(!(b$(e,137966)|0))break c;if(b$(e,95636)|0)continue;c[C>>2]=t;c[C+4>>2]=u;c[C+8>>2]=v;c[C+12>>2]=w;if((N1(f,95644,C)|0)==4)break b}c[A>>2]=s;c[A+4>>2]=x;if((N1(f,95626,A)|0)!=2){c[D>>2]=s;if((N1(f,98183,D)|0)==1){e=1;f=WC(+h[s>>3],95633)|0}else{e=g;f=j}}else{e=1;f=WC(+h[s>>3],x)|0}if(!(d<<24>>24)){d=0;g=e;j=f}else{g=e;e=k;continue a}}c[E>>2]=s;c[E+4>>2]=x;if((N1(f,95626,E)|0)!=2){c[B>>2]=s;if((N1(f,98183,B)|0)==1){d=1;e=WC(+h[s>>3],95633)|0}else e=k}else{d=1;e=WC(+h[s>>3],x)|0}if(!(g<<24>>24)){g=0;f=j;k=e}else{f=j;continue a}}d=1;g=1;f=~~(+h[v>>3]+1.0-+h[t>>3])>>>0;e=~~(+h[w>>3]+1.0-+h[u>>3])>>>0}c[b+48>>2]=0;c[b+40>>2]=f;c[b+44>>2]=e;l=F;return}function NC(a){a=a|0;var b=0,d=0,e=0,f=0.0,g=0.0;d=l;l=l+32|0;b=d;c[a+48>>2]=0;e=a+20|0;Z1(c[e>>2]|0,0,0)|0;if(!(QC(c[e>>2]|0,b)|0)){g=+h[b>>3];c[a+32>>2]=~~g;f=+h[b+8>>3];c[a+36>>2]=~~f;c[a+40>>2]=~~(+h[b+16>>3]-g);c[a+44>>2]=~~(+h[b+24>>3]-f)}l=d;return}function OC(a){a=a|0;var b=0,d=0,e=0,f=0;f=l;l=l+16|0;b=f+4|0;d=f;c[a+48>>2]=0;e=a+20|0;Z1(c[e>>2]|0,6,0)|0;if((PC(c[e>>2]|0,1,b)|0)<<24>>24?(PC(c[e>>2]|0,1,d)|0)<<24>>24:0){c[a+40>>2]=c[b>>2];c[a+44>>2]=c[d>>2]}l=f;return}function PC(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;c[d>>2]=0;e=0;while(1){if(e>>>0>=b>>>0){e=1;break}f=m3(a)|0;if(r1(a)|0){e=0;break}c[d>>2]=c[d>>2]<<8|f;e=e+1|0}return e|0}function QC(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;h=l;l=l+1040|0;d=h;e=h+16|0;while(1){if(!(O0(e,1024,a)|0)){a=1;break}f=P0(e,95552)|0;if(f|0){g=4;break}}if((g|0)==4){c[d+4>>2]=e;c[d>>2]=f+9;c[d+8>>2]=a;a=RC(d,b)|0}l=h;return a|0}function RC(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;g=l;l=l+1024|0;f=g;SC(b);e=a[c[b>>2]>>0]|0;if(!(e<<24>>24))e=(TC(b)|0)&255;else e=e<<24>>24;if((((e|0)==91?(c[b>>2]=(c[b>>2]|0)+1,UC(b,f),(VC(f,d)|0)==0):0)?(UC(b,f),(VC(f,d+8|0)|0)==0):0)?(UC(b,f),(VC(f,d+16|0)|0)==0):0){UC(b,f);e=(VC(f,d+24|0)|0)!=0&1}else e=1;l=g;return e|0}function SC(b){b=b|0;var d=0;d=c[b>>2]|0;while(1){d=a[d>>0]|0;if(!(d<<24>>24))d=(TC(b)|0)&255;else d=d<<24>>24;if(!((d&255)<<24>>24))break;if(!(B$(d&255)|0))break;d=(c[b>>2]|0)+1|0;c[b>>2]=d}return}function TC(b){b=b|0;var d=0;d=b+4|0;if(!(O0(c[d>>2]|0,1024,c[b+8>>2]|0)|0))b=0;else{d=c[d>>2]|0;c[b>>2]=d;b=a[d>>0]|0}return b|0}function UC(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;SC(b);e=0;f=c[b>>2]|0;while(1){f=a[f>>0]|0;if(!(f<<24>>24))g=(TC(b)|0)&255;else g=f<<24>>24;f=g<<24>>24;if(!f)break;if(!((f|0)==46|(f+-48|0)>>>0<10))break;a[d+e>>0]=g;e=e+1|0;f=(c[b>>2]|0)+1|0;c[b>>2]=f;if((e|0)==1023){e=1023;break}}a[d+e>>0]=0;return}function VC(a,b){a=a|0;b=b|0;var d=0.0,e=0,f=0;e=l;l=l+16|0;f=e;d=+c2(a,f);if((c[f>>2]|0)==(a|0))a=1;else{h[b>>3]=d;a=0}l=e;return a|0}function WC(a,b){a=+a;b=b|0;var c=0.0;do if(!(b$(b,95660)|0)){a=a*72.0;c=a;a=a>=0.0?.5:-.5}else{if(!(b$(b,95663)|0)){a=a*.75;c=a;a=a>=0.0?.5:-.5;break}if(!(b$(b,95666)|0)){a=a*12.0;c=a;a=a>=0.0?.5:-.5;break}if(b$(b,95633)|0?b$(b,95669)|0:0)if(!(b$(b,95671)|0)){a=a*28.346456664;c=a;a=a>=0.0?.5:-.5;break}else{b=(b$(b,95674)|0)==0;c=a*2.8346456663999997;return (b?~~(c+(c>=0.0?.5:-.5)):0)|0}c=a>=0.0?.5:-.5}while(0);return ~~(a+c)|0}function XC(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;c[d>>2]=0;e=0;while(1){if(e>>>0>=b>>>0){e=1;break}f=m3(a)|0;if(r1(a)|0){e=0;break}c[d>>2]=c[d>>2]|f<<(e<<3);e=e+1|0}return e|0}function YC(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;a=c[b+20>>2]|0;if(a|0)s1(a)|0;if(c[b+52>>2]|0?(e=c[b+60>>2]|0,e|0):0)tb[e&127](b);D_(b);return}function ZC(){var a=0;nx(0,1,105198,102467)|0;a=kC(0,1)|0;LP(a,0);return a|0}function _C(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,m=0.0,n=0.0,o=0.0,p=0.0;k=l;l=l+304|0;j=k+24|0;i=k+8|0;f=k;g=k+40|0;if((UB(b,e)|0)!=999)if((VB(b,d)|0)==-1)b=-1;else{b=c[d+16>>2]|0;e=b+16|0;if(!(a[(c[b+8>>2]|0)+81>>0]|0)){p=+h[e>>3];o=+h[b+24>>3];n=+h[b+32>>3];m=+h[b+40>>3];c[j>>2]=~~(p+(p>=0.0?.5:-.5));c[j+4>>2]=~~(o+(o>=0.0?.5:-.5));c[j+8>>2]=~~(n+(n>=0.0?.5:-.5));c[j+12>>2]=~~(m+(m>=0.0?.5:-.5));Y0(g,95873,j)|0}else{m=+h[b+24>>3];n=+h[e>>3];o=+h[b+40>>3];p=+h[b+32>>3];c[i>>2]=~~(m+(m>=0.0?.5:-.5));c[i+4>>2]=~~(n+(n>=0.0?.5:-.5));c[i+8>>2]=~~(o+(o>=0.0?.5:-.5));c[i+12>>2]=~~(p+(p>=0.0?.5:-.5));Y0(g,95873,i)|0}Ax(d,99645,g,191979)|0;b=0}else{b=xC(b,1,e)|0;c[f>>2]=e;c[f+4>>2]=b;Pw(1,95824,f)|0;b=-1}l=k;return b|0}function $C(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;i=l;l=l+16|0;g=i;f=c[b+60>>2]|0;oC(a,d)|0;b=c[a+164>>2]|0;c[b+56>>2]=uO(b,c[b+52>>2]|0)|0;if((Az(f,134401,0,1)|0)!=0?(c[(c[f+16>>2]|0)+8>>2]|0)!=0:0)h=5;else if(!(c[b+152>>2]&67108864)){Sw(95885,g);b=-1}else h=5;if((h|0)==5){c[b+36>>2]=e;if(!e){h=b+152|0;c[h>>2]=c[h>>2]|134217728}h=DG(a,f)|0;wO(b);tC(a);b=h}l=i;return b|0}function aD(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;i=l;l=l+16|0;g=i;f=c[b+60>>2]|0;oC(a,d)|0;b=c[a+164>>2]|0;c[b+56>>2]=uO(b,c[b+52>>2]|0)|0;if((Az(f,134401,0,1)|0)!=0?(c[(c[f+16>>2]|0)+8>>2]|0)!=0:0)h=5;else if(!(c[b+152>>2]&67108864)){Sw(95885,g);b=-1}else h=5;if((h|0)==5){nC(a,e);h=DG(a,f)|0;wO(b);dC(b);tC(a);b=h}l=i;return b|0}function bD(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0;m=l;l=l+16|0;h=m+8|0;g=m;b=c[b+60>>2]|0;oC(a,d)|0;j=c[a+164>>2]|0;c[j+56>>2]=uO(j,c[j+52>>2]|0)|0;if((Az(b,134401,0,1)|0)!=0?(c[(c[b+16>>2]|0)+8>>2]|0)!=0:0)k=5;else if(!(c[j+152>>2]&67108864)){Sw(95885,g);b=-1}else k=5;do if((k|0)==5){if(e|0?(i=C_(4096)|0,c[e>>2]=i,i|0):0){g=j+40|0;c[g>>2]=i;c[j+44>>2]=4096;d=j+48|0;c[d>>2]=0;b=DG(a,b)|0;wO(j);if(!b){c[e>>2]=c[g>>2];c[f>>2]=c[d>>2]}tC(a);break}Pw(1,95906,h)|0;b=-1}while(0);l=m;return b|0}function cD(a,b){a=a|0;b=b|0;JP(a,0,b);return}function dD(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;H=l;l=l+4288|0;E=H+8|0;D=H;F=4;G=C_(40)|0;c[G>>2]=0;A=H+4152|0;B=H+4148|0;C=H+4128|0;j=H+4112|0;k=H+16|0;o=0;i=$(24,b|0)|0;g=o;o=0;if((g|0)!=0&(p|0)!=0){h=E3(c[g>>2]|0,G|0,F|0)|0;if(!h)bb(g|0,p|0);z=p}else h=-1;a:do if((h|0)!=1){if(!i){c[d>>2]=0;g=0;break}o=0;n=ca(26,e|0,B|0,A|0)|0;g=o;o=0;if((g|0)!=0&(p|0)!=0){h=E3(c[g>>2]|0,G|0,F|0)|0;if(!h)bb(g|0,p|0);z=p}else h=-1;if((h|0)!=1){o=0;m=$(23,40)|0;g=o;o=0;if((g|0)!=0&(p|0)!=0){h=E3(c[g>>2]|0,G|0,F|0)|0;if(!h)bb(g|0,p|0);z=p}else h=-1;if((h|0)!=1){o=0;na(7,C|0,j|0,k|0,24,83);g=o;o=0;if((g|0)!=0&(p|0)!=0){h=E3(c[g>>2]|0,G|0,F|0)|0;if(!h)bb(g|0,p|0);z=p}else h=-1;if((h|0)!=1){o=0;e=$(25,b|0)|0;g=o;o=0;if((g|0)!=0&(p|0)!=0){h=E3(c[g>>2]|0,G|0,F|0)|0;if(!h)bb(g|0,p|0);z=p}else h=-1;if((h|0)!=1){j=C+16|0;i=c[j>>2]|0;g=e;while(1){if(!g)break;o=0;aa(i|0,g|0,0)|0;h=o;o=0;if((h|0)!=0&(p|0)!=0){e=E3(c[h>>2]|0,G|0,F|0)|0;if(!e)bb(h|0,p|0);z=p}else e=-1;if((e|0)==1){y=0;x=j;w=m;v=n;g=z;m=15;break a}o=0;g=aa(84,b|0,g|0)|0;h=o;o=0;if((h|0)!=0&(p|0)!=0){e=E3(c[h>>2]|0,G|0,F|0)|0;if(!e)bb(h|0,p|0);z=p}else e=-1;if((e|0)==1){y=0;x=j;w=m;v=n;g=z;m=15;break a}}G=D3(184984,1,G|0,F|0)|0;F=z;o=0;g=o;o=0;if((g|0)!=0&(p|0)!=0){h=E3(c[g>>2]|0,G|0,F|0)|0;if(!h)bb(g|0,p|0);z=p}else h=-1;if((h|0)==1){y=m;x=j;w=m;v=n;g=z;m=15}else{y=m;x=j;w=m;v=n;g=0;m=15}}else{y=0;x=0;w=m;v=n;g=z;m=15}}else{y=0;x=0;w=m;v=n;g=z;m=15}}else{y=0;x=0;w=m;v=n;g=z;m=15}}else{y=0;x=0;w=0;v=n;g=z;m=15}}else{y=0;x=0;w=0;v=0;g=z;m=15}while(0);do if((m|0)==15){b:while(1){c:do if(!g){o=0;e=$(25,b|0)|0;g=o;o=0;if((g|0)!=0&(p|0)!=0){h=E3(c[g>>2]|0,G|0,F|0)|0;if(!h)bb(g|0,p|0);z=p}else h=-1;if((h|0)==1){s=v;t=w;u=x;m=y;g=z;v=s;w=t;x=u;y=m;m=15;continue b}u=v+(c[B>>2]|0)|0;k=0;m=0;j=0;while(1){if(!e)break;o=0;g=aa(c[x>>2]|0,e|0,-1)|0;h=o;o=0;if((h|0)!=0&(p|0)!=0){i=E3(c[h>>2]|0,G|0,F|0)|0;if(!i)bb(h|0,p|0);z=p}else i=-1;if((i|0)==1){s=v;t=w;u=x;m=y;g=z;v=s;w=t;x=u;y=m;m=15;continue b}if((g|0)==0?(a[(c[e+16>>2]|0)+119>>0]|0)==3:0){if(!m){o=0;c[D>>2]=j;ca(27,u|0,134313,D|0)|0;g=o;o=0;if((g|0)!=0&(p|0)!=0){h=E3(c[g>>2]|0,G|0,F|0)|0;if(!h)bb(g|0,p|0);z=p}else h=-1;if((h|0)==1){s=v;t=w;u=x;m=y;g=z;v=s;w=t;x=u;y=m;m=15;continue b}o=0;i=ca(28,b|0,v|0,1)|0;g=o;o=0;if((g|0)!=0&(p|0)!=0){h=E3(c[g>>2]|0,G|0,F|0)|0;if(!h)bb(g|0,p|0);z=p}else h=-1;if((h|0)==1){s=v;t=w;u=x;m=y;g=z;v=s;w=t;x=u;y=m;m=15;continue b}o=0;da(53,i|0,134401,280,1)|0;g=o;o=0;if((g|0)!=0&(p|0)!=0){h=E3(c[g>>2]|0,G|0,F|0)|0;if(!h)bb(g|0,p|0);z=p}else h=-1;if((h|0)==1){s=v;t=w;u=x;m=y;g=z;v=s;w=t;x=u;y=m;m=15;continue b}c[y+(j<<2)>>2]=i;k=1;j=j+1|0}else i=m;o=0;da(54,b|0,e|0,i|0,C|0)|0;g=o;o=0;if((g|0)!=0&(p|0)!=0){h=E3(c[g>>2]|0,G|0,F|0)|0;if(!h)bb(g|0,p|0);z=p}else h=-1;if((h|0)==1){s=v;t=w;u=x;m=y;g=z;v=s;w=t;x=u;y=m;m=15;continue b}}else i=m;o=0;e=aa(84,b|0,e|0)|0;g=o;o=0;if((g|0)!=0&(p|0)!=0){h=E3(c[g>>2]|0,G|0,F|0)|0;if(!h)bb(g|0,p|0);z=p}else h=-1;if((h|0)==1){s=v;t=w;u=x;m=y;g=z;v=s;w=t;x=u;y=m;m=15;continue b}m=i}o=0;e=$(25,b|0)|0;g=o;o=0;if((g|0)!=0&(p|0)!=0){h=E3(c[g>>2]|0,G|0,F|0)|0;if(!h)bb(g|0,p|0);z=p}else h=-1;if((h|0)==1){s=v;t=w;u=x;m=y;g=z;v=s;w=t;x=u;y=m;m=15;continue b}i=10;n=y;q=w;r=w;t=w;while(1){if(!e){m=0;i=r;e=t;break c}o=0;g=aa(c[x>>2]|0,e|0,-1)|0;h=o;o=0;if((h|0)!=0&(p|0)!=0){m=E3(c[h>>2]|0,G|0,F|0)|0;if(!m)bb(h|0,p|0);z=p}else m=-1;if((m|0)==1){s=v;t=w;u=x;m=y;g=z;v=s;w=t;x=u;y=m;m=15;continue b}if(!g){o=0;c[E>>2]=j;ca(27,u|0,134313,E|0)|0;g=o;o=0;if((g|0)!=0&(p|0)!=0){h=E3(c[g>>2]|0,G|0,F|0)|0;if(!h)bb(g|0,p|0);z=p}else h=-1;if((h|0)==1){s=v;t=w;u=x;m=y;g=z;v=s;w=t;x=u;y=m;m=15;continue b}o=0;s=ca(28,b|0,v|0,1)|0;g=o;o=0;if((g|0)!=0&(p|0)!=0){h=E3(c[g>>2]|0,G|0,F|0)|0;if(!h)bb(g|0,p|0);z=p}else h=-1;if((h|0)==1){s=v;t=w;u=x;m=y;g=z;v=s;w=t;x=u;y=m;m=15;continue b}o=0;da(53,s|0,134401,280,1)|0;h=o;o=0;if((h|0)!=0&(p|0)!=0){g=E3(c[h>>2]|0,G|0,F|0)|0;if(!g)bb(h|0,p|0);z=p}else g=-1;if((g|0)==1){s=v;t=w;u=x;m=y;g=z;v=s;w=t;x=u;y=m;m=15;continue b}o=0;da(54,b|0,e|0,s|0,C|0)|0;g=o;o=0;if((g|0)!=0&(p|0)!=0){h=E3(c[g>>2]|0,G|0,F|0)|0;if(!h)bb(g|0,p|0);z=p}else h=-1;if((h|0)==1){s=v;t=w;u=x;m=y;g=z;v=s;w=t;x=u;y=m;m=15;continue b}if((j|0)==(i|0)){i=j<<1;o=0;m=aa(85,q|0,j<<3|0)|0;g=o;o=0;if((g|0)!=0&(p|0)!=0){h=E3(c[g>>2]|0,G|0,F|0)|0;if(!h)bb(g|0,p|0);z=p}else h=-1;if((h|0)==1){s=v;t=w;u=x;m=y;g=z;v=s;w=t;x=u;y=m;m=15;continue b}g=m;q=m;r=m;h=m}else{g=n;h=t}c[g+(j<<2)>>2]=s;n=g;j=j+1|0;m=h}else m=t;o=0;e=aa(84,b|0,e|0)|0;g=o;o=0;if((g|0)!=0&(p|0)!=0){h=E3(c[g>>2]|0,G|0,F|0)|0;if(!h)bb(g|0,p|0);z=p}else h=-1;if((h|0)==1){s=v;t=w;u=x;m=y;g=z;v=s;w=t;x=u;y=m;m=15;continue b}t=m}}else{m=1;k=0;n=y;j=0;i=w;e=w}while(0);o=0;ia(105,C|0);g=o;o=0;if((g|0)!=0&(p|0)!=0){h=E3(c[g>>2]|0,G|0,F|0)|0;if(!h)bb(g|0,p|0);z=p}else h=-1;if((h|0)==1){s=v;t=w;u=x;m=y;g=z;v=s;w=t;x=u;y=m;m=15;continue}if((v|0)!=(A|0)){o=0;ia(103,v|0);g=o;o=0;if((g|0)!=0&(p|0)!=0){h=E3(c[g>>2]|0,G|0,F|0)|0;if(!h)bb(g|0,p|0);z=p}else h=-1;if((h|0)==1){s=v;t=w;u=x;m=y;g=z;v=s;w=t;x=u;y=m;m=15;continue}}if(!m){o=0;g=aa(85,e|0,j<<2|0)|0;h=o;o=0;if((h|0)!=0&(p|0)!=0){e=E3(c[h>>2]|0,G|0,F|0)|0;if(!e)bb(h|0,p|0);z=p}else e=-1;if((e|0)==1){s=v;t=w;u=x;m=y;g=z;v=s;w=t;x=u;y=m;m=15;continue}else{m=58;break}}c[d>>2]=0;g=0;while(1){if((g|0)>=(j|0))break;o=0;$(26,c[n+(g<<2)>>2]|0)|0;h=o;o=0;if((h|0)!=0&(p|0)!=0){e=E3(c[h>>2]|0,G|0,F|0)|0;if(!e)bb(h|0,p|0);z=p}else e=-1;if((e|0)==1){s=v;t=w;u=x;m=y;g=z;v=s;w=t;x=u;y=m;m=15;continue b}g=g+1|0}o=0;ia(103,i|0);g=o;o=0;if((g|0)!=0&(p|0)!=0){h=E3(c[g>>2]|0,G|0,F|0)|0;if(!h)bb(g|0,p|0);z=p}else h=-1;if((h|0)==1){s=v;t=w;u=x;m=y;g=z;v=s;w=t;x=u;y=m;m=15}else{m=56;break}}if((m|0)==56){g=0;break}else if((m|0)==58){c[d>>2]=j;a[f>>0]=k;break}}while(0);D_(G|0);l=H;return g|0}function eD(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;if(!((a|0)!=0?(nD(a)|0)!=0:0))a=95962;e=W_(a)|0;if((e|0)>=104){d=vH(e+25|0)|0;if(!d)d=0;else f=6}else f=6;if((f|0)==6){b0(d,a)|0;c[b>>2]=e}return d|0}function fD(a,b){a=a|0;b=b|0;Xy(b,a,1)|0;return}function gD(b,d){b=b|0;d=d|0;var e=0;b=(c[b+16>>2]|0)+157|0;e=a[b>>0]|0;if((d|0)>=0)a[b>>0]=d;return e|0}function hD(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;c[b>>2]=d;c[b+4>>2]=d+4096;c[b+12>>2]=0;c[b+8>>2]=0;c[a>>2]=b;c[a+4>>2]=b;c[a+8>>2]=d;c[a+12>>2]=e;c[a+16>>2]=f;return}function iD(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;lD(e,b);i=e+12|0;j=e+16|0;b=0;a:while(1){k=mD(e)|0;if(!k)break;b=b+1|0;f=c[i>>2]|0;if(f|0)ub[f&63](k,d);h=Jx(a,k)|0;while(1){if(!h)continue a;g=c[h>>2]&3;f=c[((g|0)==3?h:h+48|0)+40>>2]|0;if((f|0)==(k|0))f=c[((g|0)==2?h:h+-48|0)+40>>2]|0;if(!(lb[c[j>>2]&127](f,-1)|0))lD(e,f);h=Kx(a,h,k)|0}}return b|0}function jD(a){a=a|0;var b=0;a=c[(c[a>>2]|0)+12>>2]|0;while(1){if(!a)break;b=c[a+12>>2]|0;kD(a);a=b}return}function kD(a){a=a|0;D_(c[a>>2]|0);D_(a);return}function lD(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=l;l=l+16|0;j=k+8|0;f=k;g=a+8|0;i=a+4|0;d=c[i>>2]|0;if((c[g>>2]|0)==(c[d+4>>2]|0)){d=c[d+12>>2]|0;do if(!d){e=vH(16)|0;if(!e){Pw(1,95943,f)|0;bb(184984,1)}c[e+8>>2]=c[i>>2];c[e+12>>2]=0;d=vH(4e6)|0;c[e>>2]=d;if(!d){Pw(1,95943,j)|0;bb(184984,1)}else{c[e+4>>2]=d+4e6;c[(c[i>>2]|0)+12>>2]=e;h=e;break}}else h=d;while(0);c[i>>2]=h;c[g>>2]=c[h>>2]}lb[c[a+16>>2]&127](b,1)|0;j=c[g>>2]|0;c[g>>2]=j+4;c[j>>2]=b;l=k;return}function mD(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;f=a+8|0;b=c[f>>2]|0;d=a+4|0;e=c[d>>2]|0;if((b|0)==(c[e>>2]|0))if((e|0)==(c[a>>2]|0))b=0;else{b=c[e+8>>2]|0;c[d>>2]=b;b=c[b+4>>2]|0;c[f>>2]=b;g=4}else g=4;if((g|0)==4){b=b+-4|0;c[f>>2]=b;b=c[b>>2]|0}return b|0}function nD(b){b=b|0;var c=0;a:while(1){c=b;b=b+1|0;c=a[c>>0]|0;switch(c<<24>>24){case 95:continue a;case 0:{b=1;break a}default:{}}if(!(M$(c&255)|0)){b=0;break}}return b|0}function oD(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,A=0,B=0;B=l;l=l+4272|0;x=B;y=4;A=C_(40)|0;c[A>>2]=0;u=B+4144|0;v=B+4140|0;w=B+4120|0;h=B+4104|0;i=B+8|0;o=0;f=$(24,a|0)|0;g=o;o=0;if((g|0)!=0&(p|0)!=0){e=E3(c[g>>2]|0,A|0,y|0)|0;if(!e)bb(g|0,p|0);z=p}else e=-1;a:do if((e|0)!=1)if(f){o=0;k=ca(26,d|0,v|0,u|0)|0;e=o;o=0;if((e|0)!=0&(p|0)!=0){d=E3(c[e>>2]|0,A|0,y|0)|0;if(!d)bb(e|0,p|0);z=p}else d=-1;if((d|0)!=1){o=0;j=$(23,40)|0;e=o;o=0;if((e|0)!=0&(p|0)!=0){d=E3(c[e>>2]|0,A|0,y|0)|0;if(!d)bb(e|0,p|0);z=p}else d=-1;if((d|0)!=1){o=0;na(7,w|0,h|0,i|0,24,83);e=o;o=0;if((e|0)!=0&(p|0)!=0){d=E3(c[e>>2]|0,A|0,y|0)|0;if(!d)bb(e|0,p|0);z=p}else d=-1;if((d|0)!=1){o=0;f=$(25,a|0)|0;e=o;o=0;if((e|0)!=0&(p|0)!=0){d=E3(c[e>>2]|0,A|0,y|0)|0;if(!d)bb(e|0,p|0);z=p}else d=-1;if((d|0)!=1){h=w+16|0;g=c[h>>2]|0;e=f;while(1){if(!e)break;o=0;aa(g|0,e|0,0)|0;d=o;o=0;if((d|0)!=0&(p|0)!=0){f=E3(c[d>>2]|0,A|0,y|0)|0;if(!f)bb(d|0,p|0);z=p}else f=-1;if((f|0)==1){t=h;s=j;r=k;e=z;j=14;break a}o=0;e=aa(84,a|0,e|0)|0;d=o;o=0;if((d|0)!=0&(p|0)!=0){f=E3(c[d>>2]|0,A|0,y|0)|0;if(!f)bb(d|0,p|0);z=p}else f=-1;if((f|0)==1){t=h;s=j;r=k;e=z;j=14;break a}}A=D3(184984,1,A|0,y|0)|0;y=z;o=0;e=o;o=0;if((e|0)!=0&(p|0)!=0){d=E3(c[e>>2]|0,A|0,y|0)|0;if(!d)bb(e|0,p|0);z=p}else d=-1;if((d|0)==1){t=h;s=j;r=k;e=z;j=14}else{t=h;s=j;r=k;e=0;j=14}}else{t=0;s=j;r=k;e=z;j=14}}else{t=0;s=j;r=k;e=z;j=14}}else{t=0;s=j;r=k;e=z;j=14}}else{t=0;s=0;r=k;e=z;j=14}}else{d=0;e=0}else{t=0;s=0;r=0;e=z;j=14}while(0);b:do if((j|0)==14){c:while(1){if(e|0){o=0;ia(105,w|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){d=E3(c[e>>2]|0,A|0,y|0)|0;if(!d)bb(e|0,p|0);z=p}else d=-1;if((d|0)==1){n=r;q=s;j=t;e=z;r=n;s=q;t=j;j=14;continue}o=0;ia(103,s|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){d=E3(c[e>>2]|0,A|0,y|0)|0;if(!d)bb(e|0,p|0);z=p}else d=-1;if((d|0)==1){n=r;q=s;j=t;e=z;r=n;s=q;t=j;j=14;continue}if((r|0)==(u|0)){d=0;e=0;break b}o=0;ia(103,r|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){d=E3(c[e>>2]|0,A|0,y|0)|0;if(!d)bb(e|0,p|0);z=p}else d=-1;if((d|0)==1){n=r;q=s;j=t;e=z;r=n;s=q;t=j;j=14;continue}else{j=19;break}}o=0;f=$(25,a|0)|0;e=o;o=0;if((e|0)!=0&(p|0)!=0){d=E3(c[e>>2]|0,A|0,y|0)|0;if(!d)bb(e|0,p|0);z=p}else d=-1;if((d|0)==1){n=r;q=s;j=t;e=z;r=n;s=q;t=j;j=14;continue}q=r+(c[v>>2]|0)|0;h=10;k=s;e=0;j=s;n=s;while(1){if(!f)break;o=0;d=aa(c[t>>2]|0,f|0,-1)|0;g=o;o=0;if((g|0)!=0&(p|0)!=0){i=E3(c[g>>2]|0,A|0,y|0)|0;if(!i)bb(g|0,p|0);z=p}else i=-1;if((i|0)==1){n=r;q=s;j=t;e=z;r=n;s=q;t=j;j=14;continue c}if(!d){o=0;c[x>>2]=e;ca(27,q|0,134313,x|0)|0;d=o;o=0;if((d|0)!=0&(p|0)!=0){g=E3(c[d>>2]|0,A|0,y|0)|0;if(!g)bb(d|0,p|0);z=p}else g=-1;if((g|0)==1){n=r;q=s;j=t;e=z;r=n;s=q;t=j;j=14;continue c}o=0;m=ca(28,a|0,r|0,1)|0;d=o;o=0;if((d|0)!=0&(p|0)!=0){g=E3(c[d>>2]|0,A|0,y|0)|0;if(!g)bb(d|0,p|0);z=p}else g=-1;if((g|0)==1){n=r;q=s;j=t;e=z;r=n;s=q;t=j;j=14;continue c}o=0;da(53,m|0,134401,280,1)|0;d=o;o=0;if((d|0)!=0&(p|0)!=0){g=E3(c[d>>2]|0,A|0,y|0)|0;if(!g)bb(d|0,p|0);z=p}else g=-1;if((g|0)==1){n=r;q=s;j=t;e=z;r=n;s=q;t=j;j=14;continue c}o=0;da(54,a|0,f|0,m|0,w|0)|0;d=o;o=0;if((d|0)!=0&(p|0)!=0){g=E3(c[d>>2]|0,A|0,y|0)|0;if(!g)bb(d|0,p|0);z=p}else g=-1;if((g|0)==1){n=r;q=s;j=t;e=z;r=n;s=q;t=j;j=14;continue c}if((e|0)==(h|0)){h=e<<1;o=0;i=aa(85,j|0,e<<3|0)|0;d=o;o=0;if((d|0)!=0&(p|0)!=0){g=E3(c[d>>2]|0,A|0,y|0)|0;if(!g)bb(d|0,p|0);z=p}else g=-1;if((g|0)==1){n=r;q=s;j=t;e=z;r=n;s=q;t=j;j=14;continue c}g=i;j=i;d=i}else{g=k;d=n}c[g+(e<<2)>>2]=m;e=e+1|0;k=g;i=d}else i=n;o=0;f=aa(84,a|0,f|0)|0;d=o;o=0;if((d|0)!=0&(p|0)!=0){g=E3(c[d>>2]|0,A|0,y|0)|0;if(!g)bb(d|0,p|0);z=p}else g=-1;if((g|0)==1){n=r;q=s;j=t;e=z;r=n;s=q;t=j;j=14;continue c}n=i}o=0;ia(105,w|0);d=o;o=0;if((d|0)!=0&(p|0)!=0){f=E3(c[d>>2]|0,A|0,y|0)|0;if(!f)bb(d|0,p|0);z=p}else f=-1;if((f|0)==1){n=r;q=s;j=t;e=z;r=n;s=q;t=j;j=14;continue}o=0;d=aa(85,n|0,e<<2|0)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){g=E3(c[f>>2]|0,A|0,y|0)|0;if(!g)bb(f|0,p|0);z=p}else g=-1;if((g|0)==1){n=r;q=s;j=t;e=z;r=n;s=q;t=j;j=14;continue}if((r|0)==(u|0))break b;o=0;ia(103,r|0);f=o;o=0;if((f|0)!=0&(p|0)!=0){g=E3(c[f>>2]|0,A|0,y|0)|0;if(!g)bb(f|0,p|0);z=p}else g=-1;if((g|0)==1){n=r;q=s;j=t;e=z;r=n;s=q;t=j;j=14}else{j=39;break}}if((j|0)==19){d=0;e=0;break}else if((j|0)==39)break}while(0);c[b>>2]=e;D_(A|0);l=B;return d|0}function pD(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=0;f=Sy(a)|0;while(1){if(!f)break;e=Ex(b,f)|0;while(1){if(!e)break;if(Xy(a,c[((c[e>>2]&3|0)==2?e:e+-48|0)+40>>2]|0,0)|0){Vx(a,e,1)|0;d=d+1|0}e=Gx(b,e)|0}f=Ty(a,f)|0}return d|0}function qD(a){a=a|0;a=yz(a,95967,0)|0;if(!a)qa(95972,95975,529,95984);else return c[a+8>>2]|0;return 0}function rD(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;u=l;l=l+4320|0;s=u+24|0;r=u+8|0;q=u;t=u+4184|0;p=u+4160|0;f=u+40|0;if(ay(b)|0){Fz(b,0,95993,-12,0);Fz(b,1,96005,16,0);o=eD(e,f,t)|0;k=sD(b)|0;m=vH((ay(k)|0)<<2)|0;hD(p,u+4144|0,u+48|0,24,86);h=Sy(k)|0;n=p+16|0;i=o+(c[f>>2]|0)|0;j=c[15686]|0;e=0;while(1){if(!h)break;if(!(lb[c[n>>2]&127](h,-1)|0)){c[q>>2]=e;Y0(i,96907,q)|0;v=vA(k,o,1)|0;w=vA(b,o,1)|0;Az(w,95993,12,0)|0;a[(yz(w,95993,0)|0)+8>>0]=1;f=iD(k,h,v,p)|0;uD(v,w);g=vD(w)|0;wD(b,w);c[m+(e<<2)>>2]=w;dz(k,v)|0;if(0){c[r>>2]=e;c[r+4>>2]=f;c[r+8>>2]=g;g1(j,96017,r)|0}e=e+1|0}h=Ty(k,h)|0}if(0){r=ay(b)|0;v=by(b)|0;w=ry(b)|0;c[s>>2]=r;c[s+4>>2]=v;c[s+8>>2]=e;c[s+12>>2]=w;g1(j,96047,s)|0}$x(k)|0;Gz(b,0,95993);Gz(b,1,96005);jD(p);f=xH(m,e<<2)|0;if((o|0)!=(t|0))D_(o)}else{f=0;e=0}c[d>>2]=e;l=u;return f|0}function sD(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=l;l=l+16|0;h=i;a[h>>0]=a[18492]|0;a[h+1>>0]=a[18493]|0;a[h+2>>0]=a[18494]|0;a[h+3>>0]=a[18495]|0;h=Xx(96094,h,0)|0;zD(h,b);d=Sy(b)|0;while(1){if(!d)break;if(!(c[(yz(d,96005,0)|0)+12>>2]|0)){g=az(h,ry(d)|0,1)|0;Az(g,96005,16,1)|0;c[(c[g+16>>2]|0)+12>>2]=d;c[(yz(d,96005,0)|0)+12>>2]=g}d=Ty(b,d)|0}e=Sy(b)|0;while(1){if(!e)break;f=c[(yz(e,96005,0)|0)+12>>2]|0;d=Ex(b,e)|0;while(1){if(!d)break;g=c[(yz(c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0,96005,0)|0)+12>>2]|0;do if((g|0)!=(f|0))if(g>>>0>f>>>0){Rx(h,f,g,0,1)|0;break}else{Rx(h,g,f,0,1)|0;break}while(0);d=Gx(b,d)|0}e=Ty(b,e)|0}l=i;return h|0}function tD(b,d){b=b|0;d=d|0;var e=0;b=(c[b+16>>2]|0)+8|0;e=a[b>>0]|0;if((d|0)>=0)a[b>>0]=d;return e|0}function uD(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;e=Sy(a)|0;while(1){if(!e)break;f=c[(c[e+16>>2]|0)+12>>2]|0;a:do if((c[f>>2]&3|0)==1)Xy(b,f,1)|0;else{d=Sy(f)|0;while(1){if(!d)break a;Xy(b,d,1)|0;d=Ty(f,d)|0}}while(0);e=Ty(a,e)|0}return}function vD(a){a=a|0;return pD(a,c[a+60>>2]|0)|0}function wD(a,b){a=a|0;b=b|0;xD(a,b,0);return}function xD(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;g=(d|0)==0;b=wA(b)|0;while(1){if(!b)break;if((a[(yz(b,95993,0)|0)+8>>0]|0)==0?(f=yD(b,c,d)|0,f|0):0){if(g)e=(z$(ry(b)|0,104980,7)|0)==0;else e=1;xD(b,f,e&1)}b=xA(b)|0}return}function yD(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=0;g=Sy(a)|0;while(1){if(!g)break;f=az(b,ry(g)|0,0)|0;if(f){if(!e)e=vA(b,ry(a)|0,1)|0;Xy(e,f,1)|0}g=Ty(a,g)|0}if((d|0)!=0&(e|0)==0)e=vA(b,ry(a)|0,1)|0;if(e|0?(pD(e,a)|0,Bx(a,e)|0,(z$(ry(e)|0,104980,7)|0)==0):0)c[(Az(e,95967,12,0)|0)+8>>2]=a;return e|0}function zD(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;h=l;l=l+16|0;g=h;d=wA(b)|0;e=c[15686]|0;while(1){if(!d)break;a:do if(!(z$(ry(d)|0,104980,7)|0)){f=az(a,ry(d)|0,1)|0;Az(f,96005,16,1)|0;c[(c[f+16>>2]|0)+12>>2]=d;b=Sy(d)|0;while(1){if(!b)break a;if(c[(yz(b,96005,0)|0)+12>>2]|0){k=ry(b)|0;j=ry(d)|0;i=ry(c[(yz(b,96005,0)|0)+12>>2]|0)|0;c[g>>2]=k;c[g+4>>2]=j;c[g+8>>2]=i;g1(e,96097,g)|0}c[(yz(b,96005,0)|0)+12>>2]=f;b=Ty(d,b)|0}}else zD(a,d);while(0);d=xA(d)|0}l=h;return}function AD(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0.0;n=+h[a>>3];j=~~(n+(n>=0.0?.5:-.5));n=+h[a+8>>3];a=~~(n+(n>=0.0?.5:-.5));n=+h[b>>3];g=~~(n+(n>=0.0?.5:-.5));n=+h[b+8>>3];f=~~(n+(n>=0.0?.5:-.5));l=g-j|0;i=((l|0)>-1?l:0-l|0)<<1;l=l>>31|1;m=f-a|0;k=((m|0)>-1?m:0-m|0)<<1;m=m>>31|1;a:do if((i|0)>(k|0)){e=0-i|0;d=k-(i>>1)|0;b=j;while(1){BI(c,b,a);if((b|0)==(g|0))break a;j=(d|0)>-1;d=d+k+(j?e:0)|0;b=b+l|0;a=(j?m:0)+a|0}}else{e=0-k|0;d=j;b=i-(k>>1)|0;while(1){BI(c,d,a);if((a|0)==(f|0))break a;k=(b|0)>-1;d=(k?l:0)+d|0;b=b+i+(k?e:0)|0;a=a+m|0}}while(0);return}function BD(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+16|0;k=n;j=n+4|0;do if((a|0)<1)d=0;else{f=e+16|0;if((c[f>>2]|0)>>>0<4){d=CD(a,b,d,e)|0;break}m=vH(a<<5)|0;d=0;while(1){if((d|0)==(a|0))break;g=c[b+(d<<2)>>2]|0;mM(g);h=m+(d<<5)|0;g=(c[g+16>>2]|0)+16|0;c[h>>2]=c[g>>2];c[h+4>>2]=c[g+4>>2];c[h+8>>2]=c[g+8>>2];c[h+12>>2]=c[g+12>>2];c[h+16>>2]=c[g+16>>2];c[h+20>>2]=c[g+20>>2];c[h+24>>2]=c[g+24>>2];c[h+28>>2]=c[g+28>>2];d=d+1|0}if((c[f>>2]|0)==4){h=e+28|0;a:do if(c[h>>2]&2|0){f=e+24|0;c[f>>2]=uH(a<<2)|0;d=0;while(1){if((d|0)==(a|0))break a;g=xx(c[b+(d<<2)>>2]|0,96164)|0;if(g|0?(c[k>>2]=j,g=(N1(g,134313,k)|0)>0,i=c[j>>2]|0,g&(i|0)>-1):0)c[(c[f>>2]|0)+(d<<2)>>2]=i;d=d+1|0}}while(0);d=DD(a,m,e)|0;if(c[h>>2]&2)D_(c[e+24>>2]|0)}else d=0;D_(m)}while(0);l=n;return d|0}function CD(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0.0,I=0.0,J=0.0,K=0.0;G=l;l=l+144|0;B=G+136|0;A=G+64|0;F=G+48|0;v=G+40|0;u=G;t=G+120|0;x=G+104|0;C=G+96|0;D=c[f+20>>2]|0;c[x>>2]=0;c[x+4>>2]=0;c[x+8>>2]=0;c[x+12>>2]=0;a:do if((b|0)>=1){o=(D|0)==0;E=c[15686]|0;p=t+4|0;q=t+8|0;r=t+12|0;y=x+4|0;w=x+8|0;z=x+12|0;n=0;g=0;while(1){if((n|0)==(b|0))break;s=c[d+(n<<2)>>2]|0;mM(s);if(!o?(a[D+n>>0]|0)!=0:0){m=c[s+16>>2]|0;H=+h[m+16>>3];i=~~(H+(H>=0.0?.5:-.5));c[t>>2]=i;H=+h[m+24>>3];j=~~(H+(H>=0.0?.5:-.5));c[p>>2]=j;H=+h[m+32>>3];k=~~(H+(H>=0.0?.5:-.5));c[q>>2]=k;H=+h[m+40>>3];m=~~(H+(H>=0.0?.5:-.5));c[r>>2]=m;if(!g){c[x>>2]=c[t>>2];c[x+4>>2]=c[t+4>>2];c[x+8>>2]=c[t+8>>2];c[x+12>>2]=c[t+12>>2]}else{c[x>>2]=c[((c[x>>2]|0)>(i|0)?t:x)>>2];c[y>>2]=c[((c[y>>2]|0)>(j|0)?t:x)+4>>2];c[w>>2]=c[((c[w>>2]|0)<(k|0)?t:x)+8>>2];c[z>>2]=c[((c[z>>2]|0)<(m|0)?t:x)+12>>2]}g=g+1|0}if(0>2){m=ry(s)|0;s=c[s+16>>2]|0;K=+h[s+16>>3];J=+h[s+24>>3];I=+h[s+32>>3];H=+h[s+40>>3];c[u>>2]=m;h[u+8>>3]=K;h[u+16>>3]=J;h[u+24>>3]=I;h[u+32>>3]=H;g1(E,96231,u)|0}n=n+1|0}q=vH(b<<5)|0;g=0;while(1){if((g|0)==(b|0))break;u=q+(g<<5)|0;t=(c[(c[d+(g<<2)>>2]|0)+16>>2]|0)+16|0;c[u>>2]=c[t>>2];c[u+4>>2]=c[t+4>>2];c[u+8>>2]=c[t+8>>2];c[u+12>>2]=c[t+12>>2];c[u+16>>2]=c[t+16>>2];c[u+20>>2]=c[t+20>>2];c[u+24>>2]=c[t+24>>2];c[u+28>>2]=c[t+28>>2];g=g+1|0}o=f+8|0;p=GD(b,q,c[o>>2]|0)|0;if(0){c[v>>2]=p;g1(E,96259,v)|0}if((p|0)>=1){n=(D|0)!=0;if(n){i=((c[w>>2]|0)+(c[x>>2]|0)|0)/2|0;g=((c[z>>2]|0)+(c[y>>2]|0)|0)/2|0}else{i=0;g=0}c[C+4>>2]=g;c[C>>2]=i;m=uH(b<<4)|0;k=f+16|0;g=0;while(1){if((g|0)>=(b|0))break;i=c[d+(g<<2)>>2]|0;j=m+(g<<4)|0;c[m+(g<<4)+12>>2]=g;if((c[k>>2]|0)==3){x=(c[i+16>>2]|0)+16|0;y=c[o>>2]|0;z=ry(i)|0;c[A>>2]=c[x>>2];c[A+4>>2]=c[x+4>>2];c[A+8>>2]=c[x+8>>2];c[A+12>>2]=c[x+12>>2];c[A+16>>2]=c[x+16>>2];c[A+20>>2]=c[x+20>>2];c[A+24>>2]=c[x+24>>2];c[A+28>>2]=c[x+28>>2];c[B>>2]=c[C>>2];c[B+4>>2]=c[C+4>>2];HD(A,j,p,y,B,z)}else{c[B>>2]=c[C>>2];c[B+4>>2]=c[C+4>>2];ID(e,i,j,p,f,B)}g=g+1|0}j=uH(b<<2)|0;g=0;while(1){if((g|0)>=(b|0))break;c[j+(g<<2)>>2]=m+(g<<4);g=g+1|0}_0(j,b,4,87);k=vI()|0;g=uH(b<<3)|0;b:do if(n){i=0;while(1){if((i|0)>=(b|0)){i=0;break}if(a[D+i>>0]|0){e=c[j+(i<<2)>>2]|0;f=g+(c[e+12>>2]<<3)|0;c[B>>2]=c[C>>2];c[B+4>>2]=c[C+4>>2];KD(e,k,f,B)}i=i+1|0}while(1){if((i|0)>=(b|0))break b;if(!(a[D+i>>0]|0)){C=c[j+(i<<2)>>2]|0;LD(i,C,k,g+(c[C+12>>2]<<3)|0,p,c[o>>2]|0,q)}i=i+1|0}}else{i=0;while(1){if((i|0)>=(b|0))break b;D=c[j+(i<<2)>>2]|0;LD(i,D,k,g+(c[D+12>>2]<<3)|0,p,c[o>>2]|0,q);i=i+1|0}}while(0);D_(j);i=0;while(1){if((i|0)>=(b|0))break;D_(c[m+(i<<4)+4>>2]|0);i=i+1|0}D_(m);yI(k);D_(q);if(0>1){i=0;while(1){if((i|0)>=(b|0))break a;C=c[g+(i<<3)>>2]|0;D=c[g+(i<<3)+4>>2]|0;c[F>>2]=i;c[F+4>>2]=C;c[F+8>>2]=D;g1(E,96275,F)|0;i=i+1|0}}}else g=0}else g=0;while(0);l=G;return g|0}function DD(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,i=0.0,j=0,k=0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;z=l;l=l+16|0;g=z;x=uH(a<<3)|0;f=c[d+4>>2]|0;y=d+28|0;e=(f|0)>0;do if(!(c[y>>2]&1))if(e){k=1;w=(a+-1+f|0)/(f|0)|0;break}else{f=~~+N(+(+C(+(+(a|0)))));k=1;w=(a+-1+f|0)/(f|0)|0;break}else if(e){k=0;w=f;f=(a+-1+f|0)/(f|0)|0;break}else{f=~~+N(+(+C(+(+(a|0)))));k=0;w=f;f=(a+-1+f|0)/(f|0)|0;break}while(0);if(0){v=c[15686]|0;c[g>>2]=k|0?96170:96180;c[g+4>>2]=w;c[g+8>>2]=f;g1(v,96193,g)|0}t=uH((f<<3)+8|0)|0;u=uH((w<<3)+8|0)|0;v=uH(a*24|0)|0;j=d+8|0;e=0;g=v;while(1){if((e|0)>=(a|0))break;p=+h[b+(e<<5)+8>>3];o=+h[b+(e<<5)+24>>3];q=+((c[j>>2]|0)>>>0);h[g>>3]=+h[b+(e<<5)+16>>3]-+h[b+(e<<5)>>3]+q;h[g+8>>3]=o-p+q;c[g+16>>2]=e;e=e+1|0;g=g+24|0}s=uH(a<<2)|0;e=0;while(1){if((e|0)>=(a|0))break;c[s+(e<<2)>>2]=v+(e*24|0);e=e+1|0}e=c[d+24>>2]|0;if(!e){if(!(c[y>>2]&64))_0(s,a,4,89)}else{c[46285]=e;_0(s,a,4,88)}r=(k|0)==0;e=0;g=0;j=0;while(1){if((j|0)>=(a|0)){i=0.0;e=0;break}k=c[s+(j<<2)>>2]|0;d=t+(g<<3)|0;q=+h[d>>3];p=+h[k>>3];h[d>>3]=q>p?q:p;d=u+(e<<3)|0;p=+h[d>>3];q=+h[k+8>>3];h[d>>3]=p>q?p:q;if(r){e=e+1|0;d=(e|0)==(w|0);e=d?0:e;g=g+(d&1)|0}else{g=g+1|0;d=(g|0)==(f|0);e=e+(d&1)|0;g=d?0:g}j=j+1|0}while(1){if((e|0)>(f|0)){i=0.0;e=w;break}d=t+(e<<3)|0;q=+h[d>>3];h[d>>3]=i;i=q+i;e=e+1|0}while(1){if((e|0)<=0)break;d=e+-1|0;q=+h[u+(d<<3)>>3];h[u+(e<<3)>>3]=i;i=q+i;e=d}h[u>>3]=i;e=0;g=0;d=0;while(1){if((d|0)>=(a|0))break;k=c[(c[s+(d<<2)>>2]|0)+16>>2]|0;i=+h[b+(k<<5)>>3];m=-i;p=+h[b+(k<<5)+8>>3];q=-p;n=+h[b+(k<<5)+16>>3];o=+h[b+(k<<5)+24>>3];j=c[y>>2]|0;do if(!(j&4))if(!(j&8)){i=(m-n+ +h[t+(g<<3)>>3]+ +h[t+(g+1<<3)>>3])*.5;break}else{i=i-n+ +h[t+(g+1<<3)>>3];break}else i=+h[t+(g<<3)>>3];while(0);c[x+(k<<3)>>2]=~~i;do if(!(j&16))if(!(j&32)){i=(q-o+ +h[u+(e<<3)>>3]+ +h[u+(e+1<<3)>>3])*.5;break}else{i=+h[u+(e+1<<3)>>3];break}else i=p-o+ +h[u+(e<<3)>>3];while(0);c[x+(k<<3)+4>>2]=~~i;if(r){e=e+1|0;k=(e|0)==(w|0);e=k?0:e;g=g+(k&1)|0}else{g=g+1|0;k=(g|0)==(f|0);e=e+(k&1)|0;g=k?0:g}d=d+1|0}D_(v);D_(s);D_(t);D_(u);l=z;return x|0}function ED(a,b){a=a|0;b=b|0;var d=0;d=c[46285]|0;a=c[d+(c[(c[a>>2]|0)+16>>2]<<2)>>2]|0;b=c[d+(c[(c[b>>2]|0)+16>>2]<<2)>>2]|0;return ((a|0)>(b|0)?1:((a|0)<(b|0))<<31>>31)|0}function FD(a,b){a=a|0;b=b|0;var d=0.0,e=0.0;a=c[a>>2]|0;b=c[b>>2]|0;e=+h[a>>3]+ +h[a+8>>3];d=+h[b>>3]+ +h[b+8>>3];return (ed)<<31>>31)|0}function GD(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0.0,g=0.0,i=0.0,j=0.0,k=0,m=0,n=0.0,o=0.0,p=0,q=0,r=0,s=0;s=l;l=l+96|0;q=s+80|0;r=s+48|0;p=s+8|0;m=s;k=(a*100|0)+-1|0;e=+(d<<1|0);n=0.0;o=0.0;d=0;while(1){if((d|0)>=(a|0))break;j=+h[b+(d<<5)+16>>3]-+h[b+(d<<5)>>3]+e;i=+h[b+(d<<5)+24>>3]-+h[b+(d<<5)+8>>3]+e;n=n-j-i;o=o-i*j;d=d+1|0}i=+(k|0);j=n*n-i*4.0*o;if(!(j<0.0)){e=+C(+j);g=i*2.0;f=(e-n)/g;g=(-n-e)/g;d=~~f;d=(d|0)==0?1:d;if(0>2){m=c[15686]|0;E1(96418,27,1,m)|0;h[p>>3]=i;h[p+8>>3]=n;h[p+16>>3]=o;h[p+24>>3]=j;h[p+32>>3]=e;g1(m,96446,p)|0;c[r>>2]=d;h[r+8>>3]=f;c[r+16>>2]=~~g;h[r+24>>3]=g;g1(m,96472,r)|0;h[q>>3]=(f*i+n)*f+o;h[q+8>>3]=(g*i+n)*g+o;g1(m,96494,q)|0}}else{h[m>>3]=j;Pw(1,96391,m)|0;d=-1}l=s;return d|0}function HD(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0,j=0,k=0,m=0,n=0.0,o=0.0,p=0.0,q=0.0,r=0,s=0,t=0,u=0,v=0.0,w=0.0;u=l;l=l+32|0;t=u+16|0;s=u;p=+h[a>>3];q=+h[a+8>>3];n=+h[a+16>>3];o=+h[a+24>>3];r=vI()|0;j=c[f>>2]|0;a=j-e|0;k=c[f+4>>2]|0;i=k-e|0;j=e-~~(p+(p>=0.0?.5:-.5))+j+~~(n+(n>=0.0?.5:-.5))|0;k=e-~~(q+(q>=0.0?.5:-.5))+k+~~(o+(o>=0.0?.5:-.5))|0;if((a|0)>-1)f=(a|0)/(d|0)|0;else f=((a+1|0)/(d|0)|0)+-1|0;if((i|0)>-1)m=(i|0)/(d|0)|0;else m=((i+1|0)/(d|0)|0)+-1|0;if((j|0)>-1)j=(j|0)/(d|0)|0;else j=((j+1|0)/(d|0)|0)+-1|0;if((k|0)>-1)i=(k|0)/(d|0)|0;else i=((k+1|0)/(d|0)|0)+-1|0;while(1){if((f|0)>(j|0))break;else a=m;while(1){if((a|0)>(i|0))break;BI(r,f,a);a=a+1|0}f=f+1|0}k=b+4|0;c[k>>2]=FI(r)|0;j=EI(r)|0;m=b+8|0;c[m>>2]=j;w=+(e<<1|0);v=+(d|0);i=~~+N(+((n+w-p)/v));a=~~+N(+((o+w-q)/v));c[b>>2]=a+i;a:do if(0>2){f=c[15686]|0;c[s>>2]=g;c[s+4>>2]=j;c[s+8>>2]=i;c[s+12>>2]=a;g1(f,96350,s)|0;a=0;while(1){if((a|0)>=(c[m>>2]|0))break a;g=c[k>>2]|0;s=c[g+(a<<3)+4>>2]|0;c[t>>2]=c[g+(a<<3)>>2];c[t+4>>2]=s;g1(f,96377,t)|0;a=a+1|0}}while(0);yI(r);l=u;return}function ID(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0.0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,O=0,P=0,Q=0.0,R=0.0;P=l;l=l+128|0;F=P+112|0;E=P+104|0;O=P+16|0;M=P;H=P+64|0;I=P+56|0;z=P+40|0;A=P+96|0;y=P+88|0;v=P+24|0;w=P+80|0;x=P+72|0;K=c[f+8>>2]|0;G=c[f+12>>2]|0;C=(a|0)==0?b:a;L=vI()|0;J=b+16|0;B=c[J>>2]|0;t=+h[B+16>>3];D=(c[g>>2]|0)-~~(t+(t>=0.0?.5:-.5))|0;t=+h[B+24>>3];B=(c[g+4>>2]|0)-~~(t+(t>=0.0?.5:-.5))|0;a:do if((c[f+16>>2]|0)==1){v=vH((ay(b)|0)<<2)|0;a=0;g=Sy(b)|0;while(1){if(!g)break;x=g+16|0;c[v+(a<<2)>>2]=c[(c[x>>2]|0)+112>>2];c[(c[x>>2]|0)+112>>2]=0;a=a+1|0;g=Ty(b,g)|0}o=D-K|0;p=B-K|0;q=D+K|0;r=B+K|0;n=1;while(1){a=c[J>>2]|0;if((n|0)>(c[a+180>>2]|0))break;m=c[(c[a+184>>2]|0)+(n<<2)>>2]|0;i=c[m+16>>2]|0;t=+h[i+16>>3];a=~~(t+(t>=0.0?.5:-.5));t=+h[i+24>>3];g=~~(t+(t>=0.0?.5:-.5));t=+h[i+32>>3];f=~~(t+(t>=0.0?.5:-.5));t=+h[i+40>>3];i=~~(t+(t>=0.0?.5:-.5));b:do if((f|0)>(a|0)&(i|0)>(g|0)){a=o+a|0;j=p+g|0;f=q+f|0;k=r+i|0;if((a|0)>-1)g=(a|0)/(e|0)|0;else g=((a+1|0)/(e|0)|0)+-1|0;if((j|0)>-1)j=(j|0)/(e|0)|0;else j=((j+1|0)/(e|0)|0)+-1|0;if((f|0)>-1)i=(f|0)/(e|0)|0;else i=((f+1|0)/(e|0)|0)+-1|0;if((k|0)>-1)f=(k|0)/(e|0)|0;else f=((k+1|0)/(e|0)|0)+-1|0;while(1){if((g|0)>(i|0))break;else a=j;while(1){if((a|0)>(f|0))break;BI(L,g,a);a=a+1|0}g=g+1|0}a=Sy(m)|0;while(1){if(!a)break b;c[(c[a+16>>2]|0)+212>>2]=m;a=Ty(m,a)|0}}while(0);n=n+1|0}r=z+8|0;s=H+4|0;t=+(K|0);u=I+4|0;q=A+4|0;p=y+4|0;o=Sy(b)|0;while(1){if(!o)break;WL(z,o);R=+h[z>>3];Q=+h[r>>3];m=D+~~(R+(R>=0.0?.5:-.5))|0;c[H>>2]=m;n=B+~~(Q+(Q>=0.0?.5:-.5))|0;c[s>>2]=n;g=o+16|0;a=c[g>>2]|0;c:do if(!(c[a+212>>2]|0)){c[I>>2]=~~((+h[a+96>>3]+ +h[a+88>>3])*.5+t);c[u>>2]=~~(+h[a+80>>3]*.5+t);c[E>>2]=c[H>>2];c[E+4>>2]=c[H+4>>2];c[F>>2]=c[I>>2];c[F+4>>2]=c[I+4>>2];ND(A,E,F);a=c[A>>2]|0;f=c[q>>2]|0;c[E>>2]=c[H>>2];c[E+4>>2]=c[H+4>>2];c[F>>2]=c[I>>2];c[F+4>>2]=c[I+4>>2];OD(y,E,F);i=c[y>>2]|0;j=c[p>>2]|0;if((a|0)>-1)g=(a|0)/(e|0)|0;else g=((a+1|0)/(e|0)|0)+-1|0;if((f|0)>-1)k=(f|0)/(e|0)|0;else k=((f+1|0)/(e|0)|0)+-1|0;if((i|0)>-1)i=(i|0)/(e|0)|0;else i=((i+1|0)/(e|0)|0)+-1|0;if((j|0)>-1)f=(j|0)/(e|0)|0;else f=((j+1|0)/(e|0)|0)+-1|0;while(1){if((g|0)>(i|0))break;else a=k;while(1){if((a|0)>(f|0))break;BI(L,g,a);a=a+1|0}g=g+1|0}if((m|0)>-1)a=(m|0)/(e|0)|0;else a=((m+1|0)/(e|0)|0)+-1|0;c[H>>2]=a;if((n|0)>-1)a=(n|0)/(e|0)|0;else a=((n+1|0)/(e|0)|0)+-1|0;c[s>>2]=a;a=Ex(C,o)|0;while(1){if(!a)break c;c[F>>2]=c[H>>2];c[F+4>>2]=c[H+4>>2];PD(a,F,L,D,B,e,G);a=Gx(C,a)|0}}else{if((m|0)>-1)a=(m|0)/(e|0)|0;else a=((m+1|0)/(e|0)|0)+-1|0;c[H>>2]=a;if((n|0)>-1)a=(n|0)/(e|0)|0;else a=((n+1|0)/(e|0)|0)+-1|0;c[s>>2]=a;a=Ex(C,o)|0;while(1){if(!a)break c;if((c[(c[g>>2]|0)+212>>2]|0)!=(c[(c[(c[((c[a>>2]&3|0)==2?a:a+-48|0)+40>>2]|0)+16>>2]|0)+212>>2]|0)){c[F>>2]=c[H>>2];c[F+4>>2]=c[H+4>>2];PD(a,F,L,D,B,e,G)}a=Gx(C,a)|0}}while(0);o=Ty(b,o)|0}a=0;g=Sy(b)|0;while(1){if(!g)break;c[(c[g+16>>2]|0)+112>>2]=c[v+(a<<2)>>2];a=a+1|0;g=Ty(b,g)|0}D_(v)}else{r=v+8|0;s=H+4|0;t=+(K|0);u=I+4|0;q=w+4|0;p=x+4|0;o=Sy(b)|0;while(1){if(!o)break a;WL(v,o);Q=+h[v>>3];R=+h[r>>3];m=D+~~(Q+(Q>=0.0?.5:-.5))|0;c[H>>2]=m;n=B+~~(R+(R>=0.0?.5:-.5))|0;c[s>>2]=n;a=c[o+16>>2]|0;c[I>>2]=~~((+h[a+96>>3]+ +h[a+88>>3])*.5+t);c[u>>2]=~~(+h[a+80>>3]*.5+t);c[E>>2]=c[H>>2];c[E+4>>2]=c[H+4>>2];c[F>>2]=c[I>>2];c[F+4>>2]=c[I+4>>2];ND(w,E,F);a=c[w>>2]|0;f=c[q>>2]|0;c[E>>2]=c[H>>2];c[E+4>>2]=c[H+4>>2];c[F>>2]=c[I>>2];c[F+4>>2]=c[I+4>>2];OD(x,E,F);i=c[x>>2]|0;j=c[p>>2]|0;if((a|0)>-1)g=(a|0)/(e|0)|0;else g=((a+1|0)/(e|0)|0)+-1|0;if((f|0)>-1)k=(f|0)/(e|0)|0;else k=((f+1|0)/(e|0)|0)+-1|0;if((i|0)>-1)i=(i|0)/(e|0)|0;else i=((i+1|0)/(e|0)|0)+-1|0;if((j|0)>-1)f=(j|0)/(e|0)|0;else f=((j+1|0)/(e|0)|0)+-1|0;while(1){if((g|0)>(i|0))break;else a=k;while(1){if((a|0)>(f|0))break;BI(L,g,a);a=a+1|0}g=g+1|0}if((m|0)>-1)a=(m|0)/(e|0)|0;else a=((m+1|0)/(e|0)|0)+-1|0;c[H>>2]=a;if((n|0)>-1)a=(n|0)/(e|0)|0;else a=((n+1|0)/(e|0)|0)+-1|0;c[s>>2]=a;a=Ex(C,o)|0;while(1){if(!a)break;c[F>>2]=c[H>>2];c[F+4>>2]=c[H+4>>2];PD(a,F,L,D,B,e,G);a=Gx(C,a)|0}o=Ty(b,o)|0}}while(0);i=d+4|0;c[i>>2]=FI(L)|0;j=d+8|0;c[j>>2]=EI(L)|0;g=c[J>>2]|0;Q=+(K<<1|0);R=+(e|0);a=~~+N(+((+h[g+32>>3]+Q-+h[g+16>>3])/R));g=~~+N(+((+h[g+40>>3]+Q-+h[g+24>>3])/R));c[d>>2]=g+a;d:do if(0>2){f=c[15686]|0;d=ry(b)|0;b=c[j>>2]|0;c[M>>2]=d;c[M+4>>2]=b;c[M+8>>2]=a;c[M+12>>2]=g;g1(f,96350,M)|0;a=0;while(1){if((a|0)>=(c[j>>2]|0))break d;b=c[i>>2]|0;M=c[b+(a<<3)+4>>2]|0;c[O>>2]=c[b+(a<<3)>>2];c[O+4>>2]=M;g1(f,96377,O)|0;a=a+1|0}}while(0);yI(L);l=P;return}function JD(a,b){a=a|0;b=b|0;return (c[c[b>>2]>>2]|0)-(c[c[a>>2]>>2]|0)|0}function KD(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;j=l;l=l+32|0;h=j+16|0;i=j;k=c[a+4>>2]|0;g=c[a+8>>2]|0;c[d>>2]=0-(c[e>>2]|0);f=d+4|0;c[f>>2]=0-(c[e+4>>2]|0);a=0;e=k;while(1){if((a|0)>=(g|0))break;c[h>>2]=c[e>>2];c[h+4>>2]=c[e+4>>2];zI(b,h);a=a+1|0;e=e+8|0}if(0>1){k=c[15686]|0;b=c[d>>2]|0;d=c[f>>2]|0;c[i>>2]=g;c[i+4>>2]=b;c[i+8>>2]=d;g1(k,96324,i)|0}l=j;return}function LD(a,b,d,e,f,g,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;var j=0,k=0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0;k=c[b+12>>2]|0;l=+h[i+(k<<5)>>3];m=+h[i+(k<<5)+8>>3];n=+h[i+(k<<5)+16>>3];o=+h[i+(k<<5)+24>>3];if(!((a|0)==0?(q=+(g<<1|0),p=+(f|0),(MD((~~+N(+((q-l+n)/p))|0)/-2|0,(~~+N(+((q-m+o)/p))|0)/-2|0,b,d,e,f,i)|0)!=0):0))j=3;a:do if((j|0)==3?(MD(0,0,b,d,e,f,i)|0)==0:0)if((~~+N(+(n-l))|0)<(~~+N(+(o-m))|0)){k=1;while(1){j=0-k|0;a=0;while(1){if((a|0)<=(j|0)){g=j;break}if(MD(j,a,b,d,e,f,i)|0)break a;a=a+-1|0}while(1){if((g|0)>=(k|0))break;if(MD(g,a,b,d,e,f,i)|0)break a;g=g+1|0}while(1){if((a|0)>=(k|0))break;if(MD(g,a,b,d,e,f,i)|0)break a;a=a+1|0}while(1){if((g|0)<=(j|0))break;if(MD(g,a,b,d,e,f,i)|0)break a;g=g+-1|0}while(1){if((a|0)<=0)break;if(!(MD(g,a,b,d,e,f,i)|0))a=a+-1|0;else break a}k=k+1|0}}else{k=1;while(1){j=0-k|0;a=0;while(1){if((a|0)>=(k|0)){g=j;break}if(MD(a,j,b,d,e,f,i)|0)break a;a=a+1|0}while(1){if((g|0)>=(k|0))break;if(MD(a,g,b,d,e,f,i)|0)break a;g=g+1|0}while(1){if((a|0)<=(j|0))break;if(MD(a,g,b,d,e,f,i)|0)break a;a=a+-1|0}while(1){if((g|0)<=(j|0))break;if(MD(a,g,b,d,e,f,i)|0)break a;g=g+-1|0}while(1){if((a|0)>=0)break;if(!(MD(a,g,b,d,e,f,i)|0))a=a+1|0;else break a}k=k+1|0}}while(0);return}function MD(a,b,d,e,f,g,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;var j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0.0,x=0.0;t=l;l=l+48|0;r=t+32|0;s=t+8|0;q=t;m=d+4|0;o=c[d+8>>2]|0;p=q+4|0;j=c[m>>2]|0;k=0;while(1){if((k|0)>=(o|0)){n=5;break}v=j;u=c[v+4>>2]|0;c[q>>2]=(c[v>>2]|0)+a;c[p>>2]=u+b;c[r>>2]=c[q>>2];c[r+4>>2]=c[q+4>>2];if(CI(e,r)|0){j=0;break}j=j+8|0;k=k+1|0}if((n|0)==5){d=c[d+12>>2]|0;x=+h[i+(d<<5)>>3];w=+h[i+(d<<5)+8>>3];c[f>>2]=(O(g,a)|0)-~~(x+(x>=0.0?.5:-.5));d=f+4|0;c[d>>2]=(O(g,b)|0)-~~(w+(w>=0.0?.5:-.5));j=c[m>>2]|0;k=0;while(1){if((k|0)>=(o|0))break;u=j;v=c[u+4>>2]|0;c[q>>2]=(c[u>>2]|0)+a;c[p>>2]=v+b;c[r>>2]=c[q>>2];c[r+4>>2]=c[q+4>>2];zI(e,r);j=j+8|0;k=k+1|0}if(0>1){j=c[15686]|0;u=c[f>>2]|0;v=c[d>>2]|0;c[s>>2]=o;c[s+4>>2]=a;c[s+8>>2]=b;c[s+12>>2]=u;c[s+16>>2]=v;g1(j,96290,s)|0;j=1}else j=1}l=t;return j|0}function ND(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=(c[b+4>>2]|0)-(c[d+4>>2]|0)|0;c[a>>2]=(c[b>>2]|0)-(c[d>>2]|0);c[a+4>>2]=e;return}function OD(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=(c[d+4>>2]|0)+(c[b+4>>2]|0)|0;c[a>>2]=(c[d>>2]|0)+(c[b>>2]|0);c[a+4>>2]=e;return}function PD(a,b,d,e,f,g,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;var j=0.0,k=0.0,m=0,n=0,o=0.0,p=0.0,q=0.0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;A=l;l=l+112|0;x=A+96|0;w=A+80|0;r=A+48|0;s=A+32|0;y=A+16|0;z=A;n=A+64|0;h[y>>3]=+(c[b>>2]|0);t=y+8|0;h[t>>3]=+(c[b+4>>2]|0);a:do if((i|0)!=0?(u=a+16|0,m=c[(c[u>>2]|0)+8>>2]|0,(m|0)!=0):0){q=+(e|0);p=+(f|0);o=1.0/+(g|0);n=z+8|0;i=0;while(1){if((i|0)>=(c[m+4>>2]|0))break a;f=c[m>>2]|0;a=c[f+(i*48|0)>>2]|0;b=c[f+(i*48|0)+4>>2]|0;g=c[f+(i*48|0)+8>>2]|0;e=c[f+(i*48|0)+12>>2]|0;m=f+(i*48|0)+16|0;c[r>>2]=c[m>>2];c[r+4>>2]=c[m+4>>2];c[r+8>>2]=c[m+8>>2];c[r+12>>2]=c[m+12>>2];f=f+(i*48|0)+32|0;c[s>>2]=c[f>>2];c[s+4>>2]=c[f+4>>2];c[s+8>>2]=c[f+8>>2];c[s+12>>2]=c[f+12>>2];if(!g){c[y>>2]=c[a>>2];c[y+4>>2]=c[a+4>>2];c[y+8>>2]=c[a+8>>2];c[y+12>>2]=c[a+12>>2];m=a+16|0;c[z>>2]=c[m>>2];c[z+4>>2]=c[m+4>>2];c[z+8>>2]=c[m+8>>2];c[z+12>>2]=c[m+12>>2];m=2}else{c[y>>2]=c[r>>2];c[y+4>>2]=c[r+4>>2];c[y+8>>2]=c[r+8>>2];c[y+12>>2]=c[r+12>>2];c[z>>2]=c[a>>2];c[z+4>>2]=c[a+4>>2];c[z+8>>2]=c[a+8>>2];c[z+12>>2]=c[a+12>>2];m=1}j=+h[y>>3]+q;h[y>>3]=j;k=+h[t>>3]+p;h[t>>3]=k;if(!(j>=0.0))j=(j+1.0)*o+-1.0;else j=j*o;h[y>>3]=j;if(!(k>=0.0))j=(k+1.0)*o+-1.0;else j=k*o;h[t>>3]=j;j=+h[z>>3]+q;h[z>>3]=j;k=+h[n>>3]+p;h[n>>3]=k;if(!(j>=0.0))j=(j+1.0)*o+-1.0;else j=j*o;h[z>>3]=j;if(!(k>=0.0))j=(k+1.0)*o+-1.0;else j=k*o;h[n>>3]=j;c[w>>2]=c[y>>2];c[w+4>>2]=c[y+4>>2];c[w+8>>2]=c[y+8>>2];c[w+12>>2]=c[y+12>>2];c[x>>2]=c[z>>2];c[x+4>>2]=c[z+4>>2];c[x+8>>2]=c[z+8>>2];c[x+12>>2]=c[z+12>>2];AD(w,x,d);while(1){if((m|0)>=(b|0))break;c[y>>2]=c[z>>2];c[y+4>>2]=c[z+4>>2];c[y+8>>2]=c[z+8>>2];c[y+12>>2]=c[z+12>>2];g=a+(m<<4)|0;c[z>>2]=c[g>>2];c[z+4>>2]=c[g+4>>2];c[z+8>>2]=c[g+8>>2];c[z+12>>2]=c[g+12>>2];j=+h[z>>3]+q;h[z>>3]=j;k=+h[n>>3]+p;h[n>>3]=k;if(!(j>=0.0))j=(j+1.0)*o+-1.0;else j=j*o;h[z>>3]=j;if(!(k>=0.0))j=(k+1.0)*o+-1.0;else j=k*o;h[n>>3]=j;c[w>>2]=c[y>>2];c[w+4>>2]=c[y+4>>2];c[w+8>>2]=c[y+8>>2];c[w+12>>2]=c[y+12>>2];c[x>>2]=c[z>>2];c[x+4>>2]=c[z+4>>2];c[x+8>>2]=c[z+8>>2];c[x+12>>2]=c[z+12>>2];AD(w,x,d);m=m+1|0}if(e|0){c[y>>2]=c[z>>2];c[y+4>>2]=c[z+4>>2];c[y+8>>2]=c[z+8>>2];c[y+12>>2]=c[z+12>>2];c[z>>2]=c[s>>2];c[z+4>>2]=c[s+4>>2];c[z+8>>2]=c[s+8>>2];c[z+12>>2]=c[s+12>>2];j=+h[z>>3]+q;h[z>>3]=j;k=+h[n>>3]+p;h[n>>3]=k;if(!(j>=0.0))j=(j+1.0)*o+-1.0;else j=j*o;h[z>>3]=j;if(!(k>=0.0))j=(k+1.0)*o+-1.0;else j=k*o;h[n>>3]=j;c[w>>2]=c[y>>2];c[w+4>>2]=c[y+4>>2];c[w+8>>2]=c[y+8>>2];c[w+12>>2]=c[y+12>>2];c[x>>2]=c[z>>2];c[x+4>>2]=c[z+4>>2];c[x+8>>2]=c[z+8>>2];c[x+12>>2]=c[z+12>>2];AD(w,x,d)}i=i+1|0;m=c[(c[u>>2]|0)+8>>2]|0}}else v=4;while(0);if((v|0)==4){WL(n,c[((c[a>>2]&3|0)==2?a:a+-48|0)+40>>2]|0);c[z>>2]=c[n>>2];c[z+4>>2]=c[n+4>>2];c[z+8>>2]=c[n+8>>2];c[z+12>>2]=c[n+12>>2];j=+h[z>>3]+ +(e|0);h[z>>3]=j;m=z+8|0;k=+h[m>>3]+ +(f|0);h[m>>3]=k;if(!(j>=0.0))j=(j+1.0)/+(g|0)+-1.0;else j=j/+(g|0);h[z>>3]=j;if(!(k>=0.0))j=(k+1.0)/+(g|0)+-1.0;else j=k/+(g|0);h[m>>3]=j;c[w>>2]=c[y>>2];c[w+4>>2]=c[y+4>>2];c[w+8>>2]=c[y+8>>2];c[w+12>>2]=c[y+12>>2];c[x>>2]=c[z>>2];c[x+4>>2]=c[z+4>>2];c[x+8>>2]=c[z+8>>2];c[x+12>>2]=c[z+12>>2];AD(w,x,d)}l=A;return}function QD(a,b,d){a=a|0;b=b|0;d=d|0;a:do if((a|0)<1)a=0;else switch(c[d+16>>2]|0){case 4:{a=DD(a,b,d)|0;break a}case 3:{a=RD(a,b,d)|0;break a}default:{a=0;break a}}while(0);return a|0}function RD(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;n=l;l=l+80|0;g=n+64|0;f=n+24|0;m=n+8|0;e=n;h=n+56|0;j=d+8|0;k=GD(a,b,c[j>>2]|0)|0;if(0){i=c[15686]|0;c[e>>2]=k;g1(i,96259,e)|0}a:do if((k|0)>=1){c[h+4>>2]=0;c[h>>2]=0;i=uH(a<<4)|0;d=0;while(1){if((d|0)>=(a|0))break;c[i+(d<<4)+12>>2]=d;o=b+(d<<5)|0;e=c[j>>2]|0;c[f>>2]=c[o>>2];c[f+4>>2]=c[o+4>>2];c[f+8>>2]=c[o+8>>2];c[f+12>>2]=c[o+12>>2];c[f+16>>2]=c[o+16>>2];c[f+20>>2]=c[o+20>>2];c[f+24>>2]=c[o+24>>2];c[f+28>>2]=c[o+28>>2];c[g>>2]=c[h>>2];c[g+4>>2]=c[h+4>>2];HD(f,i+(d<<4)|0,k,e,g,191979);d=d+1|0}f=uH(a<<2)|0;d=0;while(1){if((d|0)>=(a|0))break;c[f+(d<<2)>>2]=i+(d<<4);d=d+1|0}_0(f,a,4,87);g=vI()|0;d=uH(a<<3)|0;e=0;while(1){if((e|0)>=(a|0))break;o=c[f+(e<<2)>>2]|0;LD(e,o,g,d+(c[o+12>>2]<<3)|0,k,c[j>>2]|0,b);e=e+1|0}D_(f);e=0;while(1){if((e|0)>=(a|0))break;D_(c[i+(e<<4)+4>>2]|0);e=e+1|0}D_(i);yI(g);if(0>1){f=c[15686]|0;e=0;while(1){if((e|0)>=(a|0))break a;b=c[d+(e<<3)>>2]|0;o=c[d+(e<<3)+4>>2]|0;c[m>>2]=e;c[m+4>>2]=b;c[m+8>>2]=o;g1(f,96275,m)|0;e=e+1|0}}}else d=0;while(0);l=n;return d|0}function SD(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0,k=0,l=0,m=0.0,n=0.0,o=0.0,p=0.0,q=0,r=0,s=0,t=0;a:do if((a|0)<1)f=0-a|0;else{s=(e|0)==0;q=(f|0)==0;j=0;while(1){if((j|0)==(a|0)){f=0;break a}r=c[b+(j<<2)>>2]|0;g=s?r:e;k=c[d+(j<<3)>>2]|0;l=c[d+(j<<3)+4>>2]|0;m=+(k|0);n=m*.013888888888888888;o=+(l|0);p=o*.013888888888888888;i=Sy(r)|0;while(1){if(!i)break;f=c[i+16>>2]|0;t=c[f+132>>2]|0;h[t>>3]=+h[t>>3]+n;t=t+8|0;h[t>>3]=+h[t>>3]+p;t=f+16|0;h[t>>3]=+h[t>>3]+m;t=f+24|0;h[t>>3]=+h[t>>3]+o;f=c[f+108>>2]|0;if(f|0){t=f+56|0;h[t>>3]=+h[t>>3]+m;t=f+64|0;h[t>>3]=+h[t>>3]+o}b:do if(!q){f=Ex(g,i)|0;while(1){if(!f)break b;TD(f,k,l);f=Gx(g,f)|0}}while(0);i=Ty(r,i)|0}UD(r,k,l);j=j+1|0}}while(0);return f|0}function TD(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0.0,k=0,l=0.0,m=0,n=0;e=c[a+16>>2]|0;a=c[e+96>>2]|0;if(a|0){m=a+56|0;h[m>>3]=+h[m>>3]+ +(b|0);m=a+64|0;h[m>>3]=+h[m>>3]+ +(d|0)}a=c[e+108>>2]|0;if(a|0){m=a+56|0;h[m>>3]=+h[m>>3]+ +(b|0);m=a+64|0;h[m>>3]=+h[m>>3]+ +(d|0)}a=c[e+100>>2]|0;if(a|0){m=a+56|0;h[m>>3]=+h[m>>3]+ +(b|0);m=a+64|0;h[m>>3]=+h[m>>3]+ +(d|0)}a=c[e+104>>2]|0;if(a|0){m=a+56|0;h[m>>3]=+h[m>>3]+ +(b|0);m=a+64|0;h[m>>3]=+h[m>>3]+ +(d|0)}m=c[e+8>>2]|0;a:do if(m|0){l=+(b|0);j=+(d|0);b=c[m+4>>2]|0;a=0;while(1){if((a|0)>=(b|0))break a;k=c[m>>2]|0;d=c[k+(a*48|0)>>2]|0;f=c[k+(a*48|0)+4>>2]|0;g=c[k+(a*48|0)+8>>2]|0;i=c[k+(a*48|0)+12>>2]|0;e=0;while(1){if((e|0)>=(f|0))break;n=d+(e<<4)|0;h[n>>3]=+h[n>>3]+l;n=d+(e<<4)+8|0;h[n>>3]=+h[n>>3]+j;e=e+1|0}if(g|0){n=k+(a*48|0)+16|0;h[n>>3]=+h[n>>3]+l;n=k+(a*48|0)+24|0;h[n>>3]=+h[n>>3]+j}if(i|0){n=k+(a*48|0)+32|0;h[n>>3]=+h[n>>3]+l;n=k+(a*48|0)+40|0;h[n>>3]=+h[n>>3]+j}a=a+1|0}}while(0);return}function UD(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0.0,i=0.0,j=0,k=0.0,l=0.0,m=0,n=0.0,o=0;j=b+16|0;b=c[j>>2]|0;o=b+16|0;m=b+24|0;f=b+32|0;b=b+40|0;g=+(d|0);l=+h[f>>3]+g;i=+(e|0);n=+h[m>>3]+i;k=+h[b>>3]+i;h[o>>3]=+h[o>>3]+g;h[m>>3]=n;h[f>>3]=l;h[b>>3]=k;b=c[j>>2]|0;f=c[b+12>>2]|0;if((f|0)!=0?(a[f+81>>0]|0)!=0:0){o=f+56|0;h[o>>3]=+h[o>>3]+g;f=f+64|0;h[f>>3]=+h[f>>3]+i;f=1}else f=1;while(1){if((f|0)>(c[b+180>>2]|0))break;UD(c[(c[b+184>>2]|0)+(f<<2)>>2]|0,d,e);f=f+1|0;b=c[j>>2]|0}return}function VD(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=BD(a,b,d,e)|0;if(!f)a=1;else{a=SD(a,b,f,d,c[e+12>>2]|0)|0;D_(f)}return a|0}function WD(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0;p=l;l=l+32|0;o=p;n=VD(a,b,d,e)|0;if(!n){mM(d);m=(c[d+16>>2]|0)+16|0;c[o>>2]=c[m>>2];c[o+4>>2]=c[m+4>>2];c[o+8>>2]=c[m+8>>2];c[o+12>>2]=c[m+12>>2];c[o+16>>2]=c[m+16>>2];c[o+20>>2]=c[m+20>>2];c[o+24>>2]=c[m+24>>2];c[o+28>>2]=c[m+28>>2];f=o+8|0;g=o+16|0;i=o+24|0;e=0;while(1){if((e|0)>=(a|0))break;k=c[(c[b+(e<<2)>>2]|0)+16>>2]|0;j=c[k+180>>2]|0;k=k+184|0;d=1;while(1){if((d|0)>(j|0))break;r=(c[(c[(c[k>>2]|0)+(d<<2)>>2]|0)+16>>2]|0)+16|0;h[o>>3]=+h[(+h[o>>3]<+h[r>>3]?o:r)>>3];r=c[(c[(c[k>>2]|0)+(d<<2)>>2]|0)+16>>2]|0;q=r+16|0;h[f>>3]=+h[(+h[f>>3]<+h[r+24>>3]?o:q)+8>>3];h[g>>3]=+h[(+h[g>>3]>+h[r+32>>3]?o:q)+16>>3];h[i>>3]=+h[(+h[i>>3]>+h[r+40>>3]?o:q)+24>>3];d=d+1|0}e=e+1|0}c[m>>2]=c[o>>2];c[m+4>>2]=c[o+4>>2];c[m+8>>2]=c[o+8>>2];c[m+12>>2]=c[o+12>>2];c[m+16>>2]=c[o+16>>2];c[m+20>>2]=c[o+20>>2];c[m+24>>2]=c[o+24>>2];c[m+28>>2]=c[o+28>>2]}l=p;return n|0}function XD(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;g=l;l=l+16|0;f=g;if(!e)qa(96508,96514,1400,96521);d=YD(a,d,d)|0;c[e+8>>2]=d;if(0){h=c[15686]|0;c[f>>2]=d;g1(h,96533,f)|0}c[e+12>>2]=0;c[e+20>>2]=0;ZD(a,b,e)|0;l=g;return c[e+16>>2]|0}function YD(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;i=l;l=l+16|0;h=i;f=i+4|0;g=xx(b,96663)|0;a:do if(g){c[h>>2]=f;h=(N1(g,134313,h)|0)==1;b=c[f>>2]|0;if(h&(b|0)>-1)d=b;else{switch(a[g>>0]|0){case 84:case 116:break;default:break a}d=e}}while(0);l=i;return d|0}function ZD(a,b,c){a=a|0;b=b|0;c=c|0;return _D(xx(a,96546)|0,b,c)|0}function _D(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0.0;u=l;l=l+64|0;r=u+40|0;q=u+32|0;t=u+24|0;s=u+16|0;m=u+8|0;k=u;i=u+48|0;j=u+44|0;if(!e)qa(96508,96514,1292,96555);o=e+28|0;c[o>>2]=0;p=e+16|0;c[p>>2]=d;n=e+4|0;c[n>>2]=0;c[e+24>>2]=0;a:do if(b|0?(f=a[b>>0]|0,f<<24>>24):0)switch(f<<24>>24|0){case 97:if(!(z$(b,96573,5)|0)){c[p>>2]=4;m=$D(b+5|0,e)|0;c[k>>2]=j;m=(N1(m,134313,k)|0)>0;d=c[j>>2]|0;if(!(m&(d|0)>0))break a;c[n>>2]=d;break a}else{if(z$(b,96579,6)|0)break a;c[p>>2]=5;c[m>>2]=i;m=(N1(b+5|0,96586,m)|0)>0;v=+g[i>>2];g[e>>2]=m&v>0.0?v:1.0;break a}case 99:{if(f<<24>>24!=99)break a;if(b$(b,104980)|0)break a;c[p>>2]=1;break a}case 103:{if(f<<24>>24!=103)break a;if(b$(b,108412)|0)break a;c[p>>2]=3;break a}case 110:{if(f<<24>>24!=110)break a;if(b$(b,108399)|0)break a;c[p>>2]=2;break a}default:break a}while(0);if(0){d=c[15686]|0;E1(96589,11,1,d)|0;c[s>>2]=aE(c[p>>2]|0)|0;g1(d,96601,s)|0;if((c[p>>2]|0)==5){h[t>>3]=+g[e>>2];g1(d,96614,t)|0}c[q>>2]=c[n>>2];g1(d,96627,q)|0;c[r>>2]=c[o>>2];g1(d,96640,r)|0}l=u;return c[p>>2]|0}function $D(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;a:do if((a[b>>0]|0)==95){f=d+28|0;e=1;while(1){b=b+1|0;b:while(1){if(!e)break a;d=a[b>>0]|0;if(!(d<<24>>24))break a;switch(d<<24>>24|0){case 99:{g=10;break b}case 105:{g=9;break b}case 117:{g=11;break b}case 116:{g=12;break b}case 98:{d=32;break b}case 108:{g=7;break b}case 114:{g=8;break b}default:e=0}}if((g|0)==7){g=0;d=4}else if((g|0)==8){g=0;d=8}else if((g|0)==9){g=0;d=64}else if((g|0)==10){g=0;d=1}else if((g|0)==11){g=0;d=2}else if((g|0)==12){g=0;d=16}c[f>>2]=c[f>>2]|d}}while(0);return b|0}function aE(a){a=a|0;switch(a|0){case 1:{a=104980;break}case 2:{a=108399;break}case 3:{a=108412;break}case 4:{a=96573;break}case 5:{a=96579;break}default:a=96653}return a|0}function bE(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+96|0;k=n;m=n+80|0;do if(a){if(!e){e=E_(1,20)|0;c[e+4>>2]=d>>>0>80?d:80}d=c[e>>2]|0;j=c[e+4>>2]|0;if(!d){h=100;d=a;i=E_(100,j)|0}else{h=d+100|0;i=F_(c[e+8>>2]|0,O(h,j)|0)|0;H3(i+(O(j,d)|0)|0,0,j*100|0)|0;d=a}while(1){d=cE(k,d,b,m)|0;if(!d)break;a=c[e>>2]|0;f=h<<1;g=O(h,j)|0;if((a|0)==(h|0)){i=F_(i,O(f,j)|0)|0;H3(i+g|0,0,g|0)|0;a=c[e>>2]|0}else f=h;a=i+(O(a,j)|0)|0;g=k;h=a+80|0;do{c[a>>2]=c[g>>2];a=a+4|0;g=g+4|0}while((a|0)<(h|0));c[e>>2]=(c[e>>2]|0)+1;h=f}if(c[m>>2]|0){m=e+16|0;c[m>>2]=c[m>>2]|1}d=c[e>>2]|0;if(!d){D_(i);D_(e);e=0;break}else{c[e+8>>2]=F_(i,O(d,j)|0)|0;break}}while(0);l=n;return e|0}function cE(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;j=l;l=l+80|0;h=j+64|0;i=j;c[f>>2]=0;do{g=a[d>>0]|0;d=d+1|0}while((B$(g)|0)!=0);a:do switch(g|0){case 69:{c[b>>2]=0;d=dE(d,b+8|0)|0;if(!d){c[f>>2]=1;d=0;break a}if(e)c[b+72>>2]=c[e>>2];break}case 101:{c[b>>2]=1;d=dE(d,b+8|0)|0;if(!d){c[f>>2]=1;d=0;break a}if(e)c[b+72>>2]=c[e>>2];break}case 80:{c[b>>2]=2;d=eE(d,b+8|0)|0;if(!d){c[f>>2]=1;d=0;break a}if(e)c[b+72>>2]=c[e+4>>2];break}case 112:{c[b>>2]=3;d=eE(d,b+8|0)|0;if(!d){c[f>>2]=1;d=0;break a}if(e)c[b+72>>2]=c[e+4>>2];break}case 98:{c[b>>2]=4;d=eE(d,b+8|0)|0;if(!d){c[f>>2]=1;d=0;break a}if(e)c[b+72>>2]=c[e+8>>2];break}case 66:{c[b>>2]=5;d=eE(d,b+8|0)|0;if(!d){c[f>>2]=1;d=0;break a}if(e)c[b+72>>2]=c[e+8>>2];break}case 99:{d=fE(d,h)|0;if(!d){c[f>>2]=1;d=0;break a}g=gE(c[h>>2]|0,i)|0;c[h>>2]=g;if(!g){c[f>>2]=1;d=0;break a}if(!(c[i>>2]|0)){c[b>>2]=9;c[b+8>>2]=c[i+8>>2];if(!e)break a;c[b+72>>2]=c[e+24>>2];break a}else{c[b>>2]=14;f=b+8|0;g=i;h=f+64|0;do{c[f>>2]=c[g>>2];f=f+4|0;g=g+4|0}while((f|0)<(h|0));if(!e)break a;c[b+72>>2]=c[e+40>>2];break a}}case 67:{d=fE(d,h)|0;if(!d){c[f>>2]=1;d=0;break a}g=gE(c[h>>2]|0,i)|0;c[h>>2]=g;if(!g){c[f>>2]=1;d=0;break a}if(!(c[i>>2]|0)){c[b>>2]=8;c[b+8>>2]=c[i+8>>2];if(!e)break a;c[b+72>>2]=c[e+20>>2];break a}else{c[b>>2]=13;f=b+8|0;g=i;h=f+64|0;do{c[f>>2]=c[g>>2];f=f+4|0;g=g+4|0}while((f|0)<(h|0));if(!e)break a;c[b+72>>2]=c[e+40>>2];break a}}case 76:{c[b>>2]=6;d=eE(d,b+8|0)|0;if(!d){c[f>>2]=1;d=0;break a}if(e)c[b+72>>2]=c[e+12>>2];break}case 84:{c[b>>2]=7;d=hE(d,b+8|0)|0;if(!d){c[f>>2]=1;d=0;break a}d=hE(d,b+16|0)|0;if(!d){c[f>>2]=1;d=0;break a}d=iE(d,b+24|0)|0;if(!d){c[f>>2]=1;d=0;break a}d=hE(d,b+32|0)|0;if(!d){c[f>>2]=1;d=0;break a}d=fE(d,b+40|0)|0;if(!d){c[f>>2]=1;d=0;break a}if(e)c[b+72>>2]=c[e+16>>2];break}case 70:{c[b>>2]=10;d=hE(d,b+8|0)|0;if(!d){c[f>>2]=1;d=0;break a}d=fE(d,b+16|0)|0;if(!d){c[f>>2]=1;d=0;break a}if(e)c[b+72>>2]=c[e+28>>2];break}case 83:{c[b>>2]=11;d=fE(d,b+8|0)|0;if(!d){c[f>>2]=1;d=0;break a}if(e)c[b+72>>2]=c[e+32>>2];break}case 73:{c[b>>2]=12;d=dE(d,b+8|0)|0;if(!d){c[f>>2]=1;d=0;break a}d=fE(d,b+40|0)|0;if(!d){c[f>>2]=1;d=0;break a}if(e)c[b+72>>2]=c[e+36>>2];break}case 116:{c[b>>2]=15;d=jE(d,b+8|0)|0;if(!d){c[f>>2]=1;d=0;break a}if(e)c[b+72>>2]=c[e+44>>2];break}case 0:{d=0;break}default:{c[f>>2]=1;d=0}}while(0);l=j;return d|0}function dE(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0;i=l;l=l+16|0;e=i;h[b>>3]=+c2(a,e);f=c[e>>2]|0;if(((f|0)!=(a|0)?(h[b+8>>3]=+c2(f,e),g=c[e>>2]|0,(f|0)!=(g|0)):0)?(h[b+16>>3]=+c2(g,e),d=c[e>>2]|0,(g|0)!=(d|0)):0){h[b+24>>3]=+c2(d,e);a=c[e>>2]|0;a=(d|0)==(a|0)?0:a}else a=0;l=i;return a|0}function eE(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0;k=l;l=l+16|0;j=k+4|0;g=k;a=kE(a,j)|0;do if(a){d=c[j>>2]|0;i=E_(d,24)|0;c[b>>2]=d;e=i;f=0;while(1){if((f|0)>=(d|0)){d=9;break}h[e>>3]=+c2(a,g);d=c[g>>2]|0;if((a|0)==(d|0)){d=5;break}h[e+8>>3]=+c2(d,g);a=c[g>>2]|0;if((d|0)==(a|0)){d=7;break}h[e+16>>3]=0.0;e=e+24|0;d=c[b>>2]|0;f=f+1|0}if((d|0)==5){c[j>>2]=f;D_(i);a=0;break}else if((d|0)==7){c[j>>2]=f;D_(i);a=0;break}else if((d|0)==9){c[j>>2]=f;c[b+4>>2]=i;break}}else a=0;while(0);l=k;return a|0}function fE(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;j=l;l=l+16|0;i=j;b=kE(b,i)|0;f=c[i>>2]|0;do if(!((b|0)==0|(f|0)<1)){while(1){h=a[b>>0]|0;e=h<<24>>24==0;if(e^h<<24>>24!=45)b=b+1|0;else break}if(!e){h=E_(f+1|0,1)|0;g=h;e=f;while(1){b=b+1|0;if((e|0)<=0){e=9;break}e=a[b>>0]|0;if(!(e<<24>>24)){e=8;break}a[g>>0]=e;e=(c[i>>2]|0)+-1|0;c[i>>2]=e;g=g+1|0}if((e|0)==8){D_(h);b=0;break}else if((e|0)==9){a[g>>0]=0;c[d>>2]=h;break}}else b=0}else b=0;while(0);l=j;return b|0}function gE(b,d){b=b|0;d=d|0;var e=0;e=a[b>>0]|0;switch(e|0){case 91:{b=lE(b+1|0,d)|0;break}case 40:{b=mE(b+1|0,d)|0;break}case 47:case 35:{c[d>>2]=0;c[d+8>>2]=b;break}default:if(!(M$(e)|0))b=0;else{c[d>>2]=0;c[d+8>>2]=b}}return b|0}function hE(a,b){a=a|0;b=b|0;var d=0,e=0.0,f=0;f=l;l=l+16|0;d=f;e=+c2(a,d);d=c[d>>2]|0;if((d|0)==(a|0))d=0;else h[b>>3]=e;l=f;return d|0}function iE(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;a=kE(a,e)|0;e=c[e>>2]|0;c[b>>2]=(e|0)<0?0:e|0?2:1;l=d;return a|0}function jE(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;c[b>>2]=C$(a,e,10)|0;b=c[e>>2]|0;l=d;return ((b|0)==(a|0)?0:b)|0}function kE(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;c[b>>2]=i1(a,e,10)|0;b=c[e>>2]|0;l=d;return ((b|0)==(a|0)?0:b)|0}function lE(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,i=0,j=0,k=0,m=0,n=0,o=0;o=l;l=l+16|0;m=o;c[b>>2]=1;n=b+8|0;i=hE(a,n)|0;do if(((((i|0)!=0?(j=hE(i,b+16|0)|0,(j|0)!=0):0)?(e=hE(j,b+24|0)|0,(e|0)!=0):0)?(f=hE(e,b+32|0)|0,(f|0)!=0):0)?(k=b+40|0,d=kE(f,k)|0,(d|0)!=0):0){b=c[k>>2]|0;f=E_(b,8)|0;e=0;while(1){if((e|0)>=(b|0)){d=13;break}d=hE(d,m)|0;if(!d){d=9;break}g[f+(e<<3)>>2]=+h[m>>3];d=fE(d,f+(e<<3)+4|0)|0;if(!d){d=12;break}e=e+1|0;b=c[k>>2]|0}if((d|0)==9){D_(f);a=0;break}else if((d|0)==12){D_(f);a=0;break}else if((d|0)==13){c[n+36>>2]=f;break}}else a=0;while(0);l=o;return a|0}function mE(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;p=l;l=l+16|0;n=p;c[b>>2]=2;k=hE(a,b+8|0)|0;do if(((((((k|0)!=0?(m=hE(k,b+16|0)|0,(m|0)!=0):0)?(e=hE(m,b+24|0)|0,(e|0)!=0):0)?(f=hE(e,b+32|0)|0,(f|0)!=0):0)?(i=hE(f,b+40|0)|0,(i|0)!=0):0)?(j=hE(i,b+48|0)|0,(j|0)!=0):0)?(o=b+56|0,d=kE(j,o)|0,(d|0)!=0):0){e=c[o>>2]|0;i=E_(e,8)|0;f=0;while(1){if((f|0)>=(e|0)){d=15;break}d=hE(d,n)|0;if(!d){d=11;break}g[i+(f<<3)>>2]=+h[n>>3];d=fE(d,i+(f<<3)+4|0)|0;if(!d){d=14;break}f=f+1|0;e=c[o>>2]|0}if((d|0)==11){D_(i);a=0;break}else if((d|0)==14){D_(i);a=0;break}else if((d|0)==15){c[b+60>>2]=i;break}}else a=0;while(0);l=p;return a|0}function nE(a,b,c){a=a|0;b=b|0;c=c|0;return bE(a,b,c,0)|0}function oE(a){a=a|0;return nE(a,0,0)|0}function pE(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;e=c[a+12>>2]|0;if(a|0){f=c[a+8>>2]|0;g=a+4|0;h=(e|0)==0;b=0;while(1){if((b|0)>=(c[a>>2]|0))break;d=f+(O(c[g>>2]|0,b)|0)|0;if(!h)tb[e&127](d);qE(d);b=b+1|0}D_(f);D_(a)}return}function qE(a){a=a|0;switch(c[a>>2]|0){case 3:case 2:{D_(c[a+8+4>>2]|0);break}case 5:case 4:{D_(c[a+8+4>>2]|0);break}case 6:{D_(c[a+8+4>>2]|0);break}case 7:{D_(c[a+40>>2]|0);break}case 9:case 8:{D_(c[a+8>>2]|0);break}case 14:case 13:{rE(a+8|0);break}case 10:{D_(c[a+16>>2]|0);break}case 11:{D_(c[a+8>>2]|0);break}case 12:{D_(c[a+40>>2]|0);break}default:{}}return}function rE(a){a=a|0;var b=0,d=0,e=0;switch(c[a>>2]|0){case 1:{e=a+40|0;b=a+8+36|0;a=0;while(1){d=c[b>>2]|0;if((a|0)>=(c[e>>2]|0))break;D_(c[d+(a<<3)+4>>2]|0);a=a+1|0}D_(d);break}case 2:{e=a+56|0;d=a+60|0;a=0;while(1){b=c[d>>2]|0;if((a|0)>=(c[e>>2]|0))break;D_(c[b+(a<<3)+4>>2]|0);a=a+1|0}D_(b);break}default:{}}return}function sE(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;o=l;l=l+16|0;k=o+4|0;n=o;c[d>>2]=0;c[e>>2]=(ey(ez(b)|0)|0)!=0&1;f=c[46414]|0;a:do if(f|0?(h=yx(b,f)|0,i=a[h>>0]|0,i<<24>>24):0){f=20284;while(1){g=c[f>>2]|0;if(!g)break a;if(i<<24>>24==(a[g>>0]|0)?(b$(h,g)|0)==0:0)break;f=f+12|0}c[d>>2]=c[f+4>>2];c[e>>2]=c[f+8>>2]}while(0);f=c[46425]|0;if((f|0?(c[e>>2]|0)==1:0)?(j=yx(b,f)|0,a[j>>0]|0):0)tE(j,e);f=c[46426]|0;if((f|0?(c[d>>2]|0)==1:0)?(m=yx(b,f)|0,a[m>>0]|0):0)tE(m,d);if(a[(c[b+16>>2]|0)+153>>0]|0){j=b+-48|0;i=ez(c[((c[b>>2]&3|0)==2?b:j)+40>>2]|0)|0;m=c[b>>2]&3;sE(Rx(i,c[((m|0)==2?b:j)+40>>2]|0,c[((m|0)==3?b:b+48|0)+40>>2]|0,0,0)|0,k,n);c[e>>2]=c[k>>2]|c[e>>2];c[d>>2]=c[n>>2]|c[d>>2]}l=o;return}function tE(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;o=l;l=l+16|0;m=o;k=o+4|0;j=0;e=0;a:while(1){c[d>>2]=e;g=(j|0)<4;h=(j|0)==3;i=(j|0)==0;while(1){if(!(g&(a[b>>0]|0)!=0))break a;c[k>>2]=0;f=uE(b,k)|0;e=c[k>>2]|0;if(!e){n=5;break a}b=(e|0)==8;if(!(h&b)){if(!(i&b))break;if(a[f>>0]|0)break}c[k>>2]=0;b=f}e=c[d>>2]|e<<(j<<3);j=j+1|0;b=f}if((n|0)==5){c[m>>2]=b;Pw(0,96668,m)|0}l=o;return}function uE(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=l;l=l+16|0;e=f;c[e>>2]=0;d=vE(a,20344,e)|0;if((d|0)==(a|0)){while(1){d=vE(a,20360,e)|0;if((a|0)==(d|0))break;else a=d}d=vE(a,20408,e)|0}a=c[e>>2]|0;if((a|0)!=0&(a&15|0)==0){a=a|1;c[e>>2]=a}c[b>>2]=c[b>>2]|a;l=f;return d|0}function vE(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;while(1){e=c[b>>2]|0;if(!e)break;f=W_(e)|0;if(!(z$(a,e,f)|0)){g=4;break}b=b+8|0}if((g|0)==4){c[d>>2]=c[d>>2]|c[b+4>>2];a=a+f|0}return a|0}function wE(a,b){a=a|0;b=b|0;var d=0.0,e=0,f=0,g=0,i=0;g=0;d=0.0;while(1){if((g|0)==4)break;f=b>>(g<<3)&15;e=1400;while(1){if(!(c[e+16>>2]|0))break;if((f|0)==(c[e>>2]|0)){i=6;break}e=e+24|0}if((i|0)==6){i=0;d=+h[e+8>>3]+d}g=g+1|0}return +(d*10.0*+LL(a,c[46418]|0,1.0,0.0))}function xE(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=+e;f=+f;g=g|0;var i=0.0,j=0.0,k=0.0,m=0,n=0.0,o=0,p=0;p=l;l=l+96|0;m=p+80|0;o=p;k=f>4.0?f*.0875:.35;i=+h[d+8>>3];n=i*k;j=+h[d>>3];k=j*k;e=+h[b>>3];j=e+j;h[m>>3]=j;f=+h[b+8>>3];i=i+f;h[m+8>>3]=i;d=o+64|0;if(!(g&32)){c[d>>2]=c[m>>2];c[d+4>>2]=c[m+4>>2];c[d+8>>2]=c[m+8>>2];c[d+12>>2]=c[m+12>>2];c[o>>2]=c[m>>2];c[o+4>>2]=c[m+4>>2];c[o+8>>2]=c[m+8>>2];c[o+12>>2]=c[m+12>>2];m=o+32|0;c[m>>2]=c[b>>2];c[m+4>>2]=c[b+4>>2];c[m+8>>2]=c[b+8>>2];c[m+12>>2]=c[b+12>>2];f=i;e=j}else{c[d>>2]=c[b>>2];c[d+4>>2]=c[b+4>>2];c[d+8>>2]=c[b+8>>2];c[d+12>>2]=c[b+12>>2];c[o>>2]=c[b>>2];c[o+4>>2]=c[b+4>>2];c[o+8>>2]=c[b+8>>2];c[o+12>>2]=c[b+12>>2];b=o+32|0;c[b>>2]=c[m>>2];c[b+4>>2]=c[m+4>>2];c[b+8>>2]=c[m+8>>2];c[b+12>>2]=c[m+12>>2]}h[o+16>>3]=e+n;h[o+24>>3]=f-k;h[o+48>>3]=e-n;h[o+56>>3]=f+k;do if(!(g&64))if(!(g&128)){_O(a,o+16|0,3,g>>>4&1^1);break}else{_O(a,o+32|0,3,g>>>4&1^1);break}else _O(a,o,3,g>>>4&1^1);while(0);l=p;return}function yE(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=+e;f=+f;g=g|0;var i=0.0,j=0.0,k=0.0,m=0.0,n=0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0,x=0,y=0;x=l;l=l+160|0;n=x+144|0;w=x;q=e*4.0;y=(g&32|0)==0;q=!(q1.0)|y?0.0:(f+-1.0)*.05/e;u=+h[d+8>>3];r=-u;v=q*r;t=+h[d>>3];q=t*q;r=s*r;s=t*s;p=+h[b>>3];e=p+t;h[n>>3]=e;o=+h[b+8>>3];f=u+o;h[n+8>>3]=f;t=t*.5+p;u=u*.5+o;d=w+128|0;if(y){c[d>>2]=c[n>>2];c[d+4>>2]=c[n+4>>2];c[d+8>>2]=c[n+8>>2];c[d+12>>2]=c[n+12>>2];c[w>>2]=c[n>>2];c[w+4>>2]=c[n+4>>2];c[w+8>>2]=c[n+8>>2];c[w+12>>2]=c[n+12>>2];y=w+64|0;c[y>>2]=c[b>>2];c[y+4>>2]=c[b+4>>2];c[y+8>>2]=c[b+8>>2];c[y+12>>2]=c[b+12>>2];i=o;j=p;k=o;m=p;f=o;e=p}else{c[d>>2]=c[b>>2];c[d+4>>2]=c[b+4>>2];c[d+8>>2]=c[b+8>>2];c[d+12>>2]=c[b+12>>2];c[w>>2]=c[b>>2];c[w+4>>2]=c[b+4>>2];c[w+8>>2]=c[b+8>>2];c[w+12>>2]=c[b+12>>2];y=w+64|0;c[y>>2]=c[n>>2];c[y+4>>2]=c[n+4>>2];c[y+8>>2]=c[n+8>>2];c[y+12>>2]=c[n+12>>2];i=f+s;j=e+r;k=f-s;m=e-r}h[w+16>>3]=e-v;h[w+24>>3]=f-q;h[w+32>>3]=t-r;h[w+40>>3]=u-s;h[w+48>>3]=m;h[w+56>>3]=k;h[w+80>>3]=j;h[w+88>>3]=i;h[w+96>>3]=t+r;h[w+104>>3]=u+s;h[w+112>>3]=e+v;h[w+120>>3]=f+q;do if(!(g&64))if(!(g&128)){_O(a,w,9,1);break}else{_O(a,w+48|0,6,1);break}else _O(a,w,6,1);while(0);l=x;return}function zE(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=+e;f=+f;g=g|0;var i=0.0,j=0.0,k=0.0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0.0,t=0.0;q=l;l=l+64|0;p=q;t=+h[d+8>>3];s=+h[d>>3];k=+h[b>>3];e=k+s;m=+h[b+8>>3];f=m+t;i=k+s*.2;j=m+t*.2;k=k+s*.6;m=m+t*.6;h[p>>3]=i-t;h[p+8>>3]=j+s;n=p+16|0;h[n>>3]=i+t;o=p+24|0;h[o>>3]=j-s;h[p+32>>3]=k+t;h[p+40>>3]=m-s;h[p+48>>3]=k-t;h[p+56>>3]=m+s;if(!(g&64)){if(g&128|0){d=2;g=1;r=3}}else{d=3;g=0;r=3}if((r|0)==3){h[p+(g<<4)>>3]=i;h[p+(g<<4)+8>>3]=j;h[p+(d<<4)>>3]=k;h[p+(d<<4)+8>>3]=m}_O(a,p,4,1);c[p>>2]=c[b>>2];c[p+4>>2]=c[b+4>>2];c[p+8>>2]=c[b+8>>2];c[p+12>>2]=c[b+12>>2];h[n>>3]=e;h[o>>3]=f;bP(a,p,2);l=q;return}function AE(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=+e;f=+f;g=g|0;var i=0.0,j=0.0,k=0,m=0,n=0,o=0,p=0,q=0.0,r=0.0,s=0.0,t=0.0;o=l;l=l+64|0;n=o;j=+h[d+8>>3];r=j*-.4;i=+h[d>>3];q=i*.4;t=+h[b>>3];e=t+i*.8;s=+h[b+8>>3];f=s+j*.8;i=t+i;j=s+j;h[n>>3]=t+r;k=n+8|0;h[k>>3]=s+q;d=n+16|0;h[d>>3]=t-r;m=n+24|0;h[m>>3]=s-q;h[n+32>>3]=e-r;h[n+40>>3]=f-q;h[n+48>>3]=e+r;h[n+56>>3]=f+q;if(!(g&64)){if(g&128|0){c[d>>2]=c[b>>2];c[d+4>>2]=c[b+4>>2];c[d+8>>2]=c[b+8>>2];c[d+12>>2]=c[b+12>>2];d=2;p=5}}else{c[n>>2]=c[b>>2];c[n+4>>2]=c[b+4>>2];c[n+8>>2]=c[b+8>>2];c[n+12>>2]=c[b+12>>2];d=3;p=5}if((p|0)==5){h[n+(d<<4)>>3]=e;h[n+(d<<4)+8>>3]=f}_O(a,n,4,g>>>4&1^1);h[n>>3]=e;h[k>>3]=f;h[n+16>>3]=i;h[m>>3]=j;bP(a,n,2);l=o;return}function BE(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=+e;f=+f;g=g|0;var i=0,j=0,k=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0;j=l;l=l+80|0;i=j;n=+h[d+8>>3];k=n*-.3333333333333333;p=+h[d>>3];f=p*.3333333333333333;q=+h[b>>3];m=q+p*.5;o=+h[b+8>>3];e=o+n*.5;d=i+64|0;h[i+64>>3]=q+p;h[i+72>>3]=o+n;c[i>>2]=c[d>>2];c[i+4>>2]=c[d+4>>2];c[i+8>>2]=c[d+8>>2];c[i+12>>2]=c[d+12>>2];h[i+16>>3]=m+k;h[i+24>>3]=e+f;d=i+32|0;c[d>>2]=c[b>>2];c[d+4>>2]=c[b+4>>2];c[d+8>>2]=c[b+8>>2];c[d+12>>2]=c[b+12>>2];h[i+48>>3]=m-k;h[i+56>>3]=e-f;do if(!(g&64)){d=g>>>4&1^1;if(!(g&128)){_O(a,i,4,d);break}else{_O(a,i,3,d);break}}else _O(a,d,3,g>>>4&1^1);while(0);l=j;return}function CE(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=+d;e=+e;f=f|0;var g=0,i=0,j=0.0,k=0.0,m=0.0;g=l;l=l+32|0;i=g;k=+h[c>>3];e=+h[c+8>>3];d=+C(+(e*e+k*k))*.5;m=+h[b>>3];k=k*.5;h[i>>3]=m+k-d;j=+h[b+8>>3];e=e*.5;h[i+8>>3]=j-d+e;h[i+16>>3]=m+d+k;h[i+24>>3]=j+d+e;ZO(a,i,2,f>>>4&1^1);l=g;return}function DE(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=+e;f=+f;g=g|0;var i=0.0,j=0.0,k=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0,r=0,s=0,t=0;t=l;l=l+112|0;q=t+48|0;r=t+16|0;s=t;n=f>4.0?f*.125:.5;p=+h[b>>3];o=+h[d>>3];i=+h[b+8>>3];m=+h[d+8>>3];e=m*n;f=o*n;c[r>>2]=c[b>>2];c[r+4>>2]=c[b+4>>2];c[r+8>>2]=c[b+8>>2];c[r+12>>2]=c[b+12>>2];h[r+16>>3]=o+p;h[r+24>>3]=m+i;h[q>>3]=n*(o-m)+p;j=n*(m+o);k=j+i;h[q+8>>3]=k;h[q+48>>3]=j+p;i=n*(m-o)+i;h[q+56>>3]=i;o=e*-.95;m=o+f+p;n=f*1.3333333333333333;if(!(g&32)){e=e*1.3333333333333333;j=f*-.33333333333333326;i=i-e;f=k-e;e=m-n}else{e=e*1.3333333333333333;j=f*2.333333333333333;i=i+e;f=k+e;e=m+n}h[q+16>>3]=e;h[q+24>>3]=f;h[q+32>>3]=j-o+p;h[q+40>>3]=i;bP(a,r,2);if(!(g&64)){if(g&128|0)XL(s,q,3,.5,q,0)}else XL(s,q,3,.5,0,q);aP(a,q,4,0,0,0);l=t;return}function EE(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=+e;f=+f;g=g|0;var i=0;g=l;l=l+32|0;i=g;e=+h[d>>3]+ +h[b>>3];f=+h[d+8>>3]+ +h[b+8>>3];c[i>>2]=c[b>>2];c[i+4>>2]=c[b+4>>2];c[i+8>>2]=c[b+8>>2];c[i+12>>2]=c[b+12>>2];h[i+16>>3]=e;h[i+24>>3]=f;bP(a,i,2);l=g;return}function FE(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0.0,j=0,k=0,m=0,n=0,o=0.0,p=0.0,q=0,r=0,s=0;n=l;l=l+80|0;j=n+72|0;k=n+8|0;m=n;i=+wE(a,g);i=i*i;h[m>>3]=i;c[f+12>>2]=g;g=f+32|0;a=e+3|0;f=b+(a<<4)|0;c[g>>2]=c[f>>2];c[g+4>>2]=c[f+4>>2];c[g+8>>2]=c[f+8>>2];c[g+12>>2]=c[f+12>>2];if((e|0)>(d|0)?(o=+h[b+(e<<4)>>3]-+h[f>>3],p=+h[b+(e<<4)+8>>3]-+h[b+(a<<4)+8>>3],p*p+o*o>2]=c[r>>2];c[s+4>>2]=c[r+4>>2];c[s+8>>2]=c[r+8>>2];c[s+12>>2]=c[r+12>>2];q=k+32|0;a=b+(e+1<<4)|0;c[q>>2]=c[a>>2];c[q+4>>2]=c[a+4>>2];c[q+8>>2]=c[a+8>>2];c[q+12>>2]=c[a+12>>2];f=k+16|0;d=b+(e+2<<4)|0;c[f>>2]=c[d>>2];c[f+4>>2]=c[d+4>>2];c[f+8>>2]=c[d+8>>2];c[f+12>>2]=c[d+12>>2];c[k>>2]=c[g>>2];c[k+4>>2]=c[g+4>>2];c[k+8>>2]=c[g+8>>2];c[k+12>>2]=c[g+12>>2];c[j>>2]=k;c[j+4>>2]=m;MK(j,90,k,1);c[r>>2]=c[s>>2];c[r+4>>2]=c[s+4>>2];c[r+8>>2]=c[s+8>>2];c[r+12>>2]=c[s+12>>2];c[a>>2]=c[q>>2];c[a+4>>2]=c[q+4>>2];c[a+8>>2]=c[q+8>>2];c[a+12>>2]=c[q+12>>2];c[d>>2]=c[f>>2];c[d+4>>2]=c[f+4>>2];c[d+8>>2]=c[f+8>>2];c[d+12>>2]=c[f+12>>2];m=b+(e+3<<4)|0;c[m>>2]=c[k>>2];c[m+4>>2]=c[k+4>>2];c[m+8>>2]=c[k+8>>2];c[m+12>>2]=c[k+12>>2];l=n;return e|0}function GE(a,b){a=a|0;b=b|0;var d=0.0,e=0.0,f=0;f=c[a>>2]|0;d=+h[b>>3]-+h[f>>3];e=+h[b+8>>3]-+h[f+8>>3];return e*e+d*d<=+h[c[a+4>>2]>>3]|0}function HE(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0,j=0.0,k=0,m=0,n=0,o=0,p=0.0,q=0.0,r=0,s=0;o=l;l=l+80|0;k=o+72|0;m=o+8|0;n=o;j=+wE(a,g);j=j*j;h[n>>3]=j;c[f+8>>2]=g;f=f+16|0;a=b+(d<<4)|0;c[f>>2]=c[a>>2];c[f+4>>2]=c[a+4>>2];c[f+8>>2]=c[a+8>>2];c[f+12>>2]=c[a+12>>2];if(!((e|0)>(d|0)?(i=d+3|0,p=+h[a>>3]-+h[b+(i<<4)>>3],q=+h[b+(d<<4)+8>>3]-+h[b+(i<<4)+8>>3],q*q+p*p>2]=c[e>>2];c[m+4>>2]=c[e+4>>2];c[m+8>>2]=c[e+8>>2];c[m+12>>2]=c[e+12>>2];g=m+16|0;d=b+(i+2<<4)|0;c[g>>2]=c[d>>2];c[g+4>>2]=c[d+4>>2];c[g+8>>2]=c[d+8>>2];c[g+12>>2]=c[d+12>>2];r=m+32|0;a=b+(i+1<<4)|0;c[r>>2]=c[a>>2];c[r+4>>2]=c[a+4>>2];c[r+8>>2]=c[a+8>>2];c[r+12>>2]=c[a+12>>2];s=m+48|0;c[s>>2]=c[f>>2];c[s+4>>2]=c[f+4>>2];c[s+8>>2]=c[f+8>>2];c[s+12>>2]=c[f+12>>2];c[k>>2]=s;c[k+4>>2]=n;MK(k,90,m,0);n=b+(i<<4)|0;c[n>>2]=c[s>>2];c[n+4>>2]=c[s+4>>2];c[n+8>>2]=c[s+8>>2];c[n+12>>2]=c[s+12>>2];c[a>>2]=c[r>>2];c[a+4>>2]=c[r+4>>2];c[a+8>>2]=c[r+8>>2];c[a+12>>2]=c[r+12>>2];c[d>>2]=c[g>>2];c[d+4>>2]=c[g+4>>2];c[d+8>>2]=c[g+8>>2];c[d+12>>2]=c[g+12>>2];c[e>>2]=c[m>>2];c[e+4>>2]=c[m+4>>2];c[e+8>>2]=c[m+8>>2];c[e+12>>2]=c[m+12>>2];l=o;return i|0}function IE(a,b,d,e,f,g,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;var j=0.0,k=0.0,l=0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0,s=0.0,t=0.0,u=0,v=0,w=0;u=(g|0)!=0;l=(i|0)!=0;if(!((e|0)==(d|0)&(u&l))){if(l){j=+wE(a,i);k=+h[b+(e<<4)>>3];p=+h[b+(e<<4)+8>>3];l=e+3|0;r=b+(l<<4)|0;n=+h[r>>3];l=b+(l<<4)+8|0;o=+h[l>>3];t=k-n;s=p-o;t=+C(+(s*s+t*t))*.9;j=j>=t?t:j;if(p==o){m=(k>3]=k;h[b+(w<<4)+8>>3]=p;e=b+(e+2<<4)|0;h[r>>3]=m;h[l>>3]=j;c[e>>2]=c[r>>2];c[e+4>>2]=c[r+4>>2];c[e+8>>2]=c[r+8>>2];c[e+12>>2]=c[r+12>>2];c[f+12>>2]=i;h[f+32>>3]=n;h[f+40>>3]=o}if(u){m=+wE(a,g);l=b+(d<<4)|0;k=+h[l>>3];j=+h[b+(d<<4)+8>>3];w=d+3|0;o=+h[b+(w<<4)>>3];p=+h[b+(w<<4)+8>>3];t=k-o;s=j-p;t=+C(+(s*s+t*t))*.9;m=m>=t?t:m;if(j==p){n=(k>3]=n;h[b+(w<<4)+8>>3]=m;c[l>>2]=c[v>>2];c[l+4>>2]=c[v+4>>2];c[l+8>>2]=c[v+8>>2];c[l+12>>2]=c[v+12>>2];v=d+2|0;h[b+(v<<4)>>3]=o;h[b+(v<<4)+8>>3]=p;v=16}}else{r=b+(e<<4)|0;s=+h[r>>3];t=+h[b+(e<<4)+8>>3];l=e+3|0;u=b+(l<<4)|0;k=+h[u>>3];l=b+(l<<4)+8|0;j=+h[l>>3];m=+wE(a,g);q=+wE(a,i);n=s-k;p=t-j;n=+C(+(p*p+n*n));w=!(q+m>=n);n=n*.3333333333333333;m=w?m:n;n=w?q:n;if(t==j){w=s>3]=q;h[b+(w<<4)+8>>3]=o;c[r>>2]=c[v>>2];c[r+4>>2]=c[v+4>>2];c[r+8>>2]=c[v+8>>2];c[r+12>>2]=c[v+12>>2];v=b+(e+2<<4)|0;h[u>>3]=p;h[l>>3]=m;c[v>>2]=c[u>>2];c[v+4>>2]=c[u+4>>2];c[v+8>>2]=c[u+8>>2];c[v+12>>2]=c[u+12>>2];c[f+12>>2]=i;h[f+32>>3]=s;h[f+40>>3]=t;v=16}if((v|0)==16){c[f+8>>2]=g;h[f+16>>3]=k;h[f+24>>3]=j}return}function JE(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;var f=0.0,g=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0;n=+h[b>>3];k=+h[c>>3]-n;o=+h[b+8>>3];l=+h[c+8>>3]-o;j=d*10.0/(+C(+(k*k+l*l))+.0001);k=j*((k>=0.0?.0001:-.0001)+k);j=((l>=0.0?.0001:-.0001)+l)*j;l=k*.5;m=j*.5;i=n-m;f=o-l;n=m+n;l=o+l;o=i+k;m=f+j;k=n+k;j=l+j;g=o>k?o:k;g=n>g?n:g;d=m>j?m:j;d=l>d?l:d;k=o>3]=i>3]=f>3]=i>g?i:g;h[a+24>>3]=f>d?f:d;return}function KE(a,b,d,e,f,g,i){a=a|0;b=b|0;d=d|0;e=e|0;f=+f;g=+g;i=i|0;var j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0.0,s=0.0,t=0.0;q=l;l=l+48|0;m=q+32|0;k=q+16|0;p=q;n=(c[a+16>>2]|0)+12|0;o=c[n>>2]|0;c[n>>2]=b;YO(a,c[(c[a>>2]|0)+336>>2]|0);fP(a,g);t=+h[e>>3]-+h[d>>3];b=e+8|0;s=+h[b>>3]-+h[d+8>>3];r=10.0/(+C(+(t*t+s*s))+.0001);h[e>>3]=r*((t>=0.0?.0001:-.0001)+t);h[b>>3]=((s>=0.0?.0001:-.0001)+s)*r;b=0;while(1){if((b|0)>=4)break;j=i>>(b<<3)&255;if(!j)break;c[k>>2]=c[d>>2];c[k+4>>2]=c[d+4>>2];c[k+8>>2]=c[d+8>>2];c[k+12>>2]=c[d+12>>2];c[m>>2]=c[e>>2];c[m+4>>2]=c[e+4>>2];c[m+8>>2]=c[e+8>>2];c[m+12>>2]=c[e+12>>2];LE(p,a,k,m,f,g,j);c[d>>2]=c[p>>2];c[d+4>>2]=c[p+4>>2];c[d+8>>2]=c[p+8>>2];c[d+12>>2]=c[p+12>>2];b=b+1|0}c[n>>2]=o;l=q;return}function LE(a,b,d,e,f,g,i){a=a|0;b=b|0;d=d|0;e=e|0;f=+f;g=+g;i=i|0;var j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0.0;q=l;l=l+32|0;m=q+16|0;k=q;n=i&15;j=1400;while(1){o=c[j>>2]|0;if(!o)break;if((n|0)==(o|0)){p=4;break}j=j+24|0}if((p|0)==4){r=+h[j+8>>3]*f;h[e>>3]=r*+h[e>>3];o=e+8|0;h[o>>3]=r*+h[o>>3];p=c[j+16>>2]|0;c[k>>2]=c[d>>2];c[k+4>>2]=c[d+4>>2];c[k+8>>2]=c[d+8>>2];c[k+12>>2]=c[d+12>>2];c[m>>2]=c[e>>2];c[m+4>>2]=c[e+4>>2];c[m+8>>2]=c[e+8>>2];c[m+12>>2]=c[e+12>>2];wb[p&15](b,k,m,f,g,i);h[d>>3]=+h[e>>3]+ +h[d>>3];p=d+8|0;h[p>>3]=+h[o>>3]+ +h[p>>3]};c[a>>2]=c[d>>2];c[a+4>>2]=c[d+4>>2];c[a+8>>2]=c[d+8>>2];c[a+12>>2]=c[d+12>>2];l=q;return}function ME(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=l;l=l+16|0;g=i+8|0;f=i;d=xx(b,96770)|0;if((d|0)!=0?(a[d>>0]|0)!=0:0){e=d;h=5}else{d=xx(b,96782)|0;if((d|0)!=0?(a[d>>0]|0)!=0:0){e=d;h=5}else d=0}if((h|0)==5){d=nE(e,0,120)|0;if(!d){c[f>>2]=ry(b)|0;Pw(0,96789,f)|0;c[g>>2]=e;Pw(3,96842,g)|0}}l=i;return d|0}function NE(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;g=l;l=l+16|0;f=uH(304)|0;if(!f)Pw(1,96850,g)|0;e=a+16|0;a=c[e>>2]|0;c[f>>2]=a;c[e>>2]=f;if(!a){c[f+144>>2]=3;c[f+148>>2]=0;h[f+152>>3]=1.0}else{b=f+16|0;d=a+16|0;e=b+40|0;do{c[b>>2]=c[d>>2];b=b+4|0;d=d+4|0}while((b|0)<(e|0));b=f+56|0;d=a+56|0;e=b+40|0;do{c[b>>2]=c[d>>2];b=b+4|0;d=d+4|0}while((b|0)<(e|0));c[f+144>>2]=c[a+144>>2];c[f+148>>2]=c[a+148>>2];h[f+152>>3]=+h[a+152>>3];c[f+136>>2]=c[a+136>>2];b=f+96|0;d=a+96|0;e=b+40|0;do{c[b>>2]=c[d>>2];b=b+4|0;d=d+4|0}while((b|0)<(e|0))}l=g;return f|0}function OE(a){a=a|0;var b=0;a=a+16|0;b=c[a>>2]|0;if(!b)qa(96876,96880,117,96887);else{D_(c[b+212>>2]|0);D_(c[b+208>>2]|0);D_(c[b+216>>2]|0);D_(c[b+220>>2]|0);D_(c[b+224>>2]|0);D_(c[b+228>>2]|0);D_(c[b+232>>2]|0);D_(c[b+236>>2]|0);D_(c[b+240>>2]|0);D_(c[b+244>>2]|0);D_(c[b+248>>2]|0);D_(c[b+252>>2]|0);D_(c[b+256>>2]|0);D_(c[b+272>>2]|0);D_(c[b+284>>2]|0);D_(c[b+280>>2]|0);c[a>>2]=c[b>>2];D_(b);return}}function PE(d,e,f,g,h,i,j){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0;l=c[d+16>>2]|0;k=c[d+152>>2]|0;if((e|0)!=0&(k&32768|0)!=0)c[l+192>>2]=e;if(((k&65536|0)!=0?(c[l+212>>2]=pH(i,j)|0,(f|0)!=0):0)?(a[f>>0]|0)!=0:0){c[l+208>>2]=pH(f,j)|0;d=1}else d=0;do if(k&4194304){if(g|0?a[g>>0]|0:0){c[l+228>>2]=pH(g,j)|0;d=l+260|0;b[d>>1]=b[d>>1]|1;d=1;break}e=c[l+192>>2]|0;if(e){c[l+228>>2]=n1(e)|0;d=1}}while(0);if((h|0)!=0&(k&8388608|0)!=0?(a[h>>0]|0)!=0:0){c[l+244>>2]=pH(h,j)|0;d=1}return d|0}function QE(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;j=l;l=l+80|0;i=j;h=j+8|0;g=c[(c[b>>2]|0)+168>>2]|0;f=c[(c[(c[g+16>>2]|0)+8>>2]|0)+92>>2]|0;RE(b,e);b=xx(d,137978)|0;if((b|0)!=0?(a[b>>0]|0)!=0:0){Ww(e,b)|0;f=e+4|0;b=c[f>>2]|0;if(b>>>0>=(c[e+8>>2]|0)>>>0){Uw(e,1)|0;b=c[f>>2]|0}a[b>>0]=0;b=c[e>>2]|0;c[f>>2]=b}else{if((g|0)!=(d|0)&(f|0)!=0){Ww(e,f)|0;f=e+4|0;b=c[f>>2]|0;if(b>>>0>=(c[e+8>>2]|0)>>>0){Uw(e,1)|0;b=c[f>>2]|0}c[f>>2]=b+1;a[b>>0]=95}switch(pz(d)|0){case 0:{f=(g|0)==(d|0)?108412:96901;b=(c[d>>2]|0)>>>4;break}case 1:{f=108399;b=(c[d>>2]|0)>>>4;break}case 2:{f=108368;b=(c[d>>2]|0)>>>4;break}default:{f=0;b=0}}Ww(e,f)|0;c[i>>2]=b;Y0(h,96907,i)|0;Ww(e,h)|0;f=e+4|0;b=c[f>>2]|0;if(b>>>0>=(c[e+8>>2]|0)>>>0){Uw(e,1)|0;b=c[f>>2]|0}a[b>>0]=0;b=c[e>>2]|0;c[f>>2]=b}l=j;return b|0}function RE(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;i=l;l=l+144|0;h=i;g=i+8|0;e=c[b+160>>2]|0;if((e|0)>1?c[b+152>>2]&64|0:0){Ww(d,c[(c[(c[b>>2]|0)+308>>2]|0)+(e<<2)>>2]|0)|0;f=d+4|0;e=c[f>>2]|0;if(e>>>0>=(c[d+8>>2]|0)>>>0){Uw(d,1)|0;e=c[f>>2]|0}c[f>>2]=e+1;a[e>>0]=95}f=c[b+196>>2]|0;e=c[b+200>>2]|0;if((f|0)>0|(e|0)>0){c[h>>2]=f;c[h+4>>2]=e;Y0(g,96911,h)|0;Ww(d,g)|0}l=i;return}function SE(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0,i=0.0,j=0,k=0.0,m=0.0,n=0,o=0,p=0,q=0,r=0.0,s=0;s=l;l=l+48|0;p=s+16|0;f=s+32|0;q=s;r=+h[(c[a+16>>2]|0)+152>>3];o=TE(d,0,f)|0;if((o+-1|0)>>>0>=2){e=+h[b+16>>3];k=(e+ +h[b>>3])*.5;h[q>>3]=k;i=+h[b+24>>3];m=(i+ +h[b+8>>3])*.5;h[q+8>>3]=m;k=e-k;m=i-m;n=r>.5;if(n)fP(a,.5);j=c[f>>2]|0;i=0.0;f=c[j+8>>2]|0;while(1){d=c[f>>2]|0;if(!d)break;b=f+4|0;if(+g[b>>2]==0.0)e=i;else{WO(a,d);if(!(c[f+12>>2]|0))e=6.283185307179586;else e=+g[b>>2]*6.283185307179586+i;c[p>>2]=c[q>>2];c[p+4>>2]=c[q+4>>2];c[p+8>>2]=c[q+8>>2];c[p+12>>2]=c[q+12>>2];b=rQ(p,k,m,i,e)|0;aP(a,c[b>>2]|0,c[b+4>>2]|0,0,0,1);nV(b)}i=e;f=f+12|0}if(n)fP(a,r);UE(j)}l=s;return o|0}function TE(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,h=0,i=0,j=0.0,k=0.0,m=0.0,n=0,o=0,p=0,q=0,r=0;r=l;l=l+16|0;o=r+8|0;n=r;q=uH(12)|0;i=n1(b)|0;a:do if(!d){d=1;f=i;while(1){switch(a[f>>0]|0){case 0:break a;case 58:{d=d+1|0;break}default:{}}f=f+1|0}}while(0);c[q+4>>2]=i;p=uH((d*12|0)+12|0)|0;c[q+8>>2]=p;m=1.0;h=0;d=0;f=i;while(1){f=k1(f,104958)|0;if(!f){f=20;break}j=+VE(f);if(!(j>=0.0)){f=17;break}k=j-m;if(k>0.0)if((c[5130]|0)!=0?!(k<1.0e-05&k>-1.0e-05):0){c[n>>2]=b;Pw(0,96922,n)|0;c[5130]=0;j=m;d=3}else j=m;k=m-j;if(j>0.0)a[p+(h*12|0)+8>>0]=1;if(a[f>>0]|0)c[p+(h*12|0)>>2]=f;f=h+1|0;g[p+(h*12|0)+4>>2]=j;if(k<1.0e-05&k>-1.0e-05){h=f;f=30;break}else{m=k;h=f;f=0}}b:do if((f|0)==17){if(!(c[5130]|0))d=1;else{c[o>>2]=b;Pw(1,96957,o)|0;c[5130]=0;d=2}UE(q)}else if((f|0)==20)if(m>0.0){f=0;i=0;while(1){if((f|0)>=(h|0))break;o=i+(+g[p+(f*12|0)+4>>2]==0.0&1)|0;f=f+1|0;i=o}if((i|0)<=0){f=p+((h+-1|0)*12|0)+4|0;g[f>>2]=m+ +g[f>>2];f=30;break}j=m/+(i|0);f=0;while(1){if((f|0)>=(h|0)){f=30;break b}i=p+(f*12|0)+4|0;if(+g[i>>2]==0.0)g[i>>2]=j;f=f+1|0}}else f=30;while(0);if((f|0)==30){while(1){f=h+-1|0;if((h|0)<=0)break;if(+g[p+(f*12|0)+4>>2]>0.0)break;else h=f}c[p+(h*12|0)>>2]=0;c[q>>2]=h;c[e>>2]=q}l=r;return d|0}function UE(a){a=a|0;D_(c[a+4>>2]|0);D_(c[a+8>>2]|0);D_(a);return}function VE(b){b=b|0;var d=0.0,e=0,f=0,g=0;f=l;l=l+16|0;e=f;b=A$(b,59)|0;if(!b)d=0.0;else{g=b+1|0;a[b>>0]=0;d=+c2(g,e);d=(d>=0.0?(c[e>>2]|0)!=(g|0):0)?d:-1.0}l=f;return +d}function WE(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,i=0,j=0,k=0,m=0.0,n=0.0,o=0,p=0,q=0,r=0,s=0.0,t=0;t=l;l=l+80|0;i=t+64|0;r=t;s=+h[(c[a+16>>2]|0)+152>>3];q=TE(d,0,i)|0;if((q+-1|0)>>>0>=2){if(!e){c[r>>2]=c[b>>2];c[r+4>>2]=c[b+4>>2];c[r+8>>2]=c[b+8>>2];c[r+12>>2]=c[b+12>>2];p=r+16|0;o=b+16|0;c[p>>2]=c[o>>2];c[p+4>>2]=c[o+4>>2];c[p+8>>2]=c[o+8>>2];c[p+12>>2]=c[o+12>>2];p=r+32|0;o=b+32|0;c[p>>2]=c[o>>2];c[p+4>>2]=c[o+4>>2];c[p+8>>2]=c[o+8>>2];c[p+12>>2]=c[o+12>>2];p=r+48|0;o=b+48|0;c[p>>2]=c[o>>2];c[p+4>>2]=c[o+4>>2];c[p+8>>2]=c[o+8>>2];c[p+12>>2]=c[o+12>>2]}else{p=b+32|0;c[r>>2]=c[p>>2];c[r+4>>2]=c[p+4>>2];c[r+8>>2]=c[p+8>>2];c[r+12>>2]=c[p+12>>2];p=r+16|0;o=b+48|0;c[p>>2]=c[o>>2];c[p+4>>2]=c[o+4>>2];c[p+8>>2]=c[o+8>>2];c[p+12>>2]=c[o+12>>2];p=r+32|0;c[p>>2]=c[b>>2];c[p+4>>2]=c[b+4>>2];c[p+8>>2]=c[b+8>>2];c[p+12>>2]=c[b+12>>2];p=r+48|0;o=b+16|0;c[p>>2]=c[o>>2];c[p+4>>2]=c[o+4>>2];c[p+8>>2]=c[o+8>>2];c[p+12>>2]=c[o+12>>2]}k=r+16|0;m=+h[k>>3];f=+h[r>>3];n=m-f;o=r+32|0;h[o>>3]=f;h[k>>3]=f;p=s>.5;if(p)fP(a,.5);i=c[i>>2]|0;j=r+48|0;e=c[i+8>>2]|0;while(1){d=c[e>>2]|0;if(!d)break;b=e+4|0;if(!(+g[b>>2]==0.0)){WO(a,d);if(!(c[e+12>>2]|0))f=m;else f=n*+g[b>>2]+ +h[r>>3];h[o>>3]=f;h[k>>3]=f;_O(a,r,4,1);f=+h[k>>3];h[j>>3]=f;h[r>>3]=f}e=e+12|0}if(p)fP(a,s);UE(i)}l=t;return q|0}function XE(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=c[a+16>>2]|0;e=c[a+152>>2]|0;if(e&4259840|0){f=e&131072;g=f>>>16^2;c[d+264>>2]=g;h=d+268|0;c[h>>2]=g+2;g=d+272|0;D_(c[g>>2]|0);d=uH(c[h>>2]<<4)|0;c[g>>2]=d;c[d>>2]=c[b>>2];c[d+4>>2]=c[b+4>>2];c[d+8>>2]=c[b+8>>2];c[d+12>>2]=c[b+12>>2];g=d+16|0;b=b+16|0;c[g>>2]=c[b>>2];c[g+4>>2]=c[b+4>>2];c[g+8>>2]=c[b+8>>2];c[g+12>>2]=c[b+12>>2];if(!(e&8192))yO(a,d,d,2)|0;if(!f)WG(d)}return}function YE(a,b){a=a|0;b=b|0;var c=0,d=0.0,e=0,f=0,g=0,i=0.0,j=0.0,k=0.0,m=0.0,n=0.0,o=0,p=0,q=0;q=l;l=l+144|0;c=q+80|0;e=q+16|0;f=q;k=+h[b>>3];o=a+16|0;m=+h[o>>3];if(!(((((((((!(k>m)?(n=+h[a>>3],!(k>3],i=+h[a+24>>3],!(d>i)):0)?(j=+h[a+8>>3],!(d>3],!(k>m|k>3],!(k>i|k>3],!(k>m|k>3],!(k>i|k>3],!(k>m|k>3],!(n>i|n>3];if(!(d>+h[o>>3])){if(d<+h[a>>3]){c=a;p=16}}else{c=o;p=16}if((p|0)==16){p=0;h[c>>3]=d}d=+h[b+(e<<4)+8>>3];if(!(d>+h[f>>3])){if(d<+h[g>>3]){c=a;p=19}}else{c=o;p=19}if((p|0)==19){p=0;h[c+8>>3]=d}e=e+1|0}}while(0);l=q;return}function ZE(a){a=a|0;var b=0,d=0,e=0,f=0,g=0.0,h=0,i=0;b=l;l=l+48|0;d=b+32|0;e=b+16|0;f=b;i=a+48|0;h=a+16|0;c[f>>2]=c[a>>2];c[f+4>>2]=c[a+4>>2];c[f+8>>2]=c[a+8>>2];c[f+12>>2]=c[a+12>>2];c[e>>2]=c[i>>2];c[e+4>>2]=c[i+4>>2];c[e+8>>2]=c[i+8>>2];c[e+12>>2]=c[i+12>>2];c[d>>2]=c[h>>2];c[d+4>>2]=c[h+4>>2];c[d+8>>2]=c[h+8>>2];c[d+12>>2]=c[h+12>>2];g=+$G(f,e,d);h=a+32|0;c[f>>2]=c[a>>2];c[f+4>>2]=c[a+4>>2];c[f+8>>2]=c[a+8>>2];c[f+12>>2]=c[a+12>>2];c[e>>2]=c[i>>2];c[e+4>>2]=c[i+4>>2];c[e+8>>2]=c[i+8>>2];c[e+12>>2]=c[i+12>>2];c[d>>2]=c[h>>2];c[d+4>>2]=c[h+4>>2];c[d+8>>2]=c[h+8>>2];c[d+12>>2]=c[h+12>>2];a=g<4.0&+$G(f,e,d)<4.0&1;l=b;return a|0}function _E(b,d){b=b|0;d=d|0;var e=0,f=0,g=0.0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0.0,G=0.0,H=0.0,I=0.0,J=0,K=0;D=l;l=l+272|0;u=D+256|0;v=D+224|0;w=D+192|0;x=D+128|0;y=D+64|0;z=D;A=D+160|0;B=D+96|0;C=D+32|0;t=c[d+16>>2]|0;s=c[t+144>>2]|0;r=t+16|0;c[x>>2]=c[r>>2];c[x+4>>2]=c[r+4>>2];c[x+8>>2]=c[r+8>>2];c[x+12>>2]=c[r+12>>2];c[x+16>>2]=c[r+16>>2];c[x+20>>2]=c[r+20>>2];c[x+24>>2]=c[r+24>>2];c[x+28>>2]=c[r+28>>2];t=c[(c[t+8>>2]|0)+88>>2]|0;c[z>>2]=0;c[z+4>>2]=0;c[z+8>>2]=0;c[z+12>>2]=0;c[z+16>>2]=0;c[z+20>>2]=0;c[z+24>>2]=0;c[z+28>>2]=0;if(!t){c[b>>2]=c[x>>2];c[b+4>>2]=c[x+4>>2];c[b+8>>2]=c[x+8>>2];c[b+12>>2]=c[x+12>>2];c[b+16>>2]=c[x+16>>2];c[b+20>>2]=c[x+20>>2];c[b+24>>2]=c[x+24>>2];c[b+28>>2]=c[x+28>>2]}else{d=x+16|0;if(+h[x>>3]==+h[d>>3]?(e=x+8|0,f=x+24|0,+h[e>>3]==+h[f>>3]):0){h[e>>3]=1797693134862315708145274.0e284;h[x>>3]=1797693134862315708145274.0e284;h[f>>3]=-1797693134862315708145274.0e284;h[d>>3]=-1797693134862315708145274.0e284}j=v+8|0;k=v+16|0;m=v+24|0;n=y+16|0;o=y+24|0;p=s+144|0;q=w+16|0;r=t+12|0;d=0;f=c[t+8>>2]|0;e=0;g=0.0;i=0;while(1){if((i|0)>=(c[t>>2]|0))break;c[y>>2]=c[z>>2];c[y+4>>2]=c[z+4>>2];c[y+8>>2]=c[z+8>>2];c[y+12>>2]=c[z+12>>2];c[y+16>>2]=c[z+16>>2];c[y+20>>2]=c[z+20>>2];c[y+24>>2]=c[z+24>>2];c[y+28>>2]=c[z+28>>2];switch(c[f>>2]|0){case 1:case 0:{H=+h[f+8>>3];I=+h[f+24>>3];h[v>>3]=H-I;F=+h[f+16>>3];G=+h[f+32>>3];h[j>>3]=F-G;h[k>>3]=I+H;h[m>>3]=G+F;E=f+80|0;c[E>>2]=c[v>>2];c[E+4>>2]=c[v+4>>2];c[E+8>>2]=c[v+8>>2];c[E+12>>2]=c[v+12>>2];E=f+96|0;c[E>>2]=c[k>>2];c[E+4>>2]=c[k+4>>2];c[E+8>>2]=c[k+8>>2];c[E+12>>2]=c[k+12>>2];c[u>>2]=c[v>>2];c[u+4>>2]=c[v+4>>2];c[u+8>>2]=c[v+8>>2];c[u+12>>2]=c[v+12>>2];$E(x,u);c[u>>2]=c[k>>2];c[u+4>>2]=c[k+4>>2];c[u+8>>2]=c[k+8>>2];c[u+12>>2]=c[k+12>>2];$E(x,u);break}case 3:case 2:{E=f+80|0;J=f+8|0;aF(A,c[J+4>>2]|0,c[J>>2]|0,x);c[E>>2]=c[A>>2];c[E+4>>2]=c[A+4>>2];c[E+8>>2]=c[A+8>>2];c[E+12>>2]=c[A+12>>2];c[E+16>>2]=c[A+16>>2];c[E+20>>2]=c[A+20>>2];c[E+24>>2]=c[A+24>>2];c[E+28>>2]=c[A+28>>2];break}case 5:case 4:{J=f+80|0;E=f+8|0;aF(B,c[E+4>>2]|0,c[E>>2]|0,x);c[J>>2]=c[B>>2];c[J+4>>2]=c[B+4>>2];c[J+8>>2]=c[B+8>>2];c[J+12>>2]=c[B+12>>2];c[J+16>>2]=c[B+16>>2];c[J+20>>2]=c[B+20>>2];c[J+24>>2]=c[B+24>>2];c[J+28>>2]=c[B+28>>2];break}case 6:{J=f+80|0;E=f+8|0;aF(C,c[E+4>>2]|0,c[E>>2]|0,x);c[J>>2]=c[C>>2];c[J+4>>2]=c[C+4>>2];c[J+8>>2]=c[C+8>>2];c[J+12>>2]=c[C+12>>2];c[J+16>>2]=c[C+16>>2];c[J+20>>2]=c[C+20>>2];c[J+24>>2]=c[C+24>>2];c[J+28>>2]=c[C+28>>2];break}case 7:{J=f+112|0;c[J>>2]=uH(56)|0;E=n1(c[f+40>>2]|0)|0;K=c[J>>2]|0;c[K>>2]=E;a[K+48>>0]=a[97003+(c[f+24>>2]|0)>>0]|0;c[y>>2]=e;h[n>>3]=g;c[o>>2]=c[o>>2]&-128|d&127;K=c[p>>2]|0;K=nb[c[K>>2]&63](K,y,1)|0;E=c[J>>2]|0;c[E+4>>2]=K;wL(u,s,E);bF(w,+h[f+8>>3],+h[f+16>>3],c[J>>2]|0);J=f+80|0;c[J>>2]=c[w>>2];c[J+4>>2]=c[w+4>>2];c[J+8>>2]=c[w+8>>2];c[J+12>>2]=c[w+12>>2];c[J+16>>2]=c[w+16>>2];c[J+20>>2]=c[w+20>>2];c[J+24>>2]=c[w+24>>2];c[J+28>>2]=c[w+28>>2];c[u>>2]=c[w>>2];c[u+4>>2]=c[w+4>>2];c[u+8>>2]=c[w+8>>2];c[u+12>>2]=c[w+12>>2];$E(x,u);c[u>>2]=c[q>>2];c[u+4>>2]=c[q+4>>2];c[u+8>>2]=c[q+8>>2];c[u+12>>2]=c[q+12>>2];$E(x,u);if(!(c[r>>2]|0))c[r>>2]=106;break}case 10:{e=c[f+16>>2]|0;g=+h[f+8>>3];break}case 15:{d=c[f+8>>2]|0;break}default:{}}f=f+120|0;i=i+1|0}c[b>>2]=c[x>>2];c[b+4>>2]=c[x+4>>2];c[b+8>>2]=c[x+8>>2];c[b+12>>2]=c[x+12>>2];c[b+16>>2]=c[x+16>>2];c[b+20>>2]=c[x+20>>2];c[b+24>>2]=c[x+24>>2];c[b+28>>2]=c[x+28>>2]}l=D;return}function $E(a,b){a=a|0;b=b|0;var c=0.0,d=0;c=+h[b>>3];d=a+16|0;if(c>+h[d>>3])h[d>>3]=c;if(c<+h[a>>3])h[a>>3]=c;c=+h[b+8>>3];b=a+24|0;if(c>+h[b>>3])h[b>>3]=c;b=a+8|0;if(c<+h[b>>3])h[b>>3]=c;return}function aF(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0;r=l;l=l+48|0;k=r+32|0;n=r;f=+h[b>>3];o=n+16|0;h[o>>3]=f;h[n>>3]=f;f=+h[b+8>>3];p=n+24|0;h[p>>3]=f;m=n+8|0;h[m>>3]=f;j=1;while(1){if((j|0)>=(d|0))break;i=b+24|0;f=+h[i>>3];if(!(f<+h[n>>3])){if(f>+h[o>>3]){g=o;q=5}}else{g=n;q=5}if((q|0)==5){q=0;h[g>>3]=f}f=+h[b+32>>3];if(!(f<+h[m>>3])){if(f>+h[p>>3]){b=o;q=8}}else{b=n;q=8}if((q|0)==8){q=0;h[b+8>>3]=f}j=j+1|0;b=i}c[k>>2]=c[n>>2];c[k+4>>2]=c[n+4>>2];c[k+8>>2]=c[n+8>>2];c[k+12>>2]=c[n+12>>2];$E(e,k);c[k>>2]=c[o>>2];c[k+4>>2]=c[o+4>>2];c[k+8>>2]=c[o+8>>2];c[k+12>>2]=c[o+12>>2];$E(e,k);c[a>>2]=c[n>>2];c[a+4>>2]=c[n+4>>2];c[a+8>>2]=c[n+8>>2];c[a+12>>2]=c[n+12>>2];c[a+16>>2]=c[n+16>>2];c[a+20>>2]=c[n+20>>2];c[a+24>>2]=c[n+24>>2];c[a+28>>2]=c[n+28>>2];l=r;return}function bF(b,c,d,e){b=b|0;c=+c;d=+d;e=e|0;var f=0.0,g=0,i=0,j=0,k=0.0,m=0,n=0;n=l;l=l+16|0;i=n+8|0;j=n;f=+h[e+32>>3];k=+h[e+40>>3];switch(a[e+48>>0]|0){case 108:{h[i>>3]=c;f=f+c;g=j;m=5;break}case 110:{f=f*.5;h[i>>3]=c-f;f=f+c;g=j;m=5;break}case 114:{h[j>>3]=c;f=c-f;g=i;m=5;break}default:{c=0.0;f=0.0}}if((m|0)==5){h[g>>3]=f;c=+h[i>>3];f=+h[j>>3]}d=+h[e+16>>3]+d;h[b>>3]=c;h[b+8>>3]=d-k;h[b+16>>3]=f;h[b+24>>3]=d;l=n;return}function cF(a){a=a|0;if((c[a>>2]|0)==7)mH(c[a+112>>2]|0,1);return}function dF(b,d){b=b|0;d=d|0;var e=0,f=0.0,g=0.0,i=0.0,j=0,k=0,m=0,n=0.0;m=l;l=l+16|0;k=m;j=c[b+152>>2]|0;n=+h[b+432>>3];i=+h[b+352>>3]*.013888888888888888;f=i*n;h[b+488>>3]=f;g=+h[b+440>>3];i=i*g;h[b+496>>3]=i;h[b+520>>3]=n*.013888888888888888;e=b+528|0;h[e>>3]=g*.013888888888888888;if(j&4096|c[46369]|0)h[e>>3]=g*-.013888888888888888;e=(c[b+360>>2]|0)==0;n=+((c[b+448>>2]|0)>>>0);g=+((c[b+452>>2]|0)>>>0);h[b+368>>3]=(e?n:g)/f;h[b+376>>3]=(e?g:n)/i;cP(b,NL(d,nx(d,0,98496,0)|0,191979)|0);c[b+160>>2]=0;eF(b,d);if(j&2|0)fF(b,d);e=Sy(d)|0;while(1){if(!e)break;a[(c[e+16>>2]|0)+116>>0]=0;e=Ty(d,e)|0}gF(b,k);while(1){if(!((hF(b)|0)<<24>>24))break;if((iF(b)|0)>1)DO(b);jF(b);while(1){if(!((kF(b)|0)<<24>>24))break;lF(b,d);mF(b)}if((iF(b)|0)>1)EO(b);nF(b,k)}oF(b);l=m;return}function eF(a,b){a=a|0;b=b|0;var d=0;d=NE(a)|0;c[d+4>>2]=0;c[d+8>>2]=b;c[d+12>>2]=0;nG(a,c[(c[b+16>>2]|0)+12>>2]|0,b);zO(a,b);return}function fF(b,c){b=b|0;c=c|0;var d=0,e=0,f=0,g=0;WO(b,131718);d=xx(c,137895)|0;if(d|0?a[d>>0]|0:0)WO(b,d);d=xx(c,98420)|0;if(d|0?a[d>>0]|0:0)UO(b,d);zG(b,c);g=Sy(c)|0;while(1){if(!g)break;d=xx(g,137741)|0;if(d|0?a[d>>0]|0:0)UO(b,d);d=xx(g,134647)|0;if(d|0?a[d>>0]|0:0)WO(b,d);d=xx(g,98392)|0;do if(d|0?a[d>>0]|0:0){if(!(A$(d,58)|0)){UO(b,d);break}e=n1(d)|0;d=e;while(1){d=k1(d,104958)|0;if(!d)break;if(!(a[d>>0]|0)){d=0;continue}UO(b,d);d=0}D_(e)}while(0);d=xx(g,98420)|0;if(d|0?a[d>>0]|0:0)UO(b,d);f=Ex(c,g)|0;while(1){if(!f)break;d=xx(f,137741)|0;do if(d|0?a[d>>0]|0:0){if(!(A$(d,58)|0)){UO(b,d);break}e=n1(d)|0;d=e;while(1){d=k1(d,104958)|0;if(!d)break;if(!(a[d>>0]|0)){d=0;continue}UO(b,d);d=0}D_(e)}while(0);d=xx(f,98420)|0;if(d|0?a[d>>0]|0:0)UO(b,d);f=Gx(c,f)|0}g=Ty(c,g)|0}return}function gF(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=l;l=l+16|0;e=i+8|0;g=i;h=c[a>>2]|0;d=c[h+312>>2]|0;f=a+156|0;c[f>>2]=d;h=c[h+316>>2]|0;if(!h)if((d|0)>1?(c[a+152>>2]&64|0)==0:0){c[e>>2]=c[a+52>>2];Pw(0,97541,e)|0;c[f>>2]=1;e=1;d=0}else{e=1;d=0}else{d=h+4|0;if((c[h>>2]|0)>1?(c[a+152>>2]&64|0)==0:0){c[g>>2]=c[a+52>>2];Pw(0,97541,g)|0;c[h+8>>2]=(c[f>>2]|0)+1}e=c[d>>2]|0;d=h+8|0}c[a+160>>2]=e;c[b>>2]=d;l=i;return}function hF(a){a=a|0;return (c[a+160>>2]|0)<=(c[a+156>>2]|0)|0}function iF(a){a=a|0;var b=0;b=c[(c[a>>2]|0)+316>>2]|0;return c[((b|0)==0?a+156|0:b)>>2]|0}function jF(a){a=a|0;var b=0,d=0;d=a+172|0;b=c[d+4>>2]|0;a=a+196|0;c[a>>2]=c[d>>2];c[a+4>>2]=b;return}function kF(a){a=a|0;var b=0,d=0;d=c[a+196>>2]|0;if(((d|0)>-1?(d|0)<(c[a+164>>2]|0):0)?(b=c[a+200>>2]|0,(b|0)>-1):0)a=(b|0)<(c[a+168>>2]|0)&1;else a=0;return a|0}function lF(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;p=l;l=l+176|0;k=p;f=p+48|0;m=p+32|0;n=c[d+16>>2]|0;o=c[d+152>>2]|0;if((c[d+160>>2]|0)<=1?(c[d+196>>2]|0)<=0:0)h=0;else{Tw(m,128,f);g=n+212|0;h=c[g>>2]|0;RE(d,m);Ww(m,h)|0;i=m+4|0;f=c[i>>2]|0;if(f>>>0>=(c[m+8>>2]|0)>>>0){Uw(m,1)|0;f=c[i>>2]|0}a[f>>0]=0;f=c[m>>2]|0;c[i>>2]=f;c[g>>2]=f}qQ(xx(e,97006)|0);qF(d);BO(d);UO(d,134232);WO(d,131718);do if(o&4259840|0){if((c[n+208>>2]|0)==0?(b[n+260>>1]&1)==0:0)break;if(o&655360){i=o&131072;c[n+264>>2]=i>>>16^2;f=uH((i>>>12^32)+32|0)|0;g=d+288|0;c[f>>2]=c[g>>2];c[f+4>>2]=c[g+4>>2];c[f+8>>2]=c[g+8>>2];c[f+12>>2]=c[g+12>>2];g=f+16|0;q=d+304|0;c[g>>2]=c[q>>2];c[g+4>>2]=c[q+4>>2];c[g+8>>2]=c[q+8>>2];c[g+12>>2]=c[q+12>>2];if(!i){WG(f);g=4}else g=2}else{f=0;g=0}if(!(o&8192))yO(d,f,f,g)|0;c[n+272>>2]=f;c[n+268>>2]=g}while(0);if(o&32768|0?(j=c[(c[e+16>>2]|0)+12>>2]|0,j|0):0)c[n+192>>2]=c[j>>2];g=(o&4|0)!=0;do if(!g){f=n+208|0;if((c[f>>2]|0)==0?(b[n+260>>1]&1)==0:0)break;q=d+256|0;c[k>>2]=c[q>>2];c[k+4>>2]=c[q+4>>2];c[k+8>>2]=c[q+8>>2];c[k+12>>2]=c[q+12>>2];c[k+16>>2]=c[q+16>>2];c[k+20>>2]=c[q+20>>2];c[k+24>>2]=c[q+24>>2];c[k+28>>2]=c[q+28>>2];XE(d,k);PO(d,c[f>>2]|0,c[n+228>>2]|0,c[n+244>>2]|0,c[n+212>>2]|0)}while(0);rF(d,e);f=c[(c[e+16>>2]|0)+12>>2]|0;if(f|0)oH(d,4,f);do if(!g){if((c[n+208>>2]|0)==0?(b[n+260>>1]&1)==0:0)break;QO(d)}while(0);sF(d,e,o);CO(d);if(h|0){Xw(m);c[n+212>>2]=h}l=p;return}function mF(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;h=l;l=l+32|0;d=h+24|0;b=h+16|0;j=h+8|0;f=h;g=a+196|0;i=a+188|0;c[b>>2]=c[g>>2];c[b+4>>2]=c[g+4>>2];c[d>>2]=c[i>>2];c[d+4>>2]=c[i+4>>2];pF(j,b,d);i=c[j+4>>2]|0;e=g;c[e>>2]=c[j>>2];c[e+4>>2]=i;if(!((kF(a)|0)<<24>>24)){e=a+180|0;if(!(c[a+184>>2]|0))c[a+200>>2]=c[a+176>>2];else c[g>>2]=c[a+172>>2];c[b>>2]=c[g>>2];c[b+4>>2]=c[g+4>>2];c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];pF(f,b,d);i=c[f+4>>2]|0;j=g;c[j>>2]=c[f>>2];c[j+4>>2]=i}l=h;return}function nF(a,b){a=a|0;b=b|0;var d=0;d=c[b>>2]|0;if(!d){d=a+160|0;c[d>>2]=(c[d>>2]|0)+1}else{c[a+160>>2]=c[d>>2];c[b>>2]=d+4}return}function oF(a){a=a|0;AO(a);OE(a);return}function pF(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=(c[d+4>>2]|0)+(c[b+4>>2]|0)|0;c[a>>2]=(c[d>>2]|0)+(c[b>>2]|0);c[a+4>>2]=e;return}function qF(a){a=a|0;var b=0.0,d=0.0,e=0.0,f=0,g=0.0,i=0,j=0,k=0,m=0,n=0,o=0.0,p=0,q=0,r=0,s=0,t=0,u=0.0;t=l;l=l+48|0;n=t+32|0;f=t+24|0;j=t+8|0;k=t+16|0;m=t;r=a+196|0;q=c[r>>2]|0;r=c[r+4>>2]|0;p=f;c[p>>2]=q;c[p+4>>2]=r;p=a+164|0;i=c[p>>2]|0;p=c[p+4>>2]|0;s=j;c[s>>2]=i;c[s+4>>2]=p;s=a+360|0;if(!(c[s>>2]|0)){k=q;j=r}else{c[n>>2]=c[f>>2];c[n+4>>2]=c[f+4>>2];yG(k,n);r=k;k=c[r>>2]|0;r=c[r+4>>2]|0;p=f;c[p>>2]=k;c[p+4>>2]=r;c[n>>2]=c[j>>2];c[n+4>>2]=c[j+4>>2];yG(m,n);p=m;i=c[p>>2]|0;p=c[p+4>>2]|0;c[j>>2]=i;c[j+4>>2]=p;j=r}d=+h[a+320>>3];g=d*+(k|0)-+h[a+240>>3];h[a+288>>3]=g;e=+h[a+328>>3];o=e*+(j|0)-+h[a+248>>3];h[a+296>>3]=o;h[a+304>>3]=d+g;h[a+312>>3]=e+o;f=a+472|0;if(!(c[(c[a+12>>2]|0)+28>>2]|0)){r=a+456|0;c[f>>2]=c[r>>2];c[f+4>>2]=c[r+4>>2];c[f+8>>2]=c[r+8>>2];c[f+12>>2]=c[r+12>>2]}else{q=a+456|0;c[f>>2]=c[((c[f>>2]|0)<(c[q>>2]|0)?f:q)>>2];r=a+476|0;c[r>>2]=c[((c[r>>2]|0)<(c[a+460>>2]|0)?f:q)+4>>2];r=a+480|0;c[r>>2]=c[((c[r>>2]|0)>(c[a+464>>2]|0)?f:q)+8>>2];r=a+484|0;c[r>>2]=c[((c[r>>2]|0)>(c[a+468>>2]|0)?f:q)+12>>2]}m=c[a+152>>2]|0;b=+h[a+336>>3];if(!(m&128)){b=(+(k|0)-+(i|0)*.5)*d+b;h[a+256>>3]=b;g=(+(j|0)-+(p|0)*.5)*e+ +h[a+344>>3];o=g;d=d+b;g=g+e}else{d=+h[a+368>>3]*.5;e=b-d;h[a+256>>3]=e;g=+h[a+344>>3];u=+h[a+376>>3]*.5;o=g-u;d=d+b;g=u+g;b=e}h[a+264>>3]=o;h[a+272>>3]=d;h[a+280>>3]=g;if(!(c[s>>2]|0)){e=+h[a+352>>3];h[a+504>>3]=+h[a+384>>3]/e-b;if(!(m&4096|c[46369])){d=+h[a+392>>3]/e;b=o}else{d=-g;b=+h[a+392>>3]/e}h[a+512>>3]=d-b}else{f=a+384|0;e=+h[a+352>>3];h[a+512>>3]=-g-+h[a+392>>3]/e;if(!(m&4096|c[46369]))d=+h[f>>3]/e;else{d=-d;b=+h[f>>3]/e}h[a+504>>3]=d-b}l=t;return}function rF(b,d){b=b|0;d=d|0;var e=0,f=0.0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=l;l=l+48|0;q=s;o=s+40|0;p=s+36|0;r=s+32|0;e=xx(d,137895)|0;if(!e){j=1;e=134116}else{i=(a[e>>0]|0)==0;j=i&1;e=i?134116:e}h=c[b+152>>2]|0;i=(a[e>>0]|0)==116;if(!(h&256))if(i){m=(b$(e,134297)|0)==0;k=m?134116:e;m=m?1:j;n=8}else{k=e;m=j;n=8}else if(!(i?!(b$(e,134297)|0):0)){k=e;m=j;n=8}if((n|0)==8?!((m|0)!=0&(h&33554432|0)!=0):0)if(!((uG(k,o,p)|0)<<24>>24)){WO(b,k);UO(b,134297);r=b+256|0;c[q>>2]=c[r>>2];c[q+4>>2]=c[r+4>>2];c[q+8>>2]=c[r+8>>2];c[q+12>>2]=c[r+12>>2];c[q+16>>2]=c[r+16>>2];c[q+20>>2]=c[r+20>>2];c[q+24>>2]=c[r+24>>2];c[q+28>>2]=c[r+28>>2];$O(b,q,1)}else{c[r>>2]=0;i=c[o>>2]|0;WO(b,i);UO(b,134297);tG(d,r)|0;e=c[o+4>>2]|0;h=KL(d,c[46373]|0,0,0)|0;f=+g[p>>2];if(!e)XO(b,134232,h,f);else XO(b,e,h,f);r=(c[r>>2]|0)>>>1&1|2;p=b+256|0;c[q>>2]=c[p>>2];c[q+4>>2]=c[p+4>>2];c[q+8>>2]=c[p+8>>2];c[q+12>>2]=c[p+12>>2];c[q+16>>2]=c[p+16>>2];c[q+20>>2]=c[p+20>>2];c[q+24>>2]=c[p+24>>2];c[q+28>>2]=c[p+28>>2];$O(b,q,r);D_(i)}e=c[(c[(c[d+16>>2]|0)+8>>2]|0)+88>>2]|0;if(e|0)wG(b,e);l=s;return}function sF(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;g=(c[a>>2]|0)+28|0;c[g>>2]=(c[g>>2]|0)+1;g=(d&4|0)!=0;if(!g)tF(a,b,d);a:do if(!(d&1)){if(d&16|0){JO(a);f=Sy(b)|0;while(1){if(!f)break;e=Ex(b,f)|0;while(1){if(!e)break;vF(a,e);e=Gx(b,e)|0}f=Ty(b,f)|0}KO(a);HO(a);e=Sy(b)|0;while(1){if(!e)break;uF(a,e);e=Ty(b,e)|0}IO(a);break}if(!(d&8)){f=Sy(b)|0;while(1){if(!f)break a;uF(a,f);e=Ex(b,f)|0;while(1){if(!e)break;uF(a,c[((c[e>>2]&3|0)==2?e:e+-48|0)+40>>2]|0);vF(a,e);e=Gx(b,e)|0}f=Ty(b,f)|0}}HO(a);e=Sy(b)|0;while(1){if(!e)break;if((wF(b,e)|0)<<24>>24)uF(a,e);e=Ty(b,e)|0}IO(a);JO(a);f=Sy(b)|0;while(1){if(!f)break;e=Ex(b,f)|0;while(1){if(!e)break;if((xF(b,e)|0)<<24>>24)vF(a,e);e=Gx(b,e)|0}f=Ty(b,f)|0}KO(a)}else{HO(a);e=Sy(b)|0;while(1){if(!e)break;uF(a,e);e=Ty(b,e)|0}IO(a);JO(a);f=Sy(b)|0;while(1){if(!f)break;e=Ex(b,f)|0;while(1){if(!e)break;vF(a,e);e=Gx(b,e)|0}f=Ty(b,f)|0}KO(a)}while(0);if(g)tF(a,b,d);return}function tF(e,f,i){e=e|0;f=f|0;i=i|0;var j=0,k=0,m=0,n=0,o=0.0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0;P=l;l=l+128|0;w=P+72|0;N=P+64|0;H=P+112|0;I=P;J=P+104|0;K=f+16|0;L=(i&4|0)!=0;M=e+16|0;x=I+32|0;y=I+16|0;A=I+8|0;B=I+24|0;C=I+48|0;D=I+40|0;E=I+56|0;F=(i&8|0)==0;G=J+4|0;v=1;while(1){j=c[K>>2]|0;if((v|0)>(c[j+180>>2]|0))break;u=c[(c[j+184>>2]|0)+(v<<2)>>2]|0;if((rG(e,u)|0)<<24>>24){if(L)tF(e,u,i);sG(e,u);r=c[M>>2]|0;s=r+208|0;if(!(c[s>>2]|0))t=(b[r+260>>1]&1)!=0;else t=1;qQ(xx(u,97006)|0);if(!(L|t^1)){q=(c[u+16>>2]|0)+16|0;c[w>>2]=c[q>>2];c[w+4>>2]=c[q+4>>2];c[w+8>>2]=c[q+8>>2];c[w+12>>2]=c[q+12>>2];c[w+16>>2]=c[q+16>>2];c[w+20>>2]=c[q+20>>2];c[w+24>>2]=c[q+24>>2];c[w+28>>2]=c[q+28>>2];XE(e,w);PO(e,c[s>>2]|0,c[r+228>>2]|0,c[r+244>>2]|0,c[r+212>>2]|0)}c[H>>2]=0;j=tG(u,H)|0;if(!j)p=0;else{YO(e,j);p=c[H>>2]&1}q=u+16|0;j=d[(c[q>>2]|0)+112>>0]|0;do if(!(j&1)){if(j&2|0){j=OL(u,0,103230)|0;k=OL(u,0,103238)|0;O=29;break}if(j&8|0){j=OL(u,0,103246)|0;k=OL(u,0,103254)|0;O=29;break}if(j&4|0){j=OL(u,0,103262)|0;k=OL(u,0,103270)|0;O=29;break}j=xx(u,137741)|0;if(!j)k=0;else k=(a[j>>0]|0)==0?0:j;j=xx(u,134647)|0;if(!j)j=k;else j=(a[j>>0]|0)==0?k:j;m=xx(u,98392)|0;if(m)k=(a[m>>0]|0)==0?k:m;if(!((p|0)!=0&(k|0)!=0)){m=xx(u,137895)|0;if(m|0?a[m>>0]|0:0){k=m;O=29;break}j=(j|0)==0?134232:j;n=(k|0)==0?131718:k;c[J>>2]=0;if(!p)k=0;else O=31}else O=29}else{j=OL(u,0,103214)|0;k=OL(u,0,103222)|0;O=29}while(0);if((O|0)==29){c[J>>2]=0;j=(j|0)==0?134232:j;n=(k|0)==0?131718:k;O=31}if((O|0)==31){O=0;if(!((uG(n,J,w)|0)<<24>>24)){WO(e,n);k=1}else{WO(e,c[J>>2]|0);k=c[G>>2]|0;m=KL(u,c[46373]|0,0,0)|0;o=+g[w>>2];if(!k)XO(e,134232,m,o);else XO(e,k,m,o);k=(c[H>>2]|0)>>>1&1|2}}m=c[46372]|0;if((m|0?(z=yx(u,m)|0,z|0):0)?a[z>>0]|0:0)fP(e,+LL(u,c[46372]|0,1.0,0.0));p=c[H>>2]|0;do if(p&4){m=KL(u,c[46371]|0,1,0)|0;if(m|k|0){n=c[q>>2]|0;Q=n+16|0;c[I>>2]=c[Q>>2];c[I+4>>2]=c[Q+4>>2];c[I+8>>2]=c[Q+8>>2];c[I+12>>2]=c[Q+12>>2];n=n+32|0;c[x>>2]=c[n>>2];c[x+4>>2]=c[n+4>>2];c[x+8>>2]=c[n+8>>2];c[x+12>>2]=c[n+12>>2];h[y>>3]=+h[x>>3];h[B>>3]=+h[A>>3];h[C>>3]=+h[I>>3];h[E>>3]=+h[D>>3];if(!m)UO(e,134297);else UO(e,j);EJ(e,I,4,p,k)}}else{if(!(p&64)){if(KL(u,c[46371]|0,1,0)|0){UO(e,j);Q=(c[q>>2]|0)+16|0;c[w>>2]=c[Q>>2];c[w+4>>2]=c[Q+4>>2];c[w+8>>2]=c[Q+8>>2];c[w+12>>2]=c[Q+12>>2];c[w+16>>2]=c[Q+16>>2];c[w+20>>2]=c[Q+20>>2];c[w+24>>2]=c[Q+24>>2];c[w+28>>2]=c[Q+28>>2];$O(e,w,k);break}if(!k)break;UO(e,134297);Q=(c[q>>2]|0)+16|0;c[w>>2]=c[Q>>2];c[w+4>>2]=c[Q+4>>2];c[w+8>>2]=c[Q+8>>2];c[w+12>>2]=c[Q+12>>2];c[w+16>>2]=c[Q+16>>2];c[w+20>>2]=c[Q+20>>2];c[w+24>>2]=c[Q+24>>2];c[w+28>>2]=c[Q+28>>2];$O(e,w,k);break}Q=c[q>>2]|0;p=Q+16|0;c[I>>2]=c[p>>2];c[I+4>>2]=c[p+4>>2];c[I+8>>2]=c[p+8>>2];c[I+12>>2]=c[p+12>>2];Q=Q+32|0;c[x>>2]=c[Q>>2];c[x+4>>2]=c[Q+4>>2];c[x+8>>2]=c[Q+8>>2];c[x+12>>2]=c[Q+12>>2];h[y>>3]=+h[x>>3];h[B>>3]=+h[A>>3];h[C>>3]=+h[I>>3];h[E>>3]=+h[D>>3];if(!(KL(u,c[46371]|0,1,0)|0))UO(e,134297);else UO(e,j);if((WE(e,I,n,0)|0)>1){c[N>>2]=ry(u)|0;Pw(3,97374,N)|0}Q=(c[q>>2]|0)+16|0;c[w>>2]=c[Q>>2];c[w+4>>2]=c[Q+4>>2];c[w+8>>2]=c[Q+8>>2];c[w+12>>2]=c[Q+12>>2];c[w+16>>2]=c[Q+16>>2];c[w+20>>2]=c[Q+20>>2];c[w+24>>2]=c[Q+24>>2];c[w+28>>2]=c[Q+28>>2];$O(e,w,0)}while(0);D_(c[J>>2]|0);j=c[(c[q>>2]|0)+12>>2]|0;if(j|0)oH(e,5,j);if(t){if(L){Q=(c[q>>2]|0)+16|0;c[w>>2]=c[Q>>2];c[w+4>>2]=c[Q+4>>2];c[w+8>>2]=c[Q+8>>2];c[w+12>>2]=c[Q+12>>2];c[w+16>>2]=c[Q+16>>2];c[w+20>>2]=c[Q+20>>2];c[w+24>>2]=c[Q+24>>2];c[w+28>>2]=c[Q+28>>2];XE(e,w);PO(e,c[s>>2]|0,c[r+228>>2]|0,c[r+244>>2]|0,c[r+212>>2]|0)}QO(e)}a:do if(!F){k=Sy(u)|0;while(1){if(!k)break a;uF(e,k);j=Ex(u,k)|0;while(1){if(!j)break;vF(e,j);j=Gx(u,j)|0}k=Ty(u,k)|0}}while(0);vG(e,f);if(!L)tF(e,u,i)}v=v+1|0}l=P;return}function uF(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;j=l;l=l+32|0;e=j;h=c[b>>2]|0;i=d+16|0;a:do if(((c[(c[i>>2]|0)+8>>2]|0?(jG(b,ez(d)|0,d)|0)<<24>>24:0)?(k=b+256|0,c[e>>2]=c[k>>2],c[e+4>>2]=c[k+4>>2],c[e+8>>2]=c[k+8>>2],c[e+12>>2]=c[k+12>>2],c[e+16>>2]=c[k+16>>2],c[e+20>>2]=c[k+20>>2],c[e+24>>2]=c[k+24>>2],c[e+28>>2]=c[k+28>>2],(kG(d,e)|0)<<24>>24):0)?(f=(c[i>>2]|0)+116|0,g=c[h+28>>2]|0,(g|0)!=(a[f>>0]|0)):0){a[f>>0]=g;cP(b,ry(d)|0);e=NL(d,c[46399]|0,191979)|0;if(a[e>>0]|0)cP(b,e);e=NL(d,c[46387]|0,191979)|0;b:do if(a[e>>0]|0){AF(e)|0;e=185144;while(1){f=e;e=e+4|0;f=c[f>>2]|0;if(!f)break b;if((a[f>>0]|0)!=105)continue;if(!(b$(f,131253)|0))break a}}while(0);lG(b,d);ub[c[(c[(c[(c[i>>2]|0)+8>>2]|0)+4>>2]|0)+20>>2]&63](b,d);e=c[(c[i>>2]|0)+108>>2]|0;if(e|0?a[e+81>>0]|0:0)oH(b,10,e);mG(b)}while(0);l=j;return}function vF(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;h=l;l=l+32|0;g=h;e=b+256|0;c[g>>2]=c[e>>2];c[g+4>>2]=c[e+4>>2];c[g+8>>2]=c[e+8>>2];c[g+12>>2]=c[e+12>>2];c[g+16>>2]=c[e+16>>2];c[g+20>>2]=c[e+20>>2];c[g+24>>2]=c[e+24>>2];c[g+28>>2]=c[e+28>>2];a:do if((yF(d,g)|0)<<24>>24?(f=d+-48|0,(zF(b,d)|0)<<24>>24):0){i=d+48|0;e=W_(ry(c[((c[d>>2]&3|0)==3?d:i)+40>>2]|0)|0)|0;e=C_(e+3+(W_(ry(c[((c[d>>2]&3|0)==2?d:f)+40>>2]|0)|0)|0)|0)|0;b0(e,ry(c[((c[d>>2]&3|0)==3?d:i)+40>>2]|0)|0)|0;i=(ey(ez(c[((c[d>>2]&3|0)==2?d:f)+40>>2]|0)|0)|0)==0;g=e+(W_(e)|0)|0;if(i){a[g>>0]=a[138665]|0;a[g+1>>0]=a[138666]|0;a[g+2>>0]=a[138667]|0}else{a[g>>0]=a[134656]|0;a[g+1>>0]=a[134657]|0;a[g+2>>0]=a[134658]|0}p1(e,ry(c[((c[d>>2]&3|0)==2?d:f)+40>>2]|0)|0)|0;cP(b,e);D_(e);e=NL(d,c[46421]|0,191979)|0;if(a[e>>0]|0)cP(b,e);e=NL(d,c[46415]|0,191979)|0;b:do if(!(a[e>>0]|0))e=0;else{AF(e)|0;e=185144;while(1){f=e;e=e+4|0;f=c[f>>2]|0;if(!f){e=185144;break b}if((a[f>>0]|0)!=105)continue;if(!(b$(f,131253)|0))break a}}while(0);BF(b,d,e);CF(b,d,e);DF(b)}while(0);l=h;return}function wF(a,b){a=a|0;b=b|0;var d=0,e=0;d=a+16|0;a=1;while(1){e=c[d>>2]|0;if((a|0)>(c[e+180>>2]|0)){a=1;break}if(!(oz(c[(c[e+184>>2]|0)+(a<<2)>>2]|0,b)|0))a=a+1|0;else{a=0;break}}return a|0}function xF(a,b){a=a|0;b=b|0;var d=0,e=0;d=a+16|0;a=1;while(1){e=c[d>>2]|0;if((a|0)>(c[e+180>>2]|0)){a=1;break}if(!(oz(c[(c[e+184>>2]|0)+(a<<2)>>2]|0,b)|0))a=a+1|0;else{a=0;break}}return a|0}function yF(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;j=l;l=l+64|0;i=j+32|0;f=j;g=b+16|0;b=c[g>>2]|0;e=c[b+8>>2]|0;if((e|0)!=0?(e=e+8|0,c[f>>2]=c[e>>2],c[f+4>>2]=c[e+4>>2],c[f+8>>2]=c[e+8>>2],c[f+12>>2]=c[e+12>>2],c[f+16>>2]=c[e+16>>2],c[f+20>>2]=c[e+20>>2],c[f+24>>2]=c[e+24>>2],c[f+28>>2]=c[e+28>>2],c[i>>2]=c[d>>2],c[i+4>>2]=c[d+4>>2],c[i+8>>2]=c[d+8>>2],c[i+12>>2]=c[d+12>>2],c[i+16>>2]=c[d+16>>2],c[i+20>>2]=c[d+20>>2],c[i+24>>2]=c[d+24>>2],c[i+28>>2]=c[d+28>>2],(iG(f,i)|0)!=0):0)b=1;else h=3;do if((h|0)==3){e=c[b+96>>2]|0;if(e){c[i>>2]=c[d>>2];c[i+4>>2]=c[d+4>>2];c[i+8>>2]=c[d+8>>2];c[i+12>>2]=c[d+12>>2];c[i+16>>2]=c[d+16>>2];c[i+20>>2]=c[d+20>>2];c[i+24>>2]=c[d+24>>2];c[i+28>>2]=c[d+28>>2];if((VM(e,i)|0)<<24>>24){b=1;break}b=c[g>>2]|0}b=c[b+108>>2]|0;if((b|0?a[b+81>>0]|0:0)?(c[i>>2]=c[d>>2],c[i+4>>2]=c[d+4>>2],c[i+8>>2]=c[d+8>>2],c[i+12>>2]=c[d+12>>2],c[i+16>>2]=c[d+16>>2],c[i+20>>2]=c[d+20>>2],c[i+24>>2]=c[d+24>>2],c[i+28>>2]=c[d+28>>2],(VM(b,i)|0)<<24>>24):0){b=1;break}b=0}while(0);l=j;return b|0}function zF(b,d){b=b|0;d=d|0;var e=0,f=0;a:do if((c[b+156>>2]|0)>=2?(e=NL(d,c[46420]|0,191979)|0,(eG(b,e)|0)<<24>>24==0):0)if(!(a[e>>0]|0)){e=0;while(1){if((e|0)>=2){e=0;break a}f=(e|0)==1;f=NL(c[((c[d>>2]&3|0)==((f?2:3)|0)?d:d+((f?-1:1)*48|0)|0)+40>>2]|0,c[46397]|0,191979)|0;if(!(a[f>>0]|0)){e=1;break a}if(!((eG(b,f)|0)<<24>>24))e=e+1|0;else{e=1;break}}}else e=0;else e=1;while(0);return e|0}function AF(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;p=l;l=l+192|0;o=p+24|0;n=p+16|0;m=p+8|0;k=p;g=p+48|0;j=p+32|0;if(a[97256]|0){Tw(185408,128,191746);a[97256]=0}Tw(j,128,p+56|0);c[g>>2]=b;h=j+4|0;i=j+8|0;d=0;e=0;a:while(1){f=d;b:while(1)switch(cG(g,j)|0){case 0:{d=21;break a}case 40:if(!(f<<24>>24)){f=1;continue b}else{d=7;break a}case 41:if(!(f<<24>>24)){d=9;break a}else{f=0;continue b}default:break b}if(!(f<<24>>24)){if((e|0)==63){d=12;break}d=c[46353]|0;if(d>>>0>=(c[46354]|0)>>>0){Uw(185408,1)|0;d=c[46353]|0}c[46353]=d+1;a[d>>0]=0;c[185144+(e<<2)>>2]=c[46353];e=e+1|0}d=c[h>>2]|0;if(d>>>0>=(c[i>>2]|0)>>>0){Uw(j,1)|0;d=c[h>>2]|0}a[d>>0]=0;d=c[j>>2]|0;c[h>>2]=d;Ww(185408,d)|0;d=c[46353]|0;if(d>>>0>=(c[46354]|0)>>>0){Uw(185408,1)|0;d=c[46353]|0}c[46353]=d+1;a[d>>0]=0;d=f}do if((d|0)==7){c[k>>2]=b;Pw(1,97257,k)|0;c[46286]=0;Xw(j)}else if((d|0)==9){c[m>>2]=b;Pw(1,97291,m)|0;c[46286]=0;Xw(j)}else if((d|0)==12){c[n>>2]=b;Pw(0,97319,n)|0;c[46349]=0;Xw(j)}else if((d|0)==21){if(f<<24>>24){c[o>>2]=b;Pw(1,97342,o)|0;c[46286]=0;Xw(j);break}c[185144+(e<<2)>>2]=0;Xw(j);d=c[46353]|0;if(d>>>0>=(c[46354]|0)>>>0){Uw(185408,1)|0;d=c[46353]|0}a[d>>0]=0;c[46353]=c[46352]}while(0);l=p;return 185144}function BF(d,f,g){d=d|0;f=f|0;g=g|0;var i=0,j=0,k=0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;A=l;l=l+160|0;y=A+24|0;w=A+20|0;v=A+16|0;o=A;p=A+32|0;x=c[d+152>>2]|0;c[y>>2]=0;c[w>>2]=0;c[v>>2]=0;z=NE(d)|0;c[z+4>>2]=3;c[z+8>>2]=f;c[z+12>>2]=9;t=f+16|0;n=c[(c[t>>2]|0)+96>>2]|0;if((n|0?(a[n+82>>0]|0)==0:0)?(RL(xx(f,97079)|0,0)|0)<<24>>24:0){n=z+260|0;b[n>>1]=b[n>>1]|512}if(g|0?c[(c[t>>2]|0)+8>>2]|0:0)YO(d,g);g=c[46436]|0;if((g|0?(i=yx(f,g)|0,i|0):0)?a[i>>0]|0:0)fP(d,+LL(f,c[46436]|0,1.0,0.0));do if(x&16777216|0){g=f+48|0;if((e[(c[(ez(c[((c[f>>2]&3|0)==3?f:g)+40>>2]|0)|0)+16>>2]|0)+178>>1]|0)>2){m=+h[(c[(c[(c[((c[f>>2]&3|0)==3?f:g)+40>>2]|0)+16>>2]|0)+132>>2]|0)+16>>3]*72.0;h[z+176>>3]=+(~~(m+(m>=0.0?.5:-.5))|0);m=+h[(c[(c[(c[((c[f>>2]&3|0)==2?f:f+-48|0)+40>>2]|0)+16>>2]|0)+132>>2]|0)+16>>3]*72.0;h[z+184>>3]=+(~~(m+(m>=0.0?.5:-.5))|0);break}else{n=z+176|0;c[n>>2]=0;c[n+4>>2]=0;c[n+8>>2]=0;c[n+12>>2]=0;break}}while(0);if(x&32768|0){n=c[t>>2]|0;g=c[n+96>>2]|0;if(!g)g=c[z+192>>2]|0;else{g=c[g>>2]|0;c[z+192>>2]=g}i=z+196|0;c[i>>2]=g;k=z+204|0;c[k>>2]=g;j=z+200|0;c[j>>2]=g;g=c[n+108>>2]|0;if(g|0)c[i>>2]=c[g>>2];g=c[n+104>>2]|0;if(g|0)c[j>>2]=c[g>>2];g=c[n+100>>2]|0;if(g|0)c[k>>2]=c[g>>2]}if(!(x&65536))j=0;else{Tw(o,128,p);c[z+212>>2]=pH(QE(d,f,o)|0,f)|0;Xw(o);g=xx(f,137973)|0;if((g|0)!=0?(a[g>>0]|0)!=0:0)q=31;else{g=xx(f,108395)|0;if((g|0)!=0?(a[g>>0]|0)!=0:0)q=31;else i=0}if((q|0)==31)i=pH(g,f)|0;g=xx(f,97092)|0;if((g|0)!=0?(a[g>>0]|0)!=0:0)q=36;else q=34;do if((q|0)==34){g=xx(f,97101)|0;if(g|0?a[g>>0]|0:0){q=36;break}if(i|0){g=n1(i)|0;q=39}}while(0);if((q|0)==36){g=pH(g,f)|0;q=39}if((q|0)==39)c[z+208>>2]=g;g=xx(f,97109)|0;if((g|0)!=0?(a[g>>0]|0)!=0:0)q=44;else q=42;do if((q|0)==42){g=xx(f,97119)|0;if(g|0?a[g>>0]|0:0){q=44;break}if(i|0){g=n1(i)|0;q=47}}while(0);if((q|0)==44){g=pH(g,f)|0;q=47}if((q|0)==47)c[z+216>>2]=g;g=xx(f,97128)|0;if((g|0)!=0?(a[g>>0]|0)!=0:0)q=52;else q=50;do if((q|0)==50){g=xx(f,97137)|0;if(g|0?a[g>>0]|0:0){q=52;break}if(i|0)c[z+220>>2]=n1(i)|0}while(0);if((q|0)==52){c[z+220>>2]=pH(g,f)|0;q=z+260|0;b[q>>1]=b[q>>1]|128}g=xx(f,97145)|0;if((g|0)!=0?(a[g>>0]|0)!=0:0)q=59;else q=57;do if((q|0)==57){g=xx(f,97154)|0;if(g|0?a[g>>0]|0:0){q=59;break}if(i|0)c[z+224>>2]=n1(i)|0}while(0);if((q|0)==59){c[z+224>>2]=pH(g,f)|0;q=z+260|0;b[q>>1]=b[q>>1]|256}j=i}do if(x&8388608){g=xx(f,138006)|0;if((g|0)!=0?(a[g>>0]|0)!=0:0)i=pH(g,f)|0;else i=0;g=xx(f,97162)|0;if((g|0)!=0?(a[g>>0]|0)!=0:0){q=z+260|0;b[q>>1]=b[q>>1]|64;g=pH(g,f)|0;q=72}else q=70;if((q|0)==70?i|0:0){g=n1(i)|0;q=72}if((q|0)==72)c[z+244>>2]=g;g=xx(f,97173)|0;if((g|0)!=0?(a[g>>0]|0)!=0:0){g=pH(g,f)|0;q=78}else q=76;if((q|0)==76?i|0:0){g=n1(i)|0;q=78}if((q|0)==78)c[z+248>>2]=g;g=xx(f,97185)|0;if((g|0)!=0?(a[g>>0]|0)!=0:0){c[z+252>>2]=pH(g,f)|0;p=z+260|0;b[p>>1]=b[p>>1]|16}else q=82;if((q|0)==82?i|0:0)c[z+252>>2]=n1(i)|0;g=xx(f,97196)|0;if(g|0?a[g>>0]|0:0){q=z+260|0;b[q>>1]=b[q>>1]|32;c[z+256>>2]=pH(g,f)|0;break}if(i)c[z+256>>2]=n1(i)|0;else i=0}else i=0;while(0);do if(x&4194304|0){g=xx(f,138019)|0;if((g|0)!=0?(a[g>>0]|0)!=0:0)q=94;else q=92;do if((q|0)==92){g=xx(f,97207)|0;if(g|0?a[g>>0]|0:0){q=94;break}g=c[z+192>>2]|0;if(g|0)c[z+228>>2]=n1(g)|0}while(0);if((q|0)==94){p=WF(g,f)|0;c[z+228>>2]=pH(p,f)|0;D_(p);p=z+260|0;b[p>>1]=b[p>>1]|1}g=xx(f,97219)|0;if((g|0)!=0?(a[g>>0]|0)!=0:0){p=WF(g,f)|0;c[z+232>>2]=pH(p,f)|0;D_(p);p=z+260|0;b[p>>1]=b[p>>1]|8}else q=100;if((q|0)==100?(r=c[z+192>>2]|0,r|0):0)c[z+232>>2]=n1(r)|0;g=xx(f,97232)|0;if((g|0)!=0?(a[g>>0]|0)!=0:0){r=WF(g,f)|0;c[z+236>>2]=pH(r,f)|0;D_(r);r=z+260|0;b[r>>1]=b[r>>1]|2}else q=105;if((q|0)==105?(s=c[z+200>>2]|0,s|0):0)c[z+236>>2]=n1(s)|0;g=xx(f,97244)|0;if(g|0?a[g>>0]|0:0){s=WF(g,f)|0;c[z+240>>2]=pH(s,f)|0;D_(s);s=z+260|0;b[s>>1]=b[s>>1]|4;break}g=c[z+204>>2]|0;if(g|0)c[z+240>>2]=n1(g)|0}while(0);D_(j);D_(i);do if(x&4259840|0?(u=c[(c[t>>2]|0)+8>>2]|0,u|0):0){if(!(c[z+208>>2]|0)){if((x&524288|0)==0|(c[z+228>>2]|0)==0)break}else if(!(x&524288))break;m=+h[(c[d+16>>2]|0)+152>>3]*.5;m=m>2.0?m:2.0;i=c[u+4>>2]|0;g=0;while(1){if((g|0)>=(i|0))break;XF(y,w,v,(c[u>>2]|0)+(g*48|0)|0,m);g=g+1|0}j=c[v>>2]|0;c[z+276>>2]=j;k=c[w>>2]|0;c[z+280>>2]=k;if(!(x&8192)){g=0;i=0;while(1){if((i|0)>=(j|0))break;g=(c[k+(i<<2)>>2]|0)+g|0;i=i+1|0}y=c[y>>2]|0;yO(d,y,y,g)|0;g=y}else g=c[y>>2]|0;c[z+284>>2]=g;c[z+264>>2]=2;c[z+272>>2]=g;c[z+268>>2]=c[k>>2]}while(0);NO(d,f);g=c[z+208>>2]|0;if(!((g|0)==0?!(b[z+260>>1]&1):0))PO(d,g,c[z+228>>2]|0,c[z+244>>2]|0,c[z+212>>2]|0);l=A;return}function CF(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0.0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0.0,N=0.0,O=0,P=0,Q=0,R=0,S=0;P=l;l=l+240|0;L=P+224|0;K=P+208|0;x=P+128|0;w=P+112|0;O=P+64|0;C=P+48|0;D=P+32|0;E=P+16|0;F=P;G=P+192|0;H=P+176|0;y=P+160|0;B=P+144|0;c[E>>2]=0;c[E+4>>2]=0;c[E+8>>2]=0;c[E+12>>2]=0;M=+h[(c[b+16>>2]|0)+152>>3];qQ(xx(e,97006)|0);J=e+16|0;a:do if(c[(c[J>>2]|0)+8>>2]|0){N=+LL(e,c[46418]|0,1.0,0.0);k=NL(e,c[46406]|0,191979)|0;v=(f|0)!=0;b:do if(v){g=f;while(1){i=g;g=g+4|0;i=c[i>>2]|0;if(!i){o=0;break b}if((a[i>>0]|0)!=116)continue;if(!(b$(i,108091)|0)){o=1;break}}}else o=0;while(0);j=k;q=0;i=0;c:while(1){switch(a[j>>0]|0){case 0:break c;case 58:{g=q+1|0;break}case 59:{g=q;i=i+1|0;break}default:g=q}j=j+1|0;q=g}n=(q|0)!=0;if((i|0)!=0&n)if(!(KF(b,e,f,k,q+1|0,N,M)|0))break;else m=134232;else m=k;g=d[(c[J>>2]|0)+115>>0]|0;if(!(g&1))if(!(g&2))if(!(g&8))if(!(g&4)){i=m;j=OL(e,c[46407]|0,m)|0}else{j=103270;g=103262;k=185632;i=185632;p=18}else{j=103254;g=103246;k=185632;i=185632;p=18}else{j=103238;g=103230;k=185632;i=185632;p=18}else{j=103222;g=103214;k=185632;i=185632;p=18}if((p|0)==18){i=c[i>>2]|0;i=OL(e,i,LF(m,g)|0)|0;g=OL(e,c[k>>2]|0,j)|0;if((i|0)==(m|0)){i=m;j=g}else{UO(b,i);j=g}}if((j|0)!=(m|0))WO(b,j);if(o<<24>>24){i=(a[i>>0]|0)==0?134232:i;g=(a[j>>0]|0)==0?134232:j;UO(b,134297);WO(b,i);u=O;r=c[c[(c[J>>2]|0)+8>>2]>>2]|0;s=u+48|0;do{c[u>>2]=c[r>>2];u=u+4|0;r=r+4|0}while((u|0)<(s|0));J=kL(O,MF(e)|0,M,0,0)|0;_O(b,c[J+8>>2]|0,c[J>>2]|0,1);NF(J);UO(b,i);if((g|0)!=(i|0))WO(b,g);g=c[O+8>>2]|0;if(g|0){I=O+16|0;J=c[O>>2]|0;c[K>>2]=c[I>>2];c[K+4>>2]=c[I+4>>2];c[K+8>>2]=c[I+8>>2];c[K+12>>2]=c[I+12>>2];c[L>>2]=c[J>>2];c[L+4>>2]=c[J+4>>2];c[L+8>>2]=c[J+8>>2];c[L+12>>2]=c[J+12>>2];KE(b,2,K,L,N,M,g)}g=c[O+12>>2]|0;if(!g)break;J=O+32|0;O=(c[O>>2]|0)+((c[O+4>>2]|0)+-1<<4)|0;c[K>>2]=c[J>>2];c[K+4>>2]=c[J+4>>2];c[K+8>>2]=c[J+8>>2];c[K+12>>2]=c[J+12>>2];c[L>>2]=c[O>>2];c[L+4>>2]=c[O+4>>2];c[L+8>>2]=c[O+8>>2];c[L+12>>2]=c[O+12>>2];KE(b,3,K,L,N,M,g);break}g=c[J>>2]|0;if(!n){do if(!(a[g+115>>0]&3)){if(a[i>>0]|0){UO(b,i);WO(b,j);break}UO(b,134232);if(!(a[j>>0]|0)){WO(b,134232);break}else{WO(b,j);break}}while(0);k=b+152|0;m=O+4|0;n=O+8|0;o=O+12|0;p=O+32|0;q=O+16|0;j=0;while(1){g=c[(c[J>>2]|0)+8>>2]|0;if((j|0)>=(c[g+4>>2]|0))break a;u=O;r=(c[g>>2]|0)+(j*48|0)|0;s=u+48|0;do{c[u>>2]=c[r>>2];u=u+4|0;r=r+4|0}while((u|0)<(s|0));g=c[O>>2]|0;i=c[m>>2]|0;do if(!(c[k>>2]&16384)){aP(b,g,i,0,0,0);g=c[n>>2]|0;if(g|0){I=c[O>>2]|0;c[K>>2]=c[q>>2];c[K+4>>2]=c[q+4>>2];c[K+8>>2]=c[q+8>>2];c[K+12>>2]=c[q+12>>2];c[L>>2]=c[I>>2];c[L+4>>2]=c[I+4>>2];c[L+8>>2]=c[I+8>>2];c[L+12>>2]=c[I+12>>2];KE(b,2,K,L,N,M,g)}g=c[o>>2]|0;if(g|0){I=(c[O>>2]|0)+((c[m>>2]|0)+-1<<4)|0;c[K>>2]=c[p>>2];c[K+4>>2]=c[p+4>>2];c[K+8>>2]=c[p+8>>2];c[K+12>>2]=c[p+12>>2];c[L>>2]=c[I>>2];c[L+4>>2]=c[I+4>>2];c[L+8>>2]=c[I+8>>2];c[L+12>>2]=c[I+12>>2];KE(b,3,K,L,N,M,g)}if((c[(c[(c[J>>2]|0)+8>>2]|0)+4>>2]|0)>1){if(!(c[n>>2]|0)){if(!(v&(c[o>>2]|0)!=0))break}else if(!v)break;YO(b,f)}}else aP(b,g,i,c[n>>2]|0,c[o>>2]|0,0);while(0);j=j+1|0}}I=c[(c[g+8>>2]|0)+4>>2]|0;A=I*48|0;z=C_(A)|0;A=C_(A)|0;t=+(q+2|0)*.5;v=O+4|0;p=C+8|0;q=D+8|0;e=E+8|0;f=F+8|0;o=0;while(1){if((o|0)>=(I|0))break;u=O;r=(c[c[(c[J>>2]|0)+8>>2]>>2]|0)+(o*48|0)|0;s=u+48|0;do{c[u>>2]=c[r>>2];u=u+4|0;r=r+4|0}while((u|0)<(s|0));g=c[v>>2]|0;c[z+(o*48|0)+4>>2]=g;c[A+(o*48|0)+4>>2]=g;n=g<<4;m=C_(n)|0;c[z+(o*48|0)>>2]=m;n=C_(n)|0;c[A+(o*48|0)>>2]=n;k=c[O>>2]|0;c[F>>2]=c[k>>2];c[F+4>>2]=c[k+4>>2];c[F+8>>2]=c[k+8>>2];c[F+12>>2]=c[k+12>>2];k=0;while(1){if((k|0)>=(g+-1|0))break;c[C>>2]=c[F>>2];c[C+4>>2]=c[F+4>>2];c[C+8>>2]=c[F+8>>2];c[C+12>>2]=c[F+12>>2];g=k+1|0;j=(c[O>>2]|0)+(g<<4)|0;c[D>>2]=c[j>>2];c[D+4>>2]=c[j+4>>2];c[D+8>>2]=c[j+8>>2];c[D+12>>2]=c[j+12>>2];j=m+(k<<4)|0;if(!k){c[K>>2]=c[C>>2];c[K+4>>2]=c[C+4>>2];c[K+8>>2]=c[C+8>>2];c[K+12>>2]=c[C+12>>2];c[L>>2]=c[D>>2];c[L+4>>2]=c[D+4>>2];c[L+8>>2]=c[D+8>>2];c[L+12>>2]=c[D+12>>2];OF(G,K,L);c[j>>2]=c[G>>2];c[j+4>>2]=c[G+4>>2];c[j+8>>2]=c[G+8>>2];c[j+12>>2]=c[G+12>>2]}else{c[K>>2]=c[E>>2];c[K+4>>2]=c[E+4>>2];c[K+8>>2]=c[E+8>>2];c[K+12>>2]=c[E+12>>2];c[L>>2]=c[D>>2];c[L+4>>2]=c[D+4>>2];c[L+8>>2]=c[D+8>>2];c[L+12>>2]=c[D+12>>2];OF(H,K,L);c[j>>2]=c[H>>2];c[j+4>>2]=c[H+4>>2];c[j+8>>2]=c[H+8>>2];c[j+12>>2]=c[H+12>>2]}R=c[O>>2]|0;s=k+2|0;S=R+(s<<4)|0;c[E>>2]=c[S>>2];c[E+4>>2]=c[S+4>>2];c[E+8>>2]=c[S+8>>2];c[E+12>>2]=c[S+12>>2];u=k+3|0;R=R+(u<<4)|0;c[F>>2]=c[R>>2];c[F+4>>2]=c[R+4>>2];c[F+8>>2]=c[R+8>>2];c[F+12>>2]=c[R+12>>2];Q=m+(g<<4)|0;r=m+(s<<4)|0;c[w>>2]=c[C>>2];c[w+4>>2]=c[C+4>>2];c[w+8>>2]=c[C+8>>2];c[w+12>>2]=c[C+12>>2];c[x>>2]=c[D>>2];c[x+4>>2]=c[D+4>>2];c[x+8>>2]=c[D+8>>2];c[x+12>>2]=c[D+12>>2];c[K>>2]=c[S>>2];c[K+4>>2]=c[S+4>>2];c[K+8>>2]=c[S+8>>2];c[K+12>>2]=c[S+12>>2];c[L>>2]=c[R>>2];c[L+4>>2]=c[R+4>>2];c[L+8>>2]=c[R+8>>2];c[L+12>>2]=c[R+12>>2];PF(y,w,x,K,L);c[r>>2]=c[y>>2];c[r+4>>2]=c[y+4>>2];c[r+8>>2]=c[y+8>>2];c[r+12>>2]=c[y+12>>2];c[Q>>2]=c[y>>2];c[Q+4>>2]=c[y+4>>2];c[Q+8>>2]=c[y+8>>2];c[Q+12>>2]=c[y+12>>2];h[n+(k<<4)>>3]=+h[C>>3]-+h[j>>3]*t;h[n+(k<<4)+8>>3]=+h[p>>3]-+h[m+(k<<4)+8>>3]*t;h[n+(g<<4)>>3]=+h[D>>3]-+h[Q>>3]*t;h[n+(g<<4)+8>>3]=+h[q>>3]-+h[m+(g<<4)+8>>3]*t;h[n+(s<<4)>>3]=+h[E>>3]-+h[r>>3]*t;h[n+(s<<4)+8>>3]=+h[e>>3]-+h[m+(s<<4)+8>>3]*t;k=u;g=c[v>>2]|0}S=m+(k<<4)|0;c[K>>2]=c[E>>2];c[K+4>>2]=c[E+4>>2];c[K+8>>2]=c[E+8>>2];c[K+12>>2]=c[E+12>>2];c[L>>2]=c[F>>2];c[L+4>>2]=c[F+4>>2];c[L+8>>2]=c[F+8>>2];c[L+12>>2]=c[F+12>>2];OF(B,K,L);c[S>>2]=c[B>>2];c[S+4>>2]=c[B+4>>2];c[S+8>>2]=c[B+8>>2];c[S+12>>2]=c[B+12>>2];h[n+(k<<4)>>3]=+h[F>>3]-+h[S>>3]*t;h[n+(k<<4)+8>>3]=+h[f>>3]-+h[m+(k<<4)+8>>3]*t;o=o+1|0}s=n1(i)|0;f=0;r=i;g=i;j=i;i=s;while(1){i=k1(i,104958)|0;if(!i)break;e=(a[i>>0]|0)==0?134232:i;if((e|0)!=(j|0))if(!(a[(c[J>>2]|0)+115>>0]&3)){UO(b,e);WO(b,e);j=e}else j=e;m=(f|0)==0;n=f>>>0<2;i=0;while(1){if((i|0)>=(I|0))break;o=c[A+(i*48|0)>>2]|0;p=c[z+(i*48|0)>>2]|0;q=c[A+(i*48|0)+4>>2]|0;k=0;while(1){if((k|0)>=(q|0))break;S=o+(k<<4)|0;h[S>>3]=+h[S>>3]+ +h[p+(k<<4)>>3];S=o+(k<<4)+8|0;h[S>>3]=+h[S>>3]+ +h[p+(k<<4)+8>>3];k=k+1|0}aP(b,o,q,0,0,0);i=i+1|0}f=f+1|0;r=m?e:r;g=n?e:g;i=0}i=c[O+8>>2]|0;if(!i)i=0;else{if(g){if(!(a[(c[J>>2]|0)+115>>0]&3)){UO(b,g);WO(b,g)}}else g=0;R=O+16|0;S=c[O>>2]|0;c[K>>2]=c[R>>2];c[K+4>>2]=c[R+4>>2];c[K+8>>2]=c[R+8>>2];c[K+12>>2]=c[R+12>>2];c[L>>2]=c[S>>2];c[L+4>>2]=c[S+4>>2];c[L+8>>2]=c[S+8>>2];c[L+12>>2]=c[S+12>>2];KE(b,2,K,L,N,M,i);i=g}j=O+12|0;g=c[j>>2]|0;if(g|0){if((i|0)!=(r|0)?(a[(c[J>>2]|0)+115>>0]&3)==0:0){UO(b,r);WO(b,r);g=c[j>>2]|0}R=O+32|0;S=(c[O>>2]|0)+((c[v>>2]|0)+-1<<4)|0;c[K>>2]=c[R>>2];c[K+4>>2]=c[R+4>>2];c[K+8>>2]=c[R+8>>2];c[K+12>>2]=c[R+12>>2];c[L>>2]=c[S>>2];c[L+4>>2]=c[S+4>>2];c[L+8>>2]=c[S+8>>2];c[L+12>>2]=c[S+12>>2];KE(b,3,K,L,N,M,g)}D_(s);g=0;while(1){if((g|0)>=(I|0))break;D_(c[z+(g*48|0)>>2]|0);D_(c[A+(g*48|0)>>2]|0);g=g+1|0}D_(z);D_(A)}while(0);l=P;return}function DF(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;x=l;l=l+64|0;r=x+48|0;u=x+32|0;t=x+16|0;s=x;w=c[a+16>>2]|0;v=c[w+8>>2]|0;q=w+208|0;if(!((c[q>>2]|0)==0?!(b[w+260>>1]&1):0))d=3;a:do if((d|0)==3?(QO(a),p=w+276|0,e=c[p>>2]|0,e|0):0){h=w+280|0;d=c[h>>2]|0;i=w+268|0;j=w+284|0;k=w+272|0;m=w+228|0;n=w+244|0;o=w+212|0;f=c[d>>2]|0;g=1;while(1){if((g|0)>=(e|0))break a;c[i>>2]=c[d+(g<<2)>>2];c[k>>2]=(c[j>>2]|0)+(f<<4);PO(a,c[q>>2]|0,c[m>>2]|0,c[n>>2]|0,c[o>>2]|0);QO(a);y=c[h>>2]|0;f=(c[y+(g<<2)>>2]|0)+f|0;g=g+1|0;e=c[p>>2]|0;d=y}}while(0);c[w+268>>2]=0;c[w+272>>2]=0;q=v+16|0;d=c[q>>2]|0;e=c[d+8>>2]|0;if(!e)f=w+260|0;else{p=c[e>>2]|0;d=c[p>>2]|0;y=c[p+8>>2]|0;o=p+16|0;c[t>>2]=c[o>>2];c[t+4>>2]=c[o+4>>2];c[t+8>>2]=c[o+8>>2];c[t+12>>2]=c[o+12>>2];p=p+32|0;c[s>>2]=c[p>>2];c[s+4>>2]=c[p+4>>2];c[s+8>>2]=c[p+8>>2];c[s+12>>2]=c[p+12>>2];if(!y){c[u>>2]=c[d>>2];c[u+4>>2]=c[d+4>>2];c[u+8>>2]=c[d+8>>2];c[u+12>>2]=c[d+12>>2]}else{c[u>>2]=c[t>>2];c[u+4>>2]=c[t+4>>2];c[u+8>>2]=c[t+8>>2];c[u+12>>2]=c[t+12>>2]}f=w+260|0;p=b[f>>1]|0;o=c[w+220>>2]|0;c[r>>2]=c[u>>2];c[r+4>>2]=c[u+4>>2];c[r+8>>2]=c[u+8>>2];c[r+12>>2]=c[u+12>>2];EF(a,r,(p<<8&65535)<<16>>16>>15&255,o,(p<<14&65535)<<16>>16>>15&255);p=c[(c[q>>2]|0)+8>>2]|0;o=c[p>>2]|0;p=(c[p+4>>2]|0)+-1|0;d=c[o+(p*48|0)>>2]|0;e=c[o+(p*48|0)+4>>2]|0;y=c[o+(p*48|0)+12>>2]|0;n=o+(p*48|0)+16|0;c[t>>2]=c[n>>2];c[t+4>>2]=c[n+4>>2];c[t+8>>2]=c[n+8>>2];c[t+12>>2]=c[n+12>>2];t=o+(p*48|0)+32|0;c[s>>2]=c[t>>2];c[s+4>>2]=c[t+4>>2];c[s+8>>2]=c[t+8>>2];c[s+12>>2]=c[t+12>>2];if(!y){y=d+(e+-1<<4)|0;c[u>>2]=c[y>>2];c[u+4>>2]=c[y+4>>2];c[u+8>>2]=c[y+8>>2];c[u+12>>2]=c[y+12>>2]}else{c[u>>2]=c[s>>2];c[u+4>>2]=c[s+4>>2];c[u+8>>2]=c[s+8>>2];c[u+12>>2]=c[s+12>>2]}d=b[f>>1]|0;y=c[w+224>>2]|0;c[r>>2]=c[u>>2];c[r+4>>2]=c[u+4>>2];c[r+8>>2]=c[u+8>>2];c[r+12>>2]=c[u+12>>2];EF(a,r,(d<<7&65535)<<16>>16>>15&255,y,(d<<13&65535)<<16>>16>>15&255);d=c[q>>2]|0}e=c[d+96>>2]|0;g=(b[f>>1]<<12&65535)<<16>>16>>15<<16>>16;m=w+216|0;h=c[m>>2]|0;n=w+232|0;i=c[n>>2]|0;o=w+248|0;j=c[o>>2]|0;p=w+212|0;k=c[p>>2]|0;if(!((QL(NL(v,c[46416]|0,134226)|0)|0)<<24>>24))d=0;else d=c[(c[q>>2]|0)+8>>2]|0;FF(a,e,11,g,h,i,j,k,d);j=c[(c[q>>2]|0)+108>>2]|0;k=(b[f>>1]<<12&65535)<<16>>16>>15<<16>>16;i=c[m>>2]|0;h=c[n>>2]|0;e=c[o>>2]|0;g=c[p>>2]|0;if(!((QL(NL(v,c[46416]|0,134226)|0)|0)<<24>>24))d=0;else d=c[(c[q>>2]|0)+8>>2]|0;FF(a,j,11,k,i,h,e,g,d);FF(a,c[(c[q>>2]|0)+100>>2]|0,7,(b[f>>1]<<13&65535)<<16>>16>>15<<16>>16,c[w+224>>2]|0,c[w+240>>2]|0,c[w+256>>2]|0,c[p>>2]|0,0);FF(a,c[(c[q>>2]|0)+104>>2]|0,6,(b[f>>1]<<14&65535)<<16>>16>>15<<16>>16,c[w+220>>2]|0,c[w+236>>2]|0,c[w+252>>2]|0,c[p>>2]|0,0);OO(a);OE(a);l=x;return}function EF(a,d,e,f,g){a=a|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;j=l;l=l+16|0;h=j;i=c[a+16>>2]|0;if(!(e<<24>>24))f=c[i+208>>2]|0;if(!(g<<24>>24==0?((f|0)==0?(b[i+260>>1]&1)==0:0):0)){c[h>>2]=c[d>>2];c[h+4>>2]=c[d+4>>2];c[h+8>>2]=c[d+8>>2];c[h+12>>2]=c[d+12>>2];JF(a,h)}l=j;return}function FF(b,d,e,f,g,h,i,j,k){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;var m=0,n=0,o=0,p=0,q=0,r=0;r=l;l=l+16|0;o=r;q=c[b+152>>2]|0;if(d|0?a[d+81>>0]|0:0){if(!j)n=0;else{n=uH((W_(j)|0)+11|0)|0;switch(e|0){case 11:{m=105198;break}case 7:{m=98557;break}case 6:{m=98567;break}default:qa(135312,96880,2730,97018)}c[o>>2]=j;c[o+4>>2]=m;Y0(n,97034,o)|0}o=b+16|0;j=(c[o>>2]|0)+12|0;p=c[j>>2]|0;c[j>>2]=e;j=(f|0)!=0|(g|0)!=0;m=(q&4|0)==0;if(j&m){GF(b,d);PO(b,g,h,i,n)}oH(b,e,d);if(k|0)HF(b,d,k);if(j){if(!m){GF(b,d);PO(b,g,h,i,n)}QO(b)}D_(n);c[(c[o>>2]|0)+12>>2]=p}l=r;return}function GF(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0;d=c[a+16>>2]|0;e=c[a+152>>2]|0;if(e&4259840|0){f=e&131072;i=f>>>16^2;c[d+264>>2]=i;j=d+268|0;c[j>>2]=i+2;i=d+272|0;D_(c[i>>2]|0);d=uH(c[j>>2]<<4)|0;c[i>>2]=d;i=b+56|0;j=b+24|0;h[d>>3]=+h[i>>3]-+h[j>>3]*.5;g=b+64|0;b=b+32|0;h[d+8>>3]=+h[g>>3]-+h[b>>3]*.5;h[d+16>>3]=+h[j>>3]*.5+ +h[i>>3];h[d+24>>3]=+h[b>>3]*.5+ +h[g>>3];if(!(e&8192))yO(a,d,d,2)|0;if(!f)WG(d)}return}function HF(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0.0;o=l;l=l+96|0;g=o+80|0;i=o+32|0;j=o+16|0;k=o;f=c[d>>2]|0;while(1){m=a[f>>0]|0;if(!(m<<24>>24))break;if(!(B$(m&255)|0)){n=4;break}else f=f+1|0}if((n|0)==4){p=+h[d+24>>3];m=d+56|0;IF(i,+h[m>>3]+p*.5,+h[d+64>>3]-+h[d+32>>3]*.5);n=i+16|0;IF(j,+h[i>>3]-p,+h[i+8>>3]);c[n>>2]=c[j>>2];c[n+4>>2]=c[j+4>>2];c[n+8>>2]=c[j+8>>2];c[n+12>>2]=c[j+12>>2];n=i+32|0;c[g>>2]=c[m>>2];c[g+4>>2]=c[m+4>>2];c[g+8>>2]=c[m+8>>2];c[g+12>>2]=c[m+12>>2];bM(k,e,g);c[n>>2]=c[k>>2];c[n+4>>2]=c[k+4>>2];c[n+8>>2]=c[k+8>>2];c[n+12>>2]=c[k+12>>2];YO(b,c[(c[b>>2]|0)+336>>2]|0);UO(b,c[d+8>>2]|0);bP(b,i,3)}l=o;return}function IF(a,b,c){a=a|0;b=+b;c=+c;h[a>>3]=b;h[a+8>>3]=c;return}function JF(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0.0,i=0.0,j=0,k=0;d=c[a+16>>2]|0;e=c[a+152>>2]|0;if(e&4259840|0){f=e&131072;j=f>>>16^2;c[d+264>>2]=j;k=d+268|0;c[k>>2]=j+2;j=d+272|0;D_(c[j>>2]|0);d=uH(c[k>>2]<<4)|0;c[j>>2]=d;i=+h[b>>3];h[d>>3]=i+-3.0;g=+h[b+8>>3];h[d+8>>3]=g+-3.0;h[d+16>>3]=i+3.0;h[d+24>>3]=g+3.0;if(!(e&8192))yO(a,d,d,2)|0;if(!f)WG(d)}return}function KF(a,b,d,e,f,h,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;h=+h;i=+i;var j=0,k=0,m=0.0,n=0.0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0;J=l;l=l+256|0;D=J+224|0;C=J+208|0;j=J+192|0;F=J+144|0;G=J+96|0;H=J+48|0;E=J;k=J+240|0;e=TE(e,f,k)|0;if((e|0)>1){z=b+48|0;A=ez(c[((c[b>>2]&3|0)==3?b:z)+40>>2]|0)|0;z=ry(c[((c[b>>2]&3|0)==3?b:z)+40>>2]|0)|0;A=(ey(A)|0)!=0;B=ry(c[((c[b>>2]&3|0)==2?b:b+-48|0)+40>>2]|0)|0;c[j>>2]=z;c[j+4>>2]=A?97053:97058;c[j+8>>2]=B;Pw(3,97063,j)|0;if((e|0)==2)e=1;else I=4}else if((e|0)==1)e=1;else I=4;if((I|0)==4){B=b+16|0;r=c[k>>2]|0;s=r+8|0;t=H+4|0;u=F+8|0;v=F+12|0;w=(d|0)!=0;q=(d|0)==0;x=F+32|0;y=F+4|0;z=F+16|0;A=E+4|0;e=0;p=0;while(1){f=c[(c[B>>2]|0)+8>>2]|0;if((p|0)>=(c[f+4>>2]|0))break;j=F;f=(c[f>>2]|0)+(p*48|0)|0;b=j+48|0;do{c[j>>2]=c[f>>2];j=j+4|0;f=f+4|0}while((j|0)<(b|0));b=1;m=1.0;o=c[s>>2]|0;a:while(1){f=c[o>>2]|0;if(!f)break;k=o+4|0;n=+g[k>>2];do if(n<1.0e-05&n>-1.0e-05)f=b;else{UO(a,f);n=+g[k>>2];m=m-n;e=c[o>>2]|0;if(b|0){UF(F,n,H,E);k=c[H>>2]|0;aP(a,k,c[t>>2]|0,0,0,0);D_(k);if(m<1.0e-05&m>-1.0e-05){I=11;break a}else{f=0;break}}if(m<1.0e-05&m>-1.0e-05){I=13;break a}j=G;f=E;b=j+48|0;do{c[j>>2]=c[f>>2];j=j+4|0;f=f+4|0}while((j|0)<(b|0));n=+g[k>>2];UF(G,n/(m+n),H,E);D_(c[G>>2]|0);f=c[H>>2]|0;aP(a,f,c[t>>2]|0,0,0,0);D_(f);f=0}while(0);b=f;o=o+12|0}if((I|0)==11){I=0;D_(c[E>>2]|0)}else if((I|0)==13){I=0;o=c[E>>2]|0;aP(a,o,c[A>>2]|0,0,0,0);D_(o)}if(c[u>>2]|0){UO(a,c[c[s>>2]>>2]|0);WO(a,c[c[s>>2]>>2]|0);k=c[F>>2]|0;o=c[u>>2]|0;c[C>>2]=c[z>>2];c[C+4>>2]=c[z+4>>2];c[C+8>>2]=c[z+8>>2];c[C+12>>2]=c[z+12>>2];c[D>>2]=c[k>>2];c[D+4>>2]=c[k+4>>2];c[D+8>>2]=c[k+8>>2];c[D+12>>2]=c[k+12>>2];KE(a,2,C,D,h,i,o)}if(c[v>>2]|0){UO(a,e);WO(a,e);k=(c[F>>2]|0)+((c[y>>2]|0)+-1<<4)|0;o=c[v>>2]|0;c[C>>2]=c[x>>2];c[C+4>>2]=c[x+4>>2];c[C+8>>2]=c[x+8>>2];c[C+12>>2]=c[x+12>>2];c[D>>2]=c[k>>2];c[D+4>>2]=c[k+4>>2];c[D+8>>2]=c[k+8>>2];c[D+12>>2]=c[k+12>>2];KE(a,3,C,D,h,i,o)}do if((c[(c[(c[B>>2]|0)+8>>2]|0)+4>>2]|0)>1){if(!(c[u>>2]|0)){if(!(w&(c[v>>2]|0)!=0))break}else if(q)break;YO(a,d)}while(0);p=p+1|0}UE(r);e=0}l=J;return e|0}function LF(b,d){b=b|0;d=d|0;var e=0,f=0;e=1;a:while(1){switch(a[b>>0]|0){case 0:break a;case 58:{e=e+1|0;break}default:{}}b=b+1|0}f=O((W_(d)|0)+1|0,e)|0;b=f+10|0;if((c[46350]|0)<(f|0)){c[46350]=b;b=F_(c[46351]|0,b)|0;c[46351]=b}else b=c[46351]|0;b0(b,d)|0;while(1){e=e+-1|0;b=c[46351]|0;if(!e)break;f=b+(W_(b)|0)|0;a[f>>0]=58;a[f+1>>0]=0;p1(b,d)|0}return b|0}function MF(b){b=b|0;var d=0,e=0;d=c[46414]|0;a:do if(!d)e=7;else{d=yx(b,d)|0;switch(a[d>>0]|0){case 110:if(!(b$(d,132627)|0)){d=1;break a}else{e=7;break a}case 102:if(!(b$(d,97040)|0)){d=2;break a}else{e=7;break a}case 98:{if(!(b$(d,97048)|0)){d=3;break a}if(!(b$(d,108195)|0)){d=4;break a}else{e=7;break a}}default:{e=7;break a}}}while(0);if((e|0)==7){d=(ey(ez(c[((c[b>>2]&3|0)==2?b:b+-48|0)+40>>2]|0)|0)|0)!=0;d=d?2:1}return d|0}function NF(a){a=a|0;if(a|0){D_(c[a+8>>2]|0);D_(a)}return}function OF(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0,f=0.0;e=+h[b>>3]-+h[c>>3];f=+h[b+8>>3]-+h[c+8>>3];d=2.0/+C(+(e*e+.0001+f*f));h[a>>3]=d*f;h[a+8>>3]=-(e*d);return}function PF(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0.0,g=0.0,i=0.0,j=0.0;g=+h[c>>3]-+h[d>>3];i=+h[c+8>>3]-+h[d+8>>3];f=+C(+(i*i+g*g));if(f<.0001){j=+h[b>>3]-+h[e>>3];f=+h[b+8>>3]-+h[e+8>>3];i=f;g=j;f=+C(+(j*j+.0001+f*f))}j=2.0/f;h[a>>3]=i*j;h[a+8>>3]=-(j*g);return}function QF(a,b,c){a=+a;b=+b;c=+c;return +(c*.5*(1.0-a/b))}function RF(a,b,c){a=+a;b=+b;c=+c;return +(c*.5)}function SF(a,b,c){a=+a;b=+b;c=+c;return +(c*.5*(a/b))}function TF(a,b,c){a=+a;b=+b;c=+c;b=a/b;return +((!(b<=.5)?1.0-b:b)*c)}function UF(a,b,d,e){a=a|0;b=+b;d=d|0;e=e|0;var f=0.0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0.0,r=0,s=0;p=l;l=l+16|0;o=p;n=c[a+4>>2]|0;j=(n+-1|0)/3|0;if((n+-4|0)>>>0<3){c[d+4>>2]=4;c[d>>2]=uH(64)|0;c[e+4>>2]=4;n=uH(64)|0;c[e>>2]=n;XL(o,c[a>>2]|0,3,b,c[d>>2]|0,n)}else{n=uH(j<<3)|0;g=0;i=c[a>>2]|0;f=0.0;while(1){if((g|0)>=(j|0))break;q=+VF(i);h[n+(g<<3)>>3]=q;g=g+1|0;i=i+48|0;f=q+f}b=f*b;m=0;f=0.0;while(1){if((j|0)<=(m|0))break;f=+h[n+(m<<3)>>3]+f;if(f>=b)break;m=m+1|0}k=m*3|0;g=k+4|0;i=d+4|0;c[i>>2]=g;c[d>>2]=uH(g<<4)|0;g=((j-m|0)*3|0)+1|0;j=e+4|0;c[j>>2]=g;c[e>>2]=uH(g<<4)|0;g=0;while(1){if((g|0)>=(c[i>>2]|0))break;r=(c[d>>2]|0)+(g<<4)|0;s=(c[a>>2]|0)+(g<<4)|0;c[r>>2]=c[s>>2];c[r+4>>2]=c[s+4>>2];c[r+8>>2]=c[s+8>>2];c[r+12>>2]=c[s+12>>2];g=g+1|0}g=g+-4|0;i=0;while(1){if((i|0)>=(c[j>>2]|0))break;s=(c[e>>2]|0)+(i<<4)|0;r=(c[a>>2]|0)+(g<<4)|0;c[s>>2]=c[r>>2];c[s+4>>2]=c[r+4>>2];c[s+8>>2]=c[r+8>>2];c[s+12>>2]=c[r+12>>2];g=g+1|0;i=i+1|0}q=+h[n+(m<<3)>>3];XL(o,(c[a>>2]|0)+(k<<4)|0,3,(b-f+q)/q,(c[d>>2]|0)+(k<<4)|0,c[e>>2]|0);D_(n)}l=p;return}function VF(a){a=a|0;var b=0.0,c=0.0,d=0.0,e=0.0,f=0.0;e=+h[a+16>>3];d=+h[a>>3]-e;f=+h[a+24>>3];b=+h[a+8>>3]-f;d=+C(+(b*b+d*d));b=+h[a+32>>3];e=e-b;c=+h[a+40>>3];f=f-c;d=+C(+(f*f+e*e))+d;b=b-+h[a+48>>3];c=c-+h[a+56>>3];return +(d+ +C(+(c*c+b*b)))}function WF(b,d){b=b|0;d=d|0;d=fz(d)|0;if((a[(c[d+16>>2]|0)+115>>0]|0)==1)d=RM(b)|0;else d=OM(b,d)|0;return bG(d)|0}function XF(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=+f;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;q=l;l=l+1664|0;m=q+1600|0;n=q+800|0;o=q;p=vH(24)|0;c[p+16>>2]=1;j=((c[e+4>>2]|0)+-1|0)/3|0;h=0;i=p;while(1){if((h|0)>=(j|0))break;k=h*3|0;g=0;while(1){if((g|0)==4)break;r=m+(g<<4)|0;s=(c[e>>2]|0)+(g+k<<4)|0;c[r>>2]=c[s>>2];c[r+4>>2]=c[s+4>>2];c[r+8>>2]=c[s+8>>2];c[r+12>>2]=c[s+12>>2];g=g+1|0}h=h+1|0;i=YF(m,i)|0}g=0;h=0;i=p;while(1){if(!i){h=p;g=p;break}j=c[i+16>>2]|0;k=n+(g<<4)|0;e=o+(g<<4)|0;ZF(h,i,j,k,e,f);g=g+1|0;if(!((g|0)==50|(j|0)==0)){h=i;i=j;continue}_F(a,b,d,g,n,o);c[n>>2]=c[k>>2];c[n+4>>2]=c[k+4>>2];c[n+8>>2]=c[k+8>>2];c[n+12>>2]=c[k+12>>2];c[o>>2]=c[e>>2];c[o+4>>2]=c[e+4>>2];c[o+8>>2]=c[e+8>>2];c[o+12>>2]=c[e+12>>2];h=i;g=1;i=j}while(1){if(!h)break;s=c[h+16>>2]|0;D_(g);h=s;g=s}l=q;return}function YF(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=l;l=l+144|0;f=g+128|0;d=g+64|0;e=g;if(!(ZE(a)|0)){XL(f,a,3,.5,d,e);d=YF(e,YF(d,b)|0)|0}else{d=b+16|0;if((c[d>>2]|0)==1){c[d>>2]=0;c[b>>2]=c[a>>2];c[b+4>>2]=c[a+4>>2];c[b+8>>2]=c[a+8>>2];c[b+12>>2]=c[a+12>>2]}d=a+48|0;c[f>>2]=c[d>>2];c[f+4>>2]=c[d+4>>2];c[f+8>>2]=c[d+8>>2];c[f+12>>2]=c[d+12>>2];d=aG(f,b)|0}l=g;return d|0}function ZF(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=+g;var i=0.0,j=0.0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0,t=0.0;r=l;l=l+96|0;n=r+80|0;m=r+64|0;k=r+48|0;o=r+32|0;p=r+16|0;q=r;c[o>>2]=c[b>>2];c[o+4>>2]=c[b+4>>2];c[o+8>>2]=c[b+8>>2];c[o+12>>2]=c[b+12>>2];do if(a){c[p>>2]=c[a>>2];c[p+4>>2]=c[a+4>>2];c[p+8>>2]=c[a+8>>2];c[p+12>>2]=c[a+12>>2];if(!d){i=+h[o>>3];h[q>>3]=i*2.0-+h[p>>3];j=+h[o+8>>3];h[q+8>>3]=j*2.0-+h[p+8>>3];break}else{c[q>>2]=c[d>>2];c[q+4>>2]=c[d+4>>2];c[q+8>>2]=c[d+8>>2];c[q+12>>2]=c[d+12>>2];i=+h[o>>3];j=+h[o+8>>3];break}}else{c[q>>2]=c[d>>2];c[q+4>>2]=c[d+4>>2];c[q+8>>2]=c[d+8>>2];c[q+12>>2]=c[d+12>>2];i=+h[o>>3];h[p>>3]=i*2.0-+h[q>>3];j=+h[o+8>>3];h[p+8>>3]=j*2.0-+h[q+8>>3]}while(0);c[k>>2]=c[p>>2];c[k+4>>2]=c[p+4>>2];c[k+8>>2]=c[p+8>>2];c[k+12>>2]=c[p+12>>2];c[m>>2]=c[o>>2];c[m+4>>2]=c[o+4>>2];c[m+8>>2]=c[o+8>>2];c[m+12>>2]=c[o+12>>2];c[n>>2]=c[q>>2];c[n+4>>2]=c[q+4>>2];c[n+8>>2]=c[q+8>>2];c[n+12>>2]=c[q+12>>2];t=+$F(k,m,n);s=+E(+t)*g;g=+F(+t)*g;h[e>>3]=i+s;h[e+8>>3]=j+g;h[f>>3]=i-s;h[f+8>>3]=j-g;l=r;return}function _F(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;i=e<<1;j=c[d>>2]|0;h=0;k=0;while(1){if((h|0)>=(j|0))break;l=(c[(c[b>>2]|0)+(h<<2)>>2]|0)+k|0;h=h+1|0;k=l}l=j+1|0;c[d>>2]=l;l=xH(c[b>>2]|0,l<<2)|0;c[b>>2]=l;c[l+(h<<2)>>2]=i;c[a>>2]=xH(c[a>>2]|0,k+i<<4)|0;b=i+-1+k|0;h=0;while(1){if((h|0)>=(e|0))break;l=(c[a>>2]|0)+(h+k<<4)|0;j=f+(h<<4)|0;c[l>>2]=c[j>>2];c[l+4>>2]=c[j+4>>2];c[l+8>>2]=c[j+8>>2];c[l+12>>2]=c[j+12>>2];l=(c[a>>2]|0)+(b-h<<4)|0;j=g+(h<<4)|0;c[l>>2]=c[j>>2];c[l+4>>2]=c[j+4>>2];c[l+8>>2]=c[j+8>>2];c[l+12>>2]=c[j+12>>2];h=h+1|0}return}function $F(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0,f=0.0;f=+h[b+8>>3];d=+h[b>>3];e=+K(+(+h[c+8>>3]-f),+(+h[c>>3]-d));d=+K(+(+h[a+8>>3]-f),+(+h[a>>3]-d));e=e-d;return +((e>0.0?e+-6.283185307179586:e)*.5+d)}function aG(a,b){a=a|0;b=b|0;var d=0;d=vH(24)|0;c[d+16>>2]=0;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];c[b+16>>2]=d;return d|0}function bG(b){b=b|0;var c=0,d=0,e=0,f=0,g=0;c=b;f=b;a:while(1){e=0;while(1){d=c;c=c+1|0;d=a[d>>0]|0;if(!(d<<24>>24))break a;if(e<<24>>24){g=5;break}if(d<<24>>24!=92)break;else e=1}b:do if((g|0)==5){g=0;switch(d<<24>>24|0){case 114:{d=13;break b}case 108:case 110:{d=10;break b}default:break b}}while(0);a[f>>0]=d;f=f+1|0}a[f>>0]=0;return b|0}function cG(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;e=c[b>>2]|0;while(1){g=a[e>>0]|0;if(!(g<<24>>24)){f=0;break}f=g<<24>>24;if(!(g<<24>>24==44|(B$(f)|0)!=0)){h=5;break}e=e+1|0}a:do if((h|0)==5){switch(f|0){case 0:{f=0;break a}case 41:case 40:{e=e+1|0;break a}default:{}}h=d+4|0;i=d+8|0;while(1){if((dG(g<<24>>24)|0)<<24>>24){f=1;break a}f=c[h>>2]|0;if(f>>>0>=(c[i>>2]|0)>>>0){Uw(d,1)|0;f=c[h>>2]|0}c[h>>2]=f+1;a[f>>0]=g;f=e+1|0;e=f;g=a[f>>0]|0}}while(0);c[b>>2]=e;return f|0}function dG(a){a=a|0;switch(a|0){case 0:case 44:case 41:case 40:{a=1;break}default:a=0}return a|0}function eG(a,b){a=a|0;b=b|0;return fG(c[a>>2]|0,c[a+160>>2]|0,c[a+156>>2]|0,b)|0}function fG(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;o=l;l=l+160|0;k=o+20|0;m=o+16|0;n=o;c[k>>2]=0;c[m>>2]=0;Tw(n,128,o+24|0);Ww(n,f)|0;g=n+4|0;f=c[g>>2]|0;if(f>>>0>=(c[n+8>>2]|0)>>>0){Uw(n,1)|0;f=c[g>>2]|0}a[f>>0]=0;h=c[n>>2]|0;c[g>>2]=h;i=b+300|0;j=b+296|0;f=0;g=h;a:while(1){if(f){f=1;break}f=m1(g,c[i>>2]|0,k)|0;if(!f){f=0;break}g=m1(f,c[j>>2]|0,m)|0;h=(g|0)!=0;if(h)f=m1(0,c[j>>2]|0,m)|0;else f=0;switch(((f|0)!=0&1)+(h&1)&3){case 2:{g=gG(b,g,0)|0;f=gG(b,f,e)|0;h=(g|0)>(f|0);f=(f&g|0)>-1&(((h?g:f)|0)>=(d|0)&((h?f:g)|0)<=(d|0));g=0;continue a}case 1:{f=(gG(b,g,d)|0)==(d|0);g=0;continue a}default:{f=0;g=0;continue a}}}Xw(n);l=o;return f|0}function gG(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;h=a[d>>0]|0;if(!(h<<24>>24==97?(b$(d,97370)|0)==0:0))f=3;a:do if((f|0)==3){if((hG(d)|0)<<24>>24){e=a2(d)|0;break}g=c[b+308>>2]|0;if(!g)e=-1;else{b=c[b+312>>2]|0;e=1;while(1){if((e|0)>(b|0)){e=-1;break a}f=c[g+(e<<2)>>2]|0;if(h<<24>>24==(a[f>>0]|0)?(b$(d,f)|0)==0:0)break a;e=e+1|0}}}while(0);return e|0}function hG(b){b=b|0;var c=0;while(1){c=a[b>>0]|0;if(!(c<<24>>24)){b=1;break}if(((c&255)+-48|0)>>>0<10)b=b+1|0;else{b=0;break}}return b|0}function iG(a,b){a=a|0;b=b|0;if((+h[a+16>>3]>=+h[b>>3]?+h[b+16>>3]>=+h[a>>3]:0)?+h[a+24>>3]>=+h[b+8>>3]:0)a=+h[b+24>>3]>=+h[a+8>>3]&1;else a=0;return a|0}function jG(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0;a:do if((c[b+156>>2]|0)>=2?(f=NL(e,c[46397]|0,191979)|0,(eG(b,f)|0)<<24>>24==0):0)if(!(a[f>>0]|0))if(!(Jx(d,e)|0))f=1;else{f=Jx(d,e)|0;while(1){if(!f){f=0;break a}g=NL(f,c[46420]|0,191979)|0;if(!(a[g>>0]|0)){f=1;break a}if((eG(b,g)|0)<<24>>24){f=1;break a}f=Kx(d,f,e)|0}}else f=0;else f=1;while(0);return f|0}function kG(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+64|0;e=d+32|0;f=d;a=(c[a+16>>2]|0)+48|0;c[f>>2]=c[a>>2];c[f+4>>2]=c[a+4>>2];c[f+8>>2]=c[a+8>>2];c[f+12>>2]=c[a+12>>2];c[f+16>>2]=c[a+16>>2];c[f+20>>2]=c[a+20>>2];c[f+24>>2]=c[a+24>>2];c[f+28>>2]=c[a+28>>2];c[e>>2]=c[b>>2];c[e+4>>2]=c[b+4>>2];c[e+8>>2]=c[b+8>>2];c[e+12>>2]=c[b+12>>2];c[e+16>>2]=c[b+16>>2];c[e+20>>2]=c[b+20>>2];c[e+24>>2]=c[b+24>>2];c[e+28>>2]=c[b+28>>2];b=(iG(f,e)|0)&255;l=d;return b|0}function lG(a,d){a=a|0;d=d|0;var f=0.0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0.0,r=0,s=0,t=0,u=0.0,v=0.0;r=c[a+152>>2]|0;s=NE(a)|0;c[s+4>>2]=2;c[s+8>>2]=d;c[s+12>>2]=8;if(r&16777216|0){if((e[(c[(ez(d)|0)+16>>2]|0)+178>>1]|0)>2){f=+h[(c[(c[d+16>>2]|0)+132>>2]|0)+16>>3]*72.0;f=+(~~(f+(f>=0.0?.5:-.5))|0)}else f=0.0;h[s+168>>3]=f}k=d+16|0;nG(a,c[(c[k>>2]|0)+104>>2]|0,d);do if(r&4259840|0){if((c[s+208>>2]|0)==0?(b[s+260>>1]&1)==0:0)break;p=HJ(d)|0;l=c[k>>2]|0;f=+h[l+16>>3];q=+h[l+24>>3];l=oG(d)|0;a:do if((p|2|0)==3){n=c[(c[k>>2]|0)+12>>2]|0;if(!((pG(n)|0)<<24>>24))g=0;else g=(c[n+4>>2]|l|0)!=0;if(!((r&524288|0)==0|((n|0)==0|g))){i=n+8|0;o=c[i>>2]|0;o=(o|0)<3?1:o;j=n+4|0;m=c[j>>2]|0;m=(m|0)>1?m:1;p=c[n+44>>2]|0;g=xx(d,99679)|0;if(!g)g=0;else g=a2(g)|0;g=(g+-4|0)>>>0>56?20:g;if(!(c[j>>2]|l)){c[s+264>>2]=0;i=uH(32)|0;g=c[k>>2]|0;v=+h[g+88>>3];h[i>>3]=f-v;u=+h[g+80>>3]*.5;h[i+8>>3]=q-u;h[i+16>>3]=v+f;h[i+24>>3]=u+q;g=2;break}i=c[i>>2]|0;if(((i|0)<3?+h[n+32>>3]==0.0:0)?+h[n+24>>3]==0.0:0){i=s+264|0;if(c[n>>2]|0){c[i>>2]=1;i=uH(32)|0;h[i>>3]=f;h[i+8>>3]=q;g=(m<<1)+-1|0;h[i+16>>3]=+h[p+(g<<4)>>3]+f;h[i+24>>3]=+h[p+(g<<4)+8>>3]+q;g=2;break}c[i>>2]=2;i=(m<<1)+-1|0;i=qG(+h[p+(i<<4)>>3],+h[p+(i<<4)+8>>3],g)|0;j=0;while(1){if((j|0)>=(g|0))break a;p=i+(j<<4)|0;h[p>>3]=+h[p>>3]+f;p=i+(j<<4)+8|0;h[p>>3]=+h[p>>3]+q;j=j+1|0}}m=O(i,m+-1|0)|0;c[s+264>>2]=2;if((i|0)<(g|0)){i=uH(o<<4)|0;g=0;while(1){if((g|0)>=(o|0)){g=o;break a}n=g+m|0;h[i+(g<<4)>>3]=+h[p+(n<<4)>>3]+f;h[i+(g<<4)+8>>3]=+h[p+(n<<4)+8>>3]+q;g=g+1|0}}else{l=(i|0)/(g|0)|0;i=uH(g<<4)|0;j=0;k=0;while(1){if((j|0)>=(g|0))break a;o=k+m|0;h[i+(j<<4)>>3]=+h[p+(o<<4)>>3]+f;h[i+(j<<4)+8>>3]=+h[p+(o<<4)+8>>3]+q;j=j+1|0;k=k+l|0}}}else t=31}else t=31;while(0);if((t|0)==31){c[s+264>>2]=0;i=uH(32)|0;g=c[k>>2]|0;h[i>>3]=f-+h[g+88>>3];v=+h[g+80>>3]*.5;h[i+8>>3]=q-v;h[i+16>>3]=+h[g+96>>3]+f;h[i+24>>3]=v+q;g=2}if(!(r&8192))yO(a,i,i,g)|0;c[s+272>>2]=i;c[s+268>>2]=g}while(0);qQ(xx(d,97006)|0);LO(a,d);return}function mG(a){a=a|0;MO(a);OE(a);return}function nG(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0;m=l;l=l+144|0;j=m;f=xx(e,137973)|0;i=xx(e,138019)|0;k=xx(e,138006)|0;Tw(j,128,m+16|0);if(!d)h=0;else h=c[d>>2]|0;if(!((f|0)!=0?(a[f>>0]|0)!=0:0))f=xx(e,108395)|0;g=QE(b,e,j)|0;if(!i)d=0;else d=WF(i,e)|0;PE(b,h,f,d,k,g,e)|0;D_(d);Xw(j);l=m;return}function oG(b){b=b|0;var d=0,e=0;b=OL(b,c[46387]|0,191979)|0;a:do if(!(a[b>>0]|0))b=0;else{AF(b)|0;b=0;d=185144;while(1){e=c[d>>2]|0;if(!e)break a;e=(b$(e,108075)|0)==0;b=e?1:b;d=d+4|0}}while(0);return b|0}function pG(a){a=a|0;var b=0.0;if(((c[a+8>>2]|0)==4?(b=+h[a+16>>3],((~~(b+(b>=0.0?.5:-.5))|0)%90|0|0)==0):0)?+h[a+24>>3]==0.0:0)a=+h[a+32>>3]==0.0&1;else a=0;return a|0}function qG(a,b,c){a=+a;b=+b;c=c|0;var d=0.0,e=0,f=0.0,g=0;f=6.283185307179586/+(c|0);g=uH(c<<4)|0;d=0.0;e=0;while(1){if((e|0)>=(c|0))break;h[g+(e<<4)>>3]=+E(+d)*a;h[g+(e<<4)+8>>3]=+F(+d)*b;d=d+f;e=e+1|0}return g|0}function rG(b,d){b=b|0;d=d|0;var e=0;a:do if((c[b+156>>2]|0)>=2?(e=NL(d,nx(d,0,98484,0)|0,191979)|0,(eG(b,e)|0)<<24>>24==0):0)if(!(a[e>>0]|0)){e=Sy(d)|0;while(1){if(!e){e=0;break a}if((jG(b,d,e)|0)<<24>>24){e=1;break a}e=Ty(d,e)|0}}else e=0;else e=1;while(0);return e|0}function sG(a,b){a=a|0;b=b|0;var d=0;d=NE(a)|0;c[d+4>>2]=1;c[d+8>>2]=b;c[d+12>>2]=1;nG(a,c[(c[b+16>>2]|0)+12>>2]|0,b);FO(a,b);return}function tG(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;b=xx(b,138e3)|0;a:do if((b|0)!=0?(a[b>>0]|0)!=0:0){AF(b)|0;e=185144;b=0;while(1){while(1){f=c[e>>2]|0;if(!f){e=185144;break a}if(!(b$(f,108075)|0)){g=10;break}if(!(b$(f,103308)|0)){f=e;g=12;break}if(!(b$(f,103315)|0)){f=e;g=14;break}if(!(b$(f,103290)|0)){f=e;g=16;break}e=e+4|0}if((g|0)==10){e=e+4|0;b=b|1;continue}else if((g|0)==12){while(1){h=f;f=f+4|0;g=c[f>>2]|0;c[h>>2]=g;if(!g)break;else g=12}b=b|3;continue}else if((g|0)==14){while(1){g=f;f=f+4|0;h=c[f>>2]|0;c[g>>2]=h;if(!h)break;else g=14}b=b|64;continue}else if((g|0)==16){while(1){g=f;f=f+4|0;h=c[f>>2]|0;c[g>>2]=h;if(!h)break;else g=16}b=b|4;continue}}}else{e=0;b=0}while(0);c[d>>2]=b;return e|0}function uG(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,h=0,i=0,j=0,k=0,m=0;k=l;l=l+16|0;i=k;j=k+4|0;c[j>>2]=0;m=(TE(b,0,j)|0)==0;j=c[j>>2]|0;if((m?(f=c[j>>2]|0,(f|0)>=2):0)?(h=j+8|0,(c[c[h>>2]>>2]|0)!=0):0){if((f|0)>2)Pw(0,97389,i)|0;m=vH((W_(b)|0)+1|0)|0;c[d>>2]=m;b0(m,c[c[h>>2]>>2]|0)|0;if(!(c[(c[h>>2]|0)+12>>2]|0))c[d+4>>2]=0;else{m=c[d>>2]|0;m=m+((W_(m)|0)+1)|0;c[d+4>>2]=m;b0(m,c[(c[h>>2]|0)+12>>2]|0)|0}b=c[h>>2]|0;do if(!(a[b+8>>0]|0))if(!(a[b+20>>0]|0)){g[e>>2]=0.0;break}else{g[e>>2]=1.0-+g[b+16>>2];break}else c[e>>2]=c[b+4>>2];while(0);UE(j);b=1}else{c[d>>2]=0;UE(j);b=0}l=k;return b|0}function vG(a,b){a=a|0;b=b|0;GO(a,b);OE(a);return}function wG(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,i=0,j=0,k=0.0,m=0.0,n=0,o=0.0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;x=l;l=l+96|0;p=x+48|0;s=x+16|0;w=x+8|0;v=x;t=x+80|0;c[t>>2]=1e3;f=vH(16e3)|0;u=a+256|0;e=1;j=1;i=0;q=0;r=c[b+8>>2]|0;while(1){if((q|0)>=(c[b>>2]|0))break;d=c[r>>2]|0;a:do switch(d|0){case 1:case 0:{n=r+80|0;c[s>>2]=c[n>>2];c[s+4>>2]=c[n+4>>2];c[s+8>>2]=c[n+8>>2];c[s+12>>2]=c[n+12>>2];c[s+16>>2]=c[n+16>>2];c[s+20>>2]=c[n+20>>2];c[s+24>>2]=c[n+24>>2];c[s+28>>2]=c[n+28>>2];c[p>>2]=c[u>>2];c[p+4>>2]=c[u+4>>2];c[p+8>>2]=c[u+8>>2];c[p+12>>2]=c[u+12>>2];c[p+16>>2]=c[u+16>>2];c[p+20>>2]=c[u+20>>2];c[p+24>>2]=c[u+24>>2];c[p+28>>2]=c[u+28>>2];if(!(iG(s,p)|0))d=j;else{z=r+8|0;A=r+24|0;h[f>>3]=+h[z>>3]-+h[A>>3];n=r+16|0;y=r+32|0;h[f+8>>3]=+h[n>>3]-+h[y>>3];h[f+16>>3]=+h[A>>3]+ +h[z>>3];h[f+24>>3]=+h[y>>3]+ +h[n>>3];ZO(a,f,2,(d|0)==0?j:0);d=j}break}case 3:case 2:{A=r+80|0;c[s>>2]=c[A>>2];c[s+4>>2]=c[A+4>>2];c[s+8>>2]=c[A+8>>2];c[s+12>>2]=c[A+12>>2];c[s+16>>2]=c[A+16>>2];c[s+20>>2]=c[A+20>>2];c[s+24>>2]=c[A+24>>2];c[s+28>>2]=c[A+28>>2];c[p>>2]=c[u>>2];c[p+4>>2]=c[u+4>>2];c[p+8>>2]=c[u+8>>2];c[p+12>>2]=c[u+12>>2];c[p+16>>2]=c[u+16>>2];c[p+20>>2]=c[u+20>>2];c[p+24>>2]=c[u+24>>2];c[p+28>>2]=c[u+28>>2];if(!(iG(s,p)|0))d=j;else{d=r+8|0;f=xG(f,t,c[d+4>>2]|0,c[d>>2]|0)|0;_O(a,f,c[d>>2]|0,(c[r>>2]|0)==2?j:0);d=j}break}case 5:case 4:{A=r+80|0;c[s>>2]=c[A>>2];c[s+4>>2]=c[A+4>>2];c[s+8>>2]=c[A+8>>2];c[s+12>>2]=c[A+12>>2];c[s+16>>2]=c[A+16>>2];c[s+20>>2]=c[A+20>>2];c[s+24>>2]=c[A+24>>2];c[s+28>>2]=c[A+28>>2];c[p>>2]=c[u>>2];c[p+4>>2]=c[u+4>>2];c[p+8>>2]=c[u+8>>2];c[p+12>>2]=c[u+12>>2];c[p+16>>2]=c[u+16>>2];c[p+20>>2]=c[u+20>>2];c[p+24>>2]=c[u+24>>2];c[p+28>>2]=c[u+28>>2];if(!(iG(s,p)|0))d=j;else{d=r+8|0;f=xG(f,t,c[d+4>>2]|0,c[d>>2]|0)|0;aP(a,f,c[d>>2]|0,0,0,(c[r>>2]|0)==4?j&255:0);d=j}break}case 6:{A=r+80|0;c[s>>2]=c[A>>2];c[s+4>>2]=c[A+4>>2];c[s+8>>2]=c[A+8>>2];c[s+12>>2]=c[A+12>>2];c[s+16>>2]=c[A+16>>2];c[s+20>>2]=c[A+20>>2];c[s+24>>2]=c[A+24>>2];c[s+28>>2]=c[A+28>>2];c[p>>2]=c[u>>2];c[p+4>>2]=c[u+4>>2];c[p+8>>2]=c[u+8>>2];c[p+12>>2]=c[u+12>>2];c[p+16>>2]=c[u+16>>2];c[p+20>>2]=c[u+20>>2];c[p+24>>2]=c[u+24>>2];c[p+28>>2]=c[u+28>>2];if(!(iG(s,p)|0))d=j;else{d=r+8|0;f=xG(f,t,c[d+4>>2]|0,c[d>>2]|0)|0;bP(a,f,c[d>>2]|0);d=j}break}case 7:{A=r+80|0;c[s>>2]=c[A>>2];c[s+4>>2]=c[A+4>>2];c[s+8>>2]=c[A+8>>2];c[s+12>>2]=c[A+12>>2];c[s+16>>2]=c[A+16>>2];c[s+20>>2]=c[A+20>>2];c[s+24>>2]=c[A+24>>2];c[s+28>>2]=c[A+28>>2];c[p>>2]=c[u>>2];c[p+4>>2]=c[u+4>>2];c[p+8>>2]=c[u+8>>2];c[p+12>>2]=c[u+12>>2];c[p+16>>2]=c[u+16>>2];c[p+20>>2]=c[u+20>>2];c[p+24>>2]=c[u+24>>2];c[p+28>>2]=c[u+28>>2];if(!(iG(s,p)|0))d=j;else{h[f>>3]=+h[r+8>>3];h[f+8>>3]=+h[r+16>>3];d=c[r+112>>2]|0;c[p>>2]=c[f>>2];c[p+4>>2]=c[f+4>>2];c[p+8>>2]=c[f+8>>2];c[p+12>>2]=c[f+12>>2];TO(a,p,d);d=j}break}case 8:{WO(a,c[r+8>>2]|0);d=1;break}case 9:{UO(a,c[r+8>>2]|0);d=1;break}case 13:{if((c[r+8>>2]|0)!=2){d=r+16|0;z=c[d+36>>2]|0;A=c[z+12>>2]|0;o=+g[z+8>>2];d=~~(+K(+(+h[r+40>>3]-+h[r+24>>3]),+(+h[r+32>>3]-+h[d>>3]))*57.29577951308232);WO(a,c[z+4>>2]|0);XO(a,A,d,o);d=2;break a}A=c[r+68>>2]|0;j=c[A+4>>2]|0;n=c[A+12>>2]|0;o=+g[A+8>>2];k=+h[r+40>>3];m=+h[r+16>>3];if(k==m?+h[r+48>>3]==+h[r+24>>3]:0)d=0;else d=~~(+H(+((m-k)/+h[r+32>>3]))*57.29577951308232);WO(a,j);XO(a,n,d,o);d=3;break}case 14:{Pw(0,97455,v)|0;d=j;break}case 12:{if(!e){e=0;d=j}else{Pw(0,97495,w)|0;e=0;d=j}break}case 11:{AF(c[r+8>>2]|0)|0;YO(a,185144);i=185144;d=j;break}default:d=j}while(0);j=d;q=q+1|0;r=r+120|0}if(i|0)YO(a,c[(c[a>>2]|0)+336>>2]|0);D_(f);l=x;return}function xG(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;g=c[b>>2]|0;f=g<<1;f=(f|0)>(e|0)?f:e;if((g|0)<(e|0)){a=xH(a,f<<4)|0;c[b>>2]=f}b=0;while(1){if((b|0)>=(e|0))break;h[a+(b<<4)>>3]=+h[d+(b*24|0)>>3];h[a+(b<<4)+8>>3]=+h[d+(b*24|0)+8>>3];b=b+1|0}return a|0}function yG(a,b){a=a|0;b=b|0;var d=0;d=c[b>>2]|0;c[a>>2]=c[b+4>>2];c[a+4>>2]=d;return}function zG(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;g=d+16|0;f=1;while(1){d=c[g>>2]|0;if((f|0)>(c[d+180>>2]|0))break;e=c[(c[d+184>>2]|0)+(f<<2)>>2]|0;zG(b,e);d=xx(e,137741)|0;if(d|0?a[d>>0]|0:0)UO(b,d);d=xx(e,134647)|0;if(d|0?a[d>>0]|0:0)UO(b,d);d=xx(e,137895)|0;if(d|0?a[d>>0]|0:0)UO(b,d);d=xx(e,98392)|0;if(d|0?a[d>>0]|0:0)WO(b,d);d=xx(e,98420)|0;if(d|0?a[d>>0]|0:0)UO(b,d);f=f+1|0}return}function AG(a){a=a|0;var b=0,d=0,e=0;b=c[46356]|0;if(!b){b=Cw(20524,c[4555]|0)|0;c[46356]=b}if(!(nb[c[b>>2]&63](b,a,4)|0)){d=c[46356]|0;e=c[d>>2]|0;b=n1(a)|0;nb[e&63](d,b,1)|0;b=1}else b=0;return b|0}function BG(a,b,c){a=a|0;b=b|0;c=c|0;D_(b);return}function CG(a){a=a|0;var b=0;b=c[46357]|0;if(!a){if((b|0)>0?(b=b+-1|0,c[46357]=b,(b|0)==0):0){J0(1,c[46358]|0)|0;D_(c[46358]|0)}}else{c[46357]=b+1;if(!b){c[46358]=n1(J0(1,0)|0)|0;J0(1,150481)|0}}return}function DG(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0.0;u=l;l=l+96|0;r=u+72|0;q=u+56|0;p=u+48|0;t=u+32|0;s=u+24|0;e=u+8|0;d=u;if(0)EL();do if((Az(b,134401,0,1)|0)!=0?(o=b+16|0,(c[(c[o>>2]|0)+8>>2]|0)!=0):0){EG(b);FG(a,b);GG(a,b);CG(1);j=a+56|0;k=a+184|0;m=a+192|0;n=a+28|0;i=pC(a)|0;a:while(1){if(!i){g=33;break}d=c[j>>2]|0;if(!d){c[i+20>>2]=0;d=0}else{c[i+20>>2]=c[d+8>>2];d=c[d+12>>2]|0}c[i+24>>2]=d;c[i+12>>2]=a;c[i+28>>2]=c[k>>2];c[i+620>>2]=25660;c[i+624>>2]=14;if(!(c[(c[o>>2]|0)+8>>2]|0)){g=13;break}e=i+52|0;g=uO(i,c[e>>2]|0)|0;c[i+56>>2]=g;switch(g|0){case 999:{g=16;break a}case 21:{d=1;break}case 24:{d=520;break}default:d=HG(b)|0}f=i+152|0;c[f>>2]=c[f>>2]|d;d=c[m>>2]|0;do if(!d)g=24;else{if(c[d+152>>2]&32|0?(b$(c[e>>2]|0,c[d+52>>2]|0)|0)==0:0){d=c[46359]|0;if(!d){g=27;break}c[d+8>>2]=i;c[i+36>>2]=c[d+36>>2];g=29;break}wO(d);c[m>>2]=0;c[n>>2]=0;g=24}while(0);if((g|0)==24){c[46359]=0;g=27}if((g|0)==27?(g=0,(vO(i)|0)==0):0){c[m>>2]=i;g=29}if((g|0)==29){c[i+8>>2]=0;c[i+104>>2]=25772;IG(i);JG(i);KG(i,b);LG(i,b);MG(i,b);if(!(c[f>>2]&128))dF(i,b);c[46359]=i}i=qC(a)|0}if((g|0)==13){Pw(1,97653,s)|0;CG(0);if(!0){d=-1;break}d=c[15686]|0;s=ry(b)|0;v=+FL();c[t>>2]=s;h[t+8>>3]=v;g1(d,97624,t)|0;d=-1;break}else if((g|0)==16){c[p>>2]=c[e>>2];Pw(1,97674,p)|0;CG(0);if(!0){d=-1;break}d=c[15686]|0;t=ry(b)|0;v=+FL();c[q>>2]=t;h[q+8>>3]=v;g1(d,97624,q)|0;d=-1;break}else if((g|0)==33){CG(0);if(!0){d=0;break}d=c[15686]|0;t=ry(b)|0;v=+FL();c[r>>2]=t;h[r+8>>3]=v;g1(d,97624,r)|0;d=0;break}}else g=5;while(0);if((g|0)==5){Pw(1,97576,d)|0;if(!0)d=-1;else{d=c[15686]|0;t=ry(b)|0;v=+FL();c[e>>2]=t;h[e+8>>3]=v;g1(d,97624,e)|0;d=-1}}l=u;return d|0}function EG(a){a=a|0;var b=0;b=Sy(a)|0;while(1){if(!b)break;RG(a,b);b=Ty(a,b)|0}return}function FG(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0.0;o=l;l=l+32|0;k=o+24|0;f=o+16|0;j=o+8|0;n=o;c[b+168>>2]=d;g=b+293|0;a[g>>0]=0;e=xx(d,102470)|0;if(e|0?(c[f>>2]=j,c[f+4>>2]=n,i=N1(e,102477,f)|0,(i|0)>0):0){p=+h[j>>3]*72.0;e=b+208|0;h[e>>3]=p;h[b+200>>3]=p;if((i|0)!=1)h[e>>3]=+h[n>>3]*72.0;a[g>>0]=1}f=b+292|0;a[f>>0]=0;e=xx(d,98076)|0;if(e|0?(c[k>>2]=j,c[k+4>>2]=n,m=N1(e,102477,k)|0,(m|0)>0):0){p=+h[j>>3]*72.0;e=b+224|0;h[e>>3]=p;h[b+216>>3]=p;if((m|0)!=1)h[e>>3]=+h[n>>3]*72.0;a[f>>0]=1}e=b+294|0;a[e>>0]=0;f=b+232|0;g=d+16|0;n=(c[(c[g>>2]|0)+8>>2]|0)+48|0;c[f>>2]=c[n>>2];c[f+4>>2]=c[n+4>>2];c[f+8>>2]=c[n+8>>2];c[f+12>>2]=c[n+12>>2];f=c[(c[g>>2]|0)+8>>2]|0;if(+h[f+48>>3]>.001?+h[f+56>>3]>.001:0)a[e>>0]=1;c[b+288>>2]=a[f+81>>0]|0?90:0;e=b+196|0;c[e>>2]=98080;f=xx(d,98083)|0;if(f|0?a[f>>0]|0:0)c[e>>2]=f;n=b+256|0;m=(c[g>>2]|0)+16|0;c[n>>2]=c[m>>2];c[n+4>>2]=c[m+4>>2];c[n+8>>2]=c[m+8>>2];c[n+12>>2]=c[m+12>>2];c[n+16>>2]=c[m+16>>2];c[n+20>>2]=c[m+20>>2];c[n+24>>2]=c[m+24>>2];c[n+28>>2]=c[m+28>>2];c[46371]=nx(d,0,98446,0)|0;c[46372]=nx(d,0,98437,0)|0;c[b+320>>2]=OL(0,c[46381]|0,104968)|0;h[b+328>>3]=+LL(0,c[46380]|0,14.0,1.0);c[b+336>>2]=20560;c[b+188>>2]=ry(d)|0;l=o;return}function GG(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;e=b+304|0;f=c[e>>2]|0;if(f|0){D_(f);c[e>>2]=0}f=b+308|0;e=c[f>>2]|0;if(e|0){D_(e);c[f>>2]=0}g=b+316|0;e=c[g>>2]|0;if(e|0){D_(e);c[g>>2]=0}e=xx(d,97827)|0;if(e){c[b+312>>2]=PG(b,d,e)|0;e=xx(d,97834)|0;if(e|0?a[e>>0]|0:0)c[g>>2]=QG(b,e)|0}else{c[f>>2]=0;c[b+312>>2]=1}return}function HG(b){b=b|0;b=xx(b,97795)|0;a:do if(!b)b=0;else switch(a[b>>0]|0){case 110:{if(!(b$(b+1|0,97807)|0))b=1;else{b=0;break a}break}case 101:{if(!(b$(b+1|0,97817)|0))b=16;else{b=0;break a}break}default:{b=0;break a}}while(0);return b|0}function IG(b){b=b|0;var d=0.0,e=0;e=c[b>>2]|0;if(!(a[e+292>>0]|0)){if((c[b+56>>2]|0)==300)d=+h[(c[b+68>>2]|0)+8>>3];else d=4.0;h[b+248>>3]=d;h[b+240>>3]=d}else{b=b+240|0;e=e+216|0;c[b>>2]=c[e>>2];c[b+4>>2]=c[e+4>>2];c[b+8>>2]=c[e+8>>2];c[b+12>>2]=c[e+12>>2]}return}function JG(b){b=b|0;var d=0;d=c[b>>2]|0;a:do if(!(a[d+293>>0]|0))switch(c[b+56>>2]|0){case 300:{d=b+416|0;b=(c[b+84>>2]|0)+8|0;c[d>>2]=c[b>>2];c[d+4>>2]=c[b+4>>2];c[d+8>>2]=c[b+8>>2];c[d+12>>2]=c[b+12>>2];break a}case 30:case 21:case 22:case 4:case 3:case 2:{h[b+424>>3]=36.0;h[b+416>>3]=36.0;break a}default:{d=b+416|0;c[d>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;c[d+12>>2]=0;break a}}else{b=b+416|0;d=d+200|0;c[b>>2]=c[d>>2];c[b+4>>2]=c[d+4>>2];c[b+8>>2]=c[d+8>>2];c[b+12>>2]=c[d+12>>2]}while(0);return}function KG(b,d){b=b|0;d=d|0;var e=0.0,f=0;f=c[(c[b>>2]|0)+192>>2]|0;e=+h[(c[(c[d+16>>2]|0)+8>>2]|0)+24>>3];do if(!(e!=0.0)){if(f|0?a[f+128>>0]|0:0){b=b+432|0;f=f+112|0;c[b>>2]=c[f>>2];c[b+4>>2]=c[f+4>>2];c[b+8>>2]=c[f+8>>2];c[b+12>>2]=c[f+12>>2];break}d=b+432|0;if((c[b+56>>2]|0)==300){b=(c[b+84>>2]|0)+40|0;c[d>>2]=c[b>>2];c[d+4>>2]=c[b+4>>2];c[d+8>>2]=c[b+8>>2];c[d+12>>2]=c[b+12>>2];break}else{h[b+440>>3]=96.0;h[d>>3]=96.0;break}}else{h[b+440>>3]=e;h[b+432>>3]=e}while(0);return}function LG(b,d){b=b|0;d=d|0;var e=0.0,f=0.0,g=0,i=0.0,j=0.0,k=0.0,m=0,n=0,o=0.0,p=0.0,q=0.0,r=0.0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;A=l;l=l+112|0;t=A+80|0;u=A+56|0;s=A+40|0;v=A+32|0;w=A+24|0;x=A+16|0;y=A+8|0;z=A;m=c[b>>2]|0;o=+h[m+272>>3];q=+h[m+280>>3];p=+h[m+256>>3];r=+h[m+264>>3];f=+h[b+240>>3];e=p-f;h[b+208>>3]=e;i=+h[b+248>>3];j=r-i;h[b+216>>3]=j;f=f+o;h[b+224>>3]=f;i=i+q;h[b+232>>3]=i;e=f-e;j=i-j;h[x>>3]=1.0;g=c[(c[d+16>>2]|0)+8>>2]|0;i=+h[g+64>>3];do if(i>.001?(k=+h[g+72>>3],k>.001):0){e=e==0.0?i:e;f=j==0.0?k:j;if(!(if&(i>e&(a[g+80>>0]|0)!=0)):0){k=e;j=f;i=1.0;break}n=i/e>3]=i;k=e;j=f}else{k=e;i=1.0}while(0);f=(p+o)*.5;h[y>>3]=f;e=(r+q)*.5;h[z>>3]=e;c[b+360>>2]=c[m+288>>2];k=i*k;h[v>>3]=k;j=i*j;h[w>>3]=j;g=xx(d,97726)|0;if(g){m=C_((W_(g)|0)+1|0)|0;n=C_((W_(g)|0)+1|0)|0;c[s>>2]=v;c[s+4>>2]=w;c[s+8>>2]=x;c[s+12>>2]=m;do if((N1(g,97735,s)|0)==4){g=az(c[d+60>>2]|0,m,0)|0;if(g|0){u=c[g+16>>2]|0;h[y>>3]=+h[u+16>>3];h[z>>3]=+h[u+24>>3]}}else{c[u>>2]=v;c[u+4>>2]=w;c[u+8>>2]=x;c[u+12>>2]=m;c[u+16>>2]=n;if((N1(g,97755,u)|0)!=4){c[t>>2]=v;c[t+4>>2]=w;c[t+8>>2]=x;c[t+12>>2]=y;c[t+16>>2]=z;N1(g,97775,t)|0;break}g=az(c[d+60>>2]|0,m,0)|0;if(g|0){u=c[g+16>>2]|0;h[y>>3]=+h[u+16>>3];h[z>>3]=+h[u+24>>3]}}while(0);D_(m);D_(n);k=+h[v>>3];j=+h[w>>3];i=+h[x>>3];f=+h[y>>3];e=+h[z>>3]}h[b+368>>3]=k;h[b+376>>3]=j;h[b+352>>3]=i;h[b+336>>3]=f;h[b+344>>3]=e;l=A;return}function MG(b,d){b=b|0;d=d|0;var e=0,f=0,g=0.0,i=0.0,j=0,k=0.0,m=0.0,n=0.0,o=0.0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0.0,P=0.0,Q=0.0;M=l;l=l+224|0;J=M+200|0;z=M+168|0;E=M+144|0;I=M+120|0;F=M+96|0;G=M+64|0;e=M+184|0;v=M+176|0;w=M+160|0;y=M+136|0;x=M+112|0;A=M+80|0;B=M+48|0;C=M+32|0;D=M+16|0;K=M+8|0;L=M;u=c[b>>2]|0;c[G>>2]=0;c[G+4>>2]=0;c[G+8>>2]=0;c[G+12>>2]=0;H=b+368|0;c[I>>2]=c[H>>2];c[I+4>>2]=c[H+4>>2];c[I+8>>2]=c[H+8>>2];c[I+12>>2]=c[H+12>>2];H=b+360|0;if(c[H>>2]|0){c[J>>2]=c[I>>2];c[J+4>>2]=c[I+4>>2];c[J+8>>2]=c[I+8>>2];c[J+12>>2]=c[I+12>>2];NG(e,J);c[I>>2]=c[e>>2];c[I+4>>2]=c[e+4>>2];c[I+8>>2]=c[e+8>>2];c[I+12>>2]=c[e+12>>2]}t=b+416|0;c[F>>2]=c[t>>2];c[F+4>>2]=c[t+4>>2];c[F+8>>2]=c[t+8>>2];c[F+12>>2]=c[t+12>>2];if((a[u+294>>0]|0)!=0?(c[b+152>>2]&32|0)!=0:0){i=+h[u+232>>3]-+h[F>>3]*2.0;h[E>>3]=i;k=+h[u+240>>3]-+h[F+8>>3]*2.0;p=E+8|0;h[p>>3]=k;if(!(i<.0001)){o=+h[I>>3];e=~~(o/i);f=b+164|0;c[f>>2]=e;if(o-i*+(e|0)>.0001){e=e+1|0;c[f>>2]=e}}else{c[b+164>>2]=1;e=1}if(!(k<.0001)){g=+h[I+8>>3];f=~~(g/k);j=b+168|0;c[j>>2]=f;if(g-k*+(f|0)>.0001){f=f+1|0;c[j>>2]=f}}else{c[b+168>>2]=1;f=1;g=+h[I+8>>3]}c[b+204>>2]=O(f,e)|0;o=+h[(+h[I>>3]>3];h[I>>3]=o;e=p;f=I;m=+h[(g>3];g=o;j=21}else{if(c[b+68>>2]|0){e=c[b+84>>2]|0;i=+h[e+24>>3]-+h[F>>3]*2.0;i=i<0.0?0.0:i;h[E>>3]=i;o=+h[e+32>>3]-+h[F+8>>3]*2.0;e=E+8|0;h[e>>3]=o;if(o<0.0){f=E;j=17}else e=E}else{h[E+8>>3]=0.0;f=E;e=E;j=17}if((j|0)==17){h[e>>3]=0.0;e=f;i=+h[f>>3]}c[b+204>>2]=1;c[b+168>>2]=1;c[b+164>>2]=1;g=+h[I>>3];if(i>3]=g;i=g}e=E+8|0;k=+h[e>>3];m=+h[I+8>>3];if(k>3]=m;r=e;m=+h[e>>3]}n=+h[F>>3];s=b+432|0;k=+h[s>>3]*.013888888888888888*(n*2.0+i);c[b+448>>2]=~~(k+(k>=0.0?.5:-.5));q=F+8|0;k=+h[q>>3];t=b+440|0;o=+h[t>>3]*.013888888888888888*(k*2.0+m);c[b+452>>2]=~~(o+(o>=0.0?.5:-.5));j=b+188|0;p=b+180|0;e=b+172|0;f=u+196|0;c[e>>2]=0;c[e+4>>2]=0;c[e+8>>2]=0;c[e+12>>2]=0;c[e+16>>2]=0;c[e+20>>2]=0;OG(v,b,a[c[f>>2]>>0]|0);u=v;v=c[u+4>>2]|0;e=p;c[e>>2]=c[u>>2];c[e+4>>2]=v;OG(w,b,a[(c[f>>2]|0)+1>>0]|0);e=w;w=c[e>>2]|0;e=c[e+4>>2]|0;v=j;c[v>>2]=w;c[v+4>>2]=e;w=(c[p>>2]|0)+w|0;if(!((((w|0)>-1?w:0-w|0)|0)==1?(w=(c[b+184>>2]|0)+e|0,(((w|0)>-1?w:0-w|0)|0)==1):0)){OG(y,b,66);v=y;y=c[v+4>>2]|0;w=p;c[w>>2]=c[v>>2];c[w+4>>2]=y;OG(x,b,76);w=x;x=c[w+4>>2]|0;y=j;c[y>>2]=c[w>>2];c[y+4>>2]=x;c[z>>2]=c[f>>2];Pw(0,97706,z)|0}if(a[(c[(c[d+16>>2]|0)+8>>2]|0)+82>>0]|0){if(i>g){m=(i-g)*.5;h[G>>3]=m}else m=0.0;i=+h[r>>3];o=+h[I+8>>3];if(i>o){i=(i-o)*.5;h[G+8>>3]=i}else i=0.0}else{i=0.0;m=0.0}if(!(c[H>>2]|0))j=1;else{c[J>>2]=c[I>>2];c[J+4>>2]=c[I+4>>2];c[J+8>>2]=c[I+8>>2];c[J+12>>2]=c[I+12>>2];NG(A,J);c[I>>2]=c[A>>2];c[I+4>>2]=c[A+4>>2];c[I+8>>2]=c[A+8>>2];c[I+12>>2]=c[A+12>>2];c[J>>2]=c[E>>2];c[J+4>>2]=c[E+4>>2];c[J+8>>2]=c[E+8>>2];c[J+12>>2]=c[E+12>>2];NG(B,J);c[E>>2]=c[B>>2];c[E+4>>2]=c[B+4>>2];c[E+8>>2]=c[B+8>>2];c[E+12>>2]=c[B+12>>2];c[J>>2]=c[F>>2];c[J+4>>2]=c[F+4>>2];c[J+8>>2]=c[F+8>>2];c[J+12>>2]=c[F+12>>2];NG(C,J);c[F>>2]=c[C>>2];c[F+4>>2]=c[C+4>>2];c[F+8>>2]=c[C+8>>2];c[F+12>>2]=c[C+12>>2];c[J>>2]=c[G>>2];c[J+4>>2]=c[G+4>>2];c[J+8>>2]=c[G+8>>2];c[J+12>>2]=c[G+12>>2];NG(D,J);c[G>>2]=c[D>>2];c[G+4>>2]=c[D+4>>2];c[G+8>>2]=c[D+8>>2];c[G+12>>2]=c[D+12>>2];n=+h[F>>3];m=+h[G>>3];k=+h[q>>3];i=+h[G+8>>3];g=+h[I>>3];j=(c[H>>2]|0)==0}o=m+n;h[b+384>>3]=o;P=i+k;h[b+392>>3]=P;N=m+n+g;h[b+400>>3]=N;Q=+h[I+8>>3];n=i+k+Q;h[b+408>>3]=n;m=+h[b+352>>3];h[b+320>>3]=g/m;h[b+328>>3]=Q/m;m=+h[s>>3];o=o*.013888888888888888*m;f=b+456|0;c[f>>2]=~~(o+(o>=0.0?.5:-.5));o=+h[t>>3];k=P*.013888888888888888*o;c[b+460>>2]=~~(k+(k>=0.0?.5:-.5));m=N*.013888888888888888*m;e=b+464|0;c[e>>2]=~~(m+(m>=0.0?.5:-.5));o=n*.013888888888888888*o;c[b+468>>2]=~~(o+(o>=0.0?.5:-.5));if(!j){c[J>>2]=c[f>>2];c[J+4>>2]=c[f+4>>2];yG(K,J);I=K;K=c[I+4>>2]|0;b=f;c[b>>2]=c[I>>2];c[b+4>>2]=K;c[J>>2]=c[e>>2];c[J+4>>2]=c[e+4>>2];yG(L,J);b=L;K=c[b+4>>2]|0;L=e;c[L>>2]=c[b>>2];c[L+4>>2]=K}l=M;return}function NG(a,b){a=a|0;b=b|0;var c=0.0;c=+h[b>>3];h[a>>3]=+h[b+8>>3];h[a+8>>3]=c;return}function OG(a,b,d){a=a|0;b=b|0;d=d|0;d=(d<<24>>24)+-66|0;switch(d>>>1|d<<31|0){case 9:{c[b+176>>2]=(c[b+168>>2]|0)+-1;b=0;d=-1;break}case 0:{b=0;d=1;break}case 5:{b=1;d=0;break}case 8:{c[b+172>>2]=(c[b+164>>2]|0)+-1;b=-1;d=0;break}default:{b=0;d=0}}c[a>>2]=b;c[a+4>>2]=d;return}function PG(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;j=l;l=l+16|0;g=j;f=xx(d,97947)|0;i=b+296|0;c[i>>2]=(f|0)==0?97956:f;d=xx(d,97960)|0;f=b+300|0;d=(d|0)==0?97973:d;c[f>>2]=d;d=q1(c[i>>2]|0,d)|0;if(d|0){c[g>>2]=a[d>>0];Pw(0,97975,g)|0;c[f>>2]=191979}d=n1(e)|0;c[b+304>>2]=d;h=b+308|0;f=0;b=0;while(1){e=k1(d,c[i>>2]|0)|0;if(!e)break;g=b+1|0;if((b|0)<(f|0))d=c[h>>2]|0;else{f=f+128|0;d=c[h>>2]|0;if(!d)d=vH(f<<2)|0;else d=xH(d,f<<2)|0;c[h>>2]=d}c[d+(g<<2)>>2]=e;b=g;d=0}if(b|0){i=xH(c[h>>2]|0,(b<<2)+8|0)|0;c[h>>2]=i;c[i>>2]=0;c[(c[h>>2]|0)+(b+1<<2)>>2]=0}l=j;return b|0}function QG(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=l;l=l+16|0;j=k;i=a+312|0;d=vH((c[i>>2]<<2)+8|0)|0;e=0;h=1;while(1){g=c[i>>2]|0;if((h|0)>(g|0))break;f=e+1|0;if((fG(a,h,g,b)|0)<<24>>24){c[d+(f<<2)>>2]=h;e=f}h=h+1|0}if(!e){c[j>>2]=b;Pw(0,97846,j)|0;D_(d);d=0}else{c[d>>2]=e;c[d+(e+1<<2)>>2]=(c[i>>2]|0)+1}l=k;return d|0}function RG(a,b){a=a|0;b=b|0;var d=0,e=0.0,f=0.0,g=0.0;d=c[b+16>>2]|0;g=+h[d+16>>3];h[d+48>>3]=g-+h[d+88>>3];e=+h[d+24>>3];f=+h[d+80>>3]*.5;h[d+56>>3]=e-f;h[d+64>>3]=+h[d+96>>3]+g;h[d+72>>3]=f+e;b=Ex(a,b)|0;while(1){if(!b)break;SG(b);b=Gx(a,b)|0}return}function SG(a){a=a|0;a=c[(c[a+16>>2]|0)+8>>2]|0;if(a|0)TG(a);return}function TG(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=l;l=l+240|0;v=C+192|0;u=C+176|0;w=C+64|0;x=C+32|0;y=C;z=C+144|0;A=C+112|0;B=a+4|0;if((c[B>>2]|0)<=0)qa(98114,96880,3994,98128);b=c[a>>2]|0;d=w;e=b;f=d+48|0;do{c[d>>2]=c[e>>2];d=d+4|0;e=e+4|0}while((d|0)<(f|0));d=v;e=b;f=d+48|0;do{c[d>>2]=c[e>>2];d=d+4|0;e=e+4|0}while((d|0)<(f|0));UG(x,v);i=x+8|0;j=y+8|0;k=x+16|0;m=y+16|0;n=x+24|0;o=y+24|0;p=w+8|0;q=w+12|0;r=w+32|0;s=w+4|0;t=w+16|0;g=0;while(1){if((g|0)>=(c[B>>2]|0))break;if((g|0)>0){b=(c[a>>2]|0)+(g*48|0)|0;d=w;e=b;f=d+48|0;do{c[d>>2]=c[e>>2];d=d+4|0;e=e+4|0}while((d|0)<(f|0));d=v;e=b;f=d+48|0;do{c[d>>2]=c[e>>2];d=d+4|0;e=e+4|0}while((d|0)<(f|0));UG(y,v);h[x>>3]=+h[(+h[x>>3]<+h[y>>3]?x:y)>>3];h[i>>3]=+h[(+h[i>>3]<+h[j>>3]?x:y)+8>>3];h[k>>3]=+h[(+h[k>>3]>+h[m>>3]?x:y)+16>>3];h[n>>3]=+h[(+h[n>>3]>+h[o>>3]?x:y)+24>>3]}b=c[p>>2]|0;if(b|0){f=c[w>>2]|0;c[u>>2]=c[t>>2];c[u+4>>2]=c[t+4>>2];c[u+8>>2]=c[t+8>>2];c[u+12>>2]=c[t+12>>2];c[v>>2]=c[f>>2];c[v+4>>2]=c[f+4>>2];c[v+8>>2]=c[f+8>>2];c[v+12>>2]=c[f+12>>2];JE(z,u,v,1.0,b);c[y>>2]=c[z>>2];c[y+4>>2]=c[z+4>>2];c[y+8>>2]=c[z+8>>2];c[y+12>>2]=c[z+12>>2];c[y+16>>2]=c[z+16>>2];c[y+20>>2]=c[z+20>>2];c[y+24>>2]=c[z+24>>2];c[y+28>>2]=c[z+28>>2];h[x>>3]=+h[(+h[x>>3]<+h[y>>3]?x:y)>>3];h[i>>3]=+h[(+h[i>>3]<+h[j>>3]?x:y)+8>>3];h[k>>3]=+h[(+h[k>>3]>+h[m>>3]?x:y)+16>>3];h[n>>3]=+h[(+h[n>>3]>+h[o>>3]?x:y)+24>>3]}b=c[q>>2]|0;if(b|0){f=(c[w>>2]|0)+((c[s>>2]|0)+-1<<4)|0;c[u>>2]=c[r>>2];c[u+4>>2]=c[r+4>>2];c[u+8>>2]=c[r+8>>2];c[u+12>>2]=c[r+12>>2];c[v>>2]=c[f>>2];c[v+4>>2]=c[f+4>>2];c[v+8>>2]=c[f+8>>2];c[v+12>>2]=c[f+12>>2];JE(A,u,v,1.0,b);c[y>>2]=c[A>>2];c[y+4>>2]=c[A+4>>2];c[y+8>>2]=c[A+8>>2];c[y+12>>2]=c[A+12>>2];c[y+16>>2]=c[A+16>>2];c[y+20>>2]=c[A+20>>2];c[y+24>>2]=c[A+24>>2];c[y+28>>2]=c[A+28>>2];h[x>>3]=+h[(+h[x>>3]<+h[y>>3]?x:y)>>3];h[i>>3]=+h[(+h[i>>3]<+h[j>>3]?x:y)+8>>3];h[k>>3]=+h[(+h[k>>3]>+h[m>>3]?x:y)+16>>3];h[n>>3]=+h[(+h[n>>3]>+h[o>>3]?x:y)+24>>3]}g=g+1|0}B=a+8|0;c[B>>2]=c[x>>2];c[B+4>>2]=c[x+4>>2];c[B+8>>2]=c[x+8>>2];c[B+12>>2]=c[x+12>>2];c[B+16>>2]=c[x+16>>2];c[B+20>>2]=c[x+20>>2];c[B+24>>2]=c[x+24>>2];c[B+28>>2]=c[x+28>>2];l=C;return}function UG(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0;n=l;l=l+48|0;i=n+32|0;j=n;k=c[b+4>>2]|0;if((k|0)<=0)qa(98144,96880,3968,98156);if(((k>>>0)%3|0|0)!=1)qa(98166,96880,3969,98156);m=j+16|0;d=c[b>>2]|0;c[m>>2]=c[d>>2];c[m+4>>2]=c[d+4>>2];c[m+8>>2]=c[d+8>>2];c[m+12>>2]=c[d+12>>2];c[j>>2]=c[d>>2];c[j+4>>2]=c[d+4>>2];c[j+8>>2]=c[d+8>>2];c[j+12>>2]=c[d+12>>2];e=i+8|0;f=j+8|0;g=j+24|0;b=1;while(1){if((b|0)>=(k|0))break;p=+h[d+(b<<4)+8>>3];t=b+1|0;o=+h[d+(t<<4)+8>>3];r=(+h[d+(t<<4)>>3]+ +h[d+(b<<4)>>3])*.5;h[i>>3]=r;p=(o+p)*.5;h[e>>3]=p;o=+h[(+h[j>>3]>3];h[j>>3]=o;s=+h[(+h[f>>3]>3];h[f>>3]=s;r=+h[(+h[m>>3]>r?m:i)>>3];h[m>>3]=r;p=+h[(+h[g>>3]>p?m:i)+8>>3];h[g>>3]=p;t=d+(b+2<<4)|0;c[i>>2]=c[t>>2];c[i+4>>2]=c[t+4>>2];c[i+8>>2]=c[t+8>>2];c[i+12>>2]=c[t+12>>2];q=+h[i>>3];h[j>>3]=+h[(o>3];o=+h[e>>3];h[f>>3]=+h[(s>3];h[m>>3]=+h[(r>q?m:i)>>3];h[g>>3]=+h[(p>o?m:i)+8>>3];b=b+3|0}c[a>>2]=c[j>>2];c[a+4>>2]=c[j+4>>2];c[a+8>>2]=c[j+8>>2];c[a+12>>2]=c[j+12>>2];c[a+16>>2]=c[j+16>>2];c[a+20>>2]=c[j+20>>2];c[a+24>>2]=c[j+24>>2];c[a+28>>2]=c[j+28>>2];l=n;return}function VG(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0.0,f=0.0,g=0.0,i=0,j=0.0,k=0,l=0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0;q=+h[a>>3];r=+h[c>>3];k=!(q>=r);if((!k?q<=+h[c+16>>3]:0)?(e=+h[a+8>>3],e>=+h[c+8>>3]):0)i=e<=+h[c+24>>3];else i=0;e=+h[b>>3];if((e>=r?e<=+h[c+16>>3]:0)?(f=+h[b+8>>3],f>=+h[c+8>>3]):0){d=f<=+h[c+24>>3];if(!(i^d))if(i&d)d=1;else l=11;else d=0}else if(i)d=0;else l=11;a:do if((l|0)==11){p=+h[a+8>>3];do if(q==e){r=+h[c+8>>3];if(!(k|p>=r^+h[b+8>>3]>=r^1)?q<=+h[c+16>>3]:0){d=0;break a}}else{j=+h[b+8>>3];if(p==j){if(!(q>=r^e>=r))break;if(!(p>=+h[c+8>>3]))break;if(!(p<=+h[c+24>>3]))break;else{d=0;break a}}o=(j-p)/(e-q);l=q>3];if(!(!(r>=g)|!(r<=e)|!(f>=m))?f<=+h[c+24>>3]:0){d=0;break a}n=+h[c+16>>3];f=(n-r)*o+f;if(f>=m?!(!(n<=e)|(n>=g?!(f<=+h[c+24>>3]):1)):0){d=0;break a}l=p=r?!(!(m<=f)|(!(m>=g)|!(e<=n))):0){d=0;break a}p=+h[c+24>>3];q=(p-m)/o+e;if(q>=r?!(!(p<=f)|(!(p>=g)|!(q<=n))):0){d=0;break a}}while(0);d=-1}while(0);return d|0}function WG(a){a=a|0;var b=0,c=0.0;b=a+16|0;c=+h[b>>3];h[a+32>>3]=c;h[a+48>>3]=c;h[a+40>>3]=+h[a+24>>3];h[a+56>>3]=+h[a+8>>3];h[b>>3]=+h[a>>3];return}function XG(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0.0,g=0.0,i=0.0;if((c[46360]|0)!=(d|0)){w$(+(d|0)*.15915494309189535,183248,183256);c[46360]=d}g=+h[b>>3];e=+h[22907];f=+h[b+8>>3];i=+h[22906];h[a>>3]=e*g-i*f;h[a+8>>3]=i*g+f*e;return}function YG(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0,g=0.0,i=0,j=0,k=0;k=l;l=l+16|0;f=k;e=+h[b>>3];i=b+8|0;g=+h[i>>3];a:do switch(d|0){case 0:{j=11;break}case 90:{h[b>>3]=g;e=-e;j=10;break}case 180:{e=-g;j=10;break}case 270:{h[b>>3]=g;j=10;break}default:{if((d|0)<0){c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];ZG(a,f,0-d|0);break a}if((d|0)>360){c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];YG(a,f,(d>>>0)%360|0);break a}else{c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];XG(a,f,d);break a}}}while(0);if((j|0)==10){h[i>>3]=e;j=11}if((j|0)==11){c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2]}l=k;return}function ZG(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0,g=0.0,i=0,j=0,k=0;k=l;l=l+16|0;f=k;e=+h[b>>3];i=b+8|0;g=+h[i>>3];a:do switch(d|0){case 0:{j=11;break}case 90:{h[b>>3]=-g;j=10;break}case 180:{e=-g;j=10;break}case 270:{h[b>>3]=g;j=10;break}default:{if((d|0)<0){c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];YG(a,f,0-d|0);break a}if((d|0)>360){c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];ZG(a,f,(d>>>0)%360|0);break a}else{c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];XG(a,f,360-d|0);break a}}}while(0);if((j|0)==10){h[i>>3]=e;j=11}if((j|0)==11){c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2]}l=k;return}function _G(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0,f=0.0,g=0.0;g=+h[c>>3];d=+h[c+8>>3];f=d+ +h[b>>3];e=g+ +h[b+24>>3];d=d+ +h[b+16>>3];h[a>>3]=g+ +h[b+8>>3];h[a+8>>3]=f;h[a+16>>3]=e;h[a+24>>3]=d;return}function $G(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0,f=0.0,g=0.0;f=+h[a>>3];d=+h[b>>3]-f;g=+h[a+8>>3];e=+h[b+8>>3]-g;f=(+h[c+8>>3]-g)*d-(+h[c>>3]-f)*e;f=f*f;return +(f<1.0e-10?0.0:f/(e*e+d*d))}function aH(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;g=l;l=l+16|0;f=g+8|0;e=g;a=xx(a,b)|0;if(a|0?(c[f>>2]=e,(N1(a,98183,f)|0)>0):0)h[d>>3]=+h[e>>3];l=g;return}function bH(b,d){b=b|0;d=d|0;var e=0,f=0.0,g=0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+16|0;g=n+8|0;i=n;e=uH(96)|0;m=b+16|0;c[(c[m>>2]|0)+8>>2]=e;e=xx(b,98187)|0;if(!e){e=Ta(98196)|0;if(e|0)k=3}else k=3;if((k|0)==3)cb(98208,e|0,1)|0;e=(cH(b)|0)&255;a[(c[m>>2]|0)+115>>0]=e;if(0==0?(e=xx(b,98219)|0,c[46362]=e,(e|0)==0):0)c[46362]=c[46361];f=+LL(b,nx(b,0,98229,0)|0,0.0,0.0);h[c[(c[m>>2]|0)+8>>2]>>3]=f;e=xx(b,98237)|0;a:do if(!e)e=0;else{switch(a[e>>0]|0){case 76:{if(!(b$(e,98245)|0)){e=1;break a}break}case 66:{if(!(b$(e,98248)|0)){e=2;break a}break}case 82:{e=(b$(e,98251)|0)==0;e=e?3:0;break a}default:{e=0;break a}}e=0}while(0);c[(c[m>>2]|0)+116>>2]=e<<2|(d<<24>>24==0?0:e);f=+LL(b,nx(b,0,98254,0)|0,.25,.02);h[i>>3]=f;f=f*72.0;c[(c[m>>2]|0)+248>>2]=~~(f+(f>=0.0?.5:-.5));e=NL(b,nx(b,0,98262,0)|0,0)|0;if(e){c[g>>2]=i;if(N1(e,98183,g)|0){f=+h[i>>3];if(f<.02){h[i>>3]=.02;f=.02}}else{h[i>>3]=.5;f=.5}if(P0(e,98270)|0)a[(c[m>>2]|0)+276>>0]=1}else{h[i>>3]=.5;f=.5}f=f*72.0;c[(c[m>>2]|0)+252>>2]=~~(f+(f>=0.0?.5:-.5));i=(KL(b,nx(b,0,98278,0)|0,0,0)|0)&255;a[(c[m>>2]|0)+243>>0]=i;i=aM(NL(b,nx(b,0,98288,0)|0,0)|0,20572,20588)|0;c[(c[m>>2]|0)+244>>2]=i;dH(b);i=eH(b,98298,(c[(c[m>>2]|0)+8>>2]|0)+64|0)|0;e=c[(c[m>>2]|0)+8>>2]|0;a[e+80>>0]=i;eH(b,98303,e+48|0)|0;e=QL(xx(b,98308)|0)|0;a[(c[(c[m>>2]|0)+8>>2]|0)+82>>0]=e;e=xx(b,98315)|0;do if(!e){e=xx(b,98322)|0;if(e|0){e=(a[e>>0]|32)<<24>>24==108&1;k=27;break}e=xx(b,98334)|0;if(e|0){e=QL(e)|0;k=27}}else{e=(a2(e)|0)==90&1;k=27}while(0);if((k|0)==27)a[(c[(c[m>>2]|0)+8>>2]|0)+81>>0]=e;c[46364]=aM(xx(b,98344)|0,20604,20620)|0;a[191874]=QL(xx(b,98356)|0)|0;c[46367]=0;c[46368]=0;h[(c[(c[m>>2]|0)+8>>2]|0)+24>>3]=0.0;e=xx(b,98368)|0;if((e|0)!=0?(a[e>>0]|0)!=0:0)k=32;else k=30;if(((k|0)==30?(j=xx(b,98372)|0,j|0):0)?a[j>>0]|0:0){e=j;k=32}if((k|0)==32){f=+b2(e);h[(c[(c[m>>2]|0)+8>>2]|0)+24>>3]=f}fH(b);h[22910]=1.e+37;c[46370]=nx(b,0,98383,0)|0;c[46373]=nx(b,0,137952,0)|0;c[46374]=nx(b,0,102470,0)|0;c[46375]=nx(b,1,137966,0)|0;c[46376]=nx(b,1,138034,0)|0;c[46377]=nx(b,1,105204,0)|0;c[46378]=nx(b,1,137741,0)|0;c[46379]=nx(b,1,98392,0)|0;c[46387]=nx(b,1,138e3,0)|0;c[46380]=nx(b,1,98402,0)|0;c[46381]=nx(b,1,98411,0)|0;c[46382]=nx(b,1,98420,0)|0;k=nx(b,1,105198,0)|0;c[46384]=k;if(!k)c[46384]=nx(b,1,105198,102467)|0;c[46385]=nx(b,1,98430,0)|0;c[46388]=nx(b,1,98278,0)|0;c[46402]=nx(b,1,98437,0)|0;c[46391]=nx(b,1,98383,0)|0;c[46383]=nx(b,1,102470,0)|0;c[46389]=nx(b,1,137994,0)|0;c[46390]=nx(b,1,98446,0)|0;c[46393]=nx(b,1,98458,0)|0;c[46392]=nx(b,1,98322,0)|0;c[46394]=nx(b,1,98463,0)|0;c[46395]=nx(b,1,137942,0)|0;c[46396]=nx(b,1,134215,0)|0;c[46386]=nx(b,1,98474,0)|0;c[46397]=nx(b,1,98484,0)|0;c[46398]=nx(b,1,98490,0)|0;c[46399]=nx(b,1,98496,0)|0;c[46400]=nx(b,1,98504,0)|0;c[46401]=nx(b,1,98513,0)|0;c[46403]=nx(b,1,137952,0)|0;c[46404]=nx(b,2,98515,0)|0;c[46406]=nx(b,2,137741,0)|0;c[46407]=nx(b,2,98392,0)|0;c[46409]=nx(b,2,98402,0)|0;c[46410]=nx(b,2,98411,0)|0;c[46411]=nx(b,2,98420,0)|0;c[46412]=nx(b,2,105198,0)|0;c[46413]=nx(b,2,98430,0)|0;c[46422]=nx(b,2,98522,0)|0;c[46414]=nx(b,2,98533,0)|0;c[46425]=nx(b,2,98537,0)|0;c[46426]=nx(b,2,98547,0)|0;c[46427]=nx(b,2,98557,0)|0;c[46428]=nx(b,2,98567,0)|0;c[46429]=nx(b,2,98577,0)|0;c[46430]=nx(b,2,98591,0)|0;c[46431]=nx(b,2,98605,0)|0;c[46432]=nx(b,2,98620,0)|0;c[46433]=nx(b,2,98634,0)|0;c[46405]=nx(b,2,98645,0)|0;c[46417]=nx(b,2,98278,0)|0;c[46415]=nx(b,2,138e3,0)|0;c[46416]=nx(b,2,98652,0)|0;c[46418]=nx(b,2,98661,0)|0;c[46419]=nx(b,2,98671,0)|0;c[46420]=nx(b,2,98484,0)|0;c[46421]=nx(b,2,98496,0)|0;c[46434]=nx(b,2,98682,0)|0;c[46435]=nx(b,2,98691,0)|0;c[46436]=nx(b,2,98437,0)|0;e=ME(b)|0;c[(c[(c[m>>2]|0)+8>>2]|0)+88>>2]=e;e=xx(b,137978)|0;if(e|0?a[e>>0]|0:0){b=pH(e,b)|0;c[(c[(c[m>>2]|0)+8>>2]|0)+92>>2]=b}l=n;return}function cH(a){a=a|0;var b=0,d=0;d=l;l=l+16|0;b=d;a=OL(a,nx(a,0,98781,0)|0,98789)|0;if(((((((O$(a,98795)|0)!=0?(O$(a,98803)|0)!=0:0)?(O$(a,98810)|0)!=0:0)?(O$(a,98813)|0)!=0:0)?(O$(a,98824)|0)!=0:0)?(O$(a,98835)|0)!=0:0)?(O$(a,98845)|0)!=0:0)if((O$(a,98856)|0)!=0?(O$(a,98862)|0)!=0:0)if((O$(a,98789)|0)!=0?(O$(a,98867)|0)!=0:0){c[b>>2]=a;Pw(0,98872,b)|0;a=0}else a=0;else a=2;else a=1;l=d;return a|0}function dH(b){b=b|0;var d=0.0,e=0,f=0;e=xx(b,98739)|0;a:do if(e|0?(f=a[e>>0]|0,f<<24>>24):0)switch(f<<24>>24|0){case 97:{if(f<<24>>24!=97)break a;if(b$(e,98745)|0)break a;c[(c[(c[b+16>>2]|0)+8>>2]|0)+84>>2]=4;break a}case 99:{if(f<<24>>24!=99)break a;if(b$(e,98750)|0)break a;c[(c[(c[b+16>>2]|0)+8>>2]|0)+84>>2]=3;break a}case 101:{if(f<<24>>24!=101)break a;if(b$(e,98759)|0)break a;c[(c[(c[b+16>>2]|0)+8>>2]|0)+84>>2]=5;break a}case 102:{if(f<<24>>24!=102)break a;if(b$(e,98766)|0)break a;c[(c[(c[b+16>>2]|0)+8>>2]|0)+84>>2]=2;break a}default:{d=+b2(e);if(!(d>0.0))break a;b=c[(c[b+16>>2]|0)+8>>2]|0;c[b+84>>2]=1;h[b+16>>3]=d;break a}}while(0);return}function eH(b,d,e){b=b|0;d=d|0;e=e|0;var f=0.0,g=0.0,i=0,j=0,k=0,m=0,n=0,o=0;o=l;l=l+48|0;m=o+32|0;i=o+16|0;k=o+8|0;j=o;n=o+40|0;a[n>>0]=0;b=xx(b,d)|0;do if(b){c[i>>2]=k;c[i+4>>2]=j;c[i+8>>2]=n;i=(N1(b,98723,i)|0)>1;g=+h[k>>3];f=+h[j>>3];if(i&g>0.0&f>0.0){g=g*72.0;h[e>>3]=+(~~(g+(g>=0.0?.5:-.5))|0);g=f*72.0;h[e+8>>3]=+(~~(g+(g>=0.0?.5:-.5))|0);b=(a[n>>0]|0)==33;break}a[n>>0]=0;c[m>>2]=k;c[m+4>>2]=n;m=(N1(b,98733,m)|0)>0;f=+h[k>>3];if(m&f>0.0){g=f*72.0;g=+(~~(g+(g>=0.0?.5:-.5))|0);h[e>>3]=g;h[e+8>>3]=g;b=(a[n>>0]|0)==33}else b=0}else b=0;while(0);l=o;return b&1|0}function fH(b){b=b|0;var d=0,e=0,f=0.0,g=0.0,i=0;d=xx(b,105198)|0;do if(d|0?a[d>>0]|0:0){e=(c[(c[b+60>>2]|0)+16>>2]|0)+113|0;a[e>>0]=a[e>>0]|8;e=(Rz(d)|0)!=0;g=+LL(b,nx(b,0,98402,0)|0,14.0,1.0);i=OL(b,nx(b,0,98411,0)|0,104968)|0;d=kH(b,d,e?2:0,g,i,OL(b,nx(b,0,98420,0)|0,134232)|0)|0;i=b+16|0;c[(c[i>>2]|0)+12>>2]=d;d=xx(b,102602)|0;e=(d|0)!=0;do if((fz(b)|0)==(b|0)){if(e?(a[d>>0]|0)==116:0){d=1;break}d=0}else{if(e?(a[d>>0]|0)==98:0){d=0;break}d=1}while(0);e=xx(b,98700)|0;a:do if(e)switch(a[e>>0]|0){case 108:{d=d|2;break a}case 114:{d=d|4;break a}default:break a}while(0);a[(c[i>>2]|0)+275>>0]=d;if((fz(b)|0)!=(b|0)){d=c[(c[i>>2]|0)+12>>2]|0;f=+h[d+24>>3]+16.0;g=+h[d+32>>3]+8.0;b=(c[(c[(fz(b)|0)+16>>2]|0)+116>>2]&1|0)==0;d=c[i>>2]|0;e=a[d+275>>0]<<1&2;if(b){b=e&255;h[d+48+(b<<4)>>3]=f;h[d+48+(b<<4)+8>>3]=g;break}else{b=(e^3)&255;h[d+48+(b<<4)>>3]=g;h[d+48+(b<<4)+8>>3]=f;break}}}while(0);return}function gH(a){a=a|0;var b=0,d=0,e=0;e=a+16|0;d=c[e>>2]|0;b=c[d+8>>2]|0;do if(!b)b=d;else{d=c[b+88>>2]|0;if(d){pE(d);d=c[e>>2]|0;b=c[d+8>>2]|0;if(!b){b=d;break}}D_(c[b+92>>2]|0);b=c[e>>2]|0}while(0);D_(c[b+8>>2]|0);e=c[e>>2]|0;c[e+8>>2]=0;nH(c[e+12>>2]|0);Gz(a,0,134401);return}function hH(a){a=a|0;var b=0,d=0;d=l;l=l+16|0;b=d;switch(a|0){case 0:{a=98945;break}case 1:{a=98813;break}case 2:{a=98951;break}default:{c[b>>2]=a;Pw(1,98915,b)|0;a=98945}}l=d;return a|0}function iH(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;f=c[d>>2]|0;l=d+24|0;c[l>>2]=0;c[l+4>>2]=0;c[l+8>>2]=0;c[l+12>>2]=0;if(a[f>>0]|0){i=vH((W_(f)|0)+1|0)|0;a[i>>0]=0;j=d+12|0;e=i;a:while(1){b:while(1){h=f+1|0;g=a[f>>0]|0;if(!(g<<24>>24))break a;if(!(g<<24>>24==-1|((g&255)<161|(c[j>>2]|0)!=2))){a[e>>0]=g;h=a[h>>0]|0;g=e+2|0;a[e+1>>0]=h;if(!(h<<24>>24)){e=g;break a}else{e=g;f=f+2|0;continue}}switch(g<<24>>24){case 92:break b;case 10:{k=12;break b}default:{}}a[e>>0]=g;e=e+1|0;f=h}if((k|0)==12){k=0;f=e+1|0;a[e>>0]=0;jH(b,d,i,110);e=f;i=f;f=h;continue}g=a[h>>0]|0;switch(g<<24>>24|0){case 114:case 108:case 110:{g=e+1|0;a[e>>0]=0;jH(b,d,i,a[h>>0]|0);e=g;break}default:{a[e>>0]=g;e=e+1|0;g=i}}i=g;f=(a[h>>0]|0)==0?h:f+2|0}if((i|0)!=(e|0)){a[e>>0]=0;jH(b,d,i,110)}d=d+40|0;c[d>>2]=c[l>>2];c[d+4>>2]=c[l+4>>2];c[d+8>>2]=c[l+8>>2];c[d+12>>2]=c[l+12>>2]}return}function jH(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;var i=0.0,j=0.0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=l;l=l+32|0;q=s+16|0;p=s;r=e+76|0;k=b[r>>1]|0;o=e+72|0;m=c[o>>2]|0;if(!m)n=uH((k*56|0)+112|0)|0;else n=wH(m,k+2|0,56,k+1|0)|0;c[o>>2]=n;k=b[r>>1]|0;m=n+(k*56|0)|0;c[m>>2]=f;a[n+(k*56|0)+48>>0]=g;if((f|0)!=0?(a[f>>0]|0)!=0:0){c[45824]=c[e+4>>2];h[22914]=+h[e+16>>3];g=c[d+144>>2]|0;c[n+(k*56|0)+4>>2]=nb[c[g>>2]&63](g,183296,1)|0;wL(p,d,m);j=+h[p>>3];h[q>>3]=j;i=+h[p+8>>3]}else{h[q>>3]=0.0;i=+(~~(+h[e+16>>3]*1.2)|0);h[n+(k*56|0)+40>>3]=i;j=0.0}b[r>>1]=(b[r>>1]|0)+1<<16>>16;r=e+24|0;h[r>>3]=+h[(+h[r>>3]>j?r:q)>>3];r=e+32|0;h[r>>3]=+h[r>>3]+i;l=s;return}function kH(b,e,f,g,i,j){b=b|0;e=e|0;f=f|0;g=+g;i=i|0;j=j|0;var k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=l;l=l+32|0;r=u+16|0;q=u+8|0;p=u;t=uH(88)|0;switch(pz(b)|0){case 0:{m=0;s=c[b+60>>2]|0;n=b;o=0;break}case 1:{m=0;s=fz(ez(b)|0)|0;n=0;o=b;break}case 2:{m=b;s=fz(ez(c[((c[b>>2]&3|0)==2?b:b+-48|0)+40>>2]|0)|0)|0;n=0;o=0;break}default:{m=0;s=0;n=0;o=0}}c[t+4>>2]=i;c[t+8>>2]=j;h[t+16>>3]=g;k=s+16|0;j=t+12|0;c[j>>2]=d[(c[k>>2]|0)+115>>0];a:do if(f&4){c[t>>2]=n1(e)|0;if(f&2|0)a[t+82>>0]=1}else switch(f|0){case 2:{c[t>>2]=n1(e)|0;a[t+82>>0]=1;if(!(kR(b,t)|0))break a;switch(pz(b)|0){case 0:{c[p>>2]=ry(n)|0;Pw(3,98957,p)|0;break a}case 1:{c[q>>2]=ry(o)|0;Pw(3,98979,q)|0;break a}case 2:{p=ry(c[((c[m>>2]&3|0)==3?m:m+48|0)+40>>2]|0)|0;q=(ey(s)|0)!=0;s=ry(c[((c[m>>2]&3|0)==2?m:m+-48|0)+40>>2]|0)|0;c[r>>2]=p;c[r+4>>2]=q?134656:138665;c[r+8>>2]=s;Pw(3,99e3,r)|0;break a}default:break a}}case 0:{i=lH(e,b,0)|0;c[t>>2]=i;if((c[j>>2]|0)==1)i=RM(i)|0;else i=OM(i,s)|0;D_(c[t>>2]|0);c[t>>2]=i;iH(c[(c[k>>2]|0)+144>>2]|0,t);break a}default:qa(99027,99043,166,99052)}while(0);l=u;return t|0}function lH(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;switch(pz(d)|0){case 0:{i=ry(d)|0;g=W_(i)|0;f=c[(c[d+16>>2]|0)+12>>2]|0;if(f){f=c[f>>2]|0;if(!b){v=0;t=2;u=2;s=2;h=2;y=99075;m=99072;j=102467;o=191979;q=191979;p=0;r=0;n=2;w=f;x=99069}else{v=0;t=2;u=2;s=2;h=2;y=99075;m=99072;j=102467;o=191979;q=191979;p=0;r=0;n=W_(f)|0;w=f;x=99069}}else{v=0;t=2;u=2;s=2;h=2;y=99075;m=99072;j=102467;o=191979;q=191979;p=0;r=0;n=2;w=99063;x=99069}break}case 1:{i=ry(ez(d)|0)|0;g=W_(i)|0;j=ry(d)|0;h=W_(j)|0;f=c[(c[d+16>>2]|0)+104>>2]|0;if(f){f=c[f>>2]|0;if(!b){v=0;t=2;u=2;s=2;y=99075;m=99072;o=191979;q=191979;p=0;r=0;n=2;w=f;x=99069}else{v=0;t=2;u=2;s=2;y=99075;m=99072;o=191979;q=191979;p=0;r=0;n=W_(f)|0;w=f;x=99069}}else{v=0;t=2;u=2;s=2;y=99075;m=99072;o=191979;q=191979;p=0;r=0;n=2;w=99063;x=99069}break}case 2:{h=d+48|0;i=ry(fz(ez(c[((c[d>>2]&3|0)==3?d:h)+40>>2]|0)|0)|0)|0;g=W_(i)|0;l=ry(c[((c[d>>2]&3|0)==3?d:h)+40>>2]|0)|0;k=W_(l)|0;f=d+16|0;q=c[(c[f>>2]|0)+52>>2]|0;if(!q)r=0;else r=W_(q)|0;m=ry(c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0)|0;f=c[f>>2]|0;o=c[f+92>>2]|0;if(!o)p=0;else p=W_(o)|0;j=W_(m)|0;f=c[f+96>>2]|0;if(f){f=c[f>>2]|0;if(!b)n=2;else n=W_(f)|0}else{n=2;f=99063}x=(ey(fz(ez(c[((c[d>>2]&3|0)==3?d:h)+40>>2]|0)|0)|0)|0)==0;v=1;t=k;u=j;s=k+2+(r|0?r+1|0:0)+j+(p|0?p+1|0:0)|0;h=2;y=l;j=102467;w=f;x=x?138665:134656;break}default:{v=0;t=2;u=2;s=2;h=2;g=2;y=99075;m=99072;j=102467;i=99066;o=191979;q=191979;p=0;r=0;n=2;w=99063;x=99069}}e=(e|0)==0;l=0;f=b;a:while(1){d=f+1|0;b:do switch(a[f>>0]|0){case 0:break a;case 92:{f=f+2|0;switch(a[d>>0]|0){case 78:{k=h;break b}case 71:{k=g;break b}case 69:{k=s;break b}case 72:{k=u;break b}case 84:{k=t;break b}case 76:{k=n;break b}case 92:{if(!e){k=1;break b}break}default:{}}k=2;break}default:{k=1;f=d}}while(0);l=l+k|0}s=vH(l+1|0)|0;n=(v|0)==0;l=(r|0)==0;d=(p|0)==0;f=s;g=b;c:while(1){k=g+1|0;h=a[g>>0]|0;switch(h<<24>>24){case 0:break c;case 92:break;default:{a[f>>0]=h;f=f+1|0;g=k;continue c}}h=g+2|0;g=a[k>>0]|0;switch(g<<24>>24|0){case 71:{g=i;while(1){b=a[g>>0]|0;a[f>>0]=b;if(!(b<<24>>24)){g=h;continue c}g=g+1|0;f=f+1|0}}case 78:{g=j;while(1){b=a[g>>0]|0;a[f>>0]=b;if(!(b<<24>>24)){g=h;continue c}g=g+1|0;f=f+1|0}}case 69:{if(n){g=h;continue c}else g=y;while(1){b=a[g>>0]|0;a[f>>0]=b;if(!(b<<24>>24))break;g=g+1|0;f=f+1|0}if(l)g=x;else{a[f>>0]=58;g=q;while(1){f=f+1|0;b=a[g>>0]|0;a[f>>0]=b;if(!(b<<24>>24)){g=x;break}else g=g+1|0}}while(1){b=a[g>>0]|0;a[f>>0]=b;if(!(b<<24>>24)){g=m;break}g=g+1|0;f=f+1|0}while(1){b=a[g>>0]|0;a[f>>0]=b;if(!(b<<24>>24))break;g=g+1|0;f=f+1|0}if(d){g=h;continue c}a[f>>0]=58;g=o;while(1){f=f+1|0;b=a[g>>0]|0;a[f>>0]=b;if(!(b<<24>>24)){g=h;continue c}else g=g+1|0}}case 84:{g=y;while(1){b=a[g>>0]|0;a[f>>0]=b;if(!(b<<24>>24)){g=h;continue c}g=g+1|0;f=f+1|0}}case 72:{g=m;while(1){b=a[g>>0]|0;a[f>>0]=b;if(!(b<<24>>24)){g=h;continue c}f=f+1|0;g=g+1|0}}case 76:{g=w;while(1){b=a[g>>0]|0;a[f>>0]=b;if(!(b<<24>>24)){g=h;continue c}f=f+1|0;g=g+1|0}}case 92:{if(!e){a[f>>0]=92;f=f+1|0;g=h;continue c}break}default:{}}a[f>>0]=92;a[f+1>>0]=g;f=f+2|0;g=h}a[f>>0]=0;return s|0}function mH(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;if(a|0){d=a;e=0;while(1){if((e|0)>=(b|0))break;if(!e)D_(c[d>>2]|0);g=c[d+8>>2]|0;if(g|0?(f=c[d+12>>2]|0,f|0):0)tb[f&127](g);d=d+56|0;e=e+1|0}D_(a)}return}function nH(d){d=d|0;var e=0;if(d|0){D_(c[d>>2]|0);e=d+72|0;if(a[d+82>>0]|0){e=c[e>>2]|0;if(e|0)XQ(e,1)}else mH(c[e>>2]|0,b[d+76>>1]|0);D_(d)}return}function oH(d,e,f){d=d|0;e=e|0;f=f|0;var g=0.0,i=0,j=0.0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=l;l=l+32|0;q=u+16|0;r=u;k=c[d+16>>2]|0;s=k+12|0;t=c[s>>2]|0;c[s>>2]=e;if(!(a[f+82>>0]|0)){p=f+76|0;if((b[p>>1]|0)>=1){RO(d,0);UO(d,c[f+8>>2]|0);switch(a[f+80>>0]|0){case 116:{j=+h[f+64>>3];g=+h[f+48>>3]*.5+j;break}case 98:{j=+h[f+64>>3];g=+h[f+48>>3]*-.5+j+ +h[f+32>>3];break}default:{j=+h[f+64>>3];g=+h[f+32>>3]*.5+j}}g=g-+h[f+16>>3];o=r+8|0;h[o>>3]=g;if(b[k+260>>1]&512)h[o>>3]=g-j;m=f+72|0;n=f+56|0;i=f+40|0;e=0;while(1){if((e|0)>=(b[p>>1]|0))break;k=c[m>>2]|0;switch(a[k+(e*56|0)+48>>0]|0){case 108:{g=+h[n>>3]-+h[i>>3]*.5;break}case 114:{g=+h[i>>3]*.5+ +h[n>>3];break}default:g=+h[n>>3]}h[r>>3]=g;c[q>>2]=c[r>>2];c[q+4>>2]=c[r+4>>2];c[q+8>>2]=c[r+8>>2];c[q+12>>2]=c[r+12>>2];TO(d,q,k+(e*56|0)|0);h[o>>3]=+h[o>>3]-+h[(c[m>>2]|0)+(e*56|0)+40>>3];e=e+1|0}SO(d);i=18}}else{CQ(d,c[f+72>>2]|0,f);i=18}if((i|0)==18)c[s>>2]=t;l=u;return}function pH(a,b){a=a|0;b=b|0;return lH(a,b,1)|0}function qH(a){a=a|0;return rH(a,0)|0}function rH(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;e=c[46437]|0;if(!e){c[46438]=64;e=vH(64)|0;c[46437]=e}j=d<<24>>24==0;i=0;f=0;h=b;while(1){if(!h)break;d=a[h>>0]|0;if(!(d<<24>>24))break;b=c[46438]|0;if((i|0)>(b+-8|0)){e=b<<1;c[46438]=e;e=xH(c[46437]|0,e)|0;c[46437]=e;e=e+i|0;d=a[h>>0]|0}a:do switch(d<<24>>24){case 38:{if(j?(sH(h)|0)!=0:0)k=18;else{f=5;d=99104}break}case 60:{f=4;d=99127;break}case 62:{f=4;d=99110;break}case 45:{f=5;d=99121;break}default:{if((f|0)!=0&d<<24>>24==32)if((a[f>>0]|0)==32){f=6;d=99097;break a}else{k=18;break a}switch(d<<24>>24){case 34:{f=6;d=99090;break a}case 39:{f=5;d=99115;break a}case 10:if(j){k=18;break a}else{f=5;d=99084;break a}default:{k=18;break a}}}}while(0);if((k|0)==18){k=0;d=j|d<<24>>24!=13;f=d?1:5;d=d?h:99078}g=e+f|0;b=f;while(1){if(!b)break;a[e>>0]=a[d>>0]|0;b=b+-1|0;d=d+1|0;e=e+1|0}b=h;i=f+i|0;e=g;h=h+1|0;f=b}a[e>>0]=0;return c[46437]|0}function sH(b){b=b|0;var c=0,d=0;d=b+1|0;c=a[d>>0]|0;a:do if(c<<24>>24==35){d=b+2|0;c=a[d>>0]|0;switch(c<<24>>24){case 88:case 120:break;default:{b=d;while(1){d=b+1|0;if((c+-48&255)>=10)break a;b=d;c=a[d>>0]|0}}}d=b+3|0;while(1){c=a[d>>0]|0;if((c+-48&255)>=10)switch(c<<24>>24){case 65:case 66:case 67:case 68:case 69:case 70:case 97:case 98:case 99:case 100:case 101:case 102:break;default:break a}d=d+1|0}}else while(1){b=d+1|0;if(((c&-33)+-65&255)>=26)break a;d=b;c=a[b>>0]|0}while(0);return c<<24>>24==59|0}function tH(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;d=c[46439]|0;if(!d){c[46440]=64;d=vH(64)|0;c[46439]=d;i=0}else i=0;while(1){if(!b)break;e=a[b>>0]|0;if(!(e<<24>>24))break;f=c[46440]|0;if((i|0)>(f+-8|0)){d=f<<1;c[46440]=d;d=xH(c[46439]|0,d)|0;c[46439]=d;d=d+i|0;e=a[b>>0]|0}switch(e<<24>>24){case 38:{if(!(sH(b)|0)){g=5;e=99104}else j=12;break}case 60:{g=4;e=99127;break}case 62:{g=4;e=99110;break}case 34:{g=6;e=99090;break}case 39:{g=5;e=99115;break}default:j=12}if((j|0)==12){j=0;g=1;e=b}h=d+g|0;f=g;while(1){if(!f)break;a[d>>0]=a[e>>0]|0;f=f+-1|0;e=e+1|0;d=d+1|0}i=g+i|0;d=h;b=b+1|0}a[d>>0]=0;return c[46439]|0}function uH(a){a=a|0;var b=0;if(!a)a=0;else{b=vH(a)|0;H3(b|0,0,a|0)|0;a=b}return a|0}function vH(a){a=a|0;if(a){a=C_(a)|0;if(!a){E1(108658,14,1,c[15686]|0)|0;a=0}}else a=0;return a|0}function wH(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;a=F_(a,O(d,b)|0)|0;if(!((b|0)!=0&(a|0)==0)){if(b>>>0>e>>>0)H3(a+(O(e,d)|0)|0,0,O(b-e|0,d)|0)|0}else E1(108658,14,1,c[15686]|0)|0;return a|0}function xH(a,b){a=a|0;b=b|0;a=F_(a,b)|0;if((b|0)!=0&(a|0)==0)E1(108658,14,1,c[15686]|0)|0;return a|0} +function ol(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0;M=l;l=l+320|0;H=M+296|0;G=M+280|0;x=M+136|0;w=M+120|0;n=M+104|0;i=M+88|0;f=M+80|0;E=M+16|0;z=M;j=M+264|0;k=M+248|0;m=M+232|0;o=M+216|0;A=M+200|0;B=M+184|0;y=M+168|0;D=M+152|0;g=pl(xx(a,87703)|0,b)|0;q=pl(xx(a,87709)|0,b)|0;r=(q|0)!=0;b=(g|0)!=0;do if(b|r?(L=a+16|0,e=c[(c[L>>2]|0)+8>>2]|0,e|0):0){if((c[e+4>>2]|0)>1){K=ry(c[((c[a>>2]&3|0)==3?a:a+48|0)+40>>2]|0)|0;L=ry(c[((c[a>>2]&3|0)==2?a:a+-48|0)+40>>2]|0)|0;c[f>>2]=K;c[f+4>>2]=L;Pw(0,87715,f)|0;break}I=c[e>>2]|0;e=c[I+4>>2]|0;p=c[a>>2]&3;s=a+-48|0;t=c[((p|0)==2?a:s)+40>>2]|0;u=a+48|0;p=c[((p|0)==3?a:u)+40>>2]|0;J=vH(48)|0;v=I+12|0;c[J+12>>2]=c[v>>2];C=I+8|0;c[J+8>>2]=c[C>>2];do if(b){h=(c[g+16>>2]|0)+16|0;g=(c[t+16>>2]|0)+16|0;c[H>>2]=c[g>>2];c[H+4>>2]=c[g+4>>2];c[H+8>>2]=c[g+8>>2];c[H+12>>2]=c[g+12>>2];if(!(ql(H,h)|0)){o=ry(c[((c[a>>2]&3|0)==3?a:u)+40>>2]|0)|0;F=ry(c[((c[a>>2]&3|0)==2?a:s)+40>>2]|0)|0;K=xx(a,87703)|0;c[i>>2]=o;c[i+4>>2]=F;c[i+8>>2]=K;Pw(0,87756,i)|0;K=26;break}b=c[I>>2]|0;c[H>>2]=c[b>>2];c[H+4>>2]=c[b+4>>2];c[H+8>>2]=c[b+8>>2];c[H+12>>2]=c[b+12>>2];if(ql(H,h)|0){F=(c[p+16>>2]|0)+16|0;c[H>>2]=c[F>>2];c[H+4>>2]=c[F+4>>2];c[H+8>>2]=c[F+8>>2];c[H+12>>2]=c[F+12>>2];if(ql(H,h)|0){o=ry(c[((c[a>>2]&3|0)==3?a:u)+40>>2]|0)|0;F=ry(c[((c[a>>2]&3|0)==2?a:s)+40>>2]|0)|0;K=xx(a,87703)|0;c[n>>2]=o;c[n+4>>2]=F;c[n+8>>2]=K;Pw(0,87799,n)|0;K=26;break}if(!(c[C>>2]|0))qa(87841,87852,369,87863);o=I+16|0;c[G>>2]=c[b>>2];c[G+4>>2]=c[b+4>>2];c[G+8>>2]=c[b+8>>2];c[G+12>>2]=c[b+12>>2];c[H>>2]=c[o>>2];c[H+4>>2]=c[o+4>>2];c[H+8>>2]=c[o+8>>2];c[H+12>>2]=c[o+12>>2];rl(z,G,H,h);F=(c[I>>2]|0)+48|0;c[F>>2]=c[z>>2];c[F+4>>2]=c[z+4>>2];c[F+8>>2]=c[z+8>>2];c[F+12>>2]=c[z+12>>2];F=(c[I>>2]|0)+16|0;c[G>>2]=c[z>>2];c[G+4>>2]=c[z+4>>2];c[G+8>>2]=c[z+8>>2];c[G+12>>2]=c[z+12>>2];c[H>>2]=c[o>>2];c[H+4>>2]=c[o+4>>2];c[H+8>>2]=c[o+8>>2];c[H+12>>2]=c[o+12>>2];sl(j,G,H);c[F>>2]=c[j>>2];c[F+4>>2]=c[j+4>>2];c[F+8>>2]=c[j+8>>2];c[F+12>>2]=c[j+12>>2];F=c[I>>2]|0;b=F+16|0;c[G>>2]=c[b>>2];c[G+4>>2]=c[b+4>>2];c[G+8>>2]=c[b+8>>2];c[G+12>>2]=c[b+12>>2];c[H>>2]=c[o>>2];c[H+4>>2]=c[o+4>>2];c[H+8>>2]=c[o+8>>2];c[H+12>>2]=c[o+12>>2];sl(k,G,H);c[F>>2]=c[k>>2];c[F+4>>2]=c[k+4>>2];c[F+8>>2]=c[k+8>>2];c[F+12>>2]=c[k+12>>2];F=c[I>>2]|0;b=F+32|0;F=F+16|0;c[G>>2]=c[F>>2];c[G+4>>2]=c[F+4>>2];c[G+8>>2]=c[F+8>>2];c[G+12>>2]=c[F+12>>2];c[H>>2]=c[z>>2];c[H+4>>2]=c[z+4>>2];c[H+8>>2]=c[z+8>>2];c[H+12>>2]=c[z+12>>2];sl(m,G,H);c[b>>2]=c[m>>2];c[b+4>>2]=c[m+4>>2];c[b+8>>2]=c[m+8>>2];c[b+12>>2]=c[m+12>>2];b=c[v>>2]|0;if(!b){F=3;break}F=(FE(a,c[I>>2]|0,0,0,J,b)|0)+3|0;break}g=e+-1|0;b=0;while(1){if((b|0)>=(g|0))break;if(tl((c[I>>2]|0)+(b<<4)|0,h)|0)break;b=b+3|0}e=c[v>>2]|0;f=(e|0)!=0;if((b|0)==(g|0))if(f){F=J+32|0;m=I+32|0;n=(c[I>>2]|0)+(g<<4)|0;c[G>>2]=c[m>>2];c[G+4>>2]=c[m+4>>2];c[G+8>>2]=c[m+8>>2];c[G+12>>2]=c[m+12>>2];c[H>>2]=c[n>>2];c[H+4>>2]=c[n+4>>2];c[H+8>>2]=c[n+8>>2];c[H+12>>2]=c[n+12>>2];rl(o,G,H,h);c[F>>2]=c[o>>2];c[F+4>>2]=c[o+4>>2];c[F+8>>2]=c[o+8>>2];c[F+12>>2]=c[o+12>>2];F=g;break}else qa(87880,87852,387,87863);else{if(f)b=FE(a,c[I>>2]|0,0,b,J,e)|0;F=b+3|0;break}}else K=26;while(0);if((K|0)==26){b=e+-1|0;if(!(c[v>>2]|0))F=b;else{F=J+32|0;o=I+32|0;c[F>>2]=c[o>>2];c[F+4>>2]=c[o+4>>2];c[F+8>>2]=c[o+8>>2];c[F+12>>2]=c[o+12>>2];F=b}}do if(r){f=(c[q+16>>2]|0)+16|0;r=(c[p+16>>2]|0)+16|0;c[H>>2]=c[r>>2];c[H+4>>2]=c[r+4>>2];c[H+8>>2]=c[r+8>>2];c[H+12>>2]=c[r+12>>2];if(!(ql(H,f)|0)){G=ry(c[((c[a>>2]&3|0)==3?a:u)+40>>2]|0)|0;H=ry(c[((c[a>>2]&3|0)==2?a:s)+40>>2]|0)|0;K=xx(a,87709)|0;c[w>>2]=G;c[w+4>>2]=H;c[w+8>>2]=K;Pw(0,87891,w)|0;K=52;break}b=(c[I>>2]|0)+(F<<4)|0;c[H>>2]=c[b>>2];c[H+4>>2]=c[b+4>>2];c[H+8>>2]=c[b+8>>2];c[H+12>>2]=c[b+12>>2];if(ql(H,f)|0){E=(c[t+16>>2]|0)+16|0;c[H>>2]=c[E>>2];c[H+4>>2]=c[E+4>>2];c[H+8>>2]=c[E+8>>2];c[H+12>>2]=c[E+12>>2];if(ql(H,f)|0){G=ry(c[((c[a>>2]&3|0)==3?a:u)+40>>2]|0)|0;H=ry(c[((c[a>>2]&3|0)==2?a:s)+40>>2]|0)|0;K=xx(a,87709)|0;c[x>>2]=G;c[x+4>>2]=H;c[x+8>>2]=K;Pw(0,87934,x)|0;K=52;break}if(!(c[v>>2]|0))qa(87880,87852,429,87863);x=J+32|0;c[G>>2]=c[b>>2];c[G+4>>2]=c[b+4>>2];c[G+8>>2]=c[b+8>>2];c[G+12>>2]=c[b+12>>2];c[H>>2]=c[x>>2];c[H+4>>2]=c[x+4>>2];c[H+8>>2]=c[x+8>>2];c[H+12>>2]=c[x+12>>2];rl(z,G,H,f);d=F+-3|0;E=(c[I>>2]|0)+(d<<4)|0;c[E>>2]=c[z>>2];c[E+4>>2]=c[z+4>>2];c[E+8>>2]=c[z+8>>2];c[E+12>>2]=c[z+12>>2];E=F+-1|0;b=(c[I>>2]|0)+(E<<4)|0;c[G>>2]=c[z>>2];c[G+4>>2]=c[z+4>>2];c[G+8>>2]=c[z+8>>2];c[G+12>>2]=c[z+12>>2];c[H>>2]=c[x>>2];c[H+4>>2]=c[x+4>>2];c[H+8>>2]=c[x+8>>2];c[H+12>>2]=c[x+12>>2];sl(A,G,H);c[b>>2]=c[A>>2];c[b+4>>2]=c[A+4>>2];c[b+8>>2]=c[A+8>>2];c[b+12>>2]=c[A+12>>2];b=c[I>>2]|0;D=b+(F<<4)|0;b=b+(E<<4)|0;c[G>>2]=c[b>>2];c[G+4>>2]=c[b+4>>2];c[G+8>>2]=c[b+8>>2];c[G+12>>2]=c[b+12>>2];c[H>>2]=c[x>>2];c[H+4>>2]=c[x+4>>2];c[H+8>>2]=c[x+8>>2];c[H+12>>2]=c[x+12>>2];sl(B,G,H);c[D>>2]=c[B>>2];c[D+4>>2]=c[B+4>>2];c[D+8>>2]=c[B+8>>2];c[D+12>>2]=c[B+12>>2];D=c[I>>2]|0;b=D+(F+-2<<4)|0;E=D+(E<<4)|0;c[G>>2]=c[E>>2];c[G+4>>2]=c[E+4>>2];c[G+8>>2]=c[E+8>>2];c[G+12>>2]=c[E+12>>2];c[H>>2]=c[z>>2];c[H+4>>2]=c[z+4>>2];c[H+8>>2]=c[z+8>>2];c[H+12>>2]=c[z+12>>2];sl(y,G,H);c[b>>2]=c[y>>2];c[b+4>>2]=c[y+4>>2];c[b+8>>2]=c[y+8>>2];c[b+12>>2]=c[y+12>>2];b=c[C>>2]|0;if(!b)break;d=HE(a,c[I>>2]|0,d,d,J,b)|0;break}e=F;while(1){if((e|0)>0)b=0;else break;while(1){if((b|0)==4)break;B=E+(b<<4)|0;A=(c[I>>2]|0)+(e-b<<4)|0;c[B>>2]=c[A>>2];c[B+4>>2]=c[A+4>>2];c[B+8>>2]=c[A+8>>2];c[B+12>>2]=c[A+12>>2];b=b+1|0}if(tl(E,f)|0){b=0;K=43;break}e=e+-3|0}a:do if((K|0)==43)while(1){K=0;if((b|0)==4)break a;K=(c[I>>2]|0)+(e-b<<4)|0;B=E+(b<<4)|0;c[K>>2]=c[B>>2];c[K+4>>2]=c[B+4>>2];c[K+8>>2]=c[B+8>>2];c[K+12>>2]=c[B+12>>2];b=b+1|0;K=43}while(0);if(e|0){d=e+-3|0;b=c[C>>2]|0;if(!b)break;d=HE(a,c[I>>2]|0,d,F+-3|0,J,b)|0;break}if(!(c[C>>2]|0))qa(87841,87852,452,87863);else{d=J+16|0;E=I+16|0;a=c[I>>2]|0;c[G>>2]=c[E>>2];c[G+4>>2]=c[E+4>>2];c[G+8>>2]=c[E+8>>2];c[G+12>>2]=c[E+12>>2];c[H>>2]=c[a>>2];c[H+4>>2]=c[a+4>>2];c[H+8>>2]=c[a+8>>2];c[H+12>>2]=c[a+12>>2];rl(D,G,H,f);c[d>>2]=c[D>>2];c[d+4>>2]=c[D+4>>2];c[d+8>>2]=c[D+8>>2];c[d+12>>2]=c[D+12>>2];d=0;break}}else K=52;while(0);if((K|0)==52)if(!(c[C>>2]|0))d=0;else{d=J+16|0;K=I+16|0;c[d>>2]=c[K>>2];c[d+4>>2]=c[K+4>>2];c[d+8>>2]=c[K+8>>2];c[d+12>>2]=c[K+12>>2];d=0}b=F-d+1|0;e=J+4|0;c[e>>2]=b;c[J>>2]=vH(b<<4)|0;b=0;while(1){if((b|0)>=(c[e>>2]|0))break;K=(c[J>>2]|0)+(b<<4)|0;a=(c[I>>2]|0)+(d<<4)|0;c[K>>2]=c[a>>2];c[K+4>>2]=c[a+4>>2];c[K+8>>2]=c[a+8>>2];c[K+12>>2]=c[a+12>>2];d=d+1|0;b=b+1|0}D_(c[I>>2]|0);D_(I);c[c[(c[L>>2]|0)+8>>2]>>2]=J}while(0);l=M;return}function pl(b,d){b=b|0;d=d|0;var e=0,f=0;f=l;l=l+16|0;e=f;if((b|0)!=0?(a[b>>0]|0)!=0:0){d=vM(d,b)|0;if(!d){c[e>>2]=b;Pw(0,88054,e)|0;d=0}}else d=0;l=f;return d|0}function ql(a,b){a=a|0;b=b|0;var c=0.0,d=0.0;d=+h[a>>3];if((+h[b>>3]<=d?d<=+h[b+16>>3]:0)?(c=+h[a+8>>3],+h[b+8>>3]<=c):0)a=c<=+h[b+24>>3]&1;else a=0;return a|0}function rl(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,g=0.0,i=0,j=0.0,k=0.0,m=0.0,n=0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0,v=0,w=0,x=0,y=0.0,z=0,A=0,B=0,C=0;C=l;l=l+464|0;n=C+48|0;B=C+32|0;u=C+16|0;v=C;w=C+364|0;x=C+264|0;z=C+164|0;A=C+64|0;q=+h[b>>3];r=+h[b+8>>3];s=+h[d>>3];t=+h[d+8>>3];c[u>>2]=c[e>>2];c[u+4>>2]=c[e+4>>2];c[u+8>>2]=c[e+8>>2];c[u+12>>2]=c[e+12>>2];e=e+16|0;c[v>>2]=c[e>>2];c[v+4>>2]=c[e+4>>2];c[v+8>>2]=c[e+8>>2];c[v+12>>2]=c[e+12>>2];k=+h[u>>3];if((s=+h[u+8>>3]):0)?f<=+h[v+8>>3]:0){o=f;p=k}else i=4;do if((i|0)==4){j=+h[v>>3];if(s>j){g=r+ +(~~((j-q)*(r-t)/(q-s))|0);f=+h[u+8>>3];if(g>=f?g<=+h[v+8>>3]:0){o=g;p=j;break}}else f=+h[u+8>>3];if(t=k)|!(m<=j))):0){o=f;p=m;break}f=+h[v+8>>3];if(t>f?(y=q+ +(~~((f-r)*(q-s)/(r-t))|0),!(!(y>=k)|!(y<=j))):0){o=f;p=y;break};c[n>>2]=c[b>>2];c[n+4>>2]=c[b+4>>2];c[n+8>>2]=c[b+8>>2];c[n+12>>2]=c[b+12>>2];w=yl(n,w)|0;c[n>>2]=c[d>>2];c[n+4>>2]=c[d+4>>2];c[n+8>>2]=c[d+8>>2];c[n+12>>2]=c[d+12>>2];x=yl(n,x)|0;c[n>>2]=c[u>>2];c[n+4>>2]=c[u+4>>2];c[n+8>>2]=c[u+8>>2];c[n+12>>2]=c[u+12>>2];z=yl(n,z)|0;c[n>>2]=c[v>>2];c[n+4>>2]=c[v+4>>2];c[n+8>>2]=c[v+8>>2];c[n+12>>2]=c[v+12>>2];A=yl(n,A)|0;c[B>>2]=w;c[B+4>>2]=x;c[B+8>>2]=z;c[B+12>>2]=A;Pw(1,87976,B)|0;qa(135312,87852,78,88028)}while(0);h[a>>3]=p;h[a+8>>3]=o;l=C;return}function sl(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0;d=(+h[c+8>>3]+ +h[b+8>>3])*.5;h[a>>3]=(+h[c>>3]+ +h[b>>3])*.5;h[a+8>>3]=d;return}function tl(a,b){a=a|0;b=b|0;var d=0.0,e=0,f=0.0,g=0,i=0,j=0,k=0,m=0;m=l;l=l+80|0;j=m+16|0;k=m;e=0;while(1){if((e|0)==4)break;i=j+(e<<4)|0;g=a+(e<<4)|0;c[i>>2]=c[g>>2];c[i+4>>2]=c[g+4>>2];c[i+8>>2]=c[g+8>>2];c[i+12>>2]=c[g+12>>2];e=e+1|0}e=b+8|0;i=b+24|0;d=+ul(a,0.0,1.0,+h[b>>3],+h[e>>3],+h[i>>3]);if(d>=0.0&d<2.0)XL(k,j,3,d,a,0);else d=2.0;g=b+16|0;f=+ul(a,0.0,d>1.0?1.0:d,+h[g>>3],+h[e>>3],+h[i>>3]);if(f>=0.0&f1.0?1.0:d,+h[e>>3],+h[b>>3],+h[g>>3]);if(f>=0.0&f1.0?1.0:d,+h[i>>3],+h[b>>3],+h[g>>3]);if(f>=0.0&f>3]-d))<=.005){b=+h[a+56>>3];b=!(b>=e)|!(b<=f)?-1.0:c;break a}break}default:{}}XL(i,a,3,.5,j,k);g=(c+b)*.5;b=+ul(j,b,g,d,e,f);if(!(b>=0.0))b=+ul(k,g,c,d,e,f)}while(0);l=m;return +b}function vl(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;var g=0.0,i=0,j=0,k=0,m=0;m=l;l=l+144|0;j=m+80|0;k=m+16|0;i=m;a:do if(!(b==c)){switch(wl(a,d)|0){case 0:{b=-1.0;break a}case 1:{if(+B(+(+h[a+56>>3]-d))<=.005){b=+h[a+48>>3];b=!(b>=e)|!(b<=f)?-1.0:c;break a}break}default:{}}XL(i,a,3,.5,j,k);g=(c+b)*.5;b=+vl(j,b,g,d,e,f);if(!(b>=0.0))b=+vl(k,g,c,d,e,f)}while(0);l=m;return +b}function wl(a,b){a=a|0;b=+b;var c=0,d=0,e=0,f=0.0,g=0,i=0;f=+h[a+8>>3];e=fb&1;c=1;d=e;e=(e|0)==0&1;while(1){if((c|0)==4)break;f=+h[a+(c<<4)+8>>3];i=fb&1;g=e+((d|0)!=0&(i|0)!=(d|0)&1)|0;c=c+1|0;d=i;e=g}return e|0}function xl(a,b){a=a|0;b=+b;var c=0,d=0,e=0,f=0.0,g=0,i=0;f=+h[a>>3];e=fb&1;c=1;d=e;e=(e|0)==0&1;while(1){if((c|0)==4)break;f=+h[a+(c<<4)>>3];i=fb&1;g=e+((d|0)!=0&(i|0)!=(d|0)&1)|0;c=c+1|0;d=i;e=g}return e|0}function yl(a,b){a=a|0;b=b|0;var c=0,d=0,e=0.0;c=l;l=l+16|0;d=c;e=+h[a+8>>3];h[d>>3]=+h[a>>3];h[d+8>>3]=e;Y0(b,88042,d)|0;l=c;return b|0}function zl(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,q=0,r=0,s=0,t=0,u=0,v=0;v=l;l=l+16|0;s=v;u=4;t=C_(40)|0;c[t>>2]=0;r=a+16|0;e=c[r>>2]|0;a:do if(((b[e+238>>1]|0)-(b[e+236>>1]|0)|0)>=2){m=1;d=e;e=c[e+196>>2]|0;b:while(1){n=m+1|0;if(!(c[e+(n<<6)>>2]|0)){q=15;break}else k=0;while(1){h=c[e+(m<<6)>>2]|0;if((k|0)>=(h|0)){m=n;continue b}j=c[(c[e+(m<<6)+4>>2]|0)+(k<<2)>>2]|0;o=0;d=$(20,j|0)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){g=E3(c[f>>2]|0,t|0,u|0)|0;if(!g)bb(f|0,p|0);z=p}else g=-1;if((g|0)==1){d=z;break b}if(d<<24>>24){i=k;d=h;while(1){g=i+1|0;if((g|0)>=(d|0))break;o=0;d=aa(65,j|0,c[(c[e+(m<<6)+4>>2]|0)+(g<<2)>>2]|0)|0;e=o;o=0;if((e|0)!=0&(p|0)!=0){f=E3(c[e>>2]|0,t|0,u|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)==1){d=z;break b}if(!(d<<24>>24))break;d=c[(c[r>>2]|0)+196>>2]|0;i=g;e=d;d=c[d+(m<<6)>>2]|0}if((g-k|0)>1){o=0;na(6,a|0,m|0,k|0,i|0,1);d=o;o=0;if((d|0)!=0&(p|0)!=0){e=E3(c[d>>2]|0,t|0,u|0)|0;if(!e)bb(d|0,p|0);z=p}else e=-1;if((e|0)==1){d=z;break b}}}e=c[r>>2]|0;k=k+1|0;d=e;e=c[e+196>>2]|0}}c:do if((q|0)==15){while(1){if((m|0)>0)k=0;else break;while(1){e=c[d+196>>2]|0;h=c[e+(m<<6)>>2]|0;if((k|0)>=(h|0))break;j=c[(c[e+(m<<6)+4>>2]|0)+(k<<2)>>2]|0;o=0;d=$(21,j|0)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){g=E3(c[f>>2]|0,t|0,u|0)|0;if(!g)bb(f|0,p|0);z=p}else g=-1;if((g|0)==1){d=z;break c}if(d<<24>>24){i=k;d=h;while(1){g=i+1|0;if((g|0)>=(d|0))break;o=0;d=aa(66,j|0,c[(c[e+(m<<6)+4>>2]|0)+(g<<2)>>2]|0)|0;e=o;o=0;if((e|0)!=0&(p|0)!=0){f=E3(c[e>>2]|0,t|0,u|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)==1){d=z;break c}if(!(d<<24>>24))break;d=c[(c[r>>2]|0)+196>>2]|0;i=g;e=d;d=c[d+(m<<6)>>2]|0}if((g-k|0)>1){o=0;na(6,a|0,m|0,k|0,i|0,0);d=o;o=0;if((d|0)!=0&(p|0)!=0){e=E3(c[d>>2]|0,t|0,u|0)|0;if(!e)bb(d|0,p|0);z=p}else e=-1;if((e|0)==1){d=z;break c}}}k=k+1|0;d=c[r>>2]|0}m=m+-1|0;q=15}t=D3(183936,1,t|0,u|0)|0;u=z;o=0;d=o;o=0;if((d|0)!=0&(p|0)!=0){e=E3(c[d>>2]|0,t|0,u|0)|0;if(!e)bb(d|0,p|0);z=p}else e=-1;if((e|0)==1)d=z;else d=0}while(0);d:while(1){if(d){o=0;ca(20,3,88082,s|0)|0;d=o;o=0;if((d|0)!=0&(p|0)!=0){e=E3(c[d>>2]|0,t|0,u|0)|0;if(!e)bb(d|0,p|0);z=p}else e=-1;if((e|0)==1){d=z;continue}else break}else f=1;while(1){d=c[r>>2]|0;if((f|0)>(c[d+180>>2]|0))break a;o=0;ia(99,c[(c[d+184>>2]|0)+(f<<2)>>2]|0);d=o;o=0;if((d|0)!=0&(p|0)!=0){e=E3(c[d>>2]|0,t|0,u|0)|0;if(!e)bb(d|0,p|0);z=p}else e=-1;if((e|0)==1){d=z;continue d}f=f+1|0}}}while(0);D_(t|0);l=v;return}function Al(b){b=b|0;b=c[b+16>>2]|0;if(((a[b+156>>0]|0)==1?(c[b+176>>2]|0)==1:0)?(c[b+184>>2]|0)==1:0)b=(c[b+104>>2]|0)==0&1;else b=0;return b|0}function Bl(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=l;l=l+80|0;h=i+40|0;g=i;e=c[c[(c[a+16>>2]|0)+172>>2]>>2]|0;a=c[c[(c[b+16>>2]|0)+172>>2]>>2]|0;if(((Al(b)|0)<<24>>24!=0?(c[((c[e>>2]&3|0)==3?e:e+48|0)+40>>2]|0)==(c[((c[a>>2]&3|0)==3?a:a+48|0)+40>>2]|0):0)?(Hl(e,a)|0)<<24>>24!=0:0){d=(c[a+16>>2]|0)+16|0;f=g;a=(c[e+16>>2]|0)+16|0;b=f+40|0;do{c[f>>2]=c[a>>2];f=f+4|0;a=a+4|0}while((f|0)<(b|0));f=h;a=d;b=f+40|0;do{c[f>>2]=c[a>>2];f=f+4|0;a=a+4|0}while((f|0)<(b|0));a=(jg(g,h)|0)==0&1}else a=0;l=i;return a|0}function Cl(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=a+16|0;q=c[(c[(c[(c[t>>2]|0)+196>>2]|0)+(b<<6)+4>>2]|0)+(d<<2)>>2]|0;p=d+1|0;m=(f|0)==1;n=q+16|0;l=p;while(1){if((l|0)>(e|0)){g=e;s=p;break}o=c[(c[(c[(c[t>>2]|0)+196>>2]|0)+(b<<6)+4>>2]|0)+(l<<2)>>2]|0;k=o+16|0;a:do if(m)while(1){d=c[k>>2]|0;j=c[c[d+180>>2]>>2]|0;if(!j)break a;h=c[(c[n>>2]|0)+180>>2]|0;i=j+-48|0;f=0;while(1){d=c[h+(f<<2)>>2]|0;if(!d){r=8;break}if((c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0)==(c[((c[j>>2]&3|0)==2?j:i)+40>>2]|0))break;else f=f+1|0}if((r|0)==8){r=0;d=ph(q,c[((c[j>>2]&3|0)==2?j:i)+40>>2]|0,j)|0}while(1){f=c[c[(c[k>>2]|0)+172>>2]>>2]|0;if(!f)break;xh(f,d);kh(f)}kh(j)}else while(1){d=c[k>>2]|0;j=c[c[d+172>>2]>>2]|0;if(!j)break a;h=c[(c[n>>2]|0)+172>>2]|0;i=j+48|0;f=0;while(1){d=c[h+(f<<2)>>2]|0;if(!d){r=17;break}if((c[((c[d>>2]&3|0)==3?d:d+48|0)+40>>2]|0)==(c[((c[j>>2]&3|0)==3?j:i)+40>>2]|0))break;else f=f+1|0}if((r|0)==17){r=0;d=ph(c[((c[j>>2]&3|0)==3?j:i)+40>>2]|0,q,j)|0}while(1){f=c[c[(c[k>>2]|0)+180>>2]>>2]|0;if(!f)break;xh(f,d);kh(f)}kh(j)}while(0);if((c[d+176>>2]|0)!=(0-(c[d+184>>2]|0)|0)){r=23;break}sh(a,o);l=l+1|0}if((r|0)==23)qa(88218,88262,115,88269);while(1){g=g+1|0;d=c[(c[t>>2]|0)+196>>2]|0;f=d+(b<<6)|0;if((g|0)>=(c[f>>2]|0))break;e=c[d+(b<<6)+4>>2]|0;r=c[e+(g<<2)>>2]|0;c[e+(s<<2)>>2]=r;c[(c[r+16>>2]|0)+236>>2]=s;s=s+1|0}c[f>>2]=s;c[(c[d+(b<<6)+4>>2]|0)+(s<<2)>>2]=0;return}function Dl(b){b=b|0;b=c[b+16>>2]|0;if(((a[b+156>>0]|0)==1?(c[b+184>>2]|0)==1:0)?(c[b+176>>2]|0)==1:0)b=(c[b+104>>2]|0)==0&1;else b=0;return b|0}function El(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=l;l=l+80|0;h=i+40|0;g=i;e=c[c[(c[a+16>>2]|0)+180>>2]>>2]|0;a=c[c[(c[b+16>>2]|0)+180>>2]>>2]|0;if(((Dl(b)|0)<<24>>24!=0?(c[((c[e>>2]&3|0)==2?e:e+-48|0)+40>>2]|0)==(c[((c[a>>2]&3|0)==2?a:a+-48|0)+40>>2]|0):0)?(Hl(e,a)|0)<<24>>24!=0:0){d=(c[a+16>>2]|0)+56|0;f=g;a=(c[e+16>>2]|0)+56|0;b=f+40|0;do{c[f>>2]=c[a>>2];f=f+4|0;a=a+4|0}while((f|0)<(b|0));f=h;a=d;b=f+40|0;do{c[f>>2]=c[a>>2];f=f+4|0;a=a+4|0}while((f|0)<(b|0));a=(jg(g,h)|0)==0&1}else a=0;l=i;return a|0}function Fl(d){d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0;r=l;l=l+32|0;p=r+16|0;o=r;m=d+16|0;f=c[m>>2]|0;e=b[f+236>>1]|0;while(1){if((e|0)>(b[f+238>>1]|0))break;c[(c[f+268>>2]|0)+(e<<2)>>2]=0;e=e+1|0;f=c[m>>2]|0}xj(d);j=Sy(d)|0;while(1){if(!j)break;Gl(d,j);i=Ex(d,j)|0;while(1){if(!i)break;else f=i;while(1){e=c[(c[f+16>>2]|0)+172>>2]|0;if(!e)break;else f=e}h=i+-48|0;while(1){e=f+-48|0;g=c[((c[f>>2]&3|0)==2?f:e)+40>>2]|0;if((c[(c[g+16>>2]|0)+232>>2]|0)>=(c[(c[(c[((c[i>>2]&3|0)==2?i:h)+40>>2]|0)+16>>2]|0)+232>>2]|0))break;Gl(d,g);f=c[c[(c[(c[((c[f>>2]&3|0)==2?f:e)+40>>2]|0)+16>>2]|0)+180>>2]>>2]|0}i=Gx(d,i)|0}j=Ty(d,j)|0}e=c[m>>2]|0;i=b[e+236>>1]|0;while(1){if((i|0)>(b[e+238>>1]|0)){k=1;n=e;break}e=c[(c[e+268>>2]|0)+(i<<2)>>2]|0;j=c[(c[(c[(ig(d)|0)+16>>2]|0)+196>>2]|0)+(i<<6)+4>>2]|0;f=e+16|0;if((c[j+(c[(c[f>>2]|0)+236>>2]<<2)>>2]|0)!=(e|0)){q=17;break}h=c[(c[(c[(ig(d)|0)+16>>2]|0)+196>>2]|0)+(i<<6)+4>>2]|0;e=c[m>>2]|0;f=c[e+196>>2]|0;c[f+(i<<6)+4>>2]=h+(c[(c[(c[(c[e+268>>2]|0)+(i<<2)>>2]|0)+16>>2]|0)+236>>2]<<2);e=-1;h=0;a:while(1){if((h|0)>=(c[f+(i<<6)>>2]|0))break;f=c[(c[f+(i<<6)+4>>2]|0)+(h<<2)>>2]|0;if(!f)break;g=c[f+16>>2]|0;b:do if(!(a[g+156>>0]|0))if(!(oz(d,f)|0))break a;else e=h;else{f=c[c[g+172>>2]>>2]|0;while(1){if(!f)break b;g=c[(c[f+16>>2]|0)+116>>2]|0;if(!g)break;else f=g}if(oz(d,c[((c[f>>2]&3|0)==3?f:f+48|0)+40>>2]|0)|0){j=(oz(d,c[((c[f>>2]&3|0)==2?f:f+-48|0)+40>>2]|0)|0)==0;e=j?e:h}}while(0);h=h+1|0;f=c[(c[m>>2]|0)+196>>2]|0}if((e|0)==-1){c[p>>2]=ry(d)|0;c[p+4>>2]=i;Pw(0,88182,p)|0}j=c[m>>2]|0;c[(c[j+196>>2]|0)+(i<<6)>>2]=e+1;i=i+1|0;e=j}if((q|0)==17){p=ry(e)|0;q=c[(c[f>>2]|0)+236>>2]|0;c[o>>2]=p;c[o+4>>2]=q;c[o+8>>2]=i;Pw(1,88124,o)|0;bb(183936,1)}while(1){if((k|0)>(c[n+180>>2]|0))break;Fl(c[(c[n+184>>2]|0)+(k<<2)>>2]|0);k=k+1|0;n=c[m>>2]|0}l=r;return}function Gl(a,b){a=a|0;b=b|0;var d=0,e=0;d=c[b+16>>2]|0;a=(c[(c[a+16>>2]|0)+268>>2]|0)+(c[d+232>>2]<<2)|0;e=c[a>>2]|0;if(!((e|0)!=0?(c[(c[e+16>>2]|0)+236>>2]|0)<=(c[d+236>>2]|0):0))c[a>>2]=b;return}function Hl(b,d){b=b|0;d=d|0;var e=0,f=0;while(1){f=c[b+16>>2]|0;if(!(a[f+112>>0]|0))break;b=c[f+116>>2]|0}while(1){e=c[d+16>>2]|0;if(!(a[e+112>>0]|0))break;d=c[e+116>>2]|0}if((a[f+153>>0]|0)==0?(a[e+153>>0]|0)==0:0){f=c[d>>2]&3;e=c[b>>2]&3;b=(O((c[(c[(c[((e|0)==3?b:b+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(c[(c[(c[((e|0)==2?b:b+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)|0,(c[(c[(c[((f|0)==3?d:d+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(c[(c[(c[((f|0)==2?d:d+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)|0)|0)>0&1}else b=0;return b|0}function Il(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=l;l=l+544|0;j=k+528|0;Jl(j,k+512|0,k);e=(a[190690]|0)+1<<24>>24;a[190690]=e<<24>>24==0?1:e;e=c[b+16>>2]|0;c[e+220>>2]=0;c[e+232>>2]=0;e=(d|0)>0;d=Sy(b)|0;while(1){if(!d)break;if(e?(h=c[d+16>>2]|0,i=c[h+212>>2]|0,(i|0)!=0):0){g=c[(c[(c[i+16>>2]|0)+268>>2]|0)+(c[h+232>>2]<<2)>>2]|0;f=7}else f=6;if((f|0)==6?(f=0,(d|0)==(SL(d)|0)):0){g=d;f=7}if((f|0)==7?(0,(a[(c[g+16>>2]|0)+157>>0]|0)!=(a[190690]|0)):0){Kl(b);Ll(j,b,g);Ml(b)}d=Ty(b,d)|0}Nl(j);l=k;return}function Jl(a,b,d){a=a|0;b=b|0;d=d|0;c[b>>2]=d;c[b+4>>2]=d+512;c[b+12>>2]=0;c[b+8>>2]=0;c[a>>2]=b;c[a+4>>2]=b;c[a+8>>2]=d;return}function Kl(a){a=a|0;c[(c[a+16>>2]|0)+192>>2]=0;c[46023]=0;return}function Ll(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;q=l;l=l+32|0;p=q;Ol(b,e);k=p+8|0;m=p+16|0;n=p+24|0;a:while(1){o=Pl(b)|0;if(!o)break;e=o+16|0;if((a[(c[e>>2]|0)+157>>0]|0)==(a[190690]|0))continue;Ql(d,o);h=c[e>>2]|0;g=h+180|0;j=c[g+4>>2]|0;i=p;c[i>>2]=c[g>>2];c[i+4>>2]=j;i=h+172|0;j=c[i+4>>2]|0;g=k;c[g>>2]=c[i>>2];c[g+4>>2]=j;g=h+188|0;j=c[g+4>>2]|0;i=m;c[i>>2]=c[g>>2];c[i+4>>2]=j;h=h+196|0;i=c[h+4>>2]|0;j=n;c[j>>2]=c[h>>2];c[j+4>>2]=i;j=3;while(1){if((j|0)<=-1)continue a;e=c[p+(j<<3)>>2]|0;b:do if(e|0){i=(c[p+(j<<3)+4>>2]|0)+-1|0;h=e+(i<<2)|0;while(1){if((i|0)<=-1)break b;f=c[h>>2]|0;g=c[f>>2]&3;e=c[((g|0)==2?f:f+-48|0)+40>>2]|0;if((e|0)==(o|0))e=c[((g|0)==3?f:f+48|0)+40>>2]|0;if((a[(c[e+16>>2]|0)+157>>0]|0)!=(a[190690]|0)?(e|0)==(SL(e)|0):0)Ol(b,e);h=h+-4|0;i=i+-1|0}}while(0);j=j+-1|0}}l=q;return}function Ml(a){a=a|0;var b=0,d=0,e=0,f=0;d=a+16|0;b=c[d>>2]|0;f=b+220|0;e=c[f>>2]|0;a=e+1|0;c[f>>2]=a;b=c[b+216>>2]|0;if(!b)a=vH(a<<2)|0;else a=xH(b,a<<2)|0;f=c[d>>2]|0;c[f+216>>2]=a;c[a+(e<<2)>>2]=c[f+192>>2];return}function Nl(a){a=a|0;var b=0;a=c[(c[a>>2]|0)+12>>2]|0;while(1){if(!a)break;b=c[a+12>>2]|0;D_(c[a>>2]|0);D_(a);a=b}return}function Ol(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;k=l;l=l+16|0;h=k+8|0;g=k;j=b+8|0;f=c[j>>2]|0;i=b+4|0;b=c[i>>2]|0;if((f|0)==(c[b+4>>2]|0)){f=c[b+12>>2]|0;if(!f){f=uH(16)|0;if(!f)Pw(1,95943,g)|0;c[f+8>>2]=c[i>>2];c[f+12>>2]=0;b=uH(4e6)|0;c[f>>2]=b;if(!b){Pw(1,88282,h)|0;b=c[f>>2]|0}c[f+4>>2]=b+4e6;c[(c[i>>2]|0)+12>>2]=f}c[i>>2]=f;f=c[f>>2]|0;c[j>>2]=f}a[(c[e+16>>2]|0)+157>>0]=(d[190690]|0)+1;c[j>>2]=f+4;c[f>>2]=e;l=k;return}function Pl(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;f=a+8|0;b=c[f>>2]|0;d=a+4|0;e=c[d>>2]|0;if((b|0)==(c[e>>2]|0))if((e|0)==(c[a>>2]|0))b=0;else{b=c[e+8>>2]|0;c[d>>2]=b;b=c[b+4>>2]|0;c[f>>2]=b;g=4}else g=4;if((g|0)==4){b=b+-4|0;c[f>>2]=b;b=c[b>>2]|0}return b|0}function Ql(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;f=c[b+16>>2]|0;g=f+232|0;c[g>>2]=(c[g>>2]|0)+1;g=c[d+16>>2]|0;a[g+157>>0]=a[190690]|0;b=c[46023]|0;e=g+168|0;if(!b){c[e>>2]=0;c[f+192>>2]=d}else{c[e>>2]=b;c[(c[b+16>>2]|0)+164>>2]=d}c[46023]=d;c[g+164>>2]=0;return}function Rl(b){b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0.0,o=0.0;m=b+16|0;d=(c[m>>2]|0)+192|0;while(1){d=c[d>>2]|0;if(!d)break;g=d+16|0;d=c[g>>2]|0;e=c[d+188>>2]|0;a:do if(!e)f=0;else{f=0;while(1){e=c[e+(f<<2)>>2]|0;if(!e){f=0;break a}Sl(e);d=c[g>>2]|0;f=f+1|0;e=c[d+188>>2]|0}}while(0);while(1){if((f|0)>=(c[d+208>>2]|0))break;e=c[(c[d+204>>2]|0)+(f<<2)>>2]|0;l=c[e>>2]&3;if((c[(c[(c[((l|0)==2?e:e+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)==(c[(c[(c[((l|0)==3?e:e+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)){Sl(e);d=c[g>>2]|0}f=f+1|0}d=d+164|0}l=c[m>>2]|0;d=c[l+196>>2]|0;if(!((c[d+56>>2]|0)==0?(c[l+180>>2]|0)<=0:0))i=13;b:do if((i|0)==13){i=c[d+4>>2]|0;g=0;c:while(1){d=c[i+(g<<2)>>2]|0;if(!d)break b;e=c[(c[d+16>>2]|0)+196>>2]|0;d=0;while(1){f=c[e+(d<<2)>>2]|0;if(!f)break;l=c[f+16>>2]|0;if(c[l+96>>2]|0?(a[l+113>>0]|0)==0:0)break c;d=d+1|0}g=g+1|0}Tl(b)}while(0);Ji(b);e=0;d=(c[m>>2]|0)+192|0;while(1){d=c[d>>2]|0;if(!d)break;l=d+16|0;d=c[l>>2]|0;f=c[d+188>>2]|0;d:do if(f){k=0;while(1){g=c[f+(k<<2)>>2]|0;if(!g){k=0;break}i=c[g+16>>2]|0;j=c[i+96>>2]|0;do if(j)if(!(a[i+113>>0]|0)){Ul(g);f=c[l>>2]|0;e=1;d=f;f=c[f+188>>2]|0;break}else{h[i+136>>3]=+h[((c[(c[m>>2]|0)+116>>2]&1|0)==0?j+24|0:j+32|0)>>3];break}while(0);k=k+1|0}while(1){if((k|0)>=(c[d+208>>2]|0))break d;i=c[(c[d+204>>2]|0)+(k<<2)>>2]|0;j=c[i>>2]&3;g=c[((j|0)==3?i:i+48|0)+40>>2]|0;j=c[((j|0)==2?i:i+-48|0)+40>>2]|0;do if(!((g|0)==(j|0)?1:(c[(c[g+16>>2]|0)+232>>2]|0)!=(c[(c[j+16>>2]|0)+232>>2]|0))){f=i;do{j=c[f+16>>2]|0;f=c[j+172>>2]|0}while((f|0)!=0);f=a[j+113>>0]|0;g=c[i+16>>2]|0;a[g+113>>0]=f;g=c[g+96>>2]|0;if(g)if(!(f<<24>>24)){Ul(i);e=1;d=c[l>>2]|0;break}else{o=+h[((c[(c[m>>2]|0)+116>>2]&1|0)==0?g+24|0:g+32|0)>>3];j=j+136|0;n=+h[j>>3];h[j>>3]=o>n?o:n;break}}while(0);k=k+1|0}}while(0);d=d+164|0}if(e|0){Ch(b);Qh(b)}return e|0}function Sl(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;d=c[b>>2]&3;i=c[((d|0)==3?b:b+48|0)+40>>2]|0;f=i+16|0;g=c[(c[f>>2]|0)+236>>2]|0;d=c[(c[(c[((d|0)==2?b:b+-48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0;h=(g|0)<(d|0);e=h?d:g;i=c[(c[(ig(i)|0)+16>>2]|0)+196>>2]|0;f=i+(c[(c[f>>2]|0)+232>>2]<<6)+4|0;d=h?g:d;a:while(1){d=d+1|0;if((d|0)>=(e|0))break;g=c[(c[(c[f>>2]|0)+(d<<2)>>2]|0)+16>>2]|0;switch(a[g+156>>0]|0){case 0:break a;case 1:break;default:continue a}if(c[g+104>>2]|0)break}if((d|0)==(e|0))do{i=c[b+16>>2]|0;a[i+113>>0]=1;b=c[i+172>>2]|0}while((b|0)!=0);return}function Tl(a){a=a|0;var d=0,e=0,f=0,g=0;g=a+16|0;a=c[g>>2]|0;if(b[a+236>>1]|0)qa(88339,88322,190,88358);d=(b[a+238>>1]|0)+3|0;a=c[a+196>>2]|0;if(!a)a=vH(d<<6)|0;else a=xH(a,d<<6)|0;d=a+64|0;a=c[g>>2]|0;c[a+196>>2]=d;a=b[a+238>>1]|0;while(1){if((a|0)<=-1)break;f=a+-1|0;e=d+(a<<6)|0;a=d+(f<<6)|0;d=e+64|0;do{c[e>>2]=c[a>>2];e=e+4|0;a=a+4|0}while((e|0)<(d|0));a=f;d=c[(c[g>>2]|0)+196>>2]|0}c[d+(a<<6)+8>>2]=0;c[d+(a<<6)>>2]=0;e=uH(8)|0;g=c[g>>2]|0;f=c[g+196>>2]|0;c[f+(a<<6)+12>>2]=e;c[f+(a<<6)+4>>2]=e;c[f+(a<<6)+56>>2]=0;h[f+(a<<6)+24>>3]=1.0;h[f+(a<<6)+16>>3]=1.0;h[f+(a<<6)+40>>3]=1.0;h[f+(a<<6)+32>>3]=1.0;g=g+236|0;b[g>>1]=(b[g>>1]|0)+-1<<16>>16;return}function Ul(b){b=b|0;var d=0,e=0,f=0.0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0.0,q=0.0,r=0.0;j=b+16|0;if(c[(c[j>>2]|0)+96>>2]|0){m=b+48|0;k=ig(c[((c[b>>2]&3|0)==3?b:m)+40>>2]|0)|0;d=c[(c[(c[((c[b>>2]&3|0)==3?b:m)+40>>2]|0)+16>>2]|0)+232>>2]|0;l=Vl(k,b)|0;n=k+16|0;e=c[n>>2]|0;g=c[e+196>>2]|0;o=d+-1|0;i=c[c[g+(o<<6)+4>>2]>>2]|0;if(!i)f=+h[g+(d<<6)+24>>3]+ +h[(c[(c[c[g+(d<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3]+ +(c[e+252>>2]|0);else f=+h[(c[i+16>>2]|0)+24>>3]-+h[g+(o<<6)+16>>3];d=Wl(k,o,l)|0;k=c[(c[j>>2]|0)+96>>2]|0;q=+h[k+24>>3];p=+h[k+32>>3];j=(c[(c[n>>2]|0)+116>>2]&1|0)==0;r=j?p:q;g=d+16|0;e=c[g>>2]|0;h[e+80>>3]=r;l=~~(r*.5);p=(j?q:p)*.5;h[e+96>>3]=p;h[e+88>>3]=p;c[e+104>>2]=k;h[e+24>>3]=+(l+~~f|0);e=ph(d,c[((c[b>>2]&3|0)==3?b:m)+40>>2]|0,b)|0;e=c[e+16>>2]|0;h[e+16>>3]=-+h[(c[g>>2]|0)+88>>3];h[e+56>>3]=+h[(c[(c[((c[b>>2]&3|0)==3?b:m)+40>>2]|0)+16>>2]|0)+96>>3];a[e+112>>0]=4;e=b+-48|0;d=ph(d,c[((c[b>>2]&3|0)==2?b:e)+40>>2]|0,b)|0;g=c[g>>2]|0;d=c[d+16>>2]|0;h[d+16>>3]=+h[g+96>>3];h[d+56>>3]=+h[(c[(c[((c[b>>2]&3|0)==2?b:e)+40>>2]|0)+16>>2]|0)+88>>3];a[d+112>>0]=4;d=c[(c[n>>2]|0)+196>>2]|0;e=d+(o<<6)+16|0;f=+(l|0);if(+h[e>>3]>3]=f;d=d+(o<<6)+24|0;if(+h[d>>3]>3]=f;c[g+112>>2]=b}return}function Vl(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+32|0;j=n+8|0;f=n+4|0;g=n;d=c[b>>2]&3;e=c[((d|0)==3?b:b+48|0)+40>>2]|0;k=(c[(c[e+16>>2]|0)+232>>2]|0)+-1|0;a=c[(c[a+16>>2]|0)+196>>2]|0;h=c[a+(k<<6)+4>>2]|0;a=c[a+(k<<6)>>2]|0;k=j+8|0;c[k>>2]=-1;c[j>>2]=-1;m=j+12|0;c[m>>2]=a;i=j+4|0;c[i>>2]=a;Xl(e,c[((d|0)==2?b:b+-48|0)+40>>2]|0,f,g);f=c[f>>2]|0;g=c[g>>2]|0;d=0;e=a;b=-1;while(1){if((d|0)>=(e|0))break;e=e+-1|0;Yl(c[h+(d<<2)>>2]|0,j,f,g);if((d|0)!=(e|0))Yl(c[h+(e<<2)>>2]|0,j,f,g);a=c[i>>2]|0;b=c[j>>2]|0;if((a-b|0)<2)break;else d=d+1|0}if((b|0)>(a|0))a=(c[m>>2]|0)+(c[k>>2]|0)|0;else a=a+b|0;l=n;return (a+1|0)/2|0|0}function Wl(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;g=a+16|0;f=c[(c[g>>2]|0)+196>>2]|0;e=f+(b<<6)|0;f=c[f+(b<<6)+4>>2]|0;if(!f)f=vH((c[e>>2]<<2)+8|0)|0;else f=xH(f,(c[e>>2]<<2)+8|0)|0;e=c[(c[g>>2]|0)+196>>2]|0;c[e+(b<<6)+4>>2]=f;e=c[e+(b<<6)>>2]|0;while(1){if((e|0)<=(d|0))break;h=e+-1|0;i=c[f+(h<<2)>>2]|0;c[f+(e<<2)>>2]=i;i=(c[i+16>>2]|0)+236|0;c[i>>2]=(c[i>>2]|0)+1;e=h}h=uh(a)|0;i=f+(d<<2)|0;c[i>>2]=h;h=c[h+16>>2]|0;c[h+236>>2]=d;c[h+232>>2]=b;g=(c[(c[g>>2]|0)+196>>2]|0)+(b<<6)|0;h=(c[g>>2]|0)+1|0;c[g>>2]=h;c[f+(h<<2)>>2]=0;return c[i>>2]|0}function Xl(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;a=c[(c[a+16>>2]|0)+236>>2]|0;b=c[(c[b+16>>2]|0)+236>>2]|0;f=(a|0)>(b|0);c[d>>2]=f?b:a;c[e>>2]=f?a:b;return}function Yl(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0;m=l;l=l+16|0;h=m+4|0;g=m;b=c[b+16>>2]|0;do if((a[b+156>>0]|0)==1){k=c[b+236>>2]|0;if(c[b+176>>2]|0){i=c[b+180>>2]|0;b=0;g=0;h=0;while(1){j=c[i+(h<<2)>>2]|0;if(!j)break;n=c[(c[(c[((c[j>>2]&3|0)==2?j:j+-48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0;j=(n|0)>(e|0);b=j?((n|0)<(f|0)?b:1):b;g=j?g:1;h=h+1|0}if(g<<24>>24!=0&b<<24>>24==0){c[d>>2]=k+1;break}if(!(g<<24>>24==0&b<<24>>24!=0))break;c[d+4>>2]=k+-1;break}if((c[b+184>>2]|0)!=2)qa(88302,88322,63,88329);i=c[b+180>>2]|0;n=c[i>>2]|0;i=c[i+4>>2]|0;Xl(c[((c[n>>2]&3|0)==2?n:n+-48|0)+40>>2]|0,c[((c[i>>2]&3|0)==2?i:i+-48|0)+40>>2]|0,h,g);i=c[g>>2]|0;if((i|0)<=(e|0)){c[d>>2]=k;c[d+8>>2]=k;break}b=c[h>>2]|0;if((b|0)>=(f|0)){c[d+4>>2]=k;c[d+12>>2]=k;break}g=(b|0)<(e|0);h=(i|0)>(f|0);if(!(h&g)){if(!(!g?!((i|0)<(f|0)&(b|0)==(e|0)):0))c[d+8>>2]=k;if(!h?!((i|0)==(f|0)&(b|0)>(e|0)):0)break;c[d+12>>2]=k}}while(0);l=m;return}function Zl(a){a=a|0;c[46363]=1;rm(a);c[46363]=0;return}function _l(a){a=a|0;c[46363]=2;rm(a);c[46363]=0;return}function $l(a){a=a|0;var b=0;Az(a,134365,304,1)|0;dM(a);b=uH((e[(c[(ez(a)|0)+16>>2]|0)+176>>1]|0)<<3)|0;c[(c[a+16>>2]|0)+132>>2]=b;bN(a,c[(c[(ez(a)|0)+16>>2]|0)+116>>2]&1);return}function am(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0.0,u=0.0;s=l;l=l+64|0;j=s+48|0;o=s+40|0;k=s+24|0;i=s+8|0;q=s+56|0;m=s;do if((b|0)!=0?(r=e+16|0,p=c[(c[r>>2]|0)+132>>2]|0,g=yx(e,b)|0,(a[g>>0]|0)!=0):0){a[q>>0]=0;b=p+8|0;if((c[46366]|0)>2?(c[i>>2]=p,c[i+4>>2]=b,c[i+8>>2]=p+16,c[i+12>>2]=q,(N1(g,88435,i)|0)>2):0){a[(c[r>>2]|0)+119>>0]=1;g=c[46366]|0;a:do if(+h[22908]>0.0){b=0;while(1){if((b|0)>=(g|0))break a;o=p+(b<<3)|0;h[o>>3]=+h[o>>3]/+h[22908];b=b+1|0}}while(0);if((g|0)>3)Hn(e,f,3);if((a[q>>0]|0)!=33){if(!d){b=1;break}if(!((QL(yx(e,d)|0)|0)<<24>>24)){b=1;break}}a[(c[r>>2]|0)+119>>0]=3;b=1;break}c[k>>2]=p;c[k+4>>2]=b;c[k+8>>2]=q;if((N1(g,98723,k)|0)<=1){c[j>>2]=ry(e)|0;c[j+4>>2]=g;Pw(1,88449,j)|0;b=0;break}a[(c[r>>2]|0)+119>>0]=1;g=c[46366]|0;b:do if(+h[22908]>0.0){b=0;while(1){if((b|0)>=(g|0))break b;k=p+(b<<3)|0;h[k>>3]=+h[k>>3]/+h[22908];b=b+1|0}}while(0);do if((g|0)>2){b=c[46401]|0;if((b|0?(n=yx(e,b)|0,n|0):0)?(c[o>>2]=m,(N1(n,98183,o)|0)==1):0){u=+h[22908];t=+h[m>>3];h[p+16>>3]=u>0.0?t/u:t;Hn(e,f,3);break}In(e,f)}while(0);if((a[q>>0]|0)!=33){if(!d){b=1;break}if(!((QL(yx(e,d)|0)|0)<<24>>24)){b=1;break}}a[(c[r>>2]|0)+119>>0]=3;b=1}else b=0;while(0);l=s;return b|0}function bm(a){a=a|0;var b=0,c=0;c=Sy(a)|0;while(1){if(!c)break;b=Ex(a,c)|0;while(1){if(!b)break;JM(b);b=Gx(a,b)|0}HM(c);c=Ty(a,c)|0}cm(a);return}function cm(a){a=a|0;if((c[46363]|0)!=0|(c[46025]|0)<0)Fn(a);if((fz(a)|0)!=(a|0))Gz(a,0,134401);return}function dm(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;q=l;l=l+48|0;m=q+32|0;o=q;k=nx(b,0,99611,0)|0;e=nx(b,0,99645,0)|0;p=(RL(xx(b,88493)|0,0)|0)<<24>>24!=0;if(!e)e=nx(b,0,99645,191979)|0;En(b)|0;n=b+16|0;i=0;while(1){j=c[(c[(c[n>>2]|0)+152>>2]|0)+(i<<2)>>2]|0;if(!j){f=12;break}g=j+16|0;f=c[g>>2]|0;if(!(a[f+119>>0]|0)){if(z$(ry(j)|0,104980,7)|0){f=8;break}f=c[g>>2]|0}f=c[f+108>>2]|0;if(f|0)em(j,f,99607);i=i+1|0}a:do if((f|0)==8){p=ry(j)|0;e=ry(b)|0;c[m>>2]=p;c[m+4>>2]=e;Pw(1,88505,m)|0;e=-1}else if((f|0)==12){fm(b,k,e);j=gm(b)|0;e=c[(c[n>>2]|0)+8>>2]|0;if(!(c[e+88>>2]|0))e=0;else{c[e+84>>2]=0;e=1}g=(d|0)!=0;i=(e|0)!=0;if(!(i|g&(c[46363]|0)==1^1)?(tq(b)|0)!=0:0){f=c[(c[n>>2]|0)+12>>2]|0;if(!f)f=1;else{a[f+81>>0]=0;f=1}}else f=0;mM(b);if(i){d=(c[n>>2]|0)+16|0;_E(o,b);c[d>>2]=c[o>>2];c[d+4>>2]=c[o+4>>2];c[d+8>>2]=c[o+8>>2];c[d+12>>2]=c[o+12>>2];c[d+16>>2]=c[o+16>>2];c[d+20>>2]=c[o+20>>2];c[d+24>>2]=c[o+24>>2];c[d+28>>2]=c[o+28>>2]}if(!g){c[46367]=1;f=Sy(b)|0;while(1){if(!f)break a;p=c[f+16>>2]|0;o=c[p+132>>2]|0;h[p+16>>3]=+h[o>>3]*72.0;h[p+24>>3]=+h[o+8>>3]*72.0;f=Ty(b,f)|0}}do if(!(p|i)){p=c[n>>2]|0;if(!(+h[p+16>>3]!=0.0)?!(+h[p+24>>3]!=0.0):0)break;cn(b)}while(0);if(!((j|0)!=0&(f|(an(b)|0)<<24>>24!=0))){if((j|0)==2){c[46367]=1;break}}else hm(b);$m(b,0)}while(0);l=q;return e|0}function em(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0;k=l;l=l+48|0;j=k+32|0;f=k+24|0;g=k+16|0;i=k;b=xx(b,e)|0;if(b|0?(c[j>>2]=f,c[j+4>>2]=g,(N1(b,102477,j)|0)==2):0){j=d+56|0;km(i,+h[f>>3],+h[g>>3]);c[j>>2]=c[i>>2];c[j+4>>2]=c[i+4>>2];c[j+8>>2]=c[i+8>>2];c[j+12>>2]=c[i+12>>2];a[d+81>>0]=1}l=k;return}function fm(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,m=0,n=0;m=l;l=l+48|0;k=m+32|0;f=m+24|0;g=m+16|0;i=m;j=b+16|0;if((d|0?(c[(c[j>>2]|0)+12>>2]|0)!=0:0)?(n=yx(b,d)|0,c[k>>2]=f,c[k+4>>2]=g,(N1(n,102477,k)|0)==2):0){n=(c[(c[j>>2]|0)+12>>2]|0)+56|0;km(i,+h[f>>3],+h[g>>3]);c[n>>2]=c[i>>2];c[n+4>>2]=c[i+4>>2];c[n+8>>2]=c[i+8>>2];c[n+12>>2]=c[i+12>>2];a[(c[(c[j>>2]|0)+12>>2]|0)+81>>0]=1}a:do if(e|0){f=wA(b)|0;while(1){if(!f)break a;lm(f,b,d,e);f=xA(f)|0}}while(0);l=m;return}function gm(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;if(by(a)|0){f=nx(a,2,99597,0)|0;if(!((f|0)==0|(c[46363]|0)<2)){b=0;e=Sy(a)|0;while(1){if(!e)break;d=Ex(a,e)|0;while(1){if(!d)break;g=b+((im(f,d)|0)!=0&1)|0;d=Gx(a,d)|0;b=g}e=Ty(a,e)|0}if(b){b=(b|0)==(by(a)|0);b=b?2:1}else b=0}else b=0}else b=2;return b|0}function hm(a){a=a|0;var b=0,d=0,e=0;d=Sy(a)|0;while(1){if(!d)break;b=Ex(a,d)|0;while(1){if(!b)break;KM(b);e=b+16|0;nH(c[(c[e>>2]|0)+96>>2]|0);nH(c[(c[e>>2]|0)+108>>2]|0);nH(c[(c[e>>2]|0)+100>>2]|0);nH(c[(c[e>>2]|0)+104>>2]|0);b=Gx(a,b)|0}d=Ty(a,d)|0}return}function im(b,d){b=b|0;d=d|0;var e=0,f=0,g=0.0,i=0.0,j=0.0,k=0.0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;B=l;l=l+96|0;z=B+72|0;x=B+56|0;A=B+48|0;y=B+32|0;w=B+16|0;r=B+88|0;s=B+8|0;t=B;u=B+84|0;v=B+80|0;b=yx(d,b)|0;do if(a[b>>0]|0){sE(d,u,v);q=1;f=0;e=0;j=0.0;i=0.0;k=0.0;g=0.0;a:while(1){c[w>>2]=s;c[w+4>>2]=t;c[w+8>>2]=r;if((N1(b,88542,w)|0)==2){p=1;b=b+(c[r>>2]|0)|0;i=+h[s>>3];g=+h[t>>3]}else p=e;c[y>>2]=s;c[y+4>>2]=t;c[y+8>>2]=r;if((N1(b,88554,y)|0)==2){o=1;b=b+(c[r>>2]|0)|0;j=+h[s>>3];k=+h[t>>3]}else o=f;m=jm(b)|0;if(!((m|0)>3&((m|0)%3|0|0)==1)){e=8;break}n=vH(m<<4)|0;e=n;f=m;while(1){if(!f)break;c[x>>2]=s;c[x+4>>2]=t;c[x+8>>2]=r;if((N1(b,88624,x)|0)<2){e=13;break a}C=b+(c[r>>2]|0)|0;h[e>>3]=+h[s>>3];h[e+8>>3]=+h[t>>3];e=e+16|0;f=f+-1|0;b=C}while(1){e=a[b>>0]|0;f=b+1|0;if(!(B$(e<<24>>24)|0))break;else b=f}C=e<<24>>24==0;b=C?b:f;q=C?0:q;f=PK(d,m)|0;if(p|0){c[f+8>>2]=c[u>>2];h[f+16>>3]=i;h[f+24>>3]=g}if(o|0){c[f+12>>2]=c[v>>2];h[f+32>>3]=j;h[f+40>>3]=k}e=0;while(1){if((e|0)>=(m|0))break;C=(c[f>>2]|0)+(e<<4)|0;D=n+(e<<4)|0;c[C>>2]=c[D>>2];c[C+4>>2]=c[D+4>>2];c[C+8>>2]=c[D+8>>2];c[C+12>>2]=c[D+12>>2];e=e+1|0}D_(n);if(!q){e=26;break}else{f=o;e=p}}if((e|0)==8){KM(d);if(a[190691]|0){b=0;break}a[190691]=1;D=ry(c[((c[d>>2]&3|0)==3?d:d+48|0)+40>>2]|0)|0;b=ry(c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0)|0;c[A>>2]=D;c[A+4>>2]=b;Pw(0,88567,A)|0;b=0;break}else if((e|0)==13){if(!(a[190691]|0)){a[190691]=1;C=ry(c[((c[d>>2]&3|0)==3?d:d+48|0)+40>>2]|0)|0;D=ry(c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0)|0;c[z>>2]=C;c[z+4>>2]=D;Pw(0,88634,z)|0}D_(n);KM(d);b=0;break}else if((e|0)==26){f=d+16|0;b=c[f>>2]|0;e=c[b+96>>2]|0;if(e){em(d,e,99611);b=c[f>>2]|0}e=c[b+108>>2]|0;if(e){em(d,e,99607);b=c[f>>2]|0}e=c[b+100>>2]|0;if(e){em(d,e,99614);b=c[f>>2]|0}b=c[b+104>>2]|0;if(!b){b=1;break}em(d,b,99622);b=1;break}}else b=0;while(0);l=B;return b|0}function jm(b){b=b|0;var c=0,d=0;d=0;do{while(1){c=a[b>>0]|0;if(!(B$(c&255)|0))break;else b=b+1|0}a:do if(!(c<<24>>24))c=0;else{d=d+1|0;while(1){if(!(c<<24>>24)){c=0;break a}if(c<<24>>24==59|(B$(c&255)|0)!=0)break a;c=b+1|0;b=c;c=a[c>>0]|0}}while(0)}while((B$(c&255)|0)!=0);return d|0}function km(a,b,c){a=a|0;b=+b;c=+c;h[a>>3]=b;h[a+8>>3]=c;return}function lm(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;h=l;l=l+32|0;f=h;if((z$(ry(a)|0,104980,7)|0)==0?(mm(a,e,f)|0)!=0:0){Az(a,134401,280,1)|0;i=(c[a+16>>2]|0)+16|0;c[i>>2]=c[f>>2];c[i+4>>2]=c[f+4>>2];c[i+8>>2]=c[f+8>>2];c[i+12>>2]=c[f+12>>2];c[i+16>>2]=c[f+16>>2];c[i+20>>2]=c[f+20>>2];c[i+24>>2]=c[f+24>>2];c[i+28>>2]=c[f+28>>2];nm(b,a);fm(a,d,e)}else g=4;a:do if((g|0)==4){a=wA(a)|0;while(1){if(!a)break a;lm(a,b,d,e);a=xA(a)|0}}while(0);l=h;return}function mm(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0.0,g=0,i=0,j=0,k=0;i=l;l=l+48|0;j=i+32|0;g=i;k=yx(a,b)|0;a=g+8|0;b=g+24|0;c[j>>2]=g;c[j+4>>2]=a;c[j+8>>2]=g+16;c[j+12>>2]=b;if((N1(k,88682,j)|0)==4){e=+h[a>>3];f=+h[b>>3];if(e>f){h[a>>3]=f;h[b>>3]=e};c[d>>2]=c[g>>2];c[d+4>>2]=c[g+4>>2];c[d+8>>2]=c[g+8>>2];c[d+12>>2]=c[g+12>>2];c[d+16>>2]=c[g+16>>2];c[d+20>>2]=c[g+20>>2];c[d+24>>2]=c[g+24>>2];c[d+28>>2]=c[g+28>>2];a=1}else a=0;l=i;return a|0}function nm(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;e=a+16|0;d=c[e>>2]|0;g=d+180|0;a=c[g>>2]|0;f=a+1|0;c[g>>2]=f;d=c[d+184>>2]|0;if(!d)a=uH((a<<2)+8|0)|0;else a=wH(d,a+2|0,4,f)|0;c[(c[e>>2]|0)+184>>2]=a;c[a+(f<<2)>>2]=b;fH(b);return}function om(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+48|0;m=n+8|0;k=n;i=n+16|0;j=n+12|0;h=xx(b,88698)|0;do if((h|0)!=0?(g=a[h>>0]|0,g<<24>>24!=0):0){g=g&255;if(!(N$(g)|0))if((e|0)==2|(g+-48|0)>>>0<10)e=h;else break;else{if(!(z$(h,88704,4)|0)){e=0;break}if(!(z$(h,102485,7)|0)){e=1;break}if(z$(h,88709,6)|0)if((e|0)==2)e=h;else break;else e=h+6|0}if(!(((d[e>>0]|0)+-48|0)>>>0<10?(c[k>>2]=j,(N1(e,96907,k)|0)>=1):0)){k=H1()|0;k=(db(0)|0)^k;c[j>>2]=k;c[m>>2]=k;Y0(i,96907,m)|0;zx(b,88698,i)|0}c[f>>2]=c[j>>2];e=2}while(0);l=n;return e|0}function pm(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;f=l;l=l+16|0;e=f+4|0;c[e>>2]=1;d=om(a,d,e)|0;if((d|0)!=2&(c[46026]|0)!=0)Pw(0,88716,f)|0;if((d|0)==1)qm(a,b);i2(c[e>>2]|0);l=f;return d|0}function qm(b,d){b=b|0;d=d|0;var e=0,f=0.0,g=0.0,i=0.0,j=0,k=0,l=0.0;g=+(d|0);i=6.283185307179586/g;e=Sy(b)|0;f=0.0;while(1){if(!e)break;l=+E(+f)*g;j=c[e+16>>2]|0;k=c[j+132>>2]|0;h[k>>3]=l;h[k+8>>3]=+F(+f)*g;a[j+119>>0]=1;if((c[46366]|0)>2)In(e,d);e=Ty(b,e)|0;f=f+i}return}function rm(b){b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0.0,r=0;r=l;l=l+80|0;d=r+24|0;n=r+32|0;k=r;p=r+28|0;m=r+64|0;q=+h[22908];do if(c[46363]|0){h[22908]=72.0;sm(b);tm(b);if((dm(b,1)|0)<0){Pw(3,88764,d)|0;break}else{PI(b,0);f=32;break}}else{o=RL(xx(b,88493)|0,0)|0;h[22908]=+ML(b);sm(b);g=um(b)|0;Sp(b,k,0)|0;i=vm(b)|0;j=ZD(b,0,n)|0;d=YD(b,-1,8)|0;c[46025]=d;e=(d|0)<0;do if(!j){if((g|0)!=0&e){c[46025]=8;c[n+16>>2]=2;f=11;break}c[n+16>>2]=2;if((d|0)<=-1){wm(b,g,i);Vp(b,k)|0;tm(b);if(!(o<<24>>24)){hn(b);break}else{xm(b);break}}else f=11}else if(e){c[46025]=8;f=11}else f=11;while(0);if((f|0)==11){j=dD(b,p,88792,m)|0;d=c[p>>2]|0;do if((d|0)<=1){wm(b,g,i);Vp(b,k)|0;if(!(o<<24>>24)){hn(b);break}else{xm(b);break}}else{f=o<<24>>24==0;e=0;while(1){if((e|0)>=(d|0))break;d=c[j+(e<<2)>>2]|0;vD(d)|0;wm(d,g,i);Vp(d,k)|0;$M(d,2);if(f)hn(d);else xm(d);e=e+1|0;d=c[p>>2]|0}if(!(a[m>>0]|0))e=0;else{e=uH(d)|0;a[e>>0]=1;d=c[p>>2]|0}c[n+8>>2]=c[46025];c[n+20>>2]=e;c[n+12>>2]=1;VD(d,j,b,n)|0;D_(e)}while(0);mM(b);tm(b);d=0;while(1){if((d|0)>=(c[p>>2]|0))break;n=c[j+(d<<2)>>2]|0;Fn(n);Cz(n,134401)|0;dz(b,n)|0;d=d+1|0}D_(j)}PI(b,o<<24>>24==0&1);f=32}while(0);if((f|0)==32)h[22908]=q;l=r;return}function sm(a){a=a|0;var d=0,e=0,f=0,g=0;$M(a,2);f=KL(a,nx(a,0,89557,0)|0,2,2)|0;d=(KL(a,nx(a,0,90633,0)|0,f,2)|0)&65535;b[(c[(fz(a)|0)+16>>2]|0)+176>>1]=d;d=c[(c[a+60>>2]|0)+16>>2]|0;g=d+176|0;e=b[g>>1]|0;e=(e&65535)<10?e:10;b[g>>1]=e;e=e&65535;c[46366]=e;b[d+178>>1]=(f|0)<(e|0)?f:e;Hm(a);return}function tm(a){a=a|0;var b=0,d=0,e=0,f=0;f=l;l=l+1040|0;e=f;d=f+8|0;a:do if((c[46366]|0)>2&(c[46401]|0)!=0){b=Sy(a)|0;while(1){if(!b)break a;h[e>>3]=+h[(c[(c[b+16>>2]|0)+132>>2]|0)+16>>3]*72.0;Y0(d,98183,e)|0;rx(b,c[46401]|0,d)|0;b=Ty(a,b)|0}}while(0);l=f;return}function um(b){b=b|0;var d=0,e=0,f=0;f=l;l=l+16|0;e=f;d=xx(b,89477)|0;a:do if(!d)b=1;else{switch(a[d>>0]|0){case 0:{b=1;break a}case 75:{if(!(b$(d,89482)|0)){b=0;break a}break}case 109:{if(!(b$(d,89485)|0)){b=1;break a}break}case 104:{if(!(b$(d,89491)|0)){b=2;break a}break}default:{}}b=ry(b)|0;c[e>>2]=d;c[e+4>>2]=b;Pw(0,89496,e)|0;b=1}while(0);l=f;return b|0}function vm(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;h=l;l=l+32|0;g=h+16|0;f=h+8|0;e=h;d=xx(b,89260)|0;a:do if(!d)b=0;else{switch(a[d>>0]|0){case 0:{b=0;break a}case 99:{if(!(b$(d,89266)|0)){b=1;break a}break}case 115:{if(!(b$(d,89274)|0)){b=2;break a}if(!(b$(d,89281)|0)){b=0;break a}break}case 109:{if(!(b$(d,89291)|0)){if(nx(b,2,90566,0)|0){b=3;break a}c[e>>2]=ry(b)|0;Pw(0,89295,e)|0;Pw(3,89358,f)|0;b=0;break a}break}default:{}}b=ry(b)|0;c[g>>2]=d;c[g+4>>2]=b;Pw(0,89415,g)|0;b=0}while(0);l=h;return b|0}function wm(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=xx(a,90975)|0;if(!e)if((b|0)==1)e=200;else e=(ay(a)|0)*100|0;else e=a2(e)|0;c[46365]=e;e=yn(a,b)|0;do if(!((e|0)<2|(c[46365]|0)<0))if(!b){zm(a,e,d);break}else{ym(a,e,b,d,c[46366]|0);break}while(0);return}function xm(a){a=a|0;mM(a);$m(a,1);return}function ym(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0,k=0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=l;l=l+64|0;r=u+40|0;o=u+24|0;n=u;p=u+48|0;t=u+44|0;q=(d|0)==2;i=pm(a,b,q?0:2)|0;j=Gm(a)|0;k=j|4;s=vH(f<<2)|0;c[s>>2]=vH(O(b<<3,f)|0)|0;g=c[46366]|0;f=1;while(1){if((f|0)>=(g|0))break;c[s+(f<<2)>>2]=(c[s>>2]|0)+((O(f,b)|0)<<3);f=f+1|0}g=(i|0)==0;f=g?k:j;if(0){k=c[15686]|0;j=c[46365]|0;m=+h[22909];c[n>>2]=e;c[n+4>>2]=g&1;c[n+8>>2]=f&3;c[n+12>>2]=j;h[n+16>>3]=m;g1(k,89073,n)|0;E1(89130,15,1,k)|0;EL();E1(89146,13,1,k)|0}n=Cm(a,b,p,d,e,t)|0;if(0){k=c[15686]|0;m=+FL();c[o>>2]=b;h[o+8>>3]=m;g1(k,89160,o)|0}if((d|0)!=1){m=+LL(a,nx(a,0,89179,0)|0,0.0,-1797693134862315708145274.0e284);if(q){f=Gq(n,b,c[p>>2]|0,s,c[t>>2]|0,c[46366]|0,f,e,c[46365]|0,m)|0;g=12}else g=14}else{f=qn(n,b,c[p>>2]|0,s,c[t>>2]|0,c[46366]|0,f,e,c[46365]|0)|0;g=12}if((g|0)==12)if((f|0)<0)Pw(3,89189,r)|0;else g=14;a:do if((g|0)==14){g=Sy(a)|0;while(1){if(!g)break a;k=c[g+16>>2]|0;i=c[k+120>>2]|0;j=c[46366]|0;k=k+132|0;f=0;while(1){if((f|0)>=(j|0))break;h[(c[k>>2]|0)+(f<<3)>>3]=+h[(c[s+(f<<2)>>2]|0)+(i<<3)>>3];f=f+1|0}g=Ty(a,g)|0}}while(0);br(n);D_(c[s>>2]|0);D_(s);D_(c[t>>2]|0);l=u;return}function zm(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,i=0.0,j=0;g=l;l=l+48|0;f=g+32|0;e=g;switch(d|0){case 2:{Am(a,b);break}case 1:{if(!(Cq(a,b)|0)){c[e>>2]=ry(a)|0;Pw(0,88802,e)|0;Pw(3,91952,g+8|0)|0;Pw(3,88854,g+16|0)|0;Pw(3,88926,g+24|0)|0;Wn(a,b)}break}default:{Wn(a,b);if((d|0)==3)Bm(a)}}Kn(a,b);Ln(a,b);if(0){e=c[15686]|0;j=c[46365]|0;i=+h[22909];c[f>>2]=d;c[f+4>>2]=j;h[f+8>>3]=i;g1(e,88964,f)|0;EL()}Mn(a,b);l=g;return}function Am(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0;j=l;l=l+16|0;g=Cm(a,b,j,0,2,0)|0;i=ds(g,b)|0;e=a+16|0;a=0;while(1){if((a|0)>=(b|0))break;f=i+(a<<2)|0;d=0;while(1){if((d|0)==(b|0))break;h[(c[(c[(c[e>>2]|0)+160>>2]|0)+(a<<2)>>2]|0)+(d<<3)>>3]=+(c[(c[f>>2]|0)+(d<<2)>>2]|0);d=d+1|0}a=a+1|0}D_(c[i>>2]|0);D_(i);br(g);l=j;return}function Bm(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,i=0,j=0.0;f=a+16|0;d=Sy(a)|0;while(1){if(!d)break;b=Ex(a,d)|0;while(1){if(!b)break;g=c[b>>2]&3;e=(c[c[((g|0)==3?b:b+48|0)+40>>2]>>2]|0)>>>4;g=(c[c[((g|0)==2?b:b+-48|0)+40>>2]>>2]|0)>>>4;if((e|0)!=(g|0)){j=+h[(c[b+16>>2]|0)+136>>3];i=c[(c[f>>2]|0)+160>>2]|0;h[(c[i+(g<<2)>>2]|0)+(e<<3)>>3]=j;h[(c[i+(e<<2)>>2]|0)+(g<<3)>>3]=j}b=Gx(a,b)|0}d=Ty(a,d)|0}return}function Cm(a,b,d,e,f,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0.0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0.0,I=0;j=by(a)|0;G=GI()|0;if((f|0)==2){k=0;D=0}else{D=nx(a,2,90566,0)|0;k=(c[46404]|0)!=0&1;D=(D|0)!=0}A=(e|1|0)==3;E=vH(b*20|0)|0;F=vH(b<<2)|0;l=(j<<1)+b<<2;m=vH(l)|0;z=A|D;if(z)f=vH(l)|0;else f=0;C=(k|0)!=0;if(C)j=vH(l)|0;else j=0;if(A)k=vH(l)|0;else k=0;l=0;x=Sy(a)|0;y=0;while(1){if(!x)break;JI(G);if((c[(c[x+16>>2]|0)+120>>2]|0)!=(y|0)){B=12;break}c[F+(y<<2)>>2]=x;u=E+(y*20|0)+4|0;c[u>>2]=m;v=E+(y*20|0)+8|0;c[v>>2]=z?f:0;w=E+(y*20|0)+12|0;c[w>>2]=C?j:0;c[E+(y*20|0)+16>>2]=A?k:0;r=1;t=Jx(a,x)|0;s=1;q=l;m=m+4|0;f=z?f+4|0:f;j=C?j+4|0:j;k=A?k+4|0:k;while(1){if(!t)break;n=c[t>>2]&3;p=t+-48|0;l=t+48|0;do if((c[((n|0)==2?t:p)+40>>2]|0)==(c[((n|0)==3?t:l)+40>>2]|0)){n=r;p=s;l=q}else{n=Dm(G,t,r)|0;if((n|0)!=(r|0)){if(C){p=(c[w>>2]|0)+(n<<2)|0;g[p>>2]=+h[(c[t+16>>2]|0)+128>>3]+ +g[p>>2]}if(!D){n=r;p=s;l=q;break}n=(c[v>>2]|0)+(n<<2)|0;H=+h[(c[t+16>>2]|0)+136>>3];o=+(~~+g[n>>2]|0);g[n>>2]=H>o?H:o;n=r;p=s;l=q;break}I=c[t>>2]&3;l=(I|0)==3?t:l;q=q+1|0;n=r+1|0;r=m+4|0;c[m>>2]=c[(c[(c[((c[l+40>>2]|0)==(x|0)?((I|0)==2?t:p):l)+40>>2]|0)+16>>2]|0)+120>>2];if(C){g[j>>2]=+h[(c[t+16>>2]|0)+128>>3];j=j+4|0}if(D){l=f+4|0;g[f>>2]=+h[(c[t+16>>2]|0)+136>>3];if(A){f=l;B=27}else f=l}else if(A){g[f>>2]=1.0;f=f+4|0;B=27}if((B|0)==27){B=0;l=xx(t,98533)|0;if((l|0)!=0?(z$(l,132627,4)|0)==0:0)o=0.0;else o=(x|0)==(c[((c[t>>2]&3|0)==2?t:p)+40>>2]|0)?1.0:-1.0;g[k>>2]=o;k=k+4|0}p=s+1|0;l=q;m=r}while(0);r=n;t=Kx(a,t,x)|0;s=p;q=l}c[E+(y*20|0)>>2]=s;c[c[u>>2]>>2]=y;l=q;x=Ty(a,x)|0;y=y+1|0}if((B|0)==12)qa(89003,89018,819,89030);if(A)Em(E,b,e,F);n=(l|0)/2|0;a:do if((n|0)!=(by(a)|0)){l=(n<<1)+b<<2;k=xH(c[E+4>>2]|0,l)|0;if(D)f=xH(c[E+8>>2]|0,l)|0;if(C){m=0;j=xH(c[E+12>>2]|0,l)|0}else m=0;while(1){if((m|0)>=(b|0))break a;l=c[E+(m*20|0)>>2]|0;c[E+(m*20|0)+4>>2]=k;if(D){c[E+(m*20|0)+8>>2]=f;f=f+(l<<2)|0}if(C){c[E+(m*20|0)+12>>2]=j;j=j+(l<<2)|0}m=m+1|0;k=k+(l<<2)|0}}while(0);c[d>>2]=n;if(!i)D_(F);else c[i>>2]=F;KI(G);return E|0}function Dm(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;f=c[b>>2]&3;e=c[(c[(c[((f|0)==3?b:b+48|0)+40>>2]|0)+16>>2]|0)+120>>2]|0;b=c[(c[(c[((f|0)==2?b:b+-48|0)+40>>2]|0)+16>>2]|0)+120>>2]|0;f=(e|0)>(b|0);return LI(a,f?b:e,f?e:b,d)|0}function Em(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;g=0;while(1){if((g|0)>=(d|0)){g=0;break}h=c[(c[f+(g<<2)>>2]|0)+16>>2]|0;a[h+157>>0]=0;a[h+158>>0]=0;g=g+1|0}while(1){if((g|0)>=(d|0))break;if(!(a[(c[(c[f+(g<<2)>>2]|0)+16>>2]|0)+157>>0]|0))Fm(b,g,e,f);g=g+1|0}return}function Fm(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0.0,p=0,q=0;q=(c[f+(d<<2)>>2]|0)+16|0;l=c[q>>2]|0;a[l+157>>0]=1;a[l+158>>0]=1;l=b+(d*20|0)|0;m=b+(d*20|0)+16|0;n=b+(d*20|0)+4|0;o=(e|0)==3?-1.0:1.0;k=1;a:while(1){if((k|0)>=(c[l>>2]|0)){h=14;break}h=(c[m>>2]|0)+(k<<2)|0;do if(!(+g[h>>2]==1.0)){p=c[(c[n>>2]|0)+(k<<2)>>2]|0;i=c[(c[f+(p<<2)>>2]|0)+16>>2]|0;if(!(a[i+158>>0]|0)){if(a[i+157>>0]|0)break;Fm(b,p,e,f);break}g[h>>2]=o;i=b+(p*20|0)+4|0;j=c[b+(p*20|0)>>2]|0;h=1;while(1){if((h|0)>=(j|0)){h=9;break a}if((c[(c[i>>2]|0)+(h<<2)>>2]|0)==(d|0))break;h=h+1|0}g[(c[b+(p*20|0)+16>>2]|0)+(h<<2)>>2]=-1.0}while(0);k=k+1|0}if((h|0)==9)qa(89044,89018,721,89064);else if((h|0)==14){a[(c[q>>2]|0)+158>>0]=0;return}}function Gm(a){a=a|0;var b=0,d=0;d=l;l=l+16|0;b=d;a=KL(a,nx(a,0,89205,0)|0,2,0)|0;if((a|0)==0|(a|0)>2){c[b>>2]=89205;Pw(0,89214,b)|0;a=2}l=d;return a|0}function Hm(a){a=a|0;var b=0,d=0,e=0;d=ay(a)|0;c[46026]=nx(a,1,99597,0)|0;e=nx(a,1,90570,0)|0;b=Sy(a)|0;while(1){if(!b)break;$l(b);am(c[46026]|0,e,b,d)|0;b=Ty(a,b)|0}d=Sy(a)|0;while(1){if(!d)break;b=Ex(a,d)|0;while(1){if(!b)break;Im(b);b=Gx(a,b)|0}d=Ty(a,d)|0}return}function Im(a){a=a|0;var b=0.0;Az(a,134378,176,1)|0;eM(a)|0;b=+LL(a,c[46404]|0,1.0,1.0);h[(c[a+16>>2]|0)+128>>3]=b;return}function Jm(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0;a=uH(64)|0;e=a+8|0;f=d+8|0;g=e+48|0;do{c[e>>2]=c[f>>2];e=e+4|0;f=f+4|0}while((e|0)<(g|0));d=c[d+56>>2]|0;c[a+56>>2]=d;b[(c[d+16>>2]|0)+168>>1]=1;return a|0}function Km(a,b,c){a=a|0;b=b|0;c=c|0;D_(b);return}function Lm(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;a=c[b>>2]|0;e=c[d>>2]|0;if(a>>>0<=e>>>0)if(a>>>0>=e>>>0){e=c[b+24>>2]|0;a=c[d+24>>2]|0;if(e>>>0<=a>>>0)if(e>>>0>=a>>>0){a=~~(+h[b+8>>3]-+h[d+8>>3]);if(!a){a=~~(+h[b+16>>3]-+h[d+16>>3]);if(!a){a=~~(+h[b+32>>3]-+h[d+32>>3]);if(!a)a=~~(+h[b+40>>3]-+h[d+40>>3])}}}else a=-1;else a=1}else a=-1;else a=1;return a|0}function Mm(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0.0;k=l;l=l+16|0;g=k;h=e+16|0;i=b[(c[h>>2]|0)+168>>1]|0;j=i<<16>>16;if(i<<16>>16!=1&(a[191874]|0)==0){i=vH(j<<2)|0;g=0;while(1){if((g|0)>=(j|0))break;c[i+(g<<2)>>2]=e;e=c[(c[e+16>>2]|0)+172>>2]|0;g=g+1|0}m=+(f|0);YK(d,i,0,j,m,m,17764);e=0;while(1){if((e|0)>=(j|0))break;g=c[i+(e<<2)>>2]|0;h=g+16|0;if(c[(c[h>>2]|0)+96>>2]|0){f=ez(c[((c[g>>2]&3|0)==3?g:g+48|0)+40>>2]|0)|0;kM(f,c[(c[h>>2]|0)+96>>2]|0)}dL(g);e=e+1|0}D_(i)}else{c[g>>2]=e;m=+(f|0);YK(d,g,0,1,m,m,17764);if(c[(c[h>>2]|0)+96>>2]|0){j=ez(c[((c[e>>2]&3|0)==3?e:e+48|0)+40>>2]|0)|0;kM(j,c[(c[h>>2]|0)+96>>2]|0)}dL(e)}l=k;return}function Nm(a){a=a|0;return 0}function Om(a){a=a|0;return 0}function Pm(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,i=0,j=0,k=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0,s=0.0,t=0,u=0,v=0,w=0.0,x=0.0,y=0.0,z=0,A=0,B=0,D=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0;Q=l;l=l+384|0;O=Q+368|0;P=Q+112|0;j=Q+32|0;r=Q+336|0;K=Q+320|0;L=Q+304|0;M=Q+288|0;N=Q+272|0;i=Q+256|0;H=Q+240|0;I=Q+224|0;J=Q+208|0;t=Q+192|0;u=Q+176|0;v=Q+160|0;z=Q+144|0;A=Q+128|0;B=Q+96|0;D=Q+16|0;G=Q;a:do switch(HJ(b)|0){case 3:case 1:{f=uH(8)|0;z=b+16|0;b=c[z>>2]|0;i=c[b+12>>2]|0;do if(!(e<<24>>24)){b=c[i+8>>2]|0;if((b|0)>2){y=0.0;j=c[i+44>>2]|0;e=0;p=+g[d>>2];q=+g[d+4>>2];break}else{y=+k2()*.01;b=8;j=0;e=1;p=0.0;q=0.0;break}}else if(!(c[i+40>>2]&2048)){q=+h[b+88>>3];p=-q;y=+h[b+80>>3];x=y*-.5;h[j>>3]=p;h[j+8>>3]=x;h[j+16>>3]=q;h[j+24>>3]=x;y=y*.5;h[j+32>>3]=q;h[j+40>>3]=y;h[j+48>>3]=p;h[j+56>>3]=y;y=0.0;b=4;e=0;p=0.0;q=0.0;break}else{jM(r,i);p=+h[r>>3];x=+h[r+8>>3];q=+h[r+16>>3];y=+h[r+24>>3];h[j>>3]=p;h[j+8>>3]=x;h[j+16>>3]=q;h[j+24>>3]=x;h[j+32>>3]=q;h[j+40>>3]=y;h[j+48>>3]=p;h[j+56>>3]=y;y=0.0;b=4;e=0;p=0.0;q=0.0;break}while(0);c[f+4>>2]=b;r=uH(b<<4)|0;c[f>>2]=r;s=1.0/+(b|0);t=d+8|0;u=d+4|0;v=(b|0)==4;w=-p;x=-q;i=0;while(1){if((b|0)<=(i|0))break a;do if(e){k=+(i|0)*6.283185307179586*s+y;m=+E(+k);k=+F(+k);if(!(a[t>>0]|0)){P=c[z>>2]|0;n=k*+g[u>>2]*+h[P+80>>3];k=m*+g[d>>2]*(+h[P+96>>3]+ +h[P+88>>3])}else{P=c[z>>2]|0;n=(+h[P+80>>3]+ +g[u>>2])*k;k=(+h[P+96>>3]+ +h[P+88>>3]+ +g[d>>2])*m}o=k*.5;k=n*.5}else{if(!(a[t>>0]|0)){o=+h[j+(i<<4)>>3]*p;k=+h[j+(i<<4)+8>>3]*q;break}if(!v){o=+h[j+(i<<4)>>3];k=+h[j+(i<<4)+8>>3];n=+C(+(k*k+o*o));o=(p/n+1.0)*o;k=(q/n+1.0)*k;break}switch(i|0){case 0:{m=q;k=p;break}case 1:{m=q;k=w;break}case 2:{m=x;k=w;break}case 3:{m=x;k=p;break}default:{m=0.0;k=0.0}}o=+h[j+(i<<4)>>3]+k;k=+h[j+(i<<4)+8>>3]+m}while(0);O=c[z>>2]|0;P=b-i+-1|0;h[r+(P<<4)>>3]=+h[O+16>>3]+o;h[r+(P<<4)+8>>3]=+h[O+24>>3]+k;i=i+1|0}}case 2:{G=b+16|0;f=c[(c[G>>2]|0)+12>>2]|0;k=+h[f+16>>3];o=+h[f+24>>3];m=+h[f+32>>3];n=+h[f+40>>3];f=uH(8)|0;c[f+4>>2]=4;b=uH(64)|0;c[f>>2]=b;G=(c[G>>2]|0)+16|0;c[P>>2]=c[G>>2];c[P+4>>2]=c[G+4>>2];c[P+8>>2]=c[G+8>>2];c[P+12>>2]=c[G+12>>2];if(!(a[d+8>>0]|0)){c[O>>2]=c[P>>2];c[O+4>>2]=c[P+4>>2];c[O+8>>2]=c[P+8>>2];c[O+12>>2]=c[P+12>>2];Rm(i,k,o,O,d);c[b>>2]=c[i>>2];c[b+4>>2]=c[i+4>>2];c[b+8>>2]=c[i+8>>2];c[b+12>>2]=c[i+12>>2];N=(c[f>>2]|0)+16|0;c[O>>2]=c[P>>2];c[O+4>>2]=c[P+4>>2];c[O+8>>2]=c[P+8>>2];c[O+12>>2]=c[P+12>>2];Rm(H,k,n,O,d);c[N>>2]=c[H>>2];c[N+4>>2]=c[H+4>>2];c[N+8>>2]=c[H+8>>2];c[N+12>>2]=c[H+12>>2];N=(c[f>>2]|0)+32|0;c[O>>2]=c[P>>2];c[O+4>>2]=c[P+4>>2];c[O+8>>2]=c[P+8>>2];c[O+12>>2]=c[P+12>>2];Rm(I,m,n,O,d);c[N>>2]=c[I>>2];c[N+4>>2]=c[I+4>>2];c[N+8>>2]=c[I+8>>2];c[N+12>>2]=c[I+12>>2];N=(c[f>>2]|0)+48|0;c[O>>2]=c[P>>2];c[O+4>>2]=c[P+4>>2];c[O+8>>2]=c[P+8>>2];c[O+12>>2]=c[P+12>>2];Rm(J,m,o,O,d);c[N>>2]=c[J>>2];c[N+4>>2]=c[J+4>>2];c[N+8>>2]=c[J+8>>2];c[N+12>>2]=c[J+12>>2];break a}else{y=k-+g[d>>2];J=d+4|0;x=o-+g[J>>2];c[O>>2]=c[P>>2];c[O+4>>2]=c[P+4>>2];c[O+8>>2]=c[P+8>>2];c[O+12>>2]=c[P+12>>2];Qm(K,y,x,O);c[b>>2]=c[K>>2];c[b+4>>2]=c[K+4>>2];c[b+8>>2]=c[K+8>>2];c[b+12>>2]=c[K+12>>2];K=(c[f>>2]|0)+16|0;x=k-+g[d>>2];y=n+ +g[J>>2];c[O>>2]=c[P>>2];c[O+4>>2]=c[P+4>>2];c[O+8>>2]=c[P+8>>2];c[O+12>>2]=c[P+12>>2];Qm(L,x,y,O);c[K>>2]=c[L>>2];c[K+4>>2]=c[L+4>>2];c[K+8>>2]=c[L+8>>2];c[K+12>>2]=c[L+12>>2];L=(c[f>>2]|0)+32|0;y=m+ +g[d>>2];x=n+ +g[J>>2];c[O>>2]=c[P>>2];c[O+4>>2]=c[P+4>>2];c[O+8>>2]=c[P+8>>2];c[O+12>>2]=c[P+12>>2];Qm(M,y,x,O);c[L>>2]=c[M>>2];c[L+4>>2]=c[M+4>>2];c[L+8>>2]=c[M+8>>2];c[L+12>>2]=c[M+12>>2];M=(c[f>>2]|0)+48|0;x=m+ +g[d>>2];y=o-+g[J>>2];c[O>>2]=c[P>>2];c[O+4>>2]=c[P+4>>2];c[O+8>>2]=c[P+8>>2];c[O+12>>2]=c[P+12>>2];Qm(N,x,y,O);c[M>>2]=c[N>>2];c[M+4>>2]=c[N+4>>2];c[M+8>>2]=c[N+8>>2];c[M+12>>2]=c[N+12>>2];break a}}case 4:{b=b+16|0;f=uH(8)|0;c[f+4>>2]=4;i=uH(64)|0;c[f>>2]=i;j=c[b>>2]|0;N=j+16|0;c[P>>2]=c[N>>2];c[P+4>>2]=c[N+4>>2];c[P+8>>2]=c[N+8>>2];c[P+12>>2]=c[N+12>>2];k=-+h[j+88>>3];if(!(a[d+8>>0]|0)){x=-+h[j+80>>3];c[O>>2]=c[P>>2];c[O+4>>2]=c[P+4>>2];c[O+8>>2]=c[P+8>>2];c[O+12>>2]=c[P+12>>2];Rm(A,k,x,O,d);c[i>>2]=c[A>>2];c[i+4>>2]=c[A+4>>2];c[i+8>>2]=c[A+8>>2];c[i+12>>2]=c[A+12>>2];N=(c[f>>2]|0)+16|0;M=c[b>>2]|0;x=-+h[M+88>>3];y=+h[M+80>>3];c[O>>2]=c[P>>2];c[O+4>>2]=c[P+4>>2];c[O+8>>2]=c[P+8>>2];c[O+12>>2]=c[P+12>>2];Rm(B,x,y,O,d);c[N>>2]=c[B>>2];c[N+4>>2]=c[B+4>>2];c[N+8>>2]=c[B+8>>2];c[N+12>>2]=c[B+12>>2];N=(c[f>>2]|0)+32|0;M=c[b>>2]|0;y=+h[M+96>>3];x=+h[M+80>>3];c[O>>2]=c[P>>2];c[O+4>>2]=c[P+4>>2];c[O+8>>2]=c[P+8>>2];c[O+12>>2]=c[P+12>>2];Rm(D,y,x,O,d);c[N>>2]=c[D>>2];c[N+4>>2]=c[D+4>>2];c[N+8>>2]=c[D+8>>2];c[N+12>>2]=c[D+12>>2];N=(c[f>>2]|0)+48|0;M=c[b>>2]|0;x=+h[M+96>>3];y=-+h[M+80>>3];c[O>>2]=c[P>>2];c[O+4>>2]=c[P+4>>2];c[O+8>>2]=c[P+8>>2];c[O+12>>2]=c[P+12>>2];Rm(G,x,y,O,d);c[N>>2]=c[G>>2];c[N+4>>2]=c[G+4>>2];c[N+8>>2]=c[G+8>>2];c[N+12>>2]=c[G+12>>2];break a}else{y=k-+g[d>>2];M=d+4|0;x=-+h[j+80>>3]-+g[M>>2];c[O>>2]=c[P>>2];c[O+4>>2]=c[P+4>>2];c[O+8>>2]=c[P+8>>2];c[O+12>>2]=c[P+12>>2];Qm(t,y,x,O);c[i>>2]=c[t>>2];c[i+4>>2]=c[t+4>>2];c[i+8>>2]=c[t+8>>2];c[i+12>>2]=c[t+12>>2];N=(c[f>>2]|0)+16|0;L=c[b>>2]|0;x=-+h[L+88>>3]-+g[d>>2];y=+h[L+80>>3]+ +g[M>>2];c[O>>2]=c[P>>2];c[O+4>>2]=c[P+4>>2];c[O+8>>2]=c[P+8>>2];c[O+12>>2]=c[P+12>>2];Qm(u,x,y,O);c[N>>2]=c[u>>2];c[N+4>>2]=c[u+4>>2];c[N+8>>2]=c[u+8>>2];c[N+12>>2]=c[u+12>>2];N=(c[f>>2]|0)+32|0;L=c[b>>2]|0;y=+h[L+96>>3]+ +g[d>>2];x=+h[L+80>>3]+ +g[M>>2];c[O>>2]=c[P>>2];c[O+4>>2]=c[P+4>>2];c[O+8>>2]=c[P+8>>2];c[O+12>>2]=c[P+12>>2];Qm(v,y,x,O);c[N>>2]=c[v>>2];c[N+4>>2]=c[v+4>>2];c[N+8>>2]=c[v+8>>2];c[N+12>>2]=c[v+12>>2];N=(c[f>>2]|0)+48|0;L=c[b>>2]|0;x=+h[L+96>>3]+ +g[d>>2];y=-+h[L+80>>3]-+g[M>>2];c[O>>2]=c[P>>2];c[O+4>>2]=c[P+4>>2];c[O+8>>2]=c[P+8>>2];c[O+12>>2]=c[P+12>>2];Qm(z,x,y,O);c[N>>2]=c[z>>2];c[N+4>>2]=c[z+4>>2];c[N+8>>2]=c[z+8>>2];c[N+12>>2]=c[z+12>>2];break a}}default:f=0}while(0);l=Q;return f|0}function Qm(a,b,c,d){a=a|0;b=+b;c=+c;d=d|0;c=+h[d+8>>3]+c;h[a>>3]=+h[d>>3]+b;h[a+8>>3]=c;return}function Rm(a,b,c,d,e){a=a|0;b=+b;c=+c;d=d|0;e=e|0;c=+g[e+4>>2]*c+ +h[d+8>>3];h[a>>3]=+g[e>>2]*b+ +h[d>>3];h[a+8>>3]=c;return}function Sm(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0;o=l;l=l+112|0;j=o+88|0;i=o+72|0;k=o+32|0;m=o+16|0;n=o;f=o+56|0;g=o+40|0;h=b+48|0;r=(c[(c[((c[b>>2]&3|0)==3?b:h)+40>>2]|0)+16>>2]|0)+16|0;p=b+16|0;q=(c[p>>2]|0)+16|0;c[i>>2]=c[r>>2];c[i+4>>2]=c[r+4>>2];c[i+8>>2]=c[r+8>>2];c[i+12>>2]=c[r+12>>2];c[j>>2]=c[q>>2];c[j+4>>2]=c[q+4>>2];c[j+8>>2]=c[q+8>>2];c[j+12>>2]=c[q+12>>2];Tm(f,i,j);c[m>>2]=c[f>>2];c[m+4>>2]=c[f+4>>2];c[m+8>>2]=c[f+8>>2];c[m+12>>2]=c[f+12>>2];f=b+-48|0;q=(c[(c[((c[b>>2]&3|0)==2?b:f)+40>>2]|0)+16>>2]|0)+16|0;p=(c[p>>2]|0)+56|0;c[i>>2]=c[q>>2];c[i+4>>2]=c[q+4>>2];c[i+8>>2]=c[q+8>>2];c[i+12>>2]=c[q+12>>2];c[j>>2]=c[p>>2];c[j+4>>2]=c[p+4>>2];c[j+8>>2]=c[p+8>>2];c[j+12>>2]=c[p+12>>2];Tm(g,i,j);c[n>>2]=c[g>>2];c[n+4>>2]=c[g+4>>2];c[n+8>>2]=c[g+8>>2];c[n+12>>2]=c[g+12>>2];if(!e){g=-1111;f=-1111}else{r=c[b>>2]&3;g=c[(c[(c[((r|0)==2?b:f)+40>>2]|0)+16>>2]|0)+288>>2]|0;f=c[(c[(c[((r|0)==3?b:h)+40>>2]|0)+16>>2]|0)+288>>2]|0};c[i>>2]=c[m>>2];c[i+4>>2]=c[m+4>>2];c[i+8>>2]=c[m+8>>2];c[i+12>>2]=c[m+12>>2];c[j>>2]=c[n>>2];c[j+4>>2]=c[n+4>>2];c[j+8>>2]=c[n+8>>2];c[j+12>>2]=c[n+12>>2];vU(d,i,f,j,g,k)|0;p=k;q=c[p+4>>2]|0;r=a;c[r>>2]=c[p>>2];c[r+4>>2]=q;l=o;return}function Tm(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0;d=+h[c+8>>3]+ +h[b+8>>3];h[a>>3]=+h[c>>3]+ +h[b>>3];h[a+8>>3]=d;return}function Um(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;u=l;l=l+144|0;p=u+104|0;q=u+88|0;o=u+80|0;n=u+72|0;j=u+64|0;s=u+128|0;k=u+32|0;m=u+124|0;t=u+16|0;r=u;i=u+120|0;h=(c[b+16>>2]|0)+144|0;g=c[h>>2]|0;h=c[h+4>>2]|0;v=j;c[v>>2]=g;c[v+4>>2]=h;v=g;c[t>>2]=c[v>>2];c[t+4>>2]=c[v+4>>2];c[t+8>>2]=c[v+8>>2];c[t+12>>2]=c[v+12>>2];h=g+(h+-1<<4)|0;c[r>>2]=c[h>>2];c[r+4>>2]=c[h+4>>2];c[r+8>>2]=c[h+8>>2];c[r+12>>2]=c[h+12>>2];a:do if(!(f<<24>>24)){g=-1111;f=-1111}else{g=-1111;f=-1111;h=0;while(1){if((h|0)>=(e|0))break a;if((f|0)==-1111){f=c[d+(h<<2)>>2]|0;c[q>>2]=c[f>>2];c[q+4>>2]=c[f+4>>2];c[p>>2]=c[t>>2];c[p+4>>2]=c[t+4>>2];c[p+8>>2]=c[t+8>>2];c[p+12>>2]=c[t+12>>2];f=(wU(q,p)|0)==0;f=f?-1111:h}if((g|0)==-1111){g=c[d+(h<<2)>>2]|0;c[q>>2]=c[g>>2];c[q+4>>2]=c[g+4>>2];c[p>>2]=c[r>>2];c[p+4>>2]=c[r+4>>2];c[p+8>>2]=c[r+8>>2];c[p+12>>2]=c[r+12>>2];g=(wU(q,p)|0)==0;g=g?-1111:h}h=h+1|0}}while(0);Vm(d,e,f,g,i,m);c[k>>2]=0;c[k+4>>2]=0;c[k+8>>2]=0;c[k+12>>2]=0;c[k+16>>2]=0;c[k+20>>2]=0;c[k+24>>2]=0;c[k+28>>2]=0;h=c[i>>2]|0;v=c[m>>2]|0;c[p>>2]=c[j>>2];c[p+4>>2]=c[j+4>>2];if((xU(h,v,p,k,s)|0)<0){t=ry(c[((c[b>>2]&3|0)==3?b:b+48|0)+40>>2]|0)|0;v=ry(c[((c[b>>2]&3|0)==2?b:b+-48|0)+40>>2]|0)|0;c[n>>2]=t;c[n+4>>2]=v;Pw(1,89563,n)|0}else{if(0>1){g=c[15686]|0;n=ry(c[((c[b>>2]&3|0)==3?b:b+48|0)+40>>2]|0)|0;f=b+-48|0;v=ry(c[((c[b>>2]&3|0)==2?b:f)+40>>2]|0)|0;c[o>>2]=n;c[o+4>>2]=v;g1(g,89611,o)|0;g=b}else{f=b+-48|0;g=b}QK(b,c[((c[g>>2]&3|0)==2?b:f)+40>>2]|0,c[s>>2]|0,c[s+4>>2]|0,17764);D_(h);c[q>>2]=c[t>>2];c[q+4>>2]=c[t+4>>2];c[q+8>>2]=c[t+8>>2];c[q+12>>2]=c[t+12>>2];c[p>>2]=c[r>>2];c[p+4>>2]=c[r+4>>2];c[p+8>>2]=c[r+8>>2];c[p+12>>2]=c[r+12>>2];jL(a,b,q,p)}l=u;return}function Vm(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;i=0;h=0;while(1){if((i|0)>=(b|0))break;if(!((i|0)==(d|0)|(i|0)==(e|0)))h=(c[(c[a+(i<<2)>>2]|0)+4>>2]|0)+h|0;i=i+1|0}o=vH(h<<5)|0;i=0;n=0;while(1){if((n|0)>=(b|0))break;a:do if(!((n|0)==(d|0)|(n|0)==(e|0))){m=a+(n<<2)|0;l=0;while(1){j=c[m>>2]|0;k=c[j+4>>2]|0;if((l|0)>=(k|0))break a;p=l+1|0;q=o+(i<<5)|0;j=(c[j>>2]|0)+(l<<4)|0;c[q>>2]=c[j>>2];c[q+4>>2]=c[j+4>>2];c[q+8>>2]=c[j+8>>2];c[q+12>>2]=c[j+12>>2];j=o+(i<<5)+16|0;k=(c[c[m>>2]>>2]|0)+(((p|0)<(k|0)?p:0)<<4)|0;c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];c[j+8>>2]=c[k+8>>2];c[j+12>>2]=c[k+12>>2];l=p;i=i+1|0}}while(0);n=n+1|0}if((i|0)==(h|0)){c[f>>2]=o;c[g>>2]=h;return}else qa(89625,89632,77,89647)}function Wm(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;n=l;l=l+32|0;k=n+12|0;f=n;uq(f,a);c[k>>2]=c[f>>2];c[k+4>>2]=c[f+4>>2];c[k+8>>2]=c[f+8>>2];f=Sy(a)|0;while(1){if(!f)break;g=Ex(a,f)|0;while(1){if(!g)break;KK(g);g=Gx(a,g)|0}f=Ty(a,f)|0}h=Cw(17728,c[4555]|0)|0;f=Sy(a)|0;while(1){if(!f)break;g=Ex(a,f)|0;while(1){if(!g)break;if((c[46363]|0)>1?(i=c[g+16>>2]|0,(c[i+8>>2]|0)!=0):0){o=i+168|0;b[o>>1]=(b[o>>1]|0)+1<<16>>16}else m=14;if((m|0)==14?(m=0,j=Xm(h,g)|0,(j|0)!=(g|0)):0){o=c[j+16>>2]|0;p=o+168|0;b[p>>1]=(b[p>>1]|0)+1<<16>>16;o=o+172|0;c[(c[g+16>>2]|0)+172>>2]=c[o>>2];c[o>>2]=g}g=Gx(a,g)|0}f=Ty(a,f)|0}yw(h)|0;if(!(nb[d&63](a,k,e)|0)){c[46367]=1;f=0}else f=1;l=n;return f|0}function Xm(a,b){a=a|0;b=b|0;var d=0,e=0,f=0.0,g=0.0,i=0,j=0.0,k=0.0,m=0.0,n=0.0,o=0,p=0,q=0;q=l;l=l+64|0;p=q;e=c[b>>2]&3;i=c[((e|0)==3?b:b+48|0)+40>>2]|0;e=c[((e|0)==2?b:b+-48|0)+40>>2]|0;do if(i>>>0>=e>>>0){d=b+16|0;if(i>>>0>e>>>0){d=c[d>>2]|0;o=e;e=i;k=+h[d+16>>3];m=+h[d+24>>3];g=+h[d+56>>3];f=+h[d+64>>3];break}o=c[d>>2]|0;j=+h[o+56>>3];n=+h[o+64>>3];g=+h[o+16>>3];f=+h[o+24>>3];if(!(gj)){d=f>n;if(f>2]|0;o=i;k=+h[d+56>>3];m=+h[d+64>>3];g=+h[d+16>>3];f=+h[d+24>>3]}while(0);c[p+8>>2]=o;h[p+16>>3]=g;h[p+24>>3]=f;c[p+32>>2]=e;h[p+40>>3]=k;h[p+48>>3]=m;c[p+56>>2]=b;p=c[(nb[c[a>>2]&63](a,p,1)|0)+56>>2]|0;l=q;return p|0}function Ym(a,b){a=a|0;b=b|0;return Wm(a,21,b)|0}function Zm(d,e,f){d=d|0;e=e|0;f=f|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0.0,H=0;F=l;l=l+112|0;B=F+88|0;A=F+72|0;t=F+40|0;q=F+8|0;p=F;u=F+64|0;C=F+48|0;D=F+24|0;i=(c[46363]|0)>1&1;do if((f|0)>5){s=uH((ay(d)|0)<<2)|0;o=(f|0)==8;n=o&1;m=Sy(d)|0;r=0;while(1){if(!m)break;j=Pm(m,e,n)|0;k=(c[m+16>>2]|0)+288|0;if(!j){c[k>>2]=-1111;j=r}else{c[k>>2]=r;c[s+(r<<2)>>2]=j;j=r+1|0}m=Ty(d,m)|0;r=j}if(s){j=ms(s,r)|0;if(j|0){if(o){y=0;z=s;x=s;w=1;break}y=sU(s,r)|0;z=s;x=s;w=1;break}if(o){Pw(0,89661,p)|0;j=0;y=0;z=s;x=s;w=1;break}else{G=+g[e+4>>2];h[q>>3]=+g[e>>2];h[q+8>>3]=G;Pw(0,89739,q)|0;j=0;y=0;z=s;x=s;w=1;break}}else{j=0;y=0;z=0;x=0;w=0}}else{j=0;y=0;z=0;r=0;x=0;w=0}while(0);if(0){k=c[15686]|0;if((f|0)==8&(j|0)!=0)m=89845;else m=(y|0)==0?89831:(f|0)==10?107030:89821;c[t>>2]=m;g1(k,89862,t)|0}v=(y|0)!=0;a:do if(!v){if((f|0)==8&(j|0)!=0){cN(d,0);i=1}}else{k=Sy(d)|0;while(1){if(!k)break a;j=Ex(d,k)|0;while(1){if(!j)break;t=(c[j+16>>2]|0)+144|0;Sm(u,j,y,1,0,0);q=u;s=c[q+4>>2]|0;c[t>>2]=c[q>>2];c[t+4>>2]=s;j=Gx(d,j)|0}k=Ty(d,k)|0}}while(0);p=(i|0)==0;q=d+60|0;s=(f|0)==10;i=0;o=Sy(d)|0;j=0;while(1){if(!o)break;t=o+16|0;e=Ex(d,o)|0;while(1){if(!e)break;n=c[((c[e>>2]&3|0)==2?e:e+-48|0)+40>>2]|0;k=e+16|0;m=c[k>>2]|0;if(!p?(c[m+8>>2]|0)!=0:0){H=(c[t>>2]|0)+16|0;u=m+16|0;c[A>>2]=c[H>>2];c[A+4>>2]=c[H+4>>2];c[A+8>>2]=c[H+8>>2];c[A+12>>2]=c[H+12>>2];c[B>>2]=c[u>>2];c[B+4>>2]=c[u+4>>2];c[B+8>>2]=c[u+8>>2];c[B+12>>2]=c[u+12>>2];Tm(C,A,B);n=(c[n+16>>2]|0)+16|0;u=(c[k>>2]|0)+56|0;c[A>>2]=c[n>>2];c[A+4>>2]=c[n+4>>2];c[A+8>>2]=c[n+8>>2];c[A+12>>2]=c[n+12>>2];c[B>>2]=c[u>>2];c[B+4>>2]=c[u+4>>2];c[B+8>>2]=c[u+8>>2];c[B+12>>2]=c[u+12>>2];Tm(D,A,B);c[A>>2]=c[C>>2];c[A+4>>2]=c[C+4>>2];c[A+8>>2]=c[C+8>>2];c[A+12>>2]=c[C+12>>2];c[B>>2]=c[D>>2];c[B+4>>2]=c[D+4>>2];c[B+8>>2]=c[D+8>>2];c[B+12>>2]=c[D+12>>2];jL(d,e,A,B)}else E=35;b:do if((E|0)==35){E=0;H=b[m+168>>1]|0;k=H<<16>>16;if(H<<16>>16){if((o|0)==(n|0)){if(!i){j=uH(96)|0;c[j+84>>2]=uH(((ay(d)|0)<<5)+11520|0)|0;i=j}Mm(i,e,c[(c[(c[q>>2]|0)+16>>2]|0)+248>>2]|0);break}if(!v){zJ(d,e,f,17764);break}k=a[191874]|0?1:k;m=e;n=0;while(1){if((n|0)>=(k|0))break b;if(s)Um(d,m,z,r,1);else _m(d,m);m=c[(c[m+16>>2]|0)+172>>2]|0;n=n+1|0}}}while(0);e=Gx(d,e)|0}o=Ty(d,o)|0}if(v)uU(y);if(i|0){D_(c[i+84>>2]|0);D_(j)}if(w){i=0;while(1){if((i|0)>=(r|0))break;D_(c[z+(i<<2)>>2]|0);i=i+1|0}D_(x)}l=F;return 0}function _m(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;k=l;l=l+96|0;g=k+64|0;f=k+48|0;d=k+40|0;h=k+80|0;e=k+32|0;i=k+16|0;j=k;m=(c[b+16>>2]|0)+144|0;n=c[m>>2]|0;m=c[m+4>>2]|0;o=e;c[o>>2]=n;c[o+4>>2]=m;o=n;c[i>>2]=c[o>>2];c[i+4>>2]=c[o+4>>2];c[i+8>>2]=c[o+8>>2];c[i+12>>2]=c[o+12>>2];m=n+(m+-1<<4)|0;c[j>>2]=c[m>>2];c[j+4>>2]=c[m+4>>2];c[j+8>>2]=c[m+8>>2];c[j+12>>2]=c[m+12>>2];c[g>>2]=c[e>>2];c[g+4>>2]=c[e+4>>2];oV(g,h);if(0>1){o=c[15686]|0;m=ry(c[((c[b>>2]&3|0)==3?b:b+48|0)+40>>2]|0)|0;e=b+-48|0;n=ry(c[((c[b>>2]&3|0)==2?b:e)+40>>2]|0)|0;c[d>>2]=m;c[d+4>>2]=n;g1(o,89887,d)|0;d=e;e=b}else{d=b+-48|0;e=b}QK(b,c[((c[e>>2]&3|0)==2?b:d)+40>>2]|0,c[h>>2]|0,c[h+4>>2]|0,17764);c[f>>2]=c[i>>2];c[f+4>>2]=c[i+4>>2];c[f+8>>2]=c[i+8>>2];c[f+12>>2]=c[i+12>>2];c[g>>2]=c[j>>2];c[g+4>>2]=c[j+4>>2];c[g+8>>2]=c[j+8>>2];c[g+12>>2]=c[j+12>>2];jL(a,b,f,g);l=k;return}function $m(a,d){a=a|0;d=d|0;var e=0;e=b[(c[a+16>>2]|0)+136>>1]&14;if(d<<24>>24)an(a)|0;if(e<<16>>16)Ym(a,e&65535)|0;return}function an(a){a=a|0;var b=0,d=0,e=0,f=0;d=bn(a)|0;b=Sy(a)|0;while(1){if(!b)break;e=c[b+16>>2]|0;f=c[e+132>>2]|0;h[e+16>>3]=+h[f>>3]*72.0;h[e+24>>3]=+h[f+8>>3]*72.0;b=Ty(a,b)|0}return d|0}function bn(a){a=a|0;var b=0,d=0,e=0,f=0.0,g=0.0,i=0.0,j=0,k=0;a:do if((c[a+60>>2]|0)==(a|0)?(d=a+16|0,e=c[d>>2]|0,(c[(c[e+8>>2]|0)+84>>2]|0)!=0):0){if(!(+h[e+16>>3]!=0.0)?!(+h[e+24>>3]!=0.0):0)b=0;else{cn(a);b=1;e=c[d>>2]|0}j=(c[e+116>>2]&1|0)==0;if(!j){k=e+32|0;i=+h[k>>3];d=e+40|0;h[k>>3]=+h[d>>3];h[d>>3]=i}d=c[e+8>>2]|0;b:do switch(c[d+84>>2]|0){case 2:{f=+h[d+64>>3];if(f<=0.0)break a;g=f/+h[e+32>>3];f=+h[d+72>>3]/+h[e+40>>3];if(g<1.0|f<1.0)if(g>3];if(f<=0.0)break a;g=f/+h[e+32>>3];f=+h[d+72>>3]/+h[e+40>>3];if(!(g>1.0&f>1.0))break a;f=g>3];f=+h[e+40>>3]/+h[e+32>>3];if(f1){d=Sy(a)|0;while(1){if(!d)break c;b=Ex(a,d)|0;while(1){if(!b)break;if(c[(c[b+16>>2]|0)+8>>2]|0)dn(b,f,g);b=Gx(a,b)|0}d=Ty(a,d)|0}}while(0);b=Sy(a)|0;while(1){if(!b)break;k=c[(c[b+16>>2]|0)+132>>2]|0;h[k>>3]=+h[k>>3]*f;k=k+8|0;h[k>>3]=+h[k>>3]*g;b=Ty(a,b)|0}en(a,f,g);b=1}else b=0;while(0);return b|0}function cn(b){b=b|0;var d=0,e=0,f=0.0,g=0.0,i=0.0,j=0.0,k=0,m=0,n=0,o=0;n=l;l=l+32|0;k=n+16|0;m=n;d=(c[b+16>>2]|0)+16|0;c[m>>2]=c[d>>2];c[m+4>>2]=c[d+4>>2];c[m+8>>2]=c[d+8>>2];c[m+12>>2]=c[d+12>>2];f=+h[m>>3];g=f*.013888888888888888;i=+h[m+8>>3];j=i*.013888888888888888;d=Sy(b)|0;while(1){if(!d)break;e=c[d+16>>2]|0;o=c[e+132>>2]|0;h[o>>3]=+h[o>>3]-g;o=o+8|0;h[o>>3]=+h[o>>3]-j;e=c[e+108>>2]|0;if(e|0?a[e+81>>0]|0:0){o=e+56|0;h[o>>3]=+h[o>>3]-f;o=e+64|0;h[o>>3]=+h[o>>3]-i}d=Ty(b,d)|0}e=Sy(b)|0;while(1){if(!e)break;d=Ex(b,e)|0;while(1){if(!d)break;if(c[(c[d+16>>2]|0)+8>>2]|0){c[k>>2]=c[m>>2];c[k+4>>2]=c[m+4>>2];c[k+8>>2]=c[m+8>>2];c[k+12>>2]=c[m+12>>2];fn(d,k)}d=Gx(b,d)|0}e=Ty(b,e)|0}c[k>>2]=c[m>>2];c[k+4>>2]=c[m+4>>2];c[k+8>>2]=c[m+8>>2];c[k+12>>2]=c[m+12>>2];gn(b,k);l=n;return}function dn(b,d,e){b=b|0;d=+d;e=+e;var f=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0.0,p=0,q=0.0,r=0.0,s=0.0,t=0.0,u=0;p=c[b>>2]&3;i=c[(c[(c[((p|0)==2?b:b+-48|0)+40>>2]|0)+16>>2]|0)+132>>2]|0;s=(d+-1.0)*72.0;q=s*+h[i>>3];t=(e+-1.0)*72.0;r=t*+h[i+8>>3];p=c[(c[(c[((p|0)==3?b:b+48|0)+40>>2]|0)+16>>2]|0)+132>>2]|0;s=s*+h[p>>3];t=t*+h[p+8>>3];p=c[b+16>>2]|0;i=c[p+8>>2]|0;j=c[i+4>>2]|0;k=j+-1|0;b=0;i=c[i>>2]|0;while(1){if((b|0)>=(j|0))break;l=c[i+4>>2]|0;m=l+-1|0;n=(b|0)==(k|0);f=0;g=c[i>>2]|0;while(1){if((f|0)>=(l|0))break;do if(f|b){o=+h[g>>3];if((f|0)==(m|0)&n){h[g>>3]=o+q;u=g+8|0;h[u>>3]=+h[u>>3]+r;break}else{h[g>>3]=o*d;u=g+8|0;h[u>>3]=+h[u>>3]*e;break}}else{h[g>>3]=+h[g>>3]+s;u=g+8|0;h[u>>3]=+h[u>>3]+t}while(0);f=f+1|0;g=g+16|0}if(c[i+8>>2]|0){u=i+16|0;h[u>>3]=+h[u>>3]+s;u=i+24|0;h[u>>3]=+h[u>>3]+t}if(c[i+12>>2]|0){u=i+32|0;h[u>>3]=+h[u>>3]+q;u=i+40|0;h[u>>3]=+h[u>>3]+r}b=b+1|0;i=i+48|0}b=c[p+96>>2]|0;if(b|0?a[b+81>>0]|0:0){u=b+56|0;h[u>>3]=+h[u>>3]*d;u=b+64|0;h[u>>3]=+h[u>>3]*e}b=c[p+100>>2]|0;if(b|0?a[b+81>>0]|0:0){u=b+56|0;h[u>>3]=+h[u>>3]+q;u=b+64|0;h[u>>3]=+h[u>>3]+r}b=c[p+104>>2]|0;if(b|0?a[b+81>>0]|0:0){u=b+56|0;h[u>>3]=+h[u>>3]+s;u=b+64|0;h[u>>3]=+h[u>>3]+t}return}function en(b,d,e){b=b|0;d=+d;e=+e;var f=0,g=0,i=0;i=b+16|0;g=c[i>>2]|0;b=g+32|0;h[b>>3]=+h[b>>3]*d;b=g+40|0;h[b>>3]=+h[b>>3]*e;b=g+16|0;h[b>>3]=+h[b>>3]*d;b=g+24|0;h[b>>3]=+h[b>>3]*e;b=c[g+12>>2]|0;if((b|0)!=0?(a[b+81>>0]|0)!=0:0){f=b+56|0;h[f>>3]=+h[f>>3]*d;f=b+64|0;h[f>>3]=+h[f>>3]*e;f=1;b=g}else{f=1;b=g}while(1){if((f|0)>(c[b+180>>2]|0))break;en(c[(c[b+184>>2]|0)+(f<<2)>>2]|0,d,e);f=f+1|0;b=c[i>>2]|0}return}function fn(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,l=0,m=0;k=c[b+16>>2]|0;b=c[k+8>>2]|0;j=c[b+4>>2]|0;l=d+8|0;b=c[b>>2]|0;g=0;while(1){if((g|0)>=(j|0))break;i=c[b+4>>2]|0;e=c[b>>2]|0;f=0;while(1){if((f|0)>=(i|0))break;h[e>>3]=+h[e>>3]-+h[d>>3];m=e+8|0;h[m>>3]=+h[m>>3]-+h[l>>3];e=e+16|0;f=f+1|0}if(c[b+8>>2]|0){m=b+16|0;h[m>>3]=+h[m>>3]-+h[d>>3];m=b+24|0;h[m>>3]=+h[m>>3]-+h[l>>3]}if(c[b+12>>2]|0){m=b+32|0;h[m>>3]=+h[m>>3]-+h[d>>3];m=b+40|0;h[m>>3]=+h[m>>3]-+h[l>>3]}b=b+48|0;g=g+1|0}b=c[k+96>>2]|0;if(b|0?a[b+81>>0]|0:0){m=b+56|0;h[m>>3]=+h[m>>3]-+h[d>>3];m=b+64|0;h[m>>3]=+h[m>>3]-+h[l>>3]}b=c[k+108>>2]|0;if(b|0?a[b+81>>0]|0:0){m=b+56|0;h[m>>3]=+h[m>>3]-+h[d>>3];m=b+64|0;h[m>>3]=+h[m>>3]-+h[l>>3]}b=c[k+100>>2]|0;if(b|0?a[b+81>>0]|0:0){m=b+56|0;h[m>>3]=+h[m>>3]-+h[d>>3];m=b+64|0;h[m>>3]=+h[m>>3]-+h[l>>3]}b=c[k+104>>2]|0;if(b|0?a[b+81>>0]|0:0){m=b+56|0;h[m>>3]=+h[m>>3]-+h[d>>3];m=b+64|0;h[m>>3]=+h[m>>3]-+h[l>>3]}return}function gn(b,d){b=b|0;d=d|0;var e=0,f=0.0,g=0.0,i=0,j=0,k=0,m=0;k=l;l=l+16|0;j=k;g=+h[d>>3];i=b+16|0;b=c[i>>2]|0;e=b+32|0;h[e>>3]=+h[e>>3]-g;f=+h[d+8>>3];e=b+40|0;h[e>>3]=+h[e>>3]-f;e=b+16|0;h[e>>3]=+h[e>>3]-g;e=b+24|0;h[e>>3]=+h[e>>3]-f;e=c[b+12>>2]|0;if((e|0)!=0?(a[e+81>>0]|0)!=0:0){m=e+56|0;h[m>>3]=+h[m>>3]-g;e=e+64|0;h[e>>3]=+h[e>>3]-f;e=1}else e=1;while(1){if((e|0)>(c[b+180>>2]|0))break;m=c[(c[b+184>>2]|0)+(e<<2)>>2]|0;c[j>>2]=c[d>>2];c[j+4>>2]=c[d+4>>2];c[j+8>>2]=c[d+8>>2];c[j+12>>2]=c[d+12>>2];gn(m,j);e=e+1|0;b=c[i>>2]|0}l=k;return}function hn(a){a=a|0;var b=0,d=0,e=0,f=0.0,g=0.0,i=0,j=0;i=l;l=l+16|0;d=i;mM(a);e=a+16|0;b=c[e>>2]|0;f=+h[b+16>>3]*.013888888888888888;g=+h[b+24>>3]*.013888888888888888;b=Sy(a)|0;while(1){if(!b)break;j=c[(c[b+16>>2]|0)+132>>2]|0;h[j>>3]=+h[j>>3]-f;j=j+8|0;h[j>>3]=+h[j>>3]-g;b=Ty(a,b)|0}j=(c[e>>2]|0)+16|0;c[d>>2]=c[j>>2];c[d+4>>2]=c[j+4>>2];c[d+8>>2]=c[j+8>>2];c[d+12>>2]=c[j+12>>2];jn(a,d);$m(a,1);l=i;return}function jn(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0.0,j=0.0;g=l;l=l+16|0;f=g;d=a+16|0;a=1;while(1){e=c[d>>2]|0;if((a|0)>(c[e+180>>2]|0))break;e=c[(c[e+184>>2]|0)+(a<<2)>>2]|0;c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];jn(e,f);a=a+1|0}j=+h[b>>3];f=e+32|0;h[f>>3]=+h[f>>3]-j;i=+h[b+8>>3];b=e+40|0;h[b>>3]=+h[b>>3]-i;b=e+16|0;h[b>>3]=+h[b>>3]-j;b=e+24|0;h[b>>3]=+h[b>>3]-i;l=g;return}function kn(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0.0;p=(e|0)>2;n=0;o=0;j=c[f+4>>2]|0;b=c[f>>2]|0;while(1){if((o|0)>=(d|0)){b=0;break}i=c[(c[g+(o<<2)>>2]|0)+16>>2]|0;l=a[i+119>>0]|0;a:do if(!(l<<24>>24)){k=b+8|0;h[b>>3]=+k2();i=j+8|0;h[j>>3]=+k2();if(p){b=2;while(1){if((b|0)==(e|0)){j=n;b=k;break a}q=+k2();h[(c[f+(b<<2)>>2]|0)+(o<<3)>>3]=q;b=b+1|0}}else{j=n;b=k}}else{k=c[i+132>>2]|0;m=b+8|0;h[b>>3]=+h[k>>3];i=j+8|0;h[j>>3]=+h[k+8>>3];b:do if(p){j=2;b=k+16|0;while(1){if((j|0)==(e|0))break b;h[(c[f+(j<<2)>>2]|0)+(o<<3)>>3]=+h[b>>3];j=j+1|0;b=b+8|0}}while(0);j=(l&255)>1?1:n;b=m}while(0);n=j;o=o+1|0;j=i}while(1){if((b|0)>=(e|0))break;Is(d,c[f+(b<<2)>>2]|0);b=b+1|0}return n|0}function ln(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,i=0,j=0,k=0,l=0.0,m=0,n=0,o=0,p=0;d=uH(((O(b+1|0,b)|0)/2|0)<<2)|0;n=wn(b,b,0.0)|0;o=wn(b,b,0.0)|0;a:do if(!(c[a+8>>2]|0)){e=0;while(1){if((e|0)>=(b|0))break a;i=c[a+(e*20|0)>>2]|0;j=a+(e*20|0)+4|0;k=n+(e<<2)|0;f=1;while(1){if((f|0)>=(i|0))break;m=c[(c[j>>2]|0)+(f<<2)>>2]|0;h[(c[n+(m<<2)>>2]|0)+(e<<3)>>3]=-1.0;h[(c[k>>2]|0)+(m<<3)>>3]=-1.0;f=f+1|0}e=e+1|0}}else{e=0;while(1){if((e|0)>=(b|0))break a;i=c[a+(e*20|0)>>2]|0;j=a+(e*20|0)+4|0;k=a+(e*20|0)+8|0;m=n+(e<<2)|0;f=1;while(1){if((f|0)>=(i|0))break;p=c[(c[j>>2]|0)+(f<<2)>>2]|0;l=-1.0/+g[(c[k>>2]|0)+(f<<2)>>2];h[(c[n+(p<<2)>>2]|0)+(e<<3)>>3]=l;h[(c[m>>2]|0)+(p<<3)>>3]=l;f=f+1|0}e=e+1|0}}while(0);b:do if(!(Bq(b,n,o)|0)){D_(d);d=0}else{f=0;j=0;m=b;while(1){if((j|0)>=(b|0))break b;k=o+(j<<2)|0;e=j;i=f;while(1){if((e|0)==(b|0))break;if((j|0)==(e|0))l=0.0;else{p=c[k>>2]|0;l=+h[(c[o+(e<<2)>>2]|0)+(e<<3)>>3]+ +h[p+(j<<3)>>3]+ +h[p+(e<<3)>>3]*-2.0}g[d+(i<<2)>>2]=l;e=e+1|0;i=i+1|0}f=f+m|0;j=j+1|0;m=m+-1|0}}while(0);xn(n);xn(o);return d|0}function mn(a,b){a=a|0;b=b|0;var d=0,e=0,f=0.0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0;r=l;l=l+16|0;q=r;if(c[a+8>>2]|0){d=nn(a,b)|0;f=0.0;e=0;p=0;while(1){if((p|0)>=(b|0))break;e=e+p|0;o=c[a+(p*20|0)>>2]|0;k=a+(p*20|0)+4|0;m=(O(p,b)|0)-e|0;n=a+(p*20|0)+8|0;j=1;while(1){if((j|0)>=(o|0))break;i=c[(c[k>>2]|0)+(j<<2)>>2]|0;if((i|0)>=(p|0)){i=d+(m+i<<2)|0;s=+g[(c[n>>2]|0)+(j<<2)>>2];f=f+ +B(+(+g[i>>2]-s));g[i>>2]=s}j=j+1|0}p=p+1|0}if(0){b=c[15686]|0;h[q>>3]=f;g1(b,89903,q)|0}}else d=0;l=r;return d|0}function nn(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0;m=l;l=l+16|0;h=m;i=uH(((O(b+1|0,b)|0)/2|0)<<2)|0;j=uH(b<<2)|0;zq(h,b);d=0;f=0;k=b;while(1){if((d|0)>=(b|0))break;ir(d,a,b,j);e=d;g=f;while(1){if((e|0)==(b|0))break;c[i+(g<<2)>>2]=c[j+(e<<2)>>2];e=e+1|0;g=g+1|0}d=d+1|0;f=f+k|0;k=k+-1|0}D_(j);Aq(h);l=m;return i|0}function on(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+16|0;i=n;j=uH(((O(b+1|0,b)|0)/2|0)<<2)|0;k=uH(b<<2)|0;zq(i,b);d=0;f=0;m=b;while(1){if((d|0)>=(b|0))break;vq(d,a,b,k,i);e=d;h=f;while(1){if((e|0)==(b|0))break;g[j+(h<<2)>>2]=+(c[k+(e<<2)>>2]|0);e=e+1|0;h=h+1|0}d=d+1|0;f=f+m|0;m=m+-1|0}D_(k);Aq(i);l=n;return j|0}function pn(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,i=0,j=0,k=0,l=0.0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0;r=a+8|0;d=c[r>>2]|0;e=0;f=0;while(1){if((f|0)>=(b|0))break;e=(c[a+(f*20|0)>>2]|0)+e|0;f=f+1|0}f=uH(e<<2)|0;q=uH(b<<2)|0;e=0;while(1){if((e|0)>=(b|0))break;c[q+(e<<2)>>2]=0;e=e+1|0}if(!(c[r>>2]|0)){h=0;while(1){if((h|0)>=(b|0))break;c[a+(h*20|0)+8>>2]=f;_r(a,h,q);i=a+(h*20|0)|0;j=c[i>>2]|0;k=a+(h*20|0)+4|0;l=+(j+-1|0);e=1;while(1){if((e|0)>=(j|0))break;p=c[(c[k>>2]|0)+(e<<2)>>2]|0;s=+((c[a+(p*20|0)>>2]|0)+-1|0)+l;g[f+(e<<2)>>2]=s-+((Zr(a,h,p,q)|0)<<1|0);e=e+1|0}$r(a,h,q);f=f+(c[i>>2]<<2)|0;h=h+1|0}f=on(a,b)|0}else{j=0;while(1){if((j|0)>=(b|0))break;_r(a,j,q);k=a+(j*20|0)|0;m=c[k>>2]|0;n=a+(j*20|0)+4|0;o=m+-2|0;p=a+(j*20|0)+8|0;i=1;while(1){if((i|0)>=(m|0))break;e=c[(c[n>>2]|0)+(i<<2)>>2]|0;h=o+(c[a+(e*20|0)>>2]|0)|0;s=+(h-((Zr(a,j,e,q)|0)<<1)|0);l=+g[(c[p>>2]|0)+(i<<2)>>2];if(l>2]=l;i=i+1|0}$r(a,j,q);c[p>>2]=f;f=f+(c[k>>2]<<2)|0;j=j+1|0}f=nn(a,b)|0}D_(q);D_(c[r>>2]|0);c[r>>2]=0;a:do if(d|0){e=0;while(1){if((e|0)>=(b|0))break a;c[a+(e*20|0)+8>>2]=d;d=d+(c[a+(e*20|0)>>2]<<2)|0;e=e+1|0}}while(0);return f|0}function qn(a,b,e,f,i,j,k,m,n){a=a|0;b=b|0;e=e|0;f=f|0;i=i|0;j=j|0;k=k|0;m=m|0;n=n|0;var o=0,p=0,q=0,r=0.0,s=0,t=0,u=0,v=0.0,w=0,x=0.0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0.0,P=0.0;M=l;l=l+80|0;L=M+56|0;K=M+48|0;A=M+40|0;u=M+32|0;t=M+24|0;s=M+16|0;p=M+8|0;o=M;q=k&4;J=k&3;a:do if((n|0)<0)e=0;else{if(0)EL();k=(m|0)==2;b:do if(k){if(0)E1(91878,24,1,c[15686]|0)|0;e=pn(a,b)|0;w=14}else{switch(m|0){case 1:{e=ln(a,b)|0;if(e|0){I=e;break b}Pw(0,91903,o)|0;Pw(3,91952,p)|0;w=15;break b}case 3:break;default:{w=15;break b}}if(0)E1(92005,21,1,c[15686]|0)|0;e=mn(a,b)|0;w=14}while(0);if((w|0)==14)if(!e)w=15;else I=e;do if((w|0)==15){if(0)E1(92027,26,1,c[15686]|0)|0;if(!(c[a+8>>2]|0)){I=on(a,b)|0;break}else{I=nn(a,b)|0;break}}while(0);if(0){H=c[15686]|0;h[s>>3]=+FL();g1(H,92054,s)|0;E1(92066,25,1,H)|0;EL()}c:do if((b|0)>1&(q|0)!=0)if((rn(a,b,f,j,q,J,k&1)|0)<0){u=0;t=0;e=-1;a=0;s=0;q=0;p=0;o=0;m=0;k=0}else{k=0;while(1){if((k|0)>=(j|0)){y=0;w=35;break c}m=f+(k<<2)|0;r=1.0;e=0;while(1){if((e|0)==(b|0))break;x=+B(+(+h[(c[m>>2]|0)+(e<<3)>>3]));r=x>r?x:r;e=e+1|0}r=1.0/r;e=0;while(1){if((e|0)==(b|0)){e=0;break}H=(c[m>>2]|0)+(e<<3)|0;h[H>>3]=+h[H>>3]*r;e=e+1|0}while(1){if((e|0)==(b|0))break;x=(+k2()+-.5)*1.0e-06;H=(c[m>>2]|0)+(e<<3)|0;h[H>>3]=+h[H>>3]+x;e=e+1|0}Is(b,c[m>>2]|0);k=k+1|0}}else{y=kn(0,b,j,f,i)|0;w=35}while(0);d:do if((w|0)==35){if(0){H=c[15686]|0;h[t>>3]=+FL();g1(H,92092,t)|0}if((b|0)==1|(n|0)==0){e=0;break a}if(0){H=c[15686]|0;h[u>>3]=+FL();g1(H,92054,u)|0;E1(89925,26,1,H)|0;EL()}s=j<<2;H=uH(s)|0;t=b<<2;a=O(t,j)|0;G=uH(a)|0;e=0;while(1){if((e|0)>=(j|0))break;m=G+((O(e,b)|0)<<2)|0;c[H+(e<<2)>>2]=m;o=f+(e<<2)|0;k=0;while(1){if((k|0)>=(b|0))break;g[m+(k<<2)>>2]=+h[(c[o>>2]|0)+(k<<3)>>3];k=k+1|0}e=e+1|0}e:do if(!J){p=b+-1|0;e=0;r=0.0;o=0;while(1){if((o|0)>=(p|0))break e;q=b-o|0;m=e;k=1;while(1){e=m+1|0;if((k|0)>=(q|0))break;m=e;r=+g[I+(e<<2)>>2]+r;k=k+1|0}o=o+1|0}}else r=+(b|0)*.5*+(b+-1|0);while(0);C=(O(b+1|0,b)|0)/2|0;D=(J|0)==2;if(D)ct(C,I);dt(C,I);E=b<<3;m=uH(E)|0;H3(m|0,0,E|0)|0;F=b+-1|0;e=0;o=0;while(1){if((o|0)>=(F|0)){e=b;k=0;o=0;break}p=b-o|0;v=0.0;k=1;while(1){e=e+1|0;if((k|0)>=(p|0))break;x=+g[I+(e<<2)>>2];z=m+(k+o<<3)|0;h[z>>3]=+h[z>>3]-x;v=v+x;k=k+1|0}z=m+(o<<3)|0;h[z>>3]=+h[z>>3]-v;o=o+1|0}while(1){if((k|0)>=(b|0))break;g[I+(o<<2)>>2]=+h[m+(k<<3)>>3];z=e+o|0;e=e+-1|0;k=k+1|0;o=z}z=uH(s)|0;c[z>>2]=uH(a)|0;e=1;while(1){if((e|0)>=(j|0))break;c[z+(e<<2)>>2]=(c[z>>2]|0)+((O(e,b)|0)<<2);e=e+1|0}p=uH(t)|0;o=uH(t)|0;k=uH(C<<2)|0;if(0){w=c[15686]|0;h[A>>3]=+FL();g1(w,92054,A)|0;E1(89952,15,1,w)|0;EL()}w=(y|0)==0;y=c[15686]|0;e=0;q=0;x=1797693134862315708145274.0e284;while(1){if(!(q<<24>>24==0&(e|0)<(n|0)))break;H3(m|0,0,E|0)|0;if(D){et(C,I,k);u=0;a=0}else{u=0;a=0}while(1){if((u|0)>=(F|0)){q=b;s=0;a=0;break}t=b-u+-1|0;at(t,0.0,o);q=0;while(1){if((q|0)>=(j|0))break;A=H+(q<<2)|0;at(t,+g[(c[A>>2]|0)+(u<<2)>>2],p);Xs(t,p,-1.0,(c[A>>2]|0)+(u<<2)+4|0);ct(t,p);Ws(t,p,o,o);q=q+1|0}ft(t,o);q=0;while(1){if((q|0)>=(t|0))break;s=o+(q<<2)|0;v=+g[s>>2];if(v>=3402823466385288598117041.0e14|v<0.0)g[s>>2]=0.0;q=q+1|0}q=a+1|0;a=u+1|0;f:do if(D){v=0.0;s=0;while(1){if((s|0)>=(t|0))break f;A=k+(q<<2)|0;N=+g[A>>2]*+g[o+(s<<2)>>2];g[A>>2]=N;A=m+(a+s<<3)|0;h[A>>3]=+h[A>>3]-N;v=v+N;q=q+1|0;s=s+1|0}}else{v=0.0;s=0;while(1){if((s|0)>=(t|0))break f;N=+g[o+(s<<2)>>2];g[k+(q<<2)>>2]=N;A=m+(a+s<<3)|0;h[A>>3]=+h[A>>3]-N;v=v+N;q=q+1|0;s=s+1|0}}while(0);A=m+(u<<3)|0;h[A>>3]=+h[A>>3]-v;u=a;a=q}while(1){if((s|0)>=(b|0)){q=0;break}g[k+(a<<2)>>2]=+h[m+(s<<3)>>3];A=q+a|0;q=q+-1|0;s=s+1|0;a=A}while(1){if((q|0)>=(j|0)){v=0.0;q=0;break}Us(k,b,c[H+(q<<2)>>2]|0,c[z+(q<<2)>>2]|0);q=q+1|0}while(1){if((q|0)>=(j|0))break;v=+_s(b,c[H+(q<<2)>>2]|0,c[z+(q<<2)>>2]|0)+v;q=q+1|0}v=v*2.0+r;q=0;while(1){if((q|0)>=(j|0))break;A=H+(q<<2)|0;Us(I,b,c[A>>2]|0,p);v=v-+_s(b,c[A>>2]|0,p);q=q+1|0}P=x-v;N=+h[22909];q=(v=0.0?P:-P)/x=(j|0))break;t=H+(a<<2)|0;s=c[t>>2]|0;g:do if(w){if((Fq(I,s,c[z+(a<<2)>>2]|0,b,.001,b)|0)<0){u=z;t=I;e=-1;a=G;s=H;q=z;break d}}else{Zs(b,s,p);if((Fq(I,p,c[z+(a<<2)>>2]|0,b,.001,b)|0)<0){u=z;t=I;e=-1;a=G;s=H;q=z;break d}else s=0;while(1){if((s|0)>=(b|0))break g;if((d[(c[(c[i+(s<<2)>>2]|0)+16>>2]|0)+119>>0]|0)<=1)c[(c[t>>2]|0)+(s<<2)>>2]=c[p+(s<<2)>>2];s=s+1|0}}while(0);a=a+1|0}if(((e|0)%5|0|0)==0&0!=0?(h[K>>3]=v,g1(y,90277,K)|0,((e+5|0)%50|0|0)==0):0)n3(10,y)|0;e=e+1|0;x=v}if(!0)q=0;else{N=+sn(H,I,j,b,J);P=+FL();h[L>>3]=N;c[L+8>>2]=e;h[L+16>>3]=P;g1(y,89968,L)|0;q=0}while(1){if((q|0)>=(j|0)){u=z;t=I;a=G;s=H;q=z;break d}a=H+(q<<2)|0;t=f+(q<<2)|0;s=0;while(1){if((s|0)>=(b|0))break;h[(c[t>>2]|0)+(s<<3)>>3]=+g[(c[a>>2]|0)+(s<<2)>>2];s=s+1|0}q=q+1|0}}while(0);D_(a);D_(s);D_(t);if(u|0){D_(c[u>>2]|0);D_(q)}D_(p);D_(o);D_(m);D_(k)}while(0);l=M;return e|0}function rn(b,d,e,f,i,j,k){b=b|0;d=d|0;e=e|0;f=f|0;i=i|0;j=j|0;k=k|0;var m=0,n=0,o=0,p=0.0,q=0,r=0,s=0.0,t=0,u=0.0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,P=0,Q=0,R=0;R=l;l=l+32|0;o=R+24|0;Q=R+8|0;H=R+4|0;N=R;M=(d|0)<50?d:50;P=vH(M<<2)|0;G=d<<3;n=vH(O(G,M)|0)|0;m=0;while(1){if((m|0)>=(M|0))break;c[P+(m<<2)>>2]=n+((O(m,d)|0)<<3);m=m+1|0}E=M<<1;E=(E|0)>50?E:50;E=(E|0)>(d|0)?d:E;c[o>>2]=0;sr(b,d,E,o,k);tr(c[o>>2]|0,d,E);mt(c[o>>2]|0,E,d,P,M);D_(c[c[o>>2]>>2]|0);D_(c[o>>2]|0);E=d<<2;L=vH(E)|0;m=0;while(1){if((m|0)>=(d|0))break;c[L+(m<<2)>>2]=-1;m=m+1|0}zq(Q,d);J=c[b+8>>2]|0;I=(k|0)!=0;if(I)es(b,d);C=vH(E)|0;K=vH(160)|0;n=vH(d*160|0)|0;D=vH(160)|0;m=0;while(1){if((m|0)==40)break;c[D+(m<<2)>>2]=n+((O(m,d)|0)<<2);m=m+1|0}m=(g2()|0)%(d|0)|0;c[L+(m<<2)>>2]=0;c[K>>2]=m;n=c[D>>2]|0;if(I){cr(m,b,d,n);n=0;o=0}else{vq(m,b,d,n,Q);n=0;o=0}while(1){if((o|0)>=(d|0)){r=1;break}F=c[(c[D>>2]|0)+(o<<2)>>2]|0;c[C+(o<<2)>>2]=F;A=(F|0)>(n|0);m=A?o:m;n=A?F:n;o=o+1|0}while(1){if((r|0)==40){m=0;break}c[L+(m<<2)>>2]=r;c[K+(r<<2)>>2]=m;t=D+(r<<2)|0;n=c[t>>2]|0;if(I){cr(m,b,d,n);q=0;n=0}else{vq(m,b,d,n,Q);q=0;n=0}while(1){if((q|0)>=(d|0))break;o=C+(q<<2)|0;F=c[o>>2]|0;k=c[(c[t>>2]|0)+(q<<2)>>2]|0;k=(F|0)<(k|0)?F:k;c[o>>2]=k;if((k|0)<=(n|0)){if((k|0)==(n|0)?((g2()|0)%(q+1|0)|0|0)==0:0){n=c[o>>2]|0;m=q}}else{n=k;m=q}q=q+1|0}r=r+1|0}while(1){if((m|0)>=(d|0))break;c[C+(m<<2)>>2]=-1;m=m+1|0}w=vH(E)|0;F=vH(d<<4)|0;x=d+-1|0;y=x<<2;A=0;o=0;k=0;n=0;z=0;while(1){if((z|0)>=(d|0))break;m=L+(z<<2)|0;a:do if((c[m>>2]|0)>-1){t=F+(z<<4)+4|0;c[t>>2]=vH(y)|0;v=vH(y)|0;c[F+(z<<4)+8>>2]=v;c[F+(z<<4)>>2]=x;a[F+(z<<4)+12>>0]=1;r=D+(c[m>>2]<<2)|0;m=0;while(1){if((m|0)==(z|0)){q=z;break}c[(c[t>>2]|0)+(m<<2)>>2]=m;c[v+(m<<2)>>2]=c[(c[r>>2]|0)+(m<<2)>>2];m=m+1|0}while(1){m=q+1|0;if((q|0)==(x|0)){m=x;break a}c[(c[t>>2]|0)+(q<<2)>>2]=m;c[v+(q<<2)>>2]=c[(c[r>>2]|0)+(m<<2)>>2];q=m}}else{if((n|0)<40){k=vH(E)|0;o=vH(E)|0;n=d;m=1}else m=0;a[F+(z<<4)+12>>0]=m;c[F+(z<<4)+4>>2]=k;c[F+(z<<4)+8>>2]=o;c[F+(z<<4)>>2]=40;m=0;while(1){if((m|0)==40)break;c[k+(m<<2)>>2]=c[K+(m<<2)>>2];c[o+(m<<2)>>2]=c[(c[D+(m<<2)>>2]|0)+(z<<2)>>2];m=m+1|0}o=o+160|0;k=k+160|0;n=n+-40|0;m=40}while(0);A=m+A|0;z=z+1|0}D_(C);D_(w);if(D|0){D_(c[D>>2]|0);D_(D)}D=vH(d*20|0)|0;q=A+d<<2;r=vH(q)|0;v=(j|0)==2;q=vH(q)|0;t=0;while(1){if((t|0)>=(d|0))break;c[D+(t*20|0)+4>>2]=r;c[D+(t*20|0)+8>>2]=q;m=(c[F+(t<<4)>>2]|0)+1|0;w=D+(t*20|0)|0;c[w>>2]=m;o=(c[F+(t<<4)+8>>2]|0)+-4|0;k=F+(t<<4)+4|0;b:do if(v){p=0.0;n=1;while(1){if((n|0)>=(m|0))break b;c[r+(n<<2)>>2]=c[(c[k>>2]|0)+(n+-1<<2)>>2];u=+(c[o+(n<<2)>>2]|0);u=-1.0/(u*u);g[q+(n<<2)>>2]=u;p=p-u;n=n+1|0;m=c[w>>2]|0}}else{p=0.0;n=1;while(1){if((n|0)>=(m|0))break b;c[r+(n<<2)>>2]=c[(c[k>>2]|0)+(n+-1<<2)>>2];u=-1.0/+(c[o+(n<<2)>>2]|0);g[q+(n<<2)>>2]=u;p=p-u;n=n+1|0;m=c[w>>2]|0}}while(0);c[r>>2]=t;g[q>>2]=p;E=c[w>>2]|0;q=q+(E<<2)|0;r=r+(E<<2)|0;t=t+1|0}C=vH(f<<2)|0;c[C>>2]=vH(O(f<<3,M)|0)|0;m=1;while(1){if((m|0)>=(f|0))break;c[C+(m<<2)>>2]=(c[C>>2]|0)+((O(m,M)|0)<<3);m=m+1|0}c:do if(i){m=0;while(1){if((m|0)>=(f|0))break;o=C+(m<<2)|0;n=0;while(1){if((n|0)>=(M|0))break;h[(c[o>>2]|0)+(n<<3)>>3]=0.0;n=n+1|0}m=m+1|0}if((f|0)!=2){m=0;while(1){if((m|0)>=(f|0)){m=0;break c}h[(c[C+(m<<2)>>2]|0)+(m<<3)>>3]=1.0;m=m+1|0}}h[c[C>>2]>>3]=1.0;m=C+4|0;if(!((nt(P,M,d,c[m>>2]|0)|0)<<24>>24)){n=c[m>>2]|0;m=0;while(1){if((m|0)>=(M|0))break;h[n+(m<<3)>>3]=0.0;m=m+1|0}h[n+8>>3]=1.0;m=0}else m=0}else{n=0;while(1){if((n|0)>=(f|0)){m=0;break c}o=C+(n<<2)|0;m=0;while(1){if((m|0)>=(M|0))break;u=+(g2()|0)*4.656612875245797e-10;h[(c[o>>2]|0)+(m<<3)>>3]=u;m=m+1|0}n=n+1|0}}while(0);while(1){if((m|0)>=(f|0))break;Ss(P,d,M,c[C+(m<<2)>>2]|0,c[e+(m<<2)>>2]|0);m=m+1|0}c[H>>2]=0;c[N>>2]=0;Hs(D,P,d,M,H);Fs(P,c[H>>2]|0,M,d,M,N);D_(c[c[H>>2]>>2]|0);D_(c[H>>2]|0);z=vH(G)|0;A=vH(M<<3)|0;m=0;n=0;p=+tn(e,F,f,d,j);d:while(1){if((n|0)<50&m<<24>>24==0)x=0;else break;while(1){if((x|0)>=(f|0))break;y=e+(x<<2)|0;o=0;while(1){if((o|0)>=(d|0))break;q=z+(o<<3)|0;h[q>>3]=0.0;r=(c[F+(o<<4)+8>>2]|0)+-4|0;t=c[D+(o*20|0)+4>>2]|0;v=c[D+(o*20|0)+8>>2]|0;w=D+(o*20|0)|0;s=0.0;k=1;while(1){if((k|0)>=(c[w>>2]|0))break;m=c[t+(k<<2)>>2]|0;u=+gs(e,f,o,m);if(u>1.0e-30){u=-(+g[v+(k<<2)>>2]*+(c[r+(k<<2)>>2]|0))/u;h[q>>3]=u*+h[(c[y>>2]|0)+(m<<3)>>3]+ +h[q>>3];s=s-u}k=k+1|0}h[q>>3]=+h[q>>3]+ +h[(c[y>>2]|0)+(o<<3)>>3]*s;o=o+1|0}Es(P,M,d,z,A);m=C+(x<<2)|0;if(Eq(c[N>>2]|0,c[m>>2]|0,A,M,.001,M,0)|0){n=-1;break d}Ss(P,d,M,c[m>>2]|0,c[y>>2]|0);x=x+1|0}if(!(n&1)){u=+tn(e,F,f,d,j);p=+B(+(u-p))/(u+1.0e-10);m=p<+h[22909]&1;p=u}else m=0;n=n+1|0}D_(A);D_(z);if(I){fs(b,d,J);m=0}else m=0;while(1){if((m|0)>=(d|0))break;if(a[F+(m<<4)+12>>0]|0){D_(c[F+(m<<4)+4>>2]|0);D_(c[F+(m<<4)+8>>2]|0)}m=m+1|0}D_(F);D_(c[D+4>>2]|0);D_(c[D+8>>2]|0);D_(D);D_(L);D_(K);D_(c[C>>2]|0);D_(C);m=c[N>>2]|0;if(m|0){D_(c[m>>2]|0);D_(c[N>>2]|0)}D_(c[P>>2]|0);D_(P);Aq(Q);l=R;return n|0}function sn(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var h=0.0,i=0.0,j=0,k=0,l=0.0,m=0,n=0,o=0,p=0,q=0,r=0;q=e+-1|0;o=(f|0)==2;h=0.0;f=0;m=0;while(1){if((m|0)>=(q|0))break;p=e-m|0;n=1;while(1){f=f+1|0;if((n|0)>=(p|0))break;k=n+m|0;i=0.0;j=0;while(1){if((j|0)>=(d|0))break;r=c[a+(j<<2)>>2]|0;l=+g[r+(m<<2)>>2]-+g[r+(k<<2)>>2];i=i+l*l;j=j+1|0}i=+C(+i);l=+g[b+(f<<2)>>2];if(o){i=1.0/+C(+l)-i;i=i*i}else{i=1.0/l-i;i=i*i}n=n+1|0;h=i*l+h}m=m+1|0}return +h}function tn(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0.0,i=0.0,j=0,k=0,l=0,m=0,n=0,o=0,p=0.0,q=0;a:do if((f|0)==2){g=0.0;l=0;while(1){if((l|0)>=(e|0))break a;n=c[b+(l<<4)>>2]|0;o=b+(l<<4)+4|0;m=b+(l<<4)+8|0;k=0;while(1){if((k|0)>=(n|0))break;j=c[(c[o>>2]|0)+(k<<2)>>2]|0;if((j|0)>(l|0)){i=0.0;f=0;while(1){if((f|0)>=(d|0))break;q=c[a+(f<<2)>>2]|0;p=+h[q+(l<<3)>>3]-+h[q+(j<<3)>>3];i=p*p+i;f=f+1|0}i=+C(+i);p=+(c[(c[m>>2]|0)+(k<<2)>>2]|0);i=p-i;g=i*i/(p*p)+g}k=k+1|0}l=l+1|0}}else{l=0;g=0.0;while(1){if((l|0)>=(e|0))break a;m=c[b+(l<<4)>>2]|0;n=b+(l<<4)+4|0;o=b+(l<<4)+8|0;k=0;while(1){if((k|0)>=(m|0))break;j=c[(c[n>>2]|0)+(k<<2)>>2]|0;if((j|0)>(l|0)){i=0.0;f=0;while(1){if((f|0)>=(d|0))break;q=c[a+(f<<2)>>2]|0;p=+h[q+(l<<3)>>3]-+h[q+(j<<3)>>3];i=p*p+i;f=f+1|0}i=+C(+i);p=+(c[(c[o>>2]|0)+(k<<2)>>2]|0);i=p-i;g=i*i/p+g}k=k+1|0}l=l+1|0}}while(0);return +g}function un(a){a=+a;return +(+C(+a)*a)}function vn(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0,g=0,i=0.0;g=c[46366]|0;e=0.0;f=0;while(1){if((f|0)>=(g|0))break;i=+h[a+(f<<3)>>3]-+h[b+(f<<3)>>3];h[d+(f<<3)>>3]=i;e=i*i+e;f=f+1|0}return +(+C(+e))}function wn(a,b,d){a=a|0;b=b|0;d=+d;var e=0,f=0,g=0,i=0;i=uH(a<<2)|0;f=0;g=uH(O(a<<3,b)|0)|0;while(1){if((f|0)>=(a|0))break;c[i+(f<<2)>>2]=g;e=0;while(1){if((e|0)>=(b|0))break;h[g+(e<<3)>>3]=d;e=e+1|0}f=f+1|0;g=g+(b<<3)|0}return i|0}function xn(a){a=a|0;if(a|0){D_(c[a>>2]|0);D_(a)}return}function yn(b,d){b=b|0;d=d|0;var e=0.0,f=0.0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;o=l;l=l+16|0;n=ay(b)|0;m=by(b)|0;k=nx(b,2,90566,0)|0;a:do if(!d){h[22909]=+(n|0)*.0001;aH(b,105860,183272);g=xx(c[b+60>>2]|0,90006)|0;if(!g)e=.99;else e=+b2(g);h[22911]=e;g=uH((n<<2)+4|0)|0;j=b+16|0;c[(c[j>>2]|0)+152>>2]=g;g=0;e=0.0;i=Sy(b)|0;while(1){if(!i)break a;c[(c[(c[j>>2]|0)+152>>2]|0)+(g<<2)>>2]=i;p=c[i+16>>2]|0;c[p+120>>2]=g;c[p+124>>2]=-1;f=+Bn(b,i,k)+e;g=g+1|0;e=f;i=Ty(b,i)|0}}else{h[22909]=.0001;aH(b,105860,183272);g=0;e=0.0;i=Sy(b)|0;while(1){if(!i)break a;c[(c[i+16>>2]|0)+120>>2]=g;f=+Bn(b,i,k)+e;g=g+1|0;e=f;i=Ty(b,i)|0}}while(0);g=xx(b,90014)|0;if((g|0)!=0?(a[g>>0]|0)!=0:0){e=+h[22909];f=+b2(g);if(!(e>f))e=f}else e=e/+(((m|0)>1?m:1)|0)*+C(+(+(n|0)))+1.0;h[22910]=e;if(!(c[46363]|d)){d=wn(n,n,e)|0;p=b+16|0;c[(c[p>>2]|0)+160>>2]=d;d=wn(n,n,1.0)|0;c[(c[p>>2]|0)+164>>2]=d;d=wn(n,c[46366]|0,1.0)|0;c[(c[p>>2]|0)+168>>2]=d;d=Cn(n,n,c[46366]|0)|0;c[(c[p>>2]|0)+172>>2]=d}l=o;return n|0}function zn(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;f=0;e=0;j=Jx(a,b)|0;a:while(1){if(!j)break;h=c[j>>2]&3;g=c[((h|0)==2?j:j+-48|0)+40>>2]|0;h=c[((h|0)==3?j:j+48|0)+40>>2]|0;do if((g|0)!=(h|0)){i=(h|0)==(b|0);if((e|0)!=1){f=i?g:h;c[d>>2]=f;e=e+1|0;break}if(!((g|0)==(f|0)&i)?!((g|0)==(b|0)&(h|0)==(f|0)):0){e=2;break a}else e=1}while(0);j=Kx(a,j,b)|0}return e|0}function An(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=l;l=l+16|0;f=h;g=a+60|0;a:while(1){b:while(1){if(!b)break a;switch(zn(a,b,f)|0){case 0:{e=5;break b}case 1:{e=8;break b}default:b=0}}if((e|0)==5){if((d|0)==(b|0))d=Ty(a,d)|0;dz(c[g>>2]|0,b)|0;b=0;continue}else if((e|0)==8){if((d|0)==(b|0))d=Ty(a,d)|0;dz(c[g>>2]|0,b)|0;b=c[f>>2]|0;continue}}l=h;return d|0}function Bn(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0.0,g=0,i=0,j=0,k=0;k=l;l=l+32|0;i=k+8|0;g=k;b=Ex(a,b)|0;e=0.0;while(1){if(!b)break;switch(Dn(b,d,g)|0){case 0:{f=+h[g>>3];break}case 2:{c[i>>2]=ry(a)|0;h[i+8>>3]=1.0;Pw(3,90026,i)|0;j=6;break}default:j=6}if((j|0)==6){j=0;h[g>>3]=1.0;f=1.0}h[(c[b+16>>2]|0)+136>>3]=f;b=Gx(a,b)|0;e=f+e}l=k;return +e}function Cn(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,l=0;j=uH((a<<2)+4|0)|0;k=(b<<2)+4|0;l=d<<3;g=0;while(1){if((g|0)>=(a|0))break;i=j+(g<<2)|0;c[i>>2]=uH(k)|0;f=0;while(1){if((f|0)>=(b|0))break;e=uH(l)|0;c[(c[i>>2]|0)+(f<<2)>>2]=e;e=0;while(1){if((e|0)>=(d|0))break;h[(c[(c[i>>2]|0)+(f<<2)>>2]|0)+(e<<3)>>3]=0.0;e=e+1|0}f=f+1|0}c[(c[i>>2]|0)+(f<<2)>>2]=0;g=g+1|0}c[j+(g<<2)>>2]=0;return j|0}function Dn(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0.0,i=0,j=0,k=0;k=l;l=l+16|0;j=k+8|0;i=k;do if((d|0)!=0?(f=yx(b,d)|0,(a[f>>0]|0)!=0):0){c[i>>2]=e;if(((N1(f,98183,i)|0)>=1?(g=+h[e>>3],!(g<0.0)):0)?g!=0.0|(c[46363]|0)!=0:0){b=0;break}c[j>>2]=f;Pw(0,90053,j)|0;b=2}else b=1;while(0);l=k;return b|0}function En(a){a=a|0;return yn(a,0)|0}function Fn(a){a=a|0;a=a+16|0;D_(c[(c[a>>2]|0)+152>>2]|0);if(!(c[46363]|0)){xn(c[(c[a>>2]|0)+160>>2]|0);xn(c[(c[a>>2]|0)+164>>2]|0);xn(c[(c[a>>2]|0)+168>>2]|0);Gn(c[(c[a>>2]|0)+172>>2]|0);c[(c[a>>2]|0)+172>>2]=0}return}function Gn(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;if(a|0){f=0;while(1){g=a+(f<<2)|0;b=c[g>>2]|0;if(!b)break;else e=0;while(1){d=c[b+(e<<2)>>2]|0;if(!d)break;D_(d);e=e+1|0;b=c[g>>2]|0}D_(b);f=f+1|0}D_(a)}return}function Hn(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0.0;e=+(b|0);b=a+16|0;while(1){if((d|0)>=(c[46366]|0))break;f=+k2()*e;h[(c[(c[b>>2]|0)+132>>2]|0)+(d<<3)>>3]=f;d=d+1|0}return}function In(a,b){a=a|0;b=b|0;Hn(a,b,2);return}function Jn(a,b){a=a|0;b=b|0;var d=0,e=0.0,f=0.0;e=+(b|0);f=+k2()*e;d=a+16|0;h[c[(c[d>>2]|0)+132>>2]>>3]=f;e=+k2()*e;h[(c[(c[d>>2]|0)+132>>2]|0)+8>>3]=e;if((c[46366]|0)>2)In(a,b);return}function Kn(b,d){b=b|0;d=d|0;var e=0,f=0;f=l;l=l+16|0;e=f;if(0)E1(90071,26,1,c[15686]|0)|0;d=pm(b,d,2)|0;a:do if((d|0)!=1){if(!(c[46027]|d)){Pw(0,90098,e)|0;c[46027]=1}e=b+16|0;d=0;while(1){b=c[(c[(c[e>>2]|0)+152>>2]|0)+(d<<2)>>2]|0;if(!b)break a;if(!(a[(c[b+16>>2]|0)+119>>0]|0))Jn(b,1);d=d+1|0}}while(0);l=f;return}function Ln(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0.0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0.0;q=l;l=l+96|0;p=q+80|0;n=q;if(0){E1(90147,25,1,c[15686]|0)|0;EL()}o=a+16|0;f=c[o>>2]|0;k=c[f+164>>2]|0;f=c[f+160>>2]|0;m=0;while(1){if((m|0)>=(b|0))break;i=f+(m<<2)|0;j=k+(m<<2)|0;e=0;while(1){if((e|0)==(m|0))break;g=+h[(c[i>>2]|0)+(e<<3)>>3];g=1.0/(g*g);d=c[(c[o>>2]|0)+152>>2]|0;d=Rx(a,c[d+(m<<2)>>2]|0,c[d+(e<<2)>>2]|0,0,0)|0;if(d)g=+h[(c[d+16>>2]|0)+128>>3]*g;h[(c[k+(e<<2)>>2]|0)+(m<<3)>>3]=g;h[(c[j>>2]|0)+(e<<3)>>3]=g;e=e+1|0}m=m+1|0}a=c[46366]|0;e=0;while(1){if((e|0)<(b|0))d=0;else break;while(1){if((d|0)>=(a|0))break;h[(c[(c[(c[o>>2]|0)+168>>2]|0)+(e<<2)>>2]|0)+(d<<3)>>3]=0.0;d=d+1|0}e=e+1|0}i=0;while(1){d=c[(c[(c[o>>2]|0)+152>>2]|0)+(i<<2)>>2]|0;if(!d)break;a=d+16|0;d=0;while(1){if((d|0)>=(b|0))break;a:do if((i|0)!=(d|0)){g=+vn(c[(c[a>>2]|0)+132>>2]|0,c[(c[(c[(c[(c[o>>2]|0)+152>>2]|0)+(d<<2)>>2]|0)+16>>2]|0)+132>>2]|0,n);f=c[46366]|0;g=1.0/g;e=0;while(1){if((e|0)>=(f|0))break a;m=c[o>>2]|0;r=+h[n+(e<<3)>>3];r=(r-+h[(c[(c[m+160>>2]|0)+(i<<2)>>2]|0)+(d<<3)>>3]*r*g)*+h[(c[(c[m+164>>2]|0)+(i<<2)>>2]|0)+(d<<3)>>3];h[(c[(c[(c[m+172>>2]|0)+(i<<2)>>2]|0)+(d<<2)>>2]|0)+(e<<3)>>3]=r;m=(c[(c[m+168>>2]|0)+(i<<2)>>2]|0)+(e<<3)|0;h[m>>3]=+h[m>>3]+r;e=e+1|0}}while(0);d=d+1|0}i=i+1|0}if(0){o=c[15686]|0;h[p>>3]=+FL();g1(o,90173,p)|0}l=q;return}function Mn(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0.0,k=0;i=l;l=l+32|0;g=i+24|0;f=i+8|0;e=i;j=+h[22909];h[22831]=j*j;while(1){d=Nn(a,b)|0;if(!d)break;On(a,b,d)}if(!0)b=a+16|0;else{d=c[15686]|0;h[e>>3]=+Pn(a,b);g1(d,90183,e)|0;b=a+16|0;k=c[(c[b>>2]|0)+156>>2]|0;e=(k|0)==(c[46365]|0)?90197:191979;j=+FL();c[f>>2]=k;c[f+4>>2]=e;h[f+8>>3]=j;g1(d,90199,f)|0}b=c[(c[b>>2]|0)+156>>2]|0;if((b|0)==(c[46365]|0)){k=ry(a)|0;c[g>>2]=b;c[g+4>>2]=k;Pw(0,90226,g)|0}l=i;return}function Nn(a,b){a=a|0;b=b|0;var e=0.0,f=0,g=0,i=0.0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0;r=l;l=l+16|0;q=r;o=(c[46029]|0)+1|0;c[46029]=o;a=c[a+16>>2]|0;if((c[a+156>>2]|0)<(c[46365]|0)){m=c[46366]|0;n=a+152|0;k=a+168|0;a=0;e=0.0;j=0;while(1){if((j|0)>=(b|0))break;g=c[(c[n>>2]|0)+(j<<2)>>2]|0;if((d[(c[g+16>>2]|0)+119>>0]|0)<=1){i=0.0;f=0;while(1){if((f|0)>=(m|0))break;s=+h[(c[(c[k>>2]|0)+(j<<2)>>2]|0)+(f<<3)>>3];i=s*s+i;f=f+1|0}if(i>e){a=g;e=i}}j=j+1|0}if(!(e<+h[22831])){if(0!=0&((o|0)%100|0|0)==0?(p=c[15686]|0,h[q>>3]=+C(+e),g1(p,90277,q)|0,((c[46029]|0)%1e3|0|0)==0):0)n3(10,p)|0}else a=0}else a=0;l=r;return a|0}function On(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0;o=l;l=l+16|0;n=o;k=d+16|0;m=c[(c[k>>2]|0)+120>>2]|0;f=c[46028]|0;if(!f){g=c[46366]|0;g=vH(O(g<<3,g)|0)|0}else{g=c[46366]|0;g=xH(f,O(g<<3,g)|0)|0}c[46028]=g;Qn(a,b,m,g);i=c[46366]|0;j=a+16|0;f=0;while(1){if((f|0)>=(i|0))break;h[182656+(f<<3)>>3]=-+h[(c[(c[(c[j>>2]|0)+168>>2]|0)+(m<<2)>>2]|0)+(f<<3)>>3];f=f+1|0}Xt(g,182736,182656,i);f=0;while(1){if((f|0)>=(c[46366]|0))break;e=+h[22911];e=(1.0-e)*2.0*+k2()+e;i=182736+(f<<3)|0;e=e*+h[i>>3];h[i>>3]=e;i=(c[(c[k>>2]|0)+132>>2]|0)+(f<<3)|0;h[i>>3]=+h[i>>3]+e;f=f+1|0}k=(c[j>>2]|0)+156|0;c[k>>2]=(c[k>>2]|0)+1;Rn(a,b,m);if(cM()|0){g=c[46366]|0;e=0.0;f=0;while(1){if((f|0)>=(g|0))break;e=+B(+(+h[182736+(f<<3)>>3]))+e;f=f+1|0}e=+C(+e);m=c[15686]|0;c[n>>2]=ry(d)|0;h[n+8>>3]=e;g1(m,90268,n)|0}l=o;return}function Pn(a,b){a=a|0;b=b|0;var d=0.0,e=0.0,f=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0.0;q=b+-1|0;n=a+16|0;o=c[46366]|0;g=0;d=0.0;a:while(1){if((g|0)>=(q|0))break;m=c[n>>2]|0;p=c[m+152>>2]|0;j=g+1|0;k=(c[p+(g<<2)>>2]|0)+16|0;l=m+164|0;m=m+160|0;i=j;while(1){if((i|0)>=(b|0)){g=j;continue a}f=(c[p+(i<<2)>>2]|0)+16|0;a=0;e=0.0;while(1){if((a|0)>=(o|0))break;r=+h[(c[(c[k>>2]|0)+132>>2]|0)+(a<<3)>>3]-+h[(c[(c[f>>2]|0)+132>>2]|0)+(a<<3)>>3];a=a+1|0;e=r*r+e}r=+h[(c[(c[m>>2]|0)+(g<<2)>>2]|0)+(i<<3)>>3];r=((+C(+e)*-2.0+r)*r+e)*+h[(c[(c[l>>2]|0)+(g<<2)>>2]|0)+(i<<3)>>3]+d;i=i+1|0;d=r}}return +d}function Qn(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,m=0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0,t=0,u=0,v=0,w=0,x=0;x=l;l=l+80|0;w=x;v=c[a+16>>2]|0;k=c[v+164>>2]|0;m=c[v+160>>2]|0;v=c[v+152>>2]|0;j=c[v+(d<<2)>>2]|0;g=c[46366]|0;a=0;while(1){if((a|0)>=(g|0))break;i=O(g,a)|0;f=0;while(1){if((f|0)==(g|0))break;h[e+(i+f<<3)>>3]=0.0;f=f+1|0}a=a+1|0}u=c[46366]|0;t=j+16|0;s=k+(d<<2)|0;k=m+(d<<2)|0;j=0;while(1){if((j|0)>=(b|0))break;a:do if((j|0)!=(d|0)){f=(c[v+(j<<2)>>2]|0)+16|0;r=0.0;a=0;while(1){if((a|0)>=(u|0))break;q=+h[(c[(c[t>>2]|0)+132>>2]|0)+(a<<3)>>3]-+h[(c[(c[f>>2]|0)+132>>2]|0)+(a<<3)>>3];h[w+(a<<3)>>3]=q;r=q*q+r;a=a+1|0}n=1.0/+un(r);i=0;while(1){if((i|0)>=(u|0))break a;f=(c[s>>2]|0)+(j<<3)|0;g=(c[k>>2]|0)+(j<<3)|0;o=+h[w+(i<<3)>>3];a=0;while(1){p=+h[f>>3];q=+h[g>>3];if((a|0)==(i|0))break;m=e+((O(u,a)|0)+i<<3)|0;h[m>>3]=+h[m>>3]+p*n*q*o*+h[w+(a<<3)>>3];a=a+1|0}m=e+((O(u,i)|0)+i<<3)|0;h[m>>3]=(1.0-q*n*(r-o*o))*p+ +h[m>>3];i=i+1|0}}while(0);j=j+1|0}f=c[46366]|0;i=1;while(1){if((i|0)>=(f|0))break;g=O(f,i)|0;a=0;while(1){if((a|0)==(i|0))break;h[e+(g+a<<3)>>3]=+h[e+((O(f,a)|0)+i<<3)>>3];a=a+1|0}i=i+1|0}l=x;return}function Rn(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,i=0.0,j=0,k=0,m=0,n=0,o=0.0,p=0.0,q=0,r=0,s=0;m=l;l=l+80|0;k=m;j=a+16|0;f=c[j>>2]|0;g=c[(c[f+152>>2]|0)+(d<<2)>>2]|0;e=c[46366]|0;f=f+168|0;a=0;while(1){if((a|0)>=(e|0))break;h[(c[(c[f>>2]|0)+(d<<2)>>2]|0)+(a<<3)>>3]=0.0;a=a+1|0}f=g+16|0;a=0;while(1){if((a|0)>=(b|0))break;a:do if((a|0)!=(d|0)){i=+vn(c[(c[f>>2]|0)+132>>2]|0,c[(c[(c[(c[(c[j>>2]|0)+152>>2]|0)+(a<<2)>>2]|0)+16>>2]|0)+132>>2]|0,k);g=c[46366]|0;i=1.0/i;e=0;while(1){if((e|0)>=(g|0))break a;n=c[j>>2]|0;q=c[n+172>>2]|0;r=(c[(c[q+(d<<2)>>2]|0)+(a<<2)>>2]|0)+(e<<3)|0;o=+h[k+(e<<3)>>3];o=(o-+h[(c[(c[n+160>>2]|0)+(d<<2)>>2]|0)+(a<<3)>>3]*o*i)*+h[(c[(c[n+164>>2]|0)+(d<<2)>>2]|0)+(a<<3)>>3];h[r>>3]=o;n=c[n+168>>2]|0;s=(c[n+(d<<2)>>2]|0)+(e<<3)|0;h[s>>3]=+h[s>>3]+o;q=(c[(c[q+(a<<2)>>2]|0)+(d<<2)>>2]|0)+(e<<3)|0;o=+h[q>>3];p=-+h[r>>3];h[q>>3]=p;n=(c[n+(a<<2)>>2]|0)+(e<<3)|0;h[n>>3]=p-o+ +h[n>>3];e=e+1|0}}while(0);a=a+1|0}l=m;return}function Sn(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,i=0,j=0;d=a+16|0;g=c[46030]|0;b=c[(c[d>>2]|0)+124>>2]|0;while(1){if((b|0)<=0)break;i=(b+-1|0)/2|0;j=g+(i<<2)|0;e=c[j>>2]|0;f=e+16|0;if(+h[(c[f>>2]|0)+136>>3]<=+h[(c[d>>2]|0)+136>>3])break;c[j>>2]=a;c[(c[d>>2]|0)+124>>2]=i;c[g+(b<<2)>>2]=e;c[(c[f>>2]|0)+124>>2]=b;b=i}return}function Tn(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,i=0,j=0,k=0,l=0;i=a+16|0;j=c[46031]|0;k=c[46030]|0;g=c[(c[i>>2]|0)+124>>2]|0;while(1){e=g<<1|1;if((e|0)>=(j|0))break;d=e+1|0;if((d|0)<(j|0)){f=c[k+(d<<2)>>2]|0;b=c[k+(e<<2)>>2]|0;if(+h[(c[f+16>>2]|0)+136>>3]<+h[(c[b+16>>2]|0)+136>>3]){e=d;b=f}else l=6}else{b=c[k+(e<<2)>>2]|0;l=6}if((l|0)==6)l=0;d=b+16|0;if(+h[(c[i>>2]|0)+136>>3]<=+h[(c[d>>2]|0)+136>>3])break;c[k+(e<<2)>>2]=a;c[(c[i>>2]|0)+124>>2]=e;c[k+(g<<2)>>2]=b;c[(c[d>>2]|0)+124>>2]=g;g=e}return}function Un(a){a=a|0;var b=0,d=0;b=(c[a+16>>2]|0)+124|0;if((c[b>>2]|0)>=0)qa(90283,90303,643,90311);d=c[46031]|0;c[46031]=d+1;c[b>>2]=d;c[(c[46030]|0)+(d<<2)>>2]=a;if((d|0)>0)Sn(a);return}function Vn(){var a=0,b=0,d=0,e=0;b=c[46031]|0;if(!b)a=0;else{e=c[46030]|0;a=c[e>>2]|0;d=b+-1|0;c[46031]=d;d=c[e+(d<<2)>>2]|0;c[e>>2]=d;c[(c[d+16>>2]|0)+124>>2]=0;if((b|0)>2)Tn(d);c[(c[a+16>>2]|0)+124>>2]=-1}return a|0}function Wn(a,b){a=a|0;b=b|0;var d=0,e=0;e=l;l=l+16|0;d=e;c[46030]=uH((b<<2)+4|0)|0;if(0){E1(90325,28,1,c[15686]|0)|0;EL()}b=Sy(a)|0;while(1){if(!b)break;Xn(a,b);b=Ty(a,b)|0}if(0){a=c[15686]|0;h[d>>3]=+FL();g1(a,90173,d)|0}D_(c[46030]|0);l=e;return}function Xn(a,b){a=a|0;b=b|0;var d=0,e=0,f=0.0,g=0,i=0,j=0,k=0;e=c[(c[a+16>>2]|0)+152>>2]|0;f=+h[22910];d=0;while(1){g=c[e+(d<<2)>>2]|0;if(!g)break;h[(c[g+16>>2]|0)+136>>3]=f;d=d+1|0}c[46032]=b;k=c[b+16>>2]|0;h[k+136>>3]=0.0;c[k+128>>2]=0;Un(b);a:while(1){k=Vn()|0;if(!k)break;d=c[46032]|0;j=k+16|0;if((k|0)!=(d|0))Yn(a,d,k,+h[(c[j>>2]|0)+136>>3]);i=Jx(a,k)|0;while(1){if(!i)continue a;d=c[i>>2]&3;b=c[((d|0)==3?i:i+48|0)+40>>2]|0;if((b|0)==(k|0))b=c[((d|0)==2?i:i+-48|0)+40>>2]|0;d=c[j>>2]|0;f=+h[(c[i+16>>2]|0)+136>>3]+ +h[d+136>>3];e=c[b+16>>2]|0;g=e+136|0;do if(+h[g>>3]>f){h[g>>3]=f;if((c[e+124>>2]|0)>-1){Sn(b);break}else{c[e+128>>2]=(c[d+128>>2]|0)+1;Un(b);break}}while(0);i=Kx(a,i,k)|0}}return}function Yn(a,b,d,e){a=a|0;b=b|0;d=d|0;e=+e;b=c[(c[b+16>>2]|0)+120>>2]|0;d=c[(c[d+16>>2]|0)+120>>2]|0;a=c[(c[a+16>>2]|0)+160>>2]|0;h[(c[a+(d<<2)>>2]|0)+(b<<3)>>3]=e;h[(c[a+(b<<2)>>2]|0)+(d<<3)>>3]=e;return}function Zn(a){a=a|0;$M(a,2);b[(c[a+16>>2]|0)+176>>1]=2;c[46366]=2;_n(a);return}function _n(a){a=a|0;var b=0,d=0,e=0,f=0;b=ay(a)|0;e=uH(b*56|0)|0;b=uH((b<<2)+4|0)|0;f=a+16|0;c[(c[f>>2]|0)+152>>2]=b;b=Sy(a)|0;d=0;while(1){if(!b)break;$l(b);c[(c[b+16>>2]|0)+112>>2]=e+(d*56|0);c[(c[(c[f>>2]|0)+152>>2]|0)+(d<<2)>>2]=b;b=Ty(a,b)|0;d=d+1|0}d=Sy(a)|0;while(1){if(!d)break;b=Ex(a,d)|0;while(1){if(!b)break;$n(b);b=Gx(a,b)|0}d=Ty(a,d)|0}return}function $n(a){a=a|0;var b=0.0;Az(a,134378,176,1)|0;eM(a)|0;b=+LL(a,c[46404]|0,1.0,0.0);h[(c[a+16>>2]|0)+128>>3]=b;return}function ao(b){b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=l;l=l+80|0;m=u+32|0;i=u+24|0;g=u+16|0;j=u;t=u+72|0;p=u+40|0;if(ay(b)|0){Zn(b);f=xx(b,93136)|0;if(f)if(a[f>>0]|0){d=az(b,f,0)|0;if(!d){c[g>>2]=f;Pw(0,90354,g)|0;Pw(3,90394,i)|0;d=0;s=1}else s=0}else{d=0;s=1}else{d=0;s=0}n=nx(b,1,93136,0)|0;o=(n|0)!=0;f=xx(b,137660)|0;if((f|0?a[f>>0]|0:0)?(k=j+8|0,c[m>>2]=j,c[m+4>>2]=k,(N1(f,102477,m)|0)==1):0)h[k>>3]=+h[j>>3];if(ay(b)|0){m=oD(b,t,0)|0;if((c[t>>2]|0)==1){g=(d|0)!=0;do if(g)e=d;else{if(o?(e=bo(b,n)|0,e|0):0)break;e=0}while(0);f=Zt(b,e)|0;if(!((e|0)!=0|o^1))rx(f,n,139381)|0;r=(Sy(b)|0)+16|0;D_(c[(c[r>>2]|0)+112>>2]|0);c[(c[r>>2]|0)+112>>2]=0;tq(b)|0;hn(b);d=(s|0)==0|g?d:f}else{XD(b,2,8,p)|0;c[p+12>>2]=0;k=(s|0)==0;j=0;while(1){if((j|0)>=(c[t>>2]|0))break;g=c[m+(j<<2)>>2]|0;e=(d|0)!=0;if(e?(oz(g,d)|0)!=0:0)f=d;else r=23;do if((r|0)==23){r=0;if(o?(q=bo(g,n)|0,q|0):0){f=q;break}f=0}while(0);vD(g)|0;i=Zt(g,f)|0;d=k|e?d:i;if(o?(f|0)==0|(f|0)==(d|0):0)rx(i,n,139381)|0;tq(g)|0;j=j+1|0}r=(Sy(b)|0)+16|0;D_(c[(c[r>>2]|0)+112>>2]|0);c[(c[r>>2]|0)+112>>2]=0;WD(c[t>>2]|0,m,b,p)|0;hn(b)}e=0;while(1){if((e|0)>=(c[t>>2]|0))break;dz(b,c[m+(e<<2)>>2]|0)|0;e=e+1|0}D_(m)}if(s|0)zx(b,93136,ry(d)|0)|0;eJ(b)}l=u;return}function bo(a,b){a=a|0;b=b|0;var c=0;c=Sy(a)|0;while(1){if(!c){c=0;break}if((QL(yx(c,b)|0)|0)<<24>>24)break;c=Ty(a,c)|0}return c|0}function co(a){a=a|0;var b=0,c=0;b=Sy(a)|0;if(b|0){while(1){if(!b)break;c=Ex(a,b)|0;while(1){if(!c)break;JM(c);c=Gx(a,c)|0}HM(b);b=Ty(a,b)|0}eo(a)}return}function eo(a){a=a|0;D_(c[(c[a+16>>2]|0)+152>>2]|0);if((fz(a)|0)!=(a|0))Gz(a,0,134401);return}function fo(a){a=a|0;go(a);if(!((ay(a)|0)==0?!(c[(c[a+16>>2]|0)+180>>2]|0):0)){nu(a);eJ(a)}return}function go(a){a=a|0;c[46377]=nx(a,1,105204,105210)|0;$M(a,2);b[(c[a+16>>2]|0)+176>>1]=2;c[46366]=2;ho(a,0);io(a);return}function ho(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=l;l=l+16|0;g=i;h=(b|0)==0;if(h){lo(g);b=g}d=wA(a)|0;while(1){if(!d)break;if(!(z$(ry(d)|0,104980,7)|0)){Az(d,134401,280,1)|0;mo(b,d);ho(d,0)}else ho(d,b);d=xA(d)|0}if(h?(e=c[g+8>>2]|0,f=a+16|0,c[(c[f>>2]|0)+180>>2]=e,e|0):0){h=xH(c[g>>2]|0,(e<<2)+4|0)|0;c[(c[f>>2]|0)+184>>2]=h}l=i;return}function io(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;f=uH((ay(a)|0)<<2)|0;b=uH(((ay(a)|0)<<2)+4|0)|0;g=a+16|0;c[(c[g>>2]|0)+152>>2]=b;b=Sy(a)|0;d=0;while(1){if(!b)break;Az(b,134365,304,1)|0;c[(c[b+16>>2]|0)+112>>2]=f+(d<<2);c[(c[(c[g>>2]|0)+152>>2]|0)+(d<<2)>>2]=b;jo(b);e=Ex(a,b)|0;while(1){if(!e)break;ko(e);e=Gx(a,e)|0}b=Ty(a,b)|0;d=d+1|0}return}function jo(a){a=a|0;zx(a,105204,105210)|0;return}function ko(a){a=a|0;Az(a,134378,304,1)|0;return}function lo(a){a=a|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;return}function mo(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;g=a+8|0;d=(c[g>>2]|0)+1|0;c[g>>2]=d;e=a+4|0;h=c[e>>2]|0;f=h+10|0;if((d|0)<(h|0))a=c[a>>2]|0;else{c[e>>2]=f;d=xH(c[a>>2]|0,f<<2)|0;c[a>>2]=d;a=d;d=c[g>>2]|0}c[a+(d<<2)>>2]=b;return}function no(a){a=a|0;var b=0,d=0;b=Sy(a)|0;if(b|0){D_(c[(c[b+16>>2]|0)+112>>2]|0);while(1){if(!b)break;d=Ex(a,b)|0;while(1){if(!d)break;JM(d);d=Gx(a,d)|0}HM(b);b=Ty(a,b)|0}oo(a)}return}function oo(a){a=a|0;D_(c[(c[a+16>>2]|0)+152>>2]|0);if((fz(a)|0)!=(a|0))Gz(a,0,134401);return}function po(a){a=a|0;var d=0,e=0,f=0;qo(a);ro(a,0);so(a,0);to(a,0);d=c[a+16>>2]|0;if(!(c[(c[d+8>>2]|0)+84>>2]|0)){d=b[d+136>>1]&14;if(d<<16>>16)Ym(a,d&65535)|0}else{d=Sy(a)|0;while(1){if(!d)break;f=c[d+16>>2]|0;e=c[f+132>>2]|0;h[e>>3]=+h[f+16>>3]*.013888888888888888;h[e+8>>3]=+h[f+24>>3]*.013888888888888888;d=Ty(a,d)|0}$m(a,1)}eJ(a);return}function qo(a){a=a|0;var d=0,e=0;$M(a,2);b[(c[a+16>>2]|0)+176>>1]=2;c[46366]=2;d=Sy(a)|0;while(1){if(!d)break;$l(d);d=Ty(a,d)|0}e=Sy(a)|0;while(1){if(!e)break;d=Ex(a,e)|0;while(1){if(!d)break;Az(d,134378,176,1)|0;eM(d)|0;d=Gx(a,d)|0}e=Ty(a,e)|0}return}function ro(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=l;l=l+16|0;g=i;h=(b|0)==0;if(h){yo(g);b=g}d=wA(a)|0;while(1){if(!d)break;if(!(z$(ry(d)|0,104980,7)|0)){Az(d,134401,280,1)|0;fH(d);zo(b,d);ro(d,0)}else ro(d,b);d=xA(d)|0}if(h?(e=c[g+8>>2]|0,f=a+16|0,c[(c[f>>2]|0)+180>>2]=e,e|0):0){h=xH(c[g>>2]|0,(e<<2)+4|0)|0;c[(c[f>>2]|0)+184>>2]=h}l=i;return}function so(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0.0,j=0.0,k=0.0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0;Q=l;l=l+448|0;G=Q+400|0;F=Q+384|0;P=Q+344|0;O=Q+304|0;N=Q+248|0;D=Q+192|0;x=Q+152|0;y=Q+96|0;o=Q+72|0;d=Q+64|0;I=Q+32|0;J=Q;B=Q+416|0;u=Q+328|0;w=Q+288|0;K=Q+232|0;L=Q+176|0;M=Q+136|0;H=Q+80|0;n=c[a+60>>2]|0;if(0>1){uo(b);E=c[15686]|0;c[d>>2]=ry(a)|0;g1(E,90637,d)|0}E=a+16|0;f=b+1|0;d=1;e=0;while(1){g=c[E>>2]|0;if((d|0)>(c[g+180>>2]|0))break;C=c[(c[g+184>>2]|0)+(d<<2)>>2]|0;so(C,f);d=d+1|0;e=(ay(C)|0)+e|0}p=(ay(a)|0)-e|0;d=c[E>>2]|0;C=(c[d+180>>2]|0)+p|0;v=(C|0)==0;if(v?(c[d+12>>2]|0)==0:0){P=d+16|0;c[P>>2]=0;c[P+4>>2]=0;c[P+8>>2]=0;c[P+12>>2]=0;h[d+40>>3]=18.0;h[d+32>>3]=18.0}else{d=B+16|0;do if((XD(a,4,4,B)|0)>>>0>=3)if((c[d>>2]|0)==4?(c[B+28>>2]&2|0)!=0:0){e=nx(n,0,96164,0)|0;d=nx(n,1,96164,0)|0;if((e|0)!=0|(d|0)!=0){c[B+24>>2]=uH(C<<2)|0;break}else{c[o>>2]=ry(a)|0;Pw(0,90483,o)|0;d=0;e=0;break}}else{d=0;e=0}else{c[d>>2]=3;d=0;e=0}while(0);z=uH(C<<5)|0;A=uH(C<<2)|0;s=B+24|0;n=(e|0)!=0;r=0;g=1;while(1){f=c[E>>2]|0;if((g|0)>(c[f+180>>2]|0))break;f=c[(c[f+184>>2]|0)+(g<<2)>>2]|0;t=z+(r<<5)|0;q=(c[f+16>>2]|0)+16|0;c[t>>2]=c[q>>2];c[t+4>>2]=c[q+4>>2];c[t+8>>2]=c[q+8>>2];c[t+12>>2]=c[q+12>>2];c[t+16>>2]=c[q+16>>2];c[t+20>>2]=c[q+20>>2];c[t+24>>2]=c[q+24>>2];c[t+28>>2]=c[q+28>>2];if(n&(c[s>>2]|0)!=0){t=KL(f,e,0,0)|0;c[(c[s>>2]|0)+(r<<2)>>2]=t}c[A+(r<<2)>>2]=f;r=r+1|0;g=g+1|0}a:do if((p|0)>0){o=I+16|0;p=I+24|0;q=(d|0)!=0;n=Sy(a)|0;e=r;while(1){if(!n)break a;f=c[n+16>>2]|0;g=f+112|0;if(!(c[g>>2]|0)){c[g>>2]=a;c[I>>2]=0;c[I+4>>2]=0;c[I+8>>2]=0;c[I+12>>2]=0;h[o>>3]=+h[f+96>>3]+ +h[f+88>>3];h[p>>3]=+h[f+80>>3];t=z+(e<<5)|0;c[t>>2]=c[I>>2];c[t+4>>2]=c[I+4>>2];c[t+8>>2]=c[I+8>>2];c[t+12>>2]=c[I+12>>2];c[t+16>>2]=c[I+16>>2];c[t+20>>2]=c[I+20>>2];c[t+24>>2]=c[I+24>>2];c[t+28>>2]=c[I+28>>2];if(q&(c[s>>2]|0)!=0){t=KL(n,d,0,0)|0;c[(c[s>>2]|0)+(e<<2)>>2]=t}c[A+(e<<2)>>2]=n;e=e+1|0}n=Ty(a,n)|0}}while(0);t=QD(C,z,B)|0;d=c[s>>2]|0;if(d|0)D_(d);vo(J,2147483647.0,2147483647.0);s=J+16|0;vo(u,-2147483647.0,-2147483647.0);c[s>>2]=c[u>>2];c[s+4>>2]=c[u+4>>2];c[s+8>>2]=c[u+8>>2];c[s+12>>2]=c[u+12>>2];g=I+16|0;n=I+8|0;o=I+24|0;p=J+8|0;q=J+24|0;r=c[15686]|0;d=0;while(1){if((d|0)>=(C|0))break;j=+(c[t+(d<<3)>>2]|0);m=+(c[t+(d<<3)+4>>2]|0);e=z+(d<<5)|0;c[I>>2]=c[e>>2];c[I+4>>2]=c[e+4>>2];c[I+8>>2]=c[e+8>>2];c[I+12>>2]=c[e+12>>2];c[I+16>>2]=c[e+16>>2];c[I+20>>2]=c[e+20>>2];c[I+24>>2]=c[e+24>>2];c[I+28>>2]=c[e+28>>2];i=+h[I>>3]+j;h[I>>3]=i;j=+h[g>>3]+j;h[g>>3]=j;k=+h[n>>3]+m;h[n>>3]=k;m=+h[o>>3]+m;h[o>>3]=m;h[J>>3]=+h[(+h[J>>3]>3];h[p>>3]=+h[(+h[p>>3]>3];h[s>>3]=+h[(+h[s>>3]>j?J:I)+16>>3];h[q>>3]=+h[(+h[q>>3]>m?J:I)+24>>3];e=c[A+(d<<2)>>2]|0;f=e+16|0;if((d|0)<(c[(c[E>>2]|0)+180>>2]|0)){u=(c[f>>2]|0)+16|0;c[u>>2]=c[I>>2];c[u+4>>2]=c[I+4>>2];c[u+8>>2]=c[I+8>>2];c[u+12>>2]=c[I+12>>2];c[u+16>>2]=c[I+16>>2];c[u+20>>2]=c[I+20>>2];c[u+24>>2]=c[I+24>>2];c[u+28>>2]=c[I+28>>2];if(0>1){uo(b);c[y>>2]=ry(e)|0;h[y+8>>3]=i;h[y+16>>3]=k;h[y+24>>3]=j;h[y+32>>3]=m;g1(r,90462,y)|0}}else{u=(c[f>>2]|0)+16|0;c[F>>2]=c[I>>2];c[F+4>>2]=c[I+4>>2];c[F+8>>2]=c[I+8>>2];c[F+12>>2]=c[I+12>>2];c[G>>2]=c[g>>2];c[G+4>>2]=c[g+4>>2];c[G+8>>2]=c[g+8>>2];c[G+12>>2]=c[g+12>>2];wo(w,F,G);c[u>>2]=c[w>>2];c[u+4>>2]=c[w+4>>2];c[u+8>>2]=c[w+8>>2];c[u+12>>2]=c[w+12>>2];if(0>1){uo(b);u=ry(e)|0;f=c[f>>2]|0;k=+h[f+16>>3];m=+h[f+24>>3];c[x>>2]=u;h[x+8>>3]=k;h[x+16>>3]=m;g1(r,90450,x)|0}}d=d+1|0}e=c[E>>2]|0;d=c[e+12>>2]|0;if(d|0){i=+h[d+24>>3];if(v){j=+h[d+32>>3];c[J>>2]=0;c[J+4>>2]=0;c[J+8>>2]=0;c[J+12>>2]=0;h[s>>3]=i;h[q>>3]=j;j=0.0;k=i}else{j=+h[J>>3];k=+h[s>>3]}m=i-(k-j);i=m*.5;if(m>0.0){h[J>>3]=j-i;h[s>>3]=k+i}}if((b|0)>0)i=+((c[B+8>>2]|0)>>>0)*.5;else i=0.0;j=+h[J>>3]-i;h[J>>3]=j;k=+h[s>>3]+i;h[s>>3]=k;m=-i-+h[e+56>>3]+ +h[p>>3];h[p>>3]=m;i=+h[e+88>>3]+i+ +h[q>>3];h[q>>3]=i;if(0>1){uo(b);c[D>>2]=ry(a)|0;h[D+8>>3]=j;h[D+16>>3]=m;h[D+24>>3]=k;h[D+32>>3]=i;g1(r,90462,D)|0}d=0;while(1){if((d|0)>=(C|0))break;e=c[A+(d<<2)>>2]|0;f=e+16|0;if((d|0)<(c[(c[E>>2]|0)+180>>2]|0)){D=(c[f>>2]|0)+16|0;c[I>>2]=c[D>>2];c[I+4>>2]=c[D+4>>2];c[I+8>>2]=c[D+8>>2];c[I+12>>2]=c[D+12>>2];c[I+16>>2]=c[D+16>>2];c[I+20>>2]=c[D+20>>2];c[I+24>>2]=c[D+24>>2];c[I+28>>2]=c[D+28>>2];c[F>>2]=c[D>>2];c[F+4>>2]=c[D+4>>2];c[F+8>>2]=c[D+8>>2];c[F+12>>2]=c[D+12>>2];c[G>>2]=c[J>>2];c[G+4>>2]=c[J+4>>2];c[G+8>>2]=c[J+8>>2];c[G+12>>2]=c[J+12>>2];xo(I,F,G);c[F>>2]=c[g>>2];c[F+4>>2]=c[g+4>>2];c[F+8>>2]=c[g+8>>2];c[F+12>>2]=c[g+12>>2];c[G>>2]=c[J>>2];c[G+4>>2]=c[J+4>>2];c[G+8>>2]=c[J+8>>2];c[G+12>>2]=c[J+12>>2];xo(K,F,G);c[g>>2]=c[K>>2];c[g+4>>2]=c[K+4>>2];c[g+8>>2]=c[K+8>>2];c[g+12>>2]=c[K+12>>2];D=(c[f>>2]|0)+16|0;c[D>>2]=c[I>>2];c[D+4>>2]=c[I+4>>2];c[D+8>>2]=c[I+8>>2];c[D+12>>2]=c[I+12>>2];c[D+16>>2]=c[I+16>>2];c[D+20>>2]=c[I+20>>2];c[D+24>>2]=c[I+24>>2];c[D+28>>2]=c[I+28>>2];if(0>1){uo(b);D=ry(e)|0;i=+h[I>>3];j=+h[n>>3];k=+h[g>>3];m=+h[o>>3];c[N>>2]=D;h[N+8>>3]=i;h[N+16>>3]=j;h[N+24>>3]=k;h[N+32>>3]=m;g1(r,90462,N)|0}}else{D=(c[f>>2]|0)+16|0;c[F>>2]=c[D>>2];c[F+4>>2]=c[D+4>>2];c[F+8>>2]=c[D+8>>2];c[F+12>>2]=c[D+12>>2];c[G>>2]=c[J>>2];c[G+4>>2]=c[J+4>>2];c[G+8>>2]=c[J+8>>2];c[G+12>>2]=c[J+12>>2];xo(L,F,G);c[D>>2]=c[L>>2];c[D+4>>2]=c[L+4>>2];c[D+8>>2]=c[L+8>>2];c[D+12>>2]=c[L+12>>2];if(0>1){uo(b);D=ry(e)|0;B=c[f>>2]|0;k=+h[B+16>>3];m=+h[B+24>>3];c[O>>2]=D;h[O+8>>3]=k;h[O+16>>3]=m;g1(r,90450,O)|0}}d=d+1|0}c[F>>2]=c[s>>2];c[F+4>>2]=c[s+4>>2];c[F+8>>2]=c[s+8>>2];c[F+12>>2]=c[s+12>>2];c[G>>2]=c[J>>2];c[G+4>>2]=c[J+4>>2];c[G+8>>2]=c[J+8>>2];c[G+12>>2]=c[J+12>>2];xo(M,F,G);c[s>>2]=c[M>>2];c[s+4>>2]=c[M+4>>2];c[s+8>>2]=c[M+8>>2];c[s+12>>2]=c[M+12>>2];c[F>>2]=c[J>>2];c[F+4>>2]=c[J+4>>2];c[F+8>>2]=c[J+8>>2];c[F+12>>2]=c[J+12>>2];c[G>>2]=c[J>>2];c[G+4>>2]=c[J+4>>2];c[G+8>>2]=c[J+8>>2];c[G+12>>2]=c[J+12>>2];xo(H,F,G);c[J>>2]=c[H>>2];c[J+4>>2]=c[H+4>>2];c[J+8>>2]=c[H+8>>2];c[J+12>>2]=c[H+12>>2];O=(c[E>>2]|0)+16|0;c[O>>2]=c[J>>2];c[O+4>>2]=c[J+4>>2];c[O+8>>2]=c[J+8>>2];c[O+12>>2]=c[J+12>>2];c[O+16>>2]=c[J+16>>2];c[O+20>>2]=c[J+20>>2];c[O+24>>2]=c[J+24>>2];c[O+28>>2]=c[J+28>>2];if(0>1){uo(b);O=ry(a)|0;i=+h[J>>3];j=+h[p>>3];k=+h[s>>3];m=+h[q>>3];c[P>>2]=O;h[P+8>>3]=i;h[P+16>>3]=j;h[P+24>>3]=k;h[P+32>>3]=m;g1(r,90462,P)|0}D_(z);D_(A);D_(t)}l=Q;return}function to(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0.0,k=0.0,m=0.0,n=0.0,o=0,p=0.0,q=0.0,r=0,s=0,t=0,u=0;t=l;l=l+80|0;s=t+32|0;i=t+8|0;d=t;r=a+16|0;o=c[r>>2]|0;p=+h[o+16>>3];q=+h[o+24>>3];if(0>1){uo(b);o=c[15686]|0;c[d>>2]=ry(a)|0;g1(o,90435,d)|0}o=(b|0)!=0;a:do if(o){d=Sy(a)|0;e=c[15686]|0;while(1){if(!d)break a;f=d+16|0;g=c[f>>2]|0;if((c[g+112>>2]|0)==(a|0)?(u=g+16|0,h[u>>3]=+h[u>>3]+p,g=g+24|0,h[g>>3]=+h[g>>3]+q,0>1):0){uo(b);u=ry(d)|0;g=c[f>>2]|0;m=+h[g+16>>3];n=+h[g+24>>3];c[i>>2]=u;h[i+8>>3]=m;h[i+16>>3]=n;g1(e,90450,i)|0}d=Ty(a,d)|0}}else e=c[15686]|0;while(0);i=b+1|0;a=1;while(1){d=c[r>>2]|0;if((a|0)>(c[d+180>>2]|0))break;g=c[(c[d+184>>2]|0)+(a<<2)>>2]|0;if(o){f=g+16|0;d=c[f>>2]|0;j=+h[d+16>>3]+p;k=+h[d+24>>3]+q;m=+h[d+32>>3]+p;n=+h[d+40>>3]+q;if(0>1){uo(b);c[s>>2]=ry(g)|0;h[s+8>>3]=j;h[s+16>>3]=k;h[s+24>>3]=m;h[s+32>>3]=n;g1(e,90462,s)|0;d=c[f>>2]|0}h[d+16>>3]=j;h[d+24>>3]=k;h[d+32>>3]=m;h[d+40>>3]=n}to(g,i);a=a+1|0}l=t;return}function uo(a){a=a|0;var b=0;b=c[15686]|0;while(1){if((a|0)<=0)break;D1(90480,b)|0;a=a+-1|0}return}function vo(a,b,c){a=a|0;b=+b;c=+c;h[a>>3]=b;h[a+8>>3]=c;return}function wo(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0;d=(+h[c+8>>3]+ +h[b+8>>3])*.5;h[a>>3]=(+h[c>>3]+ +h[b>>3])*.5;h[a+8>>3]=d;return}function xo(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0;d=+h[b+8>>3]-+h[c+8>>3];h[a>>3]=+h[b>>3]-+h[c>>3];h[a+8>>3]=d;return}function yo(a){a=a|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;return}function zo(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;g=a+8|0;d=(c[g>>2]|0)+1|0;c[g>>2]=d;e=a+4|0;h=c[e>>2]|0;f=h+10|0;if((d|0)<(h|0))a=c[a>>2]|0;else{c[e>>2]=f;d=xH(c[a>>2]|0,f<<2)|0;c[a>>2]=d;a=d;d=c[g>>2]|0}c[a+(d<<2)>>2]=b;return}function Ao(a){a=a|0;var b=0;b=Sy(a)|0;while(1){if(!b)break;HM(b);b=Ty(a,b)|0}Bo(a);return}function Bo(a){a=a|0;var b=0,d=0,e=0;b=a+16|0;a=1;while(1){e=c[b>>2]|0;d=c[e+184>>2]|0;if((a|0)>(c[e+180>>2]|0))break;e=c[d+(a<<2)>>2]|0;nH(c[(c[e+16>>2]|0)+12>>2]|0);Bo(e);a=a+1|0}D_(d);return}function Co(a){a=a|0;var b=0,d=0,e=0;Fz(a,1,134365,304,1);sM(a)|0;b=uH(((ay(a)|0)<<2)+4|0)|0;e=a+16|0;c[(c[e>>2]|0)+152>>2]=b;b=0;d=Sy(a)|0;while(1){if(!d)break;Do(d);c[(c[(c[e>>2]|0)+152>>2]|0)+(b<<2)>>2]=d;c[(c[d+16>>2]|0)+120>>2]=b;b=b+1|0;d=Ty(a,d)|0}e=nx(a,2,90566,0)|0;d=Sy(a)|0;while(1){if(!d)break;b=Ex(a,d)|0;while(1){if(!b)break;Eo(b,e);b=Gx(a,b)|0}d=Ty(a,d)|0}Fo(a);return}function Do(a){a=a|0;var b=0;dM(a);b=uH((e[(c[(ez(a)|0)+16>>2]|0)+176>>1]|0)<<3)|0;c[(c[a+16>>2]|0)+132>>2]=b;bN(a,c[(c[(ez(a)|0)+16>>2]|0)+116>>2]&1);return}function Eo(a,b){a=a|0;b=b|0;var d=0,e=0.0;Az(a,134378,176,1)|0;e=+LL(a,c[46404]|0,1.0,0.0);d=a+16|0;h[(c[d>>2]|0)+128>>3]=e;e=+LL(a,b,+h[1371],0.0);h[(c[d>>2]|0)+136>>3]=e;eM(a)|0;return}function Fo(b){b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;r=l;l=l+32|0;q=r+16|0;p=r;m=r+24|0;n=nx(b,1,99597,0)|0;a:do if(n|0){o=nx(b,1,90570,0)|0;i=b+16|0;j=(o|0)==0;k=c[15686]|0;g=0;while(1){e=c[(c[(c[i>>2]|0)+152>>2]|0)+(g<<2)>>2]|0;if(!e)break a;b=yx(e,n)|0;do if(a[b>>0]|0){f=e+16|0;d=c[(c[f>>2]|0)+132>>2]|0;a[m>>0]=0;c[p>>2]=d;c[p+4>>2]=d+8;c[p+8>>2]=m;if((N1(b,98723,p)|0)<=1){c[q>>2]=ry(e)|0;c[q+4>>2]=b;g1(k,90574,q)|0;break}b:do if(+h[22908]>0.0){b=0;while(1){if((b|0)==2)break b;s=d+(b<<3)|0;h[s>>3]=+h[s>>3]/+h[22908];b=b+1|0}}while(0);b=c[f>>2]|0;a[b+119>>0]=1;if((a[m>>0]|0)!=33){if(j)break;if(!((QL(yx(e,o)|0)|0)<<24>>24))break;b=c[f>>2]|0}a[b+119>>0]=3}while(0);g=g+1|0}}while(0);l=r;return}function Go(a){a=a|0;var b=0,c=0;c=Sy(a)|0;while(1){if(!c)break;b=Ex(a,c)|0;while(1){if(!b)break;JM(b);b=Gx(a,b)|0}HM(c);c=Ty(a,c)|0}Ho(a);return}function Ho(a){a=a|0;Io(a);a=a+16|0;D_(c[(c[a>>2]|0)+152>>2]|0);D_(c[(c[a>>2]|0)+140>>2]|0);return}function Io(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;g=a+16|0;f=1;while(1){e=c[g>>2]|0;b=c[e+184>>2]|0;if((f|0)>(c[e+180>>2]|0))break;e=c[b+(f<<2)>>2]|0;b=e+16|0;nH(c[(c[b>>2]|0)+12>>2]|0);d=c[(c[b>>2]|0)+140>>2]|0;if(d|0){D_(c[d>>2]|0);D_(c[(c[b>>2]|0)+140>>2]|0)}Io(e);f=f+1|0}D_(b);if((fz(a)|0)!=(a|0))Cz(a,134401)|0;return}function Jo(a,b){a=a|0;b=b|0;c[b+4>>2]=nx(a,0,90626,0)|0;c[b+8>>2]=nx(a,0,138034,0)|0;c[b+12>>2]=nx(a,0,137966,0)|0;c[b>>2]=a;c[b+16>>2]=0;c[b+36>>2]=XD(a,2,4,b+20|0)|0;return}function Ko(a){a=a|0;var d=0,e=0;$M(a,2);d=uH(56)|0;e=a+16|0;c[(c[e>>2]|0)+140>>2]=d;d=(KL(a,nx(a,0,90633,0)|0,2,2)|0)&65535;d=(d&65535)<10?d:10;b[(c[e>>2]|0)+176>>1]=d;c[46366]=d&65535;Lo(a,0,a);hp(a);Co(a);return}function Lo(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;m=l;l=l+16|0;j=m;k=(d|0)==0;if(k){Mo(j);d=j}g=e+16|0;f=wA(a)|0;while(1){if(!f)break;if(!(z$(ry(f)|0,104980,7)|0)){Az(f,134401,280,1)|0;n=uH(56)|0;p=c[f+16>>2]|0;c[p+140>>2]=n;o=c[g>>2]|0;b[p+176>>1]=b[o+176>>1]|0;c[n+44>>2]=(c[(c[o+140>>2]|0)+44>>2]|0)+1;c[n+48>>2]=e;No(d,f);Lo(f,0,f)}else Lo(f,d,e);f=xA(f)|0}if(k?(h=c[j+8>>2]|0,i=a+16|0,c[(c[i>>2]|0)+180>>2]=h,h|0):0){p=xH(c[j>>2]|0,(h<<2)+4|0)|0;c[(c[i>>2]|0)+184>>2]=p}l=m;return}function Mo(a){a=a|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;return}function No(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;g=a+8|0;d=(c[g>>2]|0)+1|0;c[g>>2]=d;e=a+4|0;h=c[e>>2]|0;f=h+10|0;if((d|0)<(h|0))a=c[a>>2]|0;else{c[e>>2]=f;d=xH(c[a>>2]|0,f<<2)|0;c[a>>2]=d;a=d;d=c[g>>2]|0}c[a+(d<<2)>>2]=b;return}function Oo(a){a=a|0;var b=0,c=0;b=l;l=l+64|0;c=b;Jo(a,c);Po(a,c);Qo(a);Ro(a,a);So(a);l=b;return}function Po(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0.0,u=0.0,v=0,w=0.0,x=0.0;s=l;l=l+64|0;r=s+48|0;e=s+40|0;o=s+56|0;n=s+52|0;m=s;if(0){q=c[15686]|0;c[e>>2]=ry(b)|0;g1(q,90637,e)|0}e=Sy(b)|0;while(1){if(!e)break;c[(c[e+16>>2]|0)+164>>2]=0;e=Ty(b,e)|0}p=To(b,d)|0;q=Iu(p,o,n)|0;e=q;while(1){k=e+4|0;f=c[e>>2]|0;if(!f)break;ip(f,m);e=Sy(f)|0;while(1){if(!e)break;g=Ty(f,e)|0;i=e+16|0;j=c[i>>2]|0;if(c[j+212>>2]|0){v=Uo(e,f)|0;Po(v,d);v=c[(c[v+16>>2]|0)+140>>2]|0;u=+h[v+24>>3];j=c[i>>2]|0;h[j+32>>3]=u;t=+h[v+32>>3];h[j+40>>3]=t;u=u*36.0;h[j+88>>3]=u;h[j+96>>3]=u;h[j+80>>3]=t*72.0;e=g;continue}if(c[(c[j+112>>2]|0)+8>>2]|0){e=g;continue}dz(f,e)|0;e=g}if((ay(f)|0)<=1){e=k;continue}if((c[d>>2]|0)==(b|0))Qp(f)|0;vp(f,m);e=k}e=c[o>>2]|0;if((e|0)<=1)if((e|0)==1){mM(c[q>>2]|0);e=0}else e=0;else{if(!(c[n>>2]|0))f=0;else{f=uH(e)|0;a[f>>0]=1;e=c[o>>2]|0}c[d+40>>2]=f;e=BD(e,q,0,d+20|0)|0;D_(f)}Vo(p,c[o>>2]|0,q,e,b,d);D_(e);f=Sy(p)|0;while(1){if(!f)break;g=c[f+16>>2]|0;e=c[g+212>>2]|0;if(!e){e=c[(c[g+112>>2]|0)+8>>2]|0;if(e|0){o=c[g+132>>2]|0;v=c[(c[e+16>>2]|0)+132>>2]|0;h[v>>3]=+h[o>>3];h[v+8>>3]=+h[o+8>>3]}}else{o=c[g+132>>2]|0;x=+h[g+32>>3];w=+h[o>>3]-x*.5;v=c[(c[e+16>>2]|0)+140>>2]|0;h[v+8>>3]=w;t=+h[g+40>>3];u=+h[o+8>>3]-t*.5;h[v+16>>3]=u;h[v+24>>3]=x+w;h[v+32>>3]=t+u}f=Ty(p,f)|0}v=(c[(c[b+16>>2]|0)+140>>2]|0)+8|0;o=(c[(c[p+16>>2]|0)+140>>2]|0)+8|0;c[v>>2]=c[o>>2];c[v+4>>2]=c[o+4>>2];c[v+8>>2]=c[o+8>>2];c[v+12>>2]=c[o+12>>2];c[v+16>>2]=c[o+16>>2];c[v+20>>2]=c[o+20>>2];c[v+24>>2]=c[o+24>>2];c[v+28>>2]=c[o+28>>2];Wo(p,q);D_(q);if(0){v=c[15686]|0;c[r>>2]=ry(b)|0;g1(v,90648,r)|0}l=s;return}function Qo(b){b=b|0;var d=0,e=0,f=0.0,g=0.0,i=0.0,j=0.0,k=0;d=Sy(b)|0;while(1){if(!d)break;e=c[d+16>>2]|0;if(a[e+118>>0]|0){k=c[(c[(c[e+212>>2]|0)+16>>2]|0)+140>>2]|0;j=+h[k+24>>3]-+h[k+8>>3];i=+h[k+32>>3]-+h[k+16>>3];g=j*36.0;f=i*36.0;k=c[e+132>>2]|0;h[k>>3]=j*.5;h[k+8>>3]=i*.5;h[e+32>>3]=j;h[e+40>>3]=i;h[e+96>>3]=g;h[e+88>>3]=g;h[e+80>>3]=i*72.0;e=c[(c[e+12>>2]|0)+44>>2]|0;h[e>>3]=g;h[e+8>>3]=f;i=-g;h[e+16>>3]=i;h[e+24>>3]=f;h[e+32>>3]=i;f=-f;h[e+40>>3]=f;h[e+48>>3]=g;h[e+56>>3]=f}d=Ty(b,d)|0}return}function Ro(a,b){a=a|0;b=b|0;var d=0,e=0,f=0.0,g=0.0,i=0,j=0,k=0.0,l=0,m=0.0,n=0,o=0.0,p=0;i=a+16|0;j=c[(c[i>>2]|0)+140>>2]|0;f=+h[j+8>>3];g=+h[j+16>>3];j=(a|0)!=(b|0);a:do if(j){d=Sy(a)|0;while(1){if(!d){a=1;break a}e=c[d+16>>2]|0;if((c[e+212>>2]|0)==(a|0)){e=c[e+132>>2]|0;h[e>>3]=+h[e>>3]+f;e=e+8|0;h[e>>3]=+h[e>>3]+g}d=Ty(a,d)|0}}else a=1;while(0);while(1){d=c[i>>2]|0;if((a|0)>(c[d+180>>2]|0))break;d=c[(c[d+184>>2]|0)+(a<<2)>>2]|0;if(j){e=c[(c[d+16>>2]|0)+140>>2]|0;p=e+8|0;n=e+16|0;l=e+24|0;e=e+32|0;o=+h[n>>3]+g;m=+h[l>>3]+f;k=+h[e>>3]+g;h[p>>3]=+h[p>>3]+f;h[n>>3]=o;h[l>>3]=m;h[e>>3]=k}Ro(d,b);a=a+1|0}return}function So(a){a=a|0;var b=0,d=0,e=0.0,f=0.0,g=0.0;b=a+16|0;a=c[b>>2]|0;d=c[a+140>>2]|0;g=+h[d+16>>3]*72.0;f=+h[d+24>>3]*72.0;e=+h[d+32>>3]*72.0;h[a+16>>3]=+h[d+8>>3]*72.0;h[a+24>>3]=g;h[a+32>>3]=f;h[a+40>>3]=e;a=1;while(1){d=c[b>>2]|0;if((a|0)>(c[d+180>>2]|0))break;So(c[(c[d+184>>2]|0)+(a<<2)>>2]|0);a=a+1|0}return}function To(d,e){d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;y=l;l=l+160|0;s=y+24|0;t=y+8|0;g=y;f=y+56|0;w=e+16|0;x=c[w>>2]|0;c[w>>2]=x+1;c[s>>2]=x;Y0(f,90710,s)|0;if(0>1){x=c[15686]|0;w=ry(d)|0;c[g>>2]=f;c[g+4>>2]=w;g1(x,90717,g)|0};a[s>>0]=a[18484]|0;a[s+1>>0]=a[18485]|0;a[s+2>>0]=a[18486]|0;a[s+3>>0]=a[18487]|0;x=Xx(91072,s,0)|0;Az(x,134401,280,1)|0;v=uH(56)|0;w=x+16|0;o=c[w>>2]|0;c[o+140>>2]=v;v=d+16|0;b[o+176>>1]=b[(c[v>>2]|0)+176>>1]|0;ap(d,x,91095);ap(d,x,91700);ap(d,x,90983);o=e+4|0;p=s+16|0;q=s+8|0;r=s+24|0;j=0;n=1;while(1){f=c[v>>2]|0;if((n|0)>(c[f+180>>2]|0))break;c[s>>2]=c[332];c[s+4>>2]=c[333];c[s+8>>2]=c[334];c[s+12>>2]=c[335];c[s+16>>2]=c[336];c[s+20>>2]=c[337];c[s+24>>2]=c[338];c[s+28>>2]=c[339];g=c[(c[f+184>>2]|0)+(n<<2)>>2]|0;fH(g);i=bp(x,ry(g)|0)|0;k=i+16|0;f=c[k>>2]|0;c[f+212>>2]=g;m=j+1|0;c[f+120>>2]=j;if(c[o>>2]|0)cp(g,i,e,s);f=Sy(g)|0;while(1){if(!f)break;c[(c[f+16>>2]|0)+164>>2]=i;f=Ty(g,f)|0}f=c[k>>2]|0;if(a[f+119>>0]|0){k=c[f+132>>2]|0;h[k>>3]=(+h[p>>3]+ +h[s>>3])*.5;h[k+8>>3]=(+h[r>>3]+ +h[q>>3])*.5}j=m;n=n+1|0}k=Sy(d)|0;while(1){if(!k)break;f=k+16|0;g=c[f>>2]|0;if(!(c[g+164>>2]|0)){i=g+212|0;s=c[i>>2]|0;if(s|0?(s|0)!=(c[(c[(c[v>>2]|0)+140>>2]|0)+48>>2]|0):0){u=18;break}c[i>>2]=d;if(!(a[g+118>>0]|0)){i=bp(x,ry(k)|0)|0;g=c[f>>2]|0;c[g+164>>2]=i;i=c[i+16>>2]|0;c[i+120>>2]=j;h[i+32>>3]=+h[g+32>>3];h[i+40>>3]=+h[g+40>>3];h[i+88>>3]=+h[g+88>>3];h[i+96>>3]=+h[g+96>>3];h[i+80>>3]=+h[g+80>>3];c[i+8>>2]=c[g+8>>2];c[i+12>>2]=c[g+12>>2];f=a[g+119>>0]|0;if(f<<24>>24){e=c[g+132>>2]|0;s=c[i+132>>2]|0;h[s>>3]=+h[e>>3];h[s+8>>3]=+h[e+8>>3];a[i+119>>0]=f}c[(c[i+112>>2]|0)+8>>2]=k;f=j+1|0}else f=j}else f=j;k=Ty(d,k)|0;j=f}if((u|0)==18){e=ry(k)|0;s=ry(d)|0;u=ry(c[(c[f>>2]|0)+212>>2]|0)|0;c[t>>2]=e;c[t+4>>2]=s;c[t+8>>2]=u;Pw(1,90740,t)|0;bb(184132,1)}m=Sy(d)|0;while(1){if(!m)break;n=c[(c[m+16>>2]|0)+164>>2]|0;o=n+16|0;i=Ex(d,m)|0;while(1){if(!i)break;f=c[(c[(c[((c[i>>2]&3|0)==2?i:i+-48|0)+40>>2]|0)+16>>2]|0)+164>>2]|0;if((f|0)!=(n|0)){if(f>>>0>n>>>0)k=Rx(x,n,f,0,1)|0;else k=Rx(x,f,n,0,1)|0;Az(k,134378,176,1)|0;g=c[i+16>>2]|0;u=c[k+16>>2]|0;h[u+136>>3]=+h[g+136>>3];h[u+128>>3]=+h[g+128>>3];f=c[(c[f+16>>2]|0)+112>>2]|0;g=f+4|0;c[g>>2]=(c[g>>2]|0)+1;g=c[(c[o>>2]|0)+112>>2]|0;t=g+4|0;c[t>>2]=(c[t>>2]|0)+1;if(!(c[u+172>>2]|0)){c[f>>2]=(c[f>>2]|0)+1;c[g>>2]=(c[g>>2]|0)+1}dp(k,i)}i=Gx(d,i)|0}m=Ty(d,m)|0}f=c[(c[v>>2]|0)+140>>2]|0;g=c[f>>2]|0;if(g|0){i=uH((c[f+4>>2]<<4)+16|0)|0;c[c[(c[w>>2]|0)+140>>2]>>2]=i;f=0;while(1){if(!(c[g>>2]|0))break;m=c[(c[(c[g+4>>2]|0)+16>>2]|0)+164>>2]|0;if(m){ep(d,g);n=bp(x,190692)|0;o=n+16|0;c[(c[o>>2]|0)+120>>2]=j;if(n>>>0>m>>>0)k=Rx(x,m,n,0,1)|0;else k=Rx(x,n,m,0,1)|0;Az(k,134378,176,1)|0;u=c[g>>2]|0;t=c[u+16>>2]|0;v=c[k+16>>2]|0;h[v+136>>3]=+h[t+136>>3];h[v+128>>3]=+h[t+128>>3];dp(k,u);u=c[(c[o>>2]|0)+112>>2]|0;v=u+4|0;c[v>>2]=(c[v>>2]|0)+1;v=c[(c[m+16>>2]|0)+112>>2]|0;t=v+4|0;c[t>>2]=(c[t>>2]|0)+1;c[u>>2]=(c[u>>2]|0)+1;c[v>>2]=(c[v>>2]|0)+1;c[i+4>>2]=n;h[i+8>>3]=+h[g+8>>3];c[i>>2]=k;f=f+1|0;i=i+16|0;j=j+1|0}g=g+16|0}c[(c[(c[w>>2]|0)+140>>2]|0)+4>>2]=f}l=y;return x|0}function Uo(a,b){a=a|0;b=b|0;var d=0.0,e=0,f=0,g=0,i=0,j=0,k=0,l=0;l=c[a+16>>2]|0;k=c[l+212>>2]|0;l=c[(c[l+112>>2]|0)+4>>2]|0;do if(l|0){j=uH((l<<4)+16|0)|0;f=Zo(a,b)|0;g=f+8|0;b=0;e=f;while(1){if(!(c[e>>2]|0))break;i=e+24|0;if(!(c[i>>2]|0))d=+h[g>>3]+6.283185307179586;else d=+h[e+32>>3];b=_o(a,e,j,b,d)|0;e=i}if((b|0)==(l|0)){a=c[(c[k+16>>2]|0)+140>>2]|0;c[a>>2]=j;c[a+4>>2]=l;D_(f);break}else qa(90656,90666,766,90675)}while(0);return k|0}function Vo(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0.0,j=0,k=0.0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0.0,H=0.0;B=l;l=l+32|0;x=B+16|0;A=B;m=c[g+8>>2]|0;j=c[g+12>>2]|0;y=(c[g>>2]|0)==(f|0);z=(b|0)!=0;a:do if(z){p=c[(c[d>>2]|0)+16>>2]|0;k=+h[p+16>>3];m=~~(k+(k>=0.0?.5:-.5));c[A>>2]=m;k=+h[p+24>>3];g=~~(k+(k>=0.0?.5:-.5));u=A+4|0;c[u>>2]=g;k=+h[p+32>>3];n=~~(k+(k>=0.0?.5:-.5));v=A+8|0;c[v>>2]=n;k=+h[p+40>>3];p=~~(k+(k>=0.0?.5:-.5));w=A+12|0;c[w>>2]=p;if((b|0)>1){q=c[e>>2]|0;t=c[e+4>>2]|0;m=q+m|0;c[A>>2]=m;b=t+g|0;c[u>>2]=b;n=q+n|0;c[v>>2]=n;q=x+4|0;r=x+8|0;s=x+12|0;o=e;g=d;t=t+p|0;p=b;while(1){g=g+4|0;j=o+8|0;c[w>>2]=t;b=c[g>>2]|0;if(!b){j=0;r=p;s=t;break a}E=c[b+16>>2]|0;G=+h[E+16>>3];i=+h[E+24>>3];k=+h[E+32>>3];H=+h[E+40>>3];E=~~(H+(H>=0.0?.5:-.5));c[s>>2]=E;b=c[j>>2]|0;F=c[o+12>>2]|0;D=b+~~(G+(G>=0.0?.5:-.5))|0;c[x>>2]=D;C=F+~~(i+(i>=0.0?.5:-.5))|0;c[q>>2]=C;b=b+~~(k+(k>=0.0?.5:-.5))|0;c[r>>2]=b;E=F+E|0;c[s>>2]=E;D=c[((m|0)<(D|0)?A:x)>>2]|0;c[A>>2]=D;C=c[((p|0)<(C|0)?A:x)+4>>2]|0;c[u>>2]=C;b=c[((n|0)>(b|0)?A:x)+8>>2]|0;c[v>>2]=b;o=j;t=c[((t|0)>(E|0)?A:x)+12>>2]|0;m=D;p=C;n=b}}else{j=0;r=g;s=p}}else{c[A>>2]=0;c[A+4>>2]=0;n=KL(f,m,54,3)|0;c[A+8>>2]=n;s=KL(f,j,36,3)|0;c[A+12>>2]=s;j=1;m=0;r=0}while(0);b=f+16|0;o=c[b>>2]|0;g=c[o+12>>2]|0;if(g){H=+h[g+24>>3];g=m-n+~~(H+(H>=0.0?.5:-.5))|0;if((g|0)>0){g=g>>>1;m=m-g|0;c[A>>2]=m;n=n+g|0;c[A+8>>2]=n;g=0}else g=0}else g=j;if(y|(g|0)!=0){j=0;g=o}else{j=KL(a,c[46374]|0,8,0)|0;g=c[b>>2]|0}q=j-m|0;p=~~(+h[g+56>>3]+ +(j-r|0));c[A>>2]=0;c[A+4>>2]=0;o=q+j+n|0;c[A+8>>2]=o;b=~~(+h[g+88>>3]+ +(j+p|0)+ +(s|0));c[A+12>>2]=b;b:do if(z){g=e;c:while(1){n=d+4|0;j=c[d>>2]|0;if(!j)break b;if(!g){m=0;d=q;g=p}else{m=g+8|0;d=(c[g>>2]|0)+q|0;g=(c[g+4>>2]|0)+p|0}k=+(d|0)*.013888888888888888;i=+(g|0)*.013888888888888888;d=Sy(j)|0;while(1){if(!d){d=n;g=m;continue c}F=c[(c[d+16>>2]|0)+132>>2]|0;h[F>>3]=+h[F>>3]+k;F=F+8|0;h[F>>3]=+h[F>>3]+i;d=Ty(j,d)|0}}}while(0);F=c[(c[a+16>>2]|0)+140>>2]|0;E=F+8|0;c[E>>2]=0;c[E+4>>2]=0;c[E+8>>2]=0;c[E+12>>2]=0;h[F+24>>3]=+(o|0)*.013888888888888888;h[F+32>>3]=+(b|0)*.013888888888888888;l=B;return}function Wo(a,b){a=a|0;b=b|0;var d=0,e=0;while(1){d=c[b>>2]|0;if(!d)break;Xo(d);Cz(d,134401)|0;b=b+4|0}b=c[c[(c[a+16>>2]|0)+140>>2]>>2]|0;if(b|0)D_(b);Xo(a);Cz(a,134401)|0;d=Sy(a)|0;while(1){if(!d)break;e=Ty(a,d)|0;b=Ex(a,d)|0;while(1){if(!b)break;D_(c[(c[b+16>>2]|0)+172>>2]|0);Cz(b,134378)|0;b=Gx(a,b)|0}Yo(d);d=e}$x(a)|0;return}function Xo(a){a=a|0;D_(c[(c[a+16>>2]|0)+140>>2]|0);return}function Yo(a){a=a|0;var b=0;b=a+16|0;D_(c[(c[b>>2]|0)+112>>2]|0);D_(c[(c[b>>2]|0)+132>>2]|0);Cz(a,134365)|0;return}function Zo(a,b){a=a|0;b=b|0;var d=0.0,e=0,f=0,g=0.0,i=0,j=0,k=0,l=0,m=0;k=a+16|0;l=c[c[(c[k>>2]|0)+112>>2]>>2]|0;m=uH((l*24|0)+24|0)|0;i=0;j=Jx(b,a)|0;while(1){if(!j)break;f=c[j>>2]&3;e=c[((f|0)==2?j:j+-48|0)+40>>2]|0;if((e|0)==(a|0))e=c[((f|0)==3?j:j+48|0)+40>>2]|0;e=c[(c[e+16>>2]|0)+132>>2]|0;f=c[(c[k>>2]|0)+132>>2]|0;g=+h[e>>3]-+h[f>>3];d=+h[e+8>>3]-+h[f+8>>3];c[m+(i*24|0)>>2]=j;h[m+(i*24|0)+8>>3]=+K(+d,+g);h[m+(i*24|0)+16>>3]=d*d+g*g;i=i+1|0;j=Kx(b,j,a)|0}if((i|0)!=(l|0))qa(90689,90666,642,90698);_0(m,l,24,67);a:do if((l|0)>1){j=l+-1|0;e=0;b:while(1){if((e|0)>=(j|0))break a;g=+h[m+(e*24|0)+8>>3];f=e+1|0;i=f;while(1){if((i|0)>=(l|0))break;if(!(+h[m+(i*24|0)+8>>3]==g))break;i=i+1|0}if((i|0)==(f|0)){e=f;continue}if((i|0)==(l|0))d=3.141592653589793;else d=+h[m+(i*24|0)+8>>3];d=(d-g)/+(i-e|0);d=d>.03490658503988659?.03490658503988659:d;g=0.0;while(1){if((e|0)>=(i|0))continue b;k=m+(e*24|0)+8|0;h[k>>3]=+h[k>>3]+g;g=g+d;e=e+1|0}}}while(0);return m|0}function _o(a,d,e,f,g){a=a|0;d=d|0;e=e|0;f=f|0;g=+g;var i=0,j=0,k=0,l=0.0,m=0,n=0,o=0,p=0.0,q=0;k=c[d>>2]|0;n=c[k+16>>2]|0;m=b[n+168>>1]|0;o=m<<16>>16;j=c[k>>2]&3;i=c[((j|0)==2?k:k+-48|0)+40>>2]|0;if((i|0)==(a|0))i=c[((j|0)==3?k:k+48|0)+40>>2]|0;p=+h[d+8>>3];g=(g-p)/+(m<<16>>16);g=g>.03490658503988659?.03490658503988659:g;m=i>>>0>a>>>0;l=m?g:-g;d=m?1:-1;k=0;i=c[n+172>>2]|0;j=m?f:f+-1+o|0;g=m?p:g*+(o+-1|0)+p;while(1){if((k|0)>=(o|0))break;n=c[i>>2]|0;c[e+(j<<4)>>2]=n;m=c[n>>2]&3;q=(m|0)==3?n:n+48|0;c[e+(j<<4)+4>>2]=c[((c[(c[(c[q+40>>2]|0)+16>>2]|0)+164>>2]|0)==(a|0)?q:(m|0)==2?n:n+-48|0)+40>>2];h[e+(j<<4)+8>>3]=g;k=k+1|0;i=i+4|0;j=j+d|0;g=g+l}return o+f|0}function $o(a,b){a=a|0;b=b|0;var c=0.0,d=0.0;c=+h[a+8>>3];d=+h[b+8>>3];if(!(c>d))if(!(c>3];c=+h[b+16>>3];if(d>c)a=1;else a=(d>31}else a=-1;else a=1;return a|0}function ap(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;d=nx(a,0,c,0)|0;do if(d|0){a=yx(a,d)|0;d=nx(b,0,c,0)|0;if(!d){nx(b,0,c,a)|0;break}else{rx(b,d,a)|0;break}}while(0);return}function bp(a,b){a=a|0;b=b|0;var d=0,f=0;b=az(a,b,1)|0;Az(b,134365,304,1)|0;f=uH(32)|0;d=b+16|0;c[(c[d>>2]|0)+112>>2]=f;a=vH((e[(c[a+16>>2]|0)+176>>1]|0)<<3)|0;c[(c[d>>2]|0)+132>>2]=a;return b|0}function cp(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0.0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;q=l;l=l+80|0;n=q+56|0;m=q+32|0;p=q;o=q+64|0;i=c[e+4>>2]|0;k=yx(b,i)|0;do if(a[k>>0]|0){if((c[e>>2]|0)!=(b|0)){e=yx(yA(b)|0,i)|0;if((e|0)==(k|0))break;if(!(b$(k,e)|0))break}a[o>>0]=0;e=p+8|0;i=p+16|0;j=p+24|0;c[m>>2]=p;c[m+4>>2]=e;c[m+8>>2]=i;c[m+12>>2]=j;c[m+16>>2]=o;if((N1(k,90851,m)|0)<=3){c[n>>2]=ry(b)|0;c[n+4>>2]=k;Pw(0,90869,n)|0;break}g=+h[22908];if(g>0.0){h[p>>3]=+h[p>>3]/g;h[e>>3]=+h[e>>3]/g;h[i>>3]=+h[i>>3]/g;h[j>>3]=+h[j>>3]/g}e=a[o>>0]|0;if(e<<24>>24==33)a[(c[d+16>>2]|0)+119>>0]=3;else a[(c[d+16>>2]|0)+119>>0]=e<<24>>24==63?2:1;c[f>>2]=c[p>>2];c[f+4>>2]=c[p+4>>2];c[f+8>>2]=c[p+8>>2];c[f+12>>2]=c[p+12>>2];c[f+16>>2]=c[p+16>>2];c[f+20>>2]=c[p+20>>2];c[f+24>>2]=c[p+24>>2];c[f+28>>2]=c[p+28>>2]}while(0);l=q;return}function dp(a,d){a=a|0;d=d|0;var e=0,f=0,g=0;g=a+16|0;f=c[g>>2]|0;a=b[f+168>>1]|0;f=c[f+172>>2]|0;if(!f){a=a<<16>>16;e=a;a=vH((a<<2)+4|0)|0}else{a=a<<16>>16;e=a;a=xH(f,(a<<2)+4|0)|0}c[a+(e<<2)>>2]=d;d=c[g>>2]|0;c[d+172>>2]=a;d=d+168|0;b[d>>1]=(b[d>>1]|0)+1<<16>>16;return}function ep(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;i=l;l=l+48|0;h=i+24|0;g=i;e=c[b>>2]|0;d=c[e>>2]&3;f=c[((d|0)==2?e:e+-48|0)+40>>2]|0;d=c[((d|0)==3?e:e+48|0)+40>>2]|0;b=W_(ry(a)|0)|0;j=W_(ry(f)|0)|0;j=(b+8+j+(W_(ry(d)|0)|0)|0)>999;b=ry(a)|0;if(j){d=ry(d)|0;j=ry(f)|0;h=(c[e>>2]|0)>>>4;c[g>>2]=b;c[g+4>>2]=d;c[g+8>>2]=j;j=g+16|0;c[j>>2]=h;c[j+4>>2]=0;Y0(190692,90809,g)|0}else{d=c[(c[d+16>>2]|0)+120>>2]|0;j=c[(c[f+16>>2]|0)+120>>2]|0;g=(c[e>>2]|0)>>>4;c[h>>2]=b;c[h+4>>2]=d;c[h+8>>2]=j;j=h+16|0;c[j>>2]=g;c[j+4>>2]=0;Y0(190692,90828,h)|0}l=i;return}function fp(a){a=a|0;var d=0,e=0,f=0.0,g=0.0,i=0,j=0,k=0;j=4;i=C_(40)|0;c[i>>2]=0;g=+h[22908];o=0;f=+Z(1,a|0);d=o;o=0;if((d|0)!=0&(p|0)!=0){e=E3(c[d>>2]|0,i|0,j|0)|0;if(!e)bb(d|0,p|0);z=p}else e=-1;if((e|0)!=1){h[22908]=f;o=0;ia(100,a|0);d=o;o=0;if((d|0)!=0&(p|0)!=0){e=E3(c[d>>2]|0,i|0,j|0)|0;if(!e)bb(d|0,p|0);z=p}else e=-1;if((e|0)!=1){i=D3(184132,1,i|0,j|0)|0;j=z;o=0;e=o;o=0;if((e|0)!=0&(p|0)!=0){d=E3(c[e>>2]|0,i|0,j|0)|0;if(!d)bb(e|0,p|0);z=p}else d=-1;if((d|0)!=1)d=0;else d=z}else d=z}else d=z;while(1){if(d|0)break;o=0;ia(101,a|0);d=o;o=0;if((d|0)!=0&(p|0)!=0){e=E3(c[d>>2]|0,i|0,j|0)|0;if(!e)bb(d|0,p|0);z=p}else e=-1;if((e|0)==1){d=z;continue}o=0;$(22,a|0)|0;d=o;o=0;if((d|0)!=0&(p|0)!=0){e=E3(c[d>>2]|0,i|0,j|0)|0;if(!e)bb(d|0,p|0);z=p}else e=-1;if((e|0)==1){d=z;continue}if(b[(c[a+16>>2]|0)+136>>1]&14){o=0;ia(102,a|0);d=o;o=0;if((d|0)!=0&(p|0)!=0){e=E3(c[d>>2]|0,i|0,j|0)|0;if(!e)bb(d|0,p|0);z=p}else e=-1;if((e|0)==1){d=z;continue}}o=0;ja(22,a|0,0);d=o;o=0;if((d|0)!=0&(p|0)!=0){e=E3(c[d>>2]|0,i|0,j|0)|0;if(!e)bb(d|0,p|0);z=p}else e=-1;if((e|0)==1)d=z;else{k=12;break}}if((k|0)==12)h[22908]=g;D_(i|0);return}function gp(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=l;l=l+16|0;g=i;e=a+16|0;f=b[(c[e>>2]|0)+136>>1]&14;d=f&65535;if((f&65535)>8){if(f<<16>>16==12){if(Wm(a,22,10)|0){c[46363]=2;h=5}}else h=5;do if((h|0)==5)if(!(b[(c[e>>2]|0)+136>>1]&1)){Ym(a,d)|0;break}else{Pw(0,90912,g)|0;d=2;break}while(0);c[46363]=0}if((c[46367]|0)<1)Ym(a,d)|0;l=i;return}function hp(a){a=a|0;var b=0.0,d=0.0,e=0;e=l;l=l+16|0;c[45704]=1;c[45705]=1;c[45707]=-1;c[45709]=50;h[22860]=0.0;h[22855]=0.0;h[22856]=1.0;c[45708]=KL(a,nx(a,0,90975,0)|0,600,0)|0;d=+LL(a,nx(a,0,90983,0)|0,.3,0.0);h[22857]=d;h[1371]=d;if(-1.0==-1.0)b=+LL(a,nx(a,0,90985,0)|0,-1.0,0.0);else b=-1.0;h[22858]=b;c[45706]=1;a=om(a,2,182824)|0;c[45718]=a;if(!a){Pw(0,90988,e)|0;c[45706]=2}c[45734]=(O(c[45708]|0,c[45709]|0)|0)/100|0;d=+h[22857];h[22862]=d*d;if(c[45704]|0){b=+h[22860];if(b<=0.0){b=d*3.0;h[22860]=b}h[22861]=b*b}l=e;return}function ip(a,b){a=a|0;b=b|0;var d=0,e=0.0,f=0.0,g=0,i=0,j=0;j=l;l=l+16|0;d=j;g=c[c[(c[a+16>>2]|0)+140>>2]>>2]|0;i=jp(a,b)|0;kp(d,a,g);e=+h[d>>3];f=+h[d+8>>3];a:do if(!(c[45704]|0)){b=0;while(1){if((b|0)>=(c[45735]|0))break a;np(a,+lp(b),g);b=b+1|0}}else{d=Ku(ay(a)|0)|0;Pu(d,ay(a)|0);b=0;while(1){if((b|0)>=(c[45735]|0))break;mp(a,+lp(b),g,d);b=b+1|0}Ru(d)}while(0);b:do if(e!=0.0|f!=0.0){b=Sy(a)|0;while(1){if(!b)break b;g=c[(c[b+16>>2]|0)+132>>2]|0;h[g>>3]=+h[g>>3]+e;g=g+8|0;h[g>>3]=+h[g>>3]+f;b=Ty(a,b)|0}}while(0);if(i|0)op();l=j;return}function jp(a,b){a=a|0;b=b|0;var d=0.0,e=0,f=0,g=0,i=0,j=0;if(+h[22858]==-1.0){i=ay(a)|0;d=+h[22857];h[22858]=+h[22856]*.2*d*+C(+(+(i|0)));i=1}else{i=0;d=+h[22857]}g=c[45734]|0;h[b+8>>3]=+lp(g);h[b+16>>3]=d;h[b+24>>3]=+h[22855];e=c[45708]|0;a=e-g|0;c[b>>2]=a;f=c[45707]|0;do if((f|0)>-1){if((f|0)<=(g|0)){c[45735]=f;a=0;j=10;break}if((f|0)<=(e|0)){c[45735]=g;a=f-g|0;j=10}}else{c[45735]=g;j=10}while(0);if((j|0)==10)c[b+32>>2]=a;return i|0}function kp(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0.0,j=0.0,k=0,l=0.0,m=0.0,n=0,o=0.0,p=0.0,q=0,r=0,s=0.0,t=0.0,u=0,v=0,w=0.0,x=0,y=0,z=0;v=ay(d)|0;x=c[(c[(c[d+16>>2]|0)+140>>2]|0)+4>>2]|0;u=Sy(d)|0;q=0;r=0;g=0;k=0;n=0;while(1){if(!u)break;f=c[u+16>>2]|0;if(!(a[f+119>>0]|0))f=r;else{f=c[f+132>>2]|0;i=+h[f>>3];if(!q){k=~~i;g=~~+h[f+8>>3];n=g;f=k}else{p=+(r|0);s=+h[f+8>>3];t=+(g|0);w=+(k|0);o=+(n|0);n=~~(s>o?s:o);f=~~(iw?i:w)}q=q+1|0}u=Ty(d,u)|0;r=f}i=+h[22857]*(+C(+(+(v-x|0)))+1.0);s=i*.6;h[22864]=s;h[22863]=s;if((q|0)!=1)if((q|0)>1){t=+(k+r|0)*.5;w=+(n+g|0)*.5;o=+(k-r|0);p=o*1.2;l=+(n-g|0);m=l*1.2;i=i*2.4*s;j=m*p/i;do if(!(j>=1.0)){if(j>0.0){i=+C(+j)*2.0;j=p/i;h[22863]=j;i=m/i;z=20;break}if(p>0.0){j=o*.6;h[22863]=j;i=i/p*.5;z=20;break}if(m>0.0){j=i/m*.5;h[22863]=j;i=l*.6;z=20}else{i=s;j=s}}else{j=o*.6;h[22863]=j;i=l*.6;z=20}while(0);if((z|0)==20)h[22864]=i;s=+K(+i,+j);j=j/+E(+s);h[22863]=j;i=i/+F(+s);h[22864]=i}else{t=0.0;w=0.0;j=s;i=s}else{t=+(r|0);w=+(g|0);j=s;i=s}h[22865]=j*j;h[22866]=i*i;if((c[45718]|0)==2)f=c[45706]|0;else{f=H1()|0;f=(db(0)|0)^f}i2(f);a:do if(!e){e=Sy(d)|0;if(!q)while(1){if(!e)break a;s=+h[22863];s=(+k2()*2.0+-1.0)*s;z=e+16|0;h[c[(c[z>>2]|0)+132>>2]>>3]=s;s=+h[22864];s=(+k2()*2.0+-1.0)*s;h[(c[(c[z>>2]|0)+132>>2]|0)+8>>3]=s;e=Ty(d,e)|0}while(1){if(!e)break a;f=e+16|0;g=c[f>>2]|0;if(!(a[g+119>>0]|0)){s=+h[22863];s=(+k2()*2.0+-1.0)*s;h[c[(c[f>>2]|0)+132>>2]>>3]=s;s=+h[22864];s=(+k2()*2.0+-1.0)*s;h[(c[(c[f>>2]|0)+132>>2]|0)+8>>3]=s}else{z=c[g+132>>2]|0;h[z>>3]=+h[z>>3]-t;z=z+8|0;h[z>>3]=+h[z>>3]-w}e=Ty(d,e)|0}}else{while(1){if(!(c[e>>2]|0))break;u=e+8|0;s=+E(+(+h[u>>3]))*+h[22863]+t;x=c[(c[e+4>>2]|0)+16>>2]|0;v=c[x+132>>2]|0;h[v>>3]=s;h[v+8>>3]=+F(+(+h[u>>3]))*+h[22864]+w;a[x+119>>0]=1;e=e+16|0}l=t*.1;m=w*.1;r=Sy(d)|0;while(1){if(!r)break a;q=r+16|0;e=c[q>>2]|0;if(!((c[(c[e+112>>2]|0)+8>>2]|0)==0?!(c[e+212>>2]|0):0))z=32;do if((z|0)==32){z=0;if(a[e+119>>0]|0){x=c[e+132>>2]|0;h[x>>3]=+h[x>>3]-t;x=x+8|0;h[x>>3]=+h[x>>3]-w;break}n=Jx(d,r)|0;e=0;j=0.0;i=0.0;while(1){if(!n)break;k=c[n>>2]&3;f=(k|0)==2?n:n+-48|0;g=c[f+40>>2]|0;k=(k|0)==3?n:n+48|0;do if((g|0)!=(c[k+40>>2]|0)?(y=c[(c[((g|0)==(r|0)?k:f)+40>>2]|0)+16>>2]|0,(a[y+119>>0]|0)!=0):0)if(!e){x=c[y+132>>2]|0;e=1;j=+h[x>>3];i=+h[x+8>>3];break}else{p=+(e|0);x=c[y+132>>2]|0;e=e+1|0;s=+(e|0);j=(+h[x>>3]+j*p)/s;i=(+h[x+8>>3]+i*p)/s;break}while(0);n=Kx(d,n,r)|0}do if((e|0)<=1)if((e|0)==1){f=c[q>>2]|0;e=c[f+132>>2]|0;h[e>>3]=j*.98+l;i=i*.9+m;break}else{i=+k2()*6.283185307179586;s=+k2()*.9;p=s*+h[22863]*+E(+i);f=c[q>>2]|0;e=c[f+132>>2]|0;h[e>>3]=p;i=+h[22864]*s*+F(+i);break}else{f=c[q>>2]|0;e=c[f+132>>2]|0;h[e>>3]=j}while(0);h[e+8>>3]=i;a[f+119>>0]=1}while(0);r=Ty(d,r)|0}}while(0);h[b>>3]=t;h[b+8>>3]=w;return}function lp(a){a=a|0;var b=0;b=c[45708]|0;return +(+h[22858]*+(b-a|0)/+(b|0))}function mp(a,b,d,e){a=a|0;b=+b;d=d|0;e=e|0;var f=0,g=0,i=0,j=0.0;if(!(b<=0.0)){Qu(e);f=Sy(a)|0;while(1){if(!f)break;i=c[f+16>>2]|0;g=(c[i+112>>2]|0)+16|0;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;c[g+12>>2]=0;i=c[i+132>>2]|0;j=+h[22860];g=~~+A(+(+h[i>>3]/j));Tu(e,g,~~+A(+(+h[i+8>>3]/j)),f);f=Ty(a,f)|0}g=Sy(a)|0;while(1){if(!g)break;f=Ex(a,g)|0;while(1){if(!f)break;i=c[((c[f>>2]&3|0)==2?f:f+-48|0)+40>>2]|0;if((g|0)!=(i|0))qp(g,i,f);f=Gx(a,f)|0}g=Ty(a,g)|0}Vu(e,23);rp(a,b,d)}return}function np(a,b,d){a=a|0;b=+b;d=d|0;var e=0,f=0,g=0;if(!(b<=0.0)){e=Sy(a)|0;while(1){if(!e)break;g=(c[(c[e+16>>2]|0)+112>>2]|0)+16|0;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;c[g+12>>2]=0;e=Ty(a,e)|0}g=Sy(a)|0;while(1){if(!g)break;else e=g;while(1){e=Ty(a,e)|0;if(!e)break;pp(g,e)}e=Ex(a,g)|0;while(1){if(!e)break;f=c[((c[e>>2]&3|0)==2?e:e+-48|0)+40>>2]|0;if((g|0)!=(f|0))qp(g,f,e);e=Gx(a,e)|0}g=Ty(a,g)|0}rp(a,b,d)}return}function op(){h[22858]=-1.0;return}function pp(a,b){a=a|0;b=b|0;var d=0.0,e=0.0,f=0,g=0;g=c[(c[b+16>>2]|0)+132>>2]|0;f=c[(c[a+16>>2]|0)+132>>2]|0;d=+h[g>>3]-+h[f>>3];e=+h[g+8>>3]-+h[f+8>>3];sp(a,b,d,e,e*e+d*d);return}function qp(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0.0,g=0.0,i=0.0,j=0,k=0;j=b+16|0;k=c[(c[j>>2]|0)+132>>2]|0;a=a+16|0;b=c[(c[a>>2]|0)+132>>2]|0;e=+h[k>>3]-+h[b>>3];f=+h[k+8>>3]-+h[b+8>>3];g=e;i=f;e=e*e;f=f*f;while(1){e=e+f;if(!(e==0.0))break;e=+(5-((g2()|0)%10|0)|0);f=+(5-((g2()|0)%10|0)|0);g=e;i=f;e=e*e;f=f*f}f=+C(+e);b=c[d+16>>2]|0;e=+h[b+128>>3];if(!(c[45705]|0))e=e*f/+h[b+136>>3];else e=(f-+h[b+136>>3])*e/f;g=e*g;k=c[(c[j>>2]|0)+112>>2]|0;j=k+16|0;h[j>>3]=+h[j>>3]-g;i=e*i;k=k+24|0;h[k>>3]=+h[k>>3]-i;k=c[(c[a>>2]|0)+112>>2]|0;j=k+16|0;h[j>>3]=+h[j>>3]+g;k=k+24|0;h[k>>3]=+h[k>>3]+i;return}function rp(b,d,e){b=b|0;d=+d;e=e|0;var f=0.0,g=0.0,i=0.0,j=0.0,k=0,l=0,m=0,n=0,o=0.0;o=d*d;n=(e|0)==0;m=Sy(b)|0;while(1){if(!m)break;l=c[m+16>>2]|0;if(!(a[l+119>>0]&2)){k=c[l+112>>2]|0;f=+h[k+16>>3];i=+h[k+24>>3];g=i*i+f*f;if(g>2]|0;j=+h[e>>3]+f;f=+h[e+8>>3]+i}else{g=d/+C(+g);e=c[l+132>>2]|0;j=+h[e>>3]+g*f;f=+h[e+8>>3]+g*i}do if(!n){g=+C(+(f*f/+h[22866]+j*j/+h[22865]));if((c[k+8>>2]|0)==0?(c[l+212>>2]|0)==0:0){h[e>>3]=j/g;f=f/g;break}if(!(g>=1.0)){h[e>>3]=j;break}else{h[e>>3]=j*.95/g;f=f*.95/g;break}}else h[e>>3]=j;while(0);h[e+8>>3]=f}m=Ty(b,m)|0}return}function sp(a,b,d,e,f){a=a|0;b=b|0;d=+d;e=+e;f=+f;var g=0.0,i=0,j=0;g=d;d=f;while(1){if(!(d==0.0))break;d=+(5-((g2()|0)%10|0)|0);e=+(5-((g2()|0)%10|0)|0);g=d;d=e*e+d*d}if(!(c[45705]|0))d=+h[22862]/d;else{f=+C(+d);d=+h[22862]/(f*d)}j=c[a+16>>2]|0;a=c[j+112>>2]|0;if(((c[a+8>>2]|0)==0?(c[j+212>>2]|0)==0:0)?(i=c[b+16>>2]|0,(c[(c[i+112>>2]|0)+8>>2]|0)==0):0)d=(c[i+212>>2]|0)==0?d*10.0:d;f=d*g;j=c[(c[b+16>>2]|0)+112>>2]|0;b=j+16|0;h[b>>3]=+h[b>>3]+f;g=d*e;j=j+24|0;h[j>>3]=+h[j>>3]+g;j=a+16|0;h[j>>3]=+h[j>>3]-f;j=a+24|0;h[j>>3]=+h[j>>3]-g;return}function tp(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;f=c[b+8>>2]|0;g=c[b>>2]|0;e=c[b+4>>2]|0;b=f;while(1){if(!b)break;a=f;while(1){if(!a)break;if((b|0)!=(a|0))pp(c[b>>2]|0,c[a>>2]|0);a=c[a+4>>2]|0}b=c[b+4>>2]|0}h=g+-1|0;a=e+-1|0;up(d,h,a,f);up(d,h,e,f);b=e+1|0;up(d,h,b,f);up(d,g,a,f);up(d,g,b,f);g=g+1|0;up(d,g,a,f);up(d,g,e,f);up(d,g,b,f);return 0}function up(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,g=0.0,i=0.0,j=0,k=0,l=0,m=0;a=Wu(a,b,d)|0;if((e|0)!=0&(a|0)!=0){k=a+8|0;do{d=c[e>>2]|0;j=d+16|0;a=k;while(1){a=c[a>>2]|0;if(!a)break;b=c[a>>2]|0;m=c[(c[b+16>>2]|0)+132>>2]|0;l=c[(c[j>>2]|0)+132>>2]|0;f=+h[m>>3]-+h[l>>3];g=+h[m+8>>3]-+h[l+8>>3];i=g*g+f*f;if(i<+h[22861])sp(d,b,f,g,i);a=a+4|0}e=c[e+4>>2]|0}while((e|0)!=0)}return}function vp(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;h=l;l=l+16|0;g=h;e=xx(b,91095)|0;if(0)E1(91032,8,1,c[15686]|0)|0;if(!((e|0)!=0?(a[e>>0]|0)!=0:0))e=91041;f=A$(e,58)|0;do if(!f)f=0;else{if((f|0)!=(e|0)?((a[e>>0]|0)+-48|0)>>>0>=10:0){f=0;break}i=a2(e)|0;e=f+1|0;f=(i|0)>0?i:0}while(0);if(0){i=c[15686]|0;c[g>>2]=f;c[g+4>>2]=e;g1(i,91049,g)|0}if(!((f|0)!=0?!(wp(b,d,f)|0):0))sq(b,e)|0;l=h;return}function wp(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,i=0,j=0,k=0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0,s=0,t=0;t=l;l=l+64|0;r=t;j=t+40|0;s=ay(b)|0;k=by(b)|0;qq(j,b);c[46072]=c[j>>2];c[46073]=c[j+4>>2];c[46074]=c[j+8>>2];if(a[184296]|0){g[46072]=+g[46072]*.013888888888888888;g[46073]=+g[46073]*.013888888888888888}f=xp(b)|0;a:do if(!f)f=0;else{j=r;i=j+40|0;do{c[j>>2]=c[d>>2];j=j+4|0;d=d+4|0}while((j|0)<(i|0));j=r+16|0;q=+h[j>>3];o=+(k|0)*2.0;p=1.0/+(O(s+-1|0,s)|0);i=0;n=q;while(1){if(!((f|0)!=0&(i|0)<(e|0)))break a;yp(s,r);m=+h[22868]*+h[170];h[22869]=m;h[22870]=o*m*p;d=0;while(1){if((d|0)>=(c[45742]|0))break;m=+zp(d);if(m<=0.0)break;f=Ap(b,m)|0;if(!f){f=0;break}else d=d+1|0}m=n+q;h[j>>3]=m;i=i+1|0;n=m}}while(0);l=t;return f|0}function xp(a){a=a|0;var b=0,c=0,d=0,e=0;b=0;e=Sy(a)|0;while(1){if(!e)break;else d=e;while(1){c=Ty(a,d)|0;if(!c)break;d=c;b=(Dp(e,c)|0)+b|0}e=Ty(a,e)|0}return b|0}function yp(a,b){a=a|0;b=b|0;var d=0.0,e=0.0,f=0.0;e=+h[b+16>>3];h[171]=e;c[344]=c[b>>2];f=+h[b+8>>3];h[22872]=f;c[45742]=c[b+32>>2];d=+h[b+24>>3];if(d>0.0)h[170]=d;h[22868]=e*e;if(f==0.0)h[22872]=+C(+(+(a|0)))*.2*e;return}function zp(a){a=a|0;var b=0;b=c[344]|0;return +(+h[22872]*+(b-a|0)/+(b|0))}function Ap(b,d){b=b|0;d=+d;var e=0,f=0,g=0,i=0.0,j=0,k=0.0,l=0.0,m=0.0;e=Sy(b)|0;while(1){if(!e)break;j=(c[(c[e+16>>2]|0)+112>>2]|0)+16|0;c[j>>2]=0;c[j+4>>2]=0;c[j+8>>2]=0;c[j+12>>2]=0;e=Ty(b,e)|0}e=0;j=Sy(b)|0;while(1){if(!j)break;else g=j;while(1){f=Ty(b,g)|0;if(!f)break;g=f;e=(Bp(j,f)|0)+e|0}f=Ex(b,j)|0;while(1){if(!f)break;Cp(j,c[((c[f>>2]&3|0)==2?f:f+-48|0)+40>>2]|0);f=Gx(b,f)|0}j=Ty(b,j)|0}a:do if(!e)e=0;else{m=d*d;g=Sy(b)|0;while(1){if(!g)break a;f=c[g+16>>2]|0;if((a[f+119>>0]|0)!=3){j=c[f+112>>2]|0;k=+h[j+16>>3];i=+h[j+24>>3];l=i*i+k*k;if(l>2]|0;h[f>>3]=+h[f>>3]+k}else{l=+C(+l);f=c[f+132>>2]|0;h[f>>3]=+h[f>>3]+k*d/l;i=i*d/l}j=f+8|0;h[j>>3]=+h[j>>3]+i}g=Ty(b,g)|0}}while(0);return e|0}function Bp(a,b){a=a|0;b=b|0;var d=0.0,e=0.0,f=0,g=0;g=c[(c[b+16>>2]|0)+132>>2]|0;f=c[(c[a+16>>2]|0)+132>>2]|0;d=+h[g>>3]-+h[f>>3];e=+h[g+8>>3]-+h[f+8>>3];return Fp(a,b,d,e,e*e+d*d)|0}function Cp(a,b){a=a|0;b=b|0;var d=0.0,e=0.0,f=0,g=0.0,i=0,j=0.0,k=0.0,l=0,m=0;if(!(Dp(a,b)|0)){i=c[b+16>>2]|0;m=c[i+132>>2]|0;f=c[a+16>>2]|0;l=c[f+132>>2]|0;e=+h[m>>3]-+h[l>>3];d=+h[m+8>>3]-+h[l+8>>3];g=+C(+(d*d+e*e));j=+Ep(a);j=+Ep(b)+j;k=g-j;g=k*k/((+h[171]+j)*g);e=g*e;b=c[i+112>>2]|0;a=b+16|0;h[a>>3]=+h[a>>3]-e;d=g*d;b=b+24|0;h[b>>3]=+h[b>>3]-d;b=c[f+112>>2]|0;a=b+16|0;h[a>>3]=+h[a>>3]+e;b=b+24|0;h[b>>3]=+h[b>>3]+d}return}function Dp(b,d){b=b|0;d=d|0;var e=0.0,f=0.0,i=0.0,j=0.0,k=0,l=0;k=c[d+16>>2]|0;l=c[k+132>>2]|0;d=c[b+16>>2]|0;b=c[d+132>>2]|0;i=+h[l>>3]-+h[b>>3];j=+h[l+8>>3]-+h[b+8>>3];j=j<0.0?-j:j;b=(a[184296]|0)==0;e=+h[d+32>>3];if(b){f=+g[46072];e=e*.5*f;f=+h[k+32>>3]*.5*f}else{f=+g[46072];e=e*.5+f;f=+h[k+32>>3]*.5+f}if(!((i<0.0?-i:i)<=f+e))d=0;else{e=+h[d+40>>3];if(b){i=+g[46073];f=e*.5*i;e=+h[k+40>>3]*.5*i}else{i=+g[46073];f=e*.5+i;e=+h[k+40>>3]*.5+i}d=j<=e+f&1}return d|0}function Ep(b){b=b|0;var d=0.0,e=0.0;b=c[b+16>>2]|0;d=+h[b+32>>3];if(!(a[184296]|0)){e=d*.5*+g[46072];d=+h[b+40>>3]*.5*+g[46073]}else{e=d*.5+ +g[46072];d=+h[b+40>>3]*.5+ +g[46073]}return +(+C(+(d*d+e*e)))}function Fp(a,b,d,e,f){a=a|0;b=b|0;d=+d;e=+e;f=+f;var g=0,i=0;while(1){if(!(f==0.0))break;f=+(5-((g2()|0)%10|0)|0);e=+(5-((g2()|0)%10|0)|0);d=f;f=e*e+f*f}g=Dp(a,b)|0;f=((g|0)==0?+h[22870]:+h[22869])/f;d=f*d;b=c[(c[b+16>>2]|0)+112>>2]|0;i=b+16|0;h[i>>3]=+h[i>>3]+d;f=f*e;b=b+24|0;h[b>>3]=+h[b>>3]+f;b=c[(c[a+16>>2]|0)+112>>2]|0;a=b+16|0;h[a>>3]=+h[a>>3]-d;b=b+24|0;h[b>>3]=+h[b>>3]-f;return g|0}function Gp(a){a=a|0;$M(a,2);b[(c[a+16>>2]|0)+176>>1]=2;c[46366]=2;Hp(a);return}function Hp(a){a=a|0;var b=0,d=0,e=0,f=0;e=uH((ay(a)|0)<<2)|0;b=uH(((ay(a)|0)<<2)+4|0)|0;f=a+16|0;c[(c[f>>2]|0)+152>>2]=b;b=Sy(a)|0;d=0;while(1){if(!b)break;$l(b);c[(c[b+16>>2]|0)+112>>2]=e+(d<<2);c[(c[(c[f>>2]|0)+152>>2]|0)+(d<<2)>>2]=b;b=Ty(a,b)|0;d=d+1|0}d=Sy(a)|0;while(1){if(!d)break;b=Ex(a,d)|0;while(1){if(!b)break;Ip(b);b=Gx(a,b)|0}d=Ty(a,d)|0}return}function Ip(a){a=a|0;var b=0.0;Az(a,134378,176,1)|0;eM(a)|0;b=+LL(a,c[46404]|0,1.0,0.0);h[(c[a+16>>2]|0)+128>>3]=b;return}function Jp(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+16|0;m=n+4|0;k=n;a[m>>0]=a[18492]|0;a[m+1>>0]=a[18493]|0;a[m+2>>0]=a[18494]|0;a[m+3>>0]=a[18495]|0;m=Xx(91072,m,0)|0;Az(m,91080,280,1)|0;c[(c[b+16>>2]|0)+140>>2]=m;e=Sy(b)|0;while(1){if(!e)break;f=e+16|0;if(!(c[c[(c[f>>2]|0)+112>>2]>>2]|0)){j=Kp(m,ry(e)|0,e)|0;c[c[(c[f>>2]|0)+112>>2]>>2]=j}e=Ty(b,e)|0}f=Sy(b)|0;while(1){if(!f)break;e=Ex(b,f)|0;while(1){if(!e)break;h=c[e>>2]&3;g=c[c[(c[(c[((h|0)==3?e:e+48|0)+40>>2]|0)+16>>2]|0)+112>>2]>>2]|0;h=c[c[(c[(c[((h|0)==2?e:e+-48|0)+40>>2]|0)+16>>2]|0)+112>>2]>>2]|0;if((g|0)!=(h|0))Az(Rx(m,g,h,0,1)|0,134378,176,1)|0;e=Gx(b,e)|0}f=Ty(b,f)|0}j=oD(m,k,0)|0;f=0;while(1){if((f|0)>=(c[k>>2]|0))break;h=c[j+(f<<2)>>2]|0;e=Sy(h)|0;while(1){if(!e)break;g=Ex(b,c[c[(c[e+16>>2]|0)+112>>2]>>2]|0)|0;while(1){if(!g)break;i=c[c[(c[(c[((c[g>>2]&3|0)==2?g:g+-48|0)+40>>2]|0)+16>>2]|0)+112>>2]>>2]|0;if((e|0)!=(i|0)){i=Rx(m,e,i,0,1)|0;Az(i,134378,176,1)|0;Vx(h,i,1)|0}g=Gx(b,g)|0}e=Ty(h,e)|0}f=f+1|0}e=Sy(m)|0;while(1){if(!e)break;f=Ex(m,e)|0;while(1){if(!f)break;b=uH(8)|0;c[(c[f+16>>2]|0)+120>>2]=b;f=Gx(m,f)|0}e=Ty(m,e)|0}c[d>>2]=c[k>>2];l=n;return j|0}function Kp(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;b=az(a,b,1)|0;Az(b,134365,304,1)|0;e=uH(40)|0;a=b+16|0;c[(c[a>>2]|0)+112>>2]=e;e=uH(c[46366]<<3)|0;a=c[a>>2]|0;c[a+132>>2]=e;e=c[d+16>>2]|0;h[a+88>>3]=+h[e+88>>3];h[a+96>>3]=+h[e+96>>3];h[a+80>>3]=+h[e+80>>3];c[c[a+112>>2]>>2]=d;return b|0}function Lp(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0;h=l;l=l+48|0;b=h+32|0;e=h;if(ay(a)|0){g=Jp(a,b)|0;f=c[b>>2]|0;b=c[g>>2]|0;if((f|0)==1){Xu(b,a);Mp(c[g>>2]|0);tq(a)|0}else{d=c[b+60>>2]|0;XD(a,2,8,e)|0;b=0;while(1){if((b|0)>=(f|0))break;i=c[g+(b<<2)>>2]|0;Xu(i,a);tq(i)|0;b=b+1|0}WD(f,g,d,e)|0;b=0;while(1){if((b|0)>=(f|0))break;Mp(c[g+(b<<2)>>2]|0);b=b+1|0}}D_(g)}l=h;return}function Mp(a){a=a|0;var b=0,d=0,e=0;b=Sy(a)|0;while(1){if(!b)break;d=c[b+16>>2]|0;e=c[d+132>>2]|0;d=c[(c[(c[c[d+112>>2]>>2]|0)+16>>2]|0)+132>>2]|0;h[d>>3]=+h[e>>3];h[d+8>>3]=+h[e+8>>3];b=Ty(a,b)|0}return}function Np(a){a=a|0;if(ay(a)|0){Gp(a);Lp(a);D_(c[(c[(Sy(a)|0)+16>>2]|0)+112>>2]|0);hn(a);eJ(a)}return}function Op(a){a=a|0;var b=0,d=0,e=0;b=Sy(a)|0;if(b|0){e=a+16|0;Pp(c[(c[e>>2]|0)+140>>2]|0);while(1){if(!b)break;d=Ex(a,b)|0;while(1){if(!d)break;JM(d);d=Gx(a,d)|0}HM(b);b=Ty(a,b)|0}D_(c[(c[e>>2]|0)+152>>2]|0);if((fz(a)|0)!=(a|0))Gz(a,0,134401)}return}function Pp(a){a=a|0;var b=0,d=0;d=Sy(a)|0;while(1){if(!d)break;b=Ex(a,d)|0;while(1){if(!b)break;D_(c[(c[b+16>>2]|0)+120>>2]|0);b=Gx(a,b)|0}b=d+16|0;D_(c[(c[b>>2]|0)+112>>2]|0);D_(c[(c[b>>2]|0)+132>>2]|0);d=Ty(a,d)|0}$x(a)|0;return}function Qp(a){a=a|0;var b=0,d=0,e=0.0,f=0,g=0.0,i=0.0,j=0.0,k=0,m=0,n=0,o=0.0,p=0.0;m=l;l=l+16|0;k=m;a:do if(Rp(a,k)|0){b=c[(c[(Sy(a)|0)+16>>2]|0)+132>>2]|0;g=+h[b>>3];e=+h[b+8>>3];b=Sy(a)|0;while(1){if(!b)break;f=c[(c[b+16>>2]|0)+132>>2]|0;h[f>>3]=+h[f>>3]-g;f=f+8|0;h[f>>3]=+h[f>>3]-e;b=Ty(a,b)|0}b=(g!=0.0|e!=0.0)&1;d=Sy(a)|0;while(1){if(!d)break a;f=Ex(a,d)|0;if(f|0)break;d=Ty(a,d)|0}n=c[f>>2]&3;d=c[(c[(c[((n|0)==2?f:f+-48|0)+40>>2]|0)+16>>2]|0)+132>>2]|0;f=c[(c[(c[((n|0)==3?f:f+48|0)+40>>2]|0)+16>>2]|0)+132>>2]|0;i=+h[f+8>>3];j=+h[f>>3];e=+K(+(+h[d+8>>3]-i),+(+h[d>>3]-j));e=+h[k>>3]-e;h[k>>3]=e;if(e!=0.0){g=+E(+e);e=+F(+e);b=Sy(a)|0;while(1){if(!b){b=1;break a}k=c[(c[b+16>>2]|0)+132>>2]|0;p=+h[k>>3]-j;n=k+8|0;o=+h[n>>3]-i;h[k>>3]=p*g+j-o*e;h[n>>3]=p*e+i+o*g;b=Ty(a,b)|0}}}else b=0;while(0);l=m;return b|0}function Rp(b,d){b=b|0;d=d|0;var e=0.0,f=0,g=0;g=l;l=l+16|0;f=g;b=xx(b,91085)|0;do if((b|0)!=0?(a[b>>0]|0)!=0:0){e=+c2(b,f);if((c[f>>2]|0)==(b|0))if(!((QL(b)|0)<<24>>24)){b=0;break}else e=0.0;while(1){if(!(e>180.0))break;e=e+-360.0}while(1){if(!(e<=-180.0))break;e=e+360.0}h[d>>3]=e*.017453292519943295;b=1}else b=0;while(0);l=g;return b|0}function Sp(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;d=xx(a,91095)|0;return Tp(a,(d|0)==0?(c|0?c:191979):d,b)|0}function Tp(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0.0;n=l;l=l+32|0;m=n+16|0;j=n+8|0;i=n;if((d|0)!=0?(a[d>>0]|0)!=0:0){f=17792;while(1){g=c[f+4>>2]|0;if(!g)break;if(!(V$(d,g,c[f+8>>2]|0)|0)){k=6;break}f=f+16|0}if((k|0)==6){if(!(c[f+12>>2]|0)){c[i>>2]=g;Pw(0,91103,i)|0;f=17792}i=c[f>>2]|0;c[e>>2]=i;c[e+4>>2]=c[f+12>>2];if((i|0)==18)Up(b,d+(c[f+8>>2]|0)|0,e)}if(!(c[f+4>>2]|0)){f=RL(d,63)|0;if(f<<24>>24==63){c[j>>2]=d;Pw(0,91145,j)|0;f=0}else f=f&255;f=(f|0)==0;c[e>>2]=f&1;f=f?91192:132627;k=15}}else{c[e>>2]=0;f=132627;k=15}if((k|0)==15)c[e+4>>2]=f;if(0){k=c[15686]|0;j=c[e+8>>2]|0;o=+h[e+16>>3];c[m>>2]=c[e+4>>2];c[m+4>>2]=j;h[m+8>>3]=o;g1(k,91200,m)|0}l=n;return e|0}function Up(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=l;l=l+16|0;f=e;g=e+4|0;c[f>>2]=g;f=(N1(b,134313,f)|0)>0;b=c[g>>2]|0;c[d+8>>2]=f&(b|0)>-1?b:1e3;h[d+16>>3]=+LL(a,nx(a,0,91236,0)|0,-4.0,-1.0e10);l=e;return}function Vp(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;h=l;l=l+16|0;g=h+8|0;f=h;do if((ay(a)|0)>=2){d=Qp(a)|0;d=(Wp(a)|0)+d|0;e=c[b>>2]|0;if(e){if(0){e=c[15686]|0;j=ry(a)|0;i=c[b+4>>2]|0;c[f>>2]=j;c[f+4>>2]=i;g1(e,91565,f)|0;e=c[b>>2]|0}if(e>>>0>2){switch(e|0){case 3:{e=Xq(a,1)|0;break}case 4:{e=Xq(a,0)|0;break}case 6:case 5:{e=0;break}case 10:case 9:case 7:case 8:case 14:case 13:case 11:case 12:{Hq(a,e)|0;e=0;break}case 15:{e=Xq(a,-1)|0;break}default:{c[g>>2]=c[b+4>>2];Pw(0,91588,g)|0;e=0}}d=e+d|0;break}if(Xp(a)|0){Yp();D_(c[46075]|0);c[46075]=0;break}Zp(a);if((c[b>>2]|0)==2)e=_p()|0;else e=$p()|0;if(e|0)aq();Yp();D_(c[46075]|0);c[46075]=0;d=e+d|0}}else d=0;while(0);l=h;return d|0}function Wp(a){a=a|0;var b=0,d=0.0,e=0,f=0,g=0.0,i=0,j=0,k=0,m=0;m=l;l=l+48|0;i=m+24|0;f=m+16|0;j=m;b=xx(a,137660)|0;a:do if(((b|0)!=0?(k=j+8|0,c[f>>2]=j,c[f+4>>2]=k,e=N1(b,102477,f)|0,(e|0)!=0):0)?(g=+h[j>>3],!(+B(+g)<1.0e-09)):0){if((e|0)!=1){d=+h[k>>3];if(+B(+d)<1.0e-09){b=0;break}}else{h[k>>3]=g;d=g}if(!(d==1.0&g==1.0)){if(0){f=c[15686]|0;h[i>>3]=g;h[i+8>>3]=d;g1(f,91748,i)|0}b=Sy(a)|0;while(1){if(!b){b=1;break a}i=c[(c[b+16>>2]|0)+132>>2]|0;h[i>>3]=+h[i>>3]*+h[j>>3];i=i+8|0;h[i>>3]=+h[i>>3]*+h[k>>3];b=Ty(a,b)|0}}else b=0}else b=0;while(0);l=m;return b|0}function Xp(b){b=b|0;var d=0,e=0,f=0,i=0.0,j=0.0,k=0,m=0,n=0,o=0;n=l;l=l+16|0;k=n;c[46084]=ay(b)|0;ur();c[46099]=vH((c[46084]|0)*96|0)|0;f=Sy(b)|0;d=c[46099]|0;qq(k,b);i=+g[k>>2];j=+g[k+4>>2];k=(a[k+8>>0]|0)==0;j=k?j:j*.013888888888888888;i=k?i:i*.013888888888888888;k=k?2:1;e=0;while(1){if((e|0)>=(c[46084]|0)){d=0;break}o=c[(c[f+16>>2]|0)+132>>2]|0;h[d+8>>3]=+h[o>>3];h[d+16>>3]=+h[o+8>>3];if(mb[k&3](d+40|0,f,i,j)|0){m=4;break}c[d+24>>2]=e;c[d+28>>2]=1;c[d>>2]=f;c[d+88>>2]=0;d=d+96|0;e=e+1|0;f=Ty(b,f)|0}if((m|0)==4){D_(c[46099]|0);c[46099]=0;d=1}l=n;return d|0}function Yp(){var a=0,b=0;a=c[46099]|0;b=0;while(1){if((b|0)>=(c[46084]|0))break;pt(a+40|0);a=a+96|0;b=b+1|0}ot();Wr();D_(c[46099]|0);return}function Zp(b){b=b|0;var d=0,e=0,f=0,g=0.0,i=0.0,j=0.0,k=0.0,m=0,n=0,o=0,p=0,q=0.0,r=0.0,s=0.0,t=0.0;o=l;l=l+32|0;m=o+16|0;n=o;p=c[46099]|0;i=+h[p+8>>3];k=+h[p+16>>3];f=c[46084]|0;d=p;e=1;g=+h[p+40>>3]+i;i=+h[p+56>>3]+i;j=+h[p+48>>3]+k;k=+h[p+64>>3]+k;while(1){if((e|0)>=(f|0))break;s=+h[d+104>>3];q=+h[d+112>>3];t=+h[d+136>>3]+s;r=+h[d+144>>3]+q;s=+h[d+152>>3]+s;q=+h[d+160>>3]+q;d=d+96|0;e=e+1|0;g=ti?s:i;j=rk?q:k}d=xx(b,91688)|0;if(d|0?a[d>>0]|0:0)h[173]=+b2(d);s=+h[173];t=s*(k-j);s=s*(i-g);h[m>>3]=g-s;h[m+8>>3]=j-t;h[n>>3]=s+i;h[n+8>>3]=t+k;iq(m,n);l=o;return}function _p(){var a=0,b=0,d=0,e=0;d=l;l=l+16|0;b=d;if(bq(0)|0){cq();a=0;do{pq();a=a+1|0}while((bq(a)|0)!=0);if(!0)a=1;else{e=c[15686]|0;c[b>>2]=a;g1(e,91616,b)|0;a=1}}else a=0;l=d;return a|0}function $p(){var a=0,b=0,d=0,e=0,f=0,g=0,h=0,i=0;i=l;l=l+16|0;h=i+8|0;g=i;b=bq(0)|0;if(!b)a=0;else{cq();dq(0);Yt(0,1);a=0;e=0;d=0;while(1){fq();d=d+1|0;f=bq(d)|0;if(!f)break;b=(f|0)<(b|0)?0:e+1|0;c[46076]=1;if(b){gq();a=a+1|0}dq(1);Yt(0,1);e=b;b=f}if(0){f=c[15686]|0;c[g>>2]=d;g1(f,91616,g)|0;c[h>>2]=a;g1(f,91643,h)|0}hq();a=1}l=i;return a|0}function aq(){var a=0,b=0,d=0,e=0;d=c[46084]|0;a=c[46099]|0;b=0;while(1){if((b|0)>=(d|0))break;e=c[(c[(c[a>>2]|0)+16>>2]|0)+132>>2]|0;h[e>>3]=+h[a+8>>3];h[e+8>>3]=+h[a+16>>3];a=a+96|0;b=b+1|0}return}function bq(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;q=l;l=l+48|0;o=q+24|0;n=q+8|0;p=q;d=c[46099]|0;e=c[46084]|0;b=0;while(1){if((b|0)>=(e|0)){f=0;b=0;break}c[d+(b*96|0)+32>>2]=0;b=b+1|0}a:while(1){if((b|0)>=(e+-1|0))break;m=d+96|0;b=b+1|0;j=d+8|0;k=d+40|0;i=d+32|0;g=m;h=b;while(1){if((h|0)>=(e|0)){d=m;continue a}e=g+8|0;c[n>>2]=c[j>>2];c[n+4>>2]=c[j+4>>2];c[n+8>>2]=c[j+8>>2];c[n+12>>2]=c[j+12>>2];c[o>>2]=c[e>>2];c[o+4>>2]=c[e+4>>2];c[o+8>>2]=c[e+8>>2];c[o+12>>2]=c[e+12>>2];if(!(yt(n,k,o,g+40|0)|0))d=f;else{c[i>>2]=1;c[g+32>>2]=1;d=f+1|0}g=g+96|0;h=h+1|0;f=d;e=c[46084]|0}}if(0>1){o=c[15686]|0;c[p>>2]=a;c[p+4>>2]=f;g1(o,91669,p)|0}l=q;return f|0}function cq(){var a=0,b=0,d=0,e=0.0,f=0,g=0.0,i=0,j=0,k=0,l=0,m=0,n=0;nq();k=c[46078]|0;l=c[46099]|0;a=c[46075]|0;a:while(1){i=a;if(a>>>0>=k>>>0)break;b=a+4|0;if(b>>>0>=k>>>0){a=b;continue}f=c[b>>2]|0;d=c[a>>2]|0;g=+h[d>>3];if(+h[f>>3]!=g){a=b;continue}e=+h[d+8>>3];if(+h[f+8>>3]!=e){a=b;continue}j=a+8|0;f=2;while(1){if(j>>>0>=k>>>0)break;d=c[j>>2]|0;if(!(+h[d>>3]==g)){m=11;break}if(!(+h[d+8>>3]==e)){m=11;break}j=j+4|0;f=f+1|0}if((m|0)==11){m=0;d=c[j>>2]|0;if(+h[d+8>>3]==e){e=(+h[d>>3]-g)/+(f|0);d=(((j>>>0>b>>>0?j:b)+-1+(0-i)|0)>>>2)+1|0;a=1;while(1){if((a|0)==(d|0)){a=j;continue a}i=c[b>>2]|0;h[i>>3]=+h[i>>3]+e*+(a|0);a=a+1|0;b=b+4|0}}}while(1){if(b>>>0>=j>>>0){a=j;continue a}f=c[a>>2]|0;n=c[f+16>>2]|0;i=c[b>>2]|0;d=c[i+16>>2]|0;h[i>>3]=(+h[l+(n*96|0)+56>>3]-+h[l+(n*96|0)+40>>3]+ +h[l+(d*96|0)+56>>3]-+h[l+(d*96|0)+40>>3])*.5+ +h[f>>3];b=b+4|0;a=a+4|0}}return}function dq(a){a=a|0;var b=0.0,d=0.0,e=0.0,f=0,g=0.0,i=0,j=0,k=0;if(a|0)nq();i=c[46075]|0;j=c[i>>2]|0;d=+h[j>>3];h[22887]=d;k=c[46084]|0;f=1;g=+h[j>>3];while(1){if((f|0)>=(k|0))break;a=c[i+(f<<2)>>2]|0;b=+h[a>>3];if(b>3]}else{e=b;b=d}f=f+1|0;d=b;g=e>g?e:g}e=+h[j+8>>3];h[22888]=e;h[22890]=+h[(c[i+(k+-1<<2)>>2]|0)+8>>3]-e;h[22889]=g-d;return}function eq(){var a=0;a=c[46077]|0;if(a>>>0<(c[46078]|0)>>>0){c[46077]=a+4;a=c[a>>2]|0}else a=0;return a|0}function fq(){var a=0,b=0,d=0;a=c[46099]|0;jq();d=(c[46076]|0)==0;b=0;while(1){if((b|0)>=(c[46084]|0))break;if(!(d?!(c[a+32>>2]|0):0))kq(a);a=a+96|0;b=b+1|0}return}function gq(){var a=0,b=0,c=0,d=0.0,e=0.0,f=0.0,g=0.0,i=0.0,j=0.0;a=l;l=l+32|0;c=a+16|0;b=a;j=+h[22883];i=+h[22881];g=+h[22884];e=+h[22882];d=(i-e)*.05;f=(j-g)*.05;h[b>>3]=f+j;h[b+8>>3]=i+d;h[c>>3]=g-f;h[c+8>>3]=e-d;iq(c,b);l=a;return}function hq(){Hr();Jr();Kt();nr();return}function iq(a,b){a=a|0;b=b|0;var c=0.0,d=0.0,e=0.0,f=0.0;f=+h[a>>3];h[22884]=f;e=+h[b>>3];h[22883]=e;c=+h[a+8>>3];h[22882]=c;d=+h[b+8>>3];h[22881]=d;h[22873]=f;h[22875]=f;h[22877]=e;h[22879]=e;h[22880]=d;h[22876]=d;h[22878]=c;h[22874]=c;return}function jq(){var a=0,b=0.0,d=0.0,e=0.0,f=0.0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0.0,s=0.0,t=0.0,u=0.0;m=c[46099]|0;g=m+8|0;f=+vr(g,182984);e=+vr(g,183e3);d=+vr(g,183016);a=1;b=+vr(g,183032);g=m;i=m;j=m;k=m;while(1){l=m+96|0;if((a|0)>=(c[46084]|0))break;q=m+104|0;r=+vr(q,182984);n=r>2]|0;o=k+8|0;b=0.0;d=0.0;e=0.0;k=c[k>>2]|0;while(1){f=c[k>>2]|0;if(!f)break;s=k+8|0;r=f+8|0;c[g>>2]=c[o>>2];c[g+4>>2]=c[o+4>>2];c[g+8>>2]=c[o+8>>2];c[g+12>>2]=c[o+12>>2];c[i>>2]=c[s>>2];c[i+4>>2]=c[s+4>>2];c[i+8>>2]=c[s+8>>2];c[i+12>>2]=c[s+12>>2];c[j>>2]=c[r>>2];c[j+4>>2]=c[r+4>>2];c[j+8>>2]=c[r+8>>2];c[j+12>>2]=c[r+12>>2];q=+lq(g,i,j);c[g>>2]=c[o>>2];c[g+4>>2]=c[o+4>>2];c[g+8>>2]=c[o+8>>2];c[g+12>>2]=c[o+12>>2];c[i>>2]=c[s>>2];c[i+4>>2]=c[s+4>>2];c[i+8>>2]=c[s+8>>2];c[i+12>>2]=c[s+12>>2];c[j>>2]=c[r>>2];c[j+4>>2]=c[r+4>>2];c[j+8>>2]=c[r+8>>2];c[j+12>>2]=c[r+12>>2];mq(g,i,j,m,n);b=+h[n>>3]*q+b;d=+h[m>>3]*q+d;e=q+e;k=f}h[a+8>>3]=d/e;h[a+16>>3]=b/e;l=p;return}function lq(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0,f=0.0;d=+h[b+8>>3];f=+h[c+8>>3];e=+h[a+8>>3];return +(+B(+((f-e)*+h[b>>3]+(d-f)*+h[a>>3]+ +h[c>>3]*(e-d)))*.5)}function mq(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;h[d>>3]=(+h[b>>3]+ +h[a>>3]+ +h[c>>3])*.3333333333333333;h[e>>3]=(+h[b+8>>3]+ +h[a+8>>3]+ +h[c+8>>3])*.3333333333333333;return}function nq(){var a=0,b=0,d=0,e=0;a=c[46075]|0;if(!a){a=vH(c[46084]<<2)|0;c[46075]=a;c[46078]=a+(c[46084]<<2)}d=c[46099]|0;Wr();e=c[46084]|0;b=0;while(1){if((b|0)>=(e|0))break;c[a>>2]=d+8;c[d+88>>2]=0;c[d+28>>2]=1;d=d+96|0;a=a+4|0;b=b+1|0}_0(c[46075]|0,e,4,68);c[46077]=c[46075];return}function oq(a,b){a=a|0;b=b|0;var d=0.0,e=0.0;a=c[a>>2]|0;b=c[b>>2]|0;d=+h[a+8>>3];e=+h[b+8>>3];if(!(de)){e=+h[a>>3];d=+h[b>>3];if(ed&1}else a=1;else a=-1;return a|0}function pq(){var a=0,b=0,d=0,e=0;d=c[46084]|0;a=0;b=c[46099]|0;while(1){if((a|0)>=(d|0))break;e=b+8|0;h[e>>3]=+h[e>>3]*1.05;e=b+16|0;h[e>>3]=+h[e>>3]*1.05;a=a+1|0;b=b+96|0}return}function qq(b,e){b=b|0;e=e|0;var f=0,i=0,j=0,k=0,m=0,n=0.0,o=0.0;m=l;l=l+48|0;k=m;j=m+24|0;f=xx(e,91700)|0;if(!((f|0)!=0?(rq(f,j,1.0,0.0)|0)!=0:0))i=3;do if((i|0)==3){e=xx(e,91704)|0;if(e|0?rq(e,j,.800000011920929,4.0)|0:0)break;g[j+4>>2]=4.0;g[j>>2]=4.0;a[j+8>>0]=1}while(0);if(0){i=c[15686]|0;o=+g[j>>2];n=+g[j+4>>2];c[k>>2]=d[j+8>>0];h[k+8>>3]=o;h[k+16>>3]=n;g1(i,91709,k)|0};c[b>>2]=c[j>>2];c[b+4>>2]=c[j+4>>2];c[b+8>>2]=c[j+8>>2];l=m;return}function rq(b,d,e,f){b=b|0;d=d|0;e=+e;f=+f;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0.0;o=l;l=l+16|0;m=o;j=o+12|0;k=o+8|0;while(1){h=a[b>>0]|0;i=b+1|0;if(!(B$(h<<24>>24)|0))break;else b=i}p=h<<24>>24==43;h=d+8|0;a[h>>0]=p&1;c[m>>2]=j;c[m+4>>2]=k;switch(N1(p?i:b,91742,m)|0){case 0:{b=0;break}case 1:{c[k>>2]=c[j>>2];n=5;break}default:n=5}if((n|0)==5){do if(a[h>>0]|0){if(e>1.0){q=+g[j>>2]/e;g[d>>2]=q>f?f:q;e=+g[k>>2]/e;e=e>f?f:e;break}if(e<1.0){q=+g[j>>2]/e;g[d>>2]=q>2]/e;e=e>2]=c[j>>2];e=+g[k>>2];break}}else{g[d>>2]=+g[j>>2]/e+1.0;e=+g[k>>2]/e+1.0}while(0);g[d+4>>2]=e;b=1}l=o;return b|0}function sq(a,b){a=a|0;b=b|0;var c=0,d=0;d=l;l=l+32|0;c=d;if((ay(a)|0)<2)a=0;else{Tp(a,b,c)|0;a=Vp(a,c)|0}l=d;return a|0}function tq(a){a=a|0;return sq(a,xx(a,91095)|0)|0}function uq(b,e){b=b|0;e=e|0;var f=0,i=0,j=0,k=0,m=0,n=0.0,o=0.0;m=l;l=l+48|0;k=m;j=m+24|0;f=xx(e,91704)|0;if(!((f|0)!=0?(rq(f,j,1.0,0.0)|0)!=0:0))i=3;do if((i|0)==3){e=xx(e,91700)|0;if(e|0?rq(e,j,1.25,3.200000047683716)|0:0)break;g[j+4>>2]=3.200000047683716;g[j>>2]=3.200000047683716;a[j+8>>0]=1}while(0);if(0){i=c[15686]|0;o=+g[j>>2];n=+g[j+4>>2];c[k>>2]=d[j+8>>0];h[k+8>>3]=o;h[k+16>>3]=n;g1(i,91771,k)|0};c[b>>2]=c[j>>2];c[b+4>>2]=c[j+4>>2];c[b+8>>2]=c[j+8>>2];l=m;return}function vq(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;p=l;l=l+16|0;o=p;h=0;while(1){if((h|0)>=(d|0))break;c[e+(h<<2)>>2]=-1;h=h+1|0}c[e+(a<<2)>>2]=0;wq(f,a);a:do if(!(c[b+8>>2]|0)){h=2147483647;b:while(1){if(!((xq(f,o)|0)<<24>>24))break a;j=c[o>>2]|0;h=c[e+(j<<2)>>2]|0;i=b+(j*20|0)|0;j=b+(j*20|0)+4|0;k=h+1|0;a=1;while(1){if((a|0)>=(c[i>>2]|0))continue b;m=c[(c[j>>2]|0)+(a<<2)>>2]|0;n=e+(m<<2)|0;if((c[n>>2]|0)<0){c[n>>2]=k;yq(f,m)|0}a=a+1|0}}}else{h=2147483647;c:while(1){if(!((xq(f,o)|0)<<24>>24))break a;k=c[o>>2]|0;h=c[e+(k<<2)>>2]|0;i=b+(k*20|0)|0;j=b+(k*20|0)+4|0;k=b+(k*20|0)+8|0;a=1;while(1){if((a|0)>=(c[i>>2]|0))continue c;m=c[(c[j>>2]|0)+(a<<2)>>2]|0;n=e+(m<<2)|0;if((c[n>>2]|0)<0){c[n>>2]=h+~~+g[(c[k>>2]|0)+(a<<2)>>2];yq(f,m)|0}a=a+1|0}}}while(0);a=h+10|0;h=0;while(1){if((h|0)>=(d|0))break;i=e+(h<<2)|0;if((c[i>>2]|0)<0)c[i>>2]=a;h=h+1|0}l=p;return}function wq(a,b){a=a|0;b=b|0;c[c[a>>2]>>2]=b;c[a+12>>2]=0;c[a+8>>2]=1;return}function xq(a,b){a=a|0;b=b|0;var d=0,e=0;d=a+12|0;e=c[d>>2]|0;if((e|0)<(c[a+8>>2]|0)){a=c[a>>2]|0;c[d>>2]=e+1;c[b>>2]=c[a+(e<<2)>>2];a=1}else a=0;return a|0}function yq(a,b){a=a|0;b=b|0;var d=0,e=0;d=a+8|0;e=c[d>>2]|0;if((e|0)<(c[a+4>>2]|0)){a=c[a>>2]|0;c[d>>2]=e+1;c[a+(e<<2)>>2]=b;a=1}else a=0;return a|0}function zq(a,b){a=a|0;b=b|0;c[a>>2]=vH(b<<2)|0;c[a+4>>2]=b;c[a+8>>2]=0;c[a+12>>2]=0;return}function Aq(a){a=a|0;D_(c[a>>2]|0);return}function Bq(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0,g=0,i=0;if(!0)g=0;else{E1(91804,25,1,c[15686]|0)|0;g=0}while(1){if((g|0)>=(a|0))break;i=b+(g<<2)|0;f=0;e=0.0;while(1){if((f|0)==(a|0))break;if((g|0)!=(f|0))e=+h[(c[i>>2]|0)+(f<<3)>>3]+e;f=f+1|0}h[(c[i>>2]|0)+(g<<3)>>3]=-e;g=g+1|0}return xs(b,d,a+-1|0)|0}function Cq(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,l=0.0;j=wn(b,b,0.0)|0;k=wn(b,b,0.0)|0;e=Sy(a)|0;while(1){if(!e)break;d=Jx(a,e)|0;while(1){if(!d)break;g=c[d>>2]&3;f=(c[c[((g|0)==3?d:d+48|0)+40>>2]>>2]|0)>>>4;g=(c[c[((g|0)==2?d:d+-48|0)+40>>2]>>2]|0)>>>4;if((f|0)!=(g|0)){l=-1.0/+h[(c[d+16>>2]|0)+136>>3];h[(c[j+(g<<2)>>2]|0)+(f<<3)>>3]=l;h[(c[j+(f<<2)>>2]|0)+(g<<3)>>3]=l}d=Kx(a,d,e)|0}e=Ty(a,e)|0}i=Bq(b,j,k)|0;a:do if(i|0){f=a+16|0;e=0;while(1){if((e|0)>=(b|0))break a;g=k+(e<<2)|0;d=0;while(1){if((d|0)==(b|0))break;a=c[g>>2]|0;h[(c[(c[(c[f>>2]|0)+160>>2]|0)+(e<<2)>>2]|0)+(d<<3)>>3]=+h[(c[k+(d<<2)>>2]|0)+(d<<3)>>3]+ +h[a+(e<<3)>>3]+ +h[a+(d<<3)>>3]*-2.0;d=d+1|0}e=e+1|0}}while(0);xn(j);xn(k);return i|0}function Dq(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=f|0;var g=0.0,h=0.0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=l;l=l+16|0;j=s;n=d<<3;o=vH(n)|0;p=vH(n)|0;q=vH(n)|0;k=vH(n)|0;m=vH(n)|0;n=vH(n)|0;Ps(d,c,n);Is(d,n);Is(d,b);Ks(a,d,b,k);Ms(d,n,k,o);Ps(d,o,p);i=f+-1|0;c=0;g=+Qs(d,o,o);while(1){if((c|0)>=(f|0)){c=0;break}if(!(+Rs(d,o)>e)){c=0;break}Ks(a,d,p,q);h=+Qs(d,p,q);if(h==0.0){c=0;break}h=g/h;Os(d,p,h,m);Ns(d,b,m,b);if((c|0)<(i|0)){Os(d,q,h,q);Ms(d,o,q,o);h=+Qs(d,o,o);if(g==0.0){r=7;break}Os(d,p,h/g,p);Ns(d,o,p,p);g=h}c=c+1|0}if((r|0)==7){Pw(1,91830,j)|0;c=1}D_(o);D_(p);D_(q);D_(k);D_(m);D_(n);l=s;return c|0}function Eq(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=f|0;g=g|0;var h=0.0,i=0.0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=l;l=l+16|0;j=s;o=d<<3;p=vH(o)|0;q=vH(o)|0;k=vH(o)|0;m=vH(o)|0;n=vH(o)|0;o=vH(o)|0;Ps(d,c,o);if(g<<24>>24){Is(d,o);Is(d,b)}Ls(a,d,b,m);Ms(d,o,m,p);Ps(d,p,q);g=f+-1|0;c=0;h=+Qs(d,p,p);while(1){if((c|0)>=(f|0)){c=0;break}if(!(+Rs(d,p)>e)){c=0;break}Ls(a,d,q,k);i=+Qs(d,q,k);if(i==0.0){c=0;break}i=h/i;Os(d,q,i,n);Ns(d,b,n,b);if((c|0)<(g|0)){Os(d,k,i,k);Ms(d,p,k,p);i=+Qs(d,p,p);if(h==0.0){r=9;break}Os(d,q,i/h,q);Ns(d,p,q,q);h=i}c=c+1|0}if((r|0)==9){Pw(1,91830,j)|0;c=1}D_(p);D_(q);D_(k);D_(m);D_(n);D_(o);l=s;return c|0}function Fq(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=f|0;var g=0.0,h=0.0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;q=l;l=l+16|0;j=q;k=d<<2;m=uH(k)|0;n=uH(k)|0;o=uH(k)|0;k=uH(k)|0;Ts(d,b);Ts(d,c);Us(a,d,b,k);Ts(d,k);Vs(d,c,k,m);Zs(d,m,n);i=f+-1|0;c=0;g=+_s(d,m,m);while(1){if((c|0)>=(f|0)){c=0;break}if(!(+bt(d,m)>e)){c=0;break}Ts(d,n);Ts(d,b);Ts(d,m);Us(a,d,n,o);Ts(d,o);h=+_s(d,n,o);if(h==0.0){c=0;break}h=g/h;Xs(d,b,h,n);if((c|0)<(i|0)){Xs(d,m,-h,o);h=+_s(d,m,m);if(g==0.0){p=7;break}Ys(d,n,h/g,n);Ws(d,m,n,n);g=h}c=c+1|0}if((p|0)==7){Pw(1,91830,j)|0;c=1}D_(m);D_(n);D_(o);D_(k);l=q;return c|0}function Gq(a,b,d,e,f,i,j,k,m,n){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;i=i|0;j=j|0;k=k|0;m=m|0;n=+n;var o=0,p=0,q=0.0,r=0,s=0,t=0,u=0,v=0.0,w=0,x=0,y=0,z=0,A=0.0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0.0;M=l;l=l+48|0;F=M+24|0;E=M+16|0;D=M+8|0;C=M;J=M+40|0;K=M+36|0;H=M+32|0;s=j&4;c[J>>2]=0;c[K>>2]=0;a:do if(c[a+16>>2]|0){p=0;o=0;while(1){if((p|0)>=(b|0))break;t=c[a+(p*20|0)>>2]|0;u=a+(p*20|0)+16|0;r=1;while(1){if((r|0)>=(t|0))break;if(!(o<<24>>24))o=+g[(c[u>>2]|0)+(r<<2)>>2]!=0.0;else o=1;r=r+1|0;o=o&1}p=p+1|0}if(o<<24>>24){z=(s|0)!=0;if(z){r=e+4|0;b:do if((i|0)>2){o=i+-1|0;if((qn(a,b,d,r,f,o,j,k,15)|0)<0){o=-1;break a}p=e+(o<<2)|0;o=0;while(1){if((o|0)>=(b|0))break b;h[(c[p>>2]|0)+(o<<3)>>3]=+h[(c[r>>2]|0)+(o<<3)>>3];o=o+1|0}}while(0);y=c[e>>2]|0;w=c[r>>2]|0;if((kt(a,b,w,b)|0)==0?(kv(a,b,.01,.1,w,J,K,H)|0)==0:0){x=c[H>>2]|0;if((x|0)<1){o=qn(a,b,d,e,f,i,j,k,m)|0;break}c:do if(n>0.0){s=c[J>>2]|0;t=c[K>>2]|0;u=x+-1|0;q=0.0;r=0;while(1){if((r|0)>=(x|0))break c;o=c[t+(r<<2)>>2]|0;A=n-q-+h[w+(c[s+(o<<2)>>2]<<3)>>3]+ +h[w+(c[s+(o+-1<<2)>>2]<<3)>>3];q=(A<0.0?0.0:A)+q;if((r|0)<(u|0))p=c[t+(r+1<<2)>>2]|0;else p=b;while(1){if((o|0)>=(p|0))break;I=w+(c[s+(o<<2)>>2]<<3)|0;h[I>>3]=+h[I>>3]+q;o=o+1|0}r=r+1|0}}while(0);if((i|0)==2?(Qt(a,b,w,y,+h[22909])|0)!=0:0){p=0;o=-1}else L=33}else{p=0;o=-1}}else{kn(a,b,i,e,f)|0;if(!(kv(a,b,.01,.1,0,J,K,H)|0))L=33;else{p=0;o=-1}}d:do if((L|0)==33){if((b|0)==1){o=0;break a}I=vH(c[H>>2]<<2)|0;if(!m){o=0;break a}if(0)EL();switch(k|0){case 2:{if(0)E1(91878,24,1,c[15686]|0)|0;o=pn(a,b)|0;L=46;break}case 1:{o=ln(a,b)|0;if(!o){Pw(0,91903,C)|0;Pw(3,91952,D)|0;L=47}else G=o;break}case 3:{if(0)E1(92005,21,1,c[15686]|0)|0;o=mn(a,b)|0;L=46;break}default:L=47}if((L|0)==46)if(!o)L=47;else G=o;if((L|0)==47){if(0)E1(92027,26,1,c[15686]|0)|0;G=on(a,b)|0}if(0){a=c[15686]|0;h[E>>3]=+FL();g1(a,92054,E)|0;E1(92066,25,1,a)|0;EL()}a=b+-1|0;y=(O(a,b)|0)/2|0;E=y+b|0;e:do if(!z){q=1.0;p=0;while(1){if((p|0)>=(i|0))break;r=e+(p<<2)|0;o=0;while(1){if((o|0)>=(b|0))break;A=+B(+(+h[(c[r>>2]|0)+(o<<3)>>3]));q=A>q?A:q;o=o+1|0}p=p+1|0}q=1.0/q;p=0;while(1){if((p|0)>=(i|0))break e;r=e+(p<<2)|0;o=0;while(1){if((o|0)>=(b|0))break;D=(c[r>>2]|0)+(o<<3)|0;h[D>>3]=+h[D>>3]*(10.0*q);o=o+1|0}p=p+1|0}}while(0);f:do if(n>0.0){v=+(y|0);o=0;q=0.0;s=0;g:while(1){if((s|0)>=(a|0))break;t=s+1|0;r=o;p=t;while(1){o=r+1|0;if((p|0)>=(b|0)){s=t;continue g}A=+gs(e,i,s,p);r=o;q=A/+g[G+(o<<2)>>2]+q;p=p+1|0}}q=q/v;o=0;while(1){if((o|0)>=(E|0)){o=0;break f}D=G+(o<<2)|0;g[D>>2]=+g[D>>2]*q;o=o+1|0}}else o=0;while(0);while(1){if((o|0)>=(i|0))break;Is(b,c[e+(o<<2)>>2]|0);o=o+1|0}p=c[e+4>>2]|0;q=+h[p>>3];o=0;while(1){if((o|0)>=(b|0))break;D=p+(o<<3)|0;h[D>>3]=+h[D>>3]-q;o=o+1|0}u=i<<2;D=vH(u)|0;x=b<<2;w=O(x,i)|0;r=vH(w)|0;o=0;while(1){if((o|0)>=(i|0))break;s=r+((O(o,b)|0)<<2)|0;c[D+(o<<2)>>2]=s;t=e+(o<<2)|0;p=0;while(1){if((p|0)>=(b|0))break;g[s+(p<<2)>>2]=+h[(c[t>>2]|0)+(p<<3)>>3];p=p+1|0}o=o+1|0}v=+(y|0);if(0){C=c[15686]|0;h[F>>3]=+FL();g1(C,92092,F)|0}ct(E,G);dt(E,G);C=vH(b<<3)|0;$s(b,0.0,C);o=0;r=0;while(1){if((r|0)>=(a|0)){o=b;p=0;r=0;break}s=b-r|0;q=0.0;p=1;while(1){o=o+1|0;if((p|0)>=(s|0))break;A=+g[G+(o<<2)>>2];F=C+(p+r<<3)|0;h[F>>3]=+h[F>>3]-A;q=q+A;p=p+1|0}F=C+(r<<3)|0;h[F>>3]=+h[F>>3]-q;r=r+1|0}while(1){if((p|0)>=(b|0))break;g[G+(r<<2)>>2]=+h[C+(p<<3)>>3];F=o+r|0;o=o+-1|0;p=p+1|0;r=F}k=vH(u)|0;c[k>>2]=vH(w)|0;o=1;while(1){if((o|0)>=(i|0))break;c[k+(o<<2)>>2]=(c[k>>2]|0)+((O(o,b)|0)<<2);o=o+1|0}z=vH(x)|0;f=vH(x)|0;j=vH(E<<2)|0;p=Et(G,b)|0;d=Jt(G,b,c[J>>2]|0,c[K>>2]|0,c[H>>2]|0)|0;y=k+4|0;r=0;A=1797693134862315708145274.0e284;o=0;while(1){if(!(r<<24>>24==0&(o|0)<(m|0)))break;$s(b,0.0,C);et(E,G,j);w=0;t=0;while(1){if((w|0)>=(a|0)){r=0;s=b;t=0;break}x=b-w+-1|0;at(b,0.0,f);r=0;while(1){if((r|0)>=(i|0))break;H=D+(r<<2)|0;at(x,+g[(c[H>>2]|0)+(w<<2)>>2],z);Xs(x,z,-1.0,(c[H>>2]|0)+(w<<2)+4|0);ct(x,z);Ws(x,z,f,f);r=r+1|0}ft(x,f);r=0;while(1){if((r|0)>=(x|0))break;s=f+(r<<2)|0;q=+g[s>>2];if(q>=3402823466385288598117041.0e14|q<0.0)g[s>>2]=0.0;r=r+1|0}u=w+1|0;q=0.0;r=t;s=0;while(1){r=r+1|0;if((s|0)>=(x|0))break;H=j+(r<<2)|0;N=+g[H>>2]*+g[f+(s<<2)>>2];g[H>>2]=N;H=C+(u+s<<3)|0;h[H>>3]=+h[H>>3]-N;q=q+N;s=s+1|0}t=C+(w<<3)|0;h[t>>3]=+h[t>>3]-q;w=u;t=r}while(1){if((r|0)>=(b|0)){r=0;break}g[j+(t<<2)>>2]=+h[C+(r<<3)>>3];H=s+t|0;r=r+1|0;s=s+-1|0;t=H}while(1){if((r|0)>=(i|0)){q=0.0;r=0;break}Us(j,b,c[D+(r<<2)>>2]|0,c[k+(r<<2)>>2]|0);r=r+1|0}while(1){if((r|0)>=(i|0))break;q=+_s(b,c[D+(r<<2)>>2]|0,c[k+(r<<2)>>2]|0)+q;r=r+1|0}q=q*2.0+v;r=0;while(1){if((r|0)>=(i|0))break;H=D+(r<<2)|0;Us(G,b,c[H>>2]|0,z);q=q-+_s(b,c[H>>2]|0,z);r=r+1|0}N=+B(+(q-A))/+B(+(A+1.0e-10));r=((o|0)>1&q>A|N<+h[22909])&1;s=0;while(1){if((s|0)>=(i|0))break;if((s|0)!=1){if(Fq(G,c[D+(s<<2)>>2]|0,c[k+(s<<2)>>2]|0,b,.001,b)|0){o=-1;break d}}else Ft(d,c[y>>2]|0,D,i,1,15,I,n)|0;s=s+1|0}A=q;o=o+1|0}D_(I);It(d);if(D|0){r=0;while(1){if((r|0)>=(i|0))break;t=D+(r<<2)|0;u=e+(r<<2)|0;s=0;while(1){if((s|0)>=(b|0))break;h[(c[u>>2]|0)+(s<<3)>>3]=+g[(c[t>>2]|0)+(s<<2)>>2];s=s+1|0}r=r+1|0}D_(c[D>>2]|0);D_(D)}if(k|0){D_(c[k>>2]|0);D_(k)}D_(z);D_(f);D_(C);D_(G);D_(j)}while(0);D_(c[J>>2]|0);D_(c[K>>2]|0);if(p){D_(c[p>>2]|0);D_(p)}}else L=10}else L=10;while(0);if((L|0)==10)o=qn(a,b,d,e,f,i,j,k,m)|0;l=M;return o|0}function Hq(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0;m=l;l=l+48|0;f=m+24|0;g=m+12|0;d=m;i=ay(a)|0;k=vH(i*48|0)|0;qq(d,a);c[g>>2]=c[d>>2];c[g+4>>2]=c[d+4>>2];c[g+8>>2]=c[d+8>>2];d=Sy(a)|0;e=k;while(1){if(!d)break;c[f>>2]=c[g>>2];c[f+4>>2]=c[g+4>>2];c[f+8>>2]=c[g+8>>2];Iq(d,e,f);d=Ty(a,d)|0;e=e+48|0}a:do if(!(Jq(k,i)|0))d=0;else{switch(b|0){case 9:{Lq(a,k,i,69,1);Nq(a,k,i,70,1);d=0;e=k;break}case 10:{Nq(a,k,i,70,1);Lq(a,k,i,69,1);d=0;e=k;break}case 7:{Lq(a,k,i,71,1);Nq(a,k,i,70,1);j=9;break}case 8:{j=9;break}case 13:{j=10;break}case 14:{Nq(a,k,i,70,0);Lq(a,k,i,69,0);d=0;e=k;break}case 12:{Nq(a,k,i,72,0);Lq(a,k,i,69,0);d=0;e=k;break}default:{Lq(a,k,i,71,0);Nq(a,k,i,70,0);d=0;e=k}}if((j|0)==9){Nq(a,k,i,72,1);Lq(a,k,i,69,1);j=10}if((j|0)==10){Lq(a,k,i,69,0);Nq(a,k,i,70,0);d=0;e=k}while(1){if((d|0)>=(i|0)){d=1;break a}g=c[e+16>>2]|0;j=c[(c[(c[e+20>>2]|0)+16>>2]|0)+132>>2]|0;h[j>>3]=+(c[e+12>>2]|0)*1.3888888888888887e-03;h[j+8>>3]=+(g|0)*1.3888888888888887e-03;d=d+1|0;e=e+48|0}}while(0);D_(k);l=m;return d|0}function Iq(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,i=0,j=0,k=0,l=0.0,m=0.0;f=c[b+16>>2]|0;k=c[f+132>>2]|0;l=+h[k>>3]*720.0;j=~~(l+(l>=0.0?.5:-.5));l=+h[k+8>>3]*720.0;k=~~(l+(l>=0.0?.5:-.5));if(!(a[e+8>>0]|0)){m=+h[f+32>>3]*72.0*(+g[e>>2]*5.0);l=+h[f+40>>3]*72.0*(+g[e+4>>2]*5.0);i=~~(m+(m>=0.0?.5:-.5));f=~~(l+(l>=0.0?.5:-.5))}else{l=+h[f+32>>3]*36.0;m=+h[f+40>>3]*36.0;i=~~((+g[e>>2]+ +(~~(l+(l>=0.0?.5:-.5))|0))*10.0);f=~~((+g[e+4>>2]+ +(~~(m+(m>=0.0?.5:-.5))|0))*10.0)}c[d+12>>2]=j;c[d+16>>2]=k;c[d+20>>2]=b;c[d+32>>2]=j-i;c[d+36>>2]=k-f;c[d+40>>2]=i+j;c[d+44>>2]=f+k;return}function Jq(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=b+-1|0;d=0;a:while(1){if((d|0)>=(k|0)){a=0;break}j=a+48|0;d=d+1|0;g=a+32|0;h=a+40|0;i=a+36|0;f=a+44|0;a=j;e=d;while(1){if((e|0)>=(b|0)){a=j;continue a}if((((c[g>>2]|0)<=(c[a+40>>2]|0)?(c[a+32>>2]|0)<=(c[h>>2]|0):0)?(c[i>>2]|0)<=(c[a+44>>2]|0):0)?(c[a+36>>2]|0)<=(c[f>>2]|0):0){a=1;break a}a=a+48|0;e=e+1|0}}return a|0}function Kq(a,b){a=a|0;b=b|0;if((c[a+36>>2]|0)>(c[b+44>>2]|0))a=0;else a=(c[b+36>>2]|0)<=(c[a+44>>2]|0)&1;return a|0}function Lq(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;i=Cw(18064,c[4558]|0)|0;g=b;h=0;while(1){if((h|0)>=(d|0))break;c[g+8>>2]=c[g+12>>2];nb[c[i>>2]&63](i,g,1)|0;g=g+48|0;h=h+1|0}if(!f)h=Tq(a,i,e,73)|0;else h=Sq(i,e,73)|0;fI(h,2,2147483647)|0;g=0;while(1){if((g|0)>=(d|0))break;f=b+12|0;a=c[(c[(c[b+24>>2]|0)+16>>2]|0)+232>>2]|0;e=a-(c[f>>2]|0)|0;c[f>>2]=a;f=b+32|0;c[f>>2]=(c[f>>2]|0)+e;f=b+40|0;c[f>>2]=(c[f>>2]|0)+e;b=b+48|0;g=g+1|0}Uq(h);yw(i)|0;return}function Mq(a,b){a=a|0;b=b|0;if((c[a+32>>2]|0)>(c[b+40>>2]|0))a=0;else a=(c[b+32>>2]|0)<=(c[a+40>>2]|0)&1;return a|0}function Nq(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;i=Cw(18064,c[4558]|0)|0;g=b;h=0;while(1){if((h|0)>=(d|0))break;c[g+8>>2]=c[g+16>>2];nb[c[i>>2]&63](i,g,1)|0;g=g+48|0;h=h+1|0}if(!f)h=Tq(a,i,e,74)|0;else h=Sq(i,e,74)|0;fI(h,2,2147483647)|0;g=0;while(1){if((g|0)>=(d|0))break;f=b+16|0;a=c[(c[(c[b+24>>2]|0)+16>>2]|0)+232>>2]|0;e=a-(c[f>>2]|0)|0;c[f>>2]=a;f=b+36|0;c[f>>2]=(c[f>>2]|0)+e;f=b+44|0;c[f>>2]=(c[f>>2]|0)+e;b=b+48|0;g=g+1|0}Uq(h);yw(i)|0;return}function Oq(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=a+32|0;e=b+32|0;if((c[a+36>>2]|0)<=(c[b+44>>2]|0)?(c[b+36>>2]|0)<=(c[a+44>>2]|0):0)if((c[a+40>>2]|0)<(c[e>>2]|0))a=1;else{g=Rq(d,e)|0;g=g-(c[b+12>>2]|0)+(c[a+12>>2]|0)|0;b=c[b+16>>2]|0;a=c[a+16>>2]|0;f=(b|0)<(a|0);e=Qq(d,e)|0;a=(g|0)<=(e-(f?a:b)+(f?b:a)|0)&1}else a=0;return a|0}function Pq(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=a+32|0;e=b+32|0;if((c[d>>2]|0)<=(c[b+40>>2]|0)?(c[e>>2]|0)<=(c[a+40>>2]|0):0)if((c[a+44>>2]|0)<(c[b+36>>2]|0))a=1;else{g=Qq(d,e)|0;g=g-(c[b+16>>2]|0)+(c[a+16>>2]|0)|0;b=c[b+12>>2]|0;a=c[a+12>>2]|0;f=(b|0)<(a|0);e=Rq(d,e)|0;a=(g|0)<=(e-(f?a:b)+(f?b:a)|0)&1}else a=0;return a|0}function Qq(a,b){a=a|0;b=b|0;return ((c[a+12>>2]|0)-(c[a+4>>2]|0)+(c[b+12>>2]|0)-(c[b+4>>2]|0)|0)/2|0|0}function Rq(a,b){a=a|0;b=b|0;return ((c[a+8>>2]|0)-(c[a>>2]|0)+(c[b+8>>2]|0)-(c[b>>2]|0)|0)/2|0|0}function Sq(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;x=l;l=l+16|0;v=x;a[v>>0]=a[18484]|0;a[v+1>>0]=a[18485]|0;a[v+2>>0]=a[18486]|0;a[v+3>>0]=a[18487]|0;w=Xx(92103,v,0)|0;Az(w,134401,280,1)|0;g=Aw(d)|0;h=-2147483647;u=0;while(1){if(!g)break;s=c[g+8>>2]|0;t=u+((h|0)!=(s|0)&1)|0;g=c[g>>2]|0;h=s;u=t}s=w+16|0;t=(u<<3)+-4|0;n=0;j=0;g=0;h=0;m=0;r=Aw(d)|0;i=-2147483647;while(1){if(!r)break;q=c[r+8>>2]|0;if((i|0)!=(q|0)){p=az(w,ry(c[r+20>>2]|0)|0,1)|0;Az(p,134365,304,1)|0;o=p+16|0;g=c[o>>2]|0;c[g+112>>2]=r;if(!h){c[(c[s>>2]|0)+192>>2]=p;n=p}else{c[(c[n+16>>2]|0)+164>>2]=p;n=h}c[g+176>>2]=0;k=j+1|0;i=uH(k<<2)|0;c[(c[o>>2]|0)+172>>2]=i;if(!m){j=k;k=p;m=p;g=p;h=n;i=q}else{i=m+16|0;c[(c[i>>2]|0)+184>>2]=0;j=uH((m|0)==(n|0)?t:u-j<<2)|0;c[(c[i>>2]|0)+180>>2]=j;j=Rx(w,m,p,0,1)|0;Az(j,134378,176,1)|0;g=c[j+16>>2]|0;b[g+170>>1]=10;c[g+156>>2]=1;g=c[i>>2]|0;h=c[g+180>>2]|0;if(!h)g=vH((c[g+184>>2]<<2)+8|0)|0;else g=xH(h,(c[g+184>>2]<<2)+8|0)|0;m=c[i>>2]|0;c[m+180>>2]=g;m=m+184|0;h=c[m>>2]|0;c[m>>2]=h+1;c[g+(h<<2)>>2]=j;g=c[i>>2]|0;c[(c[g+180>>2]|0)+(c[g+184>>2]<<2)>>2]=0;g=c[o>>2]|0;h=c[g+172>>2]|0;if(!h)g=vH((c[g+176>>2]<<2)+8|0)|0;else g=xH(h,(c[g+176>>2]<<2)+8|0)|0;h=c[o>>2]|0;c[h+172>>2]=g;h=h+176|0;m=c[h>>2]|0;c[h>>2]=m+1;c[g+(m<<2)>>2]=j;j=c[o>>2]|0;c[(c[j+172>>2]|0)+(c[j+176>>2]<<2)>>2]=0;j=k;k=p;m=p;g=p;h=n;i=q}}else{k=g;g=n}c[r+24>>2]=k;n=g;g=k;r=c[r>>2]|0}m=m+16|0;c[(c[m>>2]|0)+184>>2]=0;g=uH(4)|0;c[(c[m>>2]|0)+180>>2]=g;a[v>>0]=a[18484]|0;a[v+1>>0]=a[18485]|0;a[v+2>>0]=a[18486]|0;a[v+3>>0]=a[18487]|0;m=Xx(92150,v,0)|0;g=Aw(d)|0;while(1){if(!g)break;v=az(m,ry(c[g+20>>2]|0)|0,1)|0;Az(v,134365,304,1)|0;c[g+28>>2]=v;c[(c[v+16>>2]|0)+112>>2]=g;g=c[g>>2]|0}g=0;k=Aw(d)|0;h=-2147483647;a:while(1){if(!k)break;j=c[k+8>>2]|0;b:do if((h|0)==(j|0))j=h;else{g=k;while(1){g=c[g>>2]|0;if(!g)break a;if((c[g+8>>2]|0)!=(j|0))break b}}while(0);i=k+28|0;h=g;while(1){if(!h)break;if(lb[e&127](k,h)|0)Rx(m,c[i>>2]|0,c[h+28>>2]|0,0,1)|0;h=c[h>>2]|0}k=c[k>>2]|0;h=j}Vq(m,w,f);$x(m)|0;l=x;return w|0}function Tq(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;s=l;l=l+16|0;r=s;a[r>>0]=a[18484]|0;a[r+1>>0]=a[18485]|0;a[r+2>>0]=a[18486]|0;a[r+3>>0]=a[18487]|0;r=Xx(92103,r,0)|0;Az(r,134401,280,1)|0;k=r+16|0;h=Aw(e)|0;i=0;while(1){if(!h)break;j=az(r,ry(c[h+20>>2]|0)|0,1)|0;Az(j,134365,304,1)|0;p=j+16|0;n=c[p>>2]|0;c[n+112>>2]=h;c[h+24>>2]=j;c[n+176>>2]=0;n=uH(4)|0;o=c[p>>2]|0;c[o+172>>2]=n;c[o+184>>2]=0;o=uH(4)|0;c[(c[p>>2]|0)+180>>2]=o;if(!i)c[(c[k>>2]|0)+192>>2]=j;else c[(c[i+16>>2]|0)+164>>2]=j;h=c[h>>2]|0;i=j}m=Aw(e)|0;a:while(1){if(!m)break;n=m+32|0;o=m+24|0;p=m+20|0;h=m;while(1){h=c[h>>2]|0;if(!h)break;if(lb[f&127](m,h)|0){i=lb[g&127](n,h+32|0)|0;j=Rx(r,c[o>>2]|0,c[h+24>>2]|0,0,1)|0;Az(j,134378,176,1)|0;if((i|0)>=65536){q=13;break a}k=j+16|0;t=c[k>>2]|0;b[t+170>>1]=i;c[t+156>>2]=1;if(j|0?Rx(d,c[p>>2]|0,c[h+20>>2]|0,0,0)|0:0)c[(c[k>>2]|0)+156>>2]=100}}m=c[m>>2]|0}if((q|0)==13)qa(92106,92122,254,92135);m=Aw(e)|0;while(1){if(!m)break;k=c[m+24>>2]|0;n=k+16|0;k=Ex(r,k)|0;while(1){if(!k)break;h=c[n>>2]|0;i=c[h+180>>2]|0;if(!i)h=vH((c[h+184>>2]<<2)+8|0)|0;else h=xH(i,(c[h+184>>2]<<2)+8|0)|0;i=c[n>>2]|0;c[i+180>>2]=h;i=i+184|0;j=c[i>>2]|0;c[i>>2]=j+1;c[h+(j<<2)>>2]=k;j=c[n>>2]|0;c[(c[j+180>>2]|0)+(c[j+184>>2]<<2)>>2]=0;j=k+-48|0;h=c[(c[((c[k>>2]&3|0)==2?k:j)+40>>2]|0)+16>>2]|0;i=c[h+172>>2]|0;if(!i)h=vH((c[h+176>>2]<<2)+8|0)|0;else h=xH(i,(c[h+176>>2]<<2)+8|0)|0;c[(c[(c[((c[k>>2]&3|0)==2?k:j)+40>>2]|0)+16>>2]|0)+172>>2]=h;g=c[(c[((c[k>>2]&3|0)==2?k:j)+40>>2]|0)+16>>2]|0;q=c[g+172>>2]|0;g=g+176|0;t=c[g>>2]|0;c[g>>2]=t+1;c[q+(t<<2)>>2]=k;t=c[(c[((c[k>>2]&3|0)==2?k:j)+40>>2]|0)+16>>2]|0;c[(c[t+172>>2]|0)+(c[t+176>>2]<<2)>>2]=0;k=Gx(r,k)|0}m=c[m>>2]|0}l=s;return r|0}function Uq(a){a=a|0;var b=0,d=0,e=0,f=0;f=Sy(a)|0;while(1){if(!f)break;d=f+16|0;b=c[d>>2]|0;e=c[b+172>>2]|0;if(e){D_(e);b=c[d>>2]|0}b=c[b+180>>2]|0;if(b|0)D_(b);f=Ty(a,f)|0}$x(a)|0;return}function Vq(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;k=Sy(a)|0;while(1){if(!k)break;n=c[(c[k+16>>2]|0)+112>>2]|0;m=c[n+24>>2]|0;n=n+32|0;o=m+16|0;l=Ex(a,k)|0;while(1){if(!l)break;h=c[(c[(c[((c[l>>2]&3|0)==2?l:l+-48|0)+40>>2]|0)+16>>2]|0)+112>>2]|0;p=lb[e&127](n,h+32|0)|0;h=c[h+24>>2]|0;i=Rx(d,m,h,0,1)|0;Az(i,134378,176,1)|0;j=i+16|0;f=c[j>>2]|0;c[f+156>>2]=1;g=b[f+170>>1]|0;if((p|0)>(g&65535|0)){if(!(g<<16>>16)){f=c[o>>2]|0;g=c[f+180>>2]|0;if(!g)f=vH((c[f+184>>2]<<2)+8|0)|0;else f=xH(g,(c[f+184>>2]<<2)+8|0)|0;q=c[o>>2]|0;c[q+180>>2]=f;q=q+184|0;g=c[q>>2]|0;c[q>>2]=g+1;c[f+(g<<2)>>2]=i;f=c[o>>2]|0;c[(c[f+180>>2]|0)+(c[f+184>>2]<<2)>>2]=0;h=h+16|0;f=c[h>>2]|0;g=c[f+172>>2]|0;if(!g)f=vH((c[f+176>>2]<<2)+8|0)|0;else f=xH(g,(c[f+176>>2]<<2)+8|0)|0;g=c[h>>2]|0;c[g+172>>2]=f;g=g+176|0;q=c[g>>2]|0;c[g>>2]=q+1;c[f+(q<<2)>>2]=i;f=c[h>>2]|0;c[(c[f+172>>2]|0)+(c[f+176>>2]<<2)>>2]=0;f=c[j>>2]|0}b[f+170>>1]=p}l=Gx(a,l)|0}k=Ty(a,k)|0}return}function Wq(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;return (c[b>>2]|0)-(c[d>>2]|0)|0}function Xq(b,d){b=b|0;d=d|0;var e=0,f=0,i=0.0,j=0.0,k=0.0,m=0.0,n=0.0,o=0.0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0.0,A=0.0;y=l;l=l+64|0;u=y+24|0;s=y+16|0;r=y+52|0;q=y+40|0;t=y;w=ay(b)|0;x=vH(w*72|0)|0;qq(q,b);k=+g[q>>2];m=+g[q+4>>2];q=(a[q+8>>0]|0)!=0;k=q?k*.013888888888888888:k;m=q?m*.013888888888888888:m;n=k*.5;o=m*.5;e=x;f=Sy(b)|0;while(1){if(!f)break;p=c[f+16>>2]|0;i=+h[p+32>>3];if(q){j=+h[p+40>>3]*.5+m;i=i*.5+k}else{j=o*+h[p+40>>3];i=n*i}p=c[p+132>>2]|0;A=+h[p>>3];h[e>>3]=A;z=+h[p+8>>3];h[e+8>>3]=z;h[e+16>>3]=A-i;h[e+24>>3]=z-j;h[e+32>>3]=A+i;h[e+40>>3]=z+j;h[e+48>>3]=i;h[e+56>>3]=j;c[e+64>>2]=f;e=e+72|0;f=Ty(b,f)|0}do if((d|0)<0){i=+Yq(x,w);if(i==0.0){D_(x);e=0;break}if(!0){k=i;j=i;v=19}else{v=c[15686]|0;h[s>>3]=i;g1(v,92153,s)|0;k=i;j=i;v=19}}else{f=Zq(x,w,r)|0;e=c[r>>2]|0;if(!e){D_(f);D_(x);e=0;break}if(!d){$q(t,f,e);i=+h[t>>3];j=+h[t+8>>3]}else{j=+_q(f,e);i=j}D_(f);if(!0){k=i;v=19}else{v=c[15686]|0;h[u>>3]=i;h[u+8>>3]=j;g1(v,92167,u)|0;k=i;v=19}}while(0);if((v|0)==19){e=0;f=x;while(1){if((e|0)>=(w|0))break;v=c[(c[(c[f+64>>2]|0)+16>>2]|0)+132>>2]|0;h[v>>3]=+h[f>>3]*k;h[v+8>>3]=+h[f+8>>3]*j;e=e+1|0;f=f+72|0}D_(x);e=1}l=y;return e|0}function Yq(a,b){a=a|0;b=b|0;var c=0.0,d=0,e=0.0,f=0.0,g=0.0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;c=0.0;d=0;a:while(1){if((d|0)>=(b|0))break;r=a+72|0;d=d+1|0;m=a+16|0;n=a+8|0;o=a+56|0;p=a+48|0;q=a+32|0;k=a+24|0;l=a+40|0;i=d;j=r;while(1){if((i|0)>=(b|0)){a=r;continue a}if(((+h[m>>3]<=+h[j+32>>3]?+h[j+16>>3]<=+h[q>>3]:0)?+h[k>>3]<=+h[j+40>>3]:0)?+h[j+24>>3]<=+h[l>>3]:0){c=0.0;break a}e=+h[a>>3];f=+h[j>>3];if(e==f)g=t;else{g=+B(+(e-f));g=(+h[j+48>>3]+ +h[p>>3])/g}e=+h[n>>3];f=+h[j+8>>3];if(e==f)e=t;else{e=+B(+(e-f));e=(+h[j+56>>3]+ +h[o>>3])/e}g=ec?g:c}}return +c}function Zq(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0.0,g=0.0,i=0,j=0.0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;k=vH((b<<4)+16|0)|0;m=0;e=0;n=k;o=b;i=k;a:while(1){if((e|0)>=(b|0))break;z=a+72|0;e=e+1|0;y=a+16|0;r=a+32|0;s=a+24|0;u=a+40|0;v=a+8|0;w=a+56|0;x=a+48|0;p=e;q=z;l=i;while(1){if((p|0)==(b|0)){a=z;i=l;continue a}if(((+h[y>>3]<=+h[q+32>>3]?+h[q+16>>3]<=+h[r>>3]:0)?+h[s>>3]<=+h[q+40>>3]:0)?+h[q+24>>3]<=+h[u>>3]:0){i=o+b|0;if((m|0)==(o|0)){k=xH(k,(i<<4)+16|0)|0;n=k;l=k}else i=o;f=+h[a>>3];g=+h[q>>3];if(!(f==g)){f=(+h[q+48>>3]+ +h[x>>3])/+B(+(f-g));if(f<1.0){f=1.0;A=13}}else{f=t;A=13}if((A|0)==13)A=0;g=+h[v>>3];j=+h[q+8>>3];if(!(g==j)){g=(+h[q+56>>3]+ +h[w>>3])/+B(+(g-j));if(g<1.0){g=1.0;A=16}}else{g=t;A=16}if((A|0)==16)A=0;m=m+1|0;h[n+(m<<4)>>3]=f;h[n+(m<<4)+8>>3]=g}else i=o;p=p+1|0;q=q+72|0;o=i}}A=xH(i,(m<<4)+16|0)|0;c[d>>2]=m;return A|0}function _q(a,b){a=a|0;b=b|0;var c=0,d=0,e=0.0,f=0.0,g=0.0;d=1;e=0.0;while(1){c=a+16|0;if((d|0)>(b|0))break;g=+h[c>>3];f=+h[a+24>>3];f=ge?f:e;a=c}return +e}function $q(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0,f=0,g=0,i=0.0;h[b>>3]=1.0;h[b+8>>3]=t;_0(b+16|0,c,16,75);g=vH((c<<4)+16|0)|0;h[g+(c<<4)>>3]=+h[b+(c<<4)>>3];f=c;d=1.0;while(1){h[g+(f<<4)+8>>3]=d;e=f+-1|0;if((f|0)<=0){d=t;e=0;f=0;break}h[g+(e<<4)>>3]=+h[b+(e<<4)>>3];i=+h[(+h[b+(f<<4)+8>>3]>d?b:g)+(f<<4)+8>>3];f=e;d=i}while(1){if((f|0)>(c|0))break;i=+h[g+(f<<4)+8>>3]*+h[g+(f<<4)>>3];b=i>3];h[a>>3]=+h[g+(e<<4)>>3];h[a+8>>3]=i;return}else qa(92184,92122,832,92204)}function ar(a,b){a=a|0;b=b|0;var c=0.0,d=0.0;c=+h[a>>3];d=+h[b>>3];if(!(cd)){d=+h[a+8>>3];c=+h[b+8>>3];if(dc&1}else a=1;else a=-1;return a|0}function br(a){a=a|0;var b=0;if(a|0){b=c[a+4>>2]|0;if(b|0)D_(b);b=c[a+8>>2]|0;if(b|0)D_(b);b=c[a+16>>2]|0;if(b|0)D_(b);D_(a)}return}function cr(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;o=l;l=l+16|0;n=o+8|0;m=o;k=F_(c[46079]|0,d<<2)|0;c[46079]=k;f=0;while(1){if((f|0)>=(d|0))break;c[e+(f<<2)>>2]=2147483647;f=f+1|0}c[e+(a<<2)>>2]=0;h=b+(a*20|0)|0;i=b+(a*20|0)+8|0;j=b+(a*20|0)+4|0;f=1;while(1){if((f|0)>=(c[h>>2]|0))break;c[e+(c[(c[j>>2]|0)+(f<<2)>>2]<<2)>>2]=~~+g[(c[i>>2]|0)+(f<<2)>>2];f=f+1|0}dr(n,a,k,e,d);i=-2147483639;while(1){if(!((er(n,m,c[46079]|0,e)|0)<<24>>24)){f=0;break}f=c[m>>2]|0;a=c[e+(f<<2)>>2]|0;if((a|0)==2147483647){f=0;break}i=b+(f*20|0)|0;j=b+(f*20|0)+4|0;h=b+(f*20|0)+8|0;f=1;while(1){if((f|0)>=(c[i>>2]|0))break;fr(n,c[(c[j>>2]|0)+(f<<2)>>2]|0,a+~~+g[(c[h>>2]|0)+(f<<2)>>2]|0,c[46079]|0,e);f=f+1|0}i=a+10|0}while(1){if((f|0)>=(d|0))break;h=e+(f<<2)|0;if((c[h>>2]|0)==2147483647)c[h>>2]=i;f=f+1|0}gr(n);l=o;return}function dr(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;if((f|0)==1)i=0;else i=vH((f<<2)+-4|0)|0;c[a>>2]=i;j=f+-1|0;c[a+4>>2]=j;g=0;h=0;while(1){if((h|0)>=(f|0))break;if((h|0)!=(b|0)){c[i+(g<<2)>>2]=h;c[d+(h<<2)>>2]=g;g=g+1|0}h=h+1|0}g=(j|0)/2|0;while(1){if((g|0)<=-1)break;hr(a,g,d,e);g=g+-1|0}return}function er(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=a+4|0;if(!(c[f>>2]|0))a=0;else{g=c[a>>2]|0;c[b>>2]=c[g>>2];b=c[g+((c[f>>2]|0)+-1<<2)>>2]|0;c[g>>2]=b;c[d+(b<<2)>>2]=0;c[f>>2]=(c[f>>2]|0)+-1;hr(a,0,d,e);a=1}return a|0}function fr(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;g=f+(b<<2)|0;if((c[g>>2]|0)>(d|0)){j=e+(b<<2)|0;i=c[j>>2]|0;c[g>>2]=d;g=c[a>>2]|0;a=i;while(1){if((a|0)<=0)break;h=a>>>1;i=c[g+(h<<2)>>2]|0;if((c[f+(i<<2)>>2]|0)<=(d|0))break;c[g+(a<<2)>>2]=i;c[e+(i<<2)>>2]=a;a=h}c[g+(a<<2)>>2]=b;c[j>>2]=a}return}function gr(a){a=a|0;a=c[a>>2]|0;if(a|0)D_(a);return}function hr(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;i=a+4|0;while(1){f=b<<1;g=f|1;h=c[i>>2]|0;if(!((f|0)<(h|0)?(j=c[a>>2]|0,(c[e+(c[j+(f<<2)>>2]<<2)>>2]|0)<(c[e+(c[j+(b<<2)>>2]<<2)>>2]|0)):0))f=b;if((g|0)<(h|0)){j=c[a>>2]|0;f=(c[e+(c[j+(g<<2)>>2]<<2)>>2]|0)<(c[e+(c[j+(f<<2)>>2]<<2)>>2]|0)?g:f}if((f|0)==(b|0))break;j=c[a>>2]|0;h=j+(f<<2)|0;g=c[h>>2]|0;j=j+(b<<2)|0;c[h>>2]=c[j>>2];c[j>>2]=g;c[d+(c[h>>2]<<2)>>2]=f;c[d+(c[j>>2]<<2)>>2]=b;b=f}return}function ir(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,i=0,j=0,k=0.0,m=0,n=0,o=0,p=0;p=l;l=l+16|0;m=p+8|0;n=p;c[n>>2]=0;o=vH(d<<2)|0;f=0;while(1){if((f|0)>=(d|0))break;g[e+(f<<2)>>2]=3402823466385288598117041.0e14;f=f+1|0}g[e+(a<<2)>>2]=0.0;h=c[b+(a*20|0)>>2]|0;i=b+(a*20|0)+8|0;j=b+(a*20|0)+4|0;f=1;while(1){if((f|0)>=(h|0))break;c[e+(c[(c[j>>2]|0)+(f<<2)>>2]<<2)>>2]=c[(c[i>>2]|0)+(f<<2)>>2];f=f+1|0}jr(m,a,o,e,d);a:while(1){if(!((kr(m,n,o,e)|0)<<24>>24))break;f=c[n>>2]|0;k=+g[e+(f<<2)>>2];if(k==3402823466385288598117041.0e14)break;i=b+(f*20|0)|0;j=b+(f*20|0)+4|0;h=b+(f*20|0)+8|0;f=1;while(1){if((f|0)>=(c[i>>2]|0))continue a;lr(m,c[(c[j>>2]|0)+(f<<2)>>2]|0,+g[(c[h>>2]|0)+(f<<2)>>2]+k,o,e);f=f+1|0}}gr(m);D_(o);l=p;return}function jr(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;i=f+-1|0;j=vH(i<<2)|0;c[a>>2]=j;c[a+4>>2]=i;g=0;h=0;while(1){if((h|0)>=(f|0))break;if((h|0)!=(b|0)){c[j+(g<<2)>>2]=h;c[d+(h<<2)>>2]=g;g=g+1|0}h=h+1|0}g=(i|0)/2|0;while(1){if((g|0)<=-1)break;mr(a,g,d,e);g=g+-1|0}return}function kr(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=a+4|0;if(!(c[f>>2]|0))a=0;else{g=c[a>>2]|0;c[b>>2]=c[g>>2];b=c[g+((c[f>>2]|0)+-1<<2)>>2]|0;c[g>>2]=b;c[d+(b<<2)>>2]=0;c[f>>2]=(c[f>>2]|0)+-1;mr(a,0,d,e);a=1}return a|0}function lr(a,b,d,e,f){a=a|0;b=b|0;d=+d;e=e|0;f=f|0;var h=0,i=0,j=0,k=0;h=f+(b<<2)|0;if(!(+g[h>>2]<=d)){k=e+(b<<2)|0;j=c[k>>2]|0;g[h>>2]=d;h=c[a>>2]|0;a=j;while(1){if((a|0)<=0)break;i=a>>>1;j=c[h+(i<<2)>>2]|0;if(!(+g[f+(j<<2)>>2]>d))break;c[h+(a<<2)>>2]=j;c[e+(j<<2)>>2]=a;a=i}c[h+(a<<2)>>2]=b;c[k>>2]=a}return}function mr(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,i=0,j=0,k=0;j=a+4|0;while(1){f=b<<1;h=f|1;i=c[j>>2]|0;if(!((f|0)<(i|0)?(k=c[a>>2]|0,+g[e+(c[k+(f<<2)>>2]<<2)>>2]<+g[e+(c[k+(b<<2)>>2]<<2)>>2]):0))f=b;if((h|0)<(i|0)?(k=c[a>>2]|0,+g[e+(c[k+(h<<2)>>2]<<2)>>2]<+g[e+(c[k+(f<<2)>>2]<<2)>>2]):0)f=h;if((f|0)==(b|0))break;k=c[a>>2]|0;i=k+(f<<2)|0;h=c[i>>2]|0;k=k+(b<<2)|0;c[i>>2]=c[k>>2];c[k>>2]=h;c[d+(c[i>>2]<<2)>>2]=f;c[d+(c[k>>2]<<2)>>2]=b;b=f}return}function nr(){gt(184320,48);c[46083]=0;return}function or(a,b){a=a|0;b=b|0;var d=0.0,e=0.0,f=0.0,g=0.0,i=0;i=it(184320)|0;c[i+32>>2]=a;c[i+36>>2]=b;Pt(a);Pt(b);c[i+24>>2]=0;c[i+28>>2]=0;f=+h[a>>3];g=+h[b>>3]-f;e=+h[a+8>>3];d=+h[b+8>>3]-e;f=d*e+g*f+(d*d+g*g)*.5;b=i+16|0;h[b>>3]=f;if((g>0.0?g:-g)>(d>0.0?d:-d)){h[i>>3]=1.0;e=d/g;d=g;a=i+8|0}else{h[i+8>>3]=1.0;e=g/d;a=i}h[a>>3]=e;h[b>>3]=f/d;b=c[46083]|0;c[i+40>>2]=b;c[46083]=b+1;return i|0}function pr(a){a=a|0;var b=0,d=0,e=0.0,f=0.0,g=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0;l=+h[a>>3];a:do if(l==1.0){if(!(+h[a+8>>3]>=0.0)){b=c[a+28>>2]|0;d=c[a+24>>2]|0;if(!d)m=9;else m=5}else{b=c[a+24>>2]|0;d=c[a+28>>2]|0;if(!d)m=9;else m=5}do if((m|0)==5){e=+h[d+8>>3];if(e>+h[22881])break a;f=+h[22882];if(!(e>=f)){i=f;e=+h[a+16>>3]-+h[a+8>>3]*f;break}else{i=e;e=+h[d>>3];break}}else if((m|0)==9){f=+h[22882];i=f;e=+h[a+16>>3]-+h[a+8>>3]*f}while(0);do if(b){g=+h[b+8>>3];if(g>3]-+h[a+8>>3]*f;break}else{f=+h[b>>3];break}}else{f=+h[22881];g=f;f=+h[a+16>>3]-+h[a+8>>3]*f}while(0);j=+h[22883];b=e>j;d=f>j;k=+h[22884];if(!(b&d|e>3]-j)/+h[a+8>>3];e=j}if(e>3]-k)/+h[a+8>>3];e=k}if(d){g=(+h[a+16>>3]-j)/+h[a+8>>3];f=j}if(f>3]-k)/+h[a+8>>3];f=k;m=46}else m=46}}else{d=c[a+28>>2]|0;b=c[a+24>>2]|0;do if(b){e=+h[b>>3];if(e>+h[22883])break a;g=+h[22884];if(!(e>=g)){i=+h[a+16>>3]-g*l;e=g;break}else{i=+h[b+8>>3];break}}else{g=+h[22884];i=+h[a+16>>3]-g*l;e=g}while(0);do if(d){f=+h[d>>3];if(f>3]-l*j;f=j;break}else{g=+h[d+8>>3];break}}else{f=+h[22883];g=+h[a+16>>3]-l*f}while(0);j=+h[22881];b=i>j;d=g>j;k=+h[22882];if(!(b&d|i>3]-j)/l}if(i>3]-k)/l}if(d){g=j;f=(+h[a+16>>3]-j)/l}if(g>3]-k)/l;m=46}else m=46}}while(0);if((m|0)==46)qr(a,e,i,f,g);return}function qr(a,b,d,e,f){a=a|0;b=+b;d=+d;e=+e;f=+f;var g=0;g=a+32|0;Xr(c[g>>2]|0,b,d);Xr(c[g>>2]|0,e,f);a=a+36|0;Xr(c[a>>2]|0,b,d);Xr(c[a>>2]|0,e,f);return}function rr(a,b,d){a=a|0;b=b|0;d=d|0;c[a+24+(b<<2)>>2]=d;Pt(d);if(c[a+24+(1-b<<2)>>2]|0){pr(a);Ot(c[a+32>>2]|0);Ot(c[a+36>>2]|0);jt(a,184320)}return}function sr(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;p=l;l=l+16|0;o=p;m=b<<2;h=vH(O(m,d)|0)|0;g=c[e>>2]|0;m=vH(m)|0;n=c[a+8>>2]|0;if(g|0){D_(c[g>>2]|0);D_(g)}k=vH(d<<2)|0;c[e>>2]=k;g=0;while(1){if((g|0)>=(d|0))break;c[k+(g<<2)>>2]=h+((O(g,b)|0)<<2);g=g+1|0}j=(f|0)!=0;if(j)es(a,b);e=(g2()|0)%(b|0)|0;zq(o,b);g=c[k>>2]|0;if(j){cr(e,a,b,g);f=0;g=0}else{vq(e,a,b,g,o);f=0;g=0}while(1){if((g|0)>=(b|0)){i=1;break}h=c[(c[k>>2]|0)+(g<<2)>>2]|0;c[m+(g<<2)>>2]=h;i=(h|0)>(f|0);f=i?h:f;e=i?g:e;g=g+1|0}while(1){if((i|0)>=(d|0))break;h=k+(i<<2)|0;g=c[h>>2]|0;if(j){cr(e,a,b,g);g=0;f=0}else{vq(e,a,b,g,o);g=0;f=0}while(1){if((g|0)>=(b|0))break;s=m+(g<<2)|0;q=c[s>>2]|0;r=c[(c[h>>2]|0)+(g<<2)>>2]|0;r=(q|0)<(r|0)?q:r;c[s>>2]=r;s=(r|0)>(f|0);q=s?g:e;g=g+1|0;f=s?r:f;e=q}i=i+1|0}D_(m);if(j)fs(a,b,n);l=p;return}function tr(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0,g=0,h=0,i=0.0,j=0,k=0;i=1.0/+(b|0);h=0;while(1){if((h|0)>=(d|0))break;j=a+(h<<2)|0;e=0.0;f=0;while(1){if((f|0)>=(b|0))break;e=e+ +(c[(c[j>>2]|0)+(f<<2)>>2]|0);f=f+1|0}g=~~(e*i);f=0;while(1){if((f|0)>=(b|0))break;k=(c[j>>2]|0)+(f<<2)|0;c[k>>2]=(c[k>>2]|0)-g;f=f+1|0}h=h+1|0}return}function ur(){c[46085]=~~+C(+(+((c[46084]|0)+4|0)));return}function vr(a,b){a=a|0;b=b|0;var c=0.0,d=0.0;c=+h[a>>3]-+h[b>>3];d=+h[a+8>>3]-+h[b+8>>3];return +(d*d+c*c)}function wr(a,b,c){a=a|0;b=b|0;c=c|0;h[a>>3]=+h[b>>3]-+h[c>>3];h[a+8>>3]=+h[b+8>>3]-+h[c+8>>3];return}function xr(a,b,c){a=a|0;b=b|0;c=c|0;h[a>>3]=+h[c>>3]+ +h[b>>3];h[a+8>>3]=+h[c+8>>3]+ +h[b+8>>3];return}function yr(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0;d=+h[b+8>>3];e=+h[b>>3];return +((+h[c>>3]-e)*(+h[a+8>>3]-d)-(+h[a>>3]-e)*(+h[c+8>>3]-d))}function zr(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+48|0;f=e+32|0;g=e+16|0;h=e;c[h>>2]=c[a>>2];c[h+4>>2]=c[a+4>>2];c[h+8>>2]=c[a+8>>2];c[h+12>>2]=c[a+12>>2];c[g>>2]=c[b>>2];c[g+4>>2]=c[b+4>>2];c[g+8>>2]=c[b+8>>2];c[g+12>>2]=c[b+12>>2];c[f>>2]=c[d>>2];c[f+4>>2]=c[d+4>>2];c[f+8>>2]=c[d+8>>2];c[f+12>>2]=c[d+12>>2];d=+yr(h,g,f)>0.0&1;l=e;return d|0}function Ar(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0.0,g=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0;o=+h[a>>3];p=+h[d+8>>3];q=+h[c+8>>3];m=(p-q)*o;n=+h[b>>3];l=+h[d>>3];k=+h[b+8>>3];i=+h[a+8>>3];j=k-i;f=+h[c>>3];g=m+n*(q-p)+j*l+f*(i-k);if(g==0.0)d=0;else{p=(f*(i-p)+m+(q-i)*l)/g;q=-(f*j+((q-k)*o+(i-q)*n))/g;h[e>>3]=p*(n-o)+o;h[e+8>>3]=j*p+i;d=q<=1.0&(q>=0.0&(p>=0.0&p<=1.0))&1}return d|0}function Br(a,b,d){a=a|0;b=b|0;d=+d;var e=0,f=0,g=0.0,i=0;c[a+20>>2]=b;Pt(b);i=a+24|0;h[i>>3]=+h[b+8>>3]+d;e=c[46086]|0;e=e+((Cr(a)|0)*40|0)|0;while(1){f=e+32|0;e=c[f>>2]|0;if(!e)break;d=+h[i>>3];g=+h[e+24>>3];if(d>g)continue;if(!(d==g))break;if(!(+h[b>>3]>+h[c[e+20>>2]>>3]))break}c[a+32>>2]=e;c[f>>2]=a;c[46087]=(c[46087]|0)+1;return}function Cr(a){a=a|0;var b=0.0,d=0,e=0.0;d=c[46088]|0;e=+(d|0);b=(+h[a+24>>3]-+h[22888])/+h[22890]*e;do if(!(b<0.0))if(!(b>=e)){a=~~b;break}else{a=d+-1|0;break}else a=0;while(0);if((a|0)<(c[46089]|0))c[46089]=a;return a|0}function Dr(a){a=a|0;var b=0,d=0,e=0;d=a+20|0;if(c[d>>2]|0){b=c[46086]|0;b=b+((Cr(a)|0)*40|0)|0;do{e=b+32|0;b=c[e>>2]|0}while((b|0)!=(a|0));c[e>>2]=c[a+32>>2];c[46087]=(c[46087]|0)+-1;Ot(c[d>>2]|0);c[d>>2]=0}return}function Er(){return (c[46087]|0)==0|0}function Fr(a){a=a|0;var b=0,d=0,e=0,f=0.0;b=c[46086]|0;d=c[46089]|0;while(1){e=c[b+(d*40|0)+32>>2]|0;if(e|0)break;e=d+1|0;c[46089]=e;d=e}f=+h[e+24>>3];h[a>>3]=+h[c[e+20>>2]>>3];h[a+8>>3]=f;return}function Gr(){var a=0,b=0;b=(c[46086]|0)+((c[46089]|0)*40|0)+32|0;a=c[b>>2]|0;c[b>>2]=c[a+32>>2];c[46087]=(c[46087]|0)+-1;return a|0}function Hr(){D_(c[46086]|0);c[46086]=0;return}function Ir(){var a=0,b=0,d=0;c[46087]=0;c[46089]=0;a=c[46085]|0;b=a<<2;c[46088]=b;d=c[46086]|0;if(!d){d=vH(a*160|0)|0;c[46086]=d;b=c[46088]|0}a=0;while(1){if((a|0)>=(b|0))break;c[d+(a*40|0)+32>>2]=0;a=a+1|0}return}function Jr(){gt(184368,40);D_(c[46095]|0);c[46095]=0;return}function Kr(){var a=0,b=0,d=0;gt(184368,40);a=c[46085]|0;b=a<<1;c[46096]=b;d=c[46095]|0;if(!d){d=vH(a<<3)|0;c[46095]=d;b=c[46096]|0}a=0;while(1){if((a|0)>=(b|0))break;c[d+(a<<2)>>2]=0;a=a+1|0}c[46090]=Lr(0,0)|0;c[46091]=Lr(0,0)|0;c[c[46090]>>2]=0;d=c[46091]|0;b=c[46090]|0;c[b+4>>2]=d;c[d>>2]=b;c[(c[46091]|0)+4>>2]=0;d=c[46095]|0;c[d>>2]=c[46090];c[d+((c[46096]|0)+-1<<2)>>2]=c[46091];return}function Lr(b,d){b=b|0;d=d|0;var e=0;e=it(184368)|0;c[e+8>>2]=b;a[e+16>>0]=d;c[e+32>>2]=0;c[e+20>>2]=0;c[e+12>>2]=0;return e|0}function Mr(b,d){b=b|0;d=d|0;var e=0,f=0.0,g=0.0,i=0,j=0.0,k=0,l=0.0,m=0.0,n=0.0,o=0,p=0.0,q=0.0;i=c[b+8>>2]|0;k=c[d+8>>2]|0;do if((!((i|0)==0|(k|0)==0)?(o=c[i+36>>2]|0,e=c[k+36>>2]|0,(o|0)!=(e|0)):0)?(j=+h[i>>3],f=+h[k+8>>3],g=+h[i+8>>3],l=+h[k>>3],m=f*j-l*g,!(m>-1.0e-10&m<1.0e-10)):0){p=+h[i+16>>3];q=+h[k+16>>3];n=(p*f-q*g)/m;j=(q*j-p*l)/m;f=+h[o+8>>3];g=+h[e+8>>3];do if(f>3]<+h[e>>3]:0){e=o;break}b=d}while(0);b=a[b+16>>0]|0;if(!(n>=+h[e>>3])){if(b<<24>>24==1){b=0;break}}else if(!(b<<24>>24)){b=0;break}b=Lt()|0;c[b+20>>2]=0;h[b>>3]=n;h[b+8>>3]=j}else b=0;while(0);return b|0}function Nr(b,d){b=b|0;d=d|0;var e=0.0,f=0,g=0.0,i=0.0,j=0.0,k=0,l=0.0,m=0,n=0,o=0.0,p=0;n=c[b+8>>2]|0;k=c[n+36>>2]|0;l=+h[d>>3];o=+h[k>>3];m=l>o;p=a[b+16>>0]|0;if(m)if(!(p<<24>>24))b=1;else f=4;else if(p<<24>>24==1)b=0;else f=4;if((f|0)==4){e=+h[n>>3];a:do if(e==1.0){e=+h[d+8>>3];g=e-+h[k+8>>3];i=l-o;j=+h[n+8>>3];d=j<0.0;do if(m?j>=0.0:d){if(g>=j*i){b=1;break a}}else{b=j*e+l>+h[n+16>>3];if(d)if(b){b=0;break a}else break;else if(b)break;else{b=0;break a}}while(0);o=o-+h[c[n+32>>2]>>3];b=j*(i*i-g*g)>3]-l*e;j=+h[d+8>>3]-i;o=l-o;l=i-+h[k+8>>3];b=j*j>l*l+o*o}while(0);b=(b^p<<24>>24!=0)&1}return b|0}function Or(a,b){a=a|0;b=b|0;c[b>>2]=a;a=a+4|0;c[b+4>>2]=c[a>>2];c[c[a>>2]>>2]=b;c[a>>2]=b;return}function Pr(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;f=c[46096]|0;b=~~((+h[a>>3]-+h[22887])/+h[22889]*+(f|0));b=(b|0)>0?b:0;f=(b|0)<(f|0)?b:f+-1|0;b=Qr(f)|0;if(!b){d=1;while(1){b=Qr(f-d|0)|0;if(b|0)break;b=Qr(d+f|0)|0;if(b|0)break;d=d+1|0}c[46097]=(c[46097]|0)+d}c[46098]=(c[46098]|0)+1;e=c[46090]|0;d=c[46091]|0;a:do if((b|0)==(e|0))g=9;else{if((b|0)!=(d|0)?(Nr(b,a)|0)!=0:0){g=9;break}while(1){b=c[b>>2]|0;if((b|0)==(e|0))break a;if(Nr(b,a)|0){e=b;break}}}while(0);if((g|0)==9){while(1){b=c[b+4>>2]|0;if((b|0)==(d|0))break;if(!(Nr(b,a)|0))break;else g=9}e=c[b>>2]|0}if((f|0)>0?(f|0)<((c[46096]|0)+-1|0):0){b=(c[46095]|0)+(f<<2)|0;d=c[b>>2]|0;if(d|0){g=d+12|0;c[g>>2]=(c[g>>2]|0)+-1}c[b>>2]=e;g=e+12|0;c[g>>2]=(c[g>>2]|0)+1}return e|0}function Qr(a){a=a|0;var b=0,d=0;if((a|0)>-1&(c[46096]|0)>(a|0)?(d=(c[46095]|0)+(a<<2)|0,b=c[d>>2]|0,(b|0)!=0):0){if((c[b+8>>2]|0)==(-2|0)){c[d>>2]=0;a=b+12|0;d=(c[a>>2]|0)+-1|0;c[a>>2]=d;if(!d){jt(b,184368);b=0}else b=0}}else b=0;return b|0}function Rr(a){a=a|0;var b=0,d=0;b=a+4|0;d=c[a>>2]|0;c[d+4>>2]=c[b>>2];c[c[b>>2]>>2]=d;c[a+8>>2]=-2;return}function Sr(a){a=a|0;return c[a+4>>2]|0}function Tr(a){a=a|0;return c[a>>2]|0}function Ur(b){b=b|0;var d=0;d=c[b+8>>2]|0;if(!d)b=184588;else b=(a[b+16>>0]|0)==0?d+32|0:d+36|0;return c[b>>2]|0}function Vr(b){b=b|0;var d=0;d=c[b+8>>2]|0;if(!d)b=184588;else b=(a[b+16>>0]|0)==0?d+36|0:d+32|0;return c[b>>2]|0}function Wr(){gt(184400,24);return}function Xr(a,b,d){a=a|0;b=+b;d=+d;var e=0,f=0,g=0,i=0,j=0;j=l;l=l+32|0;i=j;g=(c[46099]|0)+((c[a+16>>2]|0)*96|0)+88|0;f=c[g>>2]|0;h[i+8>>3]=b;h[i+16>>3]=d;e=Yr(a,i,f)|0;do if(e|0){if((e|0)<0){i=it(184400)|0;h[i+8>>3]=b;h[i+16>>3]=d;c[i>>2]=f;c[g>>2]=i;break}while(1){e=c[f>>2]|0;g=Yr(a,i,e)|0;if((g|0)>0)f=e;else break}if(g|0){i=it(184400)|0;h[i+8>>3]=b;h[i+16>>3]=d;c[f>>2]=i;c[i>>2]=e}}while(0);l=j;return}function Yr(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0,f=0.0,g=0.0,i=0.0,j=0.0,k=0.0;do if(c){e=+h[b+8>>3];i=+h[c+8>>3];d=+h[b+16>>3];f=+h[c+16>>3];if(!(e==i&d==f)){k=+h[a>>3];j=e-k;e=+h[a+8>>3];g=d-e;i=i-k;d=f-e;if(!(j>=0.0)){if(i>=0.0){b=1;break}e=d/i;d=g/j;if(de){b=1;break}b=j>i?-1:1;break}if(!(i<0.0)){b=i>0.0;if(!(j>0.0)){if(b){b=!(g<=0.0)?1:-1;break}if(g0.0?-1:1;break}e=d/i;d=g/j;if(de){b=1;break}b=j>2]|0;d=a+(d*20|0)+4|0;b=1;a=0;while(1){if((b|0)>=(f|0))break;g=a+((c[e+(c[(c[d>>2]|0)+(b<<2)>>2]<<2)>>2]|0)>0&1)|0;b=b+1|0;a=g}return a|0}function _r(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=a+(b*20|0)|0;b=a+(b*20|0)+4|0;a=1;while(1){if((a|0)>=(c[e>>2]|0))break;c[d+(c[(c[b>>2]|0)+(a<<2)>>2]<<2)>>2]=1;a=a+1|0}return}function $r(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=a+(b*20|0)|0;b=a+(b*20|0)+4|0;a=1;while(1){if((a|0)>=(c[e>>2]|0))break;c[d+(c[(c[b>>2]|0)+(a<<2)>>2]<<2)>>2]=0;a=a+1|0}return}function as(a,b){a=a|0;b=b|0;if(!(c[a+8>>2]|0))a=cs(a,b)|0;else a=bs(a,b)|0;return a|0}function bs(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=b<<2;e=vH(O(f,b)|0)|0;f=vH(f)|0;d=0;while(1){if((d|0)>=(b|0)){d=0;break}c[f+(d<<2)>>2]=e+((O(d,b)|0)<<2);d=d+1|0}while(1){if((d|0)>=(b|0))break;cr(d,a,b,c[f+(d<<2)>>2]|0);d=d+1|0}return f|0}function cs(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;h=l;l=l+16|0;f=h;g=b<<2;e=vH(O(g,b)|0)|0;g=vH(g)|0;d=0;while(1){if((d|0)>=(b|0))break;c[g+(d<<2)>>2]=e+((O(d,b)|0)<<2);d=d+1|0}zq(f,b);d=0;while(1){if((d|0)>=(b|0))break;vq(d,a,b,c[g+(d<<2)>>2]|0,f);d=d+1|0}Aq(f);l=h;return g|0}function ds(a,b){a=a|0;b=b|0;var d=0,e=0;e=c[a+8>>2]|0;es(a,b);d=bs(a,b)|0;fs(a,b,e);return d|0}function es(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;l=vH(b<<2)|0;d=0;e=0;while(1){if((d|0)>=(b|0))break;k=(c[a+(d*20|0)>>2]|0)+e|0;d=d+1|0;e=k}e=vH(e<<2)|0;d=0;while(1){if((d|0)>=(b|0))break;c[l+(d<<2)>>2]=0;d=d+1|0}f=0;while(1){if((f|0)>=(b|0))break;c[a+(f*20|0)+8>>2]=e;_r(a,f,l);h=a+(f*20|0)|0;i=c[h>>2]|0;j=a+(f*20|0)+4|0;k=i+-2|0;d=1;while(1){if((d|0)>=(i|0))break;m=c[(c[j>>2]|0)+(d<<2)>>2]|0;n=c[a+(m*20|0)>>2]|0;g[e+(d<<2)>>2]=+(k+n-((Zr(a,0,m,l)|0)<<1)|0);d=d+1|0}$r(a,f,l);e=e+(c[h>>2]<<2)|0;f=f+1|0}D_(l);return}function fs(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=a+8|0;D_(c[e>>2]|0);c[e>>2]=0;a:do if(d|0){e=0;while(1){if((e|0)>=(b|0))break a;c[a+(e*20|0)+8>>2]=d;f=d+(c[a+(e*20|0)>>2]<<2)|0;e=e+1|0;d=f}}while(0);return}function gs(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0.0,i=0.0,j=0;f=0;g=0.0;while(1){if((f|0)>=(b|0))break;j=c[a+(f<<2)>>2]|0;i=+h[j+(d<<3)>>3]-+h[j+(e<<3)>>3];f=f+1|0;g=i*i+g}return +(+C(+g))}function hs(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;if((e|0)>(d|0)){c[46103]=a;_0(b+(d<<2)|0,1-d+e|0,4,76)}return}function is(a,b){a=a|0;b=b|0;var d=0.0,e=0.0,f=0;f=c[46103]|0;e=+g[f+(c[a>>2]<<2)>>2];d=+g[f+(c[b>>2]<<2)>>2];return (ed&1)|0}function js(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;h=l;l=l+16|0;f=h;if((d|0)<(e|0)){ks(a,b,d,e,f);g=c[f>>2]|0;f=g+-1|0;js(a,b,d,f);g=g+1|0;js(a,b,g,e);if(!(ls(a,b,d,f)|0))js(a,b,d,f);if(!(ls(a,b,g,e)|0))js(a,b,g,e)}l=h;return}function ks(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0,k=0,l=0.0,m=0,n=0;g=g2()|0;g=b+(((((g2()|0)<<16|g)>>>0)%((1-d+e|0)>>>0)|0)+d<<2)|0;j=c[g>>2]|0;k=b+(d<<2)|0;c[g>>2]=c[k>>2];c[k>>2]=j;l=+h[a+(j<<3)>>3];g=d+1|0;d=e;a:while(1){if((g|0)>=(d|0))break;while(1){if((g|0)>=(d|0))break;if(!(+h[a+(c[b+(g<<2)>>2]<<3)>>3]<=l))break;g=g+1|0}while(1){if((g|0)>=(d|0))continue a;e=b+(d<<2)|0;i=c[e>>2]|0;if(!(+h[a+(i<<3)>>3]>l))break;d=d+-1|0}n=b+(g<<2)|0;m=c[n>>2]|0;c[n>>2]=i;c[e>>2]=m;g=g+1|0;d=d+-1|0}n=g+((+h[a+(c[b+(g<<2)>>2]<<3)>>3]>l)<<31>>31)|0;c[f>>2]=n;n=b+(n<<2)|0;c[k>>2]=c[n>>2];c[n>>2]=j;return}function ls(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;g=1;while(1){f=d+1|0;if(!((d|0)<(e|0)&(g|0)!=0))break;g=+h[a+(c[b+(d<<2)>>2]<<3)>>3]>+h[a+(c[b+(f<<2)>>2]<<3)>>3]?0:g;d=f}return g|0}function ms(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0.0,i=0.0,j=0.0,k=0.0,m=0,n=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0.0,A=0.0;x=l;l=l+16|0;v=4;w=C_(40)|0;c[w>>2]=0;t=x;o=0;u=$(23,b*40|0)|0;d=o;o=0;if((d|0)!=0&(p|0)!=0){e=E3(c[d>>2]|0,w|0,v|0)|0;if(!e)bb(d|0,p|0);z=p}else e=-1;if((e|0)!=1){d=0;r=0;while(1){if((d|0)>=(b|0))break;s=(c[(c[a+(d<<2)>>2]|0)+4>>2]|0)+r|0;d=d+1|0;r=s}o=0;s=$(23,r*24|0)|0;d=o;o=0;if((d|0)!=0&(p|0)!=0){e=E3(c[d>>2]|0,w|0,v|0)|0;if(!e)bb(d|0,p|0);z=p}else e=-1;if((e|0)!=1){d=0;m=0;while(1){if((m|0)>=(b|0))break;n=u+(m*40|0)|0;c[n>>2]=s+(d*24|0);q=a+(m<<2)|0;f=0;g=1797693134862315708145274.0e284;i=-1797693134862315708145274.0e284;j=-1797693134862315708145274.0e284;k=1797693134862315708145274.0e284;while(1){e=c[q>>2]|0;if((f|0)>=(c[e+4>>2]|0))break;e=c[e>>2]|0;A=+h[e+(f<<4)>>3];y=+h[e+(f<<4)+8>>3];h[s+(d*24|0)>>3]=A;h[s+(d*24|0)+8>>3]=y;c[s+(d*24|0)+16>>2]=n;c[s+(d*24|0)+20>>2]=0;f=f+1|0;d=d+1|0;g=gA?i:A;j=j>y?j:y;k=k>2]=s+((d+-1|0)*24|0);h[u+(m*40|0)+8>>3]=g;h[u+(m*40|0)+16>>3]=k;h[u+(m*40|0)+24>>3]=i;h[u+(m*40|0)+32>>3]=j;m=m+1|0}c[t>>2]=r;c[t+4>>2]=b;w=D3(184416,1,w|0,v|0)|0;v=z;o=0;d=o;o=0;if((d|0)!=0&(p|0)!=0){e=E3(c[d>>2]|0,w|0,v|0)|0;if(!e)bb(d|0,p|0);z=p}else e=-1;if((e|0)==1){d=z;q=s;m=s;n=u}else{d=0;q=s;m=s;n=u}}else{d=z;q=0;m=s;n=u}}else{d=z;q=0;m=0;n=0}while(1){if(d|0){o=0;ia(103,u|0);d=o;o=0;if((d|0)!=0&(p|0)!=0){e=E3(c[d>>2]|0,w|0,v|0)|0;if(!e)bb(d|0,p|0);z=p}else e=-1;if((e|0)==1){f=n;r=m;s=q;d=z;n=f;m=r;q=s;continue}o=0;ia(103,m|0);d=o;o=0;if((d|0)!=0&(p|0)!=0){e=E3(c[d>>2]|0,w|0,v|0)|0;if(!e)bb(d|0,p|0);z=p}else e=-1;if((e|0)==1){f=n;r=m;s=q;d=z;n=f;m=r;q=s;continue}else{e=17;break}}o=0;d=aa(77,q|0,t|0)|0;e=o;o=0;if((e|0)!=0&(p|0)!=0){f=E3(c[e>>2]|0,w|0,v|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)==1){f=n;r=m;s=q;d=z;n=f;m=r;q=s;continue}if(!d){o=0;d=ca(24,a|0,b|0,n|0)|0;e=o;o=0;if((e|0)!=0&(p|0)!=0){f=E3(c[e>>2]|0,w|0,v|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)==1){f=n;r=m;s=q;d=z;n=f;m=r;q=s;continue}}o=0;ia(103,u|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=E3(c[e>>2]|0,w|0,v|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)==1){f=n;r=m;s=q;d=z;n=f;m=r;q=s;continue}o=0;ia(103,m|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=E3(c[e>>2]|0,w|0,v|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)==1){f=n;r=m;s=q;d=z;n=f;m=r;q=s}else{e=24;break}}if((e|0)==17)d=0;else if((e|0)==24)d=(d|0)==0&1;D_(w|0);l=x;return d|0}function ns(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;v=l;l=l+16|0;q=v;o=v+8|0;p=v+4|0;c[b+8>>2]=0;u=vH(c[b>>2]<<2)|0;f=c[b>>2]|0;e=0;while(1){if((e|0)>=(f|0))break;c[u+(e<<2)>>2]=a+(e*24|0);e=e+1|0}_0(u,f,4,78);m=0;g=0;f=0;h=0;a:while(1){if((m|0)>=(c[b>>2]|0)){s=0;d=g;t=h;break}n=u+(m<<2)|0;e=c[n>>2]|0;c[o>>2]=e;a=c[e+16>>2]|0;if((c[a>>2]|0)==(e|0))e=c[a+4>>2]|0;else e=e+-24|0;c[p>>2]=e;k=0;a=g;j=h;while(1){if((k|0)>=2)break;switch(ps(o,p)|0){case -1:{g=0;h=a;while(1){if((g|0)>=(j|0))break;i=qs(c[h>>2]|0,e)|0;if(i|0){s=i;d=a;t=j;break a}g=g+1|0;h=c[h+4>>2]|0}g=vH(12)|0;if(!j){f=0;a=g}else c[f+4>>2]=g;c[g+8>>2]=f;c[g>>2]=e;c[g+4>>2]=0;c[e+20>>2]=g;h=j+1|0;break}case 1:{e=e+20|0;g=c[e>>2]|0;if(!g){r=19;break a}do if((j|0)!=1){if((g|0)==(a|0)){a=c[a+4>>2]|0;c[a+8>>2]=0;break}if((g|0)==(f|0)){f=c[f+8>>2]|0;c[f+4>>2]=0;break}else{i=g+4|0;h=c[g+8>>2]|0;c[h+4>>2]=c[i>>2];c[(c[i>>2]|0)+8>>2]=h;break}}else{a=0;f=0}while(0);D_(g);c[e>>2]=0;g=f;h=j+-1|0;break}default:{g=f;h=j}}e=c[n>>2]|0;f=c[e+16>>2]|0;if((e|0)==(c[f+4>>2]|0))f=c[f>>2]|0;else f=e+24|0;c[p>>2]=f;k=k+1|0;f=g;j=h}m=m+1|0;g=a;h=j}if((r|0)==19){Pw(1,92219,q)|0;bb(184416,1)}e=0;while(1){if((e|0)>=(t|0))break;r=c[d+4>>2]|0;D_(d);e=e+1|0;d=r}D_(u);l=v;return s|0}function os(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0.0,g=0,i=0,j=0.0,k=0.0,m=0,n=0,o=0,p=0,q=0,r=0.0,s=0.0,t=0.0,u=0,v=0.0,w=0.0,x=0.0,y=0.0,z=0,A=0,B=0,C=0,D=0,E=0.0;D=l;l=l+48|0;o=D+24|0;n=D+16|0;u=D;e=0;a:while(1){if((e|0)>=(b|0)){e=0;break}z=c[a+(e<<2)>>2]|0;A=c[z>>2]|0;c[u>>2]=c[A>>2];c[u+4>>2]=c[A+4>>2];c[u+8>>2]=c[A+8>>2];c[u+12>>2]=c[A+12>>2];A=e+1|0;B=d+(e*40|0)+8|0;p=d+(e*40|0)+24|0;q=d+(e*40|0)+32|0;g=d+(e*40|0)+16|0;e=A;while(1){if((e|0)>=(b|0)){e=A;continue a}i=c[a+(e<<2)>>2]|0;j=+h[B>>3];k=+h[d+(e*40|0)+24>>3];m=!(j<=k);f=+h[d+(e*40|0)+8>>3];if((((!(m|!(j>=f))?(r=+h[g>>3],s=+h[d+(e*40|0)+32>>3],r<=s):0)?(t=+h[d+(e*40|0)+16>>3],r>=t):0)?(E=+h[p>>3],!(!(E<=k)|!(E>=f))):0)?(E=+h[q>>3],!(!(E<=s)|!(E>=t))):0){c[n>>2]=c[i>>2];c[n+4>>2]=c[i+4>>2];c[o>>2]=c[u>>2];c[o+4>>2]=c[u+4>>2];c[o+8>>2]=c[u+8>>2];c[o+12>>2]=c[u+12>>2];if(wU(n,o)|0){e=1;break a}}else C=11;if((((((C|0)==11?(C=0,v=+h[p>>3],!(!(f<=v)|!(f>=j))):0)?(w=+h[d+(e*40|0)+16>>3],x=+h[q>>3],w<=x):0)?(y=+h[g>>3],!(!(w>=y)|(!(k<=v)|m))):0)?(E=+h[d+(e*40|0)+32>>3],!(!(E<=x)|!(E>=y))):0)?(m=c[i>>2]|0,c[n>>2]=c[z>>2],c[n+4>>2]=c[z+4>>2],c[o>>2]=c[m>>2],c[o+4>>2]=c[m+4>>2],c[o+8>>2]=c[m+8>>2],c[o+12>>2]=c[m+12>>2],wU(n,o)|0):0){e=1;break a}e=e+1|0}}l=D;return e|0}function ps(a,b){a=a|0;b=b|0;var d=0.0,e=0;e=c[a>>2]|0;a=c[b>>2]|0;d=+h[e>>3]-+h[a>>3];if(!(d!=0.0)){d=+h[e+8>>3]-+h[a+8>>3];if(d==0.0)a=0;else a=d>0.0?1:-1}else a=d>0.0?1:-1;return a|0}function qs(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0;m=l;l=l+64|0;g=m+32|0;i=m+24|0;j=m+16|0;k=m;f=m+48|0;rs(a,b,f);d=f+8|0;e=c[d>>2]|0;do if((e|0)>0)d=0;else{if((e|0)<0){rs(b,a,f);d=c[d>>2]|0;if((d|0)>0){d=0;break}if((d|0)<0)d=3;else{d=c[f>>2]|0;d=ss(b,a,(d|0)>-1?d:0-d|0)|0}if(!(ts(a,b,i,j,d)|0)){d=0;break}}else{d=c[f>>2]|0;if((d|0)==(c[f+4>>2]|0)){d=ss(a,b,0)|0;d=(ss(a,b,(d|0)<=(ss(a,b,1)|0)&1)|0)<<1}else d=ss(a,b,(d|0)>-1?d:0-d|0)|0;if(!(ts(a,b,i,j,d)|0)){d=0;break}}h[k>>3]=+h[i>>3];h[k+8>>3]=+h[j>>3];c[g>>2]=c[k>>2];c[g+4>>2]=c[k+4>>2];c[g+8>>2]=c[k+8>>2];c[g+12>>2]=c[k+12>>2];d=us(a,b,g)|0}while(0);l=m;return d|0}function rs(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0.0,g=0.0,i=0.0,j=0.0,k=0.0,l=0.0;i=+h[a>>3];j=+h[a+8>>3];e=c[a+16>>2]|0;if((c[e+4>>2]|0)==(a|0)){a=c[e>>2]|0;e=a}else{e=a+24|0;a=a+24|0}g=+h[e>>3]-i;f=+h[a+8>>3]-j;e=c[b+16>>2]|0;if((c[e+4>>2]|0)==(b|0)){a=c[e>>2]|0;e=a}else{e=b+24|0;a=b+24|0}k=+h[e>>3]-i;l=+h[a+8>>3]-j;j=(+h[b+8>>3]-j)*g-(+h[b>>3]-i)*f;b=j==0.0?0:j>0.0?1:-1;c[d>>2]=b;j=l*g-k*f;a=j==0.0?0:j>0.0?1:-1;c[d+4>>2]=a;c[d+8>>2]=O(a,b)|0;return}function ss(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0,g=0.0,i=0.0,j=0.0,k=0.0,l=0.0;k=+h[a>>3];l=+h[a+8>>3];f=c[a+16>>2]|0;if((c[f+4>>2]|0)==(a|0))a=c[f>>2]|0;else a=a+24|0;j=+h[a>>3];i=+h[a+8>>3];do if(d){a=c[b+16>>2]|0;if((c[a+4>>2]|0)==(b|0)){b=c[a>>2]|0;break}else{b=b+24|0;break}}while(0);g=+h[b>>3];e=+h[b+8>>3];if(k==j)if(k==g)b=(ws(l,e,i)|0)!=-1&1;else b=0;else b=ws(k,g,j)|0;return b|0}function ts(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0;a:do if((f|0)<1)g=0;else{n=+h[a>>3];p=+h[a+8>>3];g=c[a+16>>2]|0;if((c[g+4>>2]|0)==(a|0))g=c[g>>2]|0;else g=a+24|0;l=+h[g>>3];j=+h[g+8>>3];m=+h[b>>3];o=+h[b+8>>3];g=c[b+16>>2]|0;if((c[g+4>>2]|0)==(b|0))g=c[g>>2]|0;else g=b+24|0;k=+h[g>>3];i=+h[g+8>>3];b:do switch(f|0){case 3:{if(n==l){h[d>>3]=n;i=(o-i)/(m-k)*(n-k)+i;break b}if(m==k){h[d>>3]=m;i=(p-j)/(n-l)*(m-l)+j;break b}else{k=(o-i)/(m-k);l=(p-j)/(n-l);o=o-k*m;p=p-l*n;i=k-l;h[d>>3]=(p-o)/i;i=(k*p-o*l)/i;break b}}case 2:{if((ss(a,b,0)|0)==-1)if((ss(b,a,1)|0)==-1){f=(ss(b,a,0)|0)==-1;l=f?l:n;k=m;j=f?j:p;i=o}else{l=k;k=m;j=i;i=o}else if((ss(a,b,1)|0)!=-1)if((ss(b,a,0)|0)==-1){k=n;i=p}else{g=0;break a}else{l=m;j=o}h[d>>3]=(k+l)*.5;i=(i+j)*.5;break}case 1:if((o-p)*(n-l)==(m-n)*(p-j)){h[d>>3]=m;i=o;break b}else{h[d>>3]=k;break b}default:{g=1;break a}}while(0);h[e>>3]=i;g=1}while(0);return g|0}function us(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0.0,g=0.0,i=0.0,j=0.0,k=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0,r=0,s=0;s=l;l=l+16|0;q=s;o=+h[a>>3];p=+h[a+8>>3];e=c[a+16>>2]|0;if((c[e+4>>2]|0)==(a|0))e=c[e>>2]|0;else e=a+24|0;m=+h[e>>3];j=+h[e+8>>3];k=+h[b>>3];n=+h[b+8>>3];e=c[b+16>>2]|0;if((c[e+4>>2]|0)==(b|0))e=c[e>>2]|0;else e=b+24|0;i=+h[e>>3];g=+h[e+8>>3];a:do if(!(o!=m&k!=i)){do if(o==m){f=+h[d>>3];if(o==f?p==+h[d+8>>3]:0)break;if(!(m==f)){r=18;break a}if(!(j==+h[d+8>>3])){r=18;break a}}while(0);if(k==i){f=+h[d>>3];if(k==f?n==+h[d+8>>3]:0){e=0;break}if(i==f?g==+h[d+8>>3]:0)e=0;else r=18}else e=0}else r=18;while(0);if((r|0)==18)if(0>1){e=c[15686]|0;p=+h[d+8>>3];h[q>>3]=+h[d>>3];h[q+8>>3]=p;g1(e,92248,q)|0;vs(1,a);vs(2,b);e=1}else e=1;l=s;return e|0}function vs(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0.0,i=0.0,j=0,k=0,m=0.0,n=0.0;k=l;l=l+48|0;j=k;f=c[15686]|0;g=+h[b>>3];i=+h[b+8>>3];d=c[b+16>>2]|0;if((c[d+4>>2]|0)==(b|0)){d=c[d>>2]|0;e=d}else{e=b+24|0;d=b+24|0}n=+h[e>>3];m=+h[d+8>>3];c[j>>2]=a;h[j+8>>3]=g;h[j+16>>3]=i;h[j+24>>3]=n;h[j+32>>3]=m;g1(f,92276,j)|0;l=k;return}function ws(a,b,c){a=+a;b=+b;c=+c;return (a==b|b==c?0:(a>3]=0.0;e=e+1|0}h[f+(a<<3)>>3]=1.0;mv(c[b+(a<<2)>>2]|0,f,d);a=a+1|0}D_(f);f=0;while(1){if((f|0)>=(d|0)){a=1;break a}e=b+(f<<2)|0;a=0;while(1){if((a|0)==(f|0))break;j=(c[e>>2]|0)+(a<<3)|0;i=+h[j>>3];g=(c[b+(a<<2)>>2]|0)+(f<<3)|0;h[j>>3]=+h[g>>3];h[g>>3]=i;a=a+1|0}f=f+1|0}}while(0);return a|0}function ys(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0,j=0.0,k=0,l=0.0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;q=b<<3;p=vH(q)|0;q=vH(q)|0;r=b*30|0;n=(d|0)<(b|0)?d:b;o=b+-1|0;m=(g|0)==0;d=0;i=0;a:while(1){if((i|0)>=(n|0))break;k=c[e+(i<<2)>>2]|0;do{b:do if(m)d=0;else{d=0;while(1){if((d|0)==(b|0)){d=0;break b}h[k+(d<<3)>>3]=+((g2()|0)%100|0|0);d=d+1|0}}while(0);while(1){if((d|0)==(i|0))break;g=c[e+(d<<2)>>2]|0;As(k,0,o,-+zs(g,0,o,k),g);d=d+1|0}j=+Bs(k,0,o)}while(j<1.0e-10);Cs(k,0,o,1.0/j,k);d=0;do{Ds(q,0,o,k);Es(a,b,b,k,p);Ds(k,0,o,p);g=0;while(1){if((g|0)==(i|0))break;s=c[e+(g<<2)>>2]|0;As(k,0,o,-+zs(s,0,o,k),s);g=g+1|0}s=d;d=d+1|0;j=+Bs(k,0,o);if(!((s|0)<(r|0)&!(j<1.0e-10)))break a;Cs(k,0,o,1.0/j,k);l=+zs(k,0,o,q)}while(+B(+l)<.999);h[f+(i<<3)>>3]=l*j;i=i+1|0}while(1){if((i|0)>=(n|0))break;k=c[e+(i<<2)>>2]|0;g=0;while(1){if((g|0)>=(b|0)){g=0;break}h[k+(g<<3)>>3]=+((g2()|0)%100|0|0);g=g+1|0}while(1){if((g|0)>=(i|0))break;s=c[e+(g<<2)>>2]|0;As(k,0,o,-+zs(s,0,o,k),s);g=g+1|0}Cs(k,0,o,1.0/+Bs(k,0,o),k);h[f+(i<<3)>>3]=0.0;i=i+1|0}m=n+-1|0;i=0;while(1){if((i|0)>=(m|0))break;a=f+(i<<3)|0;b=i+1|0;j=+h[a>>3];g=i;k=b;while(1){if((k|0)>=(n|0))break;l=+h[f+(k<<3)>>3];s=j>2]|0);s=e+(g<<2)|0;Ds(c[k>>2]|0,0,o,c[s>>2]|0);Ds(c[s>>2]|0,0,o,p);h[f+(g<<3)>>3]=+h[a>>3];h[a>>3]=j;i=b}D_(p);D_(q);return (d|0)<=(r|0)|0}function zs(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0.0;f=0.0;e=1-b+c|0;d=d+(b<<3)|0;c=a+(b<<3)|0;while(1){if(!e)break;f=+h[d>>3]*+h[c>>3]+f;e=e+-1|0;d=d+8|0;c=c+8|0}return +f}function As(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;var f=0;f=1-b+c|0;e=e+(b<<3)|0;c=a+(b<<3)|0;while(1){if(!f)break;h[c>>3]=+h[c>>3]+ +h[e>>3]*d;f=f+-1|0;e=e+8|0;c=c+8|0}return}function Bs(a,b,c){a=a|0;b=b|0;c=c|0;return +(+C(+(+zs(a,b,c,a))))}function Cs(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;var f=0;f=1-b+c|0;e=e+(b<<3)|0;c=a+(b<<3)|0;while(1){if(!f)break;h[c>>3]=+h[e>>3]*d;f=f+-1|0;e=e+8|0;c=c+8|0}return}function Ds(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=1-b+c|0;d=d+(b<<3)|0;c=a+(b<<3)|0;while(1){if(!e)break;h[c>>3]=+h[d>>3];e=e+-1|0;d=d+8|0;c=c+8|0}return}function Es(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0.0,i=0,j=0,k=0;j=0;while(1){if((j|0)>=(b|0))break;k=a+(j<<2)|0;g=0.0;i=0;while(1){if((i|0)>=(d|0))break;g=+h[e+(i<<3)>>3]*+h[(c[k>>2]|0)+(i<<3)>>3]+g;i=i+1|0}h[f+(j<<3)>>3]=g;j=j+1|0}return}function Fs(a,b,d,e,f,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;i=i|0;var j=0,k=0,l=0.0,m=0,n=0,o=0,p=0.0;k=c[i>>2]|0;if(!k){o=d<<2;j=C_(O(o,f)|0)|0;o=C_(o)|0}else{o=d<<2;j=F_(c[k>>2]|0,O(o,f)|0)|0;o=F_(k,o)|0}c[i>>2]=o;k=0;while(1){if((k|0)>=(d|0)){i=0;break}c[o+(k<<2)>>2]=j;k=k+1|0;j=j+(f<<2)|0}while(1){if((i|0)>=(d|0))break;m=a+(i<<2)|0;n=o+(i<<2)|0;k=0;while(1){if((k|0)<(f|0)){j=0;l=0.0}else break;while(1){if((j|0)>=(e|0))break;p=+h[(c[m>>2]|0)+(j<<3)>>3]*+g[(c[b+(j<<2)>>2]|0)+(k<<2)>>2]+l;j=j+1|0;l=p}g[(c[n>>2]|0)+(k<<2)>>2]=l;k=k+1|0}i=i+1|0}return}function Gs(a,b,d,e,f,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;i=i|0;var j=0,k=0,l=0.0,m=0,n=0,o=0;k=c[i>>2]|0;if(!k){j=C_(O(d<<3,f)|0)|0;o=C_(d<<2)|0}else{j=F_(c[k>>2]|0,O(d<<3,f)|0)|0;o=F_(k,d<<2)|0}c[i>>2]=o;k=0;while(1){if((k|0)>=(d|0)){i=0;break}c[o+(k<<2)>>2]=j;k=k+1|0;j=j+(f<<3)|0}while(1){if((i|0)>=(d|0))break;m=a+(i<<2)|0;n=o+(i<<2)|0;k=0;while(1){if((k|0)<(f|0)){l=0.0;j=0}else break;while(1){if((j|0)>=(e|0))break;l=+h[(c[m>>2]|0)+(j<<3)>>3]*+g[(c[b+(j<<2)>>2]|0)+(k<<2)>>2]+l;j=j+1|0}h[(c[n>>2]|0)+(k<<3)>>3]=l;k=k+1|0}i=i+1|0}return}function Hs(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var i=0,j=0,k=0.0,l=0,m=0,n=0,o=0,p=0,q=0;j=c[f>>2]|0;if(!j){i=C_(O(d*20|0,e)|0)|0;q=C_(d<<2)|0}else{i=F_(c[j>>2]|0,O(d*20|0,e)|0)|0;q=F_(j,d<<2)|0}c[f>>2]=q;j=0;while(1){if((j|0)>=(d|0)){f=0;break}c[q+(j<<2)>>2]=i;j=j+1|0;i=i+(e<<2)|0}while(1){if((f|0)>=(d|0))break;l=c[a+(f*20|0)+4>>2]|0;m=c[a+(f*20|0)+8>>2]|0;n=c[a+(f*20|0)>>2]|0;o=q+(f<<2)|0;i=0;while(1){if((i|0)>=(e|0))break;p=b+(i<<2)|0;k=0.0;j=0;while(1){if((j|0)>=(n|0))break;k=+h[(c[p>>2]|0)+(c[l+(j<<2)>>2]<<3)>>3]*+g[m+(j<<2)>>2]+k;j=j+1|0}g[(c[o>>2]|0)+(i<<2)>>2]=k;i=i+1|0}f=f+1|0}return}function Is(a,b){a=a|0;b=b|0;var c=0.0,d=0,e=0;c=0.0;d=b;e=a;while(1){if(!e)break;c=+h[d>>3]+c;d=d+8|0;e=e+-1|0}c=c/+(a|0);while(1){if(!a)break;h[b>>3]=+h[b>>3]-c;b=b+8|0;a=a+-1|0}return}function Js(a,b){a=a|0;b=b|0;var c=0;c=0;while(1){if((c|0)>=(a|0))break;h[b+(c<<3)>>3]=+((g2()|0)%500|0|0);c=c+1|0}Is(a,b);return}function Ks(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,i=0,j=0,k=0,l=0,m=0;j=0;while(1){if((j|0)>=(b|0))break;k=c[a+(j*20|0)>>2]|0;l=a+(j*20|0)+8|0;m=a+(j*20|0)+4|0;f=0.0;i=0;while(1){if((i|0)>=(k|0))break;f=+h[d+(c[(c[m>>2]|0)+(i<<2)>>2]<<3)>>3]*+g[(c[l>>2]|0)+(i<<2)>>2]+f;i=i+1|0}h[e+(j<<3)>>3]=f;j=j+1|0}return}function Ls(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,i=0,j=0,k=0;j=0;while(1){if((j|0)>=(b|0))break;k=a+(j<<2)|0;f=0.0;i=0;while(1){if((i|0)==(b|0))break;f=+h[d+(i<<3)>>3]*+g[(c[k>>2]|0)+(i<<2)>>2]+f;i=i+1|0}h[e+(j<<3)>>3]=f;j=j+1|0}return}function Ms(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=0;while(1){if((e|0)>=(a|0))break;h[d+(e<<3)>>3]=+h[b+(e<<3)>>3]-+h[c+(e<<3)>>3];e=e+1|0}return}function Ns(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=0;while(1){if((e|0)>=(a|0))break;h[d+(e<<3)>>3]=+h[c+(e<<3)>>3]+ +h[b+(e<<3)>>3];e=e+1|0}return}function Os(a,b,c,d){a=a|0;b=b|0;c=+c;d=d|0;var e=0;e=0;while(1){if((e|0)>=(a|0))break;h[d+(e<<3)>>3]=+h[b+(e<<3)>>3]*c;e=e+1|0}return}function Ps(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;d=0;while(1){if((d|0)>=(a|0))break;h[c+(d<<3)>>3]=+h[b+(d<<3)>>3];d=d+1|0}return}function Qs(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0;d=0.0;e=0;while(1){if((e|0)>=(a|0))break;d=+h[c+(e<<3)>>3]*+h[b+(e<<3)>>3]+d;e=e+1|0}return +d}function Rs(a,b){a=a|0;b=b|0;var c=0,d=0.0,e=0.0;c=0;d=-1.e+50;while(1){if((c|0)>=(a|0))break;e=+B(+(+h[b+(c<<3)>>3]));c=c+1|0;d=e>d?e:d}return +d}function Ss(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0.0,i=0,j=0;j=0;while(1){if((j|0)<(b|0)){g=0.0;i=0}else break;while(1){if((i|0)>=(d|0))break;g=+h[e+(i<<3)>>3]*+h[(c[a+(i<<2)>>2]|0)+(j<<3)>>3]+g;i=i+1|0}h[f+(j<<3)>>3]=g;j=j+1|0}return}function Ts(a,b){a=a|0;b=b|0;var c=0.0,d=0,e=0;c=0.0;d=b;e=a;while(1){if(!e)break;c=+g[d>>2]+c;d=d+4|0;e=e+-1|0}c=c/+(a|0);while(1){if(!a)break;g[b>>2]=+g[b>>2]-c;b=b+4|0;a=a+-1|0}return}function Us(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0.0,h=0,i=0,j=0,k=0,l=0.0,m=0,n=0.0,o=0,p=0.0;e=0;while(1){if((e|0)>=(b|0)){h=0;j=0;m=b;break}g[d+(e<<2)>>2]=0.0;e=e+1|0}while(1){if((j|0)>=(b|0))break;l=+g[c+(j<<2)>>2];k=j+1|0;f=+g[a+(h<<2)>>2]*l;i=k;e=h;while(1){e=e+1|0;if((i|0)==(b|0))break;p=+g[a+(e<<2)>>2];n=+g[c+(i<<2)>>2]*p+f;o=d+(i<<2)|0;g[o>>2]=+g[o>>2]+p*l;f=n;i=i+1|0}o=d+(j<<2)|0;g[o>>2]=+g[o>>2]+f;h=h+m|0;j=k;m=m+-1|0}return}function Vs(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=0;while(1){if((e|0)>=(a|0))break;g[d+(e<<2)>>2]=+g[b+(e<<2)>>2]-+g[c+(e<<2)>>2];e=e+1|0}return}function Ws(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=0;while(1){if((e|0)>=(a|0))break;g[d+(e<<2)>>2]=+g[c+(e<<2)>>2]+ +g[b+(e<<2)>>2];e=e+1|0}return}function Xs(a,b,c,d){a=a|0;b=b|0;c=+c;d=d|0;var e=0,f=0;e=0;while(1){if((e|0)>=(a|0))break;f=b+(e<<2)|0;g[f>>2]=+g[d+(e<<2)>>2]*c+ +g[f>>2];e=e+1|0}return}function Ys(a,b,c,d){a=a|0;b=b|0;c=+c;d=d|0;var e=0;e=0;while(1){if((e|0)>=(a|0))break;g[d+(e<<2)>>2]=+g[b+(e<<2)>>2]*c;e=e+1|0}return}function Zs(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=0;while(1){if((e|0)>=(a|0))break;c[d+(e<<2)>>2]=c[b+(e<<2)>>2];e=e+1|0}return}function _s(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0;d=0.0;e=0;while(1){if((e|0)>=(a|0))break;d=d+ +g[c+(e<<2)>>2]*+g[b+(e<<2)>>2];e=e+1|0}return +d}function $s(a,b,c){a=a|0;b=+b;c=c|0;var d=0;d=0;while(1){if((d|0)>=(a|0))break;h[c+(d<<3)>>3]=b;d=d+1|0}return}function at(a,b,c){a=a|0;b=+b;c=c|0;var d=0;d=0;while(1){if((d|0)>=(a|0))break;g[c+(d<<2)>>2]=b;d=d+1|0}return}function bt(a,b){a=a|0;b=b|0;var c=0.0,d=0,e=0.0;c=-1000000015047466219876688.0e6;d=0;while(1){if((d|0)>=(a|0))break;e=+B(+(+g[b+(d<<2)>>2]));c=e>c?e:c;d=d+1|0}return +c}function ct(a,b){a=a|0;b=b|0;var c=0,d=0,e=0.0;c=0;while(1){if((c|0)>=(a|0))break;d=b+(c<<2)|0;e=+g[d>>2];g[d>>2]=e*e;c=c+1|0}return}function dt(a,b){a=a|0;b=b|0;var c=0,d=0,e=0.0;c=0;while(1){if((c|0)>=(a|0))break;d=b+(c<<2)|0;e=+g[d>>2];if(e!=0.0)g[d>>2]=1.0/e;c=c+1|0}return}function et(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0.0;d=0;while(1){if((d|0)>=(a|0))break;e=+g[b+(d<<2)>>2];if(e>=0.0)g[c+(d<<2)>>2]=+C(+e);d=d+1|0}return}function ft(a,b){a=a|0;b=b|0;var c=0,d=0,e=0.0;c=0;while(1){if((c|0)>=(a|0))break;d=b+(c<<2)|0;e=+g[d>>2];if(e>0.0)g[d>>2]=1.0/+C(+e);c=c+1|0}return}function gt(a,b){a=a|0;b=b|0;var d=0;c[a>>2]=0;if(b&3)if(!(4%(b>>>0)|0))b=4;else b=O(4/((ht(b)|0)>>>0)|0,b)|0;c[a+8>>2]=b;a=a+4|0;b=c[a>>2]|0;a:do if(b|0)while(1){if(!b)break a;d=c[b>>2]|0;D_(c[b+4>>2]|0);D_(b);b=d}while(0);c[a>>2]=0;return}function ht(a){a=a|0;var b=0,c=0;c=4;a:while(1){b=c;while(1){if((b|0)==(a|0))break a;if((b|0)<=(a|0))break;b=b-a|0}c=b;a=a-b|0}return a|0}function it(a){a=a|0;var b=0,d=0,e=0,f=0;b=c[a>>2]|0;if(!b){d=c[a+8>>2]|0;e=vH(8)|0;f=vH(O(c[46085]|0,d)|0)|0;c[e+4>>2]=f;b=0;while(1){if((b|0)>=(c[46085]|0))break;jt(f+(O(b,d)|0)|0,a);b=b+1|0}b=a+4|0;c[e>>2]=c[b>>2];c[b>>2]=e;b=c[a>>2]|0}c[a>>2]=c[b>>2];return b|0}function jt(a,b){a=a|0;b=b|0;c[a>>2]=c[b>>2];c[b>>2]=a;return}function kt(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,i=0,j=0,k=0,l=0,m=0;m=uH(b<<3)|0;l=a+8|0;f=c[l>>2]|0;lt(a,b,m);Js(b,d);h=0;i=0;while(1){if((i|0)>=(b|0))break;h=(c[a+(i*20|0)>>2]|0)+h|0;i=i+1|0}h=vH(h<<2)|0;j=0;while(1){if((j|0)>=(b|0))break;c[a+(j*20|0)+8>>2]=h;k=c[a+(j*20|0)>>2]|0;g[h>>2]=+(1-k|0);i=1;while(1){if((i|0)>=(k|0))break;g[h+(i<<2)>>2]=1.0;i=i+1|0}h=h+(k<<2)|0;j=j+1|0}i=Dq(a,d,m,b,.001,e)|0;D_(c[l>>2]|0);h=0;while(1){if((h|0)>=(b|0))break;c[a+(h*20|0)+8>>2]=f;f=f+(c[a+(h*20|0)>>2]<<2)|0;h=h+1|0}D_(m);return i>>>31|0}function lt(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0,i=0,j=0,k=0,l=0,m=0;k=a+16|0;i=0;while(1){if((i|0)>=(b|0))break;if(c[k>>2]|0){l=c[a+(i*20|0)>>2]|0;m=a+(i*20|0)+8|0;j=a+(i*20|0)+16|0;e=0.0;f=1;while(1){if((f|0)>=(l|0))break;e=e+ +g[(c[j>>2]|0)+(f<<2)>>2]*+g[(c[m>>2]|0)+(f<<2)>>2];f=f+1|0}h[d+(i<<3)>>3]=e}i=i+1|0}return}function mt(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0.0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0;r=vH(f<<2)|0;i=b<<3;g=0;while(1){if((g|0)>=(f|0))break;c[r+(g<<2)>>2]=vH(i)|0;g=g+1|0}p=vH(f<<3)|0;q=vH(b<<2)|0;g=vH(O(i,b)|0)|0;i=0;while(1){if((i|0)>=(b|0))break;c[q+(i<<2)>>2]=g;g=g+(b<<3)|0;i=i+1|0}k=0;o=1;while(1){if((k|0)>=(b|0))break;l=a+(k<<2)|0;m=q+(k<<2)|0;i=0;while(1){if((i|0)==(o|0))break;n=a+(i<<2)|0;g=0;j=0.0;while(1){if((g|0)>=(d|0))break;s=j+ +(O(c[(c[n>>2]|0)+(g<<2)>>2]|0,c[(c[l>>2]|0)+(g<<2)>>2]|0)|0);g=g+1|0;j=s}h[(c[q+(i<<2)>>2]|0)+(k<<3)>>3]=j;h[(c[m>>2]|0)+(i<<3)>>3]=j;i=i+1|0}k=k+1|0;o=o+1|0}ys(q,b,f,r,p,1)|0;i=0;while(1){if((i|0)>=(f|0)){g=0;break}l=r+(i<<2)|0;m=e+(i<<2)|0;k=0;while(1){if((k|0)<(d|0)){g=0;j=0.0}else break;while(1){if((g|0)>=(b|0))break;s=+h[(c[l>>2]|0)+(g<<3)>>3]*+(c[(c[a+(g<<2)>>2]|0)+(k<<2)>>2]|0)+j;g=g+1|0;j=s}h[(c[m>>2]|0)+(k<<3)>>3]=j;k=k+1|0}i=i+1|0}while(1){if((g|0)>=(f|0))break;D_(c[r+(g<<2)>>2]|0);g=g+1|0}D_(r);D_(p);D_(c[q>>2]|0);D_(q);return}function nt(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;f=l;l=l+32|0;g=f+16|0;j=f+20|0;i=f+12|0;h=f+8|0;c[g>>2]=e;c[i>>2]=0;c[h>>2]=0;$u(c[a>>2]|0,d,d<<2,j);Hs(c[j>>2]|0,a,d,b,i);Gs(a,c[i>>2]|0,b,d,b,h);D_(c[c[i>>2]>>2]|0);D_(c[i>>2]|0);e=(ys(c[h>>2]|0,b,1,g,f,1)|0)&255;l=f;return e|0}function ot(){c[46143]=0;D_(c[46144]|0);D_(c[46145]|0);D_(c[46146]|0);c[46144]=0;c[46145]=0;c[46146]=0;return}function pt(a){a=a|0;D_(c[a+36>>2]|0);return}function qt(b,d,e,f){b=b|0;d=d|0;e=+e;f=+f;var g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0,t=0.0,u=0.0,v=0.0;r=l;l=l+80|0;o=r+64|0;q=r+68|0;i=r+48|0;j=r+32|0;k=r+16|0;m=r;n=d+16|0;g=c[n>>2]|0;a:do if(!(c[g+212>>2]|0))switch(HJ(d)|0){case 1:{g=c[n>>2]|0;j=c[g+12>>2]|0;k=c[j+8>>2]|0;c[q>>2]=k;g=c[c[g+8>>2]>>2]|0;switch(a[g>>0]|0){case 98:{if(!(b$(g,105210)|0))p=11;else p=8;break}case 112:{if((b$(g,102695)|0)==0?(rt(c[j+44>>2]|0,k)|0)!=0:0)p=11;else p=8;break}default:p=8}do if((p|0)==8)if((k|0)<3){c[b+40>>2]=(c[j>>2]|0)==0?0:2;p=17;break}else{g=b+40|0;c[g>>2]=0;break}else if((p|0)==11){g=b+40|0;c[g>>2]=1;if((k|0)<=2)p=17}while(0);if((p|0)==17){i=st(d,q,e,f)|0;p=21;break a}i=vH(k<<4)|0;j=j+44|0;if((c[g>>2]|0)==1){p=c[j>>2]|0;s=e;h[i>>3]=+h[p>>3]*.013888888888888888+s;e=f;h[i+8>>3]=+h[p+8>>3]*.013888888888888888+e;h[i+16>>3]=+h[p+16>>3]*.013888888888888888-s;h[i+24>>3]=+h[p+24>>3]*.013888888888888888+e;h[i+32>>3]=+h[p+32>>3]*.013888888888888888-s;h[i+40>>3]=+h[p+40>>3]*.013888888888888888-e;h[i+48>>3]=+h[p+48>>3]*.013888888888888888+s;h[i+56>>3]=+h[p+56>>3]*.013888888888888888-e;p=21;break a}g=0;while(1){if((g|0)>=(k|0)){p=21;break a}p=c[j>>2]|0;u=+h[p+(g<<4)>>3];s=+h[p+(g<<4)+8>>3];t=+C(+(s*s+u*u));h[i+(g<<4)>>3]=(e/t+1.0)*u*.013888888888888888;h[i+(g<<4)+8>>3]=(f/t+1.0)*s*.013888888888888888;g=g+1|0}}case 2:{c[q>>2]=4;p=vH(64)|0;d=c[(c[n>>2]|0)+12>>2]|0;v=+h[d+32>>3];t=+h[d+40>>3];o=~~+h[d+16>>3];d=~~+h[d+24>>3];u=-e;s=-f;tt(i,o,d,u,s);c[p>>2]=c[i>>2];c[p+4>>2]=c[i+4>>2];c[p+8>>2]=c[i+8>>2];c[p+12>>2]=c[i+12>>2];i=p+16|0;n=~~v;tt(j,n,d,e,s);c[i>>2]=c[j>>2];c[i+4>>2]=c[j+4>>2];c[i+8>>2]=c[j+8>>2];c[i+12>>2]=c[j+12>>2];i=p+32|0;d=~~t;tt(k,n,d,e,f);c[i>>2]=c[k>>2];c[i+4>>2]=c[k+4>>2];c[i+8>>2]=c[k+8>>2];c[i+12>>2]=c[k+12>>2];i=p+48|0;tt(m,o,d,u,f);c[i>>2]=c[m>>2];c[i+4>>2]=c[m+4>>2];c[i+8>>2]=c[m+8>>2];c[i+12>>2]=c[m+12>>2];c[b+40>>2]=1;i=p;p=21;break a}case 3:{c[b+40>>2]=2;i=st(d,q,e,f)|0;p=21;break a}default:{c[o>>2]=c[c[(c[n>>2]|0)+8>>2]>>2];Pw(1,92312,o)|0;g=1;break a}}else{c[q>>2]=4;u=+h[g+32>>3]*.5+e;v=+h[g+40>>3]*.5+f;c[b+40>>2]=1;i=vH(64)|0;h[i>>3]=u;h[i+8>>3]=v;t=-u;h[i+16>>3]=t;h[i+24>>3]=v;h[i+32>>3]=t;v=-v;h[i+40>>3]=v;h[i+48>>3]=u;h[i+56>>3]=v;p=21}while(0);if((p|0)==21){c[b+36>>2]=i;g=c[q>>2]|0;c[b+32>>2]=g;ut(i,g,b,b+16|0);if((g|0)>(c[46143]|0)){c[46143]=g;g=0}else g=0}l=r;return g|0}function rt(a,b){a=a|0;b=b|0;var c=0.0,d=0.0;do if((b|0)==4){c=+h[a+8>>3];b=a+16|0;d=+h[a+24>>3];if(c==d){if(!(+h[a+40>>3]==+h[a+56>>3])){b=0;break}if(!(+h[a>>3]==+h[a+48>>3])){b=0;break}b=+h[b>>3]==+h[a+32>>3];break}if((+h[a>>3]==+h[b>>3]?+h[a+32>>3]==+h[a+48>>3]:0)?c==+h[a+56>>3]:0)b=d==+h[a+40>>3];else b=0}else b=0;while(0);return b&1|0}function st(a,b,d,e){a=a|0;b=b|0;d=+d;e=+e;var f=0,g=0.0,i=0,j=0,k=0.0,l=0;f=xx(a,99679)|0;if(!f)f=0;else f=a2(f)|0;i=(f|0)<3?20:f;j=vH(i<<4)|0;a=a+16|0;g=1.0/+(i|0);f=0;while(1){if((f|0)>=(i|0))break;l=c[a>>2]|0;k=g*+(f|0)*6.283185307179586;h[j+(f<<4)>>3]=(+h[l+32>>3]*.5+d)*+E(+k);h[j+(f<<4)+8>>3]=(+h[l+40>>3]*.5+e)*+F(+k);f=f+1|0}c[b>>2]=i;return j|0}function tt(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=+d;e=+e;h[a>>3]=+(b|0)*.013888888888888888+d;h[a+8>>3]=+(c|0)*.013888888888888888+e;return}function ut(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0.0,g=0.0,i=0.0,j=0.0,k=0,l=0.0,m=0.0;j=+h[a>>3];i=+h[a+8>>3];e=1;f=i;g=j;while(1){if((e|0)>=(b|0))break;k=a+16|0;l=+h[k>>3];m=+h[a+24>>3];e=e+1|0;f=m>f?m:f;g=l>g?l:g;i=m>3]=j;h[c+8>>3]=i;h[d>>3]=g;h[d+8>>3]=f;return}function vt(b,d,e,f){b=b|0;d=d|0;e=+e;f=+f;var g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0,t=0.0,u=0.0,v=0.0;r=l;l=l+80|0;n=r+64|0;p=r+68|0;i=r+48|0;j=r+32|0;k=r+16|0;m=r;o=d+16|0;g=c[o>>2]|0;a:do if(!(c[g+212>>2]|0))switch(HJ(d)|0){case 1:{m=c[(c[o>>2]|0)+12>>2]|0;n=m+8|0;k=c[n>>2]|0;c[p>>2]=k;b:do if((k|0)>2){i=vH(k<<4)|0;j=m+44|0;g=0;while(1){if((g|0)>=(k|0))break b;d=c[j>>2]|0;h[i+(g<<4)>>3]=+h[d+(g<<4)>>3]*.013888888888888888;h[i+(g<<4)+8>>3]=+h[d+(g<<4)+8>>3]*.013888888888888888;g=g+1|0}}else i=st(d,p,0.0,0.0)|0;while(0);g=c[c[(c[o>>2]|0)+8>>2]>>2]|0;switch(a[g>>0]|0){case 98:{if(!(b$(g,105210)|0))g=1;else q=13;break}case 112:{if((b$(g,102695)|0)==0?(rt(i,c[p>>2]|0)|0)!=0:0)g=1;else q=13;break}default:q=13}do if((q|0)==13){if((c[n>>2]|0)<3?c[m>>2]|0:0){g=2;break}g=0}while(0);c[b+40>>2]=g;q=20;break a}case 2:{c[p>>2]=4;q=vH(64)|0;o=c[(c[o>>2]|0)+12>>2]|0;t=+h[o+16>>3];v=+h[o+24>>3];u=+h[o+32>>3];s=+h[o+40>>3];wt(i,t,v);c[q>>2]=c[i>>2];c[q+4>>2]=c[i+4>>2];c[q+8>>2]=c[i+8>>2];c[q+12>>2]=c[i+12>>2];i=q+16|0;wt(j,u,v);c[i>>2]=c[j>>2];c[i+4>>2]=c[j+4>>2];c[i+8>>2]=c[j+8>>2];c[i+12>>2]=c[j+12>>2];i=q+32|0;wt(k,u,s);c[i>>2]=c[k>>2];c[i+4>>2]=c[k+4>>2];c[i+8>>2]=c[k+8>>2];c[i+12>>2]=c[k+12>>2];i=q+48|0;wt(m,t,s);c[i>>2]=c[m>>2];c[i+4>>2]=c[m+4>>2];c[i+8>>2]=c[m+8>>2];c[i+12>>2]=c[m+12>>2];c[b+40>>2]=1;i=q;q=20;break a}case 3:{c[b+40>>2]=2;i=st(d,p,0.0,0.0)|0;q=20;break a}default:{c[n>>2]=c[c[(c[o>>2]|0)+8>>2]>>2];Pw(1,92348,n)|0;g=1;break a}}else{c[p>>2]=4;u=+h[g+32>>3]*.5;v=+h[g+40>>3]*.5;c[b+40>>2]=1;i=vH(64)|0;h[i>>3]=u;h[i+8>>3]=v;t=-u;h[i+16>>3]=t;h[i+24>>3]=v;h[i+32>>3]=t;v=-v;h[i+40>>3]=v;h[i+48>>3]=u;h[i+56>>3]=v;q=20}while(0);if((q|0)==20){g=c[p>>2]|0;if(e!=1.0|f!=1.0)xt(i,g,e,f);c[b+36>>2]=i;c[b+32>>2]=g;ut(i,g,b,b+16|0);if((g|0)>(c[46143]|0)){c[46143]=g;g=0}else g=0}l=r;return g|0}function wt(a,b,c){a=a|0;b=+b;c=+c;h[a>>3]=b*.013888888888888888;h[a+8>>3]=c*.013888888888888888;return}function xt(a,b,c,d){a=a|0;b=b|0;c=+c;d=+d;var e=0,f=0;e=0;while(1){if((e|0)>=(b|0))break;h[a>>3]=+h[a>>3]*c;f=a+8|0;h[f>>3]=+h[f>>3]*d;a=a+16|0;e=e+1|0}return}function yt(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0,t=0.0,u=0.0,v=0;r=l;l=l+128|0;o=r+112|0;n=r+96|0;m=r+80|0;f=r+64|0;p=r+48|0;q=r+32|0;j=r+16|0;k=r;c[n>>2]=c[a>>2];c[n+4>>2]=c[a+4>>2];c[n+8>>2]=c[a+8>>2];c[n+12>>2]=c[a+12>>2];c[o>>2]=c[b>>2];c[o+4>>2]=c[b+4>>2];c[o+8>>2]=c[b+8>>2];c[o+12>>2]=c[b+12>>2];xr(p,n,o);g=b+16|0;c[n>>2]=c[a>>2];c[n+4>>2]=c[a+4>>2];c[n+8>>2]=c[a+8>>2];c[n+12>>2]=c[a+12>>2];c[o>>2]=c[g>>2];c[o+4>>2]=c[g+4>>2];c[o+8>>2]=c[g+8>>2];c[o+12>>2]=c[g+12>>2];xr(q,n,o);c[n>>2]=c[d>>2];c[n+4>>2]=c[d+4>>2];c[n+8>>2]=c[d+8>>2];c[n+12>>2]=c[d+12>>2];c[o>>2]=c[e>>2];c[o+4>>2]=c[e+4>>2];c[o+8>>2]=c[e+8>>2];c[o+12>>2]=c[e+12>>2];xr(j,n,o);i=e+16|0;c[n>>2]=c[d>>2];c[n+4>>2]=c[d+4>>2];c[n+8>>2]=c[d+8>>2];c[n+12>>2]=c[d+12>>2];c[o>>2]=c[i>>2];c[o+4>>2]=c[i+4>>2];c[o+8>>2]=c[i+8>>2];c[o+12>>2]=c[i+12>>2];xr(k,n,o);c[f>>2]=c[p>>2];c[f+4>>2]=c[p+4>>2];c[f+8>>2]=c[p+8>>2];c[f+12>>2]=c[p+12>>2];c[m>>2]=c[q>>2];c[m+4>>2]=c[q+4>>2];c[m+8>>2]=c[q+8>>2];c[m+12>>2]=c[q+12>>2];c[n>>2]=c[j>>2];c[n+4>>2]=c[j+4>>2];c[n+8>>2]=c[j+8>>2];c[n+12>>2]=c[j+12>>2];c[o>>2]=c[k>>2];c[o+4>>2]=c[k+4>>2];c[o+8>>2]=c[k+8>>2];c[o+12>>2]=c[k+12>>2];do if(zt(f,m,n,o)|0){f=c[b+40>>2]|0;if(f&1|0?c[e+40>>2]&1|0:0){f=1;break}if(f&2|0?c[e+40>>2]&2|0:0){s=+h[g>>3]-+h[b>>3]+ +h[i>>3]-+h[e>>3];t=+h[a>>3]-+h[d>>3];u=+h[a+8>>3]-+h[d+8>>3];f=!(u*u+t*t>s*s*.25);break}f=c[46144]|0;if(!f){c[46144]=vH(c[46143]<<4)|0;i=vH(c[46143]<<4)|0;c[46145]=i;f=c[46144]|0}else i=c[46145]|0;v=c[b+36>>2]|0;b=b+32|0;g=c[b>>2]|0;c[o>>2]=c[a>>2];c[o+4>>2]=c[a+4>>2];c[o+8>>2]=c[a+8>>2];c[o+12>>2]=c[a+12>>2];At(v,g,o,f);a=c[e+36>>2]|0;g=e+32|0;e=c[g>>2]|0;c[o>>2]=c[d>>2];c[o+4>>2]=c[d+4>>2];c[o+8>>2]=c[d+8>>2];c[o+12>>2]=c[d+12>>2];At(a,e,o,i);if(!(Bt(f,i,c[b>>2]|0,c[g>>2]|0)|0)){f=c[46144]|0;c[m>>2]=c[f>>2];c[m+4>>2]=c[f+4>>2];c[m+8>>2]=c[f+8>>2];c[m+12>>2]=c[f+12>>2];c[n>>2]=c[j>>2];c[n+4>>2]=c[j+4>>2];c[n+8>>2]=c[j+8>>2];c[n+12>>2]=c[j+12>>2];c[o>>2]=c[k>>2];c[o+4>>2]=c[k+4>>2];c[o+8>>2]=c[k+8>>2];c[o+12>>2]=c[k+12>>2];if(Ct(m,n,o)|0?(k=c[46145]|0,v=c[g>>2]|0,c[o>>2]=c[f>>2],c[o+4>>2]=c[f+4>>2],c[o+8>>2]=c[f+8>>2],c[o+12>>2]=c[f+12>>2],Dt(k,v,o)|0):0){f=1;break}f=c[46145]|0;c[m>>2]=c[f>>2];c[m+4>>2]=c[f+4>>2];c[m+8>>2]=c[f+8>>2];c[m+12>>2]=c[f+12>>2];c[n>>2]=c[p>>2];c[n+4>>2]=c[p+4>>2];c[n+8>>2]=c[p+8>>2];c[n+12>>2]=c[p+12>>2];c[o>>2]=c[q>>2];c[o+4>>2]=c[q+4>>2];c[o+8>>2]=c[q+8>>2];c[o+12>>2]=c[q+12>>2];if(!(Ct(m,n,o)|0))f=0;else{q=c[46144]|0;v=c[b>>2]|0;c[o>>2]=c[f>>2];c[o+4>>2]=c[f+4>>2];c[o+8>>2]=c[f+8>>2];c[o+12>>2]=c[f+12>>2];f=(Dt(q,v,o)|0)!=0}}else f=1}else f=0;while(0);l=r;return f&1|0}function zt(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;if((+h[a>>3]<=+h[d>>3]?+h[c>>3]<=+h[b>>3]:0)?+h[a+8>>3]<=+h[d+8>>3]:0)a=+h[c+8>>3]<=+h[b+8>>3]&1;else a=0;return a|0}function At(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;f=c+8|0;e=0;while(1){if((e|0)>=(b|0))break;h[d>>3]=+h[c>>3]+ +h[a>>3];h[d+8>>3]=+h[f>>3]+ +h[a+8>>3];e=e+1|0;a=a+16|0;d=d+16|0}return}function Bt(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0.0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;A=l;l=l+112|0;s=A+96|0;r=A+80|0;q=A+64|0;p=A+48|0;u=A+32|0;v=A+16|0;w=A;x=d+-1|0;y=e+-1|0;z=d<<1;t=e<<1;f=0;g=0;h=0;i=0;while(1){B=a+(f<<4)|0;C=a+(((x+f|0)%(d|0)|0)<<4)|0;c[r>>2]=c[B>>2];c[r+4>>2]=c[B+4>>2];c[r+8>>2]=c[B+8>>2];c[r+12>>2]=c[B+12>>2];c[s>>2]=c[C>>2];c[s+4>>2]=c[C+4>>2];c[s+8>>2]=c[C+8>>2];c[s+12>>2]=c[C+12>>2];wr(u,r,s);o=b+(g<<4)|0;n=b+(((y+g|0)%(e|0)|0)<<4)|0;c[r>>2]=c[o>>2];c[r+4>>2]=c[o+4>>2];c[r+8>>2]=c[o+8>>2];c[r+12>>2]=c[o+12>>2];c[s>>2]=c[n>>2];c[s+4>>2]=c[n+4>>2];c[s+8>>2]=c[n+8>>2];c[s+12>>2]=c[n+12>>2];wr(v,r,s);c[q>>2]=c[45770];c[q+4>>2]=c[45771];c[q+8>>2]=c[45772];c[q+12>>2]=c[45773];c[r>>2]=c[u>>2];c[r+4>>2]=c[u+4>>2];c[r+8>>2]=c[u+8>>2];c[r+12>>2]=c[u+12>>2];c[s>>2]=c[v>>2];c[s+4>>2]=c[v+4>>2];c[s+8>>2]=c[v+8>>2];c[s+12>>2]=c[v+12>>2];j=+yr(q,r,s);c[q>>2]=c[C>>2];c[q+4>>2]=c[C+4>>2];c[q+8>>2]=c[C+8>>2];c[q+12>>2]=c[C+12>>2];c[r>>2]=c[B>>2];c[r+4>>2]=c[B+4>>2];c[r+8>>2]=c[B+8>>2];c[r+12>>2]=c[B+12>>2];c[s>>2]=c[o>>2];c[s+4>>2]=c[o+4>>2];c[s+8>>2]=c[o+8>>2];c[s+12>>2]=c[o+12>>2];k=zr(q,r,s)|0;c[q>>2]=c[n>>2];c[q+4>>2]=c[n+4>>2];c[q+8>>2]=c[n+8>>2];c[q+12>>2]=c[n+12>>2];c[r>>2]=c[o>>2];c[r+4>>2]=c[o+4>>2];c[r+8>>2]=c[o+8>>2];c[r+12>>2]=c[o+12>>2];c[s>>2]=c[B>>2];c[s+4>>2]=c[B+4>>2];c[s+8>>2]=c[B+8>>2];c[s+12>>2]=c[B+12>>2];m=zr(q,r,s)|0;c[p>>2]=c[C>>2];c[p+4>>2]=c[C+4>>2];c[p+8>>2]=c[C+8>>2];c[p+12>>2]=c[C+12>>2];c[q>>2]=c[B>>2];c[q+4>>2]=c[B+4>>2];c[q+8>>2]=c[B+8>>2];c[q+12>>2]=c[B+12>>2];c[r>>2]=c[n>>2];c[r+4>>2]=c[n+4>>2];c[r+8>>2]=c[n+8>>2];c[r+12>>2]=c[n+12>>2];c[s>>2]=c[o>>2];c[s+4>>2]=c[o+4>>2];c[s+8>>2]=c[o+8>>2];c[s+12>>2]=c[o+12>>2];if(Ar(p,q,r,s,w)|0){f=1;break}n=(k|0)==0;o=(m|0)==0;do if(j!=0.0|(m|k|0)!=0)if(!(j>=0.0))if(o){f=(f+1|0)%(d|0)|0;h=h+1|0;break}else{g=(g+1|0)%(e|0)|0;i=i+1|0;break}else if(n){g=(g+1|0)%(e|0)|0;i=i+1|0;break}else{f=(f+1|0)%(d|0)|0;h=h+1|0;break}else{f=(f+1|0)%(d|0)|0;h=h+1|0}while(0);if(!((i|0)<(t|0)&((h|0)<(z|0)&((i|0)<(e|0)|(h|0)<(d|0))))){f=0;break}}l=A;return f|0}function Ct(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0;e=+h[a>>3];if((e<=+h[c>>3]?e>=+h[b>>3]:0)?(d=+h[a+8>>3],d<=+h[c+8>>3]):0)a=d>=+h[b+8>>3]&1;else a=0;return a|0}function Dt(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0.0,g=0,i=0,j=0.0,k=0.0,l=0;e=c[46146]|0;if(!e){e=vH(c[46143]<<4)|0;c[46146]=e}i=d+8|0;g=0;while(1){if((g|0)>=(b|0))break;h[e+(g<<4)>>3]=+h[a+(g<<4)>>3]-+h[d>>3];h[e+(g<<4)+8>>3]=+h[a+(g<<4)+8>>3]-+h[i>>3];g=g+1|0}d=b+-1|0;f=0.0;a=0;a:while(1){if((a|0)>=(b|0)){l=19;break}g=(d+a|0)%(b|0)|0;j=+h[e+(a<<4)+8>>3];i=j==0.0;if(i?+h[e+(g<<4)+8>>3]==0.0:0){if(+h[e+(g<<4)>>3]*+h[e+(a<<4)>>3]<0.0){e=1;break}}else l=11;do if((l|0)==11){l=0;k=+h[e+(g<<4)+8>>3];if(!(j>=0.0)|!(k<=0.0)?!(k>=0.0)|!(j<=0.0):0)break;j=(k*+h[e+(a<<4)>>3]-j*+h[e+(g<<4)>>3])/(k-j);if(j==0.0){e=1;break a}if(j>0.0)if(k==0.0|i){f=f+.5;break}else{f=f+1.0;break}}while(0);a=a+1|0}if((l|0)==19)e=((~~f|0)%2|0|0)==1&1;return e|0}function Et(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;j=vH(b<<2)|0;i=O(b,b)|0;d=vH(i<<2)|0;c[j>>2]=d;at(i,0.0,d);d=1;while(1){if((d|0)>=(b|0)){d=0;g=0;i=b;break}c[j+(d<<2)>>2]=(c[j>>2]|0)+((O(d,b)|0)<<2);d=d+1|0}while(1){if((g|0)>=(b|0))break;h=j+(g<<2)|0;e=g;f=d;while(1){if((e|0)==(b|0))break;k=c[a+(f<<2)>>2]|0;c[(c[h>>2]|0)+(e<<2)>>2]=k;c[(c[j+(e<<2)>>2]|0)+(g<<2)>>2]=k;e=e+1|0;f=f+1|0}d=d+i|0;g=g+1|0;i=i+-1|0}return j|0}function Ft(a,b,d,e,f,h,i,j){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;i=i|0;j=+j;var k=0.0,l=0.0,m=0.0,n=0,o=0,p=0,q=0.0,r=0,s=0.0,t=0,u=0,v=0,w=0,x=0,y=0.0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0.0;M=c[d+(f<<2)>>2]|0;C=c[a+4>>2]|0;D=c[a>>2]|0;E=c[a+48>>2]|0;F=c[a+52>>2]|0;G=c[a+56>>2]|0;a:do if((h|0)<1)d=0;else{Ht(M,C,E,F,G,j);H=c[a+28>>2]|0;I=c[a+32>>2]|0;J=c[a+36>>2]|0;K=c[a+12>>2]|0;L=c[a+16>>2]|0;f=0;e=0;d=-1;while(1){if((f|0)>=(C|0))break;if((f|0)>=(e|0)){d=d+1|0;if((d|0)==(G|0)){e=C;d=G}else e=c[F+(d<<2)>>2]|0}c[L+(c[E+(f<<2)>>2]<<2)>>2]=d;f=f+1|0}z=c[a+40>>2]|0;A=I+(C+-1<<2)|0;d=0;e=0;while(1){if(e<<24>>24==0&(d|0)<(h|0)){k=-1.0e9;f=0;e=1}else break a;b:while(1){x=f;while(1){if((x|0)>=(C|0))break b;f=c[E+(x<<2)>>2]|0;y=+g[M+(f<<2)>>2];l=y;w=x;m=0.0;while(1){g[z+(f<<2)>>2]=m;f=w+1|0;if((f|0)>=(C|0)){v=0;break}l=(c[L+(f<<2)>>2]|0)>(c[L+(w<<2)>>2]|0)?l+j:l;a=c[E+(f<<2)>>2]|0;m=+g[M+(a<<2)>>2];if(+B(+(m-l))>1.0e-09){v=1;break}w=f;m=m-y;f=a}n=x;while(1){if((n|0)>(w|0)){a=0;o=x;break}o=c[E+(n<<2)>>2]|0;p=c[D+(o<<2)>>2]|0;a=0;l=-+g[b+(o<<2)>>2];while(1){if((a|0)>=(C|0))break;if((a|0)!=(o|0))l=+g[M+(a<<2)>>2]*+g[p+(a<<2)>>2]+l;a=a+1|0}g[H+(o<<2)>>2]=l/-+g[p+(o<<2)>>2]-+g[z+(o<<2)>>2];n=n+1|0}c:while(1){if((o|0)>(w|0)){m=0.0;q=0.0;r=0;break}n=c[L+(c[E+(o<<2)>>2]<<2)>>2]|0;if((n|0)==(G|0))r=f;else{r=c[F+(n<<2)>>2]|0;r=(f|0)<(r|0)?f:r}p=o;while(1){if((p|0)>=(r|0)){p=o;break}n=c[E+(p<<2)>>2]|0;if(+g[H+(n<<2)>>2]>2]=n;a=a+1|0}p=p+1|0}while(1){if((p|0)>=(r|0))break;n=c[E+(p<<2)>>2]|0;if(+g[H+(n<<2)>>2]==y){c[K+(a<<2)>>2]=n;a=a+1|0}p=p+1|0}while(1){if((o|0)>=(r|0)){o=r;continue c}n=c[E+(o<<2)>>2]|0;if(+g[H+(n<<2)>>2]>y){c[K+(a<<2)>>2]=n;a=a+1|0}o=o+1|0}}while(1){if((r|0)>=(a|0))break;o=c[K+(r<<2)>>2]|0;p=c[D+(o<<2)>>2]|0;l=0.0;n=0;while(1){if((n|0)==(r|0))break;l=l-+g[p+(c[K+(n<<2)>>2]<<2)>>2];n=n+1|0}N=l*2.0;u=p+(o<<2)|0;s=+g[u>>2];l=N+m;s=(N*y+m*q-+g[H+(o<<2)>>2]*s)/(l-s);g[I+(r<<2)>>2]=s;m=l-+g[u>>2];q=s;r=r+1|0}p=(a|0)==(C|0);if(p)g[A>>2]=y;u=a+-1|0;m=0.0;q=0.0;o=u;while(1){if((o|0)<=-1)break;r=c[K+(o<<2)>>2]|0;t=c[D+(r<<2)>>2]|0;l=0.0;n=o;while(1){n=n+1|0;if((n|0)>=(a|0))break;l=l-+g[t+(c[K+(n<<2)>>2]<<2)>>2]}l=l*2.0;t=t+(r<<2)|0;N=+g[t>>2];s=l+m;N=(l*y+m*q-+g[H+(r<<2)>>2]*N)/(s-N);g[J+(o<<2)>>2]=N;m=s-+g[t>>2];q=N;o=o+-1|0}if(p){g[J>>2]=y;s=0.0;n=-1;p=0}else{s=0.0;n=-1;p=0}while(1){if((a|0)<=(p|0))break;q=+g[J+(p<<2)>>2];if((p|0)>0)l=+g[I+(p+-1<<2)>>2];else l=q;do if(qy;if(qs;s=t?N:s;n=t?p:n;p=p+1|0}if((n|0)>-1)break;if(v?(c[L+(c[E+(f<<2)>>2]<<2)>>2]|0)>(c[L+(c[E+(w<<2)>>2]<<2)>>2]|0):0){k=+g[M+(c[K+(u<<2)>>2]<<2)>>2]+j;x=f;continue}k=+g[M+(c[K+(u<<2)>>2]<<2)>>2];x=f}m=+g[J+(n<<2)>>2];if(!n)q=m;else q=+g[I+(n+-1<<2)>>2];if(v){t=c[E+(f<<2)>>2]|0;l=+g[M+(t<<2)>>2];l=((c[L+(t<<2)>>2]|0)>(c[L+(c[E+(w<<2)>>2]<<2)>>2]|0)?l-j:l)-+g[z+(c[K+(u<<2)>>2]<<2)>>2]}else l=1.0e9;l=mk?q:k;do if(ly;if(l=(n|0))break;t=c[K+(o<<2)>>2]|0;g[M+(t<<2)>>2]=+g[z+(t<<2)>>2]+l;o=o+1|0}while(1){if((n|0)>=(a|0))break;t=c[K+(n<<2)>>2]|0;g[M+(t<<2)>>2]=+g[z+(t<<2)>>2]+m;n=n+1|0}if(v?(c[L+(c[E+(f<<2)>>2]<<2)>>2]|0)>(c[L+(c[E+(w<<2)>>2]<<2)>>2]|0):0)k=+g[M+(c[K+(u<<2)>>2]<<2)>>2]+j;else k=+g[M+(c[K+(u<<2)>>2]<<2)>>2];a=x;while(1){if((a|0)>(w|0))break;c[E+(a<<2)>>2]=c[K+(a-x<<2)>>2];a=a+1|0}if(e<<24>>24!=0?+B(+(l-y))<.01:0)e=+B(+(m-y))<.01;else e=0;e=e&1}Ts(C,M);Gt(M,E,F,G,i);d=d+1|0}}while(0);return d|0}function Gt(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0;g=0;while(1){if((g|0)>=(e|0))break;c[f+(g<<2)>>2]=c[a+(c[b+((c[d+(g<<2)>>2]|0)+-1<<2)>>2]<<2)>>2];g=g+1|0}return}function Ht(a,b,d,e,f,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;h=+h;var i=0.0,j=0,k=0,l=0,m=0;i=-1.0e9;k=0;j=-1;m=0;while(1){if((m|0)>=(b|0))break;if((m|0)<(k|0))l=k;else{j=j+1|0;if((j|0)==(f|0))k=b;else k=c[e+(j<<2)>>2]|0;if((m|0)>0)i=+g[a+(c[d+(m+-1<<2)>>2]<<2)>>2]+h;else i=-1.0e9;hs(a,d,m,k+-1|0);l=k}k=a+(c[d+(m<<2)>>2]<<2)|0;if(+g[k>>2]>2]=i;k=l;m=m+1|0}return}function It(a){a=a|0;D_(c[c[a>>2]>>2]|0);D_(c[a>>2]|0);D_(c[a+8>>2]|0);D_(c[a+28>>2]|0);D_(c[a+32>>2]|0);D_(c[a+36>>2]|0);D_(c[a+40>>2]|0);D_(c[a+12>>2]|0);D_(c[a+16>>2]|0);D_(c[a+20>>2]|0);D_(c[a+24>>2]|0);D_(a);return}function Jt(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;k=vH(60)|0;c[k>>2]=0;l=k+4|0;c[l>>2]=b;c[k+48>>2]=d;c[k+52>>2]=e;c[k+56>>2]=f;c[k>>2]=Et(a,b)|0;i=b<<2;j=vH(i)|0;c[k+8>>2]=j;h=0;b=0;a=-1;while(1){if((h|0)>=(c[l>>2]|0))break;g=a+1|0;if((h|0)>=(b|0)){b=c[((g|0)==(f|0)?l:e+(g<<2)|0)>>2]|0;a=g}c[j+(c[d+(h<<2)>>2]<<2)>>2]=a;h=h+1|0}c[k+28>>2]=vH(i)|0;c[k+32>>2]=vH(i)|0;c[k+36>>2]=vH(i)|0;c[k+40>>2]=vH(i)|0;c[k+12>>2]=vH(i)|0;c[k+16>>2]=vH(i)|0;c[k+20>>2]=vH(i)|0;c[k+24>>2]=vH(i)|0;return k|0}function Kt(){gt(184592,24);c[46151]=0;return}function Lt(){return it(184592)|0}function Mt(a,b){a=a|0;b=b|0;var c=0.0,d=0.0;c=+h[a>>3]-+h[b>>3];d=+h[a+8>>3]-+h[b+8>>3];return +(+C(+(d*d+c*c)))}function Nt(a){a=a|0;var b=0;b=c[46151]|0;c[a+16>>2]=b;c[46151]=b+1;return}function Ot(a){a=a|0;var b=0,d=0;d=a+20|0;b=(c[d>>2]|0)+-1|0;c[d>>2]=b;if(!b)jt(a,184592);return}function Pt(a){a=a|0;a=a+20|0;c[a>>2]=(c[a>>2]|0)+1;return}function Qt(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=+f;var i=0.0,j=0,k=0,m=0,n=0.0,o=0,p=0.0,q=0,r=0.0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;x=l;l=l+16|0;o=x;c[o>>2]=e;q=b<<2;v=vH(q)|0;m=b<<3;w=vH(m)|0;u=as(a,b)|0;a=0;while(1){if((a|0)>=(b|0))break;k=u+(a<<2)|0;j=0;while(1){if((j|0)==(b|0))break;s=(c[k>>2]|0)+(j<<2)|0;c[s>>2]=c[s>>2]<<8;j=j+1|0}a=a+1|0}if(!d)qa(92381,92389,283,92403);s=vH(m)|0;a=0;while(1){if((a|0)>=(b|0))break;h[s+(a<<3)>>3]=+h[d+(a<<3)>>3];a=a+1|0}Rt(s,b);i=0.0;n=0.0;m=1;while(1){if((m|0)>=(b|0))break;j=u+(m<<2)|0;k=d+(m<<3)|0;a=0;while(1){if((a|0)==(m|0))break;y=c[(c[j>>2]|0)+(a<<2)>>2]|0;r=+h[k>>3]-+h[d+(a<<3)>>3];i=r*r*(1.0/+(O(y,y)|0))+i;n=+B(+r)*(1.0/+(y|0))+n;a=a+1|0}m=m+1|0}r=n/i;a=0;while(1){if((a|0)>=(b|0))break;y=d+(a<<3)|0;h[y>>3]=+h[y>>3]*r;a=a+1|0}St(b,o,f,d,u);k=vH(O(q,b)|0)|0;j=0;while(1){if((j|0)>=(b|0)){k=1;break}m=k+((O(j,b)|0)<<2)|0;c[v+(j<<2)>>2]=m;o=u+(j<<2)|0;i=0.0;a=0;while(1){if((a|0)==(b|0))break;if((a|0)!=(j|0)){p=+(c[(c[o>>2]|0)+(a<<2)>>2]|0);p=-1.0/(p*p);g[m+(a<<2)>>2]=p;i=i-p}a=a+1|0}g[m+(j<<2)>>2]=i;j=j+1|0}while(1){if((k|0)>=(b|0)){j=0;break}i=+h[d+(k<<3)>>3];j=u+(k<<2)|0;a=0;while(1){if((a|0)==(k|0))break;y=(c[j>>2]|0)+(a<<2)|0;n=+(c[y>>2]|0);p=i-+h[d+(a<<3)>>3];p=n*n-p*p;q=~~+C(+p);q=p>0.0?q:0;c[(c[u+(a<<2)>>2]|0)+(k<<2)>>2]=q;c[y>>2]=q;a=a+1|0}k=k+1|0}while(1){if((j|0)>=(b|0)){q=0;a=0;break}n=+h[e+(j<<3)>>3];m=w+(j<<3)|0;h[m>>3]=0.0;o=u+(j<<2)|0;k=v+(j<<2)|0;a=0;i=0.0;while(1){if((a|0)==(b|0))break;if((a|0)!=(j|0)){p=+g[(c[k>>2]|0)+(a<<2)>>2]*+(c[(c[o>>2]|0)+(a<<2)>>2]|0);i=i+(n>=+h[e+(a<<3)>>3]?-p:p);h[m>>3]=i}a=a+1|0}j=j+1|0}while(1){if(!(a<<24>>24==0&(q|0)<200)){t=42;break}if((Eq(v,e,w,b,f,b,1)|0)<0){a=1;break}else{a=1;o=0}while(1){if((o|0)>=(b|0))break;p=+h[e+(o<<3)>>3];k=u+(o<<2)|0;m=v+(o<<2)|0;i=0.0;j=0;while(1){if((j|0)==(b|0))break;do if((j|0)!=(o|0)){n=+g[(c[m>>2]|0)+(j<<2)>>2]*+(c[(c[k>>2]|0)+(j<<2)>>2]|0);if(!(p>=+h[e+(j<<3)>>3])){i=i+n;break}else{i=i+-n;break}}while(0);j=j+1|0}j=w+(o<<3)|0;p=+h[j>>3];if(i!=p?+B(+(1.0-i/p))>1.0e-05:0){h[j>>3]=i;a=0}o=o+1|0}q=q+1|0}a:do if((t|0)==42){i=1.0/r;a=0;while(1){if((a|0)>=(b|0)){a=0;break a}y=d+(a<<3)|0;h[y>>3]=+h[y>>3]*i;y=e+(a<<3)|0;h[y>>3]=+h[y>>3]*i;a=a+1|0}}while(0);D_(c[u>>2]|0);D_(u);D_(c[v>>2]|0);D_(v);D_(s);D_(w);l=x;return a|0}function Rt(a,b){a=a|0;b=b|0;var c=0,d=0.0,e=0.0,f=0;c=0;d=0.0;while(1){if((c|0)>=(b|0))break;e=+h[a+(c<<3)>>3]+d;c=c+1|0;d=e}d=d/+(b|0);c=0;while(1){if((c|0)>=(b|0))break;f=a+(c<<3)|0;h[f>>3]=+h[f>>3]-d;c=c+1|0}f=b+-1|0;Cs(a,0,f,1.0/+Bs(a,0,f),a);return}function St(a,b,d,e,f){a=a|0;b=b|0;d=+d;e=e|0;f=f|0;var g=0,i=0,j=0,k=0,l=0,m=0;k=Tt(f,a)|0;l=vH(8)|0;if(!e){f=0;j=0}else{g=vH(a<<3)|0;f=0;while(1){if((f|0)>=(a|0))break;h[g+(f<<3)>>3]=+h[e+(f<<3)>>3];f=f+1|0}Rt(g,a);f=g;j=g}Ut(k,a,b,l,f,d);e=0;while(1){if((e|0)==1)break;g=l+(e<<3)|0;i=b+(e<<2)|0;f=0;while(1){if((f|0)>=(a|0))break;d=+C(+(+B(+(+h[g>>3]))));m=(c[i>>2]|0)+(f<<3)|0;h[m>>3]=+h[m>>3]*d;f=f+1|0}e=e+1|0}D_(c[k>>2]|0);D_(k);D_(l);D_(j);return}function Tt(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0.0,i=0,j=0,k=0,m=0,n=0,o=0,p=0.0;o=l;l=l+16|0;f=o;n=b<<2;e=vH(O(n,b)|0)|0;n=vH(n)|0;d=0;while(1){if((d|0)>=(b|0))break;c[n+(d<<2)>>2]=e+((O(d,b)|0)<<2);d=d+1|0}m=Wt(a,b,f)|0;h=+g[f>>2];e=0;k=1;while(1){if((e|0)>=(b|0))break;f=a+(e<<2)|0;i=m+(e<<2)|0;j=n+(e<<2)|0;d=0;while(1){if((d|0)==(k|0))break;p=+(c[(c[f>>2]|0)+(d<<2)>>2]|0);p=+g[m+(d<<2)>>2]+ +g[i>>2]-p*p-h;g[(c[j>>2]|0)+(d<<2)>>2]=p;g[(c[n+(d<<2)>>2]|0)+(e<<2)>>2]=p;d=d+1|0}e=e+1|0;k=k+1|0}D_(m);l=o;return n|0}function Ut(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=+g;var i=0,j=0,k=0,l=0,m=0.0,n=0.0,o=0,p=0,q=0,r=0,s=0;r=b<<3;q=vH(r)|0;r=vH(r)|0;n=1.0-g;o=(b|0)<1?b:1;p=b+-1|0;k=(f|0)==0;j=0;a:while(1){if((j|0)>=(o|0))break;l=c[d+(j<<2)>>2]|0;do{i=0;while(1){if((i|0)==(b|0))break;h[l+(i<<3)>>3]=+((g2()|0)%100|0|0);i=i+1|0}if(k)i=0;else{As(l,0,p,-+zs(f,0,p,l),f);i=0}while(1){if((i|0)==(j|0))break;s=d+(i<<2)|0;m=-+zs(c[s>>2]|0,0,p,l);As(l,0,p,m,c[s>>2]|0);i=i+1|0}g=+Bs(l,0,p)}while(g<1.0e-10);Cs(l,0,p,1.0/g,l);do{Ds(r,0,p,l);Vt(a,b,b,l,q,f);Ds(l,0,p,q);i=0;while(1){if((i|0)==(j|0))break;s=d+(i<<2)|0;m=-+zs(c[s>>2]|0,0,p,l);As(l,0,p,m,c[s>>2]|0);i=i+1|0}g=+Bs(l,0,p);if(g<1.0e-10)break a;Cs(l,0,p,1.0/g,l);m=+zs(l,0,p,r)}while(+B(+m)>3]=m*g;j=j+1|0}while(1){if((j|0)>=(o|0))break;k=c[d+(j<<2)>>2]|0;i=0;while(1){if((i|0)>=(b|0)){i=0;break}h[k+(i<<3)>>3]=+((g2()|0)%100|0|0);i=i+1|0}while(1){if((i|0)>=(j|0))break;s=d+(i<<2)|0;n=-+zs(c[s>>2]|0,0,p,k);As(k,0,p,n,c[s>>2]|0);i=i+1|0}Cs(k,0,p,1.0/+Bs(k,0,p),k);h[e+(j<<3)>>3]=0.0;j=j+1|0}l=o+-1|0;j=0;while(1){if((j|0)>=(l|0))break;a=e+(j<<3)|0;f=j+1|0;g=+h[a>>3];i=j;k=f;while(1){if((k|0)>=(o|0))break;n=+h[e+(k<<3)>>3];s=g>2]|0);s=d+(i<<2)|0;Ds(c[b>>2]|0,0,p,c[s>>2]|0);Ds(c[s>>2]|0,0,p,q);h[e+(i<<3)>>3]=+h[a>>3];h[a>>3]=g;j=f}D_(q);D_(r);return}function Vt(a,b,d,e,f,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;i=i|0;var j=0,k=0.0,l=0,m=0;j=0;while(1){if((j|0)>=(b|0))break;m=a+(j<<2)|0;k=0.0;l=0;while(1){if((l|0)>=(d|0))break;k=+h[e+(l<<3)>>3]*+g[(c[m>>2]|0)+(l<<2)>>2]+k;l=l+1|0}h[f+(j<<3)>>3]=k;j=j+1|0}j=b+-1|0;if(i|0)As(f,0,j,-+zs(f,0,j,i),i);return}function Wt(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0.0,h=0,i=0,j=0,k=0.0,l=0,m=0.0;j=vH(b<<2)|0;k=1.0/+(b|0);e=0.0;i=0;while(1){if((i|0)>=(b|0))break;l=a+(i<<2)|0;f=0.0;h=0;while(1){if((h|0)==(b|0))break;m=+(c[(c[l>>2]|0)+(h<<2)>>2]|0);m=m*m;f=m+f;h=h+1|0;e=m+e}g[j+(i<<2)>>2]=k*f;i=i+1|0}g[d>>2]=e/+(O(b,b)|0);return j|0}function Xt(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0.0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0.0,u=0;q=O(d,d)|0;r=vH(q<<3)|0;s=vH(d<<3)|0;e=0;while(1){if((e|0)>=(d|0))break;h[s+(e<<3)>>3]=+h[c+(e<<3)>>3];e=e+1|0}e=0;while(1){if((e|0)>=(q|0))break;h[r+(e<<3)>>3]=+h[a+(e<<3)>>3];e=e+1|0}p=d+-1|0;g=0;o=0;a:while(1){if((o|0)<(p|0)){f=0.0;e=o}else{l=21;break}while(1){if((e|0)>=(d|0))break;t=+B(+(+h[a+((O(e,d)|0)+o<<3)>>3]));m=t=(d|0))break;l=a+(e+i<<3)|0;t=+h[l>>3];m=a+(e+n<<3)|0;h[l>>3]=+h[m>>3];h[m>>3]=t;e=e+1|0}m=c+(g<<3)|0;t=+h[m>>3];j=c+(o<<3)|0;h[m>>3]=+h[j>>3];h[j>>3]=t;m=o+1|0;k=a+(n+o<<3)|0;e=m;while(1){if((e|0)>=(d|0)){o=m;continue a}l=O(e,d)|0;f=+h[a+(l+o<<3)>>3]/+h[k>>3];i=c+(e<<3)|0;h[i>>3]=+h[i>>3]-+h[j>>3]*f;i=0;while(1){if((i|0)>=(d|0))break;u=a+(i+l<<3)|0;h[u>>3]=+h[u>>3]-+h[a+(i+n<<3)>>3]*f;i=i+1|0}e=e+1|0}}if((l|0)==21){f=+h[a+(q+-1<<3)>>3];if(+B(+f)<1.0e-10)l=33;else{h[b+(p<<3)>>3]=+h[c+(p<<3)>>3]/f;e=0;while(1){if((e|0)>=(p|0)){e=0;break}g=d-e|0;i=g+-2|0;f=+h[c+(i<<3)>>3];j=b+(i<<3)|0;h[j>>3]=f;k=O(i,d)|0;g=g+-1|0;while(1){if((g|0)>=(d|0))break;t=f-+h[b+(g<<3)>>3]*+h[a+(g+k<<3)>>3];h[j>>3]=t;g=g+1|0;f=t}h[j>>3]=f/+h[a+(k+i<<3)>>3];e=e+1|0}while(1){if((e|0)>=(d|0)){e=0;break}h[c+(e<<3)>>3]=+h[s+(e<<3)>>3];e=e+1|0}while(1){if((e|0)>=(q|0))break;h[a+(e<<3)>>3]=+h[r+(e<<3)>>3];e=e+1|0}D_(r);D_(s)}}if((l|0)==33){k3(92418)|0;D_(r);D_(s)}return}function Yt(b,d){b=b|0;d=d|0;var e=0.0,f=0.0,g=0.0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;s=l;l=l+16|0;r=s;nr();Kt();Ir();c[46147]=jb[d&3]()|0;Kr();q=r+8|0;p=jb[d&3]()|0;e=0.0;f=0.0;a:while(1){n=(p|0)==0;o=p+8|0;while(1){if(!(Er()|0)){Fr(r);e=+h[r>>3];f=+h[q>>3]}if(!n){if(Er()|0)break;g=+h[o>>3];if(g>3]>2]|0;Nt(j);rr(c[t+8>>2]|0,a[t+16>>0]|0,j);rr(c[v+8>>2]|0,a[v+16>>0]|0,j);Rr(t);Dr(v);Rr(v);v=+h[m+8>>3]>+h[u+8>>3];t=v&1;k=v?u:m;u=or(k,v?m:u)|0;m=Lr(u,t)|0;Or(b,m);rr(u,(t^1)&255,j);Ot(j);j=Mr(b,m)|0;if(j|0){Dr(b);Br(b,j,+Mt(j,k))}b=Mr(m,i)|0;if(!b)continue;Br(m,b,+Mt(b,k))}b=Pr(p)|0;k=Sr(b)|0;i=or(Vr(b)|0,p)|0;m=Lr(i,0)|0;Or(b,m);j=Mr(b,m)|0;if(j|0){Dr(b);Br(b,j,+Mt(j,p))}i=Lr(i,1)|0;Or(m,i);b=Mr(i,k)|0;if(b|0)Br(i,b,+Mt(b,p));p=jb[d&3]()|0}b=c[46090]|0;while(1){b=Sr(b)|0;if((b|0)==(c[46091]|0))break;pr(c[b+8>>2]|0)}l=s;return}function Zt(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;g=l;l=l+16|0;f=g+8|0;e=g;do if((ay(a)|0)!=1){_t(a);if(!b)b=$t(a)|0;d=au(a,b)|0;if(0){h=c[15686]|0;c[e>>2]=ry(b)|0;c[e+4>>2]=d;g1(h,92434,e)|0}if((d|0)<0){Pw(1,92468,f)|0;break}else{bu(a);cu(a,b);du(a,b);eu(a,d);break}}else{h=c[(c[(Sy(a)|0)+16>>2]|0)+132>>2]|0;c[h>>2]=0;c[h+4>>2]=0;c[h+8>>2]=0;c[h+12>>2]=0}while(0);l=g;return b|0}function _t(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;d=ay(a)|0;d=O(d,d)|0;b=Sy(a)|0;while(1){if(!b)break;e=b+16|0;f=c[(c[e>>2]|0)+112>>2]|0;g=f+24|0;c[g>>2]=d;c[g+4>>2]=0;h[f+48>>3]=10.0;f=(mu(a,b)|0)==0;e=c[(c[e>>2]|0)+112>>2]|0;c[e>>2]=f?d:0;c[e+4>>2]=f?0:0;b=Ty(a,b)|0}return}function $t(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;e=(ay(a)|0)<3;b=Sy(a)|0;a:do if(!e){while(1){if(!b)break;e=c[(c[b+16>>2]|0)+112>>2]|0;if((c[e>>2]|0)==0&(c[e+4>>2]|0)==0)lu(a,b,0);b=Ty(a,b)|0}d=0;b=0;e=Sy(a)|0;while(1){if(!e)break a;h=c[(c[e+16>>2]|0)+112>>2]|0;g=c[h>>2]|0;h=c[h+4>>2]|0;f=((d|0)<0)<<31>>31;f=h>>>0>f>>>0|(h|0)==(f|0)&g>>>0>d>>>0;d=f?g:d;b=f?e:b;e=Ty(a,e)|0}}while(0);return b|0}function au(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;d=c[(c[b+16>>2]|0)+112>>2]|0;f=d+24|0;e=c[f>>2]|0;c[f>>2]=0;c[f+4>>2]=0;c[d+32>>2]=0;iu(a,b);d=Sy(a)|0;e=y3(0,e|0,32)|0;f=z;b=0;while(1){if(!d)break;h=(c[(c[d+16>>2]|0)+112>>2]|0)+24|0;g=c[h>>2]|0;h=c[h+4>>2]|0;if((g|0)==(e|0)&(h|0)==(f|0)){b=-1;break}i=((b|0)<0)<<31>>31;b=h>>>0>i>>>0|(h|0)==(i|0)&g>>>0>b>>>0?g:b;d=Ty(a,d)|0}return b|0}function bu(a){a=a|0;var b=0,d=0,e=0,f=0;d=Sy(a)|0;while(1){if(!d)break;b=c[(c[d+16>>2]|0)+112>>2]|0;e=b+16|0;a:do if((c[e>>2]|0)==0&(c[e+4>>2]|0)==0)while(1){e=b+8|0;f=e;f=s3(c[f>>2]|0,c[f+4>>2]|0,1,0)|0;c[e>>2]=f;c[e+4>>2]=z;b=c[b+32>>2]|0;if(!b)break a;b=c[(c[b+16>>2]|0)+112>>2]|0}while(0);d=Ty(a,d)|0}return}function cu(a,b){a=a|0;b=b|0;h[(c[(c[b+16>>2]|0)+112>>2]|0)+40>>3]=6.283185307179586;hu(a,b);return}function du(a,b){a=a|0;b=b|0;h[(c[(c[b+16>>2]|0)+112>>2]|0)+48>>3]=0.0;gu(a,b);return}function eu(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0.0,k=0.0;i=l;l=l+16|0;f=i;g=fu(a,b)|0;if(0){e=c[15686]|0;D1(92524,e)|0;d=0;while(1){if((d|0)>(b|0))break;h[f>>3]=+h[g+(d<<3)>>3];g1(e,92543,f)|0;d=d+1|0}D1(150517,e)|0}d=Sy(a)|0;while(1){if(!d)break;f=c[d+16>>2]|0;e=c[f+112>>2]|0;j=+h[g+(c[e+24>>2]<<3)>>3];e=e+48|0;k=+E(+(+h[e>>3]))*j;f=c[f+132>>2]|0;h[f>>3]=k;h[f+8>>3]=+F(+(+h[e>>3]))*j;d=Ty(a,d)|0}D_(g);l=i;return}function fu(b,d){b=b|0;d=d|0;var e=0.0,f=0.0,g=0,i=0.0,j=0,k=0,m=0,n=0;n=l;l=l+16|0;k=n;m=uH((d<<3)+8|0)|0;b=NL(b,nx(c[b+60>>2]|0,0,98262,0)|0,0)|0;a:do if(!b){f=1.0;e=0.0;b=1}else{i=0.0;e=0.0;g=1;b:while(1){if((g|0)>(d|0)){f=i;b=g;break a}f=+c2(b,k);if(!(f>0.0)){f=i;b=g;break a}i=f>.02?f:.02;e=i+e;j=g+1|0;h[m+(g<<3)>>3]=e;b=c[k>>2]|0;while(1){g=a[b>>0]|0;if(!(g<<24>>24)){g=j;continue b}if(!(g<<24>>24==58|(B$(g<<24>>24)|0)!=0)){g=j;continue b}b=b+1|0}}}while(0);while(1){if((b|0)>(d|0))break;i=e+f;h[m+(b<<3)>>3]=i;b=b+1|0;e=i}l=n;return m|0}function gu(a,b){a=a|0;b=b|0;var d=0,e=0.0,f=0,g=0,i=0,j=0.0;d=c[(c[b+16>>2]|0)+112>>2]|0;if(!(c[d+32>>2]|0))e=0.0;else e=+h[d+48>>3]-+h[d+40>>3]*.5;g=Jx(a,b)|0;while(1){if(!g)break;d=c[g>>2]&3;f=c[((d|0)==3?g:g+48|0)+40>>2]|0;if((f|0)==(b|0))f=c[((d|0)==2?g:g+-48|0)+40>>2]|0;d=c[(c[f+16>>2]|0)+112>>2]|0;if((c[d+32>>2]|0)==(b|0)?(i=d+48|0,!(+h[i>>3]!=10.0)):0){j=+h[d+40>>3];h[i>>3]=j*.5+e;e=j+e;d=d+16|0;if(!((c[d>>2]|0)==0&(c[d+4>>2]|0)==0))gu(a,f)}g=Kx(a,g,b)|0}return}function hu(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0.0,i=0,j=0;e=c[(c[b+16>>2]|0)+112>>2]|0;f=e+8|0;g=+h[e+40>>3]/(+((c[f>>2]|0)>>>0)+4294967296.0*+((c[f+4>>2]|0)>>>0));f=Jx(a,b)|0;while(1){if(!f)break;e=c[f>>2]&3;d=c[((e|0)==3?f:f+48|0)+40>>2]|0;if((d|0)==(b|0))d=c[((e|0)==2?f:f+-48|0)+40>>2]|0;e=c[(c[d+16>>2]|0)+112>>2]|0;if(((c[e+32>>2]|0)==(b|0)?(i=e+40|0,!(+h[i>>3]!=0.0)):0)?(j=e+8|0,h[i>>3]=g*(+((c[j>>2]|0)>>>0)+4294967296.0*+((c[j+4>>2]|0)>>>0)),e=e+16|0,!((c[e>>2]|0)==0&(c[e+4>>2]|0)==0)):0)hu(a,d);f=Kx(a,f,b)|0}return}function iu(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0;p=l;l=l+16|0;n=p;o=nx(b,2,98515,0)|0;c[n+4>>2]=0;c[n>>2]=0;ju(n,d);j=(o|0)==0;a:while(1){k=ku(n)|0;if(!k)break;m=k+16|0;h=c[(c[(c[m>>2]|0)+112>>2]|0)+24>>2]|0;g=Jx(b,k)|0;h=s3(0,h|0,0,1)|0;h=y3(h|0,z|0,32)|0;i=z;while(1){if(!g)continue a;if(!((!j?(a[(yx(g,o)|0)>>0]|0)==48:0)?!(b$(yx(g,o)|0,135312)|0):0)){d=c[g>>2]&3;e=c[((d|0)==3?g:g+48|0)+40>>2]|0;if((e|0)==(k|0))e=c[((d|0)==2?g:g+-48|0)+40>>2]|0;d=c[(c[e+16>>2]|0)+112>>2]|0;f=d+24|0;q=f;r=c[q+4>>2]|0;if(i>>>0>>0|((i|0)==(r|0)?h>>>0<(c[q>>2]|0)>>>0:0)){r=f;c[r>>2]=h;c[r+4>>2]=i;c[d+32>>2]=k;r=(c[(c[m>>2]|0)+112>>2]|0)+16|0;q=r;q=s3(c[q>>2]|0,c[q+4>>2]|0,1,0)|0;c[r>>2]=q;c[r+4>>2]=z;ju(n,e)}}g=Kx(b,g,k)|0}}l=p;return}function ju(a,b){a=a|0;b=b|0;var d=0,e=0;d=uH(8)|0;c[d>>2]=b;b=a+4|0;e=c[b>>2]|0;c[((e|0)==0?a:e+4|0)>>2]=d;c[b>>2]=d;return}function ku(a){a=a|0;var b=0,d=0;d=c[a>>2]|0;if(d){b=c[d>>2]|0;c[a>>2]=c[d+4>>2];D_(d);if(!(c[a>>2]|0))c[a+4>>2]=0}else b=0;return b|0}function lu(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;h=c[c[(c[b+16>>2]|0)+112>>2]>>2]|0;g=Jx(a,b)|0;h=s3(0,h|0,0,1)|0;h=y3(h|0,z|0,32)|0;i=z;while(1){if(!g)break;f=c[g>>2]&3;e=c[((f|0)==3?g:g+48|0)+40>>2]|0;if((e|0)==(b|0))e=c[((f|0)==2?g:g+-48|0)+40>>2]|0;if((e|0)!=(d|0)?(j=c[(c[e+16>>2]|0)+112>>2]|0,f=j,k=c[f+4>>2]|0,i>>>0>>0|((i|0)==(k|0)?h>>>0<(c[f>>2]|0)>>>0:0)):0){k=j;c[k>>2]=h;c[k+4>>2]=i;lu(a,e,b)}g=Kx(a,g,b)|0}return}function mu(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;f=0;g=Jx(a,b)|0;while(1){if(!g){d=1;break}e=c[g>>2]&3;d=c[((e|0)==3?g:g+48|0)+40>>2]|0;if((d|0)==(b|0))d=c[((e|0)==2?g:g+-48|0)+40>>2]|0;if((d|0)!=(b|0)){if(f)if((f|0)==(d|0))d=f;else{d=0;break}}else d=f;f=d;g=Kx(a,g,b)|0}return d|0}function nu(a){a=a|0;var b=0,d=0,e=0,f=0.0,g=0;b=l;l=l+32|0;e=b;d=nx(a,1,92551,0)|0;g=nx(a,0,92551,0)|0;a=ou(a,g,d,nx(a,0,92556,0)|0)|0;d=a+16|0;f=+C(+(+h[a>>3]+.1));zu(e,0.0,0.0,f,f);c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];c[d+16>>2]=c[e+16>>2];c[d+20>>2]=c[e+20>>2];c[d+24>>2]=c[e+24>>2];c[d+28>>2]=c[e+28>>2];pu(a);qu(a);ru(a);l=b;return}function ou(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=uH(72)|0;c[o+60>>2]=0;c[o+56>>2]=a;k=a+16|0;f=0.0;l=0;i=1;j=0;m=0;while(1){g=c[k>>2]|0;if((i|0)>(c[g+180>>2]|0))break;g=ou(c[(c[g+184>>2]|0)+(i<<2)>>2]|0,b,d,e)|0;f=+h[g>>3]+f;if(j|0)c[j+52>>2]=g;l=l+1|0;i=i+1|0;j=g;m=(m|0)==0?g:m}n=Sy(a)|0;g=m;while(1){if(!n)break;i=n+16|0;if(!(c[c[(c[i>>2]|0)+112>>2]>>2]|0)){k=uu(n,d)|0;f=+h[k>>3]+f;if(j|0)c[j+52>>2]=k;c[c[(c[i>>2]|0)+112>>2]>>2]=a;i=l+1|0;j=k;g=(g|0)==0?k:g}else i=l;n=Ty(a,n)|0;l=i}c[o+64>>2]=l;if(!l)f=+wu(a,b);else{h[o+8>>3]=f;f=+vu(o,e)}h[o>>3]=f;c[o+48>>2]=g;return o|0}function pu(a){a=a|0;var b=0,d=0,e=0,f=0,g=0.0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0;p=l;l=l+176|0;f=p+144|0;n=p+64|0;k=p+32|0;i=p;o=c[a+64>>2]|0;a:do if(o|0){m=uH(o<<2)|0;b=a+48|0;e=0;d=b;while(1){d=c[d>>2]|0;if((e|0)>=(o|0))break;c[m+(e<<2)>>2]=d;e=e+1|0;d=d+52|0}_0(m,o,4,79);j=uH(o<<3)|0;d=0;while(1){if((d|0)>=(o|0))break;h[j+(d<<3)>>3]=+h[c[m+(d<<2)>>2]>>3];d=d+1|0}g=+h[a+8>>3];if(+h[a>>3]==g){i=a+16|0;c[f>>2]=c[i>>2];c[f+4>>2]=c[i+4>>2];c[f+8>>2]=c[i+8>>2];c[f+12>>2]=c[i+12>>2];c[f+16>>2]=c[i+16>>2];c[f+20>>2]=c[i+20>>2];c[f+24>>2]=c[i+24>>2];c[f+28>>2]=c[i+28>>2];i=xu(o,j,f)|0}else{q=+h[a+40>>3];r=+h[a+32>>3];h[i>>3]=+h[a+16>>3];h[i+8>>3]=+h[a+24>>3];s=q-r;g=(r+q-+C(+(g*4.0+s*s)))*.5;h[i+16>>3]=r-g;h[i+24>>3]=q-g;c[f>>2]=c[i>>2];c[f+4>>2]=c[i+4>>2];c[f+8>>2]=c[i+8>>2];c[f+12>>2]=c[i+12>>2];c[f+16>>2]=c[i+16>>2];c[f+20>>2]=c[i+20>>2];c[f+24>>2]=c[i+24>>2];c[f+28>>2]=c[i+28>>2];i=xu(o,j,f)|0}if(0){f=c[15686]|0;q=+h[a+24>>3];r=+h[a+32>>3];s=+h[a+40>>3];h[k>>3]=+h[a+16>>3];h[k+8>>3]=q;h[k+16>>3]=r;h[k+24>>3]=s;g1(f,92603,k)|0}e=c[15686]|0;d=0;while(1){if((d|0)>=(o|0))break;k=(c[m+(d<<2)>>2]|0)+16|0;f=i+(d<<5)|0;c[k>>2]=c[f>>2];c[k+4>>2]=c[f+4>>2];c[k+8>>2]=c[f+8>>2];c[k+12>>2]=c[f+12>>2];c[k+16>>2]=c[f+16>>2];c[k+20>>2]=c[f+20>>2];c[k+24>>2]=c[f+24>>2];c[k+28>>2]=c[f+28>>2];if(0){g=+h[f>>3];r=+h[i+(d<<5)+16>>3];u=r*.5;q=+h[i+(d<<5)+8>>3];s=+h[i+(d<<5)+24>>3];t=s*.5;h[n>>3]=+h[j+(d<<3)>>3];h[n+8>>3]=g-u;h[n+16>>3]=q-t;h[n+24>>3]=u+g;h[n+32>>3]=t+q;h[n+40>>3]=s*r;h[n+48>>3]=g;h[n+56>>3]=q;h[n+64>>3]=r;h[n+72>>3]=s;g1(e,92620,n)|0}d=d+1|0}D_(m);D_(j);D_(i);d=0;while(1){b=c[b>>2]|0;if((d|0)>=(o|0))break a;if(!(c[b+60>>2]|0))pu(b);b=b+52|0;d=d+1|0}}while(0);l=p;return}function qu(a){a=a|0;var b=0,d=0,e=0,f=0,g=0.0,i=0.0,j=0,k=0.0,m=0.0;f=l;l=l+48|0;e=f;if(c[a+60>>2]|0){k=+h[a+24>>3];i=+h[a+32>>3];g=+h[a+40>>3];b=c[a+56>>2]|0;d=b+16|0;j=c[d>>2]|0;h[j+16>>3]=+h[a+16>>3];h[j+24>>3]=k;a=c[d>>2]|0;h[a+32>>3]=i*.013888888888888888;h[a+40>>3]=g*.013888888888888888;bN(b,c[(c[(ez(b)|0)+16>>2]|0)+116>>2]&1);su(b);if(0){j=c[15686]|0;a=ry(b)|0;d=c[d>>2]|0;m=+h[d+16>>3];g=+h[d+24>>3];i=+h[d+80>>3];k=+h[d+96>>3]+ +h[d+88>>3];c[e>>2]=a;h[e+8>>3]=m;h[e+16>>3]=g;h[e+24>>3]=i;h[e+32>>3]=k;g1(j,92562,e)|0}}else{b=a+48|0;while(1){b=c[b>>2]|0;if(!b)break;qu(b);b=b+52|0}i=+h[a+32>>3];m=+h[a+40>>3];g=+h[a+16>>3]-i*.5;k=+h[a+24>>3]-m*.5;j=c[(c[a+56>>2]|0)+16>>2]|0;h[j+16>>3]=g;h[j+24>>3]=k;h[j+32>>3]=g+i;h[j+40>>3]=k+m}l=f;return}function ru(a){a=a|0;var b=0,d=0,e=0;e=c[a+64>>2]|0;b=a+48|0;d=0;while(1){b=c[b>>2]|0;if((d|0)>=(e|0))break;ru(b);b=b+52|0;d=d+1|0}D_(a);return}function su(b){b=b|0;var d=0,e=0,f=0,g=0;g=l;l=l+48|0;f=g;d=g+8|0;e=c[46380]|0;if(e|0?(a[(yx(b,e)|0)>>0]|0)==0:0){h[f>>3]=+h[(c[b+16>>2]|0)+80>>3]*.7;Y0(d,92597,f)|0;rx(b,c[46380]|0,d)|0}dM(b);l=g;return}function tu(a,b){a=a|0;b=b|0;var d=0.0;d=+h[c[a>>2]>>3]-+h[c[b>>2]>>3];return (d<0.0?1:(d>0.0)<<31>>31)|0}function uu(a,b){a=a|0;b=b|0;var d=0;d=uH(72)|0;h[d>>3]=+wu(a,b);c[d+60>>2]=1;c[d+56>>2]=a;return d|0}function vu(a,b){a=a|0;b=b|0;var d=0.0;d=+LL(c[a+56>>2]|0,b,0.0,0.0);if(d==0.0)d=+h[a+8>>3];else{d=+C(+(+h[a+8>>3]))+d*2.0;d=d*d}return +d}function wu(a,b){a=a|0;b=b|0;var c=0.0;c=+LL(a,b,1.0,0.0);return +(c==0.0?1.0e3:c*1.0e3)}function xu(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0.0,g=0,i=0,j=0.0;i=l;l=l+32|0;g=i;e=0;f=0.0;while(1){if((e|0)>=(a|0))break;j=+h[b+(e<<3)>>3]+f;e=e+1|0;f=j}if(f>+h[d+24>>3]*+h[d+16>>3]+.001)e=0;else{e=uH(a<<5)|0;c[g>>2]=c[d>>2];c[g+4>>2]=c[d+4>>2];c[g+8>>2]=c[d+8>>2];c[g+12>>2]=c[d+12>>2];c[g+16>>2]=c[d+16>>2];c[g+20>>2]=c[d+20>>2];c[g+24>>2]=c[d+24>>2];c[g+28>>2]=c[d+28>>2];yu(a,b,e,0,0.0,1.0,0.0,1.0,g)}l=i;return e|0}function yu(a,b,d,e,f,g,i,j,k){a=a|0;b=b|0;d=d|0;e=e|0;f=+f;g=+g;i=+i;j=+j;k=k|0;var m=0,n=0.0,o=0.0,p=0,q=0.0,r=0.0,s=0.0,t=0.0,u=0,v=0.0,w=0,x=0,y=0,z=0,A=0,B=0.0;z=l;l=l+112|0;y=z+72|0;u=z+40|0;p=z+32|0;m=z;w=k+16|0;q=+h[w>>3];x=k+24|0;r=+h[x>>3];v=+h[k+16+((!(q>3];do if((a|0)>=1){if(0){A=c[15686]|0;B=+h[k+8>>3];h[m>>3]=+h[k>>3];h[m+8>>3]=q;h[m+16>>3]=B;h[m+24>>3]=r;g1(A,92657,m)|0;c[p>>2]=e;g1(A,92703,p)|0}if(!e){i=+h[b>>3];B=v*v;v=i/B;B=B/i;c[y>>2]=c[k>>2];c[y+4>>2]=c[k+4>>2];c[y+8>>2]=c[k+8>>2];c[y+12>>2]=c[k+12>>2];c[y+16>>2]=c[k+16>>2];c[y+20>>2]=c[k+20>>2];c[y+24>>2]=c[k+24>>2];c[y+28>>2]=c[k+28>>2];yu(a,b,d,1,i,i,i,v>B?v:B,y);break}if((a|0)>(e|0)?(t=+h[b+(e<<3)>>3],n=tg?g:t,t=t+i,o=t/v,o=o*o,B=o/s,o=n/o,o=B>o?B:o,o<=j):0){c[y>>2]=c[k>>2];c[y+4>>2]=c[k+4>>2];c[y+8>>2]=c[k+8>>2];c[y+12>>2]=c[k+12>>2];c[y+16>>2]=c[k+16>>2];c[y+20>>2]=c[k+20>>2];c[y+24>>2]=c[k+24>>2];c[y+28>>2]=c[k+28>>2];yu(a,b,d,e+1|0,n,s,t,o,y);break}q=i/v;if(0){A=c[15686]|0;c[u>>2]=e;h[u+8>>3]=i;h[u+16>>3]=v;h[u+24>>3]=q;g1(A,92728,u)|0}n=+h[w>>3];if(v==n){o=1.0/q;p=k+8|0;n=+h[k>>3]-n*.5;m=0;while(1){if((m|0)>=(e|0))break;h[d+(m<<5)+24>>3]=q;B=+h[b+(m<<3)>>3]*o;h[d+(m<<5)+16>>3]=B;h[d+(m<<5)+8>>3]=(+h[x>>3]-q)*.5+ +h[p>>3];h[d+(m<<5)>>3]=B*.5+n;n=B+n;m=m+1|0}h[p>>3]=+h[p>>3]-q*.5;m=1}else{o=1.0/q;n=+h[x>>3]*.5+ +h[k+8>>3];m=0;while(1){if((m|0)>=(e|0))break;h[d+(m<<5)+16>>3]=q;B=+h[b+(m<<3)>>3]*o;h[d+(m<<5)+24>>3]=B;h[d+(m<<5)>>3]=(q-+h[w>>3])*.5+ +h[k>>3];h[d+(m<<5)+8>>3]=n-B*.5;n=n-B;m=m+1|0}h[k>>3]=+h[k>>3]+q*.5;m=0}A=k+16+(m<<3)|0;h[A>>3]=+h[A>>3]-q;c[y>>2]=c[k>>2];c[y+4>>2]=c[k+4>>2];c[y+8>>2]=c[k+8>>2];c[y+12>>2]=c[k+12>>2];c[y+16>>2]=c[k+16>>2];c[y+20>>2]=c[k+20>>2];c[y+24>>2]=c[k+24>>2];c[y+28>>2]=c[k+28>>2];yu(a-e|0,b+(e<<3)|0,d+(e<<5)|0,0,0.0,0.0,0.0,1.0,y)}while(0);l=z;return}function zu(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=+e;h[a>>3]=b;h[a+8>>3]=c;h[a+16>>3]=d;h[a+24>>3]=e;return}function Au(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,i=0,j=0,k=0,m=0.0,n=0.0,o=0.0,p=0.0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;D=l;l=l+96|0;C=D+48|0;B=D+24|0;A=D+16|0;z=D+8|0;u=D+80|0;v=D;w=a+16|0;x=d+4|0;y=u+4|0;s=Sy(a)|0;e=0;f=0;i=0;j=0;while(1){if(!s)break;t=Ex(a,s)|0;q=e;r=j;while(1){if(!t)break;e=(b[(c[t+16>>2]|0)+168>>1]|0)==0;do if((s|0)==(c[((c[t>>2]&3|0)==2?t:t+-48|0)+40>>2]|0))if(e){j=q;e=r}else{if(!f){e=uH(96)|0;c[e+84>>2]=uH(((ay(a)|0)<<5)+11520|0)|0;f=e}else e=r;Mm(f,t,c[(c[w>>2]|0)+248>>2]|0);j=q}else if(!e){i=Bu(t,d)|0;j=i+8|0;if(ms(c[j>>2]|0,c[i>>2]|0)|0){k=sU(c[j>>2]|0,c[i>>2]|0)|0;if(!k){Pw(0,92781,z)|0;j=1;e=r;break}else e=t;while(1){if(!e)break;E=e+16|0;F=(c[E>>2]|0)+144|0;Sm(v,e,k,0,c[j>>2]|0,c[i>>2]|0);H=v;G=c[H+4>>2]|0;c[F>>2]=c[H>>2];c[F+4>>2]=G;Um(a,e,c[j>>2]|0,c[i>>2]|0,0);e=c[(c[E>>2]|0)+172>>2]|0}Cu(i);j=q;e=r;break}if(!q){qq(u,a);e=YD(a,8,8)|0;Pw(0,92865,A)|0;n=+(e|0);o=+g[d>>2];p=+g[x>>2];if(!(o>=n)&!(p>=n)){m=+g[u>>2];n=+g[y>>2];if(!(!(m<=o)&!(n<=p))){h[C>>3]=m;h[C+8>>3]=n;h[C+16>>3]=o;h[C+24>>3]=p;Pw(3,92981,C)|0}}else{c[B>>2]=e;h[B+8>>3]=o;h[B+16>>3]=p;Pw(3,92931,B)|0}j=1;e=r}else{j=q;e=r}}else{j=q;e=r}while(0);t=Gx(a,t)|0;q=j;r=e}s=Ty(a,s)|0;e=q;j=r}Du(i);if(f|0){D_(c[f+84>>2]|0);D_(j)}l=D;return e|0}function Bu(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;p=l;l=l+16|0;m=p+4|0;n=p;e=c[b>>2]&3;f=c[((e|0)==2?b:b+-48|0)+40>>2]|0;e=c[((e|0)==3?b:b+48|0)+40>>2]|0;q=f+16|0;h=c[(c[q>>2]|0)+212>>2]|0;c[m>>2]=h;i=e+16|0;g=c[(c[i>>2]|0)+212>>2]|0;c[n>>2]=g;k=uH(12)|0;b=h;j=g;if(a[(c[q>>2]|0)+118>>0]|0){b=c[(c[(c[b+16>>2]|0)+140>>2]|0)+48>>2]|0;c[m>>2]=b;f=h;h=b}if(!(a[(c[i>>2]|0)+118>>0]|0))i=j;else{i=c[(c[(c[j+16>>2]|0)+140>>2]|0)+48>>2]|0;c[n>>2]=i;e=g;g=i}h=c[(c[(c[h+16>>2]|0)+140>>2]|0)+44>>2]|0;g=c[(c[(c[g+16>>2]|0)+140>>2]|0)+44>>2]|0;if((h|0)<=(g|0))if((g|0)>(h|0)){Eu(k,g,e,h,n,d);b=c[n>>2]|0;g=b;e=n;o=11}else h=i;else{Eu(k,h,f,g,m,d);b=c[m>>2]|0;f=b;g=e;e=m;o=11}while(1){if((o|0)==11){c[e>>2]=c[(c[(c[b+16>>2]|0)+140>>2]|0)+48>>2];e=g;b=c[m>>2]|0;h=c[n>>2]|0}if((b|0)==(h|0))break;Fu(k,b,0,f,d);Fu(k,h,e,0,d);c[m>>2]=c[(c[(c[b+16>>2]|0)+140>>2]|0)+48>>2];f=b;g=h;e=n;b=h;o=11}Fu(k,h,e,f,d);l=p;return k|0}function Cu(a){a=a|0;c[a>>2]=0;return}function Du(a){a=a|0;if(a|0){D_(c[a+8>>2]|0);D_(a)}return}function Eu(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;i=f;while(1){h=c[i>>2]|0;if((b|0)<=(e|0))break;Fu(a,h,d,0,g);b=b+-1|0;i=(c[(c[h+16>>2]|0)+140>>2]|0)+48|0;d=h}c[f>>2]=d;return}function Fu(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=Sy(d)|0;while(1){if(!h)break;i=c[h+16>>2]|0;if(!((h|0)==(f|0)|((h|0)==(e|0)?1:(c[i+212>>2]|0)!=(d|0)))?(a[i+118>>0]|0)==0:0)Gu(b,Pm(h,g,0)|0);h=Ty(d,h)|0}i=d+16|0;d=1;while(1){h=c[i>>2]|0;if((d|0)>(c[h+180>>2]|0))break;h=c[(c[h+184>>2]|0)+(d<<2)>>2]|0;if(!((h|0)==(e|0)|(h|0)==(f|0)))Gu(b,Hu(h,g)|0);d=d+1|0}return}function Gu(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;e=a+4|0;f=c[e>>2]|0;g=a+8|0;d=c[g>>2]|0;do if((f|0)==(c[a>>2]|0))if(!d){d=vH(400)|0;c[g>>2]=d;c[e>>2]=100;break}else{c[e>>2]=f<<1;d=xH(d,f<<3)|0;c[g>>2]=d;break}while(0);g=c[a>>2]|0;c[a>>2]=g+1;c[d+(g<<2)>>2]=b;return}function Hu(b,d){b=b|0;d=d|0;var e=0.0,f=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0,n=0.0,o=0.0,p=0.0;m=uH(8)|0;b=c[b+16>>2]|0;e=+h[b+16>>3];l=+h[b+24>>3];f=+h[b+32>>3];k=+h[b+40>>3];c[m+4>>2]=4;b=uH(64)|0;c[m>>2]=b;if(!(a[d+8>>0]|0)){p=+g[d>>2];o=+g[d+4>>2];i=(f+e)*.5*(p+-1.0);n=(k+l)*.5*(o+-1.0);j=e*p-i;i=f*p-i;f=k*o-n;e=l*o-n}else{i=+g[d>>2];p=+g[d+4>>2];j=e-i;i=f+i;f=k+p;e=l-p}h[b>>3]=j;h[b+8>>3]=e;h[b+16>>3]=j;h[b+24>>3]=f;h[b+32>>3]=i;h[b+40>>3]=f;h[b+48>>3]=i;h[b+56>>3]=e;return m|0}function Iu(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;o=l;l=l+160|0;n=o+16|0;j=o+8|0;g=o;k=o+24|0;m=uH(ay(b)|0)|0;h=b+16|0;f=c[c[(c[h>>2]|0)+140>>2]>>2]|0;a:do if(!f){g=0;f=0}else{p=ry(b)|0;i=c[46152]|0;c[g>>2]=p;c[g+4>>2]=i;Y0(k,93041,g)|0;i=vA(b,k,1)|0;Az(i,134401,280,1)|0;g=uH(56)|0;c[(c[i+16>>2]|0)+140>>2]=g;c[g>>2]=f;c[g+4>>2]=c[(c[(c[h>>2]|0)+140>>2]|0)+4>>2];while(1){g=c[f+4>>2]|0;if(!g){g=i;f=1;break a}if(!(a[m+(c[(c[g+16>>2]|0)+120>>2]|0)>>0]|0))Ju(b,g,i,m);f=f+16|0}}while(0);h=0;i=Sy(b)|0;while(1){if(!i)break;p=c[i+16>>2]|0;if((a[m+(c[p+120>>2]|0)>>0]|0)==0?(a[p+119>>0]|0)==3:0){if(!g){p=ry(b)|0;g=(c[46152]|0)+f|0;c[j>>2]=p;c[j+4>>2]=g;Y0(k,93041,j)|0;g=vA(b,k,1)|0;Az(g,134401,280,1)|0;p=uH(56)|0;c[(c[g+16>>2]|0)+140>>2]=p;f=f+1|0}Ju(b,i,g,m);h=1}i=Ty(b,i)|0}if(g|0)vD(g)|0;g=Sy(b)|0;while(1){if(!g)break;if(!(a[m+(c[(c[g+16>>2]|0)+120>>2]|0)>>0]|0)){j=ry(b)|0;p=(c[46152]|0)+f|0;c[n>>2]=j;c[n+4>>2]=p;Y0(k,93049,n)|0;p=vA(b,k,1)|0;Az(p,134401,280,1)|0;j=uH(56)|0;c[(c[p+16>>2]|0)+140>>2]=j;Ju(b,g,p,m);vD(p)|0;f=f+1|0}g=Ty(b,g)|0}D_(m);c[46152]=(c[46152]|0)+f;if(d|0)c[d>>2]=f;if(e|0)c[e>>2]=h;i=uH((f<<2)+4|0)|0;h=i;g=wA(b)|0;while(1){if(!g)break;c[h>>2]=g;h=h+4|0;g=xA(g)|0;f=f+-1|0}if(!f){c[h>>2]=0;l=o;return i|0}else qa(93057,93068,134,93075);return 0}function Ju(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;a[f+(c[(c[d+16>>2]|0)+120>>2]|0)>>0]=1;Xy(e,d,1)|0;i=Jx(b,d)|0;while(1){if(!i)break;h=c[i>>2]&3;g=c[((h|0)==3?i:i+48|0)+40>>2]|0;if((g|0)==(d|0))g=c[((h|0)==2?i:i+-48|0)+40>>2]|0;if(!(a[f+(c[(c[g+16>>2]|0)+120>>2]|0)>>0]|0))Ju(b,g,e,f);i=Kx(b,i,d)|0}return}function Ku(a){a=a|0;var b=0;b=vH(24)|0;c[46153]=b;c[b>>2]=Cw(18100,c[4555]|0)|0;c[b+16>>2]=0;c[b+12>>2]=0;c[b+4>>2]=Lu(a)|0;return b|0}function Lu(a){a=a|0;var b=0,d=0;b=vH(16)|0;c[b+12>>2]=0;d=vH(a*20|0)|0;c[b>>2]=d;c[b+8>>2]=d+(a*20|0);c[b+4>>2]=d;return b|0}function Mu(a,b,d){a=a|0;b=b|0;d=d|0;d=Ou(c[46153]|0)|0;c[d>>2]=c[b>>2];c[d+4>>2]=c[b+4>>2];c[d+8>>2]=0;return d|0}function Nu(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;a=(c[b>>2]|0)-(c[d>>2]|0)|0;if(!a)a=(c[b+4>>2]|0)-(c[d+4>>2]|0)|0;return a|0}function Ou(a){a=a|0;var b=0,d=0,e=0,f=0;f=a+8|0;a=c[f>>2]|0;b=c[a+4>>2]|0;if((b|0)==(c[a+8>>2]|0)){d=a+12|0;e=c[d>>2]|0;if(!e){a=Lu(((b-(c[a>>2]|0)|0)/20|0)<<1)|0;c[d>>2]=a}else a=e;c[f>>2]=a;b=c[a>>2]|0;c[a+4>>2]=b}c[a+4>>2]=b+20;return b|0}function Pu(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=a+12|0;d=c[f>>2]|0;if((d|0)<(b|0)){e=d<<1;e=(e|0)<(b|0)?b:e;b=a+16|0;d=c[b>>2]|0;if(d|0)D_(d);c[b>>2]=vH(e<<3)|0;c[f>>2]=e}return}function Qu(a){a=a|0;var b=0;b=c[a>>2]|0;nb[c[b>>2]&63](b,0,64)|0;c[a+20>>2]=c[a+16>>2];b=c[a+4>>2]|0;c[a+8>>2]=b;c[b+4>>2]=c[b>>2];return}function Ru(a){a=a|0;yw(c[a>>2]|0)|0;Su(c[a+4>>2]|0);D_(c[a+16>>2]|0);D_(a);return}function Su(a){a=a|0;var b=0;while(1){if(!a)break;b=c[a+12>>2]|0;D_(c[a>>2]|0);D_(a);a=b}return}function Tu(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;g=l;l=l+32|0;f=g;h=g+12|0;c[h>>2]=b;c[h+4>>2]=d;i=c[a>>2]|0;h=(nb[c[i>>2]&63](i,h,1)|0)+8|0;c[h>>2]=Uu(a,e,c[h>>2]|0)|0;if(0>2){i=c[15686]|0;h=ry(e)|0;c[f>>2]=b;c[f+4>>2]=d;c[f+8>>2]=h;g1(i,93085,f)|0}l=g;return}function Uu(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=a+20|0;a=c[e>>2]|0;c[e>>2]=a+8;c[a>>2]=b;c[a+4>>2]=d;return a|0}function Vu(a,b){a=a|0;b=b|0;Jw(c[a>>2]|0,b,a)|0;return}function Wu(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=l;l=l+32|0;f=e;c[f>>2]=b;c[f+4>>2]=d;d=c[a>>2]|0;d=nb[c[d>>2]&63](d,f,4)|0;l=e;return d|0}function Xu(a,b){a=a|0;b=b|0;if((ay(a)|0)==1){a=c[(c[(Sy(a)|0)+16>>2]|0)+132>>2]|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;c[a+12>>2]=0}else{Yu(a);if(!((QL(xx(b,93102)|0)|0)<<24>>24))b=tv(a,183128)|0;else b=Zu(a)|0;Cv(a,b,183128);_u(b)}return}function Yu(a){a=a|0;var b=0;b=ez(c[c[(c[(Sy(a)|0)+16>>2]|0)+112>>2]>>2]|0)|0;a=c[46154]|0;if((b|0)!=(a|0)){c[45785]=0;c[46154]=b;c[46155]=nx(b,0,93111,0)|0;c[46156]=nx(c[46154]|0,1,93119,0)|0;c[46157]=nx(c[46154]|0,1,93136,0)|0;a=c[46154]|0}c[46158]=xx(a,93136)|0;nv(183128);c[45784]=1;h[22895]=+LL(c[46154]|0,c[46155]|0,1.0,0.0);c[45786]=c[46156];c[45787]=c[46157];c[45788]=c[46158];return}function Zu(a){a=a|0;var b=0,d=0,e=0,f=0;f=l;l=l+144|0;e=f;d=f+8|0;b=c[45785]|0;c[45785]=b+1;c[e>>2]=b;Y0(d,93152,e)|0;d=ov(vA(a,d,1)|0)|0;e=d+8|0;b=Sy(a)|0;while(1){if(!b)break;Xy(c[e>>2]|0,b,1)|0;c[(c[(c[b+16>>2]|0)+112>>2]|0)+12>>2]=d;b=Ty(a,b)|0}l=f;return d|0}function _u(a){a=a|0;Bv(a);return}function $u(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;e=l;l=l+16|0;f=e;av(f,c);bv(a,b,c,f);cv(b,f,d);dv(f);l=e;return}function av(a,b){a=a|0;b=b|0;c[a>>2]=vH(b<<4)|0;c[a+4>>2]=b;c[a+8>>2]=0;return}function bv(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=l;l=l+64|0;r=D+32|0;u=D+48|0;v=D+16|0;w=D;t=b<<2;A=vH(t)|0;C=vH(t)|0;c[v>>2]=0;c[v+4>>2]=0;c[v+8>>2]=0;c[v+12>>2]=0;s=vH(t)|0;t=vH(t)|0;f=0;while(1){if((f|0)>=(b|0))break;c[s+(f<<2)>>2]=f;f=f+1|0}q=b+-1|0;js(a,s,0,q);f=0;while(1){if((f|0)>=(b|0))break;c[t+(c[s+(f<<2)>>2]<<2)>>2]=f;f=f+1|0}fv(u,a,s,b);f=1;while(1){if((f|0)>=(b|0)){f=0;break}c[A+(c[s+(f<<2)>>2]<<2)>>2]=c[s+(f+-1<<2)>>2];f=f+1|0}while(1){if((f|0)>=(q|0))break;p=f+1|0;c[C+(c[s+(f<<2)>>2]<<2)>>2]=c[s+(p<<2)>>2];f=p}k=e+8|0;m=e+4|0;n=v+4|0;o=w+4|0;p=w+8|0;j=0;while(1){if((j|0)>=(d|0))break;if(!((gv(u,v)|0)<<24>>24))break;f=c[k>>2]|0;b=c[m>>2]|0;if((f|0)<(b|0))b=c[e>>2]|0;else{c[m>>2]=b<<1;b=F_(c[e>>2]|0,b<<5)|0;c[e>>2]=b;f=c[k>>2]|0}c[k>>2]=f+1;f=b+(f<<4)|0;c[f>>2]=c[v>>2];c[f+4>>2]=c[v+4>>2];c[f+8>>2]=c[v+8>>2];c[f+12>>2]=c[v+12>>2];f=c[v>>2]|0;b=c[t+(f<<2)>>2]|0;g=c[n>>2]|0;i=c[t+(g<<2)>>2]|0;if((b|0)>0?(x=c[s+(b+-1<<2)>>2]|0,y=C+(x<<2)|0,(c[t+(c[y>>2]<<2)>>2]|0)<(i|0)):0){c[w>>2]=x;c[o>>2]=g;h[p>>3]=+h[a+(g<<3)>>3]-+h[a+(x<<3)>>3];c[r>>2]=c[w>>2];c[r+4>>2]=c[w+4>>2];c[r+8>>2]=c[w+8>>2];c[r+12>>2]=c[w+12>>2];hv(u,r);c[y>>2]=g;c[A+(g<<2)>>2]=x}if((i|0)<(q|0)?(z=c[s+(i+1<<2)>>2]|0,B=A+(z<<2)|0,(c[t+(c[B>>2]<<2)>>2]|0)>(b|0)):0){c[w>>2]=f;c[o>>2]=z;h[p>>3]=+h[a+(z<<3)>>3]-+h[a+(f<<3)>>3];c[r>>2]=c[w>>2];c[r+4>>2]=c[w+4>>2];c[r+8>>2]=c[w+8>>2];c[r+12>>2]=c[w+12>>2];hv(u,r);c[B>>2]=f;c[C+(f<<2)>>2]=z}j=j+1|0}D_(A);D_(C);D_(s);D_(t);iv(u);l=D;return}function cv(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;k=vH(a<<2)|0;l=b+8|0;i=c[l>>2]|0;j=(i<<1)+a|0;h=j<<2;e=vH(h)|0;h=vH(h)|0;f=0;while(1){if((f|0)>=(a|0))break;c[k+(f<<2)>>2]=1;f=f+1|0}f=0;while(1){if((f|0)>=(i|0)){f=0;break}n=c[b>>2]|0;m=c[n+(f<<4)+4>>2]|0;n=k+(c[n+(f<<4)>>2]<<2)|0;c[n>>2]=(c[n>>2]|0)+1;m=k+(m<<2)|0;c[m>>2]=(c[m>>2]|0)+1;f=f+1|0}while(1){if((f|0)>=(j|0))break;g[h+(f<<2)>>2]=1.0;f=f+1|0}i=vH(a*20|0)|0;c[d>>2]=i;f=0;while(1){if((f|0)>=(a|0))break;c[i+(f*20|0)>>2]=1;c[i+(f*20|0)+8>>2]=h;c[i+(f*20|0)+4>>2]=e;c[e>>2]=f;g[h>>2]=0.0;n=c[k+(f<<2)>>2]|0;h=h+(n<<2)|0;e=e+(n<<2)|0;f=f+1|0}D_(k);while(1){e=c[l>>2]|0;if(!e)break;n=e+-1|0;c[l>>2]=n;m=c[b>>2]|0;ev(i,c[m+(n<<4)>>2]|0,c[m+(n<<4)+4>>2]|0)}return}function dv(a){a=a|0;D_(c[a>>2]|0);return}function ev(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,i=0,j=0;f=a+(b*20|0)|0;h=c[f>>2]|0;i=c[a+(b*20|0)+4>>2]|0;e=0;while(1){if((e|0)>=(h|0)){j=4;break}if((c[i+(e<<2)>>2]|0)==(d|0))break;else e=e+1|0}if((j|0)==4?(c[f>>2]=h+1,c[i+(h<<2)>>2]=d,i=c[a+(d*20|0)+4>>2]|0,h=a+(d*20|0)|0,j=c[h>>2]|0,c[h>>2]=j+1,c[i+(j<<2)>>2]=b,c[a+8>>2]|0):0){j=c[a+(b*20|0)+8>>2]|0;g[j>>2]=+g[j>>2]+-1.0;j=c[a+(d*20|0)+8>>2]|0;g[j>>2]=+g[j>>2]+-1.0}return}function fv(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0.0,k=0,l=0;f=e+-1|0;c[a+4>>2]=f;c[a+8>>2]=f;c[a>>2]=vH(f<<4)|0;e=0;while(1){if((e|0)>=(f|0))break;l=c[d+(e<<2)>>2]|0;g=e+1|0;k=c[d+(g<<2)>>2]|0;j=+h[b+(k<<3)>>3]-+h[b+(l<<3)>>3];i=c[a>>2]|0;c[i+(e<<4)>>2]=l;c[i+(e<<4)+4>>2]=k;h[i+(e<<4)+8>>3]=j;e=g}e=(f|0)/2|0;while(1){if((e|0)<=-1)break;jv(a,e);e=e+-1|0}return}function gv(a,b){a=a|0;b=b|0;var d=0,e=0;d=a+4|0;if(!(c[d>>2]|0))a=0;else{e=c[a>>2]|0;c[b>>2]=c[e>>2];c[b+4>>2]=c[e+4>>2];c[b+8>>2]=c[e+8>>2];c[b+12>>2]=c[e+12>>2];b=c[a>>2]|0;e=b+((c[d>>2]|0)+-1<<4)|0;c[b>>2]=c[e>>2];c[b+4>>2]=c[e+4>>2];c[b+8>>2]=c[e+8>>2];c[b+12>>2]=c[e+12>>2];c[d>>2]=(c[d>>2]|0)+-1;jv(a,0);a=1}return a|0}function hv(a,b){a=a|0;b=b|0;var d=0,e=0.0,f=0.0,g=0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+16|0;m=n;j=a+4|0;g=c[j>>2]|0;d=a+8|0;if((g|0)==(c[d>>2]|0)){c[d>>2]=g<<1;d=F_(c[a>>2]|0,g<<5)|0;c[a>>2]=d;k=a;i=c[j>>2]|0}else{k=a;i=g;d=c[a>>2]|0}c[j>>2]=i+1;j=d+(g<<4)|0;c[j>>2]=c[b>>2];c[j+4>>2]=c[b+4>>2];c[j+8>>2]=c[b+8>>2];c[j+12>>2]=c[b+12>>2];while(1){if((g|0)<=0)break;d=c[k>>2]|0;e=+h[d+(g<<4)+8>>3];a=g>>>1;f=+h[d+(a<<4)+8>>3];if(!(e>2]|0}j=d+(g<<4)|0;c[m>>2]=c[j>>2];c[m+4>>2]=c[j+4>>2];c[m+8>>2]=c[j+8>>2];c[m+12>>2]=c[j+12>>2];b=d+(a<<4)|0;c[j>>2]=c[b>>2];c[j+4>>2]=c[b+4>>2];c[j+8>>2]=c[b+8>>2];c[j+12>>2]=c[b+12>>2];j=(c[k>>2]|0)+(a<<4)|0;c[j>>2]=c[m>>2];c[j+4>>2]=c[m+4>>2];c[j+8>>2]=c[m+8>>2];c[j+12>>2]=c[m+12>>2];g=a}l=n;return}function iv(a){a=a|0;D_(c[a>>2]|0);return}function jv(a,b){a=a|0;b=b|0;var d=0,e=0.0,f=0.0,g=0,i=0,j=0,k=0,m=0,n=0;m=l;l=l+16|0;i=m;j=a+4|0;while(1){d=b<<1;g=d|1;if((d|0)<(c[j>>2]|0)){n=c[a>>2]|0;e=+h[n+(d<<4)+8>>3];f=+h[n+(b<<4)+8>>3];if(!(e>2]|0)){n=c[a>>2]|0;e=+h[n+(g<<4)+8>>3];f=+h[n+(d<<4)+8>>3];if(!(e>2]|0;n=g+(d<<4)|0;c[i>>2]=c[n>>2];c[i+4>>2]=c[n+4>>2];c[i+8>>2]=c[n+8>>2];c[i+12>>2]=c[n+12>>2];g=g+(b<<4)|0;c[n>>2]=c[g>>2];c[n+4>>2]=c[g+4>>2];c[n+8>>2]=c[g+8>>2];c[n+12>>2]=c[g+12>>2];n=(c[a>>2]|0)+(b<<4)|0;c[n>>2]=c[i>>2];c[n+4>>2]=c[i+4>>2];c[n+8>>2]=c[i+8>>2];c[n+12>>2]=c[i+12>>2];b=d}l=m;return}function kv(a,b,d,e,f,g,i,j){a=a|0;b=b|0;d=+d;e=+e;f=f|0;g=g|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0.0;l=(f|0)!=0;if(!l){f=vH(b<<3)|0;if(!(kt(a,b,f,b)|0))m=3;else{a=1;m=17}}else m=3;if((m|0)==3){k=uH(b<<2)|0;c[g>>2]=k;a=0;while(1){if((a|0)>=(b|0))break;c[k+(a<<2)>>2]=a;a=a+1|0}a=b+-1|0;js(f,k,0,a);n=+h[f+(c[k>>2]<<3)>>3];e=(+h[f+(c[k+(a<<2)>>2]<<3)>>3]-n)*e/+(a|0);e=e=(b|0))break;n=+h[f+(c[k+(g<<2)>>2]<<3)>>3];a=a+(n-d>e&1)|0;g=g+1|0;d=n}c[j>>2]=a;a:do if(!a){k=vH(4)|0;c[i>>2]=k;c[k>>2]=b}else{j=vH(a<<2)|0;c[i>>2]=j;a=0;g=1;while(1){if((g|0)>=(b|0))break a;if(+h[f+(c[k+(g<<2)>>2]<<3)>>3]-+h[f+(c[k+(g+-1<<2)>>2]<<3)>>3]>e){c[j+(a<<2)>>2]=g;a=a+1|0}g=g+1|0}}while(0);if(l)a=0;else{a=0;m=17}}if((m|0)==17)D_(f);return a|0}function lv(a,b){a=a|0;b=b|0;var d=0,e=0,f=0.0,g=0,i=0,j=0.0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;d=c[46159]|0;if(d|0)xn(d);c[46159]=wn(b,b,0.0)|0;d=c[46160]|0;if(d|0)D_(d);c[46160]=uH(b<<2)|0;d=c[46161]|0;if(d|0)D_(d);n=uH(b<<3)|0;c[46161]=n;o=c[46159]|0;p=c[46160]|0;i=0;while(1){if((i|0)>=(b|0)){e=10;break}e=a+(i<<2)|0;g=o+(i<<2)|0;f=0.0;d=0;while(1){if((d|0)==(b|0))break;j=+h[(c[e>>2]|0)+(d<<3)>>3];h[(c[g>>2]|0)+(d<<3)>>3]=j;j=+B(+j);f=f>3]=1.0/f;c[p+(i<<2)>>2]=i;i=i+1|0}a:do if((e|0)==10){m=b+-1|0;d=0;l=0;b:while(1){if((l|0)<(m|0)){e=l;k=d;f=0.0}else break;while(1){if((e|0)>=(b|0))break;a=c[p+(e<<2)>>2]|0;j=+B(+(+h[(c[o+(a<<2)>>2]|0)+(l<<3)>>3]));j=+h[n+(a<<3)>>3]*j;a=f>2]|0;a=p+(k<<2)|0;c[d>>2]=c[a>>2];c[a>>2]=i}g=c[o+(c[d>>2]<<2)>>2]|0;a=l+1|0;f=1.0/+h[g+(l<<3)>>3];e=a;while(1){if((e|0)>=(b|0)){d=k;l=a;continue b}i=c[o+(c[p+(e<<2)>>2]<<2)>>2]|0;d=i+(l<<3)|0;j=+h[d>>3]*f;h[d>>3]=j;c:do if(j!=0.0){d=a;while(1){if((d|0)>=(b|0))break c;q=i+(d<<3)|0;h[q>>3]=+h[q>>3]-+h[g+(d<<3)>>3]*j;d=d+1|0}}while(0);e=e+1|0}}d=+h[(c[o+(c[p+(m<<2)>>2]<<2)>>2]|0)+(m<<3)>>3]!=0.0&1}else if((e|0)==15){h[n+(i<<3)>>3]=0.0;d=0}while(0);return d|0}function mv(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0.0,g=0,i=0,j=0,k=0,l=0;k=c[46159]|0;l=c[46160]|0;j=0;while(1){if((j|0)>=(d|0)){e=d;break}g=c[l+(j<<2)>>2]|0;i=k+(g<<2)|0;f=0.0;e=0;while(1){if((e|0)==(j|0))break;f=+h[a+(e<<3)>>3]*+h[(c[i>>2]|0)+(e<<3)>>3]+f;e=e+1|0}h[a+(j<<3)>>3]=+h[b+(g<<3)>>3]-f;j=j+1|0}while(1){b=e+-1|0;if((e|0)<=0)break;g=l+(b<<2)|0;f=0.0;while(1){if((e|0)>=(d|0))break;f=+h[a+(e<<3)>>3]*+h[(c[k+(c[g>>2]<<2)>>2]|0)+(e<<3)>>3]+f;e=e+1|0}e=a+(b<<3)|0;h[e>>3]=(+h[e>>3]-f)/+h[(c[k+(c[g>>2]<<2)>>2]|0)+(b<<3)>>3];e=b}return}function nv(a){a=a|0;c[a>>2]=0;c[a+4>>2]=0;return}function ov(a){a=a|0;var b=0;b=uH(64)|0;nv(b+36|0);c[b+8>>2]=a;return b|0}function pv(a){a=a|0;if(a|0){Lv(c[a+32>>2]|0);D_(a)}return}function qv(a){a=a|0;return ay(c[a+8>>2]|0)|0}function rv(a,b){a=a|0;b=b|0;var d=0,e=0;c[b+4>>2]=0;d=a+4|0;e=c[d>>2]|0;c[((e|0)==0?a:e+4|0)>>2]=b;c[d>>2]=b;return}function sv(a,b){a=a|0;b=b|0;var d=0;d=c[a>>2]|0;if(!d){c[a>>2]=b;a=a+4|0}else c[b+4>>2]=d;c[a>>2]=b;return}function tv(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;uv(a,b);j=c[b>>2]|0;h=c[j+4>>2]|0;while(1){if(!h)break;k=c[h+8>>2]|0;i=Sy(k)|0;d=c[(c[i+16>>2]|0)+112>>2]|0;a=c[d+16+4>>2]|0;d=c[d+8>>2]|0;f=i;i=Ty(k,i)|0;while(1){if(!i)break;e=c[(c[i+16>>2]|0)+112>>2]|0;g=c[e+16+4>>2]|0;if((g|0)<(a|0)){f=i;d=c[e+8>>2]|0;a=g}i=Ty(k,i)|0}i=c[(c[d+16>>2]|0)+112>>2]|0;k=i+4|0;c[k>>2]=c[k>>2]|8;c[h>>2]=f;k=c[h+4>>2]|0;rv((c[i+12>>2]|0)+36|0,h);h=k}nv(b);return j|0}function uv(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=l;l=l+16|0;h=i;g=i+8|0;e=c[b+24>>2]|0;if(!((e|0)!=0?(d=az(a,e,0)|0,(d|0)!=0):0))f=3;a:do if((f|0)==3){e=b+20|0;b:do if(c[e>>2]|0){d=Sy(a)|0;while(1){if(!d)break b;if((PL(c[c[(c[d+16>>2]|0)+112>>2]>>2]|0,c[e>>2]|0,0)|0)<<24>>24)break a;d=Ty(a,d)|0}}while(0);d=Sy(a)|0}while(0);if(0){f=c[15686]|0;c[h>>2]=ry(d)|0;g1(f,93141,h)|0}c[g+4>>2]=0;c[g>>2]=0;vv(a,d,b,1,g);l=i;return}function vv(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;l=d+8|0;k=c[l>>2]|0;c[l>>2]=k+1;l=b+16|0;c[(c[(c[l>>2]|0)+112>>2]|0)+16+4>>2]=k;c[(c[(c[l>>2]|0)+112>>2]|0)+24>>2]=k;k=(e|0)==0;j=Jx(a,b)|0;while(1){if(!j)break;e=c[j>>2]&3;g=c[((e|0)==2?j:j+-48|0)+40>>2]|0;if((g|0)==(b|0)){e=c[((e|0)==3?j:j+48|0)+40>>2]|0;g=c[(c[j+16>>2]|0)+120>>2]|0;if(!(c[g>>2]|0))c[g>>2]=-1}else{e=c[(c[j+16>>2]|0)+120>>2]|0;if(!(c[e>>2]|0)){c[e>>2]=1;e=g}else e=g}g=e+16|0;h=c[(c[g>>2]|0)+112>>2]|0;i=c[h+16+4>>2]|0;do if(!i){c[h+8>>2]=b;wv(f,j);vv(a,e,d,0,f);i=(c[(c[l>>2]|0)+112>>2]|0)+24|0;c[i>>2]=c[(c[(c[((c[i>>2]|0)<(c[(c[(c[g>>2]|0)+112>>2]|0)+24>>2]|0)?b:e)+16>>2]|0)+112>>2]|0)+24>>2];if((c[(c[(c[g>>2]|0)+112>>2]|0)+24>>2]|0)>=(c[(c[(c[l>>2]|0)+112>>2]|0)+16+4>>2]|0)){e=0;do{h=xv(f)|0;g=(c[c[(c[h+16>>2]|0)+120>>2]>>2]|0)==1;g=c[((c[h>>2]&3|0)==((g?2:3)|0)?h:h+((g?-1:1)*48|0)|0)+40>>2]|0;if(!(c[(c[(c[g+16>>2]|0)+112>>2]|0)+12>>2]|0)){if(!e)e=yv(a,d)|0;zv(e,g)}}while((h|0)!=(j|0));if(e|0){if((c[(c[(c[l>>2]|0)+112>>2]|0)+12>>2]|0)==0?(qv(e)|0)>1:0)zv(e,b);if(!k?(c[(c[(c[l>>2]|0)+112>>2]|0)+12>>2]|0)==(e|0):0){sv(d,e);break}rv(d,e)}}}else{g=c[(c[l>>2]|0)+112>>2]|0;if((c[g+8>>2]|0)!=(e|0)){h=g+24|0;g=c[h>>2]|0;c[h>>2]=(g|0)<(i|0)?g:i}}while(0);j=Kx(a,j,b)|0}if(!k?(c[(c[(c[l>>2]|0)+112>>2]|0)+12>>2]|0)==0:0){l=yv(a,d)|0;zv(l,b);sv(d,l)}return}function wv(a,b){a=a|0;b=b|0;c[(c[(c[b+16>>2]|0)+120>>2]|0)+4>>2]=c[a>>2];c[a>>2]=b;b=a+4|0;c[b>>2]=(c[b>>2]|0)+1;return}function xv(a){a=a|0;var b=0,d=0,e=0;b=c[a>>2]|0;if(!b)qa(135312,93172,65,93184);d=a+4|0;e=c[d>>2]|0;if((e|0)>0){c[a>>2]=c[(c[(c[b+16>>2]|0)+120>>2]|0)+4>>2];c[d>>2]=e+-1;return b|0}else qa(93162,93172,61,93184);return 0}function yv(a,b){a=a|0;b=b|0;return ov(Av(a,b)|0)|0}function zv(a,b){a=a|0;b=b|0;Xy(c[a+8>>2]|0,b,1)|0;c[(c[(c[b+16>>2]|0)+112>>2]|0)+12>>2]=a;return}function Av(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=l;l=l+144|0;f=d;e=d+8|0;g=b+12|0;b=c[g>>2]|0;c[g>>2]=b+1;c[f>>2]=b;Y0(e,93152,f)|0;b=vA(a,e,1)|0;Az(b,134401,280,1)|0;l=d;return b|0}function Bv(a){a=a|0;var b=0,d=0;b=c[a+36>>2]|0;while(1){if(!b)break;d=c[b+4>>2]|0;Bv(b);b=d}pv(a);return}function Cv(a,b,c){a=a|0;b=b|0;c=c|0;Dv(a,b,+h[c+32>>3]);return}function Dv(a,b,d){a=a|0;b=b|0;d=+d;var e=0,f=0,g=0,i=0;e=b+36|0;f=0;while(1){e=c[e>>2]|0;if(!e)break;Dv(a,e,d);e=e+4|0;f=f+1|0}e=Vv(a,b,d)|0;c[b+32>>2]=e;a=Sv(e)|0;if((f|0)>0)d=+Ev(f,a,e,b,d);else d=3.141592653589793;if((((a|0)==1?(g=c[b>>2]|0,g|0):0)?c[(c[(c[g+16>>2]|0)+112>>2]|0)+8>>2]|0:0)?(i=b+48|0,h[i>>3]=d,d<0.0):0)h[i>>3]=d+6.283185307179586;return}function Ev(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=+f;var g=0.0,i=0,j=0.0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;v=l;l=l+48|0;t=v;u=uH(a*56|0)|0;c[t+40>>2]=c[e+36>>2];p=e+16|0;j=+h[p>>3];q=t+8|0;h[q>>3]=j;h[t>>3]=j;c[t+44>>2]=c[e>>2];j=6.283185307179586/+(b|0);h[t+16>>3]=j;r=t+24|0;h[r>>3]=-1.0;s=t+32|0;h[s>>3]=-1.0;k=0;o=0;g=0.0;while(1){i=c[d>>2]|0;if(!i)break;d=c[i>>2]|0;if(!(c[(c[(c[d+16>>2]|0)+112>>2]|0)+4>>2]&8))d=o;else{n=u+(o*56|0)|0;c[n>>2]=d;h[u+(o*56|0)+8>>3]=j*+(k|0);d=o+1|0;g=+Fv(n,t,f)}k=k+1|0;o=d;d=i+4|0}a:do switch(o|0){case 1:{h[u+40>>3]=1.0;d=0;break}case 2:{j=+h[u+64>>3]-+h[u+8>>3];Gv(u,u+56|0,j>3.141592653589793?6.283185307179586-j:j);d=0;break}default:{n=u+8|0;m=u;d=0;while(1){if((d|0)>=(o|0)){d=0;break a}d=d+1|0;if((d|0)==(o|0)){i=u;j=+h[n>>3]+6.283185307179586-+h[m+8>>3];k=m+56|0}else{k=m+56|0;i=k;j=+h[m+64>>3]-+h[m+8>>3]}Gv(m,i,j);m=k}}}while(0);while(1){if((d|0)>=(o|0))break;Hv(u+(d*56|0)|0,t,b,f);d=d+1|0}D_(u);if((a|0)==1){f=g+f*.5;Iv(e,-f,0.0,0.0);h[p>>3]=+h[p>>3]+f;u=e+56|0;c[u>>2]=c[u>>2]|1}else h[p>>3]=+h[q>>3];l=v;return +((+h[s>>3]+ +h[r>>3])*.5+-3.141592653589793)}function Fv(a,b,d){a=a|0;b=b|0;d=+d;var e=0,f=0.0,g=0.0,i=0,j=0,k=0.0;i=0;f=0.0;g=0.0;e=b+40|0;while(1){j=c[e>>2]|0;if(!j)break;e=c[j>>2]|0;if(!e)e=0;else e=c[(c[(c[e+16>>2]|0)+112>>2]|0)+8>>2]|0;if((e|0)==(c[a>>2]|0)){k=+h[j+16>>3];e=i+1|0;f=f+d+k*2.0;g=g>3]=f;c[a+48>>2]=i;h[a+16>>3]=g+d+ +h[b>>3];h[a+24>>3]=g;return +g}function Gv(a,b,c){a=a|0;b=b|0;c=+c;var d=0.0,e=0.0;e=+h[b+16>>3];d=+h[a+16>>3];c=(d*+h[b+32>>3]+e*+h[a+32>>3])/(c*2.0*e*d);c=c<1.0?1.0:c;a=a+40|0;if(c>+h[a>>3])h[a>>3]=c;a=b+40|0;if(c>+h[a>>3])h[a>>3]=c;return}function Hv(a,b,d,e){a=a|0;b=b|0;d=d|0;e=+e;var f=0.0,g=0.0,i=0,j=0.0,k=0.0,l=0.0,m=0.0,n=0,o=0,p=0.0,q=0.0,r=0,s=0,t=0,u=0.0,v=0.0,w=0,x=0,y=0.0,z=0,A=0,B=0,C=0,D=0.0,G=0.0;z=b+8|0;y=+h[z>>3];A=b+24|0;k=+h[A>>3];B=b+32|0;j=+h[B>>3];f=+h[a+16>>3]*+h[a+40>>3];x=(d|0)==1;if(x){v=+h[a+32>>3];g=v*.15915494309189535;g=f>g?f:g;f=g*6.283185307179586-v;if(f>0.0){e=f/+(c[a+48>>2]|0)+e;l=0.0;f=g}else{l=0.0;f=g}}else l=+h[a+8>>3]-+h[a+32>>3]/(f*2.0);q=+h[a+24>>3]+f;r=q>y;s=a+48|0;t=((c[s>>2]|0)+1|0)/2|0;u=1.0/f;v=e/f*.5;w=a+8|0;n=b+40|0;o=0;p=0.0;g=l;while(1){n=c[n>>2]|0;if(!n)break;i=c[n>>2]|0;if(!i)i=0;else i=c[(c[(c[i+16>>2]|0)+112>>2]|0)+8>>2]|0;if((i|0)==(c[a>>2]|0)?(Sv(c[n+32>>2]|0)|0)>=1:0){l=+h[n+16>>3];m=l*u;do if(!x)if((c[s>>2]|0)==1){g=+h[w>>3];break}else{g=g+v+m;break}else{if(g!=0.0)g=(c[s>>2]|0)==2?3.141592653589793:m+g;j=g;k=k<0.0?g:k}while(0);G=+E(+g)*f;D=+F(+g)*f;Iv(n,G,D,+Jv(n,G,D,g));g=(x?(l+e)*u:m+v)+g;o=o+1|0;i=o;l=(o|0)==(t|0)?g:p}else{i=o;l=p}n=n+4|0;o=i;p=l}f=r?q:y;if((d|0)>1?(C=c[a>>2]|0,(C|0)==(c[b+44>>2]|0)):0)h[(c[(c[C+16>>2]|0)+112>>2]|0)+24>>3]=p;h[z>>3]=f;h[A>>3]=k;h[B>>3]=j;return}function Iv(a,b,d,e){a=a|0;b=+b;d=+d;e=+e;var f=0,g=0.0,i=0.0,j=0.0,k=0,l=0,m=0,n=0,o=0.0,p=0.0;m=c[a+8>>2]|0;n=e!=0.0;f=Sy(m)|0;while(1){if(!f)break;k=c[(c[f+16>>2]|0)+132>>2]|0;i=+h[k>>3];l=k+8|0;g=+h[l>>3];if(n){o=+E(+e);p=+F(+e);j=o*i-p*g;g=p*i+o*g}else j=i;h[k>>3]=j+b;h[l>>3]=g+d;f=Ty(m,f)|0}f=a+36|0;while(1){f=c[f>>2]|0;if(!f)break;Iv(f,b,d,e);f=f+4|0}return}function Jv(a,b,d,e){a=a|0;b=+b;d=+d;e=+e;var f=0.0,g=0,i=0,j=0.0,k=0.0,l=0,m=0,n=0,o=0;m=c[a+8>>2]|0;f=+h[a+48>>3];do if(!(f>=0.0)){if((Sv(c[a+32>>2]|0)|0)==2){f=e+-1.5707963267948966;break}l=c[a>>2]|0;n=l+16|0;i=c[(c[n>>2]|0)+132>>2]|0;f=+h[i>>3]+b;k=+h[i+8>>3]+d;f=k*k+f*f;i=Sy(m)|0;g=l;while(1){if(!i)break;if((i|0)!=(l|0)?(o=c[(c[i+16>>2]|0)+132>>2]|0,j=+h[o>>3]+b,k=+h[o+8>>3]+d,j=k*k+j*j,j>3];k=+h[a+16>>3]-j;g=c[n>>2]|0;i=c[g+132>>2]|0;f=+h[i>>3];if(f>-k?(c[a+56>>2]&1|0)!=0:0){d=+C(+(d*d+b*b));b=+K(+(+h[i+8>>3]),+(f+k));f=+E(+b);f=e+1.5707963267948966-b-+I(+((k-j/f)/d*f));break}else{f=+K(+(+h[i+8>>3]),+f);f=e+3.141592653589793-f-+h[(c[g+112>>2]|0)+24>>3];f=f>6.283185307179586?f+-6.283185307179586:f;break}}else f=0.0}else{f=3.141592653589793-f+e;f=f<0.0?f+6.283185307179586:f}while(0);return +f}function Kv(){return uH(12)|0}function Lv(a){a=a|0;var b=0,d=0;if(a|0){b=c[a>>2]|0;while(1){if(!b)break;d=c[b+4>>2]|0;D_(b);b=d}D_(a)}return}function Mv(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;f=Nv(d)|0;d=a+8|0;c[d>>2]=(c[d>>2]|0)+1;d=a+4|0;e=c[d>>2]|0;if((b|0)==0|(e|0)==(b|0)){c[(e|0?e+4|0:a)>>2]=f;c[f+8>>2]=e;e=0}else{e=b+4|0;d=c[e>>2]|0;c[e>>2]=f;c[f+8>>2]=b;e=d;d=d+8|0}c[d>>2]=f;c[f+4>>2]=e;return}function Nv(a){a=a|0;var b=0;b=uH(12)|0;c[b>>2]=a;return b|0}function Ov(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=c[a>>2]|0;d=b;while(1){if(!b)break;g=b+4|0;e=c[g>>2]|0;f=b+8|0;c[g>>2]=c[f>>2];c[f>>2]=e;b=e}f=a+4|0;g=c[f>>2]|0;c[f>>2]=d;c[a>>2]=g;return a|0}function Pv(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=c[a>>2]|0;if((d|0)!=(b|0)){f=b+8|0;e=c[f>>2]|0;c[a>>2]=b;c[f>>2]=0;b=a+4|0;a=c[b>>2]|0;c[a+4>>2]=d;c[d+8>>2]=a;c[b>>2]=e;c[e+4>>2]=0}return}function Qv(a){a=a|0;var b=0,d=0,e=0;d=Kv()|0;e=d+4|0;b=0;while(1){a=c[a>>2]|0;if(!a)break;Mv(d,b,c[a>>2]|0);b=c[e>>2]|0;a=a+4|0}return d|0} +function Bb(a){a=a|0;var b=0;b=l;l=l+a|0;l=l+15&-16;return b|0}function Cb(){return l|0}function Db(a){a=a|0;l=a}function Eb(a,b){a=a|0;b=b|0;l=a;m=b}function Fb(a,b){a=a|0;b=b|0;if(!o){o=a;p=b}}function Gb(a){a=a|0;z=a}function Hb(){return z|0}function Ib(a){a=a|0;c[45884]=a;return 0}function Jb(){return c[45884]|0}function Kb(a,b){a=a|0;b=b|0;Oa(0,a|0,b|0)|0;return}function Lb(a){a=a|0;c[46369]=a;return}function Mb(a){a=a|0;if(a|0)c[46363]=a;return}function Nb(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;i=l;l=l+16|0;f=i+4|0;g=i;c[f>>2]=0;h=ZC()|0;cD(h,10976);cD(h,17220);cD(h,17440);Ow(1)|0;Nw(18)|0;Tz(1);while(1){a=Gy(a)|0;e=c[f>>2]|0;if(!a)break;if(!e){_C(h,a,d)|0;bD(h,a,b,f,g)|0;WB(h,a)|0}$x(a)|0;a=191979}l=i;return e|0}function Ob(a){a=a|0;var d=0,e=0,f=0,g=0;g=l;l=l+16|0;d=g+4|0;e=g;f=c[(c[a+16>>2]|0)+8>>2]|0;a=a+64|0;switch(c[a>>2]|0){case 0:{uI(f);break}case 1:{if(b[(c[f+16>>2]|0)+136>>1]&1)FM(f);break}case 4:case 5:case 6:{rI(f,e,d);Rb(f,c[e>>2]|0,c[d>>2]|0,c[a>>2]|0);break}default:{}}l=g;return}function Pb(a){a=a|0;var b=0,d=0,e=0,f=0;d=c[(c[a+16>>2]|0)+8>>2]|0;if(!(c[45885]|0)){c[45885]=c[4652];c[45886]=57;c[45887]=19}e=d+64|0;f=(c[e>>2]|0)+8|0;b=c[f>>2]|0;c[f>>2]=183540;switch(c[a+64>>2]|0){case 2:{hI(a,d,a,0);break}case 3:{hI(a,d,a,1);break}case 1:case 0:{if(!(c[a+152>>2]&134217728))NA(d,a)|0;break}case 6:case 5:case 4:{Qb(d);if(!(c[a+152>>2]&134217728))NA(d,a)|0;break}default:{}}c[(c[e>>2]|0)+8>>2]=b;return}function Qb(b){b=b|0;var d=0,e=0;d=c[45889]|0;if((d|0)!=(c[45888]|0)){e=c[c[45920]>>2]|0;if(!e){e=LM(b,0,96782,191979)|0;c[c[45920]>>2]=e;d=c[45889]|0}if(d>>>0>=(c[45890]|0)>>>0){Uw(183552,1)|0;d=c[45889]|0}a[d>>0]=0;d=c[45888]|0;c[45889]=d;rx(b,e,d)|0}if(c[(c[b+16>>2]|0)+12>>2]|0){e=c[(c[45920]|0)+4>>2]|0;d=c[45905]|0;if(d>>>0>=(c[45906]|0)>>>0){Uw(183616,1)|0;d=c[45905]|0}a[d>>0]=0;d=c[45904]|0;c[45905]=d;rx(b,e,d)|0}Ax(b,66649,c[(c[45920]|0)+8236>>2]|0,191979)|0;d=0;while(1){if((d|0)==8)break;Xw(183552+(d<<4)|0);d=d+1|0}D_(c[45920]|0);h[1]=1.0;h[5]=1.0;c[45921]=0;c[45925]=0;return}function Rb(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;i=C_(8240)|0;c[45920]=i;a:do switch(g|0){case 6:{b[i+8232>>1]=14;g=66665;break}case 5:{b[i+8232>>1]=12;g=66669;break}default:{g=xx(d,66649)|0;if((g|0?a[g>>0]|0:0)?(h=Sb(g)|0,(h&65535)>10):0){i=c[45920]|0;b[i+8232>>1]=h;break a}g=Sb(66661)|0;i=c[45920]|0;b[i+8232>>1]=g;g=66661}}while(0);c[i+8236>>2]=g;j=d+16|0;g=c[j>>2]|0;if(!(c[g+180>>2]|0))h=0;else{h=LM(d,0,96782,191979)|0;i=c[45920]|0;g=c[j>>2]|0}c[i>>2]=h;if(!(a[g+113>>0]&8))g=0;else g=LM(d,0,66673,191979)|0;c[(c[45920]|0)+4>>2]=g;i=LM(d,1,96782,191979)|0;c[(c[45920]|0)+8>>2]=i;i=LM(d,1,66673,191979)|0;c[(c[45920]|0)+12>>2]=i;i=LM(d,2,96782,191979)|0;g=c[45920]|0;c[g+16>>2]=i;if(!f)h=0;else{h=LM(d,2,66681,191979)|0;g=c[45920]|0}c[g+20>>2]=h;if(!e)h=0;else{h=LM(d,2,66689,191979)|0;g=c[45920]|0}c[g+24>>2]=h;h=a[(c[j>>2]|0)+113>>0]|0;if(!(h&33))i=0;else{i=LM(d,2,66673,191979)|0;g=c[45920]|0;h=a[(c[j>>2]|0)+113>>0]|0}c[g+28>>2]=i;if(!(h&2))i=0;else{i=LM(d,2,66697,191979)|0;g=c[45920]|0;h=a[(c[j>>2]|0)+113>>0]|0}c[g+32>>2]=i;if(!(h&4))h=0;else{h=LM(d,2,66706,191979)|0;g=c[45920]|0}c[g+36>>2]=h;g=0;while(1){if((g|0)==8)break;Tw(183552+(g<<4)|0,1024,(c[45920]|0)+40+(g<<10)|0);g=g+1|0}return}function Sb(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;j=l;l=l+1040|0;h=j;g=j+8|0;f=0;d=b;a:while(1){do{e=d;d=d+1|0;e=a[e>>0]|0;if(!(e<<24>>24))break a}while(((e<<24>>24)+-48|0)>>>0>=10);if((f|0)>=1023){i=7;break}a[g+f>>0]=e;f=f+1|0}if((i|0)==7){c[h>>2]=b;Pw(0,66715,h)|0}a[g+f>>0]=0;i=(a2(g)|0)&65535;l=j;return i|0}function Tb(b){b=b|0;var d=0,e=0;e=c[(c[b+16>>2]|0)+8>>2]|0;d=c[c[45920]>>2]|0;b=c[45893]|0;if(b>>>0>=(c[45894]|0)>>>0){Uw(183568,1)|0;b=c[45893]|0}a[b>>0]=0;b=c[45892]|0;c[45893]=b;rx(e,d,b)|0;if(c[(c[e+16>>2]|0)+12>>2]|0){d=c[(c[45920]|0)+4>>2]|0;b=c[45909]|0;if(b>>>0>=(c[45910]|0)>>>0){Uw(183632,1)|0;b=c[45909]|0}a[b>>0]=0;b=c[45908]|0;c[45909]=b;rx(e,d,b)|0}h[2]=1.0;h[6]=1.0;c[45922]=0;c[45926]=0;return}function Ub(b){b=b|0;var d=0,e=0;e=c[(c[b+16>>2]|0)+8>>2]|0;b=c[45893]|0;if((c[45892]|0)!=(b|0)){d=c[(c[45920]|0)+8>>2]|0;if(b>>>0>=(c[45894]|0)>>>0){Uw(183568,1)|0;b=c[45893]|0}a[b>>0]=0;b=c[45892]|0;c[45893]=b;rx(e,d,b)|0}b=c[45909]|0;if((c[45908]|0)!=(b|0)){d=c[(c[45920]|0)+12>>2]|0;if(b>>>0>=(c[45910]|0)>>>0){Uw(183632,1)|0;b=c[45909]|0}a[b>>0]=0;b=c[45908]|0;c[45909]=b;rx(e,d,b)|0}h[9]=1.0;h[11]=1.0;c[45929]=0;c[45931]=0;return}function Vb(b){b=b|0;var d=0,e=0;e=c[(c[b+16>>2]|0)+8>>2]|0;b=c[45893]|0;if((c[45892]|0)!=(b|0)){d=c[(c[45920]|0)+16>>2]|0;if(b>>>0>=(c[45894]|0)>>>0){Uw(183568,1)|0;b=c[45893]|0}a[b>>0]=0;b=c[45892]|0;c[45893]=b;rx(e,d,b)|0}b=c[45897]|0;if((c[45896]|0)!=(b|0)){d=c[(c[45920]|0)+24>>2]|0;if(b>>>0>=(c[45898]|0)>>>0){Uw(183584,1)|0;b=c[45897]|0}a[b>>0]=0;b=c[45896]|0;c[45897]=b;rx(e,d,b)|0}b=c[45901]|0;if((c[45900]|0)!=(b|0)){d=c[(c[45920]|0)+20>>2]|0;if(b>>>0>=(c[45902]|0)>>>0){Uw(183600,1)|0;b=c[45901]|0}a[b>>0]=0;b=c[45900]|0;c[45901]=b;rx(e,d,b)|0}b=c[45909]|0;if((c[45908]|0)!=(b|0)){d=c[(c[45920]|0)+28>>2]|0;if(b>>>0>=(c[45910]|0)>>>0){Uw(183632,1)|0;b=c[45909]|0}a[b>>0]=0;b=c[45908]|0;c[45909]=b;rx(e,d,b)|0}b=c[45913]|0;if((c[45912]|0)!=(b|0)){d=c[(c[45920]|0)+36>>2]|0;if(b>>>0>=(c[45914]|0)>>>0){Uw(183648,1)|0;b=c[45913]|0}a[b>>0]=0;b=c[45912]|0;c[45913]=b;rx(e,d,b)|0}b=c[45917]|0;if((c[45916]|0)!=(b|0)){d=c[(c[45920]|0)+32>>2]|0;if(b>>>0>=(c[45918]|0)>>>0){Uw(183664,1)|0;b=c[45917]|0}a[b>>0]=0;b=c[45916]|0;c[45917]=b;rx(e,d,b)|0}h[10]=1.0;h[12]=1.0;h[3]=1.0;h[4]=1.0;h[7]=1.0;h[8]=1.0;c[45930]=0;c[45932]=0;c[45923]=0;c[45924]=0;c[45927]=0;c[45928]=0;return}function Wb(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=l;l=l+1056|0;j=t+16|0;s=t+8|0;r=t;k=t+32|0;o=c[(c[d+16>>2]|0)+12>>2]|0;p=c[11416+(o<<2)>>2]|0;Ww(p,66812)|0;g=f+4|0;dc(k,+h[(c[g>>2]|0)+16>>3]);Ww(p,k)|0;gc(d,191979,c[c[g>>2]>>2]|0);ac(d);q=a[f+48>>0]|0;q=q<<24>>24==108?-1:q<<24>>24==114&1;g=c[g>>2]|0;if(!g)g=0;else g=c[g+24>>2]&127;i=b[(c[45920]|0)+8232>>1]|0;if((i&65535)>14?(m=c[11464+((i&65535)+-15<<2)>>2]&g,n=183684+(o<<2)|0,(c[n>>2]|0)!=(m|0)):0){c[r>>2]=m;Y0(k,66815,r)|0;Ww(p,k)|0;c[n>>2]=m}r=e+8|0;h[r>>3]=+h[r>>3]+ +h[f+24>>3];Ww(p,66821)|0;c[j>>2]=c[e>>2];c[j+4>>2]=c[e+4>>2];c[j+8>>2]=c[e+8>>2];c[j+12>>2]=c[e+12>>2];cc(p,j);c[s>>2]=q;Y0(k,99194,s)|0;Ww(p,k)|0;dc(k,+h[f+32>>3]);Ww(p,k)|0;gc(d,191979,c[f>>2]|0);l=t;return}function Xb(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,i=0;i=l;l=l+1040|0;f=i;g=i+16|0;e=c[(c[a+16>>2]|0)+12>>2]|0;$b(a);ac(a);if(!d){a=c[11416+(e<<2)>>2]|0;Ww(a,66809)|0}else{if((d|1|0)==3)ic(a,d,b,2);else jc(a);a=c[11416+(e<<2)>>2]|0;Ww(a,66806)|0};c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];cc(a,f);dc(g,+h[b+16>>3]-+h[b>>3]);Ww(a,g)|0;dc(g,+h[b+24>>3]-+h[b+8>>3]);Ww(a,g)|0;l=i;return}function Yb(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;$b(a);ac(a);if(!d)bc(a,112,b,c);else{if((d|1|0)==3)ic(a,d,b,c);else jc(a);bc(a,80,b,c)}return}function Zb(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;$b(a);ac(a);if(!f)bc(a,66,b,c);else{if((f|1|0)==3)ic(a,f,b,c);else jc(a);bc(a,98,b,c)}return}function _b(a,b,c){a=a|0;b=b|0;c=c|0;$b(a);ac(a);bc(a,76,b,c);return}function $b(b){b=b|0;var d=0,e=0,f=0,g=0.0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+1184|0;i=n;f=n+24|0;m=n+8|0;Tw(m,1024,n+152|0);j=b+16|0;d=c[j>>2]|0;g=+h[d+152>>3];e=8+(c[d+12>>2]<<3)|0;if(g!=+h[e>>3]){h[e>>3]=g;Ww(m,66778)|0;h[i>>3]=+h[(c[j>>2]|0)+152>>3];Y0(f,66792,i)|0;ec(f,0);Ww(m,f)|0;f=m+4|0;d=c[f>>2]|0;e=m+8|0;if(d>>>0>=(c[e>>2]|0)>>>0){Uw(m,1)|0;d=c[f>>2]|0}c[f>>2]=d+1;a[d>>0]=41;d=c[f>>2]|0;if(d>>>0>=(c[e>>2]|0)>>>0){Uw(m,1)|0;d=c[f>>2]|0}a[d>>0]=0;d=c[m>>2]|0;c[f>>2]=d;gc(b,66797,d);d=c[j>>2]|0}d=c[d+160>>2]|0;if(d|0){j=m+4|0;k=m+8|0;a:while(1){i=d+4|0;d=c[d>>2]|0;if(!d)break;switch(a[d>>0]|0){case 102:{if(!(b$(d,108075)|0)){d=i;continue a}break}case 98:{if(!(b$(d,108057)|0)){d=i;continue a}break}case 115:{if(!(b$(d,108062)|0)){d=i;continue a}break}default:{}}Ww(m,d)|0;do{f=d;d=d+1|0}while((a[f>>0]|0)!=0);if(a[d>>0]|0){e=c[j>>2]|0;if(e>>>0>=(c[k>>2]|0)>>>0){Uw(m,1)|0;e=c[j>>2]|0}c[j>>2]=e+1;a[e>>0]=40;f=0;while(1){if(!(a[d>>0]|0))break;if(f|0){e=c[j>>2]|0;if(e>>>0>=(c[k>>2]|0)>>>0){Uw(m,1)|0;e=c[j>>2]|0}c[j>>2]=e+1;a[e>>0]=44}Ww(m,d)|0;do{e=d;d=d+1|0}while((a[e>>0]|0)!=0);f=f+1|0}d=c[j>>2]|0;if(d>>>0>=(c[k>>2]|0)>>>0){Uw(m,1)|0;d=c[j>>2]|0}c[j>>2]=d+1;a[d>>0]=41}d=c[j>>2]|0;if(d>>>0>=(c[k>>2]|0)>>>0){Uw(m,1)|0;d=c[j>>2]|0}a[d>>0]=0;d=c[m>>2]|0;c[j>>2]=d;gc(b,66797,d);d=i}Xw(m)}l=n;return}function ac(a){a=a|0;fc((c[a+16>>2]|0)+16|0);gc(a,75730,190678);return}function bc(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0;k=l;l=l+1040|0;j=k;i=k+16|0;h=c[11416+(c[(c[b+16>>2]|0)+12>>2]<<2)>>2]|0;g=h+4|0;b=c[g>>2]|0;if(b>>>0>=(c[h+8>>2]|0)>>>0){Uw(h,1)|0;b=c[g>>2]|0}c[g>>2]=b+1;a[b>>0]=d;c[j>>2]=f;Y0(i,66742,j)|0;Ww(h,i)|0;b=0;while(1){if((b|0)>=(f|0))break;i=e+(b<<4)|0;c[j>>2]=c[i>>2];c[j+4>>2]=c[i+4>>2];c[j+8>>2]=c[i+8>>2];c[j+12>>2]=c[i+12>>2];cc(h,j);b=b+1|0}l=k;return}function cc(a,b){a=a|0;b=b|0;var c=0,d=0;c=l;l=l+1024|0;d=c;dc(d,+h[b>>3]);Ww(a,d)|0;dc(d,+gI(+h[b+8>>3]));Ww(a,d)|0;l=c;return}function dc(a,b){a=a|0;b=+b;var c=0,d=0;c=l;l=l+16|0;d=c;h[d>>3]=b>-1.0e-08&b<1.0e-08?0.0:b;Y0(a,66747,d)|0;ec(a,1);l=c;return}function ec(b,c){b=b|0;c=c|0;var d=0,e=0;d=A$(b,46)|0;if(!d){if(c|0){d=b+(W_(b)|0)|0;e=10}}else{while(1){b=d+1|0;if(!(a[b>>0]|0))break;else d=b}a:while(1){switch(a[d>>0]|0){case 46:{e=5;break a}case 48:break;default:{e=6;break a}}a[d>>0]=0;d=d+-1|0}if((e|0)==5)a[d>>0]=0;else if((e|0)==6)d=d+1|0;if(c|0)e=10}if((e|0)==10){a[d>>0]=32;a[d+1>>0]=0}return}function fc(b){b=b|0;var e=0,f=0,g=0,h=0,i=0,j=0;j=l;l=l+32|0;i=j+16|0;h=j;e=a[b+3>>0]|0;f=d[b>>0]|0;g=d[b+1>>0]|0;b=d[b+2>>0]|0;if(e<<24>>24==-1){c[h>>2]=f;c[h+4>>2]=g;c[h+8>>2]=b;Y0(190678,75610,h)|0}else{c[i>>2]=f;c[i+4>>2]=g;c[i+8>>2]=b;c[i+12>>2]=e&255;Y0(190678,66760,i)|0}l=j;return}function gc(a,b,d){a=a|0;b=b|0;d=d|0;hc(c[11416+(c[(c[a+16>>2]|0)+12>>2]<<2)>>2]|0,b,d);return}function hc(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;f=l;l=l+1040|0;h=f;g=f+8|0;i=W_(e)|0;c[h>>2]=d;c[h+4>>2]=i;Y0(g,66753,h)|0;Ww(b,g)|0;Ww(b,e)|0;e=b+4|0;d=c[e>>2]|0;if(d>>>0>=(c[b+8>>2]|0)>>>0){Uw(b,1)|0;d=c[e>>2]|0}c[e>>2]=d+1;a[d>>0]=32;l=f;return}function ic(b,d,f,i){b=b|0;d=d|0;f=f|0;i=i|0;var j=0.0,k=0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0.0;x=l;l=l+1120|0;t=x+64|0;w=x+80|0;k=x+32|0;r=x+16|0;s=x;u=c[b+16>>2]|0;j=+(c[u+136>>2]|0)*.017453292519943295;if((e[(c[45920]|0)+8232>>1]|0)<14)jc(b);else{Tw(w,1024,x+96|0);v=(d|0)==2;if(v){aN(f,k,i,j,2);f=w+4|0;d=c[f>>2]|0;if(d>>>0>=(c[w+8>>2]|0)>>>0){Uw(w,1)|0;d=c[f>>2]|0}c[f>>2]=d+1;a[d>>0]=91;c[t>>2]=c[k>>2];c[t+4>>2]=c[k+4>>2];c[t+8>>2]=c[k+8>>2];c[t+12>>2]=c[k+12>>2];cc(w,t);s=k+16|0;c[t>>2]=c[s>>2];c[t+4>>2]=c[s+4>>2];c[t+8>>2]=c[s+8>>2];c[t+12>>2]=c[s+12>>2];cc(w,t)}else{aN(f,k,i,0.0,3);q=+h[k+24>>3];o=+h[k>>3];if(j==0.0){n=+h[k+8>>3];p=q*.25;j=n;m=o}else{p=q*.25;y=p;m=+E(+j)*y+o;n=+h[k+8>>3];j=+F(+j)*y+n}h[r>>3]=m;h[r+8>>3]=j;h[s>>3]=o;h[s+8>>3]=n;f=w+4|0;d=c[f>>2]|0;if(d>>>0>=(c[w+8>>2]|0)>>>0){Uw(w,1)|0;d=c[f>>2]|0}c[f>>2]=d+1;a[d>>0]=40;c[t>>2]=c[r>>2];c[t+4>>2]=c[r+4>>2];c[t+8>>2]=c[r+8>>2];c[t+12>>2]=c[r+12>>2];cc(w,t);kc(w,p);c[t>>2]=c[s>>2];c[t+4>>2]=c[s+4>>2];c[t+8>>2]=c[s+8>>2];c[t+12>>2]=c[s+12>>2];cc(w,t);kc(w,q)}Ww(w,66803)|0;d=u+140|0;j=+g[d>>2];f=u+56|0;if(j>0.0){lc(w,j,f);lc(w,+g[d>>2],u+96|0)}else{lc(w,0.0,f);lc(w,1.0,u+96|0)}Yw(w)|0;k=w+4|0;d=c[k>>2]|0;i=w+8|0;f=d>>>0>=(c[i>>2]|0)>>>0;if(v){if(f){Uw(w,1)|0;d=c[k>>2]|0}c[k>>2]=d+1;a[d>>0]=93}else{if(f){Uw(w,1)|0;d=c[k>>2]|0}c[k>>2]=d+1;a[d>>0]=41}d=c[k>>2]|0;if(d>>>0>=(c[i>>2]|0)>>>0){Uw(w,1)|0;d=c[k>>2]|0}a[d>>0]=0;v=c[w>>2]|0;c[k>>2]=v;gc(b,66800,v);Xw(w)}l=x;return}function jc(a){a=a|0;fc((c[a+16>>2]|0)+56|0);gc(a,66800,190678);return}function kc(a,b){a=a|0;b=+b;var c=0,d=0;c=l;l=l+1024|0;d=c;dc(d,b);Ww(a,d)|0;l=c;return}function lc(a,b,c){a=a|0;b=+b;c=c|0;var d=0,e=0,f=0;d=l;l=l+1040|0;f=d;e=d+8|0;h[f>>3]=b;Y0(e,92597,f)|0;ec(e,1);fc(c);hc(a,e,190678);l=d;return}function mc(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0;e=l;l=l+1040|0;i=e;f=e+16|0;g=c[11416+(c[(c[a+16>>2]|0)+12>>2]<<2)>>2]|0;Ww(g,66909)|0;c[i>>2]=c[d>>2];c[i+4>>2]=c[d+4>>2];c[i+8>>2]=c[d+8>>2];c[i+12>>2]=c[d+12>>2];cc(g,i);dc(f,+h[d+16>>3]-+h[d>>3]);Ww(g,f)|0;dc(f,+h[d+24>>3]-+h[d+8>>3]);Ww(g,f)|0;gc(a,191979,c[b+8>>2]|0);l=e;return}function nc(a){a=a|0;var b=0;switch(c[a+64>>2]|0){case 0:{b=lC(c[a>>2]|0)|0;$C(b,c[(c[a+16>>2]|0)+8>>2]|0,67693,0)|0;mC(b);break}case 1:{uI(c[(c[a>>2]|0)+168>>2]|0);break}default:{}}return}function oc(b){b=b|0;var d=0,e=0,f=0,g=0;f=l;l=l+16|0;d=f;e=c[(c[b+16>>2]|0)+8>>2]|0;if(!(c[45933]|0)){c[45933]=c[4652];c[45934]=57;c[45935]=19}c[(c[e+64>>2]|0)+8>>2]=183732;pc(e,1);c[d>>2]=0;a[d+4>>0]=(a[(c[e+16>>2]|0)+115>>0]|0)==1&1;g=c[b+64>>2]|0;a[d+5>>0]=((g|0)==0|(g|0)==3)&1;a[d+6>>0]=0;qc(e,b,1,d);l=f;return}function pc(a,b){a=a|0;b=b|0;var d=0;c[a>>2]=c[a>>2]&-9;d=wA(a)|0;while(1){if(!d)break;pc(d,0);d=xA(d)|0}a:do if(b|0){b=Sy(a)|0;while(1){if(!b)break a;c[b>>2]=c[b>>2]&-9;d=Ex(a,b)|0;while(1){if(!d)break;c[d>>2]=c[d>>2]&-9;d=Gx(a,d)|0}b=Ty(a,b)|0}}while(0);return}function qc(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;q=l;l=l+16|0;p=q+8|0;o=q;n=(d|0)!=0;if(n){m=Cw(11836,c[4555]|0)|0;Fz(a,1,137978,12,0);Fz(a,2,137978,12,0);Fz(a,0,137978,-12,0);f=rc(a,0,m)|0;j=Sy(a)|0;i=0;g=0;while(1){if(!j)break;if(!(z$(ry(j)|0,104980,7)|0)){k=g;g=sc(m,ry(j)|0)|0}else{k=g+1|0;g=g+f|0}c[(yz(j,137978,0)|0)+8>>2]=g;h=Ex(a,j)|0;g=i;while(1){if(!h)break;c[(yz(h,137978,0)|0)+8>>2]=g;h=Gx(a,h)|0;g=g+1|0}j=Ty(a,j)|0;i=g;g=k}yw(m)|0}else f=0;m=c[e>>2]|0;c[e>>2]=m+1;tc(b,m);$B(b,94292)|0;uc(a,b,d,e);vc(a,b,e);$B(b,94263)|0;tc(b,c[e>>2]|0);if(n){c[o>>2]=f;fC(b,66912,o)}else{c[p>>2]=c[(yz(a,137978,0)|0)+8>>2];fC(b,66932,p)}xc(a,b,d,wc(a,b,d,e)|0,e);yc(a,b,d,e);$B(b,150517)|0;p=(c[e>>2]|0)+-1|0;c[e>>2]=p;tc(b,p);if(n)$B(b,107982)|0;else $B(b,75253)|0;l=q;return}function rc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;if((fz(a)|0)!=(a|0)){e=b+1|0;c[(yz(a,137978,0)|0)+8>>2]=b;if(!(z$(ry(a)|0,104980,7)|0)){b=ry(a)|0;Kc(d,b,c[(yz(a,137978,0)|0)+8>>2]|0);b=e}else b=e}e=wA(a)|0;while(1){if(!e)break;a=rc(e,b,d)|0;e=xA(e)|0;b=a}return b|0}function sc(a,b){a=a|0;b=b|0;a=nb[c[a>>2]&63](a,b,512)|0;if(!a)a=-1;else a=c[a+12>>2]|0;return a|0}function tc(a,b){a=a|0;b=b|0;while(1){if((b|0)<=0)break;$B(a,90480)|0;b=b+-1|0}return}function uc(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;h=l;l=l+32|0;g=h+16|0;f=h+8|0;i=h;j=ry(a)|0;tc(b,c[e>>2]|0);c[i>>2]=Bc(j,e)|0;fC(b,67020,i);if(d|0){$B(b,94263)|0;tc(b,c[e>>2]|0);j=(ey(a)|0)!=0;c[f>>2]=j?104626:134226;fC(b,67634,f);tc(b,c[e>>2]|0);j=(gy(a)|0)!=0;c[g>>2]=j?104626:134226;fC(b,67651,g)}l=h;return}function vc(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;o=l;l=l+16|0;n=o+8|0;m=o;i=fz(b)|0;j=c[b>>2]&3;f=sx(i,j,0)|0;a:do if(f|0){k=e+5|0;while(1){if(!f)break a;g=yx(b,f)|0;do if(g|0){h=f+8|0;if(!(a[g>>0]|0)){g=c[h>>2]|0;if((a[g>>0]|0)!=108)break;if(b$(g,105198)|0)break}$B(d,94263)|0;tc(d,c[e>>2]|0);c[m>>2]=Bc(c[h>>2]|0,e)|0;fC(d,67070,m);if(a[k>>0]|0?Dc(c[h>>2]|0)|0:0){Ec(yx(b,f)|0,d,e);break}c[n>>2]=Bc(yx(b,f)|0,e)|0;fC(d,67077,n)}while(0);f=sx(i,j,f)|0}}while(0);l=o;return}function wc(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;i=l;l=l+16|0;h=i;f=wA(a)|0;if(f){$B(b,94263)|0;g=c[e>>2]|0;c[e>>2]=g+1;tc(b,g);g=(d|0)!=0;if(g){$B(b,66994)|0;a=0;d=f}else{$B(b,67054)|0;tc(b,c[e>>2]|0);a=0;d=f}while(1){if(!d)break;if(!a)a=1;else $B(b,94263)|0;if(g)Cc(d,b,e);else{c[h>>2]=c[(yz(d,137978,0)|0)+8>>2];fC(b,134313,h)}d=xA(d)|0}if(g)a=1;else{c[e>>2]=(c[e>>2]|0)+-1;$B(b,150517)|0;tc(b,c[e>>2]|0);$B(b,94258)|0;a=1}}else a=0;l=i;return a|0}function xc(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;g=Sy(a)|0;if(!g){if((d|0)!=0&(e|0)!=0){c[f>>2]=(c[f>>2]|0)+-1;$B(b,150517)|0;tc(b,c[f>>2]|0);$B(b,94258)|0}}else{$B(b,94263)|0;h=(d|0)!=0;if(h)if(!e){e=c[f>>2]|0;c[f>>2]=e+1;tc(b,e);$B(b,66994)|0;e=0}else e=0;else{e=c[f>>2]|0;c[f>>2]=e+1;tc(b,e);$B(b,67008)|0;tc(b,c[f>>2]|0);e=0}while(1){if(!g)break;if(z$(ry(g)|0,104980,7)|0){do if(e)if(h){$B(b,94263)|0;break}else{$B(b,97973)|0;break}else e=1;while(0);Ac(g,b,d,f)}g=Ty(a,g)|0}c[f>>2]=(c[f>>2]|0)+-1;$B(b,150517)|0;tc(b,c[f>>2]|0);$B(b,94258)|0}return}function yc(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;f=Sy(a)|0;a:do if(f|0){while(1){if(!f)break a;if(Ex(a,f)|0)break;f=Ty(a,f)|0}$B(b,94263)|0;i=c[e>>2]|0;c[e>>2]=i+1;tc(b,i);$B(b,66944)|0;i=(d|0)!=0;if(i)g=0;else{tc(b,c[e>>2]|0);g=0}while(1){if(!f)break;h=Ex(a,f)|0;while(1){if(!h)break;do if(g)if(i){$B(b,94263)|0;break}else{$B(b,97973)|0;break}else g=1;while(0);zc(h,b,d,e);h=Gx(a,h)|0}f=Ty(a,f)|0}c[e>>2]=(c[e>>2]|0)+-1;$B(b,150517)|0;tc(b,c[e>>2]|0);$B(b,94258)|0}while(0);return}function zc(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;j=l;l=l+32|0;i=j+24|0;h=j+16|0;g=j+8|0;f=j;if(!d){c[i>>2]=c[(yz(a,137978,0)|0)+8>>2];fC(b,134313,i)}else{i=c[e>>2]|0;c[e>>2]=i+1;tc(b,i);$B(b,94292)|0;tc(b,c[e>>2]|0);c[f>>2]=c[(yz(a,137978,0)|0)+8>>2];fC(b,66956,f);tc(b,c[e>>2]|0);c[g>>2]=c[(yz(c[((c[a>>2]&3|0)==3?a:a+48|0)+40>>2]|0,137978,0)|0)+8>>2];fC(b,66970,g);tc(b,c[e>>2]|0);c[h>>2]=c[(yz(c[((c[a>>2]&3|0)==2?a:a+-48|0)+40>>2]|0,137978,0)|0)+8>>2];fC(b,66983,h);vc(a,b,e);$B(b,150517)|0;i=(c[e>>2]|0)+-1|0;c[e>>2]=i;tc(b,i);$B(b,75253)|0}l=j;return}function Ac(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;i=l;l=l+32|0;h=i+16|0;g=i+8|0;f=i;if(!d){c[h>>2]=c[(yz(a,137978,0)|0)+8>>2];fC(b,134313,h)}else{h=c[e>>2]|0;c[e>>2]=h+1;tc(b,h);$B(b,94292)|0;tc(b,c[e>>2]|0);c[f>>2]=c[(yz(a,137978,0)|0)+8>>2];fC(b,66956,f);tc(b,c[e>>2]|0);c[g>>2]=Bc(ry(a)|0,e)|0;fC(b,67020,g);vc(a,b,e);$B(b,150517)|0;h=(c[e>>2]|0)+-1|0;c[e>>2]=h;tc(b,h);$B(b,75253)|0}l=i;return}function Bc(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;g=d+4|0;if(a[g>>0]|0)b=RM(b)|0;if(!(c[45936]|0)){Tw(183744,1024,0);e=b}else e=b;a:while(1){f=a[e>>0]|0;switch(f<<24>>24){case 0:break a;case 34:{Ww(183744,67033)|0;break}case 92:{Ww(183744,93534)|0;break}case 47:{Ww(183744,67036)|0;break}case 8:{Ww(183744,67039)|0;break}case 12:{Ww(183744,67042)|0;break}case 10:{Ww(183744,67045)|0;break}case 13:{Ww(183744,67048)|0;break}case 9:{Ww(183744,67051)|0;break}default:{d=c[45937]|0;if(d>>>0>=(c[45938]|0)>>>0){Uw(183744,1)|0;d=c[45937]|0}c[45937]=d+1;a[d>>0]=f}}e=e+1|0}d=c[45937]|0;if(d>>>0>=(c[45938]|0)>>>0){Uw(183744,1)|0;d=c[45937]|0}a[d>>0]=0;d=c[45936]|0;c[45937]=d;if(a[g>>0]|0)D_(b);return d|0}function Cc(a,b,c){a=a|0;b=b|0;c=c|0;qc(a,b,0,c);a=wA(a)|0;while(1){if(!a)break;$B(b,94263)|0;Cc(a,b,c);a=xA(a)|0}return}function Dc(b){b=b|0;var c=0;c=b+1|0;a:do if((a[b>>0]|0)==95){b=(a[c>>0]|0)+-100<<24>>24;switch(((b&255)>>>2|b<<6&255)<<24>>24){case 0:{if(!(b$(c,67591)|0)){b=1;break a}break}case 2:{if(!(b$(c,67597)|0)){b=1;break a}break}case 1:{if(!(b$(c,67604)|0)){b=1;break a}return (b$(c,67618)|0)==0|0}case 4:{if(!(b$(c,67611)|0)){b=1;break a}b=(b$(c,67626)|0)==0&1;break a}default:{b=0;break a}}b=0}else b=0;while(0);return b|0}function Ec(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;i=l;l=l+16|0;f=i;do if(b|0?a[b>>0]|0:0){h=oE(b)|0;if(!h){c[f>>2]=b;Pw(0,67082,f)|0;break}$B(d,150517)|0;g=c[e>>2]|0;c[e>>2]=g+1;tc(d,g);$B(d,67109)|0;g=h+8|0;b=0;f=0;while(1){if((f|0)>=(c[h>>2]|0))break;if(!b)b=1;else $B(d,94263)|0;Fc((c[g>>2]|0)+(f*80|0)|0,d,e);f=f+1|0}c[e>>2]=(c[e>>2]|0)+-1;$B(d,150517)|0;tc(d,c[e>>2]|0);$B(d,94258)|0;pE(h)}while(0);l=i;return}function Fc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0.0,C=0.0,D=0.0;A=l;l=l+240|0;y=A+224|0;x=A+216|0;w=A+208|0;v=A+200|0;u=A+192|0;t=A+184|0;s=A+176|0;r=A+152|0;q=A+136|0;p=A+128|0;o=A+112|0;n=A+104|0;m=A+96|0;k=A+88|0;j=A+72|0;i=A+48|0;z=A+40|0;g=A+8|0;f=A;e=c[d>>2]|0;c[d>>2]=e+1;tc(b,e);$B(b,94292)|0;tc(b,c[d>>2]|0);e=c[a>>2]|0;a:do switch(e|0){case 1:case 0:{c[f>>2]=(e|0)==0?69:101;fC(b,67112,f);tc(b,c[d>>2]|0);D=+h[a+16>>3];C=+h[a+24>>3];B=+h[a+32>>3];h[g>>3]=+h[a+8>>3];h[g+8>>3]=D;h[g+16>>3]=C;h[g+24>>3]=B;fC(b,67125,g);break}case 3:case 2:{c[z>>2]=(e|0)==2?80:112;fC(b,67112,z);tc(b,c[d>>2]|0);Gc(b,a+8|0);break}case 5:case 4:{c[i>>2]=(e|0)==4?66:98;fC(b,67112,i);tc(b,c[d>>2]|0);Gc(b,a+8|0);break}case 6:{fC(b,67160,A+56|0);tc(b,c[d>>2]|0);Gc(b,a+8|0);break}case 7:{fC(b,67172,A+64|0);tc(b,c[d>>2]|0);D=+h[a+16>>3];h[j>>3]=+h[a+8>>3];h[j+8>>3]=D;fC(b,67184,j);tc(b,c[d>>2]|0);z=c[a+24>>2]|0;c[k>>2]=(z|0)==0?108:(z|0)==1?99:114;fC(b,67206,k);tc(b,c[d>>2]|0);h[m>>3]=+h[a+32>>3];fC(b,67222,m);tc(b,c[d>>2]|0);c[n>>2]=Bc(c[a+40>>2]|0,d)|0;fC(b,67239,n);break}case 9:case 8:{c[o>>2]=(e|0)==8?67:99;fC(b,67112,o);tc(b,c[d>>2]|0);fC(b,67253,A+120|0);tc(b,c[d>>2]|0);c[p>>2]=Bc(c[a+8>>2]|0,d)|0;fC(b,67270,p);break}case 13:case 14:{c[q>>2]=(e|0)==13?67:99;fC(b,67112,q);tc(b,c[d>>2]|0);switch(c[a+8>>2]|0){case 0:{fC(b,67253,A+144|0);tc(b,c[d>>2]|0);c[r>>2]=Bc(c[a+16>>2]|0,d)|0;fC(b,67270,r);break a}case 1:{fC(b,67285,A+160|0);tc(b,c[d>>2]|0);Hc(b,a+16|0,d);break a}default:{fC(b,67304,A+168|0);tc(b,c[d>>2]|0);Ic(b,a+16|0,d);break a}}}case 10:{fC(b,67323,s);tc(b,c[d>>2]|0);h[t>>3]=+h[a+8>>3];fC(b,67335,t);tc(b,c[d>>2]|0);c[u>>2]=Bc(c[a+16>>2]|0,d)|0;fC(b,67351,u);break}case 11:{fC(b,67365,v);tc(b,c[d>>2]|0);c[w>>2]=Bc(c[a+8>>2]|0,d)|0;fC(b,67377,w);break}case 15:{fC(b,67392,x);tc(b,c[d>>2]|0);c[y>>2]=c[a+8>>2];fC(b,67404,y);break}default:{}}while(0);z=(c[d>>2]|0)+-1|0;c[d>>2]=z;tc(b,z);$B(b,75253)|0;l=A;return}function Gc(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0.0;j=l;l=l+48|0;i=j+32|0;g=j+16|0;f=j+8|0;e=c[b>>2]|0;d=c[b+4>>2]|0;fC(a,67565,j);b=0;while(1){if((b|0)>=(e|0))break;if((b|0)>0)fC(a,97973,f);k=+h[d+(b*24|0)+8>>3];h[g>>3]=+h[d+(b*24|0)>>3];h[g+8>>3]=k;fC(a,67577,g);b=b+1|0}fC(a,67518,i);l=j;return}function Hc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0.0,i=0;e=l;l=l+32|0;f=e+16|0;i=e;tc(a,c[d>>2]|0);g=+h[b+8>>3];h[i>>3]=+h[b>>3];h[i+8>>3]=g;fC(a,67521,i);tc(a,c[d>>2]|0);g=+h[b+24>>3];h[f>>3]=+h[b+16>>3];h[f+8>>3]=g;fC(a,67543,f);tc(a,c[d>>2]|0);Jc(a,c[b+32>>2]|0,c[b+36>>2]|0,d);l=e;return}function Ic(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0.0,i=0.0,j=0;e=l;l=l+48|0;f=e+24|0;j=e;tc(a,c[d>>2]|0);g=+h[b+8>>3];i=+h[b+16>>3];h[j>>3]=+h[b>>3];h[j+8>>3]=g;h[j+16>>3]=i;fC(a,67420,j);tc(a,c[d>>2]|0);i=+h[b+32>>3];g=+h[b+40>>3];h[f>>3]=+h[b+24>>3];h[f+8>>3]=i;h[f+16>>3]=g;fC(a,67448,f);tc(a,c[d>>2]|0);Jc(a,c[b+48>>2]|0,c[b+52>>2]|0,d);l=e;return}function Jc(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,i=0,j=0,k=0,m=0,n=0,o=0.0;m=l;l=l+48|0;k=m+32|0;j=m+16|0;i=m+8|0;fC(a,67476,m);f=0;while(1){if((f|0)>=(b|0))break;if((f|0)>0)fC(a,97973,i);o=+g[d+(f<<3)>>2];n=Bc(c[d+(f<<3)+4>>2]|0,e)|0;h[j>>3]=o;c[j+8>>2]=n;fC(a,67487,j);f=f+1|0}fC(a,67518,k);l=m;return}function Kc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;g=l;l=l+16|0;f=g;e=nb[c[a>>2]&63](a,b,512)|0;if(e){if((c[e+12>>2]|0)!=(d|0)){c[f>>2]=b;Pw(0,67664,f)|0}}else{f=E_(1,16)|0;c[f+8>>2]=n1(b)|0;c[f+12>>2]=d;nb[c[a>>2]&63](a,f,1)|0}l=g;return}function Lc(a,b,d){a=a|0;b=b|0;d=d|0;D_(c[b+8>>2]|0);D_(b);return}function Mc(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;b=l;l=l+32|0;d=b+24|0;e=b+16|0;g=b;f=c[a+16>>2]|0;$B(a,68519)|0;j=c[c[a+12>>2]>>2]|0;i=c[j+4>>2]|0;h=c[j+8>>2]|0;c[g>>2]=c[j>>2];c[g+4>>2]=i;c[g+8>>2]=h;fC(a,68529,g);c[e>>2]=ry(c[f+8>>2]|0)|0;fC(a,68564,e);c[d>>2]=O(c[a+168>>2]|0,c[a+164>>2]|0)|0;fC(a,68577,d);$B(a,68590)|0;$B(a,68600)|0;$B(a,68608)|0;$B(a,68616)|0;$B(a,68624)|0;$B(a,68632)|0;$B(a,68640)|0;$B(a,68644)|0;$B(a,68649)|0;l=b;return}function Nc(a){a=a|0;$B(a,68500)|0;return}function Oc(a){a=a|0;c[45940]=2;return}function Pc(a){a=a|0;c[45940]=1;return}function Qc(a){a=a|0;c[45940]=2;return}function Rc(a){a=a|0;c[45940]=0;return}function Sc(a){a=a|0;c[45940]=2;return}function Tc(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0.0,i=0.0,j=0,k=0.0,m=0,n=0,o=0,p=0,q=0.0,r=0.0,s=0;p=l;l=l+80|0;o=p;m=c[(c[b+16>>2]|0)+16>>2]|0;n=c[45940]|0;f=c[e+4>>2]|0;g=+h[b+352>>3]*+h[f+16>>3];i=c[b+360>>2]|0?1.5707963267948966:0.0;j=c[e>>2]|0;k=g*.3333333333333333*+((W_(j)|0)>>>0);f=c[f+8>>2]|0;if(!f)f=-1;else f=c[f+20>>2]|0;s=a[e+48>>0]|0;r=+h[d>>3];q=+h[d+8>>3];e=bd(j)|0;c[o>>2]=4;c[o+4>>2]=s<<24>>24==108?0:s<<24>>24==114?2:1;c[o+8>>2]=m;c[o+12>>2]=n;c[o+16>>2]=0;c[o+20>>2]=f;h[o+24>>3]=g;h[o+32>>3]=i;c[o+40>>2]=6;h[o+48>>3]=g;h[o+56>>3]=k;c[o+64>>2]=~~(r+(r>=0.0?.5:-.5));c[o+68>>2]=~~(q+(q+-72.0>=0.0?-71.5:-72.5));c[o+72>>2]=e;fC(b,68445,o);l=p;return}function Uc(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;n=l;l=l+32|0;j=n;i=n+20|0;m=e+32|0;a:do switch(c[m>>2]|0){case 5:{f=0;while(1){g=c[12724+(f<<2)>>2]|0;if((f|0)==8)break a;h=c[e>>2]|0;if((a[g>>0]|0)==(a[h>>0]|0)?(b$(g,h)|0)==0:0){k=10;break a}f=f+1|0}}case 1:{g=e+1|0;h=e+2|0;f=(ad(i,d[e>>0]|0,d[g>>0]|0,d[h>>0]|0)|0)+32|0;if(!(c[i>>2]|0))k=10;else{o=d[e>>0]|0;i=d[g>>0]|0;k=d[h>>0]|0;c[j>>2]=0;c[j+4>>2]=f;c[j+8>>2]=o;c[j+12>>2]=i;c[j+16>>2]=k;fC(b,68388,j);k=10}break}default:qa(135312,67785,163,67816)}while(0);if((k|0)==10)c[e>>2]=f;c[m>>2]=6;l=n;return}function Vc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0.0,i=0.0,j=0,k=0,m=0.0,n=0.0,o=0.0,p=0,q=0,r=0,s=0,t=0,u=0;e=l;l=l+112|0;f=e+8|0;u=e+104|0;t=e;k=c[a+16>>2]|0;s=~~+h[k+152>>3];r=c[k+16>>2]|0;q=c[k+56>>2]|0;p=c[45940]|0;_c(k,u,t);n=+h[b>>3];k=~~(n+(n>=0.0?.5:-.5));m=+h[b+8>>3];j=~~(m+(m>=0.0?.5:-.5));i=+h[b+16>>3];n=i-n;g=+h[b+24>>3];m=g-m;b=c[u>>2]|0;o=+h[t>>3];c[f>>2]=1;c[f+4>>2]=1;c[f+8>>2]=b;c[f+12>>2]=s;c[f+16>>2]=r;c[f+20>>2]=q;c[f+24>>2]=p;c[f+28>>2]=0;c[f+32>>2]=d|0?20:-1;h[f+40>>3]=o;c[f+48>>2]=0;h[f+56>>3]=0.0;c[f+64>>2]=k;c[f+68>>2]=j;c[f+72>>2]=~~(n+(n>=0.0?.5:-.5));c[f+76>>2]=~~(m+(m>=0.0?.5:-.5));c[f+80>>2]=k;c[f+84>>2]=j;c[f+88>>2]=~~(i+(i>=0.0?.5:-.5));c[f+92>>2]=~~(g+(g>=0.0?.5:-.5));fC(a,68323,f);l=e;return}function Wc(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0.0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;f=l;l=l+96|0;g=f+8|0;o=f+80|0;p=f;q=c[a+16>>2]|0;n=~~+h[q+152>>3];m=c[q+16>>2]|0;k=c[q+56>>2]|0;j=c[45940]|0;_c(q,o,p);o=c[o>>2]|0;i=+h[p>>3];c[g>>2]=2;c[g+4>>2]=3;c[g+8>>2]=o;c[g+12>>2]=n;c[g+16>>2]=m;c[g+20>>2]=k;c[g+24>>2]=j;c[g+28>>2]=0;c[g+32>>2]=e|0?20:-1;h[g+40>>3]=i;c[g+48>>2]=0;c[g+52>>2]=0;c[g+56>>2]=0;c[g+60>>2]=0;c[g+64>>2]=0;c[g+68>>2]=d+1;fC(a,68227,g);$c(a,b,d,1);l=f;return}function Xc(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0.0,E=0.0,F=0;C=l;l=l+192|0;B=C+176|0;z=C+168|0;A=C+104|0;y=C+96|0;i=C+88|0;u=C+180|0;v=C+80|0;w=C+16|0;x=C;f=a+16|0;e=c[f>>2]|0;q=~~+h[e+152>>3];r=c[e+16>>2]|0;s=c[45940]|0;if((d|0)<=3)qa(67778,67785,360,67805);t=C_((d*140|0)+140|0)|0;_c(e,u,v);if(!g){o=4;j=0;k=-1}else{o=5;j=c[(c[f>>2]|0)+56>>2]|0;k=20}E=+h[b>>3];n=w+48|0;h[n>>3]=E;D=+h[b+8>>3];h[w+56>>3]=D;c[i>>2]=~~(E+(E>=0.0?.5:-.5));c[i+4>>2]=~~(D+(D>=0.0?.5:-.5));m=x+8|0;e=t+(Y0(t,80995,i)|0)|0;p=1;g=0;while(1){i=g+3|0;if((i|0)>=(d|0))break;c[w>>2]=c[n>>2];c[w+4>>2]=c[n+4>>2];c[w+8>>2]=c[n+8>>2];c[w+12>>2]=c[n+12>>2];f=1;while(1){if((f|0)==4){f=1;break}F=f+g|0;h[w+(f<<4)>>3]=+h[b+(F<<4)>>3];h[w+(f<<4)+8>>3]=+h[b+(F<<4)+8>>3];f=f+1|0}while(1){if((f|0)==7)break;XL(x,w,3,+(f|0)*.16666666666666666,0,0);D=+h[x>>3];E=+h[m>>3];c[y>>2]=~~(D+(D>=0.0?.5:-.5));c[y+4>>2]=~~(E+(E>=0.0?.5:-.5));f=f+1|0;e=e+(Y0(e,80995,y)|0)|0}p=p+6|0;g=i}f=c[u>>2]|0;E=+h[v>>3];c[A>>2]=3;c[A+4>>2]=o;c[A+8>>2]=f;c[A+12>>2]=q;c[A+16>>2]=r;c[A+20>>2]=j;c[A+24>>2]=s;c[A+28>>2]=0;c[A+32>>2]=k;h[A+40>>3]=E;c[A+48>>2]=0;c[A+52>>2]=0;c[A+56>>2]=0;c[A+60>>2]=p;fC(a,68278,A);c[z>>2]=t;fC(a,81002,z);D_(t);f=p+-1|0;e=0;while(1){if((e|0)>=(p|0))break;c[B>>2]=((e|0)%(f|0)|0|0)!=0&1;fC(a,81007,B);e=e+1|0}$B(a,150517)|0;l=C;return}function Yc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0.0,i=0,j=0,k=0,m=0,n=0,o=0;e=l;l=l+96|0;f=e+8|0;m=e+80|0;n=e;o=c[a+16>>2]|0;k=~~+h[o+152>>3];j=c[o+16>>2]|0;i=c[45940]|0;_c(o,m,n);m=c[m>>2]|0;g=+h[n>>3];c[f>>2]=2;c[f+4>>2]=1;c[f+8>>2]=m;c[f+12>>2]=k;c[f+16>>2]=j;c[f+20>>2]=0;c[f+24>>2]=i;c[f+28>>2]=0;c[f+32>>2]=0;h[f+40>>3]=g;c[f+48>>2]=0;c[f+52>>2]=0;c[f+56>>2]=0;c[f+60>>2]=0;c[f+64>>2]=0;c[f+68>>2]=d;fC(a,68227,f);$c(a,b,d,0);l=e;return}function Zc(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;c[e>>2]=b;fC(a,68221,e);l=d;return}function _c(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0;switch(c[a+144>>2]|0){case 1:{e=10.0;a=1;break}case 2:{e=10.0;a=2;break}default:{e=0.0;a=0}}c[b>>2]=a;h[d>>3]=e;return}function $c(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0.0,m=0.0;j=l;l=l+16|0;i=j+8|0;g=j;f=0;while(1){if((f|0)>=(d|0))break;m=+h[b+(f<<4)>>3];k=+h[b+(f<<4)+8>>3];c[g>>2]=~~(m+(m>=0.0?.5:-.5));c[g+4>>2]=~~(k+(k>=0.0?.5:-.5));fC(a,80995,g);f=f+1|0}if(e|0){k=+h[b>>3];m=+h[b+8>>3];c[i>>2]=~~(k+(k>=0.0?.5:-.5));c[i+4>>2]=~~(m+(m>=0.0?.5:-.5));fC(a,80995,i)}$B(a,150517)|0;l=j;return}function ad(a,d,e,f){a=a|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;c[a>>2]=0;k=c[45941]|0;h=195075;g=0;i=-1;while(1){if((g|0)>=(k|0)){l=6;break}m=(b[187600+(g<<1)>>1]|0)-d|0;n=(b[188112+(g<<1)>>1]|0)-e|0;j=(b[188624+(g<<1)>>1]|0)-f|0;j=(O(n,n)|0)+(O(m,m)|0)+(O(j,j)|0)|0;if((j|0)<(h|0))if(!j)break;else{h=j;i=g}g=g+1|0}if((l|0)==6){c[45941]=k+1;if((k|0)==256)g=i;else{b[187600+(g<<1)>>1]=d;b[188112+(g<<1)>>1]=e;b[188624+(g<<1)>>1]=f;c[a>>2]=1}}return g|0}function bd(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=l;l=l+16|0;h=i;d=c[45942]|0;if(!d){c[45943]=64;d=C_(64)|0;c[45942]=d;e=0}else e=0;while(1){g=b+1|0;f=a[b>>0]|0;if(!(f<<24>>24))break;b=c[45943]|0;if((e|0)>(b+-8|0)){d=b<<1;c[45943]=d;d=F_(c[45942]|0,d)|0;c[45942]=d;d=d+e|0}if(f<<24>>24<=-1){a[d>>0]=92;c[h>>2]=f&255;Y0(d+1|0,81120,h)|0;b=g;d=d+4|0;e=e+4|0;continue}if(f<<24>>24==92){a[d>>0]=92;e=e+1|0;d=d+1|0}a[d>>0]=f;b=g;d=d+1|0;e=e+1|0}a[d>>0]=0;l=i;return c[45942]|0}function cd(b){b=b|0;var d=0,e=0,f=0;e=c[b+16>>2]|0;switch(c[b+64>>2]|0){case 0:{$B(b,68116)|0;d=e+208|0;e=c[d>>2]|0;if(e|0?a[e>>0]|0:0){$B(b,68130)|0;$B(b,qH(c[d>>2]|0)|0)|0;$B(b,150517)|0}break}case 1:{d=e+208|0;f=c[d>>2]|0;if(f|0?a[f>>0]|0:0){$B(b,68130)|0;$B(b,qH(c[d>>2]|0)|0)|0;$B(b,99578)|0;$B(b,qH(ry(c[e+8>>2]|0)|0)|0)|0;$B(b,150517)|0}break}case 3:{f=qH(ry(c[e+8>>2]|0)|0)|0;$B(b,68139)|0;$B(b,f)|0;$B(b,68149)|0;$B(b,f)|0;$B(b,68104)|0;break}default:{}}return}function dd(a){a=a|0;var b=0;b=c[a+16>>2]|0;switch(c[a+64>>2]|0){case 2:{fd(a,c[b+264>>2]|0,c[b+272>>2]|0,c[b+268>>2]|0,c[b+208>>2]|0,c[b+228>>2]|0,c[b+244>>2]|0,c[b+212>>2]|0);break}case 3:{fd(a,c[b+264>>2]|0,c[b+272>>2]|0,c[b+268>>2]|0,c[b+208>>2]|0,c[b+228>>2]|0,c[b+244>>2]|0,c[b+212>>2]|0);$B(a,68108)|0;break}default:{}}return}function ed(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0;g=c[a+16>>2]|0;fd(a,c[g+264>>2]|0,c[g+272>>2]|0,c[g+268>>2]|0,b,d,e,f);return}function fd(b,d,e,f,g,i,j,k){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;j=j|0;k=k|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0.0;y=l;l=l+128|0;x=y+120|0;u=y+112|0;t=y+96|0;s=y+80|0;r=y+56|0;w=y+48|0;q=y+40|0;v=y+24|0;p=y;a:do if((e|0)!=0&(f|0)!=0){m=f+10|0;if((c[45944]|0)<(f|0)){c[45944]=m;o=F_(c[45945]|0,m<<3)|0;c[45945]=o}else o=c[45945]|0;m=0;while(1){if((m|0)>=(f|0))break;z=+h[e+(m<<4)>>3];c[o+(m<<3)>>2]=~~(z+(z>=0.0?.5:-.5));z=+h[e+(m<<4)+8>>3];c[o+(m<<3)+4>>2]=~~(z+(z>=0.0?.5:-.5));m=m+1|0}n=b+64|0;m=c[n>>2]|0;e=(g|0)!=0;if(e&(m|0)==0){if(!(a[g>>0]|0))break;switch(d|0){case 0:{v=c[o>>2]|0;w=c[o+12>>2]|0;x=c[o+8>>2]|0;f=c[o+4>>2]|0;c[p>>2]=g;c[p+4>>2]=v;c[p+8>>2]=w;c[p+12>>2]=x;c[p+16>>2]=f;fC(b,67850,p);break a}case 1:{w=c[o>>2]|0;x=c[o+4>>2]|0;f=(c[o+8>>2]|0)-w|0;c[v>>2]=g;c[v+4>>2]=w;c[v+8>>2]=x;c[v+12>>2]=f;fC(b,67871,v);break a}case 2:{c[q>>2]=g;fC(b,67891,q);m=0;while(1){if((m|0)>=(f|0))break;v=c[45945]|0;x=c[v+(m<<3)+4>>2]|0;c[w>>2]=c[v+(m<<3)>>2];c[w+4>>2]=x;fC(b,67899,w);m=m+1|0}$B(b,150517)|0;break a}default:qa(135312,67906,63,67926)}}if(e&(m|0)==1){if(!(a[g>>0]|0))break;if(!d){w=c[o+12>>2]|0;x=c[o+8>>2]|0;f=c[o+4>>2]|0;c[r>>2]=c[o>>2];c[r+4>>2]=w;c[r+8>>2]=x;c[r+12>>2]=f;c[r+16>>2]=g;c[r+20>>2]=i;fC(b,67943,r);break}else qa(135312,67906,75,67926)}if((m&-2|0)==2){switch(d|0){case 1:{$B(b,67976)|0;break}case 0:{$B(b,67997)|0;break}case 2:{$B(b,68016)|0;break}default:qa(135312,67906,91,67926)}if(k|0?a[k>>0]|0:0){$B(b,73496)|0;$B(b,tH(k)|0)|0;$B(b,95669)|0}if(e?a[g>>0]|0:0){$B(b,68035)|0;$B(b,tH(g)|0)|0;$B(b,95669)|0}if(j|0?a[j>>0]|0:0){$B(b,74455)|0;$B(b,qH(j)|0)|0;$B(b,95669)|0}if(i|0?a[i>>0]|0:0){$B(b,68043)|0;$B(b,qH(i)|0)|0;$B(b,95669)|0}$B(b,68052)|0;$B(b,68060)|0;b:do switch(d|0){case 1:{f=c[45945]|0;w=c[f>>2]|0;x=c[f+4>>2]|0;f=(c[f+8>>2]|0)-w|0;c[s>>2]=w;c[s+4>>2]=x;c[s+8>>2]=f;fC(b,68070,s);break}case 0:{v=c[45945]|0;w=c[v+12>>2]|0;x=c[v+8>>2]|0;f=c[v+4>>2]|0;c[t>>2]=c[v>>2];c[t+4>>2]=w;c[t+8>>2]=x;c[t+12>>2]=f;fC(b,68079,t);break}case 2:{w=c[45945]|0;m=c[w+4>>2]|0;c[u>>2]=c[w>>2];c[u+4>>2]=m;fC(b,68091,u);m=1;while(1){if((m|0)>=(f|0))break b;v=c[45945]|0;w=c[v+(m<<3)+4>>2]|0;c[x>>2]=c[v+(m<<3)>>2];c[x+4>>2]=w;fC(b,68097,x);m=m+1|0}}default:{}}while(0);if((c[n>>2]|0)==3){$B(b,73320)|0;break}else{$B(b,68104)|0;break}}}while(0);l=y;return}function gd(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;b=l;l=l+32|0;d=b+24|0;e=b+16|0;g=b;f=c[a+16>>2]|0;$B(a,68519)|0;j=c[c[a+12>>2]>>2]|0;i=c[j+4>>2]|0;h=c[j+8>>2]|0;c[g>>2]=c[j>>2];c[g+4>>2]=i;c[g+8>>2]=h;fC(a,68529,g);c[e>>2]=ry(c[f+8>>2]|0)|0;fC(a,68564,e);c[d>>2]=O(c[a+168>>2]|0,c[a+164>>2]|0)|0;fC(a,68577,d);$B(a,68590)|0;$B(a,68600)|0;$B(a,68608)|0;$B(a,68616)|0;$B(a,68624)|0;$B(a,68632)|0;$B(a,68640)|0;$B(a,68644)|0;$B(a,68649)|0;l=b;return}function hd(a){a=a|0;$B(a,68500)|0;return}function id(a){a=a|0;c[45946]=2;return}function jd(a){a=a|0;c[45946]=1;return}function kd(a){a=a|0;c[45946]=2;return}function ld(a){a=a|0;c[45946]=0;return}function md(a){a=a|0;c[45946]=2;return}function nd(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0.0,i=0.0,j=0,k=0,m=0,n=0,o=0.0,p=0.0,q=0;n=l;l=l+80|0;m=n;j=c[(c[b+16>>2]|0)+16>>2]|0;k=c[45946]|0;f=c[e+4>>2]|0;g=+h[b+352>>3]*+h[f+16>>3];i=c[b+360>>2]|0?1.5707963267948966:0.0;f=c[f+8>>2]|0;if(!f)f=-1;else f=c[f+20>>2]|0;q=a[e+48>>0]|0;p=+h[d>>3];o=+h[d+8>>3];e=xd(c[e>>2]|0)|0;c[m>>2]=4;c[m+4>>2]=q<<24>>24==108?0:q<<24>>24==114?2:1;c[m+8>>2]=j;c[m+12>>2]=k;c[m+16>>2]=0;c[m+20>>2]=f;h[m+24>>3]=g;h[m+32>>3]=i;c[m+40>>2]=4;h[m+48>>3]=0.0;h[m+56>>3]=0.0;c[m+64>>2]=~~(p+(p>=0.0?.5:-.5));c[m+68>>2]=~~(o+(o>=0.0?.5:-.5));c[m+72>>2]=e;fC(b,68445,m);l=n;return}function od(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;n=l;l=l+32|0;j=n;i=n+20|0;m=e+32|0;a:do switch(c[m>>2]|0){case 5:{f=0;while(1){g=c[12724+(f<<2)>>2]|0;if((f|0)==8)break a;h=c[e>>2]|0;if((a[g>>0]|0)==(a[h>>0]|0)?(b$(g,h)|0)==0:0){k=10;break a}f=f+1|0}}case 1:{g=e+1|0;h=e+2|0;f=(wd(i,d[e>>0]|0,d[g>>0]|0,d[h>>0]|0)|0)+32|0;if(!(c[i>>2]|0))k=10;else{o=d[e>>0]|0;i=d[g>>0]|0;k=d[h>>0]|0;c[j>>2]=0;c[j+4>>2]=f;c[j+8>>2]=o;c[j+12>>2]=i;c[j+16>>2]=k;fC(b,68388,j);k=10}break}case 0:{f=0;k=10;break}default:qa(135312,68409,168,68428)}while(0);if((k|0)==10)c[e>>2]=f;c[m>>2]=6;l=n;return}function pd(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0.0,i=0.0,j=0,k=0,m=0.0,n=0.0,o=0.0,p=0,q=0,r=0,s=0,t=0,u=0;e=l;l=l+112|0;f=e+8|0;u=e+104|0;t=e;k=c[a+16>>2]|0;s=~~+h[k+152>>3];r=c[k+16>>2]|0;q=c[k+56>>2]|0;p=c[45946]|0;ud(k,u,t);n=+h[b>>3];k=~~(n+(n>=0.0?.5:-.5));m=+h[b+8>>3];j=~~(m+(m>=0.0?.5:-.5));i=+h[b+16>>3];n=i-n;g=+h[b+24>>3];m=g-m;b=c[u>>2]|0;o=+h[t>>3];c[f>>2]=1;c[f+4>>2]=1;c[f+8>>2]=b;c[f+12>>2]=s;c[f+16>>2]=r;c[f+20>>2]=q;c[f+24>>2]=p;c[f+28>>2]=0;c[f+32>>2]=d|0?20:-1;h[f+40>>3]=o;c[f+48>>2]=0;h[f+56>>3]=0.0;c[f+64>>2]=k;c[f+68>>2]=j;c[f+72>>2]=~~(n+(n>=0.0?.5:-.5));c[f+76>>2]=~~(m+(m>=0.0?.5:-.5));c[f+80>>2]=k;c[f+84>>2]=j;c[f+88>>2]=~~(i+(i>=0.0?.5:-.5));c[f+92>>2]=~~(g+(g>=0.0?.5:-.5));fC(a,68323,f);l=e;return}function qd(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0.0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;f=l;l=l+96|0;g=f+8|0;o=f+80|0;p=f;q=c[a+16>>2]|0;n=~~+h[q+152>>3];m=c[q+16>>2]|0;k=c[q+56>>2]|0;j=c[45946]|0;ud(q,o,p);o=c[o>>2]|0;i=+h[p>>3];c[g>>2]=2;c[g+4>>2]=3;c[g+8>>2]=o;c[g+12>>2]=n;c[g+16>>2]=m;c[g+20>>2]=k;c[g+24>>2]=j;c[g+28>>2]=0;c[g+32>>2]=e|0?20:-1;h[g+40>>3]=i;c[g+48>>2]=0;c[g+52>>2]=0;c[g+56>>2]=0;c[g+60>>2]=0;c[g+64>>2]=0;c[g+68>>2]=d+1;fC(a,68227,g);vd(a,b,d,1);l=f;return}function rd(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0.0,E=0.0,F=0;C=l;l=l+192|0;B=C+176|0;z=C+168|0;A=C+104|0;y=C+96|0;f=C+88|0;u=C+180|0;v=C+80|0;w=C+16|0;x=C;e=a+16|0;p=c[e>>2]|0;q=~~+h[p+152>>3];r=c[p+16>>2]|0;s=c[45946]|0;t=C_((d*140|0)+140|0)|0;ud(p,u,v);if(!g){o=4;j=0;k=-1}else{o=5;j=c[(c[e>>2]|0)+56>>2]|0;k=20}E=+h[b>>3];n=w+48|0;h[n>>3]=E;D=+h[b+8>>3];h[w+56>>3]=D;c[f>>2]=~~(E+(E>=0.0?.5:-.5));c[f+4>>2]=~~(D+(D>=0.0?.5:-.5));m=x+8|0;e=t+(Y0(t,80995,f)|0)|0;p=1;g=0;while(1){i=g+3|0;if((i|0)>=(d|0))break;c[w>>2]=c[n>>2];c[w+4>>2]=c[n+4>>2];c[w+8>>2]=c[n+8>>2];c[w+12>>2]=c[n+12>>2];f=1;while(1){if((f|0)==4){f=1;break}F=f+g|0;h[w+(f<<4)>>3]=+h[b+(F<<4)>>3];h[w+(f<<4)+8>>3]=+h[b+(F<<4)+8>>3];f=f+1|0}while(1){if((f|0)==7)break;XL(x,w,3,+(f|0)*.16666666666666666,0,0);D=+h[x>>3];E=+h[m>>3];c[y>>2]=~~(D+(D>=0.0?.5:-.5));c[y+4>>2]=~~(E+(E>=0.0?.5:-.5));f=f+1|0;e=e+(Y0(e,80995,y)|0)|0}p=p+6|0;g=i}f=c[u>>2]|0;E=+h[v>>3];c[A>>2]=3;c[A+4>>2]=o;c[A+8>>2]=f;c[A+12>>2]=q;c[A+16>>2]=r;c[A+20>>2]=j;c[A+24>>2]=s;c[A+28>>2]=0;c[A+32>>2]=k;h[A+40>>3]=E;c[A+48>>2]=0;c[A+52>>2]=0;c[A+56>>2]=0;c[A+60>>2]=p;fC(a,68278,A);c[z>>2]=t;fC(a,81002,z);D_(t);f=p+-1|0;e=0;while(1){if((e|0)>=(p|0))break;c[B>>2]=((e|0)%(f|0)|0|0)!=0&1;fC(a,81007,B);e=e+1|0}$B(a,150517)|0;l=C;return}function sd(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0.0,i=0,j=0,k=0,m=0,n=0,o=0;e=l;l=l+96|0;f=e+8|0;m=e+80|0;n=e;o=c[a+16>>2]|0;k=~~+h[o+152>>3];j=c[o+16>>2]|0;i=c[45946]|0;ud(o,m,n);m=c[m>>2]|0;g=+h[n>>3];c[f>>2]=2;c[f+4>>2]=1;c[f+8>>2]=m;c[f+12>>2]=k;c[f+16>>2]=j;c[f+20>>2]=0;c[f+24>>2]=i;c[f+28>>2]=0;c[f+32>>2]=0;h[f+40>>3]=g;c[f+48>>2]=0;c[f+52>>2]=0;c[f+56>>2]=0;c[f+60>>2]=0;c[f+64>>2]=0;c[f+68>>2]=d;fC(a,68227,f);vd(a,b,d,0);l=e;return}function td(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;c[e>>2]=b;fC(a,68221,e);l=d;return}function ud(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0;switch(c[a+144>>2]|0){case 1:{e=10.0;a=1;break}case 2:{e=10.0;a=2;break}default:{e=0.0;a=0}}c[b>>2]=a;h[d>>3]=e;return}function vd(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0.0,m=0.0;j=l;l=l+16|0;i=j+8|0;g=j;f=0;while(1){if((f|0)>=(d|0))break;m=+h[b+(f<<4)>>3];k=+h[b+(f<<4)+8>>3];c[g>>2]=~~(m+(m>=0.0?.5:-.5));c[g+4>>2]=~~(k+(k>=0.0?.5:-.5));fC(a,80995,g);f=f+1|0}if(e|0){k=+h[b>>3];m=+h[b+8>>3];c[i>>2]=~~(k+(k>=0.0?.5:-.5));c[i+4>>2]=~~(m+(m>=0.0?.5:-.5));fC(a,80995,i)}$B(a,150517)|0;l=j;return}function wd(a,d,e,f){a=a|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;c[a>>2]=0;k=c[45947]|0;h=195075;g=0;i=-1;while(1){if((g|0)>=(k|0)){l=6;break}m=(b[189136+(g<<1)>>1]|0)-d|0;n=(b[189648+(g<<1)>>1]|0)-e|0;j=(b[190160+(g<<1)>>1]|0)-f|0;j=(O(n,n)|0)+(O(m,m)|0)+(O(j,j)|0)|0;if((j|0)<(h|0))if(!j)break;else{h=j;i=g}g=g+1|0}if((l|0)==6){c[45947]=k+1;if((k|0)==256)g=i;else{b[189136+(g<<1)>>1]=d;b[189648+(g<<1)>>1]=e;b[190160+(g<<1)>>1]=f;c[a>>2]=1}}return g|0}function xd(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=l;l=l+16|0;h=i;d=c[45948]|0;if(!d){c[45949]=64;d=C_(64)|0;c[45948]=d;e=0}else e=0;while(1){g=b+1|0;f=a[b>>0]|0;if(!(f<<24>>24))break;b=c[45949]|0;if((e|0)>(b+-8|0)){d=b<<1;c[45949]=d;d=F_(c[45948]|0,d)|0;c[45948]=d;d=d+e|0}if(f<<24>>24<=-1){a[d>>0]=92;c[h>>2]=f&255;Y0(d+1|0,81120,h)|0;b=g;d=d+4|0;e=e+4|0;continue}if(f<<24>>24==92){a[d>>0]=92;e=e+1|0;d=d+1|0}a[d>>0]=f;b=g;d=d+1|0;e=e+1|0}a[d>>0]=0;l=i;return c[45948]|0}function yd(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;d=l;l=l+16|0;b=d;$B(a,73228)|0;if((c[a+64>>2]|0)==2)$B(a,73243)|0;else $B(a,150517)|0;g=c[c[a+12>>2]>>2]|0;f=c[g+4>>2]|0;e=c[g+8>>2]|0;c[b>>2]=c[g>>2];c[b+4>>2]=f;c[b+8>>2]=e;fC(a,73254,b);l=d;return}function zd(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;g=l;l=l+32|0;f=g+8|0;e=g;$B(a,73182)|0;d=a+64|0;b=a+12|0;if((c[d>>2]|0)!=2){c[e>>2]=c[(c[b>>2]|0)+28>>2];fC(a,73193,e)}if((c[(c[b>>2]|0)+20>>2]|0)==0?(c[d>>2]|0)!=2:0){b=c[a+476>>2]|0;d=c[a+480>>2]|0;e=c[a+484>>2]|0;c[f>>2]=c[a+472>>2];c[f+4>>2]=b;c[f+8>>2]=d;c[f+12>>2]=e;fC(a,69562,f)}$B(a,73208)|0;$B(a,73221)|0;l=g;return}function Ad(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;k=l;l=l+32|0;j=k+24|0;f=k+8|0;i=k;g=c[b+16>>2]|0;a[190688]=0;e=b+12|0;h=g+8|0;if(!(c[(c[e>>2]|0)+28>>2]|0)){c[i>>2]=ry(c[h>>2]|0)|0;fC(b,69493,i);d=b+64|0;if((c[d>>2]|0)==2)$B(b,69526)|0;else $B(b,69508)|0;do if(!(c[(c[e>>2]|0)+20>>2]|0))if((c[d>>2]|0)==2){n=c[b+460>>2]|0;m=c[b+464>>2]|0;d=c[b+468>>2]|0;c[f>>2]=c[b+456>>2];c[f+4>>2]=n;c[f+8>>2]=m;c[f+12>>2]=d;fC(b,69562,f);break}else{$B(b,69538)|0;break}while(0);$B(b,69592)|0;jJ(b,c[(c[e>>2]|0)+24>>2]|0,13e3);lJ(b);d=c[(c[e>>2]|0)+20>>2]|0;if(d|0){c[i>>2]=c[d>>2];c[i+4>>2]=0;jJ(b,0,i)}}c[45950]=(a[(c[(c[h>>2]|0)+16>>2]|0)+115>>0]|0)==1?1:-1;if(!(a[190688]|0)){$B(b,69612)|0;a[190688]=1}d=c[g+208>>2]|0;if(d|0){c[j>>2]=mJ(d,c[45950]|0)|0;fC(b,69625,j)}l=k;return}function Bd(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;b=l;l=l+16|0;f=b;c[f>>2]=d;c[f+4>>2]=e;fC(a,69477,f);l=b;return}function Cd(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0.0,v=0.0,w=0.0;s=l;l=l+144|0;r=s+128|0;q=s+112|0;p=s+72|0;o=s+56|0;n=s+40|0;m=s+32|0;e=s+24|0;b=s+8|0;d=s;f=c[a+456>>2]|0;j=c[a+460>>2]|0;g=c[a+464>>2]|0;i=c[a+468>>2]|0;k=a+12|0;t=(c[(c[k>>2]|0)+28>>2]|0)+1|0;c[d>>2]=t;c[d+4>>2]=t;fC(a,69104,d);if(!(c[(c[k>>2]|0)+20>>2]|0)){c[b>>2]=f;c[b+4>>2]=j;c[b+8>>2]=g;c[b+12>>2]=i;fC(a,69121,b)}d=a+360|0;c[e>>2]=c[d>>2]|0?69155:69165;fC(a,69174,e);b=a+64|0;if((c[b>>2]|0)==1){c[m>>2]=g;c[m+4>>2]=i;fC(a,69199,m)}m=c[a+200>>2]|0;t=c[a+204>>2]|0;c[n>>2]=c[a+196>>2];c[n+4>>2]=m;c[n+8>>2]=t;fC(a,69238,n);if(!(c[(c[k>>2]|0)+20>>2]|0)){c[o>>2]=f;c[o+4>>2]=j;c[o+8>>2]=g-f;c[o+12>>2]=i-j;fC(a,69258,o)}w=+h[a+496>>3];t=c[d>>2]|0;v=+h[a+504>>3];u=+h[a+512>>3];h[p>>3]=+h[a+488>>3];h[p+8>>3]=w;c[p+16>>2]=t;h[p+24>>3]=v;h[p+32>>3]=u;fC(a,69298,p);if((c[b>>2]|0)==1){if((g|0)>14399|(i|0)>14399){t=c[(c[k>>2]|0)+16>>2]|0;c[q>>2]=g;c[q+4>>2]=i;c[q+8>>2]=14400;ub[t&63](69341,q)}c[r>>2]=f;c[r+4>>2]=j;c[r+8>>2]=g;c[r+12>>2]=i;fC(a,69436,r)}l=s;return}function Dd(a){a=a|0;var b=0,d=0,e=0;e=l;l=l+16|0;d=e;b=a+12|0;if(c[(c[b>>2]|0)+20>>2]|0){$B(a,69028)|0;jJ(a,0,(c[(c[b>>2]|0)+20>>2]|0)+4|0)}$B(a,69045)|0;$B(a,69072)|0;c[d>>2]=c[(c[b>>2]|0)+28>>2];fC(a,69087,d);l=e;return}function Ed(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=ry(c[(c[a+16>>2]|0)+8>>2]|0)|0;fC(a,69021,d);$B(a,69014)|0;l=b;return}function Fd(a){a=a|0;$B(a,84457)|0;return}function Gd(a){a=a|0;$B(a,69014)|0;return}function Hd(a){a=a|0;$B(a,84457)|0;return}function Id(a){a=a|0;$B(a,69014)|0;return}function Jd(a){a=a|0;$B(a,84457)|0;return}function Kd(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0;e=l;l=l+16|0;d=e;if(b|0?(g=(c[a+16>>2]|0)+272|0,c[g>>2]|0):0){$B(a,68910)|0;jC(a,c[g>>2]|0,2);$B(a,68921)|0;c[d>>2]=mJ(b,c[45950]|0)|0;fC(a,68925,d)}l=e;return}function Ld(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0.0,i=0,j=0,k=0,m=0,n=0;m=l;l=l+32|0;j=m+8|0;k=m;f=c[b+16>>2]|0;if(!(+h[f+40>>3]<.5)){Sd(b,f+16|0);i=e+4|0;gC(b,+h[(c[i>>2]|0)+16>>3]);c[j>>2]=c[c[i>>2]>>2];fC(b,68869,j);i=mJ(c[e>>2]|0,c[45950]|0)|0;switch(a[e+48>>0]|0){case 114:{n=e+32|0;f=n;g=+h[n>>3];break}case 108:{f=e+32|0;g=0.0;break}default:{n=e+32|0;f=n;g=+h[n>>3]*.5}}h[d>>3]=+h[d>>3]-g;n=d+8|0;h[n>>3]=+h[n>>3]+ +h[e+24>>3];c[j>>2]=c[d>>2];c[j+4>>2]=c[d+4>>2];c[j+8>>2]=c[d+8>>2];c[j+12>>2]=c[d+12>>2];iC(b,j);$B(b,68884)|0;gC(b,+h[f>>3]);c[k>>2]=i;fC(b,68893,k)}l=m;return}function Md(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;g=l;l=l+32|0;f=g;c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];h[f+16>>3]=+h[b+16>>3]-+h[b>>3];h[f+24>>3]=+h[b+24>>3]-+h[b+8>>3];b=a+16|0;if(d|0?(e=c[b>>2]|0,+h[e+80>>3]>.5):0){Sd(a,e+56|0);jC(a,f,2);$B(a,68827)|0}if(+h[(c[b>>2]|0)+40>>3]>.5){Td(a);Sd(a,(c[b>>2]|0)+16|0);jC(a,f,2);$B(a,68847)|0}l=g;return}function Nd(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0;j=l;l=l+16|0;i=j;g=a+16|0;if(e|0?(f=c[g>>2]|0,+h[f+80>>3]>.5):0){Sd(a,f+56|0);$B(a,68748)|0;c[i>>2]=c[b>>2];c[i+4>>2]=c[b+4>>2];c[i+8>>2]=c[b+8>>2];c[i+12>>2]=c[b+12>>2];iC(a,i);$B(a,68757)|0;e=1;while(1){if((e|0)>=(d|0))break;f=b+(e<<4)|0;c[i>>2]=c[f>>2];c[i+4>>2]=c[f+4>>2];c[i+8>>2]=c[f+8>>2];c[i+12>>2]=c[f+12>>2];iC(a,i);$B(a,68766)|0;e=e+1|0}$B(a,68793)|0}if(+h[(c[g>>2]|0)+40>>3]>.5){Td(a);Sd(a,(c[g>>2]|0)+16|0);$B(a,68748)|0;c[i>>2]=c[b>>2];c[i+4>>2]=c[b+4>>2];c[i+8>>2]=c[b+8>>2];c[i+12>>2]=c[b+12>>2];iC(a,i);$B(a,68757)|0;e=1;while(1){if((e|0)>=(d|0))break;g=b+(e<<4)|0;c[i>>2]=c[g>>2];c[i+4>>2]=c[g+4>>2];c[i+8>>2]=c[g+8>>2];c[i+12>>2]=c[g+12>>2];iC(a,i);$B(a,68766)|0;e=e+1|0}$B(a,68809)|0}l=j;return}function Od(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0,j=0,k=0;k=l;l=l+16|0;f=k;i=a+16|0;if(g|0?(j=c[i>>2]|0,+h[j+80>>3]>.5):0){Sd(a,j+56|0);$B(a,68748)|0;c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];iC(a,f);$B(a,68757)|0;e=1;while(1){if((e|0)>=(d|0))break;jC(a,b+(e<<4)|0,3);$B(a,68783)|0;e=e+3|0}$B(a,68793)|0}if(+h[(c[i>>2]|0)+40>>3]>.5){Td(a);Sd(a,(c[i>>2]|0)+16|0);$B(a,68748)|0;c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];iC(a,f);$B(a,68757)|0;e=1;while(1){if((e|0)>=(d|0))break;jC(a,b+(e<<4)|0,3);$B(a,68783)|0;e=e+3|0}$B(a,68775)|0}l=k;return}function Pd(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,i=0;g=l;l=l+16|0;f=g;e=a+16|0;if(+h[(c[e>>2]|0)+40>>3]>.5){Td(a);Sd(a,(c[e>>2]|0)+16|0);$B(a,68748)|0;c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];iC(a,f);$B(a,68757)|0;e=1;while(1){if((e|0)>=(d|0))break;i=b+(e<<4)|0;c[f>>2]=c[i>>2];c[f+4>>2]=c[i+4>>2];c[f+8>>2]=c[i+8>>2];c[f+12>>2]=c[i+12>>2];iC(a,f);$B(a,68766)|0;e=e+1|0}$B(a,68775)|0}l=g;return}function Qd(a,b){a=a|0;b=b|0;$B(a,68745)|0;$B(a,b)|0;$B(a,150517)|0;return}function Rd(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+32|0;g=n+16|0;m=n+8|0;k=n;i=a+16|0;if(f|0?(j=c[i>>2]|0,+h[j+80>>3]>.5):0){Sd(a,j+56|0);$B(a,84352)|0;jC(a,d,e);$B(a,99578)|0;c[g>>2]=c[d>>2];c[g+4>>2]=c[d+4>>2];c[g+8>>2]=c[d+8>>2];c[g+12>>2]=c[d+12>>2];iC(a,g);c[k>>2]=e;c[k+4>>2]=b;fC(a,68662,k)}if(+h[(c[i>>2]|0)+40>>3]>.5){Td(a);Sd(a,(c[i>>2]|0)+16|0);$B(a,84352)|0;jC(a,d,e);$B(a,99578)|0;c[g>>2]=c[d>>2];c[g+4>>2]=c[d+4>>2];c[g+8>>2]=c[d+8>>2];c[g+12>>2]=c[d+12>>2];iC(a,g);c[m>>2]=e;c[m+4>>2]=b;fC(a,68678,m)}l=n;return}function Sd(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0.0,i=0.0;f=l;l=l+32|0;e=f;if(b|0){switch(c[(c[a+16>>2]|0)+4>>2]|0){case 1:case 0:{d=108412;break}case 2:{d=108399;break}case 3:{d=108368;break}default:d=68714}i=+h[b+8>>3];g=+h[b+16>>3];h[e>>3]=+h[b>>3];h[e+8>>3]=i;h[e+16>>3]=g;c[e+24>>2]=d;fC(a,68721,e)}l=f;return}function Td(b){b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0;m=l;l=l+16|0;k=m+8|0;j=m;g=b+16|0;i=c[g>>2]|0;d=c[i+160>>2]|0;gC(b,+h[i+152>>3]);$B(b,68695)|0;while(1){if(!d)break;i=d+4|0;f=c[d>>2]|0;if(!f)break;if(!(b$(f,108062)|0)){d=i;continue}else e=f;while(1){d=e+1|0;if(!(a[e>>0]|0))break;else e=d}a:while(1){if(!(a[d>>0]|0))break;c[j>>2]=d;fC(b,68710,j);while(1){e=d+1|0;if(!(a[d>>0]|0)){d=e;continue a}else d=e}}if(!(b$(f,131253)|0))h[(c[g>>2]|0)+152>>3]=0.0;c[k>>2]=f;fC(b,93588,k);d=i}l=m;return}function Ud(b){b=b|0;var d=0;$B(b,74734)|0;d=xx(c[(c[b>>2]|0)+168>>2]|0,74790)|0;if(d|0?a[d>>0]|0:0){$B(b,74801)|0;$B(b,d)|0;$B(b,74825)|0}$B(b,74846)|0;$B(b,74894)|0;$B(b,74948)|0;d=b+12|0;$B(b,qH(c[c[c[d>>2]>>2]>>2]|0)|0)|0;$B(b,78077)|0;$B(b,qH(c[(c[c[d>>2]>>2]|0)+4>>2]|0)|0)|0;$B(b,78087)|0;$B(b,qH(c[(c[c[d>>2]>>2]|0)+8>>2]|0)|0)|0;$B(b,75330)|0;$B(b,75354)|0;return}function Vd(b){b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0.0,k=0.0,m=0.0;i=l;l=l+48|0;g=i+16|0;f=i+8|0;e=i;d=c[b+16>>2]|0;$B(b,74569)|0;d=d+8|0;if(a[(ry(c[d>>2]|0)|0)>>0]|0){$B(b,75293)|0;$B(b,qH(ry(c[d>>2]|0)|0)|0)|0}c[e>>2]=O(c[b+168>>2]|0,c[b+164>>2]|0)|0;fC(b,74574,e);e=c[b+452>>2]|0;c[f>>2]=c[b+448>>2];c[f+4>>2]=e;fC(b,74590,f);m=+h[b+392>>3];k=+h[b+400>>3];j=+h[b+408>>3];h[g>>3]=+h[b+384>>3];h[g+8>>3]=m;h[g+16>>3]=k;h[g+24>>3]=j;fC(b,74623,g);$B(b,74654)|0;$B(b,74690)|0;$B(b,76284)|0;l=i;return}function Wd(a){a=a|0;$B(a,74561)|0;return}function Xd(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;se(a,b,0,98484,c[(c[a+16>>2]|0)+8>>2]|0);$B(a,76284)|0;return}function Yd(a){a=a|0;$B(a,74409)|0;return}function Zd(b){b=b|0;var d=0,e=0,f=0,g=0;e=l;l=l+16|0;f=e;g=c[b+16>>2]|0;d=g+8|0;se(b,c[g+212>>2]|0,0,108412,c[d>>2]|0);$B(b,74513)|0;gC(b,+h[b+488>>3]);$B(b,99578)|0;gC(b,+h[b+496>>3]);c[f>>2]=0-(c[b+360>>2]|0);fC(b,74532,f);gC(b,+h[b+504>>3]);$B(b,99578)|0;gC(b,-+h[b+512>>3]);$B(b,74556)|0;if(a[(ry(c[d>>2]|0)|0)>>0]|0){$B(b,74465)|0;$B(b,qH(ry(c[d>>2]|0)|0)|0)|0;$B(b,74473)|0}l=e;return}function _d(a){a=a|0;$B(a,74409)|0;return}function $d(a){a=a|0;var b=0,d=0;d=c[a+16>>2]|0;b=d+8|0;se(a,c[d+212>>2]|0,0,104980,c[b>>2]|0);$B(a,76284)|0;$B(a,74465)|0;$B(a,qH(ry(c[b>>2]|0)|0)|0)|0;$B(a,74473)|0;return}function ae(a){a=a|0;$B(a,74409)|0;return}function be(a){a=a|0;var b=0,d=0,e=0;d=c[a+16>>2]|0;b=c[a+160>>2]|0;if((b|0)>1)b=c[(c[(c[a>>2]|0)+308>>2]|0)+(b<<2)>>2]|0;else b=0;e=d+8|0;se(a,c[d+212>>2]|0,b,108399,c[e>>2]|0);$B(a,76284)|0;$B(a,74465)|0;$B(a,qH(ry(c[e>>2]|0)|0)|0)|0;$B(a,74473)|0;return}function ce(a){a=a|0;$B(a,74409)|0;return}function de(a){a=a|0;var b=0,d=0;d=c[a+16>>2]|0;b=d+8|0;se(a,c[d+212>>2]|0,0,108368,c[b>>2]|0);$B(a,76284)|0;$B(a,74465)|0;b=pH(99069,c[b>>2]|0)|0;$B(a,qH(b)|0)|0;D_(b);$B(a,74473)|0;return}function ee(a){a=a|0;$B(a,74409)|0;return}function fe(b,c,d,e,f){b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;$B(b,74415)|0;if(f|0){$B(b,74418)|0;$B(b,qH(f)|0)|0;$B(b,95669)|0}$B(b,74308)|0;$B(b,76245)|0;if(c|0?a[c>>0]|0:0){$B(b,74426)|0;$B(b,c)|0;$B(b,95669)|0}if(d|0?a[d>>0]|0:0){$B(b,74440)|0;$B(b,rH(d,1)|0)|0;$B(b,95669)|0}if(e|0?a[e>>0]|0:0){$B(b,74455)|0;$B(b,qH(e)|0)|0;$B(b,95669)|0}$B(b,76284)|0;return}function ge(a){a=a|0;$B(a,76239)|0;$B(a,74409)|0;return}function he(e,f,g){e=e|0;f=f|0;g=g|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0.0,H=0,I=0,J=0,K=0,L=0,M=0;M=l;l=l+176|0;L=M+160|0;K=M+152|0;F=M+136|0;J=M+128|0;E=M+120|0;D=M+112|0;C=M+104|0;B=M+96|0;A=M+88|0;y=M+80|0;w=M+72|0;v=M+64|0;u=M+56|0;t=M+48|0;i=M+40|0;q=M+32|0;s=M+24|0;r=M+16|0;p=M+8|0;o=M;I=c[e+16>>2]|0;$B(e,73940)|0;switch(a[g+48>>0]|0){case 108:{$B(e,73946)|0;break}case 114:{$B(e,73967)|0;break}default:$B(e,73986)|0}H=f+8|0;G=+h[H>>3]+ +h[g+24>>3];h[H>>3]=G;H=I+260|0;if(!(b[H>>1]&512)){$B(e,74008)|0;gC(e,+h[f>>3]);$B(e,74013)|0;gC(e,-G);$B(e,95669)|0}x=g+4|0;f=c[x>>2]|0;n=c[f+8>>2]|0;if(n){switch(c[(c[(c[(c[e>>2]|0)+168>>2]|0)+16>>2]|0)+244>>2]|0){case 1:{m=n;f=n+16|0;i=n+8|0;break}case 2:{m=n+24|0;f=n+32|0;i=n+28|0;break}default:{m=n+4|0;f=n+16|0;i=n+8|0}}j=c[f>>2]|0;f=c[i>>2]|0;k=c[n+12>>2]|0;c[o>>2]=c[m>>2];fC(e,74019,o);i=c[n+24>>2]|0;if(i|0){c[p>>2]=i;fC(e,74036,p)}$B(e,95669)|0;if(f|0){c[r>>2]=f;fC(e,74040,r)}if(k|0){c[s>>2]=k;fC(e,74058,s)}if(!j)j=0;else{c[q>>2]=j;fC(e,74077,q)}}else{c[i>>2]=c[f>>2];fC(e,74094,i);j=0;f=0}i=c[x>>2]|0;if(i|0?(z=c[i+24>>2]|0,z&127|0):0){if(!((f|0)!=0|(z&1|0)==0))fC(e,74112,t);if(!((j|0)!=0|(z&2|0)==0))fC(e,74132,u);if(z&100|0){fC(e,74153,v);if(!(z&4))f=0;else{fC(e,102960,w);f=1}if(z&64){c[y>>2]=f|0?97973:191979;fC(e,74172,y);f=1}if(z&32|0){c[A>>2]=f|0?97973:191979;fC(e,74183,A)}fC(e,95669,B)}if(z&8|0)fC(e,74198,C);if(z&16|0)fC(e,74222,D)}h[E>>3]=+h[(c[x>>2]|0)+16>>3];fC(e,74244,E);f=I+16|0;switch(c[I+48>>2]|0){case 5:{f=c[f>>2]|0;if(O$(f,134232)|0){c[J>>2]=f;fC(e,74262,J)}break}case 1:{E=d[f+1>>0]|0;J=d[f+2>>0]|0;c[F>>2]=d[f>>0];c[F+4>>2]=E;c[F+8>>2]=J;fC(e,74273,F);break}default:qa(135312,73454,486,74295)}$B(e,74308)|0;if(b[H>>1]&512){c[K>>2]=qH(c[I+212>>2]|0)|0;fC(e,74310,K);$B(e,74359)|0;gC(e,-G);$B(e,74377)|0}$B(e,rH(c[g>>2]|0,1)|0)|0;if(b[H>>1]&512)fC(e,74380,L);$B(e,74400)|0;l=M;return}function ie(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;switch(c|0){case 2:{d=pe(a,b,2)|0;break}case 3:{d=qe(a)|0;break}default:d=0}$B(a,73904)|0;ne(a,c,d);$B(a,73913)|0;gC(a,+h[b>>3]);$B(a,73919)|0;c=b+8|0;gC(a,-+h[c>>3]);$B(a,73926)|0;gC(a,+h[b+16>>3]-+h[b>>3]);$B(a,73933)|0;gC(a,+h[b+24>>3]-+h[c>>3]);$B(a,73320)|0;return}function je(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;switch(d|0){case 2:{e=pe(a,b,c)|0;break}case 3:{e=qe(a)|0;break}default:e=0}$B(a,73895)|0;ne(a,d,e);$B(a,73310)|0;e=0;while(1){if((e|0)>=(c|0))break;gC(a,+h[b+(e<<4)>>3]);$B(a,97973)|0;gC(a,-+h[b+(e<<4)+8>>3]);$B(a,99578)|0;e=e+1|0}gC(a,+h[b>>3]);$B(a,97973)|0;gC(a,-+h[b+8>>3]);$B(a,73320)|0;return}function ke(a,d,e,f,g,h){a=a|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;g=c[a+16>>2]|0;switch(h|0){case 2:{f=pe(a,d,e)|0;break}case 3:{f=qe(a)|0;break}default:f=0}$B(a,73490)|0;if(b[g+260>>1]&512){$B(a,73496)|0;$B(a,qH(c[g+212>>2]|0)|0)|0;$B(a,73502)|0}ne(a,h,f);$B(a,73507)|0;re(a,d,e);$B(a,73320)|0;return}function le(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;$B(a,73300)|0;ne(a,0,0);$B(a,73310)|0;d=0;while(1){if((d|0)>=(c|0))break;gC(a,+h[b+(d<<4)>>3]);$B(a,97973)|0;gC(a,-+h[b+(d<<4)+8>>3]);$B(a,99578)|0;d=d+1|0}$B(a,73320)|0;return}function me(a,b){a=a|0;b=b|0;$B(a,73294)|0;$B(a,qH(b)|0)|0;$B(a,75354)|0;return}function ne(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;q=l;l=l+96|0;k=q+48|0;p=q+40|0;n=q+32|0;o=q+24|0;j=q+16|0;g=q+8|0;f=q;m=c[b+16>>2]|0;$B(b,73325)|0;a:do switch(d|0){case 2:{c[f>>2]=e;fC(b,73333,f);break}case 3:{c[g>>2]=e;fC(b,73344,g);break}case 0:{$B(b,132627)|0;break}default:{d=m+56|0;f=k;g=d;i=f+40|0;do{c[f>>2]=c[g>>2];f=f+4|0;g=g+4|0}while((f|0)<(i|0));oe(b,k);if((c[m+88>>2]|0)==1){d=a[d+3>>0]|0;switch(d<<24>>24){case -1:case 0:break a;default:{}}h[j>>3]=+(d&255)*.00392156862745098;fC(b,73355,j)}}}while(0);$B(b,73374)|0;e=m+16|0;f=k;g=e;i=f+40|0;do{c[f>>2]=c[g>>2];f=f+4|0;g=g+4|0}while((f|0)<(i|0));oe(b,k);d=m+152|0;if(+h[d>>3]!=1.0){$B(b,73385)|0;gC(b,+h[d>>3])}switch(c[m+144>>2]|0){case 1:{c[o>>2]=73425;fC(b,73402,o);break}case 2:{c[n>>2]=73429;fC(b,73402,n);break}default:{}}b:do if((c[m+48>>2]|0)==1){d=a[e+3>>0]|0;switch(d<<24>>24){case -1:case 0:break b;default:{}}h[p>>3]=+(d&255)*.00392156862745098;fC(b,73433,p)}while(0);$B(b,95669)|0;l=q;return}function oe(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0;g=l;l=l+16|0;f=g;a:do switch(c[e+32>>2]|0){case 5:{$B(b,c[e>>2]|0)|0;break}case 1:if(!(a[e+3>>0]|0)){$B(b,134297)|0;break a}else{i=d[e+1>>0]|0;h=d[e+2>>0]|0;c[f>>2]=d[e>>0];c[f+4>>2]=i;c[f+8>>2]=h;fC(b,75610,f);break a}default:qa(135312,73454,117,73474)}while(0);l=g;return}function pe(b,d,e){b=b|0;d=d|0;e=e|0;var f=0.0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=l;l=l+112|0;o=t+64|0;r=t+56|0;n=t+48|0;m=t+40|0;i=t+32|0;k=t;q=c[45952]|0;c[45952]=q+1;p=c[b+16>>2]|0;f=+(c[p+136>>2]|0)*.017453292519943295;c[k>>2]=0;c[k+4>>2]=0;c[k+8>>2]=0;c[k+12>>2]=0;c[k+16>>2]=0;c[k+20>>2]=0;c[k+24>>2]=0;c[k+28>>2]=0;aN(d,k,e,f,0);c[o>>2]=q;fC(b,73727,o);$B(b,73792)|0;gC(b,+h[k>>3]);$B(b,73797)|0;gC(b,+h[k+8>>3]);$B(b,73804)|0;gC(b,+h[k+16>>3]);$B(b,73811)|0;gC(b,+h[k+24>>3]);$B(b,73818)|0;k=p+140|0;f=+g[k>>2];if(f>0.0){h[i>>3]=f+-.001;fC(b,73823,i)}else $B(b,73599)|0;d=p+56|0;e=o;i=d;j=e+40|0;do{c[e>>2]=c[i>>2];e=e+4|0;i=i+4|0}while((e|0)<(j|0));oe(b,o);$B(b,73635)|0;a:do if((c[p+88>>2]|0)==1){d=a[d+3>>0]|0;switch(d<<24>>24){case -1:case 0:{s=7;break a}default:{}}h[m>>3]=+(d&255)*.00392156862745098;fC(b,96586,m)}else s=7;while(0);if((s|0)==7)$B(b,73650)|0;$B(b,73653)|0;f=+g[k>>2];if(f>0.0){h[n>>3]=f;fC(b,73823,n)}else $B(b,73659)|0;d=p+96|0;e=o;i=d;j=e+40|0;do{c[e>>2]=c[i>>2];e=e+4|0;i=i+4|0}while((e|0)<(j|0));oe(b,o);$B(b,73635)|0;b:do if((c[p+128>>2]|0)==1){d=a[d+3>>0]|0;switch(d<<24>>24){case -1:case 0:{s=14;break b}default:{}}h[r>>3]=+(d&255)*.00392156862745098;fC(b,96586,r)}else s=14;while(0);if((s|0)==14)$B(b,73650)|0;$B(b,73863)|0;l=t;return q|0}function qe(b){b=b|0;var d=0,e=0.0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0.0;q=l;l=l+64|0;k=q+16|0;o=q+8|0;j=q;n=c[45951]|0;c[45951]=n+1;m=c[b+16>>2]|0;r=+(c[m+136>>2]|0)*.017453292519943295;e=r;if(r==0.0){f=50;d=50}else{f=~~((+E(+e)+1.0)*50.0);d=~~((1.0-+F(+e))*50.0)}c[k>>2]=n;c[k+4>>2]=f;c[k+8>>2]=d;fC(b,73515,k);$B(b,73599)|0;d=m+56|0;f=k;g=d;i=f+40|0;do{c[f>>2]=c[g>>2];f=f+4|0;g=g+4|0}while((f|0)<(i|0));oe(b,k);$B(b,73635)|0;a:do if((c[m+88>>2]|0)==1){d=a[d+3>>0]|0;switch(d<<24>>24){case -1:case 0:{p=6;break a}default:{}}h[j>>3]=+(d&255)*.00392156862745098;fC(b,96586,j)}else p=6;while(0);if((p|0)==6)$B(b,73650)|0;$B(b,73653)|0;$B(b,73659)|0;d=m+96|0;f=k;g=d;i=f+40|0;do{c[f>>2]=c[g>>2];f=f+4|0;g=g+4|0}while((f|0)<(i|0));oe(b,k);$B(b,73635)|0;b:do if((c[m+128>>2]|0)==1){d=a[d+3>>0]|0;switch(d<<24>>24){case -1:case 0:{p=10;break b}default:{}}h[o>>3]=+(d&255)*.00392156862745098;fC(b,96586,o)}else p=10;while(0);if((p|0)==10)$B(b,73650)|0;$B(b,73695)|0;l=q;return n|0}function re(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,i=0;i=l;l=l+16|0;g=i;e=77;f=0;while(1){if((f|0)>=(d|0))break;c[g>>2]=e;fC(a,73512,g);gC(a,+h[b+(f<<4)>>3]);$B(a,97973)|0;gC(a,-+h[b+(f<<4)+8>>3]);e=(f|0)==0?67:32;f=f+1|0}l=i;return}function se(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;j=l;l=l+16|0;i=j+8|0;h=j;$B(b,74483)|0;$B(b,qH(d)|0)|0;if(e|0){c[h>>2]=qH(e)|0;fC(b,74491,h)}c[i>>2]=f;fC(b,74495,i);d=xx(g,74507)|0;if(d|0?a[d>>0]|0:0){$B(b,99578)|0;$B(b,qH(d)|0)|0}$B(b,95669)|0;l=j;return}function te(a){a=a|0;var b=0;$B(a,75314)|0;b=a+12|0;$B(a,De(c[c[c[b>>2]>>2]>>2]|0)|0)|0;$B(a,78077)|0;$B(a,De(c[(c[c[b>>2]>>2]|0)+4>>2]|0)|0)|0;$B(a,78087)|0;$B(a,De(c[(c[c[b>>2]>>2]|0)+8>>2]|0)|0)|0;$B(a,75330)|0;return}function ue(b){b=b|0;var d=0,e=0,f=0;f=l;l=l+16|0;e=f;d=c[b+16>>2]|0;$B(b,75291)|0;d=d+8|0;if(a[(ry(c[d>>2]|0)|0)>>0]|0){$B(b,75293)|0;$B(b,De(ry(c[d>>2]|0)|0)|0)|0}c[e>>2]=O(c[b+168>>2]|0,c[b+164>>2]|0)|0;fC(b,75302,e);c[45953]=0;l=f;return}function ve(a){a=a|0;c[45953]=1;return}function we(a){a=a|0;c[45953]=-1;return}function xe(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+48|0;i=n+8|0;m=n;f=c[b+16>>2]|0;if(c[f+144>>2]|0?(k=e+4|0,j=~~(+h[b+352>>3]*+h[(c[k>>2]|0)+16>>3]),j|0):0){Ee(b);$B(b,75230)|0;g=d+8|0;h[g>>3]=+h[g>>3]-+(j|0)*.55;c[i>>2]=c[d>>2];c[i+4>>2]=c[d+4>>2];c[i+8>>2]=c[d+8>>2];c[i+12>>2]=c[d+12>>2];iC(b,i);$B(b,75244)|0;$B(b,c[e>>2]|0)|0;$B(b,75253)|0;$B(b,75051)|0;g=i;d=f+16|0;f=g+40|0;do{c[g>>2]=c[d>>2];g=g+4|0;d=d+4|0}while((g|0)<(f|0));Fe(b,i);$B(b,75255)|0;i=c[k>>2]|0;k=c[i+8>>2]|0;k=c[((k|0)==0?i:k+4|0)>>2]|0;$B(b,95669)|0;$B(b,k)|0;$B(b,95669)|0;c[m>>2]=j;fC(b,75264,m);switch(a[e+48>>0]|0){case 108:{$B(b,75269)|0;break}case 114:{$B(b,75280)|0;break}default:{}}Ge(b);$B(b,150517)|0}l=n;return}function ye(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0.0,m=0.0,n=0.0;j=l;l=l+48|0;f=j;g=c[a+16>>2]|0;i=g+144|0;if(c[i>>2]|0){n=+h[b>>3];m=+h[b+24>>3];e=b+8|0;k=+h[e>>3];h[b>>3]=n-+h[b+16>>3]+n;h[e>>3]=k-m+k;Ee(a);$B(a,75216)|0;jC(a,b,2);$B(a,75051)|0;do if(!d)if(!(c[45953]|0)){$B(a,94227)|0;break}else{$B(a,134116)|0;break}else{b=f;d=g+56|0;e=b+40|0;do{c[b>>2]=c[d>>2];b=b+4|0;d=d+4|0}while((b|0)<(e|0));Fe(a,f)}while(0);if((c[45953]|0)==1)c[45953]=0;$B(a,75162)|0;gC(a,+h[g+152>>3]);$B(a,75205)|0;b=f;d=g+16|0;e=b+40|0;do{c[b>>2]=c[d>>2];b=b+4|0;d=d+4|0}while((b|0)<(e|0));Fe(a,f);b=c[i>>2]|0;if((b|0)==1){$B(a,75059)|0;b=c[i>>2]|0}if((b|0)==2)$B(a,75068)|0;Ge(a);$B(a,150517)|0}l=j;return}function ze(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0;j=l;l=l+48|0;f=j;g=c[a+16>>2]|0;i=g+144|0;if(c[i>>2]|0){Ee(a);$B(a,75188)|0;jC(a,b,d);$B(a,75051)|0;do if(!e)if(!(c[45953]|0)){$B(a,94227)|0;break}else{$B(a,134116)|0;break}else{b=f;d=g+56|0;e=b+40|0;do{c[b>>2]=c[d>>2];b=b+4|0;d=d+4|0}while((b|0)<(e|0));Fe(a,f)}while(0);if((c[45953]|0)==1)c[45953]=0;$B(a,75162)|0;gC(a,+h[g+152>>3]);$B(a,75205)|0;b=f;d=g+16|0;e=b+40|0;do{c[b>>2]=c[d>>2];b=b+4|0;d=d+4|0}while((b|0)<(e|0));Fe(a,f);b=c[i>>2]|0;if((b|0)==1){$B(a,75059)|0;b=c[i>>2]|0}if((b|0)==2)$B(a,75068)|0;Ge(a);$B(a,150517)|0}l=j;return}function Ae(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0,j=0,k=0,m=0;m=l;l=l+48|0;i=m;j=c[a+16>>2]|0;k=j+144|0;if(c[k>>2]|0){Ee(a);$B(a,75037)|0;jC(a,b,d);$B(a,75051)|0;e=i;f=j+16|0;g=e+40|0;do{c[e>>2]=c[f>>2];e=e+4|0;f=f+4|0}while((e|0)<(g|0));Fe(a,i);$B(a,75162)|0;gC(a,+h[j+152>>3]);e=c[k>>2]|0;if((e|0)==1){$B(a,75059)|0;e=c[k>>2]|0}if((e|0)==2)$B(a,75068)|0;$B(a,75171)|0;Ge(a);$B(a,150517)|0}l=m;return}function Be(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;i=l;l=l+48|0;g=i;e=c[a+16>>2]|0;h=e+144|0;if(c[h>>2]|0){Ee(a);$B(a,75037)|0;jC(a,b,d);$B(a,75051)|0;f=g;b=e+16|0;d=f+40|0;do{c[f>>2]=c[b>>2];f=f+4|0;b=b+4|0}while((f|0)<(d|0));Fe(a,g);b=c[h>>2]|0;if((b|0)==1){$B(a,75059)|0;b=c[h>>2]|0}if((b|0)==2)$B(a,75068)|0;Ge(a);$B(a,150517)|0}l=i;return}function Ce(a,b){a=a|0;b=b|0;$B(a,75034)|0;$B(a,De(b)|0)|0;$B(a,150517)|0;return}function De(a){a=a|0;return a|0}function Ee(b){b=b|0;if(!(a[b+144>>0]|0))$B(b,75159)|0;else $B(b,c[b+148>>2]|0)|0;return}function Fe(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0;g=l;l=l+16|0;f=g;a:do switch(c[e+32>>2]|0){case 5:{$B(b,c[e>>2]|0)|0;break}case 1:if(!(a[e+3>>0]|0)){$B(b,94227)|0;break a}else{i=d[e+1>>0]|0;h=d[e+2>>0]|0;c[f>>2]=d[e>>0];c[f+4>>2]=i;c[f+8>>2]=h;fC(b,75610,f);break a}default:qa(135312,75077,49,75141)}while(0);l=g;return}function Ge(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;h=l;l=l+16|0;g=h;f=c[a+16>>2]|0;switch(c[f+12>>2]|0){case 8:{b=1;d=108399;e=f+8|0;break}case 10:{b=0;d=108399;e=f+8|0;break}case 3:case 2:case 9:{b=1;d=108368;e=f+8|0;break}case 7:case 6:case 11:{b=0;d=108368;e=f+8|0;break}case 0:{b=1;d=108412;e=f+8|0;break}case 4:{b=0;d=75113;e=f+8|0;break}case 1:{b=1;d=108412;e=f+8|0;break}case 5:{b=0;d=108412;e=f+8|0;break}default:qa(135312,75077,106,75096)}f=c[(c[e>>2]|0)+8>>2]|0;c[g>>2]=b;c[g+4>>2]=d;c[g+8>>2]=f;fC(a,75125,g);l=h;return}function He(a){a=a|0;var b=0;$B(a,78049)|0;$B(a,78057)|0;b=a+12|0;$B(a,Se(c[c[c[b>>2]>>2]>>2]|0)|0)|0;$B(a,78077)|0;$B(a,Se(c[(c[c[b>>2]>>2]|0)+4>>2]|0)|0)|0;$B(a,78087)|0;$B(a,Se(c[(c[c[b>>2]>>2]|0)+8>>2]|0)|0)|0;$B(a,78090)|0;return}function Ie(b){b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0;j=l;l=l+32|0;i=j+24|0;g=j+16|0;f=j+8|0;e=j;d=c[b+16>>2]|0;c[45957]=~~(+h[b+232>>3]-+h[b+216>>3]);c[45956]=~~(+h[b+224>>3]-+h[b+208>>3]);$B(b,76736)|0;$B(b,76743)|0;d=ry(c[d+8>>2]|0)|0;if(a[d>>0]|0){$B(b,76812)|0;$B(b,Se(d)|0)|0;$B(b,76820)|0}c[e>>2]=O(c[b+168>>2]|0,c[b+164>>2]|0)|0;fC(b,76829,e);$B(b,76849)|0;$B(b,76884)|0;$B(b,76912)|0;$B(b,76918)|0;$B(b,76961)|0;$B(b,77002)|0;$B(b,77021)|0;$B(b,77038)|0;$B(b,77086)|0;$B(b,77139)|0;$B(b,77215)|0;$B(b,77291)|0;$B(b,77300)|0;$B(b,77323)|0;$B(b,77350)|0;$B(b,77403)|0;$B(b,77425)|0;$B(b,77470)|0;$B(b,77482)|0;$B(b,77492)|0;$B(b,77518)|0;$B(b,77403)|0;$B(b,77570)|0;$B(b,77470)|0;$B(b,77482)|0;$B(b,77614)|0;$B(b,77323)|0;$B(b,77350)|0;$B(b,77403)|0;$B(b,77570)|0;$B(b,77470)|0;$B(b,77482)|0;$B(b,77492)|0;$B(b,77518)|0;$B(b,77403)|0;$B(b,77425)|0;$B(b,77470)|0;$B(b,77482)|0;$B(b,77627)|0;$B(b,77635)|0;$B(b,77641)|0;$B(b,77655)|0;$B(b,77663)|0;$B(b,77696)|0;e=(c[45957]|0)+10|0;c[f>>2]=c[45956];c[f+4>>2]=e;fC(b,77773,f);$B(b,77803)|0;$B(b,77812)|0;$B(b,77870)|0;$B(b,77880)|0;$B(b,77945)|0;f=c[45957]|0;c[g>>2]=c[45956];c[g+4>>2]=f;fC(b,77982,g);g=c[45957]|0;c[i>>2]=c[45956];c[i+4>>2]=g;fC(b,78010,i);l=j;return}function Je(a){a=a|0;$B(a,76287)|0;$B(a,76299)|0;$B(a,76307)|0;$B(a,76370)|0;$B(a,76299)|0;$B(a,76415)|0;$B(a,76464)|0;$B(a,76518)|0;$B(a,76299)|0;$B(a,76618)|0;$B(a,76667)|0;$B(a,76299)|0;$B(a,76719)|0;return}function Ke(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;j=l;l=l+32|0;i=j+16|0;h=j+8|0;g=j;$B(b,76245)|0;if(d|0?a[d>>0]|0:0){c[g>>2]=Se(d)|0;fC(b,76248,g)}if(e|0?a[e>>0]|0:0){c[h>>2]=Se(e)|0;fC(b,76259,h)}if(f|0?a[f>>0]|0:0){c[i>>2]=Se(f)|0;fC(b,76271,i)}$B(b,76284)|0;l=j;return}function Le(a){a=a|0;$B(a,76239)|0;return}function Me(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,i=0.0,j=0.0,k=0.0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0.0;A=l;l=l+112|0;y=A+96|0;z=A+88|0;w=A+80|0;q=A+72|0;v=A+64|0;t=A+56|0;s=A+48|0;r=A+40|0;p=A+24|0;o=A+8|0;n=A;x=c[b+16>>2]|0;switch(a[f+48>>0]|0){case 108:{j=+h[e>>3];m=+h[f+32>>3];break}case 114:{m=+h[f+32>>3];j=+h[e>>3]-m;break}default:{m=+h[f+32>>3];j=+h[e>>3]-m*.5}}g=f+40|0;i=+h[g>>3];u=f+4|0;k=+h[(c[u>>2]|0)+16>>3];if(i>3]=i}B=j+-8.0;k=+((c[45957]|0)>>>0)-+h[e+8>>3]-i+k*.2+(k<12.0?1.4:2.0);fC(b,75901,n);h[o>>3]=B;h[o+8>>3]=k;fC(b,75838,o);h[p>>3]=j+8.0+m-B;h[p+8>>3]=i;fC(b,75862,p);$B(b,75936)|0;$B(b,75970)|0;g=c[u>>2]|0;e=c[g+8>>2]|0;if(e){c[r>>2]=c[e+4>>2];fC(b,76060,r);g=c[e+8>>2]|0;if(g|0){c[s>>2]=g;fC(b,76079,s)}g=c[e+12>>2]|0;if(g|0){c[t>>2]=g;fC(b,76096,t)}g=c[e+16>>2]|0;if(g|0){c[v>>2]=g;fC(b,76114,v)}}else{c[q>>2]=c[g>>2];fC(b,76060,q)}h[w>>3]=+h[(c[u>>2]|0)+16>>3];fC(b,76130,w);g=x+16|0;switch(c[x+48>>2]|0){case 5:{g=c[g>>2]|0;if(O$(g,134232)|0){c[z>>2]=g;fC(b,76150,z)}break}case 1:{x=d[g+1>>0]|0;z=d[g+2>>0]|0;c[y>>2]=d[g>>0];c[y+4>>2]=x;c[y+8>>2]=z;fC(b,76160,y);break}default:qa(135312,75624,438,76181)}$B(b,76194)|0;$B(b,Se(c[f>>2]|0)|0)|0;$B(b,76205)|0;$B(b,76228)|0;l=A;return}function Ne(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0.0,i=0.0,j=0,k=0.0,m=0.0;e=l;l=l+32|0;f=e+16|0;j=e;$B(a,75802)|0;m=+h[b>>3];i=+h[b+16>>3]-m;k=+h[b+24>>3];g=k-+h[b+8>>3];k=+((c[45957]|0)>>>0)-k;h[j>>3]=m-i;h[j+8>>3]=k;fC(a,75838,j);h[f>>3]=i*2.0;h[f+8>>3]=g*2.0;fC(a,75862,f);We(a,d);$B(a,75684)|0;Ue(a);$B(a,75890)|0;l=e;return}function Oe(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,g=0,i=0.0,j=0,k=0,m=0,n=0;m=l;l=l+48|0;k=m+24|0;j=m+8|0;g=m;$B(a,75407)|0;n=c[45957]|0;c[g>>2]=c[45956];c[g+4>>2]=n;fC(a,75660,g);We(a,e);$B(a,75684)|0;Ue(a);$B(a,75687)|0;g=d+-1|0;e=0;while(1){if((e|0)>=(d|0))break;i=+h[b+(e<<4)>>3];f=+((c[45957]|0)>>>0)-+h[b+(e<<4)+8>>3];if(!e){$B(a,75714)|0;h[j>>3]=i;h[j+8>>3]=f;fC(a,75780,j);$B(a,75791)|0}else{h[k>>3]=i;h[k+8>>3]=f;fC(a,75780,k)}if((e|0)==(g|0))$B(a,75794)|0;e=e+1|0}$B(a,75523)|0;l=m;return}function Pe(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0;f=l;l=l+16|0;e=f;$B(a,75407)|0;h=c[45957]|0;c[e>>2]=c[45956];c[e+4>>2]=h;fC(a,75660,e);We(a,g);$B(a,75684)|0;Ue(a);$B(a,75687)|0;Xe(a,b,d);$B(a,75700)|0;l=f;return}function Qe(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,m=0.0;k=l;l=l+48|0;j=k+24|0;i=k+8|0;f=k;$B(a,75407)|0;g=c[45957]|0;c[f>>2]=c[45956];c[f+4>>2]=g;fC(a,75444,f);$B(a,75484)|0;f=d+-1|0;g=b+8|0;e=0;while(1){if((e|0)>=(d|0))break;if(!e){$B(a,75496)|0;m=+((c[45957]|0)>>>0)-+h[g>>3];h[i>>3]=+h[b>>3];h[i+8>>3]=m;fC(a,75500,i);$B(a,75511)|0}else{m=+((c[45957]|0)>>>0)-+h[b+(e<<4)+8>>3];h[j>>3]=+h[b+(e<<4)>>3];h[j+8>>3]=m;fC(a,75500,j)}if((e|0)==(f|0))$B(a,75515)|0;e=e+1|0}$B(a,75519)|0;Ue(a);$B(a,75523)|0;l=k;return}function Re(a,b){a=a|0;b=b|0;$B(a,75342)|0;$B(a,Se(b)|0)|0;$B(a,75354)|0;return}function Se(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=l;l=l+16|0;e=u;d=c[45954]|0;if(!d){c[45955]=64;d=vH(64)|0;c[45954]=d}s=e+15|0;r=e+14|0;g=0;q=0;o=0;e=0;f=0;a:while(1){n=(o|0)!=0;k=g;p=b;j=e;b:while(1){if(!p){t=32;break a}e=a[p>>0]|0;if(!(e<<24>>24)){t=32;break a}b=c[45955]|0;if((q|0)>(b+-8|0)){d=b<<1;c[45955]=d;d=xH(c[45954]|0,d)|0;c[45954]=d;d=d+q|0;e=a[p>>0]|0}switch(e<<24>>24){case 60:{e=4;b=99127;t=26;break b}case 62:{e=4;b=99110;t=27;break b}case 38:{t=10;break b}case 45:{e=5;b=99121;i=j;break b}default:{}}if(n&e<<24>>24==32){t=12;break}switch(e<<24>>24){case 34:{e=6;b=99090;t=26;break b}case 39:{e=5;b=99115;t=27;break b}default:{}}if(e<<24>>24<0){i=127;b=0}else{e=1;b=p;t=26;break}while(1){g=i&255;h=e&255;if(g>>>0>=h>>>0)break;e=i&h&255;i=g>>>1;b=b+1|0}if((b|0)<=1){g=A3(j|0,f|0,6)|0;g=s3(g|0,z|0,e&255|0,0)|0;f=z;m=k+-1|0;if((k|0)>1){b=m;e=g}else{t=21;break}}else{b=b+-1|0;e=e&255;f=0}k=b;p=p+1|0;j=e}if((t|0)==10){t=0;b=(Te(p)|0)==0;e=b?5:1;b=b?99104:p;i=j}else if((t|0)==12){t=0;b=(a[o>>0]|0)==32;e=b?6:1;b=b?99097:p;i=j}else if((t|0)==21){t=0;a[s>>0]=59;e=3;h=r;i=g;j=f;while(1){b=x3(i|0,j|0,10,0)|0;g=h+-1|0;a[h>>0]=b|48;b=i;i=w3(i|0,j|0,10,0)|0;f=j;j=z;o=e;e=e+1|0;if((o|0)>11){t=23;break a}if(!(f>>>0>0|(f|0)==0&b>>>0>9))break;else h=g}b=h+-2|0;a[g>>0]=35;a[b>>0]=38;k=m;f=j}else if((t|0)==26){t=0;i=j}else if((t|0)==27){t=0;i=j}h=d+e|0;g=e;while(1){if(!g)break;a[d>>0]=a[b>>0]|0;g=g+-1|0;b=b+1|0;d=d+1|0}g=k;b=p+1|0;q=e+q|0;o=p;d=h;e=i}if((t|0)==23){E1(75360,46,1,c[15686]|0)|0;Sa(1)}else if((t|0)==32){a[d>>0]=0;l=u;return c[45954]|0}return 0}function Te(b){b=b|0;var c=0,d=0;d=b+1|0;c=a[d>>0]|0;a:do if(c<<24>>24==35){d=b+2|0;c=a[d>>0]|0;switch(c<<24>>24){case 88:case 120:break;default:{b=d;while(1){d=b+1|0;if((c+-48&255)>=10)break a;b=d;c=a[d>>0]|0}}}d=b+3|0;while(1){c=a[d>>0]|0;if((c+-48&255)>=10)switch(c<<24>>24){case 65:case 66:case 67:case 68:case 69:case 70:case 97:case 98:case 99:case 100:case 101:case 102:break;default:break a}d=d+1|0}}else while(1){b=d+1|0;if(((c&-33)+-65&255)>=26)break a;d=b;c=a[b>>0]|0}while(0);return c<<24>>24==59|0}function Ue(a){a=a|0;var b=0.0,d=0,e=0,f=0,g=0,i=0,j=0,k=0;k=l;l=l+48|0;d=k+8|0;j=k;i=c[a+16>>2]|0;$B(a,75535)|0;e=d;f=i+16|0;g=e+40|0;do{c[e>>2]=c[f>>2];e=e+4|0;f=f+4|0}while((e|0)<(g|0));Ve(a,d);b=+h[i+152>>3];if(b!=1.0){h[j>>3]=b;fC(a,75553,j)}switch(c[i+144>>2]|0){case 1:{$B(a,75570)|0;break}case 2:{$B(a,75588)|0;break}default:{}}$B(a,75605)|0;l=k;return}function Ve(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0;g=l;l=l+16|0;f=g;a:do switch(c[e+32>>2]|0){case 5:{$B(b,c[e>>2]|0)|0;break}case 1:if(!(a[e+3>>0]|0)){$B(b,132627)|0;break a}else{i=d[e+1>>0]|0;h=d[e+2>>0]|0;c[f>>2]=d[e>>0];c[f+4>>2]=i;c[f+8>>2]=h;fC(b,75610,f);break a}default:qa(135312,75624,94,75644)}while(0);l=g;return}function We(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=l;l=l+48|0;f=g;if(!b)$B(a,75763)|0;else{d=c[a+16>>2]|0;$B(a,75733)|0;b=f;d=d+56|0;e=b+40|0;do{c[b>>2]=c[d>>2];b=b+4|0;d=d+4|0}while((b|0)<(e|0));Ve(a,f);$B(a,75760)|0}l=g;return}function Xe(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0.0,k=0.0;i=l;l=l+32|0;g=i;e=75714;f=0;while(1){if((f|0)>=(d|0))break;k=+h[b+(f<<4)>>3];j=+((c[45957]|0)>>>0)-+h[b+(f<<4)+8>>3];c[g>>2]=e;h[g+8>>3]=k;h[g+16>>3]=j;fC(a,75717,g);e=(f|0)==0?75730:191979;f=f+1|0}$B(a,95669)|0;l=i;return}function Ye(a){a=a|0;var b=0,d=0,e=0;b=l;l=l+16|0;d=b+8|0;e=b;$B(a,80347)|0;$B(a,80362)|0;$B(a,80401)|0;$B(a,80450)|0;c[e>>2]=134232;c[e+4>>2]=80538;fC(a,80519,e);c[d>>2]=134116;c[d+4>>2]=80544;fC(a,80519,d);l=b;return}function Ze(a){a=a|0;var b=0,d=0,e=0.0,f=0.0,g=0.0,i=0.0,j=0;b=l;l=l+64|0;d=b+8|0;j=b;c[j>>2]=ry(c[(c[a+16>>2]|0)+8>>2]|0)|0;fC(a,79300,j);i=+h[a+368>>3]*.5*+h[a+488>>3];g=+h[a+376>>3]*.5*+h[a+496>>3];f=+J(+(i*2.0000000949949026e-03))*180.0*.6366197723675814;e=+J(+(g*2.0000000949949026e-03))*180.0*.6366197723675814;h[d>>3]=i;h[d+8>>3]=g;h[d+16>>3]=-500.0;h[d+24>>3]=i;h[d+32>>3]=g;h[d+40>>3]=0.0;h[d+48>>3]=(f>e?f:e)*1.2;fC(a,79322,d);$B(a,79469)|0;$B(a,80299)|0;l=b;return}function _e(a){a=a|0;$B(a,79283)|0;return}function $e(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0;f=l;l=l+16|0;h=f;c[h>>2]=b;c[h+4>>2]=d;c[h+8>>2]=e;fC(a,79253,h);g[45958]=+(O(d,-10)|0);l=f;return}function af(a){a=a|0;$B(a,79236)|0;return}function bf(a){a=a|0;$B(a,79218)|0;return}function cf(a){a=a|0;$B(a,79202)|0;return}function df(a){a=a|0;$B(a,79181)|0;g[45958]=+g[45958]+-2.0;return}function ef(a){a=a|0;$B(a,79162)|0;return}function ff(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=ry(c[(c[a+16>>2]|0)+8>>2]|0)|0;fC(a,79140,d);l=b;return}function gf(a){a=a|0;$B(a,79124)|0;return}function hf(a){a=a|0;$B(a,79106)|0;g[45958]=+g[45958]+-5.0;return}function jf(a){a=a|0;$B(a,79090)|0;g[45958]=+g[45958]+5.0;return}function kf(b,d,e){b=b|0;d=d|0;e=e|0;var f=0.0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0,t=0.0,u=0.0;r=l;l=l+144|0;o=r+104|0;q=r+56|0;m=r+32|0;j=r+24|0;n=r;p=e+4|0;i=c[p>>2]|0;f=+h[i+16>>3];i=c[i>>2]|0;c[n>>2]=c[e>>2];h[n+8>>3]=f;c[n+16>>2]=i;fC(b,78936,n);g[45959]=+g[45958]+-9.0;switch(a[e+48>>0]|0){case 108:{f=+h[d>>3];break}case 114:{i=d;f=+h[d>>3]-+h[e+32>>3];k=5;break}default:{i=d;f=+h[d>>3]-+h[e+32>>3]*.5;k=5}}if((k|0)==5)h[i>>3]=f;u=+h[b+488>>3];t=(+h[b+504>>3]+f)*u;s=(+h[b+512>>3]+ +h[d+8>>3])*+h[b+496>>3];h[j>>3]=+h[(c[p>>2]|0)+16>>3]*u;n=qf(b,78988,j)|0;f=+(c[b+360>>2]|0);h[m>>3]=0.0;h[m+8>>3]=0.0;h[m+16>>3]=f;i=qf(b,78205,m)|0;f=+g[45959];h[o>>3]=t;h[o+8>>3]=s;h[o+16>>3]=f;d=qf(b,78237,o)|0;j=o;k=(c[b+16>>2]|0)+16|0;m=j+40|0;do{c[j>>2]=c[k>>2];j=j+4|0;k=k+4|0}while((j|0)<(m|0));o=rf(b,o,0.0)|0;e=c[e>>2]|0;c[q>>2]=c[c[p>>2]>>2];h[q+8>>3]=.25;h[q+16>>3]=0.0;c[q+24>>2]=e;c[q+28>>2]=79075;c[q+32>>2]=n;c[q+36>>2]=i;c[q+40>>2]=d;c[q+44>>2]=o;q=qf(b,79e3,q)|0;$B(b,q)|0;D_(q);D_(i);D_(o);D_(d);D_(n);l=r;return}function lf(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,i=0.0,j=0.0,k=0.0,m=0,n=0,o=0,p=0.0,q=0.0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0.0;z=l;l=l+240|0;x=z+192|0;y=z+152|0;t=z+128|0;r=z+104|0;o=z+80|0;n=z+48|0;e=z+24|0;m=z;$B(a,78813)|0;g[45959]=+g[45958]+-6.0;i=+h[b>>3];j=+h[a+488>>3];p=(+h[a+504>>3]+i)*j;A=+h[b+8>>3];k=+h[a+496>>3];q=(+h[a+512>>3]+A)*k;j=(+h[b+16>>3]-i)*j;k=(+h[b+24>>3]-A)*k;s=a+16|0;A=k+j;i=+h[(c[s>>2]|0)+152>>3]/A*2.5;h[m>>3]=j;h[m+8>>3]=A*.25;h[m+16>>3]=k;b=qf(a,78173,m)|0;m=a+360|0;A=+(c[m>>2]|0);h[e>>3]=90.0;h[e+8>>3]=0.0;h[e+16>>3]=A;e=qf(a,78205,e)|0;A=+g[45959];h[x>>3]=p;h[x+8>>3]=q;h[x+16>>3]=A;f=qf(a,78237,x)|0;u=x;v=(c[s>>2]|0)+16|0;w=u+40|0;do{c[u>>2]=c[v>>2];u=u+4|0;v=v+4|0}while((u|0)<(w|0));v=rf(a,x,0.0)|0;h[n>>3]=1.0;h[n+8>>3]=i;c[n+16>>2]=b;c[n+20>>2]=e;c[n+24>>2]=f;c[n+28>>2]=v;w=qf(a,78828,n)|0;$B(a,w)|0;D_(b);D_(e);D_(f);D_(v);D_(w);if(d|0){h[o>>3]=j;h[o+8>>3]=k;h[o+16>>3]=1.0;f=qf(a,78173,o)|0;A=+(c[m>>2]|0);h[r>>3]=0.0;h[r+8>>3]=0.0;h[r+16>>3]=A;e=qf(a,78205,r)|0;A=+g[45959];h[t>>3]=p;h[t+8>>3]=q;h[t+16>>3]=A;b=qf(a,78237,t)|0;u=x;v=(c[s>>2]|0)+56|0;w=u+40|0;do{c[u>>2]=c[v>>2];u=u+4|0;v=v+4|0}while((u|0)<(w|0));x=rf(a,x,0.0)|0;h[y>>3]=0.0;h[y+8>>3]=0.0;h[y+16>>3]=0.0;c[y+24>>2]=f;c[y+28>>2]=e;c[y+32>>2]=b;c[y+36>>2]=x;y=qf(a,78874,y)|0;$B(a,y)|0;D_(f);D_(e);D_(b);D_(x);D_(y)}l=z;return}function mf(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0.0,M=0,N=0.0;K=l;l=l+336|0;B=K+296|0;J=K+288|0;I=K+272|0;H=K+264|0;G=K+240|0;D=K+232|0;A=K+208|0;z=K+184|0;w=K+160|0;v=K+152|0;u=K+136|0;t=K+128|0;s=K+96|0;r=K+88|0;q=K+56|0;f=K+48|0;m=K+24|0;k=K;$B(a,78678)|0;g[45959]=+g[45958]+-2.0;o=a+488|0;p=a+496|0;L=+h[p>>3];h[k>>3]=+h[o>>3];h[k+8>>3]=L;h[k+16>>3]=1.0;k=qf(a,78173,k)|0;y=a+360|0;L=+(c[y>>2]|0);h[m>>3]=0.0;h[m+8>>3]=0.0;h[m+16>>3]=L;m=qf(a,78205,m)|0;L=+g[45959]+-2.0;h[B>>3]=0.0;h[B+8>>3]=0.0;h[B+16>>3]=L;n=qf(a,78237,B)|0;C=a+16|0;i=B;j=(c[C>>2]|0)+16|0;x=i+40|0;do{c[i>>2]=c[j>>2];i=i+4|0;j=j+4|0}while((i|0)<(x|0));j=rf(a,B,0.0)|0;c[f>>2]=78300;c[f+4>>2]=d+1;E=a+504|0;F=a+512|0;i=0;f=qf(a,78269,f)|0;while(1){if((i|0)>=(d|0))break;N=+h[F>>3]+ +h[b+(i<<4)+8>>3];L=+h[(c[C>>2]|0)+152>>3];h[q>>3]=+h[E>>3]+ +h[b+(i<<4)>>3];h[q+8>>3]=N;h[q+16>>3]=0.0;h[q+24>>3]=L;M=qf(a,78314,q)|0;c[r>>2]=f;c[r+4>>2]=M;x=qf(a,78343,r)|0;D_(M);D_(f);i=i+1|0;f=x}L=+h[F>>3]+ +h[b+8>>3];N=+h[(c[C>>2]|0)+152>>3];h[s>>3]=+h[E>>3]+ +h[b>>3];h[s+8>>3]=L;h[s+16>>3]=0.0;h[s+24>>3]=N;x=qf(a,78314,s)|0;c[t>>2]=f;c[t+4>>2]=x;M=qf(a,78343,t)|0;D_(x);D_(f);c[u>>2]=k;c[u+4>>2]=m;c[u+8>>2]=n;c[u+12>>2]=j;x=qf(a,78693,u)|0;c[v>>2]=M;c[v+4>>2]=x;M=qf(a,78398,v)|0;D_(x);$B(a,M)|0;D_(k);D_(m);D_(n);D_(j);D_(M);if(e|0){N=+h[p>>3];h[w>>3]=+h[o>>3];h[w+8>>3]=N;h[w+16>>3]=1.0;n=qf(a,78173,w)|0;N=+(c[y>>2]|0);h[z>>3]=0.0;h[z+8>>3]=0.0;h[z+16>>3]=N;m=qf(a,78205,z)|0;N=+g[45959]+-2.0;h[A>>3]=0.0;h[A+8>>3]=0.0;h[A+16>>3]=N;k=qf(a,78237,A)|0;i=B;j=(c[C>>2]|0)+56|0;x=i+40|0;do{c[i>>2]=c[j>>2];i=i+4|0;j=j+4|0}while((i|0)<(x|0));j=rf(a,B,.25)|0;c[D>>2]=d;i=0;f=qf(a,78738,D)|0;while(1){if((i|0)>=(d|0))break;N=+h[F>>3]+ +h[b+(i<<4)+8>>3];h[G>>3]=+h[E>>3]+ +h[b+(i<<4)>>3];h[G+8>>3]=N;h[G+16>>3]=0.0;D=qf(a,78753,G)|0;c[H>>2]=f;c[H+4>>2]=D;M=qf(a,78775,H)|0;D_(D);D_(f);i=i+1|0;f=M}c[I>>2]=n;c[I+4>>2]=m;c[I+8>>2]=k;c[I+12>>2]=j;I=qf(a,78785,I)|0;c[J>>2]=f;c[J+4>>2]=I;M=qf(a,78398,J)|0;D_(I);$B(a,M)|0;D_(n);D_(m);D_(k);D_(j);D_(M)}l=K;return}function nf(a,b,d,e,f,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;i=i|0;var j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0.0,D=0.0;B=l;l=l+208|0;e=B+160|0;A=B+152|0;z=B+136|0;y=B+128|0;x=B+96|0;w=B+88|0;v=B+56|0;k=B+48|0;s=B+24|0;r=B;$B(a,78605)|0;g[45959]=+g[45958]+-4.0;C=+h[a+496>>3];h[r>>3]=+h[a+488>>3];h[r+8>>3]=C;h[r+16>>3]=1.0;r=qf(a,78173,r)|0;C=+(c[a+360>>2]|0);h[s>>3]=0.0;h[s+8>>3]=0.0;h[s+16>>3]=C;s=qf(a,78205,s)|0;C=+g[45959]+-2.0;h[e>>3]=0.0;h[e+8>>3]=0.0;h[e+16>>3]=C;t=qf(a,78237,e)|0;u=a+16|0;f=e;i=(c[u>>2]|0)+56|0;j=f+40|0;do{c[f>>2]=c[i>>2];f=f+4|0;i=i+4|0}while((f|0)<(j|0));n=rf(a,e,0.0)|0;c[k>>2]=78619;c[k+4>>2]=d+2;o=a+504|0;p=a+512|0;q=d+-1|0;m=0;e=qf(a,78269,k)|0;while(1){if((m|0)>=(d|0))break;f=b+(m<<4)|0;i=b+(m<<4)+8|0;D=+h[p>>3]+ +h[i>>3];C=+h[(c[u>>2]|0)+152>>3];h[v>>3]=+h[o>>3]+ +h[f>>3];h[v+8>>3]=D;h[v+16>>3]=0.0;h[v+24>>3]=C;k=qf(a,78314,v)|0;c[w>>2]=e;c[w+4>>2]=k;j=qf(a,78343,w)|0;D_(k);D_(e);if((m|0)==0|(m|0)==(q|0)){C=+h[p>>3]+ +h[i>>3];D=+h[(c[u>>2]|0)+152>>3];h[x>>3]=+h[o>>3]+ +h[f>>3];h[x+8>>3]=C;h[x+16>>3]=0.0;h[x+24>>3]=D;k=qf(a,78314,x)|0;c[y>>2]=j;c[y+4>>2]=k;e=qf(a,78343,y)|0;D_(k);D_(j)}else e=j;m=m+1|0}c[z>>2]=r;c[z+4>>2]=s;c[z+8>>2]=t;c[z+12>>2]=n;b=qf(a,78628,z)|0;c[A>>2]=e;c[A+4>>2]=b;d=qf(a,78398,A)|0;D_(b);$B(a,d)|0;D_(r);D_(s);D_(t);D_(n);D_(d);l=B;return}function of(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0.0,x=0,y=0.0;v=l;l=l+160|0;e=v+120|0;u=v+112|0;t=v+96|0;s=v+88|0;r=v+56|0;m=v+48|0;n=v+24|0;q=v;$B(a,78157)|0;g[45959]=+g[45958]+-6.0;w=+h[a+496>>3];h[q>>3]=+h[a+488>>3];h[q+8>>3]=w;h[q+16>>3]=1.0;q=qf(a,78173,q)|0;w=+(c[a+360>>2]|0);h[n>>3]=0.0;h[n+8>>3]=0.0;h[n+16>>3]=w;n=qf(a,78205,n)|0;w=+g[45959];h[e>>3]=0.0;h[e+8>>3]=0.0;h[e+16>>3]=w;o=qf(a,78237,e)|0;p=a+16|0;f=e;i=(c[p>>2]|0)+16|0;j=f+40|0;do{c[f>>2]=c[i>>2];f=f+4|0;i=i+4|0}while((f|0)<(j|0));i=rf(a,e,0.0)|0;c[m>>2]=78300;c[m+4>>2]=d;j=a+504|0;k=a+512|0;f=0;e=qf(a,78269,m)|0;while(1){if((f|0)>=(d|0))break;y=+h[k>>3]+ +h[b+(f<<4)+8>>3];w=+h[(c[p>>2]|0)+152>>3];h[r>>3]=+h[j>>3]+ +h[b+(f<<4)>>3];h[r+8>>3]=y;h[r+16>>3]=0.0;h[r+24>>3]=w;x=qf(a,78314,r)|0;c[s>>2]=e;c[s+4>>2]=x;m=qf(a,78343,s)|0;D_(x);D_(e);f=f+1|0;e=m}c[t>>2]=q;c[t+4>>2]=n;c[t+8>>2]=o;c[t+12>>2]=i;t=qf(a,78352,t)|0;c[u>>2]=e;c[u+4>>2]=t;x=qf(a,78398,u)|0;D_(t);$B(a,x)|0;D_(q);D_(n);D_(o);D_(i);D_(x);l=v;return}function pf(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;c[e>>2]=b;fC(a,78138,e);l=d;return}function qf(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;i=l;l=l+1056|0;h=i;e=i+24|0;f=i+8|0;c[f>>2]=d;g=q0(e,1024,b,f)|0;do if((g|0)>=0)if((g|0)>1023){a=C_(g+1|0)|0;c[f>>2]=d;Z0(a,b,f)|0;break}else{a=n1(e)|0;break}else{a=c[(c[a+12>>2]|0)+16>>2]|0;c[h>>2]=c$(c[(O_()|0)>>2]|0)|0;ub[a&63](78583,h);a=n1(191979)|0}while(0);l=i;return a|0}function rf(a,b,e){a=a|0;b=b|0;e=+e;var f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0.0,s=0.0;q=l;l=l+112|0;o=q+104|0;j=q+96|0;i=q+64|0;n=q+48|0;p=q+32|0;m=q+16|0;k=q;g=c[b+32>>2]|0;a:do switch(g|0){case 5:{f=c[b>>2]|0;if(!(b$(f,133220)|0)){c[k>>2]=78420;h[k+8>>3]=e;f=qf(a,78403,k)|0;break a}if(!(b$(f,130350)|0)){c[m>>2]=78424;h[m+8>>3]=e;f=qf(a,78403,m)|0;break a}if(!(b$(f,128349)|0)){c[p>>2]=78430;h[p+8>>3]=e;f=qf(a,78403,p)|0;break a}else{c[n>>2]=f;h[n+8>>3]=e;f=qf(a,78403,n)|0;break a}}case 1:{s=+(d[b+1>>0]|0)*.00390625;r=+(d[b+2>>0]|0)*.00390625;h[i>>3]=+(d[b>>0]|0)*.00390625;h[i+8>>3]=s;h[i+16>>3]=r;h[i+24>>3]=e;f=qf(a,78435,i)|0;break}default:{p=c[15686]|0;n=c[b>>2]|0;c[j>>2]=g;c[j+4>>2]=n;g1(p,78474,j)|0;qa(135312,78524,436,78544)}}while(0);c[o>>2]=f;p=qf(a,78561,o)|0;D_(f);l=q;return p|0}function sf(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;b=l;l=l+32|0;d=b+24|0;e=b+16|0;g=b;f=c[a+16>>2]|0;h=c[c[a+12>>2]>>2]|0;j=c[h>>2]|0;i=c[h+4>>2]|0;h=c[h+8>>2]|0;c[g>>2]=80990;c[g+4>>2]=j;c[g+8>>2]=i;c[g+12>>2]=h;fC(a,83609,g);f=ry(c[f+8>>2]|0)|0;c[e>>2]=80990;c[e+4>>2]=f;fC(a,83641,e);c[d>>2]=80990;fC(a,83655,d);l=b;return}function tf(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=80990;fC(a,83557,d);l=b;return}function uf(a){a=a|0;var b=0.0,d=0.0,e=0.0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0;W=l;l=l+304|0;V=W+296|0;U=W+288|0;T=W+272|0;R=W+264|0;Q=W+256|0;P=W+248|0;O=W+240|0;N=W+232|0;M=W+224|0;L=W+216|0;K=W+208|0;J=W+200|0;I=W+192|0;H=W+184|0;G=W+176|0;F=W+168|0;E=W+160|0;C=W+152|0;A=W+144|0;z=W+136|0;y=W+128|0;x=W+120|0;w=W+112|0;v=W+104|0;u=W+96|0;t=W+88|0;s=W+80|0;r=W+72|0;q=W+64|0;p=W+56|0;o=W+48|0;S=W+40|0;B=W+24|0;n=W+16|0;m=W;g=c[a+456>>2]|0;i=c[a+460>>2]|0;j=c[a+464>>2]|0;k=c[a+468>>2]|0;f=a+360|0;a:do if(c[4025]|0){switch(c[f>>2]|0){case 90:case 0:break a;default:{}}Gf();c[4025]=0}while(0);e=(+(k|0)-+(i|0))*.013888888888888888;b=(+(j|0)-+(g|0))*.013888888888888888;k=(c[f>>2]|0)==90;d=k?e:b;e=k?b:e;h[m>>3]=d;h[m+8>>3]=e;fC(a,81177,m);c[n>>2]=80990;fC(a,81192,n);if(d>0.0){b=+j$(d);h[18829]=b;b=b+3.0-+(~~b|0)}else b=3.0;b=+D(10.0,+b);h[18829]=b;h[B>>3]=b;h[B+8>>3]=b;fC(a,81361,B);c[S>>2]=80990;fC(a,81396,S);c[o>>2]=80990;fC(a,81454,o);c[p>>2]=80990;fC(a,81514,p);c[q>>2]=80990;fC(a,81563,q);c[r>>2]=80990;fC(a,81602,r);c[s>>2]=80990;fC(a,81653,s);c[t>>2]=80990;fC(a,81715,t);c[u>>2]=80990;fC(a,81825,u);c[v>>2]=80990;fC(a,81916,v);c[w>>2]=80990;fC(a,81970,w);c[x>>2]=80990;fC(a,82039,x);fC(a,82075,y);c[z>>2]=80990;fC(a,82200,z);c[A>>2]=80990;fC(a,82229,A);fC(a,82269,C);c[E>>2]=80990;fC(a,82362,E);c[F>>2]=80990;fC(a,82421,F);c[G>>2]=80990;fC(a,82502,G);fC(a,82572,H);c[I>>2]=80990;fC(a,82661,I);c[J>>2]=80990;fC(a,82766,J);c[K>>2]=80990;fC(a,82842,K);c[L>>2]=80990;fC(a,82881,L);c[M>>2]=80990;fC(a,82980,M);c[N>>2]=80990;fC(a,83026,N);fC(a,83115,O);c[P>>2]=80990;fC(a,83156,P);c[Q>>2]=80990;fC(a,83239,Q);c[R>>2]=80990;fC(a,83340,R);h[T>>3]=e;h[T+8>>3]=d;fC(a,83404,T);fC(a,83432,U);fC(a,83440,V);l=W;return}function vf(a){a=a|0;var b=0;b=l;l=l+16|0;fC(a,81170,b);l=b;return}function wf(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0.0,i=0.0,j=0.0,k=0,m=0,n=0.0,o=0,p=0,q=0,r=0;r=l;l=l+48|0;q=r+24|0;p=r+8|0;o=r;switch(a[e+48>>0]|0){case 108:{k=d;i=+h[e+32>>3];j=+h[d>>3];break}case 114:{i=+h[e+32>>3];g=i;f=5;break}default:{i=+h[e+32>>3];g=i*.5;f=5}}if((f|0)==5){j=+h[d>>3]-g;h[d>>3]=j;k=d}m=e+4|0;f=c[m>>2]|0;g=+h[f+16>>3];d=d+8|0;n=+h[d>>3]+g*.004629629629629629;h[d>>3]=n;i=j+i*.006944444444444444;h[k>>3]=i;f=c[f>>2]|0;do if(f){d=c[45960]|0;if(d|0?(b$(d,f)|0)==0:0)break;c[o>>2]=Ef(f)|0;fC(b,81069,o);o=c[m>>2]|0;c[45960]=c[o>>2];g=+h[o+16>>3]}while(0);f=~~g;f=(f|0)>1?f:1;if((f|0)!=(c[45961]|0)){j=+h[18829];c[p>>2]=f;h[p+8>>3]=j;fC(b,81077,p);c[45961]=f}c[q>>2]=Ff(c[e>>2]|0)|0;h[q+8>>3]=i;h[q+16>>3]=n;fC(b,81098,q);l=r;return}function xf(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0.0,i=0.0,j=0.0,k=0.0;e=l;l=l+48|0;f=e;i=+h[b>>3];k=(+h[b+16>>3]-i)*.027777777777777776;g=+h[b+8>>3];j=(+h[b+24>>3]-g)*.027777777777777776;c[f>>2]=1;c[f+4>>2]=d|0?81011:191979;h[f+8>>3]=k;h[f+16>>3]=j;h[f+24>>3]=i*.013888888888888888;h[f+32>>3]=g*.013888888888888888;fC(a,81017,f);l=e;return}function yf(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;e=l;l=l+16|0;Cf(c[a+16>>2]|0,e+8|0,e);Df(a,b,d,1);l=e;return}function zf(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0.0,v=0.0,w=0;t=l;l=l+128|0;s=t+112|0;q=t+104|0;p=t+96|0;e=t+88|0;n=t+16|0;o=t;k=c[a+16>>2]|0;j=C_((d*140|0)+140|0)|0;Cf(k,t+116|0,t+80|0);v=+h[b>>3];k=n+48|0;h[k>>3]=v;u=+h[b+8>>3];h[n+56>>3]=u;c[e>>2]=~~(v+(v>=0.0?.5:-.5));c[e+4>>2]=~~(u+(u>=0.0?.5:-.5));i=o+8|0;e=j+(Y0(j,80995,e)|0)|0;r=1;g=0;while(1){m=g+3|0;if((m|0)>=(d|0))break;c[n>>2]=c[k>>2];c[n+4>>2]=c[k+4>>2];c[n+8>>2]=c[k+8>>2];c[n+12>>2]=c[k+12>>2];f=1;while(1){if((f|0)==4){f=1;break}w=f+g|0;h[n+(f<<4)>>3]=+h[b+(w<<4)>>3];h[n+(f<<4)+8>>3]=+h[b+(w<<4)+8>>3];f=f+1|0}while(1){if((f|0)==7)break;XL(o,n,3,+(f|0)*.16666666666666666,0,0);u=+h[o>>3];v=+h[i>>3];c[p>>2]=~~(u+(u>=0.0?.5:-.5));c[p+4>>2]=~~(v+(v>=0.0?.5:-.5));f=f+1|0;e=e+(Y0(e,80995,p)|0)|0}r=r+6|0;g=m}c[q>>2]=j;fC(a,81002,q);D_(j);f=r+-1|0;e=0;while(1){if((e|0)>=(r|0))break;c[s>>2]=((e|0)%(f|0)|0|0)!=0&1;fC(a,81007,s);e=e+1|0}$B(a,150517)|0;l=t;return}function Af(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=l;l=l+16|0;Cf(c[a+16>>2]|0,e+8|0,e);Df(a,b,d,0);l=e;return}function Bf(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;c[e>>2]=80990;c[e+4>>2]=b;fC(a,80983,e);l=d;return}function Cf(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0;switch(c[a+144>>2]|0){case 1:{e=10.0;a=1;break}case 2:{e=10.0;a=2;break}default:{e=0.0;a=0}}c[b>>2]=a;h[d>>3]=e;return}function Df(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0.0,m=0.0;j=l;l=l+16|0;i=j+8|0;g=j;f=0;while(1){if((f|0)>=(d|0))break;m=+h[b+(f<<4)>>3];k=+h[b+(f<<4)+8>>3];c[g>>2]=~~(m+(m>=0.0?.5:-.5));c[g+4>>2]=~~(k+(k>=0.0?.5:-.5));fC(a,80995,g);f=f+1|0}if(e|0){k=+h[b>>3];m=+h[b+8>>3];c[i>>2]=~~(k+(k>=0.0?.5:-.5));c[i+4>>2]=~~(m+(m>=0.0?.5:-.5));fC(a,80995,i)}$B(a,150517)|0;l=j;return}function Ef(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;h=l;l=l+16|0;f=h;a:while(1){d=15828;while(1){e=c[d+4>>2]|0;if(!e)break;if(!(b$(e,b)|0)){g=6;break a}d=d+8|0}c[f>>2]=81151;c[f+4>>2]=b;Pw(1,81125,f)|0;d=o1(b,45)|0;if(!d){d=81168;break}a[d>>0]=0}l=h;return d|0}function Ff(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=l;l=l+16|0;h=i;d=c[45962]|0;if(!d){c[45963]=64;d=C_(64)|0;c[45962]=d;e=0}else e=0;while(1){g=b+1|0;f=a[b>>0]|0;if(!(f<<24>>24))break;b=c[45963]|0;if((e|0)>(b+-8|0)){d=b<<1;c[45963]=d;d=F_(c[45962]|0,d)|0;c[45962]=d;d=d+e|0}if(f<<24>>24<=-1){a[d>>0]=92;c[h>>2]=f&255;Y0(d+1|0,81120,h)|0;b=g;d=d+4|0;e=e+4|0;continue}if(f<<24>>24==92){a[d>>0]=92;e=e+1|0;d=d+1|0}a[d>>0]=f;b=g;d=d+1|0;e=e+1|0}a[d>>0]=0;l=i;return c[45962]|0}function Gf(){var a=0,b=0;a=l;l=l+16|0;b=a;c[b>>2]=81151;c[b+4>>2]=83548;Pw(0,83530,b)|0;l=a;return}function Hf(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0.0,i=0.0,j=0,k=0;e=l;l=l+32|0;f=e+8|0;j=e;b=b+8|0;k=c[b>>2]|0;c[j>>2]=k;c[j+4>>2]=k;fC(a,84128,j);i=(+h[d>>3]+ +h[d+16>>3])*.5;g=(+h[d+8>>3]+ +h[d+24>>3])*.5;c[f>>2]=c[b>>2];h[f+8>>3]=i;h[f+16>>3]=g;fC(a,84170,f);l=e;return}function If(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0.0,i=0.0,j=0.0,k=0.0;e=l;l=l+48|0;f=e;i=+h[d>>3];k=+h[d+16>>3]-i;g=+h[d+24>>3];j=g-+h[d+8>>3];g=+(~~(+h[a+232>>3]-+h[a+216>>3])>>>0)-g;c[f>>2]=c[b+8>>2];h[f+8>>3]=k;h[f+16>>3]=j;h[f+24>>3]=i;h[f+32>>3]=g;fC(a,84215,f);$B(a,84307)|0;l=e;return}function Jf(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return}function Kf(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,g=0.0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0.0;t=l;l=l+160|0;s=t+152|0;r=t+136|0;q=t+120|0;k=t+112|0;n=t+104|0;m=t+88|0;j=t+72|0;i=t+64|0;o=t;if(!a)qa(108200,84312,212,84331);if(!b)qa(108230,84312,213,84331);p=b+8|0;if(!(c[p>>2]|0))qa(108233,84312,214,84331);if(c[b+52>>2]|0){c[o>>2]=c[d>>2];c[o+4>>2]=c[d+4>>2];c[o+8>>2]=c[d+8>>2];c[o+12>>2]=c[d+12>>2];b=o+32|0;d=d+16|0;c[b>>2]=c[d>>2];c[b+4>>2]=c[d+4>>2];c[b+8>>2]=c[d+8>>2];c[b+12>>2]=c[d+12>>2];f=+h[o>>3];h[o+16>>3]=f;h[o+24>>3]=+h[o+40>>3];h[o+48>>3]=+h[b>>3];g=+h[o+8>>3];h[o+56>>3]=g;if(e<<24>>24){fC(a,84352,i);b=0;while(1){if((b|0)==4)break;u=+h[o+(b<<4)+8>>3];h[j>>3]=+h[o+(b<<4)>>3];h[j+8>>3]=u;fC(a,84355,j);b=b+1|0}h[m>>3]=f;h[m+8>>3]=g;fC(a,84355,m);m=c[p>>2]|0;c[n>>2]=4;c[n+4>>2]=m;fC(a,84362,n)}fC(a,84352,k);b=0;while(1){if((b|0)==4)break;u=+h[o+(b<<4)+8>>3];h[q>>3]=+h[o+(b<<4)>>3];h[q+8>>3]=u;fC(a,84355,q);b=b+1|0}h[r>>3]=f;h[r+8>>3]=g;fC(a,84355,r);r=c[p>>2]|0;c[s>>2]=4;c[s+4>>2]=r;fC(a,84377,s)}l=t;return}function Lf(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0.0;o=l;l=l+112|0;n=o+24|0;m=o+16|0;k=o;i=o+28|0;if(!b)qa(108200,84312,153,84393);if(!d)qa(108230,84312,154,84393);if(!(c[d+8>>2]|0))qa(108233,84312,155,84393);j=d+52|0;if(c[j>>2]|0){f=d+60|0;g=c[f>>2]|0;if((g|0)==98)g=18;else{tb[g&127](d);c[j>>2]=0;c[f>>2]=0;c[d+56>>2]=0;g=10}}else g=10;do if((g|0)==10){if(!((zC(d)|0)<<24>>24))break;f=j3(c[d+20>>2]|0)|0;if((c[d+24>>2]&-2|0)==6){J1(f,i)|0;i=c[i+36>>2]|0;c[d+56>>2]=i;f=U_(0,i,1,1,f,0)|0;c[j>>2]=f;a[d+16>>0]=1}else f=c[j>>2]|0;if(f|0)c[d+60>>2]=98;AC(d);if(c[j>>2]|0)g=18}while(0);if((g|0)==18){p=+h[e+8>>3]-+(c[d+36>>2]|0);h[k>>3]=+h[e>>3]-+(c[d+32>>2]|0);h[k+8>>3]=p;fC(b,84411,k);if(!(a[d+16>>0]|0)){c[m>>2]=c[d+12>>2];fC(b,84442,m)}else kJ(b,d);fC(b,84457,n)}l=o;return}function Mf(a){a=a|0;S_(c[a+52>>2]|0,c[a+56>>2]|0)|0;return}function Nf(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;g=l;l=l+80|0;f=g+48|0;if(!a)qa(108200,84312,121,84467);e=c[a+16>>2]|0;if(!e)qa(96876,84312,123,84467);if(!b)qa(108230,84312,124,84467);d=b+8|0;if(!(c[d>>2]|0))qa(108233,84312,125,84467);if(!(c[e+8>>2]|0))qa(135797,84312,128,84467);else{fC(a,84487,g);fC(a,84496,g+8|0);fC(a,84523,g+16|0);fC(a,84548,g+24|0);fC(a,84577,g+32|0);fC(a,84605,g+40|0);c[f>>2]=c[d>>2];fC(a,84612,f);fC(a,84651,g+56|0);fC(a,107982,g+64|0);l=g;return}}function Of(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,m=0.0;i=l;l=l+128|0;g=i+80|0;f=i;if(!a)qa(108200,84312,97,84656);if(!b)qa(108230,84312,98,84656);e=c[b+8>>2]|0;if(!e)qa(108233,84312,99,84656);else{m=+h[d>>3];j=~~(m+(m>=0.0?.5:-.5));m=+h[d+8>>3];b=~~(m+(m>=0.0?.5:-.5));m=+h[d+16>>3];k=~~(m+(m>=0.0?.5:-.5));m=+h[d+24>>3];d=~~(m+(m>=0.0?.5:-.5));c[f>>2]=2;c[f+4>>2]=5;c[f+8>>2]=0;c[f+12>>2]=0;c[f+16>>2]=0;c[f+20>>2]=-1;c[f+24>>2]=1;c[f+28>>2]=-1;c[f+32>>2]=0;h[f+40>>3]=0.0;c[f+48>>2]=0;c[f+52>>2]=0;c[f+56>>2]=0;c[f+60>>2]=0;c[f+64>>2]=0;c[f+68>>2]=5;c[f+72>>2]=0;c[f+76>>2]=e;fC(a,84675,f);c[g>>2]=j;c[g+4>>2]=b;c[g+8>>2]=j;c[g+12>>2]=d;c[g+16>>2]=k;c[g+20>>2]=d;c[g+24>>2]=k;c[g+28>>2]=b;c[g+32>>2]=j;c[g+36>>2]=b;fC(a,84733,g);l=i;return}}function Pf(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,g=0.0,i=0.0,j=0.0,k=0,m=0,n=0,o=0;o=l;l=l+96|0;n=o+56|0;m=o+32|0;k=o;i=+h[d>>3];j=+h[d+16>>3]-i;f=+h[d+24>>3];g=f-+h[d+8>>3];if(!a)qa(108200,84312,53,84765);if(!b)qa(108230,84312,54,84765);e=b+8|0;if(!(c[e>>2]|0))qa(108233,84312,55,84765);$B(a,84784)|0;$B(a,c[e>>2]|0)|0;e=a+360|0;f=-f;if(!(c[e>>2]|0)){h[n>>3]=j;h[n+8>>3]=g;h[n+16>>3]=i;h[n+24>>3]=f;fC(a,84913,n)}else{h[k>>3]=g;h[k+8>>3]=j;h[k+16>>3]=i;h[k+24>>3]=f;fC(a,84804,k);c[m>>2]=c[e>>2];h[m+8>>3]=i;h[m+16>>3]=f;fC(a,84883,m)}$B(a,84992)|0;l=o;return}function Qf(a){a=a|0;var b=0,c=0;b=Sy(a)|0;while(1){if(!b)break;Rf(b);b=Ty(a,b)|0}c=Sy(a)|0;while(1){if(!c)break;b=Ex(a,c)|0;while(1){if(!b)break;Sf(b);b=Gx(a,b)|0}c=Ty(a,c)|0}return}function Rf(a){a=a|0;var b=0,d=0;Az(a,134365,304,1)|0;dM(a);bN(a,c[(c[(ez(a)|0)+16>>2]|0)+116>>2]&1);a=a+16|0;c[(c[a>>2]|0)+176>>2]=0;b=uH(20)|0;d=c[a>>2]|0;c[d+172>>2]=b;c[d+184>>2]=0;d=uH(20)|0;b=c[a>>2]|0;c[b+180>>2]=d;c[b+200>>2]=0;b=uH(12)|0;d=c[a>>2]|0;c[d+196>>2]=b;c[d+192>>2]=0;d=uH(12)|0;b=c[a>>2]|0;c[b+188>>2]=d;c[b+208>>2]=0;b=uH(12)|0;a=c[a>>2]|0;c[a+204>>2]=b;c[a+216>>2]=1;return}function Sf(d){d=d|0;var e=0,f=0,g=0,h=0,i=0;Az(d,134378,176,1)|0;eM(d)|0;h=KL(d,c[46404]|0,1,0)|0;g=d+16|0;c[(c[g>>2]|0)+156>>2]=h;h=NL(c[((c[d>>2]&3|0)==3?d:d+48|0)+40>>2]|0,c[46398]|0,191979)|0;i=NL(c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0,c[46398]|0,191979)|0;e=c[g>>2]|0;f=e+154|0;b[f>>1]=1;b[e+168>>1]=1;if((h|0)==(i|0)&(a[h>>0]|0)!=0){b[f>>1]=1e3;i=e+156|0;c[i>>2]=(c[i>>2]|0)*100}if(Ok(d)|0){i=c[g>>2]|0;b[i+154>>1]=0;c[i+156>>2]=0}i=(KL(d,c[46417]|0,0,0)|0)&255;a[(c[g>>2]|0)+152>>0]=i;i=(KL(d,c[46405]|0,1,0)|0)&65535;b[(c[g>>2]|0)+170>>1]=i;return}function Tf(a){a=a|0;var b=0,d=0;Uf(c[(c[a+16>>2]|0)+192>>2]|0);d=Sy(a)|0;while(1){if(!d)break;b=Ex(a,d)|0;while(1){if(!b)break;JM(b);b=Gx(a,b)|0}Vf(d);d=Ty(a,d)|0}Wf(a);return}function Uf(b){b=b|0;var d=0,e=0,f=0,g=0;while(1){if(!b)break;f=b+16|0;g=c[(c[f>>2]|0)+164>>2]|0;Xf(b);d=c[f>>2]|0;if((a[d+156>>0]|0)!=1){b=g;continue}e=c[d+180>>2]|0;if(e){D_(e);d=c[f>>2]|0}e=c[d+172>>2]|0;if(e){D_(e);d=c[f>>2]|0}D_(d);D_(b);b=g}return}function Vf(a){a=a|0;var b=0,d=0,e=0;e=a+16|0;b=c[e>>2]|0;d=c[b+172>>2]|0;if(d){D_(d);b=c[e>>2]|0}d=c[b+180>>2]|0;if(d){D_(d);b=c[e>>2]|0}d=c[b+188>>2]|0;if(d){D_(d);b=c[e>>2]|0}d=c[b+196>>2]|0;if(d){D_(d);b=c[e>>2]|0}d=c[b+204>>2]|0;if(d){D_(d);b=c[e>>2]|0}nH(c[b+104>>2]|0);nH(c[(c[e>>2]|0)+108>>2]|0);b=c[(c[e>>2]|0)+8>>2]|0;if(b|0)tb[c[(c[b+4>>2]|0)+4>>2]&127](a);Cz(a,134365)|0;return}function Wf(a){a=a|0;var d=0,e=0,f=0;d=wA(a)|0;while(1){if(!d)break;Wf(d);d=xA(d)|0}if(Az(a,134401,0,1)|0){f=a+16|0;d=c[f>>2]|0;e=c[d+184>>2]|0;if(e){D_(e);d=c[f>>2]|0}e=c[d+268>>2]|0;if(e){D_(e);d=c[f>>2]|0}e=c[d+216>>2]|0;if(e){D_(e);d=c[f>>2]|0}do if(c[d+196>>2]|0){e=b[d+236>>1]|0;while(1){if((e|0)>(b[d+238>>1]|0))break;D_(c[(c[d+196>>2]|0)+(e<<6)+12>>2]|0);e=e+1|0;d=c[f>>2]|0}e=c[d+196>>2]|0;if((b[d+236>>1]|0)==-1){D_(e+-64|0);break}else{D_(e);break}}while(0);if((fz(a)|0)!=(a|0)){nH(c[(c[f>>2]|0)+12>>2]|0);Cz(a,134401)|0}}return}function Xf(a){a=a|0;var b=0,d=0,e=0;e=a+16|0;d=c[e>>2]|0;b=c[d+176>>2]|0;while(1){a=b+-1|0;if((b|0)<=0)break;b=c[(c[d+172>>2]|0)+(a<<2)>>2]|0;kh(b);D_(c[b+16>>2]|0);D_(b);b=a;d=c[e>>2]|0}b=c[d+184>>2]|0;while(1){a=b+-1|0;if((b|0)<=0)break;b=c[(c[(c[e>>2]|0)+180>>2]|0)+(a<<2)>>2]|0;kh(b);D_(c[b+16>>2]|0);D_(b);b=a}return}function Yf(a){a=a|0;if(ay(a)|0)Zf(a);eJ(a);return}function Zf(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;h=l;l=l+48|0;g=h+32|0;f=h;b=YD(a,-1,8)|0;d=ZD(a,0,f)|0;XD(a,2,8,f)|0;d=(d|0)==0;e=(b|0)<0;if(e&d)_f(a);else{if(d)c[f+16>>2]=3;else b=e?8:b;c[f+8>>2]=b;c[f+20>>2]=0;e=rD(a,g,0)|0;b=c[g>>2]|0;do if((b|0)==1){_f(a);b=0}else{if(c[(c[(c[a+16>>2]|0)+8>>2]|0)+84>>2]|0){_f(a);b=0;break}c[f+12>>2]=1;d=0;while(1){if((d|0)>=(b|0))break;b=c[e+(d<<2)>>2]|0;$f(b,a);_f(b);d=d+1|0;b=c[g>>2]|0}ag(a);WD(c[g>>2]|0,e,a,f)|0;bg(a);cg(c[g>>2]|0,e,a);b=0}while(0);while(1){if((b|0)>=(c[g>>2]|0))break;f=e+(b<<2)|0;D_(c[(c[(c[f>>2]|0)+16>>2]|0)+8>>2]|0);Wf(c[f>>2]|0);dz(a,c[f>>2]|0)|0;b=b+1|0}D_(e)}l=h;return}function _f(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;m=l;l=l+48|0;k=m+40|0;e=m;i=KL(a,nx(a,0,85007,0)|0,-1,1)|0;$M(a,10);d=Nk(a,e)|0;eg(a,a);Qf(a);f=(i|0)==1;g=e+32|0;h=(i|0)==2;i=(i|0)==3;j=e+28|0;e=e+24|0;while(1){zj(a,d);if(f){d=3;break}if(c[g>>2]|0){Pw(0,85013,k)|0;c[e>>2]=0;d=0}Jh(a,(d|0)!=0&1);if(h){d=7;break}Mi(a,d);if(i){d=9;break}n=(c[j>>2]|0)+-1|0;c[j>>2]=n;if(!((n|0)!=0&(c[e>>2]|0)!=0)){d=11;break}}if((d|0)==3)fg(a,1);else if((d|0)==7)fg(a,2);else if((d|0)==9)fg(a,2);else if((d|0)==11){if(b[(c[a+16>>2]|0)+136>>1]&16)gg(a);tk(a);kg(a);if((QL(xx(a,85104)|0)|0)<<24>>24)nl(a)}l=m;return}function $f(b,d){b=b|0;d=d|0;var e=0,f=0;Az(b,134401,280,1)|0;e=uH(96)|0;b=c[b+16>>2]|0;c[b+8>>2]=e;d=c[d+16>>2]|0;f=c[d+8>>2]|0;h[e>>3]=+h[f>>3];h[e+24>>3]=+h[f+24>>3];c[b+144>>2]=c[d+144>>2];a[b+115>>0]=a[d+115>>0]|0;c[b+116>>2]=c[d+116>>2];c[b+248>>2]=c[d+248>>2];c[b+252>>2]=c[d+252>>2];c[b+244>>2]=c[d+244>>2];return}function ag(a){a=a|0;var b=0,d=0,e=0;b=uH((ay(a)|0)<<4)|0;d=Sy(a)|0;while(1){if(!d)break;e=c[d+16>>2]|0;c[e+132>>2]=b;h[b>>3]=+h[e+16>>3]*.013888888888888888;h[b+8>>3]=+h[e+24>>3]*.013888888888888888;b=b+16|0;d=Ty(a,d)|0}return}function bg(a){a=a|0;var b=0,d=0,e=0,f=0;e=c[(c[(Sy(a)|0)+16>>2]|0)+132>>2]|0;b=e;d=Sy(a)|0;while(1){if(!d)break;f=c[d+16>>2]|0;c[f+132>>2]=0;h[f+16>>3]=+h[b>>3]*72.0;h[f+24>>3]=+h[b+8>>3]*72.0;b=b+16|0;d=Ty(a,d)|0}D_(e);return}function cg(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;e=0;f=0;while(1){if((e|0)>=(a|0))break;i=(c[(c[(c[b+(e<<2)>>2]|0)+16>>2]|0)+180>>2]|0)+f|0;e=e+1|0;f=i}i=d+16|0;c[(c[i>>2]|0)+180>>2]=f;g=uH((f<<2)+4|0)|0;c[(c[i>>2]|0)+184>>2]=g;g=0;e=1;while(1){if((g|0)>=(a|0))break;h=(c[b+(g<<2)>>2]|0)+16|0;f=1;while(1){d=c[h>>2]|0;if((f|0)>(c[d+180>>2]|0))break;d=qD(c[(c[d+184>>2]|0)+(f<<2)>>2]|0)|0;c[(c[(c[i>>2]|0)+184>>2]|0)+(e<<2)>>2]=d;dg(c[(c[(c[h>>2]|0)+184>>2]|0)+(f<<2)>>2]|0,d);f=f+1|0;e=e+1|0}g=g+1|0}return}function dg(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;Az(d,134401,280,1)|0;g=d+16|0;d=(c[g>>2]|0)+16|0;f=b+16|0;b=(c[f>>2]|0)+16|0;c[d>>2]=c[b>>2];c[d+4>>2]=c[b+4>>2];c[d+8>>2]=c[b+8>>2];c[d+12>>2]=c[b+12>>2];c[d+16>>2]=c[b+16>>2];c[d+20>>2]=c[b+20>>2];c[d+24>>2]=c[b+24>>2];c[d+28>>2]=c[b+28>>2];b=c[f>>2]|0;d=c[g>>2]|0;a[d+275>>0]=a[b+275>>0]|0;d=d+48|0;b=b+48|0;e=d+64|0;do{c[d>>2]=c[b>>2];d=d+4|0;b=b+4|0}while((d|0)<(e|0));b=c[(c[f>>2]|0)+180>>2]|0;c[(c[g>>2]|0)+180>>2]=b;d=uH((b<<2)+4|0)|0;c[(c[g>>2]|0)+184>>2]=d;d=1;while(1){e=c[f>>2]|0;if((d|0)>(b|0))break;e=qD(c[(c[e+184>>2]|0)+(d<<2)>>2]|0)|0;c[(c[(c[g>>2]|0)+184>>2]|0)+(d<<2)>>2]=e;dg(c[(c[(c[f>>2]|0)+184>>2]|0)+(d<<2)>>2]|0,e);d=d+1|0}f=e+12|0;c[(c[g>>2]|0)+12>>2]=c[f>>2];c[f>>2]=0;return}function eg(a,b){a=a|0;b=b|0;if((fz(a)|0)!=(a|0))Az(a,134401,280,1)|0;if((a|0)==(b|0))c[(c[(fz(a)|0)+16>>2]|0)+188>>2]=a;a=wA(a)|0;while(1){if(!a)break;eg(a,b);a=xA(a)|0}return}function fg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0;m=l;l=l+1040|0;k=m+8|0;j=m;e=m+16|0;f=nx(a,1,87076,191979)|0;g=nx(a,1,85147,191979)|0;h=(b|0)>0;d=(b|0)==1;b=Sy(a)|0;while(1){if(!b)break;if(h?(i=b+16|0,c[j>>2]=c[(c[i>>2]|0)+232>>2],Y0(e,134313,j)|0,rx(b,f,e)|0,!d):0){c[k>>2]=c[(c[i>>2]|0)+236>>2];Y0(e,134313,k)|0;rx(b,g,e)|0}b=Ty(a,b)|0}l=m;return}function gg(a){a=a|0;var b=0,c=0,d=0;c=vA(a,86580,0)|0;if(c|0){b=Sy(c)|0;while(1){if(!b)break;d=Ty(c,b)|0;sh(a,b);hg(a,b);Vf(b);cz(a,b)|0;b=d}zA(a,c)|0}return}function hg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;j=c[(c[b+16>>2]|0)+232>>2]|0;i=a+16|0;a=c[(c[i>>2]|0)+196>>2]|0;d=c[a+(j<<6)>>2]|0;h=a+(j<<6)+4|0;g=0;e=0;while(1){if((e|0)>=(d|0)){f=7;break}f=c[(c[h>>2]|0)+(e<<2)>>2]|0;e=e+1|0;if((f|0)==(b|0)){f=4;break}else g=f}if((f|0)==4){while(1){if((e|0)>=(d|0))break;f=c[a+(j<<6)+4>>2]|0;c[f+(e+-1<<2)>>2]=c[f+(e<<2)>>2];f=c[(c[i>>2]|0)+196>>2]|0;e=e+1|0;d=c[f+(j<<6)>>2]|0;a=f;f=4}c[a+(j<<6)>>2]=d+-1}else if((f|0)==7?(g|0)!=(b|0):0)qa(85113,85120,248,85130);return}function ig(a){a=a|0;return c[(c[(fz(a)|0)+16>>2]|0)+188>>2]|0}function jg(b,c){b=b|0;c=c|0;var d=0;d=a[b+28>>0]|0;if(a[c+28>>0]|0)if(d<<24>>24){d=~~(+h[b>>3]-+h[c>>3]);if(!d)d=~~(+h[b+8>>3]-+h[c+8>>3])}else d=-1;else d=d<<24>>24!=0&1;return d|0}function kg(a){a=a|0;lg(a,1);return}function lg(d,e){d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0.0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0.0;Z=l;l=l+656|0;O=Z+592|0;N=Z+552|0;f=Z+544|0;T=Z+96|0;U=Z;Y=Z+632|0;V=d+16|0;X=b[(c[V>>2]|0)+136>>1]&14;P=X&65535;Q=T+16|0;c[Q>>2]=Z+368;R=U+16|0;c[R>>2]=Z+192;do if(X<<16>>16){S=X<<16>>16==4;do if(S){mg(d);if(!(a[(c[(c[d+60>>2]|0)+16>>2]|0)+113>>0]&1))A=9;else{Pw(0,85153,f)|0;A=9}}else if(X<<16>>16==8){mg(d);if(!(a[(c[(c[d+60>>2]|0)+16>>2]|0)+113>>0]&1)){cN(d,0);n=0;m=0;k=0;break}else{ng(d);cN(d,1);n=0;m=0;k=0;break}}else A=9;while(0);if((A|0)==9){ll(d);if(qJ()|0)break;W=uH(96)|0;K=c[(c[V>>2]|0)+248>>2]|0;c[Y+8>>2]=(K|0)/4|0;c[Y+12>>2]=K;k=uH(512)|0;F=Y+4|0;c[F>>2]=0;c[Y>>2]=0;j=c[V>>2]|0;C=b[j+236>>1]|0;D=0;L=0;M=k;E=k;m=k;n=k;o=k;H=0;I=0;a:while(1){if((C|0)>(b[j+238>>1]|0))break;p=c[j+196>>2]|0;i=c[p+(C<<6)>>2]|0;G=i+D|0;g=c[p+(C<<6)+4>>2]|0;f=c[g>>2]|0;if(!f)f=H;else{_=+(H|0);f=c[f+16>>2]|0;y=+h[f+16>>3]-+h[f+88>>3];f=~~(y>_?_:y)}if((i|0)!=0?(J=c[g+(i+-1<<2)>>2]|0,(J|0)!=0):0){y=+(I|0);g=c[J+16>>2]|0;_=+h[g+96>>3]+ +h[g+16>>3];g=~~(_=(i|0))break;k=c[(c[f+(C<<6)+4>>2]|0)+(x<<2)>>2]|0;w=k+16|0;f=c[w>>2]|0;i=c[f+112>>2]|0;if(i){i=i+16|0;j=c[(c[i>>2]|0)+96>>2]|0;if(!j){A=21;break a}s=j+56|0;f=f+16|0;c[s>>2]=c[f>>2];c[s+4>>2]=c[f+4>>2];c[s+8>>2]=c[f+8>>2];c[s+12>>2]=c[f+12>>2];a[(c[(c[i>>2]|0)+96>>2]|0)+81>>0]=1;f=c[w>>2]|0}if((a[f+156>>0]|0)!=0?(kb[c[17300>>2]&63](k)|0)<<24>>24==0:0){q=t;f=r;j=u;k=v;i=o}else{s=0;q=t;j=u;k=v;A=25}b:do if((A|0)==25){while(1){A=0;p=c[w>>2]|0;i=c[(c[p+180>>2]|0)+(s<<2)>>2]|0;if(!i)break;switch(a[(c[i+16>>2]|0)+112>>0]|0){case 6:case 4:{f=q;i=r;break}default:{og(i,1,16,64);f=q+1|0;c[r+(q<<2)>>2]=i;if(!(f&127)){g=xH(g,(q<<2)+516|0)|0;i=g;j=g;k=g;n=g;o=g}else i=r}}s=s+1|0;q=f;r=i;A=25}f=c[p+188>>2]|0;c:do if(!f)i=o;else{s=0;i=o;while(1){f=c[f+(s<<2)>>2]|0;if(!f)break c;og(f,2,0,128);o=q+1|0;c[r+(q<<2)>>2]=f;if(!(o&127)){g=xH(i,(q<<2)+516|0)|0;f=g;j=g;k=g;n=g;i=g}else f=r;p=c[w>>2]|0;s=s+1|0;q=o;r=f;f=c[p+188>>2]|0}}while(0);f=c[p+204>>2]|0;if(!f)f=r;else{if(!(a[p+156>>0]|0)){v=p+96|0;_=+h[v>>3];s=p+240|0;h[v>>3]=+h[s>>3];h[s>>3]=_;s=0;p=r}else{s=0;p=r}while(1){f=c[f+(s<<2)>>2]|0;if(!f){f=p;break b}og(f,0,0,128);o=q+1|0;c[p+(q<<2)>>2]=f;if(!(o&127)){g=xH(n,(q<<2)+516|0)|0;f=g;j=g;k=g;n=g;i=g}else f=p;s=s+1|0;q=o;p=f;f=c[(c[w>>2]|0)+204>>2]|0}}}while(0);u=c[V>>2]|0;w=c[u+196>>2]|0;x=x+1|0;t=q;r=f;q=u;u=j;v=k;o=i;i=c[w+(C<<6)>>2]|0;f=w}C=C+1|0;D=G;L=t;M=r;E=u;j=q;m=v;k=g;H=B;I=z}if((A|0)==21)qa(85221,85234,313,85247);c[Y>>2]=H;c[F>>2]=I;_0(E,L,4,58);c[W+84>>2]=uH((D<<5)+11520|0)|0;c[Y+16>>2]=uH(C<<5)|0;d:do if(X<<16>>16==2){f=(c[V>>2]|0)+192|0;while(1){g=c[f>>2]|0;if(!g)break d;i=g+16|0;f=c[i>>2]|0;if((a[f+156>>0]|0)==1?(c[f+104>>2]|0)!=0:0){qg(g);f=c[i>>2]|0}f=f+164|0}}while(0);z=U+48|0;A=U+-48|0;B=T+48|0;C=T+-48|0;y=+(K|0);x=0;e:while(1){if((x|0)>=(L|0))break;v=M+(x<<2)|0;r=c[v>>2]|0;s=rg(r)|0;t=r+16|0;g=c[t>>2]|0;if(!(a[g+44>>0]|0)){g=(a[g+84>>0]|0)==0?s:r;f=g;g=c[g+16>>2]|0}else f=r;i=f+16|0;if(c[g+164>>2]&32){g=c[Q>>2]|0;F3(g|0,c[i>>2]|0,176)|0;n=T;o=f;p=n+48|0;do{c[n>>2]=c[o>>2];n=n+4|0;o=o+4|0}while((n|0)<(p|0));c[Q>>2]=g;o=c[f>>2]&3;n=c[T>>2]&3;c[((n|0)==3?T:B)+40>>2]=c[((o|0)==2?f:f+-48|0)+40>>2];c[((n|0)==2?T:C)+40>>2]=c[((o|0)==3?f:f+48|0)+40>>2];n=g+16|0;o=(c[i>>2]|0)+56|0;p=n+40|0;do{c[n>>2]=c[o>>2];n=n+4|0;o=o+4|0}while((n|0)<(p|0));n=g+56|0;o=(c[i>>2]|0)+16|0;p=n+40|0;do{c[n>>2]=c[o>>2];n=n+4|0;o=o+4|0}while((n|0)<(p|0));a[g+112>>0]=1;c[g+116>>2]=f;f=T}q=f+16|0;w=1;f=x;while(1){u=f+1|0;if((u|0)>=(L|0))break;j=M+(u<<2)|0;f=c[j>>2]|0;if((s|0)!=(rg(f)|0))break;if(!(a[(c[t>>2]|0)+113>>0]|0)){k=f+16|0;g=c[k>>2]|0;if(!(a[g+44>>0]|0)){g=(a[g+84>>0]|0)==0?s:f;f=g;g=c[g+16>>2]|0}i=f+16|0;if(c[g+164>>2]&32){g=c[R>>2]|0;F3(g|0,c[i>>2]|0,176)|0;n=U;o=f;p=n+48|0;do{c[n>>2]=c[o>>2];n=n+4|0;o=o+4|0}while((n|0)<(p|0));c[R>>2]=g;o=c[f>>2]&3;n=c[U>>2]&3;c[((n|0)==3?U:z)+40>>2]=c[((o|0)==2?f:f+-48|0)+40>>2];c[((n|0)==2?U:A)+40>>2]=c[((o|0)==3?f:f+48|0)+40>>2];n=g+16|0;o=(c[i>>2]|0)+56|0;p=n+40|0;do{c[n>>2]=c[o>>2];n=n+4|0;o=o+4|0}while((n|0)<(p|0));n=g+56|0;o=(c[i>>2]|0)+16|0;p=n+40|0;do{c[n>>2]=c[o>>2];n=n+4|0;o=o+4|0}while((n|0)<(p|0));a[g+112>>0]=1;c[g+116>>2]=f}i=c[q>>2]|0;f=g+16|0;n=N;o=i+16|0;p=n+40|0;do{c[n>>2]=c[o>>2];n=n+4|0;o=o+4|0}while((n|0)<(p|0));n=O;o=f;p=n+40|0;do{c[n>>2]=c[o>>2];n=n+4|0;o=o+4|0}while((n|0)<(p|0));if(jg(N,O)|0)break;f=g+56|0;n=N;o=i+56|0;p=n+40|0;do{c[n>>2]=c[o>>2];n=n+4|0;o=o+4|0}while((n|0)<(p|0));n=O;o=f;p=n+40|0;do{c[n>>2]=c[o>>2];n=n+4|0;o=o+4|0}while((n|0)<(p|0));if(jg(N,O)|0)break;K=c[t>>2]|0;if((c[K+164>>2]&15|0)==2?(c[K+96>>2]|0)!=(c[(c[k>>2]|0)+96>>2]|0):0)break;if(c[(c[(c[j>>2]|0)+16>>2]|0)+164>>2]&64|0)break}w=w+1|0;f=u}if(S){if((w|0)==1)f=O;else f=uH(w<<2)|0;c[f>>2]=rg(c[v>>2]|0)|0;g=1;while(1){if((g|0)>=(w|0))break;c[f+(g<<2)>>2]=c[v+(g<<2)>>2];g=g+1|0}AJ(d,f,w,P,17296);if((w|0)>1)D_(f);x=u;continue}f=c[r>>2]&3;K=c[((f|0)==3?r:r+48|0)+40>>2]|0;f=c[((f|0)==2?r:r+-48|0)+40>>2]|0;g=c[K+16>>2]|0;i=c[g+232>>2]|0;if((K|0)!=(f|0))if((i|0)==(c[(c[f+16>>2]|0)+232>>2]|0)){sg(d,Y,W,M,x,w,P);x=u;continue}else{tg(d,Y,W,M,x,w,P);x=u;continue}f=c[V>>2]|0;do if((i|0)==(b[f+238>>1]|0))if((i|0)>0){f=~~(+h[(c[(c[c[(c[f+196>>2]|0)+(i+-1<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3]-+h[g+24>>3]);break}else{f=~~+h[g+80>>3];break}else if((i|0)==(b[f+236>>1]|0)){f=~~(+h[g+24>>3]-+h[(c[(c[c[(c[f+196>>2]|0)+(i+1<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3]);break}else{f=c[f+196>>2]|0;_=+h[g+24>>3];K=~~(+h[(c[(c[c[f+(i+-1<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3]-_);f=~~(_-+h[(c[(c[c[f+(i+1<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3]);f=(K|0)<(f|0)?K:f;break}while(0);YK(W,M,x,w,y,+((f|0)/2|0|0),17296);f=0;while(1){if((f|0)>=(w|0)){x=u;continue e}g=c[(c[(c[M+(f+x<<2)>>2]|0)+16>>2]|0)+96>>2]|0;if(g|0)kM(d,g);f=f+1|0}}f=(c[V>>2]|0)+192|0;while(1){g=c[f>>2]|0;if(!g)break;i=g+16|0;f=c[i>>2]|0;if((a[f+156>>0]|0)==1?(c[f+104>>2]|0)!=0:0){qg(g);kM(d,c[(c[i>>2]|0)+104>>2]|0);f=c[i>>2]|0}f=f+164|0}if(!e){n=W;k=W}else{ug(d);n=W;k=W}}f:do if((c[46427]|0)!=0|(c[46428]|0)!=0?(c[46433]|0)!=0|(c[46432]|0)!=0:0){j=Sy(d)|0;while(1){if(!j)break f;g:do if(c[46427]|0){f=Hx(d,j)|0;while(1){if(!f)break g;g=f+-48|0;i=(c[f>>2]&3|0)==2?f:g;if(c[(c[i+16>>2]|0)+100>>2]|0){eL(i,1)|0;kM(d,c[(c[((c[f>>2]&3|0)==2?f:g)+16>>2]|0)+100>>2]|0)}f=Ix(d,f)|0}}while(0);h:do if(c[46428]|0){f=Ex(d,j)|0;while(1){if(!f)break h;g=f+16|0;if(c[(c[g>>2]|0)+104>>2]|0?eL(f,0)|0:0)kM(d,c[(c[g>>2]|0)+104>>2]|0);f=Gx(d,f)|0}}while(0);j=Ty(d,j)|0}}while(0);switch(X&15){case 4:case 8:break;default:{D_(m);D_(c[n+84>>2]|0);D_(k);D_(c[Y+16>>2]|0);rJ()}}c[46367]=1;c[46368]=1}while(0);l=Z;return}function mg(a){a=a|0;var b=0,d=0,e=0.0,f=0;b=Sy(a)|0;while(1){if(!b)break;d=c[b+16>>2]|0;if(c[d+204>>2]|0){f=d+96|0;e=+h[f>>3];d=d+240|0;h[f>>3]=+h[d>>3];h[d>>3]=e}b=Ty(a,b)|0}return}function ng(b){b=b|0;var d=0,e=0,f=0,g=0;d=(c[b+16>>2]|0)+192|0;a:while(1){f=c[d>>2]|0;if(!f){d=12;break}g=f+16|0;d=c[g>>2]|0;do if((a[d+156>>0]|0)==1){e=c[d+112>>2]|0;if(!e){e=c[d+104>>2]|0;if(!e)break;qg(f);d=e}else{e=c[(c[e+16>>2]|0)+96>>2]|0;if(!e){d=6;break a}f=e+56|0;d=d+16|0;c[f>>2]=c[d>>2];c[f+4>>2]=c[d+4>>2];c[f+8>>2]=c[d+8>>2];c[f+12>>2]=c[d+12>>2];a[e+81>>0]=1;d=e}kM(b,d);d=c[g>>2]|0}while(0);d=d+164|0}if((d|0)==6)qa(85421,85234,234,85440);else if((d|0)==12)return}function og(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0;do if(!d){g=c[b>>2]&3;d=c[((g|0)==3?b:b+48|0)+40>>2]|0;g=c[((g|0)==2?b:b+-48|0)+40>>2]|0;if((d|0)!=(g|0)){d=(c[(c[d+16>>2]|0)+232>>2]|0)==(c[(c[g+16>>2]|0)+232>>2]|0)?2:1;break}d=c[b+16>>2]|0;if(!(a[d+44>>0]|0))d=(a[d+84>>0]|0)==0?8:4;else d=4}while(0);a:do if(!e)switch(d|0){case 1:{e=c[b>>2]&3;e=(c[(c[(c[((e|0)==3?b:b+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)<(c[(c[(c[((e|0)==2?b:b+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)?16:32;break a}case 2:{e=c[b>>2]&3;e=(c[(c[(c[((e|0)==3?b:b+48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0)<(c[(c[(c[((e|0)==2?b:b+-48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0)?16:32;break a}default:{e=16;break a}}while(0);c[(c[b+16>>2]|0)+164>>2]=d|f|e;return}function pg(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=l;l=l+624|0;z=D+584|0;y=D+544|0;s=D+368|0;e=D+192|0;t=D+96|0;v=D;u=t+16|0;c[u>>2]=s;w=v+16|0;c[w>>2]=e;C=c[b>>2]|0;B=c[d>>2]|0;x=C+16|0;q=c[x>>2]|0;d=c[q+164>>2]|0;f=d&15;A=B+16|0;b=c[A>>2]|0;g=c[b+164>>2]&15;do if((g|0)==(f|0)){p=rg(C)|0;r=rg(B)|0;n=c[p>>2]|0;g=n&3;f=c[(c[((g|0)==3?p:p+48|0)+40>>2]|0)+16>>2]|0;g=c[(c[((g|0)==2?p:p+-48|0)+40>>2]|0)+16>>2]|0;i=(c[f+232>>2]|0)-(c[g+232>>2]|0)|0;o=c[r>>2]|0;m=o&3;k=c[(c[((m|0)==3?r:r+48|0)+40>>2]|0)+16>>2]|0;m=c[(c[((m|0)==2?r:r+-48|0)+40>>2]|0)+16>>2]|0;j=(c[k+232>>2]|0)-(c[m+232>>2]|0)|0;i=(i|0)>-1?i:0-i|0;j=(j|0)>-1?j:0-j|0;if((i|0)!=(j|0)){b=i-j|0;break}g=~~(+h[f+16>>3]-+h[g+16>>3]);g=(g|0)>-1?g:0-g|0;f=~~(+h[k+16>>3]-+h[m+16>>3]);f=(f|0)>-1?f:0-f|0;if((g|0)!=(f|0)){b=g-f|0;break}g=n>>>4;f=o>>>4;if((g|0)!=(f|0)){b=g-f|0;break}if(!(a[q+44>>0]|0)){d=(a[q+84>>0]|0)==0?p:C;g=d;d=c[(c[d+16>>2]|0)+164>>2]|0}else g=C;f=g+16|0;if(d&32){F3(s|0,c[f>>2]|0,176)|0;i=t;j=g;k=i+48|0;do{c[i>>2]=c[j>>2];i=i+4|0;j=j+4|0}while((i|0)<(k|0));c[u>>2]=s;j=c[g>>2]&3;i=c[t>>2]&3;c[((i|0)==3?t:t+48|0)+40>>2]=c[((j|0)==2?g:g+-48|0)+40>>2];c[((i|0)==2?t:t+-48|0)+40>>2]=c[((j|0)==3?g:g+48|0)+40>>2];i=s+16|0;j=(c[f>>2]|0)+56|0;k=i+40|0;do{c[i>>2]=c[j>>2];i=i+4|0;j=j+4|0}while((i|0)<(k|0));i=s+56|0;j=(c[f>>2]|0)+16|0;k=i+40|0;do{c[i>>2]=c[j>>2];i=i+4|0;j=j+4|0}while((i|0)<(k|0));a[s+112>>0]=1;c[s+116>>2]=g;g=t;b=c[A>>2]|0}if(!(a[b+44>>0]|0)){b=(a[b+84>>0]|0)==0?r:B;f=b;b=c[b+16>>2]|0}else f=B;d=f+16|0;if(!(c[b+164>>2]&32))e=b;else{F3(e|0,c[d>>2]|0,176)|0;i=v;j=f;k=i+48|0;do{c[i>>2]=c[j>>2];i=i+4|0;j=j+4|0}while((i|0)<(k|0));c[w>>2]=e;j=c[f>>2]&3;i=c[v>>2]&3;c[((i|0)==3?v:v+48|0)+40>>2]=c[((j|0)==2?f:f+-48|0)+40>>2];c[((i|0)==2?v:v+-48|0)+40>>2]=c[((j|0)==3?f:f+48|0)+40>>2];i=e+16|0;j=(c[d>>2]|0)+56|0;k=i+40|0;do{c[i>>2]=c[j>>2];i=i+4|0;j=j+4|0}while((i|0)<(k|0));i=e+56|0;j=(c[d>>2]|0)+16|0;k=i+40|0;do{c[i>>2]=c[j>>2];i=i+4|0;j=j+4|0}while((i|0)<(k|0));a[e+112>>0]=1;c[e+116>>2]=f}d=c[g+16>>2]|0;b=e+16|0;i=y;j=d+16|0;k=i+40|0;do{c[i>>2]=c[j>>2];i=i+4|0;j=j+4|0}while((i|0)<(k|0));i=z;j=b;k=i+40|0;do{c[i>>2]=c[j>>2];i=i+4|0;j=j+4|0}while((i|0)<(k|0));b=jg(y,z)|0;if(!b){b=e+56|0;i=y;j=d+56|0;k=i+40|0;do{c[i>>2]=c[j>>2];i=i+4|0;j=j+4|0}while((i|0)<(k|0));i=z;j=b;k=i+40|0;do{c[i>>2]=c[j>>2];i=i+4|0;j=j+4|0}while((i|0)<(k|0));b=jg(y,z)|0;if(!b){d=c[(c[x>>2]|0)+164>>2]&192;b=c[(c[A>>2]|0)+164>>2]&192;if((d|0)==(b|0)){b=((c[C>>2]|0)>>>4)-((c[B>>2]|0)>>>4)|0;break}else{b=d-b|0;break}}}}else b=g-f|0;while(0);l=D;return b|0}function qg(b){b=b|0;var d=0,e=0,f=0,g=0.0,i=0.0;f=b+16|0;d=c[f>>2]|0;if(c[d+176>>2]|0){d=c[d+180>>2]|0;while(1){d=(c[d>>2]|0)+16|0;e=c[d>>2]|0;if(!(a[e+112>>0]|0))break;else d=e+116|0}e=c[e+96>>2]|0;g=+h[e+24>>3];i=+h[e+32>>3];e=(c[(c[(ez(b)|0)+16>>2]|0)+116>>2]&1|0)!=0;b=c[f>>2]|0;f=c[(c[d>>2]|0)+96>>2]|0;h[f+56>>3]=(e?i:g)*.5+ +h[b+16>>3];h[f+64>>3]=+h[b+24>>3];a[f+81>>0]=1}return}function rg(a){a=a|0;var b=0,d=0;while(1){b=c[a+16>>2]|0;d=c[b+172>>2]|0;if(!d)break;else a=d}while(1){b=c[b+116>>2]|0;if(!b)break;a=b;b=c[b+16>>2]|0}return a|0}function sg(b,d,e,f,g,i,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;j=j|0;var k=0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0.0,w=0,x=0,y=0,z=0,A=0,B=0,C=0.0,D=0.0,E=0.0,F=0.0,G=0.0;B=l;l=l+1712|0;x=B+1664|0;s=B+1488|0;t=B+1392|0;A=B+1696|0;y=B+696|0;z=B;p=t+16|0;c[p>>2]=s;q=c[f+(g<<2)>>2]|0;r=q+16|0;k=c[r>>2]|0;u=a[k+113>>0]|0;if(c[k+164>>2]&32){F3(s|0,k|0,176)|0;k=t;n=q;o=k+48|0;do{c[k>>2]=c[n>>2];k=k+4|0;n=n+4|0}while((k|0)<(o|0));c[p>>2]=s;k=c[t>>2]&3;c[((k|0)==3?t:t+48|0)+40>>2]=c[((c[q>>2]&3|0)==2?q:q+-48|0)+40>>2];c[((k|0)==2?t:t+-48|0)+40>>2]=c[((c[q>>2]&3|0)==3?q:q+48|0)+40>>2];k=s+16|0;n=(c[r>>2]|0)+56|0;o=k+40|0;do{c[k>>2]=c[n>>2];k=k+4|0;n=n+4|0}while((k|0)<(o|0));k=s+56|0;n=(c[r>>2]|0)+16|0;o=k+40|0;do{c[k>>2]=c[n>>2];k=k+4|0;n=n+4|0}while((k|0)<(o|0));a[s+112>>0]=1;c[s+116>>2]=q;q=t}k=1;while(1){if((k|0)>=(i|0)){w=6;break}if(!(a[(c[(c[f+(k+g<<2)>>2]|0)+16>>2]|0)+113>>0]|0))k=k+1|0;else{w=7;break}}a:do if((w|0)==6)if(!(u<<24>>24)){k=c[q+16>>2]|0;if(c[k+96>>2]|0){Sg(b,d,e,q,j);break}if((j|0)==2){A=c[q>>2]&3;Tg(c[((A|0)==3?q:q+48|0)+40>>2]|0,c[((A|0)==2?q:q+-48|0)+40>>2]|0,f,g,i,2);break}t=a[k+49>>0]|0;u=a[k+89>>0]|0;if(!(t<<24>>24==1&u<<24>>24!=4)?!(t<<24>>24!=4&u<<24>>24==1):0){p=c[q>>2]&3;o=c[((p|0)==3?q:q+48|0)+40>>2]|0;p=c[((p|0)==2?q:q+-48|0)+40>>2]|0;k=c[o+16>>2]|0;n=c[k+232>>2]|0;if((n|0)>0){u=c[(c[b+16>>2]|0)+196>>2]|0;t=n+~(a[(c[(c[b+60>>2]|0)+16>>2]|0)+113>>0]&1)|0;m=+h[(c[(c[c[u+(t<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3]-+h[u+(t<<6)+16>>3]-+h[k+24>>3]-+h[u+(n<<6)+24>>3]}else m=+(c[(c[b+16>>2]|0)+252>>2]|0);C=+(i+1|0);v=+(c[d+12>>2]|0)/C;m=m/C;Vg(b,d,e,o,q,y,1);Vg(b,d,e,p,q,z,0);s=y+52|0;t=z+52|0;p=(j|0)==10;q=e+80|0;k=0;while(1){if((k|0)>=(i|0))break a;r=c[f+(k+g<<2)>>2]|0;o=c[s>>2]|0;n=o+-1|0;G=+h[y+56+(n<<5)>>3];F=+h[y+56+(n<<5)+16>>3];E=+h[y+56+(n<<5)+24>>3];h[18830]=G;h[18831]=E;k=k+1|0;C=+(k|0);D=v*C;h[18832]=F+D;C=E+m*C;h[18833]=C;h[18834]=G;h[18835]=C;n=(c[t>>2]|0)+-1|0;G=+h[z+56+(n<<5)+16>>3];h[18836]=G;h[18837]=C+m;E=+h[z+56+(n<<5)>>3];F=+h[z+56+(n<<5)+24>>3];h[18840]=G;h[18839]=F;h[18838]=E-D;h[18841]=C;n=0;while(1){if((n|0)>=(o|0)){n=0;break}o=y+56+(n<<5)|0;c[x>>2]=c[o>>2];c[x+4>>2]=c[o+4>>2];c[x+8>>2]=c[o+8>>2];c[x+12>>2]=c[o+12>>2];c[x+16>>2]=c[o+16>>2];c[x+20>>2]=c[o+20>>2];c[x+24>>2]=c[o+24>>2];c[x+28>>2]=c[o+28>>2];SK(e,x);n=n+1|0;o=c[s>>2]|0}while(1){if((n|0)==3)break;j=150640+(n<<5)|0;c[x>>2]=c[j>>2];c[x+4>>2]=c[j+4>>2];c[x+8>>2]=c[j+8>>2];c[x+12>>2]=c[j+12>>2];c[x+16>>2]=c[j+16>>2];c[x+20>>2]=c[j+20>>2];c[x+24>>2]=c[j+24>>2];c[x+28>>2]=c[j+28>>2];SK(e,x);n=n+1|0}o=c[t>>2]|0;while(1){n=o+-1|0;if((o|0)<=0)break;o=z+56+(n<<5)|0;c[x>>2]=c[o>>2];c[x+4>>2]=c[o+4>>2];c[x+8>>2]=c[o+8>>2];c[x+12>>2]=c[o+12>>2];c[x+16>>2]=c[o+16>>2];c[x+20>>2]=c[o+20>>2];c[x+24>>2]=c[o+24>>2];c[x+28>>2]=c[o+28>>2];SK(e,x);o=n}if(p)n=sJ(e,A)|0;else n=yJ(e,A)|0;o=c[A>>2]|0;if(!o)break a;QK(r,c[((c[r>>2]&3|0)==2?r:r+-48|0)+40>>2]|0,n,o,17296);c[q>>2]=0}}Ug(b,d,e,f,g,i,q,(j|0)==10&1)}else w=7;while(0);if((w|0)==7)Rg(b,f,g,i,q,j);l=B;return}function tg(b,d,e,f,g,i,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;j=j|0;var k=0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0;ba=l;l=l+2576|0;S=ba+2528|0;_=ba+2568|0;k=ba+2352|0;n=ba+2176|0;t=ba+1904|0;Y=ba+1808|0;$=ba+1712|0;T=ba+1016|0;U=ba+320|0;V=ba+256|0;X=ba+2564|0;Z=ba+2560|0;z=ba+288|0;A=ba+224|0;L=ba+192|0;M=ba+160|0;N=ba+128|0;P=ba+96|0;Q=ba+64|0;R=ba+32|0;W=ba;s=t+16|0;c[s>>2]=k;o=Y+16|0;c[o>>2]=n;aa=$+16|0;c[aa>>2]=ba+2e3;if(!(c[45964]|0)){c[45964]=vH(32e3)|0;c[45965]=vH(32e3)|0;c[45966]=2e3;c[45967]=2e3}u=c[f+(g<<2)>>2]|0;K=c[u>>2]&3;p=u+48|0;q=u+-48|0;K=(c[(c[(c[((K|0)==3?u:p)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(c[(c[(c[((K|0)==2?u:q)+40>>2]|0)+16>>2]|0)+232>>2]|0)|0;r=u+16|0;if((((K|0)>-1?K:0-K|0)|0)<=1){k=c[r>>2]|0;if(!(c[k+164>>2]&32)){K=u;n=0}else{n=c[s>>2]|0;F3(n|0,k|0,176)|0;w=t;x=u;y=w+48|0;do{c[w>>2]=c[x>>2];w=w+4|0;x=x+4|0}while((w|0)<(y|0));c[s>>2]=n;w=c[t>>2]&3;c[((w|0)==3?t:t+48|0)+40>>2]=c[((c[u>>2]&3|0)==2?u:q)+40>>2];c[((w|0)==2?t:t+-48|0)+40>>2]=c[((c[u>>2]&3|0)==3?u:p)+40>>2];w=n+16|0;x=(c[r>>2]|0)+56|0;y=w+40|0;do{c[w>>2]=c[x>>2];w=w+4|0;x=x+4|0}while((w|0)<(y|0));k=c[s>>2]|0;w=k+56|0;x=(c[r>>2]|0)+16|0;y=w+40|0;do{c[w>>2]=c[x>>2];w=w+4|0;x=x+4|0}while((w|0)<(y|0));a[k+112>>0]=1;n=0;J=12}}else{F3(k|0,c[r>>2]|0,176)|0;w=t;x=u;y=w+48|0;do{c[w>>2]=c[x>>2];w=w+4|0;x=x+4|0}while((w|0)<(y|0));w=t+48|0;x=p;y=w+48|0;do{c[w>>2]=c[x>>2];w=w+4|0;x=x+4|0}while((w|0)<(y|0));c[s>>2]=k;k=c[r>>2]|0;if(!(c[k+164>>2]&32)){F3(n|0,k|0,176)|0;w=Y;x=u;y=w+48|0;do{c[w>>2]=c[x>>2];w=w+4|0;x=x+4|0}while((w|0)<(y|0));c[o>>2]=n;o=c[t>>2]|0;c[((o&3|0)==3?t:t+48|0)+40>>2]=c[((c[u>>2]&3|0)==3?u:p)+40>>2];w=Y+48|0;x=p;y=w+48|0;do{c[w>>2]=c[x>>2];w=w+4|0;x=x+4|0}while((w|0)<(y|0))}else{n=c[o>>2]|0;F3(n|0,k|0,176)|0;w=Y;x=u;y=w+48|0;do{c[w>>2]=c[x>>2];w=w+4|0;x=x+4|0}while((w|0)<(y|0));c[o>>2]=n;w=c[Y>>2]&3;c[((w|0)==3?Y:Y+48|0)+40>>2]=c[((c[u>>2]&3|0)==2?u:q)+40>>2];c[((w|0)==2?Y:Y+-48|0)+40>>2]=c[((c[u>>2]&3|0)==3?u:p)+40>>2];w=n+16|0;x=(c[r>>2]|0)+56|0;y=w+40|0;do{c[w>>2]=c[x>>2];w=w+4|0;x=x+4|0}while((w|0)<(y|0));k=c[o>>2]|0;w=k+56|0;x=(c[r>>2]|0)+16|0;y=w+40|0;do{c[w>>2]=c[x>>2];w=w+4|0;x=x+4|0}while((w|0)<(y|0));a[k+112>>0]=1;c[k+116>>2]=u;o=c[t>>2]|0;c[((o&3|0)==3?t:t+48|0)+40>>2]=c[((c[u>>2]&3|0)==2?u:q)+40>>2];w=(c[s>>2]|0)+16|0;x=(c[r>>2]|0)+56|0;y=w+40|0;do{c[w>>2]=c[x>>2];w=w+4|0;x=x+4|0}while((w|0)<(y|0))}k=rg(u)|0;while(1){n=c[(c[k+16>>2]|0)+172>>2]|0;if(!n)break;else k=n}c[((o&3|0)==2?t:t+-48|0)+40>>2]=c[((c[k>>2]&3|0)==2?k:k+-48|0)+40>>2];k=c[s>>2]|0;a[k+84>>0]=0;a[k+112>>0]=1;n=k+56|0;c[n>>2]=0;c[n+4>>2]=0;c[n+8>>2]=0;c[n+12>>2]=0;n=1;J=12}if((J|0)==12){c[k+116>>2]=u;K=t}H=(j|0)==2;if(H?(v=xg(b,K,c[45964]|0,_)|0,c[Z>>2]=v,(v|0)!=0):0)J=63;else J=15;a:do if((J|0)==15){G=(j|0)==10;c[Z>>2]=0;o=c[K>>2]&3;k=c[((o|0)==3?K:K+48|0)+40>>2]|0;o=c[((o|0)==2?K:K+-48|0)+40>>2]|0;c[_>>2]=o;yg(z,b,d,k,0,K);c[T>>2]=c[z>>2];c[T+4>>2]=c[z+4>>2];c[T+8>>2]=c[z+8>>2];c[T+12>>2]=c[z+12>>2];c[T+16>>2]=c[z+16>>2];c[T+20>>2]=c[z+20>>2];c[T+24>>2]=c[z+24>>2];c[T+28>>2]=c[z+28>>2];c[V>>2]=c[z>>2];c[V+4>>2]=c[z+4>>2];c[V+8>>2]=c[z+8>>2];c[V+12>>2]=c[z+12>>2];c[V+16>>2]=c[z+16>>2];c[V+20>>2]=c[z+20>>2];TK(e,K,1,T,zg(k)|0);B=T+52|0;I=(c[B>>2]|0)+-1|0;D=V+24|0;h[D>>3]=+h[T+56+(I<<5)+24>>3];E=V+8|0;h[E>>3]=+h[T+56+(I<<5)+8>>3];I=c[k+16>>2]|0;F=b+16|0;m=+h[I+24>>3]-+h[(c[(c[F>>2]|0)+196>>2]|0)+(c[I+232>>2]<<6)+16>>3];c[S>>2]=c[V>>2];c[S+4>>2]=c[V+4>>2];c[S+8>>2]=c[V+8>>2];c[S+12>>2]=c[V+12>>2];c[S+16>>2]=c[V+16>>2];c[S+20>>2]=c[V+20>>2];c[S+24>>2]=c[V+24>>2];c[S+28>>2]=c[V+28>>2];Ag(A,S,1,m);c[V>>2]=c[A>>2];c[V+4>>2]=c[A+4>>2];c[V+8>>2]=c[A+8>>2];c[V+12>>2]=c[A+12>>2];c[V+16>>2]=c[A+16>>2];c[V+20>>2]=c[A+20>>2];c[V+24>>2]=c[A+24>>2];c[V+28>>2]=c[A+28>>2];A=V+16|0;if(+h[V>>3]<+h[A>>3]?+h[E>>3]<+h[D>>3]:0){I=c[B>>2]|0;c[B>>2]=I+1;I=T+56+(I<<5)|0;c[I>>2]=c[V>>2];c[I+4>>2]=c[V+4>>2];c[I+8>>2]=c[V+8>>2];c[I+12>>2]=c[V+12>>2];c[I+16>>2]=c[V+16>>2];c[I+20>>2]=c[V+20>>2];c[I+24>>2]=c[V+24>>2];c[I+28>>2]=c[V+28>>2]}w=b+60|0;C=U+52|0;x=e+56|0;y=e+69|0;j=e+16|0;z=e+29|0;I=K;q=0;r=-1;b:while(1){s=k;t=0;k=0;u=I;while(1){p=o;v=o;if((a[(c[p+16>>2]|0)+156>>0]|0)!=1)break b;if((kb[c[17300>>2]&63](p)|0)<<24>>24)break b;o=t|1;ca=150640+(t<<5)|0;Bg(L,d,b,c[(c[s+16>>2]|0)+232>>2]|0);c[ca>>2]=c[L>>2];c[ca+4>>2]=c[L+4>>2];c[ca+8>>2]=c[L+8>>2];c[ca+12>>2]=c[L+12>>2];c[ca+16>>2]=c[L+16>>2];c[ca+20>>2]=c[L+20>>2];c[ca+24>>2]=c[L+24>>2];c[ca+28>>2]=c[L+28>>2];if(!k){q=Cg(p)|0;k=(q|0)<((a[(c[(c[w>>2]|0)+16>>2]|0)+113>>0]<<1&2)+3&255|0);q=k?q:q+-2|0;r=k?r:1;k=(k^1)&1}if(!((k|0)==0|(r|0)>0))break;ca=150640+(o<<5)|0;yg(M,b,d,p,u,c[c[(c[p+16>>2]|0)+180>>2]>>2]|0);c[ca>>2]=c[M>>2];c[ca+4>>2]=c[M+4>>2];c[ca+8>>2]=c[M+8>>2];c[ca+12>>2]=c[M+12>>2];c[ca+16>>2]=c[M+16>>2];c[ca+20>>2]=c[M+20>>2];c[ca+24>>2]=c[M+24>>2];c[ca+28>>2]=c[M+28>>2];ca=c[c[(c[v+16>>2]|0)+180>>2]>>2]|0;o=c[ca>>2]&3;s=c[((o|0)==3?ca:ca+48|0)+40>>2]|0;o=c[((o|0)==2?ca:ca+-48|0)+40>>2]|0;c[_>>2]=o;t=t+2|0;r=r+-1|0;u=ca}yg(N,b,d,p,u,c[c[(c[p+16>>2]|0)+180>>2]>>2]|0);c[U>>2]=c[N>>2];c[U+4>>2]=c[N+4>>2];c[U+8>>2]=c[N+8>>2];c[U+12>>2]=c[N+12>>2];c[U+16>>2]=c[N+16>>2];c[U+20>>2]=c[N+20>>2];c[U+24>>2]=c[N+24>>2];c[U+28>>2]=c[N+28>>2];WK(e,u,1,U,zg(c[((c[u>>2]&3|0)==2?u:u+-48|0)+40>>2]|0)|0);ca=U+56+((c[C>>2]|0)+-1<<5)|0;t=c[v+16>>2]|0;m=+h[(c[(c[F>>2]|0)+196>>2]|0)+(c[t+232>>2]<<6)+24>>3]+ +h[t+24>>3];c[S>>2]=c[ca>>2];c[S+4>>2]=c[ca+4>>2];c[S+8>>2]=c[ca+8>>2];c[S+12>>2]=c[ca+12>>2];c[S+16>>2]=c[ca+16>>2];c[S+20>>2]=c[ca+20>>2];c[S+24>>2]=c[ca+24>>2];c[S+28>>2]=c[ca+28>>2];Ag(V,S,4,m);if(+h[V>>3]<+h[A>>3]?+h[E>>3]<+h[D>>3]:0){ca=c[C>>2]|0;c[C>>2]=ca+1;ca=U+56+(ca<<5)|0;c[ca>>2]=c[V>>2];c[ca+4>>2]=c[V+4>>2];c[ca+8>>2]=c[V+8>>2];c[ca+12>>2]=c[V+12>>2];c[ca+16>>2]=c[V+16>>2];c[ca+20>>2]=c[V+20>>2];c[ca+24>>2]=c[V+24>>2];c[ca+28>>2]=c[V+28>>2]}h[x>>3]=1.5707963267948966;a[y>>0]=1;Dg(e,I,u,T,U,o);if(!G){k=yJ(e,X)|0;o=c[X>>2]|0;if(H&(o|0)>4){ca=k+16|0;c[ca>>2]=c[k>>2];c[ca+4>>2]=c[k+4>>2];c[ca+8>>2]=c[k+8>>2];c[ca+12>>2]=c[k+12>>2];ca=k+32|0;o=k+(o+-1<<4)|0;c[ca>>2]=c[o>>2];c[ca+4>>2]=c[o+4>>2];c[ca+8>>2]=c[o+8>>2];c[ca+12>>2]=c[o+12>>2];G3(k+48|0,o|0,16)|0;c[X>>2]=4;o=4}else J=33}else{k=sJ(e,X)|0;o=c[X>>2]|0;J=33}if((J|0)==33){J=0;if(!o)break a}u=c[Z>>2]|0;p=u+o|0;if((p|0)>(c[45966]|0)){c[45966]=p<<1;t=xH(c[45964]|0,p<<5)|0;c[45964]=t;o=c[X>>2]|0}else t=c[45964]|0;s=0;p=u;while(1){if((s|0)>=(o|0))break;ca=t+(p<<4)|0;u=k+(s<<4)|0;c[ca>>2]=c[u>>2];c[ca+4>>2]=c[u+4>>2];c[ca+8>>2]=c[u+8>>2];c[ca+12>>2]=c[u+12>>2];s=s+1|0;p=p+1|0}c[Z>>2]=p;o=Eg(c[c[(c[v+16>>2]|0)+180>>2]>>2]|0,q,t,Z)|0;Fg(I,e);p=c[o>>2]&3;k=c[((p|0)==3?o:o+48|0)+40>>2]|0;p=c[((p|0)==2?o:o+-48|0)+40>>2]|0;c[_>>2]=p;I=k+16|0;yg(P,b,d,k,c[c[(c[I>>2]|0)+172>>2]>>2]|0,o);c[T>>2]=c[P>>2];c[T+4>>2]=c[P+4>>2];c[T+8>>2]=c[P+8>>2];c[T+12>>2]=c[P+12>>2];c[T+16>>2]=c[P+16>>2];c[T+20>>2]=c[P+20>>2];c[T+24>>2]=c[P+24>>2];c[T+28>>2]=c[P+28>>2];TK(e,o,1,T,zg(k)|0);ca=T+56+((c[B>>2]|0)+-1<<5)|0;I=c[I>>2]|0;m=+h[I+24>>3]-+h[(c[(c[F>>2]|0)+196>>2]|0)+(c[I+232>>2]<<6)+16>>3];c[S>>2]=c[ca>>2];c[S+4>>2]=c[ca+4>>2];c[S+8>>2]=c[ca+8>>2];c[S+12>>2]=c[ca+12>>2];c[S+16>>2]=c[ca+16>>2];c[S+20>>2]=c[ca+20>>2];c[S+24>>2]=c[ca+24>>2];c[S+28>>2]=c[ca+28>>2];Ag(V,S,1,m);if(+h[V>>3]<+h[A>>3]?+h[E>>3]<+h[D>>3]:0){ca=c[B>>2]|0;c[B>>2]=ca+1;ca=T+56+(ca<<5)|0;c[ca>>2]=c[V>>2];c[ca+4>>2]=c[V+4>>2];c[ca+8>>2]=c[V+8>>2];c[ca+12>>2]=c[V+12>>2];c[ca+16>>2]=c[V+16>>2];c[ca+20>>2]=c[V+20>>2];c[ca+24>>2]=c[V+24>>2];c[ca+28>>2]=c[V+28>>2]}h[j>>3]=-1.5707963267948966;a[z>>0]=1;I=o;o=p}k=t|1;r=150640+(t<<5)|0;Bg(Q,d,b,c[(c[s+16>>2]|0)+232>>2]|0);c[r>>2]=c[Q>>2];c[r+4>>2]=c[Q+4>>2];c[r+8>>2]=c[Q+8>>2];c[r+12>>2]=c[Q+12>>2];c[r+16>>2]=c[Q+16>>2];c[r+20>>2]=c[Q+20>>2];c[r+24>>2]=c[Q+24>>2];c[r+28>>2]=c[Q+28>>2];yg(R,b,d,p,u,0);c[U>>2]=c[R>>2];c[U+4>>2]=c[R+4>>2];c[U+8>>2]=c[R+8>>2];c[U+12>>2]=c[R+12>>2];c[U+16>>2]=c[R+16>>2];c[U+20>>2]=c[R+20>>2];c[U+24>>2]=c[R+24>>2];c[U+28>>2]=c[R+28>>2];c[V>>2]=c[R>>2];c[V+4>>2]=c[R+4>>2];c[V+8>>2]=c[R+8>>2];c[V+12>>2]=c[R+12>>2];c[V+16>>2]=c[R+16>>2];c[V+20>>2]=c[R+20>>2];c[V+24>>2]=c[R+24>>2];c[V+28>>2]=c[R+28>>2];r=(n|0)!=0;s=u+-48|0;WK(e,r?Y:u,1,U,zg(c[((c[u>>2]&3|0)==2?u:s)+40>>2]|0)|0);ca=(c[C>>2]|0)+-1|0;h[D>>3]=+h[U+56+(ca<<5)+24>>3];h[E>>3]=+h[U+56+(ca<<5)+8>>3];ca=c[v+16>>2]|0;m=+h[(c[(c[F>>2]|0)+196>>2]|0)+(c[ca+232>>2]<<6)+24>>3]+ +h[ca+24>>3];c[S>>2]=c[V>>2];c[S+4>>2]=c[V+4>>2];c[S+8>>2]=c[V+8>>2];c[S+12>>2]=c[V+12>>2];c[S+16>>2]=c[V+16>>2];c[S+20>>2]=c[V+20>>2];c[S+24>>2]=c[V+24>>2];c[S+28>>2]=c[V+28>>2];Ag(W,S,4,m);c[V>>2]=c[W>>2];c[V+4>>2]=c[W+4>>2];c[V+8>>2]=c[W+8>>2];c[V+12>>2]=c[W+12>>2];c[V+16>>2]=c[W+16>>2];c[V+20>>2]=c[W+20>>2];c[V+24>>2]=c[W+24>>2];c[V+28>>2]=c[W+28>>2];if(+h[V>>3]<+h[A>>3]?+h[E>>3]<+h[D>>3]:0){ca=c[C>>2]|0;c[C>>2]=ca+1;ca=U+56+(ca<<5)|0;c[ca>>2]=c[V>>2];c[ca+4>>2]=c[V+4>>2];c[ca+8>>2]=c[V+8>>2];c[ca+12>>2]=c[V+12>>2];c[ca+16>>2]=c[V+16>>2];c[ca+20>>2]=c[V+20>>2];c[ca+24>>2]=c[V+24>>2];c[ca+28>>2]=c[V+28>>2]}Dg(e,I,u,T,U,k);if(G)q=sJ(e,X)|0;else q=yJ(e,X)|0;k=c[X>>2]|0;if(!(H&(k|0)>4)){if(!k)break}else{ca=q+16|0;c[ca>>2]=c[q>>2];c[ca+4>>2]=c[q+4>>2];c[ca+8>>2]=c[q+8>>2];c[ca+12>>2]=c[q+12>>2];ca=q+32|0;k=q+(k+-1<<4)|0;c[ca>>2]=c[k>>2];c[ca+4>>2]=c[k+4>>2];c[ca+8>>2]=c[k+8>>2];c[ca+12>>2]=c[k+12>>2];G3(q+48|0,k|0,16)|0;c[X>>2]=4;k=4}o=c[Z>>2]|0;n=o+k|0;if((n|0)>(c[45966]|0)){c[45966]=n<<1;p=xH(c[45964]|0,n<<5)|0;c[45964]=p;k=c[X>>2]|0}else p=c[45964]|0;n=0;while(1){if((n|0)>=(k|0))break;ca=p+(o<<4)|0;X=q+(n<<4)|0;c[ca>>2]=c[X>>2];c[ca+4>>2]=c[X+4>>2];c[ca+8>>2]=c[X+8>>2];c[ca+12>>2]=c[X+12>>2];n=n+1|0;o=o+1|0}c[Z>>2]=o;Fg(I,e);if(r)k=(c[Y>>2]&3|0)==2?Y:Y+-48|0;else k=(c[u>>2]&3|0)==2?u:s;c[_>>2]=c[k+40>>2];v=o;J=63}while(0);c:do if((J|0)==63){if((i|0)==1){QK(K,c[_>>2]|0,c[45964]|0,v,17296);break}t=d+12|0;u=v+-1|0;m=+((O(c[t>>2]|0,i+-1|0)|0)/2|0|0);n=c[45964]|0;k=1;while(1){if((k|0)>=(u|0))break;ca=n+(k<<4)|0;h[ca>>3]=+h[ca>>3]-m;k=k+1|0}k=c[45966]|0;if((k|0)>(c[45967]|0)){c[45967]=k;o=xH(c[45965]|0,k<<4)|0;c[45965]=o;n=c[45964]|0}else o=c[45965]|0;k=0;while(1){if((k|0)>=(v|0))break;ca=o+(k<<4)|0;d=n+(k<<4)|0;c[ca>>2]=c[d>>2];c[ca+4>>2]=c[d+4>>2];c[ca+8>>2]=c[d+8>>2];c[ca+12>>2]=c[d+12>>2];k=k+1|0}QK(K,c[_>>2]|0,o,v,17296);r=$+48|0;s=$+-48|0;q=1;while(1){if((q|0)>=(i|0))break c;o=c[f+(q+g<<2)>>2]|0;p=o+16|0;k=c[p>>2]|0;if(c[k+164>>2]&32){n=c[aa>>2]|0;F3(n|0,k|0,176)|0;w=$;x=o;y=w+48|0;do{c[w>>2]=c[x>>2];w=w+4|0;x=x+4|0}while((w|0)<(y|0));c[aa>>2]=n;w=c[$>>2]&3;c[((w|0)==3?$:r)+40>>2]=c[((c[o>>2]&3|0)==2?o:o+-48|0)+40>>2];c[((w|0)==2?$:s)+40>>2]=c[((c[o>>2]&3|0)==3?o:o+48|0)+40>>2];w=n+16|0;x=(c[p>>2]|0)+56|0;y=w+40|0;do{c[w>>2]=c[x>>2];w=w+4|0;x=x+4|0}while((w|0)<(y|0));k=c[aa>>2]|0;w=k+56|0;x=(c[p>>2]|0)+16|0;y=w+40|0;do{c[w>>2]=c[x>>2];w=w+4|0;x=x+4|0}while((w|0)<(y|0));a[k+112>>0]=1;c[k+116>>2]=o;o=$}p=c[45964]|0;k=1;while(1){if((k|0)>=(u|0))break;ca=p+(k<<4)|0;h[ca>>3]=+h[ca>>3]+ +(c[t>>2]|0);k=k+1|0}n=c[45965]|0;k=0;while(1){if((k|0)>=(v|0))break;ca=n+(k<<4)|0;_=p+(k<<4)|0;c[ca>>2]=c[_>>2];c[ca+4>>2]=c[_+4>>2];c[ca+8>>2]=c[_+8>>2];c[ca+12>>2]=c[_+12>>2];k=k+1|0}QK(o,c[((c[o>>2]&3|0)==2?o:o+-48|0)+40>>2]|0,n,v,17296);q=q+1|0}}while(0);l=ba;return}function ug(a){a=a|0;var b=0,d=0,e=0;b=Sy(a)|0;while(1){if(!b)break;d=Ex(a,b)|0;while(1){if(!d)break;if((kb[c[4324]&63](d)|0)<<24>>24?(e=c[(c[d+16>>2]|0)+8>>2]|0,e|0):0)vg(e);d=Gx(a,d)|0}b=Ty(a,b)|0}return}function vg(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;f=c[a+4>>2]|0;g=vH(f*48|0)|0;b=g;d=0;e=(c[a>>2]|0)+((f+-1|0)*48|0)|0;while(1){if((d|0)>=(f|0)){b=0;break}wg(e,b);b=b+48|0;d=d+1|0;e=e+-48|0}while(1){d=c[a>>2]|0;if((b|0)>=(f|0))break;D_(c[d+(b*48|0)>>2]|0);b=b+1|0}D_(d);c[a>>2]=g;return}function wg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;g=c[a+4>>2]|0;h=vH(g<<4)|0;d=h;e=0;f=(c[a>>2]|0)+(g+-1<<4)|0;while(1){if((e|0)>=(g|0))break;c[d>>2]=c[f>>2];c[d+4>>2]=c[f+4>>2];c[d+8>>2]=c[f+8>>2];c[d+12>>2]=c[f+12>>2];d=d+16|0;e=e+1|0;f=f+-16|0}c[b>>2]=h;c[b+4>>2]=g;c[b+8>>2]=c[a+12>>2];c[b+12>>2]=c[a+8>>2];h=b+16|0;g=a+32|0;c[h>>2]=c[g>>2];c[h+4>>2]=c[g+4>>2];c[h+8>>2]=c[g+8>>2];c[h+12>>2]=c[g+12>>2];h=b+32|0;g=a+16|0;c[h>>2]=c[g>>2];c[h+4>>2]=c[g+4>>2];c[h+8>>2]=c[g+8>>2];c[h+12>>2]=c[g+12>>2];return}function xg(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0.0,j=0.0,k=0.0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;x=l;l=l+96|0;q=x+80|0;s=x+64|0;r=x+48|0;u=x+32|0;v=x+16|0;w=x;m=d;while(1){t=m+16|0;g=c[t>>2]|0;if(!(a[g+112>>0]|0))break;m=c[g+116>>2]|0}g=c[m>>2]&3;o=c[((g|0)==2?m:m+-48|0)+40>>2]|0;g=c[((g|0)==3?m:m+48|0)+40>>2]|0;m=o+16|0;n=g+16|0;y=(c[(c[m>>2]|0)+232>>2]|0)-(c[(c[n>>2]|0)+232>>2]|0)|0;switch(((y|0)>-1?y:0-y|0)|0){case 1:{g=0;break}case 2:{if(!(a[(c[(c[b+60>>2]|0)+16>>2]|0)+113>>0]&1))p=6;else g=0;break}default:p=6}do if((p|0)==6){if((c[((c[d>>2]&3|0)==3?d:d+48|0)+40>>2]|0)==(g|0)){c[f>>2]=o;y=(c[n>>2]|0)+16|0;p=(c[t>>2]|0)+16|0;c[s>>2]=c[y>>2];c[s+4>>2]=c[y+4>>2];c[s+8>>2]=c[y+8>>2];c[s+12>>2]=c[y+12>>2];c[q>>2]=c[p>>2];c[q+4>>2]=c[p+4>>2];c[q+8>>2]=c[p+8>>2];c[q+12>>2]=c[p+12>>2];Pg(u,s,q);p=(c[m>>2]|0)+16|0;y=(c[t>>2]|0)+56|0;c[s>>2]=c[p>>2];c[s+4>>2]=c[p+4>>2];c[s+8>>2]=c[p+8>>2];c[s+12>>2]=c[p+12>>2];c[q>>2]=c[y>>2];c[q+4>>2]=c[y+4>>2];c[q+8>>2]=c[y+8>>2];c[q+12>>2]=c[y+12>>2];Pg(v,s,q)}else{c[f>>2]=g;y=(c[m>>2]|0)+16|0;p=(c[t>>2]|0)+56|0;c[s>>2]=c[y>>2];c[s+4>>2]=c[y+4>>2];c[s+8>>2]=c[y+8>>2];c[s+12>>2]=c[y+12>>2];c[q>>2]=c[p>>2];c[q+4>>2]=c[p+4>>2];c[q+8>>2]=c[p+8>>2];c[q+12>>2]=c[p+12>>2];Pg(u,s,q);p=(c[n>>2]|0)+16|0;y=(c[t>>2]|0)+16|0;c[s>>2]=c[p>>2];c[s+4>>2]=c[p+4>>2];c[s+8>>2]=c[p+8>>2];c[s+12>>2]=c[p+12>>2];c[q>>2]=c[y>>2];c[q+4>>2]=c[y+4>>2];c[q+8>>2]=c[y+8>>2];c[q+12>>2]=c[y+12>>2];Pg(v,s,q)}g=c[(c[t>>2]|0)+96>>2]|0;if(!g){g=e+16|0;c[e>>2]=c[u>>2];c[e+4>>2]=c[u+4>>2];c[e+8>>2]=c[u+8>>2];c[e+12>>2]=c[u+12>>2];c[g>>2]=c[u>>2];c[g+4>>2]=c[u+4>>2];c[g+8>>2]=c[u+8>>2];c[g+12>>2]=c[u+12>>2];g=e+48|0;y=e+32|0;c[y>>2]=c[v>>2];c[y+4>>2]=c[v+4>>2];c[y+8>>2]=c[v+8>>2];c[y+12>>2]=c[v+12>>2];c[g>>2]=c[v>>2];c[g+4>>2]=c[v+4>>2];c[g+8>>2]=c[v+8>>2];c[g+12>>2]=c[v+12>>2];g=4;break}j=+h[g+24>>3];i=+h[g+32>>3];p=(c[(c[(ez(o)|0)+16>>2]|0)+116>>2]&1|0)==0;k=p?i:j;y=(c[(c[t>>2]|0)+96>>2]|0)+56|0;c[w>>2]=c[y>>2];c[w+4>>2]=c[y+4>>2];c[w+8>>2]=c[y+8>>2];c[w+12>>2]=c[y+12>>2];c[r>>2]=c[v>>2];c[r+4>>2]=c[v+4>>2];c[r+8>>2]=c[v+8>>2];c[r+12>>2]=c[v+12>>2];c[s>>2]=c[u>>2];c[s+4>>2]=c[u+4>>2];c[s+8>>2]=c[u+8>>2];c[s+12>>2]=c[u+12>>2];c[q>>2]=c[y>>2];c[q+4>>2]=c[y+4>>2];c[q+8>>2]=c[y+8>>2];c[q+12>>2]=c[y+12>>2];y=(Qg(r,s,q)|0)==0;i=(p?j:i)*.5;j=+h[w>>3];if(y){h[w>>3]=j-i;y=w+8|0;h[y>>3]=+h[y>>3]+k*.5}else{h[w>>3]=j+i;y=w+8|0;h[y>>3]=+h[y>>3]-k*.5}g=e+16|0;c[e>>2]=c[u>>2];c[e+4>>2]=c[u+4>>2];c[e+8>>2]=c[u+8>>2];c[e+12>>2]=c[u+12>>2];c[g>>2]=c[u>>2];c[g+4>>2]=c[u+4>>2];c[g+8>>2]=c[u+8>>2];c[g+12>>2]=c[u+12>>2];g=e+32|0;y=e+48|0;u=e+64|0;c[u>>2]=c[w>>2];c[u+4>>2]=c[w+4>>2];c[u+8>>2]=c[w+8>>2];c[u+12>>2]=c[w+12>>2];c[y>>2]=c[w>>2];c[y+4>>2]=c[w+4>>2];c[y+8>>2]=c[w+8>>2];c[y+12>>2]=c[w+12>>2];c[g>>2]=c[w>>2];c[g+4>>2]=c[w+4>>2];c[g+8>>2]=c[w+8>>2];c[g+12>>2]=c[w+12>>2];g=e+80|0;y=e+96|0;c[y>>2]=c[v>>2];c[y+4>>2]=c[v+4>>2];c[y+8>>2]=c[v+8>>2];c[y+12>>2]=c[v+12>>2];c[g>>2]=c[v>>2];c[g+4>>2]=c[v+4>>2];c[g+8>>2]=c[v+8>>2];c[g+12>>2]=c[v+12>>2];g=7}while(0);l=x;return g|0}function yg(b,d,e,f,g,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;var j=0.0,k=0,l=0,m=0.0,n=0,o=0.0,p=0.0,q=0;q=c[f+16>>2]|0;p=+h[q+16>>3];j=p-+h[q+88>>3];m=j+-4.0;l=Lg(d,f,g,i,-1)|0;if(!l){n=~~(j+(m>=0.0?-3.5:-4.5));k=c[e>>2]|0;k=(k|0)>(n|0)?n:k}else{k=Mg(d,f,l)|0;do if(!k){n=c[l+16>>2]|0;j=+h[n+240>>3]+ +h[n+16>>3];if(!(a[n+156>>0]|0)){j=+(c[(c[d+16>>2]|0)+248>>2]|0)*.5+j;break}else{j=j+ +(c[e+8>>2]|0);break}}else j=+h[(c[k+16>>2]|0)+32>>3]+ +(c[e+8>>2]|0);while(0);o=j=0.0?.5:-.5))}o=+(k|0);n=(a[q+156>>0]|0)==1;if(n?(c[q+104>>2]|0)!=0:0)m=p+10.0;else m=p+4.0+ +h[q+96>>3];l=Lg(d,f,g,i,1)|0;if(!l){f=~~(m+(m>=0.0?.5:-.5));k=c[e+4>>2]|0;k=(k|0)<(f|0)?f:k}else{k=Mg(d,f,l)|0;do if(!k){f=c[l+16>>2]|0;j=+h[f+16>>3]-+h[f+88>>3];if(!(a[f+156>>0]|0)){j=j-+(c[(c[d+16>>2]|0)+248>>2]|0)*.5;break}else{j=j-+(c[e+8>>2]|0);break}}else j=+h[(c[k+16>>2]|0)+16>>3]-+(c[e+8>>2]|0);while(0);m=j>m?j:m;k=~~(m+(m>=0.0?.5:-.5))}j=+(k|0);if(n?(c[q+104>>2]|0)!=0:0){j=j-+h[q+96>>3];if(j>3];d=c[(c[d+16>>2]|0)+196>>2]|0;q=c[q+232>>2]|0;m=p-+h[d+(q<<6)+16>>3];p=+h[d+(q<<6)+24>>3]+p;h[b>>3]=o;h[b+8>>3]=m;h[b+16>>3]=j;h[b+24>>3]=p;return}function zg(b){b=b|0;b=c[b+16>>2]|0;if((a[b+156>>0]|0)==1)if((c[b+176>>2]|0)>1)b=1;else b=(c[b+184>>2]|0)>1&1;else b=0;return b|0}function Ag(a,b,d,e){a=a|0;b=b|0;d=d|0;e=+e;var f=0,g=0;g=l;l=l+32|0;f=g;switch(d|0){case 1:{Kg(f,+h[b>>3],e,+h[b+16>>3],+h[b+8>>3]);break}case 4:{Kg(f,+h[b>>3],+h[b+24>>3],+h[b+16>>3],e);break}default:{}}c[a>>2]=c[f>>2];c[a+4>>2]=c[f+4>>2];c[a+8>>2]=c[f+8>>2];c[a+12>>2]=c[f+12>>2];c[a+16>>2]=c[f+16>>2];c[a+20>>2]=c[f+20>>2];c[a+24>>2]=c[f+24>>2];c[a+28>>2]=c[f+28>>2];l=g;return}function Bg(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,g=0.0,i=0.0,j=0.0,k=0,l=0,m=0,n=0,o=0;l=c[b+16>>2]|0;k=l+(e<<5)|0;j=+h[k>>3];m=l+(e<<5)+8|0;g=+h[m>>3];n=l+(e<<5)+16|0;f=+h[n>>3];l=l+(e<<5)+24|0;i=+h[l>>3];if(j==f){d=c[(c[d+16>>2]|0)+196>>2]|0;o=e+1|0;j=+(c[b>>2]|0);g=+h[d+(o<<6)+24>>3]+ +h[(c[(c[c[d+(o<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3];f=+(c[b+4>>2]|0);i=+h[(c[(c[c[d+(e<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3]-+h[d+(e<<6)+16>>3];h[k>>3]=j;h[m>>3]=g;h[n>>3]=f;h[l>>3]=i}h[a>>3]=j;h[a+8>>3]=g;h[a+16>>3]=f;h[a+24>>3]=i;return}function Cg(b){b=b|0;var d=0,e=0;b=c[b+16>>2]|0;e=b+16|0;d=0;while(1){b=c[c[b+180>>2]>>2]|0;b=c[(c[((c[b>>2]&3|0)==2?b:b+-48|0)+40>>2]|0)+16>>2]|0;if((a[b+156>>0]|0)!=1)break;if((c[b+184>>2]|0)!=1)break;if((c[b+176>>2]|0)!=1)break;if(+h[b+16>>3]!=+h[e>>3])break;d=d+1|0}return d|0}function Dg(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0;k=l;l=l+32|0;j=k;h=Hg(b,-1)|0;b=Hg(b,1)|0;if(!((h|0)!=0?!(fL(h)|0):0))i=3;do if((i|0)==3){if(b|0?(fL(b)|0)==0:0)break;h=Ig(d,-1)|0;b=Ig(d,1)|0;if(h|0?(fL(h)|0)==0:0)break;if(b|0?(fL(b)|0)==0:0)break;h=e+52|0;b=0;while(1){if((b|0)>=(c[h>>2]|0))break;d=e+56+(b<<5)|0;c[j>>2]=c[d>>2];c[j+4>>2]=c[d+4>>2];c[j+8>>2]=c[d+8>>2];c[j+12>>2]=c[d+12>>2];c[j+16>>2]=c[d+16>>2];c[j+20>>2]=c[d+20>>2];c[j+24>>2]=c[d+24>>2];c[j+28>>2]=c[d+28>>2];SK(a,j);b=b+1|0}h=c[a+80>>2]|0;i=g+-3|0;b=0;while(1){if((b|0)>=(g|0))break;e=150640+(b<<5)|0;c[j>>2]=c[e>>2];c[j+4>>2]=c[e+4>>2];c[j+8>>2]=c[e+8>>2];c[j+12>>2]=c[e+12>>2];c[j+16>>2]=c[e+16>>2];c[j+20>>2]=c[e+20>>2];c[j+24>>2]=c[e+24>>2];c[j+28>>2]=c[e+28>>2];SK(a,j);b=b+1|0}d=h+1|0;i=i+d|0;h=c[f+52>>2]|0;while(1){b=h+-1|0;if((h|0)<=0)break;h=f+56+(b<<5)|0;c[j>>2]=c[h>>2];c[j+4>>2]=c[h+4>>2];c[j+8>>2]=c[h+8>>2];c[j+12>>2]=c[h+12>>2];c[j+16>>2]=c[h+16>>2];c[j+20>>2]=c[h+20>>2];c[j+24>>2]=c[h+24>>2];c[j+28>>2]=c[h+28>>2];SK(a,j);h=b}Jg(a,d,i)}while(0);l=k;return}function Eg(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=c[e>>2]|0;while(1){if(!b)break;a=c[c[(c[(c[((c[a>>2]&3|0)==2?a:a+-48|0)+40>>2]|0)+16>>2]|0)+180>>2]>>2]|0;b=b+-1|0}c[e>>2]=f+1;g=d+(f<<4)|0;b=d+(f+-1<<4)|0;c[g>>2]=c[b>>2];c[g+4>>2]=c[b+4>>2];c[g+8>>2]=c[b+8>>2];c[g+12>>2]=c[b+12>>2];f=c[e>>2]|0;c[e>>2]=f+1;f=d+(f<<4)|0;c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];f=d+(c[e>>2]<<4)|0;e=(c[(c[((c[a>>2]&3|0)==3?a:a+48|0)+40>>2]|0)+16>>2]|0)+16|0;c[f>>2]=c[e>>2];c[f+4>>2]=c[e+4>>2];c[f+8>>2]=c[e+8>>2];c[f+12>>2]=c[e+12>>2];return a|0}function Fg(b,d){b=b|0;d=d|0;var e=0,f=0.0,g=0.0,i=0,j=0,k=0,l=0,m=0;m=d+84|0;l=d+80|0;e=0;d=b;a:while(1){j=c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0;k=j+16|0;if((a[(c[k>>2]|0)+156>>0]|0)!=1)break;if((kb[c[17300>>2]&63](j)|0)<<24>>24)break;d=c[l>>2]|0;while(1){if((e|0)>=(d|0))break a;if(!(+h[(c[m>>2]|0)+(e<<5)+8>>3]>+h[(c[k>>2]|0)+24>>3]))break;e=e+1|0}d=c[m>>2]|0;b=c[k>>2]|0;do if(!(+h[d+(e<<5)+24>>3]<+h[b+24>>3])){g=+h[d+(e<<5)>>3];i=~~g;f=+h[d+(e<<5)+16>>3];if(!(c[b+104>>2]|0)){Gg(j,i,~~((f+g)*.5),~~f);break}else{Gg(j,i,~~f,~~(+h[b+96>>3]+f));break}}while(0);d=c[c[(c[k>>2]|0)+180>>2]>>2]|0}return}function Gg(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;a=c[a+16>>2]|0;h[a+16>>3]=+(d|0);h[a+88>>3]=+(d-b|0);h[a+96>>3]=+(e-d|0);return}function Hg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;h=c[a>>2]&3;i=c[(c[(c[((h|0)==3?a:a+48|0)+40>>2]|0)+16>>2]|0)+180>>2]|0;h=((h|0)==2?a:a+-48|0)+40|0;g=0;a=0;while(1){e=c[i+(g<<2)>>2]|0;if(!e)break;f=c[(c[(c[((c[e>>2]&3|0)==2?e:e+-48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0;do if((O(f-(c[(c[(c[h>>2]|0)+16>>2]|0)+236>>2]|0)|0,b)|0)>=1){d=c[e+16>>2]|0;if(!(c[d+8>>2]|0)){d=c[d+116>>2]|0;if(!d)break;if(!(c[(c[d+16>>2]|0)+8>>2]|0))break}if(a|0?(O((c[(c[(c[((c[a>>2]&3|0)==2?a:a+-48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0)-f|0,b)|0)<=0:0)break;a=e}while(0);g=g+1|0}return a|0}function Ig(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;h=c[a>>2]&3;i=c[(c[(c[((h|0)==2?a:a+-48|0)+40>>2]|0)+16>>2]|0)+172>>2]|0;h=((h|0)==3?a:a+48|0)+40|0;g=0;a=0;while(1){e=c[i+(g<<2)>>2]|0;if(!e)break;f=c[(c[(c[((c[e>>2]&3|0)==3?e:e+48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0;do if((O(f-(c[(c[(c[h>>2]|0)+16>>2]|0)+236>>2]|0)|0,b)|0)>=1){d=c[e+16>>2]|0;if(!(c[d+8>>2]|0)){d=c[d+116>>2]|0;if(!d)break;if(!(c[(c[d+16>>2]|0)+8>>2]|0))break}if(a|0?(O((c[(c[(c[((c[a>>2]&3|0)==3?a:a+48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0)-f|0,b)|0)<=0:0)break;a=e}while(0);g=g+1|0}return a|0}function Jg(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0,g=0,i=0,j=0,k=0,l=0,m=0.0;l=a+84|0;i=b+-1|0;while(1){if((i|0)>(d|0))break;f=c[l>>2]|0;j=f+(i<<5)|0;e=+h[j>>3];if(!(i-b&1)){f=f+(i<<5)+16|0;m=+h[f>>3];g=~~((m+e)*.5);if(e>=m){h[j>>3]=+(g+-8|0);h[f>>3]=+(g+8|0)}}else{f=f+(i<<5)+16|0;m=+h[f>>3];g=~~((m+e)*.5);if(e+16.0>m){h[j>>3]=+(g+-8|0);h[f>>3]=+(g+8|0)}}i=i+1|0}k=(c[a+80>>2]|0)+-1|0;g=0;while(1){if((g|0)>=(k|0))break;i=c[l>>2]|0;f=i+(g<<5)|0;j=g+1|0;a=i+(j<<5)|0;if(!((g|0)<(b|0)|(g|0)>(d|0))?(g-b&1|0)==0:0){e=+h[f>>3]+16.0;f=i+(j<<5)+16|0;if(e>+h[f>>3])h[f>>3]=e;e=+h[i+(g<<5)+16>>3]+-16.0;if(!(e<+h[a>>3])){g=j;continue}h[a>>3]=e;g=j;continue}if(!((g|0)<(d|0)&(j|0)>=(b|0))){g=j;continue}if(j-b&1|0){g=j;continue}e=+h[i+(j<<5)+16>>3];if(+h[f>>3]+16.0>e)h[f>>3]=e+-16.0;f=i+(g<<5)+16|0;e=+h[a>>3];if(!(+h[f>>3]+-16.0>3]=e+16.0;g=j}return}function Kg(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=+e;h[a>>3]=b;h[a+8>>3]=c;h[a+16>>3]=d;h[a+24>>3]=e;return}function Lg(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0;k=c[(c[b+16>>2]|0)+196>>2]|0;h=c[d+16>>2]|0;j=c[h+232>>2]|0;i=k+(j<<6)|0;j=k+(j<<6)+4|0;h=c[h+236>>2]|0;a:do{h=h+g|0;if((h|0)<=-1){b=0;break}if((h|0)>=(c[i>>2]|0)){b=0;break}b=c[(c[j>>2]|0)+(h<<2)>>2]|0;k=c[b+16>>2]|0;switch(a[k+156>>0]|0){case 0:break a;case 1:{if(c[k+104>>2]|0)break a;break}default:{}}}while((Og(b,d,e,f)|0)<<24>>24!=0);return b|0}function Mg(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;d=c[d+16>>2]|0;if(!(a[d+156>>0]|0)){i=c[d+212>>2]|0;h=i}else{i=c[(c[(c[c[d+180>>2]>>2]|0)+16>>2]|0)+116>>2]|0;g=c[i>>2]&3;h=c[(c[(c[((g|0)==2?i:i+-48|0)+40>>2]|0)+16>>2]|0)+212>>2]|0;i=c[(c[(c[((g|0)==3?i:i+48|0)+40>>2]|0)+16>>2]|0)+212>>2]|0}d=c[e+16>>2]|0;if(!(a[d+156>>0]|0)){e=c[d+212>>2]|0;e=(e|0)==(b|0)?0:e;return ((e|0)==(h|0)|((e|0)==0|(e|0)==(i|0))?0:e)|0}f=c[(c[(c[c[d+180>>2]>>2]|0)+16>>2]|0)+116>>2]|0;g=c[f>>2]&3;d=c[(c[(c[((g|0)==3?f:f+48|0)+40>>2]|0)+16>>2]|0)+212>>2]|0;d=(d|0)==(b|0)?0:d;if(!(!((d|0)==(h|0)|((d|0)==0|(d|0)==(i|0)))?(Ng(d,e)|0)!=0:0)){d=c[(c[(c[((g|0)==2?f:f+-48|0)+40>>2]|0)+16>>2]|0)+212>>2]|0;d=(d|0)==(b|0)?0:d;if((d|0)==(h|0)|((d|0)==0|(d|0)==(i|0)))d=0;else{e=(Ng(d,e)|0)==0;return (e?0:d)|0}}return d|0}function Ng(a,b){a=a|0;b=b|0;var d=0,e=0.0,f=0.0;d=c[a+16>>2]|0;a=c[b+16>>2]|0;f=+h[a+16>>3];if((+h[d+16>>3]<=f?f<=+h[d+32>>3]:0)?(e=+h[a+24>>3],+h[d+24>>3]<=e):0)a=e<=+h[d+40>>3]&1;else a=0;return a|0}function Og(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;i=c[b+16>>2]|0;j=(c[i+236>>2]|0)>(c[(c[d+16>>2]|0)+236>>2]|0);a:do if((c[i+184>>2]|0)==1){b:do if(f|0){h=0;b=c[c[i+180>>2]>>2]|0;while(1){if((h|0)>=2)break b;b=c[((c[b>>2]&3|0)==2?b:b+-48|0)+40>>2]|0;d=c[((c[f>>2]&3|0)==2?f:f+-48|0)+40>>2]|0;if((b|0)==(d|0))break b;g=c[b+16>>2]|0;b=c[d+16>>2]|0;if(j^(c[g+236>>2]|0)>(c[b+236>>2]|0)){b=1;break a}if((c[g+184>>2]|0)!=1)break b;if(!(a[g+156>>0]|0))break b;if((c[b+184>>2]|0)!=1)break b;if(!(a[b+156>>0]|0))break b;h=h+1|0;f=c[c[b+180>>2]>>2]|0;b=c[c[g+180>>2]>>2]|0}}while(0);if(e|0?(c[i+176>>2]|0)==1:0){g=0;d=e;b=c[c[i+172>>2]>>2]|0;while(1){if((g|0)>=2){b=0;break a}b=c[((c[b>>2]&3|0)==3?b:b+48|0)+40>>2]|0;d=c[((c[d>>2]&3|0)==3?d:d+48|0)+40>>2]|0;if((b|0)==(d|0)){b=0;break a}f=c[b+16>>2]|0;b=c[d+16>>2]|0;if(j^(c[f+236>>2]|0)>(c[b+236>>2]|0)){b=1;break a}if((c[f+176>>2]|0)!=1){b=0;break a}if(!(a[f+156>>0]|0)){b=0;break a}if((c[b+176>>2]|0)!=1){b=0;break a}if(!(a[b+156>>0]|0)){b=0;break a}g=g+1|0;d=c[c[b+172>>2]>>2]|0;b=c[c[f+172>>2]>>2]|0}}else b=0}else b=0;while(0);return b|0}function Pg(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0;d=+h[c+8>>3]+ +h[b+8>>3];h[a>>3]=+h[c>>3]+ +h[b>>3];h[a+8>>3]=d;return}function Qg(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0;d=+h[b+8>>3];e=+h[b>>3];return (~~((+h[c>>3]-e)*(+h[a+8>>3]-d)-(+h[a>>3]-e)*(+h[c+8>>3]-d))|0)>0|0}function Rg(b,d,e,f,g,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;var j=0,k=0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0.0,t=0,u=0,v=0.0,w=0.0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0;R=l;l=l+256|0;D=R+232|0;C=R+216|0;P=R+88|0;O=R+80|0;K=R+64|0;L=R+200|0;M=R+184|0;N=R;E=R+168|0;F=R+152|0;G=R+136|0;H=R+120|0;I=R+104|0;B=c[g>>2]&3;J=c[((B|0)==3?g:g+48|0)+40>>2]|0;B=c[((B|0)==2?g:g+-48|0)+40>>2]|0;do if((HJ(J)|0)!=2?(HJ(B)|0)!=2:0){g=0;j=0;k=0;while(1){if((k|0)>=(f|0))break;A=c[(c[d+(k+e<<2)>>2]|0)+16>>2]|0;g=g+((c[A+96>>2]|0)!=0&1)|0;if(!((a[A+44>>0]|0)==0?(a[A+84>>0]|0)==0:0))j=1;k=k+1|0}if(!j)if(!g){Tg(J,B,d,e,f,i);break}else{Yg(J,B,d,e,f,i,g);break}y=uH(156)|0;z=Zg(b,y)|0;t=vA(z,85383,1)|0;Az(t,134401,280,1)|0;zx(t,87076,87090)|0;m=+h[(c[B+16>>2]|0)+16>>3];s=+h[(c[J+16>>2]|0)+16>>3];A=b+16|0;q=(c[(c[A>>2]|0)+116>>2]&1|0)==0;r=q?B:J;q=q?J:B;t=_g(t,q)|0;u=_g(z,r)|0;g=0;p=0;while(1){if((p|0)>=(f|0))break;j=d+(p+e<<2)|0;while(1){o=c[j>>2]|0;n=o+16|0;j=c[n>>2]|0;if(!(a[j+112>>0]|0))break;else j=j+116|0}if((c[((c[o>>2]&3|0)==3?o:o+48|0)+40>>2]|0)==(q|0))k=$g(z,t,u,o)|0;else k=$g(z,u,t,o)|0;j=c[n>>2]|0;c[j+120>>2]=k;if(!g)if((a[j+44>>0]|0)==0?(a[j+84>>0]|0)==0:0){c[(c[k+16>>2]|0)+120>>2]=o;g=k}else g=0;p=p+1|0}if(!g)x=Rx(z,t,u,0,1)|0;else x=g;rx(x,c[46404]|0,85387)|0;g=z+16|0;n=c[g>>2]|0;c[n+144>>2]=c[(c[A>>2]|0)+144>>2];c[n+188>>2]=z;$M(z,i);Qf(z);zj(z,0);Jh(z,0);Mi(z,0);q=q+16|0;i=c[q>>2]|0;n=c[r+16>>2]|0;r=t+16|0;o=c[r>>2]|0;p=o+16|0;v=+(~~m|0);w=+(~~((+h[(c[u+16>>2]|0)+16>>3]+ +h[p>>3])*.5)|0);m=+(~~s|0);s=+(~~((+h[i+16>>3]-+h[i+96>>3]+ +h[n+16>>3]+ +h[n+88>>3])*.5)|0);n=o+24|0;g=(c[g>>2]|0)+192|0;while(1){j=c[g>>2]|0;if(!j)break;do if((j|0)!=(t|0)){g=c[j+16>>2]|0;k=g+24|0;if((j|0)==(u|0)){h[k>>3]=m;h[g+16>>3]=w;break}else{h[k>>3]=s;break}}else{h[n>>3]=v;h[p>>3]=w;g=o}while(0);g=g+164|0}tk(z);lg(z,0);eJ(z);k=c[q>>2]|0;g=c[r>>2]|0;if(!(c[(c[A>>2]|0)+116>>2]&1)){j=g+16|0;m=+h[k+24>>3]-+h[g+24>>3]}else{j=g+24|0;m=+h[g+16>>3]+ +h[k+24>>3]}h[K>>3]=+h[k+16>>3]-+h[j>>3];h[K+8>>3]=m;i=N+16|0;t=N+32|0;u=N+48|0;r=0;while(1){if((r|0)>=(f|0))break;g=d+(r+e<<2)|0;while(1){j=c[g>>2]|0;q=j+16|0;g=c[q>>2]|0;if(!(a[g+112>>0]|0))break;else g=g+116|0}o=c[g+120>>2]|0;p=o+16|0;g=c[p>>2]|0;if(!((o|0)==(x|0)&(c[g+120>>2]|0)==0)){n=c[c[g+8>>2]>>2]|0;o=n+4|0;j=PK(j,c[o>>2]|0)|0;c[j+8>>2]=c[n+8>>2];g=j+16|0;k=n+16|0;S=c[(c[A>>2]|0)+116>>2]&1;c[C>>2]=c[k>>2];c[C+4>>2]=c[k+4>>2];c[C+8>>2]=c[k+8>>2];c[C+12>>2]=c[k+12>>2];c[D>>2]=c[K>>2];c[D+4>>2]=c[K+4>>2];c[D+8>>2]=c[K+8>>2];c[D+12>>2]=c[K+12>>2];ah(L,C,D,S);c[g>>2]=c[L>>2];c[g+4>>2]=c[L+4>>2];c[g+8>>2]=c[L+8>>2];c[g+12>>2]=c[L+12>>2];c[j+12>>2]=c[n+12>>2];g=j+32|0;S=n+32|0;k=c[(c[A>>2]|0)+116>>2]&1;c[C>>2]=c[S>>2];c[C+4>>2]=c[S+4>>2];c[C+8>>2]=c[S+8>>2];c[C+12>>2]=c[S+12>>2];c[D>>2]=c[K>>2];c[D+4>>2]=c[K+4>>2];c[D+8>>2]=c[K+8>>2];c[D+12>>2]=c[K+12>>2];ah(M,C,D,k);c[g>>2]=c[M>>2];c[g+4>>2]=c[M+4>>2];c[g+8>>2]=c[M+8>>2];c[g+12>>2]=c[M+12>>2];g=0;while(1){if((g|0)>=(c[o>>2]|0))break;k=(c[j>>2]|0)+(g<<4)|0;T=(c[n>>2]|0)+(g<<4)|0;S=c[(c[A>>2]|0)+116>>2]&1;c[C>>2]=c[T>>2];c[C+4>>2]=c[T+4>>2];c[C+8>>2]=c[T+8>>2];c[C+12>>2]=c[T+12>>2];c[D>>2]=c[K>>2];c[D+4>>2]=c[K+4>>2];c[D+8>>2]=c[K+8>>2];c[D+12>>2]=c[K+12>>2];ah(E,C,D,S);c[k>>2]=c[E>>2];c[k+4>>2]=c[E+4>>2];c[k+8>>2]=c[E+8>>2];c[k+12>>2]=c[E+12>>2];c[N>>2]=c[E>>2];c[N+4>>2]=c[E+4>>2];c[N+8>>2]=c[E+8>>2];c[N+12>>2]=c[E+12>>2];k=g+1|0;if((k|0)>=(c[o>>2]|0)){Q=48;break}S=(c[j>>2]|0)+(k<<4)|0;k=(c[n>>2]|0)+(k<<4)|0;T=c[(c[A>>2]|0)+116>>2]&1;c[C>>2]=c[k>>2];c[C+4>>2]=c[k+4>>2];c[C+8>>2]=c[k+8>>2];c[C+12>>2]=c[k+12>>2];c[D>>2]=c[K>>2];c[D+4>>2]=c[K+4>>2];c[D+8>>2]=c[K+8>>2];c[D+12>>2]=c[K+12>>2];ah(F,C,D,T);c[S>>2]=c[F>>2];c[S+4>>2]=c[F+4>>2];c[S+8>>2]=c[F+8>>2];c[S+12>>2]=c[F+12>>2];c[i>>2]=c[F>>2];c[i+4>>2]=c[F+4>>2];c[i+8>>2]=c[F+8>>2];c[i+12>>2]=c[F+12>>2];S=g+2|0;T=(c[j>>2]|0)+(S<<4)|0;S=(c[n>>2]|0)+(S<<4)|0;k=c[(c[A>>2]|0)+116>>2]&1;c[C>>2]=c[S>>2];c[C+4>>2]=c[S+4>>2];c[C+8>>2]=c[S+8>>2];c[C+12>>2]=c[S+12>>2];c[D>>2]=c[K>>2];c[D+4>>2]=c[K+4>>2];c[D+8>>2]=c[K+8>>2];c[D+12>>2]=c[K+12>>2];ah(G,C,D,k);c[T>>2]=c[G>>2];c[T+4>>2]=c[G+4>>2];c[T+8>>2]=c[G+8>>2];c[T+12>>2]=c[G+12>>2];c[t>>2]=c[G>>2];c[t+4>>2]=c[G+4>>2];c[t+8>>2]=c[G+8>>2];c[t+12>>2]=c[G+12>>2];T=g+3|0;k=(c[n>>2]|0)+(T<<4)|0;S=c[(c[A>>2]|0)+116>>2]&1;c[C>>2]=c[k>>2];c[C+4>>2]=c[k+4>>2];c[C+8>>2]=c[k+8>>2];c[C+12>>2]=c[k+12>>2];c[D>>2]=c[K>>2];c[D+4>>2]=c[K+4>>2];c[D+8>>2]=c[K+8>>2];c[D+12>>2]=c[K+12>>2];ah(H,C,D,S);c[u>>2]=c[H>>2];c[u+4>>2]=c[H+4>>2];c[u+8>>2]=c[H+8>>2];c[u+12>>2]=c[H+12>>2];YE((c[A>>2]|0)+16|0,N);g=T}if((Q|0)==48)Q=0;g=c[(c[q>>2]|0)+96>>2]|0;if(g|0){T=g+56|0;p=(c[(c[p>>2]|0)+96>>2]|0)+56|0;S=c[(c[A>>2]|0)+116>>2]&1;c[C>>2]=c[p>>2];c[C+4>>2]=c[p+4>>2];c[C+8>>2]=c[p+8>>2];c[C+12>>2]=c[p+12>>2];c[D>>2]=c[K>>2];c[D+4>>2]=c[K+4>>2];c[D+8>>2]=c[K+8>>2];c[D+12>>2]=c[K+12>>2];ah(I,C,D,S);c[T>>2]=c[I>>2];c[T+4>>2]=c[I+4>>2];c[T+8>>2]=c[I+8>>2];c[T+12>>2]=c[I+12>>2];T=c[(c[q>>2]|0)+96>>2]|0;a[T+81>>0]=1;kM(b,T)}}r=r+1|0}bh(z,y)}else Q=3;while(0);if((Q|0)==3?(c[45968]|0)==0:0){c[45968]=1;Pw(0,85260,O)|0;Q=ry(J)|0;S=(ey(b)|0)!=0;T=ry(B)|0;c[P>>2]=Q;c[P+4>>2]=S?134656:138665;c[P+8>>2]=T;Pw(3,85366,P)|0}l=R;return}function Sg(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0.0,B=0.0,C=0.0,D=0.0,E=0.0;z=l;l=l+1600|0;u=z+1552|0;n=z+1536|0;t=z+840|0;v=z+144|0;w=z+1584|0;j=z+32|0;s=z+16|0;o=z;q=c[f>>2]&3;p=c[((q|0)==3?f:f+48|0)+40>>2]|0;x=f+-48|0;q=c[((q|0)==2?f:x)+40>>2]|0;r=f+16|0;k=c[r>>2]|0;i=c[k+172>>2]|0;while(1){m=c[(c[i+16>>2]|0)+172>>2]|0;if(!m)break;else i=m}k=(c[k+96>>2]|0)+56|0;i=(c[((c[i>>2]&3|0)==3?i:i+48|0)+40>>2]|0)+16|0;m=(c[i>>2]|0)+16|0;c[k>>2]=c[m>>2];c[k+4>>2]=c[m+4>>2];c[k+8>>2]=c[m+8>>2];c[k+12>>2]=c[m+12>>2];k=c[r>>2]|0;a[(c[k+96>>2]|0)+81>>0]=1;if((g|0)!=2){k=c[i>>2]|0;C=+h[k+16>>3];E=C-+h[k+88>>3];C=+h[k+96>>3]+C;B=+h[k+24>>3];D=+h[k+80>>3]*.5+B;k=c[(c[b+16>>2]|0)+196>>2]|0;m=c[p+16>>2]|0;j=c[m+232>>2]|0;B=+(~~(+(~~(B-+h[k+(j<<6)+16>>3]-+h[m+24>>3]+ +h[k+(j<<6)+24>>3])|0)*.16666666666666666)|0);B=D-(B<5.0?5.0:B);Vg(b,d,e,p,f,t,1);Vg(b,d,e,q,f,v,0);j=t+52|0;k=c[j>>2]|0;m=k+-1|0;A=+h[t+56+(m<<5)>>3];h[18830]=A;h[18831]=+h[t+56+(m<<5)+24>>3];h[18832]=E;h[18833]=B;h[18834]=A;h[18835]=B;m=v+52|0;i=(c[m>>2]|0)+-1|0;A=+h[v+56+(i<<5)+16>>3];h[18836]=A;h[18837]=D;h[18838]=C;h[18841]=B;h[18839]=+h[v+56+(i<<5)+24>>3];h[18840]=A;i=0;while(1){if((i|0)>=(k|0)){i=0;break}k=t+56+(i<<5)|0;c[u>>2]=c[k>>2];c[u+4>>2]=c[k+4>>2];c[u+8>>2]=c[k+8>>2];c[u+12>>2]=c[k+12>>2];c[u+16>>2]=c[k+16>>2];c[u+20>>2]=c[k+20>>2];c[u+24>>2]=c[k+24>>2];c[u+28>>2]=c[k+28>>2];SK(e,u);i=i+1|0;k=c[j>>2]|0}while(1){if((i|0)==3)break;t=150640+(i<<5)|0;c[u>>2]=c[t>>2];c[u+4>>2]=c[t+4>>2];c[u+8>>2]=c[t+8>>2];c[u+12>>2]=c[t+12>>2];c[u+16>>2]=c[t+16>>2];c[u+20>>2]=c[t+20>>2];c[u+24>>2]=c[t+24>>2];c[u+28>>2]=c[t+28>>2];SK(e,u);i=i+1|0}j=c[m>>2]|0;while(1){i=j+-1|0;if((j|0)<=0)break;j=v+56+(i<<5)|0;c[u>>2]=c[j>>2];c[u+4>>2]=c[j+4>>2];c[u+8>>2]=c[j+8>>2];c[u+12>>2]=c[j+12>>2];c[u+16>>2]=c[j+16>>2];c[u+20>>2]=c[j+20>>2];c[u+24>>2]=c[j+24>>2];c[u+28>>2]=c[j+28>>2];SK(e,u);j=i}if((g|0)==10)j=sJ(e,w)|0;else j=yJ(e,w)|0;i=c[w>>2]|0;if(i|0)y=17}else{i=(c[p+16>>2]|0)+16|0;v=k+16|0;c[n>>2]=c[i>>2];c[n+4>>2]=c[i+4>>2];c[n+8>>2]=c[i+8>>2];c[n+12>>2]=c[i+12>>2];c[u>>2]=c[v>>2];c[u+4>>2]=c[v+4>>2];c[u+8>>2]=c[v+8>>2];c[u+12>>2]=c[v+12>>2];Pg(s,n,u);v=(c[q+16>>2]|0)+16|0;i=(c[r>>2]|0)+56|0;c[n>>2]=c[v>>2];c[n+4>>2]=c[v+4>>2];c[n+8>>2]=c[v+8>>2];c[n+12>>2]=c[v+12>>2];c[u>>2]=c[i>>2];c[u+4>>2]=c[i+4>>2];c[u+8>>2]=c[i+8>>2];c[u+12>>2]=c[i+12>>2];Pg(o,n,u);i=c[(c[r>>2]|0)+96>>2]|0;D=+h[i+56>>3];E=+h[i+64>>3]-+h[i+32>>3]*.5;i=j+16|0;c[j>>2]=c[s>>2];c[j+4>>2]=c[s+4>>2];c[j+8>>2]=c[s+8>>2];c[j+12>>2]=c[s+12>>2];c[i>>2]=c[s>>2];c[i+4>>2]=c[s+4>>2];c[i+8>>2]=c[s+8>>2];c[i+12>>2]=c[s+12>>2];i=j+32|0;v=j+48|0;y=j+64|0;h[j+64>>3]=D;h[j+72>>3]=E;c[v>>2]=c[y>>2];c[v+4>>2]=c[y+4>>2];c[v+8>>2]=c[y+8>>2];c[v+12>>2]=c[y+12>>2];c[i>>2]=c[y>>2];c[i+4>>2]=c[y+4>>2];c[i+8>>2]=c[y+8>>2];c[i+12>>2]=c[y+12>>2];i=j+80|0;y=j+96|0;c[y>>2]=c[o>>2];c[y+4>>2]=c[o+4>>2];c[y+8>>2]=c[o+8>>2];c[y+12>>2]=c[o+12>>2];c[i>>2]=c[o>>2];c[i+4>>2]=c[o+4>>2];c[i+8>>2]=c[o+8>>2];c[i+12>>2]=c[o+12>>2];c[w>>2]=7;i=7;y=17}if((y|0)==17)QK(f,c[((c[f>>2]&3|0)==2?f:x)+40>>2]|0,j,i,17296);l=z;return}function Tg(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0.0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0.0,s=0,t=0.0,u=0,v=0,w=0,x=0,y=0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0;N=l;l=l+352|0;x=N+336|0;w=N+320|0;L=N+128|0;u=N+304|0;y=N+288|0;M=N+112|0;E=N+96|0;F=N+80|0;G=N+64|0;H=N+48|0;I=N+32|0;J=N+16|0;K=N;a=a+16|0;q=(c[a>>2]|0)+16|0;v=(c[d+(e<<2)>>2]|0)+16|0;s=(c[v>>2]|0)+16|0;c[w>>2]=c[q>>2];c[w+4>>2]=c[q+4>>2];c[w+8>>2]=c[q+8>>2];c[w+12>>2]=c[q+12>>2];c[x>>2]=c[s>>2];c[x+4>>2]=c[s+4>>2];c[x+8>>2]=c[s+8>>2];c[x+12>>2]=c[s+12>>2];Pg(u,w,x);C=+h[u>>3];D=+h[u+8>>3];u=(c[b+16>>2]|0)+16|0;v=(c[v>>2]|0)+56|0;c[w>>2]=c[u>>2];c[w+4>>2]=c[u+4>>2];c[w+8>>2]=c[u+8>>2];c[w+12>>2]=c[u+12>>2];c[x>>2]=c[v>>2];c[x+4>>2]=c[v+4>>2];c[x+8>>2]=c[v+8>>2];c[x+12>>2]=c[v+12>>2];Pg(y,w,x);A=+h[y>>3];B=+h[y+8>>3];if((f|0)>1){z=+h[(c[a>>2]|0)+80>>3];i=z*.5;z=z/+(f+-1|0)}else{i=0.0;z=0.0}p=(g|8|0)==10;m=L+8|0;q=L+16|0;r=(A+C*2.0)*.3333333333333333;s=L+32|0;t=(A*2.0+C)*.3333333333333333;n=L+24|0;u=L+48|0;v=L+64|0;w=L+80|0;x=L+96|0;y=L+112|0;k=L+128|0;o=L+136|0;i=D-i;b=0;while(1){if((b|0)>=(f|0))break;j=c[d+(b+e<<2)>>2]|0;h[L>>3]=C;h[m>>3]=D;if(p){Xg(M,r,i);c[q>>2]=c[M>>2];c[q+4>>2]=c[M+4>>2];c[q+8>>2]=c[M+8>>2];c[q+12>>2]=c[M+12>>2];Xg(E,t,i);c[s>>2]=c[E>>2];c[s+4>>2]=c[E+4>>2];c[s+8>>2]=c[E+8>>2];c[s+12>>2]=c[E+12>>2];a=4;g=3}else{h[q>>3]=C;h[n>>3]=D;Xg(F,r,i);c[s>>2]=c[F>>2];c[s+4>>2]=c[F+4>>2];c[s+8>>2]=c[F+8>>2];c[s+12>>2]=c[F+12>>2];Xg(G,r,i);c[u>>2]=c[G>>2];c[u+4>>2]=c[G+4>>2];c[u+8>>2]=c[G+8>>2];c[u+12>>2]=c[G+12>>2];Xg(H,r,i);c[v>>2]=c[H>>2];c[v+4>>2]=c[H+4>>2];c[v+8>>2]=c[H+8>>2];c[v+12>>2]=c[H+12>>2];Xg(I,t,i);c[w>>2]=c[I>>2];c[w+4>>2]=c[I+4>>2];c[w+8>>2]=c[I+8>>2];c[w+12>>2]=c[I+12>>2];Xg(J,t,i);c[x>>2]=c[J>>2];c[x+4>>2]=c[J+4>>2];c[x+8>>2]=c[J+8>>2];c[x+12>>2]=c[J+12>>2];Xg(K,t,i);c[y>>2]=c[K>>2];c[y+4>>2]=c[K+4>>2];c[y+8>>2]=c[K+8>>2];c[y+12>>2]=c[K+12>>2];h[k>>3]=A;h[o>>3]=B;a=10;g=9}h[L+(g<<4)>>3]=A;h[L+(g<<4)+8>>3]=B;QK(j,c[((c[j>>2]&3|0)==2?j:j+-48|0)+40>>2]|0,L,a,17296);i=i+z;b=b+1|0}l=N;return}function Ug(a,d,e,f,g,i,j,k){a=a|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;j=j|0;k=k|0;var m=0,n=0.0,o=0,p=0,q=0,r=0,s=0.0,t=0,u=0,v=0,w=0,x=0,y=0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0;x=l;l=l+1440|0;t=x+1392|0;v=x+1424|0;w=x+696|0;u=x;r=c[j>>2]&3;q=c[((r|0)==3?j:j+48|0)+40>>2]|0;r=c[((r|0)==2?j:j+-48|0)+40>>2]|0;m=c[q+16>>2]|0;o=c[m+232>>2]|0;p=c[a+16>>2]|0;if((o|0)<(b[p+238>>1]|0)){y=c[p+196>>2]|0;p=o+1|0;n=+h[m+24>>3]-+h[y+(o<<6)+32>>3]-+h[(c[(c[c[y+(p<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3]-+h[y+(p<<6)+40>>3]}else n=+(c[p+252>>2]|0);z=+(i+1|0);s=+(c[d+12>>2]|0)/z;n=n/z;Wg(a,d,e,q,j,w,1);Wg(a,d,e,r,j,u,0);r=w+52|0;j=u+52|0;a=(k|0)==0;d=e+80|0;m=0;while(1){if((m|0)>=(i|0))break;q=c[f+(m+g<<2)>>2]|0;p=c[r>>2]|0;o=p+-1|0;D=+h[w+56+(o<<5)>>3];B=+h[w+56+(o<<5)+8>>3];C=+h[w+56+(o<<5)+16>>3];h[18830]=D;h[18833]=B;m=m+1|0;z=+(m|0);A=s*z;h[18832]=C+A;z=B-n*z;h[18831]=z;h[18834]=D;h[18837]=z;o=(c[j>>2]|0)+-1|0;D=+h[u+56+(o<<5)+16>>3];h[18836]=D;h[18835]=z-n;B=+h[u+56+(o<<5)>>3];C=+h[u+56+(o<<5)+8>>3];h[18840]=D;h[18841]=C;h[18838]=B-A;h[18839]=z;o=0;while(1){if((o|0)>=(p|0)){o=0;break}p=w+56+(o<<5)|0;c[t>>2]=c[p>>2];c[t+4>>2]=c[p+4>>2];c[t+8>>2]=c[p+8>>2];c[t+12>>2]=c[p+12>>2];c[t+16>>2]=c[p+16>>2];c[t+20>>2]=c[p+20>>2];c[t+24>>2]=c[p+24>>2];c[t+28>>2]=c[p+28>>2];SK(e,t);o=o+1|0;p=c[r>>2]|0}while(1){if((o|0)==3)break;y=150640+(o<<5)|0;c[t>>2]=c[y>>2];c[t+4>>2]=c[y+4>>2];c[t+8>>2]=c[y+8>>2];c[t+12>>2]=c[y+12>>2];c[t+16>>2]=c[y+16>>2];c[t+20>>2]=c[y+20>>2];c[t+24>>2]=c[y+24>>2];c[t+28>>2]=c[y+28>>2];SK(e,t);o=o+1|0}p=c[j>>2]|0;while(1){o=p+-1|0;if((p|0)<=0)break;p=u+56+(o<<5)|0;c[t>>2]=c[p>>2];c[t+4>>2]=c[p+4>>2];c[t+8>>2]=c[p+8>>2];c[t+12>>2]=c[p+12>>2];c[t+16>>2]=c[p+16>>2];c[t+20>>2]=c[p+20>>2];c[t+24>>2]=c[p+24>>2];c[t+28>>2]=c[p+28>>2];SK(e,t);p=o}if(a)o=yJ(e,v)|0;else o=sJ(e,v)|0;p=c[v>>2]|0;if(!p)break;QK(q,c[((c[q>>2]&3|0)==2?q:q+-48|0)+40>>2]|0,o,p,17296);c[d>>2]=0}l=x;return}function Vg(a,b,d,e,f,g,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;var j=0,k=0,m=0,n=0,o=0,p=0.0;n=l;l=l+128|0;j=n+96|0;k=n+64|0;o=n+32|0;m=n;yg(o,a,b,e,0,f);c[g>>2]=c[o>>2];c[g+4>>2]=c[o+4>>2];c[g+8>>2]=c[o+8>>2];c[g+12>>2]=c[o+12>>2];c[g+16>>2]=c[o+16>>2];c[g+20>>2]=c[o+20>>2];c[g+24>>2]=c[o+24>>2];c[g+28>>2]=c[o+28>>2];c[k>>2]=c[o>>2];c[k+4>>2]=c[o+4>>2];c[k+8>>2]=c[o+8>>2];c[k+12>>2]=c[o+12>>2];c[k+16>>2]=c[o+16>>2];c[k+20>>2]=c[o+20>>2];c[k+24>>2]=c[o+24>>2];c[k+28>>2]=c[o+28>>2];c[g+48>>2]=4;if(!(i<<24>>24))WK(d,f,2,g,0);else TK(d,f,2,g,0);b=g+52|0;f=(c[b>>2]|0)+-1|0;o=k+24|0;h[o>>3]=+h[g+56+(f<<5)+24>>3];i=k+8|0;h[i>>3]=+h[g+56+(f<<5)+8>>3];e=c[e+16>>2]|0;p=+h[(c[(c[a+16>>2]|0)+196>>2]|0)+(c[e+232>>2]<<6)+24>>3]+ +h[e+24>>3];c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];c[j+8>>2]=c[k+8>>2];c[j+12>>2]=c[k+12>>2];c[j+16>>2]=c[k+16>>2];c[j+20>>2]=c[k+20>>2];c[j+24>>2]=c[k+24>>2];c[j+28>>2]=c[k+28>>2];Ag(m,j,4,p);c[k>>2]=c[m>>2];c[k+4>>2]=c[m+4>>2];c[k+8>>2]=c[m+8>>2];c[k+12>>2]=c[m+12>>2];c[k+16>>2]=c[m+16>>2];c[k+20>>2]=c[m+20>>2];c[k+24>>2]=c[m+24>>2];c[k+28>>2]=c[m+28>>2];if(+h[k>>3]<+h[k+16>>3]?+h[i>>3]<+h[o>>3]:0){o=c[b>>2]|0;c[b>>2]=o+1;o=g+56+(o<<5)|0;c[o>>2]=c[k>>2];c[o+4>>2]=c[k+4>>2];c[o+8>>2]=c[k+8>>2];c[o+12>>2]=c[k+12>>2];c[o+16>>2]=c[k+16>>2];c[o+20>>2]=c[k+20>>2];c[o+24>>2]=c[k+24>>2];c[o+28>>2]=c[k+28>>2]}l=n;return}function Wg(a,b,d,e,f,g,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;var j=0,k=0,m=0,n=0,o=0,p=0.0;n=l;l=l+128|0;j=n+96|0;k=n+64|0;o=n+32|0;m=n;yg(o,a,b,e,0,f);c[g>>2]=c[o>>2];c[g+4>>2]=c[o+4>>2];c[g+8>>2]=c[o+8>>2];c[g+12>>2]=c[o+12>>2];c[g+16>>2]=c[o+16>>2];c[g+20>>2]=c[o+20>>2];c[g+24>>2]=c[o+24>>2];c[g+28>>2]=c[o+28>>2];c[k>>2]=c[o>>2];c[k+4>>2]=c[o+4>>2];c[k+8>>2]=c[o+8>>2];c[k+12>>2]=c[o+12>>2];c[k+16>>2]=c[o+16>>2];c[k+20>>2]=c[o+20>>2];c[k+24>>2]=c[o+24>>2];c[k+28>>2]=c[o+28>>2];c[g+48>>2]=1;if(!(i<<24>>24))WK(d,f,2,g,0);else TK(d,f,2,g,0);b=g+52|0;f=(c[b>>2]|0)+-1|0;o=k+24|0;h[o>>3]=+h[g+56+(f<<5)+24>>3];i=k+8|0;h[i>>3]=+h[g+56+(f<<5)+8>>3];e=c[e+16>>2]|0;p=+h[e+24>>3]-+h[(c[(c[a+16>>2]|0)+196>>2]|0)+(c[e+232>>2]<<6)+24>>3];c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];c[j+8>>2]=c[k+8>>2];c[j+12>>2]=c[k+12>>2];c[j+16>>2]=c[k+16>>2];c[j+20>>2]=c[k+20>>2];c[j+24>>2]=c[k+24>>2];c[j+28>>2]=c[k+28>>2];Ag(m,j,1,p);c[k>>2]=c[m>>2];c[k+4>>2]=c[m+4>>2];c[k+8>>2]=c[m+8>>2];c[k+12>>2]=c[m+12>>2];c[k+16>>2]=c[m+16>>2];c[k+20>>2]=c[m+20>>2];c[k+24>>2]=c[m+24>>2];c[k+28>>2]=c[m+28>>2];if(+h[k>>3]<+h[k+16>>3]?+h[i>>3]<+h[o>>3]:0){o=c[b>>2]|0;c[b>>2]=o+1;o=g+56+(o<<5)|0;c[o>>2]=c[k>>2];c[o+4>>2]=c[k+4>>2];c[o+8>>2]=c[k+8>>2];c[o+12>>2]=c[k+12>>2];c[o+16>>2]=c[k+16>>2];c[o+20>>2]=c[k+20>>2];c[o+24>>2]=c[k+24>>2];c[o+28>>2]=c[k+28>>2]}l=n;return}function Xg(a,b,c){a=a|0;b=+b;c=+c;h[a>>3]=b;h[a+8>>3]=c;return}function Yg(b,d,e,f,g,i,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;j=j|0;var k=0,m=0,n=0,o=0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0,z=0,A=0.0,B=0.0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0.0;Y=l;l=l+288|0;R=Y+256|0;Q=Y+240|0;P=Y+224|0;V=Y+280|0;W=Y+272|0;X=Y+32|0;S=Y+16|0;T=Y;m=Y+208|0;n=Y+192|0;o=c[e+(f<<2)>>2]|0;U=uH(g<<2)|0;k=0;while(1){if((k|0)>=(g|0))break;c[U+(k<<2)>>2]=c[e+(k+f<<2)>>2];k=k+1|0}_0(U,g,4,59);e=b+16|0;f=(c[e>>2]|0)+16|0;o=o+16|0;C=(c[o>>2]|0)+16|0;c[Q>>2]=c[f>>2];c[Q+4>>2]=c[f+4>>2];c[Q+8>>2]=c[f+8>>2];c[Q+12>>2]=c[f+12>>2];c[R>>2]=c[C>>2];c[R+4>>2]=c[C+4>>2];c[R+8>>2]=c[C+8>>2];c[R+12>>2]=c[C+12>>2];Pg(m,Q,R);c[S>>2]=c[m>>2];c[S+4>>2]=c[m+4>>2];c[S+8>>2]=c[m+8>>2];c[S+12>>2]=c[m+12>>2];C=d+16|0;f=(c[C>>2]|0)+16|0;o=(c[o>>2]|0)+56|0;c[Q>>2]=c[f>>2];c[Q+4>>2]=c[f+4>>2];c[Q+8>>2]=c[f+8>>2];c[Q+12>>2]=c[f+12>>2];c[R>>2]=c[o>>2];c[R+4>>2]=c[o+4>>2];c[R+8>>2]=c[o+8>>2];c[R+12>>2]=c[o+12>>2];Pg(n,Q,R);c[T>>2]=c[n>>2];c[T+4>>2]=c[n+4>>2];c[T+8>>2]=c[n+8>>2];c[T+12>>2]=c[n+12>>2];w=+h[(c[e>>2]|0)+96>>3]+ +h[S>>3];x=+h[T>>3]-+h[(c[C>>2]|0)+88>>3];u=x+w;v=u*.5;C=c[U>>2]|0;c[X>>2]=c[S>>2];c[X+4>>2]=c[S+4>>2];c[X+8>>2]=c[S+8>>2];c[X+12>>2]=c[S+12>>2];o=X+16|0;c[o>>2]=c[S>>2];c[o+4>>2]=c[S+4>>2];c[o+8>>2]=c[S+8>>2];c[o+12>>2]=c[S+12>>2];e=X+32|0;c[e>>2]=c[T>>2];c[e+4>>2]=c[T+4>>2];c[e+8>>2]=c[T+8>>2];c[e+12>>2]=c[T+12>>2];f=X+48|0;c[f>>2]=c[T>>2];c[f+4>>2]=c[T+4>>2];c[f+8>>2]=c[T+8>>2];c[f+12>>2]=c[T+12>>2];QK(C,c[((c[C>>2]&3|0)==2?C:C+-48|0)+40>>2]|0,X,4,17296);C=c[(c[C+16>>2]|0)+96>>2]|0;h[C+56>>3]=v;z=S+8|0;r=+h[z>>3];s=+h[C+32>>3];h[C+64>>3]=(s+6.0)*.5+r;a[C+81>>0]=1;r=r+3.0;B=+h[C+24>>3];A=(u-B)*.5;B=(B+u)*.5;C=X+24|0;D=X+40|0;E=X+56|0;F=X+64|0;G=T+8|0;H=X+72|0;I=X+80|0;J=X+88|0;K=X+96|0;L=X+104|0;M=X+112|0;N=X+120|0;O=V+4|0;n=(i|0)==6&1;q=0.0;p=0.0;s=s+r;m=1;while(1){if((m|0)>=(j|0)){y=6;break}d=c[U+(m<<2)>>2]|0;if(!(m&1)){c[X>>2]=c[S>>2];c[X+4>>2]=c[S+4>>2];c[X+8>>2]=c[S+8>>2];c[X+12>>2]=c[S+12>>2];h[o>>3]=A;h[C>>3]=+h[z>>3];h[e>>3]=A;h[D>>3]=s;h[f>>3]=B;h[E>>3]=s;h[F>>3]=B;t=+h[G>>3];h[H>>3]=t;Z=+h[T>>3];h[I>>3]=Z;h[J>>3]=t;h[K>>3]=Z;Z=s+6.0;h[L>>3]=Z;h[M>>3]=+h[S>>3];h[N>>3]=Z;s=+h[(c[(c[d+16>>2]|0)+96>>2]|0)+32>>3];t=Z+s*.5;s=Z+s}else{k=d+16|0;b=c[(c[k>>2]|0)+96>>2]|0;if((m|0)==1){p=+h[b+24>>3];q=(p+u)*.5;p=(u-p)*.5}r=r+-6.0-+h[b+32>>3];c[X>>2]=c[S>>2];c[X+4>>2]=c[S+4>>2];c[X+8>>2]=c[S+8>>2];c[X+12>>2]=c[S+12>>2];h[o>>3]=+h[S>>3];t=r+-6.0;h[C>>3]=t;h[e>>3]=+h[T>>3];h[D>>3]=t;c[f>>2]=c[T>>2];c[f+4>>2]=c[T+4>>2];c[f+8>>2]=c[T+8>>2];c[f+12>>2]=c[T+12>>2];h[F>>3]=q;h[H>>3]=+h[G>>3];h[I>>3]=q;h[J>>3]=r;h[K>>3]=p;h[L>>3]=r;h[M>>3]=p;h[N>>3]=+h[z>>3];t=+h[(c[(c[k>>2]|0)+96>>2]|0)+32>>3]*.5+r}c[O>>2]=8;c[V>>2]=X;c[P>>2]=c[S>>2];c[P+4>>2]=c[S+4>>2];c[P+8>>2]=c[S+8>>2];c[P+12>>2]=c[S+12>>2];c[Q>>2]=c[T>>2];c[Q+4>>2]=c[T+4>>2];c[Q+8>>2]=c[T+8>>2];c[Q+12>>2]=c[T+12>>2];c[R>>2]=c[V>>2];c[R+4>>2]=c[V+4>>2];k=oJ(P,Q,R,W,n)|0;b=c[W>>2]|0;if(!b)break;i=c[(c[d+16>>2]|0)+96>>2]|0;h[i+56>>3]=v;h[i+64>>3]=t;a[i+81>>0]=1;QK(d,c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0,k,b,17296);m=m+1|0}a:do if((y|0)==6){v=(x+w*2.0)*.3333333333333333;u=(x*2.0+w)*.3333333333333333;while(1){if((m|0)>=(g|0))break;d=c[U+(m<<2)>>2]|0;if(!(m&1)){c[X>>2]=c[S>>2];c[X+4>>2]=c[S+4>>2];c[X+8>>2]=c[S+8>>2];c[X+12>>2]=c[S+12>>2];h[o>>3]=A;h[C>>3]=+h[z>>3];h[e>>3]=A;h[D>>3]=s;h[f>>3]=B;h[E>>3]=s;h[F>>3]=B;t=+h[G>>3];h[H>>3]=t;Z=+h[T>>3];h[I>>3]=Z;h[J>>3]=t;h[K>>3]=Z;Z=s+6.0;h[L>>3]=Z;h[M>>3]=+h[S>>3];s=Z;t=p;p=Z}else{y=(m|0)==1;t=y?v:p;q=y?u:q;p=r+-6.0;c[X>>2]=c[S>>2];c[X+4>>2]=c[S+4>>2];c[X+8>>2]=c[S+8>>2];c[X+12>>2]=c[S+12>>2];h[o>>3]=+h[S>>3];r=r+-12.0;h[C>>3]=r;h[e>>3]=+h[T>>3];h[D>>3]=r;c[f>>2]=c[T>>2];c[f+4>>2]=c[T+4>>2];c[f+8>>2]=c[T+8>>2];c[f+12>>2]=c[T+12>>2];h[F>>3]=q;h[H>>3]=+h[G>>3];h[I>>3]=q;h[J>>3]=p;h[K>>3]=t;h[L>>3]=p;h[M>>3]=t;r=p;p=+h[z>>3]}h[N>>3]=p;c[O>>2]=8;c[V>>2]=X;c[P>>2]=c[S>>2];c[P+4>>2]=c[S+4>>2];c[P+8>>2]=c[S+8>>2];c[P+12>>2]=c[S+12>>2];c[Q>>2]=c[T>>2];c[Q+4>>2]=c[T+4>>2];c[Q+8>>2]=c[T+8>>2];c[Q+12>>2]=c[T+12>>2];c[R>>2]=c[V>>2];c[R+4>>2]=c[V+4>>2];k=oJ(P,Q,R,W,n)|0;b=c[W>>2]|0;if(!b)break a;QK(d,c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0,k,b,17296);m=m+1|0;p=t}D_(U)}while(0);l=Y;return}function Zg(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0;g=l;l=l+16|0;f=g;j=(ey(b)|0)==0;j=j?18488:18480;a[f>>0]=a[j>>0]|0;a[f+1>>0]=a[j+1>>0]|0;a[f+2>>0]=a[j+2>>0]|0;a[f+3>>0]=a[j+3>>0]|0;f=Xx(85398,f,0)|0;Az(f,134401,280,1)|0;nx(f,0,87076,191979)|0;j=uH(96)|0;e=c[f+16>>2]|0;c[e+8>>2]=j;i=c[b+16>>2]|0;k=c[i+8>>2]|0;h[j>>3]=+h[k>>3];h[j+24>>3]=+h[k+24>>3];a[e+115>>0]=a[i+115>>0]|0;c[e+116>>2]=c[i+116>>2]&1^1;c[e+248>>2]=c[i+248>>2];c[e+252>>2]=c[i+252>>2];e=sx(fz(b)|0,1,0)|0;while(1){if(!e)break;nx(f,1,c[e+8>>2]|0,c[e+12>>2]|0)|0;e=sx(fz(b)|0,1,e)|0}e=sx(fz(b)|0,2,0)|0;while(1){if(!e)break;nx(f,2,c[e+8>>2]|0,c[e+12>>2]|0)|0;e=sx(fz(b)|0,2,e)|0}if(!(nx(f,2,108382,0)|0))nx(f,2,108382,191979)|0;if(!(nx(f,2,108373,0)|0))nx(f,2,108373,191979)|0;ch(f,d);l=g;return f|0}function _g(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;e=l;l=l+16|0;d=e;a=az(a,ry(b)|0,1)|0;Az(a,134365,304,1)|0;Bx(b,a)|0;if((HJ(b)|0)==2){f=b+16|0;b=vH((W_(c[c[(c[f>>2]|0)+104>>2]>>2]|0)|0)+3|0)|0;c[d>>2]=c[c[(c[f>>2]|0)+104>>2]>>2];Y0(b,85393,d)|0;zx(a,105198,b)|0}l=e;return a|0}function $g(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;c=Rx(a,b,c,0,1)|0;Az(c,134378,176,1)|0;Bx(d,c)|0;return c|0}function ah(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0.0;i=l;l=l+32|0;g=i+16|0;f=i;if(e|0){j=+h[b>>3];e=b+8|0;h[b>>3]=+h[e>>3];h[e>>3]=-j};c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];c[g>>2]=c[d>>2];c[g+4>>2]=c[d+4>>2];c[g+8>>2]=c[d+8>>2];c[g+12>>2]=c[d+12>>2];Pg(a,f,g);l=i;return}function bh(a,b){a=a|0;b=b|0;c[46419]=c[b>>2];c[46423]=c[b+4>>2];c[46424]=c[b+8>>2];c[46404]=c[b+12>>2];c[46405]=c[b+16>>2];c[46411]=c[b+20>>2];c[46410]=c[b+24>>2];c[46409]=c[b+28>>2];c[46435]=c[b+32>>2];c[46427]=c[b+36>>2];c[46412]=c[b+40>>2];c[46422]=c[b+44>>2];c[46431]=c[b+48>>2];c[46430]=c[b+52>>2];c[46429]=c[b+56>>2];c[46434]=c[b+60>>2];c[46428]=c[b+64>>2];c[46413]=c[b+68>>2];c[46375]=c[b+72>>2];c[46376]=c[b+76>>2];c[46377]=c[b+80>>2];c[46387]=c[b+84>>2];c[46380]=c[b+88>>2];c[46381]=c[b+92>>2];c[46382]=c[b+96>>2];c[46384]=c[b+100>>2];c[46385]=c[b+104>>2];c[46388]=c[b+108>>2];c[46391]=c[b+112>>2];c[46389]=c[b+116>>2];c[46390]=c[b+120>>2];c[46393]=c[b+124>>2];c[46392]=c[b+128>>2];c[46394]=c[b+132>>2];c[46395]=c[b+136>>2];c[46386]=c[b+140>>2];c[46398]=c[b+144>>2];c[46370]=c[b+148>>2];c[46367]=c[b+152>>2];D_(b);Tf(a);$x(a)|0;return}function ch(a,b){a=a|0;b=b|0;c[b>>2]=c[46419];c[b+4>>2]=c[46423];c[b+8>>2]=c[46424];c[b+12>>2]=c[46404];c[b+16>>2]=c[46405];c[b+20>>2]=c[46411];c[b+24>>2]=c[46410];c[b+28>>2]=c[46409];c[b+32>>2]=c[46435];c[b+36>>2]=c[46427];c[b+40>>2]=c[46412];c[b+44>>2]=c[46422];c[b+48>>2]=c[46431];c[b+52>>2]=c[46430];c[b+56>>2]=c[46429];c[b+60>>2]=c[46434];c[b+64>>2]=c[46428];c[b+68>>2]=c[46413];c[b+72>>2]=c[46375];c[b+76>>2]=c[46376];c[b+80>>2]=c[46377];c[b+84>>2]=c[46387];c[b+88>>2]=c[46380];c[b+92>>2]=c[46381];c[b+96>>2]=c[46382];c[b+100>>2]=c[46384];c[b+104>>2]=c[46385];c[b+108>>2]=c[46388];c[b+112>>2]=c[46391];c[b+116>>2]=c[46389];c[b+120>>2]=c[46390];c[b+124>>2]=c[46393];c[b+128>>2]=c[46392];c[b+132>>2]=c[46394];c[b+136>>2]=c[46395];c[b+140>>2]=c[46386];c[b+144>>2]=c[46398];c[b+152>>2]=c[46367];c[b+148>>2]=c[46370];c[46419]=0;c[46423]=nx(a,2,87317,0)|0;c[46424]=nx(a,2,87326,0)|0;b=nx(a,2,98515,0)|0;c[46404]=b;if(!b)c[46404]=nx(a,2,98515,191979)|0;c[46405]=0;c[46411]=0;c[46410]=nx(a,2,98411,0)|0;c[46409]=nx(a,2,98402,0)|0;c[46435]=nx(a,2,98691,0)|0;c[46427]=0;c[46412]=nx(a,2,105198,0)|0;c[46422]=nx(a,2,85403,0)|0;c[46431]=0;c[46430]=nx(a,2,98591,0)|0;c[46429]=nx(a,2,98577,0)|0;c[46434]=nx(a,2,98682,0)|0;c[46428]=0;c[46413]=0;c[46375]=nx(a,1,137966,0)|0;c[46376]=nx(a,1,138034,0)|0;c[46377]=nx(a,1,105204,0)|0;c[46387]=0;c[46380]=nx(a,1,98402,0)|0;c[46381]=nx(a,1,98411,0)|0;c[46382]=0;c[46384]=nx(a,1,105198,0)|0;c[46385]=0;c[46388]=0;c[46391]=nx(a,1,98383,0)|0;c[46389]=nx(a,1,137994,0)|0;c[46390]=nx(a,1,98446,0)|0;c[46393]=nx(a,1,98458,0)|0;c[46392]=nx(a,1,98322,0)|0;c[46394]=nx(a,1,98463,0)|0;c[46395]=nx(a,1,85415,0)|0;c[46386]=0;c[46398]=0;c[46370]=nx(a,0,98383,0)|0;return}function dh(a,b){a=a|0;b=b|0;var d=0,e=0.0,f=0.0,g=0.0,i=0.0;d=c[(c[(c[a>>2]|0)+16>>2]|0)+96>>2]|0;a=c[(c[(c[b>>2]|0)+16>>2]|0)+96>>2]|0;b=(a|0)!=0;if(d)if(b?(f=+h[d+24>>3],i=+h[d+32>>3],e=+h[a+24>>3],g=+h[a+32>>3],!(f>e)):0)if(!(fg)a=-1;else a=i>2]|0)+116>>2]|0;if(!b)break;else a=b}b=c[a>>2]&3;d=c[(c[((b|0)==2?a:a+-48|0)+40>>2]|0)+16>>2]|0;e=c[d+232>>2]|0;a=c[(c[((b|0)==3?a:a+48|0)+40>>2]|0)+16>>2]|0;b=c[a+232>>2]|0;if((e|0)<=(b|0))if((e|0)<(b|0))a=1;else a=(c[d+236>>2]|0)<(c[a+236>>2]|0)&1;else a=0;return a|0}function fh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=l;l=l+16|0;e=d+8|0;f=d;h=(c[a+16>>2]|0)+180|0;g=(c[b+16>>2]|0)+172|0;c[f>>2]=c[h>>2];c[f+4>>2]=c[h+4>>2];c[e>>2]=c[g>>2];c[e+4>>2]=c[g+4>>2];b=gh(a,f,b,e)|0;l=d;return b|0}function gh(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=c[b+4>>2]|0;a:do if((f|0)>0?(g=c[e+4>>2]|0,(g|0)>0):0)if((f|0)<(g|0)){f=c[b>>2]|0;e=0;while(1){b=c[f+(e<<2)>>2]|0;if(!b){b=0;break a}if((c[((c[b>>2]&3|0)==2?b:b+-48|0)+40>>2]|0)==(d|0))break;else e=e+1|0}}else{f=c[e>>2]|0;e=0;while(1){b=c[f+(e<<2)>>2]|0;if(!b){b=0;break a}if((c[((c[b>>2]&3|0)==3?b:b+48|0)+40>>2]|0)==(a|0))break;else e=e+1|0}}else b=0;while(0);return b|0}function hh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=l;l=l+16|0;e=d+8|0;f=d;h=(c[a+16>>2]|0)+188|0;g=(c[b+16>>2]|0)+196|0;c[f>>2]=c[h>>2];c[f+4>>2]=c[h+4>>2];c[e>>2]=c[g>>2];c[e+4>>2]=c[g+4>>2];b=gh(a,f,b,e)|0;l=d;return b|0}function ih(a){a=a|0;var b=0,d=0,e=0,f=0;e=a+48|0;d=c[(c[((c[a>>2]&3|0)==3?a:e)+40>>2]|0)+16>>2]|0;b=c[d+180>>2]|0;if(!b)b=vH((c[d+184>>2]<<2)+8|0)|0;else b=xH(b,(c[d+184>>2]<<2)+8|0)|0;c[(c[(c[((c[a>>2]&3|0)==3?a:e)+40>>2]|0)+16>>2]|0)+180>>2]=b;f=c[(c[((c[a>>2]&3|0)==3?a:e)+40>>2]|0)+16>>2]|0;d=c[f+180>>2]|0;f=f+184|0;b=c[f>>2]|0;c[f>>2]=b+1;c[d+(b<<2)>>2]=a;e=c[(c[((c[a>>2]&3|0)==3?a:e)+40>>2]|0)+16>>2]|0;c[(c[e+180>>2]|0)+(c[e+184>>2]<<2)>>2]=0;e=a+-48|0;b=c[(c[((c[a>>2]&3|0)==2?a:e)+40>>2]|0)+16>>2]|0;d=c[b+172>>2]|0;if(!d)b=vH((c[b+176>>2]<<2)+8|0)|0;else b=xH(d,(c[b+176>>2]<<2)+8|0)|0;c[(c[(c[((c[a>>2]&3|0)==2?a:e)+40>>2]|0)+16>>2]|0)+172>>2]=b;b=c[(c[((c[a>>2]&3|0)==2?a:e)+40>>2]|0)+16>>2]|0;d=c[b+172>>2]|0;b=b+176|0;f=c[b>>2]|0;c[b>>2]=f+1;c[d+(f<<2)>>2]=a;f=c[(c[((c[a>>2]&3|0)==2?a:e)+40>>2]|0)+16>>2]|0;c[(c[f+172>>2]|0)+(c[f+176>>2]<<2)>>2]=0;return a|0}function jh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;e=a+4|0;f=c[e>>2]|0;d=0;while(1){if((d|0)>=(f|0))break;g=c[a>>2]|0;h=g+(d<<2)|0;if((c[h>>2]|0)==(b|0)){i=4;break}else d=d+1|0}if((i|0)==4){i=f+-1|0;c[e>>2]=i;c[h>>2]=c[g+(i<<2)>>2];c[(c[a>>2]|0)+(i<<2)>>2]=0}return}function kh(a){a=a|0;if(!a)qa(85456,85466,117,85475);else{jh((c[(c[((c[a>>2]&3|0)==3?a:a+48|0)+40>>2]|0)+16>>2]|0)+180|0,a);jh((c[(c[((c[a>>2]&3|0)==2?a:a+-48|0)+40>>2]|0)+16>>2]|0)+172|0,a);return}}function lh(a){a=a|0;var b=0,d=0,e=0,f=0;e=a+48|0;d=c[(c[((c[a>>2]&3|0)==3?a:e)+40>>2]|0)+16>>2]|0;b=c[d+204>>2]|0;if(!b)b=vH((c[d+208>>2]<<2)+8|0)|0;else b=xH(b,(c[d+208>>2]<<2)+8|0)|0;c[(c[(c[((c[a>>2]&3|0)==3?a:e)+40>>2]|0)+16>>2]|0)+204>>2]=b;f=c[(c[((c[a>>2]&3|0)==3?a:e)+40>>2]|0)+16>>2]|0;b=c[f+204>>2]|0;f=f+208|0;d=c[f>>2]|0;c[f>>2]=d+1;c[b+(d<<2)>>2]=a;e=c[(c[((c[a>>2]&3|0)==3?a:e)+40>>2]|0)+16>>2]|0;c[(c[e+204>>2]|0)+(c[e+208>>2]<<2)>>2]=0;return}function mh(a){a=a|0;nh(a,(c[(c[((c[a>>2]&3|0)==3?a:a+48|0)+40>>2]|0)+16>>2]|0)+204|0);return}function nh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;h=b+4|0;e=c[h>>2]|0;f=c[b>>2]|0;d=0;while(1){if((d|0)>=(e|0)){g=4;break}if((c[f+(d<<2)>>2]|0)==(a|0))break;else d=d+1|0}if((g|0)==4){if(!f)d=vH((e<<2)+8|0)|0;else d=xH(f,(e<<2)+8|0)|0;c[b>>2]=d;f=c[h>>2]|0;g=f+1|0;c[h>>2]=g;c[d+(f<<2)>>2]=a;c[(c[b>>2]|0)+(g<<2)>>2]=0}return}function oh(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;n=uH(96)|0;g=n+48|0;c[g>>2]=c[g>>2]|3;c[n>>2]=c[n>>2]&-4|2;h=uH(176)|0;m=n+16|0;c[m>>2]=h;c[((c[n>>2]&3|0)==3?n:g)+40>>2]=d;j=n+-48|0;c[((c[n>>2]&3|0)==2?n:j)+40>>2]=e;a[h+112>>0]=1;if(!f){c[h+156>>2]=1;b[h+154>>1]=1;b[h+168>>1]=1;b[h+170>>1]=1}else{c[n>>2]=c[n>>2]&15|c[f>>2]&-16;c[g>>2]=c[g>>2]&15|c[f>>2]&-16;l=f+16|0;i=c[l>>2]|0;b[h+168>>1]=b[i+168>>1]|0;b[h+154>>1]=b[i+154>>1]|0;c[h+156>>2]=c[i+156>>2];b[h+170>>1]=b[i+170>>1]|0;d=c[((c[n>>2]&3|0)==3?n:g)+40>>2]|0;e=c[f>>2]&3;k=f+48|0;if((d|0)!=(c[((e|0)==3?f:k)+40>>2]|0)){g=f+-48|0;if((d|0)==(c[((e|0)==2?f:g)+40>>2]|0)){h=h+16|0;d=i+56|0;e=h+40|0;do{c[h>>2]=c[d>>2];h=h+4|0;d=d+4|0}while((h|0)<(e|0))}}else{h=h+16|0;d=i+16|0;e=h+40|0;do{c[h>>2]=c[d>>2];h=h+4|0;d=d+4|0}while((h|0)<(e|0));g=f+-48|0}d=c[((c[n>>2]&3|0)==2?n:j)+40>>2]|0;e=c[f>>2]&3;if((d|0)!=(c[((e|0)==2?f:g)+40>>2]|0)){if((d|0)==(c[((e|0)==3?f:k)+40>>2]|0)){h=(c[m>>2]|0)+56|0;d=(c[l>>2]|0)+16|0;e=h+40|0;do{c[h>>2]=c[d>>2];h=h+4|0;d=d+4|0}while((h|0)<(e|0))}}else{h=(c[m>>2]|0)+56|0;d=(c[l>>2]|0)+56|0;e=h+40|0;do{c[h>>2]=c[d>>2];h=h+4|0;d=d+4|0}while((h|0)<(e|0))}d=(c[l>>2]|0)+172|0;if(!(c[d>>2]|0))c[d>>2]=n;c[(c[m>>2]|0)+116>>2]=f}return n|0}function ph(a,b,c){a=a|0;b=b|0;c=c|0;return ih(oh(a,b,c)|0)|0}function qh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;a=(c[a+16>>2]|0)+192|0;f=c[a>>2]|0;d=c[b+16>>2]|0;c[d+164>>2]=f;e=f;if(f|0)c[(c[e+16>>2]|0)+168>>2]=b;c[a>>2]=b;c[d+168>>2]=0;if((e|0)==(b|0))qa(85492,85466,215,85508);else return}function rh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;if((a|0)==(b|0))qa(85518,85466,220,85525);f=c[b+16>>2]|0;d=f+164|0;if(c[d>>2]|0)qa(85538,85466,221,85525);e=(c[a+16>>2]|0)+164|0;c[d>>2]=c[e>>2];d=c[e>>2]|0;if(d|0)c[(c[d+16>>2]|0)+168>>2]=b;c[f+168>>2]=a;c[e>>2]=b;return}function sh(a,b){a=a|0;b=b|0;var d=0,e=0;if(!(th(a,b)|0))qa(85557,85466,231,85578);b=c[b+16>>2]|0;d=c[b+164>>2]|0;e=d;b=b+168|0;if(d|0)c[(c[d+16>>2]|0)+168>>2]=c[b>>2];b=c[b>>2]|0;if(!b)c[(c[a+16>>2]|0)+192>>2]=e;else c[(c[b+16>>2]|0)+164>>2]=e;return}function th(a,b){a=a|0;b=b|0;a=(c[a+16>>2]|0)+192|0;while(1){a=c[a>>2]|0;if((a|0)==0|(a|0)==(b|0))break;a=(c[a+16>>2]|0)+164|0}return a|0}function uh(b){b=b|0;var d=0,e=0,f=0,g=0;d=uH(64)|0;c[d>>2]=c[d>>2]&-4|1;e=d+16|0;c[e>>2]=uH(304)|0;c[d+24>>2]=fz(b)|0;g=c[e>>2]|0;a[g+156>>0]=1;h[g+96>>3]=1.0;h[g+88>>3]=1.0;h[g+80>>3]=1.0;c[g+216>>2]=1;c[g+176>>2]=0;g=uH(20)|0;f=c[e>>2]|0;c[f+172>>2]=g;c[f+184>>2]=0;f=uH(20)|0;c[(c[e>>2]|0)+180>>2]=f;qh(b,d);b=(c[b+16>>2]|0)+232|0;c[b>>2]=(c[b>>2]|0)+1;return d|0}function vh(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=d+48|0;e=c[(c[((c[d>>2]&3|0)==3?d:g)+40>>2]|0)+16>>2]|0;f=c[e+188>>2]|0;if(!f)e=vH((c[e+192>>2]<<2)+8|0)|0;else e=xH(f,(c[e+192>>2]<<2)+8|0)|0;c[(c[(c[((c[d>>2]&3|0)==3?d:g)+40>>2]|0)+16>>2]|0)+188>>2]=e;h=c[(c[((c[d>>2]&3|0)==3?d:g)+40>>2]|0)+16>>2]|0;f=c[h+188>>2]|0;h=h+192|0;e=c[h>>2]|0;c[h>>2]=e+1;c[f+(e<<2)>>2]=d;g=c[(c[((c[d>>2]&3|0)==3?d:g)+40>>2]|0)+16>>2]|0;c[(c[g+188>>2]|0)+(c[g+192>>2]<<2)>>2]=0;g=d+-48|0;e=c[(c[((c[d>>2]&3|0)==2?d:g)+40>>2]|0)+16>>2]|0;f=c[e+196>>2]|0;if(!f)e=vH((c[e+200>>2]<<2)+8|0)|0;else e=xH(f,(c[e+200>>2]<<2)+8|0)|0;c[(c[(c[((c[d>>2]&3|0)==2?d:g)+40>>2]|0)+16>>2]|0)+196>>2]=e;e=c[(c[((c[d>>2]&3|0)==2?d:g)+40>>2]|0)+16>>2]|0;f=c[e+196>>2]|0;e=e+200|0;h=c[e>>2]|0;c[e>>2]=h+1;c[f+(h<<2)>>2]=d;h=c[(c[((c[d>>2]&3|0)==2?d:g)+40>>2]|0)+16>>2]|0;c[(c[h+196>>2]|0)+(c[h+200>>2]<<2)>>2]=0;a[(c[b+16>>2]|0)+240>>0]=1;a[(c[(ig(b)|0)+16>>2]|0)+240>>0]=1;return}function wh(a){a=a|0;var b=0,d=0;if(!a)qa(85456,85466,269,85595);b=c[(c[a+16>>2]|0)+116>>2]|0;if(b|0?(d=(c[b+16>>2]|0)+172|0,(c[d>>2]|0)==(a|0)):0)c[d>>2]=0;jh((c[(c[((c[a>>2]&3|0)==3?a:a+48|0)+40>>2]|0)+16>>2]|0)+188|0,a);jh((c[(c[((c[a>>2]&3|0)==2?a:a+-48|0)+40>>2]|0)+16>>2]|0)+196|0,a);return}function xh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=l;l=l+16|0;d=(c[a+16>>2]|0)+172|0;e=c[d>>2]|0;do if((e|0)!=(b|0))if(!e){c[d>>2]=b;yh(a,b);break}else qa(87498,85466,340,85633);else Pw(0,85612,f)|0;while(0);l=f;return}function yh(a,d){a=a|0;d=d|0;var f=0,g=0,h=0,i=0;f=(c[d+16>>2]|0)+170|0;i=c[a+16>>2]|0;a=b[i+170>>1]|0;if((e[f>>1]|0)<(a&65535))b[f>>1]=a;g=i+168|0;h=i+154|0;f=i+156|0;a=d;while(1){if(!a)break;d=c[a+16>>2]|0;i=d+168|0;b[i>>1]=(e[i>>1]|0)+(e[g>>1]|0);i=d+154|0;b[i>>1]=(e[i>>1]|0)+(e[h>>1]|0);i=d+156|0;c[i>>2]=(c[i>>2]|0)+(c[f>>2]|0);a=c[d+172>>2]|0}return}function zh(d){d=d|0;var e=0,f=0,g=0,h=0;f=d+16|0;e=c[(c[f>>2]|0)+172>>2]|0;a:while(1){if(!e)break;Ah(e,d);h=c[e+16>>2]|0;g=c[h+172>>2]|0;if(!(b[h+168>>1]|0))Bh(e);while(1){if((a[(c[e+16>>2]|0)+112>>0]|0)!=1){e=g;continue a}e=c[(c[((c[e>>2]&3|0)==2?e:e+-48|0)+40>>2]|0)+16>>2]|0;if((a[e+156>>0]|0)!=1){e=g;continue a}if((c[e+184>>2]|0)!=1){e=g;continue a}e=c[c[e+180>>2]>>2]|0;Ah(e,d)}}c[(c[f>>2]|0)+172>>2]=0;return}function Ah(a,d){a=a|0;d=d|0;var f=0;f=c[d+16>>2]|0;d=c[a+16>>2]|0;a=d+168|0;b[a>>1]=(e[a>>1]|0)-(e[f+168>>1]|0);a=d+154|0;b[a>>1]=(e[a>>1]|0)-(e[f+154>>1]|0);d=d+156|0;c[d>>2]=(c[d>>2]|0)-(c[f+156>>2]|0);return}function Bh(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;if(!a)qa(85456,85466,128,85646);g=a+48|0;d=0;while(1){b=c[a>>2]|0;e=(c[(c[((b&3|0)==3?a:g)+40>>2]|0)+16>>2]|0)+180|0;f=c[(c[e>>2]|0)+(d<<2)>>2]|0;if(!f)break;if((f|0)==(a|0))jh(e,a);d=d+1|0}g=a+-48|0;f=0;while(1){d=(c[(c[((b&3|0)==2?a:g)+40>>2]|0)+16>>2]|0)+172|0;e=c[(c[d>>2]|0)+(f<<2)>>2]|0;if(!e)break;if((e|0)==(a|0)){jh(d,a);b=c[a>>2]|0}f=f+1|0}return}function Ch(d){d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;p=l;l=l+1040|0;n=p+1032|0;o=p;m=p+8|0;k=d+16|0;d=c[k>>2]|0;j=b[d+236>>1]|0;while(1){if((j|0)>(b[d+238>>1]|0))break;i=c[d+196>>2]|0;h=i+(j<<6)|0;i=i+(j<<6)+4|0;g=0;d=0;while(1){if((g|0)>=(c[h>>2]|0))break;e=c[(c[i>>2]|0)+(g<<2)>>2]|0;f=e+16|0;if(c[(c[f>>2]|0)+112>>2]|0){if(!d){a[n>>0]=a[18484]|0;a[n+1>>0]=a[18485]|0;a[n+2>>0]=a[18486]|0;a[n+3>>0]=a[18487]|0;d=Xx(85668,n,0)|0}c[o>>2]=g;Y0(m,134313,o)|0;t=az(d,m,1)|0;Az(t,91080,24,1)|0;q=c[(c[f>>2]|0)+180>>2]|0;r=c[q>>2]|0;r=c[(c[(c[((c[r>>2]&3|0)==2?r:r+-48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0;q=c[q+4>>2]|0;q=c[(c[(c[((c[q>>2]&3|0)==2?q:q+-48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0;s=(r|0)>(q|0);f=c[t+16>>2]|0;c[f+12>>2]=s?q:r;c[f+16>>2]=s?r:q;c[f+20>>2]=e}g=g+1|0}if(d|0){if((ay(d)|0)>1)Dh(d,h);$x(d)|0}j=j+1|0;d=c[k>>2]|0}l=p;return}function Dh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;d=0;h=Sy(a)|0;a:while(1){if(!h)break;i=Ty(a,h)|0;j=h+16|0;g=i;while(1){if(!g){h=i;continue a}f=c[g+16>>2]|0;e=c[j>>2]|0;if((c[f+16>>2]|0)>(c[e+12>>2]|0)){if((c[e+16>>2]|0)<=(c[f+12>>2]|0))Rx(a,h,g,0,1)|0}else{Rx(a,g,h,0,1)|0;d=1}g=Ty(a,g)|0}}do if(d|0){h=vA(a,85671,1)|0;j=uH((ay(a)|0)<<2)|0;i=uH((ay(a)|0)<<2)|0;f=b+4|0;e=Sy(a)|0;b:while(1){if(!e){d=23;break}if((c[(c[e+16>>2]|0)+8>>2]|0)==0?cy(a,e,1,1)|0:0){c:do if(Eh(a,e,h,i)|0){g=ay(h)|0;if((Fh(a,h,j)|0)!=(g|0)){d=17;break b}_0(i,g,4,60);d=0;while(1){if((d|0)>=(g|0))break c;b=i+(d<<2)|0;k=c[j+(d<<2)>>2]|0;c[(c[k+16>>2]|0)+236>>2]=c[b>>2];c[(c[f>>2]|0)+(c[b>>2]<<2)>>2]=k;d=d+1|0}}while(0);Hh(h)}e=Ty(a,e)|0}if((d|0)==17)qa(85676,85686,265,85697);else if((d|0)==23){D_(j);break}}while(0);return}function Eh(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;h=c[b+16>>2]|0;c[h+8>>2]=1;h=c[(c[(c[h+20>>2]|0)+16>>2]|0)+236>>2]|0;c[e+((ay(d)|0)<<2)>>2]=h;Xy(d,b,1)|0;h=Ex(a,b)|0;f=0;while(1){if(!h)break;j=c[h>>2]&3;g=c[((j|0)==2?h:h+-48|0)+40>>2]|0;i=c[g+16>>2]|0;f=f+((c[(c[(c[i+20>>2]|0)+16>>2]|0)+236>>2]|0)>(c[(c[(c[(c[(c[((j|0)==3?h:h+48|0)+40>>2]|0)+16>>2]|0)+20>>2]|0)+16>>2]|0)+236>>2]|0)&1)|0;if(!(c[i+8>>2]|0))f=(Eh(a,g,d,e)|0)+f|0;h=Gx(a,h)|0}h=Hx(a,b)|0;while(1){if(!h)break;i=c[h>>2]&3;g=c[((i|0)==3?h:h+48|0)+40>>2]|0;j=c[g+16>>2]|0;f=f+((c[(c[(c[(c[(c[((i|0)==2?h:h+-48|0)+40>>2]|0)+16>>2]|0)+20>>2]|0)+16>>2]|0)+236>>2]|0)>(c[(c[(c[j+20>>2]|0)+16>>2]|0)+236>>2]|0)&1)|0;if(!(c[j+8>>2]|0))f=(Eh(a,g,d,e)|0)+f|0;h=Ix(a,h)|0}return f|0}function Fh(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;f=0;while(1){e=Ih(a,b)|0;if(!e)break;c[d+(f<<2)>>2]=c[(c[e+16>>2]|0)+20>>2];cz(b,e)|0;e=Ex(a,e)|0;while(1){if(!e)break;g=Gx(a,e)|0;Ux(a,e)|0;e=g}f=f+1|0}return f|0}function Gh(a,b){a=a|0;b=b|0;return (c[a>>2]|0)-(c[b>>2]|0)|0}function Hh(a){a=a|0;var b=0,c=0;b=Sy(a)|0;while(1){if(!b)break;c=Ty(a,b)|0;cz(a,b)|0;b=c}return}function Ih(a,b){a=a|0;b=b|0;var c=0;c=Sy(b)|0;while(1){if(!c){c=0;break}if(!(cy(a,c,1,0)|0))break;c=Ty(b,c)|0}return c|0}function Jh(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;Kh(b);i=b+16|0;f=0;e=0;while(1){if((f|0)>=(c[(c[i>>2]|0)+220>>2]|0))break;Lh(b,f);f=f+1|0;e=(Mh(b,0,d)|0)+e|0}Nh(b);h=1;while(1){f=c[i>>2]|0;g=c[f+180>>2]|0;if((h|0)>(g|0))break;g=(Oh(c[(c[f+184>>2]|0)+(h<<2)>>2]|0,d)|0)+e|0;h=h+1|0;e=g}do if((g|0)>0){f=xx(b,85711)|0;if(f|0?(QL(f)|0)<<24>>24==0:0)break;ll(b);a[190689]=1;e=Mh(b,2,d)|0}while(0);Ph(b,e);return}function Kh(d){d=d|0;var e=0;if(0)EL();a[190689]=0;c[45971]=d;e=((by(ig(d)|0)|0)<<2)+4|0;c[45970]=uH(e)|0;c[45969]=uH(e)|0;Fi(d);e=d+16|0;if(b[(c[e>>2]|0)+136>>1]&16)Gi(d);Uk(d);Il(d,1);Hi(d);Wh(d);e=c[e>>2]|0;c[45972]=b[e+236>>1];c[45973]=b[e+238>>1];return}function Lh(a,d){a=a|0;d=d|0;var e=0,f=0,g=0;a=c[a+16>>2]|0;c[a+192>>2]=c[(c[a+216>>2]|0)+(d<<2)>>2];a:do if((d|0)>0){d=b[a+238>>1]|0;e=a+196|0;a=b[a+236>>1]|0;while(1){if((a|0)>(d|0))break a;f=c[e>>2]|0;g=f+(a<<6)+4|0;f=f+(a<<6)|0;c[g>>2]=(c[g>>2]|0)+(c[f>>2]<<2);c[f>>2]=0;a=a+1|0}}while(0);return}function Mh(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0;o=l;l=l+32|0;n=o;if((b|0)>1){e=ki(0)|0;li(a)}else e=2147483647;m=c[15686]|0;k=b;f=0;b=e;while(1){if((k|0)>=3)break;f=c[46365]|0;if((k|0)==2)if((e|0)>(b|0)){ni(a);e=b}else e=b;else{e=(f|0)<4?f:4;if((ig(a)|0)==(a|0))mi(a,k);if(!k)Xh(a);Yh(a);g=ki(0)|0;if((g|0)>(b|0)){f=e;e=g}else{li(a);f=e;e=g;b=g}}g=0;j=0;while(1){if((j|0)>=(f|0))break;if(0){c[n>>2]=k;c[n+4>>2]=j;c[n+8>>2]=g;c[n+12>>2]=e;c[n+16>>2]=b;g1(m,86104,n)|0}i=g+1|0;if((e|0)==0|(g|0)>=(c[45974]|0))break;oi(a,j);e=ki(0)|0;if((e|0)>(b|0))g=i;else{li(a);g=+h[22830]*+(b|0)>+(e|0)?0:i;b=e}j=j+1|0}if(!e){e=0;break}else k=k+1|0}if((e|0)>(b|0))ni(a);if((b|0)>0){pi(a,0);e=ki(0)|0}else e=b;a:do if(d|0){b=0;while(1){if((b|0)>=(f|0))break a;qi(a);b=b+1|0}}while(0);l=o;return e|0}function Nh(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;p=l;l=l+16|0;n=p;ji(a);k=a+16|0;d=c[k>>2]|0;m=c[15686]|0;j=b[d+236>>1]|0;while(1){if((j|0)>(b[d+238>>1]|0))break;e=c[d+196>>2]|0;f=c[e+(j<<6)+8>>2]|0;c[e+(j<<6)>>2]=f;g=c[e+(j<<6)+12>>2]|0;c[e+(j<<6)+4>>2]=g;i=0;while(1){if((i|0)>=(f|0))break;h=c[g+(i<<2)>>2]|0;if(!h){o=6;break}c[(c[h+16>>2]|0)+236>>2]=i;i=i+1|0}if((o|0)==6){o=0;if(0){e=ry(a)|0;d=c[(c[(c[k>>2]|0)+196>>2]|0)+(j<<6)>>2]|0;c[n>>2]=e;c[n+4>>2]=j;c[n+8>>2]=i;c[n+12>>2]=d;g1(m,86054,n)|0;d=c[k>>2]|0;e=c[d+196>>2]|0}c[e+(j<<6)>>2]=i}j=j+1|0}l=p;return}function Oh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;fl(a);Wh(a);Xh(a);Yh(a);f=a+16|0;d=Mh(a,2,b)|0;e=1;while(1){g=c[f>>2]|0;if((e|0)>(c[g+180>>2]|0))break;d=(Oh(c[(c[g+184>>2]|0)+(e<<2)>>2]|0,b)|0)+d|0;e=e+1|0}Zh(a);return d|0}function Ph(d,e){d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0.0;q=l;l=l+16|0;p=q;f=c[45969]|0;if(f|0){D_(f);c[45969]=0}f=c[45970]|0;if(f|0){D_(f);c[45970]=0}o=d+16|0;f=1;while(1){g=c[o>>2]|0;if((f|0)>(c[g+180>>2]|0))break;Qh(c[(c[g+184>>2]|0)+(f<<2)>>2]|0);f=f+1|0}n=b[g+236>>1]|0;f=g;while(1){if((n|0)>(b[f+238>>1]|0))break;else m=0;while(1){f=c[f+196>>2]|0;if((m|0)>=(c[f+(n<<6)>>2]|0))break;k=(c[(c[f+(n<<6)+4>>2]|0)+(m<<2)>>2]|0)+16|0;f=c[k>>2]|0;c[f+236>>2]=m;f=c[f+188>>2]|0;a:do if(f|0){g=0;while(1){i=c[f+(g<<2)>>2]|0;if(!i)break a;j=i+16|0;if((a[(c[j>>2]|0)+112>>0]|0)==4){wh(i);D_(c[j>>2]|0);D_(i);g=g+-1|0;f=c[(c[k>>2]|0)+188>>2]|0}g=g+1|0}}while(0);m=m+1|0;f=c[o>>2]|0}Rh(c[f+(n<<6)+56>>2]|0);n=n+1|0;f=c[o>>2]|0}if(0){o=c[15686]|0;d=ry(d)|0;r=+FL();c[p>>2]=d;c[p+4>>2]=e;h[p+8>>3]=r;g1(o,85722,p)|0}l=q;return}function Qh(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;g=a+16|0;d=1;while(1){f=c[g>>2]|0;if((d|0)>(c[f+180>>2]|0))break;Qh(c[(c[f+184>>2]|0)+(d<<2)>>2]|0);d=d+1|0}a:do if(c[f+268>>2]|0){e=b[f+236>>1]|0;d=f;while(1){if((e|0)>(b[d+238>>1]|0))break a;j=c[(c[d+268>>2]|0)+(e<<2)>>2]|0;i=Sh(a,j,-1)|0;j=Sh(a,j,1)|0;c[(c[(c[g>>2]|0)+268>>2]|0)+(e<<2)>>2]=i;k=c[(c[(c[(ig(a)|0)+16>>2]|0)+196>>2]|0)+(e<<6)+4>>2]|0;i=c[(c[i+16>>2]|0)+236>>2]|0;f=c[g>>2]|0;h=c[f+196>>2]|0;c[h+(e<<6)+4>>2]=k+(i<<2);c[h+(e<<6)>>2]=(c[(c[j+16>>2]|0)+236>>2]|0)+1-i;e=e+1|0;d=f}}while(0);return}function Rh(a){a=a|0;if(a|0){D_(c[a+8>>2]|0);D_(a)}return}function Sh(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=b;while(1){b=Th(b,c)|0;if(!b)break;if(Uh(a,b)|0){d=b;continue}e=(Vh(a,b)|0)==0;d=e?d:b}return d|0}function Th(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;if(!a)qa(85761,85686,1023,85763);if((b|0)<0){a=c[a+16>>2]|0;e=c[a+236>>2]|0;if((e|0)>0){a=(c[(c[(c[45971]|0)+16>>2]|0)+196>>2]|0)+(c[a+232>>2]<<6)+4|0;d=e+-1|0;f=7}else g=0}else{a=c[a+16>>2]|0;e=c[a+236>>2]|0;a=(c[(c[(c[45971]|0)+16>>2]|0)+196>>2]|0)+(c[a+232>>2]<<6)+4|0;d=e+1|0;f=7}if((f|0)==7){a=c[(c[a>>2]|0)+(d<<2)>>2]|0;if(a)if((O((c[(c[a+16>>2]|0)+236>>2]|0)-e|0,b)|0)>0)g=a;else qa(85772,85686,1029,85763);else g=0}return g|0}function Uh(b,d){b=b|0;d=d|0;if(!(a[(c[d+16>>2]|0)+156>>0]|0))b=(oz(b,d)|0)!=0&1;else b=0;return b|0}function Vh(b,d){b=b|0;d=d|0;var e=0,f=0;d=c[d+16>>2]|0;if(((a[d+156>>0]|0)==1?(c[d+176>>2]|0)==1:0)?(c[d+184>>2]|0)==1:0){d=c[d+180>>2]|0;while(1){d=c[d>>2]|0;e=c[d+16>>2]|0;if(!(a[e+112>>0]|0))break;else d=e+116|0}if(oz(b,d)|0)d=1;else f=7}else f=7;if((f|0)==7)d=0;return d|0}function Wh(b){b=b|0;var d=0,e=0,f=0;f=l;l=l+16|0;e=f;d=c[46370]|0;a:do if((d|0)!=0|(c[46391]|0)!=0){d=NL(b,d,0)|0;if(d|0){switch(a[d>>0]|0){case 0:break a;case 111:{if(!(b$(d,85974)|0)){ei(b,1);break a}break}case 105:{if(!(b$(d,95660)|0)){ei(b,0);break a}break}default:{}}c[e>>2]=d;Pw(1,85978,e)|0;break}d=wA(b)|0;while(1){if(!d)break;if(!(Rj(d)|0))Wh(d);d=xA(d)|0}if(c[46391]|0)fi(b)}while(0);l=f;return}function Xh(d){d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=d+16|0;e=c[k>>2]|0;j=b[e+236>>1]|0;while(1){if((j|0)>(b[e+238>>1]|0))break;else{f=0;i=0}while(1){g=c[e+196>>2]|0;h=c[g+(j<<6)>>2]|0;if((i|0)>=(h|0))break;g=c[(c[(c[g+(j<<6)+4>>2]|0)+(i<<2)>>2]|0)+16>>2]|0;a[g+158>>0]=0;a[g+157>>0]=0;c[g+284>>2]=i;if((f|0)==0&(c[g+192>>2]|0)>0){f=ci(h,h)|0;e=c[k>>2]|0;c[(c[e+196>>2]|0)+(j<<6)+56>>2]=f;f=1}i=i+1|0}a:do if(f){i=0;f=h;while(1){if((i|0)>=(f|0))break a;h=c[(c[g+(j<<6)+4>>2]|0)+(i<<2)>>2]|0;if(!(a[(c[h+16>>2]|0)+157>>0]|0)){di(d,h);e=c[k>>2]|0;f=c[e+196>>2]|0;g=f;f=c[f+(j<<6)>>2]|0}i=i+1|0}}while(0);j=j+1|0}return}function Yh(d){d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;s=d+16|0;e=c[s>>2]|0;if(a[e+240>>0]|0){h=0;r=b[e+236>>1]|0;q=0;i=0;a:while(1){if((r|0)>(b[e+238>>1]|0))break;f=c[e+196>>2]|0;g=c[f+(r<<6)>>2]|0;if(!g){g=q;f=i}else{f=c[f+(r<<6)+4>>2]|0;o=c[(c[(c[f>>2]|0)+16>>2]|0)+236>>2]|0;e=0;while(1){if((e|0)>=(g|0))break;a[(c[(c[f+(e<<2)>>2]|0)+16>>2]|0)+157>>0]=0;e=e+1|0}e=(e<<2)+4|0;if(!h)p=vH(e)|0;else p=xH(i,e)|0;m=0;n=0;while(1){e=c[s>>2]|0;f=c[e+196>>2]|0;g=c[f+(r<<6)>>2]|0;if((g|0)<=(n|0))break;j=c[(c[f+(r<<6)+4>>2]|0)+(((c[e+116>>2]&1|0)==0?g+~n|0:n)<<2)>>2]|0;l=j+16|0;e=0;k=0;while(1){i=c[l>>2]|0;if((e|0)>=(c[i+200>>2]|0)){f=0;g=0;e=i;break}i=k+((_h(d,c[(c[i+196>>2]|0)+(e<<2)>>2]|0)|0)!=0&1)|0;e=e+1|0;k=i}while(1){if((g|0)>=(c[e+192>>2]|0))break;i=f+((_h(d,c[(c[e+188>>2]|0)+(g<<2)>>2]|0)|0)!=0&1)|0;f=i;g=g+1|0;e=c[l>>2]|0}if(f|k)if((k|0)==0&(a[e+157>>0]|0)==0)e=($h(d,j,p+(m<<2)|0,r)|0)+m|0;else e=m;else{c[p+(m<<2)>>2]=j;e=m+1|0}m=e;n=n+1|0}b:do if(m){c:do if(!(c[e+116>>2]&1)){f=p;e=p+(m<<2)|0;while(1){e=e+-4|0;if(f>>>0>=e>>>0){g=0;break c}n=c[f>>2]|0;c[f>>2]=c[e>>2];c[e>>2]=n;f=f+4|0}}else g=0;while(0);while(1){e=c[s>>2]|0;i=c[e+196>>2]|0;f=c[i+(r<<6)>>2]|0;if((g|0)>=(f|0)){m=0;g=i;break}n=c[p+(g<<2)>>2]|0;c[(c[i+(r<<6)+4>>2]|0)+(g<<2)>>2]=n;c[(c[n+16>>2]|0)+236>>2]=g+o;g=g+1|0}while(1){if((m|0)>=(f|0))break b;l=(c[(c[g+(r<<6)+4>>2]|0)+(m<<2)>>2]|0)+16|0;i=c[(c[l>>2]|0)+188>>2]|0;if(i){k=0;f=i;while(1){g=c[f+(k<<2)>>2]|0;e=c[s>>2]|0;if(!g)break;j=c[g>>2]&3;i=c[(c[(c[((j|0)==2?g:g+-48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0;j=c[(c[(c[((j|0)==3?g:g+48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0;if(!(c[e+116>>2]&1))if((i|0)<(j|0))t=36;else e=k;else if((i|0)>(j|0))t=36;else e=k;if((t|0)==36){t=0;if(_h(d,g)|0){t=37;break a}wh(g);ai(d,g);e=k+-1|0;f=c[(c[l>>2]|0)+188>>2]|0}k=e+1|0}f=c[e+196>>2]|0;g=f;f=c[f+(r<<6)>>2]|0}m=m+1|0}}while(0);a[(c[(c[(c[45971]|0)+16>>2]|0)+196>>2]|0)+(r<<6)+49>>0]=0;h=p;g=p;f=p}r=r+1|0;q=g;i=f}if((t|0)==37)qa(85820,85686,1561,85859);if(h|0)D_(q)}return}function Zh(a){a=a|0;var d=0,e=0;e=a+16|0;a=c[e>>2]|0;a:do if(c[a+268>>2]|0){d=b[a+236>>1]|0;while(1){if((d|0)>(b[a+238>>1]|0))break a;c[(c[a+268>>2]|0)+(d<<2)>>2]=c[c[(c[a+196>>2]|0)+(d<<6)+4>>2]>>2];d=d+1|0;a=c[e>>2]|0}}while(0);return}function _h(a,b){a=a|0;b=b|0;if((c[(c[b+16>>2]|0)+156>>2]|0)!=0?(bi(a,c[((c[b>>2]&3|0)==3?b:b+48|0)+40>>2]|0)|0)!=0:0)a=(bi(a,c[((c[b>>2]&3|0)==2?b:b+-48|0)+40>>2]|0)|0)!=0&1;else a=0;return a|0}function $h(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;l=d+16|0;g=c[l>>2]|0;a[g+157>>0]=1;a:do if((c[g+192>>2]|0)>0){h=0;j=0;while(1){i=c[(c[g+188>>2]|0)+(j<<2)>>2]|0;if(!i)break a;if((_h(b,i)|0)!=0?(k=c[((c[i>>2]&3|0)==2?i:i+-48|0)+40>>2]|0,(a[(c[k+16>>2]|0)+157>>0]|0)==0):0)h=($h(b,k,e+(h<<2)|0,f)|0)+h|0;j=j+1|0;g=c[l>>2]|0}}else h=0;while(0);if((c[g+232>>2]|0)==(f|0)){c[e+(h<<2)>>2]=d;return h+1|0}else qa(85872,85686,1490,85888);return 0}function ai(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;i=c[d>>2]&3;j=c[((i|0)==2?d:d+-48|0)+40>>2]|0;f=c[(c[j+16>>2]|0)+188>>2]|0;a:do if(!f){e=d+48|0;m=15}else{l=d+48|0;g=((i|0)==3?d:l)+40|0;e=0;while(1){h=c[f+(e<<2)>>2]|0;if(!h){e=l;m=15;break a}if((c[((c[h>>2]&3|0)==2?h:h+-48|0)+40>>2]|0)==(c[g>>2]|0))break;else e=e+1|0}xh(d,h);e=(c[d+16>>2]|0)+172|0;if(!(c[e>>2]|0))c[e>>2]=h;e=c[h+16>>2]|0;if((a[e+112>>0]|0)==4?(k=e+116|0,(c[k>>2]|0)==0):0)c[k>>2]=d;e=c[(c[((c[d>>2]&3|0)==3?d:l)+40>>2]|0)+16>>2]|0;f=c[e+204>>2]|0;if(!f)e=vH((c[e+208>>2]<<2)+8|0)|0;else e=xH(f,(c[e+208>>2]<<2)+8|0)|0;c[(c[(c[((c[d>>2]&3|0)==3?d:l)+40>>2]|0)+16>>2]|0)+204>>2]=e;i=c[(c[((c[d>>2]&3|0)==3?d:l)+40>>2]|0)+16>>2]|0;j=c[i+204>>2]|0;i=i+208|0;k=c[i>>2]|0;c[i>>2]=k+1;c[j+(k<<2)>>2]=d;d=c[(c[((c[d>>2]&3|0)==3?d:l)+40>>2]|0)+16>>2]|0;c[(c[d+204>>2]|0)+(c[d+208>>2]<<2)>>2]=0}while(0);if((m|0)==15){m=oh(j,c[((i|0)==3?d:e)+40>>2]|0,d)|0;l=c[d+16>>2]|0;d=c[m+16>>2]|0;a[d+112>>0]=(a[l+112>>0]|0)==4?4:3;c[d+96>>2]=c[l+96>>2];vh(b,m)}return}function bi(a,b){a=a|0;b=b|0;var c=0;c=Uh(a,b)|0;return Vh(a,b)|0|c|0}function ci(a,b){a=a|0;b=b|0;var d=0;d=uH(12)|0;c[d>>2]=a;c[d+4>>2]=b;c[d+8>>2]=uH(O(b,a)|0)|0;return d|0}function di(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;o=d+16|0;l=c[o>>2]|0;k=c[(c[(c[b+16>>2]|0)+196>>2]|0)+(c[l+232>>2]<<6)+56>>2]|0;a[l+157>>0]=1;a[l+158>>0]=1;l=(c[(c[(ig(b)|0)+16>>2]|0)+180>>2]|0)>0;e=c[o>>2]|0;f=c[e+188>>2]|0;a:do if(f){m=k+4|0;n=k+8|0;d=0;b:while(1){j=c[f+(d<<2)>>2]|0;if(!j){p=e;break a}if(l){if((oz(b,c[((c[j>>2]&3|0)==3?j:j+48|0)+40>>2]|0)|0)!=0?(oz(b,c[((c[j>>2]&3|0)==2?j:j+-48|0)+40>>2]|0)|0)!=0:0)q=7}else q=7;do if((q|0)==7){q=0;h=j+16|0;if(c[(c[h>>2]|0)+156>>2]|0){e=c[j>>2]&3;g=j+-48|0;r=c[(c[((e|0)==2?j:g)+40>>2]|0)+16>>2]|0;i=c[r+284>>2]|0;f=(i|0)<(c[k>>2]|0);if((a[r+158>>0]|0)==1){if(!f){q=10;break b}e=c[(c[(c[((e|0)==3?j:j+48|0)+40>>2]|0)+16>>2]|0)+284>>2]|0;f=c[m>>2]|0;if((e|0)>=(f|0)){q=12;break b}a[(c[n>>2]|0)+((O(f,i)|0)+e)>>0]=1;wh(j);d=d+-1|0;if((a[(c[h>>2]|0)+112>>0]|0)==4)break;ai(b,j);break}else{if(!f){q=16;break b}e=c[(c[(c[((e|0)==3?j:j+48|0)+40>>2]|0)+16>>2]|0)+284>>2]|0;f=c[m>>2]|0;if((e|0)>=(f|0)){q=18;break b}a[(c[n>>2]|0)+((O(f,e)|0)+i)>>0]=1;e=c[((c[j>>2]&3|0)==2?j:g)+40>>2]|0;if(a[(c[e+16>>2]|0)+157>>0]|0)break;di(b,e);break}}}while(0);f=c[o>>2]|0;d=d+1|0;e=f;f=c[f+188>>2]|0}if((q|0)==10)qa(85898,85686,1251,85930);else if((q|0)==12)qa(85942,85686,1252,85930);else if((q|0)==16)qa(85898,85686,1260,85930);else if((q|0)==18)qa(85942,85686,1261,85930)}else p=e;while(0);a[p+158>>0]=0;return}function ei(a,b){a=a|0;b=b|0;var c=0;c=Sy(a)|0;while(1){if(!c)break;gi(a,c,b);c=Ty(a,c)|0}return}function fi(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;g=l;l=l+16|0;f=g;d=Sy(b)|0;while(1){if(!d)break;e=NL(d,c[46391]|0,0)|0;a:do if(e|0){switch(a[e>>0]|0){case 0:break a;case 111:{if(!(b$(e,85974)|0)){gi(b,d,1);break a}break}case 105:{if(!(b$(e,95660)|0)){gi(b,d,0);break a}break}default:{}}h=ry(d)|0;c[f>>2]=e;c[f+4>>2]=h;Pw(1,86009,f)|0}while(0);d=Ty(b,d)|0}l=g;return}function gi(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;j=c[45970]|0;h=d+16|0;f=c[h>>2]|0;a:do if(!(c[f+212>>2]|0)){i=(e|0)!=0;b:do if(i){g=0;d=0;e=f;while(1){f=c[(c[e+180>>2]|0)+(g<<2)>>2]|0;if(!f)break b;if(!(hi(f)|0)){c[j+(d<<2)>>2]=f;d=d+1|0;e=c[h>>2]|0}g=g+1|0}}else{g=0;d=0;e=f;while(1){f=c[(c[e+172>>2]|0)+(g<<2)>>2]|0;if(!f)break b;if(!(hi(f)|0)){c[j+(d<<2)>>2]=f;d=d+1|0;e=c[h>>2]|0}g=g+1|0}}while(0);if((d|0)>=2){c[j+(d<<2)>>2]=0;_0(j,d,4,61);h=i?2:3;g=i?-1:1;f=1;while(1){d=c[j+(f<<2)>>2]|0;if(!d)break a;e=c[j+(f+-1<<2)>>2]|0;e=c[((c[e>>2]&3|0)==(h|0)?e:e+(g*48|0)|0)+40>>2]|0;d=c[((c[d>>2]&3|0)==(h|0)?d:d+(g*48|0)|0)+40>>2]|0;if(hh(e,d)|0)break a;i=oh(e,d,0)|0;a[(c[i+16>>2]|0)+112>>0]=4;vh(b,i);f=f+1|0}}}while(0);return}function hi(a){a=a|0;var b=0;while(1){b=c[(c[a+16>>2]|0)+116>>2]|0;if(!b)break;else a=b}b=c[a>>2]&3;return (c[(c[(c[((b|0)==3?a:a+48|0)+40>>2]|0)+16>>2]|0)+212>>2]|0)!=(c[(c[(c[((b|0)==2?a:a+-48|0)+40>>2]|0)+16>>2]|0)+212>>2]|0)|0}function ii(a,b){a=a|0;b=b|0;return ((c[c[a>>2]>>2]|0)>>>4)-((c[c[b>>2]>>2]|0)>>>4)|0}function ji(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;f=c[a+16>>2]|0;g=f+220|0;h=c[g>>2]|0;if((h|0)>=2){i=f+216|0;a=0;e=0;while(1){if((e|0)>=(h|0))break;d=c[(c[i>>2]|0)+(e<<2)>>2]|0;if(a|0)c[(c[a+16>>2]|0)+164>>2]=d;j=c[d+16>>2]|0;c[j+168>>2]=a;a=d;d=j;while(1){d=c[d+164>>2]|0;if(!d)break;a=d;d=c[d+16>>2]|0}e=e+1|0}c[g>>2]=1;c[f+192>>2]=c[c[f+216>>2]>>2];b[f+236>>1]=c[45972];b[f+238>>1]=c[45973]}return}function ki(d){d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;i=c[45971]|0;j=i+16|0;f=c[j>>2]|0;g=0;h=b[f+236>>1]|0;while(1){if((h|0)>=(b[f+238>>1]|0))break;d=c[f+196>>2]|0;if(!(a[d+(h<<6)+49>>0]|0)){e=Di(i,h)|0;d=c[j>>2]|0;f=c[d+196>>2]|0;c[f+(h<<6)+52>>2]=e;a[f+(h<<6)+49>>0]=1}else{e=c[d+(h<<6)+52>>2]|0;d=f}g=e+g|0;h=h+1|0;f=d}return g|0}function li(a){a=a|0;var d=0,e=0,f=0,g=0,i=0,j=0;a=c[a+16>>2]|0;g=b[a+238>>1]|0;i=a+196|0;a=b[a+236>>1]|0;while(1){if((a|0)>(g|0))break;f=c[i>>2]|0;e=c[f+(a<<6)>>2]|0;f=f+(a<<6)+4|0;d=0;while(1){if((d|0)>=(e|0))break;j=c[(c[(c[f>>2]|0)+(d<<2)>>2]|0)+16>>2]|0;h[j+16>>3]=+(c[j+236>>2]|0);d=d+1|0}a=a+1|0}return}function mi(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0;r=l;l=l+16|0;m=r;n=d+16|0;o=GL(c[(c[n>>2]|0)+232>>2]|0)|0;j=c[n>>2]|0;f=j+192|0;g=f;while(1){g=c[g>>2]|0;if(!g)break;g=c[g+16>>2]|0;a[g+157>>0]=0;g=g+164|0}h=b[j+238>>1]|0;i=j+196|0;g=b[j+236>>1]|0;while(1){if((g|0)>(h|0))break;c[(c[i>>2]|0)+(g<<6)>>2]=0;g=g+1|0}i=(e|0)==0;while(1){g=c[f>>2]|0;if(!g)break;h=g+16|0;f=c[h>>2]|0;if((c[c[(i?f+172|0:f+180|0)>>2]>>2]|0)==0?(k=f+157|0,(a[k>>0]|0)==0):0){a[k>>0]=1;IL(o,g);while(1){f=JL(o)|0;if(!f)break;if((a[(c[f+16>>2]|0)+159>>0]|0)==7){kl(d,f,e,o);continue}else{Bi(d,f);Ci(o,f,e);continue}}f=c[h>>2]|0}f=f+164|0}if(JL(o)|0)Pw(1,86217,m)|0;f=c[n>>2]|0;j=b[f+236>>1]|0;while(1){if((j|0)>(b[f+238>>1]|0))break;a[(c[(c[(c[45971]|0)+16>>2]|0)+196>>2]|0)+(j<<6)+49>>0]=0;if((c[f+116>>2]&1|0)!=0?(p=c[f+196>>2]|0,q=c[p+(j<<6)>>2]|0,(q|0)>0):0){g=c[p+(j<<6)+4>>2]|0;h=q+-1|0;i=(h|0)/2|0;f=0;while(1){if((f|0)>(i|0))break;vi(c[g+(f<<2)>>2]|0,c[g+(h-f<<2)>>2]|0);f=f+1|0}f=c[n>>2]|0}j=j+1|0}if((ig(d)|0)==(d|0)?(ki(0)|0)>0:0)pi(d,0);HL(o);l=r;return}function ni(d){d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;n=d+16|0;d=c[n>>2]|0;f=b[d+236>>1]|0;e=b[d+238>>1]|0;l=e<<16>>16;m=d+196|0;g=f;while(1){if((g|0)>(l|0))break;k=c[m>>2]|0;j=c[k+(g<<6)>>2]|0;k=k+(g<<6)+4|0;i=0;while(1){if((i|0)>=(j|0))break;o=c[(c[(c[k>>2]|0)+(i<<2)>>2]|0)+16>>2]|0;c[o+236>>2]=~~+h[o+16>>3];i=i+1|0}g=g+1|0}while(1){if((f|0)>(e<<16>>16|0))break;a[(c[(c[(c[45971]|0)+16>>2]|0)+196>>2]|0)+(f<<6)+49>>0]=0;o=c[d+196>>2]|0;_0(c[o+(f<<6)+4>>2]|0,c[o+(f<<6)>>2]|0,4,62);o=c[n>>2]|0;f=f+1|0;e=b[o+238>>1]|0;d=o}return}function oi(a,d){a=a|0;d=d|0;var e=0,f=0,g=0;g=((d|0)%4|0|0)<2&1;e=c[a+16>>2]|0;if(!(d&1)){d=b[e+236>>1]|0;f=1;e=b[e+238>>1]|0;d=(d<<16>>16<=(b[(c[(c[45971]|0)+16>>2]|0)+236>>1]|0)&1)+(d<<16>>16)|0}else{d=b[e+238>>1]|0;f=-1;e=b[e+236>>1]|0;d=((d<<16>>16>=(b[(c[(c[45971]|0)+16>>2]|0)+238>>1]|0))<<31>>31)+(d<<16>>16)|0}e=f+e|0;while(1){if((d|0)==(e|0))break;yi(a,d,g,(xi(a,d,d-f|0)|0)&255);d=d+f|0}pi(a,g^1);return}function pi(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;k=d+16|0;g=c[k>>2]|0;i=b[g+236>>1]|0;j=b[g+238>>1]|0;h=g+196|0;f=i<<16>>16;while(1){if((f|0)>(j|0)){h=i;break}a[(c[h>>2]|0)+(f<<6)+48>>0]=1;f=f+1|0}while(1){f=0;h=h<<16>>16;while(1){if((h|0)>(b[g+238>>1]|0))break;if(a[(c[g+196>>2]|0)+(h<<6)+48>>0]|0){f=(wi(d,h,e)|0)+f|0;g=c[k>>2]|0}h=h+1|0}if((f|0)<=0)break;h=b[g+236>>1]|0}return}function qi(d){d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;o=d+16|0;e=c[o>>2]|0;n=b[e+238>>1]|0;a:while(1){if((n|0)<(b[e+236>>1]|0)){e=16;break}f=c[e+196>>2]|0;a[f+(n<<6)+48>>0]=0;p=(n|0)>0;q=n+1|0;g=0;b:while(1){l=(c[f+(n<<6)>>2]|0)+-1|0;m=f+(n<<6)+4|0;k=f+(q<<6)|0;while(1){if((g|0)>=(l|0))break b;j=c[m>>2]|0;i=c[j+(g<<2)>>2]|0;g=g+1|0;j=c[j+(g<<2)>>2]|0;if((c[(c[i+16>>2]|0)+236>>2]|0)>=(c[(c[j+16>>2]|0)+236>>2]|0)){e=7;break a}if(ri(d,i,j)|0)continue;if(p){f=si(i,j)|0;h=si(j,i)|0}else{f=0;h=0}if((c[k>>2]|0)>0){f=(ti(i,j)|0)+f|0;h=(ti(j,i)|0)+h|0}if((h|0)<=(f|0))break}ui(d,n,i,j);e=c[o>>2]|0;f=c[e+196>>2]|0}n=n+-1|0}if((e|0)==7)qa(86168,85686,721,86194);else if((e|0)==16)return}function ri(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;j=c[d+16>>2]|0;i=c[j+212>>2]|0;f=c[e+16>>2]|0;g=c[f+212>>2]|0;h=(i|0)!=(g|0);do if(!(a[190689]|0))if((g|0)==0|((i|0)==0|h^1))k=9;else{if((a[j+159>>0]|0)==7?(a[j+156>>0]|0)==1:0){b=0;break}if((a[f+159>>0]|0)==7?(a[f+156>>0]|0)==1:0){b=0;break}b=1}else if(h)b=1;else k=9;while(0);if((k|0)==9){f=c[b+16>>2]|0;b=c[(c[f+196>>2]|0)+(c[j+232>>2]<<6)+56>>2]|0;if(!b)b=0;else{j=(c[f+116>>2]&1|0)==0;k=O(c[b+4>>2]|0,c[(c[(j?d:e)+16>>2]|0)+284>>2]|0)|0;b=a[(c[b+8>>2]|0)+((c[(c[(j?e:d)+16>>2]|0)+284>>2]|0)+k)>>0]|0}}return b|0}function si(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0;l=a+16|0;j=c[(c[d+16>>2]|0)+172>>2]|0;d=0;while(1){a=c[j>>2]|0;if(!a)break;i=c[a+16>>2]|0;k=b[i+154>>1]|0;g=c[(c[(c[((c[a>>2]&3|0)==3?a:a+48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0;i=i+16|0;f=c[(c[l>>2]|0)+172>>2]|0;a=d;while(1){d=c[f>>2]|0;if(!d)break;e=(c[(c[(c[((c[d>>2]&3|0)==3?d:d+48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0)-g|0;if((e|0)<=0){if((e|0)==0?(m=c[d+16>>2]|0,+h[m+16>>3]>+h[i>>3]):0){d=m;n=9}}else{d=c[d+16>>2]|0;n=9}if((n|0)==9){n=0;a=(O(b[d+154>>1]|0,k)|0)+a|0}f=f+4|0}j=j+4|0;d=a}return d|0}function ti(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0;l=a+16|0;j=c[(c[d+16>>2]|0)+180>>2]|0;d=0;while(1){a=c[j>>2]|0;if(!a)break;i=c[a+16>>2]|0;k=b[i+154>>1]|0;g=c[(c[(c[((c[a>>2]&3|0)==2?a:a+-48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0;i=i+56|0;f=c[(c[l>>2]|0)+180>>2]|0;a=d;while(1){d=c[f>>2]|0;if(!d)break;e=(c[(c[(c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0)-g|0;if((e|0)<=0){if((e|0)==0?(m=c[d+16>>2]|0,+h[m+56>>3]>+h[i>>3]):0){d=m;n=9}}else{d=c[d+16>>2]|0;n=9}if((n|0)==9){n=0;a=(O(b[d+154>>1]|0,k)|0)+a|0}f=f+4|0}j=j+4|0;d=a}return d|0}function ui(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;i=a[(c[e+16>>2]|0)+156>>0]|0;if(i<<24>>24!=(a[(c[f+16>>2]|0)+156>>0]|0)){j=b+16|0;l=c[(c[j>>2]|0)+196>>2]|0;k=c[l+(d<<6)>>2]|0;l=l+(d<<6)+4|0;b=0;g=0;h=0;while(1){if((b|0)>=(k|0))break;o=(a[(c[(c[(c[l>>2]|0)+(b<<2)>>2]|0)+16>>2]|0)+156>>0]|0)==0;b=b+1|0;g=g+(o&1)|0;h=h+((o^1)&1)|0}i=i<<24>>24==0;h=(g|0)<(h|0)?(i?e:f):i?f:e;i=0;b=0;while(1){if((b|0)>=(k|0))break;i=(c[(c[l>>2]|0)+(b<<2)>>2]|0)==(h|0)?b:i;b=b+1|0}o=(a[(c[h+16>>2]|0)+156>>0]|0)==0&1;n=0;g=i;while(1){b=g+-1|0;if((g|0)<=0){m=0;b=i;break}if((a[(c[(c[(c[l>>2]|0)+(b<<2)>>2]|0)+16>>2]|0)+156>>0]|0)!=(o|0)){m=0;b=i;break}n=n+1|0;g=b}while(1){b=b+1|0;if((b|0)>=(k|0))break;if((a[(c[(c[(c[l>>2]|0)+(b<<2)>>2]|0)+16>>2]|0)+156>>0]|0)!=(o|0))break;m=m+1|0}vi(e,f);j=c[(c[j>>2]|0)+196>>2]|0;k=c[j+(d<<6)>>2]|0;j=j+(d<<6)+4|0;b=0;while(1){if((b|0)>=(k|0)){h=0;g=i;break}i=(c[(c[j>>2]|0)+(b<<2)>>2]|0)==(h|0)?b:i;b=b+1|0}while(1){b=g+-1|0;if((g|0)<=0){g=0;b=i;break}if((a[(c[(c[(c[j>>2]|0)+(b<<2)>>2]|0)+16>>2]|0)+156>>0]|0)!=(o|0)){g=0;b=i;break}h=h+1|0;g=b}while(1){b=b+1|0;if((b|0)>=(k|0))break;if((a[(c[(c[(c[j>>2]|0)+(b<<2)>>2]|0)+16>>2]|0)+156>>0]|0)!=(o|0))break;g=g+1|0}d=h-g|0;o=n-m|0;if((((d|0)>-1?d:0-d|0)|0)>(((o|0)>-1?o:0-o|0)|0))vi(e,f)}return}function vi(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;f=c[a+16>>2]|0;e=c[f+232>>2]|0;f=f+236|0;d=c[f>>2]|0;g=b+16|0;h=c[(c[g>>2]|0)+236>>2]|0;c[f>>2]=h;f=(c[45971]|0)+16|0;c[(c[(c[(c[f>>2]|0)+196>>2]|0)+(e<<6)+4>>2]|0)+(h<<2)>>2]=a;c[(c[g>>2]|0)+236>>2]=d;c[(c[(c[(c[f>>2]|0)+196>>2]|0)+(e<<6)+4>>2]|0)+(d<<2)>>2]=b;return}function wi(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;q=d+16|0;n=c[(c[q>>2]|0)+196>>2]|0;a[n+(e<<6)+48>>0]=0;r=(e|0)>0;s=e+1|0;o=(f|0)!=0;p=e+-1|0;g=0;i=0;f=n;a:while(1){l=(c[f+(e<<6)>>2]|0)+-1|0;m=f+(e<<6)+4|0;h=f+(s<<6)|0;n=g;while(1){if((n|0)>=(l|0)){f=17;break a}k=c[m>>2]|0;j=c[k+(n<<2)>>2]|0;n=n+1|0;k=c[k+(n<<2)>>2]|0;if((c[(c[j+16>>2]|0)+236>>2]|0)>=(c[(c[k+16>>2]|0)+236>>2]|0)){f=5;break a}if(ri(d,j,k)|0)continue;if(r){f=si(j,k)|0;g=si(k,j)|0}else{f=0;g=0}if((c[h>>2]|0)>0){f=(ti(j,k)|0)+f|0;g=(ti(k,j)|0)+g|0}if((f|0)>(g|0))break;if((f|0)==(g|0)&(o&(f|0)>0)){f=g;break}}vi(j,k);i=f-g+i|0;g=c[(c[(c[45971]|0)+16>>2]|0)+196>>2]|0;a[g+(e<<6)+49>>0]=0;h=c[q>>2]|0;f=c[h+196>>2]|0;a[f+(e<<6)+48>>0]=1;if((b[h+236>>1]|0)<(e|0)){a[g+(p<<6)+49>>0]=0;a[f+(p<<6)+48>>0]=1}if((b[h+238>>1]|0)<=(e|0)){g=n;continue}a[g+(s<<6)+49>>0]=0;a[f+(s<<6)+48>>0]=1;g=n}if((f|0)==5)qa(86168,85686,770,86202);else if((f|0)==17)return i|0;return 0}function xi(a,e,f){a=a|0;e=e|0;f=f|0;var g=0,i=0.0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;p=c[45969]|0;q=a+16|0;a=c[(c[q>>2]|0)+196>>2]|0;r=c[a+(e<<6)+4>>2]|0;n=(f|0)>(e|0);o=p+4|0;m=0;while(1){f=c[a+(e<<6)>>2]|0;if((m|0)>=(f|0)){a=0;j=0;break}l=(c[r+(m<<2)>>2]|0)+16|0;a=c[l>>2]|0;a:do if(n){k=c[a+180>>2]|0;a=0;j=0;while(1){f=c[k+(j<<2)>>2]|0;if(!f)break a;g=c[f+16>>2]|0;if((b[g+154>>1]|0)>0){c[p+(a<<2)>>2]=c[(c[(c[((c[f>>2]&3|0)==2?f:f+-48|0)+40>>2]|0)+16>>2]|0)+236>>2]<<8|d[g+88>>0];a=a+1|0}j=j+1|0}}else{k=c[a+172>>2]|0;j=0;a=0;while(1){f=c[k+(j<<2)>>2]|0;if(!f)break a;g=c[f+16>>2]|0;if((b[g+154>>1]|0)>0){c[p+(a<<2)>>2]=c[(c[(c[((c[f>>2]&3|0)==3?f:f+48|0)+40>>2]|0)+16>>2]|0)+236>>2]<<8|d[g+48>>0];a=a+1|0}j=j+1|0}}while(0);b:do switch(a|0){case 0:{i=-1.0;break}case 1:{i=+(c[p>>2]|0);break}case 2:{i=+(((c[o>>2]|0)+(c[p>>2]|0)|0)/2|0|0);break}default:{_0(p,a,4,60);f=(a|0)/2|0;if(a&1|0){i=+(c[p+(f<<2)>>2]|0);break b}j=c[p+(f<<2)>>2]|0;g=(c[p+(a+-1<<2)>>2]|0)-j|0;a=c[p+(f+-1<<2)>>2]|0;f=a-(c[p>>2]|0)|0;if((f|0)==(g|0)){i=+((a+j|0)/2|0|0);break b}else{i=+(((O(f,j)|0)+(O(a,g)|0)|0)/(f+g|0)|0|0);break b}}}while(0);h[(c[l>>2]|0)+240>>3]=i;m=m+1|0;a=c[(c[q>>2]|0)+196>>2]|0}while(1){if((j|0)>=(f|0))break;g=c[r+(j<<2)>>2]|0;p=c[g+16>>2]|0;if((c[p+184>>2]|0)==0?(c[p+176>>2]|0)==0:0){a=(zi(g)|0|a&255)&255;f=c[(c[(c[q>>2]|0)+196>>2]|0)+(e<<6)>>2]|0}j=j+1|0}return a|0}function yi(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0,k=0,l=0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0;o=c[(c[b+16>>2]|0)+196>>2]|0;s=c[o+(d<<6)+4>>2]|0;o=c[o+(d<<6)>>2]|0;q=(e|0)!=0;p=(f|e|0)==0;f=0;e=o;o=s+(o<<2)|0;while(1){n=e+-1|0;if((e|0)>0)e=s;else break;a:while(1){b:while(1){if(e>>>0>=o>>>0)break a;while(1){if(e>>>0>=o>>>0)break a;l=c[e>>2]|0;m=+h[(c[l+16>>2]|0)+240>>3];if(!(m<0.0))break;e=e+4|0}k=0;while(1){g=k<<24>>24==0;while(1){e=e+4|0;if(e>>>0>=o>>>0)break a;if(g){g=11;break}i=c[e>>2]|0;if(!(c[(c[i+16>>2]|0)+212>>2]|0)){g=13;break}}if((g|0)==11){i=c[e>>2]|0;j=i}else if((g|0)==13)j=i;if(ri(b,l,j)|0)continue b;g=c[i+16>>2]|0;if(+h[g+240>>3]>=0.0)break;k=(c[g+212>>2]|0)==0?k:1}g=~~m;k=~~+h[(c[i+16>>2]|0)+240>>3];if((g|0)>(k|0)|q&(g|0)==(k|0))break}vi(l,j);f=f+1|0}e=n;o=p?o+-4|0:o}if(f|0?(r=c[(c[(c[45971]|0)+16>>2]|0)+196>>2]|0,a[r+(d<<6)+49>>0]=0,(d|0)>0):0)a[r+(d+-1<<6)+49>>0]=0;return}function zi(a){a=a|0;var b=0.0,d=0,e=0,f=0,g=0;g=c[a+16>>2]|0;if((c[g+200>>2]|0)>0){f=c[g+196>>2]|0;a=c[f>>2]|0;a=c[((c[a>>2]&3|0)==3?a:a+48|0)+40>>2]|0;d=1;while(1){e=c[f+(d<<2)>>2]|0;if(!e)break;e=c[((c[e>>2]&3|0)==3?e:e+48|0)+40>>2]|0;a=(c[(c[e+16>>2]|0)+236>>2]|0)>(c[(c[a+16>>2]|0)+236>>2]|0)?e:a;d=d+1|0}b=+h[(c[a+16>>2]|0)+240>>3];if(!(b>=0.0))a=1;else{h[g+240>>3]=b+1.0;a=0}}else if((c[g+192>>2]|0)>0){e=c[g+188>>2]|0;d=c[e>>2]|0;a=1;d=c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0;while(1){f=c[e+(a<<2)>>2]|0;if(!f)break;f=c[((c[f>>2]&3|0)==2?f:f+-48|0)+40>>2]|0;a=a+1|0;d=(c[(c[f+16>>2]|0)+236>>2]|0)<(c[(c[d+16>>2]|0)+236>>2]|0)?f:d}b=+h[(c[d+16>>2]|0)+240>>3];if(b>0.0){h[g+240>>3]=b+-1.0;a=0}else a=1}else a=1;return a|0}function Ai(a,b){a=a|0;b=b|0;return (c[(c[(c[a>>2]|0)+16>>2]|0)+236>>2]|0)-(c[(c[(c[b>>2]|0)+16>>2]|0)+236>>2]|0)|0}function Bi(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;p=l;l=l+96|0;o=p+64|0;n=p+48|0;h=p+24|0;f=p;j=d+16|0;k=c[(c[j>>2]|0)+232>>2]|0;m=a+16|0;e=c[(c[m>>2]|0)+196>>2]|0;i=c[e+(k<<6)>>2]|0;do if((c[e+(k<<6)+8>>2]|0)>=1){c[(c[e+(k<<6)+4>>2]|0)+(i<<2)>>2]=d;c[(c[j>>2]|0)+236>>2]=i;a=c[m>>2]|0;f=c[a+196>>2]|0;e=f+(k<<6)|0;g=c[e>>2]|0;c[e>>2]=g+1;if((g|0)>=(c[f+(k<<6)+8>>2]|0))qa(86282,85686,1346,86318);g=c[(c[(c[(c[45971]|0)+16>>2]|0)+196>>2]|0)+(k<<6)+8>>2]|0;if((i|0)>(g|0)){m=ry(d)|0;n=c[(c[j>>2]|0)+236>>2]|0;o=c[(c[(c[(c[45971]|0)+16>>2]|0)+196>>2]|0)+(k<<6)+8>>2]|0;c[h>>2]=1359;c[h+4>>2]=m;c[h+8>>2]=n;c[h+12>>2]=k;c[h+16>>2]=o;Pw(1,86334,h)|0;break}e=b[a+236>>1]|0;a=b[a+238>>1]|0;if((k|0)<(e|0)|(k|0)>(a<<16>>16|0)){c[n>>2]=1364;c[n+4>>2]=k;c[n+8>>2]=e;c[n+12>>2]=a<<16>>16;Pw(1,86407,n)|0;break}if(((c[f+(k<<6)+4>>2]|0)+(i<<2)|0)>>>0>((c[f+(k<<6)+12>>2]|0)+(g<<2)|0)>>>0){i=ry(d)|0;n=c[(c[m>>2]|0)+196>>2]|0;m=(c[n+(k<<6)+4>>2]|0)+(c[(c[j>>2]|0)+236>>2]<<2)|0;n=(c[n+(k<<6)+12>>2]|0)+(c[(c[(c[(c[45971]|0)+16>>2]|0)+196>>2]|0)+(k<<6)+8>>2]<<2)|0;c[o>>2]=1370;c[o+4>>2]=k;c[o+8>>2]=i;c[o+12>>2]=m;c[o+16>>2]=k;c[o+20>>2]=k;c[o+24>>2]=n;Pw(1,86468,o)|0}}else{n=ry(a)|0;o=ry(d)|0;c[f>>2]=1339;c[f+4>>2]=n;c[f+8>>2]=o;c[f+12>>2]=k;c[f+16>>2]=i;Pw(1,86227,f)|0}while(0);l=p;return}function Ci(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;h=d+16|0;a:do if(!e){g=0;while(1){d=c[h>>2]|0;if((g|0)>=(c[d+184>>2]|0))break a;d=c[(c[d+180>>2]|0)+(g<<2)>>2]|0;e=d+-48|0;f=(c[(c[((c[d>>2]&3|0)==2?d:e)+40>>2]|0)+16>>2]|0)+157|0;if(!(a[f>>0]|0)){a[f>>0]=1;IL(b,c[((c[d>>2]&3|0)==2?d:e)+40>>2]|0)}g=g+1|0}}else{g=0;while(1){d=c[h>>2]|0;if((g|0)>=(c[d+176>>2]|0))break a;d=c[(c[d+172>>2]|0)+(g<<2)>>2]|0;e=d+48|0;f=(c[(c[((c[d>>2]&3|0)==3?d:e)+40>>2]|0)+16>>2]|0)+157|0;if(!(a[f>>0]|0)){a[f>>0]=1;IL(b,c[((c[d>>2]&3|0)==3?d:e)+40>>2]|0)}g=g+1|0}}while(0);return}function Di(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;v=l;l=l+16|0;u=v;g=d+16|0;f=c[(c[g>>2]|0)+196>>2]|0;s=c[f+(e<<6)+4>>2]|0;t=e+1|0;d=c[(c[(c[(c[45971]|0)+16>>2]|0)+196>>2]|0)+(t<<6)>>2]|0;if((c[45975]|0)>(d|0))q=c[45976]|0;else{d=d+1|0;c[45975]=d;f=c[45976]|0;if(!f)d=vH(d<<2)|0;else d=xH(f,d<<2)|0;c[45976]=d;f=c[(c[g>>2]|0)+196>>2]|0;q=d}r=f+(t<<6)|0;d=0;while(1){if((d|0)>=(c[r>>2]|0))break;c[q+(d<<2)>>2]=0;d=d+1|0}p=f+(e<<6)|0;o=0;h=0;d=0;j=q;while(1){k=c[p>>2]|0;if((o|0)>=(k|0))break;n=c[(c[(c[s+(o<<2)>>2]|0)+16>>2]|0)+180>>2]|0;a:do if((h|0)>0){m=0;while(1){g=c[n+(m<<2)>>2]|0;if(!g)break a;k=g+16|0;i=c[(c[(c[((c[g>>2]&3|0)==2?g:g+-48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0;while(1){g=i+1|0;if((i|0)>=(h|0))break;i=g;d=(O(c[j+(g<<2)>>2]|0,b[(c[k>>2]|0)+154>>1]|0)|0)+d|0}m=m+1|0}}while(0);i=0;while(1){g=c[n+(i<<2)>>2]|0;if(!g)break;j=c[(c[(c[((c[g>>2]&3|0)==2?g:g+-48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0;m=q+(j<<2)|0;c[m>>2]=(c[m>>2]|0)+(b[(c[g+16>>2]|0)+154>>1]|0);h=(j|0)>(h|0)?j:h;i=i+1|0;j=q}o=o+1|0}i=f+(e<<6)+4|0;h=0;while(1){if((h|0)>=(k|0))break;g=c[(c[(c[i>>2]|0)+(h<<2)>>2]|0)+16>>2]|0;if(a[g+145>>0]|0){e=g+180|0;c[u>>2]=c[e>>2];c[u+4>>2]=c[e+4>>2];d=(Ei(u,1)|0)+d|0}h=h+1|0}i=c[r>>2]|0;h=f+(t<<6)+4|0;g=0;while(1){if((g|0)>=(i|0))break;f=c[(c[(c[h>>2]|0)+(g<<2)>>2]|0)+16>>2]|0;if(a[f+145>>0]|0){t=f+172|0;c[u>>2]=c[t>>2];c[u+4>>2]=c[t+4>>2];d=(Ei(u,-1)|0)+d|0}g=g+1|0}l=v;return d|0}function Ei(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0;n=(d|0)<1;l=c[a>>2]|0;d=0;a=0;a:while(1){m=c[l+(d<<2)>>2]|0;if(!m)break;d=d+1|0;if(n){j=m+48|0;k=m+16|0;i=d;while(1){e=c[l+(i<<2)>>2]|0;if(!e)continue a;f=c[e+16>>2]|0;g=c[k>>2]|0;if((+h[f+56>>3]-+h[g+56>>3])*+((c[(c[(c[((c[e>>2]&3|0)==3?e:e+48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0)-(c[(c[(c[((c[m>>2]&3|0)==3?m:j)+40>>2]|0)+16>>2]|0)+236>>2]|0)|0)<0.0)a=(O(b[f+154>>1]|0,b[g+154>>1]|0)|0)+a|0;i=i+1|0}}else{j=m+-48|0;k=m+16|0;i=d;while(1){e=c[l+(i<<2)>>2]|0;if(!e)continue a;f=c[e+16>>2]|0;g=c[k>>2]|0;if((+h[f+16>>3]-+h[g+16>>3])*+((c[(c[(c[((c[e>>2]&3|0)==2?e:e+-48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0)-(c[(c[(c[((c[m>>2]&3|0)==2?m:j)+40>>2]|0)+16>>2]|0)+236>>2]|0)|0)<0.0)a=(O(b[f+154>>1]|0,b[g+154>>1]|0)|0)+a|0;i=i+1|0}}}return a|0}function Fi(a){a=a|0;var b=0.0,d=0.0;c[45974]=8;c[46365]=24;h[22830]=.995;a=xx(a,86590)|0;if(a|0?(b=+b2(a),b>0.0):0){d=b*+(c[45974]|0);c[45974]=~~(d>1.0?d:1.0);b=b*+(c[46365]|0);c[46365]=~~(b>1.0?b:1.0)}return}function Gi(a){a=a|0;var d=0,e=0;e=(b[(c[a+16>>2]|0)+238>>1]|0)+2|0;d=uH(e<<2)|0;Ii(a,d,e,0)|0;D_(d);return}function Hi(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;h=a+16|0;i=uH((b[(c[h>>2]|0)+238>>1]<<2)+8|0)|0;g=Sy(a)|0;while(1){if(!g)break;f=i+(c[(c[g+16>>2]|0)+232>>2]<<2)|0;c[f>>2]=(c[f>>2]|0)+1;f=Ex(a,g)|0;while(1){if(!f)break;j=c[f>>2]&3;d=c[(c[(c[((j|0)==3?f:f+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0;j=c[(c[(c[((j|0)==2?f:f+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0;k=(d|0)>(j|0);e=k?d:j;d=k?j:d;while(1){d=d+1|0;if((d|0)>=(e|0))break;k=i+(d<<2)|0;c[k>>2]=(c[k>>2]|0)+1}f=Gx(a,f)|0}g=Ty(a,g)|0}f=uH((b[(c[h>>2]|0)+238>>1]<<6)+128|0)|0;e=c[h>>2]|0;c[e+196>>2]=f;d=b[e+236>>1]|0;while(1){if((d|0)>(b[e+238>>1]|0))break;j=i+(d<<2)|0;e=c[j>>2]|0;c[f+(d<<6)>>2]=e;c[f+(d<<6)+8>>2]=e;j=uH((c[j>>2]<<2)+4|0)|0;e=c[h>>2]|0;k=c[e+196>>2]|0;c[k+(d<<6)+4>>2]=j;c[k+(d<<6)+12>>2]=j;d=d+1|0;f=k}D_(i);return}function Ii(a,d,e,f){a=a|0;d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0,k=0,l=0,m=0;m=a+16|0;i=1;while(1){g=c[m>>2]|0;if((i|0)>(c[g+180>>2]|0))break;l=Ii(c[(c[g+184>>2]|0)+(i<<2)>>2]|0,d,e,f)|0;i=i+1|0;f=l}a:do if((ig(a)|0)!=(a|0)){H3(d|0,0,e<<2|0)|0;g=Sy(a)|0;while(1){if(!g)break;k=g+16|0;c[d+(c[(c[k>>2]|0)+232>>2]<<2)>>2]=1;i=Ex(a,g)|0;while(1){if(!i)break;l=i+-48|0;j=c[(c[k>>2]|0)+232>>2]|0;while(1){e=j+1|0;if((j|0)>=(c[(c[(c[((c[i>>2]&3|0)==2?i:l)+40>>2]|0)+16>>2]|0)+232>>2]|0))break;c[d+(e<<2)>>2]=1;j=e}i=Gx(a,i)|0}g=Ty(a,g)|0}g=c[m>>2]|0;i=b[g+236>>1]|0;while(1){if((i|0)>(b[g+238>>1]|0))break a;if(!(c[d+(i<<2)>>2]|0)){if(!f)f=vA(ig(a)|0,86580,1)|0;g=az(f,0,1)|0;Az(g,134365,304,1)|0;l=g+16|0;j=c[l>>2]|0;c[j+232>>2]=i;h[j+96>>3]=.5;h[j+88>>3]=.5;h[j+80>>3]=1.0;c[j+216>>2]=1;c[j+176>>2]=0;j=uH(20)|0;k=c[l>>2]|0;c[k+172>>2]=j;c[k+184>>2]=0;k=uH(20)|0;c[(c[l>>2]|0)+180>>2]=k;Xy(a,g,1)|0;g=c[m>>2]|0}i=i+1|0}}while(0);return f|0}function Ji(a){a=a|0;var b=0,d=0;Zh(a);b=a+16|0;a=1;while(1){d=c[b>>2]|0;if((a|0)>(c[d+180>>2]|0))break;Ji(c[(c[d+184>>2]|0)+(a<<2)>>2]|0);a=a+1|0}return}function Ki(a){a=a|0;var b=0,d=0;b=c[a>>2]&3;d=Li(c[((b|0)==3?a:a+48|0)+40>>2]|0)|0;b=c[17308+(d*12|0)+((Li(c[((b|0)==2?a:a+-48|0)+40>>2]|0)|0)<<2)>>2]|0;a=(c[a+16>>2]|0)+156|0;c[a>>2]=O(c[a>>2]|0,b)|0;return}function Li(b){b=b|0;b=c[b+16>>2]|0;if((a[b+156>>0]|0)==1)b=2;else b=(a[b+160>>0]|0)<2&1;return b|0}function Mi(b,d){b=b|0;d=d|0;if(c[(c[b+16>>2]|0)+192>>2]|0){ll(b);Ni(b);if(a[191874]|0)zl(b);Oi(b);if(Rl(b)|0)Ni(b);Pi(b);if(fI(b,2,Qi(b)|0)|0?(Ri(b),fI(b,2,Qi(b)|0)|0):0)qa(86598,86626,134,86637);Si(b);Ti(b,d);Ui(b)}return}function Ni(d){d=d|0;var e=0,f=0,g=0,i=0,j=0.0,k=0.0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0.0,z=0.0;v=d+16|0;e=c[v>>2]|0;w=c[e+196>>2]|0;t=b[e+236>>1]|0;while(1){if((t|0)>(b[e+238>>1]|0))break;n=w+(t<<6)|0;o=w+(t<<6)+4|0;p=w+(t<<6)+40|0;q=w+(t<<6)+24|0;r=w+(t<<6)+32|0;s=w+(t<<6)+16|0;m=0;while(1){if((m|0)>=(c[n>>2]|0))break;l=(c[(c[o>>2]|0)+(m<<2)>>2]|0)+16|0;e=c[l>>2]|0;j=+h[e+80>>3]*.5;i=c[e+204>>2]|0;a:do if(i){g=0;while(1){f=c[i+(g<<2)>>2]|0;if(!f)break a;x=c[f>>2]&3;if((c[((x|0)==3?f:f+48|0)+40>>2]|0)==(c[((x|0)==2?f:f+-48|0)+40>>2]|0)?(u=c[(c[f+16>>2]|0)+96>>2]|0,(u|0)!=0):0){k=+h[u+32>>3]*.5;j=j>k?j:k}g=g+1|0}}while(0);if(+h[p>>3]>3]=j;h[p>>3]=j}if(+h[r>>3]>3]=j;h[r>>3]=j}f=c[e+212>>2]|0;if(f|0){if((f|0)==(d|0))g=0;else{g=KL(f,c[46374]|0,8,0)|0;e=c[l>>2]|0}i=c[e+232>>2]|0;f=c[f+16>>2]|0;e=f+128|0;j=j+ +(g|0);if((i|0)==(b[f+236>>1]|0)){k=+h[e>>3];h[e>>3]=k>j?k:j}e=f+120|0;if((i|0)==(b[f+238>>1]|0)){k=+h[e>>3];h[e>>3]=k>j?k:j}}m=m+1|0}t=t+1|0;e=c[v>>2]|0}m=tj(d)|0;g=c[v>>2]|0;e=b[g+238>>1]|0;h[(c[(c[c[w+(e<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3]=+h[w+(e<<6)+16>>3];f=b[g+236>>1]|0;i=g+252|0;k=0.0;while(1){l=e+-1|0;if((e|0)<=(f|0))break;y=+h[w+(l<<6)+32>>3]+ +h[w+(e<<6)+40>>3]+ +(c[i>>2]|0);j=+h[w+(e<<6)+24>>3]+8.0+ +h[w+(l<<6)+16>>3];j=y>j?y:j;if((c[w+(l<<6)>>2]|0)>0)h[(c[(c[c[w+(l<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3]=+h[(c[(c[c[w+(e<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3]+j;k=k>j?k:j;e=l}b:do if((m|0)!=0?(c[g+116>>2]&1|0)!=0:0){uj(d,0);g=c[v>>2]|0;if(a[g+276>>0]|0){e=b[g+238>>1]|0;f=b[g+236>>1]|0;j=+h[(c[(c[c[w+(e<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3];k=0.0;while(1){i=e+-1|0;if((e|0)<=(f|0))break b;z=+h[(c[(c[c[w+(i<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3];y=z-j;j=z;k=k>y?k:y;e=i}}}while(0);c:do if(a[g+276>>0]|0){i=b[g+236>>1]|0;f=b[g+238>>1]|0;while(1){e=f+-1|0;if((f|0)<=(i|0))break c;if((c[w+(e<<6)>>2]|0)<=0){f=e;continue}h[(c[(c[c[w+(e<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3]=+h[(c[(c[c[w+(f<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3]+k;f=e}}while(0);e=g+192|0;while(1){e=c[e>>2]|0;if(!e)break;e=c[e+16>>2]|0;h[e+24>>3]=+h[(c[(c[c[w+(c[e+232>>2]<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3];e=e+164|0}return}function Oi(a){a=a|0;var b=0,d=0,e=0;pj(a);b=(c[a+16>>2]|0)+192|0;while(1){b=c[b>>2]|0;if(!b)break;e=b+16|0;b=c[e>>2]|0;d=c[b+224>>2]|0;if(d){qj(a,d);b=c[e>>2]|0}d=c[b+228>>2]|0;if(!d)d=b;else{qj(a,d);d=c[e>>2]|0}e=c[d+204>>2]|0;if(e|0){b=0;while(1)if(!(c[e+(b<<2)>>2]|0))break;else b=b+1|0}b=d+164|0}return}function Pi(a){a=a|0;bj(a);cj(a);dj(a);ej(a);fj(a);return}function Qi(a){a=a|0;var b=0,c=0.0;b=xx(a,86826)|0;if(!b)a=2147483647;else{c=+b2(b);a=~~(c*+(ay(a)|0))}return a|0}function Ri(d){d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;r=d+16|0;e=c[r>>2]|0;q=b[e+236>>1]|0;while(1){p=b[e+238>>1]|0;if((q|0)>(p|0)){s=19;break}n=c[e+196>>2]|0;o=n+(q<<6)|0;m=c[o>>2]|0;n=n+(q<<6)+4|0;l=0;f=0;a:while(1){if((l|0)>=(m|0)){s=14;break}f=c[(c[n>>2]|0)+(l<<2)>>2]|0;h=c[f+16>>2]|0;i=c[h+256>>2]|0;b:do if(i|0){g=0;while(1){j=c[i+(g<<2)>>2]|0;if(!j)break b;k=c[j>>2]&3;if((c[(c[(c[((k|0)==2?j:j+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)>(q|0))break a;if((c[(c[(c[((k|0)==3?j:j+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)>(q|0))break a;else g=g+1|0}}while(0);h=c[h+248>>2]|0;c:do if(h|0){g=0;while(1){i=c[h+(g<<2)>>2]|0;if(!i)break c;j=c[i>>2]&3;if((c[(c[(c[((j|0)==3?i:i+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)>(q|0))break a;if((c[(c[(c[((j|0)==2?i:i+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)>(q|0))break a;else g=g+1|0}}while(0);l=l+1|0}if((s|0)==14){s=0;if(f){f=c[c[n>>2]>>2]|0;e=c[c[o+(((q|0)<(p|0)?1:-1)<<6)+4>>2]>>2]|0;if(!e){s=16;break}o=uh(d)|0;p=o+16|0;a[(c[p>>2]|0)+156>>0]=2;$i(o,f,0.0,0)|0;$i(o,e,0.0,0)|0;c[(c[p>>2]|0)+232>>2]=c[(c[((c[(c[f+16>>2]|0)+232>>2]|0)<(c[(c[e+16>>2]|0)+232>>2]|0)?f:e)+16>>2]|0)+232>>2];e=c[r>>2]|0}}q=q+1|0}if((s|0)==16)qa(86734,86626,111,86737);else if((s|0)==19)return}function Si(a){a=a|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0;a=c[a+16>>2]|0;i=c[a+196>>2]|0;e=b[a+238>>1]|0;a=b[a+236>>1]|0;while(1){if((a|0)>(e|0))break;f=c[i+(a<<6)>>2]|0;g=i+(a<<6)+4|0;d=0;while(1){if((d|0)>=(f|0))break;k=c[(c[(c[g>>2]|0)+(d<<2)>>2]|0)+16>>2]|0;j=k+232|0;h[k+16>>3]=+(c[j>>2]|0);c[j>>2]=a;d=d+1|0}a=a+1|0}return}function Ti(a,d){a=a|0;d=d|0;var e=0,f=0.0,g=0,i=0.0,j=0,k=0,l=0.0,m=0,n=0,o=0,p=0;Vi(a,a);g=a+16|0;k=c[g>>2]|0;a:do if((b[k+238>>1]|0)>0?(j=c[k+8>>2]|0,e=c[j+84>>2]|0,e|0):0){o=~~(+h[k+32>>3]-+h[k+16>>3]);m=~~(+h[k+40>>3]-+h[k+24>>3]);p=(c[k+116>>2]&1|0)==0;n=p?m:o;m=p?o:m;if((e|0)==4){e=Wi(a)|0;k=c[g>>2]|0;j=c[k+8>>2]|0}else e=(e|0)==2&1;b:do if(!(e<<24>>24)){switch(c[j+84>>2]|0){case 5:{f=+h[j+64>>3];if(f<=0.0)break a;i=f/+h[k+32>>3];l=+h[j+72>>3]/+h[k+40>>3];f=i1.0&l>1.0){l=f;break b}else break a}case 1:break;default:break a}i=+h[j+16>>3];f=+(n|0)/+(m|0);if(f>3];if(f<=0.0)break a;i=f/+(m|0);f=+h[j+72>>3]/+(n|0);if(i<1.0|f<1.0)if(i>2]&1|0)==0;i=e?f:l;f=e?l:f;e=k+192|0;while(1){e=c[e>>2]|0;if(!e)break;e=c[e+16>>2]|0;p=e+16|0;l=+h[p>>3]*f;h[p>>3]=+(~~(l+(l>=0.0?.5:-.5))|0);p=e+24|0;l=+h[p>>3]*i;h[p>>3]=+(~~(l+(l>=0.0?.5:-.5))|0);e=e+164|0}Xi(a,f,i)}while(0);if(d|0)Yi(a,d);return}function Ui(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;h=b+16|0;b=(c[h>>2]|0)+192|0;while(1){b=c[b>>2]|0;if(!b)break;g=b+16|0;d=0;while(1){b=c[g>>2]|0;f=c[b+180>>2]|0;e=c[f+(d<<2)>>2]|0;if(!e)break;D_(c[e+16>>2]|0);D_(e);d=d+1|0}if(f){D_(f);b=c[g>>2]|0}d=c[b+172>>2]|0;if(d){D_(d);b=c[g>>2]|0}f=b+256|0;e=c[f+4>>2]|0;b=b+180|0;c[b>>2]=c[f>>2];c[b+4>>2]=e;b=c[g>>2]|0;e=b+248|0;f=c[e+4>>2]|0;b=b+172|0;c[b>>2]=c[e>>2];c[b+4>>2]=f;b=(c[g>>2]|0)+164|0}b=0;d=c[(c[h>>2]|0)+192>>2]|0;a:while(1){g=(b|0)==0;f=b+16|0;b=d;while(1){if(!b)break a;e=c[b+16>>2]|0;d=c[e+164>>2]|0;if((a[e+156>>0]|0)!=2)continue a;if(g)c[(c[h>>2]|0)+192>>2]=d;else c[(c[f>>2]|0)+164>>2]=d;D_(e);D_(b);b=d}}c[(c[(c[(c[h>>2]|0)+192>>2]|0)+16>>2]|0)+168>>2]=0;return}function Vi(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;e=a+16|0;d=1;while(1){f=c[e>>2]|0;if((d|0)>(c[f+180>>2]|0))break;Vi(c[(c[f+184>>2]|0)+(d<<2)>>2]|0,b);d=d+1|0}_i(a,b);return}function Wi(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,i=0,j=0.0,k=0.0,m=0,n=0.0,o=0.0,p=0.0,q=0.0,r=0,s=0,t=0;s=l;l=l+80|0;e=s+64|0;d=s+48|0;f=s+16|0;m=s;r=s+32|0;a=a+16|0;b=c[(c[a>>2]|0)+8>>2]|0;t=b+48|0;c[f>>2]=c[t>>2];c[f+4>>2]=c[t+4>>2];c[f+8>>2]=c[t+8>>2];c[f+12>>2]=c[t+12>>2];if((!(+h[f>>3]<.001)?(g=f+8|0,!(+h[g>>3]<.001)):0)?(i=b+32|0,c[m>>2]=c[i>>2],c[m+4>>2]=c[i+4>>2],c[m+8>>2]=c[i+8>>2],c[m+12>>2]=c[i+12>>2],c[d>>2]=c[f>>2],c[d+4>>2]=c[f+4>>2],c[d+8>>2]=c[f+8>>2],c[d+12>>2]=c[f+12>>2],c[e>>2]=c[i>>2],c[e+4>>2]=c[i+4>>2],c[e+8>>2]=c[i+8>>2],c[e+12>>2]=c[i+12>>2],Zi(r,d,e),c[f>>2]=c[r>>2],c[f+4>>2]=c[r+4>>2],c[f+8>>2]=c[r+8>>2],c[f+12>>2]=c[r+12>>2],c[d>>2]=c[r>>2],c[d+4>>2]=c[r+4>>2],c[d+8>>2]=c[r+8>>2],c[d+12>>2]=c[r+12>>2],c[e>>2]=c[m>>2],c[e+4>>2]=c[m+4>>2],c[e+8>>2]=c[m+8>>2],c[e+12>>2]=c[m+12>>2],Zi(f,d,e),i=c[a>>2]|0,j=+h[i+32>>3],k=+h[i+40>>3],n=+h[f>>3],o=n/j,p=+h[g>>3],q=p/k,!(o>=1.0&q>=1.0)):0){o=o.5?o:.5;q=+N(+(o*k/p))*p/k;p=+N(+(o*j/n))*n/j*j;a=c[i+8>>2]|0;h[a+64>>3]=p;h[a+72>>3]=q*k;a=1}else a=0;l=s;return a|0}function Xi(a,b,d){a=a|0;b=+b;d=+d;var e=0,f=0;e=a+16|0;a=1;while(1){f=c[e>>2]|0;if((a|0)>(c[f+180>>2]|0))break;Xi(c[(c[f+184>>2]|0)+(a<<2)>>2]|0,b,d);a=a+1|0}e=f+16|0;h[e>>3]=+h[e>>3]*b;e=f+24|0;h[e>>3]=+h[e>>3]*d;e=f+32|0;h[e>>3]=+h[e>>3]*b;f=f+40|0;h[f>>3]=+h[f>>3]*d;return}function Yi(a,b){a=a|0;b=b|0;var d=0.0,e=0.0,f=0,g=0,i=0.0,j=0,k=0,m=0,n=0;m=l;l=l+32|0;j=m+24|0;g=m+16|0;f=m;n=c[a+16>>2]|0;e=+h[n+32>>3]-+h[n+16>>3];d=+h[n+40>>3]-+h[n+24>>3];i=e/d;if(0){n=c[15686]|0;h[f>>3]=i;h[f+8>>3]=e*.0001*d;g1(n,86650,f)|0;c[g>>2]=zk(a)|0;g1(n,86675,g)|0}d=+h[b>>3];do if(!(i>d*1.1)){a=b+24|0;if(!(i<=d*.8)){c[a>>2]=0;k=9;break}c[a>>2]=-1;if(0){E1(86685,34,1,c[15686]|0)|0;k=9}}else{c[b+24>>2]=~~(d*+((c[b+20>>2]|0)-(c[b+16>>2]|0)|0)/i);k=9}while(0);if((k|0)==9?0:0){n=c[15686]|0;c[j>>2]=c[b+24>>2];g1(n,86720,j)|0}l=m;return}function Zi(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0;d=+h[b+8>>3]-+h[c+8>>3];h[a>>3]=+h[b>>3]-+h[c>>3];h[a+8>>3]=d;return}function _i(d,e){d=d|0;e=e|0;var f=0,g=0.0,i=0.0,j=0,k=0,l=0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0.0;s=(ig(d)|0)==(d|0);v=d+16|0;w=c[v>>2]|0;a:do if(s){f=b[w+236>>1]|0;d=b[w+238>>1]|0;q=d<<16>>16;r=w+196|0;s=w+196|0;p=f<<16>>16;i=-2147483647.0;g=2147483647.0;while(1){if((p|0)>(q|0))break;j=c[r>>2]|0;o=c[j+(p<<6)>>2]|0;if((o|0)!=0?(t=c[j+(p<<6)+4>>2]|0,u=c[t>>2]|0,(u|0)!=0):0){l=1;j=u;while(1){j=c[j+16>>2]|0;k=a[j+156>>0]|0;if(!((l|0)<(o|0)&k<<24>>24!=0))break;j=c[t+(l<<2)>>2]|0;l=l+1|0}if(!(k<<24>>24)){m=+h[j+16>>3]-+h[j+88>>3];n=g>2]|0)+(p<<6)+4>>2]|0;k=o+-2|0;j=o+-1|0;while(1){j=c[(c[l+(j<<2)>>2]|0)+16>>2]|0;if(!(a[j+156>>0]|0))break;else{j=k;k=k+-1|0}}x=+h[j+96>>3]+ +h[j+16>>3];i=i>x?i:x;g=n?g:m}}p=p+1|0}k=c[w+180>>2]|0;l=w+184|0;j=1;while(1){if((j|0)>(k|0))break a;u=c[(c[(c[l>>2]|0)+(j<<2)>>2]|0)+16>>2]|0;x=+h[u+16>>3]+-8.0;m=+h[u+32>>3]+8.0;j=j+1|0;i=i>m?i:m;g=g>2]|0)+16>>2]|0)+232>>2]|0);g=+(c[(c[(c[w+256>>2]|0)+16>>2]|0)+232>>2]|0);f=b[w+236>>1]|0;d=b[w+238>>1]|0}while(0);e=c[(c[e+16>>2]|0)+196>>2]|0;m=+h[(c[(c[c[e+(d<<16>>16<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3]-+h[w+120>>3];x=+h[w+128>>3]+ +h[(c[(c[c[e+(f<<16>>16<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3];h[w+16>>3]=g;h[w+24>>3]=m;e=c[v>>2]|0;h[e+32>>3]=i;h[e+40>>3]=x;return}function $i(a,d,e,f){a=a|0;d=d|0;e=+e;f=f|0;var g=0,h=0,i=0,j=0;i=uH(96)|0;j=i+48|0;c[j>>2]=c[j>>2]|3;c[i>>2]=c[i>>2]&-4|2;g=uH(176)|0;h=i+16|0;c[h>>2]=g;c[((c[i>>2]&3|0)==3?i:j)+40>>2]=a;c[((c[i>>2]&3|0)==2?i:i+-48|0)+40>>2]=d;if(e>65535.0){aj(e);e=65535.0;g=c[h>>2]|0}b[g+170>>1]=~~(e+(e>=0.0?.5:-.5));c[g+156>>2]=f;ih(i)|0;return i|0}function aj(a){a=+a;var b=0,d=0;b=l;l=l+16|0;d=b;h[d>>3]=a;c[d+8>>2]=65535;Pw(1,86750,d)|0;l=b;return}function bj(a){a=a|0;var b=0,d=0,e=0,f=0;a=(c[a+16>>2]|0)+192|0;while(1){a=c[a>>2]|0;if(!a)break;f=a+16|0;e=c[f>>2]|0;a=e+172|0;d=c[a+4>>2]|0;e=e+248|0;c[e>>2]=c[a>>2];c[e+4>>2]=d;e=c[f>>2]|0;d=e+180|0;a=c[d+4>>2]|0;e=e+256|0;c[e>>2]=c[d>>2];c[e+4>>2]=a;e=c[f>>2]|0;a=c[e+180>>2]|0;d=0;while(1)if(!(c[a+(d<<2)>>2]|0))break;else d=d+1|0;b=c[e+172>>2]|0;a=0;while(1)if(!(c[b+(a<<2)>>2]|0))break;else a=a+1|0;c[e+176>>2]=0;a=uH((a+d<<2)+16|0)|0;e=c[f>>2]|0;c[e+172>>2]=a;c[e+184>>2]=0;e=uH(16)|0;a=c[f>>2]|0;c[a+180>>2]=e;a=a+164|0}return}function cj(d){d=d|0;var f=0,g=0,i=0.0,j=0,k=0,m=0,n=0,o=0,p=0.0,q=0,r=0,s=0,t=0.0,u=0,v=0,w=0,x=0,y=0,z=0,A=0.0,B=0.0;z=l;l=l+16|0;w=z;x=d+16|0;u=c[x>>2]|0;y=c[u+196>>2]|0;d=(a[(c[(c[d+60>>2]|0)+16>>2]|0)+113>>0]&1)!=0;v=c[u+248>>2]|0;c[w>>2]=v;c[w+4>>2]=d?5:v;v=b[u+236>>1]|0;d=u;while(1){if((v|0)>(b[d+238>>1]|0))break;r=y+(v<<6)+4|0;c[(c[(c[c[r>>2]>>2]|0)+16>>2]|0)+232>>2]=0;s=y+(v<<6)|0;t=+(c[w+((v&1)<<2)>>2]|0);p=0.0;k=0;a:while(1){if((k|0)>=(c[s>>2]|0))break;f=c[r>>2]|0;m=c[f+(k<<2)>>2]|0;u=m+16|0;d=c[u>>2]|0;i=+h[d+96>>3];h[d+240>>3]=i;if((c[d+208>>2]|0)>0){j=0;f=0;while(1){g=c[(c[d+204>>2]|0)+(j<<2)>>2]|0;if(!g)break;q=c[g>>2]&3;if((c[((q|0)==3?g:g+48|0)+40>>2]|0)==(c[((q|0)==2?g:g+-48|0)+40>>2]|0)){f=(XK(g)|0)+f|0;d=c[u>>2]|0}j=j+1|0}q=d+96|0;i=+h[q>>3]+ +(f|0);h[q>>3]=i;f=c[r>>2]|0}q=k+1|0;f=c[f+(q<<2)>>2]|0;if(f){o=f+16|0;i=i+t+ +h[(c[o>>2]|0)+88>>3];$i(m,f,i,0)|0;d=~~(i+p);c[(c[o>>2]|0)+232>>2]=d;p=+(d|0);d=c[u>>2]|0}f=c[d+112>>2]|0;if(f){j=c[d+256>>2]|0;k=c[j>>2]|0;j=c[j+4>>2]|0;d=(c[(c[(c[((c[k>>2]&3|0)==2?k:k+-48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0)>(c[(c[(c[((c[j>>2]&3|0)==2?j:j+-48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0);g=d?j:k;j=d?k:j;k=f+16|0;d=c[k>>2]|0;i=+((O(c[(c[x>>2]|0)+248>>2]|0,e[d+170>>1]|0)|0)/2|0|0);o=c[g>>2]&3;f=c[((o|0)==2?g:g+-48|0)+40>>2]|0;g=c[((o|0)==3?g:g+48|0)+40>>2]|0;if(!(nj(g,f)|0))$i(f,g,+(~~(+h[(c[f+16>>2]|0)+96>>3]+i+ +h[(c[g+16>>2]|0)+88>>3])|0),c[d+156>>2]|0)|0;d=c[j>>2]&3;f=c[((d|0)==3?j:j+48|0)+40>>2]|0;d=c[((d|0)==2?j:j+-48|0)+40>>2]|0;if(!(nj(d,f)|0)){$i(f,d,+(~~(+h[(c[f+16>>2]|0)+96>>3]+i+ +h[(c[d+16>>2]|0)+88>>3])|0),c[(c[k>>2]|0)+156>>2]|0)|0;o=0}else o=0}else o=0;while(1){d=c[u>>2]|0;if((o|0)>=(c[d+192>>2]|0)){k=q;continue a}m=c[(c[d+188>>2]|0)+(o<<2)>>2]|0;k=c[m>>2]&3;g=c[((k|0)==3?m:m+48|0)+40>>2]|0;k=c[((k|0)==2?m:m+-48|0)+40>>2]|0;j=(c[(c[g+16>>2]|0)+236>>2]|0)<(c[(c[k+16>>2]|0)+236>>2]|0);f=j?g:k;g=j?k:g;i=+h[(c[g+16>>2]|0)+88>>3]+ +h[(c[f+16>>2]|0)+96>>3];k=m+16|0;j=~~(i+ +(O(c[(c[x>>2]|0)+248>>2]|0,e[(c[k>>2]|0)+170>>1]|0)|0));n=fh(f,g)|0;if(!n){d=c[k>>2]|0;if(!(c[d+96>>2]|0))$i(f,g,+(j|0),c[d+156>>2]|0)|0}else{A=+(j|0);d=c[k>>2]|0;B=+h[d+136>>3];i=i+ +(c[(c[x>>2]|0)+248>>2]|0)+ +(~~(B+(B>=0.0?.5:-.5))|0);f=~~(i65535){aj(+(f|0));f=65535;d=c[k>>2]|0}k=c[n+16>>2]|0;j=k+170|0;g=e[j>>1]|0;b[j>>1]=(f|0)<(g|0)?g:f;k=k+156|0;c[k>>2]=c[(c[((c[k>>2]|0)>(c[d+156>>2]|0)?n:m)+16>>2]|0)+156>>2]}o=o+1|0}}v=v+1|0;d=c[x>>2]|0}l=z;return}function dj(b){b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0;d=(c[b+16>>2]|0)+192|0;while(1){d=c[d>>2]|0;if(!d)break;g=d+16|0;d=c[g>>2]|0;e=c[d+256>>2]|0;a:do if(e){f=0;while(1){e=c[e+(f<<2)>>2]|0;if(!e)break a;n=uh(b)|0;d=n+16|0;a[(c[d>>2]|0)+156>>0]=2;l=e+16|0;k=c[l>>2]|0;i=~~(+h[k+56>>3]-+h[k+16>>3]);m=(i|0)>0;j=m?0:0-i|0;i=m?i:0;m=e+48|0;$i(n,c[((c[e>>2]&3|0)==3?e:m)+40>>2]|0,+(i+1|0),c[k+156>>2]|0)|0;k=e+-48|0;$i(n,c[((c[e>>2]&3|0)==2?e:k)+40>>2]|0,+(j+1|0),c[(c[l>>2]|0)+156>>2]|0)|0;l=c[e>>2]&3;i=(c[(c[(c[((l|0)==3?e:m)+40>>2]|0)+16>>2]|0)+232>>2]|0)-i|0;e=(c[(c[(c[((l|0)==2?e:k)+40>>2]|0)+16>>2]|0)+232>>2]|0)-j|0;c[(c[d>>2]|0)+232>>2]=((i|0)<(e|0)?i:e)+-1;d=c[g>>2]|0;f=f+1|0;e=c[d+256>>2]|0}}while(0);d=d+164|0}return}function ej(a){a=a|0;if((c[(c[a+16>>2]|0)+180>>2]|0)>0){ij(a);jj(a);kj(a);lj(a)}return}function fj(a){a=a|0;var b=0.0,d=0.0,e=0,f=0;e=a+16|0;f=c[(c[e>>2]|0)+8>>2]|0;if((c[f+84>>2]|0)==3?(b=+h[f+64>>3],d=+h[f+72>>3],!(d*b<=1.0)):0){gj(a);f=c[e>>2]|0;d=(c[f+116>>2]&1|0)==0?b:d;$i(c[f+256>>2]|0,c[f+260>>2]|0,d<65535.0?d:65535.0,1e3)|0}return}function gj(a){a=a|0;var d=0,e=0,f=0.0,g=0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+16|0;m=n;e=KL(a,c[46374]|0,8,0)|0;hj(a);i=a+16|0;g=c[i>>2]|0;j=c[g+256>>2]|0;k=c[g+260>>2]|0;f=+(e|0);e=b[g+236>>1]|0;while(1){if((e|0)>(b[g+238>>1]|0))break;d=c[g+196>>2]|0;do if(c[d+(e<<6)>>2]|0){d=c[c[d+(e<<6)+4>>2]>>2]|0;if(!d){c[m>>2]=ry(a)|0;c[m+4>>2]=e;Pw(1,86834,m)|0;break}else{$i(j,d,+h[(c[d+16>>2]|0)+88>>3]+f+ +h[g+96>>3],0)|0;g=c[i>>2]|0;d=c[g+196>>2]|0;d=c[(c[d+(e<<6)+4>>2]|0)+((c[d+(e<<6)>>2]|0)+-1<<2)>>2]|0;$i(d,k,+h[(c[d+16>>2]|0)+96>>3]+f+ +h[g+64>>3],0)|0;break}}while(0);e=e+1|0;g=c[i>>2]|0}l=n;return}function hj(b){b=b|0;var d=0,e=0,f=0;d=b+16|0;if(!(c[(c[d>>2]|0)+256>>2]|0)){f=uh(ig(b)|0)|0;a[(c[f+16>>2]|0)+156>>0]=2;e=uh(ig(b)|0)|0;a[(c[e+16>>2]|0)+156>>0]=2;if((c[(c[d>>2]|0)+12>>2]|0?(ig(b)|0)!=(b|0):0)?(c[(c[(fz(b)|0)+16>>2]|0)+116>>2]&1|0)==0:0){b=c[d>>2]|0;$i(f,e,+(~~+h[b+48+((+h[b+48>>3]>+h[b+80>>3]?0:2)<<4)>>3]|0),0)|0}d=c[d>>2]|0;c[d+256>>2]=f;c[d+260>>2]=e}return}function ij(a){a=a|0;var b=0,d=0;do if((ig(a)|0)!=(a|0)){gj(a);a=a+16|0;b=c[a>>2]|0;b=fh(c[b+256>>2]|0,c[b+260>>2]|0)|0;if(!b){d=c[a>>2]|0;$i(c[d+256>>2]|0,c[d+260>>2]|0,1.0,128)|0;break}else{d=(c[b+16>>2]|0)+156|0;c[d>>2]=(c[d>>2]|0)+128;break}}else a=a+16|0;while(0);b=1;while(1){d=c[a>>2]|0;if((b|0)>(c[d+180>>2]|0))break;ij(c[(c[d+184>>2]|0)+(b<<2)>>2]|0);b=b+1|0}return}function jj(d){d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,l=0,m=0.0,n=0,o=0;k=KL(d,c[46374]|0,8,0)|0;o=d+16|0;e=c[o>>2]|0;m=+(k|0);k=b[e+236>>1]|0;while(1){if((k|0)>(b[e+238>>1]|0)){f=1;break}e=c[e+196>>2]|0;a:do if(c[e+(k<<6)>>2]|0?(l=c[c[e+(k<<6)+4>>2]>>2]|0,l|0):0){i=l+16|0;f=c[(c[i>>2]|0)+236>>2]|0;while(1){if((f|0)<=0)break;f=f+-1|0;j=c[(c[(c[(c[(ig(d)|0)+16>>2]|0)+196>>2]|0)+(k<<6)+4>>2]|0)+(f<<2)>>2]|0;g=j+16|0;e=c[g>>2]|0;if(!(a[e+156>>0]|0)){n=10;break}if(mj(d,j)|0){n=9;break}}if((n|0)==9){e=c[g>>2]|0;n=10}if((n|0)==10){n=0;$i(j,c[(c[o>>2]|0)+256>>2]|0,+h[e+96>>3]+m,0)|0}f=(c[(c[(c[o>>2]|0)+196>>2]|0)+(k<<6)>>2]|0)+(c[(c[i>>2]|0)+236>>2]|0)|0;while(1){if((f|0)>=(c[(c[(c[(ig(d)|0)+16>>2]|0)+196>>2]|0)+(k<<6)>>2]|0))break a;i=c[(c[(c[(c[(ig(d)|0)+16>>2]|0)+196>>2]|0)+(k<<6)+4>>2]|0)+(f<<2)>>2]|0;g=i+16|0;e=c[g>>2]|0;if(!(a[e+156>>0]|0))break;if(!(mj(d,i)|0))f=f+1|0;else{n=15;break}}if((n|0)==15){n=0;e=c[g>>2]|0}$i(c[(c[o>>2]|0)+260>>2]|0,i,+h[e+88>>3]+m,0)|0}while(0);k=k+1|0;e=c[o>>2]|0}while(1){if((f|0)>(c[e+180>>2]|0))break;jj(c[(c[e+184>>2]|0)+(f<<2)>>2]|0);f=f+1|0;e=c[o>>2]|0}return}function kj(a){a=a|0;var b=0,d=0.0,e=0,f=0,g=0;e=KL(a,c[46374]|0,8,0)|0;hj(a);b=a+16|0;d=+(e|0);a=1;while(1){e=c[b>>2]|0;if((a|0)>(c[e+180>>2]|0))break;e=c[(c[e+184>>2]|0)+(a<<2)>>2]|0;hj(e);f=c[b>>2]|0;g=e+16|0;$i(c[f+256>>2]|0,c[(c[g>>2]|0)+256>>2]|0,+h[f+96>>3]+d,0)|0;f=c[b>>2]|0;$i(c[(c[g>>2]|0)+260>>2]|0,c[f+260>>2]|0,+h[f+64>>3]+d,0)|0;kj(e);a=a+1|0}return}function lj(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0.0,n=0,o=0;d=KL(a,c[46374]|0,8,0)|0;n=a+16|0;a=1;while(1){f=c[n>>2]|0;e=c[f+180>>2]|0;if((a|0)>(e|0))break;hj(c[(c[f+184>>2]|0)+(a<<2)>>2]|0);a=a+1|0}m=+(d|0);l=1;a=e;d=f;while(1){if((l|0)>(a|0))break;k=l+1|0;j=k;while(1){e=c[d+184>>2]|0;f=c[e+(l<<2)>>2]|0;if((j|0)>(a|0))break;e=c[e+(j<<2)>>2]|0;g=(b[(c[f+16>>2]|0)+236>>1]|0)>(b[(c[e+16>>2]|0)+236>>1]|0);i=g?e:f;e=g?f:e;f=c[i+16>>2]|0;g=c[e+16>>2]|0;o=b[g+236>>1]|0;h=o<<16>>16;if((b[f+238>>1]|0)>=o<<16>>16){a=(c[(c[(c[c[(c[f+196>>2]|0)+(h<<6)+4>>2]>>2]|0)+16>>2]|0)+236>>2]|0)<(c[(c[(c[c[(c[g+196>>2]|0)+(h<<6)+4>>2]>>2]|0)+16>>2]|0)+236>>2]|0);$i(c[(c[(a?i:e)+16>>2]|0)+260>>2]|0,c[(c[(a?e:i)+16>>2]|0)+256>>2]|0,m,0)|0;a=c[n>>2]|0;d=a;a=c[a+180>>2]|0}j=j+1|0}lj(f);d=c[n>>2]|0;l=k;a=c[d+180>>2]|0}return}function mj(b,d){b=b|0;d=d|0;var e=0;d=c[d+16>>2]|0;if((a[d+156>>0]|0)==1){d=c[c[d+256>>2]>>2]|0;while(1){e=c[(c[d+16>>2]|0)+116>>2]|0;if(!e)break;else d=e}if(!(oz(b,c[((c[d>>2]&3|0)==3?d:d+48|0)+40>>2]|0)|0))d=(oz(b,c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0)|0)==0&1;else d=0}else d=0;return d|0}function nj(a,b){a=a|0;b=b|0;return oj(a,b)|0}function oj(a,b){a=a|0;b=b|0;var d=0,e=0;a:do if((a|0)==(b|0))a=1;else{d=c[(c[a+16>>2]|0)+180>>2]|0;a=0;while(1){e=c[d+(a<<2)>>2]|0;if(!e){a=0;break a}if(!(oj(c[((c[e>>2]&3|0)==2?e:e+-48|0)+40>>2]|0,b)|0))a=a+1|0;else{a=1;break}}}while(0);return a|0}function pj(d){d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=d+16|0;d=c[k>>2]|0;j=b[d+236>>1]|0;while(1){if((j|0)>(b[d+238>>1]|0))break;h=c[d+196>>2]|0;g=c[h+(j<<6)>>2]|0;h=h+(j<<6)+4|0;i=0;f=0;while(1){if((f|0)>=(g|0))break;e=c[(c[(c[h>>2]|0)+(f<<2)>>2]|0)+16>>2]|0;c[e+236>>2]=i;if((a[e+159>>0]|0)==6)e=c[e+216>>2]|0;else e=1;i=e+i|0;f=f+1|0}if((i|0)>(g|0)){d=c[h>>2]|0;if(!d)d=vH((i<<2)+4|0)|0;else d=xH(d,(i<<2)+4|0)|0;f=c[(c[k>>2]|0)+196>>2]|0;c[f+(j<<6)+4>>2]=d;e=c[f+(j<<6)>>2]|0;while(1){d=e+-1|0;if((e|0)<=0)break;h=c[f+(j<<6)+4>>2]|0;e=c[h+(d<<2)>>2]|0;c[h+(c[(c[e+16>>2]|0)+236>>2]<<2)>>2]=e;e=d;f=c[(c[k>>2]|0)+196>>2]|0}c[f+(j<<6)>>2]=i;c[(c[f+(j<<6)+4>>2]|0)+(i<<2)>>2]=0;d=c[k>>2]|0}j=j+1|0}return}function qj(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;o=l;l=l+48|0;n=o+32|0;m=o+8|0;d=o+24|0;k=o+16|0;j=o;e=b+16|0;f=c[e>>2]|0;a:do if((c[f+216>>2]|0)>=2){c[m>>2]=~~(+h[f+16>>3]-+h[f+88>>3]);c[m+4>>2]=~~+h[f+24>>3];c[n>>2]=c[m>>2];c[n+4>>2]=c[m+4>>2];rj(d,b,n);g=d;i=c[g+4>>2]|0;d=m;c[d>>2]=c[g>>2];c[d+4>>2]=i;d=c[e>>2]|0;if((c[d+184>>2]|0)>0){j=c[c[d+180>>2]>>2]|0;d=(c[d+236>>2]|0)+1|0;j=Hx(a,c[((c[j>>2]&3|0)==2?j:j+-48|0)+40>>2]|0)|0;while(1){if(!j)break a;i=(c[j>>2]&3|0)==2?j:j+-48|0;e=i+48|0;f=c[((c[i>>2]&3|0)==3?i:e)+40>>2]|0;if((f|0)!=(b|0)?(SL(f)|0)==(b|0):0){f=c[((c[i>>2]&3|0)==3?i:e)+40>>2]|0;c[n>>2]=c[m>>2];c[n+4>>2]=c[m+4>>2];sj(k,a,f,n,d);f=k;e=c[f+4>>2]|0;g=m;c[g>>2]=c[f>>2];c[g+4>>2]=e;zh(i);g=i+-48|0;e=c[(c[((c[i>>2]&3|0)==2?i:g)+40>>2]|0)+16>>2]|0;f=c[e+172>>2]|0;if(!f)e=vH((c[e+176>>2]<<2)+8|0)|0;else e=xH(f,(c[e+176>>2]<<2)+8|0)|0;c[(c[(c[((c[i>>2]&3|0)==2?i:g)+40>>2]|0)+16>>2]|0)+172>>2]=e;p=c[(c[((c[i>>2]&3|0)==2?i:g)+40>>2]|0)+16>>2]|0;e=c[p+172>>2]|0;p=p+176|0;f=c[p>>2]|0;c[p>>2]=f+1;c[e+(f<<2)>>2]=i;i=c[(c[((c[i>>2]&3|0)==2?i:g)+40>>2]|0)+16>>2]|0;c[(c[i+172>>2]|0)+(c[i+176>>2]<<2)>>2]=0;d=d+1|0}j=Ix(a,j)|0}}else{i=c[c[d+172>>2]>>2]|0;d=(c[d+236>>2]|0)+1|0;i=Ex(a,c[((c[i>>2]&3|0)==3?i:i+48|0)+40>>2]|0)|0;while(1){if(!i)break a;e=i+-48|0;f=c[((c[i>>2]&3|0)==2?i:e)+40>>2]|0;if((f|0)!=(b|0)?(SL(f)|0)==(b|0):0){f=c[((c[i>>2]&3|0)==2?i:e)+40>>2]|0;c[n>>2]=c[m>>2];c[n+4>>2]=c[m+4>>2];sj(j,a,f,n,d);f=j;e=c[f+4>>2]|0;g=m;c[g>>2]=c[f>>2];c[g+4>>2]=e;zh(i);g=i+48|0;e=c[(c[((c[i>>2]&3|0)==3?i:g)+40>>2]|0)+16>>2]|0;f=c[e+180>>2]|0;if(!f)e=vH((c[e+184>>2]<<2)+8|0)|0;else e=xH(f,(c[e+184>>2]<<2)+8|0)|0;c[(c[(c[((c[i>>2]&3|0)==3?i:g)+40>>2]|0)+16>>2]|0)+180>>2]=e;f=c[(c[((c[i>>2]&3|0)==3?i:g)+40>>2]|0)+16>>2]|0;k=c[f+180>>2]|0;f=f+184|0;p=c[f>>2]|0;c[f>>2]=p+1;c[k+(p<<2)>>2]=i;p=c[(c[((c[i>>2]&3|0)==3?i:g)+40>>2]|0)+16>>2]|0;c[(c[p+180>>2]|0)+(c[p+184>>2]<<2)>>2]=0;d=d+1|0}i=Gx(a,i)|0}}}while(0);l=o;return}function rj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0.0;bN(b,c[(c[(ez(b)|0)+16>>2]|0)+116>>2]&1);e=c[b+16>>2]|0;h[e+24>>3]=+(c[d+4>>2]|0);f=+h[e+88>>3]+ +(c[d>>2]|0);h[e+16>>3]=f;f=f+ +h[e+96>>3];c[d>>2]=~~(f+ +(c[(c[(ez(b)|0)+16>>2]|0)+248>>2]|0));e=d;b=c[e+4>>2]|0;d=a;c[d>>2]=c[e>>2];c[d+4>>2]=b;return}function sj(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;i=l;l=l+16|0;h=i;b=ig(b)|0;g=SL(d)|0;if((g|0)!=(d|0))rh(g,d);j=c[d+16>>2]|0;c[j+236>>2]=f;g=c[(c[g+16>>2]|0)+232>>2]|0;c[j+232>>2]=g;c[(c[(c[(c[b+16>>2]|0)+196>>2]|0)+(g<<6)+4>>2]|0)+(f<<2)>>2]=d;c[h>>2]=c[e>>2];c[h+4>>2]=c[e+4>>2];rj(a,d,h);l=i;return}function tj(a){a=a|0;var d=0.0,e=0.0,f=0,g=0,i=0,j=0.0,k=0,l=0,m=0,n=0.0;m=c[(c[(ig(a)|0)+16>>2]|0)+196>>2]|0;if((ig(a)|0)==(a|0))j=8.0;else j=+(KL(a,c[46374]|0,8,0)|0);l=a+16|0;g=c[l>>2]|0;f=0;k=1;e=+h[g+120>>3];d=+h[g+128>>3];while(1){if((k|0)>(c[g+180>>2]|0))break;i=c[(c[g+184>>2]|0)+(k<<2)>>2]|0;f=tj(i)|0|f;i=c[i+16>>2]|0;g=c[l>>2]|0;if((b[i+238>>1]|0)==(b[g+238>>1]|0)){n=+h[i+120>>3]+j;e=e>n?e:n}if((b[i+236>>1]|0)==(b[g+236>>1]|0)){n=+h[i+128>>3]+j;d=d>n?d:n}k=k+1|0}if((ig(a)|0)!=(a|0)?(c[(c[l>>2]|0)+12>>2]|0)!=0:0)if(!(c[(c[(fz(a)|0)+16>>2]|0)+116>>2]&1)){k=c[l>>2]|0;f=1;e=+h[k+56>>3]+e;d=+h[k+88>>3]+d}else f=1;k=c[l>>2]|0;h[k+120>>3]=e;h[k+128>>3]=d;if((ig(a)|0)!=(a|0)){l=c[l>>2]|0;a=m+(b[l+236>>1]<<6)+24|0;n=+h[a>>3];h[a>>3]=n>d?n:d;m=m+(b[l+238>>1]<<6)+16|0;n=+h[m>>3];h[m>>3]=n>e?n:e}return f|0}function uj(a,d){a=a|0;d=d|0;var e=0,f=0.0,g=0.0,i=0,j=0,k=0.0,l=0,m=0,n=0,o=0,p=0.0,q=0.0;o=c[(c[(ig(a)|0)+16>>2]|0)+196>>2]|0;if((ig(a)|0)==(a|0))e=0;else e=KL(a,c[46374]|0,8,0)|0;l=a+16|0;i=c[l>>2]|0;m=e+d|0;k=+(e|0);j=1;f=+h[i+128>>3];g=+h[i+120>>3];e=i;while(1){if((j|0)>(c[e+180>>2]|0))break;i=c[(c[e+184>>2]|0)+(j<<2)>>2]|0;uj(i,m);i=c[i+16>>2]|0;e=c[l>>2]|0;if((b[i+238>>1]|0)==(b[e+238>>1]|0)){q=+h[i+120>>3]+k;g=g>q?g:q}if((b[i+236>>1]|0)==(b[e+236>>1]|0)){q=+h[i+128>>3]+k;f=f>q?f:q}j=j+1|0}h[e+120>>3]=g;h[e+128>>3]=f;if(((ig(a)|0)!=(a|0)?(n=c[l>>2]|0,c[n+12>>2]|0):0)?(p=-g-f+ +h[n+48+((+h[n+104>>3]>+h[n+72>>3]?3:1)<<4)+8>>3]-+h[(c[(c[c[o+(b[n+236>>1]<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3]+ +h[(c[(c[c[o+(b[n+238>>1]<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3],p>0.0):0)vj(a,~~p,d);if((ig(a)|0)!=(a|0)){n=c[l>>2]|0;m=o+(b[n+236>>1]<<6)+24|0;q=+h[m>>3];p=+h[n+128>>3];h[m>>3]=q>p?q:p;o=o+(b[n+238>>1]<<6)+16|0;p=+h[o>>3];q=+h[n+120>>3];h[o>>3]=p>q?p:q}return}function vj(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0.0,i=0.0,j=0.0,k=0,l=0,m=0,n=0.0,o=0.0,p=0,q=0,r=0;k=c[(ig(a)|0)+16>>2]|0;q=c[k+196>>2]|0;p=c[a+16>>2]|0;a=b[p+238>>1]|0;f=b[p+236>>1]|0;l=(d+1|0)/2|0;m=p+120|0;n=+h[m>>3];o=+(l|0);i=+(e|0);e=~~(o+i+n-+h[q+(a<<6)+16>>3]);if((e|0)>0){g=+(e|0);while(1){if((a|0)<(f|0))break;if((c[q+(a<<6)>>2]|0)>0){r=(c[(c[c[q+(a<<6)+4>>2]>>2]|0)+16>>2]|0)+24|0;h[r>>3]=+h[r>>3]+g}a=a+-1|0}j=+h[p+128>>3];a=e;g=j+ +(d-l|0)}else{j=+h[p+128>>3];a=d-l|0;g=j}a=~~(+(a|0)+i+g-+h[q+(f<<6)+24>>3]);a:do if((a|0)>0){e=b[k+236>>1]|0;g=+(a|0);while(1){a=f+-1|0;if((f|0)<=(e|0))break a;if((c[q+(a<<6)>>2]|0)<=0){f=a;continue}f=(c[(c[c[q+(a<<6)+4>>2]>>2]|0)+16>>2]|0)+24|0;h[f>>3]=+h[f>>3]+g;f=a}}while(0);h[p+128>>3]=j+ +(d-l|0);h[m>>3]=n+o;return}function wj(b,d){b=b|0;d=d|0;var e=0,f=0;e=c[b+16>>2]|0;f=a[e+84>>0]|0;b=c[d+16>>2]|0;do if(f<<24>>24==(a[b+84>>0]|0)){if(+h[e+56>>3]==+h[b+56>>3]){if(!(f<<24>>24==0?1:+h[e+64>>3]==+h[b+64>>3])){b=0;break}}else if(f<<24>>24){b=0;break}if(+h[e+16>>3]==+h[b+16>>3]?+h[e+24>>3]==+h[b+24>>3]:0){b=1;break}b=(a[e+44>>0]|0)==0&1}else b=0;while(0);return b|0}function xj(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=a+16|0;d=c[i>>2]|0;b[d+236>>1]=32767;b[d+238>>1]=-1;d=0;h=Sy(a)|0;while(1){e=c[i>>2]|0;if(!h)break;f=e+238|0;g=c[(c[h+16>>2]|0)+232>>2]|0;if((g|0)>(b[f>>1]|0))b[f>>1]=g;e=e+236|0;if((g|0)<(b[e>>1]|0))b[e>>1]=g;if(!d)d=h;else d=(g|0)<(c[(c[d+16>>2]|0)+232>>2]|0)?h:d;h=Ty(a,h)|0}c[e+264>>2]=d;return}function yj(a){a=a|0;var b=0,d=0,e=0,f=0,g=0.0;b=xx(a,86879)|0;if(!b)b=2147483647;else{g=+b2(b);b=~~(g*+(ay(a)|0))}e=a+16|0;d=0;while(1){f=c[e>>2]|0;if((d|0)>=(c[f+220>>2]|0))break;c[f+192>>2]=c[(c[f+216>>2]|0)+(d<<2)>>2];fI(a,(c[f+180>>2]|0)==0&1,b)|0;d=d+1|0}return}function zj(a,d){a=a|0;d=d|0;var e=0,f=0,g=0;f=l;l=l+16|0;e=f;if(!(xx(a,86888)|0))Bj(a,d);else{g=(c[a+16>>2]|0)+136|0;b[g>>1]=b[g>>1]|16;Aj(a,d)}if(0){g=c[15686]|0;a=c[a+16>>2]|0;d=b[a+236>>1]|0;c[e>>2]=b[a+238>>1];c[e+4>>2]=d;g1(g,86896,e)|0}l=f;return}function Aj(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0.0;i=l;l=l+16|0;h=i;c[45977]=0;a[h>>0]=a[18484]|0;a[h+1>>0]=a[18485]|0;a[h+2>>0]=a[18486]|0;a[h+3>>0]=a[18487]|0;h=Xx(87106,h,0)|0;Az(h,87135,280,1)|0;mz(h,17404,17344);Cj(b);e=xx(b,86879)|0;if(!e)f=2147483647;else{j=+b2(e);f=~~(j*+(ay(b)|0))}Sj(b,0);Tj(b,h);Uj(b,h);Vj(b,h,0,0);Wj(h);g=Xj(h)|0;Yj(h);if(d|0){Mk(h);Ak(h)}e=xx(b,99560)|0;if(!e)e=-1;else e=a2(e)|0;yH(h,1,f,e)|0;Zj(b,h,g);$x(h)|0;l=i;return}function Bj(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;g=l;l=l+32|0;f=g+16|0;e=g+8|0;d=g;Cj(a);do if(!b){Dj(a,a);Pk(a);Ej(d,a);h=d;d=c[h+4>>2]|0;b=e;c[b>>2]=c[h>>2];c[b+4>>2]=d;Il(a,0);b=0}else{Mk(a);Ak(a);Dj(a,a);Pk(a);Ej(d,a);i=d;d=c[i+4>>2]|0;h=e;c[h>>2]=c[i>>2];c[h+4>>2]=d;Il(a,0);h=c[a+16>>2]|0;if((c[h+220>>2]|0)<=1?(c[h+180>>2]|0)<=0:0)break;c[b+32>>2]=1;b=0}while(0);xk(a);c[f>>2]=c[e>>2];c[f+4>>2]=c[e+4>>2];if(Fj(a,f)|0)Il(a,0);if(!b)yj(a);else Bk(a,b);Gj(a,b);Hj(a);l=g;return}function Cj(d){d=d|0;var f=0,g=0,h=0;if(a[(c[(c[d+60>>2]|0)+16>>2]|0)+113>>0]&1){g=Sy(d)|0;while(1){if(!g)break;f=Ex(d,g)|0;while(1){if(!f)break;h=(c[f+16>>2]|0)+170|0;b[h>>1]=(e[h>>1]|0)<<1;f=Gx(d,f)|0}g=Ty(d,g)|0}h=(c[d+16>>2]|0)+252|0;c[h>>2]=((c[h>>2]|0)+1|0)/2|0}return}function Dj(a,b){a=a|0;b=b|0;var d=0;b=wA(b)|0;while(1){if(!b)break;d=Pj(b)|0;do if(d)if((d|0)==7&(c[46364]|0)==100){Lj(a,b);break}else{Qj(a,b,d);break}else Dj(a,b);while(0);b=xA(b)|0}return}function Ej(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;i=d+16|0;e=c[i>>2]|0;d=c[e+228>>2]|0;e=c[e+224>>2]|0;f=(e|0)==0;if(!d)if(f){j=0;k=0}else g=4;else if(f)g=5;else g=4;if((g|0)==4){d=SL(e)|0;e=c[i>>2]|0;c[e+224>>2]=d;d=c[e+228>>2]|0;if(!d){h=0;d=e;g=12}else g=5}do if((g|0)==5){d=SL(d)|0;e=c[i>>2]|0;c[e+228>>2]=d;if(d){e=d+16|0;d=c[e>>2]|0;f=(a[d+159>>0]|0)==5&1;while(1){d=c[c[d+180>>2]>>2]|0;if(!d){g=11;break}h=c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0;if((h|0)!=(SL(h)|0)){g=9;break}wk(d);d=c[e>>2]|0}if((g|0)==9)qa(86999,86939,346,87031);else if((g|0)==11){h=f;d=c[i>>2]|0;g=12;break}}else{h=0;d=e;g=12}}while(0);a:do if((g|0)==12){d=c[d+224>>2]|0;if(!d){j=0;k=h}else{e=d+16|0;d=c[e>>2]|0;f=(a[d+159>>0]|0)==3&1;while(1){d=c[c[d+172>>2]>>2]|0;if(!d){j=f;k=h;break a}i=c[((c[d>>2]&3|0)==3?d:d+48|0)+40>>2]|0;if((i|0)!=(SL(i)|0))break;wk(d);d=c[e>>2]|0}qa(87044,86939,353,87031)}}while(0);c[b>>2]=j;c[b+4>>2]=k;return}function Fj(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;j=a+16|0;i=c[j>>2]|0;if((c[i+228>>2]|0)==0?(c[i+224>>2]|0)==0:0)d=0;else e=3;a:do if((e|0)==3){g=Sy(a)|0;i=d+4|0;h=c[d>>2]&65535;d=0;while(1){if(!g)break a;if((g|0)==(SL(g)|0)){f=g+16|0;e=c[f>>2]|0;if((c[e+184>>2]|0)==0?(k=c[(c[j>>2]|0)+228>>2]|0,!((k|0)==0|(g|0)==(k|0))):0){d=ph(g,k,0)|0;e=c[d+16>>2]|0;b[e+170>>1]=c[i>>2];c[e+156>>2]=0;e=c[f>>2]|0}if((c[e+176>>2]|0)==0?(l=c[(c[j>>2]|0)+224>>2]|0,!((l|0)==0|(g|0)==(l|0))):0){d=ph(l,g,0)|0;f=c[d+16>>2]|0;b[f+170>>1]=h;c[f+156>>2]=0}}g=Ty(a,g)|0}}while(0);return (d|0)!=0|0}function Gj(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;g=Sy(d)|0;k=d+16|0;f=c[k>>2]|0;a:do if(g){b[f+236>>1]=32767;b[f+238>>1]=-1;j=(e|0)==0;while(1){if(!g)break;f=SL(g)|0;i=c[g+16>>2]|0;e=c[i+232>>2]|0;do if((f|0)!=(g|0)){if(!j)if(!e)e=0;else break;e=e+(c[(c[f+16>>2]|0)+232>>2]|0)|0;c[i+232>>2]=e}while(0);f=c[k>>2]|0;h=f+238|0;if((e|0)>(b[h>>1]|0))b[h>>1]=e;f=f+236|0;if((e|0)<(b[f>>1]|0))b[f>>1]=e;switch(a[i+159>>0]|0){case 6:case 0:break;default:UL(g)}g=Ty(d,g)|0}if((ig(d)|0)==(d|0)){if((c[46364]|0)==100)e=1;else{Kj(d);break}while(1){f=c[k>>2]|0;if((e|0)>(c[f+180>>2]|0))break a;Jj(c[(c[f+184>>2]|0)+(e<<2)>>2]|0);e=e+1|0}}}else{b[f+238>>1]=0;b[f+236>>1]=0}while(0);return}function Hj(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;j=b+16|0;e=0;while(1){d=c[j>>2]|0;if((e|0)>=(c[d+220>>2]|0))break;i=c[(c[d+216>>2]|0)+(e<<2)>>2]|0;c[d+192>>2]=i;d=i;while(1){if(!d)break;i=d+16|0;Ij((c[i>>2]|0)+172|0);Ij((c[i>>2]|0)+180|0);i=c[i>>2]|0;a[i+157>>0]=0;d=c[i+164>>2]|0}e=e+1|0}i=Sy(b)|0;while(1){if(!i)break;h=Ex(b,i)|0;while(1){if(!h)break;f=h+16|0;d=c[f>>2]|0;g=c[d+172>>2]|0;if((g|0)!=0?(k=g+16|0,(h|0)==(c[(c[k>>2]|0)+116>>2]|0)):0){d=Sy(b)|0;while(1){if(!d)break;e=Ex(b,d)|0;while(1){if(!e)break;if((h|0)!=(e|0)?(l=(c[e+16>>2]|0)+172|0,m=c[l>>2]|0,(m|0)!=0&(g|0)==(m|0)):0)c[l>>2]=0;e=Gx(b,e)|0}d=Ty(b,d)|0}D_(c[k>>2]|0);D_(g);d=c[f>>2]|0}c[d+172>>2]=0;h=Gx(b,h)|0}i=Ty(b,i)|0}D_(c[(c[j>>2]|0)+216>>2]|0);m=c[j>>2]|0;c[m+216>>2]=0;c[m+220>>2]=0;return}function Ij(a){a=a|0;var b=0,d=0;d=a+4|0;b=c[d>>2]|0;while(1){if((b|0)<=-1)break;c[(c[a>>2]|0)+(b<<2)>>2]=0;b=b+-1|0}c[d>>2]=0;return}function Jj(a){a=a|0;var d=0,f=0,g=0;d=a+16|0;f=c[d>>2]|0;g=c[(c[(c[f+264>>2]|0)+16>>2]|0)+232>>2]|0;a=f+236|0;b[a>>1]=g+(e[a>>1]|0);a=f+238|0;b[a>>1]=g+(e[a>>1]|0);a=1;while(1){if((a|0)>(c[f+180>>2]|0))break;Jj(c[(c[f+184>>2]|0)+(a<<2)>>2]|0);a=a+1|0;f=c[d>>2]|0}return}function Kj(b){b=b|0;var d=0;d=wA(ig(b)|0)|0;while(1){if(!d)break;if((a[(c[d+16>>2]|0)+274>>0]|0)==7)Lj(b,d);d=xA(d)|0}return}function Lj(a,b){a=a|0;b=b|0;var d=0;d=(c[b+16>>2]|0)+200|0;do if((c[d>>2]|0)==0?(c[d>>2]=a,Mj(a,b),Sy(b)|0):0){Nj(a,b);if((c[46364]|0)==100){Bj(b,0);Oj(b);break}else{xj(b);break}}while(0);return}function Mj(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;h=b+16|0;g=Sy(d)|0;while(1){if(!g)break;i=Ty(d,g)|0;j=g+16|0;if(!(a[(c[j>>2]|0)+159>>0]|0))f=1;else{dz(d,g)|0;g=i;continue}while(1){e=c[h>>2]|0;b=c[e+180>>2]|0;if((f|0)>=(b|0))break;if(oz(c[(c[e+184>>2]|0)+(f<<2)>>2]|0,g)|0){k=7;break}f=f+1|0}if((k|0)==7){k=0;b=c[(c[h>>2]|0)+180>>2]|0}if((f|0)<(b|0))dz(d,g)|0;c[(c[j>>2]|0)+212>>2]=0;g=i}e=Sy(d)|0;while(1){if(!e)break;b=Ex(ig(d)|0,e)|0;while(1){if(!b)break;if(oz(d,c[((c[b>>2]&3|0)==2?b:b+-48|0)+40>>2]|0)|0)Vx(d,b,1)|0;b=Gx(ig(d)|0,b)|0}e=Ty(d,e)|0}return}function Nj(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;e=a+16|0;d=c[e>>2]|0;g=d+180|0;a=c[g>>2]|0;f=a+1|0;c[g>>2]=f;d=c[d+184>>2]|0;if(!d)a=uH((a<<2)+8|0)|0;else a=wH(d,a+2|0,4,f)|0;c[(c[e>>2]|0)+184>>2]=a;c[a+(f<<2)>>2]=b;fH(b);return}function Oj(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;g=c[b+16>>2]|0;d=g+192|0;h=0;while(1){d=c[d>>2]|0;if(!d)break;f=c[d+16>>2]|0;if(!(c[f+232>>2]|0))e=(a[f+156>>0]|0)==0?d:h;else e=h;d=f+164|0;h=e}if(!h)qa(86924,86939,238,86946);c[g+264>>2]=h;d=Sy(b)|0;while(1){if(!d){d=13;break}e=d+16|0;if(!((d|0)==(h|0)?1:(c[(c[e>>2]|0)+216>>2]|0)<2)){d=11;break}TL(d,h)|0;a[(c[e>>2]|0)+159>>0]=7;d=Ty(b,d)|0}if((d|0)==11)qa(86961,86939,242,86946);else if((d|0)==13)return}function Pj(b){b=b|0;var d=0;if(!(Rj(b)|0)){d=aM(xx(b,87076)|0,17356,17380)|0;a[(c[b+16>>2]|0)+274>>0]=d;b=d}else b=7;return b|0}function Qj(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;g=Sy(d)|0;a:do if(g|0){j=e&255;i=g+16|0;f=g;h=j;while(1){a[(c[f+16>>2]|0)+159>>0]=h;f=Ty(d,f)|0;if(!f)break;TL(g,f)|0;h=a[(c[i>>2]|0)+159>>0]|0}switch(e|0){case 3:case 2:{b=b+16|0;f=c[b>>2]|0;h=c[f+224>>2]|0;if(h){g=TL(h,g)|0;f=c[b>>2]|0}c[f+224>>2]=g;break}case 5:case 4:{b=b+16|0;f=c[b>>2]|0;h=c[f+228>>2]|0;if(h){g=TL(h,g)|0;f=c[b>>2]|0}c[f+228>>2]=g;break}default:break a}switch(e|0){case 3:{f=f+224|0;break}case 5:{f=f+228|0;break}default:break a}a[(c[(c[f>>2]|0)+16>>2]|0)+159>>0]=j}while(0);return}function Rj(a){a=a|0;return (z$(ry(a)|0,104980,7)|0)==0|0}function Sj(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0;m=l;l=l+16|0;g=m;if(!(lk(b)|0)){do if(qM(b)|0)if(!d){c[(c[b+16>>2]|0)+204>>2]=0;d=b;break}else{c[(c[b+16>>2]|0)+204>>2]=(c[(c[d+16>>2]|0)+204>>2]|0)+1;mk(b,d);d=b;break}while(0);e=wA(b)|0;while(1){if(!e)break;Sj(e,d);e=xA(e)|0}a:do if(qM(b)|0){e=Sy(b)|0;while(1){if(!e)break a;f=(c[e+16>>2]|0)+212|0;if(!(c[f>>2]|0))c[f>>2]=b;e=Ty(b,e)|0}}while(0);switch(nk(b)|0){case 3:{d=d+16|0;a[(c[d>>2]|0)+241>>0]=1;k=19;break}case 2:{d=d+16|0;k=19;break}case 5:{d=d+16|0;a[(c[d>>2]|0)+242>>0]=1;k=21;break}case 4:{d=d+16|0;k=21;break}case 1:{ok(b)|0;break}case 6:break;default:{e=ry(b)|0;f=xx(b,87076)|0;c[g>>2]=e;c[g+4>>2]=f;Pw(0,87259,g)|0}}if((k|0)==19){k=ok(b)|0;k=pk(k,c[(c[d>>2]|0)+208>>2]|0)|0;c[(c[d>>2]|0)+208>>2]=k}else if((k|0)==21){k=ok(b)|0;k=pk(k,c[(c[d>>2]|0)+212>>2]|0)|0;c[(c[d>>2]|0)+212>>2]=k}if((qM(b)|0?(h=b+16|0,i=c[h>>2]|0,j=c[i+208>>2]|0,j|0):0)?(j|0)==(c[i+212>>2]|0):0){j=ok(b)|0;k=c[h>>2]|0;c[k+208>>2]=j;c[k+212>>2]=j}}l=m;return}function Tj(a,b){a=a|0;b=b|0;var d=0,e=0;c[45977]=0;d=Sy(a)|0;while(1){if(!d)break;if((_j(d)|0)==(d|0)){e=bk(b,ry(d)|0)|0;c[(c[d+16>>2]|0)+148>>2]=e}d=Ty(a,d)|0}d=Sy(a)|0;while(1){if(!d)break;b=d+16|0;if(!(c[(c[b>>2]|0)+148>>2]|0)){e=c[(c[(_j(d)|0)+16>>2]|0)+148>>2]|0;c[(c[b>>2]|0)+148>>2]=e}d=Ty(a,d)|0}return}function Uj(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;h=Sy(a)|0;while(1){if(!h)break;d=c[(c[h+16>>2]|0)+148>>2]|0;i=Ex(a,h)|0;while(1){if(!i)break;do if((gk(i)|0)==0?(j=i+-48|0,k=c[(c[(_j(c[((c[i>>2]&3|0)==2?i:j)+40>>2]|0)|0)+16>>2]|0)+148>>2]|0,(d|0)!=(k|0)):0){f=c[i>>2]&3;g=i+48|0;e=((f|0)==3?i:g)+40|0;f=c[(c[(c[((f|0)==2?i:j)+40>>2]|0)+16>>2]|0)+212>>2]|0;if(!(hk(i)|0)){if((fk(c[(c[(c[e>>2]|0)+16>>2]|0)+212>>2]|0)|0)==0?(fk(f)|0)==0:0){ik(b,d,k,i);break}jk(b,d,k,i);break}else{f=_j(c[e>>2]|0)|0;e=c[i>>2]&3;if((f|0)!=(c[(c[(c[(c[(c[((e|0)==3?i:g)+40>>2]|0)+16>>2]|0)+212>>2]|0)+16>>2]|0)+212>>2]|0)?(g=_j(c[((e|0)==2?i:j)+40>>2]|0)|0,(g|0)!=(c[(c[(c[(c[(c[((c[i>>2]&3|0)==2?i:j)+40>>2]|0)+16>>2]|0)+212>>2]|0)+16>>2]|0)+208>>2]|0)):0)e=k;else{e=d;d=k}ik(b,d,e,i);break}}while(0);i=Gx(a,i)|0}h=Ty(a,h)|0}return}function Vj(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;if((qM(a)|0)!=0?(fk(a)|0)!=0:0){g=Sy(a)|0;while(1){if(!g)break;if(!(Hx(a,g)|0)){f=c[(c[(_j(g)|0)+16>>2]|0)+148>>2]|0;if(!d)d=bk(b,87157)|0;Rx(b,d,f,0,1)|0}if(!(Ex(a,g)|0)){f=c[(c[(_j(g)|0)+16>>2]|0)+148>>2]|0;if(!e)e=bk(b,87162)|0;Rx(b,f,e,0,1)|0}g=Ty(a,g)|0}if((e|0)!=0&(d|0)!=0){ek(Rx(b,d,e,0,1)|0,0,1e3);f=d}else f=d}else f=d;d=wA(a)|0;while(1){if(!d)break;Vj(d,b,f,e);d=xA(d)|0}return}function Wj(b){b=b|0;var d=0,e=0;d=Sy(b)|0;while(1){if(!d)break;e=c[d+16>>2]|0;a[e+158>>0]=0;a[e+157>>0]=0;d=Ty(b,d)|0}d=Sy(b)|0;while(1){if(!d)break;ck(b,d);d=Ty(b,d)|0}return}function Xj(a){a=a|0;var b=0,d=0,e=0,f=0;b=Sy(a)|0;while(1){if(!b)break;c[(c[b+16>>2]|0)+128>>2]=0;b=Ty(a,b)|0}b=0;e=Sy(a)|0;while(1){if(!e)break;d=b+1|0;if(!(c[(c[e+16>>2]|0)+128>>2]|0)){ak(a,e,d);b=d}e=Ty(a,e)|0}a:do if((b|0)>1){f=bk(a,87151)|0;d=1;e=Sy(a)|0;while(1){if(!e)break a;if((c[(c[e+16>>2]|0)+128>>2]|0)==(d|0)){Rx(a,f,e,0,1)|0;d=d+1|0}e=Ty(a,e)|0}}while(0);return b|0}function Yj(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0;g=Sy(a)|0;while(1){if(!g)break;h=g+16|0;f=Ex(a,g)|0;while(1){if(!f)break;b=c[h>>2]|0;d=c[b+180>>2]|0;if(!d)b=vH((c[b+184>>2]<<2)+8|0)|0;else b=xH(d,(c[b+184>>2]<<2)+8|0)|0;d=c[h>>2]|0;c[d+180>>2]=b;d=d+184|0;e=c[d>>2]|0;c[d>>2]=e+1;c[b+(e<<2)>>2]=f;e=c[h>>2]|0;c[(c[e+180>>2]|0)+(c[e+184>>2]<<2)>>2]=0;e=f+-48|0;b=c[(c[((c[f>>2]&3|0)==2?f:e)+40>>2]|0)+16>>2]|0;d=c[b+172>>2]|0;if(!d)b=vH((c[b+176>>2]<<2)+8|0)|0;else b=xH(d,(c[b+176>>2]<<2)+8|0)|0;c[(c[(c[((c[f>>2]&3|0)==2?f:e)+40>>2]|0)+16>>2]|0)+172>>2]=b;i=c[(c[((c[f>>2]&3|0)==2?f:e)+40>>2]|0)+16>>2]|0;b=c[i+172>>2]|0;i=i+176|0;d=c[i>>2]|0;c[i>>2]=d+1;c[b+(d<<2)>>2]=f;e=c[(c[((c[f>>2]&3|0)==2?f:e)+40>>2]|0)+16>>2]|0;c[(c[e+172>>2]|0)+(c[e+176>>2]<<2)>>2]=0;f=Gx(a,f)|0}g=Ty(a,g)|0}return}function Zj(a,d,f){a=a|0;d=d|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;n=a+16|0;o=c[n>>2]|0;b[o+236>>1]=32767;b[o+238>>1]=-1;a:do if((f|0)>1){h=uH((f<<2)+4|0)|0;g=f+1|0;f=1;while(1){if((f|0)==(g|0)){m=h;o=h;break a}c[h+(f<<2)>>2]=32767;f=f+1|0}}else{m=0;o=0}while(0);i=(m|0)==0;h=Sy(a)|0;while(1){if(!h)break;j=c[(c[(c[(_j(h)|0)+16>>2]|0)+148>>2]|0)+16>>2]|0;k=c[j+232>>2]|0;l=c[h+16>>2]|0;c[l+232>>2]=k;f=c[n>>2]|0;g=f+238|0;if((k|0)>(b[g>>1]|0))b[g>>1]=k;f=f+236|0;if((k|0)<(b[f>>1]|0))b[f>>1]=k;if(!i){j=c[j+128>>2]|0;c[l+128>>2]=j;l=m+(j<<2)|0;j=c[l>>2]|0;c[l>>2]=(j|0)<(k|0)?j:k}h=Ty(a,h)|0}j=(m|0)!=0;b:do if(!j){m=b[(c[n>>2]|0)+236>>1]|0;g=m<<16>>16;if(m<<16>>16>0){f=Sy(a)|0;while(1){if(!f)break;m=(c[f+16>>2]|0)+232|0;c[m>>2]=(c[m>>2]|0)-g;f=Ty(a,f)|0}f=c[n>>2]|0;n=f+236|0;b[n>>1]=(e[n>>1]|0)-g;f=f+238|0;b[f>>1]=(e[f>>1]|0)-g;f=0}else f=0}else{f=Sy(a)|0;while(1){if(!f){f=1;break b}l=c[f+16>>2]|0;n=l+232|0;c[n>>2]=(c[n>>2]|0)-(c[m+(c[l+128>>2]<<2)>>2]|0);f=Ty(a,f)|0}}while(0);$j(a,f);i=Sy(d)|0;while(1){if(!i)break;g=i+16|0;f=c[g>>2]|0;h=c[f+172>>2]|0;if(h){D_(h);f=c[g>>2]|0}f=c[f+180>>2]|0;if(f|0)D_(f);i=Ty(d,i)|0}D_(c[(c[(Sy(a)|0)+16>>2]|0)+112>>2]|0);f=Sy(a)|0;while(1){if(!f)break;c[(c[f+16>>2]|0)+112>>2]=0;f=Ty(a,f)|0}if(j)D_(o);return}function _j(a){a=a|0;var b=0,d=0,e=0;b=a+16|0;d=(c[b>>2]|0)+152|0;e=c[d>>2]|0;if(e){if((e|0)!=(a|0)){e=_j(e)|0;c[(c[b>>2]|0)+152>>2]=e;return e|0}}else c[d>>2]=a;return a|0}function $j(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;i=a+16|0;e=1;while(1){f=c[i>>2]|0;if((e|0)>(c[f+180>>2]|0))break;$j(c[(c[f+184>>2]|0)+(e<<2)>>2]|0,0);e=e+1|0}if((d|0)!=0|(c[f+200>>2]|0)!=0){b[f+236>>1]=32767;b[f+238>>1]=-1;e=0;h=Sy(a)|0;while(1){if(!h)break;g=c[(c[h+16>>2]|0)+232>>2]|0;d=c[i>>2]|0;f=d+238|0;if((g|0)>(b[f>>1]|0))b[f>>1]=g;d=d+236|0;if((g|0)<(b[d>>1]|0)){b[d>>1]=g;e=h}h=Ty(a,h)|0}c[(c[i>>2]|0)+264>>2]=e}return}function ak(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=(c[b+16>>2]|0)+128|0;a:do if(!(c[e>>2]|0)){c[e>>2]=d;e=Ex(a,b)|0;while(1){if(!e)break;ak(a,c[((c[e>>2]&3|0)==2?e:e+-48|0)+40>>2]|0,d);e=Gx(a,e)|0}e=Hx(a,b)|0;while(1){if(!e)break a;ak(a,c[((c[e>>2]&3|0)==3?e:e+48|0)+40>>2]|0,d);e=Ix(a,e)|0}}while(0);return}function bk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=az(a,b,1)|0;b=f+16|0;c[(c[b>>2]|0)+176>>2]=0;e=uH(20)|0;d=c[b>>2]|0;c[d+172>>2]=e;c[d+184>>2]=0;d=uH(20)|0;b=c[b>>2]|0;c[b+180>>2]=d;d=c[45977]|0;e=b+168|0;if(!d){c[e>>2]=0;c[(c[a+16>>2]|0)+192>>2]=f}else{c[e>>2]=d;c[(c[d+16>>2]|0)+164>>2]=f}c[45977]=f;c[b+164>>2]=0;return f|0}function ck(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=d+16|0;e=c[h>>2]|0;f=e+157|0;if(!(a[f>>0]|0)){a[f>>0]=1;a[e+158>>0]=1;d=Ex(b,d)|0;while(1){if(!d)break;e=Gx(b,d)|0;f=c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0;g=c[f+16>>2]|0;if(a[g+158>>0]|0){dk(b,d);d=e;continue}if(a[g+157>>0]|0){d=e;continue}ck(b,f);d=e}a[(c[h>>2]|0)+158>>0]=0}return}function dk(a,b){a=a|0;b=b|0;var d=0,f=0,g=0;d=c[b>>2]&3;g=b+-48|0;f=b+48|0;d=Rx(a,c[((d|0)==2?b:g)+40>>2]|0,c[((d|0)==3?b:f)+40>>2]|0,0,0)|0;if(!d){d=c[b>>2]&3;d=Rx(a,c[((d|0)==2?b:g)+40>>2]|0,c[((d|0)==3?b:f)+40>>2]|0,0,1)|0}g=c[b+16>>2]|0;ek(d,e[g+170>>1]|0,c[g+156>>2]|0);dz(a,b)|0;return}function ek(a,d,f){a=a|0;d=d|0;f=f|0;var g=0,h=0;a=c[a+16>>2]|0;g=a+170|0;h=e[g>>1]|0;b[g>>1]=(h|0)>(d|0)?h:d;d=a+156|0;c[d>>2]=(c[d>>2]|0)+f;return}function fk(a){a=a|0;return (RL(xx(a,87167)|0,0)|0)&255|0}function gk(b){b=b|0;var d=0,e=0;d=c[46419]|0;if((((d|0)!=0?(e=yx(b,d)|0,(e|0)!=0):0)?(a[e>>0]|0)!=0:0)?(QL(e)|0)<<24>>24==0:0)b=1;else b=0;return b|0}function hk(a){a=a|0;var b=0,d=0;d=c[a>>2]&3;b=c[(c[(c[((d|0)==3?a:a+48|0)+40>>2]|0)+16>>2]|0)+212>>2]|0;a=c[(c[(c[((d|0)==2?a:a+-48|0)+40>>2]|0)+16>>2]|0)+212>>2]|0;if((b|0)==(a|0))return 1;else{d=kk(b,a)|0;return ((d|0)==(b|0)|(d|0)==(a|0))&1|0}return 0}function ik(a,b,d,f){a=a|0;b=b|0;d=d|0;f=f|0;var g=0,h=0,i=0,j=0;j=l;l=l+16|0;h=j;g=Rx(a,b,d,0,0)|0;if(!g){g=Rx(a,d,b,0,0)|0;if(!g){g=Rx(a,b,d,0,1)|0;if(!g){b=ry(b)|0;f=ry(d)|0;c[h>>2]=b;c[h+4>>2]=f;Pw(1,87184,h)|0}else i=4}else i=4}else i=4;if((i|0)==4){i=c[f+16>>2]|0;ek(g,e[i+170>>1]|0,c[i+156>>2]|0)}l=j;return}function jk(a,d,f,g){a=a|0;d=d|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0;m=l;l=l+112|0;j=m;i=m+4|0;h=Hx(a,d)|0;while(1){if(!h){k=6;break}n=Ex(a,c[((c[h>>2]&3|0)==3?h:h+48|0)+40>>2]|0)|0;if(n|0?(c[((c[n>>2]&3|0)==2?n:n+-48|0)+40>>2]|0)==(f|0):0)break;h=Ix(a,h)|0}if((k|0)==6){n=c[45978]|0;c[45978]=n+1;c[j>>2]=n;Y0(i,87175,j)|0;i=bk(a,i)|0;n=Rx(a,i,d,0,1)|0;i=Rx(a,i,f,0,1)|0;f=c[g+16>>2]|0;k=f+156|0;n=(c[n+16>>2]|0)+156|0;c[n>>2]=(c[n>>2]|0)+((c[k>>2]|0)*1e3|0);n=c[i+16>>2]|0;j=n+170|0;b[j>>1]=b[(c[((e[j>>1]|0)>(e[f+170>>1]|0)?i:g)+16>>2]|0)+170>>1]|0;n=n+156|0;c[n>>2]=(c[n>>2]|0)+(c[k>>2]|0)}l=m;return}function kk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;a:while(1){e=a+16|0;while(1){if((a|0)==(b|0))break a;f=c[e>>2]|0;d=c[b+16>>2]|0;if((c[f+204>>2]|0)>=(c[d+204>>2]|0))break;b=c[d+200>>2]|0}a=c[f+200>>2]|0}return a|0}function lk(a){a=a|0;return (Sy(a)|0)==0|0}function mk(a,b){a=a|0;b=b|0;c[(c[a+16>>2]|0)+200>>2]=b;Nj(b,a);Mj(b,a);return}function nk(b){b=b|0;var c=0;b=xx(b,87076)|0;if((b|0)!=0?(a[b>>0]|0)!=0:0)if(b$(b,87086)|0)if(b$(b,87090)|0)if(b$(b,87097)|0)if(b$(b,87101)|0)if(!(b$(b,87081)|0))b=1;else c=8;else b=5;else b=4;else b=3;else b=2;else c=8;if((c|0)==8)b=6;return b|0}function ok(a){a=a|0;var b=0,c=0;c=Sy(a)|0;a:do if(!c)b=0;else{b=_j(c)|0;while(1){c=Ty(a,c)|0;if(!c)break a;pk(b,c)|0}}while(0);return b|0}function pk(a,b){a=a|0;b=b|0;if(b){a=_j(a)|0;c[(c[(_j(b)|0)+16>>2]|0)+152>>2]=a}return a|0}function qk(a,b,d){a=a|0;b=b|0;d=d|0;Az(b,87135,c[d>>2]|0,1)|0;return}function rk(a,b,d){a=a|0;b=b|0;d=d|0;Az(b,87302,c[d+4>>2]|0,1)|0;return}function sk(a,b,d){a=a|0;b=b|0;d=d|0;Az(b,87287,c[d+8>>2]|0,1)|0;return}function tk(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;p=l;l=l+240|0;m=p+120|0;n=p;c[46423]=nx(b,2,87317,0)|0;k=nx(b,2,87326,0)|0;c[46424]=k;a:do if((k|0)!=0|(c[46423]|0)!=0){k=Sy(b)|0;while(1){if(!k)break a;j=0;d=0;i=Jx(b,k)|0;while(1){if(!i){f=0;break}e=c[i>>2]|0;g=e&3;f=c[((g|0)==2?i:i+-48|0)+40>>2]|0;h=i+48|0;b:do if((f|0)!=(c[((g|0)==3?i:h)+40>>2]|0)){g=c[46423]|0;do if((f|0)==(k|0)&(g|0)!=0){f=yx(i,g)|0;if(!(a[f>>0]|0)){e=c[i>>2]|0;break}else{e=j;d=uk(m,d,k,i,f)|0;break b}}while(0);f=c[46424]|0;if((f|0?(c[((e&3|0)==3?i:h)+40>>2]|0)==(k|0):0)?(o=yx(i,f)|0,(a[o>>0]|0)!=0):0)e=uk(n,j,k,i,o)|0;else e=j}else e=j;while(0);j=e;i=Kx(b,i,k)|0}while(1){if((f|0)>=(d|0)){e=0;break}e=m+(f*24|0)+4|0;if((c[m+(f*24|0)+8>>2]|0)>1)vk(k,e);e=c[e>>2]|0;if(e|0)D_(e);f=f+1|0}while(1){if((e|0)>=(j|0))break;d=n+(e*24|0)+4|0;if((c[n+(e*24|0)+8>>2]|0)>1)vk(k,d);d=c[d>>2]|0;if(d|0)D_(d);e=e+1|0}k=Ty(b,k)|0}}while(0);l=p;return}function uk(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0.0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;p=l;l=l+16|0;k=p;m=p+12|0;n=p+8|0;o=0;while(1){if((o|0)>=(d|0)){j=10;break}j=c[b+(o*24|0)>>2]|0;if((a[j>>0]|0)==(a[g>>0]|0)?(b$(j,g)|0)==0:0){j=5;break}o=o+1|0}do if((j|0)==5){k=b+(o*24|0)+4|0;j=c[k>>2]|0;if(!j){j=b+(o*24|0)+8|0;g=j;j=vH((c[j>>2]<<2)+8|0)|0}else{q=b+(o*24|0)+8|0;g=q;j=xH(j,(c[q>>2]<<2)+8|0)|0}c[k>>2]=j;r=c[g>>2]|0;q=r+1|0;c[g>>2]=q;c[j+(r<<2)>>2]=f;c[(c[k>>2]|0)+(q<<2)>>2]=0;j=13}else if((j|0)==10)if((d|0)>4){r=ry(e)|0;c[k>>2]=5;c[k+4>>2]=r;Pw(1,87335,k)|0;break}else{s=b+(o*24|0)+8|0;c[s>>2]=0;k=uH(8)|0;r=b+(o*24|0)+4|0;c[r>>2]=k;q=c[s>>2]|0;j=q+1|0;c[s>>2]=j;c[k+(q<<2)>>2]=f;c[(c[r>>2]|0)+(j<<2)>>2]=0;c[b+(o*24|0)>>2]=g;c[b+(o*24|0)+12>>2]=0;h[b+(o*24|0)+16>>3]=0.0;d=d+1|0;j=13;break}while(0);if((j|0)==13){sE(f,m,n);j=(c[((c[f>>2]&3|0)==2?f:f+-48|0)+40>>2]|0)==(e|0)?c[n>>2]|0:c[m>>2]|0;if(j){r=b+(o*24|0)+12|0;s=c[r>>2]|0;c[r>>2]=s+1;if(!s)i=+wE(f,j);else i=0.0;h[b+(o*24|0)+16>>3]=i}}l=p;return d|0}function vk(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0.0,k=0.0,m=0.0,n=0,o=0.0,p=0.0,q=0.0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0.0;x=l;l=l+80|0;t=x+68|0;u=x+64|0;r=x;v=d+4|0;n=c[v>>2]|0;w=b+16|0;i=0;p=0.0;q=0.0;while(1){if((i|0)>=(n|0))break;f=c[(c[d>>2]|0)+(i<<2)>>2]|0;g=c[f>>2]&3;e=c[((g|0)==2?f:f+-48|0)+40>>2]|0;if((e|0)==(b|0))e=c[((g|0)==3?f:f+48|0)+40>>2]|0;g=c[e+16>>2]|0;s=c[w>>2]|0;k=+h[g+16>>3]-+h[s+16>>3];m=+h[g+24>>3]-+h[s+24>>3];o=+u$(k,m);i=i+1|0;p=k/o+p;q=m/o+q}j=+u$(p,q);s=c[w>>2]|0;k=+h[s+16>>3];m=+h[s+24>>3];y=+h[s+96>>3]+ +h[s+88>>3];o=+h[s+80>>3];s=y>o+ +(c[(c[(ez(b)|0)+16>>2]|0)+252>>2]|0);e=c[w>>2]|0;if(s)o=+h[e+96>>3]+ +h[e+88>>3];else{o=+h[e+80>>3];o=o+ +(c[(c[(ez(b)|0)+16>>2]|0)+252>>2]|0);e=c[w>>2]|0}y=+h[e+16>>3]+o*(p/j);j=+h[e+24>>3]+o*(q/j);h[r>>3]=k;n=r+8|0;h[n>>3]=m;h[r+16>>3]=(y+k*2.0)*.3333333333333333;h[r+24>>3]=(j+m*2.0)*.3333333333333333;h[r+32>>3]=(y*2.0+k)*.3333333333333333;h[r+40>>3]=(j*2.0+m)*.3333333333333333;h[r+48>>3]=y;h[r+56>>3]=j;NK(b,r);s=c[w>>2]|0;j=+h[r>>3]-+h[s+16>>3];k=+h[n>>3]-+h[s+24>>3];j=+(~~(j+(j>=0.0?.5:-.5))|0);k=+(~~(k+(k>=0.0?.5:-.5))|0);y=+h[s+88>>3];s=~~((y+j)*256.0/(+h[s+96>>3]+y))&255;r=0;while(1){if((r|0)>=(c[v>>2]|0))break;n=c[(c[d>>2]|0)+(r<<2)>>2]|0;sE(n,t,u);while(1){if(!n)break;else g=n;while(1){if(!g){i=n;break}e=c[g>>2]|0;i=g+-48|0;if((c[((e&3|0)==2?g:i)+40>>2]|0)==(b|0)){e=c[g+16>>2]|0;h[e+56>>3]=j;h[e+64>>3]=k;h[e+72>>3]=0.0;c[e+80>>2]=0;a[e+84>>0]=1;a[e+85>>0]=0;a[e+86>>0]=0;a[e+87>>0]=0;a[e+88>>0]=s;a[e+89>>0]=0;c[e+92>>2]=0;e=c[g>>2]|0}f=g+16|0;if((c[((e&3|0)==3?g:g+48|0)+40>>2]|0)==(b|0)){e=c[f>>2]|0;h[e+16>>3]=j;h[e+24>>3]=k;h[e+32>>3]=0.0;c[e+40>>2]=0;a[e+44>>0]=1;a[e+45>>0]=0;a[e+46>>0]=0;a[e+47>>0]=0;a[e+48>>0]=s;a[e+49>>0]=0;c[e+52>>2]=0}if((a[(c[f>>2]|0)+112>>0]|0)!=1){g=0;continue}e=c[(c[((c[g>>2]&3|0)==2?g:i)+40>>2]|0)+16>>2]|0;if((a[e+156>>0]|0)!=1){g=0;continue}if((c[e+184>>2]|0)!=1){g=0;continue}g=c[c[e+180>>2]>>2]|0}while(1){if(!i)break;e=c[i>>2]|0;if((c[((e&3|0)==2?i:i+-48|0)+40>>2]|0)==(b|0)){e=c[i+16>>2]|0;h[e+56>>3]=j;h[e+64>>3]=k;h[e+72>>3]=0.0;c[e+80>>2]=0;a[e+84>>0]=1;a[e+85>>0]=0;a[e+86>>0]=0;a[e+87>>0]=0;a[e+88>>0]=s;a[e+89>>0]=0;c[e+92>>2]=0;e=c[i>>2]|0}f=i+48|0;g=i+16|0;if((c[((e&3|0)==3?i:f)+40>>2]|0)==(b|0)){e=c[g>>2]|0;h[e+16>>3]=j;h[e+24>>3]=k;h[e+32>>3]=0.0;c[e+40>>2]=0;a[e+44>>0]=1;a[e+45>>0]=0;a[e+46>>0]=0;a[e+47>>0]=0;a[e+48>>0]=s;a[e+49>>0]=0;c[e+52>>2]=0}if((a[(c[g>>2]|0)+112>>0]|0)!=1){i=0;continue}e=c[(c[((c[i>>2]&3|0)==3?i:f)+40>>2]|0)+16>>2]|0;if((a[e+156>>0]|0)!=1){i=0;continue}if((c[e+176>>2]|0)!=1){i=0;continue}i=c[c[e+172>>2]>>2]|0}n=c[(c[n+16>>2]|0)+172>>2]|0}r=r+1|0}a[(c[w>>2]|0)+145>>0]=1;l=x;return}function wk(a){a=a|0;var b=0,d=0,e=0;kh(a);b=c[a>>2]&3;d=a+-48|0;e=a+48|0;b=fh(c[((b|0)==2?a:d)+40>>2]|0,c[((b|0)==3?a:e)+40>>2]|0)|0;if(!b){b=c[a>>2]&3;ph(c[((b|0)==2?a:d)+40>>2]|0,c[((b|0)==3?a:e)+40>>2]|0,a)|0}else xh(a,b);return}function xk(b){b=b|0;var d=0,e=0,f=0,g=0;f=b+16|0;e=0;while(1){b=c[f>>2]|0;if((e|0)>=(c[b+220>>2]|0))break;d=c[(c[b+216>>2]|0)+(e<<2)>>2]|0;c[b+192>>2]=d;b=d;d=b;while(1){if(!d)break;g=c[d+16>>2]|0;a[g+157>>0]=0;d=c[g+164>>2]|0}while(1){if(!b)break;yk(b);b=c[(c[b+16>>2]|0)+164>>2]|0}e=e+1|0}return}function yk(b){b=b|0;var d=0,e=0,f=0,g=0;g=b+16|0;d=c[g>>2]|0;b=d+157|0;if(!(a[b>>0]|0)){a[b>>0]=1;a[d+158>>0]=1;b=0;while(1){f=c[(c[d+180>>2]|0)+(b<<2)>>2]|0;if(!f)break;d=c[((c[f>>2]&3|0)==2?f:f+-48|0)+40>>2]|0;e=c[d+16>>2]|0;if(!(a[e+158>>0]|0)){if(!(a[e+157>>0]|0))yk(d)}else{wk(f);b=b+-1|0}b=b+1|0;d=c[g>>2]|0}a[d+158>>0]=0}return}function zk(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;e=Sy(a)|0;b=0;while(1){if(!e)break;d=Ex(a,e)|0;while(1){if(!d)break;g=c[d>>2]&3;h=c[(c[(c[((g|0)==2?d:d+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0;g=c[(c[(c[((g|0)==3?d:d+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0;f=h-g|0;d=Gx(a,d)|0;b=((h|0)==(g|0)?0:((f|0)>-1?f:0-f|0)+-1|0)+b|0}e=Ty(a,e)|0}return b|0}function Ak(b){b=b|0;var d=0,e=0,f=0,g=0;e=Sy(b)|0;while(1){if(!e)break;g=c[e+16>>2]|0;f=c[g+176>>2]|0;g=g+172|0;d=0;while(1){if((d|0)>=(f|0))break;a[(c[(c[(c[g>>2]|0)+(d<<2)>>2]|0)+16>>2]|0)+112>>0]=0;d=d+1|0}e=Ty(b,e)|0}return}function Bk(a,b){a=a|0;b=b|0;var d=0,e=0.0,f=0.0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;q=l;l=l+16|0;o=q;j=c[b+24>>2]|0;Ck(a);k=(j|0)==-1;m=b+8|0;i=k^1;n=c[15686]|0;f=1797693134862315708145274.0e284;g=0;while(1){if(!(k|(g|0)<(j|0)))break;d=Sy(a)|0;while(1){if(!d)break;c[(c[d+16>>2]|0)+232>>2]=0;d=Ty(a,d)|0}yj(a);e=+Dk(a);h[m>>3]=e;if(0){h[o>>3]=e;g1(n,87387,o)|0;e=+h[m>>3]}if(!(!(e<=+h[b>>3])&(!(f<=e)|i))){p=9;break}Ek(a);f=e;g=g+1|0}if((p|0)==9){p=b+20|0;c[b+16>>2]=c[p>>2];c[p>>2]=g}yj(a);Fk(a);Gk();h[m>>3]=+Dk(a);l=q;return}function Ck(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,i=0,j=0,k=0,l=0.0,m=0.0,n=0;c[45982]=vH((ay(a)|0)*24|0)|0;c[45981]=0;b=Sy(a)|0;while(1){if(!b)break;c[(c[b+16>>2]|0)+120>>2]=-1;b=Ty(a,b)|0}i=Sy(a)|0;while(1){if(!i)break;j=i+16|0;do if(!(c[(c[j>>2]|0)+216>>2]|0)){f=uH(4)|0;g=c[45982]|0;k=c[45981]|0;c[g+(k*24|0)>>2]=f;c[f>>2]=i;c[g+(k*24|0)+4>>2]=1;j=c[j>>2]|0;h[g+(k*24|0)+8>>3]=+h[j+32>>3];h[g+(k*24|0)+16>>3]=+h[j+40>>3];c[j+120>>2]=k;c[45981]=k+1}else{g=SL(i)|0;k=g+16|0;b=c[k>>2]|0;d=c[b+120>>2]|0;if((d|0)>-1){g=c[45982]|0;f=c[g+(d*24|0)>>2]|0;e=g+(d*24|0)+4|0;k=c[e>>2]|0;c[e>>2]=k+1;c[f+(k<<2)>>2]=i;k=c[j>>2]|0;j=g+(d*24|0)+8|0;h[j>>3]=+h[j>>3]+ +h[k+32>>3];j=g+(d*24|0)+16|0;l=+h[j>>3];m=+h[k+40>>3];h[j>>3]=l>2]=d;break}d=uH(c[b+216>>2]<<2)|0;e=c[45982]|0;f=c[45981]|0;b=e+(f*24|0)|0;c[b>>2]=d;c[d>>2]=g;if((g|0)==(i|0)){h[e+(f*24|0)+8>>3]=+h[(c[k>>2]|0)+32>>3];d=1;b=i}else{c[(c[b>>2]|0)+4>>2]=i;n=c[k>>2]|0;b=c[j>>2]|0;h[e+(f*24|0)+8>>3]=+h[b+32>>3]+ +h[n+32>>3];d=2;b=+h[n+40>>3]<+h[b+40>>3]?i:g}c[e+(f*24|0)+4>>2]=d;h[e+(f*24|0)+16>>3]=+h[(c[b+16>>2]|0)+40>>3];c[(c[k>>2]|0)+120>>2]=f;c[(c[j>>2]|0)+120>>2]=f;c[45981]=f+1}while(0);i=Ty(a,i)|0}return}function Dk(a){a=a|0;var b=0.0,d=0.0,e=0,f=0,g=0,i=0.0,j=0.0;Fk(a);g=c[45979]|0;e=c[a+16>>2]|0;b=+(O(c[e+252>>2]|0,g+-1|0)|0);f=c[45980]|0;e=e+248|0;a=0;d=0.0;while(1){if((a|0)>=(g|0))break;i=+h[f+(a*40|0)+24>>3]+ +(O(c[e>>2]|0,c[f+(a*40|0)+16>>2]|0)|0);j=+h[f+(a*40|0)+32>>3]+b;a=a+1|0;b=j;d=d=(ay(a)|0))break;c[(c[45983]|0)+(b<<2)>>2]=b;b=b+1|0}Fk(a);Hk(a);Ik(a);return}function Fk(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,i=0,j=0.0,k=0,l=0;c[45979]=0;b=c[45980]|0;if(b|0){e=0;while(1){if((e|0)>=(c[45981]|0))break;d=c[b+(e*40|0)+4>>2]|0;if(d){D_(d);b=c[45980]|0}d=c[b+(e*40|0)+8>>2]|0;if(d){D_(d);b=c[45980]|0}e=e+1|0}D_(b)}c[45980]=uH((c[45981]|0)*40|0)|0;b=0;while(1){d=c[45981]|0;if((b|0)>=(d|0))break;k=uH(d<<2)|0;c[(c[45980]|0)+(b*40|0)+4>>2]=k;k=uH(c[45981]<<2)|0;l=c[45980]|0;c[l+(b*40|0)+8>>2]=k;c[l+(b*40|0)>>2]=b;c[l+(b*40|0)+12>>2]=0;c[l+(b*40|0)+16>>2]=0;l=l+(b*40|0)+24|0;c[l>>2]=0;c[l+4>>2]=0;c[l+8>>2]=0;c[l+12>>2]=0;b=b+1|0}e=Sy(a)|0;while(1){if(!e)break;d=Ex(a,e)|0;while(1){if(!d)break;i=c[d>>2]|0;f=d+-48|0;g=c[45980]|0;b=c[(c[(c[((i&3|0)==3?d:d+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0;while(1){b=b+1|0;if((b|0)>=(c[(c[(c[((i&3|0)==2?d:f)+40>>2]|0)+16>>2]|0)+232>>2]|0))break;i=g+(b*40|0)+16|0;c[i>>2]=(c[i>>2]|0)+1;i=c[d>>2]|0}d=Gx(a,d)|0}e=Ty(a,e)|0}i=c[45981]|0;k=c[45982]|0;l=c[45980]|0;d=a+16|0;b=0;while(1){if((b|0)>=(i|0))break;e=(c[c[k+(b*24|0)>>2]>>2]|0)+16|0;f=c[(c[e>>2]|0)+232>>2]|0;if((f|0)>=(c[45979]|0))c[45979]=f+1;g=l+(f*40|0)+24|0;j=+h[g>>3];h[g>>3]=j+ +h[k+(b*24|0)+8>>3]*72.0+(j>0.0?+(c[(c[d>>2]|0)+248>>2]|0):0.0);g=l+(f*40|0)+32|0;j=+h[k+(b*24|0)+16>>3]*72.0;if(+h[g>>3]>3]=j;c[(c[l+(f*40|0)+4>>2]|0)+(c[l+(f*40|0)+12>>2]<<2)>>2]=k+(b*24|0);a=l+((c[(c[e>>2]|0)+232>>2]|0)*40|0)+12|0;c[a>>2]=(c[a>>2]|0)+1;b=b+1|0}return}function Gk(){var a=0,b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;k=c[45979]|0;l=c[45980]|0;j=0;b=0;a=0;while(1){if((j|0)>=(k|0))break;d=l+(j*40|0)|0;i=c[l+(j*40|0)+12>>2]|0;e=(b|0)==0;a:do if(i)if(!e){if((c[d>>2]|0)>(a|0)){f=l+(j*40|0)+4|0;d=0;while(1){if((d|0)>=(i|0))break a;g=c[(c[f>>2]|0)+(d<<2)>>2]|0;h=c[g+4>>2]|0;e=0;while(1){if((e|0)>=(h|0))break;m=(c[(c[(c[g>>2]|0)+(e<<2)>>2]|0)+16>>2]|0)+232|0;c[m>>2]=(c[m>>2]|0)-b;e=e+1|0}d=d+1|0}}}else b=0;else{if(e)a=c[d>>2]|0;b=b+1|0}while(0);j=j+1|0}return}function Hk(a){a=a|0;var b=0;b=c[45983]|0;_0(b,ay(a)|0,4,63);return}function Ik(b){b=b|0;var d=0.0,e=0,f=0,g=0,i=0,j=0,k=0,l=0,m=0.0,n=0,o=0,p=0,q=0,r=0.0,s=0;j=c[45979]|0;k=c[45980]|0;g=c[45983]|0;i=0;while(1){if((i|0)>=(j|0)){e=0;d=0.0;break}e=c[g+(i<<2)>>2]|0;f=i+1|0;if((c[k+(e*40|0)+12>>2]|0)<2)i=f;else{l=4;break}}if((l|0)==4)if((j|0)>(f|0))d=+h[k+((c[g+(f<<2)>>2]|0)*40|0)+24>>3];else d=0.0;a:do if((i|0)!=(j|0)){_0(c[k+(e*40|0)+4>>2]|0,c[k+(e*40|0)+12>>2]|0,4,64);g=c[45980]|0;r=+h[g+(e*40|0)+24>>3];r=!(d<=r*.25)&!(d>=r*.75)?d:r*.5;s=c[g+(e*40|0)+12>>2]|0;q=b+16|0;n=0;o=0;d=0.0;f=0;p=0;while(1){if((p|0)>=(f+s|0))break a;do if(!(c[(c[g+(e*40|0)+8>>2]|0)+(p<<2)>>2]|0)){l=c[(c[g+(e*40|0)+4>>2]|0)+(p<<2)>>2]|0;b=l+8|0;m=+h[b>>3]*72.0+d+(d>0.0?+(c[(c[q>>2]|0)+248>>2]|0):0.0);i=(o|0)!=0;if(!(i&!(m<=r))){j=i?n:l;i=i?o:1;d=m;break}j=n+4|0;k=l+4|0;i=0;while(1){if((i|0)<(c[j>>2]|0))g=0;else break;while(1){if((g|0)>=(c[k>>2]|0))break;a[(c[(ph(c[(c[n>>2]|0)+(i<<2)>>2]|0,c[(c[l>>2]|0)+(g<<2)>>2]|0,0)|0)+16>>2]|0)+112>>0]=1;g=g+1|0}i=i+1|0}g=c[45980]|0;c[(c[g+(e*40|0)+8>>2]|0)+(p<<2)>>2]=1;j=g+(e*40|0)+12|0;c[j>>2]=(c[j>>2]|0)+-1;j=g+(e*40|0)+16|0;c[j>>2]=(c[j>>2]|0)+1;j=g+(e*40|0)+24|0;h[j>>3]=+h[b>>3]*-72.0-+(c[(c[q>>2]|0)+248>>2]|0)+ +h[j>>3];j=n;i=o}else{j=n;i=o;f=f+1|0}while(0);n=j;o=i;p=p+1|0}}while(0);return}function Jk(a,b){a=a|0;b=b|0;a=Kk(c[a>>2]|0)|0;b=Kk(c[b>>2]|0)|0;return ((b|0)<(a|0)&1)-((b|0)>(a|0)&1)|0}function Kk(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;f=a+4|0;d=0;b=0;while(1){if((d|0)>=(c[f>>2]|0))break;e=c[(c[a>>2]|0)+(d<<2)>>2]|0;g=ez(e)|0;e=Ex(g,e)|0;while(1){if(!e)break;e=Gx(g,e)|0;b=b+1|0}d=d+1|0}return b|0}function Lk(a,b){a=a|0;b=b|0;var d=0.0,e=0.0,f=0;f=c[45980]|0;e=+h[f+((c[b>>2]|0)*40|0)+24>>3];d=+h[f+((c[a>>2]|0)*40|0)+24>>3];return (e>d&1)-(e>2]|0)+216>>2]=0;b=Ty(a,b)|0}return}function Nk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=l;l=l+32|0;f=g+16|0;e=g+8|0;d=g+20|0;c[d>>2]=5;a=xx(a,96579)|0;if(a|0?(c[e>>2]=g,c[e+4>>2]=d,(N1(a,87402,e)|0)>=1):0)Pw(0,87409,f)|0;c[b+24>>2]=0;c[b+32>>2]=0;l=g;return 0}function Ok(b){b=b|0;var d=0,e=0;d=c[46419]|0;if((((d|0)!=0?(e=yx(b,d)|0,(e|0)!=0):0)?(a[e>>0]|0)!=0:0)?(QL(e)|0)<<24>>24==0:0)b=1;else b=0;return b|0}function Pk(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0;il(a);b=Sy(a)|0;while(1){if(!b)break;d=Ex(a,b)|0;while(1){if(!d)break;do if(((c[(c[d+16>>2]|0)+172>>2]|0)==0?(Ok(d)|0)==0:0)?(e=d+48|0,f=SL(c[((c[d>>2]&3|0)==3?d:e)+40>>2]|0)|0,g=d+-48|0,h=SL(c[((c[d>>2]&3|0)==2?d:g)+40>>2]|0)|0,(f|0)!=(h|0)):0){if((c[(c[f+16>>2]|0)+212>>2]|0)==0?(c[(c[h+16>>2]|0)+212>>2]|0)==0:0){i=fh(f,h)|0;if(!i){ph(f,h,d)|0;break}else{xh(d,i);break}}i=c[d>>2]&3;Qk(a,c[((i|0)==3?d:e)+40>>2]|0,c[((i|0)==2?d:g)+40>>2]|0,d)}while(0);d=Gx(a,d)|0}b=Ty(a,b)|0}return}function Qk(b,d,f,g){b=b|0;d=d|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0;j=c[g>>2]&3;h=c[(c[((j|0)==3?g:g+48|0)+40>>2]|0)+16>>2]|0;i=c[h+212>>2]|0;if(!i)k=0;else k=(c[h+232>>2]|0)-(c[(c[(c[(c[i+16>>2]|0)+264>>2]|0)+16>>2]|0)+232>>2]|0)|0;h=c[(c[((j|0)==2?g:g+-48|0)+40>>2]|0)+16>>2]|0;i=c[h+212>>2]|0;if(!i)h=0;else h=(c[(c[(c[(c[i+16>>2]|0)+264>>2]|0)+16>>2]|0)+232>>2]|0)-(c[h+232>>2]|0)|0;j=g+16|0;k=h+k+(e[(c[j>>2]|0)+170>>1]|0)|0;b=uh(b)|0;a[(c[b+16>>2]|0)+156>>0]=2;i=SL(d)|0;d=SL(f)|0;f=$i(b,i,(k|0)>0?0.0:+(0-k|0),(c[(c[j>>2]|0)+156>>2]|0)*10|0)|0;c[(c[($i(b,d,+(((k|0)>0?k:0)|0),c[(c[j>>2]|0)+156>>2]|0)|0)+16>>2]|0)+116>>2]=g;c[(c[f+16>>2]|0)+116>>2]=g;return}function Rk(a,d,f,g){a=a|0;d=d|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0;j=c[d>>2]&3;i=(j|0)==3?d:d+48|0;j=(j|0)==2?d:d+-48|0;j=c[(c[(c[((c[(c[(c[i+40>>2]|0)+16>>2]|0)+232>>2]|0)>(c[(c[(c[j+40>>2]|0)+16>>2]|0)+232>>2]|0)?i:j)+40>>2]|0)+16>>2]|0)+232>>2]|0;i=d+16|0;d=(c[i>>2]|0)+172|0;if(c[d>>2]|0)qa(87498,87520,148,87529);c[d>>2]=f;h=(g|0)==0;do{d=c[i>>2]|0;if(h)g=c[f+16>>2]|0;else{g=c[f+16>>2]|0;k=g+168|0;b[k>>1]=(e[k>>1]|0)+(e[d+168>>1]|0)}k=g+154|0;b[k>>1]=(e[k>>1]|0)+(e[d+154>>1]|0);g=g+156|0;c[g>>2]=(c[g>>2]|0)+(c[d+156>>2]|0);d=f+-48|0;g=c[((c[f>>2]&3|0)==2?f:d)+40>>2]|0;if((c[(c[g+16>>2]|0)+232>>2]|0)==(j|0))break;Sk(a,g);f=c[c[(c[(c[((c[f>>2]&3|0)==2?f:d)+40>>2]|0)+16>>2]|0)+180>>2]>>2]|0}while((f|0)!=0);return}function Sk(a,b){a=a|0;b=b|0;var d=0.0;d=+((c[(c[a+16>>2]|0)+248>>2]|0)/2|0|0);b=c[b+16>>2]|0;a=b+88|0;h[a>>3]=+h[a>>3]+d;b=b+96|0;h[b>>3]=+h[b>>3]+d;return}function Tk(a,b){a=a|0;b=b|0;var d=0,e=0;if(((((a|0)!=0&(b|0)!=0?(e=c[a>>2]&3,d=c[b>>2]&3,(c[((e|0)==3?a:a+48|0)+40>>2]|0)==(c[((d|0)==3?b:b+48|0)+40>>2]|0)):0)?(c[((e|0)==2?a:a+-48|0)+40>>2]|0)==(c[((d|0)==2?b:b+-48|0)+40>>2]|0):0)?(c[(c[a+16>>2]|0)+96>>2]|0)==(c[(c[b+16>>2]|0)+96>>2]|0):0)?(wj(a,b)|0)!=0:0)a=1;else a=0;return a|0}function Uk(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=b+16|0;d=c[r>>2]|0;c[d+192>>2]=0;c[d+232>>2]=0;il(b);d=1;while(1){e=c[r>>2]|0;if((d|0)>(c[e+180>>2]|0))break;jl(b,c[(c[e+184>>2]|0)+(d<<2)>>2]|0);d=d+1|0}h=Sy(b)|0;while(1){if(!h)break;g=Ex(b,h)|0;while(1){if(!g)break;d=c[g>>2]|0;e=(c[(c[((d&3|0)==2?g:g+-48|0)+40>>2]|0)+16>>2]|0)+160|0;f=a[e>>0]|0;if(f<<24>>24<3){a[e>>0]=f+1<<24>>24;d=c[g>>2]|0}d=(c[(c[((d&3|0)==3?g:g+48|0)+40>>2]|0)+16>>2]|0)+160|0;e=a[d>>0]|0;if(e<<24>>24<3)a[d>>0]=e+1<<24>>24;g=Gx(b,g)|0}h=Ty(b,h)|0}m=Sy(b)|0;while(1){if(!m)break;if((c[(c[m+16>>2]|0)+212>>2]|0)==0?(m|0)==(SL(m)|0):0){qh(b,m);l=(c[r>>2]|0)+232|0;c[l>>2]=(c[l>>2]|0)+1}d=0;l=Ex(b,m)|0;while(1){if(!l)break;k=l+16|0;h=c[k>>2]|0;a:do if(!(c[h+172>>2]|0)){if(Vk(l)|0){if(!(Tk(d,l)|0)){Wk(b,l);d=l;break}e=c[(c[d+16>>2]|0)+172>>2]|0;if(e|0){Rk(b,l,e,0);lh(l);break}k=c[l>>2]&3;if((c[(c[(c[((k|0)==3?l:l+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)!=(c[(c[(c[((k|0)==2?l:l+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0))break;xh(l,d);lh(l);break}if(d){i=c[l>>2]&3;e=l+48|0;f=c[((i|0)==3?l:e)+40>>2]|0;g=c[d>>2]&3;if((f|0)==(c[((g|0)==3?d:d+48|0)+40>>2]|0)?(n=c[((i|0)==2?l:l+-48|0)+40>>2]|0,(n|0)==(c[((g|0)==2?d:d+-48|0)+40>>2]|0)):0){if((c[(c[f+16>>2]|0)+232>>2]|0)==(c[(c[n+16>>2]|0)+232>>2]|0)){xh(l,d);lh(l);break}if(((c[h+96>>2]|0)==0?(o=d+16|0,(c[(c[o>>2]|0)+96>>2]|0)==0):0)?(wj(l,d)|0)!=0:0)if(!(a[191874]|0)){Rk(b,l,c[(c[o>>2]|0)+172>>2]|0,1);lh(l);break}else{a[(c[k>>2]|0)+112>>0]=6;break}else i=e}else i=e}else i=l+48|0;h=c[l>>2]&3;e=c[((h|0)==3?l:i)+40>>2]|0;j=l+-48|0;if((e|0)==(c[((h|0)==2?l:j)+40>>2]|0)){lh(l);d=l;break}e=SL(e)|0;f=SL(c[((c[l>>2]&3|0)==2?l:j)+40>>2]|0)|0;h=c[l>>2]&3;if((c[((h|0)==3?l:i)+40>>2]|0)==(e|0)?(c[((h|0)==2?l:j)+40>>2]|0)==(f|0):0){g=c[(c[e+16>>2]|0)+232>>2]|0;h=c[(c[f+16>>2]|0)+232>>2]|0;if((g|0)==(h|0)){vh(b,l);d=l;break}if((h|0)>(g|0)){Xk(b,e,f,l);d=l;break}e=Rx(b,f,e,0,0)|0;do if(e|0?(p=c[e>>2]&3,q=c[((p|0)==2?e:e+-48|0)+40>>2]|0,(q|0)!=(c[((c[l>>2]&3|0)==2?l:j)+40>>2]|0)):0){f=e+16|0;if(!(c[(c[f>>2]|0)+172>>2]|0))Xk(b,c[((p|0)==3?e:e+48|0)+40>>2]|0,q,e);if((c[(c[k>>2]|0)+96>>2]|0)==0?(c[(c[f>>2]|0)+96>>2]|0)==0:0){if(!(wj(l,e)|0))break;if(!(a[191874]|0)){lh(l);Rk(b,l,c[(c[f>>2]|0)+172>>2]|0,1);break a}else{a[(c[k>>2]|0)+112>>0]=6;a[(c[f>>2]|0)+153>>0]=1;break a}}}while(0);d=c[l>>2]&3;Xk(b,c[((d|0)==2?l:j)+40>>2]|0,c[((d|0)==3?l:i)+40>>2]|0,l);d=l}}else d=l;while(0);l=Gx(b,l)|0}m=Ty(b,m)|0}if((ig(b)|0)!=(b|0)){d=c[(c[r>>2]|0)+216>>2]|0;if(!d)d=vH(4)|0;else d=xH(d,4)|0;r=c[r>>2]|0;c[r+216>>2]=d;c[d>>2]=c[r+192>>2]}return}function Vk(b){b=b|0;var d=0;d=c[b>>2]&3;if((a[(c[(c[((d|0)==3?b:b+48|0)+40>>2]|0)+16>>2]|0)+159>>0]|0)==7)b=1;else b=(a[(c[(c[((d|0)==2?b:b+-48|0)+40>>2]|0)+16>>2]|0)+159>>0]|0)==7&1;return b|0}function Wk(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;f=_k(c[((c[d>>2]&3|0)==3?d:d+48|0)+40>>2]|0)|0;g=_k(c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0)|0;i=(c[(c[f+16>>2]|0)+232>>2]|0)>(c[(c[g+16>>2]|0)+232>>2]|0);e=i?f:g;f=i?g:f;g=f+16|0;i=e+16|0;a:do if((c[(c[g>>2]|0)+212>>2]|0)!=(c[(c[i>>2]|0)+212>>2]|0)){h=fh(f,e)|0;if(h|0){Rk(b,d,h,1);break}if((c[(c[g>>2]|0)+232>>2]|0)!=(c[(c[i>>2]|0)+232>>2]|0)){Xk(b,f,e,d);e=(c[d+16>>2]|0)+172|0;while(1){e=c[e>>2]|0;if(!e)break a;f=e+-48|0;if((c[(c[(c[((c[e>>2]&3|0)==2?e:f)+40>>2]|0)+16>>2]|0)+232>>2]|0)>(c[(c[i>>2]|0)+232>>2]|0))break a;a[(c[e+16>>2]|0)+112>>0]=5;e=c[(c[(c[((c[e>>2]&3|0)==2?e:f)+40>>2]|0)+16>>2]|0)+180>>2]|0}}}while(0);return}function Xk(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;k=e+16|0;f=c[k>>2]|0;if(!(c[f+96>>2]|0))j=-1;else j=((c[(c[d+16>>2]|0)+232>>2]|0)+(c[(c[b+16>>2]|0)+232>>2]|0)|0)/2|0;if(c[f+172>>2]|0)qa(87541,87520,89,87566);i=d+16|0;h=c[(c[b+16>>2]|0)+232>>2]|0;while(1){g=h+1|0;f=c[(c[i>>2]|0)+232>>2]|0;if((h|0)>=(f|0))break;if((g|0)<(f|0)){if((g|0)==(j|0))f=Yk(a,e)|0;else f=Zk(a)|0;c[(c[f+16>>2]|0)+232>>2]=g}else f=d;Ki(ph(b,f,e)|0);h=g;b=f}if(!(c[(c[k>>2]|0)+172>>2]|0))qa(87577,87520,103,87566);else return}function Yk(b,d){b=b|0;d=d|0;var e=0.0,f=0.0,g=0,i=0,j=0.0;i=d+16|0;g=c[(c[i>>2]|0)+96>>2]|0;e=+h[g+24>>3];f=+h[g+32>>3];g=uh(b)|0;d=g+16|0;c[(c[d>>2]|0)+104>>2]=c[(c[i>>2]|0)+96>>2];j=+(c[(c[(fz(g)|0)+16>>2]|0)+248>>2]|0);h[(c[d>>2]|0)+88>>3]=j;if(!(a[(c[i>>2]|0)+114>>0]|0)){b=(c[(c[(fz(b)|0)+16>>2]|0)+116>>2]&1|0)==0;i=c[d>>2]|0;h[i+80>>3]=b?f:e;h[i+96>>3]=b?e:f}return g|0}function Zk(a){a=a|0;var b=0;b=uh(a)|0;Sk(a,b);return b|0}function _k(b){b=b|0;var d=0;d=c[b+16>>2]|0;if((a[d+159>>0]|0)==7)b=c[(c[(c[(c[d+212>>2]|0)+16>>2]|0)+268>>2]|0)+(c[d+232>>2]<<2)>>2]|0;else b=SL(b)|0;return b|0}function $k(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;j=ig(a)|0;h=Sy(a)|0;while(1){if(!h)break;b=Jx(j,h)|0;i=0;while(1){if(!b)break;l=Kx(j,b,h)|0;if(oz(a,b)|0){k=i;b=l;i=k;continue}k=(c[b>>2]&3|0)==2?b:b+-48|0;m=(Tk(i,k)|0)==0;e=c[k>>2]&3;b=c[((e|0)==3?k:k+48|0)+40>>2]|0;d=c[(c[b+16>>2]|0)+232>>2]|0;e=c[((e|0)==2?k:k+-48|0)+40>>2]|0;f=c[(c[e+16>>2]|0)+232>>2]|0;g=(d|0)==(f|0);if(!m){c[(c[k+16>>2]|0)+172>>2]=g?i:0;b=c[(c[i+16>>2]|0)+172>>2]|0;if(!b){m=i;b=l;i=m;continue}Rk(a,k,b,0);mh(k);m=i;b=l;i=m;continue}if(!g)if((f|0)>(d|0)){al(b,e,k);b=l;i=k;continue}else{al(e,b,k);b=l;i=k;continue}b=hh(b,e)|0;if(!b){vh(j,k);b=l;i=k;continue}if((k|0)==(b|0)){m=i;b=l;i=m;continue}mh(k);if(c[(c[k+16>>2]|0)+172>>2]|0){m=i;b=l;i=m;continue}xh(k,b);m=i;b=l;i=m}h=Ty(a,h)|0}return}function al(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;f=bl(a)|0;e=bl(b)|0;cl(f,e,d,c[(c[d+16>>2]|0)+172>>2]|0,(f|0)==(a|0)&(e|0)==(b|0)?1:5);return}function bl(b){b=b|0;var d=0,e=0,f=0;d=c[b+16>>2]|0;e=c[d+212>>2]|0;if((e|0)!=0?(f=c[e+16>>2]|0,(a[f+272>>0]|0)==0):0)b=c[(c[f+268>>2]|0)+(c[d+232>>2]<<2)>>2]|0;return b|0}function cl(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0;n=d+16|0;k=c[(c[n>>2]|0)+232>>2]|0;o=e+16|0;i=c[(c[o>>2]|0)+232>>2]|0;if((i|0)<=(k|0))qa(87602,87630,81,87640);m=c[g>>2]&3;if(!((c[((m|0)==3?g:g+48|0)+40>>2]|0)==(d|0)?(c[((m|0)==2?g:g+-48|0)+40>>2]|0)==(e|0):0))l=5;a:do if((l|0)==5){if((b[(c[g+16>>2]|0)+168>>1]|0)>1){c[(c[f+16>>2]|0)+172>>2]=0;if(((i-k|0)==1?(j=fh(d,e)|0,j|0):0)?wj(f,j)|0:0){xh(f,j);if(a[(c[n>>2]|0)+156>>0]|0)break;if(a[(c[o>>2]|0)+156>>0]|0)break;lh(f);break}m=h&255;h=d;l=c[(c[n>>2]|0)+232>>2]|0;while(1){i=c[(c[o>>2]|0)+232>>2]|0;if((l|0)>=(i|0))break a;if((l|0)<(i+-1|0)){i=ig(d)|0;j=g+-48|0;i=dl(i,c[((c[g>>2]&3|0)==2?g:j)+40>>2]|0)|0;k=g}else{i=e;j=g+-48|0;k=g}a[(c[(ph(h,i,f)|0)+16>>2]|0)+112>>0]=m;n=(c[g+16>>2]|0)+168|0;b[n>>1]=(b[n>>1]|0)+-1<<16>>16;h=i;l=l+1|0;g=c[c[(c[(c[((c[k>>2]&3|0)==2?g:j)+40>>2]|0)+16>>2]|0)+180>>2]>>2]|0}}do if((i-k|0)==1){g=fh(d,e)|0;if(g|0?wj(f,g)|0:0){c[(c[f+16>>2]|0)+172>>2]=g;m=c[g+16>>2]|0;a[m+112>>0]=h;m=m+168|0;b[m>>1]=(b[m>>1]|0)+1<<16>>16;if(a[(c[n>>2]|0)+156>>0]|0)break;if(a[(c[o>>2]|0)+156>>0]|0)break;lh(f);break}c[(c[f+16>>2]|0)+172>>2]=0;g=ph(d,e,f)|0;a[(c[g+16>>2]|0)+112>>0]=h}while(0);i=c[(c[o>>2]|0)+232>>2]|0;if((i-(c[(c[n>>2]|0)+232>>2]|0)|0)>1){if((c[((c[g>>2]&3|0)==3?g:g+48|0)+40>>2]|0)==(d|0))l=i;else{n=f+16|0;c[(c[n>>2]|0)+172>>2]=0;l=ph(d,c[((c[g>>2]&3|0)==2?g:g+-48|0)+40>>2]|0,f)|0;c[(c[n>>2]|0)+172>>2]=l;kh(g);g=l;l=c[(c[o>>2]|0)+232>>2]|0}while(1){i=c[g>>2]&3;j=c[((i|0)==2?g:g+-48|0)+40>>2]|0;k=c[j+16>>2]|0;if((c[k+232>>2]|0)==(l|0))break;g=c[c[k+180>>2]>>2]|0}if((j|0)!=(e|0)){a[(c[(ph(c[((i|0)==3?g:g+48|0)+40>>2]|0,e,f)|0)+16>>2]|0)+112>>0]=h;kh(g)}}}while(0);return}function dl(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=b+16|0;b=c[d>>2]|0;e=c[b+232>>2]|0;el(a,e,c[b+236>>2]|0,2);b=uh(a)|0;d=c[d>>2]|0;f=c[b+16>>2]|0;h[f+88>>3]=+h[d+88>>3];h[f+96>>3]=+h[d+96>>3];c[f+232>>2]=c[d+232>>2];d=(c[d+236>>2]|0)+1|0;c[f+236>>2]=d;c[(c[(c[(c[a+16>>2]|0)+196>>2]|0)+(e<<6)+4>>2]|0)+(d<<2)>>2]=b;return b|0}function el(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;h=a+16|0;f=c[(c[h>>2]|0)+196>>2]|0;i=c[f+(b<<6)+4>>2]|0;a:do if((e|0)<1){d=d-e|0;while(1){g=d+1|0;a=c[f+(b<<6)>>2]|0;if((g|0)>=(a|0))break;a=c[i+(g<<2)>>2]|0;f=d+e|0;c[(c[a+16>>2]|0)+236>>2]=f;c[i+(f<<2)>>2]=a;d=g;f=c[(c[h>>2]|0)+196>>2]|0}g=e+-1|0;d=g+a|0;while(1){if((d|0)>=(a|0))break a;c[i+(d<<2)>>2]=0;f=c[(c[h>>2]|0)+196>>2]|0;d=d+1|0;a=c[f+(b<<6)>>2]|0}}else{g=e+-1|0;a=c[f+(b<<6)>>2]|0;while(1){a=a+-1|0;if((a|0)<=(d|0))break;j=c[i+(a<<2)>>2]|0;f=g+a|0;c[(c[j+16>>2]|0)+236>>2]=f;c[i+(f<<2)>>2]=j}f=e+d|0;a=d;while(1){a=a+1|0;if((a|0)>=(f|0))break;c[i+(a<<2)>>2]=0}a=c[(c[h>>2]|0)+196>>2]|0;f=a;a=c[a+(b<<6)>>2]|0}while(0);c[f+(b<<6)>>2]=g+a;return}function fl(a){a=a|0;var b=0;Uk(a);b=c[a+16>>2]|0;c[b+220>>2]=1;c[c[b+216>>2]>>2]=c[b+192>>2];Hi(a);mi(a,0);gl(a);$k(a);hl(a);return}function gl(d){d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;k=ig(d)|0;l=d+16|0;f=c[l>>2]|0;j=b[f+236>>1]|0;e=j<<16>>16;m=k+16|0;if(j<<16>>16>0)a[(c[(c[m>>2]|0)+196>>2]|0)+(e+-1<<6)+49>>0]=0;j=e;while(1){if((j|0)>(b[f+238>>1]|0))break;i=c[(c[(c[(c[f+268>>2]|0)+(j<<2)>>2]|0)+16>>2]|0)+236>>2]|0;el(k,j,i,c[(c[f+196>>2]|0)+(j<<6)>>2]|0);g=0;h=i;while(1){f=c[l>>2]|0;e=c[f+196>>2]|0;if((g|0)>=(c[e+(j<<6)>>2]|0))break;e=c[(c[e+(j<<6)+4>>2]|0)+(g<<2)>>2]|0;c[(c[(c[(c[m>>2]|0)+196>>2]|0)+(j<<6)+4>>2]|0)+(h<<2)>>2]=e;f=c[e+16>>2]|0;c[f+236>>2]=h;if((a[f+156>>0]|0)==1)c[e+24>>2]=fz(k)|0;sh(d,e);qh(k,e);f=(c[m>>2]|0)+232|0;c[f>>2]=(c[f>>2]|0)+1;g=g+1|0;h=h+1|0}h=c[(c[m>>2]|0)+196>>2]|0;c[e+(j<<6)+4>>2]=(c[h+(j<<6)+4>>2]|0)+(i<<2);a[h+(j<<6)+49>>0]=0;j=j+1|0}e=c[m>>2]|0;if((j|0)<(b[e+238>>1]|0))a[(c[e+196>>2]|0)+(j<<6)+49>>0]=0;a[f+272>>0]=1;return}function hl(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=a+16|0;d=c[i>>2]|0;h=b[d+236>>1]|0;while(1){if((h|0)>(b[d+238>>1]|0))break;f=c[(c[d+268>>2]|0)+(h<<2)>>2]|0;g=f+16|0;while(1){d=c[g>>2]|0;e=c[c[d+180>>2]>>2]|0;if(!e)break;kh(e)}while(1){d=c[c[d+172>>2]>>2]|0;if(!d)break;kh(d);d=c[g>>2]|0}sh(ig(a)|0,f);c[(c[(c[i>>2]|0)+268>>2]|0)+(h<<2)>>2]=0;h=h+1|0;d=c[i>>2]|0}return}function il(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;o=l;l=l+16|0;n=o;f=Sy(b)|0;while(1){if(!f)break;e=f+16|0;d=c[e>>2]|0;if((a[d+159>>0]|0)==7){UL(f);d=c[e>>2]|0}c[d+212>>2]=0;f=Ty(b,f)|0}m=b+16|0;k=1;while(1){d=c[m>>2]|0;if((k|0)>(c[d+180>>2]|0))break;h=c[(c[d+184>>2]|0)+(k<<2)>>2]|0;i=h+16|0;d=Sy(h)|0;a:while(1){if(!d)break;j=Ty(h,d)|0;e=d+16|0;if(a[(c[e>>2]|0)+159>>0]|0){f=ry(d)|0;g=ry(b)|0;c[n>>2]=f;c[n+4>>2]=g;Pw(0,87649,n)|0;dz(h,d)|0;d=j;continue}VL(d,c[(c[i>>2]|0)+264>>2]|0);g=c[e>>2]|0;c[g+212>>2]=h;a[g+159>>0]=7;g=Ex(h,d)|0;while(1){if(!g){d=j;continue a}d=c[(c[g+16>>2]|0)+172>>2]|0;b:do if(d|0)do{e=d+-48|0;f=c[(c[((c[d>>2]&3|0)==2?d:e)+40>>2]|0)+16>>2]|0;if((a[f+156>>0]|0)!=1)break b;c[f+212>>2]=h;d=c[c[(c[(c[((c[d>>2]&3|0)==2?d:e)+40>>2]|0)+16>>2]|0)+180>>2]>>2]|0}while((d|0)!=0);while(0);g=Gx(h,g)|0}}k=k+1|0}l=o;return}function jl(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;k=e+16|0;g=uH((b[(c[k>>2]|0)+238>>1]<<2)+8|0)|0;f=c[k>>2]|0;c[f+268>>2]=g;g=0;h=b[f+236>>1]|0;while(1){if((h|0)>(b[f+238>>1]|0))break;f=uh(d)|0;c[(c[(c[k>>2]|0)+268>>2]|0)+(h<<2)>>2]=f;j=c[f+16>>2]|0;c[j+232>>2]=h;a[j+159>>0]=7;c[j+212>>2]=e;if(g|0){j=(c[(ph(g,f,0)|0)+16>>2]|0)+154|0;b[j>>1]=(b[j>>1]|0)*1e3}g=f;h=h+1|0;f=c[k>>2]|0}j=Sy(e)|0;while(1){f=c[k>>2]|0;if(!j)break;h=(c[(c[f+268>>2]|0)+(c[(c[j+16>>2]|0)+232>>2]<<2)>>2]|0)+16|0;f=(c[h>>2]|0)+216|0;c[f>>2]=(c[f>>2]|0)+1;f=Ex(e,j)|0;while(1){if(!f)break;i=c[f>>2]|0;d=f+-48|0;g=c[(c[(c[((i&3|0)==3?f:f+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0;while(1){if((g|0)>=(c[(c[(c[((i&3|0)==2?f:d)+40>>2]|0)+16>>2]|0)+232>>2]|0))break;i=(c[(c[c[(c[h>>2]|0)+180>>2]>>2]|0)+16>>2]|0)+168|0;b[i>>1]=(b[i>>1]|0)+1<<16>>16;g=g+1|0;i=c[f>>2]|0}f=Gx(e,f)|0}j=Ty(e,j)|0}d=b[f+238>>1]|0;i=f+268|0;f=b[f+236>>1]|0;while(1){if((f|0)>(d|0))break;g=(c[(c[(c[i>>2]|0)+(f<<2)>>2]|0)+16>>2]|0)+216|0;h=c[g>>2]|0;if((h|0)>1)c[g>>2]=h+-1;f=f+1|0}return}function kl(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0;k=(c[(c[e+16>>2]|0)+212>>2]|0)+16|0;e=c[k>>2]|0;j=f+1|0;if((j|0)!=(a[e+273>>0]|0)){i=b[e+236>>1]|0;while(1){h=b[e+238>>1]|0;if((i|0)>(h<<16>>16|0))break;Bi(d,c[(c[e+268>>2]|0)+(i<<2)>>2]|0);i=i+1|0;e=c[k>>2]|0}i=b[e+236>>1]|0;while(1){if((i|0)>(h<<16>>16|0))break;Ci(g,c[(c[e+268>>2]|0)+(i<<2)>>2]|0,f);d=c[k>>2]|0;i=i+1|0;h=b[d+238>>1]|0;e=d}a[e+273>>0]=j}return}function ll(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;h=Sy(b)|0;while(1){if(!h)break;c[(c[h+16>>2]|0)+212>>2]=0;g=Ex(b,h)|0;while(1){if(!g)break;d=c[(c[g+16>>2]|0)+172>>2]|0;a:do if(d|0)do{e=d+-48|0;f=c[(c[((c[d>>2]&3|0)==2?d:e)+40>>2]|0)+16>>2]|0;if((a[f+156>>0]|0)!=1)break a;c[f+212>>2]=0;d=c[c[(c[(c[((c[d>>2]&3|0)==2?d:e)+40>>2]|0)+16>>2]|0)+180>>2]>>2]|0}while((d|0)!=0);while(0);g=Gx(b,g)|0}h=Ty(b,h)|0}ml(b);return}function ml(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;e=b+16|0;d=1;while(1){f=c[e>>2]|0;if((d|0)>(c[f+180>>2]|0))break;ml(c[(c[f+184>>2]|0)+(d<<2)>>2]|0);d=d+1|0}i=Sy(b)|0;while(1){if(!i)break;d=(c[i+16>>2]|0)+212|0;if(!(c[d>>2]|0))c[d>>2]=b;h=Ex(b,i)|0;while(1){if(!h)break;d=c[(c[h+16>>2]|0)+172>>2]|0;a:do if(d|0)do{e=c[d>>2]|0;g=d+-48|0;f=c[(c[((e&3|0)==2?d:g)+40>>2]|0)+16>>2]|0;if((a[f+156>>0]|0)!=1)break a;f=f+212|0;if(!(c[f>>2]|0)){c[f>>2]=b;e=c[d>>2]|0}d=c[c[(c[(c[((e&3|0)==2?d:g)+40>>2]|0)+16>>2]|0)+180>>2]>>2]|0}while((d|0)!=0);while(0);h=Gx(b,h)|0}i=Ty(b,i)|0}return}function nl(a){a=a|0;var b=0,c=0,d=0;d=tM(a)|0;c=Sy(a)|0;while(1){if(!c)break;b=Ex(a,c)|0;while(1){if(!b)break;ol(b,d);b=Gx(a,b)|0}c=Ty(a,c)|0}yw(d)|0;return} +function yH(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0.0,m=0,n=0,q=0,r=0,s=0,t=0,u=0;u=l;l=l+80|0;r=u+40|0;q=u+32|0;n=u+24|0;m=u;s=4;t=C_(40)|0;c[t>>2]=0;f=u+68|0;g=u+64|0;if(0){o=0;ka(62,a|0,f|0,g|0);i=o;o=0;if((i|0)!=0&(p|0)!=0){j=E3(c[i>>2]|0,t|0,s|0)|0;if(!j)bb(i|0,p|0);z=p}else j=-1;if((j|0)!=1){j=c[15686]|0;i=c[f>>2]|0;f=c[g>>2]|0;o=0;c[m>>2]=99176;c[m+4>>2]=i;c[m+8>>2]=f;c[m+12>>2]=d;c[m+16>>2]=b;ca(29,j|0,99132,m|0)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){g=E3(c[f>>2]|0,t|0,s|0)|0;if(!g)bb(f|0,p|0);z=p}else g=-1;if((g|0)!=1){o=0;ha(1);f=o;o=0;if((f|0)!=0&(p|0)!=0){g=E3(c[f>>2]|0,t|0,s|0)|0;if(!g)bb(f|0,p|0);z=p}else g=-1;if((g|0)!=1)j=6;else{f=z;j=15}}else{f=z;j=15}}else{f=z;j=15}}else j=6;do if((j|0)==6){o=0;f=$(27,a|0)|0;g=o;o=0;if((g|0)!=0&(p|0)!=0){i=E3(c[g>>2]|0,t|0,s|0)|0;if(!i)bb(g|0,p|0);z=p}else i=-1;if((i|0)!=1){if(!f){o=0;ha(2);f=o;o=0;if((f|0)!=0&(p|0)!=0){g=E3(c[f>>2]|0,t|0,s|0)|0;if(!g)bb(f|0,p|0);z=p}else g=-1;if((g|0)==1){f=z;j=15;break}}if((d|0)<1){o=0;ha(3);f=o;o=0;if((f|0)!=0&(p|0)!=0){g=E3(c[f>>2]|0,t|0,s|0)|0;if(!g)bb(f|0,p|0);z=p}else g=-1;if((g|0)==1){f=z;j=15;break}f=0;break}else{c[46441]=(e|0)>-1?e:30;t=D3(185768,1,t|0,s|0)|0;s=z;o=0;f=o;o=0;if((f|0)!=0&(p|0)!=0){g=E3(c[f>>2]|0,t|0,s|0)|0;if(!g)bb(f|0,p|0);z=p}else g=-1;if((g|0)==1){f=z;j=15;break}f=0;j=15;break}}else{f=z;j=15}}while(0);a:do if((j|0)==15){b:while(1){if(f|0){f=2;break a}o=0;ha(4);f=o;o=0;if((f|0)!=0&(p|0)!=0){g=E3(c[f>>2]|0,t|0,s|0)|0;if(!g)bb(f|0,p|0);z=p}else g=-1;if((g|0)==1){f=z;j=15;continue}a=c[15686]|0;m=0;while(1){o=0;j=_(2)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){g=E3(c[f>>2]|0,t|0,s|0)|0;if(!g)bb(f|0,p|0);z=p}else g=-1;if((g|0)==1){f=z;j=15;continue b}if(!j)break;o=0;f=$(28,j|0)|0;g=o;o=0;if((g|0)!=0&(p|0)!=0){i=E3(c[g>>2]|0,t|0,s|0)|0;if(!i)bb(g|0,p|0);z=p}else i=-1;if((i|0)==1){f=z;j=15;continue b}o=0;ja(25,j|0,f|0);f=o;o=0;if((f|0)!=0&(p|0)!=0){g=E3(c[f>>2]|0,t|0,s|0)|0;if(!g)bb(f|0,p|0);z=p}else g=-1;if((g|0)==1){f=z;j=15;continue b}m=m+1|0;do if(((m|0)%100|0|0)==0&0!=0){f=(m|0)%1e3|0;if((f|0)==100){o=0;aa(91,99176,a|0)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){g=E3(c[f>>2]|0,t|0,s|0)|0;if(!g)bb(f|0,p|0);z=p}else g=-1;if((g|0)==1){f=z;j=15;continue b}o=0;c[n>>2]=m;ca(29,a|0,99194,n|0)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){g=E3(c[f>>2]|0,t|0,s|0)|0;if(!g)bb(f|0,p|0);z=p}else g=-1;if((g|0)==1){f=z;j=15;continue b}break}o=0;c[q>>2]=m;ca(29,a|0,99194,q|0)|0;g=o;o=0;if((g|0)!=0&(p|0)!=0){i=E3(c[g>>2]|0,t|0,s|0)|0;if(!i)bb(g|0,p|0);z=p}else i=-1;if((i|0)==1){f=z;j=15;continue b}if(!f){o=0;aa(92,10,a|0)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){g=E3(c[f>>2]|0,t|0,s|0)|0;if(!g)bb(f|0,p|0);z=p}else g=-1;if((g|0)==1){f=z;j=15;continue b}}}while(0);if((m|0)>=(d|0))break}switch(b|0){case 1:{o=0;ha(5);f=o;o=0;if((f|0)!=0&(p|0)!=0){g=E3(c[f>>2]|0,t|0,s|0)|0;if(!g)bb(f|0,p|0);z=p}else g=-1;if((g|0)==1){f=z;j=15;continue b}break}case 2:{o=0;ha(6);f=o;o=0;if((f|0)!=0&(p|0)!=0){g=E3(c[f>>2]|0,t|0,s|0)|0;if(!g)bb(f|0,p|0);z=p}else g=-1;if((g|0)==1){f=z;j=15;continue b}break}default:{o=0;ha(7);f=o;o=0;if((f|0)!=0&(p|0)!=0){g=E3(c[f>>2]|0,t|0,s|0)|0;if(!g)bb(f|0,p|0);z=p}else g=-1;if((g|0)==1){f=z;j=15;continue b}o=0;ha(3);f=o;o=0;if((f|0)!=0&(p|0)!=0){g=E3(c[f>>2]|0,t|0,s|0)|0;if(!g)bb(f|0,p|0);z=p}else g=-1;if((g|0)==1){f=z;j=15;continue b}}}if(!0){f=0;break a}if((m|0)>99){o=0;aa(92,10,a|0)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){g=E3(c[f>>2]|0,t|0,s|0)|0;if(!g)bb(f|0,p|0);z=p}else g=-1;if((g|0)==1){f=z;j=15;continue}}f=c[46481]|0;g=c[46482]|0;o=0;k=+X(1);i=o;o=0;if((i|0)!=0&(p|0)!=0){j=E3(c[i>>2]|0,t|0,s|0)|0;if(!j)bb(i|0,p|0);z=p}else j=-1;if((j|0)==1){f=z;j=15;continue}o=0;c[r>>2]=99176;c[r+4>>2]=f;c[r+8>>2]=g;c[r+12>>2]=m;h[r+16>>3]=k;ca(29,a|0,99198,r|0)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){g=E3(c[f>>2]|0,t|0,s|0)|0;if(!g)bb(f|0,p|0);z=p}else g=-1;if((g|0)==1){f=z;j=15}else break}f=0}while(0);D_(t|0);l=u;return f|0}function zH(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;a=(c[a+16>>2]|0)+192|0;e=0;h=0;while(1){a=c[a>>2]|0;if(!a)break;g=c[a+16>>2]|0;f=c[g+180>>2]|0;a=0;while(1){if(!(c[f+(a<<2)>>2]|0))break;a=a+1|0;e=e+1|0}a=g+164|0;h=h+1|0}c[b>>2]=h;c[d>>2]=e;return}function AH(b){b=b|0;var d=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;c[46484]=b;c[46491]=0;c[46482]=0;c[46481]=0;i=b+16|0;b=(c[i>>2]|0)+192|0;h=0;f=0;while(1){b=c[b>>2]|0;if(!b)break;g=c[b+16>>2]|0;a[g+157>>0]=0;h=h+1|0;c[46481]=h;d=c[g+180>>2]|0;b=0;while(1){if(!(c[d+(b<<2)>>2]|0))break;k=f+1|0;c[46482]=k;b=b+1|0;f=k}b=g+164|0}b=c[46492]|0;if(!b)b=vH(h<<2)|0;else b=xH(b,h<<2)|0;c[46492]=b;c[46493]=0;b=c[46486]|0;if(!b)b=vH(c[46481]<<2)|0;else b=xH(b,c[46481]<<2)|0;c[46486]=b;c[46485]=0;d=1;b=(c[i>>2]|0)+192|0;while(1){b=c[b>>2]|0;if(!b)break;k=b+16|0;i=c[k>>2]|0;j=i+292|0;c[j>>2]=0;i=c[i+172>>2]|0;h=d;g=0;b=0;while(1){d=c[i+(g<<2)>>2]|0;if(!d)break;f=b+1|0;c[j>>2]=f;b=c[d+16>>2]|0;c[b+160>>2]=0;c[b+164>>2]=-1;if(!h)b=0;else{l=c[d>>2]&3;b=((c[(c[(c[((l|0)==2?d:d+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(c[(c[(c[((l|0)==3?d:d+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)|0)<(e[b+170>>1]|0|0)?0:h}h=b;g=g+1|0;b=f}b=uH((g<<2)+4|0)|0;d=c[k>>2]|0;c[d+264>>2]=b;c[d+268>>2]=0;d=c[d+180>>2]|0;b=0;do{l=b;b=b+1|0}while((c[d+(l<<2)>>2]|0)!=0);d=uH(b<<2)|0;b=c[k>>2]|0;c[b+272>>2]=d;c[b+276>>2]=0;d=h;b=b+164|0}return d|0}function BH(){var a=0,b=0,d=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;o=l;l=l+16|0;n=o+8|0;k=o;m=GL(c[46481]|0)|0;a=(c[(c[46484]|0)+16>>2]|0)+192|0;while(1){b=c[a>>2]|0;if(!b){j=0;break}d=b+16|0;a=c[d>>2]|0;if(!(c[a+292>>2]|0)){IL(m,b);a=c[d>>2]|0}a=a+164|0}while(1){a=JL(m)|0;if(!a)break;i=a+16|0;a=c[i>>2]|0;f=a+232|0;c[f>>2]=0;d=c[a+172>>2]|0;b=0;h=0;while(1){g=c[d+(b<<2)>>2]|0;if(!g){f=0;break}g=(c[(c[(c[((c[g>>2]&3|0)==3?g:g+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)+(e[(c[g+16>>2]|0)+170>>1]|0)|0;g=(h|0)>(g|0)?h:g;c[f>>2]=g;b=b+1|0;h=g}while(1){b=c[(c[a+180>>2]|0)+(f<<2)>>2]|0;if(!b)break;d=b+-48|0;g=(c[(c[((c[b>>2]&3|0)==2?b:d)+40>>2]|0)+16>>2]|0)+292|0;h=c[g>>2]|0;c[g>>2]=h+-1;if((h|0)<2){IL(m,c[((c[b>>2]&3|0)==2?b:d)+40>>2]|0);a=c[i>>2]|0}f=f+1|0}j=j+1|0}a:do if((j|0)!=(c[46481]|0)){Pw(1,99530,k)|0;a=(c[(c[46484]|0)+16>>2]|0)+192|0;while(1){b=c[a>>2]|0;if(!b)break a;d=b+16|0;a=c[d>>2]|0;if(c[a+292>>2]|0){k=ry(b)|0;a=c[(c[d>>2]|0)+292>>2]|0;c[n>>2]=k;c[n+4>>2]=a;Pw(3,99552,n)|0;a=c[d>>2]|0}a=a+164|0}}while(0);HL(m);l=o;return}function CH(){var b=0,d=0,e=0;b=(c[(c[46484]|0)+16>>2]|0)+192|0;while(1){b=c[b>>2]|0;if(!b)break;e=b+16|0;b=c[e>>2]|0;d=c[b+264>>2]|0;if(d){D_(d);b=c[e>>2]|0}d=c[b+272>>2]|0;if(d){D_(d);b=c[e>>2]|0}a[b+157>>0]=0;b=b+164|0}return}function DH(){var a=0,b=0,d=0,e=0,f=0;a=(c[(c[46484]|0)+16>>2]|0)+192|0;while(1){a=c[a>>2]|0;if(!a)break;a=c[a+16>>2]|0;c[a+280>>2]=0;a=a+164|0}f=uH(c[46481]<<2)|0;e=0;a=(c[(c[46484]|0)+16>>2]|0)+192|0;while(1){b=c[a>>2]|0;if(!b)break;d=b+16|0;a=c[d>>2]|0;if(!(c[a+280>>2]|0)){c[f+(e<<2)>>2]=QH(b)|0;b=e+1|0;a=c[d>>2]|0}else b=e;e=b;a=a+164|0}a=RH(f,e)|0;while(1){if((SH(a)|0)<=1)break;WH(a,c[(VH(UH(TH(a)|0)|0)|0)+8>>2]|0)}D_(a);a=0;while(1){if((a|0)>=(e|0))break;D_(c[f+(a<<2)>>2]|0);a=a+1|0}D_(f);if((c[46485]|0)==((c[46481]|0)+-1|0)){XH();return}else qa(99275,99305,523,99310)}function EH(){var a=0,b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;i=c[46491]|0;f=c[46485]|0;j=c[46486]|0;k=c[46441]|0;b=0;a=0;g=i;while(1){if((g|0)>=(f|0)){h=8;break}e=c[j+(g<<2)>>2]|0;d=c[(c[e+16>>2]|0)+160>>2]|0;if((d|0)<0){if(!a)a=e;else a=(c[(c[a+16>>2]|0)+160>>2]|0)>(d|0)?e:a;b=b+1|0;if((b|0)>=(k|0))break}e=g+1|0;c[46491]=e;g=e}if((h|0)==8)if((i|0)>0){f=0;while(1){if((f|0)>=(i|0))break;d=c[j+(f<<2)>>2]|0;e=c[(c[d+16>>2]|0)+160>>2]|0;if((e|0)<0){if(!a)a=d;else a=(c[(c[a+16>>2]|0)+160>>2]|0)>(e|0)?d:a;b=b+1|0;if((b|0)>=(k|0))break}f=f+1|0}c[46491]=f}return a|0}function FH(a){a=a|0;var b=0,d=0;b=c[a>>2]&3;d=c[((b|0)==3?a:a+48|0)+40>>2]|0;a=c[((b|0)==2?a:a+-48|0)+40>>2]|0;b=(c[(c[d+16>>2]|0)+288>>2]|0)<(c[(c[a+16>>2]|0)+288>>2]|0);a=b?d:a;c[46487]=0;c[46488]=2147483647;d=c[a+16>>2]|0;c[46489]=c[d+284>>2];c[46490]=c[d+288>>2];if(b)PH(a);else OH(a);return c[46487]|0}function GH(a,b){a=a|0;b=b|0;var d=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;o=l;l=l+16|0;n=o;g=c[b>>2]&3;m=b+-48|0;j=b+48|0;k=b+16|0;g=(c[(c[(c[((g|0)==2?b:m)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(c[(c[(c[((g|0)==3?b:j)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(e[(c[k>>2]|0)+170>>1]|0)|0;do if((g|0)>0){d=c[a>>2]&3;h=c[((d|0)==3?a:a+48|0)+40>>2]|0;i=c[h+16>>2]|0;if(((c[i+276>>2]|0)+(c[i+268>>2]|0)|0)==1){KH(h,g);break}d=c[((d|0)==2?a:a+-48|0)+40>>2]|0;f=c[d+16>>2]|0;if(((c[f+276>>2]|0)+(c[f+268>>2]|0)|0)==1){KH(d,0-g|0);break}if((c[i+288>>2]|0)<(c[f+288>>2]|0)){KH(h,g);break}else{KH(d,0-g|0);break}}while(0);d=a+16|0;f=c[(c[d>>2]|0)+160>>2]|0;g=c[b>>2]&3;g=LH(c[((g|0)==3?b:j)+40>>2]|0,c[((g|0)==2?b:m)+40>>2]|0,f,1)|0;i=c[b>>2]&3;if((LH(c[((i|0)==2?b:m)+40>>2]|0,c[((i|0)==3?b:j)+40>>2]|0,f,0)|0)==(g|0)){c[(c[k>>2]|0)+160>>2]=0-f;c[(c[d>>2]|0)+160>>2]=0;MH(a,b);n=c[g+16>>2]|0;NH(g,c[n+280>>2]|0,c[n+284>>2]|0)|0;l=o;return}else{Pw(1,99236,n)|0;bb(185768,1)}}function HH(){var b=0,d=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;JH();m=uH((c[46483]<<2)+4|0)|0;d=c[46483]|0;b=0;while(1){if((b|0)>(d|0))break;c[m+(b<<2)>>2]=0;b=b+1|0}b=(c[(c[46484]|0)+16>>2]|0)+192|0;d=b;while(1){d=c[d>>2]|0;if(!d)break;d=c[d+16>>2]|0;if(!(a[d+156>>0]|0)){l=m+(c[d+232>>2]<<2)|0;c[l>>2]=(c[l>>2]|0)+1}d=d+164|0}while(1){b=c[b>>2]|0;if(!b)break;l=b+16|0;b=c[l>>2]|0;if(!(a[b+156>>0]|0)){h=c[46483]|0;f=c[b+172>>2]|0;k=0;j=0;d=0;while(1){g=c[f+(d<<2)>>2]|0;if(!g)break;n=c[g+16>>2]|0;i=(c[(c[(c[((c[g>>2]&3|0)==3?g:g+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)+(e[n+170>>1]|0)|0;k=(c[n+156>>2]|0)+k|0;j=(j|0)>(i|0)?j:i;d=d+1|0}g=c[b+180>>2]|0;i=0;d=0;while(1){f=c[g+(d<<2)>>2]|0;if(!f)break;o=c[f+16>>2]|0;n=(c[(c[(c[((c[f>>2]&3|0)==2?f:f+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(e[o+170>>1]|0)|0;i=(c[o+156>>2]|0)+i|0;h=(h|0)<(n|0)?h:n;d=d+1|0}d=(j|0)>0?j:0;if((k|0)==(i|0)){g=d;f=d;while(1){d=f+1|0;if((f|0)>=(h|0))break;g=(c[m+(d<<2)>>2]|0)<(c[m+(g<<2)>>2]|0)?d:g;f=d}o=b+232|0;n=m+(c[o>>2]<<2)|0;c[n>>2]=(c[n>>2]|0)+-1;n=m+(g<<2)|0;c[n>>2]=(c[n>>2]|0)+1;c[o>>2]=g}d=c[b+264>>2]|0;if(d){D_(d);b=c[l>>2]|0}d=c[b+272>>2]|0;if(d){D_(d);b=c[l>>2]|0}a[b+157>>0]=0}b=b+164|0}D_(m);return}function IH(){var a=0,b=0,d=0,f=0,g=0,h=0;b=0;while(1){if((b|0)>=(c[46485]|0))break;a=c[(c[46486]|0)+(b<<2)>>2]|0;do if(((c[(c[a+16>>2]|0)+160>>2]|0)==0?(d=FH(a)|0,d|0):0)?(f=c[d>>2]&3,f=(c[(c[(c[((f|0)==2?d:d+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(c[(c[(c[((f|0)==3?d:d+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(e[(c[d+16>>2]|0)+170>>1]|0)|0,(f|0)>=2):0){h=c[a>>2]&3;g=c[((h|0)==3?a:a+48|0)+40>>2]|0;a=c[((h|0)==2?a:a+-48|0)+40>>2]|0;if((c[(c[g+16>>2]|0)+288>>2]|0)<(c[(c[a+16>>2]|0)+288>>2]|0)){KH(g,f>>>1);break}else{KH(a,(f|0)/-2|0);break}}while(0);b=b+1|0}CH();return}function JH(){var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;i=l;l=l+16|0;h=i;c[h>>2]=0;c[h>>2]=2147483647;c[46483]=-2147483647;b=(c[(c[46484]|0)+16>>2]|0)+192|0;e=b;g=2147483647;f=-2147483647;while(1){d=c[e>>2]|0;if(!d)break;e=c[d+16>>2]|0;if(!(a[e+156>>0]|0)){j=c[e+232>>2]|0;d=(g|0)<(j|0)?g:j;c[h>>2]=d;f=(f|0)>(j|0)?f:j;c[46483]=f}else d=g;e=e+164|0;g=d}if(g|0){while(1){b=c[b>>2]|0;if(!b)break;b=c[b+16>>2]|0;j=b+232|0;c[j>>2]=(c[j>>2]|0)-g;b=b+164|0}c[46483]=f-g;c[h>>2]=0}l=i;return}function KH(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=a+16|0;a=c[f>>2]|0;e=a+232|0;c[e>>2]=(c[e>>2]|0)-b;e=0;while(1){d=c[(c[a+272>>2]|0)+(e<<2)>>2]|0;if(!d){e=0;break}if((d|0)!=(c[a+280>>2]|0)){KH(c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0,b);a=c[f>>2]|0}e=e+1|0}while(1){d=c[(c[a+264>>2]|0)+(e<<2)>>2]|0;if(!d)break;if((d|0)!=(c[a+280>>2]|0)){KH(c[((c[d>>2]&3|0)==3?d:d+48|0)+40>>2]|0,b);a=c[f>>2]|0}e=e+1|0}return}function LH(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;g=(e|0)==0&1;h=0-d|0;f=c[(c[b+16>>2]|0)+288>>2]|0;b=a;while(1){a=c[b+16>>2]|0;if((c[a+284>>2]|0)<=(f|0)?(f|0)<=(c[a+288>>2]|0):0)break;a=c[a+280>>2]|0;i=a+48|0;j=(c[a+16>>2]|0)+160|0;c[j>>2]=(((b|0)==(c[((c[a>>2]&3|0)==3?a:i)+40>>2]|0)?e:g)|0?d:h)+(c[j>>2]|0);j=c[a>>2]&3;i=c[((j|0)==3?a:i)+40>>2]|0;a=c[((j|0)==2?a:a+-48|0)+40>>2]|0;b=(c[(c[i+16>>2]|0)+288>>2]|0)>(c[(c[a+16>>2]|0)+288>>2]|0)?i:a}return b|0}function MH(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;i=a+16|0;e=(c[i>>2]|0)+164|0;c[(c[b+16>>2]|0)+164>>2]=c[e>>2];c[(c[46486]|0)+(c[e>>2]<<2)>>2]=b;c[(c[i>>2]|0)+164>>2]=-1;i=(c[((c[a>>2]&3|0)==3?a:a+48|0)+40>>2]|0)+16|0;e=c[i>>2]|0;g=e+276|0;f=c[g>>2]|0;j=f+-1|0;c[g>>2]=j;g=e+272|0;h=0;while(1){if((h|0)>=(f|0)){k=3;break}d=c[g>>2]|0;if((c[d+(h<<2)>>2]|0)==(a|0))break;h=h+1|0}if((k|0)==3)d=c[e+272>>2]|0;c[d+(h<<2)>>2]=c[d+(j<<2)>>2];c[(c[(c[i>>2]|0)+272>>2]|0)+(j<<2)>>2]=0;i=(c[((c[a>>2]&3|0)==2?a:a+-48|0)+40>>2]|0)+16|0;e=c[i>>2]|0;g=e+268|0;f=c[g>>2]|0;j=f+-1|0;c[g>>2]=j;g=e+264|0;h=0;while(1){if((h|0)>=(f|0)){k=8;break}d=c[g>>2]|0;if((c[d+(h<<2)>>2]|0)==(a|0))break;h=h+1|0}if((k|0)==8)d=c[e+264>>2]|0;c[d+(h<<2)>>2]=c[d+(j<<2)>>2];c[(c[(c[i>>2]|0)+264>>2]|0)+(j<<2)>>2]=0;k=(c[((c[b>>2]&3|0)==3?b:b+48|0)+40>>2]|0)+16|0;a=c[k>>2]|0;j=c[a+272>>2]|0;a=a+276|0;i=c[a>>2]|0;c[a>>2]=i+1;c[j+(i<<2)>>2]=b;k=c[k>>2]|0;c[(c[k+272>>2]|0)+(c[k+276>>2]<<2)>>2]=0;k=(c[((c[b>>2]&3|0)==2?b:b+-48|0)+40>>2]|0)+16|0;i=c[k>>2]|0;j=c[i+264>>2]|0;i=i+268|0;a=c[i>>2]|0;c[i>>2]=a+1;c[j+(a<<2)>>2]=b;k=c[k>>2]|0;c[(c[k+264>>2]|0)+(c[k+268>>2]<<2)>>2]=0;return}function NH(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;g=a+16|0;a=c[g>>2]|0;c[a+280>>2]=b;c[a+284>>2]=d;f=0;while(1){e=c[(c[a+272>>2]|0)+(f<<2)>>2]|0;if(!e){f=0;break}if((e|0)!=(b|0)){d=NH(c[((c[e>>2]&3|0)==2?e:e+-48|0)+40>>2]|0,e,d)|0;a=c[g>>2]|0}f=f+1|0}while(1){e=c[(c[a+264>>2]|0)+(f<<2)>>2]|0;if(!e)break;if((e|0)!=(b|0)){d=NH(c[((c[e>>2]&3|0)==3?e:e+48|0)+40>>2]|0,e,d)|0;a=c[g>>2]|0}f=f+1|0}c[a+288>>2]=d;return d+1|0}function OH(a){a=a|0;var b=0,d=0,f=0,g=0,h=0,i=0,j=0;i=a+16|0;g=0;while(1){a=c[i>>2]|0;d=c[(c[a+180>>2]|0)+(g<<2)>>2]|0;if(!d){d=0;break}f=c[d+16>>2]|0;if((c[f+164>>2]|0)<0){a=c[d>>2]&3;b=c[(c[((a|0)==2?d:d+-48|0)+40>>2]|0)+16>>2]|0;j=c[b+288>>2]|0;if((c[46489]|0)>(j|0)|(j|0)>(c[46490]|0)?(h=(c[b+232>>2]|0)-(c[(c[(c[((a|0)==3?d:d+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(e[f+170>>1]|0)|0,(h|0)<(c[46488]|0)|(c[46487]|0)==0):0){c[46487]=d;c[46488]=h}}else{b=c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0;if((c[(c[b+16>>2]|0)+288>>2]|0)<(c[a+288>>2]|0))OH(b)}g=g+1|0}while(1){b=c[(c[a+264>>2]|0)+(d<<2)>>2]|0;if(!((b|0)!=0&(c[46488]|0)>0))break;b=c[((c[b>>2]&3|0)==3?b:b+48|0)+40>>2]|0;if((c[(c[b+16>>2]|0)+288>>2]|0)<(c[a+288>>2]|0)){OH(b);a=c[i>>2]|0}d=d+1|0}return}function PH(a){a=a|0;var b=0,d=0,f=0,g=0,h=0,i=0,j=0;i=a+16|0;g=0;while(1){a=c[i>>2]|0;d=c[(c[a+172>>2]|0)+(g<<2)>>2]|0;if(!d){d=0;break}f=c[d+16>>2]|0;if((c[f+164>>2]|0)<0){a=c[d>>2]&3;b=c[(c[((a|0)==3?d:d+48|0)+40>>2]|0)+16>>2]|0;j=c[b+288>>2]|0;if((c[46489]|0)>(j|0)|(j|0)>(c[46490]|0)?(h=(c[(c[(c[((a|0)==2?d:d+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(c[b+232>>2]|0)-(e[f+170>>1]|0)|0,(h|0)<(c[46488]|0)|(c[46487]|0)==0):0){c[46487]=d;c[46488]=h}}else{b=c[((c[d>>2]&3|0)==3?d:d+48|0)+40>>2]|0;if((c[(c[b+16>>2]|0)+288>>2]|0)<(c[a+288>>2]|0))PH(b)}g=g+1|0}while(1){b=c[(c[a+272>>2]|0)+(d<<2)>>2]|0;if(!((b|0)!=0&(c[46488]|0)>0))break;b=c[((c[b>>2]&3|0)==2?b:b+-48|0)+40>>2]|0;if((c[(c[b+16>>2]|0)+288>>2]|0)<(c[a+288>>2]|0)){PH(b);a=c[i>>2]|0}d=d+1|0}return}function QH(a){a=a|0;var b=0;b=uH(16)|0;c[b>>2]=a;c[b+4>>2]=eI(a,b)|0;c[b+12>>2]=b;return b|0}function RH(a,b){a=a|0;b=b|0;var d=0,e=0;e=uH(8)|0;c[e>>2]=a;c[e+4>>2]=b;d=0;while(1){if((d|0)>=(b|0))break;c[(c[a+(d<<2)>>2]|0)+8>>2]=d;d=d+1|0}d=(b|0)/2|0;while(1){if((d|0)<=-1)break;WH(e,d);d=d+-1|0}return e|0}function SH(a){a=a|0;return c[a+4>>2]|0}function TH(a){a=a|0;var b=0,d=0,e=0,f=0;f=c[a>>2]|0;b=c[f>>2]|0;c[b+8>>2]=-1;d=a+4|0;e=(c[d>>2]|0)+-1|0;c[f>>2]=c[f+(e<<2)>>2];f=c[a>>2]|0;c[(c[f>>2]|0)+8>>2]=0;c[f+(e<<2)>>2]=b;c[d>>2]=e;WH(a,0);return b|0}function UH(a){a=a|0;return dI(c[a>>2]|0,0,0)|0}function VH(a){a=a|0;var b=0,d=0,f=0,g=0,h=0,i=0;b=a+16|0;if((c[(c[b>>2]|0)+164>>2]|0)>-1)qa(99324,99305,463,99338);g=a+48|0;d=$H(c[((c[a>>2]&3|0)==3?a:g)+40>>2]|0)|0;i=a+-48|0;f=$H(c[((c[a>>2]&3|0)==2?a:i)+40>>2]|0)|0;h=c[a>>2]&3;b=(c[(c[(c[((h|0)==2?a:i)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(c[(c[(c[((h|0)==3?a:g)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(e[(c[b>>2]|0)+170>>1]|0)|0;if((c[d+8>>2]|0)==-1)aI(c[d>>2]|0,0,b);else aI(c[f>>2]|0,0,0-b|0);bI(a);return cI(d,f)|0}function WH(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;h=c[a>>2]|0;g=c[a+4>>2]|0;while(1){a=b<<1;f=a+2|0;a=a|1;if(!((a|0)<(g|0)?(c[(c[h+(a<<2)>>2]|0)+4>>2]|0)<(c[(c[h+(b<<2)>>2]|0)+4>>2]|0):0))a=b;if((f|0)>=(g|0))break;d=h+(f<<2)|0;e=c[d>>2]|0;if((f|0)==(b|0)?1:(c[e+4>>2]|0)>=(c[(c[h+(a<<2)>>2]|0)+4>>2]|0))break;i=h+(b<<2)|0;a=c[i>>2]|0;c[i>>2]=e;c[d>>2]=a;c[(c[i>>2]|0)+8>>2]=b;c[a+8>>2]=f;b=f}return}function XH(){NH(c[(c[(c[46484]|0)+16>>2]|0)+192>>2]|0,0,1)|0;YH(c[(c[(c[46484]|0)+16>>2]|0)+192>>2]|0,0);return}function YH(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=a+16|0;d=0;while(1){a=c[f>>2]|0;e=c[(c[a+272>>2]|0)+(d<<2)>>2]|0;if(!e){e=0;break}if((e|0)!=(b|0))YH(c[((c[e>>2]&3|0)==2?e:e+-48|0)+40>>2]|0,e);d=d+1|0}while(1){d=c[(c[a+264>>2]|0)+(e<<2)>>2]|0;if(!d)break;if((d|0)!=(b|0)){YH(c[((c[d>>2]&3|0)==3?d:d+48|0)+40>>2]|0,d);a=c[f>>2]|0}e=e+1|0}if(b|0)ZH(b);return}function ZH(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0;b=c[a>>2]&3;d=c[((b|0)==3?a:a+48|0)+40>>2]|0;e=c[d+16>>2]|0;if((c[e+280>>2]|0)==(a|0))i=1;else{e=c[((b|0)==2?a:a+-48|0)+40>>2]|0;i=-1;d=e;e=c[e+16>>2]|0}g=c[e+180>>2]|0;b=0;f=0;while(1){h=c[g+(f<<2)>>2]|0;if(!h)break;b=(_H(h,d,i)|0)+b|0;f=f+1|0}g=c[e+172>>2]|0;e=0;while(1){f=c[g+(e<<2)>>2]|0;if(!f)break;b=(_H(f,d,i)|0)+b|0;e=e+1|0}c[(c[a+16>>2]|0)+160>>2]=b;return}function _H(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;h=c[a>>2]&3;i=(h|0)==3?a:a+48|0;e=c[i+40>>2]|0;if((e|0)==(b|0))e=c[((h|0)==2?a:a+-48|0)+40>>2]|0;g=c[b+16>>2]|0;f=c[(c[e+16>>2]|0)+288>>2]|0;if((c[g+284>>2]|0)<=(f|0)?(f|0)<=(c[g+288>>2]|0):0){f=c[a+16>>2]|0;if((c[f+164>>2]|0)>-1)e=c[f+160>>2]|0;else e=0;g=1;e=e-(c[f+156>>2]|0)|0}else{g=0;e=c[(c[a+16>>2]|0)+156>>2]|0}i=(c[((d|0)>0?((h|0)==2?a:a+-48|0):i)+40>>2]|0)==(b|0)?1:-1;return (((g?i:0-i|0)|0)<0?0-e|0:e)|0}function $H(a){a=a|0;var b=0,d=0;a=c[(c[a+16>>2]|0)+280>>2]|0;while(1){b=a+12|0;d=c[b>>2]|0;if(!((d|0)!=(a|0)&(d|0)!=0))break;a=c[d+12>>2]|0;if(!a){a=d;continue}c[b>>2]=a}return a|0}function aI(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=a+16|0;e=c[h>>2]|0;g=e+232|0;c[g>>2]=(c[g>>2]|0)+d;g=0;while(1){f=c[(c[e+264>>2]|0)+(g<<2)>>2]|0;if(!f){g=0;break}f=c[((c[f>>2]&3|0)==3?f:f+48|0)+40>>2]|0;if((f|0)!=(b|0)){aI(f,a,d);e=c[h>>2]|0}g=g+1|0}while(1){f=c[(c[e+272>>2]|0)+(g<<2)>>2]|0;if(!f)break;f=c[((c[f>>2]&3|0)==2?f:f+-48|0)+40>>2]|0;if((f|0)!=(b|0)){aI(f,a,d);e=c[h>>2]|0}g=g+1|0}return}function bI(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;h=l;l=l+32|0;d=(c[b+16>>2]|0)+164|0;if((c[d>>2]|0)>-1){Pw(1,99427,h)|0;bb(185768,1)}g=c[46485]|0;c[d>>2]=g;d=c[46486]|0;c[46485]=g+1;c[d+(g<<2)>>2]=b;d=c[b>>2]|0;g=b+48|0;e=c[((d&3|0)==3?b:g)+40>>2]|0;if(!(a[(c[e+16>>2]|0)+157>>0]|0)){f=c[46492]|0;d=c[46493]|0;c[46493]=d+1;c[f+(d<<2)>>2]=e;d=c[b>>2]|0}f=b+-48|0;e=c[((d&3|0)==2?b:f)+40>>2]|0;if(!(a[(c[e+16>>2]|0)+157>>0]|0)){i=c[46492]|0;d=c[46493]|0;c[46493]=d+1;c[i+(d<<2)>>2]=e;d=c[b>>2]|0}i=(c[((d&3|0)==3?b:g)+40>>2]|0)+16|0;d=c[i>>2]|0;a[d+157>>0]=1;e=c[d+272>>2]|0;d=d+276|0;g=c[d>>2]|0;c[d>>2]=g+1;c[e+(g<<2)>>2]=b;g=c[i>>2]|0;c[(c[g+272>>2]|0)+(c[g+276>>2]<<2)>>2]=0;i=c[i>>2]|0;if(!(c[(c[i+180>>2]|0)+((c[i+276>>2]|0)+-1<<2)>>2]|0)){Pw(1,99461,h+8|0)|0;bb(185768,1)}i=(c[((c[b>>2]&3|0)==2?b:f)+40>>2]|0)+16|0;e=c[i>>2]|0;a[e+157>>0]=1;f=c[e+264>>2]|0;e=e+268|0;g=c[e>>2]|0;c[e>>2]=g+1;c[f+(g<<2)>>2]=b;b=c[i>>2]|0;c[(c[b+264>>2]|0)+(c[b+268>>2]<<2)>>2]=0;i=c[i>>2]|0;if(!(c[(c[i+172>>2]|0)+((c[i+268>>2]|0)+-1<<2)>>2]|0)){Pw(1,99496,h+16|0)|0;bb(185768,1)}else{l=h;return}}function cI(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;while(1){g=a+12|0;d=c[g>>2]|0;if((d|0)==0|(d|0)==(a|0))break;else a=d}while(1){f=b+12|0;d=c[f>>2]|0;if((d|0)==0|(d|0)==(b|0))break;else b=d}if((a|0)!=(b|0)){e=c[a+8>>2]|0;d=c[b+8>>2]|0;do if((e|0)>-1)if((d|0)==-1)h=a;else j=10;else if((d|0)>-1)if((e|0)==-1){h=b;break}else{j=10;break}else qa(99350,99305,327,99397);while(0);if((j|0)==10)h=(c[b+4>>2]|0)<(c[a+4>>2]|0)?a:b;c[f>>2]=h;c[g>>2]=h;c[h+4>>2]=(c[b+4>>2]|0)+(c[a+4>>2]|0);if((c[h+8>>2]|0)>-1)i=h;else qa(99408,99305,335,99397)}else i=a;return i|0}function dI(a,b,d){a=a|0;b=b|0;d=d|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;l=$H(a)|0;if(d){k=c[d>>2]&3;if(((c[(c[(c[((k|0)==2?d:d+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(c[(c[(c[((k|0)==3?d:d+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)|0)!=(e[(c[d+16>>2]|0)+170>>1]|0|0))f=3}else{d=0;f=3}a:do if((f|0)==3){k=a+16|0;j=0;while(1){f=c[k>>2]|0;i=c[(c[f+180>>2]|0)+(j<<2)>>2]|0;if(!i){j=0;break}f=i+16|0;g=i+-48|0;h=c[((c[i>>2]&3|0)==2?i:g)+40>>2]|0;do if((c[(c[f>>2]|0)+164>>2]|0)>-1){if((h|0)!=(b|0))d=dI(h,a,d)|0}else if(($H(h)|0)!=(l|0)){if(d|0?(m=c[i>>2]&3,h=c[d>>2]&3,((c[(c[(c[((m|0)==2?i:g)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(c[(c[(c[((m|0)==3?i:i+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(e[(c[f>>2]|0)+170>>1]|0)|0)>=((c[(c[(c[((h|0)==2?d:d+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(c[(c[(c[((h|0)==3?d:d+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(e[(c[d+16>>2]|0)+170>>1]|0)|0)):0)break;d=i}while(0);j=j+1|0}while(1){f=c[(c[f+172>>2]|0)+(j<<2)>>2]|0;if(!f)break a;g=f+16|0;h=f+48|0;i=c[((c[f>>2]&3|0)==3?f:h)+40>>2]|0;do if((c[(c[g>>2]|0)+164>>2]|0)>-1){if((i|0)!=(b|0))d=dI(i,a,d)|0}else if(($H(i)|0)!=(l|0)){if(d|0?(i=c[f>>2]&3,m=c[d>>2]&3,((c[(c[(c[((i|0)==2?f:f+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(c[(c[(c[((i|0)==3?f:h)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(e[(c[g>>2]|0)+170>>1]|0)|0)>=((c[(c[(c[((m|0)==2?d:d+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(c[(c[(c[((m|0)==3?d:d+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(e[(c[d+16>>2]|0)+170>>1]|0)|0)):0)break;d=f}while(0);j=j+1|0;f=c[k>>2]|0}}while(0);return d|0}function eI(a,b){a=a|0;b=b|0;var d=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;l=a+16|0;d=c[l>>2]|0;c[d+280>>2]=b;a=1;h=0;while(1){g=c[(c[d+172>>2]|0)+(h<<2)>>2]|0;if(!g){h=0;break}f=c[g+16>>2]|0;if(((c[f+164>>2]|0)<=-1?(i=c[g>>2]&3,j=g+48|0,k=c[(c[((i|0)==3?g:j)+40>>2]|0)+16>>2]|0,(c[k+280>>2]|0)==0):0)?((c[(c[(c[((i|0)==2?g:g+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(c[k+232>>2]|0)|0)==(e[f+170>>1]|0|0):0){bI(g);a=(eI(c[((c[g>>2]&3|0)==3?g:j)+40>>2]|0,b)|0)+a|0;d=c[l>>2]|0}h=h+1|0}while(1){f=c[(c[d+180>>2]|0)+(h<<2)>>2]|0;if(!f)break;g=c[f+16>>2]|0;if(((c[g+164>>2]|0)<=-1?(m=c[f>>2]&3,n=f+-48|0,o=c[(c[((m|0)==2?f:n)+40>>2]|0)+16>>2]|0,(c[o+280>>2]|0)==0):0)?((c[o+232>>2]|0)-(c[(c[(c[((m|0)==3?f:f+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)|0)==(e[g+170>>1]|0|0):0){bI(f);a=(eI(c[((c[f>>2]&3|0)==2?f:n)+40>>2]|0,b)|0)+a|0;d=c[l>>2]|0}h=h+1|0}return a|0}function fI(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;d=xx(a,99560)|0;if(!d)d=30;else d=a2(d)|0;return yH(a,b,c,d)|0}function gI(a){a=+a;return +((c[46369]|0)==0?a:+h[22916]-a)}function hI(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0,t=0.0,u=0;r=l;l=l+16|0;q=r;c[46494]=c[(c[(c[d+64>>2]|0)+8>>2]|0)+4>>2];iI(d);i=c[d+16>>2]|0;t=+h[i+32>>3];s=+h[i+40>>3];jI(e,99571,+h[b+352>>3]);jI(e,99578,t*.013888888888888888);jI(e,99578,s*.013888888888888888);kI(e);i=Sy(d)|0;while(1){if(!i)break;g=i+16|0;if(!(a[(c[g>>2]|0)+118>>0]|0)){lI(e,99580,JA(ry(i)|0)|0);p=(c[g>>2]|0)+16|0;c[q>>2]=c[p>>2];c[q+4>>2]=c[p+4>>2];c[q+8>>2]=c[p+8>>2];c[q+12>>2]=c[p+12>>2];mI(e,q);if(!(a[(c[(c[g>>2]|0)+104>>2]|0)+82>>0]|0)){b=ez(i)|0;b=nI(b,c[c[(c[g>>2]|0)+104>>2]>>2]|0)|0}else b=JA(yx(i,c[46384]|0)|0)|0;jI(e,99578,+h[(c[g>>2]|0)+32>>3]);jI(e,99578,+h[(c[g>>2]|0)+40>>3]);lI(e,99578,b);lI(e,99578,OL(i,c[46387]|0,108041)|0);lI(e,99578,c[c[(c[g>>2]|0)+8>>2]>>2]|0);lI(e,99578,OL(i,c[46378]|0,134232)|0);b=OL(i,c[46379]|0,191979)|0;if(!(a[b>>0]|0))b=OL(i,c[46378]|0,131718)|0;lI(e,99578,b);kI(e)}i=Ty(d,i)|0}o=f<<24>>24==0;n=Sy(d)|0;while(1){if(!n)break;m=Ex(d,n)|0;while(1){if(!m)break;if(o){f=191979;j=191979}else{j=xx(m,108373)|0;f=xx(m,108382)|0;f=f|0?f:191979;j=j|0?j:191979}p=m+16|0;b=c[p>>2]|0;k=c[b+8>>2]|0;a:do if(k){i=c[k+4>>2]|0;b=0;g=0;while(1){if((b|0)>=(i|0))break;u=(c[(c[k>>2]|0)+(b*48|0)+4>>2]|0)+g|0;b=b+1|0;g=u}lI(e,0,108368);oI(e,c[((c[m>>2]&3|0)==3?m:m+48|0)+40>>2]|0,j);oI(e,c[((c[m>>2]&3|0)==2?m:m+-48|0)+40>>2]|0,f);pI(e,g);f=0;while(1){b=c[p>>2]|0;g=c[b+8>>2]|0;if((f|0)>=(c[g+4>>2]|0))break a;i=c[g>>2]|0;g=c[i+(f*48|0)>>2]|0;i=c[i+(f*48|0)+4>>2]|0;b=0;while(1){if((b|0)>=(i|0))break;u=g+(b<<4)|0;c[q>>2]=c[u>>2];c[q+4>>2]=c[u+4>>2];c[q+8>>2]=c[u+8>>2];c[q+12>>2]=c[u+12>>2];mI(e,q);b=b+1|0}f=f+1|0}}while(0);if(c[b+96>>2]|0){u=ez(c[((c[m>>2]&3|0)==3?m:m+48|0)+40>>2]|0)|0;lI(e,99578,nI(u,c[c[(c[p>>2]|0)+96>>2]>>2]|0)|0);u=(c[(c[p>>2]|0)+96>>2]|0)+56|0;c[q>>2]=c[u>>2];c[q+4>>2]=c[u+4>>2];c[q+8>>2]=c[u+8>>2];c[q+12>>2]=c[u+12>>2];mI(e,q)}lI(e,99578,OL(m,c[46415]|0,108041)|0);lI(e,99578,OL(m,c[46406]|0,134232)|0);kI(e);m=Gx(d,m)|0}n=Ty(d,n)|0}qI(99586,e);l=r;return}function iI(a){a=a|0;var b=0.0;if(c[46369]|0){a=c[a+16>>2]|0;b=+h[a+24>>3]+ +h[a+40>>3];h[22916]=b;h[22917]=b*.013888888888888888}return}function jI(a,b,c){a=a|0;b=b|0;c=+c;var d=0,e=0,f=0;f=l;l=l+1040|0;e=f;d=f+8|0;if(b|0)qI(b,a);h[e>>3]=c;Y0(d,99592,e)|0;qI(d,a);l=f;return}function kI(b){b=b|0;a[191875]=10;lb[c[46494]&127](b,191875)|0;return}function lI(a,b,c){a=a|0;b=b|0;c=c|0;if(b|0)qI(b,a);qI(c,a);return}function mI(a,b){a=a|0;b=b|0;var d=0.0;jI(a,99578,+h[b>>3]*.013888888888888888);if(!(c[46369]|0))d=+h[b+8>>3];else d=+h[22916]-+h[b+8>>3];jI(a,99578,d*.013888888888888888);return}function nI(a,b){a=a|0;b=b|0;var c=0;c=Oz(a,b)|0;b=JA(c)|0;Qz(a,c)|0;return b|0}function oI(b,d,e){b=b|0;d=d|0;e=e|0;var f=0;if(!(a[(c[d+16>>2]|0)+118>>0]|0))d=JA(ry(d)|0)|0;else{f=ez(d)|0;d=nI(f,(A$(ry(d)|0,58)|0)+1|0)|0}lI(b,99578,d);if(e|0?a[e>>0]|0:0)lI(b,104958,JA(e)|0);return}function pI(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+1040|0;f=d;e=d+8|0;qI(99578,a);c[f>>2]=b;Y0(e,134313,f)|0;qI(e,a);l=d;return}function qI(a,b){a=a|0;b=b|0;lb[c[46494]&127](b,a)|0;return}function rI(d,f,g){d=d|0;f=f|0;g=g|0;var i=0,j=0,k=0,m=0.0,n=0,o=0.0,p=0,q=0.0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0;Y=l;l=l+2288|0;W=Y+208|0;V=Y+192|0;U=Y+176|0;T=Y+160|0;S=Y+144|0;R=Y+128|0;P=Y+112|0;O=Y+96|0;N=Y+80|0;M=Y+64|0;L=Y+56|0;K=Y+48|0;X=Y+32|0;Q=Y+24|0;J=Y;G=Y+1264|0;H=Y+224|0;I=d+16|0;C=(e[(c[I>>2]|0)+178>>1]|0)>2;CG(1);iI(d);Tw(H,1024,Y+240|0);LM(d,1,99597,191979)|0;LM(d,1,99601,191979)|0;c[46376]=LM(d,1,138034,191979)|0;c[46375]=LM(d,1,137966,191979)|0;LM(d,2,99597,191979)|0;i=a[(c[I>>2]|0)+113>>0]|0;if(i&16){LM(d,1,99607,191979)|0;i=a[(c[I>>2]|0)+113>>0]|0}if(i&1){LM(d,2,99611,191979)|0;i=a[(c[I>>2]|0)+113>>0]|0}if(i&32){LM(d,2,99607,191979)|0;i=a[(c[I>>2]|0)+113>>0]|0}if(i&2){LM(d,2,99614,191979)|0;i=a[(c[I>>2]|0)+113>>0]|0}if(i&4){LM(d,2,99622,191979)|0;i=a[(c[I>>2]|0)+113>>0]|0}if(!(i&8)){v=0;w=0;x=0}else{x=LM(d,0,99611,191979)|0;w=LM(d,0,99630,191979)|0;v=LM(d,0,99637,191979)|0}z=LM(d,0,99645,191979)|0;A=H+4|0;B=H+8|0;u=0;i=0;y=Sy(d)|0;while(1){if(!y)break;t=y+16|0;k=c[t>>2]|0;o=+h[k+16>>3];j=(c[46369]|0)==0;if(C){if(j)m=+h[k+24>>3];else m=+h[22916]-+h[k+24>>3];q=+h[(c[k+132>>2]|0)+16>>3]*72.0;h[J>>3]=o;h[J+8>>3]=m;h[J+16>>3]=q;Y0(G,99648,J)|0;Ww(H,G)|0;j=3;while(1){if((j|0)>=(e[(c[I>>2]|0)+178>>1]|0))break;h[Q>>3]=+h[(c[(c[t>>2]|0)+132>>2]|0)+(j<<3)>>3]*72.0;Y0(G,99663,Q)|0;Ww(H,G)|0;j=j+1|0}j=c[A>>2]|0;if(j>>>0>=(c[B>>2]|0)>>>0){Uw(H,1)|0;j=c[A>>2]|0}a[j>>0]=0;s=c[H>>2]|0;c[A>>2]=s;zx(y,99597,s)|0;s=y}else{if(j)m=+h[k+24>>3];else m=+h[22916]-+h[k+24>>3];h[X>>3]=o;h[X+8>>3]=m;Y0(G,99669,X)|0;zx(y,99597,G)|0;s=y}h[K>>3]=+h[(c[t>>2]|0)+80>>3]*.013888888888888888;Y0(G,99592,K)|0;rx(s,c[46375]|0,G)|0;j=c[t>>2]|0;h[L>>3]=(+h[j+96>>3]+ +h[j+88>>3])*.013888888888888888;Y0(G,99592,L)|0;rx(s,c[46376]|0,G)|0;j=c[t>>2]|0;k=c[j+108>>2]|0;if((k|0)!=0?(a[k+81>>0]|0)!=0:0){q=+h[k+64>>3];q=(c[46369]|0)==0?q:+h[22916]-q;h[M>>3]=+h[k+56>>3];h[M+8>>3]=q;Y0(G,99669,M)|0;zx(s,99607,G)|0;j=c[t>>2]|0}if(b$(c[c[j+8>>2]>>2]|0,103194)|0){if(c[46400]|0?(UJ(y)|0)<<24>>24:0){k=c[(c[t>>2]|0)+12>>2]|0;r=k+8|0;j=c[r>>2]|0;if((j|0)<3){j=xx(s,99679)|0;if(!j)j=8;else j=a2(j)|0;j=(j|0)<3?8:j}p=k+44|0;q=1.0/+(j|0);n=0;while(1){if((n|0)>=(j|0))break;if((n|0)>0){k=c[A>>2]|0;if(k>>>0>=(c[B>>2]|0)>>>0){Uw(H,1)|0;k=c[A>>2]|0}c[A>>2]=k+1;a[k>>0]=32}if((c[r>>2]|0)>2){k=c[p>>2]|0;if(!(c[46369]|0))m=+h[k+(n<<4)+8>>3]*.013888888888888888;else m=+h[22917]-+h[k+(n<<4)+8>>3]*.013888888888888888;h[N>>3]=+h[k+(n<<4)>>3]*.013888888888888888;h[N+8>>3]=m;Y0(G,99692,N)|0}else{k=c[t>>2]|0;m=q*+(n|0)*6.283185307179586;o=+h[k+32>>3]*.5*+E(+m);if(!(c[46369]|0))m=+h[k+40>>3]*.5*+F(+m);else m=+h[22917]-+h[k+40>>3]*.5*+F(+m);h[O>>3]=o;h[O+8>>3]=m;Y0(G,99692,O)|0}Ww(H,G)|0;n=n+1|0}k=c[46400]|0;j=c[A>>2]|0;if(j>>>0>=(c[B>>2]|0)>>>0){Uw(H,1)|0;j=c[A>>2]|0}a[j>>0]=0;t=c[H>>2]|0;c[A>>2]=t;rx(s,k,t)|0}}else{sI(y,c[j+12>>2]|0,H);Yw(H)|0;j=c[A>>2]|0;if(j>>>0>=(c[B>>2]|0)>>>0){Uw(H,1)|0;j=c[A>>2]|0}a[j>>0]=0;t=c[H>>2]|0;c[A>>2]=t;zx(s,99601,t)|0}a:do if((c[46367]|0)>0){t=Ex(d,y)|0;j=u;while(1){if(!t)break a;s=t+16|0;k=c[s>>2]|0;do if((a[k+112>>0]|0)!=6?(D=c[k+8>>2]|0,(D|0)!=0):0){r=0;k=D;while(1){if((r|0)>=(c[k+4>>2]|0))break;if((r|0)>0){k=c[A>>2]|0;if(k>>>0>=(c[B>>2]|0)>>>0){Uw(H,1)|0;k=c[A>>2]|0}c[A>>2]=k+1;a[k>>0]=59;k=c[(c[s>>2]|0)+8>>2]|0}k=c[k>>2]|0;if(c[k+(r*48|0)+8>>2]|0){if(!(c[46369]|0))m=+h[k+(r*48|0)+24>>3];else m=+h[22916]-+h[k+(r*48|0)+24>>3];h[P>>3]=+h[k+(r*48|0)+16>>3];h[P+8>>3]=m;Y0(G,99702,P)|0;Ww(H,G)|0;i=1;k=c[c[(c[s>>2]|0)+8>>2]>>2]|0}if(c[k+(r*48|0)+12>>2]|0){if(!(c[46369]|0))m=+h[k+(r*48|0)+40>>3];else m=+h[22916]-+h[k+(r*48|0)+40>>3];h[R>>3]=+h[k+(r*48|0)+32>>3];h[R+8>>3]=m;Y0(G,99715,R)|0;Ww(H,G)|0;j=1}p=0;while(1){k=c[(c[s>>2]|0)+8>>2]|0;n=c[k>>2]|0;if((p|0)>=(c[n+(r*48|0)+4>>2]|0))break;if((p|0)>0){k=c[A>>2]|0;if(k>>>0>=(c[B>>2]|0)>>>0){Uw(H,1)|0;k=c[A>>2]|0}c[A>>2]=k+1;a[k>>0]=32;k=c[c[(c[s>>2]|0)+8>>2]>>2]|0}else k=n;u=c[k+(r*48|0)>>2]|0;q=+h[u+(p<<4)+8>>3];q=(c[46369]|0)==0?q:+h[22916]-q;h[S>>3]=+h[u+(p<<4)>>3];h[S+8>>3]=q;Y0(G,99669,S)|0;Ww(H,G)|0;p=p+1|0}r=r+1|0}k=c[A>>2]|0;if(k>>>0>=(c[B>>2]|0)>>>0){Uw(H,1)|0;k=c[A>>2]|0}a[k>>0]=0;k=c[H>>2]|0;c[A>>2]=k;zx(t,99597,k)|0;k=c[s>>2]|0;n=c[k+96>>2]|0;if(n){q=+h[n+64>>3];q=(c[46369]|0)==0?q:+h[22916]-q;h[T>>3]=+h[n+56>>3];h[T+8>>3]=q;Y0(G,99669,T)|0;zx(t,99611,G)|0;k=c[s>>2]|0}n=c[k+108>>2]|0;do if(n){if(!(a[n+81>>0]|0))break;q=+h[n+64>>3];q=(c[46369]|0)==0?q:+h[22916]-q;h[U>>3]=+h[n+56>>3];h[U+8>>3]=q;Y0(G,99669,U)|0;zx(t,99607,G)|0;k=c[s>>2]|0}while(0);n=c[k+100>>2]|0;if(n){q=+h[n+64>>3];q=(c[46369]|0)==0?q:+h[22916]-q;h[V>>3]=+h[n+56>>3];h[V+8>>3]=q;Y0(G,99669,V)|0;zx(t,99614,G)|0;k=c[s>>2]|0}k=c[k+104>>2]|0;if(!k)break;q=+h[k+64>>3];q=(c[46369]|0)==0?q:+h[22916]-q;h[W>>3]=+h[k+56>>3];h[W+8>>3]=q;Y0(G,99669,W)|0;zx(t,99622,G)|0}while(0);t=Gx(d,t)|0}}else j=u;while(0);u=j;y=Ty(d,y)|0}tI(d,z,x,w,v);Xw(H);if(b[(c[I>>2]|0)+136>>1]&1)FM(d);c[f>>2]=i;c[g>>2]=u;CG(0);l=Y;return}function sI(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0.0,g=0.0,i=0.0,j=0,k=0,m=0,n=0,o=0.0;n=l;l=l+1056|0;k=n;j=n+32|0;m=b+48|0;if(!(c[m>>2]|0)){e=c[a+16>>2]|0;i=+h[e+16>>3];if(!(c[46369]|0)){g=+h[e+24>>3];f=g+ +h[b+24>>3];g=g+ +h[b+40>>3]}else{g=+h[e+24>>3];f=+h[22916]-+h[b+24>>3]-g;g=+h[22916]-+h[b+40>>3]-g}o=i+ +h[b+32>>3];h[k>>3]=i+ +h[b+16>>3];h[k+8>>3]=f;h[k+16>>3]=o;h[k+24>>3]=g;Y0(j,99753,k)|0;Ww(d,j)|0}b=b+56|0;e=0;while(1){if((e|0)>=(c[m>>2]|0))break;sI(a,c[(c[b>>2]|0)+(e<<2)>>2]|0,d);e=e+1|0}l=n;return}function tI(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0,j=0,k=0.0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0,t=0.0;s=l;l=l+1088|0;o=s+56|0;q=s+48|0;p=s+32|0;j=s;n=s+64|0;r=b+16|0;i=c[r>>2]|0;if(!(c[46369]|0)){k=+h[i+24>>3];m=+h[i+40>>3]}else{m=+h[22916];k=m-+h[i+24>>3];m=m-+h[i+40>>3]}t=+h[i+32>>3];h[j>>3]=+h[i+16>>3];h[j+8>>3]=k;h[j+16>>3]=t;h[j+24>>3]=m;Y0(n,99728,j)|0;rx(b,d,n)|0;i=c[(c[r>>2]|0)+12>>2]|0;if((i|0)!=0?(a[c[i>>2]>>0]|0)!=0:0){t=+h[i+64>>3];t=(c[46369]|0)==0?t:+h[22916]-t;h[p>>3]=+h[i+56>>3];h[p+8>>3]=t;Y0(n,99669,p)|0;rx(b,e,n)|0;i=c[(c[r>>2]|0)+12>>2]|0;t=+h[i+32>>3];h[q>>3]=+h[i+24>>3]*.013888888888888888;Y0(n,99748,q)|0;rx(b,f,n)|0;h[o>>3]=t*.013888888888888888;Y0(n,99748,o)|0;rx(b,g,n)|0;i=1}else i=1;while(1){j=c[r>>2]|0;if((i|0)>(c[j+180>>2]|0))break;tI(c[(c[j+184>>2]|0)+(i<<2)>>2]|0,d,e,f,g);i=i+1|0}l=s;return}function uI(a){a=a|0;var b=0;b=l;l=l+16|0;rI(a,b,b+4|0);l=b;return}function vI(){return Cw(20636,c[4555]|0)|0}function wI(a,b,c){a=a|0;b=b|0;c=c|0;D_(b);return}function xI(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;a=c[b>>2]|0;e=c[d>>2]|0;if((a|0)<=(e|0))if((a|0)<(e|0))a=-1;else{b=c[b+4>>2]|0;d=c[d+4>>2]|0;return ((b|0)>(d|0)?1:((b|0)<(d|0))<<31>>31)|0}else a=1;return a|0}function yI(a){a=a|0;yw(a)|0;return}function zI(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;c[e>>2]=c[b>>2];c[e+4>>2]=c[b+4>>2];b=AI(e)|0;if((nb[c[a>>2]&63](a,b,1)|0)!=(b|0))D_(b);l=d;return}function AI(a){a=a|0;var b=0,d=0,e=0;b=uH(16)|0;e=a;d=c[e+4>>2]|0;a=b+8|0;c[a>>2]=c[e>>2];c[a+4>>2]=d;return b|0}function BI(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=l;l=l+16|0;f=e+8|0;g=e;c[g>>2]=b;c[g+4>>2]=d;c[f>>2]=c[g>>2];c[f+4>>2]=c[g+4>>2];b=AI(f)|0;if((nb[c[a>>2]&63](a,b,1)|0)!=(b|0))D_(b);l=e;return}function CI(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=l;l=l+16|0;e=d;g=b;f=c[g+4>>2]|0;b=e+8|0;c[b>>2]=c[g>>2];c[b+4>>2]=f;b=(nb[c[a>>2]&63](a,e,4)|0)!=0&1;l=d;return b|0}function DI(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=l;l=l+16|0;f=e;c[f+8>>2]=b;c[f+12>>2]=d;d=(nb[c[a>>2]&63](a,f,4)|0)!=0&1;l=e;return d|0}function EI(a){a=a|0;return Ew(a)|0}function FI(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;d=uH((Ew(a)|0)<<3)|0;b=d;a=Aw(a)|0;while(1){if(!a)break;g=a+8|0;f=c[g+4>>2]|0;e=b;c[e>>2]=c[g>>2];c[e+4>>2]=f;b=b+8|0;a=c[a>>2]|0}return d|0}function GI(){var a=0,b=0,d=0,e=0;a=vH(40)|0;b=a;d=20672;e=b+36|0;do{c[b>>2]=c[d>>2];b=b+4|0;d=d+4|0}while((b|0)<(e|0));c[a+36>>2]=0;return Cw(a,c[4555]|0)|0}function HI(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;d=d+36|0;a=c[d>>2]|0;if(!a)a=vH(20)|0;else c[d>>2]=c[a>>2];f=b+8|0;e=c[f+4>>2]|0;d=a+8|0;c[d>>2]=c[f>>2];c[d+4>>2]=e;c[a+16>>2]=c[b+16>>2];return a|0}function II(a,b,d){a=a|0;b=b|0;d=d|0;d=d+36|0;c[b>>2]=c[d>>2];c[d>>2]=b;return}function JI(a){a=a|0;nb[c[a>>2]&63](a,0,64)|0;return}function KI(a){a=a|0;var b=0,d=0;b=c[a+4>>2]|0;yw(a)|0;a=c[b+36>>2]|0;while(1){if(!a)break;d=c[a>>2]|0;D_(a);a=d}D_(b);return}function LI(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=l;l=l+32|0;g=f;c[g+8>>2]=b;c[g+12>>2]=d;c[g+16>>2]=e;e=c[(nb[c[a>>2]&63](a,g,1)|0)+16>>2]|0;l=f;return e|0}function MI(a,b){a=a|0;b=b|0;var d=0,e=0.0,f=0.0,g=0.0,i=0.0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=l;l=l+160|0;q=t+144|0;d=t+48|0;j=t+128|0;k=t+112|0;m=t+96|0;n=t+80|0;o=t+32|0;p=t+16|0;r=t;s=a+16|0;a=c[s>>2]|0;e=+h[a+16>>3];f=+h[a+24>>3];g=+h[a+32>>3];i=+h[a+40>>3];if((b+-1|0)>>>0<2){NI(j,e,i);c[q>>2]=c[j>>2];c[q+4>>2]=c[j+4>>2];c[q+8>>2]=c[j+8>>2];c[q+12>>2]=c[j+12>>2];OI(d,q);p=d+16|0;NI(k,g,f);c[q>>2]=c[k>>2];c[q+4>>2]=c[k+4>>2];c[q+8>>2]=c[k+8>>2];c[q+12>>2]=c[k+12>>2];OI(m,q);c[p>>2]=c[m>>2];c[p+4>>2]=c[m+4>>2];c[p+8>>2]=c[m+8>>2];c[p+12>>2]=c[m+12>>2]}else{NI(n,e,f);c[q>>2]=c[n>>2];c[q+4>>2]=c[n+4>>2];c[q+8>>2]=c[n+8>>2];c[q+12>>2]=c[n+12>>2];OI(d,q);n=d+16|0;NI(o,g,i);c[q>>2]=c[o>>2];c[q+4>>2]=c[o+4>>2];c[q+8>>2]=c[o+8>>2];c[q+12>>2]=c[o+12>>2];OI(p,q);c[n>>2]=c[p>>2];c[n+4>>2]=c[p+4>>2];c[n+8>>2]=c[p+8>>2];c[n+12>>2]=c[p+12>>2]}a=(c[s>>2]|0)+16|0;c[a>>2]=c[d>>2];c[a+4>>2]=c[d+4>>2];c[a+8>>2]=c[d+8>>2];c[a+12>>2]=c[d+12>>2];c[a+16>>2]=c[d+16>>2];c[a+20>>2]=c[d+20>>2];c[a+24>>2]=c[d+24>>2];c[a+28>>2]=c[d+28>>2];a=c[(c[s>>2]|0)+12>>2]|0;if(!a)a=1;else{a=a+56|0;c[q>>2]=c[a>>2];c[q+4>>2]=c[a+4>>2];c[q+8>>2]=c[a+8>>2];c[q+12>>2]=c[a+12>>2];OI(r,q);c[a>>2]=c[r>>2];c[a+4>>2]=c[r+4>>2];c[a+8>>2]=c[r+8>>2];c[a+12>>2]=c[r+12>>2];a=1}while(1){d=c[s>>2]|0;if((a|0)>(c[d+180>>2]|0))break;MI(c[(c[d+184>>2]|0)+(a<<2)>>2]|0,b);a=a+1|0}l=t;return}function NI(a,b,c){a=a|0;b=+b;c=+c;h[a>>3]=b;h[a+8>>3]=c;return}function OI(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=l;l=l+32|0;g=d+16|0;e=d;f=(c[46495]|0)*90|0;c[g>>2]=c[b>>2];c[g+4>>2]=c[b+4>>2];c[g+8>>2]=c[b+8>>2];c[g+12>>2]=c[b+12>>2];ZG(e,g,f);c[b>>2]=c[e>>2];c[b+4>>2]=c[e+4>>2];c[b+8>>2]=c[e+8>>2];c[b+12>>2]=c[e+12>>2];h[b>>3]=+h[b>>3]-+h[22918];e=b+8|0;h[e>>3]=+h[e>>3]-+h[22919];c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];l=d;return}function PI(b,d){b=b|0;d=d|0;var e=0,f=0.0,g=0,i=0,j=0.0,k=0.0,m=0,n=0.0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;w=l;l=l+1168|0;s=w+144|0;v=w+96|0;u=w+64|0;t=w+48|0;o=w+32|0;p=w+16|0;q=w;c[t>>2]=0;c[t+4>>2]=0;c[t+8>>2]=0;c[t+12>>2]=0;r=b+16|0;m=c[(c[r>>2]|0)+116>>2]|0;c[46495]=m&3;m=m&1;a[191877]=m;if(!(m<<24>>24))RI(b);else QI(b);SI(b);m=c[r>>2]|0;e=c[m+12>>2]|0;do if(e|0?(a[e+81>>0]|0)==0:0){g=e+24|0;c[t>>2]=c[g>>2];c[t+4>>2]=c[g+4>>2];c[t+8>>2]=c[g+8>>2];c[t+12>>2]=c[g+12>>2];n=+h[t>>3]+16.0;h[t>>3]=n;g=t+8|0;f=+h[g>>3]+8.0;h[g>>3]=f;g=(a[m+275>>0]&1)!=0;if(a[191877]|0){if(g){i=m+32|0;h[i>>3]=+h[i>>3]+f}else{i=m+16|0;h[i>>3]=+h[i>>3]-f}g=m+40|0;f=+h[g>>3];i=m+24|0;j=+h[i>>3];k=f-j;if(!(n>k))break;n=(n-k)*.5;h[i>>3]=j-n;h[g>>3]=f+n;break}i=(c[46495]|0)==0;do if(g)if(i){i=m+40|0;h[i>>3]=+h[i>>3]+f;break}else{i=m+24|0;h[i>>3]=+h[i>>3]-f;break}else if(i){i=m+24|0;h[i>>3]=+h[i>>3]-f;break}else{i=m+40|0;h[i>>3]=+h[i>>3]+f;break}while(0);g=m+32|0;f=+h[g>>3];i=m+16|0;j=+h[i>>3];k=f-j;if(n>k){n=(n-k)*.5;h[i>>3]=j-n;h[g>>3]=f+n}}while(0);if(d){switch(c[46495]|0){case 0:{q=m+16|0;c[45836]=c[q>>2];c[45837]=c[q+4>>2];c[45838]=c[q+8>>2];c[45839]=c[q+12>>2];break}case 1:{NI(o,-+h[m+40>>3],+h[m+16>>3]);c[45836]=c[o>>2];c[45837]=c[o+4>>2];c[45838]=c[o+8>>2];c[45839]=c[o+12>>2];break}case 2:{NI(p,+h[m+16>>3],-+h[m+40>>3]);c[45836]=c[p>>2];c[45837]=c[p+4>>2];c[45838]=c[p+8>>2];c[45839]=c[p+12>>2];break}case 3:{NI(q,+h[m+24>>3],+h[m+16>>3]);c[45836]=c[q>>2];c[45837]=c[q+4>>2];c[45838]=c[q+8>>2];c[45839]=c[q+12>>2];break}default:{}}TI(b);e=c[(c[r>>2]|0)+12>>2]|0}if(e|0?(a[e+81>>0]|0)==0:0){c[s>>2]=c[t>>2];c[s+4>>2]=c[t+4>>2];c[s+8>>2]=c[t+8>>2];c[s+12>>2]=c[t+12>>2];UI(b,s)}if(!0){l=w;return}if(!(a[191877]|0)){n=+h[22919];k=+h[22918];h[v>>3]=n;h[v+8>>3]=k;h[v+16>>3]=n;h[v+24>>3]=k;h[v+32>>3]=-k;h[v+40>>3]=-n;Y0(s,99989,v)|0}else{k=+h[22918];n=+h[22919];h[u>>3]=k;h[u+8>>3]=n;h[u+16>>3]=k;h[u+24>>3]=n;Y0(s,99774,u)|0}n1(s)|0;ab()}function QI(b){b=b|0;var d=0,e=0.0,f=0.0,g=0,i=0,j=0;j=b+16|0;if(((fz(b)|0)!=(b|0)?(g=c[j>>2]|0,i=c[g+12>>2]|0,(i|0)!=0):0)?(a[i+81>>0]|0)==0:0){d=a[g+275>>0]|0;if(!(d&1)){f=+h[g+16>>3]+ +h[g+96>>3]*.5;b=g+104|0}else{f=+h[g+32>>3]-+h[g+64>>3]*.5;b=g+72|0}e=+h[b>>3];b=d<<24>>24;do if(!(b&4))if(!(b&2)){e=(+h[g+40>>3]+ +h[g+24>>3])*.5;break}else{e=+h[g+40>>3]-e*.5;break}else e=+h[g+24>>3]+e*.5;while(0);h[i+56>>3]=f;h[i+64>>3]=e;a[(c[(c[j>>2]|0)+12>>2]|0)+81>>0]=1;b=1}else b=1;while(1){d=c[j>>2]|0;if((b|0)>(c[d+180>>2]|0))break;QI(c[(c[d+184>>2]|0)+(b<<2)>>2]|0);b=b+1|0}return}function RI(b){b=b|0;var d=0,e=0.0,f=0.0,g=0.0,i=0,j=0,k=0;k=b+16|0;if(((fz(b)|0)!=(b|0)?(i=c[k>>2]|0,j=c[i+12>>2]|0,(j|0)!=0):0)?(a[j+81>>0]|0)==0:0){d=a[i+275>>0]|0;if(!(d&1)){g=+h[i+24>>3]+ +h[i+56>>3]*.5;b=i+48|0}else{g=+h[i+40>>3]-+h[i+88>>3]*.5;b=i+80|0}f=+h[b>>3];b=d<<24>>24;do if(!(b&4)){e=+h[i+16>>3];if(!(b&2)){e=(+h[i+32>>3]+e)*.5;break}else{e=e+f*.5;break}}else e=+h[i+32>>3]-f*.5;while(0);h[j+56>>3]=e;h[j+64>>3]=g;a[(c[(c[k>>2]|0)+12>>2]|0)+81>>0]=1;b=1}else b=1;while(1){d=c[k>>2]|0;if((b|0)>(c[d+180>>2]|0))break;RI(c[(c[d+184>>2]|0)+(b<<2)>>2]|0);b=b+1|0}return}function SI(e){e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0;S=l;l=l+544|0;L=S+504|0;R=S+416|0;Q=S+376|0;K=S+352|0;J=S+312|0;I=S+288|0;H=S+248|0;M=S+200|0;B=S+152|0;O=S+96|0;p=S+488|0;C=S+456|0;D=S+424|0;E=S+384|0;F=S+360|0;G=S+320|0;w=S+296|0;x=S+256|0;y=S+232|0;z=S+168|0;A=S+136|0;f=S+56|0;N=S+16|0;P=S;o=e+16|0;u=c[o>>2]|0;g=b[u+136>>1]&14;u=d[u+113>>0]|0;if(!((u&54|0)==0?(u&1|0)==0|(c[46368]|0)!=0:0)){u=g<<16>>16==0;n=Sy(e)|0;h=0;j=0;i=0;while(1){if(!n)break;g=c[(c[n+16>>2]|0)+108>>2]|0;do if(g)if(!(a[g+81>>0]|0)){i=i+1|0;break}else{h=h+1|0;break}while(0);m=Ex(e,n)|0;g=j;while(1){if(!m)break;k=c[m+16>>2]|0;j=c[k+108>>2]|0;do if(j){if(a[j+81>>0]|0){h=h+1|0;break}if(!u)g=g+((c[k+8>>2]|0)!=0&1)|0}while(0);j=c[k+100>>2]|0;do if(j){if(a[j+81>>0]|0){h=h+1|0;break}if(!u)g=g+((c[k+8>>2]|0)!=0&1)|0}while(0);j=c[k+104>>2]|0;do if(j){if(a[j+81>>0]|0){h=h+1|0;break}if(!u)g=g+((c[k+8>>2]|0)!=0&1)|0}while(0);j=c[k+96>>2]|0;do if(j){if(a[j+81>>0]|0){h=h+1|0;break}if(!u)g=g+((c[k+8>>2]|0)!=0&1)|0}while(0);m=Gx(e,m)|0}n=Ty(e,n)|0;j=g}if(!(a[(c[o>>2]|0)+113>>0]&8))o=0;else o=WI(e)|0;t=j+i|0;if(t|0){q=h+j+o+(ay(e)|0)|0;r=uH(q*40|0)|0;s=uH(t*40|0)|0;NI(M,2147483647.0,2147483647.0);g=M+16|0;NI(p,-2147483647.0,-2147483647.0);c[g>>2]=c[p>>2];c[g+4>>2]=c[p+4>>2];c[g+8>>2]=c[p+8>>2];c[g+12>>2]=c[p+12>>2];g=s;i=r;n=Sy(e)|0;while(1){if(!n)break;c[L>>2]=c[M>>2];c[L+4>>2]=c[M+4>>2];c[L+8>>2]=c[M+8>>2];c[L+12>>2]=c[M+12>>2];c[L+16>>2]=c[M+16>>2];c[L+20>>2]=c[M+20>>2];c[L+24>>2]=c[M+24>>2];c[L+28>>2]=c[M+28>>2];XI(C,n,i,L);c[M>>2]=c[C>>2];c[M+4>>2]=c[C+4>>2];c[M+8>>2]=c[C+8>>2];c[M+12>>2]=c[C+12>>2];c[M+16>>2]=c[C+16>>2];c[M+20>>2]=c[C+20>>2];c[M+24>>2]=c[C+24>>2];c[M+28>>2]=c[C+28>>2];h=c[(c[n+16>>2]|0)+108>>2]|0;do if(h)if(!(a[h+81>>0]|0)){c[L>>2]=c[B>>2];c[L+4>>2]=c[B+4>>2];c[L+8>>2]=c[B+8>>2];c[L+12>>2]=c[B+12>>2];ZI(h,i,g,0,L);g=g+40|0;break}else{i=i+40|0;c[L>>2]=c[M>>2];c[L+4>>2]=c[M+4>>2];c[L+8>>2]=c[M+8>>2];c[L+12>>2]=c[M+12>>2];c[L+16>>2]=c[M+16>>2];c[L+20>>2]=c[M+20>>2];c[L+24>>2]=c[M+24>>2];c[L+28>>2]=c[M+28>>2];YI(D,h,i,L);c[M>>2]=c[D>>2];c[M+4>>2]=c[D+4>>2];c[M+8>>2]=c[D+8>>2];c[M+12>>2]=c[D+12>>2];c[M+16>>2]=c[D+16>>2];c[M+20>>2]=c[D+20>>2];c[M+24>>2]=c[D+24>>2];c[M+28>>2]=c[D+28>>2];break}while(0);m=Ex(e,n)|0;i=i+40|0;while(1){if(!m)break;k=m+16|0;h=c[k>>2]|0;j=c[h+96>>2]|0;a:do if(!j)v=52;else{do if(!(a[j+81>>0]|0)){if(!u?c[h+8>>2]|0:0){gL(F,e,m);c[L>>2]=c[F>>2];c[L+4>>2]=c[F+4>>2];c[L+8>>2]=c[F+8>>2];c[L+12>>2]=c[F+12>>2];ZI(j,i,g,1,L);g=g+40|0;break}c[H>>2]=c[j>>2];Pw(0,100801,H)|0;break a}else{c[L>>2]=c[M>>2];c[L+4>>2]=c[M+4>>2];c[L+8>>2]=c[M+8>>2];c[L+12>>2]=c[M+12>>2];c[L+16>>2]=c[M+16>>2];c[L+20>>2]=c[M+20>>2];c[L+24>>2]=c[M+24>>2];c[L+28>>2]=c[M+28>>2];YI(E,j,i,L);c[M>>2]=c[E>>2];c[M+4>>2]=c[E+4>>2];c[M+8>>2]=c[E+8>>2];c[M+12>>2]=c[E+12>>2];c[M+16>>2]=c[E+16>>2];c[M+20>>2]=c[E+20>>2];c[M+24>>2]=c[E+24>>2];c[M+28>>2]=c[E+28>>2]}while(0);i=i+40|0;h=c[k>>2]|0;v=52}while(0);b:do if((v|0)==52){v=0;j=c[h+104>>2]|0;if(j){do if(!(a[j+81>>0]|0)){if(!u?c[h+8>>2]|0:0){_I(w,m);c[L>>2]=c[w>>2];c[L+4>>2]=c[w+4>>2];c[L+8>>2]=c[w+8>>2];c[L+12>>2]=c[w+12>>2];ZI(j,i,g,1,L);g=g+40|0;break}c[I>>2]=c[j>>2];Pw(0,100836,I)|0;break b}else{c[L>>2]=c[M>>2];c[L+4>>2]=c[M+4>>2];c[L+8>>2]=c[M+8>>2];c[L+12>>2]=c[M+12>>2];c[L+16>>2]=c[M+16>>2];c[L+20>>2]=c[M+20>>2];c[L+24>>2]=c[M+24>>2];c[L+28>>2]=c[M+28>>2];YI(G,j,i,L);c[M>>2]=c[G>>2];c[M+4>>2]=c[G+4>>2];c[M+8>>2]=c[G+8>>2];c[M+12>>2]=c[G+12>>2];c[M+16>>2]=c[G+16>>2];c[M+20>>2]=c[G+20>>2];c[M+24>>2]=c[G+24>>2];c[M+28>>2]=c[G+28>>2]}while(0);i=i+40|0;h=c[k>>2]|0}j=c[h+100>>2]|0;if(j){do if(!(a[j+81>>0]|0)){if(!u?c[h+8>>2]|0:0){$I(y,m);c[L>>2]=c[y>>2];c[L+4>>2]=c[y+4>>2];c[L+8>>2]=c[y+8>>2];c[L+12>>2]=c[y+12>>2];ZI(j,i,g,1,L);g=g+40|0;break}c[J>>2]=c[j>>2];Pw(0,100876,J)|0;break b}else{c[L>>2]=c[M>>2];c[L+4>>2]=c[M+4>>2];c[L+8>>2]=c[M+8>>2];c[L+12>>2]=c[M+12>>2];c[L+16>>2]=c[M+16>>2];c[L+20>>2]=c[M+20>>2];c[L+24>>2]=c[M+24>>2];c[L+28>>2]=c[M+28>>2];YI(x,j,i,L);c[M>>2]=c[x>>2];c[M+4>>2]=c[x+4>>2];c[M+8>>2]=c[x+8>>2];c[M+12>>2]=c[x+12>>2];c[M+16>>2]=c[x+16>>2];c[M+20>>2]=c[x+20>>2];c[M+24>>2]=c[x+24>>2];c[M+28>>2]=c[x+28>>2]}while(0);i=i+40|0;h=c[k>>2]|0}j=c[h+108>>2]|0;if(j){do if(!(a[j+81>>0]|0)){if(!u?c[h+8>>2]|0:0){gL(A,e,m);c[L>>2]=c[A>>2];c[L+4>>2]=c[A+4>>2];c[L+8>>2]=c[A+8>>2];c[L+12>>2]=c[A+12>>2];ZI(j,i,g,1,L);g=g+40|0;break}c[K>>2]=c[j>>2];Pw(0,100916,K)|0;break b}else{c[L>>2]=c[M>>2];c[L+4>>2]=c[M+4>>2];c[L+8>>2]=c[M+8>>2];c[L+12>>2]=c[M+12>>2];c[L+16>>2]=c[M+16>>2];c[L+20>>2]=c[M+20>>2];c[L+24>>2]=c[M+24>>2];c[L+28>>2]=c[M+28>>2];YI(z,j,i,L);c[M>>2]=c[z>>2];c[M+4>>2]=c[z+4>>2];c[M+8>>2]=c[z+8>>2];c[M+12>>2]=c[z+12>>2];c[M+16>>2]=c[z+16>>2];c[M+20>>2]=c[z+20>>2];c[M+24>>2]=c[z+24>>2];c[M+28>>2]=c[z+28>>2]}while(0);i=i+40|0}}while(0);m=Gx(e,m)|0}n=Ty(e,n)|0}if(o|0){c[f>>2]=c[M>>2];c[f+4>>2]=c[M+4>>2];c[f+8>>2]=c[M+8>>2];c[f+12>>2]=c[M+12>>2];c[f+16>>2]=c[M+16>>2];c[f+20>>2]=c[M+20>>2];c[f+24>>2]=c[M+24>>2];c[f+28>>2]=c[M+28>>2];c[f+32>>2]=i;h=L;g=h+40|0;do{c[h>>2]=c[f>>2];h=h+4|0;f=f+4|0}while((h|0)<(g|0));aJ(N,e,L);c[M>>2]=c[N>>2];c[M+4>>2]=c[N+4>>2];c[M+8>>2]=c[N+8>>2];c[M+12>>2]=c[N+12>>2];c[M+16>>2]=c[N+16>>2];c[M+20>>2]=c[N+20>>2];c[M+24>>2]=c[N+24>>2];c[M+28>>2]=c[N+28>>2]}a[O+32>>0]=PL(e,nx(e,0,100952,0)|0,1)|0;c[O>>2]=c[M>>2];c[O+4>>2]=c[M+4>>2];c[O+8>>2]=c[M+8>>2];c[O+12>>2]=c[M+12>>2];c[O+16>>2]=c[M+16>>2];c[O+20>>2]=c[M+20>>2];c[O+24>>2]=c[M+24>>2];c[O+28>>2]=c[M+28>>2];SP(r,q,s,t,O)|0;if(0)bJ(r,q,s,t,O);f=0;g=0;h=s;while(1){if((g|0)>=(t|0))break;if(a[h+36>>0]|0){O=c[h+32>>2]|0;a[O+81>>0]=1;N=O+56|0;cJ(P,h);c[N>>2]=c[P>>2];c[N+4>>2]=c[P+4>>2];c[N+8>>2]=c[P+8>>2];c[N+12>>2]=c[P+12>>2];kM(e,O);f=f+1|0}g=g+1|0;h=h+40|0}if(!0){if((f|0)!=(t|0)){c[R>>2]=f;c[R+4>>2]=t;Pw(0,100997,R)|0}}else{R=c[15686]|0;c[Q>>2]=f;c[Q+4>>2]=t;g1(R,100964,Q)|0}D_(r);D_(s)}}l=S;return}function TI(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,i=0,j=0;i=l;l=l+48|0;e=i+32|0;f=i+16|0;g=i;if(+h[22918]!=0.0|+h[22919]!=0.0|(c[46495]|0)!=0){d=Sy(a)|0;while(1){if(!d)break;if(c[46495]|0)bN(d,0);b=d+16|0;j=(c[b>>2]|0)+16|0;c[e>>2]=c[j>>2];c[e+4>>2]=c[j+4>>2];c[e+8>>2]=c[j+8>>2];c[e+12>>2]=c[j+12>>2];OI(f,e);c[j>>2]=c[f>>2];c[j+4>>2]=c[f+4>>2];c[j+8>>2]=c[f+8>>2];c[j+12>>2]=c[f+12>>2];b=c[(c[b>>2]|0)+108>>2]|0;if(b|0){j=b+56|0;c[e>>2]=c[j>>2];c[e+4>>2]=c[j+4>>2];c[e+8>>2]=c[j+8>>2];c[e+12>>2]=c[j+12>>2];OI(g,e);c[j>>2]=c[g>>2];c[j+4>>2]=c[g+4>>2];c[j+8>>2]=c[g+8>>2];c[j+12>>2]=c[g+12>>2]}a:do if((c[46367]|0)==1){b=Ex(a,d)|0;while(1){if(!b)break a;VI(b);b=Gx(a,b)|0}}while(0);d=Ty(a,d)|0}MI(a,c[(c[a+16>>2]|0)+116>>2]&3)}l=i;return}function UI(b,d){b=b|0;d=d|0;var e=0.0,f=0.0,g=0,i=0,j=0;i=b+16|0;j=c[i>>2]|0;g=a[j+275>>0]|0;b=g<<24>>24;do if(!(b&4)){e=+h[j+16>>3];if(!(b&2)){f=(+h[j+32>>3]+e)*.5;break}else{f=+h[d>>3]*.5+e;break}}else f=+h[j+32>>3]-+h[d>>3]*.5;while(0);if(!(g&1))e=+h[d+8>>3]*.5+ +h[j+24>>3];else e=+h[j+40>>3]-+h[d+8>>3]*.5;j=c[j+12>>2]|0;h[j+56>>3]=f;h[j+64>>3]=e;a[(c[(c[i>>2]|0)+12>>2]|0)+81>>0]=1;return}function VI(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;s=l;l=l+144|0;q=s+120|0;e=s+16|0;i=s+104|0;j=s+88|0;k=s+72|0;m=s+56|0;n=s+40|0;o=s+24|0;r=s;p=b+16|0;d=c[p>>2]|0;f=c[d+8>>2]|0;if(!f){if((a[191874]|0)==0?(a[d+112>>0]|0)!=6:0){q=ry(c[((c[b>>2]&3|0)==3?b:b+48|0)+40>>2]|0)|0;r=ry(c[((c[b>>2]&3|0)==2?b:b+-48|0)+40>>2]|0)|0;c[e>>2]=q;c[e+4>>2]=r;Pw(1,100784,e)|0}}else{h=0;b=f;while(1){if((h|0)>=(c[b+4>>2]|0))break;g=c[b>>2]|0;b=c[g+(h*48|0)>>2]|0;e=c[g+(h*48|0)+4>>2]|0;f=c[g+(h*48|0)+8>>2]|0;g=c[g+(h*48|0)+12>>2]|0;d=0;while(1){if((d|0)>=(e|0))break;t=b+(d<<4)|0;c[q>>2]=c[t>>2];c[q+4>>2]=c[t+4>>2];c[q+8>>2]=c[t+8>>2];c[q+12>>2]=c[t+12>>2];OI(i,q);c[t>>2]=c[i>>2];c[t+4>>2]=c[i+4>>2];c[t+8>>2]=c[i+8>>2];c[t+12>>2]=c[i+12>>2];d=d+1|0}if(f|0){t=(c[c[(c[p>>2]|0)+8>>2]>>2]|0)+(h*48|0)+16|0;c[q>>2]=c[t>>2];c[q+4>>2]=c[t+4>>2];c[q+8>>2]=c[t+8>>2];c[q+12>>2]=c[t+12>>2];OI(j,q);c[t>>2]=c[j>>2];c[t+4>>2]=c[j+4>>2];c[t+8>>2]=c[j+8>>2];c[t+12>>2]=c[j+12>>2]}if(g|0){t=(c[c[(c[p>>2]|0)+8>>2]>>2]|0)+(h*48|0)+32|0;c[q>>2]=c[t>>2];c[q+4>>2]=c[t+4>>2];c[q+8>>2]=c[t+8>>2];c[q+12>>2]=c[t+12>>2];OI(k,q);c[t>>2]=c[k>>2];c[t+4>>2]=c[k+4>>2];c[t+8>>2]=c[k+8>>2];c[t+12>>2]=c[k+12>>2]}d=c[p>>2]|0;h=h+1|0;b=c[d+8>>2]|0}b=c[d+96>>2]|0;if(b){d=b+56|0;c[q>>2]=c[d>>2];c[q+4>>2]=c[d+4>>2];c[q+8>>2]=c[d+8>>2];c[q+12>>2]=c[d+12>>2];OI(m,q);c[d>>2]=c[m>>2];c[d+4>>2]=c[m+4>>2];c[d+8>>2]=c[m+8>>2];c[d+12>>2]=c[m+12>>2];d=c[p>>2]|0}b=c[d+108>>2]|0;if(b){d=b+56|0;c[q>>2]=c[d>>2];c[q+4>>2]=c[d+4>>2];c[q+8>>2]=c[d+8>>2];c[q+12>>2]=c[d+12>>2];OI(n,q);c[d>>2]=c[n>>2];c[d+4>>2]=c[n+4>>2];c[d+8>>2]=c[n+8>>2];c[d+12>>2]=c[n+12>>2];d=c[p>>2]|0}b=c[d+100>>2]|0;if(b){d=b+56|0;c[q>>2]=c[d>>2];c[q+4>>2]=c[d+4>>2];c[q+8>>2]=c[d+8>>2];c[q+12>>2]=c[d+12>>2];OI(o,q);c[d>>2]=c[o>>2];c[d+4>>2]=c[o+4>>2];c[d+8>>2]=c[o+8>>2];c[d+12>>2]=c[o+12>>2];d=c[p>>2]|0}d=c[d+104>>2]|0;if(d|0){t=d+56|0;c[q>>2]=c[t>>2];c[q+4>>2]=c[t+4>>2];c[q+8>>2]=c[t+8>>2];c[q+12>>2]=c[t+12>>2];OI(r,q);c[t>>2]=c[r>>2];c[t+4>>2]=c[r+4>>2];c[t+8>>2]=c[r+8>>2];c[t+12>>2]=c[r+12>>2]}}l=s;return}function WI(b){b=b|0;var d=0,e=0,f=0;f=b+16|0;if((fz(b)|0)!=(b|0)?(d=c[(c[f>>2]|0)+12>>2]|0,(d|0)!=0):0){e=1;b=(a[d+81>>0]|0)!=0&1}else{e=1;b=0}while(1){d=c[f>>2]|0;if((e|0)>(c[d+180>>2]|0))break;d=(WI(c[(c[d+184>>2]|0)+(e<<2)>>2]|0)|0)+b|0;e=e+1|0;b=d}return b|0}function XI(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0.0,k=0.0,m=0,n=0;g=l;l=l+32|0;i=g;n=(a[191877]|0)==0;d=d+16|0;m=c[d>>2]|0;k=+h[(n?m+32|0:m+40|0)>>3];h[e+16>>3]=k*72.0;j=+h[(n?m+40|0:m+32|0)>>3];h[e+24>>3]=j*72.0;d=(c[d>>2]|0)+16|0;c[e>>2]=c[d>>2];c[e+4>>2]=c[d+4>>2];c[e+8>>2]=c[d+8>>2];c[e+12>>2]=c[d+12>>2];h[e>>3]=+h[e>>3]-k*36.0;d=e+8|0;h[d>>3]=+h[d>>3]-j*36.0;c[i>>2]=c[f>>2];c[i+4>>2]=c[f+4>>2];c[i+8>>2]=c[f+8>>2];c[i+12>>2]=c[f+12>>2];c[i+16>>2]=c[f+16>>2];c[i+20>>2]=c[f+20>>2];c[i+24>>2]=c[f+24>>2];c[i+28>>2]=c[f+28>>2];dJ(b,e,i);l=g;return}function YI(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0.0,k=0.0,m=0,n=0;g=l;l=l+32|0;i=g;n=(a[191877]|0)==0;m=d+24|0;k=+h[(n?m:d+32|0)>>3];h[e+16>>3]=k;j=+h[(n?d+32|0:m)>>3];h[e+24>>3]=j;d=d+56|0;c[e>>2]=c[d>>2];c[e+4>>2]=c[d+4>>2];c[e+8>>2]=c[d+8>>2];c[e+12>>2]=c[d+12>>2];h[e>>3]=+h[e>>3]-k*.5;d=e+8|0;h[d>>3]=+h[d>>3]-j*.5;c[i>>2]=c[f>>2];c[i+4>>2]=c[f+4>>2];c[i+8>>2]=c[f+8>>2];c[i+12>>2]=c[f+12>>2];c[i+16>>2]=c[f+16>>2];c[i+20>>2]=c[f+20>>2];c[i+24>>2]=c[f+24>>2];c[i+28>>2]=c[f+28>>2];dJ(b,e,i);l=g;return}function ZI(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;if(f|0){f=d+16|0;c[f>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;c[d>>2]=c[g>>2];c[d+4>>2]=c[g+4>>2];c[d+8>>2]=c[g+8>>2];c[d+12>>2]=c[g+12>>2]}if(!(a[191877]|0)){g=b+24|0;c[e>>2]=c[g>>2];c[e+4>>2]=c[g+4>>2];c[e+8>>2]=c[g+8>>2];c[e+12>>2]=c[g+12>>2]}else{h[e>>3]=+h[b+32>>3];h[e+8>>3]=+h[b+24>>3]}c[e+32>>2]=b;a[e+36>>0]=0;c[d+32>>2]=e;return}function _I(a,b){a=a|0;b=b|0;b=fL(b)|0;do if(b){b=c[b>>2]|0;if(!(c[b+8>>2]|0)){b=c[b>>2]|0;c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];break}else{b=b+16|0;c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];break}}else{c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;c[a+12>>2]=0}while(0);return}function $I(a,b){a=a|0;b=b|0;var d=0;b=fL(b)|0;do if(b){d=c[b>>2]|0;b=(c[b+4>>2]|0)+-1|0;if(!(c[d+(b*48|0)+12>>2]|0)){d=(c[d+(b*48|0)>>2]|0)+((c[d+(b*48|0)+4>>2]|0)+-1<<4)|0;c[a>>2]=c[d>>2];c[a+4>>2]=c[d+4>>2];c[a+8>>2]=c[d+8>>2];c[a+12>>2]=c[d+12>>2];break}else{d=d+(b*48|0)+32|0;c[a>>2]=c[d>>2];c[a+4>>2]=c[d+4>>2];c[a+8>>2]=c[d+8>>2];c[a+12>>2]=c[d+12>>2];break}}else{c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;c[a+12>>2]=0}while(0);return}function aJ(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;q=l;l=l+112|0;k=q+72|0;n=q+32|0;o=q;p=d+16|0;j=1;while(1){f=c[p>>2]|0;if((j|0)>(c[f+180>>2]|0))break;f=c[(c[f+184>>2]|0)+(j<<2)>>2]|0;g=k;h=e;i=g+40|0;do{c[g>>2]=c[h>>2];g=g+4|0;h=h+4|0}while((g|0)<(i|0));aJ(n,f,k);g=e;h=n;i=g+40|0;do{c[g>>2]=c[h>>2];g=g+4|0;h=h+4|0}while((g|0)<(i|0));j=j+1|0}if(((fz(d)|0)!=(d|0)?(m=c[(c[p>>2]|0)+12>>2]|0,m|0):0)?a[m+81>>0]|0:0){p=e+32|0;n=c[p>>2]|0;c[k>>2]=c[e>>2];c[k+4>>2]=c[e+4>>2];c[k+8>>2]=c[e+8>>2];c[k+12>>2]=c[e+12>>2];c[k+16>>2]=c[e+16>>2];c[k+20>>2]=c[e+20>>2];c[k+24>>2]=c[e+24>>2];c[k+28>>2]=c[e+28>>2];YI(o,m,n,k);c[e>>2]=c[o>>2];c[e+4>>2]=c[o+4>>2];c[e+8>>2]=c[o+8>>2];c[e+12>>2]=c[o+12>>2];c[e+16>>2]=c[o+16>>2];c[e+20>>2]=c[o+20>>2];c[e+24>>2]=c[o+24>>2];c[e+28>>2]=c[o+28>>2];c[p>>2]=(c[p>>2]|0)+40}g=b;h=e;i=g+40|0;do{c[g>>2]=c[h>>2];g=g+4|0;h=h+4|0}while((g|0)<(i|0));l=q;return}function bJ(a,b,e,f,g){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;var i=0.0,j=0.0,k=0.0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0;s=l;l=l+160|0;r=s+96|0;p=s+48|0;o=s;q=c[15686]|0;n=d[g+32>>0]|0;i=+h[g>>3];j=+h[g+8>>3];k=+h[g+16>>3];m=+h[g+24>>3];c[o>>2]=b;c[o+4>>2]=f;c[o+8>>2]=n;h[o+16>>3]=i;h[o+24>>3]=j;h[o+32>>3]=k;h[o+40>>3]=m;g1(q,101039,o)|0;a:do if(0>=2){E1(101099,8,1,q)|0;o=0;while(1){if((o|0)>=(b|0))break;g=c[a+32>>2]|0;i=+h[a>>3];j=+h[a+8>>3];k=+h[a+16>>3];m=+h[a+24>>3];if(!g)n=191979;else n=c[c[g+32>>2]>>2]|0;c[p>>2]=o;h[p+8>>3]=i;h[p+16>>3]=j;h[p+24>>3]=k;h[p+32>>3]=m;c[p+40>>2]=g;c[p+44>>2]=n;g1(q,101108,p)|0;o=o+1|0;a=a+40|0}E1(101151,8,1,q)|0;g=0;while(1){if((g|0)>=(f|0))break a;b=d[e+36>>0]|0;i=+h[e+16>>3];j=+h[e+24>>3];k=+h[e>>3];m=+h[e+8>>3];p=c[c[e+32>>2]>>2]|0;c[r>>2]=g;c[r+4>>2]=e;c[r+8>>2]=b;h[r+16>>3]=i;h[r+24>>3]=j;h[r+32>>3]=k;h[r+40>>3]=m;c[r+48>>2]=p;g1(q,101160,r)|0;e=e+40|0;g=g+1|0}}while(0);l=s;return}function cJ(a,b){a=a|0;b=b|0;var c=0.0;c=+h[b+8>>3]*.5+ +h[b+24>>3];h[a>>3]=+h[b>>3]*.5+ +h[b+16>>3];h[a+8>>3]=c;return}function dJ(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,i=0.0,j=0.0;e=l;l=l+16|0;f=e;j=+h[b>>3];h[d>>3]=+h[(+h[d>>3]>3];g=d+8|0;i=+h[b+8>>3];h[g>>3]=+h[(+h[g>>3]>3];j=+h[b+16>>3]+j;h[f>>3]=j;i=+h[b+24>>3]+i;h[f+8>>3]=i;g=d+16|0;h[g>>3]=+h[(+h[g>>3]>j?g:f)>>3];b=d+24|0;h[b>>3]=+h[(+h[b>>3]>i?g:f)+8>>3];c[a>>2]=c[d>>2];c[a+4>>2]=c[d+4>>2];c[a+8>>2]=c[d+8>>2];c[a+12>>2]=c[d+12>>2];c[a+16>>2]=c[d+16>>2];c[a+20>>2]=c[d+20>>2];c[a+24>>2]=c[d+24>>2];c[a+28>>2]=c[d+28>>2];l=e;return}function eJ(a){a=a|0;PI(a,1);return}function fJ(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;e=l;l=l+16|0;d=e;b=ZL(xx(a,102500)|0)|0;if(b){b=gJ(b)|0;if(b|0){f=c[b+40>>2]|0;d=c[b+44>>2]|0;g=a+16|0;a=c[g>>2]|0;h[a+32>>3]=+(f|0)*.013888888888888888;h[a+40>>3]=+(d|0)*.013888888888888888;a=uH(12)|0;c[(c[g>>2]|0)+12>>2]=a;c[a>>2]=c[b+12>>2];c[a+4>>2]=((f|0)/-2|0)-(c[b+32>>2]|0);c[a+8>>2]=((d|0)/-2|0)-(c[b+36>>2]|0)}}else{c[d>>2]=ry(a)|0;Pw(0,101208,d)|0}l=e;return}function gJ(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;p=l;l=l+1152|0;i=p+24|0;h=p+8|0;e=p;f=p+120|0;j=p+44|0;k=p+40|0;m=p+36|0;n=p+32|0;o=p+28|0;d=c[46496]|0;if(!d){d=Cw(20708,c[4555]|0)|0;c[46496]=d}d=nb[c[d>>2]&63](d,b,512)|0;do if(!d){g=L1(b,135739)|0;if(!g){c[e>>2]=b;Pw(0,101257,e)|0;d=0;break}else{d=0;e=0}while(1){if(!(O0(f,1024,g)|0)){f=11;break}c[h>>2]=k;c[h+4>>2]=m;c[h+8>>2]=n;c[h+12>>2]=o;q=(N1(f,101285,h)|0)==4;e=q?1:e;if((a[f>>0]|0)!=37){q=(P0(f,101314)|0)==0;d=q?d:1}if((e|0)!=0&(d|0)!=0){f=12;break}}if((f|0)==11)if(!e){c[i>>2]=b;Pw(0,101319,i)|0;d=0}else f=12;if((f|0)==12){q=vH(64)|0;k=c[k>>2]|0;c[q+32>>2]=k;m=c[m>>2]|0;c[q+40>>2]=(c[n>>2]|0)-k;c[q+36>>2]=(c[o>>2]|0)-m;c[q+8>>2]=b;o=c[46497]|0;c[46497]=o+1;c[q+12>>2]=o;J1(j3(g)|0,j)|0;o=c[j+36>>2]|0;n=vH(o+1|0)|0;c[q+52>>2]=n;Z1(g,0,0)|0;g3(n,o,1,g)|0;a[n+o>>0]=0;o=c[46496]|0;nb[c[o>>2]&63](o,q,1)|0;a[q+16>>0]=d;d=q}s1(g)|0}while(0);l=p;return d|0}function hJ(a,b,d){a=a|0;b=b|0;d=d|0;D_(c[b+52>>2]|0);return}function iJ(a){a=a|0;D_(c[(c[a+16>>2]|0)+12>>2]|0);return}function jJ(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+16|0;m=n+8|0;k=n;j=(d|0)!=0;a:do if(j){h=0;f=0;b:while(1)while(1){if(h)break a;g=c[d+(f<<2)>>2]|0;if(!g){i=6;break a}f=f+1|0;if(!(a[g>>0]|0)){h=1;continue b}}}else i=6;while(0);c:do if((i|0)==6)while(1){f=c[e>>2]|0;if(!f)break c;$B(b,f)|0;$B(b,150517)|0;e=e+4|0;i=6}while(0);d:do if(j){h=0;while(1){f=c[d+(h<<2)>>2]|0;if(!f)break d;do if(a[f>>0]|0){e=ZL(f)|0;if(!e){c[k>>2]=f;Pw(0,101358,k)|0;break}g=L1(e,135739)|0;if(!g){c[m>>2]=e;Pw(0,101386,m)|0;break}while(1){f=YL(g)|0;if(!f)break;$B(b,f)|0}$B(b,150517)|0;s1(g)|0}while(0);h=h+1|0}}while(0);l=n;return}function kJ(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;d=c[d+52>>2]|0;a:while(1){e=a[d>>0]|0;b:do switch(e<<24>>24){case 0:break a;case 37:{if((a[d+1>>0]|0)==37){e=d+2|0;if((((V$(e,101414,3)|0)!=0?(V$(e,101418,5)|0)!=0:0)?(V$(e,101424,3)|0)!=0:0)?(V$(e,101428,7)|0)!=0:0){e=37;break b}else g=37;c:while(1){switch(g<<24>>24){case 13:{f=10;break c}case 10:case 0:{f=12;break c}default:{}}g=d+1|0;d=g;g=a[g>>0]|0}if((f|0)==10){e=d+1|0;if((a[e>>0]|0)==10){d=d+2|0;continue a}}else if((f|0)==12)e=d+1|0;d=g<<24>>24==0?d:e;continue a}else e=37;break}default:{}}while(0);d:while(1){switch(e<<24>>24){case 10:case 13:case 0:break d;default:{}}aC(b,e<<24>>24)|0;g=d+1|0;d=g;e=a[g>>0]|0}f=d+1|0;if(e<<24>>24==13?(a[f>>0]|0)==10:0)d=d+2|0;else d=e<<24>>24==0?d:f;aC(b,10)|0}return}function lJ(b){b=b|0;var d=0,e=0,f=0,g=0;f=l;l=l+16|0;e=f;d=c[46496]|0;a:do if(d|0){d=nb[c[d>>2]&63](d,0,128)|0;while(1){if(!d)break a;if(!(a[d+16>>0]|0)){c[e>>2]=c[d+12>>2];fC(b,101436,e);$B(b,101454)|0;kJ(b,d);$B(b,101472)|0;$B(b,101487)|0}g=c[46496]|0;d=nb[c[g>>2]&63](g,d,8)|0}}while(0);l=f;return}function mJ(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=l;l=l+16|0;e=g;a:do switch(d|0){case 0:{f=b;break}case 1:{f=SM(b)|0;break}default:{switch(nJ(b)|0){case 2:break;case 1:{f=SM(b)|0;break a}default:{f=b;break a}}if(!(c[46498]|0)){Pw(0,101499,e)|0;c[46498]=1;f=b}else f=b}}while(0);if(!(c[46499]|0))Tw(185996,0,0);d=c[46500]|0;if(d>>>0>=(c[46501]|0)>>>0){Uw(185996,1)|0;d=c[46500]|0}c[46500]=d+1;a[d>>0]=40;e=f;b:while(1){switch(a[e>>0]|0){case 0:break b;case 92:case 41:case 40:{d=c[46500]|0;if(d>>>0>=(c[46501]|0)>>>0){Uw(185996,1)|0;d=c[46500]|0}c[46500]=d+1;a[d>>0]=92;break}default:{}}d=c[46500]|0;if(d>>>0>=(c[46501]|0)>>>0){Uw(185996,1)|0;d=c[46500]|0}h=a[e>>0]|0;c[46500]=d+1;a[d>>0]=h;e=e+1|0}d=c[46500]|0;if(d>>>0>=(c[46501]|0)>>>0){Uw(185996,1)|0;d=c[46500]|0}c[46500]=d+1;a[d>>0]=41;if((f|0)!=(b|0))D_(f);d=c[46500]|0;if(d>>>0>=(c[46501]|0)>>>0){Uw(185996,1)|0;d=c[46500]|0}a[d>>0]=0;h=c[46499]|0;c[46500]=h;l=g;return h|0}function nJ(b){b=b|0;var c=0,d=0;c=0;a:while(1){while(1){d=a[b>>0]|0;if(!(d<<24>>24))break a;if((d&255)<127)b=b+1|0;else break}if((d&-4)<<24>>24==-64){c=1;b=b+2|0}else{c=2;break}}return c|0}function oJ(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;n=l;l=l+96|0;i=n+80|0;j=n+72|0;m=n+64|0;g=n+32|0;k=n;h[g>>3]=+h[a>>3];h[g+8>>3]=+h[a+8>>3];h[g+16>>3]=+h[b>>3];h[g+24>>3]=+h[b+8>>3];do if((TU(d,g,j)|0)>=0){if(!f){b=d+4|0;a=c[b>>2]|0;f=c[46504]|0;if((a|0)>(c[46503]|0)){if(!f)a=vH(a<<5)|0;else a=xH(f,a<<5)|0;c[46504]=a;g=c[b>>2]|0;c[46503]=g;f=a}else g=a;b=c[d>>2]|0;a=0;while(1){if((a|0)>=(g|0))break;o=f+(a<<5)|0;d=b+(a<<4)|0;c[o>>2]=c[d>>2];c[o+4>>2]=c[d+4>>2];c[o+8>>2]=c[d+8>>2];c[o+12>>2]=c[d+12>>2];o=f+(a<<5)+16|0;d=a+1|0;p=b+(((d|0)%(g|0)|0)<<4)|0;c[o>>2]=c[p>>2];c[o+4>>2]=c[p+4>>2];c[o+8>>2]=c[p+8>>2];c[o+12>>2]=c[p+12>>2];a=d}c[k>>2]=0;c[k+4>>2]=0;c[k+8>>2]=0;c[k+12>>2]=0;c[k+16>>2]=0;c[k+20>>2]=0;c[k+24>>2]=0;c[k+28>>2]=0;c[i>>2]=c[j>>2];c[i+4>>2]=c[j+4>>2];if((xU(f,g,i,k,m)|0)<0){a=0;break}}else{c[i>>2]=c[j>>2];c[i+4>>2]=c[j+4>>2];oV(i,m)}a=m+4|0;if(!(pJ(c[a>>2]|0)|0)){g=c[a>>2]|0;a=c[46505]|0;f=c[m>>2]|0;b=0;while(1){if((b|0)>=(g|0))break;p=a+(b<<4)|0;o=f+(b<<4)|0;c[p>>2]=c[o>>2];c[p+4>>2]=c[o+4>>2];c[p+8>>2]=c[o+8>>2];c[p+12>>2]=c[o+12>>2];b=b+1|0}c[e>>2]=g}else a=0}else a=0;while(0);l=n;return a|0}function pJ(a){a=a|0;var b=0,d=0,e=0;e=l;l=l+16|0;d=e;b=c[46506]|0;do if((b|0)<(a|0)){a=a+300-((a|0)%300|0)+b|0;b=xH(c[46505]|0,a<<4)|0;c[46505]=b;if(!b){Pw(1,101589,d)|0;a=1;break}else{c[46506]=a;a=0;break}}else a=0;while(0);l=e;return a|0}function qJ(){var a=0,b=0,d=0;b=l;l=l+16|0;a=b;d=c[46507]|0;c[46507]=d+1;do if((d|0)<=0){d=vH(4800)|0;c[46505]=d;if(!d){Pw(1,101612,a)|0;a=1;break}c[46506]=300;c[46508]=0;c[46509]=0;if(0){EL();a=0}else a=0}else a=0;while(0);l=b;return a|0}function rJ(){var a=0,b=0,d=0,e=0.0,f=0,g=0;b=l;l=l+16|0;a=b;d=c[46507]|0;c[46507]=d+-1;if((d|0)<=1?(D_(c[46505]|0),0):0){d=c[15686]|0;g=c[46508]|0;f=c[46509]|0;e=+FL();c[a>>2]=g;c[a+4>>2]=f;h[a+8>>3]=e;g1(d,101650,a)|0}l=b;return}function sJ(a,b){a=a|0;b=b|0;return tJ(a,b,0)|0}function tJ(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0.0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0;L=l;l=l+176|0;G=L+168|0;K=L+128|0;x=L+120|0;v=L+112|0;i=L+104|0;s=L+88|0;n=L+72|0;g=L+64|0;t=L+160|0;I=L+152|0;y=L+144|0;u=L+32|0;w=L;J=L+136|0;c[46508]=(c[46508]|0)+1;H=c[b+80>>2]|0;c[46509]=(c[46509]|0)+H;f=b+88|0;while(1){C=c[f>>2]|0;if(!C){D=4;break}f=c[C+16>>2]|0;if(!(a[f+112>>0]|0)){D=5;break}else f=f+116|0}do if((D|0)==4){Pw(1,101693,g)|0;f=0}else if((D|0)==5){B=c[b+84>>2]|0;if(!(uJ(H,B,b)|0)){g=H<<3;if((g|0)>(c[46510]|0)){f=c[46511]|0;if(!f)f=vH(H<<7)|0;else f=xH(f,H<<7)|0;c[46511]=f;c[46510]=g}a:do if((H|0)>1?+h[B+8>>3]>+h[B+40>>3]:0){f=0;while(1){if((f|0)==(H|0)){p=1;break a}z=B+(f<<5)+24|0;m=+h[z>>3];A=B+(f<<5)+8|0;h[z>>3]=-+h[A>>3];h[A>>3]=-m;f=f+1|0}}else p=0;while(0);r=c[C>>2]&3;z=C+48|0;f=c[((r|0)==3?C:z)+40>>2]|0;A=C+-48|0;if((f|0)==(c[((r|0)==2?C:A)+40>>2]|0)){c[i>>2]=ry(f)|0;Pw(1,101800,i)|0;f=0;break}o=H+-1|0;q=c[46511]|0;r=q;f=0;j=0;b:while(1){if((j|0)>=(H|0)){j=o;n=f;break}if((j|0)>0)g=+h[B+(j<<5)+8>>3]>+h[B+(j+-1<<5)+8>>3]?-1:1;else g=0;if((j|0)<(o|0))i=+h[B+(j+1<<5)+8>>3]>+h[B+(j<<5)+8>>3]?1:-1;else i=0;c:do if((g|0)!=(i|0))if((g|0)==1|(i|0)==-1){g=B+(j<<5)|0;h[q+(f<<4)>>3]=+h[g>>3];i=f+1|0;h[q+(f<<4)+8>>3]=+h[B+(j<<5)+24>>3];h[q+(i<<4)>>3]=+h[g>>3];g=B+(j<<5)+8|0;D=29;break}else{g=B+(j<<5)+16|0;h[q+(f<<4)>>3]=+h[g>>3];i=f+1|0;h[q+(f<<4)+8>>3]=+h[B+(j<<5)+8>>3];h[q+(i<<4)>>3]=+h[g>>3];g=B+(j<<5)+24|0;D=29;break}else{switch(g|0){case -1:break c;case 0:break;default:{D=28;break b}}g=B+(j<<5)|0;h[q+(f<<4)>>3]=+h[g>>3];i=f+1|0;h[q+(f<<4)+8>>3]=+h[B+(j<<5)+24>>3];h[q+(i<<4)>>3]=+h[g>>3];g=B+(j<<5)+8|0;D=29}while(0);if((D|0)==29){D=0;h[q+(i<<4)+8>>3]=+h[g>>3];f=f+2|0}j=j+1|0}if((D|0)==28){c[n>>2]=g;c[n+4>>2]=g;c[n+8>>2]=480;Pw(1,101735,n)|0;f=0;break}d:while(1){if((j|0)<=-1)break;if((j|0)<(o|0))f=+h[B+(j<<5)+8>>3]>+h[B+(j+1<<5)+8>>3]?-1:1;else f=0;if((j|0)>0)g=+h[B+(j+-1<<5)+8>>3]>+h[B+(j<<5)+8>>3]?1:-1;else g=0;e:do if((f|0)!=(g|0))if((f|0)==1|(g|0)==-1){f=B+(j<<5)|0;h[q+(n<<4)>>3]=+h[f>>3];g=n+1|0;h[q+(n<<4)+8>>3]=+h[B+(j<<5)+24>>3];h[q+(g<<4)>>3]=+h[f>>3];f=B+(j<<5)+8|0;i=2;break}else{f=B+(j<<5)+16|0;h[q+(n<<4)>>3]=+h[f>>3];g=n+1|0;h[q+(n<<4)+8>>3]=+h[B+(j<<5)+8>>3];h[q+(g<<4)>>3]=+h[f>>3];f=B+(j<<5)+24|0;i=2;break}else switch(f|0){case 0:{f=B+(j<<5)+16|0;h[q+(n<<4)>>3]=+h[f>>3];g=n+1|0;h[q+(n<<4)+8>>3]=+h[B+(j<<5)+8>>3];h[q+(g<<4)>>3]=+h[f>>3];f=B+(j<<5)+24|0;i=2;break e}case -1:{N=B+(j<<5)+16|0;h[q+(n<<4)>>3]=+h[N>>3];f=B+(j<<5)+8|0;i=n+1|0;h[q+(n<<4)+8>>3]=+h[f>>3];h[q+(i<<4)>>3]=+h[N>>3];N=B+(j<<5)+24|0;M=n+2|0;h[q+(i<<4)+8>>3]=+h[N>>3];i=B+(j<<5)|0;h[q+(M<<4)>>3]=+h[i>>3];g=n+3|0;h[q+(M<<4)+8>>3]=+h[N>>3];h[q+(g<<4)>>3]=+h[i>>3];i=4;break e}default:{D=42;break d}}while(0);h[q+(g<<4)+8>>3]=+h[f>>3];j=j+-1|0;n=n+i|0}if((D|0)==42){c[s>>2]=f;c[s+4>>2]=f;c[s+8>>2]=513;Pw(1,101735,s)|0;f=0;break}f:do if(!p)f=0;else{f=0;while(1){if((f|0)>=(H|0)){f=0;break}M=B+(f<<5)+24|0;m=+h[M>>3];N=B+(f<<5)+8|0;h[M>>3]=-+h[N>>3];h[N>>3]=-m;f=f+1|0}while(1){if((f|0)>=(n|0)){f=0;break f}N=q+(f<<4)+8|0;h[N>>3]=-+h[N>>3];f=f+1|0}}while(0);while(1){if((f|0)>=(H|0))break;h[B+(f<<5)>>3]=2147483647.0;h[B+(f<<5)+16>>3]=-2147483648.0;f=f+1|0}c[t>>2]=r;i=t+4|0;c[i>>2]=n;h[u>>3]=+h[b>>3];h[u+8>>3]=+h[b+8>>3];h[u+16>>3]=+h[b+40>>3];h[u+24>>3]=+h[b+48>>3];if((TU(t,u,I)|0)<0){Pw(1,101839,v)|0;f=0;break}if(!e){g=c[i>>2]|0;f=c[46504]|0;if((g|0)>(c[46503]|0)){if(!f)f=vH(g<<5)|0;else f=xH(f,g<<5)|0;c[46504]=f;g=c[i>>2]|0;c[46503]=g}j=c[46511]|0;i=0;while(1){if((i|0)>=(g|0))break;M=f+(i<<5)|0;N=j+(i<<4)|0;c[M>>2]=c[N>>2];c[M+4>>2]=c[N+4>>2];c[M+8>>2]=c[N+8>>2];c[M+12>>2]=c[N+12>>2];M=f+(i<<5)+16|0;N=i+1|0;v=j+(((N|0)%(g|0)|0)<<4)|0;c[M>>2]=c[v>>2];c[M+4>>2]=c[v+4>>2];c[M+8>>2]=c[v+8>>2];c[M+12>>2]=c[v+12>>2];i=N}if(!(a[b+29>>0]|0)){k=0.0;m=0.0}else{m=+h[b+16>>3];k=+E(+m);m=+F(+m)}h[w+8>>3]=m;h[w>>3]=k;if(!(a[b+69>>0]|0)){k=0.0;m=0.0}else{m=+h[b+56>>3];k=-+E(+m);m=-+F(+m)}h[w+24>>3]=m;h[w+16>>3]=k;c[G>>2]=c[I>>2];c[G+4>>2]=c[I+4>>2];if((xU(f,g,G,w,y)|0)<0){Pw(1,101878,x)|0;f=0;break}}else{c[G>>2]=c[I>>2];c[G+4>>2]=c[I+4>>2];oV(G,y)}n=y+4|0;if(!(pJ(c[n>>2]|0)|0)){f=0;while(1){if((f|0)>=(H|0))break;h[B+(f<<5)>>3]=2147483647.0;h[B+(f<<5)+16>>3]=-2147483648.0;f=f+1|0}i=c[n>>2]|0;j=c[46505]|0;g=c[y>>2]|0;f=0;while(1){if((f|0)>=(i|0)){i=1;f=10;g=0;break}N=j+(f<<4)|0;M=g+(f<<4)|0;c[N>>2]=c[M>>2];c[N+4>>2]=c[M+4>>2];c[N+8>>2]=c[M+8>>2];c[N+12>>2]=c[M+12>>2];f=f+1|0}while(1){if(!((g|0)<15&i<<24>>24!=0))break;vJ(B,H,c[46505]|0,c[n>>2]|0,f);j=0;while(1){if((j|0)>=(H|0))break;if(+h[B+(j<<5)>>3]==2147483647.0){D=82;break}if(+h[B+(j<<5)+16>>3]==-2147483648.0){D=82;break}j=j+1|0}if((D|0)==82){D=0;N=f<<1;f=N;g=(N|0)>(2147483647/(H|0)|0|0)?15:g}i=(j|0)==(H|0)?0:i;g=g+1|0}if(i<<24>>24){M=ry(c[((c[C>>2]&3|0)==3?C:z)+40>>2]|0)|0;N=ry(c[((c[C>>2]&3|0)==2?C:A)+40>>2]|0)|0;c[K>>2]=M;c[K+4>>2]=N;Pw(0,101916,K)|0;c[G>>2]=c[I>>2];c[G+4>>2]=c[I+4>>2];oV(G,J);vJ(B,H,c[J>>2]|0,c[J+4>>2]|0,10);D_(c[J>>2]|0)}c[d>>2]=c[n>>2];f=c[46505]|0}else f=0}else f=0}while(0);l=L;return f|0}function uJ(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0.0,g=0.0,i=0,j=0,k=0,m=0.0,n=0.0,o=0,p=0.0,q=0.0,r=0.0,s=0.0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0.0,L=0,M=0,N=0,O=0.0,P=0,Q=0,R=0;R=l;l=l+32|0;I=R+16|0;H=R+8|0;k=R;e=0;j=0;while(1){if((j|0)>=(a|0))break;i=b+(j<<5)|0;s=+h[b+(j<<5)+8>>3]-+h[b+(j<<5)+24>>3];if(!((s>=0.0?s:-s)<.01)?(s=+h[i>>3]-+h[b+(j<<5)+16>>3],!((s>=0.0?s:-s)<.01)):0){if((e|0)!=(j|0)){P=b+(e<<5)|0;c[P>>2]=c[i>>2];c[P+4>>2]=c[i+4>>2];c[P+8>>2]=c[i+8>>2];c[P+12>>2]=c[i+12>>2];c[P+16>>2]=c[i+16>>2];c[P+20>>2]=c[i+20>>2];c[P+24>>2]=c[i+24>>2];c[P+28>>2]=c[i+28>>2]}e=e+1|0}j=j+1|0}J=b+16|0;do if(!(+h[b>>3]>+h[J>>3])?(L=b+8|0,N=b+24|0,!(+h[L>>3]>+h[N>>3])):0){P=e+-1|0;M=c[15686]|0;w=0;while(1){if((w|0)>=(P|0))break;D=w+1|0;E=b+(D<<5)|0;f=+h[E>>3];F=b+(D<<5)+16|0;g=+h[F>>3];if(f>g){Q=16;break}A=b+(D<<5)+8|0;m=+h[A>>3];B=b+(D<<5)+24|0;n=+h[B>>3];if(m>n){Q=16;break}G=b+(w<<5)+16|0;v=+h[G>>3]>3]>g;a=u&1;z=b+(w<<5)+24|0;t=+h[z>>3]>3]>n;i=k&1;x=a+e+j+i|0;o=(x|0)!=0;if(!(0==0|o^1)){c[I>>2]=w;c[I+4>>2]=D;g1(M,102116,I)|0;wJ(d)}a:do if(o){if(!v)if(!u)if(!t){if(k){k=0;o=e;e=B;i=y;Q=24}}else{k=i;j=0;o=e;e=A;i=z;Q=24}else{k=i;a=0;o=e;e=F;i=C;Q=24}else{k=i;o=0;e=E;i=G;Q=24}if((Q|0)==24){Q=0;w=~~+h[i>>3];h[i>>3]=+h[e>>3];h[e>>3]=+(w|0);i=k;e=o}o=x+-1|0;k=0;while(1){if((k|0)>=(o|0))break a;do if((e|0)!=1){if((a|0)==1){s=+(~~((+h[F>>3]+ +h[C>>3])*.5+.5)|0);h[F>>3]=s;h[C>>3]=s;a=0;break}if((j|0)==1){s=+(~~((+h[A>>3]+ +h[z>>3])*.5+.5)|0);h[A>>3]=s;h[z>>3]=s;j=0;break}if((i|0)==1){s=+(~~((+h[B>>3]+ +h[y>>3])*.5+.5)|0);h[B>>3]=s;h[y>>3]=s;i=0}}else{s=+(~~((+h[E>>3]+ +h[G>>3])*.5+.5)|0);h[E>>3]=s;h[G>>3]=s;e=0}while(0);k=k+1|0}}while(0);p=+h[C>>3];q=+h[G>>3];r=+h[E>>3];s=+h[F>>3];i=xJ(~~p,~~q,~~r,~~s)|0;n=+h[y>>3];m=+h[z>>3];g=+h[A>>3];f=+h[B>>3];e=xJ(~~n,~~m,~~g,~~f)|0;if(!((i|0)!=0&(e|0)!=0)){w=D;continue}if((i|0)<(e|0)){B=q-p>s-r;w=q>3]=B?(w?r:s):w?q:p;w=D;continue}else{B=m-n>f-g;w=m>3]=B?(w?g:f):w?m:n;w=D;continue}}if((Q|0)==16){c[H>>2]=D;Pw(1,102070,H)|0;wJ(d);e=1;break}f=+h[d>>3];g=+h[b>>3];if(!(((!(f+h[J>>3]):0)?(K=+h[d+8>>3],!(K<+h[L>>3])):0)?!(K>+h[N>>3]):0)){if(0){E1(102159,42,1,M)|0;wJ(d);g=+h[b>>3];f=+h[d>>3]}if(f>3]=g;else g=f;f=+h[J>>3];if(g>f)h[d>>3]=f;e=d+8|0;g=+h[e>>3];f=+h[L>>3];if(g>3]=f;g=f}f=+h[N>>3];if(g>f)h[e>>3]=f}i=d+40|0;f=+h[i>>3];e=b+(P<<5)|0;g=+h[e>>3];if(((!(f+h[b+(P<<5)+16>>3]):0)?(O=+h[d+48>>3],!(O<+h[b+(P<<5)+8>>3])):0)?!(O>+h[b+(P<<5)+24>>3]):0){e=0;break}if(0){E1(102202,39,1,M)|0;wJ(d);g=+h[e>>3];f=+h[i>>3]}if(f>3]=g;f=g}g=+h[b+(P<<5)+16>>3];if(f>g)h[i>>3]=g;e=d+48|0;f=+h[e>>3];g=+h[b+(P<<5)+8>>3];if(f>3]=g;else g=f;f=+h[b+(P<<5)+24>>3];if(g>f){h[e>>3]=f;e=0}else e=0}else Q=12;while(0);if((Q|0)==12){Pw(1,102025,k)|0;wJ(d);e=1}l=R;return e|0}function vJ(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,l=0,m=0.0,n=0.0,o=0,p=0,q=0,r=0,s=0,t=0.0,u=0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0;s=O(e,b)|0;t=1.0/+(s|0);e=0;a:while(1){u=e+3|0;if((u|0)>=(d|0))break;o=c+(e<<4)|0;p=c+(e<<4)+8|0;r=e+1|0;q=c+(r<<4)|0;r=c+(r<<4)+8|0;j=e+2|0;i=c+(j<<4)|0;j=c+(j<<4)+8|0;k=c+(u<<4)|0;l=c+(u<<4)+8|0;g=0;while(1){if((g|0)>(s|0)){e=u;continue a}v=t*+(g|0);m=+h[o>>3];n=+h[p>>3];y=+h[q>>3];w=+h[r>>3];z=+h[i>>3];x=+h[j>>3];m=(y-m)*v+m;n=(w-n)*v+n;y=(z-y)*v+y;w=(x-w)*v+w;m=(y-m)*v+m;n=(w-n)*v+n;m=((z-y+(+h[k>>3]-z)*v)*v+y-m)*v+m;n=((x-w+(+h[l>>3]-x)*v)*v+w-n)*v+n;f=0;while(1){if((f|0)>=(b|0))break;if(n<=+h[a+(f<<5)+24>>3]+.0001?n>=+h[a+(f<<5)+8>>3]+-.0001:0){e=a+(f<<5)|0;if(+h[e>>3]>m)h[e>>3]=m;e=a+(f<<5)+16|0;if(+h[e>>3]>3]=m}f=f+1|0}g=g+1|0}}return}function wJ(b){b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0.0,o=0.0,p=0.0,q=0.0,r=0;m=l;l=l+112|0;j=m+80|0;k=m+48|0;i=m+8|0;g=m;e=c[15686]|0;f=b+80|0;c[g>>2]=c[f>>2];g1(e,102242,g)|0;g=b+84|0;d=0;while(1){if((d|0)>=(c[f>>2]|0))break;r=c[g>>2]|0;q=+h[r+(d<<5)>>3];p=+h[r+(d<<5)+8>>3];o=+h[r+(d<<5)+16>>3];n=+h[r+(d<<5)+24>>3];c[i>>2]=d;h[i+8>>3]=q;h[i+16>>3]=p;h[i+24>>3]=o;h[i+32>>3]=n;g1(e,102253,i)|0;d=d+1|0}q=+h[b+8>>3];p=+h[b+16>>3];r=a[b+29>>0]|0?102284:102296;h[k>>3]=+h[b>>3];h[k+8>>3]=q;h[k+16>>3]=p;c[k+24>>2]=r;g1(e,102312,k)|0;p=+h[b+48>>3];q=+h[b+56>>3];r=a[b+69>>0]|0?102284:102296;h[j>>3]=+h[b+40>>3];h[j+8>>3]=p;h[j+16>>3]=q;c[j+24>>2]=r;g1(e,102363,j)|0;l=m;return}function xJ(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;do if((b|0)>(c|0)&(d|0)>(a|0)){if(!((c|0)>(a|0)|(d|0)<(a|0))){a=d-a|0;break}if((b|0)<(c|0)|(b|0)>(d|0)){b=b-a|0;a=d-c|0;a=(b|0)<(a|0)?b:a;break}else{a=b-c|0;break}}else a=0;while(0);return a|0}function yJ(a,b){a=a|0;b=b|0;return tJ(a,b,1)|0}function zJ(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;j=l;l=l+80|0;g=j;i=1;f=b;while(1){h=f;f=c[(c[f+16>>2]|0)+172>>2]|0;if(!((f|0)!=0&(h|0)!=(f|0)))break;else i=i+1|0}if((i|0)>=21)g=uH(i<<2)|0;h=0;f=b;while(1){if((h|0)>=(i|0))break;c[g+(h<<2)>>2]=f;h=h+1|0;f=c[(c[f+16>>2]|0)+172>>2]|0}AJ(a,g,i,d,e);if((i|0)>20)D_(g);l=j;return}function AJ(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0,j=0,k=0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0,s=0.0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0.0,M=0.0,N=0.0,P=0,Q=0;K=l;l=l+304|0;A=K+272|0;z=K+208|0;G=K+96|0;H=K+32|0;I=K+16|0;J=K;r=K+192|0;y=K+176|0;i=K+160|0;B=K+296|0;D=K+288|0;j=c[d>>2]|0;w=c[j>>2]&3;k=j+-48|0;E=c[((w|0)==2?j:k)+40>>2]|0;t=G+16|0;w=(c[(c[((w|0)==3?j:j+48|0)+40>>2]|0)+16>>2]|0)+16|0;x=j+16|0;F=(c[x>>2]|0)+16|0;c[z>>2]=c[w>>2];c[z+4>>2]=c[w+4>>2];c[z+8>>2]=c[w+8>>2];c[z+12>>2]=c[w+12>>2];c[A>>2]=c[F>>2];c[A+4>>2]=c[F+4>>2];c[A+8>>2]=c[F+8>>2];c[A+12>>2]=c[F+12>>2];BJ(r,z,A);c[G>>2]=c[r>>2];c[G+4>>2]=c[r+4>>2];c[G+8>>2]=c[r+8>>2];c[G+12>>2]=c[r+12>>2];c[t>>2]=c[r>>2];c[t+4>>2]=c[r+4>>2];c[t+8>>2]=c[r+8>>2];c[t+12>>2]=c[r+12>>2];c[I>>2]=c[r>>2];c[I+4>>2]=c[r+4>>2];c[I+8>>2]=c[r+8>>2];c[I+12>>2]=c[r+12>>2];r=G+32|0;F=G+48|0;w=(c[E+16>>2]|0)+16|0;x=(c[x>>2]|0)+56|0;c[z>>2]=c[w>>2];c[z+4>>2]=c[w+4>>2];c[z+8>>2]=c[w+8>>2];c[z+12>>2]=c[w+12>>2];c[A>>2]=c[x>>2];c[A+4>>2]=c[x+4>>2];c[A+8>>2]=c[x+8>>2];c[A+12>>2]=c[x+12>>2];BJ(y,z,A);c[F>>2]=c[y>>2];c[F+4>>2]=c[y+4>>2];c[F+8>>2]=c[y+8>>2];c[F+12>>2]=c[y+12>>2];c[r>>2]=c[y>>2];c[r+4>>2]=c[y+4>>2];c[r+8>>2]=c[y+8>>2];c[r+12>>2]=c[y+12>>2];c[J>>2]=c[y>>2];c[J+4>>2]=c[y+4>>2];c[J+8>>2]=c[y+8>>2];c[J+12>>2]=c[y+12>>2];a:do if((e|0)!=1&(a[191874]|0)==0){m=+h[G>>3];n=+h[F>>3];L=m-n;o=+h[G+8>>3];p=+h[G+56>>3];s=o-p;q=s*s;if(q+L*L<1.0e-06){c[t>>2]=c[G>>2];c[t+4>>2]=c[G+4>>2];c[t+8>>2]=c[G+8>>2];c[t+12>>2]=c[G+12>>2];c[r>>2]=c[F>>2];c[r+4>>2]=c[F+4>>2];c[r+8>>2]=c[F+8>>2];c[r+12>>2]=c[F+12>>2];y=G+24|0;x=G+40|0;n=0.0;m=0.0}else{M=n-m;L=+C(+(q+M*M));w=c[(c[(c[b+60>>2]|0)+16>>2]|0)+248>>2]|0;N=+((O(w,e+-1|0)|0)/2|0|0);q=s*N/L;h[t>>3]=q+m;m=M*N/L;y=G+24|0;h[y>>3]=m+o;h[r>>3]=q+n;x=G+40|0;h[x>>3]=p+m;m=+(0-w|0);n=M*m/L;m=s*m/L}f=(f|0)==6;u=D+4|0;v=B+4|0;j=0;while(1){if((j|0)>=(e|0))break a;w=c[d+(j<<2)>>2]|0;k=w+-48|0;b:do if((c[((c[w>>2]&3|0)==2?w:k)+40>>2]|0)==(E|0)){c[I>>2]=c[G>>2];c[I+4>>2]=c[G+4>>2];c[I+8>>2]=c[G+8>>2];c[I+12>>2]=c[G+12>>2];c[J>>2]=c[F>>2];c[J+4>>2]=c[F+4>>2];c[J+8>>2]=c[F+8>>2];c[J+12>>2]=c[F+12>>2];i=0;while(1){if((i|0)==4)break b;P=H+(i<<4)|0;Q=G+(i<<4)|0;c[P>>2]=c[Q>>2];c[P+4>>2]=c[Q+4>>2];c[P+8>>2]=c[Q+8>>2];c[P+12>>2]=c[Q+12>>2];i=i+1|0}}else{c[I>>2]=c[F>>2];c[I+4>>2]=c[F+4>>2];c[I+8>>2]=c[F+8>>2];c[I+12>>2]=c[F+12>>2];c[J>>2]=c[G>>2];c[J+4>>2]=c[G+4>>2];c[J+8>>2]=c[G+8>>2];c[J+12>>2]=c[G+12>>2];i=0;while(1){if((i|0)==4)break b;Q=H+(3-i<<4)|0;P=G+(i<<4)|0;c[Q>>2]=c[P>>2];c[Q+4>>2]=c[P+4>>2];c[Q+8>>2]=c[P+8>>2];c[Q+12>>2]=c[P+12>>2];i=i+1|0}}while(0);if(f){c[u>>2]=4;c[D>>2]=z;i=0;while(1){if((i|0)==4)break;Q=z+(i<<4)|0;P=H+(i<<4)|0;c[Q>>2]=c[P>>2];c[Q+4>>2]=c[P+4>>2];c[Q+8>>2]=c[P+8>>2];c[Q+12>>2]=c[P+12>>2];i=i+1|0}c[A>>2]=c[D>>2];c[A+4>>2]=c[D+4>>2];oV(A,B);QK(w,c[((c[w>>2]&3|0)==2?w:k)+40>>2]|0,c[B>>2]|0,c[v>>2]|0,g)}else QK(w,c[((c[w>>2]&3|0)==2?w:k)+40>>2]|0,H,4,g);c[z>>2]=c[I>>2];c[z+4>>2]=c[I+4>>2];c[z+8>>2]=c[I+8>>2];c[z+12>>2]=c[I+12>>2];c[A>>2]=c[J>>2];c[A+4>>2]=c[J+4>>2];c[A+8>>2]=c[J+8>>2];c[A+12>>2]=c[J+12>>2];jL(b,w,z,A);h[t>>3]=+h[t>>3]+m;h[y>>3]=+h[y>>3]+n;h[r>>3]=+h[r>>3]+m;h[x>>3]=+h[x>>3]+n;j=j+1|0}}else{if((f|0)==4){CJ(i,b);c[A>>2]=c[i>>2];c[A+4>>2]=c[i+4>>2];c[A+8>>2]=c[i+8>>2];c[A+12>>2]=c[i+12>>2];DJ(G,A)}QK(j,c[((c[j>>2]&3|0)==2?j:k)+40>>2]|0,G,4,g);c[z>>2]=c[I>>2];c[z+4>>2]=c[I+4>>2];c[z+8>>2]=c[I+8>>2];c[z+12>>2]=c[I+12>>2];c[A>>2]=c[J>>2];c[A+4>>2]=c[J+4>>2];c[A+8>>2]=c[J+8>>2];c[A+12>>2]=c[J+12>>2];jL(b,j,z,A)}while(0);l=K;return}function BJ(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0;d=+h[c+8>>3]+ +h[b+8>>3];h[a>>3]=+h[c>>3]+ +h[b>>3];h[a+8>>3]=d;return}function CJ(a,b){a=a|0;b=b|0;b=c[b+16>>2]|0;h[22920]=(+h[b+32>>3]+ +h[b+16>>3])*.5;h[22921]=(+h[b+40>>3]+ +h[b+24>>3])*.5;c[a>>2]=c[45840];c[a+4>>2]=c[45841];c[a+8>>2]=c[45842];c[a+12>>2]=c[45843];return}function DJ(a,b){a=a|0;b=b|0;var c=0.0,d=0.0,e=0.0,f=0.0,g=0.0,i=0.0;f=+h[a>>3];d=+h[a+48>>3];i=(d+f)*.5;g=+h[a+8>>3];c=+h[a+56>>3];e=(c+g)*.5;f=d-f;g=c-g;f=+C(+(g*g+f*f))*.2;g=+h[b>>3]-i;c=+h[b+8>>3]-e;d=+C(+(c*c+g*g));if(!(d==0.0)){g=i-g/d*f;i=e-c/d*f;h[a+32>>3]=g;h[a+16>>3]=g;h[a+40>>3]=i;h[a+24>>3]=i}return}function EJ(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0,k=0,m=0.0,n=0,o=0.0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,D=0,E=0,F=0.0,G=0,H=0.0,I=0.0,J=0.0;E=l;l=l+208|0;t=E+192|0;s=E+176|0;B=E+32|0;w=E+16|0;x=E;y=E+160|0;z=E+144|0;u=E+128|0;v=E+112|0;g=e&2130706432;A=(e&8|0)==0?((g|0)==0?4:g):8;if((A|0)==436207616)FJ(a,b,d,f);else{D=uH((d<<6)+64|0)|0;p=d+-1|0;q=x+8|0;r=w+8|0;o=12.0;e=0;while(1){if((e|0)>=(d|0))break;n=b+(e<<4)|0;c[w>>2]=c[n>>2];c[w+4>>2]=c[n+4>>2];c[w+8>>2]=c[n+8>>2];c[w+12>>2]=c[n+12>>2];if((e|0)<(p|0)){e=e+1|0;n=b+(e<<4)|0;c[x>>2]=c[n>>2];c[x+4>>2]=c[n+4>>2];c[x+8>>2]=c[n+8>>2];c[x+12>>2]=c[n+12>>2]}else{c[x>>2]=c[b>>2];c[x+4>>2]=c[b+4>>2];c[x+8>>2]=c[b+8>>2];c[x+12>>2]=c[b+12>>2];e=e+1|0}m=+h[x>>3]-+h[w>>3];F=+h[q>>3]-+h[r>>3];m=+C(+(F*F+m*m))*.3333333333333333;o=o=(d|0))break;g=b+(i<<4)|0;c[w>>2]=c[g>>2];c[w+4>>2]=c[g+4>>2];c[w+8>>2]=c[g+8>>2];c[w+12>>2]=c[g+12>>2];if((i|0)<(p|0)){g=b+(i+1<<4)|0;c[x>>2]=c[g>>2];c[x+4>>2]=c[g+4>>2];c[x+8>>2]=c[g+8>>2];c[x+12>>2]=c[g+12>>2]}else{c[x>>2]=c[b>>2];c[x+4>>2]=c[b+4>>2];c[x+8>>2]=c[b+8>>2];c[x+12>>2]=c[b+12>>2]}m=+h[x>>3]-+h[w>>3];F=+h[q>>3]-+h[r>>3];m=o/+C(+(F*F+m*m));m=k?m*.3333333333333333:j?m*.5:m;g=D+(e<<4)|0;if(n){c[s>>2]=c[w>>2];c[s+4>>2]=c[w+4>>2];c[s+8>>2]=c[w+8>>2];c[s+12>>2]=c[w+12>>2];c[t>>2]=c[x>>2];c[t+4>>2]=c[x+4>>2];c[t+8>>2]=c[x+8>>2];c[t+12>>2]=c[x+12>>2];GJ(y,m*.5,s,t);c[g>>2]=c[y>>2];c[g+4>>2]=c[y+4>>2];c[g+8>>2]=c[y+8>>2];c[g+12>>2]=c[y+12>>2]}else{c[g>>2]=c[w>>2];c[g+4>>2]=c[w+4>>2];c[g+8>>2]=c[w+8>>2];c[g+12>>2]=c[w+12>>2]}g=D+(e+1<<4)|0;c[s>>2]=c[w>>2];c[s+4>>2]=c[w+4>>2];c[s+8>>2]=c[w+8>>2];c[s+12>>2]=c[w+12>>2];c[t>>2]=c[x>>2];c[t+4>>2]=c[x+4>>2];c[t+8>>2]=c[x+8>>2];c[t+12>>2]=c[x+12>>2];GJ(z,m,s,t);c[g>>2]=c[z>>2];c[g+4>>2]=c[z+4>>2];c[g+8>>2]=c[z+8>>2];c[g+12>>2]=c[z+12>>2];g=e+3|0;G=D+(e+2<<4)|0;c[s>>2]=c[w>>2];c[s+4>>2]=c[w+4>>2];c[s+8>>2]=c[w+8>>2];c[s+12>>2]=c[w+12>>2];c[t>>2]=c[x>>2];c[t+4>>2]=c[x+4>>2];c[t+8>>2]=c[x+8>>2];c[t+12>>2]=c[x+12>>2];GJ(u,1.0-m,s,t);c[G>>2]=c[u>>2];c[G+4>>2]=c[u+4>>2];c[G+8>>2]=c[u+8>>2];c[G+12>>2]=c[u+12>>2];if(n){G=D+(g<<4)|0;c[s>>2]=c[w>>2];c[s+4>>2]=c[w+4>>2];c[s+8>>2]=c[w+8>>2];c[s+12>>2]=c[w+12>>2];c[t>>2]=c[x>>2];c[t+4>>2]=c[x+4>>2];c[t+8>>2]=c[x+8>>2];c[t+12>>2]=c[x+12>>2];GJ(v,1.0-m*.5,s,t);c[G>>2]=c[v>>2];c[G+4>>2]=c[v+4>>2];c[G+8>>2]=c[v+8>>2];c[G+12>>2]=c[v+12>>2];e=e+4|0}else e=g;i=i+1|0}k=D+(e<<4)|0;c[k>>2]=c[D>>2];c[k+4>>2]=c[D+4>>2];c[k+8>>2]=c[D+8>>2];c[k+12>>2]=c[D+12>>2];k=D+(e+1<<4)|0;j=D+16|0;c[k>>2]=c[j>>2];c[k+4>>2]=c[j+4>>2];c[k+8>>2]=c[j+8>>2];c[k+12>>2]=c[j+12>>2];e=D+(e+2<<4)|0;k=D+32|0;c[e>>2]=c[k>>2];c[e+4>>2]=c[k+4>>2];c[e+8>>2]=c[k+8>>2];c[e+12>>2]=c[k+12>>2];e=A&2147483647;a:do if((e|0)<201326592){if((e|0)>=83886080){if((e|0)<134217728){if((e|0)<100663296){switch(e|0){case 83886080:break;default:break a}if((d|0)==4){G=uH(192)|0;c[G>>2]=c[b>>2];c[G+4>>2]=c[b+4>>2];c[G+8>>2]=c[b+8>>2];c[G+12>>2]=c[b+12>>2];p=G+16|0;t=b+16|0;c[p>>2]=c[t>>2];c[p+4>>2]=c[t+4>>2];c[p+8>>2]=c[t+8>>2];c[p+12>>2]=c[t+12>>2];p=D+48|0;t=D+64|0;o=+h[t>>3];n=G+32|0;h[n>>3]=o;q=D+56|0;r=D+72|0;H=+h[r>>3];z=G+40|0;h[z>>3]=H;F=+h[p>>3]+o-+h[k>>3];u=G+48|0;h[u>>3]=F;J=+h[q>>3]+H-+h[D+40>>3];x=G+56|0;h[x>>3]=J;I=+h[t>>3]+F-+h[p>>3];p=G+64|0;h[p>>3]=I;m=+h[r>>3]+J-+h[q>>3];q=G+72|0;h[q>>3]=m;r=G+80|0;h[r>>3]=o+I-F;h[G+88>>3]=H+m-J;t=D+96|0;v=D+80|0;J=+h[v>>3];d=G+144|0;h[d>>3]=J;w=D+104|0;s=D+88|0;m=+h[s>>3];h[G+152>>3]=m;H=+h[t>>3]+J-+h[D+112>>3];y=G+128|0;h[y>>3]=H;F=+h[w>>3]+m-+h[D+120>>3];A=G+136|0;h[A>>3]=F;I=+h[v>>3]+H-+h[t>>3];t=G+112|0;h[t>>3]=I;o=+h[s>>3]+F-+h[w>>3];w=G+120|0;h[w>>3]=o;s=G+96|0;h[s>>3]=J+I-H;v=G+104|0;h[v>>3]=m+o-F;k=G+160|0;j=b+32|0;c[k>>2]=c[j>>2];c[k+4>>2]=c[j+4>>2];c[k+8>>2]=c[j+8>>2];c[k+12>>2]=c[j+12>>2];k=G+176|0;b=b+48|0;c[k>>2]=c[b>>2];c[k+4>>2]=c[b+4>>2];c[k+8>>2]=c[b+8>>2];c[k+12>>2]=c[b+12>>2];_O(a,G,12,f);c[B>>2]=c[n>>2];c[B+4>>2]=c[n+4>>2];c[B+8>>2]=c[n+8>>2];c[B+12>>2]=c[n+12>>2];F=+h[n>>3];o=+h[u>>3];F=F+F-o;u=B+16|0;h[u>>3]=F;m=+h[z>>3];H=+h[x>>3];m=m+m-H;x=B+24|0;h[x>>3]=m;z=B+32|0;h[z>>3]=+h[p>>3]+F-o;b=B+40|0;h[b>>3]=+h[q>>3]+m-H;f=B+48|0;c[f>>2]=c[r>>2];c[f+4>>2]=c[r+4>>2];c[f+8>>2]=c[r+8>>2];c[f+12>>2]=c[r+12>>2];bP(a,B,4);c[B>>2]=c[s>>2];c[B+4>>2]=c[s+4>>2];c[B+8>>2]=c[s+8>>2];c[B+12>>2]=c[s+12>>2];H=+h[s>>3];m=+h[t>>3];H=H-(m-H);h[u>>3]=H;o=+h[v>>3];F=+h[w>>3];o=o-(F-o);h[x>>3]=o;h[z>>3]=+h[y>>3]+H-m;h[b>>3]=+h[A>>3]+o-F;c[f>>2]=c[d>>2];c[f+4>>2]=c[d+4>>2];c[f+8>>2]=c[d+8>>2];c[f+12>>2]=c[d+12>>2];bP(a,B,4);D_(G);break}else qa(102412,102423,737,102432)}if((e|0)<117440512){switch(e|0){case 100663296:break;default:break a}y=d+5|0;G=uH(y<<4)|0;z=b+16|0;H=+h[z>>3];H=(+h[b>>3]-H)*.625+H;h[G>>3]=H;A=b+40|0;J=+h[A>>3];d=b+24|0;v=D+48|0;w=D+56|0;x=D+72|0;J=(+h[d>>3]-J)*.5+J+(+h[w>>3]-+h[x>>3])*1.5;h[G+8>>3]=J;I=+h[z>>3];I=(+h[b>>3]-I)*.25+I;h[G+16>>3]=I;h[G+24>>3]=J;h[G+32>>3]=I;F=+h[A>>3];h[G+40>>3]=(+h[d>>3]-F)*.5+F;I=(+h[k>>3]-+h[v>>3])*.5+I;h[G+48>>3]=I;F=+h[A>>3];h[G+56>>3]=(+h[d>>3]-F)*.5+F;h[G+64>>3]=I;I=+h[A>>3];I=(+h[d>>3]-I)*.5+I+(+h[w>>3]-+h[x>>3]);h[G+72>>3]=I;h[G+80>>3]=H;h[G+88>>3]=I;h[G+96>>3]=H;I=I-(+h[w>>3]-+h[x>>3])*.25;h[G+104>>3]=I;h[G+112>>3]=+h[k>>3]+H-+h[v>>3];h[G+120>>3]=(+h[w>>3]-+h[x>>3])*.5+I;h[G+128>>3]=+h[G>>3];h[G+136>>3]=(+h[w>>3]-+h[x>>3])*.25+J;_O(a,G,y,f);h[B>>3]=+h[z>>3];J=+h[A>>3];h[B+8>>3]=(+h[d>>3]-J)*.5+J;h[B+16>>3]=+h[b>>3];h[B+24>>3]=(+h[b+8>>3]-+h[b+56>>3])*.5+J;bP(a,B,2);D_(G);break}else{switch(e|0){case 117440512:break;default:break a}d=d+1|0;G=uH(d<<4)|0;h[G>>3]=+h[j>>3];z=D+56|0;A=D+72|0;h[G+8>>3]=+h[D+24>>3]-(+h[z>>3]-+h[A>>3])*.5;h[G+16>>3]=+h[D+48>>3];J=+h[z>>3];h[G+24>>3]=J-(J-+h[A>>3])*.5;h[G+32>>3]=+h[b+32>>3];B=b+40|0;h[G+40>>3]=(+h[z>>3]-+h[A>>3])*.5+ +h[B>>3];h[G+48>>3]=+h[j>>3];h[G+56>>3]=(+h[z>>3]-+h[A>>3])*.5+ +h[B>>3];J=+h[b+8>>3];h[G+72>>3]=J-(J-+h[b+56>>3])*.5;h[G+64>>3]=+h[b>>3];_O(a,G,d,f);D_(G);break}}if((e|0)<167772160)if((e|0)<150994944){switch(e|0){case 134217728:break;default:break a}y=d+4|0;G=uH(y<<4)|0;z=b+16|0;F=+h[z>>3];x=D+48|0;F=(+h[b>>3]-F)*.5+F+(+h[k>>3]-+h[x>>3])*.25;h[G>>3]=F;A=b+40|0;J=+h[A>>3];d=b+24|0;J=(+h[d>>3]-J)*.5+J;h[G+8>>3]=J;h[G+16>>3]=F;v=D+56|0;w=D+72|0;H=(+h[v>>3]-+h[w>>3])*.5+J;h[G+24>>3]=H;F=(+h[k>>3]-+h[x>>3])*.5+F;h[G+32>>3]=F;h[G+40>>3]=H;h[G+48>>3]=F;F=(+h[v>>3]-+h[w>>3])*.5+H;h[G+56>>3]=F;I=+h[z>>3];I=(+h[b>>3]-I)*.5+I+(+h[k>>3]-+h[x>>3])*-.75;h[G+64>>3]=I;h[G+72>>3]=F;h[G+80>>3]=I;h[G+88>>3]=H;I=+h[z>>3];I=(+h[b>>3]-I)*.5+I+(+h[k>>3]-+h[x>>3])*-.25;h[G+96>>3]=I;h[G+104>>3]=H;h[G+112>>3]=I;h[G+120>>3]=J;_O(a,G,y,f);h[B>>3]=+h[z>>3];J=+h[A>>3];h[B+8>>3]=(+h[d>>3]-J)*.5+J;h[B+16>>3]=+h[b>>3];h[B+24>>3]=(+h[b+8>>3]-+h[b+56>>3])*.5+J;bP(a,B,2);D_(G);break}else{switch(e|0){case 150994944:break;default:break a}y=d+2|0;G=uH(y<<4)|0;z=b+16|0;H=+h[z>>3];x=D+48|0;H=(+h[b>>3]-H)*.5+H+(+h[k>>3]-+h[x>>3])*.75;h[G>>3]=H;A=b+40|0;J=+h[A>>3];d=b+24|0;J=(+h[d>>3]-J)*.5+J;h[G+8>>3]=J;h[G+16>>3]=H;v=D+56|0;w=D+72|0;H=(+h[v>>3]-+h[w>>3])*.25+J;h[G+24>>3]=H;I=+h[z>>3];h[G+32>>3]=(+h[b>>3]-I)*.5+I+(+h[k>>3]-+h[x>>3])*.25;I=(+h[v>>3]-+h[w>>3])*.5+H;h[G+40>>3]=I;F=+h[z>>3];h[G+48>>3]=(+h[b>>3]-F)*.5+F+(+h[k>>3]-+h[x>>3])*-.25;h[G+56>>3]=I;I=+h[z>>3];I=(+h[b>>3]-I)*.5+I+(+h[k>>3]-+h[x>>3])*-.75;h[G+64>>3]=I;h[G+72>>3]=H;h[G+80>>3]=I;h[G+88>>3]=J;_O(a,G,y,f);h[B>>3]=+h[z>>3];J=+h[A>>3];h[B+8>>3]=(+h[d>>3]-J)*.5+J;h[B+16>>3]=+h[b>>3];h[B+24>>3]=(+h[b+8>>3]-+h[b+56>>3])*.5+J;bP(a,B,2);D_(G);break}else if((e|0)<184549376){switch(e|0){case 167772160:break;default:break a}y=d+1|0;G=uH(y<<4)|0;z=b+16|0;H=+h[z>>3];v=D+48|0;H=+h[k>>3]+H+(+h[b>>3]-H)*.5-+h[v>>3];h[G>>3]=H;A=b+40|0;J=+h[A>>3];d=b+24|0;w=D+56|0;x=D+72|0;J=(+h[d>>3]-J)*.5+J+(+h[w>>3]-+h[x>>3])*.25;h[G+8>>3]=J;H=H-+h[k>>3]+ +h[v>>3];h[G+16>>3]=H;h[G+24>>3]=+h[w>>3]+J-+h[x>>3];h[G+32>>3]=H;H=(+h[w>>3]-+h[x>>3])*.5+J;h[G+40>>3]=H;I=+h[z>>3];I=(+h[b>>3]-I)*.25+I;h[G+48>>3]=I;h[G+56>>3]=H;h[G+64>>3]=I;h[G+72>>3]=J;_O(a,G,y,f);h[B>>3]=+h[z>>3];J=+h[A>>3];h[B+8>>3]=(+h[d>>3]-J)*.5+J;h[B+16>>3]=+h[b>>3];h[B+24>>3]=(+h[b+8>>3]-+h[b+56>>3])*.5+J;bP(a,B,2);D_(G);break}else{switch(e|0){case 184549376:break;default:break a}z=d+4|0;G=uH(z<<4)|0;y=b+16|0;H=+h[y>>3];I=+h[b>>3]-H;u=D+48|0;I=I*.125+H+(+h[k>>3]-+h[u>>3]+I)*.5;h[G>>3]=I;w=b+40|0;H=+h[w>>3];x=b+24|0;d=D+56|0;v=D+72|0;H=(+h[x>>3]-H)*.5+H+(+h[d>>3]-+h[v>>3])*.25;h[G+8>>3]=H;J=+h[y>>3];J=(+h[b>>3]-J)*.375+J;h[G+16>>3]=J;h[G+24>>3]=H;h[G+32>>3]=J;H=(+h[d>>3]-+h[v>>3])*.5+H;h[G+40>>3]=H;J=J-(+h[k>>3]-+h[u>>3])*.5;h[G+48>>3]=J;h[G+56>>3]=H;A=G+64|0;h[A>>3]=J;J=+h[w>>3];J=(+h[x>>3]-J)*.5+J+(+h[d>>3]-+h[v>>3])*-.25;h[G+72>>3]=J;H=I-(+h[k>>3]-+h[u>>3])*.5;h[G+80>>3]=H;h[G+88>>3]=J;h[G+96>>3]=H;J=J-(+h[d>>3]-+h[v>>3])*.5;h[G+104>>3]=J;v=G+112|0;h[v>>3]=I;h[G+120>>3]=J;_O(a,G,z,f);h[B>>3]=+h[y>>3];J=+h[w>>3];y=B+8|0;h[y>>3]=(+h[x>>3]-J)*.5+J;z=B+16|0;h[z>>3]=+h[A>>3];A=b+8|0;d=b+56|0;f=B+24|0;h[f>>3]=(+h[A>>3]-+h[d>>3])*.5+J;bP(a,B,2);h[B>>3]=+h[v>>3];J=+h[w>>3];h[y>>3]=(+h[x>>3]-J)*.5+J;h[z>>3]=+h[b>>3];h[f>>3]=(+h[A>>3]-+h[d>>3])*.5+J;bP(a,B,2);D_(G);break}}if((e|0)<33554432){if((e|0)<8){switch(e|0){case 4:break;default:break a}i=vH((d*96|0)+32|0)|0;e=0;g=0;while(1){j=g|1;k=i+(g<<4)|0;if((e|0)>=(d|0))break;b=e<<2;G=D+(b<<4)|0;c[k>>2]=c[G>>2];c[k+4>>2]=c[G+4>>2];c[k+8>>2]=c[G+8>>2];c[k+12>>2]=c[G+12>>2];G=i+(j<<4)|0;B=D+((b|1)<<4)|0;c[G>>2]=c[B>>2];c[G+4>>2]=c[B+4>>2];c[G+8>>2]=c[B+8>>2];c[G+12>>2]=c[B+12>>2];G=i+(g+2<<4)|0;c[G>>2]=c[B>>2];c[G+4>>2]=c[B+4>>2];c[G+8>>2]=c[B+8>>2];c[G+12>>2]=c[B+12>>2];G=i+(g+3<<4)|0;B=D+((b|2)<<4)|0;c[G>>2]=c[B>>2];c[G+4>>2]=c[B+4>>2];c[G+8>>2]=c[B+8>>2];c[G+12>>2]=c[B+12>>2];G=i+(g+4<<4)|0;c[G>>2]=c[B>>2];c[G+4>>2]=c[B+4>>2];c[G+8>>2]=c[B+8>>2];c[G+12>>2]=c[B+12>>2];G=i+(g+5<<4)|0;b=D+((b|3)<<4)|0;c[G>>2]=c[b>>2];c[G+4>>2]=c[b+4>>2];c[G+8>>2]=c[b+8>>2];c[G+12>>2]=c[b+12>>2];e=e+1|0;g=g+6|0}c[k>>2]=c[i>>2];c[k+4>>2]=c[i+4>>2];c[k+8>>2]=c[i+8>>2];c[k+12>>2]=c[i+12>>2];d=i+(j<<4)|0;G=i+16|0;c[d>>2]=c[G>>2];c[d+4>>2]=c[G+4>>2];c[d+8>>2]=c[G+8>>2];c[d+12>>2]=c[G+12>>2];aP(a,G,j,0,0,f&255);D_(i);break}if((e|0)<16777216){switch(e|0){case 8:break;default:break a}_O(a,b,d,f);g=B+16|0;e=0;while(1){if((e|0)>=(d|0))break a;G=e*3|0;f=D+(G+2<<4)|0;c[B>>2]=c[f>>2];c[B+4>>2]=c[f+4>>2];c[B+8>>2]=c[f+8>>2];c[B+12>>2]=c[f+12>>2];G=D+(G+4<<4)|0;c[g>>2]=c[G>>2];c[g+4>>2]=c[G+4>>2];c[g+8>>2]=c[G+8>>2];c[g+12>>2]=c[G+12>>2];bP(a,B,2);e=e+1|0}}switch(e|0){case 16777216:break;default:break a}g=d+1|0;i=uH(g<<4)|0;e=1;while(1){if((e|0)>=(d|0))break;G=i+(e<<4)|0;A=b+(e<<4)|0;c[G>>2]=c[A>>2];c[G+4>>2]=c[A+4>>2];c[G+8>>2]=c[A+8>>2];c[G+12>>2]=c[A+12>>2];e=e+1|0}b=d*3|0;A=D+(b+1<<4)|0;c[i>>2]=c[A>>2];c[i+4>>2]=c[A+4>>2];c[i+8>>2]=c[A+8>>2];c[i+12>>2]=c[A+12>>2];d=i+(d<<4)|0;G=D+(b+-1<<4)|0;c[d>>2]=c[G>>2];c[d+4>>2]=c[G+4>>2];c[d+8>>2]=c[G+8>>2];c[d+12>>2]=c[G+12>>2];_O(a,i,g,f);D_(i);c[B>>2]=c[G>>2];c[B+4>>2]=c[G+4>>2];c[B+8>>2]=c[G+8>>2];c[B+12>>2]=c[G+12>>2];G=B+16|0;c[G>>2]=c[A>>2];c[G+4>>2]=c[A+4>>2];c[G+8>>2]=c[A+8>>2];c[G+12>>2]=c[A+12>>2];f=B+32|0;h[f>>3]=+h[B>>3]+ +h[G>>3]-+h[D+(b<<4)>>3];h[B+40>>3]=+h[B+8>>3]+ +h[B+24>>3]-+h[D+(b<<4)+8>>3];bP(a,G,2);c[G>>2]=c[f>>2];c[G+4>>2]=c[f+4>>2];c[G+8>>2]=c[f+8>>2];c[G+12>>2]=c[f+12>>2];bP(a,B,2);break}else{if((e|0)<50331648){switch(e|0){case 33554432:break;default:break a}g=d+2|0;i=uH(g<<4)|0;c[i>>2]=c[b>>2];c[i+4>>2]=c[b+4>>2];c[i+8>>2]=c[b+8>>2];c[i+12>>2]=c[b+12>>2];j=i+16|0;c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];c[j+8>>2]=c[k+8>>2];c[j+12>>2]=c[k+12>>2];j=D+48|0;d=D+64|0;h[i+32>>3]=(+h[j>>3]-+h[d>>3])*.3333333333333333+ +h[k>>3];G=D+56|0;e=D+72|0;h[i+40>>3]=(+h[G>>3]-+h[e>>3])*.3333333333333333+ +h[D+40>>3];J=+h[j>>3];h[i+48>>3]=(J-+h[d>>3])*.3333333333333333+J;J=+h[G>>3];h[i+56>>3]=(J-+h[e>>3])*.3333333333333333+J;e=4;while(1){if((e|0)>=(g|0))break;G=i+(e<<4)|0;d=b+(e+-2<<4)|0;c[G>>2]=c[d>>2];c[G+4>>2]=c[d+4>>2];c[G+8>>2]=c[d+8>>2];c[G+12>>2]=c[d+12>>2];e=e+1|0}_O(a,i,g,f);D_(i);c[B>>2]=c[j>>2];c[B+4>>2]=c[j+4>>2];c[B+8>>2]=c[j+8>>2];c[B+12>>2]=c[j+12>>2];G=B+16|0;c[G>>2]=c[k>>2];c[G+4>>2]=c[k+4>>2];c[G+8>>2]=c[k+8>>2];c[G+12>>2]=c[k+12>>2];bP(a,B,2);break}if((e|0)>=67108864){switch(e|0){case 67108864:break;default:break a}if((d|0)==4){G=uH(96)|0;c[G>>2]=c[b>>2];c[G+4>>2]=c[b+4>>2];c[G+8>>2]=c[b+8>>2];c[G+12>>2]=c[b+12>>2];d=G+16|0;c[d>>2]=c[k>>2];c[d+4>>2]=c[k+4>>2];c[d+8>>2]=c[k+8>>2];c[d+12>>2]=c[k+12>>2];d=G+32|0;A=D+64|0;c[d>>2]=c[A>>2];c[d+4>>2]=c[A+4>>2];c[d+8>>2]=c[A+8>>2];c[d+12>>2]=c[A+12>>2];d=G+48|0;b=b+32|0;c[d>>2]=c[b>>2];c[d+4>>2]=c[b+4>>2];c[d+8>>2]=c[b+8>>2];c[d+12>>2]=c[b+12>>2];b=G+64|0;d=D+128|0;c[b>>2]=c[d>>2];c[b+4>>2]=c[d+4>>2];c[b+8>>2]=c[d+8>>2];c[b+12>>2]=c[d+12>>2];b=G+80|0;z=D+160|0;c[b>>2]=c[z>>2];c[b+4>>2]=c[z+4>>2];c[b+8>>2]=c[z+8>>2];c[b+12>>2]=c[z+12>>2];_O(a,G,6,f);D_(G);h[B>>3]=+h[D+176>>3]+ +h[j>>3]-+h[D>>3];h[B+8>>3]=+h[D+184>>3]+ +h[D+24>>3]-+h[D+8>>3];G=B+16|0;c[G>>2]=c[A>>2];c[G+4>>2]=c[A+4>>2];c[G+8>>2]=c[A+8>>2];c[G+12>>2]=c[A+12>>2];bP(a,B,2);c[G>>2]=c[d>>2];c[G+4>>2]=c[d+4>>2];c[G+8>>2]=c[d+8>>2];c[G+12>>2]=c[d+12>>2];bP(a,B,2);c[G>>2]=c[D>>2];c[G+4>>2]=c[D+4>>2];c[G+8>>2]=c[D+8>>2];c[G+12>>2]=c[D+12>>2];bP(a,B,2);break}else qa(102412,102423,714,102432)}switch(e|0){case 50331648:break;default:break a}g=d+3|0;i=uH(g<<4)|0;c[i>>2]=c[b>>2];c[i+4>>2]=c[b+4>>2];c[i+8>>2]=c[b+8>>2];c[i+12>>2]=c[b+12>>2];J=+h[b>>3];h[i+16>>3]=J-(J-+h[j>>3])*.25;e=D+56|0;J=(+h[e>>3]-+h[D+72>>3])*.3333333333333333+ +h[b+8>>3];h[i+24>>3]=J;I=+h[b>>3];h[i+32>>3]=I-(I-+h[j>>3])*2.0;h[i+40>>3]=J;J=+h[b>>3];h[i+48>>3]=J-(J-+h[j>>3])*2.25;h[i+56>>3]=+h[e>>3];h[i+64>>3]=+h[D+48>>3];h[i+72>>3]=+h[e>>3];e=4;while(1){if((e|0)>=(g|0))break;G=i+(e<<4)|0;d=b+(e+-3<<4)|0;c[G>>2]=c[d>>2];c[G+4>>2]=c[d+4>>2];c[G+8>>2]=c[d+8>>2];c[G+12>>2]=c[d+12>>2];e=e+1|0}_O(a,i,g,f);D_(i);break}}else if((e|0)<318767104){if((e|0)<251658240){if((e|0)<218103808){switch(e|0){case 201326592:break;default:break a}G=d<<4;u=uH(G)|0;v=b+16|0;J=+h[v>>3];h[u>>3]=J;z=b+40|0;I=+h[z>>3];A=b+24|0;y=D+48|0;w=D+56|0;x=D+72|0;I=(+h[A>>3]-I)*.5+I+(+h[w>>3]-+h[x>>3])*.125;h[u+8>>3]=I;H=(+h[k>>3]-+h[y>>3])*2.0+J;h[u+16>>3]=H;h[u+24>>3]=I;h[u+32>>3]=H;I=(+h[w>>3]-+h[x>>3])*.5+I;h[u+40>>3]=I;h[u+48>>3]=J;h[u+56>>3]=I;_O(a,u,d,f);D_(u);G=uH(G)|0;I=+h[k>>3]+ +h[v>>3]-+h[y>>3];h[G>>3]=I;J=+h[z>>3];J=(+h[A>>3]-J)*.5+J+(+h[w>>3]-+h[x>>3])*-.625;h[G+8>>3]=J;H=+h[k>>3]-+h[y>>3]+I;y=G+16|0;h[y>>3]=H;h[G+24>>3]=J;h[G+32>>3]=H;J=(+h[w>>3]-+h[x>>3])*.5+J;h[G+40>>3]=J;h[G+48>>3]=I;h[G+56>>3]=J;_O(a,G,d,f);h[B>>3]=+h[y>>3];J=+h[z>>3];h[B+8>>3]=(+h[A>>3]-J)*.5+J;h[B+16>>3]=+h[b>>3];h[B+24>>3]=(+h[b+8>>3]-+h[b+56>>3])*.5+J;bP(a,B,2);D_(G);break}if((e|0)<234881024){switch(e|0){case 218103808:break;default:break a}G=d<<4;w=uH(G)|0;J=+h[b>>3];h[w>>3]=J;y=b+40|0;I=+h[y>>3];z=b+24|0;x=D+56|0;A=D+72|0;I=(+h[z>>3]-I)*.5+I+(+h[x>>3]-+h[A>>3])*.125;h[w+8>>3]=I;h[w+16>>3]=J;H=(+h[x>>3]-+h[A>>3])*.5+I;h[w+24>>3]=H;J=J-(+h[x>>3]-+h[A>>3])*2.0;h[w+32>>3]=J;h[w+40>>3]=H;h[w+48>>3]=J;h[w+56>>3]=I;_O(a,w,d,f);D_(w);G=uH(G)|0;I=+h[b>>3]-+h[k>>3]+ +h[D+48>>3];h[G>>3]=I;J=+h[y>>3];J=(+h[z>>3]-J)*.5+J+(+h[x>>3]-+h[A>>3])*-.625;h[G+8>>3]=J;h[G+16>>3]=I;H=(+h[x>>3]-+h[A>>3])*.5+J;h[G+24>>3]=H;I=I-(+h[x>>3]-+h[A>>3]);h[G+32>>3]=I;h[G+40>>3]=H;A=G+48|0;h[A>>3]=I;h[G+56>>3]=J;_O(a,G,d,f);h[B>>3]=+h[b+16>>3];J=+h[y>>3];h[B+8>>3]=(+h[z>>3]-J)*.5+J;h[B+16>>3]=+h[A>>3];h[B+24>>3]=(+h[b+8>>3]-+h[b+56>>3])*.5+J;bP(a,B,2);D_(G);break}else{switch(e|0){case 234881024:break;default:break a}G=d<<4;y=uH(G)|0;u=b+16|0;I=+h[u>>3];v=D+48|0;I=(+h[b>>3]-I)*.5+I+(+h[k>>3]-+h[v>>3])*-1.125;h[y>>3]=I;w=b+40|0;J=+h[w>>3];x=b+24|0;A=D+56|0;z=D+72|0;J=(+h[x>>3]-J)*.5+J+(+h[A>>3]-+h[z>>3])*.125;h[y+8>>3]=J;H=+h[k>>3]-+h[v>>3]+I;h[y+16>>3]=H;h[y+24>>3]=J;h[y+32>>3]=H;J=(+h[A>>3]-+h[z>>3])*.5+J;h[y+40>>3]=J;h[y+48>>3]=I;h[y+56>>3]=J;_O(a,y,d,f);D_(y);y=uH(G)|0;J=+h[u>>3];J=(+h[b>>3]-J)*.5+J+(+h[k>>3]-+h[v>>3])*-1.125;h[y>>3]=J;I=+h[w>>3];I=(+h[x>>3]-I)*.5+I+(+h[A>>3]-+h[z>>3])*-.625;h[y+8>>3]=I;H=+h[k>>3]-+h[v>>3]+J;h[y+16>>3]=H;h[y+24>>3]=I;h[y+32>>3]=H;I=(+h[A>>3]-+h[z>>3])*.5+I;h[y+40>>3]=I;h[y+48>>3]=J;h[y+56>>3]=I;_O(a,y,d,f);D_(y);y=uH(G)|0;I=+h[u>>3];I=(+h[b>>3]-I)*.5+I+(+h[k>>3]-+h[v>>3])*.125;h[y>>3]=I;J=+h[w>>3];J=(+h[x>>3]-J)*.5+J+(+h[A>>3]-+h[z>>3])*-.625;h[y+8>>3]=J;H=+h[k>>3]-+h[v>>3]+I;h[y+16>>3]=H;h[y+24>>3]=J;h[y+32>>3]=H;J=(+h[A>>3]-+h[z>>3])*.5+J;h[y+40>>3]=J;h[y+48>>3]=I;h[y+56>>3]=J;_O(a,y,d,f);D_(y);G=uH(G)|0;J=+h[u>>3];J=(+h[b>>3]-J)*.5+J+(+h[k>>3]-+h[v>>3])*.125;h[G>>3]=J;I=+h[w>>3];I=(+h[x>>3]-I)*.5+I+(+h[A>>3]-+h[z>>3])*.125;h[G+8>>3]=I;H=+h[k>>3]-+h[v>>3]+J;y=G+16|0;h[y>>3]=H;h[G+24>>3]=I;h[G+32>>3]=H;I=(+h[A>>3]-+h[z>>3])*.5+I;h[G+40>>3]=I;h[G+48>>3]=J;h[G+56>>3]=I;_O(a,G,d,f);h[B>>3]=+h[y>>3];I=+h[w>>3];y=B+8|0;h[y>>3]=(+h[x>>3]-I)*.5+I;z=B+16|0;h[z>>3]=+h[b>>3];A=b+8|0;d=b+56|0;f=B+24|0;h[f>>3]=(+h[A>>3]-+h[d>>3])*.5+I;bP(a,B,2);I=+h[u>>3];h[B>>3]=(+h[b>>3]-I)*.5+I+(+h[k>>3]-+h[v>>3])*-1.125;J=+h[w>>3];h[y>>3]=(+h[x>>3]-J)*.5+J;h[z>>3]=I;h[f>>3]=(+h[A>>3]-+h[d>>3])*.5+J;bP(a,B,2);D_(G);break}}if((e|0)<285212672)if((e|0)<268435456){switch(e|0){case 251658240:break;default:break a}G=d<<4;u=uH(G)|0;v=b+16|0;J=+h[v>>3];y=D+48|0;J=J-+h[k>>3]+(+h[b>>3]-J)*.5+ +h[y>>3];h[u>>3]=J;w=b+40|0;I=+h[w>>3];x=b+24|0;A=D+56|0;z=D+72|0;I=(+h[x>>3]-I)*.5+I+(+h[A>>3]-+h[z>>3])*.125;h[u+8>>3]=I;H=(+h[k>>3]-+h[y>>3])*2.0+J;h[u+16>>3]=H;h[u+24>>3]=I;h[u+32>>3]=H;I=(+h[A>>3]-+h[z>>3])*.5+I;h[u+40>>3]=I;h[u+48>>3]=J;h[u+56>>3]=I;_O(a,u,d,f);D_(u);G=uH(G)|0;I=+h[v>>3];I=I-+h[k>>3]+(+h[b>>3]-I)*.5+ +h[y>>3];h[G>>3]=I;J=+h[w>>3];J=(+h[x>>3]-J)*.5+J+(+h[A>>3]-+h[z>>3])*-.625;h[G+8>>3]=J;H=(+h[k>>3]-+h[y>>3])*2.0+I;y=G+16|0;h[y>>3]=H;h[G+24>>3]=J;h[G+32>>3]=H;J=(+h[A>>3]-+h[z>>3])*.5+J;h[G+40>>3]=J;h[G+48>>3]=I;h[G+56>>3]=J;_O(a,G,d,f);h[B>>3]=+h[y>>3];J=+h[w>>3];y=B+8|0;h[y>>3]=(+h[x>>3]-J)*.5+J;z=B+16|0;h[z>>3]=+h[b>>3];A=b+8|0;d=b+56|0;f=B+24|0;h[f>>3]=(+h[A>>3]-+h[d>>3])*.5+J;bP(a,B,2);h[B>>3]=+h[v>>3];J=+h[w>>3];h[y>>3]=(+h[x>>3]-J)*.5+J;h[z>>3]=+h[G>>3];h[f>>3]=(+h[A>>3]-+h[d>>3])*.5+J;bP(a,B,2);D_(G);break}else{switch(e|0){case 268435456:break;default:break a}G=uH(d<<4)|0;h[G>>3]=+h[b>>3];v=D+48|0;x=D+56|0;y=D+72|0;h[G+8>>3]=+h[D+24>>3]-(+h[x>>3]-+h[y>>3])*.5;h[G+16>>3]=+h[v>>3];J=+h[x>>3];h[G+24>>3]=J-(J-+h[y>>3])*.5;h[G+32>>3]=+h[b+32>>3];z=b+40|0;h[G+40>>3]=(+h[x>>3]-+h[y>>3])*.5+ +h[z>>3];h[G+48>>3]=+h[b>>3];h[G+56>>3]=(+h[x>>3]-+h[y>>3])*.5+ +h[z>>3];_O(a,G,d,f);w=b+16|0;J=(+h[k>>3]-+h[v>>3])*.25;I=J+ +h[w>>3];h[B>>3]=I;H=+h[z>>3];u=b+24|0;F=+h[x>>3]-+h[y>>3];H=(+h[u>>3]-H)*.5+H+F*.125;A=B+8|0;h[A>>3]=H;d=B+16|0;h[d>>3]=J+I;f=B+24|0;h[f>>3]=H-F*.25;bP(a,B,2);F=(+h[k>>3]-+h[v>>3])*.25;H=F+ +h[w>>3];h[B>>3]=H;I=+h[z>>3];J=+h[x>>3]-+h[y>>3];I=(+h[u>>3]-I)*.5+I+J*-.125;h[A>>3]=I;h[d>>3]=F+H;h[f>>3]=J*.25+I;bP(a,B,2);I=(+h[k>>3]-+h[v>>3])*.25;h[B>>3]=I+ +h[w>>3];J=(+h[x>>3]-+h[y>>3])*.75+ +h[z>>3];h[A>>3]=J;h[d>>3]=+h[b>>3]-I;h[f>>3]=J;bP(a,B,2);D_(G);break}else if((e|0)<301989888){switch(e|0){case 285212672:break;default:break a}y=uH(d<<4)|0;v=b+16|0;I=+h[v>>3];z=D+48|0;I=(+h[k>>3]-+h[z>>3]+(+h[b>>3]-I))*.5+I;h[y>>3]=I;w=b+40|0;F=+h[w>>3];x=b+24|0;F=(+h[k>>3]-+h[z>>3]+(+h[x>>3]-F))*.5+F;h[y+8>>3]=F;h[y+16>>3]=I;I=+h[w>>3];o=+h[k>>3]-+h[z>>3];I=(+h[x>>3]-I-o)*.5+I;h[y+24>>3]=I;J=+h[v>>3];J=(+h[b>>3]-J-o)*.5+J;h[y+32>>3]=J;h[y+40>>3]=I;h[y+48>>3]=J;h[y+56>>3]=F;_O(a,y,d,f);D_(y);F=+h[v>>3];F=(+h[b>>3]-F)*.5+F;J=+h[k>>3]-+h[z>>3];I=J*.75;o=F+I;h[B>>3]=o;H=+h[w>>3];H=(+h[x>>3]-H)*.5+H;I=H+I;y=B+8|0;h[y>>3]=I;A=B+16|0;h[A>>3]=o;J=J*-.75;H=H+J;G=B+24|0;h[G>>3]=H;J=F+J;h[B+32>>3]=J;h[B+40>>3]=H;h[B+48>>3]=J;h[B+56>>3]=I;d=B+64|0;c[d>>2]=c[B>>2];c[d+4>>2]=c[B+4>>2];c[d+8>>2]=c[B+8>>2];c[d+12>>2]=c[B+12>>2];bP(a,B,5);I=+h[v>>3];J=+h[b>>3];h[B>>3]=(J-I)*.5+I+(+h[k>>3]-+h[z>>3])*.75;I=+h[w>>3];h[y>>3]=(+h[x>>3]-I)*.5+I;h[A>>3]=J;d=b+8|0;f=b+56|0;h[G>>3]=(+h[d>>3]-+h[f>>3])*.5+I;bP(a,B,2);I=+h[v>>3];h[B>>3]=I;J=+h[w>>3];h[y>>3]=(+h[x>>3]-J)*.5+J;h[A>>3]=(+h[b>>3]-I)*.5+I+(+h[k>>3]-+h[z>>3])*-.75;h[G>>3]=(+h[d>>3]-+h[f>>3])*.5+J;bP(a,B,2);break}else{switch(e|0){case 301989888:break;default:break a}A=d+12|0;G=uH(A<<4)|0;x=b+16|0;m=+h[x>>3];s=D+48|0;m=(+h[b>>3]-m)*.5+m+(+h[k>>3]-+h[s>>3])*.25;h[G>>3]=m;y=b+40|0;F=+h[y>>3];z=b+24|0;v=D+56|0;w=D+72|0;F=(+h[v>>3]-+h[w>>3]+(+h[z>>3]-F))*.5+F;u=G+8|0;h[u>>3]=F;h[G+16>>3]=m;F=(+h[v>>3]-+h[w>>3])*.125+F;t=G+24|0;h[t>>3]=F;H=m-(+h[k>>3]-+h[s>>3])*.125;d=G+32|0;h[d>>3]=H;o=(+h[v>>3]-+h[w>>3])*.125+F;h[G+40>>3]=o;h[G+48>>3]=m;I=(+h[v>>3]-+h[w>>3])*.125+o;h[G+56>>3]=I;h[G+64>>3]=m;m=(+h[v>>3]-+h[w>>3])*.125+I;h[G+72>>3]=m;h[G+80>>3]=H;h[G+88>>3]=m;H=+h[x>>3];H=(+h[b>>3]-H)*.5+H;h[G+96>>3]=H;h[G+104>>3]=I;J=H-(+h[k>>3]-+h[s>>3])*.125;h[G+112>>3]=J;h[G+120>>3]=m;J=J-(+h[k>>3]-+h[s>>3])*.125;h[G+128>>3]=J;h[G+136>>3]=m;h[G+144>>3]=J;h[G+152>>3]=I;I=(+h[k>>3]-+h[s>>3])*.125+J;h[G+160>>3]=I;h[G+168>>3]=o;h[G+176>>3]=J;h[G+184>>3]=F;h[G+192>>3]=J;J=+h[u>>3];h[G+200>>3]=J;h[G+208>>3]=I;h[G+216>>3]=J;u=G+224|0;h[u>>3]=H;h[G+232>>3]=+h[t>>3];h[G+240>>3]=+h[d>>3];h[G+248>>3]=J;_O(a,G,A,f);J=+h[u>>3];h[B>>3]=J;H=+h[y>>3];H=(+h[z>>3]-H)*.5+H;A=B+8|0;h[A>>3]=H;d=B+16|0;h[d>>3]=J;f=B+24|0;h[f>>3]=(+h[v>>3]-+h[w>>3])*.125+H;bP(a,B,2);H=+h[u>>3];h[B>>3]=H;J=+h[y>>3];I=+h[v>>3]-+h[w>>3];J=(+h[z>>3]-J)*.5+J+I*.25;h[A>>3]=J;h[d>>3]=H;h[f>>3]=I*.125+J;bP(a,B,2);h[B>>3]=+h[x>>3];J=+h[y>>3];h[A>>3]=(+h[z>>3]-J)*.5+J;h[d>>3]=+h[b>>3];h[f>>3]=(+h[b+8>>3]-+h[b+56>>3])*.5+J;bP(a,B,2);D_(G);break}}else{if((e|0)<369098752){if((e|0)<335544320){switch(e|0){case 318767104:break;default:break a}A=d+4|0;G=uH(A<<4)|0;x=b+16|0;H=+h[x>>3];d=D+48|0;H=(+h[b>>3]-H)*.5+H+(+h[k>>3]-+h[d>>3])*.125;h[G>>3]=H;y=b+40|0;J=+h[y>>3];z=b+24|0;v=D+56|0;w=D+72|0;J=(+h[v>>3]-+h[w>>3]+(+h[z>>3]-J))*.5+J;h[G+8>>3]=J;o=(+h[k>>3]-+h[d>>3])*.125+H;h[G+16>>3]=o;I=(+h[v>>3]-+h[w>>3])*.125+J;h[G+24>>3]=I;h[G+32>>3]=o;o=(+h[v>>3]-+h[w>>3])*.25+I;h[G+40>>3]=o;h[G+48>>3]=H;F=(+h[v>>3]-+h[w>>3])*.125+o;h[G+56>>3]=F;H=H-(+h[k>>3]-+h[d>>3])*.25;h[G+64>>3]=H;h[G+72>>3]=F;F=H-(+h[k>>3]-+h[d>>3])*.125;h[G+80>>3]=F;h[G+88>>3]=o;h[G+96>>3]=F;h[G+104>>3]=I;h[G+112>>3]=H;h[G+120>>3]=J;_O(a,G,A,f);J=+h[x>>3];J=(+h[b>>3]-J)*.5+J;h[B>>3]=J;H=+h[y>>3];H=(+h[z>>3]-H)*.5+H;A=B+8|0;h[A>>3]=H;d=B+16|0;h[d>>3]=J;f=B+24|0;h[f>>3]=(+h[v>>3]-+h[w>>3])*.125+H;bP(a,B,2);H=+h[x>>3];H=(+h[b>>3]-H)*.5+H;h[B>>3]=H;J=+h[y>>3];I=+h[v>>3]-+h[w>>3];J=(+h[z>>3]-J)*.5+J+I*.25;h[A>>3]=J;h[d>>3]=H;h[f>>3]=I*.125+J;bP(a,B,2);h[B>>3]=+h[x>>3];J=+h[y>>3];h[A>>3]=(+h[z>>3]-J)*.5+J;h[d>>3]=+h[b>>3];h[f>>3]=(+h[b+8>>3]-+h[b+56>>3])*.5+J;bP(a,B,2);D_(G);break}if((e|0)<352321536){switch(e|0){case 335544320:break;default:break a}x=d+12|0;G=uH(x<<4)|0;y=b+16|0;m=+h[y>>3];u=D+48|0;m=(+h[b>>3]-m)*.5+m+(+h[k>>3]-+h[u>>3])*.25;h[G>>3]=m;z=b+40|0;F=+h[z>>3];A=b+24|0;s=D+56|0;t=D+72|0;F=(+h[s>>3]-+h[t>>3]+(+h[A>>3]-F))*.5+F;d=G+8|0;h[d>>3]=F;h[G+16>>3]=m;F=(+h[s>>3]-+h[t>>3])*.125+F;v=G+24|0;h[v>>3]=F;I=m-(+h[k>>3]-+h[u>>3])*.125;w=G+32|0;h[w>>3]=I;o=(+h[s>>3]-+h[t>>3])*.125+F;h[G+40>>3]=o;h[G+48>>3]=m;H=(+h[s>>3]-+h[t>>3])*.125+o;h[G+56>>3]=H;h[G+64>>3]=m;m=(+h[s>>3]-+h[t>>3])*.125+H;h[G+72>>3]=m;h[G+80>>3]=I;h[G+88>>3]=m;I=+h[y>>3];I=(+h[b>>3]-I)*.5+I;h[G+96>>3]=I;h[G+104>>3]=H;J=I-(+h[k>>3]-+h[u>>3])*.125;h[G+112>>3]=J;h[G+120>>3]=m;J=J-(+h[k>>3]-+h[u>>3])*.125;h[G+128>>3]=J;h[G+136>>3]=m;h[G+144>>3]=J;h[G+152>>3]=H;H=(+h[k>>3]-+h[u>>3])*.125+J;h[G+160>>3]=H;h[G+168>>3]=o;h[G+176>>3]=J;h[G+184>>3]=F;h[G+192>>3]=J;J=+h[d>>3];h[G+200>>3]=J;h[G+208>>3]=H;h[G+216>>3]=J;d=G+224|0;h[d>>3]=I;h[G+232>>3]=+h[v>>3];h[G+240>>3]=+h[w>>3];h[G+248>>3]=J;_O(a,G,x,f);c[B>>2]=c[d>>2];c[B+4>>2]=c[d+4>>2];c[B+8>>2]=c[d+8>>2];c[B+12>>2]=c[d+12>>2];d=B+16|0;h[d>>3]=+h[B>>3];J=+h[z>>3];f=B+24|0;h[f>>3]=(+h[A>>3]-J)*.5+J;bP(a,B,2);h[B>>3]=+h[y>>3];J=+h[z>>3];h[B+8>>3]=(+h[A>>3]-J)*.5+J;h[d>>3]=+h[b>>3];h[f>>3]=(+h[b+8>>3]-+h[b+56>>3])*.5+J;bP(a,B,2);D_(G);break}else{switch(e|0){case 352321536:break;default:break a}A=d+4|0;G=uH(A<<4)|0;x=b+16|0;I=+h[x>>3];w=D+48|0;I=(+h[b>>3]-I)*.5+I+(+h[k>>3]-+h[w>>3])*.125;h[G>>3]=I;y=b+40|0;J=+h[y>>3];z=b+24|0;u=D+56|0;v=D+72|0;J=(+h[u>>3]-+h[v>>3]+(+h[z>>3]-J))*.5+J;d=G+8|0;h[d>>3]=J;o=(+h[k>>3]-+h[w>>3])*.125+I;h[G+16>>3]=o;H=(+h[u>>3]-+h[v>>3])*.125+J;h[G+24>>3]=H;h[G+32>>3]=o;o=(+h[u>>3]-+h[v>>3])*.25+H;h[G+40>>3]=o;h[G+48>>3]=I;F=(+h[u>>3]-+h[v>>3])*.125+o;h[G+56>>3]=F;I=I-(+h[k>>3]-+h[w>>3])*.25;h[G+64>>3]=I;h[G+72>>3]=F;F=I-(+h[k>>3]-+h[w>>3])*.125;h[G+80>>3]=F;h[G+88>>3]=o;h[G+96>>3]=F;h[G+104>>3]=H;h[G+112>>3]=I;h[G+120>>3]=J;_O(a,G,A,f);J=+h[x>>3];J=(+h[b>>3]-J)*.5+J;h[B>>3]=J;A=B+8|0;h[A>>3]=+h[d>>3];d=B+16|0;h[d>>3]=J;J=+h[y>>3];f=B+24|0;h[f>>3]=(+h[z>>3]-J)*.5+J;bP(a,B,2);h[B>>3]=+h[x>>3];J=+h[y>>3];h[A>>3]=(+h[z>>3]-J)*.5+J;h[d>>3]=+h[b>>3];h[f>>3]=(+h[b+8>>3]-+h[b+56>>3])*.5+J;bP(a,B,2);D_(G);break}}if((e|0)<402653184)if((e|0)<385875968){switch(e|0){case 369098752:break;default:break a}d=d+5|0;G=uH(d<<4)|0;B=D+48|0;h[G>>3]=+h[j>>3]-(+h[k>>3]-+h[B>>3])*.5;y=D+56|0;A=D+72|0;h[G+8>>3]=+h[D+24>>3]-(+h[y>>3]-+h[A>>3])*.5;h[G+16>>3]=+h[B>>3];J=+h[y>>3];h[G+24>>3]=J-(J-+h[A>>3])*.5;h[G+32>>3]=+h[b+32>>3];z=b+40|0;h[G+40>>3]=+h[z>>3];J=+h[k>>3];h[G+48>>3]=(J-+h[B>>3])*.5+J;h[G+56>>3]=+h[z>>3];J=+h[k>>3];h[G+64>>3]=(J-+h[B>>3])*.5+J;h[G+72>>3]=(+h[y>>3]-+h[A>>3])*.5+ +h[z>>3];h[G+80>>3]=+h[j>>3]-(+h[k>>3]-+h[B>>3])*.5;h[G+88>>3]=(+h[y>>3]-+h[A>>3])*.5+ +h[z>>3];h[G+96>>3]=+h[j>>3]-(+h[k>>3]-+h[B>>3])*.5;z=b+56|0;h[G+104>>3]=+h[z>>3];A=b+8|0;J=+h[A>>3];h[G+120>>3]=J-(J-+h[z>>3])*.5;h[G+112>>3]=+h[b>>3];h[G+136>>3]=+h[A>>3];h[G+128>>3]=+h[j>>3]-(+h[k>>3]-+h[B>>3])*.5;_O(a,G,d,f);D_(G);break}else{switch(e|0){case 385875968:break;default:break a}d=d+3|0;G=uH(d<<4)|0;B=D+48|0;h[G>>3]=+h[j>>3]-(+h[k>>3]-+h[B>>3])*.5;y=D+56|0;A=D+72|0;h[G+8>>3]=+h[D+24>>3]-(+h[y>>3]-+h[A>>3])*.5;h[G+16>>3]=+h[B>>3];J=+h[y>>3];h[G+24>>3]=J-(J-+h[A>>3])*.5;h[G+32>>3]=+h[b+32>>3];z=b+40|0;h[G+40>>3]=(+h[y>>3]-+h[A>>3])*.5+ +h[z>>3];h[G+48>>3]=+h[j>>3]-(+h[k>>3]-+h[B>>3])*.5;h[G+56>>3]=(+h[y>>3]-+h[A>>3])*.5+ +h[z>>3];h[G+64>>3]=+h[j>>3]-(+h[k>>3]-+h[B>>3])*.5;z=b+56|0;h[G+72>>3]=+h[z>>3];A=b+8|0;J=+h[A>>3];h[G+88>>3]=J-(J-+h[z>>3])*.5;h[G+80>>3]=+h[b>>3];h[G+104>>3]=+h[A>>3];h[G+96>>3]=+h[j>>3]-(+h[k>>3]-+h[B>>3])*.5;_O(a,G,d,f);D_(G);break}else if((e|0)<419430400){switch(e|0){case 402653184:break;default:break a}d=d+3|0;G=uH(d<<4)|0;h[G>>3]=+h[b>>3];y=b+8|0;z=D+48|0;A=D+56|0;B=D+72|0;h[G+8>>3]=+h[y>>3]-(+h[A>>3]-+h[B>>3])*.5;J=+h[k>>3];h[G+16>>3]=(J-+h[z>>3])*.5+J;h[G+24>>3]=+h[y>>3]-(+h[A>>3]-+h[B>>3])*.5;J=+h[k>>3];h[G+32>>3]=(J-+h[z>>3])*.5+J;h[G+40>>3]=+h[D+40>>3];h[G+48>>3]=+h[b+16>>3];J=+h[b+24>>3];y=b+40|0;h[G+56>>3]=J-(J-+h[y>>3])*.5;J=+h[k>>3];h[G+64>>3]=(J-+h[z>>3])*.5+J;h[G+72>>3]=+h[y>>3];h[G+88>>3]=(+h[A>>3]-+h[B>>3])*.5+ +h[y>>3];J=+h[k>>3];h[G+80>>3]=(J-+h[z>>3])*.5+J;h[G+104>>3]=(+h[A>>3]-+h[B>>3])*.5+ +h[b+56>>3];h[G+96>>3]=+h[b>>3];_O(a,G,d,f);D_(G);break}else{switch(e|0){case 419430400:break;default:break a}d=d+5|0;G=uH(d<<4)|0;h[G>>3]=+h[b>>3];B=b+8|0;A=D+48|0;y=D+56|0;z=D+72|0;h[G+8>>3]=+h[B>>3]-(+h[y>>3]-+h[z>>3])*.5;J=+h[k>>3];h[G+16>>3]=(J-+h[A>>3])*.5+J;h[G+24>>3]=+h[B>>3]-(+h[y>>3]-+h[z>>3])*.5;J=+h[k>>3];h[G+32>>3]=(J-+h[A>>3])*.5+J;h[G+40>>3]=+h[D+40>>3];h[G+48>>3]=+h[b+16>>3];J=+h[b+24>>3];B=b+40|0;h[G+56>>3]=J-(J-+h[B>>3])*.5;J=+h[k>>3];h[G+64>>3]=(J-+h[A>>3])*.5+J;h[G+72>>3]=+h[B>>3];h[G+88>>3]=(+h[y>>3]-+h[z>>3])*.5+ +h[B>>3];J=+h[k>>3];h[G+80>>3]=(J-+h[A>>3])*.5+J;B=b+56|0;h[G+104>>3]=(+h[y>>3]-+h[z>>3])*.5+ +h[B>>3];h[G+96>>3]=+h[j>>3]-(+h[k>>3]-+h[A>>3])*.5;h[G+112>>3]=+h[j>>3]-(+h[k>>3]-+h[A>>3])*.5;h[G+120>>3]=+h[B>>3];h[G+128>>3]=+h[b+48>>3];h[G+136>>3]=+h[B>>3];_O(a,G,d,f);D_(G);break}}while(0);D_(D)}l=E;return}function FJ(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0.0;f=l;l=l+112|0;g=f;k=+h[b+8>>3]*2.0;c[g>>2]=c[b>>2];c[g+4>>2]=c[b+4>>2];c[g+8>>2]=c[b+8>>2];c[g+12>>2]=c[b+12>>2];h[g+16>>3]=+h[b+16>>3];h[g+24>>3]=k-+h[b+24>>3];h[g+32>>3]=+h[b+32>>3];h[g+40>>3]=k-+h[b+40>>3];h[g+48>>3]=+h[b+48>>3];h[g+56>>3]=k-+h[b+56>>3];h[g+64>>3]=+h[b+64>>3];h[g+72>>3]=k-+h[b+72>>3];h[g+80>>3]=+h[b+80>>3];h[g+88>>3]=k-+h[b+88>>3];i=g+96|0;j=b+96|0;c[i>>2]=c[j>>2];c[i+4>>2]=c[j+4>>2];c[i+8>>2]=c[j+8>>2];c[i+12>>2]=c[j+12>>2];aP(a,b,d,0,0,e&255);aP(a,g,7,0,0,0);l=f;return}function GJ(a,b,c,d){a=a|0;b=+b;c=c|0;d=d|0;var e=0.0,f=0.0;f=+h[c>>3];e=+h[c+8>>3];e=(+h[d+8>>3]-e)*b+e;h[a>>3]=(+h[d>>3]-f)*b+f;h[a+8>>3]=e;return}function HJ(a){a=a|0;a=c[(c[a+16>>2]|0)+8>>2]|0;if(a){a=c[c[a+4>>2]>>2]|0;if((a|0)!=89)if((a|0)==92)a=2;else return ((a|0)==91?3:(a|0)==94?4:0)|0;else a=1}else a=0;return a|0}function IJ(b){b=b|0;var d=0,e=0,f=0.0,g=0,i=0,j=0,k=0.0,m=0.0,n=0.0,o=0.0,p=0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0,D=0,G=0,H=0,I=0,J=0,L=0,M=0,N=0,P=0.0,Q=0.0,R=0,S=0,T=0.0,U=0.0,V=0.0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0.0;aa=l;l=l+144|0;J=aa+112|0;N=aa+104|0;G=aa+96|0;H=aa+88|0;i=aa+80|0;Y=aa+64|0;_=aa+48|0;R=aa+40|0;S=aa+32|0;j=aa+24|0;p=aa+16|0;D=aa+136|0;A=aa+128|0;L=aa;$=uH(48)|0;Z=b+16|0;W=c[(c[(c[Z>>2]|0)+8>>2]|0)+8>>2]|0;g=(W|0)==1616;X=c[W>>2]|0;d=c[W+4>>2]|0;e=c[W+8>>2]|0;m=+h[W+16>>3];n=+h[W+32>>3];o=+h[W+24>>3];X=X|(QL(xx(b,102485)|0)|0)&255;do if(!g){if(!X){W=c[Z>>2]|0;k=+h[W+32>>3]*72.0;f=+h[W+40>>3]*72.0;f=+(~~(f+(f>=0.0?.5:-.5))|0);k=+(~~(k+(k>=0.0?.5:-.5))|0);break}k=+SJ(b);if(k>0.0)f=k;else{W=c[Z>>2]|0;f=+h[W+32>>3];k=+h[W+40>>3];k=(f=0.0?.5:-.5))|0);f=k}}else{f=0.0;k=0.0}while(0);W=KL(b,c[46390]|0,d,0)|0;V=+LL(b,c[46392]|0,0.0,-360.0)+m;if(!e){U=+LL(b,c[46393]|0,0.0,-100.0);I=KL(b,c[46389]|0,4,0)|0;T=+LL(b,c[46394]|0,0.0,-100.0)}else{I=e;U=n;T=o}d=c[(c[Z>>2]|0)+104>>2]|0;e=d+24|0;c[Y>>2]=c[e>>2];c[Y+4>>2]=c[e+4>>2];c[Y+8>>2]=c[e+8>>2];c[Y+12>>2]=c[e+12>>2];q=+h[Y>>3];if(q>0.0){if(!g)M=11}else if(!(g|!(+h[Y+8>>3]>0.0)))M=11;if((M|0)==11){d=xx(b,102470)|0;do if(d){h[p>>3]=0.0;h[j>>3]=0.0;c[i>>2]=j;c[i+4>>2]=p;d=N1(d,102477,i)|0;m=+h[j>>3];if(m<0.0){h[j>>3]=0.0;m=0.0}n=+h[p>>3];if(n<0.0){h[p>>3]=0.0;o=0.0}else o=n;if((d|0)<=0){n=q+16.0;h[Y>>3]=n;m=8.0;break}m=m*72.0;m=+(~~(m+(m>=0.0?.5:-.5))<<1|0);n=q+m;h[Y>>3]=n;if((d|0)!=1){m=o*72.0;m=+(~~(m+(m>=0.0?.5:-.5))<<1|0)}}else{n=q+16.0;h[Y>>3]=n;m=8.0}while(0);d=Y+8|0;h[d>>3]=+h[d>>3]+m;d=c[(c[Z>>2]|0)+104>>2]|0;q=n}s=+h[d+24>>3];m=+h[c[(c[(ez(b)|0)+16>>2]|0)+8>>2]>>3];if(m>0.0){P=m*72.0;P=+(~~(P+(P>=0.0?.5:-.5))|0);Q=+TJ(q,P);h[Y>>3]=Q;p=Y+8|0;h[p>>3]=+TJ(+h[p>>3],P)}else Q=q;d=c[(c[Z>>2]|0)+8>>2]|0;do if(!(a[d+12>>0]|0)){e=xx(b,105999)|0;if((e|0)!=0?(a[e>>0]|0)!=0:0){CC(A,ez(b)|0,e);d=c[A>>2]|0;g=c[A+4>>2]|0;if((g&d|0)==-1){d=ry(b)|0;c[G>>2]=e;c[G+4>>2]=d;Pw(0,102561,G)|0;e=0;d=0;break}else{a[(c[(ez(b)|0)+16>>2]|0)+114>>0]=1;e=d+2|0;d=g+2|0;break}}else{e=0;d=0}}else{d=c[d>>2]|0;if((a[d>>0]|0)==99?(b$(d,102493)|0)==0:0){e=xx(b,102500)|0;CC(D,ez(b)|0,e);d=c[D>>2]|0;g=c[D+4>>2]|0;if((g&d|0)==-1){d=ry(b)|0;c[H>>2]=e|0?e:102510;c[H+4>>2]=d;Pw(0,102516,H)|0;e=0;d=0;break}else{a[(c[(ez(b)|0)+16>>2]|0)+114>>0]=1;e=d+2|0;d=g+2|0;break}}else{e=0;d=0}}while(0);P=+(e|0);h[_>>3]=Q>P?Q:P;P=+h[Y+8>>3];r=+(d|0);d=_+8|0;h[d>>3]=P>r?P:r;e=(I|0)<3&(T!=0.0|U!=0.0)?120:I;g=xx(b,102602)|0;if(!g)i=99;else{i=a[g>>0]|0;i=i<<24>>24==116?116:i<<24>>24==98?98:99}g=c[Z>>2]|0;a[(c[g+104>>2]|0)+80>>0]=i;if((e|0)==4?(T==0.0?((~~(V+(V>=0.0?.5:-.5))|0)%90|0|0)==0:0)&U==0.0:0)p=1;else M=39;do if((M|0)==39){g=c[(c[(c[g+8>>2]|0)+8>>2]|0)+44>>2]|0;if(g|0){p=c[g>>2]|0;c[J>>2]=c[_>>2];c[J+4>>2]=c[_+4>>2];c[J+8>>2]=c[_+8>>2];c[J+12>>2]=c[_+12>>2];ub[p&63](L,J);c[_>>2]=c[L>>2];c[_+4>>2]=c[L+4>>2];c[_+8>>2]=c[L+8>>2];c[_+12>>2]=c[L+12>>2];p=0;break}m=+h[d>>3];n=m*1.4142135623730951;if(f>n&i<<24>>24==99){o=m/f;o=+C(+(1.0/(1.0-o*o)));o=+h[_>>3]*o;h[_>>3]=o}else{o=+h[_>>3]*1.4142135623730951;h[_>>3]=o;h[d>>3]=n;m=n}if((e|0)>2){z=+E(+(3.141592653589793/+(e|0)));h[_>>3]=o/z;h[d>>3]=m/z;p=0}else p=0}while(0);m=+h[d>>3];g=NL(b,c[46395]|0,134226)|0;if((a[g>>0]|0)==115?(b$(g,105204)|0)==0:0){h[_>>3]=k;h[d>>3]=f;N=$+40|0;c[N>>2]=c[N>>2]|2048}else{if(!((QL(g)|0)<<24>>24)){z=+h[_>>3];k=k>z?k:z;h[_>>3]=k;z=+h[d>>3];f=f>z?f:z}else{M=c[(c[Z>>2]|0)+104>>2]|0;if(!(!(k<+h[M+24>>3])?!(f<+h[M+32>>3]):0)){L=ry(b)|0;M=ry(ez(b)|0)|0;c[N>>2]=L;c[N+4>>2]=M;Pw(0,102611,N)|0}h[_>>3]=k}h[d>>3]=f}if(!X){z=f;y=k}else{y=k>f?k:f;h[d>>3]=y;h[_>>3]=y;z=y}do if(!((QL(NL(b,c[46386]|0,134226)|0)|0)<<24>>24)){if(p){f=+h[(Q>+h[_>>3]?Y:_)>>3];break}f=+h[d>>3];if(P>3]*+C(+(1.0-P*P/(f*f)));f=Q>f?Q:f}else f=Q}else f=Q;while(0);g=c[(c[Z>>2]|0)+104>>2]|0;h[g+40>>3]=s-q+f;A=$+40|0;if(!(c[A>>2]&2048)){x=+h[d>>3]-m;h[g+48>>3]=(P1;g=j?W:1;a:do if((e|0)<3){g=uH(g<<5)|0;k=+h[_>>3]*.5;f=+h[d>>3]*.5;h[g>>3]=-k;h[g+8>>3]=-f;h[g+16>>3]=k;h[g+24>>3]=f;if(j){e=1;i=2;while(1){if((e|0)==(W|0))break;y=k+4.0;z=f+4.0;h[g+(i<<4)>>3]=-y;h[g+(i<<4)+8>>3]=-z;S=i|1;h[g+(S<<4)>>3]=y;h[g+(S<<4)+8>>3]=z;e=e+1|0;i=i+2|0;k=y;f=z}h[_>>3]=k*2.0;h[d>>3]=f*2.0;e=2}else e=2}else{g=uH(O(g<<4,e)|0)|0;i=c[(c[(c[(c[Z>>2]|0)+8>>2]|0)+8>>2]|0)+44>>2]|0;b:do if(!i){q=6.283185307179586/+(e|0);t=q*.5;r=+F(+t);s=+u$(+B(+U)+ +B(+T),1.0);t=T*1.4142135623730951/+E(+t);u=U*.5;w$((q+-3.141592653589793)*.5,R,S);v=V*.017453292519943295;k=0.0;f=0.0;m=0.0;i=0;n=+h[S>>3]*.5;o=+h[R>>3]*.5;while(1){if((i|0)>=(e|0))break b;m=m+q;w$(m,R,S);n=+h[S>>3]*r+n;o=+h[R>>3]*r+o;x=(o*t+s)*n+u*o;w$(+K(+o,+x)+v,R,S);x=+u$(x,o);w=+h[S>>3]*x*+h[_>>3];x=+h[R>>3]*x*+h[d>>3];ba=+B(+w);f=ba>f?ba:f;ba=+B(+x);k=ba>k?ba:k;h[g+(i<<4)>>3]=w;h[g+(i<<4)+8>>3]=x;if(p)break;else i=i+1|0}ba=-w;h[g+16>>3]=ba;h[g+24>>3]=x;h[g+32>>3]=ba;ba=-x;h[g+40>>3]=ba;h[g+48>>3]=w;h[g+56>>3]=ba}else{ub[c[i+4>>2]&63](g,_);k=+h[d>>3]*.5;f=+h[_>>3]*.5}while(0);f=f*2.0;k=k*2.0;y=y>f?y:f;h[_>>3]=y;ba=z>k?z:k;h[d>>3]=ba;f=y/f;k=ba/k;i=0;while(1){if((i|0)>=(e|0))break;N=g+(i<<4)|0;b=g+(i<<4)+8|0;ba=+h[b>>3]*k;h[N>>3]=+h[N>>3]*f;h[b>>3]=ba;i=i+1|0}if(j){j=e+-1|0;k=+h[g>>3];m=+h[g+8>>3];f=+K(+(m-+h[g+(j<<4)+8>>3]),+(k-+h[g+(j<<4)>>3]));j=0;c:while(1){if((j|0)>=(e|0))break;p=j+1|0;i=(p|0)%(e|0)|0;n=+h[g+(i<<4)>>3];o=+h[g+(i<<4)+8>>3];q=+K(+(o-m),+(n-k));z=(f+3.141592653589793-q)*.5;ba=4.0/+F(+z);w$(f-z,R,S);h[R>>3]=+h[R>>3]*ba;h[S>>3]=+h[S>>3]*ba;i=1;f=m;while(1){if((i|0)==(W|0)){f=q;j=p;k=n;m=o;continue c}z=+h[S>>3]+k;ba=+h[R>>3]+f;b=(O(i,e)|0)+j|0;h[g+(b<<4)>>3]=z;h[g+(b<<4)+8>>3]=ba;i=i+1|0;k=z;f=ba}}j=O(e,W+-1|0)|0;i=0;while(1){if((i|0)>=(e|0))break a;S=i+j|0;z=+h[g+(S<<4)+8>>3];y=+B(+(+h[g+(S<<4)>>3]))*2.0;ba=+h[_>>3];h[_>>3]=y>ba?y:ba;z=+B(+z)*2.0;ba=+h[d>>3];h[d>>3]=z>ba?z:ba;i=i+1|0}}}while(0);c[$>>2]=X;c[$+4>>2]=W;c[$+8>>2]=e;h[$+16>>3]=V;h[$+32>>3]=U;h[$+24>>3]=T;c[$+44>>2]=g;f=+h[_>>3];if(!(c[A>>2]&2048)){e=c[Z>>2]|0;h[e+32>>3]=f*.013888888888888888}else{e=c[Z>>2]|0;h[e+32>>3]=+h[(Q>f?Y:_)>>3]*.013888888888888888;d=(P>+h[d>>3]?Y:_)+8|0}h[e+40>>3]=+h[d>>3]*.013888888888888888;c[e+12>>2]=$;l=aa;return}function JJ(a){a=a|0;var b=0,d=0,e=0,f=0,g=0.0,i=0.0,j=0,k=0,m=0,n=0,o=0;o=l;l=l+64|0;j=o+40|0;e=o+32|0;k=o+16|0;n=o;d=(c[(c[(ez(a)|0)+16>>2]|0)+116>>2]|0)>>>2&1^1;m=a+16|0;f=c[c[(c[m>>2]|0)+104>>2]>>2]|0;c[46512]=f;f=W_(f)|0;f=uH(((f|0)>1?f:1)+1|0)|0;b=LJ(a,d,1,f)|0;if(!b){c[e>>2]=c[c[(c[m>>2]|0)+104>>2]>>2];Pw(1,102446,e)|0;c[46512]=102467;b=LJ(a,d,1,f)|0}D_(f);MJ(j,a,b);d=c[m>>2]|0;i=+h[d+32>>3]*72.0;i=+(~~(i+(i>=0.0?.5:-.5))|0);h[n>>3]=i;g=+h[d+40>>3]*72.0;g=+(~~(g+(g>=0.0?.5:-.5))|0);d=n+8|0;h[d>>3]=g;if(!((QL(NL(a,c[46395]|0,134226)|0)|0)<<24>>24)){i=+h[(+h[b>>3]>i?b:n)>>3];h[n>>3]=i;e=b+8|0;g=+h[(+h[e>>3]>g?b:n)+8>>3];h[d>>3]=g;d=e;e=b}else{d=b+8|0;e=b}a=(QL(NL(a,c[46386]|0,134226)|0)|0)&255;c[j>>2]=c[n>>2];c[j+4>>2]=c[n+4>>2];c[j+8>>2]=c[n+8>>2];c[j+12>>2]=c[n+12>>2];NJ(b,j,a);OJ(k,i*-.5,g*.5);c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];c[j+8>>2]=c[k+8>>2];c[j+12>>2]=c[k+12>>2];PJ(b,j,15);n=c[m>>2]|0;h[n+32>>3]=+h[e>>3]*.013888888888888888;h[n+40>>3]=(+h[d>>3]+1.0)*.013888888888888888;c[n+12>>2]=b;l=o;return}function KJ(a){a=a|0;var b=0.0,d=0,e=0.0,f=0.0,g=0,i=0,j=0,k=0,l=0.0,m=0;j=uH(48)|0;k=a+16|0;g=c[(c[(c[(c[k>>2]|0)+8>>2]|0)+8>>2]|0)+4>>2]|0;f=+LL(a,c[46376]|0,1797693134862315708145274.0e284,0.0);b=+LL(a,c[46375]|0,1797693134862315708145274.0e284,0.0);f=f0.0?(f>.0003?f:.0003):f;i=c[k>>2]|0;h[i+40>>3]=f;h[i+32>>3]=f;b=f*72.0;g=KL(a,c[46390]|0,g,0)|0;i=uH((g|0)<1?32:g<<5)|0;f=f*36.0;e=-f;h[i>>3]=e;h[i+8>>3]=e;h[i+16>>3]=f;h[i+24>>3]=f;if((g|0)>1){a=1;d=2;e=f;b=f;while(1){if((a|0)==(g|0))break;l=e+4.0;f=b+4.0;h[i+(d<<4)>>3]=-l;h[i+(d<<4)+8>>3]=-f;m=d|1;h[i+(m<<4)>>3]=l;h[i+(m<<4)+8>>3]=f;a=a+1|0;d=d+2|0;e=l;b=f}b=e*2.0}c[j>>2]=1;c[j+4>>2]=g;c[j+8>>2]=2;m=j+16|0;c[m>>2]=0;c[m+4>>2]=0;c[m+8>>2]=0;c[m+12>>2]=0;c[m+16>>2]=0;c[m+20>>2]=0;c[j+44>>2]=i;l=b*.013888888888888888;m=c[k>>2]|0;h[m+32>>3]=l;h[m+40>>3]=l;c[m+12>>2]=j;return}function LJ(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;g=uH(72)|0;n=c[(c[b+16>>2]|0)+104>>2]|0;m=0;i=1;j=c[46512]|0;a:while(1){k=a[j>>0]|0;switch(k<<24>>24){case 0:break a;case 92:{j=j+1|0;k=a[j>>0]|0;switch(k<<24>>24){case 124:case 125:case 123:case 92:{l=m;break}default:E=4}break}default:E=4}if((E|0)==4){E=0;switch(k<<24>>24){case 123:{l=m+1|0;break}case 125:{l=m+-1|0;break}default:{l=m;i=i+((m|0)==0&k<<24>>24==124&1)|0}}if((l|0)<0)break}m=l;j=j+1|0}B=g+56|0;c[B>>2]=uH(i<<2)|0;a[g+64>>0]=d;y=(d|0)==0&1;z=n+82|0;A=f+1|0;v=(e|0)!=0;w=n+16|0;x=n+4|0;u=n+8|0;k=0;m=0;d=0;t=0;l=0;e=0;n=f;i=0;j=0;b:while(1){p=k;k=0;c:while(1){d:while(1){s=e;e:while(1){r=k;o=i;f:while(1){q=m;g:while(1){while(1){if(t){E=78;break b}m=c[46512]|0;i=a[m>>0]|0;if((i+-1&255)>=31)break;c[46512]=m+1}switch(i<<24>>24|0){case 92:{E=53;break d}case 0:case 124:case 125:break e;case 60:break f;case 62:break g;case 123:break;default:{k=d;i=m;break d}}i=m+1|0;c[46512]=i;if(l|0){E=34;break b}if(!(a[i>>0]|0)){E=34;break b}e=LJ(b,y,0,f)|0;c[(c[B>>2]|0)+(q<<2)>>2]=e;if(!e){E=36;break b}else{q=q+1|0;l=4}}if(a[z>>0]|0){k=d;i=m;break d}if(!(l&16)){E=27;break b}if(o>>>0>A>>>0?(C=o+-1|0,(C|0)!=(s|0)):0)i=(a[C>>0]|0)==32?C:o;else i=o;a[i>>0]=0;r=n1(f)|0;c[46512]=(c[46512]|0)+1;m=q;l=l&-17;o=i}if(l&6|0){E=22;break b}if(a[z>>0]|0){k=d;i=m;break d}c[46512]=m+1;m=q;l=l|18;k=r;s=f;i=f}if(!((l&16|0)==0&(v|i<<24>>24!=0))){E=38;break b}if(!(l&4)){k=uH(72)|0;c[(c[B>>2]|0)+(q<<2)>>2]=k;m=q+1|0}else{k=p;m=q}if(r|0)c[k+60>>2]=r;if(!(l&5)){a[f+j>>0]=32;l=l|1;j=j+1|0}i=f+j|0;if(l&1){if((j|0)>1?(D=i+-1|0,(D|0)!=(n|0)):0)i=(a[D>>0]|0)==32?D:i;a[i>>0]=0;n=n1(f)|0;c[k+52>>2]=kH(b,n,a[z>>0]|0?2:0,+h[w>>3],c[x>>2]|0,c[u>>2]|0)|0;a[k+64>>0]=1;n=f;j=0}i=c[46512]|0;switch(a[i>>0]|0){case 0:{t=1;e=s;i=o;continue b}case 125:{E=51;break b}default:{}}c[46512]=i+1;p=k;l=0;k=0;e=s;i=o}h:do if((E|0)==53){E=0;k=f+j|0;i=m+1|0;switch(a[i>>0]|0){case 0:{k=d;i=m;break h}case 62:case 60:case 124:case 125:case 123:{k=d;break}case 32:{if(!(a[z>>0]|0))k=1;else E=55;break}default:E=55}if((E|0)==55){E=0;a[k>>0]=92;k=d;l=l|9;j=j+1|0}c[46512]=i}while(0);d=f+j|0;if(l&4|0?(a[i>>0]|0)!=32:0){E=59;break b}if(!(l&24))l=(a[i>>0]|0)==32?l:l|9;if(!(l&8))if(!(l&16))e=s;else{m=a[i>>0]|0;d=(k|0)!=0;if(!(d|m<<24>>24!=32))if((o|0)!=(f|0))if((a[o+-1>>0]|0)==32)m=o;else E=73;else m=f;else E=73;if((E|0)==73){E=0;a[o>>0]=m;m=o+1|0;i=c[46512]|0}e=d?m+-1|0:s;o=m}else{m=a[i>>0]|0;e=(k|0)!=0;if(!((!(e|m<<24>>24!=32)?(a[d+-1>>0]|0)==32:0)?(a[z>>0]|0)==0:0)){a[d>>0]=m;j=j+1|0}if(e){e=s;n=f+j+-1|0}else e=s}i=i+1|0;c[46512]=i;while(1){if((a[i>>0]|0)>=0){m=q;d=k;k=r;i=o;continue c}s=i+1|0;c[46512]=s;a[f+j>>0]=a[i>>0]|0;j=j+1|0;i=s}}}if((E|0)==22){QJ(g,r);g=0}else if((E|0)==27){QJ(g,r);g=0}else if((E|0)==34){QJ(g,r);g=0}else if((E|0)==36){QJ(g,r);g=0}else if((E|0)==38){QJ(g,r);g=0}else if((E|0)==51){c[46512]=i+1;c[g+48>>2]=m}else if((E|0)==59){QJ(g,r);g=0}else if((E|0)==78)c[g+48>>2]=q;return g|0}function MJ(b,d,e){b=b|0;d=d|0;e=e|0;var f=0.0,g=0.0,i=0.0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=l;l=l+64|0;k=u+48|0;m=u+40|0;n=u+32|0;t=u+16|0;s=u;j=c[e+52>>2]|0;a:do if(!j){n=t+8|0;o=e+48|0;p=e+56|0;q=e+64|0;r=s+8|0;c[t>>2]=0;c[t+4>>2]=0;c[t+8>>2]=0;c[t+12>>2]=0;j=0;while(1){if((j|0)>=(c[o>>2]|0))break a;MJ(s,d,c[(c[p>>2]|0)+(j<<2)>>2]|0);if(!(a[q>>0]|0)){h[n>>3]=+h[n>>3]+ +h[r>>3];k=t;m=+h[t>>3]>+h[s>>3]?t:s}else{h[t>>3]=+h[t>>3]+ +h[s>>3];k=n;m=(+h[n>>3]>+h[r>>3]?t:s)+8|0}h[k>>3]=+h[m>>3];j=j+1|0}}else{g=+h[j+24>>3];f=+h[j+32>>3];if(g>0.0|f>0.0){j=xx(d,102470)|0;do if(j){c[k>>2]=m;c[k+4>>2]=n;j=N1(j,102477,k)|0;if((j|0)<=0){i=8.0;g=g+16.0;break}i=+h[m>>3]*72.0;i=+(~~(i+(i>=0.0?.5:-.5))<<1|0);g=g+i;if((j|0)!=1){i=+h[n>>3]*72.0;i=+(~~(i+(i>=0.0?.5:-.5))<<1|0)}}else{i=8.0;g=g+16.0}while(0);f=i+f}h[t>>3]=g;h[t+8>>3]=f}while(0);c[e>>2]=c[t>>2];c[e+4>>2]=c[t+4>>2];c[e+8>>2]=c[t+8>>2];c[e+12>>2]=c[t+12>>2];c[b>>2]=c[t>>2];c[b+4>>2]=c[t+4>>2];c[b+8>>2]=c[t+8>>2];c[b+12>>2]=c[t+12>>2];l=u;return}function NJ(b,d,e){b=b|0;d=d|0;e=e|0;var f=0.0,g=0,i=0.0,j=0,k=0,m=0,n=0,o=0,p=0,q=0.0,r=0.0,s=0;s=l;l=l+32|0;o=s+16|0;p=s;q=+h[d>>3];i=q-+h[b>>3];r=+h[d+8>>3];f=r-+h[b+8>>3];c[b>>2]=c[d>>2];c[b+4>>2]=c[d+4>>2];c[b+8>>2]=c[d+8>>2];c[b+12>>2]=c[d+12>>2];d=c[b+52>>2]|0;if(!((e|0)!=0|(d|0)==0)){n=d+40|0;h[n>>3]=+h[n>>3]+i;n=d+48|0;h[n>>3]=+h[n>>3]+f}m=b+48|0;d=c[m>>2]|0;a:do if(d|0){n=b+64|0;f=((a[n>>0]|0)==0?f:i)/+(d|0);k=b+56|0;j=0;while(1){if((j|0)>=(d|0))break a;b=c[(c[k>>2]|0)+(j<<2)>>2]|0;g=j+1|0;d=~~(f*+(g|0))-~~(f*+(j|0))|0;if(!(a[n>>0]|0))OJ(p,q,+h[b+8>>3]+ +(d|0));else OJ(p,+h[b>>3]+ +(d|0),r);c[o>>2]=c[p>>2];c[o+4>>2]=c[p+4>>2];c[o+8>>2]=c[p+8>>2];c[o+12>>2]=c[p+12>>2];NJ(b,o,e);j=g;d=c[m>>2]|0}}while(0);l=s;return}function OJ(a,b,c){a=a|0;b=+b;c=+c;h[a>>3]=b;h[a+8>>3]=c;return}function PJ(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0.0,s=0.0;q=l;l=l+48|0;j=q+32|0;n=q+16|0;m=q;a[b+65>>0]=e;k=b+16|0;s=+h[d>>3];p=d+8|0;r=+h[p>>3];OJ(n,s,r-+h[b+8>>3]);c[k>>2]=c[n>>2];c[k+4>>2]=c[n+4>>2];c[k+8>>2]=c[n+8>>2];c[k+12>>2]=c[n+12>>2];k=b+32|0;OJ(m,+h[b>>3]+s,r);c[k>>2]=c[m>>2];c[k+4>>2]=c[m+4>>2];c[k+8>>2]=c[m+8>>2];c[k+12>>2]=c[m+12>>2];k=c[b+48>>2]|0;m=k+-1|0;n=(e|0)==0;o=b+56|0;i=b+64|0;g=0;while(1){if((g|0)>=(k|0))break;do if(!n){b=(g|0)==0;f=(g|0)==(m|0);if(!(a[i>>0]|0))if(b){b=f?15:14;break}else{b=f?11:10;break}else if(b){b=f?15:13;break}else{b=f?7:5;break}}else b=0;while(0);f=c[(c[o>>2]|0)+(g<<2)>>2]|0;c[j>>2]=c[d>>2];c[j+4>>2]=c[d+4>>2];c[j+8>>2]=c[d+8>>2];c[j+12>>2]=c[d+12>>2];PJ(f,j,b&e);if(!(a[i>>0]|0))h[p>>3]=+h[p>>3]-+h[(c[(c[o>>2]|0)+(g<<2)>>2]|0)+8>>3];else h[d>>3]=+h[c[(c[o>>2]|0)+(g<<2)>>2]>>3]+ +h[d>>3];g=g+1|0}l=q;return}function QJ(a,b){a=a|0;b=b|0;RJ(a);D_(b);return}function RJ(a){a=a|0;var b=0,d=0,e=0;d=a+48|0;e=a+56|0;b=0;while(1){if((b|0)>=(c[d>>2]|0))break;RJ(c[(c[e>>2]|0)+(b<<2)>>2]|0);b=b+1|0}D_(c[a+60>>2]|0);nH(c[a+52>>2]|0);D_(c[e>>2]|0);D_(a);return}function SJ(a){a=a|0;var b=0.0,d=0.0;d=+LL(a,c[46376]|0,0.0,.01);b=+LL(a,c[46375]|0,0.0,.02);b=(d>b?d:b)*72.0;return +(+(~~(b+(b>=0.0?.5:-.5))|0))}function TJ(a,b){a=+a;b=+b;var c=0;c=~~(a/b);return +(+((+(c|0)*b+1.0e-05>2]|0)+8>>2]|0;if(!a)a=0;else a=(c[c[a+4>>2]>>2]|0)==89&1;return a|0}function VJ(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;f=c[46513]|0;a:do if(!f)d=0;else{g=c[46514]|0;e=0;while(1){if((e|0)>=(g|0)){d=0;break a}d=c[f+(e<<2)>>2]|0;h=c[d>>2]|0;if((a[h>>0]|0)==(a[b>>0]|0)?(b$(h,b)|0)==0:0)break a;e=e+1|0}}while(0);return d|0}function WJ(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;if(ZL(xx(d,102500)|0)|0)if((a[b>>0]|0)==101?(b$(b,102659)|0)==0:0){d=101;g=6}else{b=102493;g=4}else g=4;if((g|0)==4){d=a[b>>0]|0;if(d<<24>>24==99)if(!(b$(b,102493)|0))g=11;else{d=99;g=6}else g=6}a:do if((g|0)==6){e=20744;while(1){f=c[e>>2]|0;if(!f){g=11;break a}if((a[f>>0]|0)==d<<24>>24?(b$(f,b)|0)==0:0){b=e;break a}e=e+16|0}}while(0);if((g|0)==11)b=XJ(b)|0;return b|0}function XJ(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;h=l;l=l+16|0;g=h;d=VJ(b)|0;if(!d){f=c[46514]|0;d=f+1|0;c[46514]=d;e=c[46513]|0;if(!e)d=vH(d<<2)|0;else d=xH(e,d<<2)|0;c[46513]=d;d=uH(16)|0;c[(c[46513]|0)+(f<<2)>>2]=d;c[d>>2]=c[5186];c[d+4>>2]=c[5187];c[d+8>>2]=c[5188];c[d+12>>2]=c[5189];e=n1(b)|0;c[d>>2]=e;do if(!0){if((a[b>>0]|0)==99?(b$(b,102493)|0)==0:0){e=1;break}c[g>>2]=c[5186];c[g+4>>2]=e;Pw(0,102664,g)|0;e=0}else e=1;while(0);a[d+12>>0]=e}l=h;return d|0}function YJ(a,b){a=a|0;b=b|0;var c=0.0,d=0.0;d=+h[b>>3]*.5257311121191336;c=+h[b+8>>3]*.8944271909999159;c=d>c?d:c;h[a>>3]=c*4.97979656976556;h[a+8>>3]=c*4.73606797749979;return}function ZJ(a,b){a=a|0;b=b|0;var c=0.0,d=0.0,e=0.0,f=0,g=0.0,i=0.0,j=0.0,k=0,l=0,m=0.0;d=+h[b>>3];k=b+8|0;e=+h[k>>3];c=e/d;if(!(c>.9510565162951536))if(c<.9510565162951536){j=d;e=d*.9510565162951536}else j=d;else j=e*1.0514622242382672;d=j*.5257311121191336;g=j*.20081141588622725;i=j*.05020285397155681;c=.3141592653589793;f=0;while(1){if((f|0)>=10)break;h[a+(f<<4)>>3]=+E(+c)*d;h[a+(f<<4)+8>>3]=+F(+c)*d-i;m=c+.6283185307179586;l=f|1;h[a+(l<<4)>>3]=+E(+m)*g;h[a+(l<<4)+8>>3]=+F(+m)*g-i;c=c+1.2566370614359172;f=f+2|0}h[b>>3]=j;h[k>>3]=e;return}function _J(a){a=a|0;a=c[(c[a+16>>2]|0)+12>>2]|0;if(a|0){D_(c[a+44>>2]|0);D_(a)}return}function $J(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;o=l;l=l+80|0;k=o+40|0;g=o;n=o+64|0;h=o+56|0;if(!(a[e>>0]|0)){g=4208;h=b+40|0;do{c[b>>2]=c[g>>2];b=b+4|0;g=g+4|0}while((b|0)<(h|0))}else{i=(f|0)==0?103330:f;c[n>>2]=15;j=d+16|0;f=c[j>>2]|0;do if(a[(c[f+104>>2]|0)+82>>0]|0){f=_Q(d,e,n)|0;if(!f){f=c[j>>2]|0;m=8;break}if(nK(d,f,g,i,c[n>>2]|0,0)|0){c[k>>2]=ry(d)|0;c[k+4>>2]=e;c[k+8>>2]=i;Pw(0,103332,k)|0}}else m=8;while(0);if((m|0)==8){if((c[(c[f+8>>2]|0)+8>>2]|0)==1664)h=0;else{c[h>>2]=d;c[h+4>>2]=0}if(nK(d,0,g,e,c[n>>2]|0,h)|0)oK(d,e)}c[g+36>>2]=0;h=b+40|0;do{c[b>>2]=c[g>>2];b=b+4|0;g=g+4|0}while((b|0)<(h|0))}l=o;return}function aK(a,b){a=a|0;b=b|0;var d=0.0,e=0.0,f=0,g=0,i=0,j=0.0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0,t=0;r=l;l=l+112|0;n=r+96|0;m=r+80|0;p=r+64|0;k=r+48|0;q=r+32|0;o=r;f=r+16|0;if(!a){c[46517]=0;a=0}else{g=c[a+4>>2]|0;a=c[a>>2]|0;i=(c[(c[(ez(a)|0)+16>>2]|0)+116>>2]&3)*90|0;c[n>>2]=c[b>>2];c[n+4>>2]=c[b+4>>2];c[n+8>>2]=c[b+8>>2];c[n+12>>2]=c[b+12>>2];ZG(f,n,i);c[q>>2]=c[f>>2];c[q+4>>2]=c[f+4>>2];c[q+8>>2]=c[f+8>>2];c[q+12>>2]=c[f+12>>2];a:do if(g){d=+h[g+8>>3];e=+h[g+24>>3];s=+h[q>>3];if((+h[g>>3]<=s?s<=+h[g+16>>3]:0)?(j=+h[q+8>>3],d<=j):0)a=j<=e&1;else a=0}else{if((a|0)==(c[46517]|0)){f=c[46518]|0;g=c[46520]|0;i=c[46519]|0}else{g=c[(c[a+16>>2]|0)+12>>2]|0;c[46521]=g;i=c[g+44>>2]|0;c[46519]=i;f=c[g+8>>2]|0;c[46518]=f;g=O((c[g+4>>2]|0)+-1|0,f)|0;g=(g|0)>0?g:0;c[46520]=g;c[46517]=a}a=0;b=0;while(1){if((a|0)>=(f|0)){a=1;break a}t=i+(g+a<<4)|0;c[o>>2]=c[t>>2];c[o+4>>2]=c[t+4>>2];c[o+8>>2]=c[t+8>>2];c[o+12>>2]=c[t+12>>2];t=i+(g+((a+4|0)%(f|0)|0)<<4)|0;c[k>>2]=c[q>>2];c[k+4>>2]=c[q+4>>2];c[k+8>>2]=c[q+8>>2];c[k+12>>2]=c[q+12>>2];c[p>>2]=c[45844];c[p+4>>2]=c[45845];c[p+8>>2]=c[45846];c[p+12>>2]=c[45847];c[m>>2]=c[o>>2];c[m+4>>2]=c[o+4>>2];c[m+8>>2]=c[o+8>>2];c[m+12>>2]=c[o+12>>2];c[n>>2]=c[t>>2];c[n+4>>2]=c[t+4>>2];c[n+8>>2]=c[t+8>>2];c[n+12>>2]=c[t+12>>2];b=b+((mK(k,p,m,n)|0)==0&1)|0;if((b|0)==2){a=0;break}else a=a+2|0}}while(0)}l=r;return a|0}function bK(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;e=c[b+16>>2]|0;if((a[(c[e+104>>2]|0)+82>>0]|0)!=0?(a[e+145>>0]|0)!=0:0)b=bR(b,d,0,f,g)|0;else b=0;return b|0}function cK(e,f){e=e|0;f=f|0;var i=0,j=0,k=0.0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0.0,C=0.0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,P=0,Q=0,R=0;P=l;l=l+48|0;H=P+24|0;G=P+16|0;A=P+8|0;z=P;L=P+32|0;n=P+28|0;M=c[e+16>>2]|0;N=M+208|0;i=c[N>>2]|0;if((i|0)==0?(b[M+260>>1]&1)==0:0)J=0;else E=4;if((E|0)==4)if(!(c[e+152>>2]&4)){PO(e,i,c[M+228>>2]|0,c[M+244>>2]|0,c[M+212>>2]|0);J=1}else J=1;I=f+16|0;i=c[I>>2]|0;r=c[i+12>>2]|0;F=c[r+44>>2]|0;K=c[r+8>>2]|0;r=c[r+4>>2]|0;if((c[46515]|0)<(K|0)){i=K+5|0;c[46515]=i;j=c[46516]|0;if(!j)i=vH(i<<4)|0;else i=xH(j,i<<4)|0;c[46516]=i;i=c[I>>2]|0}D=(c[i+104>>2]|0)+56|0;i=i+16|0;c[D>>2]=c[i>>2];c[D+4>>2]=c[i+4>>2];c[D+8>>2]=c[i+8>>2];c[D+12>>2]=c[i+12>>2];D=c[I>>2]|0;B=+h[D+32>>3]*72.0;B=(+h[D+96>>3]+ +h[D+88>>3])/+(~~(B+(B>=0.0?.5:-.5))|0);C=+h[D+40>>3]*72.0;C=+h[D+80>>3]/+(~~(C+(C>=0.0?.5:-.5))|0);D=dK(e,f)|0;c[L>>2]=0;i=d[(c[I>>2]|0)+117>>0]|0;do if(!(i&1)){if(i&2|0){s=OL(f,0,103230)|0;UO(e,s);WO(e,OL(f,0,103238)|0);j=0;i=1;break}if(i&8|0){s=OL(f,0,103246)|0;UO(e,s);WO(e,OL(f,0,103254)|0);j=0;i=1;break}if(i&4|0){s=OL(f,0,103262)|0;UO(e,s);WO(e,OL(f,0,103270)|0);j=0;i=1;break}if(!(D&1))if(!(D&576)){j=0;i=0}else{j=eK(f)|0;i=1}else{j=eK(f)|0;if(!((uG(j,L,n)|0)<<24>>24)){WO(e,j);i=1}else{WO(e,c[L>>2]|0);i=c[L+4>>2]|0;m=KL(f,c[46403]|0,0,0)|0;k=+g[n>>2];if(!i)XO(e,134232,m,k);else XO(e,i,m,k);i=(D&2)>>>1|2}}s=fK(e,f)|0}else{s=OL(f,0,103214)|0;UO(e,s);WO(e,OL(f,0,103222)|0);j=0;i=1}while(0);m=c[(c[I>>2]|0)+8>>2]|0;if(a[m+12>>0]|0){m=c[m>>2]|0;if((a[m>>0]|0)==99){m=(b$(m,102493)|0)==0;E=33}else u=1}else{m=1;E=33}if((E|0)==33){m=m^1;if((r|0)!=0|i<<24>>24==0|m)u=m;else{UO(e,134297);r=1;u=0}}v=(K|0)<3;w=(D&512|0)!=0;y=(D&8|0)==0;x=(D&64|0)==0;p=(D&1024|0)==0;q=(D&2130706444|0)==0;t=0;while(1){if((t|0)>=(r|0))break;n=O(t,K)|0;o=c[46516]|0;m=0;while(1){if((m|0)>=(K|0))break;R=m+n|0;k=+h[F+(R<<4)+8>>3];Q=c[I>>2]|0;h[o+(m<<4)>>3]=+h[Q+16>>3]+ +h[F+(R<<4)>>3]*B;h[o+(m<<4)+8>>3]=+h[Q+24>>3]+k*C;m=m+1|0}do if(v){if(w&(t|0)==0?(A$(j,58)|0)!=0:0)if((SE(e,o,j)|0)>1){c[z>>2]=ry(f)|0;Pw(3,103278,z)|0;i=0}else i=0;ZO(e,c[46516]|0,K,i&255);if(!y)gK(e,f)}else{if(!x){if((t|0)==0?(WE(e,o,j,1)|0)>1:0){c[A>>2]=ry(f)|0;Pw(3,103278,A)|0}_O(e,c[46516]|0,K,0);break}if(!p){UO(e,134297);_O(e,c[46516]|0,K,i&255);UO(e,s);bP(e,(c[46516]|0)+32|0,2);break}i=i&255;if(q){_O(e,o,K,i);break}else{EJ(e,o,K,D,i);break}}while(0);t=t+1|0;i=0}m=c[(c[I>>2]|0)+8>>2]|0;if(!(a[m+12>>0]|0)){m=xx(f,105999)|0;if(m|0?a[m>>0]|0:0){o=m;E=65}}else{m=c[m>>2]|0;if((a[m>>0]|0)==99?(b$(m,102493)|0)==0:0){m=xx(f,102500)|0;if(m|0?a[m>>0]|0:0){o=m;E=65}}else{o=m;E=65}}if((E|0)==65){n=c[46516]|0;m=0;while(1){if((m|0)>=(K|0))break;k=+h[F+(m<<4)+8>>3];R=c[I>>2]|0;h[n+(m<<4)>>3]=+h[R+16>>3]+ +h[F+(m<<4)>>3]*B;h[n+(m<<4)+8>>3]=+h[R+24>>3]+k*C;m=m+1|0}m=i&255;do if(!(u|i<<24>>24==0)){if(v){if(w&(t|0)==0?(A$(j,58)|0)!=0:0)if((SE(e,n,j)|0)>1){c[G>>2]=ry(f)|0;Pw(3,103278,G)|0;i=0}else i=0;ZO(e,c[46516]|0,K,i&255);if(y)break;gK(e,f);break}if(x)if(!(D&12)){_O(e,n,K,m);break}else{EJ(e,n,K,D,m);break}else{if((WE(e,n,j,1)|0)>1){c[H>>2]=ry(f)|0;Pw(3,103278,H)|0}_O(e,c[46516]|0,K,0);break}}while(0);R=c[46516]|0;dP(e,o,R,K,i,NL(f,c[46396]|0,134226)|0)}D_(c[L>>2]|0);oH(e,10,c[(c[I>>2]|0)+104>>2]|0);if(J){if(c[e+152>>2]&4|0)PO(e,c[N>>2]|0,c[M+228>>2]|0,c[M+244>>2]|0,c[M+212>>2]|0);QO(e)}l=P;return}function dK(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=l;l=l+16|0;f=h;e=jK(d,f)|0;if(e|0)YO(b,e);e=c[46402]|0;if((e|0?(g=yx(d,e)|0,g|0):0)?a[g>>0]|0:0)fP(b,+LL(d,c[46402]|0,1.0,0.0));l=h;return c[f>>2]|0}function eK(a){a=a|0;return iK(a,131718)|0}function fK(b,d){b=b|0;d=d|0;d=OL(d,c[46378]|0,191979)|0;d=a[d>>0]|0?d:134232;UO(b,d);return d|0}function gK(a,b){a=a|0;b=b|0;var d=0,e=0,f=0.0,g=0,i=0.0,j=0,k=0,m=0;d=l;l=l+96|0;j=d+80|0;k=d+64|0;e=d+32|0;m=d+16|0;g=d;b=c[b+16>>2]|0;f=+h[b+80>>3];h[m+8>>3]=f*.375;i=+h[b+96>>3];h[m>>3]=i*.6614;b=b+16|0;c[k>>2]=c[m>>2];c[k+4>>2]=c[m+4>>2];c[k+8>>2]=c[m+8>>2];c[k+12>>2]=c[m+12>>2];c[j>>2]=c[b>>2];c[j+4>>2]=c[b+4>>2];c[j+8>>2]=c[b+8>>2];c[j+12>>2]=c[b+12>>2];hK(g,k,j);c[e>>2]=c[g>>2];c[e+4>>2]=c[g+4>>2];c[e+8>>2]=c[g+8>>2];c[e+12>>2]=c[g+12>>2];g=e+8|0;b=e+24|0;h[b>>3]=+h[g>>3];h[e+16>>3]=+h[e>>3]-i*1.3228;bP(a,e,2);f=+h[g>>3]-f*.75;h[g>>3]=f;h[b>>3]=f;bP(a,e,2);l=d;return}function hK(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0;d=+h[c+8>>3]+ +h[b+8>>3];h[a>>3]=+h[c>>3]+ +h[b>>3];h[a+8>>3]=d;return}function iK(b,d){b=b|0;d=d|0;var e=0;e=OL(b,c[46379]|0,191979)|0;if(!(a[e>>0]|0)){e=OL(b,c[46378]|0,191979)|0;return ((a[e>>0]|0)==0?d:e)|0}else return e|0;return 0}function jK(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;e=OL(b,c[46387]|0,191979)|0;a:do if(!(a[e>>0]|0)){g=0;e=0}else{g=AF(e)|0;h=g;e=0;b:while(1){f=c[h>>2]|0;if(!f)break a;switch(a[f>>0]|0){case 102:{if(!(b$(f,108075)|0)){h=h+4|0;e=e|1;continue b}break}case 114:{if(!(b$(f,103290)|0)){f=h;do{j=f;f=f+4|0;i=c[f>>2]|0;c[j>>2]=i}while((i|0)!=0);j=h;e=e|4;h=j;continue b}if(!(b$(f,103308)|0)){f=h;do{i=f;f=f+4|0;j=c[f>>2]|0;c[i>>2]=j}while((j|0)!=0);j=h;e=e|3;h=j;continue b}break}case 100:{if(!(b$(f,103298)|0)){f=h;do{i=f;f=f+4|0;j=c[f>>2]|0;c[i>>2]=j}while((j|0)!=0);j=h;e=e|8;h=j;continue b}break}case 105:{if(!(b$(f,131253)|0)){h=h+4|0;e=e|32;continue b}break}case 115:{if((b$(f,103315)|0)==0?kK(b)|0:0){f=h;do{i=f;f=f+4|0;j=c[f>>2]|0;c[i>>2]=j}while((j|0)!=0);j=h;e=e|64;h=j;continue b}break}case 119:{if((b$(f,103323)|0)==0?lK(b)|0:0){f=h;do{i=f;f=f+4|0;j=c[f>>2]|0;c[i>>2]=j}while((j|0)!=0);j=h;e=e|512;h=j;continue b}break}default:{}}h=h+4|0}}while(0);f=c[(c[(c[b+16>>2]|0)+8>>2]|0)+8>>2]|0;if(f)e=c[f+40>>2]|e;c[d>>2]=e;return g|0}function kK(a){a=a|0;var b=0.0;a=c[(c[(c[a+16>>2]|0)+8>>2]|0)+8>>2]|0;if((((a|0)!=0?(c[a+8>>2]|0)==4:0)?(b=+h[a+16>>3],((~~(b+(b>=0.0?.5:-.5))|0)%90|0|0)==0):0)?+h[a+24>>3]==0.0:0)a=+h[a+32>>3]==0.0&1;else a=0;return a|0}function lK(a){a=a|0;a=c[(c[(c[a+16>>2]|0)+8>>2]|0)+8>>2]|0;if(!a)a=0;else a=(c[a+8>>2]|0)<3&1;return a|0}function mK(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0.0,f=0.0,g=0.0,i=0.0;i=+h[c+8>>3];g=-(+h[d+8>>3]-i);f=+h[c>>3];e=+h[d>>3]-f;f=e*i+f*g;return (+h[a+8>>3]*e+ +h[a>>3]*g-f>=0.0^+h[b>>3]*g-f+ +h[b+8>>3]*e>=0.0^1)&1|0}function nK(b,d,e,f,g,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;var j=0.0,k=0.0,m=0,n=0,o=0,p=0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;G=l;l=l+192|0;B=G+176|0;E=G+160|0;m=G+144|0;z=G+128|0;A=G+112|0;n=G+96|0;o=G+80|0;p=G+64|0;v=G+48|0;w=G+32|0;x=G+16|0;D=G;if(!d){c[E>>2]=0;c[E+4>>2]=0;c[E+8>>2]=0;c[E+12>>2]=0;m=(c[(c[(ez(b)|0)+16>>2]|0)+116>>2]&1|0)==0;C=c[b+16>>2]|0;q=+h[C+80>>3]*.5;j=+h[C+88>>3];t=m?q:j;q=m?j:q;m=0;C=E;j=0.0;k=-q;r=t;F=E+8|0;s=0.0;t=-t}else{k=+h[d>>3];t=+h[d+8>>3];q=+h[d+16>>3];r=+h[d+24>>3];OJ(m,(q+k)*.5,(r+t)*.5);c[E>>2]=c[m>>2];c[E+4>>2]=c[m+4>>2];c[E+8>>2]=c[m+8>>2];c[E+12>>2]=c[m+12>>2];H=E+8|0;m=1;C=E;j=+h[E>>3];F=H;s=+h[H>>3]}u=(q>r?q:r)*4.0;a:do if((f|0)!=0?(y=a[f>>0]|0,y<<24>>24!=0):0){f=f+1|0;switch(y<<24>>24|0){case 99:{p=1;g=0;f=0;n=0;j=0.0;o=0;break a}case 101:{if(a[f>>0]|0){p=1;g=0;f=0;n=0;j=0.0;o=1;break a}if(!i)h[C>>3]=q;else{pK(z,i,s,u);c[E>>2]=c[z>>2];c[E+4>>2]=c[z+4>>2];c[E+8>>2]=c[z+8>>2];c[E+12>>2]=c[z+12>>2]}p=0;g=g&2;f=0;n=1;j=0.0;o=0;m=1;break a}case 115:{h[F>>3]=t;switch(a[f>>0]|0){case 0:{if(!i)h[C>>3]=j;else{pK(A,i,-u,j);c[E>>2]=c[A>>2];c[E+4>>2]=c[A+4>>2];c[E+8>>2]=c[A+8>>2];c[E+12>>2]=c[A+12>>2]}p=0;g=g&1;f=0;n=1;j=-1.5707963267948966;o=0;m=1;break a}case 101:{if(!i)h[C>>3]=q;else{pK(n,i,-u,u);c[E>>2]=c[n>>2];c[E+4>>2]=c[n+4>>2];c[E+8>>2]=c[n+8>>2];c[E+12>>2]=c[n+12>>2]}p=0;g=g&3;f=0;n=1;j=-.7853981633974483;o=0;m=1;break a}case 119:{if(!i)h[C>>3]=k;else{u=-u;pK(o,i,u,u);c[E>>2]=c[o>>2];c[E+4>>2]=c[o+4>>2];c[E+8>>2]=c[o+8>>2];c[E+12>>2]=c[o+12>>2]}p=0;g=g&9;f=0;n=1;j=-2.356194490192345;o=0;m=1;break a}default:{h[F>>3]=s;p=1;g=0;f=0;n=0;j=0.0;o=1;break a}}}case 119:{if(a[f>>0]|0){p=1;g=0;f=0;n=0;j=0.0;o=1;break a}if(!i)h[C>>3]=k;else{pK(p,i,s,-u);c[E>>2]=c[p>>2];c[E+4>>2]=c[p+4>>2];c[E+8>>2]=c[p+8>>2];c[E+12>>2]=c[p+12>>2]}p=0;g=g&8;f=0;n=1;j=3.141592653589793;o=0;m=1;break a}case 110:{h[F>>3]=r;switch(a[f>>0]|0){case 0:{if(!i)h[C>>3]=j;else{pK(v,i,u,j);c[E>>2]=c[v>>2];c[E+4>>2]=c[v+4>>2];c[E+8>>2]=c[v+8>>2];c[E+12>>2]=c[v+12>>2]}p=0;g=g&4;f=0;n=1;j=1.5707963267948966;o=0;m=1;break a}case 101:{if(!i)h[C>>3]=q;else{pK(w,i,u,u);c[E>>2]=c[w>>2];c[E+4>>2]=c[w+4>>2];c[E+8>>2]=c[w+8>>2];c[E+12>>2]=c[w+12>>2]}p=0;g=g&6;f=0;n=1;j=.7853981633974483;o=0;m=1;break a}case 119:{if(!i)h[C>>3]=k;else{pK(x,i,u,-u);c[E>>2]=c[x>>2];c[E+4>>2]=c[x+4>>2];c[E+8>>2]=c[x+8>>2];c[E+12>>2]=c[x+12>>2]}p=0;g=g&12;f=0;n=1;j=2.356194490192345;o=0;m=1;break a}default:{h[F>>3]=s;p=1;g=0;f=0;n=0;j=0.0;o=1;break a}}}case 95:{p=1;f=1;n=0;j=0.0;o=0;break a}default:{p=1;g=0;f=0;n=0;j=0.0;o=1;break a}}}else{p=1;g=0;f=0;n=0;j=0.0;o=0}while(0);H=(c[(c[(ez(b)|0)+16>>2]|0)+116>>2]&3)*90|0;c[B>>2]=c[E>>2];c[B+4>>2]=c[E+4>>2];c[B+8>>2]=c[E+8>>2];c[B+12>>2]=c[E+12>>2];YG(D,B,H);c[E>>2]=c[D>>2];c[E+4>>2]=c[D+4>>2];c[E+8>>2]=c[D+8>>2];c[E+12>>2]=c[D+12>>2];if(!(f<<24>>24))g=qK(g,c[(c[(ez(b)|0)+16>>2]|0)+116>>2]&3)|0;a[e+33>>0]=g;c[e+24>>2]=d;k=+h[C>>3];h[e>>3]=+(~~(k+(k>=0.0?.5:-.5))|0);k=+h[F>>3];h[e+8>>3]=+(~~(k+(k>=0.0?.5:-.5))|0);h[e+16>>3]=+rK(j,c[(c[(ez(b)|0)+16>>2]|0)+116>>2]&3);k=+h[C>>3];j=+h[F>>3];if(k==0.0&j==0.0)g=-128;else{u=+K(+j,+k);t=u+4.71238898038469;g=~~((!(t>=6.283185307179586)?t:u+-1.5707963267948966)*40.74366543152521)&255}a[e+32>>0]=g;a[e+29>>0]=n;a[e+28>>0]=m;a[e+30>>0]=p;a[e+31>>0]=f;l=G;return o|0}function oK(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;c[e>>2]=ry(a)|0;c[e+4>>2]=b;Pw(0,103393,e)|0;l=d;return}function pK(a,b,d,e){a=a|0;b=b|0;d=+d;e=+e;var f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;p=l;l=l+128|0;g=p+112|0;j=p+48|0;k=p+16|0;m=p+32|0;n=p;o=c[b>>2]|0;i=c[(c[(ez(o)|0)+16>>2]|0)+116>>2]&3;h[k>>3]=e;h[k+8>>3]=d;f=(i|0)!=0;if(f){c[g>>2]=c[k>>2];c[g+4>>2]=c[k+4>>2];c[g+8>>2]=c[k+8>>2];c[g+12>>2]=c[k+12>>2];YG(m,g,i*90|0);c[k>>2]=c[m>>2];c[k+4>>2]=c[m+4>>2];c[k+8>>2]=c[m+8>>2];c[k+12>>2]=c[m+12>>2]}m=j+48|0;q=j+32|0;c[j>>2]=0;c[j+4>>2]=0;c[j+8>>2]=0;c[j+12>>2]=0;c[j+16>>2]=0;c[j+20>>2]=0;c[j+24>>2]=0;c[j+28>>2]=0;c[q>>2]=c[k>>2];c[q+4>>2]=c[k+4>>2];c[q+8>>2]=c[k+8>>2];c[q+12>>2]=c[k+12>>2];c[m>>2]=c[k>>2];c[m+4>>2]=c[k+4>>2];c[m+8>>2]=c[k+8>>2];c[m+12>>2]=c[k+12>>2];MK(b,c[(c[(c[(c[o+16>>2]|0)+8>>2]|0)+4>>2]|0)+12>>2]|0,j,1);if(f){c[g>>2]=c[j>>2];c[g+4>>2]=c[j+4>>2];c[g+8>>2]=c[j+8>>2];c[g+12>>2]=c[j+12>>2];ZG(n,g,i*90|0);c[j>>2]=c[n>>2];c[j+4>>2]=c[n+4>>2];c[j+8>>2]=c[n+8>>2];c[j+12>>2]=c[n+12>>2]};c[a>>2]=c[j>>2];c[a+4>>2]=c[j+4>>2];c[a+8>>2]=c[j+8>>2];c[a+12>>2]=c[j+12>>2];l=p;return}function qK(a,b){a=a|0;b=b|0;a:do switch(b|0){case 3:switch(a|0){case 4:{a=2;break a}case 1:{a=8;break a}case 8:{a=1;break a}case 2:{a=4;break a}default:break a}case 2:switch(a|0){case 4:{a=1;break a}case 1:{a=4;break a}default:break a}case 1:switch(a|0){case 4:{a=2;break a}case 1:{a=8;break a}case 8:{a=4;break a}case 2:{a=1;break a}default:break a}default:{}}while(0);return a|0}function rK(a,b){a=+a;b=b|0;switch(b|0){case 3:{if(!(a==3.141592653589793))if(!(a==2.356194490192345))if(!(a==1.5707963267948966))if(!(a==0.0))if(!(a==-.7853981633974483)){if(a==-1.5707963267948966)a=3.141592653589793}else a=2.356194490192345;else a=1.5707963267948966;else a=0.0;else a=-.7853981633974483;else a=-1.5707963267948966;break}case 2:{a=-a;break}case 1:{a=a+-1.5707963267948966;break}default:{}}return +a}function sK(a,b){a=a|0;b=b|0;var d=0.0,e=0,f=0.0,g=0.0,i=0,j=0,k=0;e=l;l=l+32|0;k=e+16|0;i=e;a=c[a>>2]|0;j=(c[(c[(ez(a)|0)+16>>2]|0)+116>>2]&3)*90|0;c[k>>2]=c[b>>2];c[k+4>>2]=c[b+4>>2];c[k+8>>2]=c[b+8>>2];c[k+12>>2]=c[b+12>>2];ZG(i,k,j);d=+h[i>>3];g=+h[i+8>>3];a=c[a+16>>2]|0;f=+h[a+80>>3]*.5;if(!(!(g>=-f)|!(g<=f))?d>=-+h[a+88>>3]:0)a=d<=+h[a+96>>3]&1;else a=0;l=e;return a|0}function tK(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0.0;n=l;l=l+32|0;m=n;i=c[a+16>>2]|0;j=i+208|0;g=c[j>>2]|0;if(!g)k=(b[i+260>>1]&1)!=0;else k=1;e=d+16|0;d=c[e>>2]|0;f=c[d+12>>2]|0;if(f|0){if(k?(c[a+152>>2]&4|0)==0:0){PO(a,g,c[i+228>>2]|0,c[i+244>>2]|0,c[i+212>>2]|0);d=c[e>>2]|0}g=c[a+36>>2]|0;p=+h[d+24>>3]+ +(c[f+8>>2]|0);o=c[f>>2]|0;h[m>>3]=+h[d+16>>3]+ +(c[f+4>>2]|0);h[m+8>>3]=p;c[m+16>>2]=o;g1(g,103424,m)|0;g=c[e>>2]|0;m=(c[g+104>>2]|0)+56|0;g=g+16|0;c[m>>2]=c[g>>2];c[m+4>>2]=c[g+4>>2];c[m+8>>2]=c[g+8>>2];c[m+12>>2]=c[g+12>>2];oH(a,10,c[(c[e>>2]|0)+104>>2]|0);if(k){if(c[a+152>>2]&4|0)PO(a,c[j>>2]|0,c[i+228>>2]|0,c[i+244>>2]|0,c[i+212>>2]|0);QO(a)}}l=n;return}function uK(a){a=a|0;RJ(c[(c[a+16>>2]|0)+12>>2]|0);return}function vK(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0;m=l;l=l+64|0;k=m+40|0;h=m;if(!(a[f>>0]|0)){h=4208;g=b+40|0;do{c[b>>2]=c[h>>2];b=b+4|0;h=h+4|0}while((b|0)<(g|0))}else{g=(g|0)==0?103330:g;i=c[(c[e+16>>2]|0)+12>>2]|0;j=BK(i,f)|0;if(!j){if(nK(e,i+16|0,h,f,15,0)|0)oK(e,f)}else if(nK(e,j+16|0,h,g,d[j+65>>0]|0,0)|0){c[k>>2]=ry(e)|0;c[k+4>>2]=f;c[k+8>>2]=g;Pw(0,103332,k)|0}g=b+40|0;do{c[b>>2]=c[h>>2];b=b+4|0;h=h+4|0}while((b|0)<(g|0))}l=m;return}function wK(a,b){a=a|0;b=b|0;var d=0.0,e=0.0,f=0,g=0,i=0,j=0.0,k=0,m=0,n=0.0;k=l;l=l+32|0;m=k+16|0;i=k;f=c[a+4>>2]|0;a=c[a>>2]|0;g=(c[(c[(ez(a)|0)+16>>2]|0)+116>>2]&3)*90|0;c[m>>2]=c[b>>2];c[m+4>>2]=c[b+4>>2];c[m+8>>2]=c[b+8>>2];c[m+12>>2]=c[b+12>>2];ZG(i,m,g);c[b>>2]=c[i>>2];c[b+4>>2]=c[i+4>>2];c[b+8>>2]=c[i+8>>2];c[b+12>>2]=c[i+12>>2];if(!f){f=c[(c[a+16>>2]|0)+12>>2]|0;g=f+16|0;a=f+24|0;i=f+32|0;f=f+40|0}else{g=f;a=f+8|0;i=f+16|0;f=f+24|0}e=+h[a>>3];d=+h[f>>3];n=+h[b>>3];if((+h[g>>3]<=n?n<=+h[i>>3]:0)?(j=+h[b+8>>3],e<=j):0)a=j<=d&1;else a=0;l=k;return a|0}function xK(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0.0,j=0.0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0,t=0,u=0,v=0.0;u=l;l=l+80|0;r=u+64|0;q=u+32|0;t=u;a:do if(!(a[d+28>>0]|0))e=0;else{i=+h[d>>3];p=b+16|0;m=c[(c[p>>2]|0)+12>>2]|0;k=m+48|0;m=m+56|0;d=0;while(1){if((d|0)>=(c[k>>2]|0))break a;n=(c[(c[(ez(b)|0)+16>>2]|0)+116>>2]&1|0)==0;o=c[(c[m>>2]|0)+(d<<2)>>2]|0;j=+(~~+h[(n?o+16|0:o+24|0)>>3]|0);if(i>=j?(s=+(~~+h[(n?o+32|0:o+40|0)>>3]|0),i<=s):0)break;d=d+1|0}if(!(c[(c[(ez(b)|0)+16>>2]|0)+116>>2]&1)){t=c[p>>2]|0;v=+h[t+16>>3];h[f>>3]=v+j;j=+h[t+24>>3];i=+h[t+80>>3];h[f+8>>3]=j-i*.5;h[f+16>>3]=v+s}else{o=(c[(c[m>>2]|0)+(d<<2)>>2]|0)+16|0;b=(c[p>>2]|0)+16|0;c[q>>2]=c[o>>2];c[q+4>>2]=c[o+4>>2];c[q+8>>2]=c[o+8>>2];c[q+12>>2]=c[o+12>>2];c[q+16>>2]=c[o+16>>2];c[q+20>>2]=c[o+20>>2];c[q+24>>2]=c[o+24>>2];c[q+28>>2]=c[o+28>>2];c[r>>2]=c[b>>2];c[r+4>>2]=c[b+4>>2];c[r+8>>2]=c[b+8>>2];c[r+12>>2]=c[b+12>>2];_G(t,q,r);c[f>>2]=c[t>>2];c[f+4>>2]=c[t+4>>2];c[f+8>>2]=c[t+8>>2];c[f+12>>2]=c[t+12>>2];c[f+16>>2]=c[t+16>>2];c[f+20>>2]=c[t+20>>2];c[f+24>>2]=c[t+24>>2];c[f+28>>2]=c[t+28>>2];t=c[p>>2]|0;i=+h[t+80>>3];j=+h[t+24>>3]}h[f+24>>3]=i*.5+j;c[g>>2]=1}while(0);l=u;return e|0}function yK(d,e){d=d|0;e=e|0;var f=0,i=0,j=0,k=0.0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0.0;w=l;l=l+144|0;n=w+96|0;p=w+64|0;r=w;s=w+128|0;t=c[d+16>>2]|0;u=t+208|0;f=c[u>>2]|0;if(!f)v=(b[t+260>>1]&1)!=0;else v=1;m=e+16|0;q=c[m>>2]|0;o=c[q+12>>2]|0;j=o+16|0;c[p>>2]=c[j>>2];c[p+4>>2]=c[j+4>>2];c[p+8>>2]=c[j+8>>2];c[p+12>>2]=c[j+12>>2];c[p+16>>2]=c[j+16>>2];c[p+20>>2]=c[j+20>>2];c[p+24>>2]=c[j+24>>2];c[p+28>>2]=c[j+28>>2];x=+h[q+16>>3];h[p>>3]=+h[p>>3]+x;k=+h[q+24>>3];q=p+8|0;h[q>>3]=+h[q>>3]+k;q=p+16|0;h[q>>3]=+h[q>>3]+x;j=p+24|0;h[j>>3]=+h[j>>3]+k;if(v?(c[d+152>>2]&4|0)==0:0)PO(d,f,c[t+228>>2]|0,c[t+244>>2]|0,c[t+212>>2]|0);f=dK(d,e)|0;fK(d,e)|0;c[s>>2]=0;if(!(f&1))i=0;else{i=eK(e)|0;if(!((uG(i,s,n)|0)<<24>>24)){WO(d,i);i=1}else{WO(d,c[s>>2]|0);i=c[s+4>>2]|0;j=KL(e,c[46403]|0,0,0)|0;k=+g[n>>2];if(!i)XO(d,134232,j,k);else XO(d,i,j,k);i=f>>>1&1|2}}j=c[c[(c[m>>2]|0)+8>>2]>>2]|0;if((a[j>>0]|0)==77){m=(b$(j,103201)|0)==0;f=m?f|4:f}if(!(f&2130706444)){c[n>>2]=c[p>>2];c[n+4>>2]=c[p+4>>2];c[n+8>>2]=c[p+8>>2];c[n+12>>2]=c[p+12>>2];c[n+16>>2]=c[p+16>>2];c[n+20>>2]=c[p+20>>2];c[n+24>>2]=c[p+24>>2];c[n+28>>2]=c[p+28>>2];$O(d,n,i)}else{c[r>>2]=c[p>>2];c[r+4>>2]=c[p+4>>2];c[r+8>>2]=c[p+8>>2];c[r+12>>2]=c[p+12>>2];p=r+32|0;c[p>>2]=c[q>>2];c[p+4>>2]=c[q+4>>2];c[p+8>>2]=c[q+8>>2];c[p+12>>2]=c[q+12>>2];h[r+16>>3]=+h[p>>3];h[r+24>>3]=+h[r+8>>3];h[r+48>>3]=+h[r>>3];h[r+56>>3]=+h[r+40>>3];EJ(d,r,4,f,i)}zK(d,e,o);D_(c[s>>2]|0);if(v){if(c[d+152>>2]&4|0)PO(d,c[u>>2]|0,c[t+228>>2]|0,c[t+244>>2]|0,c[t+212>>2]|0);QO(d)}l=w;return}function zK(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=l;l=l+144|0;p=u+128|0;o=u+112|0;q=u+16|0;r=u;g=u+96|0;i=u+80|0;s=u+64|0;t=u+48|0;j=e+52|0;f=c[j>>2]|0;if(!f)f=d+16|0;else{n=f+56|0;m=e+16|0;f=e+32|0;c[o>>2]=c[m>>2];c[o+4>>2]=c[m+4>>2];c[o+8>>2]=c[m+8>>2];c[o+12>>2]=c[m+12>>2];c[p>>2]=c[f>>2];c[p+4>>2]=c[f+4>>2];c[p+8>>2]=c[f+8>>2];c[p+12>>2]=c[f+12>>2];AK(g,o,p);f=d+16|0;m=(c[f>>2]|0)+16|0;c[o>>2]=c[g>>2];c[o+4>>2]=c[g+4>>2];c[o+8>>2]=c[g+8>>2];c[o+12>>2]=c[g+12>>2];c[p>>2]=c[m>>2];c[p+4>>2]=c[m+4>>2];c[p+8>>2]=c[m+8>>2];c[p+12>>2]=c[m+12>>2];hK(i,o,p);c[n>>2]=c[i>>2];c[n+4>>2]=c[i+4>>2];c[n+8>>2]=c[i+8>>2];c[n+12>>2]=c[i+12>>2];oH(b,10,c[j>>2]|0);fK(b,d)|0}k=(c[f>>2]|0)+16|0;c[r>>2]=c[k>>2];c[r+4>>2]=c[k+4>>2];c[r+8>>2]=c[k+8>>2];c[r+12>>2]=c[k+12>>2];k=e+48|0;m=e+64|0;n=q+16|0;j=e+56|0;e=q+16|0;i=0;while(1){if((i|0)>=(c[k>>2]|0))break;if((i|0)>0){f=(c[j>>2]|0)+(i<<2)|0;g=c[f>>2]|0;if(!(a[m>>0]|0)){g=g+32|0;c[n>>2]=c[g>>2];c[n+4>>2]=c[g+4>>2];c[n+8>>2]=c[g+8>>2];c[n+12>>2]=c[g+12>>2];h[q>>3]=+h[(c[f>>2]|0)+16>>3];f=n;g=0}else{g=g+16|0;c[q>>2]=c[g>>2];c[q+4>>2]=c[g+4>>2];c[q+8>>2]=c[g+8>>2];c[q+12>>2]=c[g+12>>2];h[e>>3]=+h[q>>3];f=(c[f>>2]|0)+32|0;g=1}h[q+(g<<4)+8>>3]=+h[f+8>>3];c[o>>2]=c[q>>2];c[o+4>>2]=c[q+4>>2];c[o+8>>2]=c[q+8>>2];c[o+12>>2]=c[q+12>>2];c[p>>2]=c[r>>2];c[p+4>>2]=c[r+4>>2];c[p+8>>2]=c[r+8>>2];c[p+12>>2]=c[r+12>>2];hK(s,o,p);c[q>>2]=c[s>>2];c[q+4>>2]=c[s+4>>2];c[q+8>>2]=c[s+8>>2];c[q+12>>2]=c[s+12>>2];c[o>>2]=c[n>>2];c[o+4>>2]=c[n+4>>2];c[o+8>>2]=c[n+8>>2];c[o+12>>2]=c[n+12>>2];c[p>>2]=c[r>>2];c[p+4>>2]=c[r+4>>2];c[p+8>>2]=c[r+8>>2];c[p+12>>2]=c[r+12>>2];hK(t,o,p);c[n>>2]=c[t>>2];c[n+4>>2]=c[t+4>>2];c[n+8>>2]=c[t+8>>2];c[n+12>>2]=c[t+12>>2];bP(b,q,2)}zK(b,d,c[(c[j>>2]|0)+(i<<2)>>2]|0);i=i+1|0}l=u;return}function AK(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0;d=(+h[c+8>>3]+ +h[b+8>>3])*.5;h[a>>3]=(+h[c>>3]+ +h[b>>3])*.5;h[a+8>>3]=d;return}function BK(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;e=c[b+60>>2]|0;if(!(((e|0)!=0?(a[e>>0]|0)==(a[d>>0]|0):0)?(b$(e,d)|0)==0:0))f=4;a:do if((f|0)==4){g=b+56|0;f=c[b+48>>2]|0;e=0;while(1){if((e|0)>=(f|0)){b=0;break a}b=BK(c[(c[g>>2]|0)+(e<<2)>>2]|0,d)|0;if(!b)e=e+1|0;else break}}while(0);return b|0}function CK(a,b){a=a|0;b=b|0;var d=0;d=b+8|0;h[d>>3]=+h[d>>3]*1.375;c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];return}function DK(a,b){a=a|0;b=b|0;var d=0,e=0.0,f=0.0,g=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0;k=+h[b>>3];f=k*.5;m=+h[b+8>>3];i=m*.5;h[a>>3]=f;e=m*.40909090909090906;h[a+8>>3]=e;h[a+16>>3]=f;g=m*.4592530909090909;h[a+24>>3]=g;j=k*.275892;h[a+32>>3]=j;h[a+40>>3]=i;h[a+48>>3]=0.0;h[a+56>>3]=i;k=k*-.275892;h[a+64>>3]=k;h[a+72>>3]=i;l=-f;h[a+80>>3]=l;h[a+88>>3]=g;d=a+96|0;h[d>>3]=l;h[a+104>>3]=e;b=a+112|0;c[b>>2]=c[d>>2];c[b+4>>2]=c[d+4>>2];c[b+8>>2]=c[d+8>>2];c[b+12>>2]=c[d+12>>2];b=a+128|0;h[b>>3]=l;h[a+136>>3]=m*-.40909090909090906;d=a+144|0;c[d>>2]=c[b>>2];c[d+4>>2]=c[b+4>>2];c[d+8>>2]=c[b+8>>2];c[d+12>>2]=c[b+12>>2];h[a+160>>3]=l;g=-g;h[a+168>>3]=g;h[a+176>>3]=k;i=-i;h[a+184>>3]=i;h[a+192>>3]=0.0;h[a+200>>3]=i;h[a+208>>3]=j;h[a+216>>3]=i;h[a+224>>3]=f;h[a+232>>3]=g;d=a+240|0;h[d>>3]=f;h[a+248>>3]=-e;b=a+256|0;c[b>>2]=c[d>>2];c[b+4>>2]=c[d+4>>2];c[b+8>>2]=c[d+8>>2];c[b+12>>2]=c[d+12>>2];b=a+288|0;d=a+272|0;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];c[b>>2]=c[a>>2];c[b+4>>2]=c[a+4>>2];c[b+8>>2]=c[a+8>>2];c[b+12>>2]=c[a+12>>2];return}function EK(a,b){a=a|0;b=b|0;var d=0.0,e=0.0,f=0.0,g=0,i=0.0,j=0,k=0,m=0,n=0,o=0,p=0.0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;x=l;l=l+144|0;u=x+112|0;t=x+96|0;v=x+80|0;s=x+64|0;w=x+32|0;q=x+16|0;r=x;g=x+48|0;do if(a){j=c[a+4>>2]|0;k=c[a>>2]|0;o=(c[(c[(ez(k)|0)+16>>2]|0)+116>>2]&3)*90|0;c[u>>2]=c[b>>2];c[u+4>>2]=c[b+4>>2];c[u+8>>2]=c[b+8>>2];c[u+12>>2]=c[b+12>>2];ZG(g,u,o);c[w>>2]=c[g>>2];c[w+4>>2]=c[g+4>>2];c[w+8>>2]=c[g+8>>2];c[w+12>>2]=c[g+12>>2];if(j|0){d=+h[w>>3];if(!(+h[j>>3]<=d)){a=0;break}if(!(d<=+h[j+16>>3])){a=0;break}d=+h[w+8>>3];if(!(+h[j+8>>3]<=d)){a=0;break}a=d<=+h[j+24>>3];break}if((k|0)==(c[46522]|0)){d=+h[22924];e=+h[22925];i=+h[22926]}else{a=k+16|0;b=c[(c[a>>2]|0)+12>>2]|0;c[46523]=b;c[46524]=c[b+44>>2];c[46525]=c[b+8>>2];if(!(c[b+40>>2]&2048)){n=(c[(c[(ez(k)|0)+16>>2]|0)+116>>2]&1|0)==0;o=c[a>>2]|0;h[(n?183416:183424)>>3]=+h[o+96>>3]+ +h[o+88>>3];h[(n?183424:183416)>>3]=+h[o+80>>3];i=+h[o+32>>3]*72.0;f=+h[o+40>>3]*72.0;f=+(~~(f+(f>=0.0?.5:-.5))|0);i=+(~~(i+(i>=0.0?.5:-.5))|0)}else{jM(u,b);i=+h[u+16>>3]-+h[u>>3];f=+h[u+24>>3]-+h[u+8>>3];o=(c[(c[(ez(k)|0)+16>>2]|0)+116>>2]&1|0)==0;h[(o?183416:183424)>>3]=i;h[(o?183424:183416)>>3]=f}d=+h[22927];if(d==0.0){h[22927]=1.0;d=1.0}e=+h[22928];if(e==0.0){h[22928]=1.0;e=1.0}d=i/d;h[22924]=d;e=f/e;h[22925]=e;i=i*.5;h[22926]=i;h[22929]=f*.5;o=O((c[(c[46523]|0)+4>>2]|0)+-1|0,c[46525]|0)|0;c[46526]=(o|0)>0?o:0;c[46522]=k}f=+h[w>>3]*d;h[w>>3]=f;o=w+8|0;d=+h[o>>3]*e;h[o>>3]=d;if(!(+B(+f)>i)?(e=+B(+d),p=+h[22929],!(e>p)):0){o=c[46525]|0;if((o|0)<3){a=+u$(f/i,d/p)<1.0;break}b=(c[46527]|0)%(o|0)|0;a=(b+1|0)%(o|0)|0;k=c[46524]|0;m=c[46526]|0;n=k+(m+b<<4)|0;c[q>>2]=c[n>>2];c[q+4>>2]=c[n+4>>2];c[q+8>>2]=c[n+8>>2];c[q+12>>2]=c[n+12>>2];n=k+(m+a<<4)|0;c[r>>2]=c[n>>2];c[r+4>>2]=c[n+4>>2];c[r+8>>2]=c[n+8>>2];c[r+12>>2]=c[n+12>>2];c[s>>2]=c[w>>2];c[s+4>>2]=c[w+4>>2];c[s+8>>2]=c[w+8>>2];c[s+12>>2]=c[w+12>>2];c[v>>2]=c[45860];c[v+4>>2]=c[45861];c[v+8>>2]=c[45862];c[v+12>>2]=c[45863];c[t>>2]=c[q>>2];c[t+4>>2]=c[q+4>>2];c[t+8>>2]=c[q+8>>2];c[t+12>>2]=c[q+12>>2];c[u>>2]=c[n>>2];c[u+4>>2]=c[n+4>>2];c[u+8>>2]=c[n+8>>2];c[u+12>>2]=c[n+12>>2];if(mK(s,v,t,u)|0){c[s>>2]=c[w>>2];c[s+4>>2]=c[w+4>>2];c[s+8>>2]=c[w+8>>2];c[s+12>>2]=c[w+12>>2];c[v>>2]=c[q>>2];c[v+4>>2]=c[q+4>>2];c[v+8>>2]=c[q+8>>2];c[v+12>>2]=c[q+12>>2];c[t>>2]=c[r>>2];c[t+4>>2]=c[r+4>>2];c[t+8>>2]=c[r+8>>2];c[t+12>>2]=c[r+12>>2];c[u>>2]=c[45860];c[u+4>>2]=c[45861];c[u+8>>2]=c[45862];c[u+12>>2]=c[45863];n=(mK(s,v,t,u)|0)!=0;if(n?(c[s>>2]=c[w>>2],c[s+4>>2]=c[w+4>>2],c[s+8>>2]=c[w+8>>2],c[s+12>>2]=c[w+12>>2],c[v>>2]=c[r>>2],c[v+4>>2]=c[r+4>>2],c[v+8>>2]=c[r+8>>2],c[v+12>>2]=c[r+12>>2],c[t>>2]=c[45860],c[t+4>>2]=c[45861],c[t+8>>2]=c[45862],c[t+12>>2]=c[45863],c[u>>2]=c[q>>2],c[u+4>>2]=c[q+4>>2],c[u+8>>2]=c[q+8>>2],c[u+12>>2]=c[q+12>>2],(mK(s,v,t,u)|0)!=0):0){a=1;break}else{j=b;b=1}while(1){if((b|0)>=(o|0)){b=31;break}if(n){g=a;a=(a+1|0)%(o|0)|0}else{g=(j+-1+o|0)%(o|0)|0;a=j}q=k+(m+g<<4)|0;r=k+(m+a<<4)|0;c[s>>2]=c[w>>2];c[s+4>>2]=c[w+4>>2];c[s+8>>2]=c[w+8>>2];c[s+12>>2]=c[w+12>>2];c[v>>2]=c[45860];c[v+4>>2]=c[45861];c[v+8>>2]=c[45862];c[v+12>>2]=c[45863];c[t>>2]=c[q>>2];c[t+4>>2]=c[q+4>>2];c[t+8>>2]=c[q+8>>2];c[t+12>>2]=c[q+12>>2];c[u>>2]=c[r>>2];c[u+4>>2]=c[r+4>>2];c[u+8>>2]=c[r+8>>2];c[u+12>>2]=c[r+12>>2];if(!(mK(s,v,t,u)|0)){b=30;break}else{j=g;b=b+1|0}}if((b|0)==30){c[46527]=g;a=0;break}else if((b|0)==31){c[46527]=j;a=1;break}}else a=0}else a=0}else{c[46522]=0;a=0}while(0);l=x;return a&1|0}function FK(a,b){a=a|0;b=b|0;var d=0.0,e=0.0,f=0,g=0.0,i=0,j=0,k=0;j=l;l=l+32|0;f=j+16|0;i=j;if(a){a=c[a>>2]|0;k=(c[(c[(ez(a)|0)+16>>2]|0)+116>>2]&3)*90|0;c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];ZG(i,f,k);g=+h[i>>3];e=+h[i+8>>3];if((a|0)==(c[46530]|0))d=+h[22932];else{i=c[(c[a+16>>2]|0)+12>>2]|0;k=(c[i+4>>2]<<1)+-2|0;d=+h[(c[i+44>>2]|0)+((((k|0)>0?k:0)|1)<<4)>>3];h[22932]=d;c[46530]=a}if(+B(+g)>d|+B(+e)>d)a=0;else a=+u$(g,e)<=d&1}else{c[46530]=0;a=0}l=j;return a|0}function GK(e,f){e=e|0;f=f|0;var g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0.0,v=0,w=0;t=l;l=l+16|0;j=t;r=c[e+16>>2]|0;s=r+208|0;g=c[s>>2]|0;if((g|0)==0?(b[r+260>>1]&1)==0:0)q=0;else if(!(c[e+152>>2]&4)){PO(e,g,c[r+228>>2]|0,c[r+244>>2]|0,c[r+212>>2]|0);q=1}else q=1;n=f+16|0;k=c[(c[n>>2]|0)+12>>2]|0;o=c[k+44>>2]|0;p=c[k+8>>2]|0;k=c[k+4>>2]|0;if((c[46528]|0)<(p|0)){g=p+2|0;c[46528]=g;i=c[46529]|0;if(!i)g=vH(g<<4)|0;else g=xH(i,g<<4)|0;c[46529]=g}jK(f,j)|0;if(!(c[j>>2]&32))YO(e,21916);else YO(e,21912);g=c[46402]|0;if(g|0)fP(e,+LL(f,g,1.0,0.0));g=d[(c[n>>2]|0)+117>>0]|0;do if(!(g&1)){if(g&2|0){UO(e,OL(f,0,103230)|0);g=OL(f,0,103238)|0;WO(e,g);break}if(g&8|0){UO(e,OL(f,0,103246)|0);g=OL(f,0,103254)|0;WO(e,g);break}if(!(g&4)){g=iK(f,134232)|0;WO(e,g);fK(e,f)|0;break}else{UO(e,OL(f,0,103262)|0);g=OL(f,0,103270)|0;WO(e,g);break}}else{UO(e,OL(f,0,103214)|0);g=OL(f,0,103222)|0;WO(e,g)}while(0);if(!k)if(!(a[g>>0]|0))i=1;else{UO(e,g);i=1}else i=k;j=1;f=0;while(1){if((f|0)>=(i|0))break;k=O(f,p)|0;m=c[46529]|0;g=0;while(1){if((g|0)>=(p|0))break;w=g+k|0;u=+h[o+(w<<4)+8>>3];v=c[n>>2]|0;h[m+(g<<4)>>3]=+h[v+16>>3]+ +h[o+(w<<4)>>3];h[m+(g<<4)+8>>3]=+h[v+24>>3]+u;g=g+1|0}ZO(e,m,p,j);j=0;f=f+1|0}if(q){if(c[e+152>>2]&4|0)PO(e,c[s>>2]|0,c[r+228>>2]|0,c[r+244>>2]|0,c[r+212>>2]|0);QO(e)}l=t;return}function HK(a,b,e,f){a=a|0;b=b|0;e=e|0;f=f|0;var g=0,h=0;g=l;l=l+48|0;h=g;e=IK(b,e,f)|0;c[h+36>>2]=c[f+36>>2];nK(b,c[f+24>>2]|0,h,e,d[f+33>>0]|0,0)|0;b=h;e=a+40|0;do{c[a>>2]=c[b>>2];a=a+4|0;b=b+4|0}while((a|0)<(e|0));l=g;return}function IK(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0.0,j=0.0,k=0,m=0.0,n=0.0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0.0,B=0.0,C=0;z=l;l=l+32|0;y=z;g=z+24|0;k=z+16|0;x=c[(c[(c[(ez(b)|0)+60>>2]|0)+16>>2]|0)+116>>2]&3;f=b+16|0;w=(c[f>>2]|0)+16|0;c[y>>2]=c[w>>2];c[y+4>>2]=c[w+4>>2];c[y+8>>2]=c[w+8>>2];c[y+12>>2]=c[w+12>>2];JK(g,y,x);w=(c[d+16>>2]|0)+16|0;c[y>>2]=c[w>>2];c[y+4>>2]=c[w+4>>2];c[y+8>>2]=c[w+8>>2];c[y+12>>2]=c[w+12>>2];JK(k,y,x);x=a[e+33>>0]|0;y=x&255;a:do switch(x<<24>>24){case 0:case 15:{d=0;break}default:{d=c[e+24>>2]|0;if(!d){x=(c[(c[(ez(b)|0)+16>>2]|0)+116>>2]&1|0)==0;w=c[f>>2]|0;B=+h[w+80>>3]*.5;A=-B;m=+h[w+88>>3];j=-m;n=x?j:A;i=x?m:B;m=x?B:m;j=x?A:j}else{n=+h[d>>3];i=+h[d+16>>3];m=+h[d+24>>3];j=+h[d+8>>3]}x=c[g>>2]|0;v=c[g+4>>2]|0;w=c[k>>2]|0;s=c[k+4>>2]|0;t=~~j;u=~~((i+n)*.5);r=~~i;q=~~((m+j)*.5);p=~~m;o=~~n;g=0;k=0;d=0;e=0;b=0;while(1){if((k|0)==4)break a;if(1<>2]|0;else f=g}else f=g;g=f;k=k+1|0}}}while(0);l=z;return d|0}function JK(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0.0;switch(d|0){case 0:{f=+h[b>>3];e=+h[b+8>>3];break}case 2:{f=+h[b>>3];e=-+h[b+8>>3];break}case 1:{f=-+h[b+8>>3];e=+h[b>>3];break}case 3:{f=+h[b+8>>3];e=+h[b>>3];break}default:{f=0.0;e=0.0}}c[a>>2]=~~(f+(f>=0.0?.5:-.5));c[a+4>>2]=~~(e+(e>=0.0?.5:-.5));return}function KK(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=l;l=l+80|0;f=i+40|0;h=i;g=b+16|0;e=c[g>>2]|0;d=e+16|0;if(a[e+47>>0]|0){e=c[b>>2]&3;HK(f,c[((e|0)==3?b:b+48|0)+40>>2]|0,c[((e|0)==2?b:b+-48|0)+40>>2]|0,d);e=f;f=d+40|0;do{c[d>>2]=c[e>>2];d=d+4|0;e=e+4|0}while((d|0)<(f|0));e=c[g>>2]|0}d=e+56|0;if(a[e+87>>0]|0){e=c[b>>2]&3;HK(h,c[((e|0)==2?b:b+-48|0)+40>>2]|0,c[((e|0)==3?b:b+48|0)+40>>2]|0,d);e=h;f=d+40|0;do{c[d>>2]=c[e>>2];d=d+4|0;e=e+4|0}while((d|0)<(f|0))}l=i;return}function LK(){var a=0,b=0,d=0;a=l;l=l+32|0;b=a+16|0;d=a;c[d>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;c[d+12>>2]=0;c[b>>2]=c[d>>2];c[b+4>>2]=c[d+4>>2];c[b+8>>2]=c[d+8>>2];c[b+12>>2]=c[d+12>>2];EK(0,b)|0;c[b>>2]=c[d>>2];c[b+4>>2]=c[d+4>>2];c[b+8>>2]=c[d+8>>2];c[b+12>>2]=c[d+12>>2];FK(0,b)|0;c[b>>2]=c[d>>2];c[b+4>>2]=c[d+4>>2];c[b+8>>2]=c[d+8>>2];c[b+12>>2]=c[d+12>>2];aK(0,b)|0;l=a;return}function MK(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,g=0.0,i=0.0,j=0,k=0,m=0,n=0,o=0,p=0.0,q=0,r=0.0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;z=l;l=l+192|0;s=z+176|0;x=z+112|0;y=z+48|0;t=z+32|0;u=z+24|0;v=z+16|0;w=z;if(!(e<<24>>24)){k=d+48|0;c[t>>2]=c[k>>2];c[t+4>>2]=c[k+4>>2];c[t+8>>2]=c[k+8>>2];c[t+12>>2]=c[k+12>>2];k=u;m=v;n=x;o=0}else{c[t>>2]=c[d>>2];c[t+4>>2]=c[d+4>>2];c[t+8>>2]=c[d+8>>2];c[t+12>>2]=c[d+12>>2];k=v;m=u;n=0;o=x}h[u>>3]=0.0;h[v>>3]=1.0;q=t+8|0;f=0.0;g=1.0;j=0;p=+h[t>>3];while(1){r=+h[q>>3];f=(f+g)*.5;XL(w,d,3,f,n,o);c[t>>2]=c[w>>2];c[t+4>>2]=c[w+4>>2];c[t+8>>2]=c[w+8>>2];c[t+12>>2]=c[w+12>>2];c[s>>2]=c[w>>2];c[s+4>>2]=c[w+4>>2];c[s+8>>2]=c[w+8>>2];c[s+12>>2]=c[w+12>>2];a:do if(!((lb[b&127](a,s)|0)<<24>>24)){e=0;while(1){if((e|0)==4){e=k;j=1;break a}j=y+(e<<4)|0;A=x+(e<<4)|0;c[j>>2]=c[A>>2];c[j+4>>2]=c[A+4>>2];c[j+8>>2]=c[A+8>>2];c[j+12>>2]=c[A+12>>2];e=e+1|0}}else e=m;while(0);h[e>>3]=f;i=+h[t>>3];p=p-i;if(!((p>=0.0?p:-p)>.5)?(r=r-+h[q>>3],!((r>=0.0?r:-r)>.5)):0)break;f=+h[u>>3];g=+h[v>>3];p=i}b:do if(!(j<<24>>24)){e=0;while(1){if((e|0)==4)break b;A=d+(e<<4)|0;y=x+(e<<4)|0;c[A>>2]=c[y>>2];c[A+4>>2]=c[y+4>>2];c[A+8>>2]=c[y+8>>2];c[A+12>>2]=c[y+12>>2];e=e+1|0}}else{e=0;while(1){if((e|0)==4)break b;A=d+(e<<4)|0;x=y+(e<<4)|0;c[A>>2]=c[x>>2];c[A+4>>2]=c[x+4>>2];c[A+8>>2]=c[x+8>>2];c[A+12>>2]=c[x+12>>2];e=e+1|0}}while(0);l=z;return}function NK(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0.0;m=l;l=l+48|0;d=m+16|0;e=m;f=m+32|0;g=a+16|0;i=c[g>>2]|0;j=c[i+8>>2]|0;if(j|0?(k=j+4|0,c[(c[k>>2]|0)+12>>2]|0):0){c[f>>2]=a;c[f+4>>2]=0;n=+h[i+96>>3];h[e>>3]=+h[b>>3]-+h[i+16>>3];h[e+8>>3]=+h[b+8>>3]-+h[i+24>>3];k=c[(c[k>>2]|0)+12>>2]|0;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];k=lb[k&127](f,d)|0;h[(c[g>>2]|0)+96>>3]=n;OK(f,a,b,k)}l=m;return}function OK(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0.0,m=0,n=0;n=l;l=l+64|0;m=n;j=b+16|0;g=c[j>>2]|0;k=+h[g+96>>3];i=g+16|0;f=g+24|0;b=0;while(1){if((b|0)==4)break;h[m+(b<<4)>>3]=+h[d+(b<<4)>>3]-+h[i>>3];h[m+(b<<4)+8>>3]=+h[d+(b<<4)+8>>3]-+h[f>>3];b=b+1|0}MK(a,c[(c[(c[g+8>>2]|0)+4>>2]|0)+12>>2]|0,m,e);b=0;while(1){if((b|0)==4)break;e=c[j>>2]|0;h[d+(b<<4)>>3]=+h[e+16>>3]+ +h[m+(b<<4)>>3];h[d+(b<<4)+8>>3]=+h[e+24>>3]+ +h[m+(b<<4)+8>>3];b=b+1|0}h[(c[j>>2]|0)+96>>3]=k;l=n;return}function PK(b,d){b=b|0;d=d|0;var e=0,f=0;while(1){f=b+16|0;b=c[f>>2]|0;if(!(a[b+112>>0]|0))break;b=c[b+116>>2]|0}b=c[b+8>>2]|0;if(!b){b=uH(40)|0;c[(c[f>>2]|0)+8>>2]=b}e=c[b>>2]|0;if(!e)b=vH(((c[b+4>>2]|0)*48|0)+48|0)|0;else b=xH(e,((c[b+4>>2]|0)*48|0)+48|0)|0;f=c[(c[f>>2]|0)+8>>2]|0;c[f>>2]=b;f=f+4|0;e=c[f>>2]|0;c[f>>2]=e+1;f=b+(e*48|0)|0;c[f>>2]=uH(d<<4)|0;c[b+(e*48|0)+4>>2]=d;b=b+(e*48|0)+8|0;e=b+40|0;do{c[b>>2]=0;b=b+4|0}while((b|0)<(e|0));return f|0}function QK(b,e,f,g,i){b=b|0;e=e|0;f=f|0;g=g|0;i=i|0;var j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0.0,F=0.0;D=l;l=l+96|0;A=D+16|0;u=D;x=D+92|0;y=D+88|0;v=D+80|0;m=c[((c[b>>2]&3|0)==3?b:b+48|0)+40>>2]|0;z=ez(m)|0;B=PK(b,g)|0;n=b;while(1){o=c[n+16>>2]|0;if(!(a[o+112>>0]|0))break;n=c[o+116>>2]|0}if((a[i+8>>0]|0)==0?(j=c[m+16>>2]|0,k=c[e+16>>2]|0,(c[j+232>>2]|0)==(c[k+232>>2]|0)):0){p=(c[j+236>>2]|0)>(c[k+236>>2]|0);w=p?m:e;m=p?e:m}else w=e;if((m|0)==(c[((c[n>>2]&3|0)==3?n:n+48|0)+40>>2]|0)){j=o+80|0;k=o+40|0;p=d[o+86>>0]|0;e=d[o+46>>0]|0}else{j=o+40|0;k=o+80|0;p=d[o+46>>0]|0;e=d[o+86>>0]|0}o=c[j>>2]|0;j=c[k>>2]|0;if(((e|0)!=0?(r=m+16|0,q=c[(c[r>>2]|0)+8>>2]|0,(q|0)!=0):0)?(c[(c[q+4>>2]|0)+12>>2]|0)!=0:0){c[v>>2]=m;c[v+4>>2]=j;j=g+-4|0;e=u+8|0;k=0;while(1){if((k|0)>=(j|0))break;n=k+3|0;q=c[r>>2]|0;h[u>>3]=+h[f+(n<<4)>>3]-+h[q+16>>3];h[e>>3]=+h[f+(n<<4)+8>>3]-+h[q+24>>3];q=c[(c[(c[q+8>>2]|0)+4>>2]|0)+12>>2]|0;c[A>>2]=c[u>>2];c[A+4>>2]=c[u+4>>2];c[A+8>>2]=c[u+8>>2];c[A+12>>2]=c[u+12>>2];if(!((lb[q&127](v,A)|0)<<24>>24))break;else k=n}c[x>>2]=k;OK(v,m,f+(k<<4)|0,1)}else{c[x>>2]=0;k=0}if(((p|0)!=0?(t=w+16|0,s=c[(c[t>>2]|0)+8>>2]|0,(s|0)!=0):0)?(c[(c[s+4>>2]|0)+12>>2]|0)!=0:0){c[v>>2]=w;c[v+4>>2]=o;m=g+-4|0;e=u+8|0;j=m;while(1){if((j|0)<=0)break;g=c[t>>2]|0;h[u>>3]=+h[f+(j<<4)>>3]-+h[g+16>>3];h[e>>3]=+h[f+(j<<4)+8>>3]-+h[g+24>>3];g=c[(c[(c[g+8>>2]|0)+4>>2]|0)+12>>2]|0;c[A>>2]=c[u>>2];c[A+4>>2]=c[u+4>>2];c[A+8>>2]=c[u+8>>2];c[A+12>>2]=c[u+12>>2];if(!((lb[g&127](v,A)|0)<<24>>24))break;j=j+-3|0}c[y>>2]=j;OK(v,w,f+(j<<4)|0,0)}else{m=g+-4|0;c[y>>2]=m;j=m}while(1){if((k|0)>=(m|0))break;e=k+3|0;E=+h[f+(k<<4)>>3]-+h[f+(e<<4)>>3];F=+h[f+(k<<4)+8>>3]-+h[f+(e<<4)+8>>3];if(F*F+E*E<1.0e-06)k=e;else break}c[x>>2]=k;while(1){if((j|0)<=0)break;v=j+3|0;F=+h[f+(j<<4)>>3]-+h[f+(v<<4)>>3];E=+h[f+(j<<4)+8>>3]-+h[f+(v<<4)+8>>3];if(!(E*E+F*F<1.0e-06))break;j=j+-3|0}c[y>>2]=j;RK(b,w,f,x,y,B,i);r=c[x>>2]|0;n=c[y>>2]|0;m=n+4|0;n=n+3|0;o=A+16|0;p=A+32|0;q=A+48|0;k=z+16|0;j=r;while(1){if((j|0)>=(m|0))break;z=(c[B>>2]|0)+(j-r<<4)|0;e=f+(j<<4)|0;c[z>>2]=c[e>>2];c[z+4>>2]=c[e+4>>2];c[z+8>>2]=c[e+8>>2];c[z+12>>2]=c[e+12>>2];c[A>>2]=c[e>>2];c[A+4>>2]=c[e+4>>2];c[A+8>>2]=c[e+8>>2];c[A+12>>2]=c[e+12>>2];e=j+1|0;if((j|0)>=(n|0)){C=38;break}y=(c[B>>2]|0)+(e-r<<4)|0;z=f+(e<<4)|0;c[y>>2]=c[z>>2];c[y+4>>2]=c[z+4>>2];c[y+8>>2]=c[z+8>>2];c[y+12>>2]=c[z+12>>2];c[o>>2]=c[z>>2];c[o+4>>2]=c[z+4>>2];c[o+8>>2]=c[z+8>>2];c[o+12>>2]=c[z+12>>2];z=j+2|0;y=(c[B>>2]|0)+(z-r<<4)|0;z=f+(z<<4)|0;c[y>>2]=c[z>>2];c[y+4>>2]=c[z+4>>2];c[y+8>>2]=c[z+8>>2];c[y+12>>2]=c[z+12>>2];c[p>>2]=c[z>>2];c[p+4>>2]=c[z+4>>2];c[p+8>>2]=c[z+8>>2];c[p+12>>2]=c[z+12>>2];z=j+3|0;y=f+(z<<4)|0;c[q>>2]=c[y>>2];c[q+4>>2]=c[y+4>>2];c[q+8>>2]=c[y+8>>2];c[q+12>>2]=c[y+12>>2];YE((c[k>>2]|0)+16|0,A);j=z}c[B+4>>2]=m-r;l=D;return}function RK(b,d,e,f,g,h,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,m=0,n=0,o=0,p=0;p=l;l=l+16|0;m=p+4|0;n=p;o=b;while(1){j=c[(c[o+16>>2]|0)+116>>2]|0;if(!j)break;else o=j}if(!(a[i+8>>0]|0))j=(kb[c[i>>2]&63](o)|0)&255;else j=0;sE(o,m,n);k=i+4|0;if((kb[c[k>>2]&63](d)|0)<<24>>24)c[n>>2]=0;if((kb[c[k>>2]&63](c[((c[b>>2]&3|0)==3?b:b+48|0)+40>>2]|0)|0)<<24>>24)c[m>>2]=0;if(j|0){d=c[m>>2]|0;c[m>>2]=c[n>>2];c[n>>2]=d}if(!(a[i+9>>0]|0)){j=c[m>>2]|0;if(j|0)c[f>>2]=HE(o,e,c[f>>2]|0,c[g>>2]|0,h,j)|0;j=c[n>>2]|0;if(j|0)c[g>>2]=FE(o,e,c[f>>2]|0,c[g>>2]|0,h,j)|0}else{k=c[n>>2]|0;j=c[m>>2]|0;if(j|k|0)IE(o,e,c[f>>2]|0,c[g>>2]|0,h,j,k)}l=p;return}function SK(a,b){a=a|0;b=b|0;var d=0,e=0;if(+h[b>>3]<+h[b+16>>3]?+h[b+8>>3]<+h[b+24>>3]:0){d=c[a+84>>2]|0;e=a+80|0;a=c[e>>2]|0;c[e>>2]=a+1;a=d+(a<<5)|0;c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];c[a+16>>2]=c[b+16>>2];c[a+20>>2]=c[b+20>>2];c[a+24>>2]=c[b+24>>2];c[a+28>>2]=c[b+28>>2]}return}function TK(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0,j=0,k=0.0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0.0,z=0.0;x=l;l=l+112|0;u=x+72|0;o=x+56|0;n=x+16|0;q=x;j=c[d>>2]&3;p=d+48|0;w=c[((j|0)==3?d:p)+40>>2]|0;t=d+16|0;r=c[t>>2]|0;i=r+16|0;if(a[r+47>>0]|0){HK(n,w,c[((j|0)==2?d:d+-48|0)+40>>2]|0,i);j=n;n=i+40|0;do{c[i>>2]=c[j>>2];i=i+4|0;j=j+4|0}while((i|0)<(n|0))}r=w+16|0;j=c[r>>2]|0;i=c[j+8>>2]|0;if(!i)n=0;else n=c[(c[i+4>>2]|0)+16>>2]|0;i=j+16|0;j=(c[t>>2]|0)+16|0;c[o>>2]=c[i>>2];c[o+4>>2]=c[i+4>>2];c[o+8>>2]=c[i+8>>2];c[o+12>>2]=c[i+12>>2];c[u>>2]=c[j>>2];c[u+4>>2]=c[j+4>>2];c[u+8>>2]=c[j+8>>2];c[u+12>>2]=c[j+12>>2];UK(q,o,u);c[b>>2]=c[q>>2];c[b+4>>2]=c[q+4>>2];c[b+8>>2]=c[q+8>>2];c[b+12>>2]=c[q+12>>2];if(!(g<<24>>24)){i=c[t>>2]|0;if(!(a[i+45>>0]|0))i=0;else{k=+h[i+32>>3];v=9}}else{k=+VK(c[((c[d>>2]&3|0)==3?d:p)+40>>2]|0);v=9}if((v|0)==9){h[b+16>>3]=k;i=1}a[b+29>>0]=i;c[b+80>>2]=0;c[b+88>>2]=d;q=f+32|0;c[q>>2]=c[b>>2];c[q+4>>2]=c[b+4>>2];c[q+8>>2]=c[b+8>>2];c[q+12>>2]=c[b+12>>2];switch(e|0){case 1:{j=c[r>>2]|0;if((a[j+156>>0]|0)==0?(q=a[(c[t>>2]|0)+49>>0]|0,s=q&255,q<<24>>24!=0):0){c[u>>2]=c[f>>2];c[u+4>>2]=c[f+4>>2];c[u+8>>2]=c[f+8>>2];c[u+12>>2]=c[f+12>>2];c[u+16>>2]=c[f+16>>2];c[u+20>>2]=c[f+20>>2];c[u+24>>2]=c[f+24>>2];c[u+28>>2]=c[f+28>>2];do if(!(s&4)){if(s&1|0){c[f+48>>2]=1;i=u+24|0;h[i>>3]=+h[(+h[i>>3]>+h[b+8>>3]?u+16|0:b)+8>>3];i=f+56|0;c[i>>2]=c[u>>2];c[i+4>>2]=c[u+4>>2];c[i+8>>2]=c[u+8>>2];c[i+12>>2]=c[u+12>>2];c[i+16>>2]=c[u+16>>2];c[i+20>>2]=c[u+20>>2];c[i+24>>2]=c[u+24>>2];c[i+28>>2]=c[u+28>>2];i=1;break}i=f+48|0;if(!(s&8)){c[i>>2]=2;h[u>>3]=+h[b>>3];h[u+8>>3]=+h[j+24>>3]-+h[j+80>>3]*.5;h[u+24>>3]=+h[b+8>>3];i=f+56|0;c[i>>2]=c[u>>2];c[i+4>>2]=c[u+4>>2];c[i+8>>2]=c[u+8>>2];c[i+12>>2]=c[u+12>>2];c[i+16>>2]=c[u+16>>2];c[i+20>>2]=c[u+20>>2];c[i+24>>2]=c[u+24>>2];c[i+28>>2]=c[u+28>>2];i=1;break}else{c[i>>2]=8;h[u+16>>3]=+h[b>>3];h[u+8>>3]=+h[j+24>>3]-+h[j+80>>3]*.5;h[u+24>>3]=+h[b+8>>3];i=f+56|0;c[i>>2]=c[u>>2];c[i+4>>2]=c[u+4>>2];c[i+8>>2]=c[u+8>>2];c[i+12>>2]=c[u+12>>2];c[i+16>>2]=c[u+16>>2];c[i+20>>2]=c[u+20>>2];c[i+24>>2]=c[u+24>>2];c[i+28>>2]=c[u+28>>2];i=1;break}}else{c[f+48>>2]=4;k=+h[u>>3];if(+h[b>>3]<+h[j+16>>3]){z=k+-1.0;y=+h[b+8>>3];b=u+16|0;k=+h[b>>3];m=+h[j+80>>3]*.5+ +h[j+24>>3];m=m+ +((c[(c[(ez(w)|0)+16>>2]|0)+252>>2]|0)/2|0|0);i=c[r>>2]|0;h[b>>3]=+h[i+16>>3]-+h[i+88>>3];h[u+24>>3]=y;h[u+8>>3]=+h[i+24>>3]-+h[i+80>>3]*.5;h[u>>3]=z;h[f+56>>3]=z;h[f+64>>3]=y;h[f+72>>3]=k;h[f+80>>3]=m;i=f+88|0;c[i>>2]=c[u>>2];c[i+4>>2]=c[u+4>>2];c[i+8>>2]=c[u+8>>2];c[i+12>>2]=c[u+12>>2];c[i+16>>2]=c[u+16>>2];c[i+20>>2]=c[u+20>>2];c[i+24>>2]=c[u+24>>2];c[i+28>>2]=c[u+28>>2];i=2;break}else{m=+h[b+8>>3];i=u+16|0;y=+h[i>>3]+1.0;z=+h[j+80>>3]*.5+ +h[j+24>>3];z=z+ +((c[(c[(ez(w)|0)+16>>2]|0)+252>>2]|0)/2|0|0);b=c[r>>2]|0;h[u>>3]=+h[b+96>>3]+ +h[b+16>>3];h[u+24>>3]=m;h[u+8>>3]=+h[b+24>>3]-+h[b+80>>3]*.5;h[i>>3]=y;h[f+56>>3]=k;h[f+64>>3]=m;h[f+72>>3]=y;h[f+80>>3]=z;i=f+88|0;c[i>>2]=c[u>>2];c[i+4>>2]=c[u+4>>2];c[i+8>>2]=c[u+8>>2];c[i+12>>2]=c[u+12>>2];c[i+16>>2]=c[u+16>>2];c[i+20>>2]=c[u+20>>2];c[i+24>>2]=c[u+24>>2];c[i+28>>2]=c[u+28>>2];i=2;break}}while(0);c[f+52>>2]=i;while(1){i=c[d+16>>2]|0;if(!(a[i+112>>0]|0))break;d=c[i+116>>2]|0}a[((w|0)==(c[((c[d>>2]&3|0)==3?d:d+48|0)+40>>2]|0)?i+16|0:i+56|0)+30>>0]=0}else{j=1;v=47}break}case 2:{s=a[(c[t>>2]|0)+49>>0]|0;j=s&255;if(!(s<<24>>24))v=46;else{c[u>>2]=c[f>>2];c[u+4>>2]=c[f+4>>2];c[u+8>>2]=c[f+8>>2];c[u+12>>2]=c[f+12>>2];c[u+16>>2]=c[f+16>>2];c[u+20>>2]=c[f+20>>2];c[u+24>>2]=c[f+24>>2];c[u+28>>2]=c[f+28>>2];do if(!(j&4)){if(j&1|0)if((c[f+48>>2]|0)==4){i=c[r>>2]|0;z=+h[i+24>>3]-+h[i+80>>3]*.5;i=u+16|0;y=+h[i>>3]+1.0;k=+h[b>>3];m=z-+((c[(c[(ez(w)|0)+16>>2]|0)+252>>2]|0)/2|0|0);b=c[r>>2]|0;h[u>>3]=+h[b+96>>3]+ +h[b+16>>3];h[u+8>>3]=z;h[u+24>>3]=+h[b+80>>3]*.5+ +h[b+24>>3];h[i>>3]=y;h[f+56>>3]=k;h[f+64>>3]=m;h[f+72>>3]=y;h[f+80>>3]=z;i=f+88|0;c[i>>2]=c[u>>2];c[i+4>>2]=c[u+4>>2];c[i+8>>2]=c[u+8>>2];c[i+12>>2]=c[u+12>>2];c[i+16>>2]=c[u+16>>2];c[i+20>>2]=c[u+20>>2];c[i+24>>2]=c[u+24>>2];c[i+28>>2]=c[u+28>>2];i=2;break}else{i=u+24|0;h[i>>3]=+h[(+h[i>>3]>+h[b+8>>3]?u+16|0:b)+8>>3];i=f+56|0;c[i>>2]=c[u>>2];c[i+4>>2]=c[u+4>>2];c[i+8>>2]=c[u+8>>2];c[i+12>>2]=c[u+12>>2];c[i+16>>2]=c[u+16>>2];c[i+20>>2]=c[u+20>>2];c[i+24>>2]=c[u+24>>2];c[i+28>>2]=c[u+28>>2];i=1;break}k=+h[b>>3];if(!(j&8)){h[u>>3]=k;e=c[r>>2]|0;k=+h[e+24>>3];m=+h[e+80>>3]*.5;if((c[f+48>>2]|0)==4){h[u+24>>3]=m+k;k=+h[b+8>>3];i=u}else{h[u+8>>3]=k-m;k=+h[b+8>>3]+1.0;i=u+16|0}h[i+8>>3]=k;i=f+56|0;c[i>>2]=c[u>>2];c[i+4>>2]=c[u+4>>2];c[i+8>>2]=c[u+8>>2];c[i+12>>2]=c[u+12>>2];c[i+16>>2]=c[u+16>>2];c[i+20>>2]=c[u+20>>2];c[i+24>>2]=c[u+24>>2];c[i+28>>2]=c[u+28>>2];i=1;break}else{i=u+16|0;h[i>>3]=k+1.0;e=c[r>>2]|0;k=+h[e+24>>3];m=+h[e+80>>3]*.5;if((c[f+48>>2]|0)==4){h[u+24>>3]=m+k;k=+h[b+8>>3]+-1.0;i=u}else{h[u+8>>3]=k-m;k=+h[b+8>>3]+1.0}h[i+8>>3]=k;i=f+56|0;c[i>>2]=c[u>>2];c[i+4>>2]=c[u+4>>2];c[i+8>>2]=c[u+8>>2];c[i+12>>2]=c[u+12>>2];c[i+16>>2]=c[u+16>>2];c[i+20>>2]=c[u+20>>2];c[i+24>>2]=c[u+24>>2];c[i+28>>2]=c[u+28>>2];i=1;break}}else{i=u+8|0;h[i>>3]=+h[(+h[i>>3]<+h[b+8>>3]?u:b)+8>>3];i=f+56|0;c[i>>2]=c[u>>2];c[i+4>>2]=c[u+4>>2];c[i+8>>2]=c[u+8>>2];c[i+12>>2]=c[u+12>>2];c[i+16>>2]=c[u+16>>2];c[i+20>>2]=c[u+20>>2];c[i+24>>2]=c[u+24>>2];c[i+28>>2]=c[u+28>>2];i=1}while(0);c[f+52>>2]=i;while(1){i=c[d+16>>2]|0;if(!(a[i+112>>0]|0))break;d=c[i+116>>2]|0}a[((w|0)==(c[((c[d>>2]&3|0)==3?d:d+48|0)+40>>2]|0)?i+16|0:i+56|0)+30>>0]=0;c[f+48>>2]=j}break}default:v=46}if((v|0)==46){j=c[f+48>>2]|0;v=47}a:do if((v|0)==47){if(n){d=f+56|0;i=f+52|0;j=pb[n&127](w,(c[t>>2]|0)+16|0,j,d,i)|0;if(j){c[f+48>>2]=j;break}}else{i=f+52|0;d=f+56|0};c[d>>2]=c[f>>2];c[d+4>>2]=c[f+4>>2];c[d+8>>2]=c[f+8>>2];c[d+12>>2]=c[f+12>>2];c[d+16>>2]=c[f+16>>2];c[d+20>>2]=c[f+20>>2];c[d+24>>2]=c[f+24>>2];c[d+28>>2]=c[f+28>>2];c[i>>2]=1;switch(e|0){case 8:{qa(135312,103488,569,103498);break}case 2:{h[((c[f+48>>2]|0)==4?f+56|0:f+72|0)+8>>3]=+h[b+8>>3];break a}case 1:{h[f+80>>3]=+h[b+8>>3];c[f+48>>2]=1;break a}default:break a}}while(0);l=x;return}function UK(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0;d=+h[c+8>>3]+ +h[b+8>>3];h[a>>3]=+h[c>>3]+ +h[b>>3];h[a+8>>3]=d;return}function VK(a){a=a|0;var b=0.0,d=0,e=0,f=0.0,g=0,i=0,j=0,k=0.0,l=0.0;i=c[a+16>>2]|0;j=c[i+172>>2]|0;f=0.0;g=0;while(1){a=c[j+(g<<2)>>2]|0;if(!a)break;f=+h[(c[(c[((c[a>>2]&3|0)==3?a:a+48|0)+40>>2]|0)+16>>2]|0)+16>>3]+f;g=g+1|0}e=c[i+180>>2]|0;b=0.0;a=0;while(1){d=c[e+(a<<2)>>2]|0;if(!d)break;b=+h[(c[(c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0)+16>>2]|0)+16>>3]+b;a=a+1|0}k=+h[i+16>>3];l=+h[i+24>>3];j=c[j>>2]|0;f=+K(+(l-+h[(c[(c[((c[j>>2]&3|0)==3?j:j+48|0)+40>>2]|0)+16>>2]|0)+24>>3]),+(k-f/+(g|0)));j=c[e>>2]|0;return +((+K(+(+h[(c[(c[((c[j>>2]&3|0)==2?j:j+-48|0)+40>>2]|0)+16>>2]|0)+24>>3]-l),+(b/+(a|0)-k))+f)*.5)}function WK(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0,j=0,k=0.0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0.0,B=0.0;z=l;l=l+112|0;w=z+72|0;p=z+56|0;n=z+16|0;t=z;j=c[d>>2]&3;r=d+-48|0;y=c[((j|0)==2?d:r)+40>>2]|0;u=d+16|0;s=c[u>>2]|0;i=s+56|0;if(a[s+87>>0]|0){HK(n,y,c[((j|0)==3?d:d+48|0)+40>>2]|0,i);j=n;n=i+40|0;do{c[i>>2]=c[j>>2];i=i+4|0;j=j+4|0}while((i|0)<(n|0))}s=y+16|0;j=c[s>>2]|0;i=c[j+8>>2]|0;if(!i)o=0;else o=c[(c[i+4>>2]|0)+16>>2]|0;n=b+40|0;i=j+16|0;j=(c[u>>2]|0)+56|0;c[p>>2]=c[i>>2];c[p+4>>2]=c[i+4>>2];c[p+8>>2]=c[i+8>>2];c[p+12>>2]=c[i+12>>2];c[w>>2]=c[j>>2];c[w+4>>2]=c[j+4>>2];c[w+8>>2]=c[j+8>>2];c[w+12>>2]=c[j+12>>2];UK(t,p,w);c[n>>2]=c[t>>2];c[n+4>>2]=c[t+4>>2];c[n+8>>2]=c[t+8>>2];c[n+12>>2]=c[t+12>>2];if(!(g<<24>>24)){i=c[u>>2]|0;if(!(a[i+85>>0]|0))q=0;else{h[b+56>>3]=+h[i+72>>3];q=1}}else{m=+VK(c[((c[d>>2]&3|0)==2?d:r)+40>>2]|0)+3.141592653589793;h[b+56>>3]=m;if(m<6.283185307179586)q=1;else qa(103508,103488,606,103532)}a[b+69>>0]=q;t=f+32|0;c[t>>2]=c[n>>2];c[t+4>>2]=c[n+4>>2];c[t+8>>2]=c[n+8>>2];c[t+12>>2]=c[n+12>>2];switch(e|0){case 1:{j=c[s>>2]|0;if((a[j+156>>0]|0)==0?(t=a[(c[u>>2]|0)+89>>0]|0,v=t&255,t<<24>>24!=0):0){c[w>>2]=c[f>>2];c[w+4>>2]=c[f+4>>2];c[w+8>>2]=c[f+8>>2];c[w+12>>2]=c[f+12>>2];c[w+16>>2]=c[f+16>>2];c[w+20>>2]=c[f+20>>2];c[w+24>>2]=c[f+24>>2];c[w+28>>2]=c[f+28>>2];do if(!(v&4))if(!(v&1)){i=f+48|0;if(!(v&8)){c[i>>2]=2;h[w>>3]=+h[n>>3];h[w+24>>3]=+h[j+80>>3]*.5+ +h[j+24>>3];h[w+8>>3]=+h[b+48>>3];i=f+56|0;c[i>>2]=c[w>>2];c[i+4>>2]=c[w+4>>2];c[i+8>>2]=c[w+8>>2];c[i+12>>2]=c[w+12>>2];c[i+16>>2]=c[w+16>>2];c[i+20>>2]=c[w+20>>2];c[i+24>>2]=c[w+24>>2];c[i+28>>2]=c[w+28>>2];i=1;break}else{c[i>>2]=8;h[w+16>>3]=+h[n>>3];h[w+24>>3]=+h[j+80>>3]*.5+ +h[j+24>>3];h[w+8>>3]=+h[b+48>>3];i=f+56|0;c[i>>2]=c[w>>2];c[i+4>>2]=c[w+4>>2];c[i+8>>2]=c[w+8>>2];c[i+12>>2]=c[w+12>>2];c[i+16>>2]=c[w+16>>2];c[i+20>>2]=c[w+20>>2];c[i+24>>2]=c[w+24>>2];c[i+28>>2]=c[w+28>>2];i=1;break}}else{c[f+48>>2]=1;k=+h[w>>3];if(+h[n>>3]<+h[j+16>>3]){B=k+-1.0;m=+h[b+48>>3];b=w+16|0;k=+h[b>>3];A=+h[j+80>>3]*-.5+ +h[j+24>>3];A=A-+((c[(c[(ez(y)|0)+16>>2]|0)+252>>2]|0)/2|0|0);i=c[s>>2]|0;h[b>>3]=+h[i+16>>3]-+h[i+88>>3];h[w+8>>3]=m;h[w+24>>3]=+h[i+80>>3]*.5+ +h[i+24>>3];h[w>>3]=B;h[f+56>>3]=B;h[f+64>>3]=A;h[f+72>>3]=k;h[f+80>>3]=m;i=f+88|0;c[i>>2]=c[w>>2];c[i+4>>2]=c[w+4>>2];c[i+8>>2]=c[w+8>>2];c[i+12>>2]=c[w+12>>2];c[i+16>>2]=c[w+16>>2];c[i+20>>2]=c[w+20>>2];c[i+24>>2]=c[w+24>>2];c[i+28>>2]=c[w+28>>2];i=2;break}else{B=+h[b+48>>3];i=w+16|0;A=+h[i>>3]+1.0;m=+h[j+80>>3]*-.5+ +h[j+24>>3];m=m-+((c[(c[(ez(y)|0)+16>>2]|0)+252>>2]|0)/2|0|0);b=c[s>>2]|0;h[w>>3]=+h[b+96>>3]+ +h[b+16>>3];h[w+8>>3]=B;h[w+24>>3]=+h[b+80>>3]*.5+ +h[b+24>>3];h[i>>3]=A;h[f+56>>3]=k;h[f+64>>3]=m;h[f+72>>3]=A;h[f+80>>3]=B;i=f+88|0;c[i>>2]=c[w>>2];c[i+4>>2]=c[w+4>>2];c[i+8>>2]=c[w+8>>2];c[i+12>>2]=c[w+12>>2];c[i+16>>2]=c[w+16>>2];c[i+20>>2]=c[w+20>>2];c[i+24>>2]=c[w+24>>2];c[i+28>>2]=c[w+28>>2];i=2;break}}else{c[f+48>>2]=4;i=w+8|0;h[i>>3]=+h[(+h[i>>3]<+h[b+48>>3]?w:n)+8>>3];i=f+56|0;c[i>>2]=c[w>>2];c[i+4>>2]=c[w+4>>2];c[i+8>>2]=c[w+8>>2];c[i+12>>2]=c[w+12>>2];c[i+16>>2]=c[w+16>>2];c[i+20>>2]=c[w+20>>2];c[i+24>>2]=c[w+24>>2];c[i+28>>2]=c[w+28>>2];i=1}while(0);c[f+52>>2]=i;while(1){i=c[d+16>>2]|0;if(!(a[i+112>>0]|0))break;d=c[i+116>>2]|0}a[((y|0)==(c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0)?i+56|0:i+16|0)+30>>0]=0;c[f+48>>2]=v}else{j=4;x=47}break}case 2:{v=a[(c[u>>2]|0)+89>>0]|0;j=v&255;if(!(v<<24>>24))x=46;else{c[w>>2]=c[f>>2];c[w+4>>2]=c[f+4>>2];c[w+8>>2]=c[f+8>>2];c[w+12>>2]=c[f+12>>2];c[w+16>>2]=c[f+16>>2];c[w+20>>2]=c[f+20>>2];c[w+24>>2]=c[f+24>>2];c[w+28>>2]=c[f+28>>2];do if(!(j&4)){if(j&1|0)if((c[f+48>>2]|0)==4){k=+h[w>>3]+-1.0;i=c[s>>2]|0;B=+h[i+24>>3]-+h[i+80>>3]*.5;A=+h[n>>3];m=B-+((c[(c[(ez(y)|0)+16>>2]|0)+252>>2]|0)/2|0|0);i=c[s>>2]|0;h[w+16>>3]=+h[i+16>>3]+-2.0-+h[i+88>>3];h[w+8>>3]=B;h[w+24>>3]=+h[i+80>>3]*.5+ +h[i+24>>3];h[w>>3]=k;h[f+56>>3]=k;h[f+64>>3]=m;h[f+72>>3]=A;h[f+80>>3]=B;i=f+88|0;c[i>>2]=c[w>>2];c[i+4>>2]=c[w+4>>2];c[i+8>>2]=c[w+8>>2];c[i+12>>2]=c[w+12>>2];c[i+16>>2]=c[w+16>>2];c[i+20>>2]=c[w+20>>2];c[i+24>>2]=c[w+24>>2];c[i+28>>2]=c[w+28>>2];i=2;break}else{i=w+24|0;h[i>>3]=+h[(+h[i>>3]>+h[b+8>>3]?w+16|0:b)+8>>3];i=f+56|0;c[i>>2]=c[w>>2];c[i+4>>2]=c[w+4>>2];c[i+8>>2]=c[w+8>>2];c[i+12>>2]=c[w+12>>2];c[i+16>>2]=c[w+16>>2];c[i+20>>2]=c[w+20>>2];c[i+24>>2]=c[w+24>>2];c[i+28>>2]=c[w+28>>2];i=1;break}k=+h[n>>3];if(!(j&8)){h[w>>3]=k+-1.0;e=c[s>>2]|0;k=+h[e+24>>3];m=+h[e+80>>3]*.5;if((c[f+48>>2]|0)==4){h[w+24>>3]=m+k;k=+h[b+48>>3]+-1.0;i=w}else{h[w+8>>3]=k-m;k=+h[b+48>>3];i=w+16|0}h[i+8>>3]=k;i=f+56|0;c[i>>2]=c[w>>2];c[i+4>>2]=c[w+4>>2];c[i+8>>2]=c[w+8>>2];c[i+12>>2]=c[w+12>>2];c[i+16>>2]=c[w+16>>2];c[i+20>>2]=c[w+20>>2];c[i+24>>2]=c[w+24>>2];c[i+28>>2]=c[w+28>>2];i=1;break}else{i=w+16|0;h[i>>3]=k+1.0;e=c[s>>2]|0;k=+h[e+24>>3];m=+h[e+80>>3]*.5;if((c[f+48>>2]|0)==4){h[w+24>>3]=m+k;k=+h[b+48>>3]+-1.0;i=w}else{h[w+8>>3]=k-m;k=+h[b+48>>3]+1.0}h[i+8>>3]=k;i=f+56|0;c[i>>2]=c[w>>2];c[i+4>>2]=c[w+4>>2];c[i+8>>2]=c[w+8>>2];c[i+12>>2]=c[w+12>>2];c[i+16>>2]=c[w+16>>2];c[i+20>>2]=c[w+20>>2];c[i+24>>2]=c[w+24>>2];c[i+28>>2]=c[w+28>>2];i=1;break}}else{i=w+8|0;h[i>>3]=+h[(+h[i>>3]<+h[b+48>>3]?w:n)+8>>3];i=f+56|0;c[i>>2]=c[w>>2];c[i+4>>2]=c[w+4>>2];c[i+8>>2]=c[w+8>>2];c[i+12>>2]=c[w+12>>2];c[i+16>>2]=c[w+16>>2];c[i+20>>2]=c[w+20>>2];c[i+24>>2]=c[w+24>>2];c[i+28>>2]=c[w+28>>2];i=1}while(0);c[f+52>>2]=i;while(1){i=c[d+16>>2]|0;if(!(a[i+112>>0]|0))break;d=c[i+116>>2]|0}a[((y|0)==(c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0)?i+56|0:i+16|0)+30>>0]=0;c[f+48>>2]=j}break}default:x=46}if((x|0)==46){j=c[f+48>>2]|0;x=47}a:do if((x|0)==47){if(o){d=f+56|0;i=f+52|0;j=pb[o&127](y,(c[u>>2]|0)+56|0,j,d,i)|0;if(j){c[f+48>>2]=j;break}}else{i=f+52|0;d=f+56|0};c[d>>2]=c[f>>2];c[d+4>>2]=c[f+4>>2];c[d+8>>2]=c[f+8>>2];c[d+12>>2]=c[f+12>>2];c[d+16>>2]=c[f+16>>2];c[d+20>>2]=c[f+20>>2];c[d+24>>2]=c[f+24>>2];c[d+28>>2]=c[f+28>>2];c[i>>2]=1;switch(e|0){case 8:{qa(135312,103488,765,103532);break}case 2:{h[((c[f+48>>2]|0)==4?f+56|0:f+72|0)+8>>3]=+h[b+48>>3];break a}case 1:{h[f+64>>3]=+h[b+48>>3];c[f+48>>2]=4;break a}default:break a}}while(0);l=z;return}function XK(b){b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0;g=c[b+16>>2]|0;i=c[g+96>>2]|0;if((a[g+44>>0]|0)==0?(a[g+84>>0]|0)==0:0)j=6;else{d=a[g+49>>0]|0;e=d&255;if(((e&8|0)==0?(f=a[g+89>>0]|0,(f&8)==0):0)?((e&5|0)==0?1:d<<24>>24!=f<<24>>24):0)j=6;else b=0}if((j|0)==6)if(!i)b=18;else{b=(c[(c[(ez(c[((c[b>>2]&3|0)==2?b:b+-48|0)+40>>2]|0)|0)+16>>2]|0)+116>>2]&1|0)!=0;b=~~(+h[(b?i+32|0:i+24|0)>>3]+18.0)}return b|0}function YK(b,d,e,f,g,h,i){b=b|0;d=d|0;e=e|0;f=f|0;g=+g;h=+h;i=i|0;var j=0,k=0,l=0,m=0;b=c[(c[d+(e<<2)>>2]|0)+16>>2]|0;if((a[b+44>>0]|0)==0?(a[b+84>>0]|0)==0:0)l=6;else l=3;do if((l|0)==3){j=a[b+49>>0]|0;k=j&255;if(!(k&8)){m=a[b+89>>0]|0;if((m&8)==0?((k&5|0)==0?1:j<<24>>24!=m<<24>>24):0){l=6;break}if(!(a[b+89>>0]&8)){if(k&4|0){_K(d,e,f,g,h,i);break}if(!(k&1))qa(135312,103488,1231,103540);else{aL(d,e,f,g,h,i);break}}}if((j&2)==0?(a[b+89>>0]&2)==0:0){$K(d,e,f,g,h,i);break}_K(d,e,f,g,h,i)}while(0);if((l|0)==6)ZK(d,e,f,g,h,i);return}function ZK(b,e,f,g,i,j){b=b|0;e=e|0;f=f|0;g=+g;i=+i;j=j|0;var k=0,m=0.0,n=0.0,o=0.0,p=0.0,q=0,r=0,s=0,t=0,u=0,v=0.0,w=0,x=0,y=0,z=0.0,A=0,B=0,C=0.0,D=0,E=0.0,F=0.0,G=0.0,H=0.0,I=0.0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0.0,R=0.0,S=0;P=l;l=l+16080|0;L=P+80|0;M=P+64|0;N=P+48|0;O=P+32|0;J=P+16|0;K=P;B=c[b+(e<<2)>>2]|0;n=i*.5/+(f|0);n=n>2.0?n:2.0;D=(c[((c[B>>2]&3|0)==3?B:B+48|0)+40>>2]|0)+16|0;A=c[D>>2]|0;C=+h[A+16>>3];H=+h[A+24>>3];B=c[B+16>>2]|0;m=+h[B+16>>3];E=m+C;F=+h[B+24>>3]+H;i=+h[B+56>>3];G=i+C;H=+h[B+64>>3]+H;k=!(F>=H)?-1:1;p=+h[A+96>>3];switch(bL(d[B+49>>0]|0,d[B+89>>0]|0)|0){case 65:case 32:{if(F==H)k=0-k|0;break}default:{}}Q=(p-m)*3.0;m=(p-i)*3.0;v=n*+(k|0);u=L+8|0;w=L+16|0;x=L+32|0;y=L+48|0;z=(H+F)*.5;A=L+64|0;B=L+80|0;s=L+96|0;t=L+104|0;r=0;o=0.0;i=p;n=p=(f|0))break;q=e+1|0;e=c[b+(e<<2)>>2]|0;p=i+g;n=n+g;m=m+g;o=o+v;h[L>>3]=E;h[u>>3]=F;Q=o+F;cL(M,n*.3333333333333333+E,Q);c[w>>2]=c[M>>2];c[w+4>>2]=c[M+4>>2];c[w+8>>2]=c[M+8>>2];c[w+12>>2]=c[M+12>>2];R=p+C;cL(N,R,Q);c[x>>2]=c[N>>2];c[x+4>>2]=c[N+4>>2];c[x+8>>2]=c[N+8>>2];c[x+12>>2]=c[N+12>>2];cL(O,R,z);c[y>>2]=c[O>>2];c[y+4>>2]=c[O+4>>2];c[y+8>>2]=c[O+8>>2];c[y+12>>2]=c[O+12>>2];Q=H-o;cL(J,R,Q);c[A>>2]=c[J>>2];c[A+4>>2]=c[J+4>>2];c[A+8>>2]=c[J+8>>2];c[A+12>>2]=c[J+12>>2];cL(K,m*.3333333333333333+G,Q);c[B>>2]=c[K>>2];c[B+4>>2]=c[K+4>>2];c[B+8>>2]=c[K+8>>2];c[B+12>>2]=c[K+12>>2];h[s>>3]=G;h[t>>3]=H;k=e+16|0;if((c[(c[k>>2]|0)+96>>2]|0)!=0?(S=(c[(c[(ez(c[((c[e>>2]&3|0)==3?e:e+48|0)+40>>2]|0)|0)+16>>2]|0)+116>>2]&1|0)==0,k=c[(c[k>>2]|0)+96>>2]|0,I=+h[(S?k+24|0:k+32|0)>>3],S=c[D>>2]|0,h[k+56>>3]=I*.5+p+ +h[S+16>>3],h[k+64>>3]=+h[S+24>>3],a[k+81>>0]=1,I>g):0)i=I+i;else i=p;QK(e,c[((c[e>>2]&3|0)==2?e:e+-48|0)+40>>2]|0,L,7,j);e=q;r=r+1|0}l=P;return}function _K(b,e,f,g,i,j){b=b|0;e=e|0;f=f|0;g=+g;i=+i;j=j|0;var k=0.0,m=0,n=0.0,o=0.0,p=0.0,q=0.0,r=0,s=0.0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0.0,B=0,C=0,D=0.0,E=0,F=0.0,G=0.0,H=0.0,I=0.0,J=0.0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0.0,S=0;Q=l;l=l+16080|0;M=Q+80|0;N=Q+64|0;O=Q+48|0;P=Q+32|0;K=Q+16|0;L=Q;C=c[b+(e<<2)>>2]|0;q=g*.5/+(f|0);q=q>2.0?q:2.0;E=(c[((c[C>>2]&3|0)==3?C:C+48|0)+40>>2]|0)+16|0;m=c[E>>2]|0;H=+h[m+16>>3];D=+h[m+24>>3];C=c[C+16>>2]|0;k=+h[C+16>>3];p=+h[C+24>>3];F=k+H;G=p+D;g=+h[C+56>>3];o=+h[C+64>>3];H=g+H;I=o+D;n=!(F>=H)?-1.0:1.0;s=+h[m+80>>3]*.5;switch(bL(d[C+49>>0]|0,d[C+89>>0]|0)|0){case 15:{k=(q-g+ +h[m+96>>3])*n;break}case 38:{k=(g+q+ +h[m+88>>3])*n;break}case 41:{k=(q-k+ +h[m+96>>3])*n;break}case 48:{k=(q-k+ +h[m+96>>3])*n;break}case 58:case 57:case 51:case 47:case 37:case 14:{k=n*.3333333333333333*(k-g+ +h[m+88>>3]+ +h[m+96>>3]);break}case 73:{k=(k+q+ +h[m+88>>3])*n;break}case 83:{k=(+h[m+88>>3]+k)*n;break}case 84:{k=((k-g+ +h[m+88>>3]+ +h[m+96>>3])*.5+q)*n;break}case 85:case 75:case 74:{k=((k-g+ +h[m+88>>3]+ +h[m+96>>3])*.5+q*2.0)*n;break}default:k=0.0}p=(s-p)*3.0;o=(s-o)*3.0;q=n*q;w=M+8|0;x=M+16|0;y=M+32|0;z=M+48|0;A=(H+F)*.5;B=M+64|0;C=M+80|0;u=M+96|0;v=M+104|0;t=0;g=s;p=s=(f|0))break;r=e+1|0;e=c[b+(e<<2)>>2]|0;o=g+i;p=p+i;n=n+i;k=k+q;h[M>>3]=F;h[w>>3]=G;s=k+F;cL(N,s,p*.3333333333333333+G);c[x>>2]=c[N>>2];c[x+4>>2]=c[N+4>>2];c[x+8>>2]=c[N+8>>2];c[x+12>>2]=c[N+12>>2];R=o+D;cL(O,s,R);c[y>>2]=c[O>>2];c[y+4>>2]=c[O+4>>2];c[y+8>>2]=c[O+8>>2];c[y+12>>2]=c[O+12>>2];cL(P,A,R);c[z>>2]=c[P>>2];c[z+4>>2]=c[P+4>>2];c[z+8>>2]=c[P+8>>2];c[z+12>>2]=c[P+12>>2];s=H-k;cL(K,s,R);c[B>>2]=c[K>>2];c[B+4>>2]=c[K+4>>2];c[B+8>>2]=c[K+8>>2];c[B+12>>2]=c[K+12>>2];cL(L,s,n*.3333333333333333+I);c[C>>2]=c[L>>2];c[C+4>>2]=c[L+4>>2];c[C+8>>2]=c[L+8>>2];c[C+12>>2]=c[L+12>>2];h[u>>3]=H;h[v>>3]=I;m=e+16|0;if((c[(c[m>>2]|0)+96>>2]|0)!=0?(S=(c[(c[(ez(c[((c[e>>2]&3|0)==3?e:e+48|0)+40>>2]|0)|0)+16>>2]|0)+116>>2]&1|0)==0,m=c[(c[m>>2]|0)+96>>2]|0,J=+h[(S?m+32|0:m+24|0)>>3],S=c[E>>2]|0,h[m+64>>3]=J*.5+o+ +h[S+24>>3],h[m+56>>3]=+h[S+16>>3],a[m+81>>0]=1,J>i):0)g=J+g;else g=o;QK(e,c[((c[e>>2]&3|0)==2?e:e+-48|0)+40>>2]|0,M,7,j);e=r;t=t+1|0}l=Q;return}function $K(b,e,f,g,i,j){b=b|0;e=e|0;f=f|0;g=+g;i=+i;j=j|0;var k=0,m=0.0,n=0.0,o=0.0,p=0.0,q=0,r=0,s=0,t=0,u=0,v=0.0,w=0,x=0,y=0,z=0.0,A=0,B=0,C=0.0,D=0,E=0.0,F=0.0,G=0.0,H=0.0,I=0.0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0.0,R=0.0,S=0;P=l;l=l+16080|0;L=P+80|0;M=P+64|0;N=P+48|0;O=P+32|0;J=P+16|0;K=P;B=c[b+(e<<2)>>2]|0;n=i*.5/+(f|0);n=n>2.0?n:2.0;D=(c[((c[B>>2]&3|0)==3?B:B+48|0)+40>>2]|0)+16|0;A=c[D>>2]|0;C=+h[A+16>>3];H=+h[A+24>>3];B=c[B+16>>2]|0;m=+h[B+16>>3];E=m+C;F=+h[B+24>>3]+H;i=+h[B+56>>3];G=i+C;H=+h[B+64>>3]+H;k=!(F>=H)?-1:1;p=+h[A+88>>3];switch(bL(d[B+49>>0]|0,d[B+89>>0]|0)|0){case 67:case 12:{if(F==H)k=0-k|0;break}default:{}}Q=(m+p)*3.0;m=(i+p)*3.0;v=n*+(k|0);u=L+8|0;w=L+16|0;x=L+32|0;y=L+48|0;z=(H+F)*.5;A=L+64|0;B=L+80|0;s=L+96|0;t=L+104|0;r=0;o=0.0;i=p;n=p=(f|0))break;q=e+1|0;e=c[b+(e<<2)>>2]|0;p=i+g;n=n+g;m=m+g;o=o+v;h[L>>3]=E;h[u>>3]=F;Q=o+F;cL(M,E-n*.3333333333333333,Q);c[w>>2]=c[M>>2];c[w+4>>2]=c[M+4>>2];c[w+8>>2]=c[M+8>>2];c[w+12>>2]=c[M+12>>2];R=C-p;cL(N,R,Q);c[x>>2]=c[N>>2];c[x+4>>2]=c[N+4>>2];c[x+8>>2]=c[N+8>>2];c[x+12>>2]=c[N+12>>2];cL(O,R,z);c[y>>2]=c[O>>2];c[y+4>>2]=c[O+4>>2];c[y+8>>2]=c[O+8>>2];c[y+12>>2]=c[O+12>>2];Q=H-o;cL(J,R,Q);c[A>>2]=c[J>>2];c[A+4>>2]=c[J+4>>2];c[A+8>>2]=c[J+8>>2];c[A+12>>2]=c[J+12>>2];cL(K,G-m*.3333333333333333,Q);c[B>>2]=c[K>>2];c[B+4>>2]=c[K+4>>2];c[B+8>>2]=c[K+8>>2];c[B+12>>2]=c[K+12>>2];h[s>>3]=G;h[t>>3]=H;k=e+16|0;if((c[(c[k>>2]|0)+96>>2]|0)!=0?(S=(c[(c[(ez(c[((c[e>>2]&3|0)==3?e:e+48|0)+40>>2]|0)|0)+16>>2]|0)+116>>2]&1|0)==0,k=c[(c[k>>2]|0)+96>>2]|0,I=+h[(S?k+24|0:k+32|0)>>3],S=c[D>>2]|0,h[k+56>>3]=I*-.5-p+ +h[S+16>>3],h[k+64>>3]=+h[S+24>>3],a[k+81>>0]=1,I>g):0)i=I+i;else i=p;QK(e,c[((c[e>>2]&3|0)==2?e:e+-48|0)+40>>2]|0,L,7,j);e=q;r=r+1|0}l=P;return}function aL(b,e,f,g,i,j){b=b|0;e=e|0;f=f|0;g=+g;i=+i;j=j|0;var k=0.0,m=0.0,n=0.0,o=0.0,p=0,q=0,r=0,s=0,t=0,u=0,v=0.0,w=0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0,D=0,E=0,F=0.0,G=0,H=0,I=0.0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0.0,R=0.0,S=0;P=l;l=l+16080|0;L=P+80|0;M=P+64|0;N=P+48|0;O=P+32|0;J=P+16|0;K=P;C=c[b+(e<<2)>>2]|0;B=g*.5/+(f|0);w=(c[((c[C>>2]&3|0)==3?C:C+48|0)+40>>2]|0)+16|0;D=c[w>>2]|0;z=+h[D+16>>3];v=+h[D+24>>3];C=c[C+16>>2]|0;m=+h[C+24>>3];x=+h[C+16>>3]+z;y=m+v;n=+h[C+64>>3];z=+h[C+56>>3]+z;A=n+v;u=!(x>=z)?-1:1;o=+h[D+80>>3]*.5;C=(bL(d[C+49>>0]|0,d[C+89>>0]|0)|0)==67;m=(m+o)*3.0;n=(n+o)*3.0;B=(B>2.0?B:2.0)*+((C?0-u|0:u)|0);u=L+8|0;C=L+16|0;D=L+32|0;E=L+48|0;F=(z+x)*.5;G=L+64|0;H=L+80|0;s=L+96|0;t=L+104|0;g=o;k=0.0;m=o=(f|0))break;r=e+1|0;p=c[b+(e<<2)>>2]|0;o=g+i;m=m+i;n=n+i;k=k+B;h[L>>3]=x;h[u>>3]=y;Q=k+x;cL(M,Q,y-m*.3333333333333333);c[C>>2]=c[M>>2];c[C+4>>2]=c[M+4>>2];c[C+8>>2]=c[M+8>>2];c[C+12>>2]=c[M+12>>2];R=v-o;cL(N,Q,R);c[D>>2]=c[N>>2];c[D+4>>2]=c[N+4>>2];c[D+8>>2]=c[N+8>>2];c[D+12>>2]=c[N+12>>2];cL(O,F,R);c[E>>2]=c[O>>2];c[E+4>>2]=c[O+4>>2];c[E+8>>2]=c[O+8>>2];c[E+12>>2]=c[O+12>>2];Q=z-k;cL(J,Q,R);c[G>>2]=c[J>>2];c[G+4>>2]=c[J+4>>2];c[G+8>>2]=c[J+8>>2];c[G+12>>2]=c[J+12>>2];cL(K,Q,A-n*.3333333333333333);c[H>>2]=c[K>>2];c[H+4>>2]=c[K+4>>2];c[H+8>>2]=c[K+8>>2];c[H+12>>2]=c[K+12>>2];h[s>>3]=z;h[t>>3]=A;e=p+16|0;if((c[(c[e>>2]|0)+96>>2]|0)!=0?(S=(c[(c[(ez(c[((c[p>>2]&3|0)==3?p:p+48|0)+40>>2]|0)|0)+16>>2]|0)+116>>2]&1|0)==0,e=c[(c[e>>2]|0)+96>>2]|0,I=+h[(S?e+32|0:e+24|0)>>3],S=c[w>>2]|0,h[e+64>>3]=I*-.5-o+ +h[S+24>>3],h[e+56>>3]=+h[S+16>>3],a[e+81>>0]=1,I>i):0)g=I+g;else g=o;QK(p,c[((c[p>>2]&3|0)==2?p:p+-48|0)+40>>2]|0,L,7,j);e=r;q=q+1|0}l=P;return}function bL(a,b){a=a|0;b=b|0;var d=0;d=0;while(1){if((d|0)>=8){b=-1;break}if((c[21940+(d<<2)>>2]|0)==(b|0)){b=d;break}d=d+1|0}d=0;while(1){if((d|0)>=8){d=-1;break}if((c[21940+(d<<2)>>2]|0)==(a|0))break;d=d+1|0}if((d|b|0)<0)d=0;else d=c[21972+(d<<5)+(b<<2)>>2]|0;return d|0}function cL(a,b,c){a=a|0;b=+b;c=+c;h[a>>3]=b;h[a+8>>3]=c;return}function dL(b){b=b|0;var d=0,e=0;if((c[46433]|0)!=0|(c[46432]|0)!=0){d=b+16|0;e=c[(c[d>>2]|0)+100>>2]|0;if((e|0?(a[e+81>>0]|0)==0:0)?eL(b,1)|0:0){e=ez(c[((c[b>>2]&3|0)==3?b:b+48|0)+40>>2]|0)|0;kM(e,c[(c[d>>2]|0)+100>>2]|0)}e=c[(c[d>>2]|0)+104>>2]|0;if((e|0?(a[e+81>>0]|0)==0:0)?eL(b,0)|0:0){e=ez(c[((c[b>>2]&3|0)==3?b:b+48|0)+40>>2]|0)|0;kM(e,c[(c[d>>2]|0)+104>>2]|0)}}return}function eL(b,d){b=b|0;d=d|0;var e=0,f=0.0,g=0.0,i=0,j=0.0,k=0,m=0,n=0,o=0,p=0,q=0,r=0.0;q=l;l=l+96|0;o=q+32|0;m=q+16|0;n=q;i=b+16|0;do if((a[(c[i>>2]|0)+112>>0]|0)!=6){e=c[46433]|0;if(!((e|0)!=0?(a[(yx(b,e)|0)>>0]|0)!=0:0)){e=c[46432]|0;if(!e){e=0;break}if(!(a[(yx(b,e)|0)>>0]|0)){e=0;break}}d=d<<24>>24==0;p=c[i>>2]|0;p=c[(d?p+104|0:p+100|0)>>2]|0;e=fL(b)|0;if(e){k=c[e>>2]|0;do if(d){if(c[k+8>>2]|0){e=c[k>>2]|0;j=+h[e>>3];g=+h[k+16>>3];e=e+8|0;f=+h[k+24>>3];break}e=c[k>>2]|0;g=+h[e>>3];f=+h[e+8>>3];e=0;while(1){if((e|0)==4)break;n=o+(e<<4)|0;i=(c[k>>2]|0)+(e<<4)|0;c[n>>2]=c[i>>2];c[n+4>>2]=c[i+4>>2];c[n+8>>2]=c[i+8>>2];c[n+12>>2]=c[i+12>>2];e=e+1|0}XL(m,o,3,.1,0,0);j=+h[m>>3];e=m+8|0}else{d=(c[e+4>>2]|0)+-1|0;i=k+(d*48|0)|0;if(c[k+(d*48|0)+12>>2]|0){o=c[i>>2]|0;e=(c[k+(d*48|0)+4>>2]|0)+-1|0;j=+h[o+(e<<4)>>3];g=+h[k+(d*48|0)+32>>3];e=o+(e<<4)+8|0;f=+h[k+(d*48|0)+40>>3];break}m=c[i>>2]|0;d=k+(d*48|0)+4|0;e=(c[d>>2]|0)+-1|0;g=+h[m+(e<<4)>>3];f=+h[m+(e<<4)+8>>3];e=0;while(1){if((e|0)==4)break;m=o+(e<<4)|0;k=(c[i>>2]|0)+(e+-4+(c[d>>2]|0)<<4)|0;c[m>>2]=c[k>>2];c[m+4>>2]=c[k+4>>2];c[m+8>>2]=c[k+8>>2];c[m+12>>2]=c[k+12>>2];e=e+1|0}XL(n,o,3,.9,0,0);j=+h[n>>3];e=n+8|0}while(0);r=+K(+(+h[e>>3]-f),+(j-g));r=+LL(b,c[46433]|0,-25.0,-180.0)*.017453292519943295+r;j=+LL(b,c[46432]|0,1.0,0.0)*10.0;h[p+56>>3]=j*+E(+r)+g;h[p+64>>3]=+F(+r)*j+f;a[p+81>>0]=1;e=1}else e=0}else e=0;while(0);l=q;return e|0}function fL(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;h=l;l=l+16|0;f=h;d=b;while(1){e=c[d+16>>2]|0;d=c[e+8>>2]|0;if(d|0)break;if(!(a[e+112>>0]|0)){g=5;break}d=c[e+116>>2]|0}if((g|0)==5){g=ry(c[((c[b>>2]&3|0)==3?b:b+48|0)+40>>2]|0)|0;d=ry(c[((c[b>>2]&3|0)==2?b:b+-48|0)+40>>2]|0)|0;c[f>>2]=g;c[f+4>>2]=d;Pw(1,103553,f)|0;d=0}l=h;return d|0}function gL(a,d,e){a=a|0;d=d|0;e=e|0;var f=0.0,g=0.0,i=0.0,j=0.0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0.0,u=0.0;s=l;l=l+96|0;m=s+80|0;n=s+64|0;o=s+48|0;p=s+32|0;q=s+16|0;r=s;k=b[(c[d+16>>2]|0)+136>>1]|0;d=e+16|0;hL(c[(c[d>>2]|0)+8>>2]|0,p,q);f=+h[p>>3];g=+h[q>>3];t=f-g;i=+h[p+8>>3];j=+h[q+8>>3];u=i-j;a:do if(u*u+t*t<1.0e-06){c[o>>2]=c[p>>2];c[o+4>>2]=c[p+4>>2];c[o+8>>2]=c[p+8>>2];c[o+12>>2]=c[p+12>>2]}else switch(k&14){case 4:case 10:{h[n>>3]=(g+f)*.5;h[n+8>>3]=(j+i)*.5;q=c[(c[d>>2]|0)+8>>2]|0;c[m>>2]=c[n>>2];c[m+4>>2]=c[n+4>>2];c[m+8>>2]=c[n+8>>2];c[m+12>>2]=c[n+12>>2];bM(r,q,m);c[o>>2]=c[r>>2];c[o+4>>2]=c[r+4>>2];c[o+8>>2]=c[r+8>>2];c[o+12>>2]=c[r+12>>2];break a}default:{iL(o,c[(c[d>>2]|0)+8>>2]|0,p,q);break a}}while(0);c[a>>2]=c[o>>2];c[a+4>>2]=c[o+4>>2];c[a+8>>2]=c[o+8>>2];c[a+12>>2]=c[o+12>>2];l=s;return}function hL(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;h=l;l=l+32|0;g=h+16|0;f=h;j=c[a>>2]|0;e=c[j>>2]|0;i=c[j+8>>2]|0;k=j+16|0;c[g>>2]=c[k>>2];c[g+4>>2]=c[k+4>>2];c[g+8>>2]=c[k+8>>2];c[g+12>>2]=c[k+12>>2];j=j+32|0;c[f>>2]=c[j>>2];c[f+4>>2]=c[j+4>>2];c[f+8>>2]=c[j+8>>2];c[f+12>>2]=c[j+12>>2];if(!i){c[b>>2]=c[e>>2];c[b+4>>2]=c[e+4>>2];c[b+8>>2]=c[e+8>>2];c[b+12>>2]=c[e+12>>2]}else{c[b>>2]=c[g>>2];c[b+4>>2]=c[g+4>>2];c[b+8>>2]=c[g+8>>2];c[b+12>>2]=c[g+12>>2]}i=c[a>>2]|0;j=(c[a+4>>2]|0)+-1|0;e=c[i+(j*48|0)>>2]|0;a=c[i+(j*48|0)+4>>2]|0;k=c[i+(j*48|0)+12>>2]|0;b=i+(j*48|0)+16|0;c[g>>2]=c[b>>2];c[g+4>>2]=c[b+4>>2];c[g+8>>2]=c[b+8>>2];c[g+12>>2]=c[b+12>>2];j=i+(j*48|0)+32|0;c[f>>2]=c[j>>2];c[f+4>>2]=c[j+4>>2];c[f+8>>2]=c[j+8>>2];c[f+12>>2]=c[j+12>>2];if(!k){k=e+(a+-1<<4)|0;c[d>>2]=c[k>>2];c[d+4>>2]=c[k+4>>2];c[d+8>>2]=c[k+8>>2];c[d+12>>2]=c[k+12>>2]}else{c[d>>2]=c[f>>2];c[d+4>>2]=c[f+4>>2];c[d+8>>2]=c[f+8>>2];c[d+12>>2]=c[f+12>>2]}l=h;return}function iL(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0.0,i=0,j=0,k=0,l=0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0,s=0.0;r=c[b+4>>2]|0;g=0.0;f=0;while(1){if((f|0)>=(r|0))break;l=c[b>>2]|0;k=c[l+(f*48|0)>>2]|0;l=c[l+(f*48|0)+4>>2]|0;i=3;j=0;while(1){if((i|0)>=(l|0))break;q=+h[k+(j<<4)>>3]-+h[k+(i<<4)>>3];p=+h[k+(j<<4)+8>>3]-+h[k+(i<<4)+8>>3];i=i+3|0;j=j+3|0;g=+C(+(p*p+q*q))+g}f=f+1|0}l=0;g=g*.5;a:while(1){if((l|0)>=(r|0)){f=15;break}k=c[b>>2]|0;j=c[k+(l*48|0)>>2]|0;k=c[k+(l*48|0)+4>>2]|0;f=3;i=0;while(1){if((f|0)>=(k|0))break;m=+h[j+(i<<4)>>3];p=+h[j+(i<<4)+8>>3];n=+h[j+(f<<4)>>3];o=+h[j+(f<<4)+8>>3];q=m-n;s=p-o;q=+C(+(s*s+q*q));if(q>=g){f=12;break a}f=f+3|0;i=i+3|0;g=g-q}l=l+1|0}if((f|0)==12){h[d>>3]=m;h[d+8>>3]=p;h[e>>3]=n;h[e+8>>3]=o;s=q-g;h[a>>3]=(s*m+n*g)/q;h[a+8>>3]=(s*p+o*g)/q;return}else if((f|0)==15)qa(135630,103488,1316,103615)}function jL(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;dL(b);return}function kL(b,d,e,f,g){b=b|0;d=d|0;e=+e;f=f|0;g=g|0;var i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0,o=0,p=0.0,q=0.0,r=0.0,s=0,t=0.0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0.0,C=0.0,D=0,G=0,H=0,I=0,J=0,K=0,L=0;J=lL(b)|0;I=c[J+4>>2]|0;K=c[J>>2]|0;H=I+-1|0;B=+h[K+(H<<6)+16>>3];C=+(I|0);D=(g|0)==2;G=(f|0)!=0;n=0;j=0.0;i=0.0;l=0.0;m=0.0;while(1){if((n|0)>=(I|0))break;b=~~+mL(+(n+-1|0),C);A=n+1|0;L=~~+mL(+(A|0),C);o=K+(n<<6)|0;m=+h[o>>3];z=K+(n<<6)+8|0;l=+h[z>>3];s=K+(n<<6)+16|0;t=+h[s>>3];u=K+(n<<6)+24|0;v=K+(n<<6)+32|0;w=K+(n<<6)+40|0;x=K+(n<<6)+48|0;y=K+(n<<6)+56|0;k=+nL(+h[K+(L<<6)+8>>3]-l,+h[K+(L<<6)>>3]-m);q=+nL(+h[K+(b<<6)+8>>3]-l,+h[K+(b<<6)>>3]-m);r=+hb[d&7](t,B,e);b=(n|0)==0;do if(b|(n|0)==(H|0))if(b){i=k+1.5707963267948966;if(!D){b=0;p=i;j=r;break}b=0;p=i;j=r;l=l-+F(+k)*r;m=m-+E(+k)*r;break}else{i=q+-1.5707963267948966;if(!D){b=0;p=i;j=r;break}b=0;p=i;j=r;l=l-+F(+q)*r;m=m-+E(+q)*r;break}else{p=k-q;p=1.5707963267948966-(p<0.0?p+6.283185307179586:p)*.5;j=+E(+p);j=j==0.0?0.0:r/j;i=k+1.5707963267948966;k=p+i;if(G|j>r*10.0){q=+mL(q+-1.5707963267948966,6.283185307179586);b=1;p=+mL(i,6.283185307179586);j=r;i=q}else{b=0;p=k;i=k}}while(0);h[o>>3]=m;h[z>>3]=l;h[s>>3]=t;a[u>>0]=108;h[v>>3]=i;h[w>>3]=j;c[x>>2]=b;h[y>>3]=p;n=A}o=uH(12)|0;b=0;while(1){if((b|0)>=(I|0))break;m=+h[K+(b<<6)>>3];l=+h[K+(b<<6)+8>>3];i=+h[K+(b<<6)+32>>3];j=+h[K+(b<<6)+40>>3];L=c[K+(b<<6)+48>>2]|0;k=+h[K+(b<<6)+56>>3];oL(o,+E(+i)*j+m,+F(+i)*j+l);if(L|0)pL(m,l,j,1,i,k,f,o);b=b+1|0}n=(g|0)==1;k=i+3.141592653589793;if(n)qL(o,m,l,j,i,k);else{oL(o,+E(+k)*j+m,+F(+k)*j+l);i=k}b=I+-2|0;k=m;while(1){if((b|0)<=-1)break;m=+h[K+(b<<6)>>3];l=+h[K+(b<<6)+8>>3];j=+h[K+(b<<6)+40>>3];L=c[K+(b<<6)+48>>2]|0;i=+h[K+(b<<6)+32>>3]+3.141592653589793;k=+h[K+(b<<6)+56>>3]+3.141592653589793;oL(o,+E(+k)*j+m,+F(+k)*j+l);if(L|0)pL(m,l,j,0,i,k,f,o);b=b+-1|0;k=m}if(n)qL(o,k,l,j,i,i+3.141592653589793);rL(J);return o|0}function lL(a){a=a|0;var b=0.0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0.0;q=l;l=l+144|0;i=q+128|0;h=q+112|0;j=q+96|0;k=q+64|0;m=q;n=q+80|0;o=sL()|0;p=c[a+4>>2]|0;f=c[a>>2]|0;c[i>>2]=c[f>>2];c[i+4>>2]=c[f+4>>2];c[i+8>>2]=c[f+8>>2];c[i+12>>2]=c[f+12>>2];tL(o,i,0.0);g=m+48|0;c[g>>2]=c[f>>2];c[g+4>>2]=c[f+4>>2];c[g+8>>2]=c[f+8>>2];c[g+12>>2]=c[f+12>>2];d=0;b=0.0;a:while(1){e=d+3|0;if((e|0)>=(p|0))break;c[m>>2]=c[g>>2];c[m+4>>2]=c[g+4>>2];c[m+8>>2]=c[g+8>>2];c[m+12>>2]=c[g+12>>2];a=1;while(1){if((a|0)==4)break;r=m+(a<<4)|0;s=f+(a+d<<4)|0;c[r>>2]=c[s>>2];c[r+4>>2]=c[s+4>>2];c[r+8>>2]=c[s+8>>2];c[r+12>>2]=c[s+12>>2];a=a+1|0}c[j>>2]=c[m>>2];c[j+4>>2]=c[m+4>>2];c[j+8>>2]=c[m+8>>2];c[j+12>>2]=c[m+12>>2];a=1;while(1){if((a|0)==21){d=e;continue a}XL(n,m,3,+(a|0)*.05,0,0);c[k>>2]=c[n>>2];c[k+4>>2]=c[n+4>>2];c[k+8>>2]=c[n+8>>2];c[k+12>>2]=c[n+12>>2];c[h>>2]=c[j>>2];c[h+4>>2]=c[j+4>>2];c[h+8>>2]=c[j+8>>2];c[h+12>>2]=c[j+12>>2];c[i>>2]=c[n>>2];c[i+4>>2]=c[n+4>>2];c[i+8>>2]=c[n+8>>2];c[i+12>>2]=c[n+12>>2];t=+uL(h,i)+b;c[i>>2]=c[k>>2];c[i+4>>2]=c[k+4>>2];c[i+8>>2]=c[k+8>>2];c[i+12>>2]=c[k+12>>2];tL(o,i,t);c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];c[j+8>>2]=c[k+8>>2];c[j+12>>2]=c[k+12>>2];a=a+1|0;b=t}}vL(o);l=q;return o|0}function mL(a,b){a=+a;b=+b;var c=0.0;c=a-+A(+(a/b))*b;return +(!(a<0.0)&!(a>=b)?a:c)}function nL(a,b){a=+a;b=+b;if(!(a==0.0&b==0.0)){a=+K(+a,+b);if(!(a>=0.0))a=a+6.283185307179586}else a=0.0;return +a}function oL(a,b,d){a=a|0;b=+b;d=+d;var e=0,f=0;e=c[a>>2]|0;f=a+4|0;if((e|0)<(c[f>>2]|0))f=c[a+8>>2]|0;else{c[f>>2]=2e3;e=a+8|0;f=xH(c[e>>2]|0,32e3)|0;c[e>>2]=f;e=c[a>>2]|0}c[a>>2]=e+1;h[f+(e<<4)>>3]=b;h[f+(e<<4)+8>>3]=d;return}function pL(a,b,c,d,e,f,g,h){a=+a;b=+b;c=+c;d=d|0;e=+e;f=+f;g=g|0;h=h|0;var i=0.0;d=(d|0)==0;i=d?e:f;do if((g|0)==1){e=(d?f:e)-i;e=!(e<=1.7453292519943296e-03)?e:e+6.283185307179586;if(e<3.141592653589793){qL(h,a,b,c,e+i,i);break}else{oL(h,+E(+i)*c+a,+F(+i)*c+a);break}}else oL(h,+E(+i)*c+a,+F(+i)*c+a);while(0);return}function qL(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;var g=0,h=0.0;oL(a,+E(+e)*d+b,+F(+e)*d+c);a:do if(!(d==0.0)){while(1){if(!(f>e))break;f=f+-6.283185307179586}f=e-f;while(1){if(!(f>6.283185307179586))break;f=f+-6.283185307179586}f=f*.05263157894736842;g=1;while(1){if((g|0)==20)break a;h=e-f*+(g|0);oL(a,+E(+h)*d+b,+F(+h)*d+c);g=g+1|0}}while(0);return}function rL(a){a=a|0;D_(c[a>>2]|0);D_(a);return}function sL(){var a=0;a=uH(12)|0;c[a+4>>2]=0;c[a+8>>2]=2e3;c[a>>2]=uH(128e3)|0;return a|0}function tL(a,b,d){a=a|0;b=b|0;d=+d;var e=0,f=0,g=0,i=0;i=a+4|0;e=c[i>>2]|0;f=a+8|0;g=c[f>>2]|0;if((e|0)<(g|0))a=c[a>>2]|0;else{c[f>>2]=g<<1;e=xH(c[a>>2]|0,g<<7)|0;c[a>>2]=e;a=e;e=c[i>>2]|0}h[a+(e<<6)>>3]=+h[b>>3];h[a+(e<<6)+8>>3]=+h[b+8>>3];c[i>>2]=e+1;h[a+(e<<6)+16>>3]=d;return}function uL(a,b){a=a|0;b=b|0;var c=0.0,d=0.0;c=+h[a>>3]-+h[b>>3];d=+h[a+8>>3]-+h[b+8>>3];return +(+C(+(d*d+c*c)))}function vL(a){a=a|0;var b=0;b=c[a+4>>2]|0;if((c[a+8>>2]|0)>(b|0))c[a>>2]=xH(c[a>>2]|0,b<<6)|0;return}function wL(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=l;l=l+16|0;j=k+8|0;i=k;g=k+12|0;c[g>>2]=0;h=c[d+4>>2]|0;if(!h)qa(103632,103643,203,103654);e=c[h>>2]|0;if(!e)qa(103668,103643,206,103654);f=h+8|0;if(!(c[f>>2]|0))c[f>>2]=xL(e)|0;if(!0)e=0;else{e=(AG(c[h>>2]|0)|0)==0;e=e?0:g}if(!((OP(b,d,e)|0)<<24>>24))yL(d,e);do if(e|0){f=c[g>>2]|0;b=c[15686]|0;e=c[h>>2]|0;if(!f){c[j>>2]=e;g1(b,103711,j)|0;break}else{c[i>>2]=e;c[i+4>>2]=f;g1(b,103679,i)|0;break}}while(0);j=d+32|0;c[a>>2]=c[j>>2];c[a+4>>2]=c[j+4>>2];c[a+8>>2]=c[j+8>>2];c[a+12>>2]=c[j+12>>2];l=k;return}function xL(a){a=a|0;var b=0;b=c[46531]|0;if((b|0)!=0?(O$(b,a)|0)==0:0)a=c[46540]|0;else{D_(b);c[46531]=n1(a)|0;a=e2(186124,22228,35,36,93)|0;c[46540]=a}return a|0}function yL(b,d){b=b|0;d=d|0;var e=0,f=0.0,g=0,i=0.0,j=0,k=0.0;j=c[b+4>>2]|0;e=c[j>>2]|0;i=+h[j+16>>3];j=b+32|0;h[j>>3]=0.0;h[b+40>>3]=i*1.2;h[b+16>>3]=0.0;h[b+24>>3]=i*.1;c[b+8>>2]=0;c[b+12>>2]=0;if(V$(e,103745,4)|0)if((V$(e,103750,5)|0)!=0?(V$(e,103756,9)|0)!=0:0){g=4248;e=103766}else{g=8344;e=103802}else{g=6296;e=103783}if(d|0)c[d>>2]=e;e=c[b>>2]|0;if(e|0){f=0.0;while(1){b=a[e>>0]|0;if(!(b<<24>>24))break;k=f+ +h[g+((b&255)<<3)>>3];h[j>>3]=k;e=e+1|0;f=k}h[j>>3]=f*i}return}function zL(a,b){a=a|0;b=b|0;return O$(c[a>>2]|0,c[b>>2]|0)|0}function AL(a){a=a|0;var b=0;b=a+108|0;c[b>>2]=0;c[a+112>>2]=32;c[a+116>>2]=-1;c[a+120>>2]=30;c[a+124>>2]=63;c[a+128>>2]=55;c[a+132>>2]=0;c[a+136>>2]=0;c[a+140>>2]=0;b=Cw(b,c[4555]|0)|0;c[a+144>>2]=b;return b|0}function BL(a,b,d){a=a|0;b=b|0;d=d|0;d=E_(1,32)|0;a=c[b>>2]|0;if(a|0)c[d>>2]=n1(a)|0;a=c[b+4>>2]|0;if(a|0)c[d+4>>2]=n1(a)|0;c[d+24>>2]=c[b+24>>2]&127;h[d+16>>3]=+h[b+16>>3];c[d+8>>2]=c[b+8>>2];return d|0}function CL(a,b,d){a=a|0;b=b|0;d=d|0;D_(c[b>>2]|0);D_(c[b+4>>2]|0);D_(b);return}function DL(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,g=0.0,i=0,j=0;a=c[b>>2]|0;e=c[d>>2]|0;i=(e|0)==0;if(!a)if(i)j=5;else a=-1;else if(!i){a=b$(a,e)|0;if(!a)j=5}else a=1;do if((j|0)==5){a=c[b+4>>2]|0;e=c[d+4>>2]|0;i=(e|0)==0;if(!a){if(!i){a=-1;break}}else{if(i){a=1;break}a=b$(a,e)|0;if(a|0)break}a=(c[b+24>>2]&127)-(c[d+24>>2]&127)|0;if(!a){g=+h[b+16>>3];f=+h[d+16>>3];if(gf&1}}while(0);return a|0}function EL(){eb(186164)|0;return}function FL(){var a=0,b=0;b=l;l=l+16|0;a=b;eb(a|0)|0;l=b;return +(+((c[a+4>>2]|0)+(c[a>>2]|0)-(c[46541]|0)-(c[46542]|0)|0)*.016666666666666666)}function GL(a){a=a|0;var b=0,d=0;b=uH(16)|0;a=(a|0)>2?a:2;d=uH(a<<2)|0;c[b>>2]=d;c[b+12>>2]=d;c[b+8>>2]=d;c[b+4>>2]=d+(a<<2);return b|0}function HL(a){a=a|0;D_(c[a>>2]|0);D_(a);return}function IL(a,b){a=a|0;b=b|0;var d=0,e=0;d=a+12|0;e=c[d>>2]|0;c[d>>2]=e+4;c[e>>2]=b;if((c[d>>2]|0)>>>0>=(c[a+4>>2]|0)>>>0)c[d>>2]=c[a>>2];return}function JL(a){a=a|0;var b=0,d=0,e=0;d=a+8|0;b=c[d>>2]|0;if((b|0)!=(c[a+12>>2]|0)){e=b+4|0;c[d>>2]=e;b=c[b>>2]|0;if(e>>>0>=(c[a+4>>2]|0)>>>0)c[d>>2]=c[a>>2]}else b=0;return b|0}function KL(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;i=l;l=l+16|0;g=i;if(((d|0)!=0?(h=yx(b,d)|0,(h|0)!=0):0)?(a[h>>0]|0)!=0:0){d=i1(h,g,10)|0;e=(h|0)==(c[g>>2]|0)?e:(d|0)<(f|0)?f:d}l=i;return e|0}function LL(b,d,e,f){b=b|0;d=d|0;e=+e;f=+f;var g=0,h=0,i=0,j=0.0;i=l;l=l+16|0;g=i;if(((b|0)!=0&(d|0)!=0?(h=yx(b,d)|0,(h|0)!=0):0)?(a[h>>0]|0)!=0:0){j=+c2(h,g);e=(h|0)==(c[g>>2]|0)?e:j0.0)){b=+LL(a,nx(a,0,104612,0)|0,-1.0,0.0);b=b==0.0?72.0:b}return +b}function NL(a,b,c){a=a|0;b=b|0;c=c|0;if((a|0)!=0&(b|0)!=0)c=yx(a,b)|0;return c|0}function OL(b,c,d){b=b|0;c=c|0;d=d|0;b=NL(b,c,d)|0;if((b|0)!=0?(a[b>>0]|0)!=0:0)d=b;return d|0}function PL(a,b,c){a=a|0;b=b|0;c=c|0;if(!b)a=c&255;else a=QL(yx(a,b)|0)|0;return a|0}function QL(a){a=a|0;return RL(a,0)|0}function RL(b,c){b=b|0;c=c|0;var d=0;if((b|0)!=0?(d=a[b>>0]|0,d<<24>>24!=0):0)if((O$(b,134226)|0)!=0?(O$(b,104623)|0)!=0:0)if((O$(b,104626)|0)!=0?(O$(b,104631)|0)!=0:0){if(((d<<24>>24)+-48|0)>>>0<10)c=(a2(b)|0)&255}else c=1;else c=0;return c|0}function SL(a){a=a|0;var b=0,d=0;while(1){b=(c[a+16>>2]|0)+220|0;d=c[b>>2]|0;if(!((d|0)!=(a|0)&(d|0)!=0))break;a=c[(c[d+16>>2]|0)+220>>2]|0;if(!a){a=d;continue}c[b>>2]=a}return a|0}function TL(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;if((a|0)!=(b|0)){d=c[a+16>>2]|0;e=d+220|0;if(!(c[e>>2]|0)){c[e>>2]=a;c[d+216>>2]=1}else a=SL(a)|0;d=c[b+16>>2]|0;e=d+220|0;if(!(c[e>>2]|0)){c[e>>2]=b;c[d+216>>2]=1}else{d=SL(b)|0;b=d;d=c[d+16>>2]|0}g=a+16|0;e=c[g>>2]|0;f=b+16|0;h=(c[e+120>>2]|0)>(c[d+120>>2]|0);a=h?b:a;c[(h?e:d)+220>>2]=a;e=(c[(h?f:g)>>2]|0)+216|0;c[e>>2]=(c[e>>2]|0)+(c[(c[(h?g:f)>>2]|0)+216>>2]|0)}return a|0}function UL(b){b=b|0;b=c[b+16>>2]|0;c[b+216>>2]=1;c[b+220>>2]=0;a[b+159>>0]=0;return}function VL(a,b){a=a|0;b=b|0;if((SL(a)|0)==(a|0)){a=c[a+16>>2]|0;c[a+220>>2]=b;b=(c[b+16>>2]|0)+216|0;c[b>>2]=(c[b>>2]|0)+(c[a+216>>2]|0);return}else qa(104643,104635,194,104659)}function WL(a,b){a=a|0;b=b|0;var d=0.0;b=c[(c[b+16>>2]|0)+132>>2]|0;d=+h[b+8>>3]*72.0;h[a>>3]=+h[b>>3]*72.0;h[a+8>>3]=d;return}function XL(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=+e;f=f|0;g=g|0;var i=0,j=0,k=0,m=0.0,n=0,o=0,p=0;o=l;l=l+576|0;n=o;i=0;while(1){if((i|0)>(d|0))break;k=n+(i<<4)|0;j=b+(i<<4)|0;c[k>>2]=c[j>>2];c[k+4>>2]=c[j+4>>2];c[k+8>>2]=c[j+8>>2];c[k+12>>2]=c[j+12>>2];i=i+1|0}m=1.0-e;i=1;while(1){if((i|0)>(d|0))break;j=d-i|0;k=i+-1|0;b=0;while(1){if((b|0)>(j|0))break;p=b+1|0;h[n+(i*96|0)+(b<<4)>>3]=+h[n+(k*96|0)+(p<<4)>>3]*e+ +h[n+(k*96|0)+(b<<4)>>3]*m;h[n+(i*96|0)+(b<<4)+8>>3]=+h[n+(k*96|0)+(p<<4)+8>>3]*e+ +h[n+(k*96|0)+(b<<4)+8>>3]*m;b=p}i=i+1|0}a:do if(f|0){i=0;while(1){if((i|0)>(d|0))break a;p=f+(i<<4)|0;k=n+(i*96|0)|0;c[p>>2]=c[k>>2];c[p+4>>2]=c[k+4>>2];c[p+8>>2]=c[k+8>>2];c[p+12>>2]=c[k+12>>2];i=i+1|0}}while(0);b:do if(g|0){i=0;while(1){if((i|0)>(d|0))break b;p=g+(i<<4)|0;f=n+((d-i|0)*96|0)+(i<<4)|0;c[p>>2]=c[f>>2];c[p+4>>2]=c[f+4>>2];c[p+8>>2]=c[f+8>>2];c[p+12>>2]=c[f+12>>2];i=i+1|0}}while(0);p=n+(d*96|0)|0;c[a>>2]=c[p>>2];c[a+4>>2]=c[p+4>>2];c[a+8>>2]=c[p+8>>2];c[a+12>>2]=c[p+12>>2];l=o;return}function YL(b){b=b|0;var d=0,e=0,f=0,g=0;e=0;do{d=c[46545]|0;f=d+1024|0;if((d-e|0)<1024){c[46545]=f;f=xH(c[46546]|0,f)|0;c[46546]=f;d=c[46545]|0}else f=c[46546]|0;d=O0(f+e|0,d-e|0,b)|0;if(!d){g=6;break}e=(W_(d)|0)+e|0;d=c[46546]|0}while((a[d+(e+-1)>>0]|0)!=10);if((g|0)==6)d=c[46546]|0;return ((e|0)>0?d:0)|0}function ZL(b){b=b|0;var d=0,e=0,f=0;f=l;l=l+16|0;do if((b|0)!=0?(a[b>>0]|0)!=0:0)if(!0){d=c[46362]|0;e=c[46548]|0;if((c[46547]|0)==(d|0))d=e;else{if(e){D_(c[e>>2]|0);D_(c[46548]|0);c[46548]=0;d=c[46362]|0}c[46547]=d;if(!d)break;if(!(a[d>>0]|0))break;d=_L(d)|0;c[46548]=d}if(!((a[b>>0]|0)!=47&(d|0)!=0))break;b=$L(d,c[46549]|0,b)|0;break}else S();else b=0;while(0);l=f;return b|0}function _L(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;e=0;f=0;g=0;b=n1(a)|0;d=0;while(1){b=k1(b,104958)|0;if(!b)break;a=(g<<2)+8|0;if(!f)a=vH(a)|0;else a=xH(d,a)|0;c[a+(g<<2)>>2]=b;f=W_(b)|0;e=e>>>0>f>>>0?e:f;f=a;g=g+1|0;b=0;d=a}c[f+(g<<2)>>2]=0;c[46549]=e;return f|0}function $L(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=l;l=l+16|0;e=g;h=c[46550]|0;c[46550]=F_(h,b+2+(W_(d)|0)|0)|0;while(1){b=c[a>>2]|0;if(!b){a=0;break}h=c[46550]|0;c[e>>2]=b;c[e+4>>2]=104956;c[e+8>>2]=d;Y0(h,104949,e)|0;if(!(K1(c[46550]|0,4)|0)){f=4;break}else a=a+4|0}if((f|0)==4)a=c[46550]|0;l=g;return a|0}function aM(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;g=(b|0)==0;f=0;while(1){h=c[d+(f<<2)>>2]|0;if(!h)break;if((!g?(a[b>>0]|0)==(a[h>>0]|0):0)?(b$(b,h)|0)==0:0)break;f=f+1|0}return c[e+(f<<2)>>2]|0}function bM(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0.0,i=0.0,j=0.0,k=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;z=l;l=l+80|0;x=z+16|0;y=z;u=c[b+4>>2]|0;v=c[b>>2]|0;w=d+8|0;f=0;e=-1;g=1.e+38;b=-1;while(1){if((f|0)>=(u|0))break;s=c[v+(f*48|0)>>2]|0;t=c[v+(f*48|0)+4>>2]|0;r=0;while(1){if((r|0)>=(t|0))break;q=+h[s+(r<<4)>>3]-+h[d>>3];p=+h[s+(r<<4)+8>>3]-+h[w>>3];q=p*p+q*q;A=(e|0)==-1|q>2]|0;e=e+(((e|0)==((c[v+(b*48|0)+4>>2]|0)+-1|0))<<31>>31)|0;e=e-((e|0)%3|0)|0;b=0;while(1){if((b|0)==4)break;C=b+e|0;h[x+(b<<4)>>3]=+h[f+(C<<4)>>3];h[x+(b<<4)+8>>3]=+h[f+(C<<4)+8>>3];b=b+1|0}q=+h[d>>3];k=+h[x>>3]-q;o=+h[w>>3];p=+h[x+8>>3]-o;j=+h[x+48>>3]-q;n=+h[x+56>>3]-o;b=y+8|0;g=1.0;i=0.0;j=n*n+j*j;k=p*p+k*k;while(1){p=(g+i)*.5;XL(y,x,3,p,0,0);m=+h[y>>3];n=+h[b>>3];if(+B(+(k-j))<1.0)break;if(+B(+(g-i))<1.0e-05)break;C=k>3]=m;h[a+8>>3]=n;l=z;return}function cM(){return 0}function dM(b){b=b|0;var d=0.0,e=0,f=0,g=0,i=0,j=0,k=0,l=0;d=+LL(b,c[46376]|0,.75,.01);g=b+16|0;h[(c[g>>2]|0)+32>>3]=d;d=+LL(b,c[46375]|0,.5,.02);h[(c[g>>2]|0)+40>>3]=d;l=WJ(OL(b,c[46377]|0,104960)|0,b)|0;c[(c[g>>2]|0)+8>>2]=l;l=yx(b,c[46384]|0)|0;d=+LL(b,c[46380]|0,14.0,1.0);e=OL(b,c[46381]|0,104968)|0;f=OL(b,c[46382]|0,134232)|0;i=(Rz(l)|0)!=0;k=(HJ(b)|0)==2;i=kH(b,l,(k?4:0)|(i?2:0),d,e,f)|0;c[(c[g>>2]|0)+104>>2]=i;i=c[46385]|0;if((i|0?(j=yx(b,i)|0,j|0):0)?a[j>>0]|0:0){l=(Rz(j)|0)!=0;l=kH(b,j,l?2:0,d,e,f)|0;c[(c[g>>2]|0)+108>>2]=l;l=(c[(ez(b)|0)+16>>2]|0)+113|0;a[l>>0]=a[l>>0]|16}k=(KL(b,c[46388]|0,0,0)|0)&255;l=c[g>>2]|0;a[l+144>>0]=k;tb[c[c[(c[l+8>>2]|0)+4>>2]>>2]&127](b);return}function eM(b){b=b|0;var d=0,e=0,f=0,g=0,i=0.0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;v=l;l=l+112|0;m=v+96|0;n=v+80|0;s=v+40|0;u=v;r=b+48|0;p=ez(c[((c[b>>2]&3|0)==3?b:r)+40>>2]|0)|0;g=m+8|0;c[g>>2]=0;o=n+8|0;c[o>>2]=0;d=c[46412]|0;if(((d|0)!=0?(e=yx(b,d)|0,(e|0)!=0):0)?(a[e>>0]|0)!=0:0){fM(b,m);t=(Rz(e)|0)!=0;i=+h[m>>3];f=c[g>>2]|0;d=c[m+12>>2]|0;e=kH(b,e,t?2:0,i,f,d)|0;t=b+16|0;c[(c[t>>2]|0)+96>>2]=e;e=(c[p+16>>2]|0)+113|0;a[e>>0]=a[e>>0]|1;e=QL(NL(b,c[46422]|0,134226)|0)|0;a[(c[t>>2]|0)+114>>0]=e;t=1;e=f}else{t=0;d=0;i=0.0;e=0}f=c[46413]|0;if((f|0?(j=yx(b,f)|0,j|0):0)?a[j>>0]|0:0){if(!e){fM(b,m);i=+h[m>>3];e=c[g>>2]|0;d=c[m+12>>2]|0}g=(Rz(j)|0)!=0;j=kH(b,j,g?2:0,i,e,d)|0;c[(c[b+16>>2]|0)+108>>2]=j;j=(c[p+16>>2]|0)+113|0;a[j>>0]=a[j>>0]|32}d=c[46427]|0;if(((d|0)!=0?(k=yx(b,d)|0,(k|0)!=0):0)?(a[k>>0]|0)!=0:0){gM(b,m,n);j=(Rz(k)|0)!=0;i=+h[n>>3];d=c[o>>2]|0;e=c[n+12>>2]|0;k=kH(b,k,j?2:0,i,d,e)|0;c[(c[b+16>>2]|0)+100>>2]=k;k=(c[p+16>>2]|0)+113|0;a[k>>0]=a[k>>0]|2}else{e=0;i=0.0;d=0}f=c[46428]|0;if((f|0?(q=yx(b,f)|0,q|0):0)?a[q>>0]|0:0){if(!d){gM(b,m,n);e=c[n+12>>2]|0;i=+h[n>>3];d=c[o>>2]|0}o=(Rz(q)|0)!=0;q=kH(b,q,o?2:0,i,d,e)|0;c[(c[b+16>>2]|0)+104>>2]=q;q=(c[p+16>>2]|0)+113|0;a[q>>0]=a[q>>0]|4}d=xx(b,108373)|0;d=d|0?d:191979;if(a[d>>0]|0)a[(c[(c[((c[b>>2]&3|0)==3?b:r)+40>>2]|0)+16>>2]|0)+145>>0]=1;g=b+16|0;f=(c[g>>2]|0)+16|0;e=c[((c[b>>2]&3|0)==3?b:r)+40>>2]|0;hM(s,c[(c[(c[(c[e+16>>2]|0)+8>>2]|0)+4>>2]|0)+8>>2]|0,e,d);d=s;e=f+40|0;do{c[f>>2]=c[d>>2];f=f+4|0;d=d+4|0}while((f|0)<(e|0));if((iM(b,c[46434]|0)|0)<<24>>24)a[(c[g>>2]|0)+46>>0]=0;d=xx(b,108382)|0;d=d|0?d:191979;if(!(a[d>>0]|0))e=b+-48|0;else{e=b+-48|0;a[(c[(c[((c[b>>2]&3|0)==2?b:e)+40>>2]|0)+16>>2]|0)+145>>0]=1}f=(c[g>>2]|0)+56|0;e=c[((c[b>>2]&3|0)==2?b:e)+40>>2]|0;hM(u,c[(c[(c[(c[e+16>>2]|0)+8>>2]|0)+4>>2]|0)+8>>2]|0,e,d);d=u;e=f+40|0;do{c[f>>2]=c[d>>2];f=f+4|0;d=d+4|0}while((f|0)<(e|0));if((iM(b,c[46435]|0)|0)<<24>>24)a[(c[g>>2]|0)+86>>0]=0;l=v;return t|0}function fM(a,b){a=a|0;b=b|0;h[b>>3]=+LL(a,c[46409]|0,14.0,1.0);c[b+8>>2]=OL(a,c[46410]|0,104968)|0;c[b+12>>2]=OL(a,c[46411]|0,134232)|0;return}function gM(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=b+8|0;if(!(c[e>>2]|0))fM(a,b);h[d>>3]=+LL(a,c[46429]|0,+h[b>>3],1.0);c[d+8>>2]=OL(a,c[46430]|0,c[e>>2]|0)|0;c[d+12>>2]=OL(a,c[46431]|0,c[b+12>>2]|0)|0;return}function hM(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0;m=l;l=l+128|0;k=m+80|0;h=m+40|0;g=m;if((f|0)!=0?(j=A$(f,58)|0,(j|0)!=0):0){a[j>>0]=0;i=j+1|0;xb[d&31](h,e,f,i);e=k;g=h;d=e+36|0;do{c[e>>2]=c[g>>2];e=e+4|0;g=g+4|0}while((e|0)<(d|0));a[j>>0]=58;f=i}else{xb[d&31](g,e,f,0);e=k;d=e+36|0;do{c[e>>2]=c[g>>2];e=e+4|0;g=g+4|0}while((e|0)<(d|0))}e=b;g=k;d=e+36|0;do{c[e>>2]=c[g>>2];e=e+4|0;g=g+4|0}while((e|0)<(d|0));c[b+36>>2]=f;l=m;return}function iM(b,c){b=b|0;c=c|0;var d=0;if(((c|0)!=0?(d=yx(b,c)|0,(d|0)!=0):0)?(a[d>>0]|0)!=0:0)b=(QL(d)|0)<<24>>24==0&1;else b=0;return b|0}function jM(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0.0,o=0.0;k=l;l=l+32|0;i=k;j=c[b+8>>2]|0;d=c[b+4>>2]|0;d=(c[b+44>>2]|0)+((O((d|0)>1?d+-1|0:0,j)|0)<<4)|0;e=i+16|0;c[e>>2]=c[d>>2];c[e+4>>2]=c[d+4>>2];c[e+8>>2]=c[d+8>>2];c[e+12>>2]=c[d+12>>2];c[i>>2]=c[d>>2];c[i+4>>2]=c[d+4>>2];c[i+8>>2]=c[d+8>>2];c[i+12>>2]=c[d+12>>2];f=i+8|0;g=i+24|0;b=1;while(1){if((b|0)>=(j|0))break;m=d+(b<<4)|0;o=+h[m>>3];h[i>>3]=+h[(+h[i>>3]>3];n=+h[m+8>>3];h[f>>3]=+h[(+h[f>>3]>3];h[e>>3]=+h[(+h[e>>3]>o?e:m)>>3];h[g>>3]=+h[(+h[g>>3]>n?e:m)+8>>3];b=b+1|0}c[a>>2]=c[i>>2];c[a+4>>2]=c[i+4>>2];c[a+8>>2]=c[i+8>>2];c[a+12>>2]=c[i+12>>2];c[a+16>>2]=c[i+16>>2];c[a+20>>2]=c[i+20>>2];c[a+24>>2]=c[i+24>>2];c[a+28>>2]=c[i+28>>2];l=k;return}function kM(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=l;l=l+64|0;g=d+32|0;e=d;f=c[a+16>>2]|0;a=f+16|0;f=c[f+116>>2]&1;c[g>>2]=c[a>>2];c[g+4>>2]=c[a+4>>2];c[g+8>>2]=c[a+8>>2];c[g+12>>2]=c[a+12>>2];c[g+16>>2]=c[a+16>>2];c[g+20>>2]=c[a+20>>2];c[g+24>>2]=c[a+24>>2];c[g+28>>2]=c[a+28>>2];lM(e,g,b,f);c[a>>2]=c[e>>2];c[a+4>>2]=c[e+4>>2];c[a+8>>2]=c[e+8>>2];c[a+12>>2]=c[e+12>>2];c[a+16>>2]=c[e+16>>2];c[a+20>>2]=c[e+20>>2];c[a+24>>2]=c[e+24>>2];c[a+28>>2]=c[e+28>>2];l=d;return}function lM(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,g=0.0,i=0.0,j=0,k=0.0,l=0.0,m=0.0;g=+h[d+56>>3];l=+h[d+64>>3];j=e<<24>>24==0;k=+h[d+24>>3];i=+h[d+32>>3];m=(j?k:i)*.5;f=g-m;g=m+g;if(f<+h[b>>3])h[b>>3]=f;e=b+16|0;if(g>+h[e>>3])h[e>>3]=g;g=(j?i:k)*.5;f=l-g;g=g+l;e=b+8|0;if(f<+h[e>>3])h[e>>3]=f;e=b+24|0;if(g>+h[e>>3])h[e>>3]=g;c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];c[a+16>>2]=c[b+16>>2];c[a+20>>2]=c[b+20>>2];c[a+24>>2]=c[b+24>>2];c[a+28>>2]=c[b+28>>2];return}function mM(b){b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0.0,N=0.0,O=0.0,P=0.0;L=l;l=l+448|0;H=L+416|0;t=L+384|0;u=L+304|0;K=L+256|0;G=L+192|0;B=L+144|0;C=L+96|0;d=L+400|0;e=L+368|0;f=L+352|0;g=L+336|0;v=L+288|0;w=L+224|0;x=L+160|0;y=L+112|0;z=L+64|0;A=L+32|0;I=L;J=b+16|0;if((ay(b)|0)==0?(c[(c[J>>2]|0)+180>>2]|0)==0:0){nM(d,0.0,0.0);c[K>>2]=c[d>>2];c[K+4>>2]=c[d+4>>2];c[K+8>>2]=c[d+8>>2];c[K+12>>2]=c[d+12>>2];K=K+16|0;nM(e,0.0,0.0);c[K>>2]=c[e>>2];c[K+4>>2]=c[e+4>>2];c[K+8>>2]=c[e+8>>2];c[K+12>>2]=c[e+12>>2]}else{nM(f,2147483647.0,2147483647.0);c[K>>2]=c[f>>2];c[K+4>>2]=c[f+4>>2];c[K+8>>2]=c[f+8>>2];c[K+12>>2]=c[f+12>>2];F=K+16|0;nM(g,-2147483647.0,-2147483647.0);c[F>>2]=c[g>>2];c[F+4>>2]=c[g+4>>2];c[F+8>>2]=c[g+8>>2];c[F+12>>2]=c[g+12>>2];o=C+8|0;p=u+16|0;D=K+8|0;q=u+8|0;E=K+24|0;r=u+24|0;s=B+8|0;n=Sy(b)|0;while(1){if(!n)break;WL(B,n);d=n+16|0;m=c[d>>2]|0;h[C>>3]=(+h[m+96>>3]+ +h[m+88>>3])*.5;h[o>>3]=+h[m+80>>3]*.5;c[t>>2]=c[B>>2];c[t+4>>2]=c[B+4>>2];c[t+8>>2]=c[B+8>>2];c[t+12>>2]=c[B+12>>2];c[H>>2]=c[C>>2];c[H+4>>2]=c[C+4>>2];c[H+8>>2]=c[C+8>>2];c[H+12>>2]=c[C+12>>2];oM(u,t,H);c[t>>2]=c[B>>2];c[t+4>>2]=c[B+4>>2];c[t+8>>2]=c[B+8>>2];c[t+12>>2]=c[B+12>>2];c[H>>2]=c[C>>2];c[H+4>>2]=c[C+4>>2];c[H+8>>2]=c[C+8>>2];c[H+12>>2]=c[C+12>>2];pM(v,t,H);c[p>>2]=c[v>>2];c[p+4>>2]=c[v+4>>2];c[p+8>>2]=c[v+8>>2];c[p+12>>2]=c[v+12>>2];h[K>>3]=+h[(+h[K>>3]<+h[u>>3]?K:u)>>3];h[D>>3]=+h[(+h[D>>3]<+h[q>>3]?K:u)+8>>3];h[F>>3]=+h[(+h[F>>3]>+h[p>>3]?K:u)+16>>3];h[E>>3]=+h[(+h[E>>3]>+h[r>>3]?K:u)+24>>3];d=c[(c[d>>2]|0)+108>>2]|0;if(d|0?a[d+81>>0]|0:0){m=c[(c[J>>2]|0)+116>>2]&1;c[H>>2]=c[K>>2];c[H+4>>2]=c[K+4>>2];c[H+8>>2]=c[K+8>>2];c[H+12>>2]=c[K+12>>2];c[H+16>>2]=c[K+16>>2];c[H+20>>2]=c[K+20>>2];c[H+24>>2]=c[K+24>>2];c[H+28>>2]=c[K+28>>2];lM(w,H,d,m);c[K>>2]=c[w>>2];c[K+4>>2]=c[w+4>>2];c[K+8>>2]=c[w+8>>2];c[K+12>>2]=c[w+12>>2];c[K+16>>2]=c[w+16>>2];c[K+20>>2]=c[w+20>>2];c[K+24>>2]=c[w+24>>2];c[K+28>>2]=c[w+28>>2]}m=Ex(b,n)|0;while(1){if(!m)break;k=m+16|0;d=c[k>>2]|0;j=d+8|0;e=c[j>>2]|0;if(e|0){i=0;while(1){if((i|0)<(c[e+4>>2]|0))g=0;else break;while(1){f=c[e>>2]|0;if((g|0)>=(c[f+(i*48|0)+4>>2]|0))break;e=(c[f+(i*48|0)>>2]|0)+(g<<4)|0;c[B>>2]=c[e>>2];c[B+4>>2]=c[e+4>>2];c[B+8>>2]=c[e+8>>2];c[B+12>>2]=c[e+12>>2];N=+h[B>>3];h[K>>3]=+h[(+h[K>>3]>3];M=+h[s>>3];h[D>>3]=+h[(+h[D>>3]>3];h[F>>3]=+h[(+h[F>>3]>N?F:B)>>3];h[E>>3]=+h[(+h[E>>3]>M?F:B)+8>>3];g=g+1|0;e=c[j>>2]|0}i=i+1|0}e=c[d+96>>2]|0;if((e|0)!=0?(a[e+81>>0]|0)!=0:0){d=c[(c[J>>2]|0)+116>>2]&1;c[H>>2]=c[K>>2];c[H+4>>2]=c[K+4>>2];c[H+8>>2]=c[K+8>>2];c[H+12>>2]=c[K+12>>2];c[H+16>>2]=c[K+16>>2];c[H+20>>2]=c[K+20>>2];c[H+24>>2]=c[K+24>>2];c[H+28>>2]=c[K+28>>2];lM(x,H,e,d);c[K>>2]=c[x>>2];c[K+4>>2]=c[x+4>>2];c[K+8>>2]=c[x+8>>2];c[K+12>>2]=c[x+12>>2];c[K+16>>2]=c[x+16>>2];c[K+20>>2]=c[x+20>>2];c[K+24>>2]=c[x+24>>2];c[K+28>>2]=c[x+28>>2];d=c[k>>2]|0}e=c[d+100>>2]|0;if((e|0)!=0?(a[e+81>>0]|0)!=0:0){d=c[(c[J>>2]|0)+116>>2]&1;c[H>>2]=c[K>>2];c[H+4>>2]=c[K+4>>2];c[H+8>>2]=c[K+8>>2];c[H+12>>2]=c[K+12>>2];c[H+16>>2]=c[K+16>>2];c[H+20>>2]=c[K+20>>2];c[H+24>>2]=c[K+24>>2];c[H+28>>2]=c[K+28>>2];lM(y,H,e,d);c[K>>2]=c[y>>2];c[K+4>>2]=c[y+4>>2];c[K+8>>2]=c[y+8>>2];c[K+12>>2]=c[y+12>>2];c[K+16>>2]=c[y+16>>2];c[K+20>>2]=c[y+20>>2];c[K+24>>2]=c[y+24>>2];c[K+28>>2]=c[y+28>>2];d=c[k>>2]|0}e=c[d+104>>2]|0;if((e|0)!=0?(a[e+81>>0]|0)!=0:0){d=c[(c[J>>2]|0)+116>>2]&1;c[H>>2]=c[K>>2];c[H+4>>2]=c[K+4>>2];c[H+8>>2]=c[K+8>>2];c[H+12>>2]=c[K+12>>2];c[H+16>>2]=c[K+16>>2];c[H+20>>2]=c[K+20>>2];c[H+24>>2]=c[K+24>>2];c[H+28>>2]=c[K+28>>2];lM(z,H,e,d);c[K>>2]=c[z>>2];c[K+4>>2]=c[z+4>>2];c[K+8>>2]=c[z+8>>2];c[K+12>>2]=c[z+12>>2];c[K+16>>2]=c[z+16>>2];c[K+20>>2]=c[z+20>>2];c[K+24>>2]=c[z+24>>2];c[K+28>>2]=c[z+28>>2];d=c[k>>2]|0}d=c[d+108>>2]|0;if(d|0?a[d+81>>0]|0:0){k=c[(c[J>>2]|0)+116>>2]&1;c[H>>2]=c[K>>2];c[H+4>>2]=c[K+4>>2];c[H+8>>2]=c[K+8>>2];c[H+12>>2]=c[K+12>>2];c[H+16>>2]=c[K+16>>2];c[H+20>>2]=c[K+20>>2];c[H+24>>2]=c[K+24>>2];c[H+28>>2]=c[K+28>>2];lM(A,H,d,k);c[K>>2]=c[A>>2];c[K+4>>2]=c[A+4>>2];c[K+8>>2]=c[A+8>>2];c[K+12>>2]=c[A+12>>2];c[K+16>>2]=c[A+16>>2];c[K+20>>2]=c[A+20>>2];c[K+24>>2]=c[A+24>>2];c[K+28>>2]=c[A+28>>2]}}m=Gx(b,m)|0}n=Ty(b,n)|0}d=c[J>>2]|0;f=c[d+180>>2]|0;g=d+184|0;i=G+8|0;j=G+16|0;k=G+24|0;e=1;while(1){if((e|0)>(f|0))break;P=+h[(c[(c[(c[g>>2]|0)+(e<<2)>>2]|0)+16>>2]|0)+16>>3];h[G>>3]=P;C=c[(c[(c[g>>2]|0)+(e<<2)>>2]|0)+16>>2]|0;O=+h[C+24>>3];h[i>>3]=O;M=+h[C+32>>3];h[j>>3]=M;N=+h[C+40>>3];h[k>>3]=N;h[K>>3]=+h[(+h[K>>3]>3];h[D>>3]=+h[(+h[D>>3]>3];h[F>>3]=+h[(+h[F>>3]>M?K:G)+16>>3];h[E>>3]=+h[(+h[E>>3]>N?K:G)+24>>3];e=e+1|0}e=c[d+12>>2]|0;if((e|0)!=0?(a[e+81>>0]|0)!=0:0){d=c[d+116>>2]&1;c[H>>2]=c[K>>2];c[H+4>>2]=c[K+4>>2];c[H+8>>2]=c[K+8>>2];c[H+12>>2]=c[K+12>>2];c[H+16>>2]=c[K+16>>2];c[H+20>>2]=c[K+20>>2];c[H+24>>2]=c[K+24>>2];c[H+28>>2]=c[K+28>>2];lM(I,H,e,d);c[K>>2]=c[I>>2];c[K+4>>2]=c[I+4>>2];c[K+8>>2]=c[I+8>>2];c[K+12>>2]=c[I+12>>2];c[K+16>>2]=c[I+16>>2];c[K+20>>2]=c[I+20>>2];c[K+24>>2]=c[I+24>>2];c[K+28>>2]=c[I+28>>2];d=c[J>>2]|0}J=d+16|0;c[J>>2]=c[K>>2];c[J+4>>2]=c[K+4>>2];c[J+8>>2]=c[K+8>>2];c[J+12>>2]=c[K+12>>2];c[J+16>>2]=c[K+16>>2];c[J+20>>2]=c[K+20>>2];c[J+24>>2]=c[K+24>>2];c[J+28>>2]=c[K+28>>2]}l=L;return}function nM(a,b,c){a=a|0;b=+b;c=+c;h[a>>3]=b;h[a+8>>3]=c;return}function oM(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0;d=+h[b+8>>3]-+h[c+8>>3];h[a>>3]=+h[b>>3]-+h[c>>3];h[a+8>>3]=d;return}function pM(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0;d=+h[c+8>>3]+ +h[b+8>>3];h[a>>3]=+h[c>>3]+ +h[b>>3];h[a+8>>3]=d;return}function qM(a){a=a|0;if((c[a+60>>2]|0)==(a|0))a=1;else a=(V$(ry(a)|0,104980,7)|0)==0&1;return a|0}function rM(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;a:do if(!e)switch(pz(b)|0){case 0:{e=nx(a,0,c,191979)|0;break a}case 1:{e=nx(a,1,c,191979)|0;break a}case 2:{e=nx(a,2,c,191979)|0;break a}default:{e=0;break a}}while(0);rx(b,e,d)|0;return e|0}function sM(d){d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=l;l=l+144|0;g=k;i=tM(d)|0;h=Cw(23488,c[4555]|0)|0;j=vA(d,104988,1)|0;Az(j,134401,280,1)|0;Tw(g,128,k+16|0);e=Sy(d)|0;while(1){if(!e)break;a:do if(!(a[(c[e+16>>2]|0)+118>>0]|0)){f=Ex(d,e)|0;while(1){if(!f)break a;uM(f,j,g,h,i);f=Gx(d,f)|0}}while(0);e=Ty(d,e)|0}Xw(g);yw(h)|0;f=ay(j)|0;e=Sy(j)|0;while(1){if(!e)break;h=Ty(j,e)|0;dz(d,e)|0;e=h}$x(j)|0;if(f|0){j=(c[d+16>>2]|0)+136|0;b[j>>1]=b[j>>1]|1}yw(i)|0;l=k;return f|0}function tM(a){a=a|0;var b=0;b=Cw(23524,c[4555]|0)|0;DM(a,b);return b|0}function uM(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=l;l=l+48|0;q=t+32|0;p=t+24|0;s=t+16|0;r=t+8|0;k=t;n=c[b>>2]&3;m=c[((n|0)==3?b:b+48|0)+40>>2]|0;n=c[((n|0)==2?b:b+-48|0)+40>>2]|0;do if(!(a[(c[n+16>>2]|0)+118>>0]|0)){if(!(z$(ry(m)|0,104980,7)|0))o=vM(g,ry(m)|0)|0;else o=0;if(!(z$(ry(n)|0,104980,7)|0))i=vM(g,ry(n)|0)|0;else i=0;h=(o|0)!=0;j=(i|0)!=0;if(h|j){if((o|0)==(i|0)){r=ry(m)|0;s=ry(m)|0;c[k>>2]=r;c[k+4>>2]=s;Pw(0,105003,k)|0;break}g=wM(f,b)|0;if(g|0){xM(b,c[g+16>>2]|0,c[g+20>>2]|0)|0;break}if(!j)if(!(oz(o,n)|0)){zM(f,m,n,xM(b,yM(m,o,e,d)|0,n)|0);break}else{r=ry(n)|0;s=ry(o)|0;c[q>>2]=r;c[q+4>>2]=s;Pw(0,105158,q)|0;break}if(!h)if(!(oz(i,m)|0)){zM(f,m,n,xM(b,m,yM(n,i,e,d)|0)|0);break}else{r=ry(m)|0;s=ry(i)|0;c[p>>2]=r;c[p+4>>2]=s;Pw(0,105121,p)|0;break}if(oz(i,o)|0){q=ry(o)|0;s=ry(i)|0;c[r>>2]=q;c[r+4>>2]=s;Pw(0,105041,r)|0;break}if(!(oz(o,i)|0)){s=yM(m,o,e,d)|0;zM(f,m,n,xM(b,s,yM(n,i,e,d)|0)|0);break}else{q=ry(i)|0;r=ry(o)|0;c[s>>2]=q;c[s+4>>2]=r;Pw(0,105081,s)|0;break}}}while(0);l=t;return}function vM(a,b){a=a|0;b=b|0;a=nb[c[a>>2]&63](a,b,512)|0;if(!a)a=0;else a=c[a+12>>2]|0;return a|0}function wM(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d;f=c[b>>2]&3;c[e>>2]=c[((f|0)==3?b:b+48|0)+40>>2];c[e+4>>2]=c[((f|0)==2?b:b+-48|0)+40>>2];b=nb[c[a>>2]&63](a,e,512)|0;l=d;return b|0}function xM(a,b,c){a=a|0;b=b|0;c=c|0;c=Rx(ez(b)|0,b,c,0,1)|0;Az(c,134378,176,1)|0;Bx(a,c)|0;return c|0}function yM(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0;k=l;l=l+112|0;g=k;j=k+4|0;Ww(e,105195)|0;i=c[46551]|0;c[46551]=i+1;c[g>>2]=i;Y0(j,134313,g)|0;Ww(e,j)|0;j=e+4|0;g=c[j>>2]|0;i=e+8|0;if(g>>>0>=(c[i>>2]|0)>>>0){Uw(e,1)|0;g=c[j>>2]|0}c[j>>2]=g+1;a[g>>0]=58;Ww(e,ry(d)|0)|0;h=fz(d)|0;g=c[j>>2]|0;if(g>>>0>=(c[i>>2]|0)>>>0){Uw(e,1)|0;g=c[j>>2]|0}a[g>>0]=0;e=c[e>>2]|0;c[j>>2]=e;j=az(h,e,1)|0;Az(j,134365,304,1)|0;a[(c[j+16>>2]|0)+118>>0]=1;Xy(d,j,1)|0;Xy(f,b,1)|0;f=ez(j)|0;c[46384]=rM(f,j,105198,191979,c[46384]|0)|0;f=ez(j)|0;c[46387]=rM(f,j,138e3,131253,c[46387]|0)|0;f=ez(j)|0;c[46377]=rM(f,j,105204,105210,c[46377]|0)|0;l=k;return j|0}function zM(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;f=l;l=l+32|0;g=f;n=g+8|0;c[n>>2]=b;m=g+12|0;c[m>>2]=d;o=c[e>>2]&3;i=e+48|0;j=g+16|0;c[j>>2]=c[((o|0)==3?e:i)+40>>2];k=e+-48|0;h=g+20|0;c[h>>2]=c[((o|0)==2?e:k)+40>>2];nb[c[a>>2]&63](a,g,1)|0;c[n>>2]=d;c[m>>2]=b;d=c[e>>2]&3;c[j>>2]=c[((d|0)==2?e:k)+40>>2];c[h>>2]=c[((d|0)==3?e:i)+40>>2];nb[c[a>>2]&63](a,g,1)|0;l=f;return}function AM(a,b,d){a=a|0;b=b|0;d=d|0;d=uH(24)|0;c[d+8>>2]=c[b+8>>2];c[d+12>>2]=c[b+12>>2];c[d+16>>2]=c[b+16>>2];c[d+20>>2]=c[b+20>>2];return d|0}function BM(a,b,c){a=a|0;b=b|0;c=c|0;D_(b);return}function CM(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;a=c[b>>2]|0;e=c[d>>2]|0;if(a>>>0>=e>>>0)if(a>>>0>e>>>0)a=1;else{b=c[b+4>>2]|0;d=c[d+4>>2]|0;return (b>>>0>>0?-1:b>>>0>d>>>0&1)|0}else a=-1;return a|0}function DM(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;h=l;l=l+16|0;g=h;f=a+16|0;e=1;while(1){a=c[f>>2]|0;if((e|0)>(c[a+180>>2]|0))break;a=c[(c[a+184>>2]|0)+(e<<2)>>2]|0;d=ry(a)|0;if(!(nb[c[b>>2]&63](b,d,512)|0)){i=uH(16)|0;c[i+8>>2]=d;c[i+12>>2]=a;nb[c[b>>2]&63](b,i,1)|0}else{c[g>>2]=d;Pw(0,105214,g)|0}DM(a,b);e=e+1|0}l=h;return}function EM(a,b,c){a=a|0;b=b|0;c=c|0;D_(b);return}function FM(a){a=a|0;var b=0,c=0,d=0;d=vA(a,104988,1)|0;Az(d,134401,280,1)|0;b=Sy(a)|0;while(1){if(!b)break;c=Ex(a,b)|0;while(1){if(!c)break;GM(c,d);c=Gx(a,c)|0}b=Ty(a,b)|0}b=Sy(d)|0;while(1){if(!b)break;c=Ty(d,b)|0;HM(b);dz(a,b)|0;b=c}$x(d)|0;return}function GM(b,d){b=b|0;d=d|0;var e=0,f=0;e=c[b>>2]&3;f=c[((e|0)==3?b:b+48|0)+40>>2]|0;e=c[((e|0)==2?b:b+-48|0)+40>>2]|0;if(!((a[(c[f+16>>2]|0)+118>>0]|0)==0?!(a[(c[e+16>>2]|0)+118>>0]|0):0)){f=IM(f,d)|0;e=xM(b,f,IM(e,d)|0)|0;f=c[b+16>>2]|0;d=f+8|0;e=c[e+16>>2]|0;c[e+8>>2]=c[d>>2];c[d>>2]=0;d=f+96|0;c[e+96>>2]=c[d>>2];c[d>>2]=0;d=f+108|0;c[e+108>>2]=c[d>>2];c[d>>2]=0;d=f+100|0;c[e+100>>2]=c[d>>2];c[d>>2]=0;f=f+104|0;c[e+104>>2]=c[f>>2];c[f>>2]=0;JM(b)}return}function HM(a){a=a|0;var b=0,d=0,e=0;e=a+16|0;b=c[e>>2]|0;d=c[b+132>>2]|0;if(d){D_(d);b=c[e>>2]|0}d=c[b+8>>2]|0;if(d){tb[c[(c[d+4>>2]|0)+4>>2]&127](a);b=c[e>>2]|0}nH(c[b+104>>2]|0);nH(c[(c[e>>2]|0)+108>>2]|0);Cz(a,134365)|0;return}function IM(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;f=ez(b)|0;a:do if(a[(c[b+16>>2]|0)+118>>0]|0){Xy(d,b,1)|0;b=A$(ry(b)|0,58)|0;if(!b)qa(108182,104635,1225,105266);d=b+1|0;b=az(f,d,0)|0;if(!b){b=az(f,d,1)|0;Az(b,134365,304,1)|0;d=sx(f,1,0)|0;while(1){if(!d)break a;g=yx(b,d)|0;e=c[d+12>>2]|0;if((g|0)!=(e|0))rx(b,d,e)|0;d=sx(f,1,d)|0}}}while(0);return b|0}function JM(a){a=a|0;var b=0;b=a+16|0;D_(c[(c[b>>2]|0)+144>>2]|0);KM(a);nH(c[(c[b>>2]|0)+96>>2]|0);nH(c[(c[b>>2]|0)+108>>2]|0);nH(c[(c[b>>2]|0)+100>>2]|0);nH(c[(c[b>>2]|0)+104>>2]|0);Cz(a,134378)|0;return}function KM(a){a=a|0;var b=0,d=0,e=0;e=a+16|0;a=c[e>>2]|0;b=c[a+8>>2]|0;if(b){d=0;while(1){a=c[b>>2]|0;if((d|0)>=(c[b+4>>2]|0))break;D_(c[a+(d*48|0)>>2]|0);d=d+1|0;b=c[(c[e>>2]|0)+8>>2]|0}D_(a);D_(c[(c[e>>2]|0)+8>>2]|0);a=c[e>>2]|0}c[a+8>>2]=0;return}function LM(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=nx(a,b,c,0)|0;if(!e)e=nx(a,b,c,d)|0;return e|0}function MM(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;o=l;l=l+32|0;i=o;h=o+8|0;j=o+16|0;m=A$(b,59)|0;n=d+4|0;e=c[n>>2]|0;k=d+8|0;if(e>>>0>=(c[k>>2]|0)>>>0){Uw(d,1)|0;e=c[n>>2]|0}c[n>>2]=e+1;a[e>>0]=38;if(((m|0)!=0?(f=m-b|0,(f+-2|0)>>>0<=6):0)?(U0(j,b,f)|0,a[j+f>>0]=0,c[h>>2]=j,g=e2(h,23560,252,8,94)|0,(g|0)!=0):0){c[i>>2]=c[g+4>>2];Y0(j,134313,i)|0;b=c[n>>2]|0;if(b>>>0>=(c[k>>2]|0)>>>0){Uw(d,1)|0;b=c[n>>2]|0}c[n>>2]=b+1;a[b>>0]=35;Ww(d,j)|0;b=c[n>>2]|0;if(b>>>0>=(c[k>>2]|0)>>>0){Uw(d,1)|0;b=c[n>>2]|0}c[n>>2]=b+1;a[b>>0]=59;b=m+1|0}l=o;return b|0}function NM(a,b){a=a|0;b=b|0;return b$(c[a>>2]|0,c[b>>2]|0)|0}function OM(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;q=l;l=l+1072|0;k=q+8|0;j=q;i=q+16|0;o=q+24|0;c[i>>2]=b;if((c[46552]|0)!=(d|0)){c[46552]=d;a[191878]=0}Tw(o,1024,q+40|0);p=o+4|0;n=o+8|0;while(1){f=b+1|0;c[i>>2]=f;e=a[b>>0]|0;if(!(e<<24>>24))break;do if((e&255)<192)if(e<<24>>24==38){f=QM(i)|0;if(!f)e=38;else{if(f>>>0<127){e=f&255;break}b=c[p>>2]|0;e=b>>>0>=(c[n>>2]|0)>>>0;if(f>>>0<2047){if(e){Uw(o,1)|0;b=c[p>>2]|0}c[p>>2]=b+1;a[b>>0]=f>>>6|192;e=(f&63|128)&255;break}if(e){Uw(o,1)|0;b=c[p>>2]|0}c[p>>2]=b+1;a[b>>0]=f>>>12|224;b=c[p>>2]|0;if(b>>>0>=(c[n>>2]|0)>>>0){Uw(o,1)|0;b=c[p>>2]|0}c[p>>2]=b+1;a[b>>0]=f>>>6&63|128;e=(f&63|128)&255}}else{h=0;m=9}else if((e&255)>=224)if((e&255)>=240)if((e&255)<248){h=3;m=9}else{if(!(a[191878]|0)){c[j>>2]=ry(d)|0;Pw(0,106681,j)|0;a[191878]=1}h=-1;e=PM(e,o)|0;m=9}else{h=2;m=9}else{h=1;m=9}while(0);do if((m|0)==9){m=0;g=0;while(1){if((g|0)>=(h|0)){m=34;break}if((a[f>>0]&-64)<<24>>24!=-128)break;b=c[p>>2]|0;if(b>>>0>=(c[n>>2]|0)>>>0){Uw(o,1)|0;b=c[p>>2]|0}c[p>>2]=b+1;a[b>>0]=e;g=g+1|0;e=a[f>>0]|0;f=f+1|0}if((m|0)==34){m=0;c[i>>2]=f;break}c[i>>2]=f;if(!(a[191878]|0)){g=ry(d)|0;c[k>>2]=h+1;c[k+4>>2]=g;Pw(0,106802,k)|0;a[191878]=1}e=PM(e,o)|0}while(0);b=c[p>>2]|0;if(b>>>0>=(c[n>>2]|0)>>>0){Uw(o,1)|0;b=c[p>>2]|0}c[p>>2]=b+1;a[b>>0]=e;b=c[i>>2]|0}b=c[p>>2]|0;if(b>>>0>=(c[n>>2]|0)>>>0){Uw(o,1)|0;b=c[p>>2]|0}a[b>>0]=0;n=c[o>>2]|0;c[p>>2]=n;p=n1(n)|0;Xw(o);l=q;return p|0}function PM(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;j=l;l=l+16|0;g=j;a[g>>0]=b;a[g+1>>0]=0;g=RM(g)|0;h=d+4|0;i=d+8|0;e=W_(g)|0;f=g;while(1){if((e|0)<=1)break;b=c[h>>2]|0;if(b>>>0>=(c[i>>2]|0)>>>0){Uw(d,1)|0;b=c[h>>2]|0}k=a[f>>0]|0;c[h>>2]=b+1;a[b>>0]=k;e=e+-1|0;f=f+1|0}k=a[f>>0]|0;D_(g);l=j;return k|0}function QM(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=l;l=l+32|0;h=i;d=i+8|0;e=c[b>>2]|0;a:do if((a[e>>0]|0)!=35){c[h>>2]=d;g=0;b:while(1){if((g|0)>=8){d=0;break a}f=a[e+g>>0]|0;switch(f<<24>>24){case 0:{d=0;break a}case 59:break b;default:{}}a[d>>0]=f;d=d+1|0;g=g+1|0}a[d>>0]=0;d=e2(h,23560,252,8,94)|0;if(!d)d=0;else{e=e+(g+1)|0;d=c[d+4>>2]|0}}else{h=a[e+1>>0]|0;d=h&255;c:do if((h|32)<<24>>24==120){h=0;g=2;while(1){if((g|0)>=8){f=h;break c}f=a[e+g>>0]|0;d=f&255;if((f+-65&255)>=6)if((f+-97&255)>=6)if((f+-48&255)<10)f=-48;else{f=h;break c}else f=-87;else f=-55;d=f+d|0;h=d+(h<<4)|0;g=g+1|0}}else{f=0;g=1;while(1){if((g|0)>=8)break c;h=a[e+g>>0]|0;d=h&255;if((h+-48&255)>=10)break c;f=(f*10|0)+-48+d|0;g=g+1|0}}while(0);d=(d|0)==59;e=d?e+(g+1)|0:e;d=d?f:0}while(0);c[b>>2]=e;l=i;return d|0}function RM(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=l;l=l+1056|0;g=k;i=k+8|0;c[g>>2]=b;Tw(i,1024,k+24|0);j=i+4|0;h=i+8|0;while(1){c[g>>2]=b+1;d=a[b>>0]|0;if(!(d<<24>>24))break;b=d&255;if(d<<24>>24==38){b=QM(g)|0;if(!b){b=38;f=6}else f=5}else f=5;do if((f|0)==5){f=0;if(b>>>0<127)f=6;else{d=c[j>>2]|0;e=d>>>0>=(c[h>>2]|0)>>>0;if(b>>>0<2047){if(e){Uw(i,1)|0;d=c[j>>2]|0}c[j>>2]=d+1;a[d>>0]=b>>>6|192;d=c[j>>2]|0;if(d>>>0>=(c[h>>2]|0)>>>0){Uw(i,1)|0;d=c[j>>2]|0}b=b&63|128;break}if(e){Uw(i,1)|0;d=c[j>>2]|0}c[j>>2]=d+1;a[d>>0]=b>>>12|224;d=c[j>>2]|0;if(d>>>0>=(c[h>>2]|0)>>>0){Uw(i,1)|0;d=c[j>>2]|0}c[j>>2]=d+1;a[d>>0]=b>>>6&63|128;d=c[j>>2]|0;if(d>>>0>=(c[h>>2]|0)>>>0){Uw(i,1)|0;d=c[j>>2]|0}b=b&63|128}}while(0);if((f|0)==6){d=c[j>>2]|0;if(d>>>0>=(c[h>>2]|0)>>>0){Uw(i,1)|0;d=c[j>>2]|0}}c[j>>2]=d+1;a[d>>0]=b;b=c[g>>2]|0}b=c[j>>2]|0;if(b>>>0>=(c[h>>2]|0)>>>0){Uw(i,1)|0;b=c[j>>2]|0}a[b>>0]=0;h=c[i>>2]|0;c[j>>2]=h;j=n1(h)|0;Xw(i);l=k;return j|0}function SM(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=l;l=l+1040|0;g=i;Tw(g,1024,i+16|0);h=g+4|0;f=g+8|0;while(1){d=b+1|0;e=a[b>>0]|0;if(!(e<<24>>24))break;if((e&255)<127){b=c[h>>2]|0;if(b>>>0>=(c[f>>2]|0)>>>0){Uw(g,1)|0;b=c[h>>2]|0}c[h>>2]=b+1;a[b>>0]=e;b=d;continue}else{e=a[d>>0]&63|e<<6&255;d=c[h>>2]|0;if(d>>>0>=(c[f>>2]|0)>>>0){Uw(g,1)|0;d=c[h>>2]|0}c[h>>2]=d+1;a[d>>0]=e;b=b+2|0;continue}}b=c[h>>2]|0;if(b>>>0>=(c[f>>2]|0)>>>0){Uw(g,1)|0;b=c[h>>2]|0}a[b>>0]=0;f=c[g>>2]|0;c[h>>2]=f;h=n1(f)|0;Xw(g);l=i;return h|0}function TM(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+80|0;e=n+48|0;d=n+32|0;f=n+64|0;g=n+16|0;i=n;j=b+16|0;k=a+16|0;m=c[k>>2]|0;if(((+h[j>>3]>=+h[m+48>>3]?+h[m+64>>3]>=+h[b>>3]:0)?+h[b+24>>3]>=+h[m+56>>3]:0)?+h[m+72>>3]>=+h[b+8>>3]:0){m=m+16|0;c[d>>2]=c[j>>2];c[d+4>>2]=c[j+4>>2];c[d+8>>2]=c[j+8>>2];c[d+12>>2]=c[j+12>>2];c[e>>2]=c[b>>2];c[e+4>>2]=c[b+4>>2];c[e+8>>2]=c[b+8>>2];c[e+12>>2]=c[b+12>>2];UM(g,d,e);c[d>>2]=c[m>>2];c[d+4>>2]=c[m+4>>2];c[d+8>>2]=c[m+8>>2];c[d+12>>2]=c[m+12>>2];c[e>>2]=c[g>>2];c[e+4>>2]=c[g+4>>2];c[e+8>>2]=c[g+8>>2];c[e+12>>2]=c[g+12>>2];oM(i,d,e);c[f>>2]=a;c[f+4>>2]=0;d=c[(c[(c[(c[k>>2]|0)+8>>2]|0)+4>>2]|0)+12>>2]|0;c[e>>2]=c[i>>2];c[e+4>>2]=c[i+4>>2];c[e+8>>2]=c[i+8>>2];c[e+12>>2]=c[i+12>>2];d=lb[d&127](f,e)|0}else d=0;l=n;return d|0}function UM(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0;d=(+h[c+8>>3]+ +h[b+8>>3])*.5;h[a>>3]=(+h[c>>3]+ +h[b>>3])*.5;h[a+8>>3]=d;return}function VM(a,b){a=a|0;b=b|0;var d=0.0,e=0,f=0.0,g=0,i=0.0,j=0,k=0,m=0,n=0;e=l;l=l+80|0;j=e+64|0;k=e+48|0;m=e;n=e+32|0;g=e+16|0;h[m>>3]=+h[a+24>>3]*.5;h[m+8>>3]=+h[a+32>>3]*.5;a=a+56|0;c[k>>2]=c[a>>2];c[k+4>>2]=c[a+4>>2];c[k+8>>2]=c[a+8>>2];c[k+12>>2]=c[a+12>>2];c[j>>2]=c[m>>2];c[j+4>>2]=c[m+4>>2];c[j+8>>2]=c[m+8>>2];c[j+12>>2]=c[m+12>>2];oM(n,k,j);i=+h[n>>3];f=+h[n+8>>3];c[k>>2]=c[a>>2];c[k+4>>2]=c[a+4>>2];c[k+8>>2]=c[a+8>>2];c[k+12>>2]=c[a+12>>2];c[j>>2]=c[m>>2];c[j+4>>2]=c[m+4>>2];c[j+8>>2]=c[m+8>>2];c[j+12>>2]=c[m+12>>2];pM(g,k,j);d=+h[g+8>>3];if((+h[b+16>>3]>=i?+h[g>>3]>=+h[b>>3]:0)?+h[b+24>>3]>=f:0)a=d>=+h[b+8>>3]&1;else a=0;l=e;return a|0}function WM(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+80|0;k=n+48|0;j=n;h=a+16|0;a=c[h>>2]|0;i=c[a+8>>2]|0;a:do if((i|0)!=0?(g=i+8|0,c[j>>2]=c[g>>2],c[j+4>>2]=c[g+4>>2],c[j+8>>2]=c[g+8>>2],c[j+12>>2]=c[g+12>>2],c[j+16>>2]=c[g+16>>2],c[j+20>>2]=c[g+20>>2],c[j+24>>2]=c[g+24>>2],c[j+28>>2]=c[g+28>>2],c[k>>2]=c[b>>2],c[k+4>>2]=c[b+4>>2],c[k+8>>2]=c[b+8>>2],c[k+12>>2]=c[b+12>>2],c[k+16>>2]=c[b+16>>2],c[k+20>>2]=c[b+20>>2],c[k+24>>2]=c[b+24>>2],c[k+28>>2]=c[b+28>>2],(XM(j,k)|0)!=0):0){d=i+4|0;a=0;while(1){if((a|0)>=(c[d>>2]|0))break;e=j;f=(c[i>>2]|0)+(a*48|0)|0;g=e+48|0;do{c[e>>2]=c[f>>2];e=e+4|0;f=f+4|0}while((e|0)<(g|0));c[k>>2]=c[b>>2];c[k+4>>2]=c[b+4>>2];c[k+8>>2]=c[b+8>>2];c[k+12>>2]=c[b+12>>2];c[k+16>>2]=c[b+16>>2];c[k+20>>2]=c[b+20>>2];c[k+24>>2]=c[b+24>>2];c[k+28>>2]=c[b+28>>2];if(!((YM(j,k)|0)<<24>>24))a=a+1|0;else{a=1;break a}}a=c[h>>2]|0;m=7}else m=7;while(0);do if((m|0)==7){a=c[a+96>>2]|0;if(a|0?(c[k>>2]=c[b>>2],c[k+4>>2]=c[b+4>>2],c[k+8>>2]=c[b+8>>2],c[k+12>>2]=c[b+12>>2],c[k+16>>2]=c[b+16>>2],c[k+20>>2]=c[b+20>>2],c[k+24>>2]=c[b+24>>2],c[k+28>>2]=c[b+28>>2],(VM(a,k)|0)<<24>>24):0){a=1;break}a=0}while(0);l=n;return a|0}function XM(a,b){a=a|0;b=b|0;if((+h[a+16>>3]>=+h[b>>3]?+h[b+16>>3]>=+h[a>>3]:0)?+h[a+24>>3]>=+h[b+8>>3]:0)a=+h[b+24>>3]>=+h[a+8>>3]&1;else a=0;return a|0}function YM(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+96|0;k=n+64|0;j=n+48|0;i=n+32|0;f=n+16|0;g=n;m=a+4|0;d=c[m>>2]|0;if(!d)qa(106911,104635,1637,106919);e=c[a>>2]|0;c[g>>2]=c[e>>2];c[g+4>>2]=c[e+4>>2];c[g+8>>2]=c[e+8>>2];c[g+12>>2]=c[e+12>>2];e=1;while(1){if((e|0)>=(d|0)){h=7;break}d=(c[a>>2]|0)+(e<<4)|0;c[f>>2]=c[d>>2];c[f+4>>2]=c[d+4>>2];c[f+8>>2]=c[d+8>>2];c[f+12>>2]=c[d+12>>2];c[i>>2]=c[d>>2];c[i+4>>2]=c[d+4>>2];c[i+8>>2]=c[d+8>>2];c[i+12>>2]=c[d+12>>2];c[j>>2]=c[g>>2];c[j+4>>2]=c[g+4>>2];c[j+8>>2]=c[g+8>>2];c[j+12>>2]=c[g+12>>2];c[k>>2]=c[b>>2];c[k+4>>2]=c[b+4>>2];c[k+8>>2]=c[b+8>>2];c[k+12>>2]=c[b+12>>2];c[k+16>>2]=c[b+16>>2];c[k+20>>2]=c[b+20>>2];c[k+24>>2]=c[b+24>>2];c[k+28>>2]=c[b+28>>2];if((VG(i,j,k)|0)!=-1){d=1;break};c[g>>2]=c[f>>2];c[g+4>>2]=c[f+4>>2];c[g+8>>2]=c[f+8>>2];c[g+12>>2]=c[f+12>>2];e=e+1|0;d=c[m>>2]|0}do if((h|0)==7){d=c[a+8>>2]|0;if(d|0?(g=a+16|0,h=c[a>>2]|0,c[i>>2]=c[g>>2],c[i+4>>2]=c[g+4>>2],c[i+8>>2]=c[g+8>>2],c[i+12>>2]=c[g+12>>2],c[j>>2]=c[h>>2],c[j+4>>2]=c[h+4>>2],c[j+8>>2]=c[h+8>>2],c[j+12>>2]=c[h+12>>2],c[k>>2]=c[b>>2],c[k+4>>2]=c[b+4>>2],c[k+8>>2]=c[b+8>>2],c[k+12>>2]=c[b+12>>2],c[k+16>>2]=c[b+16>>2],c[k+20>>2]=c[b+20>>2],c[k+24>>2]=c[b+24>>2],c[k+28>>2]=c[b+28>>2],(ZM(i,j,d,k)|0)<<24>>24):0){d=1;break}d=c[a+12>>2]|0;if(d|0?(h=a+32|0,m=(c[a>>2]|0)+((c[m>>2]|0)+-1<<4)|0,c[i>>2]=c[h>>2],c[i+4>>2]=c[h+4>>2],c[i+8>>2]=c[h+8>>2],c[i+12>>2]=c[h+12>>2],c[j>>2]=c[m>>2],c[j+4>>2]=c[m+4>>2],c[j+8>>2]=c[m+8>>2],c[j+12>>2]=c[m+12>>2],c[k>>2]=c[b>>2],c[k+4>>2]=c[b+4>>2],c[k+8>>2]=c[b+8>>2],c[k+12>>2]=c[b+12>>2],c[k+16>>2]=c[b+16>>2],c[k+20>>2]=c[b+20>>2],c[k+24>>2]=c[b+24>>2],c[k+28>>2]=c[b+28>>2],(ZM(i,j,d,k)|0)<<24>>24):0){d=1;break}d=0}while(0);l=n;return d|0}function ZM(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0.0;m=l;l=l+160|0;g=m+144|0;f=m+128|0;n=m+96|0;i=m+64|0;j=m+32|0;k=m;o=+h[e+16>>3];c[f>>2]=c[a>>2];c[f+4>>2]=c[a+4>>2];c[f+8>>2]=c[a+8>>2];c[f+12>>2]=c[a+12>>2];c[g>>2]=c[b>>2];c[g+4>>2]=c[b+4>>2];c[g+8>>2]=c[b+8>>2];c[g+12>>2]=c[b+12>>2];JE(n,f,g,1.0,d);if(((o>=+h[n>>3]?(c[f>>2]=c[a>>2],c[f+4>>2]=c[a+4>>2],c[f+8>>2]=c[a+8>>2],c[f+12>>2]=c[a+12>>2],c[g>>2]=c[b>>2],c[g+4>>2]=c[b+4>>2],c[g+8>>2]=c[b+8>>2],c[g+12>>2]=c[b+12>>2],JE(i,f,g,1.0,d),+h[i+16>>3]>=+h[e>>3]):0)?(o=+h[e+24>>3],c[f>>2]=c[a>>2],c[f+4>>2]=c[a+4>>2],c[f+8>>2]=c[a+8>>2],c[f+12>>2]=c[a+12>>2],c[g>>2]=c[b>>2],c[g+4>>2]=c[b+4>>2],c[g+8>>2]=c[b+8>>2],c[g+12>>2]=c[b+12>>2],JE(j,f,g,1.0,d),o>=+h[j+8>>3]):0)?(c[f>>2]=c[a>>2],c[f+4>>2]=c[a+4>>2],c[f+8>>2]=c[a+8>>2],c[f+12>>2]=c[a+12>>2],c[g>>2]=c[b>>2],c[g+4>>2]=c[b+4>>2],c[g+8>>2]=c[b+8>>2],c[g+12>>2]=c[b+12>>2],JE(k,f,g,1.0,d),+h[k+24>>3]>=+h[e+8>>3]):0)f=1;else f=0;l=m;return f|0}function _M(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;g=l;l=l+16|0;f=g;a:do if((b|0)!=0?(e=a[b>>0]|0,e<<24>>24!=0):0){do switch(e<<24>>24|0){case 48:{d=2;break a}case 57:case 56:case 55:case 54:case 53:case 52:case 51:case 50:case 49:{d=10;break a}case 67:case 99:{e=b+1|0;if(!(O$(e,106934)|0)){d=4;break a}if(!(O$(e,106940)|0)){d=12;break a}break}case 70:case 102:{if(!(O$(b+1|0,106948)|0)){d=2;break a}break}case 76:case 108:{if(!(O$(b+1|0,106953)|0)){d=2;break a}break}case 78:case 110:{e=b+1|0;if(!(O$(e,106957)|0)){d=0;break a}if(!(O$(e,106961)|0)){d=2;break a}break}case 79:case 111:{if(!(O$(b+1|0,106963)|0)){d=8;break a}break}case 80:case 112:{if(!(O$(b+1|0,106968)|0)){d=6;break a}break}case 83:case 115:{if(!(O$(b+1|0,106976)|0)){d=10;break a}break}case 84:case 116:{if(!(O$(b+1|0,106982)|0)){d=10;break a}break}case 89:case 121:{if(!(O$(b+1|0,106986)|0)){d=10;break a}break}default:{}}while(0);c[f>>2]=b;Pw(0,106989,f)|0}while(0);l=g;return d|0}function $M(d,f){d=d|0;f=f|0;var g=0;g=xx(d,107030)|0;if(g)if(!(a[g>>0]|0))f=0;else f=_M(g,f)|0;d=(c[d+16>>2]|0)+136|0;b[d>>1]=f|e[d>>1];return}function aN(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;var f=0.0,g=0.0,i=0.0,j=0.0,k=0.0,m=0,n=0,o=0.0,p=0,q=0.0,r=0,s=0.0,t=0,u=0,v=0,w=0;v=l;l=l+32|0;p=v+16|0;r=v;t=e&1;u=e&2;a:do if((c|0)==2){s=+h[a+16>>3];f=+h[a>>3];j=+h[a+24>>3];i=+h[a+8>>3];f=f-(s-f);h[p>>3]=f;h[r>>3]=s;i=i-(j-i);h[p+8>>3]=i;h[r+8>>3]=j}else{g=+h[a>>3];h[r>>3]=g;h[p>>3]=g;j=+h[a+8>>3];m=r+8|0;h[m>>3]=j;n=p+8|0;h[n>>3]=j;e=0;f=g;i=j;while(1){if((e|0)>=(c|0)){s=g;break a}w=a+(e<<4)|0;q=+h[w>>3];k=+h[(q>3];h[p>>3]=k;s=+h[a+(e<<4)+8>>3];o=+h[(s>3];h[n>>3]=o;q=+h[(q>g?w:r)>>3];h[r>>3]=q;s=+h[(s>j?w:r)+8>>3];h[m>>3]=s;e=e+1|0;f=k;i=o;g=q;j=s}}while(0);g=(s-f)*.5;q=g+f;o=(j-i)*.5;k=o+i;if(!t){f=j-k;j=d;i=+F(+j);j=+E(+j);if(!u){g=i*f-k;f=-k-o*i}else{f=i*f;g=k-f;f=f+k}h[b+8>>3]=g;h[b+24>>3]=f;d=j*(s-q);h[b>>3]=q-d;h[b+16>>3]=d+q}else{d=+C(+(o*o+g*g));h[b+8>>3]=u|0?k:-k;h[b>>3]=q;h[b+16>>3]=d*.25;h[b+24>>3]=d}l=v;return}function bN(a,b){a=a|0;b=b|0;var d=0.0,e=0,f=0;e=a+16|0;f=c[e>>2]|0;if(!(b<<24>>24)){d=+h[f+32>>3]*36.0;h[f+88>>3]=d;a=f+40|0}else{d=+h[f+40>>3]*36.0;h[f+88>>3]=d;a=f+32|0}h[f+96>>3]=d;h[(c[e>>2]|0)+80>>3]=+h[a>>3]*72.0;return}function cN(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,A=0;y=l;l=l+16|0;j=y+8|0;x=4;w=C_(40)|0;c[w>>2]=0;s=y;o=0;e=$(29,b|0)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){g=E3(c[f>>2]|0,w|0,x|0)|0;if(!g)bb(f|0,p|0);z=p}else g=-1;a:do if((g|0)!=1){o=0;v=$(23,e<<3|0)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){e=E3(c[f>>2]|0,w|0,x|0)|0;if(!e)bb(f|0,p|0);z=p}else e=-1;if((e|0)!=1){if(!(a[191874]|0))t=0;else{o=0;e=_(3)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){g=E3(c[f>>2]|0,w|0,x|0)|0;if(!g)bb(f|0,p|0);z=p}else g=-1;if((g|0)==1){n=0;k=0;m=0;j=0;i=0;d=v;h=v;e=z;g=0;u=74;break}t=e}o=0;e=aa(95,b|0,107038)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){g=E3(c[f>>2]|0,w|0,x|0)|0;if(!g)bb(f|0,p|0);z=p}else g=-1;if((g|0)!=1){c[46553]=0;b:do if(e|0?(i=a[e>>0]|0,i<<24>>24):0){h=e;f=i;g=0;while(1){i=h+1|0;if(!(f<<24>>24))break b;switch(f<<24>>24|0){case 99:{e=8;u=16;break}case 105:{e=18;u=16;break}case 109:{e=1;u=16;break}case 114:{e=4;u=16;break}case 115:{e=2;u=16;break}default:e=g}if((u|0)==16){u=0;e=g|e;c[46553]=e}h=i;f=a[i>>0]|0;g=e}}while(0);if(d|0){o=0;ca(20,0,107042,j|0)|0;e=o;o=0;if((e|0)!=0&(p|0)!=0){f=E3(c[e>>2]|0,w|0,x|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)==1){n=0;k=t;m=0;j=0;i=0;d=v;h=v;e=z;g=0;u=74;break}}o=0;r=aa(96,b|0,0)|0;e=o;o=0;if((e|0)!=0&(p|0)!=0){f=E3(c[e>>2]|0,w|0,x|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)!=1){m=c[r+16>>2]|0;if(c[46553]&2|0){o=0;ja(26,c[15686]|0,m|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=E3(c[e>>2]|0,w|0,x|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)==1){n=0;k=t;m=0;j=0;i=r;d=v;h=v;e=z;g=0;u=74;break}}o=0;g=$(25,b|0)|0;e=o;o=0;if((e|0)!=0&(p|0)!=0){f=E3(c[e>>2]|0,w|0,x|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)!=1){n=0;while(1){if(!g)break;o=0;e=aa(97,b|0,g|0)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){h=E3(c[f>>2]|0,w|0,x|0)|0;if(!h)bb(f|0,p|0);z=p}else h=-1;if((h|0)==1){k=t;m=0;j=0;i=r;d=v;h=v;e=z;g=0;u=74;break a}i=n;while(1){if(!e)break;if(!((c[46363]|0)==2?(c[(c[e+16>>2]|0)+8>>2]|0)!=0:0))u=32;c:do if((u|0)==32){u=0;do if(a[191874]|0){k=c[e>>2]&3;j=(c[c[((k|0)==3?e:e+48|0)+40>>2]>>2]|0)>>>4;k=(c[c[((k|0)==2?e:e+-48|0)+40>>2]>>2]|0)>>>4;if(j>>>0>k>>>0){o=0;f=ca(31,t|0,k|0,j|0)|0;h=o;o=0;if((h|0)!=0&(p|0)!=0){d=E3(c[h>>2]|0,w|0,x|0)|0;if(!d)bb(h|0,p|0);z=p}else d=-1;if((d|0)==1){k=t;m=0;j=0;i=r;d=v;h=v;e=z;g=0;u=74;break a}if(f|0)break c;o=0;ka(64,t|0,k|0,j|0);f=o;o=0;if((f|0)!=0&(p|0)!=0){h=E3(c[f>>2]|0,w|0,x|0)|0;if(!h)bb(f|0,p|0);z=p}else h=-1;if((h|0)==1){k=t;m=0;j=0;i=r;d=v;h=v;e=z;g=0;u=74;break a}break}else{o=0;f=ca(31,t|0,j|0,k|0)|0;h=o;o=0;if((h|0)!=0&(p|0)!=0){d=E3(c[h>>2]|0,w|0,x|0)|0;if(!d)bb(h|0,p|0);z=p}else d=-1;if((d|0)==1){k=t;m=0;j=0;i=r;d=v;h=v;e=z;g=0;u=74;break a}if(f|0)break c;o=0;ka(64,t|0,j|0,k|0);f=o;o=0;if((f|0)!=0&(p|0)!=0){h=E3(c[f>>2]|0,w|0,x|0)|0;if(!h)bb(f|0,p|0);z=p}else h=-1;if((h|0)==1){k=t;m=0;j=0;i=r;d=v;h=v;e=z;g=0;u=74;break a}break}}while(0);c[v+(i<<3)+4>>2]=e;o=0;d=$(30,e|0)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){h=E3(c[f>>2]|0,w|0,x|0)|0;if(!h)bb(f|0,p|0);z=p}else h=-1;if((h|0)==1){k=t;m=0;j=0;i=r;d=v;h=v;e=z;g=0;u=74;break a}c[v+(i<<3)>>2]=d;i=i+1|0}while(0);o=0;e=aa(98,b|0,e|0)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){h=E3(c[f>>2]|0,w|0,x|0)|0;if(!h)bb(f|0,p|0);z=p}else h=-1;if((h|0)==1){k=t;m=0;j=0;i=r;d=v;h=v;e=z;g=0;u=74;break a}}o=0;g=aa(84,b|0,g|0)|0;e=o;o=0;if((e|0)!=0&(p|0)!=0){f=E3(c[e>>2]|0,w|0,x|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)==1){k=t;m=0;j=0;i=r;d=v;h=v;e=z;g=0;u=74;break a}n=i}o=0;j=$(31,n<<3|0)|0;e=o;o=0;if((e|0)!=0&(p|0)!=0){f=E3(c[e>>2]|0,w|0,x|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)!=1){o=0;ma(28,v|0,n|0,8,99);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=E3(c[e>>2]|0,w|0,x|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)!=1){g=c[m>>2]|0;o=0;ia(107,g+2|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=E3(c[e>>2]|0,w|0,x|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)!=1){i=c[m+16>>2]|0;d=i+(g*40|0)|0;i=i+((g+1|0)*40|0)|0;q=c[15686]|0;h=0;while(1){if((h|0)>=(n|0))break;if((h|0)>0?c[46553]&16|0:0){o=0;ja(26,q|0,m|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=E3(c[e>>2]|0,w|0,x|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)==1){k=t;m=j;i=r;d=v;h=v;e=z;g=q;u=74;break a}}e=c[v+(h<<3)+4>>2]|0;k=c[e>>2]&3;g=c[(c[(c[((k|0)==3?e:e+48|0)+40>>2]|0)+16>>2]|0)+112>>2]|0;e=c[(c[(c[((k|0)==2?e:e+-48|0)+40>>2]|0)+16>>2]|0)+112>>2]|0;if((g|0)==(e|0)){o=0;ma(29,m|0,g|0,i|0,d|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=E3(c[e>>2]|0,w|0,x|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)==1){k=t;m=j;i=r;d=v;h=v;e=z;g=q;u=74;break a}}else{o=0;ka(65,m|0,e|0,i|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=E3(c[e>>2]|0,w|0,x|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)==1){k=t;m=j;i=r;d=v;h=v;e=z;g=q;u=74;break a}o=0;ka(65,m|0,g|0,d|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=E3(c[e>>2]|0,w|0,x|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)==1){k=t;m=j;i=r;d=v;h=v;e=z;g=q;u=74;break a}}o=0;e=ca(32,m|0,i|0,d|0)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){g=E3(c[f>>2]|0,w|0,x|0)|0;if(!g)bb(f|0,p|0);z=p}else g=-1;if((g|0)==1){k=t;m=j;i=r;d=v;h=v;e=z;g=q;u=74;break a}if(e|0){k=t;m=j;i=r;d=v;h=v;break a}e=j+(h<<3)|0;o=0;ma(30,s|0,m|0,d|0,i|0);f=o;o=0;if((f|0)!=0&(p|0)!=0){g=E3(c[f>>2]|0,w|0,x|0)|0;if(!g)bb(f|0,p|0);z=p}else g=-1;if((g|0)==1){k=t;m=j;i=r;d=v;h=v;e=z;g=q;u=74;break a}g=s;k=c[g+4>>2]|0;c[e>>2]=c[g>>2];c[e+4>>2]=k;o=0;ia(108,m|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=E3(c[e>>2]|0,w|0,x|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)==1){k=t;m=j;i=r;d=v;h=v;e=z;g=q;u=74;break a}h=h+1|0}o=0;ha(8);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=E3(c[e>>2]|0,w|0,x|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)!=1){o=0;e=$(32,r|0)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){g=E3(c[f>>2]|0,w|0,x|0)|0;if(!g)bb(f|0,p|0);z=p}else g=-1;if((g|0)!=1){c[r+20>>2]=e;o=0;e=$(33,r|0)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){g=E3(c[f>>2]|0,w|0,x|0)|0;if(!g)bb(f|0,p|0);z=p}else g=-1;if((g|0)!=1){c[r+24>>2]=e;o=0;ka(66,n|0,j|0,r|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=E3(c[e>>2]|0,w|0,x|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)!=1){w=D3(186216,1,w|0,x|0)|0;x=z;o=0;e=o;o=0;if((e|0)!=0&(p|0)!=0){f=E3(c[e>>2]|0,w|0,x|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)!=1){k=t;m=j;i=r;d=v;h=v;e=0;g=q;u=74}else{k=t;m=j;i=r;d=v;h=v;e=z;g=q;u=74}}else{k=t;m=j;i=r;d=v;h=v;e=z;g=q;u=74}}else{k=t;m=j;i=r;d=v;h=v;e=z;g=q;u=74}}else{k=t;m=j;i=r;d=v;h=v;e=z;g=q;u=74}}else{k=t;m=j;i=r;d=v;h=v;e=z;g=q;u=74}}else{k=t;m=j;i=r;d=v;h=v;e=z;g=0;u=74}}else{k=t;m=j;i=r;d=v;h=v;e=z;g=0;u=74}}else{k=t;m=0;i=r;d=v;h=v;e=z;g=0;u=74}}else{n=0;k=t;m=0;j=0;i=r;d=v;h=v;e=z;g=0;u=74}}else{n=0;k=t;m=0;j=0;i=r;d=v;h=v;e=z;g=0;u=74}}else{n=0;k=t;m=0;j=0;i=0;d=v;h=v;e=z;g=0;u=74}}else{n=0;k=0;m=0;j=0;i=0;d=0;h=v;e=z;g=0;u=74}}else{n=0;k=0;m=0;j=0;i=0;d=0;h=0;e=z;g=0;u=74}while(0);d:while(1){if((u|0)==74){u=0;if(e|0){q=g;continue}o=0;ia(109,i|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=E3(c[e>>2]|0,w|0,x|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)==1){A=g;f=h;q=d;r=i;s=j;t=m;v=k;u=n;e=z;g=A;h=f;d=q;i=r;j=s;m=t;k=v;n=u;u=74;continue}if(c[46553]&4|0){o=0;na(8,g|0,i|0,n|0,m|0,d|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=E3(c[e>>2]|0,w|0,x|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)==1){f=g;q=h;r=d;s=i;t=j;v=m;A=k;u=n;e=z;g=f;h=q;d=r;i=s;j=t;m=v;k=A;n=u;u=74;continue}}o=0;oa(10,b|0,i|0,n|0,m|0,d|0,0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=E3(c[e>>2]|0,w|0,x|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)==1){f=g;q=h;r=d;s=i;t=j;v=m;A=k;u=n;e=z;g=f;h=q;d=r;i=s;j=t;m=v;k=A;n=u;u=74;continue}q=g}if(!(a[191874]|0))e=0;else{o=0;ia(110,k|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=E3(c[e>>2]|0,w|0,x|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)==1){e=z;g=q;u=74;continue}e=0}while(1){if((e|0)>=(n|0))break;o=0;ia(103,c[m+(e<<3)+4>>2]|0);f=o;o=0;if((f|0)!=0&(p|0)!=0){g=E3(c[f>>2]|0,w|0,x|0)|0;if(!g)bb(f|0,p|0);z=p}else g=-1;if((g|0)==1){e=z;g=q;u=74;continue d}e=e+1|0}o=0;ia(103,j|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=E3(c[e>>2]|0,w|0,x|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)==1){e=z;g=q;u=74;continue}o=0;ia(111,i|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=E3(c[e>>2]|0,w|0,x|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)==1){e=z;g=q;u=74;continue}o=0;ia(103,h|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=E3(c[e>>2]|0,w|0,x|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)==1){e=z;g=q;u=74}else break}D_(w|0);l=y;return}function dN(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0.0;q=l;l=l+64|0;p=q+32|0;o=q+16|0;j=q;k=q+48|0;D1(107909,a)|0;D1(107920,a)|0;m=b+16|0;n=j+8|0;i=k+4|0;g=0;while(1){if((g|0)>=(c[b>>2]|0))break;d=c[m>>2]|0;e=c[d+(g*40|0)+20>>2]|0;f=c[d+(g*40|0)+24>>2]|0;if((e|0)==(f|0)){YN(j,e);d=~~+h[j>>3];e=~~+h[n>>3]}else{_N(k,(c[e>>2]&1|0)==0?e:f,d+(g*40|0)|0);d=c[k>>2]|0;e=c[i>>2]|0}c[o>>2]=g;c[o+4>>2]=d;c[o+8>>2]=e;g1(a,107940,o)|0;g=g+1|0}f=b+4|0;e=b+20|0;d=0;while(1){if((d|0)>=(c[f>>2]|0))break;o=c[e>>2]|0;b=c[o+(d*24|0)+16>>2]|0;r=+h[o+(d*24|0)>>3];c[p>>2]=c[o+(d*24|0)+12>>2];c[p+4>>2]=b;h[p+8>>3]=r;g1(a,107960,p)|0;d=d+1|0}D1(107982,a)|0;l=q;return}function eN(a){a=a|0;var b=0.0,d=0.0,e=0,f=0;f=c[a>>2]&3;e=c[(c[((f|0)==3?a:a+48|0)+40>>2]|0)+16>>2]|0;a=c[(c[((f|0)==2?a:a+-48|0)+40>>2]|0)+16>>2]|0;b=+h[e+16>>3]-+h[a+16>>3];d=+h[e+24>>3]-+h[a+24>>3];return ~~(d*d+b*b)|0}function fN(a,b){a=a|0;b=b|0;return (c[a>>2]|0)-(c[b>>2]|0)|0}function gN(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+32|0;j=n;YN(n+16|0,d);k=d+32|0;m=d+36|0;g=0;while(1){if((g|0)>=(c[k>>2]|0))break;h=c[(c[m>>2]|0)+(g<<2)>>2]|0;do if(!(a[h+36>>0]|0)){i=c[h+20>>2]|0;if((i|0)==(d|0)){WN(j,h,c[h+24>>2]|0);pO(b,f,h,0.0)|0;break}else{WN(j,h,i);pO(b,e,h,0.0)|0;break}}while(0);g=g+1|0}c[b>>2]=(c[b>>2]|0)+2;l=n;return}function hN(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=l;l=l+32|0;h=k;YN(k+16|0,b);i=b+32|0;j=b+36|0;f=0;while(1){if((f|0)>=(c[i>>2]|0))break;g=c[(c[j>>2]|0)+(f<<2)>>2]|0;e=c[g+20>>2]|0;if((e|0)==(b|0))e=c[g+24>>2]|0;WN(h,g,e);pO(a,d,g,0.0)|0;f=f+1|0}c[a>>2]=(c[a>>2]|0)+1;c[d+24>>2]=b;c[d+20>>2]=b;l=k;return}function iN(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0,k=0.0,m=0.0,n=0,o=0.0,p=0.0,q=0,r=0,s=0,t=0,u=0,v=0,w=0.0,x=0.0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;H=l;l=l+128|0;C=H+64|0;n=H+48|0;D=H+32|0;E=H+16|0;F=H;g=0;i=e;while(1){if(!i)break;g=g+1|0;i=c[i+8>>2]|0}B=uH((g*56|0)+-112|0)|0;c[C+52>>2]=0;c[C+48>>2]=0;A=e+8|0;e=c[A>>2]|0;i=c[e+8>>2]|0;g=c[e+20>>2]|0;if(c[g>>2]&1)g=c[e+24>>2]|0;WN(n,e,g);j=e;q=e;p=0.0;o=+h[n>>3];z=0;m=0.0;x=+h[n+8>>3];while(1){y=i+8|0;if(!(c[y>>2]|0))break;v=XN(j,i)|0;NR(d,v,c[q+12>>2]|0);t=q+36|0;u=i+36|0;if((a[t>>0]|0)==(a[u>>0]|0))if((c[y>>2]|0)==(f|0)){WN(E,i,v);e=E;G=12}else{j=q;e=z;k=x}else{YN(D,v);e=D;G=12}if((G|0)==12){G=0;w=+h[e>>3];k=+h[e+8>>3];e=a[t>>0]|0;s=e<<24>>24==0;r=(q|0)==(c[A>>2]|0);if(s){if(!(a[u>>0]|0))e=0;else e=(c[i+20>>2]|0)==(v|0)?4:2;n=v+48|0;q=g+48|0;j=g+40|0;g=r?0:p>o?4:2}else{if(e<<24>>24==(a[u>>0]|0))e=0;else e=(c[i+20>>2]|0)==(v|0)?1:3;n=v+40|0;q=g+40|0;j=g+48|0;g=r?0:m>x?1:3}ZN(C,s&1,+h[j>>3],+h[q>>3],+h[n>>3],g,e);q=z+1|0;g=B+(z*56|0)|0;e=C;j=g+56|0;do{c[g>>2]=c[e>>2];g=g+4|0;e=e+4|0}while((g|0)<(j|0));if((a[t>>0]|0)!=(a[u>>0]|0)?(c[y>>2]|0)==(f|0):0){WN(F,i,v);n=(a[u>>0]|0)==0;e=v+40|0;g=v+48|0;p=+h[(n?g:e)>>3];ZN(C,n&1,+h[(n?e:g)>>3],p,p,n?(o>w?4:2):x>k?1:3,0);n=z+2|0;g=B+(q*56|0)|0;e=C;j=g+56|0;do{c[g>>2]=c[e>>2];g=g+4|0;e=e+4|0}while((g|0)<(j|0));g=v;j=i;p=o;o=w;e=n;m=x}else{g=v;j=i;p=o;o=w;e=q;m=x}}v=i;i=c[y>>2]|0;q=j;z=e;x=k;j=v}i=F_(B,z*56|0)|0;e=z+-1|0;g=0;while(1){if((g|0)>=(z|0))break;if((g|0)>0)c[i+(g*56|0)+48>>2]=i+((g+-1|0)*56|0);if((g|0)<(e|0)){G=g+1|0;c[i+(g*56|0)+52>>2]=i+(G*56|0);g=G;continue}else{g=g+1|0;continue}}c[b>>2]=z;c[b+4>>2]=i;l=H;return}function jN(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,i=0,j=0,k=0;j=Cw(25588,c[4555]|0)|0;k=a+8|0;i=0;while(1){if((i|0)>=(c[a>>2]|0))break;b=(c[k>>2]|0)+(i*72|0)|0;if(!(c[b>>2]&4)){while(1){d=c[(c[b+36>>2]|0)+8>>2]|0;if(!d)break;d=c[d+20>>2]|0;if(!d)break;if(!(c[d>>2]&1))b=d;else break}g=uH(40)|0;c[g+36>>2]=b;h[g+8>>3]=+h[b+40>>3];f=b;d=c[b>>2]|0;while(1){c[f>>2]=d|4;d=c[c[f+36>>2]>>2]|0;if(!d)break;e=c[d+24>>2]|0;if(!e)break;d=c[e>>2]|0;if(d&1|0)break;else f=e}h[g+16>>3]=+h[f+56>>3];RN(j,g,+h[b+48>>3])}i=i+1|0}return j|0}function kN(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,i=0,j=0,k=0;j=Cw(25588,c[4555]|0)|0;k=a+8|0;i=0;while(1){if((i|0)>=(c[a>>2]|0))break;b=(c[k>>2]|0)+(i*72|0)|0;if(!(c[b>>2]&2)){while(1){d=c[(c[b+36>>2]|0)+12>>2]|0;if(!d)break;d=c[d+20>>2]|0;if(!d)break;if(!(c[d>>2]&1))b=d;else break}g=uH(40)|0;c[g+36>>2]=b;h[g+8>>3]=+h[b+48>>3];f=b;d=c[b>>2]|0;while(1){c[f>>2]=d|2;d=c[(c[f+36>>2]|0)+4>>2]|0;if(!d)break;e=c[d+24>>2]|0;if(!e)break;d=c[e>>2]|0;if(d&1|0)break;else f=e}h[g+16>>3]=+h[f+64>>3];RN(j,g,+h[b+40>>3])}i=i+1|0}return j|0}function lN(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;j=e+20|0;i=e+24|0;e=0;while(1){if((e|0)>=(b|0))break;g=c[d+(e<<3)>>2]|0;h=c[d+(e<<3)+4>>2]|0;f=0;while(1){if((f|0)>=(g|0))break;k=h+(f*56|0)|0;QN(uN(c[((a[k>>0]|0)==0?j:i)>>2]|0,k)|0,k);f=f+1|0}e=e+1|0}return}function mN(a){a=a|0;var b=0,d=0;d=a+20|0;wN(c[d>>2]|0);b=a+24|0;wN(c[b>>2]|0);xN(c[d>>2]|0);xN(c[b>>2]|0);yN(c[d>>2]|0,a);yN(c[b>>2]|0,a);zN(c[d>>2]|0);zN(c[b>>2]|0);return}function nN(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0.0,B=0.0,C=0.0,D=0,E=0.0;z=l;l=l+224|0;n=z+176|0;m=z+208|0;x=z+160|0;y=z+128|0;k=z+96|0;t=z+64|0;u=z;o=z+32|0;v=u+8|0;h[v>>3]=1797693134862315708145274.0e284;h[u>>3]=1797693134862315708145274.0e284;w=u+24|0;h[w>>3]=-1797693134862315708145274.0e284;p=u+16|0;h[p>>3]=-1797693134862315708145274.0e284;D1(107157,a)|0;c[n>>2]=10;c[n+4>>2]=10;g1(a,107563,n)|0;D1(135183,a)|0;i=b+4|0;j=b+12|0;q=t+8|0;r=t+16|0;s=t+24|0;g=0;while(1){if((g|0)>=(c[i>>2]|0))break;D=(c[j>>2]|0)+(g*72|0)+40|0;c[t>>2]=c[D>>2];c[t+4>>2]=c[D+4>>2];c[t+8>>2]=c[D+8>>2];c[t+12>>2]=c[D+12>>2];c[t+16>>2]=c[D+16>>2];c[t+20>>2]=c[D+20>>2];c[t+24>>2]=c[D+24>>2];c[t+28>>2]=c[D+28>>2];C=+h[q>>3];B=+h[r>>3];A=+h[s>>3];h[k>>3]=+h[t>>3];h[k+8>>3]=C;h[k+16>>3]=B;h[k+24>>3]=A;g1(a,135202,k)|0;g=g+1|0}g=0;while(1){if((g|0)>=(d|0))break;D=c[f+(g<<3)+4>>2]|0;k=e+(g<<3)|0;c[m>>2]=c[k>>2];c[m+4>>2]=c[k+4>>2];c[n>>2]=c[u>>2];c[n+4>>2]=c[u+4>>2];c[n+8>>2]=c[u+8>>2];c[n+12>>2]=c[u+12>>2];c[n+16>>2]=c[u+16>>2];c[n+20>>2]=c[u+20>>2];c[n+24>>2]=c[u+24>>2];c[n+28>>2]=c[u+28>>2];vN(o,a,D,m,b,n);c[u>>2]=c[o>>2];c[u+4>>2]=c[o+4>>2];c[u+8>>2]=c[o+8>>2];c[u+12>>2]=c[o+12>>2];c[u+16>>2]=c[o+16>>2];c[u+20>>2]=c[o+20>>2];c[u+24>>2]=c[o+24>>2];c[u+28>>2]=c[o+28>>2];g=g+1|0}D1(107580,a)|0;i=b+8|0;g=0;while(1){if((g|0)>=(c[b>>2]|0))break;D=(c[i>>2]|0)+(g*72|0)+40|0;c[t>>2]=c[D>>2];c[t+4>>2]=c[D+4>>2];c[t+8>>2]=c[D+8>>2];c[t+12>>2]=c[D+12>>2];c[t+16>>2]=c[D+16>>2];c[t+20>>2]=c[D+20>>2];c[t+24>>2]=c[D+24>>2];c[t+28>>2]=c[D+28>>2];E=+h[t>>3];A=+h[q>>3];B=+h[r>>3];C=+h[s>>3];h[y>>3]=E;h[y+8>>3]=A;h[y+16>>3]=B;h[y+24>>3]=C;g1(a,135239,y)|0;h[u>>3]=+h[(+h[u>>3]>3];h[v>>3]=+h[(+h[v>>3]>3];h[p>>3]=+h[(+h[p>>3]>B?u:t)+16>>3];h[w>>3]=+h[(+h[w>>3]>C?u:t)+24>>3];g=g+1|0}v=~~(+h[v>>3]+10.0);y=~~(+h[p>>3]+10.0);D=~~(+h[w>>3]+10.0);c[x>>2]=~~(+h[u>>3]+10.0);c[x+4>>2]=v;c[x+8>>2]=y;c[x+12>>2]=D;g1(a,107605,x)|0;l=z;return}function oN(b,d,e,f,g,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;var j=0.0,k=0.0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0;N=l;l=l+112|0;F=N+88|0;E=N+72|0;M=N+32|0;I=N+16|0;J=N;K=N+56|0;L=N+40|0;G=c[15686]|0;w=(i|0)==0;x=J+8|0;y=I+8|0;v=0;m=0;n=0;o=0;p=0;i=0;while(1){if((v|0)>=(e|0))break;z=c[g+(v<<3)+4>>2]|0;A=z+48|0;u=(c[(c[((c[z>>2]&3|0)==3?z:A)+40>>2]|0)+16>>2]|0)+16|0;B=z+16|0;C=(c[B>>2]|0)+16|0;c[E>>2]=c[u>>2];c[E+4>>2]=c[u+4>>2];c[E+8>>2]=c[u+8>>2];c[E+12>>2]=c[u+12>>2];c[F>>2]=c[C>>2];c[F+4>>2]=c[C+4>>2];c[F+8>>2]=c[C+8>>2];c[F+12>>2]=c[C+12>>2];pN(K,E,F);c[I>>2]=c[K>>2];c[I+4>>2]=c[K+4>>2];c[I+8>>2]=c[K+8>>2];c[I+12>>2]=c[K+12>>2];C=z+-48|0;u=(c[(c[((c[z>>2]&3|0)==2?z:C)+40>>2]|0)+16>>2]|0)+16|0;t=(c[B>>2]|0)+56|0;c[E>>2]=c[u>>2];c[E+4>>2]=c[u+4>>2];c[E+8>>2]=c[u+8>>2];c[E+12>>2]=c[u+12>>2];c[F>>2]=c[t>>2];c[F+4>>2]=c[t+4>>2];c[F+8>>2]=c[t+8>>2];c[F+12>>2]=c[t+12>>2];pN(L,E,F);c[J>>2]=c[L>>2];c[J+4>>2]=c[L+4>>2];c[J+8>>2]=c[L+8>>2];c[J+12>>2]=c[L+12>>2];t=c[f+(v<<3)>>2]|0;u=c[f+(v<<3)+4>>2]|0;s=t*3|0;D=s+1|0;if((s|0)>=(n|0)){if(m|0)D_(i);p=vH(D<<4)|0;m=p;n=D;o=p;i=p}if(!(a[u>>0]|0)){k=+(rN(u,d)|0);j=+h[I>>3]}else{j=+qN(u,d);k=+h[y>>3]}r=m+16|0;h[m+16>>3]=j;h[m+24>>3]=k;c[p>>2]=c[r>>2];c[p+4>>2]=c[r+4>>2];c[p+8>>2]=c[r+8>>2];c[p+12>>2]=c[r+12>>2];r=1;q=u;s=2;while(1){if((r|0)>=(t|0))break;q=u+(r*56|0)|0;if(!(a[q>>0]|0))k=+(rN(q,d)|0);else j=+qN(q,d);O=m+(s+2<<4)|0;Q=m+(s+1<<4)|0;P=m+(s<<4)|0;h[P>>3]=j;h[m+(s<<4)+8>>3]=k;c[Q>>2]=c[P>>2];c[Q+4>>2]=c[P+4>>2];c[Q+8>>2]=c[P+8>>2];c[Q+12>>2]=c[P+12>>2];c[O>>2]=c[P>>2];c[O+4>>2]=c[P+4>>2];c[O+8>>2]=c[P+8>>2];c[O+12>>2]=c[P+12>>2];r=r+1|0;s=s+3|0}if(!(a[q>>0]|0)){k=+(rN(q,d)|0);j=+h[J>>3]}else{j=+qN(q,d);k=+h[x>>3]}Q=m+(s<<4)|0;O=s+1|0;P=m+(O<<4)|0;h[P>>3]=j;h[m+(O<<4)+8>>3]=k;c[Q>>2]=c[P>>2];c[Q+4>>2]=c[P+4>>2];c[Q+8>>2]=c[P+8>>2];c[Q+12>>2]=c[P+12>>2];if(0>1){P=ry(c[((c[z>>2]&3|0)==3?z:A)+40>>2]|0)|0;Q=ry(c[((c[z>>2]&3|0)==2?z:C)+40>>2]|0)|0;c[M>>2]=P;c[M+4>>2]=Q;g1(G,107116,M)|0}QK(z,c[((c[z>>2]&3|0)==2?z:C)+40>>2]|0,m,D,25576);if((!w?(H=c[(c[B>>2]|0)+96>>2]|0,H|0):0)?(a[H+81>>0]|0)==0:0){c[E>>2]=c[I>>2];c[E+4>>2]=c[I+4>>2];c[E+8>>2]=c[I+8>>2];c[E+12>>2]=c[I+12>>2];c[F>>2]=c[J>>2];c[F+4>>2]=c[J+4>>2];c[F+8>>2]=c[J+8>>2];c[F+12>>2]=c[J+12>>2];jL(b,z,E,F)}v=v+1|0}D_(o);l=N;return}function pN(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;h[b>>3]=+h[b>>3]+ +h[d>>3];e=b+8|0;h[e>>3]=+h[e>>3]+ +h[d+8>>3];c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];return}function qN(a,b){a=a|0;b=b|0;var d=0.0,e=0;b=uN(c[b+24>>2]|0,a)|0;e=c[b+36>>2]|0;d=+h[e+40>>3];return +((+h[e+56>>3]-d)*(+(c[a+44>>2]|0)/+((c[b+24>>2]|0)+1|0))+d)}function rN(a,b){a=a|0;b=b|0;var d=0.0,e=0;e=uN(c[b+20>>2]|0,a)|0;b=c[e+36>>2]|0;d=+h[b+48>>3];return ~~((1.0-+(c[a+44>>2]|0)/+((c[e+24>>2]|0)+1|0))*(+h[b+64>>3]-d)+d)|0}function sN(a){a=a|0;return 0}function tN(a){a=a|0;return 0}function uN(a,b){a=a|0;b=b|0;a=nb[c[a>>2]&63](a,b+8|0,512)|0;if(!a)qa(107129,107135,423,107143);a=c[a+16>>2]|0;a=nb[c[a>>2]&63](a,b+16|0,512)|0;if(!a)qa(107154,107135,425,107143);else return a|0;return 0}function vN(b,d,e,f,g,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;var j=0,k=0.0,m=0,n=0,o=0,p=0.0,q=0.0,r=0.0,s=0.0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0.0,C=0.0,D=0.0;z=l;l=l+32|0;y=z+16|0;u=z+8|0;m=z;j=c[(c[(c[((c[e>>2]&3|0)==3?e:e+48|0)+40>>2]|0)+16>>2]|0)+112>>2]|0;t=c[f+4>>2]|0;if(!(a[t>>0]|0)){k=+h[j+56>>3];s=+h[j+40>>3];j=rN(t,g)|0;k=(s+k)*.5}else{k=+h[j+64>>3];s=+h[j+48>>3];j=~~((s+k)*.5);k=+qN(t,g)}A=~~k;p=+h[i>>3];r=+(A|0);p=p>3]=p;v=i+8|0;q=+h[v>>3];s=+(j|0);q=q>3]=q;w=i+16|0;k=+h[w>>3];r=k>r?k:r;h[w>>3]=r;x=i+24|0;k=+h[x>>3];s=k>s?k:s;h[x>>3]=s;c[m>>2]=A;c[m+4>>2]=j;g1(d,107656,m)|0;o=c[f>>2]|0;m=t;n=1;f=A;while(1){if((n|0)>=(o|0))break;m=t+(n*56|0)|0;if(!(a[m>>0]|0))j=rN(m,g)|0;else f=~~+qN(m,g);B=+(f|0);D=p>3]=D;k=+(j|0);C=q>3]=C;B=r>B?r:B;h[w>>3]=B;k=s>k?s:k;h[x>>3]=k;c[u>>2]=f;c[u+4>>2]=j;g1(d,107678,u)|0;n=n+1|0;p=D;q=C;r=B;s=k}j=c[(c[(c[((c[e>>2]&3|0)==2?e:e+-48|0)+40>>2]|0)+16>>2]|0)+112>>2]|0;if(!(a[m>>0]|0)){k=+h[j+56>>3];D=+h[j+40>>3];j=rN(m,g)|0;k=(D+k)*.5}else{k=+h[j+64>>3];D=+h[j+48>>3];j=~~((D+k)*.5);k=+qN(m,g)}A=~~k;C=+(A|0);h[i>>3]=p>3]=q>3]=r>C?r:C;h[x>>3]=s>D?s:D;c[y>>2]=A;c[y+4>>2]=j;g1(d,107692,y)|0;c[b>>2]=c[i>>2];c[b+4>>2]=c[i+4>>2];c[b+8>>2]=c[i+8>>2];c[b+12>>2]=c[i+12>>2];c[b+16>>2]=c[i+16>>2];c[b+20>>2]=c[i+20>>2];c[b+24>>2]=c[i+24>>2];c[b+28>>2]=c[i+28>>2];l=z;return}function wN(a){a=a|0;var b=0;a=Aw(a)|0;while(1){if(!a)break;b=Aw(c[a+16>>2]|0)|0;while(1){if(!b)break;c[b+32>>2]=$N(c[b+24>>2]|0)|0;b=c[b>>2]|0}a=c[a>>2]|0}return}function xN(a){a=a|0;var b=0;a=Aw(a)|0;while(1){if(!a)break;b=Aw(c[a+16>>2]|0)|0;while(1){if(!b)break;if(c[b+24>>2]|0)PN(b);b=c[b>>2]|0}a=c[a>>2]|0}return}function yN(a,b){a=a|0;b=b|0;var d=0;d=Aw(a)|0;while(1){if(!d)break;a=Aw(c[d+16>>2]|0)|0;while(1){if(!a)break;DN(a,b);a=c[a>>2]|0}d=c[d>>2]|0}return}function zN(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,i=0;e=Aw(a)|0;while(1){if(!e)break;i=e+8|0;f=Aw(c[e+16>>2]|0)|0;while(1){if(!f)break;a=f+24|0;a:do if(c[a>>2]|0){if(c[46553]&8|0)AN(f,~~+h[i>>3]);g=f+32|0;eO(c[g>>2]|0);b=c[a>>2]|0;d=f+28|0;a=0;while(1){if((a|0)>=(b|0))break a;c[(c[(c[d>>2]|0)+(a<<2)>>2]|0)+44>>2]=(c[(c[(c[g>>2]|0)+4>>2]|0)+(a*12|0)+4>>2]|0)+1;a=a+1|0}}while(0);f=c[f>>2]|0}e=c[e>>2]|0}return}function AN(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0.0,m=0.0;j=l;l=l+32|0;d=j;g=a+24|0;a:do if((c[g>>2]|0)>=2){i=c[15686]|0;m=+h[a+8>>3];k=+h[a+16>>3];c[d>>2]=b;h[d+8>>3]=m;h[d+16>>3]=k;g1(i,107713,d)|0;f=a+32|0;a=a+28|0;b=0;while(1){if((b|0)>=(c[g>>2]|0))break a;e=c[(c[(c[f>>2]|0)+4>>2]|0)+(b*12|0)+8>>2]|0;b:do if(Ew(e)|0){BN(i,c[(c[a>>2]|0)+(b<<2)>>2]|0);D1(107733,i)|0;d=nb[c[e>>2]&63](e,0,128)|0;while(1){if(!d)break b;D1(107738,i)|0;BN(i,c[(c[a>>2]|0)+(c[d>>2]<<2)>>2]|0);D1(150517,i)|0;d=nb[c[e>>2]&63](e,d,8)|0}}while(0);b=b+1|0}}while(0);l=j;return}function BN(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0.0,k=0.0,m=0.0;g=l;l=l+80|0;f=g+40|0;e=g;if(!(a[d>>0]|0)){m=+h[d+16>>3];j=+h[d+8>>3];k=+h[d+24>>3];i=CN(c[d+32>>2]|0)|0;e=CN(c[d+36>>2]|0)|0;h[f>>3]=m;h[f+8>>3]=j;h[f+16>>3]=k;h[f+24>>3]=j;c[f+32>>2]=i;c[f+36>>2]=e;g1(b,107744,f)|0}else{k=+h[d+8>>3];j=+h[d+16>>3];m=+h[d+24>>3];f=CN(c[d+32>>2]|0)|0;i=CN(c[d+36>>2]|0)|0;h[e>>3]=k;h[e+8>>3]=j;h[e+16>>3]=k;h[e+24>>3]=m;c[e+32>>2]=f;c[e+36>>2]=i;g1(b,107744,e)|0}l=g;return}function CN(a){a=a|0;switch(a|0){case 0:{a=107795;break}case 1:{a=107790;break}case 2:{a=107783;break}case 3:{a=107776;break}case 4:{a=107768;break}default:a=0}return a|0}function DN(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;w=l;l=l+16|0;r=w+8|0;t=w;u=c[a+32>>2]|0;v=c[a+28>>2]|0;p=a+24|0;m=r+4|0;n=t+4|0;j=0;a=c[p>>2]|0;a:while(1){q=j+1|0;if((q|0)>=(a|0))break;o=v+(j<<2)|0;k=q;while(1){if((k|0)>=(a|0)){j=q;continue a}b:do if(((dO(u,j,k)|0)==0?(dO(u,k,j)|0)==0:0)?(s=v+(k<<2)|0,EN(c[o>>2]|0,c[s>>2]|0)|0):0){f=c[o>>2]|0;a=c[f+48>>2]|0;i=c[s>>2]|0;d=c[i+48>>2]|0;e=(d|0)==0;if(a)if(e)a=1;else a=+h[a+8>>3]!=+h[d+8>>3];else a=e^1;g=a&1;FN(r,f,i,0,g);a=c[r>>2]|0;i=c[m>>2]|0;f=g^1;FN(t,c[o>>2]|0,c[s>>2]|0,1,f);d=c[t>>2]|0;e=c[n>>2]|0;switch(i|0){case -1:{GN(c[s>>2]|0,c[o>>2]|0,g,0,a,b);GN(c[s>>2]|0,c[o>>2]|0,f,1,d,b);if((e|0)!=1)break b;HN(c[o>>2]|0,c[s>>2]|0,f,b);break b}case 0:switch(e|0){case -1:{GN(c[s>>2]|0,c[o>>2]|0,g,0,a,b);GN(c[s>>2]|0,c[o>>2]|0,f,1,d,b);break b}case 0:{GN(c[o>>2]|0,c[s>>2]|0,0,g,a,b);GN(c[o>>2]|0,c[s>>2]|0,1,f,d,b);break b}case 1:{GN(c[o>>2]|0,c[s>>2]|0,0,g,a,b);GN(c[o>>2]|0,c[s>>2]|0,1,f,d,b);break b}default:break b}case 1:{GN(c[o>>2]|0,c[s>>2]|0,0,g,a,b);GN(c[o>>2]|0,c[s>>2]|0,1,f,d,b);if((e|0)!=-1)break b;HN(c[o>>2]|0,c[s>>2]|0,f,b);break b}default:break b}}while(0);k=k+1|0;a=c[p>>2]|0}}l=w;return}function EN(a,b){a=a|0;b=b|0;if(!(+h[a+8>>3]==+h[b+8>>3]))qa(107866,107135,843,107897);if((+h[a+16>>3]==+h[b+16>>3]?+h[a+24>>3]==+h[b+24>>3]:0)?(c[a+32>>2]|0)==(c[b+32>>2]|0):0)a=(c[a+36>>2]|0)==(c[b+36>>2]|0)&1;else a=0;return a|0}function FN(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;g=0;while(1){b=IN(b,e)|0;if(!b){h=0;break}d=IN(d,f)|0;if(!d){i=6;break}if(!(EN(b,d)|0)){i=7;break}g=g+1|0}if((i|0)==6)qa(135312,107135,871,107815);else if((i|0)==7)h=KN(b,JN(b,d)|0,g+1|0,1-e|0)|0;c[a>>2]=g;c[a+4>>2]=h;return}function GN(b,d,e,f,g,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0;o=i+20|0;n=i+24|0;i=uN(c[((a[b>>0]|0)==0?o:n)>>2]|0,b)|0;bO(c[i+32>>2]|0,c[b+40>>2]|0,c[d+40>>2]|0);k=1;while(1){if((k|0)>(g|0))break;l=IN(b,e)|0;m=IN(d,f)|0;do if(!(a[b>>0]|0)){j=uN(c[n>>2]|0,l)|0;if(+h[l+8>>3]==+h[b+16>>3]){p=(c[b+32>>2]|0)==1;i=(dO(c[i+32>>2]|0,c[b+40>>2]|0,c[d+40>>2]|0)|0)!=0;b=c[j+32>>2]|0;if(p)if(i){bO(b,c[m+40>>2]|0,c[l+40>>2]|0);i=j;break}else{bO(b,c[l+40>>2]|0,c[m+40>>2]|0);i=j;break}else if(i){bO(b,c[l+40>>2]|0,c[m+40>>2]|0);i=j;break}else{bO(b,c[m+40>>2]|0,c[l+40>>2]|0);i=j;break}}else{p=(c[b+36>>2]|0)==1;i=(dO(c[i+32>>2]|0,c[b+40>>2]|0,c[d+40>>2]|0)|0)!=0;b=c[j+32>>2]|0;if(p)if(i){bO(b,c[l+40>>2]|0,c[m+40>>2]|0);i=j;break}else{bO(b,c[m+40>>2]|0,c[l+40>>2]|0);i=j;break}else if(i){bO(b,c[m+40>>2]|0,c[l+40>>2]|0);i=j;break}else{bO(b,c[l+40>>2]|0,c[m+40>>2]|0);i=j;break}}}else{j=uN(c[o>>2]|0,l)|0;if(+h[l+8>>3]==+h[b+16>>3]){p=(c[b+32>>2]|0)==2;i=(dO(c[i+32>>2]|0,c[b+40>>2]|0,c[d+40>>2]|0)|0)!=0;b=c[j+32>>2]|0;if(p)if(i){bO(b,c[l+40>>2]|0,c[m+40>>2]|0);i=j;break}else{bO(b,c[m+40>>2]|0,c[l+40>>2]|0);i=j;break}else if(i){bO(b,c[m+40>>2]|0,c[l+40>>2]|0);i=j;break}else{bO(b,c[l+40>>2]|0,c[m+40>>2]|0);i=j;break}}else{p=(c[b+36>>2]|0)==2;i=(dO(c[i+32>>2]|0,c[b+40>>2]|0,c[d+40>>2]|0)|0)!=0;b=c[j+32>>2]|0;if(p)if(i){bO(b,c[m+40>>2]|0,c[l+40>>2]|0);i=j;break}else{bO(b,c[l+40>>2]|0,c[m+40>>2]|0);i=j;break}else if(i){bO(b,c[l+40>>2]|0,c[m+40>>2]|0);i=j;break}else{bO(b,c[m+40>>2]|0,c[l+40>>2]|0);i=j;break}}}while(0);b=l;d=m;k=k+1|0}return}function HN(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0;while(1){if(!(EN(b,d)|0))break;g=IN(b,1)|0;d=IN(d,e)|0;b=g}g=c[(uN(c[((a[b>>0]|0)==0?f+20|0:f+24|0)>>2]|0,b)|0)+32>>2]|0;cO(g,c[b+40>>2]|0,c[d+40>>2]|0);return}function IN(a,b){a=a|0;b=b|0;if(!a)qa(107802,107135,798,107806);else return c[((b|0)==0?a+48|0:a+52|0)>>2]|0;return 0}function JN(b,c){b=b|0;c=c|0;var d=0,e=0,f=0;f=l;l=l+16|0;e=f;d=a[b>>0]|0;if(d<<24>>24==(a[c>>0]|0)?!(+h[b+8>>3]!=+h[c+8>>3]):0){if(!(d<<24>>24))b=LN(b,c,3,1)|0;else b=LN(b,c,4,2)|0;l=f;return b|0}Pw(1,107828,e)|0;bb(186216,1);return 0}function KN(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0;j=1;while(1){if((j|0)>(e|0))break;i=IN(b,f)|0;g=+h[i+8>>3]==+h[b+16>>3];do if(!(a[b>>0]|0))if(g){g=(c[b+32>>2]|0)==1;break}else{g=(c[b+36>>2]|0)==3;break}else if(g){g=(c[b+32>>2]|0)==4;break}else{g=(c[b+36>>2]|0)==2;break}while(0);b=i;j=j+1|0;d=g?0-d|0:d}return d|0}function LN(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0.0,i=0.0,j=0.0,k=0.0,l=0,m=0,n=0,o=0;j=+h[a+24>>3];k=+h[b+16>>3];do if(!(j>3],i=+h[b+24>>3],!(g>i)):0){if(k>2]|0;return ((d|0)==(c[b+32>>2]|0)?0:(d|0)==(e|0)?1:-1)|0}else{d=c[a+32>>2]|0;b=(d|0)==(c[b+36>>2]|0)?0:(d|0)==(e|0)?1:-1;break}if(!(j==i))if(j>2]|0)==(d|0);d=ON(c[b+32>>2]|0,c[a+32>>2]|0,d,e)|0;return (o?d:0-d|0)|0}else{o=(c[b+36>>2]|0)==(e|0);b=ON(c[a+32>>2]|0,c[b+32>>2]|0,d,e)|0;b=o?b:0-b|0;break}o=c[a+32>>2]|0;n=c[b+32>>2]|0;if((o|0)==(n|0)){b=c[b+36>>2]|0;if((c[a+36>>2]|0)==(b|0)){b=0;break}}else b=c[b+36>>2]|0;m=(n|0)==(d|0);if((n|0)==(b|0)){if(m){b=1;break}if((n|0)==(e|0)){b=-1;break}if((o|0)!=(d|0)?(c[a+36>>2]|0)!=(d|0):0){b=1;break}if((o|0)!=(e|0)?(c[a+36>>2]|0)!=(e|0):0){b=-1;break}b=0;break}f=(b|0)==(e|0);if(m&f){b=(c[a+36>>2]|0)==(e|0);if((o|0)==(d|0)){if(!b){b=-1;break}}else if(b){b=1;break}b=0;break}l=(b|0)==(d|0);if((n|0)==(e|0)&l){b=(o|0)==(e|0);if((c[a+36>>2]|0)==(d|0)){if(!b){b=-1;break}}else if(b){b=1;break}b=0;break}if(!n){if(l){b=NN(o,c[a+36>>2]|0,d)|0;break}if(f){b=0-(NN(o,c[a+36>>2]|0,e)|0)|0;break}}f=c[a+36>>2]|0;if(m&(b|0)==0){b=NN(f,o,d)|0;break}else{b=0-(NN(f,o,e)|0)|0;break}}else b=0;while(0);return b|0}function MN(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0.0,j=0.0;i=+h[a+24>>3];j=+h[b+24>>3];do if(i>2]|0;if((a|0)==(d|0)?(c[b+32>>2]|0)==(e|0):0){a=-1;break}if((a|0)==(e|0)?(c[b+32>>2]|0)==(d|0):0){a=1;break}a=0}else{f=c[b+32>>2]|0;g=(f|0)==(e|0);if(i==j)if(g){a=ON(c[a+36>>2]|0,c[b+36>>2]|0,d,e)|0;break}else{a=0-(ON(c[b+36>>2]|0,c[a+36>>2]|0,d,e)|0)|0;break}if(g?(c[b+36>>2]|0)==(e|0):0){a=-1;break}if((f|0)==(d|0)?(c[b+36>>2]|0)==(d|0):0){a=1;break}a=0}while(0);return a|0}function NN(a,b,c){a=a|0;b=b|0;c=c|0;return ((a|0)==(c|0)?((b|0)==(c|0))<<31>>31:1)|0}function ON(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;if((a|0)==(d|0)){b=(a|0)==0;if(b)return 0;else b=b&1}return ((a|0)!=0|(b|0)!=(c|0))<<31>>31|0}function PN(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;g=c[a+28>>2]|0;h=c[a+24>>2]|0;d=c[a+32>>2]|0;a=0;a:while(1){e=a+1|0;if((e|0)>=(h|0))break;f=g+(a<<2)|0;b=e;while(1){if((b|0)==(h|0)){a=e;continue a}switch(JN(c[f>>2]|0,c[g+(b<<2)>>2]|0)|0){case 1:{bO(d,a,b);break}case -1:{bO(d,b,a);break}default:{}}b=b+1|0}}return}function QN(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=a+24|0;e=c[f>>2]|0;d=e+1|0;c[f>>2]=d;c[b+40>>2]=e;e=a+28|0;a=c[e>>2]|0;if(!a)a=vH(d<<2)|0;else a=xH(a,d<<2)|0;c[e>>2]=a;c[a+((c[f>>2]|0)+-1<<2)>>2]=b;return}function RN(a,b,d){a=a|0;b=b|0;d=+d;var e=0,f=0,g=0;g=l;l=l+16|0;f=g;h[f>>3]=d;e=nb[c[a>>2]&63](a,f,512)|0;if(!e){e=uH(24)|0;h[e+8>>3]=+h[f>>3];c[e+16>>2]=Cw(25624,c[4555]|0)|0;nb[c[a>>2]&63](a,e,1)|0}f=c[e+16>>2]|0;nb[c[f>>2]&63](f,b,1)|0;l=g;return}function SN(a,b,d){a=a|0;b=b|0;d=d|0;aO(c[b+32>>2]|0);D_(c[b+28>>2]|0);D_(b);return}function TN(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0.0,f=0.0;e=+h[b>>3];f=+h[c>>3];if(!(e>f))if(e>3]>=+h[c+8>>3])<<31>>31;else a=0;else a=!(+h[b+8>>3]<=+h[c+8>>3])&1;return a|0}function UN(a,b,d){a=a|0;b=b|0;d=d|0;yw(c[b+16>>2]|0)|0;D_(b);return}function VN(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0.0,f=0.0;f=+h[b>>3];e=+h[c>>3];return (f>e?1:(f>31)|0}function WN(b,d,e){b=b|0;d=d|0;e=e|0;var f=0.0,g=0.0,i=0,j=0;i=(a[d+36>>0]|0)!=0;j=e+40|0;do if((c[d+24>>2]|0)==(e|0)){f=+h[j>>3];if(i){g=(+h[e+64>>3]+ +h[e+48>>3])*.5;break}else{g=+h[e+48>>3];f=(+h[e+56>>3]+f)*.5;break}}else if(i){g=(+h[e+64>>3]+ +h[e+48>>3])*.5;f=+h[e+56>>3];break}else{g=+h[e+64>>3];f=(+h[e+56>>3]+ +h[j>>3])*.5;break}while(0);h[b>>3]=f;h[b+8>>3]=g;return}function XN(a,b){a=a|0;b=b|0;var d=0;d=c[a+20>>2]|0;if((d|0)!=(c[b+20>>2]|0)?(d|0)!=(c[b+24>>2]|0):0)d=c[a+24>>2]|0;return d|0}function YN(a,b){a=a|0;b=b|0;var c=0.0;c=(+h[b+64>>3]+ +h[b+48>>3])*.5;h[a>>3]=(+h[b+56>>3]+ +h[b+40>>3])*.5;h[a+8>>3]=c;return}function ZN(b,d,e,f,g,i,j){b=b|0;d=d|0;e=+e;f=+f;g=+g;i=i|0;j=j|0;var k=0,l=0;a[b>>0]=d;h[b+8>>3]=e;if(f>3]=f;h[b+16>>3]=e;c[b+36>>2]=d;c[b+32>>2]=l;a[b+1>>0]=k;return}function _N(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=c[b+36>>2]|0;do if((c[e+4>>2]|0)!=(d|0)){if((c[e+12>>2]|0)==(d|0)){e=~~((+h[b+56>>3]+ +h[b+40>>3])*.5);d=~~+h[b+48>>3];break}if((c[e+8>>2]|0)==(d|0)){e=~~+h[b+40>>3];d=~~((+h[b+64>>3]+ +h[b+48>>3])*.5);break}if((c[e>>2]|0)==(d|0)){e=~~+h[b+56>>3];d=~~((+h[b+64>>3]+ +h[b+48>>3])*.5)}else{e=0;d=0}}else{e=~~((+h[b+56>>3]+ +h[b+40>>3])*.5);d=~~+h[b+64>>3]}while(0);c[a>>2]=e;c[a+4>>2]=d;return}function $N(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;d=uH(8)|0;c[d>>2]=a;e=d+4|0;c[e>>2]=uH(a*12|0)|0;b=0;while(1){if((b|0)>=(a|0))break;g=yR()|0;f=c[e>>2]|0;c[f+(b*12|0)+8>>2]=g;c[f+(b*12|0)>>2]=0;b=b+1|0}return d|0}function aO(a){a=a|0;var b=0,d=0,e=0;d=a+4|0;b=0;while(1){e=c[d>>2]|0;if((b|0)>=(c[a>>2]|0))break;yw(c[e+(b*12|0)+8>>2]|0)|0;b=b+1|0}D_(e);D_(a);return}function bO(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=l;l=l+16|0;f=e;c[f>>2]=d;d=c[(c[a+4>>2]|0)+(b*12|0)+8>>2]|0;nb[c[d>>2]&63](d,f,1)|0;l=e;return}function cO(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=l;l=l+16|0;f=e;c[f>>2]=d;a=a+4|0;g=c[(c[a>>2]|0)+(b*12|0)+8>>2]|0;nb[c[g>>2]&63](g,f,2)|0;c[f>>2]=b;d=c[(c[a>>2]|0)+(d*12|0)+8>>2]|0;nb[c[d>>2]&63](d,f,2)|0;l=e;return}function dO(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=l;l=l+16|0;f=e;c[f>>2]=d;d=c[(c[a+4>>2]|0)+(b*12|0)+8>>2]|0;d=(nb[c[d>>2]&63](d,f,512)|0)!=0&1;l=e;return d|0}function eO(a){a=a|0;var b=0,d=0,e=0,f=0;b=c[a>>2]|0;switch(b|0){case 0:break;case 1:{c[(c[a+4>>2]|0)+4>>2]=0;break}default:{e=fO(b)|0;f=a+4|0;d=0;b=0;while(1){if((d|0)>=(c[a>>2]|0)){b=0;break}if(!(c[(c[f>>2]|0)+(d*12|0)>>2]|0))b=gO(a,d,b,e)|0;d=d+1|0}while(1){d=hO(e)|0;if((d|0)<=-1)break;c[(c[f>>2]|0)+(d*12|0)+4>>2]=b;b=b+1|0}iO(e)}}return}function fO(a){a=a|0;var b=0;b=uH(8)|0;c[b+4>>2]=uH(a<<2)|0;c[b>>2]=-1;return b|0}function gO(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;i=a+4|0;g=c[i>>2]|0;j=g+(b*12|0)|0;c[j>>2]=1;g=c[g+(b*12|0)+8>>2]|0;h=g+4|0;d=d+1|0;g=Aw(g)|0;while(1){if(!g)break;f=c[(c[h>>2]|0)+8>>2]|0;if((f|0)<0)f=c[g+8>>2]|0;else f=g+(0-f)|0;f=c[f>>2]|0;if(!(c[(c[i>>2]|0)+(f*12|0)>>2]|0))d=gO(a,f,d,e)|0;g=c[g>>2]|0}c[j>>2]=2;jO(e,b);return d+1|0}function hO(a){a=a|0;var b=0,d=0;b=c[a>>2]|0;if((b|0)==-1)a=-1;else{d=c[(c[a+4>>2]|0)+(b<<2)>>2]|0;c[a>>2]=b+-1;a=d}return a|0}function iO(a){a=a|0;D_(c[a+4>>2]|0);D_(a);return}function jO(a,b){a=a|0;b=b|0;var d=0;d=(c[a>>2]|0)+1|0;c[a>>2]=d;c[(c[a+4>>2]|0)+(d<<2)>>2]=b;return}function kO(a){a=a|0;var d=0,e=0,f=0;e=c[a>>2]|0;c[a+8>>2]=e;c[a+12>>2]=c[a+4>>2];d=a+16|0;a=0;while(1){if((a|0)>=(e|0))break;f=c[d>>2]|0;b[f+(a*40|0)+18>>1]=b[f+(a*40|0)+16>>1]|0;a=a+1|0}return}function lO(a){a=a|0;var d=0,e=0,f=0;d=c[a+8>>2]|0;c[a>>2]=d;c[a+4>>2]=c[a+12>>2];e=a+16|0;a=0;while(1){if((a|0)>=(d|0))break;f=c[e>>2]|0;b[f+(a*40|0)+16>>1]=b[f+(a*40|0)+18>>1]|0;a=a+1|0}d=d+2|0;while(1){if((a|0)>=(d|0))break;b[(c[e>>2]|0)+(a*40|0)+16>>1]=0;a=a+1|0}return}function mO(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=uH(((c[a>>2]|0)*6|0)+(b<<1)<<2)|0;c[a+20>>2]=uH((((c[a>>2]|0)*3|0)+b|0)*24|0)|0;e=c[a>>2]|0;f=a+16|0;a=0;while(1){if((a|0)>=(e|0))break;c[(c[f>>2]|0)+(a*40|0)+28>>2]=d;d=d+24|0;a=a+1|0}e=e+2|0;while(1){if((a|0)>=(e|0))break;c[(c[f>>2]|0)+(a*40|0)+28>>2]=d;d=d+(b<<2)|0;a=a+1|0}return}function nO(a){a=a|0;var b=0;b=uH(24)|0;c[b>>2]=0;c[b+16>>2]=uH(a*40|0)|0;return b|0}function oO(a){a=a|0;var b=0,d=0;d=c[a+16>>2]|0;b=c[a>>2]|0;c[d+(b*40|0)+32>>2]=b;c[a>>2]=b+1;return d+(b*40|0)|0}function pO(a,b,d,e){a=a|0;b=b|0;d=d|0;e=+e;var f=0,g=0;g=a+4|0;f=c[g>>2]|0;c[g>>2]=f+1;g=c[a+20>>2]|0;a=g+(f*24|0)|0;c[g+(f*24|0)+12>>2]=c[b+32>>2];c[g+(f*24|0)+16>>2]=c[d+32>>2];h[a>>3]=e;c[g+(f*24|0)+8>>2]=0;qO(b,f);qO(d,f);return a|0}function qO(a,d){a=a|0;d=d|0;var e=0,f=0;e=a+16|0;f=b[e>>1]|0;c[(c[a+28>>2]|0)+(f<<16>>16<<2)>>2]=d;b[e>>1]=f+1<<16>>16;return}function rO(a){a=a|0;var b=0;b=a+16|0;D_(c[(c[b>>2]|0)+28>>2]|0);D_(c[b>>2]|0);D_(c[a+20>>2]|0);D_(a);return}function sO(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0;g=c[a>>2]|0;i=a+16|0;f=0;while(1){if((f|0)>=(g|0))break;c[(c[i>>2]|0)+(f*40|0)>>2]=-2147483648;f=f+1|0}GR();a:do if(!(JR(d)|0)){c[d+8>>2]=0;c[d>>2]=0;d=a+20|0;b:while(1){g=LR()|0;if(!g){f=0;break a}c[g>>2]=0-(c[g>>2]|0);if((g|0)==(e|0)){f=0;break a}i=g+16|0;j=g+28|0;f=0;while(1){if((f|0)>=(b[i>>1]|0))continue b;k=(c[d>>2]|0)+((c[(c[j>>2]|0)+(f<<2)>>2]|0)*24|0)|0;l=tO(a,k,g)|0;m=c[l>>2]|0;do if((m|0)<0){n=~~-(+h[k>>3]+ +(c[g>>2]|0));if((m|0)==-2147483648){c[l>>2]=n;if(JR(l)|0){f=1;break a}c[l+8>>2]=g;c[l+12>>2]=k;break}else{if((m|0)>=(n|0))break;MR(l,n);c[l+8>>2]=g;c[l+12>>2]=k;break}}while(0);f=f+1|0}}}else f=1;while(0);return f|0}function tO(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=c[b+12>>2]|0;if((e|0)==(c[d+32>>2]|0))e=c[b+16>>2]|0;return (c[a+16>>2]|0)+(e*40|0)|0}function uO(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;g=c[a>>2]|0;wC(g,3,b)|0;b=c[g+92>>2]|0;do if(b){d=c[b+16>>2]|0;h=c[d+12>>2]|0;c[a+76>>2]=h;e=c[d+16>>2]|0;c[a+84>>2]=e;f=a+80|0;c[f>>2]=c[d>>2];c[a+88>>2]=c[b+4>>2];d=a+152|0;e=c[d>>2]|c[e>>2];c[d>>2]=e;b=c[g+80>>2]|0;if(!b){c[a+60>>2]=0;b=999;break}else{g=c[b+16>>2]|0;c[a+60>>2]=c[g+12>>2];i=c[g+16>>2]|0;c[a+68>>2]=i;c[a+72>>2]=c[b+4>>2];c[d>>2]=e|c[i>>2];c[a+64>>2]=c[((h|0)==0?f:g)>>2];b=300;break}}else b=999;while(0);return b|0}function vO(a){a=a|0;var b=0,d=0;b=c[a+60>>2]|0;if(!(XB(a)|0))if((b|0)!=0?(d=c[b>>2]|0,(d|0)!=0):0){tb[d&127](a);a=0}else a=0;else a=1;return a|0}function wO(a){a=a|0;var b=0,d=0;b=c[a+60>>2]|0;if(b|0?(d=c[b+4>>2]|0,d|0):0)tb[d&127](a);c[(c[a>>2]|0)+24>>2]=0;dC(a);return}function xO(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0.0,g=0.0,i=0.0;e=+h[b+504>>3];f=+h[b+512>>3];i=+h[b+352>>3];if(!(c[b+360>>2]|0)){g=+h[d>>3]+e;d=d+8|0;e=f}else g=-(f+ +h[d+8>>3]);f=+h[b+528>>3]*i*(+h[d>>3]+e);h[a>>3]=+h[b+520>>3]*i*g;h[a+8>>3]=f;return}function yO(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,g=0.0,i=0.0,j=0.0,k=0.0;f=+h[a+504>>3];g=+h[a+512>>3];i=+h[a+352>>3];j=+h[a+520>>3]*i;i=+h[a+528>>3]*i;a:do if(!(c[a+360>>2]|0)){a=0;while(1){if((a|0)>=(e|0))break a;h[d+(a<<4)>>3]=(+h[b+(a<<4)>>3]+f)*j;h[d+(a<<4)+8>>3]=(+h[b+(a<<4)+8>>3]+g)*i;a=a+1|0}}else{a=0;while(1){if((a|0)>=(e|0))break a;k=-(j*(+h[b+(a<<4)+8>>3]+g));h[d+(a<<4)+8>>3]=(+h[b+(a<<4)>>3]+f)*i;h[d+(a<<4)>>3]=k;a=a+1|0}}while(0);return d|0}function zO(a,b){a=a|0;b=b|0;var d=0;b=c[a+60>>2]|0;if(b|0?(d=c[b+8>>2]|0,d|0):0)tb[d&127](a);return}function AO(a){a=a|0;var b=0,d=0;b=c[a+60>>2]|0;if(b|0?(d=c[b+12>>2]|0,d|0):0)tb[d&127](a);cC(a);return}function BO(a){a=a|0;var b=0,d=0;b=c[a+60>>2]|0;if(b|0?(d=c[b+24>>2]|0,d|0):0)tb[d&127](a);return}function CO(a){a=a|0;var b=0,d=0;b=c[a+60>>2]|0;if(b|0?(d=c[b+28>>2]|0,d|0):0)tb[d&127](a);return}function DO(a){a=a|0;var b=0,d=0;b=c[a+60>>2]|0;if(b|0?(d=c[b+16>>2]|0,d|0):0){b=c[a+160>>2]|0;xb[d&31](a,c[(c[(c[a>>2]|0)+308>>2]|0)+(b<<2)>>2]|0,b,c[a+156>>2]|0)}return}function EO(a){a=a|0;var b=0,d=0;b=c[a+60>>2]|0;if(b|0?(d=c[b+20>>2]|0,d|0):0)tb[d&127](a);return}function FO(a,b){a=a|0;b=b|0;var d=0;b=c[a+60>>2]|0;if(b|0?(d=c[b+32>>2]|0,d|0):0)tb[d&127](a);return}function GO(a,b){a=a|0;b=b|0;var d=0;b=c[a+60>>2]|0;if(b|0?(d=c[b+36>>2]|0,d|0):0)tb[d&127](a);return}function HO(a){a=a|0;var b=0,d=0;b=c[a+60>>2]|0;if(b|0?(d=c[b+40>>2]|0,d|0):0)tb[d&127](a);return}function IO(a){a=a|0;var b=0,d=0;b=c[a+60>>2]|0;if(b|0?(d=c[b+44>>2]|0,d|0):0)tb[d&127](a);return}function JO(a){a=a|0;var b=0,d=0;b=c[a+60>>2]|0;if(b|0?(d=c[b+48>>2]|0,d|0):0)tb[d&127](a);return}function KO(a){a=a|0;var b=0,d=0;b=c[a+60>>2]|0;if(b|0?(d=c[b+52>>2]|0,d|0):0)tb[d&127](a);return}function LO(a,b){a=a|0;b=b|0;var d=0;b=c[a+60>>2]|0;if(b|0?(d=c[b+56>>2]|0,d|0):0)tb[d&127](a);return}function MO(a){a=a|0;var b=0,d=0;b=c[a+60>>2]|0;if(b|0?(d=c[b+60>>2]|0,d|0):0)tb[d&127](a);return}function NO(a,b){a=a|0;b=b|0;var d=0;b=c[a+60>>2]|0;if(b|0?(d=c[b+64>>2]|0,d|0):0)tb[d&127](a);return}function OO(a){a=a|0;var b=0,d=0;b=c[a+60>>2]|0;if(b|0?(d=c[b+68>>2]|0,d|0):0)tb[d&127](a);return}function PO(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;g=c[a+60>>2]|0;if(g|0?(h=c[g+72>>2]|0,h|0):0)yb[h&15](a,b,d,e,f);return}function QO(a){a=a|0;var b=0,d=0;b=c[a+60>>2]|0;if(b|0?(d=c[b+76>>2]|0,d|0):0)tb[d&127](a);return}function RO(a,b){a=a|0;b=b|0;var d=0,e=0;d=c[a+60>>2]|0;if(d|0?(e=c[d+80>>2]|0,e|0):0)ub[e&63](a,b);return}function SO(a){a=a|0;var b=0,d=0;b=c[a+60>>2]|0;if(b|0?(d=c[b+84>>2]|0,d|0):0)tb[d&127](a);return}function TO(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0;k=l;l=l+48|0;f=k+32|0;h=k;i=k+16|0;j=c[b+60>>2]|0;m=c[e>>2]|0;do if(m|0?a[m>>0]|0:0){m=c[b+16>>2]|0;if(m|0?(c[m+144>>2]|0)==0:0)break;if(!(c[b+152>>2]&8192)){c[f>>2]=c[d>>2];c[f+4>>2]=c[d+4>>2];c[f+8>>2]=c[d+8>>2];c[f+12>>2]=c[d+12>>2];xO(i,b,f);c[h>>2]=c[i>>2];c[h+4>>2]=c[i+4>>2];c[h+8>>2]=c[i+8>>2];c[h+12>>2]=c[i+12>>2]}else{c[h>>2]=c[d>>2];c[h+4>>2]=c[d+4>>2];c[h+8>>2]=c[d+8>>2];c[h+12>>2]=c[d+12>>2]}if(j|0?(g=c[j+88>>2]|0,g|0):0){c[f>>2]=c[h>>2];c[f+4>>2]=c[h+4>>2];c[f+8>>2]=c[h+8>>2];c[f+12>>2]=c[h+12>>2];vb[g&127](b,f,e)}}while(0);l=k;return}function UO(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;f=c[b+60>>2]|0;g=(c[b+16>>2]|0)+16|0;i=A$(d,58)|0;h=(i|0)!=0;if(h)a[i>>0]=0;if(f|0?(VO(c[b+68>>2]|0,d,g),e=c[f+92>>2]|0,e|0):0)ub[e&63](b,g);if(h)a[i>>0]=58;return}function VO(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=l;l=l+32|0;g=k+16|0;j=k+8|0;i=k;c[d>>2]=b;c[d+32>>2]=5;e=iQ(b)|0;f=c[a+16>>2]|0;if(!((f|0)!=0?(e2(e,f,c[a+20>>2]|0,4,100)|0)!=0:0))h=3;a:do if((h|0)==3){switch(jQ(b,d,c[a+24>>2]|0)|0){case 0:break a;case 1:break;default:{Pw(1,108020,g)|0;break a}}a=vH((W_(b)|0)+16|0)|0;c[i>>2]=b;Y0(a,107985,i)|0;if(AG(a)|0){c[j>>2]=b;Pw(0,107994,j)|0}D_(a)}while(0);l=k;return}function WO(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;f=c[b+60>>2]|0;g=(c[b+16>>2]|0)+56|0;i=A$(d,58)|0;h=(i|0)!=0;if(h)a[i>>0]=0;if(f|0?(VO(c[b+68>>2]|0,d,g),e=c[f+92>>2]|0,e|0):0)ub[e&63](b,g);if(h)a[i>>0]=58;return}function XO(a,b,d,e){a=a|0;b=b|0;d=d|0;e=+e;var f=0,h=0,i=0,j=0;h=c[a+60>>2]|0;i=a+16|0;j=(c[i>>2]|0)+96|0;if(h|0?(VO(c[a+68>>2]|0,b,j),f=c[h+92>>2]|0,f|0):0)ub[f&63](a,j);j=c[i>>2]|0;c[j+136>>2]=d;g[j+140>>2]=e;return}function YO(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,m=0;m=l;l=l+16|0;k=m;j=c[b+60>>2]|0;b=c[b+16>>2]|0;c[b+160>>2]=d;a:do if((d|0)!=0&(j|0)!=0){j=b+144|0;i=b+152|0;g=b+148|0;b=d;b:while(1){f=b+4|0;b=c[b>>2]|0;if(!b)break a;c:do switch(a[b>>0]|0){case 115:{if(!(b$(b,108041)|0)){c[j>>2]=3;b=f;continue b}if(!(b$(b,108062)|0)){e=115;while(1){d=b+1|0;if(!(e<<24>>24))break;b=d;e=a[d>>0]|0}h[i>>3]=+b2(d);b=f;continue b}break}case 100:{if(!(b$(b,134245)|0)){c[j>>2]=1;b=f;continue b}if(!(b$(b,134238)|0)){c[j>>2]=2;b=f;continue b}break}case 105:{if(b$(b,131253)|0?b$(b,108047)|0:0)break c;c[j>>2]=0;b=f;continue b}case 98:{if(!(b$(b,108057)|0)){h[i>>3]=2.0;b=f;continue b}break}case 102:{if(!(b$(b,108075)|0)){c[g>>2]=1;b=f;continue b}break}case 117:{if(!(b$(b,108082)|0)){c[g>>2]=0;b=f;continue b}break}case 116:{if(!(b$(b,108091)|0)){b=f;continue b}break}default:{}}while(0);c[k>>2]=b;Pw(0,108099,k)|0;b=f}}while(0);l=m;return}function ZO(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0;j=l;l=l+32|0;g=j;d=c[a+60>>2]|0;if((d|0?(i=d+96|0,f=c[i>>2]|0,f|0):0)?c[(c[a+16>>2]|0)+144>>2]|0:0){d=b+16|0;h[g>>3]=(+h[d>>3]+ +h[b>>3])*.5;h[g+8>>3]=(+h[b+24>>3]+ +h[b+8>>3])*.5;b=g+16|0;c[b>>2]=c[d>>2];c[b+4>>2]=c[d+4>>2];c[b+8>>2]=c[d+8>>2];c[b+12>>2]=c[d+12>>2];if(!(c[a+152>>2]&8192)){yO(a,g,g,2)|0;f=c[i>>2]|0}vb[f&127](a,g,e)}l=j;return}function _O(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;o=l;l=l+48|0;m=o;f=c[a+60>>2]|0;if((f|0?(n=f+100|0,c[n>>2]|0):0)?(k=a+16|0,j=c[k>>2]|0,c[j+144>>2]|0):0){if(!(e&4)){f=e;g=0}else{f=e&-5;e=j+16|0;g=m;h=e;i=g+40|0;do{c[g>>2]=c[h>>2];g=g+4|0;h=h+4|0}while((g|0)<(i|0));g=e;h=j+56|0;i=g+40|0;do{c[g>>2]=c[h>>2];g=g+4|0;h=h+4|0}while((g|0)<(i|0));g=1}if(!(c[a+152>>2]&8192)){e=d+10|0;if((c[46593]|0)<(d|0)){c[46593]=e;e=xH(c[46594]|0,e<<4)|0;c[46594]=e}else e=c[46594]|0;yO(a,b,e,d)|0;xb[c[n>>2]&31](a,e,d,f)}else xb[c[n>>2]&31](a,b,d,f);if(g|0){g=(c[k>>2]|0)+16|0;h=m;i=g+40|0;do{c[g>>2]=c[h>>2];g=g+4|0;h=h+4|0}while((g|0)<(i|0))}}l=o;return}function $O(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=l;l=l+64|0;f=e;c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];g=f+32|0;b=b+16|0;c[g>>2]=c[b>>2];c[g+4>>2]=c[b+4>>2];c[g+8>>2]=c[b+8>>2];c[g+12>>2]=c[b+12>>2];h[f+16>>3]=+h[f>>3];h[f+24>>3]=+h[f+40>>3];h[f+48>>3]=+h[g>>3];h[f+56>>3]=+h[f+8>>3];_O(a,f,4,d);l=e;return}function aP(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;i=c[a+60>>2]|0;do if((i|0?(j=i+104|0,h=c[j>>2]|0,h|0):0)?c[(c[a+16>>2]|0)+144>>2]|0:0){if(c[a+152>>2]&8192|0){zb[h&15](a,b,d,e,f,g&255);break}h=d+10|0;if((c[46593]|0)<(d|0)){c[46593]=h;h=xH(c[46594]|0,h<<4)|0;c[46594]=h}else h=c[46594]|0;yO(a,b,h,d)|0;zb[c[j>>2]&15](a,h,d,e,f,g&255)}while(0);return}function bP(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=c[a+60>>2]|0;do if((e|0?(g=e+108|0,f=c[g>>2]|0,f|0):0)?c[(c[a+16>>2]|0)+144>>2]|0:0){if(c[a+152>>2]&8192|0){vb[f&127](a,b,d);break}e=d+10|0;if((c[46593]|0)<(d|0)){c[46593]=e;e=xH(c[46594]|0,e<<4)|0;c[46594]=e}else e=c[46594]|0;yO(a,b,e,d)|0;vb[c[g>>2]&127](a,e,d)}while(0);return}function cP(b,d){b=b|0;d=d|0;var e=0,f=0;e=c[b+60>>2]|0;if((d|0?!((e|0)==0|(a[d>>0]|0)==0):0)?(f=c[e+112>>2]|0,f|0):0)ub[f&63](b,d);return}function dP(b,d,e,f,g,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;var j=0.0,k=0.0,m=0,n=0,o=0.0,p=0.0,q=0.0,r=0.0,s=0,t=0.0,u=0.0,v=0.0,w=0.0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;F=l;l=l+112|0;B=F+64|0;E=F;n=F+96|0;x=F+48|0;y=F+32|0;C=c[b+60>>2]|0;if(!b)qa(108200,108152,691,108163);if(!d)qa(108182,108152,692,108163);if(!(a[d>>0]|0))qa(108187,108152,693,108163);D=yC(d)|0;if(!D){if((C|0)!=0&(VJ(d)|0)!=0?(m=c[C+116>>2]|0,m|0):0)yb[m&15](b,d,e,f,g&255)}else{s=b+432|0;c[B>>2]=c[s>>2];c[B+4>>2]=c[s+4>>2];c[B+8>>2]=c[s+8>>2];c[B+12>>2]=c[s+12>>2];BC(n,D,B);s=c[n>>2]|0;m=c[n+4>>2]|0;if(!((s|0)<1&(m|0)<1)){n=E+16|0;c[n>>2]=c[e>>2];c[n+4>>2]=c[e+4>>2];c[n+8>>2]=c[e+8>>2];c[n+12>>2]=c[e+12>>2];c[E>>2]=c[e>>2];c[E+4>>2]=c[e+4>>2];c[E+8>>2]=c[e+8>>2];c[E+12>>2]=c[e+12>>2];z=E+8|0;A=E+24|0;d=1;while(1){if((d|0)>=(f|0))break;G=e+(d<<4)|0;v=+h[G>>3];h[E>>3]=+h[(+h[E>>3]>3];w=+h[e+(d<<4)+8>>3];h[z>>3]=+h[(+h[z>>3]>3];h[n>>3]=+h[(+h[n>>3]>v?n:G)>>3];h[A>>3]=+h[(+h[A>>3]>w?n:G)+8>>3];d=d+1|0}k=+h[n>>3];j=+h[E>>3];t=k-j;u=+h[A>>3];v=+h[z>>3];w=u-v;o=+(m|0);p=+(s|0);q=t/p;r=w/o;a:do switch(eP(i)|0){case 1:if(q>3]=j;k=k-t;h[n>>3]=k}if(o>3]=v+w;h[A>>3]=u-w}if(!(c[b+152>>2]&8192)){c[B>>2]=c[E>>2];c[B+4>>2]=c[E+4>>2];c[B+8>>2]=c[E+8>>2];c[B+12>>2]=c[E+12>>2];xO(x,b,B);c[E>>2]=c[x>>2];c[E+4>>2]=c[x+4>>2];c[E+8>>2]=c[x+8>>2];c[E+12>>2]=c[x+12>>2];c[B>>2]=c[n>>2];c[B+4>>2]=c[n+4>>2];c[B+8>>2]=c[n+8>>2];c[B+12>>2]=c[n+12>>2];xO(y,b,B);c[n>>2]=c[y>>2];c[n+4>>2]=c[y+4>>2];c[n+8>>2]=c[y+8>>2];c[n+12>>2]=c[y+12>>2];k=+h[n>>3];j=+h[E>>3]}if(j>k){h[E>>3]=k;h[n>>3]=j}j=+h[z>>3];k=+h[A>>3];if(j>k){h[z>>3]=k;h[A>>3]=j}if(C|0){G=c[b+72>>2]|0;c[B>>2]=c[E>>2];c[B+4>>2]=c[E+4>>2];c[B+8>>2]=c[E+8>>2];c[B+12>>2]=c[E+12>>2];c[B+16>>2]=c[E+16>>2];c[B+20>>2]=c[E+20>>2];c[B+24>>2]=c[E+24>>2];c[B+28>>2]=c[E+28>>2];gP(b,D,B,g,G)}}}l=F;return}function eP(b){b=b|0;if(a[b>>0]|0)if(O$(b,138034)|0)if(O$(b,137966)|0)if(!(O$(b,108195)|0))b=4;else b=(QL(b)|0)<<24>>24!=0&1;else b=3;else b=2;else b=0;return b|0}function fP(a,b){a=a|0;b=+b;if(c[a+60>>2]|0)h[(c[a+16>>2]|0)+152>>3]=b;return} +function SX(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;h=f-e|0;a:do if((h|0)>0){l=b+72|0;switch(a[l+(d[e>>0]|0)>>0]|0){case 29:{c[g>>2]=e;f=0;break a}case 24:case 22:{h=1;break}case 5:{if((h|0)<2){f=-2;break a}if(!(lb[c[b+340>>2]&127](b,e)|0)){c[g>>2]=e;f=0;break a}else h=2;break}case 6:{if((h|0)<3){f=-2;break a}if(!(lb[c[b+344>>2]&127](b,e)|0)){c[g>>2]=e;f=0;break a}else h=3;break}case 7:{if((h|0)<4){f=-2;break a}if(!(lb[c[b+348>>2]&127](b,e)|0)){c[g>>2]=e;f=0;break a}else h=4;break}default:{c[g>>2]=e;f=0;break a}}i=b+328|0;j=b+332|0;k=b+336|0;e=e+h|0;b:while(1){h=f-e|0;if((h|0)<=0){f=-20;break a}switch(a[l+(d[e>>0]|0)>>0]|0){case 29:{h=17;break b}case 36:case 30:case 11:case 32:case 21:case 10:case 9:{h=28;break b}case 27:case 26:case 25:case 24:case 22:{h=1;break}case 5:{if((h|0)<2){f=-2;break a}if(!(lb[c[i>>2]&127](b,e)|0)){h=20;break b}else h=2;break}case 6:{if((h|0)<3){f=-2;break a}if(!(lb[c[j>>2]&127](b,e)|0)){h=23;break b}else h=3;break}case 7:{if((h|0)<4){f=-2;break a}if(!(lb[c[k>>2]&127](b,e)|0)){h=26;break b}else h=4;break}default:{h=29;break b}}e=e+h|0}if((h|0)==17){c[g>>2]=e;f=0;break}else if((h|0)==20){c[g>>2]=e;f=0;break}else if((h|0)==23){c[g>>2]=e;f=0;break}else if((h|0)==26){c[g>>2]=e;f=0;break}else if((h|0)==28){c[g>>2]=e;f=20;break}else if((h|0)==29){c[g>>2]=e;f=0;break}}else f=-1;while(0);return f|0}function TX(){return 58116}function UX(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;i=l;l=l+16|0;g=i;c[g>>2]=d;h=c[b>>2]|0;a=f-(c[e>>2]|0)|0;if((d-h|0)>(a|0)){a=h+a|0;c[g>>2]=a;f=1}else{f=0;a=d}fX(h,g);h=c[g>>2]|0;d=c[b>>2]|0;g=h-d|0;F3(c[e>>2]|0,d|0,g|0)|0;c[b>>2]=(c[b>>2]|0)+g;c[e>>2]=(c[e>>2]|0)+g;l=i;return (f?2:h>>>0>>0&1)|0}function VX(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0;j=d+72|0;k=f;l=h;m=c[e>>2]|0;n=c[g>>2]|0;a:while(1){d=m>>>0>>0;if(!(n>>>0>>0&d)){o=12;break}d=a[m>>0]|0;i=d&255;switch(a[j+i>>0]|0){case 5:{if((k-m|0)<2){d=1;break a}b[n>>1]=(d&31)<<6|a[m+1>>0]&63;m=m+2|0;n=n+2|0;continue a}case 6:{if((k-m|0)<3){d=1;break a}b[n>>1]=(a[m+1>>0]&63)<<6|i<<12|a[m+2>>0]&63;m=m+3|0;n=n+2|0;continue a}case 7:{if((l-n|0)<4){d=2;break a}if((k-m|0)<4){d=1;break a}i=((a[m+1>>0]&63)<<12|(d&7)<<18|(a[m+2>>0]&63)<<6|a[m+3>>0]&63)+-65536|0;b[n>>1]=i>>>10|55296;b[n+2>>1]=i&1023|56320;m=m+4|0;n=n+4|0;continue a}default:{b[n>>1]=d<<24>>24;m=m+1|0;n=n+2|0;continue a}}}if((o|0)==12)d=d?2:0;c[e>>2]=m;c[g>>2]=n;return d|0}function WX(a,b){a=a|0;b=b|0;a=d[b>>0]|0;b=d[b+1>>0]|0;return 1<<(b&31)&c[56836+(((d[140962+(a>>>2&7)>>0]|0)<<3|a<<1&6|b>>>5&1)<<2)>>2]|0}function XX(b,e){b=b|0;e=e|0;var f=0;f=d[e+1>>0]|0;b=d[e+2>>0]|0;return 1<<(b&31)&c[56836+(((d[140962+(f>>>2&15|a[e>>0]<<4&255)>>0]|0)<<3|f<<1&6|b>>>5&1)<<2)>>2]|0}function YX(a,b){a=a|0;b=b|0;return 0}function ZX(a,b){a=a|0;b=b|0;a=d[b>>0]|0;b=d[b+1>>0]|0;return 1<<(b&31)&c[56836+(((d[140706+(a>>>2&7)>>0]|0)<<3|a<<1&6|b>>>5&1)<<2)>>2]|0}function _X(b,e){b=b|0;e=e|0;var f=0;f=d[e+1>>0]|0;b=d[e+2>>0]|0;return 1<<(b&31)&c[56836+(((d[140706+(f>>>2&15|a[e>>0]<<4&255)>>0]|0)<<3|f<<1&6|b>>>5&1)<<2)>>2]|0}function $X(a,b){a=a|0;b=b|0;if((d[b>>0]|0)<194)return 1;else{b=d[b+1>>0]|0;return b>>>7^1|(b&192|0)==192|0}return 0}function aY(b,c){b=b|0;c=c|0;var d=0;b=a[c+2>>0]|0;do if(b<<24>>24>-1)b=1;else{d=a[c>>0]|0;if(d<<24>>24==-17?(a[c+1>>0]|0)==-65:0)if((b&255)>189){b=1;break}else{b=191;c=-65}else{if((b&255)>191){b=1;break}c=a[c+1>>0]|0;b=c&255;if(d<<24>>24==-32){b=(c&255)<160|(b&192|0)==192;break}}b=(b&128|0)==0?1:d<<24>>24==-19?(c&255)>159:(b&192|0)==192}while(0);return b&1|0}function bY(b,c){b=b|0;c=c|0;var e=0;e=d[c+3>>0]|0;do if(!((e&128|0)==0|(e&192|0)==192)?(e=d[c+2>>0]|0,!((e&128|0)==0|(e&192|0)==192)):0){e=a[c>>0]|0;b=a[c+1>>0]|0;c=b&255;if(e<<24>>24==-16){b=(b&255)<144|(c&192|0)==192;break}else{b=(c&128|0)==0?1:e<<24>>24==-12?(b&255)>143:(c&192|0)==192;break}}else b=1;while(0);return b&1|0}function cY(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0;a:do if(e>>>0>>0){i=e;m=f-i|0;k=(m&1|0)==0;m=m&-2;l=(m|0)==0;m=k|l?f:e+m|0;if(k|l^1){f=a[e+1>>0]|0;if(!(f<<24>>24)){h=a[e>>0]|0;j=h;h=d[b+72+(h&255)>>0]|0}else{h=a[e>>0]|0;j=h;h=sY(f,h)|0}do switch(h|0){case 12:{f=EY(12,b,e+2|0,m,g)|0;break a}case 13:{f=EY(13,b,e+2|0,m,g)|0;break a}case 2:{h=e+2|0;if((m-h|0)<=1){f=-1;break a}f=a[e+3>>0]|0;if(!(f<<24>>24))f=d[b+72+(d[h>>0]|0)>>0]|0;else f=sY(f,a[h>>0]|0)|0;switch(f|0){case 16:{f=FY(b,e+4|0,m,g)|0;break a}case 15:{f=AY(b,e+4|0,m,g)|0;break a}case 7:case 6:case 5:case 29:case 24:case 22:{c[g>>2]=e;f=29;break a}default:{c[g>>2]=h;f=0;break a}}}case 9:{if((e+2|0)==(m|0)){c[g>>2]=m;f=-15;break a}else i=7;break}case 10:case 21:{i=7;break}case 30:{f=uY(b,e+2|0,m,g)|0;break a}case 35:{c[g>>2]=e+2;f=38;break a}case 20:{c[g>>2]=e+2;f=25;break a}case 4:{h=e+2|0;f=m-h|0;if((f|0)<=1){f=-26;break a}if((a[e+3>>0]|0)==0?(a[h>>0]|0)==93:0){if((f|0)<=3){f=-1;break a}if((a[e+5>>0]|0)==0?(a[e+4>>0]|0)==62:0){c[g>>2]=e+6;f=34;break a}}c[g>>2]=h;f=26;break a}case 31:{c[g>>2]=e+2;f=23;break a}case 32:{h=e+2|0;if((m-h|0)<=1){f=-24;break a}f=a[e+3>>0]|0;if(!(f<<24>>24))f=d[b+72+(d[h>>0]|0)>>0]|0;else f=sY(f,a[h>>0]|0)|0;switch(f|0){case 33:{c[g>>2]=e+4;f=36;break a}case 15:{c[g>>2]=e+4;f=35;break a}case 34:{c[g>>2]=e+4;f=37;break a}case 32:case 36:case 35:case 11:case 21:case 10:case 9:{c[g>>2]=h;f=24;break a}default:{c[g>>2]=h;f=0;break a}}}case 36:{c[g>>2]=e+2;f=21;break a}case 11:{c[g>>2]=e+2;f=17;break a}case 19:{f=GY(b,e+2|0,m,g)|0;break a}case 5:{if((m-i|0)<2){f=-2;break a}c[g>>2]=e;f=0;break a}case 6:{if((m-i|0)<3){f=-2;break a}c[g>>2]=e;f=0;break a}case 7:{if((m-i|0)<4){f=-2;break a}c[g>>2]=e;f=0;break a}case 24:case 22:{f=18;i=61;break}case 23:case 27:case 26:case 25:{f=19;i=61;break}case 29:{i=f&255;h=j&255;f=h>>>5;h=1<<(h&31);if(!(h&c[56836+((f|d[140706+i>>0]<<3)<<2)>>2]))if(!(c[56836+((d[140962+i>>0]<<3|f)<<2)>>2]&h))i=64;else{f=19;i=61}else{f=18;i=61}break}default:i=64}while(0);if((i|0)==7){k=m;b=b+72|0;j=e;b:while(1){i=j;j=j+2|0;if((k-j|0)<=1){i=28;break}f=a[i+3>>0]|0;h=a[j>>0]|0;if(!(f<<24>>24))f=d[b+(h&255)>>0]|0;else f=sY(f,h)|0;switch(f|0){case 10:case 21:continue b;case 9:break;default:{i=27;break b}}if((i+4|0)==(m|0)){i=27;break}}if((i|0)==27){c[g>>2]=j;f=15;break}else if((i|0)==28){c[g>>2]=j;f=15;break}}else if((i|0)==61){l=b+72|0;h=e+2|0;c:while(1){e=f&255;d:while(1){k=m-h|0;if((k|0)<=1){i=104;break c}i=a[h+1>>0]|0;j=a[h>>0]|0;if(!(i<<24>>24))b=d[l+(j&255)>>0]|0;else b=sY(i,j)|0;switch(b|0){case 5:{i=73;break c}case 6:{i=74;break c}case 7:{i=76;break c}case 10:case 9:case 21:case 30:case 20:case 36:case 35:case 32:case 11:{i=78;break c}case 34:{i=94;break c}case 33:{i=97;break c}case 15:{i=100;break c}case 29:{k=j&255;if(!(1<<(k&31)&c[56836+((k>>>5|d[140962+(i&255)>>0]<<3)<<2)>>2])){i=71;break c}break}case 27:case 26:case 25:case 24:case 22:break;case 23:{k=h+2|0;switch(e&63){case 41:{f=19;h=k;continue c}case 18:break d;default:{h=k;continue d}}}default:{i=103;break c}}h=h+2|0}b=m-k|0;if((b|0)<=1){f=-1;break a}f=a[h+3>>0]|0;i=a[k>>0]|0;if(!(f<<24>>24))j=d[l+(i&255)>>0]|0;else j=sY(f,i)|0;switch(j|0){case 5:{i=89;break c}case 6:{i=90;break c}case 7:{i=92;break c}case 29:{e=i&255;if(!(1<<(e&31)&c[56836+((e>>>5|d[140962+(f&255)>>0]<<3)<<2)>>2])){i=87;break c}break}case 27:case 26:case 25:case 24:case 22:break;default:{f=19;h=k;continue c}}f=41;h=h+4|0}switch(i|0){case 71:{c[g>>2]=h;f=0;break a}case 73:{c[g>>2]=h;f=0;break a}case 74:{if((k|0)<3){f=-2;break a}c[g>>2]=h;f=0;break a}case 76:{if((k|0)<4){f=-2;break a}c[g>>2]=h;f=0;break a}case 78:{c[g>>2]=h;break a}case 87:{c[g>>2]=k;f=0;break a}case 89:{c[g>>2]=k;f=0;break a}case 90:{if((b|0)<3){f=-2;break a}c[g>>2]=k;f=0;break a}case 92:{if((b|0)<4){f=-2;break a}c[g>>2]=k;f=0;break a}case 94:if((f|0)==19){c[g>>2]=h;f=0;break a}else{c[g>>2]=h+2;f=32;break a}case 97:if((f|0)==19){c[g>>2]=h;f=0;break a}else{c[g>>2]=h+2;f=31;break a}case 100:if((f|0)==19){c[g>>2]=h;f=0;break a}else{c[g>>2]=h+2;f=30;break a}case 103:{c[g>>2]=h;f=0;break a}case 104:{f=0-f|0;break a}}}else if((i|0)==64){c[g>>2]=e;f=0;break}}else f=-1}else f=-4;while(0);return f|0}function dY(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0;a:do if(e>>>0>>0){h=e;i=f-h|0;k=(i&1|0)==0;i=i&-2;j=(i|0)==0;i=k|j?f:e+i|0;if(k|j^1){f=a[e+1>>0]|0;if(!(f<<24>>24))f=d[b+72+(d[e>>0]|0)>>0]|0;else f=sY(f,a[e>>0]|0)|0;do switch(f|0){case 2:{f=xY(b,e+2|0,i,g)|0;break a}case 3:{f=tY(b,e+2|0,i,g)|0;break a}case 9:{h=e+2|0;if((i-h|0)<=1){f=-3;break a}f=a[e+3>>0]|0;if(!(f<<24>>24))f=d[b+72+(d[h>>0]|0)>>0]|0;else f=sY(f,a[h>>0]|0)|0;c[g>>2]=(f|0)==10?e+4|0:h;f=7;break a}case 10:{c[g>>2]=e+2;f=7;break a}case 4:{h=e+2|0;if((i-h|0)<=1){f=-5;break a}if((a[e+3>>0]|0)==0?(a[h>>0]|0)==93:0){f=e+4|0;if((i-f|0)<=1){f=-5;break a}if((a[e+5>>0]|0)==0?(a[f>>0]|0)==62:0){c[g>>2]=f;f=0;break a}else f=i}else f=i;break}case 5:{f=i;if((f-h|0)<2){f=-2;break a}h=e+2|0;break}case 6:{f=i;if((f-h|0)<3){f=-2;break a}h=e+3|0;break}case 7:{f=i;if((f-h|0)<4){f=-2;break a}h=e+4|0;break}case 8:case 1:case 0:{c[g>>2]=e;f=0;break a}default:{h=e+2|0;f=i}}while(0);j=b+72|0;b=h;b:while(1){e=f-b|0;if((e|0)<=1){h=52;break}h=a[b+1>>0]|0;i=a[b>>0]|0;if(!(h<<24>>24))h=d[j+(i&255)>>0]|0;else h=sY(h,i)|0;switch(h|0){case 10:case 9:case 8:case 1:case 0:case 2:case 3:{h=50;break b}case 5:{b=b+2|0;continue b}case 6:{if((e|0)<3){h=38;break b}b=b+3|0;continue b}case 7:{if((e|0)<4){h=41;break b}b=b+4|0;continue b}case 4:{if((e|0)<=3){h=50;break b}h=b+2|0;if(a[b+3>>0]|0){b=h;continue b}if((a[h>>0]|0)!=93){b=h;continue b}if((e|0)<=5){h=50;break b}i=b+4|0;if(a[b+5>>0]|0){b=h;continue b}if((a[i>>0]|0)==62){h=49;break b}else{b=h;continue b}}default:{b=b+2|0;continue b}}}if((h|0)==38){c[g>>2]=b;f=6;break}else if((h|0)==41){c[g>>2]=b;f=6;break}else if((h|0)==49){c[g>>2]=i;f=0;break}else if((h|0)==50){c[g>>2]=b;f=6;break}else if((h|0)==52){c[g>>2]=b;f=6;break}}else f=-1}else f=-4;while(0);return f|0}function eY(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0;a:do if(e>>>0>>0){h=e;i=f-h|0;k=(i&1|0)==0;i=i&-2;j=(i|0)==0;i=k|j?f:e+i|0;if(k|j^1){f=a[e+1>>0]|0;if(!(f<<24>>24))f=d[b+72+(d[e>>0]|0)>>0]|0;else f=sY(f,a[e>>0]|0)|0;switch(f|0){case 4:{h=e+2|0;if((i-h|0)<=1){f=-1;break a}if((a[e+3>>0]|0)==0?(a[h>>0]|0)==93:0){f=e+4|0;if((i-f|0)<=1){f=-1;break a}if((a[e+5>>0]|0)==0?(a[f>>0]|0)==62:0){c[g>>2]=e+6;f=40;break a}}break}case 9:{h=e+2|0;if((i-h|0)<=1){f=-1;break a}f=a[e+3>>0]|0;if(!(f<<24>>24))f=d[b+72+(d[h>>0]|0)>>0]|0;else f=sY(f,a[h>>0]|0)|0;c[g>>2]=(f|0)==10?e+4|0:h;f=7;break a}case 10:{c[g>>2]=e+2;f=7;break a}case 5:{f=i;if((f-h|0)<2){f=-2;break a}h=e+2|0;i=f;break}case 6:{f=i;if((f-h|0)<3){f=-2;break a}h=e+3|0;i=f;break}case 7:{f=i;if((f-h|0)<4){f=-2;break a}h=e+4|0;i=f;break}case 8:case 1:case 0:{c[g>>2]=e;f=0;break a}default:h=e+2|0}j=b+72|0;b=h;b:while(1){e=i-b|0;if((e|0)<=1){h=40;break}f=a[b+1>>0]|0;h=a[b>>0]|0;if(!(f<<24>>24))f=d[j+(h&255)>>0]|0;else f=sY(f,h)|0;switch(f|0){case 10:case 9:case 8:case 1:case 0:case 4:{h=38;break b}case 6:{if((e|0)<3){h=35;break b}else f=3;break}case 7:{if((e|0)<4){h=37;break b}else f=4;break}default:f=2}b=b+f|0}if((h|0)==35){c[g>>2]=b;f=6;break}else if((h|0)==37){c[g>>2]=b;f=6;break}else if((h|0)==38){c[g>>2]=b;f=6;break}else if((h|0)==40){c[g>>2]=b;f=6;break}}else f=-1}else f=-4;while(0);return f|0}function fY(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;k=f-e|0;k=(k&1|0)==0?f:e+(k&-2)|0;j=b+72|0;i=0;f=e;a:while(1){h=k-f|0;if((h|0)<=1){f=-1;break}b=a[f+1>>0]|0;e=a[f>>0]|0;if(!(b<<24>>24))b=d[j+(e&255)>>0]|0;else b=sY(b,e)|0;switch(b|0){case 8:case 1:case 0:{l=12;break a}case 5:{h=i;f=f+2|0;i=h;continue a}case 6:{if((h|0)<3){f=-2;break a}h=i;f=f+3|0;i=h;continue a}case 7:{if((h|0)<4){f=-2;break a}h=i;f=f+4|0;i=h;continue a}case 2:{b=f+2|0;if((k-b|0)<=1){f=-1;break a}if(a[f+3>>0]|0){h=i;f=b;i=h;continue a}if((a[b>>0]|0)!=33){h=i;f=b;i=h;continue a}b=f+4|0;if((k-b|0)<=1){f=-1;break a}if(a[f+5>>0]|0){h=i;f=b;i=h;continue a}h=(a[b>>0]|0)==91;i=i+(h&1)|0;f=h?f+6|0:b;continue a}case 4:{b=f+2|0;if((k-b|0)<=1){f=-1;break a}if(a[f+3>>0]|0){h=i;f=b;i=h;continue a}if((a[b>>0]|0)!=93){h=i;f=b;i=h;continue a}b=f+4|0;if((k-b|0)<=1){f=-1;break a}if(a[f+5>>0]|0){h=i;f=b;i=h;continue a}if((a[b>>0]|0)!=62){h=i;f=b;i=h;continue a}f=f+6|0;if(!i){l=26;break a}i=i+-1|0;continue a}default:{h=i;f=f+2|0;i=h;continue a}}}if((l|0)==12){c[g>>2]=f;f=0}else if((l|0)==26){c[g>>2]=f;f=42}return f|0}function gY(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;do if(e>>>0>>0){k=f;if((k-e|0)>1){l=b+72|0;j=e;a:while(1){if((k-j|0)<=1){i=30;break}h=a[j+1>>0]|0;i=a[j>>0]|0;if(!(h<<24>>24))h=d[l+(i&255)>>0]|0;else h=sY(h,i)|0;switch(h|0){case 3:{i=11;break a}case 2:{i=14;break a}case 10:{i=15;break a}case 9:{i=18;break a}case 21:{i=25;break a}case 5:{h=2;break}case 6:{h=3;break}case 7:{h=4;break}default:h=2}j=j+h|0}if((i|0)==11)if((j|0)==(e|0)){h=tY(b,e+2|0,f,g)|0;break}else{c[g>>2]=j;h=6;break}else if((i|0)==14){c[g>>2]=j;h=0;break}else if((i|0)==15)if((j|0)==(e|0)){c[g>>2]=e+2;h=7;break}else{c[g>>2]=j;h=6;break}else if((i|0)==18){if((j|0)!=(e|0)){c[g>>2]=j;h=6;break}j=e+2|0;if((k-j|0)<=1){h=-3;break}h=a[e+3>>0]|0;i=a[j>>0]|0;if(!(h<<24>>24))h=d[l+(i&255)>>0]|0;else h=sY(h,i)|0;c[g>>2]=(h|0)==10?e+4|0:j;h=7;break}else if((i|0)==25)if((j|0)==(e|0)){c[g>>2]=e+2;h=39;break}else{c[g>>2]=j;h=6;break}else if((i|0)==30){c[g>>2]=j;h=6;break}}else h=-1}else h=-4;while(0);return h|0}function hY(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;do if(e>>>0>>0){k=f;if((k-e|0)>1){l=b+72|0;j=e;a:while(1){if((k-j|0)<=1){i=29;break}h=a[j+1>>0]|0;i=a[j>>0]|0;if(!(h<<24>>24))h=d[l+(i&255)>>0]|0;else h=sY(h,i)|0;switch(h|0){case 3:{i=11;break a}case 30:{i=14;break a}case 10:{i=17;break a}case 9:{i=20;break a}case 5:{h=2;break}case 6:{h=3;break}case 7:{h=4;break}default:h=2}j=j+h|0}if((i|0)==11)if((j|0)==(e|0)){h=tY(b,e+2|0,f,g)|0;break}else{c[g>>2]=j;h=6;break}else if((i|0)==14)if((j|0)==(e|0)){h=uY(b,e+2|0,f,g)|0;h=(h|0)==22?0:h;break}else{c[g>>2]=j;h=6;break}else if((i|0)==17)if((j|0)==(e|0)){c[g>>2]=e+2;h=7;break}else{c[g>>2]=j;h=6;break}else if((i|0)==20){if((j|0)!=(e|0)){c[g>>2]=j;h=6;break}j=e+2|0;if((k-j|0)<=1){h=-3;break}h=a[e+3>>0]|0;i=a[j>>0]|0;if(!(h<<24>>24))h=d[l+(i&255)>>0]|0;else h=sY(h,i)|0;c[g>>2]=(h|0)==10?e+4|0:j;h=7;break}else if((i|0)==29){c[g>>2]=j;h=6;break}}else h=-1}else h=-4;while(0);return h|0}function iY(b,c,d,e){b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0;f=d;b=c;while(1){c=a[e>>0]|0;if(!(c<<24>>24)){g=7;break}if((f-b|0)<2){b=0;break}if(a[b+1>>0]|0){b=0;break}if((a[b>>0]|0)!=c<<24>>24){b=0;break}e=e+1|0;b=b+2|0}if((g|0)==7)b=(b|0)==(d|0)&1;return b|0}function jY(b,c){b=b|0;c=c|0;var e=0,f=0,g=0;g=b+72|0;f=c;a:while(1){b=a[f+1>>0]|0;e=a[f>>0]|0;if(!(b<<24>>24))b=d[g+(e&255)>>0]|0;else b=sY(b,e)|0;switch(b|0){case 5:{b=2;break}case 6:{b=3;break}case 7:{b=4;break}case 27:case 26:case 25:case 24:case 23:case 22:case 29:{b=2;break}default:break a}f=f+b|0}return f-c|0}function kY(b,c){b=b|0;c=c|0;var e=0,f=0;f=b+72|0;a:while(1){b=a[c+1>>0]|0;e=a[c>>0]|0;if(!(b<<24>>24))b=d[f+(e&255)>>0]|0;else b=sY(b,e)|0;switch(b|0){case 21:case 9:case 10:break;default:break a}c=c+2|0}return c|0}function lY(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=b+72|0;m=0;n=0;b=1;a:while(1){l=e+2|0;i=e+3|0;h=a[i>>0]|0;j=h<<24>>24==0;k=a[l>>0]|0;if(j)h=d[o+(k&255)>>0]|0;else h=sY(h,k)|0;do switch(h|0){case 5:{if(b|0){i=b;j=n;k=m;e=l;b=i;n=j;m=k;continue a}if((n|0)>=(f|0)){j=n;k=m;b=1;e=l;n=j;m=k;continue a}c[g+(n<<4)>>2]=l;a[g+(n<<4)+12>>0]=1;j=n;k=m;b=1;e=l;n=j;m=k;continue a}case 6:{if(b|0){j=b;k=n;l=m;e=i;b=j;n=k;m=l;continue a}if((n|0)>=(f|0)){k=n;l=m;b=1;e=i;n=k;m=l;continue a}c[g+(n<<4)>>2]=l;a[g+(n<<4)+12>>0]=1;k=n;l=m;b=1;e=i;n=k;m=l;continue a}case 7:{if(!b)if((n|0)<(f|0)){c[g+(n<<4)>>2]=l;a[g+(n<<4)+12>>0]=1;b=1}else b=1;k=n;l=m;e=e+4|0;n=k;m=l;continue a}case 24:case 22:case 29:{if(b|0){i=b;j=n;k=m;e=l;b=i;n=j;m=k;continue a}if((n|0)>=(f|0)){j=n;k=m;b=1;e=l;n=j;m=k;continue a}c[g+(n<<4)>>2]=l;a[g+(n<<4)+12>>0]=1;j=n;k=m;b=1;e=l;n=j;m=k;continue a}case 12:{if((b|0)!=2){if((n|0)>=(f|0)){k=n;m=12;b=2;e=l;n=k;continue a}c[g+(n<<4)+4>>2]=e+4;k=n;m=12;b=2;e=l;n=k;continue a}if((m|0)!=12){j=n;k=m;b=2;e=l;n=j;m=k;continue a}if((n|0)<(f|0))c[g+(n<<4)+8>>2]=l;m=12;n=n+1|0;b=0;e=l;continue a}case 13:{if((b|0)!=2){if((n|0)>=(f|0)){k=n;m=13;b=2;e=l;n=k;continue a}c[g+(n<<4)+4>>2]=e+4;k=n;m=13;b=2;e=l;n=k;continue a}if((m|0)!=13){j=n;k=m;b=2;e=l;n=j;m=k;continue a}if((n|0)<(f|0))c[g+(n<<4)+8>>2]=l;m=13;n=n+1|0;b=0;e=l;continue a}case 3:{if((n|0)>=(f|0)){i=b;j=n;k=m;e=l;b=i;n=j;m=k;continue a}a[g+(n<<4)+12>>0]=0;i=b;j=n;k=m;e=l;b=i;n=j;m=k;continue a}case 21:{switch(b|0){case 1:{j=n;k=m;b=0;e=l;n=j;m=k;continue a}case 2:break;default:{i=b;j=n;k=m;e=l;b=i;n=j;m=k;continue a}}if((n|0)>=(f|0)){j=n;k=m;b=2;e=l;n=j;m=k;continue a}i=g+(n<<4)+12|0;if(!(a[i>>0]|0)){j=n;k=m;b=2;e=l;n=j;m=k;continue a}do if(j&(l|0)!=(c[g+(n<<4)+4>>2]|0)&k<<24>>24==32){h=a[e+5>>0]|0;b=a[e+4>>0]|0;if(!(h<<24>>24)){if(b<<24>>24==32)break;b=d[o+(b&255)>>0]|0}else b=sY(h,b)|0;if((b|0)!=(m|0)){j=n;k=m;b=2;e=l;n=j;m=k;continue a}}while(0);a[i>>0]=0;j=n;k=m;b=2;e=l;n=j;m=k;continue a}case 10:case 9:{switch(b|0){case 1:{j=n;k=m;b=0;e=l;n=j;m=k;continue a}case 2:break;default:{i=b;j=n;k=m;e=l;b=i;n=j;m=k;continue a}}if((n|0)>=(f|0)){j=n;k=m;b=2;e=l;n=j;m=k;continue a}a[g+(n<<4)+12>>0]=0;j=n;k=m;b=2;e=l;n=j;m=k;continue a}case 17:case 11:if((b|0)==2){j=n;k=m;b=2;e=l;n=j;m=k;continue a}else break a;default:{i=b;j=n;k=m;e=l;b=i;n=j;m=k;continue a}}while(0)}return n|0}function mY(b,c){b=b|0;c=c|0;var d=0,e=0;b=c+4|0;a:do if((a[c+5>>0]|0)==0?(a[b>>0]|0)==120:0){c=c+6|0;b=0;while(1){b:while(1){if(!(a[c+1>>0]|0)){d=a[c>>0]|0;if(d<<24>>24==59){e=17;break a}d=d<<24>>24;switch(d|0){case 57:case 56:case 55:case 54:case 53:case 52:case 51:case 50:case 49:case 48:{e=8;break b}case 70:case 69:case 68:case 67:case 66:case 65:{e=9;break b}case 102:case 101:case 100:case 99:case 98:case 97:{e=10;break b}default:{}}}c=c+2|0}if((e|0)==8){e=0;b=d+-48|b<<4}else if((e|0)==9){e=0;b=(b<<4)+-55+d|0}else if((e|0)==10){e=0;b=(b<<4)+-87+d|0}if((b|0)<1114112)c=c+2|0;else{b=-1;break}}}else{d=b;b=0;e=13}while(0);c:do if((e|0)==13)while(1){e=0;if(!(a[d+1>>0]|0)){c=a[d>>0]|0;if(c<<24>>24==59){e=17;break c}c=c<<24>>24}else c=-1;b=(b*10|0)+-48+c|0;if((b|0)>=1114112){b=-1;break}else{d=d+2|0;e=13}}while(0);if((e|0)==17)b=jX(b)|0;return b|0}function nY(b,c,d){b=b|0;c=c|0;d=d|0;var e=0;a:do switch((d-c|0)/2|0|0){case 2:{if((a[c+3>>0]|0)==0?(a[c+2>>0]|0)==116:0){if(!(a[c+1>>0]|0))b=a[c>>0]|0;else b=-1;b=(b|0)==108?60:(b|0)==103?62:0}else e=27;break}case 3:{if((((((a[c+1>>0]|0)==0?(a[c>>0]|0)==97:0)?(a[c+3>>0]|0)==0:0)?(a[c+2>>0]|0)==109:0)?(a[c+5>>0]|0)==0:0)?(a[c+4>>0]|0)==112:0)b=38;else e=27;break}case 4:{if(!(a[c+1>>0]|0))switch(a[c>>0]|0){case 113:{if(a[c+3>>0]|0){e=27;break a}if((a[c+2>>0]|0)!=117){e=27;break a}if(a[c+5>>0]|0){e=27;break a}if((a[c+4>>0]|0)!=111){e=27;break a}if(a[c+7>>0]|0){e=27;break a}if((a[c+6>>0]|0)==116){b=34;break a}else{e=27;break a}}case 97:{if(a[c+3>>0]|0){e=27;break a}if((a[c+2>>0]|0)!=112){e=27;break a}if(a[c+5>>0]|0){e=27;break a}if((a[c+4>>0]|0)!=111){e=27;break a}if(a[c+7>>0]|0){e=27;break a}if((a[c+6>>0]|0)==115){b=39;break a}else{e=27;break a}}default:{e=27;break a}}else e=27;break}default:e=27}while(0);if((e|0)==27)b=0;return b|0}function oY(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0;j=b+72|0;k=g+4|0;while(1){if((f-e|0)<=1)break;b=a[e+1>>0]|0;h=a[e>>0]|0;if(!(b<<24>>24))b=d[j+(h&255)>>0]|0;else b=sY(b,h)|0;switch(b|0){case 5:{e=e+2|0;break}case 6:{e=e+3|0;break}case 7:{e=e+4|0;break}case 10:{c[k>>2]=-1;c[g>>2]=(c[g>>2]|0)+1;e=e+2|0;break}case 9:{c[g>>2]=(c[g>>2]|0)+1;i=e+2|0;if((f-i|0)>1){b=a[e+3>>0]|0;h=a[i>>0]|0;if(!(b<<24>>24))b=d[j+(h&255)>>0]|0;else b=sY(b,h)|0;e=(b|0)==10?e+4|0:i}else e=i;c[k>>2]=-1;break}default:e=e+2|0}c[k>>2]=(c[k>>2]|0)+1}return}function pY(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0;j=f+-2|0;i=b+72|0;f=e;a:while(1){h=f+2|0;if((j-h|0)<=1){f=1;break}f=a[f+3>>0]|0;b=f<<24>>24==0;e=a[h>>0]|0;if(b)f=d[i+(e&255)>>0]|0;else f=sY(f,e)|0;switch(f|0){case 23:case 19:case 30:case 33:case 16:case 18:case 10:case 9:case 15:case 14:case 17:case 35:case 34:case 32:case 31:case 13:case 27:case 24:case 25:{f=h;continue a}case 21:if(b&e<<24>>24==9){k=12;break a}else{f=h;continue a}case 22:case 26:{if(!b){k=12;break a}if(e<<24>>24>=0){f=h;continue a}break}default:if(!b){k=12;break a}}switch(e<<24>>24|0){case 64:case 36:{f=h;break}default:{k=12;break a}}}if((k|0)==12){c[g>>2]=h;f=0}return f|0}function qY(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0;j=c[e>>2]|0;k=j+(f-j&-2)|0;l=k;m=h;a:while(1){if(j>>>0>=k>>>0){b=0;break}i=a[j>>0]|0;b=a[j+1>>0]|0;f=b&255;switch(b<<24>>24){case 0:{if(i<<24>>24>-1){b=c[g>>2]|0;if((b|0)==(h|0)){b=2;break a}c[g>>2]=b+1;a[b>>0]=i;b=j}else n=7;break}case 7:case 6:case 5:case 4:case 3:case 2:case 1:{n=7;break}case -37:case -38:case -39:case -40:{b=c[g>>2]|0;if((m-b|0)<4){b=2;break a}if((l-j|0)<4){b=1;break a}o=i&255;i=(f<<2&12|o>>>6)+1|0;c[g>>2]=b+1;a[b>>0]=i>>>2|240;b=c[g>>2]|0;c[g>>2]=b+1;a[b>>0]=o>>>2&15|i<<4&48|128;b=j+2|0;i=d[b>>0]|0;f=(o<<4&48|i>>>6|a[j+3>>0]<<2&12|128)&255;j=c[g>>2]|0;c[g>>2]=j+1;a[j>>0]=f;j=c[g>>2]|0;c[g>>2]=j+1;a[j>>0]=i&63|128;break}default:{b=c[g>>2]|0;if((m-b|0)<3){b=2;break a}c[g>>2]=b+1;a[b>>0]=f>>>4|224;o=i&255;b=c[g>>2]|0;c[g>>2]=b+1;a[b>>0]=o>>>6|f<<2&60|128;b=c[g>>2]|0;c[g>>2]=b+1;a[b>>0]=o&63|128;b=j}}if((n|0)==7){n=0;b=c[g>>2]|0;if((m-b|0)<2){b=2;break}o=i&255;c[g>>2]=b+1;a[b>>0]=o>>>6|f<<2|192;b=c[g>>2]|0;c[g>>2]=b+1;a[b>>0]=o&63|128;b=j}j=b+2|0}c[e>>2]=j;return b|0}function rY(e,f,g,h,i){e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0;j=c[f>>2]|0;l=g-j&-2;e=j+l|0;if((l|0)>(i-(c[h>>2]|0)|0)){k=e+-2|0;g=(a[k+1>>0]&-8)<<24>>24==-40;l=g&1;e=g?k:e}else l=0;g=j;while(1){j=g>>>0>>0;k=c[h>>2]|0;if(!(j&k>>>0>>0))break;j=((d[g+1>>0]|0)<<8|(d[g>>0]|0))&65535;c[h>>2]=k+2;b[k>>1]=j;k=(c[f>>2]|0)+2|0;c[f>>2]=k;g=k}return ((k|0)!=(i|0)|j^1?l:2)|0}function sY(a,b){a=a|0;b=b|0;var c=0;switch(a<<24>>24){case -37:case -38:case -39:case -40:{a=7;break}case -33:case -34:case -35:case -36:{a=8;break}case -1:{if((b&255)>253)a=0;else c=4;break}default:c=4}if((c|0)==4)a=29;return a|0}function tY(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;l=f;j=l-e|0;a:do if((j|0)>1){k=a[e+1>>0]|0;if(!(k<<24>>24)){i=a[e>>0]|0;h=d[b+72+(i&255)>>0]|0}else{i=a[e>>0]|0;h=sY(k,i)|0}switch(h|0){case 29:{j=i&255;if(!(1<<(j&31)&c[56836+((j>>>5|(d[140706+(k&255)>>0]|0)<<3)<<2)>>2])){c[g>>2]=e;b=0;break a}break}case 24:case 22:break;case 5:{c[g>>2]=e;b=0;break a}case 6:{if((j|0)<3){b=-2;break a}c[g>>2]=e;b=0;break a}case 7:{if((j|0)<4){b=-2;break a}c[g>>2]=e;b=0;break a}case 19:{b=vY(b,e+2|0,f,g)|0;break a}default:{c[g>>2]=e;b=0;break a}}k=b+72|0;j=e;b:while(1){i=j+2|0;e=l-i|0;if((e|0)<=1){b=-1;break a}b=a[j+3>>0]|0;h=a[i>>0]|0;if(!(b<<24>>24))f=d[k+(h&255)>>0]|0;else f=sY(b,h)|0;switch(f|0){case 27:case 26:case 25:case 24:case 22:{j=i;continue b}case 5:{h=23;break b}case 6:{h=24;break b}case 7:{h=26;break b}case 18:{h=28;break b}case 29:break;default:{h=29;break b}}e=h&255;if(!(1<<(e&31)&c[56836+((e>>>5|(d[140962+(b&255)>>0]|0)<<3)<<2)>>2])){h=22;break}else j=i}if((h|0)==22){c[g>>2]=i;b=0;break}else if((h|0)==23){c[g>>2]=i;b=0;break}else if((h|0)==24){if((e|0)<3){b=-2;break}c[g>>2]=i;b=0;break}else if((h|0)==26){if((e|0)<4){b=-2;break}c[g>>2]=i;b=0;break}else if((h|0)==28){c[g>>2]=j+4;b=9;break}else if((h|0)==29){c[g>>2]=i;b=0;break}}else b=-1;while(0);return b|0}function uY(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;j=f-e|0;a:do if((j|0)>1){k=a[e+1>>0]|0;if(!(k<<24>>24)){i=a[e>>0]|0;h=d[b+72+(i&255)>>0]|0}else{i=a[e>>0]|0;h=sY(k,i)|0}switch(h|0){case 29:{l=i&255;if(!(1<<(l&31)&c[56836+((l>>>5|(d[140706+(k&255)>>0]|0)<<3)<<2)>>2])){c[g>>2]=e;f=0;break a}break}case 24:case 22:break;case 5:{c[g>>2]=e;f=0;break a}case 6:{if((j|0)<3){f=-2;break a}c[g>>2]=e;f=0;break a}case 7:{if((j|0)<4){f=-2;break a}c[g>>2]=e;f=0;break a}case 30:case 9:case 10:case 21:{c[g>>2]=e;f=22;break a}default:{c[g>>2]=e;f=0;break a}}l=b+72|0;b=e;b:while(1){k=b+2|0;e=f-k|0;if((e|0)<=1){f=-1;break a}h=a[b+3>>0]|0;i=a[k>>0]|0;if(!(h<<24>>24))j=d[l+(i&255)>>0]|0;else j=sY(h,i)|0;switch(j|0){case 27:case 26:case 25:case 24:case 22:{b=k;continue b}case 5:{h=23;break b}case 6:{h=24;break b}case 7:{h=26;break b}case 18:{h=28;break b}case 29:break;default:{h=29;break b}}e=i&255;if(!(1<<(e&31)&c[56836+((e>>>5|(d[140962+(h&255)>>0]|0)<<3)<<2)>>2])){h=22;break}else b=k}if((h|0)==22){c[g>>2]=k;f=0;break}else if((h|0)==23){c[g>>2]=k;f=0;break}else if((h|0)==24){if((e|0)<3){f=-2;break}c[g>>2]=k;f=0;break}else if((h|0)==26){if((e|0)<4){f=-2;break}c[g>>2]=k;f=0;break}else if((h|0)==28){c[g>>2]=b+4;f=28;break}else if((h|0)==29){c[g>>2]=k;f=0;break}}else f=-1;while(0);return f|0}function vY(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0;k=f;a:do if((k-e|0)>1){i=a[e+1>>0]|0;h=a[e>>0]|0;do if(!(i<<24>>24))if(h<<24>>24==120){h=wY(b,e+2|0,f,g)|0;break a}else{h=d[b+72+(h&255)>>0]|0;break}else h=sY(i,h)|0;while(0);if((h|0)!=25){c[g>>2]=e;h=0;break}j=b+72|0;b=e;b:while(1){i=b+2|0;if((k-i|0)<=1){h=-1;break a}h=a[b+3>>0]|0;f=a[i>>0]|0;if(!(h<<24>>24))h=d[j+(f&255)>>0]|0;else h=sY(h,f)|0;switch(h|0){case 25:{b=i;break}case 18:{f=15;break b}default:{f=16;break b}}}if((f|0)==15){c[g>>2]=b+4;h=10;break}else if((f|0)==16){c[g>>2]=i;h=0;break}}else h=-1;while(0);return h|0}function wY(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;a:do if((f-e|0)>1){h=a[e+1>>0]|0;if(!(h<<24>>24))h=d[b+72+(d[e>>0]|0)>>0]|0;else h=sY(h,a[e>>0]|0)|0;if((h&-2|0)!=24){c[g>>2]=e;f=0;break}j=b+72|0;b:while(1){i=e+2|0;if((f-i|0)<=1){f=-1;break a}h=a[e+3>>0]|0;b=a[i>>0]|0;if(!(h<<24>>24))h=d[j+(b&255)>>0]|0;else h=sY(h,b)|0;switch(h|0){case 24:case 25:{e=i;break}case 18:{h=13;break b}default:{h=14;break b}}}if((h|0)==13){c[g>>2]=e+4;f=10;break}else if((h|0)==14){c[g>>2]=i;f=0;break}}else f=-1;while(0);return f|0}function xY(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=f;j=o-e|0;a:do if((j|0)>1){k=a[e+1>>0]|0;if(!(k<<24>>24)){i=a[e>>0]|0;h=d[b+72+(i&255)>>0]|0}else{i=a[e>>0]|0;h=sY(k,i)|0}switch(h|0){case 29:{m=i&255;if(!(1<<(m&31)&c[56836+((m>>>5|d[140706+(k&255)>>0]<<3)<<2)>>2])){c[g>>2]=e;h=0;break a}break}case 24:case 22:break;case 5:{c[g>>2]=e;h=0;break a}case 6:{if((j|0)<3){h=-2;break a}c[g>>2]=e;h=0;break a}case 7:{if((j|0)<4){h=-2;break a}c[g>>2]=e;h=0;break a}case 16:{i=e+2|0;if((o-i|0)<=1){h=-1;break a}h=a[e+3>>0]|0;if(!(h<<24>>24))h=d[b+72+(d[i>>0]|0)>>0]|0;else h=sY(h,a[i>>0]|0)|0;switch(h|0){case 27:{h=yY(b,e+4|0,f,g)|0;break a}case 20:{h=zY(e+4|0,f,g)|0;break a}default:{c[g>>2]=i;h=0;break a}}}case 15:{h=AY(b,e+2|0,f,g)|0;break a}case 17:{h=BY(b,e+2|0,f,g)|0;break a}default:{c[g>>2]=e;h=0;break a}}m=b+72|0;l=0;h=e+2|0;b:while(1){c:while(1){i=o-h|0;if((i|0)<=1){h=-1;break a}j=a[h+1>>0]|0;k=a[h>>0]|0;if(!(j<<24>>24))e=d[m+(k&255)>>0]|0;else e=sY(j,k)|0;switch(e|0){case 5:{n=34;break b}case 6:{n=35;break b}case 7:{n=37;break b}case 10:case 9:case 21:{n=55;break b}case 11:{n=69;break b}case 17:break b;case 23:break c;case 29:{e=k&255;if(!(1<<(e&31)&c[56836+((e>>>5|d[140962+(j&255)>>0]<<3)<<2)>>2])){n=32;break b}break}case 27:case 26:case 25:case 24:case 22:break;default:{n=75;break b}}h=h+2|0}if(l|0){n=40;break}k=h+2|0;e=o-k|0;if((e|0)<=1){h=-1;break a}l=a[h+3>>0]|0;i=a[k>>0]|0;if(!(l<<24>>24))j=d[m+(i&255)>>0]|0;else j=sY(l,i)|0;switch(j|0){case 5:{n=49;break b}case 6:{n=50;break b}case 7:{n=52;break b}case 29:{e=i&255;if(!(1<<(e&31)&c[56836+((e>>>5|d[140706+(l&255)>>0]<<3)<<2)>>2])){n=47;break b}break}case 24:case 22:break;default:{n=54;break b}}l=1;h=h+4|0}d:switch(n|0){case 32:{c[g>>2]=h;h=0;break a}case 34:{c[g>>2]=h;h=0;break a}case 35:{if((i|0)<3){h=-2;break a}c[g>>2]=h;h=0;break a}case 37:{if((i|0)<4){h=-2;break a}c[g>>2]=h;h=0;break a}case 40:{c[g>>2]=h;h=0;break a}case 47:{c[g>>2]=k;h=0;break a}case 49:{c[g>>2]=k;h=0;break a}case 50:{if((e|0)<3){h=-2;break a}c[g>>2]=k;h=0;break a}case 52:{if((e|0)<4){h=-2;break a}c[g>>2]=k;h=0;break a}case 54:{c[g>>2]=k;h=0;break a}case 55:{e:while(1){n=0;i=h+2|0;j=o-i|0;if((j|0)<=1){h=-1;break a}k=a[h+3>>0]|0;e=a[i>>0]|0;if(!(k<<24>>24))l=d[m+(e&255)>>0]|0;else l=sY(k,e)|0;switch(l|0){case 11:{h=i;n=69;break d}case 17:{h=i;break d}case 10:case 9:case 21:{h=i;n=55;break}case 29:{n=60;break e}case 24:case 22:break e;case 5:{n=63;break e}case 6:{n=64;break e}case 7:{n=66;break e}default:{n=68;break e}}}if((n|0)==60){o=e&255;if(!(1<<(o&31)&c[56836+((o>>>5|d[140706+(k&255)>>0]<<3)<<2)>>2])){c[g>>2]=i;h=0;break a}}else if((n|0)==63){c[g>>2]=i;h=0;break a}else if((n|0)==64){if((j|0)<3){h=-2;break a}c[g>>2]=i;h=0;break a}else if((n|0)==66){if((j|0)<4){h=-2;break a}c[g>>2]=i;h=0;break a}else if((n|0)==68){c[g>>2]=i;h=0;break a}h=CY(b,h+4|0,f,g)|0;break a}case 75:{c[g>>2]=h;h=0;break a}}if((n|0)==69){c[g>>2]=h+2;h=2;break}i=h+2|0;if((o-i|0)>1){if((a[h+3>>0]|0)==0?(a[i>>0]|0)==62:0){c[g>>2]=h+4;h=4;break}c[g>>2]=i;h=0}else h=-1}else h=-1;while(0);return h|0}function yY(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0;j=f;a:do if((j-e|0)>1){if((a[e+1>>0]|0)==0?(a[e>>0]|0)==45:0){i=b+72|0;h=e+2|0;b:while(1){e=j-h|0;if((e|0)<=1){f=-1;break a}f=a[h+1>>0]|0;b=a[h>>0]|0;if(!(f<<24>>24))f=d[i+(b&255)>>0]|0;else f=sY(f,b)|0;switch(f|0){case 8:case 1:case 0:{k=16;break b}case 5:{h=h+2|0;continue b}case 6:{if((e|0)<3){f=-2;break a}h=h+3|0;continue b}case 7:{if((e|0)<4){f=-2;break a}h=h+4|0;continue b}case 27:{f=h+2|0;if((j-f|0)<=1){f=-1;break a}if(a[h+3>>0]|0){h=f;continue b}if((a[f>>0]|0)==45)break b;else{h=f;continue b}}default:{h=h+2|0;continue b}}}if((k|0)==16){c[g>>2]=h;f=0;break}f=h+4|0;if((j-f|0)<=1){f=-1;break}if((a[h+5>>0]|0)==0?(a[f>>0]|0)==62:0){c[g>>2]=h+6;f=13;break}c[g>>2]=f;f=0;break}c[g>>2]=e;f=0}else f=-1;while(0);return f|0}function zY(b,d,e){b=b|0;d=d|0;e=e|0;if((d-b|0)>11){d=0;while(1){if((d|0)>=6){d=8;break}if(a[b+1>>0]|0){d=0;break}if((a[b>>0]|0)!=(a[141218+d>>0]|0)){d=0;break}d=d+1|0;b=b+2|0}c[e>>2]=b}else d=-1;return d|0}function AY(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;q=l;l=l+16|0;p=q;o=f;j=o-e|0;a:do if((j|0)>1){f=a[e+1>>0]|0;if(!(f<<24>>24)){i=a[e>>0]|0;h=d[b+72+(i&255)>>0]|0}else{i=a[e>>0]|0;h=sY(f,i)|0}switch(h|0){case 29:{m=i&255;if(!(1<<(m&31)&c[56836+((m>>>5|d[140706+(f&255)>>0]<<3)<<2)>>2])){c[g>>2]=e;f=0;break a}break}case 24:case 22:break;case 5:{c[g>>2]=e;f=0;break a}case 6:{if((j|0)<3){f=-2;break a}c[g>>2]=e;f=0;break a}case 7:{if((j|0)<4){f=-2;break a}c[g>>2]=e;f=0;break a}default:{c[g>>2]=e;f=0;break a}}m=b+72|0;k=e;b:while(1){f=k+2|0;h=o-f|0;if((h|0)<=1){f=-1;break a}i=a[k+3>>0]|0;j=a[f>>0]|0;if(!(i<<24>>24))b=d[m+(j&255)>>0]|0;else b=sY(i,j)|0;switch(b|0){case 27:case 26:case 25:case 24:case 22:{k=f;continue b}case 5:{n=22;break b}case 6:{n=23;break b}case 7:{n=25;break b}case 10:case 9:case 21:{n=27;break b}case 15:{n=46;break b}case 29:break;default:break b}k=j&255;if(!(1<<(k&31)&c[56836+((k>>>5|d[140962+(i&255)>>0]<<3)<<2)>>2])){n=21;break}else k=f}if((n|0)==21){c[g>>2]=f;f=0;break}else if((n|0)==22){c[g>>2]=f;f=0;break}else if((n|0)==23){if((h|0)<3){f=-2;break}c[g>>2]=f;f=0;break}else if((n|0)==25){if((h|0)<4){f=-2;break}c[g>>2]=f;f=0;break}else if((n|0)==27){if(!(DY(e,f,p)|0)){c[g>>2]=f;f=0;break}j=k+4|0;c:while(1){i=o-j|0;if((i|0)<=1){f=-1;break a}f=a[j+1>>0]|0;h=a[j>>0]|0;if(!(f<<24>>24))f=d[m+(h&255)>>0]|0;else f=sY(f,h)|0;switch(f|0){case 8:case 1:case 0:{n=40;break c}case 5:{j=j+2|0;continue c}case 6:{if((i|0)<3){f=-2;break a}j=j+3|0;continue c}case 7:{if((i|0)<4){f=-2;break a}j=j+4|0;continue c}case 15:{f=j+2|0;if((o-f|0)<=1){f=-1;break a}if(a[j+3>>0]|0){j=f;continue c}if((a[f>>0]|0)==62){n=44;break c}else{j=f;continue c}}default:{j=j+2|0;continue c}}}if((n|0)==40){c[g>>2]=j;f=0;break}else if((n|0)==44){c[g>>2]=j+4;f=c[p>>2]|0;break}}else if((n|0)==46){if(!(DY(e,f,p)|0)){c[g>>2]=f;f=0;break}f=k+4|0;if((o-f|0)<=1){f=-1;break}if((a[k+5>>0]|0)==0?(a[f>>0]|0)==62:0){c[g>>2]=k+6;f=c[p>>2]|0;break}}c[g>>2]=f;f=0}else f=-1;while(0);l=q;return f|0}function BY(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;j=f-e|0;a:do if((j|0)>1){k=a[e+1>>0]|0;if(!(k<<24>>24)){i=a[e>>0]|0;h=d[b+72+(i&255)>>0]|0}else{i=a[e>>0]|0;h=sY(k,i)|0}switch(h|0){case 29:{l=i&255;if(!(1<<(l&31)&c[56836+((l>>>5|(d[140706+(k&255)>>0]|0)<<3)<<2)>>2])){c[g>>2]=e;f=0;break a}break}case 24:case 22:break;case 5:{c[g>>2]=e;f=0;break a}case 6:{if((j|0)<3){f=-2;break a}c[g>>2]=e;f=0;break a}case 7:{if((j|0)<4){f=-2;break a}c[g>>2]=e;f=0;break a}default:{c[g>>2]=e;f=0;break a}}l=b+72|0;b=e;b:while(1){j=b+2|0;e=f-j|0;if((e|0)<=1){f=-1;break a}h=a[b+3>>0]|0;i=a[j>>0]|0;if(!(h<<24>>24))k=d[l+(i&255)>>0]|0;else k=sY(h,i)|0;switch(k|0){case 23:case 27:case 26:case 25:case 24:case 22:{b=j;continue b}case 5:{h=22;break b}case 6:{h=23;break b}case 7:{h=25;break b}case 10:case 9:case 21:{h=27;break b}case 11:{h=34;break b}case 29:break;default:{h=35;break b}}e=i&255;if(!(1<<(e&31)&c[56836+((e>>>5|(d[140962+(h&255)>>0]|0)<<3)<<2)>>2])){h=21;break}else b=j}if((h|0)==21){c[g>>2]=j;f=0;break}else if((h|0)==22){c[g>>2]=j;f=0;break}else if((h|0)==23){if((e|0)<3){f=-2;break}c[g>>2]=j;f=0;break}else if((h|0)==25){if((e|0)<4){f=-2;break}c[g>>2]=j;f=0;break}else if((h|0)==27){c:while(1){k=j+2|0;if((f-k|0)<=1){f=-1;break a}h=a[j+3>>0]|0;i=a[k>>0]|0;if(!(h<<24>>24))h=d[l+(i&255)>>0]|0;else h=sY(h,i)|0;switch(h|0){case 10:case 9:case 21:{j=k;h=27;break}case 11:{h=32;break c}default:{h=33;break c}}}if((h|0)==32){c[g>>2]=j+4;f=5;break}else if((h|0)==33){c[g>>2]=k;f=0;break}}else if((h|0)==34){c[g>>2]=b+4;f=5;break}else if((h|0)==35){c[g>>2]=j;f=0;break}}else f=-1;while(0);return f|0}function CY(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=l;l=l+16|0;q=s;c[q>>2]=e;r=f;o=b+72|0;h=0;a:while(1){b:while(1){m=r-e|0;if((m|0)<=1){e=-1;break a}i=a[e+1>>0]|0;j=a[e>>0]|0;if(!(i<<24>>24))k=d[o+(j&255)>>0]|0;else k=sY(i,j)|0;switch(k|0){case 5:{p=11;break a}case 6:{p=12;break a}case 7:{p=14;break a}case 23:{p=16;break b}case 10:case 9:case 21:{p=31;break b}case 14:{p=37;break b}case 29:{n=j&255;if(!(1<<(n&31)&c[56836+((n>>>5|d[140962+(i&255)>>0]<<3)<<2)>>2])){p=9;break a}break}case 27:case 26:case 25:case 24:case 22:break;default:{p=89;break a}}n=e+2|0;c[q>>2]=n;e=n}c:do if((p|0)==16){p=0;if(h|0){p=17;break a}h=e+2|0;c[q>>2]=h;i=h;j=r-i|0;if((j|0)<=1){e=-1;break a}k=a[e+3>>0]|0;m=a[h>>0]|0;if(!(k<<24>>24))n=d[o+(m&255)>>0]|0;else n=sY(k,m)|0;switch(n|0){case 5:{p=25;break a}case 6:{p=26;break a}case 7:{p=28;break a}case 24:case 22:{h=1;break c}case 29:break;default:{p=30;break a}}n=m&255;if(!(1<<(n&31)&c[56836+((n>>>5|d[140706+(k&255)>>0]<<3)<<2)>>2])){p=24;break a}else h=1}else if((p|0)==31)while(1){p=0;i=e+2|0;c[q>>2]=i;j=i;if((r-j|0)<=1){e=-1;break a}e=a[e+3>>0]|0;h=a[i>>0]|0;if(!(e<<24>>24))e=d[o+(h&255)>>0]|0;else e=sY(e,h)|0;switch(e|0){case 14:{e=i;p=37;break c}case 9:case 10:case 21:{e=i;p=31;break}default:{p=36;break a}}}while(0);d:do if((p|0)==37){while(1){p=0;j=e+2|0;c[q>>2]=j;k=j;if((r-k|0)<=1){e=-1;break a}h=a[e+3>>0]|0;i=a[j>>0]|0;if(!(h<<24>>24))m=d[o+(i&255)>>0]|0;else m=sY(h,i)|0;if((m|1|0)==13)break;switch(m|0){case 9:case 10:case 21:{e=j;p=37;break}default:{p=43;break a}}}e=e+4|0;c[q>>2]=e;e:while(1){j=r-e|0;if((j|0)<=1){e=-1;break a}h=a[e+1>>0]|0;i=a[e>>0]|0;if(!(h<<24>>24))h=d[o+(i&255)>>0]|0;else h=sY(h,i)|0;if((h|0)==(m|0))break;switch(h|0){case 8:case 1:case 0:{p=56;break a}case 2:{p=61;break a}case 5:{n=e+2|0;c[q>>2]=n;e=n;continue e}case 6:{if((j|0)<3){e=-2;break a}n=e+3|0;c[q>>2]=n;e=n;continue e}case 7:{if((j|0)<4){e=-2;break a}n=e+4|0;c[q>>2]=n;e=n;continue e}case 3:{e=tY(b,e+2|0,f,q)|0;if((e|0)<1){p=59;break a}e=c[q>>2]|0;continue e}default:{n=e+2|0;c[q>>2]=n;e=n;continue e}}}i=e+2|0;c[q>>2]=i;k=i;if((r-k|0)<=1){e=-1;break a}h=a[e+3>>0]|0;j=a[i>>0]|0;if(!(h<<24>>24))h=d[o+(j&255)>>0]|0;else h=sY(h,j)|0;switch(h|0){case 11:{p=81;break a}case 17:{p=82;break a}case 10:case 9:case 21:{e=i;break}default:{p=68;break a}}f:while(1){i=e+2|0;c[q>>2]=i;h=i;j=r-h|0;if((j|0)<=1){e=-1;break a}k=a[e+3>>0]|0;m=a[i>>0]|0;if(!(k<<24>>24))n=d[o+(m&255)>>0]|0;else n=sY(k,m)|0;switch(n|0){case 5:{p=76;break a}case 6:{p=77;break a}case 7:{p=79;break a}case 11:{p=81;break a}case 17:{p=82;break a}case 24:case 22:{h=0;break d}case 10:case 9:case 21:{e=i;break}case 29:break f;default:{p=87;break a}}}n=m&255;if(!(1<<(n&31)&c[56836+((n>>>5|d[140706+(k&255)>>0]<<3)<<2)>>2])){p=75;break a}else h=0}while(0);e=e+4|0;c[q>>2]=e}switch(p|0){case 9:{c[g>>2]=e;e=0;break}case 11:{c[g>>2]=e;e=0;break}case 12:{if((m|0)<3)e=-2;else{c[g>>2]=e;e=0}break}case 14:{if((m|0)<4)e=-2;else{c[g>>2]=e;e=0}break}case 17:{c[g>>2]=e;e=0;break}case 24:{c[g>>2]=h;e=0;break}case 25:{c[g>>2]=h;e=0;break}case 26:{if((j|0)<3)e=-2;else{c[g>>2]=h;e=0}break}case 28:{if((j|0)<4)e=-2;else{c[g>>2]=h;e=0}break}case 30:{c[g>>2]=i;e=0;break}case 36:{c[g>>2]=j;e=0;break}case 43:{c[g>>2]=k;e=0;break}case 56:{c[g>>2]=e;e=0;break}case 59:{if(!e){c[g>>2]=c[q>>2];e=0}break}case 61:{c[g>>2]=e;e=0;break}case 68:{c[g>>2]=k;e=0;break}case 75:{c[g>>2]=i;e=0;break}case 76:{c[g>>2]=i;e=0;break}case 77:{if((j|0)<3)e=-2;else{c[g>>2]=i;e=0}break}case 79:{if((j|0)<4)e=-2;else{c[g>>2]=i;e=0}break}case 81:{c[g>>2]=e+4;e=1;break}case 82:{h=i+2|0;c[q>>2]=h;e=h;if((r-e|0)>1){if((a[i+3>>0]|0)==0?(a[h>>0]|0)==62:0){c[g>>2]=i+4;e=3;break}c[g>>2]=e;e=0}else e=-1;break}case 87:{c[g>>2]=h;e=0;break}case 89:{c[g>>2]=e;e=0;break}}l=s;return e|0}function DY(b,d,e){b=b|0;d=d|0;e=e|0;c[e>>2]=11;a:do if((d-b|0)==6?(a[b+1>>0]|0)==0:0){switch(a[b>>0]|0){case 120:{d=0;break}case 88:{d=1;break}default:{d=1;break a}}if(!(a[b+3>>0]|0)){switch(a[b+2>>0]|0){case 109:break;case 77:{d=1;break}default:{d=1;break a}}if(!(a[b+5>>0]|0)){switch(a[b+4>>0]|0){case 108:break;case 76:{d=0;break a}default:{d=1;break a}}if(!d){c[e>>2]=12;d=1}else d=0}else d=1}else d=1}else d=1;while(0);return d|0}function EY(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0;k=e+72|0;a:while(1){b:while(1){j=g-f|0;if((j|0)<=1){f=-1;break a}e=a[f+1>>0]|0;i=a[f>>0]|0;if(!(e<<24>>24))e=d[k+(i&255)>>0]|0;else e=sY(e,i)|0;switch(e|0){case 8:case 1:case 0:{l=10;break a}case 6:{l=9;break b}case 7:{l=19;break b}case 5:{f=f+2|0;continue b}case 13:case 12:{i=f+2|0;if((e|0)==(b|0)){l=12;break a}else{f=i;continue b}}default:{f=f+2|0;continue b}}}if((l|0)==9){l=0;if((j|0)<3){f=-2;break}else{f=f+3|0;continue}}else if((l|0)==19){l=0;if((j|0)<4){f=-2;break}else{f=f+4|0;continue}}}c:do if((l|0)==10){c[h>>2]=f;f=0}else if((l|0)==12)if((g-i|0)>1){c[h>>2]=i;g=a[f+3>>0]|0;f=a[i>>0]|0;if(!(g<<24>>24))f=d[k+(f&255)>>0]|0;else f=sY(g,f)|0;switch(f|0){case 20:case 30:case 11:case 10:case 9:case 21:{f=27;break c}default:{}}f=0}else f=-27;while(0);return f|0}function FY(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;k=f;a:do if((k-e|0)>1){h=a[e+1>>0]|0;if(!(h<<24>>24))h=d[b+72+(d[e>>0]|0)>>0]|0;else h=sY(h,a[e>>0]|0)|0;switch(h|0){case 27:{h=yY(b,e+2|0,f,g)|0;break a}case 20:{c[g>>2]=e+2;h=33;break a}case 24:case 22:{j=b+72|0;b:while(1){i=e+2|0;f=k-i|0;if((f|0)<=1){h=-1;break a}h=a[e+3>>0]|0;b=a[i>>0]|0;if(!(h<<24>>24))h=d[j+(b&255)>>0]|0;else h=sY(h,b)|0;switch(h|0){case 24:case 22:{e=i;break}case 30:{l=15;break b}case 10:case 9:case 21:break b;default:{l=22;break b}}}if((l|0)==22){c[g>>2]=i;h=0;break a}c:do if((l|0)==15){if((f|0)<=3){h=-1;break a}b=a[e+5>>0]|0;h=a[e+4>>0]|0;if(!(b<<24>>24))h=d[j+(h&255)>>0]|0;else h=sY(b,h)|0;switch(h|0){case 30:case 10:case 9:case 21:break;default:break c}c[g>>2]=i;h=0;break a}while(0);c[g>>2]=i;h=16;break a}default:{c[g>>2]=e;h=0;break a}}}else h=-1;while(0);return h|0}function GY(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0;j=f-e|0;a:do if((j|0)>1){k=a[e+1>>0]|0;if(!(k<<24>>24)){i=a[e>>0]|0;h=d[b+72+(i&255)>>0]|0}else{i=a[e>>0]|0;h=sY(k,i)|0}switch(h|0){case 29:{j=i&255;if(!(1<<(j&31)&c[56836+((j>>>5|(d[140706+(k&255)>>0]|0)<<3)<<2)>>2])){c[g>>2]=e;f=0;break a}break}case 24:case 22:break;case 5:{c[g>>2]=e;f=0;break a}case 6:{if((j|0)<3){f=-2;break a}c[g>>2]=e;f=0;break a}case 7:{if((j|0)<4){f=-2;break a}c[g>>2]=e;f=0;break a}default:{c[g>>2]=e;f=0;break a}}b=b+72|0;k=e;b:while(1){h=k;k=k+2|0;e=f-k|0;if((e|0)<=1){f=-20;break a}h=a[h+3>>0]|0;i=a[k>>0]|0;if(!(h<<24>>24))j=d[b+(i&255)>>0]|0;else j=sY(h,i)|0;switch(j|0){case 27:case 26:case 25:case 24:case 22:continue b;case 5:{h=22;break b}case 6:{h=23;break b}case 7:{h=25;break b}case 36:case 30:case 11:case 32:case 21:case 10:case 9:{h=27;break b}case 29:break;default:{h=28;break b}}e=i&255;if(!(1<<(e&31)&c[56836+((e>>>5|(d[140962+(h&255)>>0]|0)<<3)<<2)>>2])){h=21;break}}if((h|0)==21){c[g>>2]=k;f=0;break}else if((h|0)==22){c[g>>2]=k;f=0;break}else if((h|0)==23){if((e|0)<3){f=-2;break}c[g>>2]=k;f=0;break}else if((h|0)==25){if((e|0)<4){f=-2;break}c[g>>2]=k;f=0;break}else if((h|0)==27){c[g>>2]=k;f=20;break}else if((h|0)==28){c[g>>2]=k;f=0;break}}else f=-1;while(0);return f|0}function HY(b,d,e){b=b|0;d=d|0;e=e|0;e=IY(e)|0;if((e|0)==-1)e=0;else{a[b+69>>0]=e;c[b>>2]=67;c[b+4>>2]=68;c[b+48>>2]=31;c[b+72>>2]=d;c[d>>2]=b;e=1}return e|0}function IY(a){a=a|0;var b=0;a:do if(!a)b=6;else{b=0;while(1){if((b|0)>=6){b=-1;break a}if(qZ(a,c[59964+(b<<2)>>2]|0)|0)break a;b=b+1|0}}while(0);return b|0}function JY(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return MY(58844,a,0,b,c,d)|0}function KY(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return MY(58844,a,1,b,c,d)|0}function LY(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;BX(58480,b,c,d);return}function MY(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0;a:do if(f>>>0>>0){l=c[d+72>>2]|0;i=f+1|0;b:do if((i|0)==(g|0)){i=a[d+69>>0]|0;if(((i<<24>>24)+-3|0)>>>0<3){i=-1;break a}switch(a[f>>0]|0){case 60:case 0:{i=-1;break a}case -17:case -1:case -2:break;default:break b}if(!((e|0)==1&i<<24>>24==0)){i=-1;break a}}else{k=a[f>>0]|0;i=a[i>>0]|0;j=((k&255)<<8|i&255)&65535;c:do if(j<<16>>16<-2){if(j<<16>>16>=-257){switch(j<<16>>16){case -257:break;default:break c}if((e|0)==1&(a[d+69>>0]|0)==0)break b;c[h>>2]=f+2;c[l>>2]=c[b+16>>2];i=14;break a}switch(j<<16>>16){case -4165:break;default:break c}if((e|0)==1)switch(a[d+69>>0]|0){case 0:case 3:case 4:case 5:break b;default:{}}i=f+2|0;if((i|0)==(g|0)){i=-1;break a}if((a[i>>0]|0)!=-65)break b;c[h>>2]=f+3;c[l>>2]=c[b+8>>2];i=14;break a}else{if(j<<16>>16<15360){switch(j<<16>>16){case -2:break;default:break c}if((e|0)==1&(a[d+69>>0]|0)==0)break b;c[h>>2]=f+2;c[l>>2]=c[b+20>>2];i=14;break a}switch(j<<16>>16){case 15360:break;default:break c}i=a[d+69>>0]|0;if(i<<24>>24==4){if((e|0)==1)break b}else if((e|0)==1&i<<24>>24==3)break b;i=c[b+20>>2]|0;c[l>>2]=i;i=ob[c[i+(e<<2)>>2]&127](i,f,g,h)|0;break a}while(0);if(k<<24>>24){if((e|0)==1|i<<24>>24!=0)break;i=c[b+20>>2]|0;c[l>>2]=i;i=ob[c[i+(e<<2)>>2]&127](i,f,g,h)|0;break a}if((e|0)==1?(a[d+69>>0]|0)==5:0)break;i=c[b+16>>2]|0;c[l>>2]=i;i=ob[c[i+(e<<2)>>2]&127](i,f,g,h)|0;break a}while(0);i=c[b+(a[d+69>>0]<<2)>>2]|0;c[l>>2]=i;i=ob[c[i+(e<<2)>>2]&127](i,f,g,h)|0}else i=-4;while(0);return i|0}function NY(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0;a:do if(e>>>0>>0){i=e;m=f-i|0;k=(m&1|0)==0;m=m&-2;l=(m|0)==0;m=k|l?f:e+m|0;if(k|l^1){f=a[e>>0]|0;if(!(f<<24>>24)){h=a[e+1>>0]|0;j=h;h=d[b+72+(h&255)>>0]|0}else{h=a[e+1>>0]|0;j=h;h=sY(f,h)|0}do switch(h|0){case 12:{f=mZ(12,b,e+2|0,m,g)|0;break a}case 13:{f=mZ(13,b,e+2|0,m,g)|0;break a}case 2:{h=e+2|0;if((m-h|0)<=1){f=-1;break a}f=a[h>>0]|0;if(!(f<<24>>24))f=d[b+72+(d[e+3>>0]|0)>>0]|0;else f=sY(f,a[e+3>>0]|0)|0;switch(f|0){case 16:{f=nZ(b,e+4|0,m,g)|0;break a}case 15:{f=iZ(b,e+4|0,m,g)|0;break a}case 7:case 6:case 5:case 29:case 24:case 22:{c[g>>2]=e;f=29;break a}default:{c[g>>2]=h;f=0;break a}}}case 9:{if((e+2|0)==(m|0)){c[g>>2]=m;f=-15;break a}else i=7;break}case 10:case 21:{i=7;break}case 30:{f=cZ(b,e+2|0,m,g)|0;break a}case 35:{c[g>>2]=e+2;f=38;break a}case 20:{c[g>>2]=e+2;f=25;break a}case 4:{h=e+2|0;f=m-h|0;if((f|0)<=1){f=-26;break a}if((a[h>>0]|0)==0?(a[e+3>>0]|0)==93:0){if((f|0)<=3){f=-1;break a}if((a[e+4>>0]|0)==0?(a[e+5>>0]|0)==62:0){c[g>>2]=e+6;f=34;break a}}c[g>>2]=h;f=26;break a}case 31:{c[g>>2]=e+2;f=23;break a}case 32:{h=e+2|0;if((m-h|0)<=1){f=-24;break a}f=a[h>>0]|0;if(!(f<<24>>24))f=d[b+72+(d[e+3>>0]|0)>>0]|0;else f=sY(f,a[e+3>>0]|0)|0;switch(f|0){case 33:{c[g>>2]=e+4;f=36;break a}case 15:{c[g>>2]=e+4;f=35;break a}case 34:{c[g>>2]=e+4;f=37;break a}case 32:case 36:case 35:case 11:case 21:case 10:case 9:{c[g>>2]=h;f=24;break a}default:{c[g>>2]=h;f=0;break a}}}case 36:{c[g>>2]=e+2;f=21;break a}case 11:{c[g>>2]=e+2;f=17;break a}case 19:{f=oZ(b,e+2|0,m,g)|0;break a}case 5:{if((m-i|0)<2){f=-2;break a}c[g>>2]=e;f=0;break a}case 6:{if((m-i|0)<3){f=-2;break a}c[g>>2]=e;f=0;break a}case 7:{if((m-i|0)<4){f=-2;break a}c[g>>2]=e;f=0;break a}case 24:case 22:{f=18;i=61;break}case 23:case 27:case 26:case 25:{f=19;i=61;break}case 29:{i=f&255;h=j&255;f=h>>>5;h=1<<(h&31);if(!(h&c[56836+((f|d[140706+i>>0]<<3)<<2)>>2]))if(!(c[56836+((d[140962+i>>0]<<3|f)<<2)>>2]&h))i=64;else{f=19;i=61}else{f=18;i=61}break}default:i=64}while(0);if((i|0)==7){k=m;b=b+72|0;j=e;b:while(1){i=j;j=j+2|0;if((k-j|0)<=1){i=28;break}f=a[j>>0]|0;h=a[i+3>>0]|0;if(!(f<<24>>24))f=d[b+(h&255)>>0]|0;else f=sY(f,h)|0;switch(f|0){case 10:case 21:continue b;case 9:break;default:{i=27;break b}}if((i+4|0)==(m|0)){i=27;break}}if((i|0)==27){c[g>>2]=j;f=15;break}else if((i|0)==28){c[g>>2]=j;f=15;break}}else if((i|0)==61){l=b+72|0;h=e+2|0;c:while(1){e=f&255;d:while(1){k=m-h|0;if((k|0)<=1){i=104;break c}i=a[h>>0]|0;j=a[h+1>>0]|0;if(!(i<<24>>24))b=d[l+(j&255)>>0]|0;else b=sY(i,j)|0;switch(b|0){case 5:{i=73;break c}case 6:{i=74;break c}case 7:{i=76;break c}case 10:case 9:case 21:case 30:case 20:case 36:case 35:case 32:case 11:{i=78;break c}case 34:{i=94;break c}case 33:{i=97;break c}case 15:{i=100;break c}case 29:{k=j&255;if(!(1<<(k&31)&c[56836+((k>>>5|d[140962+(i&255)>>0]<<3)<<2)>>2])){i=71;break c}break}case 27:case 26:case 25:case 24:case 22:break;case 23:{k=h+2|0;switch(e&63){case 41:{f=19;h=k;continue c}case 18:break d;default:{h=k;continue d}}}default:{i=103;break c}}h=h+2|0}b=m-k|0;if((b|0)<=1){f=-1;break a}f=a[k>>0]|0;i=a[h+3>>0]|0;if(!(f<<24>>24))j=d[l+(i&255)>>0]|0;else j=sY(f,i)|0;switch(j|0){case 5:{i=89;break c}case 6:{i=90;break c}case 7:{i=92;break c}case 29:{e=i&255;if(!(1<<(e&31)&c[56836+((e>>>5|d[140962+(f&255)>>0]<<3)<<2)>>2])){i=87;break c}break}case 27:case 26:case 25:case 24:case 22:break;default:{f=19;h=k;continue c}}f=41;h=h+4|0}switch(i|0){case 71:{c[g>>2]=h;f=0;break a}case 73:{c[g>>2]=h;f=0;break a}case 74:{if((k|0)<3){f=-2;break a}c[g>>2]=h;f=0;break a}case 76:{if((k|0)<4){f=-2;break a}c[g>>2]=h;f=0;break a}case 78:{c[g>>2]=h;break a}case 87:{c[g>>2]=k;f=0;break a}case 89:{c[g>>2]=k;f=0;break a}case 90:{if((b|0)<3){f=-2;break a}c[g>>2]=k;f=0;break a}case 92:{if((b|0)<4){f=-2;break a}c[g>>2]=k;f=0;break a}case 94:if((f|0)==19){c[g>>2]=h;f=0;break a}else{c[g>>2]=h+2;f=32;break a}case 97:if((f|0)==19){c[g>>2]=h;f=0;break a}else{c[g>>2]=h+2;f=31;break a}case 100:if((f|0)==19){c[g>>2]=h;f=0;break a}else{c[g>>2]=h+2;f=30;break a}case 103:{c[g>>2]=h;f=0;break a}case 104:{f=0-f|0;break a}}}else if((i|0)==64){c[g>>2]=e;f=0;break}}else f=-1}else f=-4;while(0);return f|0}function OY(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0;a:do if(e>>>0>>0){h=e;i=f-h|0;k=(i&1|0)==0;i=i&-2;j=(i|0)==0;i=k|j?f:e+i|0;if(k|j^1){f=a[e>>0]|0;if(!(f<<24>>24))f=d[b+72+(d[e+1>>0]|0)>>0]|0;else f=sY(f,a[e+1>>0]|0)|0;do switch(f|0){case 2:{f=fZ(b,e+2|0,i,g)|0;break a}case 3:{f=bZ(b,e+2|0,i,g)|0;break a}case 9:{h=e+2|0;if((i-h|0)<=1){f=-3;break a}f=a[h>>0]|0;if(!(f<<24>>24))f=d[b+72+(d[e+3>>0]|0)>>0]|0;else f=sY(f,a[e+3>>0]|0)|0;c[g>>2]=(f|0)==10?e+4|0:h;f=7;break a}case 10:{c[g>>2]=e+2;f=7;break a}case 4:{h=e+2|0;if((i-h|0)<=1){f=-5;break a}if((a[h>>0]|0)==0?(a[e+3>>0]|0)==93:0){f=e+4|0;if((i-f|0)<=1){f=-5;break a}if((a[f>>0]|0)==0?(a[e+5>>0]|0)==62:0){c[g>>2]=f;f=0;break a}else f=i}else f=i;break}case 5:{f=i;if((f-h|0)<2){f=-2;break a}h=e+2|0;break}case 6:{f=i;if((f-h|0)<3){f=-2;break a}h=e+3|0;break}case 7:{f=i;if((f-h|0)<4){f=-2;break a}h=e+4|0;break}case 8:case 1:case 0:{c[g>>2]=e;f=0;break a}default:{h=e+2|0;f=i}}while(0);j=b+72|0;b=h;b:while(1){e=f-b|0;if((e|0)<=1){h=52;break}h=a[b>>0]|0;i=a[b+1>>0]|0;if(!(h<<24>>24))h=d[j+(i&255)>>0]|0;else h=sY(h,i)|0;switch(h|0){case 10:case 9:case 8:case 1:case 0:case 2:case 3:{h=50;break b}case 5:{b=b+2|0;continue b}case 6:{if((e|0)<3){h=38;break b}b=b+3|0;continue b}case 7:{if((e|0)<4){h=41;break b}b=b+4|0;continue b}case 4:{if((e|0)<=3){h=50;break b}h=b+2|0;if(a[h>>0]|0){b=h;continue b}if((a[b+3>>0]|0)!=93){b=h;continue b}if((e|0)<=5){h=50;break b}i=b+4|0;if(a[i>>0]|0){b=h;continue b}if((a[b+5>>0]|0)==62){h=49;break b}else{b=h;continue b}}default:{b=b+2|0;continue b}}}if((h|0)==38){c[g>>2]=b;f=6;break}else if((h|0)==41){c[g>>2]=b;f=6;break}else if((h|0)==49){c[g>>2]=i;f=0;break}else if((h|0)==50){c[g>>2]=b;f=6;break}else if((h|0)==52){c[g>>2]=b;f=6;break}}else f=-1}else f=-4;while(0);return f|0}function PY(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0;a:do if(e>>>0>>0){h=e;i=f-h|0;k=(i&1|0)==0;i=i&-2;j=(i|0)==0;i=k|j?f:e+i|0;if(k|j^1){f=a[e>>0]|0;if(!(f<<24>>24))f=d[b+72+(d[e+1>>0]|0)>>0]|0;else f=sY(f,a[e+1>>0]|0)|0;switch(f|0){case 4:{h=e+2|0;if((i-h|0)<=1){f=-1;break a}if((a[h>>0]|0)==0?(a[e+3>>0]|0)==93:0){f=e+4|0;if((i-f|0)<=1){f=-1;break a}if((a[f>>0]|0)==0?(a[e+5>>0]|0)==62:0){c[g>>2]=e+6;f=40;break a}}break}case 9:{h=e+2|0;if((i-h|0)<=1){f=-1;break a}f=a[h>>0]|0;if(!(f<<24>>24))f=d[b+72+(d[e+3>>0]|0)>>0]|0;else f=sY(f,a[e+3>>0]|0)|0;c[g>>2]=(f|0)==10?e+4|0:h;f=7;break a}case 10:{c[g>>2]=e+2;f=7;break a}case 5:{f=i;if((f-h|0)<2){f=-2;break a}h=e+2|0;i=f;break}case 6:{f=i;if((f-h|0)<3){f=-2;break a}h=e+3|0;i=f;break}case 7:{f=i;if((f-h|0)<4){f=-2;break a}h=e+4|0;i=f;break}case 8:case 1:case 0:{c[g>>2]=e;f=0;break a}default:h=e+2|0}j=b+72|0;b=h;b:while(1){e=i-b|0;if((e|0)<=1){h=40;break}f=a[b>>0]|0;h=a[b+1>>0]|0;if(!(f<<24>>24))f=d[j+(h&255)>>0]|0;else f=sY(f,h)|0;switch(f|0){case 10:case 9:case 8:case 1:case 0:case 4:{h=38;break b}case 6:{if((e|0)<3){h=35;break b}else f=3;break}case 7:{if((e|0)<4){h=37;break b}else f=4;break}default:f=2}b=b+f|0}if((h|0)==35){c[g>>2]=b;f=6;break}else if((h|0)==37){c[g>>2]=b;f=6;break}else if((h|0)==38){c[g>>2]=b;f=6;break}else if((h|0)==40){c[g>>2]=b;f=6;break}}else f=-1}else f=-4;while(0);return f|0}function QY(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;k=f-e|0;k=(k&1|0)==0?f:e+(k&-2)|0;j=b+72|0;i=0;f=e;a:while(1){h=k-f|0;if((h|0)<=1){f=-1;break}b=a[f>>0]|0;e=a[f+1>>0]|0;if(!(b<<24>>24))b=d[j+(e&255)>>0]|0;else b=sY(b,e)|0;switch(b|0){case 8:case 1:case 0:{l=12;break a}case 5:{h=i;f=f+2|0;i=h;continue a}case 6:{if((h|0)<3){f=-2;break a}h=i;f=f+3|0;i=h;continue a}case 7:{if((h|0)<4){f=-2;break a}h=i;f=f+4|0;i=h;continue a}case 2:{b=f+2|0;if((k-b|0)<=1){f=-1;break a}if(a[b>>0]|0){h=i;f=b;i=h;continue a}if((a[f+3>>0]|0)!=33){h=i;f=b;i=h;continue a}b=f+4|0;if((k-b|0)<=1){f=-1;break a}if(a[b>>0]|0){h=i;f=b;i=h;continue a}h=(a[f+5>>0]|0)==91;i=i+(h&1)|0;f=h?f+6|0:b;continue a}case 4:{b=f+2|0;if((k-b|0)<=1){f=-1;break a}if(a[b>>0]|0){h=i;f=b;i=h;continue a}if((a[f+3>>0]|0)!=93){h=i;f=b;i=h;continue a}b=f+4|0;if((k-b|0)<=1){f=-1;break a}if(a[b>>0]|0){h=i;f=b;i=h;continue a}if((a[f+5>>0]|0)!=62){h=i;f=b;i=h;continue a}f=f+6|0;if(!i){l=26;break a}i=i+-1|0;continue a}default:{h=i;f=f+2|0;i=h;continue a}}}if((l|0)==12){c[g>>2]=f;f=0}else if((l|0)==26){c[g>>2]=f;f=42}return f|0}function RY(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;do if(e>>>0>>0){k=f;if((k-e|0)>1){l=b+72|0;j=e;a:while(1){if((k-j|0)<=1){i=30;break}h=a[j>>0]|0;i=a[j+1>>0]|0;if(!(h<<24>>24))h=d[l+(i&255)>>0]|0;else h=sY(h,i)|0;switch(h|0){case 3:{i=11;break a}case 2:{i=14;break a}case 10:{i=15;break a}case 9:{i=18;break a}case 21:{i=25;break a}case 5:{h=2;break}case 6:{h=3;break}case 7:{h=4;break}default:h=2}j=j+h|0}if((i|0)==11)if((j|0)==(e|0)){h=bZ(b,e+2|0,f,g)|0;break}else{c[g>>2]=j;h=6;break}else if((i|0)==14){c[g>>2]=j;h=0;break}else if((i|0)==15)if((j|0)==(e|0)){c[g>>2]=e+2;h=7;break}else{c[g>>2]=j;h=6;break}else if((i|0)==18){if((j|0)!=(e|0)){c[g>>2]=j;h=6;break}j=e+2|0;if((k-j|0)<=1){h=-3;break}h=a[j>>0]|0;i=a[e+3>>0]|0;if(!(h<<24>>24))h=d[l+(i&255)>>0]|0;else h=sY(h,i)|0;c[g>>2]=(h|0)==10?e+4|0:j;h=7;break}else if((i|0)==25)if((j|0)==(e|0)){c[g>>2]=e+2;h=39;break}else{c[g>>2]=j;h=6;break}else if((i|0)==30){c[g>>2]=j;h=6;break}}else h=-1}else h=-4;while(0);return h|0}function SY(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;do if(e>>>0>>0){k=f;if((k-e|0)>1){l=b+72|0;j=e;a:while(1){if((k-j|0)<=1){i=29;break}h=a[j>>0]|0;i=a[j+1>>0]|0;if(!(h<<24>>24))h=d[l+(i&255)>>0]|0;else h=sY(h,i)|0;switch(h|0){case 3:{i=11;break a}case 30:{i=14;break a}case 10:{i=17;break a}case 9:{i=20;break a}case 5:{h=2;break}case 6:{h=3;break}case 7:{h=4;break}default:h=2}j=j+h|0}if((i|0)==11)if((j|0)==(e|0)){h=bZ(b,e+2|0,f,g)|0;break}else{c[g>>2]=j;h=6;break}else if((i|0)==14)if((j|0)==(e|0)){h=cZ(b,e+2|0,f,g)|0;h=(h|0)==22?0:h;break}else{c[g>>2]=j;h=6;break}else if((i|0)==17)if((j|0)==(e|0)){c[g>>2]=e+2;h=7;break}else{c[g>>2]=j;h=6;break}else if((i|0)==20){if((j|0)!=(e|0)){c[g>>2]=j;h=6;break}j=e+2|0;if((k-j|0)<=1){h=-3;break}h=a[j>>0]|0;i=a[e+3>>0]|0;if(!(h<<24>>24))h=d[l+(i&255)>>0]|0;else h=sY(h,i)|0;c[g>>2]=(h|0)==10?e+4|0:j;h=7;break}else if((i|0)==29){c[g>>2]=j;h=6;break}}else h=-1}else h=-4;while(0);return h|0}function TY(b,c,d,e){b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0;f=d;b=c;while(1){c=a[e>>0]|0;if(!(c<<24>>24)){g=7;break}if((f-b|0)<2){b=0;break}if(a[b>>0]|0){b=0;break}if((a[b+1>>0]|0)!=c<<24>>24){b=0;break}e=e+1|0;b=b+2|0}if((g|0)==7)b=(b|0)==(d|0)&1;return b|0}function UY(b,c){b=b|0;c=c|0;var e=0,f=0,g=0;g=b+72|0;f=c;a:while(1){b=a[f>>0]|0;e=a[f+1>>0]|0;if(!(b<<24>>24))b=d[g+(e&255)>>0]|0;else b=sY(b,e)|0;switch(b|0){case 5:{b=2;break}case 6:{b=3;break}case 7:{b=4;break}case 27:case 26:case 25:case 24:case 23:case 22:case 29:{b=2;break}default:break a}f=f+b|0}return f-c|0}function VY(b,c){b=b|0;c=c|0;var e=0,f=0;f=b+72|0;a:while(1){b=a[c>>0]|0;e=a[c+1>>0]|0;if(!(b<<24>>24))b=d[f+(e&255)>>0]|0;else b=sY(b,e)|0;switch(b|0){case 21:case 9:case 10:break;default:break a}c=c+2|0}return c|0}function WY(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=b+72|0;m=0;n=0;b=1;a:while(1){l=e+2|0;h=a[l>>0]|0;j=h<<24>>24==0;i=e+3|0;k=a[i>>0]|0;if(j)h=d[o+(k&255)>>0]|0;else h=sY(h,k)|0;do switch(h|0){case 5:{if(b|0){i=b;j=n;k=m;e=l;b=i;n=j;m=k;continue a}if((n|0)>=(f|0)){j=n;k=m;b=1;e=l;n=j;m=k;continue a}c[g+(n<<4)>>2]=l;a[g+(n<<4)+12>>0]=1;j=n;k=m;b=1;e=l;n=j;m=k;continue a}case 6:{if(b|0){j=b;k=n;l=m;e=i;b=j;n=k;m=l;continue a}if((n|0)>=(f|0)){k=n;l=m;b=1;e=i;n=k;m=l;continue a}c[g+(n<<4)>>2]=l;a[g+(n<<4)+12>>0]=1;k=n;l=m;b=1;e=i;n=k;m=l;continue a}case 7:{if(!b)if((n|0)<(f|0)){c[g+(n<<4)>>2]=l;a[g+(n<<4)+12>>0]=1;b=1}else b=1;k=n;l=m;e=e+4|0;n=k;m=l;continue a}case 24:case 22:case 29:{if(b|0){i=b;j=n;k=m;e=l;b=i;n=j;m=k;continue a}if((n|0)>=(f|0)){j=n;k=m;b=1;e=l;n=j;m=k;continue a}c[g+(n<<4)>>2]=l;a[g+(n<<4)+12>>0]=1;j=n;k=m;b=1;e=l;n=j;m=k;continue a}case 12:{if((b|0)!=2){if((n|0)>=(f|0)){k=n;m=12;b=2;e=l;n=k;continue a}c[g+(n<<4)+4>>2]=e+4;k=n;m=12;b=2;e=l;n=k;continue a}if((m|0)!=12){j=n;k=m;b=2;e=l;n=j;m=k;continue a}if((n|0)<(f|0))c[g+(n<<4)+8>>2]=l;m=12;n=n+1|0;b=0;e=l;continue a}case 13:{if((b|0)!=2){if((n|0)>=(f|0)){k=n;m=13;b=2;e=l;n=k;continue a}c[g+(n<<4)+4>>2]=e+4;k=n;m=13;b=2;e=l;n=k;continue a}if((m|0)!=13){j=n;k=m;b=2;e=l;n=j;m=k;continue a}if((n|0)<(f|0))c[g+(n<<4)+8>>2]=l;m=13;n=n+1|0;b=0;e=l;continue a}case 3:{if((n|0)>=(f|0)){i=b;j=n;k=m;e=l;b=i;n=j;m=k;continue a}a[g+(n<<4)+12>>0]=0;i=b;j=n;k=m;e=l;b=i;n=j;m=k;continue a}case 21:{switch(b|0){case 1:{j=n;k=m;b=0;e=l;n=j;m=k;continue a}case 2:break;default:{i=b;j=n;k=m;e=l;b=i;n=j;m=k;continue a}}if((n|0)>=(f|0)){j=n;k=m;b=2;e=l;n=j;m=k;continue a}i=g+(n<<4)+12|0;if(!(a[i>>0]|0)){j=n;k=m;b=2;e=l;n=j;m=k;continue a}do if(j&(l|0)!=(c[g+(n<<4)+4>>2]|0)&k<<24>>24==32){h=a[e+4>>0]|0;b=a[e+5>>0]|0;if(!(h<<24>>24)){if(b<<24>>24==32)break;b=d[o+(b&255)>>0]|0}else b=sY(h,b)|0;if((b|0)!=(m|0)){j=n;k=m;b=2;e=l;n=j;m=k;continue a}}while(0);a[i>>0]=0;j=n;k=m;b=2;e=l;n=j;m=k;continue a}case 10:case 9:{switch(b|0){case 1:{j=n;k=m;b=0;e=l;n=j;m=k;continue a}case 2:break;default:{i=b;j=n;k=m;e=l;b=i;n=j;m=k;continue a}}if((n|0)>=(f|0)){j=n;k=m;b=2;e=l;n=j;m=k;continue a}a[g+(n<<4)+12>>0]=0;j=n;k=m;b=2;e=l;n=j;m=k;continue a}case 17:case 11:if((b|0)==2){j=n;k=m;b=2;e=l;n=j;m=k;continue a}else break a;default:{i=b;j=n;k=m;e=l;b=i;n=j;m=k;continue a}}while(0)}return n|0}function XY(b,c){b=b|0;c=c|0;var d=0,e=0;b=c+4|0;a:do if(!(a[b>>0]|0))if((a[c+5>>0]|0)==120){c=c+6|0;b=0;while(1){b:while(1){if(!(a[c>>0]|0)){d=a[c+1>>0]|0;if(d<<24>>24==59){e=18;break a}d=d<<24>>24;switch(d|0){case 57:case 56:case 55:case 54:case 53:case 52:case 51:case 50:case 49:case 48:{e=8;break b}case 70:case 69:case 68:case 67:case 66:case 65:{e=9;break b}case 102:case 101:case 100:case 99:case 98:case 97:{e=10;break b}default:{}}}c=c+2|0}if((e|0)==8)b=d+-48|b<<4;else if((e|0)==9)b=(b<<4)+-55+d|0;else if((e|0)==10)b=(b<<4)+-87+d|0;if((b|0)<1114112)c=c+2|0;else{b=-1;e=19;break}}}else{c=b;b=0;e=13}else{d=b;b=0;c=-1;e=16}while(0);while(1)if((e|0)==13){if(a[c>>0]|0){d=c;c=-1;e=16;continue}if((a[c+1>>0]|0)==59){e=18;continue}d=c;c=a[c+1>>0]|0;e=16;continue}else if((e|0)==16){b=(b*10|0)+-48+c|0;if((b|0)>=1114112){b=-1;e=19;continue}c=d+2|0;e=13;continue}else if((e|0)==18){b=jX(b)|0;e=19;continue}else if((e|0)==19)return b|0;return 0}function YY(b,c,d){b=b|0;c=c|0;d=d|0;var e=0;a:do switch((d-c|0)/2|0|0){case 2:{if((a[c+2>>0]|0)==0?(a[c+3>>0]|0)==116:0){if(!(a[c>>0]|0))b=a[c+1>>0]|0;else b=-1;b=(b|0)==108?60:(b|0)==103?62:0}else e=27;break}case 3:{if((((((a[c>>0]|0)==0?(a[c+1>>0]|0)==97:0)?(a[c+2>>0]|0)==0:0)?(a[c+3>>0]|0)==109:0)?(a[c+4>>0]|0)==0:0)?(a[c+5>>0]|0)==112:0)b=38;else e=27;break}case 4:{if(!(a[c>>0]|0))switch(a[c+1>>0]|0){case 113:{if(a[c+2>>0]|0){e=27;break a}if((a[c+3>>0]|0)!=117){e=27;break a}if(a[c+4>>0]|0){e=27;break a}if((a[c+5>>0]|0)!=111){e=27;break a}if(a[c+6>>0]|0){e=27;break a}if((a[c+7>>0]|0)==116){b=34;break a}else{e=27;break a}}case 97:{if(a[c+2>>0]|0){e=27;break a}if((a[c+3>>0]|0)!=112){e=27;break a}if(a[c+4>>0]|0){e=27;break a}if((a[c+5>>0]|0)!=111){e=27;break a}if(a[c+6>>0]|0){e=27;break a}if((a[c+7>>0]|0)==115){b=39;break a}else{e=27;break a}}default:{e=27;break a}}else e=27;break}default:e=27}while(0);if((e|0)==27)b=0;return b|0}function ZY(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0;j=b+72|0;k=g+4|0;while(1){if((f-e|0)<=1)break;b=a[e>>0]|0;h=a[e+1>>0]|0;if(!(b<<24>>24))b=d[j+(h&255)>>0]|0;else b=sY(b,h)|0;switch(b|0){case 5:{e=e+2|0;break}case 6:{e=e+3|0;break}case 7:{e=e+4|0;break}case 10:{c[k>>2]=-1;c[g>>2]=(c[g>>2]|0)+1;e=e+2|0;break}case 9:{c[g>>2]=(c[g>>2]|0)+1;i=e+2|0;if((f-i|0)>1){b=a[i>>0]|0;h=a[e+3>>0]|0;if(!(b<<24>>24))b=d[j+(h&255)>>0]|0;else b=sY(b,h)|0;e=(b|0)==10?e+4|0:i}else e=i;c[k>>2]=-1;break}default:e=e+2|0}c[k>>2]=(c[k>>2]|0)+1}return}function _Y(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;k=f+-2|0;j=b+72|0;a:while(1){h=e+2|0;if((k-h|0)<=1){f=1;break}f=a[h>>0]|0;i=f<<24>>24==0;b=a[e+3>>0]|0;if(i)f=d[j+(b&255)>>0]|0;else f=sY(f,b)|0;switch(f|0){case 23:case 19:case 30:case 33:case 16:case 18:case 10:case 9:case 15:case 14:case 17:case 35:case 34:case 32:case 31:case 13:case 27:case 24:case 25:{e=h;continue a}case 21:if(i&b<<24>>24==9){l=12;break a}else{e=h;continue a}case 22:case 26:{if(!i){l=12;break a}if(b<<24>>24>=0){e=h;continue a}break}default:if(!i){l=12;break a}}switch(b<<24>>24|0){case 64:case 36:{e=h;break}default:{l=12;break a}}}if((l|0)==12){c[g>>2]=h;f=0}return f|0}function $Y(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0;j=c[e>>2]|0;k=j+(f-j&-2)|0;l=k;m=h;a:while(1){if(j>>>0>=k>>>0){b=0;break}i=a[j+1>>0]|0;b=a[j>>0]|0;f=b&255;switch(b<<24>>24){case 0:{if(i<<24>>24>-1){b=c[g>>2]|0;if((b|0)==(h|0)){b=2;break a}c[g>>2]=b+1;a[b>>0]=i;b=j}else n=7;break}case 7:case 6:case 5:case 4:case 3:case 2:case 1:{n=7;break}case -37:case -38:case -39:case -40:{b=c[g>>2]|0;if((m-b|0)<4){b=2;break a}if((l-j|0)<4){b=1;break a}o=i&255;i=(f<<2&12|o>>>6)+1|0;c[g>>2]=b+1;a[b>>0]=i>>>2|240;b=c[g>>2]|0;c[g>>2]=b+1;a[b>>0]=o>>>2&15|i<<4&48|128;b=j+2|0;i=d[j+3>>0]|0;f=(o<<4&48|i>>>6|a[b>>0]<<2&12|128)&255;j=c[g>>2]|0;c[g>>2]=j+1;a[j>>0]=f;j=c[g>>2]|0;c[g>>2]=j+1;a[j>>0]=i&63|128;break}default:{b=c[g>>2]|0;if((m-b|0)<3){b=2;break a}c[g>>2]=b+1;a[b>>0]=f>>>4|224;o=i&255;b=c[g>>2]|0;c[g>>2]=b+1;a[b>>0]=o>>>6|f<<2&60|128;b=c[g>>2]|0;c[g>>2]=b+1;a[b>>0]=o&63|128;b=j}}if((n|0)==7){n=0;b=c[g>>2]|0;if((m-b|0)<2){b=2;break}o=i&255;c[g>>2]=b+1;a[b>>0]=o>>>6|f<<2|192;b=c[g>>2]|0;c[g>>2]=b+1;a[b>>0]=o&63|128;b=j}j=b+2|0}c[e>>2]=j;return b|0}function aZ(e,f,g,h,i){e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0;j=c[f>>2]|0;l=g-j&-2;e=j+l|0;if((l|0)>(i-(c[h>>2]|0)|0)){k=e+-2|0;g=(a[k>>0]&-8)<<24>>24==-40;l=g&1;e=g?k:e}else l=0;g=j;while(1){j=g>>>0>>0;k=c[h>>2]|0;if(!(j&k>>>0>>0))break;j=((d[g>>0]|0)<<8|(d[g+1>>0]|0))&65535;c[h>>2]=k+2;b[k>>1]=j;k=(c[f>>2]|0)+2|0;c[f>>2]=k;g=k}return ((k|0)!=(i|0)|j^1?l:2)|0}function bZ(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;l=f;j=l-e|0;a:do if((j|0)>1){k=a[e>>0]|0;if(!(k<<24>>24)){i=a[e+1>>0]|0;h=d[b+72+(i&255)>>0]|0}else{i=a[e+1>>0]|0;h=sY(k,i)|0}switch(h|0){case 29:{j=i&255;if(!(1<<(j&31)&c[56836+((j>>>5|(d[140706+(k&255)>>0]|0)<<3)<<2)>>2])){c[g>>2]=e;b=0;break a}break}case 24:case 22:break;case 5:{c[g>>2]=e;b=0;break a}case 6:{if((j|0)<3){b=-2;break a}c[g>>2]=e;b=0;break a}case 7:{if((j|0)<4){b=-2;break a}c[g>>2]=e;b=0;break a}case 19:{b=dZ(b,e+2|0,f,g)|0;break a}default:{c[g>>2]=e;b=0;break a}}k=b+72|0;j=e;b:while(1){i=j+2|0;e=l-i|0;if((e|0)<=1){b=-1;break a}b=a[i>>0]|0;f=a[j+3>>0]|0;if(!(b<<24>>24))h=d[k+(f&255)>>0]|0;else h=sY(b,f)|0;switch(h|0){case 27:case 26:case 25:case 24:case 22:{j=i;continue b}case 5:{f=23;break b}case 6:{f=24;break b}case 7:{f=26;break b}case 18:{f=28;break b}case 29:break;default:{f=29;break b}}e=f&255;if(!(1<<(e&31)&c[56836+((e>>>5|(d[140962+(b&255)>>0]|0)<<3)<<2)>>2])){f=22;break}else j=i}if((f|0)==22){c[g>>2]=i;b=0;break}else if((f|0)==23){c[g>>2]=i;b=0;break}else if((f|0)==24){if((e|0)<3){b=-2;break}c[g>>2]=i;b=0;break}else if((f|0)==26){if((e|0)<4){b=-2;break}c[g>>2]=i;b=0;break}else if((f|0)==28){c[g>>2]=j+4;b=9;break}else if((f|0)==29){c[g>>2]=i;b=0;break}}else b=-1;while(0);return b|0}function cZ(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;j=f-e|0;a:do if((j|0)>1){k=a[e>>0]|0;if(!(k<<24>>24)){i=a[e+1>>0]|0;h=d[b+72+(i&255)>>0]|0}else{i=a[e+1>>0]|0;h=sY(k,i)|0}switch(h|0){case 29:{l=i&255;if(!(1<<(l&31)&c[56836+((l>>>5|(d[140706+(k&255)>>0]|0)<<3)<<2)>>2])){c[g>>2]=e;f=0;break a}break}case 24:case 22:break;case 5:{c[g>>2]=e;f=0;break a}case 6:{if((j|0)<3){f=-2;break a}c[g>>2]=e;f=0;break a}case 7:{if((j|0)<4){f=-2;break a}c[g>>2]=e;f=0;break a}case 30:case 9:case 10:case 21:{c[g>>2]=e;f=22;break a}default:{c[g>>2]=e;f=0;break a}}l=b+72|0;b=e;b:while(1){k=b+2|0;e=f-k|0;if((e|0)<=1){f=-1;break a}h=a[k>>0]|0;i=a[b+3>>0]|0;if(!(h<<24>>24))j=d[l+(i&255)>>0]|0;else j=sY(h,i)|0;switch(j|0){case 27:case 26:case 25:case 24:case 22:{b=k;continue b}case 5:{h=23;break b}case 6:{h=24;break b}case 7:{h=26;break b}case 18:{h=28;break b}case 29:break;default:{h=29;break b}}e=i&255;if(!(1<<(e&31)&c[56836+((e>>>5|(d[140962+(h&255)>>0]|0)<<3)<<2)>>2])){h=22;break}else b=k}if((h|0)==22){c[g>>2]=k;f=0;break}else if((h|0)==23){c[g>>2]=k;f=0;break}else if((h|0)==24){if((e|0)<3){f=-2;break}c[g>>2]=k;f=0;break}else if((h|0)==26){if((e|0)<4){f=-2;break}c[g>>2]=k;f=0;break}else if((h|0)==28){c[g>>2]=b+4;f=28;break}else if((h|0)==29){c[g>>2]=k;f=0;break}}else f=-1;while(0);return f|0}function dZ(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0;k=f;a:do if((k-e|0)>1){i=a[e>>0]|0;h=a[e+1>>0]|0;do if(!(i<<24>>24))if(h<<24>>24==120){h=eZ(b,e+2|0,f,g)|0;break a}else{h=d[b+72+(h&255)>>0]|0;break}else h=sY(i,h)|0;while(0);if((h|0)!=25){c[g>>2]=e;h=0;break}j=b+72|0;b=e;b:while(1){i=b+2|0;if((k-i|0)<=1){h=-1;break a}h=a[i>>0]|0;f=a[b+3>>0]|0;if(!(h<<24>>24))h=d[j+(f&255)>>0]|0;else h=sY(h,f)|0;switch(h|0){case 25:{b=i;break}case 18:{f=15;break b}default:{f=16;break b}}}if((f|0)==15){c[g>>2]=b+4;h=10;break}else if((f|0)==16){c[g>>2]=i;h=0;break}}else h=-1;while(0);return h|0}function eZ(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;a:do if((f-e|0)>1){h=a[e>>0]|0;if(!(h<<24>>24))h=d[b+72+(d[e+1>>0]|0)>>0]|0;else h=sY(h,a[e+1>>0]|0)|0;if((h&-2|0)!=24){c[g>>2]=e;f=0;break}j=b+72|0;b:while(1){i=e+2|0;if((f-i|0)<=1){f=-1;break a}h=a[i>>0]|0;b=a[e+3>>0]|0;if(!(h<<24>>24))h=d[j+(b&255)>>0]|0;else h=sY(h,b)|0;switch(h|0){case 24:case 25:{e=i;break}case 18:{h=13;break b}default:{h=14;break b}}}if((h|0)==13){c[g>>2]=e+4;f=10;break}else if((h|0)==14){c[g>>2]=i;f=0;break}}else f=-1;while(0);return f|0}function fZ(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=f;j=o-e|0;a:do if((j|0)>1){k=a[e>>0]|0;if(!(k<<24>>24)){i=a[e+1>>0]|0;h=d[b+72+(i&255)>>0]|0}else{i=a[e+1>>0]|0;h=sY(k,i)|0}switch(h|0){case 29:{m=i&255;if(!(1<<(m&31)&c[56836+((m>>>5|d[140706+(k&255)>>0]<<3)<<2)>>2])){c[g>>2]=e;h=0;break a}break}case 24:case 22:break;case 5:{c[g>>2]=e;h=0;break a}case 6:{if((j|0)<3){h=-2;break a}c[g>>2]=e;h=0;break a}case 7:{if((j|0)<4){h=-2;break a}c[g>>2]=e;h=0;break a}case 16:{i=e+2|0;if((o-i|0)<=1){h=-1;break a}h=a[i>>0]|0;if(!(h<<24>>24))h=d[b+72+(d[e+3>>0]|0)>>0]|0;else h=sY(h,a[e+3>>0]|0)|0;switch(h|0){case 27:{h=gZ(b,e+4|0,f,g)|0;break a}case 20:{h=hZ(e+4|0,f,g)|0;break a}default:{c[g>>2]=i;h=0;break a}}}case 15:{h=iZ(b,e+2|0,f,g)|0;break a}case 17:{h=jZ(b,e+2|0,f,g)|0;break a}default:{c[g>>2]=e;h=0;break a}}m=b+72|0;l=0;h=e+2|0;b:while(1){c:while(1){i=o-h|0;if((i|0)<=1){h=-1;break a}j=a[h>>0]|0;k=a[h+1>>0]|0;if(!(j<<24>>24))e=d[m+(k&255)>>0]|0;else e=sY(j,k)|0;switch(e|0){case 5:{n=34;break b}case 6:{n=35;break b}case 7:{n=37;break b}case 10:case 9:case 21:{n=55;break b}case 11:{n=69;break b}case 17:break b;case 23:break c;case 29:{e=k&255;if(!(1<<(e&31)&c[56836+((e>>>5|d[140962+(j&255)>>0]<<3)<<2)>>2])){n=32;break b}break}case 27:case 26:case 25:case 24:case 22:break;default:{n=75;break b}}h=h+2|0}if(l|0){n=40;break}e=h+2|0;l=o-e|0;if((l|0)<=1){h=-1;break a}i=a[e>>0]|0;j=a[h+3>>0]|0;if(!(i<<24>>24))k=d[m+(j&255)>>0]|0;else k=sY(i,j)|0;switch(k|0){case 5:{n=49;break b}case 6:{n=50;break b}case 7:{n=52;break b}case 29:{l=j&255;if(!(1<<(l&31)&c[56836+((l>>>5|d[140706+(i&255)>>0]<<3)<<2)>>2])){n=47;break b}break}case 24:case 22:break;default:{n=54;break b}}l=1;h=h+4|0}d:switch(n|0){case 32:{c[g>>2]=h;h=0;break a}case 34:{c[g>>2]=h;h=0;break a}case 35:{if((i|0)<3){h=-2;break a}c[g>>2]=h;h=0;break a}case 37:{if((i|0)<4){h=-2;break a}c[g>>2]=h;h=0;break a}case 40:{c[g>>2]=h;h=0;break a}case 47:{c[g>>2]=e;h=0;break a}case 49:{c[g>>2]=e;h=0;break a}case 50:{if((l|0)<3){h=-2;break a}c[g>>2]=e;h=0;break a}case 52:{if((l|0)<4){h=-2;break a}c[g>>2]=e;h=0;break a}case 54:{c[g>>2]=e;h=0;break a}case 55:{e:while(1){n=0;i=h+2|0;j=o-i|0;if((j|0)<=1){h=-1;break a}k=a[i>>0]|0;e=a[h+3>>0]|0;if(!(k<<24>>24))l=d[m+(e&255)>>0]|0;else l=sY(k,e)|0;switch(l|0){case 11:{h=i;n=69;break d}case 17:{h=i;break d}case 10:case 9:case 21:{h=i;n=55;break}case 29:{n=60;break e}case 24:case 22:break e;case 5:{n=63;break e}case 6:{n=64;break e}case 7:{n=66;break e}default:{n=68;break e}}}if((n|0)==60){o=e&255;if(!(1<<(o&31)&c[56836+((o>>>5|d[140706+(k&255)>>0]<<3)<<2)>>2])){c[g>>2]=i;h=0;break a}}else if((n|0)==63){c[g>>2]=i;h=0;break a}else if((n|0)==64){if((j|0)<3){h=-2;break a}c[g>>2]=i;h=0;break a}else if((n|0)==66){if((j|0)<4){h=-2;break a}c[g>>2]=i;h=0;break a}else if((n|0)==68){c[g>>2]=i;h=0;break a}h=kZ(b,h+4|0,f,g)|0;break a}case 75:{c[g>>2]=h;h=0;break a}}if((n|0)==69){c[g>>2]=h+2;h=2;break}i=h+2|0;if((o-i|0)>1){if((a[i>>0]|0)==0?(a[h+3>>0]|0)==62:0){c[g>>2]=h+4;h=4;break}c[g>>2]=i;h=0}else h=-1}else h=-1;while(0);return h|0}function gZ(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0;j=f;a:do if((j-e|0)>1){if((a[e>>0]|0)==0?(a[e+1>>0]|0)==45:0){i=b+72|0;h=e+2|0;b:while(1){e=j-h|0;if((e|0)<=1){f=-1;break a}f=a[h>>0]|0;b=a[h+1>>0]|0;if(!(f<<24>>24))f=d[i+(b&255)>>0]|0;else f=sY(f,b)|0;switch(f|0){case 8:case 1:case 0:{k=16;break b}case 5:{h=h+2|0;continue b}case 6:{if((e|0)<3){f=-2;break a}h=h+3|0;continue b}case 7:{if((e|0)<4){f=-2;break a}h=h+4|0;continue b}case 27:{f=h+2|0;if((j-f|0)<=1){f=-1;break a}if(a[f>>0]|0){h=f;continue b}if((a[h+3>>0]|0)==45)break b;else{h=f;continue b}}default:{h=h+2|0;continue b}}}if((k|0)==16){c[g>>2]=h;f=0;break}f=h+4|0;if((j-f|0)<=1){f=-1;break}if((a[f>>0]|0)==0?(a[h+5>>0]|0)==62:0){c[g>>2]=h+6;f=13;break}c[g>>2]=f;f=0;break}c[g>>2]=e;f=0}else f=-1;while(0);return f|0}function hZ(b,d,e){b=b|0;d=d|0;e=e|0;if((d-b|0)>11){d=0;while(1){if((d|0)>=6){d=8;break}if(a[b>>0]|0){d=0;break}if((a[b+1>>0]|0)!=(a[141218+d>>0]|0)){d=0;break}d=d+1|0;b=b+2|0}c[e>>2]=b}else d=-1;return d|0}function iZ(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;q=l;l=l+16|0;p=q;o=f;i=o-e|0;a:do if((i|0)>1){j=a[e>>0]|0;if(!(j<<24>>24)){h=a[e+1>>0]|0;f=d[b+72+(h&255)>>0]|0}else{h=a[e+1>>0]|0;f=sY(j,h)|0}switch(f|0){case 29:{m=h&255;if(!(1<<(m&31)&c[56836+((m>>>5|d[140706+(j&255)>>0]<<3)<<2)>>2])){c[g>>2]=e;f=0;break a}break}case 24:case 22:break;case 5:{c[g>>2]=e;f=0;break a}case 6:{if((i|0)<3){f=-2;break a}c[g>>2]=e;f=0;break a}case 7:{if((i|0)<4){f=-2;break a}c[g>>2]=e;f=0;break a}default:{c[g>>2]=e;f=0;break a}}m=b+72|0;k=e;b:while(1){f=k+2|0;h=o-f|0;if((h|0)<=1){f=-1;break a}i=a[f>>0]|0;j=a[k+3>>0]|0;if(!(i<<24>>24))b=d[m+(j&255)>>0]|0;else b=sY(i,j)|0;switch(b|0){case 27:case 26:case 25:case 24:case 22:{k=f;continue b}case 5:{n=22;break b}case 6:{n=23;break b}case 7:{n=25;break b}case 10:case 9:case 21:{n=27;break b}case 15:{n=46;break b}case 29:break;default:break b}k=j&255;if(!(1<<(k&31)&c[56836+((k>>>5|d[140962+(i&255)>>0]<<3)<<2)>>2])){n=21;break}else k=f}if((n|0)==21){c[g>>2]=f;f=0;break}else if((n|0)==22){c[g>>2]=f;f=0;break}else if((n|0)==23){if((h|0)<3){f=-2;break}c[g>>2]=f;f=0;break}else if((n|0)==25){if((h|0)<4){f=-2;break}c[g>>2]=f;f=0;break}else if((n|0)==27){if(!(lZ(e,f,p)|0)){c[g>>2]=f;f=0;break}j=k+4|0;c:while(1){i=o-j|0;if((i|0)<=1){f=-1;break a}f=a[j>>0]|0;h=a[j+1>>0]|0;if(!(f<<24>>24))f=d[m+(h&255)>>0]|0;else f=sY(f,h)|0;switch(f|0){case 8:case 1:case 0:{n=40;break c}case 5:{j=j+2|0;continue c}case 6:{if((i|0)<3){f=-2;break a}j=j+3|0;continue c}case 7:{if((i|0)<4){f=-2;break a}j=j+4|0;continue c}case 15:{f=j+2|0;if((o-f|0)<=1){f=-1;break a}if(a[f>>0]|0){j=f;continue c}if((a[j+3>>0]|0)==62){n=44;break c}else{j=f;continue c}}default:{j=j+2|0;continue c}}}if((n|0)==40){c[g>>2]=j;f=0;break}else if((n|0)==44){c[g>>2]=j+4;f=c[p>>2]|0;break}}else if((n|0)==46){if(!(lZ(e,f,p)|0)){c[g>>2]=f;f=0;break}f=k+4|0;if((o-f|0)<=1){f=-1;break}if((a[f>>0]|0)==0?(a[k+5>>0]|0)==62:0){c[g>>2]=k+6;f=c[p>>2]|0;break}}c[g>>2]=f;f=0}else f=-1;while(0);l=q;return f|0}function jZ(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;j=f-e|0;a:do if((j|0)>1){k=a[e>>0]|0;if(!(k<<24>>24)){i=a[e+1>>0]|0;h=d[b+72+(i&255)>>0]|0}else{i=a[e+1>>0]|0;h=sY(k,i)|0}switch(h|0){case 29:{l=i&255;if(!(1<<(l&31)&c[56836+((l>>>5|(d[140706+(k&255)>>0]|0)<<3)<<2)>>2])){c[g>>2]=e;f=0;break a}break}case 24:case 22:break;case 5:{c[g>>2]=e;f=0;break a}case 6:{if((j|0)<3){f=-2;break a}c[g>>2]=e;f=0;break a}case 7:{if((j|0)<4){f=-2;break a}c[g>>2]=e;f=0;break a}default:{c[g>>2]=e;f=0;break a}}l=b+72|0;b=e;b:while(1){j=b+2|0;e=f-j|0;if((e|0)<=1){f=-1;break a}h=a[j>>0]|0;i=a[b+3>>0]|0;if(!(h<<24>>24))k=d[l+(i&255)>>0]|0;else k=sY(h,i)|0;switch(k|0){case 23:case 27:case 26:case 25:case 24:case 22:{b=j;continue b}case 5:{h=22;break b}case 6:{h=23;break b}case 7:{h=25;break b}case 10:case 9:case 21:{h=27;break b}case 11:{h=34;break b}case 29:break;default:{h=35;break b}}e=i&255;if(!(1<<(e&31)&c[56836+((e>>>5|(d[140962+(h&255)>>0]|0)<<3)<<2)>>2])){h=21;break}else b=j}if((h|0)==21){c[g>>2]=j;f=0;break}else if((h|0)==22){c[g>>2]=j;f=0;break}else if((h|0)==23){if((e|0)<3){f=-2;break}c[g>>2]=j;f=0;break}else if((h|0)==25){if((e|0)<4){f=-2;break}c[g>>2]=j;f=0;break}else if((h|0)==27){c:while(1){k=j+2|0;if((f-k|0)<=1){f=-1;break a}h=a[k>>0]|0;i=a[j+3>>0]|0;if(!(h<<24>>24))h=d[l+(i&255)>>0]|0;else h=sY(h,i)|0;switch(h|0){case 10:case 9:case 21:{j=k;h=27;break}case 11:{h=32;break c}default:{h=33;break c}}}if((h|0)==32){c[g>>2]=j+4;f=5;break}else if((h|0)==33){c[g>>2]=k;f=0;break}}else if((h|0)==34){c[g>>2]=b+4;f=5;break}else if((h|0)==35){c[g>>2]=j;f=0;break}}else f=-1;while(0);return f|0}function kZ(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=l;l=l+16|0;q=s;c[q>>2]=e;r=f;o=b+72|0;h=0;a:while(1){b:while(1){m=r-e|0;if((m|0)<=1){e=-1;break a}i=a[e>>0]|0;j=a[e+1>>0]|0;if(!(i<<24>>24))k=d[o+(j&255)>>0]|0;else k=sY(i,j)|0;switch(k|0){case 5:{p=11;break a}case 6:{p=12;break a}case 7:{p=14;break a}case 23:{p=16;break b}case 10:case 9:case 21:{p=31;break b}case 14:{p=37;break b}case 29:{n=j&255;if(!(1<<(n&31)&c[56836+((n>>>5|d[140962+(i&255)>>0]<<3)<<2)>>2])){p=9;break a}break}case 27:case 26:case 25:case 24:case 22:break;default:{p=89;break a}}n=e+2|0;c[q>>2]=n;e=n}c:do if((p|0)==16){p=0;if(h|0){p=17;break a}h=e+2|0;c[q>>2]=h;i=h;j=r-i|0;if((j|0)<=1){e=-1;break a}k=a[h>>0]|0;m=a[e+3>>0]|0;if(!(k<<24>>24))n=d[o+(m&255)>>0]|0;else n=sY(k,m)|0;switch(n|0){case 5:{p=25;break a}case 6:{p=26;break a}case 7:{p=28;break a}case 24:case 22:{h=1;break c}case 29:break;default:{p=30;break a}}n=m&255;if(!(1<<(n&31)&c[56836+((n>>>5|d[140706+(k&255)>>0]<<3)<<2)>>2])){p=24;break a}else h=1}else if((p|0)==31)while(1){p=0;i=e+2|0;c[q>>2]=i;j=i;if((r-j|0)<=1){e=-1;break a}h=a[i>>0]|0;e=a[e+3>>0]|0;if(!(h<<24>>24))e=d[o+(e&255)>>0]|0;else e=sY(h,e)|0;switch(e|0){case 14:{e=i;p=37;break c}case 9:case 10:case 21:{e=i;p=31;break}default:{p=36;break a}}}while(0);d:do if((p|0)==37){while(1){p=0;j=e+2|0;c[q>>2]=j;k=j;if((r-k|0)<=1){e=-1;break a}h=a[j>>0]|0;i=a[e+3>>0]|0;if(!(h<<24>>24))m=d[o+(i&255)>>0]|0;else m=sY(h,i)|0;if((m|1|0)==13)break;switch(m|0){case 9:case 10:case 21:{e=j;p=37;break}default:{p=43;break a}}}e=e+4|0;c[q>>2]=e;e:while(1){j=r-e|0;if((j|0)<=1){e=-1;break a}h=a[e>>0]|0;i=a[e+1>>0]|0;if(!(h<<24>>24))h=d[o+(i&255)>>0]|0;else h=sY(h,i)|0;if((h|0)==(m|0))break;switch(h|0){case 8:case 1:case 0:{p=56;break a}case 2:{p=61;break a}case 5:{n=e+2|0;c[q>>2]=n;e=n;continue e}case 6:{if((j|0)<3){e=-2;break a}n=e+3|0;c[q>>2]=n;e=n;continue e}case 7:{if((j|0)<4){e=-2;break a}n=e+4|0;c[q>>2]=n;e=n;continue e}case 3:{e=bZ(b,e+2|0,f,q)|0;if((e|0)<1){p=59;break a}e=c[q>>2]|0;continue e}default:{n=e+2|0;c[q>>2]=n;e=n;continue e}}}i=e+2|0;c[q>>2]=i;k=i;if((r-k|0)<=1){e=-1;break a}h=a[i>>0]|0;j=a[e+3>>0]|0;if(!(h<<24>>24))h=d[o+(j&255)>>0]|0;else h=sY(h,j)|0;switch(h|0){case 11:{p=81;break a}case 17:{p=82;break a}case 10:case 9:case 21:{e=i;break}default:{p=68;break a}}f:while(1){i=e+2|0;c[q>>2]=i;h=i;j=r-h|0;if((j|0)<=1){e=-1;break a}k=a[i>>0]|0;m=a[e+3>>0]|0;if(!(k<<24>>24))n=d[o+(m&255)>>0]|0;else n=sY(k,m)|0;switch(n|0){case 5:{p=76;break a}case 6:{p=77;break a}case 7:{p=79;break a}case 11:{p=81;break a}case 17:{p=82;break a}case 24:case 22:{h=0;break d}case 10:case 9:case 21:{e=i;break}case 29:break f;default:{p=87;break a}}}n=m&255;if(!(1<<(n&31)&c[56836+((n>>>5|d[140706+(k&255)>>0]<<3)<<2)>>2])){p=75;break a}else h=0}while(0);e=e+4|0;c[q>>2]=e}switch(p|0){case 9:{c[g>>2]=e;e=0;break}case 11:{c[g>>2]=e;e=0;break}case 12:{if((m|0)<3)e=-2;else{c[g>>2]=e;e=0}break}case 14:{if((m|0)<4)e=-2;else{c[g>>2]=e;e=0}break}case 17:{c[g>>2]=e;e=0;break}case 24:{c[g>>2]=h;e=0;break}case 25:{c[g>>2]=h;e=0;break}case 26:{if((j|0)<3)e=-2;else{c[g>>2]=h;e=0}break}case 28:{if((j|0)<4)e=-2;else{c[g>>2]=h;e=0}break}case 30:{c[g>>2]=i;e=0;break}case 36:{c[g>>2]=j;e=0;break}case 43:{c[g>>2]=k;e=0;break}case 56:{c[g>>2]=e;e=0;break}case 59:{if(!e){c[g>>2]=c[q>>2];e=0}break}case 61:{c[g>>2]=e;e=0;break}case 68:{c[g>>2]=k;e=0;break}case 75:{c[g>>2]=i;e=0;break}case 76:{c[g>>2]=i;e=0;break}case 77:{if((j|0)<3)e=-2;else{c[g>>2]=i;e=0}break}case 79:{if((j|0)<4)e=-2;else{c[g>>2]=i;e=0}break}case 81:{c[g>>2]=e+4;e=1;break}case 82:{h=i+2|0;c[q>>2]=h;e=h;if((r-e|0)>1){if((a[h>>0]|0)==0?(a[i+3>>0]|0)==62:0){c[g>>2]=i+4;e=3;break}c[g>>2]=e;e=0}else e=-1;break}case 87:{c[g>>2]=h;e=0;break}case 89:{c[g>>2]=e;e=0;break}}l=s;return e|0}function lZ(b,d,e){b=b|0;d=d|0;e=e|0;c[e>>2]=11;a:do if((d-b|0)==6?(a[b>>0]|0)==0:0){switch(a[b+1>>0]|0){case 120:{d=0;break}case 88:{d=1;break}default:{d=1;break a}}if(!(a[b+2>>0]|0)){switch(a[b+3>>0]|0){case 109:break;case 77:{d=1;break}default:{d=1;break a}}if(!(a[b+4>>0]|0)){switch(a[b+5>>0]|0){case 108:break;case 76:{d=0;break a}default:{d=1;break a}}if(!d){c[e>>2]=12;d=1}else d=0}else d=1}else d=1}else d=1;while(0);return d|0}function mZ(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0;k=e+72|0;a:while(1){b:while(1){j=g-f|0;if((j|0)<=1){f=-1;break a}e=a[f>>0]|0;i=a[f+1>>0]|0;if(!(e<<24>>24))i=d[k+(i&255)>>0]|0;else i=sY(e,i)|0;switch(i|0){case 8:case 1:case 0:{l=10;break a}case 6:{l=9;break b}case 7:{l=19;break b}case 5:{f=f+2|0;continue b}case 13:case 12:{e=f+2|0;if((i|0)==(b|0)){l=12;break a}else{f=e;continue b}}default:{f=f+2|0;continue b}}}if((l|0)==9){l=0;if((j|0)<3){f=-2;break}else{f=f+3|0;continue}}else if((l|0)==19){l=0;if((j|0)<4){f=-2;break}else{f=f+4|0;continue}}}c:do if((l|0)==10){c[h>>2]=f;f=0}else if((l|0)==12)if((g-e|0)>1){c[h>>2]=e;g=a[e>>0]|0;f=a[f+3>>0]|0;if(!(g<<24>>24))f=d[k+(f&255)>>0]|0;else f=sY(g,f)|0;switch(f|0){case 20:case 30:case 11:case 10:case 9:case 21:{f=27;break c}default:{}}f=0}else f=-27;while(0);return f|0}function nZ(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;k=f;a:do if((k-e|0)>1){h=a[e>>0]|0;if(!(h<<24>>24))h=d[b+72+(d[e+1>>0]|0)>>0]|0;else h=sY(h,a[e+1>>0]|0)|0;switch(h|0){case 27:{h=gZ(b,e+2|0,f,g)|0;break a}case 20:{c[g>>2]=e+2;h=33;break a}case 24:case 22:{j=b+72|0;b:while(1){i=e+2|0;f=k-i|0;if((f|0)<=1){h=-1;break a}h=a[i>>0]|0;b=a[e+3>>0]|0;if(!(h<<24>>24))h=d[j+(b&255)>>0]|0;else h=sY(h,b)|0;switch(h|0){case 24:case 22:{e=i;break}case 30:{l=15;break b}case 10:case 9:case 21:break b;default:{l=22;break b}}}if((l|0)==22){c[g>>2]=i;h=0;break a}c:do if((l|0)==15){if((f|0)<=3){h=-1;break a}b=a[e+4>>0]|0;h=a[e+5>>0]|0;if(!(b<<24>>24))h=d[j+(h&255)>>0]|0;else h=sY(b,h)|0;switch(h|0){case 30:case 10:case 9:case 21:break;default:break c}c[g>>2]=i;h=0;break a}while(0);c[g>>2]=i;h=16;break a}default:{c[g>>2]=e;h=0;break a}}}else h=-1;while(0);return h|0}function oZ(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0;j=f-e|0;a:do if((j|0)>1){k=a[e>>0]|0;if(!(k<<24>>24)){i=a[e+1>>0]|0;h=d[b+72+(i&255)>>0]|0}else{i=a[e+1>>0]|0;h=sY(k,i)|0}switch(h|0){case 29:{j=i&255;if(!(1<<(j&31)&c[56836+((j>>>5|(d[140706+(k&255)>>0]|0)<<3)<<2)>>2])){c[g>>2]=e;f=0;break a}break}case 24:case 22:break;case 5:{c[g>>2]=e;f=0;break a}case 6:{if((j|0)<3){f=-2;break a}c[g>>2]=e;f=0;break a}case 7:{if((j|0)<4){f=-2;break a}c[g>>2]=e;f=0;break a}default:{c[g>>2]=e;f=0;break a}}b=b+72|0;k=e;b:while(1){h=k;k=k+2|0;e=f-k|0;if((e|0)<=1){f=-20;break a}j=a[k>>0]|0;h=a[h+3>>0]|0;if(!(j<<24>>24))i=d[b+(h&255)>>0]|0;else i=sY(j,h)|0;switch(i|0){case 27:case 26:case 25:case 24:case 22:continue b;case 5:{h=22;break b}case 6:{h=23;break b}case 7:{h=25;break b}case 36:case 30:case 11:case 32:case 21:case 10:case 9:{h=27;break b}case 29:break;default:{h=28;break b}}e=h&255;if(!(1<<(e&31)&c[56836+((e>>>5|(d[140962+(j&255)>>0]|0)<<3)<<2)>>2])){h=21;break}}if((h|0)==21){c[g>>2]=k;f=0;break}else if((h|0)==22){c[g>>2]=k;f=0;break}else if((h|0)==23){if((e|0)<3){f=-2;break}c[g>>2]=k;f=0;break}else if((h|0)==25){if((e|0)<4){f=-2;break}c[g>>2]=k;f=0;break}else if((h|0)==27){c[g>>2]=k;f=20;break}else if((h|0)==28){c[g>>2]=k;f=0;break}}else f=-1;while(0);return f|0}function pZ(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;while(1){b=c[d>>2]|0;h=b>>>0>>0;i=c[f>>2]|0;if(!(h&i>>>0>>0))break;c[d>>2]=b+1;h=a[b>>0]|0;i=c[f>>2]|0;c[f>>2]=i+1;a[i>>0]=h}return ((i|0)!=(g|0)|h^1?0:2)|0}function qZ(b,c){b=b|0;c=c|0;var d=0,e=0,f=0,g=0;a:while(1){f=a[b>>0]|0;g=a[c>>0]|0;f=(f+-97&255)<26?(f&255)+224&255:f;switch((f<<24>>24==((g+-97&255)<26?(g&255)+224&255:g)<<24>>24?(f<<24>>24==0?2:0):1)&3){case 0:{c=c+1|0;b=b+1|0;break}case 1:{e=3;break a}case 2:{d=1;break a}default:{e=5;break a}}}if((e|0)==3)d=0;return d|0}function rZ(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;return tZ(36,a,b,c,d,e,f,g,h,i,j)|0}function sZ(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;h=l;l=l+144|0;i=h+4|0;f=h+8|0;g=h;c[i>>2]=d;c[g>>2]=f;pb[c[b+56>>2]&127](b,i,e,g,f+127|0)|0;do if((c[i>>2]|0)==(e|0)){a[c[g>>2]>>0]=0;if(qZ(f,141233)|0?(c[b+64>>2]|0)==2:0)break;b=IY(f)|0;if((b|0)!=-1)b=c[58844+(b<<2)>>2]|0;else b=0}else b=0;while(0);l=h;return b|0}function tZ(a,b,d,e,f,g,h,i,j,k,m){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;m=m|0;var n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;v=l;l=l+16|0;t=v+8|0;q=v+12|0;o=v+4|0;p=v;c[q>>2]=0;c[o>>2]=0;c[p>>2]=0;u=d+64|0;s=c[u>>2]|0;r=e+(s*5|0)|0;c[t>>2]=r;s=f+(0-(s<<1))|0;r=(uZ(d,r,s,o,p,q,t)|0)!=0;n=c[o>>2]|0;e=n;a:do if(r&(n|0)!=0){r=d+24|0;f=c[p>>2]|0;do if(!(ob[c[r>>2]&127](d,n,f,141258)|0)){if(!b){c[g>>2]=e;e=0;break a}}else{if(h|0)c[h>>2]=c[q>>2];if(!i)e=c[t>>2]|0;else{e=c[t>>2]|0;c[i>>2]=e}if(!(uZ(d,e,s,o,p,q,t)|0)){c[g>>2]=c[t>>2];e=0;break a}f=c[o>>2]|0;if(f|0){e=f;n=f;f=c[p>>2]|0;break}if(!b){e=1;break a}c[g>>2]=c[t>>2];e=0;break a}while(0);if(ob[c[r>>2]&127](d,n,f,141266)|0){f=c[q>>2]|0;e=f;if((((vZ(d,f,s)|0)&-33)+-65|0)>>>0>=26){c[g>>2]=e;e=0;break}if(j|0)c[j>>2]=e;e=c[t>>2]|0;if(k|0)c[k>>2]=nb[a&63](d,f,e+(0-(c[u>>2]|0))|0)|0;if(!(uZ(d,e,s,o,p,q,t)|0)){c[g>>2]=c[t>>2];e=0;break}e=c[o>>2]|0;if(!e){e=1;break}n=e;f=c[p>>2]|0}if((b|0)!=0|(ob[c[r>>2]&127](d,n,f,141275)|0)==0){c[g>>2]=e;e=0;break}f=c[q>>2]|0;e=c[t>>2]|0;n=f;if(!(ob[c[r>>2]&127](d,f,e+(0-(c[u>>2]|0))|0,104631)|0)){if(!(ob[c[r>>2]&127](d,f,e+(0-(c[u>>2]|0))|0,104623)|0)){c[g>>2]=n;e=0;break}if(m)c[m>>2]=0}else if(m)c[m>>2]=1;while(1){if(!(wZ(vZ(d,e,s)|0)|0))break;e=e+(c[u>>2]|0)|0}c[t>>2]=e;if((e|0)==(s|0))e=1;else{c[g>>2]=e;e=0}}else{c[g>>2]=c[t>>2];e=0}while(0);l=v;return e|0}function uZ(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0;a:do if((b|0)!=(d|0)){if(!(wZ(vZ(a,b,d)|0)|0)){c[h>>2]=b;b=0;break}j=a+64|0;do b=b+(c[j>>2]|0)|0;while((wZ(vZ(a,b,d)|0)|0)!=0);if((b|0)==(d|0)){c[e>>2]=0;b=1;break}c[e>>2]=b;b:while(1){i=vZ(a,b,d)|0;switch(i|0){case -1:{i=11;break b}case 61:{i=12;break b}default:{}}if(wZ(i)|0){i=14;break}b=b+(c[j>>2]|0)|0}if((i|0)==11){c[h>>2]=b;b=0;break}else if((i|0)==12)c[f>>2]=b;else if((i|0)==14){c[f>>2]=b;do{b=b+(c[j>>2]|0)|0;i=vZ(a,b,d)|0}while((wZ(i)|0)!=0);if((i|0)!=61){c[h>>2]=b;b=0;break}}if((b|0)==(c[e>>2]|0)){c[h>>2]=b;b=0;break}do{b=b+(c[j>>2]|0)|0;i=vZ(a,b,d)|0}while((wZ(i)|0)!=0);switch(i|0){case 34:case 39:break;default:{c[h>>2]=b;b=0;break a}}f=b+(c[j>>2]|0)|0;c[g>>2]=f;b=i<<24>>24;c:while(1){i=vZ(a,f,d)|0;if((i|0)==(b|0)){i=30;break}if((i+-48|0)>>>0>9&((i&-33)+-65|0)>>>0>25)switch(i|0){case 45:case 46:case 95:break;default:{i=28;break c}}f=f+(c[j>>2]|0)|0}if((i|0)==28){c[h>>2]=f;b=0;break}else if((i|0)==30){c[h>>2]=f+(c[j>>2]|0);b=1;break}}else{c[e>>2]=0;b=1}while(0);return b|0}function vZ(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;h=l;l=l+16|0;i=h+4|0;f=h+8|0;g=h;c[i>>2]=d;c[g>>2]=f;pb[c[b+56>>2]&127](b,i,e,g,f+1|0)|0;l=h;return ((c[g>>2]|0)==(f|0)?-1:a[f>>0]|0)|0}function wZ(a){a=a|0;switch(a|0){case 9:case 10:case 13:case 32:{a=1;break}default:a=0}return a|0}function xZ(){return 59988}function yZ(b,d,e){b=b|0;d=d|0;e=e|0;e=IY(e)|0;if((e|0)==-1)e=0;else{a[b+69>>0]=e;c[b>>2]=69;c[b+4>>2]=70;c[b+48>>2]=31;c[b+72>>2]=d;c[d>>2]=b;e=1}return e|0}function zZ(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return MY(60352,a,0,b,c,d)|0}function AZ(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return MY(60352,a,1,b,c,d)|0}function BZ(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;return tZ(37,a,b,c,d,e,f,g,h,i,j)|0}function CZ(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;h=l;l=l+144|0;i=h+4|0;f=h+8|0;g=h;c[i>>2]=d;c[g>>2]=f;pb[c[b+56>>2]&127](b,i,e,g,f+127|0)|0;do if((c[i>>2]|0)==(e|0)){a[c[g>>2]>>0]=0;if(qZ(f,141233)|0?(c[b+64>>2]|0)==2:0)break;b=IY(f)|0;if((b|0)!=-1)b=c[60352+(b<<2)>>2]|0;else b=0}else b=0;while(0);l=h;return b|0}function DZ(b,c,d,e){b=b|0;c=c|0;d=d|0;e=e|0;b=iX(b,c,d,e)|0;if(b|0)a[b+72+58>>0]=23;return b|0}function EZ(a){a=a|0;c[a>>2]=15;c[a+16>>2]=1;c[a+12>>2]=0;c[a+20>>2]=0;return}function FZ(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0;switch(b|0){case 15:{c[a>>2]=16;a=0;break}case 12:{c[a>>2]=16;a=1;break}case 11:{c[a>>2]=16;a=55;break}case 13:{c[a>>2]=16;a=56;break}case 14:{a=0;break}case 16:{if(!(ob[c[f+24>>2]&127](f,d+(c[f+64>>2]<<1)|0,e,141286)|0))g=9;else{c[a>>2]=17;a=3}break}case 29:{c[a>>2]=18;a=2;break}default:g=9}if((g|0)==9)a=JZ(a,b)|0;return a|0}function GZ(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0;switch(b|0){case 14:case 15:{a=0;break}case 11:{a=55;break}case 13:{a=56;break}case 16:{if(!(ob[c[f+24>>2]&127](f,d+(c[f+64>>2]<<1)|0,e,141286)|0))g=7;else{c[a>>2]=17;a=3}break}case 29:{c[a>>2]=18;a=2;break}default:g=7}if((g|0)==7)a=JZ(a,b)|0;return a|0}function HZ(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(b|0){case 15:{a=3;break}case 41:case 18:{c[a>>2]=19;a=4;break}default:a=JZ(a,b)|0}return a|0}function IZ(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return 0}function JZ(a,b){a=a|0;b=b|0;if((b|0)==28&(c[a+16>>2]|0)==0)a=59;else{c[a>>2]=18;a=-1}return a|0}function KZ(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;a:do switch(b|0){case 15:{a=3;break}case 25:{c[a>>2]=20;a=7;break}case 17:{c[a>>2]=21;a=8;break}case 18:{g=f+24|0;if(ob[c[g>>2]&127](f,d,e,141294)|0){c[a>>2]=22;a=3;break a}if(!(ob[c[g>>2]&127](f,d,e,141301)|0))h=8;else{c[a>>2]=23;a=3}break}default:h=8}while(0);if((h|0)==8)a=JZ(a,b)|0;return a|0}function LZ(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;a:do switch(b|0){case -4:case 15:{a=0;break}case 16:{g=f+24|0;h=f+64|0;if(ob[c[g>>2]&127](f,d+(c[h>>2]<<1)|0,e,141308)|0){c[a>>2]=24;a=11;break a}if(ob[c[g>>2]&127](f,d+(c[h>>2]<<1)|0,e,141315)|0){c[a>>2]=25;a=33;break a}if(ob[c[g>>2]&127](f,d+(c[h>>2]<<1)|0,e,141323)|0){c[a>>2]=26;a=39;break a}if(!(ob[c[g>>2]&127](f,d+(c[h>>2]<<1)|0,e,141331)|0))i=14;else{c[a>>2]=27;a=17}break}case 11:{a=55;break}case 13:{a=56;break}case 28:{a=60;break}case 26:{c[a>>2]=28;a=3;break}default:i=14}while(0);if((i|0)==14)a=JZ(a,b)|0;return a|0}function MZ(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;f=b+-11|0;switch(f>>>1|f<<31|0){case 2:{a=0;break}case 0:{a=55;break}case 1:{a=56;break}case 9:{c[a>>2]=18;a=2;break}default:a=JZ(a,b)|0}return a|0}function NZ(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(b|0){case 15:{a=3;break}case 27:{c[a>>2]=29;a=5;break}default:a=JZ(a,b)|0}return a|0}function OZ(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(b|0){case 15:{a=3;break}case 27:{c[a>>2]=22;a=6;break}default:a=JZ(a,b)|0}return a|0}function PZ(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(b|0){case 15:{a=3;break}case 25:{c[a>>2]=20;a=7;break}case 17:{c[a>>2]=21;a=8;break}default:a=JZ(a,b)|0}return a|0}function QZ(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(b|0){case 15:{a=11;break}case 22:{c[a>>2]=30;a=11;break}case 18:{c[a>>2]=31;a=9;break}default:a=JZ(a,b)|0}return a|0}function RZ(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(b|0){case 15:{a=33;break}case 41:case 18:{c[a>>2]=32;a=34;break}default:a=JZ(a,b)|0}return a|0}function SZ(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(b|0){case 15:{a=39;break}case 41:case 18:{c[a>>2]=33;a=40;break}default:a=JZ(a,b)|0}return a|0}function TZ(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(b|0){case 15:{a=17;break}case 18:{c[a>>2]=34;a=18;break}default:a=JZ(a,b)|0}return a|0}function UZ(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(b|0){case 15:{a=3;break}case 17:{c[a>>2]=21;a=8;break}default:a=JZ(a,b)|0}return a|0}function VZ(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;a:do switch(b|0){case 15:{a=17;break}case 18:{g=f+24|0;if(ob[c[g>>2]&127](f,d,e,141294)|0){c[a>>2]=35;a=17;break a}if(!(ob[c[g>>2]&127](f,d,e,141301)|0))h=6;else{c[a>>2]=36;a=17}break}default:h=6}while(0);if((h|0)==6)a=JZ(a,b)|0;return a|0}function WZ(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(b|0){case 15:{a=17;break}case 27:{c[a>>2]=37;c[a+8>>2]=17;a=19;break}default:a=JZ(a,b)|0}return a|0}function XZ(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(b|0){case 15:{a=17;break}case 27:{c[a>>2]=38;a=21;break}default:a=JZ(a,b)|0}return a|0}function YZ(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(b|0){case 15:{a=17;break}case 27:{c[a>>2]=37;c[a+8>>2]=17;a=19;break}case 17:{c[a>>2]=c[a+16>>2]|0?20:39;a=20;break}default:a=JZ(a,b)|0}return a|0}function ZZ(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(b|0){case 15:{a=c[a+8>>2]|0;break}case 17:{c[a>>2]=c[a+16>>2]|0?20:39;a=c[a+8>>2]|0;break}default:a=JZ(a,b)|0}return a|0}function _Z(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0;switch(b|0){case 33:{c[a>>2]=40;d=0;break}case 34:{d=a+12|0;e=c[d>>2]|0;if(!e)g=7;else{c[d>>2]=e+-1;d=0}break}case 15:{d=0;break}case 26:{g=7;break}case -4:{if(!(c[a+12>>2]|0))d=0;else g=7;break}default:d=LZ(a,b,d,e,f)|0}if((g|0)==7)d=JZ(a,b)|0;return d|0}function $Z(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;a:do switch(b|0){case 15:{a=0;break}case 18:{g=f+24|0;if(ob[c[g>>2]&127](f,d,e,141340)|0){c[a>>2]=41;a=0;break a}if(!(ob[c[g>>2]&127](f,d,e,141348)|0))h=6;else{c[a>>2]=42;a=0}break}default:h=6}while(0);if((h|0)==6)a=JZ(a,b)|0;return a|0}function a_(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(b|0){case 15:{a=0;break}case 25:{c[a>>2]=39;a=a+12|0;c[a>>2]=(c[a>>2]|0)+1;a=0;break}default:a=JZ(a,b)|0}return a|0}function b_(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(b|0){case 15:{a=0;break}case 25:{c[a>>2]=39;a=58;break}default:a=JZ(a,b)|0}return a|0}function c_(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;a:do switch(b|0){case 15:{a=39;break}case 18:{g=f+24|0;if(ob[c[g>>2]&127](f,d,e,141355)|0){c[a>>2]=37;c[a+8>>2]=39;a=42;break a}if(!(ob[c[g>>2]&127](f,d,e,141361)|0))h=7;else{c[a>>2]=37;c[a+8>>2]=39;a=41}break}case 23:{c[a>>2]=43;c[a+4>>2]=1;a=44;break}default:h=7}while(0);if((h|0)==7)a=JZ(a,b)|0;return a|0}function d_(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0;switch(b|0){case 15:{a=39;break}case 20:{if(!(ob[c[f+24>>2]&127](f,d+(c[f+64>>2]|0)|0,e,141365)|0))g=9;else{c[a>>2]=44;a=43}break}case 23:{c[a+4>>2]=2;c[a>>2]=45;a=44;break}case 41:case 18:{c[a>>2]=46;a=51;break}case 30:{c[a>>2]=46;a=53;break}case 31:{c[a>>2]=46;a=52;break}case 32:{c[a>>2]=46;a=54;break}default:g=9}if((g|0)==9)a=JZ(a,b)|0;return a|0}function e_(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(b|0){case 15:{a=39;break}case 24:{c[a>>2]=37;c[a+8>>2]=39;a=45;break}case 36:{c[a>>2]=37;c[a+8>>2]=39;a=46;break}case 21:{c[a>>2]=47;a=39;break}default:a=JZ(a,b)|0}return a|0}function f_(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(b|0){case 15:{a=39;break}case 23:{a=a+4|0;c[a>>2]=(c[a>>2]|0)+1;a=44;break}case 41:case 18:{c[a>>2]=46;a=51;break}case 30:{c[a>>2]=46;a=53;break}case 31:{c[a>>2]=46;a=52;break}case 32:{c[a>>2]=46;a=54;break}default:a=JZ(a,b)|0}return a|0}function g_(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(b|0){case 15:{a=39;break}case 24:{e=a+4|0;f=(c[e>>2]|0)+-1|0;c[e>>2]=f;if(!f){c[a>>2]=37;c[a+8>>2]=39;a=45}else a=45;break}case 36:{e=a+4|0;f=(c[e>>2]|0)+-1|0;c[e>>2]=f;if(!f){c[a>>2]=37;c[a+8>>2]=39;a=46}else a=46;break}case 35:{e=a+4|0;f=(c[e>>2]|0)+-1|0;c[e>>2]=f;if(!f){c[a>>2]=37;c[a+8>>2]=39;a=47}else a=47;break}case 37:{e=a+4|0;f=(c[e>>2]|0)+-1|0;c[e>>2]=f;if(!f){c[a>>2]=37;c[a+8>>2]=39;a=48}else a=48;break}case 38:{c[a>>2]=45;a=50;break}case 21:{c[a>>2]=45;a=49;break}default:a=JZ(a,b)|0}return a|0}function h_(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(b|0){case 15:{a=39;break}case 41:case 18:{c[a>>2]=48;a=51;break}default:a=JZ(a,b)|0}return a|0}function i_(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(b|0){case 15:{a=39;break}case 36:{c[a>>2]=37;c[a+8>>2]=39;a=46;break}case 21:{c[a>>2]=47;a=39;break}default:a=JZ(a,b)|0}return a|0}function j_(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(b|0){case 15:{a=33;break}case 17:{c[a>>2]=c[a+16>>2]|0?20:39;a=33;break}case 41:case 18:{c[a>>2]=49;a=22;break}default:a=JZ(a,b)|0}return a|0}function k_(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;a:do switch(b|0){case 15:{g=33;break}case 18:{h=f+24|0;g=0;while(1){i=c[h>>2]|0;if((g|0)>=8)break;if(ob[i&127](f,d,e,c[62200+(g<<2)>>2]|0)|0){j=6;break}g=g+1|0}if((j|0)==6){c[a>>2]=50;g=g+23|0;break a}if(!(ob[i&127](f,d,e,141331)|0))j=10;else{c[a>>2]=51;g=33}break}case 23:{c[a>>2]=52;g=33;break}default:j=10}while(0);if((j|0)==10)g=JZ(a,b)|0;return g|0}function l_(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;a:do switch(b|0){case 15:{a=33;break}case 20:{g=f+24|0;h=f+64|0;if(ob[c[g>>2]&127](f,d+(c[h>>2]|0)|0,e,141372)|0){c[a>>2]=32;a=35;break a}if(ob[c[g>>2]&127](f,d+(c[h>>2]|0)|0,e,141380)|0){c[a>>2]=32;a=36;break a}if(!(ob[c[g>>2]&127](f,d+(c[h>>2]|0)|0,e,141389)|0))i=9;else{c[a>>2]=53;a=33}break}case 27:{c[a>>2]=32;a=37;break}default:i=9}while(0);if((i|0)==9)a=JZ(a,b)|0;return a|0}function m_(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(b|0){case 15:{a=33;break}case 23:{c[a>>2]=54;a=33;break}default:a=JZ(a,b)|0}return a|0}function n_(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(b|0){case 15:{a=33;break}case 41:case 18:case 19:{c[a>>2]=55;a=31;break}default:a=JZ(a,b)|0}return a|0}function o_(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(b|0){case 15:{a=33;break}case 24:{c[a>>2]=50;a=33;break}case 21:{c[a>>2]=52;a=33;break}default:a=JZ(a,b)|0}return a|0}function p_(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(b|0){case 15:{a=33;break}case 18:{c[a>>2]=56;a=32;break}default:a=JZ(a,b)|0}return a|0}function q_(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(b|0){case 15:{a=33;break}case 24:{c[a>>2]=50;a=33;break}case 21:{c[a>>2]=54;a=33;break}default:a=JZ(a,b)|0}return a|0}function r_(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(b|0){case 15:{a=33;break}case 27:{c[a>>2]=32;a=38;break}default:a=JZ(a,b)|0}return a|0}function s_(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(b|0){case 15:{a=11;break}case 18:{c[a>>2]=57;a=10;break}default:a=JZ(a,b)|0}return a|0}function t_(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;a:do switch(b|0){case 15:{a=11;break}case 18:{g=f+24|0;if(ob[c[g>>2]&127](f,d,e,141294)|0){c[a>>2]=58;a=11;break a}if(!(ob[c[g>>2]&127](f,d,e,141301)|0))h=7;else{c[a>>2]=59;a=11}break}case 27:{c[a>>2]=37;c[a+8>>2]=11;a=12;break}default:h=7}while(0);if((h|0)==7)a=JZ(a,b)|0;return a|0}function u_(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(b|0){case 15:{a=11;break}case 27:{c[a>>2]=60;a=13;break}default:a=JZ(a,b)|0}return a|0}function v_(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(b|0){case 15:{a=11;break}case 27:{c[a>>2]=58;a=14;break}default:a=JZ(a,b)|0}return a|0}function w_(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0;switch(b|0){case 15:{a=11;break}case 17:{c[a>>2]=c[a+16>>2]|0?20:39;a=15;break}case 18:{if(!(ob[c[f+24>>2]&127](f,d,e,141443)|0))g=5;else{c[a>>2]=61;a=11}break}default:g=5}if((g|0)==5)a=JZ(a,b)|0;return a|0}function x_(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(b|0){case 15:{a=11;break}case 18:{c[a>>2]=37;c[a+8>>2]=11;a=16;break}default:a=JZ(a,b)|0}return a|0}function y_(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;a:do switch(b|0){case 15:{a=11;break}case 18:{g=f+24|0;if(ob[c[g>>2]&127](f,d,e,141294)|0){c[a>>2]=62;a=11;break a}if(!(ob[c[g>>2]&127](f,d,e,141301)|0))h=7;else{c[a>>2]=63;a=11}break}case 27:{c[a>>2]=37;c[a+8>>2]=11;a=12;break}default:h=7}while(0);if((h|0)==7)a=JZ(a,b)|0;return a|0}function z_(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(b|0){case 15:{a=11;break}case 27:{c[a>>2]=64;a=13;break}default:a=JZ(a,b)|0}return a|0}function A_(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(b|0){case 15:{a=11;break}case 27:{c[a>>2]=62;a=14;break}default:a=JZ(a,b)|0}return a|0}function B_(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(b|0){case 15:{a=11;break}case 17:{c[a>>2]=c[a+16>>2]|0?20:39;a=15;break}default:a=JZ(a,b)|0}return a|0}function C_(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;x=l;l=l+16|0;p=x;do if(a>>>0<245){m=a>>>0<11?16:a+11&-8;a=m>>>3;o=c[46749]|0;d=o>>>a;if(d&3|0){b=(d&1^1)+a|0;a=187036+(b<<1<<2)|0;d=a+8|0;e=c[d>>2]|0;f=e+8|0;g=c[f>>2]|0;if((g|0)==(a|0))c[46749]=o&~(1<>2]=a;c[d>>2]=g}w=b<<3;c[e+4>>2]=w|3;w=e+w+4|0;c[w>>2]=c[w>>2]|1;w=f;l=x;return w|0}n=c[46751]|0;if(m>>>0>n>>>0){if(d|0){b=2<>>12&16;b=b>>>i;d=b>>>5&8;b=b>>>d;g=b>>>2&4;b=b>>>g;a=b>>>1&2;b=b>>>a;e=b>>>1&1;e=(d|i|g|a|e)+(b>>>e)|0;b=187036+(e<<1<<2)|0;a=b+8|0;g=c[a>>2]|0;i=g+8|0;d=c[i>>2]|0;if((d|0)==(b|0)){a=o&~(1<>2]=b;c[a>>2]=d;a=o}w=e<<3;h=w-m|0;c[g+4>>2]=m|3;f=g+m|0;c[f+4>>2]=h|1;c[g+w>>2]=h;if(n|0){e=c[46754]|0;b=n>>>3;d=187036+(b<<1<<2)|0;b=1<>2]|0}c[a>>2]=e;c[b+12>>2]=e;c[e+8>>2]=b;c[e+12>>2]=d}c[46751]=h;c[46754]=f;w=i;l=x;return w|0}j=c[46750]|0;if(j){d=(j&0-j)+-1|0;i=d>>>12&16;d=d>>>i;h=d>>>5&8;d=d>>>h;k=d>>>2&4;d=d>>>k;e=d>>>1&2;d=d>>>e;a=d>>>1&1;a=c[187300+((h|i|k|e|a)+(d>>>a)<<2)>>2]|0;d=(c[a+4>>2]&-8)-m|0;e=c[a+16+(((c[a+16>>2]|0)==0&1)<<2)>>2]|0;if(!e){k=a;h=d}else{do{i=(c[e+4>>2]&-8)-m|0;k=i>>>0>>0;d=k?i:d;a=k?e:a;e=c[e+16+(((c[e+16>>2]|0)==0&1)<<2)>>2]|0}while((e|0)!=0);k=a;h=d}i=k+m|0;if(i>>>0>k>>>0){f=c[k+24>>2]|0;b=c[k+12>>2]|0;do if((b|0)==(k|0)){a=k+20|0;b=c[a>>2]|0;if(!b){a=k+16|0;b=c[a>>2]|0;if(!b){d=0;break}}while(1){d=b+20|0;e=c[d>>2]|0;if(e|0){b=e;a=d;continue}d=b+16|0;e=c[d>>2]|0;if(!e)break;else{b=e;a=d}}c[a>>2]=0;d=b}else{d=c[k+8>>2]|0;c[d+12>>2]=b;c[b+8>>2]=d;d=b}while(0);do if(f|0){b=c[k+28>>2]|0;a=187300+(b<<2)|0;if((k|0)==(c[a>>2]|0)){c[a>>2]=d;if(!d){c[46750]=j&~(1<>2]|0)!=(k|0)&1)<<2)>>2]=d;if(!d)break}c[d+24>>2]=f;b=c[k+16>>2]|0;if(b|0){c[d+16>>2]=b;c[b+24>>2]=d}b=c[k+20>>2]|0;if(b|0){c[d+20>>2]=b;c[b+24>>2]=d}}while(0);if(h>>>0<16){w=h+m|0;c[k+4>>2]=w|3;w=k+w+4|0;c[w>>2]=c[w>>2]|1}else{c[k+4>>2]=m|3;c[i+4>>2]=h|1;c[i+h>>2]=h;if(n|0){e=c[46754]|0;b=n>>>3;d=187036+(b<<1<<2)|0;b=1<>2]|0}c[a>>2]=e;c[b+12>>2]=e;c[e+8>>2]=b;c[e+12>>2]=d}c[46751]=h;c[46754]=i}w=k+8|0;l=x;return w|0}else n=m}else n=m}else n=m}else if(a>>>0<=4294967231){a=a+11|0;m=a&-8;k=c[46750]|0;if(k){e=0-m|0;a=a>>>8;if(a)if(m>>>0>16777215)j=31;else{o=(a+1048320|0)>>>16&8;v=a<>>16&4;v=v<>>16&2;j=14-(n|o|j)+(v<>>15)|0;j=m>>>(j+7|0)&1|j<<1}else j=0;d=c[187300+(j<<2)>>2]|0;a:do if(!d){d=0;a=0;v=57}else{a=0;i=d;h=m<<((j|0)==31?0:25-(j>>>1)|0);d=0;while(1){f=(c[i+4>>2]&-8)-m|0;if(f>>>0>>0)if(!f){e=0;d=i;a=i;v=61;break a}else{a=i;e=f}f=c[i+20>>2]|0;i=c[i+16+(h>>>31<<2)>>2]|0;d=(f|0)==0|(f|0)==(i|0)?d:f;f=(i|0)==0;if(f){v=57;break}else h=h<<((f^1)&1)}}while(0);if((v|0)==57){if((d|0)==0&(a|0)==0){a=2<>>12&16;o=o>>>i;h=o>>>5&8;o=o>>>h;j=o>>>2&4;o=o>>>j;n=o>>>1&2;o=o>>>n;d=o>>>1&1;a=0;d=c[187300+((h|i|j|n|d)+(o>>>d)<<2)>>2]|0}if(!d){i=a;h=e}else v=61}if((v|0)==61)while(1){v=0;n=(c[d+4>>2]&-8)-m|0;o=n>>>0>>0;e=o?n:e;a=o?d:a;d=c[d+16+(((c[d+16>>2]|0)==0&1)<<2)>>2]|0;if(!d){i=a;h=e;break}else v=61}if((i|0)!=0?h>>>0<((c[46751]|0)-m|0)>>>0:0){g=i+m|0;if(g>>>0<=i>>>0){w=0;l=x;return w|0}f=c[i+24>>2]|0;b=c[i+12>>2]|0;do if((b|0)==(i|0)){a=i+20|0;b=c[a>>2]|0;if(!b){a=i+16|0;b=c[a>>2]|0;if(!b){b=0;break}}while(1){d=b+20|0;e=c[d>>2]|0;if(e|0){b=e;a=d;continue}d=b+16|0;e=c[d>>2]|0;if(!e)break;else{b=e;a=d}}c[a>>2]=0}else{w=c[i+8>>2]|0;c[w+12>>2]=b;c[b+8>>2]=w}while(0);do if(f){a=c[i+28>>2]|0;d=187300+(a<<2)|0;if((i|0)==(c[d>>2]|0)){c[d>>2]=b;if(!b){e=k&~(1<>2]|0)!=(i|0)&1)<<2)>>2]=b;if(!b){e=k;break}}c[b+24>>2]=f;a=c[i+16>>2]|0;if(a|0){c[b+16>>2]=a;c[a+24>>2]=b}a=c[i+20>>2]|0;if(a){c[b+20>>2]=a;c[a+24>>2]=b;e=k}else e=k}else e=k;while(0);do if(h>>>0>=16){c[i+4>>2]=m|3;c[g+4>>2]=h|1;c[g+h>>2]=h;b=h>>>3;if(h>>>0<256){d=187036+(b<<1<<2)|0;a=c[46749]|0;b=1<>2]|0}c[a>>2]=g;c[b+12>>2]=g;c[g+8>>2]=b;c[g+12>>2]=d;break}b=h>>>8;if(b)if(h>>>0>16777215)b=31;else{v=(b+1048320|0)>>>16&8;w=b<>>16&4;w=w<>>16&2;b=14-(u|v|b)+(w<>>15)|0;b=h>>>(b+7|0)&1|b<<1}else b=0;d=187300+(b<<2)|0;c[g+28>>2]=b;a=g+16|0;c[a+4>>2]=0;c[a>>2]=0;a=1<>2]=g;c[g+24>>2]=d;c[g+12>>2]=g;c[g+8>>2]=g;break}a=h<<((b|0)==31?0:25-(b>>>1)|0);d=c[d>>2]|0;while(1){if((c[d+4>>2]&-8|0)==(h|0)){v=97;break}e=d+16+(a>>>31<<2)|0;b=c[e>>2]|0;if(!b){v=96;break}else{a=a<<1;d=b}}if((v|0)==96){c[e>>2]=g;c[g+24>>2]=d;c[g+12>>2]=g;c[g+8>>2]=g;break}else if((v|0)==97){v=d+8|0;w=c[v>>2]|0;c[w+12>>2]=g;c[v>>2]=g;c[g+8>>2]=w;c[g+12>>2]=d;c[g+24>>2]=0;break}}else{w=h+m|0;c[i+4>>2]=w|3;w=i+w+4|0;c[w>>2]=c[w>>2]|1}while(0);w=i+8|0;l=x;return w|0}else n=m}else n=m}else n=-1;while(0);d=c[46751]|0;if(d>>>0>=n>>>0){b=d-n|0;a=c[46754]|0;if(b>>>0>15){w=a+n|0;c[46754]=w;c[46751]=b;c[w+4>>2]=b|1;c[a+d>>2]=b;c[a+4>>2]=n|3}else{c[46751]=0;c[46754]=0;c[a+4>>2]=d|3;w=a+d+4|0;c[w>>2]=c[w>>2]|1}w=a+8|0;l=x;return w|0}i=c[46752]|0;if(i>>>0>n>>>0){u=i-n|0;c[46752]=u;w=c[46755]|0;v=w+n|0;c[46755]=v;c[v+4>>2]=u|1;c[w+4>>2]=n|3;w=w+8|0;l=x;return w|0}if(!(c[46867]|0)){c[46869]=4096;c[46868]=4096;c[46870]=-1;c[46871]=-1;c[46872]=0;c[46860]=0;c[46867]=p&-16^1431655768;a=4096}else a=c[46869]|0;j=n+48|0;k=n+47|0;h=a+k|0;f=0-a|0;m=h&f;if(m>>>0<=n>>>0){w=0;l=x;return w|0}a=c[46859]|0;if(a|0?(o=c[46857]|0,p=o+m|0,p>>>0<=o>>>0|p>>>0>a>>>0):0){w=0;l=x;return w|0}b:do if(!(c[46860]&4)){d=c[46755]|0;c:do if(d){e=187444;while(1){a=c[e>>2]|0;if(a>>>0<=d>>>0?(s=e+4|0,(a+(c[s>>2]|0)|0)>>>0>d>>>0):0)break;a=c[e+8>>2]|0;if(!a){v=118;break c}else e=a}b=h-i&f;if(b>>>0<2147483647){a=I3(b|0)|0;if((a|0)==((c[e>>2]|0)+(c[s>>2]|0)|0)){if((a|0)!=(-1|0)){h=b;g=a;v=135;break b}}else{e=a;v=126}}else b=0}else v=118;while(0);do if((v|0)==118){d=I3(0)|0;if((d|0)!=(-1|0)?(b=d,q=c[46868]|0,r=q+-1|0,b=((r&b|0)==0?0:(r+b&0-q)-b|0)+m|0,q=c[46857]|0,r=b+q|0,b>>>0>n>>>0&b>>>0<2147483647):0){s=c[46859]|0;if(s|0?r>>>0<=q>>>0|r>>>0>s>>>0:0){b=0;break}a=I3(b|0)|0;if((a|0)==(d|0)){h=b;g=d;v=135;break b}else{e=a;v=126}}else b=0}while(0);do if((v|0)==126){d=0-b|0;if(!(j>>>0>b>>>0&(b>>>0<2147483647&(e|0)!=(-1|0))))if((e|0)==(-1|0)){b=0;break}else{h=b;g=e;v=135;break b}a=c[46869]|0;a=k-b+a&0-a;if(a>>>0>=2147483647){h=b;g=e;v=135;break b}if((I3(a|0)|0)==(-1|0)){I3(d|0)|0;b=0;break}else{h=a+b|0;g=e;v=135;break b}}while(0);c[46860]=c[46860]|4;v=133}else{b=0;v=133}while(0);if(((v|0)==133?m>>>0<2147483647:0)?(g=I3(m|0)|0,s=I3(0)|0,t=s-g|0,u=t>>>0>(n+40|0)>>>0,!((g|0)==(-1|0)|u^1|g>>>0>>0&((g|0)!=(-1|0)&(s|0)!=(-1|0))^1)):0){h=u?t:b;v=135}if((v|0)==135){b=(c[46857]|0)+h|0;c[46857]=b;if(b>>>0>(c[46858]|0)>>>0)c[46858]=b;j=c[46755]|0;do if(j){b=187444;while(1){a=c[b>>2]|0;d=b+4|0;e=c[d>>2]|0;if((g|0)==(a+e|0)){v=143;break}f=c[b+8>>2]|0;if(!f)break;else b=f}if(((v|0)==143?(c[b+12>>2]&8|0)==0:0)?g>>>0>j>>>0&a>>>0<=j>>>0:0){c[d>>2]=e+h;w=(c[46752]|0)+h|0;u=j+8|0;u=(u&7|0)==0?0:0-u&7;v=j+u|0;u=w-u|0;c[46755]=v;c[46752]=u;c[v+4>>2]=u|1;c[j+w+4>>2]=40;c[46756]=c[46871];break}if(g>>>0<(c[46753]|0)>>>0)c[46753]=g;a=g+h|0;b=187444;while(1){if((c[b>>2]|0)==(a|0)){v=151;break}b=c[b+8>>2]|0;if(!b){a=187444;break}}if((v|0)==151)if(!(c[b+12>>2]&8)){c[b>>2]=g;m=b+4|0;c[m>>2]=(c[m>>2]|0)+h;m=g+8|0;m=g+((m&7|0)==0?0:0-m&7)|0;b=a+8|0;b=a+((b&7|0)==0?0:0-b&7)|0;k=m+n|0;i=b-m-n|0;c[m+4>>2]=n|3;do if((j|0)!=(b|0)){if((c[46754]|0)==(b|0)){w=(c[46751]|0)+i|0;c[46751]=w;c[46754]=k;c[k+4>>2]=w|1;c[k+w>>2]=w;break}a=c[b+4>>2]|0;if((a&3|0)==1){h=a&-8;e=a>>>3;d:do if(a>>>0<256){a=c[b+8>>2]|0;d=c[b+12>>2]|0;if((d|0)==(a|0)){c[46749]=c[46749]&~(1<>2]=d;c[d+8>>2]=a;break}}else{g=c[b+24>>2]|0;a=c[b+12>>2]|0;do if((a|0)==(b|0)){e=b+16|0;d=e+4|0;a=c[d>>2]|0;if(!a){a=c[e>>2]|0;if(!a){a=0;break}else d=e}while(1){e=a+20|0;f=c[e>>2]|0;if(f|0){a=f;d=e;continue}e=a+16|0;f=c[e>>2]|0;if(!f)break;else{a=f;d=e}}c[d>>2]=0}else{w=c[b+8>>2]|0;c[w+12>>2]=a;c[a+8>>2]=w}while(0);if(!g)break;d=c[b+28>>2]|0;e=187300+(d<<2)|0;do if((c[e>>2]|0)!=(b|0)){c[g+16+(((c[g+16>>2]|0)!=(b|0)&1)<<2)>>2]=a;if(!a)break d}else{c[e>>2]=a;if(a|0)break;c[46750]=c[46750]&~(1<>2]=g;d=b+16|0;e=c[d>>2]|0;if(e|0){c[a+16>>2]=e;c[e+24>>2]=a}d=c[d+4>>2]|0;if(!d)break;c[a+20>>2]=d;c[d+24>>2]=a}while(0);b=b+h|0;f=h+i|0}else f=i;b=b+4|0;c[b>>2]=c[b>>2]&-2;c[k+4>>2]=f|1;c[k+f>>2]=f;b=f>>>3;if(f>>>0<256){d=187036+(b<<1<<2)|0;a=c[46749]|0;b=1<>2]|0}c[a>>2]=k;c[b+12>>2]=k;c[k+8>>2]=b;c[k+12>>2]=d;break}b=f>>>8;do if(!b)b=0;else{if(f>>>0>16777215){b=31;break}v=(b+1048320|0)>>>16&8;w=b<>>16&4;w=w<>>16&2;b=14-(u|v|b)+(w<>>15)|0;b=f>>>(b+7|0)&1|b<<1}while(0);e=187300+(b<<2)|0;c[k+28>>2]=b;a=k+16|0;c[a+4>>2]=0;c[a>>2]=0;a=c[46750]|0;d=1<>2]=k;c[k+24>>2]=e;c[k+12>>2]=k;c[k+8>>2]=k;break}a=f<<((b|0)==31?0:25-(b>>>1)|0);d=c[e>>2]|0;while(1){if((c[d+4>>2]&-8|0)==(f|0)){v=192;break}e=d+16+(a>>>31<<2)|0;b=c[e>>2]|0;if(!b){v=191;break}else{a=a<<1;d=b}}if((v|0)==191){c[e>>2]=k;c[k+24>>2]=d;c[k+12>>2]=k;c[k+8>>2]=k;break}else if((v|0)==192){v=d+8|0;w=c[v>>2]|0;c[w+12>>2]=k;c[v>>2]=k;c[k+8>>2]=w;c[k+12>>2]=d;c[k+24>>2]=0;break}}else{w=(c[46752]|0)+i|0;c[46752]=w;c[46755]=k;c[k+4>>2]=w|1}while(0);w=m+8|0;l=x;return w|0}else a=187444;while(1){b=c[a>>2]|0;if(b>>>0<=j>>>0?(w=b+(c[a+4>>2]|0)|0,w>>>0>j>>>0):0)break;a=c[a+8>>2]|0}f=w+-47|0;a=f+8|0;a=f+((a&7|0)==0?0:0-a&7)|0;f=j+16|0;a=a>>>0>>0?j:a;b=a+8|0;d=h+-40|0;u=g+8|0;u=(u&7|0)==0?0:0-u&7;v=g+u|0;u=d-u|0;c[46755]=v;c[46752]=u;c[v+4>>2]=u|1;c[g+d+4>>2]=40;c[46756]=c[46871];d=a+4|0;c[d>>2]=27;c[b>>2]=c[46861];c[b+4>>2]=c[46862];c[b+8>>2]=c[46863];c[b+12>>2]=c[46864];c[46861]=g;c[46862]=h;c[46864]=0;c[46863]=b;b=a+24|0;do{v=b;b=b+4|0;c[b>>2]=7}while((v+8|0)>>>0>>0);if((a|0)!=(j|0)){g=a-j|0;c[d>>2]=c[d>>2]&-2;c[j+4>>2]=g|1;c[a>>2]=g;b=g>>>3;if(g>>>0<256){d=187036+(b<<1<<2)|0;a=c[46749]|0;b=1<>2]|0}c[a>>2]=j;c[b+12>>2]=j;c[j+8>>2]=b;c[j+12>>2]=d;break}b=g>>>8;if(b)if(g>>>0>16777215)d=31;else{v=(b+1048320|0)>>>16&8;w=b<>>16&4;w=w<>>16&2;d=14-(u|v|d)+(w<>>15)|0;d=g>>>(d+7|0)&1|d<<1}else d=0;e=187300+(d<<2)|0;c[j+28>>2]=d;c[j+20>>2]=0;c[f>>2]=0;b=c[46750]|0;a=1<>2]=j;c[j+24>>2]=e;c[j+12>>2]=j;c[j+8>>2]=j;break}a=g<<((d|0)==31?0:25-(d>>>1)|0);d=c[e>>2]|0;while(1){if((c[d+4>>2]&-8|0)==(g|0)){v=213;break}e=d+16+(a>>>31<<2)|0;b=c[e>>2]|0;if(!b){v=212;break}else{a=a<<1;d=b}}if((v|0)==212){c[e>>2]=j;c[j+24>>2]=d;c[j+12>>2]=j;c[j+8>>2]=j;break}else if((v|0)==213){v=d+8|0;w=c[v>>2]|0;c[w+12>>2]=j;c[v>>2]=j;c[j+8>>2]=w;c[j+12>>2]=d;c[j+24>>2]=0;break}}}else{w=c[46753]|0;if((w|0)==0|g>>>0>>0)c[46753]=g;c[46861]=g;c[46862]=h;c[46864]=0;c[46758]=c[46867];c[46757]=-1;c[46762]=187036;c[46761]=187036;c[46764]=187044;c[46763]=187044;c[46766]=187052;c[46765]=187052;c[46768]=187060;c[46767]=187060;c[46770]=187068;c[46769]=187068;c[46772]=187076;c[46771]=187076;c[46774]=187084;c[46773]=187084;c[46776]=187092;c[46775]=187092;c[46778]=187100;c[46777]=187100;c[46780]=187108;c[46779]=187108;c[46782]=187116;c[46781]=187116;c[46784]=187124;c[46783]=187124;c[46786]=187132;c[46785]=187132;c[46788]=187140;c[46787]=187140;c[46790]=187148;c[46789]=187148;c[46792]=187156;c[46791]=187156;c[46794]=187164;c[46793]=187164;c[46796]=187172;c[46795]=187172;c[46798]=187180;c[46797]=187180;c[46800]=187188;c[46799]=187188;c[46802]=187196;c[46801]=187196;c[46804]=187204;c[46803]=187204;c[46806]=187212;c[46805]=187212;c[46808]=187220;c[46807]=187220;c[46810]=187228;c[46809]=187228;c[46812]=187236;c[46811]=187236;c[46814]=187244;c[46813]=187244;c[46816]=187252;c[46815]=187252;c[46818]=187260;c[46817]=187260;c[46820]=187268;c[46819]=187268;c[46822]=187276;c[46821]=187276;c[46824]=187284;c[46823]=187284;w=h+-40|0;u=g+8|0;u=(u&7|0)==0?0:0-u&7;v=g+u|0;u=w-u|0;c[46755]=v;c[46752]=u;c[v+4>>2]=u|1;c[g+w+4>>2]=40;c[46756]=c[46871]}while(0);b=c[46752]|0;if(b>>>0>n>>>0){u=b-n|0;c[46752]=u;w=c[46755]|0;v=w+n|0;c[46755]=v;c[v+4>>2]=u|1;c[w+4>>2]=n|3;w=w+8|0;l=x;return w|0}}c[(O_()|0)>>2]=12;w=0;l=x;return w|0}function D_(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;if(!a)return;d=a+-8|0;f=c[46753]|0;a=c[a+-4>>2]|0;b=a&-8;j=d+b|0;do if(!(a&1)){e=c[d>>2]|0;if(!(a&3))return;h=d+(0-e)|0;g=e+b|0;if(h>>>0>>0)return;if((c[46754]|0)==(h|0)){a=j+4|0;b=c[a>>2]|0;if((b&3|0)!=3){i=h;b=g;break}c[46751]=g;c[a>>2]=b&-2;c[h+4>>2]=g|1;c[h+g>>2]=g;return}d=e>>>3;if(e>>>0<256){a=c[h+8>>2]|0;b=c[h+12>>2]|0;if((b|0)==(a|0)){c[46749]=c[46749]&~(1<>2]=b;c[b+8>>2]=a;i=h;b=g;break}}f=c[h+24>>2]|0;a=c[h+12>>2]|0;do if((a|0)==(h|0)){d=h+16|0;b=d+4|0;a=c[b>>2]|0;if(!a){a=c[d>>2]|0;if(!a){a=0;break}else b=d}while(1){d=a+20|0;e=c[d>>2]|0;if(e|0){a=e;b=d;continue}d=a+16|0;e=c[d>>2]|0;if(!e)break;else{a=e;b=d}}c[b>>2]=0}else{i=c[h+8>>2]|0;c[i+12>>2]=a;c[a+8>>2]=i}while(0);if(f){b=c[h+28>>2]|0;d=187300+(b<<2)|0;if((c[d>>2]|0)==(h|0)){c[d>>2]=a;if(!a){c[46750]=c[46750]&~(1<>2]|0)!=(h|0)&1)<<2)>>2]=a;if(!a){i=h;b=g;break}}c[a+24>>2]=f;b=h+16|0;d=c[b>>2]|0;if(d|0){c[a+16>>2]=d;c[d+24>>2]=a}b=c[b+4>>2]|0;if(b){c[a+20>>2]=b;c[b+24>>2]=a;i=h;b=g}else{i=h;b=g}}else{i=h;b=g}}else{i=d;h=d}while(0);if(h>>>0>=j>>>0)return;a=j+4|0;e=c[a>>2]|0;if(!(e&1))return;if(!(e&2)){if((c[46755]|0)==(j|0)){j=(c[46752]|0)+b|0;c[46752]=j;c[46755]=i;c[i+4>>2]=j|1;if((i|0)!=(c[46754]|0))return;c[46754]=0;c[46751]=0;return}if((c[46754]|0)==(j|0)){j=(c[46751]|0)+b|0;c[46751]=j;c[46754]=h;c[i+4>>2]=j|1;c[h+j>>2]=j;return}f=(e&-8)+b|0;d=e>>>3;do if(e>>>0<256){b=c[j+8>>2]|0;a=c[j+12>>2]|0;if((a|0)==(b|0)){c[46749]=c[46749]&~(1<>2]=a;c[a+8>>2]=b;break}}else{g=c[j+24>>2]|0;a=c[j+12>>2]|0;do if((a|0)==(j|0)){d=j+16|0;b=d+4|0;a=c[b>>2]|0;if(!a){a=c[d>>2]|0;if(!a){d=0;break}else b=d}while(1){d=a+20|0;e=c[d>>2]|0;if(e|0){a=e;b=d;continue}d=a+16|0;e=c[d>>2]|0;if(!e)break;else{a=e;b=d}}c[b>>2]=0;d=a}else{d=c[j+8>>2]|0;c[d+12>>2]=a;c[a+8>>2]=d;d=a}while(0);if(g|0){a=c[j+28>>2]|0;b=187300+(a<<2)|0;if((c[b>>2]|0)==(j|0)){c[b>>2]=d;if(!d){c[46750]=c[46750]&~(1<>2]|0)!=(j|0)&1)<<2)>>2]=d;if(!d)break}c[d+24>>2]=g;a=j+16|0;b=c[a>>2]|0;if(b|0){c[d+16>>2]=b;c[b+24>>2]=d}a=c[a+4>>2]|0;if(a|0){c[d+20>>2]=a;c[a+24>>2]=d}}}while(0);c[i+4>>2]=f|1;c[h+f>>2]=f;if((i|0)==(c[46754]|0)){c[46751]=f;return}}else{c[a>>2]=e&-2;c[i+4>>2]=b|1;c[h+b>>2]=b;f=b}a=f>>>3;if(f>>>0<256){d=187036+(a<<1<<2)|0;b=c[46749]|0;a=1<>2]|0}c[b>>2]=i;c[a+12>>2]=i;c[i+8>>2]=a;c[i+12>>2]=d;return}a=f>>>8;if(a)if(f>>>0>16777215)a=31;else{h=(a+1048320|0)>>>16&8;j=a<>>16&4;j=j<>>16&2;a=14-(g|h|a)+(j<>>15)|0;a=f>>>(a+7|0)&1|a<<1}else a=0;e=187300+(a<<2)|0;c[i+28>>2]=a;c[i+20>>2]=0;c[i+16>>2]=0;b=c[46750]|0;d=1<>>1)|0);d=c[e>>2]|0;while(1){if((c[d+4>>2]&-8|0)==(f|0)){a=73;break}e=d+16+(b>>>31<<2)|0;a=c[e>>2]|0;if(!a){a=72;break}else{b=b<<1;d=a}}if((a|0)==72){c[e>>2]=i;c[i+24>>2]=d;c[i+12>>2]=i;c[i+8>>2]=i;break}else if((a|0)==73){h=d+8|0;j=c[h>>2]|0;c[j+12>>2]=i;c[h>>2]=i;c[i+8>>2]=j;c[i+12>>2]=d;c[i+24>>2]=0;break}}else{c[46750]=b|d;c[e>>2]=i;c[i+24>>2]=e;c[i+12>>2]=i;c[i+8>>2]=i}while(0);j=(c[46757]|0)+-1|0;c[46757]=j;if(!j)a=187452;else return;while(1){a=c[a>>2]|0;if(!a)break;else a=a+8|0}c[46757]=-1;return}function E_(a,b){a=a|0;b=b|0;var d=0;if(a){d=O(b,a)|0;if((b|a)>>>0>65535)d=((d>>>0)/(a>>>0)|0|0)==(b|0)?d:-1}else d=0;a=C_(d)|0;if(!a)return a|0;if(!(c[a+-4>>2]&3))return a|0;H3(a|0,0,d|0)|0;return a|0}function F_(a,b){a=a|0;b=b|0;var d=0,e=0;if(!a){b=C_(b)|0;return b|0}if(b>>>0>4294967231){c[(O_()|0)>>2]=12;b=0;return b|0}d=G_(a+-8|0,b>>>0<11?16:b+11&-8)|0;if(d|0){b=d+8|0;return b|0}d=C_(b)|0;if(!d){b=0;return b|0}e=c[a+-4>>2]|0;e=(e&-8)-((e&3|0)==0?8:4)|0;F3(d|0,a|0,(e>>>0>>0?e:b)|0)|0;D_(a);b=d;return b|0}function G_(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;l=a+4|0;m=c[l>>2]|0;d=m&-8;i=a+d|0;if(!(m&3)){if(b>>>0<256){a=0;return a|0}if(d>>>0>=(b+4|0)>>>0?(d-b|0)>>>0<=c[46869]<<1>>>0:0)return a|0;a=0;return a|0}if(d>>>0>=b>>>0){d=d-b|0;if(d>>>0<=15)return a|0;k=a+b|0;c[l>>2]=m&1|b|2;c[k+4>>2]=d|3;m=i+4|0;c[m>>2]=c[m>>2]|1;H_(k,d);return a|0}if((c[46755]|0)==(i|0)){k=(c[46752]|0)+d|0;d=k-b|0;e=a+b|0;if(k>>>0<=b>>>0){a=0;return a|0}c[l>>2]=m&1|b|2;c[e+4>>2]=d|1;c[46755]=e;c[46752]=d;return a|0}if((c[46754]|0)==(i|0)){e=(c[46751]|0)+d|0;if(e>>>0>>0){a=0;return a|0}d=e-b|0;if(d>>>0>15){k=a+b|0;e=a+e|0;c[l>>2]=m&1|b|2;c[k+4>>2]=d|1;c[e>>2]=d;e=e+4|0;c[e>>2]=c[e>>2]&-2;e=k}else{c[l>>2]=m&1|e|2;e=a+e+4|0;c[e>>2]=c[e>>2]|1;e=0;d=0}c[46751]=d;c[46754]=e;return a|0}e=c[i+4>>2]|0;if(e&2|0){a=0;return a|0}j=(e&-8)+d|0;if(j>>>0>>0){a=0;return a|0}k=j-b|0;f=e>>>3;do if(e>>>0<256){e=c[i+8>>2]|0;d=c[i+12>>2]|0;if((d|0)==(e|0)){c[46749]=c[46749]&~(1<>2]=d;c[d+8>>2]=e;break}}else{h=c[i+24>>2]|0;d=c[i+12>>2]|0;do if((d|0)==(i|0)){f=i+16|0;e=f+4|0;d=c[e>>2]|0;if(!d){d=c[f>>2]|0;if(!d){f=0;break}else g=f}else g=e;while(1){f=d+20|0;e=c[f>>2]|0;if(e|0){d=e;g=f;continue}e=d+16|0;f=c[e>>2]|0;if(!f)break;else{d=f;g=e}}c[g>>2]=0;f=d}else{f=c[i+8>>2]|0;c[f+12>>2]=d;c[d+8>>2]=f;f=d}while(0);if(h|0){d=c[i+28>>2]|0;e=187300+(d<<2)|0;if((c[e>>2]|0)==(i|0)){c[e>>2]=f;if(!f){c[46750]=c[46750]&~(1<>2]|0)!=(i|0)&1)<<2)>>2]=f;if(!f)break}c[f+24>>2]=h;d=i+16|0;e=c[d>>2]|0;if(e|0){c[f+16>>2]=e;c[e+24>>2]=f}d=c[d+4>>2]|0;if(d|0){c[f+20>>2]=d;c[d+24>>2]=f}}}while(0);if(k>>>0<16){c[l>>2]=j|m&1|2;m=a+j+4|0;c[m>>2]=c[m>>2]|1;return a|0}else{i=a+b|0;c[l>>2]=m&1|b|2;c[i+4>>2]=k|3;m=a+j+4|0;c[m>>2]=c[m>>2]|1;H_(i,k);return a|0}return 0}function H_(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=a+b|0;d=c[a+4>>2]|0;do if(!(d&1)){f=c[a>>2]|0;if(!(d&3))return;h=a+(0-f)|0;b=f+b|0;if((c[46754]|0)==(h|0)){a=i+4|0;d=c[a>>2]|0;if((d&3|0)!=3)break;c[46751]=b;c[a>>2]=d&-2;c[h+4>>2]=b|1;c[i>>2]=b;return}e=f>>>3;if(f>>>0<256){a=c[h+8>>2]|0;d=c[h+12>>2]|0;if((d|0)==(a|0)){c[46749]=c[46749]&~(1<>2]=d;c[d+8>>2]=a;break}}g=c[h+24>>2]|0;a=c[h+12>>2]|0;do if((a|0)==(h|0)){e=h+16|0;d=e+4|0;a=c[d>>2]|0;if(!a){a=c[e>>2]|0;if(!a){a=0;break}else d=e}while(1){e=a+20|0;f=c[e>>2]|0;if(f|0){a=f;d=e;continue}e=a+16|0;f=c[e>>2]|0;if(!f)break;else{a=f;d=e}}c[d>>2]=0}else{f=c[h+8>>2]|0;c[f+12>>2]=a;c[a+8>>2]=f}while(0);if(g){d=c[h+28>>2]|0;e=187300+(d<<2)|0;if((c[e>>2]|0)==(h|0)){c[e>>2]=a;if(!a){c[46750]=c[46750]&~(1<>2]|0)!=(h|0)&1)<<2)>>2]=a;if(!a)break}c[a+24>>2]=g;d=h+16|0;e=c[d>>2]|0;if(e|0){c[a+16>>2]=e;c[e+24>>2]=a}d=c[d+4>>2]|0;if(d){c[a+20>>2]=d;c[d+24>>2]=a}}}else h=a;while(0);a=i+4|0;e=c[a>>2]|0;if(!(e&2)){if((c[46755]|0)==(i|0)){i=(c[46752]|0)+b|0;c[46752]=i;c[46755]=h;c[h+4>>2]=i|1;if((h|0)!=(c[46754]|0))return;c[46754]=0;c[46751]=0;return}if((c[46754]|0)==(i|0)){i=(c[46751]|0)+b|0;c[46751]=i;c[46754]=h;c[h+4>>2]=i|1;c[h+i>>2]=i;return}f=(e&-8)+b|0;d=e>>>3;do if(e>>>0<256){a=c[i+8>>2]|0;b=c[i+12>>2]|0;if((b|0)==(a|0)){c[46749]=c[46749]&~(1<>2]=b;c[b+8>>2]=a;break}}else{g=c[i+24>>2]|0;b=c[i+12>>2]|0;do if((b|0)==(i|0)){d=i+16|0;a=d+4|0;b=c[a>>2]|0;if(!b){b=c[d>>2]|0;if(!b){d=0;break}else a=d}while(1){d=b+20|0;e=c[d>>2]|0;if(e|0){b=e;a=d;continue}d=b+16|0;e=c[d>>2]|0;if(!e)break;else{b=e;a=d}}c[a>>2]=0;d=b}else{d=c[i+8>>2]|0;c[d+12>>2]=b;c[b+8>>2]=d;d=b}while(0);if(g|0){b=c[i+28>>2]|0;a=187300+(b<<2)|0;if((c[a>>2]|0)==(i|0)){c[a>>2]=d;if(!d){c[46750]=c[46750]&~(1<>2]|0)!=(i|0)&1)<<2)>>2]=d;if(!d)break}c[d+24>>2]=g;b=i+16|0;a=c[b>>2]|0;if(a|0){c[d+16>>2]=a;c[a+24>>2]=d}b=c[b+4>>2]|0;if(b|0){c[d+20>>2]=b;c[b+24>>2]=d}}}while(0);c[h+4>>2]=f|1;c[h+f>>2]=f;if((h|0)==(c[46754]|0)){c[46751]=f;return}}else{c[a>>2]=e&-2;c[h+4>>2]=b|1;c[h+b>>2]=b;f=b}b=f>>>3;if(f>>>0<256){d=187036+(b<<1<<2)|0;a=c[46749]|0;b=1<>2]|0}c[a>>2]=h;c[b+12>>2]=h;c[h+8>>2]=b;c[h+12>>2]=d;return}b=f>>>8;if(b)if(f>>>0>16777215)b=31;else{g=(b+1048320|0)>>>16&8;i=b<>>16&4;i=i<>>16&2;b=14-(e|g|b)+(i<>>15)|0;b=f>>>(b+7|0)&1|b<<1}else b=0;e=187300+(b<<2)|0;c[h+28>>2]=b;c[h+20>>2]=0;c[h+16>>2]=0;a=c[46750]|0;d=1<>2]=h;c[h+24>>2]=e;c[h+12>>2]=h;c[h+8>>2]=h;return}a=f<<((b|0)==31?0:25-(b>>>1)|0);d=c[e>>2]|0;while(1){if((c[d+4>>2]&-8|0)==(f|0)){b=69;break}e=d+16+(a>>>31<<2)|0;b=c[e>>2]|0;if(!b){b=68;break}else{a=a<<1;d=b}}if((b|0)==68){c[e>>2]=h;c[h+24>>2]=d;c[h+12>>2]=h;c[h+8>>2]=h;return}else if((b|0)==69){g=d+8|0;i=c[g>>2]|0;c[i+12>>2]=h;c[g>>2]=h;c[h+8>>2]=i;c[h+12>>2]=d;c[h+24>>2]=0;return}}function I_(a,b){a=a|0;b=b|0;if(a>>>0<9){b=C_(b)|0;return b|0}else{b=J_(a,b)|0;return b|0}return 0}function J_(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;a=a>>>0>16?a:16;if(a+-1&a){d=16;while(1)if(d>>>0>>0)d=d<<1;else{a=d;break}}if((-64-a|0)>>>0<=b>>>0){c[(O_()|0)>>2]=12;h=0;return h|0}g=b>>>0<11?16:b+11&-8;d=C_(g+12+a|0)|0;if(!d){h=0;return h|0}f=d+-8|0;do if(a+-1&d){e=(d+a+-1&0-a)+-8|0;b=f;e=(e-b|0)>>>0>15?e:e+a|0;b=e-b|0;a=d+-4|0;i=c[a>>2]|0;d=(i&-8)-b|0;if(!(i&3)){c[e>>2]=(c[f>>2]|0)+b;c[e+4>>2]=d;a=e;b=e;break}else{i=e+4|0;c[i>>2]=d|c[i>>2]&1|2;d=e+d+4|0;c[d>>2]=c[d>>2]|1;c[a>>2]=b|c[a>>2]&1|2;c[i>>2]=c[i>>2]|1;H_(f,b);a=e;b=e;break}}else{a=f;b=f}while(0);a=a+4|0;d=c[a>>2]|0;if(d&3|0?(h=d&-8,h>>>0>(g+16|0)>>>0):0){i=h-g|0;f=b+g|0;c[a>>2]=g|d&1|2;c[f+4>>2]=i|3;h=b+h+4|0;c[h>>2]=c[h>>2]|1;H_(f,i)}i=b+8|0;return i|0}function K_(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=P_(c[a+60>>2]|0)|0;a=N_(Ja(6,d|0)|0)|0;l=b;return a|0}function L_(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0;k=l;l=l+32|0;f=k;i=k+16|0;c[i>>2]=d;g=i+4|0;j=b+48|0;m=c[j>>2]|0;c[g>>2]=e-((m|0)!=0&1);h=b+44|0;c[i+8>>2]=c[h>>2];c[i+12>>2]=m;c[f>>2]=c[b+60>>2];c[f+4>>2]=i;c[f+8>>2]=2;f=N_(ya(145,f|0)|0)|0;if((f|0)>=1){i=c[g>>2]|0;if(f>>>0>i>>>0){g=c[h>>2]|0;h=b+4|0;c[h>>2]=g;c[b+8>>2]=g+(f-i);if(!(c[j>>2]|0))f=e;else{c[h>>2]=g+1;a[d+(e+-1)>>0]=a[g>>0]|0;f=e}}}else c[b>>2]=c[b>>2]|f&48^16;l=k;return f|0}function M_(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;f=l;l=l+32|0;g=f;e=f+20|0;c[g>>2]=c[a+60>>2];c[g+4>>2]=0;c[g+8>>2]=b;c[g+12>>2]=e;c[g+16>>2]=d;if((N_(xa(140,g|0)|0)|0)<0){c[e>>2]=-1;a=-1}else a=c[e>>2]|0;l=f;return a|0}function N_(a){a=a|0;if(a>>>0>4294963200){c[(O_()|0)>>2]=0-a;a=-1}return a|0}function O_(){return 187492}function P_(a){a=a|0;return a|0}function Q_(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0;g=l;l=l+32|0;f=g;c[b+36>>2]=18;if((c[b>>2]&64|0)==0?(c[f>>2]=c[b+60>>2],c[f+4>>2]=21523,c[f+8>>2]=g+16,Ia(54,f|0)|0):0)a[b+75>>0]=-1;f=R_(b,d,e)|0;l=g;return f|0}function R_(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;n=l;l=l+48|0;k=n+16|0;g=n;f=n+32|0;i=a+28|0;e=c[i>>2]|0;c[f>>2]=e;j=a+20|0;e=(c[j>>2]|0)-e|0;c[f+4>>2]=e;c[f+8>>2]=b;c[f+12>>2]=d;e=e+d|0;h=a+60|0;c[g>>2]=c[h>>2];c[g+4>>2]=f;c[g+8>>2]=2;g=N_(za(146,g|0)|0)|0;a:do if((e|0)!=(g|0)){b=2;while(1){if((g|0)<0)break;e=e-g|0;p=c[f+4>>2]|0;o=g>>>0>p>>>0;f=o?f+8|0:f;b=b+(o<<31>>31)|0;p=g-(o?p:0)|0;c[f>>2]=(c[f>>2]|0)+p;o=f+4|0;c[o>>2]=(c[o>>2]|0)-p;c[k>>2]=c[h>>2];c[k+4>>2]=f;c[k+8>>2]=b;g=N_(za(146,k|0)|0)|0;if((e|0)==(g|0)){m=3;break a}}c[a+16>>2]=0;c[i>>2]=0;c[j>>2]=0;c[a>>2]=c[a>>2]|32;if((b|0)==2)d=0;else d=d-(c[f+4>>2]|0)|0}else m=3;while(0);if((m|0)==3){p=c[a+44>>2]|0;c[a+16>>2]=p+(c[a+48>>2]|0);c[i>>2]=p;c[j>>2]=p}l=n;return d|0}function S_(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;c[e>>2]=a;c[e+4>>2]=b;b=N_(Ka(91,e|0)|0)|0;l=d;return b|0}function T_(){return}function U_(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;i=l;l=l+32|0;h=i;do if((g&4095|0)==0&(((g|0)<0)<<31>>31&-4096|0)==0){if(b>>>0>2147483646){c[(O_()|0)>>2]=12;a=-1;break}c[h>>2]=a;c[h+4>>2]=b;c[h+8>>2]=d;c[h+12>>2]=e;c[h+16>>2]=f;c[h+20>>2]=g>>12;a=N_(Aa(192,h|0)|0)|0}else{c[(O_()|0)>>2]=22;a=-1}while(0);l=i;return a|0}function V_(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;f=d&255;a:do if(!f)b=b+(W_(b)|0)|0;else{if(b&3){e=d&255;do{g=a[b>>0]|0;if(g<<24>>24==0?1:g<<24>>24==e<<24>>24)break a;b=b+1|0}while((b&3|0)!=0)}f=O(f,16843009)|0;e=c[b>>2]|0;b:do if(!((e&-2139062144^-2139062144)&e+-16843009))do{g=e^f;if((g&-2139062144^-2139062144)&g+-16843009|0)break b;b=b+4|0;e=c[b>>2]|0}while(!((e&-2139062144^-2139062144)&e+-16843009|0));while(0);e=d&255;while(1){g=a[b>>0]|0;if(g<<24>>24==0?1:g<<24>>24==e<<24>>24)break;else b=b+1|0}}while(0);return b|0}function W_(b){b=b|0;var d=0,e=0,f=0;f=b;a:do if(!(f&3))e=4;else{d=f;while(1){if(!(a[b>>0]|0)){b=d;break a}b=b+1|0;d=b;if(!(d&3)){e=4;break}}}while(0);if((e|0)==4){while(1){d=c[b>>2]|0;if(!((d&-2139062144^-2139062144)&d+-16843009))b=b+4|0;else break}if((d&255)<<24>>24)do b=b+1|0;while((a[b>>0]|0)!=0)}return b-f|0}function X_(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;h=l;l=l+48|0;g=h+16|0;f=h;e=h+32|0;if(!(b&4194368))e=0;else{c[e>>2]=d;i=(c[e>>2]|0)+(4-1)&~(4-1);d=c[i>>2]|0;c[e>>2]=i+4;e=d}c[f>>2]=a;c[f+4>>2]=b|32768;c[f+8>>2]=e;e=Ha(5,f|0)|0;if(!((b&524288|0)==0|(e|0)<0)){c[g>>2]=e;c[g+4>>2]=2;c[g+8>>2]=1;Ea(221,g|0)|0}i=N_(e)|0;l=h;return i|0}function Y_(b,e){b=b|0;e=e|0;var f=0,g=0;g=0;while(1){if((d[141449+g>>0]|0)==(b|0)){b=2;break}f=g+1|0;if((f|0)==87){f=141537;g=87;b=5;break}else g=f}if((b|0)==2)if(!g)f=141537;else{f=141537;b=5}if((b|0)==5)while(1){do{b=f;f=f+1|0}while((a[b>>0]|0)!=0);g=g+-1|0;if(!g)break;else b=5}return Z_(f,c[e+20>>2]|0)|0}function Z_(a,b){a=a|0;b=b|0;return __(a,b)|0}function __(a,b){a=a|0;b=b|0;if(!b)b=0;else b=$_(c[b>>2]|0,c[b+4>>2]|0,a)|0;return (b|0?b:a)|0}function $_(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=(c[b>>2]|0)+1794895138|0;h=a$(c[b+8>>2]|0,o)|0;f=a$(c[b+12>>2]|0,o)|0;g=a$(c[b+16>>2]|0,o)|0;a:do if((h>>>0>>2>>>0?(n=d-(h<<2)|0,f>>>0>>0&g>>>0>>0):0)?((g|f)&3|0)==0:0){n=f>>>2;m=g>>>2;l=0;while(1){j=h>>>1;k=l+j|0;i=k<<1;g=i+n|0;f=a$(c[b+(g<<2)>>2]|0,o)|0;g=a$(c[b+(g+1<<2)>>2]|0,o)|0;if(!(g>>>0>>0&f>>>0<(d-g|0)>>>0)){f=0;break a}if(a[b+(g+f)>>0]|0){f=0;break a}f=b$(e,b+g|0)|0;if(!f)break;f=(f|0)<0;if((h|0)==1){f=0;break a}else{l=f?l:k;h=f?j:h-j|0}}f=i+m|0;g=a$(c[b+(f<<2)>>2]|0,o)|0;f=a$(c[b+(f+1<<2)>>2]|0,o)|0;if(f>>>0>>0&g>>>0<(d-f|0)>>>0)f=(a[b+(f+g)>>0]|0)==0?b+f|0:0;else f=0}else f=0;while(0);return f|0}function a$(a,b){a=a|0;b=b|0;var c=0;c=C3(a|0)|0;return ((b|0)==0?a:c)|0}function b$(b,c){b=b|0;c=c|0;var d=0,e=0;d=a[b>>0]|0;e=a[c>>0]|0;if(d<<24>>24==0?1:d<<24>>24!=e<<24>>24)b=e;else{do{b=b+1|0;c=c+1|0;d=a[b>>0]|0;e=a[c>>0]|0}while(!(d<<24>>24==0?1:d<<24>>24!=e<<24>>24));b=e}return (d&255)-(b&255)|0}function c$(a){a=a|0;return Y_(a,c[(d$()|0)+188>>2]|0)|0}function d$(){return e$()|0}function e$(){return 62872}function f$(a,b,c){a=+a;b=+b;c=c|0;var d=0.0,e=0.0,f=0.0;f=a*a;d=f*(f*f)*(f*1.58969099521155e-10+-2.5050760253406863e-08)+(f*(f*2.7557313707070068e-06+-1.984126982985795e-04)+.00833333333332249);e=f*a;if(!c)a=e*(f*d+-.16666666666666632)+a;else a=a-(e*.16666666666666632+(f*(b*.5-e*d)-b));return +a}function g$(a){a=+a;var b=0,d=0,e=0,f=0,g=0.0,i=0.0,k=0.0,l=0.0,m=0.0;h[j>>3]=a;b=c[j>>2]|0;d=c[j+4>>2]|0;e=(d|0)<0;do if(e|d>>>0<1048576){if((b|0)==0&(d&2147483647|0)==0){a=-1.0/(a*a);break}if(e){a=(a-a)/0.0;break}else{h[j>>3]=a*18014398509481984.0;d=c[j+4>>2]|0;e=-1077;b=c[j>>2]|0;f=9;break}}else if(d>>>0<=2146435071)if((b|0)==0&0==0&(d|0)==1072693248)a=0.0;else{e=-1023;f=9}while(0);if((f|0)==9){f=d+614242|0;c[j>>2]=b;c[j+4>>2]=(f&1048575)+1072079006;m=+h[j>>3]+-1.0;k=m*(m*.5);i=m/(m+2.0);l=i*i;g=l*l;h[j>>3]=m-k;d=c[j+4>>2]|0;c[j>>2]=0;c[j+4>>2]=d;a=+h[j>>3];g=m-a-k+i*(k+(g*(g*(g*.15313837699209373+.22222198432149784)+.3999999999940942)+l*(g*(g*(g*.14798198605116586+.1818357216161805)+.2857142874366239)+.6666666666666735)));l=a*1.4426950407214463;k=+(e+(f>>>20)|0);i=l+k;a=i+(l+(k-i)+(g*1.4426950407214463+(g+a)*1.6751713164886512e-10))}return +a}function h$(a,b){a=+a;b=b|0;var d=0,e=0,f=0;h[j>>3]=a;d=c[j>>2]|0;e=c[j+4>>2]|0;f=z3(d|0,e|0,52)|0;switch(f&2047){case 0:{if(a!=0.0){a=+h$(a*18446744073709551616.0,b);d=(c[b>>2]|0)+-64|0}else d=0;c[b>>2]=d;break}case 2047:break;default:{c[b>>2]=(f&2047)+-1022;c[j>>2]=d;c[j+4>>2]=e&-2146435073|1071644672;a=+h[j>>3]}}return +a}function i$(a,b){a=+a;b=+b;var c=0.0,d=0.0,e=0.0,f=0.0;c=a*a;d=c*c;e=c*.5;f=1.0-e;return +(f+(1.0-f-e+(c*(c*(c*(c*2.480158728947673e-05+-.001388888888887411)+.0416666666666666)+d*d*(c*(2.087572321298175e-09-c*1.1359647557788195e-11)+-2.7557314351390663e-07))-a*b)))}function j$(a){a=+a;var b=0,d=0,e=0,f=0,g=0.0,i=0.0,k=0.0,l=0.0,m=0.0;h[j>>3]=a;b=c[j>>2]|0;d=c[j+4>>2]|0;e=(d|0)<0;do if(e|d>>>0<1048576){if((b|0)==0&(d&2147483647|0)==0){a=-1.0/(a*a);break}if(e){a=(a-a)/0.0;break}else{h[j>>3]=a*18014398509481984.0;d=c[j+4>>2]|0;e=-1077;b=c[j>>2]|0;f=9;break}}else if(d>>>0<=2146435071)if((b|0)==0&0==0&(d|0)==1072693248)a=0.0;else{e=-1023;f=9}while(0);if((f|0)==9){f=d+614242|0;c[j>>2]=b;c[j+4>>2]=(f&1048575)+1072079006;k=+h[j>>3]+-1.0;i=k*(k*.5);l=k/(k+2.0);m=l*l;g=m*m;h[j>>3]=k-i;d=c[j+4>>2]|0;c[j>>2]=0;c[j+4>>2]=d;a=+h[j>>3];g=k-a-i+l*(i+(g*(g*(g*.15313837699209373+.22222198432149784)+.3999999999940942)+m*(g*(g*(g*.14798198605116586+.1818357216161805)+.2857142874366239)+.6666666666666735)));m=a*.4342944818781689;i=+(e+(f>>>20)|0);l=i*.30102999566361177;k=l+m;a=k+(m+(l-k)+(g*.4342944818781689+(i*3.694239077158931e-13+(g+a)*2.5082946711645275e-11)))}return +a}function k$(a,b){a=+a;b=b|0;var d=0,e=0.0,f=0.0,g=0.0,i=0,k=0.0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0;r=l;l=l+48|0;m=r+16|0;n=r;h[j>>3]=a;d=c[j>>2]|0;i=c[j+4>>2]|0;o=z3(d|0,i|0,63)|0;q=i&2147483647;do if(q>>>0<1074752123)if((i&1048575|0)!=598523){d=(o|0)!=0;if(q>>>0<1073928573)if(d){g=a+1.5707963267341256;k=g+6.077100506506192e-11;h[b>>3]=k;h[b+8>>3]=g-k+6.077100506506192e-11;d=-1;break}else{g=a+-1.5707963267341256;k=g+-6.077100506506192e-11;h[b>>3]=k;h[b+8>>3]=g-k+-6.077100506506192e-11;d=1;break}else if(d){g=a+3.1415926534682512;k=g+1.2154201013012384e-10;h[b>>3]=k;h[b+8>>3]=g-k+1.2154201013012384e-10;d=-2;break}else{g=a+-3.1415926534682512;k=g+-1.2154201013012384e-10;h[b>>3]=k;h[b+8>>3]=g-k+-1.2154201013012384e-10;d=2;break}}else p=21;else{if(q>>>0<1075594812)if(q>>>0<1075183037){if((q|0)==1074977148){p=21;break}if(!o){g=a+-4.712388980202377;k=g+-1.8231301519518578e-10;h[b>>3]=k;h[b+8>>3]=g-k+-1.8231301519518578e-10;d=3;break}else{g=a+4.712388980202377;k=g+1.8231301519518578e-10;h[b>>3]=k;h[b+8>>3]=g-k+1.8231301519518578e-10;d=-3;break}}else{if((q|0)==1075388923){p=21;break}if(!o){g=a+-6.2831853069365025;k=g+-2.430840202602477e-10;h[b>>3]=k;h[b+8>>3]=g-k+-2.430840202602477e-10;d=4;break}else{g=a+6.2831853069365025;k=g+2.430840202602477e-10;h[b>>3]=k;h[b+8>>3]=g-k+2.430840202602477e-10;d=-4;break}}if(q>>>0>=1094263291){if(q>>>0>2146435071){k=a-a;h[b+8>>3]=k;h[b>>3]=k;d=0;break}c[j>>2]=d;c[j+4>>2]=i&1048575|1096810496;a=+h[j>>3];d=0;do{k=+(~~a|0);h[m+(d<<3)>>3]=k;a=(a-k)*16777216.0;d=d+1|0}while((d|0)!=2);h[m+16>>3]=a;if(a==0.0){d=1;while(1)if(+h[m+(d<<3)>>3]==0.0)d=d+-1|0;else break}else d=2;d=l$(m,n,(q>>>20)+-1046|0,d+1|0,1)|0;a=+h[n>>3];if(!o){h[b>>3]=a;h[b+8>>3]=+h[n+8>>3];break}else{h[b>>3]=-a;h[b+8>>3]=-+h[n+8>>3];d=0-d|0;break}}else p=21}while(0);if((p|0)==21){g=a*.6366197723675814+6755399441055744.0+-6755399441055744.0;d=~~g;e=a-g*1.5707963267341256;f=g*6.077100506506192e-11;a=e-f;h[b>>3]=a;h[j>>3]=a;p=z3(c[j>>2]|0,c[j+4>>2]|0,52)|0;i=q>>>20;if((i-(p&2047)|0)>16){f=g*6.077100506303966e-11;k=e-f;f=g*2.0222662487959506e-21-(e-k-f);a=k-f;h[b>>3]=a;h[j>>3]=a;q=z3(c[j>>2]|0,c[j+4>>2]|0,52)|0;s=g*2.0222662487111665e-21;e=k-s;g=g*8.4784276603689e-32-(k-e-s);if((i-(q&2047)|0)>49){a=e-g;h[b>>3]=a;f=g}else e=k}h[b+8>>3]=e-a-f}l=r;return d|0}function l$(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0.0,i=0.0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0.0;H=l;l=l+560|0;C=H+480|0;z=H+320|0;G=H+160|0;E=H;D=c[63116+(f<<2)>>2]|0;p=e+-1|0;y=(d+-3|0)/24|0;y=(y|0)>0?y:0;B=O(y,-24)|0;j=d+-24+B|0;if((D+p|0)>=0){n=D+e|0;k=y-p|0;m=0;while(1){if((k|0)<0)g=0.0;else g=+(c[63132+(k<<2)>>2]|0);h[z+(m<<3)>>3]=g;m=m+1|0;if((m|0)==(n|0))break;else k=k+1|0}}o=(e|0)>0;n=0;while(1){if(o){m=n+p|0;g=0.0;k=0;do{g=g+ +h[a+(k<<3)>>3]*+h[z+(m-k<<3)>>3];k=k+1|0}while((k|0)!=(e|0))}else g=0.0;h[E+(n<<3)>>3]=g;if((n|0)<(D|0))n=n+1|0;else break}t=(j|0)>0;u=24-j|0;v=23-j|0;w=(e|0)>0;x=(j|0)==0;k=D;a:while(1){g=+h[E+(k<<3)>>3];o=(k|0)>0;if(o){m=k;n=0;while(1){i=+(~~(g*5.9604644775390625e-08)|0);c[C+(n<<2)>>2]=~~(g-i*16777216.0);s=m;m=m+-1|0;g=+h[E+(m<<3)>>3]+i;if((s|0)<=1)break;else n=n+1|0}}g=+m$(g,j);g=g-+A(+(g*.125))*8.0;m=~~g;g=g-+(m|0);do if(!t)if(!x)if(!(g>=.5)){p=0;s=m;break}else{n=2;F=20;break}else{n=c[C+(k+-1<<2)>>2]>>23;F=19;break}else{s=C+(k+-1<<2)|0;n=c[s>>2]|0;F=n>>u;n=n-(F<>2]=n;n=n>>v;m=F+m|0;F=19}while(0);if((F|0)==19){F=0;if((n|0)>0)F=20;else{p=n;s=m}}if((F|0)==20){F=0;s=m+1|0;if(o){m=0;r=0;do{p=C+(r<<2)|0;q=c[p>>2]|0;if(!m)if(!q)m=0;else{m=1;o=16777216;F=23}else{o=16777215;F=23}if((F|0)==23){F=0;c[p>>2]=o-q}r=r+1|0}while((r|0)!=(k|0))}else m=0;b:do if(t){switch(j|0){case 1:{o=8388607;break}case 2:{o=4194303;break}default:break b}r=C+(k+-1<<2)|0;c[r>>2]=c[r>>2]&o}while(0);if((n|0)==2){g=1.0-g;if(!m)p=2;else{p=2;g=g-+m$(1.0,j)}}else p=n}if(!(g==0.0)){F=42;break}if((k|0)>(D|0)){m=0;n=k;do{n=n+-1|0;m=c[C+(n<<2)>>2]|m}while((n|0)>(D|0));if(m){F=41;break}else m=1}else m=1;while(1)if(!(c[C+(D-m<<2)>>2]|0))m=m+1|0;else break;o=m+k|0;if((m|0)<=0){k=o;continue}while(1){n=k+1|0;m=k+e|0;h[z+(m<<3)>>3]=+(c[63132+(n+y<<2)>>2]|0);if(w){g=0.0;k=0;do{g=g+ +h[a+(k<<3)>>3]*+h[z+(m-k<<3)>>3];k=k+1|0}while((k|0)!=(e|0))}else g=0.0;h[E+(n<<3)>>3]=g;if((n|0)<(o|0))k=n;else{k=o;continue a}}}if((F|0)==41)while(1){F=0;j=j+-24|0;k=k+-1|0;if(!(c[C+(k<<2)>>2]|0))F=41;else{o=k;break}}else if((F|0)==42){g=+m$(g,0-j|0);if(g>=16777216.0){i=+(~~(g*5.9604644775390625e-08)|0);c[C+(k<<2)>>2]=~~(g-i*16777216.0);j=B+d|0;k=k+1|0;g=i}c[C+(k<<2)>>2]=~~g;o=k}g=+m$(1.0,j);n=(o|0)>-1;if(n){j=o;while(1){h[E+(j<<3)>>3]=g*+(c[C+(j<<2)>>2]|0);if((j|0)>0){g=g*5.9604644775390625e-08;j=j+-1|0}else break}if(n){k=o;while(1){m=o-k|0;j=0;g=0.0;while(1){g=g+ +h[10904+(j<<3)>>3]*+h[E+(j+k<<3)>>3];if((j|0)>=(D|0)|(j|0)>=(m|0))break;else j=j+1|0}h[G+(m<<3)>>3]=g;if((k|0)>0)k=k+-1|0;else break}}}switch(f|0){case 0:{if(n){g=0.0;j=o;while(1){g=g+ +h[G+(j<<3)>>3];if((j|0)>0)j=j+-1|0;else break}}else g=0.0;i=(p|0)==0?g:-g;F=72;break}case 2:case 1:{if(n){g=0.0;j=o;while(1){g=g+ +h[G+(j<<3)>>3];if((j|0)>0)j=j+-1|0;else break}}else g=0.0;k=(p|0)==0;h[b>>3]=k?g:-g;g=+h[G>>3]-g;if((o|0)>=1){j=1;while(1){g=g+ +h[G+(j<<3)>>3];if((j|0)==(o|0))break;else j=j+1|0}}i=k?g:-g;b=b+8|0;F=72;break}case 3:{if((o|0)>0){j=o;g=+h[G+(o<<3)>>3];do{F=j;j=j+-1|0;E=G+(j<<3)|0;i=+h[E>>3];I=g;g=i+g;h[G+(F<<3)>>3]=I+(i-g);h[E>>3]=g}while((F|0)>1);k=(o|0)>1;if(k){j=o;g=+h[G+(o<<3)>>3];do{F=j;j=j+-1|0;E=G+(j<<3)|0;I=+h[E>>3];i=g;g=I+g;h[G+(F<<3)>>3]=i+(I-g);h[E>>3]=g}while((F|0)>2);if(k){j=o;i=0.0;while(1){i=i+ +h[G+(j<<3)>>3];if((j|0)>2)j=j+-1|0;else break}}else i=0.0}else i=0.0}else i=0.0;g=+h[G>>3];if(!p){h[b>>3]=g;g=+h[G+8>>3]}else{h[b>>3]=-g;i=-i;g=-+h[G+8>>3]}h[b+8>>3]=g;b=b+16|0;F=72;break}default:{}}if((F|0)==72)h[b>>3]=i;l=H;return s&7|0}function m$(a,b){a=+a;b=b|0;var d=0,e=0;if((b|0)<=1023){if((b|0)<-1022){a=a*2.2250738585072014e-308;e=(b|0)<-2044;d=b+2044|0;a=e?a*2.2250738585072014e-308:a;b=e?((d|0)>-1022?d:-1022):b+1022|0}}else{a=a*8988465674311579538646525.0e283;d=(b|0)>2046;e=b+-2046|0;a=d?a*8988465674311579538646525.0e283:a;b=d?((e|0)<1023?e:1023):b+-1023|0}d=A3(b+1023|0,0,52)|0;e=z;c[j>>2]=d;c[j+4>>2]=e;return +(a*+h[j>>3])}function n$(a){a=+a;var b=0,d=0,e=0,f=0.0,g=0.0;h[j>>3]=a;d=c[j+4>>2]|0;b=d&2147483647;do if(b>>>0>2146435071)a=a+a;else{if(b>>>0<1048576){h[j>>3]=a*18014398509481984.0;d=c[j+4>>2]|0;b=d&2147483647;if(!b)break;else e=696219795}else e=715094163;c[j>>2]=0;c[j+4>>2]=((b>>>0)/3|0)+e|d&-2147483648;f=+h[j>>3];g=f*f*(f/a);h[j>>3]=(g*(g*g)*(g*.14599619288661245+-.758397934778766)+(g*(g*1.6214297201053545+-1.8849797954337717)+1.87595182427177))*f;d=s3(c[j>>2]|0,c[j+4>>2]|0,-2147483648,0)|0;e=z;c[j>>2]=d&-1073741824;c[j+4>>2]=e;f=+h[j>>3];a=a/(f*f);a=(a-f)/(f+f+a)*f+f}while(0);return +a}function o$(a,b){a=+a;b=+b;var d=0,e=0;h[j>>3]=a;e=c[j>>2]|0;d=c[j+4>>2]|0;h[j>>3]=b;d=c[j+4>>2]&-2147483648|d&2147483647;c[j>>2]=e;c[j+4>>2]=d;return +(+h[j>>3])}function p$(a,b){a=+a;b=+b;return +(+o$(a,b))}function q$(a,b){a=+a;b=b|0;return +(+m$(a,b))}function r$(a,b){a=+a;b=+b;return +(+s$(a,b))}function s$(a,b){a=+a;b=+b;var d=0,e=0,f=0,g=0,i=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;h[j>>3]=a;i=c[j>>2]|0;l=c[j+4>>2]|0;h[j>>3]=b;n=c[j>>2]|0;o=c[j+4>>2]|0;e=z3(i|0,l|0,52)|0;e=e&2047;m=z3(n|0,o|0,52)|0;m=m&2047;p=l&-2147483648;g=A3(n|0,o|0,1)|0;k=z;a:do if(!((g|0)==0&(k|0)==0)?(f=t$(b)|0,d=z&2147483647,!((e|0)==2047|(d>>>0>2146435072|(d|0)==2146435072&f>>>0>0))):0){d=A3(i|0,l|0,1)|0;f=z;if(!(f>>>0>k>>>0|(f|0)==(k|0)&d>>>0>g>>>0))return +((d|0)==(g|0)&(f|0)==(k|0)?a*0.0:a);if(!e){d=A3(i|0,l|0,12)|0;f=z;if((f|0)>-1|(f|0)==-1&d>>>0>4294967295){e=0;do{e=e+-1|0;d=A3(d|0,f|0,1)|0;f=z}while((f|0)>-1|(f|0)==-1&d>>>0>4294967295)}else e=0;i=A3(i|0,l|0,1-e|0)|0;g=z}else g=l&1048575|1048576;if(!m){f=A3(n|0,o|0,12)|0;k=z;if((k|0)>-1|(k|0)==-1&f>>>0>4294967295){d=0;do{d=d+-1|0;f=A3(f|0,k|0,1)|0;k=z}while((k|0)>-1|(k|0)==-1&f>>>0>4294967295)}else d=0;n=A3(n|0,o|0,1-d|0)|0;m=d;l=z}else l=o&1048575|1048576;f=t3(i|0,g|0,n|0,l|0)|0;d=z;k=(d|0)>-1|(d|0)==-1&f>>>0>4294967295;b:do if((e|0)>(m|0)){while(1){if(k){if((f|0)==0&(d|0)==0)break}else{f=i;d=g}i=A3(f|0,d|0,1)|0;g=z;e=e+-1|0;f=t3(i|0,g|0,n|0,l|0)|0;d=z;k=(d|0)>-1|(d|0)==-1&f>>>0>4294967295;if((e|0)<=(m|0))break b}b=a*0.0;break a}while(0);if(k){if((f|0)==0&(d|0)==0){b=a*0.0;break}}else{d=g;f=i}if(d>>>0<1048576|(d|0)==1048576&f>>>0<0)do{f=A3(f|0,d|0,1)|0;d=z;e=e+-1|0}while(d>>>0<1048576|(d|0)==1048576&f>>>0<0);if((e|0)>0){o=s3(f|0,d|0,0,-1048576)|0;d=z;e=A3(e|0,0,52)|0;d=d|z;e=o|e}else{e=z3(f|0,d|0,1-e|0)|0;d=z}c[j>>2]=e;c[j+4>>2]=d|p;b=+h[j>>3]}else q=3;while(0);if((q|0)==3){b=a*b;b=b/b}return +b}function t$(a){a=+a;var b=0;h[j>>3]=a;b=c[j>>2]|0;z=c[j+4>>2]|0;return b|0}function u$(a,b){a=+a;b=+b;var d=0.0,e=0,f=0,g=0,i=0,k=0.0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;q=l;l=l+32|0;m=q+24|0;n=q+16|0;o=q+8|0;p=q;h[j>>3]=a;t=c[j>>2]|0;g=c[j+4>>2]|0;h[j>>3]=b;e=c[j>>2]|0;g=g&2147483647;f=c[j+4>>2]&2147483647;i=g>>>0>>0|(g|0)==(f|0)&t>>>0>>0;s=i?e:t;r=i?f:g;e=i?t:e;f=i?g:f;g=z3(s|0,r|0,52)|0;i=z3(e|0,f|0,52)|0;c[j>>2]=s;c[j+4>>2]=r;a=+h[j>>3];c[j>>2]=e;c[j+4>>2]=f;k=+h[j>>3];do if((i|0)!=2047){if(!((e|0)==0&(f|0)==0|(g|0)==2047)){if((g-i|0)>64){a=a+k;break}if((g|0)>1533){d=5260135901548373507240989.0e186;b=a*1.90109156629516e-211;a=k*1.90109156629516e-211}else{t=(i|0)<573;d=t?1.90109156629516e-211:1.0;b=t?a*5260135901548373507240989.0e186:a;a=t?k*5260135901548373507240989.0e186:k}v$(m,n,b);v$(o,p,a);a=d*+C(+(+h[p>>3]+ +h[n>>3]+ +h[o>>3]+ +h[m>>3]))}}else a=k;while(0);l=q;return +a}function v$(a,b,c){a=a|0;b=b|0;c=+c;var d=0.0,e=0.0;e=c*134217729.0;e=e+(c-e);d=c-e;c=c*c;h[a>>3]=c;h[b>>3]=d*d+(e*e-c+e*2.0*d);return}function w$(a,b,d){a=+a;b=b|0;d=d|0;var e=0.0,f=0,g=0,i=0.0,k=0,m=0;k=l;l=l+16|0;g=k;h[j>>3]=a;f=c[j+4>>2]&2147483647;do if(f>>>0<1072243196)if(f>>>0<1044816030){h[b>>3]=a;h[d>>3]=1.0;break}else{h[b>>3]=+f$(a,0.0,0);h[d>>3]=+i$(a,0.0);break}else{if(f>>>0>2146435071){i=a-a;h[d>>3]=i;h[b>>3]=i;break}f=k$(a,g)|0;m=g+8|0;e=+f$(+h[g>>3],+h[m>>3],1);a=+i$(+h[g>>3],+h[m>>3]);switch(f&3){case 0:{h[b>>3]=e;i=a;break}case 1:{h[b>>3]=a;i=-e;break}case 2:{h[b>>3]=-e;i=-a;break}case 3:{h[b>>3]=-a;i=e;break}default:{}}h[d>>3]=i}while(0);l=k;return}function x$(a,b){a=+a;b=b|0;return +(+h$(a,b))}function y$(a){a=a|0;if(a>>>0<131072)a=(d[143341+((d[143341+(a>>>8)>>0]|0)<<5|a>>>3&31)>>0]|0)>>>(a&7)&1;else a=0;return a|0}function z$(b,c,e){b=b|0;c=c|0;e=e|0;var f=0,g=0;if(!e)f=0;else{f=a[b>>0]|0;a:do if(!(f<<24>>24))f=0;else while(1){e=e+-1|0;g=a[c>>0]|0;if(!(f<<24>>24==g<<24>>24&((e|0)!=0&g<<24>>24!=0)))break a;b=b+1|0;c=c+1|0;f=a[b>>0]|0;if(!(f<<24>>24)){f=0;break}}while(0);f=(f&255)-(d[c>>0]|0)|0}return f|0}function A$(b,c){b=b|0;c=c|0;b=V_(b,c)|0;return ((a[b>>0]|0)==(c&255)<<24>>24?b:0)|0}function B$(a){a=a|0;return ((a|0)==32|(a+-9|0)>>>0<5)&1|0}function C$(a,b,c){a=a|0;b=b|0;c=c|0;c=F$(a,b,c,-1,0)|0;return c|0}function D$(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;h=d&255;f=(e|0)!=0;a:do if(f&(b&3|0)!=0){g=d&255;while(1){if((a[b>>0]|0)==g<<24>>24){i=6;break a}b=b+1|0;e=e+-1|0;f=(e|0)!=0;if(!(f&(b&3|0)!=0)){i=5;break}}}else i=5;while(0);if((i|0)==5)if(f)i=6;else e=0;b:do if((i|0)==6){g=d&255;if((a[b>>0]|0)!=g<<24>>24){f=O(h,16843009)|0;c:do if(e>>>0>3)while(1){h=c[b>>2]^f;if((h&-2139062144^-2139062144)&h+-16843009|0)break;b=b+4|0;e=e+-4|0;if(e>>>0<=3){i=11;break c}}else i=11;while(0);if((i|0)==11)if(!e){e=0;break}while(1){if((a[b>>0]|0)==g<<24>>24)break b;b=b+1|0;e=e+-1|0;if(!e){e=0;break}}}}while(0);return (e|0?b:0)|0}function E$(a){a=a|0;return (a+-48|0)>>>0<10|0}function F$(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;j=l;l=l+128|0;h=j;c[h>>2]=0;i=h+4|0;c[i>>2]=a;c[h+44>>2]=a;g=h+8|0;c[g>>2]=(a|0)<0?-1:a+2147483647|0;c[h+76>>2]=-1;G$(h,0);d=H$(h,d,1,e,f)|0;if(b|0)c[b>>2]=a+((c[i>>2]|0)+(c[h+108>>2]|0)-(c[g>>2]|0));l=j;return d|0}function G$(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;c[a+104>>2]=b;d=c[a+8>>2]|0;e=c[a+4>>2]|0;f=d-e|0;c[a+108>>2]=f;c[a+100>>2]=(b|0)!=0&(f|0)>(b|0)?e+b|0:d;return}function H$(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;a:do if(e>>>0>36){c[(O_()|0)>>2]=22;h=0;g=0}else{r=b+4|0;q=b+100|0;do{i=c[r>>2]|0;if(i>>>0<(c[q>>2]|0)>>>0){c[r>>2]=i+1;i=d[i>>0]|0}else i=I$(b)|0}while((B$(i)|0)!=0);b:do switch(i|0){case 43:case 45:{i=((i|0)==45)<<31>>31;j=c[r>>2]|0;if(j>>>0<(c[q>>2]|0)>>>0){c[r>>2]=j+1;p=i;i=d[j>>0]|0;break b}else{p=i;i=I$(b)|0;break b}}default:p=0}while(0);j=(e|0)==0;do if((e|16|0)==16&(i|0)==48){i=c[r>>2]|0;if(i>>>0<(c[q>>2]|0)>>>0){c[r>>2]=i+1;i=d[i>>0]|0}else i=I$(b)|0;if((i|32|0)!=120)if(j){e=8;n=46;break}else{n=32;break}i=c[r>>2]|0;if(i>>>0<(c[q>>2]|0)>>>0){c[r>>2]=i+1;i=d[i>>0]|0}else i=I$(b)|0;if((d[146510+i>>0]|0)>15){g=(c[q>>2]|0)==0;if(!g)c[r>>2]=(c[r>>2]|0)+-1;if(!f){G$(b,0);h=0;g=0;break a}if(g){h=0;g=0;break a}c[r>>2]=(c[r>>2]|0)+-1;h=0;g=0;break a}else{e=16;n=46}}else{e=j?10:e;if(e>>>0>(d[146510+i>>0]|0)>>>0)n=32;else{if(c[q>>2]|0)c[r>>2]=(c[r>>2]|0)+-1;G$(b,0);c[(O_()|0)>>2]=22;h=0;g=0;break a}}while(0);c:do if((n|0)==32)if((e|0)==10){e=i+-48|0;if(e>>>0<10){i=0;j=e;do{i=(i*10|0)+j|0;e=c[r>>2]|0;if(e>>>0<(c[q>>2]|0)>>>0){c[r>>2]=e+1;e=d[e>>0]|0}else e=I$(b)|0;j=e+-48|0}while(j>>>0<10&i>>>0<429496729);f=0}else{e=i;i=0;f=0}k=e+-48|0;if(k>>>0<10){j=e;do{e=r3(i|0,f|0,10,0)|0;l=z;m=((k|0)<0)<<31>>31;o=~m;if(l>>>0>o>>>0|(l|0)==(o|0)&e>>>0>~k>>>0){e=10;n=72;break c}i=s3(e|0,l|0,k|0,m|0)|0;f=z;e=c[r>>2]|0;if(e>>>0<(c[q>>2]|0)>>>0){c[r>>2]=e+1;j=d[e>>0]|0}else j=I$(b)|0;k=j+-48|0}while(k>>>0<10&(f>>>0<429496729|(f|0)==429496729&i>>>0<2576980378));if(k>>>0>9){j=p;e=f}else{e=10;n=72}}else{j=p;e=f}}else n=46;while(0);d:do if((n|0)==46){if(!(e+-1&e)){n=a[146766+((e*23|0)>>>5&7)>>0]|0;f=a[146510+i>>0]|0;j=f&255;if(e>>>0>j>>>0){i=0;k=j;do{i=k|i<>2]|0;if(j>>>0<(c[q>>2]|0)>>>0){c[r>>2]=j+1;j=d[j>>0]|0}else j=I$(b)|0;f=a[146510+j>>0]|0;k=f&255}while(i>>>0<134217728&e>>>0>k>>>0);k=0}else{j=i;k=0;i=0}l=z3(-1,-1,n|0)|0;m=z;if(e>>>0<=(f&255)>>>0|(m>>>0>>0|(m|0)==(k|0)&l>>>0>>0)){f=k;n=72;break}else j=k;while(1){i=A3(i|0,j|0,n|0)|0;k=z;i=i|f&255;j=c[r>>2]|0;if(j>>>0<(c[q>>2]|0)>>>0){c[r>>2]=j+1;j=d[j>>0]|0}else j=I$(b)|0;f=a[146510+j>>0]|0;if(e>>>0<=(f&255)>>>0|(k>>>0>m>>>0|(k|0)==(m|0)&i>>>0>l>>>0)){f=k;n=72;break d}else j=k}}f=a[146510+i>>0]|0;j=f&255;if(e>>>0>j>>>0){i=0;k=j;do{i=k+(O(i,e)|0)|0;j=c[r>>2]|0;if(j>>>0<(c[q>>2]|0)>>>0){c[r>>2]=j+1;j=d[j>>0]|0}else j=I$(b)|0;f=a[146510+j>>0]|0;k=f&255}while(i>>>0<119304647&e>>>0>k>>>0);k=0}else{j=i;i=0;k=0}if(e>>>0>(f&255)>>>0){n=w3(-1,-1,e|0,0)|0;o=z;m=k;while(1){if(m>>>0>o>>>0|(m|0)==(o|0)&i>>>0>n>>>0){f=m;n=72;break d}k=r3(i|0,m|0,e|0,0)|0;l=z;f=f&255;if(l>>>0>4294967295|(l|0)==-1&k>>>0>~f>>>0){f=m;n=72;break d}i=s3(k|0,l|0,f|0,0)|0;k=z;j=c[r>>2]|0;if(j>>>0<(c[q>>2]|0)>>>0){c[r>>2]=j+1;j=d[j>>0]|0}else j=I$(b)|0;f=a[146510+j>>0]|0;if(e>>>0<=(f&255)>>>0){f=k;n=72;break}else m=k}}else{f=k;n=72}}while(0);if((n|0)==72)if(e>>>0>(d[146510+j>>0]|0)>>>0){do{i=c[r>>2]|0;if(i>>>0<(c[q>>2]|0)>>>0){c[r>>2]=i+1;i=d[i>>0]|0}else i=I$(b)|0}while(e>>>0>(d[146510+i>>0]|0)>>>0);c[(O_()|0)>>2]=34;j=(g&1|0)==0&0==0?p:0;e=h;i=g}else{j=p;e=f}if(c[q>>2]|0)c[r>>2]=(c[r>>2]|0)+-1;if(!(e>>>0>>0|(e|0)==(h|0)&i>>>0>>0)){if(!((g&1|0)!=0|0!=0|(j|0)!=0)){c[(O_()|0)>>2]=34;g=s3(g|0,h|0,-1,-1)|0;h=z;break}if(e>>>0>h>>>0|(e|0)==(h|0)&i>>>0>g>>>0){c[(O_()|0)>>2]=34;break}}g=((j|0)<0)<<31>>31;g=t3(i^j|0,e^g|0,j|0,g|0)|0;h=z}while(0);z=h;return g|0}function I$(b){b=b|0;var e=0,f=0,g=0,h=0,i=0,j=0;f=b+104|0;h=c[f>>2]|0;if((h|0)!=0?(c[b+108>>2]|0)>=(h|0):0)i=4;else{e=J$(b)|0;if((e|0)>=0){g=c[f>>2]|0;f=b+8|0;if(g){j=c[f>>2]|0;h=c[b+4>>2]|0;f=g-(c[b+108>>2]|0)|0;g=j;if((j-h|0)<(f|0))f=g;else f=h+(f+-1)|0}else{g=c[f>>2]|0;f=g}c[b+100>>2]=f;f=b+4|0;if(!g)f=c[f>>2]|0;else{f=c[f>>2]|0;j=b+108|0;c[j>>2]=g+1-f+(c[j>>2]|0)}f=f+-1|0;if((e|0)!=(d[f>>0]|0|0))a[f>>0]=e}else i=4}if((i|0)==4){c[b+100>>2]=0;e=-1}return e|0}function J$(a){a=a|0;var b=0,e=0;e=l;l=l+16|0;b=e;if((K$(a)|0)==0?(nb[c[a+32>>2]&63](a,b,1)|0)==1:0)a=d[b>>0]|0;else a=-1;l=e;return a|0}function K$(b){b=b|0;var d=0,e=0;d=b+74|0;e=a[d>>0]|0;a[d>>0]=e+255|e;d=b+20|0;e=b+28|0;if((c[d>>2]|0)>>>0>(c[e>>2]|0)>>>0)nb[c[b+36>>2]&63](b,0,0)|0;c[b+16>>2]=0;c[e>>2]=0;c[d>>2]=0;d=c[b>>2]|0;if(!(d&4)){e=(c[b+44>>2]|0)+(c[b+48>>2]|0)|0;c[b+8>>2]=e;c[b+4>>2]=e;d=d<<27>>31}else{c[b>>2]=d|32;d=-1}return d|0}function L$(a){a=a|0;return (a+-48|0)>>>0<10|0}function M$(a){a=a|0;if(!(N$(a)|0))a=(E$(a)|0)!=0&1;else a=1;return a|0}function N$(a){a=a|0;return ((a|32)+-97|0)>>>0<26|0}function O$(b,c){b=b|0;c=c|0;var e=0,f=0,g=0;e=a[b>>0]|0;a:do if(!(e<<24>>24))b=0;else{g=b;b=e;f=e&255;while(1){e=a[c>>0]|0;if(!(e<<24>>24))break a;if(b<<24>>24!=e<<24>>24?(f=P$(f)|0,(f|0)!=(P$(d[c>>0]|0)|0)):0)break;b=g+1|0;c=c+1|0;e=a[b>>0]|0;if(!(e<<24>>24)){b=0;break a}else{g=b;b=e;f=e&255}}b=a[g>>0]|0}while(0);g=P$(b&255)|0;return g-(P$(d[c>>0]|0)|0)|0}function P$(a){a=a|0;var b=0;b=(Q$(a)|0)==0;return (b?a:a|32)|0}function Q$(a){a=a|0;return (a+-65|0)>>>0<26|0}function R$(a){a=a|0;return S$(a,0)|0}function S$(c,f){c=c|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0;k=(f<<1)+-1|0;l=f+-1|0;a:do if(!((c+-43008|0)>>>0<22272|((c+-11776|0)>>>0<30784|((c+-1536|0)>>>0<2560|(T$(c)|0)==0)))){g=(f|0)!=0;if(g&(c+-4256|0)>>>0<46){if((c|0)>4293)switch(c|0){case 4295:case 4301:break;default:break a}c=c+7264|0;break}if((c+-11520|0)>>>0<38&(g^1)){c=c+-7264|0;break}else g=0;do{i=a[66242+(g<<2)+2>>0]|0;j=i<<24>>24;h=c-(e[66242+(g<<2)>>1]|0)|0;if((h-(l&j)|0)>>>0<(d[66242+(g<<2)+3>>0]|0)>>>0){m=11;break}g=g+1|0}while((g|0)!=61);if((m|0)==11)if(i<<24>>24==1){c=f+c-(h&1)|0;break}else{c=(O(k,j)|0)+c|0;break}i=1-f|0;g=b[65754+(i<<1)>>1]|0;b:do if(g<<16>>16){h=0;while(1){if((g&65535|0)==(c|0))break;h=h+1|0;g=b[65754+(h<<2)+(i<<1)>>1]|0;if(!(g<<16>>16))break b}c=e[65754+(h<<2)+(f<<1)>>1]|0;break a}while(0);return ((c+-66600+(f*40|0)|0)>>>0<40?c+-40+(f*80|0)|0:c)|0}while(0);return c|0}function T$(a){a=a|0;if(a>>>0<131072)a=(d[146775+((d[146775+(a>>>8)>>0]|0)<<5|a>>>3&31)>>0]|0)>>>(a&7)&1;else a=a>>>0<196606&1;return a|0}function U$(a){a=a|0;var b=0;b=a;while(1)if(!(c[b>>2]|0))break;else b=b+4|0;return b-a>>2|0}function V$(b,c,e){b=b|0;c=c|0;e=e|0;var f=0,g=0,h=0;if(!e)b=0;else{f=a[b>>0]|0;a:do if(!(f<<24>>24))b=0;else{h=b;b=f;f=f&255;while(1){e=e+-1|0;g=a[c>>0]|0;if(!((e|0)!=0&g<<24>>24!=0))break a;if(b<<24>>24!=g<<24>>24?(g=P$(f)|0,(g|0)!=(P$(d[c>>0]|0)|0)):0)break;b=h+1|0;c=c+1|0;f=a[b>>0]|0;if(!(f<<24>>24)){b=0;break a}else{h=b;b=f;f=f&255}}b=a[h>>0]|0}while(0);b=P$(b&255)|0;b=b-(P$(d[c>>0]|0)|0)|0}return b|0}function W$(a){a=a|0;if(a>>>0>=255)if((a+-57344|0)>>>0<8185|(a>>>0<8232|(a+-8234|0)>>>0<47062))a=1;else return (a&65534|0)!=65534&(a+-65532|0)>>>0<1048580&1|0;else a=(a+1&127)>>>0>32&1;return a|0}function X$(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0;k=l;l=l+16|0;g=k;i=(f|0)==0?187560:f;f=c[i>>2]|0;a:do if(!d)if(!f)f=0;else j=17;else{h=(b|0)==0?g:b;if(!e)f=-2;else{if(!f){f=a[d>>0]|0;if(f<<24>>24>-1){c[h>>2]=f&255;f=f<<24>>24!=0&1;break}g=(c[c[($$()|0)+188>>2]>>2]|0)==0;f=a[d>>0]|0;if(g){c[h>>2]=f<<24>>24&57343;f=1;break}f=(f&255)+-194|0;if(f>>>0>50){j=17;break}f=c[62280+(f<<2)>>2]|0;g=e+-1|0;if(g){d=d+1|0;j=11}}else{g=e;j=11}b:do if((j|0)==11){b=a[d>>0]|0;m=(b&255)>>>3;if((m+-16|m+(f>>26))>>>0>7){j=17;break a}while(1){d=d+1|0;f=(b&255)+-128|f<<6;g=g+-1|0;if((f|0)>=0)break;if(!g)break b;b=a[d>>0]|0;if((b&-64)<<24>>24!=-128){j=17;break a}}c[i>>2]=0;c[h>>2]=f;f=e-g|0;break a}while(0);c[i>>2]=f;f=-2}}while(0);if((j|0)==17){c[i>>2]=0;c[(O_()|0)>>2]=84;f=-1}l=k;return f|0}function Y$(a,b){a=a|0;b=b|0;if(!a)a=0;else a=Z$(a,b,0)|0;return a|0}function Z$(b,d,e){b=b|0;d=d|0;e=e|0;do if(b){if(d>>>0<128){a[b>>0]=d;b=1;break}if(!(c[c[(_$()|0)+188>>2]>>2]|0))if((d&-128|0)==57216){a[b>>0]=d;b=1;break}else{c[(O_()|0)>>2]=84;b=-1;break}if(d>>>0<2048){a[b>>0]=d>>>6|192;a[b+1>>0]=d&63|128;b=2;break}if(d>>>0<55296|(d&-8192|0)==57344){a[b>>0]=d>>>12|224;a[b+1>>0]=d>>>6&63|128;a[b+2>>0]=d&63|128;b=3;break}if((d+-65536|0)>>>0<1048576){a[b>>0]=d>>>18|240;a[b+1>>0]=d>>>12&63|128;a[b+2>>0]=d>>>6&63|128;a[b+3>>0]=d&63|128;b=4;break}else{c[(O_()|0)>>2]=84;b=-1;break}}else b=1;while(0);return b|0}function _$(){return e$()|0}function $$(){return e$()|0}function a0(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;p=l;l=l+272|0;n=p+8|0;o=p;do if(!(a[d>>0]|0)){d=Ta(149751)|0;if(d|0?a[d>>0]|0:0)break;d=Ta(149758+(b*12|0)|0)|0;if(d|0?a[d>>0]|0:0)break;d=Ta(149830)|0;if(d|0?a[d>>0]|0:0)break;d=149835}while(0);e=0;a:do{switch(a[d+e>>0]|0){case 47:case 0:break a;default:{}}e=e+1|0}while(e>>>0<15);f=a[d>>0]|0;if(f<<24>>24!=46?(a[d+e>>0]|0)==0:0)if(f<<24>>24==67)m=15;else{k=d;m=16}else{d=149835;m=15}if((m|0)==15)if(!(a[d+1>>0]|0))m=18;else{k=d;m=16}b:do if((m|0)==16)if((b$(k,149835)|0)!=0?(b$(k,149843)|0)!=0:0){d=c[46891]|0;if(d|0)do{if(!(b$(k,d+8|0)|0))break b;d=c[d+24>>2]|0}while((d|0)!=0);ta(187568);d=c[46891]|0;c:do if(d|0){while(1){if(!(b$(k,d+8|0)|0))break;d=c[d+24>>2]|0;if(!d)break c}La(187568);break b}while(0);d:do if(((c[46876]|0)==0?(g=Ta(149849)|0,(g|0)!=0):0)?(a[g>>0]|0)!=0:0){i=254-e|0;j=e+1|0;f=g;while(1){h=V_(f,58)|0;d=a[h>>0]|0;g=h-f+((d<<24>>24!=0)<<31>>31)|0;if(g>>>0>>0){F3(n|0,f|0,g|0)|0;f=n+g|0;a[f>>0]=47;F3(f+1|0,k|0,e|0)|0;a[n+(j+g)>>0]=0;f=ua(n|0,o|0)|0;if(f|0)break;d=a[h>>0]|0}f=h+(d<<24>>24!=0&1)|0;if(!(a[f>>0]|0)){m=41;break d}}d=C_(28)|0;if(!d){S_(f,c[o>>2]|0)|0;m=41;break}else{c[d>>2]=f;c[d+4>>2]=c[o>>2];o=d+8|0;F3(o|0,k|0,e|0)|0;a[o+e>>0]=0;c[d+24>>2]=c[46891];c[46891]=d;break}}else m=41;while(0);if((m|0)==41){d=C_(28)|0;if(d){c[d>>2]=c[15558];c[d+4>>2]=c[15559];o=d+8|0;F3(o|0,k|0,e|0)|0;a[o+e>>0]=0;c[d+24>>2]=c[46891];c[46891]=d}}La(187568);d=(b|0)==0&(d|0)==0?62232:d}else{d=k;m=18}while(0);do if((m|0)==18){if((b|0)==0?(a[d+1>>0]|0)==46:0){d=62232;break}d=0}while(0);l=p;return d|0}function b0(a,b){a=a|0;b=b|0;c0(a,b)|0;return a|0}function c0(b,d){b=b|0;d=d|0;var e=0,f=0;e=d;a:do if(!((e^b)&3)){if(e&3)do{e=a[d>>0]|0;a[b>>0]=e;if(!(e<<24>>24))break a;d=d+1|0;b=b+1|0}while((d&3|0)!=0);e=c[d>>2]|0;if(!((e&-2139062144^-2139062144)&e+-16843009)){f=b;while(1){d=d+4|0;b=f+4|0;c[f>>2]=e;e=c[d>>2]|0;if((e&-2139062144^-2139062144)&e+-16843009|0)break;else f=b}}f=8}else f=8;while(0);if((f|0)==8){f=a[d>>0]|0;a[b>>0]=f;if(f<<24>>24)do{d=d+1|0;b=b+1|0;f=a[d>>0]|0;a[b>>0]=f}while(f<<24>>24!=0)}return b|0}function d0(a){a=a|0;return ((a|0)==32|(a|0)==9)&1|0}function e0(a){a=a|0;if(!a)a=0;else a=(f0(63396,a)|0)!=0&1;return a|0}function f0(a,b){a=a|0;b=b|0;var d=0;if(!b)a=a+((U$(a)|0)<<2)|0;else{while(1){d=c[a>>2]|0;if((d|0)==0|(d|0)==(b|0))break;else a=a+4|0}a=d|0?a:0}return a|0}function g0(a,b){a=a|0;b=b|0;do switch(b|0){case 1:{a=h0(a)|0;break}case 2:{a=T$(a)|0;break}case 3:{a=i0(a)|0;break}case 4:{a=j0(a)|0;break}case 5:{a=L$(a)|0;break}case 6:{a=k0(a)|0;break}case 7:{a=l0(a)|0;break}case 8:{a=W$(a)|0;break}case 9:{a=y$(a)|0;break}case 10:{a=e0(a)|0;break}case 11:{a=m0(a)|0;break}case 12:{a=n0(a)|0;break}default:a=0}while(0);return a|0}function h0(a){a=a|0;if(!(L$(a)|0))a=(T$(a)|0)!=0&1;else a=1;return a|0}function i0(a){a=a|0;return d0(a)|0}function j0(a){a=a|0;return ((a+-65529|0)>>>0<3|((a&-2|0)==8232|(a>>>0<32|(a+-127|0)>>>0<33)))&1|0}function k0(a){a=a|0;if(!(e0(a)|0))a=(W$(a)|0)!=0&1;else a=0;return a|0}function l0(a){a=a|0;return (R$(a)|0)!=(a|0)|0}function m0(a){a=a|0;return (o0(a)|0)!=(a|0)|0}function n0(a){a=a|0;return ((a+-48|0)>>>0<10|((a|32)+-97|0)>>>0<6)&1|0}function o0(a){a=a|0;return S$(a,1)|0}function p0(a){a=a|0;return (a+-97|0)>>>0<26|0}function q0(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+128|0;g=n+124|0;m=n;h=m;i=63484;j=h+124|0;do{c[h>>2]=c[i>>2];h=h+4|0;i=i+4|0}while((h|0)<(j|0));if((d+-1|0)>>>0>2147483646)if(!d){b=g;d=1;k=4}else{c[(O_()|0)>>2]=75;d=-1}else k=4;if((k|0)==4){k=-2-b|0;k=d>>>0>k>>>0?k:d;c[m+48>>2]=k;g=m+20|0;c[g>>2]=b;c[m+44>>2]=b;d=b+k|0;b=m+16|0;c[b>>2]=d;c[m+28>>2]=d;d=r0(m,e,f)|0;if(k){m=c[g>>2]|0;a[m+(((m|0)==(c[b>>2]|0))<<31>>31)>>0]=0}}l=n;return d|0}function r0(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=l;l=l+224|0;n=s+120|0;p=s+80|0;q=s;r=s+136|0;f=p;g=f+40|0;do{c[f>>2]=0;f=f+4|0}while((f|0)<(g|0));c[n>>2]=c[e>>2];if((s0(0,d,n,q,p)|0)<0)e=-1;else{if((c[b+76>>2]|0)>-1)o=t0(b)|0;else o=0;e=c[b>>2]|0;m=e&32;if((a[b+74>>0]|0)<1)c[b>>2]=e&-33;f=b+48|0;if(!(c[f>>2]|0)){g=b+44|0;h=c[g>>2]|0;c[g>>2]=r;i=b+28|0;c[i>>2]=r;j=b+20|0;c[j>>2]=r;c[f>>2]=80;k=b+16|0;c[k>>2]=r+80;e=s0(b,d,n,q,p)|0;if(h){nb[c[b+36>>2]&63](b,0,0)|0;e=(c[j>>2]|0)==0?-1:e;c[g>>2]=h;c[f>>2]=0;c[k>>2]=0;c[i>>2]=0;c[j>>2]=0}}else e=s0(b,d,n,q,p)|0;f=c[b>>2]|0;c[b>>2]=f|m;if(o|0)u0(b);e=(f&32|0)==0?e:-1}l=s;return e|0}function s0(d,e,f,g,i){d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;var j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0;I=l;l=l+64|0;D=I+16|0;E=I;A=I+24|0;G=I+8|0;H=I+20|0;c[D>>2]=e;w=(d|0)!=0;x=A+40|0;y=x;A=A+39|0;B=G+4|0;j=0;e=0;m=0;a:while(1){do if((e|0)>-1)if((j|0)>(2147483647-e|0)){c[(O_()|0)>>2]=75;e=-1;break}else{e=j+e|0;break}while(0);r=c[D>>2]|0;j=a[r>>0]|0;if(!(j<<24>>24)){v=88;break}else k=r;b:while(1){switch(j<<24>>24){case 37:{j=k;v=9;break b}case 0:{j=k;break b}default:{}}u=k+1|0;c[D>>2]=u;j=a[u>>0]|0;k=u}c:do if((v|0)==9)while(1){v=0;if((a[k+1>>0]|0)!=37)break c;j=j+1|0;k=k+2|0;c[D>>2]=k;if((a[k>>0]|0)!=37)break;else v=9}while(0);j=j-r|0;if(w)v0(d,r,j);if(j|0)continue;u=(E$(a[(c[D>>2]|0)+1>>0]|0)|0)==0;k=c[D>>2]|0;if(!u?(a[k+2>>0]|0)==36:0){s=(a[k+1>>0]|0)+-48|0;n=1;j=3}else{s=-1;n=m;j=1}j=k+j|0;c[D>>2]=j;k=a[j>>0]|0;u=(k<<24>>24)+-32|0;if(u>>>0>31|(1<>24)+-32|m;j=j+1|0;c[D>>2]=j;k=a[j>>0]|0;u=(k<<24>>24)+-32|0}while(!(u>>>0>31|(1<>24==42){if((E$(a[j+1>>0]|0)|0)!=0?(F=c[D>>2]|0,(a[F+2>>0]|0)==36):0){j=F+1|0;c[i+((a[j>>0]|0)+-48<<2)>>2]=10;j=c[g+((a[j>>0]|0)+-48<<3)>>2]|0;k=1;n=F+3|0}else{if(n|0){e=-1;break}if(w){u=(c[f>>2]|0)+(4-1)&~(4-1);j=c[u>>2]|0;c[f>>2]=u+4}else j=0;k=0;n=(c[D>>2]|0)+1|0}c[D>>2]=n;t=(j|0)<0;u=t?0-j|0:j;m=t?m|8192:m;t=k;j=n}else{j=w0(D)|0;if((j|0)<0){e=-1;break}u=j;t=n;j=c[D>>2]|0}do if((a[j>>0]|0)==46){if((a[j+1>>0]|0)!=42){c[D>>2]=j+1;p=w0(D)|0;j=c[D>>2]|0;break}if(E$(a[j+2>>0]|0)|0?(C=c[D>>2]|0,(a[C+3>>0]|0)==36):0){p=C+2|0;c[i+((a[p>>0]|0)+-48<<2)>>2]=10;p=c[g+((a[p>>0]|0)+-48<<3)>>2]|0;j=C+4|0;c[D>>2]=j;break}if(t|0){e=-1;break a}if(w){q=(c[f>>2]|0)+(4-1)&~(4-1);j=c[q>>2]|0;c[f>>2]=q+4}else j=0;q=(c[D>>2]|0)+2|0;c[D>>2]=q;p=j;j=q}else p=-1;while(0);q=0;while(1){if(((a[j>>0]|0)+-65|0)>>>0>57){e=-1;break a}k=j;j=j+1|0;c[D>>2]=j;k=a[(a[k>>0]|0)+-65+(149862+(q*58|0))>>0]|0;n=k&255;if((n+-1|0)>>>0>=8)break;else q=n}if(!(k<<24>>24)){e=-1;break}o=(s|0)>-1;do if(k<<24>>24==19)if(o){e=-1;break a}else v=50;else{if(o){c[i+(s<<2)>>2]=n;o=g+(s<<3)|0;s=c[o+4>>2]|0;v=E;c[v>>2]=c[o>>2];c[v+4>>2]=s;v=50;break}if(!w){e=0;break a}x0(E,n,f);j=c[D>>2]|0}while(0);if((v|0)==50){v=0;if(!w){j=0;m=t;continue}}k=a[j+-1>>0]|0;k=(q|0)!=0&(k&15|0)==3?k&-33:k;j=m&-65537;s=(m&8192|0)==0?m:j;d:do switch(k|0){case 110:switch((q&255)<<24>>24){case 0:{c[c[E>>2]>>2]=e;j=0;m=t;continue a}case 1:{c[c[E>>2]>>2]=e;j=0;m=t;continue a}case 2:{j=c[E>>2]|0;c[j>>2]=e;c[j+4>>2]=((e|0)<0)<<31>>31;j=0;m=t;continue a}case 3:{b[c[E>>2]>>1]=e;j=0;m=t;continue a}case 4:{a[c[E>>2]>>0]=e;j=0;m=t;continue a}case 6:{c[c[E>>2]>>2]=e;j=0;m=t;continue a}case 7:{j=c[E>>2]|0;c[j>>2]=e;c[j+4>>2]=((e|0)<0)<<31>>31;j=0;m=t;continue a}default:{j=0;m=t;continue a}}case 112:{k=120;j=p>>>0>8?p:8;m=s|8;v=62;break}case 88:case 120:{j=p;m=s;v=62;break}case 111:{k=E;j=c[k>>2]|0;k=c[k+4>>2]|0;o=z0(j,k,x)|0;m=y-o|0;q=0;n=150326;p=(s&8|0)==0|(p|0)>(m|0)?p:m+1|0;m=s;v=68;break}case 105:case 100:{k=E;j=c[k>>2]|0;k=c[k+4>>2]|0;if((k|0)<0){j=t3(0,0,j|0,k|0)|0;k=z;m=E;c[m>>2]=j;c[m+4>>2]=k;m=1;n=150326;v=67;break d}else{m=(s&2049|0)!=0&1;n=(s&2048|0)==0?((s&1|0)==0?150326:150328):150327;v=67;break d}}case 117:{k=E;m=0;n=150326;j=c[k>>2]|0;k=c[k+4>>2]|0;v=67;break}case 99:{a[A>>0]=c[E>>2];r=A;q=0;n=150326;o=x;k=1;break}case 109:{k=c$(c[(O_()|0)>>2]|0)|0;v=72;break}case 115:{k=c[E>>2]|0;k=k|0?k:150336;v=72;break}case 67:{c[G>>2]=c[E>>2];c[B>>2]=0;c[E>>2]=G;p=-1;m=G;v=76;break}case 83:{j=c[E>>2]|0;if(!p){B0(d,32,u,0,s);j=0;v=85}else{m=j;v=76}break}case 65:case 71:case 70:case 69:case 97:case 103:case 102:case 101:{j=C0(d,+h[E>>3],u,p,s,k)|0;m=t;continue a}default:{q=0;n=150326;o=x;k=p;j=s}}while(0);e:do if((v|0)==62){s=E;r=c[s>>2]|0;s=c[s+4>>2]|0;o=y0(r,s,x,k&32)|0;n=(m&8|0)==0|(r|0)==0&(s|0)==0;q=n?0:2;n=n?150326:150326+(k>>4)|0;p=j;j=r;k=s;v=68}else if((v|0)==67){o=A0(j,k,x)|0;q=m;m=s;v=68}else if((v|0)==72){v=0;s=D$(k,0,p)|0;m=(s|0)==0;r=k;q=0;n=150326;o=m?k+p|0:s;k=m?p:s-k|0}else if((v|0)==76){v=0;o=m;j=0;k=0;while(1){n=c[o>>2]|0;if(!n)break;k=Y$(H,n)|0;if((k|0)<0|k>>>0>(p-j|0)>>>0)break;j=k+j|0;if(p>>>0>j>>>0)o=o+4|0;else break}if((k|0)<0){e=-1;break a}B0(d,32,u,j,s);if(!j){j=0;v=85}else{n=0;while(1){k=c[m>>2]|0;if(!k){v=85;break e}k=Y$(H,k)|0;n=k+n|0;if((n|0)>(j|0)){v=85;break e}v0(d,H,k);if(n>>>0>=j>>>0){v=85;break}else m=m+4|0}}}while(0);if((v|0)==68){v=0;k=(j|0)!=0|(k|0)!=0;j=(p|0)!=0|k;k=y-o+((k^1)&1)|0;r=j?o:x;o=x;k=j?((p|0)>(k|0)?p:k):p;j=(p|0)>-1?m&-65537:m}else if((v|0)==85){v=0;B0(d,32,u,j,s^8192);j=(u|0)>(j|0)?u:j;m=t;continue}p=o-r|0;o=(k|0)<(p|0)?p:k;s=o+q|0;m=(u|0)<(s|0)?s:u;B0(d,32,m,s,j);v0(d,n,q);B0(d,48,m,s,j^65536);B0(d,48,o,p,0);v0(d,r,p);B0(d,32,m,s,j^8192);j=m;m=t}f:do if((v|0)==88)if(!d)if(m){e=1;while(1){j=c[i+(e<<2)>>2]|0;if(!j)break;x0(g+(e<<3)|0,j,f);j=e+1|0;if((e|0)<9)e=j;else{e=j;break}}if((e|0)<10)while(1){if(c[i+(e<<2)>>2]|0){e=-1;break f}if((e|0)<9)e=e+1|0;else{e=1;break}}else e=1}else e=0;while(0);l=I;return e|0}function t0(a){a=a|0;return 0}function u0(a){a=a|0;return}function v0(a,b,d){a=a|0;b=b|0;d=d|0;if(!(c[a>>2]&32))E0(b,d,a)|0;return}function w0(b){b=b|0;var d=0,e=0;if(!(E$(a[c[b>>2]>>0]|0)|0))d=0;else{d=0;do{e=c[b>>2]|0;d=(d*10|0)+-48+(a[e>>0]|0)|0;e=e+1|0;c[b>>2]=e}while((E$(a[e>>0]|0)|0)!=0)}return d|0}function x0(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0.0;a:do if(b>>>0<=20)do switch(b|0){case 9:{e=(c[d>>2]|0)+(4-1)&~(4-1);b=c[e>>2]|0;c[d>>2]=e+4;c[a>>2]=b;break a}case 10:{e=(c[d>>2]|0)+(4-1)&~(4-1);b=c[e>>2]|0;c[d>>2]=e+4;e=a;c[e>>2]=b;c[e+4>>2]=((b|0)<0)<<31>>31;break a}case 11:{e=(c[d>>2]|0)+(4-1)&~(4-1);b=c[e>>2]|0;c[d>>2]=e+4;e=a;c[e>>2]=b;c[e+4>>2]=0;break a}case 12:{e=(c[d>>2]|0)+(8-1)&~(8-1);b=e;f=c[b>>2]|0;b=c[b+4>>2]|0;c[d>>2]=e+8;e=a;c[e>>2]=f;c[e+4>>2]=b;break a}case 13:{f=(c[d>>2]|0)+(4-1)&~(4-1);e=c[f>>2]|0;c[d>>2]=f+4;e=(e&65535)<<16>>16;f=a;c[f>>2]=e;c[f+4>>2]=((e|0)<0)<<31>>31;break a}case 14:{f=(c[d>>2]|0)+(4-1)&~(4-1);e=c[f>>2]|0;c[d>>2]=f+4;f=a;c[f>>2]=e&65535;c[f+4>>2]=0;break a}case 15:{f=(c[d>>2]|0)+(4-1)&~(4-1);e=c[f>>2]|0;c[d>>2]=f+4;e=(e&255)<<24>>24;f=a;c[f>>2]=e;c[f+4>>2]=((e|0)<0)<<31>>31;break a}case 16:{f=(c[d>>2]|0)+(4-1)&~(4-1);e=c[f>>2]|0;c[d>>2]=f+4;f=a;c[f>>2]=e&255;c[f+4>>2]=0;break a}case 17:{f=(c[d>>2]|0)+(8-1)&~(8-1);g=+h[f>>3];c[d>>2]=f+8;h[a>>3]=g;break a}case 18:{f=(c[d>>2]|0)+(8-1)&~(8-1);g=+h[f>>3];c[d>>2]=f+8;h[a>>3]=g;break a}default:break a}while(0);while(0);return}function y0(b,c,e,f){b=b|0;c=c|0;e=e|0;f=f|0;if(!((b|0)==0&(c|0)==0))do{e=e+-1|0;a[e>>0]=d[150374+(b&15)>>0]|0|f;b=z3(b|0,c|0,4)|0;c=z}while(!((b|0)==0&(c|0)==0));return e|0}function z0(b,c,d){b=b|0;c=c|0;d=d|0;if(!((b|0)==0&(c|0)==0))do{d=d+-1|0;a[d>>0]=b&7|48;b=z3(b|0,c|0,3)|0;c=z}while(!((b|0)==0&(c|0)==0));return d|0}function A0(b,c,d){b=b|0;c=c|0;d=d|0;var e=0;if(c>>>0>0|(c|0)==0&b>>>0>4294967295){while(1){e=x3(b|0,c|0,10,0)|0;d=d+-1|0;a[d>>0]=e&255|48;e=b;b=w3(b|0,c|0,10,0)|0;if(!(c>>>0>9|(c|0)==9&e>>>0>4294967295))break;else c=z}c=b}else c=b;if(c)while(1){d=d+-1|0;a[d>>0]=(c>>>0)%10|0|48;if(c>>>0<10)break;else c=(c>>>0)/10|0}return d|0}function B0(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0;g=l;l=l+256|0;f=g;if((c|0)>(d|0)&(e&73728|0)==0){e=c-d|0;H3(f|0,b<<24>>24|0,(e>>>0<256?e:256)|0)|0;if(e>>>0>255){b=c-d|0;do{v0(a,f,256);e=e+-256|0}while(e>>>0>255);e=b&255}v0(a,f,e)}l=g;return}function C0(b,e,f,g,h,i){b=b|0;e=+e;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0.0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;H=l;l=l+560|0;m=H+8|0;u=H;G=H+524|0;F=G;n=H+512|0;c[u>>2]=0;E=n+12|0;D0(e)|0;if((z|0)<0){e=-e;C=1;B=150343}else{C=(h&2049|0)!=0&1;B=(h&2048|0)==0?((h&1|0)==0?150344:150349):150346}D0(e)|0;do if(0==0&(z&2146435072|0)==2146435072){G=(i&32|0)!=0;j=C+3|0;B0(b,32,f,j,h&-65537);v0(b,B,C);v0(b,e!=e|0.0!=0.0?(G?150511:150370):G?150362:150366,3);B0(b,32,f,j,h^8192)}else{r=+x$(e,u)*2.0;j=r!=0.0;if(j)c[u>>2]=(c[u>>2]|0)+-1;w=i|32;if((w|0)==97){p=i&32;s=(p|0)==0?B:B+9|0;q=C|2;j=12-g|0;do if(!(g>>>0>11|(j|0)==0)){e=8.0;do{j=j+-1|0;e=e*16.0}while((j|0)!=0);if((a[s>>0]|0)==45){e=-(e+(-r-e));break}else{e=r+e-e;break}}else e=r;while(0);k=c[u>>2]|0;j=(k|0)<0?0-k|0:k;j=A0(j,((j|0)<0)<<31>>31,E)|0;if((j|0)==(E|0)){j=n+11|0;a[j>>0]=48}a[j+-1>>0]=(k>>31&2)+43;o=j+-2|0;a[o>>0]=i+15;m=(g|0)<1;n=(h&8|0)==0;j=G;do{D=~~e;k=j+1|0;a[j>>0]=p|d[150374+D>>0];e=(e-+(D|0))*16.0;if((k-F|0)==1?!(n&(m&e==0.0)):0){a[k>>0]=46;j=j+2|0}else j=k}while(e!=0.0);if((g|0)!=0?(-2-F+j|0)<(g|0):0){k=j-F|0;j=g+2|0}else{j=j-F|0;k=j}E=E-o|0;F=E+q+j|0;B0(b,32,f,F,h);v0(b,s,q);B0(b,48,f,F,h^65536);v0(b,G,k);B0(b,48,j-k|0,0,0);v0(b,o,E);B0(b,32,f,F,h^8192);j=F;break}k=(g|0)<0?6:g;if(j){j=(c[u>>2]|0)+-28|0;c[u>>2]=j;e=r*268435456.0}else{e=r;j=c[u>>2]|0}D=(j|0)<0?m:m+288|0;m=D;do{y=~~e>>>0;c[m>>2]=y;m=m+4|0;e=(e-+(y>>>0))*1.0e9}while(e!=0.0);if((j|0)>0){n=D;p=m;while(1){o=(j|0)<29?j:29;j=p+-4|0;if(j>>>0>=n>>>0){m=0;do{x=A3(c[j>>2]|0,0,o|0)|0;x=s3(x|0,z|0,m|0,0)|0;y=z;v=x3(x|0,y|0,1e9,0)|0;c[j>>2]=v;m=w3(x|0,y|0,1e9,0)|0;j=j+-4|0}while(j>>>0>=n>>>0);if(m){n=n+-4|0;c[n>>2]=m}}m=p;while(1){if(m>>>0<=n>>>0)break;j=m+-4|0;if(!(c[j>>2]|0))m=j;else break}j=(c[u>>2]|0)-o|0;c[u>>2]=j;if((j|0)>0)p=m;else break}}else n=D;if((j|0)<0){g=((k+25|0)/9|0)+1|0;t=(w|0)==102;do{s=0-j|0;s=(s|0)<9?s:9;if(n>>>0>>0){o=(1<>>s;q=0;j=n;do{y=c[j>>2]|0;c[j>>2]=(y>>>s)+q;q=O(y&o,p)|0;j=j+4|0}while(j>>>0>>0);j=(c[n>>2]|0)==0?n+4|0:n;if(!q){n=j;j=m}else{c[m>>2]=q;n=j;j=m+4|0}}else{n=(c[n>>2]|0)==0?n+4|0:n;j=m}m=t?D:n;m=(j-m>>2|0)>(g|0)?m+(g<<2)|0:j;j=(c[u>>2]|0)+s|0;c[u>>2]=j}while((j|0)<0);j=n;g=m}else{j=n;g=m}y=D;if(j>>>0>>0){m=(y-j>>2)*9|0;o=c[j>>2]|0;if(o>>>0>=10){n=10;do{n=n*10|0;m=m+1|0}while(o>>>0>=n>>>0)}}else m=0;t=(w|0)==103;v=(k|0)!=0;n=k-((w|0)!=102?m:0)+((v&t)<<31>>31)|0;if((n|0)<(((g-y>>2)*9|0)+-9|0)){n=n+9216|0;s=D+4+(((n|0)/9|0)+-1024<<2)|0;n=(n|0)%9|0;if((n|0)<8){o=10;while(1){o=o*10|0;if((n|0)<7)n=n+1|0;else break}}else o=10;p=c[s>>2]|0;q=(p>>>0)%(o>>>0)|0;n=(s+4|0)==(g|0);if(!(n&(q|0)==0)){r=(((p>>>0)/(o>>>0)|0)&1|0)==0?9007199254740992.0:9007199254740994.0;x=(o|0)/2|0;e=q>>>0>>0?.5:n&(q|0)==(x|0)?1.0:1.5;if(C){x=(a[B>>0]|0)==45;e=x?-e:e;r=x?-r:r}n=p-q|0;c[s>>2]=n;if(r+e!=r){x=n+o|0;c[s>>2]=x;if(x>>>0>999999999){m=s;while(1){n=m+-4|0;c[m>>2]=0;if(n>>>0>>0){j=j+-4|0;c[j>>2]=0}x=(c[n>>2]|0)+1|0;c[n>>2]=x;if(x>>>0>999999999)m=n;else break}}else n=s;m=(y-j>>2)*9|0;p=c[j>>2]|0;if(p>>>0>=10){o=10;do{o=o*10|0;m=m+1|0}while(p>>>0>=o>>>0)}}else n=s}else n=s;n=n+4|0;n=g>>>0>n>>>0?n:g;x=j}else{n=g;x=j}w=n;while(1){if(w>>>0<=x>>>0){u=0;break}j=w+-4|0;if(!(c[j>>2]|0))w=j;else{u=1;break}}g=0-m|0;do if(t){j=k+((v^1)&1)|0;if((j|0)>(m|0)&(m|0)>-5){o=i+-1|0;k=j+-1-m|0}else{o=i+-2|0;k=j+-1|0}j=h&8;if(!j){if(u?(A=c[w+-4>>2]|0,(A|0)!=0):0)if(!((A>>>0)%10|0)){n=0;j=10;do{j=j*10|0;n=n+1|0}while(!((A>>>0)%(j>>>0)|0|0))}else n=0;else n=9;j=((w-y>>2)*9|0)+-9|0;if((o|32|0)==102){s=j-n|0;s=(s|0)>0?s:0;k=(k|0)<(s|0)?k:s;s=0;break}else{s=j+m-n|0;s=(s|0)>0?s:0;k=(k|0)<(s|0)?k:s;s=0;break}}else s=j}else{o=i;s=h&8}while(0);t=k|s;p=(t|0)!=0&1;q=(o|32|0)==102;if(q){v=0;j=(m|0)>0?m:0}else{j=(m|0)<0?g:m;j=A0(j,((j|0)<0)<<31>>31,E)|0;n=E;if((n-j|0)<2)do{j=j+-1|0;a[j>>0]=48}while((n-j|0)<2);a[j+-1>>0]=(m>>31&2)+43;j=j+-2|0;a[j>>0]=o;v=j;j=n-j|0}j=C+1+k+p+j|0;B0(b,32,f,j,h);v0(b,B,C);B0(b,48,f,j,h^65536);if(q){o=x>>>0>D>>>0?D:x;s=G+9|0;p=s;q=G+8|0;n=o;do{m=A0(c[n>>2]|0,0,s)|0;if((n|0)==(o|0)){if((m|0)==(s|0)){a[q>>0]=48;m=q}}else if(m>>>0>G>>>0){H3(G|0,48,m-F|0)|0;do m=m+-1|0;while(m>>>0>G>>>0)}v0(b,m,p-m|0);n=n+4|0}while(n>>>0<=D>>>0);if(t|0)v0(b,150390,1);if(n>>>0>>0&(k|0)>0)while(1){m=A0(c[n>>2]|0,0,s)|0;if(m>>>0>G>>>0){H3(G|0,48,m-F|0)|0;do m=m+-1|0;while(m>>>0>G>>>0)}v0(b,m,(k|0)<9?k:9);n=n+4|0;m=k+-9|0;if(!(n>>>0>>0&(k|0)>9)){k=m;break}else k=m}B0(b,48,k+9|0,9,0)}else{t=u?w:x+4|0;if((k|0)>-1){u=G+9|0;s=(s|0)==0;g=u;p=0-F|0;q=G+8|0;o=x;do{m=A0(c[o>>2]|0,0,u)|0;if((m|0)==(u|0)){a[q>>0]=48;m=q}do if((o|0)==(x|0)){n=m+1|0;v0(b,m,1);if(s&(k|0)<1){m=n;break}v0(b,150390,1);m=n}else{if(m>>>0<=G>>>0)break;H3(G|0,48,m+p|0)|0;do m=m+-1|0;while(m>>>0>G>>>0)}while(0);F=g-m|0;v0(b,m,(k|0)>(F|0)?F:k);k=k-F|0;o=o+4|0}while(o>>>0>>0&(k|0)>-1)}B0(b,48,k+18|0,18,0);v0(b,v,E-v|0)}B0(b,32,f,j,h^8192)}while(0);l=H;return ((j|0)<(f|0)?f:j)|0}function D0(a){a=+a;var b=0;h[j>>3]=a;b=c[j>>2]|0;z=c[j+4>>2]|0;return b|0}function E0(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;f=e+16|0;g=c[f>>2]|0;if(!g)if(!(F0(e)|0)){g=c[f>>2]|0;h=5}else f=0;else h=5;a:do if((h|0)==5){j=e+20|0;i=c[j>>2]|0;f=i;if((g-i|0)>>>0>>0){f=nb[c[e+36>>2]&63](e,b,d)|0;break}b:do if((a[e+75>>0]|0)>-1){i=d;while(1){if(!i){h=0;g=b;break b}g=i+-1|0;if((a[b+g>>0]|0)==10)break;else i=g}f=nb[c[e+36>>2]&63](e,b,i)|0;if(f>>>0>>0)break a;h=i;g=b+i|0;d=d-i|0;f=c[j>>2]|0}else{h=0;g=b}while(0);F3(f|0,g|0,d|0)|0;c[j>>2]=(c[j>>2]|0)+d;f=h+d|0}while(0);return f|0}function F0(b){b=b|0;var d=0,e=0;d=b+74|0;e=a[d>>0]|0;a[d>>0]=e+255|e;d=c[b>>2]|0;if(!(d&8)){c[b+8>>2]=0;c[b+4>>2]=0;e=c[b+44>>2]|0;c[b+28>>2]=e;c[b+20>>2]=e;c[b+16>>2]=e+(c[b+48>>2]|0);b=0}else{c[b>>2]=d|32;b=-1}return b|0}function G0(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=a+20|0;f=c[e>>2]|0;a=(c[a+16>>2]|0)-f|0;a=a>>>0>d>>>0?d:a;F3(f|0,b|0,a|0)|0;c[e>>2]=(c[e>>2]|0)+a;return d|0}function H0(b){b=b|0;var c=0,d=0,e=0,f=0;e=a[b>>0]|0;c=1;d=150392;f=97;while(1){if(e<<24>>24==f<<24>>24?(b$(b,d)|0)==0:0)break;d=d+6|0;f=a[d>>0]|0;if(!(f<<24>>24)){c=0;break}else c=c+1|0}return c|0}function I0(a){a=a|0;var b=0;b=(p0(a)|0)==0;return (b?a:a&95)|0}function J0(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=l;l=l+16|0;g=h;do if(b>>>0>6)d=0;else{ta(187576);if((b|0)!=6){d=K0(b,d)|0;La(187576);break}if(!d){d=194052;b=0}else{b=g;e=150465;f=b+16|0;do{a[b>>0]=a[e>>0]|0;b=b+1|0;e=e+1|0}while((b|0)<(f|0));f=0;do{b=V_(d,59)|0;e=b-d|0;if((e|0)<16){F3(g|0,d|0,e|0)|0;a[g+e>>0]=0;d=(a[b>>0]|0)==0?d:b+1|0}K0(f,g)|0;f=f+1|0}while((f|0)!=6);d=194052;b=0}while(1){f=c[187536+(b<<2)>>2]|0;f=f|0?f+8|0:150481;e=W_(f)|0;F3(d|0,f|0,e|0)|0;f=d+e|0;a[f>>0]=59;b=b+1|0;if((b|0)==6)break;else d=d+(e+1)|0}a[f>>0]=0;La(187576);d=194052}while(0);l=h;return d|0}function K0(a,b){a=a|0;b=b|0;if(!b)a=c[187536+(a<<2)>>2]|0;else{b=a0(a,b)|0;c[187536+(a<<2)>>2]=b;a=b}return (a|0?a+8|0:150481)|0}function L0(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0;a:do if(!d)b=0;else{while(1){e=a[b>>0]|0;f=a[c>>0]|0;if(e<<24>>24!=f<<24>>24)break;d=d+-1|0;if(!d){b=0;break a}else{b=b+1|0;c=c+1|0}}b=(e&255)-(f&255)|0}while(0);return b|0}function M0(a){a=a|0;return N0(a)|0}function N0(a){a=a|0;return B3(a|0)|0}function O0(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;if((c[f+76>>2]|0)>-1)m=t0(f)|0;else m=0;g=e+-1|0;if((e|0)<2){n=f+74|0;l=a[n>>0]|0;a[n>>0]=l+255|l;if(m|0)u0(f);if(!g)a[b>>0]=0;else b=0}else{a:do if(g){k=f+4|0;l=f+8|0;e=b;while(1){h=c[k>>2]|0;o=h;p=(c[l>>2]|0)-o|0;i=D$(h,10,p)|0;j=(i|0)==0;i=j?p:1-o+i|0;i=i>>>0>>0?i:g;F3(e|0,h|0,i|0)|0;h=(c[k>>2]|0)+i|0;c[k>>2]=h;e=e+i|0;i=g-i|0;if(!(j&(i|0)!=0)){n=17;break a}if(h>>>0>=(c[l>>2]|0)>>>0){g=J$(f)|0;if((g|0)<0)break;else j=g}else{c[k>>2]=h+1;j=d[h>>0]|0}g=i+-1|0;h=e+1|0;a[e>>0]=j;if(!((g|0)!=0&(j&255|0)!=10)){e=h;n=17;break a}else e=h}if((e|0)!=(b|0)?(c[f>>2]&16|0)!=0:0)n=17;else b=0}else{e=b;n=17}while(0);if((n|0)==17)if(!b)b=0;else a[e>>0]=0;if(m)u0(f)}return b|0}function P0(b,c){b=b|0;c=c|0;var d=0;d=a[c>>0]|0;do if(d<<24>>24){b=A$(b,d<<24>>24)|0;if(b){if(a[c+1>>0]|0)if(a[b+1>>0]|0){if(!(a[c+2>>0]|0)){b=Q0(b,c)|0;break}if(a[b+2>>0]|0){if(!(a[c+3>>0]|0)){b=R0(b,c)|0;break}if(a[b+3>>0]|0)if(!(a[c+4>>0]|0)){b=S0(b,c)|0;break}else{b=T0(b,c)|0;break}else b=0}else b=0}else b=0}else b=0}while(0);return b|0}function Q0(b,c){b=b|0;c=c|0;var e=0,f=0,g=0;g=(d[c>>0]|0)<<8|(d[c+1>>0]|0);f=d[b>>0]|0;while(1){c=b+1|0;e=a[c>>0]|0;if(!(e<<24>>24))break;f=f<<8&65280|e&255;if((f|0)==(g|0))break;else b=c}return (e<<24>>24?b:0)|0}function R0(b,c){b=b|0;c=c|0;var e=0,f=0;f=(d[c+1>>0]|0)<<16|(d[c>>0]|0)<<24|(d[c+2>>0]|0)<<8;e=b+2|0;c=a[e>>0]|0;b=(d[b+1>>0]|0)<<16|(d[b>>0]|0)<<24|(c&255)<<8;if(!((b|0)==(f|0)|c<<24>>24==0))do{e=e+1|0;c=a[e>>0]|0;b=(b|c&255)<<8}while(!((b|0)==(f|0)|c<<24>>24==0));return (c<<24>>24?e+-2|0:0)|0}function S0(b,c){b=b|0;c=c|0;var e=0,f=0;f=(d[c+1>>0]|0)<<16|(d[c>>0]|0)<<24|(d[c+2>>0]|0)<<8|(d[c+3>>0]|0);c=b+3|0;e=a[c>>0]|0;b=(d[b+1>>0]|0)<<16|(d[b>>0]|0)<<24|(d[b+2>>0]|0)<<8|e&255;if(!(e<<24>>24==0|(b|0)==(f|0)))do{c=c+1|0;e=a[c>>0]|0;b=b<<8|e&255}while(!(e<<24>>24==0|(b|0)==(f|0)));return (e<<24>>24?c+-3|0:0)|0}function T0(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;v=l;l=l+1056|0;t=v+1024|0;u=v;c[t>>2]=0;c[t+4>>2]=0;c[t+8>>2]=0;c[t+12>>2]=0;c[t+16>>2]=0;c[t+20>>2]=0;c[t+24>>2]=0;c[t+28>>2]=0;e=a[d>>0]|0;a:do if(e<<24>>24){s=0;do{if(!(a[b+s>>0]|0)){e=0;break a}r=t+(((e&255)>>>5&255)<<2)|0;c[r>>2]=c[r>>2]|1<<(e&31);s=s+1|0;c[u+((e&255)<<2)>>2]=s;e=a[d+s>>0]|0}while(e<<24>>24!=0);m=s>>>0>1;if(m){f=0;k=-1;g=1;b:while(1){h=1;e=f;while(1){f=g;c:while(1){j=1;while(1){g=a[d+(j+k)>>0]|0;i=a[d+f>>0]|0;if(g<<24>>24!=i<<24>>24)break c;if((j|0)==(h|0))break;j=j+1|0;f=j+e|0;if(f>>>0>=s>>>0){n=h;e=k;break b}}e=h+e|0;f=e+1|0;if(f>>>0>=s>>>0){n=h;e=k;break b}}h=f-k|0;if((g&255)<=(i&255))break;g=f+1|0;if(g>>>0>=s>>>0){n=h;e=k;break b}else e=f}g=e+2|0;if(g>>>0>=s>>>0){n=1;break}else{f=e+1|0;k=e}}if(m){h=0;m=-1;i=1;while(1){f=1;g=h;while(1){h=i;d:while(1){k=1;while(1){i=a[d+(k+m)>>0]|0;j=a[d+h>>0]|0;if(i<<24>>24!=j<<24>>24)break d;if((k|0)==(f|0))break;k=k+1|0;h=k+g|0;if(h>>>0>=s>>>0){i=n;g=m;h=26;break a}}g=f+g|0;h=g+1|0;if(h>>>0>=s>>>0){i=n;g=m;h=26;break a}}f=h-m|0;if((i&255)>=(j&255))break;i=h+1|0;if(i>>>0>=s>>>0){i=n;g=m;h=26;break a}else g=h}i=g+2|0;if(i>>>0>=s>>>0){i=n;f=1;h=26;break}else{h=g+1|0;m=g}}}else{i=n;f=1;g=-1;h=26}}else{i=1;e=-1;f=1;g=-1;h=26}}else{i=1;e=-1;s=0;f=1;g=-1;h=26}while(0);e:do if((h|0)==26){q=(g+1|0)>>>0>(e+1|0)>>>0;f=q?f:i;q=q?g:e;r=q+1|0;if(!(L0(d,d+f|0,r)|0))p=s-f|0;else{f=s-q+-1|0;p=0;f=(q>>>0>f>>>0?q:f)+1|0}k=s|63;m=s+-1|0;n=(p|0)!=0;o=s-f|0;e=b;j=0;g=b;while(1){h=e;do if((g-h|0)>>>0>>0){i=D$(g,0,k)|0;if(i)if((i-h|0)>>>0>>0){e=0;break e}else break;else{i=g+k|0;break}}else i=g;while(0);g=a[e+m>>0]|0;f:do if(!(1<<(g&31)&c[t+(((g&255)>>>5&255)<<2)>>2])){h=0;g=s}else{g=s-(c[u+((g&255)<<2)>>2]|0)|0;if(g|0){h=0;g=n&(j|0)!=0&g>>>0>>0?o:g;break}g=r>>>0>j>>>0?r:j;h=a[d+g>>0]|0;g:do if(!(h<<24>>24))g=r;else{while(1){if(h<<24>>24!=(a[e+g>>0]|0))break;g=g+1|0;h=a[d+g>>0]|0;if(!(h<<24>>24)){g=r;break g}}h=0;g=g-q|0;break f}while(0);while(1){if(g>>>0<=j>>>0)break e;g=g+-1|0;if((a[d+g>>0]|0)!=(a[e+g>>0]|0)){h=p;g=f;break}}}while(0);e=e+g|0;j=h;g=i}}while(0);l=v;return e|0}function U0(a,b,c){a=a|0;b=b|0;c=c|0;V0(a,b,c)|0;return a|0}function V0(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;g=d;a:do if(!((g^b)&3)){f=(e|0)!=0;if(f&(g&3|0)!=0)do{g=a[d>>0]|0;a[b>>0]=g;if(!(g<<24>>24))break a;e=e+-1|0;d=d+1|0;b=b+1|0;f=(e|0)!=0}while(f&(d&3|0)!=0);if(f){if(a[d>>0]|0){b:do if(e>>>0>3){f=d;while(1){d=c[f>>2]|0;if((d&-2139062144^-2139062144)&d+-16843009|0){d=f;break b}c[b>>2]=d;e=e+-4|0;d=f+4|0;b=b+4|0;if(e>>>0>3)f=d;else break}}while(0);h=11}}else e=0}else h=11;while(0);c:do if((h|0)==11)if(!e)e=0;else while(1){h=a[d>>0]|0;a[b>>0]=h;if(!(h<<24>>24))break c;e=e+-1|0;b=b+1|0;if(!e){e=0;break}else d=d+1|0}while(0);H3(b|0,0,e|0)|0;return b|0}function W0(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=l;l=l+32|0;f=g;c[f>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;c[f+16>>2]=0;c[f+20>>2]=0;c[f+24>>2]=0;c[f+28>>2]=0;e=a[d>>0]|0;do if(!(e<<24>>24))d=0;else{if(!(a[d+1>>0]|0)){d=b;while(1)if((a[d>>0]|0)==e<<24>>24)d=d+1|0;else break;d=d-b|0;break}do{h=f+(((e&255)>>>5&255)<<2)|0;c[h>>2]=c[h>>2]|1<<(e&31);d=d+1|0;e=a[d>>0]|0}while(e<<24>>24!=0);e=a[b>>0]|0;a:do if(!(e<<24>>24))d=b;else{d=b;do{if(!(c[f+(((e&255)>>>5&255)<<2)>>2]&1<<(e&31)))break a;d=d+1|0;e=a[d>>0]|0}while(e<<24>>24!=0)}while(0);d=d-b|0}while(0);l=g;return d|0}function X0(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=P_(a)|0;a=Ja(6,d|0)|0;a=N_((a|0)==-4?0:a)|0;l=b;return a|0}function Y0(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=l;l=l+16|0;f=e;c[f>>2]=d;d=Z0(a,b,f)|0;l=e;return d|0}function Z0(a,b,c){a=a|0;b=b|0;c=c|0;return q0(a,2147483647,b,c)|0}function _0(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;m=l;l=l+208|0;j=m+8|0;k=m;h=O(d,b)|0;i=k;c[i>>2]=1;c[i+4>>2]=0;a:do if(h|0){i=0-d|0;c[j+4>>2]=d;c[j>>2]=d;f=2;b=d;g=d;while(1){b=b+d+g|0;c[j+(f<<2)>>2]=b;if(b>>>0>>0){n=g;f=f+1|0;g=b;b=n}else break}g=a+h+i|0;if(g>>>0>a>>>0){h=g;f=1;b=1;do{do if((b&3|0)!=3){b=f+-1|0;if((c[j+(b<<2)>>2]|0)>>>0<(h-a|0)>>>0)$0(a,d,e,f,j);else b1(a,d,e,k,f,0,j);if((f|0)==1){c1(k,1);f=0;break}else{c1(k,b);f=1;break}}else{$0(a,d,e,f,j);a1(k,2);f=f+2|0}while(0);b=c[k>>2]|1;c[k>>2]=b;a=a+d|0}while(a>>>0>>0)}else{f=1;b=1}b1(a,d,e,k,f,0,j);g=k+4|0;while(1){if((f|0)==1&(b|0)==1){if(!(c[g>>2]|0))break a}else if((f|0)>=2){c1(k,2);n=f+-2|0;c[k>>2]=c[k>>2]^7;a1(k,1);b1(a+(0-(c[j+(n<<2)>>2]|0))+i|0,d,e,k,f+-1|0,1,j);c1(k,1);b=c[k>>2]|1;c[k>>2]=b;h=a+i|0;b1(h,d,e,k,n,1,j);a=h;f=n;continue}b=d1(k)|0;a1(k,b);a=a+i|0;f=b+f|0;b=c[k>>2]|0}}while(0);l=m;return}function $0(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+240|0;m=n;c[m>>2]=a;a:do if((e|0)>1){k=0-b|0;g=a;j=e;e=1;while(1){h=g+k|0;i=j+-2|0;g=h+(0-(c[f+(i<<2)>>2]|0))|0;if((lb[d&127](a,g)|0)>-1?(lb[d&127](a,h)|0)>-1:0)break a;a=e+1|0;e=m+(e<<2)|0;if((lb[d&127](g,h)|0)>-1){c[e>>2]=g;e=j+-1|0}else{c[e>>2]=h;g=h;e=i}if((e|0)<=1){e=a;break a}j=e;e=a;a=c[m>>2]|0}}else e=1;while(0);f1(b,m,e);l=n;return}function a1(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=a+4|0;if(b>>>0>31){e=c[f>>2]|0;c[a>>2]=e;c[f>>2]=0;b=b+-32|0;d=0}else{d=c[f>>2]|0;e=c[a>>2]|0}c[a>>2]=d<<32-b|e>>>b;c[f>>2]=d>>>b;return}function b1(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;p=l;l=l+240|0;n=p+232|0;o=p;q=c[e>>2]|0;c[n>>2]=q;j=c[e+4>>2]|0;k=n+4|0;c[k>>2]=j;c[o>>2]=a;a:do if((q|0)!=1|(j|0)!=0?(m=0-b|0,i=a+(0-(c[h+(f<<2)>>2]|0))|0,(lb[d&127](i,a)|0)>=1):0){e=1;g=(g|0)==0;j=i;while(1){if(g&(f|0)>1){g=a+m|0;i=c[h+(f+-2<<2)>>2]|0;if((lb[d&127](g,j)|0)>-1){i=10;break a}if((lb[d&127](g+(0-i)|0,j)|0)>-1){i=10;break a}}g=e+1|0;c[o+(e<<2)>>2]=j;q=d1(n)|0;a1(n,q);f=q+f|0;if(!((c[n>>2]|0)!=1|(c[k>>2]|0)!=0)){e=g;a=j;i=10;break a}a=j+(0-(c[h+(f<<2)>>2]|0))|0;if((lb[d&127](a,c[o>>2]|0)|0)<1){a=j;e=g;g=0;i=9;break}else{q=j;e=g;g=1;j=a;a=q}}}else{e=1;i=9}while(0);if((i|0)==9?(g|0)==0:0)i=10;if((i|0)==10){f1(b,o,e);$0(a,b,d,f,h)}l=p;return}function c1(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=a+4|0;if(b>>>0>31){e=c[a>>2]|0;c[f>>2]=e;c[a>>2]=0;b=b+-32|0;d=0}else{d=c[a>>2]|0;e=c[f>>2]|0}c[f>>2]=d>>>(32-b|0)|e<>2]=d<>2]|0)+-1|0)|0;if(!b){b=e1(c[a+4>>2]|0)|0;return ((b|0)==0?0:b+32|0)|0}else return b|0;return 0}function e1(a){a=a|0;var b=0;if(a)if(!(a&1)){b=a;a=0;do{a=a+1|0;b=b>>>1}while(!(b&1|0))}else a=0;else a=32;return a|0}function f1(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;h=l;l=l+256|0;e=h;a:do if((d|0)>=2?(g=b+(d<<2)|0,c[g>>2]=e,a|0):0)while(1){f=a>>>0<256?a:256;F3(e|0,c[b>>2]|0,f|0)|0;e=0;do{i=b+(e<<2)|0;e=e+1|0;F3(c[i>>2]|0,c[b+(e<<2)>>2]|0,f|0)|0;c[i>>2]=(c[i>>2]|0)+f}while((e|0)!=(d|0));a=a-f|0;if(!a)break a;e=c[g>>2]|0}while(0);l=h;return}function g1(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=l;l=l+16|0;f=e;c[f>>2]=d;d=r0(a,b,f)|0;l=e;return d|0}function h1(b){b=b|0;var d=0,e=0,f=0;f=l;l=l+16|0;e=f;sa(0,e|0)|0;d=0;e=(c[e+4>>2]|0)*65537^(e>>>4)+b;while(1){a[b+d>>0]=(e&15)+65|e<<1&32;d=d+1|0;if((d|0)==6)break;else e=e>>>5}l=f;return b|0}function i1(a,b,c){a=a|0;b=b|0;c=c|0;c=F$(a,b,c,-2147483648,0)|0;return c|0}function j1(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;h=l;l=l+32|0;f=h;e=a[d>>0]|0;a:do if(e<<24>>24!=0?(a[d+1>>0]|0)!=0:0){H3(f|0,0,32)|0;e=a[d>>0]|0;if(e<<24>>24)do{i=f+(((e&255)>>>5&255)<<2)|0;c[i>>2]=c[i>>2]|1<<(e&31);d=d+1|0;e=a[d>>0]|0}while(e<<24>>24!=0);d=a[b>>0]|0;if(!(d<<24>>24))e=b;else{e=b;do{if(c[f+(((d&255)>>>5&255)<<2)>>2]&1<<(d&31)|0)break a;e=e+1|0;d=a[e>>0]|0}while(d<<24>>24!=0)}}else g=3;while(0);if((g|0)==3)e=V_(b,e<<24>>24)|0;l=h;return e-b|0}function k1(b,d){b=b|0;d=d|0;var e=0;if(!b){b=c[46896]|0;if(!b)b=0;else e=3}else e=3;do if((e|0)==3){b=b+(W0(b,d)|0)|0;if(!(a[b>>0]|0)){c[46896]=0;b=0;break}d=b+(j1(b,d)|0)|0;c[46896]=d;if(!(a[d>>0]|0)){c[46896]=0;break}else{c[46896]=d+1;a[d>>0]=0;break}}while(0);return b|0}function l1(b,c,d){b=b|0;c=c|0;d=d|0;var e=0;e=c&255;do{if(!d){c=0;break}d=d+-1|0;c=b+d|0}while((a[c>>0]|0)!=e<<24>>24);return c|0}function m1(b,d,e){b=b|0;d=d|0;e=e|0;var f=0;if(!b){b=c[e>>2]|0;if(!b)b=0;else f=3}else f=3;do if((f|0)==3){b=b+(W0(b,d)|0)|0;if(!(a[b>>0]|0)){c[e>>2]=0;b=0;break}d=b+(j1(b,d)|0)|0;c[e>>2]=d;if(!(a[d>>0]|0)){c[e>>2]=0;break}else{c[e>>2]=d+1;a[d>>0]=0;break}}while(0);return b|0}function n1(a){a=a|0;var b=0,c=0;b=(W_(a)|0)+1|0;c=C_(b)|0;if(!c)a=0;else a=F3(c|0,a|0,b|0)|0;return a|0}function o1(a,b){a=a|0;b=b|0;return l1(a,b,(W_(a)|0)+1|0)|0}function p1(a,b){a=a|0;b=b|0;b0(a+(W_(a)|0)|0,b)|0;return a|0}function q1(b,c){b=b|0;c=c|0;c=b+(j1(b,c)|0)|0;return (a[c>>0]|0?c:0)|0}function r1(a){a=a|0;var b=0;if((c[a+76>>2]|0)>-1){b=(t0(a)|0)==0;a=(c[a>>2]|0)>>>4&1}else a=(c[a>>2]|0)>>>4&1;return a|0}function s1(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;if((c[a+76>>2]|0)>-1)f=t0(a)|0;else f=0;t1(a);g=(c[a>>2]&1|0)!=0;if(!g){e=u1()|0;d=c[a+52>>2]|0;b=a+56|0;if(d|0)c[d+56>>2]=c[b>>2];b=c[b>>2]|0;if(b|0)c[b+52>>2]=d;if((c[e>>2]|0)==(a|0))c[e>>2]=b;v1()}b=w1(a)|0;b=kb[c[a+12>>2]&63](a)|0|b;d=c[a+92>>2]|0;if(d|0)D_(d);if(g){if(f|0)u0(a)}else D_(a);return b|0}function t1(a){a=a|0;var b=0;if(c[a+68>>2]|0){b=c[a+116>>2]|0;a=a+112|0;if(b|0)c[b+112>>2]=c[a>>2];a=c[a>>2]|0;if(!a)a=(y1()|0)+232|0;else a=a+116|0;c[a>>2]=b}return}function u1(){ta(187588);return 187596}function v1(){La(187588);return}function w1(a){a=a|0;var b=0,d=0;do if(a){if((c[a+76>>2]|0)<=-1){b=x1(a)|0;break}d=(t0(a)|0)==0;b=x1(a)|0;if(!d)u0(a)}else{if(!(c[15685]|0))b=0;else b=w1(c[15685]|0)|0;a=c[(u1()|0)>>2]|0;if(a)do{if((c[a+76>>2]|0)>-1)d=t0(a)|0;else d=0;if((c[a+20>>2]|0)>>>0>(c[a+28>>2]|0)>>>0)b=x1(a)|0|b;if(d|0)u0(a);a=c[a+56>>2]|0}while((a|0)!=0);v1()}while(0);return b|0}function x1(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;b=a+20|0;h=a+28|0;if((c[b>>2]|0)>>>0>(c[h>>2]|0)>>>0?(nb[c[a+36>>2]&63](a,0,0)|0,(c[b>>2]|0)==0):0)a=-1;else{d=a+4|0;e=c[d>>2]|0;f=a+8|0;g=c[f>>2]|0;if(e>>>0>>0)nb[c[a+40>>2]&63](a,e-g|0,1)|0;c[a+16>>2]=0;c[h>>2]=0;c[b>>2]=0;c[f>>2]=0;c[d>>2]=0;a=0}return a|0}function y1(){return e$()|0}function z1(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=l;l=l+64|0;j=k+40|0;h=k+24|0;g=k+16|0;f=k;i=k+56|0;if(A$(150498,a[d>>0]|0)|0){e=C_(1156)|0;if(!e)e=0;else{H3(e|0,0,124)|0;if(!(A$(d,43)|0))c[e>>2]=(a[d>>0]|0)==114?8:4;if(A$(d,101)|0){c[f>>2]=b;c[f+4>>2]=2;c[f+8>>2]=1;Ea(221,f|0)|0}if((a[d>>0]|0)==97){c[g>>2]=b;c[g+4>>2]=3;d=Ea(221,g|0)|0;if(!(d&1024)){c[h>>2]=b;c[h+4>>2]=4;c[h+8>>2]=d|1024;Ea(221,h|0)|0}f=c[e>>2]|128;c[e>>2]=f}else f=c[e>>2]|0;c[e+60>>2]=b;c[e+44>>2]=e+132;c[e+48>>2]=1024;d=e+75|0;a[d>>0]=-1;if((f&8|0)==0?(c[j>>2]=b,c[j+4>>2]=21523,c[j+8>>2]=i,(Ia(54,j|0)|0)==0):0)a[d>>0]=10;c[e+32>>2]=15;c[e+36>>2]=18;c[e+40>>2]=16;c[e+12>>2]=17;if(!(c[46875]|0))c[e+76>>2]=-1;A1(e)|0}}else{c[(O_()|0)>>2]=22;e=0}l=k;return e|0}function A1(a){a=a|0;var b=0,d=0;b=u1()|0;c[a+56>>2]=c[b>>2];d=c[b>>2]|0;if(d|0)c[d+52>>2]=a;c[b>>2]=a;v1();return a|0}function B1(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;j=l;l=l+16|0;g=j;a:do if(!e)b=0;else{do if(f|0){i=(b|0)==0?g:b;b=a[e>>0]|0;if(b<<24>>24>-1){c[i>>2]=b&255;b=b<<24>>24!=0&1;break a}h=(c[c[(C1()|0)+188>>2]>>2]|0)==0;b=a[e>>0]|0;if(h){c[i>>2]=b<<24>>24&57343;b=1;break a}b=(b&255)+-194|0;if(b>>>0<=50){g=e+1|0;h=c[62280+(b<<2)>>2]|0;if(f>>>0<4?h&-2147483648>>>((f*6|0)+-6|0)|0:0)break;b=d[g>>0]|0;f=b>>>3;if((f+-16|f+(h>>26))>>>0<=7){b=b+-128|h<<6;if((b|0)>=0){c[i>>2]=b;b=2;break a}g=(d[e+2>>0]|0)+-128|0;if(g>>>0<=63){g=g|b<<6;if((g|0)>=0){c[i>>2]=g;b=3;break a}b=(d[e+3>>0]|0)+-128|0;if(b>>>0<=63){c[i>>2]=b|g<<6;b=4;break a}}}}}while(0);c[(O_()|0)>>2]=84;b=-1}while(0);l=j;return b|0}function C1(){return e$()|0}function D1(a,b){a=a|0;b=b|0;var c=0;c=W_(a)|0;return ((E1(a,1,c,b)|0)!=(c|0))<<31>>31|0}function E1(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=O(d,b)|0;d=(b|0)==0?0:d;if((c[e+76>>2]|0)>-1){g=(t0(e)|0)==0;a=E0(a,f,e)|0;if(!g)u0(e)}else a=E0(a,f,e)|0;if((a|0)!=(f|0))d=(a>>>0)/(b>>>0)|0;return d|0}function F1(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0;m=l;l=l+16|0;j=m;k=e&255;a[j>>0]=k;g=b+16|0;h=c[g>>2]|0;if(!h)if(!(F0(b)|0)){h=c[g>>2]|0;i=4}else f=-1;else i=4;do if((i|0)==4){i=b+20|0;g=c[i>>2]|0;if(g>>>0>>0?(f=e&255,(f|0)!=(a[b+75>>0]|0)):0){c[i>>2]=g+1;a[g>>0]=k;break}if((nb[c[b+36>>2]&63](b,j,1)|0)==1)f=d[j>>0]|0;else f=-1}while(0);l=m;return f|0}function G1(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=l;l=l+16|0;f=e;c[f>>2]=a;c[f+4>>2]=b;c[f+8>>2]=d;d=N_(Fa(3,f|0)|0)|0;l=e;return d|0}function H1(){var a=0,b=0;b=l;l=l+16|0;a=Da(20,b|0)|0;l=b;return a|0}function I1(b,c){b=b|0;c=c|0;var d=0,e=0,f=0;d=b;e=150483;f=d+15|0;do{a[d>>0]=a[e>>0]|0;d=d+1|0;e=e+1|0}while((d|0)<(f|0));if(!c){a[b+14>>0]=48;a[b+15>>0]=0}else{e=c;d=14;while(1){d=d+1|0;if(e>>>0<10)break;else e=(e>>>0)/10|0}a[b+d>>0]=0;while(1){d=d+-1|0;a[b+d>>0]=(c>>>0)%10|0|48;if(c>>>0<10)break;else c=(c>>>0)/10|0}}return}function J1(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=l;l=l+48|0;f=g+40|0;e=g+8|0;d=g;c[d>>2]=a;c[d+4>>2]=b;d=Ca(197,d|0)|0;if((d|0)==-9?(c[e>>2]=a,c[e+4>>2]=1,(Ea(221,e|0)|0)>=0):0){I1(e,a);c[f>>2]=e;c[f+4>>2]=b;b=N_(Ba(195,f|0)|0)|0}else b=N_(d)|0;l=g;return b|0}function K1(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;c[e>>2]=a;c[e+4>>2]=b;b=N_(Ga(33,e|0)|0)|0;l=d;return b|0}function L1(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;i=l;l=l+48|0;h=i+32|0;g=i+16|0;e=i;if(A$(150498,a[d>>0]|0)|0){f=M1(d)|0;c[e>>2]=b;c[e+4>>2]=f|32768;c[e+8>>2]=438;e=N_(Ha(5,e|0)|0)|0;if((e|0)>=0){if(f&524288|0){c[g>>2]=e;c[g+4>>2]=2;c[g+8>>2]=1;Ea(221,g|0)|0}b=z1(e,d)|0;if(!b){c[h>>2]=e;Ja(6,h|0)|0;b=0}}else b=0}else{c[(O_()|0)>>2]=22;b=0}l=i;return b|0}function M1(b){b=b|0;var c=0,d=0,e=0;d=(A$(b,43)|0)==0;c=a[b>>0]|0;d=d?c<<24>>24!=114&1:2;e=(A$(b,120)|0)==0;d=e?d:d|128;b=(A$(b,101)|0)==0;b=b?d:d|524288;b=c<<24>>24==114?b:b|64;b=c<<24>>24==119?b|512:b;return (c<<24>>24==97?b|1024:b)|0}function N1(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=l;l=l+16|0;f=e;c[f>>2]=d;d=O1(a,b,f)|0;l=e;return d|0}function O1(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=l;l=l+128|0;e=g;f=e;h=f+124|0;do{c[f>>2]=0;f=f+4|0}while((f|0)<(h|0));c[e+32>>2]=38;c[e+44>>2]=a;c[e+76>>2]=-1;c[e+84>>2]=a;h=Q1(e,b,d)|0;l=g;return h|0}function P1(a,b,c){a=a|0;b=b|0;c=c|0;return Y1(a,b,c)|0}function Q1(b,e,f){b=b|0;e=e|0;f=f|0;var i=0,j=0,k=0,m=0,n=0,o=0.0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0;L=l;l=l+288|0;F=L+8|0;G=L+17|0;H=L;I=L+16|0;if((c[b+76>>2]|0)>-1)K=t0(b)|0;else K=0;i=a[e>>0]|0;a:do if(i<<24>>24){y=b+4|0;A=b+100|0;B=b+108|0;C=b+8|0;D=G+10|0;E=G+33|0;x=F+4|0;p=e;u=0;e=0;j=0;k=i;i=0;b:while(1){c:do if(!(B$(k&255)|0)){k=(a[p>>0]|0)==37;d:do if(k){m=p+1|0;n=a[m>>0]|0;e:do switch(n<<24>>24){case 37:break d;case 42:{w=0;m=p+2|0;break}default:{if(E$(n&255)|0?(a[p+2>>0]|0)==36:0){w=R1(f,(d[m>>0]|0)+-48|0)|0;m=p+3|0;break e}v=(c[f>>2]|0)+(4-1)&~(4-1);w=c[v>>2]|0;c[f>>2]=v+4}}while(0);if(!(E$(d[m>>0]|0)|0))s=0;else{k=0;do{k=(k*10|0)+-48+(d[m>>0]|0)|0;m=m+1|0}while((E$(d[m>>0]|0)|0)!=0);s=k}p=a[m>>0]|0;n=m+1|0;if(p<<24>>24==109){k=(w|0)!=0&1;j=0;m=n;p=a[n>>0]|0;i=0}else k=0;n=m+1|0;switch(p<<24>>24){case 104:{v=(a[n>>0]|0)==104;p=v?-2:-1;m=v?m+2|0:n;break}case 108:{v=(a[n>>0]|0)==108;p=v?3:1;m=v?m+2|0:n;break}case 106:{p=3;m=n;break}case 116:case 122:{p=1;m=n;break}case 76:{p=2;m=n;break}case 110:case 112:case 67:case 83:case 91:case 99:case 115:case 88:case 71:case 70:case 69:case 65:case 103:case 102:case 101:case 97:case 120:case 117:case 111:case 105:case 100:{p=0;break}default:{J=136;break b}}r=d[m>>0]|0;t=(r&47|0)==3;r=t?r|32:r;t=t?1:p;q=r&255;switch(q<<24>>24){case 99:{s=(s|0)>1?s:1;break}case 91:break;case 110:{S1(w,t,u,((u|0)<0)<<31>>31);n=u;break c}default:{G$(b,0);do{n=c[y>>2]|0;if(n>>>0<(c[A>>2]|0)>>>0){c[y>>2]=n+1;n=d[n>>0]|0}else n=I$(b)|0}while((B$(n)|0)!=0);if(!(c[A>>2]|0))n=c[y>>2]|0;else{n=(c[y>>2]|0)+-1|0;c[y>>2]=n}u=(c[B>>2]|0)+u+n-(c[C>>2]|0)|0}}G$(b,s);p=c[y>>2]|0;n=c[A>>2]|0;if(p>>>0>>0)c[y>>2]=p+1;else{if((I$(b)|0)<0){J=136;break b}n=c[A>>2]|0}if(n|0)c[y>>2]=(c[y>>2]|0)+-1;f:do switch(q<<24>>24){case 91:case 99:case 115:{v=(r|0)==99;g:do if((r|16|0)==115){H3(G|0,-1,257)|0;a[G>>0]=0;if((r|0)==115){a[E>>0]=0;a[D>>0]=0;a[D+1>>0]=0;a[D+2>>0]=0;a[D+3>>0]=0;a[D+4>>0]=0}}else{n=m+1|0;q=(a[n>>0]|0)==94;r=q&1;m=q?m+2|0:n;H3(G|0,r|0,257)|0;a[G>>0]=0;n=a[m>>0]|0;switch(n<<24>>24){case 45:{n=46;J=65;break}case 93:{n=94;J=65;break}default:{}}while(1){if((J|0)==65){J=0;a[G+n>>0]=r^1;n=m+1|0;m=n;n=a[n>>0]|0}h:do switch(n<<24>>24){case 0:{J=136;break b}case 93:break g;case 45:{q=m+1|0;n=a[q>>0]|0;switch(n<<24>>24){case 93:case 0:{n=45;break h}default:{}}m=a[m+-1>>0]|0;if((m&255)<(n&255)){p=(r^1)&255;m=m&255;do{m=m+1|0;a[G+m>>0]=p;n=a[q>>0]|0}while((m|0)<(n&255|0));m=q}else m=q;break}default:{}}while(0);n=(n&255)+1|0;J=65}}while(0);n=v?s+1|0:31;r=(t|0)==1;t=(k|0)!=0;i:do if(r){if(t){i=C_(n<<2)|0;if(!i){j=0;i=0;J=136;break b}}else i=w;c[F>>2]=0;c[x>>2]=0;q=n;j=0;j:while(1){p=(i|0)==0;do{k:while(1){n=c[y>>2]|0;if(n>>>0<(c[A>>2]|0)>>>0){c[y>>2]=n+1;n=d[n>>0]|0}else n=I$(b)|0;if(!(a[G+(n+1)>>0]|0))break j;a[I>>0]=n;switch(X$(H,I,1,F)|0){case -1:{j=0;J=136;break b}case -2:break;default:break k}}if(!p){c[i+(j<<2)>>2]=c[H>>2];j=j+1|0}}while(!(t&(j|0)==(q|0)));j=q<<1|1;n=F_(i,j<<2)|0;if(!n){j=0;J=136;break b}else{p=q;q=j;i=n;j=p}}if(!(T1(F)|0)){j=0;J=136;break b}else{q=j;j=0;p=i}}else{if(t){j=C_(n)|0;if(!j){j=0;i=0;J=136;break b}else{p=n;i=0}while(1){do{n=c[y>>2]|0;if(n>>>0<(c[A>>2]|0)>>>0){c[y>>2]=n+1;n=d[n>>0]|0}else n=I$(b)|0;if(!(a[G+(n+1)>>0]|0)){q=i;p=0;i=0;break i}a[j+i>>0]=n;i=i+1|0}while((i|0)!=(p|0));i=p<<1|1;n=F_(j,i)|0;if(!n){i=0;J=136;break b}else{q=p;p=i;j=n;i=q}}}if(!w)while(1){i=c[y>>2]|0;if(i>>>0<(c[A>>2]|0)>>>0){c[y>>2]=i+1;i=d[i>>0]|0}else i=I$(b)|0;if(!(a[G+(i+1)>>0]|0)){q=0;j=0;p=0;i=0;break i}}else j=0;while(1){i=c[y>>2]|0;if(i>>>0<(c[A>>2]|0)>>>0){c[y>>2]=i+1;i=d[i>>0]|0}else i=I$(b)|0;if(!(a[G+(i+1)>>0]|0)){q=j;j=w;p=0;i=0;break i}a[w+j>>0]=i;j=j+1|0}}while(0);if(!(c[A>>2]|0))n=c[y>>2]|0;else{n=(c[y>>2]|0)+-1|0;c[y>>2]=n}n=n-(c[C>>2]|0)+(c[B>>2]|0)|0;if(!n)break b;if(!((n|0)==(s|0)|v^1))break b;do if(t)if(r){c[w>>2]=p;break}else{c[w>>2]=j;break}while(0);if(!v){if(p|0)c[p+(q<<2)>>2]=0;if(!j){j=0;break f}a[j+q>>0]=0}break}case 120:case 88:case 112:{n=16;J=124;break}case 111:{n=8;J=124;break}case 117:case 100:{n=10;J=124;break}case 105:{n=0;J=124;break}case 71:case 103:case 70:case 102:case 69:case 101:case 65:case 97:{o=+U1(b,t,0);if((c[B>>2]|0)==((c[C>>2]|0)-(c[y>>2]|0)|0))break b;if(w)switch(t|0){case 0:{g[w>>2]=o;break f}case 1:{h[w>>3]=o;break f}case 2:{h[w>>3]=o;break f}default:break f}break}default:{}}while(0);do if((J|0)==124){J=0;n=H$(b,n,0,-1,-1)|0;if((c[B>>2]|0)==((c[C>>2]|0)-(c[y>>2]|0)|0))break b;if((w|0)!=0&(r|0)==112){c[w>>2]=n;break}else{S1(w,t,n,z);break}}while(0);e=e+((w|0)!=0&1)|0;n=(c[B>>2]|0)+u+(c[y>>2]|0)-(c[C>>2]|0)|0;break c}while(0);m=p+(k&1)|0;G$(b,0);k=c[y>>2]|0;if(k>>>0<(c[A>>2]|0)>>>0){c[y>>2]=k+1;k=d[k>>0]|0}else k=I$(b)|0;if((k|0)!=(d[m>>0]|0)){J=22;break b}n=u+1|0}else{m=p;while(1){k=m+1|0;if(!(B$(d[k>>0]|0)|0))break;else m=k}G$(b,0);do{k=c[y>>2]|0;if(k>>>0<(c[A>>2]|0)>>>0){c[y>>2]=k+1;k=d[k>>0]|0}else k=I$(b)|0}while((B$(k)|0)!=0);if(!(c[A>>2]|0))k=c[y>>2]|0;else{k=(c[y>>2]|0)+-1|0;c[y>>2]=k}n=(c[B>>2]|0)+u+k-(c[C>>2]|0)|0}while(0);p=m+1|0;k=a[p>>0]|0;if(!(k<<24>>24))break a;else u=n}if((J|0)==22){if(c[A>>2]|0)c[y>>2]=(c[y>>2]|0)+-1;if((e|0)!=0|(k|0)>-1)break;else{e=0;J=137}}else if((J|0)==136)if(!e){e=k;J=137}if((J|0)==137){k=e;e=-1}if(k){D_(j);D_(i)}}else e=0;while(0);if(K|0)u0(b);l=L;return e|0}function R1(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;e=l;l=l+16|0;d=e;c[d>>2]=c[a>>2];while(1){f=(c[d>>2]|0)+(4-1)&~(4-1);a=c[f>>2]|0;c[d>>2]=f+4;if(b>>>0>1)b=b+-1|0;else break}l=e;return a|0}function S1(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;a:do if(d|0)switch(e|0){case -2:{a[d>>0]=f;break a}case -1:{b[d>>1]=f;break a}case 0:{c[d>>2]=f;break a}case 1:{c[d>>2]=f;break a}case 3:{e=d;c[e>>2]=f;c[e+4>>2]=g;break a}default:break a}while(0);return}function T1(a){a=a|0;if(!a)a=1;else a=(c[a>>2]|0)==0&1;return a|0}function U1(b,e,f){b=b|0;e=e|0;f=f|0;var g=0.0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;switch(e|0){case 0:{l=-149;m=24;j=4;break}case 1:{l=-1074;m=53;j=4;break}case 2:{l=-1074;m=53;j=4;break}default:g=0.0}a:do if((j|0)==4){o=b+4|0;n=b+100|0;do{e=c[o>>2]|0;if(e>>>0<(c[n>>2]|0)>>>0){c[o>>2]=e+1;e=d[e>>0]|0}else e=I$(b)|0}while((B$(e)|0)!=0);b:do switch(e|0){case 43:case 45:{i=1-(((e|0)==45&1)<<1)|0;e=c[o>>2]|0;if(e>>>0<(c[n>>2]|0)>>>0){c[o>>2]=e+1;h=d[e>>0]|0;break b}else{h=I$(b)|0;break b}}default:{h=e;i=1}}while(0);e=0;do{if((h|32|0)!=(a[150502+e>>0]|0))break;do if(e>>>0<7){h=c[o>>2]|0;if(h>>>0<(c[n>>2]|0)>>>0){c[o>>2]=h+1;h=d[h>>0]|0;break}else{h=I$(b)|0;break}}while(0);e=e+1|0}while(e>>>0<8);c:do switch(e|0){case 8:break;case 3:{j=23;break}default:{k=(f|0)!=0;if(k&e>>>0>3)if((e|0)==8)break c;else{j=23;break c}d:do if(!e){e=0;do{if((h|32|0)!=(a[150511+e>>0]|0))break d;do if(e>>>0<2){h=c[o>>2]|0;if(h>>>0<(c[n>>2]|0)>>>0){c[o>>2]=h+1;h=d[h>>0]|0;break}else{h=I$(b)|0;break}}while(0);e=e+1|0}while(e>>>0<3)}while(0);switch(e|0){case 3:{e=c[o>>2]|0;if(e>>>0<(c[n>>2]|0)>>>0){c[o>>2]=e+1;e=d[e>>0]|0}else e=I$(b)|0;if((e|0)==40)e=1;else{if(!(c[n>>2]|0)){g=s;break a}c[o>>2]=(c[o>>2]|0)+-1;g=s;break a}while(1){h=c[o>>2]|0;if(h>>>0<(c[n>>2]|0)>>>0){c[o>>2]=h+1;h=d[h>>0]|0}else h=I$(b)|0;if(!((h+-48|0)>>>0<10|(h+-65|0)>>>0<26)?!((h|0)==95|(h+-97|0)>>>0<26):0)break;e=e+1|0}if((h|0)==41){g=s;break a}h=(c[n>>2]|0)==0;if(!h)c[o>>2]=(c[o>>2]|0)+-1;if(!k){c[(O_()|0)>>2]=22;G$(b,0);g=0.0;break a}if(!e){g=s;break a}while(1){e=e+-1|0;if(!h)c[o>>2]=(c[o>>2]|0)+-1;if(!e){g=s;break a}}}case 0:{if((h|0)==48){e=c[o>>2]|0;if(e>>>0<(c[n>>2]|0)>>>0){c[o>>2]=e+1;e=d[e>>0]|0}else e=I$(b)|0;if((e|32|0)==120){g=+V1(b,m,l,i,f);break a}if(!(c[n>>2]|0))e=48;else{c[o>>2]=(c[o>>2]|0)+-1;e=48}}else e=h;g=+W1(b,e,m,l,i,f);break a}default:{if(c[n>>2]|0)c[o>>2]=(c[o>>2]|0)+-1;c[(O_()|0)>>2]=22;G$(b,0);g=0.0;break a}}}}while(0);if((j|0)==23){h=(c[n>>2]|0)==0;if(!h)c[o>>2]=(c[o>>2]|0)+-1;if((f|0)!=0&e>>>0>3)do{if(!h)c[o>>2]=(c[o>>2]|0)+-1;e=e+-1|0}while(e>>>0>3)}g=+(i|0)*t}while(0);return +g}function V1(a,b,e,f,g){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;var h=0.0,i=0,j=0,k=0.0,l=0,m=0,n=0,o=0.0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;y=a+4|0;i=c[y>>2]|0;x=a+100|0;if(i>>>0<(c[x>>2]|0)>>>0){c[y>>2]=i+1;j=d[i>>0]|0;l=0}else{j=I$(a)|0;l=0}a:while(1){switch(j|0){case 46:{w=8;break a}case 48:break;default:{s=0;n=0;o=1.0;h=0.0;i=0;m=j;t=l;v=0;u=0;l=0;j=0;break a}}i=c[y>>2]|0;if(i>>>0<(c[x>>2]|0)>>>0){c[y>>2]=i+1;j=d[i>>0]|0;l=1;continue}else{j=I$(a)|0;l=1;continue}}if((w|0)==8){i=c[y>>2]|0;if(i>>>0<(c[x>>2]|0)>>>0){c[y>>2]=i+1;j=d[i>>0]|0}else j=I$(a)|0;if((j|0)==48){l=0;j=0;do{i=c[y>>2]|0;if(i>>>0<(c[x>>2]|0)>>>0){c[y>>2]=i+1;m=d[i>>0]|0}else m=I$(a)|0;l=s3(l|0,j|0,-1,-1)|0;j=z}while((m|0)==48);s=1;n=0;o=1.0;h=0.0;i=0;t=1;v=0;u=0}else{s=1;n=0;o=1.0;h=0.0;i=0;m=j;t=l;v=0;u=0;l=0;j=0}}while(1){q=m+-48|0;p=m|32;if(q>>>0>=10){r=(m|0)==46;if(!(r|(p+-97|0)>>>0<6))break;if(r)if(!s){s=1;k=o;r=t;l=u;j=v;q=u;p=v}else{m=46;break}else w=20}else w=20;if((w|0)==20){w=0;m=(m|0)>57?p+-87|0:q;do if(!((v|0)<0|(v|0)==0&u>>>0<8))if((v|0)<0|(v|0)==0&u>>>0<14){o=o*.0625;k=o;h=h+o*+(m|0);break}else{t=(n|0)!=0|(m|0)==0;n=t?n:1;k=o;h=t?h:h+o*.5;break}else{k=o;i=m+(i<<4)|0}while(0);q=s3(u|0,v|0,1,0)|0;r=1;p=z}m=c[y>>2]|0;if(m>>>0<(c[x>>2]|0)>>>0){c[y>>2]=m+1;o=k;m=d[m>>0]|0;t=r;v=p;u=q;continue}else{o=k;m=I$(a)|0;t=r;v=p;u=q;continue}}do if(!t){i=(c[x>>2]|0)==0;if(!i)c[y>>2]=(c[y>>2]|0)+-1;if(g){if(!i)c[y>>2]=(c[y>>2]|0)+-1;if(!((s|0)==0|i))c[y>>2]=(c[y>>2]|0)+-1}else G$(a,0);h=+(f|0)*0.0}else{p=(s|0)==0;q=p?u:l;p=p?v:j;if((v|0)<0|(v|0)==0&u>>>0<8){l=u;j=v;while(1){i=i<<4;w=l;l=s3(l|0,j|0,1,0)|0;if(!((j|0)<0|(j|0)==0&w>>>0<7)){n=i;break}else j=z}}else n=i;if((m|32|0)==112){j=X1(a,g)|0;i=z;if((j|0)==0&(i|0)==-2147483648){if(!g){G$(a,0);h=0.0;break}if(!(c[x>>2]|0)){j=0;i=0}else{c[y>>2]=(c[y>>2]|0)+-1;j=0;i=0}}}else if(!(c[x>>2]|0)){j=0;i=0}else{c[y>>2]=(c[y>>2]|0)+-1;j=0;i=0}l=A3(q|0,p|0,2)|0;l=s3(l|0,z|0,-32,-1)|0;l=s3(l|0,z|0,j|0,i|0)|0;i=z;if(!n){h=+(f|0)*0.0;break}y=0-e|0;g=((y|0)<0)<<31>>31;if((i|0)>(g|0)|(i|0)==(g|0)&l>>>0>y>>>0){c[(O_()|0)>>2]=34;h=+(f|0)*1797693134862315708145274.0e284*1797693134862315708145274.0e284;break}y=e+-106|0;g=((y|0)<0)<<31>>31;if((i|0)<(g|0)|(i|0)==(g|0)&l>>>0>>0){c[(O_()|0)>>2]=34;h=+(f|0)*2.2250738585072014e-308*2.2250738585072014e-308;break}if((n|0)>-1){j=n;do{y=!(h>=.5);j=j<<1|(y^1)&1;h=h+(y?h:h+-1.0);l=s3(l|0,i|0,-1,-1)|0;i=z}while((j|0)>-1);o=h;m=j}else{o=h;m=n}y=((b|0)<0)<<31>>31;e=t3(32,0,e|0,((e|0)<0)<<31>>31|0)|0;i=s3(e|0,z|0,l|0,i|0)|0;e=z;if((e|0)<(y|0)|(e|0)==(y|0)&i>>>0>>0)if((i|0)>0)w=59;else{j=0;i=84;w=61}else{i=b;w=59}if((w|0)==59)if((i|0)<53){j=i;i=84-i|0;w=61}else{k=0.0;h=+(f|0)}if((w|0)==61){h=+(f|0);k=+p$(+m$(1.0,i),h);i=j}f=(m&1|0)==0&(o!=0.0&(i|0)<32);h=(f?0.0:o)*h+(k+h*+((m+(f&1)|0)>>>0))-k;if(!(h!=0.0))c[(O_()|0)>>2]=34;h=+q$(h,l)}while(0);return +h}function W1(a,b,e,f,g,h){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0.0,j=0.0,k=0,m=0,n=0,o=0,p=0,q=0,r=0.0,s=0.0,t=0.0,u=0,v=0,w=0,x=0,y=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0.0;J=l;l=l+512|0;G=J;H=f+e|0;I=0-H|0;D=a+4|0;E=a+100|0;k=0;a:while(1){switch(b|0){case 46:{A=6;break a}case 48:break;default:{v=0;p=k;q=0;o=0;break a}}b=c[D>>2]|0;if(b>>>0<(c[E>>2]|0)>>>0){c[D>>2]=b+1;b=d[b>>0]|0;k=1;continue}else{b=I$(a)|0;k=1;continue}}if((A|0)==6){b=c[D>>2]|0;if(b>>>0<(c[E>>2]|0)>>>0){c[D>>2]=b+1;b=d[b>>0]|0}else b=I$(a)|0;if((b|0)==48){k=0;b=0;while(1){k=s3(k|0,b|0,-1,-1)|0;o=z;b=c[D>>2]|0;if(b>>>0<(c[E>>2]|0)>>>0){c[D>>2]=b+1;b=d[b>>0]|0}else b=I$(a)|0;if((b|0)==48)b=o;else{v=1;p=1;q=k;break}}}else{v=1;p=k;q=0;o=0}}c[G>>2]=0;n=b+-48|0;m=(b|0)==46;b:do if(m|n>>>0<10){C=G+496|0;w=0;k=0;u=0;x=v;y=p;A=n;p=0;n=0;c:while(1){do if(m)if(!x){x=1;q=p;o=n}else break c;else{p=s3(p|0,n|0,1,0)|0;n=z;v=(b|0)!=48;if((k|0)>=125){if(!v)break;c[C>>2]=c[C>>2]|1;break}m=G+(k<<2)|0;if(!w)b=A;else b=b+-48+((c[m>>2]|0)*10|0)|0;c[m>>2]=b;w=w+1|0;y=(w|0)==9;w=y?0:w;k=k+(y&1)|0;u=v?p:u;y=1}while(0);b=c[D>>2]|0;if(b>>>0<(c[E>>2]|0)>>>0){c[D>>2]=b+1;b=d[b>>0]|0}else b=I$(a)|0;A=b+-48|0;m=(b|0)==46;if(!(m|A>>>0<10)){v=x;m=y;A=29;break b}}b=w;m=(y|0)!=0;A=37}else{w=0;k=0;u=0;m=p;p=0;n=0;A=29}while(0);do if((A|0)==29){C=(v|0)==0;q=C?p:q;o=C?n:o;m=(m|0)!=0;if(!(m&(b|32|0)==101))if((b|0)>-1){b=w;A=37;break}else{b=w;A=39;break}m=X1(a,h)|0;b=z;if((m|0)==0&(b|0)==-2147483648){if(!h){G$(a,0);i=0.0;break}if(!(c[E>>2]|0)){m=0;b=0}else{c[D>>2]=(c[D>>2]|0)+-1;m=0;b=0}}y=s3(m|0,b|0,q|0,o|0)|0;b=w;o=z;A=41}while(0);if((A|0)==37)if(c[E>>2]|0){c[D>>2]=(c[D>>2]|0)+-1;if(m){y=q;A=41}else A=40}else A=39;if((A|0)==39)if(m){y=q;A=41}else A=40;do if((A|0)==40){c[(O_()|0)>>2]=22;G$(a,0);i=0.0}else if((A|0)==41){m=c[G>>2]|0;if(!m){i=+(g|0)*0.0;break}if(((n|0)<0|(n|0)==0&p>>>0<10)&((y|0)==(p|0)&(o|0)==(n|0))?(e|0)>30|(m>>>e|0)==0:0){i=+(g|0)*+(m>>>0);break}a=(f|0)/-2|0;E=((a|0)<0)<<31>>31;if((o|0)>(E|0)|(o|0)==(E|0)&y>>>0>a>>>0){c[(O_()|0)>>2]=34;i=+(g|0)*1797693134862315708145274.0e284*1797693134862315708145274.0e284;break}a=f+-106|0;E=((a|0)<0)<<31>>31;if((o|0)<(E|0)|(o|0)==(E|0)&y>>>0>>0){c[(O_()|0)>>2]=34;i=+(g|0)*2.2250738585072014e-308*2.2250738585072014e-308;break}if(b){if((b|0)<9){n=G+(k<<2)|0;m=c[n>>2]|0;while(1){m=m*10|0;if((b|0)>=8)break;else b=b+1|0}c[n>>2]=m}k=k+1|0}if((u|0)<9?(u|0)<=(y|0)&(y|0)<18:0){if((y|0)==9){i=+(g|0)*+((c[G>>2]|0)>>>0);break}if((y|0)<9){i=+(g|0)*+((c[G>>2]|0)>>>0)/+(c[63608+(8-y<<2)>>2]|0);break}a=e+27+(O(y,-3)|0)|0;b=c[G>>2]|0;if((a|0)>30|(b>>>a|0)==0){i=+(g|0)*+(b>>>0)*+(c[63608+(y+-10<<2)>>2]|0);break}}b=(y|0)%9|0;if(!b){b=0;n=0}else{u=(y|0)>-1?b:b+9|0;p=c[63608+(8-u<<2)>>2]|0;if(k){q=1e9/(p|0)|0;n=0;o=0;m=y;b=0;do{D=G+(b<<2)|0;E=c[D>>2]|0;a=((E>>>0)/(p>>>0)|0)+n|0;c[D>>2]=a;n=O(q,(E>>>0)%(p>>>0)|0)|0;a=(b|0)==(o|0)&(a|0)==0;m=a?m+-9|0:m;o=a?o+1&127:o;b=b+1|0}while((b|0)!=(k|0));if(!n)n=o;else{c[G+(k<<2)>>2]=n;n=o;k=k+1|0}}else{n=0;k=0;m=y}b=0;y=9-u+m|0}d:while(1){u=(y|0)<18;v=(y|0)==18;w=G+(n<<2)|0;while(1){if(!u){if(!v){m=y;break d}if((c[w>>2]|0)>>>0>=9007199){m=18;break d}}m=0;x=k;k=k+127|0;while(1){o=k&127;p=G+(o<<2)|0;k=A3(c[p>>2]|0,0,29)|0;k=s3(k|0,z|0,m|0,0)|0;m=z;if(m>>>0>0|(m|0)==0&k>>>0>1e9){q=w3(k|0,m|0,1e9,0)|0;k=x3(k|0,m|0,1e9,0)|0}else q=0;c[p>>2]=k;a=(o|0)==(n|0);x=(k|0)==0&(((o|0)!=(x+127&127|0)|a)^1)?o:x;if(a)break;else{m=q;k=o+-1|0}}b=b+-29|0;if(q|0)break;else k=x}n=n+127&127;k=x+127&127;m=G+((x+126&127)<<2)|0;if((n|0)==(x|0))c[m>>2]=c[m>>2]|c[G+(k<<2)>>2];else k=x;c[G+(n<<2)>>2]=q;y=y+9|0}e:while(1){w=k+1&127;x=G+((k+127&127)<<2)|0;while(1){q=(m|0)==18;v=(m|0)>27?9:1;y=n;while(1){p=0;while(1){n=p+y&127;if((n|0)==(k|0)){F=2;A=88;break}n=c[G+(n<<2)>>2]|0;o=c[63640+(p<<2)>>2]|0;if(n>>>0>>0){F=2;A=88;break}if(n>>>0>o>>>0)break;n=p+1|0;if((p|0)<1)p=n;else{F=n;A=88;break}}if((A|0)==88?(A=0,q&(F|0)==2):0){i=0.0;o=0;break e}b=v+b|0;if((y|0)==(k|0))y=k;else break}q=(1<>>v;p=0;n=y;o=y;do{D=G+(o<<2)|0;E=c[D>>2]|0;a=(E>>>v)+p|0;c[D>>2]=a;p=O(E&q,u)|0;a=(o|0)==(n|0)&(a|0)==0;m=a?m+-9|0:m;n=a?n+1&127:n;o=o+1&127}while((o|0)!=(k|0));if(!p)continue;if((w|0)!=(n|0))break;c[x>>2]=c[x>>2]|1}c[G+(k<<2)>>2]=p;k=w}do{n=o+y&127;m=k+1&127;if((n|0)==(k|0)){c[G+(m+-1<<2)>>2]=0;k=m}i=i*1.0e9+ +((c[G+(n<<2)>>2]|0)>>>0);o=o+1|0}while((o|0)!=2);t=+(g|0);j=i*t;o=b+53|0;p=o-f|0;q=(p|0)<(e|0);n=q?((p|0)>0?p:0):e;if((n|0)<53){K=+p$(+m$(1.0,105-n|0),j);r=+r$(j,+m$(1.0,53-n|0));s=K;i=r;r=K+(j-r)}else{s=0.0;i=0.0;r=j}m=y+2&127;if((m|0)!=(k|0)){m=c[G+(m<<2)>>2]|0;do if(m>>>0>=5e8){if((m|0)!=5e8){i=t*.75+i;break}if((y+3&127|0)==(k|0)){i=t*.5+i;break}else{i=t*.75+i;break}}else{if((m|0)==0?(y+3&127|0)==(k|0):0)break;i=t*.25+i}while(0);if((53-n|0)>1?!(+r$(i,1.0)!=0.0):0)j=i+1.0;else j=i}else j=i;i=r+j-s;do if((o&2147483647|0)>(-2-H|0)){H=!(+B(+i)>=9007199254740992.0);b=b+((H^1)&1)|0;i=H?i:i*.5;if((b+50|0)<=(I|0)?!(j!=0.0&(q&((n|0)!=(p|0)|H))):0)break;c[(O_()|0)>>2]=34}while(0);i=+q$(i,b)}while(0);l=J;return +i}function X1(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,i=0;h=a+4|0;e=c[h>>2]|0;i=a+100|0;if(e>>>0<(c[i>>2]|0)>>>0){c[h>>2]=e+1;e=d[e>>0]|0}else e=I$(a)|0;switch(e|0){case 43:case 45:{f=(e|0)==45&1;e=c[h>>2]|0;if(e>>>0<(c[i>>2]|0)>>>0){c[h>>2]=e+1;e=d[e>>0]|0}else e=I$(a)|0;if((b|0)!=0&(e+-48|0)>>>0>9?(c[i>>2]|0)!=0:0)c[h>>2]=(c[h>>2]|0)+-1;break}default:f=0}if((e+-48|0)>>>0>9)if(!(c[i>>2]|0)){f=-2147483648;e=0}else{c[h>>2]=(c[h>>2]|0)+-1;f=-2147483648;e=0}else{g=0;do{g=e+-48+(g*10|0)|0;e=c[h>>2]|0;if(e>>>0<(c[i>>2]|0)>>>0){c[h>>2]=e+1;e=d[e>>0]|0}else e=I$(a)|0}while((e+-48|0)>>>0<10&(g|0)<214748364);b=((g|0)<0)<<31>>31;if((e+-48|0)>>>0<10)do{b=r3(g|0,b|0,10,0)|0;g=z;e=s3(e|0,((e|0)<0)<<31>>31|0,-48,-1)|0;g=s3(e|0,z|0,b|0,g|0)|0;b=z;e=c[h>>2]|0;if(e>>>0<(c[i>>2]|0)>>>0){c[h>>2]=e+1;e=d[e>>0]|0}else e=I$(a)|0}while((e+-48|0)>>>0<10&((b|0)<21474836|(b|0)==21474836&g>>>0<2061584302));if((e+-48|0)>>>0<10)do{e=c[h>>2]|0;if(e>>>0<(c[i>>2]|0)>>>0){c[h>>2]=e+1;e=d[e>>0]|0}else e=I$(a)|0}while((e+-48|0)>>>0<10);if(c[i>>2]|0)c[h>>2]=(c[h>>2]|0)+-1;i=(f|0)!=0;e=t3(0,0,g|0,b|0)|0;f=i?z:b;e=i?e:g}z=f;return e|0}function Y1(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=a+84|0;g=c[e>>2]|0;h=d+256|0;f=D$(g,0,h)|0;f=(f|0)==0?h:f-g|0;d=f>>>0>>0?f:d;F3(b|0,g|0,d|0)|0;c[a+4>>2]=g+d;b=g+f|0;c[a+8>>2]=b;c[e>>2]=b;return d|0}function Z1(a,b,c){a=a|0;b=b|0;c=c|0;return _1(a,b,c)|0}function _1(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;if((c[a+76>>2]|0)>-1){e=(t0(a)|0)==0;b=$1(a,b,d)|0;if(!e)u0(a)}else b=$1(a,b,d)|0;return b|0}function $1(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;if((d|0)==1)b=b-(c[a+8>>2]|0)+(c[a+4>>2]|0)|0;e=a+20|0;f=a+28|0;if((c[e>>2]|0)>>>0>(c[f>>2]|0)>>>0?(nb[c[a+36>>2]&63](a,0,0)|0,(c[e>>2]|0)==0):0)b=-1;else{c[a+16>>2]=0;c[f>>2]=0;c[e>>2]=0;if((nb[c[a+40>>2]&63](a,b,d)|0)<0)b=-1;else{c[a+8>>2]=0;c[a+4>>2]=0;c[a>>2]=c[a>>2]&-17;b=0}}return b|0}function a2(b){b=b|0;var c=0,d=0,e=0,f=0,g=0;while(1){e=b+1|0;if(!(B$(a[b>>0]|0)|0))break;else b=e}d=a[b>>0]|0;switch(d<<24>>24|0){case 45:{b=1;f=5;break}case 43:{b=0;f=5;break}default:{g=0;c=b;b=d}}if((f|0)==5){g=b;c=e;b=a[e>>0]|0}if(!(E$(b<<24>>24)|0))b=0;else{b=0;do{b=(b*10|0)+48-(a[c>>0]|0)|0;c=c+1|0}while((E$(a[c>>0]|0)|0)!=0)}return (g|0?b:0-b|0)|0}function b2(a){a=a|0;return +(+c2(a,0))}function c2(a,b){a=a|0;b=b|0;return +(+d2(a,b,1))}function d2(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0,g=0,h=0,i=0;i=l;l=l+128|0;h=i;f=h;g=f+124|0;do{c[f>>2]=0;f=f+4|0}while((f|0)<(g|0));f=h+4|0;c[f>>2]=a;g=h+8|0;c[g>>2]=-1;c[h+44>>2]=a;c[h+76>>2]=-1;G$(h,0);e=+U1(h,d,1);d=(c[f>>2]|0)-(c[g>>2]|0)+(c[h+108>>2]|0)|0;if(b|0)c[b>>2]=d|0?a+d|0:a;l=i;return +e}function e2(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0;a:do if(!c)b=0;else{h=b;while(1){g=c>>>1;b=h+(O(g,d)|0)|0;f=lb[e&127](a,b)|0;if(!f)break a;if((c|0)==1){b=0;break a}f=(f|0)<0;c=f?g:c-g|0;if(!c){b=0;break}else h=f?h:b}}while(0);return b|0}function f2(a,c){a=a|0;c=c|0;var d=0,f=0,g=0;g=a+2|0;f=a+4|0;d=r3((e[c+2>>1]|0)<<16|(e[c>>1]|0)|0,e[c+4>>1]|0|0,(e[g>>1]|0)<<16|(e[a>>1]|0)|0,e[f>>1]|0|0)|0;c=s3(d|0,z|0,e[c+6>>1]|0|0,0)|0;d=z;b[a>>1]=c;a=z3(c|0,d|0,16)|0;b[g>>1]=a;b[f>>1]=d;z=d&65535;return c|0}function g2(){var a=0,b=0,d=0;b=183528;b=r3(c[b>>2]|0,c[b+4>>2]|0,1284865837,1481765933)|0;b=s3(b|0,z|0,1,0)|0;a=z;d=183528;c[d>>2]=b;c[d+4>>2]=a;a=z3(b|0,a|0,33)|0;return a|0}function h2(a){a=a|0;F3(190672,65740,6)|0;F3(65740,a|0,6)|0;return 190672}function i2(a){a=a|0;var c=0,d=0;c=l;l=l+16|0;d=c;b[d>>1]=13070;b[d+2>>1]=a;b[d+4>>1]=a>>>16;h2(d)|0;l=c;return}function j2(a){a=a|0;var b=0;b=f2(a,65746)|0;b=A3(b|0,z|0,4)|0;a=z|1072693248;c[j>>2]=b;c[j+4>>2]=a;return +(+h[j>>3]+-1.0)}function k2(){return +(+j2(65740))}function l2(a,b){a=a|0;b=b|0;if(!a)b=E_(1,24)|0;else H3(b|0,0,24)|0;return b|0}function m2(a){a=a|0;var b=0,d=0;b=c[a>>2]|0;if(b|0)do{D_(c[b>>2]|0);d=b;b=c[b+4>>2]|0;D_(d)}while((b|0)!=0);D_(a);return}function n2(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0;h=a+16|0;a:do if(!(c[h>>2]|0)){k=a+12|0;g=c[k>>2]|0;if(g>>>0>>0){do if(b)if(!d){c[h>>2]=1;b=0;break a}else{h=a+8|0;c[h>>2]=d;g=1024;b=d;break}else{g=f<<3;g=g>>>0>1024?g:1024;j=C_(8)|0;if(!j){c[h>>2]=1;b=0;break a}b=C_(g)|0;c[j>>2]=b;d=b;if(!b){D_(j);c[h>>2]=1;b=0;break a}c[j+4>>2]=0;h=a+4|0;i=c[h>>2]|0;if(i|0)c[i+4>>2]=j;if(!(c[a>>2]|0))c[a>>2]=j;c[h>>2]=j;h=a+8|0;c[h>>2]=d}while(0);c[k>>2]=g}else{h=a+8|0;b=c[h>>2]|0;d=b}d=d+f&3;d=((d|0)==0?0:4-d|0)+f|0;c[h>>2]=b+d;c[k>>2]=g-d;if(e)H3(b|0,0,d|0)|0}else b=0;while(0);return b|0}function o2(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;v=l;l=l+48|0;h=v;t=p2()|0;a:do if(!t)b=12;else{u=l2(0,0)|0;if(!u){q2(t);b=12;break}H3(h|0,0,36)|0;c[h>>2]=u;c[h+4>>2]=t;c[h+16>>2]=b;c[h+32>>2]=d;e=h+28|0;c[e>>2]=-1;b=r2(h)|0;b:do if(!b){g=h+20|0;r=c[g>>2]|0;c[a>>2]=r+-1;i=c[h+8>>2]|0;if((c[e>>2]|0)<(r|0)){r=E_(1,68)|0;if(r){q=(c[e>>2]|0)>>>31^1;c[r+60>>2]=q;c[r+64>>2]=0;c[r+28>>2]=c[g>>2];if((d&8|0)==0|(q|0)!=0){b=s2(0,t,i,r)|0;if(b|0){g=r;h=0;i=0;f=0;e=0;break}e=r+40|0;b=c[e>>2]|0;if((b|0)>0){b=C_((b<<2)+4|0)|0;if(!b){g=r;h=0;i=0;b=12;f=0;e=0;break}c[r+32>>2]=b;H3(b|0,-1,(c[e>>2]<<2)+4|0)|0;f=b;b=c[e>>2]|0}else f=0;q=E_(b<<1|1,4)|0;c[r+36>>2]=q;if(!q){g=r;h=0;i=0;b=12;f=0;e=0;break}b=E_(c[g>>2]|0,12)|0;if(!b){g=r;h=0;i=0;b=12;f=0;e=0;break}c[r+16>>2]=b;b=s2(u,t,i,r)|0;if(!b)b=f;else{g=r;h=0;i=0;f=0;e=0;break}}else b=0;p=h+24|0;b=t2(u,t,i,p,b)|0;if(!b){b=c[p>>2]|0;c[p>>2]=b+1;b=u2(u,0,0,b)|0;if((b|0)!=0?(s=v2(u,i,b)|0,(s|0)!=0):0){b=w2(u,t,s)|0;if(!b){o=C_(c[p>>2]<<2)|0;if(o){q=C_(c[p>>2]<<2)|0;if(q){b=c[p>>2]|0;if((b|0)>0)H3(o|0,0,b<<2|0)|0;x2(s,0,o,0)|0;f=c[p>>2]|0;if((f|0)>0){b=0;e=0;do{c[q+(e<<2)>>2]=b;n=o+(e<<2)|0;b=b+1+(c[n>>2]|0)|0;c[n>>2]=0;e=e+1|0}while((e|0)<(f|0));k=b}else k=0;m=E_(k+1|0,32)|0;if(m){c[r>>2]=m;n=r+4|0;c[n>>2]=k;b=x2(s,m,o,q)|0;if(!b){c[r+20>>2]=0;f=s+24|0;b=c[f>>2]|0;e=0;while(1){e=e+1|0;if((c[b>>2]|0)<=-1)break;else b=b+32|0}j=E_(e,32)|0;if(!j){g=r;h=o;i=q;b=12;f=o;e=q}else{c[r+8>>2]=j;f=c[f>>2]|0;e=c[f>>2]|0;if((e|0)>-1){b=0;do{c[j+(b<<5)+8>>2]=m+(c[q+(e<<2)>>2]<<5);c[j+(b<<5)+12>>2]=e;h=j+(b<<5)+16|0;c[h>>2]=0;i=f+12|0;g=c[i>>2]|0;if(g|0){e=0;do{w=e;e=e+1|0}while((c[g+(w<<2)>>2]|0)>-1);e=e<<2;g=C_(e)|0;c[h>>2]=g;if(!g){g=r;h=o;i=q;b=12;f=o;e=q;break b}F3(g|0,c[i>>2]|0,e|0)|0}c[j+(b<<5)+20>>2]=c[f+16>>2];b=b+1|0;f=f+32|0;e=c[f>>2]|0}while((e|0)>-1)}else b=0;c[j+(b<<5)+8>>2]=0;c[n>>2]=k;c[r+12>>2]=m+(c[q+(c[c[s+28>>2]>>2]<<2)>>2]<<5);c[r+52>>2]=c[p>>2];c[r+56>>2]=d;m2(u);q2(t);D_(o);D_(q);c[a+4>>2]=r;b=0;break a}}else{g=r;h=o;i=q;f=o;e=q}}else{g=r;h=o;i=q;b=12;f=o;e=q}}else{g=r;h=o;i=q;b=12;f=o;e=0}}else{g=r;h=o;i=0;b=12;f=0;e=0}}else{g=r;h=0;i=0;f=0;e=0}}else{g=r;h=0;i=0;b=12;f=0;e=0}}else{g=r;h=0;i=0;f=0;e=0}}else{g=r;h=0;i=0;b=12;f=0;e=0}}else{g=0;h=0;i=0;b=6;f=0;e=0}}else{g=0;h=0;i=0;f=0;e=0}while(0);m2(u);q2(t);if(h|0)D_(f);if(i|0)D_(e);c[a+4>>2]=g;y2(a)}while(0);l=v;return b|0}function p2(){var a=0,b=0;a=C_(20)|0;do if(a){b=C_(2048)|0;c[a+16>>2]=b;if(!b){D_(a);a=0;break}else{c[a>>2]=512;c[a+4>>2]=1024e3;c[a+8>>2]=128;c[a+12>>2]=0;break}}while(0);return a|0}function q2(a){a=a|0;D_(c[a+16>>2]|0);D_(a);return}function r2(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=l;l=l+16|0;p=u+4|0;q=u;r=c[b+32>>2]&1;s=b+16|0;e=c[s>>2]|0;t=c[b+4>>2]|0;d=C2(t,0)|0;a:do if(!d){m=(r|0)!=0;n=b+8|0;o=b+12|0;d=0;k=1;b:while(1){g=0;h=d;f=0;c:while(1){d=a[e>>0]|0;if(m){if(d<<24>>24==40)break;if((h|0)!=0&d<<24>>24==41)j=13;else j=14}else if(d<<24>>24==92)switch(a[e+1>>0]|0){case 40:break c;case 41:{j=13;break}default:j=14}else j=14;if((j|0)==13){j=0;i=u2(c[b>>2]|0,-1,-1,-1)|0;c[n>>2]=i;if(!i){d=12;break a}else i=f}else if((j|0)==14){j=0;d=R2(b,e)|0;if(d|0)break a;i=f;e=c[o>>2]|0}d:while(1){e:while(1){d=a[e>>0]|0;switch(d<<24>>24){case 42:case 92:break;default:{if(!m)break e;switch(d<<24>>24){case 123:case 63:case 43:break;default:break e}}}d=d<<24>>24==92;if(m&d)break;f=e+1|0;if(d)switch(a[f>>0]|0){case 123:case 63:case 43:break;default:break e}e=d?f:e;if((!m?(e|0)==((c[s>>2]|0)+1|0):0)?(a[e+-1>>0]|0)==94:0)break;if((a[e>>0]|0)==123){e=S2(e+1|0,r,p,q)|0;if(!e){j=28;break b}d=c[q>>2]|0;f=c[b>>2]|0;if(!d)d=u2(f,-1,-1,-1)|0;else j=36}else{c[p>>2]=0;c[q>>2]=-1;d=a[e>>0]|0;if(d<<24>>24==43){c[p>>2]=1;d=a[e>>0]|0}if(d<<24>>24==63){c[q>>2]=1;d=1}else d=-1;e=e+1|0;f=c[b>>2]|0;j=36}if((j|0)==36){j=0;d=M2(f,c[n>>2]|0,c[p>>2]|0,d,0)|0}c[n>>2]=d;if(!d){d=12;break a}}d=v2(c[b>>2]|0,g,c[n>>2]|0)|0;f=a[e>>0]|0;f:do if(m){if(f<<24>>24==124){j=40;break d}if((h|0)!=0&f<<24>>24==41|f<<24>>24==0)j=47;else{g=d;f=i;continue c}}else{switch(f<<24>>24){case 0:{j=47;break f}case 92:break;default:{g=d;f=i;continue c}}switch(a[e+1>>0]|0){case 124:case 41:break;default:{g=d;f=i;continue c}}d=N2(c[b>>2]|0,i,d)|0;if((a[e+1>>0]|0)==124){f=2;break d}if(!h){d=8;break a}e=e+2|0;f=92}while(0);if((j|0)==47){j=0;d=N2(c[b>>2]|0,i,d)|0;e=f<<24>>24==41?e+1|0:e}d=T2(b,d,D2(t)|0)|0;if(d|0)break a;d=f<<24>>24==0;f=(h|0)<1;if(f&d){j=50;break b}if(f|d){d=8;break a}g=E2(t)|0;h=h+-1|0;i=E2(t)|0}if((j|0)==40){f=1;d=N2(c[b>>2]|0,i,d)|0}g=0;e=e+f|0;f=d}d=B2(t,f)|0;if(d|0)break a;d=B2(t,g)|0;if(d|0)break a;d=C2(t,k)|0;if(d|0)break a;d=h+1|0;k=k+1|0;e=m?e+1|0:e+2|0}if((j|0)==28){d=10;break}else if((j|0)==50){c[b+20>>2]=k;d=0;break}}while(0);l=u;return d|0}function s2(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;x=A2(d)|0;y=(b|0)==0|(f|0)==0;if(!y){c[f+48>>2]=0;c[c[f+36>>2]>>2]=-1}g=f+28|0;z=C_((c[g>>2]<<3)+8|0)|0;do if(!z)g=12;else{c[z>>2]=-1;A=C_((c[g>>2]<<2)+4|0)|0;if(!A){D_(z);g=12;break}c[A>>2]=-1;B=C_((c[g>>2]<<3)+8|0)|0;if(!B){D_(z);D_(A);g=12;break}h=c[g>>2]|0;g=0;do{c[B+(g<<3)>>2]=-1;g=g+1|0}while(g>>>0<=h>>>0);B2(d,e)|0;g=C2(d,0)|0;a:do if((g|0)!=0|(A2(d)|0)<=(x|0)){e=z;n=0;h=0;m=0;l=-1}else{u=f+32|0;v=f+36|0;w=f+16|0;e=z;n=0;h=0;m=0;t=1;l=-1;s=0;while(1){b:do switch(D2(d)|0){case 6:{i=D2(d)|0;g=0;do{j=e+(g<<2)|0;g=g+1|0}while((c[j>>2]|0)>-1);c[j>>2]=i<<1|1;c[e+(g<<2)>>2]=-1;g=0;while(1)if((c[A+(g<<2)>>2]|0)>-1)g=g+1|0;else break;c[A+(g+-1<<2)>>2]=-1;g=0;j=t;i=s;break}case 0:{q=E2(d)|0;r=q+12|0;j=c[r>>2]|0;if((j|0)>-1){g=0;do{i=e+(g<<2)|0;g=g+1|0}while((c[i>>2]|0)>-1);c[i>>2]=j<<1;c[e+(g<<2)>>2]=-1;if(!y){g=0;while(1)if((c[A+(g<<2)>>2]|0)>-1)g=g+1|0;else break;c[(c[w>>2]|0)+(j*12|0)+8>>2]=0;if((g|0)>0){g=C_((g<<2)+4|0)|0;if(!g){g=12;j=t;i=s;break b}c[(c[w>>2]|0)+(j*12|0)+8>>2]=g;i=c[A>>2]|0;if((i|0)>-1){k=0;j=g;do{c[j>>2]=i;k=k+1|0;i=c[A+(k<<2)>>2]|0;j=g+(k<<2)|0}while((i|0)>-1);g=j}c[g>>2]=-1}}g=C2(d,c[r>>2]|0)|0;if(g|0){j=t;i=s;break b}g=C2(d,6)|0;if(g|0){j=t;i=s;break b}}c:do switch(c[q>>2]|0){case 0:{p=c[c[q+4>>2]>>2]|0;if((p|0)>-1|(p|0)==-4?(c[e>>2]|0)>-1:0){if(y){c[q+20>>2]=1;g=0}else{g=O2(b,q,m)|0;c[(c[u>>2]|0)+(m<<2)>>2]=s;if((l|0)>-1){j=c[v>>2]|0;i=0;while(1){k=j+(i<<2)|0;o=i+1|0;if((c[k>>2]|0)>-1)i=o;else break}c[k>>2]=m;c[j+(o<<2)>>2]=l;c[j+(i+2<<2)>>2]=-1;h=h+1|0;l=-1}P2(e,f,m)}c[e>>2]=-1;p=t+1|0;o=s;n=n+1|0;m=t}else{p=t;g=0;o=s}break}case 1:{j=c[q+4>>2]|0;k=c[j>>2]|0;j=c[j+4>>2]|0;g=B2(d,q)|0;if(!g){g=C2(d,5)|0;if(!g){g=B2(d,j)|0;if(!g){g=C2(d,0)|0;if(!g){i=k+20|0;g=C2(d,(c[i>>2]|0)+t|0)|0;if(!g){if((c[i>>2]|0)>0){i=(c[j+20>>2]|0)>0;g=i?t:-1;i=t+(i&1)|0}else{g=-1;i=t}g=C2(d,g)|0;if(!g){g=C2(d,4)|0;if(!g){g=B2(d,k)|0;if(!g){p=i;g=C2(d,0)|0;o=s}else{p=i;o=s}}else{p=i;o=s}}else{p=i;o=s}}else{p=t;o=s}}else{p=t;o=s}}else{p=t;o=s}}else{p=t;o=s}}else{p=t;o=s}break}case 2:{i=c[q+4>>2]|0;if(y){if((c[e>>2]|0)>-1)g=1;else g=(a[i+12>>0]&1)!=0;g=C2(d,g&1)|0;if(g|0){p=t;o=s;break c}}else{g=C2(d,m)|0;if(g|0){p=t;o=s;break c}g=C2(d,a[i+12>>0]&1)|0;if(g|0){p=t;o=s;break c}}g=B2(d,q)|0;if(!g){g=C2(d,1)|0;if(!g){g=B2(d,c[i>>2]|0)|0;if(!g){g=C2(d,0)|0;if(!g){if((c[e>>2]|0)<=-1?(a[i+12>>0]&1)==0:0){p=t;g=0;o=0;break c}if(y)g=0;else{g=O2(b,q,m)|0;c[(c[u>>2]|0)+(m<<2)>>2]=(a[i+12>>0]&1)==0?s:1;if((l|0)>-1){j=c[v>>2]|0;i=0;while(1){k=j+(i<<2)|0;o=i+1|0;if((c[k>>2]|0)>-1)i=o;else break}c[k>>2]=m;c[j+(o<<2)>>2]=l;c[j+(i+2<<2)>>2]=-1;h=h+1|0;l=-1}P2(e,f,m)}c[e>>2]=-1;p=t+1|0;o=0;n=n+1|0;m=t}else{p=t;o=s}}else{p=t;o=s}}else{p=t;o=s}}else{p=t;o=s}break}case 3:{j=c[q+4>>2]|0;k=c[j>>2]|0;j=c[j+4>>2]|0;i=(c[e>>2]|0)>-1;p=t+1|0;g=C2(d,i?p:t)|0;if(!g){g=C2(d,i?t:m)|0;if(!g){g=B2(d,e)|0;if(!g){g=C2(d,(c[e>>2]|0)>>>31^1)|0;if(!g){g=B2(d,q)|0;if(!g){g=B2(d,j)|0;if(!g){g=B2(d,k)|0;if(!g){g=C2(d,3)|0;if(!g){g=B2(d,j)|0;if(!g){g=C2(d,0)|0;if(g|0){p=t;o=s;break c}g=C2(d,2)|0;if(g|0){p=t;o=s;break c}g=B2(d,k)|0;if(g|0){p=t;o=s;break c}g=C2(d,0)|0;if(g|0){p=t;o=s;break c}if((c[e>>2]|0)>-1){if(y)g=0;else{g=O2(b,q,m)|0;c[(c[u>>2]|0)+(m<<2)>>2]=s;if((l|0)>-1){j=c[v>>2]|0;i=0;while(1){k=j+(i<<2)|0;o=i+1|0;if((c[k>>2]|0)>-1)i=o;else break}c[k>>2]=m;c[j+(o<<2)>>2]=l;c[j+(i+2<<2)>>2]=-1;h=h+1|0;l=-1}P2(e,f,m)}c[e>>2]=-1;n=n+1|0;m=t;i=p}else{g=0;i=t}t=(c[q+16>>2]|0)>0;p=t?i+2|0:i;o=s;m=t?i+1|0:m}else{p=t;o=s}}else{p=t;o=s}}else{p=t;o=s}}else{p=t;o=s}}else{p=t;o=s}}else{p=t;o=s}}else{p=t;o=s}}else{p=t;o=s}}else{p=t;o=s}break}default:{p=t;g=0;o=s}}while(0);j=c[r>>2]|0;if((j|0)>-1){i=0;do{k=A+(i<<2)|0;i=i+1|0}while((c[k>>2]|0)>-1);c[k>>2]=j;c[A+(i<<2)>>2]=-1;j=p;i=o}else{j=p;i=o}break}case 1:{g=E2(d)|0;if(y){i=c[(c[c[g+4>>2]>>2]|0)+20>>2]|0;c[g+20>>2]=(D2(d)|0)+i;i=0;l=-1}else{q=D2(d)|0;r=D2(d)|0;i=q;l=(q|0)==0?l:r}g=0;j=t;i=y?s:(i|0)==0&1;break}case 4:{i=D2(d)|0;j=D2(d)|0;g=0;m=(i|0)>-1?i:m;i=s;break}case 5:{g=E2(d)|0;if(y){j=c[g+4>>2]|0;c[g+20>>2]=(c[(c[j+4>>2]|0)+20>>2]|0)+(c[(c[j>>2]|0)+20>>2]|0);g=0;j=t;i=s}else{g=0;j=t;i=s}break}case 2:{while(1)if((c[e>>2]|0)>-1)e=e+4|0;else{g=0;j=t;i=s;break}break}case 3:{j=E2(d)|0;o=E2(d)|0;g=E2(d)|0;e=D2(d)|0;if(y){r=c[g+4>>2]|0;s=g+16|0;c[g+20>>2]=(c[(c[r>>2]|0)+20>>2]|0)+e+(c[(c[r+4>>2]|0)+20>>2]|0)+((c[s>>2]|0)>0?2:0);g=s}else g=g+16|0;e=E2(d)|0;i=D2(d)|0;k=D2(d)|0;if((c[g>>2]|0)>0){if(y)g=0;else{g=Q2(b,j,i)|0;c[(c[u>>2]|0)+(i<<2)>>2]=1;if(!g)g=Q2(b,o,k)|0;c[(c[u>>2]|0)+(k<<2)>>2]=1}n=n+2|0;j=t;i=1}else{g=0;j=t;i=1}break}default:{g=0;j=t;i=s}}while(0);if((g|0)!=0|(A2(d)|0)<=(x|0))break a;else{t=j;s=i}}}while(0);if(!y?(P2(e,f,m),(l|0)>-1):0){i=c[f+36>>2]|0;e=0;while(1){j=i+(e<<2)|0;k=e+1|0;if((c[j>>2]|0)>-1)e=k;else break}c[j>>2]=m;c[i+(k<<2)>>2]=l;c[i+(e+2<<2)>>2]=-1;h=h+1|0}c[f+48>>2]=n;c[f+40>>2]=n;c[f+44>>2]=h;D_(z);D_(A);D_(B)}while(0);return g|0}function t2(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;y=l;l=l+16|0;t=y+12|0;x=y+8|0;u=y+4|0;v=y;w=A2(b)|0;c[t>>2]=0;c[x>>2]=0;d=B2(b,d)|0;a:do if(!d){d=C2(b,0)|0;if(!d){b:do if((A2(b)|0)>(w|0)){g=0;i=0;j=0;c:while(1){q=D2(b)|0;r=E2(b)|0;d:do switch(q|0){case 0:{switch(c[r>>2]|0){case 0:{d=c[r+4>>2]|0;r=c[d>>2]|0;if(!((r|0)>-1|(r|0)==-4)){d=j;break d}r=d+8|0;d=(c[r>>2]|0)+j|0;c[r>>2]=d;if((d|0)<=(c[x>>2]|0)){d=j;break d}c[x>>2]=d;d=j;break d}case 3:{h=c[r+4>>2]|0;d=B2(b,c[h+4>>2]|0)|0;if(d|0)break b;d=C2(b,0)|0;if(d|0)break b;d=B2(b,c[h>>2]|0)|0;if(d|0)break b;break}case 1:{h=c[r+4>>2]|0;d=B2(b,c[h+4>>2]|0)|0;if(d|0)break b;d=C2(b,0)|0;if(d|0)break b;d=B2(b,c[h>>2]|0)|0;if(d|0)break b;break}case 2:{h=c[r+4>>2]|0;d=C2(b,j)|0;if(d|0)break b;d=B2(b,r)|0;if(d|0)break b;d=C2(b,1)|0;if(d|0)break b;d=B2(b,c[h>>2]|0)|0;if(d|0)break b;d=C2(b,0)|0;if(d|0)break b;if((c[h+4>>2]|0)<=1?(c[h+8>>2]|0)<=1:0)d=j;else{c[t>>2]=0;d=0}i=i+1|0;break d}default:{d=j;break d}}d=C2(b,0)|0;if(!d)d=j;else break b;break}case 1:{p=r+4|0;o=c[p>>2]|0;q=D2(b)|0;c[t>>2]=q;n=o+4|0;j=c[n>>2]|0;if((j|0)<=1)if((c[o+8>>2]|0)>1){c[u>>2]=0;if((j|0)>0)s=30;else{d=q;h=0;s=37}}else d=q;else{c[u>>2]=0;s=30}e:do if((s|0)==30){d=L2(a,b,c[o>>2]|0,(j|0)>1?1:2,t,f,v,x)|0;if(!d){h=0;k=q;m=1}else{s=34;break c}while(1){d=c[v>>2]|0;if(!h)h=d;else h=v2(a,h,d)|0;if(!h){d=12;s=34;break c}j=c[n>>2]|0;if((m|0)>=(j|0)){d=k;s=37;break e}k=c[t>>2]|0;m=m+1|0;d=L2(a,b,c[o>>2]|0,(m|0)<(j|0)?1:2,t,f,v,x)|0;if(d|0){s=34;break c}}}while(0);if((s|0)==37){s=0;n=o+8|0;k=c[n>>2]|0;if((k|0)==-1){k=c[t>>2]|0;d=L2(a,b,c[o>>2]|0,0,t,0,u,x)|0;if(d|0)break c;j=M2(a,c[u>>2]|0,0,-1,0)|0;c[u>>2]=j;if(!j){d=12;break c}else d=k}else if((j|0)<(k|0)){k=j;j=0;while(1){m=c[t>>2]|0;d=L2(a,b,c[o>>2]|0,0,t,0,v,x)|0;if(d|0){s=49;break c}if(!j){d=c[v>>2]|0;c[u>>2]=d}else{d=v2(a,c[v>>2]|0,j)|0;c[u>>2]=d}if(!d){d=12;s=49;break c}j=u2(a,-1,-1,-1)|0;if(!j){d=12;s=49;break c}j=N2(a,j,d)|0;c[u>>2]=j;if(!j){d=12;s=49;break c}k=k+1|0;if((k|0)>=(c[n>>2]|0)){d=m;break}}}else j=0;c[t>>2]=d;if(h){if(j){h=v2(a,h,j)|0;s=54}}else{h=j;s=54}if((s|0)==54){s=0;if(!h){d=12;break c}}c[p>>2]=c[h+4>>2];c[r>>2]=c[h>>2]}i=i+-1|0;h=d-q+g|0;if(!i){c[t>>2]=h;g=h;i=0;d=h}else g=h;break}default:d=j}while(0);if((A2(b)|0)>(w|0))j=d;else{d=0;break b}}break a}else{d=0;g=0}while(0);w=(c[e>>2]|0)+g|0;x=c[x>>2]|0;c[e>>2]=(x|0)>(w|0)?x:w}}while(0);l=y;return d|0}function u2(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=n2(a,0,0,1,20)|0;a=K2(a,0,f)|0;if(!a)a=0;else{c[f>>2]=b;c[f+4>>2]=d;c[f+8>>2]=e}return a|0}function v2(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;if(b){e=n2(a,0,0,1,8)|0;a=K2(a,1,e)|0;if(!a)d=0;else{c[e>>2]=b;c[e+4>>2]=d;c[a+16>>2]=(c[d+16>>2]|0)+(c[b+16>>2]|0);d=a}}return d|0}function w2(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;o=l;l=l+16|0;j=o+4|0;k=o;m=A2(b)|0;d=B2(b,d)|0;a:do if(!d){d=C2(b,0)|0;if(!d)if((A2(b)|0)>(m|0)){b:while(1){h=D2(b)|0;i=E2(b)|0;c:do switch(h|0){case 0:switch(c[i>>2]|0){case 0:{g=c[i+4>>2]|0;f=c[g>>2]|0;if((f|0)==-4){c[i+8>>2]=0;d=g+8|0;h=F2(a,c[d>>2]|0,0,1114111,0,0,-1)|0;c[i+24>>2]=h;if(!h){d=12;break a}h=F2(a,c[d>>2]|0,0,1114111,0,0,c[g+4>>2]|0)|0;c[i+28>>2]=h;if(!h){d=12;break a}else break c}d=i+8|0;if((f|0)<0){c[d>>2]=1;h=G2(a)|0;c[i+24>>2]=h;if(!h){d=12;break a}h=G2(a)|0;c[i+28>>2]=h;if(!h){d=12;break a}else break c}else{c[d>>2]=0;d=g+8|0;e=g+4|0;h=F2(a,c[d>>2]|0,f,c[e>>2]|0,0,0,-1)|0;c[i+24>>2]=h;if(!h){d=12;break a}h=F2(a,c[d>>2]|0,c[g>>2]|0,c[e>>2]|0,c[g+12>>2]|0,c[g+16>>2]|0,-1)|0;c[i+28>>2]=h;if(!h){d=12;break a}else break c}}case 3:{d=B2(b,i)|0;if(d|0)break a;d=C2(b,1)|0;if(d|0)break a;e=i+4|0;d=B2(b,c[(c[e>>2]|0)+4>>2]|0)|0;if(d|0)break a;d=C2(b,0)|0;if(d|0)break a;d=B2(b,c[c[e>>2]>>2]|0)|0;if(d|0)break a;d=C2(b,0)|0;if(!d)break c;else break a}case 1:{d=B2(b,i)|0;if(d|0)break a;d=C2(b,2)|0;if(d|0)break a;e=i+4|0;d=B2(b,c[(c[e>>2]|0)+4>>2]|0)|0;if(d|0)break a;d=C2(b,0)|0;if(d|0)break a;d=B2(b,c[c[e>>2]>>2]|0)|0;if(d|0)break a;d=C2(b,0)|0;if(!d)break c;else break a}case 2:{d=B2(b,i)|0;if(d|0)break a;d=C2(b,3)|0;if(d|0)break a;d=B2(b,c[c[i+4>>2]>>2]|0)|0;if(d|0)break a;d=C2(b,0)|0;if(!d)break c;else break a}default:break c}case 1:{d=c[i+4>>2]|0;e=c[d>>2]|0;f=d+4|0;g=c[f>>2]|0;if(!(c[e+8>>2]|0))h=(c[g+8>>2]|0)!=0;else h=1;c[i+8>>2]=h&1;h=H2(a,c[e+24>>2]|0,c[g+24>>2]|0,0,0)|0;c[i+24>>2]=h;if(!h){d=12;break a}h=H2(a,c[(c[d>>2]|0)+28>>2]|0,c[(c[f>>2]|0)+28>>2]|0,0,0)|0;c[i+28>>2]=h;if(!h){d=12;break a}break}case 3:{h=c[i+4>>2]|0;d=c[h>>2]|0;if(!(c[h+4>>2]|0))e=1;else e=(c[d+8>>2]|0)!=0&1;c[i+8>>2]=e;c[i+24>>2]=c[d+24>>2];c[i+28>>2]=c[d+28>>2];break}case 2:{g=c[i+4>>2]|0;d=c[g>>2]|0;e=d+8|0;if(!(c[e>>2]|0))f=0;else f=(c[(c[g+4>>2]|0)+8>>2]|0)!=0;c[i+8>>2]=f&1;if(c[e>>2]|0){d=I2(b,d,0,0,j)|0;if(d|0)break b;e=C_((c[j>>2]<<2)+4|0)|0;if(!e){d=12;break b}c[e>>2]=-1;c[k>>2]=0;d=I2(b,c[g>>2]|0,e,k,0)|0;if(d|0){n=45;break b}d=g+4|0;h=i+24|0;c[h>>2]=H2(a,c[(c[d>>2]|0)+24>>2]|0,c[(c[g>>2]|0)+24>>2]|0,e,c[k>>2]|0)|0;D_(e);if(!(c[h>>2]|0)){d=12;break b}else f=d}else{c[i+24>>2]=c[d+24>>2];f=g+4|0}d=c[f>>2]|0;if(c[d+8>>2]|0){d=I2(b,d,0,0,j)|0;if(d|0)break b;e=C_((c[j>>2]<<2)+4|0)|0;if(!e){d=12;break b}c[e>>2]=-1;c[k>>2]=0;d=I2(b,c[f>>2]|0,e,k,0)|0;if(d|0){n=52;break b}i=i+28|0;c[i>>2]=H2(a,c[(c[g>>2]|0)+28>>2]|0,c[(c[f>>2]|0)+28>>2]|0,e,c[k>>2]|0)|0;D_(e);if(!(c[i>>2]|0)){d=12;break b}}else c[i+28>>2]=c[d+28>>2];break}default:{}}while(0);if((A2(b)|0)<=(m|0)){d=0;break a}}if((n|0)==45)D_(e);else if((n|0)==52)D_(e)}else d=0}while(0);l=o;return d|0}function x2(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;a:while(1){switch(c[a>>2]|0){case 2:{a=c[a+4>>2]|0;if((c[a+8>>2]|0)==-1?(h=c[a>>2]|0,h=z2(c[h+28>>2]|0,c[h+24>>2]|0,b,d,e)|0,(h|0)!=0):0){a=h;break a}break}case 3:{f=c[a+4>>2]|0;a=x2(c[f>>2]|0,b,d,e)|0;if(a|0)break a;a=f+4|0;break}case 1:{f=c[a+4>>2]|0;g=f+4|0;a=z2(c[(c[f>>2]|0)+28>>2]|0,c[(c[g>>2]|0)+24>>2]|0,b,d,e)|0;if(a|0)break a;a=x2(c[f>>2]|0,b,d,e)|0;if(!a)a=g;else break a;break}default:{a=0;break a}}a=c[a>>2]|0}return a|0}function y2(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;h=c[a+4>>2]|0;if(h|0){e=h+4|0;a=c[h>>2]|0;if(c[e>>2]|0){d=0;do{if(c[a+(d<<5)+8>>2]|0){b=c[a+(d<<5)+16>>2]|0;if(b){D_(b);a=c[h>>2]|0}b=c[a+(d<<5)+28>>2]|0;if(b){D_(b);a=c[h>>2]|0}}d=d+1|0}while(d>>>0<(c[e>>2]|0)>>>0)}if(a|0)D_(a);d=h+8|0;a=c[d>>2]|0;if(a|0){if(c[a+8>>2]|0){while(1){b=c[a+16>>2]|0;if(b|0)D_(b);if(!(c[a+40>>2]|0))break;else a=a+32|0}a=c[d>>2]|0}D_(a)}f=h+16|0;a=c[f>>2]|0;if(a|0){g=h+28|0;b=c[g>>2]|0;if(b){e=0;do{d=c[a+(e*12|0)+8>>2]|0;if(d){D_(d);b=c[g>>2]|0;a=c[f>>2]|0}e=e+1|0}while(e>>>0>>0)}D_(a)}a=c[h+32>>2]|0;if(a|0)D_(a);a=c[h+20>>2]|0;if(a|0)D_(a);a=c[h+36>>2]|0;if(a|0)D_(a);D_(h)}return}function z2(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;g=c[a>>2]|0;h=(g|0)>-1;a:do if(!d)if(h){h=b+32|0;do{if((c[b>>2]|0)>-1?(y=e+(g<<2)|0,c[y>>2]=(c[y>>2]|0)+1,(c[h>>2]|0)>-1):0){g=h;do{y=e+(c[a>>2]<<2)|0;c[y>>2]=(c[y>>2]|0)+1;g=g+32|0}while((c[g>>2]|0)>-1)}a=a+32|0;g=c[a>>2]|0}while((g|0)>-1);g=0}else g=0;else if(h)while(1){h=c[b>>2]|0;b:do if((h|0)>-1){p=a+4|0;q=a+8|0;r=a+16|0;s=a+20|0;t=a+24|0;u=a+28|0;v=a+12|0;e=-1;g=b;while(1){o=h;while(1){if((o|0)!=(e|0))break;g=g+32|0;h=c[g>>2]|0;if((h|0)>-1)o=h;else break b}l=d+(c[f+(c[a>>2]<<2)>>2]<<5)|0;while(1){h=l+8|0;if(!(c[h>>2]|0))break;else l=l+32|0}c[l+40>>2]=0;c[l>>2]=c[p>>2];c[l+4>>2]=c[q>>2];c[h>>2]=d+(c[f+(o<<2)>>2]<<5);c[l+12>>2]=o;h=c[s>>2]|0;e=c[g+16>>2]|c[r>>2]|(h|0?4:0)|(c[t>>2]|0?8:0);i=l+20|0;c[i>>2]=e;j=c[u>>2]|0;if((j|0)>-1){c[i>>2]=e|256;h=j}c[l+24>>2]=h;e=c[t>>2]|0;if(!e)c[l+28>>2]=0;else{h=0;do{n=h;h=h+1|0}while((c[e+(n<<2)>>2]|0)!=0);h=C_(h<<2)|0;c[l+28>>2]=h;if(!h){g=12;break a}k=c[t>>2]|0;e=c[k>>2]|0;if(e){j=0;i=h;do{c[i>>2]=e;j=j+1|0;e=c[k+(j<<2)>>2]|0;i=h+(j<<2)|0}while((e|0)!=0);h=i}c[h>>2]=0}e=c[v>>2]|0;if(!e)h=0;else{h=0;while(1)if((c[e+(h<<2)>>2]|0)>-1)h=h+1|0;else break}k=g+12|0;i=c[k>>2]|0;if(!i)e=0;else{e=0;while(1)if((c[i+(e<<2)>>2]|0)>-1)e=e+1|0;else break}j=l+16|0;i=c[j>>2]|0;if(i|0)D_(i);c[j>>2]=0;h=e+h|0;if((h|0)>0){n=C_((h<<2)+4|0)|0;c[j>>2]=n;if(!n){g=12;break a}e=c[v>>2]|0;if((e|0)!=0?(w=c[e>>2]|0,(w|0)>-1):0){h=0;i=w;do{c[n+(h<<2)>>2]=i;h=h+1|0;i=c[e+(h<<2)>>2]|0}while((i|0)>-1);m=h}else m=0;j=c[k>>2]|0;if((j|0)!=0?(x=c[j>>2]|0,(x|0)>-1):0){k=(m|0)>0;h=m;i=0;l=x;do{c:do if(k){e=0;while(1){if((c[n+(e<<2)>>2]|0)==(l|0))break c;e=e+1|0;if((e|0)>=(m|0)){y=39;break}}}else y=39;while(0);if((y|0)==39){y=0;c[n+(h<<2)>>2]=l;h=h+1|0}i=i+1|0;l=c[j+(i<<2)>>2]|0}while((l|0)>-1)}else h=m;c[n+(h<<2)>>2]=-1}g=g+32|0;h=c[g>>2]|0;if((h|0)<=-1)break;else e=o}}while(0);a=a+32|0;if((c[a>>2]|0)<=-1){g=0;break}}else g=0;while(0);return g|0}function A2(a){a=a|0;return c[a+12>>2]|0}function B2(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+4|0;f=d;c[f>>2]=b;c[e>>2]=c[f>>2];b=J2(a,e)|0;l=d;return b|0}function C2(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+4|0;f=d;c[f>>2]=b;c[e>>2]=c[f>>2];b=J2(a,e)|0;l=d;return b|0}function D2(a){a=a|0;var b=0,d=0;b=c[a+16>>2]|0;d=a+12|0;a=(c[d>>2]|0)+-1|0;c[d>>2]=a;return c[b+(a<<2)>>2]|0}function E2(a){a=a|0;var b=0,d=0;b=c[a+16>>2]|0;d=a+12|0;a=(c[d>>2]|0)+-1|0;c[d>>2]=a;return c[b+(a<<2)>>2]|0}function F2(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;a=n2(a,0,0,1,64)|0;if(!a)a=0;else{c[a>>2]=b;c[a+4>>2]=d;c[a+8>>2]=e;c[a+20>>2]=f;c[a+24>>2]=g;c[a+28>>2]=h;c[a+32>>2]=-1;c[a+36>>2]=-1;c[a+40>>2]=-1}return a|0}function G2(a){a=a|0;a=n2(a,0,0,1,32)|0;if(!a)a=0;else{c[a>>2]=-1;c[a+4>>2]=-1;c[a+8>>2]=-1}return a|0}function H2(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=(e|0)==0;if(o)n=0;else{g=0;while(1)if((c[e+(g<<2)>>2]|0)>-1)g=g+1|0;else{n=g;break}}h=0;while(1)if((c[b+(h<<5)>>2]|0)>-1)h=h+1|0;else{g=0;break}while(1)if((c[d+(g<<5)>>2]|0)>-1)g=g+1|0;else break;g=n2(a,0,0,1,(g+h<<5)+32|0)|0;a:do if(!g)g=0;else{h=c[b>>2]|0;if((h|0)>-1){m=(n|0)>0;i=0;while(1){c[g+(i<<5)>>2]=h;c[g+(i<<5)+4>>2]=c[b+(i<<5)+4>>2];c[g+(i<<5)+8>>2]=c[b+(i<<5)+8>>2];c[g+(i<<5)+16>>2]=c[b+(i<<5)+16>>2]|f;c[g+(i<<5)+20>>2]=c[b+(i<<5)+20>>2];c[g+(i<<5)+24>>2]=c[b+(i<<5)+24>>2];c[g+(i<<5)+28>>2]=c[b+(i<<5)+28>>2];l=b+(i<<5)+12|0;j=c[l>>2]|0;h=(j|0)==0;if(o&h)h=0;else{if(h)k=0;else{h=0;while(1)if((c[j+(h<<2)>>2]|0)>-1)h=h+1|0;else{k=h;break}}h=n2(a,0,0,0,(k+n<<2)+4|0)|0;if(!h){g=0;break a}if((k|0)>0){l=c[l>>2]|0;j=0;do{c[h+(j<<2)>>2]=c[l+(j<<2)>>2];j=j+1|0}while((j|0)!=(k|0))}else k=0;if(m){j=0;do{c[h+(j+k<<2)>>2]=c[e+(j<<2)>>2];j=j+1|0}while((j|0)!=(n|0));j=n}else j=0;c[h+(j+k<<2)>>2]=-1}c[g+(i<<5)+12>>2]=h;i=i+1|0;h=c[b+(i<<5)>>2]|0;if((h|0)<=-1){n=i;break}}}else n=0;i=c[d>>2]|0;h=g+(n<<5)|0;if((i|0)>-1){m=0;l=n;do{c[h>>2]=i;c[g+(l<<5)+4>>2]=c[d+(m<<5)+4>>2];c[g+(l<<5)+8>>2]=c[d+(m<<5)+8>>2];c[g+(l<<5)+16>>2]=c[d+(m<<5)+16>>2];c[g+(l<<5)+20>>2]=c[d+(m<<5)+20>>2];c[g+(l<<5)+24>>2]=c[d+(m<<5)+24>>2];c[g+(l<<5)+28>>2]=c[d+(m<<5)+28>>2];j=d+(m<<5)+12|0;h=c[j>>2]|0;if(!h)h=0;else{i=0;while(1)if((c[h+(i<<2)>>2]|0)>-1)i=i+1|0;else break;h=n2(a,0,0,0,(i<<2)+4|0)|0;if(!h){g=0;break a}if((i|0)>0){k=c[j>>2]|0;j=0;do{c[h+(j<<2)>>2]=c[k+(j<<2)>>2];j=j+1|0}while((j|0)!=(i|0))}else i=0;c[h+(i<<2)>>2]=-1}c[g+(l<<5)+12>>2]=h;m=m+1|0;i=c[d+(m<<5)>>2]|0;l=m+n|0;h=g+(l<<5)|0}while((i|0)>-1)}c[h>>2]=-1}while(0);return g|0}function I2(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;o=A2(a)|0;p=(f|0)!=0;if(p)c[f>>2]=0;b=B2(a,b)|0;a:do if(!b){m=(d|0)==0;l=(e|0)==0;if((A2(a)|0)>(o|0))while(1){b=E2(a)|0;b:do switch(c[b>>2]|0){case 0:{b=c[b+4>>2]|0;switch(c[b>>2]|0){case -3:break;case -2:{if(l)break b;c[e>>2]=c[e>>2]|c[b+4>>2];break b}default:break b}h=c[b+4>>2]|0;if((h|0)>-1){c:do if(!m){b=0;while(1){i=d+(b<<2)|0;j=c[i>>2]|0;if((j|0)<=-1)break;if((j|0)==(h|0))break c;else b=b+1|0}c[i>>2]=h;c[d+(b+1<<2)>>2]=-1}while(0);if(p)c[f>>2]=(c[f>>2]|0)+1}break}case 3:{b=c[b+4>>2]|0;h=c[b>>2]|0;if(c[h+8>>2]|0){k=h;n=6;break b}b=c[b+4>>2]|0;if(c[b+8>>2]|0){k=b;n=6}break}case 1:{b=c[b+4>>2]|0;h=B2(a,c[b>>2]|0)|0;if(h|0){g=h;break a}k=c[b+4>>2]|0;n=6;break}case 2:{b=c[c[b+4>>2]>>2]|0;if(c[b+8>>2]|0){k=b;n=6}break}default:{}}while(0);if((n|0)==6?(n=0,g=B2(a,k)|0,g|0):0)break a;if((A2(a)|0)<=(o|0)){g=0;break a}}else g=0}else g=b;while(0);return g|0}function J2(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=l;l=l+16|0;g=k;d=a+12|0;e=c[d>>2]|0;j=c[a>>2]|0;if((e|0)>=(j|0)){d=c[a+4>>2]|0;if((j|0)<(d|0)?(f=(c[a+8>>2]|0)+j|0,f=(f|0)>(d|0)?d:f,h=a+16|0,i=F_(c[h>>2]|0,f<<2)|0,(i|0)!=0):0){c[a>>2]=f;c[h>>2]=i;c[g>>2]=c[b>>2];J2(a,g)|0;d=0}else d=12}else{c[(c[a+16>>2]|0)+(e<<2)>>2]=c[b>>2];c[d>>2]=(c[d>>2]|0)+1;d=0}l=k;return d|0}function K2(a,b,d){a=a|0;b=b|0;d=d|0;a=n2(a,0,0,1,32)|0;if((d|0)!=0&(a|0)!=0){c[a+4>>2]=d;c[a>>2]=b;c[a+8>>2]=-1;c[a+12>>2]=-1}else a=0;return a|0}function L2(b,d,e,f,g,h,i,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=A2(d)|0;B2(d,e)|0;e=C2(d,0)|0;a:do if(!e){q=(f&1|0)==0;p=(f&2|0)!=0;o=0;l=1;e=i;while(1){if((A2(d)|0)>(r|0))n=e;else{f=o;e=0;break a}b:while(1){c:while(1){switch(D2(d)|0){case 1:{i=7;break c}case 0:{e=E2(d)|0;switch(c[e>>2]|0){case 0:{i=9;break b}case 3:{i=19;break b}case 1:{i=26;break b}case 2:{i=33;break c}default:{}}break}default:{}}if((A2(d)|0)<=(r|0)){f=o;e=0;break a}}if((i|0)==7)e=E2(d)|0;else if((i|0)==33){f=c[e+4>>2]|0;e=B2(d,c[f>>2]|0)|0;if(e|0){f=o;break a}e=C2(d,0)|0;if(e|0){f=o;break a}e=M2(b,c[f>>2]|0,c[f+4>>2]|0,c[f+8>>2]|0,a[f+12>>0]&1)|0;c[n>>2]=e;if(!e){f=o;e=12;break a}e=c[e+4>>2]|0}if((A2(d)|0)>(r|0))n=e;else{f=o;e=0;break a}}if((i|0)==9){m=c[e+4>>2]|0;i=c[m+8>>2]|0;f=c[m>>2]|0;e=c[m+4>>2]|0;if(!((f|0)>-1|(f|0)==-4))if(q|(f|0)!=-3)if((f|0)==-3)if(p&(l|0)!=0){c[h+(e<<2)>>2]=1;f=-3;k=o;l=0}else{f=-3;k=o}else k=o;else{e=-1;f=-1;i=-1;k=o}else{i=(c[g>>2]|0)+i|0;k=o+1|0}e=u2(b,f,e,i)|0;c[n>>2]=e;if(!e)e=12;else{e=c[e+4>>2]|0;c[e+12>>2]=c[m+12>>2];c[e+16>>2]=c[m+16>>2];e=0}if((i|0)>(c[j>>2]|0)){c[j>>2]=i;f=n}else f=n}else if((i|0)==19){i=c[e+4>>2]|0;f=i+4|0;e=N2(b,c[i>>2]|0,c[f>>2]|0)|0;c[n>>2]=e;if(!e){f=o;e=12;break a}m=c[e+4>>2]|0;e=B2(d,c[f>>2]|0)|0;if(e|0){f=o;break a}e=C2(d,0)|0;if(e|0){f=o;break a}e=B2(d,m+4|0)|0;if(e|0){f=o;break a}e=C2(d,1)|0;if(e|0){f=o;break a}e=B2(d,c[i>>2]|0)|0;if(e|0){f=o;break a}k=o;f=m;e=C2(d,0)|0}else if((i|0)==26){m=c[e+4>>2]|0;i=m+4|0;e=v2(b,c[m>>2]|0,c[i>>2]|0)|0;c[n>>2]=e;if(!e){f=o;e=12;break a}f=c[e+4>>2]|0;c[f>>2]=0;k=f+4|0;c[k>>2]=0;e=B2(d,c[i>>2]|0)|0;if(e|0){f=o;break a}e=C2(d,0)|0;if(e|0){f=o;break a}e=B2(d,k)|0;if(e|0){f=o;break a}e=C2(d,1)|0;if(e|0){f=o;break a}e=B2(d,c[m>>2]|0)|0;if(e|0){f=o;break a}k=o;e=C2(d,0)|0}if(!e){o=k;e=f}else{f=k;break}}}else f=0;while(0);c[g>>2]=(c[g>>2]|0)+f;return e|0}function M2(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0;h=n2(b,0,0,1,16)|0;b=K2(b,2,h)|0;if(!b)b=0;else{c[h>>2]=d;c[h+4>>2]=e;c[h+8>>2]=f;h=h+12|0;a[h>>0]=a[h>>0]&-2|g&1;c[b+16>>2]=c[d+16>>2]}return b|0}function N2(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;if(b){e=n2(a,0,0,1,8)|0;a=K2(a,3,e)|0;if((d|0)!=0&(a|0)!=0){c[e>>2]=b;c[e+4>>2]=d;c[a+16>>2]=(c[d+16>>2]|0)+(c[b+16>>2]|0);d=a}else d=0}return d|0}function O2(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=n2(a,0,0,0,8)|0;if(((e|0)!=0?(d=u2(a,-3,d,-1)|0,c[e>>2]=d,(d|0)!=0):0)?(f=n2(a,0,0,0,32)|0,c[e+4>>2]=f,(f|0)!=0):0){a=b+4|0;c[f+4>>2]=c[a>>2];c[f>>2]=c[b>>2];c[f+8>>2]=-1;c[f+12>>2]=-1;f=f+16|0;c[f>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;c[a>>2]=e;c[b>>2]=1;a=0}else a=12;return a|0}function P2(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;f=c[a>>2]|0;if((f|0)>-1){g=c[b+16>>2]|0;e=0;b=f;do{f=b>>>1;c[((b&1|0)==0?g+(f*12|0)|0:g+(f*12|0)+4|0)>>2]=d;e=e+1|0;b=c[a+(e<<2)>>2]|0}while((b|0)>-1)}c[a>>2]=-1;return}function Q2(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=n2(a,0,0,0,8)|0;if(((e|0)!=0?(d=u2(a,-3,d,-1)|0,c[e+4>>2]=d,(d|0)!=0):0)?(f=n2(a,0,0,0,32)|0,c[e>>2]=f,(f|0)!=0):0){a=b+4|0;c[f+4>>2]=c[a>>2];c[f>>2]=c[b>>2];c[f+8>>2]=-1;c[f+12>>2]=-1;f=f+16|0;c[f>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;c[a>>2]=e;c[b>>2]=1;a=0}else a=12;return a|0}function R2(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;m=l;l=l+16|0;j=m;i=b+32|0;h=c[i>>2]|0;g=h&1;a:do switch(a[d>>0]|0){case 91:{e=V2(b,d+1|0)|0;break}case 92:{e=d+1|0;f=W2(e)|0;if(f|0){e=R2(b,f)|0;c[b+12>>2]=d+2;break a}f=a[e>>0]|0;switch(f|0){case 0:{e=5;break a}case 98:{f=u2(c[b>>2]|0,-2,64,-1)|0;break}case 66:{f=u2(c[b>>2]|0,-2,128,-1)|0;break}case 60:{f=u2(c[b>>2]|0,-2,16,-1)|0;break}case 62:{f=u2(c[b>>2]|0,-2,32,-1)|0;break}case 120:{h=d+2|0;i=(a[h>>0]|0)==123;g=i?8:2;h=i?d+3|0:h;e=0;f=0;do{d=X2(a[h+e>>0]|0)|0;if((d|0)<0)break;f=d+(f<<4)|0;e=e+1|0}while((f|0)<1114112&(e|0)<(g|0));e=h+e|0;if(i){if((a[e>>0]|0)!=125){e=9;break a}e=e+1|0}j=c[b>>2]|0;i=b+24|0;k=c[i>>2]|0;c[i>>2]=k+1;f=u2(j,f,f,k)|0;e=e+-1|0;break}case 63:case 43:case 123:if(!g){e=13;break a}else{k=37;break a}case 124:{if(g|0){k=37;break a}e=u2(c[b>>2]|0,-1,-1,-1)|0;k=45;break a}default:{if(!((g|0)==0&(f+-49|0)>>>0<9)){k=37;break a}j=f+-48|0;k=c[b>>2]|0;i=b+24|0;f=c[i>>2]|0;c[i>>2]=f+1;f=u2(k,-4,j,f)|0;k=b+28|0;i=c[k>>2]|0;c[k>>2]=(j|0)<(i|0)?i:j}}d=e+1|0;e=f;k=45;break}case 46:{e=c[b>>2]|0;g=b+24|0;f=c[g>>2]|0;c[g>>2]=f+1;if(h&4){f=u2(e,0,9,f)|0;k=c[b>>2]|0;e=c[g>>2]|0;c[g>>2]=e+1;e=u2(k,11,1114111,e)|0;if((f|0)!=0&(e|0)!=0)e=N2(c[b>>2]|0,f,e)|0;else e=0}else e=u2(e,0,1114111,f)|0;d=d+1|0;k=45;break}case 94:{if((g|0)==0?(c[b+16>>2]|0)!=(d|0):0){e=d;k=37;break a}d=d+1|0;e=u2(c[b>>2]|0,-2,1,-1)|0;k=45;break}case 36:{e=d+1|0;if((g|0)==0?a[e>>0]|0:0){e=d;k=37;break a}d=e;e=u2(c[b>>2]|0,-2,2,-1)|0;k=45;break}case 63:case 43:case 123:case 42:{if(!g){e=d;k=37}else e=13;break}case 124:{if(!g){e=d;k=37}else k=36;break}case 0:{k=36;break}default:{e=d;k=37}}while(0);if((k|0)==36){e=u2(c[b>>2]|0,-1,-1,-1)|0;k=45}else if((k|0)==37){h=B1(j,e,-1)|0;if((h|0)<0)e=2;else{do if(c[i>>2]&2){if((m0(c[j>>2]|0)|0)==0?(l0(c[j>>2]|0)|0)==0:0){k=43;break}i=c[b>>2]|0;n=R$(c[j>>2]|0)|0;g=R$(c[j>>2]|0)|0;f=b+24|0;g=u2(i,n,g,c[f>>2]|0)|0;n=c[b>>2]|0;i=o0(c[j>>2]|0)|0;d=o0(c[j>>2]|0)|0;d=u2(n,i,d,c[f>>2]|0)|0;if((g|0)!=0&(d|0)!=0)g=N2(c[b>>2]|0,g,d)|0;else g=0}else k=43;while(0);if((k|0)==43){g=c[j>>2]|0;f=b+24|0;g=u2(c[b>>2]|0,g,g,c[f>>2]|0)|0}c[f>>2]=(c[f>>2]|0)+1;d=e+h|0;e=g;k=45}}if((k|0)==45)if(!e)e=12;else{c[b+8>>2]=e;c[b+12>>2]=d;e=0}l=m;return e|0}function S2(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;j=l;l=l+16|0;i=j+4|0;g=j;b=U2(b,i)|0;if((a[b>>0]|0)==44){b=U2(b+1|0,g)|0;h=c[g>>2]|0;g=c[i>>2]|0}else{i=c[i>>2]|0;c[g>>2]=i;h=i;g=i}do if(!(g>>>0>255|((h|0)>255|(h|0)>-1&(h|0)<(g|0)))){if(!d)if((a[b>>0]|0)==92)b=b+1|0;else{b=0;break}if((a[b>>0]|0)==125){c[e>>2]=g;c[f>>2]=h;b=b+1|0}else b=0}else b=0;while(0);l=j;return b|0}function T2(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;if((c[b+12>>2]|0)>-1){e=u2(c[a>>2]|0,-1,-1,-1)|0;if((e|0)!=0?(f=v2(c[a>>2]|0,e,b)|0,(f|0)!=0):0){e=c[b+16>>2]|0;c[f+16>>2]=e;g=6}else e=12}else{f=b;e=c[b+16>>2]|0;g=6}if((g|0)==6){c[f+12>>2]=d;c[f+16>>2]=e+1;c[a+8>>2]=f;e=0}return e|0}function U2(b,d){b=b|0;d=d|0;var e=0;c[d>>2]=-1;a:do if(E$(a[b>>0]|0)|0){c[d>>2]=0;e=0;do{c[d>>2]=(e*10|0)+-48+(a[b>>0]|0);b=b+1|0;if(!(E$(a[b>>0]|0)|0))break a;e=c[d>>2]|0}while((e|0)<=255)}while(0);return b|0}function V2(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=l;l=l+288|0;e=s+264|0;g=s;c[e>>2]=c[b>>2];h=e+8|0;c[h>>2]=0;c[e+12>>2]=32;p=C_(128)|0;r=e+4|0;c[r>>2]=p;if(!p)d=12;else{f=g+4|0;c[f>>2]=0;p=(a[d>>0]|0)==94;c[g>>2]=p&1;d=Y2(b,p?d+1|0:d,e,g)|0;a:do if(!d){p=(c[g>>2]|0)==0;if(!p){_0(c[r>>2]|0,c[h>>2]|0,4,109);d=_2(e)|0;if(!d){d=12;e=0;break}c[d>>2]=1114112;c[d+4>>2]=1114112;c[d+8>>2]=-1;d=c[f>>2]|0;if(d){e=d<<2;f=n2(c[b>>2]|0,0,0,0,e+4|0)|0;if(!f){d=12;e=0;break}F3(f|0,g+8|0,e|0)|0;c[f+(d<<2)>>2]=0}else f=0}else f=0;m=c[h>>2]|0;if((m|0)>0){n=c[r>>2]|0;o=b+24|0;e=0;d=0;k=0;while(1){j=c[n+(k<<2)>>2]|0;g=c[j>>2]|0;h=j+4|0;i=c[h>>2]|0;do if(!p)if((g|0)>(d|0)){c[j>>2]=d;c[h>>2]=g+-1;d=i+1|0;q=14;break}else{j=i+1|0;d=(j|0)>=(d|0)?j:d;break}else q=14;while(0);if((q|0)==14){q=0;c[j+8>>2]=c[o>>2];c[j+16>>2]=f;j=K2(c[b>>2]|0,0,j)|0;e=N2(c[b>>2]|0,e,j)|0;if(!e){d=12;e=0;break a}}k=k+1|0;if((k|0)>=(m|0)){d=0;break}}}else{d=0;e=0}}else e=0;while(0);D_(c[r>>2]|0);r=b+24|0;c[r>>2]=(c[r>>2]|0)+1;c[b+8>>2]=e}l=s;return d|0}function W2(b){b=b|0;var d=0;d=a[b>>0]|0;b=0;while(1){if((a[63648+(b<<3)>>0]|0)==d<<24>>24)break;b=b+1|0;if((b|0)==12){b=12;break}}return c[63648+(b<<3)+4>>2]|0}function X2(a){a=a|0;var b=0;b=a+-48|0;if(b>>>0<10)return b|0;else{b=a|32;return ((b+-97|0)>>>0<6?b+-87|0:-1)|0}return 0}function Y2(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=l;l=l+32|0;o=t;q=t+4|0;i=B1(o,d,-1)|0;g=a[d>>0]|0;a:do if((i|0)>=1){r=f+4|0;n=b+32|0;h=d;j=i;b:while(1){i=(h|0)==(d|0);if(!(i|g<<24>>24!=93)){s=5;break}c:do if(!(i|g<<24>>24!=45)){switch(a[h+1>>0]|0){case 93:break c;case 45:break;default:{g=11;break a}}if((a[h+2>>0]|0)==93){g=11;break a}}while(0);d:do if(g<<24>>24==91){switch(a[h+1>>0]|0){case 61:case 46:{g=3;break a}case 58:break;default:{s=17;break d}}i=h+2|0;g=0;e:while(1){switch(a[i+g>>0]|0){case 0:{s=16;break b}case 58:break e;default:{}}if((g|0)<13)g=g+1|0;else{s=16;break b}}F3(q|0,i|0,g|0)|0;a[q+g>>0]=0;j=H0(q)|0;if(!j){s=16;break b}h=i+(g+2)|0;if((a[i+(g+1)>>0]|0)!=93){s=16;break b}if(!(c[f>>2]|0)){g=1114111;m=0;k=1;s=25}else{g=c[r>>2]|0;if((g|0)>63){g=12;break a}c[r>>2]=g+1;c[f+8+(g<<2)>>2]=j}}else s=17;while(0);if((s|0)==17){s=0;i=c[o>>2]|0;h=h+j|0;if((a[h>>0]|0)==45?(p=h+1|0,(a[p>>0]|0)!=93):0){h=B1(o,p,-1)|0;g=c[o>>2]|0;if((h|0)<1|(i|0)>(g|0)){g=11;break a}j=0;m=i;h=p+h|0;k=0;s=25}else{j=0;g=i;m=i;k=0;s=25}}if((s|0)==25){s=0;i=_2(e)|0;if(!i){g=12;break a}c[i>>2]=m;c[i+4>>2]=g;c[i+12>>2]=j;c[i+8>>2]=-1;if(!(k|(c[n>>2]&2|0)==0)?($2(e,m,g)|0)!=0:0){g=12;break a}}j=B1(o,h,-1)|0;g=a[h>>0]|0;if((j|0)<1){s=3;break a}}if((s|0)==5){c[b+12>>2]=h+1;g=0;break}else if((s|0)==16){g=4;break}}else s=3;while(0);if((s|0)==3)g=g<<24>>24?2:7;l=t;return g|0}function Z2(a,b){a=a|0;b=b|0;return (c[c[a>>2]>>2]|0)-(c[c[b>>2]>>2]|0)|0}function _2(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0;h=a+8|0;d=c[h>>2]|0;e=a+12|0;f=c[e>>2]|0;if((d|0)>=(f|0))if((f|0)<=32767?(c[e>>2]=f<<1,g=a+4|0,b=F_(c[g>>2]|0,f<<3)|0,(b|0)!=0):0){c[g>>2]=b;d=c[h>>2]|0;i=6}else b=0;else{b=c[a+4>>2]|0;i=6}if((i|0)==6){c[h>>2]=d+1;i=n2(c[a>>2]|0,0,0,1,20)|0;c[b+(d<<2)>>2]=i;b=i}return b|0}function $2(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;a:do if((b|0)>(d|0))b=0;else while(1){b:do if(!(l0(b)|0)){if(!(m0(b)|0)){b=b+1|0;break}f=o0(b)|0;e=f;while(1){g=b+1|0;e=e+1|0;if((b|0)>=(d|0)){h=f;b=g;g=12;break b}if((o0(g)|0)==(e|0))b=g;else{h=f;b=g;g=12;break}}}else{f=R$(b)|0;e=f;while(1){g=b+1|0;e=e+1|0;if((b|0)>=(d|0)){h=f;b=g;g=12;break b}if((R$(g)|0)==(e|0))b=g;else{h=f;b=g;g=12;break}}}while(0);if((g|0)==12){g=0;f=_2(a)|0;if(!f){b=-1;break a}c[f>>2]=h;c[f+4>>2]=e+-1;c[f+8>>2]=-1}if((b|0)>(d|0)){b=0;break}}while(0);return b|0}function a3(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+16|0;k=n;i=c[a+4>>2]|0;j=i+56|0;h=(c[j>>2]&8|0)==0?d:0;a=c[i+40>>2]|0;if((a|0)>0&(h|0)!=0){a=C_(a<<2)|0;if(!a)a=12;else{g=a;d=a;m=3}}else{g=0;d=0;m=3}if((m|0)==3){if(!(c[i+60>>2]|0))a=c3(i,b,g,f,k)|0;else a=b3(i,b,g,f,k)|0;if(!a)d3(h,e,c[j>>2]|0,i,g,c[k>>2]|0);if(g)D_(d)}l=n;return a|0}function b3(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0;V=l;l=l+16|0;T=V;c[T>>2]=0;o=e&1;R=e&2;S=a+56|0;n=c[S>>2]&4;U=l2(0,0)|0;a:do if(U){p=n2(U,0,0,0,32)|0;if(!p){m2(U);e=12;break}c[p+24>>2]=0;c[p+28>>2]=0;Q=a+40|0;e=c[Q>>2]|0;if(e){e=C_(e<<2)|0;if(!e){m=0;k=0;j=e;e=12;i=0;h=0;g=0}else{j=e;i=e;C=6}}else{j=0;i=0;C=6}b:do if((C|0)==6){e=c[a+28>>2]|0;if(e){e=C_(e<<3)|0;if(!e){m=e;k=0;e=12;h=0;g=0;break}else{m=e;h=e}}else{m=0;h=0}P=a+52|0;e=c[P>>2]|0;if(e){e=C_(e<<2)|0;if(!e){k=e;e=12;g=0;break}else{k=e;g=e}}else{k=0;g=0}K=a+8|0;L=a+12|0;M=(d|0)==0;N=(d|0)!=0;O=a+32|0;J=(n|0)!=0;I=(o|0)==0;r=b;e=1;q=-1;v=-1;B=0;c:while(1){n=c[Q>>2]|0;if((n|0)>0){o=0;do{c[j+(o<<2)>>2]=-1;if(!M){c[d+(o<<2)>>2]=-1;n=c[Q>>2]|0}o=o+1|0}while((o|0)<(n|0))}n=c[P>>2]|0;if((n|0)>0)H3(g|0,0,n<<2|0)|0;G=e+q|0;e=B1(T,r,4)|0;if((e|0)<1)if((e|0)<0){e=1;break b}else e=1;F=r+e|0;H=c[T>>2]|0;n=c[K>>2]|0;o=n+8|0;if(c[o>>2]|0){w=(G|0)!=0;x=(B|0)==95;y=(G|0)==0;A=J&(B|0)==10;z=(G|0)<1&I;u=n;n=0;t=0;s=o;while(1){r=u+20|0;o=c[r>>2]|0;d:do if(o)if((o&1|0)==0|z|A){if(o&2|0?(E=c[T>>2]|0,!((E|R|0)==0|J&(E|0)==10)):0){q=t;break}do if(o&16|0){if(x){q=t;break d}if(h0(B)|0){q=t;break d}o=c[T>>2]|0;if((o|0)==95)break;if(!(h0(o)|0)){q=t;break d}}while(0);o=c[r>>2]|0;if(o&32){if(x){o=c[T>>2]|0;if((o|0)==95){q=t;break}}else{E=(h0(B)|0)==0;o=c[T>>2]|0;if(E|(o|0)==95){q=t;break}}if(h0(o)|0){q=t;break}o=c[r>>2]|0}q=c[T>>2]|0;do if((q|0)!=0&(w&(o&64|0)!=0)){if(x)o=1;else{o=(h0(B)|0)!=0;q=c[T>>2]|0}if((q|0)==95)if(o){q=t;break d}else break;else if(o^(h0(q)|0)!=0)break;else{q=t;break d}}while(0);if(!(c[r>>2]&128)){C=49;break}o=c[T>>2]|0;if(y|(o|0)==0){q=t;break}if(x)q=1;else{q=(h0(B)|0)!=0;o=c[T>>2]|0}if((o|0)==95)if(q){C=49;break}else{q=t;break}else if(q^(h0(o)|0)!=0){q=t;break}else{C=49;break}}else q=t;else C=49;while(0);do if((C|0)==49){C=0;if(!t){n=c[u+16>>2]|0;q=c[s>>2]|0;break}q=p+28|0;o=c[q>>2]|0;if(!o){o=n2(U,0,0,0,32)|0;if(!o){C=53;break c}c[o+24>>2]=p;c[o+28>>2]=0;E=n2(U,0,0,0,c[Q>>2]<<2)|0;c[o+20>>2]=E;if(!E){C=60;break c}c[q>>2]=o;p=o}else p=o;c[p>>2]=G;c[p+4>>2]=F;c[p+8>>2]=c[s>>2];c[p+12>>2]=c[u+12>>2];c[p+16>>2]=c[T>>2];if((c[Q>>2]|0)>0){q=c[p+20>>2]|0;o=0;do{c[q+(o<<2)>>2]=c[j+(o<<2)>>2];o=o+1|0}while((o|0)<(c[Q>>2]|0))}o=c[u+16>>2]|0;if(!o)q=t;else{q=c[o>>2]|0;if((q|0)<=-1){q=t;break}r=c[p+20>>2]|0;do{o=o+4|0;c[r+(q<<2)>>2]=G;q=c[o>>2]|0}while((q|0)>-1);q=t}}while(0);s=u+40|0;if(!(c[s>>2]|0))break;else{u=u+32|0;t=q}}if(n){o=c[n>>2]|0;if((o|0)>-1)do{c[j+(o<<2)>>2]=G;n=n+4|0;o=c[n>>2]|0}while((o|0)>-1)}else n=0;if(!q)C=171;else{s=G;r=F;w=q;x=n;C=79}}else{n=0;C=171}e:while(1){if((C|0)==79){if((w|0)==(c[L>>2]|0)){if((v|0)>=(s|0)){if(!(N&(v|0)==(s|0))){n=x;C=171;continue}n=c[Q>>2]|0;if(!(f3(n,c[O>>2]|0,j,d)|0)){n=x;C=171;continue}}else{if(M){v=s;n=x;C=171;continue}n=c[Q>>2]|0}if((n|0)>0)n=0;else{v=s;n=x;C=171;continue}while(1){c[d+(n<<2)>>2]=c[j+(n<<2)>>2];n=n+1|0;if((n|0)>=(c[Q>>2]|0)){v=s;n=x;C=171;continue e}}}u=w+8|0;if((c[u>>2]|0)!=0?(c[w+20>>2]&256|0)!=0:0){o=c[w+24>>2]|0;d3(o+1|0,m,c[S>>2]&-9,a,j,s);E=c[m+(o<<3)>>2]|0;o=(c[m+(o<<3)+4>>2]|0)-E|0;if(z$(b+E|0,r+-1|0,o)|0){n=x;C=171;continue}E=(o|0)==0;n=E&1;q=c[w+12>>2]|0;if(E?c[k+(q<<2)>>2]|0:0){n=x;C=171;continue}c[k+(q<<2)>>2]=n;o=o+-1|0;r=r+o|0;o=o+s|0;q=c[T>>2]|0;n=B1(T,r,4)|0;if((n|0)<1)if((n|0)<0){e=1;break b}else n=1;D=r+n|0;E=n}else{q=c[T>>2]|0;if(!q){n=x;C=171;continue}n=B1(T,r,4)|0;if((n|0)<1)if((n|0)<0){e=1;break b}else n=1;o=s;D=r+n|0;E=n}s=o+e|0;if(!(c[u>>2]|0)){e=E;n=x;C=171;continue}y=(s|0)!=0;z=(q|0)==95;A=(s|0)==0;C=J&(q|0)==10;B=(s|0)<1&I;t=0;n=x;while(1){f:do if((c[w>>2]|0)>>>0<=q>>>0){if((c[w+4>>2]|0)>>>0>>0)break;r=w+20|0;e=c[r>>2]|0;do if(e|0){if(!((e&1|0)==0|B|C))break f;if(e&2|0?(x=c[T>>2]|0,!((x|R|0)==0|J&(x|0)==10)):0)break f;do if(e&16|0){if(z)break f;if(h0(q)|0)break f;e=c[T>>2]|0;if((e|0)==95)break;if(!(h0(e)|0))break f}while(0);e=c[r>>2]|0;if(e&32){if(z){e=c[T>>2]|0;if((e|0)==95)break f}else{x=(h0(q)|0)==0;e=c[T>>2]|0;if(x|(e|0)==95)break f}if(h0(e)|0)break f;e=c[r>>2]|0}o=c[T>>2]|0;do if((o|0)!=0&(y&(e&64|0)!=0)){if(z)e=1;else{e=(h0(q)|0)!=0;o=c[T>>2]|0}if((o|0)==95)if(e)break f;else break;else if(e^(h0(o)|0)!=0)break;else break f}while(0);do if(c[r>>2]&128|0){e=c[T>>2]|0;if(A|(e|0)==0)break f;if(z)o=1;else{o=(h0(q)|0)!=0;e=c[T>>2]|0}if((e|0)==95)if(o)break;else break f;else if(o^(h0(e)|0)!=0)break f;else break}while(0);e=c[r>>2]|0;do if(e&4){if(c[S>>2]&2|0)break;if(!(g0(q,c[w+24>>2]|0)|0))break f;e=c[r>>2]|0}while(0);do if(e&4|0){if(!(c[S>>2]&2))break;x=o0(q)|0;e=w+24|0;if(g0(x,c[e>>2]|0)|0)break;x=R$(q)|0;if(!(g0(x,c[e>>2]|0)|0))break f}while(0);if(!(c[r>>2]&8))break;if(e3(c[w+28>>2]|0,q,c[S>>2]&2)|0)break f}while(0);if(!t){t=c[u>>2]|0;n=c[w+16>>2]|0;break}o=p+28|0;e=c[o>>2]|0;if(!e){e=n2(U,0,0,0,32)|0;if(!e){C=145;break c}c[e+24>>2]=p;c[e+28>>2]=0;x=n2(U,0,0,0,c[Q>>2]<<2)|0;c[e+20>>2]=x;if(!x){C=152;break c}c[o>>2]=e;p=e}else p=e;c[p>>2]=s;c[p+4>>2]=D;c[p+8>>2]=c[u>>2];c[p+12>>2]=c[w+12>>2];c[p+16>>2]=c[T>>2];if((c[Q>>2]|0)>0){o=c[p+20>>2]|0;e=0;do{c[o+(e<<2)>>2]=c[j+(e<<2)>>2];e=e+1|0}while((e|0)<(c[Q>>2]|0))}e=c[w+16>>2]|0;if(!e)break;o=c[e>>2]|0;if((o|0)<=-1)break;r=c[p+20>>2]|0;do{c[r+(o<<2)>>2]=s;e=e+4|0;o=c[e>>2]|0}while((o|0)>-1)}while(0);u=w+40|0;if(!(c[u>>2]|0))break;else w=w+32|0}if(!t){e=E;C=171;continue}if(n){e=c[n>>2]|0;if((e|0)>-1){do{n=n+4|0;c[j+(e<<2)>>2]=s;e=c[n>>2]|0}while((e|0)>-1);q=v;o=D;e=E}else{q=v;o=D;e=E}}else{q=v;o=D;e=E;n=0}}else if((C|0)==171){C=0;r=c[p+24>>2]|0;if(!r)break;t=c[p+8>>2]|0;if(c[t+20>>2]&256|0)c[k+(c[p+12>>2]<<2)>>2]=0;s=c[p>>2]|0;u=c[p+4>>2]|0;c[T>>2]=c[p+16>>2];q=c[Q>>2]|0;if((q|0)>0){p=c[p+20>>2]|0;o=0;do{c[j+(o<<2)>>2]=c[p+(o<<2)>>2];o=o+1|0}while((o|0)<(q|0));p=r;q=v;o=u}else{p=r;q=v;o=u}}r=o;v=q;w=t;x=n;C=79}n=(v|0)>-1;if(n|(c[T>>2]|0)==0){C=180;break}c[T>>2]=H;r=F;q=G;B=H}if((C|0)==53){m2(U);if(j|0)D_(i);if(m|0)D_(h);if(!k){e=12;break a}D_(g);e=12;break a}else if((C|0)==60){m2(U);if(j|0)D_(i);if(m|0)D_(h);if(!k){e=12;break a}D_(g);e=12;break a}else if((C|0)==145){m2(U);if(j|0)D_(i);if(m|0)D_(h);if(!k){e=12;break a}D_(g);e=12;break a}else if((C|0)==152){m2(U);if(j|0)D_(i);if(m|0)D_(h);if(!k){e=12;break a}D_(g);e=12;break a}else if((C|0)==180){c[f>>2]=v;e=(n^1)&1;break}}while(0);m2(U);if(j|0)D_(i);if(m|0)D_(h);if(k)D_(g)}else e=12;while(0);l=V;return e|0}function c3(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0;W=l;l=l+16|0;T=W;c[T>>2]=0;k=e&1;Q=e&2;R=a+56|0;j=c[R>>2]&4;if(!d)N=0;else N=c[a+40>>2]|0;P=N<<2;i=a+52|0;e=c[i>>2]|0;h=e<<3;g=h+8|0;e=P+12+h+(g+(O(P,e)|0)<<1)|0;U=C_(e)|0;if(!U)e=12;else{H3(U|0,0,e|0)|0;e=U+P|0;m=e&3;m=e+((m|0)==0?0:4-m|0)|0;e=m+g|0;n=e&3;n=e+((n|0)==0?0:4-n|0)|0;e=n+g|0;M=e&3;M=e+((M|0)==0?0:4-M|0)|0;e=M+h|0;g=e&3;i=c[i>>2]|0;h=(i|0)>0;if(h){e=e+((g|0)==0?0:4-g|0)|0;g=0;while(1){c[n+(g<<3)+4>>2]=e;e=e+P|0;c[m+(g<<3)+4>>2]=e;g=g+1|0;if((g|0)>=(i|0))break;else e=e+P|0}if(h){e=0;do{c[M+(e<<3)>>2]=-1;e=e+1|0}while((e|0)<(i|0))}}e=B1(T,b,4)|0;if((e|0)<1)if((e|0)<0)e=1;else{i=1;V=11}else{i=e;V=11}a:do if((V|0)==11){L=a+8|0;K=(j|0)!=0;E=(k|0)==0;F=(N|0)>0;G=a+12|0;H=(N|0)<1;I=a+44|0;J=a+32|0;C=a+36|0;D=(N|0)==0;h=0;v=b+i|0;u=0;j=0;e=-1;g=m;A=U;x=m;w=n;while(1){if((e|0)<0){a=c[L>>2]|0;k=a+8|0;b:do if(c[k>>2]|0){p=(u|0)!=0;q=(h|0)==95;r=(u|0)==0;t=K&(h|0)==10;s=(u|0)<1&E;while(1){c:while(1){o=a+12|0;if((c[M+(c[o>>2]<<3)>>2]|0)>=(u|0))break;n=a+20|0;b=c[n>>2]|0;if(!b){V=46;break}d:do if((b&1|0)==0|s|t){if(b&2|0?(B=c[T>>2]|0,!((B|Q|0)==0|K&(B|0)==10)):0)break;do if(b&16|0){if(q)break d;if(h0(h)|0)break d;b=c[T>>2]|0;if((b|0)==95)break;if(!(h0(b)|0))break d}while(0);b=c[n>>2]|0;if(b&32){if(q){b=c[T>>2]|0;if((b|0)==95)break}else{B=(h0(h)|0)==0;b=c[T>>2]|0;if(B|(b|0)==95)break}if(h0(b)|0)break;b=c[n>>2]|0}m=c[T>>2]|0;do if((m|0)!=0&(p&(b&64|0)!=0)){if(q)b=1;else{b=(h0(h)|0)!=0;m=c[T>>2]|0}if((m|0)==95)if(b)break d;else break;else if(b^(h0(m)|0)!=0)break;else break d}while(0);if(!(c[n>>2]&128)){V=46;break c}b=c[T>>2]|0;if(r|(b|0)==0)break;if(q)m=1;else{m=(h0(h)|0)!=0;b=c[T>>2]|0}if((b|0)==95)if(m){V=46;break c}else break;else if(m^(h0(b)|0)!=0)break;else{V=46;break c}}while(0);k=a+40|0;if(!(c[k>>2]|0))break b;else a=a+32|0}if((V|0)==46){V=0;c[g>>2]=c[k>>2];if(F)H3(c[g+4>>2]|0,-1,P|0)|0;k=c[a+16>>2]|0;if(k|0?(S=c[k>>2]|0,(S|0)>-1):0){m=g+4|0;b=S;do{if((b|0)<(N|0))c[(c[m>>2]|0)+(b<<2)>>2]=u;k=k+4|0;b=c[k>>2]|0}while((b|0)>-1)}k=(c[g>>2]|0)!=(c[G>>2]|0);if(k|H){j=k?j:1;e=k?e:u;k=g+4|0}else{k=g+4|0;j=c[k>>2]|0;e=0;do{c[d+(e<<2)>>2]=c[j+(e<<2)>>2];e=e+1|0}while((e|0)!=(N|0));j=1;e=u}B=c[o>>2]|0;c[M+(B<<3)>>2]=u;c[M+(B<<3)+4>>2]=k;g=g+8|0}k=a+40|0;if(!(c[k>>2]|0))break;else a=a+32|0}}while(0);c[g>>2]=0;g=c[T>>2]|0;if(!g)break;else h=g}else{if(D)break;h=c[T>>2]|0;if(!((g|0)!=(x|0)&(h|0)!=0))break}B=u+i|0;g=B1(T,v,4)|0;if((g|0)<1)if((g|0)<0){e=1;break a}else i=1;else i=g;z=v+i|0;if((j|0)!=0&(c[I>>2]|0)!=0){if(!(c[x>>2]|0))g=w;else{o=c[C>>2]|0;p=c[o>>2]|0;q=(p|0)>-1;n=x;g=w;do{m=n+4|0;e:do if(q){k=0;b=p;do{a=c[o+((k|1)<<2)>>2]|0;if((b|0)>=(N|0))break e;j=c[m>>2]|0;if((c[j+(a<<2)>>2]|0)==(c[d+(a<<2)>>2]|0)?(c[j+(b<<2)>>2]|0)<(c[d+(b<<2)>>2]|0):0)break e;k=k+2|0;b=c[o+(k<<2)>>2]|0}while((b|0)>-1);k=m;V=75}else{k=m;j=c[m>>2]|0;V=75}while(0);if((V|0)==75){V=0;c[g>>2]=c[n>>2];v=g+4|0;y=c[v>>2]|0;c[v>>2]=j;c[k>>2]=y;g=g+8|0}n=n+8|0}while((c[n>>2]|0)!=0)}c[g>>2]=0;y=x;j=0}else{y=w;w=x}k=c[w>>2]|0;if(!k){k=A;g=y}else{r=(B|0)!=0;s=(h|0)==95;t=(B|0)==0;v=K&(h|0)==10;u=(B|0)<1&E;q=w;a=A;g=y;while(1){b=k+8|0;if(c[b>>2]|0){p=q+4|0;o=a;n=b;while(1){f:do if((c[k>>2]|0)>>>0<=h>>>0?(c[k+4>>2]|0)>>>0>=h>>>0:0){m=k+20|0;a=c[m>>2]|0;do if(a|0){if(!((a&1|0)==0|u|v)){a=o;break f}if(a&2|0?(A=c[T>>2]|0,!((A|Q|0)==0|K&(A|0)==10)):0){a=o;break f}do if(a&16|0){if(s){a=o;break f}if(h0(h)|0){a=o;break f}a=c[T>>2]|0;if((a|0)==95)break;if(!(h0(a)|0)){a=o;break f}}while(0);a=c[m>>2]|0;if(a&32){if(s){a=c[T>>2]|0;if((a|0)==95){a=o;break f}}else{A=(h0(h)|0)==0;a=c[T>>2]|0;if(A|(a|0)==95){a=o;break f}}if(h0(a)|0){a=o;break f}a=c[m>>2]|0}b=c[T>>2]|0;do if((b|0)!=0&(r&(a&64|0)!=0)){if(s)a=1;else{a=(h0(h)|0)!=0;b=c[T>>2]|0}if((b|0)==95)if(a){a=o;break f}else break;else if(a^(h0(b)|0)!=0)break;else{a=o;break f}}while(0);do if(c[m>>2]&128|0){a=c[T>>2]|0;if(t|(a|0)==0){a=o;break f}if(s)b=1;else{b=(h0(h)|0)!=0;a=c[T>>2]|0}if((a|0)==95)if(b)break;else{a=o;break f}else if(b^(h0(a)|0)!=0){a=o;break f}else break}while(0);a=c[m>>2]|0;do if(a&4){if(c[R>>2]&2|0)break;if(!(g0(h,c[k+24>>2]|0)|0)){a=o;break f}a=c[m>>2]|0}while(0);do if(a&4|0){if(!(c[R>>2]&2))break;A=o0(h)|0;a=k+24|0;if(g0(A,c[a>>2]|0)|0)break;A=R$(h)|0;if(!(g0(A,c[a>>2]|0)|0)){a=o;break f}}while(0);if(!(c[m>>2]&8))break;if(e3(c[k+28>>2]|0,h,c[R>>2]&2)|0){a=o;break f}}while(0);if(F){b=c[p>>2]|0;a=0;do{c[o+(a<<2)>>2]=c[b+(a<<2)>>2];a=a+1|0}while((a|0)!=(N|0))}a=c[k+16>>2]|0;do if(a|0){b=c[a>>2]|0;if((b|0)<=-1)break;do{if((b|0)<(N|0))c[o+(b<<2)>>2]=B;a=a+4|0;b=c[a>>2]|0}while((b|0)>-1)}while(0);a=c[k+12>>2]|0;b=M+(a<<3)|0;if((c[b>>2]|0)>=(B|0)){a=c[M+(a<<3)+4>>2]|0;b=c[a>>2]|0;if(!(f3(N,c[J>>2]|0,o,b)|0)){a=o;break}c[a>>2]=o;if((c[n>>2]|0)!=(c[G>>2]|0)){a=b;break}if(F)e=0;else{j=1;a=b;e=B;break}while(1){c[d+(e<<2)>>2]=c[o+(e<<2)>>2];e=e+1|0;if((e|0)==(N|0)){j=1;a=b;e=B;break f}}}A=c[n>>2]|0;c[g>>2]=A;x=g+4|0;m=c[x>>2]|0;c[x>>2]=o;c[b>>2]=B;c[M+(a<<3)+4>>2]=x;do if((c[G>>2]|0)==(A|0)){if((e|0)==-1)if(F)e=0;else{e=B;j=1;break}else{if(!F)break;if((c[o>>2]|0)>(c[d>>2]|0))break;else e=0}do{c[d+(e<<2)>>2]=c[o+(e<<2)>>2];e=e+1|0}while((e|0)<(N|0));e=B;j=1}while(0);a=m;g=g+8|0}else a=o;while(0);n=k+40|0;if(!(c[n>>2]|0))break;else{k=k+32|0;o=a}}}q=q+8|0;k=c[q>>2]|0;if(!k){k=a;break}}}c[g>>2]=0;v=z;u=B;A=k;x=y}c[f>>2]=e;e=e>>>31}while(0);D_(U)}l=W;return e|0}function d3(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;if((d&8|0)==0&(g|0)>-1?(m=c[e+16>>2]|0,n=c[e+28>>2]|0,l=(a|0)!=0&(n|0)!=0,l):0){k=c[e+48>>2]|0;j=0;do{d=c[m+(j*12|0)>>2]|0;if((d|0)==(k|0))i=g;else i=c[f+(d<<2)>>2]|0;h=b+(j<<3)|0;c[h>>2]=i;d=c[m+(j*12|0)+4>>2]|0;if((d|0)==(k|0))d=g;else d=c[f+(d<<2)>>2]|0;e=b+(j<<3)+4|0;c[e>>2]=d;if((d|0)==-1|(i|0)==-1){c[e>>2]=-1;c[h>>2]=-1}j=j+1|0}while(j>>>0>>0&j>>>0>>0);if(l){d=0;do{i=b+(d<<3)+4|0;j=c[m+(d*12|0)+8>>2]|0;if(j|0?(o=c[j>>2]|0,(o|0)>-1):0){k=b+(d<<3)|0;h=0;f=o;e=c[k>>2]|0;do{if(!((e|0)>=(c[b+(f<<3)>>2]|0)?(c[i>>2]|0)<=(c[b+(f<<3)+4>>2]|0):0)){c[i>>2]=-1;c[k>>2]=-1;e=-1}h=h+1|0;f=c[j+(h<<2)>>2]|0}while((f|0)>-1)}d=d+1|0}while(d>>>0>>0&d>>>0>>0)}else d=0}else d=0;if(d>>>0>>0)H3(b+(d<<3)|0,-1,a-d<<3|0)|0;return}function e3(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=c[a>>2]|0;a:do if(!e)d=0;else{f=(d|0)==0;d=e;while(1){if(f){if(g0(b,d)|0){d=1;break a}}else{e=R$(b)|0;if(g0(e,c[a>>2]|0)|0){d=1;break a}e=o0(b)|0;if(g0(e,c[a>>2]|0)|0){d=1;break a}}a=a+4|0;d=c[a>>2]|0;if(!d){d=0;break}}}while(0);return d|0}function f3(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;a:do if((a|0)>0){f=0;while(1){h=c[d+(f<<2)>>2]|0;g=c[e+(f<<2)>>2]|0;if(!(c[b+(f<<2)>>2]|0)){if((h|0)<(g|0)){f=1;break a}if((h|0)>(g|0)){f=0;break a}}else{if((h|0)>(g|0)){f=1;break a}if((h|0)<(g|0)){f=0;break a}}f=f+1|0;if((f|0)>=(a|0)){f=0;break}}}else f=0;while(0);return f|0}function g3(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;k=O(e,d)|0;e=(d|0)==0?0:e;if((c[f+76>>2]|0)>-1)j=t0(f)|0;else j=0;g=f+74|0;h=a[g>>0]|0;a[g>>0]=h+255|h;g=f+4|0;h=c[g>>2]|0;i=(c[f+8>>2]|0)-h|0;if((i|0)>0){i=i>>>0>>0?i:k;F3(b|0,h|0,i|0)|0;c[g>>2]=(c[g>>2]|0)+i;g=k-i|0;b=b+i|0}else g=k;a:do if(!g)l=13;else{i=f+32|0;while(1){if(K$(f)|0)break;h=nb[c[i>>2]&63](f,b,g)|0;if((h+1|0)>>>0<2)break;g=g-h|0;if(!g){l=13;break a}else b=b+h|0}if(j|0)u0(f);e=((k-g|0)>>>0)/(d>>>0)|0}while(0);if((l|0)==13)if(j)u0(f);return e|0}function h3(a){a=a|0;var b=0;if((c[a+76>>2]|0)>-1){b=(t0(a)|0)==0;a=i3(a)|0}else a=i3(a)|0;return a|0}function i3(a){a=a|0;var b=0;if(!(c[a>>2]&128))b=1;else b=(c[a+20>>2]|0)>>>0>(c[a+28>>2]|0)>>>0?2:1;b=nb[c[a+40>>2]&63](a,0,b)|0;if((b|0)>=0)b=b-(c[a+8>>2]|0)+(c[a+4>>2]|0)+(c[a+20>>2]|0)-(c[a+28>>2]|0)|0;return b|0}function j3(a){a=a|0;(c[a+76>>2]|0)>-1?t0(a)|0:0;return c[a+60>>2]|0}function k3(b){b=b|0;var d=0,e=0,f=0,g=0;f=c[15653]|0;if((c[f+76>>2]|0)>-1)g=t0(f)|0;else g=0;do if((D1(b,f)|0)<0)b=-1;else{if((a[f+75>>0]|0)!=10?(d=f+20|0,e=c[d>>2]|0,e>>>0<(c[f+16>>2]|0)>>>0):0){c[d>>2]=e+1;a[e>>0]=10;b=0;break}b=(F1(f,10)|0)>>31}while(0);if(g|0)u0(f);return b|0}function l3(){var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=l;l=l+48|0;i=k+24|0;h=k+16|0;g=k;d=k+28|0;b=d;e=150604;f=b+20|0;do{a[b>>0]=a[e>>0]|0;b=b+1|0;e=e+1|0}while((b|0)<(f|0));e=d+13|0;b=0;while(1){h1(e)|0;c[g>>2]=d;c[g+4>>2]=32962;c[g+8>>2]=384;f=N_(Ha(5,g|0)|0)|0;if((f|0)>-1){j=4;break}if((b|0)<99)b=b+1|0;else{b=0;break}}if((j|0)==4){c[h>>2]=d;wa(10,h|0)|0;b=z1(f,150624)|0;if(!b){c[i>>2]=f;Ja(6,i|0)|0;b=0}}l=k;return b|0}function m3(a){a=a|0;var b=0,e=0,f=0;if((c[a+76>>2]|0)>=0?(t0(a)|0)!=0:0){b=a+4|0;e=c[b>>2]|0;if(e>>>0<(c[a+8>>2]|0)>>>0){c[b>>2]=e+1;b=d[e>>0]|0}else b=J$(a)|0}else f=3;do if((f|0)==3){b=a+4|0;e=c[b>>2]|0;if(e>>>0<(c[a+8>>2]|0)>>>0){c[b>>2]=e+1;b=d[e>>0]|0;break}else{b=J$(a)|0;break}}while(0);return b|0}function n3(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;if((c[d+76>>2]|0)>=0?(t0(d)|0)!=0:0){f=b&255;e=b&255;if((e|0)!=(a[d+75>>0]|0)?(i=d+20|0,j=c[i>>2]|0,j>>>0<(c[d+16>>2]|0)>>>0):0){c[i>>2]=j+1;a[j>>0]=f}else e=F1(d,b)|0;u0(d)}else k=3;do if((k|0)==3){f=b&255;e=b&255;if((e|0)!=(a[d+75>>0]|0)?(g=d+20|0,h=c[g>>2]|0,h>>>0<(c[d+16>>2]|0)>>>0):0){c[g>>2]=h+1;a[h>>0]=f;break}e=F1(d,b)|0}while(0);return e|0}function o3(a){a=a|0;return h3(a)|0}function p3(){}function q3(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;f=a&65535;e=b&65535;c=O(e,f)|0;d=a>>>16;a=(c>>>16)+(O(e,d)|0)|0;e=b>>>16;b=O(e,f)|0;return (z=(a>>>16)+(O(e,d)|0)+(((a&65535)+b|0)>>>16)|0,a+b<<16|c&65535|0)|0}function r3(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;e=a;f=c;c=q3(e,f)|0;a=z;return (z=(O(b,f)|0)+(O(d,e)|0)+a|a&0,c|0|0)|0}function s3(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;c=a+c>>>0;return (z=b+d+(c>>>0>>0|0)>>>0,c|0)|0}function t3(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;d=b-d-(c>>>0>a>>>0|0)>>>0;return (z=d,a-c>>>0|0)|0}function u3(b){b=b|0;var c=0;c=a[n+(b&255)>>0]|0;if((c|0)<8)return c|0;c=a[n+(b>>8&255)>>0]|0;if((c|0)<8)return c+8|0;c=a[n+(b>>16&255)>>0]|0;if((c|0)<8)return c+16|0;return (a[n+(b>>>24)>>0]|0)+24|0} +function v3(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;l=a;j=b;k=j;h=d;n=e;i=n;if(!k){g=(f|0)!=0;if(!i){if(g){c[f>>2]=(l>>>0)%(h>>>0);c[f+4>>2]=0}n=0;f=(l>>>0)/(h>>>0)>>>0;return (z=n,f)|0}else{if(!g){n=0;f=0;return (z=n,f)|0}c[f>>2]=a|0;c[f+4>>2]=b&0;n=0;f=0;return (z=n,f)|0}}g=(i|0)==0;do if(h){if(!g){g=(R(i|0)|0)-(R(k|0)|0)|0;if(g>>>0<=31){m=g+1|0;i=31-g|0;b=g-31>>31;h=m;a=l>>>(m>>>0)&b|k<>>(m>>>0)&b;g=0;i=l<>2]=a|0;c[f+4>>2]=j|b&0;n=0;f=0;return (z=n,f)|0}g=h-1|0;if(g&h|0){i=(R(h|0)|0)+33-(R(k|0)|0)|0;p=64-i|0;m=32-i|0;j=m>>31;o=i-32|0;b=o>>31;h=i;a=m-1>>31&k>>>(o>>>0)|(k<>>(i>>>0))&b;b=b&k>>>(i>>>0);g=l<>>(o>>>0))&j|l<>31;break}if(f|0){c[f>>2]=g&l;c[f+4>>2]=0}if((h|0)==1){o=j|b&0;p=a|0|0;return (z=o,p)|0}else{p=u3(h|0)|0;o=k>>>(p>>>0)|0;p=k<<32-p|l>>>(p>>>0)|0;return (z=o,p)|0}}else{if(g){if(f|0){c[f>>2]=(k>>>0)%(h>>>0);c[f+4>>2]=0}o=0;p=(k>>>0)/(h>>>0)>>>0;return (z=o,p)|0}if(!l){if(f|0){c[f>>2]=0;c[f+4>>2]=(k>>>0)%(i>>>0)}o=0;p=(k>>>0)/(i>>>0)>>>0;return (z=o,p)|0}g=i-1|0;if(!(g&i)){if(f|0){c[f>>2]=a|0;c[f+4>>2]=g&k|b&0}o=0;p=k>>>((u3(i|0)|0)>>>0);return (z=o,p)|0}g=(R(i|0)|0)-(R(k|0)|0)|0;if(g>>>0<=30){b=g+1|0;i=31-g|0;h=b;a=k<>>(b>>>0);b=k>>>(b>>>0);g=0;i=l<>2]=a|0;c[f+4>>2]=j|b&0;o=0;p=0;return (z=o,p)|0}while(0);if(!h){k=i;j=0;i=0}else{m=d|0|0;l=n|e&0;k=s3(m|0,l|0,-1,-1)|0;d=z;j=i;i=0;do{e=j;j=g>>>31|j<<1;g=i|g<<1;e=a<<1|e>>>31|0;n=a>>>31|b<<1|0;t3(k|0,d|0,e|0,n|0)|0;p=z;o=p>>31|((p|0)<0?-1:0)<<1;i=o&1;a=t3(e|0,n|0,o&m|0,(((p|0)<0?-1:0)>>31|((p|0)<0?-1:0)<<1)&l|0)|0;b=z;h=h-1|0}while((h|0)!=0);k=j;j=0}h=0;if(f|0){c[f>>2]=a;c[f+4>>2]=b}o=(g|0)>>>31|(k|h)<<1|(h<<1|g>>>31)&0|j;p=(g<<1|0>>>31)&-2|i;return (z=o,p)|0}function w3(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return v3(a,b,c,d,0)|0}function x3(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;g=l;l=l+16|0;f=g|0;v3(a,b,d,e,f)|0;l=g;return (z=c[f+4>>2]|0,c[f>>2]|0)|0}function y3(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){z=b>>c;return a>>>c|(b&(1<>c-32|0}function z3(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){z=b>>>c;return a>>>c|(b&(1<>>c-32|0}function A3(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){z=b<>>32-c;return a<>8&255|0}function C3(a){a=a|0;return (a&255)<<24|(a>>8&255)<<16|(a>>16&255)<<8|a>>>24|0}function D3(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;q=q+1|0;c[a>>2]=q;while((f|0)<(e|0)){if(!(c[d+(f<<3)>>2]|0)){c[d+(f<<3)>>2]=q;c[d+((f<<3)+4)>>2]=b;c[d+((f<<3)+8)>>2]=0;z=e;return d|0}f=f+1|0}e=e*2|0;d=F_(d|0,8*(e+1|0)|0)|0;d=D3(a|0,b|0,d|0,e|0)|0;z=e;return d|0}function E3(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;while((f|0)<(d|0)){e=c[b+(f<<3)>>2]|0;if(!e)break;if((e|0)==(a|0))return c[b+((f<<3)+4)>>2]|0;f=f+1|0}return 0}function F3(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;if((e|0)>=8192)return Ra(b|0,d|0,e|0)|0;h=b|0;g=b+e|0;if((b&3)==(d&3)){while(b&3){if(!e)return h|0;a[b>>0]=a[d>>0]|0;b=b+1|0;d=d+1|0;e=e-1|0}e=g&-4|0;f=e-64|0;while((b|0)<=(f|0)){c[b>>2]=c[d>>2];c[b+4>>2]=c[d+4>>2];c[b+8>>2]=c[d+8>>2];c[b+12>>2]=c[d+12>>2];c[b+16>>2]=c[d+16>>2];c[b+20>>2]=c[d+20>>2];c[b+24>>2]=c[d+24>>2];c[b+28>>2]=c[d+28>>2];c[b+32>>2]=c[d+32>>2];c[b+36>>2]=c[d+36>>2];c[b+40>>2]=c[d+40>>2];c[b+44>>2]=c[d+44>>2];c[b+48>>2]=c[d+48>>2];c[b+52>>2]=c[d+52>>2];c[b+56>>2]=c[d+56>>2];c[b+60>>2]=c[d+60>>2];b=b+64|0;d=d+64|0}while((b|0)<(e|0)){c[b>>2]=c[d>>2];b=b+4|0;d=d+4|0}}else{e=g-4|0;while((b|0)<(e|0)){a[b>>0]=a[d>>0]|0;a[b+1>>0]=a[d+1>>0]|0;a[b+2>>0]=a[d+2>>0]|0;a[b+3>>0]=a[d+3>>0]|0;b=b+4|0;d=d+4|0}}while((b|0)<(g|0)){a[b>>0]=a[d>>0]|0;b=b+1|0;d=d+1|0}return h|0}function G3(b,c,d){b=b|0;c=c|0;d=d|0;var e=0;if((c|0)<(b|0)&(b|0)<(c+d|0)){e=b;c=c+d|0;b=b+d|0;while((d|0)>0){b=b-1|0;c=c-1|0;d=d-1|0;a[b>>0]=a[c>>0]|0}b=e}else F3(b,c,d)|0;return b|0}function H3(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;h=b+e|0;d=d&255;if((e|0)>=67){while(b&3){a[b>>0]=d;b=b+1|0}f=h&-4|0;g=f-64|0;i=d|d<<8|d<<16|d<<24;while((b|0)<=(g|0)){c[b>>2]=i;c[b+4>>2]=i;c[b+8>>2]=i;c[b+12>>2]=i;c[b+16>>2]=i;c[b+20>>2]=i;c[b+24>>2]=i;c[b+28>>2]=i;c[b+32>>2]=i;c[b+36>>2]=i;c[b+40>>2]=i;c[b+44>>2]=i;c[b+48>>2]=i;c[b+52>>2]=i;c[b+56>>2]=i;c[b+60>>2]=i;b=b+64|0}while((b|0)<(f|0)){c[b>>2]=i;b=b+4|0}}while((b|0)<(h|0)){a[b>>0]=d;b=b+1|0}return h-e|0}function I3(a){a=a|0;var b=0,d=0;d=c[i>>2]|0;b=d+a|0;if((a|0)>0&(b|0)<(d|0)|(b|0)<0){W()|0;va(12);return -1}c[i>>2]=b;if((b|0)>(V()|0)?(U()|0)==0:0){c[i>>2]=d;va(12);return -1}return d|0}function J3(a){a=a|0;return +gb[a&1]()}function K3(a,b,c,d){a=a|0;b=+b;c=+c;d=+d;return +hb[a&7](+b,+c,+d)}function L3(a,b){a=a|0;b=b|0;return +ib[a&1](b|0)}function M3(a){a=a|0;return jb[a&3]()|0}function N3(a,b){a=a|0;b=b|0;return kb[a&63](b|0)|0}function O3(a,b,c){a=a|0;b=b|0;c=c|0;return lb[a&127](b|0,c|0)|0}function P3(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=+d;e=+e;return mb[a&3](b|0,c|0,+d,+e)|0}function Q3(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return nb[a&63](b|0,c|0,d|0)|0}function R3(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return ob[a&127](b|0,c|0,d|0,e|0)|0}function S3(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return pb[a&127](b|0,c|0,d|0,e|0,f|0)|0}function T3(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;return qb[a&1](b|0,c|0,d|0,e|0,f|0,g|0)|0}function U3(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;return rb[a&3](b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0)|0}function V3(a){a=a|0;sb[a&15]()}function W3(a,b){a=a|0;b=b|0;tb[a&127](b|0)}function X3(a,b,c){a=a|0;b=b|0;c=c|0;ub[a&63](b|0,c|0)}function Y3(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;vb[a&127](b|0,c|0,d|0)}function Z3(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=g|0;wb[a&15](b|0,c|0,d|0,+e,+f,g|0)}function _3(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;xb[a&31](b|0,c|0,d|0,e|0)}function $3(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;yb[a&15](b|0,c|0,d|0,e|0,f|0)}function a4(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;zb[a&15](b|0,c|0,d|0,e|0,f|0,g|0)}function b4(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;Ab[a&0](b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0)}function c4(){S(0);return 0.0}function d4(a,b,c){a=+a;b=+b;c=+c;S(1);return 0.0}function e4(a){a=a|0;S(2);return 0.0}function f4(){S(3);return 0}function g4(a){a=a|0;S(4);return 0}function h4(a,b){a=a|0;b=b|0;S(5);return 0}function i4(a,b,c,d){a=a|0;b=b|0;c=+c;d=+d;S(6);return 0}function j4(a,b,c){a=a|0;b=b|0;c=c|0;S(7);return 0}function k4(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;S(8);return 0}function l4(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;S(9);return 0}function m4(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;S(10);return 0}function n4(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;S(11);return 0}function o4(){S(12)}function p4(a){a=a|0;S(13)}function q4(a,b){a=a|0;b=b|0;S(14)}function r4(a,b,c){a=a|0;b=b|0;c=c|0;S(15)}function s4(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=+d;e=+e;f=f|0;S(16)}function t4(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;S(17)}function u4(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;S(18)}function v4(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;S(19)}function w4(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;S(20)} + +// EMSCRIPTEN_END_FUNCS +var gb=[c4,FL];var hb=[d4,RF,QF,SF,TF,d4,d4,d4];var ib=[e4,ML];var jb=[f4,eq,EH,vI];var kb=[g4,eh,zg,Nm,Om,Fy,Iy,sN,tN,iP,jP,kP,lP,mP,nP,oP,pP,K_,Ib,bC,Al,Dl,an,vH,ay,Sy,$x,AH,FH,by,eN,uH,jN,kN,bV,C_,g4,g4,g4,g4,g4,g4,g4,g4,g4,g4,g4,g4,g4,g4,g4,g4,g4,g4,g4,g4,g4,g4,g4,g4,g4,g4,g4,g4];var lb=[h4,hy,Ey,Jy,EK,FK,wK,sK,aK,KT,LT,MT,NT,OT,PT,RT,ST,TT,UT,VT,WT,XT,YT,ZT,_T,$T,aU,bU,cU,dU,eU,fU,gU,hU,iU,jU,kU,lU,mU,nU,wX,xX,zX,WX,XX,YX,ZX,_X,$X,aY,bY,UY,VY,XY,jY,kY,mY,$B,pg,dh,Gh,ii,Ai,Lk,Jk,Bl,El,$o,oq,Kq,Mq,Oq,Pq,Rq,Qq,ar,is,ns,ps,tu,mB,lB,kB,gD,Ty,xH,tD,JD,ED,FD,GE,D1,n3,zL,NM,xx,PR,Ex,Gx,fN,b$,oQ,JT,ZU,_U,F_,kX,lX,mX,Z2,h4,h4,h4,h4,h4,h4,h4,h4,h4,h4,h4,h4,h4,h4,h4,h4,h4,h4];var mb=[i4,qt,vt,i4];var nb=[j4,Jm,Mu,kw,sw,Bw,Gw,Dy,Hy,HI,AM,zR,AX,YY,nY,L_,M_,Q_,R_,G0,Pw,Zm,Au,tp,os,Iw,eD,Y0,vA,g1,BL,DI,sO,WU,HY,yZ,sZ,CZ,P1,j4,j4,j4,j4,j4,j4,j4,j4,j4,j4,j4,j4,j4,j4,j4,j4,j4,j4,j4,j4,j4,j4,j4,j4,j4];var ob=[k4,Lm,Wq,Nu,mw,uw,Cx,AA,Dx,Wx,jy,ly,wy,vy,Ky,Oy,Qy,xI,CM,VN,TN,PP,BR,XR,WR,pX,qX,rX,sX,tX,uX,vX,yX,CX,NY,OY,PY,QY,RY,SY,TY,WY,_Y,cY,dY,eY,fY,gY,hY,iY,lY,pY,Lw,Az,iD,DL,QV,TV,_V,jW,sW,yW,wW,zW,iX,DZ,XW,JY,KY,zZ,AZ,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4];var pb=[l4,iy,bK,xK,DX,EX,UX,VX,pZ,$Y,aZ,qY,rY,nX,oX,FZ,GZ,HZ,IZ,KZ,LZ,MZ,NZ,OZ,QZ,RZ,SZ,TZ,UZ,PZ,s_,t_,j_,c_,VZ,WZ,XZ,ZZ,YZ,_Z,$Z,a_,b_,d_,e_,f_,g_,h_,i_,k_,l_,m_,n_,r_,p_,o_,q_,y_,u_,v_,w_,x_,z_,A_,B_,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4,l4];var qb=[m4,AU];var rb=[n4,rZ,BZ,n4];var sb=[o4,EL,BH,CH,DH,HH,IH,JH,FR,o4,o4,o4,o4,o4,o4,o4];var tb=[p4,Ob,Pb,Tb,Ub,Vb,nc,oc,Mc,Nc,Oc,Pc,Qc,Rc,Sc,cd,dd,gd,hd,id,jd,kd,ld,md,yd,zd,Ad,Cd,Dd,Ed,Fd,Gd,Hd,Id,Jd,Ud,Vd,Wd,Yd,Zd,_d,$d,ae,be,ce,de,ee,ge,te,ue,ve,we,He,Ie,Je,Le,Ye,Ze,_e,af,bf,cf,df,ef,ff,gf,hf,jf,sf,tf,uf,vf,Yf,Tf,rm,bm,fp,Go,ao,co,Np,Op,Zl,_l,fo,no,po,Ao,my,IJ,_J,KJ,JJ,uK,fJ,iJ,qP,vP,Mf,Fl,Ko,Oo,gp,D_,ax,jD,cF,ER,lO,mN,yI,YR,zU,UU,VU,$U,p4,p4,p4,p4,p4,p4,p4,p4,p4,p4,p4,p4];var ub=[q4,Uc,Zc,od,td,Qd,me,Ce,Re,pf,Bf,Ly,cK,GK,yK,tK,YJ,ZJ,CK,DK,tP,xP,PI,Sw,fD,GH,dN,AT,yU,XU,YU,aV,cV,q4,q4,q4,q4,q4,q4,q4,q4,q4,q4,q4,q4,q4,q4,q4,q4,q4,q4,q4,q4,q4,q4,q4,q4,q4,q4,q4,q4,q4,q4,q4];var vb=[r4,Wb,Xb,_b,Lc,Tc,Vc,Yc,nd,pd,sd,Ld,Md,Pd,he,ie,le,xe,ye,Be,Me,Ne,Qe,kf,lf,of,wf,xf,Af,qk,rk,sk,Km,lw,tw,Zw,ny,Py,wz,BA,YC,BG,wI,II,hJ,BM,EM,UN,SN,rP,sP,uP,wP,yP,AR,nT,mT,qx,Sx,bz,Ez,Hz,zH,CL,BI,hN,lN,oT,qT,rT,zT,BT,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4,r4];var wb=[s4,xE,yE,zE,AE,BE,CE,DE,EE,s4,s4,s4,s4,s4,s4,s4];var xb=[t4,Yb,Wc,qd,Bd,Nd,Xd,je,ze,Oe,$e,mf,yf,Pf,Of,Nf,Lf,Kf,Jf,mc,If,Hf,ky,$J,vK,BX,ZY,oY,_0,gN,iN,LY];var yb=[u4,ed,Kd,Rd,fe,Ke,Cl,hD,nN,u4,u4,u4,u4,u4,u4,u4];var zb=[v4,Zb,Xc,rd,Od,ke,Ae,Pe,nf,zf,oN,v4,v4,v4,v4,v4];var Ab=[w4];return{___errno_location:O_,___muldi3:r3,___udivdi3:w3,___uremdi3:x3,_bitshift64Ashr:y3,_bitshift64Lshr:z3,_bitshift64Shl:A3,_dtextract:zw,_free:D_,_htons:M0,_i64Add:s3,_i64Subtract:t3,_llvm_bswap_i16:B3,_llvm_bswap_i32:C3,_malloc:C_,_memalign:I_,_memcpy:F3,_memmove:G3,_memset:H3,_realloc:F_,_saveSetjmp:D3,_sbrk:I3,_testSetjmp:E3,_vizCreateFile:Kb,_vizLastErrorMessage:Jb,_vizRenderFromString:Nb,_vizSetNop:Mb,_vizSetY_invert:Lb,dynCall_d:J3,dynCall_dddd:K3,dynCall_di:L3,dynCall_i:M3,dynCall_ii:N3,dynCall_iii:O3,dynCall_iiidd:P3,dynCall_iiii:Q3,dynCall_iiiii:R3,dynCall_iiiiii:S3,dynCall_iiiiiii:T3,dynCall_iiiiiiiiiii:U3,dynCall_v:V3,dynCall_vi:W3,dynCall_vii:X3,dynCall_viii:Y3,dynCall_viiiddi:Z3,dynCall_viiii:_3,dynCall_viiiii:$3,dynCall_viiiiii:a4,dynCall_viiiiiiiii:b4,establishStackSpace:Eb,getTempRet0:Hb,runPostSets:p3,setTempRet0:Gb,setThrew:Fb,stackAlloc:Bb,stackRestore:Db,stackSave:Cb}}) + + +// EMSCRIPTEN_END_ASM +(Module.asmGlobalArg,Module.asmLibraryArg,buffer);var ___errno_location=Module["___errno_location"]=asm["___errno_location"];var ___muldi3=Module["___muldi3"]=asm["___muldi3"];var ___udivdi3=Module["___udivdi3"]=asm["___udivdi3"];var ___uremdi3=Module["___uremdi3"]=asm["___uremdi3"];var _bitshift64Ashr=Module["_bitshift64Ashr"]=asm["_bitshift64Ashr"];var _bitshift64Lshr=Module["_bitshift64Lshr"]=asm["_bitshift64Lshr"];var _bitshift64Shl=Module["_bitshift64Shl"]=asm["_bitshift64Shl"];var _dtextract=Module["_dtextract"]=asm["_dtextract"];var _free=Module["_free"]=asm["_free"];var _htons=Module["_htons"]=asm["_htons"];var _i64Add=Module["_i64Add"]=asm["_i64Add"];var _i64Subtract=Module["_i64Subtract"]=asm["_i64Subtract"];var _llvm_bswap_i16=Module["_llvm_bswap_i16"]=asm["_llvm_bswap_i16"];var _llvm_bswap_i32=Module["_llvm_bswap_i32"]=asm["_llvm_bswap_i32"];var _malloc=Module["_malloc"]=asm["_malloc"];var _memalign=Module["_memalign"]=asm["_memalign"];var _memcpy=Module["_memcpy"]=asm["_memcpy"];var _memmove=Module["_memmove"]=asm["_memmove"];var _memset=Module["_memset"]=asm["_memset"];var _realloc=Module["_realloc"]=asm["_realloc"];var _saveSetjmp=Module["_saveSetjmp"]=asm["_saveSetjmp"];var _sbrk=Module["_sbrk"]=asm["_sbrk"];var _testSetjmp=Module["_testSetjmp"]=asm["_testSetjmp"];var _vizCreateFile=Module["_vizCreateFile"]=asm["_vizCreateFile"];var _vizLastErrorMessage=Module["_vizLastErrorMessage"]=asm["_vizLastErrorMessage"];var _vizRenderFromString=Module["_vizRenderFromString"]=asm["_vizRenderFromString"];var _vizSetNop=Module["_vizSetNop"]=asm["_vizSetNop"];var _vizSetY_invert=Module["_vizSetY_invert"]=asm["_vizSetY_invert"];var establishStackSpace=Module["establishStackSpace"]=asm["establishStackSpace"];var getTempRet0=Module["getTempRet0"]=asm["getTempRet0"];var runPostSets=Module["runPostSets"]=asm["runPostSets"];var setTempRet0=Module["setTempRet0"]=asm["setTempRet0"];var setThrew=Module["setThrew"]=asm["setThrew"];var stackAlloc=Module["stackAlloc"]=asm["stackAlloc"];var stackRestore=Module["stackRestore"]=asm["stackRestore"];var stackSave=Module["stackSave"]=asm["stackSave"];var dynCall_d=Module["dynCall_d"]=asm["dynCall_d"];var dynCall_dddd=Module["dynCall_dddd"]=asm["dynCall_dddd"];var dynCall_di=Module["dynCall_di"]=asm["dynCall_di"];var dynCall_i=Module["dynCall_i"]=asm["dynCall_i"];var dynCall_ii=Module["dynCall_ii"]=asm["dynCall_ii"];var dynCall_iii=Module["dynCall_iii"]=asm["dynCall_iii"];var dynCall_iiidd=Module["dynCall_iiidd"]=asm["dynCall_iiidd"];var dynCall_iiii=Module["dynCall_iiii"]=asm["dynCall_iiii"];var dynCall_iiiii=Module["dynCall_iiiii"]=asm["dynCall_iiiii"];var dynCall_iiiiii=Module["dynCall_iiiiii"]=asm["dynCall_iiiiii"];var dynCall_iiiiiii=Module["dynCall_iiiiiii"]=asm["dynCall_iiiiiii"];var dynCall_iiiiiiiiiii=Module["dynCall_iiiiiiiiiii"]=asm["dynCall_iiiiiiiiiii"];var dynCall_v=Module["dynCall_v"]=asm["dynCall_v"];var dynCall_vi=Module["dynCall_vi"]=asm["dynCall_vi"];var dynCall_vii=Module["dynCall_vii"]=asm["dynCall_vii"];var dynCall_viii=Module["dynCall_viii"]=asm["dynCall_viii"];var dynCall_viiiddi=Module["dynCall_viiiddi"]=asm["dynCall_viiiddi"];var dynCall_viiii=Module["dynCall_viiii"]=asm["dynCall_viiii"];var dynCall_viiiii=Module["dynCall_viiiii"]=asm["dynCall_viiiii"];var dynCall_viiiiii=Module["dynCall_viiiiii"]=asm["dynCall_viiiiii"];var dynCall_viiiiiiiii=Module["dynCall_viiiiiiiii"]=asm["dynCall_viiiiiiiii"];Module["asm"]=asm;Module["ccall"]=ccall;Module["Pointer_stringify"]=Pointer_stringify;Module["UTF8ToString"]=UTF8ToString;if(memoryInitializer){if(!isDataURI(memoryInitializer)){if(typeof Module["locateFile"]==="function"){memoryInitializer=Module["locateFile"](memoryInitializer)}else if(Module["memoryInitializerPrefixURL"]){memoryInitializer=Module["memoryInitializerPrefixURL"]+memoryInitializer}}if(ENVIRONMENT_IS_NODE||ENVIRONMENT_IS_SHELL){var data=Module["readBinary"](memoryInitializer);HEAPU8.set(data,GLOBAL_BASE)}else{addRunDependency("memory initializer");var applyMemoryInitializer=(function(data){if(data.byteLength)data=new Uint8Array(data);HEAPU8.set(data,GLOBAL_BASE);if(Module["memoryInitializerRequest"])delete Module["memoryInitializerRequest"].response;removeRunDependency("memory initializer")});function doBrowserLoad(){Module["readAsync"](memoryInitializer,applyMemoryInitializer,(function(){throw"could not load memory initializer "+memoryInitializer}))}var memoryInitializerBytes=tryParseAsDataURI(memoryInitializer);if(memoryInitializerBytes){applyMemoryInitializer(memoryInitializerBytes.buffer)}else if(Module["memoryInitializerRequest"]){function useRequest(){var request=Module["memoryInitializerRequest"];var response=request.response;if(request.status!==200&&request.status!==0){var data=tryParseAsDataURI(Module["memoryInitializerRequestURL"]);if(data){response=data.buffer}else{console.warn("a problem seems to have happened with Module.memoryInitializerRequest, status: "+request.status+", retrying "+memoryInitializer);doBrowserLoad();return}}applyMemoryInitializer(response)}if(Module["memoryInitializerRequest"].response){setTimeout(useRequest,0)}else{Module["memoryInitializerRequest"].addEventListener("load",useRequest)}}else{doBrowserLoad()}}}function ExitStatus(status){this.name="ExitStatus";this.message="Program terminated with exit("+status+")";this.status=status}ExitStatus.prototype=new Error;ExitStatus.prototype.constructor=ExitStatus;var initialStackTop;dependenciesFulfilled=function runCaller(){if(!Module["calledRun"])run();if(!Module["calledRun"])dependenciesFulfilled=runCaller};function run(args){args=args||Module["arguments"];if(runDependencies>0){return}preRun();if(runDependencies>0)return;if(Module["calledRun"])return;function doRun(){if(Module["calledRun"])return;Module["calledRun"]=true;if(ABORT)return;ensureInitRuntime();preMain();if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout((function(){setTimeout((function(){Module["setStatus"]("")}),1);doRun()}),1)}else{doRun()}}Module["run"]=run;function exit(status,implicit){if(implicit&&Module["noExitRuntime"]&&status===0){return}if(Module["noExitRuntime"]){}else{ABORT=true;EXITSTATUS=status;STACKTOP=initialStackTop;exitRuntime();if(Module["onExit"])Module["onExit"](status)}if(ENVIRONMENT_IS_NODE){process["exit"](status)}Module["quit"](status,new ExitStatus(status))}Module["exit"]=exit;function abort(what){if(Module["onAbort"]){Module["onAbort"](what)}if(what!==undefined){Module.print(what);Module.printErr(what);what=JSON.stringify(what)}else{what=""}ABORT=true;EXITSTATUS=1;throw"abort("+what+"). Build with -s ASSERTIONS=1 for more info."}Module["abort"]=abort;if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}Module["noExitRuntime"]=true;run() + + + + + return Module; +}; + +function render(instance, src, options) { + var i; + for (i = 0; i < options.files.length; i++) { + instance['ccall']('vizCreateFile', 'number', ['string', 'string'], [options.files[i].path, options.files[i].data]); + } + + instance['ccall']('vizSetY_invert', 'number', ['number'], [options.yInvert ? 1 : 0]); + instance['ccall']('vizSetNop', 'number', ['number'], [options.nop ? options.nop : 0]); + + var resultPointer = instance['ccall']('vizRenderFromString', 'number', ['string', 'string', 'string'], [src, options.format, options.engine]); + var resultString = instance['Pointer_stringify'](resultPointer); + instance['ccall']('free', 'number', ['number'], [resultPointer]); + + var errorMessagePointer = instance['ccall']('vizLastErrorMessage', 'number', [], []); + var errorMessageString = instance['Pointer_stringify'](errorMessagePointer); + instance['ccall']('free', 'number', ['number'], [errorMessagePointer]); + + if (errorMessageString != '') { + throw new Error(errorMessageString); + } + + return resultString; +} + +if (typeof importScripts === "function") { + var instance = Module(); + + onmessage = function(event) { + var id = event.data.id; + var src = event.data.src; + var options = event.data.options; + + try { + var result = render(instance, src, options); + postMessage({ id: id, result: result }); + } catch (e) { + var error; + if (e instanceof Error) { + error = { message: e.message, fileName: e.fileName, lineNumber: e.lineNumber }; + } else { + error = { message: e.toString() }; + } + postMessage({ id: id, error: error }); + } + } +} + +if (typeof exports === 'object' && typeof module !== 'undefined') { + module.exports = { render: render, Module: Module }; +} else if (typeof define === 'function' && define.amd) { + define(function() { return { render: render, Module: Module }; }); +} + +if (typeof global.Viz !== 'undefined') { + global.Viz.render = render; + global.Viz.Module = Module; +} + +})(typeof self !== 'undefined' ? self : this); diff --git a/resources/public/index.min.js b/resources/public/index.min.js new file mode 100644 index 0000000..f72fa3d --- /dev/null +++ b/resources/public/index.min.js @@ -0,0 +1 @@ +!function(r,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((r=r||self)["@hpcc-js/wasm"]={})}(this,(function(r){"use strict";function t(r,t){return r(t={exports:{}},t.exports),t.exports}var e=t((function(r,t){var e,n=(e="undefined"!=typeof document&&document.currentScript?document.currentScript.src:void 0,function(r){var t,n=void 0!==(r=r||{})?r:{},o={};for(t in n)n.hasOwnProperty(t)&&(o[t]=n[t]);var i,a="./this.program",s="";document.currentScript&&(s=document.currentScript.src),e&&(s=e),s=0!==s.indexOf("blob:")?s.substr(0,s.lastIndexOf("/")+1):"",i=function(r){var t=new XMLHttpRequest;return t.open("GET",r,!1),t.send(null),t.responseText};var u,c,f=n.print||console.log.bind(console),l=n.printErr||console.warn.bind(console);for(t in o)o.hasOwnProperty(t)&&(n[t]=o[t]);o=null,n.arguments&&n.arguments,n.thisProgram&&(a=n.thisProgram),n.quit&&n.quit,n.wasmBinary&&(u=n.wasmBinary),n.noExitRuntime&&n.noExitRuntime,"object"!=typeof WebAssembly&&l("no native wasm support detected");var d=new WebAssembly.Table({initial:153,maximum:153,element:"anyfunc"}),p=!1;function m(r,t){r||H("Assertion failed: "+t)}var h,y,v,_,w,g="undefined"!=typeof TextDecoder?new TextDecoder("utf8"):void 0;function E(r,t,e){for(var n=t+e,o=t;r[o]&&!(o>=n);)++o;if(o-t>16&&r.subarray&&g)return g.decode(r.subarray(t,o));for(var i="";t>10,56320|1023&c)}}else i+=String.fromCharCode((31&a)<<6|s)}else i+=String.fromCharCode(a)}return i}function k(r,t){return r?E(v,r,t):""}function b(r,t,e,n){if(!(n>0))return 0;for(var o=e,i=e+n-1,a=0;a=55296&&s<=57343&&(s=65536+((1023&s)<<10)|1023&r.charCodeAt(++a)),s<=127){if(e>=i)break;t[e++]=s}else if(s<=2047){if(e+1>=i)break;t[e++]=192|s>>6,t[e++]=128|63&s}else if(s<=65535){if(e+2>=i)break;t[e++]=224|s>>12,t[e++]=128|s>>6&63,t[e++]=128|63&s}else{if(e+3>=i)break;t[e++]=240|s>>18,t[e++]=128|s>>12&63,t[e++]=128|s>>6&63,t[e++]=128|63&s}}return t[e]=0,e-o}function D(r){for(var t=0,e=0;e=55296&&n<=57343&&(n=65536+((1023&n)<<10)|1023&r.charCodeAt(++e)),n<=127?++t:t+=n<=2047?2:n<=65535?3:4}return t}function S(r){h=r,n.HEAP8=y=new Int8Array(r),n.HEAP16=new Int16Array(r),n.HEAP32=_=new Int32Array(r),n.HEAPU8=v=new Uint8Array(r),n.HEAPU16=new Uint16Array(r),n.HEAPU32=new Uint32Array(r),n.HEAPF32=new Float32Array(r),n.HEAPF64=w=new Float64Array(r)}"undefined"!=typeof TextDecoder&&new TextDecoder("utf-16le");var F=n.TOTAL_MEMORY||16777216;function P(r){for(;r.length>0;){var t=r.shift();if("function"!=typeof t){var e=t.func;"number"==typeof e?void 0===t.arg?n.dynCall_v(e):n.dynCall_vi(e,t.arg):e(void 0===t.arg?null:t.arg)}else t()}}(c=n.wasmMemory?n.wasmMemory:new WebAssembly.Memory({initial:F/65536}))&&(h=c.buffer),F=h.byteLength,S(h),_[2080]=5251360;var x=[],A=[],M=[],C=[],R=!1,O=Math.abs,j=Math.ceil,T=Math.floor,z=Math.min,B=0,N=null;function L(r){B++,n.monitorRunDependencies&&n.monitorRunDependencies(B)}function I(r){if(B--,n.monitorRunDependencies&&n.monitorRunDependencies(B),0==B&&N){var t=N;N=null,t()}}function H(r){throw n.onAbort&&n.onAbort(r),f(r+=""),l(r),p=!0,r="abort("+r+"). Build with -s ASSERTIONS=1 for more info.",new WebAssembly.RuntimeError(r)}function U(r){return String.prototype.startsWith?r.startsWith("data:application/octet-stream;base64,"):0===r.indexOf("data:application/octet-stream;base64,")}n.preloadedImages={},n.preloadedAudios={};var W,q,Y,J="expatlib.wasm";function V(){try{if(u)return new Uint8Array(u);throw"both async and sync fetching of the wasm failed"}catch(r){H(r)}}U(J)||(W=J,J=n.locateFile?n.locateFile(W,s):s+W);var X={1184:function(r){var t=n.getCache(n.CExpatJS)[r];if(!t.hasOwnProperty("startElement"))throw"a JSImplementation must implement all functions, you forgot CExpatJS::startElement.";t.startElement()},1404:function(r){var t=n.getCache(n.CExpatJS)[r];if(!t.hasOwnProperty("endElement"))throw"a JSImplementation must implement all functions, you forgot CExpatJS::endElement.";t.endElement()},1616:function(r){var t=n.getCache(n.CExpatJS)[r];if(!t.hasOwnProperty("characterData"))throw"a JSImplementation must implement all functions, you forgot CExpatJS::characterData.";t.characterData()}};function G(){var r=function(){var r=new Error;if(!r.stack){try{throw new Error}catch(t){r=t}if(!r.stack)return"(no stack trace available)"}return r.stack.toString()}();return n.extraStackTrace&&(r+="\n"+n.extraStackTrace()),r.replace(/\b_Z[\w\d_]+/g,(function(r){return r==r?r:r+" ["+r+"]"}))}A.push({func:function(){dr()}});var Z=42,K={splitPath:function(r){return/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(r).slice(1)},normalizeArray:function(r,t){for(var e=0,n=r.length-1;n>=0;n--){var o=r[n];"."===o?r.splice(n,1):".."===o?(r.splice(n,1),e++):e&&(r.splice(n,1),e--)}if(t)for(;e;e--)r.unshift("..");return r},normalize:function(r){var t="/"===r.charAt(0),e="/"===r.substr(-1);return(r=K.normalizeArray(r.split("/").filter((function(r){return!!r})),!t).join("/"))||t||(r="."),r&&e&&(r+="/"),(t?"/":"")+r},dirname:function(r){var t=K.splitPath(r),e=t[0],n=t[1];return e||n?(n&&(n=n.substr(0,n.length-1)),e+n):"."},basename:function(r){if("/"===r)return"/";var t=r.lastIndexOf("/");return-1===t?r:r.substr(t+1)},extname:function(r){return K.splitPath(r)[3]},join:function(){var r=Array.prototype.slice.call(arguments,0);return K.normalize(r.join("/"))},join2:function(r,t){return K.normalize(r+"/"+t)}};function $(r){return n.___errno_location&&(_[n.___errno_location()>>2]=r),r}var Q={resolve:function(){for(var r="",t=!1,e=arguments.length-1;e>=-1&&!t;e--){var n=e>=0?arguments[e]:er.cwd();if("string"!=typeof n)throw new TypeError("Arguments to path.resolve must be strings");if(!n)return"";r=n+"/"+r,t="/"===n.charAt(0)}return(t?"/":"")+(r=K.normalizeArray(r.split("/").filter((function(r){return!!r})),!t).join("/"))||"."},relative:function(r,t){function e(r){for(var t=0;t=0&&""===r[e];e--);return t>e?[]:r.slice(t,e-t+1)}r=Q.resolve(r).substr(1),t=Q.resolve(t).substr(1);for(var n=e(r.split("/")),o=e(t.split("/")),i=Math.min(n.length,o.length),a=i,s=0;s0&&(f(E(r.output,0)),r.output=[])}},default_tty1_ops:{put_char:function(r,t){null===t||10===t?(l(E(r.output,0)),r.output=[]):0!=t&&r.output.push(t)},flush:function(r){r.output&&r.output.length>0&&(l(E(r.output,0)),r.output=[])}}},tr={ops_table:null,mount:function(r){return tr.createNode(null,"/",16895,0)},createNode:function(r,t,e,n){if(er.isBlkdev(e)||er.isFIFO(e))throw new er.ErrnoError(63);tr.ops_table||(tr.ops_table={dir:{node:{getattr:tr.node_ops.getattr,setattr:tr.node_ops.setattr,lookup:tr.node_ops.lookup,mknod:tr.node_ops.mknod,rename:tr.node_ops.rename,unlink:tr.node_ops.unlink,rmdir:tr.node_ops.rmdir,readdir:tr.node_ops.readdir,symlink:tr.node_ops.symlink},stream:{llseek:tr.stream_ops.llseek}},file:{node:{getattr:tr.node_ops.getattr,setattr:tr.node_ops.setattr},stream:{llseek:tr.stream_ops.llseek,read:tr.stream_ops.read,write:tr.stream_ops.write,allocate:tr.stream_ops.allocate,mmap:tr.stream_ops.mmap,msync:tr.stream_ops.msync}},link:{node:{getattr:tr.node_ops.getattr,setattr:tr.node_ops.setattr,readlink:tr.node_ops.readlink},stream:{}},chrdev:{node:{getattr:tr.node_ops.getattr,setattr:tr.node_ops.setattr},stream:er.chrdev_stream_ops}});var o=er.createNode(r,t,e,n);return er.isDir(o.mode)?(o.node_ops=tr.ops_table.dir.node,o.stream_ops=tr.ops_table.dir.stream,o.contents={}):er.isFile(o.mode)?(o.node_ops=tr.ops_table.file.node,o.stream_ops=tr.ops_table.file.stream,o.usedBytes=0,o.contents=null):er.isLink(o.mode)?(o.node_ops=tr.ops_table.link.node,o.stream_ops=tr.ops_table.link.stream):er.isChrdev(o.mode)&&(o.node_ops=tr.ops_table.chrdev.node,o.stream_ops=tr.ops_table.chrdev.stream),o.timestamp=Date.now(),r&&(r.contents[t]=o),o},getFileDataAsRegularArray:function(r){if(r.contents&&r.contents.subarray){for(var t=[],e=0;e=t)){t=Math.max(t,e*(e<1048576?2:1.125)|0),0!=e&&(t=Math.max(t,256));var n=r.contents;r.contents=new Uint8Array(t),r.usedBytes>0&&r.contents.set(n.subarray(0,r.usedBytes),0)}},resizeFileStorage:function(r,t){if(r.usedBytes!=t){if(0==t)return r.contents=null,void(r.usedBytes=0);if(!r.contents||r.contents.subarray){var e=r.contents;return r.contents=new Uint8Array(t),e&&r.contents.set(e.subarray(0,Math.min(t,r.usedBytes))),void(r.usedBytes=t)}if(r.contents||(r.contents=[]),r.contents.length>t)r.contents.length=t;else for(;r.contents.length=r.node.usedBytes)return 0;var a=Math.min(r.node.usedBytes-o,n);if(a>8&&i.subarray)t.set(i.subarray(o,o+a),e);else for(var s=0;s0||o+n8)throw new er.ErrnoError(32);for(var o=K.normalizeArray(r.split("/").filter((function(r){return!!r})),!1),i=er.root,a="/",s=0;s40)throw new er.ErrnoError(32)}}return{path:a,node:i}},getPath:function(r){for(var t;;){if(er.isRoot(r)){var e=r.mount.mountpoint;return t?"/"!==e[e.length-1]?e+"/"+t:e+t:e}t=t?r.name+"/"+t:r.name,r=r.parent}},hashName:function(r,t){for(var e=0,n=0;n>>0)%er.nameTable.length},hashAddNode:function(r){var t=er.hashName(r.parent.id,r.name);r.name_next=er.nameTable[t],er.nameTable[t]=r},hashRemoveNode:function(r){var t=er.hashName(r.parent.id,r.name);if(er.nameTable[t]===r)er.nameTable[t]=r.name_next;else for(var e=er.nameTable[t];e;){if(e.name_next===r){e.name_next=r.name_next;break}e=e.name_next}},lookupNode:function(r,t){var e=er.mayLookup(r);if(e)throw new er.ErrnoError(e,r);for(var n=er.hashName(r.id,t),o=er.nameTable[n];o;o=o.name_next){var i=o.name;if(o.parent.id===r.id&&i===t)return o}return er.lookup(r,t)},createNode:function(r,t,e,n){er.FSNode||(er.FSNode=function(r,t,e,n){r||(r=this),this.parent=r,this.mount=r.mount,this.mounted=null,this.id=er.nextInode++,this.name=t,this.mode=e,this.node_ops={},this.stream_ops={},this.rdev=n},er.FSNode.prototype={},Object.defineProperties(er.FSNode.prototype,{read:{get:function(){return 365==(365&this.mode)},set:function(r){r?this.mode|=365:this.mode&=-366}},write:{get:function(){return 146==(146&this.mode)},set:function(r){r?this.mode|=146:this.mode&=-147}},isFolder:{get:function(){return er.isDir(this.mode)}},isDevice:{get:function(){return er.isChrdev(this.mode)}}}));var o=new er.FSNode(r,t,e,n);return er.hashAddNode(o),o},destroyNode:function(r){er.hashRemoveNode(r)},isRoot:function(r){return r===r.parent},isMountpoint:function(r){return!!r.mounted},isFile:function(r){return 32768==(61440&r)},isDir:function(r){return 16384==(61440&r)},isLink:function(r){return 40960==(61440&r)},isChrdev:function(r){return 8192==(61440&r)},isBlkdev:function(r){return 24576==(61440&r)},isFIFO:function(r){return 4096==(61440&r)},isSocket:function(r){return 49152==(49152&r)},flagModes:{r:0,rs:1052672,"r+":2,w:577,wx:705,xw:705,"w+":578,"wx+":706,"xw+":706,a:1089,ax:1217,xa:1217,"a+":1090,"ax+":1218,"xa+":1218},modeStringToFlags:function(r){var t=er.flagModes[r];if(void 0===t)throw new Error("Unknown file open mode: "+r);return t},flagsToPermissionString:function(r){var t=["r","w","rw"][3&r];return 512&r&&(t+="w"),t},nodePermissions:function(r,t){return er.ignorePermissions||(-1===t.indexOf("r")||292&r.mode)&&(-1===t.indexOf("w")||146&r.mode)&&(-1===t.indexOf("x")||73&r.mode)?0:2},mayLookup:function(r){var t=er.nodePermissions(r,"x");return t||(r.node_ops.lookup?0:2)},mayCreate:function(r,t){try{return er.lookupNode(r,t),20}catch(r){}return er.nodePermissions(r,"wx")},mayDelete:function(r,t,e){var n;try{n=er.lookupNode(r,t)}catch(r){return r.errno}var o=er.nodePermissions(r,"wx");if(o)return o;if(e){if(!er.isDir(n.mode))return 54;if(er.isRoot(n)||er.getPath(n)===er.cwd())return 10}else if(er.isDir(n.mode))return 31;return 0},mayOpen:function(r,t){return r?er.isLink(r.mode)?32:er.isDir(r.mode)&&("r"!==er.flagsToPermissionString(t)||512&t)?31:er.nodePermissions(r,er.flagsToPermissionString(t)):44},MAX_OPEN_FDS:4096,nextfd:function(r,t){r=r||0,t=t||er.MAX_OPEN_FDS;for(var e=r;e<=t;e++)if(!er.streams[e])return e;throw new er.ErrnoError(33)},getStream:function(r){return er.streams[r]},createStream:function(r,t,e){er.FSStream||(er.FSStream=function(){},er.FSStream.prototype={},Object.defineProperties(er.FSStream.prototype,{object:{get:function(){return this.node},set:function(r){this.node=r}},isRead:{get:function(){return 1!=(2097155&this.flags)}},isWrite:{get:function(){return 0!=(2097155&this.flags)}},isAppend:{get:function(){return 1024&this.flags}}}));var n=new er.FSStream;for(var o in r)n[o]=r[o];r=n;var i=er.nextfd(t,e);return r.fd=i,er.streams[i]=r,r},closeStream:function(r){er.streams[r]=null},chrdev_stream_ops:{open:function(r){var t=er.getDevice(r.node.rdev);r.stream_ops=t.stream_ops,r.stream_ops.open&&r.stream_ops.open(r)},llseek:function(){throw new er.ErrnoError(70)}},major:function(r){return r>>8},minor:function(r){return 255&r},makedev:function(r,t){return r<<8|t},registerDevice:function(r,t){er.devices[r]={stream_ops:t}},getDevice:function(r){return er.devices[r]},getMounts:function(r){for(var t=[],e=[r];e.length;){var n=e.pop();t.push(n),e.push.apply(e,n.mounts)}return t},syncfs:function(r,t){"function"==typeof r&&(t=r,r=!1),er.syncFSRequests++,er.syncFSRequests>1&&l("warning: "+er.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work");var e=er.getMounts(er.root.mount),n=0;function o(r){return er.syncFSRequests--,t(r)}function i(r){if(r)return i.errored?void 0:(i.errored=!0,o(r));++n>=e.length&&o(null)}e.forEach((function(t){if(!t.type.syncfs)return i(null);t.type.syncfs(t,r,i)}))},mount:function(r,t,e){var n,o="/"===e,i=!e;if(o&&er.root)throw new er.ErrnoError(10);if(!o&&!i){var a=er.lookupPath(e,{follow_mount:!1});if(e=a.path,n=a.node,er.isMountpoint(n))throw new er.ErrnoError(10);if(!er.isDir(n.mode))throw new er.ErrnoError(54)}var s={type:r,opts:t,mountpoint:e,mounts:[]},u=r.mount(s);return u.mount=s,s.root=u,o?er.root=u:n&&(n.mounted=s,n.mount&&n.mount.mounts.push(s)),u},unmount:function(r){var t=er.lookupPath(r,{follow_mount:!1});if(!er.isMountpoint(t.node))throw new er.ErrnoError(28);var e=t.node,n=e.mounted,o=er.getMounts(n);Object.keys(er.nameTable).forEach((function(r){for(var t=er.nameTable[r];t;){var e=t.name_next;-1!==o.indexOf(t.mount)&&er.destroyNode(t),t=e}})),e.mounted=null;var i=e.mount.mounts.indexOf(n);e.mount.mounts.splice(i,1)},lookup:function(r,t){return r.node_ops.lookup(r,t)},mknod:function(r,t,e){var n=er.lookupPath(r,{parent:!0}).node,o=K.basename(r);if(!o||"."===o||".."===o)throw new er.ErrnoError(28);var i=er.mayCreate(n,o);if(i)throw new er.ErrnoError(i);if(!n.node_ops.mknod)throw new er.ErrnoError(63);return n.node_ops.mknod(n,o,t,e)},create:function(r,t){return t=void 0!==t?t:438,t&=4095,t|=32768,er.mknod(r,t,0)},mkdir:function(r,t){return t=void 0!==t?t:511,t&=1023,t|=16384,er.mknod(r,t,0)},mkdirTree:function(r,t){for(var e=r.split("/"),n="",o=0;othis.length-1||r<0)){var t=r%this.chunkSize,e=r/this.chunkSize|0;return this.getter(e)[t]}},i.prototype.setDataGetter=function(r){this.getter=r},i.prototype.cacheLength=function(){var r=new XMLHttpRequest;if(r.open("HEAD",e,!1),r.send(null),!(r.status>=200&&r.status<300||304===r.status))throw new Error("Couldn't load "+e+". Status: "+r.status);var t,n=Number(r.getResponseHeader("Content-length")),o=(t=r.getResponseHeader("Accept-Ranges"))&&"bytes"===t,i=(t=r.getResponseHeader("Content-Encoding"))&&"gzip"===t,a=1048576;o||(a=n);var s=this;s.setDataGetter((function(r){var t=r*a,o=(r+1)*a-1;if(o=Math.min(o,n-1),void 0===s.chunks[r]&&(s.chunks[r]=function(r,t){if(r>t)throw new Error("invalid range ("+r+", "+t+") or no bytes requested!");if(t>n-1)throw new Error("only "+n+" bytes available! programmer error!");var o=new XMLHttpRequest;if(o.open("GET",e,!1),n!==a&&o.setRequestHeader("Range","bytes="+r+"-"+t),"undefined"!=typeof Uint8Array&&(o.responseType="arraybuffer"),o.overrideMimeType&&o.overrideMimeType("text/plain; charset=x-user-defined"),o.send(null),!(o.status>=200&&o.status<300||304===o.status))throw new Error("Couldn't load "+e+". Status: "+o.status);return void 0!==o.response?new Uint8Array(o.response||[]):ur(o.responseText||"",!0)}(t,o)),void 0===s.chunks[r])throw new Error("doXHR failed!");return s.chunks[r]})),!i&&n||(a=n=1,n=this.getter(0).length,a=n,f("LazyFiles on gzip forces download of the whole file when length is accessed")),this._length=n,this._chunkSize=a,this.lengthKnown=!0},"undefined"!=typeof XMLHttpRequest)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var a={isDevice:!1,url:e},s=er.createFile(r,t,a,n,o);a.contents?s.contents=a.contents:a.url&&(s.contents=null,s.url=a.url),Object.defineProperties(s,{usedBytes:{get:function(){return this.contents.length}}});var u={};return Object.keys(s.stream_ops).forEach((function(r){var t=s.stream_ops[r];u[r]=function(){if(!er.forceLoadFile(s))throw new er.ErrnoError(29);return t.apply(null,arguments)}})),u.read=function(r,t,e,n,o){if(!er.forceLoadFile(s))throw new er.ErrnoError(29);var i=r.node.contents;if(o>=i.length)return 0;var a=Math.min(i.length-o,n);if(i.slice)for(var u=0;u>2]=n.dev,_[e+4>>2]=0,_[e+8>>2]=n.ino,_[e+12>>2]=n.mode,_[e+16>>2]=n.nlink,_[e+20>>2]=n.uid,_[e+24>>2]=n.gid,_[e+28>>2]=n.rdev,_[e+32>>2]=0,Y=[n.size>>>0,(q=n.size,+O(q)>=1?q>0?(0|z(+T(q/4294967296),4294967295))>>>0:~~+j((q-+(~~q>>>0))/4294967296)>>>0:0)],_[e+40>>2]=Y[0],_[e+44>>2]=Y[1],_[e+48>>2]=4096,_[e+52>>2]=n.blocks,_[e+56>>2]=n.atime.getTime()/1e3|0,_[e+60>>2]=0,_[e+64>>2]=n.mtime.getTime()/1e3|0,_[e+68>>2]=0,_[e+72>>2]=n.ctime.getTime()/1e3|0,_[e+76>>2]=0,Y=[n.ino>>>0,(q=n.ino,+O(q)>=1?q>0?(0|z(+T(q/4294967296),4294967295))>>>0:~~+j((q-+(~~q>>>0))/4294967296)>>>0:0)],_[e+80>>2]=Y[0],_[e+84>>2]=Y[1],0},doMsync:function(r,t,e,n,o){var i=v.slice(r,r+e);er.msync(t,i,o,e,n)},doMkdir:function(r,t){return"/"===(r=K.normalize(r))[r.length-1]&&(r=r.substr(0,r.length-1)),er.mkdir(r,t,0),0},doMknod:function(r,t,e){switch(61440&t){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-28}return er.mknod(r,t,e),0},doReadlink:function(r,t,e){if(e<=0)return-28;var n=er.readlink(r),o=Math.min(e,D(n)),i=y[t+o];return b(n,v,t,e+1),y[t+o]=i,o},doAccess:function(r,t){if(-8&t)return-28;var e;if(!(e=er.lookupPath(r,{follow:!0}).node))return-44;var n="";return 4&t&&(n+="r"),2&t&&(n+="w"),1&t&&(n+="x"),n&&er.nodePermissions(e,n)?-2:0},doDup:function(r,t,e){var n=er.getStream(e);return n&&er.close(n),er.open(r,t,0,e,e).fd},doReadv:function(r,t,e,n){for(var o=0,i=0;i>2],s=_[t+(8*i+4)>>2],u=er.read(r,y,a,s,n);if(u<0)return-1;if(o+=u,u>2],s=_[t+(8*i+4)>>2],u=er.write(r,y,a,s,n);if(u<0)return-1;o+=u}return o},varargs:0,get:function(r){return nr.varargs+=4,_[nr.varargs-4>>2]},getStr:function(){return k(nr.get())},getStreamFromFD:function(r){void 0===r&&(r=nr.get());var t=er.getStream(r);if(!t)throw new er.ErrnoError(8);return t},get64:function(){var r=nr.get();return nr.get(),r},getZero:function(){nr.get()}};function or(r){try{return c.grow(r-h.byteLength+65535>>16),S(c.buffer),1}catch(r){}}var ir={};function ar(){if(!ar.strings){var r={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:("object"==typeof navigator&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:a||"./this.program"};for(var t in ir)r[t]=ir[t];var e=[];for(var t in r)e.push(t+"="+r[t]);ar.strings=e}return ar.strings}function sr(r,t){sr.array||(sr.array=[]);var e,n=sr.array;for(n.length=0;e=v[r++];)100===e||102===e?(t=t+7&-8,n.push(w[t>>3]),t+=8):(t=t+3&-4,n.push(_[t>>2]),t+=4);return n}function ur(r,t,e){var n=e>0?e:D(r)+1,o=new Array(n),i=b(r,o,0,o.length);return t&&(o.length=i),o}er.staticInit();var cr={h:function(r,t){nr.varargs=t;try{return Z}catch(r){return void 0!==er&&r instanceof er.ErrnoError||H(r),-r.errno}},e:function(){H()},a:function(r,t,e){var n=sr(t,e);return X[r].apply(null,n)},c:function(r,t,e){v.set(v.subarray(t,t+e),r)},d:function(r){var t=v.length;if(r>2147418112)return!1;for(var e,n,o=1;o<=4;o*=2){var i=t*(1+.2/o);if(i=Math.min(i,r+100663296),or(Math.min(2147418112,((e=Math.max(16777216,r,i))%(n=65536)>0&&(e+=n-e%n),e))))return!0}return!1},f:function(r,t){var e=ar(),n=0;return e.forEach((function(e,o){var i=t+n;_[r+4*o>>2]=i,function(r,t,e){for(var n=0;n>0]=r.charCodeAt(n);e||(y[t>>0]=0)}(e,i),n+=e.length+1})),0},g:function(r,t){var e=ar();_[r>>2]=e.length;var n=0;return e.forEach((function(r){n+=r.length+1})),_[t>>2]=n,0},j:function(r){try{var t=nr.getStreamFromFD(r);return er.close(t),0}catch(r){return void 0!==er&&r instanceof er.ErrnoError||H(r),r.errno}},i:function(r,t,e,n,o){try{var i=nr.getStreamFromFD(r),a=4294967296*e+(t>>>0);return a<=-9007199254740992||a>=9007199254740992?-61:(er.llseek(i,a,n),Y=[i.position>>>0,(q=i.position,+O(q)>=1?q>0?(0|z(+T(q/4294967296),4294967295))>>>0:~~+j((q-+(~~q>>>0))/4294967296)>>>0:0)],_[o>>2]=Y[0],_[o+4>>2]=Y[1],i.getdents&&0===a&&0===n&&(i.getdents=null),0)}catch(r){return void 0!==er&&r instanceof er.ErrnoError||H(r),r.errno}},b:function(r,t,e,n){try{var o=nr.getStreamFromFD(r),i=nr.doWritev(o,t,e);return _[n>>2]=i,0}catch(r){return void 0!==er&&r instanceof er.ErrnoError||H(r),r.errno}},k:function(r){var t=Date.now();return _[r>>2]=t/1e3|0,_[r+4>>2]=t%1e3*1e3|0,0},memory:c,table:d},fr=function(){var r={a:cr};function t(r,t){var e=r.exports;n.asm=e,I()}function e(r){t(r.instance)}function o(t){return(u||"function"!=typeof fetch?new Promise((function(r,t){r(V())})):fetch(J,{credentials:"same-origin"}).then((function(r){if(!r.ok)throw"failed to load wasm binary file at '"+J+"'";return r.arrayBuffer()})).catch((function(){return V()}))).then((function(t){return WebAssembly.instantiate(t,r)})).then(t,(function(r){l("failed to asynchronously prepare wasm: "+r),H(r)}))}if(L(),n.instantiateWasm)try{return n.instantiateWasm(r,t)}catch(r){return l("Module.instantiateWasm callback failed with error: "+r),!1}return function(){if(u||"function"!=typeof WebAssembly.instantiateStreaming||U(J)||"function"!=typeof fetch)return o(e);fetch(J,{credentials:"same-origin"}).then((function(t){return WebAssembly.instantiateStreaming(t,r).then(e,(function(r){l("wasm streaming compile failed: "+r),l("falling back to ArrayBuffer instantiation"),o(e)}))}))}(),{}}();n.asm=fr;var lr,dr=n.___wasm_call_ctors=function(){return(dr=n.___wasm_call_ctors=n.asm.l).apply(null,arguments)},pr=n._emscripten_bind_CExpat_CExpat_0=function(){return(pr=n._emscripten_bind_CExpat_CExpat_0=n.asm.m).apply(null,arguments)},mr=n._emscripten_bind_CExpat_create_0=function(){return(mr=n._emscripten_bind_CExpat_create_0=n.asm.n).apply(null,arguments)},hr=n._emscripten_bind_CExpat_destroy_0=function(){return(hr=n._emscripten_bind_CExpat_destroy_0=n.asm.o).apply(null,arguments)},yr=n._emscripten_bind_CExpat_parse_1=function(){return(yr=n._emscripten_bind_CExpat_parse_1=n.asm.p).apply(null,arguments)},vr=n._emscripten_bind_CExpat_tag_0=function(){return(vr=n._emscripten_bind_CExpat_tag_0=n.asm.q).apply(null,arguments)},_r=n._emscripten_bind_CExpat_attrs_0=function(){return(_r=n._emscripten_bind_CExpat_attrs_0=n.asm.r).apply(null,arguments)},wr=n._emscripten_bind_CExpat_content_0=function(){return(wr=n._emscripten_bind_CExpat_content_0=n.asm.s).apply(null,arguments)},gr=n._emscripten_bind_CExpat_startElement_0=function(){return(gr=n._emscripten_bind_CExpat_startElement_0=n.asm.t).apply(null,arguments)},Er=n._emscripten_bind_CExpat_endElement_0=function(){return(Er=n._emscripten_bind_CExpat_endElement_0=n.asm.u).apply(null,arguments)},kr=n._emscripten_bind_CExpat_characterData_0=function(){return(kr=n._emscripten_bind_CExpat_characterData_0=n.asm.v).apply(null,arguments)},br=n._emscripten_bind_CExpat___destroy___0=function(){return(br=n._emscripten_bind_CExpat___destroy___0=n.asm.w).apply(null,arguments)},Dr=n._emscripten_bind_CExpatJS_CExpatJS_0=function(){return(Dr=n._emscripten_bind_CExpatJS_CExpatJS_0=n.asm.x).apply(null,arguments)},Sr=n._emscripten_bind_CExpatJS_startElement_0=function(){return(Sr=n._emscripten_bind_CExpatJS_startElement_0=n.asm.y).apply(null,arguments)},Fr=n._emscripten_bind_CExpatJS_endElement_0=function(){return(Fr=n._emscripten_bind_CExpatJS_endElement_0=n.asm.z).apply(null,arguments)},Pr=n._emscripten_bind_CExpatJS_characterData_0=function(){return(Pr=n._emscripten_bind_CExpatJS_characterData_0=n.asm.A).apply(null,arguments)},xr=n._emscripten_bind_CExpatJS___destroy___0=function(){return(xr=n._emscripten_bind_CExpatJS___destroy___0=n.asm.B).apply(null,arguments)},Ar=n._emscripten_bind_VoidPtr___destroy___0=function(){return(Ar=n._emscripten_bind_VoidPtr___destroy___0=n.asm.C).apply(null,arguments)},Mr=n._malloc=function(){return(Mr=n._malloc=n.asm.D).apply(null,arguments)};function Cr(r){function t(){lr||(lr=!0,p||(R=!0,n.noFSInit||er.init.initialized||er.init(),rr.init(),P(A),er.ignorePermissions=!1,P(M),n.onRuntimeInitialized&&n.onRuntimeInitialized(),function(){if(n.postRun)for("function"==typeof n.postRun&&(n.postRun=[n.postRun]);n.postRun.length;)r=n.postRun.shift(),C.unshift(r);var r;P(C)}()))}B>0||(function(){if(n.preRun)for("function"==typeof n.preRun&&(n.preRun=[n.preRun]);n.preRun.length;)r=n.preRun.shift(),x.unshift(r);var r;P(x)}(),B>0||(n.setStatus?(n.setStatus("Running..."),setTimeout((function(){setTimeout((function(){n.setStatus("")}),1),t()}),1)):t()))}if(n._free=function(){return(n._free=n.asm.E).apply(null,arguments)},n.___errno_location=function(){return(n.___errno_location=n.asm.F).apply(null,arguments)},n.stackAlloc=function(){return(n.stackAlloc=n.asm.G).apply(null,arguments)},n.dynCall_vi=function(){return(n.dynCall_vi=n.asm.H).apply(null,arguments)},n.asm=fr,n.then=function(r){if(lr)r(n);else{var t=n.onRuntimeInitialized;n.onRuntimeInitialized=function(){t&&t(),r(n)}}return n},N=function r(){lr||Cr(),lr||(N=r)},n.run=Cr,n.preInit)for("function"==typeof n.preInit&&(n.preInit=[n.preInit]);n.preInit.length>0;)n.preInit.pop()();function Rr(){}function Or(r){return(r||Rr).__cache__}function jr(r,t){var e=Or(t),n=e[r];return n||((n=Object.create((t||Rr).prototype)).ptr=r,e[r]=n)}Cr(),Rr.prototype=Object.create(Rr.prototype),Rr.prototype.constructor=Rr,Rr.prototype.__class__=Rr,Rr.__cache__={},n.WrapperObject=Rr,n.getCache=Or,n.wrapPointer=jr,n.castObject=function(r,t){return jr(r.ptr,t)},n.NULL=jr(0),n.destroy=function(r){if(!r.__destroy__)throw"Error: Cannot destroy object. (Did you create it yourself?)";r.__destroy__(),delete Or(r.__class__)[r.ptr]},n.compare=function(r,t){return r.ptr===t.ptr},n.getPointer=function(r){return r.ptr},n.getClass=function(r){return r.__class__};var Tr,zr={buffer:0,size:0,pos:0,temps:[],needed:0,prepare:function(){if(zr.needed){for(var r=0;r=zr.size?(m(i>0),zr.needed+=i,e=n._malloc(i),zr.temps.push(e)):(e=zr.buffer+zr.pos,zr.pos+=i),e},copy:function(r,t,e){var n=e;switch(t.BYTES_PER_ELEMENT){case 2:n>>=1;break;case 4:n>>=2;break;case 8:n>>=3}for(var o=0;o=n);)++o;if(o-t>16&&r.subarray&&S)return S.decode(r.subarray(t,o));for(var i="";t>10,56320|1023&c)}}else i+=String.fromCharCode((31&a)<<6|s)}else i+=String.fromCharCode(a)}return i}function P(r,t){return r?F(E,r,t):""}function x(r,t,e,n){if(!(n>0))return 0;for(var o=e,i=e+n-1,a=0;a=55296&&s<=57343&&(s=65536+((1023&s)<<10)|1023&r.charCodeAt(++a)),s<=127){if(e>=i)break;t[e++]=s}else if(s<=2047){if(e+1>=i)break;t[e++]=192|s>>6,t[e++]=128|63&s}else if(s<=65535){if(e+2>=i)break;t[e++]=224|s>>12,t[e++]=128|s>>6&63,t[e++]=128|63&s}else{if(e+3>=i)break;t[e++]=240|s>>18,t[e++]=128|s>>12&63,t[e++]=128|s>>6&63,t[e++]=128|63&s}}return t[e]=0,e-o}function A(r){for(var t=0,e=0;e=55296&&n<=57343&&(n=65536+((1023&n)<<10)|1023&r.charCodeAt(++e)),n<=127?++t:t+=n<=2047?2:n<=65535?3:4}return t}function M(r){w=r,n.HEAP8=g=new Int8Array(r),n.HEAP16=k=new Int16Array(r),n.HEAP32=b=new Int32Array(r),n.HEAPU8=E=new Uint8Array(r),n.HEAPU16=new Uint16Array(r),n.HEAPU32=new Uint32Array(r),n.HEAPF32=new Float32Array(r),n.HEAPF64=D=new Float64Array(r)}"undefined"!=typeof TextDecoder&&new TextDecoder("utf-16le");var C=n.TOTAL_MEMORY||16777216;function R(r){for(;r.length>0;){var t=r.shift();if("function"!=typeof t){var e=t.func;"number"==typeof e?void 0===t.arg?n.dynCall_v(e):n.dynCall_vi(e,t.arg):e(void 0===t.arg?null:t.arg)}else t()}}(p=n.wasmMemory?n.wasmMemory:new WebAssembly.Memory({initial:C/65536}))&&(w=p.buffer),C=w.byteLength,M(w),b[54044]=5459216;var O=[],j=[],T=[],z=[],B=!1,N=Math.abs,L=Math.ceil,I=Math.floor,H=Math.min,U=0,W=null;function q(r){U++,n.monitorRunDependencies&&n.monitorRunDependencies(U)}function Y(r){if(U--,n.monitorRunDependencies&&n.monitorRunDependencies(U),0==U&&W){var t=W;W=null,t()}}function J(r){throw n.onAbort&&n.onAbort(r),c(r+=""),f(r),v=!0,r="abort("+r+"). Build with -s ASSERTIONS=1 for more info.",new WebAssembly.RuntimeError(r)}function V(r){return String.prototype.startsWith?r.startsWith("data:application/octet-stream;base64,"):0===r.indexOf("data:application/octet-stream;base64,")}n.preloadedImages={},n.preloadedAudios={};var X,G,Z,K="graphvizlib.wasm";function $(){try{if(l)return new Uint8Array(l);throw"both async and sync fetching of the wasm failed"}catch(r){J(r)}}V(K)||(X=K,K=n.locateFile?n.locateFile(X,u):u+X);var Q={1088:function(r,t){var e=P(r),n=P(t);sr.createPath("/",nr.dirname(e)),sr.writeFile(nr.join("/",e),n)}};function rr(){var r=function(){var r=new Error;if(!r.stack){try{throw new Error}catch(t){r=t}if(!r.stack)return"(no stack trace available)"}return r.stack.toString()}();return n.extraStackTrace&&(r+="\n"+n.extraStackTrace()),r.replace(/\b_Z[\w\d_]+/g,(function(r){return r==r?r:r+" ["+r+"]"}))}function tr(){J()}function er(r){return n.___errno_location&&(b[n.___errno_location()>>2]=r),r}j.push({func:function(){Fr()}});var nr={splitPath:function(r){return/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(r).slice(1)},normalizeArray:function(r,t){for(var e=0,n=r.length-1;n>=0;n--){var o=r[n];"."===o?r.splice(n,1):".."===o?(r.splice(n,1),e++):e&&(r.splice(n,1),e--)}if(t)for(;e;e--)r.unshift("..");return r},normalize:function(r){var t="/"===r.charAt(0),e="/"===r.substr(-1);return(r=nr.normalizeArray(r.split("/").filter((function(r){return!!r})),!t).join("/"))||t||(r="."),r&&e&&(r+="/"),(t?"/":"")+r},dirname:function(r){var t=nr.splitPath(r),e=t[0],n=t[1];return e||n?(n&&(n=n.substr(0,n.length-1)),e+n):"."},basename:function(r){if("/"===r)return"/";var t=r.lastIndexOf("/");return-1===t?r:r.substr(t+1)},extname:function(r){return nr.splitPath(r)[3]},join:function(){var r=Array.prototype.slice.call(arguments,0);return nr.normalize(r.join("/"))},join2:function(r,t){return nr.normalize(r+"/"+t)}},or={resolve:function(){for(var r="",t=!1,e=arguments.length-1;e>=-1&&!t;e--){var n=e>=0?arguments[e]:sr.cwd();if("string"!=typeof n)throw new TypeError("Arguments to path.resolve must be strings");if(!n)return"";r=n+"/"+r,t="/"===n.charAt(0)}return(t?"/":"")+(r=nr.normalizeArray(r.split("/").filter((function(r){return!!r})),!t).join("/"))||"."},relative:function(r,t){function e(r){for(var t=0;t=0&&""===r[e];e--);return t>e?[]:r.slice(t,e-t+1)}r=or.resolve(r).substr(1),t=or.resolve(t).substr(1);for(var n=e(r.split("/")),o=e(t.split("/")),i=Math.min(n.length,o.length),a=i,s=0;s0&&(c(F(r.output,0)),r.output=[])}},default_tty1_ops:{put_char:function(r,t){null===t||10===t?(f(F(r.output,0)),r.output=[]):0!=t&&r.output.push(t)},flush:function(r){r.output&&r.output.length>0&&(f(F(r.output,0)),r.output=[])}}},ar={ops_table:null,mount:function(r){return ar.createNode(null,"/",16895,0)},createNode:function(r,t,e,n){if(sr.isBlkdev(e)||sr.isFIFO(e))throw new sr.ErrnoError(63);ar.ops_table||(ar.ops_table={dir:{node:{getattr:ar.node_ops.getattr,setattr:ar.node_ops.setattr,lookup:ar.node_ops.lookup,mknod:ar.node_ops.mknod,rename:ar.node_ops.rename,unlink:ar.node_ops.unlink,rmdir:ar.node_ops.rmdir,readdir:ar.node_ops.readdir,symlink:ar.node_ops.symlink},stream:{llseek:ar.stream_ops.llseek}},file:{node:{getattr:ar.node_ops.getattr,setattr:ar.node_ops.setattr},stream:{llseek:ar.stream_ops.llseek,read:ar.stream_ops.read,write:ar.stream_ops.write,allocate:ar.stream_ops.allocate,mmap:ar.stream_ops.mmap,msync:ar.stream_ops.msync}},link:{node:{getattr:ar.node_ops.getattr,setattr:ar.node_ops.setattr,readlink:ar.node_ops.readlink},stream:{}},chrdev:{node:{getattr:ar.node_ops.getattr,setattr:ar.node_ops.setattr},stream:sr.chrdev_stream_ops}});var o=sr.createNode(r,t,e,n);return sr.isDir(o.mode)?(o.node_ops=ar.ops_table.dir.node,o.stream_ops=ar.ops_table.dir.stream,o.contents={}):sr.isFile(o.mode)?(o.node_ops=ar.ops_table.file.node,o.stream_ops=ar.ops_table.file.stream,o.usedBytes=0,o.contents=null):sr.isLink(o.mode)?(o.node_ops=ar.ops_table.link.node,o.stream_ops=ar.ops_table.link.stream):sr.isChrdev(o.mode)&&(o.node_ops=ar.ops_table.chrdev.node,o.stream_ops=ar.ops_table.chrdev.stream),o.timestamp=Date.now(),r&&(r.contents[t]=o),o},getFileDataAsRegularArray:function(r){if(r.contents&&r.contents.subarray){for(var t=[],e=0;e=t)){t=Math.max(t,e*(e<1048576?2:1.125)|0),0!=e&&(t=Math.max(t,256));var n=r.contents;r.contents=new Uint8Array(t),r.usedBytes>0&&r.contents.set(n.subarray(0,r.usedBytes),0)}},resizeFileStorage:function(r,t){if(r.usedBytes!=t){if(0==t)return r.contents=null,void(r.usedBytes=0);if(!r.contents||r.contents.subarray){var e=r.contents;return r.contents=new Uint8Array(t),e&&r.contents.set(e.subarray(0,Math.min(t,r.usedBytes))),void(r.usedBytes=t)}if(r.contents||(r.contents=[]),r.contents.length>t)r.contents.length=t;else for(;r.contents.length=r.node.usedBytes)return 0;var a=Math.min(r.node.usedBytes-o,n);if(a>8&&i.subarray)t.set(i.subarray(o,o+a),e);else for(var s=0;s0||o+n8)throw new sr.ErrnoError(32);for(var o=nr.normalizeArray(r.split("/").filter((function(r){return!!r})),!1),i=sr.root,a="/",s=0;s40)throw new sr.ErrnoError(32)}}return{path:a,node:i}},getPath:function(r){for(var t;;){if(sr.isRoot(r)){var e=r.mount.mountpoint;return t?"/"!==e[e.length-1]?e+"/"+t:e+t:e}t=t?r.name+"/"+t:r.name,r=r.parent}},hashName:function(r,t){for(var e=0,n=0;n>>0)%sr.nameTable.length},hashAddNode:function(r){var t=sr.hashName(r.parent.id,r.name);r.name_next=sr.nameTable[t],sr.nameTable[t]=r},hashRemoveNode:function(r){var t=sr.hashName(r.parent.id,r.name);if(sr.nameTable[t]===r)sr.nameTable[t]=r.name_next;else for(var e=sr.nameTable[t];e;){if(e.name_next===r){e.name_next=r.name_next;break}e=e.name_next}},lookupNode:function(r,t){var e=sr.mayLookup(r);if(e)throw new sr.ErrnoError(e,r);for(var n=sr.hashName(r.id,t),o=sr.nameTable[n];o;o=o.name_next){var i=o.name;if(o.parent.id===r.id&&i===t)return o}return sr.lookup(r,t)},createNode:function(r,t,e,n){sr.FSNode||(sr.FSNode=function(r,t,e,n){r||(r=this),this.parent=r,this.mount=r.mount,this.mounted=null,this.id=sr.nextInode++,this.name=t,this.mode=e,this.node_ops={},this.stream_ops={},this.rdev=n},sr.FSNode.prototype={},Object.defineProperties(sr.FSNode.prototype,{read:{get:function(){return 365==(365&this.mode)},set:function(r){r?this.mode|=365:this.mode&=-366}},write:{get:function(){return 146==(146&this.mode)},set:function(r){r?this.mode|=146:this.mode&=-147}},isFolder:{get:function(){return sr.isDir(this.mode)}},isDevice:{get:function(){return sr.isChrdev(this.mode)}}}));var o=new sr.FSNode(r,t,e,n);return sr.hashAddNode(o),o},destroyNode:function(r){sr.hashRemoveNode(r)},isRoot:function(r){return r===r.parent},isMountpoint:function(r){return!!r.mounted},isFile:function(r){return 32768==(61440&r)},isDir:function(r){return 16384==(61440&r)},isLink:function(r){return 40960==(61440&r)},isChrdev:function(r){return 8192==(61440&r)},isBlkdev:function(r){return 24576==(61440&r)},isFIFO:function(r){return 4096==(61440&r)},isSocket:function(r){return 49152==(49152&r)},flagModes:{r:0,rs:1052672,"r+":2,w:577,wx:705,xw:705,"w+":578,"wx+":706,"xw+":706,a:1089,ax:1217,xa:1217,"a+":1090,"ax+":1218,"xa+":1218},modeStringToFlags:function(r){var t=sr.flagModes[r];if(void 0===t)throw new Error("Unknown file open mode: "+r);return t},flagsToPermissionString:function(r){var t=["r","w","rw"][3&r];return 512&r&&(t+="w"),t},nodePermissions:function(r,t){return sr.ignorePermissions||(-1===t.indexOf("r")||292&r.mode)&&(-1===t.indexOf("w")||146&r.mode)&&(-1===t.indexOf("x")||73&r.mode)?0:2},mayLookup:function(r){var t=sr.nodePermissions(r,"x");return t||(r.node_ops.lookup?0:2)},mayCreate:function(r,t){try{return sr.lookupNode(r,t),20}catch(r){}return sr.nodePermissions(r,"wx")},mayDelete:function(r,t,e){var n;try{n=sr.lookupNode(r,t)}catch(r){return r.errno}var o=sr.nodePermissions(r,"wx");if(o)return o;if(e){if(!sr.isDir(n.mode))return 54;if(sr.isRoot(n)||sr.getPath(n)===sr.cwd())return 10}else if(sr.isDir(n.mode))return 31;return 0},mayOpen:function(r,t){return r?sr.isLink(r.mode)?32:sr.isDir(r.mode)&&("r"!==sr.flagsToPermissionString(t)||512&t)?31:sr.nodePermissions(r,sr.flagsToPermissionString(t)):44},MAX_OPEN_FDS:4096,nextfd:function(r,t){r=r||0,t=t||sr.MAX_OPEN_FDS;for(var e=r;e<=t;e++)if(!sr.streams[e])return e;throw new sr.ErrnoError(33)},getStream:function(r){return sr.streams[r]},createStream:function(r,t,e){sr.FSStream||(sr.FSStream=function(){},sr.FSStream.prototype={},Object.defineProperties(sr.FSStream.prototype,{object:{get:function(){return this.node},set:function(r){this.node=r}},isRead:{get:function(){return 1!=(2097155&this.flags)}},isWrite:{get:function(){return 0!=(2097155&this.flags)}},isAppend:{get:function(){return 1024&this.flags}}}));var n=new sr.FSStream;for(var o in r)n[o]=r[o];r=n;var i=sr.nextfd(t,e);return r.fd=i,sr.streams[i]=r,r},closeStream:function(r){sr.streams[r]=null},chrdev_stream_ops:{open:function(r){var t=sr.getDevice(r.node.rdev);r.stream_ops=t.stream_ops,r.stream_ops.open&&r.stream_ops.open(r)},llseek:function(){throw new sr.ErrnoError(70)}},major:function(r){return r>>8},minor:function(r){return 255&r},makedev:function(r,t){return r<<8|t},registerDevice:function(r,t){sr.devices[r]={stream_ops:t}},getDevice:function(r){return sr.devices[r]},getMounts:function(r){for(var t=[],e=[r];e.length;){var n=e.pop();t.push(n),e.push.apply(e,n.mounts)}return t},syncfs:function(r,t){"function"==typeof r&&(t=r,r=!1),sr.syncFSRequests++,sr.syncFSRequests>1&&f("warning: "+sr.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work");var e=sr.getMounts(sr.root.mount),n=0;function o(r){return sr.syncFSRequests--,t(r)}function i(r){if(r)return i.errored?void 0:(i.errored=!0,o(r));++n>=e.length&&o(null)}e.forEach((function(t){if(!t.type.syncfs)return i(null);t.type.syncfs(t,r,i)}))},mount:function(r,t,e){var n,o="/"===e,i=!e;if(o&&sr.root)throw new sr.ErrnoError(10);if(!o&&!i){var a=sr.lookupPath(e,{follow_mount:!1});if(e=a.path,n=a.node,sr.isMountpoint(n))throw new sr.ErrnoError(10);if(!sr.isDir(n.mode))throw new sr.ErrnoError(54)}var s={type:r,opts:t,mountpoint:e,mounts:[]},u=r.mount(s);return u.mount=s,s.root=u,o?sr.root=u:n&&(n.mounted=s,n.mount&&n.mount.mounts.push(s)),u},unmount:function(r){var t=sr.lookupPath(r,{follow_mount:!1});if(!sr.isMountpoint(t.node))throw new sr.ErrnoError(28);var e=t.node,n=e.mounted,o=sr.getMounts(n);Object.keys(sr.nameTable).forEach((function(r){for(var t=sr.nameTable[r];t;){var e=t.name_next;-1!==o.indexOf(t.mount)&&sr.destroyNode(t),t=e}})),e.mounted=null;var i=e.mount.mounts.indexOf(n);e.mount.mounts.splice(i,1)},lookup:function(r,t){return r.node_ops.lookup(r,t)},mknod:function(r,t,e){var n=sr.lookupPath(r,{parent:!0}).node,o=nr.basename(r);if(!o||"."===o||".."===o)throw new sr.ErrnoError(28);var i=sr.mayCreate(n,o);if(i)throw new sr.ErrnoError(i);if(!n.node_ops.mknod)throw new sr.ErrnoError(63);return n.node_ops.mknod(n,o,t,e)},create:function(r,t){return t=void 0!==t?t:438,t&=4095,t|=32768,sr.mknod(r,t,0)},mkdir:function(r,t){return t=void 0!==t?t:511,t&=1023,t|=16384,sr.mknod(r,t,0)},mkdirTree:function(r,t){for(var e=r.split("/"),n="",o=0;othis.length-1||r<0)){var t=r%this.chunkSize,e=r/this.chunkSize|0;return this.getter(e)[t]}},i.prototype.setDataGetter=function(r){this.getter=r},i.prototype.cacheLength=function(){var r=new XMLHttpRequest;if(r.open("HEAD",e,!1),r.send(null),!(r.status>=200&&r.status<300||304===r.status))throw new Error("Couldn't load "+e+". Status: "+r.status);var t,n=Number(r.getResponseHeader("Content-length")),o=(t=r.getResponseHeader("Accept-Ranges"))&&"bytes"===t,i=(t=r.getResponseHeader("Content-Encoding"))&&"gzip"===t,a=1048576;o||(a=n);var s=this;s.setDataGetter((function(r){var t=r*a,o=(r+1)*a-1;if(o=Math.min(o,n-1),void 0===s.chunks[r]&&(s.chunks[r]=function(r,t){if(r>t)throw new Error("invalid range ("+r+", "+t+") or no bytes requested!");if(t>n-1)throw new Error("only "+n+" bytes available! programmer error!");var o=new XMLHttpRequest;if(o.open("GET",e,!1),n!==a&&o.setRequestHeader("Range","bytes="+r+"-"+t),"undefined"!=typeof Uint8Array&&(o.responseType="arraybuffer"),o.overrideMimeType&&o.overrideMimeType("text/plain; charset=x-user-defined"),o.send(null),!(o.status>=200&&o.status<300||304===o.status))throw new Error("Couldn't load "+e+". Status: "+o.status);return void 0!==o.response?new Uint8Array(o.response||[]):kr(o.responseText||"",!0)}(t,o)),void 0===s.chunks[r])throw new Error("doXHR failed!");return s.chunks[r]})),!i&&n||(a=n=1,n=this.getter(0).length,a=n,c("LazyFiles on gzip forces download of the whole file when length is accessed")),this._length=n,this._chunkSize=a,this.lengthKnown=!0},"undefined"!=typeof XMLHttpRequest)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var a={isDevice:!1,url:e},s=sr.createFile(r,t,a,n,o);a.contents?s.contents=a.contents:a.url&&(s.contents=null,s.url=a.url),Object.defineProperties(s,{usedBytes:{get:function(){return this.contents.length}}});var u={};return Object.keys(s.stream_ops).forEach((function(r){var t=s.stream_ops[r];u[r]=function(){if(!sr.forceLoadFile(s))throw new sr.ErrnoError(29);return t.apply(null,arguments)}})),u.read=function(r,t,e,n,o){if(!sr.forceLoadFile(s))throw new sr.ErrnoError(29);var i=r.node.contents;if(o>=i.length)return 0;var a=Math.min(i.length-o,n);if(i.slice)for(var u=0;u>2]=n.dev,b[e+4>>2]=0,b[e+8>>2]=n.ino,b[e+12>>2]=n.mode,b[e+16>>2]=n.nlink,b[e+20>>2]=n.uid,b[e+24>>2]=n.gid,b[e+28>>2]=n.rdev,b[e+32>>2]=0,Z=[n.size>>>0,(G=n.size,+N(G)>=1?G>0?(0|H(+I(G/4294967296),4294967295))>>>0:~~+L((G-+(~~G>>>0))/4294967296)>>>0:0)],b[e+40>>2]=Z[0],b[e+44>>2]=Z[1],b[e+48>>2]=4096,b[e+52>>2]=n.blocks,b[e+56>>2]=n.atime.getTime()/1e3|0,b[e+60>>2]=0,b[e+64>>2]=n.mtime.getTime()/1e3|0,b[e+68>>2]=0,b[e+72>>2]=n.ctime.getTime()/1e3|0,b[e+76>>2]=0,Z=[n.ino>>>0,(G=n.ino,+N(G)>=1?G>0?(0|H(+I(G/4294967296),4294967295))>>>0:~~+L((G-+(~~G>>>0))/4294967296)>>>0:0)],b[e+80>>2]=Z[0],b[e+84>>2]=Z[1],0},doMsync:function(r,t,e,n,o){var i=E.slice(r,r+e);sr.msync(t,i,o,e,n)},doMkdir:function(r,t){return"/"===(r=nr.normalize(r))[r.length-1]&&(r=r.substr(0,r.length-1)),sr.mkdir(r,t,0),0},doMknod:function(r,t,e){switch(61440&t){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-28}return sr.mknod(r,t,e),0},doReadlink:function(r,t,e){if(e<=0)return-28;var n=sr.readlink(r),o=Math.min(e,A(n)),i=g[t+o];return x(n,E,t,e+1),g[t+o]=i,o},doAccess:function(r,t){if(-8&t)return-28;var e;if(!(e=sr.lookupPath(r,{follow:!0}).node))return-44;var n="";return 4&t&&(n+="r"),2&t&&(n+="w"),1&t&&(n+="x"),n&&sr.nodePermissions(e,n)?-2:0},doDup:function(r,t,e){var n=sr.getStream(e);return n&&sr.close(n),sr.open(r,t,0,e,e).fd},doReadv:function(r,t,e,n){for(var o=0,i=0;i>2],s=b[t+(8*i+4)>>2],u=sr.read(r,g,a,s,n);if(u<0)return-1;if(o+=u,u>2],s=b[t+(8*i+4)>>2],u=sr.write(r,g,a,s,n);if(u<0)return-1;o+=u}return o},varargs:0,get:function(r){return ur.varargs+=4,b[ur.varargs-4>>2]},getStr:function(){return P(ur.get())},getStreamFromFD:function(r){void 0===r&&(r=ur.get());var t=sr.getStream(r);if(!t)throw new sr.ErrnoError(8);return t},get64:function(){var r=ur.get();return ur.get(),r},getZero:function(){ur.get()}};function cr(r,t,e){t|=0;var n,o=0,i=0,a=0;if(n=(r|=0)+(e|=0)|0,t&=255,(0|e)>=67){for(;0!=(3&r);)g[r>>0]=t,r=r+1|0;for(a=t|t<<8|t<<16|t<<24,i=(o=-4&n|0)-64|0;(0|r)<=(0|i);)b[r>>2]=a,b[r+4>>2]=a,b[r+8>>2]=a,b[r+12>>2]=a,b[r+16>>2]=a,b[r+20>>2]=a,b[r+24>>2]=a,b[r+28>>2]=a,b[r+32>>2]=a,b[r+36>>2]=a,b[r+40>>2]=a,b[r+44>>2]=a,b[r+48>>2]=a,b[r+52>>2]=a,b[r+56>>2]=a,b[r+60>>2]=a,r=r+64|0;for(;(0|r)<(0|o);)b[r>>2]=a,r=r+4|0}for(;(0|r)<(0|n);)g[r>>0]=t,r=r+1|0;return n-e|0}var fr=42,lr=0;function dr(r){try{return p.grow(r-w.byteLength+65535>>16),M(p.buffer),1}catch(r){}}var pr={};function mr(){if(!mr.strings){var r={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:("object"==typeof navigator&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:a||"./this.program"};for(var t in pr)r[t]=pr[t];var e=[];for(var t in r)e.push(t+"="+r[t]);mr.strings=e}return mr.strings}function hr(r){return r%4==0&&(r%100!=0||r%400==0)}function yr(r,t){for(var e=0,n=0;n<=t;e+=r[n++]);return e}var vr=[31,29,31,30,31,30,31,31,30,31,30,31],_r=[31,28,31,30,31,30,31,31,30,31,30,31];function wr(r,t){for(var e=new Date(r.getTime());t>0;){var n=hr(e.getFullYear()),o=e.getMonth(),i=(n?vr:_r)[o];if(!(t>i-e.getDate()))return e.setDate(e.getDate()+t),e;t-=i-e.getDate()+1,e.setDate(1),o<11?e.setMonth(o+1):(e.setMonth(0),e.setFullYear(e.getFullYear()+1))}return e}function gr(r,t,e,n){var o=b[n+40>>2],i={tm_sec:b[n>>2],tm_min:b[n+4>>2],tm_hour:b[n+8>>2],tm_mday:b[n+12>>2],tm_mon:b[n+16>>2],tm_year:b[n+20>>2],tm_wday:b[n+24>>2],tm_yday:b[n+28>>2],tm_isdst:b[n+32>>2],tm_gmtoff:b[n+36>>2],tm_zone:o?P(o):""},a=P(e),s={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var u in s)a=a.replace(new RegExp(u,"g"),s[u]);var c=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],f=["January","February","March","April","May","June","July","August","September","October","November","December"];function l(r,t,e){for(var n="number"==typeof r?r.toString():r||"";n.length0?1:0}var n;return 0===(n=e(r.getFullYear()-t.getFullYear()))&&0===(n=e(r.getMonth()-t.getMonth()))&&(n=e(r.getDate()-t.getDate())),n}function m(r){switch(r.getDay()){case 0:return new Date(r.getFullYear()-1,11,29);case 1:return r;case 2:return new Date(r.getFullYear(),0,3);case 3:return new Date(r.getFullYear(),0,2);case 4:return new Date(r.getFullYear(),0,1);case 5:return new Date(r.getFullYear()-1,11,31);case 6:return new Date(r.getFullYear()-1,11,30)}}function h(r){var t=wr(new Date(r.tm_year+1900,0,1),r.tm_yday),e=new Date(t.getFullYear(),0,4),n=new Date(t.getFullYear()+1,0,4),o=m(e),i=m(n);return p(o,t)<=0?p(i,t)<=0?t.getFullYear()+1:t.getFullYear():t.getFullYear()-1}var y={"%a":function(r){return c[r.tm_wday].substring(0,3)},"%A":function(r){return c[r.tm_wday]},"%b":function(r){return f[r.tm_mon].substring(0,3)},"%B":function(r){return f[r.tm_mon]},"%C":function(r){return d((r.tm_year+1900)/100|0,2)},"%d":function(r){return d(r.tm_mday,2)},"%e":function(r){return l(r.tm_mday,2," ")},"%g":function(r){return h(r).toString().substring(2)},"%G":function(r){return h(r)},"%H":function(r){return d(r.tm_hour,2)},"%I":function(r){var t=r.tm_hour;return 0==t?t=12:t>12&&(t-=12),d(t,2)},"%j":function(r){return d(r.tm_mday+yr(hr(r.tm_year+1900)?vr:_r,r.tm_mon-1),3)},"%m":function(r){return d(r.tm_mon+1,2)},"%M":function(r){return d(r.tm_min,2)},"%n":function(){return"\n"},"%p":function(r){return r.tm_hour>=0&&r.tm_hour<12?"AM":"PM"},"%S":function(r){return d(r.tm_sec,2)},"%t":function(){return"\t"},"%u":function(r){return r.tm_wday||7},"%U":function(r){var t=new Date(r.tm_year+1900,0,1),e=0===t.getDay()?t:wr(t,7-t.getDay()),n=new Date(r.tm_year+1900,r.tm_mon,r.tm_mday);if(p(e,n)<0){var o=yr(hr(n.getFullYear())?vr:_r,n.getMonth()-1)-31,i=31-e.getDate()+o+n.getDate();return d(Math.ceil(i/7),2)}return 0===p(e,t)?"01":"00"},"%V":function(r){var t,e=new Date(r.tm_year+1900,0,4),n=new Date(r.tm_year+1901,0,4),o=m(e),i=m(n),a=wr(new Date(r.tm_year+1900,0,1),r.tm_yday);return p(a,o)<0?"53":p(i,a)<=0?"01":(t=o.getFullYear()=0;return t=(t=Math.abs(t)/60)/60*100+t%60,(e?"+":"-")+String("0000"+t).slice(-4)},"%Z":function(r){return r.tm_zone},"%%":function(){return"%"}};for(var u in y)a.indexOf(u)>=0&&(a=a.replace(new RegExp(u,"g"),y[u](i)));var v=kr(a,!1);return v.length>t?0:(function(r,t){g.set(r,t)}(v,r),v.length-1)}function Er(r,t){Er.array||(Er.array=[]);var e,n=Er.array;for(n.length=0;e=E[r++];)100===e||102===e?(t=t+7&-8,n.push(D[t>>3]),t+=8):(t=t+3&-4,n.push(b[t>>2]),t+=4);return n}function kr(r,t,e){var n=e>0?e:A(r)+1,o=new Array(n),i=x(r,o,0,o.length);return t&&(o.length=i),o}tr=function(){return performance.now()},sr.staticInit();var br={M:function(r,t){return function(r,t){var e;if(0===r)e=Date.now();else{if(1!==r&&4!==r)return er(28),-1;e=tr()}return b[t>>2]=e/1e3|0,b[t+4>>2]=e%1e3*1e3*1e3|0,0}(r,t)},k:function(r){return Rr(r)},j:function(r,t,e){throw"uncaught_exception"in zr?zr.uncaught_exceptions++:zr.uncaught_exceptions=1,r},q:function(){},U:function(r,t){return er(63),-1},P:function(r,t){ur.varargs=t;try{var e=ur.getStr();return sr.unlink(e),0}catch(r){return void 0!==sr&&r instanceof sr.ErrnoError||J(r),-r.errno}},R:function(r,t){ur.varargs=t;try{return function(r,t,e,n,o,i){var a;i<<=12;var s=!1;if(0!=(16&n)&&r%16384!=0)return-28;if(0!=(32&n)){if(!(a=Br(16384,t)))return-48;cr(a,0,t),s=!0}else{var u=sr.getStream(o);if(!u)return-8;var c=sr.mmap(u,E,r,t,i,e,n);a=c.ptr,s=c.allocated}return ur.mappings[a]={malloc:a,len:t,allocated:s,fd:o,flags:n,offset:i},a}(ur.get(),ur.get(),ur.get(),ur.get(),ur.get(),ur.get())}catch(r){return void 0!==sr&&r instanceof sr.ErrnoError||J(r),-r.errno}},S:function(r,t){ur.varargs=t;try{var e=ur.getStr(),n=ur.get();return ur.doStat(sr.stat,e,n)}catch(r){return void 0!==sr&&r instanceof sr.ErrnoError||J(r),-r.errno}},T:function(r,t){ur.varargs=t;try{var e=ur.getStreamFromFD(),n=ur.get();return ur.doStat(sr.stat,e.path,n)}catch(r){return void 0!==sr&&r instanceof sr.ErrnoError||J(r),-r.errno}},L:function(r,t){ur.varargs=t;try{return fr}catch(r){return void 0!==sr&&r instanceof sr.ErrnoError||J(r),-r.errno}},y:function(r,t){ur.varargs=t;try{var e=ur.getStreamFromFD();switch(ur.get()){case 0:return(n=ur.get())<0?-28:sr.open(e.path,e.flags,0,n).fd;case 1:case 2:return 0;case 3:return e.flags;case 4:var n=ur.get();return e.flags|=n,0;case 12:return n=ur.get(),k[n+0>>1]=2,0;case 13:case 14:return 0;case 16:case 8:return-28;case 9:return er(28),-1;default:return-28}}catch(r){return void 0!==sr&&r instanceof sr.ErrnoError||J(r),-r.errno}},K:function(r,t){ur.varargs=t;try{var e=ur.getStr(),n=ur.get();return ur.doAccess(e,n)}catch(r){return void 0!==sr&&r instanceof sr.ErrnoError||J(r),-r.errno}},z:function(r,t){ur.varargs=t;try{var e=ur.getStr(),n=ur.get(),o=ur.get();return sr.open(e,n,o).fd}catch(r){return void 0!==sr&&r instanceof sr.ErrnoError||J(r),-r.errno}},O:function(r,t){ur.varargs=t;try{var e=ur.getStreamFromFD(),n=ur.get();switch(n){case 21509:case 21505:return e.tty?0:-59;case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:return e.tty?0:-59;case 21519:if(!e.tty)return-59;var o=ur.get();return b[o>>2]=0,0;case 21520:return e.tty?-28:-59;case 21531:return o=ur.get(),sr.ioctl(e,n,o);case 21523:case 21524:return e.tty?0:-59;default:J("bad ioctl syscall "+n)}}catch(r){return void 0!==sr&&r instanceof sr.ErrnoError||J(r),-r.errno}},Q:function(r,t){ur.varargs=t;try{return function(r,t){if(-1===r||0===t)return-28;var e=ur.mappings[r];if(!e)return 0;if(t===e.len){var n=sr.getStream(e.fd);ur.doMsync(r,n,t,e.flags,e.offset),sr.munmap(n),ur.mappings[r]=null,e.allocated&&Or(e.malloc)}return 0}(ur.get(),ur.get())}catch(r){return void 0!==sr&&r instanceof sr.ErrnoError||J(r),-r.errno}},m:function(){},w:function(){J()},C:function(r,t,e){var n=Er(t,e);return Q[r].apply(null,n)},d:function(r,t){!function(r,t){throw Tr(r,t||1),"longjmp"}(r,t)},E:function(r,t,e){E.set(E.subarray(t,t+e),r)},F:function(r){var t=E.length;if(r>2147418112)return!1;for(var e,n,o=1;o<=4;o*=2){var i=t*(1+.2/o);if(i=Math.min(i,r+100663296),dr(Math.min(2147418112,((e=Math.max(16777216,r,i))%(n=65536)>0&&(e+=n-e%n),e))))return!0}return!1},I:function(r,t){var e=mr(),n=0;return e.forEach((function(e,o){var i=t+n;b[r+4*o>>2]=i,function(r,t,e){for(var n=0;n>0]=r.charCodeAt(n);e||(g[t>>0]=0)}(e,i),n+=e.length+1})),0},J:function(r,t){var e=mr();b[r>>2]=e.length;var n=0;return e.forEach((function(r){n+=r.length+1})),b[t>>2]=n,0},l:function(r){!function(r,t){t&&d&&0===r||(d||(v=!0,n.onExit&&n.onExit(r)),s(r,new rt(r)))}(r)},p:function(r){try{var t=ur.getStreamFromFD(r);return sr.close(t),0}catch(r){return void 0!==sr&&r instanceof sr.ErrnoError||J(r),r.errno}},H:function(r,t){try{var e=ur.getStreamFromFD(r),n=e.tty?2:sr.isDir(e.mode)?3:sr.isLink(e.mode)?7:4;return g[t>>0]=n,0}catch(r){return void 0!==sr&&r instanceof sr.ErrnoError||J(r),r.errno}},N:function(r,t,e,n){try{var o=ur.getStreamFromFD(r),i=ur.doReadv(o,t,e);return b[n>>2]=i,0}catch(r){return void 0!==sr&&r instanceof sr.ErrnoError||J(r),r.errno}},D:function(r,t,e,n,o){try{var i=ur.getStreamFromFD(r),a=4294967296*e+(t>>>0);return a<=-9007199254740992||a>=9007199254740992?-61:(sr.llseek(i,a,n),Z=[i.position>>>0,(G=i.position,+N(G)>=1?G>0?(0|H(+I(G/4294967296),4294967295))>>>0:~~+L((G-+(~~G>>>0))/4294967296)>>>0:0)],b[o>>2]=Z[0],b[o+4>>2]=Z[1],i.getdents&&0===a&&0===n&&(i.getdents=null),0)}catch(r){return void 0!==sr&&r instanceof sr.ErrnoError||J(r),r.errno}},x:function(r,t,e,n){try{var o=ur.getStreamFromFD(r),i=ur.doWritev(o,t,e);return b[n>>2]=i,0}catch(r){return void 0!==sr&&r instanceof sr.ErrnoError||J(r),r.errno}},a:function(){return 0|m},X:function(r){var t=Date.now();return b[r>>2]=t/1e3|0,b[r+4>>2]=t%1e3*1e3|0,0},Y:function(r){var t=$r();try{return Zr(r)}catch(r){if(Qr(t),r!==r+0&&"longjmp"!==r)throw r;Tr(1,0)}},V:function(r,t){var e=$r();try{return Kr(r,t)}catch(r){if(Qr(e),r!==r+0&&"longjmp"!==r)throw r;Tr(1,0)}},v:function(r){var t=$r();try{return qr(r)}catch(r){if(Qr(t),r!==r+0&&"longjmp"!==r)throw r;Tr(1,0)}},f:function(r,t){var e=$r();try{return Yr(r,t)}catch(r){if(Qr(e),r!==r+0&&"longjmp"!==r)throw r;Tr(1,0)}},e:function(r,t,e){var n=$r();try{return Jr(r,t,e)}catch(r){if(Qr(n),r!==r+0&&"longjmp"!==r)throw r;Tr(1,0)}},g:function(r,t,e,n){var o=$r();try{return Vr(r,t,e,n)}catch(r){if(Qr(o),r!==r+0&&"longjmp"!==r)throw r;Tr(1,0)}},n:function(r,t,e,n,o){var i=$r();try{return Xr(r,t,e,n,o)}catch(r){if(Qr(i),r!==r+0&&"longjmp"!==r)throw r;Tr(1,0)}},W:function(r,t,e,n,o,i,a){var s=$r();try{return Gr(r,t,e,n,o,i,a)}catch(r){if(Qr(s),r!==r+0&&"longjmp"!==r)throw r;Tr(1,0)}},s:function(r){var t=$r();try{Nr(r)}catch(r){if(Qr(t),r!==r+0&&"longjmp"!==r)throw r;Tr(1,0)}},h:function(r,t){var e=$r();try{Lr(r,t)}catch(r){if(Qr(e),r!==r+0&&"longjmp"!==r)throw r;Tr(1,0)}},o:function(r,t,e){var n=$r();try{Ir(r,t,e)}catch(r){if(Qr(n),r!==r+0&&"longjmp"!==r)throw r;Tr(1,0)}},u:function(r,t,e,n){var o=$r();try{Hr(r,t,e,n)}catch(r){if(Qr(o),r!==r+0&&"longjmp"!==r)throw r;Tr(1,0)}},t:function(r,t,e,n,o){var i=$r();try{Ur(r,t,e,n,o)}catch(r){if(Qr(i),r!==r+0&&"longjmp"!==r)throw r;Tr(1,0)}},r:function(r,t,e,n,o,i){var a=$r();try{Wr(r,t,e,n,o,i)}catch(r){if(Qr(a),r!==r+0&&"longjmp"!==r)throw r;Tr(1,0)}},memory:p,i:function r(t,e,n,o){e|=0,n|=0,o|=0;var i=0;for(lr=lr+1|0,b[(t|=0)>>2]=lr;(0|i)<(0|o);){if(0==(0|b[n+(i<<3)>>2]))return b[n+(i<<3)>>2]=lr,b[n+(4+(i<<3))>>2]=e,b[n+(8+(i<<3))>>2]=0,h(0|o),0|n;i=i+1|0}return n=0|r(0|t,0|e,0|(n=0|jr(0|n,8*(1+(o=2*o|0)|0)|0)),0|o),h(0|o),0|n},b:function(r){h(0|r)},G:function(r,t,e,n){return gr(r,t,e,n)},table:y,c:function(r,t,e){r|=0,t|=0,e|=0;for(var n=0,o=0;(0|n)<(0|e)&&0!=(0|(o=0|b[t+(n<<3)>>2]));){if((0|o)==(0|r))return 0|b[t+(4+(n<<3))>>2];n=n+1|0}return 0},A:function(r){var t=Date.now()/1e3|0;return r&&(b[r>>2]=t),t},B:function(r){return 0!==r&&cr(r,0,16),0}},Dr=function(){var r={a:br};function t(r,t){var e=r.exports;n.asm=e,Y()}function e(r){t(r.instance)}function o(t){return(l||"function"!=typeof fetch?new Promise((function(r,t){r($())})):fetch(K,{credentials:"same-origin"}).then((function(r){if(!r.ok)throw"failed to load wasm binary file at '"+K+"'";return r.arrayBuffer()})).catch((function(){return $()}))).then((function(t){return WebAssembly.instantiate(t,r)})).then(t,(function(r){f("failed to asynchronously prepare wasm: "+r),J(r)}))}if(q(),n.instantiateWasm)try{return n.instantiateWasm(r,t)}catch(r){return f("Module.instantiateWasm callback failed with error: "+r),!1}return function(){if(l||"function"!=typeof WebAssembly.instantiateStreaming||V(K)||"function"!=typeof fetch)return o(e);fetch(K,{credentials:"same-origin"}).then((function(t){return WebAssembly.instantiateStreaming(t,r).then(e,(function(r){f("wasm streaming compile failed: "+r),f("falling back to ArrayBuffer instantiation"),o(e)}))}))}(),{}}();n.asm=Dr;var Sr,Fr=n.___wasm_call_ctors=function(){return(Fr=n.___wasm_call_ctors=n.asm.Z).apply(null,arguments)},Pr=n._emscripten_bind_VoidPtr___destroy___0=function(){return(Pr=n._emscripten_bind_VoidPtr___destroy___0=n.asm._).apply(null,arguments)},xr=n._emscripten_bind_Main_layout_3=function(){return(xr=n._emscripten_bind_Main_layout_3=n.asm.$).apply(null,arguments)},Ar=n._emscripten_bind_Main_lastError_0=function(){return(Ar=n._emscripten_bind_Main_lastError_0=n.asm.aa).apply(null,arguments)},Mr=n._emscripten_bind_Main_createFile_2=function(){return(Mr=n._emscripten_bind_Main_createFile_2=n.asm.ba).apply(null,arguments)},Cr=n._emscripten_bind_Main___destroy___0=function(){return(Cr=n._emscripten_bind_Main___destroy___0=n.asm.ca).apply(null,arguments)},Rr=n._malloc=function(){return(Rr=n._malloc=n.asm.da).apply(null,arguments)},Or=n._free=function(){return(Or=n._free=n.asm.ea).apply(null,arguments)},jr=n._realloc=function(){return(jr=n._realloc=n.asm.fa).apply(null,arguments)},Tr=(n.___errno_location=function(){return(n.___errno_location=n.asm.ga).apply(null,arguments)},n._setThrew=function(){return(Tr=n._setThrew=n.asm.ha).apply(null,arguments)}),zr=n.__ZSt18uncaught_exceptionv=function(){return(zr=n.__ZSt18uncaught_exceptionv=n.asm.ia).apply(null,arguments)},Br=n._memalign=function(){return(Br=n._memalign=n.asm.ja).apply(null,arguments)},Nr=n.dynCall_v=function(){return(Nr=n.dynCall_v=n.asm.ka).apply(null,arguments)},Lr=n.dynCall_vi=function(){return(Lr=n.dynCall_vi=n.asm.la).apply(null,arguments)},Ir=n.dynCall_vii=function(){return(Ir=n.dynCall_vii=n.asm.ma).apply(null,arguments)},Hr=n.dynCall_viii=function(){return(Hr=n.dynCall_viii=n.asm.na).apply(null,arguments)},Ur=n.dynCall_viiii=function(){return(Ur=n.dynCall_viiii=n.asm.oa).apply(null,arguments)},Wr=n.dynCall_viiiii=function(){return(Wr=n.dynCall_viiiii=n.asm.pa).apply(null,arguments)},qr=n.dynCall_i=function(){return(qr=n.dynCall_i=n.asm.qa).apply(null,arguments)},Yr=n.dynCall_ii=function(){return(Yr=n.dynCall_ii=n.asm.ra).apply(null,arguments)},Jr=n.dynCall_iii=function(){return(Jr=n.dynCall_iii=n.asm.sa).apply(null,arguments)},Vr=n.dynCall_iiii=function(){return(Vr=n.dynCall_iiii=n.asm.ta).apply(null,arguments)},Xr=n.dynCall_iiiii=function(){return(Xr=n.dynCall_iiiii=n.asm.ua).apply(null,arguments)},Gr=n.dynCall_iiiiiii=function(){return(Gr=n.dynCall_iiiiiii=n.asm.va).apply(null,arguments)},Zr=n.dynCall_d=function(){return(Zr=n.dynCall_d=n.asm.wa).apply(null,arguments)},Kr=n.dynCall_di=function(){return(Kr=n.dynCall_di=n.asm.xa).apply(null,arguments)},$r=n.stackSave=function(){return($r=n.stackSave=n.asm.ya).apply(null,arguments)},Qr=(n.stackAlloc=function(){return(n.stackAlloc=n.asm.za).apply(null,arguments)},n.stackRestore=function(){return(Qr=n.stackRestore=n.asm.Aa).apply(null,arguments)});function rt(r){this.name="ExitStatus",this.message="Program terminated with exit("+r+")",this.status=r}function tt(r){function t(){Sr||(Sr=!0,v||(B=!0,n.noFSInit||sr.init.initialized||sr.init(),ir.init(),R(j),sr.ignorePermissions=!1,R(T),n.onRuntimeInitialized&&n.onRuntimeInitialized(),function(){if(n.postRun)for("function"==typeof n.postRun&&(n.postRun=[n.postRun]);n.postRun.length;)r=n.postRun.shift(),z.unshift(r);var r;R(z)}()))}U>0||(function(){if(n.preRun)for("function"==typeof n.preRun&&(n.preRun=[n.preRun]);n.preRun.length;)r=n.preRun.shift(),O.unshift(r);var r;R(O)}(),U>0||(n.setStatus?(n.setStatus("Running..."),setTimeout((function(){setTimeout((function(){n.setStatus("")}),1),t()}),1)):t()))}if(n.asm=Dr,n.then=function(r){if(Sr)r(n);else{var t=n.onRuntimeInitialized;n.onRuntimeInitialized=function(){t&&t(),r(n)}}return n},W=function r(){Sr||tt(),Sr||(W=r)},n.run=tt,n.preInit)for("function"==typeof n.preInit&&(n.preInit=[n.preInit]);n.preInit.length>0;)n.preInit.pop()();function et(){}function nt(r){return(r||et).__cache__}function ot(r,t){var e=nt(t),n=e[r];return n||((n=Object.create((t||et).prototype)).ptr=r,e[r]=n)}d=!0,tt(),et.prototype=Object.create(et.prototype),et.prototype.constructor=et,et.prototype.__class__=et,et.__cache__={},n.WrapperObject=et,n.getCache=nt,n.wrapPointer=ot,n.castObject=function(r,t){return ot(r.ptr,t)},n.NULL=ot(0),n.destroy=function(r){if(!r.__destroy__)throw"Error: Cannot destroy object. (Did you create it yourself?)";r.__destroy__(),delete nt(r.__class__)[r.ptr]},n.compare=function(r,t){return r.ptr===t.ptr},n.getPointer=function(r){return r.ptr},n.getClass=function(r){return r.__class__};var it,at={buffer:0,size:0,pos:0,temps:[],needed:0,prepare:function(){if(at.needed){for(var r=0;r=at.size?(_(i>0),at.needed+=i,e=n._malloc(i),at.temps.push(e)):(e=at.buffer+at.pos,at.pos+=i),e},copy:function(r,t,e){var n=e;switch(t.BYTES_PER_ELEMENT){case 2:n>>=1;break;case 4:n>>=2;break;case 8:n>>=3}for(var o=0;o\n\n'}}function h(r,t){var e,n=d({images:[],files:[]},t);p(n.files,(e=n.images,e.map(m))).forEach((function(t){return r.Main.prototype.createFile(t.path,t.data)}))}var y={layout:function(r,t,e,n){return void 0===t&&(t="svg"),void 0===e&&(e="dot"),r?a(l).then((function(o){h(o,n);var i=o.Main.prototype.layout(r,t,e);if(!i)throw new Error(o.Main.prototype.lastError());return i})):Promise.resolve("")},circo:function(r,t,e){return void 0===t&&(t="svg"),this.layout(r,t,"circo",e)},dot:function(r,t,e){return void 0===t&&(t="svg"),this.layout(r,t,"dot",e)},fdp:function(r,t,e){return void 0===t&&(t="svg"),this.layout(r,t,"fdp",e)},neato:function(r,t,e){return void 0===t&&(t="svg"),this.layout(r,t,"neato",e)},osage:function(r,t,e){return void 0===t&&(t="svg"),this.layout(r,t,"osage",e)},patchwork:function(r,t,e){return void 0===t&&(t="svg"),this.layout(r,t,"patchwork",e)},twopi:function(r,t,e){return void 0===t&&(t="svg"),this.layout(r,t,"twopi",e)}},v=function(){function r(r){this._wasm=r}return r.prototype.layout=function(r,t,e,n){if(void 0===t&&(t="svg"),void 0===e&&(e="dot"),!r)return"";h(this._wasm,n);var o=this._wasm.Main.prototype.layout(r,t,e);if(!o)throw new Error(this._wasm.Main.prototype.lastError());return o},r.prototype.circo=function(r,t,e){return void 0===t&&(t="svg"),this.layout(r,t,"circo",e)},r.prototype.dot=function(r,t,e){return void 0===t&&(t="svg"),this.layout(r,t,"dot",e)},r.prototype.fdp=function(r,t,e){return void 0===t&&(t="svg"),this.layout(r,t,"fdp",e)},r.prototype.neato=function(r,t,e){return void 0===t&&(t="svg"),this.layout(r,t,"neato",e)},r.prototype.osage=function(r,t,e){return void 0===t&&(t="svg"),this.layout(r,t,"osage",e)},r.prototype.patchwork=function(r,t,e){return void 0===t&&(t="svg"),this.layout(r,t,"patchwork",e)},r.prototype.twopi=function(r,t,e){return void 0===t&&(t="svg"),this.layout(r,t,"twopi",e)},r}();r.StackParser=u,r.graphviz=y,r.graphvizSync=function(){return a(l).then((function(r){return new v(r)}))},r.parse=c,r.wasmFolder=i,Object.defineProperty(r,"__esModule",{value:!0})})); \ No newline at end of file diff --git a/resources/public/jquery-2.2.4.min.js b/resources/public/jquery-2.2.4.min.js new file mode 100644 index 0000000..4024b66 --- /dev/null +++ b/resources/public/jquery-2.2.4.min.js @@ -0,0 +1,4 @@ +/*! jQuery v2.2.4 | (c) jQuery Foundation | jquery.org/license */ +!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=a.document,e=c.slice,f=c.concat,g=c.push,h=c.indexOf,i={},j=i.toString,k=i.hasOwnProperty,l={},m="2.2.4",n=function(a,b){return new n.fn.init(a,b)},o=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,p=/^-ms-/,q=/-([\da-z])/gi,r=function(a,b){return b.toUpperCase()};n.fn=n.prototype={jquery:m,constructor:n,selector:"",length:0,toArray:function(){return e.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:e.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a){return n.each(this,a)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(e.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor()},push:g,sort:c.sort,splice:c.splice},n.extend=n.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||n.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(a=arguments[h]))for(b in a)c=g[b],d=a[b],g!==d&&(j&&d&&(n.isPlainObject(d)||(e=n.isArray(d)))?(e?(e=!1,f=c&&n.isArray(c)?c:[]):f=c&&n.isPlainObject(c)?c:{},g[b]=n.extend(j,f,d)):void 0!==d&&(g[b]=d));return g},n.extend({expando:"jQuery"+(m+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===n.type(a)},isArray:Array.isArray,isWindow:function(a){return null!=a&&a===a.window},isNumeric:function(a){var b=a&&a.toString();return!n.isArray(a)&&b-parseFloat(b)+1>=0},isPlainObject:function(a){var b;if("object"!==n.type(a)||a.nodeType||n.isWindow(a))return!1;if(a.constructor&&!k.call(a,"constructor")&&!k.call(a.constructor.prototype||{},"isPrototypeOf"))return!1;for(b in a);return void 0===b||k.call(a,b)},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?i[j.call(a)]||"object":typeof a},globalEval:function(a){var b,c=eval;a=n.trim(a),a&&(1===a.indexOf("use strict")?(b=d.createElement("script"),b.text=a,d.head.appendChild(b).parentNode.removeChild(b)):c(a))},camelCase:function(a){return a.replace(p,"ms-").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b){var c,d=0;if(s(a)){for(c=a.length;c>d;d++)if(b.call(a[d],d,a[d])===!1)break}else for(d in a)if(b.call(a[d],d,a[d])===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(o,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?n.merge(c,"string"==typeof a?[a]:a):g.call(c,a)),c},inArray:function(a,b,c){return null==b?-1:h.call(b,a,c)},merge:function(a,b){for(var c=+b.length,d=0,e=a.length;c>d;d++)a[e++]=b[d];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,e,g=0,h=[];if(s(a))for(d=a.length;d>g;g++)e=b(a[g],g,c),null!=e&&h.push(e);else for(g in a)e=b(a[g],g,c),null!=e&&h.push(e);return f.apply([],h)},guid:1,proxy:function(a,b){var c,d,f;return"string"==typeof b&&(c=a[b],b=a,a=c),n.isFunction(a)?(d=e.call(arguments,2),f=function(){return a.apply(b||this,d.concat(e.call(arguments)))},f.guid=a.guid=a.guid||n.guid++,f):void 0},now:Date.now,support:l}),"function"==typeof Symbol&&(n.fn[Symbol.iterator]=c[Symbol.iterator]),n.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(a,b){i["[object "+b+"]"]=b.toLowerCase()});function s(a){var b=!!a&&"length"in a&&a.length,c=n.type(a);return"function"===c||n.isWindow(a)?!1:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var t=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ga(),z=ga(),A=ga(),B=function(a,b){return a===b&&(l=!0),0},C=1<<31,D={}.hasOwnProperty,E=[],F=E.pop,G=E.push,H=E.push,I=E.slice,J=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},K="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",L="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",N="\\["+L+"*("+M+")(?:"+L+"*([*^$|!~]?=)"+L+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+M+"))|)"+L+"*\\]",O=":("+M+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+N+")*)|.*)\\)|)",P=new RegExp(L+"+","g"),Q=new RegExp("^"+L+"+|((?:^|[^\\\\])(?:\\\\.)*)"+L+"+$","g"),R=new RegExp("^"+L+"*,"+L+"*"),S=new RegExp("^"+L+"*([>+~]|"+L+")"+L+"*"),T=new RegExp("="+L+"*([^\\]'\"]*?)"+L+"*\\]","g"),U=new RegExp(O),V=new RegExp("^"+M+"$"),W={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),TAG:new RegExp("^("+M+"|[*])"),ATTR:new RegExp("^"+N),PSEUDO:new RegExp("^"+O),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+L+"*(even|odd|(([+-]|)(\\d*)n|)"+L+"*(?:([+-]|)"+L+"*(\\d+)|))"+L+"*\\)|)","i"),bool:new RegExp("^(?:"+K+")$","i"),needsContext:new RegExp("^"+L+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+L+"*((?:-\\d)?\\d*)"+L+"*\\)|)(?=[^-]|$)","i")},X=/^(?:input|select|textarea|button)$/i,Y=/^h\d$/i,Z=/^[^{]+\{\s*\[native \w/,$=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,_=/[+~]/,aa=/'|\\/g,ba=new RegExp("\\\\([\\da-f]{1,6}"+L+"?|("+L+")|.)","ig"),ca=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},da=function(){m()};try{H.apply(E=I.call(v.childNodes),v.childNodes),E[v.childNodes.length].nodeType}catch(ea){H={apply:E.length?function(a,b){G.apply(a,I.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function fa(a,b,d,e){var f,h,j,k,l,o,r,s,w=b&&b.ownerDocument,x=b?b.nodeType:9;if(d=d||[],"string"!=typeof a||!a||1!==x&&9!==x&&11!==x)return d;if(!e&&((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,p)){if(11!==x&&(o=$.exec(a)))if(f=o[1]){if(9===x){if(!(j=b.getElementById(f)))return d;if(j.id===f)return d.push(j),d}else if(w&&(j=w.getElementById(f))&&t(b,j)&&j.id===f)return d.push(j),d}else{if(o[2])return H.apply(d,b.getElementsByTagName(a)),d;if((f=o[3])&&c.getElementsByClassName&&b.getElementsByClassName)return H.apply(d,b.getElementsByClassName(f)),d}if(c.qsa&&!A[a+" "]&&(!q||!q.test(a))){if(1!==x)w=b,s=a;else if("object"!==b.nodeName.toLowerCase()){(k=b.getAttribute("id"))?k=k.replace(aa,"\\$&"):b.setAttribute("id",k=u),r=g(a),h=r.length,l=V.test(k)?"#"+k:"[id='"+k+"']";while(h--)r[h]=l+" "+qa(r[h]);s=r.join(","),w=_.test(a)&&oa(b.parentNode)||b}if(s)try{return H.apply(d,w.querySelectorAll(s)),d}catch(y){}finally{k===u&&b.removeAttribute("id")}}}return i(a.replace(Q,"$1"),b,d,e)}function ga(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ha(a){return a[u]=!0,a}function ia(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ja(a,b){var c=a.split("|"),e=c.length;while(e--)d.attrHandle[c[e]]=b}function ka(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||C)-(~a.sourceIndex||C);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function la(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function na(a){return ha(function(b){return b=+b,ha(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function oa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=fa.support={},f=fa.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=fa.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=n.documentElement,p=!f(n),(e=n.defaultView)&&e.top!==e&&(e.addEventListener?e.addEventListener("unload",da,!1):e.attachEvent&&e.attachEvent("onunload",da)),c.attributes=ia(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ia(function(a){return a.appendChild(n.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=Z.test(n.getElementsByClassName),c.getById=ia(function(a){return o.appendChild(a).id=u,!n.getElementsByName||!n.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c?[c]:[]}},d.filter.ID=function(a){var b=a.replace(ba,ca);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(ba,ca);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return"undefined"!=typeof b.getElementsByClassName&&p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=Z.test(n.querySelectorAll))&&(ia(function(a){o.appendChild(a).innerHTML="",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+L+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+L+"*(?:value|"+K+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ia(function(a){var b=n.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+L+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=Z.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ia(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",O)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=Z.test(o.compareDocumentPosition),t=b||Z.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===n||a.ownerDocument===v&&t(v,a)?-1:b===n||b.ownerDocument===v&&t(v,b)?1:k?J(k,a)-J(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,g=[a],h=[b];if(!e||!f)return a===n?-1:b===n?1:e?-1:f?1:k?J(k,a)-J(k,b):0;if(e===f)return ka(a,b);c=a;while(c=c.parentNode)g.unshift(c);c=b;while(c=c.parentNode)h.unshift(c);while(g[d]===h[d])d++;return d?ka(g[d],h[d]):g[d]===v?-1:h[d]===v?1:0},n):n},fa.matches=function(a,b){return fa(a,null,null,b)},fa.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(T,"='$1']"),c.matchesSelector&&p&&!A[b+" "]&&(!r||!r.test(b))&&(!q||!q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return fa(b,n,null,[a]).length>0},fa.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},fa.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&D.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},fa.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},fa.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=fa.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=fa.selectors={cacheLength:50,createPseudo:ha,match:W,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(ba,ca),a[3]=(a[3]||a[4]||a[5]||"").replace(ba,ca),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||fa.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&fa.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return W.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&U.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(ba,ca).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+L+")"+a+"("+L+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=fa.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(P," ")+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h,t=!1;if(q){if(f){while(p){m=b;while(m=m[p])if(h?m.nodeName.toLowerCase()===r:1===m.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){m=q,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n&&j[2],m=n&&q.childNodes[n];while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if(1===m.nodeType&&++t&&m===b){k[a]=[w,n,t];break}}else if(s&&(m=b,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n),t===!1)while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if((h?m.nodeName.toLowerCase()===r:1===m.nodeType)&&++t&&(s&&(l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),k[a]=[w,t]),m===b))break;return t-=e,t===d||t%d===0&&t/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||fa.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ha(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=J(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ha(function(a){var b=[],c=[],d=h(a.replace(Q,"$1"));return d[u]?ha(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ha(function(a){return function(b){return fa(a,b).length>0}}),contains:ha(function(a){return a=a.replace(ba,ca),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ha(function(a){return V.test(a||"")||fa.error("unsupported lang: "+a),a=a.replace(ba,ca).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Y.test(a.nodeName)},input:function(a){return X.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:na(function(){return[0]}),last:na(function(a,b){return[b-1]}),eq:na(function(a,b,c){return[0>c?c+b:c]}),even:na(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:na(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:na(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:na(function(a,b,c){for(var d=0>c?c+b:c;++db;b++)d+=a[b].value;return d}function ra(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j,k=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(j=b[u]||(b[u]={}),i=j[b.uniqueID]||(j[b.uniqueID]={}),(h=i[d])&&h[0]===w&&h[1]===f)return k[2]=h[2];if(i[d]=k,k[2]=a(b,c,g))return!0}}}function sa(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function ta(a,b,c){for(var d=0,e=b.length;e>d;d++)fa(a,b[d],c);return c}function ua(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(c&&!c(f,d,e)||(g.push(f),j&&b.push(h)));return g}function va(a,b,c,d,e,f){return d&&!d[u]&&(d=va(d)),e&&!e[u]&&(e=va(e,f)),ha(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||ta(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:ua(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=ua(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?J(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=ua(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):H.apply(g,r)})}function wa(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=ra(function(a){return a===b},h,!0),l=ra(function(a){return J(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];f>i;i++)if(c=d.relative[a[i].type])m=[ra(sa(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return va(i>1&&sa(m),i>1&&qa(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(Q,"$1"),c,e>i&&wa(a.slice(i,e)),f>e&&wa(a=a.slice(e)),f>e&&qa(a))}m.push(c)}return sa(m)}function xa(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,o,q,r=0,s="0",t=f&&[],u=[],v=j,x=f||e&&d.find.TAG("*",k),y=w+=null==v?1:Math.random()||.1,z=x.length;for(k&&(j=g===n||g||k);s!==z&&null!=(l=x[s]);s++){if(e&&l){o=0,g||l.ownerDocument===n||(m(l),h=!p);while(q=a[o++])if(q(l,g||n,h)){i.push(l);break}k&&(w=y)}c&&((l=!q&&l)&&r--,f&&t.push(l))}if(r+=s,c&&s!==r){o=0;while(q=b[o++])q(t,u,g,h);if(f){if(r>0)while(s--)t[s]||u[s]||(u[s]=F.call(i));u=ua(u)}H.apply(i,u),k&&!f&&u.length>0&&r+b.length>1&&fa.uniqueSort(i)}return k&&(w=y,j=v),t};return c?ha(f):f}return h=fa.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=wa(b[c]),f[u]?d.push(f):e.push(f);f=A(a,xa(e,d)),f.selector=a}return f},i=fa.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(ba,ca),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=W.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(ba,ca),_.test(j[0].type)&&oa(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&qa(j),!a)return H.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,!b||_.test(a)&&oa(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ia(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ia(function(a){return a.innerHTML="","#"===a.firstChild.getAttribute("href")})||ja("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ia(function(a){return a.innerHTML="",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ja("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ia(function(a){return null==a.getAttribute("disabled")})||ja(K,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),fa}(a);n.find=t,n.expr=t.selectors,n.expr[":"]=n.expr.pseudos,n.uniqueSort=n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&n(a).is(c))break;d.push(a)}return d},v=function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c},w=n.expr.match.needsContext,x=/^<([\w-]+)\s*\/?>(?:<\/\1>|)$/,y=/^.[^:#\[\.,]*$/;function z(a,b,c){if(n.isFunction(b))return n.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return n.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(y.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return h.call(b,a)>-1!==c})}n.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?n.find.matchesSelector(d,a)?[d]:[]:n.find.matches(a,n.grep(b,function(a){return 1===a.nodeType}))},n.fn.extend({find:function(a){var b,c=this.length,d=[],e=this;if("string"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=0;c>b;b++)if(n.contains(e[b],this))return!0}));for(b=0;c>b;b++)n.find(a,e[b],d);return d=this.pushStack(c>1?n.unique(d):d),d.selector=this.selector?this.selector+" "+a:a,d},filter:function(a){return this.pushStack(z(this,a||[],!1))},not:function(a){return this.pushStack(z(this,a||[],!0))},is:function(a){return!!z(this,"string"==typeof a&&w.test(a)?n(a):a||[],!1).length}});var A,B=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,C=n.fn.init=function(a,b,c){var e,f;if(!a)return this;if(c=c||A,"string"==typeof a){if(e="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:B.exec(a),!e||!e[1]&&b)return!b||b.jquery?(b||c).find(a):this.constructor(b).find(a);if(e[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(e[1],b&&b.nodeType?b.ownerDocument||b:d,!0)),x.test(e[1])&&n.isPlainObject(b))for(e in b)n.isFunction(this[e])?this[e](b[e]):this.attr(e,b[e]);return this}return f=d.getElementById(e[2]),f&&f.parentNode&&(this.length=1,this[0]=f),this.context=d,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?void 0!==c.ready?c.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};C.prototype=n.fn,A=n(d);var D=/^(?:parents|prev(?:Until|All))/,E={children:!0,contents:!0,next:!0,prev:!0};n.fn.extend({has:function(a){var b=n(a,this),c=b.length;return this.filter(function(){for(var a=0;c>a;a++)if(n.contains(this,b[a]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=w.test(a)||"string"!=typeof a?n(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&n.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?n.uniqueSort(f):f)},index:function(a){return a?"string"==typeof a?h.call(n(a),this[0]):h.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(n.uniqueSort(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function F(a,b){while((a=a[b])&&1!==a.nodeType);return a}n.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return u(a,"parentNode")},parentsUntil:function(a,b,c){return u(a,"parentNode",c)},next:function(a){return F(a,"nextSibling")},prev:function(a){return F(a,"previousSibling")},nextAll:function(a){return u(a,"nextSibling")},prevAll:function(a){return u(a,"previousSibling")},nextUntil:function(a,b,c){return u(a,"nextSibling",c)},prevUntil:function(a,b,c){return u(a,"previousSibling",c)},siblings:function(a){return v((a.parentNode||{}).firstChild,a)},children:function(a){return v(a.firstChild)},contents:function(a){return a.contentDocument||n.merge([],a.childNodes)}},function(a,b){n.fn[a]=function(c,d){var e=n.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=n.filter(d,e)),this.length>1&&(E[a]||n.uniqueSort(e),D.test(a)&&e.reverse()),this.pushStack(e)}});var G=/\S+/g;function H(a){var b={};return n.each(a.match(G)||[],function(a,c){b[c]=!0}),b}n.Callbacks=function(a){a="string"==typeof a?H(a):n.extend({},a);var b,c,d,e,f=[],g=[],h=-1,i=function(){for(e=a.once,d=b=!0;g.length;h=-1){c=g.shift();while(++h-1)f.splice(c,1),h>=c&&h--}),this},has:function(a){return a?n.inArray(a,f)>-1:f.length>0},empty:function(){return f&&(f=[]),this},disable:function(){return e=g=[],f=c="",this},disabled:function(){return!f},lock:function(){return e=g=[],c||(f=c=""),this},locked:function(){return!!e},fireWith:function(a,c){return e||(c=c||[],c=[a,c.slice?c.slice():c],g.push(c),b||i()),this},fire:function(){return j.fireWith(this,arguments),this},fired:function(){return!!d}};return j},n.extend({Deferred:function(a){var b=[["resolve","done",n.Callbacks("once memory"),"resolved"],["reject","fail",n.Callbacks("once memory"),"rejected"],["notify","progress",n.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return n.Deferred(function(c){n.each(b,function(b,f){var g=n.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&n.isFunction(a.promise)?a.promise().progress(c.notify).done(c.resolve).fail(c.reject):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?n.extend(a,d):d}},e={};return d.pipe=d.then,n.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=e.call(arguments),d=c.length,f=1!==d||a&&n.isFunction(a.promise)?d:0,g=1===f?a:n.Deferred(),h=function(a,b,c){return function(d){b[a]=this,c[a]=arguments.length>1?e.call(arguments):d,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(d>1)for(i=new Array(d),j=new Array(d),k=new Array(d);d>b;b++)c[b]&&n.isFunction(c[b].promise)?c[b].promise().progress(h(b,j,i)).done(h(b,k,c)).fail(g.reject):--f;return f||g.resolveWith(k,c),g.promise()}});var I;n.fn.ready=function(a){return n.ready.promise().done(a),this},n.extend({isReady:!1,readyWait:1,holdReady:function(a){a?n.readyWait++:n.ready(!0)},ready:function(a){(a===!0?--n.readyWait:n.isReady)||(n.isReady=!0,a!==!0&&--n.readyWait>0||(I.resolveWith(d,[n]),n.fn.triggerHandler&&(n(d).triggerHandler("ready"),n(d).off("ready"))))}});function J(){d.removeEventListener("DOMContentLoaded",J),a.removeEventListener("load",J),n.ready()}n.ready.promise=function(b){return I||(I=n.Deferred(),"complete"===d.readyState||"loading"!==d.readyState&&!d.documentElement.doScroll?a.setTimeout(n.ready):(d.addEventListener("DOMContentLoaded",J),a.addEventListener("load",J))),I.promise(b)},n.ready.promise();var K=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===n.type(c)){e=!0;for(h in c)K(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,n.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(n(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},L=function(a){return 1===a.nodeType||9===a.nodeType||!+a.nodeType};function M(){this.expando=n.expando+M.uid++}M.uid=1,M.prototype={register:function(a,b){var c=b||{};return a.nodeType?a[this.expando]=c:Object.defineProperty(a,this.expando,{value:c,writable:!0,configurable:!0}),a[this.expando]},cache:function(a){if(!L(a))return{};var b=a[this.expando];return b||(b={},L(a)&&(a.nodeType?a[this.expando]=b:Object.defineProperty(a,this.expando,{value:b,configurable:!0}))),b},set:function(a,b,c){var d,e=this.cache(a);if("string"==typeof b)e[b]=c;else for(d in b)e[d]=b[d];return e},get:function(a,b){return void 0===b?this.cache(a):a[this.expando]&&a[this.expando][b]},access:function(a,b,c){var d;return void 0===b||b&&"string"==typeof b&&void 0===c?(d=this.get(a,b),void 0!==d?d:this.get(a,n.camelCase(b))):(this.set(a,b,c),void 0!==c?c:b)},remove:function(a,b){var c,d,e,f=a[this.expando];if(void 0!==f){if(void 0===b)this.register(a);else{n.isArray(b)?d=b.concat(b.map(n.camelCase)):(e=n.camelCase(b),b in f?d=[b,e]:(d=e,d=d in f?[d]:d.match(G)||[])),c=d.length;while(c--)delete f[d[c]]}(void 0===b||n.isEmptyObject(f))&&(a.nodeType?a[this.expando]=void 0:delete a[this.expando])}},hasData:function(a){var b=a[this.expando];return void 0!==b&&!n.isEmptyObject(b)}};var N=new M,O=new M,P=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,Q=/[A-Z]/g;function R(a,b,c){var d;if(void 0===c&&1===a.nodeType)if(d="data-"+b.replace(Q,"-$&").toLowerCase(),c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:P.test(c)?n.parseJSON(c):c; +}catch(e){}O.set(a,b,c)}else c=void 0;return c}n.extend({hasData:function(a){return O.hasData(a)||N.hasData(a)},data:function(a,b,c){return O.access(a,b,c)},removeData:function(a,b){O.remove(a,b)},_data:function(a,b,c){return N.access(a,b,c)},_removeData:function(a,b){N.remove(a,b)}}),n.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=O.get(f),1===f.nodeType&&!N.get(f,"hasDataAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=n.camelCase(d.slice(5)),R(f,d,e[d])));N.set(f,"hasDataAttrs",!0)}return e}return"object"==typeof a?this.each(function(){O.set(this,a)}):K(this,function(b){var c,d;if(f&&void 0===b){if(c=O.get(f,a)||O.get(f,a.replace(Q,"-$&").toLowerCase()),void 0!==c)return c;if(d=n.camelCase(a),c=O.get(f,d),void 0!==c)return c;if(c=R(f,d,void 0),void 0!==c)return c}else d=n.camelCase(a),this.each(function(){var c=O.get(this,d);O.set(this,d,b),a.indexOf("-")>-1&&void 0!==c&&O.set(this,a,b)})},null,b,arguments.length>1,null,!0)},removeData:function(a){return this.each(function(){O.remove(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=N.get(a,b),c&&(!d||n.isArray(c)?d=N.access(a,b,n.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=n.queue(a,b),d=c.length,e=c.shift(),f=n._queueHooks(a,b),g=function(){n.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return N.get(a,c)||N.access(a,c,{empty:n.Callbacks("once memory").add(function(){N.remove(a,[b+"queue",c])})})}}),n.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length",""],thead:[1,"","
    "],col:[2,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],_default:[0,"",""]};$.optgroup=$.option,$.tbody=$.tfoot=$.colgroup=$.caption=$.thead,$.th=$.td;function _(a,b){var c="undefined"!=typeof a.getElementsByTagName?a.getElementsByTagName(b||"*"):"undefined"!=typeof a.querySelectorAll?a.querySelectorAll(b||"*"):[];return void 0===b||b&&n.nodeName(a,b)?n.merge([a],c):c}function aa(a,b){for(var c=0,d=a.length;d>c;c++)N.set(a[c],"globalEval",!b||N.get(b[c],"globalEval"))}var ba=/<|&#?\w+;/;function ca(a,b,c,d,e){for(var f,g,h,i,j,k,l=b.createDocumentFragment(),m=[],o=0,p=a.length;p>o;o++)if(f=a[o],f||0===f)if("object"===n.type(f))n.merge(m,f.nodeType?[f]:f);else if(ba.test(f)){g=g||l.appendChild(b.createElement("div")),h=(Y.exec(f)||["",""])[1].toLowerCase(),i=$[h]||$._default,g.innerHTML=i[1]+n.htmlPrefilter(f)+i[2],k=i[0];while(k--)g=g.lastChild;n.merge(m,g.childNodes),g=l.firstChild,g.textContent=""}else m.push(b.createTextNode(f));l.textContent="",o=0;while(f=m[o++])if(d&&n.inArray(f,d)>-1)e&&e.push(f);else if(j=n.contains(f.ownerDocument,f),g=_(l.appendChild(f),"script"),j&&aa(g),c){k=0;while(f=g[k++])Z.test(f.type||"")&&c.push(f)}return l}!function(){var a=d.createDocumentFragment(),b=a.appendChild(d.createElement("div")),c=d.createElement("input");c.setAttribute("type","radio"),c.setAttribute("checked","checked"),c.setAttribute("name","t"),b.appendChild(c),l.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,b.innerHTML="",l.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var da=/^key/,ea=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,fa=/^([^.]*)(?:\.(.+)|)/;function ga(){return!0}function ha(){return!1}function ia(){try{return d.activeElement}catch(a){}}function ja(a,b,c,d,e,f){var g,h;if("object"==typeof b){"string"!=typeof c&&(d=d||c,c=void 0);for(h in b)ja(a,h,c,d,b[h],f);return a}if(null==d&&null==e?(e=c,d=c=void 0):null==e&&("string"==typeof c?(e=d,d=void 0):(e=d,d=c,c=void 0)),e===!1)e=ha;else if(!e)return a;return 1===f&&(g=e,e=function(a){return n().off(a),g.apply(this,arguments)},e.guid=g.guid||(g.guid=n.guid++)),a.each(function(){n.event.add(this,b,e,d,c)})}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=N.get(a);if(r){c.handler&&(f=c,c=f.handler,e=f.selector),c.guid||(c.guid=n.guid++),(i=r.events)||(i=r.events={}),(g=r.handle)||(g=r.handle=function(b){return"undefined"!=typeof n&&n.event.triggered!==b.type?n.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(G)||[""],j=b.length;while(j--)h=fa.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o&&(l=n.event.special[o]||{},o=(e?l.delegateType:l.bindType)||o,l=n.event.special[o]||{},k=n.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&n.expr.match.needsContext.test(e),namespace:p.join(".")},f),(m=i[o])||(m=i[o]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,p,g)!==!1||a.addEventListener&&a.addEventListener(o,g)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),n.event.global[o]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=N.hasData(a)&&N.get(a);if(r&&(i=r.events)){b=(b||"").match(G)||[""],j=b.length;while(j--)if(h=fa.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=n.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,m=i[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&q!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&("**"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||n.removeEvent(a,o,r.handle),delete i[o])}else for(o in i)n.event.remove(a,o+b[j],c,d,!0);n.isEmptyObject(i)&&N.remove(a,"handle events")}},dispatch:function(a){a=n.event.fix(a);var b,c,d,f,g,h=[],i=e.call(arguments),j=(N.get(this,"events")||{})[a.type]||[],k=n.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=n.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,c=0;while((g=f.handlers[c++])&&!a.isImmediatePropagationStopped())a.rnamespace&&!a.rnamespace.test(g.namespace)||(a.handleObj=g,a.data=g.data,d=((n.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==d&&(a.result=d)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&("click"!==a.type||isNaN(a.button)||a.button<1))for(;i!==this;i=i.parentNode||this)if(1===i.nodeType&&(i.disabled!==!0||"click"!==a.type)){for(d=[],c=0;h>c;c++)f=b[c],e=f.selector+" ",void 0===d[e]&&(d[e]=f.needsContext?n(e,this).index(i)>-1:n.find(e,this,null,[i]).length),d[e]&&d.push(f);d.length&&g.push({elem:i,handlers:d})}return h]*)\/>/gi,la=/\s*$/g;function pa(a,b){return n.nodeName(a,"table")&&n.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function qa(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function ra(a){var b=na.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function sa(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(N.hasData(a)&&(f=N.access(a),g=N.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;d>c;c++)n.event.add(b,e,j[e][c])}O.hasData(a)&&(h=O.access(a),i=n.extend({},h),O.set(b,i))}}function ta(a,b){var c=b.nodeName.toLowerCase();"input"===c&&X.test(a.type)?b.checked=a.checked:"input"!==c&&"textarea"!==c||(b.defaultValue=a.defaultValue)}function ua(a,b,c,d){b=f.apply([],b);var e,g,h,i,j,k,m=0,o=a.length,p=o-1,q=b[0],r=n.isFunction(q);if(r||o>1&&"string"==typeof q&&!l.checkClone&&ma.test(q))return a.each(function(e){var f=a.eq(e);r&&(b[0]=q.call(this,e,f.html())),ua(f,b,c,d)});if(o&&(e=ca(b,a[0].ownerDocument,!1,a,d),g=e.firstChild,1===e.childNodes.length&&(e=g),g||d)){for(h=n.map(_(e,"script"),qa),i=h.length;o>m;m++)j=e,m!==p&&(j=n.clone(j,!0,!0),i&&n.merge(h,_(j,"script"))),c.call(a[m],j,m);if(i)for(k=h[h.length-1].ownerDocument,n.map(h,ra),m=0;i>m;m++)j=h[m],Z.test(j.type||"")&&!N.access(j,"globalEval")&&n.contains(k,j)&&(j.src?n._evalUrl&&n._evalUrl(j.src):n.globalEval(j.textContent.replace(oa,"")))}return a}function va(a,b,c){for(var d,e=b?n.filter(b,a):a,f=0;null!=(d=e[f]);f++)c||1!==d.nodeType||n.cleanData(_(d)),d.parentNode&&(c&&n.contains(d.ownerDocument,d)&&aa(_(d,"script")),d.parentNode.removeChild(d));return a}n.extend({htmlPrefilter:function(a){return a.replace(ka,"<$1>")},clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=n.contains(a.ownerDocument,a);if(!(l.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||n.isXMLDoc(a)))for(g=_(h),f=_(a),d=0,e=f.length;e>d;d++)ta(f[d],g[d]);if(b)if(c)for(f=f||_(a),g=g||_(h),d=0,e=f.length;e>d;d++)sa(f[d],g[d]);else sa(a,h);return g=_(h,"script"),g.length>0&&aa(g,!i&&_(a,"script")),h},cleanData:function(a){for(var b,c,d,e=n.event.special,f=0;void 0!==(c=a[f]);f++)if(L(c)){if(b=c[N.expando]){if(b.events)for(d in b.events)e[d]?n.event.remove(c,d):n.removeEvent(c,d,b.handle);c[N.expando]=void 0}c[O.expando]&&(c[O.expando]=void 0)}}}),n.fn.extend({domManip:ua,detach:function(a){return va(this,a,!0)},remove:function(a){return va(this,a)},text:function(a){return K(this,function(a){return void 0===a?n.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=a)})},null,a,arguments.length)},append:function(){return ua(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=pa(this,a);b.appendChild(a)}})},prepend:function(){return ua(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=pa(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return ua(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return ua(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(n.cleanData(_(a,!1)),a.textContent="");return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return n.clone(this,a,b)})},html:function(a){return K(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if("string"==typeof a&&!la.test(a)&&!$[(Y.exec(a)||["",""])[1].toLowerCase()]){a=n.htmlPrefilter(a);try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(_(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=[];return ua(this,arguments,function(b){var c=this.parentNode;n.inArray(this,a)<0&&(n.cleanData(_(this)),c&&c.replaceChild(b,this))},a)}}),n.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){n.fn[a]=function(a){for(var c,d=[],e=n(a),f=e.length-1,h=0;f>=h;h++)c=h===f?this:this.clone(!0),n(e[h])[b](c),g.apply(d,c.get());return this.pushStack(d)}});var wa,xa={HTML:"block",BODY:"block"};function ya(a,b){var c=n(b.createElement(a)).appendTo(b.body),d=n.css(c[0],"display");return c.detach(),d}function za(a){var b=d,c=xa[a];return c||(c=ya(a,b),"none"!==c&&c||(wa=(wa||n("

    >>0)|0;m=0-j|0;n=0-(((j|0)!=0)+q|0)|0;o=b;q=c;b=O+16383|0}if((b|0)>=32767){t=t|2147418112;b=0;c=0;break a}d:{if((b|0)>=1){c=w;j=p<<1|c>>>31;w=c<<1|n>>>31;p=j;o=h;q=i&65535|b<<16;b=m;j=n<<1|b>>>31;b=b<<1;break d}if((b|0)<=-113){b=0;c=0;break a}hd(k- -64|0,d,e,h,i,1-b|0);xb(k+48|0,o,q,C,z,b+112|0);d=H[k+64>>2];e=H[k+68>>2];o=H[k+72>>2];q=H[k+76>>2];rb(k+32|0,f,g,u,B,d,e,o,q);c=H[k+40>>2];i=c<<1;c=H[k+44>>2]<<1|c>>>31;m=H[k+36>>2];h=m;b=H[k+56>>2];m=h>>>31|i;i=b-m|0;l=H[k+60>>2]-((b>>>0>>0)+c|0)|0;c=H[k+32>>2];h=h<<1|c>>>31;c=c<<1;z=H[k+52>>2];j=z;b=H[k+48>>2];j=(h|0)==(j|0)&c>>>0>b>>>0|h>>>0>j>>>0;w=i-j|0;p=l-(i>>>0>>0)|0;i=b;b=i-c|0;j=z-((c>>>0>i>>>0)+h|0)|0}rb(k+16|0,f,g,u,B,3,0,0,0);rb(k,f,g,u,B,5,0,0,0);i=d;c=e;l=f;f=g;r=o;m=0;h=j+m|0;n=d&1;d=b+n|0;h=d>>>0>>0?h+1|0:h;o=d;g=h;l=(h|0)==(f|0)&d>>>0>l>>>0|f>>>0>>0;d=(h|0)==(m|0)&n>>>0>d>>>0|h>>>0>>0;b=d+w|0;j=p;j=b>>>0>>0?j+1|0:j;h=b;f=j;d=(h|0)==(u|0)&(j|0)==(B|0)?l:(B|0)==(j|0)&h>>>0>u>>>0|j>>>0>B>>>0;b=i+d|0;j=e;j=b>>>0>>0?j+1|0:j;d=b;b=j;e=(j|0)==(c|0)&d>>>0>>0|c>>>0>j>>>0;c=r+e|0;j=q;i=c;j=i>>>0>>0?j+1|0:j;c=j;e=d;l=i;d=H[k+20>>2];m=(d|0)==(g|0)&K[k+16>>2]>>0|d>>>0>>0;d=H[k+28>>2];i=H[k+24>>2];i=j>>>0<2147418112&((h|0)==(i|0)&(d|0)==(f|0)?m:(d|0)==(f|0)&i>>>0>>0|d>>>0>>0);d=e+i|0;j=b;j=d>>>0>>0?j+1|0:j;i=d;d=j;e=(j|0)==(b|0)&e>>>0>i>>>0|b>>>0>j>>>0;b=l+e|0;j=c;j=b>>>0>>0?j+1|0:j;e=j;l=b;b=H[k+4>>2];g=(b|0)==(g|0)&K[k>>2]>>0|b>>>0>>0;b=H[k+12>>2];c=H[k+8>>2];c=j>>>0<2147418112&((c|0)==(h|0)&(b|0)==(f|0)?g:(b|0)==(f|0)&c>>>0>>0|b>>>0>>0);b=c+i|0;j=d;j=b>>>0>>0?j+1|0:j;c=j;f=(d|0)==(j|0)&b>>>0>>0|d>>>0>j>>>0;d=l+f|0;j=e;D=d|D;t=t|(d>>>0>>0?j+1|0:j)}H[a>>2]=b;H[a+4>>2]=c;H[a+8>>2]=D;H[a+12>>2]=t;oa=k+336|0}function rq(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;e=oa-48|0;oa=e;m=I[b+208|0];a:{if(Mj(b)){if(!I[b+224|0]){j=b+184|0;h=b+160|0;n=I[7820];while(1){H[b+248>>2]=0;H[b+252>>2]=0;F[b+246|0]=0;b:{if(I[b+226|0]){F[b+226|0]=0;break b}if(!Lj(b)){Ld(b);qa[H[H[b>>2]+24>>2]](a,b,b+148|0);break a}if(!(!m|I[b+192|0]!=123)){F[b+195|0]=123}o=g;g=0}c:{if(I[b+213|0]){fe(b);if((H[b+200>>2]+1|0)!=(wa(h)|0)){break c}F[b+233|0]=1;F[b+213|0]=0;F[b+221|0]=1;F[b+192|0]=0;break c}d:{if(I[b+214|0]){if(!Kd(b,22212)){break d}F[b+232|0]=1;F[b+214|0]=0;Jd(b,22212,1);ee(b,1);break c}if(I[b+217|0]){if(I[b+218|0]){F[b+218|0]=0;break d}c=I[b+192|0];if((c|0)==92){F[b+218|0]=1;break d}if((c|0)!=I[b+196|0]){break d}F[b+217|0]=0;break d}if(Db(F[b+192|0])|I[b+215|0]){break d}if(Kd(b,22188)){F[b+213|0]=1;if(I[b+209|0]){Fc(b)}Jd(b,22188,1);ee(b,1);break c}if(Kd(b,22200)){F[b+214|0]=1;if(I[b+209|0]){Fc(b)}Jd(b,22200,1);ee(b,1);break c}c=I[b+192|0];if((c|0)==34){F[b+196|0]=34;F[b+217|0]=1;break d}e:{if((c|0)!=(n|0)){break e}if(!ld(b,21876)){break e}F[b+215|0]=1;break d}if(I[b+215|0]){break d}if(I[b+232|0]){F[b+232|0]=0;g=1}if(I[b+233|0]){F[b+233|0]=0;k=1}if(I[b+228|0]){F[b+226|0]=1;F[b+228|0]=0;Ld(b);break c}f:{if(!I[b+245|0]){break f}F[b+245|0]=0;if(!I[b+227|0]){break f}if(I[b+229|0]){F[b+221|0]=1;break f}c=ld(b,21852);if((c|0)==21924?H[b+184>>2]==21936:0){break f}F[b+221|0]=1;if(!I[b+210|0]){break f}c=ld(b,21900);H[b+248>>2]=c;if(c){break f}c=H[j>>2];if(!((c|0)!=21936?(c|0)==21972|(c|0)==21948|(c|0)==21924:1)){break f}F[b+192|0]=98;c=xa(e+32|0,3101);Kj(h,H[b+200>>2],c);F[b+247|0]=1;va(c)}g:{if(I[b+230|0]){F[b+230|0]=0;if(!H[Qa(H[b+144>>2])>>2]){break g}}if(I[b+231|0]){F[b+231|0]=0;if(!H[Qa(H[b+144>>2])>>2]){break g}}h:{i:{j:{k:{l:{m:{c=I[b+192|0];switch(c-123|0){case 2:break j;case 0:break l;default:break m}}if(H[b+204>>2]){n:{o:{p:{switch(c-98|0){case 3:case 8:d=ld(b,21912);H[b+252>>2]=d;f=125;if(d){break o}break n;default:if(c-115>>>0>=2){break n}break;case 1:case 2:case 5:case 6:case 7:break n;case 0:case 4:break p}}d=ld(b,21900);H[b+248>>2]=d;f=123;if(!d){break n}}F[b+192|0]=f;H[b+200>>2]=(H[b+200>>2]+wa(d)|0)-1}c=I[b+192|0]}q:{c=c&255;switch(c-40|0){case 1:break i;case 0:break k;default:break q}}switch(c-91|0){case 2:break i;case 0:break k;default:break h}}F[b+192|0]=91;F[b+246|0]=1}c=Qa(H[b+144>>2]);H[c>>2]=H[c>>2]+1;break h}F[b+192|0]=93;F[b+246|0]=1}c=Qa(H[b+144>>2]);H[c>>2]=H[c>>2]-1;if(!I[b+244|0]){break h}if(H[Qa(H[b+144>>2])>>2]){break h}G[b+244>>1]=256}r:{s:{switch(I[b+192|0]-123|0){case 0:c=H[b+144>>2];H[e+32>>2]=0;ya(c,e+32|0);xc(H[b+140>>2],j);H[b+184>>2]=0;break r;case 2:break s;default:break r}}if(!mb(H[b+144>>2])){ob(H[b+144>>2])}F[b+237|0]=0;if(!mb(H[b+140>>2])){H[b+184>>2]=H[Qa(H[b+140>>2])>>2];ob(H[b+140>>2]);break r}H[j>>2]=0}t:{c=H[b+204>>2];if(!c){break t}u:{switch(I[b+192|0]-123|0){case 0:if(!((c|0)!=1|k)){Fc(b);v:{if(g){break v}w:{x:{c=I[b+195|0];switch(c-123|0){case 0:case 2:break v;case 1:break w;default:break x}}if((c|0)==59){break v}}k=0;de(b,0);g=0;break c}de(b,1);k=0;break c}if(!(!I[b+225|0]|(c|0)!=2)){Ld(b)}de(b,1);break c;case 2:break u;default:break t}}y:{if(I[b+225|0]){Ld(b);de(b,1);break y}if(!g){F[b+221|0]=0}de(b,1);if(!I[b+225|0]){break y}F[b+228|0]=1}if(!I[b+234|0]){break c}F[b+237|0]=1;break c}z:{A:{B:{switch(I[b+195|0]-123|0){case 2:if(o&1){break z}if((af(b)|0)==32){break z}if(I[b+225|0]){break A}break z;case 0:break B;default:break z}}if(!I[b+225|0]){break z}}F[b+221|0]=1;c=I[b+195|0];F[b+195|0]=32;p=(c|0)==125;q=(c|0)==123}c=ld(b,21852);H[e+44>>2]=c;if(c){f=H[b+184>>2];H[b+184>>2]=c;H[e+32>>2]=ak(Ed(21864),Xc(21864),e+44|0);H[e+16>>2]=Xc(21864);F[b+219|0]=zb(e+32|0,e+16|0);Jd(b,H[b+184>>2],1);ee(b,wa(H[b+184>>2])-1|0);d=I[b+219|0];if(!(d|!I[b+209|0])){Fc(b);d=I[b+219|0]}F[b+244|0]=1;if(d&255){G[b+244>>1]=256}c=H[j>>2];if(!((c|0)!=21924|(f|0)!=21936)){F[b+221|0]=0}if(!I[b+234|0]){break c}c=(c|0)==21936|k|g;if(f|q?c:1){F[b+236|0]=(c^-1)&1}if(!I[b+235|0]|!p){break c}F[b+236|0]=1;break c}d=I[b+192|0];if(!((d|0)!=59?I[b+194|0]!=125:0)){C:{if(!I[b+225|0]|(!I[b+227|0]|(d&255)!=59)){break C}F[b+230|0]=1;if(!I[b+247|0]){break C}F[b+247|0]=0;c=xa(e+32|0,3164);Kj(h,H[b+200>>2]+1|0,c);va(c);d=I[b+192|0]}if((d&255)!=59){H[j>>2]=0}F[b+220|0]=0}c=d&255;D:{if((c|0)!=63){if((c|0)!=58){break D}E:{switch(I[b+194|0]-123|0){case 0:case 2:F[b+221|0]=0;fe(b);if(I[b+225|0]){F[b+228|0]=1}F[b+213|0]=1;break c;default:break E}}if(I[b+220|0]|!I[b+227|0]|I[b+195|0]==41){break D}F[b+231|0]=1;break D}d=h;f=H[b+200>>2];i=Aa(d,f);F:{G:{if((f|0)<0){break G}H:{I:{while(1){i=F[i|0];if(Db(i)){break G}J:{K:{L:{M:{c=i&255;if(c>>>0<=94){l=c-48|0;if(l>>>0<=15){break M}break L}N:{switch(c-120|0){case 1:break J;case 0:case 2:break K;default:break N}}switch(c-95|0){case 3:break I;case 0:break K;default:break J}}if(!(1<0;f=f-1|0;i=Aa(d,f);if(l){continue}break H}break}if((i|0)!=66){break G}}c=0;if((f|0)<=0){break H}c=I[Aa(d,f-1|0)|0]==39}break F}c=0}if(c){break D}F[b+220|0]=1}O:{if(!I[b+209|0]){break O}d=ld(b,21888);H[e+44>>2]=d;if(!d){break O}f=0;P:{if((d|0)==22320|(d|0)==22332|((d|0)==22308|(d|0)==22296)|((d|0)==22572|(d|0)==22536|((d|0)==22416|(d|0)==22428))){break P}if((d|0)==22452){if(Jj(b)){break P}d=H[e+44>>2]}if((d|0)==22440){if(Jj(b)){break P}d=H[e+44>>2]}Q:{R:{if((d|0)==22608){if(I[b+220|0]){break R}break Q}f=1;if((d|0)==22632|(d|0)==22620){break P}}Fc(b)}f=1}Jd(b,H[e+44>>2],1);ee(b,wa(H[e+44>>2])-1|0);c=b;d=H[e+44>>2];if(!((d|0)!=22428?(d|0)!=22416:0)){d=Qa(H[b+144>>2]);H[d>>2]=H[d>>2]-1;d=H[e+44>>2]}F[c+192|0]=I[Aa(d,wa(d)-1|0)|0];S:{if(!f){break S}if(H[e+44>>2]==22452){c=F[b+195|0];f=vj(c);d=!f;T:{if(f){break T}c=c-41|0;if((c&255)>>>0>=53){break T}d=c&31;d=((c&63)>>>0>=32?1048575>>>d|0:((1<>>d)&1}if(d){break S}}Fc(b)}H[b+188>>2]=H[e+44>>2];break c}if(!I[b+211|0]){break d}U:{V:{W:{X:{c=I[b+192|0];switch(c-40|0){case 1:break V;case 0:break W;default:break X}}switch(c-91|0){case 2:break V;case 0:break W;default:break d}}c=af(b);fe(b);d=I[b+192|0];if((c|0)==41?(d|0)==40:0){break c}if((d|0)!=91){break U}if((c|0)==93){break c}break U}c=af(b);d=I[b+193|0];f=I[b+192|0];if(!(((f|0)==41?(d|0)==40:0)|((f|0)==93?(d|0)==91:0))){Fc(b)}fe(b);Y:{Z:{d=c&255;switch(d-44|0){case 1:break Y;case 0:case 2:break c;default:break Z}}if((d|0)==59){break c}}if(I[b+192|0]!=93){break U}if((c|0)==91){break c}}Fc(b);break c}F[b+221|0]=1;F[b+226|0]=1;break c}fe(b)}if(!I[b+224|0]){continue}break}}g=Ea(e+32|0);c=b+148|0;cf(e+16|0,c);h=wa(e+16|0);va(e+16|0);_:{if(!(!I[b+238|0]|(h|0)<1|H[b+240>>2]<1)){F[b+224|0]=1;c=xa(e,7628);qa[H[H[b>>2]+24>>2]](e+16|0,b,c);Ua(g,e+16|0);va(e+16|0);va(c);break _}F[b+224|0]=0;qa[H[H[b>>2]+24>>2]](e+16|0,b,c);Ua(g,e+16|0);va(e+16|0)}H[b+240>>2]=h;F[b+238|0]=0;Vd(a,g);va(g);break a}ek(a,b)}oa=e+48|0}function go(a,b,c,d,e,f){a=a|0;b=+b;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,w=0,x=0,y=0,z=0,B=0,C=0;j=oa-560|0;oa=j;H[j+44>>2]=0;A(+b);g=v(1)|0;v(0)|0;a:{if((g|0)<-1?1:(g|0)<=-1){u=1;w=1192;b=-b;A(+b);g=v(1)|0;v(0)|0;break a}if(e&2048){u=1;w=1195;break a}u=e&1;w=u?1198:1193;C=!u}b:{if((g&2146435072)==2146435072){n=u+3|0;Jb(a,32,c,n,e&-65537);sb(a,w,u);d=f&32;sb(a,b!=b?d?1807:2603:d?2029:2634,3);break b}s=j+16|0;c:{d:{e:{b=rj(b,j+44|0);b=b+b;if(b!=0){g=H[j+44>>2];H[j+44>>2]=g-1;x=f|32;if((x|0)!=97){break e}break c}x=f|32;if((x|0)==97){break c}l=H[j+44>>2];m=(d|0)<0?6:d;break d}l=g-29|0;H[j+44>>2]=l;b=b*268435456;m=(d|0)<0?6:d}q=(l|0)<0?j+48|0:j+336|0;h=q;while(1){d=h;if(b<4294967296&b>=0){g=~~b>>>0}else{g=0}H[d>>2]=g;h=h+4|0;b=(b-+(g>>>0))*1e9;if(b!=0){continue}break}f:{if((l|0)<1){d=l;g=h;i=q;break f}i=q;d=l;while(1){r=(d|0)<29?d:29;g=h-4|0;g:{if(i>>>0>g>>>0){break g}d=r;o=0;while(1){p=g;n=0;z=o;o=H[g>>2];k=d&31;if((d&63)>>>0>=32){B=o<>>32-k;k=o<>>0>o>>>0?n+1|0:n;k=o;o=Fq(k,n,1e9);z=p;p=Eq(o,pa,1e9,0);H[z>>2]=k-p;g=g-4|0;if(i>>>0<=g>>>0){continue}break}d=o;if(!d){break g}i=i-4|0;H[i>>2]=d}while(1){g=h;if(i>>>0>>0){h=g-4|0;if(!H[h>>2]){continue}}break}d=H[j+44>>2]-r|0;H[j+44>>2]=d;h=g;if((d|0)>0){continue}break}}h=(m+25|0)/9|0;if((d|0)<=-1){r=h+1|0;y=(x|0)==102;while(1){o=(d|0)<-9?9:0-d|0;h:{if(g>>>0>i>>>0){p=1e9>>>o|0;k=-1<>2];H[h>>2]=z+(d>>>o|0);d=N(p,d&k);h=h+4|0;if(h>>>0>>0){continue}break}i=H[i>>2]?i:i+4|0;if(!d){break h}H[g>>2]=d;g=g+4|0;break h}i=H[i>>2]?i:i+4|0}d=H[j+44>>2]+o|0;H[j+44>>2]=d;h=y?q:i;g=(r|0)>2?h+(r<<2)|0:g;if((d|0)<0){continue}break}}h=0;i:{if(g>>>0<=i>>>0){break i}h=N(q-i>>2,9);d=10;k=H[i>>2];if(k>>>0<10){break i}while(1){h=h+1|0;d=N(d,10);if(k>>>0>=d>>>0){continue}break}}d=(m-((x|0)==102?0:h)|0)-((x|0)==103&(m|0)!=0)|0;if((d|0)<(N(g-q>>2,9)-9|0)){p=d+9216|0;k=(p|0)/9|0;n=((k<<2)+((l|0)<0?j+48|4:j+340|0)|0)-4096|0;d=10;p=p-N(k,9)|0;if((p|0)<=7){while(1){d=N(d,10);p=p+1|0;if((p|0)!=8){continue}break}}p=H[n>>2];k=(p>>>0)/(d>>>0)|0;r=p-N(d,k)|0;l=n+4|0;j:{if(!((l|0)==(g|0)?r:1)){break j}b=(g|0)==(l|0)?1:1.5;l=d>>>1|0;t=l>>>0>r>>>0?.5:(l|0)==(r|0)?b:1.5;b=k&1?9007199254740994:9007199254740992;if(!(I[w|0]!=45|C)){t=-t;b=-b}l=p-r|0;H[n>>2]=l;if(b+t==b){break j}d=d+l|0;H[n>>2]=d;if(d>>>0>=1e9){while(1){H[n>>2]=0;n=n-4|0;if(n>>>0>>0){i=i-4|0;H[i>>2]=0}d=H[n>>2]+1|0;H[n>>2]=d;if(d>>>0>999999999){continue}break}}h=N(q-i>>2,9);d=10;l=H[i>>2];if(l>>>0<10){break j}while(1){h=h+1|0;d=N(d,10);if(l>>>0>=d>>>0){continue}break}}d=n+4|0;g=d>>>0>>0?d:g}while(1){k=g;l=g>>>0<=i>>>0;if(!l){g=k-4|0;if(!H[g>>2]){continue}}break}k:{if((x|0)!=103){o=e&8;break k}g=m?m:1;d=(g|0)>(h|0)&(h|0)>-5;m=(d?h^-1:-1)+g|0;f=(d?-1:-2)+f|0;o=e&8;if(o){break k}g=-9;l:{if(l){break l}l=H[k-4>>2];if(!l){break l}p=10;g=0;if((l>>>0)%10|0){break l}while(1){d=g;g=g+1|0;p=N(p,10);if(!((l>>>0)%(p>>>0)|0)){continue}break}g=d^-1}d=N(k-q>>2,9);if((f&-33)==70){o=0;d=(d+g|0)-9|0;d=(d|0)>0?d:0;m=(d|0)>(m|0)?m:d;break k}o=0;d=((d+h|0)+g|0)-9|0;d=(d|0)>0?d:0;m=(d|0)>(m|0)?m:d}r=(m|o)!=0;d=a;l=c;p=f&-33;if((p|0)==70){f=(h|0)>0?h:0}else{g=h>>31;g=Id(g+h^g,0,s);if((s-g|0)<=1){while(1){g=g-1|0;F[g|0]=48;if((s-g|0)<2){continue}break}}y=g-2|0;F[y|0]=f;F[g-1|0]=(h|0)<0?45:43;f=s-y|0}n=(f+(r+(m+u|0)|0)|0)+1|0;Jb(d,32,l,n,e);sb(a,w,u);Jb(a,48,c,n,e^65536);m:{n:{o:{if((p|0)==70){d=j+16|8;h=j+16|9;f=i>>>0>q>>>0?q:i;i=f;while(1){g=Id(H[i>>2],0,h);p:{if((f|0)!=(i|0)){if(j+16>>>0>=g>>>0){break p}while(1){g=g-1|0;F[g|0]=48;if(j+16>>>0>>0){continue}break}break p}if((g|0)!=(h|0)){break p}F[j+24|0]=48;g=d}sb(a,g,h-g|0);i=i+4|0;if(q>>>0>=i>>>0){continue}break}g=0;if(!r){break n}sb(a,2981,1);if((m|0)<1|i>>>0>=k>>>0){break o}while(1){g=Id(H[i>>2],0,h);if(g>>>0>j+16>>>0){while(1){g=g-1|0;F[g|0]=48;if(j+16>>>0>>0){continue}break}}sb(a,g,(m|0)<9?m:9);g=m-9|0;i=i+4|0;if(k>>>0<=i>>>0){break n}d=(m|0)>9;m=g;if(d){continue}break}break n}q:{if((m|0)<0){break q}f=i>>>0>>0?k:i+4|0;l=j+16|9;d=j+16|8;h=i;while(1){g=Id(H[h>>2],0,l);if((l|0)==(g|0)){F[j+24|0]=48;g=d}r:{if((h|0)!=(i|0)){if(j+16>>>0>=g>>>0){break r}while(1){g=g-1|0;F[g|0]=48;if(j+16>>>0>>0){continue}break}break r}sb(a,g,1);g=g+1|0;if(o?0:(m|0)<=0){break r}sb(a,2981,1)}k=g;g=l-g|0;sb(a,k,(g|0)<(m|0)?g:m);m=m-g|0;h=h+4|0;if(f>>>0<=h>>>0){break q}if((m|0)>-1){continue}break}}Jb(a,48,m+18|0,18,0);sb(a,y,s-y|0);break m}g=m}Jb(a,48,g+9|0,9,0)}break b}m=f&32;q=m?w+9|0:w;s:{if(d>>>0>11){break s}g=12-d|0;if(!g){break s}t=8;while(1){t=t*16;g=g-1|0;if(g){continue}break}if(I[q|0]==45){b=-(t+(-b-t));break s}b=b+t-t}g=H[j+44>>2];h=g>>31;g=Id(h^g+h,0,s);if((s|0)==(g|0)){F[j+15|0]=48;g=j+15|0}l=u|2;h=H[j+44>>2];k=g-2|0;F[k|0]=f+15;F[g-1|0]=(h|0)<0?45:43;g=e&8;i=j+16|0;while(1){f=i;o=m;if(P(b)<2147483648){h=~~b}else{h=-2147483648}F[i|0]=o|I[h+8400|0];b=(b-+(h|0))*16;i=f+1|0;if(!(!(g?1:(d|0)>0|b!=0)|(i-(j+16|0)|0)!=1)){F[f+1|0]=46;i=f+2|0}if(b!=0){continue}break}f=!d|((i-j|0)-18|0)>=(d|0)?(s-(k+(j+16|0)|0)|0)+i|0:((d+s|0)-k|0)+2|0;n=f+l|0;Jb(a,32,c,n,e);sb(a,q,l);Jb(a,48,c,n,e^65536);d=i-(j+16|0)|0;sb(a,j+16|0,d);g=d;d=s-k|0;Jb(a,48,f-(g+d|0)|0,0,0);sb(a,k,d)}Jb(a,32,c,n,e^8192);oa=j+560|0;return((c|0)>(n|0)?c:n)|0}function hg(a,b,c,d,e){var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;f=oa-80|0;oa=f;H[f+76>>2]=b;t=f+55|0;r=f+56|0;b=0;a:{b:while(1){c:{if((n|0)<0){break c}if((2147483647-n|0)<(b|0)){H[6070]=61;n=-1;break c}n=b+n|0}d:{e:{f:{j=H[f+76>>2];b=j;h=I[b|0];if(h){while(1){g:{h=h&255;h:{if(!h){h=b;break h}if((h|0)!=37){break g}h=b;while(1){if(I[b+1|0]!=37){break h}g=b+2|0;H[f+76>>2]=g;h=h+1|0;k=I[b+2|0];b=g;if((k|0)==37){continue}break}}b=h-j|0;if(a){sb(a,j,b)}if(b){continue b}o=-1;h=1;g=f;p=!Rb(F[H[f+76>>2]+1|0]);b=H[f+76>>2];if(!(p|I[b+2|0]!=36)){o=F[b+1|0]-48|0;s=1;h=3}b=h+b|0;H[g+76>>2]=b;q=0;i=F[b|0];g=i-32|0;i:{if(g>>>0>31){h=b;break i}h=b;g=1<>2]=h;q=g|q;i=F[b+1|0];g=i-32|0;if(g>>>0>=32){break i}b=h;g=1<>2];if(I[b+2|0]!=36){break l}H[((F[b+1|0]<<2)+e|0)-192>>2]=10;l=H[((F[b+1|0]<<3)+d|0)-384>>2];s=1;b=b+3|0;break k}if(s){break f}s=0;l=0;if(a){b=H[c>>2];H[c>>2]=b+4;l=H[b>>2]}b=H[f+76>>2]+1|0}H[g+76>>2]=b;if((l|0)>-1){break j}l=0-l|0;q=q|8192;break j}l=qj(f+76|0);if((l|0)<0){break f}b=H[f+76>>2]}k=-1;m:{if(I[b|0]!=46){break m}if(I[b+1|0]==42){n:{if(!Rb(F[b+2|0])){break n}b=H[f+76>>2];if(I[b+3|0]!=36){break n}H[((F[b+2|0]<<2)+e|0)-192>>2]=10;k=H[((F[b+2|0]<<3)+d|0)-384>>2];b=b+4|0;H[f+76>>2]=b;break m}if(s){break f}if(a){b=H[c>>2];H[c>>2]=b+4;k=H[b>>2]}else{k=0}b=H[f+76>>2]+2|0;H[f+76>>2]=b;break m}H[f+76>>2]=b+1;k=qj(f+76|0);b=H[f+76>>2]}h=0;while(1){p=h;m=-1;if(F[b|0]-65>>>0>57){break a}i=b+1|0;H[f+76>>2]=i;h=F[b|0];b=i;h=I[(h+N(p,58)|0)+7871|0];if(h-1>>>0<8){continue}break}o:{p:{if((h|0)!=19){if(!h){break a}if((o|0)>=0){H[(o<<2)+e>>2]=h;b=(o<<3)+d|0;h=H[b+4>>2];H[f+64>>2]=H[b>>2];H[f+68>>2]=h;break p}if(!a){break d}pj(f- -64|0,h,c);i=H[f+76>>2];break o}if((o|0)>-1){break a}}b=0;if(!a){continue b}}g=q&-65537;h=q&8192?g:q;m=0;o=1182;q=r;q:{r:{s:{t:{u:{v:{w:{x:{y:{z:{A:{B:{C:{D:{E:{F:{b=F[i-1|0];b=p?(b&15)==3?b&-33:b:b;switch(b-88|0){case 11:break q;case 9:case 13:case 14:case 15:break r;case 27:break w;case 12:case 17:break z;case 23:break A;case 0:case 32:break B;case 24:break C;case 22:break D;case 29:break E;case 1:case 2:case 3:case 4:case 5:case 6:case 7:case 8:case 10:case 16:case 18:case 19:case 20:case 21:case 25:case 26:case 28:case 30:case 31:break e;default:break F}}G:{switch(b-65|0){case 0:case 4:case 5:case 6:break r;case 2:break u;case 1:case 3:break e;default:break G}}if((b|0)==83){break v}break e}i=H[f+64>>2];g=H[f+68>>2];o=1182;break y}b=0;H:{switch(p&255){case 0:H[H[f+64>>2]>>2]=n;continue b;case 1:H[H[f+64>>2]>>2]=n;continue b;case 2:h=H[f+64>>2];H[h>>2]=n;H[h+4>>2]=n>>31;continue b;case 3:G[H[f+64>>2]>>1]=n;continue b;case 4:F[H[f+64>>2]]=n;continue b;case 6:H[H[f+64>>2]>>2]=n;continue b;case 7:break H;default:continue b}}h=H[f+64>>2];H[h>>2]=n;H[h+4>>2]=n>>31;continue b}k=k>>>0>8?k:8;h=h|8;b=120}j=r;u=b&32;p=H[f+68>>2];g=p;i=H[f+64>>2];if(g|i){while(1){j=j-1|0;F[j|0]=u|I[(i&15)+8400|0];v=!g&i>>>0>15|(g|0)!=0;p=g;g=g>>>4|0;i=(p&15)<<28|i>>>4;if(v){continue}break}}if(!(h&8)|!(H[f+64>>2]|H[f+68>>2])){break x}o=(b>>>4|0)+1182|0;m=2;break x}b=r;j=H[f+68>>2];g=j;i=H[f+64>>2];if(g|i){while(1){b=b-1|0;F[b|0]=i&7|48;p=!g&i>>>0>7|(g|0)!=0;j=g;g=g>>>3|0;i=(j&7)<<29|i>>>3;if(p){continue}break}}j=b;if(!(h&8)){break x}b=r-j|0;k=(b|0)<(k|0)?k:b+1|0;break x}b=H[f+68>>2];g=b;i=H[f+64>>2];if((b|0)<-1?1:(b|0)<=-1){g=0-(g+((i|0)!=0)|0)|0;i=0-i|0;H[f+64>>2]=i;H[f+68>>2]=g;m=1;o=1182;break y}if(h&2048){m=1;o=1183;break y}m=h&1;o=m?1184:1182}j=Id(i,g,r)}h=(k|0)>-1?h&-65537:h;b=H[f+68>>2];g=b;i=H[f+64>>2];if(!((i|0)!=0|(b|0)!=0|k)){k=0;j=r;break e}b=!(g|i)+(r-j|0)|0;k=(b|0)<(k|0)?k:b;break e}b=H[f+64>>2];j=b?b:3003;b=tj(j,k);q=b?b:k+j|0;h=g;k=b?b-j|0:k;break e}g=H[f+64>>2];if(k){break t}b=0;Jb(a,32,l,0,h);break s}H[f+12>>2]=0;H[f+8>>2]=H[f+64>>2];H[f+64>>2]=f+8;k=-1;g=f+8|0}b=0;I:{while(1){j=H[g>>2];if(!j){break I}j=sj(f+4|0,j);i=(j|0)<0;if(!(i|j>>>0>k-b>>>0)){g=g+4|0;b=b+j|0;if(k>>>0>b>>>0){continue}break I}break}m=-1;if(i){break a}}Jb(a,32,l,b,h);if(!b){b=0;break s}g=0;i=H[f+64>>2];while(1){j=H[i>>2];if(!j){break s}j=sj(f+4|0,j);g=j+g|0;if((g|0)>(b|0)){break s}sb(a,f+4|0,j);i=i+4|0;if(b>>>0>g>>>0){continue}break}}Jb(a,32,l,b,h^8192);b=(b|0)<(l|0)?l:b;continue b}b=qa[144](a,M[f+64>>3],l,k,h,b)|0;continue b}F[f+55|0]=H[f+64>>2];k=1;j=t;h=g;break e}g=b+1|0;H[f+76>>2]=g;h=I[b+1|0];b=g;continue}}m=n;if(a){break a}if(!s){break d}b=1;while(1){a=H[(b<<2)+e>>2];if(a){pj((b<<3)+d|0,a,c);m=1;b=b+1|0;if((b|0)!=10){continue}break a}break}m=1;if(b>>>0>=10){break a}while(1){if(H[(b<<2)+e>>2]){break f}b=b+1|0;if((b|0)!=10){continue}break}break a}m=-1;break a}i=q-j|0;k=(i|0)>(k|0)?i:k;g=k+m|0;b=(g|0)>(l|0)?g:l;Jb(a,32,b,g,h);sb(a,o,m);Jb(a,48,b,g,h^65536);Jb(a,48,k,i,0);sb(a,j,i);Jb(a,32,b,g,h^8192);continue}break}m=0}oa=f+80|0;return m}function Ta(a,b,c,d,e,f,g,h,i){var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0;l=oa-96|0;oa=l;p=c;u=(g&131071)<<15|f>>>17;j=i&65535;s=j;k=h;B=k<<15|g>>>17;n=(e^i)&-2147483648;o=e&65535;w=o;m=d;x=o;o=0;C=(j&131071)<<15|k>>>17;D=i>>>16&32767;L=e>>>16&32767;a:{b:{if(L-1>>>0<=32765){j=0;if(D-1>>>0<32766){break b}}q=e&2147483647;v=q;j=d;if(!(!j&(q|0)==2147418112?!(b|c):q>>>0<2147418112)){y=d;n=e|32768;break a}e=i&2147483647;q=e;d=h;if(!(!d&(e|0)==2147418112?!(f|g):e>>>0<2147418112)){y=h;n=i|32768;b=f;c=g;break a}if(!(b|j|(v^2147418112|c))){if(!(d|f|(g|q))){n=2147450880;b=0;c=0;break a}n=n|2147418112;b=0;c=0;break a}if(!(d|f|(q^2147418112|g))){d=b|j;e=c|v;b=0;c=0;if(!(d|e)){n=2147450880;break a}n=n|2147418112;break a}if(!(b|j|(c|v))){b=0;c=0;break a}if(!(d|f|(g|q))){b=0;c=0;break a}if((v|0)==65535|v>>>0<65535){h=b;i=c;d=!(m|w);e=d<<6;j=Q(d?b:m)+32|0;b=Q(d?c:w);b=e+((b|0)==32?j:b)|0;xb(l+80|0,h,i,m,w,b-15|0);m=H[l+88>>2];p=H[l+84>>2];x=H[l+92>>2];t=16-b|0;b=H[l+80>>2]}j=t;if(q>>>0>65535){break b}c=!(k|s);d=c<<6;e=Q(c?f:k)+32|0;c=Q(c?g:s);c=d+((c|0)==32?e:c)|0;i=c;xb(l- -64|0,f,g,k,s,c-15|0);e=H[l+76>>2];c=e;h=H[l+72>>2];d=h;d=d<<15;e=H[l+68>>2];B=e>>>17|d;d=0;f=H[l+64>>2];u=d|((e&131071)<<15|f>>>17);C=(c&131071)<<15|h>>>17;j=(t-i|0)+16|0}t=j;d=u;c=b;s=0;q=Eq(d,0,b,s);b=pa;E=b;e=f;z=e<<15&-32768;k=p;g=Eq(z,0,k,0);f=g+q|0;e=pa+b|0;e=f>>>0>>0?e+1|0:e;h=f;j=f;i=0;g=Eq(c,s,z,A);f=i+g|0;b=j;j=j+pa|0;j=f>>>0>>0?j+1|0:j;u=f;g=j;I=(b|0)==(j|0)&f>>>0>>0|b>>>0>j>>>0;M=Eq(d,r,k,F);J=pa;p=m;f=Eq(z,A,m,0);b=f+M|0;j=pa+J|0;N=b;m=Eq(B,0,c,s);i=b+m|0;b=b>>>0>>0?j+1|0:j;f=b+pa|0;v=i;f=i>>>0>>0?f+1|0:f;w=f;j=f;f=(e|0)==(E|0)&h>>>0>>0|e>>>0>>0;h=e+v|0;j=f+j|0;q=h;j=h>>>0>>0?j+1|0:j;m=j;e=h;h=j;P=Eq(d,r,p,O);E=pa;f=z;G=x|65536;z=o;i=Eq(f,A,G,o);f=i+P|0;j=pa+E|0;j=f>>>0>>0?j+1|0:j;R=f;A=Eq(B,S,k,F);i=f+A|0;o=j;f=j+pa|0;f=i>>>0>>0?f+1|0:f;K=i;C=C&2147483647|-2147483648;i=Eq(c,s,C,0);c=K+i|0;s=f;j=f+pa|0;A=c;c=c>>>0>>0?j+1|0:j;x=I;i=0;f=i+e|0;j=h+A|0;I=f;h=f;e=x+f|0;x=f>>>0>>0?j+1|0:j;f=x;f=e>>>0>>0?f+1|0:f;h=e;i=f;t=(t+(D+L|0)|0)-16383|0;f=Eq(p,O,B,S);e=pa;r=Eq(d,r,G,z);d=r+f|0;j=pa+e|0;j=d>>>0>>0?j+1|0:j;r=d;f=(e|0)==(j|0)&f>>>0>d>>>0|e>>>0>j>>>0;e=j;D=f;f=Eq(C,T,k,F);d=f+d|0;j=pa+j|0;j=d>>>0>>0?j+1|0:j;f=d;d=j;k=(j|0)==(e|0)&f>>>0>>0|e>>>0>j>>>0;j=D+k|0;e=0;e=j>>>0>>0?1:e;r=f;k=d;D=j;f=(b|0)==(w|0)&v>>>0>>0|b>>>0>w>>>0;b=f+((b|0)==(J|0)&M>>>0>N>>>0|b>>>0>>0)|0;j=0;j=b>>>0>>0?1:j;f=b;b=r+f|0;j=d+j|0;j=b>>>0>>0?j+1|0:j;F=b;d=j;j=(j|0)==(k|0)&b>>>0>>0|j>>>0>>0;b=D+j|0;f=e;f=b>>>0>>0?f+1|0:f;e=Eq(C,T,G,z);b=e+b|0;j=pa+f|0;r=b;e=b>>>0>>0?j+1|0:j;k=Eq(C,T,p,O);f=pa;p=Eq(B,S,G,z);b=p+k|0;j=pa+f|0;j=b>>>0